From 8fc4bdcf97fcd0388d7e4a3af5cae849792af6cd Mon Sep 17 00:00:00 2001 From: jan grant <3430517+jan-g@users.noreply.github.com> Date: Wed, 6 Dec 2017 18:45:27 +0000 Subject: [PATCH] Fnlb/k8s grouper (#563) * WIP: add k8s grouper - This shares a great deal of behaviour with allGrouper. Once it's tested, refactor that to share as much as possible - Glide hell. Checked in the yaml and lock files but a glide i -v will be required to bring vendor/ up-to-date. Will address once this is ready. * Update README. Make the watch tracking work. (To follow: add the junk that was pulled in via the glide update.) * Vendor updates. * go fmt * Use the allGrouper with a k8s-backed DBStore instead. This is much tidier :-) * Fix up go vet --- fnlb/README.md | 62 + fnlb/lb/allgrouper.go | 3 + fnlb/lb/allgrouper_test.go | 3 + fnlb/lb/db.go | 9 + fnlb/lb/k8s_store.go | 181 + fnlb/lb/proxy.go | 5 + fnlb/main.go | 15 +- glide.lock | 203 +- glide.yaml | 21 +- .../github.com/PuerkitoBio/purell/.travis.yml | 8 +- .../github.com/PuerkitoBio/purell/README.md | 4 +- .../github.com/PuerkitoBio/purell/purell.go | 36 +- .../PuerkitoBio/purell/urlnorm_test.go | 1 - .../github.com/PuerkitoBio/urlesc/.travis.yml | 6 +- .../github.com/PuerkitoBio/urlesc/README.md | 2 +- vendor/github.com/cenkalti/backoff/.gitignore | 22 - .../github.com/cenkalti/backoff/.travis.yml | 10 - vendor/github.com/cenkalti/backoff/LICENSE | 20 - vendor/github.com/cenkalti/backoff/README.md | 30 - vendor/github.com/cenkalti/backoff/backoff.go | 66 - .../cenkalti/backoff/backoff_test.go | 27 - vendor/github.com/cenkalti/backoff/context.go | 60 - .../cenkalti/backoff/context_test.go | 26 - .../cenkalti/backoff/example_test.go | 73 - .../cenkalti/backoff/exponential.go | 156 - .../cenkalti/backoff/exponential_test.go | 108 - vendor/github.com/cenkalti/backoff/retry.go | 78 - .../github.com/cenkalti/backoff/retry_test.go | 99 - vendor/github.com/cenkalti/backoff/ticker.go | 81 - .../cenkalti/backoff/ticker_test.go | 94 - vendor/github.com/cenkalti/backoff/tries.go | 35 - .../github.com/cenkalti/backoff/tries_test.go | 55 - vendor/github.com/davecgh/go-spew/.travis.yml | 24 +- vendor/github.com/davecgh/go-spew/LICENSE | 6 +- vendor/github.com/davecgh/go-spew/README.md | 31 +- .../github.com/davecgh/go-spew/spew/bypass.go | 15 +- .../davecgh/go-spew/spew/bypasssafe.go | 9 +- .../github.com/davecgh/go-spew/spew/common.go | 4 +- .../davecgh/go-spew/spew/common_test.go | 2 +- .../github.com/davecgh/go-spew/spew/config.go | 13 +- vendor/github.com/davecgh/go-spew/spew/doc.go | 11 +- .../github.com/davecgh/go-spew/spew/dump.go | 18 +- .../davecgh/go-spew/spew/dump_test.go | 4 +- .../davecgh/go-spew/spew/dumpcgo_test.go | 5 +- .../davecgh/go-spew/spew/example_test.go | 2 +- .../github.com/davecgh/go-spew/spew/format.go | 6 +- .../davecgh/go-spew/spew/format_test.go | 8 +- .../davecgh/go-spew/spew/internal_test.go | 7 +- .../go-spew/spew/internalunsafe_test.go | 9 +- .../github.com/davecgh/go-spew/spew/spew.go | 2 +- .../davecgh/go-spew/spew/spew_test.go | 13 +- vendor/github.com/dghubble/sling/.travis.yml | 10 - vendor/github.com/dghubble/sling/CHANGES.md | 58 - vendor/github.com/dghubble/sling/LICENSE | 21 - vendor/github.com/dghubble/sling/README.md | 294 - vendor/github.com/dghubble/sling/body.go | 68 - vendor/github.com/dghubble/sling/doc.go | 179 - .../dghubble/sling/examples/README.md | 19 - .../dghubble/sling/examples/github.go | 161 - vendor/github.com/dghubble/sling/sling.go | 390 - .../github.com/dghubble/sling/sling_test.go | 843 - vendor/github.com/dghubble/sling/test | 23 - .../emicklei/go-restful-swagger12/.travis.yml | 4 + .../emicklei/go-restful-swagger12/CHANGES.md | 46 + .../emicklei/go-restful-swagger12/LICENSE | 22 + .../emicklei/go-restful-swagger12/README.md | 83 + .../api_declaration_list.go | 64 + .../emicklei/go-restful-swagger12/config.go | 46 + .../go-restful-swagger12/model_builder.go | 467 + .../model_builder_test.go | 1283 + .../go-restful-swagger12/model_list.go | 86 + .../go-restful-swagger12/model_list_test.go | 48 + .../model_property_ext.go | 81 + .../model_property_ext_test.go | 70 + .../model_property_list.go | 87 + .../model_property_list_test.go | 47 + .../go-restful-swagger12/ordered_route_map.go | 36 + .../ordered_route_map_test.go | 29 + .../postbuild_model_test.go | 42 + .../emicklei/go-restful-swagger12/swagger.go | 185 + .../go-restful-swagger12/swagger_builder.go | 21 + .../go-restful-swagger12/swagger_test.go | 318 + .../swagger_webservice.go | 443 + .../test_package/struct.go | 5 + .../go-restful-swagger12/utils_test.go | 86 + .../github.com/emicklei/go-restful/.gitignore | 70 + .../emicklei/go-restful/.travis.yml | 6 + .../github.com/emicklei/go-restful/CHANGES.md | 223 + vendor/github.com/emicklei/go-restful/LICENSE | 22 + .../github.com/emicklei/go-restful/Makefile | 7 + .../github.com/emicklei/go-restful/README.md | 74 + vendor/github.com/emicklei/go-restful/Srcfile | 1 + .../emicklei/go-restful/bench_curly_test.go | 51 + .../emicklei/go-restful/bench_test.go | 43 + .../emicklei/go-restful/bench_test.sh | 10 + .../emicklei/go-restful/compress.go | 123 + .../emicklei/go-restful/compress_test.go | 125 + .../emicklei/go-restful/compressor_cache.go | 103 + .../emicklei/go-restful/compressor_pools.go | 91 + .../emicklei/go-restful/compressors.go | 54 + .../emicklei/go-restful/constants.go | 30 + .../emicklei/go-restful/container.go | 366 + .../emicklei/go-restful/container_test.go | 83 + .../emicklei/go-restful/cors_filter.go | 202 + .../emicklei/go-restful/cors_filter_test.go | 129 + .../emicklei/go-restful/coverage.sh | 2 + .../github.com/emicklei/go-restful/curly.go | 164 + .../emicklei/go-restful/curly_route.go | 52 + .../emicklei/go-restful/curly_test.go | 231 + vendor/github.com/emicklei/go-restful/doc.go | 185 + .../emicklei/go-restful/doc_examples_test.go | 41 + .../emicklei/go-restful/entity_accessors.go | 163 + .../go-restful/entity_accessors_test.go | 69 + .../emicklei/go-restful/examples/.goconvey | 1 + .../examples/google_app_engine/.goconvey | 1 + .../examples/google_app_engine/app.yaml | 20 + .../google_app_engine/datastore/.goconvey | 1 + .../google_app_engine/datastore/app.yaml | 18 + .../google_app_engine/datastore/main.go | 267 + .../restful-appstats-integration.go | 12 + .../google_app_engine/restful-user-service.go | 162 + .../emicklei/go-restful/examples/home.html | 7 + .../examples/msgpack/msgpack_entity.go | 34 + .../examples/msgpack/msgpack_entity_test.go | 160 + .../examples/restful-CORS-filter.go | 68 + .../examples/restful-NCSA-logging.go | 54 + .../examples/restful-basic-authentication.go | 35 + .../examples/restful-cpuprofiler-service.go | 65 + .../examples/restful-curly-router.go | 107 + .../examples/restful-curly-router_test.go | 149 + .../examples/restful-encoding-filter.go | 61 + .../go-restful/examples/restful-filters.go | 114 + .../examples/restful-form-handling.go | 62 + .../examples/restful-hello-world.go | 22 + .../examples/restful-html-template.go | 35 + .../examples/restful-multi-containers.go | 43 + .../examples/restful-no-cache-filter.go | 24 + .../examples/restful-options-filter.go | 51 + .../go-restful/examples/restful-path-tail.go | 26 + .../examples/restful-pre-post-filters.go | 98 + .../examples/restful-resource-functions.go | 63 + .../go-restful/examples/restful-route_test.go | 39 + .../examples/restful-routefunction_test.go | 29 + .../examples/restful-serve-static.go | 47 + .../go-restful/examples/restful-swagger.go | 61 + .../examples/restful-user-resource.go | 152 + .../examples/restful-user-service.go | 143 + .../github.com/emicklei/go-restful/filter.go | 35 + .../emicklei/go-restful/filter_test.go | 141 + .../github.com/emicklei/go-restful/jsr311.go | 248 + .../emicklei/go-restful/jsr311_test.go | 212 + .../github.com/emicklei/go-restful/log/log.go | 34 + .../github.com/emicklei/go-restful/logger.go | 32 + vendor/github.com/emicklei/go-restful/mime.go | 45 + .../emicklei/go-restful/mime_test.go | 17 + .../emicklei/go-restful/options_filter.go | 26 + .../go-restful/options_filter_test.go | 34 + .../emicklei/go-restful/parameter.go | 114 + .../emicklei/go-restful/path_expression.go | 69 + .../go-restful/path_expression_test.go | 37 + .../github.com/emicklei/go-restful/request.go | 113 + .../emicklei/go-restful/request_test.go | 141 + .../emicklei/go-restful/response.go | 236 + .../emicklei/go-restful/response_test.go | 213 + .../github.com/emicklei/go-restful/route.go | 186 + .../emicklei/go-restful/route_builder.go | 293 + .../emicklei/go-restful/route_builder_test.go | 76 + .../emicklei/go-restful/route_test.go | 127 + .../github.com/emicklei/go-restful/router.go | 18 + .../emicklei/go-restful/service_error.go | 23 + .../emicklei/go-restful/tracer_test.go | 18 + .../emicklei/go-restful/web_service.go | 290 + .../go-restful/web_service_container.go | 39 + .../emicklei/go-restful/web_service_test.go | 343 + .../fsnotify/fsnotify/.editorconfig | 5 - .../fsnotify/.github/ISSUE_TEMPLATE.md | 11 - .../fsnotify/.github/PULL_REQUEST_TEMPLATE.md | 8 - .../github.com/fsnotify/fsnotify/.gitignore | 6 - .../github.com/fsnotify/fsnotify/.travis.yml | 30 - vendor/github.com/fsnotify/fsnotify/AUTHORS | 46 - .../github.com/fsnotify/fsnotify/CHANGELOG.md | 307 - .../fsnotify/fsnotify/CONTRIBUTING.md | 77 - vendor/github.com/fsnotify/fsnotify/README.md | 79 - .../fsnotify/fsnotify/example_test.go | 42 - vendor/github.com/fsnotify/fsnotify/fen.go | 37 - .../github.com/fsnotify/fsnotify/fsnotify.go | 66 - .../fsnotify/fsnotify/fsnotify_test.go | 40 - .../github.com/fsnotify/fsnotify/inotify.go | 337 - .../fsnotify/fsnotify/inotify_poller.go | 187 - .../fsnotify/fsnotify/inotify_poller_test.go | 229 - .../fsnotify/fsnotify/inotify_test.go | 449 - .../fsnotify/integration_darwin_test.go | 147 - .../fsnotify/fsnotify/integration_test.go | 1237 - vendor/github.com/fsnotify/fsnotify/kqueue.go | 503 - .../fsnotify/fsnotify/open_mode_bsd.go | 11 - .../fsnotify/fsnotify/open_mode_darwin.go | 12 - .../github.com/fsnotify/fsnotify/windows.go | 561 - vendor/github.com/ghodss/yaml/.gitignore | 20 + vendor/github.com/ghodss/yaml/.travis.yml | 7 + vendor/github.com/ghodss/yaml/LICENSE | 50 + vendor/github.com/ghodss/yaml/README.md | 116 + vendor/github.com/ghodss/yaml/fields.go | 497 + vendor/github.com/ghodss/yaml/yaml.go | 277 + vendor/github.com/ghodss/yaml/yaml_test.go | 271 + .../go-openapi/jsonreference/.drone.sec | 1 + .../go-openapi/jsonreference/.drone.yml | 33 + .../go-openapi/jsonreference/.pullapprove.yml | 13 + .../go-openapi/jsonreference/.travis.yml | 14 - .../go-openapi/jsonreference/README.md | 4 +- vendor/github.com/gogo/protobuf/.travis.yml | 4 +- vendor/github.com/gogo/protobuf/Readme.md | 4 +- .../protobuf/google/protobuf/any.proto | 1 - .../google/protobuf/compiler/plugin.proto | 13 + .../protobuf/google/protobuf/descriptor.proto | 49 +- .../protobuf/google/protobuf/duration.proto | 8 +- .../protobuf/google/protobuf/empty.proto | 1 - .../protobuf/google/protobuf/field_mask.proto | 10 +- .../protobuf/google/protobuf/struct.proto | 2 +- .../protobuf/google/protobuf/timestamp.proto | 9 +- .../protobuf/google/protobuf/wrappers.proto | 1 - .../descriptor/descriptor.pb.go | 384 +- .../descriptor/descriptor_gostring.gen.go | 10 +- .../protoc-gen-gogo/plugin/plugin.pb.go | 110 +- .../test/casttype/combos/both/casttype.pb.go | 511 +- .../casttype/combos/marshaler/casttype.pb.go | 511 +- .../casttype/combos/neither/casttype.pb.go | 511 +- .../combos/unmarshaler/casttype.pb.go | 511 +- .../casttype/combos/unsafeboth/casttype.pb.go | 511 +- .../combos/unsafemarshaler/casttype.pb.go | 511 +- .../combos/unsafeunmarshaler/casttype.pb.go | 511 +- .../protobuf/test/castvalue/castvalue.pb.go | 469 +- .../castvalue/combos/both/castvalue.pb.go | 471 +- .../combos/marshaler/castvalue.pb.go | 469 +- .../combos/unmarshaler/castvalue.pb.go | 469 +- .../combos/unsafeboth/castvalue.pb.go | 471 +- .../combos/unsafemarshaler/castvalue.pb.go | 469 +- .../combos/unsafeunmarshaler/castvalue.pb.go | 469 +- .../protobuf/test/combos/both/thetest.pb.go | 809 +- .../test/combos/marshaler/thetest.pb.go | 809 +- .../test/combos/unmarshaler/thetest.pb.go | 809 +- .../test/combos/unsafeboth/thetest.pb.go | 809 +- .../test/combos/unsafemarshaler/thetest.pb.go | 809 +- .../combos/unsafeunmarshaler/thetest.pb.go | 809 +- .../gogo/protobuf/test/example/example.pb.go | 477 +- .../protobuf/test/filedotname/file.dot.pb.go | 453 +- .../gogo/protobuf/test/group/group.pb.go | 455 +- .../mapsproto2/combos/both/mapsproto2.pb.go | 566 +- .../combos/marshaler/mapsproto2.pb.go | 565 +- .../combos/neither/mapsproto2.pb.go | 567 +- .../combos/unmarshaler/mapsproto2.pb.go | 567 +- .../combos/unsafeboth/mapsproto2.pb.go | 565 +- .../combos/unsafemarshaler/mapsproto2.pb.go | 567 +- .../combos/unsafeunmarshaler/mapsproto2.pb.go | 567 +- .../protobuf/test/oneof/combos/both/one.pb.go | 501 +- .../test/oneof/combos/marshaler/one.pb.go | 501 +- .../test/oneof/combos/neither/one.pb.go | 501 +- .../test/oneof/combos/unmarshaler/one.pb.go | 501 +- .../test/oneof/combos/unsafeboth/one.pb.go | 501 +- .../oneof/combos/unsafemarshaler/one.pb.go | 501 +- .../oneof/combos/unsafeunmarshaler/one.pb.go | 501 +- .../test/oneof3/combos/both/one.pb.go | 479 +- .../test/oneof3/combos/marshaler/one.pb.go | 479 +- .../test/oneof3/combos/neither/one.pb.go | 479 +- .../test/oneof3/combos/unmarshaler/one.pb.go | 479 +- .../test/oneof3/combos/unsafeboth/one.pb.go | 479 +- .../oneof3/combos/unsafemarshaler/one.pb.go | 479 +- .../oneof3/combos/unsafeunmarshaler/one.pb.go | 479 +- .../theproto3/combos/both/theproto3.pb.go | 973 +- .../combos/marshaler/theproto3.pb.go | 975 +- .../theproto3/combos/neither/theproto3.pb.go | 977 +- .../combos/unmarshaler/theproto3.pb.go | 975 +- .../combos/unsafeboth/theproto3.pb.go | 975 +- .../combos/unsafemarshaler/theproto3.pb.go | 976 +- .../combos/unsafeunmarshaler/theproto3.pb.go | 975 +- .../gogo/protobuf/test/thetest.pb.go | 808 +- .../test/unrecognized/unrecognized.pb.go | 479 +- .../unrecognizedgroup/unrecognizedgroup.pb.go | 465 +- .../github.com/gogo/protobuf/types/any.pb.go | 18 +- .../gogo/protobuf/types/duration.pb.go | 10 +- .../gogo/protobuf/types/empty.pb.go | 12 +- .../gogo/protobuf/types/field_mask.pb.go | 18 +- .../gogo/protobuf/types/struct.pb.go | 54 +- .../gogo/protobuf/types/timestamp.pb.go | 20 +- .../gogo/protobuf/types/wrappers.pb.go | 12 +- vendor/github.com/golang/glog/LICENSE | 191 + vendor/github.com/golang/glog/README | 44 + vendor/github.com/golang/glog/glog.go | 1177 + vendor/github.com/golang/glog/glog_file.go | 124 + vendor/github.com/golang/glog/glog_test.go | 415 + vendor/github.com/golang/protobuf/README.md | 3 +- .../conformance_proto/conformance.pb.go | 767 +- .../golang/protobuf/descriptor/descriptor.go | 93 - .../protobuf/descriptor/descriptor_test.go | 32 - .../golang/protobuf/jsonpb/jsonpb.go | 260 +- .../golang/protobuf/jsonpb/jsonpb_test.go | 202 +- .../jsonpb_test_proto/more_test_objects.pb.go | 130 +- .../jsonpb_test_proto/more_test_objects.proto | 12 - .../jsonpb_test_proto/test_objects.pb.go | 239 +- .../jsonpb_test_proto/test_objects.proto | 12 - .../golang/protobuf/proto/decode_test.go | 2 - .../golang/protobuf/proto/encode.go | 11 +- .../golang/protobuf/proto/encode_test.go | 2 - .../golang/protobuf/proto/extensions.go | 1 - .../golang/protobuf/proto/extensions_test.go | 28 - .../github.com/golang/protobuf/proto/lib.go | 1 + .../golang/protobuf/proto/map_test.go | 46 - .../protobuf/proto/proto3_proto/proto3.pb.go | 222 +- .../protobuf/proto/proto3_proto/proto3.proto | 9 - .../golang/protobuf/proto/proto3_test.go | 10 - .../golang/protobuf/proto/testdata/test.pb.go | 860 +- .../protoc-gen-go/descriptor/Makefile | 7 +- .../protoc-gen-go/descriptor/descriptor.pb.go | 402 +- .../protoc-gen-go/generator/generator.go | 15 +- .../protobuf/protoc-gen-go/plugin/Makefile | 7 +- .../protoc-gen-go/plugin/plugin.pb.go | 120 +- .../protobuf/protoc-gen-go/testdata/Makefile | 6 +- .../protoc-gen-go/testdata/my_test/test.pb.go | 10 +- .../testdata/my_test/test.pb.go.golden | 7 +- .../golang/protobuf/ptypes/any/any.pb.go | 31 +- .../golang/protobuf/ptypes/any/any.proto | 1 + .../protobuf/ptypes/duration/duration.pb.go | 44 +- .../protobuf/ptypes/duration/duration.proto | 23 +- .../golang/protobuf/ptypes/empty/empty.pb.go | 17 +- .../golang/protobuf/ptypes/empty/empty.proto | 1 + .../protobuf/ptypes/struct/struct.pb.go | 54 +- .../protobuf/ptypes/struct/struct.proto | 2 +- .../protobuf/ptypes/timestamp/timestamp.pb.go | 65 +- .../protobuf/ptypes/timestamp/timestamp.proto | 34 +- .../protobuf/ptypes/wrappers/wrappers.pb.go | 82 +- .../protobuf/ptypes/wrappers/wrappers.proto | 1 + .../google/go-querystring/.gitignore | 1 - .../google/go-querystring/README.md | 39 - .../google/go-querystring/query/encode.go | 320 - .../go-querystring/query/encode_test.go | 328 - vendor/github.com/google/gofuzz/.travis.yml | 13 + .../CONTRIBUTING.md | 0 vendor/github.com/google/gofuzz/LICENSE | 202 + vendor/github.com/google/gofuzz/README.md | 71 + vendor/github.com/google/gofuzz/doc.go | 18 + .../github.com/google/gofuzz/example_test.go | 225 + vendor/github.com/google/gofuzz/fuzz.go | 453 + vendor/github.com/google/gofuzz/fuzz_test.go | 428 + .../hashicorp/golang-lru/lru_test.go | 2 +- .../hashicorp/golang-lru/simplelru/lru.go | 2 +- .../golang-lru/simplelru/lru_test.go | 2 +- .../hashicorp/hcl/.github/ISSUE_TEMPLATE.md | 21 - vendor/github.com/hashicorp/hcl/.gitignore | 9 - vendor/github.com/hashicorp/hcl/.travis.yml | 12 - vendor/github.com/hashicorp/hcl/LICENSE | 354 - vendor/github.com/hashicorp/hcl/Makefile | 18 - vendor/github.com/hashicorp/hcl/README.md | 125 - vendor/github.com/hashicorp/hcl/appveyor.yml | 19 - vendor/github.com/hashicorp/hcl/decoder.go | 724 - .../github.com/hashicorp/hcl/decoder_test.go | 1203 - vendor/github.com/hashicorp/hcl/hcl.go | 11 - .../github.com/hashicorp/hcl/hcl/ast/ast.go | 219 - .../hashicorp/hcl/hcl/ast/ast_test.go | 200 - .../github.com/hashicorp/hcl/hcl/ast/walk.go | 52 - .../hashicorp/hcl/hcl/fmtcmd/fmtcmd.go | 162 - .../hashicorp/hcl/hcl/fmtcmd/fmtcmd_test.go | 440 - .../hcl/fmtcmd/test-fixtures/.hidden.ignore | 1 - .../hcl/hcl/fmtcmd/test-fixtures/dir.ignore | 0 .../hcl/hcl/fmtcmd/test-fixtures/file.ignore | 1 - .../hcl/hcl/fmtcmd/test-fixtures/good.hcl | 0 .../hashicorp/hcl/hcl/parser/error.go | 17 - .../hashicorp/hcl/hcl/parser/error_test.go | 9 - .../hashicorp/hcl/hcl/parser/parser.go | 526 - .../hashicorp/hcl/hcl/parser/parser_test.go | 575 - .../parser/test-fixtures/array_comment.hcl | 4 - .../parser/test-fixtures/array_comment_2.hcl | 6 - .../hcl/parser/test-fixtures/assign_colon.hcl | 6 - .../hcl/parser/test-fixtures/assign_deep.hcl | 5 - .../hcl/hcl/parser/test-fixtures/comment.hcl | 15 - .../hcl/parser/test-fixtures/comment_crlf.hcl | 15 - .../parser/test-fixtures/comment_lastline.hcl | 1 - .../parser/test-fixtures/comment_single.hcl | 1 - .../hcl/hcl/parser/test-fixtures/complex.hcl | 42 - .../hcl/parser/test-fixtures/complex_crlf.hcl | 42 - .../hcl/parser/test-fixtures/complex_key.hcl | 1 - .../hcl/hcl/parser/test-fixtures/empty.hcl | 0 .../hcl/parser/test-fixtures/git_crypt.hcl | Bin 10 -> 0 bytes .../test-fixtures/key_without_value.hcl | 1 - .../hcl/hcl/parser/test-fixtures/list.hcl | 1 - .../hcl/parser/test-fixtures/list_comma.hcl | 1 - .../parser/test-fixtures/missing_braces.hcl | 4 - .../hcl/hcl/parser/test-fixtures/multiple.hcl | 2 - .../object_key_assign_without_value.hcl | 3 - .../object_key_assign_without_value2.hcl | 4 - .../object_key_assign_without_value3.hcl | 4 - .../object_key_without_value.hcl | 3 - .../test-fixtures/object_list_comma.hcl | 1 - .../hcl/hcl/parser/test-fixtures/old.hcl | 3 - .../hcl/parser/test-fixtures/structure.hcl | 5 - .../parser/test-fixtures/structure_basic.hcl | 5 - .../parser/test-fixtures/structure_empty.hcl | 1 - .../hcl/hcl/parser/test-fixtures/types.hcl | 7 - .../test-fixtures/unterminated_object.hcl | 2 - .../test-fixtures/unterminated_object_2.hcl | 6 - .../hashicorp/hcl/hcl/printer/nodes.go | 779 - .../hashicorp/hcl/hcl/printer/printer.go | 66 - .../hashicorp/hcl/hcl/printer/printer_test.go | 149 - .../hcl/hcl/printer/testdata/comment.golden | 36 - .../hcl/hcl/printer/testdata/comment.input | 37 - .../printer/testdata/comment_aligned.golden | 32 - .../printer/testdata/comment_aligned.input | 28 - .../hcl/printer/testdata/comment_array.golden | 13 - .../hcl/printer/testdata/comment_array.input | 13 - .../hcl/printer/testdata/comment_crlf.input | 37 - .../printer/testdata/comment_end_file.golden | 6 - .../printer/testdata/comment_end_file.input | 5 - .../testdata/comment_multiline_indent.golden | 12 - .../testdata/comment_multiline_indent.input | 13 - .../comment_multiline_no_stanza.golden | 7 - .../comment_multiline_no_stanza.input | 6 - .../testdata/comment_multiline_stanza.golden | 10 - .../testdata/comment_multiline_stanza.input | 10 - .../printer/testdata/comment_newline.golden | 3 - .../printer/testdata/comment_newline.input | 2 - .../testdata/comment_object_multi.golden | 9 - .../testdata/comment_object_multi.input | 9 - .../testdata/comment_standalone.golden | 17 - .../printer/testdata/comment_standalone.input | 16 - .../hcl/printer/testdata/complexhcl.golden | 54 - .../hcl/hcl/printer/testdata/complexhcl.input | 53 - .../hcl/printer/testdata/empty_block.golden | 12 - .../hcl/printer/testdata/empty_block.input | 14 - .../hcl/hcl/printer/testdata/list.golden | 43 - .../hcl/hcl/printer/testdata/list.input | 37 - .../hcl/printer/testdata/list_comment.golden | 7 - .../hcl/printer/testdata/list_comment.input | 6 - .../printer/testdata/list_of_objects.golden | 10 - .../printer/testdata/list_of_objects.input | 10 - .../printer/testdata/multiline_string.golden | 7 - .../printer/testdata/multiline_string.input | 7 - .../printer/testdata/object_singleline.golden | 26 - .../printer/testdata/object_singleline.input | 19 - .../testdata/object_with_heredoc.golden | 6 - .../testdata/object_with_heredoc.input | 6 - .../hashicorp/hcl/hcl/scanner/scanner.go | 651 - .../hashicorp/hcl/hcl/scanner/scanner_test.go | 591 - .../hashicorp/hcl/hcl/strconv/quote.go | 241 - .../hashicorp/hcl/hcl/strconv/quote_test.go | 96 - .../hcl/hcl/test-fixtures/array_comment.hcl | 4 - .../hcl/hcl/test-fixtures/assign_colon.hcl | 6 - .../hcl/hcl/test-fixtures/comment.hcl | 15 - .../hcl/hcl/test-fixtures/comment_single.hcl | 1 - .../hcl/hcl/test-fixtures/complex.hcl | 42 - .../hcl/hcl/test-fixtures/complex_key.hcl | 1 - .../hashicorp/hcl/hcl/test-fixtures/empty.hcl | 0 .../hashicorp/hcl/hcl/test-fixtures/list.hcl | 1 - .../hcl/hcl/test-fixtures/list_comma.hcl | 1 - .../hcl/hcl/test-fixtures/multiple.hcl | 2 - .../hashicorp/hcl/hcl/test-fixtures/old.hcl | 3 - .../hcl/hcl/test-fixtures/structure.hcl | 5 - .../hcl/hcl/test-fixtures/structure_basic.hcl | 5 - .../hcl/hcl/test-fixtures/structure_empty.hcl | 1 - .../hashicorp/hcl/hcl/test-fixtures/types.hcl | 7 - .../hashicorp/hcl/hcl/token/position.go | 46 - .../hashicorp/hcl/hcl/token/token.go | 219 - .../hashicorp/hcl/hcl/token/token_test.go | 69 - vendor/github.com/hashicorp/hcl/hcl_test.go | 19 - .../hashicorp/hcl/json/parser/flatten.go | 117 - .../hashicorp/hcl/json/parser/parser.go | 313 - .../hashicorp/hcl/json/parser/parser_test.go | 384 - .../hcl/json/parser/test-fixtures/array.json | 4 - .../parser/test-fixtures/bad_input_128.json | 1 - .../test-fixtures/bad_input_tf_8110.json | 7 - .../hcl/json/parser/test-fixtures/basic.json | 3 - .../test-fixtures/good_input_tf_8110.json | 7 - .../hcl/json/parser/test-fixtures/object.json | 5 - .../hcl/json/parser/test-fixtures/types.json | 10 - .../hashicorp/hcl/json/scanner/scanner.go | 451 - .../hcl/json/scanner/scanner_test.go | 362 - .../hcl/json/test-fixtures/array.json | 4 - .../hcl/json/test-fixtures/basic.json | 3 - .../hcl/json/test-fixtures/object.json | 5 - .../hcl/json/test-fixtures/types.json | 10 - .../hashicorp/hcl/json/token/position.go | 46 - .../hashicorp/hcl/json/token/token.go | 118 - .../hashicorp/hcl/json/token/token_test.go | 34 - vendor/github.com/hashicorp/hcl/lex.go | 38 - vendor/github.com/hashicorp/hcl/lex_test.go | 37 - vendor/github.com/hashicorp/hcl/parse.go | 39 - .../hcl/test-fixtures/assign_deep.hcl | 5 - .../hashicorp/hcl/test-fixtures/basic.hcl | 2 - .../hashicorp/hcl/test-fixtures/basic.json | 4 - .../hcl/test-fixtures/basic_int_string.hcl | 1 - .../hcl/test-fixtures/basic_squish.hcl | 3 - .../hcl/test-fixtures/block_assign.hcl | 2 - .../hcl/test-fixtures/decode_policy.hcl | 15 - .../hcl/test-fixtures/decode_policy.json | 19 - .../hcl/test-fixtures/decode_tf_variable.hcl | 10 - .../hcl/test-fixtures/decode_tf_variable.json | 14 - .../hashicorp/hcl/test-fixtures/empty.hcl | 1 - .../hashicorp/hcl/test-fixtures/escape.hcl | 6 - .../hcl/test-fixtures/escape_backslash.hcl | 5 - .../hashicorp/hcl/test-fixtures/flat.hcl | 2 - .../hashicorp/hcl/test-fixtures/float.hcl | 2 - .../hashicorp/hcl/test-fixtures/float.json | 4 - .../hashicorp/hcl/test-fixtures/git_crypt.hcl | Bin 10 -> 0 bytes .../hcl/test-fixtures/interpolate.json | 3 - .../hcl/test-fixtures/list_of_lists.hcl | 2 - .../hcl/test-fixtures/list_of_maps.hcl | 4 - .../hashicorp/hcl/test-fixtures/multiline.hcl | 4 - .../hcl/test-fixtures/multiline.json | 3 - .../hcl/test-fixtures/multiline_bad.hcl | 4 - .../hcl/test-fixtures/multiline_indented.hcl | 4 - .../hcl/test-fixtures/multiline_literal.hcl | 2 - .../multiline_literal_with_hil.hcl | 2 - .../hcl/test-fixtures/multiline_no_eof.hcl | 5 - .../multiline_no_hanging_indent.hcl | 5 - .../hcl/test-fixtures/multiline_no_marker.hcl | 1 - .../test-fixtures/nested_block_comment.hcl | 5 - .../hcl/test-fixtures/nested_provider_bad.hcl | 5 - .../hcl/test-fixtures/null_strings.json | 7 - .../hcl/test-fixtures/object_list.json | 15 - .../hcl/test-fixtures/object_with_bool.hcl | 6 - .../hcl/test-fixtures/scientific.hcl | 6 - .../hcl/test-fixtures/scientific.json | 8 - .../hcl/test-fixtures/slice_expand.hcl | 7 - .../hashicorp/hcl/test-fixtures/structure.hcl | 5 - .../hcl/test-fixtures/structure.json | 8 - .../hcl/test-fixtures/structure2.hcl | 9 - .../hcl/test-fixtures/structure2.json | 10 - .../hcl/test-fixtures/structure_flat.json | 8 - .../hcl/test-fixtures/structure_flatmap.hcl | 7 - .../hcl/test-fixtures/structure_list.hcl | 6 - .../hcl/test-fixtures/structure_list.json | 7 - .../test-fixtures/structure_list_deep.json | 16 - .../test-fixtures/structure_list_empty.json | 3 - .../hcl/test-fixtures/structure_multi.hcl | 7 - .../hcl/test-fixtures/structure_multi.json | 11 - .../hcl/test-fixtures/terraform_heroku.hcl | 5 - .../hcl/test-fixtures/terraform_heroku.json | 6 - .../terraform_variable_invalid.json | 5 - .../hashicorp/hcl/test-fixtures/tfvars.hcl | 3 - .../unterminated_block_comment.hcl | 2 - .../hcl/test-fixtures/unterminated_brace.hcl | 2 - .../hashicorp/hcl/testhelper/unix2dos.go | 15 - vendor/github.com/juju/ratelimit/LICENSE | 191 + vendor/github.com/juju/ratelimit/README.md | 117 + vendor/github.com/juju/ratelimit/ratelimit.go | 284 + .../juju/ratelimit/ratelimit_test.go | 389 + vendor/github.com/juju/ratelimit/reader.go | 51 + .../magiconair/properties/.gitignore | 6 - .../magiconair/properties/.travis.yml | 9 - .../magiconair/properties/CHANGELOG.md | 101 - .../github.com/magiconair/properties/LICENSE | 25 - .../magiconair/properties/README.md | 100 - .../magiconair/properties/assert/assert.go | 90 - .../properties/assert/assert_test.go | 55 - .../magiconair/properties/benchmark_test.go | 24 - .../magiconair/properties/decode.go | 289 - .../magiconair/properties/decode_test.go | 299 - .../github.com/magiconair/properties/doc.go | 156 - .../magiconair/properties/example_test.go | 93 - .../magiconair/properties/integrate.go | 34 - .../magiconair/properties/integrate_test.go | 76 - .../github.com/magiconair/properties/lex.go | 408 - .../github.com/magiconair/properties/load.go | 241 - .../magiconair/properties/load_test.go | 231 - .../magiconair/properties/parser.go | 95 - .../magiconair/properties/properties.go | 811 - .../magiconair/properties/properties_test.go | 947 - .../magiconair/properties/rangecheck.go | 31 - vendor/github.com/mailru/easyjson/.travis.yml | 9 +- vendor/github.com/mailru/easyjson/Makefile | 4 +- vendor/github.com/mailru/easyjson/README.md | 2 +- .../mailru/easyjson/benchmark/data.go | 4 +- .../mailru/easyjson/benchmark/default_test.go | 2 +- .../easyjson/benchmark/jsoniter_test.go | 119 + .../mailru/easyjson/easyjson/main.go | 7 +- .../github.com/mailru/easyjson/gen/decoder.go | 54 +- .../github.com/mailru/easyjson/gen/encoder.go | 112 +- .../mailru/easyjson/gen/generator.go | 8 +- .../mailru/easyjson/jlexer/lexer.go | 27 + .../mailru/easyjson/jlexer/lexer_test.go | 60 + .../mailru/easyjson/jwriter/writer.go | 57 +- .../mailru/easyjson/opt/gotemplate_Bool.go | 4 +- .../mailru/easyjson/opt/gotemplate_Float32.go | 4 +- .../mailru/easyjson/opt/gotemplate_Float64.go | 4 +- .../mailru/easyjson/opt/gotemplate_Int.go | 4 +- .../mailru/easyjson/opt/gotemplate_Int16.go | 4 +- .../mailru/easyjson/opt/gotemplate_Int32.go | 4 +- .../mailru/easyjson/opt/gotemplate_Int64.go | 4 +- .../mailru/easyjson/opt/gotemplate_Int8.go | 4 +- .../mailru/easyjson/opt/gotemplate_String.go | 4 +- .../mailru/easyjson/opt/gotemplate_Uint.go | 4 +- .../mailru/easyjson/opt/gotemplate_Uint16.go | 4 +- .../mailru/easyjson/opt/gotemplate_Uint32.go | 4 +- .../mailru/easyjson/opt/gotemplate_Uint64.go | 4 +- .../mailru/easyjson/opt/gotemplate_Uint8.go | 4 +- .../mailru/easyjson/opt/optional/opt.go | 4 +- .../mailru/easyjson/parser/parser.go | 6 + .../mailru/easyjson/parser/parser_unix.go | 9 + .../mailru/easyjson/parser/parser_windows.go | 16 +- .../mailru/easyjson/tests/basic_test.go | 9 + .../github.com/mailru/easyjson/tests/data.go | 77 +- .../mailru/easyjson/tests/errors.go | 3 + .../mailru/easyjson/tests/errors_test.go | 42 + .../mailru/easyjson/tests/opt_test.go | 70 + .../github.com/pelletier/go-toml/.gitignore | 1 - .../github.com/pelletier/go-toml/.travis.yml | 23 - vendor/github.com/pelletier/go-toml/LICENSE | 21 - vendor/github.com/pelletier/go-toml/README.md | 118 - .../pelletier/go-toml/benchmark.json | 164 - .../github.com/pelletier/go-toml/benchmark.sh | 32 - .../pelletier/go-toml/benchmark.toml | 244 - .../pelletier/go-toml/benchmark.yml | 121 - .../pelletier/go-toml/benchmark_test.go | 192 - .../pelletier/go-toml/cmd/test_program.go | 91 - .../pelletier/go-toml/cmd/tomljson/main.go | 72 - .../go-toml/cmd/tomljson/main_test.go | 82 - .../pelletier/go-toml/cmd/tomll/main.go | 66 - vendor/github.com/pelletier/go-toml/doc.go | 23 - .../github.com/pelletier/go-toml/doc_test.go | 100 - .../pelletier/go-toml/example-crlf.toml | 29 - .../github.com/pelletier/go-toml/example.toml | 29 - .../pelletier/go-toml/keysparsing.go | 94 - .../pelletier/go-toml/keysparsing_test.go | 56 - vendor/github.com/pelletier/go-toml/lexer.go | 651 - .../pelletier/go-toml/lexer_test.go | 750 - .../github.com/pelletier/go-toml/marshal.go | 489 - .../pelletier/go-toml/marshal_test.go | 600 - .../pelletier/go-toml/marshal_test.toml | 38 - vendor/github.com/pelletier/go-toml/parser.go | 383 - .../pelletier/go-toml/parser_test.go | 785 - .../github.com/pelletier/go-toml/position.go | 29 - .../pelletier/go-toml/position_test.go | 29 - .../github.com/pelletier/go-toml/query/doc.go | 175 - .../pelletier/go-toml/query/lexer.go | 357 - .../pelletier/go-toml/query/lexer_test.go | 179 - .../pelletier/go-toml/query/match.go | 232 - .../pelletier/go-toml/query/match_test.go | 202 - .../pelletier/go-toml/query/parser.go | 275 - .../pelletier/go-toml/query/parser_test.go | 482 - .../pelletier/go-toml/query/query.go | 158 - .../pelletier/go-toml/query/query_test.go | 157 - .../pelletier/go-toml/query/tokens.go | 106 - vendor/github.com/pelletier/go-toml/test.sh | 90 - vendor/github.com/pelletier/go-toml/token.go | 140 - .../pelletier/go-toml/token_test.go | 67 - vendor/github.com/pelletier/go-toml/toml.go | 292 - .../github.com/pelletier/go-toml/toml_test.go | 106 - .../pelletier/go-toml/tomltree_create.go | 142 - .../pelletier/go-toml/tomltree_create_test.go | 126 - .../pelletier/go-toml/tomltree_write.go | 233 - .../pelletier/go-toml/tomltree_write_test.go | 358 - vendor/github.com/spf13/pflag/.gitignore | 2 + vendor/github.com/spf13/pflag/.travis.yml | 20 + .../fsnotify => spf13/pflag}/LICENSE | 2 +- vendor/github.com/spf13/pflag/README.md | 277 + vendor/github.com/spf13/pflag/bool.go | 94 + vendor/github.com/spf13/pflag/bool_slice.go | 147 + .../github.com/spf13/pflag/bool_slice_test.go | 215 + vendor/github.com/spf13/pflag/bool_test.go | 179 + vendor/github.com/spf13/pflag/count.go | 94 + vendor/github.com/spf13/pflag/count_test.go | 52 + vendor/github.com/spf13/pflag/duration.go | 86 + vendor/github.com/spf13/pflag/example_test.go | 77 + vendor/github.com/spf13/pflag/export_test.go | 29 + vendor/github.com/spf13/pflag/flag.go | 1063 + vendor/github.com/spf13/pflag/flag_test.go | 1006 + vendor/github.com/spf13/pflag/float32.go | 88 + vendor/github.com/spf13/pflag/float64.go | 84 + vendor/github.com/spf13/pflag/golangflag.go | 101 + .../github.com/spf13/pflag/golangflag_test.go | 39 + vendor/github.com/spf13/pflag/int.go | 84 + vendor/github.com/spf13/pflag/int32.go | 88 + vendor/github.com/spf13/pflag/int64.go | 84 + vendor/github.com/spf13/pflag/int8.go | 88 + vendor/github.com/spf13/pflag/int_slice.go | 128 + .../github.com/spf13/pflag/int_slice_test.go | 165 + vendor/github.com/spf13/pflag/ip.go | 94 + vendor/github.com/spf13/pflag/ip_slice.go | 148 + .../github.com/spf13/pflag/ip_slice_test.go | 222 + vendor/github.com/spf13/pflag/ip_test.go | 63 + vendor/github.com/spf13/pflag/ipmask.go | 122 + vendor/github.com/spf13/pflag/ipnet.go | 98 + vendor/github.com/spf13/pflag/ipnet_test.go | 70 + vendor/github.com/spf13/pflag/string.go | 80 + vendor/github.com/spf13/pflag/string_array.go | 103 + .../spf13/pflag/string_array_test.go | 233 + vendor/github.com/spf13/pflag/string_slice.go | 129 + .../spf13/pflag/string_slice_test.go | 253 + vendor/github.com/spf13/pflag/uint.go | 88 + vendor/github.com/spf13/pflag/uint16.go | 88 + vendor/github.com/spf13/pflag/uint32.go | 88 + vendor/github.com/spf13/pflag/uint64.go | 88 + vendor/github.com/spf13/pflag/uint8.go | 88 + vendor/github.com/spf13/pflag/uint_slice.go | 126 + .../github.com/spf13/pflag/uint_slice_test.go | 161 + vendor/github.com/spf13/pflag/verify/all.sh | 69 + vendor/github.com/spf13/pflag/verify/gofmt.sh | 19 + .../github.com/spf13/pflag/verify/golint.sh | 15 + vendor/github.com/ugorji/go/codec/0doc.go | 34 +- vendor/github.com/ugorji/go/codec/README.md | 40 +- vendor/github.com/ugorji/go/codec/binc.go | 38 +- vendor/github.com/ugorji/go/codec/cbor.go | 27 +- .../github.com/ugorji/go/codec/codec_test.go | 349 +- .../ugorji/go/codec/codecgen/gen.go | 35 +- vendor/github.com/ugorji/go/codec/decode.go | 852 +- ...rsion_arrayof_gte_go15.go => decode_go.go} | 6 +- ...sion_arrayof_lt_go15.go => decode_go14.go} | 4 +- vendor/github.com/ugorji/go/codec/encode.go | 45 +- .../ugorji/go/codec/fast-path.generated.go | 15607 ++-- .../ugorji/go/codec/fast-path.go.tmpl | 204 +- .../ugorji/go/codec/gen-dec-array.go.tmpl | 102 +- .../ugorji/go/codec/gen-dec-map.go.tmpl | 27 +- .../ugorji/go/codec/gen-helper.generated.go | 22 +- .../ugorji/go/codec/gen-helper.go.tmpl | 21 +- .../ugorji/go/codec/gen.generated.go | 129 +- vendor/github.com/ugorji/go/codec/gen.go | 135 +- ...{goversion_vendor_eq_go15.go => gen_15.go} | 4 +- ...{goversion_vendor_eq_go16.go => gen_16.go} | 6 +- ...goversion_vendor_gte_go17.go => gen_17.go} | 4 +- .../go/codec/goversion_makemap_gte_go19.go | 15 - .../go/codec/goversion_makemap_lt_go19.go | 12 - .../go/codec/goversion_unsupported_lt_go14.go | 17 - .../go/codec/goversion_vendor_lt_go15.go | 8 - vendor/github.com/ugorji/go/codec/helper.go | 200 +- .../ugorji/go/codec/helper_internal.go | 21 + .../ugorji/go/codec/helper_not_unsafe.go | 125 +- .../github.com/ugorji/go/codec/helper_test.go | 157 + .../ugorji/go/codec/helper_unsafe.go | 427 +- vendor/github.com/ugorji/go/codec/json.go | 714 +- .../ugorji/go/codec/mammoth-test.go.tmpl | 33 - .../ugorji/go/codec/mammoth_generated_test.go | 593 - vendor/github.com/ugorji/go/codec/msgpack.go | 32 +- vendor/github.com/ugorji/go/codec/noop.go | 5 +- vendor/github.com/ugorji/go/codec/prebuild.go | 3 + vendor/github.com/ugorji/go/codec/prebuild.sh | 199 + .../github.com/ugorji/go/codec/shared_test.go | 238 - vendor/github.com/ugorji/go/codec/simple.go | 27 +- vendor/github.com/ugorji/go/codec/test.py | 8 +- vendor/github.com/ugorji/go/codec/tests.sh | 102 + vendor/github.com/ugorji/go/codec/time.go | 15 +- .../github.com/ugorji/go/codec/values_test.go | 13 +- vendor/github.com/ugorji/go/codec/xml.go | 426 - .../github.com/ugorji/go/codec/z_all_test.go | 135 - vendor/golang.org/x/crypto/acme/acme_test.go | 2 +- vendor/golang.org/x/crypto/bcrypt/bcrypt.go | 4 +- vendor/golang.org/x/crypto/bn256/bn256.go | 16 +- vendor/golang.org/x/crypto/nacl/auth/auth.go | 2 +- vendor/golang.org/x/crypto/ocsp/ocsp.go | 2 +- vendor/golang.org/x/crypto/ocsp/ocsp_test.go | 2 +- vendor/golang.org/x/crypto/openpgp/keys.go | 3 +- .../x/crypto/pkcs12/internal/rc2/rc2.go | 3 - .../x/crypto/pkcs12/internal/rc2/rc2_test.go | 1 - vendor/golang.org/x/crypto/sha3/sha3_test.go | 2 +- .../golang.org/x/crypto/ssh/agent/client.go | 12 +- .../golang.org/x/crypto/ssh/agent/server.go | 2 +- vendor/golang.org/x/crypto/ssh/certs.go | 2 +- vendor/golang.org/x/crypto/ssh/channel.go | 142 +- vendor/golang.org/x/crypto/ssh/cipher.go | 8 +- vendor/golang.org/x/crypto/ssh/client_test.go | 13 +- vendor/golang.org/x/crypto/ssh/common.go | 4 +- vendor/golang.org/x/crypto/ssh/kex.go | 24 +- vendor/golang.org/x/crypto/ssh/keys.go | 44 +- .../x/crypto/ssh/knownhosts/knownhosts.go | 4 +- vendor/golang.org/x/crypto/ssh/messages.go | 22 +- vendor/golang.org/x/crypto/ssh/mux.go | 6 +- vendor/golang.org/x/crypto/ssh/server.go | 4 +- vendor/golang.org/x/crypto/ssh/session.go | 2 +- .../x/crypto/ssh/terminal/terminal.go | 2 +- .../x/crypto/ssh/terminal/util_windows.go | 11 +- .../x/crypto/ssh/test/banner_test.go | 1 - vendor/golang.org/x/crypto/ssh/test/doc.go | 2 +- .../x/crypto/ssh/test/test_unix_test.go | 6 +- vendor/golang.org/x/crypto/ssh/transport.go | 14 +- vendor/golang.org/x/crypto/tea/cipher.go | 1 - vendor/golang.org/x/crypto/xtea/cipher.go | 2 +- vendor/golang.org/x/net/README | 3 - vendor/golang.org/x/net/README.md | 16 + vendor/golang.org/x/net/context/context.go | 2 + .../x/net/dns/dnsmessage/message.go | 10 +- .../x/net/dns/dnsmessage/message_test.go | 25 + vendor/golang.org/x/net/html/atom/gen.go | 135 +- vendor/golang.org/x/net/html/atom/table.go | 1468 +- .../golang.org/x/net/html/atom/table_test.go | 42 +- vendor/golang.org/x/net/html/const.go | 4 +- vendor/golang.org/x/net/html/doc.go | 8 +- .../x/net/http/httpproxy/export_test.go | 7 + .../x/net/http/httpproxy/go19_test.go | 13 + .../golang.org/x/net/http/httpproxy/proxy.go | 239 + .../x/net/http/httpproxy/proxy_test.go | 301 + vendor/golang.org/x/net/http2/go19_test.go | 1 - vendor/golang.org/x/net/http2/server.go | 85 +- vendor/golang.org/x/net/http2/server_test.go | 12 +- vendor/golang.org/x/net/http2/transport.go | 131 +- .../golang.org/x/net/http2/transport_test.go | 161 + vendor/golang.org/x/net/http2/write.go | 7 +- vendor/golang.org/x/net/idna/idna.go | 126 +- vendor/golang.org/x/net/idna/idna_test.go | 65 + vendor/golang.org/x/net/idna/tables.go | 4396 +- vendor/golang.org/x/net/idna/trieval.go | 17 +- .../x/net/internal/nettest/stack.go | 5 + .../x/net/internal/socket/iovec_32bit.go | 6 +- .../x/net/internal/socket/iovec_64bit.go | 6 +- .../internal/socket/iovec_solaris_64bit.go | 6 +- .../x/net/internal/socket/msghdr_bsdvar.go | 6 +- .../net/internal/socket/msghdr_linux_32bit.go | 6 +- .../net/internal/socket/msghdr_linux_64bit.go | 6 +- .../x/net/internal/socket/msghdr_openbsd.go | 6 +- .../internal/socket/msghdr_solaris_64bit.go | 6 +- .../net/internal/socket/socket_go1_9_test.go | 129 +- .../x/net/internal/socket/sys_posix.go | 6 +- vendor/golang.org/x/net/proxy/per_host.go | 2 +- vendor/golang.org/x/net/proxy/socks5.go | 5 +- vendor/golang.org/x/net/publicsuffix/gen.go | 2 +- vendor/golang.org/x/net/publicsuffix/table.go | 18390 ++-- .../x/net/publicsuffix/table_test.go | 308 +- .../golang.org/x/net/route/route_classic.go | 10 +- vendor/golang.org/x/net/webdav/lock_test.go | 2 +- vendor/golang.org/x/sys/README | 3 - vendor/golang.org/x/sys/README.md | 18 + vendor/golang.org/x/sys/plan9/asm.s | 2 +- vendor/golang.org/x/sys/plan9/env_plan9.go | 2 +- vendor/golang.org/x/sys/plan9/env_unset.go | 2 +- vendor/golang.org/x/sys/plan9/errors_plan9.go | 2 +- vendor/golang.org/x/sys/plan9/race.go | 2 +- vendor/golang.org/x/sys/plan9/race0.go | 2 +- vendor/golang.org/x/sys/plan9/syscall.go | 6 +- vendor/golang.org/x/sys/unix/creds_test.go | 203 +- vendor/golang.org/x/sys/unix/dev_darwin.go | 24 + .../golang.org/x/sys/unix/dev_darwin_test.go | 51 + vendor/golang.org/x/sys/unix/dev_dragonfly.go | 30 + .../x/sys/unix/dev_dragonfly_test.go | 50 + vendor/golang.org/x/sys/unix/dev_freebsd.go | 30 + vendor/golang.org/x/sys/unix/dev_linux.go | 8 +- .../golang.org/x/sys/unix/dev_linux_test.go | 2 + vendor/golang.org/x/sys/unix/dev_netbsd.go | 29 + .../golang.org/x/sys/unix/dev_netbsd_test.go | 50 + vendor/golang.org/x/sys/unix/dev_openbsd.go | 29 + .../golang.org/x/sys/unix/dev_openbsd_test.go | 54 + .../golang.org/x/sys/unix/dev_solaris_test.go | 51 + vendor/golang.org/x/sys/unix/env_unix.go | 2 +- vendor/golang.org/x/sys/unix/env_unset.go | 2 +- vendor/golang.org/x/sys/unix/export_test.go | 2 +- vendor/golang.org/x/sys/unix/file_unix.go | 27 - vendor/golang.org/x/sys/unix/gccgo.go | 4 +- vendor/golang.org/x/sys/unix/gccgo_c.c | 2 +- .../x/sys/unix/gccgo_linux_amd64.go | 2 +- .../x/sys/unix/gccgo_linux_sparc64.go | 20 - vendor/golang.org/x/sys/unix/linux/Dockerfile | 19 +- vendor/golang.org/x/sys/unix/linux/mkall.go | 103 + vendor/golang.org/x/sys/unix/linux/types.go | 68 +- vendor/golang.org/x/sys/unix/mkall.sh | 9 - vendor/golang.org/x/sys/unix/mkerrors.sh | 26 +- vendor/golang.org/x/sys/unix/mkpost.go | 5 + .../golang.org/x/sys/unix/mmap_unix_test.go | 2 +- vendor/golang.org/x/sys/unix/pagesize_unix.go | 15 + vendor/golang.org/x/sys/unix/race.go | 2 +- vendor/golang.org/x/sys/unix/race0.go | 2 +- .../golang.org/x/sys/unix/sockcmsg_linux.go | 2 +- vendor/golang.org/x/sys/unix/syscall.go | 24 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 22 +- .../golang.org/x/sys/unix/syscall_bsd_test.go | 8 + .../golang.org/x/sys/unix/syscall_darwin.go | 80 +- .../x/sys/unix/syscall_darwin_386.go | 19 +- .../x/sys/unix/syscall_darwin_amd64.go | 19 +- .../x/sys/unix/syscall_darwin_arm.go | 23 +- .../x/sys/unix/syscall_darwin_arm64.go | 19 +- .../x/sys/unix/syscall_dragonfly.go | 47 +- .../x/sys/unix/syscall_dragonfly_amd64.go | 17 +- .../golang.org/x/sys/unix/syscall_freebsd.go | 55 +- .../x/sys/unix/syscall_freebsd_386.go | 17 +- .../x/sys/unix/syscall_freebsd_amd64.go | 17 +- .../x/sys/unix/syscall_freebsd_arm.go | 17 +- .../x/sys/unix/syscall_freebsd_test.go | 10 + vendor/golang.org/x/sys/unix/syscall_linux.go | 38 +- .../x/sys/unix/syscall_linux_386.go | 22 +- .../x/sys/unix/syscall_linux_amd64.go | 18 +- .../x/sys/unix/syscall_linux_arm.go | 18 +- .../x/sys/unix/syscall_linux_arm64.go | 24 +- .../x/sys/unix/syscall_linux_mips64x.go | 25 +- .../x/sys/unix/syscall_linux_mipsx.go | 18 +- .../x/sys/unix/syscall_linux_ppc64x.go | 20 +- .../x/sys/unix/syscall_linux_s390x.go | 18 +- .../x/sys/unix/syscall_linux_sparc64.go | 36 +- .../x/sys/unix/syscall_linux_test.go | 134 +- .../golang.org/x/sys/unix/syscall_netbsd.go | 47 +- .../x/sys/unix/syscall_netbsd_386.go | 17 +- .../x/sys/unix/syscall_netbsd_amd64.go | 17 +- .../x/sys/unix/syscall_netbsd_arm.go | 17 +- .../golang.org/x/sys/unix/syscall_openbsd.go | 69 +- .../x/sys/unix/syscall_openbsd_386.go | 17 +- .../x/sys/unix/syscall_openbsd_amd64.go | 17 +- .../x/sys/unix/syscall_openbsd_arm.go | 19 +- .../golang.org/x/sys/unix/syscall_solaris.go | 48 +- .../x/sys/unix/syscall_solaris_amd64.go | 15 +- .../x/sys/unix/syscall_unix_test.go | 53 + vendor/golang.org/x/sys/unix/timestruct.go | 62 + vendor/golang.org/x/sys/unix/types_darwin.go | 23 + .../golang.org/x/sys/unix/types_dragonfly.go | 20 + vendor/golang.org/x/sys/unix/types_freebsd.go | 24 + vendor/golang.org/x/sys/unix/types_netbsd.go | 20 + vendor/golang.org/x/sys/unix/types_openbsd.go | 20 + vendor/golang.org/x/sys/unix/types_solaris.go | 22 +- .../x/sys/unix/zerrors_darwin_386.go | 96 + .../x/sys/unix/zerrors_darwin_amd64.go | 96 + .../x/sys/unix/zerrors_darwin_arm.go | 96 + .../x/sys/unix/zerrors_darwin_arm64.go | 96 + .../x/sys/unix/zerrors_freebsd_386.go | 50 + .../x/sys/unix/zerrors_freebsd_amd64.go | 50 + .../x/sys/unix/zerrors_freebsd_arm.go | 50 + .../x/sys/unix/zerrors_linux_386.go | 79 +- .../x/sys/unix/zerrors_linux_amd64.go | 81 +- .../x/sys/unix/zerrors_linux_arm.go | 79 +- .../x/sys/unix/zerrors_linux_arm64.go | 82 +- .../x/sys/unix/zerrors_linux_mips.go | 78 +- .../x/sys/unix/zerrors_linux_mips64.go | 80 +- .../x/sys/unix/zerrors_linux_mips64le.go | 80 +- .../x/sys/unix/zerrors_linux_mipsle.go | 78 +- .../x/sys/unix/zerrors_linux_ppc64.go | 81 +- .../x/sys/unix/zerrors_linux_ppc64le.go | 81 +- .../x/sys/unix/zerrors_linux_s390x.go | 81 +- .../x/sys/unix/zerrors_solaris_amd64.go | 6 + .../golang.org/x/sys/unix/zptrace386_linux.go | 80 + .../golang.org/x/sys/unix/zptracearm_linux.go | 41 + .../x/sys/unix/zptracemips_linux.go | 50 + .../x/sys/unix/zptracemipsle_linux.go | 50 + .../x/sys/unix/zsyscall_darwin_386.go | 11 + .../x/sys/unix/zsyscall_darwin_amd64.go | 11 + .../x/sys/unix/zsyscall_darwin_arm.go | 13 +- .../x/sys/unix/zsyscall_darwin_arm64.go | 11 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 21 + .../x/sys/unix/zsyscall_freebsd_386.go | 28 + .../x/sys/unix/zsyscall_freebsd_amd64.go | 28 + .../x/sys/unix/zsyscall_freebsd_arm.go | 28 + .../x/sys/unix/zsyscall_linux_386.go | 58 +- .../x/sys/unix/zsyscall_linux_amd64.go | 58 +- .../x/sys/unix/zsyscall_linux_arm.go | 58 +- .../x/sys/unix/zsyscall_linux_arm64.go | 54 +- .../x/sys/unix/zsyscall_linux_mips.go | 58 +- .../x/sys/unix/zsyscall_linux_mips64.go | 69 +- .../x/sys/unix/zsyscall_linux_mips64le.go | 69 +- .../x/sys/unix/zsyscall_linux_mipsle.go | 58 +- .../x/sys/unix/zsyscall_linux_ppc64.go | 60 +- .../x/sys/unix/zsyscall_linux_ppc64le.go | 60 +- .../x/sys/unix/zsyscall_linux_s390x.go | 58 +- .../x/sys/unix/zsyscall_netbsd_386.go | 21 + .../x/sys/unix/zsyscall_netbsd_amd64.go | 21 + .../x/sys/unix/zsyscall_netbsd_arm.go | 21 + .../x/sys/unix/zsyscall_openbsd_386.go | 21 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 21 + .../x/sys/unix/zsyscall_openbsd_arm.go | 21 + .../x/sys/unix/zsyscall_solaris_amd64.go | 68 +- ...sctl_openbsd.go => zsysctl_openbsd_386.go} | 0 .../x/sys/unix/zsysctl_openbsd_amd64.go | 270 + .../x/sys/unix/zsysctl_openbsd_arm.go | 270 + .../x/sys/unix/zsysnum_darwin_386.go | 60 +- .../x/sys/unix/zsysnum_darwin_amd64.go | 60 +- .../x/sys/unix/zsysnum_darwin_arm.go | 14 +- .../x/sys/unix/zsysnum_darwin_arm64.go | 14 +- .../x/sys/unix/zsysnum_linux_386.go | 2 + .../x/sys/unix/zsysnum_linux_amd64.go | 1 + .../x/sys/unix/zsysnum_linux_arm.go | 1 + .../x/sys/unix/zsysnum_linux_arm64.go | 1 + .../x/sys/unix/zsysnum_linux_mips.go | 1 + .../x/sys/unix/zsysnum_linux_mips64.go | 1 + .../x/sys/unix/zsysnum_linux_mips64le.go | 1 + .../x/sys/unix/zsysnum_linux_mipsle.go | 1 + .../x/sys/unix/zsysnum_linux_ppc64.go | 1 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 1 + .../x/sys/unix/zsysnum_linux_s390x.go | 2 + .../x/sys/unix/ztypes_darwin_386.go | 27 + .../x/sys/unix/ztypes_darwin_amd64.go | 27 + .../x/sys/unix/ztypes_darwin_arm.go | 27 + .../x/sys/unix/ztypes_darwin_arm64.go | 32 +- .../x/sys/unix/ztypes_dragonfly_amd64.go | 26 + .../x/sys/unix/ztypes_freebsd_386.go | 28 + .../x/sys/unix/ztypes_freebsd_amd64.go | 28 + .../x/sys/unix/ztypes_freebsd_arm.go | 28 + .../golang.org/x/sys/unix/ztypes_linux_386.go | 118 +- .../x/sys/unix/ztypes_linux_amd64.go | 118 +- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 118 +- .../x/sys/unix/ztypes_linux_arm64.go | 118 +- .../x/sys/unix/ztypes_linux_mips.go | 118 +- .../x/sys/unix/ztypes_linux_mips64.go | 118 +- .../x/sys/unix/ztypes_linux_mips64le.go | 118 +- .../x/sys/unix/ztypes_linux_mipsle.go | 118 +- .../x/sys/unix/ztypes_linux_ppc64.go | 118 +- .../x/sys/unix/ztypes_linux_ppc64le.go | 118 +- .../x/sys/unix/ztypes_linux_s390x.go | 118 +- .../x/sys/unix/ztypes_linux_sparc64.go | 14 +- .../x/sys/unix/ztypes_netbsd_386.go | 30 +- .../x/sys/unix/ztypes_netbsd_amd64.go | 30 +- .../x/sys/unix/ztypes_netbsd_arm.go | 30 +- .../x/sys/unix/ztypes_openbsd_386.go | 30 +- .../x/sys/unix/ztypes_openbsd_amd64.go | 30 +- .../x/sys/unix/ztypes_openbsd_arm.go | 30 +- .../x/sys/unix/ztypes_solaris_amd64.go | 31 +- .../golang.org/x/sys/windows/dll_windows.go | 9 +- vendor/golang.org/x/sys/windows/env_unset.go | 2 +- .../golang.org/x/sys/windows/env_windows.go | 2 +- .../x/sys/windows/memory_windows.go | 2 +- vendor/golang.org/x/sys/windows/mksyscall.go | 2 +- vendor/golang.org/x/sys/windows/race.go | 2 +- vendor/golang.org/x/sys/windows/race0.go | 2 +- .../x/sys/windows/security_windows.go | 43 +- .../x/sys/windows/svc/eventlog/log_test.go | 2 +- vendor/golang.org/x/sys/windows/svc/go12.go | 2 +- vendor/golang.org/x/sys/windows/svc/go13.go | 2 +- .../x/sys/windows/svc/mgr/mgr_test.go | 2 +- .../golang.org/x/sys/windows/svc/svc_test.go | 2 +- vendor/golang.org/x/sys/windows/syscall.go | 6 +- .../golang.org/x/sys/windows/syscall_test.go | 20 + .../x/sys/windows/syscall_windows.go | 165 +- .../x/sys/windows/syscall_windows_test.go | 2 +- .../golang.org/x/sys/windows/types_windows.go | 59 +- .../x/sys/windows/types_windows_386.go | 2 +- .../x/sys/windows/types_windows_amd64.go | 2 +- .../x/sys/windows/zsyscall_windows.go | 259 + vendor/golang.org/x/text/README | 23 - vendor/golang.org/x/text/README.md | 91 + vendor/golang.org/x/text/cases/tables.go | 606 +- vendor/golang.org/x/text/cases/tables_test.go | 44 +- vendor/golang.org/x/text/cmd/gotext/doc.go | 13 + .../text/cmd/gotext/examples/extract/main.go | 86 + .../extract/textdata/gotext_en.out.json | 221 + .../cmd/gotext/examples/extract_http/main.go | 17 + .../gotext/examples/extract_http/pkg/pkg.go | 27 + .../extract_http/textdata/gotext_en.out.json | 40 + .../text/cmd/gotext/examples/rewrite/main.go | 37 + .../cmd/gotext/examples/rewrite/printer.go | 16 + .../golang.org/x/text/cmd/gotext/extract.go | 230 +- vendor/golang.org/x/text/cmd/gotext/main.go | 1 + .../golang.org/x/text/cmd/gotext/message.go | 141 +- .../golang.org/x/text/cmd/gotext/rewrite.go | 304 + .../x/text/collate/build/contract.go | 2 +- .../x/text/collate/tools/colcmp/darwin.go | 20 +- .../x/text/currency/currency_test.go | 4 +- vendor/golang.org/x/text/date/data_test.go | 335 + vendor/golang.org/x/text/date/gen.go | 329 + vendor/golang.org/x/text/date/gen_test.go | 241 + vendor/golang.org/x/text/date/tables.go | 64522 +++++++++++++ .../x/text/encoding/htmlindex/htmlindex.go | 2 +- .../x/text/feature/plural/example_test.go | 46 + .../x/text/feature/plural/message.go | 244 + .../x/text/feature/plural/message_test.go | 197 + .../x/text/feature/plural/plural.go | 34 +- .../x/text/feature/plural/plural_test.go | 17 +- vendor/golang.org/x/text/gen.go | 38 +- .../x/text/internal/catmsg/catmsg.go | 26 +- .../x/text/internal/catmsg/catmsg_test.go | 28 +- .../x/text/internal/catmsg/codec.go | 4 +- .../x/text/internal/cldrtree/cldrtree.go | 351 + .../x/text/internal/cldrtree/cldrtree_test.go | 456 + .../x/text/internal/cldrtree/generate.go | 208 + .../x/text/internal/cldrtree/option.go | 86 + .../testdata/test1/common/main/root.xml | 89 + .../cldrtree/testdata/test1/output.go | 347 + .../testdata/test2/common/main/en.xml | 171 + .../testdata/test2/common/main/en_001.xml | 60 + .../testdata/test2/common/main/en_GB.xml | 63 + .../testdata/test2/common/main/root.xml | 646 + .../cldrtree/testdata/test2/output.go | 886 + .../x/text/internal/cldrtree/tree.go | 181 + .../x/text/internal/cldrtree/type.go | 139 + .../x/text/internal/export/idna/gen.go | 19 +- .../x/text/internal/export/idna/gen_test.go | 9 + .../text/internal/export/idna/gen_trieval.go | 17 +- .../x/text/internal/export/idna/idna.go | 122 +- .../x/text/internal/export/idna/idna_test.go | 32 +- .../x/text/internal/export/idna/tables.go | 4396 +- .../x/text/internal/export/idna/trieval.go | 17 +- .../x/text/internal/format/format.go | 24 +- .../x/text/internal/format/parser.go | 357 + .../x/text/internal/format/parser_test.go | 32 + .../x/text/internal/number/decimal.go | 195 +- .../x/text/internal/number/decimal_test.go | 78 +- .../x/text/internal/number/format.go | 245 +- .../x/text/internal/number/format_test.go | 70 +- .../x/text/internal/number/pattern.go | 92 +- .../x/text/internal/number/pattern_test.go | 333 +- .../x/text/internal/number/tables.go | 464 +- vendor/golang.org/x/text/internal/ucd/ucd.go | 115 +- .../golang.org/x/text/language/data_test.go | 425 - .../x/text/language/display/dict_test.go | 2 +- .../x/text/language/display/display.go | 77 + .../x/text/language/display/display_test.go | 160 +- .../x/text/language/display/examples_test.go | 18 + .../x/text/language/display/maketables.go | 8 +- .../x/text/language/display/tables.go | 3114 +- vendor/golang.org/x/text/language/doc.go | 102 + .../x/text/language/examples_test.go | 21 +- vendor/golang.org/x/text/language/gen.go | 43 +- vendor/golang.org/x/text/language/index.go | 1022 +- vendor/golang.org/x/text/language/language.go | 117 +- .../x/text/language/language_test.go | 33 + vendor/golang.org/x/text/language/match.go | 306 +- .../golang.org/x/text/language/match_test.go | 247 +- vendor/golang.org/x/text/language/parse.go | 2 +- vendor/golang.org/x/text/language/tables.go | 5061 +- ...cherTest.txt => CLDRLocaleMatcherTest.txt} | 0 .../language/testdata/GoLocaleMatcherTest.txt | 226 + vendor/golang.org/x/text/message/catalog.go | 4 +- .../x/text/message/catalog/catalog.go | 125 +- .../x/text/message/catalog/catalog_test.go | 59 +- .../golang.org/x/text/message/catalog/dict.go | 6 +- .../golang.org/x/text/message/catalog/go19.go | 15 + .../x/text/message/catalog/gopre19.go | 23 + vendor/golang.org/x/text/message/doc.go | 100 + .../x/text/message/examples_test.go | 42 + vendor/golang.org/x/text/message/fmt_test.go | 44 +- vendor/golang.org/x/text/message/format.go | 150 +- vendor/golang.org/x/text/message/message.go | 110 +- .../golang.org/x/text/message/message_test.go | 4 +- vendor/golang.org/x/text/message/print.go | 466 +- vendor/golang.org/x/text/number/doc.go | 28 + .../golang.org/x/text/number/examples_test.go | 28 + vendor/golang.org/x/text/number/format.go | 122 + .../golang.org/x/text/number/format_test.go | 112 + vendor/golang.org/x/text/number/number.go | 77 + .../golang.org/x/text/number/number_test.go | 190 + vendor/golang.org/x/text/number/option.go | 177 + .../x/text/secure/bidirule/bidirule.go | 4 +- .../x/text/secure/bidirule/bidirule_test.go | 94 +- vendor/golang.org/x/text/secure/precis/doc.go | 4 +- .../x/text/secure/precis/enforce_test.go | 41 +- .../x/text/secure/precis/nickname.go | 28 +- .../x/text/secure/precis/options.go | 4 + .../x/text/secure/precis/profile.go | 116 +- .../x/text/secure/precis/profile_test.go | 6 +- .../x/text/secure/precis/profiles.go | 12 +- .../golang.org/x/text/secure/precis/tables.go | 3127 +- .../golang.org/x/text/unicode/bidi/tables.go | 1356 +- vendor/golang.org/x/text/unicode/cldr/base.go | 5 + .../golang.org/x/text/unicode/cldr/decode.go | 2 +- .../x/text/unicode/norm/norm_test.go | 14 - .../golang.org/x/text/unicode/norm/tables.go | 2842 +- .../x/text/unicode/norm/transform.go | 2 +- .../x/text/unicode/rangetable/gen.go | 8 +- .../x/text/unicode/rangetable/tables.go | 1889 +- vendor/golang.org/x/text/width/tables.go | 318 +- .../inf.v0}/LICENSE | 3 +- vendor/gopkg.in/inf.v0/benchmark_test.go | 210 + vendor/gopkg.in/inf.v0/dec.go | 615 + vendor/gopkg.in/inf.v0/dec_go1_2_test.go | 33 + vendor/gopkg.in/inf.v0/dec_internal_test.go | 40 + vendor/gopkg.in/inf.v0/dec_test.go | 379 + vendor/gopkg.in/inf.v0/example_test.go | 62 + vendor/gopkg.in/inf.v0/rounder.go | 145 + .../gopkg.in/inf.v0/rounder_example_test.go | 72 + vendor/gopkg.in/inf.v0/rounder_test.go | 109 + vendor/gopkg.in/yaml.v2/.travis.yml | 9 - vendor/gopkg.in/yaml.v2/LICENSE | 325 +- vendor/gopkg.in/yaml.v2/README.md | 4 +- vendor/gopkg.in/yaml.v2/decode.go | 10 +- vendor/gopkg.in/yaml.v2/decode_test.go | 55 +- vendor/gopkg.in/yaml.v2/emitterc.go | 9 +- .../gopkg.in/yaml.v2/example_embedded_test.go | 41 - vendor/gopkg.in/yaml.v2/parserc.go | 1 + vendor/gopkg.in/yaml.v2/readerc.go | 7 +- vendor/gopkg.in/yaml.v2/resolve.go | 11 +- vendor/gopkg.in/yaml.v2/scannerc.go | 13 +- vendor/gopkg.in/yaml.v2/yaml.go | 15 +- vendor/gopkg.in/yaml.v2/yamlh.go | 2 +- vendor/k8s.io/apimachinery/Godeps/Godeps.json | 193 + vendor/k8s.io/apimachinery/Godeps/Readme | 5 + vendor/k8s.io/apimachinery/LICENSE | 202 + vendor/k8s.io/apimachinery/OWNERS | 21 + vendor/k8s.io/apimachinery/README.md | 29 + vendor/k8s.io/apimachinery/hack/godep-deps.sh | 66 + .../apimachinery/hack/sync-from-kubernetes.sh | 65 + vendor/k8s.io/apimachinery/kubernetes-sha | 1 + vendor/k8s.io/apimachinery/pkg/OWNERS | 6 + .../apimachinery/pkg/api/equality/BUILD | 21 + .../apimachinery/pkg/api/equality/semantic.go | 46 + .../k8s.io/apimachinery/pkg/api/errors/BUILD | 37 + .../k8s.io/apimachinery/pkg/api/errors/OWNERS | 26 + .../k8s.io/apimachinery/pkg/api/errors/doc.go | 18 + .../apimachinery/pkg/api/errors/errors.go | 478 + .../pkg/api/errors/errors_test.go | 196 + vendor/k8s.io/apimachinery/pkg/api/meta/BUILD | 59 + .../k8s.io/apimachinery/pkg/api/meta/OWNERS | 26 + .../apimachinery/pkg/api/meta/default.go | 51 + .../k8s.io/apimachinery/pkg/api/meta/doc.go | 19 + .../apimachinery/pkg/api/meta/errors.go | 105 + .../pkg/api/meta/firsthit_restmapper.go | 97 + .../k8s.io/apimachinery/pkg/api/meta/help.go | 202 + .../apimachinery/pkg/api/meta/interfaces.go | 146 + .../k8s.io/apimachinery/pkg/api/meta/meta.go | 610 + .../apimachinery/pkg/api/meta/meta_test.go | 51 + .../pkg/api/meta/multirestmapper.go | 210 + .../pkg/api/meta/multirestmapper_test.go | 355 + .../apimachinery/pkg/api/meta/priority.go | 222 + .../pkg/api/meta/priority_test.go | 346 + .../apimachinery/pkg/api/meta/restmapper.go | 545 + .../pkg/api/meta/restmapper_test.go | 751 + .../apimachinery/pkg/api/meta/unstructured.go | 31 + .../apimachinery/pkg/api/resource/BUILD | 55 + .../apimachinery/pkg/api/resource/OWNERS | 17 + .../apimachinery/pkg/api/resource/amount.go | 299 + .../pkg/api/resource/amount_test.go | 133 + .../pkg/api/resource/generated.pb.go | 77 + .../pkg/api/resource/generated.proto | 94 + .../apimachinery/pkg/api/resource/math.go | 314 + .../pkg/api/resource/math_test.go | 211 + .../apimachinery/pkg/api/resource/quantity.go | 792 + .../pkg/api/resource/quantity_example_test.go | 59 + .../pkg/api/resource/quantity_proto.go | 284 + .../pkg/api/resource/quantity_proto_test.go | 103 + .../pkg/api/resource/quantity_test.go | 1370 + .../pkg/api/resource/scale_int.go | 95 + .../pkg/api/resource/scale_int_test.go | 85 + .../apimachinery/pkg/api/resource/suffix.go | 198 + .../k8s.io/apimachinery/pkg/api/testing/BUILD | 48 + .../apimachinery/pkg/api/testing/codec.go | 86 + .../apimachinery/pkg/api/testing/fuzzer.go | 174 + .../apimachinery/pkg/api/testing/roundtrip.go | 351 + .../apimachinery/pkg/api/testing/valuefuzz.go | 86 + .../pkg/api/testing/valuefuzz_test.go | 73 + .../apimachinery/pkg/api/validation/BUILD | 40 + .../apimachinery/pkg/api/validation/doc.go | 18 + .../pkg/api/validation/generic.go | 85 + .../pkg/api/validation/objectmeta.go | 348 + .../pkg/api/validation/objectmeta_test.go | 500 + .../pkg/api/validation/path/BUILD | 22 + .../pkg/api/validation/path/name.go | 68 + .../pkg/api/validation/path/name_test.go | 168 + .../apimachinery/pkg/apimachinery/BUILD | 31 + .../pkg/apimachinery/announced/BUILD | 35 + .../pkg/apimachinery/announced/announced.go | 99 + .../apimachinery/announced/announced_test.go | 66 + .../apimachinery/announced/group_factory.go | 252 + .../apimachinery/pkg/apimachinery/doc.go | 20 + .../pkg/apimachinery/registered/BUILD | 33 + .../pkg/apimachinery/registered/registered.go | 376 + .../registered/registered_test.go | 148 + .../apimachinery/pkg/apimachinery/types.go | 87 + .../pkg/apimachinery/types_test.go | 43 + .../pkg/apis/meta/internalversion/BUILD | 41 + .../apis/meta/internalversion/conversion.go | 73 + .../pkg/apis/meta/internalversion/register.go | 100 + .../meta/internalversion/register_test.go | 89 + .../pkg/apis/meta/internalversion/types.go | 48 + .../apimachinery/pkg/apis/meta/v1/BUILD | 71 + .../apimachinery/pkg/apis/meta/v1/OWNERS | 33 + .../pkg/apis/meta/v1/conversion.go | 264 + .../apimachinery/pkg/apis/meta/v1/doc.go | 22 + .../apimachinery/pkg/apis/meta/v1/duration.go | 47 + .../pkg/apis/meta/v1/duration_test.go | 153 + .../pkg/apis/meta/v1/generated.pb.go | 7516 ++ .../pkg/apis/meta/v1/generated.proto | 764 + .../pkg/apis/meta/v1/group_version.go | 148 + .../pkg/apis/meta/v1/group_version_test.go | 78 + .../apimachinery/pkg/apis/meta/v1/helpers.go | 234 + .../pkg/apis/meta/v1/helpers_test.go | 154 + .../apimachinery/pkg/apis/meta/v1/labels.go | 75 + .../pkg/apis/meta/v1/labels_test.go | 120 + .../apimachinery/pkg/apis/meta/v1/meta.go | 201 + .../pkg/apis/meta/v1/micro_time.go | 184 + .../pkg/apis/meta/v1/micro_time_proto.go | 72 + .../pkg/apis/meta/v1/micro_time_test.go | 139 + .../apimachinery/pkg/apis/meta/v1/register.go | 95 + .../apimachinery/pkg/apis/meta/v1/time.go | 180 + .../pkg/apis/meta/v1/time_proto.go | 85 + .../pkg/apis/meta/v1/time_test.go | 173 + .../apimachinery/pkg/apis/meta/v1/types.go | 843 + .../meta/v1/types_swagger_doc_generated.go | 315 + .../pkg/apis/meta/v1/types_test.go | 134 + .../pkg/apis/meta/v1/unstructured/BUILD | 32 + .../apis/meta/v1/unstructured/unstructured.go | 752 + .../meta/v1/unstructured/unstructured_test.go | 36 + .../pkg/apis/meta/v1/validation/BUILD | 28 + .../pkg/apis/meta/v1/validation/validation.go | 90 + .../meta/v1/validation/validation_test.go | 94 + .../apimachinery/pkg/apis/meta/v1/watch.go | 80 + .../pkg/apis/meta/v1/zz_generated.deepcopy.go | 646 + .../pkg/apis/meta/v1/zz_generated.defaults.go | 32 + .../apimachinery/pkg/apis/meta/v1alpha1/BUILD | 29 + .../pkg/apis/meta/v1alpha1/doc.go | 22 + .../pkg/apis/meta/v1alpha1/generated.pb.go | 633 + .../pkg/apis/meta/v1alpha1/generated.proto | 55 + .../pkg/apis/meta/v1alpha1/register.go | 51 + .../pkg/apis/meta/v1alpha1/types.go | 157 + .../v1alpha1/types_swagger_doc_generated.go | 104 + .../meta/v1alpha1/zz_generated.deepcopy.go | 164 + .../meta/v1alpha1/zz_generated.defaults.go | 32 + .../k8s.io/apimachinery/pkg/conversion/BUILD | 38 + .../apimachinery/pkg/conversion/cloner.go | 249 + .../apimachinery/pkg/conversion/converter.go | 898 + .../pkg/conversion/converter_test.go | 826 + .../pkg/conversion/deep_copy_test.go | 161 + .../apimachinery/pkg/conversion/deep_equal.go | 36 + .../k8s.io/apimachinery/pkg/conversion/doc.go | 24 + .../apimachinery/pkg/conversion/helper.go | 39 + .../pkg/conversion/helper_test.go | 38 + .../pkg/conversion/queryparams/BUILD | 29 + .../pkg/conversion/queryparams/convert.go | 188 + .../conversion/queryparams/convert_test.go | 212 + .../pkg/conversion/queryparams/doc.go | 19 + .../pkg/conversion/unstructured/BUILD | 38 + .../pkg/conversion/unstructured/converter.go | 690 + .../conversion/unstructured/converter_test.go | 462 + .../pkg/conversion/unstructured/doc.go | 19 + vendor/k8s.io/apimachinery/pkg/fields/BUILD | 31 + vendor/k8s.io/apimachinery/pkg/fields/doc.go | 19 + .../k8s.io/apimachinery/pkg/fields/fields.go | 62 + .../apimachinery/pkg/fields/fields_test.go | 57 + .../apimachinery/pkg/fields/requirements.go | 30 + .../apimachinery/pkg/fields/selector.go | 423 + .../apimachinery/pkg/fields/selector_test.go | 397 + vendor/k8s.io/apimachinery/pkg/labels/BUILD | 39 + vendor/k8s.io/apimachinery/pkg/labels/doc.go | 19 + .../k8s.io/apimachinery/pkg/labels/labels.go | 181 + .../apimachinery/pkg/labels/labels_test.go | 231 + .../apimachinery/pkg/labels/selector.go | 859 + .../apimachinery/pkg/labels/selector_test.go | 575 + vendor/k8s.io/apimachinery/pkg/openapi/BUILD | 21 + .../k8s.io/apimachinery/pkg/openapi/common.go | 161 + vendor/k8s.io/apimachinery/pkg/openapi/doc.go | 18 + vendor/k8s.io/apimachinery/pkg/runtime/BUILD | 68 + .../k8s.io/apimachinery/pkg/runtime/codec.go | 316 + .../apimachinery/pkg/runtime/codec_check.go | 48 + .../apimachinery/pkg/runtime/conversion.go | 98 + .../pkg/runtime/conversion_test.go | 135 + vendor/k8s.io/apimachinery/pkg/runtime/doc.go | 45 + .../apimachinery/pkg/runtime/embedded.go | 136 + .../apimachinery/pkg/runtime/embedded_test.go | 292 + .../k8s.io/apimachinery/pkg/runtime/error.go | 113 + .../apimachinery/pkg/runtime/extension.go | 48 + .../pkg/runtime/extension_test.go | 39 + .../apimachinery/pkg/runtime/generated.pb.go | 773 + .../apimachinery/pkg/runtime/generated.proto | 128 + .../k8s.io/apimachinery/pkg/runtime/helper.go | 212 + .../apimachinery/pkg/runtime/interfaces.go | 251 + .../apimachinery/pkg/runtime/register.go | 61 + .../apimachinery/pkg/runtime/schema/BUILD | 27 + .../pkg/runtime/schema/generated.pb.go | 65 + .../pkg/runtime/schema/generated.proto | 28 + .../pkg/runtime/schema/group_version.go | 277 + .../pkg/runtime/schema/group_version_test.go | 136 + .../pkg/runtime/schema/interfaces.go | 40 + .../k8s.io/apimachinery/pkg/runtime/scheme.go | 577 + .../pkg/runtime/scheme_builder.go | 48 + .../apimachinery/pkg/runtime/scheme_test.go | 1011 + .../apimachinery/pkg/runtime/serializer/BUILD | 44 + .../pkg/runtime/serializer/codec_factory.go | 237 + .../pkg/runtime/serializer/codec_test.go | 426 + .../pkg/runtime/serializer/json/BUILD | 46 + .../pkg/runtime/serializer/json/json.go | 245 + .../pkg/runtime/serializer/json/json_test.go | 264 + .../pkg/runtime/serializer/json/meta.go | 63 + .../pkg/runtime/serializer/json/meta_test.go | 45 + .../runtime/serializer/negotiated_codec.go | 43 + .../pkg/runtime/serializer/protobuf/BUILD | 24 + .../pkg/runtime/serializer/protobuf/doc.go | 18 + .../runtime/serializer/protobuf/protobuf.go | 448 + .../runtime/serializer/protobuf_extension.go | 48 + .../pkg/runtime/serializer/recognizer/BUILD | 18 + .../serializer/recognizer/recognizer.go | 127 + .../serializer/recognizer/testing/BUILD | 20 + .../recognizer/testing/recognizer_test.go | 58 + .../pkg/runtime/serializer/streaming/BUILD | 31 + .../runtime/serializer/streaming/streaming.go | 137 + .../serializer/streaming/streaming_test.go | 84 + .../pkg/runtime/serializer/versioning/BUILD | 32 + .../serializer/versioning/versioning.go | 273 + .../serializer/versioning/versioning_test.go | 399 + .../pkg/runtime/serializer/yaml/BUILD | 19 + .../pkg/runtime/serializer/yaml/yaml.go | 46 + .../pkg/runtime/swagger_doc_generator.go | 262 + .../pkg/runtime/swagger_doc_generator_test.go | 43 + .../k8s.io/apimachinery/pkg/runtime/types.go | 133 + .../apimachinery/pkg/runtime/types_proto.go | 69 + .../pkg/runtime/zz_generated.deepcopy.go | 83 + .../k8s.io/apimachinery/pkg/selection/BUILD | 14 + .../apimachinery/pkg/selection/operator.go | 33 + vendor/k8s.io/apimachinery/pkg/types/BUILD | 20 + vendor/k8s.io/apimachinery/pkg/types/doc.go | 18 + .../apimachinery/pkg/types/namespacedname.go | 60 + .../k8s.io/apimachinery/pkg/types/nodename.go | 43 + vendor/k8s.io/apimachinery/pkg/types/patch.go | 28 + vendor/k8s.io/apimachinery/pkg/types/uid.go | 22 + .../k8s.io/apimachinery/pkg/util/cache/BUILD | 33 + .../apimachinery/pkg/util/cache/cache.go | 83 + .../apimachinery/pkg/util/cache/cache_test.go | 90 + .../pkg/util/cache/lruexpirecache.go | 102 + .../pkg/util/cache/lruexpirecache_test.go | 68 + .../k8s.io/apimachinery/pkg/util/clock/BUILD | 22 + .../apimachinery/pkg/util/clock/clock.go | 327 + .../apimachinery/pkg/util/clock/clock_test.go | 184 + .../k8s.io/apimachinery/pkg/util/diff/BUILD | 26 + .../k8s.io/apimachinery/pkg/util/diff/diff.go | 280 + .../apimachinery/pkg/util/diff/diff_test.go | 88 + .../k8s.io/apimachinery/pkg/util/errors/BUILD | 25 + .../apimachinery/pkg/util/errors/doc.go | 18 + .../apimachinery/pkg/util/errors/errors.go | 201 + .../pkg/util/errors/errors_test.go | 363 + .../k8s.io/apimachinery/pkg/util/framer/BUILD | 22 + .../apimachinery/pkg/util/framer/framer.go | 167 + .../pkg/util/framer/framer_test.go | 176 + .../apimachinery/pkg/util/httpstream/BUILD | 25 + .../apimachinery/pkg/util/httpstream/doc.go | 19 + .../pkg/util/httpstream/httpstream.go | 149 + .../pkg/util/httpstream/httpstream_test.go | 125 + .../pkg/util/httpstream/spdy/BUILD | 46 + .../pkg/util/httpstream/spdy/connection.go | 145 + .../util/httpstream/spdy/connection_test.go | 164 + .../pkg/util/httpstream/spdy/roundtripper.go | 326 + .../util/httpstream/spdy/roundtripper_test.go | 529 + .../pkg/util/httpstream/spdy/upgrade.go | 107 + .../pkg/util/httpstream/spdy/upgrade_test.go | 93 + .../k8s.io/apimachinery/pkg/util/intstr/BUILD | 33 + .../pkg/util/intstr/generated.pb.go | 381 + .../pkg/util/intstr/generated.proto | 43 + .../apimachinery/pkg/util/intstr/intstr.go | 177 + .../pkg/util/intstr/intstr_test.go | 176 + .../k8s.io/apimachinery/pkg/util/json/BUILD | 22 + .../k8s.io/apimachinery/pkg/util/json/json.go | 107 + .../apimachinery/pkg/util/json/json_test.go | 319 + .../pkg/util/jsonmergepatch/BUILD | 33 + .../pkg/util/jsonmergepatch/patch.go | 144 + .../pkg/util/jsonmergepatch/patch_test.go | 663 + .../apimachinery/pkg/util/mergepatch/BUILD | 29 + .../apimachinery/pkg/util/mergepatch/OWNERS | 5 + .../pkg/util/mergepatch/errors.go | 101 + .../apimachinery/pkg/util/mergepatch/util.go | 133 + .../pkg/util/mergepatch/util_test.go | 138 + vendor/k8s.io/apimachinery/pkg/util/net/BUILD | 40 + .../k8s.io/apimachinery/pkg/util/net/http.go | 401 + .../apimachinery/pkg/util/net/http_test.go | 220 + .../apimachinery/pkg/util/net/interface.go | 278 + .../pkg/util/net/interface_test.go | 300 + .../apimachinery/pkg/util/net/port_range.go | 113 + .../pkg/util/net/port_range_test.go | 69 + .../apimachinery/pkg/util/net/port_split.go | 77 + .../pkg/util/net/port_split_test.go | 121 + .../k8s.io/apimachinery/pkg/util/net/util.go | 46 + .../apimachinery/pkg/util/net/util_test.go | 68 + .../k8s.io/apimachinery/pkg/util/rand/BUILD | 22 + .../k8s.io/apimachinery/pkg/util/rand/rand.go | 85 + .../apimachinery/pkg/util/rand/rand_test.go | 101 + .../apimachinery/pkg/util/remotecommand/BUILD | 15 + .../pkg/util/remotecommand/constants.go | 53 + .../apimachinery/pkg/util/runtime/BUILD | 23 + .../apimachinery/pkg/util/runtime/runtime.go | 161 + .../pkg/util/runtime/runtime_test.go | 71 + .../k8s.io/apimachinery/pkg/util/sets/BUILD | 58 + .../k8s.io/apimachinery/pkg/util/sets/byte.go | 203 + .../k8s.io/apimachinery/pkg/util/sets/doc.go | 20 + .../apimachinery/pkg/util/sets/empty.go | 23 + .../k8s.io/apimachinery/pkg/util/sets/int.go | 203 + .../apimachinery/pkg/util/sets/int64.go | 203 + .../apimachinery/pkg/util/sets/set_test.go | 270 + .../apimachinery/pkg/util/sets/string.go | 203 + .../apimachinery/pkg/util/sets/types/BUILD | 14 + .../apimachinery/pkg/util/sets/types/types.go | 32 + .../pkg/util/strategicpatch/BUILD | 34 + .../pkg/util/strategicpatch/OWNERS | 5 + .../pkg/util/strategicpatch/patch.go | 2115 + .../pkg/util/strategicpatch/patch_test.go | 6645 ++ .../k8s.io/apimachinery/pkg/util/uuid/BUILD | 18 + .../k8s.io/apimachinery/pkg/util/uuid/uuid.go | 43 + .../apimachinery/pkg/util/validation/BUILD | 22 + .../pkg/util/validation/field/BUILD | 32 + .../pkg/util/validation/field/errors.go | 254 + .../pkg/util/validation/field/errors_test.go | 167 + .../pkg/util/validation/field/path.go | 91 + .../pkg/util/validation/field/path_test.go | 123 + .../pkg/util/validation/validation.go | 343 + .../pkg/util/validation/validation_test.go | 452 + .../k8s.io/apimachinery/pkg/util/wait/BUILD | 27 + .../k8s.io/apimachinery/pkg/util/wait/doc.go | 19 + .../k8s.io/apimachinery/pkg/util/wait/wait.go | 349 + .../apimachinery/pkg/util/wait/wait_test.go | 501 + .../k8s.io/apimachinery/pkg/util/yaml/BUILD | 26 + .../apimachinery/pkg/util/yaml/decoder.go | 346 + .../pkg/util/yaml/decoder_test.go | 349 + vendor/k8s.io/apimachinery/pkg/version/BUILD | 17 + vendor/k8s.io/apimachinery/pkg/version/doc.go | 19 + .../k8s.io/apimachinery/pkg/version/types.go | 37 + vendor/k8s.io/apimachinery/pkg/watch/BUILD | 47 + vendor/k8s.io/apimachinery/pkg/watch/doc.go | 19 + .../k8s.io/apimachinery/pkg/watch/filter.go | 109 + .../apimachinery/pkg/watch/filter_test.go | 84 + vendor/k8s.io/apimachinery/pkg/watch/mux.go | 257 + .../k8s.io/apimachinery/pkg/watch/mux_test.go | 168 + .../apimachinery/pkg/watch/streamwatcher.go | 119 + .../pkg/watch/streamwatcher_test.go | 68 + vendor/k8s.io/apimachinery/pkg/watch/until.go | 87 + vendor/k8s.io/apimachinery/pkg/watch/watch.go | 269 + .../apimachinery/pkg/watch/watch_test.go | 135 + .../third_party/forked/golang/json/BUILD | 14 + .../third_party/forked/golang/json/OWNERS | 5 + .../third_party/forked/golang/json/fields.go | 513 + .../third_party/forked/golang/netutil/BUILD | 14 + .../third_party/forked/golang/netutil/addr.go | 27 + .../third_party/forked/golang/reflect/BUILD | 25 + .../forked/golang/reflect/deep_equal.go | 388 + .../forked/golang/reflect/deep_equal_test.go | 137 + .../third_party/forked/golang/reflect/type.go | 91 + .../.github/PULL_REQUEST_TEMPLATE.md | 4 + vendor/k8s.io/client-go/.travis.yml | 8 + vendor/k8s.io/client-go/CHANGELOG.md | 45 + vendor/k8s.io/client-go/Godeps/Godeps.json | 543 + vendor/k8s.io/client-go/Godeps/Readme | 5 + vendor/k8s.io/client-go/INSTALL.md | 180 + vendor/k8s.io/client-go/LICENSE | 202 + vendor/k8s.io/client-go/OWNERS | 45 + vendor/k8s.io/client-go/README.md | 149 + vendor/k8s.io/client-go/discovery/BUILD | 63 + .../client-go/discovery/discovery_client.go | 464 + .../discovery/discovery_client_test.go | 817 + vendor/k8s.io/client-go/discovery/fake/BUILD | 25 + .../client-go/discovery/fake/discovery.go | 100 + vendor/k8s.io/client-go/discovery/helper.go | 121 + .../discovery/helper_blackbox_test.go | 185 + .../k8s.io/client-go/discovery/restmapper.go | 304 + .../client-go/discovery/restmapper_test.go | 353 + .../client-go/discovery/unstructured.go | 95 + vendor/k8s.io/client-go/dynamic/BUILD | 55 + vendor/k8s.io/client-go/dynamic/client.go | 306 + .../k8s.io/client-go/dynamic/client_pool.go | 122 + .../k8s.io/client-go/dynamic/client_test.go | 566 + .../k8s.io/client-go/dynamic/dynamic_util.go | 96 + .../client-go/dynamic/dynamic_util_test.go | 79 + vendor/k8s.io/client-go/examples/README.md | 31 + .../create-update-delete-deployment/BUILD | 29 + .../create-update-delete-deployment/README.md | 81 + .../create-update-delete-deployment/main.go | 165 + .../in-cluster-client-configuration/BUILD | 27 + .../Dockerfile | 17 + .../in-cluster-client-configuration/README.md | 50 + .../in-cluster-client-configuration/main.go | 64 + .../out-of-cluster-client-configuration/BUILD | 27 + .../README.md | 35 + .../main.go | 85 + .../third-party-resources-deprecated/BUILD | 32 + .../README.md | 46 + .../apis/tpr/v1/BUILD | 37 + .../apis/tpr/v1/register.go | 49 + .../apis/tpr/v1/types.go | 53 + .../apis/tpr/v1/types_test.go | 63 + .../client/BUILD | 29 + .../client/client.go | 45 + .../client/tpr.go | 76 + .../controller/BUILD | 22 + .../controller/controller.go | 126 + .../third-party-resources-deprecated/main.go | 132 + .../k8s.io/client-go/examples/workqueue/BUILD | 33 + .../client-go/examples/workqueue/README.md | 17 + .../client-go/examples/workqueue/main.go | 217 + vendor/k8s.io/client-go/informers/BUILD | 52 + .../informers/admissionregistration/BUILD | 18 + .../admissionregistration/interface.go | 44 + .../admissionregistration/v1alpha1/BUILD | 28 + .../externaladmissionhookconfiguration.go | 68 + .../v1alpha1/initializerconfiguration.go | 68 + .../v1alpha1/interface.go | 50 + vendor/k8s.io/client-go/informers/apps/BUILD | 18 + .../client-go/informers/apps/interface.go | 44 + .../client-go/informers/apps/v1beta1/BUILD | 29 + .../apps/v1beta1/controllerrevision.go | 68 + .../informers/apps/v1beta1/deployment.go | 68 + .../informers/apps/v1beta1/interface.go | 57 + .../informers/apps/v1beta1/statefulset.go | 68 + .../client-go/informers/autoscaling/BUILD | 19 + .../informers/autoscaling/interface.go | 52 + .../client-go/informers/autoscaling/v1/BUILD | 27 + .../autoscaling/v1/horizontalpodautoscaler.go | 68 + .../informers/autoscaling/v1/interface.go | 43 + .../informers/autoscaling/v2alpha1/BUILD | 27 + .../v2alpha1/horizontalpodautoscaler.go | 68 + .../autoscaling/v2alpha1/interface.go | 43 + vendor/k8s.io/client-go/informers/batch/BUILD | 19 + .../client-go/informers/batch/interface.go | 52 + .../k8s.io/client-go/informers/batch/v1/BUILD | 27 + .../client-go/informers/batch/v1/interface.go | 43 + .../client-go/informers/batch/v1/job.go | 68 + .../client-go/informers/batch/v2alpha1/BUILD | 27 + .../informers/batch/v2alpha1/cronjob.go | 68 + .../informers/batch/v2alpha1/interface.go | 43 + .../client-go/informers/certificates/BUILD | 18 + .../informers/certificates/interface.go | 44 + .../informers/certificates/v1beta1/BUILD | 27 + .../v1beta1/certificatesigningrequest.go | 68 + .../certificates/v1beta1/interface.go | 43 + vendor/k8s.io/client-go/informers/core/BUILD | 18 + .../client-go/informers/core/interface.go | 44 + .../k8s.io/client-go/informers/core/v1/BUILD | 42 + .../informers/core/v1/componentstatus.go | 68 + .../client-go/informers/core/v1/configmap.go | 68 + .../client-go/informers/core/v1/endpoints.go | 68 + .../client-go/informers/core/v1/event.go | 68 + .../client-go/informers/core/v1/interface.go | 148 + .../client-go/informers/core/v1/limitrange.go | 68 + .../client-go/informers/core/v1/namespace.go | 68 + .../client-go/informers/core/v1/node.go | 68 + .../informers/core/v1/persistentvolume.go | 68 + .../core/v1/persistentvolumeclaim.go | 68 + .../k8s.io/client-go/informers/core/v1/pod.go | 68 + .../informers/core/v1/podtemplate.go | 68 + .../core/v1/replicationcontroller.go | 68 + .../informers/core/v1/resourcequota.go | 68 + .../client-go/informers/core/v1/secret.go | 68 + .../client-go/informers/core/v1/service.go | 68 + .../informers/core/v1/serviceaccount.go | 68 + .../client-go/informers/extensions/BUILD | 18 + .../informers/extensions/interface.go | 44 + .../informers/extensions/v1beta1/BUILD | 32 + .../informers/extensions/v1beta1/daemonset.go | 68 + .../extensions/v1beta1/deployment.go | 68 + .../informers/extensions/v1beta1/ingress.go | 68 + .../informers/extensions/v1beta1/interface.go | 78 + .../extensions/v1beta1/podsecuritypolicy.go | 68 + .../extensions/v1beta1/replicaset.go | 68 + .../extensions/v1beta1/thirdpartyresource.go | 68 + vendor/k8s.io/client-go/informers/factory.go | 184 + vendor/k8s.io/client-go/informers/generic.go | 194 + .../informers/internalinterfaces/BUILD | 19 + .../internalinterfaces/factory_interfaces.go | 34 + .../client-go/informers/networking/BUILD | 18 + .../informers/networking/interface.go | 44 + .../client-go/informers/networking/v1/BUILD | 27 + .../informers/networking/v1/interface.go | 43 + .../informers/networking/v1/networkpolicy.go | 68 + .../k8s.io/client-go/informers/policy/BUILD | 18 + .../client-go/informers/policy/interface.go | 44 + .../client-go/informers/policy/v1beta1/BUILD | 27 + .../informers/policy/v1beta1/interface.go | 43 + .../policy/v1beta1/poddisruptionbudget.go | 68 + vendor/k8s.io/client-go/informers/rbac/BUILD | 19 + .../client-go/informers/rbac/interface.go | 52 + .../client-go/informers/rbac/v1alpha1/BUILD | 30 + .../informers/rbac/v1alpha1/clusterrole.go | 68 + .../rbac/v1alpha1/clusterrolebinding.go | 68 + .../informers/rbac/v1alpha1/interface.go | 64 + .../client-go/informers/rbac/v1alpha1/role.go | 68 + .../informers/rbac/v1alpha1/rolebinding.go | 68 + .../client-go/informers/rbac/v1beta1/BUILD | 30 + .../informers/rbac/v1beta1/clusterrole.go | 68 + .../rbac/v1beta1/clusterrolebinding.go | 68 + .../informers/rbac/v1beta1/interface.go | 64 + .../client-go/informers/rbac/v1beta1/role.go | 68 + .../informers/rbac/v1beta1/rolebinding.go | 68 + .../k8s.io/client-go/informers/settings/BUILD | 18 + .../client-go/informers/settings/interface.go | 44 + .../informers/settings/v1alpha1/BUILD | 27 + .../informers/settings/v1alpha1/interface.go | 43 + .../informers/settings/v1alpha1/podpreset.go | 68 + .../k8s.io/client-go/informers/storage/BUILD | 19 + .../client-go/informers/storage/interface.go | 52 + .../client-go/informers/storage/v1/BUILD | 27 + .../informers/storage/v1/interface.go | 43 + .../informers/storage/v1/storageclass.go | 68 + .../client-go/informers/storage/v1beta1/BUILD | 27 + .../informers/storage/v1beta1/interface.go | 43 + .../informers/storage/v1beta1/storageclass.go | 68 + vendor/k8s.io/client-go/kubernetes-sha | 1 + vendor/k8s.io/client-go/kubernetes/BUILD | 43 + .../k8s.io/client-go/kubernetes/clientset.go | 570 + vendor/k8s.io/client-go/kubernetes/doc.go | 20 + vendor/k8s.io/client-go/kubernetes/fake/BUILD | 89 + .../kubernetes/fake/clientset_generated.go | 269 + .../k8s.io/client-go/kubernetes/fake/doc.go | 20 + .../client-go/kubernetes/fake/register.go | 91 + .../k8s.io/client-go/kubernetes/scheme/BUILD | 43 + .../k8s.io/client-go/kubernetes/scheme/doc.go | 20 + .../client-go/kubernetes/scheme/register.go | 91 + .../admissionregistration/v1alpha1/BUILD | 29 + .../v1alpha1/admissionregistration_client.go | 93 + .../admissionregistration/v1alpha1/doc.go | 20 + .../externaladmissionhookconfiguration.go | 145 + .../admissionregistration/v1alpha1/fake/BUILD | 30 + .../v1alpha1/fake/doc.go | 20 + .../fake/fake_admissionregistration_client.go | 42 + ...fake_externaladmissionhookconfiguration.go | 112 + .../fake/fake_initializerconfiguration.go | 112 + .../v1alpha1/generated_expansion.go | 21 + .../v1alpha1/initializerconfiguration.go | 145 + .../kubernetes/typed/apps/v1beta1/BUILD | 31 + .../typed/apps/v1beta1/apps_client.go | 103 + .../typed/apps/v1beta1/controllerrevision.go | 155 + .../typed/apps/v1beta1/deployment.go | 172 + .../kubernetes/typed/apps/v1beta1/doc.go | 20 + .../kubernetes/typed/apps/v1beta1/fake/BUILD | 32 + .../kubernetes/typed/apps/v1beta1/fake/doc.go | 20 + .../apps/v1beta1/fake/fake_apps_client.go | 50 + .../v1beta1/fake/fake_controllerrevision.go | 120 + .../apps/v1beta1/fake/fake_deployment.go | 130 + .../typed/apps/v1beta1/fake/fake_scale.go | 23 + .../apps/v1beta1/fake/fake_statefulset.go | 130 + .../typed/apps/v1beta1/generated_expansion.go | 25 + .../kubernetes/typed/apps/v1beta1/scale.go | 46 + .../typed/apps/v1beta1/statefulset.go | 172 + .../kubernetes/typed/authentication/v1/BUILD | 26 + .../v1/authentication_client.go | 88 + .../kubernetes/typed/authentication/v1/doc.go | 20 + .../typed/authentication/v1/fake/BUILD | 25 + .../typed/authentication/v1/fake/doc.go | 20 + .../v1/fake/fake_authentication_client.go | 38 + .../v1/fake/fake_tokenreview.go | 22 + .../v1/fake/fake_tokenreview_expansion.go | 27 + .../authentication/v1/generated_expansion.go | 17 + .../typed/authentication/v1/tokenreview.go | 44 + .../v1/tokenreview_expansion.go | 35 + .../typed/authentication/v1beta1/BUILD | 26 + .../v1beta1/authentication_client.go | 88 + .../typed/authentication/v1beta1/doc.go | 20 + .../typed/authentication/v1beta1/fake/BUILD | 25 + .../typed/authentication/v1beta1/fake/doc.go | 20 + .../fake/fake_authentication_client.go | 38 + .../v1beta1/fake/fake_tokenreview.go | 22 + .../fake/fake_tokenreview_expansion.go | 27 + .../v1beta1/generated_expansion.go | 17 + .../authentication/v1beta1/tokenreview.go | 44 + .../v1beta1/tokenreview_expansion.go | 35 + .../kubernetes/typed/authorization/v1/BUILD | 30 + .../authorization/v1/authorization_client.go | 98 + .../kubernetes/typed/authorization/v1/doc.go | 20 + .../typed/authorization/v1/fake/BUILD | 29 + .../typed/authorization/v1/fake/doc.go | 20 + .../v1/fake/fake_authorization_client.go | 46 + .../v1/fake/fake_localsubjectaccessreview.go | 23 + ...fake_localsubjectaccessreview_expansion.go | 27 + .../v1/fake/fake_selfsubjectaccessreview.go | 22 + .../fake_selfsubjectaccessreview_expansion.go | 27 + .../v1/fake/fake_subjectaccessreview.go | 22 + .../fake_subjectaccessreview_expansion.go | 27 + .../authorization/v1/generated_expansion.go | 17 + .../v1/localsubjectaccessreview.go | 46 + .../v1/localsubjectaccessreview_expansion.go | 36 + .../v1/selfsubjectaccessreview.go | 44 + .../v1/selfsubjectaccessreview_expansion.go | 35 + .../authorization/v1/subjectaccessreview.go | 44 + .../v1/subjectaccessreview_expansion.go | 36 + .../typed/authorization/v1beta1/BUILD | 30 + .../v1beta1/authorization_client.go | 98 + .../typed/authorization/v1beta1/doc.go | 20 + .../typed/authorization/v1beta1/fake/BUILD | 30 + .../typed/authorization/v1beta1/fake/doc.go | 20 + .../v1beta1/fake/fake_authorization_client.go | 46 + .../v1beta1/fake/fake_generated_expansion.go | 17 + .../fake/fake_localsubjectaccessreview.go | 23 + ...fake_localsubjectaccessreview_expansion.go | 27 + .../fake/fake_selfsubjectaccessreview.go | 22 + .../fake_selfsubjectaccessreview_expansion.go | 27 + .../v1beta1/fake/fake_subjectaccessreview.go | 22 + .../fake_subjectaccessreview_expansion.go | 27 + .../v1beta1/generated_expansion.go | 17 + .../v1beta1/localsubjectaccessreview.go | 46 + .../localsubjectaccessreview_expansion.go | 36 + .../v1beta1/selfsubjectaccessreview.go | 44 + .../selfsubjectaccessreview_expansion.go | 35 + .../v1beta1/subjectaccessreview.go | 44 + .../v1beta1/subjectaccessreview_expansion.go | 36 + .../kubernetes/typed/autoscaling/v1/BUILD | 28 + .../autoscaling/v1/autoscaling_client.go | 88 + .../kubernetes/typed/autoscaling/v1/doc.go | 20 + .../typed/autoscaling/v1/fake/BUILD | 29 + .../typed/autoscaling/v1/fake/doc.go | 20 + .../v1/fake/fake_autoscaling_client.go | 38 + .../v1/fake/fake_horizontalpodautoscaler.go | 130 + .../autoscaling/v1/generated_expansion.go | 19 + .../autoscaling/v1/horizontalpodautoscaler.go | 172 + .../typed/autoscaling/v2alpha1/BUILD | 28 + .../v2alpha1/autoscaling_client.go | 88 + .../typed/autoscaling/v2alpha1/doc.go | 20 + .../typed/autoscaling/v2alpha1/fake/BUILD | 29 + .../typed/autoscaling/v2alpha1/fake/doc.go | 20 + .../v2alpha1/fake/fake_autoscaling_client.go | 38 + .../fake/fake_horizontalpodautoscaler.go | 130 + .../v2alpha1/generated_expansion.go | 19 + .../v2alpha1/horizontalpodautoscaler.go | 172 + .../client-go/kubernetes/typed/batch/v1/BUILD | 28 + .../kubernetes/typed/batch/v1/batch_client.go | 88 + .../kubernetes/typed/batch/v1/doc.go | 20 + .../kubernetes/typed/batch/v1/fake/BUILD | 29 + .../kubernetes/typed/batch/v1/fake/doc.go | 20 + .../typed/batch/v1/fake/fake_batch_client.go | 38 + .../typed/batch/v1/fake/fake_job.go | 130 + .../typed/batch/v1/generated_expansion.go | 19 + .../kubernetes/typed/batch/v1/job.go | 172 + .../kubernetes/typed/batch/v2alpha1/BUILD | 28 + .../typed/batch/v2alpha1/batch_client.go | 88 + .../typed/batch/v2alpha1/cronjob.go | 172 + .../kubernetes/typed/batch/v2alpha1/doc.go | 20 + .../typed/batch/v2alpha1/fake/BUILD | 29 + .../typed/batch/v2alpha1/fake/doc.go | 20 + .../batch/v2alpha1/fake/fake_batch_client.go | 38 + .../typed/batch/v2alpha1/fake/fake_cronjob.go | 130 + .../batch/v2alpha1/generated_expansion.go | 19 + .../typed/certificates/v1beta1/BUILD | 29 + .../v1beta1/certificates_client.go | 88 + .../v1beta1/certificatesigningrequest.go | 161 + .../certificatesigningrequest_expansion.go | 37 + .../typed/certificates/v1beta1/doc.go | 20 + .../typed/certificates/v1beta1/fake/BUILD | 30 + .../typed/certificates/v1beta1/fake/doc.go | 20 + .../v1beta1/fake/fake_certificates_client.go | 38 + .../fake/fake_certificatesigningrequest.go | 121 + ...ake_certificatesigningrequest_expansion.go | 31 + .../v1beta1/generated_expansion.go | 17 + .../client-go/kubernetes/typed/core/v1/BUILD | 53 + .../typed/core/v1/componentstatus.go | 145 + .../kubernetes/typed/core/v1/configmap.go | 155 + .../kubernetes/typed/core/v1/core_client.go | 163 + .../client-go/kubernetes/typed/core/v1/doc.go | 20 + .../kubernetes/typed/core/v1/endpoints.go | 155 + .../kubernetes/typed/core/v1/event.go | 155 + .../typed/core/v1/event_expansion.go | 164 + .../kubernetes/typed/core/v1/fake/BUILD | 52 + .../kubernetes/typed/core/v1/fake/doc.go | 20 + .../core/v1/fake/fake_componentstatus.go | 112 + .../typed/core/v1/fake/fake_configmap.go | 120 + .../typed/core/v1/fake/fake_core_client.go | 98 + .../typed/core/v1/fake/fake_endpoints.go | 120 + .../typed/core/v1/fake/fake_event.go | 120 + .../core/v1/fake/fake_event_expansion.go | 89 + .../typed/core/v1/fake/fake_limitrange.go | 120 + .../typed/core/v1/fake/fake_namespace.go | 121 + .../core/v1/fake/fake_namespace_expansion.go | 37 + .../typed/core/v1/fake/fake_node.go | 121 + .../typed/core/v1/fake/fake_node_expansion.go | 32 + .../core/v1/fake/fake_persistentvolume.go | 121 + .../v1/fake/fake_persistentvolumeclaim.go | 130 + .../kubernetes/typed/core/v1/fake/fake_pod.go | 130 + .../typed/core/v1/fake/fake_pod_expansion.go | 58 + .../typed/core/v1/fake/fake_podtemplate.go | 120 + .../v1/fake/fake_replicationcontroller.go | 130 + .../typed/core/v1/fake/fake_resourcequota.go | 130 + .../typed/core/v1/fake/fake_secret.go | 120 + .../typed/core/v1/fake/fake_service.go | 130 + .../core/v1/fake/fake_service_expansion.go | 26 + .../typed/core/v1/fake/fake_serviceaccount.go | 120 + .../typed/core/v1/generated_expansion.go | 39 + .../kubernetes/typed/core/v1/limitrange.go | 155 + .../kubernetes/typed/core/v1/namespace.go | 161 + .../typed/core/v1/namespace_expansion.go | 31 + .../kubernetes/typed/core/v1/node.go | 161 + .../typed/core/v1/node_expansion.go | 43 + .../typed/core/v1/persistentvolume.go | 161 + .../typed/core/v1/persistentvolumeclaim.go | 172 + .../client-go/kubernetes/typed/core/v1/pod.go | 172 + .../kubernetes/typed/core/v1/pod_expansion.go | 45 + .../kubernetes/typed/core/v1/podtemplate.go | 155 + .../typed/core/v1/replicationcontroller.go | 172 + .../kubernetes/typed/core/v1/resourcequota.go | 172 + .../kubernetes/typed/core/v1/secret.go | 155 + .../kubernetes/typed/core/v1/service.go | 172 + .../typed/core/v1/service_expansion.go | 41 + .../typed/core/v1/serviceaccount.go | 155 + .../kubernetes/typed/extensions/v1beta1/BUILD | 38 + .../typed/extensions/v1beta1/daemonset.go | 172 + .../typed/extensions/v1beta1/deployment.go | 172 + .../v1beta1/deployment_expansion.go | 29 + .../typed/extensions/v1beta1/doc.go | 20 + .../extensions/v1beta1/extensions_client.go | 118 + .../typed/extensions/v1beta1/fake/BUILD | 37 + .../typed/extensions/v1beta1/fake/doc.go | 20 + .../extensions/v1beta1/fake/fake_daemonset.go | 130 + .../v1beta1/fake/fake_deployment.go | 130 + .../v1beta1/fake/fake_deployment_expansion.go | 33 + .../v1beta1/fake/fake_extensions_client.go | 62 + .../extensions/v1beta1/fake/fake_ingress.go | 130 + .../v1beta1/fake/fake_podsecuritypolicy.go | 112 + .../v1beta1/fake/fake_replicaset.go | 130 + .../extensions/v1beta1/fake/fake_scale.go | 23 + .../v1beta1/fake/fake_scale_expansion.go | 47 + .../v1beta1/fake/fake_thirdpartyresource.go | 112 + .../extensions/v1beta1/generated_expansion.go | 27 + .../typed/extensions/v1beta1/ingress.go | 172 + .../extensions/v1beta1/podsecuritypolicy.go | 145 + .../typed/extensions/v1beta1/replicaset.go | 172 + .../typed/extensions/v1beta1/scale.go | 46 + .../extensions/v1beta1/scale_expansion.go | 65 + .../extensions/v1beta1/thirdpartyresource.go | 145 + .../kubernetes/typed/networking/v1/BUILD | 28 + .../kubernetes/typed/networking/v1/doc.go | 20 + .../kubernetes/typed/networking/v1/fake/BUILD | 29 + .../typed/networking/v1/fake/doc.go | 20 + .../v1/fake/fake_networking_client.go | 38 + .../networking/v1/fake/fake_networkpolicy.go | 120 + .../networking/v1/generated_expansion.go | 19 + .../typed/networking/v1/networking_client.go | 88 + .../typed/networking/v1/networkpolicy.go | 155 + .../kubernetes/typed/policy/v1beta1/BUILD | 30 + .../kubernetes/typed/policy/v1beta1/doc.go | 20 + .../typed/policy/v1beta1/eviction.go | 46 + .../policy/v1beta1/eviction_expansion.go | 38 + .../typed/policy/v1beta1/fake/BUILD | 31 + .../typed/policy/v1beta1/fake/doc.go | 20 + .../policy/v1beta1/fake/fake_eviction.go | 23 + .../v1beta1/fake/fake_eviction_expansion.go | 33 + .../v1beta1/fake/fake_poddisruptionbudget.go | 130 + .../policy/v1beta1/fake/fake_policy_client.go | 42 + .../policy/v1beta1/generated_expansion.go | 19 + .../policy/v1beta1/poddisruptionbudget.go | 172 + .../typed/policy/v1beta1/policy_client.go | 93 + .../kubernetes/typed/rbac/v1alpha1/BUILD | 31 + .../typed/rbac/v1alpha1/clusterrole.go | 145 + .../typed/rbac/v1alpha1/clusterrolebinding.go | 145 + .../kubernetes/typed/rbac/v1alpha1/doc.go | 20 + .../kubernetes/typed/rbac/v1alpha1/fake/BUILD | 32 + .../typed/rbac/v1alpha1/fake/doc.go | 20 + .../rbac/v1alpha1/fake/fake_clusterrole.go | 112 + .../v1alpha1/fake/fake_clusterrolebinding.go | 112 + .../rbac/v1alpha1/fake/fake_rbac_client.go | 50 + .../typed/rbac/v1alpha1/fake/fake_role.go | 120 + .../rbac/v1alpha1/fake/fake_rolebinding.go | 120 + .../rbac/v1alpha1/generated_expansion.go | 25 + .../typed/rbac/v1alpha1/rbac_client.go | 103 + .../kubernetes/typed/rbac/v1alpha1/role.go | 155 + .../typed/rbac/v1alpha1/rolebinding.go | 155 + .../kubernetes/typed/rbac/v1beta1/BUILD | 31 + .../typed/rbac/v1beta1/clusterrole.go | 145 + .../typed/rbac/v1beta1/clusterrolebinding.go | 145 + .../kubernetes/typed/rbac/v1beta1/doc.go | 20 + .../kubernetes/typed/rbac/v1beta1/fake/BUILD | 32 + .../kubernetes/typed/rbac/v1beta1/fake/doc.go | 20 + .../rbac/v1beta1/fake/fake_clusterrole.go | 112 + .../v1beta1/fake/fake_clusterrolebinding.go | 112 + .../rbac/v1beta1/fake/fake_rbac_client.go | 50 + .../typed/rbac/v1beta1/fake/fake_role.go | 120 + .../rbac/v1beta1/fake/fake_rolebinding.go | 120 + .../typed/rbac/v1beta1/generated_expansion.go | 25 + .../typed/rbac/v1beta1/rbac_client.go | 103 + .../kubernetes/typed/rbac/v1beta1/role.go | 155 + .../typed/rbac/v1beta1/rolebinding.go | 155 + .../kubernetes/typed/settings/v1alpha1/BUILD | 28 + .../kubernetes/typed/settings/v1alpha1/doc.go | 20 + .../typed/settings/v1alpha1/fake/BUILD | 29 + .../typed/settings/v1alpha1/fake/doc.go | 20 + .../settings/v1alpha1/fake/fake_podpreset.go | 120 + .../v1alpha1/fake/fake_settings_client.go | 38 + .../settings/v1alpha1/generated_expansion.go | 19 + .../typed/settings/v1alpha1/podpreset.go | 155 + .../settings/v1alpha1/settings_client.go | 88 + .../kubernetes/typed/storage/v1/BUILD | 28 + .../kubernetes/typed/storage/v1/doc.go | 20 + .../kubernetes/typed/storage/v1/fake/BUILD | 29 + .../kubernetes/typed/storage/v1/fake/doc.go | 20 + .../storage/v1/fake/fake_storage_client.go | 38 + .../storage/v1/fake/fake_storageclass.go | 112 + .../typed/storage/v1/generated_expansion.go | 19 + .../typed/storage/v1/storage_client.go | 88 + .../typed/storage/v1/storageclass.go | 145 + .../kubernetes/typed/storage/v1beta1/BUILD | 28 + .../kubernetes/typed/storage/v1beta1/doc.go | 20 + .../typed/storage/v1beta1/fake/BUILD | 29 + .../typed/storage/v1beta1/fake/doc.go | 20 + .../v1beta1/fake/fake_storage_client.go | 38 + .../storage/v1beta1/fake/fake_storageclass.go | 112 + .../storage/v1beta1/generated_expansion.go | 19 + .../typed/storage/v1beta1/storage_client.go | 88 + .../typed/storage/v1beta1/storageclass.go | 145 + .../admissionregistration/v1alpha1/BUILD | 25 + .../v1alpha1/expansion_generated.go | 27 + .../externaladmissionhookconfiguration.go | 67 + .../v1alpha1/initializerconfiguration.go | 67 + .../client-go/listers/apps/v1beta1/BUILD | 29 + .../apps/v1beta1/controllerrevision.go | 94 + .../listers/apps/v1beta1/deployment.go | 94 + .../apps/v1beta1/expansion_generated.go | 43 + .../client-go/listers/apps/v1beta1/scale.go | 94 + .../listers/apps/v1beta1/statefulset.go | 94 + .../apps/v1beta1/statefulset_expansion.go | 77 + .../client-go/listers/autoscaling/v1/BUILD | 23 + .../autoscaling/v1/expansion_generated.go | 27 + .../autoscaling/v1/horizontalpodautoscaler.go | 94 + .../listers/autoscaling/v2alpha1/BUILD | 23 + .../v2alpha1/expansion_generated.go | 27 + .../v2alpha1/horizontalpodautoscaler.go | 94 + .../k8s.io/client-go/listers/batch/v1/BUILD | 26 + .../listers/batch/v1/expansion_generated.go | 19 + .../k8s.io/client-go/listers/batch/v1/job.go | 94 + .../listers/batch/v1/job_expansion.go | 68 + .../client-go/listers/batch/v2alpha1/BUILD | 23 + .../listers/batch/v2alpha1/cronjob.go | 94 + .../batch/v2alpha1/expansion_generated.go | 27 + .../listers/certificates/v1beta1/BUILD | 24 + .../v1beta1/certificatesigningrequest.go | 67 + .../v1beta1/expansion_generated.go | 23 + vendor/k8s.io/client-go/listers/core/v1/BUILD | 42 + .../listers/core/v1/componentstatus.go | 67 + .../client-go/listers/core/v1/configmap.go | 94 + .../client-go/listers/core/v1/endpoints.go | 94 + .../k8s.io/client-go/listers/core/v1/event.go | 94 + .../listers/core/v1/expansion_generated.go | 111 + .../client-go/listers/core/v1/limitrange.go | 94 + .../client-go/listers/core/v1/namespace.go | 67 + .../k8s.io/client-go/listers/core/v1/node.go | 67 + .../listers/core/v1/node_expansion.go | 48 + .../listers/core/v1/persistentvolume.go | 67 + .../listers/core/v1/persistentvolumeclaim.go | 94 + .../k8s.io/client-go/listers/core/v1/pod.go | 94 + .../client-go/listers/core/v1/podtemplate.go | 94 + .../listers/core/v1/replicationcontroller.go | 94 + .../v1/replicationcontroller_expansion.go | 66 + .../listers/core/v1/resourcequota.go | 94 + .../client-go/listers/core/v1/secret.go | 94 + .../client-go/listers/core/v1/service.go | 94 + .../listers/core/v1/service_expansion.go | 56 + .../listers/core/v1/serviceaccount.go | 94 + .../listers/extensions/v1beta1/BUILD | 35 + .../listers/extensions/v1beta1/daemonset.go | 94 + .../extensions/v1beta1/daemonset_expansion.go | 114 + .../listers/extensions/v1beta1/deployment.go | 94 + .../v1beta1/deployment_expansion.go | 70 + .../extensions/v1beta1/expansion_generated.go | 43 + .../listers/extensions/v1beta1/ingress.go | 94 + .../extensions/v1beta1/podsecuritypolicy.go | 67 + .../listers/extensions/v1beta1/replicaset.go | 94 + .../v1beta1/replicaset_expansion.go | 73 + .../listers/extensions/v1beta1/scale.go | 94 + .../extensions/v1beta1/thirdpartyresource.go | 67 + .../client-go/listers/networking/v1/BUILD | 23 + .../networking/v1/expansion_generated.go | 27 + .../listers/networking/v1/networkpolicy.go | 94 + .../client-go/listers/policy/v1beta1/BUILD | 28 + .../listers/policy/v1beta1/eviction.go | 94 + .../policy/v1beta1/expansion_generated.go | 27 + .../policy/v1beta1/poddisruptionbudget.go | 94 + .../v1beta1/poddisruptionbudget_expansion.go | 74 + .../client-go/listers/rbac/v1alpha1/BUILD | 27 + .../listers/rbac/v1alpha1/clusterrole.go | 67 + .../rbac/v1alpha1/clusterrolebinding.go | 67 + .../rbac/v1alpha1/expansion_generated.go | 43 + .../client-go/listers/rbac/v1alpha1/role.go | 94 + .../listers/rbac/v1alpha1/rolebinding.go | 94 + .../client-go/listers/rbac/v1beta1/BUILD | 27 + .../listers/rbac/v1beta1/clusterrole.go | 67 + .../rbac/v1beta1/clusterrolebinding.go | 67 + .../rbac/v1beta1/expansion_generated.go | 43 + .../client-go/listers/rbac/v1beta1/role.go | 94 + .../listers/rbac/v1beta1/rolebinding.go | 94 + .../client-go/listers/settings/v1alpha1/BUILD | 23 + .../settings/v1alpha1/expansion_generated.go | 27 + .../listers/settings/v1alpha1/podpreset.go | 94 + .../k8s.io/client-go/listers/storage/v1/BUILD | 24 + .../listers/storage/v1/expansion_generated.go | 23 + .../listers/storage/v1/storageclass.go | 67 + .../client-go/listers/storage/v1beta1/BUILD | 24 + .../storage/v1beta1/expansion_generated.go | 23 + .../listers/storage/v1beta1/storageclass.go | 67 + vendor/k8s.io/client-go/pkg/api/BUILD | 40 + vendor/k8s.io/client-go/pkg/api/OWNERS | 44 + .../pkg/api/annotation_key_constants.go | 113 + vendor/k8s.io/client-go/pkg/api/doc.go | 22 + .../client-go/pkg/api/field_constants.go | 38 + vendor/k8s.io/client-go/pkg/api/helper/BUILD | 37 + .../client-go/pkg/api/helper/helpers.go | 604 + .../client-go/pkg/api/helper/helpers_test.go | 355 + .../k8s.io/client-go/pkg/api/helper/qos/BUILD | 19 + .../client-go/pkg/api/helper/qos/qos.go | 94 + vendor/k8s.io/client-go/pkg/api/install/BUILD | 22 + .../k8s.io/client-go/pkg/api/install/OWNERS | 10 + .../client-go/pkg/api/install/install.go | 70 + vendor/k8s.io/client-go/pkg/api/json.go | 28 + .../client-go/pkg/api/objectreference.go | 34 + vendor/k8s.io/client-go/pkg/api/register.go | 123 + vendor/k8s.io/client-go/pkg/api/resource.go | 62 + vendor/k8s.io/client-go/pkg/api/taint.go | 36 + vendor/k8s.io/client-go/pkg/api/toleration.go | 30 + vendor/k8s.io/client-go/pkg/api/types.go | 3989 + vendor/k8s.io/client-go/pkg/api/v1/BUILD | 51 + vendor/k8s.io/client-go/pkg/api/v1/OWNERS | 41 + .../pkg/api/v1/annotation_key_constants.go | 113 + .../k8s.io/client-go/pkg/api/v1/conversion.go | 776 + .../k8s.io/client-go/pkg/api/v1/defaults.go | 373 + vendor/k8s.io/client-go/pkg/api/v1/doc.go | 18 + .../k8s.io/client-go/pkg/api/v1/generate.go | 64 + .../client-go/pkg/api/v1/generated.pb.go | 45110 +++++++++ .../client-go/pkg/api/v1/generated.proto | 4117 + vendor/k8s.io/client-go/pkg/api/v1/meta.go | 108 + vendor/k8s.io/client-go/pkg/api/v1/node/BUILD | 15 + .../k8s.io/client-go/pkg/api/v1/node/util.go | 47 + .../client-go/pkg/api/v1/objectreference.go | 33 + vendor/k8s.io/client-go/pkg/api/v1/ref/BUILD | 19 + vendor/k8s.io/client-go/pkg/api/v1/ref/ref.go | 121 + .../k8s.io/client-go/pkg/api/v1/register.go | 106 + .../k8s.io/client-go/pkg/api/v1/resource.go | 63 + .../client-go/pkg/api/v1/resource/BUILD | 31 + .../client-go/pkg/api/v1/resource/helpers.go | 203 + .../pkg/api/v1/resource/helpers_test.go | 182 + vendor/k8s.io/client-go/pkg/api/v1/taint.go | 33 + .../k8s.io/client-go/pkg/api/v1/toleration.go | 56 + .../client-go/pkg/api/v1/types.generated.go | 76734 ++++++++++++++++ vendor/k8s.io/client-go/pkg/api/v1/types.go | 4617 + .../pkg/api/v1/types_swagger_doc_generated.go | 2039 + .../pkg/api/v1/zz_generated.conversion.go | 5168 ++ .../pkg/api/v1/zz_generated.deepcopy.go | 3770 + .../pkg/api/v1/zz_generated.defaults.go | 631 + .../pkg/api/zz_generated.deepcopy.go | 3776 + .../pkg/apis/admissionregistration/BUILD | 25 + .../pkg/apis/admissionregistration/doc.go | 22 + .../apis/admissionregistration/register.go | 53 + .../pkg/apis/admissionregistration/types.go | 216 + .../apis/admissionregistration/v1alpha1/BUILD | 35 + .../v1alpha1/defaults.go | 39 + .../admissionregistration/v1alpha1/doc.go | 22 + .../v1alpha1/generated.pb.go | 2228 + .../v1alpha1/generated.proto | 203 + .../v1alpha1/register.go | 60 + .../v1alpha1/types.generated.go | 4232 + .../admissionregistration/v1alpha1/types.go | 220 + .../v1alpha1/types_swagger_doc_generated.go | 133 + .../v1alpha1/zz_generated.conversion.go | 311 + .../v1alpha1/zz_generated.deepcopy.go | 254 + .../v1alpha1/zz_generated.defaults.go | 70 + .../zz_generated.deepcopy.go | 254 + vendor/k8s.io/client-go/pkg/apis/apps/BUILD | 27 + vendor/k8s.io/client-go/pkg/apis/apps/OWNERS | 21 + vendor/k8s.io/client-go/pkg/apis/apps/doc.go | 17 + .../client-go/pkg/apis/apps/install/BUILD | 22 + .../pkg/apis/apps/install/install.go | 49 + .../client-go/pkg/apis/apps/register.go | 60 + .../k8s.io/client-go/pkg/apis/apps/types.go | 229 + .../client-go/pkg/apis/apps/v1beta1/BUILD | 42 + .../pkg/apis/apps/v1beta1/conversion.go | 342 + .../pkg/apis/apps/v1beta1/defaults.go | 117 + .../client-go/pkg/apis/apps/v1beta1/doc.go | 17 + .../pkg/apis/apps/v1beta1/generated.pb.go | 4934 + .../pkg/apis/apps/v1beta1/generated.proto | 441 + .../pkg/apis/apps/v1beta1/register.go | 65 + .../pkg/apis/apps/v1beta1/types.generated.go | 8414 ++ .../client-go/pkg/apis/apps/v1beta1/types.go | 516 + .../v1beta1/types_swagger_doc_generated.go | 257 + .../apps/v1beta1/zz_generated.conversion.go | 322 + .../apps/v1beta1/zz_generated.deepcopy.go | 459 + .../apps/v1beta1/zz_generated.defaults.go | 326 + .../pkg/apis/apps/zz_generated.deepcopy.go | 208 + .../client-go/pkg/apis/authentication/BUILD | 25 + .../client-go/pkg/apis/authentication/OWNERS | 9 + .../client-go/pkg/apis/authentication/doc.go | 18 + .../pkg/apis/authentication/install/BUILD | 24 + .../apis/authentication/install/install.go | 53 + .../pkg/apis/authentication/register.go | 50 + .../pkg/apis/authentication/types.go | 89 + .../pkg/apis/authentication/v1/BUILD | 34 + .../pkg/apis/authentication/v1/conversion.go | 26 + .../pkg/apis/authentication/v1/defaults.go | 25 + .../pkg/apis/authentication/v1/doc.go | 18 + .../apis/authentication/v1/generated.pb.go | 1301 + .../apis/authentication/v1/generated.proto | 99 + .../pkg/apis/authentication/v1/register.go | 58 + .../pkg/apis/authentication/v1/types.go | 106 + .../v1/types_swagger_doc_generated.go | 72 + .../v1/zz_generated.conversion.go | 153 + .../v1/zz_generated.deepcopy.go | 110 + .../v1/zz_generated.defaults.go | 32 + .../pkg/apis/authentication/v1beta1/BUILD | 37 + .../apis/authentication/v1beta1/conversion.go | 26 + .../apis/authentication/v1beta1/defaults.go | 25 + .../pkg/apis/authentication/v1beta1/doc.go | 18 + .../authentication/v1beta1/generated.pb.go | 1302 + .../authentication/v1beta1/generated.proto | 99 + .../apis/authentication/v1beta1/register.go | 58 + .../authentication/v1beta1/types.generated.go | 1568 + .../pkg/apis/authentication/v1beta1/types.go | 91 + .../v1beta1/types_swagger_doc_generated.go | 72 + .../v1beta1/zz_generated.conversion.go | 153 + .../v1beta1/zz_generated.deepcopy.go | 110 + .../v1beta1/zz_generated.defaults.go | 32 + .../authentication/zz_generated.deepcopy.go | 110 + .../client-go/pkg/apis/authorization/BUILD | 25 + .../client-go/pkg/apis/authorization/OWNERS | 17 + .../client-go/pkg/apis/authorization/doc.go | 18 + .../pkg/apis/authorization/install/BUILD | 24 + .../pkg/apis/authorization/install/install.go | 53 + .../pkg/apis/authorization/register.go | 52 + .../client-go/pkg/apis/authorization/types.go | 146 + .../client-go/pkg/apis/authorization/v1/BUILD | 37 + .../pkg/apis/authorization/v1/conversion.go | 26 + .../pkg/apis/authorization/v1/defaults.go | 25 + .../pkg/apis/authorization/v1/doc.go | 18 + .../pkg/apis/authorization/v1/generated.pb.go | 2364 + .../pkg/apis/authorization/v1/generated.proto | 183 + .../pkg/apis/authorization/v1/register.go | 61 + .../apis/authorization/v1/types.generated.go | 3233 + .../pkg/apis/authorization/v1/types.go | 176 + .../v1/types_swagger_doc_generated.go | 119 + .../v1/zz_generated.conversion.go | 279 + .../authorization/v1/zz_generated.deepcopy.go | 187 + .../authorization/v1/zz_generated.defaults.go | 32 + .../pkg/apis/authorization/v1beta1/BUILD | 37 + .../apis/authorization/v1beta1/conversion.go | 26 + .../apis/authorization/v1beta1/defaults.go | 25 + .../pkg/apis/authorization/v1beta1/doc.go | 18 + .../authorization/v1beta1/generated.pb.go | 2364 + .../authorization/v1beta1/generated.proto | 183 + .../apis/authorization/v1beta1/register.go | 61 + .../authorization/v1beta1/types.generated.go | 3233 + .../pkg/apis/authorization/v1beta1/types.go | 176 + .../v1beta1/types_swagger_doc_generated.go | 119 + .../v1beta1/zz_generated.conversion.go | 279 + .../v1beta1/zz_generated.deepcopy.go | 187 + .../v1beta1/zz_generated.defaults.go | 32 + .../authorization/zz_generated.deepcopy.go | 187 + .../client-go/pkg/apis/autoscaling/BUILD | 28 + .../client-go/pkg/apis/autoscaling/OWNERS | 20 + .../pkg/apis/autoscaling/annotations.go | 34 + .../client-go/pkg/apis/autoscaling/doc.go | 17 + .../pkg/apis/autoscaling/install/BUILD | 23 + .../pkg/apis/autoscaling/install/install.go | 51 + .../pkg/apis/autoscaling/register.go | 53 + .../client-go/pkg/apis/autoscaling/types.go | 358 + .../client-go/pkg/apis/autoscaling/v1/BUILD | 39 + .../pkg/apis/autoscaling/v1/conversion.go | 275 + .../pkg/apis/autoscaling/v1/defaults.go | 35 + .../client-go/pkg/apis/autoscaling/v1/doc.go | 17 + .../pkg/apis/autoscaling/v1/generated.pb.go | 3787 + .../pkg/apis/autoscaling/v1/generated.proto | 321 + .../pkg/apis/autoscaling/v1/register.go | 60 + .../apis/autoscaling/v1/types.generated.go | 5633 ++ .../pkg/apis/autoscaling/v1/types.go | 332 + .../v1/types_swagger_doc_generated.go | 218 + .../autoscaling/v1/zz_generated.conversion.go | 506 + .../autoscaling/v1/zz_generated.deepcopy.go | 340 + .../autoscaling/v1/zz_generated.defaults.go | 47 + .../pkg/apis/autoscaling/v2alpha1/BUILD | 38 + .../pkg/apis/autoscaling/v2alpha1/defaults.go | 47 + .../pkg/apis/autoscaling/v2alpha1/doc.go | 17 + .../apis/autoscaling/v2alpha1/generated.pb.go | 3402 + .../apis/autoscaling/v2alpha1/generated.proto | 302 + .../pkg/apis/autoscaling/v2alpha1/register.go | 59 + .../autoscaling/v2alpha1/types.generated.go | 5218 ++ .../pkg/apis/autoscaling/v2alpha1/types.go | 309 + .../v2alpha1/types_swagger_doc_generated.go | 189 + .../v2alpha1/zz_generated.conversion.go | 449 + .../v2alpha1/zz_generated.deepcopy.go | 319 + .../v2alpha1/zz_generated.defaults.go | 47 + .../apis/autoscaling/zz_generated.deepcopy.go | 357 + vendor/k8s.io/client-go/pkg/apis/batch/BUILD | 26 + vendor/k8s.io/client-go/pkg/apis/batch/OWNERS | 19 + vendor/k8s.io/client-go/pkg/apis/batch/doc.go | 17 + .../client-go/pkg/apis/batch/install/BUILD | 23 + .../pkg/apis/batch/install/install.go | 51 + .../client-go/pkg/apis/batch/register.go | 57 + .../k8s.io/client-go/pkg/apis/batch/types.go | 285 + .../k8s.io/client-go/pkg/apis/batch/v1/BUILD | 40 + .../client-go/pkg/apis/batch/v1/conversion.go | 84 + .../client-go/pkg/apis/batch/v1/defaults.go | 44 + .../k8s.io/client-go/pkg/apis/batch/v1/doc.go | 17 + .../pkg/apis/batch/v1/generated.pb.go | 1585 + .../pkg/apis/batch/v1/generated.proto | 168 + .../client-go/pkg/apis/batch/v1/register.go | 59 + .../pkg/apis/batch/v1/types.generated.go | 2681 + .../client-go/pkg/apis/batch/v1/types.go | 168 + .../batch/v1/types_swagger_doc_generated.go | 93 + .../apis/batch/v1/zz_generated.conversion.go | 210 + .../apis/batch/v1/zz_generated.deepcopy.go | 167 + .../apis/batch/v1/zz_generated.defaults.go | 176 + .../client-go/pkg/apis/batch/v2alpha1/BUILD | 41 + .../pkg/apis/batch/v2alpha1/conversion.go | 44 + .../pkg/apis/batch/v2alpha1/defaults.go | 34 + .../client-go/pkg/apis/batch/v2alpha1/doc.go | 17 + .../pkg/apis/batch/v2alpha1/generated.pb.go | 1511 + .../pkg/apis/batch/v2alpha1/generated.proto | 133 + .../pkg/apis/batch/v2alpha1/register.go | 62 + .../apis/batch/v2alpha1/types.generated.go | 2525 + .../pkg/apis/batch/v2alpha1/types.go | 148 + .../v2alpha1/types_swagger_doc_generated.go | 96 + .../batch/v2alpha1/zz_generated.conversion.go | 239 + .../batch/v2alpha1/zz_generated.deepcopy.go | 176 + .../batch/v2alpha1/zz_generated.defaults.go | 310 + .../pkg/apis/batch/zz_generated.deepcopy.go | 302 + .../client-go/pkg/apis/certificates/BUILD | 26 + .../client-go/pkg/apis/certificates/OWNERS | 14 + .../client-go/pkg/apis/certificates/doc.go | 18 + .../pkg/apis/certificates/helpers.go | 38 + .../pkg/apis/certificates/install/BUILD | 23 + .../pkg/apis/certificates/install/install.go | 51 + .../pkg/apis/certificates/register.go | 52 + .../client-go/pkg/apis/certificates/types.go | 143 + .../pkg/apis/certificates/v1beta1/BUILD | 38 + .../apis/certificates/v1beta1/conversion.go | 38 + .../pkg/apis/certificates/v1beta1/defaults.go | 28 + .../pkg/apis/certificates/v1beta1/doc.go | 18 + .../apis/certificates/v1beta1/generated.pb.go | 1694 + .../apis/certificates/v1beta1/generated.proto | 122 + .../pkg/apis/certificates/v1beta1/helpers.go | 38 + .../pkg/apis/certificates/v1beta1/register.go | 66 + .../certificates/v1beta1/types.generated.go | 2624 + .../pkg/apis/certificates/v1beta1/types.go | 152 + .../v1beta1/types_swagger_doc_generated.go | 74 + .../v1beta1/zz_generated.conversion.go | 189 + .../v1beta1/zz_generated.deepcopy.go | 155 + .../v1beta1/zz_generated.defaults.go | 47 + .../certificates/zz_generated.deepcopy.go | 155 + .../client-go/pkg/apis/extensions/BUILD | 29 + .../client-go/pkg/apis/extensions/OWNERS | 41 + .../client-go/pkg/apis/extensions/doc.go | 17 + .../client-go/pkg/apis/extensions/helpers.go | 37 + .../pkg/apis/extensions/install/BUILD | 23 + .../pkg/apis/extensions/install/install.go | 51 + .../client-go/pkg/apis/extensions/register.go | 70 + .../client-go/pkg/apis/extensions/types.go | 1147 + .../pkg/apis/extensions/v1beta1/BUILD | 43 + .../pkg/apis/extensions/v1beta1/conversion.go | 428 + .../pkg/apis/extensions/v1beta1/defaults.go | 135 + .../pkg/apis/extensions/v1beta1/doc.go | 17 + .../apis/extensions/v1beta1/generated.pb.go | 12108 +++ .../apis/extensions/v1beta1/generated.proto | 1022 + .../pkg/apis/extensions/v1beta1/register.go | 77 + .../extensions/v1beta1/types.generated.go | 21979 +++++ .../pkg/apis/extensions/v1beta1/types.go | 1171 + .../v1beta1/types_swagger_doc_generated.go | 631 + .../v1beta1/zz_generated.conversion.go | 1714 + .../v1beta1/zz_generated.deepcopy.go | 1163 + .../v1beta1/zz_generated.defaults.go | 475 + .../apis/extensions/zz_generated.deepcopy.go | 1146 + .../client-go/pkg/apis/networking/BUILD | 27 + .../client-go/pkg/apis/networking/OWNERS | 4 + .../client-go/pkg/apis/networking/doc.go | 18 + .../client-go/pkg/apis/networking/register.go | 51 + .../client-go/pkg/apis/networking/types.go | 115 + .../client-go/pkg/apis/networking/v1/BUILD | 40 + .../pkg/apis/networking/v1/conversion.go | 195 + .../pkg/apis/networking/v1/defaults.go | 34 + .../client-go/pkg/apis/networking/v1/doc.go | 18 + .../pkg/apis/networking/v1/generated.pb.go | 1345 + .../pkg/apis/networking/v1/generated.proto | 127 + .../pkg/apis/networking/v1/register.go | 50 + .../pkg/apis/networking/v1/types.generated.go | 2322 + .../client-go/pkg/apis/networking/v1/types.go | 120 + .../v1/types_swagger_doc_generated.go | 90 + .../networking/v1/zz_generated.conversion.go | 195 + .../networking/v1/zz_generated.deepcopy.go | 182 + .../networking/v1/zz_generated.defaults.go | 51 + .../apis/networking/zz_generated.deepcopy.go | 182 + vendor/k8s.io/client-go/pkg/apis/policy/BUILD | 26 + .../k8s.io/client-go/pkg/apis/policy/OWNERS | 4 + .../k8s.io/client-go/pkg/apis/policy/doc.go | 17 + .../client-go/pkg/apis/policy/install/BUILD | 22 + .../pkg/apis/policy/install/install.go | 49 + .../client-go/pkg/apis/policy/register.go | 54 + .../k8s.io/client-go/pkg/apis/policy/types.go | 120 + .../client-go/pkg/apis/policy/v1beta1/BUILD | 36 + .../client-go/pkg/apis/policy/v1beta1/doc.go | 20 + .../pkg/apis/policy/v1beta1/generated.pb.go | 1454 + .../pkg/apis/policy/v1beta1/generated.proto | 114 + .../pkg/apis/policy/v1beta1/register.go | 61 + .../apis/policy/v1beta1/types.generated.go | 2305 + .../pkg/apis/policy/v1beta1/types.go | 111 + .../v1beta1/types_swagger_doc_generated.go | 83 + .../policy/v1beta1/zz_generated.conversion.go | 185 + .../policy/v1beta1/zz_generated.deepcopy.go | 153 + .../policy/v1beta1/zz_generated.defaults.go | 32 + .../pkg/apis/policy/zz_generated.deepcopy.go | 153 + vendor/k8s.io/client-go/pkg/apis/rbac/BUILD | 27 + vendor/k8s.io/client-go/pkg/apis/rbac/OWNERS | 17 + vendor/k8s.io/client-go/pkg/apis/rbac/doc.go | 18 + .../k8s.io/client-go/pkg/apis/rbac/helpers.go | 396 + .../client-go/pkg/apis/rbac/install/BUILD | 24 + .../pkg/apis/rbac/install/install.go | 53 + .../client-go/pkg/apis/rbac/register.go | 58 + .../k8s.io/client-go/pkg/apis/rbac/types.go | 188 + .../client-go/pkg/apis/rbac/v1alpha1/BUILD | 37 + .../pkg/apis/rbac/v1alpha1/conversion.go | 81 + .../pkg/apis/rbac/v1alpha1/defaults.go | 48 + .../client-go/pkg/apis/rbac/v1alpha1/doc.go | 18 + .../pkg/apis/rbac/v1alpha1/generated.pb.go | 2822 + .../pkg/apis/rbac/v1alpha1/generated.proto | 200 + .../pkg/apis/rbac/v1alpha1/helpers.go | 146 + .../pkg/apis/rbac/v1alpha1/register.go | 65 + .../pkg/apis/rbac/v1alpha1/types.generated.go | 4879 + .../client-go/pkg/apis/rbac/v1alpha1/types.go | 209 + .../v1alpha1/types_swagger_doc_generated.go | 148 + .../rbac/v1alpha1/zz_generated.conversion.go | 469 + .../rbac/v1alpha1/zz_generated.deepcopy.go | 269 + .../rbac/v1alpha1/zz_generated.defaults.go | 66 + .../client-go/pkg/apis/rbac/v1beta1/BUILD | 36 + .../pkg/apis/rbac/v1beta1/defaults.go | 48 + .../client-go/pkg/apis/rbac/v1beta1/doc.go | 18 + .../pkg/apis/rbac/v1beta1/generated.pb.go | 2821 + .../pkg/apis/rbac/v1beta1/generated.proto | 198 + .../pkg/apis/rbac/v1beta1/helpers.go | 146 + .../pkg/apis/rbac/v1beta1/register.go | 65 + .../pkg/apis/rbac/v1beta1/types.generated.go | 4879 + .../client-go/pkg/apis/rbac/v1beta1/types.go | 207 + .../v1beta1/types_swagger_doc_generated.go | 148 + .../rbac/v1beta1/zz_generated.conversion.go | 415 + .../rbac/v1beta1/zz_generated.deepcopy.go | 269 + .../rbac/v1beta1/zz_generated.defaults.go | 66 + .../pkg/apis/rbac/zz_generated.deepcopy.go | 269 + .../k8s.io/client-go/pkg/apis/settings/BUILD | 26 + .../k8s.io/client-go/pkg/apis/settings/doc.go | 18 + .../client-go/pkg/apis/settings/install/BUILD | 22 + .../pkg/apis/settings/install/install.go | 49 + .../client-go/pkg/apis/settings/register.go | 52 + .../client-go/pkg/apis/settings/types.go | 63 + .../pkg/apis/settings/v1alpha1/BUILD | 33 + .../pkg/apis/settings/v1alpha1/doc.go | 18 + .../apis/settings/v1alpha1/generated.pb.go | 929 + .../apis/settings/v1alpha1/generated.proto | 75 + .../pkg/apis/settings/v1alpha1/register.go | 59 + .../pkg/apis/settings/v1alpha1/types.go | 67 + .../v1alpha1/types_swagger_doc_generated.go | 61 + .../v1alpha1/zz_generated.conversion.go | 165 + .../v1alpha1/zz_generated.deepcopy.go | 127 + .../v1alpha1/zz_generated.defaults.go | 98 + .../apis/settings/zz_generated.deepcopy.go | 127 + .../k8s.io/client-go/pkg/apis/storage/BUILD | 25 + .../k8s.io/client-go/pkg/apis/storage/OWNERS | 3 + .../k8s.io/client-go/pkg/apis/storage/doc.go | 18 + .../client-go/pkg/apis/storage/install/BUILD | 24 + .../pkg/apis/storage/install/install.go | 53 + .../client-go/pkg/apis/storage/register.go | 51 + .../client-go/pkg/apis/storage/types.go | 60 + .../client-go/pkg/apis/storage/v1/BUILD | 32 + .../client-go/pkg/apis/storage/v1/doc.go | 18 + .../pkg/apis/storage/v1/generated.pb.go | 746 + .../pkg/apis/storage/v1/generated.proto | 62 + .../client-go/pkg/apis/storage/v1/register.go | 60 + .../client-go/pkg/apis/storage/v1/types.go | 57 + .../storage/v1/types_swagger_doc_generated.go | 51 + .../storage/v1/zz_generated.conversion.go | 93 + .../apis/storage/v1/zz_generated.deepcopy.go | 82 + .../apis/storage/v1/zz_generated.defaults.go | 32 + .../client-go/pkg/apis/storage/v1beta1/BUILD | 35 + .../client-go/pkg/apis/storage/v1beta1/doc.go | 18 + .../pkg/apis/storage/v1beta1/generated.pb.go | 747 + .../pkg/apis/storage/v1beta1/generated.proto | 62 + .../pkg/apis/storage/v1beta1/register.go | 60 + .../apis/storage/v1beta1/types.generated.go | 985 + .../pkg/apis/storage/v1beta1/types.go | 57 + .../v1beta1/types_swagger_doc_generated.go | 51 + .../v1beta1/zz_generated.conversion.go | 93 + .../storage/v1beta1/zz_generated.deepcopy.go | 82 + .../storage/v1beta1/zz_generated.defaults.go | 32 + .../pkg/apis/storage/zz_generated.deepcopy.go | 82 + vendor/k8s.io/client-go/pkg/util/BUILD | 19 + vendor/k8s.io/client-go/pkg/util/doc.go | 20 + .../k8s.io/client-go/pkg/util/parsers/BUILD | 15 + .../client-go/pkg/util/parsers/parsers.go | 54 + vendor/k8s.io/client-go/pkg/util/template.go | 48 + vendor/k8s.io/client-go/pkg/util/umask.go | 27 + .../client-go/pkg/util/umask_windows.go | 27 + vendor/k8s.io/client-go/pkg/util/util.go | 140 + .../client-go/pkg/version/.gitattributes | 1 + vendor/k8s.io/client-go/pkg/version/BUILD | 19 + vendor/k8s.io/client-go/pkg/version/base.go | 59 + vendor/k8s.io/client-go/pkg/version/def.bzl | 24 + vendor/k8s.io/client-go/pkg/version/doc.go | 19 + .../k8s.io/client-go/pkg/version/version.go | 42 + .../authenticator/token/oidc/testing/BUILD | 19 + .../token/oidc/testing/provider.go | 200 + .../client-go/plugin/pkg/client/auth/BUILD | 19 + .../plugin/pkg/client/auth/azure/BUILD | 30 + .../plugin/pkg/client/auth/azure/README.md | 48 + .../plugin/pkg/client/auth/azure/azure.go | 354 + .../pkg/client/auth/azure/azure_test.go | 133 + .../plugin/pkg/client/auth/gcp/BUILD | 32 + .../plugin/pkg/client/auth/gcp/OWNERS | 6 + .../plugin/pkg/client/auth/gcp/gcp.go | 308 + .../plugin/pkg/client/auth/gcp/gcp_test.go | 388 + .../plugin/pkg/client/auth/oidc/BUILD | 27 + .../plugin/pkg/client/auth/oidc/OWNERS | 4 + .../plugin/pkg/client/auth/oidc/oidc.go | 370 + .../plugin/pkg/client/auth/oidc/oidc_test.go | 138 + .../plugin/pkg/client/auth/plugins.go | 24 + vendor/k8s.io/client-go/rest/BUILD | 85 + vendor/k8s.io/client-go/rest/OWNERS | 24 + vendor/k8s.io/client-go/rest/client.go | 258 + vendor/k8s.io/client-go/rest/client_test.go | 343 + vendor/k8s.io/client-go/rest/config.go | 416 + vendor/k8s.io/client-go/rest/config_test.go | 272 + vendor/k8s.io/client-go/rest/fake/BUILD | 22 + vendor/k8s.io/client-go/rest/fake/fake.go | 126 + vendor/k8s.io/client-go/rest/plugin.go | 73 + vendor/k8s.io/client-go/rest/plugin_test.go | 311 + vendor/k8s.io/client-go/rest/request.go | 1250 + vendor/k8s.io/client-go/rest/request_test.go | 1742 + vendor/k8s.io/client-go/rest/transport.go | 99 + vendor/k8s.io/client-go/rest/url_utils.go | 90 + .../k8s.io/client-go/rest/url_utils_test.go | 61 + vendor/k8s.io/client-go/rest/urlbackoff.go | 107 + .../k8s.io/client-go/rest/urlbackoff_test.go | 79 + vendor/k8s.io/client-go/rest/versions.go | 88 + vendor/k8s.io/client-go/rest/watch/BUILD | 46 + vendor/k8s.io/client-go/rest/watch/decoder.go | 72 + .../client-go/rest/watch/decoder_test.go | 123 + vendor/k8s.io/client-go/rest/watch/encoder.go | 56 + .../client-go/rest/watch/encoder_test.go | 84 + vendor/k8s.io/client-go/testing/BUILD | 31 + vendor/k8s.io/client-go/testing/actions.go | 478 + vendor/k8s.io/client-go/testing/fake.go | 259 + vendor/k8s.io/client-go/testing/fixture.go | 464 + .../third_party/forked/golang/template/BUILD | 17 + .../forked/golang/template/exec.go | 94 + .../forked/golang/template/funcs.go | 599 + vendor/k8s.io/client-go/tools/auth/BUILD | 23 + .../k8s.io/client-go/tools/auth/clientauth.go | 125 + .../client-go/tools/auth/clientauth_test.go | 69 + vendor/k8s.io/client-go/tools/cache/BUILD | 84 + vendor/k8s.io/client-go/tools/cache/OWNERS | 41 + .../client-go/tools/cache/controller.go | 391 + .../client-go/tools/cache/controller_test.go | 405 + .../client-go/tools/cache/delta_fifo.go | 681 + .../client-go/tools/cache/delta_fifo_test.go | 533 + vendor/k8s.io/client-go/tools/cache/doc.go | 24 + .../client-go/tools/cache/expiration_cache.go | 208 + .../tools/cache/expiration_cache_fakes.go | 54 + .../tools/cache/expiration_cache_test.go | 189 + .../tools/cache/fake_custom_store.go | 102 + vendor/k8s.io/client-go/tools/cache/fifo.go | 358 + .../k8s.io/client-go/tools/cache/fifo_test.go | 280 + vendor/k8s.io/client-go/tools/cache/index.go | 87 + .../client-go/tools/cache/index_test.go | 137 + .../k8s.io/client-go/tools/cache/listers.go | 160 + .../k8s.io/client-go/tools/cache/listwatch.go | 162 + .../client-go/tools/cache/mutation_cache.go | 261 + .../tools/cache/mutation_detector.go | 135 + .../tools/cache/mutation_detector_test.go | 81 + .../tools/cache/processor_listener_test.go | 48 + .../k8s.io/client-go/tools/cache/reflector.go | 421 + .../client-go/tools/cache/reflector_test.go | 389 + .../client-go/tools/cache/shared_informer.go | 581 + .../tools/cache/shared_informer_test.go | 253 + vendor/k8s.io/client-go/tools/cache/store.go | 244 + .../client-go/tools/cache/store_test.go | 156 + .../client-go/tools/cache/testing/BUILD | 36 + .../cache/testing/fake_controller_source.go | 264 + .../testing/fake_controller_source_test.go | 95 + .../tools/cache/thread_safe_store.go | 306 + .../client-go/tools/cache/undelta_store.go | 83 + .../tools/cache/undelta_store_test.go | 131 + vendor/k8s.io/client-go/tools/clientcmd/BUILD | 62 + .../client-go/tools/clientcmd/api/BUILD | 34 + .../client-go/tools/clientcmd/api/helpers.go | 183 + .../tools/clientcmd/api/helpers_test.go | 301 + .../tools/clientcmd/api/latest/BUILD | 22 + .../tools/clientcmd/api/latest/latest.go | 66 + .../client-go/tools/clientcmd/api/register.go | 46 + .../client-go/tools/clientcmd/api/types.go | 185 + .../tools/clientcmd/api/types_test.go | 135 + .../client-go/tools/clientcmd/api/v1/BUILD | 24 + .../tools/clientcmd/api/v1/conversion.go | 227 + .../tools/clientcmd/api/v1/register.go | 56 + .../client-go/tools/clientcmd/api/v1/types.go | 170 + .../client-go/tools/clientcmd/auth_loaders.go | 106 + .../tools/clientcmd/client_config.go | 549 + .../tools/clientcmd/client_config_test.go | 528 + .../client-go/tools/clientcmd/config.go | 472 + .../k8s.io/client-go/tools/clientcmd/doc.go | 37 + .../client-go/tools/clientcmd/helpers.go | 35 + .../client-go/tools/clientcmd/loader.go | 612 + .../client-go/tools/clientcmd/loader_test.go | 579 + .../tools/clientcmd/merged_client_builder.go | 169 + .../clientcmd/merged_client_builder_test.go | 328 + .../client-go/tools/clientcmd/overrides.go | 226 + .../client-go/tools/clientcmd/validation.go | 275 + .../tools/clientcmd/validation_test.go | 445 + vendor/k8s.io/client-go/tools/metrics/BUILD | 14 + vendor/k8s.io/client-go/tools/metrics/OWNERS | 7 + .../k8s.io/client-go/tools/metrics/metrics.go | 61 + .../k8s.io/client-go/tools/portforward/BUILD | 31 + .../k8s.io/client-go/tools/portforward/doc.go | 19 + .../tools/portforward/portforward.go | 342 + .../tools/portforward/portforward_test.go | 194 + vendor/k8s.io/client-go/tools/record/BUILD | 57 + vendor/k8s.io/client-go/tools/record/OWNERS | 27 + vendor/k8s.io/client-go/tools/record/doc.go | 18 + vendor/k8s.io/client-go/tools/record/event.go | 318 + .../client-go/tools/record/event_test.go | 915 + .../client-go/tools/record/events_cache.go | 377 + .../tools/record/events_cache_test.go | 265 + vendor/k8s.io/client-go/tools/record/fake.go | 54 + .../client-go/tools/remotecommand/BUILD | 51 + .../client-go/tools/remotecommand/doc.go | 20 + .../tools/remotecommand/errorstream.go | 55 + .../tools/remotecommand/remotecommand.go | 178 + .../client-go/tools/remotecommand/resize.go | 33 + .../client-go/tools/remotecommand/v1.go | 160 + .../client-go/tools/remotecommand/v2.go | 195 + .../client-go/tools/remotecommand/v2_test.go | 228 + .../client-go/tools/remotecommand/v3.go | 111 + .../client-go/tools/remotecommand/v4.go | 119 + .../client-go/tools/remotecommand/v4_test.go | 71 + vendor/k8s.io/client-go/transport/BUILD | 35 + vendor/k8s.io/client-go/transport/OWNERS | 7 + vendor/k8s.io/client-go/transport/cache.go | 88 + .../k8s.io/client-go/transport/cache_test.go | 114 + vendor/k8s.io/client-go/transport/config.go | 95 + .../client-go/transport/round_trippers.go | 424 + .../transport/round_trippers_test.go | 218 + .../k8s.io/client-go/transport/transport.go | 141 + .../client-go/transport/transport_test.go | 204 + vendor/k8s.io/client-go/util/cert/BUILD | 30 + vendor/k8s.io/client-go/util/cert/cert.go | 215 + vendor/k8s.io/client-go/util/cert/csr.go | 75 + vendor/k8s.io/client-go/util/cert/csr_test.go | 75 + vendor/k8s.io/client-go/util/cert/io.go | 150 + vendor/k8s.io/client-go/util/cert/pem.go | 138 + .../k8s.io/client-go/util/cert/triple/BUILD | 15 + .../client-go/util/cert/triple/triple.go | 116 + vendor/k8s.io/client-go/util/exec/BUILD | 14 + vendor/k8s.io/client-go/util/exec/exec.go | 52 + .../k8s.io/client-go/util/flowcontrol/BUILD | 34 + .../client-go/util/flowcontrol/backoff.go | 149 + .../util/flowcontrol/backoff_test.go | 195 + .../client-go/util/flowcontrol/throttle.go | 148 + .../util/flowcontrol/throttle_test.go | 177 + vendor/k8s.io/client-go/util/homedir/BUILD | 14 + .../k8s.io/client-go/util/homedir/homedir.go | 47 + vendor/k8s.io/client-go/util/integer/BUILD | 22 + .../k8s.io/client-go/util/integer/integer.go | 67 + .../client-go/util/integer/integer_test.go | 244 + vendor/k8s.io/client-go/util/jsonpath/BUILD | 31 + vendor/k8s.io/client-go/util/jsonpath/doc.go | 20 + .../client-go/util/jsonpath/jsonpath.go | 509 + .../client-go/util/jsonpath/jsonpath_test.go | 290 + vendor/k8s.io/client-go/util/jsonpath/node.go | 255 + .../k8s.io/client-go/util/jsonpath/parser.go | 449 + .../client-go/util/jsonpath/parser_test.go | 136 + vendor/k8s.io/client-go/util/testing/BUILD | 25 + .../client-go/util/testing/fake_handler.go | 139 + .../util/testing/fake_handler_test.go | 180 + .../k8s.io/client-go/util/testing/tmpdir.go | 44 + vendor/k8s.io/client-go/util/workqueue/BUILD | 50 + .../util/workqueue/default_rate_limiters.go | 211 + .../workqueue/default_rate_limiters_test.go | 184 + .../util/workqueue/delaying_queue.go | 257 + .../util/workqueue/delaying_queue_test.go | 255 + vendor/k8s.io/client-go/util/workqueue/doc.go | 26 + .../client-go/util/workqueue/metrics.go | 195 + .../client-go/util/workqueue/parallelizer.go | 52 + .../k8s.io/client-go/util/workqueue/queue.go | 172 + .../client-go/util/workqueue/queue_test.go | 161 + .../util/workqueue/rate_limitting_queue.go | 69 + .../workqueue/rate_limitting_queue_test.go | 75 + 2626 files changed, 626646 insertions(+), 89487 deletions(-) create mode 100644 fnlb/lb/k8s_store.go delete mode 100644 vendor/github.com/cenkalti/backoff/.gitignore delete mode 100644 vendor/github.com/cenkalti/backoff/.travis.yml delete mode 100644 vendor/github.com/cenkalti/backoff/LICENSE delete mode 100644 vendor/github.com/cenkalti/backoff/README.md delete mode 100644 vendor/github.com/cenkalti/backoff/backoff.go delete mode 100644 vendor/github.com/cenkalti/backoff/backoff_test.go delete mode 100644 vendor/github.com/cenkalti/backoff/context.go delete mode 100644 vendor/github.com/cenkalti/backoff/context_test.go delete mode 100644 vendor/github.com/cenkalti/backoff/example_test.go delete mode 100644 vendor/github.com/cenkalti/backoff/exponential.go delete mode 100644 vendor/github.com/cenkalti/backoff/exponential_test.go delete mode 100644 vendor/github.com/cenkalti/backoff/retry.go delete mode 100644 vendor/github.com/cenkalti/backoff/retry_test.go delete mode 100644 vendor/github.com/cenkalti/backoff/ticker.go delete mode 100644 vendor/github.com/cenkalti/backoff/ticker_test.go delete mode 100644 vendor/github.com/cenkalti/backoff/tries.go delete mode 100644 vendor/github.com/cenkalti/backoff/tries_test.go delete mode 100644 vendor/github.com/dghubble/sling/.travis.yml delete mode 100644 vendor/github.com/dghubble/sling/CHANGES.md delete mode 100644 vendor/github.com/dghubble/sling/LICENSE delete mode 100644 vendor/github.com/dghubble/sling/README.md delete mode 100644 vendor/github.com/dghubble/sling/body.go delete mode 100644 vendor/github.com/dghubble/sling/doc.go delete mode 100644 vendor/github.com/dghubble/sling/examples/README.md delete mode 100644 vendor/github.com/dghubble/sling/examples/github.go delete mode 100644 vendor/github.com/dghubble/sling/sling.go delete mode 100644 vendor/github.com/dghubble/sling/sling_test.go delete mode 100755 vendor/github.com/dghubble/sling/test create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/.travis.yml create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/CHANGES.md create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/LICENSE create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/README.md create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/api_declaration_list.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/config.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_builder.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_builder_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_list.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_list_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_property_ext.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_property_ext_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_property_list.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/model_property_list_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/postbuild_model_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/swagger.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/swagger_builder.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/swagger_test.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/swagger_webservice.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/test_package/struct.go create mode 100644 vendor/github.com/emicklei/go-restful-swagger12/utils_test.go create mode 100644 vendor/github.com/emicklei/go-restful/.gitignore create mode 100644 vendor/github.com/emicklei/go-restful/.travis.yml create mode 100644 vendor/github.com/emicklei/go-restful/CHANGES.md create mode 100644 vendor/github.com/emicklei/go-restful/LICENSE create mode 100644 vendor/github.com/emicklei/go-restful/Makefile create mode 100644 vendor/github.com/emicklei/go-restful/README.md create mode 100644 vendor/github.com/emicklei/go-restful/Srcfile create mode 100644 vendor/github.com/emicklei/go-restful/bench_curly_test.go create mode 100644 vendor/github.com/emicklei/go-restful/bench_test.go create mode 100644 vendor/github.com/emicklei/go-restful/bench_test.sh create mode 100644 vendor/github.com/emicklei/go-restful/compress.go create mode 100644 vendor/github.com/emicklei/go-restful/compress_test.go create mode 100644 vendor/github.com/emicklei/go-restful/compressor_cache.go create mode 100644 vendor/github.com/emicklei/go-restful/compressor_pools.go create mode 100644 vendor/github.com/emicklei/go-restful/compressors.go create mode 100644 vendor/github.com/emicklei/go-restful/constants.go create mode 100644 vendor/github.com/emicklei/go-restful/container.go create mode 100644 vendor/github.com/emicklei/go-restful/container_test.go create mode 100644 vendor/github.com/emicklei/go-restful/cors_filter.go create mode 100644 vendor/github.com/emicklei/go-restful/cors_filter_test.go create mode 100644 vendor/github.com/emicklei/go-restful/coverage.sh create mode 100644 vendor/github.com/emicklei/go-restful/curly.go create mode 100644 vendor/github.com/emicklei/go-restful/curly_route.go create mode 100644 vendor/github.com/emicklei/go-restful/curly_test.go create mode 100644 vendor/github.com/emicklei/go-restful/doc.go create mode 100644 vendor/github.com/emicklei/go-restful/doc_examples_test.go create mode 100644 vendor/github.com/emicklei/go-restful/entity_accessors.go create mode 100644 vendor/github.com/emicklei/go-restful/entity_accessors_test.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/.goconvey create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/.goconvey create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/app.yaml create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/.goconvey create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/app.yaml create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/main.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-appstats-integration.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-user-service.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/home.html create mode 100644 vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity_test.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-CORS-filter.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-NCSA-logging.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-basic-authentication.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-cpuprofiler-service.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-curly-router.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-curly-router_test.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-encoding-filter.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-filters.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-form-handling.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-hello-world.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-html-template.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-multi-containers.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-no-cache-filter.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-options-filter.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-path-tail.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-pre-post-filters.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-resource-functions.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-route_test.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-routefunction_test.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-serve-static.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-swagger.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-user-resource.go create mode 100644 vendor/github.com/emicklei/go-restful/examples/restful-user-service.go create mode 100644 vendor/github.com/emicklei/go-restful/filter.go create mode 100644 vendor/github.com/emicklei/go-restful/filter_test.go create mode 100644 vendor/github.com/emicklei/go-restful/jsr311.go create mode 100644 vendor/github.com/emicklei/go-restful/jsr311_test.go create mode 100644 vendor/github.com/emicklei/go-restful/log/log.go create mode 100644 vendor/github.com/emicklei/go-restful/logger.go create mode 100644 vendor/github.com/emicklei/go-restful/mime.go create mode 100644 vendor/github.com/emicklei/go-restful/mime_test.go create mode 100644 vendor/github.com/emicklei/go-restful/options_filter.go create mode 100644 vendor/github.com/emicklei/go-restful/options_filter_test.go create mode 100644 vendor/github.com/emicklei/go-restful/parameter.go create mode 100644 vendor/github.com/emicklei/go-restful/path_expression.go create mode 100644 vendor/github.com/emicklei/go-restful/path_expression_test.go create mode 100644 vendor/github.com/emicklei/go-restful/request.go create mode 100644 vendor/github.com/emicklei/go-restful/request_test.go create mode 100644 vendor/github.com/emicklei/go-restful/response.go create mode 100644 vendor/github.com/emicklei/go-restful/response_test.go create mode 100644 vendor/github.com/emicklei/go-restful/route.go create mode 100644 vendor/github.com/emicklei/go-restful/route_builder.go create mode 100644 vendor/github.com/emicklei/go-restful/route_builder_test.go create mode 100644 vendor/github.com/emicklei/go-restful/route_test.go create mode 100644 vendor/github.com/emicklei/go-restful/router.go create mode 100644 vendor/github.com/emicklei/go-restful/service_error.go create mode 100644 vendor/github.com/emicklei/go-restful/tracer_test.go create mode 100644 vendor/github.com/emicklei/go-restful/web_service.go create mode 100644 vendor/github.com/emicklei/go-restful/web_service_container.go create mode 100644 vendor/github.com/emicklei/go-restful/web_service_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/.editorconfig delete mode 100644 vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/.gitignore delete mode 100644 vendor/github.com/fsnotify/fsnotify/.travis.yml delete mode 100644 vendor/github.com/fsnotify/fsnotify/AUTHORS delete mode 100644 vendor/github.com/fsnotify/fsnotify/CHANGELOG.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/README.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/example_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/fen.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/fsnotify.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/fsnotify_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/inotify.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/inotify_poller.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/inotify_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/integration_test.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/kqueue.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go delete mode 100644 vendor/github.com/fsnotify/fsnotify/windows.go create mode 100644 vendor/github.com/ghodss/yaml/.gitignore create mode 100644 vendor/github.com/ghodss/yaml/.travis.yml create mode 100644 vendor/github.com/ghodss/yaml/LICENSE create mode 100644 vendor/github.com/ghodss/yaml/README.md create mode 100644 vendor/github.com/ghodss/yaml/fields.go create mode 100644 vendor/github.com/ghodss/yaml/yaml.go create mode 100644 vendor/github.com/ghodss/yaml/yaml_test.go create mode 100644 vendor/github.com/go-openapi/jsonreference/.drone.sec create mode 100644 vendor/github.com/go-openapi/jsonreference/.drone.yml create mode 100644 vendor/github.com/go-openapi/jsonreference/.pullapprove.yml delete mode 100644 vendor/github.com/go-openapi/jsonreference/.travis.yml create mode 100644 vendor/github.com/golang/glog/LICENSE create mode 100644 vendor/github.com/golang/glog/README create mode 100644 vendor/github.com/golang/glog/glog.go create mode 100644 vendor/github.com/golang/glog/glog_file.go create mode 100644 vendor/github.com/golang/glog/glog_test.go delete mode 100644 vendor/github.com/golang/protobuf/descriptor/descriptor.go delete mode 100644 vendor/github.com/golang/protobuf/descriptor/descriptor_test.go delete mode 100644 vendor/github.com/golang/protobuf/proto/map_test.go delete mode 100644 vendor/github.com/google/go-querystring/.gitignore delete mode 100644 vendor/github.com/google/go-querystring/README.md delete mode 100644 vendor/github.com/google/go-querystring/query/encode.go delete mode 100644 vendor/github.com/google/go-querystring/query/encode_test.go create mode 100644 vendor/github.com/google/gofuzz/.travis.yml rename vendor/github.com/google/{go-querystring => gofuzz}/CONTRIBUTING.md (100%) create mode 100644 vendor/github.com/google/gofuzz/LICENSE create mode 100644 vendor/github.com/google/gofuzz/README.md create mode 100644 vendor/github.com/google/gofuzz/doc.go create mode 100644 vendor/github.com/google/gofuzz/example_test.go create mode 100644 vendor/github.com/google/gofuzz/fuzz.go create mode 100644 vendor/github.com/google/gofuzz/fuzz_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/.github/ISSUE_TEMPLATE.md delete mode 100644 vendor/github.com/hashicorp/hcl/.gitignore delete mode 100644 vendor/github.com/hashicorp/hcl/.travis.yml delete mode 100644 vendor/github.com/hashicorp/hcl/LICENSE delete mode 100644 vendor/github.com/hashicorp/hcl/Makefile delete mode 100644 vendor/github.com/hashicorp/hcl/README.md delete mode 100644 vendor/github.com/hashicorp/hcl/appveyor.yml delete mode 100644 vendor/github.com/hashicorp/hcl/decoder.go delete mode 100644 vendor/github.com/hashicorp/hcl/decoder_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/ast/ast.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/ast/ast_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/ast/walk.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/.hidden.ignore delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/dir.ignore delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/file.ignore delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/good.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/error.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/error_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/parser.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/parser_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/array_comment.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/array_comment_2.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/assign_colon.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/assign_deep.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/comment.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/comment_crlf.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/comment_lastline.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/comment_single.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/complex.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/complex_crlf.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/complex_key.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/empty.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/git_crypt.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/key_without_value.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/list.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/list_comma.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/missing_braces.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/multiple.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/object_key_assign_without_value.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/object_key_assign_without_value2.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/object_key_assign_without_value3.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/object_key_without_value.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/object_list_comma.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/old.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/structure.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/structure_basic.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/structure_empty.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/types.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/unterminated_object.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/test-fixtures/unterminated_object_2.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/nodes.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/printer.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_crlf.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_indent.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_indent.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_no_stanza.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_no_stanza.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_stanza.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_stanza.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_newline.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_newline.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_object_multi.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_object_multi.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_standalone.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_standalone.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/complexhcl.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/complexhcl.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/empty_block.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/empty_block.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/list.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/list.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/list_comment.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/list_comment.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/list_of_objects.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/list_of_objects.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/multiline_string.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/multiline_string.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/object_singleline.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/object_singleline.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/object_with_heredoc.golden delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/testdata/object_with_heredoc.input delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/scanner/scanner_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/strconv/quote_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/array_comment.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/assign_colon.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment_single.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex_key.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/empty.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list_comma.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/multiple.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/old.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_basic.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_empty.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/test-fixtures/types.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/token/position.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/token/token.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/token/token_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/flatten.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/parser.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/parser_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/array.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_128.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_tf_8110.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/basic.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/good_input_tf_8110.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/object.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/types.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/scanner/scanner.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/scanner/scanner_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/test-fixtures/array.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/test-fixtures/basic.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/test-fixtures/object.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/test-fixtures/types.json delete mode 100644 vendor/github.com/hashicorp/hcl/json/token/position.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/token/token.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/token/token_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/lex.go delete mode 100644 vendor/github.com/hashicorp/hcl/lex_test.go delete mode 100644 vendor/github.com/hashicorp/hcl/parse.go delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/assign_deep.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/basic.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/basic.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/basic_int_string.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/basic_squish.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/block_assign.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/empty.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/escape.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/escape_backslash.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/flat.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/float.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/float.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/git_crypt.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/interpolate.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/list_of_lists.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/list_of_maps.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_bad.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_indented.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_literal.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_literal_with_hil.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_no_eof.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_no_hanging_indent.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/multiline_no_marker.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/nested_block_comment.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/nested_provider_bad.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/null_strings.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/object_list.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/object_with_bool.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/scientific.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/scientific.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/slice_expand.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure2.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure2.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_flat.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_flatmap.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_list.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_list.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_list_deep.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_list_empty.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_multi.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/structure_multi.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/terraform_heroku.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/terraform_heroku.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/terraform_variable_invalid.json delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/tfvars.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/unterminated_block_comment.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/test-fixtures/unterminated_brace.hcl delete mode 100644 vendor/github.com/hashicorp/hcl/testhelper/unix2dos.go create mode 100644 vendor/github.com/juju/ratelimit/LICENSE create mode 100644 vendor/github.com/juju/ratelimit/README.md create mode 100644 vendor/github.com/juju/ratelimit/ratelimit.go create mode 100644 vendor/github.com/juju/ratelimit/ratelimit_test.go create mode 100644 vendor/github.com/juju/ratelimit/reader.go delete mode 100644 vendor/github.com/magiconair/properties/.gitignore delete mode 100644 vendor/github.com/magiconair/properties/.travis.yml delete mode 100644 vendor/github.com/magiconair/properties/CHANGELOG.md delete mode 100644 vendor/github.com/magiconair/properties/LICENSE delete mode 100644 vendor/github.com/magiconair/properties/README.md delete mode 100644 vendor/github.com/magiconair/properties/assert/assert.go delete mode 100644 vendor/github.com/magiconair/properties/assert/assert_test.go delete mode 100644 vendor/github.com/magiconair/properties/benchmark_test.go delete mode 100644 vendor/github.com/magiconair/properties/decode.go delete mode 100644 vendor/github.com/magiconair/properties/decode_test.go delete mode 100644 vendor/github.com/magiconair/properties/doc.go delete mode 100644 vendor/github.com/magiconair/properties/example_test.go delete mode 100644 vendor/github.com/magiconair/properties/integrate.go delete mode 100644 vendor/github.com/magiconair/properties/integrate_test.go delete mode 100644 vendor/github.com/magiconair/properties/lex.go delete mode 100644 vendor/github.com/magiconair/properties/load.go delete mode 100644 vendor/github.com/magiconair/properties/load_test.go delete mode 100644 vendor/github.com/magiconair/properties/parser.go delete mode 100644 vendor/github.com/magiconair/properties/properties.go delete mode 100644 vendor/github.com/magiconair/properties/properties_test.go delete mode 100644 vendor/github.com/magiconair/properties/rangecheck.go create mode 100644 vendor/github.com/mailru/easyjson/benchmark/jsoniter_test.go create mode 100644 vendor/github.com/mailru/easyjson/tests/opt_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/.gitignore delete mode 100644 vendor/github.com/pelletier/go-toml/.travis.yml delete mode 100644 vendor/github.com/pelletier/go-toml/LICENSE delete mode 100644 vendor/github.com/pelletier/go-toml/README.md delete mode 100644 vendor/github.com/pelletier/go-toml/benchmark.json delete mode 100755 vendor/github.com/pelletier/go-toml/benchmark.sh delete mode 100644 vendor/github.com/pelletier/go-toml/benchmark.toml delete mode 100644 vendor/github.com/pelletier/go-toml/benchmark.yml delete mode 100644 vendor/github.com/pelletier/go-toml/benchmark_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/cmd/test_program.go delete mode 100644 vendor/github.com/pelletier/go-toml/cmd/tomljson/main.go delete mode 100644 vendor/github.com/pelletier/go-toml/cmd/tomljson/main_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/cmd/tomll/main.go delete mode 100644 vendor/github.com/pelletier/go-toml/doc.go delete mode 100644 vendor/github.com/pelletier/go-toml/doc_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/example-crlf.toml delete mode 100644 vendor/github.com/pelletier/go-toml/example.toml delete mode 100644 vendor/github.com/pelletier/go-toml/keysparsing.go delete mode 100644 vendor/github.com/pelletier/go-toml/keysparsing_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/lexer.go delete mode 100644 vendor/github.com/pelletier/go-toml/lexer_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/marshal.go delete mode 100644 vendor/github.com/pelletier/go-toml/marshal_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/marshal_test.toml delete mode 100644 vendor/github.com/pelletier/go-toml/parser.go delete mode 100644 vendor/github.com/pelletier/go-toml/parser_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/position.go delete mode 100644 vendor/github.com/pelletier/go-toml/position_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/doc.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/lexer.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/lexer_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/match.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/match_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/parser.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/parser_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/query.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/query_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/query/tokens.go delete mode 100755 vendor/github.com/pelletier/go-toml/test.sh delete mode 100644 vendor/github.com/pelletier/go-toml/token.go delete mode 100644 vendor/github.com/pelletier/go-toml/token_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/toml.go delete mode 100644 vendor/github.com/pelletier/go-toml/toml_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/tomltree_create.go delete mode 100644 vendor/github.com/pelletier/go-toml/tomltree_create_test.go delete mode 100644 vendor/github.com/pelletier/go-toml/tomltree_write.go delete mode 100644 vendor/github.com/pelletier/go-toml/tomltree_write_test.go create mode 100644 vendor/github.com/spf13/pflag/.gitignore create mode 100644 vendor/github.com/spf13/pflag/.travis.yml rename vendor/github.com/{fsnotify/fsnotify => spf13/pflag}/LICENSE (96%) create mode 100644 vendor/github.com/spf13/pflag/README.md create mode 100644 vendor/github.com/spf13/pflag/bool.go create mode 100644 vendor/github.com/spf13/pflag/bool_slice.go create mode 100644 vendor/github.com/spf13/pflag/bool_slice_test.go create mode 100644 vendor/github.com/spf13/pflag/bool_test.go create mode 100644 vendor/github.com/spf13/pflag/count.go create mode 100644 vendor/github.com/spf13/pflag/count_test.go create mode 100644 vendor/github.com/spf13/pflag/duration.go create mode 100644 vendor/github.com/spf13/pflag/example_test.go create mode 100644 vendor/github.com/spf13/pflag/export_test.go create mode 100644 vendor/github.com/spf13/pflag/flag.go create mode 100644 vendor/github.com/spf13/pflag/flag_test.go create mode 100644 vendor/github.com/spf13/pflag/float32.go create mode 100644 vendor/github.com/spf13/pflag/float64.go create mode 100644 vendor/github.com/spf13/pflag/golangflag.go create mode 100644 vendor/github.com/spf13/pflag/golangflag_test.go create mode 100644 vendor/github.com/spf13/pflag/int.go create mode 100644 vendor/github.com/spf13/pflag/int32.go create mode 100644 vendor/github.com/spf13/pflag/int64.go create mode 100644 vendor/github.com/spf13/pflag/int8.go create mode 100644 vendor/github.com/spf13/pflag/int_slice.go create mode 100644 vendor/github.com/spf13/pflag/int_slice_test.go create mode 100644 vendor/github.com/spf13/pflag/ip.go create mode 100644 vendor/github.com/spf13/pflag/ip_slice.go create mode 100644 vendor/github.com/spf13/pflag/ip_slice_test.go create mode 100644 vendor/github.com/spf13/pflag/ip_test.go create mode 100644 vendor/github.com/spf13/pflag/ipmask.go create mode 100644 vendor/github.com/spf13/pflag/ipnet.go create mode 100644 vendor/github.com/spf13/pflag/ipnet_test.go create mode 100644 vendor/github.com/spf13/pflag/string.go create mode 100644 vendor/github.com/spf13/pflag/string_array.go create mode 100644 vendor/github.com/spf13/pflag/string_array_test.go create mode 100644 vendor/github.com/spf13/pflag/string_slice.go create mode 100644 vendor/github.com/spf13/pflag/string_slice_test.go create mode 100644 vendor/github.com/spf13/pflag/uint.go create mode 100644 vendor/github.com/spf13/pflag/uint16.go create mode 100644 vendor/github.com/spf13/pflag/uint32.go create mode 100644 vendor/github.com/spf13/pflag/uint64.go create mode 100644 vendor/github.com/spf13/pflag/uint8.go create mode 100644 vendor/github.com/spf13/pflag/uint_slice.go create mode 100644 vendor/github.com/spf13/pflag/uint_slice_test.go create mode 100755 vendor/github.com/spf13/pflag/verify/all.sh create mode 100755 vendor/github.com/spf13/pflag/verify/gofmt.sh create mode 100755 vendor/github.com/spf13/pflag/verify/golint.sh rename vendor/github.com/ugorji/go/codec/{goversion_arrayof_gte_go15.go => decode_go.go} (59%) rename vendor/github.com/ugorji/go/codec/{goversion_arrayof_lt_go15.go => decode_go14.go} (64%) rename vendor/github.com/ugorji/go/codec/{goversion_vendor_eq_go15.go => gen_15.go} (72%) rename vendor/github.com/ugorji/go/codec/{goversion_vendor_eq_go16.go => gen_16.go} (65%) rename vendor/github.com/ugorji/go/codec/{goversion_vendor_gte_go17.go => gen_17.go} (82%) delete mode 100644 vendor/github.com/ugorji/go/codec/goversion_makemap_gte_go19.go delete mode 100644 vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go19.go delete mode 100644 vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go delete mode 100644 vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go delete mode 100644 vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl delete mode 100644 vendor/github.com/ugorji/go/codec/mammoth_generated_test.go create mode 100644 vendor/github.com/ugorji/go/codec/prebuild.go create mode 100755 vendor/github.com/ugorji/go/codec/prebuild.sh delete mode 100644 vendor/github.com/ugorji/go/codec/shared_test.go create mode 100755 vendor/github.com/ugorji/go/codec/tests.sh delete mode 100644 vendor/github.com/ugorji/go/codec/xml.go delete mode 100644 vendor/github.com/ugorji/go/codec/z_all_test.go delete mode 100644 vendor/golang.org/x/net/README create mode 100644 vendor/golang.org/x/net/README.md create mode 100644 vendor/golang.org/x/net/http/httpproxy/export_test.go create mode 100644 vendor/golang.org/x/net/http/httpproxy/go19_test.go create mode 100644 vendor/golang.org/x/net/http/httpproxy/proxy.go create mode 100644 vendor/golang.org/x/net/http/httpproxy/proxy_test.go delete mode 100644 vendor/golang.org/x/sys/README create mode 100644 vendor/golang.org/x/sys/README.md create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin_test.go create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly_test.go create mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd_test.go create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd_test.go create mode 100644 vendor/golang.org/x/sys/unix/dev_solaris_test.go delete mode 100644 vendor/golang.org/x/sys/unix/file_unix.go delete mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go create mode 100644 vendor/golang.org/x/sys/unix/timestruct.go create mode 100644 vendor/golang.org/x/sys/unix/zptrace386_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracearm_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemips_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemipsle_linux.go rename vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_386.go} (100%) create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go delete mode 100644 vendor/golang.org/x/text/README create mode 100644 vendor/golang.org/x/text/README.md create mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go create mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/textdata/gotext_en.out.json create mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go create mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go create mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/textdata/gotext_en.out.json create mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go create mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go create mode 100644 vendor/golang.org/x/text/cmd/gotext/rewrite.go create mode 100644 vendor/golang.org/x/text/date/data_test.go create mode 100644 vendor/golang.org/x/text/date/gen.go create mode 100644 vendor/golang.org/x/text/date/gen_test.go create mode 100644 vendor/golang.org/x/text/date/tables.go create mode 100644 vendor/golang.org/x/text/feature/plural/example_test.go create mode 100755 vendor/golang.org/x/text/feature/plural/message.go create mode 100644 vendor/golang.org/x/text/feature/plural/message_test.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/cldrtree.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/generate.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/option.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml create mode 100755 vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en.xml create mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_001.xml create mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_GB.xml create mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/root.xml create mode 100755 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/tree.go create mode 100644 vendor/golang.org/x/text/internal/cldrtree/type.go create mode 100644 vendor/golang.org/x/text/internal/format/parser.go create mode 100644 vendor/golang.org/x/text/internal/format/parser_test.go delete mode 100644 vendor/golang.org/x/text/language/data_test.go create mode 100644 vendor/golang.org/x/text/language/doc.go rename vendor/golang.org/x/text/language/testdata/{localeMatcherTest.txt => CLDRLocaleMatcherTest.txt} (100%) create mode 100644 vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt create mode 100644 vendor/golang.org/x/text/message/catalog/go19.go create mode 100644 vendor/golang.org/x/text/message/catalog/gopre19.go create mode 100644 vendor/golang.org/x/text/message/doc.go create mode 100644 vendor/golang.org/x/text/message/examples_test.go create mode 100644 vendor/golang.org/x/text/number/doc.go create mode 100644 vendor/golang.org/x/text/number/examples_test.go create mode 100755 vendor/golang.org/x/text/number/format.go create mode 100644 vendor/golang.org/x/text/number/format_test.go create mode 100755 vendor/golang.org/x/text/number/number.go create mode 100644 vendor/golang.org/x/text/number/number_test.go create mode 100644 vendor/golang.org/x/text/number/option.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/norm_test.go rename vendor/{github.com/google/go-querystring => gopkg.in/inf.v0}/LICENSE (93%) create mode 100644 vendor/gopkg.in/inf.v0/benchmark_test.go create mode 100644 vendor/gopkg.in/inf.v0/dec.go create mode 100644 vendor/gopkg.in/inf.v0/dec_go1_2_test.go create mode 100644 vendor/gopkg.in/inf.v0/dec_internal_test.go create mode 100644 vendor/gopkg.in/inf.v0/dec_test.go create mode 100644 vendor/gopkg.in/inf.v0/example_test.go create mode 100644 vendor/gopkg.in/inf.v0/rounder.go create mode 100644 vendor/gopkg.in/inf.v0/rounder_example_test.go create mode 100644 vendor/gopkg.in/inf.v0/rounder_test.go delete mode 100644 vendor/gopkg.in/yaml.v2/.travis.yml delete mode 100644 vendor/gopkg.in/yaml.v2/example_embedded_test.go create mode 100644 vendor/k8s.io/apimachinery/Godeps/Godeps.json create mode 100644 vendor/k8s.io/apimachinery/Godeps/Readme create mode 100644 vendor/k8s.io/apimachinery/LICENSE create mode 100644 vendor/k8s.io/apimachinery/OWNERS create mode 100644 vendor/k8s.io/apimachinery/README.md create mode 100755 vendor/k8s.io/apimachinery/hack/godep-deps.sh create mode 100755 vendor/k8s.io/apimachinery/hack/sync-from-kubernetes.sh create mode 100644 vendor/k8s.io/apimachinery/kubernetes-sha create mode 100644 vendor/k8s.io/apimachinery/pkg/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/api/equality/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/errors/BUILD create mode 100755 vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/api/errors/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/errors/errors.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/BUILD create mode 100755 vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/default.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/errors.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/help.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/meta.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/meta_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/priority.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/priority_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/restmapper_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/unstructured.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/BUILD create mode 100755 vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/amount.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/amount_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/math.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/math_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/quantity_example_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/quantity_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/scale_int_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/testing/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/api/testing/codec.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/generic.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/path/name.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validation/path/name_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apimachinery/types_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD create mode 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.pb.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/cloner.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/converter.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/converter_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/helper.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/helper_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/unstructured/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/fields.go create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/fields_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/requirements.go create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/selector.go create mode 100644 vendor/k8s.io/apimachinery/pkg/fields/selector_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/labels/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/labels/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/labels/labels.go create mode 100644 vendor/k8s.io/apimachinery/pkg/labels/labels_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/labels/selector.go create mode 100644 vendor/k8s.io/apimachinery/pkg/labels/selector_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/openapi/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/openapi/common.go create mode 100644 vendor/k8s.io/apimachinery/pkg/openapi/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/codec.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/conversion.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/embedded.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/error.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/extension.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/generated.proto create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/helper.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/register.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/scheme.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf_extension.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/yaml.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/apimachinery/pkg/selection/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/selection/operator.go create mode 100644 vendor/k8s.io/apimachinery/pkg/types/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/types/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/types/namespacedname.go create mode 100644 vendor/k8s.io/apimachinery/pkg/types/nodename.go create mode 100644 vendor/k8s.io/apimachinery/pkg/types/patch.go create mode 100644 vendor/k8s.io/apimachinery/pkg/types/uid.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/cache/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/cache/cache.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/cache/cache_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/clock/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/clock/clock.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/clock/clock_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/diff/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/diff/diff.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/errors/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/errors/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/errors/errors.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/framer/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/framer/framer.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/framer/framer_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto create mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/intstr_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/json/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/json/json.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/json/json_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/errors.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/util_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/http.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/http_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/interface.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/port_range.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/port_range_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/port_split.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/port_split_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/util.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/util_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/rand/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/rand/rand.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/rand/rand_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/remotecommand/constants.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/runtime/runtime_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/byte.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/empty.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/int.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/int64.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/set_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/string.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/types/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/types/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS create mode 100644 vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/uuid/uuid.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/field/path_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/validation.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/validation_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/wait/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/wait/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/wait/wait.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/wait/wait_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/yaml/decoder_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/version/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/version/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/version/types.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/BUILD create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/filter.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/filter_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/mux.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/mux_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/streamwatcher_test.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/until.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/watch.go create mode 100644 vendor/k8s.io/apimachinery/pkg/watch/watch_test.go create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/json/OWNERS create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/json/fields.go create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/addr.go create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal_test.go create mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/type.go create mode 100644 vendor/k8s.io/client-go/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 vendor/k8s.io/client-go/.travis.yml create mode 100644 vendor/k8s.io/client-go/CHANGELOG.md create mode 100644 vendor/k8s.io/client-go/Godeps/Godeps.json create mode 100644 vendor/k8s.io/client-go/Godeps/Readme create mode 100644 vendor/k8s.io/client-go/INSTALL.md create mode 100644 vendor/k8s.io/client-go/LICENSE create mode 100644 vendor/k8s.io/client-go/OWNERS create mode 100644 vendor/k8s.io/client-go/README.md create mode 100644 vendor/k8s.io/client-go/discovery/BUILD create mode 100644 vendor/k8s.io/client-go/discovery/discovery_client.go create mode 100644 vendor/k8s.io/client-go/discovery/discovery_client_test.go create mode 100644 vendor/k8s.io/client-go/discovery/fake/BUILD create mode 100644 vendor/k8s.io/client-go/discovery/fake/discovery.go create mode 100644 vendor/k8s.io/client-go/discovery/helper.go create mode 100644 vendor/k8s.io/client-go/discovery/helper_blackbox_test.go create mode 100644 vendor/k8s.io/client-go/discovery/restmapper.go create mode 100644 vendor/k8s.io/client-go/discovery/restmapper_test.go create mode 100644 vendor/k8s.io/client-go/discovery/unstructured.go create mode 100644 vendor/k8s.io/client-go/dynamic/BUILD create mode 100644 vendor/k8s.io/client-go/dynamic/client.go create mode 100644 vendor/k8s.io/client-go/dynamic/client_pool.go create mode 100644 vendor/k8s.io/client-go/dynamic/client_test.go create mode 100644 vendor/k8s.io/client-go/dynamic/dynamic_util.go create mode 100644 vendor/k8s.io/client-go/dynamic/dynamic_util_test.go create mode 100644 vendor/k8s.io/client-go/examples/README.md create mode 100644 vendor/k8s.io/client-go/examples/create-update-delete-deployment/BUILD create mode 100644 vendor/k8s.io/client-go/examples/create-update-delete-deployment/README.md create mode 100644 vendor/k8s.io/client-go/examples/create-update-delete-deployment/main.go create mode 100644 vendor/k8s.io/client-go/examples/in-cluster-client-configuration/BUILD create mode 100644 vendor/k8s.io/client-go/examples/in-cluster-client-configuration/Dockerfile create mode 100644 vendor/k8s.io/client-go/examples/in-cluster-client-configuration/README.md create mode 100644 vendor/k8s.io/client-go/examples/in-cluster-client-configuration/main.go create mode 100644 vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/BUILD create mode 100644 vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/README.md create mode 100644 vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/main.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/BUILD create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/README.md create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/BUILD create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/register.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types_test.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/BUILD create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/client.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/tpr.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/BUILD create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/controller.go create mode 100644 vendor/k8s.io/client-go/examples/third-party-resources-deprecated/main.go create mode 100644 vendor/k8s.io/client-go/examples/workqueue/BUILD create mode 100644 vendor/k8s.io/client-go/examples/workqueue/README.md create mode 100644 vendor/k8s.io/client-go/examples/workqueue/main.go create mode 100644 vendor/k8s.io/client-go/informers/BUILD create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/BUILD create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/interface.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/apps/BUILD create mode 100644 vendor/k8s.io/client-go/informers/apps/interface.go create mode 100644 vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go create mode 100644 vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go create mode 100644 vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/BUILD create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/interface.go create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/batch/BUILD create mode 100644 vendor/k8s.io/client-go/informers/batch/interface.go create mode 100644 vendor/k8s.io/client-go/informers/batch/v1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/batch/v1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/batch/v1/job.go create mode 100644 vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go create mode 100644 vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/certificates/BUILD create mode 100644 vendor/k8s.io/client-go/informers/certificates/interface.go create mode 100644 vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go create mode 100644 vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/core/BUILD create mode 100644 vendor/k8s.io/client-go/informers/core/interface.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/core/v1/componentstatus.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/configmap.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/endpoints.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/event.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/limitrange.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/namespace.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/node.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/pod.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/podtemplate.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/resourcequota.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/secret.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/service.go create mode 100644 vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/BUILD create mode 100644 vendor/k8s.io/client-go/informers/extensions/interface.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go create mode 100644 vendor/k8s.io/client-go/informers/extensions/v1beta1/thirdpartyresource.go create mode 100644 vendor/k8s.io/client-go/informers/factory.go create mode 100644 vendor/k8s.io/client-go/informers/generic.go create mode 100644 vendor/k8s.io/client-go/informers/internalinterfaces/BUILD create mode 100644 vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go create mode 100644 vendor/k8s.io/client-go/informers/networking/BUILD create mode 100644 vendor/k8s.io/client-go/informers/networking/interface.go create mode 100644 vendor/k8s.io/client-go/informers/networking/v1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/networking/v1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go create mode 100644 vendor/k8s.io/client-go/informers/policy/BUILD create mode 100644 vendor/k8s.io/client-go/informers/policy/interface.go create mode 100644 vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/BUILD create mode 100644 vendor/k8s.io/client-go/informers/rbac/interface.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go create mode 100644 vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go create mode 100644 vendor/k8s.io/client-go/informers/settings/BUILD create mode 100644 vendor/k8s.io/client-go/informers/settings/interface.go create mode 100644 vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/settings/v1alpha1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go create mode 100644 vendor/k8s.io/client-go/informers/storage/BUILD create mode 100644 vendor/k8s.io/client-go/informers/storage/interface.go create mode 100644 vendor/k8s.io/client-go/informers/storage/v1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/storage/v1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/storage/v1/storageclass.go create mode 100644 vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go create mode 100644 vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes-sha create mode 100644 vendor/k8s.io/client-go/kubernetes/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/clientset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go create mode 100644 vendor/k8s.io/client-go/kubernetes/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/fake/register.go create mode 100644 vendor/k8s.io/client-go/kubernetes/scheme/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/scheme/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/scheme/register.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_initializerconfiguration.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/initializerconfiguration.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_scale.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/scale.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/autoscaling_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_autoscaling_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/podpreset.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/settings_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/initializerconfiguration.go create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/scale.go create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go create mode 100644 vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/horizontalpodautoscaler.go create mode 100644 vendor/k8s.io/client-go/listers/batch/v1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/batch/v1/job.go create mode 100644 vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go create mode 100644 vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go create mode 100644 vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/core/v1/componentstatus.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/configmap.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/endpoints.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/event.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/limitrange.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/namespace.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/node.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/node_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/pod.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/podtemplate.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/resourcequota.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/secret.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/service.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/service_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/scale.go create mode 100644 vendor/k8s.io/client-go/listers/extensions/v1beta1/thirdpartyresource.go create mode 100644 vendor/k8s.io/client-go/listers/networking/v1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go create mode 100644 vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go create mode 100644 vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go create mode 100644 vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go create mode 100644 vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go create mode 100644 vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/settings/v1alpha1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/settings/v1alpha1/podpreset.go create mode 100644 vendor/k8s.io/client-go/listers/storage/v1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/storage/v1/storageclass.go create mode 100644 vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go create mode 100644 vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go create mode 100644 vendor/k8s.io/client-go/pkg/api/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/api/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/api/annotation_key_constants.go create mode 100644 vendor/k8s.io/client-go/pkg/api/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/api/field_constants.go create mode 100644 vendor/k8s.io/client-go/pkg/api/helper/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/api/helper/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/api/helper/helpers_test.go create mode 100644 vendor/k8s.io/client-go/pkg/api/helper/qos/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/api/helper/qos/qos.go create mode 100644 vendor/k8s.io/client-go/pkg/api/install/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/api/install/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/api/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/api/json.go create mode 100644 vendor/k8s.io/client-go/pkg/api/objectreference.go create mode 100644 vendor/k8s.io/client-go/pkg/api/register.go create mode 100644 vendor/k8s.io/client-go/pkg/api/resource.go create mode 100644 vendor/k8s.io/client-go/pkg/api/taint.go create mode 100644 vendor/k8s.io/client-go/pkg/api/toleration.go create mode 100644 vendor/k8s.io/client-go/pkg/api/types.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/api/v1/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/annotation_key_constants.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/generate.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/meta.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/node/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/node/util.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/objectreference.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/ref/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/ref/ref.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/resource.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/resource/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/resource/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/resource/helpers_test.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/taint.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/toleration.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/api/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/api/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/admissionregistration/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/apps/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/apps/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/authentication/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authentication/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/authorization/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/authorization/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/autoscaling/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/annotations.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/autoscaling/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/batch/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/batch/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/certificates/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/certificates/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/extensions/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/extensions/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/networking/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/networking/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/policy/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/policy/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/rbac/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/helpers.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/rbac/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/settings/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/BUILD create mode 100755 vendor/k8s.io/client-go/pkg/apis/storage/OWNERS create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/install/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/install/install.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.pb.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.proto create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/register.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.conversion.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.defaults.go create mode 100644 vendor/k8s.io/client-go/pkg/apis/storage/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/client-go/pkg/util/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/util/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/util/parsers/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/util/parsers/parsers.go create mode 100644 vendor/k8s.io/client-go/pkg/util/template.go create mode 100644 vendor/k8s.io/client-go/pkg/util/umask.go create mode 100644 vendor/k8s.io/client-go/pkg/util/umask_windows.go create mode 100644 vendor/k8s.io/client-go/pkg/util/util.go create mode 100644 vendor/k8s.io/client-go/pkg/version/.gitattributes create mode 100644 vendor/k8s.io/client-go/pkg/version/BUILD create mode 100644 vendor/k8s.io/client-go/pkg/version/base.go create mode 100644 vendor/k8s.io/client-go/pkg/version/def.bzl create mode 100644 vendor/k8s.io/client-go/pkg/version/doc.go create mode 100644 vendor/k8s.io/client-go/pkg/version/version.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/BUILD create mode 100644 vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/provider.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/BUILD create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/BUILD create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/README.md create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure_test.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/BUILD create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/OWNERS create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp_test.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/BUILD create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/OWNERS create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc_test.go create mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/plugins.go create mode 100644 vendor/k8s.io/client-go/rest/BUILD create mode 100755 vendor/k8s.io/client-go/rest/OWNERS create mode 100644 vendor/k8s.io/client-go/rest/client.go create mode 100644 vendor/k8s.io/client-go/rest/client_test.go create mode 100644 vendor/k8s.io/client-go/rest/config.go create mode 100644 vendor/k8s.io/client-go/rest/config_test.go create mode 100644 vendor/k8s.io/client-go/rest/fake/BUILD create mode 100644 vendor/k8s.io/client-go/rest/fake/fake.go create mode 100644 vendor/k8s.io/client-go/rest/plugin.go create mode 100644 vendor/k8s.io/client-go/rest/plugin_test.go create mode 100644 vendor/k8s.io/client-go/rest/request.go create mode 100755 vendor/k8s.io/client-go/rest/request_test.go create mode 100644 vendor/k8s.io/client-go/rest/transport.go create mode 100644 vendor/k8s.io/client-go/rest/url_utils.go create mode 100644 vendor/k8s.io/client-go/rest/url_utils_test.go create mode 100644 vendor/k8s.io/client-go/rest/urlbackoff.go create mode 100644 vendor/k8s.io/client-go/rest/urlbackoff_test.go create mode 100644 vendor/k8s.io/client-go/rest/versions.go create mode 100644 vendor/k8s.io/client-go/rest/watch/BUILD create mode 100644 vendor/k8s.io/client-go/rest/watch/decoder.go create mode 100644 vendor/k8s.io/client-go/rest/watch/decoder_test.go create mode 100644 vendor/k8s.io/client-go/rest/watch/encoder.go create mode 100644 vendor/k8s.io/client-go/rest/watch/encoder_test.go create mode 100644 vendor/k8s.io/client-go/testing/BUILD create mode 100644 vendor/k8s.io/client-go/testing/actions.go create mode 100644 vendor/k8s.io/client-go/testing/fake.go create mode 100644 vendor/k8s.io/client-go/testing/fixture.go create mode 100644 vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD create mode 100644 vendor/k8s.io/client-go/third_party/forked/golang/template/exec.go create mode 100644 vendor/k8s.io/client-go/third_party/forked/golang/template/funcs.go create mode 100644 vendor/k8s.io/client-go/tools/auth/BUILD create mode 100644 vendor/k8s.io/client-go/tools/auth/clientauth.go create mode 100644 vendor/k8s.io/client-go/tools/auth/clientauth_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/BUILD create mode 100755 vendor/k8s.io/client-go/tools/cache/OWNERS create mode 100644 vendor/k8s.io/client-go/tools/cache/controller.go create mode 100644 vendor/k8s.io/client-go/tools/cache/controller_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/delta_fifo.go create mode 100644 vendor/k8s.io/client-go/tools/cache/delta_fifo_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/doc.go create mode 100644 vendor/k8s.io/client-go/tools/cache/expiration_cache.go create mode 100644 vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go create mode 100644 vendor/k8s.io/client-go/tools/cache/expiration_cache_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/fake_custom_store.go create mode 100644 vendor/k8s.io/client-go/tools/cache/fifo.go create mode 100644 vendor/k8s.io/client-go/tools/cache/fifo_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/index.go create mode 100644 vendor/k8s.io/client-go/tools/cache/index_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/listers.go create mode 100644 vendor/k8s.io/client-go/tools/cache/listwatch.go create mode 100644 vendor/k8s.io/client-go/tools/cache/mutation_cache.go create mode 100644 vendor/k8s.io/client-go/tools/cache/mutation_detector.go create mode 100644 vendor/k8s.io/client-go/tools/cache/mutation_detector_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/processor_listener_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/reflector.go create mode 100644 vendor/k8s.io/client-go/tools/cache/reflector_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/shared_informer.go create mode 100644 vendor/k8s.io/client-go/tools/cache/shared_informer_test.go create mode 100755 vendor/k8s.io/client-go/tools/cache/store.go create mode 100644 vendor/k8s.io/client-go/tools/cache/store_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/testing/BUILD create mode 100644 vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source.go create mode 100644 vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source_test.go create mode 100644 vendor/k8s.io/client-go/tools/cache/thread_safe_store.go create mode 100644 vendor/k8s.io/client-go/tools/cache/undelta_store.go create mode 100644 vendor/k8s.io/client-go/tools/cache/undelta_store_test.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/BUILD create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/BUILD create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/helpers_test.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/register.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/types.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/types_test.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/v1/conversion.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/v1/register.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/v1/types.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/client_config.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/client_config_test.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/config.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/doc.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/helpers.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/loader.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/loader_test.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder_test.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/overrides.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/validation.go create mode 100644 vendor/k8s.io/client-go/tools/clientcmd/validation_test.go create mode 100644 vendor/k8s.io/client-go/tools/metrics/BUILD create mode 100755 vendor/k8s.io/client-go/tools/metrics/OWNERS create mode 100644 vendor/k8s.io/client-go/tools/metrics/metrics.go create mode 100644 vendor/k8s.io/client-go/tools/portforward/BUILD create mode 100644 vendor/k8s.io/client-go/tools/portforward/doc.go create mode 100644 vendor/k8s.io/client-go/tools/portforward/portforward.go create mode 100644 vendor/k8s.io/client-go/tools/portforward/portforward_test.go create mode 100644 vendor/k8s.io/client-go/tools/record/BUILD create mode 100755 vendor/k8s.io/client-go/tools/record/OWNERS create mode 100644 vendor/k8s.io/client-go/tools/record/doc.go create mode 100644 vendor/k8s.io/client-go/tools/record/event.go create mode 100644 vendor/k8s.io/client-go/tools/record/event_test.go create mode 100644 vendor/k8s.io/client-go/tools/record/events_cache.go create mode 100644 vendor/k8s.io/client-go/tools/record/events_cache_test.go create mode 100644 vendor/k8s.io/client-go/tools/record/fake.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/BUILD create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/doc.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/errorstream.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/resize.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v1.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v2.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v2_test.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v3.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v4.go create mode 100644 vendor/k8s.io/client-go/tools/remotecommand/v4_test.go create mode 100644 vendor/k8s.io/client-go/transport/BUILD create mode 100755 vendor/k8s.io/client-go/transport/OWNERS create mode 100644 vendor/k8s.io/client-go/transport/cache.go create mode 100644 vendor/k8s.io/client-go/transport/cache_test.go create mode 100644 vendor/k8s.io/client-go/transport/config.go create mode 100644 vendor/k8s.io/client-go/transport/round_trippers.go create mode 100644 vendor/k8s.io/client-go/transport/round_trippers_test.go create mode 100644 vendor/k8s.io/client-go/transport/transport.go create mode 100644 vendor/k8s.io/client-go/transport/transport_test.go create mode 100644 vendor/k8s.io/client-go/util/cert/BUILD create mode 100644 vendor/k8s.io/client-go/util/cert/cert.go create mode 100644 vendor/k8s.io/client-go/util/cert/csr.go create mode 100644 vendor/k8s.io/client-go/util/cert/csr_test.go create mode 100644 vendor/k8s.io/client-go/util/cert/io.go create mode 100644 vendor/k8s.io/client-go/util/cert/pem.go create mode 100644 vendor/k8s.io/client-go/util/cert/triple/BUILD create mode 100644 vendor/k8s.io/client-go/util/cert/triple/triple.go create mode 100644 vendor/k8s.io/client-go/util/exec/BUILD create mode 100644 vendor/k8s.io/client-go/util/exec/exec.go create mode 100644 vendor/k8s.io/client-go/util/flowcontrol/BUILD create mode 100644 vendor/k8s.io/client-go/util/flowcontrol/backoff.go create mode 100644 vendor/k8s.io/client-go/util/flowcontrol/backoff_test.go create mode 100644 vendor/k8s.io/client-go/util/flowcontrol/throttle.go create mode 100644 vendor/k8s.io/client-go/util/flowcontrol/throttle_test.go create mode 100644 vendor/k8s.io/client-go/util/homedir/BUILD create mode 100644 vendor/k8s.io/client-go/util/homedir/homedir.go create mode 100644 vendor/k8s.io/client-go/util/integer/BUILD create mode 100644 vendor/k8s.io/client-go/util/integer/integer.go create mode 100644 vendor/k8s.io/client-go/util/integer/integer_test.go create mode 100644 vendor/k8s.io/client-go/util/jsonpath/BUILD create mode 100644 vendor/k8s.io/client-go/util/jsonpath/doc.go create mode 100644 vendor/k8s.io/client-go/util/jsonpath/jsonpath.go create mode 100644 vendor/k8s.io/client-go/util/jsonpath/jsonpath_test.go create mode 100644 vendor/k8s.io/client-go/util/jsonpath/node.go create mode 100644 vendor/k8s.io/client-go/util/jsonpath/parser.go create mode 100644 vendor/k8s.io/client-go/util/jsonpath/parser_test.go create mode 100644 vendor/k8s.io/client-go/util/testing/BUILD create mode 100644 vendor/k8s.io/client-go/util/testing/fake_handler.go create mode 100644 vendor/k8s.io/client-go/util/testing/fake_handler_test.go create mode 100644 vendor/k8s.io/client-go/util/testing/tmpdir.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/BUILD create mode 100644 vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/default_rate_limiters_test.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/delaying_queue.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/delaying_queue_test.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/doc.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/metrics.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/parallelizer.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/queue.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/queue_test.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue.go create mode 100644 vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue_test.go diff --git a/fnlb/README.md b/fnlb/README.md index c8e5aec8e..afe62d004 100644 --- a/fnlb/README.md +++ b/fnlb/README.md @@ -66,3 +66,65 @@ To list functions nodes and their state: ```sh curl -sSL -X GET /1/lb/nodes ``` + +## Running under Kubernetes + +The fnlb supports a mode of operation which relies on Kubernetes to inform it as Fn pods come in and out of service. In order to run in this mode, some additional command-line flags are required. `-db=k8s` will select Kubernetes operation; in this mode, the `nodes` flag is ignored. `-label-selector=...` is a standard Kubernetes selector expression. + +A sample k8s configuration follows; this expects Fn pods to be labelled `app=fn,role=fn-service`. By default, the lb will look in its own namespace for Fn pods. This can be changed by explicitly passing the `-namespace=...` option. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: fn-service + namespace: fn + labels: + app: fn + role: fn-lb +spec: + type: NodePort + ports: + - name: fn-service + port: 8080 + targetPort: 8080 + nodePort: 32180 + selector: + app: fn + role: fn-lb +--- +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: fn-lb + namespace: fn +spec: + updateStrategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + minReadySeconds: 30 + template: + metadata: + labels: + app: fn + role: fn-lb + spec: + containers: + - name: fn-lb + image: fnproject/fnlb + imagePullPolicy: Always + args: + - "-db=k8s" + - "-label-selector=app=fn,role=fn-service" + - "-listen=:8080" + - "-mgmt-listen=:8080" + ports: + - containerPort: 8080 + env: + - name: LOG_LEVEL + value: debug + +``` + +In this mode, the shared database is not required; each lb will listen to the Kubernetes master independently to derive the same information. The lb nodes continue to health-check Fn pods *in addition* to the health checks running directly as part of a Pod definition. \ No newline at end of file diff --git a/fnlb/lb/allgrouper.go b/fnlb/lb/allgrouper.go index 6703492ad..dfd6a7518 100644 --- a/fnlb/lb/allgrouper.go +++ b/fnlb/lb/allgrouper.go @@ -65,6 +65,9 @@ type nodeState struct { // current health state healthy healthState + + // IP address of remote + address string } // allGrouper will return all healthy nodes it is tracking from List. diff --git a/fnlb/lb/allgrouper_test.go b/fnlb/lb/allgrouper_test.go index 533257548..fa3549a4e 100644 --- a/fnlb/lb/allgrouper_test.go +++ b/fnlb/lb/allgrouper_test.go @@ -47,6 +47,9 @@ func (mock *mockDB) List() ([]string, error) { } return list, nil } +func (mock *mockDB) Close() error { + return nil +} func initializeRunner() (Grouper, error) { db := &mockDB{ diff --git a/fnlb/lb/db.go b/fnlb/lb/db.go index 8dc0b1daa..4fb5a13db 100644 --- a/fnlb/lb/db.go +++ b/fnlb/lb/db.go @@ -3,6 +3,7 @@ package lb import ( "database/sql" "errors" + "io" "net/url" "os" "path/filepath" @@ -16,6 +17,9 @@ import ( ) func NewDB(conf Config) (DBStore, error) { + if conf.DBurl == "k8s" { + return NewK8sStore(conf) + } db, err := db(conf.DBurl) if err != nil { return nil, err @@ -26,6 +30,7 @@ func NewDB(conf Config) (DBStore, error) { // TODO put this somewhere better type DBStore interface { + io.Closer Add(string) error Delete(string) error List() ([]string, error) @@ -151,3 +156,7 @@ func (s *sqlStore) List() ([]string, error) { return nodes, err } + +func (s *sqlStore) Close() error { + return s.db.Close() +} diff --git a/fnlb/lb/k8s_store.go b/fnlb/lb/k8s_store.go new file mode 100644 index 000000000..769f5b2f9 --- /dev/null +++ b/fnlb/lb/k8s_store.go @@ -0,0 +1,181 @@ +package lb + +import ( + "errors" + "fmt" + "io/ioutil" + "strings" + "sync" + + "github.com/sirupsen/logrus" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/rest" +) + +var _ DBStore = &k8sStore{} + +func NewK8sClient(conf Config) (*kubernetes.Clientset, error) { + k8sConfig, err := rest.InClusterConfig() + if err != nil { + return nil, err + } + return kubernetes.NewForConfig(k8sConfig) +} + +func NewK8sStore(conf Config) (*k8sStore, error) { + client, err := NewK8sClient(conf) + if err != nil { + return nil, err + } + + ns := conf.Namespace + if ns == "" { + ns, err = namespace() + if err != nil { + return nil, err + } + } + + _, err = labels.Parse(conf.LabelSelector) + if err != nil { + return nil, err + } + + k := &k8sStore{ + client: client, + + cancel: make(chan struct{}), + + nodes: map[string]string{}, + } + + go k.watch(ns, conf.LabelSelector, conf.TargetPort) + return k, nil +} + +type k8sStore struct { + client *kubernetes.Clientset + + cancel chan struct{} + + nodeLock sync.RWMutex + nodes map[string]string +} + +func (*k8sStore) Add(string) error { + return errors.New("kubernetes driver does not support manual addition of targets") +} + +func (*k8sStore) Delete(string) error { + return errors.New("kubernetes driver does not support manual deletion of targets") +} + +func (k *k8sStore) List() ([]string, error) { + nodes := []string{} + + k.nodeLock.RLock() + defer k.nodeLock.RUnlock() + + for _, addr := range k.nodes { + if addr != "" { + nodes = append(nodes, addr) + } + } + + return nodes, nil +} + +func (k *k8sStore) Close() error { + close(k.cancel) + return nil +} + +// Manage node update and deletion under the hood +func (k *k8sStore) registerNode(node string, addr string) { + k.nodeLock.Lock() + defer k.nodeLock.Unlock() + + if address, ok := k.nodes[node]; ok { + if address != addr { + logrus.WithField("node", node).WithField("address", addr).Info("Updating address of registered node") + } else { + logrus.WithField("node", node).WithField("address", addr).Debug("Attempt to add extant node at known address") + } + } + + k.nodes[node] = addr +} + +func (k *k8sStore) unregisterNode(node string) { + k.nodeLock.Lock() + defer k.nodeLock.Unlock() + + if addr, ok := k.nodes[node]; ok { + logrus.WithField("node", node).WithField("address", addr).Info("Removing registered node") + } else { + logrus.WithField("node", node).Warn("Attempt to remove unknown node") + } + + delete(k.nodes, node) +} + +// Kubernetes-specific stuff + +func namespace() (string, error) { + // Use our current namespace + ns, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/" + v1.ServiceAccountNamespaceKey) + if err != nil { + // If we're not running inside k8s, bail out + return "", err + } + + return strings.TrimSpace(string(ns)), nil +} + +// Watch for pods under a given namespace matching a particular labelselector. +// As they become ready, register an address derived from their PodIP and the specified port +func (k *k8sStore) watch(ns string, ls string, port int) { + pods, err := k.client.CoreV1().Pods(ns).Watch(metav1.ListOptions{LabelSelector: ls}) + if err != nil { + panic(err.Error()) + } + + logrus.WithField("Namespace", ns).WithField("LabelSelector", ls).Info("Watching for pod changes") + + // This runs forever. + for { + select { + case <-k.cancel: + logrus.Info("Stopped watching for pod changes") + pods.Stop() + return + case event := <-pods.ResultChan(): + if pod, ok := event.Object.(*v1.Pod); ok { + logrus. + WithField("Event", event.Type). + WithField("Pod", pod.SelfLink). + WithField("PodPhase", pod.Status.Phase). + WithField("Address", pod.Status.PodIP). + Debug("Change detected") + switch event.Type { + case watch.Added: + fallthrough + case watch.Modified: + logrus.WithField("Pod", pod.SelfLink).WithField("PodIp", pod.Status.PodIP).Debug("New pod detected") + address := "" + if pod.Status.PodIP != "" && pod.Status.Phase == v1.PodRunning { + address = fmt.Sprintf("%s:%d", pod.Status.PodIP, port) + } + k.registerNode(pod.SelfLink, address) + case watch.Deleted: + logrus.WithField("Pod", pod.SelfLink).WithField("PodIp", pod.Status.PodIP).Debug("Pod removed") + k.unregisterNode(pod.SelfLink) + } + } + } + } +} diff --git a/fnlb/lb/proxy.go b/fnlb/lb/proxy.go index 148249fe7..5fb7e86f6 100644 --- a/fnlb/lb/proxy.go +++ b/fnlb/lb/proxy.go @@ -43,6 +43,11 @@ type Config struct { HealthcheckTimeout int `json:"healthcheck_timeout"` MinAPIVersion *semver.Version `json:"min_api_version"` + // Kubernetes support + Namespace string `json:"k8s_namespace"` + LabelSelector string `json:"k8s_label_selector"` + TargetPort int `json:"target_port"` + Transport *http.Transport } diff --git a/fnlb/main.go b/fnlb/main.go index f2e670d01..83d73ed3b 100644 --- a/fnlb/main.go +++ b/fnlb/main.go @@ -21,11 +21,17 @@ const VERSION = "0.0.184" func main() { // XXX (reed): normalize + level, err := logrus.ParseLevel(os.Getenv("LOG_LEVEL")) + if err != nil { + level = logrus.InfoLevel + } + logrus.SetLevel(level) + fnodes := flag.String("nodes", "", "comma separated list of functions nodes") minAPIVersion := flag.String("min-api-version", "0.0.151", "minimal node API to accept") var conf lb.Config - flag.StringVar(&conf.DBurl, "db", "sqlite3://:memory:", "backend to store nodes, default to in memory") + flag.StringVar(&conf.DBurl, "db", "sqlite3://:memory:", "backend to store nodes, default to in memory; use k8s for kuberneted") flag.StringVar(&conf.Listen, "listen", ":8081", "port to run on") flag.StringVar(&conf.MgmtListen, "mgmt-listen", ":8081", "management port to run on") flag.IntVar(&conf.ShutdownTimeout, "shutdown-timeout", 0, "graceful shutdown timeout") @@ -35,6 +41,10 @@ func main() { flag.IntVar(&conf.HealthcheckHealthy, "hc-healthy", 1, "threshold of success checks to declare node healthy") flag.IntVar(&conf.HealthcheckTimeout, "hc-timeout", 5, "timeout of healthcheck endpoint, in seconds") flag.StringVar(&conf.ZipkinURL, "zipkin", "", "zipkin endpoint to send traces") + flag.StringVar(&conf.Namespace, "namespace", "", "kubernetes namespace to monitor") + flag.StringVar(&conf.LabelSelector, "label-selector", "", "kubernetes label selector to monitor") + flag.IntVar(&conf.TargetPort, "target-port", 8080, "kubernetes port to target on selected pods") + flag.Parse() conf.MinAPIVersion = semver.New(*minAPIVersion) @@ -57,10 +67,11 @@ func main() { }, } - db, err := lb.NewDB(conf) + db, err := lb.NewDB(conf) // Handles case where DBurl == "k8s" if err != nil { logrus.WithError(err).Fatal("error setting up database") } + defer db.Close() g, err := lb.NewAllGrouper(conf, db) if err != nil { diff --git a/glide.lock b/glide.lock index 2019ceaab..fa81aa1c2 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: f5176ffa46ec8ac2a1900aee611589c59b5404e9fc668ec3e833dc67c0ad842d -updated: 2017-11-15T14:57:38.939238313-08:00 +hash: 3fa5b86f68121ba1422761f2937e6a9b7f5c330adc6f84e2f3b7b78b87a747d7 +updated: 2017-12-04T17:26:34.506649Z imports: - name: github.com/amir/raidman version: 1ccc43bfb9c93cb401a4025e49c64ba71e5e668b @@ -23,8 +23,6 @@ imports: version: ce77ca9ecdee1c3ffd097e32f9bb832825ccb203 subpackages: - statsd -- name: github.com/cenkalti/backoff - version: 80e08cb804a3eb3e576876c777e957e874609a9a - name: github.com/cloudflare/cfssl version: 7d88da830aad9d533c2fb8532da23f6a75331b52 subpackages: @@ -52,7 +50,7 @@ imports: subpackages: - semver - name: github.com/davecgh/go-spew - version: a476722483882dd40b8111f0eb64e1d7f43f56e4 + version: 5215b55f46b2b919f50a1df0eaa5886afe4e3b3d subpackages: - spew - name: github.com/dchest/siphash @@ -63,8 +61,6 @@ imports: - twitter - name: github.com/dghubble/oauth1 version: 7d51c10e15ca32917b32ce43f6e25840d6951db4 -- name: github.com/dghubble/sling - version: 80ec33c6152a53edb5545864ca37567b506c4ca5 - name: github.com/dgrijalva/jwt-go version: a539ee1a749a2b895533f979515ac7e6e0f5b650 - name: github.com/docker/cli @@ -167,6 +163,12 @@ imports: version: bb955e01b9346ac19dc29eb16586c90ded99a98c - name: github.com/eapache/queue version: 44cc805cf13205b55f69e14bcb69867d1ae92f98 +- name: github.com/emicklei/go-restful + version: ff4f55a206334ef123e4f79bbf348980da81ca46 + subpackages: + - log +- name: github.com/emicklei/go-restful-swagger12 + version: dcef7f55730566d41eae5db10e7d6981829720f6 - name: github.com/fnproject/fn_go version: 7ce3bb2e624df60cdfbfc1ee5483f6df80bb2b1b subpackages: @@ -176,8 +178,6 @@ imports: - client/operations - client/routes - models -- name: github.com/fsnotify/fsnotify - version: 4da3e2cfbabc9f751898f250b49f2439785783a1 - name: github.com/fsouza/go-dockerclient version: 98edf3edfae6a6500fecc69d2bcccf1302544004 - name: github.com/garyburd/redigo @@ -185,6 +185,8 @@ imports: subpackages: - internal - redis +- name: github.com/ghodss/yaml + version: 73d445a93680fa1a78ae23a5839bad48f32ba1ee - name: github.com/gin-contrib/cors version: cf4846e6a636a76237a28d9286f163c132e841bc - name: github.com/gin-contrib/sse @@ -206,7 +208,7 @@ imports: - name: github.com/go-openapi/jsonpointer version: 779f45308c19820f1a69e9a4cd965f496e0da10f - name: github.com/go-openapi/jsonreference - version: 36d33bfe519efae5632669801b180bf1a245da3b + version: 13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272 - name: github.com/go-openapi/loads version: a80dea3052f00e5f032e860dd7355cd0cc67e24d subpackages: @@ -226,15 +228,17 @@ imports: - name: github.com/go-sql-driver/mysql version: 21d7e97c9f760ca685a01ecea202e1c84276daa1 - name: github.com/gogo/protobuf - version: 100ba4e885062801d56799d78530b73b178a78f3 + version: c0656edd0d9eab7c66d1eb0c568f9039345796f7 subpackages: - gogoproto - proto - protoc-gen-gogo/descriptor - sortkeys - types +- name: github.com/golang/glog + version: 44145f04b68cf362d9c4df2182967c2275eaefed - name: github.com/golang/protobuf - version: 5a0f697c9ed9d68fef0116532c6e05cfeae00e55 + version: 4bd1920723d7b7c925de087aa32e2187708897f7 subpackages: - proto - ptypes/any @@ -252,10 +256,8 @@ imports: - tls - x509 - x509/pkix -- name: github.com/google/go-querystring - version: 53e6ce116135b80d037921a7fdd5138cf32d7a8a - subpackages: - - query +- name: github.com/google/gofuzz + version: 44d81051d367757e1c7c6a5a86423ece9afcf63c - name: github.com/gorilla/context version: 08b5f424b9271eedf6f9f0ce86cb9396ed337a42 - name: github.com/gorilla/mux @@ -267,20 +269,9 @@ imports: - name: github.com/hashicorp/go-memdb version: ec43fcf8f202880feb35d2abb40a570c1f4172e9 - name: github.com/hashicorp/golang-lru - version: 0a025b7e63adc15a622f29b0b2c4c3848243bbf6 + version: a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4 subpackages: - simplelru -- name: github.com/hashicorp/hcl - version: 68e816d1c783414e79bc65b3994d9ab6b0a722ab - subpackages: - - hcl/ast - - hcl/parser - - hcl/scanner - - hcl/strconv - - hcl/token - - json/parser - - json/scanner - - json/token - name: github.com/jmoiron/jsonq version: e874b168d07ecc7808bc950a17998a8aa3141d82 - name: github.com/jmoiron/sqlx @@ -289,16 +280,16 @@ imports: - reflectx - name: github.com/json-iterator/go version: fdfe0b9a69118ff692d6e1005e9de7e0cffb7d6b +- name: github.com/juju/ratelimit + version: 5b9ff866471762aa2ab2dced63c9fb6f53921342 - name: github.com/kr/logfmt version: b84e30acd515aadc4b783ad4ff83aff3299bdfe0 - name: github.com/lib/pq version: 23da1db4f16d9658a86ae9b717c245fc078f10f1 subpackages: - oid -- name: github.com/magiconair/properties - version: 8d7837e64d3c1ee4e54a880c5a920ab4316fc90a - name: github.com/mailru/easyjson - version: 2f5df55504ebc322e4d52d34df6a1f5b503bf26d + version: 32fa128f234d041f196a9f3e0fea5ac9772c08e1 subpackages: - buffer - jlexer @@ -362,8 +353,6 @@ imports: - wire - name: github.com/patrickmn/go-cache version: a3647f8e31d79543b2d0f0ae2fe5c379d72cedc0 -- name: github.com/pelletier/go-toml - version: 1d6b12b7cb290426e27e6b4e38b89fcda3aeef03 - name: github.com/pierrec/lz4 version: 08c27939df1bd95e881e2c2367a749964ad1fceb - name: github.com/pierrec/xxHash @@ -392,9 +381,9 @@ imports: subpackages: - xfs - name: github.com/PuerkitoBio/purell - version: 7cf257f0a33260797b0febf39f95fccd86aab2a3 + version: 8a290539e2e8629dbc4e6bad948158f790ec31f4 - name: github.com/PuerkitoBio/urlesc - version: de5bf2ad457846296e2031421a34e2568e304e35 + version: 5bd2802263f21d8788851d5305584c82a5c75d7e - name: github.com/rcrowley/go-metrics version: 1f30fe9094a513ce4c700b9a54458bbb0c96996c - name: github.com/rdallman/migrate @@ -411,21 +400,21 @@ imports: version: 89742aefa4b206dcf400792f3bd35b542998eb3b subpackages: - hooks/syslog +- name: github.com/spf13/pflag + version: 9ff6c6923cfffbcd502984b8e0c80539a94968b7 - name: github.com/ugorji/go - version: 54210f4e076c57f351166f0ed60e67d3fca57a36 + version: ded73eae5db7e7a0ef6f55aace87a2873c5d2b74 subpackages: - codec - name: golang.org/x/crypto - version: 9f005a07e0d31d45e6656d241bb5c0f2efd4bc94 + version: 94eea52f7b742c7cbe0b03b22f0c4c8631ece122 subpackages: - - bcrypt - - blowfish - ocsp - pkcs12 - pkcs12/internal/rc2 - ssh/terminal - name: golang.org/x/net - version: 66aacef3dd8a676686c7ae3716979581e8b03c47 + version: a8b9294777976932365dabb6640cf1468d95c70f subpackages: - context - context/ctxhttp @@ -436,14 +425,20 @@ imports: - lex/httplex - trace - name: golang.org/x/sys - version: 07c182904dbd53199946ba614a412c61d3c548f5 + version: 8b4580aae2a0dd0c231a45d3ccb8434ff533b840 subpackages: - unix - windows - name: golang.org/x/text - version: b19bf474d317b857955b12035d2c5acb57ce8b01 + version: 57961680700a5336d15015c8c50686ca5ba362a4 subpackages: + - cases + - internal + - internal/tag + - language + - runes - secure/bidirule + - secure/precis - transform - unicode/bidi - unicode/norm @@ -470,13 +465,131 @@ imports: - transport - name: gopkg.in/go-playground/validator.v8 version: 5f1438d3fca68893a817e4a66806cea46a9e4ebf +- name: gopkg.in/inf.v0 + version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 - name: gopkg.in/mgo.v2 version: 3f83fa5005286a7fe593b055f0d7771a7dce4655 subpackages: - bson - internal/json - - internal/sasl - - internal/scram - name: gopkg.in/yaml.v2 - version: eb3733d160e74a9c7e442f435eb3bea458e1d19f + version: 53feefa2559fb8dfa8d81baad31be332c97d6c77 +- name: k8s.io/apimachinery + version: 1fd2e63a9a370677308a42f24fd40c86438afddf + subpackages: + - pkg/api/equality + - pkg/api/errors + - pkg/api/meta + - pkg/api/resource + - pkg/apimachinery + - pkg/apimachinery/announced + - pkg/apimachinery/registered + - pkg/apis/meta/v1 + - pkg/apis/meta/v1/unstructured + - pkg/apis/meta/v1alpha1 + - pkg/conversion + - pkg/conversion/queryparams + - pkg/conversion/unstructured + - pkg/fields + - pkg/labels + - pkg/openapi + - pkg/runtime + - pkg/runtime/schema + - pkg/runtime/serializer + - pkg/runtime/serializer/json + - pkg/runtime/serializer/protobuf + - pkg/runtime/serializer/recognizer + - pkg/runtime/serializer/streaming + - pkg/runtime/serializer/versioning + - pkg/selection + - pkg/types + - pkg/util/clock + - pkg/util/diff + - pkg/util/errors + - pkg/util/framer + - pkg/util/intstr + - pkg/util/json + - pkg/util/net + - pkg/util/rand + - pkg/util/runtime + - pkg/util/sets + - pkg/util/validation + - pkg/util/validation/field + - pkg/util/wait + - pkg/util/yaml + - pkg/version + - pkg/watch + - third_party/forked/golang/reflect +- name: k8s.io/client-go + version: d92e8497f71b7b4e0494e5bd204b48d34bd6f254 + subpackages: + - discovery + - kubernetes + - kubernetes/scheme + - kubernetes/typed/admissionregistration/v1alpha1 + - kubernetes/typed/apps/v1beta1 + - kubernetes/typed/authentication/v1 + - kubernetes/typed/authentication/v1beta1 + - kubernetes/typed/authorization/v1 + - kubernetes/typed/authorization/v1beta1 + - kubernetes/typed/autoscaling/v1 + - kubernetes/typed/autoscaling/v2alpha1 + - kubernetes/typed/batch/v1 + - kubernetes/typed/batch/v2alpha1 + - kubernetes/typed/certificates/v1beta1 + - kubernetes/typed/core/v1 + - kubernetes/typed/extensions/v1beta1 + - kubernetes/typed/networking/v1 + - kubernetes/typed/policy/v1beta1 + - kubernetes/typed/rbac/v1alpha1 + - kubernetes/typed/rbac/v1beta1 + - kubernetes/typed/settings/v1alpha1 + - kubernetes/typed/storage/v1 + - kubernetes/typed/storage/v1beta1 + - pkg/api + - pkg/api/v1 + - pkg/api/v1/ref + - pkg/apis/admissionregistration + - pkg/apis/admissionregistration/v1alpha1 + - pkg/apis/apps + - pkg/apis/apps/v1beta1 + - pkg/apis/authentication + - pkg/apis/authentication/v1 + - pkg/apis/authentication/v1beta1 + - pkg/apis/authorization + - pkg/apis/authorization/v1 + - pkg/apis/authorization/v1beta1 + - pkg/apis/autoscaling + - pkg/apis/autoscaling/v1 + - pkg/apis/autoscaling/v2alpha1 + - pkg/apis/batch + - pkg/apis/batch/v1 + - pkg/apis/batch/v2alpha1 + - pkg/apis/certificates + - pkg/apis/certificates/v1beta1 + - pkg/apis/extensions + - pkg/apis/extensions/v1beta1 + - pkg/apis/networking + - pkg/apis/networking/v1 + - pkg/apis/policy + - pkg/apis/policy/v1beta1 + - pkg/apis/rbac + - pkg/apis/rbac/v1alpha1 + - pkg/apis/rbac/v1beta1 + - pkg/apis/settings + - pkg/apis/settings/v1alpha1 + - pkg/apis/storage + - pkg/apis/storage/v1 + - pkg/apis/storage/v1beta1 + - pkg/util + - pkg/util/parsers + - pkg/version + - rest + - rest/watch + - tools/clientcmd/api + - tools/metrics + - transport + - util/cert + - util/flowcontrol + - util/integer testImports: [] diff --git a/glide.yaml b/glide.yaml index b9c869ca6..65ba92b16 100644 --- a/glide.yaml +++ b/glide.yaml @@ -35,7 +35,6 @@ import: - redis - package: github.com/gin-gonic/gin - package: github.com/rdallman/migrate - # TODO change to mattes/migrate w/ https://github.com/mattes/migrate/pull/299 version: bc72eeb997c7334cb5f05f5aefd2d70bc34d71ef - package: github.com/go-openapi/errors - package: github.com/go-openapi/loads @@ -75,5 +74,25 @@ import: - package: github.com/prometheus/client_golang - package: github.com/gin-contrib/cors version: ~1.2.0 +- package: k8s.io/client-go + version: ^v4.0.0 + subpackages: + - kubernetes +- package: github.com/emicklei/go-restful-swagger12 +- package: github.com/juju/ratelimit +- package: golang.org/x/sys + version: master + subpackages: + - unix +- package: golang.org/x/net + version: master + subpackages: + - http2 +- package: golang.org/x/text + version: master +- package: github.com/mailru/easyjson + version: master + subpackages: + - jwriter testImport: - package: github.com/patrickmn/go-cache diff --git a/vendor/github.com/PuerkitoBio/purell/.travis.yml b/vendor/github.com/PuerkitoBio/purell/.travis.yml index 5eae14fa4..facfc91c6 100644 --- a/vendor/github.com/PuerkitoBio/purell/.travis.yml +++ b/vendor/github.com/PuerkitoBio/purell/.travis.yml @@ -1,9 +1,7 @@ language: go go: - - 1.4.x - - 1.5.x - - 1.6.x - - 1.7.x - - 1.8.x + - 1.4 + - 1.5 + - 1.6 - tip diff --git a/vendor/github.com/PuerkitoBio/purell/README.md b/vendor/github.com/PuerkitoBio/purell/README.md index f33e2e9d7..a78a3df65 100644 --- a/vendor/github.com/PuerkitoBio/purell/README.md +++ b/vendor/github.com/PuerkitoBio/purell/README.md @@ -4,7 +4,7 @@ Purell is a tiny Go library to normalize URLs. It returns a pure URL. Pure-ell. Based on the [wikipedia paper][wiki] and the [RFC 3986 document][rfc]. -[![build status](https://travis-ci.org/PuerkitoBio/purell.svg?branch=master)](http://travis-ci.org/PuerkitoBio/purell) +[![build status](https://secure.travis-ci.org/PuerkitoBio/purell.png)](http://travis-ci.org/PuerkitoBio/purell) ## Install @@ -12,7 +12,6 @@ Based on the [wikipedia paper][wiki] and the [RFC 3986 document][rfc]. ## Changelog -* **2016-11-14 (v1.1.0)** : IDN: Conform to RFC 5895: Fold character width (thanks to @beeker1121). * **2016-07-27 (v1.0.0)** : Normalize IDN to ASCII (thanks to @zenovich). * **2015-02-08** : Add fix for relative paths issue ([PR #5][pr5]) and add fix for unnecessary encoding of reserved characters ([see issue #7][iss7]). * **v0.2.0** : Add benchmarks, Attempt IDN support. @@ -173,7 +172,6 @@ And with `FlagsUnsafeGreedy`: @opennota @pchristopher1275 @zenovich -@beeker1121 ## License diff --git a/vendor/github.com/PuerkitoBio/purell/purell.go b/vendor/github.com/PuerkitoBio/purell/purell.go index 645e1b76f..b79da64b3 100644 --- a/vendor/github.com/PuerkitoBio/purell/purell.go +++ b/vendor/github.com/PuerkitoBio/purell/purell.go @@ -15,8 +15,8 @@ import ( "github.com/PuerkitoBio/urlesc" "golang.org/x/net/idna" + "golang.org/x/text/secure/precis" "golang.org/x/text/unicode/norm" - "golang.org/x/text/width" ) // A set of normalization flags determines how a URL will @@ -150,26 +150,22 @@ func MustNormalizeURLString(u string, f NormalizationFlags) string { // NormalizeURLString returns the normalized string, or an error if it can't be parsed into an URL object. // It takes an URL string as input, as well as the normalization flags. func NormalizeURLString(u string, f NormalizationFlags) (string, error) { - parsed, err := url.Parse(u) - if err != nil { - return "", err + if parsed, e := url.Parse(u); e != nil { + return "", e + } else { + options := make([]precis.Option, 1, 3) + options[0] = precis.IgnoreCase + if f&FlagLowercaseHost == FlagLowercaseHost { + options = append(options, precis.FoldCase()) + } + options = append(options, precis.Norm(norm.NFC)) + profile := precis.NewFreeform(options...) + if parsed.Host, e = idna.ToASCII(profile.NewTransformer().String(parsed.Host)); e != nil { + return "", e + } + return NormalizeURL(parsed, f), nil } - - if f&FlagLowercaseHost == FlagLowercaseHost { - parsed.Host = strings.ToLower(parsed.Host) - } - - // The idna package doesn't fully conform to RFC 5895 - // (https://tools.ietf.org/html/rfc5895), so we do it here. - // Taken from Go 1.8 cycle source, courtesy of bradfitz. - // TODO: Remove when (if?) idna package conforms to RFC 5895. - parsed.Host = width.Fold.String(parsed.Host) - parsed.Host = norm.NFC.String(parsed.Host) - if parsed.Host, err = idna.ToASCII(parsed.Host); err != nil { - return "", err - } - - return NormalizeURL(parsed, f), nil + panic("Unreachable code.") } // NormalizeURL returns the normalized string. diff --git a/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go b/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go index d1b2ca6c0..a598fe928 100644 --- a/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go +++ b/vendor/github.com/PuerkitoBio/purell/urlnorm_test.go @@ -35,7 +35,6 @@ func TestUrlnorm(t *testing.T) { "http://XBLA\u306eXbox.com": "http://xn--xblaxbox-jf4g.com", //test utf8 and unicode "http://президент.рф": "http://xn--d1abbgf6aiiy.xn--p1ai", "http://ПРЕЗИДЕНТ.РФ": "http://xn--d1abbgf6aiiy.xn--p1ai", - "http://ab¥ヲ₩○.com": "http://xn--ab-ida8983azmfnvs.com", //test width folding "http://\u00e9.com": "http://xn--9ca.com", "http://e\u0301.com": "http://xn--9ca.com", "http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%82%BF%E3%83%94%E3%83%A9%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%91%E3%83%B3": "http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%82%BF%E3%83%94%E3%83%A9%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%91%E3%83%B3", diff --git a/vendor/github.com/PuerkitoBio/urlesc/.travis.yml b/vendor/github.com/PuerkitoBio/urlesc/.travis.yml index ba6b225f9..478630e50 100644 --- a/vendor/github.com/PuerkitoBio/urlesc/.travis.yml +++ b/vendor/github.com/PuerkitoBio/urlesc/.travis.yml @@ -1,11 +1,7 @@ language: go go: - - 1.4.x - - 1.5.x - - 1.6.x - - 1.7.x - - 1.8.x + - 1.4 - tip install: diff --git a/vendor/github.com/PuerkitoBio/urlesc/README.md b/vendor/github.com/PuerkitoBio/urlesc/README.md index 57aff0a53..bebe305e0 100644 --- a/vendor/github.com/PuerkitoBio/urlesc/README.md +++ b/vendor/github.com/PuerkitoBio/urlesc/README.md @@ -1,4 +1,4 @@ -urlesc [![Build Status](https://travis-ci.org/PuerkitoBio/urlesc.svg?branch=master)](https://travis-ci.org/PuerkitoBio/urlesc) [![GoDoc](http://godoc.org/github.com/PuerkitoBio/urlesc?status.svg)](http://godoc.org/github.com/PuerkitoBio/urlesc) +urlesc [![Build Status](https://travis-ci.org/PuerkitoBio/urlesc.png?branch=master)](https://travis-ci.org/PuerkitoBio/urlesc) [![GoDoc](http://godoc.org/github.com/PuerkitoBio/urlesc?status.svg)](http://godoc.org/github.com/PuerkitoBio/urlesc) ====== Package urlesc implements query escaping as per RFC 3986. diff --git a/vendor/github.com/cenkalti/backoff/.gitignore b/vendor/github.com/cenkalti/backoff/.gitignore deleted file mode 100644 index 00268614f..000000000 --- a/vendor/github.com/cenkalti/backoff/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe diff --git a/vendor/github.com/cenkalti/backoff/.travis.yml b/vendor/github.com/cenkalti/backoff/.travis.yml deleted file mode 100644 index d6f85ad6e..000000000 --- a/vendor/github.com/cenkalti/backoff/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: go -go: - - 1.3.3 - - 1.x - - tip -before_install: - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -service=travis-ci diff --git a/vendor/github.com/cenkalti/backoff/LICENSE b/vendor/github.com/cenkalti/backoff/LICENSE deleted file mode 100644 index 89b817996..000000000 --- a/vendor/github.com/cenkalti/backoff/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Cenk Altı - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/cenkalti/backoff/README.md b/vendor/github.com/cenkalti/backoff/README.md deleted file mode 100644 index 13b347fb9..000000000 --- a/vendor/github.com/cenkalti/backoff/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Exponential Backoff [![GoDoc][godoc image]][godoc] [![Build Status][travis image]][travis] [![Coverage Status][coveralls image]][coveralls] - -This is a Go port of the exponential backoff algorithm from [Google's HTTP Client Library for Java][google-http-java-client]. - -[Exponential backoff][exponential backoff wiki] -is an algorithm that uses feedback to multiplicatively decrease the rate of some process, -in order to gradually find an acceptable rate. -The retries exponentially increase and stop increasing when a certain threshold is met. - -## Usage - -See https://godoc.org/github.com/cenkalti/backoff#pkg-examples - -## Contributing - -* I would like to keep this library as small as possible. -* Please don't send a PR without opening an issue and discussing it first. -* If proposed change is not a common use case, I will probably not accept it. - -[godoc]: https://godoc.org/github.com/cenkalti/backoff -[godoc image]: https://godoc.org/github.com/cenkalti/backoff?status.png -[travis]: https://travis-ci.org/cenkalti/backoff -[travis image]: https://travis-ci.org/cenkalti/backoff.png?branch=master -[coveralls]: https://coveralls.io/github/cenkalti/backoff?branch=master -[coveralls image]: https://coveralls.io/repos/github/cenkalti/backoff/badge.svg?branch=master - -[google-http-java-client]: https://github.com/google/google-http-java-client -[exponential backoff wiki]: http://en.wikipedia.org/wiki/Exponential_backoff - -[advanced example]: https://godoc.org/github.com/cenkalti/backoff#example_ diff --git a/vendor/github.com/cenkalti/backoff/backoff.go b/vendor/github.com/cenkalti/backoff/backoff.go deleted file mode 100644 index 2102c5f2d..000000000 --- a/vendor/github.com/cenkalti/backoff/backoff.go +++ /dev/null @@ -1,66 +0,0 @@ -// Package backoff implements backoff algorithms for retrying operations. -// -// Use Retry function for retrying operations that may fail. -// If Retry does not meet your needs, -// copy/paste the function into your project and modify as you wish. -// -// There is also Ticker type similar to time.Ticker. -// You can use it if you need to work with channels. -// -// See Examples section below for usage examples. -package backoff - -import "time" - -// BackOff is a backoff policy for retrying an operation. -type BackOff interface { - // NextBackOff returns the duration to wait before retrying the operation, - // or backoff.Stop to indicate that no more retries should be made. - // - // Example usage: - // - // duration := backoff.NextBackOff(); - // if (duration == backoff.Stop) { - // // Do not retry operation. - // } else { - // // Sleep for duration and retry operation. - // } - // - NextBackOff() time.Duration - - // Reset to initial state. - Reset() -} - -// Stop indicates that no more retries should be made for use in NextBackOff(). -const Stop time.Duration = -1 - -// ZeroBackOff is a fixed backoff policy whose backoff time is always zero, -// meaning that the operation is retried immediately without waiting, indefinitely. -type ZeroBackOff struct{} - -func (b *ZeroBackOff) Reset() {} - -func (b *ZeroBackOff) NextBackOff() time.Duration { return 0 } - -// StopBackOff is a fixed backoff policy that always returns backoff.Stop for -// NextBackOff(), meaning that the operation should never be retried. -type StopBackOff struct{} - -func (b *StopBackOff) Reset() {} - -func (b *StopBackOff) NextBackOff() time.Duration { return Stop } - -// ConstantBackOff is a backoff policy that always returns the same backoff delay. -// This is in contrast to an exponential backoff policy, -// which returns a delay that grows longer as you call NextBackOff() over and over again. -type ConstantBackOff struct { - Interval time.Duration -} - -func (b *ConstantBackOff) Reset() {} -func (b *ConstantBackOff) NextBackOff() time.Duration { return b.Interval } - -func NewConstantBackOff(d time.Duration) *ConstantBackOff { - return &ConstantBackOff{Interval: d} -} diff --git a/vendor/github.com/cenkalti/backoff/backoff_test.go b/vendor/github.com/cenkalti/backoff/backoff_test.go deleted file mode 100644 index 91f27c4f1..000000000 --- a/vendor/github.com/cenkalti/backoff/backoff_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package backoff - -import ( - "testing" - "time" -) - -func TestNextBackOffMillis(t *testing.T) { - subtestNextBackOff(t, 0, new(ZeroBackOff)) - subtestNextBackOff(t, Stop, new(StopBackOff)) -} - -func subtestNextBackOff(t *testing.T, expectedValue time.Duration, backOffPolicy BackOff) { - for i := 0; i < 10; i++ { - next := backOffPolicy.NextBackOff() - if next != expectedValue { - t.Errorf("got: %d expected: %d", next, expectedValue) - } - } -} - -func TestConstantBackOff(t *testing.T) { - backoff := NewConstantBackOff(time.Second) - if backoff.NextBackOff() != time.Second { - t.Error("invalid interval") - } -} diff --git a/vendor/github.com/cenkalti/backoff/context.go b/vendor/github.com/cenkalti/backoff/context.go deleted file mode 100644 index 5d1570925..000000000 --- a/vendor/github.com/cenkalti/backoff/context.go +++ /dev/null @@ -1,60 +0,0 @@ -package backoff - -import ( - "time" - - "golang.org/x/net/context" -) - -// BackOffContext is a backoff policy that stops retrying after the context -// is canceled. -type BackOffContext interface { - BackOff - Context() context.Context -} - -type backOffContext struct { - BackOff - ctx context.Context -} - -// WithContext returns a BackOffContext with context ctx -// -// ctx must not be nil -func WithContext(b BackOff, ctx context.Context) BackOffContext { - if ctx == nil { - panic("nil context") - } - - if b, ok := b.(*backOffContext); ok { - return &backOffContext{ - BackOff: b.BackOff, - ctx: ctx, - } - } - - return &backOffContext{ - BackOff: b, - ctx: ctx, - } -} - -func ensureContext(b BackOff) BackOffContext { - if cb, ok := b.(BackOffContext); ok { - return cb - } - return WithContext(b, context.Background()) -} - -func (b *backOffContext) Context() context.Context { - return b.ctx -} - -func (b *backOffContext) NextBackOff() time.Duration { - select { - case <-b.Context().Done(): - return Stop - default: - return b.BackOff.NextBackOff() - } -} diff --git a/vendor/github.com/cenkalti/backoff/context_test.go b/vendor/github.com/cenkalti/backoff/context_test.go deleted file mode 100644 index 993fa6149..000000000 --- a/vendor/github.com/cenkalti/backoff/context_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package backoff - -import ( - "testing" - "time" - - "golang.org/x/net/context" -) - -func TestContext(t *testing.T) { - b := NewConstantBackOff(time.Millisecond) - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - cb := WithContext(b, ctx) - - if cb.Context() != ctx { - t.Error("invalid context") - } - - cancel() - - if cb.NextBackOff() != Stop { - t.Error("invalid next back off") - } -} diff --git a/vendor/github.com/cenkalti/backoff/example_test.go b/vendor/github.com/cenkalti/backoff/example_test.go deleted file mode 100644 index d97a8db8e..000000000 --- a/vendor/github.com/cenkalti/backoff/example_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package backoff - -import ( - "log" - - "golang.org/x/net/context" -) - -func ExampleRetry() { - // An operation that may fail. - operation := func() error { - return nil // or an error - } - - err := Retry(operation, NewExponentialBackOff()) - if err != nil { - // Handle error. - return - } - - // Operation is successful. -} - -func ExampleRetryContext() { - // A context - ctx := context.Background() - - // An operation that may fail. - operation := func() error { - return nil // or an error - } - - b := WithContext(NewExponentialBackOff(), ctx) - - err := Retry(operation, b) - if err != nil { - // Handle error. - return - } - - // Operation is successful. -} - -func ExampleTicker() { - // An operation that may fail. - operation := func() error { - return nil // or an error - } - - ticker := NewTicker(NewExponentialBackOff()) - - var err error - - // Ticks will continue to arrive when the previous operation is still running, - // so operations that take a while to fail could run in quick succession. - for _ = range ticker.C { - if err = operation(); err != nil { - log.Println(err, "will retry...") - continue - } - - ticker.Stop() - break - } - - if err != nil { - // Operation has failed. - return - } - - // Operation is successful. - return -} diff --git a/vendor/github.com/cenkalti/backoff/exponential.go b/vendor/github.com/cenkalti/backoff/exponential.go deleted file mode 100644 index 9a6addf07..000000000 --- a/vendor/github.com/cenkalti/backoff/exponential.go +++ /dev/null @@ -1,156 +0,0 @@ -package backoff - -import ( - "math/rand" - "time" -) - -/* -ExponentialBackOff is a backoff implementation that increases the backoff -period for each retry attempt using a randomization function that grows exponentially. - -NextBackOff() is calculated using the following formula: - - randomized interval = - RetryInterval * (random value in range [1 - RandomizationFactor, 1 + RandomizationFactor]) - -In other words NextBackOff() will range between the randomization factor -percentage below and above the retry interval. - -For example, given the following parameters: - - RetryInterval = 2 - RandomizationFactor = 0.5 - Multiplier = 2 - -the actual backoff period used in the next retry attempt will range between 1 and 3 seconds, -multiplied by the exponential, that is, between 2 and 6 seconds. - -Note: MaxInterval caps the RetryInterval and not the randomized interval. - -If the time elapsed since an ExponentialBackOff instance is created goes past the -MaxElapsedTime, then the method NextBackOff() starts returning backoff.Stop. - -The elapsed time can be reset by calling Reset(). - -Example: Given the following default arguments, for 10 tries the sequence will be, -and assuming we go over the MaxElapsedTime on the 10th try: - - Request # RetryInterval (seconds) Randomized Interval (seconds) - - 1 0.5 [0.25, 0.75] - 2 0.75 [0.375, 1.125] - 3 1.125 [0.562, 1.687] - 4 1.687 [0.8435, 2.53] - 5 2.53 [1.265, 3.795] - 6 3.795 [1.897, 5.692] - 7 5.692 [2.846, 8.538] - 8 8.538 [4.269, 12.807] - 9 12.807 [6.403, 19.210] - 10 19.210 backoff.Stop - -Note: Implementation is not thread-safe. -*/ -type ExponentialBackOff struct { - InitialInterval time.Duration - RandomizationFactor float64 - Multiplier float64 - MaxInterval time.Duration - // After MaxElapsedTime the ExponentialBackOff stops. - // It never stops if MaxElapsedTime == 0. - MaxElapsedTime time.Duration - Clock Clock - - currentInterval time.Duration - startTime time.Time - random *rand.Rand -} - -// Clock is an interface that returns current time for BackOff. -type Clock interface { - Now() time.Time -} - -// Default values for ExponentialBackOff. -const ( - DefaultInitialInterval = 500 * time.Millisecond - DefaultRandomizationFactor = 0.5 - DefaultMultiplier = 1.5 - DefaultMaxInterval = 60 * time.Second - DefaultMaxElapsedTime = 15 * time.Minute -) - -// NewExponentialBackOff creates an instance of ExponentialBackOff using default values. -func NewExponentialBackOff() *ExponentialBackOff { - b := &ExponentialBackOff{ - InitialInterval: DefaultInitialInterval, - RandomizationFactor: DefaultRandomizationFactor, - Multiplier: DefaultMultiplier, - MaxInterval: DefaultMaxInterval, - MaxElapsedTime: DefaultMaxElapsedTime, - Clock: SystemClock, - random: rand.New(rand.NewSource(time.Now().UnixNano())), - } - b.Reset() - return b -} - -type systemClock struct{} - -func (t systemClock) Now() time.Time { - return time.Now() -} - -// SystemClock implements Clock interface that uses time.Now(). -var SystemClock = systemClock{} - -// Reset the interval back to the initial retry interval and restarts the timer. -func (b *ExponentialBackOff) Reset() { - b.currentInterval = b.InitialInterval - b.startTime = b.Clock.Now() -} - -// NextBackOff calculates the next backoff interval using the formula: -// Randomized interval = RetryInterval +/- (RandomizationFactor * RetryInterval) -func (b *ExponentialBackOff) NextBackOff() time.Duration { - // Make sure we have not gone over the maximum elapsed time. - if b.MaxElapsedTime != 0 && b.GetElapsedTime() > b.MaxElapsedTime { - return Stop - } - defer b.incrementCurrentInterval() - if b.random == nil { - b.random = rand.New(rand.NewSource(time.Now().UnixNano())) - } - return getRandomValueFromInterval(b.RandomizationFactor, b.random.Float64(), b.currentInterval) -} - -// GetElapsedTime returns the elapsed time since an ExponentialBackOff instance -// is created and is reset when Reset() is called. -// -// The elapsed time is computed using time.Now().UnixNano(). -func (b *ExponentialBackOff) GetElapsedTime() time.Duration { - return b.Clock.Now().Sub(b.startTime) -} - -// Increments the current interval by multiplying it with the multiplier. -func (b *ExponentialBackOff) incrementCurrentInterval() { - // Check for overflow, if overflow is detected set the current interval to the max interval. - if float64(b.currentInterval) >= float64(b.MaxInterval)/b.Multiplier { - b.currentInterval = b.MaxInterval - } else { - b.currentInterval = time.Duration(float64(b.currentInterval) * b.Multiplier) - } -} - -// Returns a random value from the following interval: -// [randomizationFactor * currentInterval, randomizationFactor * currentInterval]. -func getRandomValueFromInterval(randomizationFactor, random float64, currentInterval time.Duration) time.Duration { - var delta = randomizationFactor * float64(currentInterval) - var minInterval = float64(currentInterval) - delta - var maxInterval = float64(currentInterval) + delta - - // Get a random value from the range [minInterval, maxInterval]. - // The formula used below has a +1 because if the minInterval is 1 and the maxInterval is 3 then - // we want a 33% chance for selecting either 1, 2 or 3. - return time.Duration(minInterval + (random * (maxInterval - minInterval + 1))) -} diff --git a/vendor/github.com/cenkalti/backoff/exponential_test.go b/vendor/github.com/cenkalti/backoff/exponential_test.go deleted file mode 100644 index 11b95e4f6..000000000 --- a/vendor/github.com/cenkalti/backoff/exponential_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package backoff - -import ( - "math" - "testing" - "time" -) - -func TestBackOff(t *testing.T) { - var ( - testInitialInterval = 500 * time.Millisecond - testRandomizationFactor = 0.1 - testMultiplier = 2.0 - testMaxInterval = 5 * time.Second - testMaxElapsedTime = 15 * time.Minute - ) - - exp := NewExponentialBackOff() - exp.InitialInterval = testInitialInterval - exp.RandomizationFactor = testRandomizationFactor - exp.Multiplier = testMultiplier - exp.MaxInterval = testMaxInterval - exp.MaxElapsedTime = testMaxElapsedTime - exp.Reset() - - var expectedResults = []time.Duration{500, 1000, 2000, 4000, 5000, 5000, 5000, 5000, 5000, 5000} - for i, d := range expectedResults { - expectedResults[i] = d * time.Millisecond - } - - for _, expected := range expectedResults { - assertEquals(t, expected, exp.currentInterval) - // Assert that the next backoff falls in the expected range. - var minInterval = expected - time.Duration(testRandomizationFactor*float64(expected)) - var maxInterval = expected + time.Duration(testRandomizationFactor*float64(expected)) - var actualInterval = exp.NextBackOff() - if !(minInterval <= actualInterval && actualInterval <= maxInterval) { - t.Error("error") - } - } -} - -func TestGetRandomizedInterval(t *testing.T) { - // 33% chance of being 1. - assertEquals(t, 1, getRandomValueFromInterval(0.5, 0, 2)) - assertEquals(t, 1, getRandomValueFromInterval(0.5, 0.33, 2)) - // 33% chance of being 2. - assertEquals(t, 2, getRandomValueFromInterval(0.5, 0.34, 2)) - assertEquals(t, 2, getRandomValueFromInterval(0.5, 0.66, 2)) - // 33% chance of being 3. - assertEquals(t, 3, getRandomValueFromInterval(0.5, 0.67, 2)) - assertEquals(t, 3, getRandomValueFromInterval(0.5, 0.99, 2)) -} - -type TestClock struct { - i time.Duration - start time.Time -} - -func (c *TestClock) Now() time.Time { - t := c.start.Add(c.i) - c.i += time.Second - return t -} - -func TestGetElapsedTime(t *testing.T) { - var exp = NewExponentialBackOff() - exp.Clock = &TestClock{} - exp.Reset() - - var elapsedTime = exp.GetElapsedTime() - if elapsedTime != time.Second { - t.Errorf("elapsedTime=%d", elapsedTime) - } -} - -func TestMaxElapsedTime(t *testing.T) { - var exp = NewExponentialBackOff() - exp.Clock = &TestClock{start: time.Time{}.Add(10000 * time.Second)} - // Change the currentElapsedTime to be 0 ensuring that the elapsed time will be greater - // than the max elapsed time. - exp.startTime = time.Time{} - assertEquals(t, Stop, exp.NextBackOff()) -} - -func TestBackOffOverflow(t *testing.T) { - var ( - testInitialInterval time.Duration = math.MaxInt64 / 2 - testMaxInterval time.Duration = math.MaxInt64 - testMultiplier = 2.1 - ) - - exp := NewExponentialBackOff() - exp.InitialInterval = testInitialInterval - exp.Multiplier = testMultiplier - exp.MaxInterval = testMaxInterval - exp.Reset() - - exp.NextBackOff() - // Assert that when an overflow is possible the current varerval time.Duration is set to the max varerval time.Duration . - assertEquals(t, testMaxInterval, exp.currentInterval) -} - -func assertEquals(t *testing.T, expected, value time.Duration) { - if expected != value { - t.Errorf("got: %d, expected: %d", value, expected) - } -} diff --git a/vendor/github.com/cenkalti/backoff/retry.go b/vendor/github.com/cenkalti/backoff/retry.go deleted file mode 100644 index 5dbd825b5..000000000 --- a/vendor/github.com/cenkalti/backoff/retry.go +++ /dev/null @@ -1,78 +0,0 @@ -package backoff - -import "time" - -// An Operation is executing by Retry() or RetryNotify(). -// The operation will be retried using a backoff policy if it returns an error. -type Operation func() error - -// Notify is a notify-on-error function. It receives an operation error and -// backoff delay if the operation failed (with an error). -// -// NOTE that if the backoff policy stated to stop retrying, -// the notify function isn't called. -type Notify func(error, time.Duration) - -// Retry the operation o until it does not return error or BackOff stops. -// o is guaranteed to be run at least once. -// It is the caller's responsibility to reset b after Retry returns. -// -// If o returns a *PermanentError, the operation is not retried, and the -// wrapped error is returned. -// -// Retry sleeps the goroutine for the duration returned by BackOff after a -// failed operation returns. -func Retry(o Operation, b BackOff) error { return RetryNotify(o, b, nil) } - -// RetryNotify calls notify function with the error and wait duration -// for each failed attempt before sleep. -func RetryNotify(operation Operation, b BackOff, notify Notify) error { - var err error - var next time.Duration - - cb := ensureContext(b) - - b.Reset() - for { - if err = operation(); err == nil { - return nil - } - - if permanent, ok := err.(*PermanentError); ok { - return permanent.Err - } - - if next = b.NextBackOff(); next == Stop { - return err - } - - if notify != nil { - notify(err, next) - } - - t := time.NewTimer(next) - - select { - case <-cb.Context().Done(): - t.Stop() - return err - case <-t.C: - } - } -} - -// PermanentError signals that the operation should not be retried. -type PermanentError struct { - Err error -} - -func (e *PermanentError) Error() string { - return e.Err.Error() -} - -// Permanent wraps the given err in a *PermanentError. -func Permanent(err error) *PermanentError { - return &PermanentError{ - Err: err, - } -} diff --git a/vendor/github.com/cenkalti/backoff/retry_test.go b/vendor/github.com/cenkalti/backoff/retry_test.go deleted file mode 100644 index 5af288897..000000000 --- a/vendor/github.com/cenkalti/backoff/retry_test.go +++ /dev/null @@ -1,99 +0,0 @@ -package backoff - -import ( - "errors" - "fmt" - "log" - "testing" - "time" - - "golang.org/x/net/context" -) - -func TestRetry(t *testing.T) { - const successOn = 3 - var i = 0 - - // This function is successful on "successOn" calls. - f := func() error { - i++ - log.Printf("function is called %d. time\n", i) - - if i == successOn { - log.Println("OK") - return nil - } - - log.Println("error") - return errors.New("error") - } - - err := Retry(f, NewExponentialBackOff()) - if err != nil { - t.Errorf("unexpected error: %s", err.Error()) - } - if i != successOn { - t.Errorf("invalid number of retries: %d", i) - } -} - -func TestRetryContext(t *testing.T) { - var cancelOn = 3 - var i = 0 - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - // This function cancels context on "cancelOn" calls. - f := func() error { - i++ - log.Printf("function is called %d. time\n", i) - - // cancelling the context in the operation function is not a typical - // use-case, however it allows to get predictable test results. - if i == cancelOn { - cancel() - } - - log.Println("error") - return fmt.Errorf("error (%d)", i) - } - - err := Retry(f, WithContext(NewConstantBackOff(time.Millisecond), ctx)) - if err == nil { - t.Errorf("error is unexpectedly nil") - } - if err.Error() != "error (3)" { - t.Errorf("unexpected error: %s", err.Error()) - } - if i != cancelOn { - t.Errorf("invalid number of retries: %d", i) - } -} - -func TestRetryPermenent(t *testing.T) { - const permanentOn = 3 - var i = 0 - - // This function fails permanently after permanentOn tries - f := func() error { - i++ - log.Printf("function is called %d. time\n", i) - - if i == permanentOn { - log.Println("permanent error") - return Permanent(errors.New("permanent error")) - } - - log.Println("error") - return errors.New("error") - } - - err := Retry(f, NewExponentialBackOff()) - if err == nil || err.Error() != "permanent error" { - t.Errorf("unexpected error: %s", err) - } - if i != permanentOn { - t.Errorf("invalid number of retries: %d", i) - } -} diff --git a/vendor/github.com/cenkalti/backoff/ticker.go b/vendor/github.com/cenkalti/backoff/ticker.go deleted file mode 100644 index 49a99718d..000000000 --- a/vendor/github.com/cenkalti/backoff/ticker.go +++ /dev/null @@ -1,81 +0,0 @@ -package backoff - -import ( - "runtime" - "sync" - "time" -) - -// Ticker holds a channel that delivers `ticks' of a clock at times reported by a BackOff. -// -// Ticks will continue to arrive when the previous operation is still running, -// so operations that take a while to fail could run in quick succession. -type Ticker struct { - C <-chan time.Time - c chan time.Time - b BackOffContext - stop chan struct{} - stopOnce sync.Once -} - -// NewTicker returns a new Ticker containing a channel that will send the time at times -// specified by the BackOff argument. Ticker is guaranteed to tick at least once. -// The channel is closed when Stop method is called or BackOff stops. -func NewTicker(b BackOff) *Ticker { - c := make(chan time.Time) - t := &Ticker{ - C: c, - c: c, - b: ensureContext(b), - stop: make(chan struct{}), - } - go t.run() - runtime.SetFinalizer(t, (*Ticker).Stop) - return t -} - -// Stop turns off a ticker. After Stop, no more ticks will be sent. -func (t *Ticker) Stop() { - t.stopOnce.Do(func() { close(t.stop) }) -} - -func (t *Ticker) run() { - c := t.c - defer close(c) - t.b.Reset() - - // Ticker is guaranteed to tick at least once. - afterC := t.send(time.Now()) - - for { - if afterC == nil { - return - } - - select { - case tick := <-afterC: - afterC = t.send(tick) - case <-t.stop: - t.c = nil // Prevent future ticks from being sent to the channel. - return - case <-t.b.Context().Done(): - return - } - } -} - -func (t *Ticker) send(tick time.Time) <-chan time.Time { - select { - case t.c <- tick: - case <-t.stop: - return nil - } - - next := t.b.NextBackOff() - if next == Stop { - t.Stop() - return nil - } - - return time.After(next) -} diff --git a/vendor/github.com/cenkalti/backoff/ticker_test.go b/vendor/github.com/cenkalti/backoff/ticker_test.go deleted file mode 100644 index 085828cca..000000000 --- a/vendor/github.com/cenkalti/backoff/ticker_test.go +++ /dev/null @@ -1,94 +0,0 @@ -package backoff - -import ( - "errors" - "fmt" - "log" - "testing" - "time" - - "golang.org/x/net/context" -) - -func TestTicker(t *testing.T) { - const successOn = 3 - var i = 0 - - // This function is successful on "successOn" calls. - f := func() error { - i++ - log.Printf("function is called %d. time\n", i) - - if i == successOn { - log.Println("OK") - return nil - } - - log.Println("error") - return errors.New("error") - } - - b := NewExponentialBackOff() - ticker := NewTicker(b) - - var err error - for _ = range ticker.C { - if err = f(); err != nil { - t.Log(err) - continue - } - - break - } - if err != nil { - t.Errorf("unexpected error: %s", err.Error()) - } - if i != successOn { - t.Errorf("invalid number of retries: %d", i) - } -} - -func TestTickerContext(t *testing.T) { - const cancelOn = 3 - var i = 0 - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - // This function cancels context on "cancelOn" calls. - f := func() error { - i++ - log.Printf("function is called %d. time\n", i) - - // cancelling the context in the operation function is not a typical - // use-case, however it allows to get predictable test results. - if i == cancelOn { - cancel() - } - - log.Println("error") - return fmt.Errorf("error (%d)", i) - } - - b := WithContext(NewConstantBackOff(time.Millisecond), ctx) - ticker := NewTicker(b) - - var err error - for _ = range ticker.C { - if err = f(); err != nil { - t.Log(err) - continue - } - - break - } - if err == nil { - t.Errorf("error is unexpectedly nil") - } - if err.Error() != "error (3)" { - t.Errorf("unexpected error: %s", err.Error()) - } - if i != cancelOn { - t.Errorf("invalid number of retries: %d", i) - } -} diff --git a/vendor/github.com/cenkalti/backoff/tries.go b/vendor/github.com/cenkalti/backoff/tries.go deleted file mode 100644 index d2da7308b..000000000 --- a/vendor/github.com/cenkalti/backoff/tries.go +++ /dev/null @@ -1,35 +0,0 @@ -package backoff - -import "time" - -/* -WithMaxTries creates a wrapper around another BackOff, which will -return Stop if NextBackOff() has been called too many times since -the last time Reset() was called - -Note: Implementation is not thread-safe. -*/ -func WithMaxTries(b BackOff, max uint64) BackOff { - return &backOffTries{delegate: b, maxTries: max} -} - -type backOffTries struct { - delegate BackOff - maxTries uint64 - numTries uint64 -} - -func (b *backOffTries) NextBackOff() time.Duration { - if b.maxTries > 0 { - if b.maxTries <= b.numTries { - return Stop - } - b.numTries++ - } - return b.delegate.NextBackOff() -} - -func (b *backOffTries) Reset() { - b.numTries = 0 - b.delegate.Reset() -} diff --git a/vendor/github.com/cenkalti/backoff/tries_test.go b/vendor/github.com/cenkalti/backoff/tries_test.go deleted file mode 100644 index bd1021143..000000000 --- a/vendor/github.com/cenkalti/backoff/tries_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package backoff - -import ( - "math/rand" - "testing" - "time" -) - -func TestMaxTriesHappy(t *testing.T) { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - max := 17 + r.Intn(13) - bo := WithMaxTries(&ZeroBackOff{}, uint64(max)) - - // Load up the tries count, but reset should clear the record - for ix := 0; ix < max/2; ix++ { - bo.NextBackOff() - } - bo.Reset() - - // Now fill the tries count all the way up - for ix := 0; ix < max; ix++ { - d := bo.NextBackOff() - if d == Stop { - t.Errorf("returned Stop on try %d", ix) - } - } - - // We have now called the BackOff max number of times, we expect - // the next result to be Stop, even if we try it multiple times - for ix := 0; ix < 7; ix++ { - d := bo.NextBackOff() - if d != Stop { - t.Error("invalid next back off") - } - } - - // Reset makes it all work again - bo.Reset() - d := bo.NextBackOff() - if d == Stop { - t.Error("returned Stop after reset") - } - -} - -func TestMaxTriesZero(t *testing.T) { - // It might not make sense, but its okay to send a zero - bo := WithMaxTries(&ZeroBackOff{}, uint64(0)) - for ix := 0; ix < 11; ix++ { - d := bo.NextBackOff() - if d == Stop { - t.Errorf("returned Stop on try %d", ix) - } - } -} diff --git a/vendor/github.com/davecgh/go-spew/.travis.yml b/vendor/github.com/davecgh/go-spew/.travis.yml index 19946dc91..10f469a25 100644 --- a/vendor/github.com/davecgh/go-spew/.travis.yml +++ b/vendor/github.com/davecgh/go-spew/.travis.yml @@ -1,25 +1,11 @@ language: go -go: - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x -sudo: false +go: 1.2 install: - - go get -v github.com/alecthomas/gometalinter - - gometalinter --install + - go get -v code.google.com/p/go.tools/cmd/cover script: - - export PATH=$PATH:$HOME/gopath/bin - - export GORACE="halt_on_error=1" - - test -z "$(gometalinter --disable-all - --enable=gofmt - --enable=golint - --enable=vet - --enable=gosimple - --enable=unconvert - --deadline=4m ./spew | tee /dev/stderr)" - - go test -v -race -tags safe ./spew - - go test -v -race -tags testcgo ./spew -covermode=atomic -coverprofile=profile.cov + - go test -v -tags=disableunsafe ./spew + - go test -v -tags=testcgo ./spew -covermode=count -coverprofile=profile.cov after_success: - go get -v github.com/mattn/goveralls + - export PATH=$PATH:$HOME/gopath/bin - goveralls -coverprofile=profile.cov -service=travis-ci diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE index bc52e96f2..2a7cfd2bf 100644 --- a/vendor/github.com/davecgh/go-spew/LICENSE +++ b/vendor/github.com/davecgh/go-spew/LICENSE @@ -1,8 +1,6 @@ -ISC License +Copyright (c) 2012-2013 Dave Collins -Copyright (c) 2012-2016 Dave Collins - -Permission to use, copy, modify, and/or distribute this software for any +Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. diff --git a/vendor/github.com/davecgh/go-spew/README.md b/vendor/github.com/davecgh/go-spew/README.md index f6ed02c3b..777a8e1d4 100644 --- a/vendor/github.com/davecgh/go-spew/README.md +++ b/vendor/github.com/davecgh/go-spew/README.md @@ -1,9 +1,10 @@ go-spew ======= -[![Build Status](https://img.shields.io/travis/davecgh/go-spew.svg)](https://travis-ci.org/davecgh/go-spew) -[![ISC License](http://img.shields.io/badge/license-ISC-blue.svg)](http://copyfree.org) -[![Coverage Status](https://img.shields.io/coveralls/davecgh/go-spew.svg)](https://coveralls.io/r/davecgh/go-spew?branch=master) +[![Build Status](https://travis-ci.org/davecgh/go-spew.png?branch=master)] +(https://travis-ci.org/davecgh/go-spew) [![Coverage Status] +(https://coveralls.io/repos/davecgh/go-spew/badge.png?branch=master)] +(https://coveralls.io/r/davecgh/go-spew?branch=master) Go-spew implements a deep pretty printer for Go data structures to aid in debugging. A comprehensive suite of tests with 100% test coverage is provided @@ -14,11 +15,12 @@ open source or commercial projects. If you're interested in reading about how this package came to life and some of the challenges involved in providing a deep pretty printer, there is a blog post about it -[here](https://web.archive.org/web/20160304013555/https://blog.cyphertite.com/go-spew-a-journey-into-dumping-go-data-structures/). +[here](https://blog.cyphertite.com/go-spew-a-journey-into-dumping-go-data-structures/). ## Documentation -[![GoDoc](https://img.shields.io/badge/godoc-reference-blue.svg)](http://godoc.org/github.com/davecgh/go-spew/spew) +[![GoDoc](https://godoc.org/github.com/davecgh/go-spew/spew?status.png)] +(http://godoc.org/github.com/davecgh/go-spew/spew) Full `go doc` style documentation for the project can be viewed online without installing this package by using the excellent GoDoc site here: @@ -155,18 +157,9 @@ options. See the ConfigState documentation for more details. which only accept pointer receivers from non-pointer variables. This option relies on access to the unsafe package, so it will not have any effect when running in environments without access to the unsafe package such as Google - App Engine or with the "safe" build tag specified. + App Engine or with the "disableunsafe" build tag specified. Pointer method invocation is enabled by default. -* DisablePointerAddresses - DisablePointerAddresses specifies whether to disable the printing of - pointer addresses. This is useful when diffing data structures in tests. - -* DisableCapacities - DisableCapacities specifies whether to disable the printing of capacities - for arrays, slices, maps and channels. This is useful when diffing data - structures in tests. - * ContinueOnMethod Enables recursion into types after invoking error and Stringer interface methods. Recursion after method invocation is disabled by default. @@ -192,10 +185,10 @@ options. See the ConfigState documentation for more details. This package relies on the unsafe package to perform some of the more advanced features, however it also supports a "limited" mode which allows it to work in environments where the unsafe package is not available. By default, it will -operate in this mode on Google App Engine and when compiled with GopherJS. The -"safe" build tag may also be specified to force the package to build without -using the unsafe package. +operate in this mode on Google App Engine. The "disableunsafe" build tag may +also be specified to force the package to build without using the unsafe +package. ## License -Go-spew is licensed under the [copyfree](http://copyfree.org) ISC License. +Go-spew is licensed under the liberal ISC License. diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go index 7f166c3a3..565bf5899 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypass.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypass.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2016 Dave Collins +// Copyright (c) 2015 Dave Collins // // Permission to use, copy, modify, and distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -13,10 +13,9 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // NOTE: Due to the following build constraints, this file will only be compiled -// when the code is not running on Google App Engine, compiled by GopherJS, and -// "-tags safe" is not added to the go build command line. The "disableunsafe" -// tag is deprecated and thus should not be used. -// +build !js,!appengine,!safe,!disableunsafe +// when the code is not running on Google App Engine and "-tags disableunsafe" +// is not added to the go build command line. +// +build !appengine,!disableunsafe package spew @@ -41,9 +40,9 @@ var ( // after commit 82f48826c6c7 which changed the format again to mirror // the original format. Code in the init function updates these offsets // as necessary. - offsetPtr = ptrSize + offsetPtr = uintptr(ptrSize) offsetScalar = uintptr(0) - offsetFlag = ptrSize * 2 + offsetFlag = uintptr(ptrSize * 2) // flagKindWidth and flagKindShift indicate various bits that the // reflect package uses internally to track kind information. @@ -58,7 +57,7 @@ var ( // changed their positions. Code in the init function updates these // flags as necessary. flagKindWidth = uintptr(5) - flagKindShift = flagKindWidth - 1 + flagKindShift = uintptr(flagKindWidth - 1) flagRO = uintptr(1 << 0) flagIndir = uintptr(1 << 1) ) diff --git a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go index 1fe3cf3d5..457e41235 100644 --- a/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go +++ b/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2016 Dave Collins +// Copyright (c) 2015 Dave Collins // // Permission to use, copy, modify, and distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -13,10 +13,9 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // NOTE: Due to the following build constraints, this file will only be compiled -// when the code is running on Google App Engine, compiled by GopherJS, or -// "-tags safe" is added to the go build command line. The "disableunsafe" -// tag is deprecated and thus should not be used. -// +build js appengine safe disableunsafe +// when either the code is running on Google App Engine or "-tags disableunsafe" +// is added to the go build command line. +// +build appengine disableunsafe package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go index 1be8ce945..14f02dc15 100644 --- a/vendor/github.com/davecgh/go-spew/spew/common.go +++ b/vendor/github.com/davecgh/go-spew/spew/common.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -180,7 +180,7 @@ func printComplex(w io.Writer, c complex128, floatPrecision int) { w.Write(closeParenBytes) } -// printHexPtr outputs a uintptr formatted as hexadecimal with a leading '0x' +// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' // prefix to Writer w. func printHexPtr(w io.Writer, p uintptr) { // Null pointer. diff --git a/vendor/github.com/davecgh/go-spew/spew/common_test.go b/vendor/github.com/davecgh/go-spew/spew/common_test.go index 0f5ce47dc..39b7525b3 100644 --- a/vendor/github.com/davecgh/go-spew/spew/common_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/common_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go index 2e3d22f31..ee1ab07b3 100644 --- a/vendor/github.com/davecgh/go-spew/spew/config.go +++ b/vendor/github.com/davecgh/go-spew/spew/config.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -64,18 +64,9 @@ type ConfigState struct { // inside these interface methods. As a result, this option relies on // access to the unsafe package, so it will not have any effect when // running in environments without access to the unsafe package such as - // Google App Engine or with the "safe" build tag specified. + // Google App Engine or with the "disableunsafe" build tag specified. DisablePointerMethods bool - // DisablePointerAddresses specifies whether to disable the printing of - // pointer addresses. This is useful when diffing data structures in tests. - DisablePointerAddresses bool - - // DisableCapacities specifies whether to disable the printing of capacities - // for arrays, slices, maps and channels. This is useful when diffing - // data structures in tests. - DisableCapacities bool - // ContinueOnMethod specifies whether or not recursion should continue once // a custom error or Stringer interface is invoked. The default, false, // means it will print the results of invoking the custom error or Stringer diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go index aacaac6f1..5be0c4060 100644 --- a/vendor/github.com/davecgh/go-spew/spew/doc.go +++ b/vendor/github.com/davecgh/go-spew/spew/doc.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -91,15 +91,6 @@ The following configuration options are available: which only accept pointer receivers from non-pointer variables. Pointer method invocation is enabled by default. - * DisablePointerAddresses - DisablePointerAddresses specifies whether to disable the printing of - pointer addresses. This is useful when diffing data structures in tests. - - * DisableCapacities - DisableCapacities specifies whether to disable the printing of - capacities for arrays, slices, maps and channels. This is useful when - diffing data structures in tests. - * ContinueOnMethod Enables recursion into types after invoking error and Stringer interface methods. Recursion after method invocation is disabled by default. diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go index f78d89fc1..a0ff95e27 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dump.go +++ b/vendor/github.com/davecgh/go-spew/spew/dump.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -35,16 +35,16 @@ var ( // cCharRE is a regular expression that matches a cgo char. // It is used to detect character arrays to hexdump them. - cCharRE = regexp.MustCompile(`^.*\._Ctype_char$`) + cCharRE = regexp.MustCompile("^.*\\._Ctype_char$") // cUnsignedCharRE is a regular expression that matches a cgo unsigned // char. It is used to detect unsigned character arrays to hexdump // them. - cUnsignedCharRE = regexp.MustCompile(`^.*\._Ctype_unsignedchar$`) + cUnsignedCharRE = regexp.MustCompile("^.*\\._Ctype_unsignedchar$") // cUint8tCharRE is a regular expression that matches a cgo uint8_t. // It is used to detect uint8_t arrays to hexdump them. - cUint8tCharRE = regexp.MustCompile(`^.*\._Ctype_uint8_t$`) + cUint8tCharRE = regexp.MustCompile("^.*\\._Ctype_uint8_t$") ) // dumpState contains information about the state of a dump operation. @@ -129,7 +129,7 @@ func (d *dumpState) dumpPtr(v reflect.Value) { d.w.Write(closeParenBytes) // Display pointer information. - if !d.cs.DisablePointerAddresses && len(pointerChain) > 0 { + if len(pointerChain) > 0 { d.w.Write(openParenBytes) for i, addr := range pointerChain { if i > 0 { @@ -143,10 +143,10 @@ func (d *dumpState) dumpPtr(v reflect.Value) { // Display dereferenced value. d.w.Write(openParenBytes) switch { - case nilFound: + case nilFound == true: d.w.Write(nilAngleBytes) - case cycleFound: + case cycleFound == true: d.w.Write(circularBytes) default: @@ -282,13 +282,13 @@ func (d *dumpState) dump(v reflect.Value) { case reflect.Map, reflect.String: valueLen = v.Len() } - if valueLen != 0 || !d.cs.DisableCapacities && valueCap != 0 { + if valueLen != 0 || valueCap != 0 { d.w.Write(openParenBytes) if valueLen != 0 { d.w.Write(lenEqualsBytes) printInt(d.w, int64(valueLen), 10) } - if !d.cs.DisableCapacities && valueCap != 0 { + if valueCap != 0 { if valueLen != 0 { d.w.Write(spaceBytes) } diff --git a/vendor/github.com/davecgh/go-spew/spew/dump_test.go b/vendor/github.com/davecgh/go-spew/spew/dump_test.go index 5aad9c7af..2b320401d 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dump_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/dump_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -70,7 +70,7 @@ import ( "github.com/davecgh/go-spew/spew" ) -// dumpTest is used to describe a test to be performed against the Dump method. +// dumpTest is used to describe a test to be perfomed against the Dump method. type dumpTest struct { in interface{} wants []string diff --git a/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go b/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go index 6ab180809..18a38358e 100644 --- a/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2013-2016 Dave Collins +// Copyright (c) 2013 Dave Collins // // Permission to use, copy, modify, and distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -59,11 +59,10 @@ func addCgoDumpTests() { v3Len := fmt.Sprintf("%d", v3l) v3Cap := fmt.Sprintf("%d", v3c) v3t := "[6]testdata._Ctype_unsignedchar" - v3t2 := "[6]testdata._Ctype_uchar" v3s := "(len=" + v3Len + " cap=" + v3Cap + ") " + "{\n 00000000 74 65 73 74 33 00 " + " |test3.|\n}" - addDumpTest(v3, "("+v3t+") "+v3s+"\n", "("+v3t2+") "+v3s+"\n") + addDumpTest(v3, "("+v3t+") "+v3s+"\n") // C signed char array. v4, v4l, v4c := testdata.GetCgoSignedCharArray() diff --git a/vendor/github.com/davecgh/go-spew/spew/example_test.go b/vendor/github.com/davecgh/go-spew/spew/example_test.go index c6ec8c6d5..de6c4e309 100644 --- a/vendor/github.com/davecgh/go-spew/spew/example_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/example_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go index b04edb7d7..ecf3b80e2 100644 --- a/vendor/github.com/davecgh/go-spew/spew/format.go +++ b/vendor/github.com/davecgh/go-spew/spew/format.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -182,10 +182,10 @@ func (f *formatState) formatPtr(v reflect.Value) { // Display dereferenced value. switch { - case nilFound: + case nilFound == true: f.fs.Write(nilAngleBytes) - case cycleFound: + case cycleFound == true: f.fs.Write(circularShortBytes) default: diff --git a/vendor/github.com/davecgh/go-spew/spew/format_test.go b/vendor/github.com/davecgh/go-spew/spew/format_test.go index 0719eb916..b664b3f13 100644 --- a/vendor/github.com/davecgh/go-spew/spew/format_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/format_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -75,7 +75,7 @@ import ( "github.com/davecgh/go-spew/spew" ) -// formatterTest is used to describe a test to be performed against NewFormatter. +// formatterTest is used to describe a test to be perfomed against NewFormatter. type formatterTest struct { format string in interface{} @@ -1536,14 +1536,14 @@ func TestPrintSortedKeys(t *testing.T) { t.Errorf("Sorted keys mismatch 3:\n %v %v", s, expected) } - s = cfg.Sprint(map[testStruct]int{{1}: 1, {3}: 3, {2}: 2}) + s = cfg.Sprint(map[testStruct]int{testStruct{1}: 1, testStruct{3}: 3, testStruct{2}: 2}) expected = "map[ts.1:1 ts.2:2 ts.3:3]" if s != expected { t.Errorf("Sorted keys mismatch 4:\n %v %v", s, expected) } if !spew.UnsafeDisabled { - s = cfg.Sprint(map[testStructP]int{{1}: 1, {3}: 3, {2}: 2}) + s = cfg.Sprint(map[testStructP]int{testStructP{1}: 1, testStructP{3}: 3, testStructP{2}: 2}) expected = "map[ts.1:1 ts.2:2 ts.3:3]" if s != expected { t.Errorf("Sorted keys mismatch 5:\n %v %v", s, expected) diff --git a/vendor/github.com/davecgh/go-spew/spew/internal_test.go b/vendor/github.com/davecgh/go-spew/spew/internal_test.go index e312b4fad..1069ee21c 100644 --- a/vendor/github.com/davecgh/go-spew/spew/internal_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/internal_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -36,7 +36,10 @@ type dummyFmtState struct { } func (dfs *dummyFmtState) Flag(f int) bool { - return f == int('+') + if f == int('+') { + return true + } + return false } func (dfs *dummyFmtState) Precision() (int, bool) { diff --git a/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go b/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go index a0c612ec3..83e070e9a 100644 --- a/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/internalunsafe_test.go @@ -1,4 +1,4 @@ -// Copyright (c) 2013-2016 Dave Collins +// Copyright (c) 2013-2015 Dave Collins // Permission to use, copy, modify, and distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -13,10 +13,9 @@ // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. // NOTE: Due to the following build constraints, this file will only be compiled -// when the code is not running on Google App Engine, compiled by GopherJS, and -// "-tags safe" is not added to the go build command line. The "disableunsafe" -// tag is deprecated and thus should not be used. -// +build !js,!appengine,!safe,!disableunsafe +// when the code is not running on Google App Engine and "-tags disableunsafe" +// is not added to the go build command line. +// +build !appengine,!disableunsafe /* This test file is part of the spew package rather than than the spew_test diff --git a/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/davecgh/go-spew/spew/spew.go index 32c0e3388..d8233f542 100644 --- a/vendor/github.com/davecgh/go-spew/spew/spew.go +++ b/vendor/github.com/davecgh/go-spew/spew/spew.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above diff --git a/vendor/github.com/davecgh/go-spew/spew/spew_test.go b/vendor/github.com/davecgh/go-spew/spew/spew_test.go index b70466c69..dbbc08567 100644 --- a/vendor/github.com/davecgh/go-spew/spew/spew_test.go +++ b/vendor/github.com/davecgh/go-spew/spew/spew_test.go @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2016 Dave Collins + * Copyright (c) 2013 Dave Collins * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -130,19 +130,12 @@ func initSpewTests() { scsNoPmethods := &spew.ConfigState{Indent: " ", DisablePointerMethods: true} scsMaxDepth := &spew.ConfigState{Indent: " ", MaxDepth: 1} scsContinue := &spew.ConfigState{Indent: " ", ContinueOnMethod: true} - scsNoPtrAddr := &spew.ConfigState{DisablePointerAddresses: true} - scsNoCap := &spew.ConfigState{DisableCapacities: true} // Variables for tests on types which implement Stringer interface with and // without a pointer receiver. ts := stringer("test") tps := pstringer("test") - type ptrTester struct { - s *struct{} - } - tptr := &ptrTester{s: &struct{}{}} - // depthTester is used to test max depth handling for structs, array, slices // and maps. type depthTester struct { @@ -199,10 +192,6 @@ func initSpewTests() { {scsContinue, fCSFprint, "", te, "(error: 10) 10"}, {scsContinue, fCSFdump, "", te, "(spew_test.customError) " + "(error: 10) 10\n"}, - {scsNoPtrAddr, fCSFprint, "", tptr, "<*>{<*>{}}"}, - {scsNoPtrAddr, fCSSdump, "", tptr, "(*spew_test.ptrTester)({\ns: (*struct {})({\n})\n})\n"}, - {scsNoCap, fCSSdump, "", make([]string, 0, 10), "([]string) {\n}\n"}, - {scsNoCap, fCSSdump, "", make([]string, 1, 10), "([]string) (len=1) {\n(string) \"\"\n}\n"}, } } diff --git a/vendor/github.com/dghubble/sling/.travis.yml b/vendor/github.com/dghubble/sling/.travis.yml deleted file mode 100644 index b93afce6d..000000000 --- a/vendor/github.com/dghubble/sling/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: go -go: - - 1.7 - - 1.8 - - tip -install: - - go get github.com/golang/lint/golint - - go get -v -t . -script: - - ./test diff --git a/vendor/github.com/dghubble/sling/CHANGES.md b/vendor/github.com/dghubble/sling/CHANGES.md deleted file mode 100644 index 7983f03f3..000000000 --- a/vendor/github.com/dghubble/sling/CHANGES.md +++ /dev/null @@ -1,58 +0,0 @@ -# Sling Changelog - -Notable changes between releases. - -## Latest - -## v1.1.0 (2016-12-19) - -* Allow JSON decoding, regardless of response Content-Type (#26) -* Add `BodyProvider` interface and setter so request Body encoding can be customized (#23) -* Add `Doer` interface and setter so request sending behavior can be customized (#21) -* Add `SetBasicAuth` setter for Authorization headers (#16) -* Add Sling `Body` setter to set an `io.Reader` on the Request (#9) - -## v1.0.0 (2015-05-23) - -* Added support for receiving and decoding error JSON structs -* Renamed Sling `JsonBody` setter to `BodyJSON` (breaking) -* Renamed Sling `BodyStruct` setter to `BodyForm` (breaking) -* Renamed Sling fields `httpClient`, `method`, `rawURL`, and `header` to be internal (breaking) -* Changed `Do` and `Receive` to skip response JSON decoding if "application/json" Content-Type is missing -* Changed `Sling.Receive(v interface{})` to `Sling.Receive(successV, failureV interface{})` (breaking) - * Previously `Receive` attempted to decode the response Body in all cases - * Updated `Receive` will decode the response Body into successV for 2XX responses or decode the Body into failureV for other status codes. Pass a nil `successV` or `failureV` to skip JSON decoding into that value. - * To upgrade, pass nil for the `failureV` argument or consider defining a JSON tagged struct appropriate for the API endpoint. (e.g. `s.Receive(&issue, nil)`, `s.Receive(&issue, &githubError)`) - * To retain the old behavior, duplicate the first argument (e.g. s.Receive(&tweet, &tweet)) -* Changed `Sling.Do(http.Request, v interface{})` to `Sling.Do(http.Request, successV, failureV interface{})` (breaking) - * See the changelog entry about `Receive`, the upgrade path is the same. -* Removed HEAD, GET, POST, PUT, PATCH, DELETE constants, no reason to export them (breaking) - -## v0.4.0 (2015-04-26) - -* Improved golint compliance -* Fixed typos and test printouts - -## v0.3.0 (2015-04-21) - -* Added BodyStruct method for setting a url encoded form body on the Request -* Added Add and Set methods for adding or setting Request Headers -* Added JsonBody method for setting JSON Request Body -* Improved examples and documentation - -## v0.2.0 (2015-04-05) - -* Added http.Client setter -* Added Sling.New() method to return a copy of a Sling -* Added Base setter and Path extension support -* Added method setters (Get, Post, Put, Patch, Delete, Head) -* Added support for encoding URL Query parameters -* Added example tiny Github API -* Changed v0.1.0 method signatures and names (breaking) -* Removed Go 1.0 support - -## v0.1.0 (2015-04-01) - -* Support decoding JSON responses. - - diff --git a/vendor/github.com/dghubble/sling/LICENSE b/vendor/github.com/dghubble/sling/LICENSE deleted file mode 100644 index 2718840d9..000000000 --- a/vendor/github.com/dghubble/sling/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Dalton Hubble - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/dghubble/sling/README.md b/vendor/github.com/dghubble/sling/README.md deleted file mode 100644 index b1a849b2f..000000000 --- a/vendor/github.com/dghubble/sling/README.md +++ /dev/null @@ -1,294 +0,0 @@ - -# Sling [![Build Status](https://travis-ci.org/dghubble/sling.png?branch=master)](https://travis-ci.org/dghubble/sling) [![GoDoc](https://godoc.org/github.com/dghubble/sling?status.png)](https://godoc.org/github.com/dghubble/sling) - - -Sling is a Go HTTP client library for creating and sending API requests. - -Slings store HTTP Request properties to simplify sending requests and decoding responses. Check [usage](#usage) or the [examples](examples) to learn how to compose a Sling into your API client. - -### Features - -* Method Setters: Get/Post/Put/Patch/Delete/Head -* Add or Set Request Headers -* Base/Path: Extend a Sling for different endpoints -* Encode structs into URL query parameters -* Encode a form or JSON into the Request Body -* Receive JSON success or failure responses - -## Install - - go get github.com/dghubble/sling - -## Documentation - -Read [GoDoc](https://godoc.org/github.com/dghubble/sling) - -## Usage - -Use a Sling to set path, method, header, query, or body properties and create an `http.Request`. - -```go -type Params struct { - Count int `url:"count,omitempty"` -} -params := &Params{Count: 5} - -req, err := sling.New().Get("https://example.com").QueryStruct(params).Request() -client.Do(req) -``` - -### Path - -Use `Path` to set or extend the URL for created Requests. Extension means the path will be resolved relative to the existing URL. - -```go -// creates a GET request to https://example.com/foo/bar -req, err := sling.New().Base("https://example.com/").Path("foo/").Path("bar").Request() -``` - -Use `Get`, `Post`, `Put`, `Patch`, `Delete`, or `Head` which are exactly the same as `Path` except they set the HTTP method too. - -```go -req, err := sling.New().Post("http://upload.com/gophers") -``` - -### Headers - -`Add` or `Set` headers for requests created by a Sling. - -```go -s := sling.New().Base(baseUrl).Set("User-Agent", "Gophergram API Client") -req, err := s.New().Get("gophergram/list").Request() -``` - -### Query - -#### QueryStruct - -Define [url tagged structs](https://godoc.org/github.com/google/go-querystring/query). Use `QueryStruct` to encode a struct as query parameters on requests. - -```go -// Github Issue Parameters -type IssueParams struct { - Filter string `url:"filter,omitempty"` - State string `url:"state,omitempty"` - Labels string `url:"labels,omitempty"` - Sort string `url:"sort,omitempty"` - Direction string `url:"direction,omitempty"` - Since string `url:"since,omitempty"` -} -``` - -```go -githubBase := sling.New().Base("https://api.github.com/").Client(httpClient) - -path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) -params := &IssueParams{Sort: "updated", State: "open"} -req, err := githubBase.New().Get(path).QueryStruct(params).Request() -``` - -### Body - -#### JSON Body - -Define [JSON tagged structs](https://golang.org/pkg/encoding/json/). Use `BodyJSON` to JSON encode a struct as the Body on requests. - -```go -type IssueRequest struct { - Title string `json:"title,omitempty"` - Body string `json:"body,omitempty"` - Assignee string `json:"assignee,omitempty"` - Milestone int `json:"milestone,omitempty"` - Labels []string `json:"labels,omitempty"` -} -``` - -```go -githubBase := sling.New().Base("https://api.github.com/").Client(httpClient) -path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) - -body := &IssueRequest{ - Title: "Test title", - Body: "Some issue", -} -req, err := githubBase.New().Post(path).BodyJSON(body).Request() -``` - -Requests will include an `application/json` Content-Type header. - -#### Form Body - -Define [url tagged structs](https://godoc.org/github.com/google/go-querystring/query). Use `BodyForm` to form url encode a struct as the Body on requests. - -```go -type StatusUpdateParams struct { - Status string `url:"status,omitempty"` - InReplyToStatusId int64 `url:"in_reply_to_status_id,omitempty"` - MediaIds []int64 `url:"media_ids,omitempty,comma"` -} -``` - -```go -tweetParams := &StatusUpdateParams{Status: "writing some Go"} -req, err := twitterBase.New().Post(path).BodyForm(tweetParams).Request() -``` - -Requests will include an `application/x-www-form-urlencoded` Content-Type header. - -#### Plain Body - -Use `Body` to set a plain `io.Reader` on requests created by a Sling. - -```go -body := strings.NewReader("raw body") -req, err := sling.New().Base("https://example.com").Body(body).Request() -``` - -Set a content type header, if desired (e.g. `Set("Content-Type", "text/plain")`). - -### Extend a Sling - -Each Sling creates a standard `http.Request` (e.g. with some path and query -params) each time `Request()` is called. You may wish to extend an existing Sling to minimize duplication (e.g. a common client or base url). - -Each Sling instance provides a `New()` method which creates an independent copy, so setting properties on the child won't mutate the parent Sling. - -```go -const twitterApi = "https://api.twitter.com/1.1/" -base := sling.New().Base(twitterApi).Client(authClient) - -// statuses/show.json Sling -tweetShowSling := base.New().Get("statuses/show.json").QueryStruct(params) -req, err := tweetShowSling.Request() - -// statuses/update.json Sling -tweetPostSling := base.New().Post("statuses/update.json").BodyForm(params) -req, err := tweetPostSling.Request() -``` - -Without the calls to `base.New()`, `tweetShowSling` and `tweetPostSling` would reference the base Sling and POST to -"https://api.twitter.com/1.1/statuses/show.json/statuses/update.json", which -is undesired. - -Recap: If you wish to *extend* a Sling, create a new child copy with `New()`. - -### Sending - -#### Receive - -Define a JSON struct to decode a type from 2XX success responses. Use `ReceiveSuccess(successV interface{})` to send a new Request and decode the response body into `successV` if it succeeds. - -```go -// Github Issue (abbreviated) -type Issue struct { - Title string `json:"title"` - Body string `json:"body"` -} -``` - -```go -issues := new([]Issue) -resp, err := githubBase.New().Get(path).QueryStruct(params).ReceiveSuccess(issues) -fmt.Println(issues, resp, err) -``` - -Most APIs return failure responses with JSON error details. To decode these, define success and failure JSON structs. Use `Receive(successV, failureV interface{})` to send a new Request that will automatically decode the response into the `successV` for 2XX responses or into `failureV` for non-2XX responses. - -```go -type GithubError struct { - Message string `json:"message"` - Errors []struct { - Resource string `json:"resource"` - Field string `json:"field"` - Code string `json:"code"` - } `json:"errors"` - DocumentationURL string `json:"documentation_url"` -} -``` - -```go -issues := new([]Issue) -githubError := new(GithubError) -resp, err := githubBase.New().Get(path).QueryStruct(params).Receive(issues, githubError) -fmt.Println(issues, githubError, resp, err) -``` - -Pass a nil `successV` or `failureV` argument to skip JSON decoding into that value. - -### Modify a Request - -Sling provides the raw http.Request so modifications can be made using standard net/http features. For example, in Go 1.7+ , add HTTP tracing to a request with a context: - -```go -req, err := sling.New().Get("https://example.com").QueryStruct(params).Request() -// handle error - -trace := &httptrace.ClientTrace{ - DNSDone: func(dnsInfo httptrace.DNSDoneInfo) { - fmt.Printf("DNS Info: %+v\n", dnsInfo) - }, - GotConn: func(connInfo httptrace.GotConnInfo) { - fmt.Printf("Got Conn: %+v\n", connInfo) - }, -} - -req = req.WithContext(httptrace.WithClientTrace(req.Context(), trace)) -client.Do(req) -``` - -### Build an API - -APIs typically define an endpoint (also called a service) for each type of resource. For example, here is a tiny Github IssueService which [lists](https://developer.github.com/v3/issues/#list-issues-for-a-repository) repository issues. - -```go -const baseURL = "https://api.github.com/" - -type IssueService struct { - sling *sling.Sling -} - -func NewIssueService(httpClient *http.Client) *IssueService { - return &IssueService{ - sling: sling.New().Client(httpClient).Base(baseURL), - } -} - -func (s *IssueService) ListByRepo(owner, repo string, params *IssueListParams) ([]Issue, *http.Response, error) { - issues := new([]Issue) - githubError := new(GithubError) - path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) - resp, err := s.sling.New().Get(path).QueryStruct(params).Receive(issues, githubError) - if err == nil { - err = githubError - } - return *issues, resp, err -} -``` - -## Example APIs using Sling - -* Digits [dghubble/go-digits](https://github.com/dghubble/go-digits) -* GoSquared [drinkin/go-gosquared](https://github.com/drinkin/go-gosquared) -* Kala [ajvb/kala](https://github.com/ajvb/kala) -* Parse [fergstar/go-parse](https://github.com/fergstar/go-parse) -* Rdio [apriendeau/shares](https://github.com/apriendeau/shares) -* Swagger Generator [swagger-api/swagger-codegen](https://github.com/swagger-api/swagger-codegen) -* Twitter [dghubble/go-twitter](https://github.com/dghubble/go-twitter) -* Hacker News [mirceamironenco/go-hackernews](https://github.com/mirceamironenco/go-hackernews) -* Stacksmith [jesustinoco/go-smith](https://github.com/jesustinoco/go-smith) - -Create a Pull Request to add a link to your own API. - -## Motivation - -Many client libraries follow the lead of [google/go-github](https://github.com/google/go-github) (our inspiration!), but do so by reimplementing logic common to all clients. - -This project borrows and abstracts those ideas into a Sling, an agnostic component any API client can use for creating and sending requests. - -## Contributing - -See the [Contributing Guide](https://gist.github.com/dghubble/be682c123727f70bcfe7). - -## License - -[MIT License](LICENSE) diff --git a/vendor/github.com/dghubble/sling/body.go b/vendor/github.com/dghubble/sling/body.go deleted file mode 100644 index f3bc81601..000000000 --- a/vendor/github.com/dghubble/sling/body.go +++ /dev/null @@ -1,68 +0,0 @@ -package sling - -import ( - "bytes" - "encoding/json" - "io" - "strings" - - goquery "github.com/google/go-querystring/query" -) - -// BodyProvider provides Body content for http.Request attachment. -type BodyProvider interface { - // ContentType returns the Content-Type of the body. - ContentType() string - // Body returns the io.Reader body. - Body() (io.Reader, error) -} - -// bodyProvider provides the wrapped body value as a Body for reqests. -type bodyProvider struct { - body io.Reader -} - -func (p bodyProvider) ContentType() string { - return "" -} - -func (p bodyProvider) Body() (io.Reader, error) { - return p.body, nil -} - -// jsonBodyProvider encodes a JSON tagged struct value as a Body for requests. -// See https://golang.org/pkg/encoding/json/#MarshalIndent for details. -type jsonBodyProvider struct { - payload interface{} -} - -func (p jsonBodyProvider) ContentType() string { - return jsonContentType -} - -func (p jsonBodyProvider) Body() (io.Reader, error) { - buf := &bytes.Buffer{} - err := json.NewEncoder(buf).Encode(p.payload) - if err != nil { - return nil, err - } - return buf, nil -} - -// formBodyProvider encodes a url tagged struct value as Body for requests. -// See https://godoc.org/github.com/google/go-querystring/query for details. -type formBodyProvider struct { - payload interface{} -} - -func (p formBodyProvider) ContentType() string { - return formContentType -} - -func (p formBodyProvider) Body() (io.Reader, error) { - values, err := goquery.Values(p.payload) - if err != nil { - return nil, err - } - return strings.NewReader(values.Encode()), nil -} diff --git a/vendor/github.com/dghubble/sling/doc.go b/vendor/github.com/dghubble/sling/doc.go deleted file mode 100644 index dd2efb7e3..000000000 --- a/vendor/github.com/dghubble/sling/doc.go +++ /dev/null @@ -1,179 +0,0 @@ -/* -Package sling is a Go HTTP client library for creating and sending API requests. - -Slings store HTTP Request properties to simplify sending requests and decoding -responses. Check the examples to learn how to compose a Sling into your API -client. - -Usage - -Use a Sling to set path, method, header, query, or body properties and create an -http.Request. - - type Params struct { - Count int `url:"count,omitempty"` - } - params := &Params{Count: 5} - - req, err := sling.New().Get("https://example.com").QueryStruct(params).Request() - client.Do(req) - -Path - -Use Path to set or extend the URL for created Requests. Extension means the -path will be resolved relative to the existing URL. - - // creates a GET request to https://example.com/foo/bar - req, err := sling.New().Base("https://example.com/").Path("foo/").Path("bar").Request() - -Use Get, Post, Put, Patch, Delete, or Head which are exactly the same as Path -except they set the HTTP method too. - - req, err := sling.New().Post("http://upload.com/gophers") - -Headers - -Add or Set headers for requests created by a Sling. - - s := sling.New().Base(baseUrl).Set("User-Agent", "Gophergram API Client") - req, err := s.New().Get("gophergram/list").Request() - -QueryStruct - -Define url parameter structs (https://godoc.org/github.com/google/go-querystring/query). -Use QueryStruct to encode a struct as query parameters on requests. - - // Github Issue Parameters - type IssueParams struct { - Filter string `url:"filter,omitempty"` - State string `url:"state,omitempty"` - Labels string `url:"labels,omitempty"` - Sort string `url:"sort,omitempty"` - Direction string `url:"direction,omitempty"` - Since string `url:"since,omitempty"` - } - - githubBase := sling.New().Base("https://api.github.com/").Client(httpClient) - - path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) - params := &IssueParams{Sort: "updated", State: "open"} - req, err := githubBase.New().Get(path).QueryStruct(params).Request() - -Json Body - -Define JSON tagged structs (https://golang.org/pkg/encoding/json/). -Use BodyJSON to JSON encode a struct as the Body on requests. - - type IssueRequest struct { - Title string `json:"title,omitempty"` - Body string `json:"body,omitempty"` - Assignee string `json:"assignee,omitempty"` - Milestone int `json:"milestone,omitempty"` - Labels []string `json:"labels,omitempty"` - } - - githubBase := sling.New().Base("https://api.github.com/").Client(httpClient) - path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) - - body := &IssueRequest{ - Title: "Test title", - Body: "Some issue", - } - req, err := githubBase.New().Post(path).BodyJSON(body).Request() - -Requests will include an "application/json" Content-Type header. - -Form Body - -Define url tagged structs (https://godoc.org/github.com/google/go-querystring/query). -Use BodyForm to form url encode a struct as the Body on requests. - - type StatusUpdateParams struct { - Status string `url:"status,omitempty"` - InReplyToStatusId int64 `url:"in_reply_to_status_id,omitempty"` - MediaIds []int64 `url:"media_ids,omitempty,comma"` - } - - tweetParams := &StatusUpdateParams{Status: "writing some Go"} - req, err := twitterBase.New().Post(path).BodyForm(tweetParams).Request() - -Requests will include an "application/x-www-form-urlencoded" Content-Type -header. - -Plain Body - -Use Body to set a plain io.Reader on requests created by a Sling. - - body := strings.NewReader("raw body") - req, err := sling.New().Base("https://example.com").Body(body).Request() - -Set a content type header, if desired (e.g. Set("Content-Type", "text/plain")). - -Extend a Sling - -Each Sling generates an http.Request (say with some path and query params) -each time Request() is called, based on its state. When creating -different slings, you may wish to extend an existing Sling to minimize -duplication (e.g. a common client). - -Each Sling instance provides a New() method which creates an independent copy, -so setting properties on the child won't mutate the parent Sling. - - const twitterApi = "https://api.twitter.com/1.1/" - base := sling.New().Base(twitterApi).Client(authClient) - - // statuses/show.json Sling - tweetShowSling := base.New().Get("statuses/show.json").QueryStruct(params) - req, err := tweetShowSling.Request() - - // statuses/update.json Sling - tweetPostSling := base.New().Post("statuses/update.json").BodyForm(params) - req, err := tweetPostSling.Request() - -Without the calls to base.New(), tweetShowSling and tweetPostSling would -reference the base Sling and POST to -"https://api.twitter.com/1.1/statuses/show.json/statuses/update.json", which -is undesired. - -Recap: If you wish to extend a Sling, create a new child copy with New(). - -Receive - -Define a JSON struct to decode a type from 2XX success responses. Use -ReceiveSuccess(successV interface{}) to send a new Request and decode the -response body into successV if it succeeds. - - // Github Issue (abbreviated) - type Issue struct { - Title string `json:"title"` - Body string `json:"body"` - } - - issues := new([]Issue) - resp, err := githubBase.New().Get(path).QueryStruct(params).ReceiveSuccess(issues) - fmt.Println(issues, resp, err) - -Most APIs return failure responses with JSON error details. To decode these, -define success and failure JSON structs. Use -Receive(successV, failureV interface{}) to send a new Request that will -automatically decode the response into the successV for 2XX responses or into -failureV for non-2XX responses. - - type GithubError struct { - Message string `json:"message"` - Errors []struct { - Resource string `json:"resource"` - Field string `json:"field"` - Code string `json:"code"` - } `json:"errors"` - DocumentationURL string `json:"documentation_url"` - } - - issues := new([]Issue) - githubError := new(GithubError) - resp, err := githubBase.New().Get(path).QueryStruct(params).Receive(issues, githubError) - fmt.Println(issues, githubError, resp, err) - -Pass a nil successV or failureV argument to skip JSON decoding into that value. -*/ -package sling diff --git a/vendor/github.com/dghubble/sling/examples/README.md b/vendor/github.com/dghubble/sling/examples/README.md deleted file mode 100644 index 2bf16c56d..000000000 --- a/vendor/github.com/dghubble/sling/examples/README.md +++ /dev/null @@ -1,19 +0,0 @@ - -## Example API Client with Sling - -Try the example Github API Client. - - cd examples - go get . - -List the public issues on the [github.com/golang/go](https://github.com/golang/go) repository. - - go run github.go - -To list your public and private Github issues, pass your [Github Access Token](https://github.com/settings/tokens) - - go run github.go -access-token=xxx - -or set the `GITHUB_ACCESS_TOKEN` environment variable. - -For a complete Github API, see the excellent [google/go-github](https://github.com/google/go-github) package. \ No newline at end of file diff --git a/vendor/github.com/dghubble/sling/examples/github.go b/vendor/github.com/dghubble/sling/examples/github.go deleted file mode 100644 index 1dee5ba49..000000000 --- a/vendor/github.com/dghubble/sling/examples/github.go +++ /dev/null @@ -1,161 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "net/http" - "os" - - "github.com/coreos/pkg/flagutil" - "github.com/dghubble/sling" - "golang.org/x/oauth2" -) - -const baseURL = "https://api.github.com/" - -// Issue is a simplified Github issue -// https://developer.github.com/v3/issues/#response -type Issue struct { - ID int `json:"id"` - URL string `json:"url"` - Number int `json:"number"` - State string `json:"state"` - Title string `json:"title"` - Body string `json:"body"` -} - -// GithubError represents a Github API error response -// https://developer.github.com/v3/#client-errors -type GithubError struct { - Message string `json:"message"` - Errors []struct { - Resource string `json:"resource"` - Field string `json:"field"` - Code string `json:"code"` - } `json:"errors"` - DocumentationURL string `json:"documentation_url"` -} - -func (e GithubError) Error() string { - return fmt.Sprintf("github: %v %+v %v", e.Message, e.Errors, e.DocumentationURL) -} - -// IssueRequest is a simplified issue request -// https://developer.github.com/v3/issues/#create-an-issue -type IssueRequest struct { - Title string `json:"title,omitempty"` - Body string `json:"body,omitempty"` - Assignee string `json:"assignee,omitempty"` - Milestone int `json:"milestone,omitempty"` - Labels []string `json:"labels,omitempty"` -} - -// IssueListParams are the params for IssueService.List -// https://developer.github.com/v3/issues/#parameters -type IssueListParams struct { - Filter string `url:"filter,omitempty"` - State string `url:"state,omitempty"` - Labels string `url:"labels,omitempty"` - Sort string `url:"sort,omitempty"` - Direction string `url:"direction,omitempty"` - Since string `url:"since,omitempty"` -} - -// Services - -// IssueService provides methods for creating and reading issues. -type IssueService struct { - sling *sling.Sling -} - -// NewIssueService returns a new IssueService. -func NewIssueService(httpClient *http.Client) *IssueService { - return &IssueService{ - sling: sling.New().Client(httpClient).Base(baseURL), - } -} - -// List returns the authenticated user's issues across repos and orgs. -func (s *IssueService) List(params *IssueListParams) ([]Issue, *http.Response, error) { - issues := new([]Issue) - githubError := new(GithubError) - resp, err := s.sling.New().Path("issues").QueryStruct(params).Receive(issues, githubError) - if err == nil { - err = githubError - } - return *issues, resp, err -} - -// ListByRepo returns a repository's issues. -func (s *IssueService) ListByRepo(owner, repo string, params *IssueListParams) ([]Issue, *http.Response, error) { - issues := new([]Issue) - githubError := new(GithubError) - path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) - resp, err := s.sling.New().Get(path).QueryStruct(params).Receive(issues, githubError) - if err == nil { - err = githubError - } - return *issues, resp, err -} - -// Create creates a new issue on the specified repository. -func (s *IssueService) Create(owner, repo string, issueBody *IssueRequest) (*Issue, *http.Response, error) { - issue := new(Issue) - githubError := new(GithubError) - path := fmt.Sprintf("repos/%s/%s/issues", owner, repo) - resp, err := s.sling.New().Post(path).BodyJSON(issueBody).Receive(issue, githubError) - if err == nil { - err = githubError - } - return issue, resp, err -} - -// Client to wrap services - -// Client is a tiny Github client -type Client struct { - IssueService *IssueService - // other service endpoints... -} - -// NewClient returns a new Client -func NewClient(httpClient *http.Client) *Client { - return &Client{ - IssueService: NewIssueService(httpClient), - } -} - -func main() { - // Github Unauthenticated API - client := NewClient(nil) - params := &IssueListParams{Sort: "updated"} - issues, _, _ := client.IssueService.ListByRepo("golang", "go", params) - fmt.Printf("Public golang/go Issues:\n%v\n", issues) - - // Github OAuth2 API - flags := flag.NewFlagSet("github-example", flag.ExitOnError) - // -access-token=xxx or GITHUB_ACCESS_TOKEN env var - accessToken := flags.String("access-token", "", "Github Access Token") - flags.Parse(os.Args[1:]) - flagutil.SetFlagsFromEnv(flags, "GITHUB") - - if *accessToken == "" { - log.Fatal("Github Access Token required to list private issues") - } - - config := &oauth2.Config{} - token := &oauth2.Token{AccessToken: *accessToken} - httpClient := config.Client(oauth2.NoContext, token) - - client = NewClient(httpClient) - issues, _, _ = client.IssueService.List(params) - fmt.Printf("Your Github Issues:\n%v\n", issues) - - // body := &IssueRequest{ - // Title: "Test title", - // Body: "Some test issue", - // } - // issue, _, _ := client.IssueService.Create("dghubble", "temp", body) - // fmt.Println(issue) -} diff --git a/vendor/github.com/dghubble/sling/sling.go b/vendor/github.com/dghubble/sling/sling.go deleted file mode 100644 index 6070b78d7..000000000 --- a/vendor/github.com/dghubble/sling/sling.go +++ /dev/null @@ -1,390 +0,0 @@ -package sling - -import ( - "encoding/base64" - "encoding/json" - "io" - "net/http" - "net/url" - - goquery "github.com/google/go-querystring/query" -) - -const ( - contentType = "Content-Type" - jsonContentType = "application/json" - formContentType = "application/x-www-form-urlencoded" -) - -// Doer executes http requests. It is implemented by *http.Client. You can -// wrap *http.Client with layers of Doers to form a stack of client-side -// middleware. -type Doer interface { - Do(req *http.Request) (*http.Response, error) -} - -// Sling is an HTTP Request builder and sender. -type Sling struct { - // http Client for doing requests - httpClient Doer - // HTTP method (GET, POST, etc.) - method string - // raw url string for requests - rawURL string - // stores key-values pairs to add to request's Headers - header http.Header - // url tagged query structs - queryStructs []interface{} - // body provider - bodyProvider BodyProvider -} - -// New returns a new Sling with an http DefaultClient. -func New() *Sling { - return &Sling{ - httpClient: http.DefaultClient, - method: "GET", - header: make(http.Header), - queryStructs: make([]interface{}, 0), - } -} - -// New returns a copy of a Sling for creating a new Sling with properties -// from a parent Sling. For example, -// -// parentSling := sling.New().Client(client).Base("https://api.io/") -// fooSling := parentSling.New().Get("foo/") -// barSling := parentSling.New().Get("bar/") -// -// fooSling and barSling will both use the same client, but send requests to -// https://api.io/foo/ and https://api.io/bar/ respectively. -// -// Note that query and body values are copied so if pointer values are used, -// mutating the original value will mutate the value within the child Sling. -func (s *Sling) New() *Sling { - // copy Headers pairs into new Header map - headerCopy := make(http.Header) - for k, v := range s.header { - headerCopy[k] = v - } - return &Sling{ - httpClient: s.httpClient, - method: s.method, - rawURL: s.rawURL, - header: headerCopy, - queryStructs: append([]interface{}{}, s.queryStructs...), - bodyProvider: s.bodyProvider, - } -} - -// Http Client - -// Client sets the http Client used to do requests. If a nil client is given, -// the http.DefaultClient will be used. -func (s *Sling) Client(httpClient *http.Client) *Sling { - if httpClient == nil { - return s.Doer(http.DefaultClient) - } - return s.Doer(httpClient) -} - -// Doer sets the custom Doer implementation used to do requests. -// If a nil client is given, the http.DefaultClient will be used. -func (s *Sling) Doer(doer Doer) *Sling { - if doer == nil { - s.httpClient = http.DefaultClient - } else { - s.httpClient = doer - } - return s -} - -// Method - -// Head sets the Sling method to HEAD and sets the given pathURL. -func (s *Sling) Head(pathURL string) *Sling { - s.method = "HEAD" - return s.Path(pathURL) -} - -// Get sets the Sling method to GET and sets the given pathURL. -func (s *Sling) Get(pathURL string) *Sling { - s.method = "GET" - return s.Path(pathURL) -} - -// Post sets the Sling method to POST and sets the given pathURL. -func (s *Sling) Post(pathURL string) *Sling { - s.method = "POST" - return s.Path(pathURL) -} - -// Put sets the Sling method to PUT and sets the given pathURL. -func (s *Sling) Put(pathURL string) *Sling { - s.method = "PUT" - return s.Path(pathURL) -} - -// Patch sets the Sling method to PATCH and sets the given pathURL. -func (s *Sling) Patch(pathURL string) *Sling { - s.method = "PATCH" - return s.Path(pathURL) -} - -// Delete sets the Sling method to DELETE and sets the given pathURL. -func (s *Sling) Delete(pathURL string) *Sling { - s.method = "DELETE" - return s.Path(pathURL) -} - -// Header - -// Add adds the key, value pair in Headers, appending values for existing keys -// to the key's values. Header keys are canonicalized. -func (s *Sling) Add(key, value string) *Sling { - s.header.Add(key, value) - return s -} - -// Set sets the key, value pair in Headers, replacing existing values -// associated with key. Header keys are canonicalized. -func (s *Sling) Set(key, value string) *Sling { - s.header.Set(key, value) - return s -} - -// SetBasicAuth sets the Authorization header to use HTTP Basic Authentication -// with the provided username and password. With HTTP Basic Authentication -// the provided username and password are not encrypted. -func (s *Sling) SetBasicAuth(username, password string) *Sling { - return s.Set("Authorization", "Basic "+basicAuth(username, password)) -} - -// basicAuth returns the base64 encoded username:password for basic auth copied -// from net/http. -func basicAuth(username, password string) string { - auth := username + ":" + password - return base64.StdEncoding.EncodeToString([]byte(auth)) -} - -// Url - -// Base sets the rawURL. If you intend to extend the url with Path, -// baseUrl should be specified with a trailing slash. -func (s *Sling) Base(rawURL string) *Sling { - s.rawURL = rawURL - return s -} - -// Path extends the rawURL with the given path by resolving the reference to -// an absolute URL. If parsing errors occur, the rawURL is left unmodified. -func (s *Sling) Path(path string) *Sling { - baseURL, baseErr := url.Parse(s.rawURL) - pathURL, pathErr := url.Parse(path) - if baseErr == nil && pathErr == nil { - s.rawURL = baseURL.ResolveReference(pathURL).String() - return s - } - return s -} - -// QueryStruct appends the queryStruct to the Sling's queryStructs. The value -// pointed to by each queryStruct will be encoded as url query parameters on -// new requests (see Request()). -// The queryStruct argument should be a pointer to a url tagged struct. See -// https://godoc.org/github.com/google/go-querystring/query for details. -func (s *Sling) QueryStruct(queryStruct interface{}) *Sling { - if queryStruct != nil { - s.queryStructs = append(s.queryStructs, queryStruct) - } - return s -} - -// Body - -// Body sets the Sling's body. The body value will be set as the Body on new -// requests (see Request()). -// If the provided body is also an io.Closer, the request Body will be closed -// by http.Client methods. -func (s *Sling) Body(body io.Reader) *Sling { - if body == nil { - return s - } - return s.BodyProvider(bodyProvider{body: body}) -} - -// BodyProvider sets the Sling's body provider. -func (s *Sling) BodyProvider(body BodyProvider) *Sling { - if body == nil { - return s - } - s.bodyProvider = body - - ct := body.ContentType() - if ct != "" { - s.Set(contentType, ct) - } - - return s -} - -// BodyJSON sets the Sling's bodyJSON. The value pointed to by the bodyJSON -// will be JSON encoded as the Body on new requests (see Request()). -// The bodyJSON argument should be a pointer to a JSON tagged struct. See -// https://golang.org/pkg/encoding/json/#MarshalIndent for details. -func (s *Sling) BodyJSON(bodyJSON interface{}) *Sling { - if bodyJSON == nil { - return s - } - return s.BodyProvider(jsonBodyProvider{payload: bodyJSON}) -} - -// BodyForm sets the Sling's bodyForm. The value pointed to by the bodyForm -// will be url encoded as the Body on new requests (see Request()). -// The bodyForm argument should be a pointer to a url tagged struct. See -// https://godoc.org/github.com/google/go-querystring/query for details. -func (s *Sling) BodyForm(bodyForm interface{}) *Sling { - if bodyForm == nil { - return s - } - return s.BodyProvider(formBodyProvider{payload: bodyForm}) -} - -// Requests - -// Request returns a new http.Request created with the Sling properties. -// Returns any errors parsing the rawURL, encoding query structs, encoding -// the body, or creating the http.Request. -func (s *Sling) Request() (*http.Request, error) { - reqURL, err := url.Parse(s.rawURL) - if err != nil { - return nil, err - } - - err = addQueryStructs(reqURL, s.queryStructs) - if err != nil { - return nil, err - } - - var body io.Reader - if s.bodyProvider != nil { - body, err = s.bodyProvider.Body() - if err != nil { - return nil, err - } - } - req, err := http.NewRequest(s.method, reqURL.String(), body) - if err != nil { - return nil, err - } - addHeaders(req, s.header) - return req, err -} - -// addQueryStructs parses url tagged query structs using go-querystring to -// encode them to url.Values and format them onto the url.RawQuery. Any -// query parsing or encoding errors are returned. -func addQueryStructs(reqURL *url.URL, queryStructs []interface{}) error { - urlValues, err := url.ParseQuery(reqURL.RawQuery) - if err != nil { - return err - } - // encodes query structs into a url.Values map and merges maps - for _, queryStruct := range queryStructs { - queryValues, err := goquery.Values(queryStruct) - if err != nil { - return err - } - for key, values := range queryValues { - for _, value := range values { - urlValues.Add(key, value) - } - } - } - // url.Values format to a sorted "url encoded" string, e.g. "key=val&foo=bar" - reqURL.RawQuery = urlValues.Encode() - return nil -} - -// addHeaders adds the key, value pairs from the given http.Header to the -// request. Values for existing keys are appended to the keys values. -func addHeaders(req *http.Request, header http.Header) { - for key, values := range header { - for _, value := range values { - req.Header.Add(key, value) - } - } -} - -// Sending - -// ReceiveSuccess creates a new HTTP request and returns the response. Success -// responses (2XX) are JSON decoded into the value pointed to by successV. -// Any error creating the request, sending it, or decoding a 2XX response -// is returned. -func (s *Sling) ReceiveSuccess(successV interface{}) (*http.Response, error) { - return s.Receive(successV, nil) -} - -// Receive creates a new HTTP request and returns the response. Success -// responses (2XX) are JSON decoded into the value pointed to by successV and -// other responses are JSON decoded into the value pointed to by failureV. -// Any error creating the request, sending it, or decoding the response is -// returned. -// Receive is shorthand for calling Request and Do. -func (s *Sling) Receive(successV, failureV interface{}) (*http.Response, error) { - req, err := s.Request() - if err != nil { - return nil, err - } - return s.Do(req, successV, failureV) -} - -// Do sends an HTTP request and returns the response. Success responses (2XX) -// are JSON decoded into the value pointed to by successV and other responses -// are JSON decoded into the value pointed to by failureV. -// Any error sending the request or decoding the response is returned. -func (s *Sling) Do(req *http.Request, successV, failureV interface{}) (*http.Response, error) { - resp, err := s.httpClient.Do(req) - if err != nil { - return resp, err - } - // when err is nil, resp contains a non-nil resp.Body which must be closed - defer resp.Body.Close() - - // Don't try to decode on 204s - if resp.StatusCode == 204 { - return resp, nil - } - - // Decode from json - if successV != nil || failureV != nil { - err = decodeResponseJSON(resp, successV, failureV) - } - return resp, err -} - -// decodeResponse decodes response Body into the value pointed to by successV -// if the response is a success (2XX) or into the value pointed to by failureV -// otherwise. If the successV or failureV argument to decode into is nil, -// decoding is skipped. -// Caller is responsible for closing the resp.Body. -func decodeResponseJSON(resp *http.Response, successV, failureV interface{}) error { - if code := resp.StatusCode; 200 <= code && code <= 299 { - if successV != nil { - return decodeResponseBodyJSON(resp, successV) - } - } else { - if failureV != nil { - return decodeResponseBodyJSON(resp, failureV) - } - } - return nil -} - -// decodeResponseBodyJSON JSON decodes a Response Body into the value pointed -// to by v. -// Caller must provide a non-nil v and close the resp.Body. -func decodeResponseBodyJSON(resp *http.Response, v interface{}) error { - return json.NewDecoder(resp.Body).Decode(v) -} diff --git a/vendor/github.com/dghubble/sling/sling_test.go b/vendor/github.com/dghubble/sling/sling_test.go deleted file mode 100644 index 9c73cd4fa..000000000 --- a/vendor/github.com/dghubble/sling/sling_test.go +++ /dev/null @@ -1,843 +0,0 @@ -package sling - -import ( - "bytes" - "errors" - "fmt" - "io" - "io/ioutil" - "math" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "strings" - "testing" -) - -type FakeParams struct { - KindName string `url:"kind_name"` - Count int `url:"count"` -} - -// Url-tagged query struct -var paramsA = struct { - Limit int `url:"limit"` -}{ - 30, -} -var paramsB = FakeParams{KindName: "recent", Count: 25} - -// Json-tagged model struct -type FakeModel struct { - Text string `json:"text,omitempty"` - FavoriteCount int64 `json:"favorite_count,omitempty"` - Temperature float64 `json:"temperature,omitempty"` -} - -var modelA = FakeModel{Text: "note", FavoriteCount: 12} - -func TestNew(t *testing.T) { - sling := New() - if sling.httpClient != http.DefaultClient { - t.Errorf("expected %v, got %v", http.DefaultClient, sling.httpClient) - } - if sling.header == nil { - t.Errorf("Header map not initialized with make") - } - if sling.queryStructs == nil { - t.Errorf("queryStructs not initialized with make") - } -} - -func TestSlingNew(t *testing.T) { - fakeBodyProvider := jsonBodyProvider{FakeModel{}} - - cases := []*Sling{ - &Sling{httpClient: &http.Client{}, method: "GET", rawURL: "http://example.com"}, - &Sling{httpClient: nil, method: "", rawURL: "http://example.com"}, - &Sling{queryStructs: make([]interface{}, 0)}, - &Sling{queryStructs: []interface{}{paramsA}}, - &Sling{queryStructs: []interface{}{paramsA, paramsB}}, - &Sling{bodyProvider: fakeBodyProvider}, - &Sling{bodyProvider: fakeBodyProvider}, - &Sling{bodyProvider: nil}, - New().Add("Content-Type", "application/json"), - New().Add("A", "B").Add("a", "c").New(), - New().Add("A", "B").New().Add("a", "c"), - New().BodyForm(paramsB), - New().BodyForm(paramsB).New(), - } - for _, sling := range cases { - child := sling.New() - if child.httpClient != sling.httpClient { - t.Errorf("expected %v, got %v", sling.httpClient, child.httpClient) - } - if child.method != sling.method { - t.Errorf("expected %s, got %s", sling.method, child.method) - } - if child.rawURL != sling.rawURL { - t.Errorf("expected %s, got %s", sling.rawURL, child.rawURL) - } - // Header should be a copy of parent Sling header. For example, calling - // baseSling.Add("k","v") should not mutate previously created child Slings - if sling.header != nil { - // struct literal cases don't init Header in usual way, skip header check - if !reflect.DeepEqual(sling.header, child.header) { - t.Errorf("not DeepEqual: expected %v, got %v", sling.header, child.header) - } - sling.header.Add("K", "V") - if child.header.Get("K") != "" { - t.Errorf("child.header was a reference to original map, should be copy") - } - } - // queryStruct slice should be a new slice with a copy of the contents - if len(sling.queryStructs) > 0 { - // mutating one slice should not mutate the other - child.queryStructs[0] = nil - if sling.queryStructs[0] == nil { - t.Errorf("child.queryStructs was a re-slice, expected slice with copied contents") - } - } - // body should be copied - if child.bodyProvider != sling.bodyProvider { - t.Errorf("expected %v, got %v", sling.bodyProvider, child.bodyProvider) - } - } -} - -func TestClientSetter(t *testing.T) { - developerClient := &http.Client{} - cases := []struct { - input *http.Client - expected *http.Client - }{ - {nil, http.DefaultClient}, - {developerClient, developerClient}, - } - for _, c := range cases { - sling := New() - sling.Client(c.input) - if sling.httpClient != c.expected { - t.Errorf("input %v, expected %v, got %v", c.input, c.expected, sling.httpClient) - } - } -} - -func TestDoerSetter(t *testing.T) { - developerClient := &http.Client{} - cases := []struct { - input Doer - expected Doer - }{ - {nil, http.DefaultClient}, - {developerClient, developerClient}, - } - for _, c := range cases { - sling := New() - sling.Doer(c.input) - if sling.httpClient != c.expected { - t.Errorf("input %v, expected %v, got %v", c.input, c.expected, sling.httpClient) - } - } -} - -func TestBaseSetter(t *testing.T) { - cases := []string{"http://a.io/", "http://b.io", "/path", "path", ""} - for _, base := range cases { - sling := New().Base(base) - if sling.rawURL != base { - t.Errorf("expected %s, got %s", base, sling.rawURL) - } - } -} - -func TestPathSetter(t *testing.T) { - cases := []struct { - rawURL string - path string - expectedRawURL string - }{ - {"http://a.io/", "foo", "http://a.io/foo"}, - {"http://a.io/", "/foo", "http://a.io/foo"}, - {"http://a.io", "foo", "http://a.io/foo"}, - {"http://a.io", "/foo", "http://a.io/foo"}, - {"http://a.io/foo/", "bar", "http://a.io/foo/bar"}, - // rawURL should end in trailing slash if it is to be Path extended - {"http://a.io/foo", "bar", "http://a.io/bar"}, - {"http://a.io/foo", "/bar", "http://a.io/bar"}, - // path extension is absolute - {"http://a.io", "http://b.io/", "http://b.io/"}, - {"http://a.io/", "http://b.io/", "http://b.io/"}, - {"http://a.io", "http://b.io", "http://b.io"}, - {"http://a.io/", "http://b.io", "http://b.io"}, - // empty base, empty path - {"", "http://b.io", "http://b.io"}, - {"http://a.io", "", "http://a.io"}, - {"", "", ""}, - } - for _, c := range cases { - sling := New().Base(c.rawURL).Path(c.path) - if sling.rawURL != c.expectedRawURL { - t.Errorf("expected %s, got %s", c.expectedRawURL, sling.rawURL) - } - } -} - -func TestMethodSetters(t *testing.T) { - cases := []struct { - sling *Sling - expectedMethod string - }{ - {New().Path("http://a.io"), "GET"}, - {New().Head("http://a.io"), "HEAD"}, - {New().Get("http://a.io"), "GET"}, - {New().Post("http://a.io"), "POST"}, - {New().Put("http://a.io"), "PUT"}, - {New().Patch("http://a.io"), "PATCH"}, - {New().Delete("http://a.io"), "DELETE"}, - } - for _, c := range cases { - if c.sling.method != c.expectedMethod { - t.Errorf("expected method %s, got %s", c.expectedMethod, c.sling.method) - } - } -} - -func TestAddHeader(t *testing.T) { - cases := []struct { - sling *Sling - expectedHeader map[string][]string - }{ - {New().Add("authorization", "OAuth key=\"value\""), map[string][]string{"Authorization": []string{"OAuth key=\"value\""}}}, - // header keys should be canonicalized - {New().Add("content-tYPE", "application/json").Add("User-AGENT", "sling"), map[string][]string{"Content-Type": []string{"application/json"}, "User-Agent": []string{"sling"}}}, - // values for existing keys should be appended - {New().Add("A", "B").Add("a", "c"), map[string][]string{"A": []string{"B", "c"}}}, - // Add should add to values for keys added by parent Slings - {New().Add("A", "B").Add("a", "c").New(), map[string][]string{"A": []string{"B", "c"}}}, - {New().Add("A", "B").New().Add("a", "c"), map[string][]string{"A": []string{"B", "c"}}}, - } - for _, c := range cases { - // type conversion from header to alias'd map for deep equality comparison - headerMap := map[string][]string(c.sling.header) - if !reflect.DeepEqual(c.expectedHeader, headerMap) { - t.Errorf("not DeepEqual: expected %v, got %v", c.expectedHeader, headerMap) - } - } -} - -func TestSetHeader(t *testing.T) { - cases := []struct { - sling *Sling - expectedHeader map[string][]string - }{ - // should replace existing values associated with key - {New().Add("A", "B").Set("a", "c"), map[string][]string{"A": []string{"c"}}}, - {New().Set("content-type", "A").Set("Content-Type", "B"), map[string][]string{"Content-Type": []string{"B"}}}, - // Set should replace values received by copying parent Slings - {New().Set("A", "B").Add("a", "c").New(), map[string][]string{"A": []string{"B", "c"}}}, - {New().Add("A", "B").New().Set("a", "c"), map[string][]string{"A": []string{"c"}}}, - } - for _, c := range cases { - // type conversion from Header to alias'd map for deep equality comparison - headerMap := map[string][]string(c.sling.header) - if !reflect.DeepEqual(c.expectedHeader, headerMap) { - t.Errorf("not DeepEqual: expected %v, got %v", c.expectedHeader, headerMap) - } - } -} - -func TestBasicAuth(t *testing.T) { - cases := []struct { - sling *Sling - expectedAuth []string - }{ - // basic auth: username & password - {New().SetBasicAuth("Aladdin", "open sesame"), []string{"Aladdin", "open sesame"}}, - // empty username - {New().SetBasicAuth("", "secret"), []string{"", "secret"}}, - // empty password - {New().SetBasicAuth("admin", ""), []string{"admin", ""}}, - } - for _, c := range cases { - req, err := c.sling.Request() - if err != nil { - t.Errorf("unexpected error when building Request with .SetBasicAuth()") - } - username, password, ok := req.BasicAuth() - if !ok { - t.Errorf("basic auth missing when expected") - } - auth := []string{username, password} - if !reflect.DeepEqual(c.expectedAuth, auth) { - t.Errorf("not DeepEqual: expected %v, got %v", c.expectedAuth, auth) - } - } -} - -func TestQueryStructSetter(t *testing.T) { - cases := []struct { - sling *Sling - expectedStructs []interface{} - }{ - {New(), []interface{}{}}, - {New().QueryStruct(nil), []interface{}{}}, - {New().QueryStruct(paramsA), []interface{}{paramsA}}, - {New().QueryStruct(paramsA).QueryStruct(paramsA), []interface{}{paramsA, paramsA}}, - {New().QueryStruct(paramsA).QueryStruct(paramsB), []interface{}{paramsA, paramsB}}, - {New().QueryStruct(paramsA).New(), []interface{}{paramsA}}, - {New().QueryStruct(paramsA).New().QueryStruct(paramsB), []interface{}{paramsA, paramsB}}, - } - - for _, c := range cases { - if count := len(c.sling.queryStructs); count != len(c.expectedStructs) { - t.Errorf("expected length %d, got %d", len(c.expectedStructs), count) - } - check: - for _, expected := range c.expectedStructs { - for _, param := range c.sling.queryStructs { - if param == expected { - continue check - } - } - t.Errorf("expected to find %v in %v", expected, c.sling.queryStructs) - } - } -} - -func TestBodyJSONSetter(t *testing.T) { - fakeModel := &FakeModel{} - fakeBodyProvider := jsonBodyProvider{payload: fakeModel} - - cases := []struct { - initial BodyProvider - input interface{} - expected BodyProvider - }{ - // json tagged struct is set as bodyJSON - {nil, fakeModel, fakeBodyProvider}, - // nil argument to bodyJSON does not replace existing bodyJSON - {fakeBodyProvider, nil, fakeBodyProvider}, - // nil bodyJSON remains nil - {nil, nil, nil}, - } - for _, c := range cases { - sling := New() - sling.bodyProvider = c.initial - sling.BodyJSON(c.input) - if sling.bodyProvider != c.expected { - t.Errorf("expected %v, got %v", c.expected, sling.bodyProvider) - } - // Header Content-Type should be application/json if bodyJSON arg was non-nil - if c.input != nil && sling.header.Get(contentType) != jsonContentType { - t.Errorf("Incorrect or missing header, expected %s, got %s", jsonContentType, sling.header.Get(contentType)) - } else if c.input == nil && sling.header.Get(contentType) != "" { - t.Errorf("did not expect a Content-Type header, got %s", sling.header.Get(contentType)) - } - } -} - -func TestBodyFormSetter(t *testing.T) { - fakeParams := FakeParams{KindName: "recent", Count: 25} - fakeBodyProvider := formBodyProvider{payload: fakeParams} - - cases := []struct { - initial BodyProvider - input interface{} - expected BodyProvider - }{ - // url tagged struct is set as bodyStruct - {nil, paramsB, fakeBodyProvider}, - // nil argument to bodyStruct does not replace existing bodyStruct - {fakeBodyProvider, nil, fakeBodyProvider}, - // nil bodyStruct remains nil - {nil, nil, nil}, - } - for _, c := range cases { - sling := New() - sling.bodyProvider = c.initial - sling.BodyForm(c.input) - if sling.bodyProvider != c.expected { - t.Errorf("expected %v, got %v", c.expected, sling.bodyProvider) - } - // Content-Type should be application/x-www-form-urlencoded if bodyStruct was non-nil - if c.input != nil && sling.header.Get(contentType) != formContentType { - t.Errorf("Incorrect or missing header, expected %s, got %s", formContentType, sling.header.Get(contentType)) - } else if c.input == nil && sling.header.Get(contentType) != "" { - t.Errorf("did not expect a Content-Type header, got %s", sling.header.Get(contentType)) - } - } -} - -func TestBodySetter(t *testing.T) { - fakeInput := ioutil.NopCloser(strings.NewReader("test")) - fakeBodyProvider := bodyProvider{body: fakeInput} - - cases := []struct { - initial BodyProvider - input io.Reader - expected BodyProvider - }{ - // nil body is overriden by a set body - {nil, fakeInput, fakeBodyProvider}, - // initial body is not overriden by nil body - {fakeBodyProvider, nil, fakeBodyProvider}, - // nil body is returned unaltered - {nil, nil, nil}, - } - for _, c := range cases { - sling := New() - sling.bodyProvider = c.initial - sling.Body(c.input) - if sling.bodyProvider != c.expected { - t.Errorf("expected %v, got %v", c.expected, sling.bodyProvider) - } - } -} - -func TestRequest_urlAndMethod(t *testing.T) { - cases := []struct { - sling *Sling - expectedMethod string - expectedURL string - expectedErr error - }{ - {New().Base("http://a.io"), "GET", "http://a.io", nil}, - {New().Path("http://a.io"), "GET", "http://a.io", nil}, - {New().Get("http://a.io"), "GET", "http://a.io", nil}, - {New().Put("http://a.io"), "PUT", "http://a.io", nil}, - {New().Base("http://a.io/").Path("foo"), "GET", "http://a.io/foo", nil}, - {New().Base("http://a.io/").Post("foo"), "POST", "http://a.io/foo", nil}, - // if relative path is an absolute url, base is ignored - {New().Base("http://a.io").Path("http://b.io"), "GET", "http://b.io", nil}, - {New().Path("http://a.io").Path("http://b.io"), "GET", "http://b.io", nil}, - // last method setter takes priority - {New().Get("http://b.io").Post("http://a.io"), "POST", "http://a.io", nil}, - {New().Post("http://a.io/").Put("foo/").Delete("bar"), "DELETE", "http://a.io/foo/bar", nil}, - // last Base setter takes priority - {New().Base("http://a.io").Base("http://b.io"), "GET", "http://b.io", nil}, - // Path setters are additive - {New().Base("http://a.io/").Path("foo/").Path("bar"), "GET", "http://a.io/foo/bar", nil}, - {New().Path("http://a.io/").Path("foo/").Path("bar"), "GET", "http://a.io/foo/bar", nil}, - // removes extra '/' between base and ref url - {New().Base("http://a.io/").Get("/foo"), "GET", "http://a.io/foo", nil}, - } - for _, c := range cases { - req, err := c.sling.Request() - if err != c.expectedErr { - t.Errorf("expected error %v, got %v for %+v", c.expectedErr, err, c.sling) - } - if req.URL.String() != c.expectedURL { - t.Errorf("expected url %s, got %s for %+v", c.expectedURL, req.URL.String(), c.sling) - } - if req.Method != c.expectedMethod { - t.Errorf("expected method %s, got %s for %+v", c.expectedMethod, req.Method, c.sling) - } - } -} - -func TestRequest_queryStructs(t *testing.T) { - cases := []struct { - sling *Sling - expectedURL string - }{ - {New().Base("http://a.io").QueryStruct(paramsA), "http://a.io?limit=30"}, - {New().Base("http://a.io").QueryStruct(paramsA).QueryStruct(paramsB), "http://a.io?count=25&kind_name=recent&limit=30"}, - {New().Base("http://a.io/").Path("foo?path=yes").QueryStruct(paramsA), "http://a.io/foo?limit=30&path=yes"}, - {New().Base("http://a.io").QueryStruct(paramsA).New(), "http://a.io?limit=30"}, - {New().Base("http://a.io").QueryStruct(paramsA).New().QueryStruct(paramsB), "http://a.io?count=25&kind_name=recent&limit=30"}, - } - for _, c := range cases { - req, _ := c.sling.Request() - if req.URL.String() != c.expectedURL { - t.Errorf("expected url %s, got %s for %+v", c.expectedURL, req.URL.String(), c.sling) - } - } -} - -func TestRequest_body(t *testing.T) { - cases := []struct { - sling *Sling - expectedBody string // expected Body io.Reader as a string - expectedContentType string - }{ - // BodyJSON - {New().BodyJSON(modelA), "{\"text\":\"note\",\"favorite_count\":12}\n", jsonContentType}, - {New().BodyJSON(&modelA), "{\"text\":\"note\",\"favorite_count\":12}\n", jsonContentType}, - {New().BodyJSON(&FakeModel{}), "{}\n", jsonContentType}, - {New().BodyJSON(FakeModel{}), "{}\n", jsonContentType}, - // BodyJSON overrides existing values - {New().BodyJSON(&FakeModel{}).BodyJSON(&FakeModel{Text: "msg"}), "{\"text\":\"msg\"}\n", jsonContentType}, - // BodyForm - {New().BodyForm(paramsA), "limit=30", formContentType}, - {New().BodyForm(paramsB), "count=25&kind_name=recent", formContentType}, - {New().BodyForm(¶msB), "count=25&kind_name=recent", formContentType}, - // BodyForm overrides existing values - {New().BodyForm(paramsA).New().BodyForm(paramsB), "count=25&kind_name=recent", formContentType}, - // Mixture of BodyJSON and BodyForm prefers body setter called last with a non-nil argument - {New().BodyForm(paramsB).New().BodyJSON(modelA), "{\"text\":\"note\",\"favorite_count\":12}\n", jsonContentType}, - {New().BodyJSON(modelA).New().BodyForm(paramsB), "count=25&kind_name=recent", formContentType}, - {New().BodyForm(paramsB).New().BodyJSON(nil), "count=25&kind_name=recent", formContentType}, - {New().BodyJSON(modelA).New().BodyForm(nil), "{\"text\":\"note\",\"favorite_count\":12}\n", jsonContentType}, - // Body - {New().Body(strings.NewReader("this-is-a-test")), "this-is-a-test", ""}, - {New().Body(strings.NewReader("a")).Body(strings.NewReader("b")), "b", ""}, - } - for _, c := range cases { - req, _ := c.sling.Request() - buf := new(bytes.Buffer) - buf.ReadFrom(req.Body) - // req.Body should have contained the expectedBody string - if value := buf.String(); value != c.expectedBody { - t.Errorf("expected Request.Body %s, got %s", c.expectedBody, value) - } - // Header Content-Type should be expectedContentType ("" means no contentType expected) - if actualHeader := req.Header.Get(contentType); actualHeader != c.expectedContentType && c.expectedContentType != "" { - t.Errorf("Incorrect or missing header, expected %s, got %s", c.expectedContentType, actualHeader) - } - } -} - -func TestRequest_bodyNoData(t *testing.T) { - // test that Body is left nil when no bodyJSON or bodyStruct set - slings := []*Sling{ - New(), - New().BodyJSON(nil), - New().BodyForm(nil), - } - for _, sling := range slings { - req, _ := sling.Request() - if req.Body != nil { - t.Errorf("expected nil Request.Body, got %v", req.Body) - } - // Header Content-Type should not be set when bodyJSON argument was nil or never called - if actualHeader := req.Header.Get(contentType); actualHeader != "" { - t.Errorf("did not expect a Content-Type header, got %s", actualHeader) - } - } -} - -func TestRequest_bodyEncodeErrors(t *testing.T) { - cases := []struct { - sling *Sling - expectedErr error - }{ - // check that Encode errors are propagated, illegal JSON field - {New().BodyJSON(FakeModel{Temperature: math.Inf(1)}), errors.New("json: unsupported value: +Inf")}, - } - for _, c := range cases { - req, err := c.sling.Request() - if err == nil || err.Error() != c.expectedErr.Error() { - t.Errorf("expected error %v, got %v", c.expectedErr, err) - } - if req != nil { - t.Errorf("expected nil Request, got %+v", req) - } - } -} - -func TestRequest_headers(t *testing.T) { - cases := []struct { - sling *Sling - expectedHeader map[string][]string - }{ - {New().Add("authorization", "OAuth key=\"value\""), map[string][]string{"Authorization": []string{"OAuth key=\"value\""}}}, - // header keys should be canonicalized - {New().Add("content-tYPE", "application/json").Add("User-AGENT", "sling"), map[string][]string{"Content-Type": []string{"application/json"}, "User-Agent": []string{"sling"}}}, - // values for existing keys should be appended - {New().Add("A", "B").Add("a", "c"), map[string][]string{"A": []string{"B", "c"}}}, - // Add should add to values for keys added by parent Slings - {New().Add("A", "B").Add("a", "c").New(), map[string][]string{"A": []string{"B", "c"}}}, - {New().Add("A", "B").New().Add("a", "c"), map[string][]string{"A": []string{"B", "c"}}}, - // Add and Set - {New().Add("A", "B").Set("a", "c"), map[string][]string{"A": []string{"c"}}}, - {New().Set("content-type", "A").Set("Content-Type", "B"), map[string][]string{"Content-Type": []string{"B"}}}, - // Set should replace values received by copying parent Slings - {New().Set("A", "B").Add("a", "c").New(), map[string][]string{"A": []string{"B", "c"}}}, - {New().Add("A", "B").New().Set("a", "c"), map[string][]string{"A": []string{"c"}}}, - } - for _, c := range cases { - req, _ := c.sling.Request() - // type conversion from Header to alias'd map for deep equality comparison - headerMap := map[string][]string(req.Header) - if !reflect.DeepEqual(c.expectedHeader, headerMap) { - t.Errorf("not DeepEqual: expected %v, got %v", c.expectedHeader, headerMap) - } - } -} - -func TestAddQueryStructs(t *testing.T) { - cases := []struct { - rawurl string - queryStructs []interface{} - expected string - }{ - {"http://a.io", []interface{}{}, "http://a.io"}, - {"http://a.io", []interface{}{paramsA}, "http://a.io?limit=30"}, - {"http://a.io", []interface{}{paramsA, paramsA}, "http://a.io?limit=30&limit=30"}, - {"http://a.io", []interface{}{paramsA, paramsB}, "http://a.io?count=25&kind_name=recent&limit=30"}, - // don't blow away query values on the rawURL (parsed into RawQuery) - {"http://a.io?initial=7", []interface{}{paramsA}, "http://a.io?initial=7&limit=30"}, - } - for _, c := range cases { - reqURL, _ := url.Parse(c.rawurl) - addQueryStructs(reqURL, c.queryStructs) - if reqURL.String() != c.expected { - t.Errorf("expected %s, got %s", c.expected, reqURL.String()) - } - } -} - -// Sending - -type APIError struct { - Message string `json:"message"` - Code int `json:"code"` -} - -func TestDo_onSuccess(t *testing.T) { - const expectedText = "Some text" - const expectedFavoriteCount int64 = 24 - - client, mux, server := testServer() - defer server.Close() - mux.HandleFunc("/success", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - fmt.Fprintf(w, `{"text": "Some text", "favorite_count": 24}`) - }) - - sling := New().Client(client) - req, _ := http.NewRequest("GET", "http://example.com/success", nil) - - model := new(FakeModel) - apiError := new(APIError) - resp, err := sling.Do(req, model, apiError) - - if err != nil { - t.Errorf("expected nil, got %v", err) - } - if resp.StatusCode != 200 { - t.Errorf("expected %d, got %d", 200, resp.StatusCode) - } - if model.Text != expectedText { - t.Errorf("expected %s, got %s", expectedText, model.Text) - } - if model.FavoriteCount != expectedFavoriteCount { - t.Errorf("expected %d, got %d", expectedFavoriteCount, model.FavoriteCount) - } -} - -func TestDo_onSuccessWithNilValue(t *testing.T) { - client, mux, server := testServer() - defer server.Close() - mux.HandleFunc("/success", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - fmt.Fprintf(w, `{"text": "Some text", "favorite_count": 24}`) - }) - - sling := New().Client(client) - req, _ := http.NewRequest("GET", "http://example.com/success", nil) - - apiError := new(APIError) - resp, err := sling.Do(req, nil, apiError) - - if err != nil { - t.Errorf("expected nil, got %v", err) - } - if resp.StatusCode != 200 { - t.Errorf("expected %d, got %d", 200, resp.StatusCode) - } - expected := &APIError{} - if !reflect.DeepEqual(expected, apiError) { - t.Errorf("failureV should not be populated, exepcted %v, got %v", expected, apiError) - } -} - -func TestDo_onFailure(t *testing.T) { - const expectedMessage = "Invalid argument" - const expectedCode int = 215 - - client, mux, server := testServer() - defer server.Close() - mux.HandleFunc("/failure", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - fmt.Fprintf(w, `{"message": "Invalid argument", "code": 215}`) - }) - - sling := New().Client(client) - req, _ := http.NewRequest("GET", "http://example.com/failure", nil) - - model := new(FakeModel) - apiError := new(APIError) - resp, err := sling.Do(req, model, apiError) - - if err != nil { - t.Errorf("expected nil, got %v", err) - } - if resp.StatusCode != 400 { - t.Errorf("expected %d, got %d", 400, resp.StatusCode) - } - if apiError.Message != expectedMessage { - t.Errorf("expected %s, got %s", expectedMessage, apiError.Message) - } - if apiError.Code != expectedCode { - t.Errorf("expected %d, got %d", expectedCode, apiError.Code) - } -} - -func TestDo_onFailureWithNilValue(t *testing.T) { - client, mux, server := testServer() - defer server.Close() - mux.HandleFunc("/failure", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(420) - fmt.Fprintf(w, `{"message": "Enhance your calm", "code": 88}`) - }) - - sling := New().Client(client) - req, _ := http.NewRequest("GET", "http://example.com/failure", nil) - - model := new(FakeModel) - resp, err := sling.Do(req, model, nil) - - if err != nil { - t.Errorf("expected nil, got %v", err) - } - if resp.StatusCode != 420 { - t.Errorf("expected %d, got %d", 420, resp.StatusCode) - } - expected := &FakeModel{} - if !reflect.DeepEqual(expected, model) { - t.Errorf("successV should not be populated, exepcted %v, got %v", expected, model) - } -} - -func TestReceive_success(t *testing.T) { - client, mux, server := testServer() - defer server.Close() - mux.HandleFunc("/foo/submit", func(w http.ResponseWriter, r *http.Request) { - assertMethod(t, "POST", r) - assertQuery(t, map[string]string{"kind_name": "vanilla", "count": "11"}, r) - assertPostForm(t, map[string]string{"kind_name": "vanilla", "count": "11"}, r) - w.Header().Set("Content-Type", "application/json") - fmt.Fprintf(w, `{"text": "Some text", "favorite_count": 24}`) - }) - - endpoint := New().Client(client).Base("http://example.com/").Path("foo/").Post("submit") - // encode url-tagged struct in query params and as post body for testing purposes - params := FakeParams{KindName: "vanilla", Count: 11} - model := new(FakeModel) - apiError := new(APIError) - resp, err := endpoint.New().QueryStruct(params).BodyForm(params).Receive(model, apiError) - - if err != nil { - t.Errorf("expected nil, got %v", err) - } - if resp.StatusCode != 200 { - t.Errorf("expected %d, got %d", 200, resp.StatusCode) - } - expectedModel := &FakeModel{Text: "Some text", FavoriteCount: 24} - if !reflect.DeepEqual(expectedModel, model) { - t.Errorf("expected %v, got %v", expectedModel, model) - } - expectedAPIError := &APIError{} - if !reflect.DeepEqual(expectedAPIError, apiError) { - t.Errorf("failureV should be zero valued, exepcted %v, got %v", expectedAPIError, apiError) - } -} - -func TestReceive_failure(t *testing.T) { - client, mux, server := testServer() - defer server.Close() - mux.HandleFunc("/foo/submit", func(w http.ResponseWriter, r *http.Request) { - assertMethod(t, "POST", r) - assertQuery(t, map[string]string{"kind_name": "vanilla", "count": "11"}, r) - assertPostForm(t, map[string]string{"kind_name": "vanilla", "count": "11"}, r) - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(429) - fmt.Fprintf(w, `{"message": "Rate limit exceeded", "code": 88}`) - }) - - endpoint := New().Client(client).Base("http://example.com/").Path("foo/").Post("submit") - // encode url-tagged struct in query params and as post body for testing purposes - params := FakeParams{KindName: "vanilla", Count: 11} - model := new(FakeModel) - apiError := new(APIError) - resp, err := endpoint.New().QueryStruct(params).BodyForm(params).Receive(model, apiError) - - if err != nil { - t.Errorf("expected nil, got %v", err) - } - if resp.StatusCode != 429 { - t.Errorf("expected %d, got %d", 429, resp.StatusCode) - } - expectedAPIError := &APIError{Message: "Rate limit exceeded", Code: 88} - if !reflect.DeepEqual(expectedAPIError, apiError) { - t.Errorf("expected %v, got %v", expectedAPIError, apiError) - } - expectedModel := &FakeModel{} - if !reflect.DeepEqual(expectedModel, model) { - t.Errorf("successV should not be zero valued, expected %v, got %v", expectedModel, model) - } -} - -func TestReceive_errorCreatingRequest(t *testing.T) { - expectedErr := errors.New("json: unsupported value: +Inf") - resp, err := New().BodyJSON(FakeModel{Temperature: math.Inf(1)}).Receive(nil, nil) - if err == nil || err.Error() != expectedErr.Error() { - t.Errorf("expected %v, got %v", expectedErr, err) - } - if resp != nil { - t.Errorf("expected nil resp, got %v", resp) - } -} - -// Testing Utils - -// testServer returns an http Client, ServeMux, and Server. The client proxies -// requests to the server and handlers can be registered on the mux to handle -// requests. The caller must close the test server. -func testServer() (*http.Client, *http.ServeMux, *httptest.Server) { - mux := http.NewServeMux() - server := httptest.NewServer(mux) - transport := &http.Transport{ - Proxy: func(req *http.Request) (*url.URL, error) { - return url.Parse(server.URL) - }, - } - client := &http.Client{Transport: transport} - return client, mux, server -} - -func assertMethod(t *testing.T, expectedMethod string, req *http.Request) { - if actualMethod := req.Method; actualMethod != expectedMethod { - t.Errorf("expected method %s, got %s", expectedMethod, actualMethod) - } -} - -// assertQuery tests that the Request has the expected url query key/val pairs -func assertQuery(t *testing.T, expected map[string]string, req *http.Request) { - queryValues := req.URL.Query() // net/url Values is a map[string][]string - expectedValues := url.Values{} - for key, value := range expected { - expectedValues.Add(key, value) - } - if !reflect.DeepEqual(expectedValues, queryValues) { - t.Errorf("expected parameters %v, got %v", expected, req.URL.RawQuery) - } -} - -// assertPostForm tests that the Request has the expected key values pairs url -// encoded in its Body -func assertPostForm(t *testing.T, expected map[string]string, req *http.Request) { - req.ParseForm() // parses request Body to put url.Values in r.Form/r.PostForm - expectedValues := url.Values{} - for key, value := range expected { - expectedValues.Add(key, value) - } - if !reflect.DeepEqual(expectedValues, req.PostForm) { - t.Errorf("expected parameters %v, got %v", expected, req.PostForm) - } -} diff --git a/vendor/github.com/dghubble/sling/test b/vendor/github.com/dghubble/sling/test deleted file mode 100755 index fa845c625..000000000 --- a/vendor/github.com/dghubble/sling/test +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -set -e - -PKGS=$(go list ./... | grep -v /examples) -FORMATTABLE="$(find . -maxdepth 1 -type d)" -LINTABLE=$(go list ./...) - -go test $PKGS -cover -go vet $PKGS - -echo "Checking gofmt..." -fmtRes=$(gofmt -l $FORMATTABLE) -if [ -n "${fmtRes}" ]; then - echo -e "gofmt checking failed:\n${fmtRes}" - exit 2 -fi - -echo "Checking golint..." -lintRes=$(echo $LINTABLE | xargs -n 1 golint) -if [ -n "${lintRes}" ]; then - echo -e "golint checking failed:\n${lintRes}" - exit 2 -fi \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful-swagger12/.travis.yml b/vendor/github.com/emicklei/go-restful-swagger12/.travis.yml new file mode 100644 index 000000000..c74e4fa57 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/.travis.yml @@ -0,0 +1,4 @@ +language: go + +go: + - 1.x \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful-swagger12/CHANGES.md b/vendor/github.com/emicklei/go-restful-swagger12/CHANGES.md new file mode 100644 index 000000000..213b8e7b3 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/CHANGES.md @@ -0,0 +1,46 @@ +Change history of swagger += +2017-01-30 +- moved from go-restful/swagger to go-restful-swagger12 + +2015-10-16 +- add type override mechanism for swagger models (MR 254, nathanejohnson) +- replace uses of wildcard in generated apidocs (issue 251) + +2015-05-25 +- (api break) changed the type of Properties in Model +- (api break) changed the type of Models in ApiDeclaration +- (api break) changed the parameter type of PostBuildDeclarationMapFunc + +2015-04-09 +- add ModelBuildable interface for customization of Model + +2015-03-17 +- preserve order of Routes per WebService in Swagger listing +- fix use of $ref and type in Swagger models +- add api version to listing + +2014-11-14 +- operation parameters are now sorted using ordering path,query,form,header,body + +2014-11-12 +- respect omitempty tag value for embedded structs +- expose ApiVersion of WebService to Swagger ApiDeclaration + +2014-05-29 +- (api add) Ability to define custom http.Handler to serve swagger-ui static files + +2014-05-04 +- (fix) include model for array element type of response + +2014-01-03 +- (fix) do not add primitive type to the Api models + +2013-11-27 +- (fix) make Swagger work for WebServices with root ("/" or "") paths + +2013-10-29 +- (api add) package variable LogInfo to customize logging function + +2013-10-15 +- upgraded to spec version 1.2 (https://github.com/wordnik/swagger-core/wiki/1.2-transition) \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful-swagger12/LICENSE b/vendor/github.com/emicklei/go-restful-swagger12/LICENSE new file mode 100644 index 000000000..aeab5b440 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2017 Ernest Micklei + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful-swagger12/README.md b/vendor/github.com/emicklei/go-restful-swagger12/README.md new file mode 100644 index 000000000..cad28966a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/README.md @@ -0,0 +1,83 @@ +# go-restful-swagger12 + +[![Build Status](https://travis-ci.org/emicklei/go-restful-swagger12.png)](https://travis-ci.org/emicklei/go-restful-swagger12) +[![GoDoc](https://godoc.org/github.com/emicklei/go-restful-swagger12?status.svg)](https://godoc.org/github.com/emicklei/go-restful-swagger12) + +How to use Swagger UI with go-restful += + +Get the Swagger UI sources (version 1.2 only) + + git clone https://github.com/wordnik/swagger-ui.git + +The project contains a "dist" folder. +Its contents has all the Swagger UI files you need. + +The `index.html` has an `url` set to `http://petstore.swagger.wordnik.com/api/api-docs`. +You need to change that to match your WebService JSON endpoint e.g. `http://localhost:8080/apidocs.json` + +Now, you can install the Swagger WebService for serving the Swagger specification in JSON. + + config := swagger.Config{ + WebServices: restful.RegisteredWebServices(), + ApiPath: "/apidocs.json", + SwaggerPath: "/apidocs/", + SwaggerFilePath: "/Users/emicklei/Projects/swagger-ui/dist"} + swagger.InstallSwaggerService(config) + + +Documenting Structs +-- + +Currently there are 2 ways to document your structs in the go-restful Swagger. + +###### By using struct tags +- Use tag "description" to annotate a struct field with a description to show in the UI +- Use tag "modelDescription" to annotate the struct itself with a description to show in the UI. The tag can be added in an field of the struct and in case that there are multiple definition, they will be appended with an empty line. + +###### By using the SwaggerDoc method +Here is an example with an `Address` struct and the documentation for each of the fields. The `""` is a special entry for **documenting the struct itself**. + + type Address struct { + Country string `json:"country,omitempty"` + PostCode int `json:"postcode,omitempty"` + } + + func (Address) SwaggerDoc() map[string]string { + return map[string]string{ + "": "Address doc", + "country": "Country doc", + "postcode": "PostCode doc", + } + } + +This example will generate a JSON like this + + { + "Address": { + "id": "Address", + "description": "Address doc", + "properties": { + "country": { + "type": "string", + "description": "Country doc" + }, + "postcode": { + "type": "integer", + "format": "int32", + "description": "PostCode doc" + } + } + } + } + +**Very Important Notes:** +- `SwaggerDoc()` is using a **NON-Pointer** receiver (e.g. func (Address) and not func (*Address)) +- The returned map should use as key the name of the field as defined in the JSON parameter (e.g. `"postcode"` and not `"PostCode"`) + +Notes +-- +- The Nickname of an Operation is automatically set by finding the name of the function. You can override it using RouteBuilder.Operation(..) +- The WebServices field of swagger.Config can be used to control which service you want to expose and document ; you can have multiple configs and therefore multiple endpoints. + +© 2017, ernestmicklei.com. MIT License. Contributions welcome. \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful-swagger12/api_declaration_list.go b/vendor/github.com/emicklei/go-restful-swagger12/api_declaration_list.go new file mode 100644 index 000000000..9f4c3690a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/api_declaration_list.go @@ -0,0 +1,64 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "encoding/json" +) + +// ApiDeclarationList maintains an ordered list of ApiDeclaration. +type ApiDeclarationList struct { + List []ApiDeclaration +} + +// At returns the ApiDeclaration by its path unless absent, then ok is false +func (l *ApiDeclarationList) At(path string) (a ApiDeclaration, ok bool) { + for _, each := range l.List { + if each.ResourcePath == path { + return each, true + } + } + return a, false +} + +// Put adds or replaces a ApiDeclaration with this name +func (l *ApiDeclarationList) Put(path string, a ApiDeclaration) { + // maybe replace existing + for i, each := range l.List { + if each.ResourcePath == path { + // replace + l.List[i] = a + return + } + } + // add + l.List = append(l.List, a) +} + +// Do enumerates all the properties, each with its assigned name +func (l *ApiDeclarationList) Do(block func(path string, decl ApiDeclaration)) { + for _, each := range l.List { + block(each.ResourcePath, each) + } +} + +// MarshalJSON writes the ModelPropertyList as if it was a map[string]ModelProperty +func (l ApiDeclarationList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + buf.WriteString("{\n") + for i, each := range l.List { + buf.WriteString("\"") + buf.WriteString(each.ResourcePath) + buf.WriteString("\": ") + encoder.Encode(each) + if i < len(l.List)-1 { + buf.WriteString(",\n") + } + } + buf.WriteString("}") + return buf.Bytes(), nil +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/config.go b/vendor/github.com/emicklei/go-restful-swagger12/config.go new file mode 100644 index 000000000..18f8e57d9 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/config.go @@ -0,0 +1,46 @@ +package swagger + +import ( + "net/http" + "reflect" + + "github.com/emicklei/go-restful" +) + +// PostBuildDeclarationMapFunc can be used to modify the api declaration map. +type PostBuildDeclarationMapFunc func(apiDeclarationMap *ApiDeclarationList) + +// MapSchemaFormatFunc can be used to modify typeName at definition time. +type MapSchemaFormatFunc func(typeName string) string + +// MapModelTypeNameFunc can be used to return the desired typeName for a given +// type. It will return false if the default name should be used. +type MapModelTypeNameFunc func(t reflect.Type) (string, bool) + +type Config struct { + // url where the services are available, e.g. http://localhost:8080 + // if left empty then the basePath of Swagger is taken from the actual request + WebServicesUrl string + // path where the JSON api is avaiable , e.g. /apidocs + ApiPath string + // [optional] path where the swagger UI will be served, e.g. /swagger + SwaggerPath string + // [optional] location of folder containing Swagger HTML5 application index.html + SwaggerFilePath string + // api listing is constructed from this list of restful WebServices. + WebServices []*restful.WebService + // will serve all static content (scripts,pages,images) + StaticHandler http.Handler + // [optional] on default CORS (Cross-Origin-Resource-Sharing) is enabled. + DisableCORS bool + // Top-level API version. Is reflected in the resource listing. + ApiVersion string + // If set then call this handler after building the complete ApiDeclaration Map + PostBuildHandler PostBuildDeclarationMapFunc + // Swagger global info struct + Info Info + // [optional] If set, model builder should call this handler to get addition typename-to-swagger-format-field conversion. + SchemaFormatHandler MapSchemaFormatFunc + // [optional] If set, model builder should call this handler to retrieve the name for a given type. + ModelTypeNameHandler MapModelTypeNameFunc +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_builder.go b/vendor/github.com/emicklei/go-restful-swagger12/model_builder.go new file mode 100644 index 000000000..d40786f25 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_builder.go @@ -0,0 +1,467 @@ +package swagger + +import ( + "encoding/json" + "reflect" + "strings" +) + +// ModelBuildable is used for extending Structs that need more control over +// how the Model appears in the Swagger api declaration. +type ModelBuildable interface { + PostBuildModel(m *Model) *Model +} + +type modelBuilder struct { + Models *ModelList + Config *Config +} + +type documentable interface { + SwaggerDoc() map[string]string +} + +// Check if this structure has a method with signature func () SwaggerDoc() map[string]string +// If it exists, retrive the documentation and overwrite all struct tag descriptions +func getDocFromMethodSwaggerDoc2(model reflect.Type) map[string]string { + if docable, ok := reflect.New(model).Elem().Interface().(documentable); ok { + return docable.SwaggerDoc() + } + return make(map[string]string) +} + +// addModelFrom creates and adds a Model to the builder and detects and calls +// the post build hook for customizations +func (b modelBuilder) addModelFrom(sample interface{}) { + if modelOrNil := b.addModel(reflect.TypeOf(sample), ""); modelOrNil != nil { + // allow customizations + if buildable, ok := sample.(ModelBuildable); ok { + modelOrNil = buildable.PostBuildModel(modelOrNil) + b.Models.Put(modelOrNil.Id, *modelOrNil) + } + } +} + +func (b modelBuilder) addModel(st reflect.Type, nameOverride string) *Model { + // Turn pointers into simpler types so further checks are + // correct. + if st.Kind() == reflect.Ptr { + st = st.Elem() + } + + modelName := b.keyFrom(st) + if nameOverride != "" { + modelName = nameOverride + } + // no models needed for primitive types + if b.isPrimitiveType(modelName) { + return nil + } + // golang encoding/json packages says array and slice values encode as + // JSON arrays, except that []byte encodes as a base64-encoded string. + // If we see a []byte here, treat it at as a primitive type (string) + // and deal with it in buildArrayTypeProperty. + if (st.Kind() == reflect.Slice || st.Kind() == reflect.Array) && + st.Elem().Kind() == reflect.Uint8 { + return nil + } + // see if we already have visited this model + if _, ok := b.Models.At(modelName); ok { + return nil + } + sm := Model{ + Id: modelName, + Required: []string{}, + Properties: ModelPropertyList{}} + + // reference the model before further initializing (enables recursive structs) + b.Models.Put(modelName, sm) + + // check for slice or array + if st.Kind() == reflect.Slice || st.Kind() == reflect.Array { + b.addModel(st.Elem(), "") + return &sm + } + // check for structure or primitive type + if st.Kind() != reflect.Struct { + return &sm + } + + fullDoc := getDocFromMethodSwaggerDoc2(st) + modelDescriptions := []string{} + + for i := 0; i < st.NumField(); i++ { + field := st.Field(i) + jsonName, modelDescription, prop := b.buildProperty(field, &sm, modelName) + if len(modelDescription) > 0 { + modelDescriptions = append(modelDescriptions, modelDescription) + } + + // add if not omitted + if len(jsonName) != 0 { + // update description + if fieldDoc, ok := fullDoc[jsonName]; ok { + prop.Description = fieldDoc + } + // update Required + if b.isPropertyRequired(field) { + sm.Required = append(sm.Required, jsonName) + } + sm.Properties.Put(jsonName, prop) + } + } + + // We always overwrite documentation if SwaggerDoc method exists + // "" is special for documenting the struct itself + if modelDoc, ok := fullDoc[""]; ok { + sm.Description = modelDoc + } else if len(modelDescriptions) != 0 { + sm.Description = strings.Join(modelDescriptions, "\n") + } + + // update model builder with completed model + b.Models.Put(modelName, sm) + + return &sm +} + +func (b modelBuilder) isPropertyRequired(field reflect.StructField) bool { + required := true + if jsonTag := field.Tag.Get("json"); jsonTag != "" { + s := strings.Split(jsonTag, ",") + if len(s) > 1 && s[1] == "omitempty" { + return false + } + } + return required +} + +func (b modelBuilder) buildProperty(field reflect.StructField, model *Model, modelName string) (jsonName, modelDescription string, prop ModelProperty) { + jsonName = b.jsonNameOfField(field) + if len(jsonName) == 0 { + // empty name signals skip property + return "", "", prop + } + + if field.Name == "XMLName" && field.Type.String() == "xml.Name" { + // property is metadata for the xml.Name attribute, can be skipped + return "", "", prop + } + + if tag := field.Tag.Get("modelDescription"); tag != "" { + modelDescription = tag + } + + prop.setPropertyMetadata(field) + if prop.Type != nil { + return jsonName, modelDescription, prop + } + fieldType := field.Type + + // check if type is doing its own marshalling + marshalerType := reflect.TypeOf((*json.Marshaler)(nil)).Elem() + if fieldType.Implements(marshalerType) { + var pType = "string" + if prop.Type == nil { + prop.Type = &pType + } + if prop.Format == "" { + prop.Format = b.jsonSchemaFormat(b.keyFrom(fieldType)) + } + return jsonName, modelDescription, prop + } + + // check if annotation says it is a string + if jsonTag := field.Tag.Get("json"); jsonTag != "" { + s := strings.Split(jsonTag, ",") + if len(s) > 1 && s[1] == "string" { + stringt := "string" + prop.Type = &stringt + return jsonName, modelDescription, prop + } + } + + fieldKind := fieldType.Kind() + switch { + case fieldKind == reflect.Struct: + jsonName, prop := b.buildStructTypeProperty(field, jsonName, model) + return jsonName, modelDescription, prop + case fieldKind == reflect.Slice || fieldKind == reflect.Array: + jsonName, prop := b.buildArrayTypeProperty(field, jsonName, modelName) + return jsonName, modelDescription, prop + case fieldKind == reflect.Ptr: + jsonName, prop := b.buildPointerTypeProperty(field, jsonName, modelName) + return jsonName, modelDescription, prop + case fieldKind == reflect.String: + stringt := "string" + prop.Type = &stringt + return jsonName, modelDescription, prop + case fieldKind == reflect.Map: + // if it's a map, it's unstructured, and swagger 1.2 can't handle it + objectType := "object" + prop.Type = &objectType + return jsonName, modelDescription, prop + } + + fieldTypeName := b.keyFrom(fieldType) + if b.isPrimitiveType(fieldTypeName) { + mapped := b.jsonSchemaType(fieldTypeName) + prop.Type = &mapped + prop.Format = b.jsonSchemaFormat(fieldTypeName) + return jsonName, modelDescription, prop + } + modelType := b.keyFrom(fieldType) + prop.Ref = &modelType + + if fieldType.Name() == "" { // override type of anonymous structs + nestedTypeName := modelName + "." + jsonName + prop.Ref = &nestedTypeName + b.addModel(fieldType, nestedTypeName) + } + return jsonName, modelDescription, prop +} + +func hasNamedJSONTag(field reflect.StructField) bool { + parts := strings.Split(field.Tag.Get("json"), ",") + if len(parts) == 0 { + return false + } + for _, s := range parts[1:] { + if s == "inline" { + return false + } + } + return len(parts[0]) > 0 +} + +func (b modelBuilder) buildStructTypeProperty(field reflect.StructField, jsonName string, model *Model) (nameJson string, prop ModelProperty) { + prop.setPropertyMetadata(field) + // Check for type override in tag + if prop.Type != nil { + return jsonName, prop + } + fieldType := field.Type + // check for anonymous + if len(fieldType.Name()) == 0 { + // anonymous + anonType := model.Id + "." + jsonName + b.addModel(fieldType, anonType) + prop.Ref = &anonType + return jsonName, prop + } + + if field.Name == fieldType.Name() && field.Anonymous && !hasNamedJSONTag(field) { + // embedded struct + sub := modelBuilder{new(ModelList), b.Config} + sub.addModel(fieldType, "") + subKey := sub.keyFrom(fieldType) + // merge properties from sub + subModel, _ := sub.Models.At(subKey) + subModel.Properties.Do(func(k string, v ModelProperty) { + model.Properties.Put(k, v) + // if subModel says this property is required then include it + required := false + for _, each := range subModel.Required { + if k == each { + required = true + break + } + } + if required { + model.Required = append(model.Required, k) + } + }) + // add all new referenced models + sub.Models.Do(func(key string, sub Model) { + if key != subKey { + if _, ok := b.Models.At(key); !ok { + b.Models.Put(key, sub) + } + } + }) + // empty name signals skip property + return "", prop + } + // simple struct + b.addModel(fieldType, "") + var pType = b.keyFrom(fieldType) + prop.Ref = &pType + return jsonName, prop +} + +func (b modelBuilder) buildArrayTypeProperty(field reflect.StructField, jsonName, modelName string) (nameJson string, prop ModelProperty) { + // check for type override in tags + prop.setPropertyMetadata(field) + if prop.Type != nil { + return jsonName, prop + } + fieldType := field.Type + if fieldType.Elem().Kind() == reflect.Uint8 { + stringt := "string" + prop.Type = &stringt + return jsonName, prop + } + var pType = "array" + prop.Type = &pType + isPrimitive := b.isPrimitiveType(fieldType.Elem().Name()) + elemTypeName := b.getElementTypeName(modelName, jsonName, fieldType.Elem()) + prop.Items = new(Item) + if isPrimitive { + mapped := b.jsonSchemaType(elemTypeName) + prop.Items.Type = &mapped + } else { + prop.Items.Ref = &elemTypeName + } + // add|overwrite model for element type + if fieldType.Elem().Kind() == reflect.Ptr { + fieldType = fieldType.Elem() + } + if !isPrimitive { + b.addModel(fieldType.Elem(), elemTypeName) + } + return jsonName, prop +} + +func (b modelBuilder) buildPointerTypeProperty(field reflect.StructField, jsonName, modelName string) (nameJson string, prop ModelProperty) { + prop.setPropertyMetadata(field) + // Check for type override in tags + if prop.Type != nil { + return jsonName, prop + } + fieldType := field.Type + + // override type of pointer to list-likes + if fieldType.Elem().Kind() == reflect.Slice || fieldType.Elem().Kind() == reflect.Array { + var pType = "array" + prop.Type = &pType + isPrimitive := b.isPrimitiveType(fieldType.Elem().Elem().Name()) + elemName := b.getElementTypeName(modelName, jsonName, fieldType.Elem().Elem()) + if isPrimitive { + primName := b.jsonSchemaType(elemName) + prop.Items = &Item{Ref: &primName} + } else { + prop.Items = &Item{Ref: &elemName} + } + if !isPrimitive { + // add|overwrite model for element type + b.addModel(fieldType.Elem().Elem(), elemName) + } + } else { + // non-array, pointer type + fieldTypeName := b.keyFrom(fieldType.Elem()) + var pType = b.jsonSchemaType(fieldTypeName) // no star, include pkg path + if b.isPrimitiveType(fieldTypeName) { + prop.Type = &pType + prop.Format = b.jsonSchemaFormat(fieldTypeName) + return jsonName, prop + } + prop.Ref = &pType + elemName := "" + if fieldType.Elem().Name() == "" { + elemName = modelName + "." + jsonName + prop.Ref = &elemName + } + b.addModel(fieldType.Elem(), elemName) + } + return jsonName, prop +} + +func (b modelBuilder) getElementTypeName(modelName, jsonName string, t reflect.Type) string { + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + if t.Name() == "" { + return modelName + "." + jsonName + } + return b.keyFrom(t) +} + +func (b modelBuilder) keyFrom(st reflect.Type) string { + key := st.String() + if b.Config != nil && b.Config.ModelTypeNameHandler != nil { + if name, ok := b.Config.ModelTypeNameHandler(st); ok { + key = name + } + } + if len(st.Name()) == 0 { // unnamed type + // Swagger UI has special meaning for [ + key = strings.Replace(key, "[]", "||", -1) + } + return key +} + +// see also https://golang.org/ref/spec#Numeric_types +func (b modelBuilder) isPrimitiveType(modelName string) bool { + if len(modelName) == 0 { + return false + } + return strings.Contains("uint uint8 uint16 uint32 uint64 int int8 int16 int32 int64 float32 float64 bool string byte rune time.Time", modelName) +} + +// jsonNameOfField returns the name of the field as it should appear in JSON format +// An empty string indicates that this field is not part of the JSON representation +func (b modelBuilder) jsonNameOfField(field reflect.StructField) string { + if jsonTag := field.Tag.Get("json"); jsonTag != "" { + s := strings.Split(jsonTag, ",") + if s[0] == "-" { + // empty name signals skip property + return "" + } else if s[0] != "" { + return s[0] + } + } + return field.Name +} + +// see also http://json-schema.org/latest/json-schema-core.html#anchor8 +func (b modelBuilder) jsonSchemaType(modelName string) string { + schemaMap := map[string]string{ + "uint": "integer", + "uint8": "integer", + "uint16": "integer", + "uint32": "integer", + "uint64": "integer", + + "int": "integer", + "int8": "integer", + "int16": "integer", + "int32": "integer", + "int64": "integer", + + "byte": "integer", + "float64": "number", + "float32": "number", + "bool": "boolean", + "time.Time": "string", + } + mapped, ok := schemaMap[modelName] + if !ok { + return modelName // use as is (custom or struct) + } + return mapped +} + +func (b modelBuilder) jsonSchemaFormat(modelName string) string { + if b.Config != nil && b.Config.SchemaFormatHandler != nil { + if mapped := b.Config.SchemaFormatHandler(modelName); mapped != "" { + return mapped + } + } + schemaMap := map[string]string{ + "int": "int32", + "int32": "int32", + "int64": "int64", + "byte": "byte", + "uint": "integer", + "uint8": "byte", + "float64": "double", + "float32": "float", + "time.Time": "date-time", + "*time.Time": "date-time", + } + mapped, ok := schemaMap[modelName] + if !ok { + return "" // no format + } + return mapped +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_builder_test.go b/vendor/github.com/emicklei/go-restful-swagger12/model_builder_test.go new file mode 100644 index 000000000..a2d2f126f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_builder_test.go @@ -0,0 +1,1283 @@ +package swagger + +import ( + "encoding/xml" + "net" + "reflect" + "testing" + "time" +) + +type YesNo bool + +func (y YesNo) MarshalJSON() ([]byte, error) { + if y { + return []byte("yes"), nil + } + return []byte("no"), nil +} + +// clear && go test -v -test.run TestRef_Issue190 ...swagger +func TestRef_Issue190(t *testing.T) { + type User struct { + items []string + } + testJsonFromStruct(t, User{}, `{ + "swagger.User": { + "id": "swagger.User", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }`) +} + +func TestWithoutAdditionalFormat(t *testing.T) { + type mytime struct { + time.Time + } + type usemytime struct { + t mytime + } + testJsonFromStruct(t, usemytime{}, `{ + "swagger.usemytime": { + "id": "swagger.usemytime", + "required": [ + "t" + ], + "properties": { + "t": { + "type": "string" + } + } + } + }`) +} + +func TestWithAdditionalFormat(t *testing.T) { + type mytime struct { + time.Time + } + type usemytime struct { + t mytime + } + testJsonFromStructWithConfig(t, usemytime{}, `{ + "swagger.usemytime": { + "id": "swagger.usemytime", + "required": [ + "t" + ], + "properties": { + "t": { + "type": "string", + "format": "date-time" + } + } + } + }`, &Config{ + SchemaFormatHandler: func(typeName string) string { + switch typeName { + case "swagger.mytime": + return "date-time" + } + return "" + }, + }) +} + +// clear && go test -v -test.run TestCustomMarshaller_Issue96 ...swagger +func TestCustomMarshaller_Issue96(t *testing.T) { + type Vote struct { + What YesNo + } + testJsonFromStruct(t, Vote{}, `{ + "swagger.Vote": { + "id": "swagger.Vote", + "required": [ + "What" + ], + "properties": { + "What": { + "type": "string" + } + } + } + }`) +} + +// clear && go test -v -test.run TestPrimitiveTypes ...swagger +func TestPrimitiveTypes(t *testing.T) { + type Prims struct { + f float64 + t time.Time + } + testJsonFromStruct(t, Prims{}, `{ + "swagger.Prims": { + "id": "swagger.Prims", + "required": [ + "f", + "t" + ], + "properties": { + "f": { + "type": "number", + "format": "double" + }, + "t": { + "type": "string", + "format": "date-time" + } + } + } + }`) +} + +// clear && go test -v -test.run TestPrimitivePtrTypes ...swagger +func TestPrimitivePtrTypes(t *testing.T) { + type Prims struct { + f *float64 + t *time.Time + b *bool + s *string + i *int + } + testJsonFromStruct(t, Prims{}, `{ + "swagger.Prims": { + "id": "swagger.Prims", + "required": [ + "f", + "t", + "b", + "s", + "i" + ], + "properties": { + "b": { + "type": "boolean" + }, + "f": { + "type": "number", + "format": "double" + }, + "i": { + "type": "integer", + "format": "int32" + }, + "s": { + "type": "string" + }, + "t": { + "type": "string", + "format": "date-time" + } + } + } + }`) +} + +// clear && go test -v -test.run TestS1 ...swagger +func TestS1(t *testing.T) { + type S1 struct { + Id string + } + testJsonFromStruct(t, S1{}, `{ + "swagger.S1": { + "id": "swagger.S1", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "string" + } + } + } + }`) +} + +// clear && go test -v -test.run TestS2 ...swagger +func TestS2(t *testing.T) { + type S2 struct { + Ids []string + } + testJsonFromStruct(t, S2{}, `{ + "swagger.S2": { + "id": "swagger.S2", + "required": [ + "Ids" + ], + "properties": { + "Ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }`) +} + +// clear && go test -v -test.run TestS3 ...swagger +func TestS3(t *testing.T) { + type NestedS3 struct { + Id string + } + type S3 struct { + Nested NestedS3 + } + testJsonFromStruct(t, S3{}, `{ + "swagger.NestedS3": { + "id": "swagger.NestedS3", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "string" + } + } + }, + "swagger.S3": { + "id": "swagger.S3", + "required": [ + "Nested" + ], + "properties": { + "Nested": { + "$ref": "swagger.NestedS3" + } + } + } + }`) +} + +type sample struct { + id string `swagger:"required"` // TODO + items []item + rootItem item `json:"root" description:"root desc"` +} + +type item struct { + itemName string `json:"name"` +} + +// clear && go test -v -test.run TestSampleToModelAsJson ...swagger +func TestSampleToModelAsJson(t *testing.T) { + testJsonFromStruct(t, sample{items: []item{}}, `{ + "swagger.item": { + "id": "swagger.item", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "swagger.sample": { + "id": "swagger.sample", + "required": [ + "id", + "items", + "root" + ], + "properties": { + "id": { + "type": "string" + }, + "items": { + "type": "array", + "items": { + "$ref": "swagger.item" + } + }, + "root": { + "$ref": "swagger.item", + "description": "root desc" + } + } + } + }`) +} + +func TestJsonTags(t *testing.T) { + type X struct { + A string + B string `json:"-"` + C int `json:",string"` + D int `json:","` + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "A", + "C", + "D" + ], + "properties": { + "A": { + "type": "string" + }, + "C": { + "type": "string" + }, + "D": { + "type": "integer", + "format": "int32" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +func TestJsonTagOmitempty(t *testing.T) { + type X struct { + A int `json:",omitempty"` + B int `json:"C,omitempty"` + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "properties": { + "A": { + "type": "integer", + "format": "int32" + }, + "C": { + "type": "integer", + "format": "int32" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +func TestJsonTagName(t *testing.T) { + type X struct { + A string `json:"B"` + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "B" + ], + "properties": { + "B": { + "type": "string" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +func TestAnonymousStruct(t *testing.T) { + type X struct { + A struct { + B int + } + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "A" + ], + "properties": { + "A": { + "$ref": "swagger.X.A" + } + } + }, + "swagger.X.A": { + "id": "swagger.X.A", + "required": [ + "B" + ], + "properties": { + "B": { + "type": "integer", + "format": "int32" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +func TestAnonymousPtrStruct(t *testing.T) { + type X struct { + A *struct { + B int + } + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "A" + ], + "properties": { + "A": { + "$ref": "swagger.X.A" + } + } + }, + "swagger.X.A": { + "id": "swagger.X.A", + "required": [ + "B" + ], + "properties": { + "B": { + "type": "integer", + "format": "int32" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +func TestAnonymousArrayStruct(t *testing.T) { + type X struct { + A []struct { + B int + } + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "A" + ], + "properties": { + "A": { + "type": "array", + "items": { + "$ref": "swagger.X.A" + } + } + } + }, + "swagger.X.A": { + "id": "swagger.X.A", + "required": [ + "B" + ], + "properties": { + "B": { + "type": "integer", + "format": "int32" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +func TestAnonymousPtrArrayStruct(t *testing.T) { + type X struct { + A *[]struct { + B int + } + } + + expected := `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "A" + ], + "properties": { + "A": { + "type": "array", + "items": { + "$ref": "swagger.X.A" + } + } + } + }, + "swagger.X.A": { + "id": "swagger.X.A", + "required": [ + "B" + ], + "properties": { + "B": { + "type": "integer", + "format": "int32" + } + } + } + }` + + testJsonFromStruct(t, X{}, expected) +} + +// go test -v -test.run TestEmbeddedStruct_Issue98 ...swagger +func TestEmbeddedStruct_Issue98(t *testing.T) { + type Y struct { + A int + } + type X struct { + Y + } + testJsonFromStruct(t, X{}, `{ + "swagger.X": { + "id": "swagger.X", + "required": [ + "A" + ], + "properties": { + "A": { + "type": "integer", + "format": "int32" + } + } + } + }`) +} + +type Dataset struct { + Names []string +} + +// clear && go test -v -test.run TestIssue85 ...swagger +func TestIssue85(t *testing.T) { + anon := struct{ Datasets []Dataset }{} + testJsonFromStruct(t, anon, `{ + "struct { Datasets ||swagger.Dataset }": { + "id": "struct { Datasets ||swagger.Dataset }", + "required": [ + "Datasets" + ], + "properties": { + "Datasets": { + "type": "array", + "items": { + "$ref": "swagger.Dataset" + } + } + } + }, + "swagger.Dataset": { + "id": "swagger.Dataset", + "required": [ + "Names" + ], + "properties": { + "Names": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }`) +} + +type File struct { + History []File + HistoryPtrs []*File +} + +// go test -v -test.run TestRecursiveStructure ...swagger +func TestRecursiveStructure(t *testing.T) { + testJsonFromStruct(t, File{}, `{ + "swagger.File": { + "id": "swagger.File", + "required": [ + "History", + "HistoryPtrs" + ], + "properties": { + "History": { + "type": "array", + "items": { + "$ref": "swagger.File" + } + }, + "HistoryPtrs": { + "type": "array", + "items": { + "$ref": "swagger.File" + } + } + } + } + }`) +} + +type A1 struct { + B struct { + Id int + Comment string `json:"comment,omitempty"` + } +} + +// go test -v -test.run TestEmbeddedStructA1 ...swagger +func TestEmbeddedStructA1(t *testing.T) { + testJsonFromStruct(t, A1{}, `{ + "swagger.A1": { + "id": "swagger.A1", + "required": [ + "B" + ], + "properties": { + "B": { + "$ref": "swagger.A1.B" + } + } + }, + "swagger.A1.B": { + "id": "swagger.A1.B", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "integer", + "format": "int32" + }, + "comment": { + "type": "string" + } + } + } + }`) +} + +type A2 struct { + C +} +type C struct { + Id int `json:"B"` + Comment string `json:"comment,omitempty"` + Secure bool `json:"secure"` +} + +// go test -v -test.run TestEmbeddedStructA2 ...swagger +func TestEmbeddedStructA2(t *testing.T) { + testJsonFromStruct(t, A2{}, `{ + "swagger.A2": { + "id": "swagger.A2", + "required": [ + "B", + "secure" + ], + "properties": { + "B": { + "type": "integer", + "format": "int32" + }, + "comment": { + "type": "string" + }, + "secure": { + "type": "boolean" + } + } + } + }`) +} + +type A3 struct { + B D +} + +type D struct { + Id int +} + +// clear && go test -v -test.run TestStructA3 ...swagger +func TestStructA3(t *testing.T) { + testJsonFromStruct(t, A3{}, `{ + "swagger.A3": { + "id": "swagger.A3", + "required": [ + "B" + ], + "properties": { + "B": { + "$ref": "swagger.D" + } + } + }, + "swagger.D": { + "id": "swagger.D", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "integer", + "format": "int32" + } + } + } + }`) +} + +type A4 struct { + D "json:,inline" +} + +// clear && go test -v -test.run TestStructA4 ...swagger +func TestEmbeddedStructA4(t *testing.T) { + testJsonFromStruct(t, A4{}, `{ + "swagger.A4": { + "id": "swagger.A4", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "integer", + "format": "int32" + } + } + } + }`) +} + +type A5 struct { + D `json:"d"` +} + +// clear && go test -v -test.run TestStructA5 ...swagger +func TestEmbeddedStructA5(t *testing.T) { + testJsonFromStruct(t, A5{}, `{ + "swagger.A5": { + "id": "swagger.A5", + "required": [ + "d" + ], + "properties": { + "d": { + "$ref": "swagger.D" + } + } + }, + "swagger.D": { + "id": "swagger.D", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "integer", + "format": "int32" + } + } + } + }`) +} + +type D2 struct { + id int + D []D +} + +type A6 struct { + D2 "json:,inline" +} + +// clear && go test -v -test.run TestStructA4 ...swagger +func TestEmbeddedStructA6(t *testing.T) { + testJsonFromStruct(t, A6{}, `{ + "swagger.A6": { + "id": "swagger.A6", + "required": [ + "id", + "D" + ], + "properties": { + "D": { + "type": "array", + "items": { + "$ref": "swagger.D" + } + }, + "id": { + "type": "integer", + "format": "int32" + } + } + }, + "swagger.D": { + "id": "swagger.D", + "required": [ + "Id" + ], + "properties": { + "Id": { + "type": "integer", + "format": "int32" + } + } + } + }`) +} + +type ObjectId []byte + +type Region struct { + Id ObjectId `bson:"_id" json:"id"` + Name string `bson:"name" json:"name"` + Type string `bson:"type" json:"type"` +} + +// clear && go test -v -test.run TestRegion_Issue113 ...swagger +func TestRegion_Issue113(t *testing.T) { + testJsonFromStruct(t, []Region{}, `{ + "||swagger.Region": { + "id": "||swagger.Region", + "properties": {} + }, + "swagger.Region": { + "id": "swagger.Region", + "required": [ + "id", + "name", + "type" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + }`) +} + +// clear && go test -v -test.run TestIssue158 ...swagger +func TestIssue158(t *testing.T) { + type Address struct { + Country string `json:"country,omitempty"` + } + + type Customer struct { + Name string `json:"name"` + Address Address `json:"address"` + } + expected := `{ + "swagger.Address": { + "id": "swagger.Address", + "properties": { + "country": { + "type": "string" + } + } + }, + "swagger.Customer": { + "id": "swagger.Customer", + "required": [ + "name", + "address" + ], + "properties": { + "address": { + "$ref": "swagger.Address" + }, + "name": { + "type": "string" + } + } + } + }` + testJsonFromStruct(t, Customer{}, expected) +} + +func TestPointers(t *testing.T) { + type Vote struct { + What YesNo + } + testJsonFromStruct(t, &Vote{}, `{ + "swagger.Vote": { + "id": "swagger.Vote", + "required": [ + "What" + ], + "properties": { + "What": { + "type": "string" + } + } + } + }`) +} + +func TestSlices(t *testing.T) { + type Address struct { + Country string `json:"country,omitempty"` + } + expected := `{ + "swagger.Address": { + "id": "swagger.Address", + "properties": { + "country": { + "type": "string" + } + } + }, + "swagger.Customer": { + "id": "swagger.Customer", + "required": [ + "name", + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "items": { + "$ref": "swagger.Address" + } + }, + "name": { + "type": "string" + } + } + } + }` + // both slices (with pointer value and with type value) should have equal swagger representation + { + type Customer struct { + Name string `json:"name"` + Addresses []Address `json:"addresses"` + } + testJsonFromStruct(t, Customer{}, expected) + } + { + type Customer struct { + Name string `json:"name"` + Addresses []*Address `json:"addresses"` + } + testJsonFromStruct(t, Customer{}, expected) + } + +} + +type Name struct { + Value string +} + +func (n Name) PostBuildModel(m *Model) *Model { + m.Description = "titles must be upcase" + return m +} + +type TOC struct { + Titles []Name +} + +type Discography struct { + Title Name + TOC +} + +// clear && go test -v -test.run TestEmbeddedStructPull204 ...swagger +func TestEmbeddedStructPull204(t *testing.T) { + b := Discography{} + testJsonFromStruct(t, b, ` +{ + "swagger.Discography": { + "id": "swagger.Discography", + "required": [ + "Title", + "Titles" + ], + "properties": { + "Title": { + "$ref": "swagger.Name" + }, + "Titles": { + "type": "array", + "items": { + "$ref": "swagger.Name" + } + } + } + }, + "swagger.Name": { + "id": "swagger.Name", + "required": [ + "Value" + ], + "properties": { + "Value": { + "type": "string" + } + } + } + } +`) +} + +type AddressWithMethod struct { + Country string `json:"country,omitempty"` + PostCode int `json:"postcode,omitempty"` +} + +func (AddressWithMethod) SwaggerDoc() map[string]string { + return map[string]string{ + "": "Address doc", + "country": "Country doc", + "postcode": "PostCode doc", + } +} + +func TestDocInMethodSwaggerDoc(t *testing.T) { + expected := `{ + "swagger.AddressWithMethod": { + "id": "swagger.AddressWithMethod", + "description": "Address doc", + "properties": { + "country": { + "type": "string", + "description": "Country doc" + }, + "postcode": { + "type": "integer", + "format": "int32", + "description": "PostCode doc" + } + } + } + }` + testJsonFromStruct(t, AddressWithMethod{}, expected) +} + +type RefDesc struct { + f1 *int64 `description:"desc"` +} + +func TestPtrDescription(t *testing.T) { + b := RefDesc{} + expected := `{ + "swagger.RefDesc": { + "id": "swagger.RefDesc", + "required": [ + "f1" + ], + "properties": { + "f1": { + "type": "integer", + "format": "int64", + "description": "desc" + } + } + } + }` + testJsonFromStruct(t, b, expected) +} + +type A struct { + B `json:",inline"` + C1 `json:"metadata,omitempty"` +} + +type B struct { + SB string +} + +type C1 struct { + SC string +} + +func (A) SwaggerDoc() map[string]string { + return map[string]string{ + "": "A struct", + "B": "B field", // We should not get anything from this + "metadata": "C1 field", + } +} + +func (B) SwaggerDoc() map[string]string { + return map[string]string{ + "": "B struct", + "SB": "SB field", + } +} + +func (C1) SwaggerDoc() map[string]string { + return map[string]string{ + "": "C1 struct", + "SC": "SC field", + } +} + +func TestNestedStructDescription(t *testing.T) { + expected := ` +{ + "swagger.A": { + "id": "swagger.A", + "description": "A struct", + "required": [ + "SB" + ], + "properties": { + "SB": { + "type": "string", + "description": "SB field" + }, + "metadata": { + "$ref": "swagger.C1", + "description": "C1 field" + } + } + }, + "swagger.C1": { + "id": "swagger.C1", + "description": "C1 struct", + "required": [ + "SC" + ], + "properties": { + "SC": { + "type": "string", + "description": "SC field" + } + } + } + } +` + testJsonFromStruct(t, A{}, expected) +} + +// This tests a primitive with type overrides in the struct tags +type FakeInt int +type E struct { + Id FakeInt `type:"integer"` + IP net.IP `type:"string"` +} + +func TestOverridenTypeTagE1(t *testing.T) { + expected := ` +{ + "swagger.E": { + "id": "swagger.E", + "required": [ + "Id", + "IP" + ], + "properties": { + "Id": { + "type": "integer" + }, + "IP": { + "type": "string" + } + } + } + } +` + testJsonFromStruct(t, E{}, expected) +} + +type XmlNamed struct { + XMLName xml.Name `xml:"user"` + Id string `json:"id" xml:"id"` + Name string `json:"name" xml:"name"` +} + +func TestXmlNameStructs(t *testing.T) { + expected := ` +{ + "swagger.XmlNamed": { + "id": "swagger.XmlNamed", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + } + } + } +` + testJsonFromStruct(t, XmlNamed{}, expected) +} + +func TestNameCustomization(t *testing.T) { + expected := ` +{ + "swagger.A": { + "id": "swagger.A", + "description": "A struct", + "required": [ + "SB" + ], + "properties": { + "SB": { + "type": "string", + "description": "SB field" + }, + "metadata": { + "$ref": "new.swagger.SpecialC1", + "description": "C1 field" + } + } + }, + "new.swagger.SpecialC1": { + "id": "new.swagger.SpecialC1", + "description": "C1 struct", + "required": [ + "SC" + ], + "properties": { + "SC": { + "type": "string", + "description": "SC field" + } + } + } + }` + + testJsonFromStructWithConfig(t, A{}, expected, &Config{ + ModelTypeNameHandler: func(t reflect.Type) (string, bool) { + if t == reflect.TypeOf(C1{}) { + return "new.swagger.SpecialC1", true + } + return "", false + }, + }) +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_list.go b/vendor/github.com/emicklei/go-restful-swagger12/model_list.go new file mode 100644 index 000000000..9bb6cb678 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_list.go @@ -0,0 +1,86 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "encoding/json" +) + +// NamedModel associates a name with a Model (not using its Id) +type NamedModel struct { + Name string + Model Model +} + +// ModelList encapsulates a list of NamedModel (association) +type ModelList struct { + List []NamedModel +} + +// Put adds or replaces a Model by its name +func (l *ModelList) Put(name string, model Model) { + for i, each := range l.List { + if each.Name == name { + // replace + l.List[i] = NamedModel{name, model} + return + } + } + // add + l.List = append(l.List, NamedModel{name, model}) +} + +// At returns a Model by its name, ok is false if absent +func (l *ModelList) At(name string) (m Model, ok bool) { + for _, each := range l.List { + if each.Name == name { + return each.Model, true + } + } + return m, false +} + +// Do enumerates all the models, each with its assigned name +func (l *ModelList) Do(block func(name string, value Model)) { + for _, each := range l.List { + block(each.Name, each.Model) + } +} + +// MarshalJSON writes the ModelList as if it was a map[string]Model +func (l ModelList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + buf.WriteString("{\n") + for i, each := range l.List { + buf.WriteString("\"") + buf.WriteString(each.Name) + buf.WriteString("\": ") + encoder.Encode(each.Model) + if i < len(l.List)-1 { + buf.WriteString(",\n") + } + } + buf.WriteString("}") + return buf.Bytes(), nil +} + +// UnmarshalJSON reads back a ModelList. This is an expensive operation. +func (l *ModelList) UnmarshalJSON(data []byte) error { + raw := map[string]interface{}{} + json.NewDecoder(bytes.NewReader(data)).Decode(&raw) + for k, v := range raw { + // produces JSON bytes for each value + data, err := json.Marshal(v) + if err != nil { + return err + } + var m Model + json.NewDecoder(bytes.NewReader(data)).Decode(&m) + l.Put(k, m) + } + return nil +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_list_test.go b/vendor/github.com/emicklei/go-restful-swagger12/model_list_test.go new file mode 100644 index 000000000..9a9ab919b --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_list_test.go @@ -0,0 +1,48 @@ +package swagger + +import ( + "encoding/json" + "testing" +) + +func TestModelList(t *testing.T) { + m := Model{} + m.Id = "m" + l := ModelList{} + l.Put("m", m) + k, ok := l.At("m") + if !ok { + t.Error("want model back") + } + if got, want := k.Id, "m"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestModelList_Marshal(t *testing.T) { + l := ModelList{} + m := Model{Id: "myid"} + l.Put("myid", m) + data, err := json.Marshal(l) + if err != nil { + t.Error(err) + } + if got, want := string(data), `{"myid":{"id":"myid","properties":{}}}`; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestModelList_Unmarshal(t *testing.T) { + data := `{"myid":{"id":"myid","properties":{}}}` + l := ModelList{} + if err := json.Unmarshal([]byte(data), &l); err != nil { + t.Error(err) + } + m, ok := l.At("myid") + if !ok { + t.Error("expected myid") + } + if got, want := m.Id, "myid"; got != want { + t.Errorf("got %v want %v", got, want) + } +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_property_ext.go b/vendor/github.com/emicklei/go-restful-swagger12/model_property_ext.go new file mode 100644 index 000000000..a433b6b70 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_property_ext.go @@ -0,0 +1,81 @@ +package swagger + +import ( + "reflect" + "strings" +) + +func (prop *ModelProperty) setDescription(field reflect.StructField) { + if tag := field.Tag.Get("description"); tag != "" { + prop.Description = tag + } +} + +func (prop *ModelProperty) setDefaultValue(field reflect.StructField) { + if tag := field.Tag.Get("default"); tag != "" { + prop.DefaultValue = Special(tag) + } +} + +func (prop *ModelProperty) setEnumValues(field reflect.StructField) { + // We use | to separate the enum values. This value is chosen + // since its unlikely to be useful in actual enumeration values. + if tag := field.Tag.Get("enum"); tag != "" { + prop.Enum = strings.Split(tag, "|") + } +} + +func (prop *ModelProperty) setMaximum(field reflect.StructField) { + if tag := field.Tag.Get("maximum"); tag != "" { + prop.Maximum = tag + } +} + +func (prop *ModelProperty) setType(field reflect.StructField) { + if tag := field.Tag.Get("type"); tag != "" { + // Check if the first two characters of the type tag are + // intended to emulate slice/array behaviour. + // + // If type is intended to be a slice/array then add the + // overriden type to the array item instead of the main property + if len(tag) > 2 && tag[0:2] == "[]" { + pType := "array" + prop.Type = &pType + prop.Items = new(Item) + + iType := tag[2:] + prop.Items.Type = &iType + return + } + + prop.Type = &tag + } +} + +func (prop *ModelProperty) setMinimum(field reflect.StructField) { + if tag := field.Tag.Get("minimum"); tag != "" { + prop.Minimum = tag + } +} + +func (prop *ModelProperty) setUniqueItems(field reflect.StructField) { + tag := field.Tag.Get("unique") + switch tag { + case "true": + v := true + prop.UniqueItems = &v + case "false": + v := false + prop.UniqueItems = &v + } +} + +func (prop *ModelProperty) setPropertyMetadata(field reflect.StructField) { + prop.setDescription(field) + prop.setEnumValues(field) + prop.setMinimum(field) + prop.setMaximum(field) + prop.setUniqueItems(field) + prop.setDefaultValue(field) + prop.setType(field) +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_property_ext_test.go b/vendor/github.com/emicklei/go-restful-swagger12/model_property_ext_test.go new file mode 100644 index 000000000..1123ed992 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_property_ext_test.go @@ -0,0 +1,70 @@ +package swagger + +import ( + "net" + "testing" +) + +// clear && go test -v -test.run TestThatExtraTagsAreReadIntoModel ...swagger +func TestThatExtraTagsAreReadIntoModel(t *testing.T) { + type fakeint int + type fakearray string + type Anything struct { + Name string `description:"name" modelDescription:"a test"` + Size int `minimum:"0" maximum:"10"` + Stati string `enum:"off|on" default:"on" modelDescription:"more description"` + ID string `unique:"true"` + FakeInt fakeint `type:"integer"` + FakeArray fakearray `type:"[]string"` + IP net.IP `type:"string"` + Password string + } + m := modelsFromStruct(Anything{}) + props, _ := m.At("swagger.Anything") + p1, _ := props.Properties.At("Name") + if got, want := p1.Description, "name"; got != want { + t.Errorf("got %v want %v", got, want) + } + p2, _ := props.Properties.At("Size") + if got, want := p2.Minimum, "0"; got != want { + t.Errorf("got %v want %v", got, want) + } + if got, want := p2.Maximum, "10"; got != want { + t.Errorf("got %v want %v", got, want) + } + p3, _ := props.Properties.At("Stati") + if got, want := p3.Enum[0], "off"; got != want { + t.Errorf("got %v want %v", got, want) + } + if got, want := p3.Enum[1], "on"; got != want { + t.Errorf("got %v want %v", got, want) + } + p4, _ := props.Properties.At("ID") + if got, want := *p4.UniqueItems, true; got != want { + t.Errorf("got %v want %v", got, want) + } + p5, _ := props.Properties.At("Password") + if got, want := *p5.Type, "string"; got != want { + t.Errorf("got %v want %v", got, want) + } + p6, _ := props.Properties.At("FakeInt") + if got, want := *p6.Type, "integer"; got != want { + t.Errorf("got %v want %v", got, want) + } + p7, _ := props.Properties.At("FakeArray") + if got, want := *p7.Type, "array"; got != want { + t.Errorf("got %v want %v", got, want) + } + p7p, _ := props.Properties.At("FakeArray") + if got, want := *p7p.Items.Type, "string"; got != want { + t.Errorf("got %v want %v", got, want) + } + p8, _ := props.Properties.At("IP") + if got, want := *p8.Type, "string"; got != want { + t.Errorf("got %v want %v", got, want) + } + + if got, want := props.Description, "a test\nmore description"; got != want { + t.Errorf("got %v want %v", got, want) + } +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_property_list.go b/vendor/github.com/emicklei/go-restful-swagger12/model_property_list.go new file mode 100644 index 000000000..3babb1944 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_property_list.go @@ -0,0 +1,87 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "encoding/json" +) + +// NamedModelProperty associates a name to a ModelProperty +type NamedModelProperty struct { + Name string + Property ModelProperty +} + +// ModelPropertyList encapsulates a list of NamedModelProperty (association) +type ModelPropertyList struct { + List []NamedModelProperty +} + +// At returns the ModelPropety by its name unless absent, then ok is false +func (l *ModelPropertyList) At(name string) (p ModelProperty, ok bool) { + for _, each := range l.List { + if each.Name == name { + return each.Property, true + } + } + return p, false +} + +// Put adds or replaces a ModelProperty with this name +func (l *ModelPropertyList) Put(name string, prop ModelProperty) { + // maybe replace existing + for i, each := range l.List { + if each.Name == name { + // replace + l.List[i] = NamedModelProperty{Name: name, Property: prop} + return + } + } + // add + l.List = append(l.List, NamedModelProperty{Name: name, Property: prop}) +} + +// Do enumerates all the properties, each with its assigned name +func (l *ModelPropertyList) Do(block func(name string, value ModelProperty)) { + for _, each := range l.List { + block(each.Name, each.Property) + } +} + +// MarshalJSON writes the ModelPropertyList as if it was a map[string]ModelProperty +func (l ModelPropertyList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + buf.WriteString("{\n") + for i, each := range l.List { + buf.WriteString("\"") + buf.WriteString(each.Name) + buf.WriteString("\": ") + encoder.Encode(each.Property) + if i < len(l.List)-1 { + buf.WriteString(",\n") + } + } + buf.WriteString("}") + return buf.Bytes(), nil +} + +// UnmarshalJSON reads back a ModelPropertyList. This is an expensive operation. +func (l *ModelPropertyList) UnmarshalJSON(data []byte) error { + raw := map[string]interface{}{} + json.NewDecoder(bytes.NewReader(data)).Decode(&raw) + for k, v := range raw { + // produces JSON bytes for each value + data, err := json.Marshal(v) + if err != nil { + return err + } + var m ModelProperty + json.NewDecoder(bytes.NewReader(data)).Decode(&m) + l.Put(k, m) + } + return nil +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/model_property_list_test.go b/vendor/github.com/emicklei/go-restful-swagger12/model_property_list_test.go new file mode 100644 index 000000000..2833ad8fd --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/model_property_list_test.go @@ -0,0 +1,47 @@ +package swagger + +import ( + "encoding/json" + "testing" +) + +func TestModelPropertyList(t *testing.T) { + l := ModelPropertyList{} + p := ModelProperty{Description: "d"} + l.Put("p", p) + q, ok := l.At("p") + if !ok { + t.Error("expected p") + } + if got, want := q.Description, "d"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestModelPropertyList_Marshal(t *testing.T) { + l := ModelPropertyList{} + p := ModelProperty{Description: "d"} + l.Put("p", p) + data, err := json.Marshal(l) + if err != nil { + t.Error(err) + } + if got, want := string(data), `{"p":{"description":"d"}}`; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestModelPropertyList_Unmarshal(t *testing.T) { + data := `{"p":{"description":"d"}}` + l := ModelPropertyList{} + if err := json.Unmarshal([]byte(data), &l); err != nil { + t.Error(err) + } + m, ok := l.At("p") + if !ok { + t.Error("expected p") + } + if got, want := m.Description, "d"; got != want { + t.Errorf("got %v want %v", got, want) + } +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map.go b/vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map.go new file mode 100644 index 000000000..b33ccfbeb --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map.go @@ -0,0 +1,36 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import "github.com/emicklei/go-restful" + +type orderedRouteMap struct { + elements map[string][]restful.Route + keys []string +} + +func newOrderedRouteMap() *orderedRouteMap { + return &orderedRouteMap{ + elements: map[string][]restful.Route{}, + keys: []string{}, + } +} + +func (o *orderedRouteMap) Add(key string, route restful.Route) { + routes, ok := o.elements[key] + if ok { + routes = append(routes, route) + o.elements[key] = routes + return + } + o.elements[key] = []restful.Route{route} + o.keys = append(o.keys, key) +} + +func (o *orderedRouteMap) Do(block func(key string, routes []restful.Route)) { + for _, k := range o.keys { + block(k, o.elements[k]) + } +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map_test.go b/vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map_test.go new file mode 100644 index 000000000..964e7da05 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/ordered_route_map_test.go @@ -0,0 +1,29 @@ +package swagger + +import ( + "testing" + + "github.com/emicklei/go-restful" +) + +// go test -v -test.run TestOrderedRouteMap ...swagger +func TestOrderedRouteMap(t *testing.T) { + m := newOrderedRouteMap() + r1 := restful.Route{Path: "/r1"} + r2 := restful.Route{Path: "/r2"} + m.Add("a", r1) + m.Add("b", r2) + m.Add("b", r1) + m.Add("d", r2) + m.Add("c", r2) + order := "" + m.Do(func(k string, routes []restful.Route) { + order += k + if len(routes) == 0 { + t.Fail() + } + }) + if order != "abdc" { + t.Fail() + } +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/postbuild_model_test.go b/vendor/github.com/emicklei/go-restful-swagger12/postbuild_model_test.go new file mode 100644 index 000000000..3e20d2f5b --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/postbuild_model_test.go @@ -0,0 +1,42 @@ +package swagger + +import "testing" + +type Boat struct { + Length int `json:"-"` // on default, this makes the fields not required + Weight int `json:"-"` +} + +// PostBuildModel is from swagger.ModelBuildable +func (b Boat) PostBuildModel(m *Model) *Model { + // override required + m.Required = []string{"Length", "Weight"} + + // add model property (just to test is can be added; is this a real usecase?) + extraType := "string" + m.Properties.Put("extra", ModelProperty{ + Description: "extra description", + DataTypeFields: DataTypeFields{ + Type: &extraType, + }, + }) + return m +} + +func TestCustomPostModelBuilde(t *testing.T) { + testJsonFromStruct(t, Boat{}, `{ + "swagger.Boat": { + "id": "swagger.Boat", + "required": [ + "Length", + "Weight" + ], + "properties": { + "extra": { + "type": "string", + "description": "extra description" + } + } + } +}`) +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/swagger.go b/vendor/github.com/emicklei/go-restful-swagger12/swagger.go new file mode 100644 index 000000000..9c40833e7 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/swagger.go @@ -0,0 +1,185 @@ +// Package swagger implements the structures of the Swagger +// https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md +package swagger + +const swaggerVersion = "1.2" + +// 4.3.3 Data Type Fields +type DataTypeFields struct { + Type *string `json:"type,omitempty"` // if Ref not used + Ref *string `json:"$ref,omitempty"` // if Type not used + Format string `json:"format,omitempty"` + DefaultValue Special `json:"defaultValue,omitempty"` + Enum []string `json:"enum,omitempty"` + Minimum string `json:"minimum,omitempty"` + Maximum string `json:"maximum,omitempty"` + Items *Item `json:"items,omitempty"` + UniqueItems *bool `json:"uniqueItems,omitempty"` +} + +type Special string + +// 4.3.4 Items Object +type Item struct { + Type *string `json:"type,omitempty"` + Ref *string `json:"$ref,omitempty"` + Format string `json:"format,omitempty"` +} + +// 5.1 Resource Listing +type ResourceListing struct { + SwaggerVersion string `json:"swaggerVersion"` // e.g 1.2 + Apis []Resource `json:"apis"` + ApiVersion string `json:"apiVersion"` + Info Info `json:"info"` + Authorizations []Authorization `json:"authorizations,omitempty"` +} + +// 5.1.2 Resource Object +type Resource struct { + Path string `json:"path"` // relative or absolute, must start with / + Description string `json:"description"` +} + +// 5.1.3 Info Object +type Info struct { + Title string `json:"title"` + Description string `json:"description"` + TermsOfServiceUrl string `json:"termsOfServiceUrl,omitempty"` + Contact string `json:"contact,omitempty"` + License string `json:"license,omitempty"` + LicenseUrl string `json:"licenseUrl,omitempty"` +} + +// 5.1.5 +type Authorization struct { + Type string `json:"type"` + PassAs string `json:"passAs"` + Keyname string `json:"keyname"` + Scopes []Scope `json:"scopes"` + GrantTypes []GrantType `json:"grandTypes"` +} + +// 5.1.6, 5.2.11 +type Scope struct { + // Required. The name of the scope. + Scope string `json:"scope"` + // Recommended. A short description of the scope. + Description string `json:"description"` +} + +// 5.1.7 +type GrantType struct { + Implicit Implicit `json:"implicit"` + AuthorizationCode AuthorizationCode `json:"authorization_code"` +} + +// 5.1.8 Implicit Object +type Implicit struct { + // Required. The login endpoint definition. + loginEndpoint LoginEndpoint `json:"loginEndpoint"` + // An optional alternative name to standard "access_token" OAuth2 parameter. + TokenName string `json:"tokenName"` +} + +// 5.1.9 Authorization Code Object +type AuthorizationCode struct { + TokenRequestEndpoint TokenRequestEndpoint `json:"tokenRequestEndpoint"` + TokenEndpoint TokenEndpoint `json:"tokenEndpoint"` +} + +// 5.1.10 Login Endpoint Object +type LoginEndpoint struct { + // Required. The URL of the authorization endpoint for the implicit grant flow. The value SHOULD be in a URL format. + Url string `json:"url"` +} + +// 5.1.11 Token Request Endpoint Object +type TokenRequestEndpoint struct { + // Required. The URL of the authorization endpoint for the authentication code grant flow. The value SHOULD be in a URL format. + Url string `json:"url"` + // An optional alternative name to standard "client_id" OAuth2 parameter. + ClientIdName string `json:"clientIdName"` + // An optional alternative name to the standard "client_secret" OAuth2 parameter. + ClientSecretName string `json:"clientSecretName"` +} + +// 5.1.12 Token Endpoint Object +type TokenEndpoint struct { + // Required. The URL of the token endpoint for the authentication code grant flow. The value SHOULD be in a URL format. + Url string `json:"url"` + // An optional alternative name to standard "access_token" OAuth2 parameter. + TokenName string `json:"tokenName"` +} + +// 5.2 API Declaration +type ApiDeclaration struct { + SwaggerVersion string `json:"swaggerVersion"` + ApiVersion string `json:"apiVersion"` + BasePath string `json:"basePath"` + ResourcePath string `json:"resourcePath"` // must start with / + Info Info `json:"info"` + Apis []Api `json:"apis,omitempty"` + Models ModelList `json:"models,omitempty"` + Produces []string `json:"produces,omitempty"` + Consumes []string `json:"consumes,omitempty"` + Authorizations []Authorization `json:"authorizations,omitempty"` +} + +// 5.2.2 API Object +type Api struct { + Path string `json:"path"` // relative or absolute, must start with / + Description string `json:"description"` + Operations []Operation `json:"operations,omitempty"` +} + +// 5.2.3 Operation Object +type Operation struct { + DataTypeFields + Method string `json:"method"` + Summary string `json:"summary,omitempty"` + Notes string `json:"notes,omitempty"` + Nickname string `json:"nickname"` + Authorizations []Authorization `json:"authorizations,omitempty"` + Parameters []Parameter `json:"parameters"` + ResponseMessages []ResponseMessage `json:"responseMessages,omitempty"` // optional + Produces []string `json:"produces,omitempty"` + Consumes []string `json:"consumes,omitempty"` + Deprecated string `json:"deprecated,omitempty"` +} + +// 5.2.4 Parameter Object +type Parameter struct { + DataTypeFields + ParamType string `json:"paramType"` // path,query,body,header,form + Name string `json:"name"` + Description string `json:"description"` + Required bool `json:"required"` + AllowMultiple bool `json:"allowMultiple"` +} + +// 5.2.5 Response Message Object +type ResponseMessage struct { + Code int `json:"code"` + Message string `json:"message"` + ResponseModel string `json:"responseModel,omitempty"` +} + +// 5.2.6, 5.2.7 Models Object +type Model struct { + Id string `json:"id"` + Description string `json:"description,omitempty"` + Required []string `json:"required,omitempty"` + Properties ModelPropertyList `json:"properties"` + SubTypes []string `json:"subTypes,omitempty"` + Discriminator string `json:"discriminator,omitempty"` +} + +// 5.2.8 Properties Object +type ModelProperty struct { + DataTypeFields + Description string `json:"description,omitempty"` +} + +// 5.2.10 +type Authorizations map[string]Authorization diff --git a/vendor/github.com/emicklei/go-restful-swagger12/swagger_builder.go b/vendor/github.com/emicklei/go-restful-swagger12/swagger_builder.go new file mode 100644 index 000000000..05a3c7e76 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/swagger_builder.go @@ -0,0 +1,21 @@ +package swagger + +type SwaggerBuilder struct { + SwaggerService +} + +func NewSwaggerBuilder(config Config) *SwaggerBuilder { + return &SwaggerBuilder{*newSwaggerService(config)} +} + +func (sb SwaggerBuilder) ProduceListing() ResourceListing { + return sb.SwaggerService.produceListing() +} + +func (sb SwaggerBuilder) ProduceAllDeclarations() map[string]ApiDeclaration { + return sb.SwaggerService.produceAllDeclarations() +} + +func (sb SwaggerBuilder) ProduceDeclarations(route string) (*ApiDeclaration, bool) { + return sb.SwaggerService.produceDeclarations(route) +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/swagger_test.go b/vendor/github.com/emicklei/go-restful-swagger12/swagger_test.go new file mode 100644 index 000000000..3db904afc --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/swagger_test.go @@ -0,0 +1,318 @@ +package swagger + +import ( + "encoding/json" + "testing" + + "github.com/emicklei/go-restful" + "github.com/emicklei/go-restful-swagger12/test_package" +) + +func TestInfoStruct_Issue231(t *testing.T) { + config := Config{ + Info: Info{ + Title: "Title", + Description: "Description", + TermsOfServiceUrl: "http://example.com", + Contact: "example@example.com", + License: "License", + LicenseUrl: "http://example.com/license.txt", + }, + } + sws := newSwaggerService(config) + str, err := json.MarshalIndent(sws.produceListing(), "", " ") + if err != nil { + t.Fatal(err) + } + compareJson(t, string(str), ` + { + "apiVersion": "", + "swaggerVersion": "1.2", + "apis": null, + "info": { + "title": "Title", + "description": "Description", + "termsOfServiceUrl": "http://example.com", + "contact": "example@example.com", + "license": "License", + "licenseUrl": "http://example.com/license.txt" + } + } + `) +} + +// go test -v -test.run TestThatMultiplePathsOnRootAreHandled ...swagger +func TestThatMultiplePathsOnRootAreHandled(t *testing.T) { + ws1 := new(restful.WebService) + ws1.Route(ws1.GET("/_ping").To(dummy)) + ws1.Route(ws1.GET("/version").To(dummy)) + + cfg := Config{ + WebServicesUrl: "http://here.com", + ApiPath: "/apipath", + WebServices: []*restful.WebService{ws1}, + } + sws := newSwaggerService(cfg) + decl := sws.composeDeclaration(ws1, "/") + if got, want := len(decl.Apis), 2; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestWriteSamples(t *testing.T) { + ws1 := new(restful.WebService) + ws1.Route(ws1.GET("/object").To(dummy).Writes(test_package.TestStruct{})) + ws1.Route(ws1.GET("/array").To(dummy).Writes([]test_package.TestStruct{})) + ws1.Route(ws1.GET("/object_and_array").To(dummy).Writes(struct{ Abc test_package.TestStruct }{})) + + cfg := Config{ + WebServicesUrl: "http://here.com", + ApiPath: "/apipath", + WebServices: []*restful.WebService{ws1}, + } + sws := newSwaggerService(cfg) + + decl := sws.composeDeclaration(ws1, "/") + + str, err := json.MarshalIndent(decl.Apis, "", " ") + if err != nil { + t.Fatal(err) + } + + compareJson(t, string(str), ` + [ + { + "path": "/object", + "description": "", + "operations": [ + { + "type": "test_package.TestStruct", + "method": "GET", + "nickname": "dummy", + "parameters": [] + } + ] + }, + { + "path": "/array", + "description": "", + "operations": [ + { + "type": "array", + "items": { + "$ref": "test_package.TestStruct" + }, + "method": "GET", + "nickname": "dummy", + "parameters": [] + } + ] + }, + { + "path": "/object_and_array", + "description": "", + "operations": [ + { + "type": "struct { Abc test_package.TestStruct }", + "method": "GET", + "nickname": "dummy", + "parameters": [] + } + ] + } + ]`) + + str, err = json.MarshalIndent(decl.Models, "", " ") + if err != nil { + t.Fatal(err) + } + compareJson(t, string(str), ` + { + "test_package.TestStruct": { + "id": "test_package.TestStruct", + "required": [ + "TestField" + ], + "properties": { + "TestField": { + "type": "string" + } + } + }, + "||test_package.TestStruct": { + "id": "||test_package.TestStruct", + "properties": {} + }, + "struct { Abc test_package.TestStruct }": { + "id": "struct { Abc test_package.TestStruct }", + "required": [ + "Abc" + ], + "properties": { + "Abc": { + "$ref": "test_package.TestStruct" + } + } + } + }`) +} + +func TestRoutesWithCommonPart(t *testing.T) { + ws1 := new(restful.WebService) + ws1.Path("/") + ws1.Route(ws1.GET("/foobar").To(dummy).Writes(test_package.TestStruct{})) + ws1.Route(ws1.HEAD("/foobar").To(dummy).Writes(test_package.TestStruct{})) + ws1.Route(ws1.GET("/foo").To(dummy).Writes([]test_package.TestStruct{})) + ws1.Route(ws1.HEAD("/foo").To(dummy).Writes(test_package.TestStruct{})) + + cfg := Config{ + WebServicesUrl: "http://here.com", + ApiPath: "/apipath", + WebServices: []*restful.WebService{ws1}, + } + sws := newSwaggerService(cfg) + + decl := sws.composeDeclaration(ws1, "/foo") + + str, err := json.MarshalIndent(decl.Apis, "", " ") + if err != nil { + t.Fatal(err) + } + + compareJson(t, string(str), `[ + { + "path": "/foo", + "description": "", + "operations": [ + { + "type": "array", + "items": { + "$ref": "test_package.TestStruct" + }, + "method": "GET", + "nickname": "dummy", + "parameters": [] + }, + { + "type": "test_package.TestStruct", + "method": "HEAD", + "nickname": "dummy", + "parameters": [] + } + ] + } + ]`) +} + +// go test -v -test.run TestServiceToApi ...swagger +func TestServiceToApi(t *testing.T) { + ws := new(restful.WebService) + ws.Path("/tests") + ws.Consumes(restful.MIME_JSON) + ws.Produces(restful.MIME_XML) + ws.Route(ws.GET("/a").To(dummy).Writes(sample{})) + ws.Route(ws.PUT("/b").To(dummy).Writes(sample{})) + ws.Route(ws.POST("/c").To(dummy).Writes(sample{})) + ws.Route(ws.DELETE("/d").To(dummy).Writes(sample{})) + + ws.Route(ws.GET("/d").To(dummy).Writes(sample{})) + ws.Route(ws.PUT("/c").To(dummy).Writes(sample{})) + ws.Route(ws.POST("/b").To(dummy).Writes(sample{})) + ws.Route(ws.DELETE("/a").To(dummy).Writes(sample{})) + ws.ApiVersion("1.2.3") + cfg := Config{ + WebServicesUrl: "http://here.com", + ApiPath: "/apipath", + WebServices: []*restful.WebService{ws}, + PostBuildHandler: func(in *ApiDeclarationList) {}, + } + sws := newSwaggerService(cfg) + decl := sws.composeDeclaration(ws, "/tests") + // checks + if decl.ApiVersion != "1.2.3" { + t.Errorf("got %v want %v", decl.ApiVersion, "1.2.3") + } + if decl.BasePath != "http://here.com" { + t.Errorf("got %v want %v", decl.BasePath, "http://here.com") + } + if len(decl.Apis) != 4 { + t.Errorf("got %v want %v", len(decl.Apis), 4) + } + pathOrder := "" + for _, each := range decl.Apis { + pathOrder += each.Path + for _, other := range each.Operations { + pathOrder += other.Method + } + } + + if pathOrder != "/tests/aGETDELETE/tests/bPUTPOST/tests/cPOSTPUT/tests/dDELETEGET" { + t.Errorf("got %v want %v", pathOrder, "see test source") + } +} + +func dummy(i *restful.Request, o *restful.Response) {} + +// go test -v -test.run TestIssue78 ...swagger +type Response struct { + Code int + Users *[]User + Items *[]TestItem +} +type User struct { + Id, Name string +} +type TestItem struct { + Id, Name string +} + +// clear && go test -v -test.run TestComposeResponseMessages ...swagger +func TestComposeResponseMessages(t *testing.T) { + responseErrors := map[int]restful.ResponseError{} + responseErrors[400] = restful.ResponseError{Code: 400, Message: "Bad Request", Model: TestItem{}} + route := restful.Route{ResponseErrors: responseErrors} + decl := new(ApiDeclaration) + decl.Models = ModelList{} + msgs := composeResponseMessages(route, decl, &Config{}) + if msgs[0].ResponseModel != "swagger.TestItem" { + t.Errorf("got %s want swagger.TestItem", msgs[0].ResponseModel) + } +} + +func TestIssue78(t *testing.T) { + sws := newSwaggerService(Config{}) + models := new(ModelList) + sws.addModelFromSampleTo(&Operation{}, true, Response{Items: &[]TestItem{}}, models) + model, ok := models.At("swagger.Response") + if !ok { + t.Fatal("missing response model") + } + if "swagger.Response" != model.Id { + t.Fatal("wrong model id:" + model.Id) + } + code, ok := model.Properties.At("Code") + if !ok { + t.Fatal("missing code") + } + if "integer" != *code.Type { + t.Fatal("wrong code type:" + *code.Type) + } + items, ok := model.Properties.At("Items") + if !ok { + t.Fatal("missing items") + } + if "array" != *items.Type { + t.Fatal("wrong items type:" + *items.Type) + } + items_items := items.Items + if items_items == nil { + t.Fatal("missing items->items") + } + ref := items_items.Ref + if ref == nil { + t.Fatal("missing $ref") + } + if *ref != "swagger.TestItem" { + t.Fatal("wrong $ref:" + *ref) + } +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/swagger_webservice.go b/vendor/github.com/emicklei/go-restful-swagger12/swagger_webservice.go new file mode 100644 index 000000000..d90623120 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/swagger_webservice.go @@ -0,0 +1,443 @@ +package swagger + +import ( + "fmt" + + "github.com/emicklei/go-restful" + // "github.com/emicklei/hopwatch" + "net/http" + "reflect" + "sort" + "strings" + + "github.com/emicklei/go-restful/log" +) + +type SwaggerService struct { + config Config + apiDeclarationMap *ApiDeclarationList +} + +func newSwaggerService(config Config) *SwaggerService { + sws := &SwaggerService{ + config: config, + apiDeclarationMap: new(ApiDeclarationList)} + + // Build all ApiDeclarations + for _, each := range config.WebServices { + rootPath := each.RootPath() + // skip the api service itself + if rootPath != config.ApiPath { + if rootPath == "" || rootPath == "/" { + // use routes + for _, route := range each.Routes() { + entry := staticPathFromRoute(route) + _, exists := sws.apiDeclarationMap.At(entry) + if !exists { + sws.apiDeclarationMap.Put(entry, sws.composeDeclaration(each, entry)) + } + } + } else { // use root path + sws.apiDeclarationMap.Put(each.RootPath(), sws.composeDeclaration(each, each.RootPath())) + } + } + } + + // if specified then call the PostBuilderHandler + if config.PostBuildHandler != nil { + config.PostBuildHandler(sws.apiDeclarationMap) + } + return sws +} + +// LogInfo is the function that is called when this package needs to log. It defaults to log.Printf +var LogInfo = func(format string, v ...interface{}) { + // use the restful package-wide logger + log.Printf(format, v...) +} + +// InstallSwaggerService add the WebService that provides the API documentation of all services +// conform the Swagger documentation specifcation. (https://github.com/wordnik/swagger-core/wiki). +func InstallSwaggerService(aSwaggerConfig Config) { + RegisterSwaggerService(aSwaggerConfig, restful.DefaultContainer) +} + +// RegisterSwaggerService add the WebService that provides the API documentation of all services +// conform the Swagger documentation specifcation. (https://github.com/wordnik/swagger-core/wiki). +func RegisterSwaggerService(config Config, wsContainer *restful.Container) { + sws := newSwaggerService(config) + ws := new(restful.WebService) + ws.Path(config.ApiPath) + ws.Produces(restful.MIME_JSON) + if config.DisableCORS { + ws.Filter(enableCORS) + } + ws.Route(ws.GET("/").To(sws.getListing)) + ws.Route(ws.GET("/{a}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}/{e}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}/{e}/{f}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}/{e}/{f}/{g}").To(sws.getDeclarations)) + LogInfo("[restful/swagger] listing is available at %v%v", config.WebServicesUrl, config.ApiPath) + wsContainer.Add(ws) + + // Check paths for UI serving + if config.StaticHandler == nil && config.SwaggerFilePath != "" && config.SwaggerPath != "" { + swaggerPathSlash := config.SwaggerPath + // path must end with slash / + if "/" != config.SwaggerPath[len(config.SwaggerPath)-1:] { + LogInfo("[restful/swagger] use corrected SwaggerPath ; must end with slash (/)") + swaggerPathSlash += "/" + } + + LogInfo("[restful/swagger] %v%v is mapped to folder %v", config.WebServicesUrl, swaggerPathSlash, config.SwaggerFilePath) + wsContainer.Handle(swaggerPathSlash, http.StripPrefix(swaggerPathSlash, http.FileServer(http.Dir(config.SwaggerFilePath)))) + + //if we define a custom static handler use it + } else if config.StaticHandler != nil && config.SwaggerPath != "" { + swaggerPathSlash := config.SwaggerPath + // path must end with slash / + if "/" != config.SwaggerPath[len(config.SwaggerPath)-1:] { + LogInfo("[restful/swagger] use corrected SwaggerFilePath ; must end with slash (/)") + swaggerPathSlash += "/" + + } + LogInfo("[restful/swagger] %v%v is mapped to custom Handler %T", config.WebServicesUrl, swaggerPathSlash, config.StaticHandler) + wsContainer.Handle(swaggerPathSlash, config.StaticHandler) + + } else { + LogInfo("[restful/swagger] Swagger(File)Path is empty ; no UI is served") + } +} + +func staticPathFromRoute(r restful.Route) string { + static := r.Path + bracket := strings.Index(static, "{") + if bracket <= 1 { // result cannot be empty + return static + } + if bracket != -1 { + static = r.Path[:bracket] + } + if strings.HasSuffix(static, "/") { + return static[:len(static)-1] + } else { + return static + } +} + +func enableCORS(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + if origin := req.HeaderParameter(restful.HEADER_Origin); origin != "" { + // prevent duplicate header + if len(resp.Header().Get(restful.HEADER_AccessControlAllowOrigin)) == 0 { + resp.AddHeader(restful.HEADER_AccessControlAllowOrigin, origin) + } + } + chain.ProcessFilter(req, resp) +} + +func (sws SwaggerService) getListing(req *restful.Request, resp *restful.Response) { + listing := sws.produceListing() + resp.WriteAsJson(listing) +} + +func (sws SwaggerService) produceListing() ResourceListing { + listing := ResourceListing{SwaggerVersion: swaggerVersion, ApiVersion: sws.config.ApiVersion, Info: sws.config.Info} + sws.apiDeclarationMap.Do(func(k string, v ApiDeclaration) { + ref := Resource{Path: k} + if len(v.Apis) > 0 { // use description of first (could still be empty) + ref.Description = v.Apis[0].Description + } + listing.Apis = append(listing.Apis, ref) + }) + return listing +} + +func (sws SwaggerService) getDeclarations(req *restful.Request, resp *restful.Response) { + decl, ok := sws.produceDeclarations(composeRootPath(req)) + if !ok { + resp.WriteErrorString(http.StatusNotFound, "ApiDeclaration not found") + return + } + // unless WebServicesUrl is given + if len(sws.config.WebServicesUrl) == 0 { + // update base path from the actual request + // TODO how to detect https? assume http for now + var host string + // X-Forwarded-Host or Host or Request.Host + hostvalues, ok := req.Request.Header["X-Forwarded-Host"] // apache specific? + if !ok || len(hostvalues) == 0 { + forwarded, ok := req.Request.Header["Host"] // without reverse-proxy + if !ok || len(forwarded) == 0 { + // fallback to Host field + host = req.Request.Host + } else { + host = forwarded[0] + } + } else { + host = hostvalues[0] + } + // inspect Referer for the scheme (http vs https) + scheme := "http" + if referer := req.Request.Header["Referer"]; len(referer) > 0 { + if strings.HasPrefix(referer[0], "https") { + scheme = "https" + } + } + decl.BasePath = fmt.Sprintf("%s://%s", scheme, host) + } + resp.WriteAsJson(decl) +} + +func (sws SwaggerService) produceAllDeclarations() map[string]ApiDeclaration { + decls := map[string]ApiDeclaration{} + sws.apiDeclarationMap.Do(func(k string, v ApiDeclaration) { + decls[k] = v + }) + return decls +} + +func (sws SwaggerService) produceDeclarations(route string) (*ApiDeclaration, bool) { + decl, ok := sws.apiDeclarationMap.At(route) + if !ok { + return nil, false + } + decl.BasePath = sws.config.WebServicesUrl + return &decl, true +} + +// composeDeclaration uses all routes and parameters to create a ApiDeclaration +func (sws SwaggerService) composeDeclaration(ws *restful.WebService, pathPrefix string) ApiDeclaration { + decl := ApiDeclaration{ + SwaggerVersion: swaggerVersion, + BasePath: sws.config.WebServicesUrl, + ResourcePath: pathPrefix, + Models: ModelList{}, + ApiVersion: ws.Version()} + + // collect any path parameters + rootParams := []Parameter{} + for _, param := range ws.PathParameters() { + rootParams = append(rootParams, asSwaggerParameter(param.Data())) + } + // aggregate by path + pathToRoutes := newOrderedRouteMap() + for _, other := range ws.Routes() { + if strings.HasPrefix(other.Path, pathPrefix) { + if len(pathPrefix) > 1 && len(other.Path) > len(pathPrefix) && other.Path[len(pathPrefix)] != '/' { + continue + } + pathToRoutes.Add(other.Path, other) + } + } + pathToRoutes.Do(func(path string, routes []restful.Route) { + api := Api{Path: strings.TrimSuffix(withoutWildcard(path), "/"), Description: ws.Documentation()} + voidString := "void" + for _, route := range routes { + operation := Operation{ + Method: route.Method, + Summary: route.Doc, + Notes: route.Notes, + // Type gets overwritten if there is a write sample + DataTypeFields: DataTypeFields{Type: &voidString}, + Parameters: []Parameter{}, + Nickname: route.Operation, + ResponseMessages: composeResponseMessages(route, &decl, &sws.config)} + + operation.Consumes = route.Consumes + operation.Produces = route.Produces + + // share root params if any + for _, swparam := range rootParams { + operation.Parameters = append(operation.Parameters, swparam) + } + // route specific params + for _, param := range route.ParameterDocs { + operation.Parameters = append(operation.Parameters, asSwaggerParameter(param.Data())) + } + + sws.addModelsFromRouteTo(&operation, route, &decl) + api.Operations = append(api.Operations, operation) + } + decl.Apis = append(decl.Apis, api) + }) + return decl +} + +func withoutWildcard(path string) string { + if strings.HasSuffix(path, ":*}") { + return path[0:len(path)-3] + "}" + } + return path +} + +// composeResponseMessages takes the ResponseErrors (if any) and creates ResponseMessages from them. +func composeResponseMessages(route restful.Route, decl *ApiDeclaration, config *Config) (messages []ResponseMessage) { + if route.ResponseErrors == nil { + return messages + } + // sort by code + codes := sort.IntSlice{} + for code := range route.ResponseErrors { + codes = append(codes, code) + } + codes.Sort() + for _, code := range codes { + each := route.ResponseErrors[code] + message := ResponseMessage{ + Code: code, + Message: each.Message, + } + if each.Model != nil { + st := reflect.TypeOf(each.Model) + isCollection, st := detectCollectionType(st) + // collection cannot be in responsemodel + if !isCollection { + modelName := modelBuilder{}.keyFrom(st) + modelBuilder{Models: &decl.Models, Config: config}.addModel(st, "") + message.ResponseModel = modelName + } + } + messages = append(messages, message) + } + return +} + +// addModelsFromRoute takes any read or write sample from the Route and creates a Swagger model from it. +func (sws SwaggerService) addModelsFromRouteTo(operation *Operation, route restful.Route, decl *ApiDeclaration) { + if route.ReadSample != nil { + sws.addModelFromSampleTo(operation, false, route.ReadSample, &decl.Models) + } + if route.WriteSample != nil { + sws.addModelFromSampleTo(operation, true, route.WriteSample, &decl.Models) + } +} + +func detectCollectionType(st reflect.Type) (bool, reflect.Type) { + isCollection := false + if st.Kind() == reflect.Slice || st.Kind() == reflect.Array { + st = st.Elem() + isCollection = true + } else { + if st.Kind() == reflect.Ptr { + if st.Elem().Kind() == reflect.Slice || st.Elem().Kind() == reflect.Array { + st = st.Elem().Elem() + isCollection = true + } + } + } + return isCollection, st +} + +// addModelFromSample creates and adds (or overwrites) a Model from a sample resource +func (sws SwaggerService) addModelFromSampleTo(operation *Operation, isResponse bool, sample interface{}, models *ModelList) { + mb := modelBuilder{Models: models, Config: &sws.config} + if isResponse { + sampleType, items := asDataType(sample, &sws.config) + operation.Type = sampleType + operation.Items = items + } + mb.addModelFrom(sample) +} + +func asSwaggerParameter(param restful.ParameterData) Parameter { + return Parameter{ + DataTypeFields: DataTypeFields{ + Type: ¶m.DataType, + Format: asFormat(param.DataType, param.DataFormat), + DefaultValue: Special(param.DefaultValue), + }, + Name: param.Name, + Description: param.Description, + ParamType: asParamType(param.Kind), + + Required: param.Required} +} + +// Between 1..7 path parameters is supported +func composeRootPath(req *restful.Request) string { + path := "/" + req.PathParameter("a") + b := req.PathParameter("b") + if b == "" { + return path + } + path = path + "/" + b + c := req.PathParameter("c") + if c == "" { + return path + } + path = path + "/" + c + d := req.PathParameter("d") + if d == "" { + return path + } + path = path + "/" + d + e := req.PathParameter("e") + if e == "" { + return path + } + path = path + "/" + e + f := req.PathParameter("f") + if f == "" { + return path + } + path = path + "/" + f + g := req.PathParameter("g") + if g == "" { + return path + } + return path + "/" + g +} + +func asFormat(dataType string, dataFormat string) string { + if dataFormat != "" { + return dataFormat + } + return "" // TODO +} + +func asParamType(kind int) string { + switch { + case kind == restful.PathParameterKind: + return "path" + case kind == restful.QueryParameterKind: + return "query" + case kind == restful.BodyParameterKind: + return "body" + case kind == restful.HeaderParameterKind: + return "header" + case kind == restful.FormParameterKind: + return "form" + } + return "" +} + +func asDataType(any interface{}, config *Config) (*string, *Item) { + // If it's not a collection, return the suggested model name + st := reflect.TypeOf(any) + isCollection, st := detectCollectionType(st) + modelName := modelBuilder{}.keyFrom(st) + // if it's not a collection we are done + if !isCollection { + return &modelName, nil + } + + // XXX: This is not very elegant + // We create an Item object referring to the given model + models := ModelList{} + mb := modelBuilder{Models: &models, Config: config} + mb.addModelFrom(any) + + elemTypeName := mb.getElementTypeName(modelName, "", st) + item := new(Item) + if mb.isPrimitiveType(elemTypeName) { + mapped := mb.jsonSchemaType(elemTypeName) + item.Type = &mapped + } else { + item.Ref = &elemTypeName + } + tmp := "array" + return &tmp, item +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/test_package/struct.go b/vendor/github.com/emicklei/go-restful-swagger12/test_package/struct.go new file mode 100644 index 000000000..b9a6f9308 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/test_package/struct.go @@ -0,0 +1,5 @@ +package test_package + +type TestStruct struct { + TestField string +} diff --git a/vendor/github.com/emicklei/go-restful-swagger12/utils_test.go b/vendor/github.com/emicklei/go-restful-swagger12/utils_test.go new file mode 100644 index 000000000..220289af3 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful-swagger12/utils_test.go @@ -0,0 +1,86 @@ +package swagger + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "strings" + "testing" +) + +func testJsonFromStructWithConfig(t *testing.T, sample interface{}, expectedJson string, config *Config) bool { + m := modelsFromStructWithConfig(sample, config) + data, _ := json.MarshalIndent(m, " ", " ") + return compareJson(t, string(data), expectedJson) +} + +func modelsFromStructWithConfig(sample interface{}, config *Config) *ModelList { + models := new(ModelList) + builder := modelBuilder{Models: models, Config: config} + builder.addModelFrom(sample) + return models +} + +func testJsonFromStruct(t *testing.T, sample interface{}, expectedJson string) bool { + return testJsonFromStructWithConfig(t, sample, expectedJson, &Config{}) +} + +func modelsFromStruct(sample interface{}) *ModelList { + return modelsFromStructWithConfig(sample, &Config{}) +} + +func compareJson(t *testing.T, actualJsonAsString string, expectedJsonAsString string) bool { + success := false + var actualMap map[string]interface{} + json.Unmarshal([]byte(actualJsonAsString), &actualMap) + var expectedMap map[string]interface{} + err := json.Unmarshal([]byte(expectedJsonAsString), &expectedMap) + if err != nil { + var actualArray []interface{} + json.Unmarshal([]byte(actualJsonAsString), &actualArray) + var expectedArray []interface{} + err := json.Unmarshal([]byte(expectedJsonAsString), &expectedArray) + success = reflect.DeepEqual(actualArray, expectedArray) + if err != nil { + t.Fatalf("Unparsable expected JSON: %s, actual: %v, expected: %v", err, actualJsonAsString, expectedJsonAsString) + } + } else { + success = reflect.DeepEqual(actualMap, expectedMap) + } + if !success { + t.Log("---- expected -----") + t.Log(withLineNumbers(expectedJsonAsString)) + t.Log("---- actual -----") + t.Log(withLineNumbers(actualJsonAsString)) + t.Log("---- raw -----") + t.Log(actualJsonAsString) + t.Error("there are differences") + return false + } + return true +} + +func indexOfNonMatchingLine(actual, expected string) int { + a := strings.Split(actual, "\n") + e := strings.Split(expected, "\n") + size := len(a) + if len(e) < len(a) { + size = len(e) + } + for i := 0; i < size; i++ { + if a[i] != e[i] { + return i + } + } + return -1 +} + +func withLineNumbers(content string) string { + var buffer bytes.Buffer + lines := strings.Split(content, "\n") + for i, each := range lines { + buffer.WriteString(fmt.Sprintf("%d:%s\n", i, each)) + } + return buffer.String() +} diff --git a/vendor/github.com/emicklei/go-restful/.gitignore b/vendor/github.com/emicklei/go-restful/.gitignore new file mode 100644 index 000000000..cece7be66 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/.gitignore @@ -0,0 +1,70 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe + +restful.html + +*.out + +tmp.prof + +go-restful.test + +examples/restful-basic-authentication + +examples/restful-encoding-filter + +examples/restful-filters + +examples/restful-hello-world + +examples/restful-resource-functions + +examples/restful-serve-static + +examples/restful-user-service + +*.DS_Store +examples/restful-user-resource + +examples/restful-multi-containers + +examples/restful-form-handling + +examples/restful-CORS-filter + +examples/restful-options-filter + +examples/restful-curly-router + +examples/restful-cpuprofiler-service + +examples/restful-pre-post-filters + +curly.prof + +examples/restful-NCSA-logging + +examples/restful-html-template + +s.html +restful-path-tail diff --git a/vendor/github.com/emicklei/go-restful/.travis.yml b/vendor/github.com/emicklei/go-restful/.travis.yml new file mode 100644 index 000000000..b22f8f547 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/.travis.yml @@ -0,0 +1,6 @@ +language: go + +go: + - 1.x + +script: go test -v \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/CHANGES.md b/vendor/github.com/emicklei/go-restful/CHANGES.md new file mode 100644 index 000000000..0adca766f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/CHANGES.md @@ -0,0 +1,223 @@ +Change history of go-restful += +2017-02-16 +- solved issue #304, make operation names unique + +2017-01-30 + + [IMPORTANT] For swagger users, change your import statement to: + swagger "github.com/emicklei/go-restful-swagger12" + +- moved swagger 1.2 code to go-restful-swagger12 +- created TAG 2.0.0 + +2017-01-27 + +- remove defer request body close +- expose Dispatch for testing filters and Routefunctions +- swagger response model cannot be array +- created TAG 1.0.0 + +2016-12-22 + +- (API change) Remove code related to caching request content. Removes SetCacheReadEntity(doCache bool) + +2016-11-26 + +- Default change! now use CurlyRouter (was RouterJSR311) +- Default change! no more caching of request content +- Default change! do not recover from panics + +2016-09-22 + +- fix the DefaultRequestContentType feature + +2016-02-14 + +- take the qualify factor of the Accept header mediatype into account when deciding the contentype of the response +- add constructors for custom entity accessors for xml and json + +2015-09-27 + +- rename new WriteStatusAnd... to WriteHeaderAnd... for consistency + +2015-09-25 + +- fixed problem with changing Header after WriteHeader (issue 235) + +2015-09-14 + +- changed behavior of WriteHeader (immediate write) and WriteEntity (no status write) +- added support for custom EntityReaderWriters. + +2015-08-06 + +- add support for reading entities from compressed request content +- use sync.Pool for compressors of http response and request body +- add Description to Parameter for documentation in Swagger UI + +2015-03-20 + +- add configurable logging + +2015-03-18 + +- if not specified, the Operation is derived from the Route function + +2015-03-17 + +- expose Parameter creation functions +- make trace logger an interface +- fix OPTIONSFilter +- customize rendering of ServiceError +- JSR311 router now handles wildcards +- add Notes to Route + +2014-11-27 + +- (api add) PrettyPrint per response. (as proposed in #167) + +2014-11-12 + +- (api add) ApiVersion(.) for documentation in Swagger UI + +2014-11-10 + +- (api change) struct fields tagged with "description" show up in Swagger UI + +2014-10-31 + +- (api change) ReturnsError -> Returns +- (api add) RouteBuilder.Do(aBuilder) for DRY use of RouteBuilder +- fix swagger nested structs +- sort Swagger response messages by code + +2014-10-23 + +- (api add) ReturnsError allows you to document Http codes in swagger +- fixed problem with greedy CurlyRouter +- (api add) Access-Control-Max-Age in CORS +- add tracing functionality (injectable) for debugging purposes +- support JSON parse 64bit int +- fix empty parameters for swagger +- WebServicesUrl is now optional for swagger +- fixed duplicate AccessControlAllowOrigin in CORS +- (api change) expose ServeMux in container +- (api add) added AllowedDomains in CORS +- (api add) ParameterNamed for detailed documentation + +2014-04-16 + +- (api add) expose constructor of Request for testing. + +2014-06-27 + +- (api add) ParameterNamed gives access to a Parameter definition and its data (for further specification). +- (api add) SetCacheReadEntity allow scontrol over whether or not the request body is being cached (default true for compatibility reasons). + +2014-07-03 + +- (api add) CORS can be configured with a list of allowed domains + +2014-03-12 + +- (api add) Route path parameters can use wildcard or regular expressions. (requires CurlyRouter) + +2014-02-26 + +- (api add) Request now provides information about the matched Route, see method SelectedRoutePath + +2014-02-17 + +- (api change) renamed parameter constants (go-lint checks) + +2014-01-10 + +- (api add) support for CloseNotify, see http://golang.org/pkg/net/http/#CloseNotifier + +2014-01-07 + +- (api change) Write* methods in Response now return the error or nil. +- added example of serving HTML from a Go template. +- fixed comparing Allowed headers in CORS (is now case-insensitive) + +2013-11-13 + +- (api add) Response knows how many bytes are written to the response body. + +2013-10-29 + +- (api add) RecoverHandler(handler RecoverHandleFunction) to change how panic recovery is handled. Default behavior is to log and return a stacktrace. This may be a security issue as it exposes sourcecode information. + +2013-10-04 + +- (api add) Response knows what HTTP status has been written +- (api add) Request can have attributes (map of string->interface, also called request-scoped variables + +2013-09-12 + +- (api change) Router interface simplified +- Implemented CurlyRouter, a Router that does not use|allow regular expressions in paths + +2013-08-05 + - add OPTIONS support + - add CORS support + +2013-08-27 + +- fixed some reported issues (see github) +- (api change) deprecated use of WriteError; use WriteErrorString instead + +2014-04-15 + +- (fix) v1.0.1 tag: fix Issue 111: WriteErrorString + +2013-08-08 + +- (api add) Added implementation Container: a WebServices collection with its own http.ServeMux allowing multiple endpoints per program. Existing uses of go-restful will register their services to the DefaultContainer. +- (api add) the swagger package has be extended to have a UI per container. +- if panic is detected then a small stack trace is printed (thanks to runner-mei) +- (api add) WriteErrorString to Response + +Important API changes: + +- (api remove) package variable DoNotRecover no longer works ; use restful.DefaultContainer.DoNotRecover(true) instead. +- (api remove) package variable EnableContentEncoding no longer works ; use restful.DefaultContainer.EnableContentEncoding(true) instead. + + +2013-07-06 + +- (api add) Added support for response encoding (gzip and deflate(zlib)). This feature is disabled on default (for backwards compatibility). Use restful.EnableContentEncoding = true in your initialization to enable this feature. + +2013-06-19 + +- (improve) DoNotRecover option, moved request body closer, improved ReadEntity + +2013-06-03 + +- (api change) removed Dispatcher interface, hide PathExpression +- changed receiver names of type functions to be more idiomatic Go + +2013-06-02 + +- (optimize) Cache the RegExp compilation of Paths. + +2013-05-22 + +- (api add) Added support for request/response filter functions + +2013-05-18 + + +- (api add) Added feature to change the default Http Request Dispatch function (travis cline) +- (api change) Moved Swagger Webservice to swagger package (see example restful-user) + +[2012-11-14 .. 2013-05-18> + +- See https://github.com/emicklei/go-restful/commits + +2012-11-14 + +- Initial commit + + diff --git a/vendor/github.com/emicklei/go-restful/LICENSE b/vendor/github.com/emicklei/go-restful/LICENSE new file mode 100644 index 000000000..ece7ec61e --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2012,2013 Ernest Micklei + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/Makefile b/vendor/github.com/emicklei/go-restful/Makefile new file mode 100644 index 000000000..b40081cc0 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/Makefile @@ -0,0 +1,7 @@ +all: test + +test: + go test -v . + +ex: + cd examples && ls *.go | xargs go build -o /tmp/ignore \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/README.md b/vendor/github.com/emicklei/go-restful/README.md new file mode 100644 index 000000000..cd1f2d0cc --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/README.md @@ -0,0 +1,74 @@ +go-restful +========== +package for building REST-style Web Services using Google Go + +[![Build Status](https://travis-ci.org/emicklei/go-restful.png)](https://travis-ci.org/emicklei/go-restful) +[![Go Report Card](https://goreportcard.com/badge/github.com/emicklei/go-restful)](https://goreportcard.com/report/github.com/emicklei/go-restful) +[![GoDoc](https://godoc.org/github.com/emicklei/go-restful?status.svg)](https://godoc.org/github.com/emicklei/go-restful) + +- [Code examples](https://github.com/emicklei/go-restful/tree/master/examples) + +REST asks developers to use HTTP methods explicitly and in a way that's consistent with the protocol definition. This basic REST design principle establishes a one-to-one mapping between create, read, update, and delete (CRUD) operations and HTTP methods. According to this mapping: + +- GET = Retrieve a representation of a resource +- POST = Create if you are sending content to the server to create a subordinate of the specified resource collection, using some server-side algorithm. +- PUT = Create if you are sending the full content of the specified resource (URI). +- PUT = Update if you are updating the full content of the specified resource. +- DELETE = Delete if you are requesting the server to delete the resource +- PATCH = Update partial content of a resource +- OPTIONS = Get information about the communication options for the request URI + +### Example + +```Go +ws := new(restful.WebService) +ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) + +ws.Route(ws.GET("/{user-id}").To(u.findUser). + Doc("get a user"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + Writes(User{})) +... + +func (u UserResource) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + ... +} +``` + +[Full API of a UserResource](https://github.com/emicklei/go-restful/tree/master/examples/restful-user-resource.go) + +### Features + +- Routes for request → function mapping with path parameter (e.g. {id}) support +- Configurable router: + - (default) Fast routing algorithm that allows static elements, regular expressions and dynamic parameters in the URL path (e.g. /meetings/{id} or /static/{subpath:*} + - Routing algorithm after [JSR311](http://jsr311.java.net/nonav/releases/1.1/spec/spec.html) that is implemented using (but does **not** accept) regular expressions +- Request API for reading structs from JSON/XML and accesing parameters (path,query,header) +- Response API for writing structs to JSON/XML and setting headers +- Customizable encoding using EntityReaderWriter registration +- Filters for intercepting the request → response flow on Service or Route level +- Request-scoped variables using attributes +- Containers for WebServices on different HTTP endpoints +- Content encoding (gzip,deflate) of request and response payloads +- Automatic responses on OPTIONS (using a filter) +- Automatic CORS request handling (using a filter) +- API declaration for Swagger UI (see [go-restful-swagger12](https://github.com/emicklei/go-restful-swagger12),[go-restful-openapi](https://github.com/emicklei/go-restful-openapi)) +- Panic recovery to produce HTTP 500, customizable using RecoverHandler(...) +- Route errors produce HTTP 404/405/406/415 errors, customizable using ServiceErrorHandler(...) +- Configurable (trace) logging +- Customizable gzip/deflate readers and writers using CompressorProvider registration + +### Resources + +- [Example posted on blog](http://ernestmicklei.com/2012/11/go-restful-first-working-example/) +- [Design explained on blog](http://ernestmicklei.com/2012/11/go-restful-api-design/) +- [sourcegraph](https://sourcegraph.com/github.com/emicklei/go-restful) +- [showcase: Mora - MongoDB REST Api server](https://github.com/emicklei/mora) + +Type ```git shortlog -s``` for a full list of contributors. + +© 2012 - 2017, http://ernestmicklei.com. MIT License. Contributions are welcome. \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/Srcfile b/vendor/github.com/emicklei/go-restful/Srcfile new file mode 100644 index 000000000..16fd18689 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/Srcfile @@ -0,0 +1 @@ +{"SkipDirs": ["examples"]} diff --git a/vendor/github.com/emicklei/go-restful/bench_curly_test.go b/vendor/github.com/emicklei/go-restful/bench_curly_test.go new file mode 100644 index 000000000..db6a1a752 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/bench_curly_test.go @@ -0,0 +1,51 @@ +package restful + +import ( + "fmt" + "net/http" + "net/http/httptest" + "testing" +) + +func setupCurly(container *Container) []string { + wsCount := 26 + rtCount := 26 + urisCurly := []string{} + + container.Router(CurlyRouter{}) + for i := 0; i < wsCount; i++ { + root := fmt.Sprintf("/%s/{%s}/", string(i+97), string(i+97)) + ws := new(WebService).Path(root) + for j := 0; j < rtCount; j++ { + sub := fmt.Sprintf("/%s2/{%s2}", string(j+97), string(j+97)) + ws.Route(ws.GET(sub).Consumes("application/xml").Produces("application/xml").To(echoCurly)) + } + container.Add(ws) + for _, each := range ws.Routes() { + urisCurly = append(urisCurly, "http://bench.com"+each.Path) + } + } + return urisCurly +} + +func echoCurly(req *Request, resp *Response) {} + +func BenchmarkManyCurly(b *testing.B) { + container := NewContainer() + urisCurly := setupCurly(container) + b.ResetTimer() + for t := 0; t < b.N; t++ { + for r := 0; r < 1000; r++ { + for _, each := range urisCurly { + sendNoReturnTo(each, container, t) + } + } + } +} + +func sendNoReturnTo(address string, container *Container, t int) { + httpRequest, _ := http.NewRequest("GET", address, nil) + httpRequest.Header.Set("Accept", "application/xml") + httpWriter := httptest.NewRecorder() + container.dispatch(httpWriter, httpRequest) +} diff --git a/vendor/github.com/emicklei/go-restful/bench_test.go b/vendor/github.com/emicklei/go-restful/bench_test.go new file mode 100644 index 000000000..3e77c2d29 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/bench_test.go @@ -0,0 +1,43 @@ +package restful + +import ( + "fmt" + "io" + "testing" +) + +var uris = []string{} + +func setup(container *Container) { + wsCount := 26 + rtCount := 26 + + for i := 0; i < wsCount; i++ { + root := fmt.Sprintf("/%s/{%s}/", string(i+97), string(i+97)) + ws := new(WebService).Path(root) + for j := 0; j < rtCount; j++ { + sub := fmt.Sprintf("/%s2/{%s2}", string(j+97), string(j+97)) + ws.Route(ws.GET(sub).To(echo)) + } + container.Add(ws) + for _, each := range ws.Routes() { + uris = append(uris, "http://bench.com"+each.Path) + } + } +} + +func echo(req *Request, resp *Response) { + io.WriteString(resp.ResponseWriter, "echo") +} + +func BenchmarkMany(b *testing.B) { + container := NewContainer() + setup(container) + b.ResetTimer() + for t := 0; t < b.N; t++ { + for _, each := range uris { + // println(each) + sendItTo(each, container) + } + } +} diff --git a/vendor/github.com/emicklei/go-restful/bench_test.sh b/vendor/github.com/emicklei/go-restful/bench_test.sh new file mode 100644 index 000000000..47ffbe4ac --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/bench_test.sh @@ -0,0 +1,10 @@ +#go test -run=none -file bench_test.go -test.bench . -cpuprofile=bench_test.out + +go test -c +./go-restful.test -test.run=none -test.cpuprofile=tmp.prof -test.bench=BenchmarkMany +./go-restful.test -test.run=none -test.cpuprofile=curly.prof -test.bench=BenchmarkManyCurly + +#go tool pprof go-restful.test tmp.prof +go tool pprof go-restful.test curly.prof + + diff --git a/vendor/github.com/emicklei/go-restful/compress.go b/vendor/github.com/emicklei/go-restful/compress.go new file mode 100644 index 000000000..220b37712 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compress.go @@ -0,0 +1,123 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bufio" + "compress/gzip" + "compress/zlib" + "errors" + "io" + "net" + "net/http" + "strings" +) + +// OBSOLETE : use restful.DefaultContainer.EnableContentEncoding(true) to change this setting. +var EnableContentEncoding = false + +// CompressingResponseWriter is a http.ResponseWriter that can perform content encoding (gzip and zlib) +type CompressingResponseWriter struct { + writer http.ResponseWriter + compressor io.WriteCloser + encoding string +} + +// Header is part of http.ResponseWriter interface +func (c *CompressingResponseWriter) Header() http.Header { + return c.writer.Header() +} + +// WriteHeader is part of http.ResponseWriter interface +func (c *CompressingResponseWriter) WriteHeader(status int) { + c.writer.WriteHeader(status) +} + +// Write is part of http.ResponseWriter interface +// It is passed through the compressor +func (c *CompressingResponseWriter) Write(bytes []byte) (int, error) { + if c.isCompressorClosed() { + return -1, errors.New("Compressing error: tried to write data using closed compressor") + } + return c.compressor.Write(bytes) +} + +// CloseNotify is part of http.CloseNotifier interface +func (c *CompressingResponseWriter) CloseNotify() <-chan bool { + return c.writer.(http.CloseNotifier).CloseNotify() +} + +// Close the underlying compressor +func (c *CompressingResponseWriter) Close() error { + if c.isCompressorClosed() { + return errors.New("Compressing error: tried to close already closed compressor") + } + + c.compressor.Close() + if ENCODING_GZIP == c.encoding { + currentCompressorProvider.ReleaseGzipWriter(c.compressor.(*gzip.Writer)) + } + if ENCODING_DEFLATE == c.encoding { + currentCompressorProvider.ReleaseZlibWriter(c.compressor.(*zlib.Writer)) + } + // gc hint needed? + c.compressor = nil + return nil +} + +func (c *CompressingResponseWriter) isCompressorClosed() bool { + return nil == c.compressor +} + +// Hijack implements the Hijacker interface +// This is especially useful when combining Container.EnabledContentEncoding +// in combination with websockets (for instance gorilla/websocket) +func (c *CompressingResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + hijacker, ok := c.writer.(http.Hijacker) + if !ok { + return nil, nil, errors.New("ResponseWriter doesn't support Hijacker interface") + } + return hijacker.Hijack() +} + +// WantsCompressedResponse reads the Accept-Encoding header to see if and which encoding is requested. +func wantsCompressedResponse(httpRequest *http.Request) (bool, string) { + header := httpRequest.Header.Get(HEADER_AcceptEncoding) + gi := strings.Index(header, ENCODING_GZIP) + zi := strings.Index(header, ENCODING_DEFLATE) + // use in order of appearance + if gi == -1 { + return zi != -1, ENCODING_DEFLATE + } else if zi == -1 { + return gi != -1, ENCODING_GZIP + } else { + if gi < zi { + return true, ENCODING_GZIP + } + return true, ENCODING_DEFLATE + } +} + +// NewCompressingResponseWriter create a CompressingResponseWriter for a known encoding = {gzip,deflate} +func NewCompressingResponseWriter(httpWriter http.ResponseWriter, encoding string) (*CompressingResponseWriter, error) { + httpWriter.Header().Set(HEADER_ContentEncoding, encoding) + c := new(CompressingResponseWriter) + c.writer = httpWriter + var err error + if ENCODING_GZIP == encoding { + w := currentCompressorProvider.AcquireGzipWriter() + w.Reset(httpWriter) + c.compressor = w + c.encoding = ENCODING_GZIP + } else if ENCODING_DEFLATE == encoding { + w := currentCompressorProvider.AcquireZlibWriter() + w.Reset(httpWriter) + c.compressor = w + c.encoding = ENCODING_DEFLATE + } else { + return nil, errors.New("Unknown encoding:" + encoding) + } + return c, err +} diff --git a/vendor/github.com/emicklei/go-restful/compress_test.go b/vendor/github.com/emicklei/go-restful/compress_test.go new file mode 100644 index 000000000..cc3e93d54 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compress_test.go @@ -0,0 +1,125 @@ +package restful + +import ( + "bytes" + "compress/gzip" + "compress/zlib" + "io" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" +) + +// go test -v -test.run TestGzip ...restful +func TestGzip(t *testing.T) { + EnableContentEncoding = true + httpRequest, _ := http.NewRequest("GET", "/test", nil) + httpRequest.Header.Set("Accept-Encoding", "gzip,deflate") + httpWriter := httptest.NewRecorder() + wanted, encoding := wantsCompressedResponse(httpRequest) + if !wanted { + t.Fatal("should accept gzip") + } + if encoding != "gzip" { + t.Fatal("expected gzip") + } + c, err := NewCompressingResponseWriter(httpWriter, encoding) + if err != nil { + t.Fatal(err.Error()) + } + c.Write([]byte("Hello World")) + c.Close() + if httpWriter.Header().Get("Content-Encoding") != "gzip" { + t.Fatal("Missing gzip header") + } + reader, err := gzip.NewReader(httpWriter.Body) + if err != nil { + t.Fatal(err.Error()) + } + data, err := ioutil.ReadAll(reader) + if err != nil { + t.Fatal(err.Error()) + } + if got, want := string(data), "Hello World"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestDeflate(t *testing.T) { + EnableContentEncoding = true + httpRequest, _ := http.NewRequest("GET", "/test", nil) + httpRequest.Header.Set("Accept-Encoding", "deflate,gzip") + httpWriter := httptest.NewRecorder() + wanted, encoding := wantsCompressedResponse(httpRequest) + if !wanted { + t.Fatal("should accept deflate") + } + if encoding != "deflate" { + t.Fatal("expected deflate") + } + c, err := NewCompressingResponseWriter(httpWriter, encoding) + if err != nil { + t.Fatal(err.Error()) + } + c.Write([]byte("Hello World")) + c.Close() + if httpWriter.Header().Get("Content-Encoding") != "deflate" { + t.Fatal("Missing deflate header") + } + reader, err := zlib.NewReader(httpWriter.Body) + if err != nil { + t.Fatal(err.Error()) + } + data, err := ioutil.ReadAll(reader) + if err != nil { + t.Fatal(err.Error()) + } + if got, want := string(data), "Hello World"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestGzipDecompressRequestBody(t *testing.T) { + b := new(bytes.Buffer) + w := newGzipWriter() + w.Reset(b) + io.WriteString(w, `{"msg":"hi"}`) + w.Flush() + w.Close() + + req := new(Request) + httpRequest, _ := http.NewRequest("GET", "/", bytes.NewReader(b.Bytes())) + httpRequest.Header.Set("Content-Type", "application/json") + httpRequest.Header.Set("Content-Encoding", "gzip") + req.Request = httpRequest + + doc := make(map[string]interface{}) + req.ReadEntity(&doc) + + if got, want := doc["msg"], "hi"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +func TestZlibDecompressRequestBody(t *testing.T) { + b := new(bytes.Buffer) + w := newZlibWriter() + w.Reset(b) + io.WriteString(w, `{"msg":"hi"}`) + w.Flush() + w.Close() + + req := new(Request) + httpRequest, _ := http.NewRequest("GET", "/", bytes.NewReader(b.Bytes())) + httpRequest.Header.Set("Content-Type", "application/json") + httpRequest.Header.Set("Content-Encoding", "deflate") + req.Request = httpRequest + + doc := make(map[string]interface{}) + req.ReadEntity(&doc) + + if got, want := doc["msg"], "hi"; got != want { + t.Errorf("got %v want %v", got, want) + } +} diff --git a/vendor/github.com/emicklei/go-restful/compressor_cache.go b/vendor/github.com/emicklei/go-restful/compressor_cache.go new file mode 100644 index 000000000..ee426010a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compressor_cache.go @@ -0,0 +1,103 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "compress/gzip" + "compress/zlib" +) + +// BoundedCachedCompressors is a CompressorProvider that uses a cache with a fixed amount +// of writers and readers (resources). +// If a new resource is acquired and all are in use, it will return a new unmanaged resource. +type BoundedCachedCompressors struct { + gzipWriters chan *gzip.Writer + gzipReaders chan *gzip.Reader + zlibWriters chan *zlib.Writer + writersCapacity int + readersCapacity int +} + +// NewBoundedCachedCompressors returns a new, with filled cache, BoundedCachedCompressors. +func NewBoundedCachedCompressors(writersCapacity, readersCapacity int) *BoundedCachedCompressors { + b := &BoundedCachedCompressors{ + gzipWriters: make(chan *gzip.Writer, writersCapacity), + gzipReaders: make(chan *gzip.Reader, readersCapacity), + zlibWriters: make(chan *zlib.Writer, writersCapacity), + writersCapacity: writersCapacity, + readersCapacity: readersCapacity, + } + for ix := 0; ix < writersCapacity; ix++ { + b.gzipWriters <- newGzipWriter() + b.zlibWriters <- newZlibWriter() + } + for ix := 0; ix < readersCapacity; ix++ { + b.gzipReaders <- newGzipReader() + } + return b +} + +// AcquireGzipWriter returns an resettable *gzip.Writer. Needs to be released. +func (b *BoundedCachedCompressors) AcquireGzipWriter() *gzip.Writer { + var writer *gzip.Writer + select { + case writer, _ = <-b.gzipWriters: + default: + // return a new unmanaged one + writer = newGzipWriter() + } + return writer +} + +// ReleaseGzipWriter accepts a writer (does not have to be one that was cached) +// only when the cache has room for it. It will ignore it otherwise. +func (b *BoundedCachedCompressors) ReleaseGzipWriter(w *gzip.Writer) { + // forget the unmanaged ones + if len(b.gzipWriters) < b.writersCapacity { + b.gzipWriters <- w + } +} + +// AcquireGzipReader returns a *gzip.Reader. Needs to be released. +func (b *BoundedCachedCompressors) AcquireGzipReader() *gzip.Reader { + var reader *gzip.Reader + select { + case reader, _ = <-b.gzipReaders: + default: + // return a new unmanaged one + reader = newGzipReader() + } + return reader +} + +// ReleaseGzipReader accepts a reader (does not have to be one that was cached) +// only when the cache has room for it. It will ignore it otherwise. +func (b *BoundedCachedCompressors) ReleaseGzipReader(r *gzip.Reader) { + // forget the unmanaged ones + if len(b.gzipReaders) < b.readersCapacity { + b.gzipReaders <- r + } +} + +// AcquireZlibWriter returns an resettable *zlib.Writer. Needs to be released. +func (b *BoundedCachedCompressors) AcquireZlibWriter() *zlib.Writer { + var writer *zlib.Writer + select { + case writer, _ = <-b.zlibWriters: + default: + // return a new unmanaged one + writer = newZlibWriter() + } + return writer +} + +// ReleaseZlibWriter accepts a writer (does not have to be one that was cached) +// only when the cache has room for it. It will ignore it otherwise. +func (b *BoundedCachedCompressors) ReleaseZlibWriter(w *zlib.Writer) { + // forget the unmanaged ones + if len(b.zlibWriters) < b.writersCapacity { + b.zlibWriters <- w + } +} diff --git a/vendor/github.com/emicklei/go-restful/compressor_pools.go b/vendor/github.com/emicklei/go-restful/compressor_pools.go new file mode 100644 index 000000000..d866ce64b --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compressor_pools.go @@ -0,0 +1,91 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "compress/gzip" + "compress/zlib" + "sync" +) + +// SyncPoolCompessors is a CompressorProvider that use the standard sync.Pool. +type SyncPoolCompessors struct { + GzipWriterPool *sync.Pool + GzipReaderPool *sync.Pool + ZlibWriterPool *sync.Pool +} + +// NewSyncPoolCompessors returns a new ("empty") SyncPoolCompessors. +func NewSyncPoolCompessors() *SyncPoolCompessors { + return &SyncPoolCompessors{ + GzipWriterPool: &sync.Pool{ + New: func() interface{} { return newGzipWriter() }, + }, + GzipReaderPool: &sync.Pool{ + New: func() interface{} { return newGzipReader() }, + }, + ZlibWriterPool: &sync.Pool{ + New: func() interface{} { return newZlibWriter() }, + }, + } +} + +func (s *SyncPoolCompessors) AcquireGzipWriter() *gzip.Writer { + return s.GzipWriterPool.Get().(*gzip.Writer) +} + +func (s *SyncPoolCompessors) ReleaseGzipWriter(w *gzip.Writer) { + s.GzipWriterPool.Put(w) +} + +func (s *SyncPoolCompessors) AcquireGzipReader() *gzip.Reader { + return s.GzipReaderPool.Get().(*gzip.Reader) +} + +func (s *SyncPoolCompessors) ReleaseGzipReader(r *gzip.Reader) { + s.GzipReaderPool.Put(r) +} + +func (s *SyncPoolCompessors) AcquireZlibWriter() *zlib.Writer { + return s.ZlibWriterPool.Get().(*zlib.Writer) +} + +func (s *SyncPoolCompessors) ReleaseZlibWriter(w *zlib.Writer) { + s.ZlibWriterPool.Put(w) +} + +func newGzipWriter() *gzip.Writer { + // create with an empty bytes writer; it will be replaced before using the gzipWriter + writer, err := gzip.NewWriterLevel(new(bytes.Buffer), gzip.BestSpeed) + if err != nil { + panic(err.Error()) + } + return writer +} + +func newGzipReader() *gzip.Reader { + // create with an empty reader (but with GZIP header); it will be replaced before using the gzipReader + // we can safely use currentCompressProvider because it is set on package initialization. + w := currentCompressorProvider.AcquireGzipWriter() + defer currentCompressorProvider.ReleaseGzipWriter(w) + b := new(bytes.Buffer) + w.Reset(b) + w.Flush() + w.Close() + reader, err := gzip.NewReader(bytes.NewReader(b.Bytes())) + if err != nil { + panic(err.Error()) + } + return reader +} + +func newZlibWriter() *zlib.Writer { + writer, err := zlib.NewWriterLevel(new(bytes.Buffer), gzip.BestSpeed) + if err != nil { + panic(err.Error()) + } + return writer +} diff --git a/vendor/github.com/emicklei/go-restful/compressors.go b/vendor/github.com/emicklei/go-restful/compressors.go new file mode 100644 index 000000000..cb32f7ef5 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compressors.go @@ -0,0 +1,54 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "compress/gzip" + "compress/zlib" +) + +// CompressorProvider describes a component that can provider compressors for the std methods. +type CompressorProvider interface { + // Returns a *gzip.Writer which needs to be released later. + // Before using it, call Reset(). + AcquireGzipWriter() *gzip.Writer + + // Releases an aqcuired *gzip.Writer. + ReleaseGzipWriter(w *gzip.Writer) + + // Returns a *gzip.Reader which needs to be released later. + AcquireGzipReader() *gzip.Reader + + // Releases an aqcuired *gzip.Reader. + ReleaseGzipReader(w *gzip.Reader) + + // Returns a *zlib.Writer which needs to be released later. + // Before using it, call Reset(). + AcquireZlibWriter() *zlib.Writer + + // Releases an aqcuired *zlib.Writer. + ReleaseZlibWriter(w *zlib.Writer) +} + +// DefaultCompressorProvider is the actual provider of compressors (zlib or gzip). +var currentCompressorProvider CompressorProvider + +func init() { + currentCompressorProvider = NewSyncPoolCompessors() +} + +// CurrentCompressorProvider returns the current CompressorProvider. +// It is initialized using a SyncPoolCompessors. +func CurrentCompressorProvider() CompressorProvider { + return currentCompressorProvider +} + +// CompressorProvider sets the actual provider of compressors (zlib or gzip). +func SetCompressorProvider(p CompressorProvider) { + if p == nil { + panic("cannot set compressor provider to nil") + } + currentCompressorProvider = p +} diff --git a/vendor/github.com/emicklei/go-restful/constants.go b/vendor/github.com/emicklei/go-restful/constants.go new file mode 100644 index 000000000..203439c5e --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/constants.go @@ -0,0 +1,30 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +const ( + MIME_XML = "application/xml" // Accept or Content-Type used in Consumes() and/or Produces() + MIME_JSON = "application/json" // Accept or Content-Type used in Consumes() and/or Produces() + MIME_OCTET = "application/octet-stream" // If Content-Type is not present in request, use the default + + HEADER_Allow = "Allow" + HEADER_Accept = "Accept" + HEADER_Origin = "Origin" + HEADER_ContentType = "Content-Type" + HEADER_LastModified = "Last-Modified" + HEADER_AcceptEncoding = "Accept-Encoding" + HEADER_ContentEncoding = "Content-Encoding" + HEADER_AccessControlExposeHeaders = "Access-Control-Expose-Headers" + HEADER_AccessControlRequestMethod = "Access-Control-Request-Method" + HEADER_AccessControlRequestHeaders = "Access-Control-Request-Headers" + HEADER_AccessControlAllowMethods = "Access-Control-Allow-Methods" + HEADER_AccessControlAllowOrigin = "Access-Control-Allow-Origin" + HEADER_AccessControlAllowCredentials = "Access-Control-Allow-Credentials" + HEADER_AccessControlAllowHeaders = "Access-Control-Allow-Headers" + HEADER_AccessControlMaxAge = "Access-Control-Max-Age" + + ENCODING_GZIP = "gzip" + ENCODING_DEFLATE = "deflate" +) diff --git a/vendor/github.com/emicklei/go-restful/container.go b/vendor/github.com/emicklei/go-restful/container.go new file mode 100644 index 000000000..657d5b6dd --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/container.go @@ -0,0 +1,366 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "errors" + "fmt" + "net/http" + "os" + "runtime" + "strings" + "sync" + + "github.com/emicklei/go-restful/log" +) + +// Container holds a collection of WebServices and a http.ServeMux to dispatch http requests. +// The requests are further dispatched to routes of WebServices using a RouteSelector +type Container struct { + webServicesLock sync.RWMutex + webServices []*WebService + ServeMux *http.ServeMux + isRegisteredOnRoot bool + containerFilters []FilterFunction + doNotRecover bool // default is true + recoverHandleFunc RecoverHandleFunction + serviceErrorHandleFunc ServiceErrorHandleFunction + router RouteSelector // default is a CurlyRouter (RouterJSR311 is a slower alternative) + contentEncodingEnabled bool // default is false +} + +// NewContainer creates a new Container using a new ServeMux and default router (CurlyRouter) +func NewContainer() *Container { + return &Container{ + webServices: []*WebService{}, + ServeMux: http.NewServeMux(), + isRegisteredOnRoot: false, + containerFilters: []FilterFunction{}, + doNotRecover: true, + recoverHandleFunc: logStackOnRecover, + serviceErrorHandleFunc: writeServiceError, + router: CurlyRouter{}, + contentEncodingEnabled: false} +} + +// RecoverHandleFunction declares functions that can be used to handle a panic situation. +// The first argument is what recover() returns. The second must be used to communicate an error response. +type RecoverHandleFunction func(interface{}, http.ResponseWriter) + +// RecoverHandler changes the default function (logStackOnRecover) to be called +// when a panic is detected. DoNotRecover must be have its default value (=false). +func (c *Container) RecoverHandler(handler RecoverHandleFunction) { + c.recoverHandleFunc = handler +} + +// ServiceErrorHandleFunction declares functions that can be used to handle a service error situation. +// The first argument is the service error, the second is the request that resulted in the error and +// the third must be used to communicate an error response. +type ServiceErrorHandleFunction func(ServiceError, *Request, *Response) + +// ServiceErrorHandler changes the default function (writeServiceError) to be called +// when a ServiceError is detected. +func (c *Container) ServiceErrorHandler(handler ServiceErrorHandleFunction) { + c.serviceErrorHandleFunc = handler +} + +// DoNotRecover controls whether panics will be caught to return HTTP 500. +// If set to true, Route functions are responsible for handling any error situation. +// Default value is true. +func (c *Container) DoNotRecover(doNot bool) { + c.doNotRecover = doNot +} + +// Router changes the default Router (currently CurlyRouter) +func (c *Container) Router(aRouter RouteSelector) { + c.router = aRouter +} + +// EnableContentEncoding (default=false) allows for GZIP or DEFLATE encoding of responses. +func (c *Container) EnableContentEncoding(enabled bool) { + c.contentEncodingEnabled = enabled +} + +// Add a WebService to the Container. It will detect duplicate root paths and exit in that case. +func (c *Container) Add(service *WebService) *Container { + c.webServicesLock.Lock() + defer c.webServicesLock.Unlock() + + // if rootPath was not set then lazy initialize it + if len(service.rootPath) == 0 { + service.Path("/") + } + + // cannot have duplicate root paths + for _, each := range c.webServices { + if each.RootPath() == service.RootPath() { + log.Printf("[restful] WebService with duplicate root path detected:['%v']", each) + os.Exit(1) + } + } + + // If not registered on root then add specific mapping + if !c.isRegisteredOnRoot { + c.isRegisteredOnRoot = c.addHandler(service, c.ServeMux) + } + c.webServices = append(c.webServices, service) + return c +} + +// addHandler may set a new HandleFunc for the serveMux +// this function must run inside the critical region protected by the webServicesLock. +// returns true if the function was registered on root ("/") +func (c *Container) addHandler(service *WebService, serveMux *http.ServeMux) bool { + pattern := fixedPrefixPath(service.RootPath()) + // check if root path registration is needed + if "/" == pattern || "" == pattern { + serveMux.HandleFunc("/", c.dispatch) + return true + } + // detect if registration already exists + alreadyMapped := false + for _, each := range c.webServices { + if each.RootPath() == service.RootPath() { + alreadyMapped = true + break + } + } + if !alreadyMapped { + serveMux.HandleFunc(pattern, c.dispatch) + if !strings.HasSuffix(pattern, "/") { + serveMux.HandleFunc(pattern+"/", c.dispatch) + } + } + return false +} + +func (c *Container) Remove(ws *WebService) error { + if c.ServeMux == http.DefaultServeMux { + errMsg := fmt.Sprintf("[restful] cannot remove a WebService from a Container using the DefaultServeMux: ['%v']", ws) + log.Printf(errMsg) + return errors.New(errMsg) + } + c.webServicesLock.Lock() + defer c.webServicesLock.Unlock() + // build a new ServeMux and re-register all WebServices + newServeMux := http.NewServeMux() + newServices := []*WebService{} + newIsRegisteredOnRoot := false + for _, each := range c.webServices { + if each.rootPath != ws.rootPath { + // If not registered on root then add specific mapping + if !newIsRegisteredOnRoot { + newIsRegisteredOnRoot = c.addHandler(each, newServeMux) + } + newServices = append(newServices, each) + } + } + c.webServices, c.ServeMux, c.isRegisteredOnRoot = newServices, newServeMux, newIsRegisteredOnRoot + return nil +} + +// logStackOnRecover is the default RecoverHandleFunction and is called +// when DoNotRecover is false and the recoverHandleFunc is not set for the container. +// Default implementation logs the stacktrace and writes the stacktrace on the response. +// This may be a security issue as it exposes sourcecode information. +func logStackOnRecover(panicReason interface{}, httpWriter http.ResponseWriter) { + var buffer bytes.Buffer + buffer.WriteString(fmt.Sprintf("[restful] recover from panic situation: - %v\r\n", panicReason)) + for i := 2; ; i += 1 { + _, file, line, ok := runtime.Caller(i) + if !ok { + break + } + buffer.WriteString(fmt.Sprintf(" %s:%d\r\n", file, line)) + } + log.Print(buffer.String()) + httpWriter.WriteHeader(http.StatusInternalServerError) + httpWriter.Write(buffer.Bytes()) +} + +// writeServiceError is the default ServiceErrorHandleFunction and is called +// when a ServiceError is returned during route selection. Default implementation +// calls resp.WriteErrorString(err.Code, err.Message) +func writeServiceError(err ServiceError, req *Request, resp *Response) { + resp.WriteErrorString(err.Code, err.Message) +} + +// Dispatch the incoming Http Request to a matching WebService. +func (c *Container) Dispatch(httpWriter http.ResponseWriter, httpRequest *http.Request) { + if httpWriter == nil { + panic("httpWriter cannot be nil") + } + if httpRequest == nil { + panic("httpRequest cannot be nil") + } + c.dispatch(httpWriter, httpRequest) +} + +// Dispatch the incoming Http Request to a matching WebService. +func (c *Container) dispatch(httpWriter http.ResponseWriter, httpRequest *http.Request) { + writer := httpWriter + + // CompressingResponseWriter should be closed after all operations are done + defer func() { + if compressWriter, ok := writer.(*CompressingResponseWriter); ok { + compressWriter.Close() + } + }() + + // Instal panic recovery unless told otherwise + if !c.doNotRecover { // catch all for 500 response + defer func() { + if r := recover(); r != nil { + c.recoverHandleFunc(r, writer) + return + } + }() + } + + // Detect if compression is needed + // assume without compression, test for override + if c.contentEncodingEnabled { + doCompress, encoding := wantsCompressedResponse(httpRequest) + if doCompress { + var err error + writer, err = NewCompressingResponseWriter(httpWriter, encoding) + if err != nil { + log.Print("[restful] unable to install compressor: ", err) + httpWriter.WriteHeader(http.StatusInternalServerError) + return + } + } + } + // Find best match Route ; err is non nil if no match was found + var webService *WebService + var route *Route + var err error + func() { + c.webServicesLock.RLock() + defer c.webServicesLock.RUnlock() + webService, route, err = c.router.SelectRoute( + c.webServices, + httpRequest) + }() + if err != nil { + // a non-200 response has already been written + // run container filters anyway ; they should not touch the response... + chain := FilterChain{Filters: c.containerFilters, Target: func(req *Request, resp *Response) { + switch err.(type) { + case ServiceError: + ser := err.(ServiceError) + c.serviceErrorHandleFunc(ser, req, resp) + } + // TODO + }} + chain.ProcessFilter(NewRequest(httpRequest), NewResponse(writer)) + return + } + wrappedRequest, wrappedResponse := route.wrapRequestResponse(writer, httpRequest) + // pass through filters (if any) + if len(c.containerFilters)+len(webService.filters)+len(route.Filters) > 0 { + // compose filter chain + allFilters := []FilterFunction{} + allFilters = append(allFilters, c.containerFilters...) + allFilters = append(allFilters, webService.filters...) + allFilters = append(allFilters, route.Filters...) + chain := FilterChain{Filters: allFilters, Target: func(req *Request, resp *Response) { + // handle request by route after passing all filters + route.Function(wrappedRequest, wrappedResponse) + }} + chain.ProcessFilter(wrappedRequest, wrappedResponse) + } else { + // no filters, handle request by route + route.Function(wrappedRequest, wrappedResponse) + } +} + +// fixedPrefixPath returns the fixed part of the partspec ; it may include template vars {} +func fixedPrefixPath(pathspec string) string { + varBegin := strings.Index(pathspec, "{") + if -1 == varBegin { + return pathspec + } + return pathspec[:varBegin] +} + +// ServeHTTP implements net/http.Handler therefore a Container can be a Handler in a http.Server +func (c *Container) ServeHTTP(httpwriter http.ResponseWriter, httpRequest *http.Request) { + c.ServeMux.ServeHTTP(httpwriter, httpRequest) +} + +// Handle registers the handler for the given pattern. If a handler already exists for pattern, Handle panics. +func (c *Container) Handle(pattern string, handler http.Handler) { + c.ServeMux.Handle(pattern, handler) +} + +// HandleWithFilter registers the handler for the given pattern. +// Container's filter chain is applied for handler. +// If a handler already exists for pattern, HandleWithFilter panics. +func (c *Container) HandleWithFilter(pattern string, handler http.Handler) { + f := func(httpResponse http.ResponseWriter, httpRequest *http.Request) { + if len(c.containerFilters) == 0 { + handler.ServeHTTP(httpResponse, httpRequest) + return + } + + chain := FilterChain{Filters: c.containerFilters, Target: func(req *Request, resp *Response) { + handler.ServeHTTP(httpResponse, httpRequest) + }} + chain.ProcessFilter(NewRequest(httpRequest), NewResponse(httpResponse)) + } + + c.Handle(pattern, http.HandlerFunc(f)) +} + +// Filter appends a container FilterFunction. These are called before dispatching +// a http.Request to a WebService from the container +func (c *Container) Filter(filter FilterFunction) { + c.containerFilters = append(c.containerFilters, filter) +} + +// RegisteredWebServices returns the collections of added WebServices +func (c *Container) RegisteredWebServices() []*WebService { + c.webServicesLock.RLock() + defer c.webServicesLock.RUnlock() + result := make([]*WebService, len(c.webServices)) + for ix := range c.webServices { + result[ix] = c.webServices[ix] + } + return result +} + +// computeAllowedMethods returns a list of HTTP methods that are valid for a Request +func (c *Container) computeAllowedMethods(req *Request) []string { + // Go through all RegisteredWebServices() and all its Routes to collect the options + methods := []string{} + requestPath := req.Request.URL.Path + for _, ws := range c.RegisteredWebServices() { + matches := ws.pathExpr.Matcher.FindStringSubmatch(requestPath) + if matches != nil { + finalMatch := matches[len(matches)-1] + for _, rt := range ws.Routes() { + matches := rt.pathExpr.Matcher.FindStringSubmatch(finalMatch) + if matches != nil { + lastMatch := matches[len(matches)-1] + if lastMatch == "" || lastMatch == "/" { // do not include if value is neither empty nor ‘/’. + methods = append(methods, rt.Method) + } + } + } + } + } + // methods = append(methods, "OPTIONS") not sure about this + return methods +} + +// newBasicRequestResponse creates a pair of Request,Response from its http versions. +// It is basic because no parameter or (produces) content-type information is given. +func newBasicRequestResponse(httpWriter http.ResponseWriter, httpRequest *http.Request) (*Request, *Response) { + resp := NewResponse(httpWriter) + resp.requestAccept = httpRequest.Header.Get(HEADER_Accept) + return NewRequest(httpRequest), resp +} diff --git a/vendor/github.com/emicklei/go-restful/container_test.go b/vendor/github.com/emicklei/go-restful/container_test.go new file mode 100644 index 000000000..491c793ab --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/container_test.go @@ -0,0 +1,83 @@ +package restful + +import ( + "net/http" + "net/http/httptest" + "testing" +) + +// go test -v -test.run TestContainer_computeAllowedMethods ...restful +func TestContainer_computeAllowedMethods(t *testing.T) { + wc := NewContainer() + ws1 := new(WebService).Path("/users") + ws1.Route(ws1.GET("{i}").To(dummy)) + ws1.Route(ws1.POST("{i}").To(dummy)) + wc.Add(ws1) + httpRequest, _ := http.NewRequest("GET", "http://api.his.com/users/1", nil) + rreq := Request{Request: httpRequest} + m := wc.computeAllowedMethods(&rreq) + if len(m) != 2 { + t.Errorf("got %d expected 2 methods, %v", len(m), m) + } +} + +func TestContainer_HandleWithFilter(t *testing.T) { + prefilterCalled := false + postfilterCalled := false + httpHandlerCalled := false + + wc := NewContainer() + wc.Filter(func(request *Request, response *Response, chain *FilterChain) { + prefilterCalled = true + chain.ProcessFilter(request, response) + }) + wc.HandleWithFilter("/", http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + httpHandlerCalled = true + w.Write([]byte("ok")) + })) + wc.Filter(func(request *Request, response *Response, chain *FilterChain) { + postfilterCalled = true + chain.ProcessFilter(request, response) + }) + + recorder := httptest.NewRecorder() + request, _ := http.NewRequest("GET", "/", nil) + wc.ServeHTTP(recorder, request) + if recorder.Code != http.StatusOK { + t.Errorf("unexpected code %d", recorder.Code) + } + if recorder.Body.String() != "ok" { + t.Errorf("unexpected body %s", recorder.Body.String()) + } + if !prefilterCalled { + t.Errorf("filter added before calling HandleWithFilter wasn't called") + } + if !postfilterCalled { + t.Errorf("filter added after calling HandleWithFilter wasn't called") + } + if !httpHandlerCalled { + t.Errorf("handler added by calling HandleWithFilter wasn't called") + } +} + +func TestContainerAddAndRemove(t *testing.T) { + ws1 := new(WebService).Path("/") + ws2 := new(WebService).Path("/users") + wc := NewContainer() + wc.Add(ws1) + wc.Add(ws2) + wc.Remove(ws2) + if len(wc.webServices) != 1 { + t.Errorf("expected one webservices") + } + if !wc.isRegisteredOnRoot { + t.Errorf("expected on root registered") + } + wc.Remove(ws1) + if len(wc.webServices) > 0 { + t.Errorf("expected zero webservices") + } + if wc.isRegisteredOnRoot { + t.Errorf("expected not on root registered") + } +} diff --git a/vendor/github.com/emicklei/go-restful/cors_filter.go b/vendor/github.com/emicklei/go-restful/cors_filter.go new file mode 100644 index 000000000..1efeef072 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/cors_filter.go @@ -0,0 +1,202 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "regexp" + "strconv" + "strings" +) + +// CrossOriginResourceSharing is used to create a Container Filter that implements CORS. +// Cross-origin resource sharing (CORS) is a mechanism that allows JavaScript on a web page +// to make XMLHttpRequests to another domain, not the domain the JavaScript originated from. +// +// http://en.wikipedia.org/wiki/Cross-origin_resource_sharing +// http://enable-cors.org/server.html +// http://www.html5rocks.com/en/tutorials/cors/#toc-handling-a-not-so-simple-request +type CrossOriginResourceSharing struct { + ExposeHeaders []string // list of Header names + AllowedHeaders []string // list of Header names + AllowedDomains []string // list of allowed values for Http Origin. An allowed value can be a regular expression to support subdomain matching. If empty all are allowed. + AllowedMethods []string + MaxAge int // number of seconds before requiring new Options request + CookiesAllowed bool + Container *Container + + allowedOriginPatterns []*regexp.Regexp // internal field for origin regexp check. +} + +// Filter is a filter function that implements the CORS flow as documented on http://enable-cors.org/server.html +// and http://www.html5rocks.com/static/images/cors_server_flowchart.png +func (c CrossOriginResourceSharing) Filter(req *Request, resp *Response, chain *FilterChain) { + origin := req.Request.Header.Get(HEADER_Origin) + if len(origin) == 0 { + if trace { + traceLogger.Print("no Http header Origin set") + } + chain.ProcessFilter(req, resp) + return + } + if !c.isOriginAllowed(origin) { // check whether this origin is allowed + if trace { + traceLogger.Printf("HTTP Origin:%s is not part of %v, neither matches any part of %v", origin, c.AllowedDomains, c.allowedOriginPatterns) + } + chain.ProcessFilter(req, resp) + return + } + if req.Request.Method != "OPTIONS" { + c.doActualRequest(req, resp) + chain.ProcessFilter(req, resp) + return + } + if acrm := req.Request.Header.Get(HEADER_AccessControlRequestMethod); acrm != "" { + c.doPreflightRequest(req, resp) + } else { + c.doActualRequest(req, resp) + chain.ProcessFilter(req, resp) + return + } +} + +func (c CrossOriginResourceSharing) doActualRequest(req *Request, resp *Response) { + c.setOptionsHeaders(req, resp) + // continue processing the response +} + +func (c *CrossOriginResourceSharing) doPreflightRequest(req *Request, resp *Response) { + if len(c.AllowedMethods) == 0 { + if c.Container == nil { + c.AllowedMethods = DefaultContainer.computeAllowedMethods(req) + } else { + c.AllowedMethods = c.Container.computeAllowedMethods(req) + } + } + + acrm := req.Request.Header.Get(HEADER_AccessControlRequestMethod) + if !c.isValidAccessControlRequestMethod(acrm, c.AllowedMethods) { + if trace { + traceLogger.Printf("Http header %s:%s is not in %v", + HEADER_AccessControlRequestMethod, + acrm, + c.AllowedMethods) + } + return + } + acrhs := req.Request.Header.Get(HEADER_AccessControlRequestHeaders) + if len(acrhs) > 0 { + for _, each := range strings.Split(acrhs, ",") { + if !c.isValidAccessControlRequestHeader(strings.Trim(each, " ")) { + if trace { + traceLogger.Printf("Http header %s:%s is not in %v", + HEADER_AccessControlRequestHeaders, + acrhs, + c.AllowedHeaders) + } + return + } + } + } + resp.AddHeader(HEADER_AccessControlAllowMethods, strings.Join(c.AllowedMethods, ",")) + resp.AddHeader(HEADER_AccessControlAllowHeaders, acrhs) + c.setOptionsHeaders(req, resp) + + // return http 200 response, no body +} + +func (c CrossOriginResourceSharing) setOptionsHeaders(req *Request, resp *Response) { + c.checkAndSetExposeHeaders(resp) + c.setAllowOriginHeader(req, resp) + c.checkAndSetAllowCredentials(resp) + if c.MaxAge > 0 { + resp.AddHeader(HEADER_AccessControlMaxAge, strconv.Itoa(c.MaxAge)) + } +} + +func (c CrossOriginResourceSharing) isOriginAllowed(origin string) bool { + if len(origin) == 0 { + return false + } + if len(c.AllowedDomains) == 0 { + return true + } + + allowed := false + for _, domain := range c.AllowedDomains { + if domain == origin { + allowed = true + break + } + } + + if !allowed { + if len(c.allowedOriginPatterns) == 0 { + // compile allowed domains to allowed origin patterns + allowedOriginRegexps, err := compileRegexps(c.AllowedDomains) + if err != nil { + return false + } + c.allowedOriginPatterns = allowedOriginRegexps + } + + for _, pattern := range c.allowedOriginPatterns { + if allowed = pattern.MatchString(origin); allowed { + break + } + } + } + + return allowed +} + +func (c CrossOriginResourceSharing) setAllowOriginHeader(req *Request, resp *Response) { + origin := req.Request.Header.Get(HEADER_Origin) + if c.isOriginAllowed(origin) { + resp.AddHeader(HEADER_AccessControlAllowOrigin, origin) + } +} + +func (c CrossOriginResourceSharing) checkAndSetExposeHeaders(resp *Response) { + if len(c.ExposeHeaders) > 0 { + resp.AddHeader(HEADER_AccessControlExposeHeaders, strings.Join(c.ExposeHeaders, ",")) + } +} + +func (c CrossOriginResourceSharing) checkAndSetAllowCredentials(resp *Response) { + if c.CookiesAllowed { + resp.AddHeader(HEADER_AccessControlAllowCredentials, "true") + } +} + +func (c CrossOriginResourceSharing) isValidAccessControlRequestMethod(method string, allowedMethods []string) bool { + for _, each := range allowedMethods { + if each == method { + return true + } + } + return false +} + +func (c CrossOriginResourceSharing) isValidAccessControlRequestHeader(header string) bool { + for _, each := range c.AllowedHeaders { + if strings.ToLower(each) == strings.ToLower(header) { + return true + } + } + return false +} + +// Take a list of strings and compile them into a list of regular expressions. +func compileRegexps(regexpStrings []string) ([]*regexp.Regexp, error) { + regexps := []*regexp.Regexp{} + for _, regexpStr := range regexpStrings { + r, err := regexp.Compile(regexpStr) + if err != nil { + return regexps, err + } + regexps = append(regexps, r) + } + return regexps, nil +} diff --git a/vendor/github.com/emicklei/go-restful/cors_filter_test.go b/vendor/github.com/emicklei/go-restful/cors_filter_test.go new file mode 100644 index 000000000..09c5d3300 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/cors_filter_test.go @@ -0,0 +1,129 @@ +package restful + +import ( + "net/http" + "net/http/httptest" + "testing" +) + +// go test -v -test.run TestCORSFilter_Preflight ...restful +// http://www.html5rocks.com/en/tutorials/cors/#toc-handling-a-not-so-simple-request +func TestCORSFilter_Preflight(t *testing.T) { + tearDown() + ws := new(WebService) + ws.Route(ws.PUT("/cors").To(dummy)) + Add(ws) + + cors := CrossOriginResourceSharing{ + ExposeHeaders: []string{"X-Custom-Header"}, + AllowedHeaders: []string{"X-Custom-Header", "X-Additional-Header"}, + CookiesAllowed: true, + Container: DefaultContainer} + Filter(cors.Filter) + + // Preflight + httpRequest, _ := http.NewRequest("OPTIONS", "http://api.alice.com/cors", nil) + httpRequest.Method = "OPTIONS" + httpRequest.Header.Set(HEADER_Origin, "http://api.bob.com") + httpRequest.Header.Set(HEADER_AccessControlRequestMethod, "PUT") + httpRequest.Header.Set(HEADER_AccessControlRequestHeaders, "X-Custom-Header, X-Additional-Header") + + httpWriter := httptest.NewRecorder() + DefaultContainer.Dispatch(httpWriter, httpRequest) + + actual := httpWriter.Header().Get(HEADER_AccessControlAllowOrigin) + if "http://api.bob.com" != actual { + t.Fatal("expected: http://api.bob.com but got:" + actual) + } + actual = httpWriter.Header().Get(HEADER_AccessControlAllowMethods) + if "PUT" != actual { + t.Fatal("expected: PUT but got:" + actual) + } + actual = httpWriter.Header().Get(HEADER_AccessControlAllowHeaders) + if "X-Custom-Header, X-Additional-Header" != actual { + t.Fatal("expected: X-Custom-Header, X-Additional-Header but got:" + actual) + } + + if !cors.isOriginAllowed("somewhere") { + t.Fatal("origin expected to be allowed") + } + cors.AllowedDomains = []string{"overthere.com"} + if cors.isOriginAllowed("somewhere") { + t.Fatal("origin [somewhere] expected NOT to be allowed") + } + if !cors.isOriginAllowed("overthere.com") { + t.Fatal("origin [overthere] expected to be allowed") + } + +} + +// go test -v -test.run TestCORSFilter_Actual ...restful +// http://www.html5rocks.com/en/tutorials/cors/#toc-handling-a-not-so-simple-request +func TestCORSFilter_Actual(t *testing.T) { + tearDown() + ws := new(WebService) + ws.Route(ws.PUT("/cors").To(dummy)) + Add(ws) + + cors := CrossOriginResourceSharing{ + ExposeHeaders: []string{"X-Custom-Header"}, + AllowedHeaders: []string{"X-Custom-Header", "X-Additional-Header"}, + CookiesAllowed: true, + Container: DefaultContainer} + Filter(cors.Filter) + + // Actual + httpRequest, _ := http.NewRequest("PUT", "http://api.alice.com/cors", nil) + httpRequest.Header.Set(HEADER_Origin, "http://api.bob.com") + httpRequest.Header.Set("X-Custom-Header", "value") + + httpWriter := httptest.NewRecorder() + DefaultContainer.Dispatch(httpWriter, httpRequest) + actual := httpWriter.Header().Get(HEADER_AccessControlAllowOrigin) + if "http://api.bob.com" != actual { + t.Fatal("expected: http://api.bob.com but got:" + actual) + } + if httpWriter.Body.String() != "dummy" { + t.Fatal("expected: dummy but got:" + httpWriter.Body.String()) + } +} + +var allowedDomainInput = []struct { + domains []string + origin string + allowed bool +}{ + {[]string{}, "http://anything.com", true}, + {[]string{"example.com"}, "example.com", true}, + {[]string{"example.com"}, "not-allowed", false}, + {[]string{"not-matching.com", "example.com"}, "example.com", true}, + {[]string{".*"}, "example.com", true}, +} + +// go test -v -test.run TestCORSFilter_AllowedDomains ...restful +func TestCORSFilter_AllowedDomains(t *testing.T) { + for _, each := range allowedDomainInput { + tearDown() + ws := new(WebService) + ws.Route(ws.PUT("/cors").To(dummy)) + Add(ws) + + cors := CrossOriginResourceSharing{ + AllowedDomains: each.domains, + CookiesAllowed: true, + Container: DefaultContainer} + Filter(cors.Filter) + + httpRequest, _ := http.NewRequest("PUT", "http://api.his.com/cors", nil) + httpRequest.Header.Set(HEADER_Origin, each.origin) + httpWriter := httptest.NewRecorder() + DefaultContainer.Dispatch(httpWriter, httpRequest) + actual := httpWriter.Header().Get(HEADER_AccessControlAllowOrigin) + if actual != each.origin && each.allowed { + t.Fatal("expected to be accepted") + } + if actual == each.origin && !each.allowed { + t.Fatal("did not expect to be accepted") + } + } +} diff --git a/vendor/github.com/emicklei/go-restful/coverage.sh b/vendor/github.com/emicklei/go-restful/coverage.sh new file mode 100644 index 000000000..e27dbf1a9 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/coverage.sh @@ -0,0 +1,2 @@ +go test -coverprofile=coverage.out +go tool cover -html=coverage.out \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/curly.go b/vendor/github.com/emicklei/go-restful/curly.go new file mode 100644 index 000000000..79f1f5aa2 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/curly.go @@ -0,0 +1,164 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "net/http" + "regexp" + "sort" + "strings" +) + +// CurlyRouter expects Routes with paths that contain zero or more parameters in curly brackets. +type CurlyRouter struct{} + +// SelectRoute is part of the Router interface and returns the best match +// for the WebService and its Route for the given Request. +func (c CurlyRouter) SelectRoute( + webServices []*WebService, + httpRequest *http.Request) (selectedService *WebService, selected *Route, err error) { + + requestTokens := tokenizePath(httpRequest.URL.Path) + + detectedService := c.detectWebService(requestTokens, webServices) + if detectedService == nil { + if trace { + traceLogger.Printf("no WebService was found to match URL path:%s\n", httpRequest.URL.Path) + } + return nil, nil, NewError(http.StatusNotFound, "404: Page Not Found") + } + candidateRoutes := c.selectRoutes(detectedService, requestTokens) + if len(candidateRoutes) == 0 { + if trace { + traceLogger.Printf("no Route in WebService with path %s was found to match URL path:%s\n", detectedService.rootPath, httpRequest.URL.Path) + } + return detectedService, nil, NewError(http.StatusNotFound, "404: Page Not Found") + } + selectedRoute, err := c.detectRoute(candidateRoutes, httpRequest) + if selectedRoute == nil { + return detectedService, nil, err + } + return detectedService, selectedRoute, nil +} + +// selectRoutes return a collection of Route from a WebService that matches the path tokens from the request. +func (c CurlyRouter) selectRoutes(ws *WebService, requestTokens []string) sortableCurlyRoutes { + candidates := sortableCurlyRoutes{} + for _, each := range ws.routes { + matches, paramCount, staticCount := c.matchesRouteByPathTokens(each.pathParts, requestTokens) + if matches { + candidates.add(curlyRoute{each, paramCount, staticCount}) // TODO make sure Routes() return pointers? + } + } + sort.Sort(sort.Reverse(candidates)) + return candidates +} + +// matchesRouteByPathTokens computes whether it matches, howmany parameters do match and what the number of static path elements are. +func (c CurlyRouter) matchesRouteByPathTokens(routeTokens, requestTokens []string) (matches bool, paramCount int, staticCount int) { + if len(routeTokens) < len(requestTokens) { + // proceed in matching only if last routeToken is wildcard + count := len(routeTokens) + if count == 0 || !strings.HasSuffix(routeTokens[count-1], "*}") { + return false, 0, 0 + } + // proceed + } + for i, routeToken := range routeTokens { + if i == len(requestTokens) { + // reached end of request path + return false, 0, 0 + } + requestToken := requestTokens[i] + if strings.HasPrefix(routeToken, "{") { + paramCount++ + if colon := strings.Index(routeToken, ":"); colon != -1 { + // match by regex + matchesToken, matchesRemainder := c.regularMatchesPathToken(routeToken, colon, requestToken) + if !matchesToken { + return false, 0, 0 + } + if matchesRemainder { + break + } + } + } else { // no { prefix + if requestToken != routeToken { + return false, 0, 0 + } + staticCount++ + } + } + return true, paramCount, staticCount +} + +// regularMatchesPathToken tests whether the regular expression part of routeToken matches the requestToken or all remaining tokens +// format routeToken is {someVar:someExpression}, e.g. {zipcode:[\d][\d][\d][\d][A-Z][A-Z]} +func (c CurlyRouter) regularMatchesPathToken(routeToken string, colon int, requestToken string) (matchesToken bool, matchesRemainder bool) { + regPart := routeToken[colon+1 : len(routeToken)-1] + if regPart == "*" { + if trace { + traceLogger.Printf("wildcard parameter detected in route token %s that matches %s\n", routeToken, requestToken) + } + return true, true + } + matched, err := regexp.MatchString(regPart, requestToken) + return (matched && err == nil), false +} + +var jsr311Router = RouterJSR311{} + +// detectRoute selectes from a list of Route the first match by inspecting both the Accept and Content-Type +// headers of the Request. See also RouterJSR311 in jsr311.go +func (c CurlyRouter) detectRoute(candidateRoutes sortableCurlyRoutes, httpRequest *http.Request) (*Route, error) { + // tracing is done inside detectRoute + return jsr311Router.detectRoute(candidateRoutes.routes(), httpRequest) +} + +// detectWebService returns the best matching webService given the list of path tokens. +// see also computeWebserviceScore +func (c CurlyRouter) detectWebService(requestTokens []string, webServices []*WebService) *WebService { + var best *WebService + score := -1 + for _, each := range webServices { + matches, eachScore := c.computeWebserviceScore(requestTokens, each.pathExpr.tokens) + if matches && (eachScore > score) { + best = each + score = eachScore + } + } + return best +} + +// computeWebserviceScore returns whether tokens match and +// the weighted score of the longest matching consecutive tokens from the beginning. +func (c CurlyRouter) computeWebserviceScore(requestTokens []string, tokens []string) (bool, int) { + if len(tokens) > len(requestTokens) { + return false, 0 + } + score := 0 + for i := 0; i < len(tokens); i++ { + each := requestTokens[i] + other := tokens[i] + if len(each) == 0 && len(other) == 0 { + score++ + continue + } + if len(other) > 0 && strings.HasPrefix(other, "{") { + // no empty match + if len(each) == 0 { + return false, score + } + score += 1 + } else { + // not a parameter + if each != other { + return false, score + } + score += (len(tokens) - i) * 10 //fuzzy + } + } + return true, score +} diff --git a/vendor/github.com/emicklei/go-restful/curly_route.go b/vendor/github.com/emicklei/go-restful/curly_route.go new file mode 100644 index 000000000..296f94650 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/curly_route.go @@ -0,0 +1,52 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// curlyRoute exits for sorting Routes by the CurlyRouter based on number of parameters and number of static path elements. +type curlyRoute struct { + route Route + paramCount int + staticCount int +} + +type sortableCurlyRoutes []curlyRoute + +func (s *sortableCurlyRoutes) add(route curlyRoute) { + *s = append(*s, route) +} + +func (s sortableCurlyRoutes) routes() (routes []Route) { + for _, each := range s { + routes = append(routes, each.route) // TODO change return type + } + return routes +} + +func (s sortableCurlyRoutes) Len() int { + return len(s) +} +func (s sortableCurlyRoutes) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} +func (s sortableCurlyRoutes) Less(i, j int) bool { + ci := s[i] + cj := s[j] + + // primary key + if ci.staticCount < cj.staticCount { + return true + } + if ci.staticCount > cj.staticCount { + return false + } + // secundary key + if ci.paramCount < cj.paramCount { + return true + } + if ci.paramCount > cj.paramCount { + return false + } + return ci.route.Path < cj.route.Path +} diff --git a/vendor/github.com/emicklei/go-restful/curly_test.go b/vendor/github.com/emicklei/go-restful/curly_test.go new file mode 100644 index 000000000..bec017ca7 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/curly_test.go @@ -0,0 +1,231 @@ +package restful + +import ( + "io" + "net/http" + "testing" +) + +var requestPaths = []struct { + // url with path (1) is handled by service with root (2) and remainder has value final (3) + path, root string +}{ + {"/", "/"}, + {"/p", "/p"}, + {"/p/x", "/p/{q}"}, + {"/q/x", "/q"}, + {"/p/x/", "/p/{q}"}, + {"/p/x/y", "/p/{q}"}, + {"/q/x/y", "/q"}, + {"/z/q", "/{p}/q"}, + {"/a/b/c/q", "/"}, +} + +// go test -v -test.run TestCurlyDetectWebService ...restful +func TestCurlyDetectWebService(t *testing.T) { + ws1 := new(WebService).Path("/") + ws2 := new(WebService).Path("/p") + ws3 := new(WebService).Path("/q") + ws4 := new(WebService).Path("/p/q") + ws5 := new(WebService).Path("/p/{q}") + ws7 := new(WebService).Path("/{p}/q") + var wss = []*WebService{ws1, ws2, ws3, ws4, ws5, ws7} + + for _, each := range wss { + t.Logf("path=%s,toks=%v\n", each.pathExpr.Source, each.pathExpr.tokens) + } + + router := CurlyRouter{} + + ok := true + for i, fixture := range requestPaths { + requestTokens := tokenizePath(fixture.path) + who := router.detectWebService(requestTokens, wss) + if who != nil && who.RootPath() != fixture.root { + t.Logf("[line:%v] Unexpected dispatcher, expected:%v, actual:%v", i, fixture.root, who.RootPath()) + ok = false + } + } + if !ok { + t.Fail() + } +} + +var serviceDetects = []struct { + path string + found bool + root string +}{ + {"/a/b", true, "/{p}/{q}/{r}"}, + {"/p/q", true, "/p/q"}, + {"/q/p", true, "/q"}, + {"/", true, "/"}, + {"/p/q/r", true, "/p/q"}, +} + +// go test -v -test.run Test_detectWebService ...restful +func Test_detectWebService(t *testing.T) { + router := CurlyRouter{} + ws1 := new(WebService).Path("/") + ws2 := new(WebService).Path("/p") + ws3 := new(WebService).Path("/q") + ws4 := new(WebService).Path("/p/q") + ws5 := new(WebService).Path("/p/{q}") + ws6 := new(WebService).Path("/p/{q}/") + ws7 := new(WebService).Path("/{p}/q") + ws8 := new(WebService).Path("/{p}/{q}/{r}") + var wss = []*WebService{ws8, ws7, ws6, ws5, ws4, ws3, ws2, ws1} + for _, fix := range serviceDetects { + requestPath := fix.path + requestTokens := tokenizePath(requestPath) + for _, ws := range wss { + serviceTokens := ws.pathExpr.tokens + matches, score := router.computeWebserviceScore(requestTokens, serviceTokens) + t.Logf("req=%s,toks:%v,ws=%s,toks:%v,score=%d,matches=%v", requestPath, requestTokens, ws.RootPath(), serviceTokens, score, matches) + } + best := router.detectWebService(requestTokens, wss) + if best != nil { + if fix.found { + t.Logf("best=%s", best.RootPath()) + } else { + t.Fatalf("should have found:%s", fix.root) + } + } + } +} + +var routeMatchers = []struct { + route string + path string + matches bool + paramCount int + staticCount int +}{ + // route, request-path + {"/a", "/a", true, 0, 1}, + {"/a", "/b", false, 0, 0}, + {"/a", "/b", false, 0, 0}, + {"/a/{b}/c/", "/a/2/c", true, 1, 2}, + {"/{a}/{b}/{c}/", "/a/b", false, 0, 0}, + {"/{x:*}", "/", false, 0, 0}, + {"/{x:*}", "/a", true, 1, 0}, + {"/{x:*}", "/a/b", true, 1, 0}, + {"/a/{x:*}", "/a/b", true, 1, 1}, + {"/a/{x:[A-Z][A-Z]}", "/a/ZX", true, 1, 1}, + {"/basepath/{resource:*}", "/basepath/some/other/location/test.xml", true, 1, 1}, +} + +// clear && go test -v -test.run Test_matchesRouteByPathTokens ...restful +func Test_matchesRouteByPathTokens(t *testing.T) { + router := CurlyRouter{} + for i, each := range routeMatchers { + routeToks := tokenizePath(each.route) + reqToks := tokenizePath(each.path) + matches, pCount, sCount := router.matchesRouteByPathTokens(routeToks, reqToks) + if matches != each.matches { + t.Fatalf("[%d] unexpected matches outcome route:%s, path:%s, matches:%v", i, each.route, each.path, matches) + } + if pCount != each.paramCount { + t.Fatalf("[%d] unexpected paramCount got:%d want:%d ", i, pCount, each.paramCount) + } + if sCount != each.staticCount { + t.Fatalf("[%d] unexpected staticCount got:%d want:%d ", i, sCount, each.staticCount) + } + } +} + +// clear && go test -v -test.run TestExtractParameters_Wildcard1 ...restful +func TestExtractParameters_Wildcard1(t *testing.T) { + params := doExtractParams("/fixed/{var:*}", 2, "/fixed/remainder", t) + if params["var"] != "remainder" { + t.Errorf("parameter mismatch var: %s", params["var"]) + } +} + +// clear && go test -v -test.run TestExtractParameters_Wildcard2 ...restful +func TestExtractParameters_Wildcard2(t *testing.T) { + params := doExtractParams("/fixed/{var:*}", 2, "/fixed/remain/der", t) + if params["var"] != "remain/der" { + t.Errorf("parameter mismatch var: %s", params["var"]) + } +} + +// clear && go test -v -test.run TestExtractParameters_Wildcard3 ...restful +func TestExtractParameters_Wildcard3(t *testing.T) { + params := doExtractParams("/static/{var:*}", 2, "/static/test/sub/hi.html", t) + if params["var"] != "test/sub/hi.html" { + t.Errorf("parameter mismatch var: %s", params["var"]) + } +} + +// clear && go test -v -test.run TestCurly_ISSUE_34 ...restful +func TestCurly_ISSUE_34(t *testing.T) { + ws1 := new(WebService).Path("/") + ws1.Route(ws1.GET("/{type}/{id}").To(curlyDummy)) + ws1.Route(ws1.GET("/network/{id}").To(curlyDummy)) + croutes := CurlyRouter{}.selectRoutes(ws1, tokenizePath("/network/12")) + if len(croutes) != 2 { + t.Fatal("expected 2 routes") + } + if got, want := croutes[0].route.Path, "/network/{id}"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +// clear && go test -v -test.run TestCurly_ISSUE_34_2 ...restful +func TestCurly_ISSUE_34_2(t *testing.T) { + ws1 := new(WebService) + ws1.Route(ws1.GET("/network/{id}").To(curlyDummy)) + ws1.Route(ws1.GET("/{type}/{id}").To(curlyDummy)) + croutes := CurlyRouter{}.selectRoutes(ws1, tokenizePath("/network/12")) + if len(croutes) != 2 { + t.Fatal("expected 2 routes") + } + if got, want := croutes[0].route.Path, "/network/{id}"; got != want { + t.Errorf("got %v want %v", got, want) + } +} + +// clear && go test -v -test.run TestCurly_JsonHtml ...restful +func TestCurly_JsonHtml(t *testing.T) { + ws1 := new(WebService) + ws1.Path("/") + ws1.Route(ws1.GET("/some.html").To(curlyDummy).Consumes("*/*").Produces("text/html")) + req, _ := http.NewRequest("GET", "/some.html", nil) + req.Header.Set("Accept", "application/json") + _, route, err := CurlyRouter{}.SelectRoute([]*WebService{ws1}, req) + if err == nil { + t.Error("error expected") + } + if route != nil { + t.Error("no route expected") + } +} + +// go test -v -test.run TestCurly_ISSUE_137 ...restful +func TestCurly_ISSUE_137(t *testing.T) { + ws1 := new(WebService) + ws1.Route(ws1.GET("/hello").To(curlyDummy)) + ws1.Path("/") + req, _ := http.NewRequest("GET", "/", nil) + _, route, _ := CurlyRouter{}.SelectRoute([]*WebService{ws1}, req) + t.Log(route) + if route != nil { + t.Error("no route expected") + } +} + +// go test -v -test.run TestCurly_ISSUE_137_2 ...restful +func TestCurly_ISSUE_137_2(t *testing.T) { + ws1 := new(WebService) + ws1.Route(ws1.GET("/hello").To(curlyDummy)) + ws1.Path("/") + req, _ := http.NewRequest("GET", "/hello/bob", nil) + _, route, _ := CurlyRouter{}.SelectRoute([]*WebService{ws1}, req) + t.Log(route) + if route != nil { + t.Errorf("no route expected, got %v", route) + } +} + +func curlyDummy(req *Request, resp *Response) { io.WriteString(resp.ResponseWriter, "curlyDummy") } diff --git a/vendor/github.com/emicklei/go-restful/doc.go b/vendor/github.com/emicklei/go-restful/doc.go new file mode 100644 index 000000000..f7c16b01f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/doc.go @@ -0,0 +1,185 @@ +/* +Package restful , a lean package for creating REST-style WebServices without magic. + +WebServices and Routes + +A WebService has a collection of Route objects that dispatch incoming Http Requests to a function calls. +Typically, a WebService has a root path (e.g. /users) and defines common MIME types for its routes. +WebServices must be added to a container (see below) in order to handler Http requests from a server. + +A Route is defined by a HTTP method, an URL path and (optionally) the MIME types it consumes (Content-Type) and produces (Accept). +This package has the logic to find the best matching Route and if found, call its Function. + + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_JSON, restful.MIME_XML). + Produces(restful.MIME_JSON, restful.MIME_XML) + + ws.Route(ws.GET("/{user-id}").To(u.findUser)) // u is a UserResource + + ... + + // GET http://localhost:8080/users/1 + func (u UserResource) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + ... + } + +The (*Request, *Response) arguments provide functions for reading information from the request and writing information back to the response. + +See the example https://github.com/emicklei/go-restful/blob/master/examples/restful-user-resource.go with a full implementation. + +Regular expression matching Routes + +A Route parameter can be specified using the format "uri/{var[:regexp]}" or the special version "uri/{var:*}" for matching the tail of the path. +For example, /persons/{name:[A-Z][A-Z]} can be used to restrict values for the parameter "name" to only contain capital alphabetic characters. +Regular expressions must use the standard Go syntax as described in the regexp package. (https://code.google.com/p/re2/wiki/Syntax) +This feature requires the use of a CurlyRouter. + +Containers + +A Container holds a collection of WebServices, Filters and a http.ServeMux for multiplexing http requests. +Using the statements "restful.Add(...) and restful.Filter(...)" will register WebServices and Filters to the Default Container. +The Default container of go-restful uses the http.DefaultServeMux. +You can create your own Container and create a new http.Server for that particular container. + + container := restful.NewContainer() + server := &http.Server{Addr: ":8081", Handler: container} + +Filters + +A filter dynamically intercepts requests and responses to transform or use the information contained in the requests or responses. +You can use filters to perform generic logging, measurement, authentication, redirect, set response headers etc. +In the restful package there are three hooks into the request,response flow where filters can be added. +Each filter must define a FilterFunction: + + func (req *restful.Request, resp *restful.Response, chain *restful.FilterChain) + +Use the following statement to pass the request,response pair to the next filter or RouteFunction + + chain.ProcessFilter(req, resp) + +Container Filters + +These are processed before any registered WebService. + + // install a (global) filter for the default container (processed before any webservice) + restful.Filter(globalLogging) + +WebService Filters + +These are processed before any Route of a WebService. + + // install a webservice filter (processed before any route) + ws.Filter(webserviceLogging).Filter(measureTime) + + +Route Filters + +These are processed before calling the function associated with the Route. + + // install 2 chained route filters (processed before calling findUser) + ws.Route(ws.GET("/{user-id}").Filter(routeLogging).Filter(NewCountFilter().routeCounter).To(findUser)) + +See the example https://github.com/emicklei/go-restful/blob/master/examples/restful-filters.go with full implementations. + +Response Encoding + +Two encodings are supported: gzip and deflate. To enable this for all responses: + + restful.DefaultContainer.EnableContentEncoding(true) + +If a Http request includes the Accept-Encoding header then the response content will be compressed using the specified encoding. +Alternatively, you can create a Filter that performs the encoding and install it per WebService or Route. + +See the example https://github.com/emicklei/go-restful/blob/master/examples/restful-encoding-filter.go + +OPTIONS support + +By installing a pre-defined container filter, your Webservice(s) can respond to the OPTIONS Http request. + + Filter(OPTIONSFilter()) + +CORS + +By installing the filter of a CrossOriginResourceSharing (CORS), your WebService(s) can handle CORS requests. + + cors := CrossOriginResourceSharing{ExposeHeaders: []string{"X-My-Header"}, CookiesAllowed: false, Container: DefaultContainer} + Filter(cors.Filter) + +Error Handling + +Unexpected things happen. If a request cannot be processed because of a failure, your service needs to tell via the response what happened and why. +For this reason HTTP status codes exist and it is important to use the correct code in every exceptional situation. + + 400: Bad Request + +If path or query parameters are not valid (content or type) then use http.StatusBadRequest. + + 404: Not Found + +Despite a valid URI, the resource requested may not be available + + 500: Internal Server Error + +If the application logic could not process the request (or write the response) then use http.StatusInternalServerError. + + 405: Method Not Allowed + +The request has a valid URL but the method (GET,PUT,POST,...) is not allowed. + + 406: Not Acceptable + +The request does not have or has an unknown Accept Header set for this operation. + + 415: Unsupported Media Type + +The request does not have or has an unknown Content-Type Header set for this operation. + +ServiceError + +In addition to setting the correct (error) Http status code, you can choose to write a ServiceError message on the response. + +Performance options + +This package has several options that affect the performance of your service. It is important to understand them and how you can change it. + + restful.DefaultContainer.DoNotRecover(false) + +DoNotRecover controls whether panics will be caught to return HTTP 500. +If set to false, the container will recover from panics. +Default value is true + + restful.SetCompressorProvider(NewBoundedCachedCompressors(20, 20)) + +If content encoding is enabled then the default strategy for getting new gzip/zlib writers and readers is to use a sync.Pool. +Because writers are expensive structures, performance is even more improved when using a preloaded cache. You can also inject your own implementation. + +Trouble shooting + +This package has the means to produce detail logging of the complete Http request matching process and filter invocation. +Enabling this feature requires you to set an implementation of restful.StdLogger (e.g. log.Logger) instance such as: + + restful.TraceLogger(log.New(os.Stdout, "[restful] ", log.LstdFlags|log.Lshortfile)) + +Logging + +The restful.SetLogger() method allows you to override the logger used by the package. By default restful +uses the standard library `log` package and logs to stdout. Different logging packages are supported as +long as they conform to `StdLogger` interface defined in the `log` sub-package, writing an adapter for your +preferred package is simple. + +Resources + +[project]: https://github.com/emicklei/go-restful + +[examples]: https://github.com/emicklei/go-restful/blob/master/examples + +[design]: http://ernestmicklei.com/2012/11/11/go-restful-api-design/ + +[showcases]: https://github.com/emicklei/mora, https://github.com/emicklei/landskape + +(c) 2012-2015, http://ernestmicklei.com. MIT License +*/ +package restful diff --git a/vendor/github.com/emicklei/go-restful/doc_examples_test.go b/vendor/github.com/emicklei/go-restful/doc_examples_test.go new file mode 100644 index 000000000..0af636e55 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/doc_examples_test.go @@ -0,0 +1,41 @@ +package restful + +import "net/http" + +func ExampleOPTIONSFilter() { + // Install the OPTIONS filter on the default Container + Filter(OPTIONSFilter()) +} +func ExampleContainer_OPTIONSFilter() { + // Install the OPTIONS filter on a Container + myContainer := new(Container) + myContainer.Filter(myContainer.OPTIONSFilter) +} + +func ExampleContainer() { + // The Default container of go-restful uses the http.DefaultServeMux. + // You can create your own Container using restful.NewContainer() and create a new http.Server for that particular container + + ws := new(WebService) + wsContainer := NewContainer() + wsContainer.Add(ws) + server := &http.Server{Addr: ":8080", Handler: wsContainer} + server.ListenAndServe() +} + +func ExampleCrossOriginResourceSharing() { + // To install this filter on the Default Container use: + cors := CrossOriginResourceSharing{ExposeHeaders: []string{"X-My-Header"}, CookiesAllowed: false, Container: DefaultContainer} + Filter(cors.Filter) +} + +func ExampleServiceError() { + resp := new(Response) + resp.WriteEntity(NewError(http.StatusBadRequest, "Non-integer {id} path parameter")) +} + +func ExampleBoundedCachedCompressors() { + // Register a compressor provider (gzip/deflate read/write) that uses + // a bounded cache with a maximum of 20 writers and 20 readers. + SetCompressorProvider(NewBoundedCachedCompressors(20, 20)) +} diff --git a/vendor/github.com/emicklei/go-restful/entity_accessors.go b/vendor/github.com/emicklei/go-restful/entity_accessors.go new file mode 100644 index 000000000..6ecf6c7f8 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/entity_accessors.go @@ -0,0 +1,163 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "encoding/json" + "encoding/xml" + "strings" + "sync" +) + +// EntityReaderWriter can read and write values using an encoding such as JSON,XML. +type EntityReaderWriter interface { + // Read a serialized version of the value from the request. + // The Request may have a decompressing reader. Depends on Content-Encoding. + Read(req *Request, v interface{}) error + + // Write a serialized version of the value on the response. + // The Response may have a compressing writer. Depends on Accept-Encoding. + // status should be a valid Http Status code + Write(resp *Response, status int, v interface{}) error +} + +// entityAccessRegistry is a singleton +var entityAccessRegistry = &entityReaderWriters{ + protection: new(sync.RWMutex), + accessors: map[string]EntityReaderWriter{}, +} + +// entityReaderWriters associates MIME to an EntityReaderWriter +type entityReaderWriters struct { + protection *sync.RWMutex + accessors map[string]EntityReaderWriter +} + +func init() { + RegisterEntityAccessor(MIME_JSON, NewEntityAccessorJSON(MIME_JSON)) + RegisterEntityAccessor(MIME_XML, NewEntityAccessorXML(MIME_XML)) +} + +// RegisterEntityAccessor add/overrides the ReaderWriter for encoding content with this MIME type. +func RegisterEntityAccessor(mime string, erw EntityReaderWriter) { + entityAccessRegistry.protection.Lock() + defer entityAccessRegistry.protection.Unlock() + entityAccessRegistry.accessors[mime] = erw +} + +// NewEntityAccessorJSON returns a new EntityReaderWriter for accessing JSON content. +// This package is already initialized with such an accessor using the MIME_JSON contentType. +func NewEntityAccessorJSON(contentType string) EntityReaderWriter { + return entityJSONAccess{ContentType: contentType} +} + +// NewEntityAccessorXML returns a new EntityReaderWriter for accessing XML content. +// This package is already initialized with such an accessor using the MIME_XML contentType. +func NewEntityAccessorXML(contentType string) EntityReaderWriter { + return entityXMLAccess{ContentType: contentType} +} + +// accessorAt returns the registered ReaderWriter for this MIME type. +func (r *entityReaderWriters) accessorAt(mime string) (EntityReaderWriter, bool) { + r.protection.RLock() + defer r.protection.RUnlock() + er, ok := r.accessors[mime] + if !ok { + // retry with reverse lookup + // more expensive but we are in an exceptional situation anyway + for k, v := range r.accessors { + if strings.Contains(mime, k) { + return v, true + } + } + } + return er, ok +} + +// entityXMLAccess is a EntityReaderWriter for XML encoding +type entityXMLAccess struct { + // This is used for setting the Content-Type header when writing + ContentType string +} + +// Read unmarshalls the value from XML +func (e entityXMLAccess) Read(req *Request, v interface{}) error { + return xml.NewDecoder(req.Request.Body).Decode(v) +} + +// Write marshalls the value to JSON and set the Content-Type Header. +func (e entityXMLAccess) Write(resp *Response, status int, v interface{}) error { + return writeXML(resp, status, e.ContentType, v) +} + +// writeXML marshalls the value to JSON and set the Content-Type Header. +func writeXML(resp *Response, status int, contentType string, v interface{}) error { + if v == nil { + resp.WriteHeader(status) + // do not write a nil representation + return nil + } + if resp.prettyPrint { + // pretty output must be created and written explicitly + output, err := xml.MarshalIndent(v, " ", " ") + if err != nil { + return err + } + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + _, err = resp.Write([]byte(xml.Header)) + if err != nil { + return err + } + _, err = resp.Write(output) + return err + } + // not-so-pretty + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + return xml.NewEncoder(resp).Encode(v) +} + +// entityJSONAccess is a EntityReaderWriter for JSON encoding +type entityJSONAccess struct { + // This is used for setting the Content-Type header when writing + ContentType string +} + +// Read unmarshalls the value from JSON +func (e entityJSONAccess) Read(req *Request, v interface{}) error { + decoder := json.NewDecoder(req.Request.Body) + decoder.UseNumber() + return decoder.Decode(v) +} + +// Write marshalls the value to JSON and set the Content-Type Header. +func (e entityJSONAccess) Write(resp *Response, status int, v interface{}) error { + return writeJSON(resp, status, e.ContentType, v) +} + +// write marshalls the value to JSON and set the Content-Type Header. +func writeJSON(resp *Response, status int, contentType string, v interface{}) error { + if v == nil { + resp.WriteHeader(status) + // do not write a nil representation + return nil + } + if resp.prettyPrint { + // pretty output must be created and written explicitly + output, err := json.MarshalIndent(v, " ", " ") + if err != nil { + return err + } + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + _, err = resp.Write(output) + return err + } + // not-so-pretty + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + return json.NewEncoder(resp).Encode(v) +} diff --git a/vendor/github.com/emicklei/go-restful/entity_accessors_test.go b/vendor/github.com/emicklei/go-restful/entity_accessors_test.go new file mode 100644 index 000000000..943093ae0 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/entity_accessors_test.go @@ -0,0 +1,69 @@ +package restful + +import ( + "bytes" + "fmt" + "io" + "net/http" + "net/http/httptest" + "reflect" + "testing" +) + +type keyvalue struct { + readCalled bool + writeCalled bool +} + +func (kv *keyvalue) Read(req *Request, v interface{}) error { + //t := reflect.TypeOf(v) + //rv := reflect.ValueOf(v) + kv.readCalled = true + return nil +} + +func (kv *keyvalue) Write(resp *Response, status int, v interface{}) error { + t := reflect.TypeOf(v) + rv := reflect.ValueOf(v) + for ix := 0; ix < t.NumField(); ix++ { + sf := t.Field(ix) + io.WriteString(resp, sf.Name) + io.WriteString(resp, "=") + io.WriteString(resp, fmt.Sprintf("%v\n", rv.Field(ix).Interface())) + } + kv.writeCalled = true + return nil +} + +// go test -v -test.run TestKeyValueEncoding ...restful +func TestKeyValueEncoding(t *testing.T) { + type Book struct { + Title string + Author string + PublishedYear int + } + kv := new(keyvalue) + RegisterEntityAccessor("application/kv", kv) + b := Book{"Singing for Dummies", "john doe", 2015} + + // Write + httpWriter := httptest.NewRecorder() + // Accept Produces + resp := Response{httpWriter, "application/kv,*/*;q=0.8", []string{"application/kv"}, 0, 0, true, nil} + resp.WriteEntity(b) + t.Log(string(httpWriter.Body.Bytes())) + if !kv.writeCalled { + t.Error("Write never called") + } + + // Read + bodyReader := bytes.NewReader(httpWriter.Body.Bytes()) + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", "application/kv; charset=UTF-8") + request := NewRequest(httpRequest) + var bb Book + request.ReadEntity(&bb) + if !kv.readCalled { + t.Error("Read never called") + } +} diff --git a/vendor/github.com/emicklei/go-restful/examples/.goconvey b/vendor/github.com/emicklei/go-restful/examples/.goconvey new file mode 100644 index 000000000..8485e986e --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/.goconvey @@ -0,0 +1 @@ +ignore \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/.goconvey b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/.goconvey new file mode 100644 index 000000000..8485e986e --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/.goconvey @@ -0,0 +1 @@ +ignore \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/app.yaml b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/app.yaml new file mode 100644 index 000000000..362db6b07 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/app.yaml @@ -0,0 +1,20 @@ +# +# Include your application ID here +# +application: +version: 1 +runtime: go +api_version: go1 + +handlers: +# +# Regex for all swagger files to make as static content. +# You should create the folder static/swagger and copy +# swagger-ui into it. +# +- url: /apidocs/(.*?)/(.*\.(js|html|css)) + static_files: static/swagger/\1/\2 + upload: static/swagger/(.*?)/(.*\.(js|html|css)) + +- url: /.* + script: _go_app diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/.goconvey b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/.goconvey new file mode 100644 index 000000000..8485e986e --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/.goconvey @@ -0,0 +1 @@ +ignore \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/app.yaml b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/app.yaml new file mode 100644 index 000000000..1ac9dca28 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/app.yaml @@ -0,0 +1,18 @@ +application: +version: 1 +runtime: go +api_version: go1 + +handlers: +# Regex for all swagger files to make as static content. +# You should create the folder static/swagger and copy +# swagger-ui into it. +# +- url: /apidocs/(.*?)/(.*\.(js|html|css)) + static_files: static/swagger/\1/\2 + upload: static/swagger/(.*?)/(.*\.(js|html|css)) + +# Catch all. +- url: /.* + script: _go_app + login: required diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/main.go b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/main.go new file mode 100644 index 000000000..20fd15ac3 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/datastore/main.go @@ -0,0 +1,267 @@ +package main + +import ( + "net/http" + "time" + + "github.com/emicklei/go-restful" + "github.com/emicklei/go-restful-swagger12" + "google.golang.org/appengine" + "google.golang.org/appengine/datastore" + "google.golang.org/appengine/user" +) + +// This example demonstrates a reasonably complete suite of RESTful operations backed +// by DataStore on Google App Engine. + +// Our simple example struct. +type Profile struct { + LastModified time.Time `json:"-" xml:"-"` + Email string `json:"-" xml:"-"` + FirstName string `json:"first_name" xml:"first-name"` + NickName string `json:"nick_name" xml:"nick-name"` + LastName string `json:"last_name" xml:"last-name"` +} + +type ProfileApi struct { + Path string +} + +func gaeUrl() string { + if appengine.IsDevAppServer() { + return "http://localhost:8080" + } else { + // Include your URL on App Engine here. + // I found no way to get AppID without appengine.Context and this always + // based on a http.Request. + return "http://federatedservices.appspot.com" + } +} + +func init() { + u := ProfileApi{Path: "/profiles"} + u.register() + + // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API + // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. + // Open .appspot.com/apidocs and enter + // Place the Swagger UI files into a folder called static/swagger if you wish to use Swagger + // http://.appspot.com/apidocs.json in the api input field. + // For testing, you can use http://localhost:8080/apidocs.json + config := swagger.Config{ + // You control what services are visible + WebServices: restful.RegisteredWebServices(), + WebServicesUrl: gaeUrl(), + ApiPath: "/apidocs.json", + + // Optionally, specifiy where the UI is located + SwaggerPath: "/apidocs/", + + // GAE support static content which is configured in your app.yaml. + // This example expect the swagger-ui in static/swagger so you should place it there :) + SwaggerFilePath: "static/swagger"} + swagger.InstallSwaggerService(config) +} + +func (u ProfileApi) register() { + ws := new(restful.WebService) + + ws. + Path(u.Path). + // You can specify consumes and produces per route as well. + Consumes(restful.MIME_JSON, restful.MIME_XML). + Produces(restful.MIME_JSON, restful.MIME_XML) + + ws.Route(ws.POST("").To(u.insert). + // Swagger documentation. + Doc("insert a new profile"). + Param(ws.BodyParameter("Profile", "representation of a profile").DataType("main.Profile")). + Reads(Profile{})) + + ws.Route(ws.GET("/{profile-id}").To(u.read). + // Swagger documentation. + Doc("read a profile"). + Param(ws.PathParameter("profile-id", "identifier for a profile").DataType("string")). + Writes(Profile{})) + + ws.Route(ws.PUT("/{profile-id}").To(u.update). + // Swagger documentation. + Doc("update an existing profile"). + Param(ws.PathParameter("profile-id", "identifier for a profile").DataType("string")). + Param(ws.BodyParameter("Profile", "representation of a profile").DataType("main.Profile")). + Reads(Profile{})) + + ws.Route(ws.DELETE("/{profile-id}").To(u.remove). + // Swagger documentation. + Doc("remove a profile"). + Param(ws.PathParameter("profile-id", "identifier for a profile").DataType("string"))) + + restful.Add(ws) +} + +// POST http://localhost:8080/profiles +// {"first_name": "Ivan", "nick_name": "Socks", "last_name": "Hawkes"} +// +func (u *ProfileApi) insert(r *restful.Request, w *restful.Response) { + c := appengine.NewContext(r.Request) + + // Marshall the entity from the request into a struct. + p := new(Profile) + err := r.ReadEntity(&p) + if err != nil { + w.WriteError(http.StatusNotAcceptable, err) + return + } + + // Ensure we start with a sensible value for this field. + p.LastModified = time.Now() + + // The profile belongs to this user. + p.Email = user.Current(c).String() + + k, err := datastore.Put(c, datastore.NewIncompleteKey(c, "profiles", nil), p) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + // Let them know the location of the newly created resource. + // TODO: Use a safe Url path append function. + w.AddHeader("Location", u.Path+"/"+k.Encode()) + + // Return the resultant entity. + w.WriteHeader(http.StatusCreated) + w.WriteEntity(p) +} + +// GET http://localhost:8080/profiles/ahdkZXZ-ZmVkZXJhdGlvbi1zZXJ2aWNlc3IVCxIIcHJvZmlsZXMYgICAgICAgAoM +// +func (u ProfileApi) read(r *restful.Request, w *restful.Response) { + c := appengine.NewContext(r.Request) + + // Decode the request parameter to determine the key for the entity. + k, err := datastore.DecodeKey(r.PathParameter("profile-id")) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + // Retrieve the entity from the datastore. + p := Profile{} + if err := datastore.Get(c, k, &p); err != nil { + if err.Error() == "datastore: no such entity" { + http.Error(w, err.Error(), http.StatusNotFound) + } else { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + return + } + + // Check we own the profile before allowing them to view it. + // Optionally, return a 404 instead to help prevent guessing ids. + // TODO: Allow admins access. + if p.Email != user.Current(c).String() { + http.Error(w, "You do not have access to this resource", http.StatusForbidden) + return + } + + w.WriteEntity(p) +} + +// PUT http://localhost:8080/profiles/ahdkZXZ-ZmVkZXJhdGlvbi1zZXJ2aWNlc3IVCxIIcHJvZmlsZXMYgICAgICAgAoM +// {"first_name": "Ivan", "nick_name": "Socks", "last_name": "Hawkes"} +// +func (u *ProfileApi) update(r *restful.Request, w *restful.Response) { + c := appengine.NewContext(r.Request) + + // Decode the request parameter to determine the key for the entity. + k, err := datastore.DecodeKey(r.PathParameter("profile-id")) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + // Marshall the entity from the request into a struct. + p := new(Profile) + err = r.ReadEntity(&p) + if err != nil { + w.WriteError(http.StatusNotAcceptable, err) + return + } + + // Retrieve the old entity from the datastore. + old := Profile{} + if err := datastore.Get(c, k, &old); err != nil { + if err.Error() == "datastore: no such entity" { + http.Error(w, err.Error(), http.StatusNotFound) + } else { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + return + } + + // Check we own the profile before allowing them to update it. + // Optionally, return a 404 instead to help prevent guessing ids. + // TODO: Allow admins access. + if old.Email != user.Current(c).String() { + http.Error(w, "You do not have access to this resource", http.StatusForbidden) + return + } + + // Since the whole entity is re-written, we need to assign any invariant fields again + // e.g. the owner of the entity. + p.Email = user.Current(c).String() + + // Keep track of the last modification date. + p.LastModified = time.Now() + + // Attempt to overwrite the old entity. + _, err = datastore.Put(c, k, p) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + // Let them know it succeeded. + w.WriteHeader(http.StatusNoContent) +} + +// DELETE http://localhost:8080/profiles/ahdkZXZ-ZmVkZXJhdGlvbi1zZXJ2aWNlc3IVCxIIcHJvZmlsZXMYgICAgICAgAoM +// +func (u *ProfileApi) remove(r *restful.Request, w *restful.Response) { + c := appengine.NewContext(r.Request) + + // Decode the request parameter to determine the key for the entity. + k, err := datastore.DecodeKey(r.PathParameter("profile-id")) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + // Retrieve the old entity from the datastore. + old := Profile{} + if err := datastore.Get(c, k, &old); err != nil { + if err.Error() == "datastore: no such entity" { + http.Error(w, err.Error(), http.StatusNotFound) + } else { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + return + } + + // Check we own the profile before allowing them to delete it. + // Optionally, return a 404 instead to help prevent guessing ids. + // TODO: Allow admins access. + if old.Email != user.Current(c).String() { + http.Error(w, "You do not have access to this resource", http.StatusForbidden) + return + } + + // Delete the entity. + if err := datastore.Delete(c, k); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + + // Success notification. + w.WriteHeader(http.StatusNoContent) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-appstats-integration.go b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-appstats-integration.go new file mode 100644 index 000000000..a871133b0 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-appstats-integration.go @@ -0,0 +1,12 @@ +package main + +import ( + "github.com/mjibson/appstats" +) + +func stats(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + c := appstats.NewContext(req.Request) + chain.ProcessFilter(req, resp) + c.Stats.Status = resp.StatusCode() + c.Save() +} diff --git a/vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-user-service.go b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-user-service.go new file mode 100644 index 000000000..7286ba2fa --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/google_app_engine/restful-user-service.go @@ -0,0 +1,162 @@ +package main + +import ( + "net/http" + + "github.com/emicklei/go-restful" + "github.com/emicklei/go-restful-swagger12" + "google.golang.org/appengine" + "google.golang.org/appengine/memcache" +) + +// This example is functionally the same as ../restful-user-service.go +// but it`s supposed to run on Goole App Engine (GAE) +// +// contributed by ivanhawkes + +type User struct { + Id, Name string +} + +type UserService struct { + // normally one would use DAO (data access object) + // but in this example we simple use memcache. +} + +func (u UserService) Register() { + ws := new(restful.WebService) + + ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) // you can specify this per route as well + + ws.Route(ws.GET("/{user-id}").To(u.findUser). + // docs + Doc("get a user"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + Writes(User{})) // on the response + + ws.Route(ws.PATCH("").To(u.updateUser). + // docs + Doc("update a user"). + Reads(User{})) // from the request + + ws.Route(ws.PUT("/{user-id}").To(u.createUser). + // docs + Doc("create a user"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + Reads(User{})) // from the request + + ws.Route(ws.DELETE("/{user-id}").To(u.removeUser). + // docs + Doc("delete a user"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string"))) + + restful.Add(ws) +} + +// GET http://localhost:8080/users/1 +// +func (u UserService) findUser(request *restful.Request, response *restful.Response) { + c := appengine.NewContext(request.Request) + id := request.PathParameter("user-id") + usr := new(User) + _, err := memcache.Gob.Get(c, id, &usr) + if err != nil || len(usr.Id) == 0 { + response.WriteErrorString(http.StatusNotFound, "User could not be found.") + } else { + response.WriteEntity(usr) + } +} + +// PATCH http://localhost:8080/users +// 1Melissa Raspberry +// +func (u *UserService) updateUser(request *restful.Request, response *restful.Response) { + c := appengine.NewContext(request.Request) + usr := new(User) + err := request.ReadEntity(&usr) + if err == nil { + item := &memcache.Item{ + Key: usr.Id, + Object: &usr, + } + err = memcache.Gob.Set(c, item) + if err != nil { + response.WriteError(http.StatusInternalServerError, err) + return + } + response.WriteEntity(usr) + } else { + response.WriteError(http.StatusInternalServerError, err) + } +} + +// PUT http://localhost:8080/users/1 +// 1Melissa +// +func (u *UserService) createUser(request *restful.Request, response *restful.Response) { + c := appengine.NewContext(request.Request) + usr := User{Id: request.PathParameter("user-id")} + err := request.ReadEntity(&usr) + if err == nil { + item := &memcache.Item{ + Key: usr.Id, + Object: &usr, + } + err = memcache.Gob.Add(c, item) + if err != nil { + response.WriteError(http.StatusInternalServerError, err) + return + } + response.WriteHeader(http.StatusCreated) + response.WriteEntity(usr) + } else { + response.WriteError(http.StatusInternalServerError, err) + } +} + +// DELETE http://localhost:8080/users/1 +// +func (u *UserService) removeUser(request *restful.Request, response *restful.Response) { + c := appengine.NewContext(request.Request) + id := request.PathParameter("user-id") + err := memcache.Delete(c, id) + if err != nil { + response.WriteError(http.StatusInternalServerError, err) + } +} + +func getGaeURL() string { + if appengine.IsDevAppServer() { + return "http://localhost:8080" + } else { + /** + * Include your URL on App Engine here. + * I found no way to get AppID without appengine.Context and this always + * based on a http.Request. + */ + return "http://.appspot.com" + } +} + +func init() { + u := UserService{} + u.Register() + + // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API + // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. + // Open .appspot.com/apidocs and enter http://.appspot.com/apidocs.json in the api input field. + config := swagger.Config{ + WebServices: restful.RegisteredWebServices(), // you control what services are visible + WebServicesUrl: getGaeURL(), + ApiPath: "/apidocs.json", + + // Optionally, specifiy where the UI is located + SwaggerPath: "/apidocs/", + // GAE support static content which is configured in your app.yaml. + // This example expect the swagger-ui in static/swagger so you should place it there :) + SwaggerFilePath: "static/swagger"} + swagger.InstallSwaggerService(config) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/home.html b/vendor/github.com/emicklei/go-restful/examples/home.html new file mode 100644 index 000000000..e5d49b42c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/home.html @@ -0,0 +1,7 @@ + + + + +

{{.Text}}

+ + \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity.go b/vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity.go new file mode 100644 index 000000000..330e45896 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity.go @@ -0,0 +1,34 @@ +package restPack + +import ( + restful "github.com/emicklei/go-restful" + "gopkg.in/vmihailenco/msgpack.v2" +) + +const MIME_MSGPACK = "application/x-msgpack" // Accept or Content-Type used in Consumes() and/or Produces() + +// NewEntityAccessorMPack returns a new EntityReaderWriter for accessing MessagePack content. +// This package is not initialized with such an accessor using the MIME_MSGPACK contentType. +func NewEntityAccessorMsgPack() restful.EntityReaderWriter { + return entityMsgPackAccess{} +} + +// entityOctetAccess is a EntityReaderWriter for Octet encoding +type entityMsgPackAccess struct { +} + +// Read unmarshalls the value from byte slice and using msgpack to unmarshal +func (e entityMsgPackAccess) Read(req *restful.Request, v interface{}) error { + return msgpack.NewDecoder(req.Request.Body).Decode(v) +} + +// Write marshals the value to byte slice and set the Content-Type Header. +func (e entityMsgPackAccess) Write(resp *restful.Response, status int, v interface{}) error { + if v == nil { + resp.WriteHeader(status) + // do not write a nil representation + return nil + } + resp.WriteHeader(status) + return msgpack.NewEncoder(resp).Encode(v) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity_test.go b/vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity_test.go new file mode 100644 index 000000000..03d01dbe7 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/msgpack/msgpack_entity_test.go @@ -0,0 +1,160 @@ +package restPack + +import ( + "bytes" + "errors" + "log" + "net/http" + "net/http/httptest" + "reflect" + "testing" + "time" + + "io/ioutil" + + restful "github.com/emicklei/go-restful" +) + +func TestMsgPack(t *testing.T) { + + // register msg pack entity + restful.RegisterEntityAccessor(MIME_MSGPACK, NewEntityAccessorMsgPack()) + type Tool struct { + Name string + Vendor string + } + + // Write + httpWriter := httptest.NewRecorder() + mpack := &Tool{Name: "json", Vendor: "apple"} + resp := restful.NewResponse(httpWriter) + resp.SetRequestAccepts("application/x-msgpack,*/*;q=0.8") + + err := resp.WriteEntity(mpack) + if err != nil { + t.Errorf("err %v", err) + } + + // Read + bodyReader := bytes.NewReader(httpWriter.Body.Bytes()) + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", MIME_MSGPACK) + request := restful.NewRequest(httpRequest) + readMsgPack := new(Tool) + err = request.ReadEntity(&readMsgPack) + if err != nil { + t.Errorf("err %v", err) + } + if equal := reflect.DeepEqual(mpack, readMsgPack); !equal { + t.Fatalf("should not be error") + } +} + +func TestWithWebService(t *testing.T) { + serverURL := "http://127.0.0.1:8090" + go func() { + runRestfulMsgPackRouterServer() + }() + if err := waitForServerUp(serverURL); err != nil { + t.Errorf("%v", err) + } + + // send a post request + userData := user{Id: "0001", Name: "Tony"} + msgPackData, err := msgpack.Marshal(userData) + req, err := http.NewRequest("POST", serverURL+"/test/msgpack", bytes.NewBuffer(msgPackData)) + req.Header.Set("Content-Type", MIME_MSGPACK) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + t.Errorf("unexpected error in sending req: %v", err) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("unexpected response: %v, expected: %v", resp.StatusCode, http.StatusOK) + } + + ur := &userResponse{} + expectMsgPackDocument(t, resp, ur) + if ur.Status != statusActive { + t.Fatalf("should not error") + } + log.Printf("user response:%v", ur) +} + +func expectMsgPackDocument(t *testing.T, r *http.Response, doc interface{}) { + data, err := ioutil.ReadAll(r.Body) + defer r.Body.Close() + if err != nil { + t.Errorf("ExpectMsgPackDocument: unable to read response body :%v", err) + return + } + // put the body back for re-reads + r.Body = ioutil.NopCloser(bytes.NewReader(data)) + + err = msgpack.Unmarshal(data, doc) + if err != nil { + t.Errorf("ExpectMsgPackDocument: unable to unmarshal MsgPack:%v", err) + } +} + +func runRestfulMsgPackRouterServer() { + + container := restful.NewContainer() + register(container) + + log.Printf("start listening on localhost:8090") + server := &http.Server{Addr: ":8090", Handler: container} + log.Fatal(server.ListenAndServe()) +} + +func waitForServerUp(serverURL string) error { + for start := time.Now(); time.Since(start) < time.Minute; time.Sleep(5 * time.Second) { + _, err := http.Get(serverURL + "/") + if err == nil { + return nil + } + } + return errors.New("waiting for server timed out") +} + +var ( + statusActive = "active" +) + +type user struct { + Id, Name string +} + +type userResponse struct { + Status string +} + +func register(container *restful.Container) { + restful.RegisterEntityAccessor(MIME_MSGPACK, NewEntityAccessorMsgPack()) + ws := new(restful.WebService) + ws. + Path("/test"). + Consumes(restful.MIME_JSON, MIME_MSGPACK). + Produces(restful.MIME_JSON, MIME_MSGPACK) + // route user api + ws.Route(ws.POST("/msgpack"). + To(do). + Reads(user{}). + Writes(userResponse{})) + container.Add(ws) +} + +func do(request *restful.Request, response *restful.Response) { + u := &user{} + err := request.ReadEntity(u) + if err != nil { + log.Printf("should be no error, got:%v", err) + } + log.Printf("got:%v", u) + + ur := &userResponse{Status: statusActive} + + response.SetRequestAccepts(MIME_MSGPACK) + response.WriteEntity(ur) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-CORS-filter.go b/vendor/github.com/emicklei/go-restful/examples/restful-CORS-filter.go new file mode 100644 index 000000000..6419d2538 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-CORS-filter.go @@ -0,0 +1,68 @@ +package main + +import ( + "io" + "log" + "net/http" + + "github.com/emicklei/go-restful" +) + +// Cross-origin resource sharing (CORS) is a mechanism that allows JavaScript on a web page +// to make XMLHttpRequests to another domain, not the domain the JavaScript originated from. +// +// http://en.wikipedia.org/wiki/Cross-origin_resource_sharing +// http://enable-cors.org/server.html +// +// GET http://localhost:8080/users +// +// GET http://localhost:8080/users/1 +// +// PUT http://localhost:8080/users/1 +// +// DELETE http://localhost:8080/users/1 +// +// OPTIONS http://localhost:8080/users/1 with Header "Origin" set to some domain and + +type UserResource struct{} + +func (u UserResource) RegisterTo(container *restful.Container) { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes("*/*"). + Produces("*/*") + + ws.Route(ws.GET("/{user-id}").To(u.nop)) + ws.Route(ws.POST("").To(u.nop)) + ws.Route(ws.PUT("/{user-id}").To(u.nop)) + ws.Route(ws.DELETE("/{user-id}").To(u.nop)) + + container.Add(ws) +} + +func (u UserResource) nop(request *restful.Request, response *restful.Response) { + io.WriteString(response.ResponseWriter, "this would be a normal response") +} + +func main() { + wsContainer := restful.NewContainer() + u := UserResource{} + u.RegisterTo(wsContainer) + + // Add container filter to enable CORS + cors := restful.CrossOriginResourceSharing{ + ExposeHeaders: []string{"X-My-Header"}, + AllowedHeaders: []string{"Content-Type", "Accept"}, + AllowedMethods: []string{"GET", "POST"}, + CookiesAllowed: false, + Container: wsContainer} + wsContainer.Filter(cors.Filter) + + // Add container filter to respond to OPTIONS + wsContainer.Filter(wsContainer.OPTIONSFilter) + + log.Printf("start listening on localhost:8080") + server := &http.Server{Addr: ":8080", Handler: wsContainer} + log.Fatal(server.ListenAndServe()) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-NCSA-logging.go b/vendor/github.com/emicklei/go-restful/examples/restful-NCSA-logging.go new file mode 100644 index 000000000..0cda50d34 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-NCSA-logging.go @@ -0,0 +1,54 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "log" + "net/http" + "os" + "strings" + "time" +) + +// This example shows how to create a filter that produces log lines +// according to the Common Log Format, also known as the NCSA standard. +// +// kindly contributed by leehambley +// +// GET http://localhost:8080/ping + +var logger *log.Logger = log.New(os.Stdout, "", 0) + +func NCSACommonLogFormatLogger() restful.FilterFunction { + return func(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + var username = "-" + if req.Request.URL.User != nil { + if name := req.Request.URL.User.Username(); name != "" { + username = name + } + } + chain.ProcessFilter(req, resp) + logger.Printf("%s - %s [%s] \"%s %s %s\" %d %d", + strings.Split(req.Request.RemoteAddr, ":")[0], + username, + time.Now().Format("02/Jan/2006:15:04:05 -0700"), + req.Request.Method, + req.Request.URL.RequestURI(), + req.Request.Proto, + resp.StatusCode(), + resp.ContentLength(), + ) + } +} + +func main() { + ws := new(restful.WebService) + ws.Filter(NCSACommonLogFormatLogger()) + ws.Route(ws.GET("/ping").To(hello)) + restful.Add(ws) + http.ListenAndServe(":8080", nil) +} + +func hello(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "pong") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-basic-authentication.go b/vendor/github.com/emicklei/go-restful/examples/restful-basic-authentication.go new file mode 100644 index 000000000..5dd3067e9 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-basic-authentication.go @@ -0,0 +1,35 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "net/http" +) + +// This example shows how to create a (Route) Filter that performs Basic Authentication on the Http request. +// +// GET http://localhost:8080/secret +// and use admin,admin for the credentials + +func main() { + ws := new(restful.WebService) + ws.Route(ws.GET("/secret").Filter(basicAuthenticate).To(secret)) + restful.Add(ws) + http.ListenAndServe(":8080", nil) +} + +func basicAuthenticate(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + encoded := req.Request.Header.Get("Authorization") + // usr/pwd = admin/admin + // real code does some decoding + if len(encoded) == 0 || "Basic YWRtaW46YWRtaW4=" != encoded { + resp.AddHeader("WWW-Authenticate", "Basic realm=Protected Area") + resp.WriteErrorString(401, "401: Not Authorized") + return + } + chain.ProcessFilter(req, resp) +} + +func secret(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "42") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-cpuprofiler-service.go b/vendor/github.com/emicklei/go-restful/examples/restful-cpuprofiler-service.go new file mode 100644 index 000000000..9148213cf --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-cpuprofiler-service.go @@ -0,0 +1,65 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "log" + "os" + "runtime/pprof" +) + +// ProfilingService is a WebService that can start/stop a CPU profile and write results to a file +// GET /{rootPath}/start will activate CPU profiling +// GET /{rootPath}/stop will stop profiling +// +// NewProfileService("/profiler", "ace.prof").AddWebServiceTo(restful.DefaultContainer) +// +type ProfilingService struct { + rootPath string // the base (root) of the service, e.g. /profiler + cpuprofile string // the output filename to write profile results, e.g. myservice.prof + cpufile *os.File // if not nil, then profiling is active +} + +func NewProfileService(rootPath string, outputFilename string) *ProfilingService { + ps := new(ProfilingService) + ps.rootPath = rootPath + ps.cpuprofile = outputFilename + return ps +} + +// Add this ProfileService to a restful Container +func (p ProfilingService) AddWebServiceTo(container *restful.Container) { + ws := new(restful.WebService) + ws.Path(p.rootPath).Consumes("*/*").Produces(restful.MIME_JSON) + ws.Route(ws.GET("/start").To(p.startProfiler)) + ws.Route(ws.GET("/stop").To(p.stopProfiler)) + container.Add(ws) +} + +func (p *ProfilingService) startProfiler(req *restful.Request, resp *restful.Response) { + if p.cpufile != nil { + io.WriteString(resp.ResponseWriter, "[restful] CPU profiling already running") + return // error? + } + cpufile, err := os.Create(p.cpuprofile) + if err != nil { + log.Fatal(err) + } + // remember for close + p.cpufile = cpufile + pprof.StartCPUProfile(cpufile) + io.WriteString(resp.ResponseWriter, "[restful] CPU profiling started, writing on:"+p.cpuprofile) +} + +func (p *ProfilingService) stopProfiler(req *restful.Request, resp *restful.Response) { + if p.cpufile == nil { + io.WriteString(resp.ResponseWriter, "[restful] CPU profiling not active") + return // error? + } + pprof.StopCPUProfile() + p.cpufile.Close() + p.cpufile = nil + io.WriteString(resp.ResponseWriter, "[restful] CPU profiling stopped, closing:"+p.cpuprofile) +} + +func main() {} // exists for example compilation only diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-curly-router.go b/vendor/github.com/emicklei/go-restful/examples/restful-curly-router.go new file mode 100644 index 000000000..26da2f1c7 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-curly-router.go @@ -0,0 +1,107 @@ +package main + +import ( + "log" + "net/http" + + "github.com/emicklei/go-restful" +) + +// This example has the same service definition as restful-user-resource +// but uses a different router (CurlyRouter) that does not use regular expressions +// +// POST http://localhost:8080/users +// 1Melissa Raspberry +// +// GET http://localhost:8080/users/1 +// +// PUT http://localhost:8080/users/1 +// 1Melissa +// +// DELETE http://localhost:8080/users/1 +// + +type User struct { + Id, Name string +} + +type UserResource struct { + // normally one would use DAO (data access object) + users map[string]User +} + +func (u UserResource) Register(container *restful.Container) { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) // you can specify this per route as well + + ws.Route(ws.GET("/{user-id}").To(u.findUser)) + ws.Route(ws.POST("").To(u.updateUser)) + ws.Route(ws.PUT("/{user-id}").To(u.createUser)) + ws.Route(ws.DELETE("/{user-id}").To(u.removeUser)) + + container.Add(ws) +} + +// GET http://localhost:8080/users/1 +// +func (u UserResource) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + usr := u.users[id] + if len(usr.Id) == 0 { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusNotFound, "User could not be found.") + } else { + response.WriteEntity(usr) + } +} + +// POST http://localhost:8080/users +// 1Melissa Raspberry +// +func (u *UserResource) updateUser(request *restful.Request, response *restful.Response) { + usr := new(User) + err := request.ReadEntity(&usr) + if err == nil { + u.users[usr.Id] = *usr + response.WriteEntity(usr) + } else { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusInternalServerError, err.Error()) + } +} + +// PUT http://localhost:8080/users/1 +// 1Melissa +// +func (u *UserResource) createUser(request *restful.Request, response *restful.Response) { + usr := User{Id: request.PathParameter("user-id")} + err := request.ReadEntity(&usr) + if err == nil { + u.users[usr.Id] = usr + response.WriteHeaderAndEntity(http.StatusCreated, usr) + } else { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusInternalServerError, err.Error()) + } +} + +// DELETE http://localhost:8080/users/1 +// +func (u *UserResource) removeUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + delete(u.users, id) +} + +func main() { + wsContainer := restful.NewContainer() + wsContainer.Router(restful.CurlyRouter{}) + u := UserResource{map[string]User{}} + u.Register(wsContainer) + + log.Printf("start listening on localhost:8080") + server := &http.Server{Addr: ":8080", Handler: wsContainer} + log.Fatal(server.ListenAndServe()) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-curly-router_test.go b/vendor/github.com/emicklei/go-restful/examples/restful-curly-router_test.go new file mode 100644 index 000000000..d0760d340 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-curly-router_test.go @@ -0,0 +1,149 @@ +package main + +import ( + "bytes" + "errors" + "log" + "net/http" + "testing" + "time" + + "github.com/emicklei/go-restful" +) + +type User struct { + Id, Name string +} + +type UserResource struct { + users map[string]User +} + +func (u UserResource) Register(container *restful.Container) { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) + + ws.Route(ws.GET("/{user-id}").To(u.findUser)) + ws.Route(ws.POST("").To(u.updateUser)) + ws.Route(ws.PUT("/{user-id}").To(u.createUser)) + ws.Route(ws.DELETE("/{user-id}").To(u.removeUser)) + + container.Add(ws) +} + +// GET http://localhost:8090/users/1 +// +func (u UserResource) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + usr := u.users[id] + if len(usr.Id) == 0 { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusNotFound, "User could not be found.") + } else { + response.WriteEntity(usr) + } +} + +// POST http://localhost:8090/users +// 1Melissa Raspberry +// +func (u *UserResource) updateUser(request *restful.Request, response *restful.Response) { + usr := new(User) + err := request.ReadEntity(&usr) + if err == nil { + u.users[usr.Id] = *usr + response.WriteEntity(usr) + } else { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusInternalServerError, err.Error()) + } +} + +// PUT http://localhost:8090/users/1 +// 1Melissa +// +func (u *UserResource) createUser(request *restful.Request, response *restful.Response) { + usr := User{Id: request.PathParameter("user-id")} + err := request.ReadEntity(&usr) + if err == nil { + u.users[usr.Id] = usr + response.WriteHeader(http.StatusCreated) + response.WriteEntity(usr) + } else { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusInternalServerError, err.Error()) + } +} + +// DELETE http://localhost:8090/users/1 +// +func (u *UserResource) removeUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + delete(u.users, id) +} + +func RunRestfulCurlyRouterServer() { + wsContainer := restful.NewContainer() + wsContainer.Router(restful.CurlyRouter{}) + u := UserResource{map[string]User{}} + u.Register(wsContainer) + + log.Printf("start listening on localhost:8090") + server := &http.Server{Addr: ":8090", Handler: wsContainer} + log.Fatal(server.ListenAndServe()) +} + +func waitForServerUp(serverURL string) error { + for start := time.Now(); time.Since(start) < time.Minute; time.Sleep(5 * time.Second) { + _, err := http.Get(serverURL + "/") + if err == nil { + return nil + } + } + return errors.New("waiting for server timed out") +} + +func TestServer(t *testing.T) { + serverURL := "http://localhost:8090" + go func() { + RunRestfulCurlyRouterServer() + }() + if err := waitForServerUp(serverURL); err != nil { + t.Errorf("%v", err) + } + + // GET should give a 405 + resp, err := http.Get(serverURL + "/users/") + if err != nil { + t.Errorf("unexpected error in GET /users/: %v", err) + } + if resp.StatusCode != http.StatusMethodNotAllowed { + t.Errorf("unexpected response: %v, expected: %v", resp.StatusCode, http.StatusOK) + } + + // Send a POST request. + var jsonStr = []byte(`{"id":"1","name":"user1"}`) + req, err := http.NewRequest("POST", serverURL+"/users/", bytes.NewBuffer(jsonStr)) + req.Header.Set("Content-Type", restful.MIME_JSON) + + client := &http.Client{} + resp, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error in sending req: %v", err) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("unexpected response: %v, expected: %v", resp.StatusCode, http.StatusOK) + } + + // Test that GET works. + resp, err = http.Get(serverURL + "/users/1") + if err != nil { + t.Errorf("unexpected error in GET /users/1: %v", err) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("unexpected response: %v, expected: %v", resp.StatusCode, http.StatusOK) + } +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-encoding-filter.go b/vendor/github.com/emicklei/go-restful/examples/restful-encoding-filter.go new file mode 100644 index 000000000..6094c4909 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-encoding-filter.go @@ -0,0 +1,61 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "log" + "net/http" +) + +type User struct { + Id, Name string +} + +type UserList struct { + Users []User +} + +// +// This example shows how to use the CompressingResponseWriter by a Filter +// such that encoding can be enabled per WebService or per Route (instead of per container) +// Using restful.DefaultContainer.EnableContentEncoding(true) will encode all responses served by WebServices in the DefaultContainer. +// +// Set Accept-Encoding to gzip or deflate +// GET http://localhost:8080/users/42 +// and look at the response headers + +func main() { + restful.Add(NewUserService()) + log.Printf("start listening on localhost:8080") + log.Fatal(http.ListenAndServe(":8080", nil)) +} + +func NewUserService() *restful.WebService { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) + + // install a response encoding filter + ws.Route(ws.GET("/{user-id}").Filter(encodingFilter).To(findUser)) + return ws +} + +// Route Filter (defines FilterFunction) +func encodingFilter(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + log.Printf("[encoding-filter] %s,%s\n", req.Request.Method, req.Request.URL) + // wrap responseWriter into a compressing one + compress, _ := restful.NewCompressingResponseWriter(resp.ResponseWriter, restful.ENCODING_GZIP) + resp.ResponseWriter = compress + defer func() { + compress.Close() + }() + chain.ProcessFilter(req, resp) +} + +// GET http://localhost:8080/users/42 +// +func findUser(request *restful.Request, response *restful.Response) { + log.Printf("findUser") + response.WriteEntity(User{"42", "Gandalf"}) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-filters.go b/vendor/github.com/emicklei/go-restful/examples/restful-filters.go new file mode 100644 index 000000000..478aceace --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-filters.go @@ -0,0 +1,114 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "log" + "net/http" + "time" +) + +type User struct { + Id, Name string +} + +type UserList struct { + Users []User +} + +// This example show how to create and use the three different Filters (Container,WebService and Route) +// When applied to the restful.DefaultContainer, we refer to them as a global filter. +// +// GET http://locahost:8080/users/42 +// and see the logging per filter (try repeating this request) + +func main() { + // install a global (=DefaultContainer) filter (processed before any webservice in the DefaultContainer) + restful.Filter(globalLogging) + + restful.Add(NewUserService()) + log.Printf("start listening on localhost:8080") + log.Fatal(http.ListenAndServe(":8080", nil)) +} + +func NewUserService() *restful.WebService { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) + + // install a webservice filter (processed before any route) + ws.Filter(webserviceLogging).Filter(measureTime) + + // install a counter filter + ws.Route(ws.GET("").Filter(NewCountFilter().routeCounter).To(getAllUsers)) + + // install 2 chained route filters (processed before calling findUser) + ws.Route(ws.GET("/{user-id}").Filter(routeLogging).Filter(NewCountFilter().routeCounter).To(findUser)) + return ws +} + +// Global Filter +func globalLogging(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + log.Printf("[global-filter (logger)] %s,%s\n", req.Request.Method, req.Request.URL) + chain.ProcessFilter(req, resp) +} + +// WebService Filter +func webserviceLogging(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + log.Printf("[webservice-filter (logger)] %s,%s\n", req.Request.Method, req.Request.URL) + chain.ProcessFilter(req, resp) +} + +// WebService (post-process) Filter (as a struct that defines a FilterFunction) +func measureTime(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + now := time.Now() + chain.ProcessFilter(req, resp) + log.Printf("[webservice-filter (timer)] %v\n", time.Now().Sub(now)) +} + +// Route Filter (defines FilterFunction) +func routeLogging(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + log.Printf("[route-filter (logger)] %s,%s\n", req.Request.Method, req.Request.URL) + chain.ProcessFilter(req, resp) +} + +// Route Filter (as a struct that defines a FilterFunction) +// CountFilter implements a FilterFunction for counting requests. +type CountFilter struct { + count int + counter chan int // for go-routine safe count increments +} + +// NewCountFilter creates and initializes a new CountFilter. +func NewCountFilter() *CountFilter { + c := new(CountFilter) + c.counter = make(chan int) + go func() { + for { + c.count += <-c.counter + } + }() + return c +} + +// routeCounter increments the count of the filter (through a channel) +func (c *CountFilter) routeCounter(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + c.counter <- 1 + log.Printf("[route-filter (counter)] count:%d", c.count) + chain.ProcessFilter(req, resp) +} + +// GET http://localhost:8080/users +// +func getAllUsers(request *restful.Request, response *restful.Response) { + log.Printf("getAllUsers") + response.WriteEntity(UserList{[]User{{"42", "Gandalf"}, {"3.14", "Pi"}}}) +} + +// GET http://localhost:8080/users/42 +// +func findUser(request *restful.Request, response *restful.Response) { + log.Printf("findUser") + response.WriteEntity(User{"42", "Gandalf"}) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-form-handling.go b/vendor/github.com/emicklei/go-restful/examples/restful-form-handling.go new file mode 100644 index 000000000..a83db4492 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-form-handling.go @@ -0,0 +1,62 @@ +package main + +import ( + "fmt" + "github.com/emicklei/go-restful" + "github.com/gorilla/schema" + "io" + "net/http" +) + +// This example shows how to handle a POST of a HTML form that uses the standard x-www-form-urlencoded content-type. +// It uses the gorilla web tool kit schema package to decode the form data into a struct. +// +// GET http://localhost:8080/profiles +// + +type Profile struct { + Name string + Age int +} + +var decoder *schema.Decoder + +func main() { + decoder = schema.NewDecoder() + ws := new(restful.WebService) + ws.Route(ws.POST("/profiles").Consumes("application/x-www-form-urlencoded").To(postAdddress)) + ws.Route(ws.GET("/profiles").To(addresssForm)) + restful.Add(ws) + http.ListenAndServe(":8080", nil) +} + +func postAdddress(req *restful.Request, resp *restful.Response) { + err := req.Request.ParseForm() + if err != nil { + resp.WriteErrorString(http.StatusBadRequest, err.Error()) + return + } + p := new(Profile) + err = decoder.Decode(p, req.Request.PostForm) + if err != nil { + resp.WriteErrorString(http.StatusBadRequest, err.Error()) + return + } + io.WriteString(resp.ResponseWriter, fmt.Sprintf("Name=%s, Age=%d", p.Name, p.Age)) +} + +func addresssForm(req *restful.Request, resp *restful.Response) { + io.WriteString(resp.ResponseWriter, + ` + +

Enter Profile

+
+ + + + + +
+ + `) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-hello-world.go b/vendor/github.com/emicklei/go-restful/examples/restful-hello-world.go new file mode 100644 index 000000000..a21c2a69c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-hello-world.go @@ -0,0 +1,22 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "net/http" +) + +// This example shows the minimal code needed to get a restful.WebService working. +// +// GET http://localhost:8080/hello + +func main() { + ws := new(restful.WebService) + ws.Route(ws.GET("/hello").To(hello)) + restful.Add(ws) + http.ListenAndServe(":8080", nil) +} + +func hello(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "world") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-html-template.go b/vendor/github.com/emicklei/go-restful/examples/restful-html-template.go new file mode 100644 index 000000000..de51c5919 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-html-template.go @@ -0,0 +1,35 @@ +package main + +import ( + "log" + "net/http" + "text/template" + + "github.com/emicklei/go-restful" +) + +// This example shows how to serve a HTML page using the standard Go template engine. +// +// GET http://localhost:8080/ + +func main() { + ws := new(restful.WebService) + ws.Route(ws.GET("/").To(home)) + restful.Add(ws) + print("open browser on http://localhost:8080/\n") + http.ListenAndServe(":8080", nil) +} + +type Message struct { + Text string +} + +func home(req *restful.Request, resp *restful.Response) { + p := &Message{"restful-html-template demo"} + // you might want to cache compiled templates + t, err := template.ParseFiles("home.html") + if err != nil { + log.Fatalf("Template gave: %s", err) + } + t.Execute(resp.ResponseWriter, p) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-multi-containers.go b/vendor/github.com/emicklei/go-restful/examples/restful-multi-containers.go new file mode 100644 index 000000000..3f1650b36 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-multi-containers.go @@ -0,0 +1,43 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "log" + "net/http" +) + +// This example shows how to have a program with 2 WebServices containers +// each having a http server listening on its own port. +// +// The first "hello" is added to the restful.DefaultContainer (and uses DefaultServeMux) +// For the second "hello", a new container and ServeMux is created +// and requires a new http.Server with the container being the Handler. +// This first server is spawn in its own go-routine such that the program proceeds to create the second. +// +// GET http://localhost:8080/hello +// GET http://localhost:8081/hello + +func main() { + ws := new(restful.WebService) + ws.Route(ws.GET("/hello").To(hello)) + restful.Add(ws) + go func() { + http.ListenAndServe(":8080", nil) + }() + + container2 := restful.NewContainer() + ws2 := new(restful.WebService) + ws2.Route(ws2.GET("/hello").To(hello2)) + container2.Add(ws2) + server := &http.Server{Addr: ":8081", Handler: container2} + log.Fatal(server.ListenAndServe()) +} + +func hello(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "default world") +} + +func hello2(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "second world") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-no-cache-filter.go b/vendor/github.com/emicklei/go-restful/examples/restful-no-cache-filter.go new file mode 100644 index 000000000..2af932a16 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-no-cache-filter.go @@ -0,0 +1,24 @@ +package main + +import ( + "io" + "net/http" + + "github.com/emicklei/go-restful" +) + +// This example shows how to use a WebService filter that passed the Http headers to disable browser cacheing. +// +// GET http://localhost:8080/hello + +func main() { + ws := new(restful.WebService) + ws.Filter(restful.NoBrowserCacheFilter) + ws.Route(ws.GET("/hello").To(hello)) + restful.Add(ws) + http.ListenAndServe(":8080", nil) +} + +func hello(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "world") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-options-filter.go b/vendor/github.com/emicklei/go-restful/examples/restful-options-filter.go new file mode 100644 index 000000000..73dc3cfe5 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-options-filter.go @@ -0,0 +1,51 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "log" + "net/http" +) + +// This example shows how to use the OPTIONSFilter on a Container +// +// OPTIONS http://localhost:8080/users +// +// OPTIONS http://localhost:8080/users/1 + +type UserResource struct{} + +func (u UserResource) RegisterTo(container *restful.Container) { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes("*/*"). + Produces("*/*") + + ws.Route(ws.GET("/{user-id}").To(u.nop)) + ws.Route(ws.POST("").To(u.nop)) + ws.Route(ws.PUT("/{user-id}").To(u.nop)) + ws.Route(ws.DELETE("/{user-id}").To(u.nop)) + + container.Add(ws) +} + +func (u UserResource) nop(request *restful.Request, response *restful.Response) { + io.WriteString(response.ResponseWriter, "this would be a normal response") +} + +func main() { + wsContainer := restful.NewContainer() + u := UserResource{} + u.RegisterTo(wsContainer) + + // Add container filter to respond to OPTIONS + wsContainer.Filter(wsContainer.OPTIONSFilter) + + // For use on the default container, you can write + // restful.Filter(restful.OPTIONSFilter()) + + log.Printf("start listening on localhost:8080") + server := &http.Server{Addr: ":8080", Handler: wsContainer} + log.Fatal(server.ListenAndServe()) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-path-tail.go b/vendor/github.com/emicklei/go-restful/examples/restful-path-tail.go new file mode 100644 index 000000000..e1f163297 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-path-tail.go @@ -0,0 +1,26 @@ +package main + +import ( + . "github.com/emicklei/go-restful" + "io" + "net/http" +) + +// This example shows how to a Route that matches the "tail" of a path. +// Requires the use of a CurlyRouter and the star "*" path parameter pattern. +// +// GET http://localhost:8080/basepath/some/other/location/test.xml + +func main() { + DefaultContainer.Router(CurlyRouter{}) + ws := new(WebService) + ws.Route(ws.GET("/basepath/{resource:*}").To(staticFromPathParam)) + Add(ws) + + println("[go-restful] serve path tails from http://localhost:8080/basepath") + http.ListenAndServe(":8080", nil) +} + +func staticFromPathParam(req *Request, resp *Response) { + io.WriteString(resp, "Tail="+req.PathParameter("resource")) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-pre-post-filters.go b/vendor/github.com/emicklei/go-restful/examples/restful-pre-post-filters.go new file mode 100644 index 000000000..0b55f1493 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-pre-post-filters.go @@ -0,0 +1,98 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "io" + "log" + "net/http" +) + +// This example shows how the different types of filters are called in the request-response flow. +// The call chain is logged on the console when sending an http request. +// +// GET http://localhost:8080/1 +// GET http://localhost:8080/2 + +var indentLevel int + +func container_filter_A(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + log.Printf("url path:%v\n", req.Request.URL) + trace("container_filter_A: before", 1) + chain.ProcessFilter(req, resp) + trace("container_filter_A: after", -1) +} + +func container_filter_B(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + trace("container_filter_B: before", 1) + chain.ProcessFilter(req, resp) + trace("container_filter_B: after", -1) +} + +func service_filter_A(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + trace("service_filter_A: before", 1) + chain.ProcessFilter(req, resp) + trace("service_filter_A: after", -1) +} + +func service_filter_B(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + trace("service_filter_B: before", 1) + chain.ProcessFilter(req, resp) + trace("service_filter_B: after", -1) +} + +func route_filter_A(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + trace("route_filter_A: before", 1) + chain.ProcessFilter(req, resp) + trace("route_filter_A: after", -1) +} + +func route_filter_B(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + trace("route_filter_B: before", 1) + chain.ProcessFilter(req, resp) + trace("route_filter_B: after", -1) +} + +func trace(what string, delta int) { + indented := what + if delta < 0 { + indentLevel += delta + } + for t := 0; t < indentLevel; t++ { + indented = "." + indented + } + log.Printf("%s", indented) + if delta > 0 { + indentLevel += delta + } +} + +func main() { + restful.Filter(container_filter_A) + restful.Filter(container_filter_B) + + ws1 := new(restful.WebService) + ws1.Path("/1") + ws1.Filter(service_filter_A) + ws1.Filter(service_filter_B) + ws1.Route(ws1.GET("").To(doit1).Filter(route_filter_A).Filter(route_filter_B)) + + ws2 := new(restful.WebService) + ws2.Path("/2") + ws2.Filter(service_filter_A) + ws2.Filter(service_filter_B) + ws2.Route(ws2.GET("").To(doit2).Filter(route_filter_A).Filter(route_filter_B)) + + restful.Add(ws1) + restful.Add(ws2) + + log.Print("go-restful example listing on http://localhost:8080/1 and http://localhost:8080/2") + log.Fatal(http.ListenAndServe(":8080", nil)) +} + +func doit1(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "nothing to see in 1") +} + +func doit2(req *restful.Request, resp *restful.Response) { + io.WriteString(resp, "nothing to see in 2") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-resource-functions.go b/vendor/github.com/emicklei/go-restful/examples/restful-resource-functions.go new file mode 100644 index 000000000..fb1012a02 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-resource-functions.go @@ -0,0 +1,63 @@ +package main + +import ( + "github.com/emicklei/go-restful" + "log" + "net/http" +) + +// This example shows how to use methods as RouteFunctions for WebServices. +// The ProductResource has a Register() method that creates and initializes +// a WebService to expose its methods as REST operations. +// The WebService is added to the restful.DefaultContainer. +// A ProductResource is typically created using some data access object. +// +// GET http://localhost:8080/products/1 +// POST http://localhost:8080/products +// 1The First + +type Product struct { + Id, Title string +} + +type ProductResource struct { + // typically reference a DAO (data-access-object) +} + +func (p ProductResource) getOne(req *restful.Request, resp *restful.Response) { + id := req.PathParameter("id") + log.Println("getting product with id:" + id) + resp.WriteEntity(Product{Id: id, Title: "test"}) +} + +func (p ProductResource) postOne(req *restful.Request, resp *restful.Response) { + updatedProduct := new(Product) + err := req.ReadEntity(updatedProduct) + if err != nil { // bad request + resp.WriteErrorString(http.StatusBadRequest, err.Error()) + return + } + log.Println("updating product with id:" + updatedProduct.Id) +} + +func (p ProductResource) Register() { + ws := new(restful.WebService) + ws.Path("/products") + ws.Consumes(restful.MIME_XML) + ws.Produces(restful.MIME_XML) + + ws.Route(ws.GET("/{id}").To(p.getOne). + Doc("get the product by its id"). + Param(ws.PathParameter("id", "identifier of the product").DataType("string"))) + + ws.Route(ws.POST("").To(p.postOne). + Doc("update or create a product"). + Param(ws.BodyParameter("Product", "a Product (XML)").DataType("main.Product"))) + + restful.Add(ws) +} + +func main() { + ProductResource{}.Register() + http.ListenAndServe(":8080", nil) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-route_test.go b/vendor/github.com/emicklei/go-restful/examples/restful-route_test.go new file mode 100644 index 000000000..20c366bf9 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-route_test.go @@ -0,0 +1,39 @@ +package main + +import ( + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/emicklei/go-restful" +) + +var ( + Result string +) + +func TestRouteExtractParameter(t *testing.T) { + // setup service + ws := new(restful.WebService) + ws.Consumes(restful.MIME_XML) + ws.Route(ws.GET("/test/{param}").To(DummyHandler)) + restful.Add(ws) + + // setup request + writer + bodyReader := strings.NewReader("42") + httpRequest, _ := http.NewRequest("GET", "/test/THIS", bodyReader) + httpRequest.Header.Set("Content-Type", restful.MIME_XML) + httpWriter := httptest.NewRecorder() + + // run + restful.DefaultContainer.ServeHTTP(httpWriter, httpRequest) + + if Result != "THIS" { + t.Fatalf("Result is actually: %s", Result) + } +} + +func DummyHandler(rq *restful.Request, rp *restful.Response) { + Result = rq.PathParameter("param") +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-routefunction_test.go b/vendor/github.com/emicklei/go-restful/examples/restful-routefunction_test.go new file mode 100644 index 000000000..957c05550 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-routefunction_test.go @@ -0,0 +1,29 @@ +package main + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/emicklei/go-restful" +) + +// This example show how to test one particular RouteFunction (getIt) +// It uses the httptest.ResponseRecorder to capture output + +func getIt(req *restful.Request, resp *restful.Response) { + resp.WriteHeader(204) +} + +func TestCallFunction(t *testing.T) { + httpReq, _ := http.NewRequest("GET", "/", nil) + req := restful.NewRequest(httpReq) + + recorder := new(httptest.ResponseRecorder) + resp := restful.NewResponse(recorder) + + getIt(req, resp) + if recorder.Code != 204 { + t.Fatalf("Missing or wrong status code:%d", recorder.Code) + } +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-serve-static.go b/vendor/github.com/emicklei/go-restful/examples/restful-serve-static.go new file mode 100644 index 000000000..8cb7848c1 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-serve-static.go @@ -0,0 +1,47 @@ +package main + +import ( + "fmt" + "net/http" + "path" + + "github.com/emicklei/go-restful" +) + +// This example shows how to define methods that serve static files +// It uses the standard http.ServeFile method +// +// GET http://localhost:8080/static/test.xml +// GET http://localhost:8080/static/ +// +// GET http://localhost:8080/static?resource=subdir/test.xml + +var rootdir = "/tmp" + +func main() { + restful.DefaultContainer.Router(restful.CurlyRouter{}) + + ws := new(restful.WebService) + ws.Route(ws.GET("/static/{subpath:*}").To(staticFromPathParam)) + ws.Route(ws.GET("/static").To(staticFromQueryParam)) + restful.Add(ws) + + println("[go-restful] serving files on http://localhost:8080/static from local /tmp") + http.ListenAndServe(":8080", nil) +} + +func staticFromPathParam(req *restful.Request, resp *restful.Response) { + actual := path.Join(rootdir, req.PathParameter("subpath")) + fmt.Printf("serving %s ... (from %s)\n", actual, req.PathParameter("subpath")) + http.ServeFile( + resp.ResponseWriter, + req.Request, + actual) +} + +func staticFromQueryParam(req *restful.Request, resp *restful.Response) { + http.ServeFile( + resp.ResponseWriter, + req.Request, + path.Join(rootdir, req.QueryParameter("resource"))) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-swagger.go b/vendor/github.com/emicklei/go-restful/examples/restful-swagger.go new file mode 100644 index 000000000..261f29d2b --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-swagger.go @@ -0,0 +1,61 @@ +package main + +import ( + "log" + "net/http" + + "github.com/emicklei/go-restful" + "github.com/emicklei/go-restful-swagger12" +) + +type Book struct { + Title string + Author string +} + +func main() { + ws := new(restful.WebService) + ws.Path("/books") + ws.Consumes(restful.MIME_JSON, restful.MIME_XML) + ws.Produces(restful.MIME_JSON, restful.MIME_XML) + restful.Add(ws) + + ws.Route(ws.GET("/{medium}").To(noop). + Doc("Search all books"). + Param(ws.PathParameter("medium", "digital or paperback").DataType("string")). + Param(ws.QueryParameter("language", "en,nl,de").DataType("string")). + Param(ws.HeaderParameter("If-Modified-Since", "last known timestamp").DataType("datetime")). + Do(returns200, returns500)) + + ws.Route(ws.PUT("/{medium}").To(noop). + Doc("Add a new book"). + Param(ws.PathParameter("medium", "digital or paperback").DataType("string")). + Reads(Book{})) + + // You can install the Swagger Service which provides a nice Web UI on your REST API + // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. + // Open http://localhost:8080/apidocs and enter http://localhost:8080/apidocs.json in the api input field. + config := swagger.Config{ + WebServices: restful.DefaultContainer.RegisteredWebServices(), // you control what services are visible + WebServicesUrl: "http://localhost:8080", + ApiPath: "/apidocs.json", + + // Optionally, specifiy where the UI is located + SwaggerPath: "/apidocs/", + SwaggerFilePath: "/Users/emicklei/xProjects/swagger-ui/dist"} + swagger.RegisterSwaggerService(config, restful.DefaultContainer) + + log.Printf("start listening on localhost:8080") + server := &http.Server{Addr: ":8080", Handler: restful.DefaultContainer} + log.Fatal(server.ListenAndServe()) +} + +func noop(req *restful.Request, resp *restful.Response) {} + +func returns200(b *restful.RouteBuilder) { + b.Returns(http.StatusOK, "OK", Book{}) +} + +func returns500(b *restful.RouteBuilder) { + b.Returns(http.StatusInternalServerError, "Bummer, something went wrong", nil) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-user-resource.go b/vendor/github.com/emicklei/go-restful/examples/restful-user-resource.go new file mode 100644 index 000000000..4c18dad18 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-user-resource.go @@ -0,0 +1,152 @@ +package main + +import ( + "log" + "net/http" + "strconv" + + "github.com/emicklei/go-restful" + "github.com/emicklei/go-restful-swagger12" +) + +// This example show a complete (GET,PUT,POST,DELETE) conventional example of +// a REST Resource including documentation to be served by e.g. a Swagger UI +// It is recommended to create a Resource struct (UserResource) that can encapsulate +// an object that provide domain access (a DAO) +// It has a Register method including the complete Route mapping to methods together +// with all the appropriate documentation +// +// POST http://localhost:8080/users +// 1Melissa Raspberry +// +// GET http://localhost:8080/users/1 +// +// PUT http://localhost:8080/users/1 +// 1Melissa +// +// DELETE http://localhost:8080/users/1 +// + +type User struct { + Id, Name string +} + +type UserResource struct { + // normally one would use DAO (data access object) + users map[string]User +} + +func (u UserResource) Register(container *restful.Container) { + ws := new(restful.WebService) + ws. + Path("/users"). + Doc("Manage Users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) // you can specify this per route as well + + ws.Route(ws.GET("/{user-id}").To(u.findUser). + // docs + Doc("get a user"). + Operation("findUser"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + Writes(User{})) // on the response + + ws.Route(ws.PUT("/{user-id}").To(u.updateUser). + // docs + Doc("update a user"). + Operation("updateUser"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + ReturnsError(409, "duplicate user-id", nil). + Reads(User{})) // from the request + + ws.Route(ws.POST("").To(u.createUser). + // docs + Doc("create a user"). + Operation("createUser"). + Reads(User{})) // from the request + + ws.Route(ws.DELETE("/{user-id}").To(u.removeUser). + // docs + Doc("delete a user"). + Operation("removeUser"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string"))) + + container.Add(ws) +} + +// GET http://localhost:8080/users/1 +// +func (u UserResource) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + usr := u.users[id] + if len(usr.Id) == 0 { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusNotFound, "404: User could not be found.") + return + } + response.WriteEntity(usr) +} + +// POST http://localhost:8080/users +// Melissa +// +func (u *UserResource) createUser(request *restful.Request, response *restful.Response) { + usr := new(User) + err := request.ReadEntity(usr) + if err != nil { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusInternalServerError, err.Error()) + return + } + usr.Id = strconv.Itoa(len(u.users) + 1) // simple id generation + u.users[usr.Id] = *usr + response.WriteHeaderAndEntity(http.StatusCreated, usr) +} + +// PUT http://localhost:8080/users/1 +// 1Melissa Raspberry +// +func (u *UserResource) updateUser(request *restful.Request, response *restful.Response) { + usr := new(User) + err := request.ReadEntity(&usr) + if err != nil { + response.AddHeader("Content-Type", "text/plain") + response.WriteErrorString(http.StatusInternalServerError, err.Error()) + return + } + u.users[usr.Id] = *usr + response.WriteEntity(usr) +} + +// DELETE http://localhost:8080/users/1 +// +func (u *UserResource) removeUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + delete(u.users, id) +} + +func main() { + // to see what happens in the package, uncomment the following + //restful.TraceLogger(log.New(os.Stdout, "[restful] ", log.LstdFlags|log.Lshortfile)) + + wsContainer := restful.NewContainer() + u := UserResource{map[string]User{}} + u.Register(wsContainer) + + // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API + // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. + // Open http://localhost:8080/apidocs and enter http://localhost:8080/apidocs.json in the api input field. + config := swagger.Config{ + WebServices: wsContainer.RegisteredWebServices(), // you control what services are visible + WebServicesUrl: "http://localhost:8080", + ApiPath: "/apidocs.json", + + // Optionally, specifiy where the UI is located + SwaggerPath: "/apidocs/", + SwaggerFilePath: "/Users/emicklei/xProjects/swagger-ui/dist"} + swagger.RegisterSwaggerService(config, wsContainer) + + log.Printf("start listening on localhost:8080") + server := &http.Server{Addr: ":8080", Handler: wsContainer} + log.Fatal(server.ListenAndServe()) +} diff --git a/vendor/github.com/emicklei/go-restful/examples/restful-user-service.go b/vendor/github.com/emicklei/go-restful/examples/restful-user-service.go new file mode 100644 index 000000000..83297fc71 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/examples/restful-user-service.go @@ -0,0 +1,143 @@ +package main + +import ( + "log" + "net/http" + + "github.com/emicklei/go-restful" + "github.com/emicklei/go-restful-swagger12" +) + +// This example is functionally the same as the example in restful-user-resource.go +// with the only difference that is served using the restful.DefaultContainer + +type User struct { + Id, Name string +} + +type UserService struct { + // normally one would use DAO (data access object) + users map[string]User +} + +func (u UserService) Register() { + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_XML, restful.MIME_JSON). + Produces(restful.MIME_JSON, restful.MIME_XML) // you can specify this per route as well + + ws.Route(ws.GET("/").To(u.findAllUsers). + // docs + Doc("get all users"). + Operation("findAllUsers"). + Writes([]User{}). + Returns(200, "OK", nil)) + + ws.Route(ws.GET("/{user-id}").To(u.findUser). + // docs + Doc("get a user"). + Operation("findUser"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + Writes(User{}). // on the response + Returns(404, "Not Found", nil)) + + ws.Route(ws.PUT("/{user-id}").To(u.updateUser). + // docs + Doc("update a user"). + Operation("updateUser"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")). + Reads(User{})) // from the request + + ws.Route(ws.PUT("").To(u.createUser). + // docs + Doc("create a user"). + Operation("createUser"). + Reads(User{})) // from the request + + ws.Route(ws.DELETE("/{user-id}").To(u.removeUser). + // docs + Doc("delete a user"). + Operation("removeUser"). + Param(ws.PathParameter("user-id", "identifier of the user").DataType("string"))) + + restful.Add(ws) +} + +// GET http://localhost:8080/users +// +func (u UserService) findAllUsers(request *restful.Request, response *restful.Response) { + list := []User{} + for _, each := range u.users { + list = append(list, each) + } + response.WriteEntity(list) +} + +// GET http://localhost:8080/users/1 +// +func (u UserService) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + usr := u.users[id] + if len(usr.Id) == 0 { + response.WriteErrorString(http.StatusNotFound, "User could not be found.") + } else { + response.WriteEntity(usr) + } +} + +// PUT http://localhost:8080/users/1 +// 1Melissa Raspberry +// +func (u *UserService) updateUser(request *restful.Request, response *restful.Response) { + usr := new(User) + err := request.ReadEntity(&usr) + if err == nil { + u.users[usr.Id] = *usr + response.WriteEntity(usr) + } else { + response.WriteError(http.StatusInternalServerError, err) + } +} + +// PUT http://localhost:8080/users/1 +// 1Melissa +// +func (u *UserService) createUser(request *restful.Request, response *restful.Response) { + usr := User{Id: request.PathParameter("user-id")} + err := request.ReadEntity(&usr) + if err == nil { + u.users[usr.Id] = usr + response.WriteHeaderAndEntity(http.StatusCreated, usr) + } else { + response.WriteError(http.StatusInternalServerError, err) + } +} + +// DELETE http://localhost:8080/users/1 +// +func (u *UserService) removeUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + delete(u.users, id) +} + +func main() { + u := UserService{map[string]User{}} + u.Register() + + // Optionally, you can install the Swagger Service which provides a nice Web UI on your REST API + // You need to download the Swagger HTML5 assets and change the FilePath location in the config below. + // Open http://localhost:8080/apidocs and enter http://localhost:8080/apidocs.json in the api input field. + config := swagger.Config{ + WebServices: restful.RegisteredWebServices(), // you control what services are visible + WebServicesUrl: "http://localhost:8080", + ApiPath: "/apidocs.json", + + // Optionally, specifiy where the UI is located + SwaggerPath: "/apidocs/", + SwaggerFilePath: "/Users/emicklei/Projects/swagger-ui/dist"} + swagger.InstallSwaggerService(config) + + log.Printf("start listening on localhost:8080") + log.Fatal(http.ListenAndServe(":8080", nil)) +} diff --git a/vendor/github.com/emicklei/go-restful/filter.go b/vendor/github.com/emicklei/go-restful/filter.go new file mode 100644 index 000000000..c23bfb591 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/filter.go @@ -0,0 +1,35 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// FilterChain is a request scoped object to process one or more filters before calling the target RouteFunction. +type FilterChain struct { + Filters []FilterFunction // ordered list of FilterFunction + Index int // index into filters that is currently in progress + Target RouteFunction // function to call after passing all filters +} + +// ProcessFilter passes the request,response pair through the next of Filters. +// Each filter can decide to proceed to the next Filter or handle the Response itself. +func (f *FilterChain) ProcessFilter(request *Request, response *Response) { + if f.Index < len(f.Filters) { + f.Index++ + f.Filters[f.Index-1](request, response, f) + } else { + f.Target(request, response) + } +} + +// FilterFunction definitions must call ProcessFilter on the FilterChain to pass on the control and eventually call the RouteFunction +type FilterFunction func(*Request, *Response, *FilterChain) + +// NoBrowserCacheFilter is a filter function to set HTTP headers that disable browser caching +// See examples/restful-no-cache-filter.go for usage +func NoBrowserCacheFilter(req *Request, resp *Response, chain *FilterChain) { + resp.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1. + resp.Header().Set("Pragma", "no-cache") // HTTP 1.0. + resp.Header().Set("Expires", "0") // Proxies. + chain.ProcessFilter(req, resp) +} diff --git a/vendor/github.com/emicklei/go-restful/filter_test.go b/vendor/github.com/emicklei/go-restful/filter_test.go new file mode 100644 index 000000000..fadfb570f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/filter_test.go @@ -0,0 +1,141 @@ +package restful + +import ( + "io" + "net/http" + "net/http/httptest" + "testing" +) + +func setupServices(addGlobalFilter bool, addServiceFilter bool, addRouteFilter bool) { + if addGlobalFilter { + Filter(globalFilter) + } + Add(newTestService(addServiceFilter, addRouteFilter)) +} + +func tearDown() { + DefaultContainer.webServices = []*WebService{} + DefaultContainer.isRegisteredOnRoot = true // this allows for setupServices multiple times + DefaultContainer.containerFilters = []FilterFunction{} +} + +func newTestService(addServiceFilter bool, addRouteFilter bool) *WebService { + ws := new(WebService).Path("") + if addServiceFilter { + ws.Filter(serviceFilter) + } + rb := ws.GET("/foo").To(foo) + if addRouteFilter { + rb.Filter(routeFilter) + } + ws.Route(rb) + ws.Route(ws.GET("/bar").To(bar)) + return ws +} + +func foo(req *Request, resp *Response) { + io.WriteString(resp.ResponseWriter, "foo") +} + +func bar(req *Request, resp *Response) { + io.WriteString(resp.ResponseWriter, "bar") +} + +func fail(req *Request, resp *Response) { + http.Error(resp.ResponseWriter, "something failed", http.StatusInternalServerError) +} + +func globalFilter(req *Request, resp *Response, chain *FilterChain) { + io.WriteString(resp.ResponseWriter, "global-") + chain.ProcessFilter(req, resp) +} + +func serviceFilter(req *Request, resp *Response, chain *FilterChain) { + io.WriteString(resp.ResponseWriter, "service-") + chain.ProcessFilter(req, resp) +} + +func routeFilter(req *Request, resp *Response, chain *FilterChain) { + io.WriteString(resp.ResponseWriter, "route-") + chain.ProcessFilter(req, resp) +} + +func TestNoFilter(t *testing.T) { + tearDown() + setupServices(false, false, false) + actual := sendIt("http://example.com/foo") + if "foo" != actual { + t.Fatal("expected: foo but got:" + actual) + } +} + +func TestGlobalFilter(t *testing.T) { + tearDown() + setupServices(true, false, false) + actual := sendIt("http://example.com/foo") + if "global-foo" != actual { + t.Fatal("expected: global-foo but got:" + actual) + } +} + +func TestWebServiceFilter(t *testing.T) { + tearDown() + setupServices(true, true, false) + actual := sendIt("http://example.com/foo") + if "global-service-foo" != actual { + t.Fatal("expected: global-service-foo but got:" + actual) + } +} + +func TestRouteFilter(t *testing.T) { + tearDown() + setupServices(true, true, true) + actual := sendIt("http://example.com/foo") + if "global-service-route-foo" != actual { + t.Fatal("expected: global-service-route-foo but got:" + actual) + } +} + +func TestRouteFilterOnly(t *testing.T) { + tearDown() + setupServices(false, false, true) + actual := sendIt("http://example.com/foo") + if "route-foo" != actual { + t.Fatal("expected: route-foo but got:" + actual) + } +} + +func TestBar(t *testing.T) { + tearDown() + setupServices(false, true, false) + actual := sendIt("http://example.com/bar") + if "service-bar" != actual { + t.Fatal("expected: service-bar but got:" + actual) + } +} + +func TestAllFiltersBar(t *testing.T) { + tearDown() + setupServices(true, true, true) + actual := sendIt("http://example.com/bar") + if "global-service-bar" != actual { + t.Fatal("expected: global-service-bar but got:" + actual) + } +} + +func sendIt(address string) string { + httpRequest, _ := http.NewRequest("GET", address, nil) + httpRequest.Header.Set("Accept", "*/*") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + return httpWriter.Body.String() +} + +func sendItTo(address string, container *Container) string { + httpRequest, _ := http.NewRequest("GET", address, nil) + httpRequest.Header.Set("Accept", "*/*") + httpWriter := httptest.NewRecorder() + container.dispatch(httpWriter, httpRequest) + return httpWriter.Body.String() +} diff --git a/vendor/github.com/emicklei/go-restful/jsr311.go b/vendor/github.com/emicklei/go-restful/jsr311.go new file mode 100644 index 000000000..511444ac6 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/jsr311.go @@ -0,0 +1,248 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "errors" + "fmt" + "net/http" + "sort" +) + +// RouterJSR311 implements the flow for matching Requests to Routes (and consequently Resource Functions) +// as specified by the JSR311 http://jsr311.java.net/nonav/releases/1.1/spec/spec.html. +// RouterJSR311 implements the Router interface. +// Concept of locators is not implemented. +type RouterJSR311 struct{} + +// SelectRoute is part of the Router interface and returns the best match +// for the WebService and its Route for the given Request. +func (r RouterJSR311) SelectRoute( + webServices []*WebService, + httpRequest *http.Request) (selectedService *WebService, selectedRoute *Route, err error) { + + // Identify the root resource class (WebService) + dispatcher, finalMatch, err := r.detectDispatcher(httpRequest.URL.Path, webServices) + if err != nil { + return nil, nil, NewError(http.StatusNotFound, "") + } + // Obtain the set of candidate methods (Routes) + routes := r.selectRoutes(dispatcher, finalMatch) + if len(routes) == 0 { + return dispatcher, nil, NewError(http.StatusNotFound, "404: Page Not Found") + } + + // Identify the method (Route) that will handle the request + route, ok := r.detectRoute(routes, httpRequest) + return dispatcher, route, ok +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 +func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Request) (*Route, error) { + // http method + methodOk := []Route{} + for _, each := range routes { + if httpRequest.Method == each.Method { + methodOk = append(methodOk, each) + } + } + if len(methodOk) == 0 { + if trace { + traceLogger.Printf("no Route found (in %d routes) that matches HTTP method %s\n", len(routes), httpRequest.Method) + } + return nil, NewError(http.StatusMethodNotAllowed, "405: Method Not Allowed") + } + inputMediaOk := methodOk + + // content-type + contentType := httpRequest.Header.Get(HEADER_ContentType) + inputMediaOk = []Route{} + for _, each := range methodOk { + if each.matchesContentType(contentType) { + inputMediaOk = append(inputMediaOk, each) + } + } + if len(inputMediaOk) == 0 { + if trace { + traceLogger.Printf("no Route found (from %d) that matches HTTP Content-Type: %s\n", len(methodOk), contentType) + } + return nil, NewError(http.StatusUnsupportedMediaType, "415: Unsupported Media Type") + } + + // accept + outputMediaOk := []Route{} + accept := httpRequest.Header.Get(HEADER_Accept) + if len(accept) == 0 { + accept = "*/*" + } + for _, each := range inputMediaOk { + if each.matchesAccept(accept) { + outputMediaOk = append(outputMediaOk, each) + } + } + if len(outputMediaOk) == 0 { + if trace { + traceLogger.Printf("no Route found (from %d) that matches HTTP Accept: %s\n", len(inputMediaOk), accept) + } + return nil, NewError(http.StatusNotAcceptable, "406: Not Acceptable") + } + // return r.bestMatchByMedia(outputMediaOk, contentType, accept), nil + return &outputMediaOk[0], nil +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 +// n/m > n/* > */* +func (r RouterJSR311) bestMatchByMedia(routes []Route, contentType string, accept string) *Route { + // TODO + return &routes[0] +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 (step 2) +func (r RouterJSR311) selectRoutes(dispatcher *WebService, pathRemainder string) []Route { + filtered := &sortableRouteCandidates{} + for _, each := range dispatcher.Routes() { + pathExpr := each.pathExpr + matches := pathExpr.Matcher.FindStringSubmatch(pathRemainder) + if matches != nil { + lastMatch := matches[len(matches)-1] + if len(lastMatch) == 0 || lastMatch == "/" { // do not include if value is neither empty nor ‘/’. + filtered.candidates = append(filtered.candidates, + routeCandidate{each, len(matches) - 1, pathExpr.LiteralCount, pathExpr.VarCount}) + } + } + } + if len(filtered.candidates) == 0 { + if trace { + traceLogger.Printf("WebService on path %s has no routes that match URL path remainder:%s\n", dispatcher.rootPath, pathRemainder) + } + return []Route{} + } + sort.Sort(sort.Reverse(filtered)) + + // select other routes from candidates whoes expression matches rmatch + matchingRoutes := []Route{filtered.candidates[0].route} + for c := 1; c < len(filtered.candidates); c++ { + each := filtered.candidates[c] + if each.route.pathExpr.Matcher.MatchString(pathRemainder) { + matchingRoutes = append(matchingRoutes, each.route) + } + } + return matchingRoutes +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 (step 1) +func (r RouterJSR311) detectDispatcher(requestPath string, dispatchers []*WebService) (*WebService, string, error) { + filtered := &sortableDispatcherCandidates{} + for _, each := range dispatchers { + matches := each.pathExpr.Matcher.FindStringSubmatch(requestPath) + if matches != nil { + filtered.candidates = append(filtered.candidates, + dispatcherCandidate{each, matches[len(matches)-1], len(matches), each.pathExpr.LiteralCount, each.pathExpr.VarCount}) + } + } + if len(filtered.candidates) == 0 { + if trace { + traceLogger.Printf("no WebService was found to match URL path:%s\n", requestPath) + } + return nil, "", errors.New("not found") + } + sort.Sort(sort.Reverse(filtered)) + return filtered.candidates[0].dispatcher, filtered.candidates[0].finalMatch, nil +} + +// Types and functions to support the sorting of Routes + +type routeCandidate struct { + route Route + matchesCount int // the number of capturing groups + literalCount int // the number of literal characters (means those not resulting from template variable substitution) + nonDefaultCount int // the number of capturing groups with non-default regular expressions (i.e. not ‘([^ /]+?)’) +} + +func (r routeCandidate) expressionToMatch() string { + return r.route.pathExpr.Source +} + +func (r routeCandidate) String() string { + return fmt.Sprintf("(m=%d,l=%d,n=%d)", r.matchesCount, r.literalCount, r.nonDefaultCount) +} + +type sortableRouteCandidates struct { + candidates []routeCandidate +} + +func (rcs *sortableRouteCandidates) Len() int { + return len(rcs.candidates) +} +func (rcs *sortableRouteCandidates) Swap(i, j int) { + rcs.candidates[i], rcs.candidates[j] = rcs.candidates[j], rcs.candidates[i] +} +func (rcs *sortableRouteCandidates) Less(i, j int) bool { + ci := rcs.candidates[i] + cj := rcs.candidates[j] + // primary key + if ci.literalCount < cj.literalCount { + return true + } + if ci.literalCount > cj.literalCount { + return false + } + // secundary key + if ci.matchesCount < cj.matchesCount { + return true + } + if ci.matchesCount > cj.matchesCount { + return false + } + // tertiary key + if ci.nonDefaultCount < cj.nonDefaultCount { + return true + } + if ci.nonDefaultCount > cj.nonDefaultCount { + return false + } + // quaternary key ("source" is interpreted as Path) + return ci.route.Path < cj.route.Path +} + +// Types and functions to support the sorting of Dispatchers + +type dispatcherCandidate struct { + dispatcher *WebService + finalMatch string + matchesCount int // the number of capturing groups + literalCount int // the number of literal characters (means those not resulting from template variable substitution) + nonDefaultCount int // the number of capturing groups with non-default regular expressions (i.e. not ‘([^ /]+?)’) +} +type sortableDispatcherCandidates struct { + candidates []dispatcherCandidate +} + +func (dc *sortableDispatcherCandidates) Len() int { + return len(dc.candidates) +} +func (dc *sortableDispatcherCandidates) Swap(i, j int) { + dc.candidates[i], dc.candidates[j] = dc.candidates[j], dc.candidates[i] +} +func (dc *sortableDispatcherCandidates) Less(i, j int) bool { + ci := dc.candidates[i] + cj := dc.candidates[j] + // primary key + if ci.matchesCount < cj.matchesCount { + return true + } + if ci.matchesCount > cj.matchesCount { + return false + } + // secundary key + if ci.literalCount < cj.literalCount { + return true + } + if ci.literalCount > cj.literalCount { + return false + } + // tertiary key + return ci.nonDefaultCount < cj.nonDefaultCount +} diff --git a/vendor/github.com/emicklei/go-restful/jsr311_test.go b/vendor/github.com/emicklei/go-restful/jsr311_test.go new file mode 100644 index 000000000..3e79a6def --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/jsr311_test.go @@ -0,0 +1,212 @@ +package restful + +import ( + "io" + "sort" + "testing" +) + +// +// Step 1 tests +// +var paths = []struct { + // url with path (1) is handled by service with root (2) and last capturing group has value final (3) + path, root, final string +}{ + {"/", "/", "/"}, + {"/p", "/p", ""}, + {"/p/x", "/p/{q}", ""}, + {"/q/x", "/q", "/x"}, + {"/p/x/", "/p/{q}", "/"}, + {"/p/x/y", "/p/{q}", "/y"}, + {"/q/x/y", "/q", "/x/y"}, + {"/z/q", "/{p}/q", ""}, + {"/a/b/c/q", "/", "/a/b/c/q"}, +} + +func TestDetectDispatcher(t *testing.T) { + ws1 := new(WebService).Path("/") + ws2 := new(WebService).Path("/p") + ws3 := new(WebService).Path("/q") + ws4 := new(WebService).Path("/p/q") + ws5 := new(WebService).Path("/p/{q}") + ws6 := new(WebService).Path("/p/{q}/") + ws7 := new(WebService).Path("/{p}/q") + var dispatchers = []*WebService{ws1, ws2, ws3, ws4, ws5, ws6, ws7} + + wc := NewContainer() + for _, each := range dispatchers { + wc.Add(each) + } + + router := RouterJSR311{} + + ok := true + for i, fixture := range paths { + who, final, err := router.detectDispatcher(fixture.path, dispatchers) + if err != nil { + t.Logf("error in detection:%v", err) + ok = false + } + if who.RootPath() != fixture.root { + t.Logf("[line:%v] Unexpected dispatcher, expected:%v, actual:%v", i, fixture.root, who.RootPath()) + ok = false + } + if final != fixture.final { + t.Logf("[line:%v] Unexpected final, expected:%v, actual:%v", i, fixture.final, final) + ok = false + } + } + if !ok { + t.Fail() + } +} + +// +// Step 2 tests +// + +// go test -v -test.run TestISSUE_179 ...restful +func TestISSUE_179(t *testing.T) { + ws1 := new(WebService) + ws1.Route(ws1.GET("/v1/category/{param:*}").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/v1/category/sub/sub") + t.Logf("%v", routes) +} + +// go test -v -test.run TestISSUE_30 ...restful +func TestISSUE_30(t *testing.T) { + ws1 := new(WebService).Path("/users") + ws1.Route(ws1.GET("/{id}").To(dummy)) + ws1.Route(ws1.POST("/login").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/login") + if len(routes) != 2 { + t.Fatal("expected 2 routes") + } + if routes[0].Path != "/users/login" { + t.Error("first is", routes[0].Path) + t.Logf("routes:%v", routes) + } +} + +// go test -v -test.run TestISSUE_34 ...restful +func TestISSUE_34(t *testing.T) { + ws1 := new(WebService).Path("/") + ws1.Route(ws1.GET("/{type}/{id}").To(dummy)) + ws1.Route(ws1.GET("/network/{id}").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/network/12") + if len(routes) != 2 { + t.Fatal("expected 2 routes") + } + if routes[0].Path != "/network/{id}" { + t.Error("first is", routes[0].Path) + t.Logf("routes:%v", routes) + } +} + +// go test -v -test.run TestISSUE_34_2 ...restful +func TestISSUE_34_2(t *testing.T) { + ws1 := new(WebService).Path("/") + // change the registration order + ws1.Route(ws1.GET("/network/{id}").To(dummy)) + ws1.Route(ws1.GET("/{type}/{id}").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/network/12") + if len(routes) != 2 { + t.Fatal("expected 2 routes") + } + if routes[0].Path != "/network/{id}" { + t.Error("first is", routes[0].Path) + } +} + +// go test -v -test.run TestISSUE_137 ...restful +func TestISSUE_137(t *testing.T) { + ws1 := new(WebService) + ws1.Route(ws1.GET("/hello").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/") + t.Log(routes) + if len(routes) > 0 { + t.Error("no route expected") + } +} + +func TestSelectRoutesSlash(t *testing.T) { + ws1 := new(WebService).Path("/") + ws1.Route(ws1.GET("").To(dummy)) + ws1.Route(ws1.GET("/").To(dummy)) + ws1.Route(ws1.GET("/u").To(dummy)) + ws1.Route(ws1.POST("/u").To(dummy)) + ws1.Route(ws1.POST("/u/v").To(dummy)) + ws1.Route(ws1.POST("/u/{w}").To(dummy)) + ws1.Route(ws1.POST("/u/{w}/z").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/u") + checkRoutesContains(routes, "/u", t) + checkRoutesContainsNo(routes, "/u/v", t) + checkRoutesContainsNo(routes, "/", t) + checkRoutesContainsNo(routes, "/u/{w}/z", t) +} +func TestSelectRoutesU(t *testing.T) { + ws1 := new(WebService).Path("/u") + ws1.Route(ws1.GET("").To(dummy)) + ws1.Route(ws1.GET("/").To(dummy)) + ws1.Route(ws1.GET("/v").To(dummy)) + ws1.Route(ws1.POST("/{w}").To(dummy)) + ws1.Route(ws1.POST("/{w}/z").To(dummy)) // so full path = /u/{w}/z + routes := RouterJSR311{}.selectRoutes(ws1, "/v") // test against /u/v + checkRoutesContains(routes, "/u/{w}", t) +} + +func TestSelectRoutesUsers1(t *testing.T) { + ws1 := new(WebService).Path("/users") + ws1.Route(ws1.POST("").To(dummy)) + ws1.Route(ws1.POST("/").To(dummy)) + ws1.Route(ws1.PUT("/{id}").To(dummy)) + routes := RouterJSR311{}.selectRoutes(ws1, "/1") + checkRoutesContains(routes, "/users/{id}", t) +} +func checkRoutesContains(routes []Route, path string, t *testing.T) { + if !containsRoutePath(routes, path, t) { + for _, r := range routes { + t.Logf("route %v %v", r.Method, r.Path) + } + t.Fatalf("routes should include [%v]:", path) + } +} +func checkRoutesContainsNo(routes []Route, path string, t *testing.T) { + if containsRoutePath(routes, path, t) { + for _, r := range routes { + t.Logf("route %v %v", r.Method, r.Path) + } + t.Fatalf("routes should not include [%v]:", path) + } +} +func containsRoutePath(routes []Route, path string, t *testing.T) bool { + for _, each := range routes { + if each.Path == path { + return true + } + } + return false +} + +// go test -v -test.run TestSortableRouteCandidates ...restful +func TestSortableRouteCandidates(t *testing.T) { + fixture := &sortableRouteCandidates{} + r1 := routeCandidate{matchesCount: 0, literalCount: 0, nonDefaultCount: 0} + r2 := routeCandidate{matchesCount: 0, literalCount: 0, nonDefaultCount: 1} + r3 := routeCandidate{matchesCount: 0, literalCount: 1, nonDefaultCount: 1} + r4 := routeCandidate{matchesCount: 1, literalCount: 1, nonDefaultCount: 0} + r5 := routeCandidate{matchesCount: 1, literalCount: 0, nonDefaultCount: 0} + fixture.candidates = append(fixture.candidates, r5, r4, r3, r2, r1) + sort.Sort(sort.Reverse(fixture)) + first := fixture.candidates[0] + if first.matchesCount != 1 && first.literalCount != 1 && first.nonDefaultCount != 0 { + t.Fatal("expected r4") + } + last := fixture.candidates[len(fixture.candidates)-1] + if last.matchesCount != 0 && last.literalCount != 0 && last.nonDefaultCount != 0 { + t.Fatal("expected r1") + } +} + +func dummy(req *Request, resp *Response) { io.WriteString(resp.ResponseWriter, "dummy") } diff --git a/vendor/github.com/emicklei/go-restful/log/log.go b/vendor/github.com/emicklei/go-restful/log/log.go new file mode 100644 index 000000000..6cd44c7a5 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/log/log.go @@ -0,0 +1,34 @@ +package log + +import ( + stdlog "log" + "os" +) + +// StdLogger corresponds to a minimal subset of the interface satisfied by stdlib log.Logger +type StdLogger interface { + Print(v ...interface{}) + Printf(format string, v ...interface{}) +} + +var Logger StdLogger + +func init() { + // default Logger + SetLogger(stdlog.New(os.Stderr, "[restful] ", stdlog.LstdFlags|stdlog.Lshortfile)) +} + +// SetLogger sets the logger for this package +func SetLogger(customLogger StdLogger) { + Logger = customLogger +} + +// Print delegates to the Logger +func Print(v ...interface{}) { + Logger.Print(v...) +} + +// Printf delegates to the Logger +func Printf(format string, v ...interface{}) { + Logger.Printf(format, v...) +} diff --git a/vendor/github.com/emicklei/go-restful/logger.go b/vendor/github.com/emicklei/go-restful/logger.go new file mode 100644 index 000000000..3f1c4db86 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/logger.go @@ -0,0 +1,32 @@ +package restful + +// Copyright 2014 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. +import ( + "github.com/emicklei/go-restful/log" +) + +var trace bool = false +var traceLogger log.StdLogger + +func init() { + traceLogger = log.Logger // use the package logger by default +} + +// TraceLogger enables detailed logging of Http request matching and filter invocation. Default no logger is set. +// You may call EnableTracing() directly to enable trace logging to the package-wide logger. +func TraceLogger(logger log.StdLogger) { + traceLogger = logger + EnableTracing(logger != nil) +} + +// expose the setter for the global logger on the top-level package +func SetLogger(customLogger log.StdLogger) { + log.SetLogger(customLogger) +} + +// EnableTracing can be used to Trace logging on and off. +func EnableTracing(enabled bool) { + trace = enabled +} diff --git a/vendor/github.com/emicklei/go-restful/mime.go b/vendor/github.com/emicklei/go-restful/mime.go new file mode 100644 index 000000000..d7ea2b615 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/mime.go @@ -0,0 +1,45 @@ +package restful + +import ( + "strconv" + "strings" +) + +type mime struct { + media string + quality float64 +} + +// insertMime adds a mime to a list and keeps it sorted by quality. +func insertMime(l []mime, e mime) []mime { + for i, each := range l { + // if current mime has lower quality then insert before + if e.quality > each.quality { + left := append([]mime{}, l[0:i]...) + return append(append(left, e), l[i:]...) + } + } + return append(l, e) +} + +// sortedMimes returns a list of mime sorted (desc) by its specified quality. +func sortedMimes(accept string) (sorted []mime) { + for _, each := range strings.Split(accept, ",") { + typeAndQuality := strings.Split(strings.Trim(each, " "), ";") + if len(typeAndQuality) == 1 { + sorted = insertMime(sorted, mime{typeAndQuality[0], 1.0}) + } else { + // take factor + parts := strings.Split(typeAndQuality[1], "=") + if len(parts) == 2 { + f, err := strconv.ParseFloat(parts[1], 64) + if err != nil { + traceLogger.Printf("unable to parse quality in %s, %v", each, err) + } else { + sorted = insertMime(sorted, mime{typeAndQuality[0], f}) + } + } + } + } + return +} diff --git a/vendor/github.com/emicklei/go-restful/mime_test.go b/vendor/github.com/emicklei/go-restful/mime_test.go new file mode 100644 index 000000000..a910bb100 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/mime_test.go @@ -0,0 +1,17 @@ +package restful + +import ( + "fmt" + "testing" +) + +// go test -v -test.run TestSortMimes ...restful +func TestSortMimes(t *testing.T) { + accept := "text/html; q=0.8, text/plain, image/gif, */*; q=0.01, image/jpeg" + result := sortedMimes(accept) + got := fmt.Sprintf("%v", result) + want := "[{text/plain 1} {image/gif 1} {image/jpeg 1} {text/html 0.8} {*/* 0.01}]" + if got != want { + t.Errorf("bad sort order of mime types:%s", got) + } +} diff --git a/vendor/github.com/emicklei/go-restful/options_filter.go b/vendor/github.com/emicklei/go-restful/options_filter.go new file mode 100644 index 000000000..4514eadcf --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/options_filter.go @@ -0,0 +1,26 @@ +package restful + +import "strings" + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// OPTIONSFilter is a filter function that inspects the Http Request for the OPTIONS method +// and provides the response with a set of allowed methods for the request URL Path. +// As for any filter, you can also install it for a particular WebService within a Container. +// Note: this filter is not needed when using CrossOriginResourceSharing (for CORS). +func (c *Container) OPTIONSFilter(req *Request, resp *Response, chain *FilterChain) { + if "OPTIONS" != req.Request.Method { + chain.ProcessFilter(req, resp) + return + } + resp.AddHeader(HEADER_Allow, strings.Join(c.computeAllowedMethods(req), ",")) +} + +// OPTIONSFilter is a filter function that inspects the Http Request for the OPTIONS method +// and provides the response with a set of allowed methods for the request URL Path. +// Note: this filter is not needed when using CrossOriginResourceSharing (for CORS). +func OPTIONSFilter() FilterFunction { + return DefaultContainer.OPTIONSFilter +} diff --git a/vendor/github.com/emicklei/go-restful/options_filter_test.go b/vendor/github.com/emicklei/go-restful/options_filter_test.go new file mode 100644 index 000000000..f0fceb834 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/options_filter_test.go @@ -0,0 +1,34 @@ +package restful + +import ( + "net/http" + "net/http/httptest" + "testing" +) + +// go test -v -test.run TestOptionsFilter ...restful +func TestOptionsFilter(t *testing.T) { + tearDown() + ws := new(WebService) + ws.Route(ws.GET("/candy/{kind}").To(dummy)) + ws.Route(ws.DELETE("/candy/{kind}").To(dummy)) + ws.Route(ws.POST("/candies").To(dummy)) + Add(ws) + Filter(OPTIONSFilter()) + + httpRequest, _ := http.NewRequest("OPTIONS", "http://here.io/candy/gum", nil) + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + actual := httpWriter.Header().Get(HEADER_Allow) + if "GET,DELETE" != actual { + t.Fatal("expected: GET,DELETE but got:" + actual) + } + + httpRequest, _ = http.NewRequest("OPTIONS", "http://here.io/candies", nil) + httpWriter = httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + actual = httpWriter.Header().Get(HEADER_Allow) + if "POST" != actual { + t.Fatal("expected: POST but got:" + actual) + } +} diff --git a/vendor/github.com/emicklei/go-restful/parameter.go b/vendor/github.com/emicklei/go-restful/parameter.go new file mode 100644 index 000000000..e11c8162a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/parameter.go @@ -0,0 +1,114 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +const ( + // PathParameterKind = indicator of Request parameter type "path" + PathParameterKind = iota + + // QueryParameterKind = indicator of Request parameter type "query" + QueryParameterKind + + // BodyParameterKind = indicator of Request parameter type "body" + BodyParameterKind + + // HeaderParameterKind = indicator of Request parameter type "header" + HeaderParameterKind + + // FormParameterKind = indicator of Request parameter type "form" + FormParameterKind +) + +// Parameter is for documententing the parameter used in a Http Request +// ParameterData kinds are Path,Query and Body +type Parameter struct { + data *ParameterData +} + +// ParameterData represents the state of a Parameter. +// It is made public to make it accessible to e.g. the Swagger package. +type ParameterData struct { + Name, Description, DataType, DataFormat string + Kind int + Required bool + AllowableValues map[string]string + AllowMultiple bool + DefaultValue string +} + +// Data returns the state of the Parameter +func (p *Parameter) Data() ParameterData { + return *p.data +} + +// Kind returns the parameter type indicator (see const for valid values) +func (p *Parameter) Kind() int { + return p.data.Kind +} + +func (p *Parameter) bePath() *Parameter { + p.data.Kind = PathParameterKind + return p +} +func (p *Parameter) beQuery() *Parameter { + p.data.Kind = QueryParameterKind + return p +} +func (p *Parameter) beBody() *Parameter { + p.data.Kind = BodyParameterKind + return p +} + +func (p *Parameter) beHeader() *Parameter { + p.data.Kind = HeaderParameterKind + return p +} + +func (p *Parameter) beForm() *Parameter { + p.data.Kind = FormParameterKind + return p +} + +// Required sets the required field and returns the receiver +func (p *Parameter) Required(required bool) *Parameter { + p.data.Required = required + return p +} + +// AllowMultiple sets the allowMultiple field and returns the receiver +func (p *Parameter) AllowMultiple(multiple bool) *Parameter { + p.data.AllowMultiple = multiple + return p +} + +// AllowableValues sets the allowableValues field and returns the receiver +func (p *Parameter) AllowableValues(values map[string]string) *Parameter { + p.data.AllowableValues = values + return p +} + +// DataType sets the dataType field and returns the receiver +func (p *Parameter) DataType(typeName string) *Parameter { + p.data.DataType = typeName + return p +} + +// DataFormat sets the dataFormat field for Swagger UI +func (p *Parameter) DataFormat(formatName string) *Parameter { + p.data.DataFormat = formatName + return p +} + +// DefaultValue sets the default value field and returns the receiver +func (p *Parameter) DefaultValue(stringRepresentation string) *Parameter { + p.data.DefaultValue = stringRepresentation + return p +} + +// Description sets the description value field and returns the receiver +func (p *Parameter) Description(doc string) *Parameter { + p.data.Description = doc + return p +} diff --git a/vendor/github.com/emicklei/go-restful/path_expression.go b/vendor/github.com/emicklei/go-restful/path_expression.go new file mode 100644 index 000000000..a921e6f22 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/path_expression.go @@ -0,0 +1,69 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "fmt" + "regexp" + "strings" +) + +// PathExpression holds a compiled path expression (RegExp) needed to match against +// Http request paths and to extract path parameter values. +type pathExpression struct { + LiteralCount int // the number of literal characters (means those not resulting from template variable substitution) + VarCount int // the number of named parameters (enclosed by {}) in the path + Matcher *regexp.Regexp + Source string // Path as defined by the RouteBuilder + tokens []string +} + +// NewPathExpression creates a PathExpression from the input URL path. +// Returns an error if the path is invalid. +func newPathExpression(path string) (*pathExpression, error) { + expression, literalCount, varCount, tokens := templateToRegularExpression(path) + compiled, err := regexp.Compile(expression) + if err != nil { + return nil, err + } + return &pathExpression{literalCount, varCount, compiled, expression, tokens}, nil +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-370003.7.3 +func templateToRegularExpression(template string) (expression string, literalCount int, varCount int, tokens []string) { + var buffer bytes.Buffer + buffer.WriteString("^") + //tokens = strings.Split(template, "/") + tokens = tokenizePath(template) + for _, each := range tokens { + if each == "" { + continue + } + buffer.WriteString("/") + if strings.HasPrefix(each, "{") { + // check for regular expression in variable + colon := strings.Index(each, ":") + if colon != -1 { + // extract expression + paramExpr := strings.TrimSpace(each[colon+1 : len(each)-1]) + if paramExpr == "*" { // special case + buffer.WriteString("(.*)") + } else { + buffer.WriteString(fmt.Sprintf("(%s)", paramExpr)) // between colon and closing moustache + } + } else { + // plain var + buffer.WriteString("([^/]+?)") + } + varCount += 1 + } else { + literalCount += len(each) + encoded := each // TODO URI encode + buffer.WriteString(regexp.QuoteMeta(encoded)) + } + } + return strings.TrimRight(buffer.String(), "/") + "(/.*)?$", literalCount, varCount, tokens +} diff --git a/vendor/github.com/emicklei/go-restful/path_expression_test.go b/vendor/github.com/emicklei/go-restful/path_expression_test.go new file mode 100644 index 000000000..334fcef73 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/path_expression_test.go @@ -0,0 +1,37 @@ +package restful + +import "testing" + +var tempregexs = []struct { + template, regex string + literalCount, varCount int +}{ + {"", "^(/.*)?$", 0, 0}, + {"/a/{b}/c/", "^/a/([^/]+?)/c(/.*)?$", 2, 1}, + {"/{a}/{b}/{c-d-e}/", "^/([^/]+?)/([^/]+?)/([^/]+?)(/.*)?$", 0, 3}, + {"/{p}/abcde", "^/([^/]+?)/abcde(/.*)?$", 5, 1}, + {"/a/{b:*}", "^/a/(.*)(/.*)?$", 1, 1}, + {"/a/{b:[a-z]+}", "^/a/([a-z]+)(/.*)?$", 1, 1}, +} + +func TestTemplateToRegularExpression(t *testing.T) { + ok := true + for i, fixture := range tempregexs { + actual, lCount, vCount, _ := templateToRegularExpression(fixture.template) + if actual != fixture.regex { + t.Logf("regex mismatch, expected:%v , actual:%v, line:%v\n", fixture.regex, actual, i) // 11 = where the data starts + ok = false + } + if lCount != fixture.literalCount { + t.Logf("literal count mismatch, expected:%v , actual:%v, line:%v\n", fixture.literalCount, lCount, i) + ok = false + } + if vCount != fixture.varCount { + t.Logf("variable count mismatch, expected:%v , actual:%v, line:%v\n", fixture.varCount, vCount, i) + ok = false + } + } + if !ok { + t.Fatal("one or more expression did not match") + } +} diff --git a/vendor/github.com/emicklei/go-restful/request.go b/vendor/github.com/emicklei/go-restful/request.go new file mode 100644 index 000000000..8c23af12c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/request.go @@ -0,0 +1,113 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "compress/zlib" + "net/http" +) + +var defaultRequestContentType string + +// Request is a wrapper for a http Request that provides convenience methods +type Request struct { + Request *http.Request + pathParameters map[string]string + attributes map[string]interface{} // for storing request-scoped values + selectedRoutePath string // root path + route path that matched the request, e.g. /meetings/{id}/attendees +} + +func NewRequest(httpRequest *http.Request) *Request { + return &Request{ + Request: httpRequest, + pathParameters: map[string]string{}, + attributes: map[string]interface{}{}, + } // empty parameters, attributes +} + +// If ContentType is missing or */* is given then fall back to this type, otherwise +// a "Unable to unmarshal content of type:" response is returned. +// Valid values are restful.MIME_JSON and restful.MIME_XML +// Example: +// restful.DefaultRequestContentType(restful.MIME_JSON) +func DefaultRequestContentType(mime string) { + defaultRequestContentType = mime +} + +// PathParameter accesses the Path parameter value by its name +func (r *Request) PathParameter(name string) string { + return r.pathParameters[name] +} + +// PathParameters accesses the Path parameter values +func (r *Request) PathParameters() map[string]string { + return r.pathParameters +} + +// QueryParameter returns the (first) Query parameter value by its name +func (r *Request) QueryParameter(name string) string { + return r.Request.FormValue(name) +} + +// BodyParameter parses the body of the request (once for typically a POST or a PUT) and returns the value of the given name or an error. +func (r *Request) BodyParameter(name string) (string, error) { + err := r.Request.ParseForm() + if err != nil { + return "", err + } + return r.Request.PostFormValue(name), nil +} + +// HeaderParameter returns the HTTP Header value of a Header name or empty if missing +func (r *Request) HeaderParameter(name string) string { + return r.Request.Header.Get(name) +} + +// ReadEntity checks the Accept header and reads the content into the entityPointer. +func (r *Request) ReadEntity(entityPointer interface{}) (err error) { + contentType := r.Request.Header.Get(HEADER_ContentType) + contentEncoding := r.Request.Header.Get(HEADER_ContentEncoding) + + // check if the request body needs decompression + if ENCODING_GZIP == contentEncoding { + gzipReader := currentCompressorProvider.AcquireGzipReader() + defer currentCompressorProvider.ReleaseGzipReader(gzipReader) + gzipReader.Reset(r.Request.Body) + r.Request.Body = gzipReader + } else if ENCODING_DEFLATE == contentEncoding { + zlibReader, err := zlib.NewReader(r.Request.Body) + if err != nil { + return err + } + r.Request.Body = zlibReader + } + + // lookup the EntityReader, use defaultRequestContentType if needed and provided + entityReader, ok := entityAccessRegistry.accessorAt(contentType) + if !ok { + if len(defaultRequestContentType) != 0 { + entityReader, ok = entityAccessRegistry.accessorAt(defaultRequestContentType) + } + if !ok { + return NewError(http.StatusBadRequest, "Unable to unmarshal content of type:"+contentType) + } + } + return entityReader.Read(r, entityPointer) +} + +// SetAttribute adds or replaces the attribute with the given value. +func (r *Request) SetAttribute(name string, value interface{}) { + r.attributes[name] = value +} + +// Attribute returns the value associated to the given name. Returns nil if absent. +func (r Request) Attribute(name string) interface{} { + return r.attributes[name] +} + +// SelectedRoutePath root path + route path that matched the request, e.g. /meetings/{id}/attendees +func (r Request) SelectedRoutePath() string { + return r.selectedRoutePath +} diff --git a/vendor/github.com/emicklei/go-restful/request_test.go b/vendor/github.com/emicklei/go-restful/request_test.go new file mode 100644 index 000000000..31f509659 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/request_test.go @@ -0,0 +1,141 @@ +package restful + +import ( + "encoding/json" + "net/http" + "net/url" + "strconv" + "strings" + "testing" +) + +func TestQueryParameter(t *testing.T) { + hreq := http.Request{Method: "GET"} + hreq.URL, _ = url.Parse("http://www.google.com/search?q=foo&q=bar") + rreq := Request{Request: &hreq} + if rreq.QueryParameter("q") != "foo" { + t.Errorf("q!=foo %#v", rreq) + } +} + +type Anything map[string]interface{} + +type Number struct { + ValueFloat float64 + ValueInt int64 +} + +type Sample struct { + Value string +} + +func TestReadEntityJson(t *testing.T) { + bodyReader := strings.NewReader(`{"Value" : "42"}`) + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", "application/json") + request := &Request{Request: httpRequest} + sam := new(Sample) + request.ReadEntity(sam) + if sam.Value != "42" { + t.Fatal("read failed") + } +} + +func TestReadEntityJsonCharset(t *testing.T) { + bodyReader := strings.NewReader(`{"Value" : "42"}`) + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", "application/json; charset=UTF-8") + request := NewRequest(httpRequest) + sam := new(Sample) + request.ReadEntity(sam) + if sam.Value != "42" { + t.Fatal("read failed") + } +} + +func TestReadEntityJsonNumber(t *testing.T) { + bodyReader := strings.NewReader(`{"Value" : 4899710515899924123}`) + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", "application/json") + request := &Request{Request: httpRequest} + any := make(Anything) + request.ReadEntity(&any) + number, ok := any["Value"].(json.Number) + if !ok { + t.Fatal("read failed") + } + vint, err := number.Int64() + if err != nil { + t.Fatal("convert failed") + } + if vint != 4899710515899924123 { + t.Fatal("read failed") + } + vfloat, err := number.Float64() + if err != nil { + t.Fatal("convert failed") + } + // match the default behaviour + vstring := strconv.FormatFloat(vfloat, 'e', 15, 64) + if vstring != "4.899710515899924e+18" { + t.Fatal("convert float64 failed") + } +} + +func TestReadEntityJsonLong(t *testing.T) { + bodyReader := strings.NewReader(`{"ValueFloat" : 4899710515899924123, "ValueInt": 4899710515899924123}`) + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", "application/json") + request := &Request{Request: httpRequest} + number := new(Number) + request.ReadEntity(&number) + if number.ValueInt != 4899710515899924123 { + t.Fatal("read failed") + } + // match the default behaviour + vstring := strconv.FormatFloat(number.ValueFloat, 'e', 15, 64) + if vstring != "4.899710515899924e+18" { + t.Fatal("convert float64 failed") + } +} + +func TestBodyParameter(t *testing.T) { + bodyReader := strings.NewReader(`value1=42&value2=43`) + httpRequest, _ := http.NewRequest("POST", "/test?value1=44", bodyReader) // POST and PUT body parameters take precedence over URL query string + httpRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8") + request := NewRequest(httpRequest) + v1, err := request.BodyParameter("value1") + if err != nil { + t.Error(err) + } + v2, err := request.BodyParameter("value2") + if err != nil { + t.Error(err) + } + if v1 != "42" || v2 != "43" { + t.Fatal("read failed") + } +} + +func TestReadEntityUnkown(t *testing.T) { + bodyReader := strings.NewReader("?") + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + httpRequest.Header.Set("Content-Type", "application/rubbish") + request := NewRequest(httpRequest) + sam := new(Sample) + err := request.ReadEntity(sam) + if err == nil { + t.Fatal("read should be in error") + } +} + +func TestSetAttribute(t *testing.T) { + bodyReader := strings.NewReader("?") + httpRequest, _ := http.NewRequest("GET", "/test", bodyReader) + request := NewRequest(httpRequest) + request.SetAttribute("go", "there") + there := request.Attribute("go") + if there != "there" { + t.Fatalf("missing request attribute:%v", there) + } +} diff --git a/vendor/github.com/emicklei/go-restful/response.go b/vendor/github.com/emicklei/go-restful/response.go new file mode 100644 index 000000000..3b33ab220 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/response.go @@ -0,0 +1,236 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "errors" + "net/http" +) + +// DefaultResponseMimeType is DEPRECATED, use DefaultResponseContentType(mime) +var DefaultResponseMimeType string + +//PrettyPrintResponses controls the indentation feature of XML and JSON serialization +var PrettyPrintResponses = true + +// Response is a wrapper on the actual http ResponseWriter +// It provides several convenience methods to prepare and write response content. +type Response struct { + http.ResponseWriter + requestAccept string // mime-type what the Http Request says it wants to receive + routeProduces []string // mime-types what the Route says it can produce + statusCode int // HTTP status code that has been written explicity (if zero then net/http has written 200) + contentLength int // number of bytes written for the response body + prettyPrint bool // controls the indentation feature of XML and JSON serialization. It is initialized using var PrettyPrintResponses. + err error // err property is kept when WriteError is called +} + +// NewResponse creates a new response based on a http ResponseWriter. +func NewResponse(httpWriter http.ResponseWriter) *Response { + return &Response{httpWriter, "", []string{}, http.StatusOK, 0, PrettyPrintResponses, nil} // empty content-types +} + +// DefaultResponseContentType set a default. +// If Accept header matching fails, fall back to this type. +// Valid values are restful.MIME_JSON and restful.MIME_XML +// Example: +// restful.DefaultResponseContentType(restful.MIME_JSON) +func DefaultResponseContentType(mime string) { + DefaultResponseMimeType = mime +} + +// InternalServerError writes the StatusInternalServerError header. +// DEPRECATED, use WriteErrorString(http.StatusInternalServerError,reason) +func (r Response) InternalServerError() Response { + r.WriteHeader(http.StatusInternalServerError) + return r +} + +// PrettyPrint changes whether this response must produce pretty (line-by-line, indented) JSON or XML output. +func (r *Response) PrettyPrint(bePretty bool) { + r.prettyPrint = bePretty +} + +// AddHeader is a shortcut for .Header().Add(header,value) +func (r Response) AddHeader(header string, value string) Response { + r.Header().Add(header, value) + return r +} + +// SetRequestAccepts tells the response what Mime-type(s) the HTTP request said it wants to accept. Exposed for testing. +func (r *Response) SetRequestAccepts(mime string) { + r.requestAccept = mime +} + +// EntityWriter returns the registered EntityWriter that the entity (requested resource) +// can write according to what the request wants (Accept) and what the Route can produce or what the restful defaults say. +// If called before WriteEntity and WriteHeader then a false return value can be used to write a 406: Not Acceptable. +func (r *Response) EntityWriter() (EntityReaderWriter, bool) { + sorted := sortedMimes(r.requestAccept) + for _, eachAccept := range sorted { + for _, eachProduce := range r.routeProduces { + if eachProduce == eachAccept.media { + if w, ok := entityAccessRegistry.accessorAt(eachAccept.media); ok { + return w, true + } + } + } + if eachAccept.media == "*/*" { + for _, each := range r.routeProduces { + if w, ok := entityAccessRegistry.accessorAt(each); ok { + return w, true + } + } + } + } + // if requestAccept is empty + writer, ok := entityAccessRegistry.accessorAt(r.requestAccept) + if !ok { + // if not registered then fallback to the defaults (if set) + if DefaultResponseMimeType == MIME_JSON { + return entityAccessRegistry.accessorAt(MIME_JSON) + } + if DefaultResponseMimeType == MIME_XML { + return entityAccessRegistry.accessorAt(MIME_XML) + } + // Fallback to whatever the route says it can produce. + // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + for _, each := range r.routeProduces { + if w, ok := entityAccessRegistry.accessorAt(each); ok { + return w, true + } + } + if trace { + traceLogger.Printf("no registered EntityReaderWriter found for %s", r.requestAccept) + } + } + return writer, ok +} + +// WriteEntity calls WriteHeaderAndEntity with Http Status OK (200) +func (r *Response) WriteEntity(value interface{}) error { + return r.WriteHeaderAndEntity(http.StatusOK, value) +} + +// WriteHeaderAndEntity marshals the value using the representation denoted by the Accept Header and the registered EntityWriters. +// If no Accept header is specified (or */*) then respond with the Content-Type as specified by the first in the Route.Produces. +// If an Accept header is specified then respond with the Content-Type as specified by the first in the Route.Produces that is matched with the Accept header. +// If the value is nil then no response is send except for the Http status. You may want to call WriteHeader(http.StatusNotFound) instead. +// If there is no writer available that can represent the value in the requested MIME type then Http Status NotAcceptable is written. +// Current implementation ignores any q-parameters in the Accept Header. +// Returns an error if the value could not be written on the response. +func (r *Response) WriteHeaderAndEntity(status int, value interface{}) error { + writer, ok := r.EntityWriter() + if !ok { + r.WriteHeader(http.StatusNotAcceptable) + return nil + } + return writer.Write(r, status, value) +} + +// WriteAsXml is a convenience method for writing a value in xml (requires Xml tags on the value) +// It uses the standard encoding/xml package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteAsXml(value interface{}) error { + return writeXML(r, http.StatusOK, MIME_XML, value) +} + +// WriteHeaderAndXml is a convenience method for writing a status and value in xml (requires Xml tags on the value) +// It uses the standard encoding/xml package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteHeaderAndXml(status int, value interface{}) error { + return writeXML(r, status, MIME_XML, value) +} + +// WriteAsJson is a convenience method for writing a value in json. +// It uses the standard encoding/json package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteAsJson(value interface{}) error { + return writeJSON(r, http.StatusOK, MIME_JSON, value) +} + +// WriteJson is a convenience method for writing a value in Json with a given Content-Type. +// It uses the standard encoding/json package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteJson(value interface{}, contentType string) error { + return writeJSON(r, http.StatusOK, contentType, value) +} + +// WriteHeaderAndJson is a convenience method for writing the status and a value in Json with a given Content-Type. +// It uses the standard encoding/json package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteHeaderAndJson(status int, value interface{}, contentType string) error { + return writeJSON(r, status, contentType, value) +} + +// WriteError write the http status and the error string on the response. +func (r *Response) WriteError(httpStatus int, err error) error { + r.err = err + return r.WriteErrorString(httpStatus, err.Error()) +} + +// WriteServiceError is a convenience method for a responding with a status and a ServiceError +func (r *Response) WriteServiceError(httpStatus int, err ServiceError) error { + r.err = err + return r.WriteHeaderAndEntity(httpStatus, err) +} + +// WriteErrorString is a convenience method for an error status with the actual error +func (r *Response) WriteErrorString(httpStatus int, errorReason string) error { + if r.err == nil { + // if not called from WriteError + r.err = errors.New(errorReason) + } + r.WriteHeader(httpStatus) + if _, err := r.Write([]byte(errorReason)); err != nil { + return err + } + return nil +} + +// Flush implements http.Flusher interface, which sends any buffered data to the client. +func (r *Response) Flush() { + if f, ok := r.ResponseWriter.(http.Flusher); ok { + f.Flush() + } else if trace { + traceLogger.Printf("ResponseWriter %v doesn't support Flush", r) + } +} + +// WriteHeader is overridden to remember the Status Code that has been written. +// Changes to the Header of the response have no effect after this. +func (r *Response) WriteHeader(httpStatus int) { + r.statusCode = httpStatus + r.ResponseWriter.WriteHeader(httpStatus) +} + +// StatusCode returns the code that has been written using WriteHeader. +func (r Response) StatusCode() int { + if 0 == r.statusCode { + // no status code has been written yet; assume OK + return http.StatusOK + } + return r.statusCode +} + +// Write writes the data to the connection as part of an HTTP reply. +// Write is part of http.ResponseWriter interface. +func (r *Response) Write(bytes []byte) (int, error) { + written, err := r.ResponseWriter.Write(bytes) + r.contentLength += written + return written, err +} + +// ContentLength returns the number of bytes written for the response content. +// Note that this value is only correct if all data is written through the Response using its Write* methods. +// Data written directly using the underlying http.ResponseWriter is not accounted for. +func (r Response) ContentLength() int { + return r.contentLength +} + +// CloseNotify is part of http.CloseNotifier interface +func (r Response) CloseNotify() <-chan bool { + return r.ResponseWriter.(http.CloseNotifier).CloseNotify() +} + +// Error returns the err created by WriteError +func (r Response) Error() error { + return r.err +} diff --git a/vendor/github.com/emicklei/go-restful/response_test.go b/vendor/github.com/emicklei/go-restful/response_test.go new file mode 100644 index 000000000..311024913 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/response_test.go @@ -0,0 +1,213 @@ +package restful + +import ( + "errors" + "net/http" + "net/http/httptest" + "strings" + "testing" +) + +func TestWriteHeader(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, true, nil} + resp.WriteHeader(123) + if resp.StatusCode() != 123 { + t.Errorf("Unexpected status code:%d", resp.StatusCode()) + } +} + +func TestNoWriteHeader(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, true, nil} + if resp.StatusCode() != http.StatusOK { + t.Errorf("Unexpected status code:%d", resp.StatusCode()) + } +} + +type food struct { + Kind string +} + +// go test -v -test.run TestMeasureContentLengthXml ...restful +func TestMeasureContentLengthXml(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, true, nil} + resp.WriteAsXml(food{"apple"}) + if resp.ContentLength() != 76 { + t.Errorf("Incorrect measured length:%d", resp.ContentLength()) + } +} + +// go test -v -test.run TestMeasureContentLengthJson ...restful +func TestMeasureContentLengthJson(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, true, nil} + resp.WriteAsJson(food{"apple"}) + if resp.ContentLength() != 22 { + t.Errorf("Incorrect measured length:%d", resp.ContentLength()) + } +} + +// go test -v -test.run TestMeasureContentLengthJsonNotPretty ...restful +func TestMeasureContentLengthJsonNotPretty(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, false, nil} + resp.WriteAsJson(food{"apple"}) + if resp.ContentLength() != 17 { // 16+1 using the Encoder directly yields another /n + t.Errorf("Incorrect measured length:%d", resp.ContentLength()) + } +} + +// go test -v -test.run TestMeasureContentLengthWriteErrorString ...restful +func TestMeasureContentLengthWriteErrorString(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, true, nil} + resp.WriteErrorString(404, "Invalid") + if resp.ContentLength() != len("Invalid") { + t.Errorf("Incorrect measured length:%d", resp.ContentLength()) + } +} + +// go test -v -test.run TestStatusIsPassedToResponse ...restful +func TestStatusIsPassedToResponse(t *testing.T) { + for _, each := range []struct { + write, read int + }{ + {write: 204, read: 204}, + {write: 304, read: 304}, + {write: 200, read: 200}, + {write: 400, read: 400}, + } { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "*/*", []string{"*/*"}, 0, 0, true, nil} + resp.WriteHeader(each.write) + if got, want := httpWriter.Code, each.read; got != want { + t.Errorf("got %v want %v", got, want) + } + } +} + +// go test -v -test.run TestStatusCreatedAndContentTypeJson_Issue54 ...restful +func TestStatusCreatedAndContentTypeJson_Issue54(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "application/json", []string{"application/json"}, 0, 0, true, nil} + resp.WriteHeader(201) + resp.WriteAsJson(food{"Juicy"}) + if httpWriter.HeaderMap.Get("Content-Type") != "application/json" { + t.Errorf("Expected content type json but got:%s", httpWriter.HeaderMap.Get("Content-Type")) + } + if httpWriter.Code != 201 { + t.Errorf("Expected status 201 but got:%d", httpWriter.Code) + } +} + +type errorOnWriteRecorder struct { + *httptest.ResponseRecorder +} + +func (e errorOnWriteRecorder) Write(bytes []byte) (int, error) { + return 0, errors.New("fail") +} + +// go test -v -test.run TestLastWriteErrorCaught ...restful +func TestLastWriteErrorCaught(t *testing.T) { + httpWriter := errorOnWriteRecorder{httptest.NewRecorder()} + resp := Response{httpWriter, "application/json", []string{"application/json"}, 0, 0, true, nil} + err := resp.WriteAsJson(food{"Juicy"}) + if err.Error() != "fail" { + t.Errorf("Unexpected error message:%v", err) + } +} + +// go test -v -test.run TestAcceptStarStar_Issue83 ...restful +func TestAcceptStarStar_Issue83(t *testing.T) { + httpWriter := httptest.NewRecorder() + // Accept Produces + resp := Response{httpWriter, "application/bogus,*/*;q=0.8", []string{"application/json"}, 0, 0, true, nil} + resp.WriteEntity(food{"Juicy"}) + ct := httpWriter.Header().Get("Content-Type") + if "application/json" != ct { + t.Errorf("Unexpected content type:%s", ct) + } +} + +// go test -v -test.run TestAcceptSkipStarStar_Issue83 ...restful +func TestAcceptSkipStarStar_Issue83(t *testing.T) { + httpWriter := httptest.NewRecorder() + // Accept Produces + resp := Response{httpWriter, " application/xml ,*/* ; q=0.8", []string{"application/json", "application/xml"}, 0, 0, true, nil} + resp.WriteEntity(food{"Juicy"}) + ct := httpWriter.Header().Get("Content-Type") + if "application/xml" != ct { + t.Errorf("Unexpected content type:%s", ct) + } +} + +// go test -v -test.run TestAcceptXmlBeforeStarStar_Issue83 ...restful +func TestAcceptXmlBeforeStarStar_Issue83(t *testing.T) { + httpWriter := httptest.NewRecorder() + // Accept Produces + resp := Response{httpWriter, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", []string{"application/json"}, 0, 0, true, nil} + resp.WriteEntity(food{"Juicy"}) + ct := httpWriter.Header().Get("Content-Type") + if "application/json" != ct { + t.Errorf("Unexpected content type:%s", ct) + } +} + +// go test -v -test.run TestWriteHeaderNoContent_Issue124 ...restful +func TestWriteHeaderNoContent_Issue124(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "text/plain", []string{"text/plain"}, 0, 0, true, nil} + resp.WriteHeader(http.StatusNoContent) + if httpWriter.Code != http.StatusNoContent { + t.Errorf("got %d want %d", httpWriter.Code, http.StatusNoContent) + } +} + +// go test -v -test.run TestStatusCreatedAndContentTypeJson_Issue163 ...restful +func TestStatusCreatedAndContentTypeJson_Issue163(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "application/json", []string{"application/json"}, 0, 0, true, nil} + resp.WriteHeader(http.StatusNotModified) + if httpWriter.Code != http.StatusNotModified { + t.Errorf("Got %d want %d", httpWriter.Code, http.StatusNotModified) + } +} + +func TestWriteHeaderAndEntity_Issue235(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "application/json", []string{"application/json"}, 0, 0, true, nil} + var pong = struct { + Foo string `json:"foo"` + }{Foo: "123"} + resp.WriteHeaderAndEntity(404, pong) + if httpWriter.Code != http.StatusNotFound { + t.Errorf("got %d want %d", httpWriter.Code, http.StatusNoContent) + } + if got, want := httpWriter.Header().Get("Content-Type"), "application/json"; got != want { + t.Errorf("got %v want %v", got, want) + } + if !strings.HasPrefix(httpWriter.Body.String(), "{") { + t.Errorf("expected pong struct in json:%s", httpWriter.Body.String()) + } +} + +func TestWriteEntityNoAcceptMatchWithProduces(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "application/bogus", []string{"application/json"}, 0, 0, true, nil} + resp.WriteEntity("done") + if httpWriter.Code != http.StatusOK { + t.Errorf("got %d want %d", httpWriter.Code, http.StatusOK) + } +} + +func TestWriteEntityNoAcceptMatchNoProduces(t *testing.T) { + httpWriter := httptest.NewRecorder() + resp := Response{httpWriter, "application/bogus", []string{}, 0, 0, true, nil} + resp.WriteEntity("done") + if httpWriter.Code != http.StatusNotAcceptable { + t.Errorf("got %d want %d", httpWriter.Code, http.StatusNotAcceptable) + } +} diff --git a/vendor/github.com/emicklei/go-restful/route.go b/vendor/github.com/emicklei/go-restful/route.go new file mode 100644 index 000000000..3dd520eec --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/route.go @@ -0,0 +1,186 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "net/http" + "strings" +) + +// RouteFunction declares the signature of a function that can be bound to a Route. +type RouteFunction func(*Request, *Response) + +// Route binds a HTTP Method,Path,Consumes combination to a RouteFunction. +type Route struct { + Method string + Produces []string + Consumes []string + Path string // webservice root path + described path + Function RouteFunction + Filters []FilterFunction + + // cached values for dispatching + relativePath string + pathParts []string + pathExpr *pathExpression // cached compilation of relativePath as RegExp + + // documentation + Doc string + Notes string + Operation string + ParameterDocs []*Parameter + ResponseErrors map[int]ResponseError + ReadSample, WriteSample interface{} // structs that model an example request or response payload + + // Extra information used to store custom information about the route. + Metadata map[string]interface{} +} + +// Initialize for Route +func (r *Route) postBuild() { + r.pathParts = tokenizePath(r.Path) +} + +// Create Request and Response from their http versions +func (r *Route) wrapRequestResponse(httpWriter http.ResponseWriter, httpRequest *http.Request) (*Request, *Response) { + params := r.extractParameters(httpRequest.URL.Path) + wrappedRequest := NewRequest(httpRequest) + wrappedRequest.pathParameters = params + wrappedRequest.selectedRoutePath = r.Path + wrappedResponse := NewResponse(httpWriter) + wrappedResponse.requestAccept = httpRequest.Header.Get(HEADER_Accept) + wrappedResponse.routeProduces = r.Produces + return wrappedRequest, wrappedResponse +} + +// dispatchWithFilters call the function after passing through its own filters +func (r *Route) dispatchWithFilters(wrappedRequest *Request, wrappedResponse *Response) { + if len(r.Filters) > 0 { + chain := FilterChain{Filters: r.Filters, Target: r.Function} + chain.ProcessFilter(wrappedRequest, wrappedResponse) + } else { + // unfiltered + r.Function(wrappedRequest, wrappedResponse) + } +} + +// Return whether the mimeType matches to what this Route can produce. +func (r Route) matchesAccept(mimeTypesWithQuality string) bool { + parts := strings.Split(mimeTypesWithQuality, ",") + for _, each := range parts { + var withoutQuality string + if strings.Contains(each, ";") { + withoutQuality = strings.Split(each, ";")[0] + } else { + withoutQuality = each + } + // trim before compare + withoutQuality = strings.Trim(withoutQuality, " ") + if withoutQuality == "*/*" { + return true + } + for _, producibleType := range r.Produces { + if producibleType == "*/*" || producibleType == withoutQuality { + return true + } + } + } + return false +} + +// Return whether this Route can consume content with a type specified by mimeTypes (can be empty). +func (r Route) matchesContentType(mimeTypes string) bool { + + if len(r.Consumes) == 0 { + // did not specify what it can consume ; any media type (“*/*”) is assumed + return true + } + + if len(mimeTypes) == 0 { + // idempotent methods with (most-likely or garanteed) empty content match missing Content-Type + m := r.Method + if m == "GET" || m == "HEAD" || m == "OPTIONS" || m == "DELETE" || m == "TRACE" { + return true + } + // proceed with default + mimeTypes = MIME_OCTET + } + + parts := strings.Split(mimeTypes, ",") + for _, each := range parts { + var contentType string + if strings.Contains(each, ";") { + contentType = strings.Split(each, ";")[0] + } else { + contentType = each + } + // trim before compare + contentType = strings.Trim(contentType, " ") + for _, consumeableType := range r.Consumes { + if consumeableType == "*/*" || consumeableType == contentType { + return true + } + } + } + return false +} + +// Extract the parameters from the request url path +func (r Route) extractParameters(urlPath string) map[string]string { + urlParts := tokenizePath(urlPath) + pathParameters := map[string]string{} + for i, key := range r.pathParts { + var value string + if i >= len(urlParts) { + value = "" + } else { + value = urlParts[i] + } + if strings.HasPrefix(key, "{") { // path-parameter + if colon := strings.Index(key, ":"); colon != -1 { + // extract by regex + regPart := key[colon+1 : len(key)-1] + keyPart := key[1:colon] + if regPart == "*" { + pathParameters[keyPart] = untokenizePath(i, urlParts) + break + } else { + pathParameters[keyPart] = value + } + } else { + // without enclosing {} + pathParameters[key[1:len(key)-1]] = value + } + } + } + return pathParameters +} + +// Untokenize back into an URL path using the slash separator +func untokenizePath(offset int, parts []string) string { + var buffer bytes.Buffer + for p := offset; p < len(parts); p++ { + buffer.WriteString(parts[p]) + // do not end + if p < len(parts)-1 { + buffer.WriteString("/") + } + } + return buffer.String() +} + +// Tokenize an URL path using the slash separator ; the result does not have empty tokens +func tokenizePath(path string) []string { + if "/" == path { + return []string{} + } + return strings.Split(strings.Trim(path, "/"), "/") +} + +// for debugging +func (r Route) String() string { + return r.Method + " " + r.Path +} diff --git a/vendor/github.com/emicklei/go-restful/route_builder.go b/vendor/github.com/emicklei/go-restful/route_builder.go new file mode 100644 index 000000000..5ad4a3a7c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/route_builder.go @@ -0,0 +1,293 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "fmt" + "os" + "reflect" + "runtime" + "strings" + "sync/atomic" + + "github.com/emicklei/go-restful/log" +) + +// RouteBuilder is a helper to construct Routes. +type RouteBuilder struct { + rootPath string + currentPath string + produces []string + consumes []string + httpMethod string // required + function RouteFunction // required + filters []FilterFunction + + typeNameHandleFunc TypeNameHandleFunction // required + + // documentation + doc string + notes string + operation string + readSample, writeSample interface{} + parameters []*Parameter + errorMap map[int]ResponseError + metadata map[string]interface{} +} + +// Do evaluates each argument with the RouteBuilder itself. +// This allows you to follow DRY principles without breaking the fluent programming style. +// Example: +// ws.Route(ws.DELETE("/{name}").To(t.deletePerson).Do(Returns200, Returns500)) +// +// func Returns500(b *RouteBuilder) { +// b.Returns(500, "Internal Server Error", restful.ServiceError{}) +// } +func (b *RouteBuilder) Do(oneArgBlocks ...func(*RouteBuilder)) *RouteBuilder { + for _, each := range oneArgBlocks { + each(b) + } + return b +} + +// To bind the route to a function. +// If this route is matched with the incoming Http Request then call this function with the *Request,*Response pair. Required. +func (b *RouteBuilder) To(function RouteFunction) *RouteBuilder { + b.function = function + return b +} + +// Method specifies what HTTP method to match. Required. +func (b *RouteBuilder) Method(method string) *RouteBuilder { + b.httpMethod = method + return b +} + +// Produces specifies what MIME types can be produced ; the matched one will appear in the Content-Type Http header. +func (b *RouteBuilder) Produces(mimeTypes ...string) *RouteBuilder { + b.produces = mimeTypes + return b +} + +// Consumes specifies what MIME types can be consumes ; the Accept Http header must matched any of these +func (b *RouteBuilder) Consumes(mimeTypes ...string) *RouteBuilder { + b.consumes = mimeTypes + return b +} + +// Path specifies the relative (w.r.t WebService root path) URL path to match. Default is "/". +func (b *RouteBuilder) Path(subPath string) *RouteBuilder { + b.currentPath = subPath + return b +} + +// Doc tells what this route is all about. Optional. +func (b *RouteBuilder) Doc(documentation string) *RouteBuilder { + b.doc = documentation + return b +} + +// A verbose explanation of the operation behavior. Optional. +func (b *RouteBuilder) Notes(notes string) *RouteBuilder { + b.notes = notes + return b +} + +// Reads tells what resource type will be read from the request payload. Optional. +// A parameter of type "body" is added ,required is set to true and the dataType is set to the qualified name of the sample's type. +func (b *RouteBuilder) Reads(sample interface{}) *RouteBuilder { + fn := b.typeNameHandleFunc + if fn == nil { + fn = reflectTypeName + } + typeAsName := fn(sample) + + b.readSample = sample + bodyParameter := &Parameter{&ParameterData{Name: "body"}} + bodyParameter.beBody() + bodyParameter.Required(true) + bodyParameter.DataType(typeAsName) + b.Param(bodyParameter) + return b +} + +// ParameterNamed returns a Parameter already known to the RouteBuilder. Returns nil if not. +// Use this to modify or extend information for the Parameter (through its Data()). +func (b RouteBuilder) ParameterNamed(name string) (p *Parameter) { + for _, each := range b.parameters { + if each.Data().Name == name { + return each + } + } + return p +} + +// Writes tells what resource type will be written as the response payload. Optional. +func (b *RouteBuilder) Writes(sample interface{}) *RouteBuilder { + b.writeSample = sample + return b +} + +// Param allows you to document the parameters of the Route. It adds a new Parameter (does not check for duplicates). +func (b *RouteBuilder) Param(parameter *Parameter) *RouteBuilder { + if b.parameters == nil { + b.parameters = []*Parameter{} + } + b.parameters = append(b.parameters, parameter) + return b +} + +// Operation allows you to document what the actual method/function call is of the Route. +// Unless called, the operation name is derived from the RouteFunction set using To(..). +func (b *RouteBuilder) Operation(name string) *RouteBuilder { + b.operation = name + return b +} + +// ReturnsError is deprecated, use Returns instead. +func (b *RouteBuilder) ReturnsError(code int, message string, model interface{}) *RouteBuilder { + log.Print("ReturnsError is deprecated, use Returns instead.") + return b.Returns(code, message, model) +} + +// Returns allows you to document what responses (errors or regular) can be expected. +// The model parameter is optional ; either pass a struct instance or use nil if not applicable. +func (b *RouteBuilder) Returns(code int, message string, model interface{}) *RouteBuilder { + err := ResponseError{ + Code: code, + Message: message, + Model: model, + IsDefault: false, + } + // lazy init because there is no NewRouteBuilder (yet) + if b.errorMap == nil { + b.errorMap = map[int]ResponseError{} + } + b.errorMap[code] = err + return b +} + +// DefaultReturns is a special Returns call that sets the default of the response ; the code is zero. +func (b *RouteBuilder) DefaultReturns(message string, model interface{}) *RouteBuilder { + b.Returns(0, message, model) + // Modify the ResponseError just added/updated + re := b.errorMap[0] + // errorMap is initialized + b.errorMap[0] = ResponseError{ + Code: re.Code, + Message: re.Message, + Model: re.Model, + IsDefault: true, + } + return b +} + +// Metadata adds or updates a key=value pair to the metadata map. +func (b *RouteBuilder) Metadata(key string, value interface{}) *RouteBuilder { + if b.metadata == nil { + b.metadata = map[string]interface{}{} + } + b.metadata[key] = value + return b +} + +// ResponseError represents a response; not necessarily an error. +type ResponseError struct { + Code int + Message string + Model interface{} + IsDefault bool +} + +func (b *RouteBuilder) servicePath(path string) *RouteBuilder { + b.rootPath = path + return b +} + +// Filter appends a FilterFunction to the end of filters for this Route to build. +func (b *RouteBuilder) Filter(filter FilterFunction) *RouteBuilder { + b.filters = append(b.filters, filter) + return b +} + +// If no specific Route path then set to rootPath +// If no specific Produces then set to rootProduces +// If no specific Consumes then set to rootConsumes +func (b *RouteBuilder) copyDefaults(rootProduces, rootConsumes []string) { + if len(b.produces) == 0 { + b.produces = rootProduces + } + if len(b.consumes) == 0 { + b.consumes = rootConsumes + } +} + +// typeNameHandler sets the function that will convert types to strings in the parameter +// and model definitions. +func (b *RouteBuilder) typeNameHandler(handler TypeNameHandleFunction) *RouteBuilder { + b.typeNameHandleFunc = handler + return b +} + +// Build creates a new Route using the specification details collected by the RouteBuilder +func (b *RouteBuilder) Build() Route { + pathExpr, err := newPathExpression(b.currentPath) + if err != nil { + log.Printf("[restful] Invalid path:%s because:%v", b.currentPath, err) + os.Exit(1) + } + if b.function == nil { + log.Printf("[restful] No function specified for route:" + b.currentPath) + os.Exit(1) + } + operationName := b.operation + if len(operationName) == 0 && b.function != nil { + // extract from definition + operationName = nameOfFunction(b.function) + } + route := Route{ + Method: b.httpMethod, + Path: concatPath(b.rootPath, b.currentPath), + Produces: b.produces, + Consumes: b.consumes, + Function: b.function, + Filters: b.filters, + relativePath: b.currentPath, + pathExpr: pathExpr, + Doc: b.doc, + Notes: b.notes, + Operation: operationName, + ParameterDocs: b.parameters, + ResponseErrors: b.errorMap, + ReadSample: b.readSample, + WriteSample: b.writeSample, + Metadata: b.metadata} + route.postBuild() + return route +} + +func concatPath(path1, path2 string) string { + return strings.TrimRight(path1, "/") + "/" + strings.TrimLeft(path2, "/") +} + +var anonymousFuncCount int32 + +// nameOfFunction returns the short name of the function f for documentation. +// It uses a runtime feature for debugging ; its value may change for later Go versions. +func nameOfFunction(f interface{}) string { + fun := runtime.FuncForPC(reflect.ValueOf(f).Pointer()) + tokenized := strings.Split(fun.Name(), ".") + last := tokenized[len(tokenized)-1] + last = strings.TrimSuffix(last, ")·fm") // < Go 1.5 + last = strings.TrimSuffix(last, ")-fm") // Go 1.5 + last = strings.TrimSuffix(last, "·fm") // < Go 1.5 + last = strings.TrimSuffix(last, "-fm") // Go 1.5 + if last == "func1" { // this could mean conflicts in API docs + val := atomic.AddInt32(&anonymousFuncCount, 1) + last = "func" + fmt.Sprintf("%d", val) + atomic.StoreInt32(&anonymousFuncCount, val) + } + return last +} diff --git a/vendor/github.com/emicklei/go-restful/route_builder_test.go b/vendor/github.com/emicklei/go-restful/route_builder_test.go new file mode 100644 index 000000000..25881d5eb --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/route_builder_test.go @@ -0,0 +1,76 @@ +package restful + +import ( + "testing" + "time" +) + +func TestRouteBuilder_PathParameter(t *testing.T) { + p := &Parameter{&ParameterData{Name: "name", Description: "desc"}} + p.AllowMultiple(true) + p.DataType("int") + p.Required(true) + values := map[string]string{"a": "b"} + p.AllowableValues(values) + p.bePath() + + b := new(RouteBuilder) + b.function = dummy + b.Param(p) + r := b.Build() + if !r.ParameterDocs[0].Data().AllowMultiple { + t.Error("AllowMultiple invalid") + } + if r.ParameterDocs[0].Data().DataType != "int" { + t.Error("dataType invalid") + } + if !r.ParameterDocs[0].Data().Required { + t.Error("required invalid") + } + if r.ParameterDocs[0].Data().Kind != PathParameterKind { + t.Error("kind invalid") + } + if r.ParameterDocs[0].Data().AllowableValues["a"] != "b" { + t.Error("allowableValues invalid") + } + if b.ParameterNamed("name") == nil { + t.Error("access to parameter failed") + } +} + +func TestRouteBuilder(t *testing.T) { + json := "application/json" + b := new(RouteBuilder) + b.To(dummy) + b.Path("/routes").Method("HEAD").Consumes(json).Produces(json).Metadata("test", "test-value").DefaultReturns("default", time.Now()) + r := b.Build() + if r.Path != "/routes" { + t.Error("path invalid") + } + if r.Produces[0] != json { + t.Error("produces invalid") + } + if r.Consumes[0] != json { + t.Error("consumes invalid") + } + if r.Operation != "dummy" { + t.Error("Operation not set") + } + if r.Metadata["test"] != "test-value" { + t.Errorf("Metadata not set") + } + if _, ok := r.ResponseErrors[0]; !ok { + t.Fatal("expected default response") + } +} + +func TestAnonymousFuncNaming(t *testing.T) { + f1 := func() {} + f2 := func() {} + if got, want := nameOfFunction(f1), "func1"; got != want { + t.Errorf("got %v want %v", got, want) + } + if got, want := nameOfFunction(f2), "func2"; got != want { + t.Errorf("got %v want %v", got, want) + } +} diff --git a/vendor/github.com/emicklei/go-restful/route_test.go b/vendor/github.com/emicklei/go-restful/route_test.go new file mode 100644 index 000000000..6a104aff8 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/route_test.go @@ -0,0 +1,127 @@ +package restful + +import ( + "testing" +) + +// accept should match produces +func TestMatchesAcceptPlainTextWhenProducePlainTextAsLast(t *testing.T) { + r := Route{Produces: []string{"application/json", "text/plain"}} + if !r.matchesAccept("text/plain") { + t.Errorf("accept should match text/plain") + } +} + +// accept should match produces +func TestMatchesAcceptStar(t *testing.T) { + r := Route{Produces: []string{"application/xml"}} + if !r.matchesAccept("*/*") { + t.Errorf("accept should match star") + } +} + +// accept should match produces +func TestMatchesAcceptIE(t *testing.T) { + r := Route{Produces: []string{"application/xml"}} + if !r.matchesAccept("text/html, application/xhtml+xml, */*") { + t.Errorf("accept should match star") + } +} + +// accept should match produces +func TestMatchesAcceptXml(t *testing.T) { + r := Route{Produces: []string{"application/xml"}} + if r.matchesAccept("application/json") { + t.Errorf("accept should not match json") + } + if !r.matchesAccept("application/xml") { + t.Errorf("accept should match xml") + } +} + +// accept should match produces +func TestMatchesAcceptAny(t *testing.T) { + r := Route{Produces: []string{"*/*"}} + if !r.matchesAccept("application/json") { + t.Errorf("accept should match json") + } + if !r.matchesAccept("application/xml") { + t.Errorf("accept should match xml") + } +} + +// content type should match consumes +func TestMatchesContentTypeXml(t *testing.T) { + r := Route{Consumes: []string{"application/xml"}} + if r.matchesContentType("application/json") { + t.Errorf("accept should not match json") + } + if !r.matchesContentType("application/xml") { + t.Errorf("accept should match xml") + } +} + +// content type should match consumes +func TestMatchesContentTypeCharsetInformation(t *testing.T) { + r := Route{Consumes: []string{"application/json"}} + if !r.matchesContentType("application/json; charset=UTF-8") { + t.Errorf("matchesContentType should ignore charset information") + } +} + +func TestMatchesPath_OneParam(t *testing.T) { + params := doExtractParams("/from/{source}", 2, "/from/here", t) + if params["source"] != "here" { + t.Errorf("parameter mismatch here") + } +} + +func TestMatchesPath_Slash(t *testing.T) { + params := doExtractParams("/", 0, "/", t) + if len(params) != 0 { + t.Errorf("expected empty parameters") + } +} + +func TestMatchesPath_SlashNonVar(t *testing.T) { + params := doExtractParams("/any", 1, "/any", t) + if len(params) != 0 { + t.Errorf("expected empty parameters") + } +} + +func TestMatchesPath_TwoVars(t *testing.T) { + params := doExtractParams("/from/{source}/to/{destination}", 4, "/from/AMS/to/NY", t) + if params["source"] != "AMS" { + t.Errorf("parameter mismatch AMS") + } +} + +func TestMatchesPath_VarOnFront(t *testing.T) { + params := doExtractParams("{what}/from/{source}/", 3, "who/from/SOS/", t) + if params["source"] != "SOS" { + t.Errorf("parameter mismatch SOS") + } +} + +func TestExtractParameters_EmptyValue(t *testing.T) { + params := doExtractParams("/fixed/{var}", 2, "/fixed/", t) + if params["var"] != "" { + t.Errorf("parameter mismatch var") + } +} + +func TestTokenizePath(t *testing.T) { + if len(tokenizePath("/")) != 0 { + t.Errorf("not empty path tokens") + } +} + +func doExtractParams(routePath string, size int, urlPath string, t *testing.T) map[string]string { + r := Route{Path: routePath} + r.postBuild() + if len(r.pathParts) != size { + t.Fatalf("len not %v %v, but %v", size, r.pathParts, len(r.pathParts)) + } + return r.extractParameters(urlPath) +} diff --git a/vendor/github.com/emicklei/go-restful/router.go b/vendor/github.com/emicklei/go-restful/router.go new file mode 100644 index 000000000..9b32fb675 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/router.go @@ -0,0 +1,18 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import "net/http" + +// A RouteSelector finds the best matching Route given the input HTTP Request +type RouteSelector interface { + + // SelectRoute finds a Route given the input HTTP Request and a list of WebServices. + // It returns a selected Route and its containing WebService or an error indicating + // a problem. + SelectRoute( + webServices []*WebService, + httpRequest *http.Request) (selectedService *WebService, selected *Route, err error) +} diff --git a/vendor/github.com/emicklei/go-restful/service_error.go b/vendor/github.com/emicklei/go-restful/service_error.go new file mode 100644 index 000000000..62d1108bb --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/service_error.go @@ -0,0 +1,23 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import "fmt" + +// ServiceError is a transport object to pass information about a non-Http error occurred in a WebService while processing a request. +type ServiceError struct { + Code int + Message string +} + +// NewError returns a ServiceError using the code and reason +func NewError(code int, message string) ServiceError { + return ServiceError{Code: code, Message: message} +} + +// Error returns a text representation of the service error +func (s ServiceError) Error() string { + return fmt.Sprintf("[ServiceError:%v] %v", s.Code, s.Message) +} diff --git a/vendor/github.com/emicklei/go-restful/tracer_test.go b/vendor/github.com/emicklei/go-restful/tracer_test.go new file mode 100644 index 000000000..60c1e9fc0 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/tracer_test.go @@ -0,0 +1,18 @@ +package restful + +import "testing" + +// Use like this: +// +// TraceLogger(testLogger{t}) +type testLogger struct { + t *testing.T +} + +func (l testLogger) Print(v ...interface{}) { + l.t.Log(v...) +} + +func (l testLogger) Printf(format string, v ...interface{}) { + l.t.Logf(format, v...) +} diff --git a/vendor/github.com/emicklei/go-restful/web_service.go b/vendor/github.com/emicklei/go-restful/web_service.go new file mode 100644 index 000000000..7af60233a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/web_service.go @@ -0,0 +1,290 @@ +package restful + +import ( + "errors" + "os" + "reflect" + "sync" + + "github.com/emicklei/go-restful/log" +) + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// WebService holds a collection of Route values that bind a Http Method + URL Path to a function. +type WebService struct { + rootPath string + pathExpr *pathExpression // cached compilation of rootPath as RegExp + routes []Route + produces []string + consumes []string + pathParameters []*Parameter + filters []FilterFunction + documentation string + apiVersion string + + typeNameHandleFunc TypeNameHandleFunction + + dynamicRoutes bool + + // protects 'routes' if dynamic routes are enabled + routesLock sync.RWMutex +} + +func (w *WebService) SetDynamicRoutes(enable bool) { + w.dynamicRoutes = enable +} + +// TypeNameHandleFunction declares functions that can handle translating the name of a sample object +// into the restful documentation for the service. +type TypeNameHandleFunction func(sample interface{}) string + +// TypeNameHandler sets the function that will convert types to strings in the parameter +// and model definitions. If not set, the web service will invoke +// reflect.TypeOf(object).String(). +func (w *WebService) TypeNameHandler(handler TypeNameHandleFunction) *WebService { + w.typeNameHandleFunc = handler + return w +} + +// reflectTypeName is the default TypeNameHandleFunction and for a given object +// returns the name that Go identifies it with (e.g. "string" or "v1.Object") via +// the reflection API. +func reflectTypeName(sample interface{}) string { + return reflect.TypeOf(sample).String() +} + +// compilePathExpression ensures that the path is compiled into a RegEx for those routers that need it. +func (w *WebService) compilePathExpression() { + compiled, err := newPathExpression(w.rootPath) + if err != nil { + log.Printf("[restful] invalid path:%s because:%v", w.rootPath, err) + os.Exit(1) + } + w.pathExpr = compiled +} + +// ApiVersion sets the API version for documentation purposes. +func (w *WebService) ApiVersion(apiVersion string) *WebService { + w.apiVersion = apiVersion + return w +} + +// Version returns the API version for documentation purposes. +func (w *WebService) Version() string { return w.apiVersion } + +// Path specifies the root URL template path of the WebService. +// All Routes will be relative to this path. +func (w *WebService) Path(root string) *WebService { + w.rootPath = root + if len(w.rootPath) == 0 { + w.rootPath = "/" + } + w.compilePathExpression() + return w +} + +// Param adds a PathParameter to document parameters used in the root path. +func (w *WebService) Param(parameter *Parameter) *WebService { + if w.pathParameters == nil { + w.pathParameters = []*Parameter{} + } + w.pathParameters = append(w.pathParameters, parameter) + return w +} + +// PathParameter creates a new Parameter of kind Path for documentation purposes. +// It is initialized as required with string as its DataType. +func (w *WebService) PathParameter(name, description string) *Parameter { + return PathParameter(name, description) +} + +// PathParameter creates a new Parameter of kind Path for documentation purposes. +// It is initialized as required with string as its DataType. +func PathParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: true, DataType: "string"}} + p.bePath() + return p +} + +// QueryParameter creates a new Parameter of kind Query for documentation purposes. +// It is initialized as not required with string as its DataType. +func (w *WebService) QueryParameter(name, description string) *Parameter { + return QueryParameter(name, description) +} + +// QueryParameter creates a new Parameter of kind Query for documentation purposes. +// It is initialized as not required with string as its DataType. +func QueryParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}} + p.beQuery() + return p +} + +// BodyParameter creates a new Parameter of kind Body for documentation purposes. +// It is initialized as required without a DataType. +func (w *WebService) BodyParameter(name, description string) *Parameter { + return BodyParameter(name, description) +} + +// BodyParameter creates a new Parameter of kind Body for documentation purposes. +// It is initialized as required without a DataType. +func BodyParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: true}} + p.beBody() + return p +} + +// HeaderParameter creates a new Parameter of kind (Http) Header for documentation purposes. +// It is initialized as not required with string as its DataType. +func (w *WebService) HeaderParameter(name, description string) *Parameter { + return HeaderParameter(name, description) +} + +// HeaderParameter creates a new Parameter of kind (Http) Header for documentation purposes. +// It is initialized as not required with string as its DataType. +func HeaderParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}} + p.beHeader() + return p +} + +// FormParameter creates a new Parameter of kind Form (using application/x-www-form-urlencoded) for documentation purposes. +// It is initialized as required with string as its DataType. +func (w *WebService) FormParameter(name, description string) *Parameter { + return FormParameter(name, description) +} + +// FormParameter creates a new Parameter of kind Form (using application/x-www-form-urlencoded) for documentation purposes. +// It is initialized as required with string as its DataType. +func FormParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}} + p.beForm() + return p +} + +// Route creates a new Route using the RouteBuilder and add to the ordered list of Routes. +func (w *WebService) Route(builder *RouteBuilder) *WebService { + w.routesLock.Lock() + defer w.routesLock.Unlock() + builder.copyDefaults(w.produces, w.consumes) + w.routes = append(w.routes, builder.Build()) + return w +} + +// RemoveRoute removes the specified route, looks for something that matches 'path' and 'method' +func (w *WebService) RemoveRoute(path, method string) error { + if !w.dynamicRoutes { + return errors.New("dynamic routes are not enabled.") + } + w.routesLock.Lock() + defer w.routesLock.Unlock() + newRoutes := make([]Route, (len(w.routes) - 1)) + current := 0 + for ix := range w.routes { + if w.routes[ix].Method == method && w.routes[ix].Path == path { + continue + } + newRoutes[current] = w.routes[ix] + current = current + 1 + } + w.routes = newRoutes + return nil +} + +// Method creates a new RouteBuilder and initialize its http method +func (w *WebService) Method(httpMethod string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method(httpMethod) +} + +// Produces specifies that this WebService can produce one or more MIME types. +// Http requests must have one of these values set for the Accept header. +func (w *WebService) Produces(contentTypes ...string) *WebService { + w.produces = contentTypes + return w +} + +// Consumes specifies that this WebService can consume one or more MIME types. +// Http requests must have one of these values set for the Content-Type header. +func (w *WebService) Consumes(accepts ...string) *WebService { + w.consumes = accepts + return w +} + +// Routes returns the Routes associated with this WebService +func (w *WebService) Routes() []Route { + if !w.dynamicRoutes { + return w.routes + } + // Make a copy of the array to prevent concurrency problems + w.routesLock.RLock() + defer w.routesLock.RUnlock() + result := make([]Route, len(w.routes)) + for ix := range w.routes { + result[ix] = w.routes[ix] + } + return result +} + +// RootPath returns the RootPath associated with this WebService. Default "/" +func (w *WebService) RootPath() string { + return w.rootPath +} + +// PathParameters return the path parameter names for (shared amoung its Routes) +func (w *WebService) PathParameters() []*Parameter { + return w.pathParameters +} + +// Filter adds a filter function to the chain of filters applicable to all its Routes +func (w *WebService) Filter(filter FilterFunction) *WebService { + w.filters = append(w.filters, filter) + return w +} + +// Doc is used to set the documentation of this service. +func (w *WebService) Doc(plainText string) *WebService { + w.documentation = plainText + return w +} + +// Documentation returns it. +func (w *WebService) Documentation() string { + return w.documentation +} + +/* + Convenience methods +*/ + +// HEAD is a shortcut for .Method("HEAD").Path(subPath) +func (w *WebService) HEAD(subPath string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method("HEAD").Path(subPath) +} + +// GET is a shortcut for .Method("GET").Path(subPath) +func (w *WebService) GET(subPath string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method("GET").Path(subPath) +} + +// POST is a shortcut for .Method("POST").Path(subPath) +func (w *WebService) POST(subPath string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method("POST").Path(subPath) +} + +// PUT is a shortcut for .Method("PUT").Path(subPath) +func (w *WebService) PUT(subPath string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method("PUT").Path(subPath) +} + +// PATCH is a shortcut for .Method("PATCH").Path(subPath) +func (w *WebService) PATCH(subPath string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method("PATCH").Path(subPath) +} + +// DELETE is a shortcut for .Method("DELETE").Path(subPath) +func (w *WebService) DELETE(subPath string) *RouteBuilder { + return new(RouteBuilder).typeNameHandler(w.typeNameHandleFunc).servicePath(w.rootPath).Method("DELETE").Path(subPath) +} diff --git a/vendor/github.com/emicklei/go-restful/web_service_container.go b/vendor/github.com/emicklei/go-restful/web_service_container.go new file mode 100644 index 000000000..c9d31b06c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/web_service_container.go @@ -0,0 +1,39 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "net/http" +) + +// DefaultContainer is a restful.Container that uses http.DefaultServeMux +var DefaultContainer *Container + +func init() { + DefaultContainer = NewContainer() + DefaultContainer.ServeMux = http.DefaultServeMux +} + +// If set the true then panics will not be caught to return HTTP 500. +// In that case, Route functions are responsible for handling any error situation. +// Default value is false = recover from panics. This has performance implications. +// OBSOLETE ; use restful.DefaultContainer.DoNotRecover(true) +var DoNotRecover = false + +// Add registers a new WebService add it to the DefaultContainer. +func Add(service *WebService) { + DefaultContainer.Add(service) +} + +// Filter appends a container FilterFunction from the DefaultContainer. +// These are called before dispatching a http.Request to a WebService. +func Filter(filter FilterFunction) { + DefaultContainer.Filter(filter) +} + +// RegisteredWebServices returns the collections of WebServices from the DefaultContainer +func RegisteredWebServices() []*WebService { + return DefaultContainer.RegisteredWebServices() +} diff --git a/vendor/github.com/emicklei/go-restful/web_service_test.go b/vendor/github.com/emicklei/go-restful/web_service_test.go new file mode 100644 index 000000000..734938134 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/web_service_test.go @@ -0,0 +1,343 @@ +package restful + +import ( + "net/http" + "net/http/httptest" + "testing" +) + +const ( + pathGetFriends = "/get/{userId}/friends" +) + +func TestParameter(t *testing.T) { + p := &Parameter{&ParameterData{Name: "name", Description: "desc"}} + p.AllowMultiple(true) + p.DataType("int") + p.Required(true) + values := map[string]string{"a": "b"} + p.AllowableValues(values) + p.bePath() + + ws := new(WebService) + ws.Param(p) + if ws.pathParameters[0].Data().Name != "name" { + t.Error("path parameter (or name) invalid") + } +} +func TestWebService_CanCreateParameterKinds(t *testing.T) { + ws := new(WebService) + if ws.BodyParameter("b", "b").Kind() != BodyParameterKind { + t.Error("body parameter expected") + } + if ws.PathParameter("p", "p").Kind() != PathParameterKind { + t.Error("path parameter expected") + } + if ws.QueryParameter("q", "q").Kind() != QueryParameterKind { + t.Error("query parameter expected") + } +} + +func TestCapturePanic(t *testing.T) { + tearDown() + Add(newPanicingService()) + httpRequest, _ := http.NewRequest("GET", "http://here.com/fire", nil) + httpRequest.Header.Set("Accept", "*/*") + httpWriter := httptest.NewRecorder() + // override the default here + DefaultContainer.DoNotRecover(false) + DefaultContainer.dispatch(httpWriter, httpRequest) + if 500 != httpWriter.Code { + t.Error("500 expected on fire") + } +} + +func TestCapturePanicWithEncoded(t *testing.T) { + tearDown() + Add(newPanicingService()) + DefaultContainer.EnableContentEncoding(true) + httpRequest, _ := http.NewRequest("GET", "http://here.com/fire", nil) + httpRequest.Header.Set("Accept", "*/*") + httpRequest.Header.Set("Accept-Encoding", "gzip") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 500 != httpWriter.Code { + t.Error("500 expected on fire, got", httpWriter.Code) + } +} + +func TestNotFound(t *testing.T) { + tearDown() + httpRequest, _ := http.NewRequest("GET", "http://here.com/missing", nil) + httpRequest.Header.Set("Accept", "*/*") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 404 != httpWriter.Code { + t.Error("404 expected on missing") + } +} + +func TestMethodNotAllowed(t *testing.T) { + tearDown() + Add(newGetOnlyService()) + httpRequest, _ := http.NewRequest("POST", "http://here.com/get", nil) + httpRequest.Header.Set("Accept", "*/*") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 405 != httpWriter.Code { + t.Error("405 expected method not allowed") + } +} + +func TestSelectedRoutePath_Issue100(t *testing.T) { + tearDown() + Add(newSelectedRouteTestingService()) + httpRequest, _ := http.NewRequest("GET", "http://here.com/get/232452/friends", nil) + httpRequest.Header.Set("Accept", "*/*") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if http.StatusOK != httpWriter.Code { + t.Error(http.StatusOK, "expected,", httpWriter.Code, "received.") + } +} + +func TestContentType415_Issue170(t *testing.T) { + tearDown() + Add(newGetOnlyJsonOnlyService()) + httpRequest, _ := http.NewRequest("GET", "http://here.com/get", nil) + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 200 != httpWriter.Code { + t.Errorf("Expected 200, got %d", httpWriter.Code) + } +} + +func TestNoContentTypePOST(t *testing.T) { + tearDown() + Add(newPostNoConsumesService()) + httpRequest, _ := http.NewRequest("POST", "http://here.com/post", nil) + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 204 != httpWriter.Code { + t.Errorf("Expected 204, got %d", httpWriter.Code) + } +} + +func TestContentType415_POST_Issue170(t *testing.T) { + tearDown() + Add(newPostOnlyJsonOnlyService()) + httpRequest, _ := http.NewRequest("POST", "http://here.com/post", nil) + httpRequest.Header.Set("Content-Type", "application/json") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 200 != httpWriter.Code { + t.Errorf("Expected 200, got %d", httpWriter.Code) + } +} + +// go test -v -test.run TestContentType406PlainJson ...restful +func TestContentType406PlainJson(t *testing.T) { + tearDown() + TraceLogger(testLogger{t}) + Add(newGetPlainTextOrJsonService()) + httpRequest, _ := http.NewRequest("GET", "http://here.com/get", nil) + httpRequest.Header.Set("Accept", "text/plain") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 200; got != want { + t.Errorf("got %v, want %v", got, want) + } +} + +func TestRemoveRoute(t *testing.T) { + tearDown() + TraceLogger(testLogger{t}) + ws := newGetPlainTextOrJsonService() + Add(ws) + httpRequest, _ := http.NewRequest("GET", "http://here.com/get", nil) + httpRequest.Header.Set("Accept", "text/plain") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 200; got != want { + t.Errorf("got %v, want %v", got, want) + } + + // dynamic apis are disabled, should error and do nothing + if err := ws.RemoveRoute("/get", "GET"); err == nil { + t.Error("unexpected non-error") + } + + httpWriter = httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 200; got != want { + t.Errorf("got %v, want %v", got, want) + } + + ws.SetDynamicRoutes(true) + if err := ws.RemoveRoute("/get", "GET"); err != nil { + t.Errorf("unexpected error %v", err) + } + + httpWriter = httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 404; got != want { + t.Errorf("got %v, want %v", got, want) + } +} +func TestRemoveLastRoute(t *testing.T) { + tearDown() + TraceLogger(testLogger{t}) + ws := newGetPlainTextOrJsonServiceMultiRoute() + Add(ws) + httpRequest, _ := http.NewRequest("GET", "http://here.com/get", nil) + httpRequest.Header.Set("Accept", "text/plain") + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 200; got != want { + t.Errorf("got %v, want %v", got, want) + } + + // dynamic apis are disabled, should error and do nothing + if err := ws.RemoveRoute("/get", "GET"); err == nil { + t.Error("unexpected non-error") + } + + httpWriter = httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 200; got != want { + t.Errorf("got %v, want %v", got, want) + } + + ws.SetDynamicRoutes(true) + if err := ws.RemoveRoute("/get", "GET"); err != nil { + t.Errorf("unexpected error %v", err) + } + + httpWriter = httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if got, want := httpWriter.Code, 404; got != want { + t.Errorf("got %v, want %v", got, want) + } +} + +// go test -v -test.run TestContentTypeOctet_Issue170 ...restful +func TestContentTypeOctet_Issue170(t *testing.T) { + tearDown() + Add(newGetConsumingOctetStreamService()) + // with content-type + httpRequest, _ := http.NewRequest("GET", "http://here.com/get", nil) + httpRequest.Header.Set("Content-Type", MIME_OCTET) + httpWriter := httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 200 != httpWriter.Code { + t.Errorf("Expected 200, got %d", httpWriter.Code) + } + // without content-type + httpRequest, _ = http.NewRequest("GET", "http://here.com/get", nil) + httpWriter = httptest.NewRecorder() + DefaultContainer.dispatch(httpWriter, httpRequest) + if 200 != httpWriter.Code { + t.Errorf("Expected 200, got %d", httpWriter.Code) + } +} + +type exampleBody struct{} + +func TestParameterDataTypeDefaults(t *testing.T) { + tearDown() + ws := new(WebService) + route := ws.POST("/post").Reads(&exampleBody{}) + if route.parameters[0].data.DataType != "*restful.exampleBody" { + t.Errorf("body parameter incorrect name: %#v", route.parameters[0].data) + } +} + +func TestParameterDataTypeCustomization(t *testing.T) { + tearDown() + ws := new(WebService) + ws.TypeNameHandler(func(sample interface{}) string { + return "my.custom.type.name" + }) + route := ws.POST("/post").Reads(&exampleBody{}) + if route.parameters[0].data.DataType != "my.custom.type.name" { + t.Errorf("body parameter incorrect name: %#v", route.parameters[0].data) + } +} + +func newPanicingService() *WebService { + ws := new(WebService).Path("") + ws.Route(ws.GET("/fire").To(doPanic)) + return ws +} + +func newGetOnlyService() *WebService { + ws := new(WebService).Path("") + ws.Route(ws.GET("/get").To(doPanic)) + return ws +} + +func newPostOnlyJsonOnlyService() *WebService { + ws := new(WebService).Path("") + ws.Consumes("application/json") + ws.Route(ws.POST("/post").To(doNothing)) + return ws +} + +func newGetOnlyJsonOnlyService() *WebService { + ws := new(WebService).Path("") + ws.Consumes("application/json") + ws.Route(ws.GET("/get").To(doNothing)) + return ws +} + +func newGetPlainTextOrJsonService() *WebService { + ws := new(WebService).Path("") + ws.Produces("text/plain", "application/json") + ws.Route(ws.GET("/get").To(doNothing)) + return ws +} + +func newGetPlainTextOrJsonServiceMultiRoute() *WebService { + ws := new(WebService).Path("") + ws.Produces("text/plain", "application/json") + ws.Route(ws.GET("/get").To(doNothing)) + ws.Route(ws.GET("/status").To(doNothing)) + return ws +} + +func newGetConsumingOctetStreamService() *WebService { + ws := new(WebService).Path("") + ws.Consumes("application/octet-stream") + ws.Route(ws.GET("/get").To(doNothing)) + return ws +} + +func newPostNoConsumesService() *WebService { + ws := new(WebService).Path("") + ws.Route(ws.POST("/post").To(return204)) + return ws +} + +func newSelectedRouteTestingService() *WebService { + ws := new(WebService).Path("") + ws.Route(ws.GET(pathGetFriends).To(selectedRouteChecker)) + return ws +} + +func selectedRouteChecker(req *Request, resp *Response) { + if req.SelectedRoutePath() != pathGetFriends { + resp.InternalServerError() + } +} + +func doPanic(req *Request, resp *Response) { + println("lightning...") + panic("fire") +} + +func doNothing(req *Request, resp *Response) { +} + +func return204(req *Request, resp *Response) { + resp.WriteHeader(204) +} diff --git a/vendor/github.com/fsnotify/fsnotify/.editorconfig b/vendor/github.com/fsnotify/fsnotify/.editorconfig deleted file mode 100644 index ba49e3c23..000000000 --- a/vendor/github.com/fsnotify/fsnotify/.editorconfig +++ /dev/null @@ -1,5 +0,0 @@ -root = true - -[*] -indent_style = tab -indent_size = 4 diff --git a/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md b/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 4ad1aed8f..000000000 --- a/vendor/github.com/fsnotify/fsnotify/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,11 +0,0 @@ -Before reporting an issue, please ensure you are using the latest release of fsnotify. - -### Which operating system (GOOS) and version are you using? - -Linux: lsb_release -a -macOS: sw_vers -Windows: systeminfo | findstr /B /C:OS - -### Please describe the issue that occurred. - -### Are you able to reproduce the issue? Please provide steps to reproduce and a code sample if possible. diff --git a/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md b/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 64ddf7cef..000000000 --- a/vendor/github.com/fsnotify/fsnotify/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -#### What does this pull request do? - - -#### Where should the reviewer start? - - -#### How should this be manually tested? - diff --git a/vendor/github.com/fsnotify/fsnotify/.gitignore b/vendor/github.com/fsnotify/fsnotify/.gitignore deleted file mode 100644 index 4cd0cbaf4..000000000 --- a/vendor/github.com/fsnotify/fsnotify/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# Setup a Global .gitignore for OS and editor generated files: -# https://help.github.com/articles/ignoring-files -# git config --global core.excludesfile ~/.gitignore_global - -.vagrant -*.sublime-project diff --git a/vendor/github.com/fsnotify/fsnotify/.travis.yml b/vendor/github.com/fsnotify/fsnotify/.travis.yml deleted file mode 100644 index 22e5fa43f..000000000 --- a/vendor/github.com/fsnotify/fsnotify/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -sudo: false -language: go - -go: - - 1.8 - - 1.7.x - - tip - -matrix: - allow_failures: - - go: tip - fast_finish: true - -before_script: - - go get -u github.com/golang/lint/golint - -script: - - go test -v --race ./... - -after_script: - - test -z "$(gofmt -s -l -w . | tee /dev/stderr)" - - test -z "$(golint ./... | tee /dev/stderr)" - - go vet ./... - -os: - - linux - - osx - -notifications: - email: false diff --git a/vendor/github.com/fsnotify/fsnotify/AUTHORS b/vendor/github.com/fsnotify/fsnotify/AUTHORS deleted file mode 100644 index 0a5bf8f61..000000000 --- a/vendor/github.com/fsnotify/fsnotify/AUTHORS +++ /dev/null @@ -1,46 +0,0 @@ -# Names should be added to this file as -# Name or Organization -# The email address is not required for organizations. - -# You can update this list using the following command: -# -# $ git shortlog -se | awk '{print $2 " " $3 " " $4}' - -# Please keep the list sorted. - -Adrien Bustany -Amit Krishnan -Bjørn Erik Pedersen -Bruno Bigras -Caleb Spare -Case Nelson -Chris Howey -Christoffer Buchholz -Daniel Wagner-Hall -Dave Cheney -Evan Phoenix -Francisco Souza -Hari haran -John C Barstow -Kelvin Fo -Ken-ichirou MATSUZAWA -Matt Layher -Nathan Youngman -Patrick -Paul Hammond -Pawel Knap -Pieter Droogendijk -Pursuit92 -Riku Voipio -Rob Figueiredo -Slawek Ligus -Soge Zhang -Tiffany Jernigan -Tilak Sharma -Travis Cline -Tudor Golubenco -Yukang -bronze1man -debrando -henrikedwards -铁哥 diff --git a/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md b/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md deleted file mode 100644 index 8c732c1d8..000000000 --- a/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md +++ /dev/null @@ -1,307 +0,0 @@ -# Changelog - -## v1.4.2 / 2016-10-10 - -* Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec [#178](https://github.com/fsnotify/fsnotify/pull/178) (thanks @pattyshack) - -## v1.4.1 / 2016-10-04 - -* Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack) - -## v1.4.0 / 2016-10-01 - -* add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie) - -## v1.3.1 / 2016-06-28 - -* Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc) - -## v1.3.0 / 2016-04-19 - -* Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135) - -## v1.2.10 / 2016-03-02 - -* Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj) - -## v1.2.9 / 2016-01-13 - -kqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep) - -## v1.2.8 / 2015-12-17 - -* kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test) -* inotify: fix race in test -* enable race detection for continuous integration (Linux, Mac, Windows) - -## v1.2.5 / 2015-10-17 - -* inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki) -* inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken) -* kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie) -* kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion) - -## v1.2.1 / 2015-10-14 - -* kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx) - -## v1.2.0 / 2015-02-08 - -* inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD) -* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD) -* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59) - -## v1.1.1 / 2015-02-05 - -* inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD) - -## v1.1.0 / 2014-12-12 - -* kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43) - * add low-level functions - * only need to store flags on directories - * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13) - * done can be an unbuffered channel - * remove calls to os.NewSyscallError -* More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher) -* kqueue: fix regression in rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48) -* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51) - -## v1.0.4 / 2014-09-07 - -* kqueue: add dragonfly to the build tags. -* Rename source code files, rearrange code so exported APIs are at the top. -* Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang) - -## v1.0.3 / 2014-08-19 - -* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36) - -## v1.0.2 / 2014-08-17 - -* [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso) -* [Fix] Make ./path and path equivalent. (thanks @zhsso) - -## v1.0.0 / 2014-08-15 - -* [API] Remove AddWatch on Windows, use Add. -* Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30) -* Minor updates based on feedback from golint. - -## dev / 2014-07-09 - -* Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify). -* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno) - -## dev / 2014-07-04 - -* kqueue: fix incorrect mutex used in Close() -* Update example to demonstrate usage of Op. - -## dev / 2014-06-28 - -* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4) -* Fix for String() method on Event (thanks Alex Brainman) -* Don't build on Plan 9 or Solaris (thanks @4ad) - -## dev / 2014-06-21 - -* Events channel of type Event rather than *Event. -* [internal] use syscall constants directly for inotify and kqueue. -* [internal] kqueue: rename events to kevents and fileEvent to event. - -## dev / 2014-06-19 - -* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally). -* [internal] remove cookie from Event struct (unused). -* [internal] Event struct has the same definition across every OS. -* [internal] remove internal watch and removeWatch methods. - -## dev / 2014-06-12 - -* [API] Renamed Watch() to Add() and RemoveWatch() to Remove(). -* [API] Pluralized channel names: Events and Errors. -* [API] Renamed FileEvent struct to Event. -* [API] Op constants replace methods like IsCreate(). - -## dev / 2014-06-12 - -* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) - -## dev / 2014-05-23 - -* [API] Remove current implementation of WatchFlags. - * current implementation doesn't take advantage of OS for efficiency - * provides little benefit over filtering events as they are received, but has extra bookkeeping and mutexes - * no tests for the current implementation - * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195) - -## v0.9.3 / 2014-12-31 - -* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51) - -## v0.9.2 / 2014-08-17 - -* [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso) - -## v0.9.1 / 2014-06-12 - -* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) - -## v0.9.0 / 2014-01-17 - -* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany) -* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare) -* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library. - -## v0.8.12 / 2013-11-13 - -* [API] Remove FD_SET and friends from Linux adapter - -## v0.8.11 / 2013-11-02 - -* [Doc] Add Changelog [#72][] (thanks @nathany) -* [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond) - -## v0.8.10 / 2013-10-19 - -* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott) -* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer) -* [Doc] specify OS-specific limits in README (thanks @debrando) - -## v0.8.9 / 2013-09-08 - -* [Doc] Contributing (thanks @nathany) -* [Doc] update package path in example code [#63][] (thanks @paulhammond) -* [Doc] GoCI badge in README (Linux only) [#60][] -* [Doc] Cross-platform testing with Vagrant [#59][] (thanks @nathany) - -## v0.8.8 / 2013-06-17 - -* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie) - -## v0.8.7 / 2013-06-03 - -* [API] Make syscall flags internal -* [Fix] inotify: ignore event changes -* [Fix] race in symlink test [#45][] (reported by @srid) -* [Fix] tests on Windows -* lower case error messages - -## v0.8.6 / 2013-05-23 - -* kqueue: Use EVT_ONLY flag on Darwin -* [Doc] Update README with full example - -## v0.8.5 / 2013-05-09 - -* [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg) - -## v0.8.4 / 2013-04-07 - -* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz) - -## v0.8.3 / 2013-03-13 - -* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin) -* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin) - -## v0.8.2 / 2013-02-07 - -* [Doc] add Authors -* [Fix] fix data races for map access [#29][] (thanks @fsouza) - -## v0.8.1 / 2013-01-09 - -* [Fix] Windows path separators -* [Doc] BSD License - -## v0.8.0 / 2012-11-09 - -* kqueue: directory watching improvements (thanks @vmirage) -* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto) -* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr) - -## v0.7.4 / 2012-10-09 - -* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji) -* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig) -* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig) -* [Fix] kqueue: modify after recreation of file - -## v0.7.3 / 2012-09-27 - -* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage) -* [Fix] kqueue: no longer get duplicate CREATE events - -## v0.7.2 / 2012-09-01 - -* kqueue: events for created directories - -## v0.7.1 / 2012-07-14 - -* [Fix] for renaming files - -## v0.7.0 / 2012-07-02 - -* [Feature] FSNotify flags -* [Fix] inotify: Added file name back to event path - -## v0.6.0 / 2012-06-06 - -* kqueue: watch files after directory created (thanks @tmc) - -## v0.5.1 / 2012-05-22 - -* [Fix] inotify: remove all watches before Close() - -## v0.5.0 / 2012-05-03 - -* [API] kqueue: return errors during watch instead of sending over channel -* kqueue: match symlink behavior on Linux -* inotify: add `DELETE_SELF` (requested by @taralx) -* [Fix] kqueue: handle EINTR (reported by @robfig) -* [Doc] Godoc example [#1][] (thanks @davecheney) - -## v0.4.0 / 2012-03-30 - -* Go 1 released: build with go tool -* [Feature] Windows support using winfsnotify -* Windows does not have attribute change notifications -* Roll attribute notifications into IsModify - -## v0.3.0 / 2012-02-19 - -* kqueue: add files when watch directory - -## v0.2.0 / 2011-12-30 - -* update to latest Go weekly code - -## v0.1.0 / 2011-10-19 - -* kqueue: add watch on file creation to match inotify -* kqueue: create file event -* inotify: ignore `IN_IGNORED` events -* event String() -* linux: common FileEvent functions -* initial commit - -[#79]: https://github.com/howeyc/fsnotify/pull/79 -[#77]: https://github.com/howeyc/fsnotify/pull/77 -[#72]: https://github.com/howeyc/fsnotify/issues/72 -[#71]: https://github.com/howeyc/fsnotify/issues/71 -[#70]: https://github.com/howeyc/fsnotify/issues/70 -[#63]: https://github.com/howeyc/fsnotify/issues/63 -[#62]: https://github.com/howeyc/fsnotify/issues/62 -[#60]: https://github.com/howeyc/fsnotify/issues/60 -[#59]: https://github.com/howeyc/fsnotify/issues/59 -[#49]: https://github.com/howeyc/fsnotify/issues/49 -[#45]: https://github.com/howeyc/fsnotify/issues/45 -[#40]: https://github.com/howeyc/fsnotify/issues/40 -[#36]: https://github.com/howeyc/fsnotify/issues/36 -[#33]: https://github.com/howeyc/fsnotify/issues/33 -[#29]: https://github.com/howeyc/fsnotify/issues/29 -[#25]: https://github.com/howeyc/fsnotify/issues/25 -[#24]: https://github.com/howeyc/fsnotify/issues/24 -[#21]: https://github.com/howeyc/fsnotify/issues/21 diff --git a/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md b/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md deleted file mode 100644 index 828a60b24..000000000 --- a/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md +++ /dev/null @@ -1,77 +0,0 @@ -# Contributing - -## Issues - -* Request features and report bugs using the [GitHub Issue Tracker](https://github.com/fsnotify/fsnotify/issues). -* Please indicate the platform you are using fsnotify on. -* A code example to reproduce the problem is appreciated. - -## Pull Requests - -### Contributor License Agreement - -fsnotify is derived from code in the [golang.org/x/exp](https://godoc.org/golang.org/x/exp) package and it may be included [in the standard library](https://github.com/fsnotify/fsnotify/issues/1) in the future. Therefore fsnotify carries the same [LICENSE](https://github.com/fsnotify/fsnotify/blob/master/LICENSE) as Go. Contributors retain their copyright, so you need to fill out a short form before we can accept your contribution: [Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual). - -Please indicate that you have signed the CLA in your pull request. - -### How fsnotify is Developed - -* Development is done on feature branches. -* Tests are run on BSD, Linux, macOS and Windows. -* Pull requests are reviewed and [applied to master][am] using [hub][]. - * Maintainers may modify or squash commits rather than asking contributors to. -* To issue a new release, the maintainers will: - * Update the CHANGELOG - * Tag a version, which will become available through gopkg.in. - -### How to Fork - -For smooth sailing, always use the original import path. Installing with `go get` makes this easy. - -1. Install from GitHub (`go get -u github.com/fsnotify/fsnotify`) -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Ensure everything works and the tests pass (see below) -4. Commit your changes (`git commit -am 'Add some feature'`) - -Contribute upstream: - -1. Fork fsnotify on GitHub -2. Add your remote (`git remote add fork git@github.com:mycompany/repo.git`) -3. Push to the branch (`git push fork my-new-feature`) -4. Create a new Pull Request on GitHub - -This workflow is [thoroughly explained by Katrina Owen](https://splice.com/blog/contributing-open-source-git-repositories-go/). - -### Testing - -fsnotify uses build tags to compile different code on Linux, BSD, macOS, and Windows. - -Before doing a pull request, please do your best to test your changes on multiple platforms, and list which platforms you were able/unable to test on. - -To aid in cross-platform testing there is a Vagrantfile for Linux and BSD. - -* Install [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) -* Setup [Vagrant Gopher](https://github.com/nathany/vagrant-gopher) in your `src` folder. -* Run `vagrant up` from the project folder. You can also setup just one box with `vagrant up linux` or `vagrant up bsd` (note: the BSD box doesn't support Windows hosts at this time, and NFS may prompt for your host OS password) -* Once setup, you can run the test suite on a given OS with a single command `vagrant ssh linux -c 'cd fsnotify/fsnotify; go test'`. -* When you're done, you will want to halt or destroy the Vagrant boxes. - -Notice: fsnotify file system events won't trigger in shared folders. The tests get around this limitation by using the /tmp directory. - -Right now there is no equivalent solution for Windows and macOS, but there are Windows VMs [freely available from Microsoft](http://www.modern.ie/en-us/virtualization-tools#downloads). - -### Maintainers - -Help maintaining fsnotify is welcome. To be a maintainer: - -* Submit a pull request and sign the CLA as above. -* You must be able to run the test suite on Mac, Windows, Linux and BSD. - -To keep master clean, the fsnotify project uses the "apply mail" workflow outlined in Nathaniel Talbott's post ["Merge pull request" Considered Harmful][am]. This requires installing [hub][]. - -All code changes should be internal pull requests. - -Releases are tagged using [Semantic Versioning](http://semver.org/). - -[hub]: https://github.com/github/hub -[am]: http://blog.spreedly.com/2014/06/24/merge-pull-request-considered-harmful/#.VGa5yZPF_Zs diff --git a/vendor/github.com/fsnotify/fsnotify/README.md b/vendor/github.com/fsnotify/fsnotify/README.md deleted file mode 100644 index 399320741..000000000 --- a/vendor/github.com/fsnotify/fsnotify/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# File system notifications for Go - -[![GoDoc](https://godoc.org/github.com/fsnotify/fsnotify?status.svg)](https://godoc.org/github.com/fsnotify/fsnotify) [![Go Report Card](https://goreportcard.com/badge/github.com/fsnotify/fsnotify)](https://goreportcard.com/report/github.com/fsnotify/fsnotify) - -fsnotify utilizes [golang.org/x/sys](https://godoc.org/golang.org/x/sys) rather than `syscall` from the standard library. Ensure you have the latest version installed by running: - -```console -go get -u golang.org/x/sys/... -``` - -Cross platform: Windows, Linux, BSD and macOS. - -|Adapter |OS |Status | -|----------|----------|----------| -|inotify |Linux 2.6.27 or later, Android\*|Supported [![Build Status](https://travis-ci.org/fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/fsnotify/fsnotify)| -|kqueue |BSD, macOS, iOS\*|Supported [![Build Status](https://travis-ci.org/fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/fsnotify/fsnotify)| -|ReadDirectoryChangesW|Windows|Supported [![Build status](https://ci.appveyor.com/api/projects/status/ivwjubaih4r0udeh/branch/master?svg=true)](https://ci.appveyor.com/project/NathanYoungman/fsnotify/branch/master)| -|FSEvents |macOS |[Planned](https://github.com/fsnotify/fsnotify/issues/11)| -|FEN |Solaris 11 |[In Progress](https://github.com/fsnotify/fsnotify/issues/12)| -|fanotify |Linux 2.6.37+ | | -|USN Journals |Windows |[Maybe](https://github.com/fsnotify/fsnotify/issues/53)| -|Polling |*All* |[Maybe](https://github.com/fsnotify/fsnotify/issues/9)| - -\* Android and iOS are untested. - -Please see [the documentation](https://godoc.org/github.com/fsnotify/fsnotify) and consult the [FAQ](#faq) for usage information. - -## API stability - -fsnotify is a fork of [howeyc/fsnotify](https://godoc.org/github.com/howeyc/fsnotify) with a new API as of v1.0. The API is based on [this design document](http://goo.gl/MrYxyA). - -All [releases](https://github.com/fsnotify/fsnotify/releases) are tagged based on [Semantic Versioning](http://semver.org/). Further API changes are [planned](https://github.com/fsnotify/fsnotify/milestones), and will be tagged with a new major revision number. - -Go 1.6 supports dependencies located in the `vendor/` folder. Unless you are creating a library, it is recommended that you copy fsnotify into `vendor/github.com/fsnotify/fsnotify` within your project, and likewise for `golang.org/x/sys`. - -## Contributing - -Please refer to [CONTRIBUTING][] before opening an issue or pull request. - -## Example - -See [example_test.go](https://github.com/fsnotify/fsnotify/blob/master/example_test.go). - -## FAQ - -**When a file is moved to another directory is it still being watched?** - -No (it shouldn't be, unless you are watching where it was moved to). - -**When I watch a directory, are all subdirectories watched as well?** - -No, you must add watches for any directory you want to watch (a recursive watcher is on the roadmap [#18][]). - -**Do I have to watch the Error and Event channels in a separate goroutine?** - -As of now, yes. Looking into making this single-thread friendly (see [howeyc #7][#7]) - -**Why am I receiving multiple events for the same file on OS X?** - -Spotlight indexing on OS X can result in multiple events (see [howeyc #62][#62]). A temporary workaround is to add your folder(s) to the *Spotlight Privacy settings* until we have a native FSEvents implementation (see [#11][]). - -**How many files can be watched at once?** - -There are OS-specific limits as to how many watches can be created: -* Linux: /proc/sys/fs/inotify/max_user_watches contains the limit, reaching this limit results in a "no space left on device" error. -* BSD / OSX: sysctl variables "kern.maxfiles" and "kern.maxfilesperproc", reaching these limits results in a "too many open files" error. - -[#62]: https://github.com/howeyc/fsnotify/issues/62 -[#18]: https://github.com/fsnotify/fsnotify/issues/18 -[#11]: https://github.com/fsnotify/fsnotify/issues/11 -[#7]: https://github.com/howeyc/fsnotify/issues/7 - -[contributing]: https://github.com/fsnotify/fsnotify/blob/master/CONTRIBUTING.md - -## Related Projects - -* [notify](https://github.com/rjeczalik/notify) -* [fsevents](https://github.com/fsnotify/fsevents) - diff --git a/vendor/github.com/fsnotify/fsnotify/example_test.go b/vendor/github.com/fsnotify/fsnotify/example_test.go deleted file mode 100644 index 700502cb3..000000000 --- a/vendor/github.com/fsnotify/fsnotify/example_test.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2012 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. - -// +build !plan9 - -package fsnotify_test - -import ( - "log" - - "github.com/fsnotify/fsnotify" -) - -func ExampleNewWatcher() { - watcher, err := fsnotify.NewWatcher() - if err != nil { - log.Fatal(err) - } - defer watcher.Close() - - done := make(chan bool) - go func() { - for { - select { - case event := <-watcher.Events: - log.Println("event:", event) - if event.Op&fsnotify.Write == fsnotify.Write { - log.Println("modified file:", event.Name) - } - case err := <-watcher.Errors: - log.Println("error:", err) - } - } - }() - - err = watcher.Add("/tmp/foo") - if err != nil { - log.Fatal(err) - } - <-done -} diff --git a/vendor/github.com/fsnotify/fsnotify/fen.go b/vendor/github.com/fsnotify/fsnotify/fen.go deleted file mode 100644 index ced39cb88..000000000 --- a/vendor/github.com/fsnotify/fsnotify/fen.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2010 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. - -// +build solaris - -package fsnotify - -import ( - "errors" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - return nil, errors.New("FEN based watcher not yet supported for fsnotify\n") -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - return nil -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - return nil -} - -// Remove stops watching the the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - return nil -} diff --git a/vendor/github.com/fsnotify/fsnotify/fsnotify.go b/vendor/github.com/fsnotify/fsnotify/fsnotify.go deleted file mode 100644 index 190bf0de5..000000000 --- a/vendor/github.com/fsnotify/fsnotify/fsnotify.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2012 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. - -// +build !plan9 - -// Package fsnotify provides a platform-independent interface for file system notifications. -package fsnotify - -import ( - "bytes" - "errors" - "fmt" -) - -// Event represents a single file system notification. -type Event struct { - Name string // Relative path to the file or directory. - Op Op // File operation that triggered the event. -} - -// Op describes a set of file operations. -type Op uint32 - -// These are the generalized file operations that can trigger a notification. -const ( - Create Op = 1 << iota - Write - Remove - Rename - Chmod -) - -func (op Op) String() string { - // Use a buffer for efficient string concatenation - var buffer bytes.Buffer - - if op&Create == Create { - buffer.WriteString("|CREATE") - } - if op&Remove == Remove { - buffer.WriteString("|REMOVE") - } - if op&Write == Write { - buffer.WriteString("|WRITE") - } - if op&Rename == Rename { - buffer.WriteString("|RENAME") - } - if op&Chmod == Chmod { - buffer.WriteString("|CHMOD") - } - if buffer.Len() == 0 { - return "" - } - return buffer.String()[1:] // Strip leading pipe -} - -// String returns a string representation of the event in the form -// "file: REMOVE|WRITE|..." -func (e Event) String() string { - return fmt.Sprintf("%q: %s", e.Name, e.Op.String()) -} - -// Common errors that can be reported by a watcher -var ErrEventOverflow = errors.New("fsnotify queue overflow") diff --git a/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go b/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go deleted file mode 100644 index 9d6d72afc..000000000 --- a/vendor/github.com/fsnotify/fsnotify/fsnotify_test.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 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. - -// +build !plan9 - -package fsnotify - -import "testing" - -func TestEventStringWithValue(t *testing.T) { - for opMask, expectedString := range map[Op]string{ - Chmod | Create: `"/usr/someFile": CREATE|CHMOD`, - Rename: `"/usr/someFile": RENAME`, - Remove: `"/usr/someFile": REMOVE`, - Write | Chmod: `"/usr/someFile": WRITE|CHMOD`, - } { - event := Event{Name: "/usr/someFile", Op: opMask} - if event.String() != expectedString { - t.Fatalf("Expected %s, got: %v", expectedString, event.String()) - } - - } -} - -func TestEventOpStringWithValue(t *testing.T) { - expectedOpString := "WRITE|CHMOD" - event := Event{Name: "someFile", Op: Write | Chmod} - if event.Op.String() != expectedOpString { - t.Fatalf("Expected %s, got: %v", expectedOpString, event.Op.String()) - } -} - -func TestEventOpStringWithNoValue(t *testing.T) { - expectedOpString := "" - event := Event{Name: "testFile", Op: 0} - if event.Op.String() != expectedOpString { - t.Fatalf("Expected %s, got: %v", expectedOpString, event.Op.String()) - } -} diff --git a/vendor/github.com/fsnotify/fsnotify/inotify.go b/vendor/github.com/fsnotify/fsnotify/inotify.go deleted file mode 100644 index d9fd1b88a..000000000 --- a/vendor/github.com/fsnotify/fsnotify/inotify.go +++ /dev/null @@ -1,337 +0,0 @@ -// Copyright 2010 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. - -// +build linux - -package fsnotify - -import ( - "errors" - "fmt" - "io" - "os" - "path/filepath" - "strings" - "sync" - "unsafe" - - "golang.org/x/sys/unix" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error - mu sync.Mutex // Map access - fd int - poller *fdPoller - watches map[string]*watch // Map of inotify watches (key: path) - paths map[int]string // Map of watched paths (key: watch descriptor) - done chan struct{} // Channel for sending a "quit message" to the reader goroutine - doneResp chan struct{} // Channel to respond to Close -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - // Create inotify fd - fd, errno := unix.InotifyInit1(unix.IN_CLOEXEC) - if fd == -1 { - return nil, errno - } - // Create epoll - poller, err := newFdPoller(fd) - if err != nil { - unix.Close(fd) - return nil, err - } - w := &Watcher{ - fd: fd, - poller: poller, - watches: make(map[string]*watch), - paths: make(map[int]string), - Events: make(chan Event), - Errors: make(chan error), - done: make(chan struct{}), - doneResp: make(chan struct{}), - } - - go w.readEvents() - return w, nil -} - -func (w *Watcher) isClosed() bool { - select { - case <-w.done: - return true - default: - return false - } -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - if w.isClosed() { - return nil - } - - // Send 'close' signal to goroutine, and set the Watcher to closed. - close(w.done) - - // Wake up goroutine - w.poller.wake() - - // Wait for goroutine to close - <-w.doneResp - - return nil -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - name = filepath.Clean(name) - if w.isClosed() { - return errors.New("inotify instance already closed") - } - - const agnosticEvents = unix.IN_MOVED_TO | unix.IN_MOVED_FROM | - unix.IN_CREATE | unix.IN_ATTRIB | unix.IN_MODIFY | - unix.IN_MOVE_SELF | unix.IN_DELETE | unix.IN_DELETE_SELF - - var flags uint32 = agnosticEvents - - w.mu.Lock() - defer w.mu.Unlock() - watchEntry := w.watches[name] - if watchEntry != nil { - flags |= watchEntry.flags | unix.IN_MASK_ADD - } - wd, errno := unix.InotifyAddWatch(w.fd, name, flags) - if wd == -1 { - return errno - } - - if watchEntry == nil { - w.watches[name] = &watch{wd: uint32(wd), flags: flags} - w.paths[wd] = name - } else { - watchEntry.wd = uint32(wd) - watchEntry.flags = flags - } - - return nil -} - -// Remove stops watching the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - name = filepath.Clean(name) - - // Fetch the watch. - w.mu.Lock() - defer w.mu.Unlock() - watch, ok := w.watches[name] - - // Remove it from inotify. - if !ok { - return fmt.Errorf("can't remove non-existent inotify watch for: %s", name) - } - - // We successfully removed the watch if InotifyRmWatch doesn't return an - // error, we need to clean up our internal state to ensure it matches - // inotify's kernel state. - delete(w.paths, int(watch.wd)) - delete(w.watches, name) - - // inotify_rm_watch will return EINVAL if the file has been deleted; - // the inotify will already have been removed. - // watches and pathes are deleted in ignoreLinux() implicitly and asynchronously - // by calling inotify_rm_watch() below. e.g. readEvents() goroutine receives IN_IGNORE - // so that EINVAL means that the wd is being rm_watch()ed or its file removed - // by another thread and we have not received IN_IGNORE event. - success, errno := unix.InotifyRmWatch(w.fd, watch.wd) - if success == -1 { - // TODO: Perhaps it's not helpful to return an error here in every case. - // the only two possible errors are: - // EBADF, which happens when w.fd is not a valid file descriptor of any kind. - // EINVAL, which is when fd is not an inotify descriptor or wd is not a valid watch descriptor. - // Watch descriptors are invalidated when they are removed explicitly or implicitly; - // explicitly by inotify_rm_watch, implicitly when the file they are watching is deleted. - return errno - } - - return nil -} - -type watch struct { - wd uint32 // Watch descriptor (as returned by the inotify_add_watch() syscall) - flags uint32 // inotify flags of this watch (see inotify(7) for the list of valid flags) -} - -// readEvents reads from the inotify file descriptor, converts the -// received events into Event objects and sends them via the Events channel -func (w *Watcher) readEvents() { - var ( - buf [unix.SizeofInotifyEvent * 4096]byte // Buffer for a maximum of 4096 raw events - n int // Number of bytes read with read() - errno error // Syscall errno - ok bool // For poller.wait - ) - - defer close(w.doneResp) - defer close(w.Errors) - defer close(w.Events) - defer unix.Close(w.fd) - defer w.poller.close() - - for { - // See if we have been closed. - if w.isClosed() { - return - } - - ok, errno = w.poller.wait() - if errno != nil { - select { - case w.Errors <- errno: - case <-w.done: - return - } - continue - } - - if !ok { - continue - } - - n, errno = unix.Read(w.fd, buf[:]) - // If a signal interrupted execution, see if we've been asked to close, and try again. - // http://man7.org/linux/man-pages/man7/signal.7.html : - // "Before Linux 3.8, reads from an inotify(7) file descriptor were not restartable" - if errno == unix.EINTR { - continue - } - - // unix.Read might have been woken up by Close. If so, we're done. - if w.isClosed() { - return - } - - if n < unix.SizeofInotifyEvent { - var err error - if n == 0 { - // If EOF is received. This should really never happen. - err = io.EOF - } else if n < 0 { - // If an error occurred while reading. - err = errno - } else { - // Read was too short. - err = errors.New("notify: short read in readEvents()") - } - select { - case w.Errors <- err: - case <-w.done: - return - } - continue - } - - var offset uint32 - // We don't know how many events we just read into the buffer - // While the offset points to at least one whole event... - for offset <= uint32(n-unix.SizeofInotifyEvent) { - // Point "raw" to the event in the buffer - raw := (*unix.InotifyEvent)(unsafe.Pointer(&buf[offset])) - - mask := uint32(raw.Mask) - nameLen := uint32(raw.Len) - - if mask&unix.IN_Q_OVERFLOW != 0 { - select { - case w.Errors <- ErrEventOverflow: - case <-w.done: - return - } - } - - // If the event happened to the watched directory or the watched file, the kernel - // doesn't append the filename to the event, but we would like to always fill the - // the "Name" field with a valid filename. We retrieve the path of the watch from - // the "paths" map. - w.mu.Lock() - name, ok := w.paths[int(raw.Wd)] - // IN_DELETE_SELF occurs when the file/directory being watched is removed. - // This is a sign to clean up the maps, otherwise we are no longer in sync - // with the inotify kernel state which has already deleted the watch - // automatically. - if ok && mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF { - delete(w.paths, int(raw.Wd)) - delete(w.watches, name) - } - w.mu.Unlock() - - if nameLen > 0 { - // Point "bytes" at the first byte of the filename - bytes := (*[unix.PathMax]byte)(unsafe.Pointer(&buf[offset+unix.SizeofInotifyEvent])) - // The filename is padded with NULL bytes. TrimRight() gets rid of those. - name += "/" + strings.TrimRight(string(bytes[0:nameLen]), "\000") - } - - event := newEvent(name, mask) - - // Send the events that are not ignored on the events channel - if !event.ignoreLinux(mask) { - select { - case w.Events <- event: - case <-w.done: - return - } - } - - // Move to the next event in the buffer - offset += unix.SizeofInotifyEvent + nameLen - } - } -} - -// Certain types of events can be "ignored" and not sent over the Events -// channel. Such as events marked ignore by the kernel, or MODIFY events -// against files that do not exist. -func (e *Event) ignoreLinux(mask uint32) bool { - // Ignore anything the inotify API says to ignore - if mask&unix.IN_IGNORED == unix.IN_IGNORED { - return true - } - - // If the event is not a DELETE or RENAME, the file must exist. - // Otherwise the event is ignored. - // *Note*: this was put in place because it was seen that a MODIFY - // event was sent after the DELETE. This ignores that MODIFY and - // assumes a DELETE will come or has come if the file doesn't exist. - if !(e.Op&Remove == Remove || e.Op&Rename == Rename) { - _, statErr := os.Lstat(e.Name) - return os.IsNotExist(statErr) - } - return false -} - -// newEvent returns an platform-independent Event based on an inotify mask. -func newEvent(name string, mask uint32) Event { - e := Event{Name: name} - if mask&unix.IN_CREATE == unix.IN_CREATE || mask&unix.IN_MOVED_TO == unix.IN_MOVED_TO { - e.Op |= Create - } - if mask&unix.IN_DELETE_SELF == unix.IN_DELETE_SELF || mask&unix.IN_DELETE == unix.IN_DELETE { - e.Op |= Remove - } - if mask&unix.IN_MODIFY == unix.IN_MODIFY { - e.Op |= Write - } - if mask&unix.IN_MOVE_SELF == unix.IN_MOVE_SELF || mask&unix.IN_MOVED_FROM == unix.IN_MOVED_FROM { - e.Op |= Rename - } - if mask&unix.IN_ATTRIB == unix.IN_ATTRIB { - e.Op |= Chmod - } - return e -} diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_poller.go b/vendor/github.com/fsnotify/fsnotify/inotify_poller.go deleted file mode 100644 index cc7db4b22..000000000 --- a/vendor/github.com/fsnotify/fsnotify/inotify_poller.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2015 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. - -// +build linux - -package fsnotify - -import ( - "errors" - - "golang.org/x/sys/unix" -) - -type fdPoller struct { - fd int // File descriptor (as returned by the inotify_init() syscall) - epfd int // Epoll file descriptor - pipe [2]int // Pipe for waking up -} - -func emptyPoller(fd int) *fdPoller { - poller := new(fdPoller) - poller.fd = fd - poller.epfd = -1 - poller.pipe[0] = -1 - poller.pipe[1] = -1 - return poller -} - -// Create a new inotify poller. -// This creates an inotify handler, and an epoll handler. -func newFdPoller(fd int) (*fdPoller, error) { - var errno error - poller := emptyPoller(fd) - defer func() { - if errno != nil { - poller.close() - } - }() - poller.fd = fd - - // Create epoll fd - poller.epfd, errno = unix.EpollCreate1(0) - if poller.epfd == -1 { - return nil, errno - } - // Create pipe; pipe[0] is the read end, pipe[1] the write end. - errno = unix.Pipe2(poller.pipe[:], unix.O_NONBLOCK) - if errno != nil { - return nil, errno - } - - // Register inotify fd with epoll - event := unix.EpollEvent{ - Fd: int32(poller.fd), - Events: unix.EPOLLIN, - } - errno = unix.EpollCtl(poller.epfd, unix.EPOLL_CTL_ADD, poller.fd, &event) - if errno != nil { - return nil, errno - } - - // Register pipe fd with epoll - event = unix.EpollEvent{ - Fd: int32(poller.pipe[0]), - Events: unix.EPOLLIN, - } - errno = unix.EpollCtl(poller.epfd, unix.EPOLL_CTL_ADD, poller.pipe[0], &event) - if errno != nil { - return nil, errno - } - - return poller, nil -} - -// Wait using epoll. -// Returns true if something is ready to be read, -// false if there is not. -func (poller *fdPoller) wait() (bool, error) { - // 3 possible events per fd, and 2 fds, makes a maximum of 6 events. - // I don't know whether epoll_wait returns the number of events returned, - // or the total number of events ready. - // I decided to catch both by making the buffer one larger than the maximum. - events := make([]unix.EpollEvent, 7) - for { - n, errno := unix.EpollWait(poller.epfd, events, -1) - if n == -1 { - if errno == unix.EINTR { - continue - } - return false, errno - } - if n == 0 { - // If there are no events, try again. - continue - } - if n > 6 { - // This should never happen. More events were returned than should be possible. - return false, errors.New("epoll_wait returned more events than I know what to do with") - } - ready := events[:n] - epollhup := false - epollerr := false - epollin := false - for _, event := range ready { - if event.Fd == int32(poller.fd) { - if event.Events&unix.EPOLLHUP != 0 { - // This should not happen, but if it does, treat it as a wakeup. - epollhup = true - } - if event.Events&unix.EPOLLERR != 0 { - // If an error is waiting on the file descriptor, we should pretend - // something is ready to read, and let unix.Read pick up the error. - epollerr = true - } - if event.Events&unix.EPOLLIN != 0 { - // There is data to read. - epollin = true - } - } - if event.Fd == int32(poller.pipe[0]) { - if event.Events&unix.EPOLLHUP != 0 { - // Write pipe descriptor was closed, by us. This means we're closing down the - // watcher, and we should wake up. - } - if event.Events&unix.EPOLLERR != 0 { - // If an error is waiting on the pipe file descriptor. - // This is an absolute mystery, and should never ever happen. - return false, errors.New("Error on the pipe descriptor.") - } - if event.Events&unix.EPOLLIN != 0 { - // This is a regular wakeup, so we have to clear the buffer. - err := poller.clearWake() - if err != nil { - return false, err - } - } - } - } - - if epollhup || epollerr || epollin { - return true, nil - } - return false, nil - } -} - -// Close the write end of the poller. -func (poller *fdPoller) wake() error { - buf := make([]byte, 1) - n, errno := unix.Write(poller.pipe[1], buf) - if n == -1 { - if errno == unix.EAGAIN { - // Buffer is full, poller will wake. - return nil - } - return errno - } - return nil -} - -func (poller *fdPoller) clearWake() error { - // You have to be woken up a LOT in order to get to 100! - buf := make([]byte, 100) - n, errno := unix.Read(poller.pipe[0], buf) - if n == -1 { - if errno == unix.EAGAIN { - // Buffer is empty, someone else cleared our wake. - return nil - } - return errno - } - return nil -} - -// Close all poller file descriptors, but not the one passed to it. -func (poller *fdPoller) close() { - if poller.pipe[1] != -1 { - unix.Close(poller.pipe[1]) - } - if poller.pipe[0] != -1 { - unix.Close(poller.pipe[0]) - } - if poller.epfd != -1 { - unix.Close(poller.epfd) - } -} diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go b/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go deleted file mode 100644 index 26623efef..000000000 --- a/vendor/github.com/fsnotify/fsnotify/inotify_poller_test.go +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright 2015 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. - -// +build linux - -package fsnotify - -import ( - "testing" - "time" - - "golang.org/x/sys/unix" -) - -type testFd [2]int - -func makeTestFd(t *testing.T) testFd { - var tfd testFd - errno := unix.Pipe(tfd[:]) - if errno != nil { - t.Fatalf("Failed to create pipe: %v", errno) - } - return tfd -} - -func (tfd testFd) fd() int { - return tfd[0] -} - -func (tfd testFd) closeWrite(t *testing.T) { - errno := unix.Close(tfd[1]) - if errno != nil { - t.Fatalf("Failed to close write end of pipe: %v", errno) - } -} - -func (tfd testFd) put(t *testing.T) { - buf := make([]byte, 10) - _, errno := unix.Write(tfd[1], buf) - if errno != nil { - t.Fatalf("Failed to write to pipe: %v", errno) - } -} - -func (tfd testFd) get(t *testing.T) { - buf := make([]byte, 10) - _, errno := unix.Read(tfd[0], buf) - if errno != nil { - t.Fatalf("Failed to read from pipe: %v", errno) - } -} - -func (tfd testFd) close() { - unix.Close(tfd[1]) - unix.Close(tfd[0]) -} - -func makePoller(t *testing.T) (testFd, *fdPoller) { - tfd := makeTestFd(t) - poller, err := newFdPoller(tfd.fd()) - if err != nil { - t.Fatalf("Failed to create poller: %v", err) - } - return tfd, poller -} - -func TestPollerWithBadFd(t *testing.T) { - _, err := newFdPoller(-1) - if err != unix.EBADF { - t.Fatalf("Expected EBADF, got: %v", err) - } -} - -func TestPollerWithData(t *testing.T) { - tfd, poller := makePoller(t) - defer tfd.close() - defer poller.close() - - tfd.put(t) - ok, err := poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - if !ok { - t.Fatalf("expected poller to return true") - } - tfd.get(t) -} - -func TestPollerWithWakeup(t *testing.T) { - tfd, poller := makePoller(t) - defer tfd.close() - defer poller.close() - - err := poller.wake() - if err != nil { - t.Fatalf("wake failed: %v", err) - } - ok, err := poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - if ok { - t.Fatalf("expected poller to return false") - } -} - -func TestPollerWithClose(t *testing.T) { - tfd, poller := makePoller(t) - defer tfd.close() - defer poller.close() - - tfd.closeWrite(t) - ok, err := poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - if !ok { - t.Fatalf("expected poller to return true") - } -} - -func TestPollerWithWakeupAndData(t *testing.T) { - tfd, poller := makePoller(t) - defer tfd.close() - defer poller.close() - - tfd.put(t) - err := poller.wake() - if err != nil { - t.Fatalf("wake failed: %v", err) - } - - // both data and wakeup - ok, err := poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - if !ok { - t.Fatalf("expected poller to return true") - } - - // data is still in the buffer, wakeup is cleared - ok, err = poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - if !ok { - t.Fatalf("expected poller to return true") - } - - tfd.get(t) - // data is gone, only wakeup now - err = poller.wake() - if err != nil { - t.Fatalf("wake failed: %v", err) - } - ok, err = poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - if ok { - t.Fatalf("expected poller to return false") - } -} - -func TestPollerConcurrent(t *testing.T) { - tfd, poller := makePoller(t) - defer tfd.close() - defer poller.close() - - oks := make(chan bool) - live := make(chan bool) - defer close(live) - go func() { - defer close(oks) - for { - ok, err := poller.wait() - if err != nil { - t.Fatalf("poller failed: %v", err) - } - oks <- ok - if !<-live { - return - } - } - }() - - // Try a write - select { - case <-time.After(50 * time.Millisecond): - case <-oks: - t.Fatalf("poller did not wait") - } - tfd.put(t) - if !<-oks { - t.Fatalf("expected true") - } - tfd.get(t) - live <- true - - // Try a wakeup - select { - case <-time.After(50 * time.Millisecond): - case <-oks: - t.Fatalf("poller did not wait") - } - err := poller.wake() - if err != nil { - t.Fatalf("wake failed: %v", err) - } - if <-oks { - t.Fatalf("expected false") - } - live <- true - - // Try a close - select { - case <-time.After(50 * time.Millisecond): - case <-oks: - t.Fatalf("poller did not wait") - } - tfd.closeWrite(t) - if !<-oks { - t.Fatalf("expected true") - } - tfd.get(t) -} diff --git a/vendor/github.com/fsnotify/fsnotify/inotify_test.go b/vendor/github.com/fsnotify/fsnotify/inotify_test.go deleted file mode 100644 index 2cc6d93d2..000000000 --- a/vendor/github.com/fsnotify/fsnotify/inotify_test.go +++ /dev/null @@ -1,449 +0,0 @@ -// Copyright 2015 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. - -// +build linux - -package fsnotify - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "testing" - "time" -) - -func TestInotifyCloseRightAway(t *testing.T) { - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher") - } - - // Close immediately; it won't even reach the first unix.Read. - w.Close() - - // Wait for the close to complete. - <-time.After(50 * time.Millisecond) - isWatcherReallyClosed(t, w) -} - -func TestInotifyCloseSlightlyLater(t *testing.T) { - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher") - } - - // Wait until readEvents has reached unix.Read, and Close. - <-time.After(50 * time.Millisecond) - w.Close() - - // Wait for the close to complete. - <-time.After(50 * time.Millisecond) - isWatcherReallyClosed(t, w) -} - -func TestInotifyCloseSlightlyLaterWithWatch(t *testing.T) { - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher") - } - w.Add(testDir) - - // Wait until readEvents has reached unix.Read, and Close. - <-time.After(50 * time.Millisecond) - w.Close() - - // Wait for the close to complete. - <-time.After(50 * time.Millisecond) - isWatcherReallyClosed(t, w) -} - -func TestInotifyCloseAfterRead(t *testing.T) { - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher") - } - - err = w.Add(testDir) - if err != nil { - t.Fatalf("Failed to add .") - } - - // Generate an event. - os.Create(filepath.Join(testDir, "somethingSOMETHINGsomethingSOMETHING")) - - // Wait for readEvents to read the event, then close the watcher. - <-time.After(50 * time.Millisecond) - w.Close() - - // Wait for the close to complete. - <-time.After(50 * time.Millisecond) - isWatcherReallyClosed(t, w) -} - -func isWatcherReallyClosed(t *testing.T, w *Watcher) { - select { - case err, ok := <-w.Errors: - if ok { - t.Fatalf("w.Errors is not closed; readEvents is still alive after closing (error: %v)", err) - } - default: - t.Fatalf("w.Errors would have blocked; readEvents is still alive!") - } - - select { - case _, ok := <-w.Events: - if ok { - t.Fatalf("w.Events is not closed; readEvents is still alive after closing") - } - default: - t.Fatalf("w.Events would have blocked; readEvents is still alive!") - } -} - -func TestInotifyCloseCreate(t *testing.T) { - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher: %v", err) - } - defer w.Close() - - err = w.Add(testDir) - if err != nil { - t.Fatalf("Failed to add testDir: %v", err) - } - h, err := os.Create(filepath.Join(testDir, "testfile")) - if err != nil { - t.Fatalf("Failed to create file in testdir: %v", err) - } - h.Close() - select { - case _ = <-w.Events: - case err := <-w.Errors: - t.Fatalf("Error from watcher: %v", err) - case <-time.After(50 * time.Millisecond): - t.Fatalf("Took too long to wait for event") - } - - // At this point, we've received one event, so the goroutine is ready. - // It's also blocking on unix.Read. - // Now we try to swap the file descriptor under its nose. - w.Close() - w, err = NewWatcher() - defer w.Close() - if err != nil { - t.Fatalf("Failed to create second watcher: %v", err) - } - - <-time.After(50 * time.Millisecond) - err = w.Add(testDir) - if err != nil { - t.Fatalf("Error adding testDir again: %v", err) - } -} - -// This test verifies the watcher can keep up with file creations/deletions -// when under load. -func TestInotifyStress(t *testing.T) { - maxNumToCreate := 1000 - - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - testFilePrefix := filepath.Join(testDir, "testfile") - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher: %v", err) - } - defer w.Close() - - err = w.Add(testDir) - if err != nil { - t.Fatalf("Failed to add testDir: %v", err) - } - - doneChan := make(chan struct{}) - // The buffer ensures that the file generation goroutine is never blocked. - errChan := make(chan error, 2*maxNumToCreate) - - go func() { - for i := 0; i < maxNumToCreate; i++ { - testFile := fmt.Sprintf("%s%d", testFilePrefix, i) - - handle, err := os.Create(testFile) - if err != nil { - errChan <- fmt.Errorf("Create failed: %v", err) - continue - } - - err = handle.Close() - if err != nil { - errChan <- fmt.Errorf("Close failed: %v", err) - continue - } - } - - // If we delete a newly created file too quickly, inotify will skip the - // create event and only send the delete event. - time.Sleep(100 * time.Millisecond) - - for i := 0; i < maxNumToCreate; i++ { - testFile := fmt.Sprintf("%s%d", testFilePrefix, i) - err = os.Remove(testFile) - if err != nil { - errChan <- fmt.Errorf("Remove failed: %v", err) - } - } - - close(doneChan) - }() - - creates := 0 - removes := 0 - - finished := false - after := time.After(10 * time.Second) - for !finished { - select { - case <-after: - t.Fatalf("Not done") - case <-doneChan: - finished = true - case err := <-errChan: - t.Fatalf("Got an error from file creator goroutine: %v", err) - case err := <-w.Errors: - t.Fatalf("Got an error from watcher: %v", err) - case evt := <-w.Events: - if !strings.HasPrefix(evt.Name, testFilePrefix) { - t.Fatalf("Got an event for an unknown file: %s", evt.Name) - } - if evt.Op == Create { - creates++ - } - if evt.Op == Remove { - removes++ - } - } - } - - // Drain remaining events from channels - count := 0 - for count < 10 { - select { - case err := <-errChan: - t.Fatalf("Got an error from file creator goroutine: %v", err) - case err := <-w.Errors: - t.Fatalf("Got an error from watcher: %v", err) - case evt := <-w.Events: - if !strings.HasPrefix(evt.Name, testFilePrefix) { - t.Fatalf("Got an event for an unknown file: %s", evt.Name) - } - if evt.Op == Create { - creates++ - } - if evt.Op == Remove { - removes++ - } - count = 0 - default: - count++ - // Give the watcher chances to fill the channels. - time.Sleep(time.Millisecond) - } - } - - if creates-removes > 1 || creates-removes < -1 { - t.Fatalf("Creates and removes should not be off by more than one: %d creates, %d removes", creates, removes) - } - if creates < 50 { - t.Fatalf("Expected at least 50 creates, got %d", creates) - } -} - -func TestInotifyRemoveTwice(t *testing.T) { - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - testFile := filepath.Join(testDir, "testfile") - - handle, err := os.Create(testFile) - if err != nil { - t.Fatalf("Create failed: %v", err) - } - handle.Close() - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher: %v", err) - } - defer w.Close() - - err = w.Add(testFile) - if err != nil { - t.Fatalf("Failed to add testFile: %v", err) - } - - err = w.Remove(testFile) - if err != nil { - t.Fatalf("wanted successful remove but got:", err) - } - - err = w.Remove(testFile) - if err == nil { - t.Fatalf("no error on removing invalid file") - } - - w.mu.Lock() - defer w.mu.Unlock() - if len(w.watches) != 0 { - t.Fatalf("Expected watches len is 0, but got: %d, %v", len(w.watches), w.watches) - } - if len(w.paths) != 0 { - t.Fatalf("Expected paths len is 0, but got: %d, %v", len(w.paths), w.paths) - } -} - -func TestInotifyInnerMapLength(t *testing.T) { - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - testFile := filepath.Join(testDir, "testfile") - - handle, err := os.Create(testFile) - if err != nil { - t.Fatalf("Create failed: %v", err) - } - handle.Close() - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher: %v", err) - } - defer w.Close() - - err = w.Add(testFile) - if err != nil { - t.Fatalf("Failed to add testFile: %v", err) - } - go func() { - for err := range w.Errors { - t.Fatalf("error received: %s", err) - } - }() - - err = os.Remove(testFile) - if err != nil { - t.Fatalf("Failed to remove testFile: %v", err) - } - _ = <-w.Events // consume Remove event - <-time.After(50 * time.Millisecond) // wait IN_IGNORE propagated - - w.mu.Lock() - defer w.mu.Unlock() - if len(w.watches) != 0 { - t.Fatalf("Expected watches len is 0, but got: %d, %v", len(w.watches), w.watches) - } - if len(w.paths) != 0 { - t.Fatalf("Expected paths len is 0, but got: %d, %v", len(w.paths), w.paths) - } -} - -func TestInotifyOverflow(t *testing.T) { - // We need to generate many more events than the - // fs.inotify.max_queued_events sysctl setting. - // We use multiple goroutines (one per directory) - // to speed up file creation. - numDirs := 128 - numFiles := 1024 - - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - w, err := NewWatcher() - if err != nil { - t.Fatalf("Failed to create watcher: %v", err) - } - defer w.Close() - - for dn := 0; dn < numDirs; dn++ { - testSubdir := fmt.Sprintf("%s/%d", testDir, dn) - - err := os.Mkdir(testSubdir, 0777) - if err != nil { - t.Fatalf("Cannot create subdir: %v", err) - } - - err = w.Add(testSubdir) - if err != nil { - t.Fatalf("Failed to add subdir: %v", err) - } - } - - errChan := make(chan error, numDirs*numFiles) - - for dn := 0; dn < numDirs; dn++ { - testSubdir := fmt.Sprintf("%s/%d", testDir, dn) - - go func() { - for fn := 0; fn < numFiles; fn++ { - testFile := fmt.Sprintf("%s/%d", testSubdir, fn) - - handle, err := os.Create(testFile) - if err != nil { - errChan <- fmt.Errorf("Create failed: %v", err) - continue - } - - err = handle.Close() - if err != nil { - errChan <- fmt.Errorf("Close failed: %v", err) - continue - } - } - }() - } - - creates := 0 - overflows := 0 - - after := time.After(10 * time.Second) - for overflows == 0 && creates < numDirs*numFiles { - select { - case <-after: - t.Fatalf("Not done") - case err := <-errChan: - t.Fatalf("Got an error from file creator goroutine: %v", err) - case err := <-w.Errors: - if err == ErrEventOverflow { - overflows++ - } else { - t.Fatalf("Got an error from watcher: %v", err) - } - case evt := <-w.Events: - if !strings.HasPrefix(evt.Name, testDir) { - t.Fatalf("Got an event for an unknown file: %s", evt.Name) - } - if evt.Op == Create { - creates++ - } - } - } - - if creates == numDirs*numFiles { - t.Fatalf("Could not trigger overflow") - } - - if overflows == 0 { - t.Fatalf("No overflow and not enough creates (expected %d, got %d)", - numDirs*numFiles, creates) - } -} diff --git a/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go b/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go deleted file mode 100644 index cd6adc273..000000000 --- a/vendor/github.com/fsnotify/fsnotify/integration_darwin_test.go +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2016 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 fsnotify - -import ( - "os" - "path/filepath" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -// testExchangedataForWatcher tests the watcher with the exchangedata operation on macOS. -// -// This is widely used for atomic saves on macOS, e.g. TextMate and in Apple's NSDocument. -// -// See https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/exchangedata.2.html -// Also see: https://github.com/textmate/textmate/blob/cd016be29489eba5f3c09b7b70b06da134dda550/Frameworks/io/src/swap_file_data.cc#L20 -func testExchangedataForWatcher(t *testing.T, watchDir bool) { - // Create directory to watch - testDir1 := tempMkdir(t) - - // For the intermediate file - testDir2 := tempMkdir(t) - - defer os.RemoveAll(testDir1) - defer os.RemoveAll(testDir2) - - resolvedFilename := "TestFsnotifyEvents.file" - - // TextMate does: - // - // 1. exchangedata (intermediate, resolved) - // 2. unlink intermediate - // - // Let's try to simulate that: - resolved := filepath.Join(testDir1, resolvedFilename) - intermediate := filepath.Join(testDir2, resolvedFilename+"~") - - // Make sure we create the file before we start watching - createAndSyncFile(t, resolved) - - watcher := newWatcher(t) - - // Test both variants in isolation - if watchDir { - addWatch(t, watcher, testDir1) - } else { - addWatch(t, watcher, resolved) - } - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var removeReceived counter - var createReceived counter - - done := make(chan bool) - - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(resolved) { - if event.Op&Remove == Remove { - removeReceived.increment() - } - if event.Op&Create == Create { - createReceived.increment() - } - } - t.Logf("event received: %s", event) - } - done <- true - }() - - // Repeat to make sure the watched file/directory "survives" the REMOVE/CREATE loop. - for i := 1; i <= 3; i++ { - // The intermediate file is created in a folder outside the watcher - createAndSyncFile(t, intermediate) - - // 1. Swap - if err := unix.Exchangedata(intermediate, resolved, 0); err != nil { - t.Fatalf("[%d] exchangedata failed: %s", i, err) - } - - time.Sleep(50 * time.Millisecond) - - // 2. Delete the intermediate file - err := os.Remove(intermediate) - - if err != nil { - t.Fatalf("[%d] remove %s failed: %s", i, intermediate, err) - } - - time.Sleep(50 * time.Millisecond) - - } - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - - // The events will be (CHMOD + REMOVE + CREATE) X 2. Let's focus on the last two: - if removeReceived.value() < 3 { - t.Fatal("fsnotify remove events have not been received after 500 ms") - } - - if createReceived.value() < 3 { - t.Fatal("fsnotify create events have not been received after 500 ms") - } - - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } -} - -// TestExchangedataInWatchedDir test exchangedata operation on file in watched dir. -func TestExchangedataInWatchedDir(t *testing.T) { - testExchangedataForWatcher(t, true) -} - -// TestExchangedataInWatchedDir test exchangedata operation on watched file. -func TestExchangedataInWatchedFile(t *testing.T) { - testExchangedataForWatcher(t, false) -} - -func createAndSyncFile(t *testing.T, filepath string) { - f1, err := os.OpenFile(filepath, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating %s failed: %s", filepath, err) - } - f1.Sync() - f1.Close() -} diff --git a/vendor/github.com/fsnotify/fsnotify/integration_test.go b/vendor/github.com/fsnotify/fsnotify/integration_test.go deleted file mode 100644 index 8b7e9d3ec..000000000 --- a/vendor/github.com/fsnotify/fsnotify/integration_test.go +++ /dev/null @@ -1,1237 +0,0 @@ -// Copyright 2010 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. - -// +build !plan9,!solaris - -package fsnotify - -import ( - "io/ioutil" - "os" - "os/exec" - "path" - "path/filepath" - "runtime" - "sync/atomic" - "testing" - "time" -) - -// An atomic counter -type counter struct { - val int32 -} - -func (c *counter) increment() { - atomic.AddInt32(&c.val, 1) -} - -func (c *counter) value() int32 { - return atomic.LoadInt32(&c.val) -} - -func (c *counter) reset() { - atomic.StoreInt32(&c.val, 0) -} - -// tempMkdir makes a temporary directory -func tempMkdir(t *testing.T) string { - dir, err := ioutil.TempDir("", "fsnotify") - if err != nil { - t.Fatalf("failed to create test directory: %s", err) - } - return dir -} - -// tempMkFile makes a temporary file. -func tempMkFile(t *testing.T, dir string) string { - f, err := ioutil.TempFile(dir, "fsnotify") - if err != nil { - t.Fatalf("failed to create test file: %v", err) - } - defer f.Close() - return f.Name() -} - -// newWatcher initializes an fsnotify Watcher instance. -func newWatcher(t *testing.T) *Watcher { - watcher, err := NewWatcher() - if err != nil { - t.Fatalf("NewWatcher() failed: %s", err) - } - return watcher -} - -// addWatch adds a watch for a directory -func addWatch(t *testing.T, watcher *Watcher, dir string) { - if err := watcher.Add(dir); err != nil { - t.Fatalf("watcher.Add(%q) failed: %s", dir, err) - } -} - -func TestFsnotifyMultipleOperations(t *testing.T) { - watcher := newWatcher(t) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create directory that's not watched - testDirToMoveFiles := tempMkdir(t) - defer os.RemoveAll(testDirToMoveFiles) - - testFile := filepath.Join(testDir, "TestFsnotifySeq.testfile") - testFileRenamed := filepath.Join(testDirToMoveFiles, "TestFsnotifySeqRename.testfile") - - addWatch(t, watcher, testDir) - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var createReceived, modifyReceived, deleteReceived, renameReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) { - t.Logf("event received: %s", event) - if event.Op&Remove == Remove { - deleteReceived.increment() - } - if event.Op&Write == Write { - modifyReceived.increment() - } - if event.Op&Create == Create { - createReceived.increment() - } - if event.Op&Rename == Rename { - renameReceived.increment() - } - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - time.Sleep(time.Millisecond) - f.WriteString("data") - f.Sync() - f.Close() - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - if err := testRename(testFile, testFileRenamed); err != nil { - t.Fatalf("rename failed: %s", err) - } - - // Modify the file outside of the watched dir - f, err = os.Open(testFileRenamed) - if err != nil { - t.Fatalf("open test renamed file failed: %s", err) - } - f.WriteString("data") - f.Sync() - f.Close() - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - // Recreate the file that was moved - f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Close() - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - cReceived := createReceived.value() - if cReceived != 2 { - t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2) - } - mReceived := modifyReceived.value() - if mReceived != 1 { - t.Fatalf("incorrect number of modify events received after 500 ms (%d vs %d)", mReceived, 1) - } - dReceived := deleteReceived.value() - rReceived := renameReceived.value() - if dReceived+rReceived != 1 { - t.Fatalf("incorrect number of rename+delete events received after 500 ms (%d vs %d)", rReceived+dReceived, 1) - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } -} - -func TestFsnotifyMultipleCreates(t *testing.T) { - watcher := newWatcher(t) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - testFile := filepath.Join(testDir, "TestFsnotifySeq.testfile") - - addWatch(t, watcher, testDir) - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var createReceived, modifyReceived, deleteReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) { - t.Logf("event received: %s", event) - if event.Op&Remove == Remove { - deleteReceived.increment() - } - if event.Op&Create == Create { - createReceived.increment() - } - if event.Op&Write == Write { - modifyReceived.increment() - } - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - time.Sleep(time.Millisecond) - f.WriteString("data") - f.Sync() - f.Close() - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - os.Remove(testFile) - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - // Recreate the file - f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Close() - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - // Modify - f, err = os.OpenFile(testFile, os.O_WRONLY, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - time.Sleep(time.Millisecond) - f.WriteString("data") - f.Sync() - f.Close() - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - // Modify - f, err = os.OpenFile(testFile, os.O_WRONLY, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - time.Sleep(time.Millisecond) - f.WriteString("data") - f.Sync() - f.Close() - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - cReceived := createReceived.value() - if cReceived != 2 { - t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2) - } - mReceived := modifyReceived.value() - if mReceived < 3 { - t.Fatalf("incorrect number of modify events received after 500 ms (%d vs atleast %d)", mReceived, 3) - } - dReceived := deleteReceived.value() - if dReceived != 1 { - t.Fatalf("incorrect number of rename+delete events received after 500 ms (%d vs %d)", dReceived, 1) - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } -} - -func TestFsnotifyDirOnly(t *testing.T) { - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create a file before watching directory - // This should NOT add any events to the fsnotify event queue - testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile") - { - var f *os.File - f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - } - - addWatch(t, watcher, testDir) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - testFile := filepath.Join(testDir, "TestFsnotifyDirOnly.testfile") - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var createReceived, modifyReceived, deleteReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileAlreadyExists) { - t.Logf("event received: %s", event) - if event.Op&Remove == Remove { - deleteReceived.increment() - } - if event.Op&Write == Write { - modifyReceived.increment() - } - if event.Op&Create == Create { - createReceived.increment() - } - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - time.Sleep(time.Millisecond) - f.WriteString("data") - f.Sync() - f.Close() - - time.Sleep(50 * time.Millisecond) // give system time to sync write change before delete - - os.Remove(testFile) - os.Remove(testFileAlreadyExists) - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - cReceived := createReceived.value() - if cReceived != 1 { - t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 1) - } - mReceived := modifyReceived.value() - if mReceived != 1 { - t.Fatalf("incorrect number of modify events received after 500 ms (%d vs %d)", mReceived, 1) - } - dReceived := deleteReceived.value() - if dReceived != 2 { - t.Fatalf("incorrect number of delete events received after 500 ms (%d vs %d)", dReceived, 2) - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } -} - -func TestFsnotifyDeleteWatchedDir(t *testing.T) { - watcher := newWatcher(t) - defer watcher.Close() - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create a file before watching directory - testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile") - { - var f *os.File - f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - } - - addWatch(t, watcher, testDir) - - // Add a watch for testFile - addWatch(t, watcher, testFileAlreadyExists) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var deleteReceived counter - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFileAlreadyExists) { - t.Logf("event received: %s", event) - if event.Op&Remove == Remove { - deleteReceived.increment() - } - } else { - t.Logf("unexpected event received: %s", event) - } - } - }() - - os.RemoveAll(testDir) - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - dReceived := deleteReceived.value() - if dReceived < 2 { - t.Fatalf("did not receive at least %d delete events, received %d after 500 ms", 2, dReceived) - } -} - -func TestFsnotifySubDir(t *testing.T) { - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - testFile1 := filepath.Join(testDir, "TestFsnotifyFile1.testfile") - testSubDir := filepath.Join(testDir, "sub") - testSubDirFile := filepath.Join(testDir, "sub/TestFsnotifyFile1.testfile") - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var createReceived, deleteReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testSubDir) || event.Name == filepath.Clean(testFile1) { - t.Logf("event received: %s", event) - if event.Op&Create == Create { - createReceived.increment() - } - if event.Op&Remove == Remove { - deleteReceived.increment() - } - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - addWatch(t, watcher, testDir) - - // Create sub-directory - if err := os.Mkdir(testSubDir, 0777); err != nil { - t.Fatalf("failed to create test sub-directory: %s", err) - } - - // Create a file - var f *os.File - f, err := os.OpenFile(testFile1, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - - // Create a file (Should not see this! we are not watching subdir) - var fs *os.File - fs, err = os.OpenFile(testSubDirFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - fs.Sync() - fs.Close() - - time.Sleep(200 * time.Millisecond) - - // Make sure receive deletes for both file and sub-directory - os.RemoveAll(testSubDir) - os.Remove(testFile1) - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - cReceived := createReceived.value() - if cReceived != 2 { - t.Fatalf("incorrect number of create events received after 500 ms (%d vs %d)", cReceived, 2) - } - dReceived := deleteReceived.value() - if dReceived != 2 { - t.Fatalf("incorrect number of delete events received after 500 ms (%d vs %d)", dReceived, 2) - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } -} - -func TestFsnotifyRename(t *testing.T) { - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - addWatch(t, watcher, testDir) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - testFile := filepath.Join(testDir, "TestFsnotifyEvents.testfile") - testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed") - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var renameReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileRenamed) { - if event.Op&Rename == Rename { - renameReceived.increment() - } - t.Logf("event received: %s", event) - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - f.WriteString("data") - f.Sync() - f.Close() - - // Add a watch for testFile - addWatch(t, watcher, testFile) - - if err := testRename(testFile, testFileRenamed); err != nil { - t.Fatalf("rename failed: %s", err) - } - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - if renameReceived.value() == 0 { - t.Fatal("fsnotify rename events have not been received after 500 ms") - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } - - os.Remove(testFileRenamed) -} - -func TestFsnotifyRenameToCreate(t *testing.T) { - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create directory to get file - testDirFrom := tempMkdir(t) - defer os.RemoveAll(testDirFrom) - - addWatch(t, watcher, testDir) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - testFile := filepath.Join(testDirFrom, "TestFsnotifyEvents.testfile") - testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed") - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var createReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) || event.Name == filepath.Clean(testFileRenamed) { - if event.Op&Create == Create { - createReceived.increment() - } - t.Logf("event received: %s", event) - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - - if err := testRename(testFile, testFileRenamed); err != nil { - t.Fatalf("rename failed: %s", err) - } - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - if createReceived.value() == 0 { - t.Fatal("fsnotify create events have not been received after 500 ms") - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } - - os.Remove(testFileRenamed) -} - -func TestFsnotifyRenameToOverwrite(t *testing.T) { - switch runtime.GOOS { - case "plan9", "windows": - t.Skipf("skipping test on %q (os.Rename over existing file does not create event).", runtime.GOOS) - } - - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create directory to get file - testDirFrom := tempMkdir(t) - defer os.RemoveAll(testDirFrom) - - testFile := filepath.Join(testDirFrom, "TestFsnotifyEvents.testfile") - testFileRenamed := filepath.Join(testDir, "TestFsnotifyEvents.testfileRenamed") - - // Create a file - var fr *os.File - fr, err := os.OpenFile(testFileRenamed, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - fr.Sync() - fr.Close() - - addWatch(t, watcher, testDir) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - var eventReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testFileRenamed) { - eventReceived.increment() - t.Logf("event received: %s", event) - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err = os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - - if err := testRename(testFile, testFileRenamed); err != nil { - t.Fatalf("rename failed: %s", err) - } - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - if eventReceived.value() == 0 { - t.Fatal("fsnotify events have not been received after 500 ms") - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(2 * time.Second): - t.Fatal("event stream was not closed after 2 seconds") - } - - os.Remove(testFileRenamed) -} - -func TestRemovalOfWatch(t *testing.T) { - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create a file before watching directory - testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile") - { - var f *os.File - f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - } - - watcher := newWatcher(t) - defer watcher.Close() - - addWatch(t, watcher, testDir) - if err := watcher.Remove(testDir); err != nil { - t.Fatalf("Could not remove the watch: %v\n", err) - } - - go func() { - select { - case ev := <-watcher.Events: - t.Fatalf("We received event: %v\n", ev) - case <-time.After(500 * time.Millisecond): - t.Log("No event received, as expected.") - } - }() - - time.Sleep(200 * time.Millisecond) - // Modify the file outside of the watched dir - f, err := os.Open(testFileAlreadyExists) - if err != nil { - t.Fatalf("Open test file failed: %s", err) - } - f.WriteString("data") - f.Sync() - f.Close() - if err := os.Chmod(testFileAlreadyExists, 0700); err != nil { - t.Fatalf("chmod failed: %s", err) - } - time.Sleep(400 * time.Millisecond) -} - -func TestFsnotifyAttrib(t *testing.T) { - if runtime.GOOS == "windows" { - t.Skip("attributes don't work on Windows.") - } - - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Receive errors on the error channel on a separate goroutine - go func() { - for err := range watcher.Errors { - t.Fatalf("error received: %s", err) - } - }() - - testFile := filepath.Join(testDir, "TestFsnotifyAttrib.testfile") - - // Receive events on the event channel on a separate goroutine - eventstream := watcher.Events - // The modifyReceived counter counts IsModify events that are not IsAttrib, - // and the attribReceived counts IsAttrib events (which are also IsModify as - // a consequence). - var modifyReceived counter - var attribReceived counter - done := make(chan bool) - go func() { - for event := range eventstream { - // Only count relevant events - if event.Name == filepath.Clean(testDir) || event.Name == filepath.Clean(testFile) { - if event.Op&Write == Write { - modifyReceived.increment() - } - if event.Op&Chmod == Chmod { - attribReceived.increment() - } - t.Logf("event received: %s", event) - } else { - t.Logf("unexpected event received: %s", event) - } - } - done <- true - }() - - // Create a file - // This should add at least one event to the fsnotify event queue - var f *os.File - f, err := os.OpenFile(testFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - - f.WriteString("data") - f.Sync() - f.Close() - - // Add a watch for testFile - addWatch(t, watcher, testFile) - - if err := os.Chmod(testFile, 0700); err != nil { - t.Fatalf("chmod failed: %s", err) - } - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - // Creating/writing a file changes also the mtime, so IsAttrib should be set to true here - time.Sleep(500 * time.Millisecond) - if modifyReceived.value() != 0 { - t.Fatal("received an unexpected modify event when creating a test file") - } - if attribReceived.value() == 0 { - t.Fatal("fsnotify attribute events have not received after 500 ms") - } - - // Modifying the contents of the file does not set the attrib flag (although eg. the mtime - // might have been modified). - modifyReceived.reset() - attribReceived.reset() - - f, err = os.OpenFile(testFile, os.O_WRONLY, 0) - if err != nil { - t.Fatalf("reopening test file failed: %s", err) - } - - f.WriteString("more data") - f.Sync() - f.Close() - - time.Sleep(500 * time.Millisecond) - - if modifyReceived.value() != 1 { - t.Fatal("didn't receive a modify event after changing test file contents") - } - - if attribReceived.value() != 0 { - t.Fatal("did receive an unexpected attrib event after changing test file contents") - } - - modifyReceived.reset() - attribReceived.reset() - - // Doing a chmod on the file should trigger an event with the "attrib" flag set (the contents - // of the file are not changed though) - if err := os.Chmod(testFile, 0600); err != nil { - t.Fatalf("chmod failed: %s", err) - } - - time.Sleep(500 * time.Millisecond) - - if attribReceived.value() != 1 { - t.Fatal("didn't receive an attribute change after 500ms") - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() - t.Log("waiting for the event channel to become closed...") - select { - case <-done: - t.Log("event channel closed") - case <-time.After(1e9): - t.Fatal("event stream was not closed after 1 second") - } - - os.Remove(testFile) -} - -func TestFsnotifyClose(t *testing.T) { - watcher := newWatcher(t) - watcher.Close() - - var done int32 - go func() { - watcher.Close() - atomic.StoreInt32(&done, 1) - }() - - time.Sleep(50e6) // 50 ms - if atomic.LoadInt32(&done) == 0 { - t.Fatal("double Close() test failed: second Close() call didn't return") - } - - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - if err := watcher.Add(testDir); err == nil { - t.Fatal("expected error on Watch() after Close(), got nil") - } -} - -func TestFsnotifyFakeSymlink(t *testing.T) { - if runtime.GOOS == "windows" { - t.Skip("symlinks don't work on Windows.") - } - - watcher := newWatcher(t) - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - var errorsReceived counter - // Receive errors on the error channel on a separate goroutine - go func() { - for errors := range watcher.Errors { - t.Logf("Received error: %s", errors) - errorsReceived.increment() - } - }() - - // Count the CREATE events received - var createEventsReceived, otherEventsReceived counter - go func() { - for ev := range watcher.Events { - t.Logf("event received: %s", ev) - if ev.Op&Create == Create { - createEventsReceived.increment() - } else { - otherEventsReceived.increment() - } - } - }() - - addWatch(t, watcher, testDir) - - if err := os.Symlink(filepath.Join(testDir, "zzz"), filepath.Join(testDir, "zzznew")); err != nil { - t.Fatalf("Failed to create bogus symlink: %s", err) - } - t.Logf("Created bogus symlink") - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - - // Should not be error, just no events for broken links (watching nothing) - if errorsReceived.value() > 0 { - t.Fatal("fsnotify errors have been received.") - } - if otherEventsReceived.value() > 0 { - t.Fatal("fsnotify other events received on the broken link") - } - - // Except for 1 create event (for the link itself) - if createEventsReceived.value() == 0 { - t.Fatal("fsnotify create events were not received after 500 ms") - } - if createEventsReceived.value() > 1 { - t.Fatal("fsnotify more create events received than expected") - } - - // Try closing the fsnotify instance - t.Log("calling Close()") - watcher.Close() -} - -func TestCyclicSymlink(t *testing.T) { - if runtime.GOOS == "windows" { - t.Skip("symlinks don't work on Windows.") - } - - watcher := newWatcher(t) - - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - link := path.Join(testDir, "link") - if err := os.Symlink(".", link); err != nil { - t.Fatalf("could not make symlink: %v", err) - } - addWatch(t, watcher, testDir) - - var createEventsReceived counter - go func() { - for ev := range watcher.Events { - if ev.Op&Create == Create { - createEventsReceived.increment() - } - } - }() - - if err := os.Remove(link); err != nil { - t.Fatalf("Error removing link: %v", err) - } - - // It would be nice to be able to expect a delete event here, but kqueue has - // no way for us to get events on symlinks themselves, because opening them - // opens an fd to the file to which they point. - - if err := ioutil.WriteFile(link, []byte("foo"), 0700); err != nil { - t.Fatalf("could not make symlink: %v", err) - } - - // We expect this event to be received almost immediately, but let's wait 500 ms to be sure - time.Sleep(500 * time.Millisecond) - - if got := createEventsReceived.value(); got == 0 { - t.Errorf("want at least 1 create event got %v", got) - } - - watcher.Close() -} - -// TestConcurrentRemovalOfWatch tests that concurrent calls to RemoveWatch do not race. -// See https://codereview.appspot.com/103300045/ -// go test -test.run=TestConcurrentRemovalOfWatch -test.cpu=1,1,1,1,1 -race -func TestConcurrentRemovalOfWatch(t *testing.T) { - if runtime.GOOS != "darwin" { - t.Skip("regression test for race only present on darwin") - } - - // Create directory to watch - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - // Create a file before watching directory - testFileAlreadyExists := filepath.Join(testDir, "TestFsnotifyEventsExisting.testfile") - { - var f *os.File - f, err := os.OpenFile(testFileAlreadyExists, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - t.Fatalf("creating test file failed: %s", err) - } - f.Sync() - f.Close() - } - - watcher := newWatcher(t) - defer watcher.Close() - - addWatch(t, watcher, testDir) - - // Test that RemoveWatch can be invoked concurrently, with no data races. - removed1 := make(chan struct{}) - go func() { - defer close(removed1) - watcher.Remove(testDir) - }() - removed2 := make(chan struct{}) - go func() { - close(removed2) - watcher.Remove(testDir) - }() - <-removed1 - <-removed2 -} - -func TestClose(t *testing.T) { - // Regression test for #59 bad file descriptor from Close - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - watcher := newWatcher(t) - if err := watcher.Add(testDir); err != nil { - t.Fatalf("Expected no error on Add, got %v", err) - } - err := watcher.Close() - if err != nil { - t.Fatalf("Expected no error on Close, got %v.", err) - } -} - -// TestRemoveWithClose tests if one can handle Remove events and, at the same -// time, close Watcher object without any data races. -func TestRemoveWithClose(t *testing.T) { - testDir := tempMkdir(t) - defer os.RemoveAll(testDir) - - const fileN = 200 - tempFiles := make([]string, 0, fileN) - for i := 0; i < fileN; i++ { - tempFiles = append(tempFiles, tempMkFile(t, testDir)) - } - watcher := newWatcher(t) - if err := watcher.Add(testDir); err != nil { - t.Fatalf("Expected no error on Add, got %v", err) - } - startC, stopC := make(chan struct{}), make(chan struct{}) - errC := make(chan error) - go func() { - for { - select { - case <-watcher.Errors: - case <-watcher.Events: - case <-stopC: - return - } - } - }() - go func() { - <-startC - for _, fileName := range tempFiles { - os.Remove(fileName) - } - }() - go func() { - <-startC - errC <- watcher.Close() - }() - close(startC) - defer close(stopC) - if err := <-errC; err != nil { - t.Fatalf("Expected no error on Close, got %v.", err) - } -} - -func testRename(file1, file2 string) error { - switch runtime.GOOS { - case "windows", "plan9": - return os.Rename(file1, file2) - default: - cmd := exec.Command("mv", file1, file2) - return cmd.Run() - } -} diff --git a/vendor/github.com/fsnotify/fsnotify/kqueue.go b/vendor/github.com/fsnotify/fsnotify/kqueue.go deleted file mode 100644 index c2b4acb18..000000000 --- a/vendor/github.com/fsnotify/fsnotify/kqueue.go +++ /dev/null @@ -1,503 +0,0 @@ -// Copyright 2010 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. - -// +build freebsd openbsd netbsd dragonfly darwin - -package fsnotify - -import ( - "errors" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "sync" - "time" - - "golang.org/x/sys/unix" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error - done chan bool // Channel for sending a "quit message" to the reader goroutine - - kq int // File descriptor (as returned by the kqueue() syscall). - - mu sync.Mutex // Protects access to watcher data - watches map[string]int // Map of watched file descriptors (key: path). - externalWatches map[string]bool // Map of watches added by user of the library. - dirFlags map[string]uint32 // Map of watched directories to fflags used in kqueue. - paths map[int]pathInfo // Map file descriptors to path names for processing kqueue events. - fileExists map[string]bool // Keep track of if we know this file exists (to stop duplicate create events). - isClosed bool // Set to true when Close() is first called -} - -type pathInfo struct { - name string - isDir bool -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - kq, err := kqueue() - if err != nil { - return nil, err - } - - w := &Watcher{ - kq: kq, - watches: make(map[string]int), - dirFlags: make(map[string]uint32), - paths: make(map[int]pathInfo), - fileExists: make(map[string]bool), - externalWatches: make(map[string]bool), - Events: make(chan Event), - Errors: make(chan error), - done: make(chan bool), - } - - go w.readEvents() - return w, nil -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - w.mu.Lock() - if w.isClosed { - w.mu.Unlock() - return nil - } - w.isClosed = true - w.mu.Unlock() - - // copy paths to remove while locked - w.mu.Lock() - var pathsToRemove = make([]string, 0, len(w.watches)) - for name := range w.watches { - pathsToRemove = append(pathsToRemove, name) - } - w.mu.Unlock() - // unlock before calling Remove, which also locks - - var err error - for _, name := range pathsToRemove { - if e := w.Remove(name); e != nil && err == nil { - err = e - } - } - - // Send "quit" message to the reader goroutine: - w.done <- true - - return nil -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - w.mu.Lock() - w.externalWatches[name] = true - w.mu.Unlock() - _, err := w.addWatch(name, noteAllEvents) - return err -} - -// Remove stops watching the the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - name = filepath.Clean(name) - w.mu.Lock() - watchfd, ok := w.watches[name] - w.mu.Unlock() - if !ok { - return fmt.Errorf("can't remove non-existent kevent watch for: %s", name) - } - - const registerRemove = unix.EV_DELETE - if err := register(w.kq, []int{watchfd}, registerRemove, 0); err != nil { - return err - } - - unix.Close(watchfd) - - w.mu.Lock() - isDir := w.paths[watchfd].isDir - delete(w.watches, name) - delete(w.paths, watchfd) - delete(w.dirFlags, name) - w.mu.Unlock() - - // Find all watched paths that are in this directory that are not external. - if isDir { - var pathsToRemove []string - w.mu.Lock() - for _, path := range w.paths { - wdir, _ := filepath.Split(path.name) - if filepath.Clean(wdir) == name { - if !w.externalWatches[path.name] { - pathsToRemove = append(pathsToRemove, path.name) - } - } - } - w.mu.Unlock() - for _, name := range pathsToRemove { - // Since these are internal, not much sense in propagating error - // to the user, as that will just confuse them with an error about - // a path they did not explicitly watch themselves. - w.Remove(name) - } - } - - return nil -} - -// Watch all events (except NOTE_EXTEND, NOTE_LINK, NOTE_REVOKE) -const noteAllEvents = unix.NOTE_DELETE | unix.NOTE_WRITE | unix.NOTE_ATTRIB | unix.NOTE_RENAME - -// keventWaitTime to block on each read from kevent -var keventWaitTime = durationToTimespec(100 * time.Millisecond) - -// addWatch adds name to the watched file set. -// The flags are interpreted as described in kevent(2). -// Returns the real path to the file which was added, if any, which may be different from the one passed in the case of symlinks. -func (w *Watcher) addWatch(name string, flags uint32) (string, error) { - var isDir bool - // Make ./name and name equivalent - name = filepath.Clean(name) - - w.mu.Lock() - if w.isClosed { - w.mu.Unlock() - return "", errors.New("kevent instance already closed") - } - watchfd, alreadyWatching := w.watches[name] - // We already have a watch, but we can still override flags. - if alreadyWatching { - isDir = w.paths[watchfd].isDir - } - w.mu.Unlock() - - if !alreadyWatching { - fi, err := os.Lstat(name) - if err != nil { - return "", err - } - - // Don't watch sockets. - if fi.Mode()&os.ModeSocket == os.ModeSocket { - return "", nil - } - - // Don't watch named pipes. - if fi.Mode()&os.ModeNamedPipe == os.ModeNamedPipe { - return "", nil - } - - // Follow Symlinks - // Unfortunately, Linux can add bogus symlinks to watch list without - // issue, and Windows can't do symlinks period (AFAIK). To maintain - // consistency, we will act like everything is fine. There will simply - // be no file events for broken symlinks. - // Hence the returns of nil on errors. - if fi.Mode()&os.ModeSymlink == os.ModeSymlink { - name, err = filepath.EvalSymlinks(name) - if err != nil { - return "", nil - } - - w.mu.Lock() - _, alreadyWatching = w.watches[name] - w.mu.Unlock() - - if alreadyWatching { - return name, nil - } - - fi, err = os.Lstat(name) - if err != nil { - return "", nil - } - } - - watchfd, err = unix.Open(name, openMode, 0700) - if watchfd == -1 { - return "", err - } - - isDir = fi.IsDir() - } - - const registerAdd = unix.EV_ADD | unix.EV_CLEAR | unix.EV_ENABLE - if err := register(w.kq, []int{watchfd}, registerAdd, flags); err != nil { - unix.Close(watchfd) - return "", err - } - - if !alreadyWatching { - w.mu.Lock() - w.watches[name] = watchfd - w.paths[watchfd] = pathInfo{name: name, isDir: isDir} - w.mu.Unlock() - } - - if isDir { - // Watch the directory if it has not been watched before, - // or if it was watched before, but perhaps only a NOTE_DELETE (watchDirectoryFiles) - w.mu.Lock() - - watchDir := (flags&unix.NOTE_WRITE) == unix.NOTE_WRITE && - (!alreadyWatching || (w.dirFlags[name]&unix.NOTE_WRITE) != unix.NOTE_WRITE) - // Store flags so this watch can be updated later - w.dirFlags[name] = flags - w.mu.Unlock() - - if watchDir { - if err := w.watchDirectoryFiles(name); err != nil { - return "", err - } - } - } - return name, nil -} - -// readEvents reads from kqueue and converts the received kevents into -// Event values that it sends down the Events channel. -func (w *Watcher) readEvents() { - eventBuffer := make([]unix.Kevent_t, 10) - - for { - // See if there is a message on the "done" channel - select { - case <-w.done: - err := unix.Close(w.kq) - if err != nil { - w.Errors <- err - } - close(w.Events) - close(w.Errors) - return - default: - } - - // Get new events - kevents, err := read(w.kq, eventBuffer, &keventWaitTime) - // EINTR is okay, the syscall was interrupted before timeout expired. - if err != nil && err != unix.EINTR { - w.Errors <- err - continue - } - - // Flush the events we received to the Events channel - for len(kevents) > 0 { - kevent := &kevents[0] - watchfd := int(kevent.Ident) - mask := uint32(kevent.Fflags) - w.mu.Lock() - path := w.paths[watchfd] - w.mu.Unlock() - event := newEvent(path.name, mask) - - if path.isDir && !(event.Op&Remove == Remove) { - // Double check to make sure the directory exists. This can happen when - // we do a rm -fr on a recursively watched folders and we receive a - // modification event first but the folder has been deleted and later - // receive the delete event - if _, err := os.Lstat(event.Name); os.IsNotExist(err) { - // mark is as delete event - event.Op |= Remove - } - } - - if event.Op&Rename == Rename || event.Op&Remove == Remove { - w.Remove(event.Name) - w.mu.Lock() - delete(w.fileExists, event.Name) - w.mu.Unlock() - } - - if path.isDir && event.Op&Write == Write && !(event.Op&Remove == Remove) { - w.sendDirectoryChangeEvents(event.Name) - } else { - // Send the event on the Events channel - w.Events <- event - } - - if event.Op&Remove == Remove { - // Look for a file that may have overwritten this. - // For example, mv f1 f2 will delete f2, then create f2. - if path.isDir { - fileDir := filepath.Clean(event.Name) - w.mu.Lock() - _, found := w.watches[fileDir] - w.mu.Unlock() - if found { - // make sure the directory exists before we watch for changes. When we - // do a recursive watch and perform rm -fr, the parent directory might - // have gone missing, ignore the missing directory and let the - // upcoming delete event remove the watch from the parent directory. - if _, err := os.Lstat(fileDir); err == nil { - w.sendDirectoryChangeEvents(fileDir) - } - } - } else { - filePath := filepath.Clean(event.Name) - if fileInfo, err := os.Lstat(filePath); err == nil { - w.sendFileCreatedEventIfNew(filePath, fileInfo) - } - } - } - - // Move to next event - kevents = kevents[1:] - } - } -} - -// newEvent returns an platform-independent Event based on kqueue Fflags. -func newEvent(name string, mask uint32) Event { - e := Event{Name: name} - if mask&unix.NOTE_DELETE == unix.NOTE_DELETE { - e.Op |= Remove - } - if mask&unix.NOTE_WRITE == unix.NOTE_WRITE { - e.Op |= Write - } - if mask&unix.NOTE_RENAME == unix.NOTE_RENAME { - e.Op |= Rename - } - if mask&unix.NOTE_ATTRIB == unix.NOTE_ATTRIB { - e.Op |= Chmod - } - return e -} - -func newCreateEvent(name string) Event { - return Event{Name: name, Op: Create} -} - -// watchDirectoryFiles to mimic inotify when adding a watch on a directory -func (w *Watcher) watchDirectoryFiles(dirPath string) error { - // Get all files - files, err := ioutil.ReadDir(dirPath) - if err != nil { - return err - } - - for _, fileInfo := range files { - filePath := filepath.Join(dirPath, fileInfo.Name()) - filePath, err = w.internalWatch(filePath, fileInfo) - if err != nil { - return err - } - - w.mu.Lock() - w.fileExists[filePath] = true - w.mu.Unlock() - } - - return nil -} - -// sendDirectoryEvents searches the directory for newly created files -// and sends them over the event channel. This functionality is to have -// the BSD version of fsnotify match Linux inotify which provides a -// create event for files created in a watched directory. -func (w *Watcher) sendDirectoryChangeEvents(dirPath string) { - // Get all files - files, err := ioutil.ReadDir(dirPath) - if err != nil { - w.Errors <- err - } - - // Search for new files - for _, fileInfo := range files { - filePath := filepath.Join(dirPath, fileInfo.Name()) - err := w.sendFileCreatedEventIfNew(filePath, fileInfo) - - if err != nil { - return - } - } -} - -// sendFileCreatedEvent sends a create event if the file isn't already being tracked. -func (w *Watcher) sendFileCreatedEventIfNew(filePath string, fileInfo os.FileInfo) (err error) { - w.mu.Lock() - _, doesExist := w.fileExists[filePath] - w.mu.Unlock() - if !doesExist { - // Send create event - w.Events <- newCreateEvent(filePath) - } - - // like watchDirectoryFiles (but without doing another ReadDir) - filePath, err = w.internalWatch(filePath, fileInfo) - if err != nil { - return err - } - - w.mu.Lock() - w.fileExists[filePath] = true - w.mu.Unlock() - - return nil -} - -func (w *Watcher) internalWatch(name string, fileInfo os.FileInfo) (string, error) { - if fileInfo.IsDir() { - // mimic Linux providing delete events for subdirectories - // but preserve the flags used if currently watching subdirectory - w.mu.Lock() - flags := w.dirFlags[name] - w.mu.Unlock() - - flags |= unix.NOTE_DELETE | unix.NOTE_RENAME - return w.addWatch(name, flags) - } - - // watch file to mimic Linux inotify - return w.addWatch(name, noteAllEvents) -} - -// kqueue creates a new kernel event queue and returns a descriptor. -func kqueue() (kq int, err error) { - kq, err = unix.Kqueue() - if kq == -1 { - return kq, err - } - return kq, nil -} - -// register events with the queue -func register(kq int, fds []int, flags int, fflags uint32) error { - changes := make([]unix.Kevent_t, len(fds)) - - for i, fd := range fds { - // SetKevent converts int to the platform-specific types: - unix.SetKevent(&changes[i], fd, unix.EVFILT_VNODE, flags) - changes[i].Fflags = fflags - } - - // register the events - success, err := unix.Kevent(kq, changes, nil, nil) - if success == -1 { - return err - } - return nil -} - -// read retrieves pending events, or waits until an event occurs. -// A timeout of nil blocks indefinitely, while 0 polls the queue. -func read(kq int, events []unix.Kevent_t, timeout *unix.Timespec) ([]unix.Kevent_t, error) { - n, err := unix.Kevent(kq, nil, events, timeout) - if err != nil { - return nil, err - } - return events[0:n], nil -} - -// durationToTimespec prepares a timeout value -func durationToTimespec(d time.Duration) unix.Timespec { - return unix.NsecToTimespec(d.Nanoseconds()) -} diff --git a/vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go b/vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go deleted file mode 100644 index 7d8de1451..000000000 --- a/vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2013 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. - -// +build freebsd openbsd netbsd dragonfly - -package fsnotify - -import "golang.org/x/sys/unix" - -const openMode = unix.O_NONBLOCK | unix.O_RDONLY diff --git a/vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go b/vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go deleted file mode 100644 index 9139e1716..000000000 --- a/vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2013 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. - -// +build darwin - -package fsnotify - -import "golang.org/x/sys/unix" - -// note: this constant is not defined on BSD -const openMode = unix.O_EVTONLY diff --git a/vendor/github.com/fsnotify/fsnotify/windows.go b/vendor/github.com/fsnotify/fsnotify/windows.go deleted file mode 100644 index 09436f31d..000000000 --- a/vendor/github.com/fsnotify/fsnotify/windows.go +++ /dev/null @@ -1,561 +0,0 @@ -// Copyright 2011 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. - -// +build windows - -package fsnotify - -import ( - "errors" - "fmt" - "os" - "path/filepath" - "runtime" - "sync" - "syscall" - "unsafe" -) - -// Watcher watches a set of files, delivering events to a channel. -type Watcher struct { - Events chan Event - Errors chan error - isClosed bool // Set to true when Close() is first called - mu sync.Mutex // Map access - port syscall.Handle // Handle to completion port - watches watchMap // Map of watches (key: i-number) - input chan *input // Inputs to the reader are sent on this channel - quit chan chan<- error -} - -// NewWatcher establishes a new watcher with the underlying OS and begins waiting for events. -func NewWatcher() (*Watcher, error) { - port, e := syscall.CreateIoCompletionPort(syscall.InvalidHandle, 0, 0, 0) - if e != nil { - return nil, os.NewSyscallError("CreateIoCompletionPort", e) - } - w := &Watcher{ - port: port, - watches: make(watchMap), - input: make(chan *input, 1), - Events: make(chan Event, 50), - Errors: make(chan error), - quit: make(chan chan<- error, 1), - } - go w.readEvents() - return w, nil -} - -// Close removes all watches and closes the events channel. -func (w *Watcher) Close() error { - if w.isClosed { - return nil - } - w.isClosed = true - - // Send "quit" message to the reader goroutine - ch := make(chan error) - w.quit <- ch - if err := w.wakeupReader(); err != nil { - return err - } - return <-ch -} - -// Add starts watching the named file or directory (non-recursively). -func (w *Watcher) Add(name string) error { - if w.isClosed { - return errors.New("watcher already closed") - } - in := &input{ - op: opAddWatch, - path: filepath.Clean(name), - flags: sysFSALLEVENTS, - reply: make(chan error), - } - w.input <- in - if err := w.wakeupReader(); err != nil { - return err - } - return <-in.reply -} - -// Remove stops watching the the named file or directory (non-recursively). -func (w *Watcher) Remove(name string) error { - in := &input{ - op: opRemoveWatch, - path: filepath.Clean(name), - reply: make(chan error), - } - w.input <- in - if err := w.wakeupReader(); err != nil { - return err - } - return <-in.reply -} - -const ( - // Options for AddWatch - sysFSONESHOT = 0x80000000 - sysFSONLYDIR = 0x1000000 - - // Events - sysFSACCESS = 0x1 - sysFSALLEVENTS = 0xfff - sysFSATTRIB = 0x4 - sysFSCLOSE = 0x18 - sysFSCREATE = 0x100 - sysFSDELETE = 0x200 - sysFSDELETESELF = 0x400 - sysFSMODIFY = 0x2 - sysFSMOVE = 0xc0 - sysFSMOVEDFROM = 0x40 - sysFSMOVEDTO = 0x80 - sysFSMOVESELF = 0x800 - - // Special events - sysFSIGNORED = 0x8000 - sysFSQOVERFLOW = 0x4000 -) - -func newEvent(name string, mask uint32) Event { - e := Event{Name: name} - if mask&sysFSCREATE == sysFSCREATE || mask&sysFSMOVEDTO == sysFSMOVEDTO { - e.Op |= Create - } - if mask&sysFSDELETE == sysFSDELETE || mask&sysFSDELETESELF == sysFSDELETESELF { - e.Op |= Remove - } - if mask&sysFSMODIFY == sysFSMODIFY { - e.Op |= Write - } - if mask&sysFSMOVE == sysFSMOVE || mask&sysFSMOVESELF == sysFSMOVESELF || mask&sysFSMOVEDFROM == sysFSMOVEDFROM { - e.Op |= Rename - } - if mask&sysFSATTRIB == sysFSATTRIB { - e.Op |= Chmod - } - return e -} - -const ( - opAddWatch = iota - opRemoveWatch -) - -const ( - provisional uint64 = 1 << (32 + iota) -) - -type input struct { - op int - path string - flags uint32 - reply chan error -} - -type inode struct { - handle syscall.Handle - volume uint32 - index uint64 -} - -type watch struct { - ov syscall.Overlapped - ino *inode // i-number - path string // Directory path - mask uint64 // Directory itself is being watched with these notify flags - names map[string]uint64 // Map of names being watched and their notify flags - rename string // Remembers the old name while renaming a file - buf [4096]byte -} - -type indexMap map[uint64]*watch -type watchMap map[uint32]indexMap - -func (w *Watcher) wakeupReader() error { - e := syscall.PostQueuedCompletionStatus(w.port, 0, 0, nil) - if e != nil { - return os.NewSyscallError("PostQueuedCompletionStatus", e) - } - return nil -} - -func getDir(pathname string) (dir string, err error) { - attr, e := syscall.GetFileAttributes(syscall.StringToUTF16Ptr(pathname)) - if e != nil { - return "", os.NewSyscallError("GetFileAttributes", e) - } - if attr&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 { - dir = pathname - } else { - dir, _ = filepath.Split(pathname) - dir = filepath.Clean(dir) - } - return -} - -func getIno(path string) (ino *inode, err error) { - h, e := syscall.CreateFile(syscall.StringToUTF16Ptr(path), - syscall.FILE_LIST_DIRECTORY, - syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, - nil, syscall.OPEN_EXISTING, - syscall.FILE_FLAG_BACKUP_SEMANTICS|syscall.FILE_FLAG_OVERLAPPED, 0) - if e != nil { - return nil, os.NewSyscallError("CreateFile", e) - } - var fi syscall.ByHandleFileInformation - if e = syscall.GetFileInformationByHandle(h, &fi); e != nil { - syscall.CloseHandle(h) - return nil, os.NewSyscallError("GetFileInformationByHandle", e) - } - ino = &inode{ - handle: h, - volume: fi.VolumeSerialNumber, - index: uint64(fi.FileIndexHigh)<<32 | uint64(fi.FileIndexLow), - } - return ino, nil -} - -// Must run within the I/O thread. -func (m watchMap) get(ino *inode) *watch { - if i := m[ino.volume]; i != nil { - return i[ino.index] - } - return nil -} - -// Must run within the I/O thread. -func (m watchMap) set(ino *inode, watch *watch) { - i := m[ino.volume] - if i == nil { - i = make(indexMap) - m[ino.volume] = i - } - i[ino.index] = watch -} - -// Must run within the I/O thread. -func (w *Watcher) addWatch(pathname string, flags uint64) error { - dir, err := getDir(pathname) - if err != nil { - return err - } - if flags&sysFSONLYDIR != 0 && pathname != dir { - return nil - } - ino, err := getIno(dir) - if err != nil { - return err - } - w.mu.Lock() - watchEntry := w.watches.get(ino) - w.mu.Unlock() - if watchEntry == nil { - if _, e := syscall.CreateIoCompletionPort(ino.handle, w.port, 0, 0); e != nil { - syscall.CloseHandle(ino.handle) - return os.NewSyscallError("CreateIoCompletionPort", e) - } - watchEntry = &watch{ - ino: ino, - path: dir, - names: make(map[string]uint64), - } - w.mu.Lock() - w.watches.set(ino, watchEntry) - w.mu.Unlock() - flags |= provisional - } else { - syscall.CloseHandle(ino.handle) - } - if pathname == dir { - watchEntry.mask |= flags - } else { - watchEntry.names[filepath.Base(pathname)] |= flags - } - if err = w.startRead(watchEntry); err != nil { - return err - } - if pathname == dir { - watchEntry.mask &= ^provisional - } else { - watchEntry.names[filepath.Base(pathname)] &= ^provisional - } - return nil -} - -// Must run within the I/O thread. -func (w *Watcher) remWatch(pathname string) error { - dir, err := getDir(pathname) - if err != nil { - return err - } - ino, err := getIno(dir) - if err != nil { - return err - } - w.mu.Lock() - watch := w.watches.get(ino) - w.mu.Unlock() - if watch == nil { - return fmt.Errorf("can't remove non-existent watch for: %s", pathname) - } - if pathname == dir { - w.sendEvent(watch.path, watch.mask&sysFSIGNORED) - watch.mask = 0 - } else { - name := filepath.Base(pathname) - w.sendEvent(filepath.Join(watch.path, name), watch.names[name]&sysFSIGNORED) - delete(watch.names, name) - } - return w.startRead(watch) -} - -// Must run within the I/O thread. -func (w *Watcher) deleteWatch(watch *watch) { - for name, mask := range watch.names { - if mask&provisional == 0 { - w.sendEvent(filepath.Join(watch.path, name), mask&sysFSIGNORED) - } - delete(watch.names, name) - } - if watch.mask != 0 { - if watch.mask&provisional == 0 { - w.sendEvent(watch.path, watch.mask&sysFSIGNORED) - } - watch.mask = 0 - } -} - -// Must run within the I/O thread. -func (w *Watcher) startRead(watch *watch) error { - if e := syscall.CancelIo(watch.ino.handle); e != nil { - w.Errors <- os.NewSyscallError("CancelIo", e) - w.deleteWatch(watch) - } - mask := toWindowsFlags(watch.mask) - for _, m := range watch.names { - mask |= toWindowsFlags(m) - } - if mask == 0 { - if e := syscall.CloseHandle(watch.ino.handle); e != nil { - w.Errors <- os.NewSyscallError("CloseHandle", e) - } - w.mu.Lock() - delete(w.watches[watch.ino.volume], watch.ino.index) - w.mu.Unlock() - return nil - } - e := syscall.ReadDirectoryChanges(watch.ino.handle, &watch.buf[0], - uint32(unsafe.Sizeof(watch.buf)), false, mask, nil, &watch.ov, 0) - if e != nil { - err := os.NewSyscallError("ReadDirectoryChanges", e) - if e == syscall.ERROR_ACCESS_DENIED && watch.mask&provisional == 0 { - // Watched directory was probably removed - if w.sendEvent(watch.path, watch.mask&sysFSDELETESELF) { - if watch.mask&sysFSONESHOT != 0 { - watch.mask = 0 - } - } - err = nil - } - w.deleteWatch(watch) - w.startRead(watch) - return err - } - return nil -} - -// readEvents reads from the I/O completion port, converts the -// received events into Event objects and sends them via the Events channel. -// Entry point to the I/O thread. -func (w *Watcher) readEvents() { - var ( - n, key uint32 - ov *syscall.Overlapped - ) - runtime.LockOSThread() - - for { - e := syscall.GetQueuedCompletionStatus(w.port, &n, &key, &ov, syscall.INFINITE) - watch := (*watch)(unsafe.Pointer(ov)) - - if watch == nil { - select { - case ch := <-w.quit: - w.mu.Lock() - var indexes []indexMap - for _, index := range w.watches { - indexes = append(indexes, index) - } - w.mu.Unlock() - for _, index := range indexes { - for _, watch := range index { - w.deleteWatch(watch) - w.startRead(watch) - } - } - var err error - if e := syscall.CloseHandle(w.port); e != nil { - err = os.NewSyscallError("CloseHandle", e) - } - close(w.Events) - close(w.Errors) - ch <- err - return - case in := <-w.input: - switch in.op { - case opAddWatch: - in.reply <- w.addWatch(in.path, uint64(in.flags)) - case opRemoveWatch: - in.reply <- w.remWatch(in.path) - } - default: - } - continue - } - - switch e { - case syscall.ERROR_MORE_DATA: - if watch == nil { - w.Errors <- errors.New("ERROR_MORE_DATA has unexpectedly null lpOverlapped buffer") - } else { - // The i/o succeeded but the buffer is full. - // In theory we should be building up a full packet. - // In practice we can get away with just carrying on. - n = uint32(unsafe.Sizeof(watch.buf)) - } - case syscall.ERROR_ACCESS_DENIED: - // Watched directory was probably removed - w.sendEvent(watch.path, watch.mask&sysFSDELETESELF) - w.deleteWatch(watch) - w.startRead(watch) - continue - case syscall.ERROR_OPERATION_ABORTED: - // CancelIo was called on this handle - continue - default: - w.Errors <- os.NewSyscallError("GetQueuedCompletionPort", e) - continue - case nil: - } - - var offset uint32 - for { - if n == 0 { - w.Events <- newEvent("", sysFSQOVERFLOW) - w.Errors <- errors.New("short read in readEvents()") - break - } - - // Point "raw" to the event in the buffer - raw := (*syscall.FileNotifyInformation)(unsafe.Pointer(&watch.buf[offset])) - buf := (*[syscall.MAX_PATH]uint16)(unsafe.Pointer(&raw.FileName)) - name := syscall.UTF16ToString(buf[:raw.FileNameLength/2]) - fullname := filepath.Join(watch.path, name) - - var mask uint64 - switch raw.Action { - case syscall.FILE_ACTION_REMOVED: - mask = sysFSDELETESELF - case syscall.FILE_ACTION_MODIFIED: - mask = sysFSMODIFY - case syscall.FILE_ACTION_RENAMED_OLD_NAME: - watch.rename = name - case syscall.FILE_ACTION_RENAMED_NEW_NAME: - if watch.names[watch.rename] != 0 { - watch.names[name] |= watch.names[watch.rename] - delete(watch.names, watch.rename) - mask = sysFSMOVESELF - } - } - - sendNameEvent := func() { - if w.sendEvent(fullname, watch.names[name]&mask) { - if watch.names[name]&sysFSONESHOT != 0 { - delete(watch.names, name) - } - } - } - if raw.Action != syscall.FILE_ACTION_RENAMED_NEW_NAME { - sendNameEvent() - } - if raw.Action == syscall.FILE_ACTION_REMOVED { - w.sendEvent(fullname, watch.names[name]&sysFSIGNORED) - delete(watch.names, name) - } - if w.sendEvent(fullname, watch.mask&toFSnotifyFlags(raw.Action)) { - if watch.mask&sysFSONESHOT != 0 { - watch.mask = 0 - } - } - if raw.Action == syscall.FILE_ACTION_RENAMED_NEW_NAME { - fullname = filepath.Join(watch.path, watch.rename) - sendNameEvent() - } - - // Move to the next event in the buffer - if raw.NextEntryOffset == 0 { - break - } - offset += raw.NextEntryOffset - - // Error! - if offset >= n { - w.Errors <- errors.New("Windows system assumed buffer larger than it is, events have likely been missed.") - break - } - } - - if err := w.startRead(watch); err != nil { - w.Errors <- err - } - } -} - -func (w *Watcher) sendEvent(name string, mask uint64) bool { - if mask == 0 { - return false - } - event := newEvent(name, uint32(mask)) - select { - case ch := <-w.quit: - w.quit <- ch - case w.Events <- event: - } - return true -} - -func toWindowsFlags(mask uint64) uint32 { - var m uint32 - if mask&sysFSACCESS != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_LAST_ACCESS - } - if mask&sysFSMODIFY != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_LAST_WRITE - } - if mask&sysFSATTRIB != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_ATTRIBUTES - } - if mask&(sysFSMOVE|sysFSCREATE|sysFSDELETE) != 0 { - m |= syscall.FILE_NOTIFY_CHANGE_FILE_NAME | syscall.FILE_NOTIFY_CHANGE_DIR_NAME - } - return m -} - -func toFSnotifyFlags(action uint32) uint64 { - switch action { - case syscall.FILE_ACTION_ADDED: - return sysFSCREATE - case syscall.FILE_ACTION_REMOVED: - return sysFSDELETE - case syscall.FILE_ACTION_MODIFIED: - return sysFSMODIFY - case syscall.FILE_ACTION_RENAMED_OLD_NAME: - return sysFSMOVEDFROM - case syscall.FILE_ACTION_RENAMED_NEW_NAME: - return sysFSMOVEDTO - } - return 0 -} diff --git a/vendor/github.com/ghodss/yaml/.gitignore b/vendor/github.com/ghodss/yaml/.gitignore new file mode 100644 index 000000000..e256a31e0 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/.gitignore @@ -0,0 +1,20 @@ +# OSX leaves these everywhere on SMB shares +._* + +# Eclipse files +.classpath +.project +.settings/** + +# Emacs save files +*~ + +# Vim-related files +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist + +# Go test binaries +*.test diff --git a/vendor/github.com/ghodss/yaml/.travis.yml b/vendor/github.com/ghodss/yaml/.travis.yml new file mode 100644 index 000000000..0e9d6edc0 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/.travis.yml @@ -0,0 +1,7 @@ +language: go +go: + - 1.3 + - 1.4 +script: + - go test + - go build diff --git a/vendor/github.com/ghodss/yaml/LICENSE b/vendor/github.com/ghodss/yaml/LICENSE new file mode 100644 index 000000000..7805d36de --- /dev/null +++ b/vendor/github.com/ghodss/yaml/LICENSE @@ -0,0 +1,50 @@ +The MIT License (MIT) + +Copyright (c) 2014 Sam Ghods + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/ghodss/yaml/README.md b/vendor/github.com/ghodss/yaml/README.md new file mode 100644 index 000000000..f8f7e3695 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/README.md @@ -0,0 +1,116 @@ +# YAML marshaling and unmarshaling support for Go + +[![Build Status](https://travis-ci.org/ghodss/yaml.svg)](https://travis-ci.org/ghodss/yaml) + +## Introduction + +A wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs. + +In short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/). + +## Compatibility + +This package uses [go-yaml v2](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility). + +## Caveats + +**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example: + +``` +BAD: + exampleKey: !!binary gIGC + +GOOD: + exampleKey: gIGC +... and decode the base64 data in your code. +``` + +**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys. + +## Installation and usage + +To install, run: + +``` +$ go get github.com/ghodss/yaml +``` + +And import using: + +``` +import "github.com/ghodss/yaml" +``` + +Usage is very similar to the JSON library: + +```go +import ( + "fmt" + + "github.com/ghodss/yaml" +) + +type Person struct { + Name string `json:"name"` // Affects YAML field names too. + Age int `json:"name"` +} + +func main() { + // Marshal a Person struct to YAML. + p := Person{"John", 30} + y, err := yaml.Marshal(p) + if err != nil { + fmt.Printf("err: %v\n", err) + return + } + fmt.Println(string(y)) + /* Output: + name: John + age: 30 + */ + + // Unmarshal the YAML back into a Person struct. + var p2 Person + err := yaml.Unmarshal(y, &p2) + if err != nil { + fmt.Printf("err: %v\n", err) + return + } + fmt.Println(p2) + /* Output: + {John 30} + */ +} +``` + +`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available: + +```go +import ( + "fmt" + + "github.com/ghodss/yaml" +) +func main() { + j := []byte(`{"name": "John", "age": 30}`) + y, err := yaml.JSONToYAML(j) + if err != nil { + fmt.Printf("err: %v\n", err) + return + } + fmt.Println(string(y)) + /* Output: + name: John + age: 30 + */ + j2, err := yaml.YAMLToJSON(y) + if err != nil { + fmt.Printf("err: %v\n", err) + return + } + fmt.Println(string(j2)) + /* Output: + {"age":30,"name":"John"} + */ +} +``` diff --git a/vendor/github.com/ghodss/yaml/fields.go b/vendor/github.com/ghodss/yaml/fields.go new file mode 100644 index 000000000..0bd3c2b46 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/fields.go @@ -0,0 +1,497 @@ +// Copyright 2013 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 yaml + +import ( + "bytes" + "encoding" + "encoding/json" + "reflect" + "sort" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +// indirect walks down v allocating pointers as needed, +// until it gets to a non-pointer. +// if it encounters an Unmarshaler, indirect stops and returns that. +// if decodingNull is true, indirect stops at the last pointer so it can be set to nil. +func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { + // If v is a named type and is addressable, + // start with its address, so that if the type has pointer methods, + // we find them. + if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { + v = v.Addr() + } + for { + // Load value from interface, but only if the result will be + // usefully addressable. + if v.Kind() == reflect.Interface && !v.IsNil() { + e := v.Elem() + if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { + v = e + continue + } + } + + if v.Kind() != reflect.Ptr { + break + } + + if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() { + break + } + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + if v.Type().NumMethod() > 0 { + if u, ok := v.Interface().(json.Unmarshaler); ok { + return u, nil, reflect.Value{} + } + if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { + return nil, u, reflect.Value{} + } + } + v = v.Elem() + } + return nil, nil, v +} + +// A field represents a single field found in a struct. +type field struct { + name string + nameBytes []byte // []byte(name) + equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent + + tag bool + index []int + typ reflect.Type + omitEmpty bool + quoted bool +} + +func fillField(f field) field { + f.nameBytes = []byte(f.name) + f.equalFold = foldFunc(f.nameBytes) + return f +} + +// byName sorts field by name, breaking ties with depth, +// then breaking ties with "name came from json tag", then +// breaking ties with index sequence. +type byName []field + +func (x byName) Len() int { return len(x) } + +func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byName) Less(i, j int) bool { + if x[i].name != x[j].name { + return x[i].name < x[j].name + } + if len(x[i].index) != len(x[j].index) { + return len(x[i].index) < len(x[j].index) + } + if x[i].tag != x[j].tag { + return x[i].tag + } + return byIndex(x).Less(i, j) +} + +// byIndex sorts field by index sequence. +type byIndex []field + +func (x byIndex) Len() int { return len(x) } + +func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byIndex) Less(i, j int) bool { + for k, xik := range x[i].index { + if k >= len(x[j].index) { + return false + } + if xik != x[j].index[k] { + return xik < x[j].index[k] + } + } + return len(x[i].index) < len(x[j].index) +} + +// typeFields returns a list of fields that JSON should recognize for the given type. +// The algorithm is breadth-first search over the set of structs to include - the top struct +// and then any reachable anonymous structs. +func typeFields(t reflect.Type) []field { + // Anonymous fields to explore at the current level and the next. + current := []field{} + next := []field{{typ: t}} + + // Count of queued names for current level and the next. + count := map[reflect.Type]int{} + nextCount := map[reflect.Type]int{} + + // Types already visited at an earlier level. + visited := map[reflect.Type]bool{} + + // Fields found. + var fields []field + + for len(next) > 0 { + current, next = next, current[:0] + count, nextCount = nextCount, map[reflect.Type]int{} + + for _, f := range current { + if visited[f.typ] { + continue + } + visited[f.typ] = true + + // Scan f.typ for fields to include. + for i := 0; i < f.typ.NumField(); i++ { + sf := f.typ.Field(i) + if sf.PkgPath != "" { // unexported + continue + } + tag := sf.Tag.Get("json") + if tag == "-" { + continue + } + name, opts := parseTag(tag) + if !isValidTag(name) { + name = "" + } + index := make([]int, len(f.index)+1) + copy(index, f.index) + index[len(f.index)] = i + + ft := sf.Type + if ft.Name() == "" && ft.Kind() == reflect.Ptr { + // Follow pointer. + ft = ft.Elem() + } + + // Record found field and index sequence. + if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { + tagged := name != "" + if name == "" { + name = sf.Name + } + fields = append(fields, fillField(field{ + name: name, + tag: tagged, + index: index, + typ: ft, + omitEmpty: opts.Contains("omitempty"), + quoted: opts.Contains("string"), + })) + if count[f.typ] > 1 { + // If there were multiple instances, add a second, + // so that the annihilation code will see a duplicate. + // It only cares about the distinction between 1 or 2, + // so don't bother generating any more copies. + fields = append(fields, fields[len(fields)-1]) + } + continue + } + + // Record new anonymous struct to explore in next round. + nextCount[ft]++ + if nextCount[ft] == 1 { + next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft})) + } + } + } + } + + sort.Sort(byName(fields)) + + // Delete all fields that are hidden by the Go rules for embedded fields, + // except that fields with JSON tags are promoted. + + // The fields are sorted in primary order of name, secondary order + // of field index length. Loop over names; for each name, delete + // hidden fields by choosing the one dominant field that survives. + out := fields[:0] + for advance, i := 0, 0; i < len(fields); i += advance { + // One iteration per name. + // Find the sequence of fields with the name of this first field. + fi := fields[i] + name := fi.name + for advance = 1; i+advance < len(fields); advance++ { + fj := fields[i+advance] + if fj.name != name { + break + } + } + if advance == 1 { // Only one field with this name + out = append(out, fi) + continue + } + dominant, ok := dominantField(fields[i : i+advance]) + if ok { + out = append(out, dominant) + } + } + + fields = out + sort.Sort(byIndex(fields)) + + return fields +} + +// dominantField looks through the fields, all of which are known to +// have the same name, to find the single field that dominates the +// others using Go's embedding rules, modified by the presence of +// JSON tags. If there are multiple top-level fields, the boolean +// will be false: This condition is an error in Go and we skip all +// the fields. +func dominantField(fields []field) (field, bool) { + // The fields are sorted in increasing index-length order. The winner + // must therefore be one with the shortest index length. Drop all + // longer entries, which is easy: just truncate the slice. + length := len(fields[0].index) + tagged := -1 // Index of first tagged field. + for i, f := range fields { + if len(f.index) > length { + fields = fields[:i] + break + } + if f.tag { + if tagged >= 0 { + // Multiple tagged fields at the same level: conflict. + // Return no field. + return field{}, false + } + tagged = i + } + } + if tagged >= 0 { + return fields[tagged], true + } + // All remaining fields have the same length. If there's more than one, + // we have a conflict (two fields named "X" at the same level) and we + // return no field. + if len(fields) > 1 { + return field{}, false + } + return fields[0], true +} + +var fieldCache struct { + sync.RWMutex + m map[reflect.Type][]field +} + +// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. +func cachedTypeFields(t reflect.Type) []field { + fieldCache.RLock() + f := fieldCache.m[t] + fieldCache.RUnlock() + if f != nil { + return f + } + + // Compute fields without lock. + // Might duplicate effort but won't hold other computations back. + f = typeFields(t) + if f == nil { + f = []field{} + } + + fieldCache.Lock() + if fieldCache.m == nil { + fieldCache.m = map[reflect.Type][]field{} + } + fieldCache.m[t] = f + fieldCache.Unlock() + return f +} + +func isValidTag(s string) bool { + if s == "" { + return false + } + for _, c := range s { + switch { + case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c): + // Backslash and quote chars are reserved, but + // otherwise any punctuation chars are allowed + // in a tag name. + default: + if !unicode.IsLetter(c) && !unicode.IsDigit(c) { + return false + } + } + } + return true +} + +const ( + caseMask = ^byte(0x20) // Mask to ignore case in ASCII. + kelvin = '\u212a' + smallLongEss = '\u017f' +) + +// foldFunc returns one of four different case folding equivalence +// functions, from most general (and slow) to fastest: +// +// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8 +// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S') +// 3) asciiEqualFold, no special, but includes non-letters (including _) +// 4) simpleLetterEqualFold, no specials, no non-letters. +// +// The letters S and K are special because they map to 3 runes, not just 2: +// * S maps to s and to U+017F 'ſ' Latin small letter long s +// * k maps to K and to U+212A 'K' Kelvin sign +// See http://play.golang.org/p/tTxjOc0OGo +// +// The returned function is specialized for matching against s and +// should only be given s. It's not curried for performance reasons. +func foldFunc(s []byte) func(s, t []byte) bool { + nonLetter := false + special := false // special letter + for _, b := range s { + if b >= utf8.RuneSelf { + return bytes.EqualFold + } + upper := b & caseMask + if upper < 'A' || upper > 'Z' { + nonLetter = true + } else if upper == 'K' || upper == 'S' { + // See above for why these letters are special. + special = true + } + } + if special { + return equalFoldRight + } + if nonLetter { + return asciiEqualFold + } + return simpleLetterEqualFold +} + +// equalFoldRight is a specialization of bytes.EqualFold when s is +// known to be all ASCII (including punctuation), but contains an 's', +// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t. +// See comments on foldFunc. +func equalFoldRight(s, t []byte) bool { + for _, sb := range s { + if len(t) == 0 { + return false + } + tb := t[0] + if tb < utf8.RuneSelf { + if sb != tb { + sbUpper := sb & caseMask + if 'A' <= sbUpper && sbUpper <= 'Z' { + if sbUpper != tb&caseMask { + return false + } + } else { + return false + } + } + t = t[1:] + continue + } + // sb is ASCII and t is not. t must be either kelvin + // sign or long s; sb must be s, S, k, or K. + tr, size := utf8.DecodeRune(t) + switch sb { + case 's', 'S': + if tr != smallLongEss { + return false + } + case 'k', 'K': + if tr != kelvin { + return false + } + default: + return false + } + t = t[size:] + + } + if len(t) > 0 { + return false + } + return true +} + +// asciiEqualFold is a specialization of bytes.EqualFold for use when +// s is all ASCII (but may contain non-letters) and contains no +// special-folding letters. +// See comments on foldFunc. +func asciiEqualFold(s, t []byte) bool { + if len(s) != len(t) { + return false + } + for i, sb := range s { + tb := t[i] + if sb == tb { + continue + } + if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') { + if sb&caseMask != tb&caseMask { + return false + } + } else { + return false + } + } + return true +} + +// simpleLetterEqualFold is a specialization of bytes.EqualFold for +// use when s is all ASCII letters (no underscores, etc) and also +// doesn't contain 'k', 'K', 's', or 'S'. +// See comments on foldFunc. +func simpleLetterEqualFold(s, t []byte) bool { + if len(s) != len(t) { + return false + } + for i, b := range s { + if b&caseMask != t[i]&caseMask { + return false + } + } + return true +} + +// tagOptions is the string following a comma in a struct field's "json" +// tag, or the empty string. It does not include the leading comma. +type tagOptions string + +// parseTag splits a struct field's json tag into its name and +// comma-separated options. +func parseTag(tag string) (string, tagOptions) { + if idx := strings.Index(tag, ","); idx != -1 { + return tag[:idx], tagOptions(tag[idx+1:]) + } + return tag, tagOptions("") +} + +// Contains reports whether a comma-separated list of options +// contains a particular substr flag. substr must be surrounded by a +// string boundary or commas. +func (o tagOptions) Contains(optionName string) bool { + if len(o) == 0 { + return false + } + s := string(o) + for s != "" { + var next string + i := strings.Index(s, ",") + if i >= 0 { + s, next = s[:i], s[i+1:] + } + if s == optionName { + return true + } + s = next + } + return false +} diff --git a/vendor/github.com/ghodss/yaml/yaml.go b/vendor/github.com/ghodss/yaml/yaml.go new file mode 100644 index 000000000..c02beacb9 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/yaml.go @@ -0,0 +1,277 @@ +package yaml + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "strconv" + + "gopkg.in/yaml.v2" +) + +// Marshals the object into JSON then converts JSON to YAML and returns the +// YAML. +func Marshal(o interface{}) ([]byte, error) { + j, err := json.Marshal(o) + if err != nil { + return nil, fmt.Errorf("error marshaling into JSON: ", err) + } + + y, err := JSONToYAML(j) + if err != nil { + return nil, fmt.Errorf("error converting JSON to YAML: ", err) + } + + return y, nil +} + +// Converts YAML to JSON then uses JSON to unmarshal into an object. +func Unmarshal(y []byte, o interface{}) error { + vo := reflect.ValueOf(o) + j, err := yamlToJSON(y, &vo) + if err != nil { + return fmt.Errorf("error converting YAML to JSON: %v", err) + } + + err = json.Unmarshal(j, o) + if err != nil { + return fmt.Errorf("error unmarshaling JSON: %v", err) + } + + return nil +} + +// Convert JSON to YAML. +func JSONToYAML(j []byte) ([]byte, error) { + // Convert the JSON to an object. + var jsonObj interface{} + // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the + // Go JSON library doesn't try to pick the right number type (int, float, + // etc.) when unmarshling to interface{}, it just picks float64 + // universally. go-yaml does go through the effort of picking the right + // number type, so we can preserve number type throughout this process. + err := yaml.Unmarshal(j, &jsonObj) + if err != nil { + return nil, err + } + + // Marshal this object into YAML. + return yaml.Marshal(jsonObj) +} + +// Convert YAML to JSON. Since JSON is a subset of YAML, passing JSON through +// this method should be a no-op. +// +// Things YAML can do that are not supported by JSON: +// * In YAML you can have binary and null keys in your maps. These are invalid +// in JSON. (int and float keys are converted to strings.) +// * Binary data in YAML with the !!binary tag is not supported. If you want to +// use binary data with this library, encode the data as base64 as usual but do +// not use the !!binary tag in your YAML. This will ensure the original base64 +// encoded data makes it all the way through to the JSON. +func YAMLToJSON(y []byte) ([]byte, error) { + return yamlToJSON(y, nil) +} + +func yamlToJSON(y []byte, jsonTarget *reflect.Value) ([]byte, error) { + // Convert the YAML to an object. + var yamlObj interface{} + err := yaml.Unmarshal(y, &yamlObj) + if err != nil { + return nil, err + } + + // YAML objects are not completely compatible with JSON objects (e.g. you + // can have non-string keys in YAML). So, convert the YAML-compatible object + // to a JSON-compatible object, failing with an error if irrecoverable + // incompatibilties happen along the way. + jsonObj, err := convertToJSONableObject(yamlObj, jsonTarget) + if err != nil { + return nil, err + } + + // Convert this object to JSON and return the data. + return json.Marshal(jsonObj) +} + +func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) { + var err error + + // Resolve jsonTarget to a concrete value (i.e. not a pointer or an + // interface). We pass decodingNull as false because we're not actually + // decoding into the value, we're just checking if the ultimate target is a + // string. + if jsonTarget != nil { + ju, tu, pv := indirect(*jsonTarget, false) + // We have a JSON or Text Umarshaler at this level, so we can't be trying + // to decode into a string. + if ju != nil || tu != nil { + jsonTarget = nil + } else { + jsonTarget = &pv + } + } + + // If yamlObj is a number or a boolean, check if jsonTarget is a string - + // if so, coerce. Else return normal. + // If yamlObj is a map or array, find the field that each key is + // unmarshaling to, and when you recurse pass the reflect.Value for that + // field back into this function. + switch typedYAMLObj := yamlObj.(type) { + case map[interface{}]interface{}: + // JSON does not support arbitrary keys in a map, so we must convert + // these keys to strings. + // + // From my reading of go-yaml v2 (specifically the resolve function), + // keys can only have the types string, int, int64, float64, binary + // (unsupported), or null (unsupported). + strMap := make(map[string]interface{}) + for k, v := range typedYAMLObj { + // Resolve the key to a string first. + var keyString string + switch typedKey := k.(type) { + case string: + keyString = typedKey + case int: + keyString = strconv.Itoa(typedKey) + case int64: + // go-yaml will only return an int64 as a key if the system + // architecture is 32-bit and the key's value is between 32-bit + // and 64-bit. Otherwise the key type will simply be int. + keyString = strconv.FormatInt(typedKey, 10) + case float64: + // Stolen from go-yaml to use the same conversion to string as + // the go-yaml library uses to convert float to string when + // Marshaling. + s := strconv.FormatFloat(typedKey, 'g', -1, 32) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + keyString = s + case bool: + if typedKey { + keyString = "true" + } else { + keyString = "false" + } + default: + return nil, fmt.Errorf("Unsupported map key of type: %s, key: %+#v, value: %+#v", + reflect.TypeOf(k), k, v) + } + + // jsonTarget should be a struct or a map. If it's a struct, find + // the field it's going to map to and pass its reflect.Value. If + // it's a map, find the element type of the map and pass the + // reflect.Value created from that type. If it's neither, just pass + // nil - JSON conversion will error for us if it's a real issue. + if jsonTarget != nil { + t := *jsonTarget + if t.Kind() == reflect.Struct { + keyBytes := []byte(keyString) + // Find the field that the JSON library would use. + var f *field + fields := cachedTypeFields(t.Type()) + for i := range fields { + ff := &fields[i] + if bytes.Equal(ff.nameBytes, keyBytes) { + f = ff + break + } + // Do case-insensitive comparison. + if f == nil && ff.equalFold(ff.nameBytes, keyBytes) { + f = ff + } + } + if f != nil { + // Find the reflect.Value of the most preferential + // struct field. + jtf := t.Field(f.index[0]) + strMap[keyString], err = convertToJSONableObject(v, &jtf) + if err != nil { + return nil, err + } + continue + } + } else if t.Kind() == reflect.Map { + // Create a zero value of the map's element type to use as + // the JSON target. + jtv := reflect.Zero(t.Type().Elem()) + strMap[keyString], err = convertToJSONableObject(v, &jtv) + if err != nil { + return nil, err + } + continue + } + } + strMap[keyString], err = convertToJSONableObject(v, nil) + if err != nil { + return nil, err + } + } + return strMap, nil + case []interface{}: + // We need to recurse into arrays in case there are any + // map[interface{}]interface{}'s inside and to convert any + // numbers to strings. + + // If jsonTarget is a slice (which it really should be), find the + // thing it's going to map to. If it's not a slice, just pass nil + // - JSON conversion will error for us if it's a real issue. + var jsonSliceElemValue *reflect.Value + if jsonTarget != nil { + t := *jsonTarget + if t.Kind() == reflect.Slice { + // By default slices point to nil, but we need a reflect.Value + // pointing to a value of the slice type, so we create one here. + ev := reflect.Indirect(reflect.New(t.Type().Elem())) + jsonSliceElemValue = &ev + } + } + + // Make and use a new array. + arr := make([]interface{}, len(typedYAMLObj)) + for i, v := range typedYAMLObj { + arr[i], err = convertToJSONableObject(v, jsonSliceElemValue) + if err != nil { + return nil, err + } + } + return arr, nil + default: + // If the target type is a string and the YAML type is a number, + // convert the YAML type to a string. + if jsonTarget != nil && (*jsonTarget).Kind() == reflect.String { + // Based on my reading of go-yaml, it may return int, int64, + // float64, or uint64. + var s string + switch typedVal := typedYAMLObj.(type) { + case int: + s = strconv.FormatInt(int64(typedVal), 10) + case int64: + s = strconv.FormatInt(typedVal, 10) + case float64: + s = strconv.FormatFloat(typedVal, 'g', -1, 32) + case uint64: + s = strconv.FormatUint(typedVal, 10) + case bool: + if typedVal { + s = "true" + } else { + s = "false" + } + } + if len(s) > 0 { + yamlObj = interface{}(s) + } + } + return yamlObj, nil + } + + return nil, nil +} diff --git a/vendor/github.com/ghodss/yaml/yaml_test.go b/vendor/github.com/ghodss/yaml/yaml_test.go new file mode 100644 index 000000000..0ae0954e9 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/yaml_test.go @@ -0,0 +1,271 @@ +package yaml + +import ( + "fmt" + "math" + "reflect" + "strconv" + "testing" +) + +type MarshalTest struct { + A string + B int64 + // Would like to test float64, but it's not supported in go-yaml. + // (See https://github.com/go-yaml/yaml/issues/83.) + C float32 +} + +func TestMarshal(t *testing.T) { + f32String := strconv.FormatFloat(math.MaxFloat32, 'g', -1, 32) + s := MarshalTest{"a", math.MaxInt64, math.MaxFloat32} + e := []byte(fmt.Sprintf("A: a\nB: %d\nC: %s\n", math.MaxInt64, f32String)) + + y, err := Marshal(s) + if err != nil { + t.Errorf("error marshaling YAML: %v", err) + } + + if !reflect.DeepEqual(y, e) { + t.Errorf("marshal YAML was unsuccessful, expected: %#v, got: %#v", + string(e), string(y)) + } +} + +type UnmarshalString struct { + A string + True string +} + +type UnmarshalStringMap struct { + A map[string]string +} + +type UnmarshalNestedString struct { + A NestedString +} + +type NestedString struct { + A string +} + +type UnmarshalSlice struct { + A []NestedSlice +} + +type NestedSlice struct { + B string + C *string +} + +func TestUnmarshal(t *testing.T) { + y := []byte("a: 1") + s1 := UnmarshalString{} + e1 := UnmarshalString{A: "1"} + unmarshal(t, y, &s1, &e1) + + y = []byte("a: true") + s1 = UnmarshalString{} + e1 = UnmarshalString{A: "true"} + unmarshal(t, y, &s1, &e1) + + y = []byte("true: 1") + s1 = UnmarshalString{} + e1 = UnmarshalString{True: "1"} + unmarshal(t, y, &s1, &e1) + + y = []byte("a:\n a: 1") + s2 := UnmarshalNestedString{} + e2 := UnmarshalNestedString{NestedString{"1"}} + unmarshal(t, y, &s2, &e2) + + y = []byte("a:\n - b: abc\n c: def\n - b: 123\n c: 456\n") + s3 := UnmarshalSlice{} + e3 := UnmarshalSlice{[]NestedSlice{NestedSlice{"abc", strPtr("def")}, NestedSlice{"123", strPtr("456")}}} + unmarshal(t, y, &s3, &e3) + + y = []byte("a:\n b: 1") + s4 := UnmarshalStringMap{} + e4 := UnmarshalStringMap{map[string]string{"b": "1"}} + unmarshal(t, y, &s4, &e4) +} + +func unmarshal(t *testing.T, y []byte, s, e interface{}) { + err := Unmarshal(y, s) + if err != nil { + t.Errorf("error unmarshaling YAML: %v", err) + } + + if !reflect.DeepEqual(s, e) { + t.Errorf("unmarshal YAML was unsuccessful, expected: %+#v, got: %+#v", + e, s) + } +} + +type Case struct { + input string + output string + // By default we test that reversing the output == input. But if there is a + // difference in the reversed output, you can optionally specify it here. + reverse *string +} + +type RunType int + +const ( + RunTypeJSONToYAML RunType = iota + RunTypeYAMLToJSON +) + +func TestJSONToYAML(t *testing.T) { + cases := []Case{ + { + `{"t":"a"}`, + "t: a\n", + nil, + }, { + `{"t":null}`, + "t: null\n", + nil, + }, + } + + runCases(t, RunTypeJSONToYAML, cases) +} + +func TestYAMLToJSON(t *testing.T) { + cases := []Case{ + { + "t: a\n", + `{"t":"a"}`, + nil, + }, { + "t: \n", + `{"t":null}`, + strPtr("t: null\n"), + }, { + "t: null\n", + `{"t":null}`, + nil, + }, { + "1: a\n", + `{"1":"a"}`, + strPtr("\"1\": a\n"), + }, { + "1000000000000000000000000000000000000: a\n", + `{"1e+36":"a"}`, + strPtr("\"1e+36\": a\n"), + }, { + "1e+36: a\n", + `{"1e+36":"a"}`, + strPtr("\"1e+36\": a\n"), + }, { + "\"1e+36\": a\n", + `{"1e+36":"a"}`, + nil, + }, { + "\"1.2\": a\n", + `{"1.2":"a"}`, + nil, + }, { + "- t: a\n", + `[{"t":"a"}]`, + nil, + }, { + "- t: a\n" + + "- t:\n" + + " b: 1\n" + + " c: 2\n", + `[{"t":"a"},{"t":{"b":1,"c":2}}]`, + nil, + }, { + `[{t: a}, {t: {b: 1, c: 2}}]`, + `[{"t":"a"},{"t":{"b":1,"c":2}}]`, + strPtr("- t: a\n" + + "- t:\n" + + " b: 1\n" + + " c: 2\n"), + }, { + "- t: \n", + `[{"t":null}]`, + strPtr("- t: null\n"), + }, { + "- t: null\n", + `[{"t":null}]`, + nil, + }, + } + + // Cases that should produce errors. + _ = []Case{ + { + "~: a", + `{"null":"a"}`, + nil, + }, { + "a: !!binary gIGC\n", + "{\"a\":\"\x80\x81\x82\"}", + nil, + }, + } + + runCases(t, RunTypeYAMLToJSON, cases) +} + +func runCases(t *testing.T, runType RunType, cases []Case) { + var f func([]byte) ([]byte, error) + var invF func([]byte) ([]byte, error) + var msg string + var invMsg string + if runType == RunTypeJSONToYAML { + f = JSONToYAML + invF = YAMLToJSON + msg = "JSON to YAML" + invMsg = "YAML back to JSON" + } else { + f = YAMLToJSON + invF = JSONToYAML + msg = "YAML to JSON" + invMsg = "JSON back to YAML" + } + + for _, c := range cases { + // Convert the string. + t.Logf("converting %s\n", c.input) + output, err := f([]byte(c.input)) + if err != nil { + t.Errorf("Failed to convert %s, input: `%s`, err: %v", msg, c.input, err) + } + + // Check it against the expected output. + if string(output) != c.output { + t.Errorf("Failed to convert %s, input: `%s`, expected `%s`, got `%s`", + msg, c.input, c.output, string(output)) + } + + // Set the string that we will compare the reversed output to. + reverse := c.input + // If a special reverse string was specified, use that instead. + if c.reverse != nil { + reverse = *c.reverse + } + + // Reverse the output. + input, err := invF(output) + if err != nil { + t.Errorf("Failed to convert %s, input: `%s`, err: %v", invMsg, string(output), err) + } + + // Check the reverse is equal to the input (or to *c.reverse). + if string(input) != reverse { + t.Errorf("Failed to convert %s, input: `%s`, expected `%s`, got `%s`", + invMsg, string(output), reverse, string(input)) + } + } + +} + +// To be able to easily fill in the *Case.reverse string above. +func strPtr(s string) *string { + return &s +} diff --git a/vendor/github.com/go-openapi/jsonreference/.drone.sec b/vendor/github.com/go-openapi/jsonreference/.drone.sec new file mode 100644 index 000000000..5ff54fb9c --- /dev/null +++ b/vendor/github.com/go-openapi/jsonreference/.drone.sec @@ -0,0 +1 @@ +eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.Xe40Wx6g5Y-iN0JVMhKyFfubtOId3zAVE564szw_yYGzFNhc_cGZO9F3BtAcJ55CfHG9C_ozn9dpnUDl_zYZoy_6cPCq13Ekb95z8NAC3ekDtbAATsc9HZwRNwI7UfkhstdwxljEouGB01qoLcUn6lFutrou-Ho21COHeDb2caemnPSA-rEAnXkOiBFu0RQ1MIwMygzvHXIHHYNpNwAtXqmiggM10miSjqBM3JmRPxCi7VK6_Rxij5p6LlhmK1BDi8Y6oBh-9BX3--5GAJeWZ6Vof5TnP-Enioia18j8c8KFtfY4q0y6Ednjb-AarLZ12gj695ppkBNJUdTJQmwGwA.fVcz_RiLrUB5fgMS.rjWllDYC6m_NB-ket_LizNEy9mlJ27odBTZQcMKaUqqXZBtWUCmPrOoMXGq-_cc-c7chg7D-WMh9SPQ23pV0P-DY-jsDpbOqHG2STOMEfW9ZREoaOLJXQaWcuBldLjRyWFcq0HGj97LgE6szD1Zlou3bmdHS_Q-U9Up9YQ_8_YnDcESD_cj1w5FZom7HjchKJFeGjQjfDQpoCKCQNMJaavUqy9jHQEeQ_uVocSrETg3GpewDcUF2tuv8uGq7ZZWu7Vl8zmnY1MFTynaGBWzTCSRmCkAXjcsaUheDP_NT5D7k-xUS6LwtqEUiXAXV07SNFraorFj5lnBQZRDlZMYcA3NWR6zHiOxekR9LBYPofst6w1rIqUchj_5m1tDpVTBMPir1eAaFcnJtPgo4ch17OF-kmcmQGLhJI3U7n8wv4sTrmP1dewtRRKrvlJe5r3_6eDiK4xZ8K0rnK1D4g6zuQqU1gA8KaU7pmZkKpFx3Bew4v-6DH32YwQBvAI7Lbb8afou9WsCNB_iswz5XGimP4bifiJRwpWBEz9VGhZFdiw-hZpYWgbxzVb5gtqfTDLIvpbLDmFz1vge16uUQHHVFpo1pSozyr7A60X8qsh9pmmO3RcJ-ZGZBWqiRC-Kl5ejz7WQ.LFoK4Ibi11B2lWQ5WcPSag \ No newline at end of file diff --git a/vendor/github.com/go-openapi/jsonreference/.drone.yml b/vendor/github.com/go-openapi/jsonreference/.drone.yml new file mode 100644 index 000000000..157ffe579 --- /dev/null +++ b/vendor/github.com/go-openapi/jsonreference/.drone.yml @@ -0,0 +1,33 @@ +clone: + path: github.com/go-openapi/jsonreference + +matrix: + GO_VERSION: + - "1.6" + +build: + integration: + image: golang:$$GO_VERSION + pull: true + commands: + - go get -u github.com/stretchr/testify/assert + - go get -u github.com/PuerkitoBio/purell + - go get -u github.com/go-openapi/jsonpointer + - go test -race + - go test -v -cover -coverprofile=coverage.out -covermode=count ./... + +notify: + slack: + channel: bots + webhook_url: $$SLACK_URL + username: drone + +publish: + coverage: + server: https://coverage.vmware.run + token: $$GITHUB_TOKEN + # threshold: 70 + # must_increase: true + when: + matrix: + GO_VERSION: "1.6" diff --git a/vendor/github.com/go-openapi/jsonreference/.pullapprove.yml b/vendor/github.com/go-openapi/jsonreference/.pullapprove.yml new file mode 100644 index 000000000..5ec183e22 --- /dev/null +++ b/vendor/github.com/go-openapi/jsonreference/.pullapprove.yml @@ -0,0 +1,13 @@ +approve_by_comment: true +approve_regex: '^(:shipit:|:\+1:|\+1|LGTM|lgtm|Approved)' +reject_regex: ^[Rr]ejected +reset_on_push: false +reviewers: + members: + - casualjim + - chancez + - frapposelli + - vburenin + - pytlesk4 + name: pullapprove + required: 1 diff --git a/vendor/github.com/go-openapi/jsonreference/.travis.yml b/vendor/github.com/go-openapi/jsonreference/.travis.yml deleted file mode 100644 index 5b31a1b3e..000000000 --- a/vendor/github.com/go-openapi/jsonreference/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go -go: -- 1.7 -install: -- go get -u github.com/stretchr/testify/assert -- go get -u github.com/PuerkitoBio/purell -- go get -u github.com/go-openapi/jsonpointer -script: -- go test -v -race -cover -coverprofile=coverage.txt -covermode=atomic ./... -after_success: -- bash <(curl -s https://codecov.io/bash) -notifications: - slack: - secure: OpQG/36F7DSF00HLm9WZMhyqFCYYyYTsVDObW226cWiR8PWYiNfLZiSEvIzT1Gx4dDjhigKTIqcLhG34CkL5iNXDjm9Yyo2RYhQPlK8NErNqUEXuBqn4RqYHW48VGhEhOyDd4Ei0E2FN5ZbgpvHgtpkdZ6XDi64r3Ac89isP9aPHXQTuv2Jog6b4/OKKiUTftLcTIst0p4Cp3gqOJWf1wnoj+IadWiECNVQT6zb47IYjtyw6+uV8iUjTzdKcRB6Zc6b4Dq7JAg1Zd7Jfxkql3hlKp4PNlRf9Cy7y5iA3G7MLyg3FcPX5z2kmcyPt2jOTRMBWUJ5zIQpOxizAcN8WsT3WWBL5KbuYK6k0PzujrIDLqdxGpNmjkkMfDBT9cKmZpm2FdW+oZgPFJP+oKmAo4u4KJz/vjiPTXgQlN5bmrLuRMCp+AwC5wkIohTqWZVPE2TK6ZSnMYcg/W39s+RP/9mJoyryAvPSpBOLTI+biCgaUCTOAZxNTWpMFc3tPYntc41WWkdKcooZ9JA5DwfcaVFyTGQ3YXz+HvX6G1z/gW0Q/A4dBi9mj2iE1xm7tRTT+4VQ2AXFvSEI1HJpfPgYnwAtwOD1v3Qm2EUHk9sCdtEDR4wVGEPIVn44GnwFMnGKx9JWppMPYwFu3SVDdHt+E+LOlhZUply11Aa+IVrT2KUQ= diff --git a/vendor/github.com/go-openapi/jsonreference/README.md b/vendor/github.com/go-openapi/jsonreference/README.md index 66345f4c6..5f7881274 100644 --- a/vendor/github.com/go-openapi/jsonreference/README.md +++ b/vendor/github.com/go-openapi/jsonreference/README.md @@ -1,4 +1,4 @@ -# gojsonreference [![Build Status](https://travis-ci.org/go-openapi/jsonreference.svg?branch=master)](https://travis-ci.org/go-openapi/jsonreference) [![codecov](https://codecov.io/gh/go-openapi/jsonreference/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/jsonreference) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) +# gojsonreference [![Build Status](https://ci.vmware.run/api/badges/go-openapi/jsonreference/status.svg)](https://ci.vmware.run/go-openapi/jsonreference) [![Coverage](https://coverage.vmware.run/badges/go-openapi/jsonreference/coverage.svg)](https://coverage.vmware.run/go-openapi/jsonreference) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) [![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/jsonreference/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/jsonreference?status.svg)](http://godoc.org/github.com/go-openapi/jsonreference) An implementation of JSON Reference - Go language @@ -7,7 +7,7 @@ An implementation of JSON Reference - Go language Work in progress ( 90% done ) ## Dependencies -https://github.com/go-openapi/jsonpointer +https://github.com/xeipuuv/gojsonpointer ## References http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-07 diff --git a/vendor/github.com/gogo/protobuf/.travis.yml b/vendor/github.com/gogo/protobuf/.travis.yml index 31ebd3150..5ac9a939e 100644 --- a/vendor/github.com/gogo/protobuf/.travis.yml +++ b/vendor/github.com/gogo/protobuf/.travis.yml @@ -1,7 +1,7 @@ env: - PROTOBUF_VERSION=2.6.1 - PROTOBUF_VERSION=3.0.2 - - PROTOBUF_VERSION=3.1.0 + - PROTOBUF_VERSION=3.2.0 before_install: - ./install-protobuf.sh @@ -10,7 +10,7 @@ before_install: script: - PATH=/home/travis/bin:$PATH make buildserverall - echo $TRAVIS_GO_VERSION - - if [ "$TRAVIS_GO_VERSION" == 1.8 ] && [[ "$PROTOBUF_VERSION" == 3.1.0 ]]; then ! git status --porcelain | read || (git status; git diff; exit 1); fi + - if [ "$TRAVIS_GO_VERSION" == 1.8 ] && [[ "$PROTOBUF_VERSION" == 3.2.0 ]]; then ! git status --porcelain | read || (git status; git diff; exit 1); fi language: go diff --git a/vendor/github.com/gogo/protobuf/Readme.md b/vendor/github.com/gogo/protobuf/Readme.md index d31c13f83..e97bb1ba3 100644 --- a/vendor/github.com/gogo/protobuf/Readme.md +++ b/vendor/github.com/gogo/protobuf/Readme.md @@ -59,10 +59,10 @@ After that you can choose: ### Installation -To install it, you must first have Go (at least version 1.6.3) installed (see [http://golang.org/doc/install](http://golang.org/doc/install)). Go 1.7.1 and 1.8 is continuously tested. +To install it, you must first have Go (at least version 1.6.3) installed (see [http://golang.org/doc/install](http://golang.org/doc/install)). Go 1.7.1 and 1.8 are continuously tested. Next, install the standard protocol buffer implementation from [https://github.com/google/protobuf](https://github.com/google/protobuf). -Most versions from 2.3.1 should not give any problems, but 2.6.1, 3.0.2 and 3.1.0 are continuously tested. +Most versions from 2.3.1 should not give any problems, but 2.6.1, 3.0.2 and 3.2.0 are continuously tested. ### Speed diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/any.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/any.proto index 8152a34e4..7eaf2291d 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/any.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/any.proto @@ -37,7 +37,6 @@ option go_package = "types"; option java_package = "com.google.protobuf"; option java_outer_classname = "AnyProto"; option java_multiple_files = true; -option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // `Any` contains an arbitrary serialized protocol buffer message along with a diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/compiler/plugin.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/compiler/plugin.proto index acaee1f49..6e4da2c19 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/compiler/plugin.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/compiler/plugin.proto @@ -53,6 +53,16 @@ option go_package = "plugin_go"; import "google/protobuf/descriptor.proto"; +// The version number of protocol compiler. +message Version { + optional int32 major = 1; + optional int32 minor = 2; + optional int32 patch = 3; + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + optional string suffix = 4; +} + // An encoded CodeGeneratorRequest is written to the plugin's stdin. message CodeGeneratorRequest { // The .proto files that were explicitly listed on the command-line. The @@ -75,6 +85,9 @@ message CodeGeneratorRequest { // is not similarly optimized on protoc's end -- it will store all fields in // memory at once before sending them to the plugin. repeated FileDescriptorProto proto_file = 15; + + // The version number of protocol compiler. + optional Version compiler_version = 3; } // The plugin writes an encoded CodeGeneratorResponse to stdout. diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/descriptor.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/descriptor.proto index 9aefdef2f..2cc496b57 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/descriptor.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/descriptor.proto @@ -45,7 +45,6 @@ option java_package = "com.google.protobuf"; option java_outer_classname = "DescriptorProtos"; option csharp_namespace = "Google.Protobuf.Reflection"; option objc_class_prefix = "GPB"; -option java_generate_equals_and_hash = true; // descriptor.proto must be optimized for speed because reflection-based // algorithms don't work during bootstrapping. @@ -140,7 +139,11 @@ message FieldDescriptorProto { TYPE_FIXED32 = 7; TYPE_BOOL = 8; TYPE_STRING = 9; - TYPE_GROUP = 10; // Tag-delimited aggregate. + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. + TYPE_GROUP = 10; TYPE_MESSAGE = 11; // Length-delimited aggregate. // New in version 2. @@ -158,7 +161,6 @@ message FieldDescriptorProto { LABEL_OPTIONAL = 1; LABEL_REQUIRED = 2; LABEL_REPEATED = 3; - // TODO(sanjay): Should we add LABEL_MAP? }; optional string name = 1; @@ -306,19 +308,8 @@ message FileOptions { // top-level extensions defined in the file. optional bool java_multiple_files = 10 [default=false]; - // If set true, then the Java code generator will generate equals() and - // hashCode() methods for all messages defined in the .proto file. - // This increases generated code size, potentially substantially for large - // protos, which may harm a memory-constrained application. - // - In the full runtime this is a speed optimization, as the - // AbstractMessage base class includes reflection-based implementations of - // these methods. - // - In the lite runtime, setting this option changes the semantics of - // equals() and hashCode() to more closely match those of the full runtime; - // the generated methods compute their results based on field values rather - // than object identity. (Implementations should not assume that hashcodes - // will be consistent across runtimes or versions of the protocol compiler.) - optional bool java_generate_equals_and_hash = 20 [default=false]; + // This option does nothing. + optional bool java_generate_equals_and_hash = 20 [deprecated=true]; // 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 @@ -379,6 +370,12 @@ message FileOptions { // Namespace for generated classes; defaults to the package. optional string csharp_namespace = 37; + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + optional string swift_prefix = 39; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -443,6 +440,9 @@ message MessageOptions { // parser. optional bool map_entry = 7; + //reserved 8; // javalite_serializable + + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -471,7 +471,6 @@ message FieldOptions { // false will avoid using packed encoding. optional bool packed = 2; - // The jstype option determines the JavaScript type used for values of the // field. The option is permitted only for 64 bit integral and fixed types // (int64, uint64, sint64, fixed64, sfixed64). By default these types are @@ -512,7 +511,7 @@ message FieldOptions { // // // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outher message + // a lazy sub-message. That is, calling IsInitialized() on the outer message // may return true even if the inner message has missing required fields. // This is necessary because otherwise the inner message would have to be // parsed in order to perform the check, defeating the purpose of lazy @@ -538,6 +537,8 @@ message FieldOptions { // Clients can define custom options in extensions of this message. See above. extensions 1000 to max; + + //reserved 4; // removed jtype } message OneofOptions { @@ -560,6 +561,7 @@ message EnumOptions { // is a formalization for deprecating enums. optional bool deprecated = 3 [default=false]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; @@ -614,6 +616,17 @@ message MethodOptions { // this is a formalization for deprecating methods. optional bool deprecated = 33 [default=false]; + // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + // or neither? HTTP based RPC implementation may choose GET verb for safe + // methods, and PUT verb for idempotent methods instead of the default POST. + enum IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = 0; + NO_SIDE_EFFECTS = 1; // implies idempotent + IDEMPOTENT = 2; // idempotent, but may have side effects + } + optional IdempotencyLevel idempotency_level = + 34 [default=IDEMPOTENCY_UNKNOWN]; + // The parser stores options it doesn't recognize here. See above. repeated UninterpretedOption uninterpreted_option = 999; diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/duration.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/duration.proto index c4359dbd2..318922b79 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/duration.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/duration.proto @@ -33,11 +33,11 @@ syntax = "proto3"; package google.protobuf; option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; option go_package = "types"; option java_package = "com.google.protobuf"; option java_outer_classname = "DurationProto"; option java_multiple_files = true; -option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // A Duration represents a signed, fixed-length span of time represented @@ -81,6 +81,12 @@ option objc_class_prefix = "GPB"; // end.nanos -= 1000000000; // } // +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// // message Duration { diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/empty.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/empty.proto index 61a574b6a..6057c8522 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/empty.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/empty.proto @@ -37,7 +37,6 @@ option go_package = "types"; option java_package = "com.google.protobuf"; option java_outer_classname = "EmptyProto"; option java_multiple_files = true; -option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; option cc_enable_arenas = true; diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/field_mask.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/field_mask.proto index fd252889a..994af79f0 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/field_mask.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/field_mask.proto @@ -32,12 +32,12 @@ syntax = "proto3"; package google.protobuf; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; option go_package = "types"; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; option java_package = "com.google.protobuf"; option java_outer_classname = "FieldMaskProto"; option java_multiple_files = true; option objc_class_prefix = "GPB"; -option java_generate_equals_and_hash = true; +option go_package = "types"; // `FieldMask` represents a set of symbolic field paths, for example: // @@ -82,7 +82,7 @@ option java_generate_equals_and_hash = true; // } // // A repeated field is not allowed except at the last position of a -// field mask. +// paths string. // // If a FieldMask object is not present in a get operation, the // operation applies to all fields (as if a FieldMask of all fields @@ -109,8 +109,8 @@ option java_generate_equals_and_hash = true; // // If a repeated field is specified for an update operation, the existing // repeated values in the target resource will be overwritten by the new values. -// Note that a repeated field is only allowed in the last position of a field -// mask. +// Note that a repeated field is only allowed in the last position of a `paths` +// string. // // If a sub-message is specified in the last position of the field mask for an // update operation, then the existing sub-message in the target resource is diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/struct.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/struct.proto index 27fdb9188..4f78641fa 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/struct.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/struct.proto @@ -33,11 +33,11 @@ syntax = "proto3"; package google.protobuf; option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; option go_package = "types"; option java_package = "com.google.protobuf"; option java_outer_classname = "StructProto"; option java_multiple_files = true; -option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/timestamp.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/timestamp.proto index c85024a42..c544c83ee 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/timestamp.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/timestamp.proto @@ -38,7 +38,6 @@ option go_package = "types"; option java_package = "com.google.protobuf"; option java_outer_classname = "TimestampProto"; option java_multiple_files = true; -option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // A Timestamp represents a point in time independent of any time zone @@ -90,16 +89,14 @@ option objc_class_prefix = "GPB"; // // Example 5: Compute Timestamp from current time in Python. // -// now = time.time() -// seconds = int(now) -// nanos = int((now - seconds) * 10**9) -// timestamp = Timestamp(seconds=seconds, nanos=nanos) +// timestamp = Timestamp() +// timestamp.GetCurrentTime() // // message Timestamp { // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. int64 seconds = 1; diff --git a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/wrappers.proto b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/wrappers.proto index f685dc082..c5632e5ca 100644 --- a/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/wrappers.proto +++ b/vendor/github.com/gogo/protobuf/protobuf/google/protobuf/wrappers.proto @@ -43,7 +43,6 @@ option go_package = "types"; option java_package = "com.google.protobuf"; option java_outer_classname = "WrappersProto"; option java_multiple_files = true; -option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // Wrapper message for `double`. diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go index 1427b0358..e2703901b 100644 --- a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go +++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go @@ -65,6 +65,10 @@ const ( FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7 FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8 FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9 + // Tag-delimited aggregate. + // Group type is deprecated and not supported in proto3. However, Proto3 + // implementations should still be able to parse the group wire format and + // treat group fields as unknown fields. FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10 FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // New in version 2. @@ -301,6 +305,48 @@ func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptorDescriptor, []int{11, 1} } +// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, +// or neither? HTTP based RPC implementation may choose GET verb for safe +// methods, and PUT verb for idempotent methods instead of the default POST. +type MethodOptions_IdempotencyLevel int32 + +const ( + MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0 + MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1 + MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2 +) + +var MethodOptions_IdempotencyLevel_name = map[int32]string{ + 0: "IDEMPOTENCY_UNKNOWN", + 1: "NO_SIDE_EFFECTS", + 2: "IDEMPOTENT", +} +var MethodOptions_IdempotencyLevel_value = map[string]int32{ + "IDEMPOTENCY_UNKNOWN": 0, + "NO_SIDE_EFFECTS": 1, + "IDEMPOTENT": 2, +} + +func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { + p := new(MethodOptions_IdempotencyLevel) + *p = x + return p +} +func (x MethodOptions_IdempotencyLevel) String() string { + return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x)) +} +func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel") + if err != nil { + return err + } + *x = MethodOptions_IdempotencyLevel(value) + return nil +} +func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { + return fileDescriptorDescriptor, []int{16, 0} +} + // The protocol compiler can output a FileDescriptorSet containing the .proto // files it parses. type FileDescriptorSet struct { @@ -910,19 +956,8 @@ type FileOptions struct { // generated to contain the file's getDescriptor() method as well as any // top-level extensions defined in the file. JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"` - // If set true, then the Java code generator will generate equals() and - // hashCode() methods for all messages defined in the .proto file. - // This increases generated code size, potentially substantially for large - // protos, which may harm a memory-constrained application. - // - In the full runtime this is a speed optimization, as the - // AbstractMessage base class includes reflection-based implementations of - // these methods. - // - In the lite runtime, setting this option changes the semantics of - // equals() and hashCode() to more closely match those of the full runtime; - // the generated methods compute their results based on field values rather - // than object identity. (Implementations should not assume that hashcodes - // will be consistent across runtimes or versions of the protocol compiler.) - JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash,def=0" json:"java_generate_equals_and_hash,omitempty"` + // This option does nothing. + 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. @@ -963,6 +998,11 @@ type FileOptions struct { ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"` // Namespace for generated classes; defaults to the package. CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"` + // By default Swift generators will take the proto package and CamelCase it + // replacing '.' with underscore and use that to prefix the types/symbols + // defined. When this options is provided, they will use this value instead + // to prefix the types/symbols defined. + SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,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"` proto.XXX_InternalExtensions `json:"-"` @@ -983,7 +1023,6 @@ func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange { } const Default_FileOptions_JavaMultipleFiles bool = false -const Default_FileOptions_JavaGenerateEqualsAndHash bool = false const Default_FileOptions_JavaStringCheckUtf8 bool = false const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED const Default_FileOptions_CcGenericServices bool = false @@ -1017,7 +1056,7 @@ func (m *FileOptions) GetJavaGenerateEqualsAndHash() bool { if m != nil && m.JavaGenerateEqualsAndHash != nil { return *m.JavaGenerateEqualsAndHash } - return Default_FileOptions_JavaGenerateEqualsAndHash + return false } func (m *FileOptions) GetJavaStringCheckUtf8() bool { @@ -1090,6 +1129,13 @@ func (m *FileOptions) GetCsharpNamespace() string { return "" } +func (m *FileOptions) GetSwiftPrefix() string { + if m != nil && m.SwiftPrefix != nil { + return *m.SwiftPrefix + } + return "" +} + func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1247,7 +1293,7 @@ type FieldOptions struct { // // // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outher message + // a lazy sub-message. That is, calling IsInitialized() on the outer message // may return true even if the inner message has missing required fields. // This is necessary because otherwise the inner message would have to be // parsed in order to perform the check, defeating the purpose of lazy @@ -1503,7 +1549,8 @@ type MethodOptions struct { // Depending on the target platform, this can emit Deprecated annotations // for the method, or it will be completely ignored; in the very least, // this is a formalization for deprecating methods. - Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` + Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` + IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,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"` proto.XXX_InternalExtensions `json:"-"` @@ -1524,6 +1571,7 @@ func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange { } const Default_MethodOptions_Deprecated bool = false +const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN func (m *MethodOptions) GetDeprecated() bool { if m != nil && m.Deprecated != nil { @@ -1532,6 +1580,13 @@ func (m *MethodOptions) GetDeprecated() bool { return Default_MethodOptions_Deprecated } +func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel { + if m != nil && m.IdempotencyLevel != nil { + return *m.IdempotencyLevel + } + return Default_MethodOptions_IdempotencyLevel +} + func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1936,153 +1991,160 @@ func init() { proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) + proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) } func init() { proto.RegisterFile("descriptor.proto", fileDescriptorDescriptor) } var fileDescriptorDescriptor = []byte{ - // 2273 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, - 0x15, 0x5f, 0xea, 0xcb, 0xd2, 0x93, 0x2c, 0x8f, 0xc7, 0xde, 0x84, 0x71, 0x36, 0x1b, 0x47, 0x9b, - 0x34, 0x4e, 0xd2, 0x3a, 0x0b, 0xe7, 0x63, 0xb3, 0xde, 0x62, 0x0b, 0x59, 0x62, 0xbc, 0x0a, 0x64, - 0x4b, 0xa5, 0xec, 0x36, 0xbb, 0x3d, 0x10, 0x63, 0x72, 0x24, 0x33, 0xa1, 0x86, 0x2c, 0x49, 0x25, - 0xf1, 0x9e, 0x02, 0xf4, 0x54, 0xf4, 0x1f, 0x28, 0xda, 0xa2, 0x28, 0xf6, 0xb2, 0x40, 0xff, 0x80, - 0x1e, 0x7a, 0xef, 0xb5, 0x40, 0xef, 0x3d, 0x16, 0x68, 0xff, 0x83, 0x5e, 0x8b, 0x99, 0x21, 0x29, - 0xea, 0x6b, 0xe3, 0x2e, 0xb0, 0x1f, 0x27, 0x6b, 0x7e, 0xef, 0xf7, 0x1e, 0xdf, 0xbc, 0x79, 0x7c, - 0xef, 0x71, 0x0c, 0xc8, 0xa2, 0x81, 0xe9, 0xdb, 0x5e, 0xe8, 0xfa, 0xdb, 0x9e, 0xef, 0x86, 0x2e, - 0x5e, 0x19, 0xb8, 0xee, 0xc0, 0xa1, 0x72, 0x75, 0x32, 0xea, 0xd7, 0x0e, 0x60, 0xf5, 0xb1, 0xed, - 0xd0, 0x66, 0x42, 0xec, 0xd1, 0x10, 0x3f, 0x82, 0x5c, 0xdf, 0x76, 0xa8, 0xaa, 0x6c, 0x66, 0xb7, - 0xca, 0x3b, 0xd7, 0xb7, 0xa7, 0x94, 0xb6, 0x27, 0x35, 0xba, 0x1c, 0xd6, 0x85, 0x46, 0xed, 0x5f, - 0x39, 0x58, 0x9b, 0x23, 0xc5, 0x18, 0x72, 0x8c, 0x0c, 0xb9, 0x45, 0x65, 0xab, 0xa4, 0x8b, 0xdf, - 0x58, 0x85, 0x25, 0x8f, 0x98, 0xcf, 0xc9, 0x80, 0xaa, 0x19, 0x01, 0xc7, 0x4b, 0xfc, 0x2e, 0x80, - 0x45, 0x3d, 0xca, 0x2c, 0xca, 0xcc, 0x33, 0x35, 0xbb, 0x99, 0xdd, 0x2a, 0xe9, 0x29, 0x04, 0xdf, - 0x81, 0x55, 0x6f, 0x74, 0xe2, 0xd8, 0xa6, 0x91, 0xa2, 0xc1, 0x66, 0x76, 0x2b, 0xaf, 0x23, 0x29, - 0x68, 0x8e, 0xc9, 0x37, 0x61, 0xe5, 0x25, 0x25, 0xcf, 0xd3, 0xd4, 0xb2, 0xa0, 0x56, 0x39, 0x9c, - 0x22, 0x36, 0xa0, 0x32, 0xa4, 0x41, 0x40, 0x06, 0xd4, 0x08, 0xcf, 0x3c, 0xaa, 0xe6, 0xc4, 0xee, - 0x37, 0x67, 0x76, 0x3f, 0xbd, 0xf3, 0x72, 0xa4, 0x75, 0x74, 0xe6, 0x51, 0x5c, 0x87, 0x12, 0x65, - 0xa3, 0xa1, 0xb4, 0x90, 0x5f, 0x10, 0x3f, 0x8d, 0x8d, 0x86, 0xd3, 0x56, 0x8a, 0x5c, 0x2d, 0x32, - 0xb1, 0x14, 0x50, 0xff, 0x85, 0x6d, 0x52, 0xb5, 0x20, 0x0c, 0xdc, 0x9c, 0x31, 0xd0, 0x93, 0xf2, - 0x69, 0x1b, 0xb1, 0x1e, 0x6e, 0x40, 0x89, 0xbe, 0x0a, 0x29, 0x0b, 0x6c, 0x97, 0xa9, 0x4b, 0xc2, - 0xc8, 0x8d, 0x39, 0xa7, 0x48, 0x1d, 0x6b, 0xda, 0xc4, 0x58, 0x0f, 0x3f, 0x84, 0x25, 0xd7, 0x0b, - 0x6d, 0x97, 0x05, 0x6a, 0x71, 0x53, 0xd9, 0x2a, 0xef, 0xbc, 0x33, 0x37, 0x11, 0x3a, 0x92, 0xa3, - 0xc7, 0x64, 0xdc, 0x02, 0x14, 0xb8, 0x23, 0xdf, 0xa4, 0x86, 0xe9, 0x5a, 0xd4, 0xb0, 0x59, 0xdf, - 0x55, 0x4b, 0xc2, 0xc0, 0xd5, 0xd9, 0x8d, 0x08, 0x62, 0xc3, 0xb5, 0x68, 0x8b, 0xf5, 0x5d, 0xbd, - 0x1a, 0x4c, 0xac, 0xf1, 0x05, 0x28, 0x04, 0x67, 0x2c, 0x24, 0xaf, 0xd4, 0x8a, 0xc8, 0x90, 0x68, - 0x55, 0xfb, 0x6f, 0x1e, 0x56, 0xce, 0x93, 0x62, 0x1f, 0x41, 0xbe, 0xcf, 0x77, 0xa9, 0x66, 0xfe, - 0x9f, 0x18, 0x48, 0x9d, 0xc9, 0x20, 0x16, 0xbe, 0x66, 0x10, 0xeb, 0x50, 0x66, 0x34, 0x08, 0xa9, - 0x25, 0x33, 0x22, 0x7b, 0xce, 0x9c, 0x02, 0xa9, 0x34, 0x9b, 0x52, 0xb9, 0xaf, 0x95, 0x52, 0x4f, - 0x61, 0x25, 0x71, 0xc9, 0xf0, 0x09, 0x1b, 0xc4, 0xb9, 0x79, 0xf7, 0x4d, 0x9e, 0x6c, 0x6b, 0xb1, - 0x9e, 0xce, 0xd5, 0xf4, 0x2a, 0x9d, 0x58, 0xe3, 0x26, 0x80, 0xcb, 0xa8, 0xdb, 0x37, 0x2c, 0x6a, - 0x3a, 0x6a, 0x71, 0x41, 0x94, 0x3a, 0x9c, 0x32, 0x13, 0x25, 0x57, 0xa2, 0xa6, 0x83, 0x3f, 0x1c, - 0xa7, 0xda, 0xd2, 0x82, 0x4c, 0x39, 0x90, 0x2f, 0xd9, 0x4c, 0xb6, 0x1d, 0x43, 0xd5, 0xa7, 0x3c, - 0xef, 0xa9, 0x15, 0xed, 0xac, 0x24, 0x9c, 0xd8, 0x7e, 0xe3, 0xce, 0xf4, 0x48, 0x4d, 0x6e, 0x6c, - 0xd9, 0x4f, 0x2f, 0xf1, 0x7b, 0x90, 0x00, 0x86, 0x48, 0x2b, 0x10, 0x55, 0xa8, 0x12, 0x83, 0x87, - 0x64, 0x48, 0x37, 0x1e, 0x41, 0x75, 0x32, 0x3c, 0x78, 0x1d, 0xf2, 0x41, 0x48, 0xfc, 0x50, 0x64, - 0x61, 0x5e, 0x97, 0x0b, 0x8c, 0x20, 0x4b, 0x99, 0x25, 0xaa, 0x5c, 0x5e, 0xe7, 0x3f, 0x37, 0x3e, - 0x80, 0xe5, 0x89, 0xc7, 0x9f, 0x57, 0xb1, 0xf6, 0xdb, 0x02, 0xac, 0xcf, 0xcb, 0xb9, 0xb9, 0xe9, - 0x7f, 0x01, 0x0a, 0x6c, 0x34, 0x3c, 0xa1, 0xbe, 0x9a, 0x15, 0x16, 0xa2, 0x15, 0xae, 0x43, 0xde, - 0x21, 0x27, 0xd4, 0x51, 0x73, 0x9b, 0xca, 0x56, 0x75, 0xe7, 0xce, 0xb9, 0xb2, 0x7a, 0xbb, 0xcd, - 0x55, 0x74, 0xa9, 0x89, 0x3f, 0x86, 0x5c, 0x54, 0xe2, 0xb8, 0x85, 0xdb, 0xe7, 0xb3, 0xc0, 0x73, - 0x51, 0x17, 0x7a, 0xf8, 0x32, 0x94, 0xf8, 0x5f, 0x19, 0xdb, 0x82, 0xf0, 0xb9, 0xc8, 0x01, 0x1e, - 0x57, 0xbc, 0x01, 0x45, 0x91, 0x66, 0x16, 0x8d, 0x5b, 0x43, 0xb2, 0xe6, 0x07, 0x63, 0xd1, 0x3e, - 0x19, 0x39, 0xa1, 0xf1, 0x82, 0x38, 0x23, 0x2a, 0x12, 0xa6, 0xa4, 0x57, 0x22, 0xf0, 0x67, 0x1c, - 0xc3, 0x57, 0xa1, 0x2c, 0xb3, 0xd2, 0x66, 0x16, 0x7d, 0x25, 0xaa, 0x4f, 0x5e, 0x97, 0x89, 0xda, - 0xe2, 0x08, 0x7f, 0xfc, 0xb3, 0xc0, 0x65, 0xf1, 0xd1, 0x8a, 0x47, 0x70, 0x40, 0x3c, 0xfe, 0x83, - 0xe9, 0xc2, 0x77, 0x65, 0xfe, 0xf6, 0xa6, 0x73, 0xb1, 0xf6, 0x97, 0x0c, 0xe4, 0xc4, 0xfb, 0xb6, - 0x02, 0xe5, 0xa3, 0x4f, 0xbb, 0x9a, 0xd1, 0xec, 0x1c, 0xef, 0xb5, 0x35, 0xa4, 0xe0, 0x2a, 0x80, - 0x00, 0x1e, 0xb7, 0x3b, 0xf5, 0x23, 0x94, 0x49, 0xd6, 0xad, 0xc3, 0xa3, 0x87, 0xf7, 0x51, 0x36, - 0x51, 0x38, 0x96, 0x40, 0x2e, 0x4d, 0xb8, 0xb7, 0x83, 0xf2, 0x18, 0x41, 0x45, 0x1a, 0x68, 0x3d, - 0xd5, 0x9a, 0x0f, 0xef, 0xa3, 0xc2, 0x24, 0x72, 0x6f, 0x07, 0x2d, 0xe1, 0x65, 0x28, 0x09, 0x64, - 0xaf, 0xd3, 0x69, 0xa3, 0x62, 0x62, 0xb3, 0x77, 0xa4, 0xb7, 0x0e, 0xf7, 0x51, 0x29, 0xb1, 0xb9, - 0xaf, 0x77, 0x8e, 0xbb, 0x08, 0x12, 0x0b, 0x07, 0x5a, 0xaf, 0x57, 0xdf, 0xd7, 0x50, 0x39, 0x61, - 0xec, 0x7d, 0x7a, 0xa4, 0xf5, 0x50, 0x65, 0xc2, 0xad, 0x7b, 0x3b, 0x68, 0x39, 0x79, 0x84, 0x76, - 0x78, 0x7c, 0x80, 0xaa, 0x78, 0x15, 0x96, 0xe5, 0x23, 0x62, 0x27, 0x56, 0xa6, 0xa0, 0x87, 0xf7, - 0x11, 0x1a, 0x3b, 0x22, 0xad, 0xac, 0x4e, 0x00, 0x0f, 0xef, 0x23, 0x5c, 0x6b, 0x40, 0x5e, 0x64, - 0x17, 0xc6, 0x50, 0x6d, 0xd7, 0xf7, 0xb4, 0xb6, 0xd1, 0xe9, 0x1e, 0xb5, 0x3a, 0x87, 0xf5, 0x36, - 0x52, 0xc6, 0x98, 0xae, 0xfd, 0xf4, 0xb8, 0xa5, 0x6b, 0x4d, 0x94, 0x49, 0x63, 0x5d, 0xad, 0x7e, - 0xa4, 0x35, 0x51, 0xb6, 0x66, 0xc2, 0xfa, 0xbc, 0x3a, 0x33, 0xf7, 0xcd, 0x48, 0x1d, 0x71, 0x66, - 0xc1, 0x11, 0x0b, 0x5b, 0x33, 0x47, 0xfc, 0x85, 0x02, 0x6b, 0x73, 0x6a, 0xed, 0xdc, 0x87, 0xfc, - 0x04, 0xf2, 0x32, 0x45, 0x65, 0xf7, 0xb9, 0x35, 0xb7, 0x68, 0x8b, 0x84, 0x9d, 0xe9, 0x40, 0x42, - 0x2f, 0xdd, 0x81, 0xb3, 0x0b, 0x3a, 0x30, 0x37, 0x31, 0xe3, 0xe4, 0xaf, 0x14, 0x50, 0x17, 0xd9, - 0x7e, 0x43, 0xa1, 0xc8, 0x4c, 0x14, 0x8a, 0x8f, 0xa6, 0x1d, 0xb8, 0xb6, 0x78, 0x0f, 0x33, 0x5e, - 0x7c, 0xa9, 0xc0, 0x85, 0xf9, 0x83, 0xca, 0x5c, 0x1f, 0x3e, 0x86, 0xc2, 0x90, 0x86, 0xa7, 0x6e, - 0xdc, 0xac, 0x7f, 0x30, 0xa7, 0x05, 0x70, 0xf1, 0x74, 0xac, 0x22, 0xad, 0x74, 0x0f, 0xc9, 0x2e, - 0x9a, 0x36, 0xa4, 0x37, 0x33, 0x9e, 0xfe, 0x3a, 0x03, 0x6f, 0xcf, 0x35, 0x3e, 0xd7, 0xd1, 0x2b, - 0x00, 0x36, 0xf3, 0x46, 0xa1, 0x6c, 0xc8, 0xb2, 0x3e, 0x95, 0x04, 0x22, 0xde, 0x7d, 0x5e, 0x7b, - 0x46, 0x61, 0x22, 0xcf, 0x0a, 0x39, 0x48, 0x48, 0x10, 0x1e, 0x8d, 0x1d, 0xcd, 0x09, 0x47, 0xdf, - 0x5d, 0xb0, 0xd3, 0x99, 0x5e, 0xf7, 0x3e, 0x20, 0xd3, 0xb1, 0x29, 0x0b, 0x8d, 0x20, 0xf4, 0x29, - 0x19, 0xda, 0x6c, 0x20, 0x0a, 0x70, 0x71, 0x37, 0xdf, 0x27, 0x4e, 0x40, 0xf5, 0x15, 0x29, 0xee, - 0xc5, 0x52, 0xae, 0x21, 0xba, 0x8c, 0x9f, 0xd2, 0x28, 0x4c, 0x68, 0x48, 0x71, 0xa2, 0x51, 0xfb, - 0xcd, 0x12, 0x94, 0x53, 0x63, 0x1d, 0xbe, 0x06, 0x95, 0x67, 0xe4, 0x05, 0x31, 0xe2, 0x51, 0x5d, - 0x46, 0xa2, 0xcc, 0xb1, 0x6e, 0x34, 0xae, 0xbf, 0x0f, 0xeb, 0x82, 0xe2, 0x8e, 0x42, 0xea, 0x1b, - 0xa6, 0x43, 0x82, 0x40, 0x04, 0xad, 0x28, 0xa8, 0x98, 0xcb, 0x3a, 0x5c, 0xd4, 0x88, 0x25, 0xf8, - 0x01, 0xac, 0x09, 0x8d, 0xe1, 0xc8, 0x09, 0x6d, 0xcf, 0xa1, 0x06, 0xff, 0x78, 0x08, 0x44, 0x21, - 0x4e, 0x3c, 0x5b, 0xe5, 0x8c, 0x83, 0x88, 0xc0, 0x3d, 0x0a, 0xf0, 0x3e, 0x5c, 0x11, 0x6a, 0x03, - 0xca, 0xa8, 0x4f, 0x42, 0x6a, 0xd0, 0x5f, 0x8e, 0x88, 0x13, 0x18, 0x84, 0x59, 0xc6, 0x29, 0x09, - 0x4e, 0xd5, 0xf5, 0xb4, 0x81, 0x4b, 0x9c, 0xbb, 0x1f, 0x51, 0x35, 0xc1, 0xac, 0x33, 0xeb, 0x13, - 0x12, 0x9c, 0xe2, 0x5d, 0xb8, 0x20, 0x0c, 0x05, 0xa1, 0x6f, 0xb3, 0x81, 0x61, 0x9e, 0x52, 0xf3, - 0xb9, 0x31, 0x0a, 0xfb, 0x8f, 0xd4, 0xcb, 0x69, 0x0b, 0xc2, 0xc9, 0x9e, 0xe0, 0x34, 0x38, 0xe5, - 0x38, 0xec, 0x3f, 0xc2, 0x3d, 0xa8, 0xf0, 0xf3, 0x18, 0xda, 0x9f, 0x53, 0xa3, 0xef, 0xfa, 0xa2, - 0xb9, 0x54, 0xe7, 0xbc, 0xdc, 0xa9, 0x20, 0x6e, 0x77, 0x22, 0x85, 0x03, 0xd7, 0xa2, 0xbb, 0xf9, - 0x5e, 0x57, 0xd3, 0x9a, 0x7a, 0x39, 0xb6, 0xf2, 0xd8, 0xf5, 0x79, 0x4e, 0x0d, 0xdc, 0x24, 0xc6, - 0x65, 0x99, 0x53, 0x03, 0x37, 0x8e, 0xf0, 0x03, 0x58, 0x33, 0x4d, 0xb9, 0x6d, 0xdb, 0x34, 0xa2, - 0x29, 0x3f, 0x50, 0xd1, 0x44, 0xbc, 0x4c, 0x73, 0x5f, 0x12, 0xa2, 0x34, 0x0f, 0xf0, 0x87, 0xf0, - 0xf6, 0x38, 0x5e, 0x69, 0xc5, 0xd5, 0x99, 0x5d, 0x4e, 0xab, 0x3e, 0x80, 0x35, 0xef, 0x6c, 0x56, - 0x11, 0x4f, 0x3c, 0xd1, 0x3b, 0x9b, 0x56, 0xbb, 0x21, 0xbe, 0xdc, 0x7c, 0x6a, 0x92, 0x90, 0x5a, - 0xea, 0xc5, 0x34, 0x3b, 0x25, 0xc0, 0x77, 0x01, 0x99, 0xa6, 0x41, 0x19, 0x39, 0x71, 0xa8, 0x41, - 0x7c, 0xca, 0x48, 0xa0, 0x5e, 0x4d, 0x93, 0xab, 0xa6, 0xa9, 0x09, 0x69, 0x5d, 0x08, 0xf1, 0x6d, - 0x58, 0x75, 0x4f, 0x9e, 0x99, 0x32, 0xb9, 0x0c, 0xcf, 0xa7, 0x7d, 0xfb, 0x95, 0x7a, 0x5d, 0x84, - 0x69, 0x85, 0x0b, 0x44, 0x6a, 0x75, 0x05, 0x8c, 0x6f, 0x01, 0x32, 0x83, 0x53, 0xe2, 0x7b, 0xa2, - 0xbb, 0x07, 0x1e, 0x31, 0xa9, 0x7a, 0x43, 0x52, 0x25, 0x7e, 0x18, 0xc3, 0xf8, 0x29, 0xac, 0x8f, - 0x98, 0xcd, 0x42, 0xea, 0x7b, 0x3e, 0xe5, 0x43, 0xba, 0x7c, 0xd3, 0xd4, 0x7f, 0x2f, 0x2d, 0x18, - 0xb3, 0x8f, 0xd3, 0x6c, 0x79, 0xba, 0xfa, 0xda, 0x68, 0x16, 0xac, 0xed, 0x42, 0x25, 0x7d, 0xe8, - 0xb8, 0x04, 0xf2, 0xd8, 0x91, 0xc2, 0x7b, 0x68, 0xa3, 0xd3, 0xe4, 0xdd, 0xef, 0x33, 0x0d, 0x65, - 0x78, 0x17, 0x6e, 0xb7, 0x8e, 0x34, 0x43, 0x3f, 0x3e, 0x3c, 0x6a, 0x1d, 0x68, 0x28, 0x7b, 0xbb, - 0x54, 0xfc, 0xcf, 0x12, 0x7a, 0xfd, 0xfa, 0xf5, 0xeb, 0x4c, 0xed, 0x6f, 0x19, 0xa8, 0x4e, 0x4e, - 0xbe, 0xf8, 0xc7, 0x70, 0x31, 0xfe, 0x4c, 0x0d, 0x68, 0x68, 0xbc, 0xb4, 0x7d, 0x91, 0x87, 0x43, - 0x22, 0x67, 0xc7, 0x24, 0x84, 0xeb, 0x11, 0xab, 0x47, 0xc3, 0x9f, 0xdb, 0x3e, 0xcf, 0xb2, 0x21, - 0x09, 0x71, 0x1b, 0xae, 0x32, 0xd7, 0x08, 0x42, 0xc2, 0x2c, 0xe2, 0x5b, 0xc6, 0xf8, 0x82, 0xc0, - 0x20, 0xa6, 0x49, 0x83, 0xc0, 0x95, 0x2d, 0x20, 0xb1, 0xf2, 0x0e, 0x73, 0x7b, 0x11, 0x79, 0x5c, - 0x1b, 0xeb, 0x11, 0x75, 0xea, 0xb8, 0xb3, 0x8b, 0x8e, 0xfb, 0x32, 0x94, 0x86, 0xc4, 0x33, 0x28, - 0x0b, 0xfd, 0x33, 0x31, 0xaf, 0x15, 0xf5, 0xe2, 0x90, 0x78, 0x1a, 0x5f, 0x7f, 0x73, 0x67, 0x90, - 0x8e, 0xe3, 0x3f, 0xb3, 0x50, 0x49, 0xcf, 0x6c, 0x7c, 0x04, 0x36, 0x45, 0x7d, 0x56, 0xc4, 0xeb, - 0xfb, 0xde, 0x57, 0x4e, 0x78, 0xdb, 0x0d, 0x5e, 0xb8, 0x77, 0x0b, 0x72, 0x92, 0xd2, 0xa5, 0x26, - 0x6f, 0x9a, 0xfc, 0x85, 0xa5, 0x72, 0x3e, 0x2f, 0xea, 0xd1, 0x0a, 0xef, 0x43, 0xe1, 0x59, 0x20, - 0x6c, 0x17, 0x84, 0xed, 0xeb, 0x5f, 0x6d, 0xfb, 0x49, 0x4f, 0x18, 0x2f, 0x3d, 0xe9, 0x19, 0x87, - 0x1d, 0xfd, 0xa0, 0xde, 0xd6, 0x23, 0x75, 0x7c, 0x09, 0x72, 0x0e, 0xf9, 0xfc, 0x6c, 0xb2, 0xc4, - 0x0b, 0xe8, 0xbc, 0x81, 0xbf, 0x04, 0xb9, 0x97, 0x94, 0x3c, 0x9f, 0x2c, 0xac, 0x02, 0xfa, 0x06, - 0x53, 0xff, 0x2e, 0xe4, 0x45, 0xbc, 0x30, 0x40, 0x14, 0x31, 0xf4, 0x16, 0x2e, 0x42, 0xae, 0xd1, - 0xd1, 0x79, 0xfa, 0x23, 0xa8, 0x48, 0xd4, 0xe8, 0xb6, 0xb4, 0x86, 0x86, 0x32, 0xb5, 0x07, 0x50, - 0x90, 0x41, 0xe0, 0xaf, 0x46, 0x12, 0x06, 0xf4, 0x56, 0xb4, 0x8c, 0x6c, 0x28, 0xb1, 0xf4, 0xf8, - 0x60, 0x4f, 0xd3, 0x51, 0x26, 0x7d, 0xbc, 0x01, 0x54, 0xd2, 0xe3, 0xda, 0xb7, 0x93, 0x53, 0x7f, - 0x55, 0xa0, 0x9c, 0x1a, 0xbf, 0x78, 0xe3, 0x27, 0x8e, 0xe3, 0xbe, 0x34, 0x88, 0x63, 0x93, 0x20, - 0x4a, 0x0a, 0x10, 0x50, 0x9d, 0x23, 0xe7, 0x3d, 0xb4, 0x6f, 0xc5, 0xf9, 0x3f, 0x2a, 0x80, 0xa6, - 0x47, 0xb7, 0x29, 0x07, 0x95, 0xef, 0xd4, 0xc1, 0x3f, 0x28, 0x50, 0x9d, 0x9c, 0xd7, 0xa6, 0xdc, - 0xbb, 0xf6, 0x9d, 0xba, 0xf7, 0x7b, 0x05, 0x96, 0x27, 0xa6, 0xb4, 0xef, 0x95, 0x77, 0xbf, 0xcb, - 0xc2, 0xda, 0x1c, 0x3d, 0x5c, 0x8f, 0xc6, 0x59, 0x39, 0x61, 0xff, 0xe8, 0x3c, 0xcf, 0xda, 0xe6, - 0xdd, 0xb2, 0x4b, 0xfc, 0x30, 0x9a, 0x7e, 0x6f, 0x01, 0xb2, 0x2d, 0xca, 0x42, 0xbb, 0x6f, 0x53, - 0x3f, 0xfa, 0x04, 0x97, 0x33, 0xee, 0xca, 0x18, 0x97, 0x5f, 0xe1, 0x3f, 0x04, 0xec, 0xb9, 0x81, - 0x1d, 0xda, 0x2f, 0xa8, 0x61, 0xb3, 0xf8, 0x7b, 0x9d, 0xcf, 0xbc, 0x39, 0x1d, 0xc5, 0x92, 0x16, - 0x0b, 0x13, 0x36, 0xa3, 0x03, 0x32, 0xc5, 0xe6, 0xb5, 0x2f, 0xab, 0xa3, 0x58, 0x92, 0xb0, 0xaf, - 0x41, 0xc5, 0x72, 0x47, 0x7c, 0x7c, 0x90, 0x3c, 0x5e, 0x6a, 0x15, 0xbd, 0x2c, 0xb1, 0x84, 0x12, - 0xcd, 0x77, 0xe3, 0x8b, 0x82, 0x8a, 0x5e, 0x96, 0x98, 0xa4, 0xdc, 0x84, 0x15, 0x32, 0x18, 0xf8, - 0xdc, 0x78, 0x6c, 0x48, 0x0e, 0xad, 0xd5, 0x04, 0x16, 0xc4, 0x8d, 0x27, 0x50, 0x8c, 0xe3, 0xc0, - 0xbb, 0x19, 0x8f, 0x84, 0xe1, 0xc9, 0xeb, 0x9a, 0xcc, 0x56, 0x49, 0x2f, 0xb2, 0x58, 0x78, 0x0d, - 0x2a, 0x76, 0x60, 0x8c, 0xef, 0x0d, 0x33, 0x9b, 0x99, 0xad, 0xa2, 0x5e, 0xb6, 0x83, 0xe4, 0xa2, - 0xa8, 0xf6, 0x65, 0x06, 0xaa, 0x93, 0xf7, 0x9e, 0xb8, 0x09, 0x45, 0xc7, 0x35, 0x89, 0x48, 0x04, - 0x79, 0xe9, 0xbe, 0xf5, 0x86, 0xab, 0xd2, 0xed, 0x76, 0xc4, 0xd7, 0x13, 0xcd, 0x8d, 0xbf, 0x2b, - 0x50, 0x8c, 0x61, 0x7c, 0x01, 0x72, 0x1e, 0x09, 0x4f, 0x85, 0xb9, 0xfc, 0x5e, 0x06, 0x29, 0xba, - 0x58, 0x73, 0x3c, 0xf0, 0x08, 0x13, 0x29, 0x10, 0xe1, 0x7c, 0xcd, 0xcf, 0xd5, 0xa1, 0xc4, 0x12, - 0xe3, 0xb0, 0x3b, 0x1c, 0x52, 0x16, 0x06, 0xf1, 0xb9, 0x46, 0x78, 0x23, 0x82, 0xf1, 0x1d, 0x58, - 0x0d, 0x7d, 0x62, 0x3b, 0x13, 0xdc, 0x9c, 0xe0, 0xa2, 0x58, 0x90, 0x90, 0x77, 0xe1, 0x52, 0x6c, - 0xd7, 0xa2, 0x21, 0x31, 0x4f, 0xa9, 0x35, 0x56, 0x2a, 0x88, 0x4b, 0xb5, 0x8b, 0x11, 0xa1, 0x19, - 0xc9, 0x63, 0xdd, 0xda, 0x3f, 0x14, 0x58, 0x8d, 0x07, 0x78, 0x2b, 0x09, 0xd6, 0x01, 0x00, 0x61, - 0xcc, 0x0d, 0xd3, 0xe1, 0x9a, 0x4d, 0xe5, 0x19, 0xbd, 0xed, 0x7a, 0xa2, 0xa4, 0xa7, 0x0c, 0x6c, - 0x0c, 0x01, 0xc6, 0x92, 0x85, 0x61, 0xbb, 0x0a, 0xe5, 0xe8, 0x52, 0x5b, 0xfc, 0x67, 0x44, 0x7e, - 0xf5, 0x81, 0x84, 0xf8, 0xa4, 0x8f, 0xd7, 0x21, 0x7f, 0x42, 0x07, 0x36, 0x8b, 0xae, 0xda, 0xe4, - 0x22, 0xbe, 0xc0, 0xcb, 0x25, 0x17, 0x78, 0x7b, 0xbf, 0x80, 0x35, 0xd3, 0x1d, 0x4e, 0xbb, 0xbb, - 0x87, 0xa6, 0xbe, 0x3c, 0x83, 0x4f, 0x94, 0xcf, 0x60, 0x3c, 0x9d, 0xfd, 0x49, 0x51, 0xbe, 0xc8, - 0x64, 0xf7, 0xbb, 0x7b, 0x7f, 0xce, 0x6c, 0xec, 0x4b, 0xd5, 0x6e, 0xbc, 0x53, 0x9d, 0xf6, 0x1d, - 0x6a, 0x72, 0xef, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xd0, 0xf2, 0xf3, 0xa9, 0xf1, 0x19, 0x00, - 0x00, + // 2379 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcd, 0x73, 0xdb, 0xc6, + 0x15, 0x37, 0xc1, 0x0f, 0x91, 0x8f, 0x14, 0xb5, 0x5a, 0x29, 0x36, 0x2c, 0xc7, 0xb1, 0xcc, 0xd8, + 0xb5, 0x6c, 0xb7, 0x74, 0x46, 0xfe, 0x88, 0xa3, 0x74, 0xd2, 0xa1, 0x48, 0x58, 0xa1, 0x4b, 0x91, + 0x2c, 0x48, 0x35, 0x76, 0x2e, 0x98, 0x15, 0xb0, 0xa4, 0x60, 0x83, 0x00, 0x02, 0x80, 0xb6, 0x95, + 0x93, 0x67, 0x7a, 0xea, 0x7f, 0xd0, 0xe9, 0x74, 0x7a, 0xc8, 0x25, 0x33, 0xed, 0xbd, 0x87, 0xde, + 0x7b, 0xed, 0x4c, 0xef, 0x3d, 0xf4, 0xd0, 0x99, 0xf6, 0x3f, 0xe8, 0xb5, 0xb3, 0xbb, 0x00, 0x08, + 0x7e, 0xd9, 0x4a, 0x66, 0x9c, 0x9c, 0xa4, 0xfd, 0xbd, 0xdf, 0x7b, 0x78, 0xfb, 0xf6, 0x87, 0xdd, + 0x87, 0x25, 0x20, 0x83, 0xfa, 0xba, 0x67, 0xba, 0x81, 0xe3, 0x55, 0x5d, 0xcf, 0x09, 0x1c, 0xbc, + 0x36, 0x74, 0x9c, 0xa1, 0x45, 0xc5, 0xe8, 0x78, 0x3c, 0xa8, 0x1c, 0xc2, 0xfa, 0x23, 0xd3, 0xa2, + 0x8d, 0x98, 0xd8, 0xa3, 0x01, 0x7e, 0x08, 0x99, 0x81, 0x69, 0x51, 0x39, 0xb5, 0x9d, 0xde, 0x29, + 0xee, 0x5e, 0xab, 0xce, 0x38, 0x55, 0xa7, 0x3d, 0xba, 0x0c, 0x56, 0xb9, 0x47, 0xe5, 0xdf, 0x19, + 0xd8, 0x58, 0x60, 0xc5, 0x18, 0x32, 0x36, 0x19, 0xb1, 0x88, 0xa9, 0x9d, 0x82, 0xca, 0xff, 0xc7, + 0x32, 0xac, 0xb8, 0x44, 0x7f, 0x4e, 0x86, 0x54, 0x96, 0x38, 0x1c, 0x0d, 0xf1, 0x07, 0x00, 0x06, + 0x75, 0xa9, 0x6d, 0x50, 0x5b, 0x3f, 0x95, 0xd3, 0xdb, 0xe9, 0x9d, 0x82, 0x9a, 0x40, 0xf0, 0x6d, + 0x58, 0x77, 0xc7, 0xc7, 0x96, 0xa9, 0x6b, 0x09, 0x1a, 0x6c, 0xa7, 0x77, 0xb2, 0x2a, 0x12, 0x86, + 0xc6, 0x84, 0x7c, 0x03, 0xd6, 0x5e, 0x52, 0xf2, 0x3c, 0x49, 0x2d, 0x72, 0x6a, 0x99, 0xc1, 0x09, + 0x62, 0x1d, 0x4a, 0x23, 0xea, 0xfb, 0x64, 0x48, 0xb5, 0xe0, 0xd4, 0xa5, 0x72, 0x86, 0xcf, 0x7e, + 0x7b, 0x6e, 0xf6, 0xb3, 0x33, 0x2f, 0x86, 0x5e, 0xfd, 0x53, 0x97, 0xe2, 0x1a, 0x14, 0xa8, 0x3d, + 0x1e, 0x89, 0x08, 0xd9, 0x25, 0xf5, 0x53, 0xec, 0xf1, 0x68, 0x36, 0x4a, 0x9e, 0xb9, 0x85, 0x21, + 0x56, 0x7c, 0xea, 0xbd, 0x30, 0x75, 0x2a, 0xe7, 0x78, 0x80, 0x1b, 0x73, 0x01, 0x7a, 0xc2, 0x3e, + 0x1b, 0x23, 0xf2, 0xc3, 0x75, 0x28, 0xd0, 0x57, 0x01, 0xb5, 0x7d, 0xd3, 0xb1, 0xe5, 0x15, 0x1e, + 0xe4, 0xfa, 0x82, 0x55, 0xa4, 0x96, 0x31, 0x1b, 0x62, 0xe2, 0x87, 0x1f, 0xc0, 0x8a, 0xe3, 0x06, + 0xa6, 0x63, 0xfb, 0x72, 0x7e, 0x3b, 0xb5, 0x53, 0xdc, 0x7d, 0x7f, 0xa1, 0x10, 0x3a, 0x82, 0xa3, + 0x46, 0x64, 0xdc, 0x04, 0xe4, 0x3b, 0x63, 0x4f, 0xa7, 0x9a, 0xee, 0x18, 0x54, 0x33, 0xed, 0x81, + 0x23, 0x17, 0x78, 0x80, 0x2b, 0xf3, 0x13, 0xe1, 0xc4, 0xba, 0x63, 0xd0, 0xa6, 0x3d, 0x70, 0xd4, + 0xb2, 0x3f, 0x35, 0xc6, 0xe7, 0x21, 0xe7, 0x9f, 0xda, 0x01, 0x79, 0x25, 0x97, 0xb8, 0x42, 0xc2, + 0x51, 0xe5, 0x7f, 0x59, 0x58, 0x3b, 0x8b, 0xc4, 0x3e, 0x85, 0xec, 0x80, 0xcd, 0x52, 0x96, 0xbe, + 0x4b, 0x0d, 0x84, 0xcf, 0x74, 0x11, 0x73, 0xdf, 0xb3, 0x88, 0x35, 0x28, 0xda, 0xd4, 0x0f, 0xa8, + 0x21, 0x14, 0x91, 0x3e, 0xa3, 0xa6, 0x40, 0x38, 0xcd, 0x4b, 0x2a, 0xf3, 0xbd, 0x24, 0xf5, 0x04, + 0xd6, 0xe2, 0x94, 0x34, 0x8f, 0xd8, 0xc3, 0x48, 0x9b, 0x77, 0xde, 0x96, 0x49, 0x55, 0x89, 0xfc, + 0x54, 0xe6, 0xa6, 0x96, 0xe9, 0xd4, 0x18, 0x37, 0x00, 0x1c, 0x9b, 0x3a, 0x03, 0xcd, 0xa0, 0xba, + 0x25, 0xe7, 0x97, 0x54, 0xa9, 0xc3, 0x28, 0x73, 0x55, 0x72, 0x04, 0xaa, 0x5b, 0xf8, 0x93, 0x89, + 0xd4, 0x56, 0x96, 0x28, 0xe5, 0x50, 0xbc, 0x64, 0x73, 0x6a, 0x3b, 0x82, 0xb2, 0x47, 0x99, 0xee, + 0xa9, 0x11, 0xce, 0xac, 0xc0, 0x93, 0xa8, 0xbe, 0x75, 0x66, 0x6a, 0xe8, 0x26, 0x26, 0xb6, 0xea, + 0x25, 0x87, 0xf8, 0x43, 0x88, 0x01, 0x8d, 0xcb, 0x0a, 0xf8, 0x2e, 0x54, 0x8a, 0xc0, 0x36, 0x19, + 0xd1, 0xad, 0x87, 0x50, 0x9e, 0x2e, 0x0f, 0xde, 0x84, 0xac, 0x1f, 0x10, 0x2f, 0xe0, 0x2a, 0xcc, + 0xaa, 0x62, 0x80, 0x11, 0xa4, 0xa9, 0x6d, 0xf0, 0x5d, 0x2e, 0xab, 0xb2, 0x7f, 0xb7, 0x3e, 0x86, + 0xd5, 0xa9, 0xc7, 0x9f, 0xd5, 0xb1, 0xf2, 0xbb, 0x1c, 0x6c, 0x2e, 0xd2, 0xdc, 0x42, 0xf9, 0x9f, + 0x87, 0x9c, 0x3d, 0x1e, 0x1d, 0x53, 0x4f, 0x4e, 0xf3, 0x08, 0xe1, 0x08, 0xd7, 0x20, 0x6b, 0x91, + 0x63, 0x6a, 0xc9, 0x99, 0xed, 0xd4, 0x4e, 0x79, 0xf7, 0xf6, 0x99, 0x54, 0x5d, 0x6d, 0x31, 0x17, + 0x55, 0x78, 0xe2, 0xcf, 0x20, 0x13, 0x6e, 0x71, 0x2c, 0xc2, 0xad, 0xb3, 0x45, 0x60, 0x5a, 0x54, + 0xb9, 0x1f, 0xbe, 0x04, 0x05, 0xf6, 0x57, 0xd4, 0x36, 0xc7, 0x73, 0xce, 0x33, 0x80, 0xd5, 0x15, + 0x6f, 0x41, 0x9e, 0xcb, 0xcc, 0xa0, 0xd1, 0xd1, 0x10, 0x8f, 0xd9, 0xc2, 0x18, 0x74, 0x40, 0xc6, + 0x56, 0xa0, 0xbd, 0x20, 0xd6, 0x98, 0x72, 0xc1, 0x14, 0xd4, 0x52, 0x08, 0xfe, 0x9a, 0x61, 0xf8, + 0x0a, 0x14, 0x85, 0x2a, 0x4d, 0xdb, 0xa0, 0xaf, 0xf8, 0xee, 0x93, 0x55, 0x85, 0x50, 0x9b, 0x0c, + 0x61, 0x8f, 0x7f, 0xe6, 0x3b, 0x76, 0xb4, 0xb4, 0xfc, 0x11, 0x0c, 0xe0, 0x8f, 0xff, 0x78, 0x76, + 0xe3, 0xbb, 0xbc, 0x78, 0x7a, 0xb3, 0x5a, 0xac, 0xfc, 0x45, 0x82, 0x0c, 0x7f, 0xdf, 0xd6, 0xa0, + 0xd8, 0x7f, 0xda, 0x55, 0xb4, 0x46, 0xe7, 0x68, 0xbf, 0xa5, 0xa0, 0x14, 0x2e, 0x03, 0x70, 0xe0, + 0x51, 0xab, 0x53, 0xeb, 0x23, 0x29, 0x1e, 0x37, 0xdb, 0xfd, 0x07, 0xf7, 0x50, 0x3a, 0x76, 0x38, + 0x12, 0x40, 0x26, 0x49, 0xb8, 0xbb, 0x8b, 0xb2, 0x18, 0x41, 0x49, 0x04, 0x68, 0x3e, 0x51, 0x1a, + 0x0f, 0xee, 0xa1, 0xdc, 0x34, 0x72, 0x77, 0x17, 0xad, 0xe0, 0x55, 0x28, 0x70, 0x64, 0xbf, 0xd3, + 0x69, 0xa1, 0x7c, 0x1c, 0xb3, 0xd7, 0x57, 0x9b, 0xed, 0x03, 0x54, 0x88, 0x63, 0x1e, 0xa8, 0x9d, + 0xa3, 0x2e, 0x82, 0x38, 0xc2, 0xa1, 0xd2, 0xeb, 0xd5, 0x0e, 0x14, 0x54, 0x8c, 0x19, 0xfb, 0x4f, + 0xfb, 0x4a, 0x0f, 0x95, 0xa6, 0xd2, 0xba, 0xbb, 0x8b, 0x56, 0xe3, 0x47, 0x28, 0xed, 0xa3, 0x43, + 0x54, 0xc6, 0xeb, 0xb0, 0x2a, 0x1e, 0x11, 0x25, 0xb1, 0x36, 0x03, 0x3d, 0xb8, 0x87, 0xd0, 0x24, + 0x11, 0x11, 0x65, 0x7d, 0x0a, 0x78, 0x70, 0x0f, 0xe1, 0x4a, 0x1d, 0xb2, 0x5c, 0x5d, 0x18, 0x43, + 0xb9, 0x55, 0xdb, 0x57, 0x5a, 0x5a, 0xa7, 0xdb, 0x6f, 0x76, 0xda, 0xb5, 0x16, 0x4a, 0x4d, 0x30, + 0x55, 0xf9, 0xd5, 0x51, 0x53, 0x55, 0x1a, 0x48, 0x4a, 0x62, 0x5d, 0xa5, 0xd6, 0x57, 0x1a, 0x28, + 0x5d, 0xd1, 0x61, 0x73, 0xd1, 0x3e, 0xb3, 0xf0, 0xcd, 0x48, 0x2c, 0xb1, 0xb4, 0x64, 0x89, 0x79, + 0xac, 0xb9, 0x25, 0xfe, 0x26, 0x05, 0x1b, 0x0b, 0xf6, 0xda, 0x85, 0x0f, 0xf9, 0x05, 0x64, 0x85, + 0x44, 0xc5, 0xe9, 0x73, 0x73, 0xe1, 0xa6, 0xcd, 0x05, 0x3b, 0x77, 0x02, 0x71, 0xbf, 0xe4, 0x09, + 0x9c, 0x5e, 0x72, 0x02, 0xb3, 0x10, 0x73, 0x49, 0xfe, 0x26, 0x05, 0xf2, 0xb2, 0xd8, 0x6f, 0xd9, + 0x28, 0xa4, 0xa9, 0x8d, 0xe2, 0xd3, 0xd9, 0x04, 0xae, 0x2e, 0x9f, 0xc3, 0x5c, 0x16, 0xdf, 0xa6, + 0xe0, 0xfc, 0xe2, 0x46, 0x65, 0x61, 0x0e, 0x9f, 0x41, 0x6e, 0x44, 0x83, 0x13, 0x27, 0x3a, 0xac, + 0x7f, 0xb2, 0xe0, 0x08, 0x60, 0xe6, 0xd9, 0x5a, 0x85, 0x5e, 0xc9, 0x33, 0x24, 0xbd, 0xac, 0xdb, + 0x10, 0xd9, 0xcc, 0x65, 0xfa, 0x5b, 0x09, 0xde, 0x5b, 0x18, 0x7c, 0x61, 0xa2, 0x97, 0x01, 0x4c, + 0xdb, 0x1d, 0x07, 0xe2, 0x40, 0x16, 0xfb, 0x53, 0x81, 0x23, 0xfc, 0xdd, 0x67, 0x7b, 0xcf, 0x38, + 0x88, 0xed, 0x69, 0x6e, 0x07, 0x01, 0x71, 0xc2, 0xc3, 0x49, 0xa2, 0x19, 0x9e, 0xe8, 0x07, 0x4b, + 0x66, 0x3a, 0x77, 0xd6, 0x7d, 0x04, 0x48, 0xb7, 0x4c, 0x6a, 0x07, 0x9a, 0x1f, 0x78, 0x94, 0x8c, + 0x4c, 0x7b, 0xc8, 0x37, 0xe0, 0xfc, 0x5e, 0x76, 0x40, 0x2c, 0x9f, 0xaa, 0x6b, 0xc2, 0xdc, 0x8b, + 0xac, 0xcc, 0x83, 0x9f, 0x32, 0x5e, 0xc2, 0x23, 0x37, 0xe5, 0x21, 0xcc, 0xb1, 0x47, 0xe5, 0xcf, + 0x2b, 0x50, 0x4c, 0xb4, 0x75, 0xf8, 0x2a, 0x94, 0x9e, 0x91, 0x17, 0x44, 0x8b, 0x5a, 0x75, 0x51, + 0x89, 0x22, 0xc3, 0xba, 0x61, 0xbb, 0xfe, 0x11, 0x6c, 0x72, 0x8a, 0x33, 0x0e, 0xa8, 0xa7, 0xe9, + 0x16, 0xf1, 0x7d, 0x5e, 0xb4, 0x3c, 0xa7, 0x62, 0x66, 0xeb, 0x30, 0x53, 0x3d, 0xb2, 0xe0, 0xfb, + 0xb0, 0xc1, 0x3d, 0x46, 0x63, 0x2b, 0x30, 0x5d, 0x8b, 0x6a, 0xec, 0xe3, 0xc1, 0xe7, 0x1b, 0x71, + 0x9c, 0xd9, 0x3a, 0x63, 0x1c, 0x86, 0x04, 0x96, 0x91, 0x8f, 0x1b, 0x70, 0x99, 0xbb, 0x0d, 0xa9, + 0x4d, 0x3d, 0x12, 0x50, 0x8d, 0x7e, 0x35, 0x26, 0x96, 0xaf, 0x11, 0xdb, 0xd0, 0x4e, 0x88, 0x7f, + 0x22, 0x6f, 0xb2, 0x00, 0xfb, 0x92, 0x9c, 0x52, 0x2f, 0x32, 0xe2, 0x41, 0xc8, 0x53, 0x38, 0xad, + 0x66, 0x1b, 0x9f, 0x13, 0xff, 0x04, 0xef, 0xc1, 0x79, 0x1e, 0xc5, 0x0f, 0x3c, 0xd3, 0x1e, 0x6a, + 0xfa, 0x09, 0xd5, 0x9f, 0x6b, 0xe3, 0x60, 0xf0, 0x50, 0xbe, 0x94, 0x7c, 0x3e, 0xcf, 0xb0, 0xc7, + 0x39, 0x75, 0x46, 0x39, 0x0a, 0x06, 0x0f, 0x71, 0x0f, 0x4a, 0x6c, 0x31, 0x46, 0xe6, 0xd7, 0x54, + 0x1b, 0x38, 0x1e, 0x3f, 0x59, 0xca, 0x0b, 0xde, 0xec, 0x44, 0x05, 0xab, 0x9d, 0xd0, 0xe1, 0xd0, + 0x31, 0xe8, 0x5e, 0xb6, 0xd7, 0x55, 0x94, 0x86, 0x5a, 0x8c, 0xa2, 0x3c, 0x72, 0x3c, 0x26, 0xa8, + 0xa1, 0x13, 0x17, 0xb8, 0x28, 0x04, 0x35, 0x74, 0xa2, 0xf2, 0xde, 0x87, 0x0d, 0x5d, 0x17, 0x73, + 0x36, 0x75, 0x2d, 0x6c, 0xf1, 0x7d, 0x19, 0x4d, 0x15, 0x4b, 0xd7, 0x0f, 0x04, 0x21, 0xd4, 0xb8, + 0x8f, 0x3f, 0x81, 0xf7, 0x26, 0xc5, 0x4a, 0x3a, 0xae, 0xcf, 0xcd, 0x72, 0xd6, 0xf5, 0x3e, 0x6c, + 0xb8, 0xa7, 0xf3, 0x8e, 0x78, 0xea, 0x89, 0xee, 0xe9, 0xac, 0xdb, 0x75, 0xfe, 0xd9, 0xe6, 0x51, + 0x9d, 0x04, 0xd4, 0x90, 0x2f, 0x24, 0xd9, 0x09, 0x03, 0xbe, 0x03, 0x48, 0xd7, 0x35, 0x6a, 0x93, + 0x63, 0x8b, 0x6a, 0xc4, 0xa3, 0x36, 0xf1, 0xe5, 0x2b, 0x49, 0x72, 0x59, 0xd7, 0x15, 0x6e, 0xad, + 0x71, 0x23, 0xbe, 0x05, 0xeb, 0xce, 0xf1, 0x33, 0x5d, 0x28, 0x4b, 0x73, 0x3d, 0x3a, 0x30, 0x5f, + 0xc9, 0xd7, 0x78, 0x99, 0xd6, 0x98, 0x81, 0xeb, 0xaa, 0xcb, 0x61, 0x7c, 0x13, 0x90, 0xee, 0x9f, + 0x10, 0xcf, 0xe5, 0x47, 0xbb, 0xef, 0x12, 0x9d, 0xca, 0xd7, 0x05, 0x55, 0xe0, 0xed, 0x08, 0x66, + 0xca, 0xf6, 0x5f, 0x9a, 0x83, 0x20, 0x8a, 0x78, 0x43, 0x28, 0x9b, 0x63, 0x61, 0xb4, 0x27, 0xb0, + 0x39, 0xb6, 0x4d, 0x3b, 0xa0, 0x9e, 0xeb, 0x51, 0xd6, 0xc4, 0x8b, 0x37, 0x51, 0xfe, 0xcf, 0xca, + 0x92, 0x36, 0xfc, 0x28, 0xc9, 0x16, 0x02, 0x50, 0x37, 0xc6, 0xf3, 0x60, 0x65, 0x0f, 0x4a, 0x49, + 0x5d, 0xe0, 0x02, 0x08, 0x65, 0xa0, 0x14, 0x3b, 0x63, 0xeb, 0x9d, 0x06, 0x3b, 0x1d, 0xbf, 0x54, + 0x90, 0xc4, 0x4e, 0xe9, 0x56, 0xb3, 0xaf, 0x68, 0xea, 0x51, 0xbb, 0xdf, 0x3c, 0x54, 0x50, 0xfa, + 0x56, 0x21, 0xff, 0xdf, 0x15, 0xf4, 0xfa, 0xf5, 0xeb, 0xd7, 0x52, 0xe5, 0x6f, 0x12, 0x94, 0xa7, + 0x3b, 0x63, 0xfc, 0x73, 0xb8, 0x10, 0x7d, 0xc6, 0xfa, 0x34, 0xd0, 0x5e, 0x9a, 0x1e, 0x97, 0xea, + 0x88, 0x88, 0xde, 0x32, 0xae, 0xf2, 0x66, 0xc8, 0xea, 0xd1, 0xe0, 0x0b, 0xd3, 0x63, 0x42, 0x1c, + 0x91, 0x00, 0xb7, 0xe0, 0x8a, 0xed, 0x68, 0x7e, 0x40, 0x6c, 0x83, 0x78, 0x86, 0x36, 0xb9, 0x40, + 0xd0, 0x88, 0xae, 0x53, 0xdf, 0x77, 0xc4, 0x11, 0x11, 0x47, 0x79, 0xdf, 0x76, 0x7a, 0x21, 0x79, + 0xb2, 0x77, 0xd6, 0x42, 0xea, 0x8c, 0x22, 0xd2, 0xcb, 0x14, 0x71, 0x09, 0x0a, 0x23, 0xe2, 0x6a, + 0xd4, 0x0e, 0xbc, 0x53, 0xde, 0xcf, 0xe5, 0xd5, 0xfc, 0x88, 0xb8, 0x0a, 0x1b, 0xbf, 0xbb, 0x35, + 0x48, 0xd6, 0xf1, 0x9f, 0x69, 0x28, 0x25, 0x7b, 0x3a, 0xd6, 0x22, 0xeb, 0x7c, 0xff, 0x4e, 0xf1, + 0x37, 0xfc, 0xc3, 0x37, 0x76, 0x80, 0xd5, 0x3a, 0xdb, 0xd8, 0xf7, 0x72, 0xa2, 0xd3, 0x52, 0x85, + 0x27, 0x3b, 0x54, 0xd9, 0x3b, 0x4d, 0x45, 0xff, 0x9e, 0x57, 0xc3, 0x11, 0x3e, 0x80, 0xdc, 0x33, + 0x9f, 0xc7, 0xce, 0xf1, 0xd8, 0xd7, 0xde, 0x1c, 0xfb, 0x71, 0x8f, 0x07, 0x2f, 0x3c, 0xee, 0x69, + 0xed, 0x8e, 0x7a, 0x58, 0x6b, 0xa9, 0xa1, 0x3b, 0xbe, 0x08, 0x19, 0x8b, 0x7c, 0x7d, 0x3a, 0x7d, + 0x04, 0x70, 0xe8, 0xac, 0x85, 0xbf, 0x08, 0x99, 0x97, 0x94, 0x3c, 0x9f, 0xde, 0x78, 0x39, 0xf4, + 0x0e, 0xa5, 0x7f, 0x07, 0xb2, 0xbc, 0x5e, 0x18, 0x20, 0xac, 0x18, 0x3a, 0x87, 0xf3, 0x90, 0xa9, + 0x77, 0x54, 0x26, 0x7f, 0x04, 0x25, 0x81, 0x6a, 0xdd, 0xa6, 0x52, 0x57, 0x90, 0x54, 0xb9, 0x0f, + 0x39, 0x51, 0x04, 0xf6, 0x6a, 0xc4, 0x65, 0x40, 0xe7, 0xc2, 0x61, 0x18, 0x23, 0x15, 0x59, 0x8f, + 0x0e, 0xf7, 0x15, 0x15, 0x49, 0xc9, 0xe5, 0xf5, 0xa1, 0x94, 0x6c, 0xe7, 0x7e, 0x18, 0x4d, 0xfd, + 0x35, 0x05, 0xc5, 0x44, 0x7b, 0xc6, 0x1a, 0x03, 0x62, 0x59, 0xce, 0x4b, 0x8d, 0x58, 0x26, 0xf1, + 0x43, 0x51, 0x00, 0x87, 0x6a, 0x0c, 0x39, 0xeb, 0xa2, 0xfd, 0x20, 0xc9, 0xff, 0x31, 0x05, 0x68, + 0xb6, 0xb5, 0x9b, 0x49, 0x30, 0xf5, 0xa3, 0x26, 0xf8, 0x87, 0x14, 0x94, 0xa7, 0xfb, 0xb9, 0x99, + 0xf4, 0xae, 0xfe, 0xa8, 0xe9, 0xfd, 0x4b, 0x82, 0xd5, 0xa9, 0x2e, 0xee, 0xac, 0xd9, 0x7d, 0x05, + 0xeb, 0xa6, 0x41, 0x47, 0xae, 0x13, 0x50, 0x5b, 0x3f, 0xd5, 0x2c, 0xfa, 0x82, 0x5a, 0x72, 0x85, + 0x6f, 0x14, 0x77, 0xde, 0xdc, 0x27, 0x56, 0x9b, 0x13, 0xbf, 0x16, 0x73, 0xdb, 0xdb, 0x68, 0x36, + 0x94, 0xc3, 0x6e, 0xa7, 0xaf, 0xb4, 0xeb, 0x4f, 0xb5, 0xa3, 0xf6, 0x2f, 0xdb, 0x9d, 0x2f, 0xda, + 0x2a, 0x32, 0x67, 0x68, 0xef, 0xf0, 0x55, 0xef, 0x02, 0x9a, 0x4d, 0x0a, 0x5f, 0x80, 0x45, 0x69, + 0xa1, 0x73, 0x78, 0x03, 0xd6, 0xda, 0x1d, 0xad, 0xd7, 0x6c, 0x28, 0x9a, 0xf2, 0xe8, 0x91, 0x52, + 0xef, 0xf7, 0xc4, 0x87, 0x73, 0xcc, 0xee, 0x4f, 0xbf, 0xd4, 0xbf, 0x4f, 0xc3, 0xc6, 0x82, 0x4c, + 0x70, 0x2d, 0xec, 0xd9, 0xc5, 0x67, 0xc4, 0xcf, 0xce, 0x92, 0x7d, 0x95, 0x75, 0x05, 0x5d, 0xe2, + 0x05, 0x61, 0x8b, 0x7f, 0x13, 0x58, 0x95, 0xec, 0xc0, 0x1c, 0x98, 0xd4, 0x0b, 0xef, 0x19, 0x44, + 0x23, 0xbf, 0x36, 0xc1, 0xc5, 0x55, 0xc3, 0x4f, 0x01, 0xbb, 0x8e, 0x6f, 0x06, 0xe6, 0x0b, 0xaa, + 0x99, 0x76, 0x74, 0x29, 0xc1, 0x1a, 0xfb, 0x8c, 0x8a, 0x22, 0x4b, 0xd3, 0x0e, 0x62, 0xb6, 0x4d, + 0x87, 0x64, 0x86, 0xcd, 0x36, 0xf0, 0xb4, 0x8a, 0x22, 0x4b, 0xcc, 0xbe, 0x0a, 0x25, 0xc3, 0x19, + 0xb3, 0x36, 0x49, 0xf0, 0xd8, 0x79, 0x91, 0x52, 0x8b, 0x02, 0x8b, 0x29, 0x61, 0x1f, 0x3b, 0xb9, + 0x0d, 0x29, 0xa9, 0x45, 0x81, 0x09, 0xca, 0x0d, 0x58, 0x23, 0xc3, 0xa1, 0xc7, 0x82, 0x47, 0x81, + 0x44, 0x67, 0x5e, 0x8e, 0x61, 0x4e, 0xdc, 0x7a, 0x0c, 0xf9, 0xa8, 0x0e, 0xec, 0x48, 0x66, 0x95, + 0xd0, 0x5c, 0x71, 0x27, 0x25, 0xed, 0x14, 0xd4, 0xbc, 0x1d, 0x19, 0xaf, 0x42, 0xc9, 0xf4, 0xb5, + 0xc9, 0xe5, 0xa8, 0xb4, 0x2d, 0xed, 0xe4, 0xd5, 0xa2, 0xe9, 0xc7, 0xb7, 0x61, 0x95, 0x6f, 0x25, + 0x28, 0x4f, 0x5f, 0xee, 0xe2, 0x06, 0xe4, 0x2d, 0x47, 0x27, 0x5c, 0x5a, 0xe2, 0x97, 0x85, 0x9d, + 0xb7, 0xdc, 0x07, 0x57, 0x5b, 0x21, 0x5f, 0x8d, 0x3d, 0xb7, 0xfe, 0x9e, 0x82, 0x7c, 0x04, 0xe3, + 0xf3, 0x90, 0x71, 0x49, 0x70, 0xc2, 0xc3, 0x65, 0xf7, 0x25, 0x94, 0x52, 0xf9, 0x98, 0xe1, 0xbe, + 0x4b, 0x6c, 0x2e, 0x81, 0x10, 0x67, 0x63, 0xb6, 0xae, 0x16, 0x25, 0x06, 0x6f, 0xfb, 0x9d, 0xd1, + 0x88, 0xda, 0x81, 0x1f, 0xad, 0x6b, 0x88, 0xd7, 0x43, 0x18, 0xdf, 0x86, 0xf5, 0xc0, 0x23, 0xa6, + 0x35, 0xc5, 0xcd, 0x70, 0x2e, 0x8a, 0x0c, 0x31, 0x79, 0x0f, 0x2e, 0x46, 0x71, 0x0d, 0x1a, 0x10, + 0xfd, 0x84, 0x1a, 0x13, 0xa7, 0x1c, 0xbf, 0x39, 0xbc, 0x10, 0x12, 0x1a, 0xa1, 0x3d, 0xf2, 0xad, + 0xfc, 0x23, 0x05, 0xeb, 0xd1, 0x87, 0x8a, 0x11, 0x17, 0xeb, 0x10, 0x80, 0xd8, 0xb6, 0x13, 0x24, + 0xcb, 0x35, 0x2f, 0xe5, 0x39, 0xbf, 0x6a, 0x2d, 0x76, 0x52, 0x13, 0x01, 0xb6, 0x46, 0x00, 0x13, + 0xcb, 0xd2, 0xb2, 0x5d, 0x81, 0x62, 0x78, 0x73, 0xcf, 0x7f, 0xfe, 0x11, 0x9f, 0xb6, 0x20, 0x20, + 0xf6, 0x45, 0x83, 0x37, 0x21, 0x7b, 0x4c, 0x87, 0xa6, 0x1d, 0xde, 0x27, 0x8a, 0x41, 0x74, 0x4b, + 0x99, 0x89, 0x6f, 0x29, 0xf7, 0x9f, 0xc0, 0x86, 0xee, 0x8c, 0x66, 0xd3, 0xdd, 0x47, 0x33, 0x9f, + 0xd7, 0xfe, 0xe7, 0xa9, 0x2f, 0x61, 0xd2, 0x62, 0x7e, 0x23, 0xa5, 0x0f, 0xba, 0xfb, 0x7f, 0x92, + 0xb6, 0x0e, 0x84, 0x5f, 0x37, 0x9a, 0xa6, 0x4a, 0x07, 0x16, 0xd5, 0x59, 0xea, 0xff, 0x0f, 0x00, + 0x00, 0xff, 0xff, 0xa0, 0xbf, 0x63, 0x15, 0xd3, 0x1a, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go index 785d6f9fe..bac9913e0 100644 --- a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go +++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go @@ -344,7 +344,7 @@ func (this *FileOptions) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 19) + s := make([]string, 0, 20) s = append(s, "&descriptor.FileOptions{") if this.JavaPackage != nil { s = append(s, "JavaPackage: "+valueToGoStringDescriptor(this.JavaPackage, "string")+",\n") @@ -388,6 +388,9 @@ func (this *FileOptions) GoString() string { if this.CsharpNamespace != nil { s = append(s, "CsharpNamespace: "+valueToGoStringDescriptor(this.CsharpNamespace, "string")+",\n") } + if this.SwiftPrefix != nil { + s = append(s, "SwiftPrefix: "+valueToGoStringDescriptor(this.SwiftPrefix, "string")+",\n") + } if this.UninterpretedOption != nil { s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") } @@ -540,11 +543,14 @@ func (this *MethodOptions) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 6) + s := make([]string, 0, 7) s = append(s, "&descriptor.MethodOptions{") if this.Deprecated != nil { s = append(s, "Deprecated: "+valueToGoStringDescriptor(this.Deprecated, "bool")+",\n") } + if this.IdempotencyLevel != nil { + s = append(s, "IdempotencyLevel: "+valueToGoStringDescriptor(this.IdempotencyLevel, "descriptor.MethodOptions_IdempotencyLevel")+",\n") + } if this.UninterpretedOption != nil { s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") } diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/plugin/plugin.pb.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/plugin/plugin.pb.go index 3b1a7cd47..0f9f059ca 100644 --- a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/plugin/plugin.pb.go +++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/plugin/plugin.pb.go @@ -9,6 +9,7 @@ It is generated from these files: plugin.proto It has these top-level messages: + Version CodeGeneratorRequest CodeGeneratorResponse */ @@ -30,6 +31,50 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package +// The version number of protocol compiler. +type Version struct { + Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` + Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` + Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` + // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + // be empty for mainline stable releases. + Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Version) Reset() { *m = Version{} } +func (m *Version) String() string { return proto.CompactTextString(m) } +func (*Version) ProtoMessage() {} +func (*Version) Descriptor() ([]byte, []int) { return fileDescriptorPlugin, []int{0} } + +func (m *Version) GetMajor() int32 { + if m != nil && m.Major != nil { + return *m.Major + } + return 0 +} + +func (m *Version) GetMinor() int32 { + if m != nil && m.Minor != nil { + return *m.Minor + } + return 0 +} + +func (m *Version) GetPatch() int32 { + if m != nil && m.Patch != nil { + return *m.Patch + } + return 0 +} + +func (m *Version) GetSuffix() string { + if m != nil && m.Suffix != nil { + return *m.Suffix + } + return "" +} + // An encoded CodeGeneratorRequest is written to the plugin's stdin. type CodeGeneratorRequest struct { // The .proto files that were explicitly listed on the command-line. The @@ -49,14 +94,16 @@ type CodeGeneratorRequest struct { // the entire set into memory at once. However, as of this writing, this // is not similarly optimized on protoc's end -- it will store all fields in // memory at once before sending them to the plugin. - ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` - XXX_unrecognized []byte `json:"-"` + ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` + // The version number of protocol compiler. + CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} } func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorRequest) ProtoMessage() {} -func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptorPlugin, []int{0} } +func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptorPlugin, []int{1} } func (m *CodeGeneratorRequest) GetFileToGenerate() []string { if m != nil { @@ -79,6 +126,13 @@ func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorP return nil } +func (m *CodeGeneratorRequest) GetCompilerVersion() *Version { + if m != nil { + return m.CompilerVersion + } + return nil +} + // The plugin writes an encoded CodeGeneratorResponse to stdout. type CodeGeneratorResponse struct { // Error message. If non-empty, code generation failed. The plugin process @@ -97,7 +151,7 @@ type CodeGeneratorResponse struct { func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} } func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorResponse) ProtoMessage() {} -func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptorPlugin, []int{1} } +func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptorPlugin, []int{2} } func (m *CodeGeneratorResponse) GetError() string { if m != nil && m.Error != nil { @@ -174,7 +228,7 @@ func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorRespons func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorResponse_File) ProtoMessage() {} func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { - return fileDescriptorPlugin, []int{1, 0} + return fileDescriptorPlugin, []int{2, 0} } func (m *CodeGeneratorResponse_File) GetName() string { @@ -199,6 +253,7 @@ func (m *CodeGeneratorResponse_File) GetContent() string { } func init() { + proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version") proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest") proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse") proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File") @@ -207,24 +262,29 @@ func init() { func init() { proto.RegisterFile("plugin.proto", fileDescriptorPlugin) } var fileDescriptorPlugin = []byte{ - // 304 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x51, 0xc1, 0x4a, 0xc3, 0x40, - 0x10, 0x25, 0xb6, 0x22, 0x19, 0x4b, 0x2b, 0x4b, 0x85, 0xa5, 0xf4, 0x10, 0x8a, 0x60, 0x4e, 0x29, - 0x88, 0xe0, 0xbd, 0x15, 0xf5, 0x58, 0x82, 0x27, 0x41, 0x42, 0x4c, 0xa7, 0x61, 0x21, 0xd9, 0x59, - 0x27, 0xdb, 0x2f, 0xf2, 0x9f, 0xfc, 0x1e, 0xd9, 0xdd, 0xb6, 0x4a, 0xb1, 0xb7, 0x7d, 0xef, 0xcd, - 0xcc, 0x7b, 0x3b, 0x03, 0x03, 0xd3, 0x6c, 0x6b, 0xa5, 0x33, 0xc3, 0x64, 0x49, 0xc8, 0x9a, 0xa8, - 0x6e, 0x30, 0xa0, 0x8f, 0xed, 0x26, 0xab, 0xa8, 0x35, 0xaa, 0x41, 0x9e, 0x24, 0x41, 0x99, 0xef, - 0x95, 0xf9, 0x1a, 0xbb, 0x8a, 0x95, 0xb1, 0xc4, 0xa1, 0x7a, 0xf6, 0x15, 0xc1, 0x78, 0x49, 0x6b, - 0x7c, 0x46, 0x8d, 0x5c, 0x5a, 0xe2, 0x1c, 0x3f, 0xb7, 0xd8, 0x59, 0x91, 0xc2, 0xd5, 0x46, 0x35, - 0x58, 0x58, 0x2a, 0xea, 0xa0, 0xa1, 0x8c, 0x92, 0x5e, 0x1a, 0xe7, 0x43, 0xc7, 0xbf, 0xd2, 0xae, - 0x03, 0xc5, 0x14, 0x62, 0x53, 0x72, 0xd9, 0xa2, 0x45, 0x96, 0x67, 0x49, 0x94, 0xc6, 0xf9, 0x2f, - 0x21, 0x96, 0x00, 0xde, 0xa9, 0x70, 0x5d, 0x72, 0x94, 0xf4, 0xd2, 0xcb, 0xbb, 0x9b, 0xec, 0x38, - 0xf1, 0x93, 0x6a, 0xf0, 0xf1, 0x90, 0x6d, 0xe5, 0xe8, 0x3c, 0xf6, 0xaa, 0x53, 0x66, 0xdf, 0x11, - 0x5c, 0x1f, 0xa5, 0xec, 0x0c, 0xe9, 0x0e, 0xc5, 0x18, 0xce, 0x91, 0x99, 0x58, 0x46, 0xde, 0x38, - 0x00, 0xf1, 0x02, 0xfd, 0x3f, 0x76, 0xf7, 0xd9, 0xa9, 0x05, 0x65, 0xff, 0x0e, 0xf5, 0x69, 0x72, - 0x3f, 0x61, 0xf2, 0x0e, 0x7d, 0x87, 0x84, 0x80, 0xbe, 0x2e, 0x5b, 0xdc, 0xd9, 0xf8, 0xb7, 0xb8, - 0x85, 0x91, 0xd2, 0x1d, 0xb2, 0x55, 0xa4, 0x0b, 0x43, 0x4a, 0xdb, 0xdd, 0xf7, 0x87, 0x07, 0x7a, - 0xe5, 0x58, 0x21, 0xe1, 0xa2, 0x22, 0x6d, 0x51, 0x5b, 0x39, 0xf2, 0x05, 0x7b, 0xb8, 0x78, 0x80, - 0x69, 0x45, 0xed, 0xc9, 0x7c, 0x8b, 0xc1, 0xca, 0x1f, 0xda, 0x2f, 0xa4, 0x7b, 0x8b, 0xc3, 0xd9, - 0x8b, 0x9a, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x70, 0xa2, 0xbd, 0x30, 0x02, 0x02, 0x00, 0x00, + // 383 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcd, 0x6a, 0xd5, 0x40, + 0x14, 0xc7, 0x89, 0x37, 0xb5, 0xe4, 0xb4, 0x34, 0x65, 0xa8, 0x32, 0x94, 0x2e, 0xe2, 0x45, 0x30, + 0xab, 0x14, 0x8a, 0xe0, 0xbe, 0x15, 0x75, 0xe1, 0xe2, 0x32, 0x88, 0x0b, 0x41, 0x42, 0x4c, 0x4f, + 0xe2, 0x48, 0x32, 0x67, 0x9c, 0x99, 0x88, 0x4f, 0xea, 0x7b, 0xf8, 0x06, 0x32, 0x1f, 0xa9, 0x72, + 0xf1, 0xee, 0xe6, 0xff, 0x3b, 0xf3, 0x71, 0xce, 0x8f, 0x81, 0x53, 0x3d, 0x2d, 0xa3, 0x54, 0x8d, + 0x36, 0xe4, 0x88, 0xf1, 0x91, 0x68, 0x9c, 0x30, 0xa6, 0x2f, 0xcb, 0xd0, 0xf4, 0x34, 0x6b, 0x39, + 0xa1, 0xb9, 0xac, 0x62, 0xe5, 0x7a, 0xad, 0x5c, 0xdf, 0xa3, 0xed, 0x8d, 0xd4, 0x8e, 0x4c, 0xdc, + 0xbd, 0xed, 0xe1, 0xf8, 0x23, 0x1a, 0x2b, 0x49, 0xb1, 0x0b, 0x38, 0x9a, 0xbb, 0x6f, 0x64, 0x78, + 0x56, 0x65, 0xf5, 0x91, 0x88, 0x21, 0x50, 0xa9, 0xc8, 0xf0, 0x47, 0x89, 0xfa, 0xe0, 0xa9, 0xee, + 0x5c, 0xff, 0x95, 0x6f, 0x22, 0x0d, 0x81, 0x3d, 0x85, 0xc7, 0x76, 0x19, 0x06, 0xf9, 0x93, 0xe7, + 0x55, 0x56, 0x17, 0x22, 0xa5, 0xed, 0xef, 0x0c, 0x2e, 0xee, 0xe8, 0x1e, 0xdf, 0xa2, 0x42, 0xd3, + 0x39, 0x32, 0x02, 0xbf, 0x2f, 0x68, 0x1d, 0xab, 0xe1, 0x7c, 0x90, 0x13, 0xb6, 0x8e, 0xda, 0x31, + 0xd6, 0x90, 0x67, 0xd5, 0xa6, 0x2e, 0xc4, 0x99, 0xe7, 0x1f, 0x28, 0x9d, 0x40, 0x76, 0x05, 0x85, + 0xee, 0x4c, 0x37, 0xa3, 0xc3, 0xd8, 0x4a, 0x21, 0xfe, 0x02, 0x76, 0x07, 0x10, 0xc6, 0x69, 0xfd, + 0x29, 0x5e, 0x56, 0x9b, 0xfa, 0xe4, 0xe6, 0x79, 0xb3, 0xaf, 0xe5, 0x8d, 0x9c, 0xf0, 0xf5, 0x83, + 0x80, 0x9d, 0xc7, 0xa2, 0x08, 0x55, 0x5f, 0x61, 0xef, 0xe1, 0x7c, 0x15, 0xd7, 0xfe, 0x88, 0x4e, + 0xc2, 0x78, 0x27, 0x37, 0xcf, 0x9a, 0x43, 0x86, 0x9b, 0x24, 0x4f, 0x94, 0x2b, 0x49, 0x60, 0xfb, + 0x2b, 0x83, 0x27, 0x7b, 0x33, 0x5b, 0x4d, 0xca, 0xa2, 0x77, 0x87, 0xc6, 0x24, 0xcf, 0x85, 0x88, + 0x81, 0xbd, 0x83, 0xfc, 0x9f, 0xe6, 0x5f, 0x1e, 0x7e, 0xf1, 0xbf, 0x97, 0x86, 0xd9, 0x44, 0xb8, + 0xe1, 0xf2, 0x33, 0xe4, 0x61, 0x1e, 0x06, 0xb9, 0xea, 0x66, 0x4c, 0xcf, 0x84, 0x35, 0x7b, 0x01, + 0xa5, 0x54, 0x16, 0x8d, 0x93, 0xa4, 0x5a, 0x4d, 0x52, 0xb9, 0x24, 0xf3, 0xec, 0x01, 0xef, 0x3c, + 0x65, 0x1c, 0x8e, 0x7b, 0x52, 0x0e, 0x95, 0xe3, 0x65, 0xd8, 0xb0, 0xc6, 0xdb, 0x57, 0x70, 0xd5, + 0xd3, 0x7c, 0xb0, 0xbf, 0xdb, 0xd3, 0x5d, 0xf8, 0x9b, 0x41, 0xaf, 0xfd, 0x54, 0xc4, 0x9f, 0xda, + 0x8e, 0xf4, 0x27, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x72, 0x3d, 0x18, 0xb5, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/both/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/both/casttype.pb.go index ef474cf51..3d8443de8 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/both/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/both/casttype.pb.go @@ -90,258 +90,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4013 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, - 0x75, 0xd6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x83, 0x14, 0xfd, - 0x47, 0xdb, 0x09, 0xe5, 0xa1, 0x28, 0x59, 0x86, 0x12, 0x7b, 0x00, 0x12, 0x62, 0xa8, 0x21, 0x48, - 0x66, 0x49, 0xc6, 0x3f, 0xe9, 0xcc, 0xce, 0xe5, 0xe2, 0x12, 0x5c, 0x69, 0xb1, 0x8b, 0xee, 0x2e, - 0x24, 0xc3, 0x4f, 0x4a, 0xdc, 0x36, 0x93, 0x66, 0xfa, 0xdf, 0x99, 0x26, 0x8e, 0xe3, 0xa6, 0x99, - 0x69, 0x9d, 0xa6, 0x3f, 0x49, 0xda, 0x26, 0xcd, 0xf4, 0x29, 0x2f, 0x69, 0xfd, 0xd4, 0x49, 0xde, - 0xfa, 0xd0, 0x91, 0x23, 0xd6, 0x33, 0x75, 0x5a, 0xb7, 0x75, 0x1b, 0xcf, 0x34, 0x23, 0xbf, 0x74, - 0xee, 0xdf, 0x62, 0xf1, 0x43, 0x2d, 0xa8, 0x4c, 0xe2, 0x3e, 0x91, 0xf7, 0xdc, 0xf3, 0x7d, 0x7b, - 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xf6, 0x62, 0xe1, 0xd3, 0x4b, 0x30, 0x5b, 0x77, 0x9c, 0xba, 0x45, - 0xce, 0x34, 0x5d, 0xc7, 0x77, 0xf6, 0x5a, 0xfb, 0x67, 0x6a, 0xc4, 0x33, 0x5c, 0xb3, 0xe9, 0x3b, - 0xee, 0x02, 0x93, 0xa1, 0x71, 0xae, 0xb1, 0x20, 0x35, 0xe6, 0xaa, 0x30, 0x71, 0xc9, 0xb4, 0xc8, - 0x4a, 0xa0, 0xb8, 0x4d, 0x7c, 0x74, 0x01, 0x12, 0xfb, 0xa6, 0x45, 0xf2, 0xca, 0x6c, 0x7c, 0x3e, - 0xb3, 0xf8, 0xe0, 0x42, 0x0f, 0x68, 0xa1, 0x1b, 0xb1, 0x45, 0xc5, 0x1a, 0x43, 0xcc, 0xbd, 0x95, - 0x80, 0xc9, 0x01, 0xb3, 0x08, 0x41, 0xc2, 0xc6, 0x0d, 0xca, 0xa8, 0xcc, 0xa7, 0x35, 0xf6, 0x3f, - 0xca, 0xc3, 0x68, 0x13, 0x1b, 0x57, 0x71, 0x9d, 0xe4, 0x63, 0x4c, 0x2c, 0x87, 0xa8, 0x00, 0x50, - 0x23, 0x4d, 0x62, 0xd7, 0x88, 0x6d, 0xb4, 0xf3, 0xf1, 0xd9, 0xf8, 0x7c, 0x5a, 0x0b, 0x49, 0xd0, - 0xe3, 0x30, 0xd1, 0x6c, 0xed, 0x59, 0xa6, 0xa1, 0x87, 0xd4, 0x60, 0x36, 0x3e, 0x9f, 0xd4, 0x54, - 0x3e, 0xb1, 0xd2, 0x51, 0x7e, 0x04, 0xc6, 0xaf, 0x13, 0x7c, 0x35, 0xac, 0x9a, 0x61, 0xaa, 0x39, - 0x2a, 0x0e, 0x29, 0x2e, 0x43, 0xb6, 0x41, 0x3c, 0x0f, 0xd7, 0x89, 0xee, 0xb7, 0x9b, 0x24, 0x9f, - 0x60, 0xab, 0x9f, 0xed, 0x5b, 0x7d, 0xef, 0xca, 0x33, 0x02, 0xb5, 0xd3, 0x6e, 0x12, 0x54, 0x82, - 0x34, 0xb1, 0x5b, 0x0d, 0xce, 0x90, 0x3c, 0xc2, 0x7f, 0x15, 0xbb, 0xd5, 0xe8, 0x65, 0x49, 0x51, - 0x98, 0xa0, 0x18, 0xf5, 0x88, 0x7b, 0xcd, 0x34, 0x48, 0x7e, 0x84, 0x11, 0x3c, 0xd2, 0x47, 0xb0, - 0xcd, 0xe7, 0x7b, 0x39, 0x24, 0x0e, 0x2d, 0x43, 0x9a, 0xbc, 0xe8, 0x13, 0xdb, 0x33, 0x1d, 0x3b, - 0x3f, 0xca, 0x48, 0x1e, 0x1a, 0xb0, 0x8b, 0xc4, 0xaa, 0xf5, 0x52, 0x74, 0x70, 0xe8, 0x3c, 0x8c, - 0x3a, 0x4d, 0xdf, 0x74, 0x6c, 0x2f, 0x9f, 0x9a, 0x55, 0xe6, 0x33, 0x8b, 0x1f, 0x1a, 0x18, 0x08, - 0x9b, 0x5c, 0x47, 0x93, 0xca, 0x68, 0x0d, 0x54, 0xcf, 0x69, 0xb9, 0x06, 0xd1, 0x0d, 0xa7, 0x46, - 0x74, 0xd3, 0xde, 0x77, 0xf2, 0x69, 0x46, 0x30, 0xd3, 0xbf, 0x10, 0xa6, 0xb8, 0xec, 0xd4, 0xc8, - 0x9a, 0xbd, 0xef, 0x68, 0x39, 0xaf, 0x6b, 0x8c, 0x4e, 0xc2, 0x88, 0xd7, 0xb6, 0x7d, 0xfc, 0x62, - 0x3e, 0xcb, 0x22, 0x44, 0x8c, 0xe6, 0xfe, 0x37, 0x09, 0xe3, 0xc3, 0x84, 0xd8, 0x45, 0x48, 0xee, - 0xd3, 0x55, 0xe6, 0x63, 0xc7, 0xf1, 0x01, 0xc7, 0x74, 0x3b, 0x71, 0xe4, 0x2e, 0x9d, 0x58, 0x82, - 0x8c, 0x4d, 0x3c, 0x9f, 0xd4, 0x78, 0x44, 0xc4, 0x87, 0x8c, 0x29, 0xe0, 0xa0, 0xfe, 0x90, 0x4a, - 0xdc, 0x55, 0x48, 0x3d, 0x07, 0xe3, 0x81, 0x49, 0xba, 0x8b, 0xed, 0xba, 0x8c, 0xcd, 0x33, 0x51, - 0x96, 0x2c, 0x54, 0x24, 0x4e, 0xa3, 0x30, 0x2d, 0x47, 0xba, 0xc6, 0x68, 0x05, 0xc0, 0xb1, 0x89, - 0xb3, 0xaf, 0xd7, 0x88, 0x61, 0xe5, 0x53, 0x47, 0x78, 0x69, 0x93, 0xaa, 0xf4, 0x79, 0xc9, 0xe1, - 0x52, 0xc3, 0x42, 0x4f, 0x75, 0x42, 0x6d, 0xf4, 0x88, 0x48, 0xa9, 0xf2, 0x43, 0xd6, 0x17, 0x6d, - 0xbb, 0x90, 0x73, 0x09, 0x8d, 0x7b, 0x52, 0x13, 0x2b, 0x4b, 0x33, 0x23, 0x16, 0x22, 0x57, 0xa6, - 0x09, 0x18, 0x5f, 0xd8, 0x98, 0x1b, 0x1e, 0xa2, 0x07, 0x20, 0x10, 0xe8, 0x2c, 0xac, 0x80, 0x65, - 0xa1, 0xac, 0x14, 0x6e, 0xe0, 0x06, 0x99, 0xbe, 0x00, 0xb9, 0x6e, 0xf7, 0xa0, 0x29, 0x48, 0x7a, - 0x3e, 0x76, 0x7d, 0x16, 0x85, 0x49, 0x8d, 0x0f, 0x90, 0x0a, 0x71, 0x62, 0xd7, 0x58, 0x96, 0x4b, - 0x6a, 0xf4, 0xdf, 0xe9, 0x27, 0x61, 0xac, 0xeb, 0xf1, 0xc3, 0x02, 0xe7, 0xbe, 0x30, 0x02, 0x53, - 0x83, 0x62, 0x6e, 0x60, 0xf8, 0x9f, 0x84, 0x11, 0xbb, 0xd5, 0xd8, 0x23, 0x6e, 0x3e, 0xce, 0x18, - 0xc4, 0x08, 0x95, 0x20, 0x69, 0xe1, 0x3d, 0x62, 0xe5, 0x13, 0xb3, 0xca, 0x7c, 0x6e, 0xf1, 0xf1, - 0xa1, 0xa2, 0x7a, 0x61, 0x9d, 0x42, 0x34, 0x8e, 0x44, 0x4f, 0x43, 0x42, 0xa4, 0x38, 0xca, 0xf0, - 0xd8, 0x70, 0x0c, 0x34, 0x16, 0x35, 0x86, 0x43, 0xf7, 0x41, 0x9a, 0xfe, 0xe5, 0xbe, 0x1d, 0x61, - 0x36, 0xa7, 0xa8, 0x80, 0xfa, 0x15, 0x4d, 0x43, 0x8a, 0x85, 0x59, 0x8d, 0xc8, 0xd2, 0x10, 0x8c, - 0xe9, 0xc6, 0xd4, 0xc8, 0x3e, 0x6e, 0x59, 0xbe, 0x7e, 0x0d, 0x5b, 0x2d, 0xc2, 0x02, 0x26, 0xad, - 0x65, 0x85, 0xf0, 0x93, 0x54, 0x86, 0x66, 0x20, 0xc3, 0xa3, 0xd2, 0xb4, 0x6b, 0xe4, 0x45, 0x96, - 0x7d, 0x92, 0x1a, 0x0f, 0xd4, 0x35, 0x2a, 0xa1, 0x8f, 0xbf, 0xe2, 0x39, 0xb6, 0xdc, 0x5a, 0xf6, - 0x08, 0x2a, 0x60, 0x8f, 0x7f, 0xb2, 0x37, 0xf1, 0xdd, 0x3f, 0x78, 0x79, 0xbd, 0xb1, 0x38, 0xf7, - 0x9d, 0x18, 0x24, 0xd8, 0x79, 0x1b, 0x87, 0xcc, 0xce, 0xf3, 0x5b, 0x15, 0x7d, 0x65, 0x73, 0xb7, - 0xbc, 0x5e, 0x51, 0x15, 0x94, 0x03, 0x60, 0x82, 0x4b, 0xeb, 0x9b, 0xa5, 0x1d, 0x35, 0x16, 0x8c, - 0xd7, 0x36, 0x76, 0xce, 0x2f, 0xa9, 0xf1, 0x00, 0xb0, 0xcb, 0x05, 0x89, 0xb0, 0xc2, 0xd9, 0x45, - 0x35, 0x89, 0x54, 0xc8, 0x72, 0x82, 0xb5, 0xe7, 0x2a, 0x2b, 0xe7, 0x97, 0xd4, 0x91, 0x6e, 0xc9, - 0xd9, 0x45, 0x75, 0x14, 0x8d, 0x41, 0x9a, 0x49, 0xca, 0x9b, 0x9b, 0xeb, 0x6a, 0x2a, 0xe0, 0xdc, - 0xde, 0xd1, 0xd6, 0x36, 0x56, 0xd5, 0x74, 0xc0, 0xb9, 0xaa, 0x6d, 0xee, 0x6e, 0xa9, 0x10, 0x30, - 0x54, 0x2b, 0xdb, 0xdb, 0xa5, 0xd5, 0x8a, 0x9a, 0x09, 0x34, 0xca, 0xcf, 0xef, 0x54, 0xb6, 0xd5, - 0x6c, 0x97, 0x59, 0x67, 0x17, 0xd5, 0xb1, 0xe0, 0x11, 0x95, 0x8d, 0xdd, 0xaa, 0x9a, 0x43, 0x13, - 0x30, 0xc6, 0x1f, 0x21, 0x8d, 0x18, 0xef, 0x11, 0x9d, 0x5f, 0x52, 0xd5, 0x8e, 0x21, 0x9c, 0x65, - 0xa2, 0x4b, 0x70, 0x7e, 0x49, 0x45, 0x73, 0xcb, 0x90, 0x64, 0xd1, 0x85, 0x10, 0xe4, 0xd6, 0x4b, - 0xe5, 0xca, 0xba, 0xbe, 0xb9, 0xb5, 0xb3, 0xb6, 0xb9, 0x51, 0x5a, 0x57, 0x95, 0x8e, 0x4c, 0xab, - 0x7c, 0x62, 0x77, 0x4d, 0xab, 0xac, 0xa8, 0xb1, 0xb0, 0x6c, 0xab, 0x52, 0xda, 0xa9, 0xac, 0xa8, - 0xf1, 0x39, 0x03, 0xa6, 0x06, 0xe5, 0x99, 0x81, 0x27, 0x23, 0xb4, 0xc5, 0xb1, 0x23, 0xb6, 0x98, - 0x71, 0xf5, 0x6d, 0xf1, 0x57, 0x15, 0x98, 0x1c, 0x90, 0x6b, 0x07, 0x3e, 0xe4, 0x19, 0x48, 0xf2, - 0x10, 0xe5, 0xd5, 0xe7, 0xd1, 0x81, 0x49, 0x9b, 0x05, 0x6c, 0x5f, 0x05, 0x62, 0xb8, 0x70, 0x05, - 0x8e, 0x1f, 0x51, 0x81, 0x29, 0x45, 0x9f, 0x91, 0x2f, 0x2b, 0x90, 0x3f, 0x8a, 0x3b, 0x22, 0x51, - 0xc4, 0xba, 0x12, 0xc5, 0xc5, 0x5e, 0x03, 0x4e, 0x1f, 0xbd, 0x86, 0x3e, 0x2b, 0x5e, 0x57, 0xe0, - 0xe4, 0xe0, 0x46, 0x65, 0xa0, 0x0d, 0x4f, 0xc3, 0x48, 0x83, 0xf8, 0x07, 0x8e, 0x2c, 0xd6, 0x0f, - 0x0f, 0x28, 0x01, 0x74, 0xba, 0xd7, 0x57, 0x02, 0x15, 0xae, 0x21, 0xf1, 0xa3, 0xba, 0x0d, 0x6e, - 0x4d, 0x9f, 0xa5, 0x9f, 0x8b, 0xc1, 0x3d, 0x03, 0xc9, 0x07, 0x1a, 0x7a, 0x3f, 0x80, 0x69, 0x37, - 0x5b, 0x3e, 0x2f, 0xc8, 0x3c, 0x3f, 0xa5, 0x99, 0x84, 0x9d, 0x7d, 0x9a, 0x7b, 0x5a, 0x7e, 0x30, - 0x1f, 0x67, 0xf3, 0xc0, 0x45, 0x4c, 0xe1, 0x42, 0xc7, 0xd0, 0x04, 0x33, 0xb4, 0x70, 0xc4, 0x4a, - 0xfb, 0x6a, 0xdd, 0x13, 0xa0, 0x1a, 0x96, 0x49, 0x6c, 0x5f, 0xf7, 0x7c, 0x97, 0xe0, 0x86, 0x69, - 0xd7, 0x59, 0x02, 0x4e, 0x15, 0x93, 0xfb, 0xd8, 0xf2, 0x88, 0x36, 0xce, 0xa7, 0xb7, 0xe5, 0x2c, - 0x45, 0xb0, 0x2a, 0xe3, 0x86, 0x10, 0x23, 0x5d, 0x08, 0x3e, 0x1d, 0x20, 0xe6, 0x3e, 0x3f, 0x0a, - 0x99, 0x50, 0x5b, 0x87, 0x4e, 0x43, 0xf6, 0x0a, 0xbe, 0x86, 0x75, 0xd9, 0xaa, 0x73, 0x4f, 0x64, - 0xa8, 0x6c, 0x4b, 0xb4, 0xeb, 0x4f, 0xc0, 0x14, 0x53, 0x71, 0x5a, 0x3e, 0x71, 0x75, 0xc3, 0xc2, - 0x9e, 0xc7, 0x9c, 0x96, 0x62, 0xaa, 0x88, 0xce, 0x6d, 0xd2, 0xa9, 0x65, 0x39, 0x83, 0xce, 0xc1, - 0x24, 0x43, 0x34, 0x5a, 0x96, 0x6f, 0x36, 0x2d, 0xa2, 0xd3, 0x97, 0x07, 0x8f, 0x25, 0xe2, 0xc0, - 0xb2, 0x09, 0xaa, 0x51, 0x15, 0x0a, 0xd4, 0x22, 0x0f, 0xad, 0xc2, 0xfd, 0x0c, 0x56, 0x27, 0x36, - 0x71, 0xb1, 0x4f, 0x74, 0xf2, 0xcb, 0x2d, 0x6c, 0x79, 0x3a, 0xb6, 0x6b, 0xfa, 0x01, 0xf6, 0x0e, - 0xf2, 0x53, 0x61, 0x82, 0x53, 0x54, 0x77, 0x55, 0xa8, 0x56, 0x98, 0x66, 0xc9, 0xae, 0x7d, 0x1c, - 0x7b, 0x07, 0xa8, 0x08, 0x27, 0x19, 0x91, 0xe7, 0xbb, 0xa6, 0x5d, 0xd7, 0x8d, 0x03, 0x62, 0x5c, - 0xd5, 0x5b, 0xfe, 0xfe, 0x85, 0xfc, 0x7d, 0x61, 0x06, 0x66, 0xe4, 0x36, 0xd3, 0x59, 0xa6, 0x2a, - 0xbb, 0xfe, 0xfe, 0x05, 0xb4, 0x0d, 0x59, 0xba, 0x1f, 0x0d, 0xf3, 0x25, 0xa2, 0xef, 0x3b, 0x2e, - 0x2b, 0x2e, 0xb9, 0x01, 0x87, 0x3b, 0xe4, 0xc4, 0x85, 0x4d, 0x01, 0xa8, 0x3a, 0x35, 0x52, 0x4c, - 0x6e, 0x6f, 0x55, 0x2a, 0x2b, 0x5a, 0x46, 0xb2, 0x5c, 0x72, 0x5c, 0x1a, 0x53, 0x75, 0x27, 0xf0, - 0x71, 0x86, 0xc7, 0x54, 0xdd, 0x91, 0x1e, 0x3e, 0x07, 0x93, 0x86, 0xc1, 0x97, 0x6d, 0x1a, 0xba, - 0xe8, 0xf2, 0xbd, 0xbc, 0xda, 0xe5, 0x2f, 0xc3, 0x58, 0xe5, 0x0a, 0x22, 0xcc, 0x3d, 0xf4, 0x14, - 0xdc, 0xd3, 0xf1, 0x57, 0x18, 0x38, 0xd1, 0xb7, 0xca, 0x5e, 0xe8, 0x39, 0x98, 0x6c, 0xb6, 0xfb, - 0x81, 0xa8, 0xeb, 0x89, 0xcd, 0x76, 0x2f, 0xec, 0x21, 0xf6, 0xe6, 0xe6, 0x12, 0x03, 0xfb, 0xa4, - 0x96, 0xbf, 0x37, 0xac, 0x1d, 0x9a, 0x40, 0x67, 0x40, 0x35, 0x0c, 0x9d, 0xd8, 0x78, 0xcf, 0x22, - 0x3a, 0x76, 0x89, 0x8d, 0xbd, 0xfc, 0x4c, 0x58, 0x39, 0x67, 0x18, 0x15, 0x36, 0x5b, 0x62, 0x93, - 0xe8, 0x31, 0x98, 0x70, 0xf6, 0xae, 0x18, 0x3c, 0xb8, 0xf4, 0xa6, 0x4b, 0xf6, 0xcd, 0x17, 0xf3, - 0x0f, 0x32, 0x37, 0x8d, 0xd3, 0x09, 0x16, 0x5a, 0x5b, 0x4c, 0x8c, 0x1e, 0x05, 0xd5, 0xf0, 0x0e, - 0xb0, 0xdb, 0x64, 0xd5, 0xdd, 0x6b, 0x62, 0x83, 0xe4, 0x1f, 0xe2, 0xaa, 0x5c, 0xbe, 0x21, 0xc5, - 0xe8, 0x39, 0x98, 0x6a, 0xd9, 0xa6, 0xed, 0x13, 0xb7, 0xe9, 0x12, 0xda, 0xa4, 0xf3, 0x93, 0x96, - 0xff, 0xd7, 0xd1, 0x23, 0xda, 0xec, 0xdd, 0xb0, 0x36, 0xdf, 0x5d, 0x6d, 0xb2, 0xd5, 0x2f, 0x9c, - 0x2b, 0x42, 0x36, 0xbc, 0xe9, 0x28, 0x0d, 0x7c, 0xdb, 0x55, 0x85, 0xd6, 0xd0, 0xe5, 0xcd, 0x15, - 0x5a, 0xfd, 0x5e, 0xa8, 0xa8, 0x31, 0x5a, 0x85, 0xd7, 0xd7, 0x76, 0x2a, 0xba, 0xb6, 0xbb, 0xb1, - 0xb3, 0x56, 0xad, 0xa8, 0xf1, 0xc7, 0xd2, 0xa9, 0xb7, 0x47, 0xd5, 0x1b, 0x37, 0x6e, 0xdc, 0x88, - 0xcd, 0x7d, 0x3f, 0x06, 0xb9, 0xee, 0xce, 0x17, 0x7d, 0x14, 0xee, 0x95, 0xaf, 0xa9, 0x1e, 0xf1, - 0xf5, 0xeb, 0xa6, 0xcb, 0xe2, 0xb0, 0x81, 0x79, 0xef, 0x18, 0xb8, 0x70, 0x4a, 0x68, 0x6d, 0x13, - 0xff, 0x59, 0xd3, 0xa5, 0x51, 0xd6, 0xc0, 0x3e, 0x5a, 0x87, 0x19, 0xdb, 0xd1, 0x3d, 0x1f, 0xdb, - 0x35, 0xec, 0xd6, 0xf4, 0xce, 0x05, 0x81, 0x8e, 0x0d, 0x83, 0x78, 0x9e, 0xc3, 0x4b, 0x40, 0xc0, - 0xf2, 0x21, 0xdb, 0xd9, 0x16, 0xca, 0x9d, 0xdc, 0x58, 0x12, 0xaa, 0x3d, 0xdb, 0x1d, 0x3f, 0x6a, - 0xbb, 0xef, 0x83, 0x74, 0x03, 0x37, 0x75, 0x62, 0xfb, 0x6e, 0x9b, 0xf5, 0x6b, 0x29, 0x2d, 0xd5, - 0xc0, 0xcd, 0x0a, 0x1d, 0xff, 0xfc, 0xf6, 0x20, 0xec, 0xc7, 0x7f, 0x8e, 0x43, 0x36, 0xdc, 0xb3, - 0xd1, 0x16, 0xd8, 0x60, 0xf9, 0x59, 0x61, 0xc7, 0xf7, 0x81, 0x3b, 0x76, 0x78, 0x0b, 0xcb, 0x34, - 0x71, 0x17, 0x47, 0x78, 0x27, 0xa5, 0x71, 0x24, 0x2d, 0x9a, 0xf4, 0xc0, 0x12, 0xde, 0x9f, 0xa7, - 0x34, 0x31, 0x42, 0xab, 0x30, 0x72, 0xc5, 0x63, 0xdc, 0x23, 0x8c, 0xfb, 0xc1, 0x3b, 0x73, 0x5f, - 0xde, 0x66, 0xe4, 0xe9, 0xcb, 0xdb, 0xfa, 0xc6, 0xa6, 0x56, 0x2d, 0xad, 0x6b, 0x02, 0x8e, 0x4e, - 0x41, 0xc2, 0xc2, 0x2f, 0xb5, 0xbb, 0x53, 0x3c, 0x13, 0x0d, 0xeb, 0xf8, 0x53, 0x90, 0xb8, 0x4e, - 0xf0, 0xd5, 0xee, 0xc4, 0xca, 0x44, 0x3f, 0xc7, 0xd0, 0x3f, 0x03, 0x49, 0xe6, 0x2f, 0x04, 0x20, - 0x3c, 0xa6, 0x9e, 0x40, 0x29, 0x48, 0x2c, 0x6f, 0x6a, 0x34, 0xfc, 0x55, 0xc8, 0x72, 0xa9, 0xbe, - 0xb5, 0x56, 0x59, 0xae, 0xa8, 0xb1, 0xb9, 0x73, 0x30, 0xc2, 0x9d, 0x40, 0x8f, 0x46, 0xe0, 0x06, - 0xf5, 0x84, 0x18, 0x0a, 0x0e, 0x45, 0xce, 0xee, 0x56, 0xcb, 0x15, 0x4d, 0x8d, 0x85, 0xb7, 0xd7, - 0x83, 0x6c, 0xb8, 0x5d, 0xfb, 0xc5, 0xc4, 0xd4, 0xdf, 0x29, 0x90, 0x09, 0xb5, 0x5f, 0xb4, 0xf0, - 0x63, 0xcb, 0x72, 0xae, 0xeb, 0xd8, 0x32, 0xb1, 0x27, 0x82, 0x02, 0x98, 0xa8, 0x44, 0x25, 0xc3, - 0x6e, 0xda, 0x2f, 0xc4, 0xf8, 0xd7, 0x14, 0x50, 0x7b, 0x5b, 0xb7, 0x1e, 0x03, 0x95, 0x0f, 0xd4, - 0xc0, 0x57, 0x15, 0xc8, 0x75, 0xf7, 0x6b, 0x3d, 0xe6, 0x9d, 0xfe, 0x40, 0xcd, 0xfb, 0x92, 0x02, - 0x63, 0x5d, 0x5d, 0xda, 0xff, 0x2b, 0xeb, 0x5e, 0x89, 0xc3, 0xe4, 0x00, 0x1c, 0x2a, 0x89, 0x76, - 0x96, 0x77, 0xd8, 0x1f, 0x19, 0xe6, 0x59, 0x0b, 0xb4, 0x5a, 0x6e, 0x61, 0xd7, 0x17, 0xdd, 0xef, - 0xa3, 0xa0, 0x9a, 0x35, 0x62, 0xfb, 0xe6, 0xbe, 0x49, 0x5c, 0xf1, 0x0a, 0xce, 0x7b, 0xdc, 0xf1, - 0x8e, 0x9c, 0xbf, 0x85, 0x7f, 0x18, 0x50, 0xd3, 0xf1, 0x4c, 0xdf, 0xbc, 0x46, 0x74, 0xd3, 0x96, - 0xef, 0xeb, 0xb4, 0xe7, 0x4d, 0x68, 0xaa, 0x9c, 0x59, 0xb3, 0xfd, 0x40, 0xdb, 0x26, 0x75, 0xdc, - 0xa3, 0x4d, 0x73, 0x5f, 0x5c, 0x53, 0xe5, 0x4c, 0xa0, 0x7d, 0x1a, 0xb2, 0x35, 0xa7, 0x45, 0xdb, - 0x07, 0xae, 0x47, 0x53, 0xad, 0xa2, 0x65, 0xb8, 0x2c, 0x50, 0x11, 0xfd, 0x5d, 0xe7, 0xa2, 0x20, - 0xab, 0x65, 0xb8, 0x8c, 0xab, 0x3c, 0x02, 0xe3, 0xb8, 0x5e, 0x77, 0x29, 0xb9, 0x24, 0xe2, 0x4d, - 0x6b, 0x2e, 0x10, 0x33, 0xc5, 0xe9, 0xcb, 0x90, 0x92, 0x7e, 0xa0, 0xd5, 0x8c, 0x7a, 0x42, 0x6f, - 0xf2, 0xeb, 0x9a, 0xd8, 0x7c, 0x5a, 0x4b, 0xd9, 0x72, 0xf2, 0x34, 0x64, 0x4d, 0x4f, 0xef, 0xdc, - 0x1b, 0xc6, 0x66, 0x63, 0xf3, 0x29, 0x2d, 0x63, 0x7a, 0xc1, 0x45, 0xd1, 0xdc, 0xeb, 0x31, 0xc8, - 0x75, 0xdf, 0x7b, 0xa2, 0x15, 0x48, 0x59, 0x8e, 0x81, 0x59, 0x20, 0xf0, 0x4b, 0xf7, 0xf9, 0x88, - 0xab, 0xd2, 0x85, 0x75, 0xa1, 0xaf, 0x05, 0xc8, 0xe9, 0x7f, 0x54, 0x20, 0x25, 0xc5, 0xe8, 0x24, - 0x24, 0x9a, 0xd8, 0x3f, 0x60, 0x74, 0xc9, 0x72, 0x4c, 0x55, 0x34, 0x36, 0xa6, 0x72, 0xaf, 0x89, - 0x6d, 0x16, 0x02, 0x42, 0x4e, 0xc7, 0x74, 0x5f, 0x2d, 0x82, 0x6b, 0xac, 0x1d, 0x76, 0x1a, 0x0d, - 0x62, 0xfb, 0x9e, 0xdc, 0x57, 0x21, 0x5f, 0x16, 0x62, 0xf4, 0x38, 0x4c, 0xf8, 0x2e, 0x36, 0xad, - 0x2e, 0xdd, 0x04, 0xd3, 0x55, 0xe5, 0x44, 0xa0, 0x5c, 0x84, 0x53, 0x92, 0xb7, 0x46, 0x7c, 0x6c, - 0x1c, 0x90, 0x5a, 0x07, 0x34, 0xc2, 0x2e, 0xd5, 0xee, 0x15, 0x0a, 0x2b, 0x62, 0x5e, 0x62, 0xe7, - 0x7e, 0xa8, 0xc0, 0x84, 0x6c, 0xe0, 0x6b, 0x81, 0xb3, 0xaa, 0x00, 0xd8, 0xb6, 0x1d, 0x3f, 0xec, - 0xae, 0xfe, 0x50, 0xee, 0xc3, 0x2d, 0x94, 0x02, 0x90, 0x16, 0x22, 0x98, 0x6e, 0x00, 0x74, 0x66, - 0x8e, 0x74, 0xdb, 0x0c, 0x64, 0xc4, 0xa5, 0x36, 0xfb, 0x65, 0x84, 0xbf, 0xf5, 0x01, 0x17, 0xd1, - 0x4e, 0x1f, 0x4d, 0x41, 0x72, 0x8f, 0xd4, 0x4d, 0x5b, 0x5c, 0xb5, 0xf1, 0x81, 0xbc, 0xc0, 0x4b, - 0x04, 0x17, 0x78, 0xe5, 0x4f, 0xc1, 0xa4, 0xe1, 0x34, 0x7a, 0xcd, 0x2d, 0xab, 0x3d, 0x6f, 0x9e, - 0xde, 0xc7, 0x95, 0x17, 0xa0, 0xd3, 0x9d, 0x7d, 0x45, 0x51, 0xbe, 0x1a, 0x8b, 0xaf, 0x6e, 0x95, - 0xbf, 0x1e, 0x9b, 0x5e, 0xe5, 0xd0, 0x2d, 0xb9, 0x52, 0x8d, 0xec, 0x5b, 0xc4, 0xa0, 0xd6, 0xc3, - 0x4f, 0x1e, 0x86, 0x8f, 0xd4, 0x4d, 0xff, 0xa0, 0xb5, 0xb7, 0x60, 0x38, 0x8d, 0x33, 0x75, 0xa7, - 0xee, 0x74, 0x7e, 0x0c, 0xa2, 0x23, 0x36, 0x60, 0xff, 0x89, 0x1f, 0x84, 0xd2, 0x81, 0x74, 0x3a, - 0xf2, 0xd7, 0xa3, 0xe2, 0x06, 0x4c, 0x0a, 0x65, 0x9d, 0xdd, 0x48, 0xf3, 0x3e, 0x1c, 0xdd, 0xf1, - 0x56, 0x22, 0xff, 0xad, 0xb7, 0x58, 0xa5, 0xd3, 0x26, 0x04, 0x94, 0xce, 0xf1, 0x4e, 0xbd, 0xa8, - 0xc1, 0x3d, 0x5d, 0x7c, 0xfc, 0x68, 0x12, 0x37, 0x82, 0xf1, 0xfb, 0x82, 0x71, 0x32, 0xc4, 0xb8, - 0x2d, 0xa0, 0xc5, 0x65, 0x18, 0x3b, 0x0e, 0xd7, 0xdf, 0x0b, 0xae, 0x2c, 0x09, 0x93, 0xac, 0xc2, - 0x38, 0x23, 0x31, 0x5a, 0x9e, 0xef, 0x34, 0x58, 0xde, 0xbb, 0x33, 0xcd, 0x3f, 0xbc, 0xc5, 0xcf, - 0x4a, 0x8e, 0xc2, 0x96, 0x03, 0x54, 0xb1, 0x08, 0xec, 0x12, 0xbe, 0x46, 0x0c, 0x2b, 0x82, 0xe1, - 0x0d, 0x61, 0x48, 0xa0, 0x5f, 0xfc, 0x24, 0x4c, 0xd1, 0xff, 0x59, 0x5a, 0x0a, 0x5b, 0x12, 0x7d, - 0x07, 0x93, 0xff, 0xe1, 0xcb, 0xfc, 0x38, 0x4e, 0x06, 0x04, 0x21, 0x9b, 0x42, 0xbb, 0x58, 0x27, - 0xbe, 0x4f, 0x5c, 0x4f, 0xc7, 0xd6, 0x20, 0xf3, 0x42, 0x6f, 0xb0, 0xf9, 0x2f, 0xbe, 0xd3, 0xbd, - 0x8b, 0xab, 0x1c, 0x59, 0xb2, 0xac, 0xe2, 0x2e, 0xdc, 0x3b, 0x20, 0x2a, 0x86, 0xe0, 0x7c, 0x45, - 0x70, 0x4e, 0xf5, 0x45, 0x06, 0xa5, 0xdd, 0x02, 0x29, 0x0f, 0xf6, 0x72, 0x08, 0xce, 0x2f, 0x09, - 0x4e, 0x24, 0xb0, 0x72, 0x4b, 0x29, 0xe3, 0x65, 0x98, 0xb8, 0x46, 0xdc, 0x3d, 0xc7, 0x13, 0x17, - 0x07, 0x43, 0xd0, 0xbd, 0x2a, 0xe8, 0xc6, 0x05, 0x90, 0x5d, 0x23, 0x50, 0xae, 0xa7, 0x20, 0xb5, - 0x8f, 0x0d, 0x32, 0x04, 0xc5, 0x97, 0x05, 0xc5, 0x28, 0xd5, 0xa7, 0xd0, 0x12, 0x64, 0xeb, 0x8e, - 0xa8, 0x4c, 0xd1, 0xf0, 0xd7, 0x04, 0x3c, 0x23, 0x31, 0x82, 0xa2, 0xe9, 0x34, 0x5b, 0x16, 0x2d, - 0x5b, 0xd1, 0x14, 0x7f, 0x28, 0x29, 0x24, 0x46, 0x50, 0x1c, 0xc3, 0xad, 0x5f, 0x91, 0x14, 0x5e, - 0xc8, 0x9f, 0xcf, 0x40, 0xc6, 0xb1, 0xad, 0xb6, 0x63, 0x0f, 0x63, 0xc4, 0x1f, 0x09, 0x06, 0x10, - 0x10, 0x4a, 0x70, 0x11, 0xd2, 0xc3, 0x6e, 0xc4, 0x1f, 0xbf, 0x23, 0x8f, 0x87, 0xdc, 0x81, 0x55, - 0x18, 0x97, 0x09, 0xca, 0x74, 0xec, 0x21, 0x28, 0xfe, 0x44, 0x50, 0xe4, 0x42, 0x30, 0xb1, 0x0c, - 0x9f, 0x78, 0x7e, 0x9d, 0x0c, 0x43, 0xf2, 0xba, 0x5c, 0x86, 0x80, 0x08, 0x57, 0xee, 0x11, 0xdb, - 0x38, 0x18, 0x8e, 0xe1, 0x6b, 0xd2, 0x95, 0x12, 0x43, 0x29, 0x96, 0x61, 0xac, 0x81, 0x5d, 0xef, - 0x00, 0x5b, 0x43, 0x6d, 0xc7, 0x9f, 0x0a, 0x8e, 0x6c, 0x00, 0x12, 0x1e, 0x69, 0xd9, 0xc7, 0xa1, - 0xf9, 0xba, 0xf4, 0x48, 0x08, 0x26, 0x8e, 0x9e, 0xe7, 0xb3, 0xbb, 0x99, 0xe3, 0xb0, 0xfd, 0x99, - 0x3c, 0x7a, 0x1c, 0x5b, 0x0d, 0x33, 0x5e, 0x84, 0xb4, 0x67, 0xbe, 0x34, 0x14, 0xcd, 0x9f, 0xcb, - 0x9d, 0x66, 0x00, 0x0a, 0x7e, 0x1e, 0x4e, 0x0d, 0x2c, 0x13, 0x43, 0x90, 0xfd, 0x85, 0x20, 0x3b, - 0x39, 0xa0, 0x54, 0x88, 0x94, 0x70, 0x5c, 0xca, 0xbf, 0x94, 0x29, 0x81, 0xf4, 0x70, 0x6d, 0xd1, - 0xce, 0xde, 0xc3, 0xfb, 0xc7, 0xf3, 0xda, 0x37, 0xa4, 0xd7, 0x38, 0xb6, 0xcb, 0x6b, 0x3b, 0x70, - 0x52, 0x30, 0x1e, 0x6f, 0x5f, 0xbf, 0x29, 0x13, 0x2b, 0x47, 0xef, 0x76, 0xef, 0xee, 0xa7, 0x60, - 0x3a, 0x70, 0xa7, 0x6c, 0x4a, 0x3d, 0xbd, 0x81, 0x9b, 0x43, 0x30, 0x7f, 0x4b, 0x30, 0xcb, 0x8c, - 0x1f, 0x74, 0xb5, 0x5e, 0x15, 0x37, 0x29, 0xf9, 0x73, 0x90, 0x97, 0xe4, 0x2d, 0xdb, 0x25, 0x86, - 0x53, 0xb7, 0xcd, 0x97, 0x48, 0x6d, 0x08, 0xea, 0xbf, 0xea, 0xd9, 0xaa, 0xdd, 0x10, 0x9c, 0x32, - 0xaf, 0x81, 0x1a, 0xf4, 0x2a, 0xba, 0xd9, 0x68, 0x3a, 0xae, 0x1f, 0xc1, 0xf8, 0xd7, 0x72, 0xa7, - 0x02, 0xdc, 0x1a, 0x83, 0x15, 0x2b, 0x90, 0x63, 0xc3, 0x61, 0x43, 0xf2, 0x6f, 0x04, 0xd1, 0x58, - 0x07, 0x25, 0x12, 0x87, 0xe1, 0x34, 0x9a, 0xd8, 0x1d, 0x26, 0xff, 0x7d, 0x5b, 0x26, 0x0e, 0x01, - 0x11, 0x89, 0xc3, 0x6f, 0x37, 0x09, 0xad, 0xf6, 0x43, 0x30, 0x7c, 0x47, 0x26, 0x0e, 0x89, 0x11, - 0x14, 0xb2, 0x61, 0x18, 0x82, 0xe2, 0x6f, 0x25, 0x85, 0xc4, 0x50, 0x8a, 0x4f, 0x74, 0x0a, 0xad, - 0x4b, 0xea, 0xa6, 0xe7, 0xbb, 0xbc, 0x15, 0xbe, 0x33, 0xd5, 0x77, 0xdf, 0xe9, 0x6e, 0xc2, 0xb4, - 0x10, 0xb4, 0x78, 0x19, 0xc6, 0x7b, 0x5a, 0x0c, 0x14, 0xf5, 0x8b, 0x7e, 0xfe, 0xd3, 0xef, 0x89, - 0x64, 0xd4, 0xdd, 0x61, 0x14, 0xd7, 0xe9, 0xbe, 0x77, 0xf7, 0x01, 0xd1, 0x64, 0x2f, 0xbf, 0x17, - 0x6c, 0x7d, 0x57, 0x1b, 0x50, 0xbc, 0x04, 0x63, 0x5d, 0x3d, 0x40, 0x34, 0xd5, 0xaf, 0x08, 0xaa, - 0x6c, 0xb8, 0x05, 0x28, 0x9e, 0x83, 0x04, 0xad, 0xe7, 0xd1, 0xf0, 0x5f, 0x15, 0x70, 0xa6, 0x5e, - 0xfc, 0x18, 0xa4, 0x64, 0x1d, 0x8f, 0x86, 0xfe, 0x9a, 0x80, 0x06, 0x10, 0x0a, 0x97, 0x35, 0x3c, - 0x1a, 0xfe, 0x59, 0x09, 0x97, 0x10, 0x0a, 0x1f, 0xde, 0x85, 0xdf, 0xfb, 0x7c, 0x42, 0xe4, 0x61, - 0xe9, 0xbb, 0x8b, 0x30, 0x2a, 0x8a, 0x77, 0x34, 0xfa, 0x73, 0xe2, 0xe1, 0x12, 0x51, 0x7c, 0x12, - 0x92, 0x43, 0x3a, 0xfc, 0x37, 0x04, 0x94, 0xeb, 0x17, 0x97, 0x21, 0x13, 0x2a, 0xd8, 0xd1, 0xf0, - 0xdf, 0x14, 0xf0, 0x30, 0x8a, 0x9a, 0x2e, 0x0a, 0x76, 0x34, 0xc1, 0x6f, 0x49, 0xd3, 0x05, 0x82, - 0xba, 0x4d, 0xd6, 0xea, 0x68, 0xf4, 0x6f, 0x4b, 0xaf, 0x4b, 0x48, 0xf1, 0x19, 0x48, 0x07, 0xf9, - 0x37, 0x1a, 0xff, 0x3b, 0x02, 0xdf, 0xc1, 0x50, 0x0f, 0x84, 0xf2, 0x7f, 0x34, 0xc5, 0xef, 0x4a, - 0x0f, 0x84, 0x50, 0xf4, 0x18, 0xf5, 0xd6, 0xf4, 0x68, 0xa6, 0xdf, 0x93, 0xc7, 0xa8, 0xa7, 0xa4, - 0xd3, 0xdd, 0x64, 0x69, 0x30, 0x9a, 0xe2, 0xf7, 0xe5, 0x6e, 0x32, 0x7d, 0x6a, 0x46, 0x6f, 0x91, - 0x8c, 0xe6, 0xf8, 0x03, 0x69, 0x46, 0x4f, 0x8d, 0x2c, 0x6e, 0x01, 0xea, 0x2f, 0x90, 0xd1, 0x7c, - 0x5f, 0x10, 0x7c, 0x13, 0x7d, 0xf5, 0xb1, 0xf8, 0x2c, 0x9c, 0x1c, 0x5c, 0x1c, 0xa3, 0x59, 0xbf, - 0xf8, 0x5e, 0xcf, 0xeb, 0x4c, 0xb8, 0x36, 0x16, 0x77, 0x3a, 0x59, 0x36, 0x5c, 0x18, 0xa3, 0x69, - 0x5f, 0x79, 0xaf, 0x3b, 0xd1, 0x86, 0xeb, 0x62, 0xb1, 0x04, 0xd0, 0xa9, 0x49, 0xd1, 0x5c, 0xaf, - 0x0a, 0xae, 0x10, 0x88, 0x1e, 0x0d, 0x51, 0x92, 0xa2, 0xf1, 0x5f, 0x96, 0x47, 0x43, 0x20, 0xe8, - 0xd1, 0x90, 0xd5, 0x28, 0x1a, 0xfd, 0x9a, 0x3c, 0x1a, 0x12, 0x52, 0xbc, 0x08, 0x29, 0xbb, 0x65, - 0x59, 0x34, 0xb6, 0xd0, 0x9d, 0x3f, 0xb2, 0xc9, 0xff, 0xf8, 0x7d, 0x01, 0x96, 0x80, 0xe2, 0x39, - 0x48, 0x92, 0xc6, 0x1e, 0xa9, 0x45, 0x21, 0xff, 0xed, 0x7d, 0x99, 0x4f, 0xa8, 0x76, 0xf1, 0x19, - 0x00, 0xfe, 0x32, 0xcd, 0x7e, 0x63, 0x89, 0xc0, 0xfe, 0xfb, 0xfb, 0xe2, 0xf7, 0xfb, 0x0e, 0xa4, - 0x43, 0xc0, 0xbf, 0x06, 0xb8, 0x33, 0xc1, 0x3b, 0xdd, 0x04, 0xec, 0x05, 0xfc, 0x29, 0x18, 0xbd, - 0xe2, 0x39, 0xb6, 0x8f, 0xeb, 0x51, 0xe8, 0xff, 0x10, 0x68, 0xa9, 0x4f, 0x1d, 0xd6, 0x70, 0x5c, - 0xe2, 0xe3, 0xba, 0x17, 0x85, 0xfd, 0x4f, 0x81, 0x0d, 0x00, 0x14, 0x6c, 0x60, 0xcf, 0x1f, 0x66, - 0xdd, 0xff, 0x25, 0xc1, 0x12, 0x40, 0x8d, 0xa6, 0xff, 0x5f, 0x25, 0xed, 0x28, 0xec, 0xbb, 0xd2, - 0x68, 0xa1, 0x5f, 0xfc, 0x18, 0xa4, 0xe9, 0xbf, 0xfc, 0x9b, 0x96, 0x08, 0xf0, 0x7f, 0x0b, 0x70, - 0x07, 0x41, 0x9f, 0xec, 0xf9, 0x35, 0xdf, 0x8c, 0x76, 0xf6, 0xff, 0x88, 0x9d, 0x96, 0xfa, 0xc5, - 0x12, 0x64, 0x3c, 0xbf, 0x56, 0x6b, 0x89, 0x8e, 0x26, 0x02, 0xfe, 0x93, 0xf7, 0x83, 0x97, 0xdc, - 0x00, 0x53, 0x3e, 0x3d, 0xf8, 0xbe, 0x0e, 0x56, 0x9d, 0x55, 0x87, 0xdf, 0xd4, 0xc1, 0x37, 0xc6, - 0x61, 0xda, 0x70, 0x1a, 0x7b, 0x8e, 0x77, 0x66, 0xcf, 0xf1, 0x0f, 0xce, 0x48, 0x9f, 0x89, 0x2b, - 0xb6, 0xc0, 0x87, 0xd3, 0xc7, 0xbb, 0x9b, 0x9b, 0xfb, 0xf1, 0x18, 0xa4, 0x96, 0xb1, 0xe7, 0xe3, - 0xeb, 0xb8, 0x8d, 0x1e, 0x82, 0xd4, 0x9a, 0xed, 0x9f, 0x5d, 0xdc, 0xf2, 0x5d, 0xf6, 0xcb, 0x4c, - 0xbc, 0x9c, 0xbe, 0x7d, 0x73, 0x26, 0x69, 0x52, 0x99, 0x16, 0x4c, 0xa1, 0x07, 0x20, 0xc9, 0xfe, - 0x67, 0x37, 0x94, 0xf1, 0xf2, 0xd8, 0x1b, 0x37, 0x67, 0x4e, 0x74, 0xf4, 0xf8, 0x1c, 0x7a, 0x1e, - 0x32, 0xd5, 0xf6, 0xae, 0x69, 0xfb, 0xe7, 0x97, 0x28, 0x1d, 0x5d, 0x75, 0xa2, 0xfc, 0xe4, 0xed, - 0x9b, 0x33, 0x67, 0x8f, 0x34, 0x90, 0xd6, 0xc2, 0xce, 0xc2, 0x24, 0x9a, 0x7d, 0xd0, 0x17, 0xe6, - 0x42, 0xcf, 0x42, 0x4a, 0x0e, 0xf9, 0x4d, 0x7f, 0xf9, 0xa2, 0x30, 0xe1, 0xae, 0xb8, 0x03, 0x32, - 0xf4, 0x4b, 0x90, 0xad, 0xb6, 0x2f, 0x59, 0x0e, 0x16, 0x3e, 0x48, 0xce, 0x2a, 0xf3, 0xb1, 0xf2, - 0x85, 0xdb, 0x37, 0x67, 0x96, 0x86, 0x26, 0x16, 0x70, 0xc6, 0xdc, 0xc5, 0x86, 0x5e, 0x80, 0x74, - 0x30, 0x66, 0xbf, 0x25, 0xc4, 0xca, 0x1f, 0x15, 0x76, 0xdf, 0x1d, 0x7d, 0x87, 0x2e, 0x64, 0x39, - 0x77, 0xf7, 0xe8, 0xac, 0x32, 0xaf, 0xdc, 0x8d, 0xe5, 0xc2, 0x27, 0x5d, 0x6c, 0x21, 0xcb, 0xcf, - 0x2f, 0xb1, 0x1f, 0x2f, 0x94, 0xbb, 0xb5, 0x5c, 0xd0, 0x77, 0xe8, 0xd0, 0x65, 0x18, 0xad, 0xb6, - 0xcb, 0x6d, 0x9f, 0x78, 0xec, 0x2b, 0x97, 0x6c, 0xf9, 0x89, 0xdb, 0x37, 0x67, 0x3e, 0x3c, 0x24, - 0x2b, 0xc3, 0x69, 0x92, 0x00, 0xcd, 0x42, 0x66, 0xc3, 0x71, 0x1b, 0xd8, 0xe2, 0x7c, 0xc0, 0x7f, - 0x8c, 0x09, 0x89, 0xd0, 0x2e, 0x5d, 0x09, 0xdf, 0x6d, 0x8f, 0x7d, 0xa2, 0xff, 0x33, 0xc4, 0x64, - 0x87, 0x09, 0x99, 0x90, 0xac, 0xb6, 0xab, 0xb8, 0x99, 0xcf, 0xb2, 0x5f, 0x0a, 0xee, 0x5f, 0x08, - 0x10, 0xf2, 0x6c, 0x2d, 0xb0, 0x79, 0xf6, 0x35, 0x42, 0x79, 0xe9, 0xf6, 0xcd, 0x99, 0x27, 0x86, - 0x7e, 0x62, 0x15, 0x37, 0xd9, 0xe3, 0xf8, 0x13, 0xd0, 0xb7, 0x15, 0x7a, 0xb0, 0xf8, 0x55, 0x2b, - 0x7d, 0xe2, 0x18, 0x7b, 0xe2, 0x03, 0x03, 0x9f, 0x18, 0x68, 0xf1, 0xe7, 0xda, 0x9f, 0x79, 0xf3, - 0x18, 0x2b, 0xe5, 0xaf, 0x33, 0xf4, 0xd1, 0xbf, 0xfe, 0xe6, 0x5d, 0x1f, 0xda, 0xc0, 0x02, 0xf4, - 0xb2, 0x02, 0x63, 0xd5, 0xf6, 0x86, 0x28, 0xac, 0xd4, 0xf2, 0x9c, 0xf8, 0x90, 0x7b, 0x90, 0xe5, - 0x21, 0x3d, 0x6e, 0xfb, 0xf9, 0xcf, 0xbc, 0x39, 0xb3, 0x38, 0xb4, 0x11, 0x2c, 0x05, 0x31, 0x1b, - 0xba, 0x9f, 0x89, 0x3e, 0xcb, 0xac, 0xa8, 0xd0, 0x22, 0x5d, 0x23, 0x35, 0x6a, 0xc5, 0xf8, 0x1d, - 0xac, 0x08, 0xe9, 0x71, 0x2b, 0x8a, 0x34, 0xea, 0xef, 0xde, 0x92, 0x10, 0x1f, 0xda, 0x84, 0x11, - 0xee, 0x61, 0xf6, 0x85, 0x55, 0xfa, 0x98, 0x61, 0xd8, 0xd9, 0x1c, 0x4d, 0xd0, 0x4c, 0x5f, 0x00, - 0xe8, 0xc4, 0x18, 0x52, 0x21, 0x7e, 0x95, 0xb4, 0xc5, 0x97, 0x74, 0xf4, 0x5f, 0x34, 0xd5, 0xf9, - 0x52, 0x54, 0x99, 0x4f, 0x88, 0xcf, 0x3f, 0x8b, 0xb1, 0x0b, 0xca, 0xf4, 0xd3, 0xa0, 0xf6, 0xc6, - 0xca, 0xb1, 0xf0, 0x1a, 0xa0, 0xfe, 0x1d, 0x0b, 0x33, 0x24, 0x39, 0xc3, 0xc3, 0x61, 0x86, 0xcc, - 0xa2, 0xda, 0xf1, 0xf9, 0xb3, 0xa6, 0xe5, 0x39, 0x76, 0x1f, 0x67, 0xaf, 0xff, 0x7f, 0x36, 0xce, - 0xb9, 0x02, 0x8c, 0x70, 0x21, 0x5d, 0xcb, 0x1a, 0x2b, 0x1f, 0xac, 0xca, 0x69, 0x7c, 0x50, 0x5e, - 0x7f, 0xe3, 0x56, 0xe1, 0xc4, 0x0f, 0x6e, 0x15, 0x4e, 0xfc, 0xd3, 0xad, 0xc2, 0x89, 0x1f, 0xdd, - 0x2a, 0x28, 0x6f, 0xdf, 0x2a, 0x28, 0xef, 0xde, 0x2a, 0x28, 0x3f, 0xbd, 0x55, 0x50, 0x6e, 0x1c, - 0x16, 0x94, 0xaf, 0x1d, 0x16, 0x94, 0x6f, 0x1e, 0x16, 0x94, 0xef, 0x1e, 0x16, 0x94, 0xef, 0x1d, - 0x16, 0x94, 0x37, 0x0e, 0x0b, 0xca, 0x0f, 0x0e, 0x0b, 0xca, 0x8f, 0x0e, 0x0b, 0xca, 0xdb, 0x87, - 0x85, 0x13, 0xef, 0x1e, 0x16, 0x94, 0x9f, 0x1e, 0x16, 0x4e, 0xdc, 0xf8, 0x97, 0xc2, 0x89, 0xff, - 0x0b, 0x00, 0x00, 0xff, 0xff, 0xed, 0xb8, 0xd7, 0x29, 0x2c, 0x35, 0x00, 0x00, + // 4124 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0x4b, 0x10, 0x1d, 0x83, 0x14, 0xfd, + 0x47, 0xdb, 0x09, 0xe5, 0xd1, 0x9f, 0x65, 0x28, 0xb1, 0x07, 0x20, 0x21, 0x06, 0x2a, 0x41, 0x20, + 0x4b, 0x32, 0x92, 0xdc, 0xce, 0xec, 0x2c, 0x17, 0x97, 0xe0, 0x4a, 0x8b, 0x5d, 0x64, 0x77, 0x21, + 0x19, 0x7e, 0x52, 0xe3, 0xb6, 0x99, 0xb4, 0xd3, 0xff, 0xce, 0x34, 0x71, 0x1d, 0xb7, 0xcd, 0x4c, + 0xeb, 0x34, 0x69, 0x9b, 0xa4, 0x6d, 0xd2, 0x4c, 0x9f, 0xf2, 0x92, 0xd6, 0x4f, 0x9d, 0xe4, 0xad, + 0x0f, 0x1d, 0xd9, 0x62, 0x3c, 0x53, 0xa7, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xf2, 0x4b, 0xe7, + 0xfe, 0x2d, 0x16, 0x3f, 0xe4, 0x82, 0xca, 0x38, 0x79, 0x22, 0xf6, 0xdc, 0xf3, 0x7d, 0x7b, 0xee, + 0xb9, 0xe7, 0x9e, 0x73, 0xf6, 0xee, 0x12, 0x7e, 0x78, 0x0e, 0x16, 0x1a, 0xb6, 0xdd, 0x30, 0xf1, + 0xa9, 0x96, 0x63, 0x7b, 0xf6, 0x4e, 0x7b, 0xf7, 0x54, 0x1d, 0xbb, 0xba, 0x63, 0xb4, 0x3c, 0xdb, + 0x59, 0xa6, 0x32, 0x34, 0xc5, 0x34, 0x96, 0x85, 0xc6, 0x62, 0x05, 0xa6, 0x2f, 0x19, 0x26, 0x5e, + 0xf5, 0x15, 0x37, 0xb1, 0x87, 0x2e, 0x40, 0x6c, 0xd7, 0x30, 0x71, 0x56, 0x5a, 0x88, 0x2e, 0xa5, + 0x4e, 0x3f, 0xb2, 0xdc, 0x07, 0x5a, 0xee, 0x45, 0xd4, 0x88, 0x58, 0xa1, 0x88, 0xc5, 0xb7, 0x63, + 0x30, 0x33, 0x64, 0x14, 0x21, 0x88, 0x59, 0x5a, 0x93, 0x30, 0x4a, 0x4b, 0x49, 0x85, 0xfe, 0x46, + 0x59, 0x98, 0x68, 0x69, 0xfa, 0x0d, 0xad, 0x81, 0xb3, 0x11, 0x2a, 0x16, 0x97, 0x28, 0x07, 0x50, + 0xc7, 0x2d, 0x6c, 0xd5, 0xb1, 0xa5, 0x77, 0xb2, 0xd1, 0x85, 0xe8, 0x52, 0x52, 0x09, 0x48, 0xd0, + 0x53, 0x30, 0xdd, 0x6a, 0xef, 0x98, 0x86, 0xae, 0x06, 0xd4, 0x60, 0x21, 0xba, 0x14, 0x57, 0x64, + 0x36, 0xb0, 0xda, 0x55, 0x7e, 0x1c, 0xa6, 0x6e, 0x61, 0xed, 0x46, 0x50, 0x35, 0x45, 0x55, 0x33, + 0x44, 0x1c, 0x50, 0x5c, 0x81, 0x74, 0x13, 0xbb, 0xae, 0xd6, 0xc0, 0xaa, 0xd7, 0x69, 0xe1, 0x6c, + 0x8c, 0xce, 0x7e, 0x61, 0x60, 0xf6, 0xfd, 0x33, 0x4f, 0x71, 0xd4, 0x56, 0xa7, 0x85, 0x51, 0x01, + 0x92, 0xd8, 0x6a, 0x37, 0x19, 0x43, 0xfc, 0x00, 0xff, 0x95, 0xac, 0x76, 0xb3, 0x9f, 0x25, 0x41, + 0x60, 0x9c, 0x62, 0xc2, 0xc5, 0xce, 0x4d, 0x43, 0xc7, 0xd9, 0x71, 0x4a, 0xf0, 0xf8, 0x00, 0xc1, + 0x26, 0x1b, 0xef, 0xe7, 0x10, 0x38, 0xb4, 0x02, 0x49, 0xfc, 0xa2, 0x87, 0x2d, 0xd7, 0xb0, 0xad, + 0xec, 0x04, 0x25, 0x79, 0x74, 0xc8, 0x2a, 0x62, 0xb3, 0xde, 0x4f, 0xd1, 0xc5, 0xa1, 0xf3, 0x30, + 0x61, 0xb7, 0x3c, 0xc3, 0xb6, 0xdc, 0x6c, 0x62, 0x41, 0x5a, 0x4a, 0x9d, 0xfe, 0xc8, 0xd0, 0x40, + 0xa8, 0x32, 0x1d, 0x45, 0x28, 0xa3, 0x32, 0xc8, 0xae, 0xdd, 0x76, 0x74, 0xac, 0xea, 0x76, 0x1d, + 0xab, 0x86, 0xb5, 0x6b, 0x67, 0x93, 0x94, 0x60, 0x7e, 0x70, 0x22, 0x54, 0x71, 0xc5, 0xae, 0xe3, + 0xb2, 0xb5, 0x6b, 0x2b, 0x19, 0xb7, 0xe7, 0x1a, 0x1d, 0x83, 0x71, 0xb7, 0x63, 0x79, 0xda, 0x8b, + 0xd9, 0x34, 0x8d, 0x10, 0x7e, 0xb5, 0xf8, 0x7f, 0x71, 0x98, 0x1a, 0x25, 0xc4, 0x2e, 0x42, 0x7c, + 0x97, 0xcc, 0x32, 0x1b, 0x39, 0x8a, 0x0f, 0x18, 0xa6, 0xd7, 0x89, 0xe3, 0xf7, 0xe9, 0xc4, 0x02, + 0xa4, 0x2c, 0xec, 0x7a, 0xb8, 0xce, 0x22, 0x22, 0x3a, 0x62, 0x4c, 0x01, 0x03, 0x0d, 0x86, 0x54, + 0xec, 0xbe, 0x42, 0xea, 0x2a, 0x4c, 0xf9, 0x26, 0xa9, 0x8e, 0x66, 0x35, 0x44, 0x6c, 0x9e, 0x0a, + 0xb3, 0x64, 0xb9, 0x24, 0x70, 0x0a, 0x81, 0x29, 0x19, 0xdc, 0x73, 0x8d, 0x56, 0x01, 0x6c, 0x0b, + 0xdb, 0xbb, 0x6a, 0x1d, 0xeb, 0x66, 0x36, 0x71, 0x80, 0x97, 0xaa, 0x44, 0x65, 0xc0, 0x4b, 0x36, + 0x93, 0xea, 0x26, 0x7a, 0xb6, 0x1b, 0x6a, 0x13, 0x07, 0x44, 0x4a, 0x85, 0x6d, 0xb2, 0x81, 0x68, + 0xdb, 0x86, 0x8c, 0x83, 0x49, 0xdc, 0xe3, 0x3a, 0x9f, 0x59, 0x92, 0x1a, 0xb1, 0x1c, 0x3a, 0x33, + 0x85, 0xc3, 0xd8, 0xc4, 0x26, 0x9d, 0xe0, 0x25, 0x7a, 0x18, 0x7c, 0x81, 0x4a, 0xc3, 0x0a, 0x68, + 0x16, 0x4a, 0x0b, 0xe1, 0x86, 0xd6, 0xc4, 0x73, 0x17, 0x20, 0xd3, 0xeb, 0x1e, 0x34, 0x0b, 0x71, + 0xd7, 0xd3, 0x1c, 0x8f, 0x46, 0x61, 0x5c, 0x61, 0x17, 0x48, 0x86, 0x28, 0xb6, 0xea, 0x34, 0xcb, + 0xc5, 0x15, 0xf2, 0x73, 0xee, 0x19, 0x98, 0xec, 0xb9, 0xfd, 0xa8, 0xc0, 0xc5, 0x2f, 0x8c, 0xc3, + 0xec, 0xb0, 0x98, 0x1b, 0x1a, 0xfe, 0xc7, 0x60, 0xdc, 0x6a, 0x37, 0x77, 0xb0, 0x93, 0x8d, 0x52, + 0x06, 0x7e, 0x85, 0x0a, 0x10, 0x37, 0xb5, 0x1d, 0x6c, 0x66, 0x63, 0x0b, 0xd2, 0x52, 0xe6, 0xf4, + 0x53, 0x23, 0x45, 0xf5, 0xf2, 0x3a, 0x81, 0x28, 0x0c, 0x89, 0x9e, 0x83, 0x18, 0x4f, 0x71, 0x84, + 0xe1, 0xc9, 0xd1, 0x18, 0x48, 0x2c, 0x2a, 0x14, 0x87, 0x1e, 0x84, 0x24, 0xf9, 0xcb, 0x7c, 0x3b, + 0x4e, 0x6d, 0x4e, 0x10, 0x01, 0xf1, 0x2b, 0x9a, 0x83, 0x04, 0x0d, 0xb3, 0x3a, 0x16, 0xa5, 0xc1, + 0xbf, 0x26, 0x0b, 0x53, 0xc7, 0xbb, 0x5a, 0xdb, 0xf4, 0xd4, 0x9b, 0x9a, 0xd9, 0xc6, 0x34, 0x60, + 0x92, 0x4a, 0x9a, 0x0b, 0x3f, 0x4d, 0x64, 0x68, 0x1e, 0x52, 0x2c, 0x2a, 0x0d, 0xab, 0x8e, 0x5f, + 0xa4, 0xd9, 0x27, 0xae, 0xb0, 0x40, 0x2d, 0x13, 0x09, 0xb9, 0xfd, 0x75, 0xd7, 0xb6, 0xc4, 0xd2, + 0xd2, 0x5b, 0x10, 0x01, 0xbd, 0xfd, 0x33, 0xfd, 0x89, 0xef, 0xa1, 0xe1, 0xd3, 0xeb, 0x8f, 0xc5, + 0xc5, 0x6f, 0x47, 0x20, 0x46, 0xf7, 0xdb, 0x14, 0xa4, 0xb6, 0xae, 0xd5, 0x4a, 0xea, 0x6a, 0x75, + 0xbb, 0xb8, 0x5e, 0x92, 0x25, 0x94, 0x01, 0xa0, 0x82, 0x4b, 0xeb, 0xd5, 0xc2, 0x96, 0x1c, 0xf1, + 0xaf, 0xcb, 0x1b, 0x5b, 0xe7, 0xcf, 0xca, 0x51, 0x1f, 0xb0, 0xcd, 0x04, 0xb1, 0xa0, 0xc2, 0x99, + 0xd3, 0x72, 0x1c, 0xc9, 0x90, 0x66, 0x04, 0xe5, 0xab, 0xa5, 0xd5, 0xf3, 0x67, 0xe5, 0xf1, 0x5e, + 0xc9, 0x99, 0xd3, 0xf2, 0x04, 0x9a, 0x84, 0x24, 0x95, 0x14, 0xab, 0xd5, 0x75, 0x39, 0xe1, 0x73, + 0x6e, 0x6e, 0x29, 0xe5, 0x8d, 0x35, 0x39, 0xe9, 0x73, 0xae, 0x29, 0xd5, 0xed, 0x9a, 0x0c, 0x3e, + 0x43, 0xa5, 0xb4, 0xb9, 0x59, 0x58, 0x2b, 0xc9, 0x29, 0x5f, 0xa3, 0x78, 0x6d, 0xab, 0xb4, 0x29, + 0xa7, 0x7b, 0xcc, 0x3a, 0x73, 0x5a, 0x9e, 0xf4, 0x6f, 0x51, 0xda, 0xd8, 0xae, 0xc8, 0x19, 0x34, + 0x0d, 0x93, 0xec, 0x16, 0xc2, 0x88, 0xa9, 0x3e, 0xd1, 0xf9, 0xb3, 0xb2, 0xdc, 0x35, 0x84, 0xb1, + 0x4c, 0xf7, 0x08, 0xce, 0x9f, 0x95, 0xd1, 0xe2, 0x0a, 0xc4, 0x69, 0x74, 0x21, 0x04, 0x99, 0xf5, + 0x42, 0xb1, 0xb4, 0xae, 0x56, 0x6b, 0x5b, 0xe5, 0xea, 0x46, 0x61, 0x5d, 0x96, 0xba, 0x32, 0xa5, + 0xf4, 0xa9, 0xed, 0xb2, 0x52, 0x5a, 0x95, 0x23, 0x41, 0x59, 0xad, 0x54, 0xd8, 0x2a, 0xad, 0xca, + 0xd1, 0x45, 0x1d, 0x66, 0x87, 0xe5, 0x99, 0xa1, 0x3b, 0x23, 0xb0, 0xc4, 0x91, 0x03, 0x96, 0x98, + 0x72, 0x0d, 0x2c, 0xf1, 0x97, 0x25, 0x98, 0x19, 0x92, 0x6b, 0x87, 0xde, 0xe4, 0x79, 0x88, 0xb3, + 0x10, 0x65, 0xd5, 0xe7, 0x89, 0xa1, 0x49, 0x9b, 0x06, 0xec, 0x40, 0x05, 0xa2, 0xb8, 0x60, 0x05, + 0x8e, 0x1e, 0x50, 0x81, 0x09, 0xc5, 0x80, 0x91, 0x2f, 0x4b, 0x90, 0x3d, 0x88, 0x3b, 0x24, 0x51, + 0x44, 0x7a, 0x12, 0xc5, 0xc5, 0x7e, 0x03, 0x4e, 0x1e, 0x3c, 0x87, 0x01, 0x2b, 0x5e, 0x97, 0xe0, + 0xd8, 0xf0, 0x46, 0x65, 0xa8, 0x0d, 0xcf, 0xc1, 0x78, 0x13, 0x7b, 0x7b, 0xb6, 0x28, 0xd6, 0x8f, + 0x0d, 0x29, 0x01, 0x64, 0xb8, 0xdf, 0x57, 0x1c, 0x15, 0xac, 0x21, 0xd1, 0x83, 0xba, 0x0d, 0x66, + 0xcd, 0x80, 0xa5, 0x9f, 0x8f, 0xc0, 0x03, 0x43, 0xc9, 0x87, 0x1a, 0xfa, 0x10, 0x80, 0x61, 0xb5, + 0xda, 0x1e, 0x2b, 0xc8, 0x2c, 0x3f, 0x25, 0xa9, 0x84, 0xee, 0x7d, 0x92, 0x7b, 0xda, 0x9e, 0x3f, + 0x1e, 0xa5, 0xe3, 0xc0, 0x44, 0x54, 0xe1, 0x42, 0xd7, 0xd0, 0x18, 0x35, 0x34, 0x77, 0xc0, 0x4c, + 0x07, 0x6a, 0xdd, 0xd3, 0x20, 0xeb, 0xa6, 0x81, 0x2d, 0x4f, 0x75, 0x3d, 0x07, 0x6b, 0x4d, 0xc3, + 0x6a, 0xd0, 0x04, 0x9c, 0xc8, 0xc7, 0x77, 0x35, 0xd3, 0xc5, 0xca, 0x14, 0x1b, 0xde, 0x14, 0xa3, + 0x04, 0x41, 0xab, 0x8c, 0x13, 0x40, 0x8c, 0xf7, 0x20, 0xd8, 0xb0, 0x8f, 0x58, 0xfc, 0xda, 0x04, + 0xa4, 0x02, 0x6d, 0x1d, 0x3a, 0x09, 0xe9, 0xeb, 0xda, 0x4d, 0x4d, 0x15, 0xad, 0x3a, 0xf3, 0x44, + 0x8a, 0xc8, 0x6a, 0xbc, 0x5d, 0x7f, 0x1a, 0x66, 0xa9, 0x8a, 0xdd, 0xf6, 0xb0, 0xa3, 0xea, 0xa6, + 0xe6, 0xba, 0xd4, 0x69, 0x09, 0xaa, 0x8a, 0xc8, 0x58, 0x95, 0x0c, 0xad, 0x88, 0x11, 0x74, 0x0e, + 0x66, 0x28, 0xa2, 0xd9, 0x36, 0x3d, 0xa3, 0x65, 0x62, 0x95, 0x3c, 0x3c, 0xb8, 0x34, 0x11, 0xfb, + 0x96, 0x4d, 0x13, 0x8d, 0x0a, 0x57, 0x20, 0x16, 0xb9, 0x68, 0x15, 0x1e, 0xa2, 0xb0, 0x06, 0xb6, + 0xb0, 0xa3, 0x79, 0x58, 0xc5, 0x9f, 0x69, 0x6b, 0xa6, 0xab, 0x6a, 0x56, 0x5d, 0xdd, 0xd3, 0xdc, + 0xbd, 0xec, 0x2c, 0x21, 0x28, 0x46, 0xb2, 0x92, 0x72, 0x82, 0x28, 0xae, 0x71, 0xbd, 0x12, 0x55, + 0x2b, 0x58, 0xf5, 0x4f, 0x6a, 0xee, 0x1e, 0xca, 0xc3, 0x31, 0xca, 0xe2, 0x7a, 0x8e, 0x61, 0x35, + 0x54, 0x7d, 0x0f, 0xeb, 0x37, 0xd4, 0xb6, 0xb7, 0x7b, 0x21, 0xfb, 0x60, 0xf0, 0xfe, 0xd4, 0xc2, + 0x4d, 0xaa, 0xb3, 0x42, 0x54, 0xb6, 0xbd, 0xdd, 0x0b, 0x68, 0x13, 0xd2, 0x64, 0x31, 0x9a, 0xc6, + 0x4b, 0x58, 0xdd, 0xb5, 0x1d, 0x5a, 0x59, 0x32, 0x43, 0x76, 0x76, 0xc0, 0x83, 0xcb, 0x55, 0x0e, + 0xa8, 0xd8, 0x75, 0x9c, 0x8f, 0x6f, 0xd6, 0x4a, 0xa5, 0x55, 0x25, 0x25, 0x58, 0x2e, 0xd9, 0x0e, + 0x09, 0xa8, 0x86, 0xed, 0x3b, 0x38, 0xc5, 0x02, 0xaa, 0x61, 0x0b, 0xf7, 0x9e, 0x83, 0x19, 0x5d, + 0x67, 0x73, 0x36, 0x74, 0x95, 0xb7, 0xf8, 0x6e, 0x56, 0xee, 0x71, 0x96, 0xae, 0xaf, 0x31, 0x05, + 0x1e, 0xe3, 0x2e, 0x7a, 0x16, 0x1e, 0xe8, 0x3a, 0x2b, 0x08, 0x9c, 0x1e, 0x98, 0x65, 0x3f, 0xf4, + 0x1c, 0xcc, 0xb4, 0x3a, 0x83, 0x40, 0xd4, 0x73, 0xc7, 0x56, 0xa7, 0x1f, 0xf6, 0x28, 0x7d, 0x6c, + 0x73, 0xb0, 0xae, 0x79, 0xb8, 0x9e, 0x3d, 0x1e, 0xd4, 0x0e, 0x0c, 0xa0, 0x53, 0x20, 0xeb, 0xba, + 0x8a, 0x2d, 0x6d, 0xc7, 0xc4, 0xaa, 0xe6, 0x60, 0x4b, 0x73, 0xb3, 0xf3, 0x41, 0xe5, 0x8c, 0xae, + 0x97, 0xe8, 0x68, 0x81, 0x0e, 0xa2, 0x27, 0x61, 0xda, 0xde, 0xb9, 0xae, 0xb3, 0xc8, 0x52, 0x5b, + 0x0e, 0xde, 0x35, 0x5e, 0xcc, 0x3e, 0x42, 0xdd, 0x34, 0x45, 0x06, 0x68, 0x5c, 0xd5, 0xa8, 0x18, + 0x3d, 0x01, 0xb2, 0xee, 0xee, 0x69, 0x4e, 0x8b, 0x96, 0x76, 0xb7, 0xa5, 0xe9, 0x38, 0xfb, 0x28, + 0x53, 0x65, 0xf2, 0x0d, 0x21, 0x26, 0x91, 0xed, 0xde, 0x32, 0x76, 0x3d, 0xc1, 0xf8, 0x38, 0x8b, + 0x6c, 0x2a, 0xe3, 0x6c, 0x57, 0x61, 0xb6, 0x6d, 0x19, 0x96, 0x87, 0x9d, 0x96, 0x83, 0x49, 0x13, + 0xcf, 0x76, 0x62, 0xf6, 0xdf, 0x26, 0x0e, 0x68, 0xc3, 0xb7, 0x83, 0xda, 0x2c, 0x00, 0x94, 0x99, + 0xf6, 0xa0, 0x70, 0x31, 0x0f, 0xe9, 0x60, 0x5c, 0xa0, 0x24, 0xb0, 0xc8, 0x90, 0x25, 0x52, 0x63, + 0x57, 0xaa, 0xab, 0xa4, 0x3a, 0xbe, 0x50, 0x92, 0x23, 0xa4, 0x4a, 0xaf, 0x97, 0xb7, 0x4a, 0xaa, + 0xb2, 0xbd, 0xb1, 0x55, 0xae, 0x94, 0xe4, 0xe8, 0x93, 0xc9, 0xc4, 0x3b, 0x13, 0xf2, 0xed, 0xdb, + 0xb7, 0x6f, 0x47, 0x16, 0xbf, 0x17, 0x81, 0x4c, 0x6f, 0x67, 0x8c, 0x3e, 0x0e, 0xc7, 0xc5, 0x63, + 0xac, 0x8b, 0x3d, 0xf5, 0x96, 0xe1, 0xd0, 0x50, 0x6d, 0x6a, 0xac, 0xb7, 0xf4, 0xbd, 0x3c, 0xcb, + 0xb5, 0x36, 0xb1, 0x77, 0xc5, 0x70, 0x48, 0x20, 0x36, 0x35, 0x0f, 0xad, 0xc3, 0xbc, 0x65, 0xab, + 0xae, 0xa7, 0x59, 0x75, 0xcd, 0xa9, 0xab, 0xdd, 0x03, 0x04, 0x55, 0xd3, 0x75, 0xec, 0xba, 0x36, + 0x2b, 0x11, 0x3e, 0xcb, 0x47, 0x2c, 0x7b, 0x93, 0x2b, 0x77, 0x73, 0x67, 0x81, 0xab, 0xf6, 0x45, + 0x44, 0xf4, 0xa0, 0x88, 0x78, 0x10, 0x92, 0x4d, 0xad, 0xa5, 0x62, 0xcb, 0x73, 0x3a, 0xb4, 0x9f, + 0x4b, 0x28, 0x89, 0xa6, 0xd6, 0x2a, 0x91, 0xeb, 0x0f, 0x6f, 0x0d, 0x82, 0x7e, 0xfc, 0xd7, 0x28, + 0xa4, 0x83, 0x3d, 0x1d, 0x69, 0x91, 0x75, 0x9a, 0xbf, 0x25, 0xba, 0xc3, 0x1f, 0x3e, 0xb4, 0x03, + 0x5c, 0x5e, 0x21, 0x89, 0x3d, 0x3f, 0xce, 0x3a, 0x2d, 0x85, 0x21, 0x49, 0x51, 0x25, 0x7b, 0x1a, + 0xb3, 0xfe, 0x3d, 0xa1, 0xf0, 0x2b, 0xb4, 0x06, 0xe3, 0xd7, 0x5d, 0xca, 0x3d, 0x4e, 0xb9, 0x1f, + 0x39, 0x9c, 0xfb, 0xf2, 0x26, 0x25, 0x4f, 0x5e, 0xde, 0x54, 0x37, 0xaa, 0x4a, 0xa5, 0xb0, 0xae, + 0x70, 0x38, 0x3a, 0x01, 0x31, 0x53, 0x7b, 0xa9, 0xd3, 0x5b, 0x02, 0xa8, 0x68, 0x54, 0xc7, 0x9f, + 0x80, 0xd8, 0x2d, 0xac, 0xdd, 0xe8, 0x4d, 0xbc, 0x54, 0xf4, 0x21, 0x86, 0xfe, 0x29, 0x88, 0x53, + 0x7f, 0x21, 0x00, 0xee, 0x31, 0x79, 0x0c, 0x25, 0x20, 0xb6, 0x52, 0x55, 0x48, 0xf8, 0xcb, 0x90, + 0x66, 0x52, 0xb5, 0x56, 0x2e, 0xad, 0x94, 0xe4, 0xc8, 0xe2, 0x39, 0x18, 0x67, 0x4e, 0x20, 0x5b, + 0xc3, 0x77, 0x83, 0x3c, 0xc6, 0x2f, 0x39, 0x87, 0x24, 0x46, 0xb7, 0x2b, 0xc5, 0x92, 0x22, 0x47, + 0x82, 0xcb, 0xeb, 0x42, 0x3a, 0xd8, 0xce, 0xfd, 0x6c, 0x62, 0xea, 0x1f, 0x24, 0x48, 0x05, 0xda, + 0x33, 0xd2, 0x18, 0x68, 0xa6, 0x69, 0xdf, 0x52, 0x35, 0xd3, 0xd0, 0x5c, 0x1e, 0x14, 0x40, 0x45, + 0x05, 0x22, 0x19, 0x75, 0xd1, 0x7e, 0x26, 0xc6, 0xbf, 0x26, 0x81, 0xdc, 0xdf, 0xda, 0xf5, 0x19, + 0x28, 0xfd, 0x5c, 0x0d, 0x7c, 0x55, 0x82, 0x4c, 0x6f, 0x3f, 0xd7, 0x67, 0xde, 0xc9, 0x9f, 0xab, + 0x79, 0x6f, 0x45, 0x60, 0xb2, 0xa7, 0x8b, 0x1b, 0xd5, 0xba, 0xcf, 0xc0, 0xb4, 0x51, 0xc7, 0xcd, + 0x96, 0xed, 0x61, 0x4b, 0xef, 0xa8, 0x26, 0xbe, 0x89, 0xcd, 0xec, 0x22, 0x4d, 0x14, 0xa7, 0x0e, + 0xef, 0x13, 0x97, 0xcb, 0x5d, 0xdc, 0x3a, 0x81, 0xe5, 0x67, 0xca, 0xab, 0xa5, 0x4a, 0xad, 0xba, + 0x55, 0xda, 0x58, 0xb9, 0xa6, 0x6e, 0x6f, 0xfc, 0xc2, 0x46, 0xf5, 0xca, 0x86, 0x22, 0x1b, 0x7d, + 0x6a, 0x1f, 0xe2, 0x56, 0xaf, 0x81, 0xdc, 0x6f, 0x14, 0x3a, 0x0e, 0xc3, 0xcc, 0x92, 0xc7, 0xd0, + 0x0c, 0x4c, 0x6d, 0x54, 0xd5, 0xcd, 0xf2, 0x6a, 0x49, 0x2d, 0x5d, 0xba, 0x54, 0x5a, 0xd9, 0xda, + 0x64, 0x0f, 0xce, 0xbe, 0xf6, 0x56, 0xef, 0xa6, 0x7e, 0x25, 0x0a, 0x33, 0x43, 0x2c, 0x41, 0x05, + 0xde, 0xb3, 0xb3, 0xc7, 0x88, 0x8f, 0x8d, 0x62, 0xfd, 0x32, 0xe9, 0x0a, 0x6a, 0x9a, 0xe3, 0xf1, + 0x16, 0xff, 0x09, 0x20, 0x5e, 0xb2, 0x3c, 0x63, 0xd7, 0xc0, 0x0e, 0x3f, 0x67, 0x60, 0x8d, 0xfc, + 0x54, 0x57, 0xce, 0x8e, 0x1a, 0x3e, 0x0a, 0xa8, 0x65, 0xbb, 0x86, 0x67, 0xdc, 0xc4, 0xaa, 0x61, + 0x89, 0x43, 0x09, 0xd2, 0xd8, 0xc7, 0x14, 0x59, 0x8c, 0x94, 0x2d, 0xcf, 0xd7, 0xb6, 0x70, 0x43, + 0xeb, 0xd3, 0x26, 0x09, 0x3c, 0xaa, 0xc8, 0x62, 0xc4, 0xd7, 0x3e, 0x09, 0xe9, 0xba, 0xdd, 0x26, + 0x6d, 0x12, 0xd3, 0x23, 0xf5, 0x42, 0x52, 0x52, 0x4c, 0xe6, 0xab, 0xf0, 0x3e, 0xb6, 0x7b, 0x1a, + 0x92, 0x56, 0x52, 0x4c, 0xc6, 0x54, 0x1e, 0x87, 0x29, 0xad, 0xd1, 0x70, 0x08, 0xb9, 0x20, 0x62, + 0x9d, 0x79, 0xc6, 0x17, 0x53, 0xc5, 0xb9, 0xcb, 0x90, 0x10, 0x7e, 0x20, 0x25, 0x99, 0x78, 0x42, + 0x6d, 0xb1, 0x33, 0xa9, 0xc8, 0x52, 0x52, 0x49, 0x58, 0x62, 0xf0, 0x24, 0xa4, 0x0d, 0x57, 0xed, + 0x1e, 0x8e, 0x46, 0x16, 0x22, 0x4b, 0x09, 0x25, 0x65, 0xb8, 0xfe, 0x69, 0xd8, 0xe2, 0xeb, 0x11, + 0xc8, 0xf4, 0x1e, 0xee, 0xa2, 0x55, 0x48, 0x98, 0xb6, 0xae, 0xd1, 0xd0, 0x62, 0x6f, 0x16, 0x96, + 0x42, 0xce, 0x83, 0x97, 0xd7, 0xb9, 0xbe, 0xe2, 0x23, 0xe7, 0xfe, 0x59, 0x82, 0x84, 0x10, 0xa3, + 0x63, 0x10, 0x6b, 0x69, 0xde, 0x1e, 0xa5, 0x8b, 0x17, 0x23, 0xb2, 0xa4, 0xd0, 0x6b, 0x22, 0x77, + 0x5b, 0x9a, 0x45, 0x43, 0x80, 0xcb, 0xc9, 0x35, 0x59, 0x57, 0x13, 0x6b, 0x75, 0xda, 0xf6, 0xdb, + 0xcd, 0x26, 0xb6, 0x3c, 0x57, 0xac, 0x2b, 0x97, 0xaf, 0x70, 0x31, 0x7a, 0x0a, 0xa6, 0x3d, 0x47, + 0x33, 0xcc, 0x1e, 0xdd, 0x18, 0xd5, 0x95, 0xc5, 0x80, 0xaf, 0x9c, 0x87, 0x13, 0x82, 0xb7, 0x8e, + 0x3d, 0x4d, 0xdf, 0xc3, 0xf5, 0x2e, 0x68, 0x9c, 0x9e, 0x1c, 0x1e, 0xe7, 0x0a, 0xab, 0x7c, 0x5c, + 0x60, 0x17, 0x7f, 0x20, 0xc1, 0xb4, 0x78, 0x50, 0xa9, 0xfb, 0xce, 0xaa, 0x00, 0x68, 0x96, 0x65, + 0x7b, 0x41, 0x77, 0x0d, 0x86, 0xf2, 0x00, 0x6e, 0xb9, 0xe0, 0x83, 0x94, 0x00, 0xc1, 0x5c, 0x13, + 0xa0, 0x3b, 0x72, 0xa0, 0xdb, 0xe6, 0x21, 0xc5, 0x4f, 0xee, 0xe9, 0xeb, 0x1f, 0xf6, 0x68, 0x0b, + 0x4c, 0x44, 0x9e, 0x68, 0xd0, 0x2c, 0xc4, 0x77, 0x70, 0xc3, 0xb0, 0xf8, 0x79, 0x22, 0xbb, 0x10, + 0xa7, 0x94, 0x31, 0xff, 0x94, 0xb2, 0x78, 0x15, 0x66, 0x74, 0xbb, 0xd9, 0x6f, 0x6e, 0x51, 0xee, + 0x7b, 0xbc, 0x76, 0x3f, 0x29, 0xbd, 0x00, 0xdd, 0x16, 0xf3, 0xcb, 0x91, 0xe8, 0x5a, 0xad, 0xf8, + 0xd5, 0xc8, 0xdc, 0x1a, 0xc3, 0xd5, 0xc4, 0x34, 0x15, 0xbc, 0x6b, 0x62, 0x9d, 0x98, 0x0e, 0x3f, + 0x7e, 0x0c, 0x3e, 0xd6, 0x30, 0xbc, 0xbd, 0xf6, 0xce, 0xb2, 0x6e, 0x37, 0x4f, 0x35, 0xec, 0x86, + 0xdd, 0x7d, 0xdd, 0x45, 0xae, 0xe8, 0x05, 0xfd, 0xc5, 0x5f, 0x79, 0x25, 0x7d, 0xe9, 0x5c, 0xe8, + 0xfb, 0xb1, 0xfc, 0x06, 0xcc, 0x70, 0x65, 0x95, 0x9e, 0xb9, 0xb3, 0x47, 0x03, 0x74, 0xe8, 0xb9, + 0x4b, 0xf6, 0x9b, 0x6f, 0xd3, 0x5a, 0xad, 0x4c, 0x73, 0x28, 0x19, 0x63, 0x0f, 0x10, 0x79, 0x05, + 0x1e, 0xe8, 0xe1, 0x63, 0xfb, 0x12, 0x3b, 0x21, 0x8c, 0xdf, 0xe3, 0x8c, 0x33, 0x01, 0xc6, 0x4d, + 0x0e, 0xcd, 0xaf, 0xc0, 0xe4, 0x51, 0xb8, 0xfe, 0x91, 0x73, 0xa5, 0x71, 0x90, 0x64, 0x0d, 0xa6, + 0x28, 0x89, 0xde, 0x76, 0x3d, 0xbb, 0x49, 0x93, 0xde, 0xe1, 0x34, 0xff, 0xf4, 0x36, 0xdb, 0x28, + 0x19, 0x02, 0x5b, 0xf1, 0x51, 0xf9, 0x3c, 0xd0, 0xd7, 0x0c, 0x75, 0xac, 0x9b, 0x21, 0x0c, 0x6f, + 0x70, 0x43, 0x7c, 0xfd, 0xfc, 0xa7, 0x61, 0x96, 0xfc, 0xa6, 0x39, 0x29, 0x68, 0x49, 0xf8, 0x29, + 0x53, 0xf6, 0x07, 0x2f, 0xb3, 0xbd, 0x38, 0xe3, 0x13, 0x04, 0x6c, 0x0a, 0xac, 0x62, 0x03, 0x7b, + 0x1e, 0x76, 0x5c, 0x55, 0x33, 0x87, 0x99, 0x17, 0x78, 0x4c, 0xcf, 0x7e, 0xf1, 0xdd, 0xde, 0x55, + 0x5c, 0x63, 0xc8, 0x82, 0x69, 0xe6, 0xb7, 0xe1, 0xf8, 0x90, 0xa8, 0x18, 0x81, 0xf3, 0x15, 0xce, + 0x39, 0x3b, 0x10, 0x19, 0x84, 0xb6, 0x06, 0x42, 0xee, 0xaf, 0xe5, 0x08, 0x9c, 0x7f, 0xc4, 0x39, + 0x11, 0xc7, 0x8a, 0x25, 0x25, 0x8c, 0x97, 0x61, 0xfa, 0x26, 0x76, 0x76, 0x6c, 0x97, 0x1f, 0x8d, + 0x8c, 0x40, 0xf7, 0x2a, 0xa7, 0x9b, 0xe2, 0x40, 0x7a, 0x56, 0x42, 0xb8, 0x9e, 0x85, 0xc4, 0xae, + 0xa6, 0xe3, 0x11, 0x28, 0xbe, 0xc4, 0x29, 0x26, 0x88, 0x3e, 0x81, 0x16, 0x20, 0xdd, 0xb0, 0x79, + 0x59, 0x0a, 0x87, 0xbf, 0xc6, 0xe1, 0x29, 0x81, 0xe1, 0x14, 0x2d, 0xbb, 0xd5, 0x36, 0x49, 0xcd, + 0x0a, 0xa7, 0xf8, 0x63, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x08, 0x6e, 0xfd, 0x13, 0x41, 0xe1, 0x06, + 0xfc, 0xf9, 0x3c, 0xa4, 0x6c, 0xcb, 0xec, 0xd8, 0xd6, 0x28, 0x46, 0xfc, 0x29, 0x67, 0x00, 0x0e, + 0x21, 0x04, 0x17, 0x21, 0x39, 0xea, 0x42, 0xfc, 0xd9, 0xbb, 0x62, 0x7b, 0x88, 0x15, 0x58, 0x83, + 0x29, 0x91, 0xa0, 0x0c, 0xdb, 0x1a, 0x81, 0xe2, 0xcf, 0x39, 0x45, 0x26, 0x00, 0xe3, 0xd3, 0xf0, + 0xb0, 0xeb, 0x35, 0xf0, 0x28, 0x24, 0xaf, 0x8b, 0x69, 0x70, 0x08, 0x77, 0xe5, 0x0e, 0xb6, 0xf4, + 0xbd, 0xd1, 0x18, 0xbe, 0x22, 0x5c, 0x29, 0x30, 0x84, 0x62, 0x05, 0x26, 0x9b, 0x9a, 0xe3, 0xee, + 0x69, 0xe6, 0x48, 0xcb, 0xf1, 0x17, 0x9c, 0x23, 0xed, 0x83, 0xb8, 0x47, 0xda, 0xd6, 0x51, 0x68, + 0xbe, 0x2a, 0x3c, 0x12, 0x80, 0xf1, 0xad, 0xe7, 0x7a, 0xf4, 0x00, 0xea, 0x28, 0x6c, 0x5f, 0x13, + 0x5b, 0x8f, 0x61, 0x2b, 0x41, 0xc6, 0x8b, 0x90, 0x74, 0x8d, 0x97, 0x46, 0xa2, 0xf9, 0x4b, 0xb1, + 0xd2, 0x14, 0x40, 0xc0, 0xd7, 0xe0, 0xc4, 0xd0, 0x32, 0x31, 0x02, 0xd9, 0x5f, 0x71, 0xb2, 0x63, + 0x43, 0x4a, 0x05, 0x4f, 0x09, 0x47, 0xa5, 0xfc, 0x6b, 0x91, 0x12, 0x70, 0x1f, 0x57, 0x8d, 0x3c, + 0x28, 0xb8, 0xda, 0xee, 0xd1, 0xbc, 0xf6, 0x75, 0xe1, 0x35, 0x86, 0xed, 0xf1, 0xda, 0x16, 0x1c, + 0xe3, 0x8c, 0x47, 0x5b, 0xd7, 0x6f, 0x88, 0xc4, 0xca, 0xd0, 0xdb, 0xbd, 0xab, 0xfb, 0x8b, 0x30, + 0xe7, 0xbb, 0x53, 0x74, 0xa4, 0xae, 0xda, 0xd4, 0x5a, 0x23, 0x30, 0x7f, 0x93, 0x33, 0x8b, 0x8c, + 0xef, 0xb7, 0xb4, 0x6e, 0x45, 0x6b, 0x11, 0xf2, 0xab, 0x90, 0x15, 0xe4, 0x6d, 0xcb, 0xc1, 0xba, + 0xdd, 0xb0, 0x8c, 0x97, 0x70, 0x7d, 0x04, 0xea, 0xbf, 0xe9, 0x5b, 0xaa, 0xed, 0x00, 0x9c, 0x30, + 0x97, 0x41, 0xf6, 0x7b, 0x15, 0xd5, 0x68, 0xb6, 0x6c, 0xc7, 0x0b, 0x61, 0xfc, 0x5b, 0xb1, 0x52, + 0x3e, 0xae, 0x4c, 0x61, 0xf9, 0x12, 0x64, 0xe8, 0xe5, 0xa8, 0x21, 0xf9, 0x77, 0x9c, 0x68, 0xb2, + 0x8b, 0xe2, 0x89, 0x43, 0xb7, 0x9b, 0x2d, 0xcd, 0x19, 0x25, 0xff, 0x7d, 0x4b, 0x24, 0x0e, 0x0e, + 0xe1, 0x89, 0xc3, 0xeb, 0xb4, 0x30, 0xa9, 0xf6, 0x23, 0x30, 0x7c, 0x5b, 0x24, 0x0e, 0x81, 0xe1, + 0x14, 0xa2, 0x61, 0x18, 0x81, 0xe2, 0xef, 0x05, 0x85, 0xc0, 0x10, 0x8a, 0x4f, 0x75, 0x0b, 0xad, + 0x83, 0x1b, 0x86, 0xeb, 0x39, 0xac, 0x0f, 0x3e, 0x9c, 0xea, 0x3b, 0xef, 0xf6, 0x36, 0x61, 0x4a, + 0x00, 0x9a, 0xbf, 0x0c, 0x53, 0x7d, 0x2d, 0x06, 0x0a, 0xfb, 0x66, 0x21, 0xfb, 0xcb, 0xef, 0xf3, + 0x64, 0xd4, 0xdb, 0x61, 0xe4, 0xd7, 0xc9, 0xba, 0xf7, 0xf6, 0x01, 0xe1, 0x64, 0x2f, 0xbf, 0xef, + 0x2f, 0x7d, 0x4f, 0x1b, 0x90, 0xbf, 0x04, 0x93, 0x3d, 0x3d, 0x40, 0x38, 0xd5, 0xaf, 0x70, 0xaa, + 0x74, 0xb0, 0x05, 0xc8, 0x9f, 0x83, 0x18, 0xa9, 0xe7, 0xe1, 0xf0, 0x5f, 0xe5, 0x70, 0xaa, 0x9e, + 0xff, 0x04, 0x24, 0x44, 0x1d, 0x0f, 0x87, 0xfe, 0x1a, 0x87, 0xfa, 0x10, 0x02, 0x17, 0x35, 0x3c, + 0x1c, 0xfe, 0x39, 0x01, 0x17, 0x10, 0x02, 0x1f, 0xdd, 0x85, 0xdf, 0xfd, 0x8d, 0x18, 0xcf, 0xc3, + 0xc2, 0x77, 0x17, 0x61, 0x82, 0x17, 0xef, 0x70, 0xf4, 0xe7, 0xf9, 0xcd, 0x05, 0x22, 0xff, 0x0c, + 0xc4, 0x47, 0x74, 0xf8, 0x6f, 0x72, 0x28, 0xd3, 0xcf, 0xaf, 0x40, 0x2a, 0x50, 0xb0, 0xc3, 0xe1, + 0xbf, 0xc5, 0xe1, 0x41, 0x14, 0x31, 0x9d, 0x17, 0xec, 0x70, 0x82, 0xdf, 0x16, 0xa6, 0x73, 0x04, + 0x71, 0x9b, 0xa8, 0xd5, 0xe1, 0xe8, 0xdf, 0x11, 0x5e, 0x17, 0x90, 0xfc, 0xf3, 0x90, 0xf4, 0xf3, + 0x6f, 0x38, 0xfe, 0x77, 0x39, 0xbe, 0x8b, 0x21, 0x1e, 0x08, 0xe4, 0xff, 0x70, 0x8a, 0xdf, 0x13, + 0x1e, 0x08, 0xa0, 0xc8, 0x36, 0xea, 0xaf, 0xe9, 0xe1, 0x4c, 0xbf, 0x2f, 0xb6, 0x51, 0x5f, 0x49, + 0x27, 0xab, 0x49, 0xd3, 0x60, 0x38, 0xc5, 0x1f, 0x88, 0xd5, 0xa4, 0xfa, 0xc4, 0x8c, 0xfe, 0x22, + 0x19, 0xce, 0xf1, 0x87, 0xc2, 0x8c, 0xbe, 0x1a, 0x99, 0xaf, 0x01, 0x1a, 0x2c, 0x90, 0xe1, 0x7c, + 0x5f, 0xe0, 0x7c, 0xd3, 0x03, 0xf5, 0x31, 0x7f, 0x05, 0x8e, 0x0d, 0x2f, 0x8e, 0xe1, 0xac, 0x5f, + 0x7c, 0xbf, 0xef, 0x71, 0x26, 0x58, 0x1b, 0xf3, 0x5b, 0xdd, 0x2c, 0x1b, 0x2c, 0x8c, 0xe1, 0xb4, + 0xaf, 0xbc, 0xdf, 0x9b, 0x68, 0x83, 0x75, 0x31, 0x5f, 0x00, 0xe8, 0xd6, 0xa4, 0x70, 0xae, 0x57, + 0x39, 0x57, 0x00, 0x44, 0xb6, 0x06, 0x2f, 0x49, 0xe1, 0xf8, 0x2f, 0x89, 0xad, 0xc1, 0x11, 0x64, + 0x6b, 0x88, 0x6a, 0x14, 0x8e, 0x7e, 0x4d, 0x6c, 0x0d, 0x01, 0xc9, 0x5f, 0x84, 0x84, 0xd5, 0x36, + 0x4d, 0x12, 0x5b, 0xe8, 0xf0, 0xcf, 0x88, 0xb2, 0x3f, 0xfa, 0x80, 0x83, 0x05, 0x20, 0x7f, 0x0e, + 0xe2, 0xb8, 0xb9, 0x83, 0xeb, 0x61, 0xc8, 0x7f, 0xff, 0x40, 0xe4, 0x13, 0xa2, 0x9d, 0x7f, 0x1e, + 0x80, 0x3d, 0x4c, 0xd3, 0xb7, 0x44, 0x21, 0xd8, 0xff, 0xf8, 0x80, 0x7f, 0xa1, 0xd0, 0x85, 0x74, + 0x09, 0xd8, 0xf7, 0x0e, 0x87, 0x13, 0xbc, 0xdb, 0x4b, 0x40, 0x1f, 0xc0, 0x9f, 0x85, 0x89, 0xeb, + 0xae, 0x6d, 0x79, 0x5a, 0x23, 0x0c, 0xfd, 0x9f, 0x1c, 0x2d, 0xf4, 0x89, 0xc3, 0x9a, 0xb6, 0x83, + 0x3d, 0xad, 0xe1, 0x86, 0x61, 0xff, 0x8b, 0x63, 0x7d, 0x00, 0x01, 0xeb, 0x9a, 0xeb, 0x8d, 0x32, + 0xef, 0xff, 0x16, 0x60, 0x01, 0x20, 0x46, 0x93, 0xdf, 0x37, 0x70, 0x27, 0x0c, 0xfb, 0x9e, 0x30, + 0x9a, 0xeb, 0xe7, 0x3f, 0x01, 0x49, 0xf2, 0x93, 0x7d, 0xb5, 0x13, 0x02, 0xfe, 0x1f, 0x0e, 0xee, + 0x22, 0xc8, 0x9d, 0x5d, 0xaf, 0xee, 0x19, 0xe1, 0xce, 0xfe, 0x5f, 0xbe, 0xd2, 0x42, 0x3f, 0x5f, + 0x80, 0x94, 0xeb, 0xd5, 0xeb, 0x6d, 0xde, 0xd1, 0x84, 0xc0, 0x7f, 0xfc, 0x81, 0xff, 0x90, 0xeb, + 0x63, 0x8a, 0x27, 0x87, 0x1f, 0xd6, 0xc1, 0x9a, 0xbd, 0x66, 0xb3, 0x63, 0x3a, 0xf8, 0xfa, 0x14, + 0xcc, 0xe9, 0x76, 0x73, 0xc7, 0x76, 0x4f, 0xed, 0xd8, 0xde, 0xde, 0x29, 0xe1, 0x33, 0x7e, 0xc4, + 0xe6, 0xfb, 0x70, 0xee, 0x68, 0x67, 0x73, 0x8b, 0x3f, 0x9a, 0x84, 0xc4, 0x8a, 0xe6, 0x7a, 0xda, + 0x2d, 0xad, 0x83, 0x1e, 0x85, 0x44, 0xd9, 0xf2, 0xce, 0x9c, 0xae, 0x79, 0x0e, 0x7d, 0xb7, 0x14, + 0x2d, 0x26, 0xef, 0xdd, 0x99, 0x8f, 0x1b, 0x44, 0xa6, 0xf8, 0x43, 0xe8, 0x61, 0x88, 0xd3, 0xdf, + 0xf4, 0x78, 0x32, 0x5a, 0x9c, 0x7c, 0xe3, 0xce, 0xfc, 0x58, 0x57, 0x8f, 0x8d, 0xa1, 0x6b, 0x90, + 0xaa, 0x74, 0xb6, 0x0d, 0xcb, 0x3b, 0x7f, 0x96, 0xd0, 0x91, 0x59, 0xc7, 0x8a, 0xcf, 0xdc, 0xbb, + 0x33, 0x7f, 0xe6, 0x40, 0x03, 0x49, 0x2d, 0xec, 0x4e, 0x4c, 0xa0, 0xe9, 0x27, 0x8b, 0x41, 0x2e, + 0x74, 0x05, 0x12, 0xe2, 0x92, 0x1d, 0xf3, 0x17, 0x2f, 0x72, 0x13, 0xee, 0x8b, 0xdb, 0x27, 0x43, + 0xbf, 0x04, 0xe9, 0x4a, 0xe7, 0x92, 0x69, 0x6b, 0xdc, 0x07, 0xf1, 0x05, 0x69, 0x29, 0x52, 0xbc, + 0x70, 0xef, 0xce, 0xfc, 0xd9, 0x91, 0x89, 0x39, 0x9c, 0x32, 0xf7, 0xb0, 0xa1, 0x17, 0x20, 0xe9, + 0x5f, 0xd3, 0x17, 0x09, 0x91, 0xe2, 0xc7, 0xb9, 0xdd, 0xf7, 0x47, 0xdf, 0xa5, 0x0b, 0x58, 0xce, + 0xdc, 0x3d, 0xb1, 0x20, 0x2d, 0x49, 0xf7, 0x63, 0x39, 0xf7, 0x49, 0x0f, 0x5b, 0xc0, 0xf2, 0xf3, + 0x67, 0xe9, 0x9b, 0x0b, 0xe9, 0x7e, 0x2d, 0xe7, 0xf4, 0x5d, 0x3a, 0x74, 0x19, 0x26, 0x2a, 0x9d, + 0x62, 0xc7, 0xc3, 0x2e, 0xfd, 0x94, 0x27, 0x5d, 0x7c, 0xfa, 0xde, 0x9d, 0xf9, 0x8f, 0x8e, 0xc8, + 0x4a, 0x71, 0x8a, 0x20, 0x40, 0x0b, 0x90, 0xda, 0xb0, 0x9d, 0xa6, 0x66, 0x32, 0x3e, 0x60, 0x6f, + 0x62, 0x02, 0x22, 0xb4, 0x4d, 0x66, 0xc2, 0x56, 0xdb, 0xa5, 0xff, 0x84, 0xf0, 0x53, 0xc4, 0x64, + 0x97, 0x09, 0x19, 0x10, 0xaf, 0x74, 0x2a, 0x5a, 0x2b, 0x9b, 0xa6, 0xaf, 0x09, 0x1e, 0x5a, 0xf6, + 0x11, 0x62, 0x6f, 0x2d, 0xd3, 0x71, 0xfa, 0x3d, 0x45, 0xf1, 0xec, 0xbd, 0x3b, 0xf3, 0x4f, 0x8f, + 0x7c, 0xc7, 0x8a, 0xd6, 0xa2, 0xb7, 0x63, 0x77, 0x40, 0xdf, 0x92, 0xc8, 0xc6, 0x62, 0x47, 0xad, + 0xe4, 0x8e, 0x93, 0xf4, 0x8e, 0x0f, 0x0f, 0xbd, 0xa3, 0xaf, 0xc5, 0xee, 0x6b, 0x7d, 0xf6, 0xcd, + 0x23, 0xcc, 0x94, 0x3d, 0xce, 0x90, 0x5b, 0xff, 0xfa, 0x9b, 0xf7, 0xbd, 0x69, 0x7d, 0x0b, 0xd0, + 0xcb, 0x12, 0x4c, 0x56, 0x3a, 0x1b, 0xbc, 0xb0, 0x12, 0xcb, 0x33, 0xfc, 0x53, 0xf5, 0x61, 0x96, + 0x07, 0xf4, 0x98, 0xed, 0xe7, 0x3f, 0xfb, 0xe6, 0xfc, 0xe9, 0x91, 0x8d, 0xa0, 0x29, 0x88, 0xda, + 0xd0, 0x7b, 0x4f, 0xf4, 0x39, 0x6a, 0x45, 0x89, 0x14, 0xe9, 0x3a, 0xae, 0x13, 0x2b, 0xa6, 0x0e, + 0xb1, 0x22, 0xa0, 0xc7, 0xac, 0xc8, 0x93, 0xa8, 0xbf, 0x7f, 0x4b, 0x02, 0x7c, 0xa8, 0x0a, 0xe3, + 0xcc, 0xc3, 0xf4, 0x33, 0xb2, 0xe4, 0x11, 0xc3, 0xb0, 0xbb, 0x38, 0x0a, 0xa7, 0x99, 0xbb, 0x00, + 0xd0, 0x8d, 0x31, 0x24, 0x43, 0xf4, 0x06, 0xee, 0xf0, 0x6f, 0x05, 0xc9, 0x4f, 0x34, 0xdb, 0xfd, + 0x16, 0x56, 0x5a, 0x8a, 0xf1, 0x0f, 0x5c, 0xf3, 0x91, 0x0b, 0xd2, 0xdc, 0x73, 0x20, 0xf7, 0xc7, + 0xca, 0x91, 0xf0, 0x0a, 0xa0, 0xc1, 0x15, 0x0b, 0x32, 0xc4, 0x19, 0xc3, 0x63, 0x41, 0x86, 0xd4, + 0x69, 0xb9, 0xeb, 0xf3, 0x2b, 0x86, 0xe9, 0xda, 0xd6, 0x00, 0x67, 0xbf, 0xff, 0x7f, 0x3a, 0xce, + 0xc5, 0x1c, 0x8c, 0x33, 0x21, 0x99, 0x4b, 0x99, 0x96, 0x0f, 0x5a, 0xe5, 0x14, 0x76, 0x51, 0x5c, + 0x7f, 0xe3, 0x6e, 0x6e, 0xec, 0xfb, 0x77, 0x73, 0x63, 0xff, 0x72, 0x37, 0x37, 0xf6, 0xd6, 0xdd, + 0x9c, 0xf4, 0xce, 0xdd, 0x9c, 0xf4, 0xde, 0xdd, 0x9c, 0xf4, 0x93, 0xbb, 0x39, 0xe9, 0xf6, 0x7e, + 0x4e, 0xfa, 0xca, 0x7e, 0x4e, 0xfa, 0xc6, 0x7e, 0x4e, 0xfa, 0xce, 0x7e, 0x4e, 0xfa, 0xee, 0x7e, + 0x4e, 0x7a, 0x63, 0x3f, 0x27, 0x7d, 0x7f, 0x3f, 0x27, 0xbd, 0xb5, 0x9f, 0x93, 0xde, 0xd9, 0xcf, + 0x8d, 0xbd, 0xb7, 0x9f, 0x93, 0x7e, 0xb2, 0x9f, 0x1b, 0xbb, 0xfd, 0xc3, 0xdc, 0xd8, 0xff, 0x07, + 0x00, 0x00, 0xff, 0xff, 0x7c, 0x9f, 0xb9, 0x37, 0x0e, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/marshaler/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/marshaler/casttype.pb.go index 8c219728b..3ac389e43 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/marshaler/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/marshaler/casttype.pb.go @@ -88,258 +88,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4012 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, - 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x83, 0x14, 0xfd, - 0x47, 0xdb, 0x09, 0xe5, 0x91, 0x28, 0x59, 0x86, 0x12, 0x7b, 0x00, 0x12, 0x62, 0xa8, 0x21, 0x48, - 0x66, 0x49, 0xc6, 0x3f, 0xe9, 0xcc, 0xce, 0xe5, 0xe2, 0x12, 0x5c, 0x69, 0xb1, 0x8b, 0xee, 0x2e, - 0x24, 0xc3, 0x4f, 0x4a, 0xdc, 0x36, 0x93, 0x66, 0xfa, 0xdf, 0x99, 0x26, 0x8e, 0xe3, 0xa6, 0x99, - 0x69, 0x9d, 0xa6, 0x7f, 0x49, 0x9b, 0xa4, 0x99, 0x3e, 0xe5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, - 0x1f, 0x3a, 0x72, 0xc4, 0x7a, 0xa6, 0x4e, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xe4, 0x97, 0xce, - 0xfd, 0x5b, 0x2c, 0x7e, 0xa8, 0x05, 0x95, 0x49, 0xdc, 0x27, 0xf2, 0x9e, 0x7b, 0xbe, 0x6f, 0xcf, - 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0x5e, 0x2c, 0x7c, 0x7a, 0x09, 0xe6, 0xea, 0x8e, 0x53, 0xb7, 0xc8, - 0xe9, 0xa6, 0xeb, 0xf8, 0xce, 0x5e, 0x6b, 0xff, 0x74, 0x8d, 0x78, 0x86, 0x6b, 0x36, 0x7d, 0xc7, - 0x5d, 0x64, 0x32, 0x34, 0xc1, 0x35, 0x16, 0xa5, 0xc6, 0x7c, 0x15, 0x26, 0x2f, 0x99, 0x16, 0x59, - 0x09, 0x14, 0xb7, 0x89, 0x8f, 0x2e, 0x40, 0x62, 0xdf, 0xb4, 0x48, 0x5e, 0x99, 0x8b, 0x2f, 0x64, - 0xce, 0x3c, 0xb8, 0xd8, 0x03, 0x5a, 0xec, 0x46, 0x6c, 0x51, 0xb1, 0xc6, 0x10, 0xf3, 0x6f, 0x25, - 0x60, 0x6a, 0xc0, 0x2c, 0x42, 0x90, 0xb0, 0x71, 0x83, 0x32, 0x2a, 0x0b, 0x69, 0x8d, 0xfd, 0x8f, - 0xf2, 0x30, 0xd6, 0xc4, 0xc6, 0x55, 0x5c, 0x27, 0xf9, 0x18, 0x13, 0xcb, 0x21, 0x2a, 0x00, 0xd4, - 0x48, 0x93, 0xd8, 0x35, 0x62, 0x1b, 0xed, 0x7c, 0x7c, 0x2e, 0xbe, 0x90, 0xd6, 0x42, 0x12, 0xf4, - 0x38, 0x4c, 0x36, 0x5b, 0x7b, 0x96, 0x69, 0xe8, 0x21, 0x35, 0x98, 0x8b, 0x2f, 0x24, 0x35, 0x95, - 0x4f, 0xac, 0x74, 0x94, 0x1f, 0x81, 0x89, 0xeb, 0x04, 0x5f, 0x0d, 0xab, 0x66, 0x98, 0x6a, 0x8e, - 0x8a, 0x43, 0x8a, 0xcb, 0x90, 0x6d, 0x10, 0xcf, 0xc3, 0x75, 0xa2, 0xfb, 0xed, 0x26, 0xc9, 0x27, - 0xd8, 0xea, 0xe7, 0xfa, 0x56, 0xdf, 0xbb, 0xf2, 0x8c, 0x40, 0xed, 0xb4, 0x9b, 0x04, 0x95, 0x20, - 0x4d, 0xec, 0x56, 0x83, 0x33, 0x24, 0x8f, 0xf0, 0x5f, 0xc5, 0x6e, 0x35, 0x7a, 0x59, 0x52, 0x14, - 0x26, 0x28, 0xc6, 0x3c, 0xe2, 0x5e, 0x33, 0x0d, 0x92, 0x1f, 0x65, 0x04, 0x8f, 0xf4, 0x11, 0x6c, - 0xf3, 0xf9, 0x5e, 0x0e, 0x89, 0x43, 0xcb, 0x90, 0x26, 0x2f, 0xfa, 0xc4, 0xf6, 0x4c, 0xc7, 0xce, - 0x8f, 0x31, 0x92, 0x87, 0x06, 0xec, 0x22, 0xb1, 0x6a, 0xbd, 0x14, 0x1d, 0x1c, 0x3a, 0x0f, 0x63, - 0x4e, 0xd3, 0x37, 0x1d, 0xdb, 0xcb, 0xa7, 0xe6, 0x94, 0x85, 0xcc, 0x99, 0x0f, 0x0d, 0x0c, 0x84, - 0x4d, 0xae, 0xa3, 0x49, 0x65, 0xb4, 0x06, 0xaa, 0xe7, 0xb4, 0x5c, 0x83, 0xe8, 0x86, 0x53, 0x23, - 0xba, 0x69, 0xef, 0x3b, 0xf9, 0x34, 0x23, 0x98, 0xed, 0x5f, 0x08, 0x53, 0x5c, 0x76, 0x6a, 0x64, - 0xcd, 0xde, 0x77, 0xb4, 0x9c, 0xd7, 0x35, 0x46, 0x27, 0x60, 0xd4, 0x6b, 0xdb, 0x3e, 0x7e, 0x31, - 0x9f, 0x65, 0x11, 0x22, 0x46, 0xf3, 0xff, 0x9b, 0x84, 0x89, 0x61, 0x42, 0xec, 0x22, 0x24, 0xf7, - 0xe9, 0x2a, 0xf3, 0xb1, 0xe3, 0xf8, 0x80, 0x63, 0xba, 0x9d, 0x38, 0x7a, 0x97, 0x4e, 0x2c, 0x41, - 0xc6, 0x26, 0x9e, 0x4f, 0x6a, 0x3c, 0x22, 0xe2, 0x43, 0xc6, 0x14, 0x70, 0x50, 0x7f, 0x48, 0x25, - 0xee, 0x2a, 0xa4, 0x9e, 0x83, 0x89, 0xc0, 0x24, 0xdd, 0xc5, 0x76, 0x5d, 0xc6, 0xe6, 0xe9, 0x28, - 0x4b, 0x16, 0x2b, 0x12, 0xa7, 0x51, 0x98, 0x96, 0x23, 0x5d, 0x63, 0xb4, 0x02, 0xe0, 0xd8, 0xc4, - 0xd9, 0xd7, 0x6b, 0xc4, 0xb0, 0xf2, 0xa9, 0x23, 0xbc, 0xb4, 0x49, 0x55, 0xfa, 0xbc, 0xe4, 0x70, - 0xa9, 0x61, 0xa1, 0xa7, 0x3a, 0xa1, 0x36, 0x76, 0x44, 0xa4, 0x54, 0xf9, 0x21, 0xeb, 0x8b, 0xb6, - 0x5d, 0xc8, 0xb9, 0x84, 0xc6, 0x3d, 0xa9, 0x89, 0x95, 0xa5, 0x99, 0x11, 0x8b, 0x91, 0x2b, 0xd3, - 0x04, 0x8c, 0x2f, 0x6c, 0xdc, 0x0d, 0x0f, 0xd1, 0x03, 0x10, 0x08, 0x74, 0x16, 0x56, 0xc0, 0xb2, - 0x50, 0x56, 0x0a, 0x37, 0x70, 0x83, 0xcc, 0x5c, 0x80, 0x5c, 0xb7, 0x7b, 0xd0, 0x34, 0x24, 0x3d, - 0x1f, 0xbb, 0x3e, 0x8b, 0xc2, 0xa4, 0xc6, 0x07, 0x48, 0x85, 0x38, 0xb1, 0x6b, 0x2c, 0xcb, 0x25, - 0x35, 0xfa, 0xef, 0xcc, 0x93, 0x30, 0xde, 0xf5, 0xf8, 0x61, 0x81, 0xf3, 0x5f, 0x18, 0x85, 0xe9, - 0x41, 0x31, 0x37, 0x30, 0xfc, 0x4f, 0xc0, 0xa8, 0xdd, 0x6a, 0xec, 0x11, 0x37, 0x1f, 0x67, 0x0c, - 0x62, 0x84, 0x4a, 0x90, 0xb4, 0xf0, 0x1e, 0xb1, 0xf2, 0x89, 0x39, 0x65, 0x21, 0x77, 0xe6, 0xf1, - 0xa1, 0xa2, 0x7a, 0x71, 0x9d, 0x42, 0x34, 0x8e, 0x44, 0x4f, 0x43, 0x42, 0xa4, 0x38, 0xca, 0xf0, - 0xd8, 0x70, 0x0c, 0x34, 0x16, 0x35, 0x86, 0x43, 0xf7, 0x41, 0x9a, 0xfe, 0xe5, 0xbe, 0x1d, 0x65, - 0x36, 0xa7, 0xa8, 0x80, 0xfa, 0x15, 0xcd, 0x40, 0x8a, 0x85, 0x59, 0x8d, 0xc8, 0xd2, 0x10, 0x8c, - 0xe9, 0xc6, 0xd4, 0xc8, 0x3e, 0x6e, 0x59, 0xbe, 0x7e, 0x0d, 0x5b, 0x2d, 0xc2, 0x02, 0x26, 0xad, - 0x65, 0x85, 0xf0, 0x93, 0x54, 0x86, 0x66, 0x21, 0xc3, 0xa3, 0xd2, 0xb4, 0x6b, 0xe4, 0x45, 0x96, - 0x7d, 0x92, 0x1a, 0x0f, 0xd4, 0x35, 0x2a, 0xa1, 0x8f, 0xbf, 0xe2, 0x39, 0xb6, 0xdc, 0x5a, 0xf6, - 0x08, 0x2a, 0x60, 0x8f, 0x7f, 0xb2, 0x37, 0xf1, 0xdd, 0x3f, 0x78, 0x79, 0xbd, 0xb1, 0x38, 0xff, - 0x9d, 0x18, 0x24, 0xd8, 0x79, 0x9b, 0x80, 0xcc, 0xce, 0xf3, 0x5b, 0x15, 0x7d, 0x65, 0x73, 0xb7, - 0xbc, 0x5e, 0x51, 0x15, 0x94, 0x03, 0x60, 0x82, 0x4b, 0xeb, 0x9b, 0xa5, 0x1d, 0x35, 0x16, 0x8c, - 0xd7, 0x36, 0x76, 0xce, 0x2f, 0xa9, 0xf1, 0x00, 0xb0, 0xcb, 0x05, 0x89, 0xb0, 0xc2, 0xd9, 0x33, - 0x6a, 0x12, 0xa9, 0x90, 0xe5, 0x04, 0x6b, 0xcf, 0x55, 0x56, 0xce, 0x2f, 0xa9, 0xa3, 0xdd, 0x92, - 0xb3, 0x67, 0xd4, 0x31, 0x34, 0x0e, 0x69, 0x26, 0x29, 0x6f, 0x6e, 0xae, 0xab, 0xa9, 0x80, 0x73, - 0x7b, 0x47, 0x5b, 0xdb, 0x58, 0x55, 0xd3, 0x01, 0xe7, 0xaa, 0xb6, 0xb9, 0xbb, 0xa5, 0x42, 0xc0, - 0x50, 0xad, 0x6c, 0x6f, 0x97, 0x56, 0x2b, 0x6a, 0x26, 0xd0, 0x28, 0x3f, 0xbf, 0x53, 0xd9, 0x56, - 0xb3, 0x5d, 0x66, 0x9d, 0x3d, 0xa3, 0x8e, 0x07, 0x8f, 0xa8, 0x6c, 0xec, 0x56, 0xd5, 0x1c, 0x9a, - 0x84, 0x71, 0xfe, 0x08, 0x69, 0xc4, 0x44, 0x8f, 0xe8, 0xfc, 0x92, 0xaa, 0x76, 0x0c, 0xe1, 0x2c, - 0x93, 0x5d, 0x82, 0xf3, 0x4b, 0x2a, 0x9a, 0x5f, 0x86, 0x24, 0x8b, 0x2e, 0x84, 0x20, 0xb7, 0x5e, - 0x2a, 0x57, 0xd6, 0xf5, 0xcd, 0xad, 0x9d, 0xb5, 0xcd, 0x8d, 0xd2, 0xba, 0xaa, 0x74, 0x64, 0x5a, - 0xe5, 0x13, 0xbb, 0x6b, 0x5a, 0x65, 0x45, 0x8d, 0x85, 0x65, 0x5b, 0x95, 0xd2, 0x4e, 0x65, 0x45, - 0x8d, 0xcf, 0x1b, 0x30, 0x3d, 0x28, 0xcf, 0x0c, 0x3c, 0x19, 0xa1, 0x2d, 0x8e, 0x1d, 0xb1, 0xc5, - 0x8c, 0xab, 0x6f, 0x8b, 0xbf, 0xaa, 0xc0, 0xd4, 0x80, 0x5c, 0x3b, 0xf0, 0x21, 0xcf, 0x40, 0x92, - 0x87, 0x28, 0xaf, 0x3e, 0x8f, 0x0e, 0x4c, 0xda, 0x2c, 0x60, 0xfb, 0x2a, 0x10, 0xc3, 0x85, 0x2b, - 0x70, 0xfc, 0x88, 0x0a, 0x4c, 0x29, 0xfa, 0x8c, 0x7c, 0x59, 0x81, 0xfc, 0x51, 0xdc, 0x11, 0x89, - 0x22, 0xd6, 0x95, 0x28, 0x2e, 0xf6, 0x1a, 0x70, 0xea, 0xe8, 0x35, 0xf4, 0x59, 0xf1, 0xba, 0x02, - 0x27, 0x06, 0x37, 0x2a, 0x03, 0x6d, 0x78, 0x1a, 0x46, 0x1b, 0xc4, 0x3f, 0x70, 0x64, 0xb1, 0x7e, - 0x78, 0x40, 0x09, 0xa0, 0xd3, 0xbd, 0xbe, 0x12, 0xa8, 0x70, 0x0d, 0x89, 0x1f, 0xd5, 0x6d, 0x70, - 0x6b, 0xfa, 0x2c, 0xfd, 0x5c, 0x0c, 0xee, 0x19, 0x48, 0x3e, 0xd0, 0xd0, 0xfb, 0x01, 0x4c, 0xbb, - 0xd9, 0xf2, 0x79, 0x41, 0xe6, 0xf9, 0x29, 0xcd, 0x24, 0xec, 0xec, 0xd3, 0xdc, 0xd3, 0xf2, 0x83, - 0xf9, 0x38, 0x9b, 0x07, 0x2e, 0x62, 0x0a, 0x17, 0x3a, 0x86, 0x26, 0x98, 0xa1, 0x85, 0x23, 0x56, - 0xda, 0x57, 0xeb, 0x9e, 0x00, 0xd5, 0xb0, 0x4c, 0x62, 0xfb, 0xba, 0xe7, 0xbb, 0x04, 0x37, 0x4c, - 0xbb, 0xce, 0x12, 0x70, 0xaa, 0x98, 0xdc, 0xc7, 0x96, 0x47, 0xb4, 0x09, 0x3e, 0xbd, 0x2d, 0x67, - 0x29, 0x82, 0x55, 0x19, 0x37, 0x84, 0x18, 0xed, 0x42, 0xf0, 0xe9, 0x00, 0x31, 0xff, 0xf9, 0x31, - 0xc8, 0x84, 0xda, 0x3a, 0x74, 0x0a, 0xb2, 0x57, 0xf0, 0x35, 0xac, 0xcb, 0x56, 0x9d, 0x7b, 0x22, - 0x43, 0x65, 0x5b, 0xa2, 0x5d, 0x7f, 0x02, 0xa6, 0x99, 0x8a, 0xd3, 0xf2, 0x89, 0xab, 0x1b, 0x16, - 0xf6, 0x3c, 0xe6, 0xb4, 0x14, 0x53, 0x45, 0x74, 0x6e, 0x93, 0x4e, 0x2d, 0xcb, 0x19, 0x74, 0x0e, - 0xa6, 0x18, 0xa2, 0xd1, 0xb2, 0x7c, 0xb3, 0x69, 0x11, 0x9d, 0xbe, 0x3c, 0x78, 0x2c, 0x11, 0x07, - 0x96, 0x4d, 0x52, 0x8d, 0xaa, 0x50, 0xa0, 0x16, 0x79, 0x68, 0x15, 0xee, 0x67, 0xb0, 0x3a, 0xb1, - 0x89, 0x8b, 0x7d, 0xa2, 0x93, 0x5f, 0x6e, 0x61, 0xcb, 0xd3, 0xb1, 0x5d, 0xd3, 0x0f, 0xb0, 0x77, - 0x90, 0x9f, 0x0e, 0x13, 0x9c, 0xa4, 0xba, 0xab, 0x42, 0xb5, 0xc2, 0x34, 0x4b, 0x76, 0xed, 0xe3, - 0xd8, 0x3b, 0x40, 0x45, 0x38, 0xc1, 0x88, 0x3c, 0xdf, 0x35, 0xed, 0xba, 0x6e, 0x1c, 0x10, 0xe3, - 0xaa, 0xde, 0xf2, 0xf7, 0x2f, 0xe4, 0xef, 0x0b, 0x33, 0x30, 0x23, 0xb7, 0x99, 0xce, 0x32, 0x55, - 0xd9, 0xf5, 0xf7, 0x2f, 0xa0, 0x6d, 0xc8, 0xd2, 0xfd, 0x68, 0x98, 0x2f, 0x11, 0x7d, 0xdf, 0x71, - 0x59, 0x71, 0xc9, 0x0d, 0x38, 0xdc, 0x21, 0x27, 0x2e, 0x6e, 0x0a, 0x40, 0xd5, 0xa9, 0x91, 0x62, - 0x72, 0x7b, 0xab, 0x52, 0x59, 0xd1, 0x32, 0x92, 0xe5, 0x92, 0xe3, 0xd2, 0x98, 0xaa, 0x3b, 0x81, - 0x8f, 0x33, 0x3c, 0xa6, 0xea, 0x8e, 0xf4, 0xf0, 0x39, 0x98, 0x32, 0x0c, 0xbe, 0x6c, 0xd3, 0xd0, - 0x45, 0x97, 0xef, 0xe5, 0xd5, 0x2e, 0x7f, 0x19, 0xc6, 0x2a, 0x57, 0x10, 0x61, 0xee, 0xa1, 0xa7, - 0xe0, 0x9e, 0x8e, 0xbf, 0xc2, 0xc0, 0xc9, 0xbe, 0x55, 0xf6, 0x42, 0xcf, 0xc1, 0x54, 0xb3, 0xdd, - 0x0f, 0x44, 0x5d, 0x4f, 0x6c, 0xb6, 0x7b, 0x61, 0x0f, 0xb1, 0x37, 0x37, 0x97, 0x18, 0xd8, 0x27, - 0xb5, 0xfc, 0xbd, 0x61, 0xed, 0xd0, 0x04, 0x3a, 0x0d, 0xaa, 0x61, 0xe8, 0xc4, 0xc6, 0x7b, 0x16, - 0xd1, 0xb1, 0x4b, 0x6c, 0xec, 0xe5, 0x67, 0xc3, 0xca, 0x39, 0xc3, 0xa8, 0xb0, 0xd9, 0x12, 0x9b, - 0x44, 0x8f, 0xc1, 0xa4, 0xb3, 0x77, 0xc5, 0xe0, 0xc1, 0xa5, 0x37, 0x5d, 0xb2, 0x6f, 0xbe, 0x98, - 0x7f, 0x90, 0xb9, 0x69, 0x82, 0x4e, 0xb0, 0xd0, 0xda, 0x62, 0x62, 0xf4, 0x28, 0xa8, 0x86, 0x77, - 0x80, 0xdd, 0x26, 0xab, 0xee, 0x5e, 0x13, 0x1b, 0x24, 0xff, 0x10, 0x57, 0xe5, 0xf2, 0x0d, 0x29, - 0x46, 0xcf, 0xc1, 0x74, 0xcb, 0x36, 0x6d, 0x9f, 0xb8, 0x4d, 0x97, 0xd0, 0x26, 0x9d, 0x9f, 0xb4, - 0xfc, 0xbf, 0x8e, 0x1d, 0xd1, 0x66, 0xef, 0x86, 0xb5, 0xf9, 0xee, 0x6a, 0x53, 0xad, 0x7e, 0xe1, - 0x7c, 0x11, 0xb2, 0xe1, 0x4d, 0x47, 0x69, 0xe0, 0xdb, 0xae, 0x2a, 0xb4, 0x86, 0x2e, 0x6f, 0xae, - 0xd0, 0xea, 0xf7, 0x42, 0x45, 0x8d, 0xd1, 0x2a, 0xbc, 0xbe, 0xb6, 0x53, 0xd1, 0xb5, 0xdd, 0x8d, - 0x9d, 0xb5, 0x6a, 0x45, 0x8d, 0x3f, 0x96, 0x4e, 0xbd, 0x3d, 0xa6, 0xde, 0xb8, 0x71, 0xe3, 0x46, - 0x6c, 0xfe, 0xfb, 0x31, 0xc8, 0x75, 0x77, 0xbe, 0xe8, 0xa3, 0x70, 0xaf, 0x7c, 0x4d, 0xf5, 0x88, - 0xaf, 0x5f, 0x37, 0x5d, 0x16, 0x87, 0x0d, 0xcc, 0x7b, 0xc7, 0xc0, 0x85, 0xd3, 0x42, 0x6b, 0x9b, - 0xf8, 0xcf, 0x9a, 0x2e, 0x8d, 0xb2, 0x06, 0xf6, 0xd1, 0x3a, 0xcc, 0xda, 0x8e, 0xee, 0xf9, 0xd8, - 0xae, 0x61, 0xb7, 0xa6, 0x77, 0x2e, 0x08, 0x74, 0x6c, 0x18, 0xc4, 0xf3, 0x1c, 0x5e, 0x02, 0x02, - 0x96, 0x0f, 0xd9, 0xce, 0xb6, 0x50, 0xee, 0xe4, 0xc6, 0x92, 0x50, 0xed, 0xd9, 0xee, 0xf8, 0x51, - 0xdb, 0x7d, 0x1f, 0xa4, 0x1b, 0xb8, 0xa9, 0x13, 0xdb, 0x77, 0xdb, 0xac, 0x5f, 0x4b, 0x69, 0xa9, - 0x06, 0x6e, 0x56, 0xe8, 0xf8, 0xe7, 0xb7, 0x07, 0x61, 0x3f, 0xfe, 0x73, 0x1c, 0xb2, 0xe1, 0x9e, - 0x8d, 0xb6, 0xc0, 0x06, 0xcb, 0xcf, 0x0a, 0x3b, 0xbe, 0x0f, 0xdc, 0xb1, 0xc3, 0x5b, 0x5c, 0xa6, - 0x89, 0xbb, 0x38, 0xca, 0x3b, 0x29, 0x8d, 0x23, 0x69, 0xd1, 0xa4, 0x07, 0x96, 0xf0, 0xfe, 0x3c, - 0xa5, 0x89, 0x11, 0x5a, 0x85, 0xd1, 0x2b, 0x1e, 0xe3, 0x1e, 0x65, 0xdc, 0x0f, 0xde, 0x99, 0xfb, - 0xf2, 0x36, 0x23, 0x4f, 0x5f, 0xde, 0xd6, 0x37, 0x36, 0xb5, 0x6a, 0x69, 0x5d, 0x13, 0x70, 0x74, - 0x12, 0x12, 0x16, 0x7e, 0xa9, 0xdd, 0x9d, 0xe2, 0x99, 0x68, 0x58, 0xc7, 0x9f, 0x84, 0xc4, 0x75, - 0x82, 0xaf, 0x76, 0x27, 0x56, 0x26, 0xfa, 0x39, 0x86, 0xfe, 0x69, 0x48, 0x32, 0x7f, 0x21, 0x00, - 0xe1, 0x31, 0x75, 0x04, 0xa5, 0x20, 0xb1, 0xbc, 0xa9, 0xd1, 0xf0, 0x57, 0x21, 0xcb, 0xa5, 0xfa, - 0xd6, 0x5a, 0x65, 0xb9, 0xa2, 0xc6, 0xe6, 0xcf, 0xc1, 0x28, 0x77, 0x02, 0x3d, 0x1a, 0x81, 0x1b, - 0xd4, 0x11, 0x31, 0x14, 0x1c, 0x8a, 0x9c, 0xdd, 0xad, 0x96, 0x2b, 0x9a, 0x1a, 0x0b, 0x6f, 0xaf, - 0x07, 0xd9, 0x70, 0xbb, 0xf6, 0x8b, 0x89, 0xa9, 0xbf, 0x53, 0x20, 0x13, 0x6a, 0xbf, 0x68, 0xe1, - 0xc7, 0x96, 0xe5, 0x5c, 0xd7, 0xb1, 0x65, 0x62, 0x4f, 0x04, 0x05, 0x30, 0x51, 0x89, 0x4a, 0x86, - 0xdd, 0xb4, 0x5f, 0x88, 0xf1, 0xaf, 0x29, 0xa0, 0xf6, 0xb6, 0x6e, 0x3d, 0x06, 0x2a, 0x1f, 0xa8, - 0x81, 0xaf, 0x2a, 0x90, 0xeb, 0xee, 0xd7, 0x7a, 0xcc, 0x3b, 0xf5, 0x81, 0x9a, 0xf7, 0x25, 0x05, - 0xc6, 0xbb, 0xba, 0xb4, 0xff, 0x57, 0xd6, 0xbd, 0x12, 0x87, 0xa9, 0x01, 0x38, 0x54, 0x12, 0xed, - 0x2c, 0xef, 0xb0, 0x3f, 0x32, 0xcc, 0xb3, 0x16, 0x69, 0xb5, 0xdc, 0xc2, 0xae, 0x2f, 0xba, 0xdf, - 0x47, 0x41, 0x35, 0x6b, 0xc4, 0xf6, 0xcd, 0x7d, 0x93, 0xb8, 0xe2, 0x15, 0x9c, 0xf7, 0xb8, 0x13, - 0x1d, 0x39, 0x7f, 0x0b, 0xff, 0x30, 0xa0, 0xa6, 0xe3, 0x99, 0xbe, 0x79, 0x8d, 0xe8, 0xa6, 0x2d, - 0xdf, 0xd7, 0x69, 0xcf, 0x9b, 0xd0, 0x54, 0x39, 0xb3, 0x66, 0xfb, 0x81, 0xb6, 0x4d, 0xea, 0xb8, - 0x47, 0x9b, 0xe6, 0xbe, 0xb8, 0xa6, 0xca, 0x99, 0x40, 0xfb, 0x14, 0x64, 0x6b, 0x4e, 0x8b, 0xb6, - 0x0f, 0x5c, 0x8f, 0xa6, 0x5a, 0x45, 0xcb, 0x70, 0x59, 0xa0, 0x22, 0xfa, 0xbb, 0xce, 0x45, 0x41, - 0x56, 0xcb, 0x70, 0x19, 0x57, 0x79, 0x04, 0x26, 0x70, 0xbd, 0xee, 0x52, 0x72, 0x49, 0xc4, 0x9b, - 0xd6, 0x5c, 0x20, 0x66, 0x8a, 0x33, 0x97, 0x21, 0x25, 0xfd, 0x40, 0xab, 0x19, 0xf5, 0x84, 0xde, - 0xe4, 0xd7, 0x35, 0xb1, 0x85, 0xb4, 0x96, 0xb2, 0xe5, 0xe4, 0x29, 0xc8, 0x9a, 0x9e, 0xde, 0xb9, - 0x37, 0x8c, 0xcd, 0xc5, 0x16, 0x52, 0x5a, 0xc6, 0xf4, 0x82, 0x8b, 0xa2, 0xf9, 0xd7, 0x63, 0x90, - 0xeb, 0xbe, 0xf7, 0x44, 0x2b, 0x90, 0xb2, 0x1c, 0x03, 0xb3, 0x40, 0xe0, 0x97, 0xee, 0x0b, 0x11, - 0x57, 0xa5, 0x8b, 0xeb, 0x42, 0x5f, 0x0b, 0x90, 0x33, 0xff, 0xa8, 0x40, 0x4a, 0x8a, 0xd1, 0x09, - 0x48, 0x34, 0xb1, 0x7f, 0xc0, 0xe8, 0x92, 0xe5, 0x98, 0xaa, 0x68, 0x6c, 0x4c, 0xe5, 0x5e, 0x13, - 0xdb, 0x2c, 0x04, 0x84, 0x9c, 0x8e, 0xe9, 0xbe, 0x5a, 0x04, 0xd7, 0x58, 0x3b, 0xec, 0x34, 0x1a, - 0xc4, 0xf6, 0x3d, 0xb9, 0xaf, 0x42, 0xbe, 0x2c, 0xc4, 0xe8, 0x71, 0x98, 0xf4, 0x5d, 0x6c, 0x5a, - 0x5d, 0xba, 0x09, 0xa6, 0xab, 0xca, 0x89, 0x40, 0xb9, 0x08, 0x27, 0x25, 0x6f, 0x8d, 0xf8, 0xd8, - 0x38, 0x20, 0xb5, 0x0e, 0x68, 0x94, 0x5d, 0xaa, 0xdd, 0x2b, 0x14, 0x56, 0xc4, 0xbc, 0xc4, 0xce, - 0xff, 0x50, 0x81, 0x49, 0xd9, 0xc0, 0xd7, 0x02, 0x67, 0x55, 0x01, 0xb0, 0x6d, 0x3b, 0x7e, 0xd8, - 0x5d, 0xfd, 0xa1, 0xdc, 0x87, 0x5b, 0x2c, 0x05, 0x20, 0x2d, 0x44, 0x30, 0xd3, 0x00, 0xe8, 0xcc, - 0x1c, 0xe9, 0xb6, 0x59, 0xc8, 0x88, 0x4b, 0x6d, 0xf6, 0xcb, 0x08, 0x7f, 0xeb, 0x03, 0x2e, 0xa2, - 0x9d, 0x3e, 0x9a, 0x86, 0xe4, 0x1e, 0xa9, 0x9b, 0xb6, 0xb8, 0x6a, 0xe3, 0x03, 0x79, 0x81, 0x97, - 0x08, 0x2e, 0xf0, 0xca, 0x9f, 0x82, 0x29, 0xc3, 0x69, 0xf4, 0x9a, 0x5b, 0x56, 0x7b, 0xde, 0x3c, - 0xbd, 0x8f, 0x2b, 0x2f, 0x40, 0xa7, 0x3b, 0xfb, 0x8a, 0xa2, 0x7c, 0x35, 0x16, 0x5f, 0xdd, 0x2a, - 0x7f, 0x3d, 0x36, 0xb3, 0xca, 0xa1, 0x5b, 0x72, 0xa5, 0x1a, 0xd9, 0xb7, 0x88, 0x41, 0xad, 0x87, - 0x9f, 0x3c, 0x0c, 0x1f, 0xa9, 0x9b, 0xfe, 0x41, 0x6b, 0x6f, 0xd1, 0x70, 0x1a, 0xa7, 0xeb, 0x4e, - 0xdd, 0xe9, 0xfc, 0x18, 0x44, 0x47, 0x6c, 0xc0, 0xfe, 0x13, 0x3f, 0x08, 0xa5, 0x03, 0xe9, 0x4c, - 0xe4, 0xaf, 0x47, 0xc5, 0x0d, 0x98, 0x12, 0xca, 0x3a, 0xbb, 0x91, 0xe6, 0x7d, 0x38, 0xba, 0xe3, - 0xad, 0x44, 0xfe, 0x9b, 0x6f, 0xb1, 0x4a, 0xa7, 0x4d, 0x0a, 0x28, 0x9d, 0xe3, 0x9d, 0x7a, 0x51, - 0x83, 0x7b, 0xba, 0xf8, 0xf8, 0xd1, 0x24, 0x6e, 0x04, 0xe3, 0xf7, 0x05, 0xe3, 0x54, 0x88, 0x71, - 0x5b, 0x40, 0x8b, 0xcb, 0x30, 0x7e, 0x1c, 0xae, 0xbf, 0x17, 0x5c, 0x59, 0x12, 0x26, 0x59, 0x85, - 0x09, 0x46, 0x62, 0xb4, 0x3c, 0xdf, 0x69, 0xb0, 0xbc, 0x77, 0x67, 0x9a, 0x7f, 0x78, 0x8b, 0x9f, - 0x95, 0x1c, 0x85, 0x2d, 0x07, 0xa8, 0x62, 0x11, 0xd8, 0x25, 0x7c, 0x8d, 0x18, 0x56, 0x04, 0xc3, - 0x1b, 0xc2, 0x90, 0x40, 0xbf, 0xf8, 0x49, 0x98, 0xa6, 0xff, 0xb3, 0xb4, 0x14, 0xb6, 0x24, 0xfa, - 0x0e, 0x26, 0xff, 0xc3, 0x97, 0xf9, 0x71, 0x9c, 0x0a, 0x08, 0x42, 0x36, 0x85, 0x76, 0xb1, 0x4e, - 0x7c, 0x9f, 0xb8, 0x9e, 0x8e, 0xad, 0x41, 0xe6, 0x85, 0xde, 0x60, 0xf3, 0x5f, 0x7c, 0xa7, 0x7b, - 0x17, 0x57, 0x39, 0xb2, 0x64, 0x59, 0xc5, 0x5d, 0xb8, 0x77, 0x40, 0x54, 0x0c, 0xc1, 0xf9, 0x8a, - 0xe0, 0x9c, 0xee, 0x8b, 0x0c, 0x4a, 0xbb, 0x05, 0x52, 0x1e, 0xec, 0xe5, 0x10, 0x9c, 0x5f, 0x12, - 0x9c, 0x48, 0x60, 0xe5, 0x96, 0x52, 0xc6, 0xcb, 0x30, 0x79, 0x8d, 0xb8, 0x7b, 0x8e, 0x27, 0x2e, - 0x0e, 0x86, 0xa0, 0x7b, 0x55, 0xd0, 0x4d, 0x08, 0x20, 0xbb, 0x46, 0xa0, 0x5c, 0x4f, 0x41, 0x6a, - 0x1f, 0x1b, 0x64, 0x08, 0x8a, 0x2f, 0x0b, 0x8a, 0x31, 0xaa, 0x4f, 0xa1, 0x25, 0xc8, 0xd6, 0x1d, - 0x51, 0x99, 0xa2, 0xe1, 0xaf, 0x09, 0x78, 0x46, 0x62, 0x04, 0x45, 0xd3, 0x69, 0xb6, 0x2c, 0x5a, - 0xb6, 0xa2, 0x29, 0xfe, 0x50, 0x52, 0x48, 0x8c, 0xa0, 0x38, 0x86, 0x5b, 0xbf, 0x22, 0x29, 0xbc, - 0x90, 0x3f, 0x9f, 0x81, 0x8c, 0x63, 0x5b, 0x6d, 0xc7, 0x1e, 0xc6, 0x88, 0x3f, 0x12, 0x0c, 0x20, - 0x20, 0x94, 0xe0, 0x22, 0xa4, 0x87, 0xdd, 0x88, 0x3f, 0x7e, 0x47, 0x1e, 0x0f, 0xb9, 0x03, 0xab, - 0x30, 0x21, 0x13, 0x94, 0xe9, 0xd8, 0x43, 0x50, 0xfc, 0x89, 0xa0, 0xc8, 0x85, 0x60, 0x62, 0x19, - 0x3e, 0xf1, 0xfc, 0x3a, 0x19, 0x86, 0xe4, 0x75, 0xb9, 0x0c, 0x01, 0x11, 0xae, 0xdc, 0x23, 0xb6, - 0x71, 0x30, 0x1c, 0xc3, 0xd7, 0xa4, 0x2b, 0x25, 0x86, 0x52, 0x2c, 0xc3, 0x78, 0x03, 0xbb, 0xde, - 0x01, 0xb6, 0x86, 0xda, 0x8e, 0x3f, 0x15, 0x1c, 0xd9, 0x00, 0x24, 0x3c, 0xd2, 0xb2, 0x8f, 0x43, - 0xf3, 0x75, 0xe9, 0x91, 0x10, 0x4c, 0x1c, 0x3d, 0xcf, 0x67, 0x77, 0x33, 0xc7, 0x61, 0xfb, 0x33, - 0x79, 0xf4, 0x38, 0xb6, 0x1a, 0x66, 0xbc, 0x08, 0x69, 0xcf, 0x7c, 0x69, 0x28, 0x9a, 0x3f, 0x97, - 0x3b, 0xcd, 0x00, 0x14, 0xfc, 0x3c, 0x9c, 0x1c, 0x58, 0x26, 0x86, 0x20, 0xfb, 0x0b, 0x41, 0x76, - 0x62, 0x40, 0xa9, 0x10, 0x29, 0xe1, 0xb8, 0x94, 0x7f, 0x29, 0x53, 0x02, 0xe9, 0xe1, 0xda, 0xa2, - 0x9d, 0xbd, 0x87, 0xf7, 0x8f, 0xe7, 0xb5, 0xbf, 0x92, 0x5e, 0xe3, 0xd8, 0x2e, 0xaf, 0xed, 0xc0, - 0x09, 0xc1, 0x78, 0xbc, 0x7d, 0xfd, 0x86, 0x4c, 0xac, 0x1c, 0xbd, 0xdb, 0xbd, 0xbb, 0x9f, 0x82, - 0x99, 0xc0, 0x9d, 0xb2, 0x29, 0xf5, 0xf4, 0x06, 0x6e, 0x0e, 0xc1, 0xfc, 0x4d, 0xc1, 0x2c, 0x33, - 0x7e, 0xd0, 0xd5, 0x7a, 0x55, 0xdc, 0xa4, 0xe4, 0xcf, 0x41, 0x5e, 0x92, 0xb7, 0x6c, 0x97, 0x18, - 0x4e, 0xdd, 0x36, 0x5f, 0x22, 0xb5, 0x21, 0xa8, 0xff, 0xba, 0x67, 0xab, 0x76, 0x43, 0x70, 0xca, - 0xbc, 0x06, 0x6a, 0xd0, 0xab, 0xe8, 0x66, 0xa3, 0xe9, 0xb8, 0x7e, 0x04, 0xe3, 0xdf, 0xc8, 0x9d, - 0x0a, 0x70, 0x6b, 0x0c, 0x56, 0xac, 0x40, 0x8e, 0x0d, 0x87, 0x0d, 0xc9, 0x6f, 0x09, 0xa2, 0xf1, - 0x0e, 0x4a, 0x24, 0x0e, 0xc3, 0x69, 0x34, 0xb1, 0x3b, 0x4c, 0xfe, 0xfb, 0xb6, 0x4c, 0x1c, 0x02, - 0x22, 0x12, 0x87, 0xdf, 0x6e, 0x12, 0x5a, 0xed, 0x87, 0x60, 0xf8, 0x8e, 0x4c, 0x1c, 0x12, 0x23, - 0x28, 0x64, 0xc3, 0x30, 0x04, 0xc5, 0xdf, 0x4a, 0x0a, 0x89, 0xa1, 0x14, 0x9f, 0xe8, 0x14, 0x5a, - 0x97, 0xd4, 0x4d, 0xcf, 0x77, 0x79, 0x2b, 0x7c, 0x67, 0xaa, 0xef, 0xbe, 0xd3, 0xdd, 0x84, 0x69, - 0x21, 0x68, 0xf1, 0x32, 0x4c, 0xf4, 0xb4, 0x18, 0x28, 0xea, 0x17, 0xfd, 0xfc, 0xa7, 0xdf, 0x13, - 0xc9, 0xa8, 0xbb, 0xc3, 0x28, 0xae, 0xd3, 0x7d, 0xef, 0xee, 0x03, 0xa2, 0xc9, 0x5e, 0x7e, 0x2f, - 0xd8, 0xfa, 0xae, 0x36, 0xa0, 0x78, 0x09, 0xc6, 0xbb, 0x7a, 0x80, 0x68, 0xaa, 0x5f, 0x11, 0x54, - 0xd9, 0x70, 0x0b, 0x50, 0x3c, 0x07, 0x09, 0x5a, 0xcf, 0xa3, 0xe1, 0xbf, 0x2a, 0xe0, 0x4c, 0xbd, - 0xf8, 0x31, 0x48, 0xc9, 0x3a, 0x1e, 0x0d, 0xfd, 0x35, 0x01, 0x0d, 0x20, 0x14, 0x2e, 0x6b, 0x78, - 0x34, 0xfc, 0xb3, 0x12, 0x2e, 0x21, 0x14, 0x3e, 0xbc, 0x0b, 0xbf, 0xf7, 0xf9, 0x84, 0xc8, 0xc3, - 0xd2, 0x77, 0x17, 0x61, 0x4c, 0x14, 0xef, 0x68, 0xf4, 0xe7, 0xc4, 0xc3, 0x25, 0xa2, 0xf8, 0x24, - 0x24, 0x87, 0x74, 0xf8, 0x6f, 0x08, 0x28, 0xd7, 0x2f, 0x2e, 0x43, 0x26, 0x54, 0xb0, 0xa3, 0xe1, - 0xbf, 0x29, 0xe0, 0x61, 0x14, 0x35, 0x5d, 0x14, 0xec, 0x68, 0x82, 0xdf, 0x92, 0xa6, 0x0b, 0x04, - 0x75, 0x9b, 0xac, 0xd5, 0xd1, 0xe8, 0xdf, 0x96, 0x5e, 0x97, 0x90, 0xe2, 0x33, 0x90, 0x0e, 0xf2, - 0x6f, 0x34, 0xfe, 0x77, 0x04, 0xbe, 0x83, 0xa1, 0x1e, 0x08, 0xe5, 0xff, 0x68, 0x8a, 0xdf, 0x95, - 0x1e, 0x08, 0xa1, 0xe8, 0x31, 0xea, 0xad, 0xe9, 0xd1, 0x4c, 0xbf, 0x27, 0x8f, 0x51, 0x4f, 0x49, - 0xa7, 0xbb, 0xc9, 0xd2, 0x60, 0x34, 0xc5, 0xef, 0xcb, 0xdd, 0x64, 0xfa, 0xd4, 0x8c, 0xde, 0x22, - 0x19, 0xcd, 0xf1, 0x07, 0xd2, 0x8c, 0x9e, 0x1a, 0x59, 0xdc, 0x02, 0xd4, 0x5f, 0x20, 0xa3, 0xf9, - 0xbe, 0x20, 0xf8, 0x26, 0xfb, 0xea, 0x63, 0xf1, 0x59, 0x38, 0x31, 0xb8, 0x38, 0x46, 0xb3, 0x7e, - 0xf1, 0xbd, 0x9e, 0xd7, 0x99, 0x70, 0x6d, 0x2c, 0xee, 0x74, 0xb2, 0x6c, 0xb8, 0x30, 0x46, 0xd3, - 0xbe, 0xf2, 0x5e, 0x77, 0xa2, 0x0d, 0xd7, 0xc5, 0x62, 0x09, 0xa0, 0x53, 0x93, 0xa2, 0xb9, 0x5e, - 0x15, 0x5c, 0x21, 0x10, 0x3d, 0x1a, 0xa2, 0x24, 0x45, 0xe3, 0xbf, 0x2c, 0x8f, 0x86, 0x40, 0xd0, - 0xa3, 0x21, 0xab, 0x51, 0x34, 0xfa, 0x35, 0x79, 0x34, 0x24, 0xa4, 0x78, 0x11, 0x52, 0x76, 0xcb, - 0xb2, 0x68, 0x6c, 0xa1, 0x3b, 0x7f, 0x64, 0x93, 0xff, 0xf1, 0xfb, 0x02, 0x2c, 0x01, 0xc5, 0x73, - 0x90, 0x24, 0x8d, 0x3d, 0x52, 0x8b, 0x42, 0xfe, 0xdb, 0xfb, 0x32, 0x9f, 0x50, 0xed, 0xe2, 0x33, - 0x00, 0xfc, 0x65, 0x9a, 0xfd, 0xc6, 0x12, 0x81, 0xfd, 0xf7, 0xf7, 0xc5, 0xef, 0xf7, 0x1d, 0x48, - 0x87, 0x80, 0x7f, 0x0d, 0x70, 0x67, 0x82, 0x77, 0xba, 0x09, 0xd8, 0x0b, 0xf8, 0x53, 0x30, 0x76, - 0xc5, 0x73, 0x6c, 0x1f, 0xd7, 0xa3, 0xd0, 0xff, 0x21, 0xd0, 0x52, 0x9f, 0x3a, 0xac, 0xe1, 0xb8, - 0xc4, 0xc7, 0x75, 0x2f, 0x0a, 0xfb, 0x9f, 0x02, 0x1b, 0x00, 0x28, 0xd8, 0xc0, 0x9e, 0x3f, 0xcc, - 0xba, 0xff, 0x4b, 0x82, 0x25, 0x80, 0x1a, 0x4d, 0xff, 0xbf, 0x4a, 0xda, 0x51, 0xd8, 0x77, 0xa5, - 0xd1, 0x42, 0xbf, 0xf8, 0x31, 0x48, 0xd3, 0x7f, 0xf9, 0x37, 0x2d, 0x11, 0xe0, 0xff, 0x16, 0xe0, - 0x0e, 0x82, 0x3e, 0xd9, 0xf3, 0x6b, 0xbe, 0x19, 0xed, 0xec, 0xff, 0x11, 0x3b, 0x2d, 0xf5, 0x8b, - 0x25, 0xc8, 0x78, 0x7e, 0xad, 0xd6, 0x12, 0x1d, 0x4d, 0x04, 0xfc, 0x27, 0xef, 0x07, 0x2f, 0xb9, - 0x01, 0xa6, 0x7c, 0x6a, 0xf0, 0x7d, 0x1d, 0xac, 0x3a, 0xab, 0x0e, 0xbf, 0xa9, 0x83, 0x6f, 0x4d, - 0xc0, 0xac, 0xe1, 0x34, 0xf6, 0x1c, 0xef, 0x74, 0x90, 0x48, 0x4e, 0x4b, 0xc7, 0x89, 0x7b, 0xb6, - 0xc0, 0x91, 0x33, 0xc7, 0xbb, 0xa0, 0x9b, 0xff, 0xf1, 0x38, 0xa4, 0x96, 0xb1, 0xe7, 0xe3, 0xeb, - 0xb8, 0x8d, 0x1e, 0x82, 0xd4, 0x9a, 0xed, 0x9f, 0x3d, 0xb3, 0xe5, 0xbb, 0xec, 0xe7, 0x99, 0x78, - 0x39, 0x7d, 0xfb, 0xe6, 0x6c, 0xd2, 0xa4, 0x32, 0x2d, 0x98, 0x42, 0x0f, 0x40, 0x92, 0xfd, 0xcf, - 0xae, 0x29, 0xe3, 0xe5, 0xf1, 0x37, 0x6e, 0xce, 0x8e, 0x74, 0xf4, 0xf8, 0x1c, 0x7a, 0x1e, 0x32, - 0xd5, 0xf6, 0xae, 0x69, 0xfb, 0xe7, 0x97, 0x28, 0x1d, 0x5d, 0x7a, 0xa2, 0xfc, 0xe4, 0xed, 0x9b, - 0xb3, 0x67, 0x8f, 0x34, 0x90, 0x16, 0xc4, 0xce, 0xc2, 0x24, 0x9a, 0x7d, 0xd5, 0x17, 0xe6, 0x42, - 0xcf, 0x42, 0x4a, 0x0e, 0xf9, 0x75, 0x7f, 0xf9, 0xa2, 0x30, 0xe1, 0xae, 0xb8, 0x03, 0x32, 0xf4, - 0x4b, 0x90, 0xad, 0xb6, 0x2f, 0x59, 0x0e, 0x16, 0x3e, 0x48, 0xce, 0x29, 0x0b, 0xb1, 0xf2, 0x85, - 0xdb, 0x37, 0x67, 0x97, 0x86, 0x26, 0x16, 0x70, 0xc6, 0xdc, 0xc5, 0x86, 0x5e, 0x80, 0x74, 0x30, - 0x66, 0x3f, 0x28, 0xc4, 0xca, 0x1f, 0x15, 0x76, 0xdf, 0x1d, 0x7d, 0x87, 0x2e, 0x64, 0x39, 0x77, - 0xf7, 0xd8, 0x9c, 0xb2, 0xa0, 0xdc, 0x8d, 0xe5, 0xc2, 0x27, 0x5d, 0x6c, 0x21, 0xcb, 0xcf, 0x2f, - 0xb1, 0x5f, 0x30, 0x94, 0xbb, 0xb5, 0x5c, 0xd0, 0x77, 0xe8, 0xd0, 0x65, 0x18, 0xab, 0xb6, 0xcb, - 0x6d, 0x9f, 0x78, 0xec, 0x53, 0x97, 0x6c, 0xf9, 0x89, 0xdb, 0x37, 0x67, 0x3f, 0x3c, 0x24, 0x2b, - 0xc3, 0x69, 0x92, 0x00, 0xcd, 0x41, 0x66, 0xc3, 0x71, 0x1b, 0xd8, 0xe2, 0x7c, 0xc0, 0x7f, 0x91, - 0x09, 0x89, 0xd0, 0x2e, 0x5d, 0x09, 0xdf, 0x6d, 0x8f, 0x7d, 0xa7, 0xff, 0x33, 0xc4, 0x64, 0x87, - 0x09, 0x99, 0x90, 0xac, 0xb6, 0xab, 0xb8, 0x99, 0xcf, 0xb2, 0x9f, 0x0b, 0xee, 0x5f, 0x0c, 0x10, - 0xf2, 0x6c, 0x2d, 0xb2, 0x79, 0xf6, 0x49, 0x42, 0x79, 0xe9, 0xf6, 0xcd, 0xd9, 0x27, 0x86, 0x7e, - 0x62, 0x15, 0x37, 0xd9, 0xe3, 0xf8, 0x13, 0xd0, 0xb7, 0x15, 0x7a, 0xb0, 0xf8, 0x7d, 0x2b, 0x7d, - 0xe2, 0x38, 0x7b, 0xe2, 0x03, 0x03, 0x9f, 0x18, 0x68, 0xf1, 0xe7, 0xda, 0x9f, 0x79, 0xf3, 0x18, - 0x2b, 0xe5, 0xef, 0x34, 0xf4, 0xd1, 0xbf, 0xfe, 0xe6, 0x5d, 0x1f, 0xda, 0xc0, 0x02, 0xf4, 0xb2, - 0x02, 0xe3, 0xd5, 0xf6, 0x86, 0xa8, 0xae, 0xd4, 0xf2, 0x9c, 0xf8, 0x9a, 0x7b, 0x90, 0xe5, 0x21, - 0x3d, 0x6e, 0xfb, 0xf9, 0xcf, 0xbc, 0x39, 0x7b, 0x66, 0x68, 0x23, 0x58, 0x0a, 0x62, 0x36, 0x74, - 0x3f, 0x13, 0x7d, 0x96, 0x59, 0x51, 0xa1, 0x95, 0xba, 0x46, 0x6a, 0xd4, 0x8a, 0x89, 0x3b, 0x58, - 0x11, 0xd2, 0xe3, 0x56, 0x14, 0x69, 0xd4, 0xdf, 0xbd, 0x25, 0x21, 0x3e, 0xb4, 0x09, 0xa3, 0xdc, - 0xc3, 0xec, 0x33, 0xab, 0xf4, 0x31, 0xc3, 0xb0, 0xb3, 0x39, 0x9a, 0xa0, 0x99, 0xb9, 0x00, 0xd0, - 0x89, 0x31, 0xa4, 0x42, 0xfc, 0x2a, 0x69, 0x8b, 0xcf, 0xe9, 0xe8, 0xbf, 0x68, 0xba, 0xf3, 0xb9, - 0xa8, 0xb2, 0x90, 0x10, 0xdf, 0x80, 0x16, 0x63, 0x17, 0x94, 0x99, 0xa7, 0x41, 0xed, 0x8d, 0x95, - 0x63, 0xe1, 0x35, 0x40, 0xfd, 0x3b, 0x16, 0x66, 0x48, 0x72, 0x86, 0x87, 0xc3, 0x0c, 0x99, 0x33, - 0x6a, 0xc7, 0xe7, 0xcf, 0x9a, 0x96, 0xe7, 0xd8, 0x7d, 0x9c, 0xbd, 0xfe, 0xff, 0xd9, 0x38, 0xe7, - 0x0b, 0x30, 0xca, 0x85, 0x74, 0x2d, 0x6b, 0xac, 0x7c, 0xb0, 0x2a, 0xa7, 0xf1, 0x41, 0x79, 0xfd, - 0x8d, 0x5b, 0x85, 0x91, 0x1f, 0xdc, 0x2a, 0x8c, 0xfc, 0xd3, 0xad, 0xc2, 0xc8, 0x8f, 0x6e, 0x15, - 0x94, 0xb7, 0x6f, 0x15, 0x94, 0x77, 0x6f, 0x15, 0x94, 0x9f, 0xde, 0x2a, 0x28, 0x37, 0x0e, 0x0b, - 0xca, 0xd7, 0x0e, 0x0b, 0xca, 0x37, 0x0e, 0x0b, 0xca, 0x77, 0x0f, 0x0b, 0xca, 0xf7, 0x0e, 0x0b, - 0xca, 0x1b, 0x87, 0x05, 0xe5, 0x07, 0x87, 0x85, 0x91, 0x1f, 0x1d, 0x16, 0x94, 0xb7, 0x0f, 0x0b, - 0x23, 0xef, 0x1e, 0x16, 0x94, 0x9f, 0x1e, 0x16, 0x46, 0x6e, 0xfc, 0x4b, 0x61, 0xe4, 0xff, 0x02, - 0x00, 0x00, 0xff, 0xff, 0xdd, 0x3e, 0x1f, 0x0a, 0x31, 0x35, 0x00, 0x00, + // 4123 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0x4b, 0x10, 0x1d, 0x83, 0x14, 0xfd, + 0x47, 0xdb, 0x09, 0xe5, 0xd1, 0x9f, 0x65, 0x28, 0xb1, 0x07, 0x20, 0x21, 0x06, 0x2a, 0x41, 0x20, + 0x4b, 0x32, 0x92, 0xdc, 0xce, 0xec, 0x2c, 0x17, 0x97, 0xe0, 0x4a, 0x8b, 0x5d, 0x64, 0x77, 0x21, + 0x19, 0x7e, 0x52, 0xe3, 0xb6, 0x99, 0xb4, 0xd3, 0xff, 0xce, 0x34, 0x71, 0x1d, 0xb7, 0xcd, 0x4c, + 0xeb, 0x34, 0xe9, 0x4f, 0xd2, 0x26, 0x69, 0xa6, 0x4f, 0x79, 0x49, 0xeb, 0xa7, 0x4e, 0xf2, 0xd6, + 0x87, 0x8e, 0x6c, 0x31, 0x9e, 0xa9, 0xd3, 0xba, 0xad, 0xdb, 0x78, 0xa6, 0x19, 0xf9, 0xa5, 0x73, + 0xff, 0x16, 0x8b, 0x1f, 0x72, 0x41, 0x65, 0x9c, 0x3c, 0x11, 0x7b, 0xee, 0xf9, 0xbe, 0x3d, 0xf7, + 0xdc, 0x73, 0xcf, 0x39, 0x7b, 0x77, 0x09, 0x3f, 0x3c, 0x07, 0x0b, 0x0d, 0xdb, 0x6e, 0x98, 0xf8, + 0x54, 0xcb, 0xb1, 0x3d, 0x7b, 0xa7, 0xbd, 0x7b, 0xaa, 0x8e, 0x5d, 0xdd, 0x31, 0x5a, 0x9e, 0xed, + 0x2c, 0x53, 0x19, 0x9a, 0x62, 0x1a, 0xcb, 0x42, 0x63, 0xb1, 0x02, 0xd3, 0x97, 0x0c, 0x13, 0xaf, + 0xfa, 0x8a, 0x9b, 0xd8, 0x43, 0x17, 0x20, 0xb6, 0x6b, 0x98, 0x38, 0x2b, 0x2d, 0x44, 0x97, 0x52, + 0xa7, 0x1f, 0x59, 0xee, 0x03, 0x2d, 0xf7, 0x22, 0x6a, 0x44, 0xac, 0x50, 0xc4, 0xe2, 0xdb, 0x31, + 0x98, 0x19, 0x32, 0x8a, 0x10, 0xc4, 0x2c, 0xad, 0x49, 0x18, 0xa5, 0xa5, 0xa4, 0x42, 0x7f, 0xa3, + 0x2c, 0x4c, 0xb4, 0x34, 0xfd, 0x86, 0xd6, 0xc0, 0xd9, 0x08, 0x15, 0x8b, 0x4b, 0x94, 0x03, 0xa8, + 0xe3, 0x16, 0xb6, 0xea, 0xd8, 0xd2, 0x3b, 0xd9, 0xe8, 0x42, 0x74, 0x29, 0xa9, 0x04, 0x24, 0xe8, + 0x29, 0x98, 0x6e, 0xb5, 0x77, 0x4c, 0x43, 0x57, 0x03, 0x6a, 0xb0, 0x10, 0x5d, 0x8a, 0x2b, 0x32, + 0x1b, 0x58, 0xed, 0x2a, 0x3f, 0x0e, 0x53, 0xb7, 0xb0, 0x76, 0x23, 0xa8, 0x9a, 0xa2, 0xaa, 0x19, + 0x22, 0x0e, 0x28, 0xae, 0x40, 0xba, 0x89, 0x5d, 0x57, 0x6b, 0x60, 0xd5, 0xeb, 0xb4, 0x70, 0x36, + 0x46, 0x67, 0xbf, 0x30, 0x30, 0xfb, 0xfe, 0x99, 0xa7, 0x38, 0x6a, 0xab, 0xd3, 0xc2, 0xa8, 0x00, + 0x49, 0x6c, 0xb5, 0x9b, 0x8c, 0x21, 0x7e, 0x80, 0xff, 0x4a, 0x56, 0xbb, 0xd9, 0xcf, 0x92, 0x20, + 0x30, 0x4e, 0x31, 0xe1, 0x62, 0xe7, 0xa6, 0xa1, 0xe3, 0xec, 0x38, 0x25, 0x78, 0x7c, 0x80, 0x60, + 0x93, 0x8d, 0xf7, 0x73, 0x08, 0x1c, 0x5a, 0x81, 0x24, 0x7e, 0xd1, 0xc3, 0x96, 0x6b, 0xd8, 0x56, + 0x76, 0x82, 0x92, 0x3c, 0x3a, 0x64, 0x15, 0xb1, 0x59, 0xef, 0xa7, 0xe8, 0xe2, 0xd0, 0x79, 0x98, + 0xb0, 0x5b, 0x9e, 0x61, 0x5b, 0x6e, 0x36, 0xb1, 0x20, 0x2d, 0xa5, 0x4e, 0x7f, 0x64, 0x68, 0x20, + 0x54, 0x99, 0x8e, 0x22, 0x94, 0x51, 0x19, 0x64, 0xd7, 0x6e, 0x3b, 0x3a, 0x56, 0x75, 0xbb, 0x8e, + 0x55, 0xc3, 0xda, 0xb5, 0xb3, 0x49, 0x4a, 0x30, 0x3f, 0x38, 0x11, 0xaa, 0xb8, 0x62, 0xd7, 0x71, + 0xd9, 0xda, 0xb5, 0x95, 0x8c, 0xdb, 0x73, 0x8d, 0x8e, 0xc1, 0xb8, 0xdb, 0xb1, 0x3c, 0xed, 0xc5, + 0x6c, 0x9a, 0x46, 0x08, 0xbf, 0x5a, 0xfc, 0xbf, 0x38, 0x4c, 0x8d, 0x12, 0x62, 0x17, 0x21, 0xbe, + 0x4b, 0x66, 0x99, 0x8d, 0x1c, 0xc5, 0x07, 0x0c, 0xd3, 0xeb, 0xc4, 0xf1, 0xfb, 0x74, 0x62, 0x01, + 0x52, 0x16, 0x76, 0x3d, 0x5c, 0x67, 0x11, 0x11, 0x1d, 0x31, 0xa6, 0x80, 0x81, 0x06, 0x43, 0x2a, + 0x76, 0x5f, 0x21, 0x75, 0x15, 0xa6, 0x7c, 0x93, 0x54, 0x47, 0xb3, 0x1a, 0x22, 0x36, 0x4f, 0x85, + 0x59, 0xb2, 0x5c, 0x12, 0x38, 0x85, 0xc0, 0x94, 0x0c, 0xee, 0xb9, 0x46, 0xab, 0x00, 0xb6, 0x85, + 0xed, 0x5d, 0xb5, 0x8e, 0x75, 0x33, 0x9b, 0x38, 0xc0, 0x4b, 0x55, 0xa2, 0x32, 0xe0, 0x25, 0x9b, + 0x49, 0x75, 0x13, 0x3d, 0xdb, 0x0d, 0xb5, 0x89, 0x03, 0x22, 0xa5, 0xc2, 0x36, 0xd9, 0x40, 0xb4, + 0x6d, 0x43, 0xc6, 0xc1, 0x24, 0xee, 0x71, 0x9d, 0xcf, 0x2c, 0x49, 0x8d, 0x58, 0x0e, 0x9d, 0x99, + 0xc2, 0x61, 0x6c, 0x62, 0x93, 0x4e, 0xf0, 0x12, 0x3d, 0x0c, 0xbe, 0x40, 0xa5, 0x61, 0x05, 0x34, + 0x0b, 0xa5, 0x85, 0x70, 0x43, 0x6b, 0xe2, 0xb9, 0x0b, 0x90, 0xe9, 0x75, 0x0f, 0x9a, 0x85, 0xb8, + 0xeb, 0x69, 0x8e, 0x47, 0xa3, 0x30, 0xae, 0xb0, 0x0b, 0x24, 0x43, 0x14, 0x5b, 0x75, 0x9a, 0xe5, + 0xe2, 0x0a, 0xf9, 0x39, 0xf7, 0x0c, 0x4c, 0xf6, 0xdc, 0x7e, 0x54, 0xe0, 0xe2, 0x17, 0xc6, 0x61, + 0x76, 0x58, 0xcc, 0x0d, 0x0d, 0xff, 0x63, 0x30, 0x6e, 0xb5, 0x9b, 0x3b, 0xd8, 0xc9, 0x46, 0x29, + 0x03, 0xbf, 0x42, 0x05, 0x88, 0x9b, 0xda, 0x0e, 0x36, 0xb3, 0xb1, 0x05, 0x69, 0x29, 0x73, 0xfa, + 0xa9, 0x91, 0xa2, 0x7a, 0x79, 0x9d, 0x40, 0x14, 0x86, 0x44, 0xcf, 0x41, 0x8c, 0xa7, 0x38, 0xc2, + 0xf0, 0xe4, 0x68, 0x0c, 0x24, 0x16, 0x15, 0x8a, 0x43, 0x0f, 0x42, 0x92, 0xfc, 0x65, 0xbe, 0x1d, + 0xa7, 0x36, 0x27, 0x88, 0x80, 0xf8, 0x15, 0xcd, 0x41, 0x82, 0x86, 0x59, 0x1d, 0x8b, 0xd2, 0xe0, + 0x5f, 0x93, 0x85, 0xa9, 0xe3, 0x5d, 0xad, 0x6d, 0x7a, 0xea, 0x4d, 0xcd, 0x6c, 0x63, 0x1a, 0x30, + 0x49, 0x25, 0xcd, 0x85, 0x9f, 0x26, 0x32, 0x34, 0x0f, 0x29, 0x16, 0x95, 0x86, 0x55, 0xc7, 0x2f, + 0xd2, 0xec, 0x13, 0x57, 0x58, 0xa0, 0x96, 0x89, 0x84, 0xdc, 0xfe, 0xba, 0x6b, 0x5b, 0x62, 0x69, + 0xe9, 0x2d, 0x88, 0x80, 0xde, 0xfe, 0x99, 0xfe, 0xc4, 0xf7, 0xd0, 0xf0, 0xe9, 0xf5, 0xc7, 0xe2, + 0xe2, 0xb7, 0x23, 0x10, 0xa3, 0xfb, 0x6d, 0x0a, 0x52, 0x5b, 0xd7, 0x6a, 0x25, 0x75, 0xb5, 0xba, + 0x5d, 0x5c, 0x2f, 0xc9, 0x12, 0xca, 0x00, 0x50, 0xc1, 0xa5, 0xf5, 0x6a, 0x61, 0x4b, 0x8e, 0xf8, + 0xd7, 0xe5, 0x8d, 0xad, 0xf3, 0x67, 0xe5, 0xa8, 0x0f, 0xd8, 0x66, 0x82, 0x58, 0x50, 0xe1, 0xcc, + 0x69, 0x39, 0x8e, 0x64, 0x48, 0x33, 0x82, 0xf2, 0xd5, 0xd2, 0xea, 0xf9, 0xb3, 0xf2, 0x78, 0xaf, + 0xe4, 0xcc, 0x69, 0x79, 0x02, 0x4d, 0x42, 0x92, 0x4a, 0x8a, 0xd5, 0xea, 0xba, 0x9c, 0xf0, 0x39, + 0x37, 0xb7, 0x94, 0xf2, 0xc6, 0x9a, 0x9c, 0xf4, 0x39, 0xd7, 0x94, 0xea, 0x76, 0x4d, 0x06, 0x9f, + 0xa1, 0x52, 0xda, 0xdc, 0x2c, 0xac, 0x95, 0xe4, 0x94, 0xaf, 0x51, 0xbc, 0xb6, 0x55, 0xda, 0x94, + 0xd3, 0x3d, 0x66, 0x9d, 0x39, 0x2d, 0x4f, 0xfa, 0xb7, 0x28, 0x6d, 0x6c, 0x57, 0xe4, 0x0c, 0x9a, + 0x86, 0x49, 0x76, 0x0b, 0x61, 0xc4, 0x54, 0x9f, 0xe8, 0xfc, 0x59, 0x59, 0xee, 0x1a, 0xc2, 0x58, + 0xa6, 0x7b, 0x04, 0xe7, 0xcf, 0xca, 0x68, 0x71, 0x05, 0xe2, 0x34, 0xba, 0x10, 0x82, 0xcc, 0x7a, + 0xa1, 0x58, 0x5a, 0x57, 0xab, 0xb5, 0xad, 0x72, 0x75, 0xa3, 0xb0, 0x2e, 0x4b, 0x5d, 0x99, 0x52, + 0xfa, 0xd4, 0x76, 0x59, 0x29, 0xad, 0xca, 0x91, 0xa0, 0xac, 0x56, 0x2a, 0x6c, 0x95, 0x56, 0xe5, + 0xe8, 0xa2, 0x0e, 0xb3, 0xc3, 0xf2, 0xcc, 0xd0, 0x9d, 0x11, 0x58, 0xe2, 0xc8, 0x01, 0x4b, 0x4c, + 0xb9, 0x06, 0x96, 0xf8, 0xcb, 0x12, 0xcc, 0x0c, 0xc9, 0xb5, 0x43, 0x6f, 0xf2, 0x3c, 0xc4, 0x59, + 0x88, 0xb2, 0xea, 0xf3, 0xc4, 0xd0, 0xa4, 0x4d, 0x03, 0x76, 0xa0, 0x02, 0x51, 0x5c, 0xb0, 0x02, + 0x47, 0x0f, 0xa8, 0xc0, 0x84, 0x62, 0xc0, 0xc8, 0x97, 0x25, 0xc8, 0x1e, 0xc4, 0x1d, 0x92, 0x28, + 0x22, 0x3d, 0x89, 0xe2, 0x62, 0xbf, 0x01, 0x27, 0x0f, 0x9e, 0xc3, 0x80, 0x15, 0xaf, 0x4b, 0x70, + 0x6c, 0x78, 0xa3, 0x32, 0xd4, 0x86, 0xe7, 0x60, 0xbc, 0x89, 0xbd, 0x3d, 0x5b, 0x14, 0xeb, 0xc7, + 0x86, 0x94, 0x00, 0x32, 0xdc, 0xef, 0x2b, 0x8e, 0x0a, 0xd6, 0x90, 0xe8, 0x41, 0xdd, 0x06, 0xb3, + 0x66, 0xc0, 0xd2, 0xcf, 0x47, 0xe0, 0x81, 0xa1, 0xe4, 0x43, 0x0d, 0x7d, 0x08, 0xc0, 0xb0, 0x5a, + 0x6d, 0x8f, 0x15, 0x64, 0x96, 0x9f, 0x92, 0x54, 0x42, 0xf7, 0x3e, 0xc9, 0x3d, 0x6d, 0xcf, 0x1f, + 0x8f, 0xd2, 0x71, 0x60, 0x22, 0xaa, 0x70, 0xa1, 0x6b, 0x68, 0x8c, 0x1a, 0x9a, 0x3b, 0x60, 0xa6, + 0x03, 0xb5, 0xee, 0x69, 0x90, 0x75, 0xd3, 0xc0, 0x96, 0xa7, 0xba, 0x9e, 0x83, 0xb5, 0xa6, 0x61, + 0x35, 0x68, 0x02, 0x4e, 0xe4, 0xe3, 0xbb, 0x9a, 0xe9, 0x62, 0x65, 0x8a, 0x0d, 0x6f, 0x8a, 0x51, + 0x82, 0xa0, 0x55, 0xc6, 0x09, 0x20, 0xc6, 0x7b, 0x10, 0x6c, 0xd8, 0x47, 0x2c, 0x7e, 0x6d, 0x02, + 0x52, 0x81, 0xb6, 0x0e, 0x9d, 0x84, 0xf4, 0x75, 0xed, 0xa6, 0xa6, 0x8a, 0x56, 0x9d, 0x79, 0x22, + 0x45, 0x64, 0x35, 0xde, 0xae, 0x3f, 0x0d, 0xb3, 0x54, 0xc5, 0x6e, 0x7b, 0xd8, 0x51, 0x75, 0x53, + 0x73, 0x5d, 0xea, 0xb4, 0x04, 0x55, 0x45, 0x64, 0xac, 0x4a, 0x86, 0x56, 0xc4, 0x08, 0x3a, 0x07, + 0x33, 0x14, 0xd1, 0x6c, 0x9b, 0x9e, 0xd1, 0x32, 0xb1, 0x4a, 0x1e, 0x1e, 0x5c, 0x9a, 0x88, 0x7d, + 0xcb, 0xa6, 0x89, 0x46, 0x85, 0x2b, 0x10, 0x8b, 0x5c, 0xb4, 0x0a, 0x0f, 0x51, 0x58, 0x03, 0x5b, + 0xd8, 0xd1, 0x3c, 0xac, 0xe2, 0xcf, 0xb4, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xae, 0xee, 0x69, 0xee, + 0x5e, 0x76, 0x96, 0x10, 0x14, 0x23, 0x59, 0x49, 0x39, 0x41, 0x14, 0xd7, 0xb8, 0x5e, 0x89, 0xaa, + 0x15, 0xac, 0xfa, 0x27, 0x35, 0x77, 0x0f, 0xe5, 0xe1, 0x18, 0x65, 0x71, 0x3d, 0xc7, 0xb0, 0x1a, + 0xaa, 0xbe, 0x87, 0xf5, 0x1b, 0x6a, 0xdb, 0xdb, 0xbd, 0x90, 0x7d, 0x30, 0x78, 0x7f, 0x6a, 0xe1, + 0x26, 0xd5, 0x59, 0x21, 0x2a, 0xdb, 0xde, 0xee, 0x05, 0xb4, 0x09, 0x69, 0xb2, 0x18, 0x4d, 0xe3, + 0x25, 0xac, 0xee, 0xda, 0x0e, 0xad, 0x2c, 0x99, 0x21, 0x3b, 0x3b, 0xe0, 0xc1, 0xe5, 0x2a, 0x07, + 0x54, 0xec, 0x3a, 0xce, 0xc7, 0x37, 0x6b, 0xa5, 0xd2, 0xaa, 0x92, 0x12, 0x2c, 0x97, 0x6c, 0x87, + 0x04, 0x54, 0xc3, 0xf6, 0x1d, 0x9c, 0x62, 0x01, 0xd5, 0xb0, 0x85, 0x7b, 0xcf, 0xc1, 0x8c, 0xae, + 0xb3, 0x39, 0x1b, 0xba, 0xca, 0x5b, 0x7c, 0x37, 0x2b, 0xf7, 0x38, 0x4b, 0xd7, 0xd7, 0x98, 0x02, + 0x8f, 0x71, 0x17, 0x3d, 0x0b, 0x0f, 0x74, 0x9d, 0x15, 0x04, 0x4e, 0x0f, 0xcc, 0xb2, 0x1f, 0x7a, + 0x0e, 0x66, 0x5a, 0x9d, 0x41, 0x20, 0xea, 0xb9, 0x63, 0xab, 0xd3, 0x0f, 0x7b, 0x94, 0x3e, 0xb6, + 0x39, 0x58, 0xd7, 0x3c, 0x5c, 0xcf, 0x1e, 0x0f, 0x6a, 0x07, 0x06, 0xd0, 0x29, 0x90, 0x75, 0x5d, + 0xc5, 0x96, 0xb6, 0x63, 0x62, 0x55, 0x73, 0xb0, 0xa5, 0xb9, 0xd9, 0xf9, 0xa0, 0x72, 0x46, 0xd7, + 0x4b, 0x74, 0xb4, 0x40, 0x07, 0xd1, 0x93, 0x30, 0x6d, 0xef, 0x5c, 0xd7, 0x59, 0x64, 0xa9, 0x2d, + 0x07, 0xef, 0x1a, 0x2f, 0x66, 0x1f, 0xa1, 0x6e, 0x9a, 0x22, 0x03, 0x34, 0xae, 0x6a, 0x54, 0x8c, + 0x9e, 0x00, 0x59, 0x77, 0xf7, 0x34, 0xa7, 0x45, 0x4b, 0xbb, 0xdb, 0xd2, 0x74, 0x9c, 0x7d, 0x94, + 0xa9, 0x32, 0xf9, 0x86, 0x10, 0x93, 0xc8, 0x76, 0x6f, 0x19, 0xbb, 0x9e, 0x60, 0x7c, 0x9c, 0x45, + 0x36, 0x95, 0x71, 0xb6, 0xab, 0x30, 0xdb, 0xb6, 0x0c, 0xcb, 0xc3, 0x4e, 0xcb, 0xc1, 0xa4, 0x89, + 0x67, 0x3b, 0x31, 0xfb, 0x6f, 0x13, 0x07, 0xb4, 0xe1, 0xdb, 0x41, 0x6d, 0x16, 0x00, 0xca, 0x4c, + 0x7b, 0x50, 0xb8, 0x98, 0x87, 0x74, 0x30, 0x2e, 0x50, 0x12, 0x58, 0x64, 0xc8, 0x12, 0xa9, 0xb1, + 0x2b, 0xd5, 0x55, 0x52, 0x1d, 0x5f, 0x28, 0xc9, 0x11, 0x52, 0xa5, 0xd7, 0xcb, 0x5b, 0x25, 0x55, + 0xd9, 0xde, 0xd8, 0x2a, 0x57, 0x4a, 0x72, 0xf4, 0xc9, 0x64, 0xe2, 0x9d, 0x09, 0xf9, 0xf6, 0xed, + 0xdb, 0xb7, 0x23, 0x8b, 0xdf, 0x8b, 0x40, 0xa6, 0xb7, 0x33, 0x46, 0x1f, 0x87, 0xe3, 0xe2, 0x31, + 0xd6, 0xc5, 0x9e, 0x7a, 0xcb, 0x70, 0x68, 0xa8, 0x36, 0x35, 0xd6, 0x5b, 0xfa, 0x5e, 0x9e, 0xe5, + 0x5a, 0x9b, 0xd8, 0xbb, 0x62, 0x38, 0x24, 0x10, 0x9b, 0x9a, 0x87, 0xd6, 0x61, 0xde, 0xb2, 0x55, + 0xd7, 0xd3, 0xac, 0xba, 0xe6, 0xd4, 0xd5, 0xee, 0x01, 0x82, 0xaa, 0xe9, 0x3a, 0x76, 0x5d, 0x9b, + 0x95, 0x08, 0x9f, 0xe5, 0x23, 0x96, 0xbd, 0xc9, 0x95, 0xbb, 0xb9, 0xb3, 0xc0, 0x55, 0xfb, 0x22, + 0x22, 0x7a, 0x50, 0x44, 0x3c, 0x08, 0xc9, 0xa6, 0xd6, 0x52, 0xb1, 0xe5, 0x39, 0x1d, 0xda, 0xcf, + 0x25, 0x94, 0x44, 0x53, 0x6b, 0x95, 0xc8, 0xf5, 0x87, 0xb7, 0x06, 0x41, 0x3f, 0xfe, 0x6b, 0x14, + 0xd2, 0xc1, 0x9e, 0x8e, 0xb4, 0xc8, 0x3a, 0xcd, 0xdf, 0x12, 0xdd, 0xe1, 0x0f, 0x1f, 0xda, 0x01, + 0x2e, 0xaf, 0x90, 0xc4, 0x9e, 0x1f, 0x67, 0x9d, 0x96, 0xc2, 0x90, 0xa4, 0xa8, 0x92, 0x3d, 0x8d, + 0x59, 0xff, 0x9e, 0x50, 0xf8, 0x15, 0x5a, 0x83, 0xf1, 0xeb, 0x2e, 0xe5, 0x1e, 0xa7, 0xdc, 0x8f, + 0x1c, 0xce, 0x7d, 0x79, 0x93, 0x92, 0x27, 0x2f, 0x6f, 0xaa, 0x1b, 0x55, 0xa5, 0x52, 0x58, 0x57, + 0x38, 0x1c, 0x9d, 0x80, 0x98, 0xa9, 0xbd, 0xd4, 0xe9, 0x2d, 0x01, 0x54, 0x34, 0xaa, 0xe3, 0x4f, + 0x40, 0xec, 0x16, 0xd6, 0x6e, 0xf4, 0x26, 0x5e, 0x2a, 0xfa, 0x10, 0x43, 0xff, 0x14, 0xc4, 0xa9, + 0xbf, 0x10, 0x00, 0xf7, 0x98, 0x3c, 0x86, 0x12, 0x10, 0x5b, 0xa9, 0x2a, 0x24, 0xfc, 0x65, 0x48, + 0x33, 0xa9, 0x5a, 0x2b, 0x97, 0x56, 0x4a, 0x72, 0x64, 0xf1, 0x1c, 0x8c, 0x33, 0x27, 0x90, 0xad, + 0xe1, 0xbb, 0x41, 0x1e, 0xe3, 0x97, 0x9c, 0x43, 0x12, 0xa3, 0xdb, 0x95, 0x62, 0x49, 0x91, 0x23, + 0xc1, 0xe5, 0x75, 0x21, 0x1d, 0x6c, 0xe7, 0x7e, 0x36, 0x31, 0xf5, 0x0f, 0x12, 0xa4, 0x02, 0xed, + 0x19, 0x69, 0x0c, 0x34, 0xd3, 0xb4, 0x6f, 0xa9, 0x9a, 0x69, 0x68, 0x2e, 0x0f, 0x0a, 0xa0, 0xa2, + 0x02, 0x91, 0x8c, 0xba, 0x68, 0x3f, 0x13, 0xe3, 0x5f, 0x93, 0x40, 0xee, 0x6f, 0xed, 0xfa, 0x0c, + 0x94, 0x7e, 0xae, 0x06, 0xbe, 0x2a, 0x41, 0xa6, 0xb7, 0x9f, 0xeb, 0x33, 0xef, 0xe4, 0xcf, 0xd5, + 0xbc, 0xb7, 0x22, 0x30, 0xd9, 0xd3, 0xc5, 0x8d, 0x6a, 0xdd, 0x67, 0x60, 0xda, 0xa8, 0xe3, 0x66, + 0xcb, 0xf6, 0xb0, 0xa5, 0x77, 0x54, 0x13, 0xdf, 0xc4, 0x66, 0x76, 0x91, 0x26, 0x8a, 0x53, 0x87, + 0xf7, 0x89, 0xcb, 0xe5, 0x2e, 0x6e, 0x9d, 0xc0, 0xf2, 0x33, 0xe5, 0xd5, 0x52, 0xa5, 0x56, 0xdd, + 0x2a, 0x6d, 0xac, 0x5c, 0x53, 0xb7, 0x37, 0x7e, 0x61, 0xa3, 0x7a, 0x65, 0x43, 0x91, 0x8d, 0x3e, + 0xb5, 0x0f, 0x71, 0xab, 0xd7, 0x40, 0xee, 0x37, 0x0a, 0x1d, 0x87, 0x61, 0x66, 0xc9, 0x63, 0x68, + 0x06, 0xa6, 0x36, 0xaa, 0xea, 0x66, 0x79, 0xb5, 0xa4, 0x96, 0x2e, 0x5d, 0x2a, 0xad, 0x6c, 0x6d, + 0xb2, 0x07, 0x67, 0x5f, 0x7b, 0xab, 0x77, 0x53, 0xbf, 0x12, 0x85, 0x99, 0x21, 0x96, 0xa0, 0x02, + 0xef, 0xd9, 0xd9, 0x63, 0xc4, 0xc7, 0x46, 0xb1, 0x7e, 0x99, 0x74, 0x05, 0x35, 0xcd, 0xf1, 0x78, + 0x8b, 0xff, 0x04, 0x10, 0x2f, 0x59, 0x9e, 0xb1, 0x6b, 0x60, 0x87, 0x9f, 0x33, 0xb0, 0x46, 0x7e, + 0xaa, 0x2b, 0x67, 0x47, 0x0d, 0x1f, 0x05, 0xd4, 0xb2, 0x5d, 0xc3, 0x33, 0x6e, 0x62, 0xd5, 0xb0, + 0xc4, 0xa1, 0x04, 0x69, 0xec, 0x63, 0x8a, 0x2c, 0x46, 0xca, 0x96, 0xe7, 0x6b, 0x5b, 0xb8, 0xa1, + 0xf5, 0x69, 0x93, 0x04, 0x1e, 0x55, 0x64, 0x31, 0xe2, 0x6b, 0x9f, 0x84, 0x74, 0xdd, 0x6e, 0x93, + 0x36, 0x89, 0xe9, 0x91, 0x7a, 0x21, 0x29, 0x29, 0x26, 0xf3, 0x55, 0x78, 0x1f, 0xdb, 0x3d, 0x0d, + 0x49, 0x2b, 0x29, 0x26, 0x63, 0x2a, 0x8f, 0xc3, 0x94, 0xd6, 0x68, 0x38, 0x84, 0x5c, 0x10, 0xb1, + 0xce, 0x3c, 0xe3, 0x8b, 0xa9, 0xe2, 0xdc, 0x65, 0x48, 0x08, 0x3f, 0x90, 0x92, 0x4c, 0x3c, 0xa1, + 0xb6, 0xd8, 0x99, 0x54, 0x64, 0x29, 0xa9, 0x24, 0x2c, 0x31, 0x78, 0x12, 0xd2, 0x86, 0xab, 0x76, + 0x0f, 0x47, 0x23, 0x0b, 0x91, 0xa5, 0x84, 0x92, 0x32, 0x5c, 0xff, 0x34, 0x6c, 0xf1, 0xf5, 0x08, + 0x64, 0x7a, 0x0f, 0x77, 0xd1, 0x2a, 0x24, 0x4c, 0x5b, 0xd7, 0x68, 0x68, 0xb1, 0x37, 0x0b, 0x4b, + 0x21, 0xe7, 0xc1, 0xcb, 0xeb, 0x5c, 0x5f, 0xf1, 0x91, 0x73, 0xff, 0x2c, 0x41, 0x42, 0x88, 0xd1, + 0x31, 0x88, 0xb5, 0x34, 0x6f, 0x8f, 0xd2, 0xc5, 0x8b, 0x11, 0x59, 0x52, 0xe8, 0x35, 0x91, 0xbb, + 0x2d, 0xcd, 0xa2, 0x21, 0xc0, 0xe5, 0xe4, 0x9a, 0xac, 0xab, 0x89, 0xb5, 0x3a, 0x6d, 0xfb, 0xed, + 0x66, 0x13, 0x5b, 0x9e, 0x2b, 0xd6, 0x95, 0xcb, 0x57, 0xb8, 0x18, 0x3d, 0x05, 0xd3, 0x9e, 0xa3, + 0x19, 0x66, 0x8f, 0x6e, 0x8c, 0xea, 0xca, 0x62, 0xc0, 0x57, 0xce, 0xc3, 0x09, 0xc1, 0x5b, 0xc7, + 0x9e, 0xa6, 0xef, 0xe1, 0x7a, 0x17, 0x34, 0x4e, 0x4f, 0x0e, 0x8f, 0x73, 0x85, 0x55, 0x3e, 0x2e, + 0xb0, 0x8b, 0x3f, 0x90, 0x60, 0x5a, 0x3c, 0xa8, 0xd4, 0x7d, 0x67, 0x55, 0x00, 0x34, 0xcb, 0xb2, + 0xbd, 0xa0, 0xbb, 0x06, 0x43, 0x79, 0x00, 0xb7, 0x5c, 0xf0, 0x41, 0x4a, 0x80, 0x60, 0xae, 0x09, + 0xd0, 0x1d, 0x39, 0xd0, 0x6d, 0xf3, 0x90, 0xe2, 0x27, 0xf7, 0xf4, 0xf5, 0x0f, 0x7b, 0xb4, 0x05, + 0x26, 0x22, 0x4f, 0x34, 0x68, 0x16, 0xe2, 0x3b, 0xb8, 0x61, 0x58, 0xfc, 0x3c, 0x91, 0x5d, 0x88, + 0x53, 0xca, 0x98, 0x7f, 0x4a, 0x59, 0xbc, 0x0a, 0x33, 0xba, 0xdd, 0xec, 0x37, 0xb7, 0x28, 0xf7, + 0x3d, 0x5e, 0xbb, 0x9f, 0x94, 0x5e, 0x80, 0x6e, 0x8b, 0xf9, 0xe5, 0x48, 0x74, 0xad, 0x56, 0xfc, + 0x6a, 0x64, 0x6e, 0x8d, 0xe1, 0x6a, 0x62, 0x9a, 0x0a, 0xde, 0x35, 0xb1, 0x4e, 0x4c, 0x87, 0x1f, + 0x3f, 0x06, 0x1f, 0x6b, 0x18, 0xde, 0x5e, 0x7b, 0x67, 0x59, 0xb7, 0x9b, 0xa7, 0x1a, 0x76, 0xc3, + 0xee, 0xbe, 0xee, 0x22, 0x57, 0xf4, 0x82, 0xfe, 0xe2, 0xaf, 0xbc, 0x92, 0xbe, 0x74, 0x2e, 0xf4, + 0xfd, 0x58, 0x7e, 0x03, 0x66, 0xb8, 0xb2, 0x4a, 0xcf, 0xdc, 0xd9, 0xa3, 0x01, 0x3a, 0xf4, 0xdc, + 0x25, 0xfb, 0x8d, 0xb7, 0x69, 0xad, 0x56, 0xa6, 0x39, 0x94, 0x8c, 0xb1, 0x07, 0x88, 0xbc, 0x02, + 0x0f, 0xf4, 0xf0, 0xb1, 0x7d, 0x89, 0x9d, 0x10, 0xc6, 0xef, 0x71, 0xc6, 0x99, 0x00, 0xe3, 0x26, + 0x87, 0xe6, 0x57, 0x60, 0xf2, 0x28, 0x5c, 0xff, 0xc8, 0xb9, 0xd2, 0x38, 0x48, 0xb2, 0x06, 0x53, + 0x94, 0x44, 0x6f, 0xbb, 0x9e, 0xdd, 0xa4, 0x49, 0xef, 0x70, 0x9a, 0x7f, 0x7a, 0x9b, 0x6d, 0x94, + 0x0c, 0x81, 0xad, 0xf8, 0xa8, 0x7c, 0x1e, 0xe8, 0x6b, 0x86, 0x3a, 0xd6, 0xcd, 0x10, 0x86, 0x37, + 0xb8, 0x21, 0xbe, 0x7e, 0xfe, 0xd3, 0x30, 0x4b, 0x7e, 0xd3, 0x9c, 0x14, 0xb4, 0x24, 0xfc, 0x94, + 0x29, 0xfb, 0x83, 0x97, 0xd9, 0x5e, 0x9c, 0xf1, 0x09, 0x02, 0x36, 0x05, 0x56, 0xb1, 0x81, 0x3d, + 0x0f, 0x3b, 0xae, 0xaa, 0x99, 0xc3, 0xcc, 0x0b, 0x3c, 0xa6, 0x67, 0xbf, 0xf8, 0x6e, 0xef, 0x2a, + 0xae, 0x31, 0x64, 0xc1, 0x34, 0xf3, 0xdb, 0x70, 0x7c, 0x48, 0x54, 0x8c, 0xc0, 0xf9, 0x0a, 0xe7, + 0x9c, 0x1d, 0x88, 0x0c, 0x42, 0x5b, 0x03, 0x21, 0xf7, 0xd7, 0x72, 0x04, 0xce, 0x3f, 0xe2, 0x9c, + 0x88, 0x63, 0xc5, 0x92, 0x12, 0xc6, 0xcb, 0x30, 0x7d, 0x13, 0x3b, 0x3b, 0xb6, 0xcb, 0x8f, 0x46, + 0x46, 0xa0, 0x7b, 0x95, 0xd3, 0x4d, 0x71, 0x20, 0x3d, 0x2b, 0x21, 0x5c, 0xcf, 0x42, 0x62, 0x57, + 0xd3, 0xf1, 0x08, 0x14, 0x5f, 0xe2, 0x14, 0x13, 0x44, 0x9f, 0x40, 0x0b, 0x90, 0x6e, 0xd8, 0xbc, + 0x2c, 0x85, 0xc3, 0x5f, 0xe3, 0xf0, 0x94, 0xc0, 0x70, 0x8a, 0x96, 0xdd, 0x6a, 0x9b, 0xa4, 0x66, + 0x85, 0x53, 0xfc, 0xb1, 0xa0, 0x10, 0x18, 0x4e, 0x71, 0x04, 0xb7, 0xfe, 0x89, 0xa0, 0x70, 0x03, + 0xfe, 0x7c, 0x1e, 0x52, 0xb6, 0x65, 0x76, 0x6c, 0x6b, 0x14, 0x23, 0xfe, 0x94, 0x33, 0x00, 0x87, + 0x10, 0x82, 0x8b, 0x90, 0x1c, 0x75, 0x21, 0xfe, 0xec, 0x5d, 0xb1, 0x3d, 0xc4, 0x0a, 0xac, 0xc1, + 0x94, 0x48, 0x50, 0x86, 0x6d, 0x8d, 0x40, 0xf1, 0xe7, 0x9c, 0x22, 0x13, 0x80, 0xf1, 0x69, 0x78, + 0xd8, 0xf5, 0x1a, 0x78, 0x14, 0x92, 0xd7, 0xc5, 0x34, 0x38, 0x84, 0xbb, 0x72, 0x07, 0x5b, 0xfa, + 0xde, 0x68, 0x0c, 0x5f, 0x11, 0xae, 0x14, 0x18, 0x42, 0xb1, 0x02, 0x93, 0x4d, 0xcd, 0x71, 0xf7, + 0x34, 0x73, 0xa4, 0xe5, 0xf8, 0x0b, 0xce, 0x91, 0xf6, 0x41, 0xdc, 0x23, 0x6d, 0xeb, 0x28, 0x34, + 0x5f, 0x15, 0x1e, 0x09, 0xc0, 0xf8, 0xd6, 0x73, 0x3d, 0x7a, 0x00, 0x75, 0x14, 0xb6, 0xaf, 0x89, + 0xad, 0xc7, 0xb0, 0x95, 0x20, 0xe3, 0x45, 0x48, 0xba, 0xc6, 0x4b, 0x23, 0xd1, 0xfc, 0xa5, 0x58, + 0x69, 0x0a, 0x20, 0xe0, 0x6b, 0x70, 0x62, 0x68, 0x99, 0x18, 0x81, 0xec, 0xaf, 0x38, 0xd9, 0xb1, + 0x21, 0xa5, 0x82, 0xa7, 0x84, 0xa3, 0x52, 0xfe, 0xb5, 0x48, 0x09, 0xb8, 0x8f, 0xab, 0x46, 0x1e, + 0x14, 0x5c, 0x6d, 0xf7, 0x68, 0x5e, 0xfb, 0x1b, 0xe1, 0x35, 0x86, 0xed, 0xf1, 0xda, 0x16, 0x1c, + 0xe3, 0x8c, 0x47, 0x5b, 0xd7, 0xaf, 0x8b, 0xc4, 0xca, 0xd0, 0xdb, 0xbd, 0xab, 0xfb, 0x8b, 0x30, + 0xe7, 0xbb, 0x53, 0x74, 0xa4, 0xae, 0xda, 0xd4, 0x5a, 0x23, 0x30, 0x7f, 0x83, 0x33, 0x8b, 0x8c, + 0xef, 0xb7, 0xb4, 0x6e, 0x45, 0x6b, 0x11, 0xf2, 0xab, 0x90, 0x15, 0xe4, 0x6d, 0xcb, 0xc1, 0xba, + 0xdd, 0xb0, 0x8c, 0x97, 0x70, 0x7d, 0x04, 0xea, 0xbf, 0xed, 0x5b, 0xaa, 0xed, 0x00, 0x9c, 0x30, + 0x97, 0x41, 0xf6, 0x7b, 0x15, 0xd5, 0x68, 0xb6, 0x6c, 0xc7, 0x0b, 0x61, 0xfc, 0x3b, 0xb1, 0x52, + 0x3e, 0xae, 0x4c, 0x61, 0xf9, 0x12, 0x64, 0xe8, 0xe5, 0xa8, 0x21, 0xf9, 0x4d, 0x4e, 0x34, 0xd9, + 0x45, 0xf1, 0xc4, 0xa1, 0xdb, 0xcd, 0x96, 0xe6, 0x8c, 0x92, 0xff, 0xbe, 0x25, 0x12, 0x07, 0x87, + 0xf0, 0xc4, 0xe1, 0x75, 0x5a, 0x98, 0x54, 0xfb, 0x11, 0x18, 0xbe, 0x2d, 0x12, 0x87, 0xc0, 0x70, + 0x0a, 0xd1, 0x30, 0x8c, 0x40, 0xf1, 0xf7, 0x82, 0x42, 0x60, 0x08, 0xc5, 0xa7, 0xba, 0x85, 0xd6, + 0xc1, 0x0d, 0xc3, 0xf5, 0x1c, 0xd6, 0x07, 0x1f, 0x4e, 0xf5, 0x9d, 0x77, 0x7b, 0x9b, 0x30, 0x25, + 0x00, 0xcd, 0x5f, 0x86, 0xa9, 0xbe, 0x16, 0x03, 0x85, 0x7d, 0xb3, 0x90, 0xfd, 0xe5, 0xf7, 0x79, + 0x32, 0xea, 0xed, 0x30, 0xf2, 0xeb, 0x64, 0xdd, 0x7b, 0xfb, 0x80, 0x70, 0xb2, 0x97, 0xdf, 0xf7, + 0x97, 0xbe, 0xa7, 0x0d, 0xc8, 0x5f, 0x82, 0xc9, 0x9e, 0x1e, 0x20, 0x9c, 0xea, 0x57, 0x38, 0x55, + 0x3a, 0xd8, 0x02, 0xe4, 0xcf, 0x41, 0x8c, 0xd4, 0xf3, 0x70, 0xf8, 0xaf, 0x72, 0x38, 0x55, 0xcf, + 0x7f, 0x02, 0x12, 0xa2, 0x8e, 0x87, 0x43, 0x7f, 0x8d, 0x43, 0x7d, 0x08, 0x81, 0x8b, 0x1a, 0x1e, + 0x0e, 0xff, 0x9c, 0x80, 0x0b, 0x08, 0x81, 0x8f, 0xee, 0xc2, 0xef, 0xfe, 0x46, 0x8c, 0xe7, 0x61, + 0xe1, 0xbb, 0x8b, 0x30, 0xc1, 0x8b, 0x77, 0x38, 0xfa, 0xf3, 0xfc, 0xe6, 0x02, 0x91, 0x7f, 0x06, + 0xe2, 0x23, 0x3a, 0xfc, 0x37, 0x39, 0x94, 0xe9, 0xe7, 0x57, 0x20, 0x15, 0x28, 0xd8, 0xe1, 0xf0, + 0xdf, 0xe2, 0xf0, 0x20, 0x8a, 0x98, 0xce, 0x0b, 0x76, 0x38, 0xc1, 0x6f, 0x0b, 0xd3, 0x39, 0x82, + 0xb8, 0x4d, 0xd4, 0xea, 0x70, 0xf4, 0xef, 0x08, 0xaf, 0x0b, 0x48, 0xfe, 0x79, 0x48, 0xfa, 0xf9, + 0x37, 0x1c, 0xff, 0xbb, 0x1c, 0xdf, 0xc5, 0x10, 0x0f, 0x04, 0xf2, 0x7f, 0x38, 0xc5, 0xef, 0x09, + 0x0f, 0x04, 0x50, 0x64, 0x1b, 0xf5, 0xd7, 0xf4, 0x70, 0xa6, 0xdf, 0x17, 0xdb, 0xa8, 0xaf, 0xa4, + 0x93, 0xd5, 0xa4, 0x69, 0x30, 0x9c, 0xe2, 0x0f, 0xc4, 0x6a, 0x52, 0x7d, 0x62, 0x46, 0x7f, 0x91, + 0x0c, 0xe7, 0xf8, 0x43, 0x61, 0x46, 0x5f, 0x8d, 0xcc, 0xd7, 0x00, 0x0d, 0x16, 0xc8, 0x70, 0xbe, + 0x2f, 0x70, 0xbe, 0xe9, 0x81, 0xfa, 0x98, 0xbf, 0x02, 0xc7, 0x86, 0x17, 0xc7, 0x70, 0xd6, 0x2f, + 0xbe, 0xdf, 0xf7, 0x38, 0x13, 0xac, 0x8d, 0xf9, 0xad, 0x6e, 0x96, 0x0d, 0x16, 0xc6, 0x70, 0xda, + 0x57, 0xde, 0xef, 0x4d, 0xb4, 0xc1, 0xba, 0x98, 0x2f, 0x00, 0x74, 0x6b, 0x52, 0x38, 0xd7, 0xab, + 0x9c, 0x2b, 0x00, 0x22, 0x5b, 0x83, 0x97, 0xa4, 0x70, 0xfc, 0x97, 0xc4, 0xd6, 0xe0, 0x08, 0xb2, + 0x35, 0x44, 0x35, 0x0a, 0x47, 0xbf, 0x26, 0xb6, 0x86, 0x80, 0xe4, 0x2f, 0x42, 0xc2, 0x6a, 0x9b, + 0x26, 0x89, 0x2d, 0x74, 0xf8, 0x67, 0x44, 0xd9, 0x1f, 0x7d, 0xc0, 0xc1, 0x02, 0x90, 0x3f, 0x07, + 0x71, 0xdc, 0xdc, 0xc1, 0xf5, 0x30, 0xe4, 0xbf, 0x7f, 0x20, 0xf2, 0x09, 0xd1, 0xce, 0x3f, 0x0f, + 0xc0, 0x1e, 0xa6, 0xe9, 0x5b, 0xa2, 0x10, 0xec, 0x7f, 0x7c, 0xc0, 0xbf, 0x50, 0xe8, 0x42, 0xba, + 0x04, 0xec, 0x7b, 0x87, 0xc3, 0x09, 0xde, 0xed, 0x25, 0xa0, 0x0f, 0xe0, 0xcf, 0xc2, 0xc4, 0x75, + 0xd7, 0xb6, 0x3c, 0xad, 0x11, 0x86, 0xfe, 0x4f, 0x8e, 0x16, 0xfa, 0xc4, 0x61, 0x4d, 0xdb, 0xc1, + 0x9e, 0xd6, 0x70, 0xc3, 0xb0, 0xff, 0xc5, 0xb1, 0x3e, 0x80, 0x80, 0x75, 0xcd, 0xf5, 0x46, 0x99, + 0xf7, 0x7f, 0x0b, 0xb0, 0x00, 0x10, 0xa3, 0xc9, 0xef, 0x1b, 0xb8, 0x13, 0x86, 0x7d, 0x4f, 0x18, + 0xcd, 0xf5, 0xf3, 0x9f, 0x80, 0x24, 0xf9, 0xc9, 0xbe, 0xda, 0x09, 0x01, 0xff, 0x0f, 0x07, 0x77, + 0x11, 0xe4, 0xce, 0xae, 0x57, 0xf7, 0x8c, 0x70, 0x67, 0xff, 0x2f, 0x5f, 0x69, 0xa1, 0x9f, 0x2f, + 0x40, 0xca, 0xf5, 0xea, 0xf5, 0x36, 0xef, 0x68, 0x42, 0xe0, 0x3f, 0xfe, 0xc0, 0x7f, 0xc8, 0xf5, + 0x31, 0xc5, 0x93, 0xc3, 0x0f, 0xeb, 0x60, 0xcd, 0x5e, 0xb3, 0xd9, 0x31, 0x1d, 0x7c, 0x73, 0x0a, + 0xe6, 0x75, 0xbb, 0xb9, 0x63, 0xbb, 0xa7, 0xfc, 0x44, 0x72, 0x4a, 0x38, 0x8e, 0x9f, 0xb3, 0xf9, + 0x8e, 0x9c, 0x3b, 0xda, 0x01, 0xdd, 0xe2, 0x8f, 0x26, 0x21, 0xb1, 0xa2, 0xb9, 0x9e, 0x76, 0x4b, + 0xeb, 0xa0, 0x47, 0x21, 0x51, 0xb6, 0xbc, 0x33, 0xa7, 0x6b, 0x9e, 0x43, 0x5f, 0x30, 0x45, 0x8b, + 0xc9, 0x7b, 0x77, 0xe6, 0xe3, 0x06, 0x91, 0x29, 0xfe, 0x10, 0x7a, 0x18, 0xe2, 0xf4, 0x37, 0x3d, + 0xa3, 0x8c, 0x16, 0x27, 0xdf, 0xb8, 0x33, 0x3f, 0xd6, 0xd5, 0x63, 0x63, 0xe8, 0x1a, 0xa4, 0x2a, + 0x9d, 0x6d, 0xc3, 0xf2, 0xce, 0x9f, 0x25, 0x74, 0x64, 0xea, 0xb1, 0xe2, 0x33, 0xf7, 0xee, 0xcc, + 0x9f, 0x39, 0xd0, 0x40, 0x52, 0x10, 0xbb, 0x13, 0x13, 0x68, 0xfa, 0xdd, 0x62, 0x90, 0x0b, 0x5d, + 0x81, 0x84, 0xb8, 0x64, 0x67, 0xfd, 0xc5, 0x8b, 0xdc, 0x84, 0xfb, 0xe2, 0xf6, 0xc9, 0xd0, 0x2f, + 0x41, 0xba, 0xd2, 0xb9, 0x64, 0xda, 0x1a, 0xf7, 0x41, 0x7c, 0x41, 0x5a, 0x8a, 0x14, 0x2f, 0xdc, + 0xbb, 0x33, 0x7f, 0x76, 0x64, 0x62, 0x0e, 0xa7, 0xcc, 0x3d, 0x6c, 0xe8, 0x05, 0x48, 0xfa, 0xd7, + 0xf4, 0x6d, 0x42, 0xa4, 0xf8, 0x71, 0x6e, 0xf7, 0xfd, 0xd1, 0x77, 0xe9, 0x02, 0x96, 0x33, 0x77, + 0x4f, 0x2c, 0x48, 0x4b, 0xd2, 0xfd, 0x58, 0xce, 0x7d, 0xd2, 0xc3, 0x16, 0xb0, 0xfc, 0xfc, 0x59, + 0xfa, 0xfa, 0x42, 0xba, 0x5f, 0xcb, 0x39, 0x7d, 0x97, 0x0e, 0x5d, 0x86, 0x89, 0x4a, 0xa7, 0xd8, + 0xf1, 0xb0, 0x4b, 0xbf, 0xe7, 0x49, 0x17, 0x9f, 0xbe, 0x77, 0x67, 0xfe, 0xa3, 0x23, 0xb2, 0x52, + 0x9c, 0x22, 0x08, 0xd0, 0x02, 0xa4, 0x36, 0x6c, 0xa7, 0xa9, 0x99, 0x8c, 0x0f, 0xd8, 0xeb, 0x98, + 0x80, 0x08, 0x6d, 0x93, 0x99, 0xb0, 0xd5, 0x76, 0xe9, 0x7f, 0x22, 0xfc, 0x14, 0x31, 0xd9, 0x65, + 0x42, 0x06, 0xc4, 0x2b, 0x9d, 0x8a, 0xd6, 0xca, 0xa6, 0xe9, 0xbb, 0x82, 0x87, 0x96, 0x7d, 0x84, + 0xd8, 0x5b, 0xcb, 0x74, 0x9c, 0x7e, 0x54, 0x51, 0x3c, 0x7b, 0xef, 0xce, 0xfc, 0xd3, 0x23, 0xdf, + 0xb1, 0xa2, 0xb5, 0xe8, 0xed, 0xd8, 0x1d, 0xd0, 0xb7, 0x24, 0xb2, 0xb1, 0xd8, 0x79, 0x2b, 0xb9, + 0xe3, 0x24, 0xbd, 0xe3, 0xc3, 0x43, 0xef, 0xe8, 0x6b, 0xb1, 0xfb, 0x5a, 0x9f, 0x7d, 0xf3, 0x08, + 0x33, 0x65, 0xcf, 0x34, 0xe4, 0xd6, 0xbf, 0xfe, 0xe6, 0x7d, 0x6f, 0x5a, 0xdf, 0x02, 0xf4, 0xb2, + 0x04, 0x93, 0x95, 0xce, 0x06, 0xaf, 0xae, 0xc4, 0xf2, 0x0c, 0xff, 0x5e, 0x7d, 0x98, 0xe5, 0x01, + 0x3d, 0x66, 0xfb, 0xf9, 0xcf, 0xbe, 0x39, 0x7f, 0x7a, 0x64, 0x23, 0x68, 0x0a, 0xa2, 0x36, 0xf4, + 0xde, 0x13, 0x7d, 0x8e, 0x5a, 0x51, 0x22, 0x95, 0xba, 0x8e, 0xeb, 0xc4, 0x8a, 0xa9, 0x43, 0xac, + 0x08, 0xe8, 0x31, 0x2b, 0xf2, 0x24, 0xea, 0xef, 0xdf, 0x92, 0x00, 0x1f, 0xaa, 0xc2, 0x38, 0xf3, + 0x30, 0xfd, 0x96, 0x2c, 0x79, 0xc4, 0x30, 0xec, 0x2e, 0x8e, 0xc2, 0x69, 0xe6, 0x2e, 0x00, 0x74, + 0x63, 0x0c, 0xc9, 0x10, 0xbd, 0x81, 0x3b, 0xfc, 0x83, 0x41, 0xf2, 0x13, 0xcd, 0x76, 0x3f, 0x88, + 0x95, 0x96, 0x62, 0xfc, 0x2b, 0xd7, 0x7c, 0xe4, 0x82, 0x34, 0xf7, 0x1c, 0xc8, 0xfd, 0xb1, 0x72, + 0x24, 0xbc, 0x02, 0x68, 0x70, 0xc5, 0x82, 0x0c, 0x71, 0xc6, 0xf0, 0x58, 0x90, 0x21, 0x75, 0x5a, + 0xee, 0xfa, 0xfc, 0x8a, 0x61, 0xba, 0xb6, 0x35, 0xc0, 0xd9, 0xef, 0xff, 0x9f, 0x8e, 0x73, 0x31, + 0x07, 0xe3, 0x4c, 0x48, 0xe6, 0x52, 0xa6, 0xe5, 0x83, 0x56, 0x39, 0x85, 0x5d, 0x14, 0xd7, 0xdf, + 0xb8, 0x9b, 0x1b, 0xfb, 0xfe, 0xdd, 0xdc, 0xd8, 0xbf, 0xdc, 0xcd, 0x8d, 0xbd, 0x75, 0x37, 0x27, + 0xbd, 0x73, 0x37, 0x27, 0xbd, 0x77, 0x37, 0x27, 0xfd, 0xe4, 0x6e, 0x4e, 0xba, 0xbd, 0x9f, 0x93, + 0xbe, 0xb2, 0x9f, 0x93, 0xbe, 0xbe, 0x9f, 0x93, 0xbe, 0xb3, 0x9f, 0x93, 0xbe, 0xbb, 0x9f, 0x93, + 0xde, 0xd8, 0xcf, 0x49, 0xdf, 0xdf, 0xcf, 0x8d, 0xbd, 0xb5, 0x9f, 0x93, 0xde, 0xd9, 0xcf, 0x8d, + 0xbd, 0xb7, 0x9f, 0x93, 0x7e, 0xb2, 0x9f, 0x1b, 0xbb, 0xfd, 0xc3, 0xdc, 0xd8, 0xff, 0x07, 0x00, + 0x00, 0xff, 0xff, 0x0f, 0x7e, 0x94, 0x4d, 0x13, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/neither/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/neither/casttype.pb.go index 269af17f1..ac1ac3e7f 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/neither/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/neither/casttype.pb.go @@ -88,258 +88,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4015 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, - 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0xc9, 0xc8, 0x10, 0x1d, 0x81, 0x14, 0xfd, - 0x47, 0xdb, 0x09, 0xe5, 0x91, 0x28, 0x59, 0x86, 0x12, 0x7b, 0x00, 0x12, 0x62, 0xa8, 0x21, 0x48, - 0x66, 0x49, 0xc6, 0x3f, 0xe9, 0xcc, 0xce, 0xe5, 0xe2, 0x12, 0x5c, 0x69, 0xb1, 0x8b, 0xee, 0x2e, - 0x24, 0xc3, 0x4f, 0x4a, 0xdc, 0x36, 0x93, 0x66, 0xfa, 0xdf, 0x99, 0x26, 0x8e, 0xe3, 0xa6, 0x99, - 0x69, 0x9d, 0xa6, 0x7f, 0x49, 0xda, 0xa4, 0x99, 0x3e, 0xe5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, - 0x1f, 0x3a, 0x72, 0xc4, 0x7a, 0xa6, 0x4e, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xe4, 0x97, 0xce, - 0xfd, 0x5b, 0x2c, 0x7e, 0xa8, 0x05, 0x95, 0x49, 0xd2, 0x27, 0xf2, 0x9e, 0x7b, 0xbe, 0x6f, 0xcf, - 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0x5e, 0x2c, 0x7c, 0x6a, 0x09, 0xe6, 0xea, 0x8e, 0x53, 0xb7, 0xc8, - 0x99, 0xa6, 0xeb, 0xf8, 0xce, 0x5e, 0x6b, 0xff, 0x4c, 0x8d, 0x78, 0x86, 0x6b, 0x36, 0x7d, 0xc7, - 0x5d, 0x64, 0x32, 0x34, 0xc1, 0x35, 0x16, 0xa5, 0xc6, 0x7c, 0x15, 0x26, 0x2f, 0x9b, 0x16, 0x59, - 0x09, 0x14, 0xb7, 0x89, 0x8f, 0x2e, 0x42, 0x62, 0xdf, 0xb4, 0x48, 0x5e, 0x99, 0x8b, 0x2f, 0x64, - 0xce, 0x3e, 0xb8, 0xd8, 0x03, 0x5a, 0xec, 0x46, 0x6c, 0x51, 0xb1, 0xc6, 0x10, 0xf3, 0x6f, 0x25, - 0x60, 0x6a, 0xc0, 0x2c, 0x42, 0x90, 0xb0, 0x71, 0x83, 0x32, 0x2a, 0x0b, 0x69, 0x8d, 0xfd, 0x8f, - 0xf2, 0x30, 0xd6, 0xc4, 0xc6, 0x35, 0x5c, 0x27, 0xf9, 0x18, 0x13, 0xcb, 0x21, 0x2a, 0x00, 0xd4, - 0x48, 0x93, 0xd8, 0x35, 0x62, 0x1b, 0xed, 0x7c, 0x7c, 0x2e, 0xbe, 0x90, 0xd6, 0x42, 0x12, 0xf4, - 0x38, 0x4c, 0x36, 0x5b, 0x7b, 0x96, 0x69, 0xe8, 0x21, 0x35, 0x98, 0x8b, 0x2f, 0x24, 0x35, 0x95, - 0x4f, 0xac, 0x74, 0x94, 0x1f, 0x81, 0x89, 0x1b, 0x04, 0x5f, 0x0b, 0xab, 0x66, 0x98, 0x6a, 0x8e, - 0x8a, 0x43, 0x8a, 0xcb, 0x90, 0x6d, 0x10, 0xcf, 0xc3, 0x75, 0xa2, 0xfb, 0xed, 0x26, 0xc9, 0x27, - 0xd8, 0xea, 0xe7, 0xfa, 0x56, 0xdf, 0xbb, 0xf2, 0x8c, 0x40, 0xed, 0xb4, 0x9b, 0x04, 0x95, 0x20, - 0x4d, 0xec, 0x56, 0x83, 0x33, 0x24, 0x8f, 0xf0, 0x5f, 0xc5, 0x6e, 0x35, 0x7a, 0x59, 0x52, 0x14, - 0x26, 0x28, 0xc6, 0x3c, 0xe2, 0x5e, 0x37, 0x0d, 0x92, 0x1f, 0x65, 0x04, 0x8f, 0xf4, 0x11, 0x6c, - 0xf3, 0xf9, 0x5e, 0x0e, 0x89, 0x43, 0xcb, 0x90, 0x26, 0x2f, 0xfa, 0xc4, 0xf6, 0x4c, 0xc7, 0xce, - 0x8f, 0x31, 0x92, 0x87, 0x06, 0xec, 0x22, 0xb1, 0x6a, 0xbd, 0x14, 0x1d, 0x1c, 0xba, 0x00, 0x63, - 0x4e, 0xd3, 0x37, 0x1d, 0xdb, 0xcb, 0xa7, 0xe6, 0x94, 0x85, 0xcc, 0xd9, 0x0f, 0x0e, 0x0c, 0x84, - 0x4d, 0xae, 0xa3, 0x49, 0x65, 0xb4, 0x06, 0xaa, 0xe7, 0xb4, 0x5c, 0x83, 0xe8, 0x86, 0x53, 0x23, - 0xba, 0x69, 0xef, 0x3b, 0xf9, 0x34, 0x23, 0x98, 0xed, 0x5f, 0x08, 0x53, 0x5c, 0x76, 0x6a, 0x64, - 0xcd, 0xde, 0x77, 0xb4, 0x9c, 0xd7, 0x35, 0x46, 0x27, 0x60, 0xd4, 0x6b, 0xdb, 0x3e, 0x7e, 0x31, - 0x9f, 0x65, 0x11, 0x22, 0x46, 0xf3, 0xff, 0x9b, 0x84, 0x89, 0x61, 0x42, 0xec, 0x12, 0x24, 0xf7, - 0xe9, 0x2a, 0xf3, 0xb1, 0xe3, 0xf8, 0x80, 0x63, 0xba, 0x9d, 0x38, 0x7a, 0x8f, 0x4e, 0x2c, 0x41, - 0xc6, 0x26, 0x9e, 0x4f, 0x6a, 0x3c, 0x22, 0xe2, 0x43, 0xc6, 0x14, 0x70, 0x50, 0x7f, 0x48, 0x25, - 0xee, 0x29, 0xa4, 0x9e, 0x83, 0x89, 0xc0, 0x24, 0xdd, 0xc5, 0x76, 0x5d, 0xc6, 0xe6, 0x99, 0x28, - 0x4b, 0x16, 0x2b, 0x12, 0xa7, 0x51, 0x98, 0x96, 0x23, 0x5d, 0x63, 0xb4, 0x02, 0xe0, 0xd8, 0xc4, - 0xd9, 0xd7, 0x6b, 0xc4, 0xb0, 0xf2, 0xa9, 0x23, 0xbc, 0xb4, 0x49, 0x55, 0xfa, 0xbc, 0xe4, 0x70, - 0xa9, 0x61, 0xa1, 0xa7, 0x3a, 0xa1, 0x36, 0x76, 0x44, 0xa4, 0x54, 0xf9, 0x21, 0xeb, 0x8b, 0xb6, - 0x5d, 0xc8, 0xb9, 0x84, 0xc6, 0x3d, 0xa9, 0x89, 0x95, 0xa5, 0x99, 0x11, 0x8b, 0x91, 0x2b, 0xd3, - 0x04, 0x8c, 0x2f, 0x6c, 0xdc, 0x0d, 0x0f, 0xd1, 0x03, 0x10, 0x08, 0x74, 0x16, 0x56, 0xc0, 0xb2, - 0x50, 0x56, 0x0a, 0x37, 0x70, 0x83, 0xcc, 0x5c, 0x84, 0x5c, 0xb7, 0x7b, 0xd0, 0x34, 0x24, 0x3d, - 0x1f, 0xbb, 0x3e, 0x8b, 0xc2, 0xa4, 0xc6, 0x07, 0x48, 0x85, 0x38, 0xb1, 0x6b, 0x2c, 0xcb, 0x25, - 0x35, 0xfa, 0xef, 0xcc, 0x93, 0x30, 0xde, 0xf5, 0xf8, 0x61, 0x81, 0xf3, 0x9f, 0x1f, 0x85, 0xe9, - 0x41, 0x31, 0x37, 0x30, 0xfc, 0x4f, 0xc0, 0xa8, 0xdd, 0x6a, 0xec, 0x11, 0x37, 0x1f, 0x67, 0x0c, - 0x62, 0x84, 0x4a, 0x90, 0xb4, 0xf0, 0x1e, 0xb1, 0xf2, 0x89, 0x39, 0x65, 0x21, 0x77, 0xf6, 0xf1, - 0xa1, 0xa2, 0x7a, 0x71, 0x9d, 0x42, 0x34, 0x8e, 0x44, 0x4f, 0x43, 0x42, 0xa4, 0x38, 0xca, 0xf0, - 0xd8, 0x70, 0x0c, 0x34, 0x16, 0x35, 0x86, 0x43, 0xf7, 0x43, 0x9a, 0xfe, 0xe5, 0xbe, 0x1d, 0x65, - 0x36, 0xa7, 0xa8, 0x80, 0xfa, 0x15, 0xcd, 0x40, 0x8a, 0x85, 0x59, 0x8d, 0xc8, 0xd2, 0x10, 0x8c, - 0xe9, 0xc6, 0xd4, 0xc8, 0x3e, 0x6e, 0x59, 0xbe, 0x7e, 0x1d, 0x5b, 0x2d, 0xc2, 0x02, 0x26, 0xad, - 0x65, 0x85, 0xf0, 0x13, 0x54, 0x86, 0x66, 0x21, 0xc3, 0xa3, 0xd2, 0xb4, 0x6b, 0xe4, 0x45, 0x96, - 0x7d, 0x92, 0x1a, 0x0f, 0xd4, 0x35, 0x2a, 0xa1, 0x8f, 0xbf, 0xea, 0x39, 0xb6, 0xdc, 0x5a, 0xf6, - 0x08, 0x2a, 0x60, 0x8f, 0x7f, 0xb2, 0x37, 0xf1, 0x9d, 0x1a, 0xbc, 0xbc, 0xde, 0x58, 0x9c, 0xff, - 0x76, 0x0c, 0x12, 0xec, 0xbc, 0x4d, 0x40, 0x66, 0xe7, 0xf9, 0xad, 0x8a, 0xbe, 0xb2, 0xb9, 0x5b, - 0x5e, 0xaf, 0xa8, 0x0a, 0xca, 0x01, 0x30, 0xc1, 0xe5, 0xf5, 0xcd, 0xd2, 0x8e, 0x1a, 0x0b, 0xc6, - 0x6b, 0x1b, 0x3b, 0x17, 0x96, 0xd4, 0x78, 0x00, 0xd8, 0xe5, 0x82, 0x44, 0x58, 0xe1, 0xdc, 0x59, - 0x35, 0x89, 0x54, 0xc8, 0x72, 0x82, 0xb5, 0xe7, 0x2a, 0x2b, 0x17, 0x96, 0xd4, 0xd1, 0x6e, 0xc9, - 0xb9, 0xb3, 0xea, 0x18, 0x1a, 0x87, 0x34, 0x93, 0x94, 0x37, 0x37, 0xd7, 0xd5, 0x54, 0xc0, 0xb9, - 0xbd, 0xa3, 0xad, 0x6d, 0xac, 0xaa, 0xe9, 0x80, 0x73, 0x55, 0xdb, 0xdc, 0xdd, 0x52, 0x21, 0x60, - 0xa8, 0x56, 0xb6, 0xb7, 0x4b, 0xab, 0x15, 0x35, 0x13, 0x68, 0x94, 0x9f, 0xdf, 0xa9, 0x6c, 0xab, - 0xd9, 0x2e, 0xb3, 0xce, 0x9d, 0x55, 0xc7, 0x83, 0x47, 0x54, 0x36, 0x76, 0xab, 0x6a, 0x0e, 0x4d, - 0xc2, 0x38, 0x7f, 0x84, 0x34, 0x62, 0xa2, 0x47, 0x74, 0x61, 0x49, 0x55, 0x3b, 0x86, 0x70, 0x96, - 0xc9, 0x2e, 0xc1, 0x85, 0x25, 0x15, 0xcd, 0x2f, 0x43, 0x92, 0x45, 0x17, 0x42, 0x90, 0x5b, 0x2f, - 0x95, 0x2b, 0xeb, 0xfa, 0xe6, 0xd6, 0xce, 0xda, 0xe6, 0x46, 0x69, 0x5d, 0x55, 0x3a, 0x32, 0xad, - 0xf2, 0xf1, 0xdd, 0x35, 0xad, 0xb2, 0xa2, 0xc6, 0xc2, 0xb2, 0xad, 0x4a, 0x69, 0xa7, 0xb2, 0xa2, - 0xc6, 0xe7, 0x0d, 0x98, 0x1e, 0x94, 0x67, 0x06, 0x9e, 0x8c, 0xd0, 0x16, 0xc7, 0x8e, 0xd8, 0x62, - 0xc6, 0xd5, 0xb7, 0xc5, 0x5f, 0x51, 0x60, 0x6a, 0x40, 0xae, 0x1d, 0xf8, 0x90, 0x67, 0x20, 0xc9, - 0x43, 0x94, 0x57, 0x9f, 0x47, 0x07, 0x26, 0x6d, 0x16, 0xb0, 0x7d, 0x15, 0x88, 0xe1, 0xc2, 0x15, - 0x38, 0x7e, 0x44, 0x05, 0xa6, 0x14, 0x7d, 0x46, 0xbe, 0xac, 0x40, 0xfe, 0x28, 0xee, 0x88, 0x44, - 0x11, 0xeb, 0x4a, 0x14, 0x97, 0x7a, 0x0d, 0x38, 0x7d, 0xf4, 0x1a, 0xfa, 0xac, 0x78, 0x5d, 0x81, - 0x13, 0x83, 0x1b, 0x95, 0x81, 0x36, 0x3c, 0x0d, 0xa3, 0x0d, 0xe2, 0x1f, 0x38, 0xb2, 0x58, 0x3f, - 0x3c, 0xa0, 0x04, 0xd0, 0xe9, 0x5e, 0x5f, 0x09, 0x54, 0xb8, 0x86, 0xc4, 0x8f, 0xea, 0x36, 0xb8, - 0x35, 0x7d, 0x96, 0x7e, 0x36, 0x06, 0x1f, 0x18, 0x48, 0x3e, 0xd0, 0xd0, 0x53, 0x00, 0xa6, 0xdd, - 0x6c, 0xf9, 0xbc, 0x20, 0xf3, 0xfc, 0x94, 0x66, 0x12, 0x76, 0xf6, 0x69, 0xee, 0x69, 0xf9, 0xc1, - 0x7c, 0x9c, 0xcd, 0x03, 0x17, 0x31, 0x85, 0x8b, 0x1d, 0x43, 0x13, 0xcc, 0xd0, 0xc2, 0x11, 0x2b, - 0xed, 0xab, 0x75, 0x4f, 0x80, 0x6a, 0x58, 0x26, 0xb1, 0x7d, 0xdd, 0xf3, 0x5d, 0x82, 0x1b, 0xa6, - 0x5d, 0x67, 0x09, 0x38, 0x55, 0x4c, 0xee, 0x63, 0xcb, 0x23, 0xda, 0x04, 0x9f, 0xde, 0x96, 0xb3, - 0x14, 0xc1, 0xaa, 0x8c, 0x1b, 0x42, 0x8c, 0x76, 0x21, 0xf8, 0x74, 0x80, 0x98, 0xff, 0xdc, 0x18, - 0x64, 0x42, 0x6d, 0x1d, 0x3a, 0x0d, 0xd9, 0xab, 0xf8, 0x3a, 0xd6, 0x65, 0xab, 0xce, 0x3d, 0x91, - 0xa1, 0xb2, 0x2d, 0xd1, 0xae, 0x3f, 0x01, 0xd3, 0x4c, 0xc5, 0x69, 0xf9, 0xc4, 0xd5, 0x0d, 0x0b, - 0x7b, 0x1e, 0x73, 0x5a, 0x8a, 0xa9, 0x22, 0x3a, 0xb7, 0x49, 0xa7, 0x96, 0xe5, 0x0c, 0x3a, 0x0f, - 0x53, 0x0c, 0xd1, 0x68, 0x59, 0xbe, 0xd9, 0xb4, 0x88, 0x4e, 0x5f, 0x1e, 0x3c, 0x96, 0x88, 0x03, - 0xcb, 0x26, 0xa9, 0x46, 0x55, 0x28, 0x50, 0x8b, 0x3c, 0xb4, 0x0a, 0xa7, 0x18, 0xac, 0x4e, 0x6c, - 0xe2, 0x62, 0x9f, 0xe8, 0xe4, 0x97, 0x5b, 0xd8, 0xf2, 0x74, 0x6c, 0xd7, 0xf4, 0x03, 0xec, 0x1d, - 0xe4, 0xa7, 0xc3, 0x04, 0x27, 0xa9, 0xee, 0xaa, 0x50, 0xad, 0x30, 0xcd, 0x92, 0x5d, 0xfb, 0x18, - 0xf6, 0x0e, 0x50, 0x11, 0x4e, 0x30, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xae, 0x1b, 0x07, 0xc4, 0xb8, - 0xa6, 0xb7, 0xfc, 0xfd, 0x8b, 0xf9, 0xfb, 0xc3, 0x0c, 0xcc, 0xc8, 0x6d, 0xa6, 0xb3, 0x4c, 0x55, - 0x76, 0xfd, 0xfd, 0x8b, 0x68, 0x1b, 0xb2, 0x74, 0x3f, 0x1a, 0xe6, 0x4b, 0x44, 0xdf, 0x77, 0x5c, - 0x56, 0x5c, 0x72, 0x03, 0x0e, 0x77, 0xc8, 0x89, 0x8b, 0x9b, 0x02, 0x50, 0x75, 0x6a, 0xa4, 0x98, - 0xdc, 0xde, 0xaa, 0x54, 0x56, 0xb4, 0x8c, 0x64, 0xb9, 0xec, 0xb8, 0x34, 0xa6, 0xea, 0x4e, 0xe0, - 0xe3, 0x0c, 0x8f, 0xa9, 0xba, 0x23, 0x3d, 0x7c, 0x1e, 0xa6, 0x0c, 0x83, 0x2f, 0xdb, 0x34, 0x74, - 0xd1, 0xe5, 0x7b, 0x79, 0xb5, 0xcb, 0x5f, 0x86, 0xb1, 0xca, 0x15, 0x44, 0x98, 0x7b, 0xe8, 0x29, - 0xf8, 0x40, 0xc7, 0x5f, 0x61, 0xe0, 0x64, 0xdf, 0x2a, 0x7b, 0xa1, 0xe7, 0x61, 0xaa, 0xd9, 0xee, - 0x07, 0xa2, 0xae, 0x27, 0x36, 0xdb, 0xbd, 0xb0, 0x87, 0xd8, 0x9b, 0x9b, 0x4b, 0x0c, 0xec, 0x93, - 0x5a, 0xfe, 0xbe, 0xb0, 0x76, 0x68, 0x02, 0x9d, 0x01, 0xd5, 0x30, 0x74, 0x62, 0xe3, 0x3d, 0x8b, - 0xe8, 0xd8, 0x25, 0x36, 0xf6, 0xf2, 0xb3, 0x61, 0xe5, 0x9c, 0x61, 0x54, 0xd8, 0x6c, 0x89, 0x4d, - 0xa2, 0xc7, 0x60, 0xd2, 0xd9, 0xbb, 0x6a, 0xf0, 0xe0, 0xd2, 0x9b, 0x2e, 0xd9, 0x37, 0x5f, 0xcc, - 0x3f, 0xc8, 0xdc, 0x34, 0x41, 0x27, 0x58, 0x68, 0x6d, 0x31, 0x31, 0x7a, 0x14, 0x54, 0xc3, 0x3b, - 0xc0, 0x6e, 0x93, 0x55, 0x77, 0xaf, 0x89, 0x0d, 0x92, 0x7f, 0x88, 0xab, 0x72, 0xf9, 0x86, 0x14, - 0xa3, 0xe7, 0x60, 0xba, 0x65, 0x9b, 0xb6, 0x4f, 0xdc, 0xa6, 0x4b, 0x68, 0x93, 0xce, 0x4f, 0x5a, - 0xfe, 0x5f, 0xc7, 0x8e, 0x68, 0xb3, 0x77, 0xc3, 0xda, 0x7c, 0x77, 0xb5, 0xa9, 0x56, 0xbf, 0x70, - 0xbe, 0x08, 0xd9, 0xf0, 0xa6, 0xa3, 0x34, 0xf0, 0x6d, 0x57, 0x15, 0x5a, 0x43, 0x97, 0x37, 0x57, - 0x68, 0xf5, 0x7b, 0xa1, 0xa2, 0xc6, 0x68, 0x15, 0x5e, 0x5f, 0xdb, 0xa9, 0xe8, 0xda, 0xee, 0xc6, - 0xce, 0x5a, 0xb5, 0xa2, 0xc6, 0x1f, 0x4b, 0xa7, 0xde, 0x1e, 0x53, 0x6f, 0xde, 0xbc, 0x79, 0x33, - 0x36, 0xff, 0xbd, 0x18, 0xe4, 0xba, 0x3b, 0x5f, 0xf4, 0x11, 0xb8, 0x4f, 0xbe, 0xa6, 0x7a, 0xc4, - 0xd7, 0x6f, 0x98, 0x2e, 0x8b, 0xc3, 0x06, 0xe6, 0xbd, 0x63, 0xe0, 0xc2, 0x69, 0xa1, 0xb5, 0x4d, - 0xfc, 0x67, 0x4d, 0x97, 0x46, 0x59, 0x03, 0xfb, 0x68, 0x1d, 0x66, 0x6d, 0x47, 0xf7, 0x7c, 0x6c, - 0xd7, 0xb0, 0x5b, 0xd3, 0x3b, 0x17, 0x04, 0x3a, 0x36, 0x0c, 0xe2, 0x79, 0x0e, 0x2f, 0x01, 0x01, - 0xcb, 0x07, 0x6d, 0x67, 0x5b, 0x28, 0x77, 0x72, 0x63, 0x49, 0xa8, 0xf6, 0x6c, 0x77, 0xfc, 0xa8, - 0xed, 0xbe, 0x1f, 0xd2, 0x0d, 0xdc, 0xd4, 0x89, 0xed, 0xbb, 0x6d, 0xd6, 0xaf, 0xa5, 0xb4, 0x54, - 0x03, 0x37, 0x2b, 0x74, 0xfc, 0xb3, 0xdb, 0x83, 0xb0, 0x1f, 0xff, 0x39, 0x0e, 0xd9, 0x70, 0xcf, - 0x46, 0x5b, 0x60, 0x83, 0xe5, 0x67, 0x85, 0x1d, 0xdf, 0x07, 0xee, 0xda, 0xe1, 0x2d, 0x2e, 0xd3, - 0xc4, 0x5d, 0x1c, 0xe5, 0x9d, 0x94, 0xc6, 0x91, 0xb4, 0x68, 0xd2, 0x03, 0x4b, 0x78, 0x7f, 0x9e, - 0xd2, 0xc4, 0x08, 0xad, 0xc2, 0xe8, 0x55, 0x8f, 0x71, 0x8f, 0x32, 0xee, 0x07, 0xef, 0xce, 0x7d, - 0x65, 0x9b, 0x91, 0xa7, 0xaf, 0x6c, 0xeb, 0x1b, 0x9b, 0x5a, 0xb5, 0xb4, 0xae, 0x09, 0x38, 0x3a, - 0x09, 0x09, 0x0b, 0xbf, 0xd4, 0xee, 0x4e, 0xf1, 0x4c, 0x34, 0xac, 0xe3, 0x4f, 0x42, 0xe2, 0x06, - 0xc1, 0xd7, 0xba, 0x13, 0x2b, 0x13, 0xfd, 0x0c, 0x43, 0xff, 0x0c, 0x24, 0x99, 0xbf, 0x10, 0x80, - 0xf0, 0x98, 0x3a, 0x82, 0x52, 0x90, 0x58, 0xde, 0xd4, 0x68, 0xf8, 0xab, 0x90, 0xe5, 0x52, 0x7d, - 0x6b, 0xad, 0xb2, 0x5c, 0x51, 0x63, 0xf3, 0xe7, 0x61, 0x94, 0x3b, 0x81, 0x1e, 0x8d, 0xc0, 0x0d, - 0xea, 0x88, 0x18, 0x0a, 0x0e, 0x45, 0xce, 0xee, 0x56, 0xcb, 0x15, 0x4d, 0x8d, 0x85, 0xb7, 0xd7, - 0x83, 0x6c, 0xb8, 0x5d, 0xfb, 0xf9, 0xc4, 0xd4, 0xdf, 0x29, 0x90, 0x09, 0xb5, 0x5f, 0xb4, 0xf0, - 0x63, 0xcb, 0x72, 0x6e, 0xe8, 0xd8, 0x32, 0xb1, 0x27, 0x82, 0x02, 0x98, 0xa8, 0x44, 0x25, 0xc3, - 0x6e, 0xda, 0xcf, 0xc5, 0xf8, 0xd7, 0x14, 0x50, 0x7b, 0x5b, 0xb7, 0x1e, 0x03, 0x95, 0x5f, 0xa8, - 0x81, 0xaf, 0x2a, 0x90, 0xeb, 0xee, 0xd7, 0x7a, 0xcc, 0x3b, 0xfd, 0x0b, 0x35, 0xef, 0x8b, 0x0a, - 0x8c, 0x77, 0x75, 0x69, 0xff, 0xaf, 0xac, 0x7b, 0x25, 0x0e, 0x53, 0x03, 0x70, 0xa8, 0x24, 0xda, - 0x59, 0xde, 0x61, 0x7f, 0x78, 0x98, 0x67, 0x2d, 0xd2, 0x6a, 0xb9, 0x85, 0x5d, 0x5f, 0x74, 0xbf, - 0x8f, 0x82, 0x6a, 0xd6, 0x88, 0xed, 0x9b, 0xfb, 0x26, 0x71, 0xc5, 0x2b, 0x38, 0xef, 0x71, 0x27, - 0x3a, 0x72, 0xfe, 0x16, 0xfe, 0x21, 0x40, 0x4d, 0xc7, 0x33, 0x7d, 0xf3, 0x3a, 0xd1, 0x4d, 0x5b, - 0xbe, 0xaf, 0xd3, 0x9e, 0x37, 0xa1, 0xa9, 0x72, 0x66, 0xcd, 0xf6, 0x03, 0x6d, 0x9b, 0xd4, 0x71, - 0x8f, 0x36, 0xcd, 0x7d, 0x71, 0x4d, 0x95, 0x33, 0x81, 0xf6, 0x69, 0xc8, 0xd6, 0x9c, 0x16, 0x6d, - 0x1f, 0xb8, 0x1e, 0x4d, 0xb5, 0x8a, 0x96, 0xe1, 0xb2, 0x40, 0x45, 0xf4, 0x77, 0x9d, 0x8b, 0x82, - 0xac, 0x96, 0xe1, 0x32, 0xae, 0xf2, 0x08, 0x4c, 0xe0, 0x7a, 0xdd, 0xa5, 0xe4, 0x92, 0x88, 0x37, - 0xad, 0xb9, 0x40, 0xcc, 0x14, 0x67, 0xae, 0x40, 0x4a, 0xfa, 0x81, 0x56, 0x33, 0xea, 0x09, 0xbd, - 0xc9, 0xaf, 0x6b, 0x62, 0x0b, 0x69, 0x2d, 0x65, 0xcb, 0xc9, 0xd3, 0x90, 0x35, 0x3d, 0xbd, 0x73, - 0x6f, 0x18, 0x9b, 0x8b, 0x2d, 0xa4, 0xb4, 0x8c, 0xe9, 0x05, 0x17, 0x45, 0xf3, 0xaf, 0xc7, 0x20, - 0xd7, 0x7d, 0xef, 0x89, 0x56, 0x20, 0x65, 0x39, 0x06, 0x66, 0x81, 0xc0, 0x2f, 0xdd, 0x17, 0x22, - 0xae, 0x4a, 0x17, 0xd7, 0x85, 0xbe, 0x16, 0x20, 0x67, 0xfe, 0x51, 0x81, 0x94, 0x14, 0xa3, 0x13, - 0x90, 0x68, 0x62, 0xff, 0x80, 0xd1, 0x25, 0xcb, 0x31, 0x55, 0xd1, 0xd8, 0x98, 0xca, 0xbd, 0x26, - 0xb6, 0x59, 0x08, 0x08, 0x39, 0x1d, 0xd3, 0x7d, 0xb5, 0x08, 0xae, 0xb1, 0x76, 0xd8, 0x69, 0x34, - 0x88, 0xed, 0x7b, 0x72, 0x5f, 0x85, 0x7c, 0x59, 0x88, 0xd1, 0xe3, 0x30, 0xe9, 0xbb, 0xd8, 0xb4, - 0xba, 0x74, 0x13, 0x4c, 0x57, 0x95, 0x13, 0x81, 0x72, 0x11, 0x4e, 0x4a, 0xde, 0x1a, 0xf1, 0xb1, - 0x71, 0x40, 0x6a, 0x1d, 0xd0, 0x28, 0xbb, 0x54, 0xbb, 0x4f, 0x28, 0xac, 0x88, 0x79, 0x89, 0x9d, - 0xff, 0x81, 0x02, 0x93, 0xb2, 0x81, 0xaf, 0x05, 0xce, 0xaa, 0x02, 0x60, 0xdb, 0x76, 0xfc, 0xb0, - 0xbb, 0xfa, 0x43, 0xb9, 0x0f, 0xb7, 0x58, 0x0a, 0x40, 0x5a, 0x88, 0x60, 0xa6, 0x01, 0xd0, 0x99, - 0x39, 0xd2, 0x6d, 0xb3, 0x90, 0x11, 0x97, 0xda, 0xec, 0x97, 0x11, 0xfe, 0xd6, 0x07, 0x5c, 0x44, - 0x3b, 0x7d, 0x34, 0x0d, 0xc9, 0x3d, 0x52, 0x37, 0x6d, 0x71, 0xd5, 0xc6, 0x07, 0xf2, 0x02, 0x2f, - 0x11, 0x5c, 0xe0, 0x95, 0x3f, 0x09, 0x53, 0x86, 0xd3, 0xe8, 0x35, 0xb7, 0xac, 0xf6, 0xbc, 0x79, - 0x7a, 0x1f, 0x53, 0x5e, 0x80, 0x4e, 0x77, 0xf6, 0x65, 0x45, 0xf9, 0x4a, 0x2c, 0xbe, 0xba, 0x55, - 0xfe, 0x5a, 0x6c, 0x66, 0x95, 0x43, 0xb7, 0xe4, 0x4a, 0x35, 0xb2, 0x6f, 0x11, 0x83, 0x5a, 0x0f, - 0x3f, 0x7e, 0x18, 0x3e, 0x5c, 0x37, 0xfd, 0x83, 0xd6, 0xde, 0xa2, 0xe1, 0x34, 0xce, 0xd4, 0x9d, - 0xba, 0xd3, 0xf9, 0x31, 0x88, 0x8e, 0xd8, 0x80, 0xfd, 0x27, 0x7e, 0x10, 0x4a, 0x07, 0xd2, 0x99, - 0xc8, 0x5f, 0x8f, 0x8a, 0x1b, 0x30, 0x25, 0x94, 0x75, 0x76, 0x23, 0xcd, 0xfb, 0x70, 0x74, 0xd7, - 0x5b, 0x89, 0xfc, 0x37, 0xde, 0x62, 0x95, 0x4e, 0x9b, 0x14, 0x50, 0x3a, 0xc7, 0x3b, 0xf5, 0xa2, - 0x06, 0x1f, 0xe8, 0xe2, 0xe3, 0x47, 0x93, 0xb8, 0x11, 0x8c, 0xdf, 0x13, 0x8c, 0x53, 0x21, 0xc6, - 0x6d, 0x01, 0x2d, 0x2e, 0xc3, 0xf8, 0x71, 0xb8, 0xfe, 0x5e, 0x70, 0x65, 0x49, 0x98, 0x64, 0x15, - 0x26, 0x18, 0x89, 0xd1, 0xf2, 0x7c, 0xa7, 0xc1, 0xf2, 0xde, 0xdd, 0x69, 0xfe, 0xe1, 0x2d, 0x7e, - 0x56, 0x72, 0x14, 0xb6, 0x1c, 0xa0, 0x8a, 0x45, 0x60, 0x97, 0xf0, 0x35, 0x62, 0x58, 0x11, 0x0c, - 0x6f, 0x08, 0x43, 0x02, 0xfd, 0xe2, 0x27, 0x60, 0x9a, 0xfe, 0xcf, 0xd2, 0x52, 0xd8, 0x92, 0xe8, - 0x3b, 0x98, 0xfc, 0x0f, 0x5e, 0xe6, 0xc7, 0x71, 0x2a, 0x20, 0x08, 0xd9, 0x14, 0xda, 0xc5, 0x3a, - 0xf1, 0x7d, 0xe2, 0x7a, 0x3a, 0xb6, 0x06, 0x99, 0x17, 0x7a, 0x83, 0xcd, 0x7f, 0xe1, 0x9d, 0xee, - 0x5d, 0x5c, 0xe5, 0xc8, 0x92, 0x65, 0x15, 0x77, 0xe1, 0xbe, 0x01, 0x51, 0x31, 0x04, 0xe7, 0x2b, - 0x82, 0x73, 0xba, 0x2f, 0x32, 0x28, 0xed, 0x16, 0x48, 0x79, 0xb0, 0x97, 0x43, 0x70, 0x7e, 0x51, - 0x70, 0x22, 0x81, 0x95, 0x5b, 0x4a, 0x19, 0xaf, 0xc0, 0xe4, 0x75, 0xe2, 0xee, 0x39, 0x9e, 0xb8, - 0x38, 0x18, 0x82, 0xee, 0x55, 0x41, 0x37, 0x21, 0x80, 0xec, 0x1a, 0x81, 0x72, 0x3d, 0x05, 0xa9, - 0x7d, 0x6c, 0x90, 0x21, 0x28, 0xbe, 0x24, 0x28, 0xc6, 0xa8, 0x3e, 0x85, 0x96, 0x20, 0x5b, 0x77, - 0x44, 0x65, 0x8a, 0x86, 0xbf, 0x26, 0xe0, 0x19, 0x89, 0x11, 0x14, 0x4d, 0xa7, 0xd9, 0xb2, 0x68, - 0xd9, 0x8a, 0xa6, 0xf8, 0x43, 0x49, 0x21, 0x31, 0x82, 0xe2, 0x18, 0x6e, 0xfd, 0xb2, 0xa4, 0xf0, - 0x42, 0xfe, 0x7c, 0x06, 0x32, 0x8e, 0x6d, 0xb5, 0x1d, 0x7b, 0x18, 0x23, 0xfe, 0x48, 0x30, 0x80, - 0x80, 0x50, 0x82, 0x4b, 0x90, 0x1e, 0x76, 0x23, 0xfe, 0xf8, 0x1d, 0x79, 0x3c, 0xe4, 0x0e, 0xac, - 0xc2, 0x84, 0x4c, 0x50, 0xa6, 0x63, 0x0f, 0x41, 0xf1, 0x27, 0x82, 0x22, 0x17, 0x82, 0x89, 0x65, - 0xf8, 0xc4, 0xf3, 0xeb, 0x64, 0x18, 0x92, 0xd7, 0xe5, 0x32, 0x04, 0x44, 0xb8, 0x72, 0x8f, 0xd8, - 0xc6, 0xc1, 0x70, 0x0c, 0x5f, 0x95, 0xae, 0x94, 0x18, 0x4a, 0xb1, 0x0c, 0xe3, 0x0d, 0xec, 0x7a, - 0x07, 0xd8, 0x1a, 0x6a, 0x3b, 0xfe, 0x54, 0x70, 0x64, 0x03, 0x90, 0xf0, 0x48, 0xcb, 0x3e, 0x0e, - 0xcd, 0xd7, 0xa4, 0x47, 0x42, 0x30, 0x71, 0xf4, 0x3c, 0x9f, 0xdd, 0xcd, 0x1c, 0x87, 0xed, 0xcf, - 0xe4, 0xd1, 0xe3, 0xd8, 0x6a, 0x98, 0xf1, 0x12, 0xa4, 0x3d, 0xf3, 0xa5, 0xa1, 0x68, 0xfe, 0x5c, - 0xee, 0x34, 0x03, 0x50, 0xf0, 0xf3, 0x70, 0x72, 0x60, 0x99, 0x18, 0x82, 0xec, 0x2f, 0x04, 0xd9, - 0x89, 0x01, 0xa5, 0x42, 0xa4, 0x84, 0xe3, 0x52, 0xfe, 0xa5, 0x4c, 0x09, 0xa4, 0x87, 0x6b, 0x8b, - 0x76, 0xf6, 0x1e, 0xde, 0x3f, 0x9e, 0xd7, 0xfe, 0x4a, 0x7a, 0x8d, 0x63, 0xbb, 0xbc, 0xb6, 0x03, - 0x27, 0x04, 0xe3, 0xf1, 0xf6, 0xf5, 0xeb, 0x32, 0xb1, 0x72, 0xf4, 0x6e, 0xf7, 0xee, 0x7e, 0x12, - 0x66, 0x02, 0x77, 0xca, 0xa6, 0xd4, 0xd3, 0x1b, 0xb8, 0x39, 0x04, 0xf3, 0x37, 0x04, 0xb3, 0xcc, - 0xf8, 0x41, 0x57, 0xeb, 0x55, 0x71, 0x93, 0x92, 0x3f, 0x07, 0x79, 0x49, 0xde, 0xb2, 0x5d, 0x62, - 0x38, 0x75, 0xdb, 0x7c, 0x89, 0xd4, 0x86, 0xa0, 0xfe, 0x66, 0xcf, 0x56, 0xed, 0x86, 0xe0, 0x94, - 0x79, 0x0d, 0xd4, 0xa0, 0x57, 0xd1, 0xcd, 0x46, 0xd3, 0x71, 0xfd, 0x08, 0xc6, 0xbf, 0x96, 0x3b, - 0x15, 0xe0, 0xd6, 0x18, 0xac, 0x58, 0x81, 0x1c, 0x1b, 0x0e, 0x1b, 0x92, 0x7f, 0x23, 0x88, 0xc6, - 0x3b, 0x28, 0x91, 0x38, 0x0c, 0xa7, 0xd1, 0xc4, 0xee, 0x30, 0xf9, 0xef, 0x5b, 0x32, 0x71, 0x08, - 0x88, 0x48, 0x1c, 0x7e, 0xbb, 0x49, 0x68, 0xb5, 0x1f, 0x82, 0xe1, 0xdb, 0x32, 0x71, 0x48, 0x8c, - 0xa0, 0x90, 0x0d, 0xc3, 0x10, 0x14, 0x7f, 0x2b, 0x29, 0x24, 0x86, 0x52, 0x7c, 0xbc, 0x53, 0x68, - 0x5d, 0x52, 0x37, 0x3d, 0xdf, 0xe5, 0xad, 0xf0, 0xdd, 0xa9, 0xbe, 0xf3, 0x4e, 0x77, 0x13, 0xa6, - 0x85, 0xa0, 0xc5, 0x2b, 0x30, 0xd1, 0xd3, 0x62, 0xa0, 0xa8, 0x5f, 0xf4, 0xf3, 0x9f, 0x7a, 0x4f, - 0x24, 0xa3, 0xee, 0x0e, 0xa3, 0xb8, 0x4e, 0xf7, 0xbd, 0xbb, 0x0f, 0x88, 0x26, 0x7b, 0xf9, 0xbd, - 0x60, 0xeb, 0xbb, 0xda, 0x80, 0xe2, 0x65, 0x18, 0xef, 0xea, 0x01, 0xa2, 0xa9, 0x7e, 0x45, 0x50, - 0x65, 0xc3, 0x2d, 0x40, 0xf1, 0x3c, 0x24, 0x68, 0x3d, 0x8f, 0x86, 0xff, 0xaa, 0x80, 0x33, 0xf5, - 0xe2, 0x47, 0x21, 0x25, 0xeb, 0x78, 0x34, 0xf4, 0xd7, 0x04, 0x34, 0x80, 0x50, 0xb8, 0xac, 0xe1, - 0xd1, 0xf0, 0xcf, 0x48, 0xb8, 0x84, 0x50, 0xf8, 0xf0, 0x2e, 0xfc, 0xee, 0xe7, 0x12, 0x22, 0x0f, - 0x4b, 0xdf, 0x5d, 0x82, 0x31, 0x51, 0xbc, 0xa3, 0xd1, 0x9f, 0x15, 0x0f, 0x97, 0x88, 0xe2, 0x93, - 0x90, 0x1c, 0xd2, 0xe1, 0xbf, 0x21, 0xa0, 0x5c, 0xbf, 0xb8, 0x0c, 0x99, 0x50, 0xc1, 0x8e, 0x86, - 0xff, 0xa6, 0x80, 0x87, 0x51, 0xd4, 0x74, 0x51, 0xb0, 0xa3, 0x09, 0x7e, 0x4b, 0x9a, 0x2e, 0x10, - 0xd4, 0x6d, 0xb2, 0x56, 0x47, 0xa3, 0x7f, 0x5b, 0x7a, 0x5d, 0x42, 0x8a, 0xcf, 0x40, 0x3a, 0xc8, - 0xbf, 0xd1, 0xf8, 0xdf, 0x11, 0xf8, 0x0e, 0x86, 0x7a, 0x20, 0x94, 0xff, 0xa3, 0x29, 0x7e, 0x57, - 0x7a, 0x20, 0x84, 0xa2, 0xc7, 0xa8, 0xb7, 0xa6, 0x47, 0x33, 0xfd, 0x9e, 0x3c, 0x46, 0x3d, 0x25, - 0x9d, 0xee, 0x26, 0x4b, 0x83, 0xd1, 0x14, 0xbf, 0x2f, 0x77, 0x93, 0xe9, 0x53, 0x33, 0x7a, 0x8b, - 0x64, 0x34, 0xc7, 0x1f, 0x48, 0x33, 0x7a, 0x6a, 0x64, 0x71, 0x0b, 0x50, 0x7f, 0x81, 0x8c, 0xe6, - 0xfb, 0xbc, 0xe0, 0x9b, 0xec, 0xab, 0x8f, 0xc5, 0x67, 0xe1, 0xc4, 0xe0, 0xe2, 0x18, 0xcd, 0xfa, - 0x85, 0xf7, 0x7a, 0x5e, 0x67, 0xc2, 0xb5, 0xb1, 0xb8, 0xd3, 0xc9, 0xb2, 0xe1, 0xc2, 0x18, 0x4d, - 0xfb, 0xca, 0x7b, 0xdd, 0x89, 0x36, 0x5c, 0x17, 0x8b, 0x25, 0x80, 0x4e, 0x4d, 0x8a, 0xe6, 0x7a, - 0x55, 0x70, 0x85, 0x40, 0xf4, 0x68, 0x88, 0x92, 0x14, 0x8d, 0xff, 0x92, 0x3c, 0x1a, 0x02, 0x41, - 0x8f, 0x86, 0xac, 0x46, 0xd1, 0xe8, 0xd7, 0xe4, 0xd1, 0x90, 0x90, 0xe2, 0x25, 0x48, 0xd9, 0x2d, - 0xcb, 0xa2, 0xb1, 0x85, 0xee, 0xfe, 0x91, 0x4d, 0xfe, 0x47, 0xef, 0x0b, 0xb0, 0x04, 0x14, 0xcf, - 0x43, 0x92, 0x34, 0xf6, 0x48, 0x2d, 0x0a, 0xf9, 0x6f, 0xef, 0xcb, 0x7c, 0x42, 0xb5, 0x8b, 0xcf, - 0x00, 0xf0, 0x97, 0x69, 0xf6, 0x1b, 0x4b, 0x04, 0xf6, 0xdf, 0xdf, 0x17, 0xbf, 0xdf, 0x77, 0x20, - 0x1d, 0x02, 0xfe, 0x35, 0xc0, 0xdd, 0x09, 0xde, 0xe9, 0x26, 0x60, 0x2f, 0xe0, 0x4f, 0xc1, 0xd8, - 0x55, 0xcf, 0xb1, 0x7d, 0x5c, 0x8f, 0x42, 0xff, 0x87, 0x40, 0x4b, 0x7d, 0xea, 0xb0, 0x86, 0xe3, - 0x12, 0x1f, 0xd7, 0xbd, 0x28, 0xec, 0x7f, 0x0a, 0x6c, 0x00, 0xa0, 0x60, 0x03, 0x7b, 0xfe, 0x30, - 0xeb, 0xfe, 0x2f, 0x09, 0x96, 0x00, 0x6a, 0x34, 0xfd, 0xff, 0x1a, 0x69, 0x47, 0x61, 0xdf, 0x95, - 0x46, 0x0b, 0xfd, 0xe2, 0x47, 0x21, 0x4d, 0xff, 0xe5, 0xdf, 0xb4, 0x44, 0x80, 0xff, 0x5b, 0x80, - 0x3b, 0x08, 0xfa, 0x64, 0xcf, 0xaf, 0xf9, 0x66, 0xb4, 0xb3, 0xff, 0x47, 0xec, 0xb4, 0xd4, 0x2f, - 0x96, 0x20, 0xe3, 0xf9, 0xb5, 0x5a, 0x4b, 0x74, 0x34, 0x11, 0xf0, 0x1f, 0xbf, 0x1f, 0xbc, 0xe4, - 0x06, 0x98, 0xf2, 0xe9, 0xc1, 0xf7, 0x75, 0xb0, 0xea, 0xac, 0x3a, 0xfc, 0xa6, 0x0e, 0xbe, 0x39, - 0x01, 0xa7, 0x0c, 0xa7, 0xb1, 0xe7, 0x78, 0x67, 0x6c, 0x62, 0xfa, 0x07, 0xc4, 0x3d, 0x23, 0xdd, - 0x26, 0x6e, 0xd9, 0x02, 0x37, 0xce, 0x1c, 0xef, 0x7a, 0x6e, 0xfe, 0x47, 0xe3, 0x90, 0x5a, 0xc6, - 0x9e, 0x8f, 0x6f, 0xe0, 0x36, 0x7a, 0x08, 0x52, 0x6b, 0xb6, 0x7f, 0xee, 0xec, 0x96, 0xef, 0xb2, - 0x1f, 0x67, 0xe2, 0xe5, 0xf4, 0x9d, 0x5b, 0xb3, 0x49, 0x93, 0xca, 0xb4, 0x60, 0x0a, 0x3d, 0x00, - 0x49, 0xf6, 0x3f, 0xbb, 0xa4, 0x8c, 0x97, 0xc7, 0xdf, 0xb8, 0x35, 0x3b, 0xd2, 0xd1, 0xe3, 0x73, - 0xe8, 0x79, 0xc8, 0x54, 0xdb, 0xbb, 0xa6, 0xed, 0x5f, 0x58, 0xa2, 0x74, 0x74, 0xe1, 0x89, 0xf2, - 0x93, 0x77, 0x6e, 0xcd, 0x9e, 0x3b, 0xd2, 0x40, 0x5a, 0x0e, 0x3b, 0x0b, 0x93, 0x68, 0xf6, 0x4d, - 0x5f, 0x98, 0x0b, 0x3d, 0x0b, 0x29, 0x39, 0xe4, 0x97, 0xfd, 0xe5, 0x4b, 0xc2, 0x84, 0x7b, 0xe2, - 0x0e, 0xc8, 0xd0, 0x2f, 0x41, 0xb6, 0xda, 0xbe, 0x6c, 0x39, 0x58, 0xf8, 0x20, 0x39, 0xa7, 0x2c, - 0xc4, 0xca, 0x17, 0xef, 0xdc, 0x9a, 0x5d, 0x1a, 0x9a, 0x58, 0xc0, 0x19, 0x73, 0x17, 0x1b, 0x7a, - 0x01, 0xd2, 0xc1, 0x98, 0xfd, 0x9c, 0x10, 0x2b, 0x7f, 0x44, 0xd8, 0x7d, 0x6f, 0xf4, 0x1d, 0xba, - 0x90, 0xe5, 0xdc, 0xdd, 0x63, 0x73, 0xca, 0x82, 0x72, 0x2f, 0x96, 0x0b, 0x9f, 0x74, 0xb1, 0x85, - 0x2c, 0xbf, 0xb0, 0xc4, 0x7e, 0xbf, 0x50, 0xee, 0xd5, 0x72, 0x41, 0xdf, 0xa1, 0x43, 0x57, 0x60, - 0xac, 0xda, 0x2e, 0xb7, 0x7d, 0xe2, 0xb1, 0x0f, 0x5d, 0xb2, 0xe5, 0x27, 0xee, 0xdc, 0x9a, 0xfd, - 0xd0, 0x90, 0xac, 0x0c, 0xa7, 0x49, 0x02, 0x34, 0x07, 0x99, 0x0d, 0xc7, 0x6d, 0x60, 0x8b, 0xf3, - 0x01, 0xff, 0x3d, 0x26, 0x24, 0x42, 0xbb, 0x74, 0x25, 0x7c, 0xb7, 0x3d, 0xf6, 0x95, 0xfe, 0x4f, - 0x11, 0x93, 0x1d, 0x26, 0x64, 0x42, 0xb2, 0xda, 0xae, 0xe2, 0x66, 0x3e, 0xcb, 0x7e, 0x2c, 0x38, - 0xb5, 0x18, 0x20, 0xe4, 0xd9, 0x5a, 0x64, 0xf3, 0xec, 0x83, 0x84, 0xf2, 0xd2, 0x9d, 0x5b, 0xb3, - 0x4f, 0x0c, 0xfd, 0xc4, 0x2a, 0x6e, 0xb2, 0xc7, 0xf1, 0x27, 0xa0, 0x6f, 0x29, 0xf4, 0x60, 0xf1, - 0xdb, 0x56, 0xfa, 0xc4, 0x71, 0xf6, 0xc4, 0x07, 0x06, 0x3e, 0x31, 0xd0, 0xe2, 0xcf, 0xb5, 0x3f, - 0xfd, 0xe6, 0x31, 0x56, 0xca, 0xdf, 0x68, 0xe8, 0xa3, 0x7f, 0xfd, 0xcd, 0x7b, 0x3e, 0xb4, 0x81, - 0x05, 0xe8, 0x65, 0x05, 0xc6, 0xab, 0xed, 0x0d, 0x51, 0x5b, 0xa9, 0xe5, 0x39, 0xf1, 0x2d, 0xf7, - 0x20, 0xcb, 0x43, 0x7a, 0xdc, 0xf6, 0x0b, 0x9f, 0x7e, 0x73, 0xf6, 0xec, 0xd0, 0x46, 0xb0, 0x14, - 0xc4, 0x6c, 0xe8, 0x7e, 0x26, 0xfa, 0x0c, 0xb3, 0xa2, 0x42, 0xeb, 0x74, 0x8d, 0xd4, 0xa8, 0x15, - 0x13, 0x77, 0xb1, 0x22, 0xa4, 0xc7, 0xad, 0x28, 0xd2, 0xa8, 0xbf, 0x77, 0x4b, 0x42, 0x7c, 0x68, - 0x13, 0x46, 0xb9, 0x87, 0xd9, 0x47, 0x56, 0xe9, 0x63, 0x86, 0x61, 0x67, 0x73, 0x34, 0x41, 0x33, - 0x73, 0x11, 0xa0, 0x13, 0x63, 0x48, 0x85, 0xf8, 0x35, 0xd2, 0x16, 0x1f, 0xd3, 0xd1, 0x7f, 0xd1, - 0x74, 0xe7, 0x63, 0x51, 0x65, 0x21, 0x21, 0xbe, 0x00, 0x2d, 0xc6, 0x2e, 0x2a, 0x33, 0x4f, 0x83, - 0xda, 0x1b, 0x2b, 0xc7, 0xc2, 0x6b, 0x80, 0xfa, 0x77, 0x2c, 0xcc, 0x90, 0xe4, 0x0c, 0x0f, 0x87, - 0x19, 0x32, 0x67, 0xd5, 0x8e, 0xcf, 0x9f, 0x35, 0x2d, 0xcf, 0xb1, 0xfb, 0x38, 0x7b, 0xfd, 0xff, - 0xd3, 0x71, 0xce, 0x17, 0x60, 0x94, 0x0b, 0xe9, 0x5a, 0xd6, 0x58, 0xf9, 0x60, 0x55, 0x4e, 0xe3, - 0x83, 0xf2, 0xfa, 0x1b, 0xb7, 0x0b, 0x23, 0xdf, 0xbf, 0x5d, 0x18, 0xf9, 0xa7, 0xdb, 0x85, 0x91, - 0x1f, 0xde, 0x2e, 0x28, 0x6f, 0xdf, 0x2e, 0x28, 0xef, 0xde, 0x2e, 0x28, 0x3f, 0xb9, 0x5d, 0x50, - 0x6e, 0x1e, 0x16, 0x94, 0xaf, 0x1e, 0x16, 0x94, 0xaf, 0x1f, 0x16, 0x94, 0xef, 0x1c, 0x16, 0x94, - 0xef, 0x1e, 0x16, 0x94, 0x37, 0x0e, 0x0b, 0x23, 0xdf, 0x3f, 0x2c, 0x8c, 0xfc, 0xf0, 0xb0, 0xa0, - 0xbc, 0x7d, 0x58, 0x18, 0x79, 0xf7, 0xb0, 0xa0, 0xfc, 0xe4, 0xb0, 0x30, 0x72, 0xf3, 0x5f, 0x0a, - 0x23, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x01, 0x71, 0x8c, 0x2f, 0x35, 0x00, 0x00, + // 4126 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x81, 0x14, 0xfd, + 0x47, 0xdb, 0x09, 0xe5, 0xd1, 0x9f, 0x65, 0x28, 0xb1, 0x07, 0x20, 0x21, 0x06, 0x2a, 0x41, 0x20, + 0x4b, 0x32, 0x92, 0xdc, 0xce, 0xec, 0x2c, 0x17, 0x97, 0xe0, 0x4a, 0x8b, 0x5d, 0x64, 0x77, 0x21, + 0x19, 0x7e, 0x52, 0xe3, 0xb6, 0x99, 0xb4, 0xd3, 0xff, 0xce, 0x34, 0x71, 0x1d, 0xb7, 0xcd, 0x4c, + 0xeb, 0x34, 0xe9, 0x4f, 0x92, 0x36, 0x69, 0xa6, 0x4f, 0x79, 0x49, 0xeb, 0xa7, 0x4e, 0xf2, 0xd6, + 0x87, 0x8e, 0x6c, 0x31, 0x9e, 0xa9, 0xd3, 0xba, 0xad, 0xdb, 0x78, 0xa6, 0x19, 0xf9, 0xa5, 0x73, + 0xff, 0x16, 0x8b, 0x1f, 0x72, 0x41, 0x65, 0x9c, 0x3c, 0x11, 0x7b, 0xee, 0xf9, 0xbe, 0x3d, 0xf7, + 0xdc, 0x73, 0xcf, 0x39, 0x7b, 0x77, 0x09, 0x3f, 0x3c, 0x07, 0x0b, 0x0d, 0xdb, 0x6e, 0x98, 0xf8, + 0x54, 0xcb, 0xb1, 0x3d, 0x7b, 0xa7, 0xbd, 0x7b, 0xaa, 0x8e, 0x5d, 0xdd, 0x31, 0x5a, 0x9e, 0xed, + 0x2c, 0x53, 0x19, 0x9a, 0x62, 0x1a, 0xcb, 0x42, 0x63, 0xb1, 0x02, 0xd3, 0x97, 0x0c, 0x13, 0xaf, + 0xfa, 0x8a, 0x9b, 0xd8, 0x43, 0x17, 0x20, 0xb6, 0x6b, 0x98, 0x38, 0x2b, 0x2d, 0x44, 0x97, 0x52, + 0xa7, 0x1f, 0x59, 0xee, 0x03, 0x2d, 0xf7, 0x22, 0x6a, 0x44, 0xac, 0x50, 0xc4, 0xe2, 0xdb, 0x31, + 0x98, 0x19, 0x32, 0x8a, 0x10, 0xc4, 0x2c, 0xad, 0x49, 0x18, 0xa5, 0xa5, 0xa4, 0x42, 0x7f, 0xa3, + 0x2c, 0x4c, 0xb4, 0x34, 0xfd, 0x86, 0xd6, 0xc0, 0xd9, 0x08, 0x15, 0x8b, 0x4b, 0x94, 0x03, 0xa8, + 0xe3, 0x16, 0xb6, 0xea, 0xd8, 0xd2, 0x3b, 0xd9, 0xe8, 0x42, 0x74, 0x29, 0xa9, 0x04, 0x24, 0xe8, + 0x29, 0x98, 0x6e, 0xb5, 0x77, 0x4c, 0x43, 0x57, 0x03, 0x6a, 0xb0, 0x10, 0x5d, 0x8a, 0x2b, 0x32, + 0x1b, 0x58, 0xed, 0x2a, 0x3f, 0x0e, 0x53, 0xb7, 0xb0, 0x76, 0x23, 0xa8, 0x9a, 0xa2, 0xaa, 0x19, + 0x22, 0x0e, 0x28, 0xae, 0x40, 0xba, 0x89, 0x5d, 0x57, 0x6b, 0x60, 0xd5, 0xeb, 0xb4, 0x70, 0x36, + 0x46, 0x67, 0xbf, 0x30, 0x30, 0xfb, 0xfe, 0x99, 0xa7, 0x38, 0x6a, 0xab, 0xd3, 0xc2, 0xa8, 0x00, + 0x49, 0x6c, 0xb5, 0x9b, 0x8c, 0x21, 0x7e, 0x80, 0xff, 0x4a, 0x56, 0xbb, 0xd9, 0xcf, 0x92, 0x20, + 0x30, 0x4e, 0x31, 0xe1, 0x62, 0xe7, 0xa6, 0xa1, 0xe3, 0xec, 0x38, 0x25, 0x78, 0x7c, 0x80, 0x60, + 0x93, 0x8d, 0xf7, 0x73, 0x08, 0x1c, 0x5a, 0x81, 0x24, 0x7e, 0xd1, 0xc3, 0x96, 0x6b, 0xd8, 0x56, + 0x76, 0x82, 0x92, 0x3c, 0x3a, 0x64, 0x15, 0xb1, 0x59, 0xef, 0xa7, 0xe8, 0xe2, 0xd0, 0x79, 0x98, + 0xb0, 0x5b, 0x9e, 0x61, 0x5b, 0x6e, 0x36, 0xb1, 0x20, 0x2d, 0xa5, 0x4e, 0x7f, 0x64, 0x68, 0x20, + 0x54, 0x99, 0x8e, 0x22, 0x94, 0x51, 0x19, 0x64, 0xd7, 0x6e, 0x3b, 0x3a, 0x56, 0x75, 0xbb, 0x8e, + 0x55, 0xc3, 0xda, 0xb5, 0xb3, 0x49, 0x4a, 0x30, 0x3f, 0x38, 0x11, 0xaa, 0xb8, 0x62, 0xd7, 0x71, + 0xd9, 0xda, 0xb5, 0x95, 0x8c, 0xdb, 0x73, 0x8d, 0x8e, 0xc1, 0xb8, 0xdb, 0xb1, 0x3c, 0xed, 0xc5, + 0x6c, 0x9a, 0x46, 0x08, 0xbf, 0x5a, 0xfc, 0xbf, 0x38, 0x4c, 0x8d, 0x12, 0x62, 0x17, 0x21, 0xbe, + 0x4b, 0x66, 0x99, 0x8d, 0x1c, 0xc5, 0x07, 0x0c, 0xd3, 0xeb, 0xc4, 0xf1, 0xfb, 0x74, 0x62, 0x01, + 0x52, 0x16, 0x76, 0x3d, 0x5c, 0x67, 0x11, 0x11, 0x1d, 0x31, 0xa6, 0x80, 0x81, 0x06, 0x43, 0x2a, + 0x76, 0x5f, 0x21, 0x75, 0x15, 0xa6, 0x7c, 0x93, 0x54, 0x47, 0xb3, 0x1a, 0x22, 0x36, 0x4f, 0x85, + 0x59, 0xb2, 0x5c, 0x12, 0x38, 0x85, 0xc0, 0x94, 0x0c, 0xee, 0xb9, 0x46, 0xab, 0x00, 0xb6, 0x85, + 0xed, 0x5d, 0xb5, 0x8e, 0x75, 0x33, 0x9b, 0x38, 0xc0, 0x4b, 0x55, 0xa2, 0x32, 0xe0, 0x25, 0x9b, + 0x49, 0x75, 0x13, 0x3d, 0xdb, 0x0d, 0xb5, 0x89, 0x03, 0x22, 0xa5, 0xc2, 0x36, 0xd9, 0x40, 0xb4, + 0x6d, 0x43, 0xc6, 0xc1, 0x24, 0xee, 0x71, 0x9d, 0xcf, 0x2c, 0x49, 0x8d, 0x58, 0x0e, 0x9d, 0x99, + 0xc2, 0x61, 0x6c, 0x62, 0x93, 0x4e, 0xf0, 0x12, 0x3d, 0x0c, 0xbe, 0x40, 0xa5, 0x61, 0x05, 0x34, + 0x0b, 0xa5, 0x85, 0x70, 0x43, 0x6b, 0xe2, 0xb9, 0x0b, 0x90, 0xe9, 0x75, 0x0f, 0x9a, 0x85, 0xb8, + 0xeb, 0x69, 0x8e, 0x47, 0xa3, 0x30, 0xae, 0xb0, 0x0b, 0x24, 0x43, 0x14, 0x5b, 0x75, 0x9a, 0xe5, + 0xe2, 0x0a, 0xf9, 0x39, 0xf7, 0x0c, 0x4c, 0xf6, 0xdc, 0x7e, 0x54, 0xe0, 0xe2, 0x17, 0xc6, 0x61, + 0x76, 0x58, 0xcc, 0x0d, 0x0d, 0xff, 0x63, 0x30, 0x6e, 0xb5, 0x9b, 0x3b, 0xd8, 0xc9, 0x46, 0x29, + 0x03, 0xbf, 0x42, 0x05, 0x88, 0x9b, 0xda, 0x0e, 0x36, 0xb3, 0xb1, 0x05, 0x69, 0x29, 0x73, 0xfa, + 0xa9, 0x91, 0xa2, 0x7a, 0x79, 0x9d, 0x40, 0x14, 0x86, 0x44, 0xcf, 0x41, 0x8c, 0xa7, 0x38, 0xc2, + 0xf0, 0xe4, 0x68, 0x0c, 0x24, 0x16, 0x15, 0x8a, 0x43, 0x0f, 0x41, 0x92, 0xfc, 0x65, 0xbe, 0x1d, + 0xa7, 0x36, 0x27, 0x88, 0x80, 0xf8, 0x15, 0xcd, 0x41, 0x82, 0x86, 0x59, 0x1d, 0x8b, 0xd2, 0xe0, + 0x5f, 0x93, 0x85, 0xa9, 0xe3, 0x5d, 0xad, 0x6d, 0x7a, 0xea, 0x4d, 0xcd, 0x6c, 0x63, 0x1a, 0x30, + 0x49, 0x25, 0xcd, 0x85, 0x9f, 0x26, 0x32, 0x34, 0x0f, 0x29, 0x16, 0x95, 0x86, 0x55, 0xc7, 0x2f, + 0xd2, 0xec, 0x13, 0x57, 0x58, 0xa0, 0x96, 0x89, 0x84, 0xdc, 0xfe, 0xba, 0x6b, 0x5b, 0x62, 0x69, + 0xe9, 0x2d, 0x88, 0x80, 0xde, 0xfe, 0x99, 0xfe, 0xc4, 0x77, 0x62, 0xf8, 0xf4, 0xfa, 0x63, 0x71, + 0xf1, 0xdb, 0x11, 0x88, 0xd1, 0xfd, 0x36, 0x05, 0xa9, 0xad, 0x6b, 0xb5, 0x92, 0xba, 0x5a, 0xdd, + 0x2e, 0xae, 0x97, 0x64, 0x09, 0x65, 0x00, 0xa8, 0xe0, 0xd2, 0x7a, 0xb5, 0xb0, 0x25, 0x47, 0xfc, + 0xeb, 0xf2, 0xc6, 0xd6, 0xf9, 0xb3, 0x72, 0xd4, 0x07, 0x6c, 0x33, 0x41, 0x2c, 0xa8, 0x70, 0xe6, + 0xb4, 0x1c, 0x47, 0x32, 0xa4, 0x19, 0x41, 0xf9, 0x6a, 0x69, 0xf5, 0xfc, 0x59, 0x79, 0xbc, 0x57, + 0x72, 0xe6, 0xb4, 0x3c, 0x81, 0x26, 0x21, 0x49, 0x25, 0xc5, 0x6a, 0x75, 0x5d, 0x4e, 0xf8, 0x9c, + 0x9b, 0x5b, 0x4a, 0x79, 0x63, 0x4d, 0x4e, 0xfa, 0x9c, 0x6b, 0x4a, 0x75, 0xbb, 0x26, 0x83, 0xcf, + 0x50, 0x29, 0x6d, 0x6e, 0x16, 0xd6, 0x4a, 0x72, 0xca, 0xd7, 0x28, 0x5e, 0xdb, 0x2a, 0x6d, 0xca, + 0xe9, 0x1e, 0xb3, 0xce, 0x9c, 0x96, 0x27, 0xfd, 0x5b, 0x94, 0x36, 0xb6, 0x2b, 0x72, 0x06, 0x4d, + 0xc3, 0x24, 0xbb, 0x85, 0x30, 0x62, 0xaa, 0x4f, 0x74, 0xfe, 0xac, 0x2c, 0x77, 0x0d, 0x61, 0x2c, + 0xd3, 0x3d, 0x82, 0xf3, 0x67, 0x65, 0xb4, 0xb8, 0x02, 0x71, 0x1a, 0x5d, 0x08, 0x41, 0x66, 0xbd, + 0x50, 0x2c, 0xad, 0xab, 0xd5, 0xda, 0x56, 0xb9, 0xba, 0x51, 0x58, 0x97, 0xa5, 0xae, 0x4c, 0x29, + 0x7d, 0x6a, 0xbb, 0xac, 0x94, 0x56, 0xe5, 0x48, 0x50, 0x56, 0x2b, 0x15, 0xb6, 0x4a, 0xab, 0x72, + 0x74, 0x51, 0x87, 0xd9, 0x61, 0x79, 0x66, 0xe8, 0xce, 0x08, 0x2c, 0x71, 0xe4, 0x80, 0x25, 0xa6, + 0x5c, 0x03, 0x4b, 0xfc, 0x65, 0x09, 0x66, 0x86, 0xe4, 0xda, 0xa1, 0x37, 0x79, 0x1e, 0xe2, 0x2c, + 0x44, 0x59, 0xf5, 0x79, 0x62, 0x68, 0xd2, 0xa6, 0x01, 0x3b, 0x50, 0x81, 0x28, 0x2e, 0x58, 0x81, + 0xa3, 0x07, 0x54, 0x60, 0x42, 0x31, 0x60, 0xe4, 0xcb, 0x12, 0x64, 0x0f, 0xe2, 0x0e, 0x49, 0x14, + 0x91, 0x9e, 0x44, 0x71, 0xb1, 0xdf, 0x80, 0x93, 0x07, 0xcf, 0x61, 0xc0, 0x8a, 0xd7, 0x25, 0x38, + 0x36, 0xbc, 0x51, 0x19, 0x6a, 0xc3, 0x73, 0x30, 0xde, 0xc4, 0xde, 0x9e, 0x2d, 0x8a, 0xf5, 0x63, + 0x43, 0x4a, 0x00, 0x19, 0xee, 0xf7, 0x15, 0x47, 0x05, 0x6b, 0x48, 0xf4, 0xa0, 0x6e, 0x83, 0x59, + 0x33, 0x60, 0xe9, 0xe7, 0x23, 0xf0, 0xc0, 0x50, 0xf2, 0xa1, 0x86, 0x9e, 0x00, 0x30, 0xac, 0x56, + 0xdb, 0x63, 0x05, 0x99, 0xe5, 0xa7, 0x24, 0x95, 0xd0, 0xbd, 0x4f, 0x72, 0x4f, 0xdb, 0xf3, 0xc7, + 0xa3, 0x74, 0x1c, 0x98, 0x88, 0x2a, 0x5c, 0xe8, 0x1a, 0x1a, 0xa3, 0x86, 0xe6, 0x0e, 0x98, 0xe9, + 0x40, 0xad, 0x7b, 0x1a, 0x64, 0xdd, 0x34, 0xb0, 0xe5, 0xa9, 0xae, 0xe7, 0x60, 0xad, 0x69, 0x58, + 0x0d, 0x9a, 0x80, 0x13, 0xf9, 0xf8, 0xae, 0x66, 0xba, 0x58, 0x99, 0x62, 0xc3, 0x9b, 0x62, 0x94, + 0x20, 0x68, 0x95, 0x71, 0x02, 0x88, 0xf1, 0x1e, 0x04, 0x1b, 0xf6, 0x11, 0x8b, 0x5f, 0x9b, 0x80, + 0x54, 0xa0, 0xad, 0x43, 0x27, 0x21, 0x7d, 0x5d, 0xbb, 0xa9, 0xa9, 0xa2, 0x55, 0x67, 0x9e, 0x48, + 0x11, 0x59, 0x8d, 0xb7, 0xeb, 0x4f, 0xc3, 0x2c, 0x55, 0xb1, 0xdb, 0x1e, 0x76, 0x54, 0xdd, 0xd4, + 0x5c, 0x97, 0x3a, 0x2d, 0x41, 0x55, 0x11, 0x19, 0xab, 0x92, 0xa1, 0x15, 0x31, 0x82, 0xce, 0xc1, + 0x0c, 0x45, 0x34, 0xdb, 0xa6, 0x67, 0xb4, 0x4c, 0xac, 0x92, 0x87, 0x07, 0x97, 0x26, 0x62, 0xdf, + 0xb2, 0x69, 0xa2, 0x51, 0xe1, 0x0a, 0xc4, 0x22, 0x17, 0xad, 0xc2, 0x09, 0x0a, 0x6b, 0x60, 0x0b, + 0x3b, 0x9a, 0x87, 0x55, 0xfc, 0x99, 0xb6, 0x66, 0xba, 0xaa, 0x66, 0xd5, 0xd5, 0x3d, 0xcd, 0xdd, + 0xcb, 0xce, 0x12, 0x82, 0x62, 0x24, 0x2b, 0x29, 0xc7, 0x89, 0xe2, 0x1a, 0xd7, 0x2b, 0x51, 0xb5, + 0x82, 0x55, 0xff, 0xa4, 0xe6, 0xee, 0xa1, 0x3c, 0x1c, 0xa3, 0x2c, 0xae, 0xe7, 0x18, 0x56, 0x43, + 0xd5, 0xf7, 0xb0, 0x7e, 0x43, 0x6d, 0x7b, 0xbb, 0x17, 0xb2, 0x0f, 0x05, 0xef, 0x4f, 0x2d, 0xdc, + 0xa4, 0x3a, 0x2b, 0x44, 0x65, 0xdb, 0xdb, 0xbd, 0x80, 0x36, 0x21, 0x4d, 0x16, 0xa3, 0x69, 0xbc, + 0x84, 0xd5, 0x5d, 0xdb, 0xa1, 0x95, 0x25, 0x33, 0x64, 0x67, 0x07, 0x3c, 0xb8, 0x5c, 0xe5, 0x80, + 0x8a, 0x5d, 0xc7, 0xf9, 0xf8, 0x66, 0xad, 0x54, 0x5a, 0x55, 0x52, 0x82, 0xe5, 0x92, 0xed, 0x90, + 0x80, 0x6a, 0xd8, 0xbe, 0x83, 0x53, 0x2c, 0xa0, 0x1a, 0xb6, 0x70, 0xef, 0x39, 0x98, 0xd1, 0x75, + 0x36, 0x67, 0x43, 0x57, 0x79, 0x8b, 0xef, 0x66, 0xe5, 0x1e, 0x67, 0xe9, 0xfa, 0x1a, 0x53, 0xe0, + 0x31, 0xee, 0xa2, 0x67, 0xe1, 0x81, 0xae, 0xb3, 0x82, 0xc0, 0xe9, 0x81, 0x59, 0xf6, 0x43, 0xcf, + 0xc1, 0x4c, 0xab, 0x33, 0x08, 0x44, 0x3d, 0x77, 0x6c, 0x75, 0xfa, 0x61, 0x8f, 0xd2, 0xc7, 0x36, + 0x07, 0xeb, 0x9a, 0x87, 0xeb, 0xd9, 0x07, 0x83, 0xda, 0x81, 0x01, 0x74, 0x0a, 0x64, 0x5d, 0x57, + 0xb1, 0xa5, 0xed, 0x98, 0x58, 0xd5, 0x1c, 0x6c, 0x69, 0x6e, 0x76, 0x3e, 0xa8, 0x9c, 0xd1, 0xf5, + 0x12, 0x1d, 0x2d, 0xd0, 0x41, 0xf4, 0x24, 0x4c, 0xdb, 0x3b, 0xd7, 0x75, 0x16, 0x59, 0x6a, 0xcb, + 0xc1, 0xbb, 0xc6, 0x8b, 0xd9, 0x47, 0xa8, 0x9b, 0xa6, 0xc8, 0x00, 0x8d, 0xab, 0x1a, 0x15, 0xa3, + 0x27, 0x40, 0xd6, 0xdd, 0x3d, 0xcd, 0x69, 0xd1, 0xd2, 0xee, 0xb6, 0x34, 0x1d, 0x67, 0x1f, 0x65, + 0xaa, 0x4c, 0xbe, 0x21, 0xc4, 0x24, 0xb2, 0xdd, 0x5b, 0xc6, 0xae, 0x27, 0x18, 0x1f, 0x67, 0x91, + 0x4d, 0x65, 0x9c, 0xed, 0x2a, 0xcc, 0xb6, 0x2d, 0xc3, 0xf2, 0xb0, 0xd3, 0x72, 0x30, 0x69, 0xe2, + 0xd9, 0x4e, 0xcc, 0xfe, 0xdb, 0xc4, 0x01, 0x6d, 0xf8, 0x76, 0x50, 0x9b, 0x05, 0x80, 0x32, 0xd3, + 0x1e, 0x14, 0x2e, 0xe6, 0x21, 0x1d, 0x8c, 0x0b, 0x94, 0x04, 0x16, 0x19, 0xb2, 0x44, 0x6a, 0xec, + 0x4a, 0x75, 0x95, 0x54, 0xc7, 0x17, 0x4a, 0x72, 0x84, 0x54, 0xe9, 0xf5, 0xf2, 0x56, 0x49, 0x55, + 0xb6, 0x37, 0xb6, 0xca, 0x95, 0x92, 0x1c, 0x7d, 0x32, 0x99, 0x78, 0x67, 0x42, 0xbe, 0x7d, 0xfb, + 0xf6, 0xed, 0xc8, 0xe2, 0xf7, 0x22, 0x90, 0xe9, 0xed, 0x8c, 0xd1, 0xc7, 0xe1, 0x41, 0xf1, 0x18, + 0xeb, 0x62, 0x4f, 0xbd, 0x65, 0x38, 0x34, 0x54, 0x9b, 0x1a, 0xeb, 0x2d, 0x7d, 0x2f, 0xcf, 0x72, + 0xad, 0x4d, 0xec, 0x5d, 0x31, 0x1c, 0x12, 0x88, 0x4d, 0xcd, 0x43, 0xeb, 0x30, 0x6f, 0xd9, 0xaa, + 0xeb, 0x69, 0x56, 0x5d, 0x73, 0xea, 0x6a, 0xf7, 0x00, 0x41, 0xd5, 0x74, 0x1d, 0xbb, 0xae, 0xcd, + 0x4a, 0x84, 0xcf, 0xf2, 0x11, 0xcb, 0xde, 0xe4, 0xca, 0xdd, 0xdc, 0x59, 0xe0, 0xaa, 0x7d, 0x11, + 0x11, 0x3d, 0x28, 0x22, 0x1e, 0x82, 0x64, 0x53, 0x6b, 0xa9, 0xd8, 0xf2, 0x9c, 0x0e, 0xed, 0xe7, + 0x12, 0x4a, 0xa2, 0xa9, 0xb5, 0x4a, 0xe4, 0xfa, 0xc3, 0x5b, 0x83, 0xa0, 0x1f, 0xff, 0x35, 0x0a, + 0xe9, 0x60, 0x4f, 0x47, 0x5a, 0x64, 0x9d, 0xe6, 0x6f, 0x89, 0xee, 0xf0, 0x87, 0x0f, 0xed, 0x00, + 0x97, 0x57, 0x48, 0x62, 0xcf, 0x8f, 0xb3, 0x4e, 0x4b, 0x61, 0x48, 0x52, 0x54, 0xc9, 0x9e, 0xc6, + 0xac, 0x7f, 0x4f, 0x28, 0xfc, 0x0a, 0xad, 0xc1, 0xf8, 0x75, 0x97, 0x72, 0x8f, 0x53, 0xee, 0x47, + 0x0e, 0xe7, 0xbe, 0xbc, 0x49, 0xc9, 0x93, 0x97, 0x37, 0xd5, 0x8d, 0xaa, 0x52, 0x29, 0xac, 0x2b, + 0x1c, 0x8e, 0x8e, 0x43, 0xcc, 0xd4, 0x5e, 0xea, 0xf4, 0x96, 0x00, 0x2a, 0x1a, 0xd5, 0xf1, 0xc7, + 0x21, 0x76, 0x0b, 0x6b, 0x37, 0x7a, 0x13, 0x2f, 0x15, 0x7d, 0x88, 0xa1, 0x7f, 0x0a, 0xe2, 0xd4, + 0x5f, 0x08, 0x80, 0x7b, 0x4c, 0x1e, 0x43, 0x09, 0x88, 0xad, 0x54, 0x15, 0x12, 0xfe, 0x32, 0xa4, + 0x99, 0x54, 0xad, 0x95, 0x4b, 0x2b, 0x25, 0x39, 0xb2, 0x78, 0x0e, 0xc6, 0x99, 0x13, 0xc8, 0xd6, + 0xf0, 0xdd, 0x20, 0x8f, 0xf1, 0x4b, 0xce, 0x21, 0x89, 0xd1, 0xed, 0x4a, 0xb1, 0xa4, 0xc8, 0x91, + 0xe0, 0xf2, 0xba, 0x90, 0x0e, 0xb6, 0x73, 0x3f, 0x9b, 0x98, 0xfa, 0x07, 0x09, 0x52, 0x81, 0xf6, + 0x8c, 0x34, 0x06, 0x9a, 0x69, 0xda, 0xb7, 0x54, 0xcd, 0x34, 0x34, 0x97, 0x07, 0x05, 0x50, 0x51, + 0x81, 0x48, 0x46, 0x5d, 0xb4, 0x9f, 0x89, 0xf1, 0xaf, 0x49, 0x20, 0xf7, 0xb7, 0x76, 0x7d, 0x06, + 0x4a, 0x3f, 0x57, 0x03, 0x5f, 0x95, 0x20, 0xd3, 0xdb, 0xcf, 0xf5, 0x99, 0x77, 0xf2, 0xe7, 0x6a, + 0xde, 0x5b, 0x11, 0x98, 0xec, 0xe9, 0xe2, 0x46, 0xb5, 0xee, 0x33, 0x30, 0x6d, 0xd4, 0x71, 0xb3, + 0x65, 0x7b, 0xd8, 0xd2, 0x3b, 0xaa, 0x89, 0x6f, 0x62, 0x33, 0xbb, 0x48, 0x13, 0xc5, 0xa9, 0xc3, + 0xfb, 0xc4, 0xe5, 0x72, 0x17, 0xb7, 0x4e, 0x60, 0xf9, 0x99, 0xf2, 0x6a, 0xa9, 0x52, 0xab, 0x6e, + 0x95, 0x36, 0x56, 0xae, 0xa9, 0xdb, 0x1b, 0xbf, 0xb0, 0x51, 0xbd, 0xb2, 0xa1, 0xc8, 0x46, 0x9f, + 0xda, 0x87, 0xb8, 0xd5, 0x6b, 0x20, 0xf7, 0x1b, 0x85, 0x1e, 0x84, 0x61, 0x66, 0xc9, 0x63, 0x68, + 0x06, 0xa6, 0x36, 0xaa, 0xea, 0x66, 0x79, 0xb5, 0xa4, 0x96, 0x2e, 0x5d, 0x2a, 0xad, 0x6c, 0x6d, + 0xb2, 0x07, 0x67, 0x5f, 0x7b, 0xab, 0x77, 0x53, 0xbf, 0x12, 0x85, 0x99, 0x21, 0x96, 0xa0, 0x02, + 0xef, 0xd9, 0xd9, 0x63, 0xc4, 0xc7, 0x46, 0xb1, 0x7e, 0x99, 0x74, 0x05, 0x35, 0xcd, 0xf1, 0x78, + 0x8b, 0xff, 0x04, 0x10, 0x2f, 0x59, 0x9e, 0xb1, 0x6b, 0x60, 0x87, 0x9f, 0x33, 0xb0, 0x46, 0x7e, + 0xaa, 0x2b, 0x67, 0x47, 0x0d, 0x1f, 0x05, 0xd4, 0xb2, 0x5d, 0xc3, 0x33, 0x6e, 0x62, 0xd5, 0xb0, + 0xc4, 0xa1, 0x04, 0x69, 0xec, 0x63, 0x8a, 0x2c, 0x46, 0xca, 0x96, 0xe7, 0x6b, 0x5b, 0xb8, 0xa1, + 0xf5, 0x69, 0x93, 0x04, 0x1e, 0x55, 0x64, 0x31, 0xe2, 0x6b, 0x9f, 0x84, 0x74, 0xdd, 0x6e, 0x93, + 0x36, 0x89, 0xe9, 0x91, 0x7a, 0x21, 0x29, 0x29, 0x26, 0xf3, 0x55, 0x78, 0x1f, 0xdb, 0x3d, 0x0d, + 0x49, 0x2b, 0x29, 0x26, 0x63, 0x2a, 0x8f, 0xc3, 0x94, 0xd6, 0x68, 0x38, 0x84, 0x5c, 0x10, 0xb1, + 0xce, 0x3c, 0xe3, 0x8b, 0xa9, 0xe2, 0xdc, 0x65, 0x48, 0x08, 0x3f, 0x90, 0x92, 0x4c, 0x3c, 0xa1, + 0xb6, 0xd8, 0x99, 0x54, 0x64, 0x29, 0xa9, 0x24, 0x2c, 0x31, 0x78, 0x12, 0xd2, 0x86, 0xab, 0x76, + 0x0f, 0x47, 0x23, 0x0b, 0x91, 0xa5, 0x84, 0x92, 0x32, 0x5c, 0xff, 0x34, 0x6c, 0xf1, 0xf5, 0x08, + 0x64, 0x7a, 0x0f, 0x77, 0xd1, 0x2a, 0x24, 0x4c, 0x5b, 0xd7, 0x68, 0x68, 0xb1, 0x37, 0x0b, 0x4b, + 0x21, 0xe7, 0xc1, 0xcb, 0xeb, 0x5c, 0x5f, 0xf1, 0x91, 0x73, 0xff, 0x2c, 0x41, 0x42, 0x88, 0xd1, + 0x31, 0x88, 0xb5, 0x34, 0x6f, 0x8f, 0xd2, 0xc5, 0x8b, 0x11, 0x59, 0x52, 0xe8, 0x35, 0x91, 0xbb, + 0x2d, 0xcd, 0xa2, 0x21, 0xc0, 0xe5, 0xe4, 0x9a, 0xac, 0xab, 0x89, 0xb5, 0x3a, 0x6d, 0xfb, 0xed, + 0x66, 0x13, 0x5b, 0x9e, 0x2b, 0xd6, 0x95, 0xcb, 0x57, 0xb8, 0x18, 0x3d, 0x05, 0xd3, 0x9e, 0xa3, + 0x19, 0x66, 0x8f, 0x6e, 0x8c, 0xea, 0xca, 0x62, 0xc0, 0x57, 0xce, 0xc3, 0x71, 0xc1, 0x5b, 0xc7, + 0x9e, 0xa6, 0xef, 0xe1, 0x7a, 0x17, 0x34, 0x4e, 0x4f, 0x0e, 0x1f, 0xe4, 0x0a, 0xab, 0x7c, 0x5c, + 0x60, 0x17, 0x7f, 0x20, 0xc1, 0xb4, 0x78, 0x50, 0xa9, 0xfb, 0xce, 0xaa, 0x00, 0x68, 0x96, 0x65, + 0x7b, 0x41, 0x77, 0x0d, 0x86, 0xf2, 0x00, 0x6e, 0xb9, 0xe0, 0x83, 0x94, 0x00, 0xc1, 0x5c, 0x13, + 0xa0, 0x3b, 0x72, 0xa0, 0xdb, 0xe6, 0x21, 0xc5, 0x4f, 0xee, 0xe9, 0xeb, 0x1f, 0xf6, 0x68, 0x0b, + 0x4c, 0x44, 0x9e, 0x68, 0xd0, 0x2c, 0xc4, 0x77, 0x70, 0xc3, 0xb0, 0xf8, 0x79, 0x22, 0xbb, 0x10, + 0xa7, 0x94, 0x31, 0xff, 0x94, 0xb2, 0x78, 0x15, 0x66, 0x74, 0xbb, 0xd9, 0x6f, 0x6e, 0x51, 0xee, + 0x7b, 0xbc, 0x76, 0x3f, 0x29, 0xbd, 0x00, 0xdd, 0x16, 0xf3, 0xcb, 0x91, 0xe8, 0x5a, 0xad, 0xf8, + 0xd5, 0xc8, 0xdc, 0x1a, 0xc3, 0xd5, 0xc4, 0x34, 0x15, 0xbc, 0x6b, 0x62, 0x9d, 0x98, 0x0e, 0x3f, + 0x7e, 0x0c, 0x3e, 0xd6, 0x30, 0xbc, 0xbd, 0xf6, 0xce, 0xb2, 0x6e, 0x37, 0x4f, 0x35, 0xec, 0x86, + 0xdd, 0x7d, 0xdd, 0x45, 0xae, 0xe8, 0x05, 0xfd, 0xc5, 0x5f, 0x79, 0x25, 0x7d, 0xe9, 0x5c, 0xe8, + 0xfb, 0xb1, 0xfc, 0x06, 0xcc, 0x70, 0x65, 0x95, 0x9e, 0xb9, 0xb3, 0x47, 0x03, 0x74, 0xe8, 0xb9, + 0x4b, 0xf6, 0x1b, 0x6f, 0xd3, 0x5a, 0xad, 0x4c, 0x73, 0x28, 0x19, 0x63, 0x0f, 0x10, 0x79, 0x05, + 0x1e, 0xe8, 0xe1, 0x63, 0xfb, 0x12, 0x3b, 0x21, 0x8c, 0xdf, 0xe3, 0x8c, 0x33, 0x01, 0xc6, 0x4d, + 0x0e, 0xcd, 0xaf, 0xc0, 0xe4, 0x51, 0xb8, 0xfe, 0x91, 0x73, 0xa5, 0x71, 0x90, 0x64, 0x0d, 0xa6, + 0x28, 0x89, 0xde, 0x76, 0x3d, 0xbb, 0x49, 0x93, 0xde, 0xe1, 0x34, 0xff, 0xf4, 0x36, 0xdb, 0x28, + 0x19, 0x02, 0x5b, 0xf1, 0x51, 0xf9, 0x3c, 0xd0, 0xd7, 0x0c, 0x75, 0xac, 0x9b, 0x21, 0x0c, 0x6f, + 0x70, 0x43, 0x7c, 0xfd, 0xfc, 0xa7, 0x61, 0x96, 0xfc, 0xa6, 0x39, 0x29, 0x68, 0x49, 0xf8, 0x29, + 0x53, 0xf6, 0x07, 0x2f, 0xb3, 0xbd, 0x38, 0xe3, 0x13, 0x04, 0x6c, 0x0a, 0xac, 0x62, 0x03, 0x7b, + 0x1e, 0x76, 0x5c, 0x55, 0x33, 0x87, 0x99, 0x17, 0x78, 0x4c, 0xcf, 0x7e, 0xf1, 0xdd, 0xde, 0x55, + 0x5c, 0x63, 0xc8, 0x82, 0x69, 0xe6, 0xb7, 0xe1, 0xc1, 0x21, 0x51, 0x31, 0x02, 0xe7, 0x2b, 0x9c, + 0x73, 0x76, 0x20, 0x32, 0x08, 0x6d, 0x0d, 0x84, 0xdc, 0x5f, 0xcb, 0x11, 0x38, 0xff, 0x88, 0x73, + 0x22, 0x8e, 0x15, 0x4b, 0x4a, 0x18, 0x2f, 0xc3, 0xf4, 0x4d, 0xec, 0xec, 0xd8, 0x2e, 0x3f, 0x1a, + 0x19, 0x81, 0xee, 0x55, 0x4e, 0x37, 0xc5, 0x81, 0xf4, 0xac, 0x84, 0x70, 0x3d, 0x0b, 0x89, 0x5d, + 0x4d, 0xc7, 0x23, 0x50, 0x7c, 0x89, 0x53, 0x4c, 0x10, 0x7d, 0x02, 0x2d, 0x40, 0xba, 0x61, 0xf3, + 0xb2, 0x14, 0x0e, 0x7f, 0x8d, 0xc3, 0x53, 0x02, 0xc3, 0x29, 0x5a, 0x76, 0xab, 0x6d, 0x92, 0x9a, + 0x15, 0x4e, 0xf1, 0xc7, 0x82, 0x42, 0x60, 0x38, 0xc5, 0x11, 0xdc, 0xfa, 0x27, 0x82, 0xc2, 0x0d, + 0xf8, 0xf3, 0x79, 0x48, 0xd9, 0x96, 0xd9, 0xb1, 0xad, 0x51, 0x8c, 0xf8, 0x53, 0xce, 0x00, 0x1c, + 0x42, 0x08, 0x2e, 0x42, 0x72, 0xd4, 0x85, 0xf8, 0xb3, 0x77, 0xc5, 0xf6, 0x10, 0x2b, 0xb0, 0x06, + 0x53, 0x22, 0x41, 0x19, 0xb6, 0x35, 0x02, 0xc5, 0x9f, 0x73, 0x8a, 0x4c, 0x00, 0xc6, 0xa7, 0xe1, + 0x61, 0xd7, 0x6b, 0xe0, 0x51, 0x48, 0x5e, 0x17, 0xd3, 0xe0, 0x10, 0xee, 0xca, 0x1d, 0x6c, 0xe9, + 0x7b, 0xa3, 0x31, 0x7c, 0x45, 0xb8, 0x52, 0x60, 0x08, 0xc5, 0x0a, 0x4c, 0x36, 0x35, 0xc7, 0xdd, + 0xd3, 0xcc, 0x91, 0x96, 0xe3, 0x2f, 0x38, 0x47, 0xda, 0x07, 0x71, 0x8f, 0xb4, 0xad, 0xa3, 0xd0, + 0x7c, 0x55, 0x78, 0x24, 0x00, 0xe3, 0x5b, 0xcf, 0xf5, 0xe8, 0x01, 0xd4, 0x51, 0xd8, 0xbe, 0x26, + 0xb6, 0x1e, 0xc3, 0x56, 0x82, 0x8c, 0x17, 0x21, 0xe9, 0x1a, 0x2f, 0x8d, 0x44, 0xf3, 0x97, 0x62, + 0xa5, 0x29, 0x80, 0x80, 0xaf, 0xc1, 0xf1, 0xa1, 0x65, 0x62, 0x04, 0xb2, 0xbf, 0xe2, 0x64, 0xc7, + 0x86, 0x94, 0x0a, 0x9e, 0x12, 0x8e, 0x4a, 0xf9, 0xd7, 0x22, 0x25, 0xe0, 0x3e, 0xae, 0x1a, 0x79, + 0x50, 0x70, 0xb5, 0xdd, 0xa3, 0x79, 0xed, 0x6f, 0x84, 0xd7, 0x18, 0xb6, 0xc7, 0x6b, 0x5b, 0x70, + 0x8c, 0x33, 0x1e, 0x6d, 0x5d, 0xbf, 0x2e, 0x12, 0x2b, 0x43, 0x6f, 0xf7, 0xae, 0xee, 0x2f, 0xc2, + 0x9c, 0xef, 0x4e, 0xd1, 0x91, 0xba, 0x6a, 0x53, 0x6b, 0x8d, 0xc0, 0xfc, 0x0d, 0xce, 0x2c, 0x32, + 0xbe, 0xdf, 0xd2, 0xba, 0x15, 0xad, 0x45, 0xc8, 0xaf, 0x42, 0x56, 0x90, 0xb7, 0x2d, 0x07, 0xeb, + 0x76, 0xc3, 0x32, 0x5e, 0xc2, 0xf5, 0x11, 0xa8, 0xbf, 0xd9, 0xb7, 0x54, 0xdb, 0x01, 0x38, 0x61, + 0x2e, 0x83, 0xec, 0xf7, 0x2a, 0xaa, 0xd1, 0x6c, 0xd9, 0x8e, 0x17, 0xc2, 0xf8, 0xb7, 0x62, 0xa5, + 0x7c, 0x5c, 0x99, 0xc2, 0xf2, 0x25, 0xc8, 0xd0, 0xcb, 0x51, 0x43, 0xf2, 0xef, 0x38, 0xd1, 0x64, + 0x17, 0xc5, 0x13, 0x87, 0x6e, 0x37, 0x5b, 0x9a, 0x33, 0x4a, 0xfe, 0xfb, 0x96, 0x48, 0x1c, 0x1c, + 0xc2, 0x13, 0x87, 0xd7, 0x69, 0x61, 0x52, 0xed, 0x47, 0x60, 0xf8, 0xb6, 0x48, 0x1c, 0x02, 0xc3, + 0x29, 0x44, 0xc3, 0x30, 0x02, 0xc5, 0xdf, 0x0b, 0x0a, 0x81, 0x21, 0x14, 0x9f, 0xea, 0x16, 0x5a, + 0x07, 0x37, 0x0c, 0xd7, 0x73, 0x58, 0x1f, 0x7c, 0x38, 0xd5, 0x77, 0xde, 0xed, 0x6d, 0xc2, 0x94, + 0x00, 0x34, 0x7f, 0x19, 0xa6, 0xfa, 0x5a, 0x0c, 0x14, 0xf6, 0xcd, 0x42, 0xf6, 0x97, 0xdf, 0xe7, + 0xc9, 0xa8, 0xb7, 0xc3, 0xc8, 0xaf, 0x93, 0x75, 0xef, 0xed, 0x03, 0xc2, 0xc9, 0x5e, 0x7e, 0xdf, + 0x5f, 0xfa, 0x9e, 0x36, 0x20, 0x7f, 0x09, 0x26, 0x7b, 0x7a, 0x80, 0x70, 0xaa, 0x5f, 0xe1, 0x54, + 0xe9, 0x60, 0x0b, 0x90, 0x3f, 0x07, 0x31, 0x52, 0xcf, 0xc3, 0xe1, 0xbf, 0xca, 0xe1, 0x54, 0x3d, + 0xff, 0x09, 0x48, 0x88, 0x3a, 0x1e, 0x0e, 0xfd, 0x35, 0x0e, 0xf5, 0x21, 0x04, 0x2e, 0x6a, 0x78, + 0x38, 0xfc, 0x73, 0x02, 0x2e, 0x20, 0x04, 0x3e, 0xba, 0x0b, 0xbf, 0xfb, 0x1b, 0x31, 0x9e, 0x87, + 0x85, 0xef, 0x2e, 0xc2, 0x04, 0x2f, 0xde, 0xe1, 0xe8, 0xcf, 0xf3, 0x9b, 0x0b, 0x44, 0xfe, 0x19, + 0x88, 0x8f, 0xe8, 0xf0, 0xdf, 0xe4, 0x50, 0xa6, 0x9f, 0x5f, 0x81, 0x54, 0xa0, 0x60, 0x87, 0xc3, + 0x7f, 0x8b, 0xc3, 0x83, 0x28, 0x62, 0x3a, 0x2f, 0xd8, 0xe1, 0x04, 0xbf, 0x2d, 0x4c, 0xe7, 0x08, + 0xe2, 0x36, 0x51, 0xab, 0xc3, 0xd1, 0xbf, 0x23, 0xbc, 0x2e, 0x20, 0xf9, 0xe7, 0x21, 0xe9, 0xe7, + 0xdf, 0x70, 0xfc, 0xef, 0x72, 0x7c, 0x17, 0x43, 0x3c, 0x10, 0xc8, 0xff, 0xe1, 0x14, 0xbf, 0x27, + 0x3c, 0x10, 0x40, 0x91, 0x6d, 0xd4, 0x5f, 0xd3, 0xc3, 0x99, 0x7e, 0x5f, 0x6c, 0xa3, 0xbe, 0x92, + 0x4e, 0x56, 0x93, 0xa6, 0xc1, 0x70, 0x8a, 0x3f, 0x10, 0xab, 0x49, 0xf5, 0x89, 0x19, 0xfd, 0x45, + 0x32, 0x9c, 0xe3, 0x0f, 0x85, 0x19, 0x7d, 0x35, 0x32, 0x5f, 0x03, 0x34, 0x58, 0x20, 0xc3, 0xf9, + 0xbe, 0xc0, 0xf9, 0xa6, 0x07, 0xea, 0x63, 0xfe, 0x0a, 0x1c, 0x1b, 0x5e, 0x1c, 0xc3, 0x59, 0xbf, + 0xf8, 0x7e, 0xdf, 0xe3, 0x4c, 0xb0, 0x36, 0xe6, 0xb7, 0xba, 0x59, 0x36, 0x58, 0x18, 0xc3, 0x69, + 0x5f, 0x79, 0xbf, 0x37, 0xd1, 0x06, 0xeb, 0x62, 0xbe, 0x00, 0xd0, 0xad, 0x49, 0xe1, 0x5c, 0xaf, + 0x72, 0xae, 0x00, 0x88, 0x6c, 0x0d, 0x5e, 0x92, 0xc2, 0xf1, 0x5f, 0x12, 0x5b, 0x83, 0x23, 0xc8, + 0xd6, 0x10, 0xd5, 0x28, 0x1c, 0xfd, 0x9a, 0xd8, 0x1a, 0x02, 0x92, 0xbf, 0x08, 0x09, 0xab, 0x6d, + 0x9a, 0x24, 0xb6, 0xd0, 0xe1, 0x9f, 0x11, 0x65, 0x7f, 0xf4, 0x01, 0x07, 0x0b, 0x40, 0xfe, 0x1c, + 0xc4, 0x71, 0x73, 0x07, 0xd7, 0xc3, 0x90, 0xff, 0xfe, 0x81, 0xc8, 0x27, 0x44, 0x3b, 0xff, 0x3c, + 0x00, 0x7b, 0x98, 0xa6, 0x6f, 0x89, 0x42, 0xb0, 0xff, 0xf1, 0x01, 0xff, 0x42, 0xa1, 0x0b, 0xe9, + 0x12, 0xb0, 0xef, 0x1d, 0x0e, 0x27, 0x78, 0xb7, 0x97, 0x80, 0x3e, 0x80, 0x3f, 0x0b, 0x13, 0xd7, + 0x5d, 0xdb, 0xf2, 0xb4, 0x46, 0x18, 0xfa, 0x3f, 0x39, 0x5a, 0xe8, 0x13, 0x87, 0x35, 0x6d, 0x07, + 0x7b, 0x5a, 0xc3, 0x0d, 0xc3, 0xfe, 0x17, 0xc7, 0xfa, 0x00, 0x02, 0xd6, 0x35, 0xd7, 0x1b, 0x65, + 0xde, 0xff, 0x2d, 0xc0, 0x02, 0x40, 0x8c, 0x26, 0xbf, 0x6f, 0xe0, 0x4e, 0x18, 0xf6, 0x3d, 0x61, + 0x34, 0xd7, 0xcf, 0x7f, 0x02, 0x92, 0xe4, 0x27, 0xfb, 0x6a, 0x27, 0x04, 0xfc, 0x3f, 0x1c, 0xdc, + 0x45, 0x90, 0x3b, 0xbb, 0x5e, 0xdd, 0x33, 0xc2, 0x9d, 0xfd, 0xbf, 0x7c, 0xa5, 0x85, 0x7e, 0xbe, + 0x00, 0x29, 0xd7, 0xab, 0xd7, 0xdb, 0xbc, 0xa3, 0x09, 0x81, 0xff, 0xf8, 0x03, 0xff, 0x21, 0xd7, + 0xc7, 0x14, 0x4f, 0x0e, 0x3f, 0xac, 0x83, 0x35, 0x7b, 0xcd, 0x66, 0xc7, 0x74, 0xf0, 0xcd, 0x29, + 0x38, 0xa1, 0xdb, 0xcd, 0x1d, 0xdb, 0x3d, 0x65, 0x61, 0xc3, 0xdb, 0xc3, 0xce, 0x29, 0xe1, 0x36, + 0x7e, 0xca, 0xe6, 0xbb, 0x71, 0xee, 0x68, 0xc7, 0x73, 0x8b, 0x3f, 0x9a, 0x84, 0xc4, 0x8a, 0xe6, + 0x7a, 0xda, 0x2d, 0xad, 0x83, 0x1e, 0x85, 0x44, 0xd9, 0xf2, 0xce, 0x9c, 0xae, 0x79, 0x0e, 0x7d, + 0xbd, 0x14, 0x2d, 0x26, 0xef, 0xdd, 0x99, 0x8f, 0x1b, 0x44, 0xa6, 0xf8, 0x43, 0xe8, 0x61, 0x88, + 0xd3, 0xdf, 0xf4, 0x84, 0x32, 0x5a, 0x9c, 0x7c, 0xe3, 0xce, 0xfc, 0x58, 0x57, 0x8f, 0x8d, 0xa1, + 0x6b, 0x90, 0xaa, 0x74, 0xb6, 0x0d, 0xcb, 0x3b, 0x7f, 0x96, 0xd0, 0x91, 0x89, 0xc7, 0x8a, 0xcf, + 0xdc, 0xbb, 0x33, 0x7f, 0xe6, 0x40, 0x03, 0x49, 0x39, 0xec, 0x4e, 0x4c, 0xa0, 0xe9, 0x57, 0x8b, + 0x41, 0x2e, 0x74, 0x05, 0x12, 0xe2, 0x92, 0x9d, 0xf4, 0x17, 0x2f, 0x72, 0x13, 0xee, 0x8b, 0xdb, + 0x27, 0x43, 0xbf, 0x04, 0xe9, 0x4a, 0xe7, 0x92, 0x69, 0x6b, 0xdc, 0x07, 0xf1, 0x05, 0x69, 0x29, + 0x52, 0xbc, 0x70, 0xef, 0xce, 0xfc, 0xd9, 0x91, 0x89, 0x39, 0x9c, 0x32, 0xf7, 0xb0, 0xa1, 0x17, + 0x20, 0xe9, 0x5f, 0xd3, 0x77, 0x09, 0x91, 0xe2, 0xc7, 0xb9, 0xdd, 0xf7, 0x47, 0xdf, 0xa5, 0x0b, + 0x58, 0xce, 0xdc, 0x3d, 0xb1, 0x20, 0x2d, 0x49, 0xf7, 0x63, 0x39, 0xf7, 0x49, 0x0f, 0x5b, 0xc0, + 0xf2, 0xf3, 0x67, 0xe9, 0xcb, 0x0b, 0xe9, 0x7e, 0x2d, 0xe7, 0xf4, 0x5d, 0x3a, 0x74, 0x19, 0x26, + 0x2a, 0x9d, 0x62, 0xc7, 0xc3, 0x2e, 0xfd, 0x9a, 0x27, 0x5d, 0x7c, 0xfa, 0xde, 0x9d, 0xf9, 0x8f, + 0x8e, 0xc8, 0x4a, 0x71, 0x8a, 0x20, 0x40, 0x0b, 0x90, 0xda, 0xb0, 0x9d, 0xa6, 0x66, 0x32, 0x3e, + 0x60, 0x2f, 0x63, 0x02, 0x22, 0xb4, 0x4d, 0x66, 0xc2, 0x56, 0xdb, 0xa5, 0xff, 0x87, 0xf0, 0x53, + 0xc4, 0x64, 0x97, 0x09, 0x19, 0x10, 0xaf, 0x74, 0x2a, 0x5a, 0x2b, 0x9b, 0xa6, 0x6f, 0x0a, 0x4e, + 0x2c, 0xfb, 0x08, 0xb1, 0xb7, 0x96, 0xe9, 0x38, 0xfd, 0xa4, 0xa2, 0x78, 0xf6, 0xde, 0x9d, 0xf9, + 0xa7, 0x47, 0xbe, 0x63, 0x45, 0x6b, 0xd1, 0xdb, 0xb1, 0x3b, 0xa0, 0x6f, 0x49, 0x64, 0x63, 0xb1, + 0xd3, 0x56, 0x72, 0xc7, 0x49, 0x7a, 0xc7, 0x87, 0x87, 0xde, 0xd1, 0xd7, 0x62, 0xf7, 0xb5, 0x3e, + 0xfb, 0xe6, 0x11, 0x66, 0xca, 0x9e, 0x68, 0xc8, 0xad, 0x7f, 0xfd, 0xcd, 0xfb, 0xde, 0xb4, 0xbe, + 0x05, 0xe8, 0x65, 0x09, 0x26, 0x2b, 0x9d, 0x0d, 0x5e, 0x5b, 0x89, 0xe5, 0x19, 0xfe, 0xb5, 0xfa, + 0x30, 0xcb, 0x03, 0x7a, 0xcc, 0xf6, 0xf3, 0x9f, 0x7d, 0x73, 0xfe, 0xf4, 0xc8, 0x46, 0xd0, 0x14, + 0x44, 0x6d, 0xe8, 0xbd, 0x27, 0xfa, 0x1c, 0xb5, 0xa2, 0x44, 0xea, 0x74, 0x1d, 0xd7, 0x89, 0x15, + 0x53, 0x87, 0x58, 0x11, 0xd0, 0x63, 0x56, 0xe4, 0x49, 0xd4, 0xdf, 0xbf, 0x25, 0x01, 0x3e, 0x54, + 0x85, 0x71, 0xe6, 0x61, 0xfa, 0x25, 0x59, 0xf2, 0x88, 0x61, 0xd8, 0x5d, 0x1c, 0x85, 0xd3, 0xcc, + 0x5d, 0x00, 0xe8, 0xc6, 0x18, 0x92, 0x21, 0x7a, 0x03, 0x77, 0xf8, 0xe7, 0x82, 0xe4, 0x27, 0x9a, + 0xed, 0x7e, 0x0e, 0x2b, 0x2d, 0xc5, 0xf8, 0x37, 0xae, 0xf9, 0xc8, 0x05, 0x69, 0xee, 0x39, 0x90, + 0xfb, 0x63, 0xe5, 0x48, 0x78, 0x05, 0xd0, 0xe0, 0x8a, 0x05, 0x19, 0xe2, 0x8c, 0xe1, 0xb1, 0x20, + 0x43, 0xea, 0xb4, 0xdc, 0xf5, 0xf9, 0x15, 0xc3, 0x74, 0x6d, 0x6b, 0x80, 0xb3, 0xdf, 0xff, 0x3f, + 0x1d, 0xe7, 0x62, 0x0e, 0xc6, 0x99, 0x90, 0xcc, 0xa5, 0x4c, 0xcb, 0x07, 0xad, 0x72, 0x0a, 0xbb, + 0x28, 0xae, 0xbf, 0x71, 0x37, 0x37, 0xf6, 0xfd, 0xbb, 0xb9, 0xb1, 0x7f, 0xb9, 0x9b, 0x1b, 0x7b, + 0xeb, 0x6e, 0x4e, 0x7a, 0xe7, 0x6e, 0x4e, 0x7a, 0xef, 0x6e, 0x4e, 0xfa, 0xc9, 0xdd, 0x9c, 0x74, + 0x7b, 0x3f, 0x27, 0x7d, 0x65, 0x3f, 0x27, 0x7d, 0x7d, 0x3f, 0x27, 0x7d, 0x67, 0x3f, 0x27, 0x7d, + 0x77, 0x3f, 0x27, 0xbd, 0xb1, 0x9f, 0x1b, 0xfb, 0xfe, 0x7e, 0x6e, 0xec, 0xad, 0xfd, 0x9c, 0xf4, + 0xce, 0x7e, 0x6e, 0xec, 0xbd, 0xfd, 0x9c, 0xf4, 0x93, 0xfd, 0xdc, 0xd8, 0xed, 0x1f, 0xe6, 0xc6, + 0xfe, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x04, 0x2d, 0x6f, 0x00, 0x11, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/unmarshaler/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/unmarshaler/casttype.pb.go index 2a3ff6641..823443194 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/unmarshaler/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/unmarshaler/casttype.pb.go @@ -90,258 +90,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4012 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, - 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x83, 0x14, 0xfd, - 0x47, 0xdb, 0x09, 0xe5, 0x91, 0x28, 0x59, 0x86, 0x12, 0x7b, 0x00, 0x12, 0x62, 0xa8, 0x21, 0x48, - 0x66, 0x49, 0xc6, 0x3f, 0xe9, 0xcc, 0xce, 0xe5, 0xe2, 0x12, 0x5c, 0x69, 0xb1, 0x8b, 0xee, 0x2e, - 0x24, 0xc3, 0x4f, 0x4a, 0xdc, 0x36, 0x93, 0x66, 0xfa, 0xdf, 0x99, 0x26, 0x8e, 0xe3, 0xa6, 0x99, - 0x69, 0x9d, 0xa6, 0x7f, 0x49, 0xdb, 0xb8, 0x99, 0x3e, 0xe5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, - 0x1f, 0x3a, 0x72, 0xc4, 0x7a, 0xa6, 0x4e, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xe4, 0x97, 0xce, - 0xfd, 0x5b, 0x2c, 0x7e, 0xa8, 0x05, 0x95, 0xc9, 0xcf, 0x13, 0x79, 0xcf, 0x3d, 0xdf, 0xb7, 0xe7, - 0x9e, 0x7b, 0xee, 0x39, 0x67, 0x2f, 0x16, 0x3e, 0xbd, 0x04, 0x73, 0x75, 0xc7, 0xa9, 0x5b, 0xe4, - 0x74, 0xd3, 0x75, 0x7c, 0x67, 0xaf, 0xb5, 0x7f, 0xba, 0x46, 0x3c, 0xc3, 0x35, 0x9b, 0xbe, 0xe3, - 0x2e, 0x32, 0x19, 0x9a, 0xe0, 0x1a, 0x8b, 0x52, 0x63, 0xbe, 0x0a, 0x93, 0x97, 0x4c, 0x8b, 0xac, - 0x04, 0x8a, 0xdb, 0xc4, 0x47, 0x17, 0x20, 0xb1, 0x6f, 0x5a, 0x24, 0xaf, 0xcc, 0xc5, 0x17, 0x32, - 0x67, 0x1e, 0x5c, 0xec, 0x01, 0x2d, 0x76, 0x23, 0xb6, 0xa8, 0x58, 0x63, 0x88, 0xf9, 0xb7, 0x13, - 0x30, 0x35, 0x60, 0x16, 0x21, 0x48, 0xd8, 0xb8, 0x41, 0x19, 0x95, 0x85, 0xb4, 0xc6, 0xfe, 0x47, - 0x79, 0x18, 0x6b, 0x62, 0xe3, 0x2a, 0xae, 0x93, 0x7c, 0x8c, 0x89, 0xe5, 0x10, 0x15, 0x00, 0x6a, - 0xa4, 0x49, 0xec, 0x1a, 0xb1, 0x8d, 0x76, 0x3e, 0x3e, 0x17, 0x5f, 0x48, 0x6b, 0x21, 0x09, 0x7a, - 0x1c, 0x26, 0x9b, 0xad, 0x3d, 0xcb, 0x34, 0xf4, 0x90, 0x1a, 0xcc, 0xc5, 0x17, 0x92, 0x9a, 0xca, - 0x27, 0x56, 0x3a, 0xca, 0x8f, 0xc0, 0xc4, 0x75, 0x82, 0xaf, 0x86, 0x55, 0x33, 0x4c, 0x35, 0x47, - 0xc5, 0x21, 0xc5, 0x65, 0xc8, 0x36, 0x88, 0xe7, 0xe1, 0x3a, 0xd1, 0xfd, 0x76, 0x93, 0xe4, 0x13, - 0x6c, 0xf5, 0x73, 0x7d, 0xab, 0xef, 0x5d, 0x79, 0x46, 0xa0, 0x76, 0xda, 0x4d, 0x82, 0x4a, 0x90, - 0x26, 0x76, 0xab, 0xc1, 0x19, 0x92, 0x47, 0xf8, 0xaf, 0x62, 0xb7, 0x1a, 0xbd, 0x2c, 0x29, 0x0a, - 0x13, 0x14, 0x63, 0x1e, 0x71, 0xaf, 0x99, 0x06, 0xc9, 0x8f, 0x32, 0x82, 0x47, 0xfa, 0x08, 0xb6, - 0xf9, 0x7c, 0x2f, 0x87, 0xc4, 0xa1, 0x65, 0x48, 0x93, 0x17, 0x7d, 0x62, 0x7b, 0xa6, 0x63, 0xe7, - 0xc7, 0x18, 0xc9, 0x43, 0x03, 0x76, 0x91, 0x58, 0xb5, 0x5e, 0x8a, 0x0e, 0x0e, 0x9d, 0x87, 0x31, - 0xa7, 0xe9, 0x9b, 0x8e, 0xed, 0xe5, 0x53, 0x73, 0xca, 0x42, 0xe6, 0xcc, 0x87, 0x06, 0x06, 0xc2, - 0x26, 0xd7, 0xd1, 0xa4, 0x32, 0x5a, 0x03, 0xd5, 0x73, 0x5a, 0xae, 0x41, 0x74, 0xc3, 0xa9, 0x11, - 0xdd, 0xb4, 0xf7, 0x9d, 0x7c, 0x9a, 0x11, 0xcc, 0xf6, 0x2f, 0x84, 0x29, 0x2e, 0x3b, 0x35, 0xb2, - 0x66, 0xef, 0x3b, 0x5a, 0xce, 0xeb, 0x1a, 0xa3, 0x13, 0x30, 0xea, 0xb5, 0x6d, 0x1f, 0xbf, 0x98, - 0xcf, 0xb2, 0x08, 0x11, 0xa3, 0xf9, 0xff, 0x4b, 0xc2, 0xc4, 0x30, 0x21, 0x76, 0x11, 0x92, 0xfb, - 0x74, 0x95, 0xf9, 0xd8, 0x71, 0x7c, 0xc0, 0x31, 0xdd, 0x4e, 0x1c, 0xbd, 0x4b, 0x27, 0x96, 0x20, - 0x63, 0x13, 0xcf, 0x27, 0x35, 0x1e, 0x11, 0xf1, 0x21, 0x63, 0x0a, 0x38, 0xa8, 0x3f, 0xa4, 0x12, - 0x77, 0x15, 0x52, 0xcf, 0xc1, 0x44, 0x60, 0x92, 0xee, 0x62, 0xbb, 0x2e, 0x63, 0xf3, 0x74, 0x94, - 0x25, 0x8b, 0x15, 0x89, 0xd3, 0x28, 0x4c, 0xcb, 0x91, 0xae, 0x31, 0x5a, 0x01, 0x70, 0x6c, 0xe2, - 0xec, 0xeb, 0x35, 0x62, 0x58, 0xf9, 0xd4, 0x11, 0x5e, 0xda, 0xa4, 0x2a, 0x7d, 0x5e, 0x72, 0xb8, - 0xd4, 0xb0, 0xd0, 0x53, 0x9d, 0x50, 0x1b, 0x3b, 0x22, 0x52, 0xaa, 0xfc, 0x90, 0xf5, 0x45, 0xdb, - 0x2e, 0xe4, 0x5c, 0x42, 0xe3, 0x9e, 0xd4, 0xc4, 0xca, 0xd2, 0xcc, 0x88, 0xc5, 0xc8, 0x95, 0x69, - 0x02, 0xc6, 0x17, 0x36, 0xee, 0x86, 0x87, 0xe8, 0x01, 0x08, 0x04, 0x3a, 0x0b, 0x2b, 0x60, 0x59, - 0x28, 0x2b, 0x85, 0x1b, 0xb8, 0x41, 0x66, 0x2e, 0x40, 0xae, 0xdb, 0x3d, 0x68, 0x1a, 0x92, 0x9e, - 0x8f, 0x5d, 0x9f, 0x45, 0x61, 0x52, 0xe3, 0x03, 0xa4, 0x42, 0x9c, 0xd8, 0x35, 0x96, 0xe5, 0x92, - 0x1a, 0xfd, 0x77, 0xe6, 0x49, 0x18, 0xef, 0x7a, 0xfc, 0xb0, 0xc0, 0xf9, 0x2f, 0x8c, 0xc2, 0xf4, - 0xa0, 0x98, 0x1b, 0x18, 0xfe, 0x27, 0x60, 0xd4, 0x6e, 0x35, 0xf6, 0x88, 0x9b, 0x8f, 0x33, 0x06, - 0x31, 0x42, 0x25, 0x48, 0x5a, 0x78, 0x8f, 0x58, 0xf9, 0xc4, 0x9c, 0xb2, 0x90, 0x3b, 0xf3, 0xf8, - 0x50, 0x51, 0xbd, 0xb8, 0x4e, 0x21, 0x1a, 0x47, 0xa2, 0xa7, 0x21, 0x21, 0x52, 0x1c, 0x65, 0x78, - 0x6c, 0x38, 0x06, 0x1a, 0x8b, 0x1a, 0xc3, 0xa1, 0xfb, 0x20, 0x4d, 0xff, 0x72, 0xdf, 0x8e, 0x32, - 0x9b, 0x53, 0x54, 0x40, 0xfd, 0x8a, 0x66, 0x20, 0xc5, 0xc2, 0xac, 0x46, 0x64, 0x69, 0x08, 0xc6, - 0x74, 0x63, 0x6a, 0x64, 0x1f, 0xb7, 0x2c, 0x5f, 0xbf, 0x86, 0xad, 0x16, 0x61, 0x01, 0x93, 0xd6, - 0xb2, 0x42, 0xf8, 0x49, 0x2a, 0x43, 0xb3, 0x90, 0xe1, 0x51, 0x69, 0xda, 0x35, 0xf2, 0x22, 0xcb, - 0x3e, 0x49, 0x8d, 0x07, 0xea, 0x1a, 0x95, 0xd0, 0xc7, 0x5f, 0xf1, 0x1c, 0x5b, 0x6e, 0x2d, 0x7b, - 0x04, 0x15, 0xb0, 0xc7, 0x3f, 0xd9, 0x9b, 0xf8, 0xee, 0x1f, 0xbc, 0xbc, 0xde, 0x58, 0x9c, 0x7f, - 0x23, 0x06, 0x09, 0x76, 0xde, 0x26, 0x20, 0xb3, 0xf3, 0xfc, 0x56, 0x45, 0x5f, 0xd9, 0xdc, 0x2d, - 0xaf, 0x57, 0x54, 0x05, 0xe5, 0x00, 0x98, 0xe0, 0xd2, 0xfa, 0x66, 0x69, 0x47, 0x8d, 0x05, 0xe3, - 0xb5, 0x8d, 0x9d, 0xf3, 0x4b, 0x6a, 0x3c, 0x00, 0xec, 0x72, 0x41, 0x22, 0xac, 0x70, 0xf6, 0x8c, - 0x9a, 0x44, 0x2a, 0x64, 0x39, 0xc1, 0xda, 0x73, 0x95, 0x95, 0xf3, 0x4b, 0xea, 0x68, 0xb7, 0xe4, - 0xec, 0x19, 0x75, 0x0c, 0x8d, 0x43, 0x9a, 0x49, 0xca, 0x9b, 0x9b, 0xeb, 0x6a, 0x2a, 0xe0, 0xdc, - 0xde, 0xd1, 0xd6, 0x36, 0x56, 0xd5, 0x74, 0xc0, 0xb9, 0xaa, 0x6d, 0xee, 0x6e, 0xa9, 0x10, 0x30, - 0x54, 0x2b, 0xdb, 0xdb, 0xa5, 0xd5, 0x8a, 0x9a, 0x09, 0x34, 0xca, 0xcf, 0xef, 0x54, 0xb6, 0xd5, - 0x6c, 0x97, 0x59, 0x67, 0xcf, 0xa8, 0xe3, 0xc1, 0x23, 0x2a, 0x1b, 0xbb, 0x55, 0x35, 0x87, 0x26, - 0x61, 0x9c, 0x3f, 0x42, 0x1a, 0x31, 0xd1, 0x23, 0x3a, 0xbf, 0xa4, 0xaa, 0x1d, 0x43, 0x38, 0xcb, - 0x64, 0x97, 0xe0, 0xfc, 0x92, 0x8a, 0xe6, 0x97, 0x21, 0xc9, 0xa2, 0x0b, 0x21, 0xc8, 0xad, 0x97, - 0xca, 0x95, 0x75, 0x7d, 0x73, 0x6b, 0x67, 0x6d, 0x73, 0xa3, 0xb4, 0xae, 0x2a, 0x1d, 0x99, 0x56, - 0xf9, 0xc4, 0xee, 0x9a, 0x56, 0x59, 0x51, 0x63, 0x61, 0xd9, 0x56, 0xa5, 0xb4, 0x53, 0x59, 0x51, - 0xe3, 0xf3, 0x06, 0x4c, 0x0f, 0xca, 0x33, 0x03, 0x4f, 0x46, 0x68, 0x8b, 0x63, 0x47, 0x6c, 0x31, - 0xe3, 0xea, 0xdb, 0xe2, 0xaf, 0x2a, 0x30, 0x35, 0x20, 0xd7, 0x0e, 0x7c, 0xc8, 0x33, 0x90, 0xe4, - 0x21, 0xca, 0xab, 0xcf, 0xa3, 0x03, 0x93, 0x36, 0x0b, 0xd8, 0xbe, 0x0a, 0xc4, 0x70, 0xe1, 0x0a, - 0x1c, 0x3f, 0xa2, 0x02, 0x53, 0x8a, 0x3e, 0x23, 0x5f, 0x56, 0x20, 0x7f, 0x14, 0x77, 0x44, 0xa2, - 0x88, 0x75, 0x25, 0x8a, 0x8b, 0xbd, 0x06, 0x9c, 0x3a, 0x7a, 0x0d, 0x7d, 0x56, 0xbc, 0xae, 0xc0, - 0x89, 0xc1, 0x8d, 0xca, 0x40, 0x1b, 0x9e, 0x86, 0xd1, 0x06, 0xf1, 0x0f, 0x1c, 0x59, 0xac, 0x1f, - 0x1e, 0x50, 0x02, 0xe8, 0x74, 0xaf, 0xaf, 0x04, 0x2a, 0x5c, 0x43, 0xe2, 0x47, 0x75, 0x1b, 0xdc, - 0x9a, 0x3e, 0x4b, 0x3f, 0x17, 0x83, 0x7b, 0x06, 0x92, 0x0f, 0x34, 0xf4, 0x7e, 0x00, 0xd3, 0x6e, - 0xb6, 0x7c, 0x5e, 0x90, 0x79, 0x7e, 0x4a, 0x33, 0x09, 0x3b, 0xfb, 0x34, 0xf7, 0xb4, 0xfc, 0x60, - 0x3e, 0xce, 0xe6, 0x81, 0x8b, 0x98, 0xc2, 0x85, 0x8e, 0xa1, 0x09, 0x66, 0x68, 0xe1, 0x88, 0x95, - 0xf6, 0xd5, 0xba, 0x27, 0x40, 0x35, 0x2c, 0x93, 0xd8, 0xbe, 0xee, 0xf9, 0x2e, 0xc1, 0x0d, 0xd3, - 0xae, 0xb3, 0x04, 0x9c, 0x2a, 0x26, 0xf7, 0xb1, 0xe5, 0x11, 0x6d, 0x82, 0x4f, 0x6f, 0xcb, 0x59, - 0x8a, 0x60, 0x55, 0xc6, 0x0d, 0x21, 0x46, 0xbb, 0x10, 0x7c, 0x3a, 0x40, 0xcc, 0x7f, 0x7e, 0x0c, - 0x32, 0xa1, 0xb6, 0x0e, 0x9d, 0x82, 0xec, 0x15, 0x7c, 0x0d, 0xeb, 0xb2, 0x55, 0xe7, 0x9e, 0xc8, - 0x50, 0xd9, 0x96, 0x68, 0xd7, 0x9f, 0x80, 0x69, 0xa6, 0xe2, 0xb4, 0x7c, 0xe2, 0xea, 0x86, 0x85, - 0x3d, 0x8f, 0x39, 0x2d, 0xc5, 0x54, 0x11, 0x9d, 0xdb, 0xa4, 0x53, 0xcb, 0x72, 0x06, 0x9d, 0x83, - 0x29, 0x86, 0x68, 0xb4, 0x2c, 0xdf, 0x6c, 0x5a, 0x44, 0xa7, 0x2f, 0x0f, 0x1e, 0x4b, 0xc4, 0x81, - 0x65, 0x93, 0x54, 0xa3, 0x2a, 0x14, 0xa8, 0x45, 0x1e, 0x5a, 0x85, 0xfb, 0x19, 0xac, 0x4e, 0x6c, - 0xe2, 0x62, 0x9f, 0xe8, 0xe4, 0x97, 0x5b, 0xd8, 0xf2, 0x74, 0x6c, 0xd7, 0xf4, 0x03, 0xec, 0x1d, - 0xe4, 0xa7, 0xc3, 0x04, 0x27, 0xa9, 0xee, 0xaa, 0x50, 0xad, 0x30, 0xcd, 0x92, 0x5d, 0xfb, 0x38, - 0xf6, 0x0e, 0x50, 0x11, 0x4e, 0x30, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xae, 0x1b, 0x07, 0xc4, 0xb8, - 0xaa, 0xb7, 0xfc, 0xfd, 0x0b, 0xf9, 0xfb, 0xc2, 0x0c, 0xcc, 0xc8, 0x6d, 0xa6, 0xb3, 0x4c, 0x55, - 0x76, 0xfd, 0xfd, 0x0b, 0x68, 0x1b, 0xb2, 0x74, 0x3f, 0x1a, 0xe6, 0x4b, 0x44, 0xdf, 0x77, 0x5c, - 0x56, 0x5c, 0x72, 0x03, 0x0e, 0x77, 0xc8, 0x89, 0x8b, 0x9b, 0x02, 0x50, 0x75, 0x6a, 0xa4, 0x98, - 0xdc, 0xde, 0xaa, 0x54, 0x56, 0xb4, 0x8c, 0x64, 0xb9, 0xe4, 0xb8, 0x34, 0xa6, 0xea, 0x4e, 0xe0, - 0xe3, 0x0c, 0x8f, 0xa9, 0xba, 0x23, 0x3d, 0x7c, 0x0e, 0xa6, 0x0c, 0x83, 0x2f, 0xdb, 0x34, 0x74, - 0xd1, 0xe5, 0x7b, 0x79, 0xb5, 0xcb, 0x5f, 0x86, 0xb1, 0xca, 0x15, 0x44, 0x98, 0x7b, 0xe8, 0x29, - 0xb8, 0xa7, 0xe3, 0xaf, 0x30, 0x70, 0xb2, 0x6f, 0x95, 0xbd, 0xd0, 0x73, 0x30, 0xd5, 0x6c, 0xf7, - 0x03, 0x51, 0xd7, 0x13, 0x9b, 0xed, 0x5e, 0xd8, 0x43, 0xec, 0xcd, 0xcd, 0x25, 0x06, 0xf6, 0x49, - 0x2d, 0x7f, 0x6f, 0x58, 0x3b, 0x34, 0x81, 0x4e, 0x83, 0x6a, 0x18, 0x3a, 0xb1, 0xf1, 0x9e, 0x45, - 0x74, 0xec, 0x12, 0x1b, 0x7b, 0xf9, 0xd9, 0xb0, 0x72, 0xce, 0x30, 0x2a, 0x6c, 0xb6, 0xc4, 0x26, - 0xd1, 0x63, 0x30, 0xe9, 0xec, 0x5d, 0x31, 0x78, 0x70, 0xe9, 0x4d, 0x97, 0xec, 0x9b, 0x2f, 0xe6, - 0x1f, 0x64, 0x6e, 0x9a, 0xa0, 0x13, 0x2c, 0xb4, 0xb6, 0x98, 0x18, 0x3d, 0x0a, 0xaa, 0xe1, 0x1d, - 0x60, 0xb7, 0xc9, 0xaa, 0xbb, 0xd7, 0xc4, 0x06, 0xc9, 0x3f, 0xc4, 0x55, 0xb9, 0x7c, 0x43, 0x8a, - 0xd1, 0x73, 0x30, 0xdd, 0xb2, 0x4d, 0xdb, 0x27, 0x6e, 0xd3, 0x25, 0xb4, 0x49, 0xe7, 0x27, 0x2d, - 0xff, 0x6f, 0x63, 0x47, 0xb4, 0xd9, 0xbb, 0x61, 0x6d, 0xbe, 0xbb, 0xda, 0x54, 0xab, 0x5f, 0x38, - 0x5f, 0x84, 0x6c, 0x78, 0xd3, 0x51, 0x1a, 0xf8, 0xb6, 0xab, 0x0a, 0xad, 0xa1, 0xcb, 0x9b, 0x2b, - 0xb4, 0xfa, 0xbd, 0x50, 0x51, 0x63, 0xb4, 0x0a, 0xaf, 0xaf, 0xed, 0x54, 0x74, 0x6d, 0x77, 0x63, - 0x67, 0xad, 0x5a, 0x51, 0xe3, 0x8f, 0xa5, 0x53, 0xef, 0x8c, 0xa9, 0x37, 0x6e, 0xdc, 0xb8, 0x11, - 0x9b, 0xff, 0x6e, 0x0c, 0x72, 0xdd, 0x9d, 0x2f, 0xfa, 0x28, 0xdc, 0x2b, 0x5f, 0x53, 0x3d, 0xe2, - 0xeb, 0xd7, 0x4d, 0x97, 0xc5, 0x61, 0x03, 0xf3, 0xde, 0x31, 0x70, 0xe1, 0xb4, 0xd0, 0xda, 0x26, - 0xfe, 0xb3, 0xa6, 0x4b, 0xa3, 0xac, 0x81, 0x7d, 0xb4, 0x0e, 0xb3, 0xb6, 0xa3, 0x7b, 0x3e, 0xb6, - 0x6b, 0xd8, 0xad, 0xe9, 0x9d, 0x0b, 0x02, 0x1d, 0x1b, 0x06, 0xf1, 0x3c, 0x87, 0x97, 0x80, 0x80, - 0xe5, 0x43, 0xb6, 0xb3, 0x2d, 0x94, 0x3b, 0xb9, 0xb1, 0x24, 0x54, 0x7b, 0xb6, 0x3b, 0x7e, 0xd4, - 0x76, 0xdf, 0x07, 0xe9, 0x06, 0x6e, 0xea, 0xc4, 0xf6, 0xdd, 0x36, 0xeb, 0xd7, 0x52, 0x5a, 0xaa, - 0x81, 0x9b, 0x15, 0x3a, 0xfe, 0xe9, 0xed, 0x41, 0xd8, 0x8f, 0xff, 0x12, 0x87, 0x6c, 0xb8, 0x67, - 0xa3, 0x2d, 0xb0, 0xc1, 0xf2, 0xb3, 0xc2, 0x8e, 0xef, 0x03, 0x77, 0xec, 0xf0, 0x16, 0x97, 0x69, - 0xe2, 0x2e, 0x8e, 0xf2, 0x4e, 0x4a, 0xe3, 0x48, 0x5a, 0x34, 0xe9, 0x81, 0x25, 0xbc, 0x3f, 0x4f, - 0x69, 0x62, 0x84, 0x56, 0x61, 0xf4, 0x8a, 0xc7, 0xb8, 0x47, 0x19, 0xf7, 0x83, 0x77, 0xe6, 0xbe, - 0xbc, 0xcd, 0xc8, 0xd3, 0x97, 0xb7, 0xf5, 0x8d, 0x4d, 0xad, 0x5a, 0x5a, 0xd7, 0x04, 0x1c, 0x9d, - 0x84, 0x84, 0x85, 0x5f, 0x6a, 0x77, 0xa7, 0x78, 0x26, 0x1a, 0xd6, 0xf1, 0x27, 0x21, 0x71, 0x9d, - 0xe0, 0xab, 0xdd, 0x89, 0x95, 0x89, 0x7e, 0x8a, 0xa1, 0x7f, 0x1a, 0x92, 0xcc, 0x5f, 0x08, 0x40, - 0x78, 0x4c, 0x1d, 0x41, 0x29, 0x48, 0x2c, 0x6f, 0x6a, 0x34, 0xfc, 0x55, 0xc8, 0x72, 0xa9, 0xbe, - 0xb5, 0x56, 0x59, 0xae, 0xa8, 0xb1, 0xf9, 0x73, 0x30, 0xca, 0x9d, 0x40, 0x8f, 0x46, 0xe0, 0x06, - 0x75, 0x44, 0x0c, 0x05, 0x87, 0x22, 0x67, 0x77, 0xab, 0xe5, 0x8a, 0xa6, 0xc6, 0xc2, 0xdb, 0xeb, - 0x41, 0x36, 0xdc, 0xae, 0xfd, 0x6c, 0x62, 0xea, 0xef, 0x15, 0xc8, 0x84, 0xda, 0x2f, 0x5a, 0xf8, - 0xb1, 0x65, 0x39, 0xd7, 0x75, 0x6c, 0x99, 0xd8, 0x13, 0x41, 0x01, 0x4c, 0x54, 0xa2, 0x92, 0x61, - 0x37, 0xed, 0x67, 0x62, 0xfc, 0x6b, 0x0a, 0xa8, 0xbd, 0xad, 0x5b, 0x8f, 0x81, 0xca, 0xcf, 0xd5, - 0xc0, 0x57, 0x15, 0xc8, 0x75, 0xf7, 0x6b, 0x3d, 0xe6, 0x9d, 0xfa, 0xb9, 0x9a, 0xf7, 0x25, 0x05, - 0xc6, 0xbb, 0xba, 0xb4, 0x5f, 0x28, 0xeb, 0x5e, 0x89, 0xc3, 0xd4, 0x00, 0x1c, 0x2a, 0x89, 0x76, - 0x96, 0x77, 0xd8, 0x1f, 0x19, 0xe6, 0x59, 0x8b, 0xb4, 0x5a, 0x6e, 0x61, 0xd7, 0x17, 0xdd, 0xef, - 0xa3, 0xa0, 0x9a, 0x35, 0x62, 0xfb, 0xe6, 0xbe, 0x49, 0x5c, 0xf1, 0x0a, 0xce, 0x7b, 0xdc, 0x89, - 0x8e, 0x9c, 0xbf, 0x85, 0x7f, 0x18, 0x50, 0xd3, 0xf1, 0x4c, 0xdf, 0xbc, 0x46, 0x74, 0xd3, 0x96, - 0xef, 0xeb, 0xb4, 0xe7, 0x4d, 0x68, 0xaa, 0x9c, 0x59, 0xb3, 0xfd, 0x40, 0xdb, 0x26, 0x75, 0xdc, - 0xa3, 0x4d, 0x73, 0x5f, 0x5c, 0x53, 0xe5, 0x4c, 0xa0, 0x7d, 0x0a, 0xb2, 0x35, 0xa7, 0x45, 0xdb, - 0x07, 0xae, 0x47, 0x53, 0xad, 0xa2, 0x65, 0xb8, 0x2c, 0x50, 0x11, 0xfd, 0x5d, 0xe7, 0xa2, 0x20, - 0xab, 0x65, 0xb8, 0x8c, 0xab, 0x3c, 0x02, 0x13, 0xb8, 0x5e, 0x77, 0x29, 0xb9, 0x24, 0xe2, 0x4d, - 0x6b, 0x2e, 0x10, 0x33, 0xc5, 0x99, 0xcb, 0x90, 0x92, 0x7e, 0xa0, 0xd5, 0x8c, 0x7a, 0x42, 0x6f, - 0xf2, 0xeb, 0x9a, 0xd8, 0x42, 0x5a, 0x4b, 0xd9, 0x72, 0xf2, 0x14, 0x64, 0x4d, 0x4f, 0xef, 0xdc, - 0x1b, 0xc6, 0xe6, 0x62, 0x0b, 0x29, 0x2d, 0x63, 0x7a, 0xc1, 0x45, 0xd1, 0xfc, 0xeb, 0x31, 0xc8, - 0x75, 0xdf, 0x7b, 0xa2, 0x15, 0x48, 0x59, 0x8e, 0x81, 0x59, 0x20, 0xf0, 0x4b, 0xf7, 0x85, 0x88, - 0xab, 0xd2, 0xc5, 0x75, 0xa1, 0xaf, 0x05, 0xc8, 0x99, 0x7f, 0x52, 0x20, 0x25, 0xc5, 0xe8, 0x04, - 0x24, 0x9a, 0xd8, 0x3f, 0x60, 0x74, 0xc9, 0x72, 0x4c, 0x55, 0x34, 0x36, 0xa6, 0x72, 0xaf, 0x89, - 0x6d, 0x16, 0x02, 0x42, 0x4e, 0xc7, 0x74, 0x5f, 0x2d, 0x82, 0x6b, 0xac, 0x1d, 0x76, 0x1a, 0x0d, - 0x62, 0xfb, 0x9e, 0xdc, 0x57, 0x21, 0x5f, 0x16, 0x62, 0xf4, 0x38, 0x4c, 0xfa, 0x2e, 0x36, 0xad, - 0x2e, 0xdd, 0x04, 0xd3, 0x55, 0xe5, 0x44, 0xa0, 0x5c, 0x84, 0x93, 0x92, 0xb7, 0x46, 0x7c, 0x6c, - 0x1c, 0x90, 0x5a, 0x07, 0x34, 0xca, 0x2e, 0xd5, 0xee, 0x15, 0x0a, 0x2b, 0x62, 0x5e, 0x62, 0xe7, - 0xbf, 0xaf, 0xc0, 0xa4, 0x6c, 0xe0, 0x6b, 0x81, 0xb3, 0xaa, 0x00, 0xd8, 0xb6, 0x1d, 0x3f, 0xec, - 0xae, 0xfe, 0x50, 0xee, 0xc3, 0x2d, 0x96, 0x02, 0x90, 0x16, 0x22, 0x98, 0x69, 0x00, 0x74, 0x66, - 0x8e, 0x74, 0xdb, 0x2c, 0x64, 0xc4, 0xa5, 0x36, 0xfb, 0x65, 0x84, 0xbf, 0xf5, 0x01, 0x17, 0xd1, - 0x4e, 0x1f, 0x4d, 0x43, 0x72, 0x8f, 0xd4, 0x4d, 0x5b, 0x5c, 0xb5, 0xf1, 0x81, 0xbc, 0xc0, 0x4b, - 0x04, 0x17, 0x78, 0xe5, 0x4f, 0xc1, 0x94, 0xe1, 0x34, 0x7a, 0xcd, 0x2d, 0xab, 0x3d, 0x6f, 0x9e, - 0xde, 0xc7, 0x95, 0x17, 0xa0, 0xd3, 0x9d, 0x7d, 0x45, 0x51, 0xbe, 0x1a, 0x8b, 0xaf, 0x6e, 0x95, - 0xbf, 0x1e, 0x9b, 0x59, 0xe5, 0xd0, 0x2d, 0xb9, 0x52, 0x8d, 0xec, 0x5b, 0xc4, 0xa0, 0xd6, 0xc3, - 0x8f, 0x1e, 0x86, 0x8f, 0xd4, 0x4d, 0xff, 0xa0, 0xb5, 0xb7, 0x68, 0x38, 0x8d, 0xd3, 0x75, 0xa7, - 0xee, 0x74, 0x7e, 0x0c, 0xa2, 0x23, 0x36, 0x60, 0xff, 0x89, 0x1f, 0x84, 0xd2, 0x81, 0x74, 0x26, - 0xf2, 0xd7, 0xa3, 0xe2, 0x06, 0x4c, 0x09, 0x65, 0x9d, 0xdd, 0x48, 0xf3, 0x3e, 0x1c, 0xdd, 0xf1, - 0x56, 0x22, 0xff, 0xcd, 0xb7, 0x59, 0xa5, 0xd3, 0x26, 0x05, 0x94, 0xce, 0xf1, 0x4e, 0xbd, 0xa8, - 0xc1, 0x3d, 0x5d, 0x7c, 0xfc, 0x68, 0x12, 0x37, 0x82, 0xf1, 0xbb, 0x82, 0x71, 0x2a, 0xc4, 0xb8, - 0x2d, 0xa0, 0xc5, 0x65, 0x18, 0x3f, 0x0e, 0xd7, 0x3f, 0x08, 0xae, 0x2c, 0x09, 0x93, 0xac, 0xc2, - 0x04, 0x23, 0x31, 0x5a, 0x9e, 0xef, 0x34, 0x58, 0xde, 0xbb, 0x33, 0xcd, 0x3f, 0xbe, 0xcd, 0xcf, - 0x4a, 0x8e, 0xc2, 0x96, 0x03, 0x54, 0xb1, 0x08, 0xec, 0x12, 0xbe, 0x46, 0x0c, 0x2b, 0x82, 0xe1, - 0x4d, 0x61, 0x48, 0xa0, 0x5f, 0xfc, 0x24, 0x4c, 0xd3, 0xff, 0x59, 0x5a, 0x0a, 0x5b, 0x12, 0x7d, - 0x07, 0x93, 0xff, 0xfe, 0xcb, 0xfc, 0x38, 0x4e, 0x05, 0x04, 0x21, 0x9b, 0x42, 0xbb, 0x58, 0x27, - 0xbe, 0x4f, 0x5c, 0x4f, 0xc7, 0xd6, 0x20, 0xf3, 0x42, 0x6f, 0xb0, 0xf9, 0x2f, 0xbe, 0xdb, 0xbd, - 0x8b, 0xab, 0x1c, 0x59, 0xb2, 0xac, 0xe2, 0x2e, 0xdc, 0x3b, 0x20, 0x2a, 0x86, 0xe0, 0x7c, 0x45, - 0x70, 0x4e, 0xf7, 0x45, 0x06, 0xa5, 0xdd, 0x02, 0x29, 0x0f, 0xf6, 0x72, 0x08, 0xce, 0x2f, 0x09, - 0x4e, 0x24, 0xb0, 0x72, 0x4b, 0x29, 0xe3, 0x65, 0x98, 0xbc, 0x46, 0xdc, 0x3d, 0xc7, 0x13, 0x17, - 0x07, 0x43, 0xd0, 0xbd, 0x2a, 0xe8, 0x26, 0x04, 0x90, 0x5d, 0x23, 0x50, 0xae, 0xa7, 0x20, 0xb5, - 0x8f, 0x0d, 0x32, 0x04, 0xc5, 0x97, 0x05, 0xc5, 0x18, 0xd5, 0xa7, 0xd0, 0x12, 0x64, 0xeb, 0x8e, - 0xa8, 0x4c, 0xd1, 0xf0, 0xd7, 0x04, 0x3c, 0x23, 0x31, 0x82, 0xa2, 0xe9, 0x34, 0x5b, 0x16, 0x2d, - 0x5b, 0xd1, 0x14, 0x7f, 0x28, 0x29, 0x24, 0x46, 0x50, 0x1c, 0xc3, 0xad, 0x5f, 0x91, 0x14, 0x5e, - 0xc8, 0x9f, 0xcf, 0x40, 0xc6, 0xb1, 0xad, 0xb6, 0x63, 0x0f, 0x63, 0xc4, 0x1f, 0x09, 0x06, 0x10, - 0x10, 0x4a, 0x70, 0x11, 0xd2, 0xc3, 0x6e, 0xc4, 0x1f, 0xbf, 0x2b, 0x8f, 0x87, 0xdc, 0x81, 0x55, - 0x98, 0x90, 0x09, 0xca, 0x74, 0xec, 0x21, 0x28, 0xfe, 0x44, 0x50, 0xe4, 0x42, 0x30, 0xb1, 0x0c, - 0x9f, 0x78, 0x7e, 0x9d, 0x0c, 0x43, 0xf2, 0xba, 0x5c, 0x86, 0x80, 0x08, 0x57, 0xee, 0x11, 0xdb, - 0x38, 0x18, 0x8e, 0xe1, 0x6b, 0xd2, 0x95, 0x12, 0x43, 0x29, 0x96, 0x61, 0xbc, 0x81, 0x5d, 0xef, - 0x00, 0x5b, 0x43, 0x6d, 0xc7, 0x9f, 0x0a, 0x8e, 0x6c, 0x00, 0x12, 0x1e, 0x69, 0xd9, 0xc7, 0xa1, - 0xf9, 0xba, 0xf4, 0x48, 0x08, 0x26, 0x8e, 0x9e, 0xe7, 0xb3, 0xbb, 0x99, 0xe3, 0xb0, 0xfd, 0x99, - 0x3c, 0x7a, 0x1c, 0x5b, 0x0d, 0x33, 0x5e, 0x84, 0xb4, 0x67, 0xbe, 0x34, 0x14, 0xcd, 0x9f, 0xcb, - 0x9d, 0x66, 0x00, 0x0a, 0x7e, 0x1e, 0x4e, 0x0e, 0x2c, 0x13, 0x43, 0x90, 0xfd, 0x85, 0x20, 0x3b, - 0x31, 0xa0, 0x54, 0x88, 0x94, 0x70, 0x5c, 0xca, 0xbf, 0x94, 0x29, 0x81, 0xf4, 0x70, 0x6d, 0xd1, - 0xce, 0xde, 0xc3, 0xfb, 0xc7, 0xf3, 0xda, 0x5f, 0x49, 0xaf, 0x71, 0x6c, 0x97, 0xd7, 0x76, 0xe0, - 0x84, 0x60, 0x3c, 0xde, 0xbe, 0x7e, 0x43, 0x26, 0x56, 0x8e, 0xde, 0xed, 0xde, 0xdd, 0x4f, 0xc1, - 0x4c, 0xe0, 0x4e, 0xd9, 0x94, 0x7a, 0x7a, 0x03, 0x37, 0x87, 0x60, 0xfe, 0xa6, 0x60, 0x96, 0x19, - 0x3f, 0xe8, 0x6a, 0xbd, 0x2a, 0x6e, 0x52, 0xf2, 0xe7, 0x20, 0x2f, 0xc9, 0x5b, 0xb6, 0x4b, 0x0c, - 0xa7, 0x6e, 0x9b, 0x2f, 0x91, 0xda, 0x10, 0xd4, 0x7f, 0xdd, 0xb3, 0x55, 0xbb, 0x21, 0x38, 0x65, - 0x5e, 0x03, 0x35, 0xe8, 0x55, 0x74, 0xb3, 0xd1, 0x74, 0x5c, 0x3f, 0x82, 0xf1, 0x6f, 0xe4, 0x4e, - 0x05, 0xb8, 0x35, 0x06, 0x2b, 0x56, 0x20, 0xc7, 0x86, 0xc3, 0x86, 0xe4, 0xdf, 0x0a, 0xa2, 0xf1, - 0x0e, 0x4a, 0x24, 0x0e, 0xc3, 0x69, 0x34, 0xb1, 0x3b, 0x4c, 0xfe, 0xfb, 0x96, 0x4c, 0x1c, 0x02, - 0x22, 0x12, 0x87, 0xdf, 0x6e, 0x12, 0x5a, 0xed, 0x87, 0x60, 0x78, 0x43, 0x26, 0x0e, 0x89, 0x11, - 0x14, 0xb2, 0x61, 0x18, 0x82, 0xe2, 0xef, 0x24, 0x85, 0xc4, 0x50, 0x8a, 0x4f, 0x74, 0x0a, 0xad, - 0x4b, 0xea, 0xa6, 0xe7, 0xbb, 0xbc, 0x15, 0xbe, 0x33, 0xd5, 0xb7, 0xdf, 0xed, 0x6e, 0xc2, 0xb4, - 0x10, 0xb4, 0x78, 0x19, 0x26, 0x7a, 0x5a, 0x0c, 0x14, 0xf5, 0x8b, 0x7e, 0xfe, 0xd3, 0xef, 0x8b, - 0x64, 0xd4, 0xdd, 0x61, 0x14, 0xd7, 0xe9, 0xbe, 0x77, 0xf7, 0x01, 0xd1, 0x64, 0x2f, 0xbf, 0x1f, - 0x6c, 0x7d, 0x57, 0x1b, 0x50, 0xbc, 0x04, 0xe3, 0x5d, 0x3d, 0x40, 0x34, 0xd5, 0xaf, 0x08, 0xaa, - 0x6c, 0xb8, 0x05, 0x28, 0x9e, 0x83, 0x04, 0xad, 0xe7, 0xd1, 0xf0, 0x5f, 0x15, 0x70, 0xa6, 0x5e, - 0xfc, 0x18, 0xa4, 0x64, 0x1d, 0x8f, 0x86, 0xfe, 0x9a, 0x80, 0x06, 0x10, 0x0a, 0x97, 0x35, 0x3c, - 0x1a, 0xfe, 0x59, 0x09, 0x97, 0x10, 0x0a, 0x1f, 0xde, 0x85, 0xdf, 0xf9, 0x7c, 0x42, 0xe4, 0x61, - 0xe9, 0xbb, 0x8b, 0x30, 0x26, 0x8a, 0x77, 0x34, 0xfa, 0x73, 0xe2, 0xe1, 0x12, 0x51, 0x7c, 0x12, - 0x92, 0x43, 0x3a, 0xfc, 0x37, 0x04, 0x94, 0xeb, 0x17, 0x97, 0x21, 0x13, 0x2a, 0xd8, 0xd1, 0xf0, - 0xdf, 0x14, 0xf0, 0x30, 0x8a, 0x9a, 0x2e, 0x0a, 0x76, 0x34, 0xc1, 0x6f, 0x49, 0xd3, 0x05, 0x82, - 0xba, 0x4d, 0xd6, 0xea, 0x68, 0xf4, 0x6f, 0x4b, 0xaf, 0x4b, 0x48, 0xf1, 0x19, 0x48, 0x07, 0xf9, - 0x37, 0x1a, 0xff, 0x3b, 0x02, 0xdf, 0xc1, 0x50, 0x0f, 0x84, 0xf2, 0x7f, 0x34, 0xc5, 0xef, 0x4a, - 0x0f, 0x84, 0x50, 0xf4, 0x18, 0xf5, 0xd6, 0xf4, 0x68, 0xa6, 0xdf, 0x93, 0xc7, 0xa8, 0xa7, 0xa4, - 0xd3, 0xdd, 0x64, 0x69, 0x30, 0x9a, 0xe2, 0xf7, 0xe5, 0x6e, 0x32, 0x7d, 0x6a, 0x46, 0x6f, 0x91, - 0x8c, 0xe6, 0xf8, 0x03, 0x69, 0x46, 0x4f, 0x8d, 0x2c, 0x6e, 0x01, 0xea, 0x2f, 0x90, 0xd1, 0x7c, - 0x5f, 0x10, 0x7c, 0x93, 0x7d, 0xf5, 0xb1, 0xf8, 0x2c, 0x9c, 0x18, 0x5c, 0x1c, 0xa3, 0x59, 0xbf, - 0xf8, 0x7e, 0xcf, 0xeb, 0x4c, 0xb8, 0x36, 0x16, 0x77, 0x3a, 0x59, 0x36, 0x5c, 0x18, 0xa3, 0x69, - 0x5f, 0x79, 0xbf, 0x3b, 0xd1, 0x86, 0xeb, 0x62, 0xb1, 0x04, 0xd0, 0xa9, 0x49, 0xd1, 0x5c, 0xaf, - 0x0a, 0xae, 0x10, 0x88, 0x1e, 0x0d, 0x51, 0x92, 0xa2, 0xf1, 0x5f, 0x96, 0x47, 0x43, 0x20, 0xe8, - 0xd1, 0x90, 0xd5, 0x28, 0x1a, 0xfd, 0x9a, 0x3c, 0x1a, 0x12, 0x52, 0xbc, 0x08, 0x29, 0xbb, 0x65, - 0x59, 0x34, 0xb6, 0xd0, 0x9d, 0x3f, 0xb2, 0xc9, 0xff, 0xf0, 0x03, 0x01, 0x96, 0x80, 0xe2, 0x39, - 0x48, 0x92, 0xc6, 0x1e, 0xa9, 0x45, 0x21, 0xff, 0xfd, 0x03, 0x99, 0x4f, 0xa8, 0x76, 0xf1, 0x19, - 0x00, 0xfe, 0x32, 0xcd, 0x7e, 0x63, 0x89, 0xc0, 0xfe, 0xc7, 0x07, 0xe2, 0xf7, 0xfb, 0x0e, 0xa4, - 0x43, 0xc0, 0xbf, 0x06, 0xb8, 0x33, 0xc1, 0xbb, 0xdd, 0x04, 0xec, 0x05, 0xfc, 0x29, 0x18, 0xbb, - 0xe2, 0x39, 0xb6, 0x8f, 0xeb, 0x51, 0xe8, 0xff, 0x14, 0x68, 0xa9, 0x4f, 0x1d, 0xd6, 0x70, 0x5c, - 0xe2, 0xe3, 0xba, 0x17, 0x85, 0xfd, 0x2f, 0x81, 0x0d, 0x00, 0x14, 0x6c, 0x60, 0xcf, 0x1f, 0x66, - 0xdd, 0xff, 0x2d, 0xc1, 0x12, 0x40, 0x8d, 0xa6, 0xff, 0x5f, 0x25, 0xed, 0x28, 0xec, 0x7b, 0xd2, - 0x68, 0xa1, 0x5f, 0xfc, 0x18, 0xa4, 0xe9, 0xbf, 0xfc, 0x9b, 0x96, 0x08, 0xf0, 0xff, 0x08, 0x70, - 0x07, 0x41, 0x9f, 0xec, 0xf9, 0x35, 0xdf, 0x8c, 0x76, 0xf6, 0xff, 0x8a, 0x9d, 0x96, 0xfa, 0xc5, - 0x12, 0x64, 0x3c, 0xbf, 0x56, 0x6b, 0x89, 0x8e, 0x26, 0x02, 0xfe, 0xa3, 0x0f, 0x82, 0x97, 0xdc, - 0x00, 0x53, 0x3e, 0x35, 0xf8, 0xbe, 0x0e, 0x56, 0x9d, 0x55, 0x87, 0xdf, 0xd4, 0xc1, 0x1b, 0x13, - 0x70, 0xca, 0x70, 0x1a, 0x7b, 0x8e, 0x77, 0x3a, 0x94, 0x86, 0x4e, 0x4b, 0xd7, 0x89, 0x9b, 0xb6, - 0xc0, 0x95, 0x33, 0xc7, 0xbb, 0xa2, 0x9b, 0xff, 0xe1, 0x38, 0xa4, 0x96, 0xb1, 0xe7, 0xe3, 0xeb, - 0xb8, 0x8d, 0x1e, 0x82, 0xd4, 0x9a, 0xed, 0x9f, 0x3d, 0xb3, 0xe5, 0xbb, 0xec, 0x07, 0x9a, 0x78, - 0x39, 0x7d, 0xfb, 0xe6, 0x6c, 0xd2, 0xa4, 0x32, 0x2d, 0x98, 0x42, 0x0f, 0x40, 0x92, 0xfd, 0xcf, - 0x2e, 0x2a, 0xe3, 0xe5, 0xf1, 0x37, 0x6f, 0xce, 0x8e, 0x74, 0xf4, 0xf8, 0x1c, 0x7a, 0x1e, 0x32, - 0xd5, 0xf6, 0xae, 0x69, 0xfb, 0xe7, 0x97, 0x28, 0x1d, 0x5d, 0x7c, 0xa2, 0xfc, 0xe4, 0xed, 0x9b, - 0xb3, 0x67, 0x8f, 0x34, 0x90, 0x96, 0xc4, 0xce, 0xc2, 0x24, 0x9a, 0x7d, 0xd7, 0x17, 0xe6, 0x42, - 0xcf, 0x42, 0x4a, 0x0e, 0xf9, 0x85, 0x7f, 0xf9, 0xa2, 0x30, 0xe1, 0xae, 0xb8, 0x03, 0x32, 0xf4, - 0x4b, 0x90, 0xad, 0xb6, 0x2f, 0x59, 0x0e, 0x16, 0x3e, 0x48, 0xce, 0x29, 0x0b, 0xb1, 0xf2, 0x85, - 0xdb, 0x37, 0x67, 0x97, 0x86, 0x26, 0x16, 0x70, 0xc6, 0xdc, 0xc5, 0x86, 0x5e, 0x80, 0x74, 0x30, - 0x66, 0x3f, 0x29, 0xc4, 0xca, 0x1f, 0x15, 0x76, 0xdf, 0x1d, 0x7d, 0x87, 0x2e, 0x64, 0x39, 0x77, - 0xf7, 0xd8, 0x9c, 0xb2, 0xa0, 0xdc, 0x8d, 0xe5, 0xc2, 0x27, 0x5d, 0x6c, 0x21, 0xcb, 0xcf, 0x2f, - 0xb1, 0xdf, 0x30, 0x94, 0xbb, 0xb5, 0x5c, 0xd0, 0x77, 0xe8, 0xd0, 0x65, 0x18, 0xab, 0xb6, 0xcb, - 0x6d, 0x9f, 0x78, 0xec, 0x63, 0x97, 0x6c, 0xf9, 0x89, 0xdb, 0x37, 0x67, 0x3f, 0x3c, 0x24, 0x2b, - 0xc3, 0x69, 0x92, 0x00, 0xcd, 0x41, 0x66, 0xc3, 0x71, 0x1b, 0xd8, 0xe2, 0x7c, 0xc0, 0x7f, 0x93, - 0x09, 0x89, 0xd0, 0x2e, 0x5d, 0x09, 0xdf, 0x6d, 0x8f, 0x7d, 0xa9, 0xff, 0x13, 0xc4, 0x64, 0x87, - 0x09, 0x99, 0x90, 0xac, 0xb6, 0xab, 0xb8, 0x99, 0xcf, 0xb2, 0x1f, 0x0c, 0xee, 0x5f, 0x0c, 0x10, - 0xf2, 0x6c, 0x2d, 0xb2, 0x79, 0xf6, 0x51, 0x42, 0x79, 0xe9, 0xf6, 0xcd, 0xd9, 0x27, 0x86, 0x7e, - 0x62, 0x15, 0x37, 0xd9, 0xe3, 0xf8, 0x13, 0xd0, 0xb7, 0x14, 0x7a, 0xb0, 0xf8, 0x8d, 0x2b, 0x7d, - 0xe2, 0x38, 0x7b, 0xe2, 0x03, 0x03, 0x9f, 0x18, 0x68, 0xf1, 0xe7, 0xda, 0x9f, 0x79, 0xeb, 0x18, - 0x2b, 0xe5, 0x6f, 0x35, 0xf4, 0xd1, 0xbf, 0xfe, 0xd6, 0x5d, 0x1f, 0xda, 0xc0, 0x02, 0xf4, 0xb2, - 0x02, 0xe3, 0xd5, 0xf6, 0x86, 0xa8, 0xaf, 0xd4, 0xf2, 0x9c, 0xf8, 0x9e, 0x7b, 0x90, 0xe5, 0x21, - 0x3d, 0x6e, 0xfb, 0xf9, 0xcf, 0xbc, 0x35, 0x7b, 0x66, 0x68, 0x23, 0x58, 0x0a, 0x62, 0x36, 0x74, - 0x3f, 0x13, 0x7d, 0x96, 0x59, 0x51, 0xa1, 0xb5, 0xba, 0x46, 0x6a, 0xd4, 0x8a, 0x89, 0x3b, 0x58, - 0x11, 0xd2, 0xe3, 0x56, 0x14, 0x69, 0xd4, 0xdf, 0xbd, 0x25, 0x21, 0x3e, 0xb4, 0x09, 0xa3, 0xdc, - 0xc3, 0xec, 0x43, 0xab, 0xf4, 0x31, 0xc3, 0xb0, 0xb3, 0x39, 0x9a, 0xa0, 0x99, 0xb9, 0x00, 0xd0, - 0x89, 0x31, 0xa4, 0x42, 0xfc, 0x2a, 0x69, 0x8b, 0x0f, 0xea, 0xe8, 0xbf, 0x68, 0xba, 0xf3, 0xc1, - 0xa8, 0xb2, 0x90, 0x10, 0x5f, 0x81, 0x16, 0x63, 0x17, 0x94, 0x99, 0xa7, 0x41, 0xed, 0x8d, 0x95, - 0x63, 0xe1, 0x35, 0x40, 0xfd, 0x3b, 0x16, 0x66, 0x48, 0x72, 0x86, 0x87, 0xc3, 0x0c, 0x99, 0x33, - 0x6a, 0xc7, 0xe7, 0xcf, 0x9a, 0x96, 0xe7, 0xd8, 0x7d, 0x9c, 0xbd, 0xfe, 0xff, 0xc9, 0x38, 0xe7, - 0x0b, 0x30, 0xca, 0x85, 0x74, 0x2d, 0x6b, 0xac, 0x7c, 0xb0, 0x2a, 0xa7, 0xf1, 0x41, 0x79, 0xfd, - 0xcd, 0x5b, 0x85, 0x91, 0xef, 0xdd, 0x2a, 0x8c, 0xfc, 0xf3, 0xad, 0xc2, 0xc8, 0x0f, 0x6e, 0x15, - 0x94, 0x77, 0x6e, 0x15, 0x94, 0xf7, 0x6e, 0x15, 0x94, 0x1f, 0xdf, 0x2a, 0x28, 0x37, 0x0e, 0x0b, - 0xca, 0xd7, 0x0e, 0x0b, 0xca, 0x37, 0x0e, 0x0b, 0xca, 0xb7, 0x0f, 0x0b, 0xca, 0x77, 0x0e, 0x0b, - 0xca, 0x9b, 0x87, 0x85, 0x91, 0xef, 0x1d, 0x16, 0x94, 0x1f, 0x1c, 0x16, 0x94, 0x77, 0x0e, 0x0b, - 0x23, 0xef, 0x1d, 0x16, 0x94, 0x1f, 0x1f, 0x16, 0x46, 0x6e, 0xfc, 0x6b, 0x61, 0xe4, 0xff, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x46, 0x02, 0x35, 0x11, 0x33, 0x35, 0x00, 0x00, + // 4125 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0x3f, 0x17, 0x1f, 0x24, 0x70, 0x00, 0x82, 0xcb, 0x4b, 0x5a, 0x82, 0xe8, 0x18, 0xa4, 0xe8, + 0x2f, 0xda, 0x4e, 0x28, 0x8f, 0xbe, 0x2c, 0x43, 0x89, 0x3d, 0x00, 0x09, 0x31, 0xd0, 0x9f, 0x20, + 0x90, 0x25, 0x19, 0x49, 0xfe, 0x77, 0x66, 0x67, 0xb9, 0xb8, 0x04, 0x57, 0x5a, 0xec, 0x22, 0xbb, + 0x0b, 0xc9, 0xf0, 0x93, 0x1a, 0xb7, 0xcd, 0xa4, 0x9d, 0x7e, 0x77, 0xa6, 0x89, 0xeb, 0xb8, 0x6d, + 0x66, 0x5a, 0xa7, 0x49, 0x3f, 0x92, 0xb6, 0x71, 0x33, 0x7d, 0xca, 0x4b, 0x5a, 0x3f, 0x75, 0x92, + 0xb7, 0x3e, 0x74, 0x64, 0x8b, 0xf1, 0x4c, 0x9d, 0xd6, 0x6d, 0xdd, 0xc6, 0x33, 0xcd, 0xc8, 0x2f, + 0x9d, 0xfb, 0xb5, 0x58, 0x7c, 0x90, 0x0b, 0x2a, 0xe3, 0xe4, 0x89, 0xd8, 0x73, 0xcf, 0xef, 0xb7, + 0xe7, 0x9e, 0x7b, 0xee, 0x39, 0x67, 0xef, 0x2e, 0xe1, 0x87, 0xe7, 0x60, 0xa1, 0x61, 0xdb, 0x0d, + 0x13, 0x9f, 0x6a, 0x39, 0xb6, 0x67, 0xef, 0xb4, 0x77, 0x4f, 0xd5, 0xb1, 0xab, 0x3b, 0x46, 0xcb, + 0xb3, 0x9d, 0x65, 0x2a, 0x43, 0x53, 0x4c, 0x63, 0x59, 0x68, 0x2c, 0x56, 0x60, 0xfa, 0x92, 0x61, + 0xe2, 0x55, 0x5f, 0x71, 0x13, 0x7b, 0xe8, 0x02, 0xc4, 0x76, 0x0d, 0x13, 0x67, 0xa5, 0x85, 0xe8, + 0x52, 0xea, 0xf4, 0x23, 0xcb, 0x7d, 0xa0, 0xe5, 0x5e, 0x44, 0x8d, 0x88, 0x15, 0x8a, 0x58, 0x7c, + 0x27, 0x06, 0x33, 0x43, 0x46, 0x11, 0x82, 0x98, 0xa5, 0x35, 0x09, 0xa3, 0xb4, 0x94, 0x54, 0xe8, + 0x6f, 0x94, 0x85, 0x89, 0x96, 0xa6, 0xdf, 0xd0, 0x1a, 0x38, 0x1b, 0xa1, 0x62, 0x71, 0x89, 0x72, + 0x00, 0x75, 0xdc, 0xc2, 0x56, 0x1d, 0x5b, 0x7a, 0x27, 0x1b, 0x5d, 0x88, 0x2e, 0x25, 0x95, 0x80, + 0x04, 0x3d, 0x05, 0xd3, 0xad, 0xf6, 0x8e, 0x69, 0xe8, 0x6a, 0x40, 0x0d, 0x16, 0xa2, 0x4b, 0x71, + 0x45, 0x66, 0x03, 0xab, 0x5d, 0xe5, 0xc7, 0x61, 0xea, 0x16, 0xd6, 0x6e, 0x04, 0x55, 0x53, 0x54, + 0x35, 0x43, 0xc4, 0x01, 0xc5, 0x15, 0x48, 0x37, 0xb1, 0xeb, 0x6a, 0x0d, 0xac, 0x7a, 0x9d, 0x16, + 0xce, 0xc6, 0xe8, 0xec, 0x17, 0x06, 0x66, 0xdf, 0x3f, 0xf3, 0x14, 0x47, 0x6d, 0x75, 0x5a, 0x18, + 0x15, 0x20, 0x89, 0xad, 0x76, 0x93, 0x31, 0xc4, 0x0f, 0xf0, 0x5f, 0xc9, 0x6a, 0x37, 0xfb, 0x59, + 0x12, 0x04, 0xc6, 0x29, 0x26, 0x5c, 0xec, 0xdc, 0x34, 0x74, 0x9c, 0x1d, 0xa7, 0x04, 0x8f, 0x0f, + 0x10, 0x6c, 0xb2, 0xf1, 0x7e, 0x0e, 0x81, 0x43, 0x2b, 0x90, 0xc4, 0x2f, 0x7a, 0xd8, 0x72, 0x0d, + 0xdb, 0xca, 0x4e, 0x50, 0x92, 0x47, 0x87, 0xac, 0x22, 0x36, 0xeb, 0xfd, 0x14, 0x5d, 0x1c, 0x3a, + 0x0f, 0x13, 0x76, 0xcb, 0x33, 0x6c, 0xcb, 0xcd, 0x26, 0x16, 0xa4, 0xa5, 0xd4, 0xe9, 0x8f, 0x0d, + 0x0d, 0x84, 0x2a, 0xd3, 0x51, 0x84, 0x32, 0x2a, 0x83, 0xec, 0xda, 0x6d, 0x47, 0xc7, 0xaa, 0x6e, + 0xd7, 0xb1, 0x6a, 0x58, 0xbb, 0x76, 0x36, 0x49, 0x09, 0xe6, 0x07, 0x27, 0x42, 0x15, 0x57, 0xec, + 0x3a, 0x2e, 0x5b, 0xbb, 0xb6, 0x92, 0x71, 0x7b, 0xae, 0xd1, 0x31, 0x18, 0x77, 0x3b, 0x96, 0xa7, + 0xbd, 0x98, 0x4d, 0xd3, 0x08, 0xe1, 0x57, 0x8b, 0xff, 0x1b, 0x87, 0xa9, 0x51, 0x42, 0xec, 0x22, + 0xc4, 0x77, 0xc9, 0x2c, 0xb3, 0x91, 0xa3, 0xf8, 0x80, 0x61, 0x7a, 0x9d, 0x38, 0x7e, 0x9f, 0x4e, + 0x2c, 0x40, 0xca, 0xc2, 0xae, 0x87, 0xeb, 0x2c, 0x22, 0xa2, 0x23, 0xc6, 0x14, 0x30, 0xd0, 0x60, + 0x48, 0xc5, 0xee, 0x2b, 0xa4, 0xae, 0xc2, 0x94, 0x6f, 0x92, 0xea, 0x68, 0x56, 0x43, 0xc4, 0xe6, + 0xa9, 0x30, 0x4b, 0x96, 0x4b, 0x02, 0xa7, 0x10, 0x98, 0x92, 0xc1, 0x3d, 0xd7, 0x68, 0x15, 0xc0, + 0xb6, 0xb0, 0xbd, 0xab, 0xd6, 0xb1, 0x6e, 0x66, 0x13, 0x07, 0x78, 0xa9, 0x4a, 0x54, 0x06, 0xbc, + 0x64, 0x33, 0xa9, 0x6e, 0xa2, 0x67, 0xbb, 0xa1, 0x36, 0x71, 0x40, 0xa4, 0x54, 0xd8, 0x26, 0x1b, + 0x88, 0xb6, 0x6d, 0xc8, 0x38, 0x98, 0xc4, 0x3d, 0xae, 0xf3, 0x99, 0x25, 0xa9, 0x11, 0xcb, 0xa1, + 0x33, 0x53, 0x38, 0x8c, 0x4d, 0x6c, 0xd2, 0x09, 0x5e, 0xa2, 0x87, 0xc1, 0x17, 0xa8, 0x34, 0xac, + 0x80, 0x66, 0xa1, 0xb4, 0x10, 0x6e, 0x68, 0x4d, 0x3c, 0x77, 0x01, 0x32, 0xbd, 0xee, 0x41, 0xb3, + 0x10, 0x77, 0x3d, 0xcd, 0xf1, 0x68, 0x14, 0xc6, 0x15, 0x76, 0x81, 0x64, 0x88, 0x62, 0xab, 0x4e, + 0xb3, 0x5c, 0x5c, 0x21, 0x3f, 0xe7, 0x9e, 0x81, 0xc9, 0x9e, 0xdb, 0x8f, 0x0a, 0x5c, 0xfc, 0xd2, + 0x38, 0xcc, 0x0e, 0x8b, 0xb9, 0xa1, 0xe1, 0x7f, 0x0c, 0xc6, 0xad, 0x76, 0x73, 0x07, 0x3b, 0xd9, + 0x28, 0x65, 0xe0, 0x57, 0xa8, 0x00, 0x71, 0x53, 0xdb, 0xc1, 0x66, 0x36, 0xb6, 0x20, 0x2d, 0x65, + 0x4e, 0x3f, 0x35, 0x52, 0x54, 0x2f, 0xaf, 0x13, 0x88, 0xc2, 0x90, 0xe8, 0x39, 0x88, 0xf1, 0x14, + 0x47, 0x18, 0x9e, 0x1c, 0x8d, 0x81, 0xc4, 0xa2, 0x42, 0x71, 0xe8, 0x41, 0x48, 0x92, 0xbf, 0xcc, + 0xb7, 0xe3, 0xd4, 0xe6, 0x04, 0x11, 0x10, 0xbf, 0xa2, 0x39, 0x48, 0xd0, 0x30, 0xab, 0x63, 0x51, + 0x1a, 0xfc, 0x6b, 0xb2, 0x30, 0x75, 0xbc, 0xab, 0xb5, 0x4d, 0x4f, 0xbd, 0xa9, 0x99, 0x6d, 0x4c, + 0x03, 0x26, 0xa9, 0xa4, 0xb9, 0xf0, 0xb3, 0x44, 0x86, 0xe6, 0x21, 0xc5, 0xa2, 0xd2, 0xb0, 0xea, + 0xf8, 0x45, 0x9a, 0x7d, 0xe2, 0x0a, 0x0b, 0xd4, 0x32, 0x91, 0x90, 0xdb, 0x5f, 0x77, 0x6d, 0x4b, + 0x2c, 0x2d, 0xbd, 0x05, 0x11, 0xd0, 0xdb, 0x3f, 0xd3, 0x9f, 0xf8, 0x1e, 0x1a, 0x3e, 0xbd, 0xfe, + 0x58, 0x5c, 0x7c, 0x23, 0x02, 0x31, 0xba, 0xdf, 0xa6, 0x20, 0xb5, 0x75, 0xad, 0x56, 0x52, 0x57, + 0xab, 0xdb, 0xc5, 0xf5, 0x92, 0x2c, 0xa1, 0x0c, 0x00, 0x15, 0x5c, 0x5a, 0xaf, 0x16, 0xb6, 0xe4, + 0x88, 0x7f, 0x5d, 0xde, 0xd8, 0x3a, 0x7f, 0x56, 0x8e, 0xfa, 0x80, 0x6d, 0x26, 0x88, 0x05, 0x15, + 0xce, 0x9c, 0x96, 0xe3, 0x48, 0x86, 0x34, 0x23, 0x28, 0x5f, 0x2d, 0xad, 0x9e, 0x3f, 0x2b, 0x8f, + 0xf7, 0x4a, 0xce, 0x9c, 0x96, 0x27, 0xd0, 0x24, 0x24, 0xa9, 0xa4, 0x58, 0xad, 0xae, 0xcb, 0x09, + 0x9f, 0x73, 0x73, 0x4b, 0x29, 0x6f, 0xac, 0xc9, 0x49, 0x9f, 0x73, 0x4d, 0xa9, 0x6e, 0xd7, 0x64, + 0xf0, 0x19, 0x2a, 0xa5, 0xcd, 0xcd, 0xc2, 0x5a, 0x49, 0x4e, 0xf9, 0x1a, 0xc5, 0x6b, 0x5b, 0xa5, + 0x4d, 0x39, 0xdd, 0x63, 0xd6, 0x99, 0xd3, 0xf2, 0xa4, 0x7f, 0x8b, 0xd2, 0xc6, 0x76, 0x45, 0xce, + 0xa0, 0x69, 0x98, 0x64, 0xb7, 0x10, 0x46, 0x4c, 0xf5, 0x89, 0xce, 0x9f, 0x95, 0xe5, 0xae, 0x21, + 0x8c, 0x65, 0xba, 0x47, 0x70, 0xfe, 0xac, 0x8c, 0x16, 0x57, 0x20, 0x4e, 0xa3, 0x0b, 0x21, 0xc8, + 0xac, 0x17, 0x8a, 0xa5, 0x75, 0xb5, 0x5a, 0xdb, 0x2a, 0x57, 0x37, 0x0a, 0xeb, 0xb2, 0xd4, 0x95, + 0x29, 0xa5, 0xcf, 0x6c, 0x97, 0x95, 0xd2, 0xaa, 0x1c, 0x09, 0xca, 0x6a, 0xa5, 0xc2, 0x56, 0x69, + 0x55, 0x8e, 0x2e, 0xea, 0x30, 0x3b, 0x2c, 0xcf, 0x0c, 0xdd, 0x19, 0x81, 0x25, 0x8e, 0x1c, 0xb0, + 0xc4, 0x94, 0x6b, 0x60, 0x89, 0xbf, 0x2a, 0xc1, 0xcc, 0x90, 0x5c, 0x3b, 0xf4, 0x26, 0xcf, 0x43, + 0x9c, 0x85, 0x28, 0xab, 0x3e, 0x4f, 0x0c, 0x4d, 0xda, 0x34, 0x60, 0x07, 0x2a, 0x10, 0xc5, 0x05, + 0x2b, 0x70, 0xf4, 0x80, 0x0a, 0x4c, 0x28, 0x06, 0x8c, 0x7c, 0x59, 0x82, 0xec, 0x41, 0xdc, 0x21, + 0x89, 0x22, 0xd2, 0x93, 0x28, 0x2e, 0xf6, 0x1b, 0x70, 0xf2, 0xe0, 0x39, 0x0c, 0x58, 0xf1, 0xba, + 0x04, 0xc7, 0x86, 0x37, 0x2a, 0x43, 0x6d, 0x78, 0x0e, 0xc6, 0x9b, 0xd8, 0xdb, 0xb3, 0x45, 0xb1, + 0x7e, 0x6c, 0x48, 0x09, 0x20, 0xc3, 0xfd, 0xbe, 0xe2, 0xa8, 0x60, 0x0d, 0x89, 0x1e, 0xd4, 0x6d, + 0x30, 0x6b, 0x06, 0x2c, 0xfd, 0x62, 0x04, 0x1e, 0x18, 0x4a, 0x3e, 0xd4, 0xd0, 0x87, 0x00, 0x0c, + 0xab, 0xd5, 0xf6, 0x58, 0x41, 0x66, 0xf9, 0x29, 0x49, 0x25, 0x74, 0xef, 0x93, 0xdc, 0xd3, 0xf6, + 0xfc, 0xf1, 0x28, 0x1d, 0x07, 0x26, 0xa2, 0x0a, 0x17, 0xba, 0x86, 0xc6, 0xa8, 0xa1, 0xb9, 0x03, + 0x66, 0x3a, 0x50, 0xeb, 0x9e, 0x06, 0x59, 0x37, 0x0d, 0x6c, 0x79, 0xaa, 0xeb, 0x39, 0x58, 0x6b, + 0x1a, 0x56, 0x83, 0x26, 0xe0, 0x44, 0x3e, 0xbe, 0xab, 0x99, 0x2e, 0x56, 0xa6, 0xd8, 0xf0, 0xa6, + 0x18, 0x25, 0x08, 0x5a, 0x65, 0x9c, 0x00, 0x62, 0xbc, 0x07, 0xc1, 0x86, 0x7d, 0xc4, 0xe2, 0x37, + 0x26, 0x20, 0x15, 0x68, 0xeb, 0xd0, 0x49, 0x48, 0x5f, 0xd7, 0x6e, 0x6a, 0xaa, 0x68, 0xd5, 0x99, + 0x27, 0x52, 0x44, 0x56, 0xe3, 0xed, 0xfa, 0xd3, 0x30, 0x4b, 0x55, 0xec, 0xb6, 0x87, 0x1d, 0x55, + 0x37, 0x35, 0xd7, 0xa5, 0x4e, 0x4b, 0x50, 0x55, 0x44, 0xc6, 0xaa, 0x64, 0x68, 0x45, 0x8c, 0xa0, + 0x73, 0x30, 0x43, 0x11, 0xcd, 0xb6, 0xe9, 0x19, 0x2d, 0x13, 0xab, 0xe4, 0xe1, 0xc1, 0xa5, 0x89, + 0xd8, 0xb7, 0x6c, 0x9a, 0x68, 0x54, 0xb8, 0x02, 0xb1, 0xc8, 0x45, 0xab, 0xf0, 0x10, 0x85, 0x35, + 0xb0, 0x85, 0x1d, 0xcd, 0xc3, 0x2a, 0xfe, 0x5c, 0x5b, 0x33, 0x5d, 0x55, 0xb3, 0xea, 0xea, 0x9e, + 0xe6, 0xee, 0x65, 0x67, 0x09, 0x41, 0x31, 0x92, 0x95, 0x94, 0x13, 0x44, 0x71, 0x8d, 0xeb, 0x95, + 0xa8, 0x5a, 0xc1, 0xaa, 0x7f, 0x5a, 0x73, 0xf7, 0x50, 0x1e, 0x8e, 0x51, 0x16, 0xd7, 0x73, 0x0c, + 0xab, 0xa1, 0xea, 0x7b, 0x58, 0xbf, 0xa1, 0xb6, 0xbd, 0xdd, 0x0b, 0xd9, 0x07, 0x83, 0xf7, 0xa7, + 0x16, 0x6e, 0x52, 0x9d, 0x15, 0xa2, 0xb2, 0xed, 0xed, 0x5e, 0x40, 0x9b, 0x90, 0x26, 0x8b, 0xd1, + 0x34, 0x5e, 0xc2, 0xea, 0xae, 0xed, 0xd0, 0xca, 0x92, 0x19, 0xb2, 0xb3, 0x03, 0x1e, 0x5c, 0xae, + 0x72, 0x40, 0xc5, 0xae, 0xe3, 0x7c, 0x7c, 0xb3, 0x56, 0x2a, 0xad, 0x2a, 0x29, 0xc1, 0x72, 0xc9, + 0x76, 0x48, 0x40, 0x35, 0x6c, 0xdf, 0xc1, 0x29, 0x16, 0x50, 0x0d, 0x5b, 0xb8, 0xf7, 0x1c, 0xcc, + 0xe8, 0x3a, 0x9b, 0xb3, 0xa1, 0xab, 0xbc, 0xc5, 0x77, 0xb3, 0x72, 0x8f, 0xb3, 0x74, 0x7d, 0x8d, + 0x29, 0xf0, 0x18, 0x77, 0xd1, 0xb3, 0xf0, 0x40, 0xd7, 0x59, 0x41, 0xe0, 0xf4, 0xc0, 0x2c, 0xfb, + 0xa1, 0xe7, 0x60, 0xa6, 0xd5, 0x19, 0x04, 0xa2, 0x9e, 0x3b, 0xb6, 0x3a, 0xfd, 0xb0, 0x47, 0xe9, + 0x63, 0x9b, 0x83, 0x75, 0xcd, 0xc3, 0xf5, 0xec, 0xf1, 0xa0, 0x76, 0x60, 0x00, 0x9d, 0x02, 0x59, + 0xd7, 0x55, 0x6c, 0x69, 0x3b, 0x26, 0x56, 0x35, 0x07, 0x5b, 0x9a, 0x9b, 0x9d, 0x0f, 0x2a, 0x67, + 0x74, 0xbd, 0x44, 0x47, 0x0b, 0x74, 0x10, 0x3d, 0x09, 0xd3, 0xf6, 0xce, 0x75, 0x9d, 0x45, 0x96, + 0xda, 0x72, 0xf0, 0xae, 0xf1, 0x62, 0xf6, 0x11, 0xea, 0xa6, 0x29, 0x32, 0x40, 0xe3, 0xaa, 0x46, + 0xc5, 0xe8, 0x09, 0x90, 0x75, 0x77, 0x4f, 0x73, 0x5a, 0xb4, 0xb4, 0xbb, 0x2d, 0x4d, 0xc7, 0xd9, + 0x47, 0x99, 0x2a, 0x93, 0x6f, 0x08, 0x31, 0x89, 0x6c, 0xf7, 0x96, 0xb1, 0xeb, 0x09, 0xc6, 0xc7, + 0x59, 0x64, 0x53, 0x19, 0x67, 0xbb, 0x0a, 0xb3, 0x6d, 0xcb, 0xb0, 0x3c, 0xec, 0xb4, 0x1c, 0x4c, + 0x9a, 0x78, 0xb6, 0x13, 0xb3, 0xff, 0x3a, 0x71, 0x40, 0x1b, 0xbe, 0x1d, 0xd4, 0x66, 0x01, 0xa0, + 0xcc, 0xb4, 0x07, 0x85, 0x8b, 0x79, 0x48, 0x07, 0xe3, 0x02, 0x25, 0x81, 0x45, 0x86, 0x2c, 0x91, + 0x1a, 0xbb, 0x52, 0x5d, 0x25, 0xd5, 0xf1, 0x85, 0x92, 0x1c, 0x21, 0x55, 0x7a, 0xbd, 0xbc, 0x55, + 0x52, 0x95, 0xed, 0x8d, 0xad, 0x72, 0xa5, 0x24, 0x47, 0x9f, 0x4c, 0x26, 0xde, 0x9d, 0x90, 0x6f, + 0xdf, 0xbe, 0x7d, 0x3b, 0xb2, 0xf8, 0xbd, 0x08, 0x64, 0x7a, 0x3b, 0x63, 0xf4, 0x49, 0x38, 0x2e, + 0x1e, 0x63, 0x5d, 0xec, 0xa9, 0xb7, 0x0c, 0x87, 0x86, 0x6a, 0x53, 0x63, 0xbd, 0xa5, 0xef, 0xe5, + 0x59, 0xae, 0xb5, 0x89, 0xbd, 0x2b, 0x86, 0x43, 0x02, 0xb1, 0xa9, 0x79, 0x68, 0x1d, 0xe6, 0x2d, + 0x5b, 0x75, 0x3d, 0xcd, 0xaa, 0x6b, 0x4e, 0x5d, 0xed, 0x1e, 0x20, 0xa8, 0x9a, 0xae, 0x63, 0xd7, + 0xb5, 0x59, 0x89, 0xf0, 0x59, 0x3e, 0x66, 0xd9, 0x9b, 0x5c, 0xb9, 0x9b, 0x3b, 0x0b, 0x5c, 0xb5, + 0x2f, 0x22, 0xa2, 0x07, 0x45, 0xc4, 0x83, 0x90, 0x6c, 0x6a, 0x2d, 0x15, 0x5b, 0x9e, 0xd3, 0xa1, + 0xfd, 0x5c, 0x42, 0x49, 0x34, 0xb5, 0x56, 0x89, 0x5c, 0x7f, 0x74, 0x6b, 0x10, 0xf4, 0xe3, 0xbf, + 0x44, 0x21, 0x1d, 0xec, 0xe9, 0x48, 0x8b, 0xac, 0xd3, 0xfc, 0x2d, 0xd1, 0x1d, 0xfe, 0xf0, 0xa1, + 0x1d, 0xe0, 0xf2, 0x0a, 0x49, 0xec, 0xf9, 0x71, 0xd6, 0x69, 0x29, 0x0c, 0x49, 0x8a, 0x2a, 0xd9, + 0xd3, 0x98, 0xf5, 0xef, 0x09, 0x85, 0x5f, 0xa1, 0x35, 0x18, 0xbf, 0xee, 0x52, 0xee, 0x71, 0xca, + 0xfd, 0xc8, 0xe1, 0xdc, 0x97, 0x37, 0x29, 0x79, 0xf2, 0xf2, 0xa6, 0xba, 0x51, 0x55, 0x2a, 0x85, + 0x75, 0x85, 0xc3, 0xd1, 0x09, 0x88, 0x99, 0xda, 0x4b, 0x9d, 0xde, 0x12, 0x40, 0x45, 0xa3, 0x3a, + 0xfe, 0x04, 0xc4, 0x6e, 0x61, 0xed, 0x46, 0x6f, 0xe2, 0xa5, 0xa2, 0x8f, 0x30, 0xf4, 0x4f, 0x41, + 0x9c, 0xfa, 0x0b, 0x01, 0x70, 0x8f, 0xc9, 0x63, 0x28, 0x01, 0xb1, 0x95, 0xaa, 0x42, 0xc2, 0x5f, + 0x86, 0x34, 0x93, 0xaa, 0xb5, 0x72, 0x69, 0xa5, 0x24, 0x47, 0x16, 0xcf, 0xc1, 0x38, 0x73, 0x02, + 0xd9, 0x1a, 0xbe, 0x1b, 0xe4, 0x31, 0x7e, 0xc9, 0x39, 0x24, 0x31, 0xba, 0x5d, 0x29, 0x96, 0x14, + 0x39, 0x12, 0x5c, 0x5e, 0x17, 0xd2, 0xc1, 0x76, 0xee, 0x67, 0x13, 0x53, 0x7f, 0x2f, 0x41, 0x2a, + 0xd0, 0x9e, 0x91, 0xc6, 0x40, 0x33, 0x4d, 0xfb, 0x96, 0xaa, 0x99, 0x86, 0xe6, 0xf2, 0xa0, 0x00, + 0x2a, 0x2a, 0x10, 0xc9, 0xa8, 0x8b, 0xf6, 0x33, 0x31, 0xfe, 0x35, 0x09, 0xe4, 0xfe, 0xd6, 0xae, + 0xcf, 0x40, 0xe9, 0xe7, 0x6a, 0xe0, 0xab, 0x12, 0x64, 0x7a, 0xfb, 0xb9, 0x3e, 0xf3, 0x4e, 0xfe, + 0x5c, 0xcd, 0x7b, 0x3b, 0x02, 0x93, 0x3d, 0x5d, 0xdc, 0xa8, 0xd6, 0x7d, 0x0e, 0xa6, 0x8d, 0x3a, + 0x6e, 0xb6, 0x6c, 0x0f, 0x5b, 0x7a, 0x47, 0x35, 0xf1, 0x4d, 0x6c, 0x66, 0x17, 0x69, 0xa2, 0x38, + 0x75, 0x78, 0x9f, 0xb8, 0x5c, 0xee, 0xe2, 0xd6, 0x09, 0x2c, 0x3f, 0x53, 0x5e, 0x2d, 0x55, 0x6a, + 0xd5, 0xad, 0xd2, 0xc6, 0xca, 0x35, 0x75, 0x7b, 0xe3, 0xff, 0x6d, 0x54, 0xaf, 0x6c, 0x28, 0xb2, + 0xd1, 0xa7, 0xf6, 0x11, 0x6e, 0xf5, 0x1a, 0xc8, 0xfd, 0x46, 0xa1, 0xe3, 0x30, 0xcc, 0x2c, 0x79, + 0x0c, 0xcd, 0xc0, 0xd4, 0x46, 0x55, 0xdd, 0x2c, 0xaf, 0x96, 0xd4, 0xd2, 0xa5, 0x4b, 0xa5, 0x95, + 0xad, 0x4d, 0xf6, 0xe0, 0xec, 0x6b, 0x6f, 0xf5, 0x6e, 0xea, 0x57, 0xa2, 0x30, 0x33, 0xc4, 0x12, + 0x54, 0xe0, 0x3d, 0x3b, 0x7b, 0x8c, 0xf8, 0xc4, 0x28, 0xd6, 0x2f, 0x93, 0xae, 0xa0, 0xa6, 0x39, + 0x1e, 0x6f, 0xf1, 0x9f, 0x00, 0xe2, 0x25, 0xcb, 0x33, 0x76, 0x0d, 0xec, 0xf0, 0x73, 0x06, 0xd6, + 0xc8, 0x4f, 0x75, 0xe5, 0xec, 0xa8, 0xe1, 0xe3, 0x80, 0x5a, 0xb6, 0x6b, 0x78, 0xc6, 0x4d, 0xac, + 0x1a, 0x96, 0x38, 0x94, 0x20, 0x8d, 0x7d, 0x4c, 0x91, 0xc5, 0x48, 0xd9, 0xf2, 0x7c, 0x6d, 0x0b, + 0x37, 0xb4, 0x3e, 0x6d, 0x92, 0xc0, 0xa3, 0x8a, 0x2c, 0x46, 0x7c, 0xed, 0x93, 0x90, 0xae, 0xdb, + 0x6d, 0xd2, 0x26, 0x31, 0x3d, 0x52, 0x2f, 0x24, 0x25, 0xc5, 0x64, 0xbe, 0x0a, 0xef, 0x63, 0xbb, + 0xa7, 0x21, 0x69, 0x25, 0xc5, 0x64, 0x4c, 0xe5, 0x71, 0x98, 0xd2, 0x1a, 0x0d, 0x87, 0x90, 0x0b, + 0x22, 0xd6, 0x99, 0x67, 0x7c, 0x31, 0x55, 0x9c, 0xbb, 0x0c, 0x09, 0xe1, 0x07, 0x52, 0x92, 0x89, + 0x27, 0xd4, 0x16, 0x3b, 0x93, 0x8a, 0x2c, 0x25, 0x95, 0x84, 0x25, 0x06, 0x4f, 0x42, 0xda, 0x70, + 0xd5, 0xee, 0xe1, 0x68, 0x64, 0x21, 0xb2, 0x94, 0x50, 0x52, 0x86, 0xeb, 0x9f, 0x86, 0x2d, 0xbe, + 0x1e, 0x81, 0x4c, 0xef, 0xe1, 0x2e, 0x5a, 0x85, 0x84, 0x69, 0xeb, 0x1a, 0x0d, 0x2d, 0xf6, 0x66, + 0x61, 0x29, 0xe4, 0x3c, 0x78, 0x79, 0x9d, 0xeb, 0x2b, 0x3e, 0x72, 0xee, 0x9f, 0x24, 0x48, 0x08, + 0x31, 0x3a, 0x06, 0xb1, 0x96, 0xe6, 0xed, 0x51, 0xba, 0x78, 0x31, 0x22, 0x4b, 0x0a, 0xbd, 0x26, + 0x72, 0xb7, 0xa5, 0x59, 0x34, 0x04, 0xb8, 0x9c, 0x5c, 0x93, 0x75, 0x35, 0xb1, 0x56, 0xa7, 0x6d, + 0xbf, 0xdd, 0x6c, 0x62, 0xcb, 0x73, 0xc5, 0xba, 0x72, 0xf9, 0x0a, 0x17, 0xa3, 0xa7, 0x60, 0xda, + 0x73, 0x34, 0xc3, 0xec, 0xd1, 0x8d, 0x51, 0x5d, 0x59, 0x0c, 0xf8, 0xca, 0x79, 0x38, 0x21, 0x78, + 0xeb, 0xd8, 0xd3, 0xf4, 0x3d, 0x5c, 0xef, 0x82, 0xc6, 0xe9, 0xc9, 0xe1, 0x71, 0xae, 0xb0, 0xca, + 0xc7, 0x05, 0x76, 0xf1, 0x07, 0x12, 0x4c, 0x8b, 0x07, 0x95, 0xba, 0xef, 0xac, 0x0a, 0x80, 0x66, + 0x59, 0xb6, 0x17, 0x74, 0xd7, 0x60, 0x28, 0x0f, 0xe0, 0x96, 0x0b, 0x3e, 0x48, 0x09, 0x10, 0xcc, + 0x35, 0x01, 0xba, 0x23, 0x07, 0xba, 0x6d, 0x1e, 0x52, 0xfc, 0xe4, 0x9e, 0xbe, 0xfe, 0x61, 0x8f, + 0xb6, 0xc0, 0x44, 0xe4, 0x89, 0x06, 0xcd, 0x42, 0x7c, 0x07, 0x37, 0x0c, 0x8b, 0x9f, 0x27, 0xb2, + 0x0b, 0x71, 0x4a, 0x19, 0xf3, 0x4f, 0x29, 0x8b, 0x57, 0x61, 0x46, 0xb7, 0x9b, 0xfd, 0xe6, 0x16, + 0xe5, 0xbe, 0xc7, 0x6b, 0xf7, 0xd3, 0xd2, 0x0b, 0xd0, 0x6d, 0x31, 0xbf, 0x1a, 0x89, 0xae, 0xd5, + 0x8a, 0x5f, 0x8f, 0xcc, 0xad, 0x31, 0x5c, 0x4d, 0x4c, 0x53, 0xc1, 0xbb, 0x26, 0xd6, 0x89, 0xe9, + 0xf0, 0xe3, 0xc7, 0xe0, 0x13, 0x0d, 0xc3, 0xdb, 0x6b, 0xef, 0x2c, 0xeb, 0x76, 0xf3, 0x54, 0xc3, + 0x6e, 0xd8, 0xdd, 0xd7, 0x5d, 0xe4, 0x8a, 0x5e, 0xd0, 0x5f, 0xfc, 0x95, 0x57, 0xd2, 0x97, 0xce, + 0x85, 0xbe, 0x1f, 0xcb, 0x6f, 0xc0, 0x0c, 0x57, 0x56, 0xe9, 0x99, 0x3b, 0x7b, 0x34, 0x40, 0x87, + 0x9e, 0xbb, 0x64, 0xbf, 0xf5, 0x0e, 0xad, 0xd5, 0xca, 0x34, 0x87, 0x92, 0x31, 0xf6, 0x00, 0x91, + 0x57, 0xe0, 0x81, 0x1e, 0x3e, 0xb6, 0x2f, 0xb1, 0x13, 0xc2, 0xf8, 0x3d, 0xce, 0x38, 0x13, 0x60, + 0xdc, 0xe4, 0xd0, 0xfc, 0x0a, 0x4c, 0x1e, 0x85, 0xeb, 0x1f, 0x38, 0x57, 0x1a, 0x07, 0x49, 0xd6, + 0x60, 0x8a, 0x92, 0xe8, 0x6d, 0xd7, 0xb3, 0x9b, 0x34, 0xe9, 0x1d, 0x4e, 0xf3, 0x8f, 0xef, 0xb0, + 0x8d, 0x92, 0x21, 0xb0, 0x15, 0x1f, 0x95, 0xcf, 0x03, 0x7d, 0xcd, 0x50, 0xc7, 0xba, 0x19, 0xc2, + 0xf0, 0x26, 0x37, 0xc4, 0xd7, 0xcf, 0x7f, 0x16, 0x66, 0xc9, 0x6f, 0x9a, 0x93, 0x82, 0x96, 0x84, + 0x9f, 0x32, 0x65, 0x7f, 0xf0, 0x32, 0xdb, 0x8b, 0x33, 0x3e, 0x41, 0xc0, 0xa6, 0xc0, 0x2a, 0x36, + 0xb0, 0xe7, 0x61, 0xc7, 0x55, 0x35, 0x73, 0x98, 0x79, 0x81, 0xc7, 0xf4, 0xec, 0x97, 0xdf, 0xeb, + 0x5d, 0xc5, 0x35, 0x86, 0x2c, 0x98, 0x66, 0x7e, 0x1b, 0x8e, 0x0f, 0x89, 0x8a, 0x11, 0x38, 0x5f, + 0xe1, 0x9c, 0xb3, 0x03, 0x91, 0x41, 0x68, 0x6b, 0x20, 0xe4, 0xfe, 0x5a, 0x8e, 0xc0, 0xf9, 0x07, + 0x9c, 0x13, 0x71, 0xac, 0x58, 0x52, 0xc2, 0x78, 0x19, 0xa6, 0x6f, 0x62, 0x67, 0xc7, 0x76, 0xf9, + 0xd1, 0xc8, 0x08, 0x74, 0xaf, 0x72, 0xba, 0x29, 0x0e, 0xa4, 0x67, 0x25, 0x84, 0xeb, 0x59, 0x48, + 0xec, 0x6a, 0x3a, 0x1e, 0x81, 0xe2, 0x2b, 0x9c, 0x62, 0x82, 0xe8, 0x13, 0x68, 0x01, 0xd2, 0x0d, + 0x9b, 0x97, 0xa5, 0x70, 0xf8, 0x6b, 0x1c, 0x9e, 0x12, 0x18, 0x4e, 0xd1, 0xb2, 0x5b, 0x6d, 0x93, + 0xd4, 0xac, 0x70, 0x8a, 0x3f, 0x14, 0x14, 0x02, 0xc3, 0x29, 0x8e, 0xe0, 0xd6, 0x3f, 0x12, 0x14, + 0x6e, 0xc0, 0x9f, 0xcf, 0x43, 0xca, 0xb6, 0xcc, 0x8e, 0x6d, 0x8d, 0x62, 0xc4, 0x1f, 0x73, 0x06, + 0xe0, 0x10, 0x42, 0x70, 0x11, 0x92, 0xa3, 0x2e, 0xc4, 0x9f, 0xbc, 0x27, 0xb6, 0x87, 0x58, 0x81, + 0x35, 0x98, 0x12, 0x09, 0xca, 0xb0, 0xad, 0x11, 0x28, 0xfe, 0x94, 0x53, 0x64, 0x02, 0x30, 0x3e, + 0x0d, 0x0f, 0xbb, 0x5e, 0x03, 0x8f, 0x42, 0xf2, 0xba, 0x98, 0x06, 0x87, 0x70, 0x57, 0xee, 0x60, + 0x4b, 0xdf, 0x1b, 0x8d, 0xe1, 0x6b, 0xc2, 0x95, 0x02, 0x43, 0x28, 0x56, 0x60, 0xb2, 0xa9, 0x39, + 0xee, 0x9e, 0x66, 0x8e, 0xb4, 0x1c, 0x7f, 0xc6, 0x39, 0xd2, 0x3e, 0x88, 0x7b, 0xa4, 0x6d, 0x1d, + 0x85, 0xe6, 0xeb, 0xc2, 0x23, 0x01, 0x18, 0xdf, 0x7a, 0xae, 0x47, 0x0f, 0xa0, 0x8e, 0xc2, 0xf6, + 0x0d, 0xb1, 0xf5, 0x18, 0xb6, 0x12, 0x64, 0xbc, 0x08, 0x49, 0xd7, 0x78, 0x69, 0x24, 0x9a, 0x3f, + 0x17, 0x2b, 0x4d, 0x01, 0x04, 0x7c, 0x0d, 0x4e, 0x0c, 0x2d, 0x13, 0x23, 0x90, 0xfd, 0x05, 0x27, + 0x3b, 0x36, 0xa4, 0x54, 0xf0, 0x94, 0x70, 0x54, 0xca, 0xbf, 0x14, 0x29, 0x01, 0xf7, 0x71, 0xd5, + 0xc8, 0x83, 0x82, 0xab, 0xed, 0x1e, 0xcd, 0x6b, 0x7f, 0x25, 0xbc, 0xc6, 0xb0, 0x3d, 0x5e, 0xdb, + 0x82, 0x63, 0x9c, 0xf1, 0x68, 0xeb, 0xfa, 0x4d, 0x91, 0x58, 0x19, 0x7a, 0xbb, 0x77, 0x75, 0xff, + 0x3f, 0xcc, 0xf9, 0xee, 0x14, 0x1d, 0xa9, 0xab, 0x36, 0xb5, 0xd6, 0x08, 0xcc, 0xdf, 0xe2, 0xcc, + 0x22, 0xe3, 0xfb, 0x2d, 0xad, 0x5b, 0xd1, 0x5a, 0x84, 0xfc, 0x2a, 0x64, 0x05, 0x79, 0xdb, 0x72, + 0xb0, 0x6e, 0x37, 0x2c, 0xe3, 0x25, 0x5c, 0x1f, 0x81, 0xfa, 0xaf, 0xfb, 0x96, 0x6a, 0x3b, 0x00, + 0x27, 0xcc, 0x65, 0x90, 0xfd, 0x5e, 0x45, 0x35, 0x9a, 0x2d, 0xdb, 0xf1, 0x42, 0x18, 0xff, 0x46, + 0xac, 0x94, 0x8f, 0x2b, 0x53, 0x58, 0xbe, 0x04, 0x19, 0x7a, 0x39, 0x6a, 0x48, 0xfe, 0x2d, 0x27, + 0x9a, 0xec, 0xa2, 0x78, 0xe2, 0xd0, 0xed, 0x66, 0x4b, 0x73, 0x46, 0xc9, 0x7f, 0xdf, 0x16, 0x89, + 0x83, 0x43, 0x78, 0xe2, 0xf0, 0x3a, 0x2d, 0x4c, 0xaa, 0xfd, 0x08, 0x0c, 0x6f, 0x88, 0xc4, 0x21, + 0x30, 0x9c, 0x42, 0x34, 0x0c, 0x23, 0x50, 0xfc, 0x9d, 0xa0, 0x10, 0x18, 0x42, 0xf1, 0x99, 0x6e, + 0xa1, 0x75, 0x70, 0xc3, 0x70, 0x3d, 0x87, 0xf5, 0xc1, 0x87, 0x53, 0x7d, 0xe7, 0xbd, 0xde, 0x26, + 0x4c, 0x09, 0x40, 0xf3, 0x97, 0x61, 0xaa, 0xaf, 0xc5, 0x40, 0x61, 0xdf, 0x2c, 0x64, 0x7f, 0xf1, + 0x03, 0x9e, 0x8c, 0x7a, 0x3b, 0x8c, 0xfc, 0x3a, 0x59, 0xf7, 0xde, 0x3e, 0x20, 0x9c, 0xec, 0xe5, + 0x0f, 0xfc, 0xa5, 0xef, 0x69, 0x03, 0xf2, 0x97, 0x60, 0xb2, 0xa7, 0x07, 0x08, 0xa7, 0xfa, 0x25, + 0x4e, 0x95, 0x0e, 0xb6, 0x00, 0xf9, 0x73, 0x10, 0x23, 0xf5, 0x3c, 0x1c, 0xfe, 0xcb, 0x1c, 0x4e, + 0xd5, 0xf3, 0x9f, 0x82, 0x84, 0xa8, 0xe3, 0xe1, 0xd0, 0x5f, 0xe1, 0x50, 0x1f, 0x42, 0xe0, 0xa2, + 0x86, 0x87, 0xc3, 0xbf, 0x20, 0xe0, 0x02, 0x42, 0xe0, 0xa3, 0xbb, 0xf0, 0xbb, 0xbf, 0x16, 0xe3, + 0x79, 0x58, 0xf8, 0xee, 0x22, 0x4c, 0xf0, 0xe2, 0x1d, 0x8e, 0xfe, 0x22, 0xbf, 0xb9, 0x40, 0xe4, + 0x9f, 0x81, 0xf8, 0x88, 0x0e, 0xff, 0x75, 0x0e, 0x65, 0xfa, 0xf9, 0x15, 0x48, 0x05, 0x0a, 0x76, + 0x38, 0xfc, 0x37, 0x38, 0x3c, 0x88, 0x22, 0xa6, 0xf3, 0x82, 0x1d, 0x4e, 0xf0, 0x9b, 0xc2, 0x74, + 0x8e, 0x20, 0x6e, 0x13, 0xb5, 0x3a, 0x1c, 0xfd, 0x5b, 0xc2, 0xeb, 0x02, 0x92, 0x7f, 0x1e, 0x92, + 0x7e, 0xfe, 0x0d, 0xc7, 0xff, 0x36, 0xc7, 0x77, 0x31, 0xc4, 0x03, 0x81, 0xfc, 0x1f, 0x4e, 0xf1, + 0x3b, 0xc2, 0x03, 0x01, 0x14, 0xd9, 0x46, 0xfd, 0x35, 0x3d, 0x9c, 0xe9, 0x77, 0xc5, 0x36, 0xea, + 0x2b, 0xe9, 0x64, 0x35, 0x69, 0x1a, 0x0c, 0xa7, 0xf8, 0x3d, 0xb1, 0x9a, 0x54, 0x9f, 0x98, 0xd1, + 0x5f, 0x24, 0xc3, 0x39, 0x7e, 0x5f, 0x98, 0xd1, 0x57, 0x23, 0xf3, 0x35, 0x40, 0x83, 0x05, 0x32, + 0x9c, 0xef, 0x4b, 0x9c, 0x6f, 0x7a, 0xa0, 0x3e, 0xe6, 0xaf, 0xc0, 0xb1, 0xe1, 0xc5, 0x31, 0x9c, + 0xf5, 0xcb, 0x1f, 0xf4, 0x3d, 0xce, 0x04, 0x6b, 0x63, 0x7e, 0xab, 0x9b, 0x65, 0x83, 0x85, 0x31, + 0x9c, 0xf6, 0x95, 0x0f, 0x7a, 0x13, 0x6d, 0xb0, 0x2e, 0xe6, 0x0b, 0x00, 0xdd, 0x9a, 0x14, 0xce, + 0xf5, 0x2a, 0xe7, 0x0a, 0x80, 0xc8, 0xd6, 0xe0, 0x25, 0x29, 0x1c, 0xff, 0x15, 0xb1, 0x35, 0x38, + 0x82, 0x6c, 0x0d, 0x51, 0x8d, 0xc2, 0xd1, 0xaf, 0x89, 0xad, 0x21, 0x20, 0xf9, 0x8b, 0x90, 0xb0, + 0xda, 0xa6, 0x49, 0x62, 0x0b, 0x1d, 0xfe, 0x19, 0x51, 0xf6, 0x47, 0x1f, 0x72, 0xb0, 0x00, 0xe4, + 0xcf, 0x41, 0x1c, 0x37, 0x77, 0x70, 0x3d, 0x0c, 0xf9, 0x6f, 0x1f, 0x8a, 0x7c, 0x42, 0xb4, 0xf3, + 0xcf, 0x03, 0xb0, 0x87, 0x69, 0xfa, 0x96, 0x28, 0x04, 0xfb, 0xef, 0x1f, 0xf2, 0x2f, 0x14, 0xba, + 0x90, 0x2e, 0x01, 0xfb, 0xde, 0xe1, 0x70, 0x82, 0xf7, 0x7a, 0x09, 0xe8, 0x03, 0xf8, 0xb3, 0x30, + 0x71, 0xdd, 0xb5, 0x2d, 0x4f, 0x6b, 0x84, 0xa1, 0xff, 0x83, 0xa3, 0x85, 0x3e, 0x71, 0x58, 0xd3, + 0x76, 0xb0, 0xa7, 0x35, 0xdc, 0x30, 0xec, 0x7f, 0x72, 0xac, 0x0f, 0x20, 0x60, 0x5d, 0x73, 0xbd, + 0x51, 0xe6, 0xfd, 0x5f, 0x02, 0x2c, 0x00, 0xc4, 0x68, 0xf2, 0xfb, 0x06, 0xee, 0x84, 0x61, 0xdf, + 0x17, 0x46, 0x73, 0xfd, 0xfc, 0xa7, 0x20, 0x49, 0x7e, 0xb2, 0xaf, 0x76, 0x42, 0xc0, 0xff, 0xcd, + 0xc1, 0x5d, 0x04, 0xb9, 0xb3, 0xeb, 0xd5, 0x3d, 0x23, 0xdc, 0xd9, 0xff, 0xc3, 0x57, 0x5a, 0xe8, + 0xe7, 0x0b, 0x90, 0x72, 0xbd, 0x7a, 0xbd, 0xcd, 0x3b, 0x9a, 0x10, 0xf8, 0x8f, 0x3f, 0xf4, 0x1f, + 0x72, 0x7d, 0x4c, 0xf1, 0xe4, 0xf0, 0xc3, 0x3a, 0x58, 0xb3, 0xd7, 0x6c, 0x76, 0x4c, 0x07, 0x6f, + 0x4c, 0xc1, 0x49, 0xdd, 0x6e, 0xee, 0xd8, 0xee, 0xa9, 0x40, 0x1a, 0x3a, 0x25, 0x5c, 0xc7, 0x4f, + 0xda, 0x7c, 0x57, 0xce, 0x1d, 0xed, 0x88, 0x6e, 0xf1, 0x47, 0x93, 0x90, 0x58, 0xd1, 0x5c, 0x4f, + 0xbb, 0xa5, 0x75, 0xd0, 0xa3, 0x90, 0x28, 0x5b, 0xde, 0x99, 0xd3, 0x35, 0xcf, 0xa1, 0xaf, 0x98, + 0xa2, 0xc5, 0xe4, 0xbd, 0x3b, 0xf3, 0x71, 0x83, 0xc8, 0x14, 0x7f, 0x08, 0x3d, 0x0c, 0x71, 0xfa, + 0x9b, 0x9e, 0x52, 0x46, 0x8b, 0x93, 0x6f, 0xde, 0x99, 0x1f, 0xeb, 0xea, 0xb1, 0x31, 0x74, 0x0d, + 0x52, 0x95, 0xce, 0xb6, 0x61, 0x79, 0xe7, 0xcf, 0x12, 0x3a, 0x32, 0xf9, 0x58, 0xf1, 0x99, 0x7b, + 0x77, 0xe6, 0xcf, 0x1c, 0x68, 0x20, 0x29, 0x89, 0xdd, 0x89, 0x09, 0x34, 0xfd, 0x72, 0x31, 0xc8, + 0x85, 0xae, 0x40, 0x42, 0x5c, 0xb2, 0xd3, 0xfe, 0xe2, 0x45, 0x6e, 0xc2, 0x7d, 0x71, 0xfb, 0x64, + 0xe8, 0x17, 0x20, 0x5d, 0xe9, 0x5c, 0x32, 0x6d, 0x8d, 0xfb, 0x20, 0xbe, 0x20, 0x2d, 0x45, 0x8a, + 0x17, 0xee, 0xdd, 0x99, 0x3f, 0x3b, 0x32, 0x31, 0x87, 0x53, 0xe6, 0x1e, 0x36, 0xf4, 0x02, 0x24, + 0xfd, 0x6b, 0xfa, 0x3e, 0x21, 0x52, 0xfc, 0x24, 0xb7, 0xfb, 0xfe, 0xe8, 0xbb, 0x74, 0x01, 0xcb, + 0x99, 0xbb, 0x27, 0x16, 0xa4, 0x25, 0xe9, 0x7e, 0x2c, 0xe7, 0x3e, 0xe9, 0x61, 0x0b, 0x58, 0x7e, + 0xfe, 0x2c, 0x7d, 0x81, 0x21, 0xdd, 0xaf, 0xe5, 0x9c, 0xbe, 0x4b, 0x87, 0x2e, 0xc3, 0x44, 0xa5, + 0x53, 0xec, 0x78, 0xd8, 0xa5, 0x5f, 0xf4, 0xa4, 0x8b, 0x4f, 0xdf, 0xbb, 0x33, 0xff, 0xf1, 0x11, + 0x59, 0x29, 0x4e, 0x11, 0x04, 0x68, 0x01, 0x52, 0x1b, 0xb6, 0xd3, 0xd4, 0x4c, 0xc6, 0x07, 0xec, + 0x85, 0x4c, 0x40, 0x84, 0xb6, 0xc9, 0x4c, 0xd8, 0x6a, 0xbb, 0xf4, 0x7f, 0x11, 0x7e, 0x8a, 0x98, + 0xec, 0x32, 0x21, 0x03, 0xe2, 0x95, 0x4e, 0x45, 0x6b, 0x65, 0xd3, 0xf4, 0x6d, 0xc1, 0x43, 0xcb, + 0x3e, 0x42, 0xec, 0xad, 0x65, 0x3a, 0x4e, 0x3f, 0xab, 0x28, 0x9e, 0xbd, 0x77, 0x67, 0xfe, 0xe9, + 0x91, 0xef, 0x58, 0xd1, 0x5a, 0xf4, 0x76, 0xec, 0x0e, 0xe8, 0xdb, 0x12, 0xd9, 0x58, 0xec, 0xc4, + 0x95, 0xdc, 0x71, 0x92, 0xde, 0xf1, 0xe1, 0xa1, 0x77, 0xf4, 0xb5, 0xd8, 0x7d, 0xad, 0xcf, 0xbf, + 0x75, 0x84, 0x99, 0xb2, 0xa7, 0x1a, 0x72, 0xeb, 0x5f, 0x7d, 0xeb, 0xbe, 0x37, 0xad, 0x6f, 0x01, + 0x7a, 0x59, 0x82, 0xc9, 0x4a, 0x67, 0x83, 0xd7, 0x57, 0x62, 0x79, 0x86, 0x7f, 0xb1, 0x3e, 0xcc, + 0xf2, 0x80, 0x1e, 0xb3, 0xfd, 0xfc, 0xe7, 0xdf, 0x9a, 0x3f, 0x3d, 0xb2, 0x11, 0x34, 0x05, 0x51, + 0x1b, 0x7a, 0xef, 0x89, 0xbe, 0x40, 0xad, 0x28, 0x91, 0x5a, 0x5d, 0xc7, 0x75, 0x62, 0xc5, 0xd4, + 0x21, 0x56, 0x04, 0xf4, 0x98, 0x15, 0x79, 0x12, 0xf5, 0xf7, 0x6f, 0x49, 0x80, 0x0f, 0x55, 0x61, + 0x9c, 0x79, 0x98, 0x7e, 0x4d, 0x96, 0x3c, 0x62, 0x18, 0x76, 0x17, 0x47, 0xe1, 0x34, 0x73, 0x17, + 0x00, 0xba, 0x31, 0x86, 0x64, 0x88, 0xde, 0xc0, 0x1d, 0xfe, 0xc9, 0x20, 0xf9, 0x89, 0x66, 0xbb, + 0x9f, 0xc4, 0x4a, 0x4b, 0x31, 0xfe, 0x9d, 0x6b, 0x3e, 0x72, 0x41, 0x9a, 0x7b, 0x0e, 0xe4, 0xfe, + 0x58, 0x39, 0x12, 0x5e, 0x01, 0x34, 0xb8, 0x62, 0x41, 0x86, 0x38, 0x63, 0x78, 0x2c, 0xc8, 0x90, + 0x3a, 0x2d, 0x77, 0x7d, 0x7e, 0xc5, 0x30, 0x5d, 0xdb, 0x1a, 0xe0, 0xec, 0xf7, 0xff, 0x4f, 0xc7, + 0xb9, 0x98, 0x83, 0x71, 0x26, 0x24, 0x73, 0x29, 0xd3, 0xf2, 0x41, 0xab, 0x9c, 0xc2, 0x2e, 0x8a, + 0xeb, 0x6f, 0xde, 0xcd, 0x8d, 0x7d, 0xff, 0x6e, 0x6e, 0xec, 0x9f, 0xef, 0xe6, 0xc6, 0xde, 0xbe, + 0x9b, 0x93, 0xde, 0xbd, 0x9b, 0x93, 0xde, 0xbf, 0x9b, 0x93, 0x7e, 0x72, 0x37, 0x27, 0xdd, 0xde, + 0xcf, 0x49, 0x5f, 0xdb, 0xcf, 0x49, 0xdf, 0xdc, 0xcf, 0x49, 0xdf, 0xd9, 0xcf, 0x49, 0xdf, 0xdd, + 0xcf, 0x49, 0x6f, 0xee, 0xe7, 0xc6, 0xbe, 0xbf, 0x9f, 0x93, 0xde, 0xde, 0xcf, 0x49, 0xef, 0xee, + 0xe7, 0xc6, 0xde, 0xdf, 0xcf, 0x49, 0x3f, 0xd9, 0xcf, 0x8d, 0xdd, 0xfe, 0x61, 0x6e, 0xec, 0xff, + 0x02, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xa3, 0xe7, 0xd4, 0x15, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeboth/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeboth/casttype.pb.go index e5b815322..d7fd7a454 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeboth/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeboth/casttype.pb.go @@ -90,258 +90,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4015 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, - 0x75, 0xd6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x83, 0x14, 0xfd, - 0x47, 0xdb, 0x09, 0xe5, 0xa1, 0x28, 0x59, 0x86, 0x12, 0x7b, 0x00, 0x12, 0x62, 0xa8, 0x21, 0x48, - 0x66, 0x49, 0xc6, 0x3f, 0xe9, 0xcc, 0xce, 0xe5, 0xe2, 0x12, 0x5c, 0x69, 0xb1, 0x8b, 0xee, 0x2e, - 0x24, 0xc3, 0x4f, 0x4a, 0xdc, 0x36, 0x93, 0x66, 0xfa, 0xdf, 0x99, 0x26, 0x8e, 0xe3, 0xa6, 0x99, - 0x69, 0x9d, 0xa6, 0x7f, 0x49, 0x5b, 0xa7, 0x99, 0x3e, 0xe5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, - 0x1f, 0x3a, 0x72, 0xc4, 0x7a, 0xa6, 0x4e, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xe4, 0x97, 0xce, - 0xfd, 0x5b, 0x2c, 0x7e, 0xa8, 0x05, 0x95, 0xc9, 0xcf, 0x13, 0x79, 0xcf, 0x3d, 0xdf, 0xb7, 0xe7, - 0x9e, 0x7b, 0xee, 0x39, 0x67, 0x2f, 0x16, 0x3e, 0xbd, 0x04, 0xb3, 0x75, 0xc7, 0xa9, 0x5b, 0xe4, - 0x4c, 0xd3, 0x75, 0x7c, 0x67, 0xaf, 0xb5, 0x7f, 0xa6, 0x46, 0x3c, 0xc3, 0x35, 0x9b, 0xbe, 0xe3, - 0x2e, 0x30, 0x19, 0x1a, 0xe7, 0x1a, 0x0b, 0x52, 0x63, 0xae, 0x0a, 0x13, 0x97, 0x4c, 0x8b, 0xac, - 0x04, 0x8a, 0xdb, 0xc4, 0x47, 0x17, 0x20, 0xb1, 0x6f, 0x5a, 0x24, 0xaf, 0xcc, 0xc6, 0xe7, 0x33, - 0x8b, 0x0f, 0x2e, 0xf4, 0x80, 0x16, 0xba, 0x11, 0x5b, 0x54, 0xac, 0x31, 0xc4, 0xdc, 0xdb, 0x09, - 0x98, 0x1c, 0x30, 0x8b, 0x10, 0x24, 0x6c, 0xdc, 0xa0, 0x8c, 0xca, 0x7c, 0x5a, 0x63, 0xff, 0xa3, - 0x3c, 0x8c, 0x36, 0xb1, 0x71, 0x15, 0xd7, 0x49, 0x3e, 0xc6, 0xc4, 0x72, 0x88, 0x0a, 0x00, 0x35, - 0xd2, 0x24, 0x76, 0x8d, 0xd8, 0x46, 0x3b, 0x1f, 0x9f, 0x8d, 0xcf, 0xa7, 0xb5, 0x90, 0x04, 0x3d, - 0x0e, 0x13, 0xcd, 0xd6, 0x9e, 0x65, 0x1a, 0x7a, 0x48, 0x0d, 0x66, 0xe3, 0xf3, 0x49, 0x4d, 0xe5, - 0x13, 0x2b, 0x1d, 0xe5, 0x47, 0x60, 0xfc, 0x3a, 0xc1, 0x57, 0xc3, 0xaa, 0x19, 0xa6, 0x9a, 0xa3, - 0xe2, 0x90, 0xe2, 0x32, 0x64, 0x1b, 0xc4, 0xf3, 0x70, 0x9d, 0xe8, 0x7e, 0xbb, 0x49, 0xf2, 0x09, - 0xb6, 0xfa, 0xd9, 0xbe, 0xd5, 0xf7, 0xae, 0x3c, 0x23, 0x50, 0x3b, 0xed, 0x26, 0x41, 0x25, 0x48, - 0x13, 0xbb, 0xd5, 0xe0, 0x0c, 0xc9, 0x23, 0xfc, 0x57, 0xb1, 0x5b, 0x8d, 0x5e, 0x96, 0x14, 0x85, - 0x09, 0x8a, 0x51, 0x8f, 0xb8, 0xd7, 0x4c, 0x83, 0xe4, 0x47, 0x18, 0xc1, 0x23, 0x7d, 0x04, 0xdb, - 0x7c, 0xbe, 0x97, 0x43, 0xe2, 0xd0, 0x32, 0xa4, 0xc9, 0x8b, 0x3e, 0xb1, 0x3d, 0xd3, 0xb1, 0xf3, - 0xa3, 0x8c, 0xe4, 0xa1, 0x01, 0xbb, 0x48, 0xac, 0x5a, 0x2f, 0x45, 0x07, 0x87, 0xce, 0xc3, 0xa8, - 0xd3, 0xf4, 0x4d, 0xc7, 0xf6, 0xf2, 0xa9, 0x59, 0x65, 0x3e, 0xb3, 0xf8, 0xa1, 0x81, 0x81, 0xb0, - 0xc9, 0x75, 0x34, 0xa9, 0x8c, 0xd6, 0x40, 0xf5, 0x9c, 0x96, 0x6b, 0x10, 0xdd, 0x70, 0x6a, 0x44, - 0x37, 0xed, 0x7d, 0x27, 0x9f, 0x66, 0x04, 0x33, 0xfd, 0x0b, 0x61, 0x8a, 0xcb, 0x4e, 0x8d, 0xac, - 0xd9, 0xfb, 0x8e, 0x96, 0xf3, 0xba, 0xc6, 0xe8, 0x24, 0x8c, 0x78, 0x6d, 0xdb, 0xc7, 0x2f, 0xe6, - 0xb3, 0x2c, 0x42, 0xc4, 0x68, 0xee, 0xff, 0x92, 0x30, 0x3e, 0x4c, 0x88, 0x5d, 0x84, 0xe4, 0x3e, - 0x5d, 0x65, 0x3e, 0x76, 0x1c, 0x1f, 0x70, 0x4c, 0xb7, 0x13, 0x47, 0xee, 0xd2, 0x89, 0x25, 0xc8, - 0xd8, 0xc4, 0xf3, 0x49, 0x8d, 0x47, 0x44, 0x7c, 0xc8, 0x98, 0x02, 0x0e, 0xea, 0x0f, 0xa9, 0xc4, - 0x5d, 0x85, 0xd4, 0x73, 0x30, 0x1e, 0x98, 0xa4, 0xbb, 0xd8, 0xae, 0xcb, 0xd8, 0x3c, 0x13, 0x65, - 0xc9, 0x42, 0x45, 0xe2, 0x34, 0x0a, 0xd3, 0x72, 0xa4, 0x6b, 0x8c, 0x56, 0x00, 0x1c, 0x9b, 0x38, - 0xfb, 0x7a, 0x8d, 0x18, 0x56, 0x3e, 0x75, 0x84, 0x97, 0x36, 0xa9, 0x4a, 0x9f, 0x97, 0x1c, 0x2e, - 0x35, 0x2c, 0xf4, 0x54, 0x27, 0xd4, 0x46, 0x8f, 0x88, 0x94, 0x2a, 0x3f, 0x64, 0x7d, 0xd1, 0xb6, - 0x0b, 0x39, 0x97, 0xd0, 0xb8, 0x27, 0x35, 0xb1, 0xb2, 0x34, 0x33, 0x62, 0x21, 0x72, 0x65, 0x9a, - 0x80, 0xf1, 0x85, 0x8d, 0xb9, 0xe1, 0x21, 0x7a, 0x00, 0x02, 0x81, 0xce, 0xc2, 0x0a, 0x58, 0x16, - 0xca, 0x4a, 0xe1, 0x06, 0x6e, 0x90, 0xe9, 0x0b, 0x90, 0xeb, 0x76, 0x0f, 0x9a, 0x82, 0xa4, 0xe7, - 0x63, 0xd7, 0x67, 0x51, 0x98, 0xd4, 0xf8, 0x00, 0xa9, 0x10, 0x27, 0x76, 0x8d, 0x65, 0xb9, 0xa4, - 0x46, 0xff, 0x9d, 0x7e, 0x12, 0xc6, 0xba, 0x1e, 0x3f, 0x2c, 0x70, 0xee, 0x0b, 0x23, 0x30, 0x35, - 0x28, 0xe6, 0x06, 0x86, 0xff, 0x49, 0x18, 0xb1, 0x5b, 0x8d, 0x3d, 0xe2, 0xe6, 0xe3, 0x8c, 0x41, - 0x8c, 0x50, 0x09, 0x92, 0x16, 0xde, 0x23, 0x56, 0x3e, 0x31, 0xab, 0xcc, 0xe7, 0x16, 0x1f, 0x1f, - 0x2a, 0xaa, 0x17, 0xd6, 0x29, 0x44, 0xe3, 0x48, 0xf4, 0x34, 0x24, 0x44, 0x8a, 0xa3, 0x0c, 0x8f, - 0x0d, 0xc7, 0x40, 0x63, 0x51, 0x63, 0x38, 0x74, 0x1f, 0xa4, 0xe9, 0x5f, 0xee, 0xdb, 0x11, 0x66, - 0x73, 0x8a, 0x0a, 0xa8, 0x5f, 0xd1, 0x34, 0xa4, 0x58, 0x98, 0xd5, 0x88, 0x2c, 0x0d, 0xc1, 0x98, - 0x6e, 0x4c, 0x8d, 0xec, 0xe3, 0x96, 0xe5, 0xeb, 0xd7, 0xb0, 0xd5, 0x22, 0x2c, 0x60, 0xd2, 0x5a, - 0x56, 0x08, 0x3f, 0x49, 0x65, 0x68, 0x06, 0x32, 0x3c, 0x2a, 0x4d, 0xbb, 0x46, 0x5e, 0x64, 0xd9, - 0x27, 0xa9, 0xf1, 0x40, 0x5d, 0xa3, 0x12, 0xfa, 0xf8, 0x2b, 0x9e, 0x63, 0xcb, 0xad, 0x65, 0x8f, - 0xa0, 0x02, 0xf6, 0xf8, 0x27, 0x7b, 0x13, 0xdf, 0xfd, 0x83, 0x97, 0xd7, 0x1b, 0x8b, 0x73, 0xdf, - 0x8a, 0x41, 0x82, 0x9d, 0xb7, 0x71, 0xc8, 0xec, 0x3c, 0xbf, 0x55, 0xd1, 0x57, 0x36, 0x77, 0xcb, - 0xeb, 0x15, 0x55, 0x41, 0x39, 0x00, 0x26, 0xb8, 0xb4, 0xbe, 0x59, 0xda, 0x51, 0x63, 0xc1, 0x78, - 0x6d, 0x63, 0xe7, 0xfc, 0x92, 0x1a, 0x0f, 0x00, 0xbb, 0x5c, 0x90, 0x08, 0x2b, 0x9c, 0x5d, 0x54, - 0x93, 0x48, 0x85, 0x2c, 0x27, 0x58, 0x7b, 0xae, 0xb2, 0x72, 0x7e, 0x49, 0x1d, 0xe9, 0x96, 0x9c, - 0x5d, 0x54, 0x47, 0xd1, 0x18, 0xa4, 0x99, 0xa4, 0xbc, 0xb9, 0xb9, 0xae, 0xa6, 0x02, 0xce, 0xed, - 0x1d, 0x6d, 0x6d, 0x63, 0x55, 0x4d, 0x07, 0x9c, 0xab, 0xda, 0xe6, 0xee, 0x96, 0x0a, 0x01, 0x43, - 0xb5, 0xb2, 0xbd, 0x5d, 0x5a, 0xad, 0xa8, 0x99, 0x40, 0xa3, 0xfc, 0xfc, 0x4e, 0x65, 0x5b, 0xcd, - 0x76, 0x99, 0x75, 0x76, 0x51, 0x1d, 0x0b, 0x1e, 0x51, 0xd9, 0xd8, 0xad, 0xaa, 0x39, 0x34, 0x01, - 0x63, 0xfc, 0x11, 0xd2, 0x88, 0xf1, 0x1e, 0xd1, 0xf9, 0x25, 0x55, 0xed, 0x18, 0xc2, 0x59, 0x26, - 0xba, 0x04, 0xe7, 0x97, 0x54, 0x34, 0xb7, 0x0c, 0x49, 0x16, 0x5d, 0x08, 0x41, 0x6e, 0xbd, 0x54, - 0xae, 0xac, 0xeb, 0x9b, 0x5b, 0x3b, 0x6b, 0x9b, 0x1b, 0xa5, 0x75, 0x55, 0xe9, 0xc8, 0xb4, 0xca, - 0x27, 0x76, 0xd7, 0xb4, 0xca, 0x8a, 0x1a, 0x0b, 0xcb, 0xb6, 0x2a, 0xa5, 0x9d, 0xca, 0x8a, 0x1a, - 0x9f, 0x33, 0x60, 0x6a, 0x50, 0x9e, 0x19, 0x78, 0x32, 0x42, 0x5b, 0x1c, 0x3b, 0x62, 0x8b, 0x19, - 0x57, 0xdf, 0x16, 0x7f, 0x55, 0x81, 0xc9, 0x01, 0xb9, 0x76, 0xe0, 0x43, 0x9e, 0x81, 0x24, 0x0f, - 0x51, 0x5e, 0x7d, 0x1e, 0x1d, 0x98, 0xb4, 0x59, 0xc0, 0xf6, 0x55, 0x20, 0x86, 0x0b, 0x57, 0xe0, - 0xf8, 0x11, 0x15, 0x98, 0x52, 0xf4, 0x19, 0xf9, 0xb2, 0x02, 0xf9, 0xa3, 0xb8, 0x23, 0x12, 0x45, - 0xac, 0x2b, 0x51, 0x5c, 0xec, 0x35, 0xe0, 0xf4, 0xd1, 0x6b, 0xe8, 0xb3, 0xe2, 0x75, 0x05, 0x4e, - 0x0e, 0x6e, 0x54, 0x06, 0xda, 0xf0, 0x34, 0x8c, 0x34, 0x88, 0x7f, 0xe0, 0xc8, 0x62, 0xfd, 0xf0, - 0x80, 0x12, 0x40, 0xa7, 0x7b, 0x7d, 0x25, 0x50, 0xe1, 0x1a, 0x12, 0x3f, 0xaa, 0xdb, 0xe0, 0xd6, - 0xf4, 0x59, 0xfa, 0xb9, 0x18, 0xdc, 0x33, 0x90, 0x7c, 0xa0, 0xa1, 0xf7, 0x03, 0x98, 0x76, 0xb3, - 0xe5, 0xf3, 0x82, 0xcc, 0xf3, 0x53, 0x9a, 0x49, 0xd8, 0xd9, 0xa7, 0xb9, 0xa7, 0xe5, 0x07, 0xf3, - 0x71, 0x36, 0x0f, 0x5c, 0xc4, 0x14, 0x2e, 0x74, 0x0c, 0x4d, 0x30, 0x43, 0x0b, 0x47, 0xac, 0xb4, - 0xaf, 0xd6, 0x3d, 0x01, 0xaa, 0x61, 0x99, 0xc4, 0xf6, 0x75, 0xcf, 0x77, 0x09, 0x6e, 0x98, 0x76, - 0x9d, 0x25, 0xe0, 0x54, 0x31, 0xb9, 0x8f, 0x2d, 0x8f, 0x68, 0xe3, 0x7c, 0x7a, 0x5b, 0xce, 0x52, - 0x04, 0xab, 0x32, 0x6e, 0x08, 0x31, 0xd2, 0x85, 0xe0, 0xd3, 0x01, 0x62, 0xee, 0xf3, 0xa3, 0x90, - 0x09, 0xb5, 0x75, 0xe8, 0x34, 0x64, 0xaf, 0xe0, 0x6b, 0x58, 0x97, 0xad, 0x3a, 0xf7, 0x44, 0x86, - 0xca, 0xb6, 0x44, 0xbb, 0xfe, 0x04, 0x4c, 0x31, 0x15, 0xa7, 0xe5, 0x13, 0x57, 0x37, 0x2c, 0xec, - 0x79, 0xcc, 0x69, 0x29, 0xa6, 0x8a, 0xe8, 0xdc, 0x26, 0x9d, 0x5a, 0x96, 0x33, 0xe8, 0x1c, 0x4c, - 0x32, 0x44, 0xa3, 0x65, 0xf9, 0x66, 0xd3, 0x22, 0x3a, 0x7d, 0x79, 0xf0, 0x58, 0x22, 0x0e, 0x2c, - 0x9b, 0xa0, 0x1a, 0x55, 0xa1, 0x40, 0x2d, 0xf2, 0xd0, 0x2a, 0xdc, 0xcf, 0x60, 0x75, 0x62, 0x13, - 0x17, 0xfb, 0x44, 0x27, 0xbf, 0xdc, 0xc2, 0x96, 0xa7, 0x63, 0xbb, 0xa6, 0x1f, 0x60, 0xef, 0x20, - 0x3f, 0x15, 0x26, 0x38, 0x45, 0x75, 0x57, 0x85, 0x6a, 0x85, 0x69, 0x96, 0xec, 0xda, 0xc7, 0xb1, - 0x77, 0x80, 0x8a, 0x70, 0x92, 0x11, 0x79, 0xbe, 0x6b, 0xda, 0x75, 0xdd, 0x38, 0x20, 0xc6, 0x55, - 0xbd, 0xe5, 0xef, 0x5f, 0xc8, 0xdf, 0x17, 0x66, 0x60, 0x46, 0x6e, 0x33, 0x9d, 0x65, 0xaa, 0xb2, - 0xeb, 0xef, 0x5f, 0x40, 0xdb, 0x90, 0xa5, 0xfb, 0xd1, 0x30, 0x5f, 0x22, 0xfa, 0xbe, 0xe3, 0xb2, - 0xe2, 0x92, 0x1b, 0x70, 0xb8, 0x43, 0x4e, 0x5c, 0xd8, 0x14, 0x80, 0xaa, 0x53, 0x23, 0xc5, 0xe4, - 0xf6, 0x56, 0xa5, 0xb2, 0xa2, 0x65, 0x24, 0xcb, 0x25, 0xc7, 0xa5, 0x31, 0x55, 0x77, 0x02, 0x1f, - 0x67, 0x78, 0x4c, 0xd5, 0x1d, 0xe9, 0xe1, 0x73, 0x30, 0x69, 0x18, 0x7c, 0xd9, 0xa6, 0xa1, 0x8b, - 0x2e, 0xdf, 0xcb, 0xab, 0x5d, 0xfe, 0x32, 0x8c, 0x55, 0xae, 0x20, 0xc2, 0xdc, 0x43, 0x4f, 0xc1, - 0x3d, 0x1d, 0x7f, 0x85, 0x81, 0x13, 0x7d, 0xab, 0xec, 0x85, 0x9e, 0x83, 0xc9, 0x66, 0xbb, 0x1f, - 0x88, 0xba, 0x9e, 0xd8, 0x6c, 0xf7, 0xc2, 0x1e, 0x62, 0x6f, 0x6e, 0x2e, 0x31, 0xb0, 0x4f, 0x6a, - 0xf9, 0x7b, 0xc3, 0xda, 0xa1, 0x09, 0x74, 0x06, 0x54, 0xc3, 0xd0, 0x89, 0x8d, 0xf7, 0x2c, 0xa2, - 0x63, 0x97, 0xd8, 0xd8, 0xcb, 0xcf, 0x84, 0x95, 0x73, 0x86, 0x51, 0x61, 0xb3, 0x25, 0x36, 0x89, - 0x1e, 0x83, 0x09, 0x67, 0xef, 0x8a, 0xc1, 0x83, 0x4b, 0x6f, 0xba, 0x64, 0xdf, 0x7c, 0x31, 0xff, - 0x20, 0x73, 0xd3, 0x38, 0x9d, 0x60, 0xa1, 0xb5, 0xc5, 0xc4, 0xe8, 0x51, 0x50, 0x0d, 0xef, 0x00, - 0xbb, 0x4d, 0x56, 0xdd, 0xbd, 0x26, 0x36, 0x48, 0xfe, 0x21, 0xae, 0xca, 0xe5, 0x1b, 0x52, 0x8c, - 0x9e, 0x83, 0xa9, 0x96, 0x6d, 0xda, 0x3e, 0x71, 0x9b, 0x2e, 0xa1, 0x4d, 0x3a, 0x3f, 0x69, 0xf9, - 0x7f, 0x1b, 0x3d, 0xa2, 0xcd, 0xde, 0x0d, 0x6b, 0xf3, 0xdd, 0xd5, 0x26, 0x5b, 0xfd, 0xc2, 0xb9, - 0x22, 0x64, 0xc3, 0x9b, 0x8e, 0xd2, 0xc0, 0xb7, 0x5d, 0x55, 0x68, 0x0d, 0x5d, 0xde, 0x5c, 0xa1, - 0xd5, 0xef, 0x85, 0x8a, 0x1a, 0xa3, 0x55, 0x78, 0x7d, 0x6d, 0xa7, 0xa2, 0x6b, 0xbb, 0x1b, 0x3b, - 0x6b, 0xd5, 0x8a, 0x1a, 0x7f, 0x2c, 0x9d, 0x7a, 0x67, 0x54, 0xbd, 0x71, 0xe3, 0xc6, 0x8d, 0xd8, - 0xdc, 0x77, 0x63, 0x90, 0xeb, 0xee, 0x7c, 0xd1, 0x47, 0xe1, 0x5e, 0xf9, 0x9a, 0xea, 0x11, 0x5f, - 0xbf, 0x6e, 0xba, 0x2c, 0x0e, 0x1b, 0x98, 0xf7, 0x8e, 0x81, 0x0b, 0xa7, 0x84, 0xd6, 0x36, 0xf1, - 0x9f, 0x35, 0x5d, 0x1a, 0x65, 0x0d, 0xec, 0xa3, 0x75, 0x98, 0xb1, 0x1d, 0xdd, 0xf3, 0xb1, 0x5d, - 0xc3, 0x6e, 0x4d, 0xef, 0x5c, 0x10, 0xe8, 0xd8, 0x30, 0x88, 0xe7, 0x39, 0xbc, 0x04, 0x04, 0x2c, - 0x1f, 0xb2, 0x9d, 0x6d, 0xa1, 0xdc, 0xc9, 0x8d, 0x25, 0xa1, 0xda, 0xb3, 0xdd, 0xf1, 0xa3, 0xb6, - 0xfb, 0x3e, 0x48, 0x37, 0x70, 0x53, 0x27, 0xb6, 0xef, 0xb6, 0x59, 0xbf, 0x96, 0xd2, 0x52, 0x0d, - 0xdc, 0xac, 0xd0, 0xf1, 0x4f, 0x6f, 0x0f, 0xc2, 0x7e, 0xfc, 0x97, 0x38, 0x64, 0xc3, 0x3d, 0x1b, - 0x6d, 0x81, 0x0d, 0x96, 0x9f, 0x15, 0x76, 0x7c, 0x1f, 0xb8, 0x63, 0x87, 0xb7, 0xb0, 0x4c, 0x13, - 0x77, 0x71, 0x84, 0x77, 0x52, 0x1a, 0x47, 0xd2, 0xa2, 0x49, 0x0f, 0x2c, 0xe1, 0xfd, 0x79, 0x4a, - 0x13, 0x23, 0xb4, 0x0a, 0x23, 0x57, 0x3c, 0xc6, 0x3d, 0xc2, 0xb8, 0x1f, 0xbc, 0x33, 0xf7, 0xe5, - 0x6d, 0x46, 0x9e, 0xbe, 0xbc, 0xad, 0x6f, 0x6c, 0x6a, 0xd5, 0xd2, 0xba, 0x26, 0xe0, 0xe8, 0x14, - 0x24, 0x2c, 0xfc, 0x52, 0xbb, 0x3b, 0xc5, 0x33, 0xd1, 0xb0, 0x8e, 0x3f, 0x05, 0x89, 0xeb, 0x04, - 0x5f, 0xed, 0x4e, 0xac, 0x4c, 0xf4, 0x53, 0x0c, 0xfd, 0x33, 0x90, 0x64, 0xfe, 0x42, 0x00, 0xc2, - 0x63, 0xea, 0x09, 0x94, 0x82, 0xc4, 0xf2, 0xa6, 0x46, 0xc3, 0x5f, 0x85, 0x2c, 0x97, 0xea, 0x5b, - 0x6b, 0x95, 0xe5, 0x8a, 0x1a, 0x9b, 0x3b, 0x07, 0x23, 0xdc, 0x09, 0xf4, 0x68, 0x04, 0x6e, 0x50, - 0x4f, 0x88, 0xa1, 0xe0, 0x50, 0xe4, 0xec, 0x6e, 0xb5, 0x5c, 0xd1, 0xd4, 0x58, 0x78, 0x7b, 0x3d, - 0xc8, 0x86, 0xdb, 0xb5, 0x9f, 0x4d, 0x4c, 0xfd, 0xbd, 0x02, 0x99, 0x50, 0xfb, 0x45, 0x0b, 0x3f, - 0xb6, 0x2c, 0xe7, 0xba, 0x8e, 0x2d, 0x13, 0x7b, 0x22, 0x28, 0x80, 0x89, 0x4a, 0x54, 0x32, 0xec, - 0xa6, 0xfd, 0x4c, 0x8c, 0x7f, 0x4d, 0x01, 0xb5, 0xb7, 0x75, 0xeb, 0x31, 0x50, 0xf9, 0xb9, 0x1a, - 0xf8, 0xaa, 0x02, 0xb9, 0xee, 0x7e, 0xad, 0xc7, 0xbc, 0xd3, 0x3f, 0x57, 0xf3, 0xbe, 0xa4, 0xc0, - 0x58, 0x57, 0x97, 0xf6, 0x0b, 0x65, 0xdd, 0x2b, 0x71, 0x98, 0x1c, 0x80, 0x43, 0x25, 0xd1, 0xce, - 0xf2, 0x0e, 0xfb, 0x23, 0xc3, 0x3c, 0x6b, 0x81, 0x56, 0xcb, 0x2d, 0xec, 0xfa, 0xa2, 0xfb, 0x7d, - 0x14, 0x54, 0xb3, 0x46, 0x6c, 0xdf, 0xdc, 0x37, 0x89, 0x2b, 0x5e, 0xc1, 0x79, 0x8f, 0x3b, 0xde, - 0x91, 0xf3, 0xb7, 0xf0, 0x0f, 0x03, 0x6a, 0x3a, 0x9e, 0xe9, 0x9b, 0xd7, 0x88, 0x6e, 0xda, 0xf2, - 0x7d, 0x9d, 0xf6, 0xbc, 0x09, 0x4d, 0x95, 0x33, 0x6b, 0xb6, 0x1f, 0x68, 0xdb, 0xa4, 0x8e, 0x7b, - 0xb4, 0x69, 0xee, 0x8b, 0x6b, 0xaa, 0x9c, 0x09, 0xb4, 0x4f, 0x43, 0xb6, 0xe6, 0xb4, 0x68, 0xfb, - 0xc0, 0xf5, 0x68, 0xaa, 0x55, 0xb4, 0x0c, 0x97, 0x05, 0x2a, 0xa2, 0xbf, 0xeb, 0x5c, 0x14, 0x64, - 0xb5, 0x0c, 0x97, 0x71, 0x95, 0x47, 0x60, 0x1c, 0xd7, 0xeb, 0x2e, 0x25, 0x97, 0x44, 0xbc, 0x69, - 0xcd, 0x05, 0x62, 0xa6, 0x38, 0x7d, 0x19, 0x52, 0xd2, 0x0f, 0xb4, 0x9a, 0x51, 0x4f, 0xe8, 0x4d, - 0x7e, 0x5d, 0x13, 0x9b, 0x4f, 0x6b, 0x29, 0x5b, 0x4e, 0x9e, 0x86, 0xac, 0xe9, 0xe9, 0x9d, 0x7b, - 0xc3, 0xd8, 0x6c, 0x6c, 0x3e, 0xa5, 0x65, 0x4c, 0x2f, 0xb8, 0x28, 0x9a, 0x7b, 0x3d, 0x06, 0xb9, - 0xee, 0x7b, 0x4f, 0xb4, 0x02, 0x29, 0xcb, 0x31, 0x30, 0x0b, 0x04, 0x7e, 0xe9, 0x3e, 0x1f, 0x71, - 0x55, 0xba, 0xb0, 0x2e, 0xf4, 0xb5, 0x00, 0x39, 0xfd, 0x4f, 0x0a, 0xa4, 0xa4, 0x18, 0x9d, 0x84, - 0x44, 0x13, 0xfb, 0x07, 0x8c, 0x2e, 0x59, 0x8e, 0xa9, 0x8a, 0xc6, 0xc6, 0x54, 0xee, 0x35, 0xb1, - 0xcd, 0x42, 0x40, 0xc8, 0xe9, 0x98, 0xee, 0xab, 0x45, 0x70, 0x8d, 0xb5, 0xc3, 0x4e, 0xa3, 0x41, - 0x6c, 0xdf, 0x93, 0xfb, 0x2a, 0xe4, 0xcb, 0x42, 0x8c, 0x1e, 0x87, 0x09, 0xdf, 0xc5, 0xa6, 0xd5, - 0xa5, 0x9b, 0x60, 0xba, 0xaa, 0x9c, 0x08, 0x94, 0x8b, 0x70, 0x4a, 0xf2, 0xd6, 0x88, 0x8f, 0x8d, - 0x03, 0x52, 0xeb, 0x80, 0x46, 0xd8, 0xa5, 0xda, 0xbd, 0x42, 0x61, 0x45, 0xcc, 0x4b, 0xec, 0xdc, - 0xf7, 0x15, 0x98, 0x90, 0x0d, 0x7c, 0x2d, 0x70, 0x56, 0x15, 0x00, 0xdb, 0xb6, 0xe3, 0x87, 0xdd, - 0xd5, 0x1f, 0xca, 0x7d, 0xb8, 0x85, 0x52, 0x00, 0xd2, 0x42, 0x04, 0xd3, 0x0d, 0x80, 0xce, 0xcc, - 0x91, 0x6e, 0x9b, 0x81, 0x8c, 0xb8, 0xd4, 0x66, 0xbf, 0x8c, 0xf0, 0xb7, 0x3e, 0xe0, 0x22, 0xda, - 0xe9, 0xa3, 0x29, 0x48, 0xee, 0x91, 0xba, 0x69, 0x8b, 0xab, 0x36, 0x3e, 0x90, 0x17, 0x78, 0x89, - 0xe0, 0x02, 0xaf, 0xfc, 0x29, 0x98, 0x34, 0x9c, 0x46, 0xaf, 0xb9, 0x65, 0xb5, 0xe7, 0xcd, 0xd3, - 0xfb, 0xb8, 0xf2, 0x02, 0x74, 0xba, 0xb3, 0xaf, 0x28, 0xca, 0x57, 0x63, 0xf1, 0xd5, 0xad, 0xf2, - 0xd7, 0x63, 0xd3, 0xab, 0x1c, 0xba, 0x25, 0x57, 0xaa, 0x91, 0x7d, 0x8b, 0x18, 0xd4, 0x7a, 0xf8, - 0xd1, 0xc3, 0xf0, 0x91, 0xba, 0xe9, 0x1f, 0xb4, 0xf6, 0x16, 0x0c, 0xa7, 0x71, 0xa6, 0xee, 0xd4, - 0x9d, 0xce, 0x8f, 0x41, 0x74, 0xc4, 0x06, 0xec, 0x3f, 0xf1, 0x83, 0x50, 0x3a, 0x90, 0x4e, 0x47, - 0xfe, 0x7a, 0x54, 0xdc, 0x80, 0x49, 0xa1, 0xac, 0xb3, 0x1b, 0x69, 0xde, 0x87, 0xa3, 0x3b, 0xde, - 0x4a, 0xe4, 0xbf, 0xf9, 0x36, 0xab, 0x74, 0xda, 0x84, 0x80, 0xd2, 0x39, 0xde, 0xa9, 0x17, 0x35, - 0xb8, 0xa7, 0x8b, 0x8f, 0x1f, 0x4d, 0xe2, 0x46, 0x30, 0x7e, 0x57, 0x30, 0x4e, 0x86, 0x18, 0xb7, - 0x05, 0xb4, 0xb8, 0x0c, 0x63, 0xc7, 0xe1, 0xfa, 0x07, 0xc1, 0x95, 0x25, 0x61, 0x92, 0x55, 0x18, - 0x67, 0x24, 0x46, 0xcb, 0xf3, 0x9d, 0x06, 0xcb, 0x7b, 0x77, 0xa6, 0xf9, 0xc7, 0xb7, 0xf9, 0x59, - 0xc9, 0x51, 0xd8, 0x72, 0x80, 0x2a, 0x16, 0x81, 0x5d, 0xc2, 0xd7, 0x88, 0x61, 0x45, 0x30, 0xbc, - 0x29, 0x0c, 0x09, 0xf4, 0x8b, 0x9f, 0x84, 0x29, 0xfa, 0x3f, 0x4b, 0x4b, 0x61, 0x4b, 0xa2, 0xef, - 0x60, 0xf2, 0xdf, 0x7f, 0x99, 0x1f, 0xc7, 0xc9, 0x80, 0x20, 0x64, 0x53, 0x68, 0x17, 0xeb, 0xc4, - 0xf7, 0x89, 0xeb, 0xe9, 0xd8, 0x1a, 0x64, 0x5e, 0xe8, 0x0d, 0x36, 0xff, 0xc5, 0x77, 0xbb, 0x77, - 0x71, 0x95, 0x23, 0x4b, 0x96, 0x55, 0xdc, 0x85, 0x7b, 0x07, 0x44, 0xc5, 0x10, 0x9c, 0xaf, 0x08, - 0xce, 0xa9, 0xbe, 0xc8, 0xa0, 0xb4, 0x5b, 0x20, 0xe5, 0xc1, 0x5e, 0x0e, 0xc1, 0xf9, 0x25, 0xc1, - 0x89, 0x04, 0x56, 0x6e, 0x29, 0x65, 0xbc, 0x0c, 0x13, 0xd7, 0x88, 0xbb, 0xe7, 0x78, 0xe2, 0xe2, - 0x60, 0x08, 0xba, 0x57, 0x05, 0xdd, 0xb8, 0x00, 0xb2, 0x6b, 0x04, 0xca, 0xf5, 0x14, 0xa4, 0xf6, - 0xb1, 0x41, 0x86, 0xa0, 0xf8, 0xb2, 0xa0, 0x18, 0xa5, 0xfa, 0x14, 0x5a, 0x82, 0x6c, 0xdd, 0x11, - 0x95, 0x29, 0x1a, 0xfe, 0x9a, 0x80, 0x67, 0x24, 0x46, 0x50, 0x34, 0x9d, 0x66, 0xcb, 0xa2, 0x65, - 0x2b, 0x9a, 0xe2, 0x0f, 0x25, 0x85, 0xc4, 0x08, 0x8a, 0x63, 0xb8, 0xf5, 0x2b, 0x92, 0xc2, 0x0b, - 0xf9, 0xf3, 0x19, 0xc8, 0x38, 0xb6, 0xd5, 0x76, 0xec, 0x61, 0x8c, 0xf8, 0x23, 0xc1, 0x00, 0x02, - 0x42, 0x09, 0x2e, 0x42, 0x7a, 0xd8, 0x8d, 0xf8, 0xe3, 0x77, 0xe5, 0xf1, 0x90, 0x3b, 0xb0, 0x0a, - 0xe3, 0x32, 0x41, 0x99, 0x8e, 0x3d, 0x04, 0xc5, 0x9f, 0x08, 0x8a, 0x5c, 0x08, 0x26, 0x96, 0xe1, - 0x13, 0xcf, 0xaf, 0x93, 0x61, 0x48, 0x5e, 0x97, 0xcb, 0x10, 0x10, 0xe1, 0xca, 0x3d, 0x62, 0x1b, - 0x07, 0xc3, 0x31, 0x7c, 0x4d, 0xba, 0x52, 0x62, 0x28, 0xc5, 0x32, 0x8c, 0x35, 0xb0, 0xeb, 0x1d, - 0x60, 0x6b, 0xa8, 0xed, 0xf8, 0x53, 0xc1, 0x91, 0x0d, 0x40, 0xc2, 0x23, 0x2d, 0xfb, 0x38, 0x34, - 0x5f, 0x97, 0x1e, 0x09, 0xc1, 0xc4, 0xd1, 0xf3, 0x7c, 0x76, 0x37, 0x73, 0x1c, 0xb6, 0x3f, 0x93, - 0x47, 0x8f, 0x63, 0xab, 0x61, 0xc6, 0x8b, 0x90, 0xf6, 0xcc, 0x97, 0x86, 0xa2, 0xf9, 0x73, 0xb9, - 0xd3, 0x0c, 0x40, 0xc1, 0xcf, 0xc3, 0xa9, 0x81, 0x65, 0x62, 0x08, 0xb2, 0xbf, 0x10, 0x64, 0x27, - 0x07, 0x94, 0x0a, 0x91, 0x12, 0x8e, 0x4b, 0xf9, 0x97, 0x32, 0x25, 0x90, 0x1e, 0xae, 0x2d, 0xda, - 0xd9, 0x7b, 0x78, 0xff, 0x78, 0x5e, 0xfb, 0x2b, 0xe9, 0x35, 0x8e, 0xed, 0xf2, 0xda, 0x0e, 0x9c, - 0x14, 0x8c, 0xc7, 0xdb, 0xd7, 0x6f, 0xc8, 0xc4, 0xca, 0xd1, 0xbb, 0xdd, 0xbb, 0xfb, 0x29, 0x98, - 0x0e, 0xdc, 0x29, 0x9b, 0x52, 0x4f, 0x6f, 0xe0, 0xe6, 0x10, 0xcc, 0xdf, 0x14, 0xcc, 0x32, 0xe3, - 0x07, 0x5d, 0xad, 0x57, 0xc5, 0x4d, 0x4a, 0xfe, 0x1c, 0xe4, 0x25, 0x79, 0xcb, 0x76, 0x89, 0xe1, - 0xd4, 0x6d, 0xf3, 0x25, 0x52, 0x1b, 0x82, 0xfa, 0xaf, 0x7b, 0xb6, 0x6a, 0x37, 0x04, 0xa7, 0xcc, - 0x6b, 0xa0, 0x06, 0xbd, 0x8a, 0x6e, 0x36, 0x9a, 0x8e, 0xeb, 0x47, 0x30, 0xfe, 0x8d, 0xdc, 0xa9, - 0x00, 0xb7, 0xc6, 0x60, 0xc5, 0x0a, 0xe4, 0xd8, 0x70, 0xd8, 0x90, 0xfc, 0x5b, 0x41, 0x34, 0xd6, - 0x41, 0x89, 0xc4, 0x61, 0x38, 0x8d, 0x26, 0x76, 0x87, 0xc9, 0x7f, 0x6f, 0xc8, 0xc4, 0x21, 0x20, - 0x22, 0x71, 0xf8, 0xed, 0x26, 0xa1, 0xd5, 0x7e, 0x08, 0x86, 0x6f, 0xc9, 0xc4, 0x21, 0x31, 0x82, - 0x42, 0x36, 0x0c, 0x43, 0x50, 0xfc, 0x9d, 0xa4, 0x90, 0x18, 0x4a, 0xf1, 0x89, 0x4e, 0xa1, 0x75, - 0x49, 0xdd, 0xf4, 0x7c, 0x97, 0xb7, 0xc2, 0x77, 0xa6, 0xfa, 0xf6, 0xbb, 0xdd, 0x4d, 0x98, 0x16, - 0x82, 0x16, 0x2f, 0xc3, 0x78, 0x4f, 0x8b, 0x81, 0xa2, 0x7e, 0xd1, 0xcf, 0x7f, 0xfa, 0x7d, 0x91, - 0x8c, 0xba, 0x3b, 0x8c, 0xe2, 0x3a, 0xdd, 0xf7, 0xee, 0x3e, 0x20, 0x9a, 0xec, 0xe5, 0xf7, 0x83, - 0xad, 0xef, 0x6a, 0x03, 0x8a, 0x97, 0x60, 0xac, 0xab, 0x07, 0x88, 0xa6, 0xfa, 0x15, 0x41, 0x95, - 0x0d, 0xb7, 0x00, 0xc5, 0x73, 0x90, 0xa0, 0xf5, 0x3c, 0x1a, 0xfe, 0xab, 0x02, 0xce, 0xd4, 0x8b, - 0x1f, 0x83, 0x94, 0xac, 0xe3, 0xd1, 0xd0, 0x5f, 0x13, 0xd0, 0x00, 0x42, 0xe1, 0xb2, 0x86, 0x47, - 0xc3, 0x3f, 0x2b, 0xe1, 0x12, 0x42, 0xe1, 0xc3, 0xbb, 0xf0, 0x3b, 0x9f, 0x4f, 0x88, 0x3c, 0x2c, - 0x7d, 0x77, 0x11, 0x46, 0x45, 0xf1, 0x8e, 0x46, 0x7f, 0x4e, 0x3c, 0x5c, 0x22, 0x8a, 0x4f, 0x42, - 0x72, 0x48, 0x87, 0xff, 0x86, 0x80, 0x72, 0xfd, 0xe2, 0x32, 0x64, 0x42, 0x05, 0x3b, 0x1a, 0xfe, - 0x9b, 0x02, 0x1e, 0x46, 0x51, 0xd3, 0x45, 0xc1, 0x8e, 0x26, 0xf8, 0x2d, 0x69, 0xba, 0x40, 0x50, - 0xb7, 0xc9, 0x5a, 0x1d, 0x8d, 0xfe, 0x6d, 0xe9, 0x75, 0x09, 0x29, 0x3e, 0x03, 0xe9, 0x20, 0xff, - 0x46, 0xe3, 0x7f, 0x47, 0xe0, 0x3b, 0x18, 0xea, 0x81, 0x50, 0xfe, 0x8f, 0xa6, 0xf8, 0x5d, 0xe9, - 0x81, 0x10, 0x8a, 0x1e, 0xa3, 0xde, 0x9a, 0x1e, 0xcd, 0xf4, 0x7b, 0xf2, 0x18, 0xf5, 0x94, 0x74, - 0xba, 0x9b, 0x2c, 0x0d, 0x46, 0x53, 0xfc, 0xbe, 0xdc, 0x4d, 0xa6, 0x4f, 0xcd, 0xe8, 0x2d, 0x92, - 0xd1, 0x1c, 0x7f, 0x20, 0xcd, 0xe8, 0xa9, 0x91, 0xc5, 0x2d, 0x40, 0xfd, 0x05, 0x32, 0x9a, 0xef, - 0x0b, 0x82, 0x6f, 0xa2, 0xaf, 0x3e, 0x16, 0x9f, 0x85, 0x93, 0x83, 0x8b, 0x63, 0x34, 0xeb, 0x17, - 0xdf, 0xef, 0x79, 0x9d, 0x09, 0xd7, 0xc6, 0xe2, 0x4e, 0x27, 0xcb, 0x86, 0x0b, 0x63, 0x34, 0xed, - 0x2b, 0xef, 0x77, 0x27, 0xda, 0x70, 0x5d, 0x2c, 0x96, 0x00, 0x3a, 0x35, 0x29, 0x9a, 0xeb, 0x55, - 0xc1, 0x15, 0x02, 0xd1, 0xa3, 0x21, 0x4a, 0x52, 0x34, 0xfe, 0xcb, 0xf2, 0x68, 0x08, 0x04, 0x3d, - 0x1a, 0xb2, 0x1a, 0x45, 0xa3, 0x5f, 0x93, 0x47, 0x43, 0x42, 0x8a, 0x17, 0x21, 0x65, 0xb7, 0x2c, - 0x8b, 0xc6, 0x16, 0xba, 0xf3, 0x47, 0x36, 0xf9, 0x1f, 0x7e, 0x20, 0xc0, 0x12, 0x50, 0x3c, 0x07, - 0x49, 0xd2, 0xd8, 0x23, 0xb5, 0x28, 0xe4, 0xbf, 0x7f, 0x20, 0xf3, 0x09, 0xd5, 0x2e, 0x3e, 0x03, - 0xc0, 0x5f, 0xa6, 0xd9, 0x6f, 0x2c, 0x11, 0xd8, 0xff, 0xf8, 0x40, 0xfc, 0x7e, 0xdf, 0x81, 0x74, - 0x08, 0xf8, 0xd7, 0x00, 0x77, 0x26, 0x78, 0xb7, 0x9b, 0x80, 0xbd, 0x80, 0x3f, 0x05, 0xa3, 0x57, - 0x3c, 0xc7, 0xf6, 0x71, 0x3d, 0x0a, 0xfd, 0x9f, 0x02, 0x2d, 0xf5, 0xa9, 0xc3, 0x1a, 0x8e, 0x4b, - 0x7c, 0x5c, 0xf7, 0xa2, 0xb0, 0xff, 0x25, 0xb0, 0x01, 0x80, 0x82, 0x0d, 0xec, 0xf9, 0xc3, 0xac, - 0xfb, 0xbf, 0x25, 0x58, 0x02, 0xa8, 0xd1, 0xf4, 0xff, 0xab, 0xa4, 0x1d, 0x85, 0x7d, 0x4f, 0x1a, - 0x2d, 0xf4, 0x8b, 0x1f, 0x83, 0x34, 0xfd, 0x97, 0x7f, 0xd3, 0x12, 0x01, 0xfe, 0x1f, 0x01, 0xee, - 0x20, 0xe8, 0x93, 0x3d, 0xbf, 0xe6, 0x9b, 0xd1, 0xce, 0xfe, 0x5f, 0xb1, 0xd3, 0x52, 0xbf, 0x58, - 0x82, 0x8c, 0xe7, 0xd7, 0x6a, 0x2d, 0xd1, 0xd1, 0x44, 0xc0, 0x7f, 0xf4, 0x41, 0xf0, 0x92, 0x1b, - 0x60, 0xca, 0xa7, 0x07, 0xdf, 0xd7, 0xc1, 0xaa, 0xb3, 0xea, 0xf0, 0x9b, 0x3a, 0x78, 0x63, 0x1c, - 0x66, 0x0d, 0xa7, 0xb1, 0xe7, 0x78, 0x67, 0x78, 0x42, 0xd9, 0x73, 0xfc, 0x83, 0x33, 0xd2, 0x73, - 0xe2, 0xa2, 0x2d, 0xf0, 0xe4, 0xf4, 0xf1, 0x6e, 0xe8, 0xe6, 0x7e, 0x38, 0x06, 0xa9, 0x65, 0xec, - 0xf9, 0xf8, 0x3a, 0x6e, 0xa3, 0x87, 0x20, 0xb5, 0x66, 0xfb, 0x67, 0x17, 0xb7, 0x7c, 0x97, 0xfd, - 0x3e, 0x13, 0x2f, 0xa7, 0x6f, 0xdf, 0x9c, 0x49, 0x9a, 0x54, 0xa6, 0x05, 0x53, 0xe8, 0x01, 0x48, - 0xb2, 0xff, 0xd9, 0x3d, 0x65, 0xbc, 0x3c, 0xf6, 0xe6, 0xcd, 0x99, 0x13, 0x1d, 0x3d, 0x3e, 0x87, - 0x9e, 0x87, 0x4c, 0xb5, 0xbd, 0x6b, 0xda, 0xfe, 0xf9, 0x25, 0x4a, 0x47, 0xd7, 0x9e, 0x28, 0x3f, - 0x79, 0xfb, 0xe6, 0xcc, 0xd9, 0x23, 0x0d, 0xa4, 0x15, 0xb1, 0xb3, 0x30, 0x89, 0x66, 0x9f, 0xf5, - 0x85, 0xb9, 0xd0, 0xb3, 0x90, 0x92, 0x43, 0x7e, 0xdf, 0x5f, 0xbe, 0x28, 0x4c, 0xb8, 0x2b, 0xee, - 0x80, 0x0c, 0xfd, 0x12, 0x64, 0xab, 0xed, 0x4b, 0x96, 0x83, 0x85, 0x0f, 0x92, 0xb3, 0xca, 0x7c, - 0xac, 0x7c, 0xe1, 0xf6, 0xcd, 0x99, 0xa5, 0xa1, 0x89, 0x05, 0x9c, 0x31, 0x77, 0xb1, 0xa1, 0x17, - 0x20, 0x1d, 0x8c, 0xd9, 0x2f, 0x0a, 0xb1, 0xf2, 0x47, 0x85, 0xdd, 0x77, 0x47, 0xdf, 0xa1, 0x0b, - 0x59, 0xce, 0xdd, 0x3d, 0x3a, 0xab, 0xcc, 0x2b, 0x77, 0x63, 0xb9, 0xf0, 0x49, 0x17, 0x5b, 0xc8, - 0xf2, 0xf3, 0x4b, 0xec, 0x27, 0x0c, 0xe5, 0x6e, 0x2d, 0x17, 0xf4, 0x1d, 0x3a, 0x74, 0x19, 0x46, - 0xab, 0xed, 0x72, 0xdb, 0x27, 0x1e, 0xfb, 0xd6, 0x25, 0x5b, 0x7e, 0xe2, 0xf6, 0xcd, 0x99, 0x0f, - 0x0f, 0xc9, 0xca, 0x70, 0x9a, 0x24, 0x40, 0xb3, 0x90, 0xd9, 0x70, 0xdc, 0x06, 0xb6, 0x38, 0x1f, - 0xf0, 0x9f, 0x64, 0x42, 0x22, 0xb4, 0x4b, 0x57, 0xc2, 0x77, 0xdb, 0x63, 0x1f, 0xea, 0xff, 0x04, - 0x31, 0xd9, 0x61, 0x42, 0x26, 0x24, 0xab, 0xed, 0x2a, 0x6e, 0xe6, 0xb3, 0xec, 0xf7, 0x82, 0xfb, - 0x17, 0x02, 0x84, 0x3c, 0x5b, 0x0b, 0x6c, 0x9e, 0x7d, 0x93, 0x50, 0x5e, 0xba, 0x7d, 0x73, 0xe6, - 0x89, 0xa1, 0x9f, 0x58, 0xc5, 0x4d, 0xf6, 0x38, 0xfe, 0x04, 0xf4, 0x86, 0x42, 0x0f, 0x16, 0xbf, - 0x70, 0xa5, 0x4f, 0x1c, 0x63, 0x4f, 0x7c, 0x60, 0xe0, 0x13, 0x03, 0x2d, 0xfe, 0x5c, 0xfb, 0x33, - 0x6f, 0x1d, 0x63, 0xa5, 0xfc, 0xa5, 0x86, 0x3e, 0xfa, 0xd7, 0xdf, 0xba, 0xeb, 0x43, 0x1b, 0x58, - 0x80, 0x5e, 0x56, 0x60, 0xac, 0xda, 0xde, 0x10, 0xe5, 0x95, 0x5a, 0x9e, 0x13, 0x9f, 0x73, 0x0f, - 0xb2, 0x3c, 0xa4, 0xc7, 0x6d, 0x3f, 0xff, 0x99, 0xb7, 0x66, 0x16, 0x87, 0x36, 0x82, 0xa5, 0x20, - 0x66, 0x43, 0xf7, 0x33, 0xd1, 0x67, 0x99, 0x15, 0x15, 0x5a, 0xaa, 0x6b, 0xa4, 0x46, 0xad, 0x18, - 0xbf, 0x83, 0x15, 0x21, 0x3d, 0x6e, 0x45, 0x91, 0x46, 0xfd, 0xdd, 0x5b, 0x12, 0xe2, 0x43, 0x9b, - 0x30, 0xc2, 0x3d, 0xcc, 0xbe, 0xb3, 0x4a, 0x1f, 0x33, 0x0c, 0x3b, 0x9b, 0xa3, 0x09, 0x9a, 0xe9, - 0x0b, 0x00, 0x9d, 0x18, 0x43, 0x2a, 0xc4, 0xaf, 0x92, 0xb6, 0xf8, 0x9e, 0x8e, 0xfe, 0x8b, 0xa6, - 0x3a, 0xdf, 0x8b, 0x2a, 0xf3, 0x09, 0xf1, 0x11, 0x68, 0x31, 0x76, 0x41, 0x99, 0x7e, 0x1a, 0xd4, - 0xde, 0x58, 0x39, 0x16, 0x5e, 0x03, 0xd4, 0xbf, 0x63, 0x61, 0x86, 0x24, 0x67, 0x78, 0x38, 0xcc, - 0x90, 0x59, 0x54, 0x3b, 0x3e, 0x7f, 0xd6, 0xb4, 0x3c, 0xc7, 0xee, 0xe3, 0xec, 0xf5, 0xff, 0x4f, - 0xc6, 0x39, 0x57, 0x80, 0x11, 0x2e, 0xa4, 0x6b, 0x59, 0x63, 0xe5, 0x83, 0x55, 0x39, 0x8d, 0x0f, - 0xca, 0xeb, 0x6f, 0xde, 0x2a, 0x9c, 0xf8, 0xde, 0xad, 0xc2, 0x89, 0x7f, 0xbe, 0x55, 0x38, 0xf1, - 0x83, 0x5b, 0x05, 0xe5, 0x9d, 0x5b, 0x05, 0xe5, 0xbd, 0x5b, 0x05, 0xe5, 0xc7, 0xb7, 0x0a, 0xca, - 0x8d, 0xc3, 0x82, 0xf2, 0xb5, 0xc3, 0x82, 0xf2, 0x8d, 0xc3, 0x82, 0xf2, 0xed, 0xc3, 0x82, 0xf2, - 0x9d, 0xc3, 0x82, 0xf2, 0xe6, 0x61, 0xe1, 0xc4, 0xf7, 0x0e, 0x0b, 0x27, 0x7e, 0x70, 0x58, 0x50, - 0xde, 0x39, 0x2c, 0x9c, 0x78, 0xef, 0xb0, 0xa0, 0xfc, 0xf8, 0xb0, 0xa0, 0xdc, 0xf8, 0xd7, 0x82, - 0xf2, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xbe, 0x8c, 0x2a, 0x32, 0x35, 0x00, 0x00, + // 4128 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0x3f, 0x17, 0x1f, 0x24, 0x70, 0x00, 0x82, 0xcb, 0x4b, 0x5a, 0x82, 0xe8, 0x18, 0xa4, 0xe8, + 0x2f, 0xda, 0x4e, 0x28, 0x8f, 0xbe, 0x2c, 0x43, 0x89, 0x3d, 0x00, 0x09, 0x31, 0xd0, 0x9f, 0x20, + 0x90, 0x25, 0x19, 0x49, 0xfe, 0x77, 0x66, 0x67, 0xb9, 0xb8, 0x04, 0x57, 0x5a, 0xec, 0x22, 0xbb, + 0x0b, 0xc9, 0xf0, 0x93, 0x1a, 0xb7, 0xcd, 0xa4, 0x9d, 0x7e, 0x77, 0xa6, 0x89, 0xeb, 0xb8, 0x6d, + 0x66, 0x5a, 0xa7, 0x49, 0x3f, 0x92, 0xb6, 0x4e, 0x33, 0x7d, 0xca, 0x4b, 0x5a, 0x3f, 0x75, 0x92, + 0xb7, 0x3e, 0x74, 0x64, 0x8b, 0xf1, 0x4c, 0x9d, 0xd6, 0x6d, 0xdd, 0xc6, 0x33, 0xcd, 0xc8, 0x2f, + 0x9d, 0xfb, 0xb5, 0x58, 0x7c, 0x90, 0x0b, 0x2a, 0xe3, 0xe4, 0x89, 0xd8, 0x73, 0xcf, 0xef, 0xb7, + 0xe7, 0x9e, 0x7b, 0xee, 0x39, 0x67, 0xef, 0x2e, 0xe1, 0x87, 0xe7, 0x60, 0xa1, 0x61, 0xdb, 0x0d, + 0x13, 0x9f, 0x6a, 0x39, 0xb6, 0x67, 0xef, 0xb4, 0x77, 0x4f, 0xd5, 0xb1, 0xab, 0x3b, 0x46, 0xcb, + 0xb3, 0x9d, 0x65, 0x2a, 0x43, 0x53, 0x4c, 0x63, 0x59, 0x68, 0x2c, 0x56, 0x60, 0xfa, 0x92, 0x61, + 0xe2, 0x55, 0x5f, 0x71, 0x13, 0x7b, 0xe8, 0x02, 0xc4, 0x76, 0x0d, 0x13, 0x67, 0xa5, 0x85, 0xe8, + 0x52, 0xea, 0xf4, 0x23, 0xcb, 0x7d, 0xa0, 0xe5, 0x5e, 0x44, 0x8d, 0x88, 0x15, 0x8a, 0x58, 0x7c, + 0x27, 0x06, 0x33, 0x43, 0x46, 0x11, 0x82, 0x98, 0xa5, 0x35, 0x09, 0xa3, 0xb4, 0x94, 0x54, 0xe8, + 0x6f, 0x94, 0x85, 0x89, 0x96, 0xa6, 0xdf, 0xd0, 0x1a, 0x38, 0x1b, 0xa1, 0x62, 0x71, 0x89, 0x72, + 0x00, 0x75, 0xdc, 0xc2, 0x56, 0x1d, 0x5b, 0x7a, 0x27, 0x1b, 0x5d, 0x88, 0x2e, 0x25, 0x95, 0x80, + 0x04, 0x3d, 0x05, 0xd3, 0xad, 0xf6, 0x8e, 0x69, 0xe8, 0x6a, 0x40, 0x0d, 0x16, 0xa2, 0x4b, 0x71, + 0x45, 0x66, 0x03, 0xab, 0x5d, 0xe5, 0xc7, 0x61, 0xea, 0x16, 0xd6, 0x6e, 0x04, 0x55, 0x53, 0x54, + 0x35, 0x43, 0xc4, 0x01, 0xc5, 0x15, 0x48, 0x37, 0xb1, 0xeb, 0x6a, 0x0d, 0xac, 0x7a, 0x9d, 0x16, + 0xce, 0xc6, 0xe8, 0xec, 0x17, 0x06, 0x66, 0xdf, 0x3f, 0xf3, 0x14, 0x47, 0x6d, 0x75, 0x5a, 0x18, + 0x15, 0x20, 0x89, 0xad, 0x76, 0x93, 0x31, 0xc4, 0x0f, 0xf0, 0x5f, 0xc9, 0x6a, 0x37, 0xfb, 0x59, + 0x12, 0x04, 0xc6, 0x29, 0x26, 0x5c, 0xec, 0xdc, 0x34, 0x74, 0x9c, 0x1d, 0xa7, 0x04, 0x8f, 0x0f, + 0x10, 0x6c, 0xb2, 0xf1, 0x7e, 0x0e, 0x81, 0x43, 0x2b, 0x90, 0xc4, 0x2f, 0x7a, 0xd8, 0x72, 0x0d, + 0xdb, 0xca, 0x4e, 0x50, 0x92, 0x47, 0x87, 0xac, 0x22, 0x36, 0xeb, 0xfd, 0x14, 0x5d, 0x1c, 0x3a, + 0x0f, 0x13, 0x76, 0xcb, 0x33, 0x6c, 0xcb, 0xcd, 0x26, 0x16, 0xa4, 0xa5, 0xd4, 0xe9, 0x8f, 0x0d, + 0x0d, 0x84, 0x2a, 0xd3, 0x51, 0x84, 0x32, 0x2a, 0x83, 0xec, 0xda, 0x6d, 0x47, 0xc7, 0xaa, 0x6e, + 0xd7, 0xb1, 0x6a, 0x58, 0xbb, 0x76, 0x36, 0x49, 0x09, 0xe6, 0x07, 0x27, 0x42, 0x15, 0x57, 0xec, + 0x3a, 0x2e, 0x5b, 0xbb, 0xb6, 0x92, 0x71, 0x7b, 0xae, 0xd1, 0x31, 0x18, 0x77, 0x3b, 0x96, 0xa7, + 0xbd, 0x98, 0x4d, 0xd3, 0x08, 0xe1, 0x57, 0x8b, 0xff, 0x1b, 0x87, 0xa9, 0x51, 0x42, 0xec, 0x22, + 0xc4, 0x77, 0xc9, 0x2c, 0xb3, 0x91, 0xa3, 0xf8, 0x80, 0x61, 0x7a, 0x9d, 0x38, 0x7e, 0x9f, 0x4e, + 0x2c, 0x40, 0xca, 0xc2, 0xae, 0x87, 0xeb, 0x2c, 0x22, 0xa2, 0x23, 0xc6, 0x14, 0x30, 0xd0, 0x60, + 0x48, 0xc5, 0xee, 0x2b, 0xa4, 0xae, 0xc2, 0x94, 0x6f, 0x92, 0xea, 0x68, 0x56, 0x43, 0xc4, 0xe6, + 0xa9, 0x30, 0x4b, 0x96, 0x4b, 0x02, 0xa7, 0x10, 0x98, 0x92, 0xc1, 0x3d, 0xd7, 0x68, 0x15, 0xc0, + 0xb6, 0xb0, 0xbd, 0xab, 0xd6, 0xb1, 0x6e, 0x66, 0x13, 0x07, 0x78, 0xa9, 0x4a, 0x54, 0x06, 0xbc, + 0x64, 0x33, 0xa9, 0x6e, 0xa2, 0x67, 0xbb, 0xa1, 0x36, 0x71, 0x40, 0xa4, 0x54, 0xd8, 0x26, 0x1b, + 0x88, 0xb6, 0x6d, 0xc8, 0x38, 0x98, 0xc4, 0x3d, 0xae, 0xf3, 0x99, 0x25, 0xa9, 0x11, 0xcb, 0xa1, + 0x33, 0x53, 0x38, 0x8c, 0x4d, 0x6c, 0xd2, 0x09, 0x5e, 0xa2, 0x87, 0xc1, 0x17, 0xa8, 0x34, 0xac, + 0x80, 0x66, 0xa1, 0xb4, 0x10, 0x6e, 0x68, 0x4d, 0x3c, 0x77, 0x01, 0x32, 0xbd, 0xee, 0x41, 0xb3, + 0x10, 0x77, 0x3d, 0xcd, 0xf1, 0x68, 0x14, 0xc6, 0x15, 0x76, 0x81, 0x64, 0x88, 0x62, 0xab, 0x4e, + 0xb3, 0x5c, 0x5c, 0x21, 0x3f, 0xe7, 0x9e, 0x81, 0xc9, 0x9e, 0xdb, 0x8f, 0x0a, 0x5c, 0xfc, 0xd2, + 0x38, 0xcc, 0x0e, 0x8b, 0xb9, 0xa1, 0xe1, 0x7f, 0x0c, 0xc6, 0xad, 0x76, 0x73, 0x07, 0x3b, 0xd9, + 0x28, 0x65, 0xe0, 0x57, 0xa8, 0x00, 0x71, 0x53, 0xdb, 0xc1, 0x66, 0x36, 0xb6, 0x20, 0x2d, 0x65, + 0x4e, 0x3f, 0x35, 0x52, 0x54, 0x2f, 0xaf, 0x13, 0x88, 0xc2, 0x90, 0xe8, 0x39, 0x88, 0xf1, 0x14, + 0x47, 0x18, 0x9e, 0x1c, 0x8d, 0x81, 0xc4, 0xa2, 0x42, 0x71, 0xe8, 0x41, 0x48, 0x92, 0xbf, 0xcc, + 0xb7, 0xe3, 0xd4, 0xe6, 0x04, 0x11, 0x10, 0xbf, 0xa2, 0x39, 0x48, 0xd0, 0x30, 0xab, 0x63, 0x51, + 0x1a, 0xfc, 0x6b, 0xb2, 0x30, 0x75, 0xbc, 0xab, 0xb5, 0x4d, 0x4f, 0xbd, 0xa9, 0x99, 0x6d, 0x4c, + 0x03, 0x26, 0xa9, 0xa4, 0xb9, 0xf0, 0xb3, 0x44, 0x86, 0xe6, 0x21, 0xc5, 0xa2, 0xd2, 0xb0, 0xea, + 0xf8, 0x45, 0x9a, 0x7d, 0xe2, 0x0a, 0x0b, 0xd4, 0x32, 0x91, 0x90, 0xdb, 0x5f, 0x77, 0x6d, 0x4b, + 0x2c, 0x2d, 0xbd, 0x05, 0x11, 0xd0, 0xdb, 0x3f, 0xd3, 0x9f, 0xf8, 0x1e, 0x1a, 0x3e, 0xbd, 0xfe, + 0x58, 0x5c, 0xfc, 0x76, 0x04, 0x62, 0x74, 0xbf, 0x4d, 0x41, 0x6a, 0xeb, 0x5a, 0xad, 0xa4, 0xae, + 0x56, 0xb7, 0x8b, 0xeb, 0x25, 0x59, 0x42, 0x19, 0x00, 0x2a, 0xb8, 0xb4, 0x5e, 0x2d, 0x6c, 0xc9, + 0x11, 0xff, 0xba, 0xbc, 0xb1, 0x75, 0xfe, 0xac, 0x1c, 0xf5, 0x01, 0xdb, 0x4c, 0x10, 0x0b, 0x2a, + 0x9c, 0x39, 0x2d, 0xc7, 0x91, 0x0c, 0x69, 0x46, 0x50, 0xbe, 0x5a, 0x5a, 0x3d, 0x7f, 0x56, 0x1e, + 0xef, 0x95, 0x9c, 0x39, 0x2d, 0x4f, 0xa0, 0x49, 0x48, 0x52, 0x49, 0xb1, 0x5a, 0x5d, 0x97, 0x13, + 0x3e, 0xe7, 0xe6, 0x96, 0x52, 0xde, 0x58, 0x93, 0x93, 0x3e, 0xe7, 0x9a, 0x52, 0xdd, 0xae, 0xc9, + 0xe0, 0x33, 0x54, 0x4a, 0x9b, 0x9b, 0x85, 0xb5, 0x92, 0x9c, 0xf2, 0x35, 0x8a, 0xd7, 0xb6, 0x4a, + 0x9b, 0x72, 0xba, 0xc7, 0xac, 0x33, 0xa7, 0xe5, 0x49, 0xff, 0x16, 0xa5, 0x8d, 0xed, 0x8a, 0x9c, + 0x41, 0xd3, 0x30, 0xc9, 0x6e, 0x21, 0x8c, 0x98, 0xea, 0x13, 0x9d, 0x3f, 0x2b, 0xcb, 0x5d, 0x43, + 0x18, 0xcb, 0x74, 0x8f, 0xe0, 0xfc, 0x59, 0x19, 0x2d, 0xae, 0x40, 0x9c, 0x46, 0x17, 0x42, 0x90, + 0x59, 0x2f, 0x14, 0x4b, 0xeb, 0x6a, 0xb5, 0xb6, 0x55, 0xae, 0x6e, 0x14, 0xd6, 0x65, 0xa9, 0x2b, + 0x53, 0x4a, 0x9f, 0xd9, 0x2e, 0x2b, 0xa5, 0x55, 0x39, 0x12, 0x94, 0xd5, 0x4a, 0x85, 0xad, 0xd2, + 0xaa, 0x1c, 0x5d, 0xd4, 0x61, 0x76, 0x58, 0x9e, 0x19, 0xba, 0x33, 0x02, 0x4b, 0x1c, 0x39, 0x60, + 0x89, 0x29, 0xd7, 0xc0, 0x12, 0x7f, 0x55, 0x82, 0x99, 0x21, 0xb9, 0x76, 0xe8, 0x4d, 0x9e, 0x87, + 0x38, 0x0b, 0x51, 0x56, 0x7d, 0x9e, 0x18, 0x9a, 0xb4, 0x69, 0xc0, 0x0e, 0x54, 0x20, 0x8a, 0x0b, + 0x56, 0xe0, 0xe8, 0x01, 0x15, 0x98, 0x50, 0x0c, 0x18, 0xf9, 0xb2, 0x04, 0xd9, 0x83, 0xb8, 0x43, + 0x12, 0x45, 0xa4, 0x27, 0x51, 0x5c, 0xec, 0x37, 0xe0, 0xe4, 0xc1, 0x73, 0x18, 0xb0, 0xe2, 0x75, + 0x09, 0x8e, 0x0d, 0x6f, 0x54, 0x86, 0xda, 0xf0, 0x1c, 0x8c, 0x37, 0xb1, 0xb7, 0x67, 0x8b, 0x62, + 0xfd, 0xd8, 0x90, 0x12, 0x40, 0x86, 0xfb, 0x7d, 0xc5, 0x51, 0xc1, 0x1a, 0x12, 0x3d, 0xa8, 0xdb, + 0x60, 0xd6, 0x0c, 0x58, 0xfa, 0xc5, 0x08, 0x3c, 0x30, 0x94, 0x7c, 0xa8, 0xa1, 0x0f, 0x01, 0x18, + 0x56, 0xab, 0xed, 0xb1, 0x82, 0xcc, 0xf2, 0x53, 0x92, 0x4a, 0xe8, 0xde, 0x27, 0xb9, 0xa7, 0xed, + 0xf9, 0xe3, 0x51, 0x3a, 0x0e, 0x4c, 0x44, 0x15, 0x2e, 0x74, 0x0d, 0x8d, 0x51, 0x43, 0x73, 0x07, + 0xcc, 0x74, 0xa0, 0xd6, 0x3d, 0x0d, 0xb2, 0x6e, 0x1a, 0xd8, 0xf2, 0x54, 0xd7, 0x73, 0xb0, 0xd6, + 0x34, 0xac, 0x06, 0x4d, 0xc0, 0x89, 0x7c, 0x7c, 0x57, 0x33, 0x5d, 0xac, 0x4c, 0xb1, 0xe1, 0x4d, + 0x31, 0x4a, 0x10, 0xb4, 0xca, 0x38, 0x01, 0xc4, 0x78, 0x0f, 0x82, 0x0d, 0xfb, 0x88, 0xc5, 0x6f, + 0x4c, 0x40, 0x2a, 0xd0, 0xd6, 0xa1, 0x93, 0x90, 0xbe, 0xae, 0xdd, 0xd4, 0x54, 0xd1, 0xaa, 0x33, + 0x4f, 0xa4, 0x88, 0xac, 0xc6, 0xdb, 0xf5, 0xa7, 0x61, 0x96, 0xaa, 0xd8, 0x6d, 0x0f, 0x3b, 0xaa, + 0x6e, 0x6a, 0xae, 0x4b, 0x9d, 0x96, 0xa0, 0xaa, 0x88, 0x8c, 0x55, 0xc9, 0xd0, 0x8a, 0x18, 0x41, + 0xe7, 0x60, 0x86, 0x22, 0x9a, 0x6d, 0xd3, 0x33, 0x5a, 0x26, 0x56, 0xc9, 0xc3, 0x83, 0x4b, 0x13, + 0xb1, 0x6f, 0xd9, 0x34, 0xd1, 0xa8, 0x70, 0x05, 0x62, 0x91, 0x8b, 0x56, 0xe1, 0x21, 0x0a, 0x6b, + 0x60, 0x0b, 0x3b, 0x9a, 0x87, 0x55, 0xfc, 0xb9, 0xb6, 0x66, 0xba, 0xaa, 0x66, 0xd5, 0xd5, 0x3d, + 0xcd, 0xdd, 0xcb, 0xce, 0x12, 0x82, 0x62, 0x24, 0x2b, 0x29, 0x27, 0x88, 0xe2, 0x1a, 0xd7, 0x2b, + 0x51, 0xb5, 0x82, 0x55, 0xff, 0xb4, 0xe6, 0xee, 0xa1, 0x3c, 0x1c, 0xa3, 0x2c, 0xae, 0xe7, 0x18, + 0x56, 0x43, 0xd5, 0xf7, 0xb0, 0x7e, 0x43, 0x6d, 0x7b, 0xbb, 0x17, 0xb2, 0x0f, 0x06, 0xef, 0x4f, + 0x2d, 0xdc, 0xa4, 0x3a, 0x2b, 0x44, 0x65, 0xdb, 0xdb, 0xbd, 0x80, 0x36, 0x21, 0x4d, 0x16, 0xa3, + 0x69, 0xbc, 0x84, 0xd5, 0x5d, 0xdb, 0xa1, 0x95, 0x25, 0x33, 0x64, 0x67, 0x07, 0x3c, 0xb8, 0x5c, + 0xe5, 0x80, 0x8a, 0x5d, 0xc7, 0xf9, 0xf8, 0x66, 0xad, 0x54, 0x5a, 0x55, 0x52, 0x82, 0xe5, 0x92, + 0xed, 0x90, 0x80, 0x6a, 0xd8, 0xbe, 0x83, 0x53, 0x2c, 0xa0, 0x1a, 0xb6, 0x70, 0xef, 0x39, 0x98, + 0xd1, 0x75, 0x36, 0x67, 0x43, 0x57, 0x79, 0x8b, 0xef, 0x66, 0xe5, 0x1e, 0x67, 0xe9, 0xfa, 0x1a, + 0x53, 0xe0, 0x31, 0xee, 0xa2, 0x67, 0xe1, 0x81, 0xae, 0xb3, 0x82, 0xc0, 0xe9, 0x81, 0x59, 0xf6, + 0x43, 0xcf, 0xc1, 0x4c, 0xab, 0x33, 0x08, 0x44, 0x3d, 0x77, 0x6c, 0x75, 0xfa, 0x61, 0x8f, 0xd2, + 0xc7, 0x36, 0x07, 0xeb, 0x9a, 0x87, 0xeb, 0xd9, 0xe3, 0x41, 0xed, 0xc0, 0x00, 0x3a, 0x05, 0xb2, + 0xae, 0xab, 0xd8, 0xd2, 0x76, 0x4c, 0xac, 0x6a, 0x0e, 0xb6, 0x34, 0x37, 0x3b, 0x1f, 0x54, 0xce, + 0xe8, 0x7a, 0x89, 0x8e, 0x16, 0xe8, 0x20, 0x7a, 0x12, 0xa6, 0xed, 0x9d, 0xeb, 0x3a, 0x8b, 0x2c, + 0xb5, 0xe5, 0xe0, 0x5d, 0xe3, 0xc5, 0xec, 0x23, 0xd4, 0x4d, 0x53, 0x64, 0x80, 0xc6, 0x55, 0x8d, + 0x8a, 0xd1, 0x13, 0x20, 0xeb, 0xee, 0x9e, 0xe6, 0xb4, 0x68, 0x69, 0x77, 0x5b, 0x9a, 0x8e, 0xb3, + 0x8f, 0x32, 0x55, 0x26, 0xdf, 0x10, 0x62, 0x12, 0xd9, 0xee, 0x2d, 0x63, 0xd7, 0x13, 0x8c, 0x8f, + 0xb3, 0xc8, 0xa6, 0x32, 0xce, 0x76, 0x15, 0x66, 0xdb, 0x96, 0x61, 0x79, 0xd8, 0x69, 0x39, 0x98, + 0x34, 0xf1, 0x6c, 0x27, 0x66, 0xff, 0x75, 0xe2, 0x80, 0x36, 0x7c, 0x3b, 0xa8, 0xcd, 0x02, 0x40, + 0x99, 0x69, 0x0f, 0x0a, 0x17, 0xf3, 0x90, 0x0e, 0xc6, 0x05, 0x4a, 0x02, 0x8b, 0x0c, 0x59, 0x22, + 0x35, 0x76, 0xa5, 0xba, 0x4a, 0xaa, 0xe3, 0x0b, 0x25, 0x39, 0x42, 0xaa, 0xf4, 0x7a, 0x79, 0xab, + 0xa4, 0x2a, 0xdb, 0x1b, 0x5b, 0xe5, 0x4a, 0x49, 0x8e, 0x3e, 0x99, 0x4c, 0xbc, 0x3b, 0x21, 0xdf, + 0xbe, 0x7d, 0xfb, 0x76, 0x64, 0xf1, 0x7b, 0x11, 0xc8, 0xf4, 0x76, 0xc6, 0xe8, 0x93, 0x70, 0x5c, + 0x3c, 0xc6, 0xba, 0xd8, 0x53, 0x6f, 0x19, 0x0e, 0x0d, 0xd5, 0xa6, 0xc6, 0x7a, 0x4b, 0xdf, 0xcb, + 0xb3, 0x5c, 0x6b, 0x13, 0x7b, 0x57, 0x0c, 0x87, 0x04, 0x62, 0x53, 0xf3, 0xd0, 0x3a, 0xcc, 0x5b, + 0xb6, 0xea, 0x7a, 0x9a, 0x55, 0xd7, 0x9c, 0xba, 0xda, 0x3d, 0x40, 0x50, 0x35, 0x5d, 0xc7, 0xae, + 0x6b, 0xb3, 0x12, 0xe1, 0xb3, 0x7c, 0xcc, 0xb2, 0x37, 0xb9, 0x72, 0x37, 0x77, 0x16, 0xb8, 0x6a, + 0x5f, 0x44, 0x44, 0x0f, 0x8a, 0x88, 0x07, 0x21, 0xd9, 0xd4, 0x5a, 0x2a, 0xb6, 0x3c, 0xa7, 0x43, + 0xfb, 0xb9, 0x84, 0x92, 0x68, 0x6a, 0xad, 0x12, 0xb9, 0xfe, 0xe8, 0xd6, 0x20, 0xe8, 0xc7, 0x7f, + 0x89, 0x42, 0x3a, 0xd8, 0xd3, 0x91, 0x16, 0x59, 0xa7, 0xf9, 0x5b, 0xa2, 0x3b, 0xfc, 0xe1, 0x43, + 0x3b, 0xc0, 0xe5, 0x15, 0x92, 0xd8, 0xf3, 0xe3, 0xac, 0xd3, 0x52, 0x18, 0x92, 0x14, 0x55, 0xb2, + 0xa7, 0x31, 0xeb, 0xdf, 0x13, 0x0a, 0xbf, 0x42, 0x6b, 0x30, 0x7e, 0xdd, 0xa5, 0xdc, 0xe3, 0x94, + 0xfb, 0x91, 0xc3, 0xb9, 0x2f, 0x6f, 0x52, 0xf2, 0xe4, 0xe5, 0x4d, 0x75, 0xa3, 0xaa, 0x54, 0x0a, + 0xeb, 0x0a, 0x87, 0xa3, 0x13, 0x10, 0x33, 0xb5, 0x97, 0x3a, 0xbd, 0x25, 0x80, 0x8a, 0x46, 0x75, + 0xfc, 0x09, 0x88, 0xdd, 0xc2, 0xda, 0x8d, 0xde, 0xc4, 0x4b, 0x45, 0x1f, 0x61, 0xe8, 0x9f, 0x82, + 0x38, 0xf5, 0x17, 0x02, 0xe0, 0x1e, 0x93, 0xc7, 0x50, 0x02, 0x62, 0x2b, 0x55, 0x85, 0x84, 0xbf, + 0x0c, 0x69, 0x26, 0x55, 0x6b, 0xe5, 0xd2, 0x4a, 0x49, 0x8e, 0x2c, 0x9e, 0x83, 0x71, 0xe6, 0x04, + 0xb2, 0x35, 0x7c, 0x37, 0xc8, 0x63, 0xfc, 0x92, 0x73, 0x48, 0x62, 0x74, 0xbb, 0x52, 0x2c, 0x29, + 0x72, 0x24, 0xb8, 0xbc, 0x2e, 0xa4, 0x83, 0xed, 0xdc, 0xcf, 0x26, 0xa6, 0xfe, 0x5e, 0x82, 0x54, + 0xa0, 0x3d, 0x23, 0x8d, 0x81, 0x66, 0x9a, 0xf6, 0x2d, 0x55, 0x33, 0x0d, 0xcd, 0xe5, 0x41, 0x01, + 0x54, 0x54, 0x20, 0x92, 0x51, 0x17, 0xed, 0x67, 0x62, 0xfc, 0x6b, 0x12, 0xc8, 0xfd, 0xad, 0x5d, + 0x9f, 0x81, 0xd2, 0xcf, 0xd5, 0xc0, 0x57, 0x25, 0xc8, 0xf4, 0xf6, 0x73, 0x7d, 0xe6, 0x9d, 0xfc, + 0xb9, 0x9a, 0xf7, 0x76, 0x04, 0x26, 0x7b, 0xba, 0xb8, 0x51, 0xad, 0xfb, 0x1c, 0x4c, 0x1b, 0x75, + 0xdc, 0x6c, 0xd9, 0x1e, 0xb6, 0xf4, 0x8e, 0x6a, 0xe2, 0x9b, 0xd8, 0xcc, 0x2e, 0xd2, 0x44, 0x71, + 0xea, 0xf0, 0x3e, 0x71, 0xb9, 0xdc, 0xc5, 0xad, 0x13, 0x58, 0x7e, 0xa6, 0xbc, 0x5a, 0xaa, 0xd4, + 0xaa, 0x5b, 0xa5, 0x8d, 0x95, 0x6b, 0xea, 0xf6, 0xc6, 0xff, 0xdb, 0xa8, 0x5e, 0xd9, 0x50, 0x64, + 0xa3, 0x4f, 0xed, 0x23, 0xdc, 0xea, 0x35, 0x90, 0xfb, 0x8d, 0x42, 0xc7, 0x61, 0x98, 0x59, 0xf2, + 0x18, 0x9a, 0x81, 0xa9, 0x8d, 0xaa, 0xba, 0x59, 0x5e, 0x2d, 0xa9, 0xa5, 0x4b, 0x97, 0x4a, 0x2b, + 0x5b, 0x9b, 0xec, 0xc1, 0xd9, 0xd7, 0xde, 0xea, 0xdd, 0xd4, 0xaf, 0x44, 0x61, 0x66, 0x88, 0x25, + 0xa8, 0xc0, 0x7b, 0x76, 0xf6, 0x18, 0xf1, 0x89, 0x51, 0xac, 0x5f, 0x26, 0x5d, 0x41, 0x4d, 0x73, + 0x3c, 0xde, 0xe2, 0x3f, 0x01, 0xc4, 0x4b, 0x96, 0x67, 0xec, 0x1a, 0xd8, 0xe1, 0xe7, 0x0c, 0xac, + 0x91, 0x9f, 0xea, 0xca, 0xd9, 0x51, 0xc3, 0xc7, 0x01, 0xb5, 0x6c, 0xd7, 0xf0, 0x8c, 0x9b, 0x58, + 0x35, 0x2c, 0x71, 0x28, 0x41, 0x1a, 0xfb, 0x98, 0x22, 0x8b, 0x91, 0xb2, 0xe5, 0xf9, 0xda, 0x16, + 0x6e, 0x68, 0x7d, 0xda, 0x24, 0x81, 0x47, 0x15, 0x59, 0x8c, 0xf8, 0xda, 0x27, 0x21, 0x5d, 0xb7, + 0xdb, 0xa4, 0x4d, 0x62, 0x7a, 0xa4, 0x5e, 0x48, 0x4a, 0x8a, 0xc9, 0x7c, 0x15, 0xde, 0xc7, 0x76, + 0x4f, 0x43, 0xd2, 0x4a, 0x8a, 0xc9, 0x98, 0xca, 0xe3, 0x30, 0xa5, 0x35, 0x1a, 0x0e, 0x21, 0x17, + 0x44, 0xac, 0x33, 0xcf, 0xf8, 0x62, 0xaa, 0x38, 0x77, 0x19, 0x12, 0xc2, 0x0f, 0xa4, 0x24, 0x13, + 0x4f, 0xa8, 0x2d, 0x76, 0x26, 0x15, 0x59, 0x4a, 0x2a, 0x09, 0x4b, 0x0c, 0x9e, 0x84, 0xb4, 0xe1, + 0xaa, 0xdd, 0xc3, 0xd1, 0xc8, 0x42, 0x64, 0x29, 0xa1, 0xa4, 0x0c, 0xd7, 0x3f, 0x0d, 0x5b, 0x7c, + 0x3d, 0x02, 0x99, 0xde, 0xc3, 0x5d, 0xb4, 0x0a, 0x09, 0xd3, 0xd6, 0x35, 0x1a, 0x5a, 0xec, 0xcd, + 0xc2, 0x52, 0xc8, 0x79, 0xf0, 0xf2, 0x3a, 0xd7, 0x57, 0x7c, 0xe4, 0xdc, 0x3f, 0x49, 0x90, 0x10, + 0x62, 0x74, 0x0c, 0x62, 0x2d, 0xcd, 0xdb, 0xa3, 0x74, 0xf1, 0x62, 0x44, 0x96, 0x14, 0x7a, 0x4d, + 0xe4, 0x6e, 0x4b, 0xb3, 0x68, 0x08, 0x70, 0x39, 0xb9, 0x26, 0xeb, 0x6a, 0x62, 0xad, 0x4e, 0xdb, + 0x7e, 0xbb, 0xd9, 0xc4, 0x96, 0xe7, 0x8a, 0x75, 0xe5, 0xf2, 0x15, 0x2e, 0x46, 0x4f, 0xc1, 0xb4, + 0xe7, 0x68, 0x86, 0xd9, 0xa3, 0x1b, 0xa3, 0xba, 0xb2, 0x18, 0xf0, 0x95, 0xf3, 0x70, 0x42, 0xf0, + 0xd6, 0xb1, 0xa7, 0xe9, 0x7b, 0xb8, 0xde, 0x05, 0x8d, 0xd3, 0x93, 0xc3, 0xe3, 0x5c, 0x61, 0x95, + 0x8f, 0x0b, 0xec, 0xe2, 0x0f, 0x24, 0x98, 0x16, 0x0f, 0x2a, 0x75, 0xdf, 0x59, 0x15, 0x00, 0xcd, + 0xb2, 0x6c, 0x2f, 0xe8, 0xae, 0xc1, 0x50, 0x1e, 0xc0, 0x2d, 0x17, 0x7c, 0x90, 0x12, 0x20, 0x98, + 0x6b, 0x02, 0x74, 0x47, 0x0e, 0x74, 0xdb, 0x3c, 0xa4, 0xf8, 0xc9, 0x3d, 0x7d, 0xfd, 0xc3, 0x1e, + 0x6d, 0x81, 0x89, 0xc8, 0x13, 0x0d, 0x9a, 0x85, 0xf8, 0x0e, 0x6e, 0x18, 0x16, 0x3f, 0x4f, 0x64, + 0x17, 0xe2, 0x94, 0x32, 0xe6, 0x9f, 0x52, 0x16, 0xaf, 0xc2, 0x8c, 0x6e, 0x37, 0xfb, 0xcd, 0x2d, + 0xca, 0x7d, 0x8f, 0xd7, 0xee, 0xa7, 0xa5, 0x17, 0xa0, 0xdb, 0x62, 0x7e, 0x35, 0x12, 0x5d, 0xab, + 0x15, 0xbf, 0x1e, 0x99, 0x5b, 0x63, 0xb8, 0x9a, 0x98, 0xa6, 0x82, 0x77, 0x4d, 0xac, 0x13, 0xd3, + 0xe1, 0xc7, 0x8f, 0xc1, 0x27, 0x1a, 0x86, 0xb7, 0xd7, 0xde, 0x59, 0xd6, 0xed, 0xe6, 0xa9, 0x86, + 0xdd, 0xb0, 0xbb, 0xaf, 0xbb, 0xc8, 0x15, 0xbd, 0xa0, 0xbf, 0xf8, 0x2b, 0xaf, 0xa4, 0x2f, 0x9d, + 0x0b, 0x7d, 0x3f, 0x96, 0xdf, 0x80, 0x19, 0xae, 0xac, 0xd2, 0x33, 0x77, 0xf6, 0x68, 0x80, 0x0e, + 0x3d, 0x77, 0xc9, 0x7e, 0xeb, 0x1d, 0x5a, 0xab, 0x95, 0x69, 0x0e, 0x25, 0x63, 0xec, 0x01, 0x22, + 0xaf, 0xc0, 0x03, 0x3d, 0x7c, 0x6c, 0x5f, 0x62, 0x27, 0x84, 0xf1, 0x7b, 0x9c, 0x71, 0x26, 0xc0, + 0xb8, 0xc9, 0xa1, 0xf9, 0x15, 0x98, 0x3c, 0x0a, 0xd7, 0x3f, 0x70, 0xae, 0x34, 0x0e, 0x92, 0xac, + 0xc1, 0x14, 0x25, 0xd1, 0xdb, 0xae, 0x67, 0x37, 0x69, 0xd2, 0x3b, 0x9c, 0xe6, 0x1f, 0xdf, 0x61, + 0x1b, 0x25, 0x43, 0x60, 0x2b, 0x3e, 0x2a, 0x9f, 0x07, 0xfa, 0x9a, 0xa1, 0x8e, 0x75, 0x33, 0x84, + 0xe1, 0x4d, 0x6e, 0x88, 0xaf, 0x9f, 0xff, 0x2c, 0xcc, 0x92, 0xdf, 0x34, 0x27, 0x05, 0x2d, 0x09, + 0x3f, 0x65, 0xca, 0xfe, 0xe0, 0x65, 0xb6, 0x17, 0x67, 0x7c, 0x82, 0x80, 0x4d, 0x81, 0x55, 0x6c, + 0x60, 0xcf, 0xc3, 0x8e, 0xab, 0x6a, 0xe6, 0x30, 0xf3, 0x02, 0x8f, 0xe9, 0xd9, 0x2f, 0xbf, 0xd7, + 0xbb, 0x8a, 0x6b, 0x0c, 0x59, 0x30, 0xcd, 0xfc, 0x36, 0x1c, 0x1f, 0x12, 0x15, 0x23, 0x70, 0xbe, + 0xc2, 0x39, 0x67, 0x07, 0x22, 0x83, 0xd0, 0xd6, 0x40, 0xc8, 0xfd, 0xb5, 0x1c, 0x81, 0xf3, 0x0f, + 0x38, 0x27, 0xe2, 0x58, 0xb1, 0xa4, 0x84, 0xf1, 0x32, 0x4c, 0xdf, 0xc4, 0xce, 0x8e, 0xed, 0xf2, + 0xa3, 0x91, 0x11, 0xe8, 0x5e, 0xe5, 0x74, 0x53, 0x1c, 0x48, 0xcf, 0x4a, 0x08, 0xd7, 0xb3, 0x90, + 0xd8, 0xd5, 0x74, 0x3c, 0x02, 0xc5, 0x57, 0x38, 0xc5, 0x04, 0xd1, 0x27, 0xd0, 0x02, 0xa4, 0x1b, + 0x36, 0x2f, 0x4b, 0xe1, 0xf0, 0xd7, 0x38, 0x3c, 0x25, 0x30, 0x9c, 0xa2, 0x65, 0xb7, 0xda, 0x26, + 0xa9, 0x59, 0xe1, 0x14, 0x7f, 0x28, 0x28, 0x04, 0x86, 0x53, 0x1c, 0xc1, 0xad, 0x7f, 0x24, 0x28, + 0xdc, 0x80, 0x3f, 0x9f, 0x87, 0x94, 0x6d, 0x99, 0x1d, 0xdb, 0x1a, 0xc5, 0x88, 0x3f, 0xe6, 0x0c, + 0xc0, 0x21, 0x84, 0xe0, 0x22, 0x24, 0x47, 0x5d, 0x88, 0x3f, 0x79, 0x4f, 0x6c, 0x0f, 0xb1, 0x02, + 0x6b, 0x30, 0x25, 0x12, 0x94, 0x61, 0x5b, 0x23, 0x50, 0xfc, 0x29, 0xa7, 0xc8, 0x04, 0x60, 0x7c, + 0x1a, 0x1e, 0x76, 0xbd, 0x06, 0x1e, 0x85, 0xe4, 0x75, 0x31, 0x0d, 0x0e, 0xe1, 0xae, 0xdc, 0xc1, + 0x96, 0xbe, 0x37, 0x1a, 0xc3, 0xd7, 0x84, 0x2b, 0x05, 0x86, 0x50, 0xac, 0xc0, 0x64, 0x53, 0x73, + 0xdc, 0x3d, 0xcd, 0x1c, 0x69, 0x39, 0xfe, 0x8c, 0x73, 0xa4, 0x7d, 0x10, 0xf7, 0x48, 0xdb, 0x3a, + 0x0a, 0xcd, 0xd7, 0x85, 0x47, 0x02, 0x30, 0xbe, 0xf5, 0x5c, 0x8f, 0x1e, 0x40, 0x1d, 0x85, 0xed, + 0x1b, 0x62, 0xeb, 0x31, 0x6c, 0x25, 0xc8, 0x78, 0x11, 0x92, 0xae, 0xf1, 0xd2, 0x48, 0x34, 0x7f, + 0x2e, 0x56, 0x9a, 0x02, 0x08, 0xf8, 0x1a, 0x9c, 0x18, 0x5a, 0x26, 0x46, 0x20, 0xfb, 0x0b, 0x4e, + 0x76, 0x6c, 0x48, 0xa9, 0xe0, 0x29, 0xe1, 0xa8, 0x94, 0x7f, 0x29, 0x52, 0x02, 0xee, 0xe3, 0xaa, + 0x91, 0x07, 0x05, 0x57, 0xdb, 0x3d, 0x9a, 0xd7, 0xfe, 0x4a, 0x78, 0x8d, 0x61, 0x7b, 0xbc, 0xb6, + 0x05, 0xc7, 0x38, 0xe3, 0xd1, 0xd6, 0xf5, 0x9b, 0x22, 0xb1, 0x32, 0xf4, 0x76, 0xef, 0xea, 0xfe, + 0x7f, 0x98, 0xf3, 0xdd, 0x29, 0x3a, 0x52, 0x57, 0x6d, 0x6a, 0xad, 0x11, 0x98, 0xbf, 0xc5, 0x99, + 0x45, 0xc6, 0xf7, 0x5b, 0x5a, 0xb7, 0xa2, 0xb5, 0x08, 0xf9, 0x55, 0xc8, 0x0a, 0xf2, 0xb6, 0xe5, + 0x60, 0xdd, 0x6e, 0x58, 0xc6, 0x4b, 0xb8, 0x3e, 0x02, 0xf5, 0x5f, 0xf7, 0x2d, 0xd5, 0x76, 0x00, + 0x4e, 0x98, 0xcb, 0x20, 0xfb, 0xbd, 0x8a, 0x6a, 0x34, 0x5b, 0xb6, 0xe3, 0x85, 0x30, 0xfe, 0x8d, + 0x58, 0x29, 0x1f, 0x57, 0xa6, 0xb0, 0x7c, 0x09, 0x32, 0xf4, 0x72, 0xd4, 0x90, 0xfc, 0x5b, 0x4e, + 0x34, 0xd9, 0x45, 0xf1, 0xc4, 0xa1, 0xdb, 0xcd, 0x96, 0xe6, 0x8c, 0x92, 0xff, 0xde, 0x10, 0x89, + 0x83, 0x43, 0x78, 0xe2, 0xf0, 0x3a, 0x2d, 0x4c, 0xaa, 0xfd, 0x08, 0x0c, 0xdf, 0x16, 0x89, 0x43, + 0x60, 0x38, 0x85, 0x68, 0x18, 0x46, 0xa0, 0xf8, 0x3b, 0x41, 0x21, 0x30, 0x84, 0xe2, 0x33, 0xdd, + 0x42, 0xeb, 0xe0, 0x86, 0xe1, 0x7a, 0x0e, 0xeb, 0x83, 0x0f, 0xa7, 0xfa, 0xce, 0x7b, 0xbd, 0x4d, + 0x98, 0x12, 0x80, 0xe6, 0x2f, 0xc3, 0x54, 0x5f, 0x8b, 0x81, 0xc2, 0xbe, 0x59, 0xc8, 0xfe, 0xe2, + 0x07, 0x3c, 0x19, 0xf5, 0x76, 0x18, 0xf9, 0x75, 0xb2, 0xee, 0xbd, 0x7d, 0x40, 0x38, 0xd9, 0xcb, + 0x1f, 0xf8, 0x4b, 0xdf, 0xd3, 0x06, 0xe4, 0x2f, 0xc1, 0x64, 0x4f, 0x0f, 0x10, 0x4e, 0xf5, 0x4b, + 0x9c, 0x2a, 0x1d, 0x6c, 0x01, 0xf2, 0xe7, 0x20, 0x46, 0xea, 0x79, 0x38, 0xfc, 0x97, 0x39, 0x9c, + 0xaa, 0xe7, 0x3f, 0x05, 0x09, 0x51, 0xc7, 0xc3, 0xa1, 0xbf, 0xc2, 0xa1, 0x3e, 0x84, 0xc0, 0x45, + 0x0d, 0x0f, 0x87, 0x7f, 0x41, 0xc0, 0x05, 0x84, 0xc0, 0x47, 0x77, 0xe1, 0x77, 0x7f, 0x2d, 0xc6, + 0xf3, 0xb0, 0xf0, 0xdd, 0x45, 0x98, 0xe0, 0xc5, 0x3b, 0x1c, 0xfd, 0x45, 0x7e, 0x73, 0x81, 0xc8, + 0x3f, 0x03, 0xf1, 0x11, 0x1d, 0xfe, 0xeb, 0x1c, 0xca, 0xf4, 0xf3, 0x2b, 0x90, 0x0a, 0x14, 0xec, + 0x70, 0xf8, 0x6f, 0x70, 0x78, 0x10, 0x45, 0x4c, 0xe7, 0x05, 0x3b, 0x9c, 0xe0, 0x37, 0x85, 0xe9, + 0x1c, 0x41, 0xdc, 0x26, 0x6a, 0x75, 0x38, 0xfa, 0xb7, 0x84, 0xd7, 0x05, 0x24, 0xff, 0x3c, 0x24, + 0xfd, 0xfc, 0x1b, 0x8e, 0xff, 0x6d, 0x8e, 0xef, 0x62, 0x88, 0x07, 0x02, 0xf9, 0x3f, 0x9c, 0xe2, + 0x77, 0x84, 0x07, 0x02, 0x28, 0xb2, 0x8d, 0xfa, 0x6b, 0x7a, 0x38, 0xd3, 0xef, 0x8a, 0x6d, 0xd4, + 0x57, 0xd2, 0xc9, 0x6a, 0xd2, 0x34, 0x18, 0x4e, 0xf1, 0x7b, 0x62, 0x35, 0xa9, 0x3e, 0x31, 0xa3, + 0xbf, 0x48, 0x86, 0x73, 0xfc, 0xbe, 0x30, 0xa3, 0xaf, 0x46, 0xe6, 0x6b, 0x80, 0x06, 0x0b, 0x64, + 0x38, 0xdf, 0x97, 0x38, 0xdf, 0xf4, 0x40, 0x7d, 0xcc, 0x5f, 0x81, 0x63, 0xc3, 0x8b, 0x63, 0x38, + 0xeb, 0x97, 0x3f, 0xe8, 0x7b, 0x9c, 0x09, 0xd6, 0xc6, 0xfc, 0x56, 0x37, 0xcb, 0x06, 0x0b, 0x63, + 0x38, 0xed, 0x2b, 0x1f, 0xf4, 0x26, 0xda, 0x60, 0x5d, 0xcc, 0x17, 0x00, 0xba, 0x35, 0x29, 0x9c, + 0xeb, 0x55, 0xce, 0x15, 0x00, 0x91, 0xad, 0xc1, 0x4b, 0x52, 0x38, 0xfe, 0x2b, 0x62, 0x6b, 0x70, + 0x04, 0xd9, 0x1a, 0xa2, 0x1a, 0x85, 0xa3, 0x5f, 0x13, 0x5b, 0x43, 0x40, 0xf2, 0x17, 0x21, 0x61, + 0xb5, 0x4d, 0x93, 0xc4, 0x16, 0x3a, 0xfc, 0x33, 0xa2, 0xec, 0x8f, 0x3e, 0xe4, 0x60, 0x01, 0xc8, + 0x9f, 0x83, 0x38, 0x6e, 0xee, 0xe0, 0x7a, 0x18, 0xf2, 0xdf, 0x3e, 0x14, 0xf9, 0x84, 0x68, 0xe7, + 0x9f, 0x07, 0x60, 0x0f, 0xd3, 0xf4, 0x2d, 0x51, 0x08, 0xf6, 0xdf, 0x3f, 0xe4, 0x5f, 0x28, 0x74, + 0x21, 0x5d, 0x02, 0xf6, 0xbd, 0xc3, 0xe1, 0x04, 0xef, 0xf5, 0x12, 0xd0, 0x07, 0xf0, 0x67, 0x61, + 0xe2, 0xba, 0x6b, 0x5b, 0x9e, 0xd6, 0x08, 0x43, 0xff, 0x07, 0x47, 0x0b, 0x7d, 0xe2, 0xb0, 0xa6, + 0xed, 0x60, 0x4f, 0x6b, 0xb8, 0x61, 0xd8, 0xff, 0xe4, 0x58, 0x1f, 0x40, 0xc0, 0xba, 0xe6, 0x7a, + 0xa3, 0xcc, 0xfb, 0xbf, 0x04, 0x58, 0x00, 0x88, 0xd1, 0xe4, 0xf7, 0x0d, 0xdc, 0x09, 0xc3, 0xbe, + 0x2f, 0x8c, 0xe6, 0xfa, 0xf9, 0x4f, 0x41, 0x92, 0xfc, 0x64, 0x5f, 0xed, 0x84, 0x80, 0xff, 0x9b, + 0x83, 0xbb, 0x08, 0x72, 0x67, 0xd7, 0xab, 0x7b, 0x46, 0xb8, 0xb3, 0xff, 0x87, 0xaf, 0xb4, 0xd0, + 0xcf, 0x17, 0x20, 0xe5, 0x7a, 0xf5, 0x7a, 0x9b, 0x77, 0x34, 0x21, 0xf0, 0x1f, 0x7f, 0xe8, 0x3f, + 0xe4, 0xfa, 0x98, 0xe2, 0xc9, 0xe1, 0x87, 0x75, 0xb0, 0x66, 0xaf, 0xd9, 0xec, 0x98, 0x0e, 0xde, + 0x98, 0x82, 0x05, 0xdd, 0x6e, 0xee, 0xd8, 0xee, 0x29, 0x96, 0x50, 0x76, 0x6c, 0x6f, 0xef, 0x94, + 0xf0, 0x1c, 0x3f, 0x68, 0xf3, 0x3d, 0x39, 0x77, 0xb4, 0x13, 0xba, 0xc5, 0x1f, 0x4d, 0x42, 0x62, + 0x45, 0x73, 0x3d, 0xed, 0x96, 0xd6, 0x41, 0x8f, 0x42, 0xa2, 0x6c, 0x79, 0x67, 0x4e, 0xd7, 0x3c, + 0x87, 0xbe, 0x61, 0x8a, 0x16, 0x93, 0xf7, 0xee, 0xcc, 0xc7, 0x0d, 0x22, 0x53, 0xfc, 0x21, 0xf4, + 0x30, 0xc4, 0xe9, 0x6f, 0x7a, 0x48, 0x19, 0x2d, 0x4e, 0xbe, 0x79, 0x67, 0x7e, 0xac, 0xab, 0xc7, + 0xc6, 0xd0, 0x35, 0x48, 0x55, 0x3a, 0xdb, 0x86, 0xe5, 0x9d, 0x3f, 0x4b, 0xe8, 0xc8, 0xdc, 0x63, + 0xc5, 0x67, 0xee, 0xdd, 0x99, 0x3f, 0x73, 0xa0, 0x81, 0xa4, 0x22, 0x76, 0x27, 0x26, 0xd0, 0xf4, + 0xc3, 0xc5, 0x20, 0x17, 0xba, 0x02, 0x09, 0x71, 0xc9, 0x0e, 0xfb, 0x8b, 0x17, 0xb9, 0x09, 0xf7, + 0xc5, 0xed, 0x93, 0xa1, 0x5f, 0x80, 0x74, 0xa5, 0x73, 0xc9, 0xb4, 0x35, 0xee, 0x83, 0xf8, 0x82, + 0xb4, 0x14, 0x29, 0x5e, 0xb8, 0x77, 0x67, 0xfe, 0xec, 0xc8, 0xc4, 0x1c, 0x4e, 0x99, 0x7b, 0xd8, + 0xd0, 0x0b, 0x90, 0xf4, 0xaf, 0xe9, 0xeb, 0x84, 0x48, 0xf1, 0x93, 0xdc, 0xee, 0xfb, 0xa3, 0xef, + 0xd2, 0x05, 0x2c, 0x67, 0xee, 0x9e, 0x58, 0x90, 0x96, 0xa4, 0xfb, 0xb1, 0x9c, 0xfb, 0xa4, 0x87, + 0x2d, 0x60, 0xf9, 0xf9, 0xb3, 0xf4, 0xfd, 0x85, 0x74, 0xbf, 0x96, 0x73, 0xfa, 0x2e, 0x1d, 0xba, + 0x0c, 0x13, 0x95, 0x4e, 0xb1, 0xe3, 0x61, 0x97, 0x7e, 0xd0, 0x93, 0x2e, 0x3e, 0x7d, 0xef, 0xce, + 0xfc, 0xc7, 0x47, 0x64, 0xa5, 0x38, 0x45, 0x10, 0xa0, 0x05, 0x48, 0x6d, 0xd8, 0x4e, 0x53, 0x33, + 0x19, 0x1f, 0xb0, 0xf7, 0x31, 0x01, 0x11, 0xda, 0x26, 0x33, 0x61, 0xab, 0xed, 0xd2, 0x7f, 0x45, + 0xf8, 0x29, 0x62, 0xb2, 0xcb, 0x84, 0x0c, 0x88, 0x57, 0x3a, 0x15, 0xad, 0x95, 0x4d, 0xd3, 0x97, + 0x05, 0x0f, 0x2d, 0xfb, 0x08, 0xb1, 0xb7, 0x96, 0xe9, 0x38, 0xfd, 0xaa, 0xa2, 0x78, 0xf6, 0xde, + 0x9d, 0xf9, 0xa7, 0x47, 0xbe, 0x63, 0x45, 0x6b, 0xd1, 0xdb, 0xb1, 0x3b, 0xa0, 0x37, 0x24, 0xb2, + 0xb1, 0xd8, 0x81, 0x2b, 0xb9, 0xe3, 0x24, 0xbd, 0xe3, 0xc3, 0x43, 0xef, 0xe8, 0x6b, 0xb1, 0xfb, + 0x5a, 0x9f, 0x7f, 0xeb, 0x08, 0x33, 0x65, 0x0f, 0x35, 0xe4, 0xd6, 0xbf, 0xfa, 0xd6, 0x7d, 0x6f, + 0x5a, 0xdf, 0x02, 0xf4, 0xb2, 0x04, 0x93, 0x95, 0xce, 0x06, 0x2f, 0xaf, 0xc4, 0xf2, 0x0c, 0xff, + 0x60, 0x7d, 0x98, 0xe5, 0x01, 0x3d, 0x66, 0xfb, 0xf9, 0xcf, 0xbf, 0x35, 0x7f, 0x7a, 0x64, 0x23, + 0x68, 0x0a, 0xa2, 0x36, 0xf4, 0xde, 0x13, 0x7d, 0x81, 0x5a, 0x51, 0x22, 0xa5, 0xba, 0x8e, 0xeb, + 0xc4, 0x8a, 0xa9, 0x43, 0xac, 0x08, 0xe8, 0x31, 0x2b, 0xf2, 0x24, 0xea, 0xef, 0xdf, 0x92, 0x00, + 0x1f, 0xaa, 0xc2, 0x38, 0xf3, 0x30, 0xfd, 0x98, 0x2c, 0x79, 0xc4, 0x30, 0xec, 0x2e, 0x8e, 0xc2, + 0x69, 0xe6, 0x2e, 0x00, 0x74, 0x63, 0x0c, 0xc9, 0x10, 0xbd, 0x81, 0x3b, 0xfc, 0x8b, 0x41, 0xf2, + 0x13, 0xcd, 0x76, 0xbf, 0x88, 0x95, 0x96, 0x62, 0xfc, 0x33, 0xd7, 0x7c, 0xe4, 0x82, 0x34, 0xf7, + 0x1c, 0xc8, 0xfd, 0xb1, 0x72, 0x24, 0xbc, 0x02, 0x68, 0x70, 0xc5, 0x82, 0x0c, 0x71, 0xc6, 0xf0, + 0x58, 0x90, 0x21, 0x75, 0x5a, 0xee, 0xfa, 0xfc, 0x8a, 0x61, 0xba, 0xb6, 0x35, 0xc0, 0xd9, 0xef, + 0xff, 0x9f, 0x8e, 0x73, 0x31, 0x07, 0xe3, 0x4c, 0x48, 0xe6, 0x52, 0xa6, 0xe5, 0x83, 0x56, 0x39, + 0x85, 0x5d, 0x14, 0xd7, 0xdf, 0xbc, 0x9b, 0x1b, 0xfb, 0xfe, 0xdd, 0xdc, 0xd8, 0x3f, 0xdf, 0xcd, + 0x8d, 0xbd, 0x7d, 0x37, 0x27, 0xbd, 0x7b, 0x37, 0x27, 0xbd, 0x7f, 0x37, 0x27, 0xfd, 0xe4, 0x6e, + 0x4e, 0xba, 0xbd, 0x9f, 0x93, 0xbe, 0xb6, 0x9f, 0x93, 0xbe, 0xb9, 0x9f, 0x93, 0xbe, 0xb3, 0x9f, + 0x93, 0xbe, 0xbb, 0x9f, 0x93, 0xde, 0xdc, 0xcf, 0x8d, 0x7d, 0x7f, 0x3f, 0x37, 0xf6, 0xf6, 0x7e, + 0x4e, 0x7a, 0x77, 0x3f, 0x37, 0xf6, 0xfe, 0x7e, 0x4e, 0xfa, 0xc9, 0x7e, 0x4e, 0xba, 0xfd, 0xc3, + 0x9c, 0xf4, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x47, 0x86, 0x16, 0x42, 0x14, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafemarshaler/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafemarshaler/casttype.pb.go index 537ead24c..757a77561 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafemarshaler/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafemarshaler/casttype.pb.go @@ -88,258 +88,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4015 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, - 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0xc9, 0xc8, 0x10, 0x1d, 0x83, 0x14, 0x6d, - 0xd9, 0xb4, 0x9d, 0x50, 0x1e, 0x89, 0x92, 0x65, 0x28, 0xb1, 0x07, 0x20, 0x21, 0x86, 0x1a, 0x82, - 0x64, 0x96, 0x64, 0xfc, 0x93, 0xce, 0xec, 0x5c, 0x2e, 0x2e, 0xc1, 0x95, 0x16, 0xbb, 0xe8, 0xee, - 0x42, 0x32, 0xfc, 0xa4, 0xc4, 0x6d, 0x33, 0x69, 0xa6, 0xff, 0x9d, 0x69, 0xe2, 0x38, 0x6e, 0x9a, - 0x99, 0xd6, 0x69, 0xfa, 0x97, 0xb4, 0x4d, 0x9a, 0xc9, 0x53, 0x5e, 0xd2, 0xfa, 0xa9, 0x93, 0xbc, - 0xf5, 0xa1, 0x23, 0x47, 0xac, 0x67, 0xea, 0xb4, 0x6e, 0xeb, 0x36, 0x9e, 0x69, 0x46, 0x7e, 0xe9, - 0xdc, 0xbf, 0xc5, 0xe2, 0x87, 0x5a, 0x50, 0x99, 0x24, 0x7d, 0x22, 0xef, 0xb9, 0xe7, 0xfb, 0xf6, - 0xdc, 0x73, 0xcf, 0x3d, 0xe7, 0xec, 0xc5, 0xc2, 0xa7, 0x96, 0x60, 0xae, 0xee, 0x38, 0x75, 0x8b, - 0x9c, 0x69, 0xba, 0x8e, 0xef, 0xec, 0xb5, 0xf6, 0xcf, 0xd4, 0x88, 0x67, 0xb8, 0x66, 0xd3, 0x77, - 0xdc, 0x45, 0x26, 0x43, 0x13, 0x5c, 0x63, 0x51, 0x6a, 0xcc, 0x57, 0x61, 0xf2, 0xb2, 0x69, 0x91, - 0x95, 0x40, 0x71, 0x9b, 0xf8, 0xe8, 0x22, 0x24, 0xf6, 0x4d, 0x8b, 0xe4, 0x95, 0xb9, 0xf8, 0x42, - 0xe6, 0xec, 0x43, 0x8b, 0x3d, 0xa0, 0xc5, 0x6e, 0xc4, 0x16, 0x15, 0x6b, 0x0c, 0x31, 0xff, 0x56, - 0x02, 0xa6, 0x06, 0xcc, 0x22, 0x04, 0x09, 0x1b, 0x37, 0x28, 0xa3, 0xb2, 0x90, 0xd6, 0xd8, 0xff, - 0x28, 0x0f, 0x63, 0x4d, 0x6c, 0x5c, 0xc3, 0x75, 0x92, 0x8f, 0x31, 0xb1, 0x1c, 0xa2, 0x02, 0x40, - 0x8d, 0x34, 0x89, 0x5d, 0x23, 0xb6, 0xd1, 0xce, 0xc7, 0xe7, 0xe2, 0x0b, 0x69, 0x2d, 0x24, 0x41, - 0x8f, 0xc3, 0x64, 0xb3, 0xb5, 0x67, 0x99, 0x86, 0x1e, 0x52, 0x83, 0xb9, 0xf8, 0x42, 0x52, 0x53, - 0xf9, 0xc4, 0x4a, 0x47, 0xf9, 0x11, 0x98, 0xb8, 0x41, 0xf0, 0xb5, 0xb0, 0x6a, 0x86, 0xa9, 0xe6, - 0xa8, 0x38, 0xa4, 0xb8, 0x0c, 0xd9, 0x06, 0xf1, 0x3c, 0x5c, 0x27, 0xba, 0xdf, 0x6e, 0x92, 0x7c, - 0x82, 0xad, 0x7e, 0xae, 0x6f, 0xf5, 0xbd, 0x2b, 0xcf, 0x08, 0xd4, 0x4e, 0xbb, 0x49, 0x50, 0x09, - 0xd2, 0xc4, 0x6e, 0x35, 0x38, 0x43, 0xf2, 0x08, 0xff, 0x55, 0xec, 0x56, 0xa3, 0x97, 0x25, 0x45, - 0x61, 0x82, 0x62, 0xcc, 0x23, 0xee, 0x75, 0xd3, 0x20, 0xf9, 0x51, 0x46, 0xf0, 0x48, 0x1f, 0xc1, - 0x36, 0x9f, 0xef, 0xe5, 0x90, 0x38, 0xb4, 0x0c, 0x69, 0xf2, 0xa2, 0x4f, 0x6c, 0xcf, 0x74, 0xec, - 0xfc, 0x18, 0x23, 0x39, 0x3d, 0x60, 0x17, 0x89, 0x55, 0xeb, 0xa5, 0xe8, 0xe0, 0xd0, 0x05, 0x18, - 0x73, 0x9a, 0xbe, 0xe9, 0xd8, 0x5e, 0x3e, 0x35, 0xa7, 0x2c, 0x64, 0xce, 0x7e, 0x70, 0x60, 0x20, - 0x6c, 0x72, 0x1d, 0x4d, 0x2a, 0xa3, 0x35, 0x50, 0x3d, 0xa7, 0xe5, 0x1a, 0x44, 0x37, 0x9c, 0x1a, - 0xd1, 0x4d, 0x7b, 0xdf, 0xc9, 0xa7, 0x19, 0xc1, 0x6c, 0xff, 0x42, 0x98, 0xe2, 0xb2, 0x53, 0x23, - 0x6b, 0xf6, 0xbe, 0xa3, 0xe5, 0xbc, 0xae, 0x31, 0x3a, 0x01, 0xa3, 0x5e, 0xdb, 0xf6, 0xf1, 0x8b, - 0xf9, 0x2c, 0x8b, 0x10, 0x31, 0x9a, 0xff, 0xdf, 0x24, 0x4c, 0x0c, 0x13, 0x62, 0x97, 0x20, 0xb9, - 0x4f, 0x57, 0x99, 0x8f, 0x1d, 0xc7, 0x07, 0x1c, 0xd3, 0xed, 0xc4, 0xd1, 0x7b, 0x74, 0x62, 0x09, - 0x32, 0x36, 0xf1, 0x7c, 0x52, 0xe3, 0x11, 0x11, 0x1f, 0x32, 0xa6, 0x80, 0x83, 0xfa, 0x43, 0x2a, - 0x71, 0x4f, 0x21, 0xf5, 0x1c, 0x4c, 0x04, 0x26, 0xe9, 0x2e, 0xb6, 0xeb, 0x32, 0x36, 0xcf, 0x44, - 0x59, 0xb2, 0x58, 0x91, 0x38, 0x8d, 0xc2, 0xb4, 0x1c, 0xe9, 0x1a, 0xa3, 0x15, 0x00, 0xc7, 0x26, - 0xce, 0xbe, 0x5e, 0x23, 0x86, 0x95, 0x4f, 0x1d, 0xe1, 0xa5, 0x4d, 0xaa, 0xd2, 0xe7, 0x25, 0x87, - 0x4b, 0x0d, 0x0b, 0x3d, 0xd5, 0x09, 0xb5, 0xb1, 0x23, 0x22, 0xa5, 0xca, 0x0f, 0x59, 0x5f, 0xb4, - 0xed, 0x42, 0xce, 0x25, 0x34, 0xee, 0x49, 0x4d, 0xac, 0x2c, 0xcd, 0x8c, 0x58, 0x8c, 0x5c, 0x99, - 0x26, 0x60, 0x7c, 0x61, 0xe3, 0x6e, 0x78, 0x88, 0x1e, 0x84, 0x40, 0xa0, 0xb3, 0xb0, 0x02, 0x96, - 0x85, 0xb2, 0x52, 0xb8, 0x81, 0x1b, 0x64, 0xe6, 0x22, 0xe4, 0xba, 0xdd, 0x83, 0xa6, 0x21, 0xe9, - 0xf9, 0xd8, 0xf5, 0x59, 0x14, 0x26, 0x35, 0x3e, 0x40, 0x2a, 0xc4, 0x89, 0x5d, 0x63, 0x59, 0x2e, - 0xa9, 0xd1, 0x7f, 0x67, 0x9e, 0x84, 0xf1, 0xae, 0xc7, 0x0f, 0x0b, 0x9c, 0xff, 0xfc, 0x28, 0x4c, - 0x0f, 0x8a, 0xb9, 0x81, 0xe1, 0x7f, 0x02, 0x46, 0xed, 0x56, 0x63, 0x8f, 0xb8, 0xf9, 0x38, 0x63, - 0x10, 0x23, 0x54, 0x82, 0xa4, 0x85, 0xf7, 0x88, 0x95, 0x4f, 0xcc, 0x29, 0x0b, 0xb9, 0xb3, 0x8f, - 0x0f, 0x15, 0xd5, 0x8b, 0xeb, 0x14, 0xa2, 0x71, 0x24, 0x7a, 0x1a, 0x12, 0x22, 0xc5, 0x51, 0x86, - 0xc7, 0x86, 0x63, 0xa0, 0xb1, 0xa8, 0x31, 0x1c, 0xba, 0x1f, 0xd2, 0xf4, 0x2f, 0xf7, 0xed, 0x28, - 0xb3, 0x39, 0x45, 0x05, 0xd4, 0xaf, 0x68, 0x06, 0x52, 0x2c, 0xcc, 0x6a, 0x44, 0x96, 0x86, 0x60, - 0x4c, 0x37, 0xa6, 0x46, 0xf6, 0x71, 0xcb, 0xf2, 0xf5, 0xeb, 0xd8, 0x6a, 0x11, 0x16, 0x30, 0x69, - 0x2d, 0x2b, 0x84, 0x9f, 0xa0, 0x32, 0x34, 0x0b, 0x19, 0x1e, 0x95, 0xa6, 0x5d, 0x23, 0x2f, 0xb2, - 0xec, 0x93, 0xd4, 0x78, 0xa0, 0xae, 0x51, 0x09, 0x7d, 0xfc, 0x55, 0xcf, 0xb1, 0xe5, 0xd6, 0xb2, - 0x47, 0x50, 0x01, 0x7b, 0xfc, 0x93, 0xbd, 0x89, 0xef, 0x81, 0xc1, 0xcb, 0xeb, 0x8d, 0xc5, 0xf9, - 0x6f, 0xc5, 0x20, 0xc1, 0xce, 0xdb, 0x04, 0x64, 0x76, 0x9e, 0xdf, 0xaa, 0xe8, 0x2b, 0x9b, 0xbb, - 0xe5, 0xf5, 0x8a, 0xaa, 0xa0, 0x1c, 0x00, 0x13, 0x5c, 0x5e, 0xdf, 0x2c, 0xed, 0xa8, 0xb1, 0x60, - 0xbc, 0xb6, 0xb1, 0x73, 0x61, 0x49, 0x8d, 0x07, 0x80, 0x5d, 0x2e, 0x48, 0x84, 0x15, 0xce, 0x9d, - 0x55, 0x93, 0x48, 0x85, 0x2c, 0x27, 0x58, 0x7b, 0xae, 0xb2, 0x72, 0x61, 0x49, 0x1d, 0xed, 0x96, - 0x9c, 0x3b, 0xab, 0x8e, 0xa1, 0x71, 0x48, 0x33, 0x49, 0x79, 0x73, 0x73, 0x5d, 0x4d, 0x05, 0x9c, - 0xdb, 0x3b, 0xda, 0xda, 0xc6, 0xaa, 0x9a, 0x0e, 0x38, 0x57, 0xb5, 0xcd, 0xdd, 0x2d, 0x15, 0x02, - 0x86, 0x6a, 0x65, 0x7b, 0xbb, 0xb4, 0x5a, 0x51, 0x33, 0x81, 0x46, 0xf9, 0xf9, 0x9d, 0xca, 0xb6, - 0x9a, 0xed, 0x32, 0xeb, 0xdc, 0x59, 0x75, 0x3c, 0x78, 0x44, 0x65, 0x63, 0xb7, 0xaa, 0xe6, 0xd0, - 0x24, 0x8c, 0xf3, 0x47, 0x48, 0x23, 0x26, 0x7a, 0x44, 0x17, 0x96, 0x54, 0xb5, 0x63, 0x08, 0x67, - 0x99, 0xec, 0x12, 0x5c, 0x58, 0x52, 0xd1, 0xfc, 0x32, 0x24, 0x59, 0x74, 0x21, 0x04, 0xb9, 0xf5, - 0x52, 0xb9, 0xb2, 0xae, 0x6f, 0x6e, 0xed, 0xac, 0x6d, 0x6e, 0x94, 0xd6, 0x55, 0xa5, 0x23, 0xd3, - 0x2a, 0x1f, 0xdf, 0x5d, 0xd3, 0x2a, 0x2b, 0x6a, 0x2c, 0x2c, 0xdb, 0xaa, 0x94, 0x76, 0x2a, 0x2b, - 0x6a, 0x7c, 0xde, 0x80, 0xe9, 0x41, 0x79, 0x66, 0xe0, 0xc9, 0x08, 0x6d, 0x71, 0xec, 0x88, 0x2d, - 0x66, 0x5c, 0x7d, 0x5b, 0xfc, 0x15, 0x05, 0xa6, 0x06, 0xe4, 0xda, 0x81, 0x0f, 0x79, 0x06, 0x92, - 0x3c, 0x44, 0x79, 0xf5, 0x79, 0x74, 0x60, 0xd2, 0x66, 0x01, 0xdb, 0x57, 0x81, 0x18, 0x2e, 0x5c, - 0x81, 0xe3, 0x47, 0x54, 0x60, 0x4a, 0xd1, 0x67, 0xe4, 0xcb, 0x0a, 0xe4, 0x8f, 0xe2, 0x8e, 0x48, - 0x14, 0xb1, 0xae, 0x44, 0x71, 0xa9, 0xd7, 0x80, 0x53, 0x47, 0xaf, 0xa1, 0xcf, 0x8a, 0xd7, 0x15, - 0x38, 0x31, 0xb8, 0x51, 0x19, 0x68, 0xc3, 0xd3, 0x30, 0xda, 0x20, 0xfe, 0x81, 0x23, 0x8b, 0xf5, - 0xc3, 0x03, 0x4a, 0x00, 0x9d, 0xee, 0xf5, 0x95, 0x40, 0x85, 0x6b, 0x48, 0xfc, 0xa8, 0x6e, 0x83, - 0x5b, 0xd3, 0x67, 0xe9, 0x67, 0x63, 0xf0, 0x81, 0x81, 0xe4, 0x03, 0x0d, 0x7d, 0x00, 0xc0, 0xb4, - 0x9b, 0x2d, 0x9f, 0x17, 0x64, 0x9e, 0x9f, 0xd2, 0x4c, 0xc2, 0xce, 0x3e, 0xcd, 0x3d, 0x2d, 0x3f, - 0x98, 0x8f, 0xb3, 0x79, 0xe0, 0x22, 0xa6, 0x70, 0xb1, 0x63, 0x68, 0x82, 0x19, 0x5a, 0x38, 0x62, - 0xa5, 0x7d, 0xb5, 0xee, 0x09, 0x50, 0x0d, 0xcb, 0x24, 0xb6, 0xaf, 0x7b, 0xbe, 0x4b, 0x70, 0xc3, - 0xb4, 0xeb, 0x2c, 0x01, 0xa7, 0x8a, 0xc9, 0x7d, 0x6c, 0x79, 0x44, 0x9b, 0xe0, 0xd3, 0xdb, 0x72, - 0x96, 0x22, 0x58, 0x95, 0x71, 0x43, 0x88, 0xd1, 0x2e, 0x04, 0x9f, 0x0e, 0x10, 0xf3, 0x9f, 0x1b, - 0x83, 0x4c, 0xa8, 0xad, 0x43, 0xa7, 0x20, 0x7b, 0x15, 0x5f, 0xc7, 0xba, 0x6c, 0xd5, 0xb9, 0x27, - 0x32, 0x54, 0xb6, 0x25, 0xda, 0xf5, 0x27, 0x60, 0x9a, 0xa9, 0x38, 0x2d, 0x9f, 0xb8, 0xba, 0x61, - 0x61, 0xcf, 0x63, 0x4e, 0x4b, 0x31, 0x55, 0x44, 0xe7, 0x36, 0xe9, 0xd4, 0xb2, 0x9c, 0x41, 0xe7, - 0x61, 0x8a, 0x21, 0x1a, 0x2d, 0xcb, 0x37, 0x9b, 0x16, 0xd1, 0xe9, 0xcb, 0x83, 0xc7, 0x12, 0x71, - 0x60, 0xd9, 0x24, 0xd5, 0xa8, 0x0a, 0x05, 0x6a, 0x91, 0x87, 0x56, 0xe1, 0x01, 0x06, 0xab, 0x13, - 0x9b, 0xb8, 0xd8, 0x27, 0x3a, 0xf9, 0xe5, 0x16, 0xb6, 0x3c, 0x1d, 0xdb, 0x35, 0xfd, 0x00, 0x7b, - 0x07, 0xf9, 0xe9, 0x30, 0xc1, 0x49, 0xaa, 0xbb, 0x2a, 0x54, 0x2b, 0x4c, 0xb3, 0x64, 0xd7, 0x3e, - 0x86, 0xbd, 0x03, 0x54, 0x84, 0x13, 0x8c, 0xc8, 0xf3, 0x5d, 0xd3, 0xae, 0xeb, 0xc6, 0x01, 0x31, - 0xae, 0xe9, 0x2d, 0x7f, 0xff, 0x62, 0xfe, 0xfe, 0x30, 0x03, 0x33, 0x72, 0x9b, 0xe9, 0x2c, 0x53, - 0x95, 0x5d, 0x7f, 0xff, 0x22, 0xda, 0x86, 0x2c, 0xdd, 0x8f, 0x86, 0xf9, 0x12, 0xd1, 0xf7, 0x1d, - 0x97, 0x15, 0x97, 0xdc, 0x80, 0xc3, 0x1d, 0x72, 0xe2, 0xe2, 0xa6, 0x00, 0x54, 0x9d, 0x1a, 0x29, - 0x26, 0xb7, 0xb7, 0x2a, 0x95, 0x15, 0x2d, 0x23, 0x59, 0x2e, 0x3b, 0x2e, 0x8d, 0xa9, 0xba, 0x13, - 0xf8, 0x38, 0xc3, 0x63, 0xaa, 0xee, 0x48, 0x0f, 0x9f, 0x87, 0x29, 0xc3, 0xe0, 0xcb, 0x36, 0x0d, - 0x5d, 0x74, 0xf9, 0x5e, 0x5e, 0xed, 0xf2, 0x97, 0x61, 0xac, 0x72, 0x05, 0x11, 0xe6, 0x1e, 0x7a, - 0x0a, 0x3e, 0xd0, 0xf1, 0x57, 0x18, 0x38, 0xd9, 0xb7, 0xca, 0x5e, 0xe8, 0x79, 0x98, 0x6a, 0xb6, - 0xfb, 0x81, 0xa8, 0xeb, 0x89, 0xcd, 0x76, 0x2f, 0xec, 0x34, 0x7b, 0x73, 0x73, 0x89, 0x81, 0x7d, - 0x52, 0xcb, 0xdf, 0x17, 0xd6, 0x0e, 0x4d, 0xa0, 0x33, 0xa0, 0x1a, 0x86, 0x4e, 0x6c, 0xbc, 0x67, - 0x11, 0x1d, 0xbb, 0xc4, 0xc6, 0x5e, 0x7e, 0x36, 0xac, 0x9c, 0x33, 0x8c, 0x0a, 0x9b, 0x2d, 0xb1, - 0x49, 0xf4, 0x18, 0x4c, 0x3a, 0x7b, 0x57, 0x0d, 0x1e, 0x5c, 0x7a, 0xd3, 0x25, 0xfb, 0xe6, 0x8b, - 0xf9, 0x87, 0x98, 0x9b, 0x26, 0xe8, 0x04, 0x0b, 0xad, 0x2d, 0x26, 0x46, 0x8f, 0x82, 0x6a, 0x78, - 0x07, 0xd8, 0x6d, 0xb2, 0xea, 0xee, 0x35, 0xb1, 0x41, 0xf2, 0xa7, 0xb9, 0x2a, 0x97, 0x6f, 0x48, - 0x31, 0x7a, 0x0e, 0xa6, 0x5b, 0xb6, 0x69, 0xfb, 0xc4, 0x6d, 0xba, 0x84, 0x36, 0xe9, 0xfc, 0xa4, - 0xe5, 0xff, 0x75, 0xec, 0x88, 0x36, 0x7b, 0x37, 0xac, 0xcd, 0x77, 0x57, 0x9b, 0x6a, 0xf5, 0x0b, - 0xe7, 0x8b, 0x90, 0x0d, 0x6f, 0x3a, 0x4a, 0x03, 0xdf, 0x76, 0x55, 0xa1, 0x35, 0x74, 0x79, 0x73, - 0x85, 0x56, 0xbf, 0x17, 0x2a, 0x6a, 0x8c, 0x56, 0xe1, 0xf5, 0xb5, 0x9d, 0x8a, 0xae, 0xed, 0x6e, - 0xec, 0xac, 0x55, 0x2b, 0x6a, 0xfc, 0xb1, 0x74, 0xea, 0xed, 0x31, 0xf5, 0xe6, 0xcd, 0x9b, 0x37, - 0x63, 0xf3, 0xdf, 0x8b, 0x41, 0xae, 0xbb, 0xf3, 0x45, 0x1f, 0x81, 0xfb, 0xe4, 0x6b, 0xaa, 0x47, - 0x7c, 0xfd, 0x86, 0xe9, 0xb2, 0x38, 0x6c, 0x60, 0xde, 0x3b, 0x06, 0x2e, 0x9c, 0x16, 0x5a, 0xdb, - 0xc4, 0x7f, 0xd6, 0x74, 0x69, 0x94, 0x35, 0xb0, 0x8f, 0xd6, 0x61, 0xd6, 0x76, 0x74, 0xcf, 0xc7, - 0x76, 0x0d, 0xbb, 0x35, 0xbd, 0x73, 0x41, 0xa0, 0x63, 0xc3, 0x20, 0x9e, 0xe7, 0xf0, 0x12, 0x10, - 0xb0, 0x7c, 0xd0, 0x76, 0xb6, 0x85, 0x72, 0x27, 0x37, 0x96, 0x84, 0x6a, 0xcf, 0x76, 0xc7, 0x8f, - 0xda, 0xee, 0xfb, 0x21, 0xdd, 0xc0, 0x4d, 0x9d, 0xd8, 0xbe, 0xdb, 0x66, 0xfd, 0x5a, 0x4a, 0x4b, - 0x35, 0x70, 0xb3, 0x42, 0xc7, 0x3f, 0xbb, 0x3d, 0x08, 0xfb, 0xf1, 0x9f, 0xe3, 0x90, 0x0d, 0xf7, - 0x6c, 0xb4, 0x05, 0x36, 0x58, 0x7e, 0x56, 0xd8, 0xf1, 0x7d, 0xf0, 0xae, 0x1d, 0xde, 0xe2, 0x32, - 0x4d, 0xdc, 0xc5, 0x51, 0xde, 0x49, 0x69, 0x1c, 0x49, 0x8b, 0x26, 0x3d, 0xb0, 0x84, 0xf7, 0xe7, - 0x29, 0x4d, 0x8c, 0xd0, 0x2a, 0x8c, 0x5e, 0xf5, 0x18, 0xf7, 0x28, 0xe3, 0x7e, 0xe8, 0xee, 0xdc, - 0x57, 0xb6, 0x19, 0x79, 0xfa, 0xca, 0xb6, 0xbe, 0xb1, 0xa9, 0x55, 0x4b, 0xeb, 0x9a, 0x80, 0xa3, - 0x93, 0x90, 0xb0, 0xf0, 0x4b, 0xed, 0xee, 0x14, 0xcf, 0x44, 0xc3, 0x3a, 0xfe, 0x24, 0x24, 0x6e, - 0x10, 0x7c, 0xad, 0x3b, 0xb1, 0x32, 0xd1, 0xcf, 0x30, 0xf4, 0xcf, 0x40, 0x92, 0xf9, 0x0b, 0x01, - 0x08, 0x8f, 0xa9, 0x23, 0x28, 0x05, 0x89, 0xe5, 0x4d, 0x8d, 0x86, 0xbf, 0x0a, 0x59, 0x2e, 0xd5, - 0xb7, 0xd6, 0x2a, 0xcb, 0x15, 0x35, 0x36, 0x7f, 0x1e, 0x46, 0xb9, 0x13, 0xe8, 0xd1, 0x08, 0xdc, - 0xa0, 0x8e, 0x88, 0xa1, 0xe0, 0x50, 0xe4, 0xec, 0x6e, 0xb5, 0x5c, 0xd1, 0xd4, 0x58, 0x78, 0x7b, - 0x3d, 0xc8, 0x86, 0xdb, 0xb5, 0x9f, 0x4f, 0x4c, 0x7d, 0x47, 0x81, 0x4c, 0xa8, 0xfd, 0xa2, 0x85, - 0x1f, 0x5b, 0x96, 0x73, 0x43, 0xc7, 0x96, 0x89, 0x3d, 0x11, 0x14, 0xc0, 0x44, 0x25, 0x2a, 0x19, - 0x76, 0xd3, 0x7e, 0x2e, 0xc6, 0xbf, 0xa6, 0x80, 0xda, 0xdb, 0xba, 0xf5, 0x18, 0xa8, 0xfc, 0x42, - 0x0d, 0x7c, 0x55, 0x81, 0x5c, 0x77, 0xbf, 0xd6, 0x63, 0xde, 0xa9, 0x5f, 0xa8, 0x79, 0x5f, 0x54, - 0x60, 0xbc, 0xab, 0x4b, 0xfb, 0x7f, 0x65, 0xdd, 0x2b, 0x71, 0x98, 0x1a, 0x80, 0x43, 0x25, 0xd1, - 0xce, 0xf2, 0x0e, 0xfb, 0xc3, 0xc3, 0x3c, 0x6b, 0x91, 0x56, 0xcb, 0x2d, 0xec, 0xfa, 0xa2, 0xfb, - 0x7d, 0x14, 0x54, 0xb3, 0x46, 0x6c, 0xdf, 0xdc, 0x37, 0x89, 0x2b, 0x5e, 0xc1, 0x79, 0x8f, 0x3b, - 0xd1, 0x91, 0xf3, 0xb7, 0xf0, 0x0f, 0x01, 0x6a, 0x3a, 0x9e, 0xe9, 0x9b, 0xd7, 0x89, 0x6e, 0xda, - 0xf2, 0x7d, 0x9d, 0xf6, 0xbc, 0x09, 0x4d, 0x95, 0x33, 0x6b, 0xb6, 0x1f, 0x68, 0xdb, 0xa4, 0x8e, - 0x7b, 0xb4, 0x69, 0xee, 0x8b, 0x6b, 0xaa, 0x9c, 0x09, 0xb4, 0x4f, 0x41, 0xb6, 0xe6, 0xb4, 0x68, - 0xfb, 0xc0, 0xf5, 0x68, 0xaa, 0x55, 0xb4, 0x0c, 0x97, 0x05, 0x2a, 0xa2, 0xbf, 0xeb, 0x5c, 0x14, - 0x64, 0xb5, 0x0c, 0x97, 0x71, 0x95, 0x47, 0x60, 0x02, 0xd7, 0xeb, 0x2e, 0x25, 0x97, 0x44, 0xbc, - 0x69, 0xcd, 0x05, 0x62, 0xa6, 0x38, 0x73, 0x05, 0x52, 0xd2, 0x0f, 0xb4, 0x9a, 0x51, 0x4f, 0xe8, - 0x4d, 0x7e, 0x5d, 0x13, 0x5b, 0x48, 0x6b, 0x29, 0x5b, 0x4e, 0x9e, 0x82, 0xac, 0xe9, 0xe9, 0x9d, - 0x7b, 0xc3, 0xd8, 0x5c, 0x6c, 0x21, 0xa5, 0x65, 0x4c, 0x2f, 0xb8, 0x28, 0x9a, 0x7f, 0x3d, 0x06, - 0xb9, 0xee, 0x7b, 0x4f, 0xb4, 0x02, 0x29, 0xcb, 0x31, 0x30, 0x0b, 0x04, 0x7e, 0xe9, 0xbe, 0x10, - 0x71, 0x55, 0xba, 0xb8, 0x2e, 0xf4, 0xb5, 0x00, 0x39, 0xf3, 0x8f, 0x0a, 0xa4, 0xa4, 0x18, 0x9d, - 0x80, 0x44, 0x13, 0xfb, 0x07, 0x8c, 0x2e, 0x59, 0x8e, 0xa9, 0x8a, 0xc6, 0xc6, 0x54, 0xee, 0x35, - 0xb1, 0xcd, 0x42, 0x40, 0xc8, 0xe9, 0x98, 0xee, 0xab, 0x45, 0x70, 0x8d, 0xb5, 0xc3, 0x4e, 0xa3, - 0x41, 0x6c, 0xdf, 0x93, 0xfb, 0x2a, 0xe4, 0xcb, 0x42, 0x8c, 0x1e, 0x87, 0x49, 0xdf, 0xc5, 0xa6, - 0xd5, 0xa5, 0x9b, 0x60, 0xba, 0xaa, 0x9c, 0x08, 0x94, 0x8b, 0x70, 0x52, 0xf2, 0xd6, 0x88, 0x8f, - 0x8d, 0x03, 0x52, 0xeb, 0x80, 0x46, 0xd9, 0xa5, 0xda, 0x7d, 0x42, 0x61, 0x45, 0xcc, 0x4b, 0xec, - 0xfc, 0x0f, 0x14, 0x98, 0x94, 0x0d, 0x7c, 0x2d, 0x70, 0x56, 0x15, 0x00, 0xdb, 0xb6, 0xe3, 0x87, - 0xdd, 0xd5, 0x1f, 0xca, 0x7d, 0xb8, 0xc5, 0x52, 0x00, 0xd2, 0x42, 0x04, 0x33, 0x0d, 0x80, 0xce, - 0xcc, 0x91, 0x6e, 0x9b, 0x85, 0x8c, 0xb8, 0xd4, 0x66, 0xbf, 0x8c, 0xf0, 0xb7, 0x3e, 0xe0, 0x22, - 0xda, 0xe9, 0xa3, 0x69, 0x48, 0xee, 0x91, 0xba, 0x69, 0x8b, 0xab, 0x36, 0x3e, 0x90, 0x17, 0x78, - 0x89, 0xe0, 0x02, 0xaf, 0xfc, 0x49, 0x98, 0x32, 0x9c, 0x46, 0xaf, 0xb9, 0x65, 0xb5, 0xe7, 0xcd, - 0xd3, 0xfb, 0x98, 0xf2, 0x02, 0x74, 0xba, 0xb3, 0x2f, 0x2b, 0xca, 0x57, 0x62, 0xf1, 0xd5, 0xad, - 0xf2, 0xd7, 0x62, 0x33, 0xab, 0x1c, 0xba, 0x25, 0x57, 0xaa, 0x91, 0x7d, 0x8b, 0x18, 0xd4, 0x7a, - 0xf8, 0xf1, 0xc3, 0xf0, 0xe1, 0xba, 0xe9, 0x1f, 0xb4, 0xf6, 0x16, 0x0d, 0xa7, 0x71, 0xa6, 0xee, - 0xd4, 0x9d, 0xce, 0x8f, 0x41, 0x74, 0xc4, 0x06, 0xec, 0x3f, 0xf1, 0x83, 0x50, 0x3a, 0x90, 0xce, - 0x44, 0xfe, 0x7a, 0x54, 0xdc, 0x80, 0x29, 0xa1, 0xac, 0xb3, 0x1b, 0x69, 0xde, 0x87, 0xa3, 0xbb, - 0xde, 0x4a, 0xe4, 0xbf, 0xf1, 0x16, 0xab, 0x74, 0xda, 0xa4, 0x80, 0xd2, 0x39, 0xde, 0xa9, 0x17, - 0x35, 0xf8, 0x40, 0x17, 0x1f, 0x3f, 0x9a, 0xc4, 0x8d, 0x60, 0xfc, 0x9e, 0x60, 0x9c, 0x0a, 0x31, - 0x6e, 0x0b, 0x68, 0x71, 0x19, 0xc6, 0x8f, 0xc3, 0xf5, 0xf7, 0x82, 0x2b, 0x4b, 0xc2, 0x24, 0xab, - 0x30, 0xc1, 0x48, 0x8c, 0x96, 0xe7, 0x3b, 0x0d, 0x96, 0xf7, 0xee, 0x4e, 0xf3, 0x0f, 0x6f, 0xf1, - 0xb3, 0x92, 0xa3, 0xb0, 0xe5, 0x00, 0x55, 0x2c, 0x02, 0xbb, 0x84, 0xaf, 0x11, 0xc3, 0x8a, 0x60, - 0x78, 0x43, 0x18, 0x12, 0xe8, 0x17, 0x3f, 0x01, 0xd3, 0xf4, 0x7f, 0x96, 0x96, 0xc2, 0x96, 0x44, - 0xdf, 0xc1, 0xe4, 0x7f, 0xf0, 0x32, 0x3f, 0x8e, 0x53, 0x01, 0x41, 0xc8, 0xa6, 0xd0, 0x2e, 0xd6, - 0x89, 0xef, 0x13, 0xd7, 0xd3, 0xb1, 0x35, 0xc8, 0xbc, 0xd0, 0x1b, 0x6c, 0xfe, 0x0b, 0xef, 0x74, - 0xef, 0xe2, 0x2a, 0x47, 0x96, 0x2c, 0xab, 0xb8, 0x0b, 0xf7, 0x0d, 0x88, 0x8a, 0x21, 0x38, 0x5f, - 0x11, 0x9c, 0xd3, 0x7d, 0x91, 0x41, 0x69, 0xb7, 0x40, 0xca, 0x83, 0xbd, 0x1c, 0x82, 0xf3, 0x8b, - 0x82, 0x13, 0x09, 0xac, 0xdc, 0x52, 0xca, 0x78, 0x05, 0x26, 0xaf, 0x13, 0x77, 0xcf, 0xf1, 0xc4, - 0xc5, 0xc1, 0x10, 0x74, 0xaf, 0x0a, 0xba, 0x09, 0x01, 0x64, 0xd7, 0x08, 0x94, 0xeb, 0x29, 0x48, - 0xed, 0x63, 0x83, 0x0c, 0x41, 0xf1, 0x25, 0x41, 0x31, 0x46, 0xf5, 0x29, 0xb4, 0x04, 0xd9, 0xba, - 0x23, 0x2a, 0x53, 0x34, 0xfc, 0x35, 0x01, 0xcf, 0x48, 0x8c, 0xa0, 0x68, 0x3a, 0xcd, 0x96, 0x45, - 0xcb, 0x56, 0x34, 0xc5, 0x1f, 0x4a, 0x0a, 0x89, 0x11, 0x14, 0xc7, 0x70, 0xeb, 0x97, 0x25, 0x85, - 0x17, 0xf2, 0xe7, 0x33, 0x90, 0x71, 0x6c, 0xab, 0xed, 0xd8, 0xc3, 0x18, 0xf1, 0x47, 0x82, 0x01, - 0x04, 0x84, 0x12, 0x5c, 0x82, 0xf4, 0xb0, 0x1b, 0xf1, 0xc7, 0xef, 0xc8, 0xe3, 0x21, 0x77, 0x60, - 0x15, 0x26, 0x64, 0x82, 0x32, 0x1d, 0x7b, 0x08, 0x8a, 0x3f, 0x11, 0x14, 0xb9, 0x10, 0x4c, 0x2c, - 0xc3, 0x27, 0x9e, 0x5f, 0x27, 0xc3, 0x90, 0xbc, 0x2e, 0x97, 0x21, 0x20, 0xc2, 0x95, 0x7b, 0xc4, - 0x36, 0x0e, 0x86, 0x63, 0xf8, 0xaa, 0x74, 0xa5, 0xc4, 0x50, 0x8a, 0x65, 0x18, 0x6f, 0x60, 0xd7, - 0x3b, 0xc0, 0xd6, 0x50, 0xdb, 0xf1, 0xa7, 0x82, 0x23, 0x1b, 0x80, 0x84, 0x47, 0x5a, 0xf6, 0x71, - 0x68, 0xbe, 0x26, 0x3d, 0x12, 0x82, 0x89, 0xa3, 0xe7, 0xf9, 0xec, 0x6e, 0xe6, 0x38, 0x6c, 0x7f, - 0x26, 0x8f, 0x1e, 0xc7, 0x56, 0xc3, 0x8c, 0x97, 0x20, 0xed, 0x99, 0x2f, 0x0d, 0x45, 0xf3, 0xe7, - 0x72, 0xa7, 0x19, 0x80, 0x82, 0x9f, 0x87, 0x93, 0x03, 0xcb, 0xc4, 0x10, 0x64, 0x7f, 0x21, 0xc8, - 0x4e, 0x0c, 0x28, 0x15, 0x22, 0x25, 0x1c, 0x97, 0xf2, 0x2f, 0x65, 0x4a, 0x20, 0x3d, 0x5c, 0x5b, - 0xb4, 0xb3, 0xf7, 0xf0, 0xfe, 0xf1, 0xbc, 0xf6, 0x57, 0xd2, 0x6b, 0x1c, 0xdb, 0xe5, 0xb5, 0x1d, - 0x38, 0x21, 0x18, 0x8f, 0xb7, 0xaf, 0x5f, 0x97, 0x89, 0x95, 0xa3, 0x77, 0xbb, 0x77, 0xf7, 0x93, - 0x30, 0x13, 0xb8, 0x53, 0x36, 0xa5, 0x9e, 0xde, 0xc0, 0xcd, 0x21, 0x98, 0xbf, 0x21, 0x98, 0x65, - 0xc6, 0x0f, 0xba, 0x5a, 0xaf, 0x8a, 0x9b, 0x94, 0xfc, 0x39, 0xc8, 0x4b, 0xf2, 0x96, 0xed, 0x12, - 0xc3, 0xa9, 0xdb, 0xe6, 0x4b, 0xa4, 0x36, 0x04, 0xf5, 0x5f, 0xf7, 0x6c, 0xd5, 0x6e, 0x08, 0x4e, - 0x99, 0xd7, 0x40, 0x0d, 0x7a, 0x15, 0xdd, 0x6c, 0x34, 0x1d, 0xd7, 0x8f, 0x60, 0xfc, 0x1b, 0xb9, - 0x53, 0x01, 0x6e, 0x8d, 0xc1, 0x8a, 0x15, 0xc8, 0xb1, 0xe1, 0xb0, 0x21, 0xf9, 0xb7, 0x82, 0x68, - 0xbc, 0x83, 0x12, 0x89, 0xc3, 0x70, 0x1a, 0x4d, 0xec, 0x0e, 0x93, 0xff, 0xbe, 0x29, 0x13, 0x87, - 0x80, 0x88, 0xc4, 0xe1, 0xb7, 0x9b, 0x84, 0x56, 0xfb, 0x21, 0x18, 0xbe, 0x25, 0x13, 0x87, 0xc4, - 0x08, 0x0a, 0xd9, 0x30, 0x0c, 0x41, 0xf1, 0x77, 0x92, 0x42, 0x62, 0x28, 0xc5, 0xc7, 0x3b, 0x85, - 0xd6, 0x25, 0x75, 0xd3, 0xf3, 0x5d, 0xde, 0x0a, 0xdf, 0x9d, 0xea, 0xdb, 0xef, 0x74, 0x37, 0x61, - 0x5a, 0x08, 0x5a, 0xbc, 0x02, 0x13, 0x3d, 0x2d, 0x06, 0x8a, 0xfa, 0x45, 0x3f, 0xff, 0xa9, 0xf7, - 0x44, 0x32, 0xea, 0xee, 0x30, 0x8a, 0xeb, 0x74, 0xdf, 0xbb, 0xfb, 0x80, 0x68, 0xb2, 0x97, 0xdf, - 0x0b, 0xb6, 0xbe, 0xab, 0x0d, 0x28, 0x5e, 0x86, 0xf1, 0xae, 0x1e, 0x20, 0x9a, 0xea, 0x57, 0x04, - 0x55, 0x36, 0xdc, 0x02, 0x14, 0xcf, 0x43, 0x82, 0xd6, 0xf3, 0x68, 0xf8, 0xaf, 0x0a, 0x38, 0x53, - 0x2f, 0x7e, 0x14, 0x52, 0xb2, 0x8e, 0x47, 0x43, 0x7f, 0x4d, 0x40, 0x03, 0x08, 0x85, 0xcb, 0x1a, - 0x1e, 0x0d, 0xff, 0x8c, 0x84, 0x4b, 0x08, 0x85, 0x0f, 0xef, 0xc2, 0xef, 0x7e, 0x2e, 0x21, 0xf2, - 0xb0, 0xf4, 0xdd, 0x25, 0x18, 0x13, 0xc5, 0x3b, 0x1a, 0xfd, 0x59, 0xf1, 0x70, 0x89, 0x28, 0x3e, - 0x09, 0xc9, 0x21, 0x1d, 0xfe, 0x1b, 0x02, 0xca, 0xf5, 0x8b, 0xcb, 0x90, 0x09, 0x15, 0xec, 0x68, - 0xf8, 0x6f, 0x0a, 0x78, 0x18, 0x45, 0x4d, 0x17, 0x05, 0x3b, 0x9a, 0xe0, 0xb7, 0xa4, 0xe9, 0x02, - 0x41, 0xdd, 0x26, 0x6b, 0x75, 0x34, 0xfa, 0xb7, 0xa5, 0xd7, 0x25, 0xa4, 0xf8, 0x0c, 0xa4, 0x83, - 0xfc, 0x1b, 0x8d, 0xff, 0x1d, 0x81, 0xef, 0x60, 0xa8, 0x07, 0x42, 0xf9, 0x3f, 0x9a, 0xe2, 0x77, - 0xa5, 0x07, 0x42, 0x28, 0x7a, 0x8c, 0x7a, 0x6b, 0x7a, 0x34, 0xd3, 0xef, 0xc9, 0x63, 0xd4, 0x53, - 0xd2, 0xe9, 0x6e, 0xb2, 0x34, 0x18, 0x4d, 0xf1, 0xfb, 0x72, 0x37, 0x99, 0x3e, 0x35, 0xa3, 0xb7, - 0x48, 0x46, 0x73, 0xfc, 0x81, 0x34, 0xa3, 0xa7, 0x46, 0x16, 0xb7, 0x00, 0xf5, 0x17, 0xc8, 0x68, - 0xbe, 0xcf, 0x0b, 0xbe, 0xc9, 0xbe, 0xfa, 0x58, 0x7c, 0x16, 0x4e, 0x0c, 0x2e, 0x8e, 0xd1, 0xac, - 0x5f, 0x78, 0xaf, 0xe7, 0x75, 0x26, 0x5c, 0x1b, 0x8b, 0x3b, 0x9d, 0x2c, 0x1b, 0x2e, 0x8c, 0xd1, - 0xb4, 0xaf, 0xbc, 0xd7, 0x9d, 0x68, 0xc3, 0x75, 0xb1, 0x58, 0x02, 0xe8, 0xd4, 0xa4, 0x68, 0xae, - 0x57, 0x05, 0x57, 0x08, 0x44, 0x8f, 0x86, 0x28, 0x49, 0xd1, 0xf8, 0x2f, 0xc9, 0xa3, 0x21, 0x10, - 0xf4, 0x68, 0xc8, 0x6a, 0x14, 0x8d, 0x7e, 0x4d, 0x1e, 0x0d, 0x09, 0x29, 0x5e, 0x82, 0x94, 0xdd, - 0xb2, 0x2c, 0x1a, 0x5b, 0xe8, 0xee, 0x1f, 0xd9, 0xe4, 0x7f, 0xf4, 0xbe, 0x00, 0x4b, 0x40, 0xf1, - 0x3c, 0x24, 0x49, 0x63, 0x8f, 0xd4, 0xa2, 0x90, 0xff, 0xf6, 0xbe, 0xcc, 0x27, 0x54, 0xbb, 0xf8, - 0x0c, 0x00, 0x7f, 0x99, 0x66, 0xbf, 0xb1, 0x44, 0x60, 0xff, 0xfd, 0x7d, 0xf1, 0xfb, 0x7d, 0x07, - 0xd2, 0x21, 0xe0, 0x5f, 0x03, 0xdc, 0x9d, 0xe0, 0x9d, 0x6e, 0x02, 0xf6, 0x02, 0xfe, 0x14, 0x8c, - 0x5d, 0xf5, 0x1c, 0xdb, 0xc7, 0xf5, 0x28, 0xf4, 0x7f, 0x08, 0xb4, 0xd4, 0xa7, 0x0e, 0x6b, 0x38, - 0x2e, 0xf1, 0x71, 0xdd, 0x8b, 0xc2, 0xfe, 0xa7, 0xc0, 0x06, 0x00, 0x0a, 0x36, 0xb0, 0xe7, 0x0f, - 0xb3, 0xee, 0xff, 0x92, 0x60, 0x09, 0xa0, 0x46, 0xd3, 0xff, 0xaf, 0x91, 0x76, 0x14, 0xf6, 0x5d, - 0x69, 0xb4, 0xd0, 0x2f, 0x7e, 0x14, 0xd2, 0xf4, 0x5f, 0xfe, 0x4d, 0x4b, 0x04, 0xf8, 0xbf, 0x05, - 0xb8, 0x83, 0xa0, 0x4f, 0xf6, 0xfc, 0x9a, 0x6f, 0x46, 0x3b, 0xfb, 0x7f, 0xc4, 0x4e, 0x4b, 0xfd, - 0x62, 0x09, 0x32, 0x9e, 0x5f, 0xab, 0xb5, 0x44, 0x47, 0x13, 0x01, 0xff, 0xf1, 0xfb, 0xc1, 0x4b, - 0x6e, 0x80, 0x29, 0x9f, 0x1a, 0x7c, 0x5f, 0x07, 0xab, 0xce, 0xaa, 0xc3, 0x6f, 0xea, 0xe0, 0x3b, - 0x13, 0x70, 0xda, 0x70, 0x1a, 0x7b, 0x8e, 0x77, 0x86, 0x27, 0x94, 0x20, 0x9d, 0x9c, 0x91, 0xee, - 0x13, 0xb7, 0x6d, 0x81, 0x3b, 0x67, 0x8e, 0x77, 0x4d, 0x37, 0xff, 0xa3, 0x71, 0x48, 0x2d, 0x63, - 0xcf, 0xc7, 0x37, 0x70, 0x1b, 0x9d, 0x86, 0xd4, 0x9a, 0xed, 0x9f, 0x3b, 0xbb, 0xe5, 0xbb, 0xec, - 0x47, 0x9a, 0x78, 0x39, 0x7d, 0xe7, 0xd6, 0x6c, 0xd2, 0xa4, 0x32, 0x2d, 0x98, 0x42, 0x0f, 0x42, - 0x92, 0xfd, 0xcf, 0x2e, 0x2b, 0xe3, 0xe5, 0xf1, 0x37, 0x6e, 0xcd, 0x8e, 0x74, 0xf4, 0xf8, 0x1c, - 0x7a, 0x1e, 0x32, 0xd5, 0xf6, 0xae, 0x69, 0xfb, 0x17, 0x96, 0x28, 0x1d, 0x75, 0x40, 0xa2, 0xfc, - 0xe4, 0x9d, 0x5b, 0xb3, 0xe7, 0x8e, 0x34, 0x90, 0x96, 0xc5, 0xce, 0xc2, 0x24, 0x9a, 0x7d, 0xdb, - 0x17, 0xe6, 0x42, 0xcf, 0x42, 0x4a, 0x0e, 0xf9, 0xa5, 0x7f, 0xf9, 0x92, 0x30, 0xe1, 0x9e, 0xb8, - 0x03, 0x32, 0xf4, 0x4b, 0x90, 0xad, 0xb6, 0x2f, 0x5b, 0x0e, 0x16, 0x3e, 0x48, 0xce, 0x29, 0x0b, - 0xb1, 0xf2, 0xc5, 0x3b, 0xb7, 0x66, 0x97, 0x86, 0x26, 0x16, 0x70, 0xc6, 0xdc, 0xc5, 0x86, 0x5e, - 0x80, 0x74, 0x30, 0x66, 0x3f, 0x2b, 0xc4, 0xca, 0x1f, 0x11, 0x76, 0xdf, 0x1b, 0x7d, 0x87, 0x2e, - 0x64, 0x39, 0x77, 0xf7, 0xd8, 0x9c, 0xb2, 0xa0, 0xdc, 0x8b, 0xe5, 0xc2, 0x27, 0x5d, 0x6c, 0x21, - 0xcb, 0x2f, 0x2c, 0xb1, 0xdf, 0x31, 0x94, 0x7b, 0xb5, 0x5c, 0xd0, 0x77, 0xe8, 0xd0, 0x15, 0x18, - 0xab, 0xb6, 0xcb, 0x6d, 0x9f, 0x78, 0xec, 0x83, 0x97, 0x6c, 0xf9, 0x89, 0x3b, 0xb7, 0x66, 0x3f, - 0x34, 0x24, 0x2b, 0xc3, 0x69, 0x92, 0x00, 0xcd, 0x41, 0x66, 0xc3, 0x71, 0x1b, 0xd8, 0xe2, 0x7c, - 0xc0, 0x7f, 0x97, 0x09, 0x89, 0xd0, 0x2e, 0x5d, 0x09, 0xdf, 0x6d, 0x8f, 0x7d, 0xad, 0xff, 0x53, - 0xc4, 0x64, 0x87, 0x09, 0x99, 0x90, 0xac, 0xb6, 0xab, 0xb8, 0x99, 0xcf, 0xb2, 0x1f, 0x0d, 0x1e, - 0x58, 0x0c, 0x10, 0xf2, 0x6c, 0x2d, 0xb2, 0x79, 0xf6, 0x61, 0x42, 0x79, 0xe9, 0xce, 0xad, 0xd9, - 0x27, 0x86, 0x7e, 0x62, 0x15, 0x37, 0xd9, 0xe3, 0xf8, 0x13, 0xd0, 0x37, 0x15, 0x7a, 0xb0, 0xf8, - 0xad, 0x2b, 0x7d, 0xe2, 0x38, 0x7b, 0xe2, 0x83, 0x03, 0x9f, 0x18, 0x68, 0xf1, 0xe7, 0xda, 0x9f, - 0x7e, 0xf3, 0x18, 0x2b, 0xe5, 0x6f, 0x36, 0xf4, 0xd1, 0xbf, 0xfe, 0xe6, 0x3d, 0x1f, 0xda, 0xc0, - 0x02, 0xf4, 0xb2, 0x02, 0xe3, 0xd5, 0xf6, 0x86, 0xa8, 0xb1, 0xd4, 0xf2, 0x9c, 0xf8, 0xa6, 0x7b, - 0x90, 0xe5, 0x21, 0x3d, 0x6e, 0xfb, 0x85, 0x4f, 0xbf, 0x39, 0x7b, 0x76, 0x68, 0x23, 0x58, 0x0a, - 0x62, 0x36, 0x74, 0x3f, 0x13, 0x7d, 0x86, 0x59, 0x51, 0xa1, 0xf5, 0xba, 0x46, 0x6a, 0xd4, 0x8a, - 0x89, 0xbb, 0x58, 0x11, 0xd2, 0xe3, 0x56, 0x14, 0x69, 0xd4, 0xdf, 0xbb, 0x25, 0x21, 0x3e, 0xb4, - 0x09, 0xa3, 0xdc, 0xc3, 0xec, 0x63, 0xab, 0xf4, 0x31, 0xc3, 0xb0, 0xb3, 0x39, 0x9a, 0xa0, 0x99, - 0xb9, 0x08, 0xd0, 0x89, 0x31, 0xa4, 0x42, 0xfc, 0x1a, 0x69, 0x8b, 0x8f, 0xea, 0xe8, 0xbf, 0x68, - 0xba, 0xf3, 0xd1, 0xa8, 0xb2, 0x90, 0x10, 0x5f, 0x82, 0x16, 0x63, 0x17, 0x95, 0x99, 0xa7, 0x41, - 0xed, 0x8d, 0x95, 0x63, 0xe1, 0x35, 0x40, 0xfd, 0x3b, 0x16, 0x66, 0x48, 0x72, 0x86, 0x87, 0xc3, - 0x0c, 0x99, 0xb3, 0x6a, 0xc7, 0xe7, 0xcf, 0x9a, 0x96, 0xe7, 0xd8, 0x7d, 0x9c, 0xbd, 0xfe, 0xff, - 0xe9, 0x38, 0xe7, 0x0b, 0x30, 0xca, 0x85, 0x74, 0x2d, 0x6b, 0xac, 0x7c, 0xb0, 0x2a, 0xa7, 0xf1, - 0x41, 0x79, 0xfd, 0x8d, 0xdb, 0x85, 0x91, 0xef, 0xdf, 0x2e, 0x8c, 0xfc, 0xd3, 0xed, 0xc2, 0xc8, - 0x0f, 0x6f, 0x17, 0x94, 0xb7, 0x6f, 0x17, 0x94, 0x77, 0x6f, 0x17, 0x94, 0x9f, 0xdc, 0x2e, 0x28, - 0x37, 0x0f, 0x0b, 0xca, 0x57, 0x0f, 0x0b, 0xca, 0xd7, 0x0f, 0x0b, 0xca, 0xb7, 0x0f, 0x0b, 0xca, - 0x77, 0x0f, 0x0b, 0xca, 0x1b, 0x87, 0x85, 0x91, 0xef, 0x1f, 0x16, 0x46, 0x7e, 0x78, 0x58, 0x50, - 0xde, 0x3e, 0x2c, 0x8c, 0xbc, 0x7b, 0x58, 0x50, 0x7e, 0x72, 0x58, 0x50, 0x6e, 0xfe, 0x4b, 0x61, - 0xe4, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x27, 0xac, 0xf6, 0xb1, 0x37, 0x35, 0x00, 0x00, + // 4126 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x83, 0x14, 0x6d, + 0xd9, 0xb4, 0x9d, 0x50, 0x1e, 0xfd, 0x59, 0x86, 0x12, 0x7b, 0x00, 0x12, 0x62, 0xa0, 0x12, 0x04, + 0xb2, 0x24, 0x23, 0xc9, 0xed, 0xcc, 0xce, 0x72, 0x71, 0x09, 0xae, 0xb4, 0xd8, 0x45, 0x76, 0x17, + 0x92, 0xe1, 0x27, 0x35, 0x6e, 0x9b, 0x49, 0x3b, 0xfd, 0xef, 0x4c, 0x13, 0xd7, 0x71, 0xdb, 0xcc, + 0xb4, 0x4e, 0x93, 0xfe, 0x24, 0x6d, 0x93, 0x66, 0xf2, 0x94, 0x97, 0xb4, 0x7e, 0xea, 0x24, 0x6f, + 0x7d, 0xe8, 0xc8, 0x16, 0xe3, 0x99, 0x3a, 0xad, 0xdb, 0xba, 0x8d, 0x67, 0x9a, 0x91, 0x5f, 0x3a, + 0xf7, 0x6f, 0xb1, 0xf8, 0x21, 0x17, 0x54, 0xc6, 0xc9, 0x13, 0xb1, 0xe7, 0x9e, 0xef, 0xdb, 0x73, + 0xcf, 0x3d, 0xf7, 0x9c, 0xb3, 0x77, 0x97, 0xf0, 0xc3, 0x73, 0xb0, 0xd0, 0xb0, 0xed, 0x86, 0x89, + 0x4f, 0xb5, 0x1c, 0xdb, 0xb3, 0x77, 0xda, 0xbb, 0xa7, 0xea, 0xd8, 0xd5, 0x1d, 0xa3, 0xe5, 0xd9, + 0xce, 0x32, 0x95, 0xa1, 0x29, 0xa6, 0xb1, 0x2c, 0x34, 0x16, 0x2b, 0x30, 0x7d, 0xc9, 0x30, 0xf1, + 0xaa, 0xaf, 0xb8, 0x89, 0x3d, 0x74, 0x01, 0x62, 0xbb, 0x86, 0x89, 0xb3, 0xd2, 0x42, 0x74, 0x29, + 0x75, 0xfa, 0xd1, 0xe5, 0x3e, 0xd0, 0x72, 0x2f, 0xa2, 0x46, 0xc4, 0x0a, 0x45, 0x2c, 0xbe, 0x1d, + 0x83, 0x99, 0x21, 0xa3, 0x08, 0x41, 0xcc, 0xd2, 0x9a, 0x84, 0x51, 0x5a, 0x4a, 0x2a, 0xf4, 0x37, + 0xca, 0xc2, 0x44, 0x4b, 0xd3, 0x6f, 0x68, 0x0d, 0x9c, 0x8d, 0x50, 0xb1, 0xb8, 0x44, 0x39, 0x80, + 0x3a, 0x6e, 0x61, 0xab, 0x8e, 0x2d, 0xbd, 0x93, 0x8d, 0x2e, 0x44, 0x97, 0x92, 0x4a, 0x40, 0x82, + 0x9e, 0x82, 0xe9, 0x56, 0x7b, 0xc7, 0x34, 0x74, 0x35, 0xa0, 0x06, 0x0b, 0xd1, 0xa5, 0xb8, 0x22, + 0xb3, 0x81, 0xd5, 0xae, 0xf2, 0xe3, 0x30, 0x75, 0x0b, 0x6b, 0x37, 0x82, 0xaa, 0x29, 0xaa, 0x9a, + 0x21, 0xe2, 0x80, 0xe2, 0x0a, 0xa4, 0x9b, 0xd8, 0x75, 0xb5, 0x06, 0x56, 0xbd, 0x4e, 0x0b, 0x67, + 0x63, 0x74, 0xf6, 0x0b, 0x03, 0xb3, 0xef, 0x9f, 0x79, 0x8a, 0xa3, 0xb6, 0x3a, 0x2d, 0x8c, 0x0a, + 0x90, 0xc4, 0x56, 0xbb, 0xc9, 0x18, 0xe2, 0x07, 0xf8, 0xaf, 0x64, 0xb5, 0x9b, 0xfd, 0x2c, 0x09, + 0x02, 0xe3, 0x14, 0x13, 0x2e, 0x76, 0x6e, 0x1a, 0x3a, 0xce, 0x8e, 0x53, 0x82, 0xc7, 0x07, 0x08, + 0x36, 0xd9, 0x78, 0x3f, 0x87, 0xc0, 0xa1, 0x15, 0x48, 0xe2, 0x17, 0x3d, 0x6c, 0xb9, 0x86, 0x6d, + 0x65, 0x27, 0x28, 0xc9, 0xc9, 0x21, 0xab, 0x88, 0xcd, 0x7a, 0x3f, 0x45, 0x17, 0x87, 0xce, 0xc3, + 0x84, 0xdd, 0xf2, 0x0c, 0xdb, 0x72, 0xb3, 0x89, 0x05, 0x69, 0x29, 0x75, 0xfa, 0x23, 0x43, 0x03, + 0xa1, 0xca, 0x74, 0x14, 0xa1, 0x8c, 0xca, 0x20, 0xbb, 0x76, 0xdb, 0xd1, 0xb1, 0xaa, 0xdb, 0x75, + 0xac, 0x1a, 0xd6, 0xae, 0x9d, 0x4d, 0x52, 0x82, 0xf9, 0xc1, 0x89, 0x50, 0xc5, 0x15, 0xbb, 0x8e, + 0xcb, 0xd6, 0xae, 0xad, 0x64, 0xdc, 0x9e, 0x6b, 0x74, 0x0c, 0xc6, 0xdd, 0x8e, 0xe5, 0x69, 0x2f, + 0x66, 0xd3, 0x34, 0x42, 0xf8, 0xd5, 0xe2, 0xff, 0xc5, 0x61, 0x6a, 0x94, 0x10, 0xbb, 0x08, 0xf1, + 0x5d, 0x32, 0xcb, 0x6c, 0xe4, 0x28, 0x3e, 0x60, 0x98, 0x5e, 0x27, 0x8e, 0xdf, 0xa7, 0x13, 0x0b, + 0x90, 0xb2, 0xb0, 0xeb, 0xe1, 0x3a, 0x8b, 0x88, 0xe8, 0x88, 0x31, 0x05, 0x0c, 0x34, 0x18, 0x52, + 0xb1, 0xfb, 0x0a, 0xa9, 0xab, 0x30, 0xe5, 0x9b, 0xa4, 0x3a, 0x9a, 0xd5, 0x10, 0xb1, 0x79, 0x2a, + 0xcc, 0x92, 0xe5, 0x92, 0xc0, 0x29, 0x04, 0xa6, 0x64, 0x70, 0xcf, 0x35, 0x5a, 0x05, 0xb0, 0x2d, + 0x6c, 0xef, 0xaa, 0x75, 0xac, 0x9b, 0xd9, 0xc4, 0x01, 0x5e, 0xaa, 0x12, 0x95, 0x01, 0x2f, 0xd9, + 0x4c, 0xaa, 0x9b, 0xe8, 0xd9, 0x6e, 0xa8, 0x4d, 0x1c, 0x10, 0x29, 0x15, 0xb6, 0xc9, 0x06, 0xa2, + 0x6d, 0x1b, 0x32, 0x0e, 0x26, 0x71, 0x8f, 0xeb, 0x7c, 0x66, 0x49, 0x6a, 0xc4, 0x72, 0xe8, 0xcc, + 0x14, 0x0e, 0x63, 0x13, 0x9b, 0x74, 0x82, 0x97, 0xe8, 0x11, 0xf0, 0x05, 0x2a, 0x0d, 0x2b, 0xa0, + 0x59, 0x28, 0x2d, 0x84, 0x1b, 0x5a, 0x13, 0xcf, 0x5d, 0x80, 0x4c, 0xaf, 0x7b, 0xd0, 0x2c, 0xc4, + 0x5d, 0x4f, 0x73, 0x3c, 0x1a, 0x85, 0x71, 0x85, 0x5d, 0x20, 0x19, 0xa2, 0xd8, 0xaa, 0xd3, 0x2c, + 0x17, 0x57, 0xc8, 0xcf, 0xb9, 0x67, 0x60, 0xb2, 0xe7, 0xf6, 0xa3, 0x02, 0x17, 0xbf, 0x30, 0x0e, + 0xb3, 0xc3, 0x62, 0x6e, 0x68, 0xf8, 0x1f, 0x83, 0x71, 0xab, 0xdd, 0xdc, 0xc1, 0x4e, 0x36, 0x4a, + 0x19, 0xf8, 0x15, 0x2a, 0x40, 0xdc, 0xd4, 0x76, 0xb0, 0x99, 0x8d, 0x2d, 0x48, 0x4b, 0x99, 0xd3, + 0x4f, 0x8d, 0x14, 0xd5, 0xcb, 0xeb, 0x04, 0xa2, 0x30, 0x24, 0x7a, 0x0e, 0x62, 0x3c, 0xc5, 0x11, + 0x86, 0x27, 0x47, 0x63, 0x20, 0xb1, 0xa8, 0x50, 0x1c, 0x7a, 0x08, 0x92, 0xe4, 0x2f, 0xf3, 0xed, + 0x38, 0xb5, 0x39, 0x41, 0x04, 0xc4, 0xaf, 0x68, 0x0e, 0x12, 0x34, 0xcc, 0xea, 0x58, 0x94, 0x06, + 0xff, 0x9a, 0x2c, 0x4c, 0x1d, 0xef, 0x6a, 0x6d, 0xd3, 0x53, 0x6f, 0x6a, 0x66, 0x1b, 0xd3, 0x80, + 0x49, 0x2a, 0x69, 0x2e, 0xfc, 0x34, 0x91, 0xa1, 0x79, 0x48, 0xb1, 0xa8, 0x34, 0xac, 0x3a, 0x7e, + 0x91, 0x66, 0x9f, 0xb8, 0xc2, 0x02, 0xb5, 0x4c, 0x24, 0xe4, 0xf6, 0xd7, 0x5d, 0xdb, 0x12, 0x4b, + 0x4b, 0x6f, 0x41, 0x04, 0xf4, 0xf6, 0xcf, 0xf4, 0x27, 0xbe, 0x87, 0x87, 0x4f, 0xaf, 0x3f, 0x16, + 0x17, 0xbf, 0x15, 0x81, 0x18, 0xdd, 0x6f, 0x53, 0x90, 0xda, 0xba, 0x56, 0x2b, 0xa9, 0xab, 0xd5, + 0xed, 0xe2, 0x7a, 0x49, 0x96, 0x50, 0x06, 0x80, 0x0a, 0x2e, 0xad, 0x57, 0x0b, 0x5b, 0x72, 0xc4, + 0xbf, 0x2e, 0x6f, 0x6c, 0x9d, 0x3f, 0x2b, 0x47, 0x7d, 0xc0, 0x36, 0x13, 0xc4, 0x82, 0x0a, 0x67, + 0x4e, 0xcb, 0x71, 0x24, 0x43, 0x9a, 0x11, 0x94, 0xaf, 0x96, 0x56, 0xcf, 0x9f, 0x95, 0xc7, 0x7b, + 0x25, 0x67, 0x4e, 0xcb, 0x13, 0x68, 0x12, 0x92, 0x54, 0x52, 0xac, 0x56, 0xd7, 0xe5, 0x84, 0xcf, + 0xb9, 0xb9, 0xa5, 0x94, 0x37, 0xd6, 0xe4, 0xa4, 0xcf, 0xb9, 0xa6, 0x54, 0xb7, 0x6b, 0x32, 0xf8, + 0x0c, 0x95, 0xd2, 0xe6, 0x66, 0x61, 0xad, 0x24, 0xa7, 0x7c, 0x8d, 0xe2, 0xb5, 0xad, 0xd2, 0xa6, + 0x9c, 0xee, 0x31, 0xeb, 0xcc, 0x69, 0x79, 0xd2, 0xbf, 0x45, 0x69, 0x63, 0xbb, 0x22, 0x67, 0xd0, + 0x34, 0x4c, 0xb2, 0x5b, 0x08, 0x23, 0xa6, 0xfa, 0x44, 0xe7, 0xcf, 0xca, 0x72, 0xd7, 0x10, 0xc6, + 0x32, 0xdd, 0x23, 0x38, 0x7f, 0x56, 0x46, 0x8b, 0x2b, 0x10, 0xa7, 0xd1, 0x85, 0x10, 0x64, 0xd6, + 0x0b, 0xc5, 0xd2, 0xba, 0x5a, 0xad, 0x6d, 0x95, 0xab, 0x1b, 0x85, 0x75, 0x59, 0xea, 0xca, 0x94, + 0xd2, 0xa7, 0xb6, 0xcb, 0x4a, 0x69, 0x55, 0x8e, 0x04, 0x65, 0xb5, 0x52, 0x61, 0xab, 0xb4, 0x2a, + 0x47, 0x17, 0x75, 0x98, 0x1d, 0x96, 0x67, 0x86, 0xee, 0x8c, 0xc0, 0x12, 0x47, 0x0e, 0x58, 0x62, + 0xca, 0x35, 0xb0, 0xc4, 0x5f, 0x96, 0x60, 0x66, 0x48, 0xae, 0x1d, 0x7a, 0x93, 0xe7, 0x21, 0xce, + 0x42, 0x94, 0x55, 0x9f, 0x27, 0x86, 0x26, 0x6d, 0x1a, 0xb0, 0x03, 0x15, 0x88, 0xe2, 0x82, 0x15, + 0x38, 0x7a, 0x40, 0x05, 0x26, 0x14, 0x03, 0x46, 0xbe, 0x2c, 0x41, 0xf6, 0x20, 0xee, 0x90, 0x44, + 0x11, 0xe9, 0x49, 0x14, 0x17, 0xfb, 0x0d, 0x38, 0x71, 0xf0, 0x1c, 0x06, 0xac, 0x78, 0x5d, 0x82, + 0x63, 0xc3, 0x1b, 0x95, 0xa1, 0x36, 0x3c, 0x07, 0xe3, 0x4d, 0xec, 0xed, 0xd9, 0xa2, 0x58, 0x3f, + 0x36, 0xa4, 0x04, 0x90, 0xe1, 0x7e, 0x5f, 0x71, 0x54, 0xb0, 0x86, 0x44, 0x0f, 0xea, 0x36, 0x98, + 0x35, 0x03, 0x96, 0x7e, 0x3e, 0x02, 0x0f, 0x0c, 0x25, 0x1f, 0x6a, 0xe8, 0xc3, 0x00, 0x86, 0xd5, + 0x6a, 0x7b, 0xac, 0x20, 0xb3, 0xfc, 0x94, 0xa4, 0x12, 0xba, 0xf7, 0x49, 0xee, 0x69, 0x7b, 0xfe, + 0x78, 0x94, 0x8e, 0x03, 0x13, 0x51, 0x85, 0x0b, 0x5d, 0x43, 0x63, 0xd4, 0xd0, 0xdc, 0x01, 0x33, + 0x1d, 0xa8, 0x75, 0x4f, 0x83, 0xac, 0x9b, 0x06, 0xb6, 0x3c, 0xd5, 0xf5, 0x1c, 0xac, 0x35, 0x0d, + 0xab, 0x41, 0x13, 0x70, 0x22, 0x1f, 0xdf, 0xd5, 0x4c, 0x17, 0x2b, 0x53, 0x6c, 0x78, 0x53, 0x8c, + 0x12, 0x04, 0xad, 0x32, 0x4e, 0x00, 0x31, 0xde, 0x83, 0x60, 0xc3, 0x3e, 0x62, 0xf1, 0x6b, 0x13, + 0x90, 0x0a, 0xb4, 0x75, 0xe8, 0x04, 0xa4, 0xaf, 0x6b, 0x37, 0x35, 0x55, 0xb4, 0xea, 0xcc, 0x13, + 0x29, 0x22, 0xab, 0xf1, 0x76, 0xfd, 0x69, 0x98, 0xa5, 0x2a, 0x76, 0xdb, 0xc3, 0x8e, 0xaa, 0x9b, + 0x9a, 0xeb, 0x52, 0xa7, 0x25, 0xa8, 0x2a, 0x22, 0x63, 0x55, 0x32, 0xb4, 0x22, 0x46, 0xd0, 0x39, + 0x98, 0xa1, 0x88, 0x66, 0xdb, 0xf4, 0x8c, 0x96, 0x89, 0x55, 0xf2, 0xf0, 0xe0, 0xd2, 0x44, 0xec, + 0x5b, 0x36, 0x4d, 0x34, 0x2a, 0x5c, 0x81, 0x58, 0xe4, 0xa2, 0x55, 0x78, 0x98, 0xc2, 0x1a, 0xd8, + 0xc2, 0x8e, 0xe6, 0x61, 0x15, 0x7f, 0xa6, 0xad, 0x99, 0xae, 0xaa, 0x59, 0x75, 0x75, 0x4f, 0x73, + 0xf7, 0xb2, 0xb3, 0x84, 0xa0, 0x18, 0xc9, 0x4a, 0xca, 0x71, 0xa2, 0xb8, 0xc6, 0xf5, 0x4a, 0x54, + 0xad, 0x60, 0xd5, 0x3f, 0xa9, 0xb9, 0x7b, 0x28, 0x0f, 0xc7, 0x28, 0x8b, 0xeb, 0x39, 0x86, 0xd5, + 0x50, 0xf5, 0x3d, 0xac, 0xdf, 0x50, 0xdb, 0xde, 0xee, 0x85, 0xec, 0x43, 0xc1, 0xfb, 0x53, 0x0b, + 0x37, 0xa9, 0xce, 0x0a, 0x51, 0xd9, 0xf6, 0x76, 0x2f, 0xa0, 0x4d, 0x48, 0x93, 0xc5, 0x68, 0x1a, + 0x2f, 0x61, 0x75, 0xd7, 0x76, 0x68, 0x65, 0xc9, 0x0c, 0xd9, 0xd9, 0x01, 0x0f, 0x2e, 0x57, 0x39, + 0xa0, 0x62, 0xd7, 0x71, 0x3e, 0xbe, 0x59, 0x2b, 0x95, 0x56, 0x95, 0x94, 0x60, 0xb9, 0x64, 0x3b, + 0x24, 0xa0, 0x1a, 0xb6, 0xef, 0xe0, 0x14, 0x0b, 0xa8, 0x86, 0x2d, 0xdc, 0x7b, 0x0e, 0x66, 0x74, + 0x9d, 0xcd, 0xd9, 0xd0, 0x55, 0xde, 0xe2, 0xbb, 0x59, 0xb9, 0xc7, 0x59, 0xba, 0xbe, 0xc6, 0x14, + 0x78, 0x8c, 0xbb, 0xe8, 0x59, 0x78, 0xa0, 0xeb, 0xac, 0x20, 0x70, 0x7a, 0x60, 0x96, 0xfd, 0xd0, + 0x73, 0x30, 0xd3, 0xea, 0x0c, 0x02, 0x51, 0xcf, 0x1d, 0x5b, 0x9d, 0x7e, 0xd8, 0x49, 0xfa, 0xd8, + 0xe6, 0x60, 0x5d, 0xf3, 0x70, 0x3d, 0xfb, 0x60, 0x50, 0x3b, 0x30, 0x80, 0x4e, 0x81, 0xac, 0xeb, + 0x2a, 0xb6, 0xb4, 0x1d, 0x13, 0xab, 0x9a, 0x83, 0x2d, 0xcd, 0xcd, 0xce, 0x07, 0x95, 0x33, 0xba, + 0x5e, 0xa2, 0xa3, 0x05, 0x3a, 0x88, 0x9e, 0x84, 0x69, 0x7b, 0xe7, 0xba, 0xce, 0x22, 0x4b, 0x6d, + 0x39, 0x78, 0xd7, 0x78, 0x31, 0xfb, 0x28, 0x75, 0xd3, 0x14, 0x19, 0xa0, 0x71, 0x55, 0xa3, 0x62, + 0xf4, 0x04, 0xc8, 0xba, 0xbb, 0xa7, 0x39, 0x2d, 0x5a, 0xda, 0xdd, 0x96, 0xa6, 0xe3, 0xec, 0x49, + 0xa6, 0xca, 0xe4, 0x1b, 0x42, 0x4c, 0x22, 0xdb, 0xbd, 0x65, 0xec, 0x7a, 0x82, 0xf1, 0x71, 0x16, + 0xd9, 0x54, 0xc6, 0xd9, 0xae, 0xc2, 0x6c, 0xdb, 0x32, 0x2c, 0x0f, 0x3b, 0x2d, 0x07, 0x93, 0x26, + 0x9e, 0xed, 0xc4, 0xec, 0xbf, 0x4d, 0x1c, 0xd0, 0x86, 0x6f, 0x07, 0xb5, 0x59, 0x00, 0x28, 0x33, + 0xed, 0x41, 0xe1, 0x62, 0x1e, 0xd2, 0xc1, 0xb8, 0x40, 0x49, 0x60, 0x91, 0x21, 0x4b, 0xa4, 0xc6, + 0xae, 0x54, 0x57, 0x49, 0x75, 0x7c, 0xa1, 0x24, 0x47, 0x48, 0x95, 0x5e, 0x2f, 0x6f, 0x95, 0x54, + 0x65, 0x7b, 0x63, 0xab, 0x5c, 0x29, 0xc9, 0xd1, 0x27, 0x93, 0x89, 0x77, 0x26, 0xe4, 0xdb, 0xb7, + 0x6f, 0xdf, 0x8e, 0x2c, 0x7e, 0x2f, 0x02, 0x99, 0xde, 0xce, 0x18, 0x7d, 0x1c, 0x1e, 0x14, 0x8f, + 0xb1, 0x2e, 0xf6, 0xd4, 0x5b, 0x86, 0x43, 0x43, 0xb5, 0xa9, 0xb1, 0xde, 0xd2, 0xf7, 0xf2, 0x2c, + 0xd7, 0xda, 0xc4, 0xde, 0x15, 0xc3, 0x21, 0x81, 0xd8, 0xd4, 0x3c, 0xb4, 0x0e, 0xf3, 0x96, 0xad, + 0xba, 0x9e, 0x66, 0xd5, 0x35, 0xa7, 0xae, 0x76, 0x0f, 0x10, 0x54, 0x4d, 0xd7, 0xb1, 0xeb, 0xda, + 0xac, 0x44, 0xf8, 0x2c, 0x1f, 0xb1, 0xec, 0x4d, 0xae, 0xdc, 0xcd, 0x9d, 0x05, 0xae, 0xda, 0x17, + 0x11, 0xd1, 0x83, 0x22, 0xe2, 0x21, 0x48, 0x36, 0xb5, 0x96, 0x8a, 0x2d, 0xcf, 0xe9, 0xd0, 0x7e, + 0x2e, 0xa1, 0x24, 0x9a, 0x5a, 0xab, 0x44, 0xae, 0x3f, 0xbc, 0x35, 0x08, 0xfa, 0xf1, 0x5f, 0xa3, + 0x90, 0x0e, 0xf6, 0x74, 0xa4, 0x45, 0xd6, 0x69, 0xfe, 0x96, 0xe8, 0x0e, 0x7f, 0xe4, 0xd0, 0x0e, + 0x70, 0x79, 0x85, 0x24, 0xf6, 0xfc, 0x38, 0xeb, 0xb4, 0x14, 0x86, 0x24, 0x45, 0x95, 0xec, 0x69, + 0xcc, 0xfa, 0xf7, 0x84, 0xc2, 0xaf, 0xd0, 0x1a, 0x8c, 0x5f, 0x77, 0x29, 0xf7, 0x38, 0xe5, 0x7e, + 0xf4, 0x70, 0xee, 0xcb, 0x9b, 0x94, 0x3c, 0x79, 0x79, 0x53, 0xdd, 0xa8, 0x2a, 0x95, 0xc2, 0xba, + 0xc2, 0xe1, 0xe8, 0x38, 0xc4, 0x4c, 0xed, 0xa5, 0x4e, 0x6f, 0x09, 0xa0, 0xa2, 0x51, 0x1d, 0x7f, + 0x1c, 0x62, 0xb7, 0xb0, 0x76, 0xa3, 0x37, 0xf1, 0x52, 0xd1, 0x87, 0x18, 0xfa, 0xa7, 0x20, 0x4e, + 0xfd, 0x85, 0x00, 0xb8, 0xc7, 0xe4, 0x31, 0x94, 0x80, 0xd8, 0x4a, 0x55, 0x21, 0xe1, 0x2f, 0x43, + 0x9a, 0x49, 0xd5, 0x5a, 0xb9, 0xb4, 0x52, 0x92, 0x23, 0x8b, 0xe7, 0x60, 0x9c, 0x39, 0x81, 0x6c, + 0x0d, 0xdf, 0x0d, 0xf2, 0x18, 0xbf, 0xe4, 0x1c, 0x92, 0x18, 0xdd, 0xae, 0x14, 0x4b, 0x8a, 0x1c, + 0x09, 0x2e, 0xaf, 0x0b, 0xe9, 0x60, 0x3b, 0xf7, 0xb3, 0x89, 0xa9, 0xef, 0x48, 0x90, 0x0a, 0xb4, + 0x67, 0xa4, 0x31, 0xd0, 0x4c, 0xd3, 0xbe, 0xa5, 0x6a, 0xa6, 0xa1, 0xb9, 0x3c, 0x28, 0x80, 0x8a, + 0x0a, 0x44, 0x32, 0xea, 0xa2, 0xfd, 0x4c, 0x8c, 0x7f, 0x4d, 0x02, 0xb9, 0xbf, 0xb5, 0xeb, 0x33, + 0x50, 0xfa, 0xb9, 0x1a, 0xf8, 0xaa, 0x04, 0x99, 0xde, 0x7e, 0xae, 0xcf, 0xbc, 0x13, 0x3f, 0x57, + 0xf3, 0xde, 0x8a, 0xc0, 0x64, 0x4f, 0x17, 0x37, 0xaa, 0x75, 0x9f, 0x81, 0x69, 0xa3, 0x8e, 0x9b, + 0x2d, 0xdb, 0xc3, 0x96, 0xde, 0x51, 0x4d, 0x7c, 0x13, 0x9b, 0xd9, 0x45, 0x9a, 0x28, 0x4e, 0x1d, + 0xde, 0x27, 0x2e, 0x97, 0xbb, 0xb8, 0x75, 0x02, 0xcb, 0xcf, 0x94, 0x57, 0x4b, 0x95, 0x5a, 0x75, + 0xab, 0xb4, 0xb1, 0x72, 0x4d, 0xdd, 0xde, 0xf8, 0x85, 0x8d, 0xea, 0x95, 0x0d, 0x45, 0x36, 0xfa, + 0xd4, 0x3e, 0xc4, 0xad, 0x5e, 0x03, 0xb9, 0xdf, 0x28, 0xf4, 0x20, 0x0c, 0x33, 0x4b, 0x1e, 0x43, + 0x33, 0x30, 0xb5, 0x51, 0x55, 0x37, 0xcb, 0xab, 0x25, 0xb5, 0x74, 0xe9, 0x52, 0x69, 0x65, 0x6b, + 0x93, 0x3d, 0x38, 0xfb, 0xda, 0x5b, 0xbd, 0x9b, 0xfa, 0x95, 0x28, 0xcc, 0x0c, 0xb1, 0x04, 0x15, + 0x78, 0xcf, 0xce, 0x1e, 0x23, 0x3e, 0x36, 0x8a, 0xf5, 0xcb, 0xa4, 0x2b, 0xa8, 0x69, 0x8e, 0xc7, + 0x5b, 0xfc, 0x27, 0x80, 0x78, 0xc9, 0xf2, 0x8c, 0x5d, 0x03, 0x3b, 0xfc, 0x9c, 0x81, 0x35, 0xf2, + 0x53, 0x5d, 0x39, 0x3b, 0x6a, 0xf8, 0x28, 0xa0, 0x96, 0xed, 0x1a, 0x9e, 0x71, 0x13, 0xab, 0x86, + 0x25, 0x0e, 0x25, 0x48, 0x63, 0x1f, 0x53, 0x64, 0x31, 0x52, 0xb6, 0x3c, 0x5f, 0xdb, 0xc2, 0x0d, + 0xad, 0x4f, 0x9b, 0x24, 0xf0, 0xa8, 0x22, 0x8b, 0x11, 0x5f, 0xfb, 0x04, 0xa4, 0xeb, 0x76, 0x9b, + 0xb4, 0x49, 0x4c, 0x8f, 0xd4, 0x0b, 0x49, 0x49, 0x31, 0x99, 0xaf, 0xc2, 0xfb, 0xd8, 0xee, 0x69, + 0x48, 0x5a, 0x49, 0x31, 0x19, 0x53, 0x79, 0x1c, 0xa6, 0xb4, 0x46, 0xc3, 0x21, 0xe4, 0x82, 0x88, + 0x75, 0xe6, 0x19, 0x5f, 0x4c, 0x15, 0xe7, 0x2e, 0x43, 0x42, 0xf8, 0x81, 0x94, 0x64, 0xe2, 0x09, + 0xb5, 0xc5, 0xce, 0xa4, 0x22, 0x4b, 0x49, 0x25, 0x61, 0x89, 0xc1, 0x13, 0x90, 0x36, 0x5c, 0xb5, + 0x7b, 0x38, 0x1a, 0x59, 0x88, 0x2c, 0x25, 0x94, 0x94, 0xe1, 0xfa, 0xa7, 0x61, 0x8b, 0xaf, 0x47, + 0x20, 0xd3, 0x7b, 0xb8, 0x8b, 0x56, 0x21, 0x61, 0xda, 0xba, 0x46, 0x43, 0x8b, 0xbd, 0x59, 0x58, + 0x0a, 0x39, 0x0f, 0x5e, 0x5e, 0xe7, 0xfa, 0x8a, 0x8f, 0x9c, 0xfb, 0x67, 0x09, 0x12, 0x42, 0x8c, + 0x8e, 0x41, 0xac, 0xa5, 0x79, 0x7b, 0x94, 0x2e, 0x5e, 0x8c, 0xc8, 0x92, 0x42, 0xaf, 0x89, 0xdc, + 0x6d, 0x69, 0x16, 0x0d, 0x01, 0x2e, 0x27, 0xd7, 0x64, 0x5d, 0x4d, 0xac, 0xd5, 0x69, 0xdb, 0x6f, + 0x37, 0x9b, 0xd8, 0xf2, 0x5c, 0xb1, 0xae, 0x5c, 0xbe, 0xc2, 0xc5, 0xe8, 0x29, 0x98, 0xf6, 0x1c, + 0xcd, 0x30, 0x7b, 0x74, 0x63, 0x54, 0x57, 0x16, 0x03, 0xbe, 0x72, 0x1e, 0x8e, 0x0b, 0xde, 0x3a, + 0xf6, 0x34, 0x7d, 0x0f, 0xd7, 0xbb, 0xa0, 0x71, 0x7a, 0x72, 0xf8, 0x20, 0x57, 0x58, 0xe5, 0xe3, + 0x02, 0xbb, 0xf8, 0x03, 0x09, 0xa6, 0xc5, 0x83, 0x4a, 0xdd, 0x77, 0x56, 0x05, 0x40, 0xb3, 0x2c, + 0xdb, 0x0b, 0xba, 0x6b, 0x30, 0x94, 0x07, 0x70, 0xcb, 0x05, 0x1f, 0xa4, 0x04, 0x08, 0xe6, 0x9a, + 0x00, 0xdd, 0x91, 0x03, 0xdd, 0x36, 0x0f, 0x29, 0x7e, 0x72, 0x4f, 0x5f, 0xff, 0xb0, 0x47, 0x5b, + 0x60, 0x22, 0xf2, 0x44, 0x83, 0x66, 0x21, 0xbe, 0x83, 0x1b, 0x86, 0xc5, 0xcf, 0x13, 0xd9, 0x85, + 0x38, 0xa5, 0x8c, 0xf9, 0xa7, 0x94, 0xc5, 0xab, 0x30, 0xa3, 0xdb, 0xcd, 0x7e, 0x73, 0x8b, 0x72, + 0xdf, 0xe3, 0xb5, 0xfb, 0x49, 0xe9, 0x05, 0xe8, 0xb6, 0x98, 0x5f, 0x8e, 0x44, 0xd7, 0x6a, 0xc5, + 0xaf, 0x46, 0xe6, 0xd6, 0x18, 0xae, 0x26, 0xa6, 0xa9, 0xe0, 0x5d, 0x13, 0xeb, 0xc4, 0x74, 0xf8, + 0xf1, 0x63, 0xf0, 0xb1, 0x86, 0xe1, 0xed, 0xb5, 0x77, 0x96, 0x75, 0xbb, 0x79, 0xaa, 0x61, 0x37, + 0xec, 0xee, 0xeb, 0x2e, 0x72, 0x45, 0x2f, 0xe8, 0x2f, 0xfe, 0xca, 0x2b, 0xe9, 0x4b, 0xe7, 0x42, + 0xdf, 0x8f, 0xe5, 0x37, 0x60, 0x86, 0x2b, 0xab, 0xf4, 0xcc, 0x9d, 0x3d, 0x1a, 0xa0, 0x43, 0xcf, + 0x5d, 0xb2, 0xdf, 0x78, 0x9b, 0xd6, 0x6a, 0x65, 0x9a, 0x43, 0xc9, 0x18, 0x7b, 0x80, 0xc8, 0x2b, + 0xf0, 0x40, 0x0f, 0x1f, 0xdb, 0x97, 0xd8, 0x09, 0x61, 0xfc, 0x1e, 0x67, 0x9c, 0x09, 0x30, 0x6e, + 0x72, 0x68, 0x7e, 0x05, 0x26, 0x8f, 0xc2, 0xf5, 0x8f, 0x9c, 0x2b, 0x8d, 0x83, 0x24, 0x6b, 0x30, + 0x45, 0x49, 0xf4, 0xb6, 0xeb, 0xd9, 0x4d, 0x9a, 0xf4, 0x0e, 0xa7, 0xf9, 0xa7, 0xb7, 0xd9, 0x46, + 0xc9, 0x10, 0xd8, 0x8a, 0x8f, 0xca, 0xe7, 0x81, 0xbe, 0x66, 0xa8, 0x63, 0xdd, 0x0c, 0x61, 0x78, + 0x83, 0x1b, 0xe2, 0xeb, 0xe7, 0x3f, 0x0d, 0xb3, 0xe4, 0x37, 0xcd, 0x49, 0x41, 0x4b, 0xc2, 0x4f, + 0x99, 0xb2, 0x3f, 0x78, 0x99, 0xed, 0xc5, 0x19, 0x9f, 0x20, 0x60, 0x53, 0x60, 0x15, 0x1b, 0xd8, + 0xf3, 0xb0, 0xe3, 0xaa, 0x9a, 0x39, 0xcc, 0xbc, 0xc0, 0x63, 0x7a, 0xf6, 0x8b, 0xef, 0xf6, 0xae, + 0xe2, 0x1a, 0x43, 0x16, 0x4c, 0x33, 0xbf, 0x0d, 0x0f, 0x0e, 0x89, 0x8a, 0x11, 0x38, 0x5f, 0xe1, + 0x9c, 0xb3, 0x03, 0x91, 0x41, 0x68, 0x6b, 0x20, 0xe4, 0xfe, 0x5a, 0x8e, 0xc0, 0xf9, 0x47, 0x9c, + 0x13, 0x71, 0xac, 0x58, 0x52, 0xc2, 0x78, 0x19, 0xa6, 0x6f, 0x62, 0x67, 0xc7, 0x76, 0xf9, 0xd1, + 0xc8, 0x08, 0x74, 0xaf, 0x72, 0xba, 0x29, 0x0e, 0xa4, 0x67, 0x25, 0x84, 0xeb, 0x59, 0x48, 0xec, + 0x6a, 0x3a, 0x1e, 0x81, 0xe2, 0x4b, 0x9c, 0x62, 0x82, 0xe8, 0x13, 0x68, 0x01, 0xd2, 0x0d, 0x9b, + 0x97, 0xa5, 0x70, 0xf8, 0x6b, 0x1c, 0x9e, 0x12, 0x18, 0x4e, 0xd1, 0xb2, 0x5b, 0x6d, 0x93, 0xd4, + 0xac, 0x70, 0x8a, 0x3f, 0x16, 0x14, 0x02, 0xc3, 0x29, 0x8e, 0xe0, 0xd6, 0x3f, 0x11, 0x14, 0x6e, + 0xc0, 0x9f, 0xcf, 0x43, 0xca, 0xb6, 0xcc, 0x8e, 0x6d, 0x8d, 0x62, 0xc4, 0x9f, 0x72, 0x06, 0xe0, + 0x10, 0x42, 0x70, 0x11, 0x92, 0xa3, 0x2e, 0xc4, 0x9f, 0xbd, 0x2b, 0xb6, 0x87, 0x58, 0x81, 0x35, + 0x98, 0x12, 0x09, 0xca, 0xb0, 0xad, 0x11, 0x28, 0xfe, 0x9c, 0x53, 0x64, 0x02, 0x30, 0x3e, 0x0d, + 0x0f, 0xbb, 0x5e, 0x03, 0x8f, 0x42, 0xf2, 0xba, 0x98, 0x06, 0x87, 0x70, 0x57, 0xee, 0x60, 0x4b, + 0xdf, 0x1b, 0x8d, 0xe1, 0x2b, 0xc2, 0x95, 0x02, 0x43, 0x28, 0x56, 0x60, 0xb2, 0xa9, 0x39, 0xee, + 0x9e, 0x66, 0x8e, 0xb4, 0x1c, 0x7f, 0xc1, 0x39, 0xd2, 0x3e, 0x88, 0x7b, 0xa4, 0x6d, 0x1d, 0x85, + 0xe6, 0xab, 0xc2, 0x23, 0x01, 0x18, 0xdf, 0x7a, 0xae, 0x47, 0x0f, 0xa0, 0x8e, 0xc2, 0xf6, 0x35, + 0xb1, 0xf5, 0x18, 0xb6, 0x12, 0x64, 0xbc, 0x08, 0x49, 0xd7, 0x78, 0x69, 0x24, 0x9a, 0xbf, 0x14, + 0x2b, 0x4d, 0x01, 0x04, 0x7c, 0x0d, 0x8e, 0x0f, 0x2d, 0x13, 0x23, 0x90, 0xfd, 0x15, 0x27, 0x3b, + 0x36, 0xa4, 0x54, 0xf0, 0x94, 0x70, 0x54, 0xca, 0xbf, 0x16, 0x29, 0x01, 0xf7, 0x71, 0xd5, 0xc8, + 0x83, 0x82, 0xab, 0xed, 0x1e, 0xcd, 0x6b, 0x7f, 0x23, 0xbc, 0xc6, 0xb0, 0x3d, 0x5e, 0xdb, 0x82, + 0x63, 0x9c, 0xf1, 0x68, 0xeb, 0xfa, 0x75, 0x91, 0x58, 0x19, 0x7a, 0xbb, 0x77, 0x75, 0x7f, 0x11, + 0xe6, 0x7c, 0x77, 0x8a, 0x8e, 0xd4, 0x55, 0x9b, 0x5a, 0x6b, 0x04, 0xe6, 0x6f, 0x70, 0x66, 0x91, + 0xf1, 0xfd, 0x96, 0xd6, 0xad, 0x68, 0x2d, 0x42, 0x7e, 0x15, 0xb2, 0x82, 0xbc, 0x6d, 0x39, 0x58, + 0xb7, 0x1b, 0x96, 0xf1, 0x12, 0xae, 0x8f, 0x40, 0xfd, 0xb7, 0x7d, 0x4b, 0xb5, 0x1d, 0x80, 0x13, + 0xe6, 0x32, 0xc8, 0x7e, 0xaf, 0xa2, 0x1a, 0xcd, 0x96, 0xed, 0x78, 0x21, 0x8c, 0x7f, 0x27, 0x56, + 0xca, 0xc7, 0x95, 0x29, 0x2c, 0x5f, 0x82, 0x0c, 0xbd, 0x1c, 0x35, 0x24, 0xff, 0x9e, 0x13, 0x4d, + 0x76, 0x51, 0x3c, 0x71, 0xe8, 0x76, 0xb3, 0xa5, 0x39, 0xa3, 0xe4, 0xbf, 0x6f, 0x8a, 0xc4, 0xc1, + 0x21, 0x3c, 0x71, 0x78, 0x9d, 0x16, 0x26, 0xd5, 0x7e, 0x04, 0x86, 0x6f, 0x89, 0xc4, 0x21, 0x30, + 0x9c, 0x42, 0x34, 0x0c, 0x23, 0x50, 0xfc, 0x83, 0xa0, 0x10, 0x18, 0x42, 0xf1, 0xa9, 0x6e, 0xa1, + 0x75, 0x70, 0xc3, 0x70, 0x3d, 0x87, 0xf5, 0xc1, 0x87, 0x53, 0x7d, 0xfb, 0xdd, 0xde, 0x26, 0x4c, + 0x09, 0x40, 0xf3, 0x97, 0x61, 0xaa, 0xaf, 0xc5, 0x40, 0x61, 0xdf, 0x2c, 0x64, 0x7f, 0xf9, 0x7d, + 0x9e, 0x8c, 0x7a, 0x3b, 0x8c, 0xfc, 0x3a, 0x59, 0xf7, 0xde, 0x3e, 0x20, 0x9c, 0xec, 0xe5, 0xf7, + 0xfd, 0xa5, 0xef, 0x69, 0x03, 0xf2, 0x97, 0x60, 0xb2, 0xa7, 0x07, 0x08, 0xa7, 0xfa, 0x15, 0x4e, + 0x95, 0x0e, 0xb6, 0x00, 0xf9, 0x73, 0x10, 0x23, 0xf5, 0x3c, 0x1c, 0xfe, 0xab, 0x1c, 0x4e, 0xd5, + 0xf3, 0x9f, 0x80, 0x84, 0xa8, 0xe3, 0xe1, 0xd0, 0x5f, 0xe3, 0x50, 0x1f, 0x42, 0xe0, 0xa2, 0x86, + 0x87, 0xc3, 0x3f, 0x27, 0xe0, 0x02, 0x42, 0xe0, 0xa3, 0xbb, 0xf0, 0xbb, 0xbf, 0x11, 0xe3, 0x79, + 0x58, 0xf8, 0xee, 0x22, 0x4c, 0xf0, 0xe2, 0x1d, 0x8e, 0xfe, 0x3c, 0xbf, 0xb9, 0x40, 0xe4, 0x9f, + 0x81, 0xf8, 0x88, 0x0e, 0xff, 0x4d, 0x0e, 0x65, 0xfa, 0xf9, 0x15, 0x48, 0x05, 0x0a, 0x76, 0x38, + 0xfc, 0xb7, 0x38, 0x3c, 0x88, 0x22, 0xa6, 0xf3, 0x82, 0x1d, 0x4e, 0xf0, 0xdb, 0xc2, 0x74, 0x8e, + 0x20, 0x6e, 0x13, 0xb5, 0x3a, 0x1c, 0xfd, 0x3b, 0xc2, 0xeb, 0x02, 0x92, 0x7f, 0x1e, 0x92, 0x7e, + 0xfe, 0x0d, 0xc7, 0xff, 0x2e, 0xc7, 0x77, 0x31, 0xc4, 0x03, 0x81, 0xfc, 0x1f, 0x4e, 0xf1, 0x7b, + 0xc2, 0x03, 0x01, 0x14, 0xd9, 0x46, 0xfd, 0x35, 0x3d, 0x9c, 0xe9, 0xf7, 0xc5, 0x36, 0xea, 0x2b, + 0xe9, 0x64, 0x35, 0x69, 0x1a, 0x0c, 0xa7, 0xf8, 0x03, 0xb1, 0x9a, 0x54, 0x9f, 0x98, 0xd1, 0x5f, + 0x24, 0xc3, 0x39, 0xfe, 0x50, 0x98, 0xd1, 0x57, 0x23, 0xf3, 0x35, 0x40, 0x83, 0x05, 0x32, 0x9c, + 0xef, 0x0b, 0x9c, 0x6f, 0x7a, 0xa0, 0x3e, 0xe6, 0xaf, 0xc0, 0xb1, 0xe1, 0xc5, 0x31, 0x9c, 0xf5, + 0x8b, 0xef, 0xf7, 0x3d, 0xce, 0x04, 0x6b, 0x63, 0x7e, 0xab, 0x9b, 0x65, 0x83, 0x85, 0x31, 0x9c, + 0xf6, 0x95, 0xf7, 0x7b, 0x13, 0x6d, 0xb0, 0x2e, 0xe6, 0x0b, 0x00, 0xdd, 0x9a, 0x14, 0xce, 0xf5, + 0x2a, 0xe7, 0x0a, 0x80, 0xc8, 0xd6, 0xe0, 0x25, 0x29, 0x1c, 0xff, 0x25, 0xb1, 0x35, 0x38, 0x82, + 0x6c, 0x0d, 0x51, 0x8d, 0xc2, 0xd1, 0xaf, 0x89, 0xad, 0x21, 0x20, 0xf9, 0x8b, 0x90, 0xb0, 0xda, + 0xa6, 0x49, 0x62, 0x0b, 0x1d, 0xfe, 0x19, 0x51, 0xf6, 0x47, 0x1f, 0x70, 0xb0, 0x00, 0xe4, 0xcf, + 0x41, 0x1c, 0x37, 0x77, 0x70, 0x3d, 0x0c, 0xf9, 0xef, 0x1f, 0x88, 0x7c, 0x42, 0xb4, 0xf3, 0xcf, + 0x03, 0xb0, 0x87, 0x69, 0xfa, 0x96, 0x28, 0x04, 0xfb, 0x1f, 0x1f, 0xf0, 0x2f, 0x14, 0xba, 0x90, + 0x2e, 0x01, 0xfb, 0xde, 0xe1, 0x70, 0x82, 0x77, 0x7b, 0x09, 0xe8, 0x03, 0xf8, 0xb3, 0x30, 0x71, + 0xdd, 0xb5, 0x2d, 0x4f, 0x6b, 0x84, 0xa1, 0xff, 0x93, 0xa3, 0x85, 0x3e, 0x71, 0x58, 0xd3, 0x76, + 0xb0, 0xa7, 0x35, 0xdc, 0x30, 0xec, 0x7f, 0x71, 0xac, 0x0f, 0x20, 0x60, 0x5d, 0x73, 0xbd, 0x51, + 0xe6, 0xfd, 0xdf, 0x02, 0x2c, 0x00, 0xc4, 0x68, 0xf2, 0xfb, 0x06, 0xee, 0x84, 0x61, 0xdf, 0x13, + 0x46, 0x73, 0xfd, 0xfc, 0x27, 0x20, 0x49, 0x7e, 0xb2, 0xaf, 0x76, 0x42, 0xc0, 0xff, 0xc3, 0xc1, + 0x5d, 0x04, 0xb9, 0xb3, 0xeb, 0xd5, 0x3d, 0x23, 0xdc, 0xd9, 0xff, 0xcb, 0x57, 0x5a, 0xe8, 0xe7, + 0x0b, 0x90, 0x72, 0xbd, 0x7a, 0xbd, 0xcd, 0x3b, 0x9a, 0x10, 0xf8, 0x8f, 0x3f, 0xf0, 0x1f, 0x72, + 0x7d, 0x4c, 0xf1, 0xc4, 0xf0, 0xc3, 0x3a, 0x58, 0xb3, 0xd7, 0x6c, 0x76, 0x4c, 0x07, 0xdf, 0x99, + 0x82, 0x93, 0xba, 0xdd, 0xdc, 0xb1, 0xdd, 0x53, 0x2c, 0xa1, 0xf8, 0xe9, 0xe4, 0x94, 0x70, 0x1f, + 0x3f, 0x6d, 0xf3, 0xdd, 0x39, 0x77, 0xb4, 0x63, 0xba, 0xc5, 0x1f, 0x4d, 0x42, 0x62, 0x45, 0x73, + 0x3d, 0xed, 0x96, 0xd6, 0x41, 0x27, 0x21, 0x51, 0xb6, 0xbc, 0x33, 0xa7, 0x6b, 0x9e, 0x43, 0x5f, + 0x33, 0x45, 0x8b, 0xc9, 0x7b, 0x77, 0xe6, 0xe3, 0x06, 0x91, 0x29, 0xfe, 0x10, 0x7a, 0x04, 0xe2, + 0xf4, 0x37, 0x3d, 0xa9, 0x8c, 0x16, 0x27, 0xdf, 0xb8, 0x33, 0x3f, 0xd6, 0xd5, 0x63, 0x63, 0xe8, + 0x1a, 0xa4, 0x2a, 0x9d, 0x6d, 0xc3, 0xf2, 0xce, 0x9f, 0x25, 0x74, 0xc4, 0x01, 0xb1, 0xe2, 0x33, + 0xf7, 0xee, 0xcc, 0x9f, 0x39, 0xd0, 0x40, 0x52, 0x16, 0xbb, 0x13, 0x13, 0x68, 0xfa, 0xf5, 0x62, + 0x90, 0x0b, 0x5d, 0x81, 0x84, 0xb8, 0x64, 0x27, 0xfe, 0xc5, 0x8b, 0xdc, 0x84, 0xfb, 0xe2, 0xf6, + 0xc9, 0xd0, 0x2f, 0x41, 0xba, 0xd2, 0xb9, 0x64, 0xda, 0x1a, 0xf7, 0x41, 0x7c, 0x41, 0x5a, 0x8a, + 0x14, 0x2f, 0xdc, 0xbb, 0x33, 0x7f, 0x76, 0x64, 0x62, 0x0e, 0xa7, 0xcc, 0x3d, 0x6c, 0xe8, 0x05, + 0x48, 0xfa, 0xd7, 0xf4, 0x9d, 0x42, 0xa4, 0xf8, 0x71, 0x6e, 0xf7, 0xfd, 0xd1, 0x77, 0xe9, 0x02, + 0x96, 0x33, 0x77, 0x4f, 0x2c, 0x48, 0x4b, 0xd2, 0xfd, 0x58, 0xce, 0x7d, 0xd2, 0xc3, 0x16, 0xb0, + 0xfc, 0xfc, 0x59, 0xfa, 0x12, 0x43, 0xba, 0x5f, 0xcb, 0x39, 0x7d, 0x97, 0x0e, 0x5d, 0x86, 0x89, + 0x4a, 0xa7, 0xd8, 0xf1, 0xb0, 0x4b, 0xbf, 0xea, 0x49, 0x17, 0x9f, 0xbe, 0x77, 0x67, 0xfe, 0xa3, + 0x23, 0xb2, 0x52, 0x9c, 0x22, 0x08, 0xd0, 0x02, 0xa4, 0x36, 0x6c, 0xa7, 0xa9, 0x99, 0x8c, 0x0f, + 0xd8, 0x4b, 0x99, 0x80, 0x08, 0x6d, 0x93, 0x99, 0xb0, 0xd5, 0x76, 0xe9, 0xff, 0x23, 0xfc, 0x14, + 0x31, 0xd9, 0x65, 0x42, 0x06, 0xc4, 0x2b, 0x9d, 0x8a, 0xd6, 0xca, 0xa6, 0xe9, 0x1b, 0x83, 0x87, + 0x97, 0x7d, 0x84, 0xd8, 0x5b, 0xcb, 0x74, 0x9c, 0x7e, 0x5a, 0x51, 0x3c, 0x7b, 0xef, 0xce, 0xfc, + 0xd3, 0x23, 0xdf, 0xb1, 0xa2, 0xb5, 0xe8, 0xed, 0xd8, 0x1d, 0xd0, 0x37, 0x25, 0xb2, 0xb1, 0xd8, + 0xa9, 0x2b, 0xb9, 0xe3, 0x24, 0xbd, 0xe3, 0x23, 0x43, 0xef, 0xe8, 0x6b, 0xb1, 0xfb, 0x5a, 0x9f, + 0x7d, 0xf3, 0x08, 0x33, 0x65, 0x4f, 0x36, 0xe4, 0xd6, 0xbf, 0xfe, 0xe6, 0x7d, 0x6f, 0x5a, 0xdf, + 0x02, 0xf4, 0xb2, 0x04, 0x93, 0x95, 0xce, 0x06, 0xaf, 0xb1, 0xc4, 0xf2, 0x0c, 0xff, 0x6a, 0x7d, + 0x98, 0xe5, 0x01, 0x3d, 0x66, 0xfb, 0xf9, 0xcf, 0xbe, 0x39, 0x7f, 0x7a, 0x64, 0x23, 0x68, 0x0a, + 0xa2, 0x36, 0xf4, 0xde, 0x13, 0x7d, 0x8e, 0x5a, 0x51, 0x22, 0xf5, 0xba, 0x8e, 0xeb, 0xc4, 0x8a, + 0xa9, 0x43, 0xac, 0x08, 0xe8, 0x31, 0x2b, 0xf2, 0x24, 0xea, 0xef, 0xdf, 0x92, 0x00, 0x1f, 0xaa, + 0xc2, 0x38, 0xf3, 0x30, 0xfd, 0xa2, 0x2c, 0x79, 0xc4, 0x30, 0xec, 0x2e, 0x8e, 0xc2, 0x69, 0xe6, + 0x2e, 0x00, 0x74, 0x63, 0x0c, 0xc9, 0x10, 0xbd, 0x81, 0x3b, 0xfc, 0xb3, 0x41, 0xf2, 0x13, 0xcd, + 0x76, 0x3f, 0x8b, 0x95, 0x96, 0x62, 0xfc, 0x5b, 0xd7, 0x7c, 0xe4, 0x82, 0x34, 0xf7, 0x1c, 0xc8, + 0xfd, 0xb1, 0x72, 0x24, 0xbc, 0x02, 0x68, 0x70, 0xc5, 0x82, 0x0c, 0x71, 0xc6, 0xf0, 0x58, 0x90, + 0x21, 0x75, 0x5a, 0xee, 0xfa, 0xfc, 0x8a, 0x61, 0xba, 0xb6, 0x35, 0xc0, 0xd9, 0xef, 0xff, 0x9f, + 0x8e, 0x73, 0x31, 0x07, 0xe3, 0x4c, 0x48, 0xe6, 0x52, 0xa6, 0xe5, 0x83, 0x56, 0x39, 0x85, 0x5d, + 0x14, 0xd7, 0xdf, 0xb8, 0x9b, 0x1b, 0xfb, 0xfe, 0xdd, 0xdc, 0xd8, 0xbf, 0xdc, 0xcd, 0x8d, 0xbd, + 0x75, 0x37, 0x27, 0xbd, 0x73, 0x37, 0x27, 0xbd, 0x77, 0x37, 0x27, 0xfd, 0xe4, 0x6e, 0x4e, 0xba, + 0xbd, 0x9f, 0x93, 0xbe, 0xb2, 0x9f, 0x93, 0xbe, 0xbe, 0x9f, 0x93, 0xbe, 0xbd, 0x9f, 0x93, 0xbe, + 0xbb, 0x9f, 0x93, 0xde, 0xd8, 0xcf, 0x8d, 0x7d, 0x7f, 0x3f, 0x37, 0xf6, 0xd6, 0x7e, 0x4e, 0x7a, + 0x67, 0x3f, 0x37, 0xf6, 0xde, 0x7e, 0x4e, 0xfa, 0xc9, 0x7e, 0x4e, 0xba, 0xfd, 0xc3, 0xdc, 0xd8, + 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x35, 0xe3, 0x7e, 0xf9, 0x19, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeunmarshaler/casttype.pb.go b/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeunmarshaler/casttype.pb.go index 035c37f49..4eeaca0d2 100644 --- a/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeunmarshaler/casttype.pb.go +++ b/vendor/github.com/gogo/protobuf/test/casttype/combos/unsafeunmarshaler/casttype.pb.go @@ -90,258 +90,265 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CasttypeDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4016 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0x72, 0x4c, 0x69, 0xe5, - 0x3f, 0xd9, 0x4e, 0xb4, 0xc6, 0xae, 0x76, 0xbd, 0xe6, 0x26, 0x36, 0x48, 0x89, 0xab, 0x68, 0x21, - 0x4a, 0xca, 0x48, 0x8a, 0x7f, 0x52, 0x60, 0x70, 0x35, 0xbc, 0xa2, 0x66, 0x77, 0x38, 0xc3, 0xce, - 0x0c, 0x77, 0x4d, 0x3f, 0x6d, 0xe2, 0xb6, 0x41, 0x1a, 0xf4, 0xbf, 0x40, 0x13, 0xc7, 0x71, 0xd3, - 0x00, 0xad, 0xd3, 0xf4, 0x2f, 0x69, 0x9b, 0x34, 0x28, 0xfa, 0x90, 0x97, 0xb4, 0x7e, 0x2a, 0x92, - 0xb7, 0x3e, 0x14, 0xeb, 0xac, 0x6a, 0xa0, 0x4e, 0xeb, 0xb6, 0x6e, 0x63, 0xa0, 0xc1, 0xfa, 0xa5, - 0xb8, 0x7f, 0xc3, 0xe1, 0x8f, 0x76, 0xa8, 0x0d, 0x12, 0xf7, 0x49, 0xba, 0xe7, 0x9e, 0xef, 0x9b, - 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0x33, 0x97, 0x03, 0x9f, 0x5e, 0x82, 0xb9, 0xba, 0xe3, 0xd4, 0x2d, - 0x72, 0xba, 0xe9, 0x3a, 0xbe, 0xb3, 0xd7, 0xda, 0x3f, 0x5d, 0x23, 0x9e, 0xe1, 0x9a, 0x4d, 0xdf, - 0x71, 0x17, 0x99, 0x0c, 0x4d, 0x70, 0x8d, 0x45, 0xa9, 0x31, 0x5f, 0x85, 0xc9, 0x4b, 0xa6, 0x45, - 0x56, 0x02, 0xc5, 0x6d, 0xe2, 0xa3, 0x0b, 0x90, 0xd8, 0x37, 0x2d, 0x92, 0x57, 0xe6, 0xe2, 0x0b, - 0x99, 0x33, 0x0f, 0x2e, 0xf6, 0x80, 0x16, 0xbb, 0x11, 0x5b, 0x54, 0xac, 0x31, 0xc4, 0xfc, 0x5b, - 0x09, 0x98, 0x1a, 0x30, 0x8b, 0x10, 0x24, 0x6c, 0xdc, 0xa0, 0x8c, 0xca, 0x42, 0x5a, 0x63, 0xff, - 0xa3, 0x3c, 0x8c, 0x35, 0xb1, 0x71, 0x15, 0xd7, 0x49, 0x3e, 0xc6, 0xc4, 0x72, 0x88, 0x0a, 0x00, - 0x35, 0xd2, 0x24, 0x76, 0x8d, 0xd8, 0x46, 0x3b, 0x1f, 0x9f, 0x8b, 0x2f, 0xa4, 0xb5, 0x90, 0x04, - 0x3d, 0x0e, 0x93, 0xcd, 0xd6, 0x9e, 0x65, 0x1a, 0x7a, 0x48, 0x0d, 0xe6, 0xe2, 0x0b, 0x49, 0x4d, - 0xe5, 0x13, 0x2b, 0x1d, 0xe5, 0x47, 0x60, 0xe2, 0x3a, 0xc1, 0x57, 0xc3, 0xaa, 0x19, 0xa6, 0x9a, - 0xa3, 0xe2, 0x90, 0xe2, 0x32, 0x64, 0x1b, 0xc4, 0xf3, 0x70, 0x9d, 0xe8, 0x7e, 0xbb, 0x49, 0xf2, - 0x09, 0xb6, 0xfa, 0xb9, 0xbe, 0xd5, 0xf7, 0xae, 0x3c, 0x23, 0x50, 0x3b, 0xed, 0x26, 0x41, 0x25, - 0x48, 0x13, 0xbb, 0xd5, 0xe0, 0x0c, 0xc9, 0x23, 0xfc, 0x57, 0xb1, 0x5b, 0x8d, 0x5e, 0x96, 0x14, - 0x85, 0x09, 0x8a, 0x31, 0x8f, 0xb8, 0xd7, 0x4c, 0x83, 0xe4, 0x47, 0x19, 0xc1, 0x23, 0x7d, 0x04, - 0xdb, 0x7c, 0xbe, 0x97, 0x43, 0xe2, 0xd0, 0x32, 0xa4, 0xc9, 0x8b, 0x3e, 0xb1, 0x3d, 0xd3, 0xb1, - 0xf3, 0x63, 0x8c, 0xe4, 0xa1, 0x01, 0xbb, 0x48, 0xac, 0x5a, 0x2f, 0x45, 0x07, 0x87, 0xce, 0xc3, - 0x98, 0xd3, 0xf4, 0x4d, 0xc7, 0xf6, 0xf2, 0xa9, 0x39, 0x65, 0x21, 0x73, 0xe6, 0x43, 0x03, 0x03, - 0x61, 0x93, 0xeb, 0x68, 0x52, 0x19, 0xad, 0x81, 0xea, 0x39, 0x2d, 0xd7, 0x20, 0xba, 0xe1, 0xd4, - 0x88, 0x6e, 0xda, 0xfb, 0x4e, 0x3e, 0xcd, 0x08, 0x66, 0xfb, 0x17, 0xc2, 0x14, 0x97, 0x9d, 0x1a, - 0x59, 0xb3, 0xf7, 0x1d, 0x2d, 0xe7, 0x75, 0x8d, 0xd1, 0x09, 0x18, 0xf5, 0xda, 0xb6, 0x8f, 0x5f, - 0xcc, 0x67, 0x59, 0x84, 0x88, 0xd1, 0xfc, 0xff, 0x26, 0x61, 0x62, 0x98, 0x10, 0xbb, 0x08, 0xc9, - 0x7d, 0xba, 0xca, 0x7c, 0xec, 0x38, 0x3e, 0xe0, 0x98, 0x6e, 0x27, 0x8e, 0xde, 0xa5, 0x13, 0x4b, - 0x90, 0xb1, 0x89, 0xe7, 0x93, 0x1a, 0x8f, 0x88, 0xf8, 0x90, 0x31, 0x05, 0x1c, 0xd4, 0x1f, 0x52, - 0x89, 0xbb, 0x0a, 0xa9, 0xe7, 0x60, 0x22, 0x30, 0x49, 0x77, 0xb1, 0x5d, 0x97, 0xb1, 0x79, 0x3a, - 0xca, 0x92, 0xc5, 0x8a, 0xc4, 0x69, 0x14, 0xa6, 0xe5, 0x48, 0xd7, 0x18, 0xad, 0x00, 0x38, 0x36, - 0x71, 0xf6, 0xf5, 0x1a, 0x31, 0xac, 0x7c, 0xea, 0x08, 0x2f, 0x6d, 0x52, 0x95, 0x3e, 0x2f, 0x39, - 0x5c, 0x6a, 0x58, 0xe8, 0xa9, 0x4e, 0xa8, 0x8d, 0x1d, 0x11, 0x29, 0x55, 0x7e, 0xc8, 0xfa, 0xa2, - 0x6d, 0x17, 0x72, 0x2e, 0xa1, 0x71, 0x4f, 0x6a, 0x62, 0x65, 0x69, 0x66, 0xc4, 0x62, 0xe4, 0xca, - 0x34, 0x01, 0xe3, 0x0b, 0x1b, 0x77, 0xc3, 0x43, 0xf4, 0x00, 0x04, 0x02, 0x9d, 0x85, 0x15, 0xb0, - 0x2c, 0x94, 0x95, 0xc2, 0x0d, 0xdc, 0x20, 0x33, 0x17, 0x20, 0xd7, 0xed, 0x1e, 0x34, 0x0d, 0x49, - 0xcf, 0xc7, 0xae, 0xcf, 0xa2, 0x30, 0xa9, 0xf1, 0x01, 0x52, 0x21, 0x4e, 0xec, 0x1a, 0xcb, 0x72, - 0x49, 0x8d, 0xfe, 0x3b, 0xf3, 0x24, 0x8c, 0x77, 0x3d, 0x7e, 0x58, 0xe0, 0xfc, 0x17, 0x46, 0x61, - 0x7a, 0x50, 0xcc, 0x0d, 0x0c, 0xff, 0x13, 0x30, 0x6a, 0xb7, 0x1a, 0x7b, 0xc4, 0xcd, 0xc7, 0x19, - 0x83, 0x18, 0xa1, 0x12, 0x24, 0x2d, 0xbc, 0x47, 0xac, 0x7c, 0x62, 0x4e, 0x59, 0xc8, 0x9d, 0x79, - 0x7c, 0xa8, 0xa8, 0x5e, 0x5c, 0xa7, 0x10, 0x8d, 0x23, 0xd1, 0xd3, 0x90, 0x10, 0x29, 0x8e, 0x32, - 0x3c, 0x36, 0x1c, 0x03, 0x8d, 0x45, 0x8d, 0xe1, 0xd0, 0x7d, 0x90, 0xa6, 0x7f, 0xb9, 0x6f, 0x47, - 0x99, 0xcd, 0x29, 0x2a, 0xa0, 0x7e, 0x45, 0x33, 0x90, 0x62, 0x61, 0x56, 0x23, 0xb2, 0x34, 0x04, - 0x63, 0xba, 0x31, 0x35, 0xb2, 0x8f, 0x5b, 0x96, 0xaf, 0x5f, 0xc3, 0x56, 0x8b, 0xb0, 0x80, 0x49, - 0x6b, 0x59, 0x21, 0xfc, 0x24, 0x95, 0xa1, 0x59, 0xc8, 0xf0, 0xa8, 0x34, 0xed, 0x1a, 0x79, 0x91, - 0x65, 0x9f, 0xa4, 0xc6, 0x03, 0x75, 0x8d, 0x4a, 0xe8, 0xe3, 0xaf, 0x78, 0x8e, 0x2d, 0xb7, 0x96, - 0x3d, 0x82, 0x0a, 0xd8, 0xe3, 0x9f, 0xec, 0x4d, 0x7c, 0xf7, 0x0f, 0x5e, 0x5e, 0x6f, 0x2c, 0xce, - 0x7f, 0x3b, 0x06, 0x09, 0x76, 0xde, 0x26, 0x20, 0xb3, 0xf3, 0xfc, 0x56, 0x45, 0x5f, 0xd9, 0xdc, - 0x2d, 0xaf, 0x57, 0x54, 0x05, 0xe5, 0x00, 0x98, 0xe0, 0xd2, 0xfa, 0x66, 0x69, 0x47, 0x8d, 0x05, - 0xe3, 0xb5, 0x8d, 0x9d, 0xf3, 0x4b, 0x6a, 0x3c, 0x00, 0xec, 0x72, 0x41, 0x22, 0xac, 0x70, 0xf6, - 0x8c, 0x9a, 0x44, 0x2a, 0x64, 0x39, 0xc1, 0xda, 0x73, 0x95, 0x95, 0xf3, 0x4b, 0xea, 0x68, 0xb7, - 0xe4, 0xec, 0x19, 0x75, 0x0c, 0x8d, 0x43, 0x9a, 0x49, 0xca, 0x9b, 0x9b, 0xeb, 0x6a, 0x2a, 0xe0, - 0xdc, 0xde, 0xd1, 0xd6, 0x36, 0x56, 0xd5, 0x74, 0xc0, 0xb9, 0xaa, 0x6d, 0xee, 0x6e, 0xa9, 0x10, - 0x30, 0x54, 0x2b, 0xdb, 0xdb, 0xa5, 0xd5, 0x8a, 0x9a, 0x09, 0x34, 0xca, 0xcf, 0xef, 0x54, 0xb6, - 0xd5, 0x6c, 0x97, 0x59, 0x67, 0xcf, 0xa8, 0xe3, 0xc1, 0x23, 0x2a, 0x1b, 0xbb, 0x55, 0x35, 0x87, - 0x26, 0x61, 0x9c, 0x3f, 0x42, 0x1a, 0x31, 0xd1, 0x23, 0x3a, 0xbf, 0xa4, 0xaa, 0x1d, 0x43, 0x38, - 0xcb, 0x64, 0x97, 0xe0, 0xfc, 0x92, 0x8a, 0xe6, 0x97, 0x21, 0xc9, 0xa2, 0x0b, 0x21, 0xc8, 0xad, - 0x97, 0xca, 0x95, 0x75, 0x7d, 0x73, 0x6b, 0x67, 0x6d, 0x73, 0xa3, 0xb4, 0xae, 0x2a, 0x1d, 0x99, - 0x56, 0xf9, 0xc4, 0xee, 0x9a, 0x56, 0x59, 0x51, 0x63, 0x61, 0xd9, 0x56, 0xa5, 0xb4, 0x53, 0x59, - 0x51, 0xe3, 0xf3, 0x06, 0x4c, 0x0f, 0xca, 0x33, 0x03, 0x4f, 0x46, 0x68, 0x8b, 0x63, 0x47, 0x6c, - 0x31, 0xe3, 0xea, 0xdb, 0xe2, 0xaf, 0x2a, 0x30, 0x35, 0x20, 0xd7, 0x0e, 0x7c, 0xc8, 0x33, 0x90, - 0xe4, 0x21, 0xca, 0xab, 0xcf, 0xa3, 0x03, 0x93, 0x36, 0x0b, 0xd8, 0xbe, 0x0a, 0xc4, 0x70, 0xe1, - 0x0a, 0x1c, 0x3f, 0xa2, 0x02, 0x53, 0x8a, 0x3e, 0x23, 0x5f, 0x56, 0x20, 0x7f, 0x14, 0x77, 0x44, - 0xa2, 0x88, 0x75, 0x25, 0x8a, 0x8b, 0xbd, 0x06, 0x9c, 0x3a, 0x7a, 0x0d, 0x7d, 0x56, 0xbc, 0xae, - 0xc0, 0x89, 0xc1, 0x8d, 0xca, 0x40, 0x1b, 0x9e, 0x86, 0xd1, 0x06, 0xf1, 0x0f, 0x1c, 0x59, 0xac, - 0x1f, 0x1e, 0x50, 0x02, 0xe8, 0x74, 0xaf, 0xaf, 0x04, 0x2a, 0x5c, 0x43, 0xe2, 0x47, 0x75, 0x1b, - 0xdc, 0x9a, 0x3e, 0x4b, 0x3f, 0x17, 0x83, 0x7b, 0x06, 0x92, 0x0f, 0x34, 0xf4, 0x7e, 0x00, 0xd3, - 0x6e, 0xb6, 0x7c, 0x5e, 0x90, 0x79, 0x7e, 0x4a, 0x33, 0x09, 0x3b, 0xfb, 0x34, 0xf7, 0xb4, 0xfc, - 0x60, 0x3e, 0xce, 0xe6, 0x81, 0x8b, 0x98, 0xc2, 0x85, 0x8e, 0xa1, 0x09, 0x66, 0x68, 0xe1, 0x88, - 0x95, 0xf6, 0xd5, 0xba, 0x27, 0x40, 0x35, 0x2c, 0x93, 0xd8, 0xbe, 0xee, 0xf9, 0x2e, 0xc1, 0x0d, - 0xd3, 0xae, 0xb3, 0x04, 0x9c, 0x2a, 0x26, 0xf7, 0xb1, 0xe5, 0x11, 0x6d, 0x82, 0x4f, 0x6f, 0xcb, - 0x59, 0x8a, 0x60, 0x55, 0xc6, 0x0d, 0x21, 0x46, 0xbb, 0x10, 0x7c, 0x3a, 0x40, 0xcc, 0x7f, 0x7e, - 0x0c, 0x32, 0xa1, 0xb6, 0x0e, 0x9d, 0x82, 0xec, 0x15, 0x7c, 0x0d, 0xeb, 0xb2, 0x55, 0xe7, 0x9e, - 0xc8, 0x50, 0xd9, 0x96, 0x68, 0xd7, 0x9f, 0x80, 0x69, 0xa6, 0xe2, 0xb4, 0x7c, 0xe2, 0xea, 0x86, - 0x85, 0x3d, 0x8f, 0x39, 0x2d, 0xc5, 0x54, 0x11, 0x9d, 0xdb, 0xa4, 0x53, 0xcb, 0x72, 0x06, 0x9d, - 0x83, 0x29, 0x86, 0x68, 0xb4, 0x2c, 0xdf, 0x6c, 0x5a, 0x44, 0xa7, 0x2f, 0x0f, 0x1e, 0x4b, 0xc4, - 0x81, 0x65, 0x93, 0x54, 0xa3, 0x2a, 0x14, 0xa8, 0x45, 0x1e, 0x5a, 0x85, 0xfb, 0x19, 0xac, 0x4e, - 0x6c, 0xe2, 0x62, 0x9f, 0xe8, 0xe4, 0x17, 0x5b, 0xd8, 0xf2, 0x74, 0x6c, 0xd7, 0xf4, 0x03, 0xec, - 0x1d, 0xe4, 0xa7, 0xc3, 0x04, 0x27, 0xa9, 0xee, 0xaa, 0x50, 0xad, 0x30, 0xcd, 0x92, 0x5d, 0xfb, - 0x38, 0xf6, 0x0e, 0x50, 0x11, 0x4e, 0x30, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xae, 0x1b, 0x07, 0xc4, - 0xb8, 0xaa, 0xb7, 0xfc, 0xfd, 0x0b, 0xf9, 0xfb, 0xc2, 0x0c, 0xcc, 0xc8, 0x6d, 0xa6, 0xb3, 0x4c, - 0x55, 0x76, 0xfd, 0xfd, 0x0b, 0x68, 0x1b, 0xb2, 0x74, 0x3f, 0x1a, 0xe6, 0x4b, 0x44, 0xdf, 0x77, - 0x5c, 0x56, 0x5c, 0x72, 0x03, 0x0e, 0x77, 0xc8, 0x89, 0x8b, 0x9b, 0x02, 0x50, 0x75, 0x6a, 0xa4, - 0x98, 0xdc, 0xde, 0xaa, 0x54, 0x56, 0xb4, 0x8c, 0x64, 0xb9, 0xe4, 0xb8, 0x34, 0xa6, 0xea, 0x4e, - 0xe0, 0xe3, 0x0c, 0x8f, 0xa9, 0xba, 0x23, 0x3d, 0x7c, 0x0e, 0xa6, 0x0c, 0x83, 0x2f, 0xdb, 0x34, - 0x74, 0xd1, 0xe5, 0x7b, 0x79, 0xb5, 0xcb, 0x5f, 0x86, 0xb1, 0xca, 0x15, 0x44, 0x98, 0x7b, 0xe8, - 0x29, 0xb8, 0xa7, 0xe3, 0xaf, 0x30, 0x70, 0xb2, 0x6f, 0x95, 0xbd, 0xd0, 0x73, 0x30, 0xd5, 0x6c, - 0xf7, 0x03, 0x51, 0xd7, 0x13, 0x9b, 0xed, 0x5e, 0xd8, 0x43, 0xec, 0xcd, 0xcd, 0x25, 0x06, 0xf6, - 0x49, 0x2d, 0x7f, 0x6f, 0x58, 0x3b, 0x34, 0x81, 0x4e, 0x83, 0x6a, 0x18, 0x3a, 0xb1, 0xf1, 0x9e, - 0x45, 0x74, 0xec, 0x12, 0x1b, 0x7b, 0xf9, 0xd9, 0xb0, 0x72, 0xce, 0x30, 0x2a, 0x6c, 0xb6, 0xc4, - 0x26, 0xd1, 0x63, 0x30, 0xe9, 0xec, 0x5d, 0x31, 0x78, 0x70, 0xe9, 0x4d, 0x97, 0xec, 0x9b, 0x2f, - 0xe6, 0x1f, 0x64, 0x6e, 0x9a, 0xa0, 0x13, 0x2c, 0xb4, 0xb6, 0x98, 0x18, 0x3d, 0x0a, 0xaa, 0xe1, - 0x1d, 0x60, 0xb7, 0xc9, 0xaa, 0xbb, 0xd7, 0xc4, 0x06, 0xc9, 0x3f, 0xc4, 0x55, 0xb9, 0x7c, 0x43, - 0x8a, 0xd1, 0x73, 0x30, 0xdd, 0xb2, 0x4d, 0xdb, 0x27, 0x6e, 0xd3, 0x25, 0xb4, 0x49, 0xe7, 0x27, - 0x2d, 0xff, 0xaf, 0x63, 0x47, 0xb4, 0xd9, 0xbb, 0x61, 0x6d, 0xbe, 0xbb, 0xda, 0x54, 0xab, 0x5f, - 0x38, 0x5f, 0x84, 0x6c, 0x78, 0xd3, 0x51, 0x1a, 0xf8, 0xb6, 0xab, 0x0a, 0xad, 0xa1, 0xcb, 0x9b, - 0x2b, 0xb4, 0xfa, 0xbd, 0x50, 0x51, 0x63, 0xb4, 0x0a, 0xaf, 0xaf, 0xed, 0x54, 0x74, 0x6d, 0x77, - 0x63, 0x67, 0xad, 0x5a, 0x51, 0xe3, 0x8f, 0xa5, 0x53, 0x6f, 0x8f, 0xa9, 0x37, 0x6e, 0xdc, 0xb8, - 0x11, 0x9b, 0xff, 0x5e, 0x0c, 0x72, 0xdd, 0x9d, 0x2f, 0xfa, 0x28, 0xdc, 0x2b, 0x5f, 0x53, 0x3d, - 0xe2, 0xeb, 0xd7, 0x4d, 0x97, 0xc5, 0x61, 0x03, 0xf3, 0xde, 0x31, 0x70, 0xe1, 0xb4, 0xd0, 0xda, - 0x26, 0xfe, 0xb3, 0xa6, 0x4b, 0xa3, 0xac, 0x81, 0x7d, 0xb4, 0x0e, 0xb3, 0xb6, 0xa3, 0x7b, 0x3e, - 0xb6, 0x6b, 0xd8, 0xad, 0xe9, 0x9d, 0x0b, 0x02, 0x1d, 0x1b, 0x06, 0xf1, 0x3c, 0x87, 0x97, 0x80, - 0x80, 0xe5, 0x43, 0xb6, 0xb3, 0x2d, 0x94, 0x3b, 0xb9, 0xb1, 0x24, 0x54, 0x7b, 0xb6, 0x3b, 0x7e, - 0xd4, 0x76, 0xdf, 0x07, 0xe9, 0x06, 0x6e, 0xea, 0xc4, 0xf6, 0xdd, 0x36, 0xeb, 0xd7, 0x52, 0x5a, - 0xaa, 0x81, 0x9b, 0x15, 0x3a, 0xfe, 0xd9, 0xed, 0x41, 0xd8, 0x8f, 0xff, 0x1c, 0x87, 0x6c, 0xb8, - 0x67, 0xa3, 0x2d, 0xb0, 0xc1, 0xf2, 0xb3, 0xc2, 0x8e, 0xef, 0x03, 0x77, 0xec, 0xf0, 0x16, 0x97, - 0x69, 0xe2, 0x2e, 0x8e, 0xf2, 0x4e, 0x4a, 0xe3, 0x48, 0x5a, 0x34, 0xe9, 0x81, 0x25, 0xbc, 0x3f, - 0x4f, 0x69, 0x62, 0x84, 0x56, 0x61, 0xf4, 0x8a, 0xc7, 0xb8, 0x47, 0x19, 0xf7, 0x83, 0x77, 0xe6, - 0xbe, 0xbc, 0xcd, 0xc8, 0xd3, 0x97, 0xb7, 0xf5, 0x8d, 0x4d, 0xad, 0x5a, 0x5a, 0xd7, 0x04, 0x1c, - 0x9d, 0x84, 0x84, 0x85, 0x5f, 0x6a, 0x77, 0xa7, 0x78, 0x26, 0x1a, 0xd6, 0xf1, 0x27, 0x21, 0x71, - 0x9d, 0xe0, 0xab, 0xdd, 0x89, 0x95, 0x89, 0x7e, 0x86, 0xa1, 0x7f, 0x1a, 0x92, 0xcc, 0x5f, 0x08, - 0x40, 0x78, 0x4c, 0x1d, 0x41, 0x29, 0x48, 0x2c, 0x6f, 0x6a, 0x34, 0xfc, 0x55, 0xc8, 0x72, 0xa9, - 0xbe, 0xb5, 0x56, 0x59, 0xae, 0xa8, 0xb1, 0xf9, 0x73, 0x30, 0xca, 0x9d, 0x40, 0x8f, 0x46, 0xe0, - 0x06, 0x75, 0x44, 0x0c, 0x05, 0x87, 0x22, 0x67, 0x77, 0xab, 0xe5, 0x8a, 0xa6, 0xc6, 0xc2, 0xdb, - 0xeb, 0x41, 0x36, 0xdc, 0xae, 0xfd, 0x7c, 0x62, 0xea, 0x6f, 0x15, 0xc8, 0x84, 0xda, 0x2f, 0x5a, - 0xf8, 0xb1, 0x65, 0x39, 0xd7, 0x75, 0x6c, 0x99, 0xd8, 0x13, 0x41, 0x01, 0x4c, 0x54, 0xa2, 0x92, - 0x61, 0x37, 0xed, 0xe7, 0x62, 0xfc, 0x6b, 0x0a, 0xa8, 0xbd, 0xad, 0x5b, 0x8f, 0x81, 0xca, 0x07, - 0x6a, 0xe0, 0xab, 0x0a, 0xe4, 0xba, 0xfb, 0xb5, 0x1e, 0xf3, 0x4e, 0x7d, 0xa0, 0xe6, 0x7d, 0x49, - 0x81, 0xf1, 0xae, 0x2e, 0xed, 0xff, 0x95, 0x75, 0xaf, 0xc4, 0x61, 0x6a, 0x00, 0x0e, 0x95, 0x44, - 0x3b, 0xcb, 0x3b, 0xec, 0x8f, 0x0c, 0xf3, 0xac, 0x45, 0x5a, 0x2d, 0xb7, 0xb0, 0xeb, 0x8b, 0xee, - 0xf7, 0x51, 0x50, 0xcd, 0x1a, 0xb1, 0x7d, 0x73, 0xdf, 0x24, 0xae, 0x78, 0x05, 0xe7, 0x3d, 0xee, - 0x44, 0x47, 0xce, 0xdf, 0xc2, 0x3f, 0x0c, 0xa8, 0xe9, 0x78, 0xa6, 0x6f, 0x5e, 0x23, 0xba, 0x69, - 0xcb, 0xf7, 0x75, 0xda, 0xf3, 0x26, 0x34, 0x55, 0xce, 0xac, 0xd9, 0x7e, 0xa0, 0x6d, 0x93, 0x3a, - 0xee, 0xd1, 0xa6, 0xb9, 0x2f, 0xae, 0xa9, 0x72, 0x26, 0xd0, 0x3e, 0x05, 0xd9, 0x9a, 0xd3, 0xa2, - 0xed, 0x03, 0xd7, 0xa3, 0xa9, 0x56, 0xd1, 0x32, 0x5c, 0x16, 0xa8, 0x88, 0xfe, 0xae, 0x73, 0x51, - 0x90, 0xd5, 0x32, 0x5c, 0xc6, 0x55, 0x1e, 0x81, 0x09, 0x5c, 0xaf, 0xbb, 0x94, 0x5c, 0x12, 0xf1, - 0xa6, 0x35, 0x17, 0x88, 0x99, 0xe2, 0xcc, 0x65, 0x48, 0x49, 0x3f, 0xd0, 0x6a, 0x46, 0x3d, 0xa1, - 0x37, 0xf9, 0x75, 0x4d, 0x6c, 0x21, 0xad, 0xa5, 0x6c, 0x39, 0x79, 0x0a, 0xb2, 0xa6, 0xa7, 0x77, - 0xee, 0x0d, 0x63, 0x73, 0xb1, 0x85, 0x94, 0x96, 0x31, 0xbd, 0xe0, 0xa2, 0x68, 0xfe, 0xf5, 0x18, - 0xe4, 0xba, 0xef, 0x3d, 0xd1, 0x0a, 0xa4, 0x2c, 0xc7, 0xc0, 0x2c, 0x10, 0xf8, 0xa5, 0xfb, 0x42, - 0xc4, 0x55, 0xe9, 0xe2, 0xba, 0xd0, 0xd7, 0x02, 0xe4, 0xcc, 0x3f, 0x2a, 0x90, 0x92, 0x62, 0x74, - 0x02, 0x12, 0x4d, 0xec, 0x1f, 0x30, 0xba, 0x64, 0x39, 0xa6, 0x2a, 0x1a, 0x1b, 0x53, 0xb9, 0xd7, - 0xc4, 0x36, 0x0b, 0x01, 0x21, 0xa7, 0x63, 0xba, 0xaf, 0x16, 0xc1, 0x35, 0xd6, 0x0e, 0x3b, 0x8d, - 0x06, 0xb1, 0x7d, 0x4f, 0xee, 0xab, 0x90, 0x2f, 0x0b, 0x31, 0x7a, 0x1c, 0x26, 0x7d, 0x17, 0x9b, - 0x56, 0x97, 0x6e, 0x82, 0xe9, 0xaa, 0x72, 0x22, 0x50, 0x2e, 0xc2, 0x49, 0xc9, 0x5b, 0x23, 0x3e, - 0x36, 0x0e, 0x48, 0xad, 0x03, 0x1a, 0x65, 0x97, 0x6a, 0xf7, 0x0a, 0x85, 0x15, 0x31, 0x2f, 0xb1, - 0xf3, 0x3f, 0x50, 0x60, 0x52, 0x36, 0xf0, 0xb5, 0xc0, 0x59, 0x55, 0x00, 0x6c, 0xdb, 0x8e, 0x1f, - 0x76, 0x57, 0x7f, 0x28, 0xf7, 0xe1, 0x16, 0x4b, 0x01, 0x48, 0x0b, 0x11, 0xcc, 0x34, 0x00, 0x3a, - 0x33, 0x47, 0xba, 0x6d, 0x16, 0x32, 0xe2, 0x52, 0x9b, 0xfd, 0x32, 0xc2, 0xdf, 0xfa, 0x80, 0x8b, - 0x68, 0xa7, 0x8f, 0xa6, 0x21, 0xb9, 0x47, 0xea, 0xa6, 0x2d, 0xae, 0xda, 0xf8, 0x40, 0x5e, 0xe0, - 0x25, 0x82, 0x0b, 0xbc, 0xf2, 0xa7, 0x60, 0xca, 0x70, 0x1a, 0xbd, 0xe6, 0x96, 0xd5, 0x9e, 0x37, - 0x4f, 0xef, 0xe3, 0xca, 0x0b, 0xd0, 0xe9, 0xce, 0xbe, 0xa2, 0x28, 0x5f, 0x8d, 0xc5, 0x57, 0xb7, - 0xca, 0x5f, 0x8f, 0xcd, 0xac, 0x72, 0xe8, 0x96, 0x5c, 0xa9, 0x46, 0xf6, 0x2d, 0x62, 0x50, 0xeb, - 0xe1, 0xc7, 0x0f, 0xc3, 0x47, 0xea, 0xa6, 0x7f, 0xd0, 0xda, 0x5b, 0x34, 0x9c, 0xc6, 0xe9, 0xba, - 0x53, 0x77, 0x3a, 0x3f, 0x06, 0xd1, 0x11, 0x1b, 0xb0, 0xff, 0xc4, 0x0f, 0x42, 0xe9, 0x40, 0x3a, - 0x13, 0xf9, 0xeb, 0x51, 0x71, 0x03, 0xa6, 0x84, 0xb2, 0xce, 0x6e, 0xa4, 0x79, 0x1f, 0x8e, 0xee, - 0x78, 0x2b, 0x91, 0xff, 0xe6, 0x5b, 0xac, 0xd2, 0x69, 0x93, 0x02, 0x4a, 0xe7, 0x78, 0xa7, 0x5e, - 0xd4, 0xe0, 0x9e, 0x2e, 0x3e, 0x7e, 0x34, 0x89, 0x1b, 0xc1, 0xf8, 0x3d, 0xc1, 0x38, 0x15, 0x62, - 0xdc, 0x16, 0xd0, 0xe2, 0x32, 0x8c, 0x1f, 0x87, 0xeb, 0xef, 0x05, 0x57, 0x96, 0x84, 0x49, 0x56, - 0x61, 0x82, 0x91, 0x18, 0x2d, 0xcf, 0x77, 0x1a, 0x2c, 0xef, 0xdd, 0x99, 0xe6, 0x1f, 0xde, 0xe2, - 0x67, 0x25, 0x47, 0x61, 0xcb, 0x01, 0xaa, 0x58, 0x04, 0x76, 0x09, 0x5f, 0x23, 0x86, 0x15, 0xc1, - 0xf0, 0x86, 0x30, 0x24, 0xd0, 0x2f, 0x7e, 0x12, 0xa6, 0xe9, 0xff, 0x2c, 0x2d, 0x85, 0x2d, 0x89, - 0xbe, 0x83, 0xc9, 0xff, 0xe0, 0x65, 0x7e, 0x1c, 0xa7, 0x02, 0x82, 0x90, 0x4d, 0xa1, 0x5d, 0xac, - 0x13, 0xdf, 0x27, 0xae, 0xa7, 0x63, 0x6b, 0x90, 0x79, 0xa1, 0x37, 0xd8, 0xfc, 0x17, 0xdf, 0xe9, - 0xde, 0xc5, 0x55, 0x8e, 0x2c, 0x59, 0x56, 0x71, 0x17, 0xee, 0x1d, 0x10, 0x15, 0x43, 0x70, 0xbe, - 0x22, 0x38, 0xa7, 0xfb, 0x22, 0x83, 0xd2, 0x6e, 0x81, 0x94, 0x07, 0x7b, 0x39, 0x04, 0xe7, 0x97, - 0x04, 0x27, 0x12, 0x58, 0xb9, 0xa5, 0x94, 0xf1, 0x32, 0x4c, 0x5e, 0x23, 0xee, 0x9e, 0xe3, 0x89, - 0x8b, 0x83, 0x21, 0xe8, 0x5e, 0x15, 0x74, 0x13, 0x02, 0xc8, 0xae, 0x11, 0x28, 0xd7, 0x53, 0x90, - 0xda, 0xc7, 0x06, 0x19, 0x82, 0xe2, 0xcb, 0x82, 0x62, 0x8c, 0xea, 0x53, 0x68, 0x09, 0xb2, 0x75, - 0x47, 0x54, 0xa6, 0x68, 0xf8, 0x6b, 0x02, 0x9e, 0x91, 0x18, 0x41, 0xd1, 0x74, 0x9a, 0x2d, 0x8b, - 0x96, 0xad, 0x68, 0x8a, 0xdf, 0x97, 0x14, 0x12, 0x23, 0x28, 0x8e, 0xe1, 0xd6, 0xaf, 0x48, 0x0a, - 0x2f, 0xe4, 0xcf, 0x67, 0x20, 0xe3, 0xd8, 0x56, 0xdb, 0xb1, 0x87, 0x31, 0xe2, 0x0f, 0x04, 0x03, - 0x08, 0x08, 0x25, 0xb8, 0x08, 0xe9, 0x61, 0x37, 0xe2, 0x0f, 0xdf, 0x91, 0xc7, 0x43, 0xee, 0xc0, - 0x2a, 0x4c, 0xc8, 0x04, 0x65, 0x3a, 0xf6, 0x10, 0x14, 0x7f, 0x24, 0x28, 0x72, 0x21, 0x98, 0x58, - 0x86, 0x4f, 0x3c, 0xbf, 0x4e, 0x86, 0x21, 0x79, 0x5d, 0x2e, 0x43, 0x40, 0x84, 0x2b, 0xf7, 0x88, - 0x6d, 0x1c, 0x0c, 0xc7, 0xf0, 0x35, 0xe9, 0x4a, 0x89, 0xa1, 0x14, 0xcb, 0x30, 0xde, 0xc0, 0xae, - 0x77, 0x80, 0xad, 0xa1, 0xb6, 0xe3, 0x8f, 0x05, 0x47, 0x36, 0x00, 0x09, 0x8f, 0xb4, 0xec, 0xe3, - 0xd0, 0x7c, 0x5d, 0x7a, 0x24, 0x04, 0x13, 0x47, 0xcf, 0xf3, 0xd9, 0xdd, 0xcc, 0x71, 0xd8, 0xfe, - 0x44, 0x1e, 0x3d, 0x8e, 0xad, 0x86, 0x19, 0x2f, 0x42, 0xda, 0x33, 0x5f, 0x1a, 0x8a, 0xe6, 0x4f, - 0xe5, 0x4e, 0x33, 0x00, 0x05, 0x3f, 0x0f, 0x27, 0x07, 0x96, 0x89, 0x21, 0xc8, 0xfe, 0x4c, 0x90, - 0x9d, 0x18, 0x50, 0x2a, 0x44, 0x4a, 0x38, 0x2e, 0xe5, 0x9f, 0xcb, 0x94, 0x40, 0x7a, 0xb8, 0xb6, - 0x68, 0x67, 0xef, 0xe1, 0xfd, 0xe3, 0x79, 0xed, 0x2f, 0xa4, 0xd7, 0x38, 0xb6, 0xcb, 0x6b, 0x3b, - 0x70, 0x42, 0x30, 0x1e, 0x6f, 0x5f, 0xbf, 0x21, 0x13, 0x2b, 0x47, 0xef, 0x76, 0xef, 0xee, 0xa7, - 0x60, 0x26, 0x70, 0xa7, 0x6c, 0x4a, 0x3d, 0xbd, 0x81, 0x9b, 0x43, 0x30, 0x7f, 0x53, 0x30, 0xcb, - 0x8c, 0x1f, 0x74, 0xb5, 0x5e, 0x15, 0x37, 0x29, 0xf9, 0x73, 0x90, 0x97, 0xe4, 0x2d, 0xdb, 0x25, - 0x86, 0x53, 0xb7, 0xcd, 0x97, 0x48, 0x6d, 0x08, 0xea, 0xbf, 0xec, 0xd9, 0xaa, 0xdd, 0x10, 0x9c, - 0x32, 0xaf, 0x81, 0x1a, 0xf4, 0x2a, 0xba, 0xd9, 0x68, 0x3a, 0xae, 0x1f, 0xc1, 0xf8, 0x57, 0x72, - 0xa7, 0x02, 0xdc, 0x1a, 0x83, 0x15, 0x2b, 0x90, 0x63, 0xc3, 0x61, 0x43, 0xf2, 0xaf, 0x05, 0xd1, - 0x78, 0x07, 0x25, 0x12, 0x87, 0xe1, 0x34, 0x9a, 0xd8, 0x1d, 0x26, 0xff, 0x7d, 0x4b, 0x26, 0x0e, - 0x01, 0x11, 0x89, 0xc3, 0x6f, 0x37, 0x09, 0xad, 0xf6, 0x43, 0x30, 0x7c, 0x5b, 0x26, 0x0e, 0x89, - 0x11, 0x14, 0xb2, 0x61, 0x18, 0x82, 0xe2, 0x6f, 0x24, 0x85, 0xc4, 0x50, 0x8a, 0x4f, 0x74, 0x0a, - 0xad, 0x4b, 0xea, 0xa6, 0xe7, 0xbb, 0xbc, 0x15, 0xbe, 0x33, 0xd5, 0x77, 0xde, 0xe9, 0x6e, 0xc2, - 0xb4, 0x10, 0xb4, 0x78, 0x19, 0x26, 0x7a, 0x5a, 0x0c, 0x14, 0xf5, 0x8b, 0x7e, 0xfe, 0xd3, 0xef, - 0x89, 0x64, 0xd4, 0xdd, 0x61, 0x14, 0xd7, 0xe9, 0xbe, 0x77, 0xf7, 0x01, 0xd1, 0x64, 0x2f, 0xbf, - 0x17, 0x6c, 0x7d, 0x57, 0x1b, 0x50, 0xbc, 0x04, 0xe3, 0x5d, 0x3d, 0x40, 0x34, 0xd5, 0x2f, 0x09, - 0xaa, 0x6c, 0xb8, 0x05, 0x28, 0x9e, 0x83, 0x04, 0xad, 0xe7, 0xd1, 0xf0, 0x5f, 0x16, 0x70, 0xa6, - 0x5e, 0xfc, 0x18, 0xa4, 0x64, 0x1d, 0x8f, 0x86, 0xfe, 0x8a, 0x80, 0x06, 0x10, 0x0a, 0x97, 0x35, - 0x3c, 0x1a, 0xfe, 0x59, 0x09, 0x97, 0x10, 0x0a, 0x1f, 0xde, 0x85, 0xdf, 0xfd, 0x7c, 0x42, 0xe4, - 0x61, 0xe9, 0xbb, 0x8b, 0x30, 0x26, 0x8a, 0x77, 0x34, 0xfa, 0x73, 0xe2, 0xe1, 0x12, 0x51, 0x7c, - 0x12, 0x92, 0x43, 0x3a, 0xfc, 0xd7, 0x04, 0x94, 0xeb, 0x17, 0x97, 0x21, 0x13, 0x2a, 0xd8, 0xd1, - 0xf0, 0x5f, 0x17, 0xf0, 0x30, 0x8a, 0x9a, 0x2e, 0x0a, 0x76, 0x34, 0xc1, 0x6f, 0x48, 0xd3, 0x05, - 0x82, 0xba, 0x4d, 0xd6, 0xea, 0x68, 0xf4, 0x6f, 0x4a, 0xaf, 0x4b, 0x48, 0xf1, 0x19, 0x48, 0x07, - 0xf9, 0x37, 0x1a, 0xff, 0x5b, 0x02, 0xdf, 0xc1, 0x50, 0x0f, 0x84, 0xf2, 0x7f, 0x34, 0xc5, 0x6f, - 0x4b, 0x0f, 0x84, 0x50, 0xf4, 0x18, 0xf5, 0xd6, 0xf4, 0x68, 0xa6, 0xdf, 0x91, 0xc7, 0xa8, 0xa7, - 0xa4, 0xd3, 0xdd, 0x64, 0x69, 0x30, 0x9a, 0xe2, 0x77, 0xe5, 0x6e, 0x32, 0x7d, 0x6a, 0x46, 0x6f, - 0x91, 0x8c, 0xe6, 0xf8, 0x3d, 0x69, 0x46, 0x4f, 0x8d, 0x2c, 0x6e, 0x01, 0xea, 0x2f, 0x90, 0xd1, - 0x7c, 0x5f, 0x10, 0x7c, 0x93, 0x7d, 0xf5, 0xb1, 0xf8, 0x2c, 0x9c, 0x18, 0x5c, 0x1c, 0xa3, 0x59, - 0xbf, 0xf8, 0x5e, 0xcf, 0xeb, 0x4c, 0xb8, 0x36, 0x16, 0x77, 0x3a, 0x59, 0x36, 0x5c, 0x18, 0xa3, - 0x69, 0x5f, 0x79, 0xaf, 0x3b, 0xd1, 0x86, 0xeb, 0x62, 0xb1, 0x04, 0xd0, 0xa9, 0x49, 0xd1, 0x5c, - 0xaf, 0x0a, 0xae, 0x10, 0x88, 0x1e, 0x0d, 0x51, 0x92, 0xa2, 0xf1, 0x5f, 0x96, 0x47, 0x43, 0x20, - 0xe8, 0xd1, 0x90, 0xd5, 0x28, 0x1a, 0xfd, 0x9a, 0x3c, 0x1a, 0x12, 0x52, 0xbc, 0x08, 0x29, 0xbb, - 0x65, 0x59, 0x34, 0xb6, 0xd0, 0x9d, 0x3f, 0xb2, 0xc9, 0xff, 0xe8, 0x7d, 0x01, 0x96, 0x80, 0xe2, - 0x39, 0x48, 0x92, 0xc6, 0x1e, 0xa9, 0x45, 0x21, 0xff, 0xed, 0x7d, 0x99, 0x4f, 0xa8, 0x76, 0xf1, - 0x19, 0x00, 0xfe, 0x32, 0xcd, 0x7e, 0x63, 0x89, 0xc0, 0xfe, 0xfb, 0xfb, 0xe2, 0xf7, 0xfb, 0x0e, - 0xa4, 0x43, 0xc0, 0xbf, 0x06, 0xb8, 0x33, 0xc1, 0x3b, 0xdd, 0x04, 0xec, 0x05, 0xfc, 0x29, 0x18, - 0xbb, 0xe2, 0x39, 0xb6, 0x8f, 0xeb, 0x51, 0xe8, 0xff, 0x10, 0x68, 0xa9, 0x4f, 0x1d, 0xd6, 0x70, - 0x5c, 0xe2, 0xe3, 0xba, 0x17, 0x85, 0xfd, 0x4f, 0x81, 0x0d, 0x00, 0x14, 0x6c, 0x60, 0xcf, 0x1f, - 0x66, 0xdd, 0xff, 0x25, 0xc1, 0x12, 0x40, 0x8d, 0xa6, 0xff, 0x5f, 0x25, 0xed, 0x28, 0xec, 0xbb, - 0xd2, 0x68, 0xa1, 0x5f, 0xfc, 0x18, 0xa4, 0xe9, 0xbf, 0xfc, 0x9b, 0x96, 0x08, 0xf0, 0x7f, 0x0b, - 0x70, 0x07, 0x41, 0x9f, 0xec, 0xf9, 0x35, 0xdf, 0x8c, 0x76, 0xf6, 0xff, 0x88, 0x9d, 0x96, 0xfa, - 0xc5, 0x12, 0x64, 0x3c, 0xbf, 0x56, 0x6b, 0x89, 0x8e, 0x26, 0x02, 0xfe, 0xe3, 0xf7, 0x83, 0x97, - 0xdc, 0x00, 0x53, 0x3e, 0x35, 0xf8, 0xbe, 0x0e, 0x56, 0x9d, 0x55, 0x87, 0xdf, 0xd4, 0xc1, 0xdf, - 0x4d, 0xc0, 0x23, 0x86, 0xd3, 0xd8, 0x73, 0xbc, 0xd3, 0x3c, 0xa1, 0x84, 0x92, 0xd1, 0x69, 0xe9, - 0x40, 0x71, 0xdf, 0x16, 0x38, 0x74, 0xe6, 0x78, 0x17, 0x75, 0xf3, 0x3f, 0x1a, 0x87, 0xd4, 0x32, - 0xf6, 0x7c, 0x7c, 0x1d, 0xb7, 0xd1, 0x43, 0x90, 0x5a, 0xb3, 0xfd, 0xb3, 0x67, 0xb6, 0x7c, 0x97, - 0xfd, 0x4c, 0x13, 0x2f, 0xa7, 0x6f, 0xdf, 0x9c, 0x4d, 0x9a, 0x54, 0xa6, 0x05, 0x53, 0xe8, 0x01, - 0x48, 0xb2, 0xff, 0xd9, 0x75, 0x65, 0xbc, 0x3c, 0xfe, 0xc6, 0xcd, 0xd9, 0x91, 0x8e, 0x1e, 0x9f, - 0x43, 0xcf, 0x43, 0xa6, 0xda, 0xde, 0x35, 0x6d, 0xff, 0xfc, 0x12, 0xa5, 0xa3, 0x2e, 0x48, 0x94, - 0x9f, 0xbc, 0x7d, 0x73, 0xf6, 0xec, 0x91, 0x06, 0xd2, 0xc2, 0xd8, 0x59, 0x98, 0x44, 0xb3, 0xaf, - 0xfb, 0xc2, 0x5c, 0xe8, 0x59, 0x48, 0xc9, 0x21, 0xbf, 0xf6, 0x2f, 0x5f, 0x14, 0x26, 0xdc, 0x15, - 0x77, 0x40, 0x86, 0x7e, 0x01, 0xb2, 0xd5, 0xf6, 0x25, 0xcb, 0xc1, 0xc2, 0x07, 0xc9, 0x39, 0x65, - 0x21, 0x56, 0xbe, 0x70, 0xfb, 0xe6, 0xec, 0xd2, 0xd0, 0xc4, 0x02, 0xce, 0x98, 0xbb, 0xd8, 0xd0, - 0x0b, 0x90, 0x0e, 0xc6, 0xec, 0x87, 0x85, 0x58, 0xf9, 0xa3, 0xc2, 0xee, 0xbb, 0xa3, 0xef, 0xd0, - 0x85, 0x2c, 0xe7, 0xee, 0x1e, 0x9b, 0x53, 0x16, 0x94, 0xbb, 0xb1, 0x5c, 0xf8, 0xa4, 0x8b, 0x2d, - 0x64, 0xf9, 0xf9, 0x25, 0xf6, 0x4b, 0x86, 0x72, 0xb7, 0x96, 0x0b, 0xfa, 0x0e, 0x1d, 0xba, 0x0c, - 0x63, 0xd5, 0x76, 0xb9, 0xed, 0x13, 0x8f, 0x7d, 0xf2, 0x92, 0x2d, 0x3f, 0x71, 0xfb, 0xe6, 0xec, - 0x87, 0x87, 0x64, 0x65, 0x38, 0x4d, 0x12, 0xa0, 0x39, 0xc8, 0x6c, 0x38, 0x6e, 0x03, 0x5b, 0x9c, - 0x0f, 0xf8, 0x2f, 0x33, 0x21, 0x11, 0xda, 0xa5, 0x2b, 0xe1, 0xbb, 0xed, 0xb1, 0xef, 0xf5, 0x7f, - 0x8a, 0x98, 0xec, 0x30, 0x21, 0x13, 0x92, 0xd5, 0x76, 0x15, 0x37, 0xf3, 0x59, 0xf6, 0xb3, 0xc1, - 0xfd, 0x8b, 0x01, 0x42, 0x9e, 0xad, 0x45, 0x36, 0xcf, 0x3e, 0x4d, 0x28, 0x2f, 0xdd, 0xbe, 0x39, - 0xfb, 0xc4, 0xd0, 0x4f, 0xac, 0xe2, 0x26, 0x7b, 0x1c, 0x7f, 0x02, 0xfa, 0x96, 0x42, 0x0f, 0x16, - 0xbf, 0x77, 0xa5, 0x4f, 0x1c, 0x67, 0x4f, 0x7c, 0x60, 0xe0, 0x13, 0x03, 0x2d, 0xfe, 0x5c, 0xfb, - 0x33, 0x6f, 0x1e, 0x63, 0xa5, 0xfc, 0xdd, 0x86, 0x3e, 0xfa, 0x57, 0xdf, 0xbc, 0xeb, 0x43, 0x1b, - 0x58, 0x80, 0x5e, 0x56, 0x60, 0xbc, 0xda, 0xde, 0x10, 0x55, 0x96, 0x5a, 0x9e, 0x13, 0x5f, 0x75, - 0x0f, 0xb2, 0x3c, 0xa4, 0xc7, 0x6d, 0x3f, 0xff, 0x99, 0x37, 0x67, 0xcf, 0x0c, 0x6d, 0x04, 0x4b, - 0x41, 0xcc, 0x86, 0xee, 0x67, 0xa2, 0xcf, 0x32, 0x2b, 0x2a, 0xb4, 0x62, 0xd7, 0x48, 0x8d, 0x5a, - 0x31, 0x71, 0x07, 0x2b, 0x42, 0x7a, 0xdc, 0x8a, 0x22, 0x8d, 0xfa, 0xbb, 0xb7, 0x24, 0xc4, 0x87, - 0x36, 0x61, 0x94, 0x7b, 0x98, 0x7d, 0x6e, 0x95, 0x3e, 0x66, 0x18, 0x76, 0x36, 0x47, 0x13, 0x34, - 0x33, 0x17, 0x00, 0x3a, 0x31, 0x86, 0x54, 0x88, 0x5f, 0x25, 0x6d, 0xf1, 0x59, 0x1d, 0xfd, 0x17, - 0x4d, 0x77, 0x3e, 0x1b, 0x55, 0x16, 0x12, 0xe2, 0x5b, 0xd0, 0x62, 0xec, 0x82, 0x32, 0xf3, 0x34, - 0xa8, 0xbd, 0xb1, 0x72, 0x2c, 0xbc, 0x06, 0xa8, 0x7f, 0xc7, 0xc2, 0x0c, 0x49, 0xce, 0xf0, 0x70, - 0x98, 0x21, 0x73, 0x46, 0xed, 0xf8, 0xfc, 0x59, 0xd3, 0xf2, 0x1c, 0xbb, 0x8f, 0xb3, 0xd7, 0xff, - 0x3f, 0x1d, 0xe7, 0x7c, 0x01, 0x46, 0xb9, 0x90, 0xae, 0x65, 0x8d, 0x95, 0x0f, 0x56, 0xe5, 0x34, - 0x3e, 0x28, 0xaf, 0xbf, 0x71, 0xab, 0x30, 0xf2, 0xfd, 0x5b, 0x85, 0x91, 0x7f, 0xba, 0x55, 0x18, - 0xf9, 0xe1, 0xad, 0x82, 0xf2, 0xf6, 0xad, 0x82, 0xf2, 0xee, 0xad, 0x82, 0xf2, 0x93, 0x5b, 0x05, - 0xe5, 0xc6, 0x61, 0x41, 0xf9, 0xda, 0x61, 0x41, 0xf9, 0xc6, 0x61, 0x41, 0xf9, 0xce, 0x61, 0x41, - 0xf9, 0xee, 0x61, 0x41, 0x79, 0xe3, 0xb0, 0x30, 0xf2, 0xfd, 0xc3, 0xc2, 0xc8, 0x0f, 0x0f, 0x0b, - 0xca, 0xdb, 0x87, 0x85, 0x91, 0x77, 0x0f, 0x0b, 0xca, 0x4f, 0x0e, 0x0b, 0x23, 0x37, 0xfe, 0xa5, - 0xa0, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x34, 0x50, 0xc7, 0x08, 0x39, 0x35, 0x00, 0x00, + // 4127 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0x79, 0x49, 0xcb, 0x10, 0x1d, 0x83, 0x14, 0xfd, + 0x23, 0xda, 0x4e, 0x28, 0x8f, 0xfe, 0x2c, 0x43, 0x89, 0x3d, 0x00, 0x09, 0x31, 0x50, 0x09, 0x02, + 0x59, 0x92, 0x91, 0xe4, 0x76, 0x66, 0x67, 0xb9, 0xb8, 0x04, 0x57, 0x5a, 0xec, 0x22, 0xbb, 0x0b, + 0xc9, 0xf0, 0x93, 0x1a, 0xb7, 0xcd, 0xa4, 0x9d, 0xfe, 0x77, 0xa6, 0x89, 0xeb, 0xb8, 0x6d, 0x66, + 0x5a, 0xa7, 0x49, 0x7f, 0x92, 0xb6, 0x49, 0x33, 0x9d, 0x3e, 0xe4, 0x25, 0xad, 0x9f, 0x3a, 0xc9, + 0x5b, 0x1f, 0x3a, 0xb2, 0xc5, 0x78, 0xa6, 0x4e, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xe4, 0x97, + 0xce, 0xfd, 0x5b, 0x2c, 0x7e, 0xc8, 0x05, 0x95, 0x71, 0xf2, 0x44, 0xec, 0xb9, 0xe7, 0xfb, 0xf6, + 0xdc, 0x73, 0xcf, 0x3d, 0xe7, 0xec, 0xdd, 0x25, 0xfc, 0xe0, 0x1c, 0x2c, 0x34, 0x6c, 0xbb, 0x61, + 0xe2, 0x53, 0x2d, 0xc7, 0xf6, 0xec, 0x9d, 0xf6, 0xee, 0xa9, 0x3a, 0x76, 0x75, 0xc7, 0x68, 0x79, + 0xb6, 0xb3, 0x4c, 0x65, 0x68, 0x8a, 0x69, 0x2c, 0x0b, 0x8d, 0xc5, 0x0a, 0x4c, 0x5f, 0x32, 0x4c, + 0xbc, 0xea, 0x2b, 0x6e, 0x62, 0x0f, 0x5d, 0x80, 0xd8, 0xae, 0x61, 0xe2, 0xac, 0xb4, 0x10, 0x5d, + 0x4a, 0x9d, 0x7e, 0x74, 0xb9, 0x0f, 0xb4, 0xdc, 0x8b, 0xa8, 0x11, 0xb1, 0x42, 0x11, 0x8b, 0x6f, + 0xc7, 0x60, 0x66, 0xc8, 0x28, 0x42, 0x10, 0xb3, 0xb4, 0x26, 0x61, 0x94, 0x96, 0x92, 0x0a, 0xfd, + 0x8d, 0xb2, 0x30, 0xd1, 0xd2, 0xf4, 0x1b, 0x5a, 0x03, 0x67, 0x23, 0x54, 0x2c, 0x2e, 0x51, 0x0e, + 0xa0, 0x8e, 0x5b, 0xd8, 0xaa, 0x63, 0x4b, 0xef, 0x64, 0xa3, 0x0b, 0xd1, 0xa5, 0xa4, 0x12, 0x90, + 0xa0, 0xa7, 0x60, 0xba, 0xd5, 0xde, 0x31, 0x0d, 0x5d, 0x0d, 0xa8, 0xc1, 0x42, 0x74, 0x29, 0xae, + 0xc8, 0x6c, 0x60, 0xb5, 0xab, 0x7c, 0x12, 0xa6, 0x6e, 0x61, 0xed, 0x46, 0x50, 0x35, 0x45, 0x55, + 0x33, 0x44, 0x1c, 0x50, 0x5c, 0x81, 0x74, 0x13, 0xbb, 0xae, 0xd6, 0xc0, 0xaa, 0xd7, 0x69, 0xe1, + 0x6c, 0x8c, 0xce, 0x7e, 0x61, 0x60, 0xf6, 0xfd, 0x33, 0x4f, 0x71, 0xd4, 0x56, 0xa7, 0x85, 0x51, + 0x01, 0x92, 0xd8, 0x6a, 0x37, 0x19, 0x43, 0xfc, 0x00, 0xff, 0x95, 0xac, 0x76, 0xb3, 0x9f, 0x25, + 0x41, 0x60, 0x9c, 0x62, 0xc2, 0xc5, 0xce, 0x4d, 0x43, 0xc7, 0xd9, 0x71, 0x4a, 0x70, 0x72, 0x80, + 0x60, 0x93, 0x8d, 0xf7, 0x73, 0x08, 0x1c, 0x5a, 0x81, 0x24, 0x7e, 0xd1, 0xc3, 0x96, 0x6b, 0xd8, + 0x56, 0x76, 0x82, 0x92, 0x3c, 0x36, 0x64, 0x15, 0xb1, 0x59, 0xef, 0xa7, 0xe8, 0xe2, 0xd0, 0x79, + 0x98, 0xb0, 0x5b, 0x9e, 0x61, 0x5b, 0x6e, 0x36, 0xb1, 0x20, 0x2d, 0xa5, 0x4e, 0x7f, 0x64, 0x68, + 0x20, 0x54, 0x99, 0x8e, 0x22, 0x94, 0x51, 0x19, 0x64, 0xd7, 0x6e, 0x3b, 0x3a, 0x56, 0x75, 0xbb, + 0x8e, 0x55, 0xc3, 0xda, 0xb5, 0xb3, 0x49, 0x4a, 0x30, 0x3f, 0x38, 0x11, 0xaa, 0xb8, 0x62, 0xd7, + 0x71, 0xd9, 0xda, 0xb5, 0x95, 0x8c, 0xdb, 0x73, 0x8d, 0x8e, 0xc1, 0xb8, 0xdb, 0xb1, 0x3c, 0xed, + 0xc5, 0x6c, 0x9a, 0x46, 0x08, 0xbf, 0x5a, 0xfc, 0xbf, 0x38, 0x4c, 0x8d, 0x12, 0x62, 0x17, 0x21, + 0xbe, 0x4b, 0x66, 0x99, 0x8d, 0x1c, 0xc5, 0x07, 0x0c, 0xd3, 0xeb, 0xc4, 0xf1, 0xfb, 0x74, 0x62, + 0x01, 0x52, 0x16, 0x76, 0x3d, 0x5c, 0x67, 0x11, 0x11, 0x1d, 0x31, 0xa6, 0x80, 0x81, 0x06, 0x43, + 0x2a, 0x76, 0x5f, 0x21, 0x75, 0x15, 0xa6, 0x7c, 0x93, 0x54, 0x47, 0xb3, 0x1a, 0x22, 0x36, 0x4f, + 0x85, 0x59, 0xb2, 0x5c, 0x12, 0x38, 0x85, 0xc0, 0x94, 0x0c, 0xee, 0xb9, 0x46, 0xab, 0x00, 0xb6, + 0x85, 0xed, 0x5d, 0xb5, 0x8e, 0x75, 0x33, 0x9b, 0x38, 0xc0, 0x4b, 0x55, 0xa2, 0x32, 0xe0, 0x25, + 0x9b, 0x49, 0x75, 0x13, 0x3d, 0xdb, 0x0d, 0xb5, 0x89, 0x03, 0x22, 0xa5, 0xc2, 0x36, 0xd9, 0x40, + 0xb4, 0x6d, 0x43, 0xc6, 0xc1, 0x24, 0xee, 0x71, 0x9d, 0xcf, 0x2c, 0x49, 0x8d, 0x58, 0x0e, 0x9d, + 0x99, 0xc2, 0x61, 0x6c, 0x62, 0x93, 0x4e, 0xf0, 0x12, 0x3d, 0x02, 0xbe, 0x40, 0xa5, 0x61, 0x05, + 0x34, 0x0b, 0xa5, 0x85, 0x70, 0x43, 0x6b, 0xe2, 0xb9, 0x0b, 0x90, 0xe9, 0x75, 0x0f, 0x9a, 0x85, + 0xb8, 0xeb, 0x69, 0x8e, 0x47, 0xa3, 0x30, 0xae, 0xb0, 0x0b, 0x24, 0x43, 0x14, 0x5b, 0x75, 0x9a, + 0xe5, 0xe2, 0x0a, 0xf9, 0x39, 0xf7, 0x0c, 0x4c, 0xf6, 0xdc, 0x7e, 0x54, 0xe0, 0xe2, 0x17, 0xc6, + 0x61, 0x76, 0x58, 0xcc, 0x0d, 0x0d, 0xff, 0x63, 0x30, 0x6e, 0xb5, 0x9b, 0x3b, 0xd8, 0xc9, 0x46, + 0x29, 0x03, 0xbf, 0x42, 0x05, 0x88, 0x9b, 0xda, 0x0e, 0x36, 0xb3, 0xb1, 0x05, 0x69, 0x29, 0x73, + 0xfa, 0xa9, 0x91, 0xa2, 0x7a, 0x79, 0x9d, 0x40, 0x14, 0x86, 0x44, 0xcf, 0x41, 0x8c, 0xa7, 0x38, + 0xc2, 0xf0, 0xe4, 0x68, 0x0c, 0x24, 0x16, 0x15, 0x8a, 0x43, 0x0f, 0x41, 0x92, 0xfc, 0x65, 0xbe, + 0x1d, 0xa7, 0x36, 0x27, 0x88, 0x80, 0xf8, 0x15, 0xcd, 0x41, 0x82, 0x86, 0x59, 0x1d, 0x8b, 0xd2, + 0xe0, 0x5f, 0x93, 0x85, 0xa9, 0xe3, 0x5d, 0xad, 0x6d, 0x7a, 0xea, 0x4d, 0xcd, 0x6c, 0x63, 0x1a, + 0x30, 0x49, 0x25, 0xcd, 0x85, 0x9f, 0x26, 0x32, 0x34, 0x0f, 0x29, 0x16, 0x95, 0x86, 0x55, 0xc7, + 0x2f, 0xd2, 0xec, 0x13, 0x57, 0x58, 0xa0, 0x96, 0x89, 0x84, 0xdc, 0xfe, 0xba, 0x6b, 0x5b, 0x62, + 0x69, 0xe9, 0x2d, 0x88, 0x80, 0xde, 0xfe, 0x99, 0xfe, 0xc4, 0xf7, 0xf0, 0xf0, 0xe9, 0xf5, 0xc7, + 0xe2, 0xe2, 0xb7, 0x22, 0x10, 0xa3, 0xfb, 0x6d, 0x0a, 0x52, 0x5b, 0xd7, 0x6a, 0x25, 0x75, 0xb5, + 0xba, 0x5d, 0x5c, 0x2f, 0xc9, 0x12, 0xca, 0x00, 0x50, 0xc1, 0xa5, 0xf5, 0x6a, 0x61, 0x4b, 0x8e, + 0xf8, 0xd7, 0xe5, 0x8d, 0xad, 0xf3, 0x67, 0xe5, 0xa8, 0x0f, 0xd8, 0x66, 0x82, 0x58, 0x50, 0xe1, + 0xcc, 0x69, 0x39, 0x8e, 0x64, 0x48, 0x33, 0x82, 0xf2, 0xd5, 0xd2, 0xea, 0xf9, 0xb3, 0xf2, 0x78, + 0xaf, 0xe4, 0xcc, 0x69, 0x79, 0x02, 0x4d, 0x42, 0x92, 0x4a, 0x8a, 0xd5, 0xea, 0xba, 0x9c, 0xf0, + 0x39, 0x37, 0xb7, 0x94, 0xf2, 0xc6, 0x9a, 0x9c, 0xf4, 0x39, 0xd7, 0x94, 0xea, 0x76, 0x4d, 0x06, + 0x9f, 0xa1, 0x52, 0xda, 0xdc, 0x2c, 0xac, 0x95, 0xe4, 0x94, 0xaf, 0x51, 0xbc, 0xb6, 0x55, 0xda, + 0x94, 0xd3, 0x3d, 0x66, 0x9d, 0x39, 0x2d, 0x4f, 0xfa, 0xb7, 0x28, 0x6d, 0x6c, 0x57, 0xe4, 0x0c, + 0x9a, 0x86, 0x49, 0x76, 0x0b, 0x61, 0xc4, 0x54, 0x9f, 0xe8, 0xfc, 0x59, 0x59, 0xee, 0x1a, 0xc2, + 0x58, 0xa6, 0x7b, 0x04, 0xe7, 0xcf, 0xca, 0x68, 0x71, 0x05, 0xe2, 0x34, 0xba, 0x10, 0x82, 0xcc, + 0x7a, 0xa1, 0x58, 0x5a, 0x57, 0xab, 0xb5, 0xad, 0x72, 0x75, 0xa3, 0xb0, 0x2e, 0x4b, 0x5d, 0x99, + 0x52, 0xfa, 0xd4, 0x76, 0x59, 0x29, 0xad, 0xca, 0x91, 0xa0, 0xac, 0x56, 0x2a, 0x6c, 0x95, 0x56, + 0xe5, 0xe8, 0xa2, 0x0e, 0xb3, 0xc3, 0xf2, 0xcc, 0xd0, 0x9d, 0x11, 0x58, 0xe2, 0xc8, 0x01, 0x4b, + 0x4c, 0xb9, 0x06, 0x96, 0xf8, 0xcb, 0x12, 0xcc, 0x0c, 0xc9, 0xb5, 0x43, 0x6f, 0xf2, 0x3c, 0xc4, + 0x59, 0x88, 0xb2, 0xea, 0xf3, 0xc4, 0xd0, 0xa4, 0x4d, 0x03, 0x76, 0xa0, 0x02, 0x51, 0x5c, 0xb0, + 0x02, 0x47, 0x0f, 0xa8, 0xc0, 0x84, 0x62, 0xc0, 0xc8, 0x97, 0x25, 0xc8, 0x1e, 0xc4, 0x1d, 0x92, + 0x28, 0x22, 0x3d, 0x89, 0xe2, 0x62, 0xbf, 0x01, 0x27, 0x0e, 0x9e, 0xc3, 0x80, 0x15, 0xaf, 0x4b, + 0x70, 0x6c, 0x78, 0xa3, 0x32, 0xd4, 0x86, 0xe7, 0x60, 0xbc, 0x89, 0xbd, 0x3d, 0x5b, 0x14, 0xeb, + 0xc7, 0x87, 0x94, 0x00, 0x32, 0xdc, 0xef, 0x2b, 0x8e, 0x0a, 0xd6, 0x90, 0xe8, 0x41, 0xdd, 0x06, + 0xb3, 0x66, 0xc0, 0xd2, 0xcf, 0x47, 0xe0, 0x81, 0xa1, 0xe4, 0x43, 0x0d, 0x7d, 0x18, 0xc0, 0xb0, + 0x5a, 0x6d, 0x8f, 0x15, 0x64, 0x96, 0x9f, 0x92, 0x54, 0x42, 0xf7, 0x3e, 0xc9, 0x3d, 0x6d, 0xcf, + 0x1f, 0x8f, 0xd2, 0x71, 0x60, 0x22, 0xaa, 0x70, 0xa1, 0x6b, 0x68, 0x8c, 0x1a, 0x9a, 0x3b, 0x60, + 0xa6, 0x03, 0xb5, 0xee, 0x69, 0x90, 0x75, 0xd3, 0xc0, 0x96, 0xa7, 0xba, 0x9e, 0x83, 0xb5, 0xa6, + 0x61, 0x35, 0x68, 0x02, 0x4e, 0xe4, 0xe3, 0xbb, 0x9a, 0xe9, 0x62, 0x65, 0x8a, 0x0d, 0x6f, 0x8a, + 0x51, 0x82, 0xa0, 0x55, 0xc6, 0x09, 0x20, 0xc6, 0x7b, 0x10, 0x6c, 0xd8, 0x47, 0x2c, 0x7e, 0x6d, + 0x02, 0x52, 0x81, 0xb6, 0x0e, 0x9d, 0x80, 0xf4, 0x75, 0xed, 0xa6, 0xa6, 0x8a, 0x56, 0x9d, 0x79, + 0x22, 0x45, 0x64, 0x35, 0xde, 0xae, 0x3f, 0x0d, 0xb3, 0x54, 0xc5, 0x6e, 0x7b, 0xd8, 0x51, 0x75, + 0x53, 0x73, 0x5d, 0xea, 0xb4, 0x04, 0x55, 0x45, 0x64, 0xac, 0x4a, 0x86, 0x56, 0xc4, 0x08, 0x3a, + 0x07, 0x33, 0x14, 0xd1, 0x6c, 0x9b, 0x9e, 0xd1, 0x32, 0xb1, 0x4a, 0x1e, 0x1e, 0x5c, 0x9a, 0x88, + 0x7d, 0xcb, 0xa6, 0x89, 0x46, 0x85, 0x2b, 0x10, 0x8b, 0x5c, 0xb4, 0x0a, 0x0f, 0x53, 0x58, 0x03, + 0x5b, 0xd8, 0xd1, 0x3c, 0xac, 0xe2, 0xcf, 0xb4, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xae, 0xee, 0x69, + 0xee, 0x5e, 0x76, 0x96, 0x10, 0x14, 0x23, 0x59, 0x49, 0x39, 0x4e, 0x14, 0xd7, 0xb8, 0x5e, 0x89, + 0xaa, 0x15, 0xac, 0xfa, 0x27, 0x35, 0x77, 0x0f, 0xe5, 0xe1, 0x18, 0x65, 0x71, 0x3d, 0xc7, 0xb0, + 0x1a, 0xaa, 0xbe, 0x87, 0xf5, 0x1b, 0x6a, 0xdb, 0xdb, 0xbd, 0x90, 0x7d, 0x28, 0x78, 0x7f, 0x6a, + 0xe1, 0x26, 0xd5, 0x59, 0x21, 0x2a, 0xdb, 0xde, 0xee, 0x05, 0xb4, 0x09, 0x69, 0xb2, 0x18, 0x4d, + 0xe3, 0x25, 0xac, 0xee, 0xda, 0x0e, 0xad, 0x2c, 0x99, 0x21, 0x3b, 0x3b, 0xe0, 0xc1, 0xe5, 0x2a, + 0x07, 0x54, 0xec, 0x3a, 0xce, 0xc7, 0x37, 0x6b, 0xa5, 0xd2, 0xaa, 0x92, 0x12, 0x2c, 0x97, 0x6c, + 0x87, 0x04, 0x54, 0xc3, 0xf6, 0x1d, 0x9c, 0x62, 0x01, 0xd5, 0xb0, 0x85, 0x7b, 0xcf, 0xc1, 0x8c, + 0xae, 0xb3, 0x39, 0x1b, 0xba, 0xca, 0x5b, 0x7c, 0x37, 0x2b, 0xf7, 0x38, 0x4b, 0xd7, 0xd7, 0x98, + 0x02, 0x8f, 0x71, 0x17, 0x3d, 0x0b, 0x0f, 0x74, 0x9d, 0x15, 0x04, 0x4e, 0x0f, 0xcc, 0xb2, 0x1f, + 0x7a, 0x0e, 0x66, 0x5a, 0x9d, 0x41, 0x20, 0xea, 0xb9, 0x63, 0xab, 0xd3, 0x0f, 0x7b, 0x8c, 0x3e, + 0xb6, 0x39, 0x58, 0xd7, 0x3c, 0x5c, 0xcf, 0x3e, 0x18, 0xd4, 0x0e, 0x0c, 0xa0, 0x53, 0x20, 0xeb, + 0xba, 0x8a, 0x2d, 0x6d, 0xc7, 0xc4, 0xaa, 0xe6, 0x60, 0x4b, 0x73, 0xb3, 0xf3, 0x41, 0xe5, 0x8c, + 0xae, 0x97, 0xe8, 0x68, 0x81, 0x0e, 0xa2, 0x27, 0x61, 0xda, 0xde, 0xb9, 0xae, 0xb3, 0xc8, 0x52, + 0x5b, 0x0e, 0xde, 0x35, 0x5e, 0xcc, 0x3e, 0x4a, 0xdd, 0x34, 0x45, 0x06, 0x68, 0x5c, 0xd5, 0xa8, + 0x18, 0x3d, 0x01, 0xb2, 0xee, 0xee, 0x69, 0x4e, 0x8b, 0x96, 0x76, 0xb7, 0xa5, 0xe9, 0x38, 0xfb, + 0x18, 0x53, 0x65, 0xf2, 0x0d, 0x21, 0x26, 0x91, 0xed, 0xde, 0x32, 0x76, 0x3d, 0xc1, 0x78, 0x92, + 0x45, 0x36, 0x95, 0x71, 0xb6, 0xab, 0x30, 0xdb, 0xb6, 0x0c, 0xcb, 0xc3, 0x4e, 0xcb, 0xc1, 0xa4, + 0x89, 0x67, 0x3b, 0x31, 0xfb, 0x6f, 0x13, 0x07, 0xb4, 0xe1, 0xdb, 0x41, 0x6d, 0x16, 0x00, 0xca, + 0x4c, 0x7b, 0x50, 0xb8, 0x98, 0x87, 0x74, 0x30, 0x2e, 0x50, 0x12, 0x58, 0x64, 0xc8, 0x12, 0xa9, + 0xb1, 0x2b, 0xd5, 0x55, 0x52, 0x1d, 0x5f, 0x28, 0xc9, 0x11, 0x52, 0xa5, 0xd7, 0xcb, 0x5b, 0x25, + 0x55, 0xd9, 0xde, 0xd8, 0x2a, 0x57, 0x4a, 0x72, 0xf4, 0xc9, 0x64, 0xe2, 0x9d, 0x09, 0xf9, 0xf6, + 0xed, 0xdb, 0xb7, 0x23, 0x8b, 0xdf, 0x8d, 0x40, 0xa6, 0xb7, 0x33, 0x46, 0x1f, 0x87, 0x07, 0xc5, + 0x63, 0xac, 0x8b, 0x3d, 0xf5, 0x96, 0xe1, 0xd0, 0x50, 0x6d, 0x6a, 0xac, 0xb7, 0xf4, 0xbd, 0x3c, + 0xcb, 0xb5, 0x36, 0xb1, 0x77, 0xc5, 0x70, 0x48, 0x20, 0x36, 0x35, 0x0f, 0xad, 0xc3, 0xbc, 0x65, + 0xab, 0xae, 0xa7, 0x59, 0x75, 0xcd, 0xa9, 0xab, 0xdd, 0x03, 0x04, 0x55, 0xd3, 0x75, 0xec, 0xba, + 0x36, 0x2b, 0x11, 0x3e, 0xcb, 0x47, 0x2c, 0x7b, 0x93, 0x2b, 0x77, 0x73, 0x67, 0x81, 0xab, 0xf6, + 0x45, 0x44, 0xf4, 0xa0, 0x88, 0x78, 0x08, 0x92, 0x4d, 0xad, 0xa5, 0x62, 0xcb, 0x73, 0x3a, 0xb4, + 0x9f, 0x4b, 0x28, 0x89, 0xa6, 0xd6, 0x2a, 0x91, 0xeb, 0x0f, 0x6f, 0x0d, 0x82, 0x7e, 0xfc, 0xd7, + 0x28, 0xa4, 0x83, 0x3d, 0x1d, 0x69, 0x91, 0x75, 0x9a, 0xbf, 0x25, 0xba, 0xc3, 0x1f, 0x39, 0xb4, + 0x03, 0x5c, 0x5e, 0x21, 0x89, 0x3d, 0x3f, 0xce, 0x3a, 0x2d, 0x85, 0x21, 0x49, 0x51, 0x25, 0x7b, + 0x1a, 0xb3, 0xfe, 0x3d, 0xa1, 0xf0, 0x2b, 0xb4, 0x06, 0xe3, 0xd7, 0x5d, 0xca, 0x3d, 0x4e, 0xb9, + 0x1f, 0x3d, 0x9c, 0xfb, 0xf2, 0x26, 0x25, 0x4f, 0x5e, 0xde, 0x54, 0x37, 0xaa, 0x4a, 0xa5, 0xb0, + 0xae, 0x70, 0x38, 0x3a, 0x0e, 0x31, 0x53, 0x7b, 0xa9, 0xd3, 0x5b, 0x02, 0xa8, 0x68, 0x54, 0xc7, + 0x1f, 0x87, 0xd8, 0x2d, 0xac, 0xdd, 0xe8, 0x4d, 0xbc, 0x54, 0xf4, 0x21, 0x86, 0xfe, 0x29, 0x88, + 0x53, 0x7f, 0x21, 0x00, 0xee, 0x31, 0x79, 0x0c, 0x25, 0x20, 0xb6, 0x52, 0x55, 0x48, 0xf8, 0xcb, + 0x90, 0x66, 0x52, 0xb5, 0x56, 0x2e, 0xad, 0x94, 0xe4, 0xc8, 0xe2, 0x39, 0x18, 0x67, 0x4e, 0x20, + 0x5b, 0xc3, 0x77, 0x83, 0x3c, 0xc6, 0x2f, 0x39, 0x87, 0x24, 0x46, 0xb7, 0x2b, 0xc5, 0x92, 0x22, + 0x47, 0x82, 0xcb, 0xeb, 0x42, 0x3a, 0xd8, 0xce, 0xfd, 0x74, 0x62, 0xea, 0xef, 0x25, 0x48, 0x05, + 0xda, 0x33, 0xd2, 0x18, 0x68, 0xa6, 0x69, 0xdf, 0x52, 0x35, 0xd3, 0xd0, 0x5c, 0x1e, 0x14, 0x40, + 0x45, 0x05, 0x22, 0x19, 0x75, 0xd1, 0x7e, 0x2a, 0xc6, 0xbf, 0x26, 0x81, 0xdc, 0xdf, 0xda, 0xf5, + 0x19, 0x28, 0xfd, 0x4c, 0x0d, 0x7c, 0x55, 0x82, 0x4c, 0x6f, 0x3f, 0xd7, 0x67, 0xde, 0x89, 0x9f, + 0xa9, 0x79, 0x6f, 0x45, 0x60, 0xb2, 0xa7, 0x8b, 0x1b, 0xd5, 0xba, 0xcf, 0xc0, 0xb4, 0x51, 0xc7, + 0xcd, 0x96, 0xed, 0x61, 0x4b, 0xef, 0xa8, 0x26, 0xbe, 0x89, 0xcd, 0xec, 0x22, 0x4d, 0x14, 0xa7, + 0x0e, 0xef, 0x13, 0x97, 0xcb, 0x5d, 0xdc, 0x3a, 0x81, 0xe5, 0x67, 0xca, 0xab, 0xa5, 0x4a, 0xad, + 0xba, 0x55, 0xda, 0x58, 0xb9, 0xa6, 0x6e, 0x6f, 0xfc, 0xdc, 0x46, 0xf5, 0xca, 0x86, 0x22, 0x1b, + 0x7d, 0x6a, 0x1f, 0xe2, 0x56, 0xaf, 0x81, 0xdc, 0x6f, 0x14, 0x7a, 0x10, 0x86, 0x99, 0x25, 0x8f, + 0xa1, 0x19, 0x98, 0xda, 0xa8, 0xaa, 0x9b, 0xe5, 0xd5, 0x92, 0x5a, 0xba, 0x74, 0xa9, 0xb4, 0xb2, + 0xb5, 0xc9, 0x1e, 0x9c, 0x7d, 0xed, 0xad, 0xde, 0x4d, 0xfd, 0x4a, 0x14, 0x66, 0x86, 0x58, 0x82, + 0x0a, 0xbc, 0x67, 0x67, 0x8f, 0x11, 0x1f, 0x1b, 0xc5, 0xfa, 0x65, 0xd2, 0x15, 0xd4, 0x34, 0xc7, + 0xe3, 0x2d, 0xfe, 0x13, 0x40, 0xbc, 0x64, 0x79, 0xc6, 0xae, 0x81, 0x1d, 0x7e, 0xce, 0xc0, 0x1a, + 0xf9, 0xa9, 0xae, 0x9c, 0x1d, 0x35, 0x7c, 0x14, 0x50, 0xcb, 0x76, 0x0d, 0xcf, 0xb8, 0x89, 0x55, + 0xc3, 0x12, 0x87, 0x12, 0xa4, 0xb1, 0x8f, 0x29, 0xb2, 0x18, 0x29, 0x5b, 0x9e, 0xaf, 0x6d, 0xe1, + 0x86, 0xd6, 0xa7, 0x4d, 0x12, 0x78, 0x54, 0x91, 0xc5, 0x88, 0xaf, 0x7d, 0x02, 0xd2, 0x75, 0xbb, + 0x4d, 0xda, 0x24, 0xa6, 0x47, 0xea, 0x85, 0xa4, 0xa4, 0x98, 0xcc, 0x57, 0xe1, 0x7d, 0x6c, 0xf7, + 0x34, 0x24, 0xad, 0xa4, 0x98, 0x8c, 0xa9, 0x9c, 0x84, 0x29, 0xad, 0xd1, 0x70, 0x08, 0xb9, 0x20, + 0x62, 0x9d, 0x79, 0xc6, 0x17, 0x53, 0xc5, 0xb9, 0xcb, 0x90, 0x10, 0x7e, 0x20, 0x25, 0x99, 0x78, + 0x42, 0x6d, 0xb1, 0x33, 0xa9, 0xc8, 0x52, 0x52, 0x49, 0x58, 0x62, 0xf0, 0x04, 0xa4, 0x0d, 0x57, + 0xed, 0x1e, 0x8e, 0x46, 0x16, 0x22, 0x4b, 0x09, 0x25, 0x65, 0xb8, 0xfe, 0x69, 0xd8, 0xe2, 0xeb, + 0x11, 0xc8, 0xf4, 0x1e, 0xee, 0xa2, 0x55, 0x48, 0x98, 0xb6, 0xae, 0xd1, 0xd0, 0x62, 0x6f, 0x16, + 0x96, 0x42, 0xce, 0x83, 0x97, 0xd7, 0xb9, 0xbe, 0xe2, 0x23, 0xe7, 0xfe, 0x59, 0x82, 0x84, 0x10, + 0xa3, 0x63, 0x10, 0x6b, 0x69, 0xde, 0x1e, 0xa5, 0x8b, 0x17, 0x23, 0xb2, 0xa4, 0xd0, 0x6b, 0x22, + 0x77, 0x5b, 0x9a, 0x45, 0x43, 0x80, 0xcb, 0xc9, 0x35, 0x59, 0x57, 0x13, 0x6b, 0x75, 0xda, 0xf6, + 0xdb, 0xcd, 0x26, 0xb6, 0x3c, 0x57, 0xac, 0x2b, 0x97, 0xaf, 0x70, 0x31, 0x7a, 0x0a, 0xa6, 0x3d, + 0x47, 0x33, 0xcc, 0x1e, 0xdd, 0x18, 0xd5, 0x95, 0xc5, 0x80, 0xaf, 0x9c, 0x87, 0xe3, 0x82, 0xb7, + 0x8e, 0x3d, 0x4d, 0xdf, 0xc3, 0xf5, 0x2e, 0x68, 0x9c, 0x9e, 0x1c, 0x3e, 0xc8, 0x15, 0x56, 0xf9, + 0xb8, 0xc0, 0x2e, 0x7e, 0x5f, 0x82, 0x69, 0xf1, 0xa0, 0x52, 0xf7, 0x9d, 0x55, 0x01, 0xd0, 0x2c, + 0xcb, 0xf6, 0x82, 0xee, 0x1a, 0x0c, 0xe5, 0x01, 0xdc, 0x72, 0xc1, 0x07, 0x29, 0x01, 0x82, 0xb9, + 0x26, 0x40, 0x77, 0xe4, 0x40, 0xb7, 0xcd, 0x43, 0x8a, 0x9f, 0xdc, 0xd3, 0xd7, 0x3f, 0xec, 0xd1, + 0x16, 0x98, 0x88, 0x3c, 0xd1, 0xa0, 0x59, 0x88, 0xef, 0xe0, 0x86, 0x61, 0xf1, 0xf3, 0x44, 0x76, + 0x21, 0x4e, 0x29, 0x63, 0xfe, 0x29, 0x65, 0xf1, 0x2a, 0xcc, 0xe8, 0x76, 0xb3, 0xdf, 0xdc, 0xa2, + 0xdc, 0xf7, 0x78, 0xed, 0x7e, 0x52, 0x7a, 0x01, 0xba, 0x2d, 0xe6, 0x97, 0x23, 0xd1, 0xb5, 0x5a, + 0xf1, 0xab, 0x91, 0xb9, 0x35, 0x86, 0xab, 0x89, 0x69, 0x2a, 0x78, 0xd7, 0xc4, 0x3a, 0x31, 0x1d, + 0x7e, 0xf4, 0x38, 0x7c, 0xac, 0x61, 0x78, 0x7b, 0xed, 0x9d, 0x65, 0xdd, 0x6e, 0x9e, 0x6a, 0xd8, + 0x0d, 0xbb, 0xfb, 0xba, 0x8b, 0x5c, 0xd1, 0x0b, 0xfa, 0x8b, 0xbf, 0xf2, 0x4a, 0xfa, 0xd2, 0xb9, + 0xd0, 0xf7, 0x63, 0xf9, 0x0d, 0x98, 0xe1, 0xca, 0x2a, 0x3d, 0x73, 0x67, 0x8f, 0x06, 0xe8, 0xd0, + 0x73, 0x97, 0xec, 0x37, 0xde, 0xa6, 0xb5, 0x5a, 0x99, 0xe6, 0x50, 0x32, 0xc6, 0x1e, 0x20, 0xf2, + 0x0a, 0x3c, 0xd0, 0xc3, 0xc7, 0xf6, 0x25, 0x76, 0x42, 0x18, 0xbf, 0xcb, 0x19, 0x67, 0x02, 0x8c, + 0x9b, 0x1c, 0x9a, 0x5f, 0x81, 0xc9, 0xa3, 0x70, 0xfd, 0x23, 0xe7, 0x4a, 0xe3, 0x20, 0xc9, 0x1a, + 0x4c, 0x51, 0x12, 0xbd, 0xed, 0x7a, 0x76, 0x93, 0x26, 0xbd, 0xc3, 0x69, 0xfe, 0xe9, 0x6d, 0xb6, + 0x51, 0x32, 0x04, 0xb6, 0xe2, 0xa3, 0xf2, 0x79, 0xa0, 0xaf, 0x19, 0xea, 0x58, 0x37, 0x43, 0x18, + 0xde, 0xe0, 0x86, 0xf8, 0xfa, 0xf9, 0x4f, 0xc3, 0x2c, 0xf9, 0x4d, 0x73, 0x52, 0xd0, 0x92, 0xf0, + 0x53, 0xa6, 0xec, 0xf7, 0x5f, 0x66, 0x7b, 0x71, 0xc6, 0x27, 0x08, 0xd8, 0x14, 0x58, 0xc5, 0x06, + 0xf6, 0x3c, 0xec, 0xb8, 0xaa, 0x66, 0x0e, 0x33, 0x2f, 0xf0, 0x98, 0x9e, 0xfd, 0xe2, 0xbb, 0xbd, + 0xab, 0xb8, 0xc6, 0x90, 0x05, 0xd3, 0xcc, 0x6f, 0xc3, 0x83, 0x43, 0xa2, 0x62, 0x04, 0xce, 0x57, + 0x38, 0xe7, 0xec, 0x40, 0x64, 0x10, 0xda, 0x1a, 0x08, 0xb9, 0xbf, 0x96, 0x23, 0x70, 0xfe, 0x01, + 0xe7, 0x44, 0x1c, 0x2b, 0x96, 0x94, 0x30, 0x5e, 0x86, 0xe9, 0x9b, 0xd8, 0xd9, 0xb1, 0x5d, 0x7e, + 0x34, 0x32, 0x02, 0xdd, 0xab, 0x9c, 0x6e, 0x8a, 0x03, 0xe9, 0x59, 0x09, 0xe1, 0x7a, 0x16, 0x12, + 0xbb, 0x9a, 0x8e, 0x47, 0xa0, 0xf8, 0x12, 0xa7, 0x98, 0x20, 0xfa, 0x04, 0x5a, 0x80, 0x74, 0xc3, + 0xe6, 0x65, 0x29, 0x1c, 0xfe, 0x1a, 0x87, 0xa7, 0x04, 0x86, 0x53, 0xb4, 0xec, 0x56, 0xdb, 0x24, + 0x35, 0x2b, 0x9c, 0xe2, 0x0f, 0x05, 0x85, 0xc0, 0x70, 0x8a, 0x23, 0xb8, 0xf5, 0x8f, 0x04, 0x85, + 0x1b, 0xf0, 0xe7, 0xf3, 0x90, 0xb2, 0x2d, 0xb3, 0x63, 0x5b, 0xa3, 0x18, 0xf1, 0xc7, 0x9c, 0x01, + 0x38, 0x84, 0x10, 0x5c, 0x84, 0xe4, 0xa8, 0x0b, 0xf1, 0x27, 0xef, 0x8a, 0xed, 0x21, 0x56, 0x60, + 0x0d, 0xa6, 0x44, 0x82, 0x32, 0x6c, 0x6b, 0x04, 0x8a, 0x3f, 0xe5, 0x14, 0x99, 0x00, 0x8c, 0x4f, + 0xc3, 0xc3, 0xae, 0xd7, 0xc0, 0xa3, 0x90, 0xbc, 0x2e, 0xa6, 0xc1, 0x21, 0xdc, 0x95, 0x3b, 0xd8, + 0xd2, 0xf7, 0x46, 0x63, 0xf8, 0x8a, 0x70, 0xa5, 0xc0, 0x10, 0x8a, 0x15, 0x98, 0x6c, 0x6a, 0x8e, + 0xbb, 0xa7, 0x99, 0x23, 0x2d, 0xc7, 0x9f, 0x71, 0x8e, 0xb4, 0x0f, 0xe2, 0x1e, 0x69, 0x5b, 0x47, + 0xa1, 0xf9, 0xaa, 0xf0, 0x48, 0x00, 0xc6, 0xb7, 0x9e, 0xeb, 0xd1, 0x03, 0xa8, 0xa3, 0xb0, 0x7d, + 0x4d, 0x6c, 0x3d, 0x86, 0xad, 0x04, 0x19, 0x2f, 0x42, 0xd2, 0x35, 0x5e, 0x1a, 0x89, 0xe6, 0xcf, + 0xc5, 0x4a, 0x53, 0x00, 0x01, 0x5f, 0x83, 0xe3, 0x43, 0xcb, 0xc4, 0x08, 0x64, 0x7f, 0xc1, 0xc9, + 0x8e, 0x0d, 0x29, 0x15, 0x3c, 0x25, 0x1c, 0x95, 0xf2, 0x2f, 0x45, 0x4a, 0xc0, 0x7d, 0x5c, 0x35, + 0xf2, 0xa0, 0xe0, 0x6a, 0xbb, 0x47, 0xf3, 0xda, 0x5f, 0x09, 0xaf, 0x31, 0x6c, 0x8f, 0xd7, 0xb6, + 0xe0, 0x18, 0x67, 0x3c, 0xda, 0xba, 0x7e, 0x5d, 0x24, 0x56, 0x86, 0xde, 0xee, 0x5d, 0xdd, 0x9f, + 0x87, 0x39, 0xdf, 0x9d, 0xa2, 0x23, 0x75, 0xd5, 0xa6, 0xd6, 0x1a, 0x81, 0xf9, 0x1b, 0x9c, 0x59, + 0x64, 0x7c, 0xbf, 0xa5, 0x75, 0x2b, 0x5a, 0x8b, 0x90, 0x5f, 0x85, 0xac, 0x20, 0x6f, 0x5b, 0x0e, + 0xd6, 0xed, 0x86, 0x65, 0xbc, 0x84, 0xeb, 0x23, 0x50, 0xff, 0x75, 0xdf, 0x52, 0x6d, 0x07, 0xe0, + 0x84, 0xb9, 0x0c, 0xb2, 0xdf, 0xab, 0xa8, 0x46, 0xb3, 0x65, 0x3b, 0x5e, 0x08, 0xe3, 0xdf, 0x88, + 0x95, 0xf2, 0x71, 0x65, 0x0a, 0xcb, 0x97, 0x20, 0x43, 0x2f, 0x47, 0x0d, 0xc9, 0xbf, 0xe5, 0x44, + 0x93, 0x5d, 0x14, 0x4f, 0x1c, 0xba, 0xdd, 0x6c, 0x69, 0xce, 0x28, 0xf9, 0xef, 0x9b, 0x22, 0x71, + 0x70, 0x08, 0x4f, 0x1c, 0x5e, 0xa7, 0x85, 0x49, 0xb5, 0x1f, 0x81, 0xe1, 0x5b, 0x22, 0x71, 0x08, + 0x0c, 0xa7, 0x10, 0x0d, 0xc3, 0x08, 0x14, 0x7f, 0x27, 0x28, 0x04, 0x86, 0x50, 0x7c, 0xaa, 0x5b, + 0x68, 0x1d, 0xdc, 0x30, 0x5c, 0xcf, 0x61, 0x7d, 0xf0, 0xe1, 0x54, 0xdf, 0x7e, 0xb7, 0xb7, 0x09, + 0x53, 0x02, 0xd0, 0xfc, 0x65, 0x98, 0xea, 0x6b, 0x31, 0x50, 0xd8, 0x37, 0x0b, 0xd9, 0x5f, 0x7c, + 0x9f, 0x27, 0xa3, 0xde, 0x0e, 0x23, 0xbf, 0x4e, 0xd6, 0xbd, 0xb7, 0x0f, 0x08, 0x27, 0x7b, 0xf9, + 0x7d, 0x7f, 0xe9, 0x7b, 0xda, 0x80, 0xfc, 0x25, 0x98, 0xec, 0xe9, 0x01, 0xc2, 0xa9, 0x7e, 0x89, + 0x53, 0xa5, 0x83, 0x2d, 0x40, 0xfe, 0x1c, 0xc4, 0x48, 0x3d, 0x0f, 0x87, 0xff, 0x32, 0x87, 0x53, + 0xf5, 0xfc, 0x27, 0x20, 0x21, 0xea, 0x78, 0x38, 0xf4, 0x57, 0x38, 0xd4, 0x87, 0x10, 0xb8, 0xa8, + 0xe1, 0xe1, 0xf0, 0xcf, 0x09, 0xb8, 0x80, 0x10, 0xf8, 0xe8, 0x2e, 0xfc, 0xce, 0xaf, 0xc5, 0x78, + 0x1e, 0x16, 0xbe, 0xbb, 0x08, 0x13, 0xbc, 0x78, 0x87, 0xa3, 0x3f, 0xcf, 0x6f, 0x2e, 0x10, 0xf9, + 0x67, 0x20, 0x3e, 0xa2, 0xc3, 0x7f, 0x9d, 0x43, 0x99, 0x7e, 0x7e, 0x05, 0x52, 0x81, 0x82, 0x1d, + 0x0e, 0xff, 0x0d, 0x0e, 0x0f, 0xa2, 0x88, 0xe9, 0xbc, 0x60, 0x87, 0x13, 0xfc, 0xa6, 0x30, 0x9d, + 0x23, 0x88, 0xdb, 0x44, 0xad, 0x0e, 0x47, 0xff, 0x96, 0xf0, 0xba, 0x80, 0xe4, 0x9f, 0x87, 0xa4, + 0x9f, 0x7f, 0xc3, 0xf1, 0xbf, 0xcd, 0xf1, 0x5d, 0x0c, 0xf1, 0x40, 0x20, 0xff, 0x87, 0x53, 0xfc, + 0x8e, 0xf0, 0x40, 0x00, 0x45, 0xb6, 0x51, 0x7f, 0x4d, 0x0f, 0x67, 0xfa, 0x5d, 0xb1, 0x8d, 0xfa, + 0x4a, 0x3a, 0x59, 0x4d, 0x9a, 0x06, 0xc3, 0x29, 0x7e, 0x4f, 0xac, 0x26, 0xd5, 0x27, 0x66, 0xf4, + 0x17, 0xc9, 0x70, 0x8e, 0xdf, 0x17, 0x66, 0xf4, 0xd5, 0xc8, 0x7c, 0x0d, 0xd0, 0x60, 0x81, 0x0c, + 0xe7, 0xfb, 0x02, 0xe7, 0x9b, 0x1e, 0xa8, 0x8f, 0xf9, 0x2b, 0x70, 0x6c, 0x78, 0x71, 0x0c, 0x67, + 0xfd, 0xe2, 0xfb, 0x7d, 0x8f, 0x33, 0xc1, 0xda, 0x98, 0xdf, 0xea, 0x66, 0xd9, 0x60, 0x61, 0x0c, + 0xa7, 0x7d, 0xe5, 0xfd, 0xde, 0x44, 0x1b, 0xac, 0x8b, 0xf9, 0x02, 0x40, 0xb7, 0x26, 0x85, 0x73, + 0xbd, 0xca, 0xb9, 0x02, 0x20, 0xb2, 0x35, 0x78, 0x49, 0x0a, 0xc7, 0x7f, 0x49, 0x6c, 0x0d, 0x8e, + 0x20, 0x5b, 0x43, 0x54, 0xa3, 0x70, 0xf4, 0x6b, 0x62, 0x6b, 0x08, 0x48, 0xfe, 0x22, 0x24, 0xac, + 0xb6, 0x69, 0x92, 0xd8, 0x42, 0x87, 0x7f, 0x46, 0x94, 0xfd, 0xe1, 0x07, 0x1c, 0x2c, 0x00, 0xf9, + 0x73, 0x10, 0xc7, 0xcd, 0x1d, 0x5c, 0x0f, 0x43, 0xfe, 0xfb, 0x07, 0x22, 0x9f, 0x10, 0xed, 0xfc, + 0xf3, 0x00, 0xec, 0x61, 0x9a, 0xbe, 0x25, 0x0a, 0xc1, 0xfe, 0xc7, 0x07, 0xfc, 0x0b, 0x85, 0x2e, + 0xa4, 0x4b, 0xc0, 0xbe, 0x77, 0x38, 0x9c, 0xe0, 0xdd, 0x5e, 0x02, 0xfa, 0x00, 0xfe, 0x2c, 0x4c, + 0x5c, 0x77, 0x6d, 0xcb, 0xd3, 0x1a, 0x61, 0xe8, 0xff, 0xe4, 0x68, 0xa1, 0x4f, 0x1c, 0xd6, 0xb4, + 0x1d, 0xec, 0x69, 0x0d, 0x37, 0x0c, 0xfb, 0x5f, 0x1c, 0xeb, 0x03, 0x08, 0x58, 0xd7, 0x5c, 0x6f, + 0x94, 0x79, 0xff, 0xb7, 0x00, 0x0b, 0x00, 0x31, 0x9a, 0xfc, 0xbe, 0x81, 0x3b, 0x61, 0xd8, 0xf7, + 0x84, 0xd1, 0x5c, 0x3f, 0xff, 0x09, 0x48, 0x92, 0x9f, 0xec, 0xab, 0x9d, 0x10, 0xf0, 0xff, 0x70, + 0x70, 0x17, 0x41, 0xee, 0xec, 0x7a, 0x75, 0xcf, 0x08, 0x77, 0xf6, 0xff, 0xf2, 0x95, 0x16, 0xfa, + 0xf9, 0x02, 0xa4, 0x5c, 0xaf, 0x5e, 0x6f, 0xf3, 0x8e, 0x26, 0x04, 0xfe, 0xa3, 0x0f, 0xfc, 0x87, + 0x5c, 0x1f, 0x53, 0x3c, 0x31, 0xfc, 0xb0, 0x0e, 0xd6, 0xec, 0x35, 0x9b, 0x1d, 0xd3, 0xc1, 0x3f, + 0x4c, 0xc1, 0x49, 0xdd, 0x6e, 0xee, 0xd8, 0xee, 0x29, 0x96, 0x50, 0x02, 0xc9, 0xe8, 0x94, 0x70, + 0x20, 0x3f, 0x6f, 0xf3, 0x1d, 0x3a, 0x77, 0xb4, 0x83, 0xba, 0xc5, 0x1f, 0x4e, 0x42, 0x62, 0x45, + 0x73, 0x3d, 0xed, 0x96, 0xd6, 0x41, 0x8f, 0x41, 0xa2, 0x6c, 0x79, 0x67, 0x4e, 0xd7, 0x3c, 0x87, + 0xbe, 0x68, 0x8a, 0x16, 0x93, 0xf7, 0xee, 0xcc, 0xc7, 0x0d, 0x22, 0x53, 0xfc, 0x21, 0xf4, 0x08, + 0xc4, 0xe9, 0x6f, 0x7a, 0x56, 0x19, 0x2d, 0x4e, 0xbe, 0x71, 0x67, 0x7e, 0xac, 0xab, 0xc7, 0xc6, + 0xd0, 0x35, 0x48, 0x55, 0x3a, 0xdb, 0x86, 0xe5, 0x9d, 0x3f, 0x4b, 0xe8, 0x88, 0x0b, 0x62, 0xc5, + 0x67, 0xee, 0xdd, 0x99, 0x3f, 0x73, 0xa0, 0x81, 0xa4, 0x30, 0x76, 0x27, 0x26, 0xd0, 0xf4, 0xfb, + 0xc5, 0x20, 0x17, 0xba, 0x02, 0x09, 0x71, 0xc9, 0xce, 0xfc, 0x8b, 0x17, 0xb9, 0x09, 0xf7, 0xc5, + 0xed, 0x93, 0xa1, 0x5f, 0x80, 0x74, 0xa5, 0x73, 0xc9, 0xb4, 0x35, 0xee, 0x83, 0xf8, 0x82, 0xb4, + 0x14, 0x29, 0x5e, 0xb8, 0x77, 0x67, 0xfe, 0xec, 0xc8, 0xc4, 0x1c, 0x4e, 0x99, 0x7b, 0xd8, 0xd0, + 0x0b, 0x90, 0xf4, 0xaf, 0xe9, 0x5b, 0x85, 0x48, 0xf1, 0xe3, 0xdc, 0xee, 0xfb, 0xa3, 0xef, 0xd2, + 0x05, 0x2c, 0x67, 0xee, 0x9e, 0x58, 0x90, 0x96, 0xa4, 0xfb, 0xb1, 0x9c, 0xfb, 0xa4, 0x87, 0x2d, + 0x60, 0xf9, 0xf9, 0xb3, 0xf4, 0x35, 0x86, 0x74, 0xbf, 0x96, 0x73, 0xfa, 0x2e, 0x1d, 0xba, 0x0c, + 0x13, 0x95, 0x4e, 0xb1, 0xe3, 0x61, 0x97, 0x7e, 0xd7, 0x93, 0x2e, 0x3e, 0x7d, 0xef, 0xce, 0xfc, + 0x47, 0x47, 0x64, 0xa5, 0x38, 0x45, 0x10, 0xa0, 0x05, 0x48, 0x6d, 0xd8, 0x4e, 0x53, 0x33, 0x19, + 0x1f, 0xb0, 0xd7, 0x32, 0x01, 0x11, 0xda, 0x26, 0x33, 0x61, 0xab, 0xed, 0xd2, 0xff, 0x48, 0xf8, + 0x09, 0x62, 0xb2, 0xcb, 0x84, 0x0c, 0x88, 0x57, 0x3a, 0x15, 0xad, 0x95, 0x4d, 0xd3, 0x77, 0x06, + 0x0f, 0x2f, 0xfb, 0x08, 0xb1, 0xb7, 0x96, 0xe9, 0x38, 0xfd, 0xb8, 0xa2, 0x78, 0xf6, 0xde, 0x9d, + 0xf9, 0xa7, 0x47, 0xbe, 0x63, 0x45, 0x6b, 0xd1, 0xdb, 0xb1, 0x3b, 0xa0, 0x6f, 0x4a, 0x64, 0x63, + 0xb1, 0x73, 0x57, 0x72, 0xc7, 0x49, 0x7a, 0xc7, 0x47, 0x86, 0xde, 0xd1, 0xd7, 0x62, 0xf7, 0xb5, + 0x3e, 0xfb, 0xe6, 0x11, 0x66, 0xca, 0x9e, 0x6d, 0xc8, 0xad, 0x7f, 0xf5, 0xcd, 0xfb, 0xde, 0xb4, + 0xbe, 0x05, 0xe8, 0x65, 0x09, 0x26, 0x2b, 0x9d, 0x0d, 0x5e, 0x65, 0x89, 0xe5, 0x19, 0xfe, 0xdd, + 0xfa, 0x30, 0xcb, 0x03, 0x7a, 0xcc, 0xf6, 0xf3, 0x9f, 0x7d, 0x73, 0xfe, 0xf4, 0xc8, 0x46, 0xd0, + 0x14, 0x44, 0x6d, 0xe8, 0xbd, 0x27, 0xfa, 0x1c, 0xb5, 0xa2, 0x44, 0x2a, 0x76, 0x1d, 0xd7, 0x89, + 0x15, 0x53, 0x87, 0x58, 0x11, 0xd0, 0x63, 0x56, 0xe4, 0x49, 0xd4, 0xdf, 0xbf, 0x25, 0x01, 0x3e, + 0x54, 0x85, 0x71, 0xe6, 0x61, 0xfa, 0x4d, 0x59, 0xf2, 0x88, 0x61, 0xd8, 0x5d, 0x1c, 0x85, 0xd3, + 0xcc, 0x5d, 0x00, 0xe8, 0xc6, 0x18, 0x92, 0x21, 0x7a, 0x03, 0x77, 0xf8, 0x87, 0x83, 0xe4, 0x27, + 0x9a, 0xed, 0x7e, 0x18, 0x2b, 0x2d, 0xc5, 0xf8, 0xd7, 0xae, 0xf9, 0xc8, 0x05, 0x69, 0xee, 0x39, + 0x90, 0xfb, 0x63, 0xe5, 0x48, 0x78, 0x05, 0xd0, 0xe0, 0x8a, 0x05, 0x19, 0xe2, 0x8c, 0xe1, 0xf1, + 0x20, 0x43, 0xea, 0xb4, 0xdc, 0xf5, 0xf9, 0x15, 0xc3, 0x74, 0x6d, 0x6b, 0x80, 0xb3, 0xdf, 0xff, + 0x3f, 0x19, 0xe7, 0x62, 0x0e, 0xc6, 0x99, 0x90, 0xcc, 0xa5, 0x4c, 0xcb, 0x07, 0xad, 0x72, 0x0a, + 0xbb, 0x28, 0xae, 0xbf, 0x71, 0x37, 0x37, 0xf6, 0xbd, 0xbb, 0xb9, 0xb1, 0x7f, 0xb9, 0x9b, 0x1b, + 0x7b, 0xeb, 0x6e, 0x4e, 0x7a, 0xe7, 0x6e, 0x4e, 0x7a, 0xef, 0x6e, 0x4e, 0xfa, 0xf1, 0xdd, 0x9c, + 0x74, 0x7b, 0x3f, 0x27, 0x7d, 0x65, 0x3f, 0x27, 0x7d, 0x7d, 0x3f, 0x27, 0x7d, 0x7b, 0x3f, 0x27, + 0x7d, 0x67, 0x3f, 0x27, 0xbd, 0xb1, 0x9f, 0x1b, 0xfb, 0xde, 0x7e, 0x6e, 0xec, 0xad, 0xfd, 0x9c, + 0xf4, 0xce, 0x7e, 0x6e, 0xec, 0xbd, 0xfd, 0x9c, 0xf4, 0xe3, 0xfd, 0xdc, 0xd8, 0xed, 0x1f, 0xe4, + 0xa4, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x34, 0x50, 0x96, 0x1b, 0x36, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/castvalue.pb.go index 59afcc8f1..94a3b3e5b 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/castvalue.pb.go @@ -72,237 +72,244 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3672 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xcb, 0x5c, 0x39, 0xe6, 0x6a, 0x15, - 0x3b, 0x96, 0xed, 0x44, 0x1b, 0xac, 0x77, 0xd7, 0xeb, 0xd9, 0x26, 0x06, 0x45, 0xd1, 0x8a, 0x16, - 0xfa, 0xcb, 0x48, 0x8a, 0xed, 0xe4, 0x61, 0x70, 0x35, 0xbc, 0xa4, 0x66, 0x77, 0x38, 0xc3, 0xce, - 0x0c, 0x77, 0x2d, 0x3f, 0x6d, 0xe0, 0xb4, 0x45, 0x1a, 0xf4, 0xbf, 0x40, 0x13, 0xc7, 0x71, 0xd3, - 0x00, 0xad, 0xd3, 0xf4, 0x2f, 0xe9, 0x4f, 0x1a, 0xf4, 0x29, 0x7d, 0x48, 0xeb, 0xa7, 0x22, 0x79, - 0xeb, 0x43, 0xd1, 0x66, 0x55, 0x03, 0x75, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x0d, 0x60, 0x14, 0x28, - 0xee, 0xdf, 0x70, 0x86, 0xa4, 0x34, 0x54, 0x8a, 0xc4, 0x7d, 0x12, 0xef, 0xb9, 0xe7, 0xfb, 0xe6, - 0xdc, 0x73, 0xcf, 0x3d, 0xe7, 0xcc, 0x1d, 0xc1, 0xa7, 0x2f, 0xc3, 0x42, 0xcb, 0x75, 0x5b, 0x36, - 0xb9, 0xd8, 0xf1, 0xdc, 0xc0, 0x3d, 0xe8, 0x36, 0x2f, 0x36, 0x88, 0x6f, 0x7a, 0x56, 0x27, 0x70, - 0xbd, 0x65, 0x26, 0x43, 0x53, 0x5c, 0x63, 0x59, 0x6a, 0x2c, 0x6e, 0xc2, 0xf4, 0x33, 0x96, 0x4d, - 0x56, 0x43, 0xc5, 0x5d, 0x12, 0xa0, 0x6b, 0x90, 0x69, 0x5a, 0x36, 0x29, 0x2b, 0x0b, 0xe9, 0xa5, - 0xc2, 0xa5, 0x87, 0x96, 0xfb, 0x40, 0xcb, 0x71, 0xc4, 0x0e, 0x15, 0xeb, 0x0c, 0xb1, 0xf8, 0x46, - 0x06, 0x66, 0x86, 0xcc, 0x22, 0x04, 0x19, 0x07, 0xb7, 0x29, 0xa3, 0xb2, 0x94, 0xd7, 0xd9, 0x6f, - 0x54, 0x86, 0x89, 0x0e, 0x36, 0x6f, 0xe1, 0x16, 0x29, 0xa7, 0x98, 0x58, 0x0e, 0x51, 0x05, 0xa0, - 0x41, 0x3a, 0xc4, 0x69, 0x10, 0xc7, 0x3c, 0x2a, 0xa7, 0x17, 0xd2, 0x4b, 0x79, 0x3d, 0x22, 0x41, - 0x8f, 0xc3, 0x74, 0xa7, 0x7b, 0x60, 0x5b, 0xa6, 0x11, 0x51, 0x83, 0x85, 0xf4, 0x52, 0x56, 0x57, - 0xf9, 0xc4, 0x6a, 0x4f, 0xf9, 0x11, 0x98, 0xba, 0x43, 0xf0, 0xad, 0xa8, 0x6a, 0x81, 0xa9, 0x96, - 0xa8, 0x38, 0xa2, 0x58, 0x83, 0x62, 0x9b, 0xf8, 0x3e, 0x6e, 0x11, 0x23, 0x38, 0xea, 0x90, 0x72, - 0x86, 0xad, 0x7e, 0x61, 0x60, 0xf5, 0xfd, 0x2b, 0x2f, 0x08, 0xd4, 0xde, 0x51, 0x87, 0xa0, 0x2a, - 0xe4, 0x89, 0xd3, 0x6d, 0x73, 0x86, 0xec, 0x09, 0xfe, 0xab, 0x3b, 0xdd, 0x76, 0x3f, 0x4b, 0x8e, - 0xc2, 0x04, 0xc5, 0x84, 0x4f, 0xbc, 0xdb, 0x96, 0x49, 0xca, 0xe3, 0x8c, 0xe0, 0x91, 0x01, 0x82, - 0x5d, 0x3e, 0xdf, 0xcf, 0x21, 0x71, 0xa8, 0x06, 0x79, 0xf2, 0x42, 0x40, 0x1c, 0xdf, 0x72, 0x9d, - 0xf2, 0x04, 0x23, 0x79, 0x78, 0xc8, 0x2e, 0x12, 0xbb, 0xd1, 0x4f, 0xd1, 0xc3, 0xa1, 0xab, 0x30, - 0xe1, 0x76, 0x02, 0xcb, 0x75, 0xfc, 0x72, 0x6e, 0x41, 0x59, 0x2a, 0x5c, 0x7a, 0xdf, 0xd0, 0x40, - 0xd8, 0xe6, 0x3a, 0xba, 0x54, 0x46, 0xeb, 0xa0, 0xfa, 0x6e, 0xd7, 0x33, 0x89, 0x61, 0xba, 0x0d, - 0x62, 0x58, 0x4e, 0xd3, 0x2d, 0xe7, 0x19, 0xc1, 0xf9, 0xc1, 0x85, 0x30, 0xc5, 0x9a, 0xdb, 0x20, - 0xeb, 0x4e, 0xd3, 0xd5, 0x4b, 0x7e, 0x6c, 0x8c, 0xe6, 0x60, 0xdc, 0x3f, 0x72, 0x02, 0xfc, 0x42, - 0xb9, 0xc8, 0x22, 0x44, 0x8c, 0x16, 0xff, 0x3b, 0x0b, 0x53, 0xa3, 0x84, 0xd8, 0x75, 0xc8, 0x36, - 0xe9, 0x2a, 0xcb, 0xa9, 0xb3, 0xf8, 0x80, 0x63, 0xe2, 0x4e, 0x1c, 0xff, 0x11, 0x9d, 0x58, 0x85, - 0x82, 0x43, 0xfc, 0x80, 0x34, 0x78, 0x44, 0xa4, 0x47, 0x8c, 0x29, 0xe0, 0xa0, 0xc1, 0x90, 0xca, - 0xfc, 0x48, 0x21, 0xf5, 0x1c, 0x4c, 0x85, 0x26, 0x19, 0x1e, 0x76, 0x5a, 0x32, 0x36, 0x2f, 0x26, - 0x59, 0xb2, 0x5c, 0x97, 0x38, 0x9d, 0xc2, 0xf4, 0x12, 0x89, 0x8d, 0xd1, 0x2a, 0x80, 0xeb, 0x10, - 0xb7, 0x69, 0x34, 0x88, 0x69, 0x97, 0x73, 0x27, 0x78, 0x69, 0x9b, 0xaa, 0x0c, 0x78, 0xc9, 0xe5, - 0x52, 0xd3, 0x46, 0x4f, 0xf5, 0x42, 0x6d, 0xe2, 0x84, 0x48, 0xd9, 0xe4, 0x87, 0x6c, 0x20, 0xda, - 0xf6, 0xa1, 0xe4, 0x11, 0x1a, 0xf7, 0xa4, 0x21, 0x56, 0x96, 0x67, 0x46, 0x2c, 0x27, 0xae, 0x4c, - 0x17, 0x30, 0xbe, 0xb0, 0x49, 0x2f, 0x3a, 0x44, 0xef, 0x87, 0x50, 0x60, 0xb0, 0xb0, 0x02, 0x96, - 0x85, 0x8a, 0x52, 0xb8, 0x85, 0xdb, 0x64, 0xfe, 0x1a, 0x94, 0xe2, 0xee, 0x41, 0xb3, 0x90, 0xf5, - 0x03, 0xec, 0x05, 0x2c, 0x0a, 0xb3, 0x3a, 0x1f, 0x20, 0x15, 0xd2, 0xc4, 0x69, 0xb0, 0x2c, 0x97, - 0xd5, 0xe9, 0xcf, 0xf9, 0x27, 0x61, 0x32, 0xf6, 0xf8, 0x51, 0x81, 0x8b, 0x9f, 0x1f, 0x87, 0xd9, - 0x61, 0x31, 0x37, 0x34, 0xfc, 0xe7, 0x60, 0xdc, 0xe9, 0xb6, 0x0f, 0x88, 0x57, 0x4e, 0x33, 0x06, - 0x31, 0x42, 0x55, 0xc8, 0xda, 0xf8, 0x80, 0xd8, 0xe5, 0xcc, 0x82, 0xb2, 0x54, 0xba, 0xf4, 0xf8, - 0x48, 0x51, 0xbd, 0xbc, 0x41, 0x21, 0x3a, 0x47, 0xa2, 0x8f, 0x42, 0x46, 0xa4, 0x38, 0xca, 0xf0, - 0xd8, 0x68, 0x0c, 0x34, 0x16, 0x75, 0x86, 0x43, 0x0f, 0x40, 0x9e, 0xfe, 0xe5, 0xbe, 0x1d, 0x67, - 0x36, 0xe7, 0xa8, 0x80, 0xfa, 0x15, 0xcd, 0x43, 0x8e, 0x85, 0x59, 0x83, 0xc8, 0xd2, 0x10, 0x8e, - 0xe9, 0xc6, 0x34, 0x48, 0x13, 0x77, 0xed, 0xc0, 0xb8, 0x8d, 0xed, 0x2e, 0x61, 0x01, 0x93, 0xd7, - 0x8b, 0x42, 0xf8, 0x09, 0x2a, 0x43, 0xe7, 0xa1, 0xc0, 0xa3, 0xd2, 0x72, 0x1a, 0xe4, 0x05, 0x96, - 0x7d, 0xb2, 0x3a, 0x0f, 0xd4, 0x75, 0x2a, 0xa1, 0x8f, 0xbf, 0xe9, 0xbb, 0x8e, 0xdc, 0x5a, 0xf6, - 0x08, 0x2a, 0x60, 0x8f, 0x7f, 0xb2, 0x3f, 0xf1, 0x3d, 0x38, 0x7c, 0x79, 0xfd, 0xb1, 0xb8, 0xf8, - 0xcd, 0x14, 0x64, 0xd8, 0x79, 0x9b, 0x82, 0xc2, 0xde, 0xf3, 0x3b, 0x75, 0x63, 0x75, 0x7b, 0x7f, - 0x65, 0xa3, 0xae, 0x2a, 0xa8, 0x04, 0xc0, 0x04, 0xcf, 0x6c, 0x6c, 0x57, 0xf7, 0xd4, 0x54, 0x38, - 0x5e, 0xdf, 0xda, 0xbb, 0x7a, 0x59, 0x4d, 0x87, 0x80, 0x7d, 0x2e, 0xc8, 0x44, 0x15, 0x9e, 0xb8, - 0xa4, 0x66, 0x91, 0x0a, 0x45, 0x4e, 0xb0, 0xfe, 0x5c, 0x7d, 0xf5, 0xea, 0x65, 0x75, 0x3c, 0x2e, - 0x79, 0xe2, 0x92, 0x3a, 0x81, 0x26, 0x21, 0xcf, 0x24, 0x2b, 0xdb, 0xdb, 0x1b, 0x6a, 0x2e, 0xe4, - 0xdc, 0xdd, 0xd3, 0xd7, 0xb7, 0xd6, 0xd4, 0x7c, 0xc8, 0xb9, 0xa6, 0x6f, 0xef, 0xef, 0xa8, 0x10, - 0x32, 0x6c, 0xd6, 0x77, 0x77, 0xab, 0x6b, 0x75, 0xb5, 0x10, 0x6a, 0xac, 0x3c, 0xbf, 0x57, 0xdf, - 0x55, 0x8b, 0x31, 0xb3, 0x9e, 0xb8, 0xa4, 0x4e, 0x86, 0x8f, 0xa8, 0x6f, 0xed, 0x6f, 0xaa, 0x25, - 0x34, 0x0d, 0x93, 0xfc, 0x11, 0xd2, 0x88, 0xa9, 0x3e, 0xd1, 0xd5, 0xcb, 0xaa, 0xda, 0x33, 0x84, - 0xb3, 0x4c, 0xc7, 0x04, 0x57, 0x2f, 0xab, 0x68, 0xb1, 0x06, 0x59, 0x16, 0x5d, 0x08, 0x41, 0x69, - 0xa3, 0xba, 0x52, 0xdf, 0x30, 0xb6, 0x77, 0xf6, 0xd6, 0xb7, 0xb7, 0xaa, 0x1b, 0xaa, 0xd2, 0x93, - 0xe9, 0xf5, 0x8f, 0xef, 0xaf, 0xeb, 0xf5, 0x55, 0x35, 0x15, 0x95, 0xed, 0xd4, 0xab, 0x7b, 0xf5, - 0x55, 0x35, 0xbd, 0x68, 0xc2, 0xec, 0xb0, 0x3c, 0x33, 0xf4, 0x64, 0x44, 0xb6, 0x38, 0x75, 0xc2, - 0x16, 0x33, 0xae, 0x81, 0x2d, 0xfe, 0x8a, 0x02, 0x33, 0x43, 0x72, 0xed, 0xd0, 0x87, 0x3c, 0x0d, - 0x59, 0x1e, 0xa2, 0xbc, 0xfa, 0x3c, 0x3a, 0x34, 0x69, 0xb3, 0x80, 0x1d, 0xa8, 0x40, 0x0c, 0x17, - 0xad, 0xc0, 0xe9, 0x13, 0x2a, 0x30, 0xa5, 0x18, 0x30, 0xf2, 0x25, 0x05, 0xca, 0x27, 0x71, 0x27, - 0x24, 0x8a, 0x54, 0x2c, 0x51, 0x5c, 0xef, 0x37, 0xe0, 0xc2, 0xc9, 0x6b, 0x18, 0xb0, 0xe2, 0x35, - 0x05, 0xe6, 0x86, 0x37, 0x2a, 0x43, 0x6d, 0xf8, 0x28, 0x8c, 0xb7, 0x49, 0x70, 0xe8, 0xca, 0x62, - 0xfd, 0x81, 0x21, 0x25, 0x80, 0x4e, 0xf7, 0xfb, 0x4a, 0xa0, 0xa2, 0x35, 0x24, 0x7d, 0x52, 0xb7, - 0xc1, 0xad, 0x19, 0xb0, 0xf4, 0xb3, 0x29, 0xb8, 0x6f, 0x28, 0xf9, 0x50, 0x43, 0x1f, 0x04, 0xb0, - 0x9c, 0x4e, 0x37, 0xe0, 0x05, 0x99, 0xe7, 0xa7, 0x3c, 0x93, 0xb0, 0xb3, 0x4f, 0x73, 0x4f, 0x37, - 0x08, 0xe7, 0xd3, 0x6c, 0x1e, 0xb8, 0x88, 0x29, 0x5c, 0xeb, 0x19, 0x9a, 0x61, 0x86, 0x56, 0x4e, - 0x58, 0xe9, 0x40, 0xad, 0xfb, 0x30, 0xa8, 0xa6, 0x6d, 0x11, 0x27, 0x30, 0xfc, 0xc0, 0x23, 0xb8, - 0x6d, 0x39, 0x2d, 0x96, 0x80, 0x73, 0x5a, 0xb6, 0x89, 0x6d, 0x9f, 0xe8, 0x53, 0x7c, 0x7a, 0x57, - 0xce, 0x52, 0x04, 0xab, 0x32, 0x5e, 0x04, 0x31, 0x1e, 0x43, 0xf0, 0xe9, 0x10, 0xb1, 0xf8, 0xb9, - 0x09, 0x28, 0x44, 0xda, 0x3a, 0x74, 0x01, 0x8a, 0x37, 0xf1, 0x6d, 0x6c, 0xc8, 0x56, 0x9d, 0x7b, - 0xa2, 0x40, 0x65, 0x3b, 0xa2, 0x5d, 0xff, 0x30, 0xcc, 0x32, 0x15, 0xb7, 0x1b, 0x10, 0xcf, 0x30, - 0x6d, 0xec, 0xfb, 0xcc, 0x69, 0x39, 0xa6, 0x8a, 0xe8, 0xdc, 0x36, 0x9d, 0xaa, 0xc9, 0x19, 0x74, - 0x05, 0x66, 0x18, 0xa2, 0xdd, 0xb5, 0x03, 0xab, 0x63, 0x13, 0x83, 0xbe, 0x3c, 0xf8, 0x2c, 0x11, - 0x87, 0x96, 0x4d, 0x53, 0x8d, 0x4d, 0xa1, 0x40, 0x2d, 0xf2, 0xd1, 0x1a, 0x3c, 0xc8, 0x60, 0x2d, - 0xe2, 0x10, 0x0f, 0x07, 0xc4, 0x20, 0x3f, 0xdd, 0xc5, 0xb6, 0x6f, 0x60, 0xa7, 0x61, 0x1c, 0x62, - 0xff, 0xb0, 0x3c, 0x1b, 0x25, 0x38, 0x47, 0x75, 0xd7, 0x84, 0x6a, 0x9d, 0x69, 0x56, 0x9d, 0xc6, - 0xc7, 0xb0, 0x7f, 0x88, 0x34, 0x98, 0x63, 0x44, 0x7e, 0xe0, 0x59, 0x4e, 0xcb, 0x30, 0x0f, 0x89, - 0x79, 0xcb, 0xe8, 0x06, 0xcd, 0x6b, 0xe5, 0x07, 0xa2, 0x0c, 0xcc, 0xc8, 0x5d, 0xa6, 0x53, 0xa3, - 0x2a, 0xfb, 0x41, 0xf3, 0x1a, 0xda, 0x85, 0x22, 0xdd, 0x8f, 0xb6, 0xf5, 0x22, 0x31, 0x9a, 0xae, - 0xc7, 0x8a, 0x4b, 0x69, 0xc8, 0xe1, 0x8e, 0x38, 0x71, 0x79, 0x5b, 0x00, 0x36, 0xdd, 0x06, 0xd1, - 0xb2, 0xbb, 0x3b, 0xf5, 0xfa, 0xaa, 0x5e, 0x90, 0x2c, 0xcf, 0xb8, 0x1e, 0x8d, 0xa9, 0x96, 0x1b, - 0xfa, 0xb8, 0xc0, 0x63, 0xaa, 0xe5, 0x4a, 0x0f, 0x5f, 0x81, 0x19, 0xd3, 0xe4, 0xcb, 0xb6, 0x4c, - 0x43, 0x74, 0xf9, 0x7e, 0x59, 0x8d, 0xf9, 0xcb, 0x34, 0xd7, 0xb8, 0x82, 0x08, 0x73, 0x1f, 0x3d, - 0x05, 0xf7, 0xf5, 0xfc, 0x15, 0x05, 0x4e, 0x0f, 0xac, 0xb2, 0x1f, 0x7a, 0x05, 0x66, 0x3a, 0x47, - 0x83, 0x40, 0x14, 0x7b, 0x62, 0xe7, 0xa8, 0x1f, 0xf6, 0x30, 0x7b, 0x73, 0xf3, 0x88, 0x89, 0x03, - 0xd2, 0x28, 0xdf, 0x1f, 0xd5, 0x8e, 0x4c, 0xa0, 0x8b, 0xa0, 0x9a, 0xa6, 0x41, 0x1c, 0x7c, 0x60, - 0x13, 0x03, 0x7b, 0xc4, 0xc1, 0x7e, 0xf9, 0x7c, 0x54, 0xb9, 0x64, 0x9a, 0x75, 0x36, 0x5b, 0x65, - 0x93, 0xe8, 0x31, 0x98, 0x76, 0x0f, 0x6e, 0x9a, 0x3c, 0xb8, 0x8c, 0x8e, 0x47, 0x9a, 0xd6, 0x0b, - 0xe5, 0x87, 0x98, 0x9b, 0xa6, 0xe8, 0x04, 0x0b, 0xad, 0x1d, 0x26, 0x46, 0x8f, 0x82, 0x6a, 0xfa, - 0x87, 0xd8, 0xeb, 0xb0, 0xea, 0xee, 0x77, 0xb0, 0x49, 0xca, 0x0f, 0x73, 0x55, 0x2e, 0xdf, 0x92, - 0x62, 0xf4, 0x1c, 0xcc, 0x76, 0x1d, 0xcb, 0x09, 0x88, 0xd7, 0xf1, 0x08, 0x6d, 0xd2, 0xf9, 0x49, - 0x2b, 0xff, 0xd3, 0xc4, 0x09, 0x6d, 0xf6, 0x7e, 0x54, 0x9b, 0xef, 0xae, 0x3e, 0xd3, 0x1d, 0x14, - 0x2e, 0x6a, 0x50, 0x8c, 0x6e, 0x3a, 0xca, 0x03, 0xdf, 0x76, 0x55, 0xa1, 0x35, 0xb4, 0xb6, 0xbd, - 0x4a, 0xab, 0xdf, 0x27, 0xeb, 0x6a, 0x8a, 0x56, 0xe1, 0x8d, 0xf5, 0xbd, 0xba, 0xa1, 0xef, 0x6f, - 0xed, 0xad, 0x6f, 0xd6, 0xd5, 0xf4, 0x63, 0xf9, 0xdc, 0x9b, 0x13, 0xea, 0xdd, 0xbb, 0x77, 0xef, - 0xa6, 0x16, 0xbf, 0x93, 0x82, 0x52, 0xbc, 0xf3, 0x45, 0x3f, 0x05, 0xf7, 0xcb, 0xd7, 0x54, 0x9f, - 0x04, 0xc6, 0x1d, 0xcb, 0x63, 0x71, 0xd8, 0xc6, 0xbc, 0x77, 0x0c, 0x5d, 0x38, 0x2b, 0xb4, 0x76, - 0x49, 0xf0, 0xac, 0xe5, 0xd1, 0x28, 0x6b, 0xe3, 0x00, 0x6d, 0xc0, 0x79, 0xc7, 0x35, 0xfc, 0x00, - 0x3b, 0x0d, 0xec, 0x35, 0x8c, 0xde, 0x05, 0x81, 0x81, 0x4d, 0x93, 0xf8, 0xbe, 0xcb, 0x4b, 0x40, - 0xc8, 0xf2, 0x3e, 0xc7, 0xdd, 0x15, 0xca, 0xbd, 0xdc, 0x58, 0x15, 0xaa, 0x7d, 0xdb, 0x9d, 0x3e, - 0x69, 0xbb, 0x1f, 0x80, 0x7c, 0x1b, 0x77, 0x0c, 0xe2, 0x04, 0xde, 0x11, 0xeb, 0xd7, 0x72, 0x7a, - 0xae, 0x8d, 0x3b, 0x75, 0x3a, 0xfe, 0xf1, 0xed, 0x41, 0xd4, 0x8f, 0x7f, 0x97, 0x86, 0x62, 0xb4, - 0x67, 0xa3, 0x2d, 0xb0, 0xc9, 0xf2, 0xb3, 0xc2, 0x8e, 0xef, 0xfb, 0x4f, 0xed, 0xf0, 0x96, 0x6b, - 0x34, 0x71, 0x6b, 0xe3, 0xbc, 0x93, 0xd2, 0x39, 0x92, 0x16, 0x4d, 0x7a, 0x60, 0x09, 0xef, 0xcf, - 0x73, 0xba, 0x18, 0xa1, 0x35, 0x18, 0xbf, 0xe9, 0x33, 0xee, 0x71, 0xc6, 0xfd, 0xd0, 0xe9, 0xdc, - 0x37, 0x76, 0x19, 0x79, 0xfe, 0xc6, 0xae, 0xb1, 0xb5, 0xad, 0x6f, 0x56, 0x37, 0x74, 0x01, 0x47, - 0xe7, 0x20, 0x63, 0xe3, 0x17, 0x8f, 0xe2, 0x29, 0x9e, 0x89, 0x46, 0x75, 0xfc, 0x39, 0xc8, 0xdc, - 0x21, 0xf8, 0x56, 0x3c, 0xb1, 0x32, 0xd1, 0x8f, 0x31, 0xf4, 0x2f, 0x42, 0x96, 0xf9, 0x0b, 0x01, - 0x08, 0x8f, 0xa9, 0x63, 0x28, 0x07, 0x99, 0xda, 0xb6, 0x4e, 0xc3, 0x5f, 0x85, 0x22, 0x97, 0x1a, - 0x3b, 0xeb, 0xf5, 0x5a, 0x5d, 0x4d, 0x2d, 0x5e, 0x81, 0x71, 0xee, 0x04, 0x7a, 0x34, 0x42, 0x37, - 0xa8, 0x63, 0x62, 0x28, 0x38, 0x14, 0x39, 0xbb, 0xbf, 0xb9, 0x52, 0xd7, 0xd5, 0x54, 0x74, 0x7b, - 0x7d, 0x28, 0x46, 0xdb, 0xb5, 0x9f, 0x4c, 0x4c, 0xfd, 0x85, 0x02, 0x85, 0x48, 0xfb, 0x45, 0x0b, - 0x3f, 0xb6, 0x6d, 0xf7, 0x8e, 0x81, 0x6d, 0x0b, 0xfb, 0x22, 0x28, 0x80, 0x89, 0xaa, 0x54, 0x32, - 0xea, 0xa6, 0xfd, 0x44, 0x8c, 0x7f, 0x55, 0x01, 0xb5, 0xbf, 0x75, 0xeb, 0x33, 0x50, 0x79, 0x4f, - 0x0d, 0x7c, 0x45, 0x81, 0x52, 0xbc, 0x5f, 0xeb, 0x33, 0xef, 0xc2, 0x7b, 0x6a, 0xde, 0x17, 0x15, - 0x98, 0x8c, 0x75, 0x69, 0xff, 0xaf, 0xac, 0x7b, 0x39, 0x0d, 0x33, 0x43, 0x70, 0xa8, 0x2a, 0xda, - 0x59, 0xde, 0x61, 0x7f, 0x68, 0x94, 0x67, 0x2d, 0xd3, 0x6a, 0xb9, 0x83, 0xbd, 0x40, 0x74, 0xbf, - 0x8f, 0x82, 0x6a, 0x35, 0x88, 0x13, 0x58, 0x4d, 0x8b, 0x78, 0xe2, 0x15, 0x9c, 0xf7, 0xb8, 0x53, - 0x3d, 0x39, 0x7f, 0x0b, 0xff, 0x20, 0xa0, 0x8e, 0xeb, 0x5b, 0x81, 0x75, 0x9b, 0x18, 0x96, 0x23, - 0xdf, 0xd7, 0x69, 0xcf, 0x9b, 0xd1, 0x55, 0x39, 0xb3, 0xee, 0x04, 0xa1, 0xb6, 0x43, 0x5a, 0xb8, - 0x4f, 0x9b, 0xe6, 0xbe, 0xb4, 0xae, 0xca, 0x99, 0x50, 0xfb, 0x02, 0x14, 0x1b, 0x6e, 0x97, 0xb6, - 0x0f, 0x5c, 0x8f, 0xa6, 0x5a, 0x45, 0x2f, 0x70, 0x59, 0xa8, 0x22, 0xfa, 0xbb, 0xde, 0x45, 0x41, - 0x51, 0x2f, 0x70, 0x19, 0x57, 0x79, 0x04, 0xa6, 0x70, 0xab, 0xe5, 0x51, 0x72, 0x49, 0xc4, 0x9b, - 0xd6, 0x52, 0x28, 0x66, 0x8a, 0xf3, 0x37, 0x20, 0x27, 0xfd, 0x40, 0xab, 0x19, 0xf5, 0x84, 0xd1, - 0xe1, 0xd7, 0x35, 0xa9, 0xa5, 0xbc, 0x9e, 0x73, 0xe4, 0xe4, 0x05, 0x28, 0x5a, 0xbe, 0xd1, 0xbb, - 0x37, 0x4c, 0x2d, 0xa4, 0x96, 0x72, 0x7a, 0xc1, 0xf2, 0xc3, 0x8b, 0xa2, 0xc5, 0xd7, 0x52, 0x50, - 0x8a, 0xdf, 0x7b, 0xa2, 0x55, 0xc8, 0xd9, 0xae, 0x89, 0x59, 0x20, 0xf0, 0x4b, 0xf7, 0xa5, 0x84, - 0xab, 0xd2, 0xe5, 0x0d, 0xa1, 0xaf, 0x87, 0xc8, 0xf9, 0xbf, 0x51, 0x20, 0x27, 0xc5, 0x68, 0x0e, - 0x32, 0x1d, 0x1c, 0x1c, 0x32, 0xba, 0xec, 0x4a, 0x4a, 0x55, 0x74, 0x36, 0xa6, 0x72, 0xbf, 0x83, - 0x1d, 0x16, 0x02, 0x42, 0x4e, 0xc7, 0x74, 0x5f, 0x6d, 0x82, 0x1b, 0xac, 0x1d, 0x76, 0xdb, 0x6d, - 0xe2, 0x04, 0xbe, 0xdc, 0x57, 0x21, 0xaf, 0x09, 0x31, 0x7a, 0x1c, 0xa6, 0x03, 0x0f, 0x5b, 0x76, - 0x4c, 0x37, 0xc3, 0x74, 0x55, 0x39, 0x11, 0x2a, 0x6b, 0x70, 0x4e, 0xf2, 0x36, 0x48, 0x80, 0xcd, - 0x43, 0xd2, 0xe8, 0x81, 0xc6, 0xd9, 0xa5, 0xda, 0xfd, 0x42, 0x61, 0x55, 0xcc, 0x4b, 0xec, 0xe2, - 0xf7, 0x14, 0x98, 0x96, 0x0d, 0x7c, 0x23, 0x74, 0xd6, 0x26, 0x00, 0x76, 0x1c, 0x37, 0x88, 0xba, - 0x6b, 0x30, 0x94, 0x07, 0x70, 0xcb, 0xd5, 0x10, 0xa4, 0x47, 0x08, 0xe6, 0xdb, 0x00, 0xbd, 0x99, - 0x13, 0xdd, 0x76, 0x1e, 0x0a, 0xe2, 0x52, 0x9b, 0x7d, 0x19, 0xe1, 0x6f, 0x7d, 0xc0, 0x45, 0xb4, - 0xd3, 0x47, 0xb3, 0x90, 0x3d, 0x20, 0x2d, 0xcb, 0x11, 0x57, 0x6d, 0x7c, 0x20, 0x2f, 0xf0, 0x32, - 0xe1, 0x05, 0xde, 0xca, 0xa7, 0x60, 0xc6, 0x74, 0xdb, 0xfd, 0xe6, 0xae, 0xa8, 0x7d, 0x6f, 0x9e, - 0xfe, 0xc7, 0x94, 0x4f, 0x42, 0xaf, 0x3b, 0xfb, 0xb2, 0xa2, 0x7c, 0x25, 0x95, 0x5e, 0xdb, 0x59, - 0xf9, 0x5a, 0x6a, 0x7e, 0x8d, 0x43, 0x77, 0xe4, 0x4a, 0x75, 0xd2, 0xb4, 0x89, 0x49, 0xad, 0x87, - 0x1f, 0x7c, 0x00, 0x3e, 0xd4, 0xb2, 0x82, 0xc3, 0xee, 0xc1, 0xb2, 0xe9, 0xb6, 0x2f, 0xb6, 0xdc, - 0x96, 0xdb, 0xfb, 0x18, 0x44, 0x47, 0x6c, 0xc0, 0x7e, 0x89, 0x0f, 0x42, 0xf9, 0x50, 0x3a, 0x9f, - 0xf8, 0xf5, 0x48, 0xdb, 0x82, 0x19, 0xa1, 0x6c, 0xb0, 0x1b, 0x69, 0xde, 0x87, 0xa3, 0x53, 0x6f, - 0x25, 0xca, 0xdf, 0x78, 0x83, 0x55, 0x3a, 0x7d, 0x5a, 0x40, 0xe9, 0x1c, 0xef, 0xd4, 0x35, 0x1d, - 0xee, 0x8b, 0xf1, 0xf1, 0xa3, 0x49, 0xbc, 0x04, 0xc6, 0xef, 0x08, 0xc6, 0x99, 0x08, 0xe3, 0xae, - 0x80, 0x6a, 0x35, 0x98, 0x3c, 0x0b, 0xd7, 0x5f, 0x09, 0xae, 0x22, 0x89, 0x92, 0xac, 0xc1, 0x14, - 0x23, 0x31, 0xbb, 0x7e, 0xe0, 0xb6, 0x59, 0xde, 0x3b, 0x9d, 0xe6, 0xaf, 0xdf, 0xe0, 0x67, 0xa5, - 0x44, 0x61, 0xb5, 0x10, 0xa5, 0x69, 0xc0, 0x2e, 0xe1, 0x1b, 0xc4, 0xb4, 0x13, 0x18, 0x5e, 0x17, - 0x86, 0x84, 0xfa, 0xda, 0x27, 0x60, 0x96, 0xfe, 0x66, 0x69, 0x29, 0x6a, 0x49, 0xf2, 0x1d, 0x4c, - 0xf9, 0x7b, 0x2f, 0xf1, 0xe3, 0x38, 0x13, 0x12, 0x44, 0x6c, 0x8a, 0xec, 0x62, 0x8b, 0x04, 0x01, - 0xf1, 0x7c, 0x03, 0xdb, 0xc3, 0xcc, 0x8b, 0xbc, 0xc1, 0x96, 0xbf, 0xf0, 0x56, 0x7c, 0x17, 0xd7, - 0x38, 0xb2, 0x6a, 0xdb, 0xda, 0x3e, 0xdc, 0x3f, 0x24, 0x2a, 0x46, 0xe0, 0x7c, 0x59, 0x70, 0xce, - 0x0e, 0x44, 0x06, 0xa5, 0xdd, 0x01, 0x29, 0x0f, 0xf7, 0x72, 0x04, 0xce, 0x2f, 0x0a, 0x4e, 0x24, - 0xb0, 0x72, 0x4b, 0x29, 0xe3, 0x0d, 0x98, 0xbe, 0x4d, 0xbc, 0x03, 0xd7, 0x17, 0x17, 0x07, 0x23, - 0xd0, 0xbd, 0x22, 0xe8, 0xa6, 0x04, 0x90, 0x5d, 0x23, 0x50, 0xae, 0xa7, 0x20, 0xd7, 0xc4, 0x26, - 0x19, 0x81, 0xe2, 0x4b, 0x82, 0x62, 0x82, 0xea, 0x53, 0x68, 0x15, 0x8a, 0x2d, 0x57, 0x54, 0xa6, - 0x64, 0xf8, 0xab, 0x02, 0x5e, 0x90, 0x18, 0x41, 0xd1, 0x71, 0x3b, 0x5d, 0x9b, 0x96, 0xad, 0x64, - 0x8a, 0xdf, 0x94, 0x14, 0x12, 0x23, 0x28, 0xce, 0xe0, 0xd6, 0x2f, 0x4b, 0x0a, 0x3f, 0xe2, 0xcf, - 0xa7, 0xa1, 0xe0, 0x3a, 0xf6, 0x91, 0xeb, 0x8c, 0x62, 0xc4, 0x6f, 0x09, 0x06, 0x10, 0x10, 0x4a, - 0x70, 0x1d, 0xf2, 0xa3, 0x6e, 0xc4, 0x6f, 0xbf, 0x25, 0x8f, 0x87, 0xdc, 0x81, 0x35, 0x98, 0x92, - 0x09, 0xca, 0x72, 0x9d, 0x11, 0x28, 0x7e, 0x47, 0x50, 0x94, 0x22, 0x30, 0xb1, 0x8c, 0x80, 0xf8, - 0x41, 0x8b, 0x8c, 0x42, 0xf2, 0x9a, 0x5c, 0x86, 0x80, 0x08, 0x57, 0x1e, 0x10, 0xc7, 0x3c, 0x1c, - 0x8d, 0xe1, 0xab, 0xd2, 0x95, 0x12, 0x43, 0x29, 0x6a, 0x30, 0xd9, 0xc6, 0x9e, 0x7f, 0x88, 0xed, - 0x91, 0xb6, 0xe3, 0x77, 0x05, 0x47, 0x31, 0x04, 0x09, 0x8f, 0x74, 0x9d, 0xb3, 0xd0, 0x7c, 0x4d, - 0x7a, 0x24, 0x02, 0x13, 0x47, 0xcf, 0x0f, 0xd8, 0xdd, 0xcc, 0x59, 0xd8, 0x7e, 0x4f, 0x1e, 0x3d, - 0x8e, 0xdd, 0x8c, 0x32, 0x5e, 0x87, 0xbc, 0x6f, 0xbd, 0x38, 0x12, 0xcd, 0xef, 0xcb, 0x9d, 0x66, - 0x00, 0x0a, 0x7e, 0x1e, 0xce, 0x0d, 0x2d, 0x13, 0x23, 0x90, 0xfd, 0x81, 0x20, 0x9b, 0x1b, 0x52, - 0x2a, 0x44, 0x4a, 0x38, 0x2b, 0xe5, 0x1f, 0xca, 0x94, 0x40, 0xfa, 0xb8, 0x76, 0x68, 0x67, 0xef, - 0xe3, 0xe6, 0xd9, 0xbc, 0xf6, 0x47, 0xd2, 0x6b, 0x1c, 0x1b, 0xf3, 0xda, 0x1e, 0xcc, 0x09, 0xc6, - 0xb3, 0xed, 0xeb, 0xd7, 0x65, 0x62, 0xe5, 0xe8, 0xfd, 0xf8, 0xee, 0x7e, 0x0a, 0xe6, 0x43, 0x77, - 0xca, 0xa6, 0xd4, 0x37, 0xda, 0xb8, 0x33, 0x02, 0xf3, 0x37, 0x04, 0xb3, 0xcc, 0xf8, 0x61, 0x57, - 0xeb, 0x6f, 0xe2, 0x0e, 0x25, 0x7f, 0x0e, 0xca, 0x92, 0xbc, 0xeb, 0x78, 0xc4, 0x74, 0x5b, 0x8e, - 0xf5, 0x22, 0x69, 0x8c, 0x40, 0xfd, 0xc7, 0x7d, 0x5b, 0xb5, 0x1f, 0x81, 0x53, 0xe6, 0x75, 0x50, - 0xc3, 0x5e, 0xc5, 0xb0, 0xda, 0x1d, 0xd7, 0x0b, 0x12, 0x18, 0xff, 0x44, 0xee, 0x54, 0x88, 0x5b, - 0x67, 0x30, 0xad, 0x0e, 0x25, 0x36, 0x1c, 0x35, 0x24, 0xff, 0x54, 0x10, 0x4d, 0xf6, 0x50, 0x22, - 0x71, 0x98, 0x6e, 0xbb, 0x83, 0xbd, 0x51, 0xf2, 0xdf, 0x9f, 0xc9, 0xc4, 0x21, 0x20, 0x22, 0x71, - 0x04, 0x47, 0x1d, 0x42, 0xab, 0xfd, 0x08, 0x0c, 0xdf, 0x94, 0x89, 0x43, 0x62, 0x04, 0x85, 0x6c, - 0x18, 0x46, 0xa0, 0xf8, 0x73, 0x49, 0x21, 0x31, 0x94, 0xe2, 0xe3, 0xbd, 0x42, 0xeb, 0x91, 0x96, - 0xe5, 0x07, 0x1e, 0x6f, 0x85, 0x4f, 0xa7, 0xfa, 0xd6, 0x5b, 0xf1, 0x26, 0x4c, 0x8f, 0x40, 0xb5, - 0x1b, 0x30, 0xd5, 0xd7, 0x62, 0xa0, 0xa4, 0x2f, 0xfa, 0xe5, 0x4f, 0xbf, 0x23, 0x92, 0x51, 0xbc, - 0xc3, 0xd0, 0x36, 0xe8, 0xbe, 0xc7, 0xfb, 0x80, 0x64, 0xb2, 0x97, 0xde, 0x09, 0xb7, 0x3e, 0xd6, - 0x06, 0x68, 0xcf, 0xc0, 0x64, 0xac, 0x07, 0x48, 0xa6, 0xfa, 0x8c, 0xa0, 0x2a, 0x46, 0x5b, 0x00, - 0xed, 0x0a, 0x64, 0x68, 0x3d, 0x4f, 0x86, 0xff, 0x8c, 0x80, 0x33, 0x75, 0xed, 0x23, 0x90, 0x93, - 0x75, 0x3c, 0x19, 0xfa, 0xb3, 0x02, 0x1a, 0x42, 0x28, 0x5c, 0xd6, 0xf0, 0x64, 0xf8, 0xcf, 0x49, - 0xb8, 0x84, 0x50, 0xf8, 0xe8, 0x2e, 0xfc, 0xf6, 0xe7, 0x32, 0x22, 0x0f, 0x4b, 0xdf, 0x5d, 0x87, - 0x09, 0x51, 0xbc, 0x93, 0xd1, 0x9f, 0x15, 0x0f, 0x97, 0x08, 0xed, 0x49, 0xc8, 0x8e, 0xe8, 0xf0, - 0x5f, 0x10, 0x50, 0xae, 0xaf, 0xd5, 0xa0, 0x10, 0x29, 0xd8, 0xc9, 0xf0, 0x5f, 0x14, 0xf0, 0x28, - 0x8a, 0x9a, 0x2e, 0x0a, 0x76, 0x32, 0xc1, 0x2f, 0x49, 0xd3, 0x05, 0x82, 0xba, 0x4d, 0xd6, 0xea, - 0x64, 0xf4, 0x2f, 0x4b, 0xaf, 0x4b, 0x88, 0xf6, 0x34, 0xe4, 0xc3, 0xfc, 0x9b, 0x8c, 0xff, 0x15, - 0x81, 0xef, 0x61, 0xa8, 0x07, 0x22, 0xf9, 0x3f, 0x99, 0xe2, 0x57, 0xa5, 0x07, 0x22, 0x28, 0x7a, - 0x8c, 0xfa, 0x6b, 0x7a, 0x32, 0xd3, 0xaf, 0xc9, 0x63, 0xd4, 0x57, 0xd2, 0xe9, 0x6e, 0xb2, 0x34, - 0x98, 0x4c, 0xf1, 0xeb, 0x72, 0x37, 0x99, 0x3e, 0x35, 0xa3, 0xbf, 0x48, 0x26, 0x73, 0xfc, 0x86, - 0x34, 0xa3, 0xaf, 0x46, 0x6a, 0x3b, 0x80, 0x06, 0x0b, 0x64, 0x32, 0xdf, 0xe7, 0x05, 0xdf, 0xf4, - 0x40, 0x7d, 0xd4, 0x9e, 0x85, 0xb9, 0xe1, 0xc5, 0x31, 0x99, 0xf5, 0x0b, 0xef, 0xf4, 0xbd, 0xce, - 0x44, 0x6b, 0xa3, 0xb6, 0xd7, 0xcb, 0xb2, 0xd1, 0xc2, 0x98, 0x4c, 0xfb, 0xf2, 0x3b, 0xf1, 0x44, - 0x1b, 0xad, 0x8b, 0x5a, 0x15, 0xa0, 0x57, 0x93, 0x92, 0xb9, 0x5e, 0x11, 0x5c, 0x11, 0x10, 0x3d, - 0x1a, 0xa2, 0x24, 0x25, 0xe3, 0xbf, 0x24, 0x8f, 0x86, 0x40, 0xd0, 0xa3, 0x21, 0xab, 0x51, 0x32, - 0xfa, 0x55, 0x79, 0x34, 0x24, 0x44, 0xbb, 0x0e, 0x39, 0xa7, 0x6b, 0xdb, 0x34, 0xb6, 0xd0, 0xe9, - 0xff, 0x64, 0x53, 0xfe, 0xe7, 0x77, 0x05, 0x58, 0x02, 0xb4, 0x2b, 0x90, 0x25, 0xed, 0x03, 0xd2, - 0x48, 0x42, 0xfe, 0xcb, 0xbb, 0x32, 0x9f, 0x50, 0x6d, 0xed, 0x69, 0x00, 0xfe, 0x32, 0xcd, 0xbe, - 0xb1, 0x24, 0x60, 0xff, 0xf5, 0x5d, 0xf1, 0xfd, 0xbe, 0x07, 0xe9, 0x11, 0xf0, 0xff, 0x06, 0x38, - 0x9d, 0xe0, 0xad, 0x38, 0x01, 0x7b, 0x01, 0x7f, 0x0a, 0x26, 0x6e, 0xfa, 0xae, 0x13, 0xe0, 0x56, - 0x12, 0xfa, 0xdf, 0x04, 0x5a, 0xea, 0x53, 0x87, 0xb5, 0x5d, 0x8f, 0x04, 0xb8, 0xe5, 0x27, 0x61, - 0xff, 0x5d, 0x60, 0x43, 0x00, 0x05, 0x9b, 0xd8, 0x0f, 0x46, 0x59, 0xf7, 0x7f, 0x48, 0xb0, 0x04, - 0x50, 0xa3, 0xe9, 0xef, 0x5b, 0xe4, 0x28, 0x09, 0xfb, 0xb6, 0x34, 0x5a, 0xe8, 0x6b, 0x1f, 0x81, - 0x3c, 0xfd, 0xc9, 0xff, 0xa7, 0x25, 0x01, 0xfc, 0x9f, 0x02, 0xdc, 0x43, 0xd0, 0x27, 0xfb, 0x41, - 0x23, 0xb0, 0x92, 0x9d, 0xfd, 0x5f, 0x62, 0xa7, 0xa5, 0xbe, 0x56, 0x85, 0x82, 0x1f, 0x34, 0x1a, - 0x5d, 0xd1, 0xd1, 0x24, 0xc0, 0x7f, 0xf0, 0x6e, 0xf8, 0x92, 0x1b, 0x62, 0x56, 0x2e, 0x0c, 0xbf, - 0xaf, 0x83, 0x35, 0x77, 0xcd, 0xe5, 0x37, 0x75, 0xf0, 0x3f, 0x19, 0x98, 0x0a, 0xcd, 0x95, 0xf7, - 0x6a, 0xa1, 0x60, 0xfe, 0x6c, 0x37, 0x72, 0x8b, 0x7f, 0x99, 0x86, 0x5c, 0x0d, 0xfb, 0x01, 0xbe, - 0x83, 0x8f, 0x50, 0x07, 0x66, 0xe8, 0xef, 0x4d, 0xdc, 0x61, 0xf7, 0x3b, 0xe2, 0x40, 0x89, 0x4b, - 0xcf, 0x0f, 0x2e, 0xf7, 0x9e, 0x2a, 0x11, 0xcb, 0x43, 0xd4, 0xd9, 0x77, 0xd6, 0x15, 0xf5, 0xf5, - 0xbf, 0x3f, 0x3f, 0xf6, 0xf3, 0xff, 0x70, 0x3e, 0xb7, 0x79, 0xf4, 0xac, 0x65, 0xfb, 0xae, 0xa3, - 0x0f, 0xa3, 0x46, 0x9f, 0x51, 0xe0, 0x81, 0x21, 0xf2, 0x2d, 0x71, 0xea, 0xc4, 0xa7, 0x83, 0xcb, - 0x23, 0x3e, 0x5a, 0xc2, 0xb8, 0x09, 0xc5, 0xd8, 0xe3, 0x4f, 0x7b, 0xcc, 0xfc, 0xf3, 0x50, 0x3e, - 0x69, 0x25, 0x48, 0x85, 0xf4, 0x2d, 0x72, 0x24, 0xfe, 0x53, 0x92, 0xfe, 0x44, 0x8f, 0xf4, 0xfe, - 0xd3, 0x4a, 0x59, 0x2a, 0x5c, 0x9a, 0x8e, 0x58, 0x27, 0x1e, 0xc6, 0xe7, 0xb5, 0xd4, 0x35, 0x65, - 0x1e, 0xc3, 0x42, 0x92, 0xa5, 0xff, 0xc7, 0x47, 0x2c, 0x56, 0x60, 0x9c, 0x0b, 0xd1, 0x2c, 0x64, - 0xd7, 0x9d, 0xe0, 0xea, 0x65, 0x46, 0x95, 0xd6, 0xf9, 0x60, 0x65, 0xe3, 0xf5, 0x7b, 0x95, 0xb1, - 0xef, 0xde, 0xab, 0x8c, 0xfd, 0xed, 0xbd, 0xca, 0xd8, 0xf7, 0xef, 0x55, 0x94, 0x37, 0xef, 0x55, - 0x94, 0xb7, 0xef, 0x55, 0x94, 0x1f, 0xde, 0xab, 0x28, 0x77, 0x8f, 0x2b, 0xca, 0x57, 0x8f, 0x2b, - 0xca, 0xd7, 0x8f, 0x2b, 0xca, 0xb7, 0x8e, 0x2b, 0xca, 0xb7, 0x8f, 0x2b, 0xca, 0xeb, 0xc7, 0x95, - 0xb1, 0xef, 0x1e, 0x57, 0xc6, 0xbe, 0x7f, 0x5c, 0x51, 0xde, 0x3c, 0xae, 0x8c, 0xbd, 0x7d, 0x5c, - 0x51, 0x7e, 0x78, 0x5c, 0x19, 0xbb, 0xfb, 0x8f, 0x95, 0xb1, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x13, 0xa7, 0x1c, 0xfa, 0x2f, 0x00, 0x00, + // 3784 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x25, 0x88, 0x8e, 0x21, 0x8a, 0xb1, + 0x23, 0xda, 0x4e, 0xa8, 0x8c, 0x2c, 0xc9, 0xf2, 0xaa, 0x89, 0x07, 0x04, 0x21, 0x06, 0x2a, 0x7f, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0x27, 0xed, 0xf4, 0xbf, 0x33, 0x4d, 0x5c, 0xc7, 0x6d, 0x33, + 0xd3, 0x3a, 0x4d, 0xfa, 0x93, 0xf4, 0x27, 0xcd, 0xf4, 0x29, 0x7d, 0x48, 0xeb, 0xa7, 0x4e, 0xf2, + 0xd6, 0x87, 0x4e, 0x6b, 0x31, 0x9e, 0xa9, 0xdb, 0xba, 0xad, 0xdb, 0x78, 0xa6, 0x99, 0xd1, 0x74, + 0xa6, 0x73, 0xff, 0x16, 0xbb, 0x00, 0xc8, 0x05, 0xd3, 0x71, 0xf2, 0x44, 0xdc, 0x73, 0xcf, 0xf7, + 0xed, 0xb9, 0xe7, 0x9e, 0x7b, 0xce, 0xd9, 0xbb, 0x84, 0xef, 0x5d, 0x86, 0xc5, 0xb6, 0xe3, 0xb4, + 0x2d, 0x7c, 0xa1, 0xeb, 0x3a, 0xbe, 0xb3, 0xd7, 0x6b, 0x5d, 0x68, 0x62, 0xcf, 0x70, 0xcd, 0xae, + 0xef, 0xb8, 0x2b, 0x54, 0xa6, 0xcc, 0x30, 0x8d, 0x15, 0xa1, 0xb1, 0xb4, 0x09, 0xb3, 0xd7, 0x4d, + 0x0b, 0xaf, 0x05, 0x8a, 0x0d, 0xec, 0x2b, 0x57, 0x21, 0xd5, 0x32, 0x2d, 0x5c, 0x94, 0x16, 0x93, + 0xcb, 0xb9, 0x8b, 0x8f, 0xaf, 0x0c, 0x80, 0x56, 0xa2, 0x88, 0x3a, 0x11, 0x6b, 0x14, 0xb1, 0xf4, + 0x56, 0x0a, 0xe6, 0x46, 0xcc, 0x2a, 0x0a, 0xa4, 0x6c, 0xd4, 0x21, 0x8c, 0xd2, 0x72, 0x56, 0xa3, + 0xbf, 0x95, 0x22, 0x4c, 0x75, 0x91, 0x71, 0x07, 0xb5, 0x71, 0x31, 0x41, 0xc5, 0x62, 0xa8, 0x94, + 0x00, 0x9a, 0xb8, 0x8b, 0xed, 0x26, 0xb6, 0x8d, 0x83, 0x62, 0x72, 0x31, 0xb9, 0x9c, 0xd5, 0x42, + 0x12, 0xe5, 0x69, 0x98, 0xed, 0xf6, 0xf6, 0x2c, 0xd3, 0xd0, 0x43, 0x6a, 0xb0, 0x98, 0x5c, 0x4e, + 0x6b, 0x32, 0x9b, 0x58, 0xeb, 0x2b, 0x9f, 0x87, 0x99, 0x7b, 0x18, 0xdd, 0x09, 0xab, 0xe6, 0xa8, + 0x6a, 0x81, 0x88, 0x43, 0x8a, 0x15, 0xc8, 0x77, 0xb0, 0xe7, 0xa1, 0x36, 0xd6, 0xfd, 0x83, 0x2e, + 0x2e, 0xa6, 0xe8, 0xea, 0x17, 0x87, 0x56, 0x3f, 0xb8, 0xf2, 0x1c, 0x47, 0xed, 0x1c, 0x74, 0xb1, + 0x52, 0x86, 0x2c, 0xb6, 0x7b, 0x1d, 0xc6, 0x90, 0x3e, 0xc2, 0x7f, 0x55, 0xbb, 0xd7, 0x19, 0x64, + 0xc9, 0x10, 0x18, 0xa7, 0x98, 0xf2, 0xb0, 0x7b, 0xd7, 0x34, 0x70, 0x71, 0x92, 0x12, 0x9c, 0x1f, + 0x22, 0x68, 0xb0, 0xf9, 0x41, 0x0e, 0x81, 0x53, 0x2a, 0x90, 0xc5, 0x2f, 0xfa, 0xd8, 0xf6, 0x4c, + 0xc7, 0x2e, 0x4e, 0x51, 0x92, 0x27, 0x46, 0xec, 0x22, 0xb6, 0x9a, 0x83, 0x14, 0x7d, 0x9c, 0x72, + 0x05, 0xa6, 0x9c, 0xae, 0x6f, 0x3a, 0xb6, 0x57, 0xcc, 0x2c, 0x4a, 0xcb, 0xb9, 0x8b, 0x1f, 0x18, + 0x19, 0x08, 0xdb, 0x4c, 0x47, 0x13, 0xca, 0x4a, 0x0d, 0x64, 0xcf, 0xe9, 0xb9, 0x06, 0xd6, 0x0d, + 0xa7, 0x89, 0x75, 0xd3, 0x6e, 0x39, 0xc5, 0x2c, 0x25, 0x38, 0x3b, 0xbc, 0x10, 0xaa, 0x58, 0x71, + 0x9a, 0xb8, 0x66, 0xb7, 0x1c, 0xad, 0xe0, 0x45, 0xc6, 0xca, 0x29, 0x98, 0xf4, 0x0e, 0x6c, 0x1f, + 0xbd, 0x58, 0xcc, 0xd3, 0x08, 0xe1, 0xa3, 0xa5, 0xff, 0x49, 0xc3, 0xcc, 0x38, 0x21, 0x76, 0x0d, + 0xd2, 0x2d, 0xb2, 0xca, 0x62, 0xe2, 0x24, 0x3e, 0x60, 0x98, 0xa8, 0x13, 0x27, 0x7f, 0x48, 0x27, + 0x96, 0x21, 0x67, 0x63, 0xcf, 0xc7, 0x4d, 0x16, 0x11, 0xc9, 0x31, 0x63, 0x0a, 0x18, 0x68, 0x38, + 0xa4, 0x52, 0x3f, 0x54, 0x48, 0xdd, 0x84, 0x99, 0xc0, 0x24, 0xdd, 0x45, 0x76, 0x5b, 0xc4, 0xe6, + 0x85, 0x38, 0x4b, 0x56, 0xaa, 0x02, 0xa7, 0x11, 0x98, 0x56, 0xc0, 0x91, 0xb1, 0xb2, 0x06, 0xe0, + 0xd8, 0xd8, 0x69, 0xe9, 0x4d, 0x6c, 0x58, 0xc5, 0xcc, 0x11, 0x5e, 0xda, 0x26, 0x2a, 0x43, 0x5e, + 0x72, 0x98, 0xd4, 0xb0, 0x94, 0xe7, 0xfa, 0xa1, 0x36, 0x75, 0x44, 0xa4, 0x6c, 0xb2, 0x43, 0x36, + 0x14, 0x6d, 0xbb, 0x50, 0x70, 0x31, 0x89, 0x7b, 0xdc, 0xe4, 0x2b, 0xcb, 0x52, 0x23, 0x56, 0x62, + 0x57, 0xa6, 0x71, 0x18, 0x5b, 0xd8, 0xb4, 0x1b, 0x1e, 0x2a, 0x1f, 0x84, 0x40, 0xa0, 0xd3, 0xb0, + 0x02, 0x9a, 0x85, 0xf2, 0x42, 0xb8, 0x85, 0x3a, 0x78, 0xe1, 0x2a, 0x14, 0xa2, 0xee, 0x51, 0xe6, + 0x21, 0xed, 0xf9, 0xc8, 0xf5, 0x69, 0x14, 0xa6, 0x35, 0x36, 0x50, 0x64, 0x48, 0x62, 0xbb, 0x49, + 0xb3, 0x5c, 0x5a, 0x23, 0x3f, 0x17, 0x9e, 0x85, 0xe9, 0xc8, 0xe3, 0xc7, 0x05, 0x2e, 0x7d, 0x7e, + 0x12, 0xe6, 0x47, 0xc5, 0xdc, 0xc8, 0xf0, 0x3f, 0x05, 0x93, 0x76, 0xaf, 0xb3, 0x87, 0xdd, 0x62, + 0x92, 0x32, 0xf0, 0x91, 0x52, 0x86, 0xb4, 0x85, 0xf6, 0xb0, 0x55, 0x4c, 0x2d, 0x4a, 0xcb, 0x85, + 0x8b, 0x4f, 0x8f, 0x15, 0xd5, 0x2b, 0x1b, 0x04, 0xa2, 0x31, 0xa4, 0xf2, 0x71, 0x48, 0xf1, 0x14, + 0x47, 0x18, 0x9e, 0x1a, 0x8f, 0x81, 0xc4, 0xa2, 0x46, 0x71, 0xca, 0xa3, 0x90, 0x25, 0x7f, 0x99, + 0x6f, 0x27, 0xa9, 0xcd, 0x19, 0x22, 0x20, 0x7e, 0x55, 0x16, 0x20, 0x43, 0xc3, 0xac, 0x89, 0x45, + 0x69, 0x08, 0xc6, 0x64, 0x63, 0x9a, 0xb8, 0x85, 0x7a, 0x96, 0xaf, 0xdf, 0x45, 0x56, 0x0f, 0xd3, + 0x80, 0xc9, 0x6a, 0x79, 0x2e, 0xfc, 0x14, 0x91, 0x29, 0x67, 0x21, 0xc7, 0xa2, 0xd2, 0xb4, 0x9b, + 0xf8, 0x45, 0x9a, 0x7d, 0xd2, 0x1a, 0x0b, 0xd4, 0x1a, 0x91, 0x90, 0xc7, 0xdf, 0xf6, 0x1c, 0x5b, + 0x6c, 0x2d, 0x7d, 0x04, 0x11, 0xd0, 0xc7, 0x3f, 0x3b, 0x98, 0xf8, 0x1e, 0x1b, 0xbd, 0xbc, 0xc1, + 0x58, 0x5c, 0xfa, 0x46, 0x02, 0x52, 0xf4, 0xbc, 0xcd, 0x40, 0x6e, 0xe7, 0x56, 0xbd, 0xaa, 0xaf, + 0x6d, 0xef, 0xae, 0x6e, 0x54, 0x65, 0x49, 0x29, 0x00, 0x50, 0xc1, 0xf5, 0x8d, 0xed, 0xf2, 0x8e, + 0x9c, 0x08, 0xc6, 0xb5, 0xad, 0x9d, 0x2b, 0x97, 0xe4, 0x64, 0x00, 0xd8, 0x65, 0x82, 0x54, 0x58, + 0xe1, 0x99, 0x8b, 0x72, 0x5a, 0x91, 0x21, 0xcf, 0x08, 0x6a, 0x37, 0xab, 0x6b, 0x57, 0x2e, 0xc9, + 0x93, 0x51, 0xc9, 0x33, 0x17, 0xe5, 0x29, 0x65, 0x1a, 0xb2, 0x54, 0xb2, 0xba, 0xbd, 0xbd, 0x21, + 0x67, 0x02, 0xce, 0xc6, 0x8e, 0x56, 0xdb, 0x5a, 0x97, 0xb3, 0x01, 0xe7, 0xba, 0xb6, 0xbd, 0x5b, + 0x97, 0x21, 0x60, 0xd8, 0xac, 0x36, 0x1a, 0xe5, 0xf5, 0xaa, 0x9c, 0x0b, 0x34, 0x56, 0x6f, 0xed, + 0x54, 0x1b, 0x72, 0x3e, 0x62, 0xd6, 0x33, 0x17, 0xe5, 0xe9, 0xe0, 0x11, 0xd5, 0xad, 0xdd, 0x4d, + 0xb9, 0xa0, 0xcc, 0xc2, 0x34, 0x7b, 0x84, 0x30, 0x62, 0x66, 0x40, 0x74, 0xe5, 0x92, 0x2c, 0xf7, + 0x0d, 0x61, 0x2c, 0xb3, 0x11, 0xc1, 0x95, 0x4b, 0xb2, 0xb2, 0x54, 0x81, 0x34, 0x8d, 0x2e, 0x45, + 0x81, 0xc2, 0x46, 0x79, 0xb5, 0xba, 0xa1, 0x6f, 0xd7, 0x77, 0x6a, 0xdb, 0x5b, 0xe5, 0x0d, 0x59, + 0xea, 0xcb, 0xb4, 0xea, 0x27, 0x77, 0x6b, 0x5a, 0x75, 0x4d, 0x4e, 0x84, 0x65, 0xf5, 0x6a, 0x79, + 0xa7, 0xba, 0x26, 0x27, 0x97, 0x0c, 0x98, 0x1f, 0x95, 0x67, 0x46, 0x9e, 0x8c, 0xd0, 0x16, 0x27, + 0x8e, 0xd8, 0x62, 0xca, 0x35, 0xb4, 0xc5, 0x5f, 0x92, 0x60, 0x6e, 0x44, 0xae, 0x1d, 0xf9, 0x90, + 0xe7, 0x21, 0xcd, 0x42, 0x94, 0x55, 0x9f, 0x27, 0x47, 0x26, 0x6d, 0x1a, 0xb0, 0x43, 0x15, 0x88, + 0xe2, 0xc2, 0x15, 0x38, 0x79, 0x44, 0x05, 0x26, 0x14, 0x43, 0x46, 0xbe, 0x2c, 0x41, 0xf1, 0x28, + 0xee, 0x98, 0x44, 0x91, 0x88, 0x24, 0x8a, 0x6b, 0x83, 0x06, 0x9c, 0x3b, 0x7a, 0x0d, 0x43, 0x56, + 0xbc, 0x2e, 0xc1, 0xa9, 0xd1, 0x8d, 0xca, 0x48, 0x1b, 0x3e, 0x0e, 0x93, 0x1d, 0xec, 0xef, 0x3b, + 0xa2, 0x58, 0x7f, 0x68, 0x44, 0x09, 0x20, 0xd3, 0x83, 0xbe, 0xe2, 0xa8, 0x70, 0x0d, 0x49, 0x1e, + 0xd5, 0x6d, 0x30, 0x6b, 0x86, 0x2c, 0xfd, 0x5c, 0x02, 0x1e, 0x19, 0x49, 0x3e, 0xd2, 0xd0, 0xc7, + 0x00, 0x4c, 0xbb, 0xdb, 0xf3, 0x59, 0x41, 0x66, 0xf9, 0x29, 0x4b, 0x25, 0xf4, 0xec, 0x93, 0xdc, + 0xd3, 0xf3, 0x83, 0xf9, 0x24, 0x9d, 0x07, 0x26, 0xa2, 0x0a, 0x57, 0xfb, 0x86, 0xa6, 0xa8, 0xa1, + 0xa5, 0x23, 0x56, 0x3a, 0x54, 0xeb, 0x3e, 0x0a, 0xb2, 0x61, 0x99, 0xd8, 0xf6, 0x75, 0xcf, 0x77, + 0x31, 0xea, 0x98, 0x76, 0x9b, 0x26, 0xe0, 0x8c, 0x9a, 0x6e, 0x21, 0xcb, 0xc3, 0xda, 0x0c, 0x9b, + 0x6e, 0x88, 0x59, 0x82, 0xa0, 0x55, 0xc6, 0x0d, 0x21, 0x26, 0x23, 0x08, 0x36, 0x1d, 0x20, 0x96, + 0xbe, 0x3a, 0x05, 0xb9, 0x50, 0x5b, 0xa7, 0x9c, 0x83, 0xfc, 0x6d, 0x74, 0x17, 0xe9, 0xa2, 0x55, + 0x67, 0x9e, 0xc8, 0x11, 0x59, 0x9d, 0xb7, 0xeb, 0x1f, 0x85, 0x79, 0xaa, 0xe2, 0xf4, 0x7c, 0xec, + 0xea, 0x86, 0x85, 0x3c, 0x8f, 0x3a, 0x2d, 0x43, 0x55, 0x15, 0x32, 0xb7, 0x4d, 0xa6, 0x2a, 0x62, + 0x46, 0xb9, 0x0c, 0x73, 0x14, 0xd1, 0xe9, 0x59, 0xbe, 0xd9, 0xb5, 0xb0, 0x4e, 0x5e, 0x1e, 0x3c, + 0x9a, 0x88, 0x03, 0xcb, 0x66, 0x89, 0xc6, 0x26, 0x57, 0x20, 0x16, 0x79, 0xca, 0x1a, 0x3c, 0x46, + 0x61, 0x6d, 0x6c, 0x63, 0x17, 0xf9, 0x58, 0xc7, 0x9f, 0xe9, 0x21, 0xcb, 0xd3, 0x91, 0xdd, 0xd4, + 0xf7, 0x91, 0xb7, 0x5f, 0x9c, 0x27, 0x04, 0xab, 0x89, 0xa2, 0xa4, 0x9d, 0x21, 0x8a, 0xeb, 0x5c, + 0xaf, 0x4a, 0xd5, 0xca, 0x76, 0xf3, 0x13, 0xc8, 0xdb, 0x57, 0x54, 0x38, 0x45, 0x59, 0x3c, 0xdf, + 0x35, 0xed, 0xb6, 0x6e, 0xec, 0x63, 0xe3, 0x8e, 0xde, 0xf3, 0x5b, 0x57, 0x8b, 0x8f, 0x86, 0x9f, + 0x4f, 0x2d, 0x6c, 0x50, 0x9d, 0x0a, 0x51, 0xd9, 0xf5, 0x5b, 0x57, 0x95, 0x06, 0xe4, 0xc9, 0x66, + 0x74, 0xcc, 0x97, 0xb0, 0xde, 0x72, 0x5c, 0x5a, 0x59, 0x0a, 0x23, 0x4e, 0x76, 0xc8, 0x83, 0x2b, + 0xdb, 0x1c, 0xb0, 0xe9, 0x34, 0xb1, 0x9a, 0x6e, 0xd4, 0xab, 0xd5, 0x35, 0x2d, 0x27, 0x58, 0xae, + 0x3b, 0x2e, 0x09, 0xa8, 0xb6, 0x13, 0x38, 0x38, 0xc7, 0x02, 0xaa, 0xed, 0x08, 0xf7, 0x5e, 0x86, + 0x39, 0xc3, 0x60, 0x6b, 0x36, 0x0d, 0x9d, 0xb7, 0xf8, 0x5e, 0x51, 0x8e, 0x38, 0xcb, 0x30, 0xd6, + 0x99, 0x02, 0x8f, 0x71, 0x4f, 0x79, 0x0e, 0x1e, 0xe9, 0x3b, 0x2b, 0x0c, 0x9c, 0x1d, 0x5a, 0xe5, + 0x20, 0xf4, 0x32, 0xcc, 0x75, 0x0f, 0x86, 0x81, 0x4a, 0xe4, 0x89, 0xdd, 0x83, 0x41, 0xd8, 0x13, + 0xf4, 0xb5, 0xcd, 0xc5, 0x06, 0xf2, 0x71, 0xb3, 0x78, 0x3a, 0xac, 0x1d, 0x9a, 0x50, 0x2e, 0x80, + 0x6c, 0x18, 0x3a, 0xb6, 0xd1, 0x9e, 0x85, 0x75, 0xe4, 0x62, 0x1b, 0x79, 0xc5, 0xb3, 0x61, 0xe5, + 0x82, 0x61, 0x54, 0xe9, 0x6c, 0x99, 0x4e, 0x2a, 0x4f, 0xc1, 0xac, 0xb3, 0x77, 0xdb, 0x60, 0x91, + 0xa5, 0x77, 0x5d, 0xdc, 0x32, 0x5f, 0x2c, 0x3e, 0x4e, 0xdd, 0x34, 0x43, 0x26, 0x68, 0x5c, 0xd5, + 0xa9, 0x58, 0x79, 0x12, 0x64, 0xc3, 0xdb, 0x47, 0x6e, 0x97, 0x96, 0x76, 0xaf, 0x8b, 0x0c, 0x5c, + 0x7c, 0x82, 0xa9, 0x32, 0xf9, 0x96, 0x10, 0x93, 0xc8, 0xf6, 0xee, 0x99, 0x2d, 0x5f, 0x30, 0x9e, + 0x67, 0x91, 0x4d, 0x65, 0x9c, 0xed, 0x26, 0xcc, 0xf7, 0x6c, 0xd3, 0xf6, 0xb1, 0xdb, 0x75, 0x31, + 0x69, 0xe2, 0xd9, 0x49, 0x2c, 0xfe, 0xf3, 0xd4, 0x11, 0x6d, 0xf8, 0x6e, 0x58, 0x9b, 0x05, 0x80, + 0x36, 0xd7, 0x1b, 0x16, 0x2e, 0xa9, 0x90, 0x0f, 0xc7, 0x85, 0x92, 0x05, 0x16, 0x19, 0xb2, 0x44, + 0x6a, 0x6c, 0x65, 0x7b, 0x8d, 0x54, 0xc7, 0x4f, 0x57, 0xe5, 0x04, 0xa9, 0xd2, 0x1b, 0xb5, 0x9d, + 0xaa, 0xae, 0xed, 0x6e, 0xed, 0xd4, 0x36, 0xab, 0x72, 0xf2, 0xa9, 0x6c, 0xe6, 0xed, 0x29, 0xf9, + 0xfe, 0xfd, 0xfb, 0xf7, 0x13, 0x4b, 0xdf, 0x4e, 0x40, 0x21, 0xda, 0x19, 0x2b, 0x3f, 0x01, 0xa7, + 0xc5, 0x6b, 0xac, 0x87, 0x7d, 0xfd, 0x9e, 0xe9, 0xd2, 0x50, 0xed, 0x20, 0xd6, 0x5b, 0x06, 0x5e, + 0x9e, 0xe7, 0x5a, 0x0d, 0xec, 0xbf, 0x60, 0xba, 0x24, 0x10, 0x3b, 0xc8, 0x57, 0x36, 0xe0, 0xac, + 0xed, 0xe8, 0x9e, 0x8f, 0xec, 0x26, 0x72, 0x9b, 0x7a, 0xff, 0x02, 0x41, 0x47, 0x86, 0x81, 0x3d, + 0xcf, 0x61, 0x25, 0x22, 0x60, 0xf9, 0x80, 0xed, 0x34, 0xb8, 0x72, 0x3f, 0x77, 0x96, 0xb9, 0xea, + 0x40, 0x44, 0x24, 0x8f, 0x8a, 0x88, 0x47, 0x21, 0xdb, 0x41, 0x5d, 0x1d, 0xdb, 0xbe, 0x7b, 0x40, + 0xfb, 0xb9, 0x8c, 0x96, 0xe9, 0xa0, 0x6e, 0x95, 0x8c, 0xdf, 0xbf, 0x3d, 0x08, 0xfb, 0xf1, 0x1f, + 0x92, 0x90, 0x0f, 0xf7, 0x74, 0xa4, 0x45, 0x36, 0x68, 0xfe, 0x96, 0xe8, 0x09, 0xff, 0xe0, 0xb1, + 0x1d, 0xe0, 0x4a, 0x85, 0x24, 0x76, 0x75, 0x92, 0x75, 0x5a, 0x1a, 0x43, 0x92, 0xa2, 0x4a, 0xce, + 0x34, 0x66, 0xfd, 0x7b, 0x46, 0xe3, 0x23, 0x65, 0x1d, 0x26, 0x6f, 0x7b, 0x94, 0x7b, 0x92, 0x72, + 0x3f, 0x7e, 0x3c, 0xf7, 0x8d, 0x06, 0x25, 0xcf, 0xde, 0x68, 0xe8, 0x5b, 0xdb, 0xda, 0x66, 0x79, + 0x43, 0xe3, 0x70, 0xe5, 0x0c, 0xa4, 0x2c, 0xf4, 0xd2, 0x41, 0xb4, 0x04, 0x50, 0xd1, 0xb8, 0x8e, + 0x3f, 0x03, 0xa9, 0x7b, 0x18, 0xdd, 0x89, 0x26, 0x5e, 0x2a, 0x7a, 0x1f, 0x43, 0xff, 0x02, 0xa4, + 0xa9, 0xbf, 0x14, 0x00, 0xee, 0x31, 0x79, 0x42, 0xc9, 0x40, 0xaa, 0xb2, 0xad, 0x91, 0xf0, 0x97, + 0x21, 0xcf, 0xa4, 0x7a, 0xbd, 0x56, 0xad, 0x54, 0xe5, 0xc4, 0xd2, 0x65, 0x98, 0x64, 0x4e, 0x20, + 0x47, 0x23, 0x70, 0x83, 0x3c, 0xc1, 0x87, 0x9c, 0x43, 0x12, 0xb3, 0xbb, 0x9b, 0xab, 0x55, 0x4d, + 0x4e, 0x84, 0xb7, 0xd7, 0x83, 0x7c, 0xb8, 0x9d, 0xfb, 0xd1, 0xc4, 0xd4, 0x5f, 0x49, 0x90, 0x0b, + 0xb5, 0x67, 0xa4, 0x31, 0x40, 0x96, 0xe5, 0xdc, 0xd3, 0x91, 0x65, 0x22, 0x8f, 0x07, 0x05, 0x50, + 0x51, 0x99, 0x48, 0xc6, 0xdd, 0xb4, 0x1f, 0x89, 0xf1, 0xaf, 0x49, 0x20, 0x0f, 0xb6, 0x76, 0x03, + 0x06, 0x4a, 0x3f, 0x56, 0x03, 0x5f, 0x95, 0xa0, 0x10, 0xed, 0xe7, 0x06, 0xcc, 0x3b, 0xf7, 0x63, + 0x35, 0xef, 0xcd, 0x04, 0x4c, 0x47, 0xba, 0xb8, 0x71, 0xad, 0xfb, 0x0c, 0xcc, 0x9a, 0x4d, 0xdc, + 0xe9, 0x3a, 0x3e, 0xb6, 0x8d, 0x03, 0xdd, 0xc2, 0x77, 0xb1, 0x55, 0x5c, 0xa2, 0x89, 0xe2, 0xc2, + 0xf1, 0x7d, 0xe2, 0x4a, 0xad, 0x8f, 0xdb, 0x20, 0x30, 0x75, 0xae, 0xb6, 0x56, 0xdd, 0xac, 0x6f, + 0xef, 0x54, 0xb7, 0x2a, 0xb7, 0xf4, 0xdd, 0xad, 0x9f, 0xdc, 0xda, 0x7e, 0x61, 0x4b, 0x93, 0xcd, + 0x01, 0xb5, 0xf7, 0xf1, 0xa8, 0xd7, 0x41, 0x1e, 0x34, 0x4a, 0x39, 0x0d, 0xa3, 0xcc, 0x92, 0x27, + 0x94, 0x39, 0x98, 0xd9, 0xda, 0xd6, 0x1b, 0xb5, 0xb5, 0xaa, 0x5e, 0xbd, 0x7e, 0xbd, 0x5a, 0xd9, + 0x69, 0xb0, 0x17, 0xe7, 0x40, 0x7b, 0x27, 0x7a, 0xa8, 0x5f, 0x49, 0xc2, 0xdc, 0x08, 0x4b, 0x94, + 0x32, 0xef, 0xd9, 0xd9, 0x6b, 0xc4, 0x47, 0xc6, 0xb1, 0x7e, 0x85, 0x74, 0x05, 0x75, 0xe4, 0xfa, + 0xbc, 0xc5, 0x7f, 0x12, 0x88, 0x97, 0x6c, 0xdf, 0x6c, 0x99, 0xd8, 0xe5, 0xf7, 0x0c, 0xac, 0x91, + 0x9f, 0xe9, 0xcb, 0xd9, 0x55, 0xc3, 0x87, 0x41, 0xe9, 0x3a, 0x9e, 0xe9, 0x9b, 0x77, 0xb1, 0x6e, + 0xda, 0xe2, 0x52, 0x82, 0x34, 0xf6, 0x29, 0x4d, 0x16, 0x33, 0x35, 0xdb, 0x0f, 0xb4, 0x6d, 0xdc, + 0x46, 0x03, 0xda, 0x24, 0x81, 0x27, 0x35, 0x59, 0xcc, 0x04, 0xda, 0xe7, 0x20, 0xdf, 0x74, 0x7a, + 0xa4, 0x4d, 0x62, 0x7a, 0xa4, 0x5e, 0x48, 0x5a, 0x8e, 0xc9, 0x02, 0x15, 0xde, 0xc7, 0xf6, 0x6f, + 0x43, 0xf2, 0x5a, 0x8e, 0xc9, 0x98, 0xca, 0x79, 0x98, 0x41, 0xed, 0xb6, 0x4b, 0xc8, 0x05, 0x11, + 0xeb, 0xcc, 0x0b, 0x81, 0x98, 0x2a, 0x2e, 0xdc, 0x80, 0x8c, 0xf0, 0x03, 0x29, 0xc9, 0xc4, 0x13, + 0x7a, 0x97, 0xdd, 0x49, 0x25, 0x96, 0xb3, 0x5a, 0xc6, 0x16, 0x93, 0xe7, 0x20, 0x6f, 0x7a, 0x7a, + 0xff, 0x72, 0x34, 0xb1, 0x98, 0x58, 0xce, 0x68, 0x39, 0xd3, 0x0b, 0x6e, 0xc3, 0x96, 0x5e, 0x4f, + 0x40, 0x21, 0x7a, 0xb9, 0xab, 0xac, 0x41, 0xc6, 0x72, 0x0c, 0x44, 0x43, 0x8b, 0x7d, 0x59, 0x58, + 0x8e, 0xb9, 0x0f, 0x5e, 0xd9, 0xe0, 0xfa, 0x5a, 0x80, 0x5c, 0xf8, 0x3b, 0x09, 0x32, 0x42, 0xac, + 0x9c, 0x82, 0x54, 0x17, 0xf9, 0xfb, 0x94, 0x2e, 0xbd, 0x9a, 0x90, 0x25, 0x8d, 0x8e, 0x89, 0xdc, + 0xeb, 0x22, 0x9b, 0x86, 0x00, 0x97, 0x93, 0x31, 0xd9, 0x57, 0x0b, 0xa3, 0x26, 0x6d, 0xfb, 0x9d, + 0x4e, 0x07, 0xdb, 0xbe, 0x27, 0xf6, 0x95, 0xcb, 0x2b, 0x5c, 0xac, 0x3c, 0x0d, 0xb3, 0xbe, 0x8b, + 0x4c, 0x2b, 0xa2, 0x9b, 0xa2, 0xba, 0xb2, 0x98, 0x08, 0x94, 0x55, 0x38, 0x23, 0x78, 0x9b, 0xd8, + 0x47, 0xc6, 0x3e, 0x6e, 0xf6, 0x41, 0x93, 0xf4, 0xe6, 0xf0, 0x34, 0x57, 0x58, 0xe3, 0xf3, 0x02, + 0xbb, 0xf4, 0x5d, 0x09, 0x66, 0xc5, 0x8b, 0x4a, 0x33, 0x70, 0xd6, 0x26, 0x00, 0xb2, 0x6d, 0xc7, + 0x0f, 0xbb, 0x6b, 0x38, 0x94, 0x87, 0x70, 0x2b, 0xe5, 0x00, 0xa4, 0x85, 0x08, 0x16, 0x3a, 0x00, + 0xfd, 0x99, 0x23, 0xdd, 0x76, 0x16, 0x72, 0xfc, 0xe6, 0x9e, 0x7e, 0xfe, 0x61, 0xaf, 0xb6, 0xc0, + 0x44, 0xe4, 0x8d, 0x46, 0x99, 0x87, 0xf4, 0x1e, 0x6e, 0x9b, 0x36, 0xbf, 0x4f, 0x64, 0x03, 0x71, + 0x4b, 0x99, 0x0a, 0x6e, 0x29, 0x57, 0x6f, 0xc2, 0x9c, 0xe1, 0x74, 0x06, 0xcd, 0x5d, 0x95, 0x07, + 0x5e, 0xaf, 0xbd, 0x4f, 0x48, 0x9f, 0x86, 0x7e, 0x8b, 0xf9, 0xa5, 0x44, 0x72, 0xbd, 0xbe, 0xfa, + 0x95, 0xc4, 0xc2, 0x3a, 0xc3, 0xd5, 0xc5, 0x32, 0x35, 0xdc, 0xb2, 0xb0, 0x41, 0x4c, 0x87, 0xef, + 0x7f, 0x08, 0x3e, 0xd2, 0x36, 0xfd, 0xfd, 0xde, 0xde, 0x8a, 0xe1, 0x74, 0x2e, 0xb4, 0x9d, 0xb6, + 0xd3, 0xff, 0xdc, 0x45, 0x46, 0x74, 0x40, 0x7f, 0xf1, 0x4f, 0x5e, 0xd9, 0x40, 0xba, 0x10, 0xfb, + 0x7d, 0x4c, 0xdd, 0x82, 0x39, 0xae, 0xac, 0xd3, 0x3b, 0x77, 0xf6, 0x6a, 0xa0, 0x1c, 0x7b, 0xef, + 0x52, 0xfc, 0xfa, 0x5b, 0xb4, 0x56, 0x6b, 0xb3, 0x1c, 0x4a, 0xe6, 0xd8, 0x0b, 0x84, 0xaa, 0xc1, + 0x23, 0x11, 0x3e, 0x76, 0x2e, 0xb1, 0x1b, 0xc3, 0xf8, 0x6d, 0xce, 0x38, 0x17, 0x62, 0x6c, 0x70, + 0xa8, 0x5a, 0x81, 0xe9, 0x93, 0x70, 0xfd, 0x0d, 0xe7, 0xca, 0xe3, 0x30, 0xc9, 0x3a, 0xcc, 0x50, + 0x12, 0xa3, 0xe7, 0xf9, 0x4e, 0x87, 0x26, 0xbd, 0xe3, 0x69, 0xfe, 0xf6, 0x2d, 0x76, 0x50, 0x0a, + 0x04, 0x56, 0x09, 0x50, 0xaa, 0x0a, 0xf4, 0x33, 0x43, 0x13, 0x1b, 0x56, 0x0c, 0xc3, 0x1b, 0xdc, + 0x90, 0x40, 0x5f, 0xfd, 0x14, 0xcc, 0x93, 0xdf, 0x34, 0x27, 0x85, 0x2d, 0x89, 0xbf, 0x65, 0x2a, + 0x7e, 0xf7, 0x65, 0x76, 0x16, 0xe7, 0x02, 0x82, 0x90, 0x4d, 0xa1, 0x5d, 0x6c, 0x63, 0xdf, 0xc7, + 0xae, 0xa7, 0x23, 0x6b, 0x94, 0x79, 0xa1, 0xd7, 0xf4, 0xe2, 0x17, 0xde, 0x89, 0xee, 0xe2, 0x3a, + 0x43, 0x96, 0x2d, 0x4b, 0xdd, 0x85, 0xd3, 0x23, 0xa2, 0x62, 0x0c, 0xce, 0x57, 0x38, 0xe7, 0xfc, + 0x50, 0x64, 0x10, 0xda, 0x3a, 0x08, 0x79, 0xb0, 0x97, 0x63, 0x70, 0xfe, 0x16, 0xe7, 0x54, 0x38, + 0x56, 0x6c, 0x29, 0x61, 0xbc, 0x01, 0xb3, 0x77, 0xb1, 0xbb, 0xe7, 0x78, 0xfc, 0x6a, 0x64, 0x0c, + 0xba, 0x57, 0x39, 0xdd, 0x0c, 0x07, 0xd2, 0xbb, 0x12, 0xc2, 0xf5, 0x1c, 0x64, 0x5a, 0xc8, 0xc0, + 0x63, 0x50, 0x7c, 0x91, 0x53, 0x4c, 0x11, 0x7d, 0x02, 0x2d, 0x43, 0xbe, 0xed, 0xf0, 0xb2, 0x14, + 0x0f, 0x7f, 0x8d, 0xc3, 0x73, 0x02, 0xc3, 0x29, 0xba, 0x4e, 0xb7, 0x67, 0x91, 0x9a, 0x15, 0x4f, + 0xf1, 0xdb, 0x82, 0x42, 0x60, 0x38, 0xc5, 0x09, 0xdc, 0xfa, 0x3b, 0x82, 0xc2, 0x0b, 0xf9, 0xf3, + 0x79, 0xc8, 0x39, 0xb6, 0x75, 0xe0, 0xd8, 0xe3, 0x18, 0xf1, 0xbb, 0x9c, 0x01, 0x38, 0x84, 0x10, + 0x5c, 0x83, 0xec, 0xb8, 0x1b, 0xf1, 0x7b, 0xef, 0x88, 0xe3, 0x21, 0x76, 0x60, 0x1d, 0x66, 0x44, + 0x82, 0x32, 0x1d, 0x7b, 0x0c, 0x8a, 0xdf, 0xe7, 0x14, 0x85, 0x10, 0x8c, 0x2f, 0xc3, 0xc7, 0x9e, + 0xdf, 0xc6, 0xe3, 0x90, 0xbc, 0x2e, 0x96, 0xc1, 0x21, 0xdc, 0x95, 0x7b, 0xd8, 0x36, 0xf6, 0xc7, + 0x63, 0xf8, 0xb2, 0x70, 0xa5, 0xc0, 0x10, 0x8a, 0x0a, 0x4c, 0x77, 0x90, 0xeb, 0xed, 0x23, 0x6b, + 0xac, 0xed, 0xf8, 0x03, 0xce, 0x91, 0x0f, 0x40, 0xdc, 0x23, 0x3d, 0xfb, 0x24, 0x34, 0x5f, 0x11, + 0x1e, 0x09, 0xc1, 0xf8, 0xd1, 0xf3, 0x7c, 0x7a, 0x01, 0x75, 0x12, 0xb6, 0xaf, 0x8a, 0xa3, 0xc7, + 0xb0, 0x9b, 0x61, 0xc6, 0x6b, 0x90, 0xf5, 0xcc, 0x97, 0xc6, 0xa2, 0xf9, 0x43, 0xb1, 0xd3, 0x14, + 0x40, 0xc0, 0xb7, 0xe0, 0xcc, 0xc8, 0x32, 0x31, 0x06, 0xd9, 0x1f, 0x71, 0xb2, 0x53, 0x23, 0x4a, + 0x05, 0x4f, 0x09, 0x27, 0xa5, 0xfc, 0x63, 0x91, 0x12, 0xf0, 0x00, 0x57, 0x9d, 0xbc, 0x28, 0x78, + 0xa8, 0x75, 0x32, 0xaf, 0xfd, 0x89, 0xf0, 0x1a, 0xc3, 0x46, 0xbc, 0xb6, 0x03, 0xa7, 0x38, 0xe3, + 0xc9, 0xf6, 0xf5, 0x6b, 0x22, 0xb1, 0x32, 0xf4, 0x6e, 0x74, 0x77, 0x7f, 0x0a, 0x16, 0x02, 0x77, + 0x8a, 0x8e, 0xd4, 0xd3, 0x3b, 0xa8, 0x3b, 0x06, 0xf3, 0xd7, 0x39, 0xb3, 0xc8, 0xf8, 0x41, 0x4b, + 0xeb, 0x6d, 0xa2, 0x2e, 0x21, 0xbf, 0x09, 0x45, 0x41, 0xde, 0xb3, 0x5d, 0x6c, 0x38, 0x6d, 0xdb, + 0x7c, 0x09, 0x37, 0xc7, 0xa0, 0xfe, 0xd3, 0x81, 0xad, 0xda, 0x0d, 0xc1, 0x09, 0x73, 0x0d, 0xe4, + 0xa0, 0x57, 0xd1, 0xcd, 0x4e, 0xd7, 0x71, 0xfd, 0x18, 0xc6, 0x3f, 0x13, 0x3b, 0x15, 0xe0, 0x6a, + 0x14, 0xa6, 0x56, 0xa1, 0x40, 0x87, 0xe3, 0x86, 0xe4, 0x9f, 0x73, 0xa2, 0xe9, 0x3e, 0x8a, 0x27, + 0x0e, 0xc3, 0xe9, 0x74, 0x91, 0x3b, 0x4e, 0xfe, 0xfb, 0x0b, 0x91, 0x38, 0x38, 0x84, 0x27, 0x0e, + 0xff, 0xa0, 0x8b, 0x49, 0xb5, 0x1f, 0x83, 0xe1, 0x1b, 0x22, 0x71, 0x08, 0x0c, 0xa7, 0x10, 0x0d, + 0xc3, 0x18, 0x14, 0x7f, 0x29, 0x28, 0x04, 0x86, 0x50, 0x7c, 0xb2, 0x5f, 0x68, 0x5d, 0xdc, 0x36, + 0x3d, 0xdf, 0x65, 0x7d, 0xf0, 0xf1, 0x54, 0xdf, 0x7c, 0x27, 0xda, 0x84, 0x69, 0x21, 0xa8, 0x7a, + 0x03, 0x66, 0x06, 0x5a, 0x0c, 0x25, 0xee, 0x7f, 0x16, 0x8a, 0x3f, 0xfd, 0x1e, 0x4f, 0x46, 0xd1, + 0x0e, 0x43, 0xdd, 0x20, 0xfb, 0x1e, 0xed, 0x03, 0xe2, 0xc9, 0x5e, 0x7e, 0x2f, 0xd8, 0xfa, 0x48, + 0x1b, 0xa0, 0x5e, 0x87, 0xe9, 0x48, 0x0f, 0x10, 0x4f, 0xf5, 0x59, 0x4e, 0x95, 0x0f, 0xb7, 0x00, + 0xea, 0x65, 0x48, 0x91, 0x7a, 0x1e, 0x0f, 0xff, 0x19, 0x0e, 0xa7, 0xea, 0xea, 0xc7, 0x20, 0x23, + 0xea, 0x78, 0x3c, 0xf4, 0x67, 0x39, 0x34, 0x80, 0x10, 0xb8, 0xa8, 0xe1, 0xf1, 0xf0, 0x9f, 0x13, + 0x70, 0x01, 0x21, 0xf0, 0xf1, 0x5d, 0xf8, 0xad, 0x5f, 0x48, 0xf1, 0x3c, 0x2c, 0x7c, 0x77, 0x0d, + 0xa6, 0x78, 0xf1, 0x8e, 0x47, 0x7f, 0x8e, 0x3f, 0x5c, 0x20, 0xd4, 0x67, 0x21, 0x3d, 0xa6, 0xc3, + 0x7f, 0x91, 0x43, 0x99, 0xbe, 0x5a, 0x81, 0x5c, 0xa8, 0x60, 0xc7, 0xc3, 0x7f, 0x89, 0xc3, 0xc3, + 0x28, 0x62, 0x3a, 0x2f, 0xd8, 0xf1, 0x04, 0xbf, 0x2c, 0x4c, 0xe7, 0x08, 0xe2, 0x36, 0x51, 0xab, + 0xe3, 0xd1, 0xbf, 0x22, 0xbc, 0x2e, 0x20, 0xea, 0xf3, 0x90, 0x0d, 0xf2, 0x6f, 0x3c, 0xfe, 0x57, + 0x39, 0xbe, 0x8f, 0x21, 0x1e, 0x08, 0xe5, 0xff, 0x78, 0x8a, 0x5f, 0x13, 0x1e, 0x08, 0xa1, 0xc8, + 0x31, 0x1a, 0xac, 0xe9, 0xf1, 0x4c, 0xbf, 0x2e, 0x8e, 0xd1, 0x40, 0x49, 0x27, 0xbb, 0x49, 0xd3, + 0x60, 0x3c, 0xc5, 0x6f, 0x88, 0xdd, 0xa4, 0xfa, 0xc4, 0x8c, 0xc1, 0x22, 0x19, 0xcf, 0xf1, 0x9b, + 0xc2, 0x8c, 0x81, 0x1a, 0xa9, 0xd6, 0x41, 0x19, 0x2e, 0x90, 0xf1, 0x7c, 0x9f, 0xe7, 0x7c, 0xb3, + 0x43, 0xf5, 0x51, 0x7d, 0x01, 0x4e, 0x8d, 0x2e, 0x8e, 0xf1, 0xac, 0x5f, 0x78, 0x6f, 0xe0, 0x75, + 0x26, 0x5c, 0x1b, 0xd5, 0x9d, 0x7e, 0x96, 0x0d, 0x17, 0xc6, 0x78, 0xda, 0x57, 0xde, 0x8b, 0x26, + 0xda, 0x70, 0x5d, 0x54, 0xcb, 0x00, 0xfd, 0x9a, 0x14, 0xcf, 0xf5, 0x2a, 0xe7, 0x0a, 0x81, 0xc8, + 0xd1, 0xe0, 0x25, 0x29, 0x1e, 0xff, 0x45, 0x71, 0x34, 0x38, 0x82, 0x1c, 0x0d, 0x51, 0x8d, 0xe2, + 0xd1, 0xaf, 0x89, 0xa3, 0x21, 0x20, 0xea, 0x35, 0xc8, 0xd8, 0x3d, 0xcb, 0x22, 0xb1, 0xa5, 0x1c, + 0xff, 0x6f, 0x44, 0xc5, 0x7f, 0x79, 0xc8, 0xc1, 0x02, 0xa0, 0x5e, 0x86, 0x34, 0xee, 0xec, 0xe1, + 0x66, 0x1c, 0xf2, 0x5f, 0x1f, 0x8a, 0x7c, 0x42, 0xb4, 0xd5, 0xe7, 0x01, 0xd8, 0xcb, 0x34, 0xfd, + 0x4a, 0x14, 0x83, 0xfd, 0xb7, 0x87, 0xfc, 0x3f, 0x14, 0xfa, 0x90, 0x3e, 0x01, 0xfb, 0x7f, 0x87, + 0xe3, 0x09, 0xde, 0x89, 0x12, 0xd0, 0x17, 0xf0, 0xe7, 0x60, 0xea, 0xb6, 0xe7, 0xd8, 0x3e, 0x6a, + 0xc7, 0xa1, 0xff, 0x9d, 0xa3, 0x85, 0x3e, 0x71, 0x58, 0xc7, 0x71, 0xb1, 0x8f, 0xda, 0x5e, 0x1c, + 0xf6, 0x3f, 0x38, 0x36, 0x00, 0x10, 0xb0, 0x81, 0x3c, 0x7f, 0x9c, 0x75, 0xff, 0xa7, 0x00, 0x0b, + 0x00, 0x31, 0x9a, 0xfc, 0xbe, 0x83, 0x0f, 0xe2, 0xb0, 0xef, 0x0a, 0xa3, 0xb9, 0xbe, 0xfa, 0x31, + 0xc8, 0x92, 0x9f, 0xec, 0xbf, 0x76, 0x62, 0xc0, 0xff, 0xc5, 0xc1, 0x7d, 0x04, 0x79, 0xb2, 0xe7, + 0x37, 0x7d, 0x33, 0xde, 0xd9, 0xff, 0xcd, 0x77, 0x5a, 0xe8, 0xab, 0x65, 0xc8, 0x79, 0x7e, 0xb3, + 0xd9, 0xe3, 0x1d, 0x4d, 0x0c, 0xfc, 0xfb, 0x0f, 0x83, 0x97, 0xdc, 0x00, 0xb3, 0x7a, 0x6e, 0xf4, + 0x65, 0x1d, 0xac, 0x3b, 0xeb, 0x0e, 0xbb, 0xa6, 0x83, 0xff, 0x4d, 0xc1, 0x4c, 0x60, 0xae, 0xb8, + 0x57, 0x0b, 0x04, 0x0b, 0x27, 0xbb, 0x91, 0x5b, 0xfa, 0xeb, 0x24, 0x64, 0x2a, 0xc8, 0xf3, 0xd1, + 0x3d, 0x74, 0xa0, 0x74, 0x61, 0x8e, 0xfc, 0xde, 0x44, 0x5d, 0x7a, 0xbf, 0xc3, 0x0f, 0x14, 0xbf, + 0xf1, 0xfc, 0xf0, 0x4a, 0xff, 0xa9, 0x02, 0xb1, 0x32, 0x42, 0x9d, 0x7e, 0x29, 0x5e, 0x95, 0xdf, + 0xf8, 0xc7, 0xb3, 0x13, 0x3f, 0xff, 0x4f, 0x67, 0x33, 0x9b, 0x07, 0x2f, 0x98, 0x96, 0xe7, 0xd8, + 0xda, 0x28, 0x6a, 0xe5, 0xb3, 0x12, 0x3c, 0x3a, 0x42, 0xbe, 0xc5, 0x4f, 0x1d, 0xff, 0x6e, 0x70, + 0x69, 0xcc, 0x47, 0x0b, 0x18, 0x33, 0x21, 0x1f, 0x79, 0xfc, 0x71, 0x8f, 0x59, 0xb8, 0x05, 0xc5, + 0xa3, 0x56, 0xa2, 0xc8, 0x90, 0xbc, 0x83, 0x0f, 0xf8, 0xff, 0x82, 0x92, 0x9f, 0xca, 0xf9, 0xfe, + 0xff, 0x92, 0x49, 0xcb, 0xb9, 0x8b, 0xb3, 0x21, 0xeb, 0xf8, 0xc3, 0xd8, 0xbc, 0x9a, 0xb8, 0x2a, + 0x2d, 0x20, 0x58, 0x8c, 0xb3, 0xf4, 0xff, 0xf9, 0x88, 0xa5, 0x12, 0x4c, 0x32, 0xa1, 0x32, 0x0f, + 0xe9, 0x9a, 0xed, 0x5f, 0xb9, 0x44, 0xa9, 0x92, 0x1a, 0x1b, 0xac, 0x6e, 0xbc, 0xf1, 0xa0, 0x34, + 0xf1, 0x9d, 0x07, 0xa5, 0x89, 0xbf, 0x7f, 0x50, 0x9a, 0x78, 0xf3, 0x41, 0x49, 0x7a, 0xfb, 0x41, + 0x49, 0x7a, 0xf7, 0x41, 0x49, 0xfa, 0xc1, 0x83, 0x92, 0x74, 0xff, 0xb0, 0x24, 0x7d, 0xf9, 0xb0, + 0x24, 0x7d, 0xed, 0xb0, 0x24, 0x7d, 0xf3, 0xb0, 0x24, 0x7d, 0xeb, 0xb0, 0x24, 0xbd, 0x71, 0x58, + 0x9a, 0xf8, 0xce, 0x61, 0x69, 0xe2, 0xcd, 0xc3, 0x92, 0xf4, 0xf6, 0x61, 0x69, 0xe2, 0xdd, 0xc3, + 0x92, 0xf4, 0x83, 0xc3, 0xd2, 0xc4, 0xfd, 0xef, 0x95, 0x26, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, + 0xb6, 0x10, 0x73, 0x40, 0xdc, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/combos/both/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/combos/both/castvalue.pb.go index ad161365b..2823b5914 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/combos/both/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/combos/both/castvalue.pb.go @@ -74,238 +74,245 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3682 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0xda, 0x98, 0xab, 0x55, - 0xec, 0x58, 0xb6, 0x13, 0x6d, 0xb0, 0xde, 0x5d, 0xaf, 0x67, 0x9b, 0x18, 0x14, 0x45, 0x2b, 0x5a, - 0xe8, 0x2f, 0x23, 0x29, 0xb6, 0x93, 0x87, 0xc1, 0xd5, 0xf0, 0x92, 0x9a, 0xdd, 0xe1, 0x0c, 0x3b, - 0x33, 0xdc, 0xb5, 0xfc, 0xb4, 0x81, 0xd3, 0x16, 0x6e, 0xd0, 0xff, 0x02, 0x4d, 0x1c, 0xc7, 0x4d, - 0x03, 0xb4, 0x4e, 0xd3, 0xbf, 0xa4, 0x3f, 0x69, 0xd0, 0xa7, 0xf4, 0x21, 0xad, 0x9f, 0x8a, 0xe4, - 0xad, 0x0f, 0x45, 0x9b, 0x55, 0x0d, 0xd4, 0x6d, 0xdd, 0xd6, 0x6d, 0x0c, 0x34, 0xc0, 0xbe, 0x14, - 0xf7, 0x6f, 0x38, 0x43, 0x52, 0x1a, 0x2a, 0x45, 0x7e, 0x9e, 0xc4, 0x7b, 0xee, 0xf9, 0xbe, 0x39, - 0xf7, 0xdc, 0x73, 0xcf, 0x39, 0x73, 0x47, 0xf0, 0xe9, 0xcb, 0x30, 0xdf, 0x72, 0xdd, 0x96, 0x4d, - 0x2e, 0x76, 0x3c, 0x37, 0x70, 0xf7, 0xbb, 0xcd, 0x8b, 0x0d, 0xe2, 0x9b, 0x9e, 0xd5, 0x09, 0x5c, - 0x6f, 0x89, 0xc9, 0xd0, 0x14, 0xd7, 0x58, 0x92, 0x1a, 0x0b, 0x1b, 0x30, 0xfd, 0xac, 0x65, 0x93, - 0x95, 0x50, 0x71, 0x87, 0x04, 0xe8, 0x1a, 0x64, 0x9a, 0x96, 0x4d, 0xca, 0xca, 0x7c, 0x7a, 0xb1, - 0x70, 0xe9, 0xe1, 0xa5, 0x3e, 0xd0, 0x52, 0x1c, 0xb1, 0x4d, 0xc5, 0x3a, 0x43, 0x2c, 0xbc, 0x95, - 0x81, 0x99, 0x21, 0xb3, 0x08, 0x41, 0xc6, 0xc1, 0x6d, 0xca, 0xa8, 0x2c, 0xe6, 0x75, 0xf6, 0x1b, - 0x95, 0x61, 0xa2, 0x83, 0xcd, 0x5b, 0xb8, 0x45, 0xca, 0x29, 0x26, 0x96, 0x43, 0x54, 0x01, 0x68, - 0x90, 0x0e, 0x71, 0x1a, 0xc4, 0x31, 0x0f, 0xcb, 0xe9, 0xf9, 0xf4, 0x62, 0x5e, 0x8f, 0x48, 0xd0, - 0x13, 0x30, 0xdd, 0xe9, 0xee, 0xdb, 0x96, 0x69, 0x44, 0xd4, 0x60, 0x3e, 0xbd, 0x98, 0xd5, 0x55, - 0x3e, 0xb1, 0xd2, 0x53, 0x7e, 0x14, 0xa6, 0xee, 0x10, 0x7c, 0x2b, 0xaa, 0x5a, 0x60, 0xaa, 0x25, - 0x2a, 0x8e, 0x28, 0xd6, 0xa0, 0xd8, 0x26, 0xbe, 0x8f, 0x5b, 0xc4, 0x08, 0x0e, 0x3b, 0xa4, 0x9c, - 0x61, 0xab, 0x9f, 0x1f, 0x58, 0x7d, 0xff, 0xca, 0x0b, 0x02, 0xb5, 0x7b, 0xd8, 0x21, 0xa8, 0x0a, - 0x79, 0xe2, 0x74, 0xdb, 0x9c, 0x21, 0x7b, 0x8c, 0xff, 0xea, 0x4e, 0xb7, 0xdd, 0xcf, 0x92, 0xa3, - 0x30, 0x41, 0x31, 0xe1, 0x13, 0xef, 0xb6, 0x65, 0x92, 0xf2, 0x38, 0x23, 0x78, 0x74, 0x80, 0x60, - 0x87, 0xcf, 0xf7, 0x73, 0x48, 0x1c, 0xaa, 0x41, 0x9e, 0xbc, 0x18, 0x10, 0xc7, 0xb7, 0x5c, 0xa7, - 0x3c, 0xc1, 0x48, 0x1e, 0x19, 0xb2, 0x8b, 0xc4, 0x6e, 0xf4, 0x53, 0xf4, 0x70, 0xe8, 0x2a, 0x4c, - 0xb8, 0x9d, 0xc0, 0x72, 0x1d, 0xbf, 0x9c, 0x9b, 0x57, 0x16, 0x0b, 0x97, 0xde, 0x37, 0x34, 0x10, - 0xb6, 0xb8, 0x8e, 0x2e, 0x95, 0xd1, 0x1a, 0xa8, 0xbe, 0xdb, 0xf5, 0x4c, 0x62, 0x98, 0x6e, 0x83, - 0x18, 0x96, 0xd3, 0x74, 0xcb, 0x79, 0x46, 0x70, 0x7e, 0x70, 0x21, 0x4c, 0xb1, 0xe6, 0x36, 0xc8, - 0x9a, 0xd3, 0x74, 0xf5, 0x92, 0x1f, 0x1b, 0xa3, 0x33, 0x30, 0xee, 0x1f, 0x3a, 0x01, 0x7e, 0xb1, - 0x5c, 0x64, 0x11, 0x22, 0x46, 0x0b, 0xff, 0x9b, 0x85, 0xa9, 0x51, 0x42, 0xec, 0x3a, 0x64, 0x9b, - 0x74, 0x95, 0xe5, 0xd4, 0x69, 0x7c, 0xc0, 0x31, 0x71, 0x27, 0x8e, 0xff, 0x90, 0x4e, 0xac, 0x42, - 0xc1, 0x21, 0x7e, 0x40, 0x1a, 0x3c, 0x22, 0xd2, 0x23, 0xc6, 0x14, 0x70, 0xd0, 0x60, 0x48, 0x65, - 0x7e, 0xa8, 0x90, 0x7a, 0x1e, 0xa6, 0x42, 0x93, 0x0c, 0x0f, 0x3b, 0x2d, 0x19, 0x9b, 0x17, 0x93, - 0x2c, 0x59, 0xaa, 0x4b, 0x9c, 0x4e, 0x61, 0x7a, 0x89, 0xc4, 0xc6, 0x68, 0x05, 0xc0, 0x75, 0x88, - 0xdb, 0x34, 0x1a, 0xc4, 0xb4, 0xcb, 0xb9, 0x63, 0xbc, 0xb4, 0x45, 0x55, 0x06, 0xbc, 0xe4, 0x72, - 0xa9, 0x69, 0xa3, 0xa7, 0x7b, 0xa1, 0x36, 0x71, 0x4c, 0xa4, 0x6c, 0xf0, 0x43, 0x36, 0x10, 0x6d, - 0x7b, 0x50, 0xf2, 0x08, 0x8d, 0x7b, 0xd2, 0x10, 0x2b, 0xcb, 0x33, 0x23, 0x96, 0x12, 0x57, 0xa6, - 0x0b, 0x18, 0x5f, 0xd8, 0xa4, 0x17, 0x1d, 0xa2, 0xf7, 0x43, 0x28, 0x30, 0x58, 0x58, 0x01, 0xcb, - 0x42, 0x45, 0x29, 0xdc, 0xc4, 0x6d, 0x32, 0x77, 0x0d, 0x4a, 0x71, 0xf7, 0xa0, 0x59, 0xc8, 0xfa, - 0x01, 0xf6, 0x02, 0x16, 0x85, 0x59, 0x9d, 0x0f, 0x90, 0x0a, 0x69, 0xe2, 0x34, 0x58, 0x96, 0xcb, - 0xea, 0xf4, 0xe7, 0xdc, 0x53, 0x30, 0x19, 0x7b, 0xfc, 0xa8, 0xc0, 0x85, 0xcf, 0x8d, 0xc3, 0xec, - 0xb0, 0x98, 0x1b, 0x1a, 0xfe, 0x67, 0x60, 0xdc, 0xe9, 0xb6, 0xf7, 0x89, 0x57, 0x4e, 0x33, 0x06, - 0x31, 0x42, 0x55, 0xc8, 0xda, 0x78, 0x9f, 0xd8, 0xe5, 0xcc, 0xbc, 0xb2, 0x58, 0xba, 0xf4, 0xc4, - 0x48, 0x51, 0xbd, 0xb4, 0x4e, 0x21, 0x3a, 0x47, 0xa2, 0x8f, 0x42, 0x46, 0xa4, 0x38, 0xca, 0xf0, - 0xf8, 0x68, 0x0c, 0x34, 0x16, 0x75, 0x86, 0x43, 0xe7, 0x20, 0x4f, 0xff, 0x72, 0xdf, 0x8e, 0x33, - 0x9b, 0x73, 0x54, 0x40, 0xfd, 0x8a, 0xe6, 0x20, 0xc7, 0xc2, 0xac, 0x41, 0x64, 0x69, 0x08, 0xc7, - 0x74, 0x63, 0x1a, 0xa4, 0x89, 0xbb, 0x76, 0x60, 0xdc, 0xc6, 0x76, 0x97, 0xb0, 0x80, 0xc9, 0xeb, - 0x45, 0x21, 0xfc, 0x04, 0x95, 0xa1, 0xf3, 0x50, 0xe0, 0x51, 0x69, 0x39, 0x0d, 0xf2, 0x22, 0xcb, - 0x3e, 0x59, 0x9d, 0x07, 0xea, 0x1a, 0x95, 0xd0, 0xc7, 0xdf, 0xf4, 0x5d, 0x47, 0x6e, 0x2d, 0x7b, - 0x04, 0x15, 0xb0, 0xc7, 0x3f, 0xd5, 0x9f, 0xf8, 0x1e, 0x1a, 0xbe, 0xbc, 0xfe, 0x58, 0x5c, 0xf8, - 0x46, 0x0a, 0x32, 0xec, 0xbc, 0x4d, 0x41, 0x61, 0xf7, 0x85, 0xed, 0xba, 0xb1, 0xb2, 0xb5, 0xb7, - 0xbc, 0x5e, 0x57, 0x15, 0x54, 0x02, 0x60, 0x82, 0x67, 0xd7, 0xb7, 0xaa, 0xbb, 0x6a, 0x2a, 0x1c, - 0xaf, 0x6d, 0xee, 0x5e, 0xbd, 0xac, 0xa6, 0x43, 0xc0, 0x1e, 0x17, 0x64, 0xa2, 0x0a, 0x4f, 0x5e, - 0x52, 0xb3, 0x48, 0x85, 0x22, 0x27, 0x58, 0x7b, 0xbe, 0xbe, 0x72, 0xf5, 0xb2, 0x3a, 0x1e, 0x97, - 0x3c, 0x79, 0x49, 0x9d, 0x40, 0x93, 0x90, 0x67, 0x92, 0xe5, 0xad, 0xad, 0x75, 0x35, 0x17, 0x72, - 0xee, 0xec, 0xea, 0x6b, 0x9b, 0xab, 0x6a, 0x3e, 0xe4, 0x5c, 0xd5, 0xb7, 0xf6, 0xb6, 0x55, 0x08, - 0x19, 0x36, 0xea, 0x3b, 0x3b, 0xd5, 0xd5, 0xba, 0x5a, 0x08, 0x35, 0x96, 0x5f, 0xd8, 0xad, 0xef, - 0xa8, 0xc5, 0x98, 0x59, 0x4f, 0x5e, 0x52, 0x27, 0xc3, 0x47, 0xd4, 0x37, 0xf7, 0x36, 0xd4, 0x12, - 0x9a, 0x86, 0x49, 0xfe, 0x08, 0x69, 0xc4, 0x54, 0x9f, 0xe8, 0xea, 0x65, 0x55, 0xed, 0x19, 0xc2, - 0x59, 0xa6, 0x63, 0x82, 0xab, 0x97, 0x55, 0xb4, 0x50, 0x83, 0x2c, 0x8b, 0x2e, 0x84, 0xa0, 0xb4, - 0x5e, 0x5d, 0xae, 0xaf, 0x1b, 0x5b, 0xdb, 0xbb, 0x6b, 0x5b, 0x9b, 0xd5, 0x75, 0x55, 0xe9, 0xc9, - 0xf4, 0xfa, 0xc7, 0xf7, 0xd6, 0xf4, 0xfa, 0x8a, 0x9a, 0x8a, 0xca, 0xb6, 0xeb, 0xd5, 0xdd, 0xfa, - 0x8a, 0x9a, 0x5e, 0x30, 0x61, 0x76, 0x58, 0x9e, 0x19, 0x7a, 0x32, 0x22, 0x5b, 0x9c, 0x3a, 0x66, - 0x8b, 0x19, 0xd7, 0xc0, 0x16, 0x7f, 0x59, 0x81, 0x99, 0x21, 0xb9, 0x76, 0xe8, 0x43, 0x9e, 0x81, - 0x2c, 0x0f, 0x51, 0x5e, 0x7d, 0x1e, 0x1b, 0x9a, 0xb4, 0x59, 0xc0, 0x0e, 0x54, 0x20, 0x86, 0x8b, - 0x56, 0xe0, 0xf4, 0x31, 0x15, 0x98, 0x52, 0x0c, 0x18, 0xf9, 0xb2, 0x02, 0xe5, 0xe3, 0xb8, 0x13, - 0x12, 0x45, 0x2a, 0x96, 0x28, 0xae, 0xf7, 0x1b, 0x70, 0xe1, 0xf8, 0x35, 0x0c, 0x58, 0xf1, 0x86, - 0x02, 0x67, 0x86, 0x37, 0x2a, 0x43, 0x6d, 0xf8, 0x28, 0x8c, 0xb7, 0x49, 0x70, 0xe0, 0xca, 0x62, - 0xfd, 0x81, 0x21, 0x25, 0x80, 0x4e, 0xf7, 0xfb, 0x4a, 0xa0, 0xa2, 0x35, 0x24, 0x7d, 0x5c, 0xb7, - 0xc1, 0xad, 0x19, 0xb0, 0xf4, 0x95, 0x14, 0x3c, 0x30, 0x94, 0x7c, 0xa8, 0xa1, 0x0f, 0x01, 0x58, - 0x4e, 0xa7, 0x1b, 0xf0, 0x82, 0xcc, 0xf3, 0x53, 0x9e, 0x49, 0xd8, 0xd9, 0xa7, 0xb9, 0xa7, 0x1b, - 0x84, 0xf3, 0x69, 0x36, 0x0f, 0x5c, 0xc4, 0x14, 0xae, 0xf5, 0x0c, 0xcd, 0x30, 0x43, 0x2b, 0xc7, - 0xac, 0x74, 0xa0, 0xd6, 0x7d, 0x18, 0x54, 0xd3, 0xb6, 0x88, 0x13, 0x18, 0x7e, 0xe0, 0x11, 0xdc, - 0xb6, 0x9c, 0x16, 0x4b, 0xc0, 0x39, 0x2d, 0xdb, 0xc4, 0xb6, 0x4f, 0xf4, 0x29, 0x3e, 0xbd, 0x23, - 0x67, 0x29, 0x82, 0x55, 0x19, 0x2f, 0x82, 0x18, 0x8f, 0x21, 0xf8, 0x74, 0x88, 0x58, 0xf8, 0xec, - 0x04, 0x14, 0x22, 0x6d, 0x1d, 0xba, 0x00, 0xc5, 0x9b, 0xf8, 0x36, 0x36, 0x64, 0xab, 0xce, 0x3d, - 0x51, 0xa0, 0xb2, 0x6d, 0xd1, 0xae, 0x7f, 0x18, 0x66, 0x99, 0x8a, 0xdb, 0x0d, 0x88, 0x67, 0x98, - 0x36, 0xf6, 0x7d, 0xe6, 0xb4, 0x1c, 0x53, 0x45, 0x74, 0x6e, 0x8b, 0x4e, 0xd5, 0xe4, 0x0c, 0xba, - 0x02, 0x33, 0x0c, 0xd1, 0xee, 0xda, 0x81, 0xd5, 0xb1, 0x89, 0x41, 0x5f, 0x1e, 0x7c, 0x96, 0x88, - 0x43, 0xcb, 0xa6, 0xa9, 0xc6, 0x86, 0x50, 0xa0, 0x16, 0xf9, 0x68, 0x15, 0x1e, 0x62, 0xb0, 0x16, - 0x71, 0x88, 0x87, 0x03, 0x62, 0x90, 0x9f, 0xed, 0x62, 0xdb, 0x37, 0xb0, 0xd3, 0x30, 0x0e, 0xb0, - 0x7f, 0x50, 0x9e, 0x8d, 0x12, 0x9c, 0xa5, 0xba, 0xab, 0x42, 0xb5, 0xce, 0x34, 0xab, 0x4e, 0xe3, - 0x63, 0xd8, 0x3f, 0x40, 0x1a, 0x9c, 0x61, 0x44, 0x7e, 0xe0, 0x59, 0x4e, 0xcb, 0x30, 0x0f, 0x88, - 0x79, 0xcb, 0xe8, 0x06, 0xcd, 0x6b, 0xe5, 0x73, 0x51, 0x06, 0x66, 0xe4, 0x0e, 0xd3, 0xa9, 0x51, - 0x95, 0xbd, 0xa0, 0x79, 0x0d, 0xed, 0x40, 0x91, 0xee, 0x47, 0xdb, 0x7a, 0x89, 0x18, 0x4d, 0xd7, - 0x63, 0xc5, 0xa5, 0x34, 0xe4, 0x70, 0x47, 0x9c, 0xb8, 0xb4, 0x25, 0x00, 0x1b, 0x6e, 0x83, 0x68, - 0xd9, 0x9d, 0xed, 0x7a, 0x7d, 0x45, 0x2f, 0x48, 0x96, 0x67, 0x5d, 0x8f, 0xc6, 0x54, 0xcb, 0x0d, - 0x7d, 0x5c, 0xe0, 0x31, 0xd5, 0x72, 0xa5, 0x87, 0xaf, 0xc0, 0x8c, 0x69, 0xf2, 0x65, 0x5b, 0xa6, - 0x21, 0xba, 0x7c, 0xbf, 0xac, 0xc6, 0xfc, 0x65, 0x9a, 0xab, 0x5c, 0x41, 0x84, 0xb9, 0x8f, 0x9e, - 0x86, 0x07, 0x7a, 0xfe, 0x8a, 0x02, 0xa7, 0x07, 0x56, 0xd9, 0x0f, 0xbd, 0x02, 0x33, 0x9d, 0xc3, - 0x41, 0x20, 0x8a, 0x3d, 0xb1, 0x73, 0xd8, 0x0f, 0x7b, 0x84, 0xbd, 0xb9, 0x79, 0xc4, 0xc4, 0x01, - 0x69, 0x94, 0x1f, 0x8c, 0x6a, 0x47, 0x26, 0xd0, 0x45, 0x50, 0x4d, 0xd3, 0x20, 0x0e, 0xde, 0xb7, - 0x89, 0x81, 0x3d, 0xe2, 0x60, 0xbf, 0x7c, 0x3e, 0xaa, 0x5c, 0x32, 0xcd, 0x3a, 0x9b, 0xad, 0xb2, - 0x49, 0xf4, 0x38, 0x4c, 0xbb, 0xfb, 0x37, 0x4d, 0x1e, 0x5c, 0x46, 0xc7, 0x23, 0x4d, 0xeb, 0xc5, - 0xf2, 0xc3, 0xcc, 0x4d, 0x53, 0x74, 0x82, 0x85, 0xd6, 0x36, 0x13, 0xa3, 0xc7, 0x40, 0x35, 0xfd, - 0x03, 0xec, 0x75, 0x58, 0x75, 0xf7, 0x3b, 0xd8, 0x24, 0xe5, 0x47, 0xb8, 0x2a, 0x97, 0x6f, 0x4a, - 0x31, 0x7a, 0x1e, 0x66, 0xbb, 0x8e, 0xe5, 0x04, 0xc4, 0xeb, 0x78, 0x84, 0x36, 0xe9, 0xfc, 0xa4, - 0x95, 0xff, 0x65, 0xe2, 0x98, 0x36, 0x7b, 0x2f, 0xaa, 0xcd, 0x77, 0x57, 0x9f, 0xe9, 0x0e, 0x0a, - 0x17, 0x34, 0x28, 0x46, 0x37, 0x1d, 0xe5, 0x81, 0x6f, 0xbb, 0xaa, 0xd0, 0x1a, 0x5a, 0xdb, 0x5a, - 0xa1, 0xd5, 0xef, 0x93, 0x75, 0x35, 0x45, 0xab, 0xf0, 0xfa, 0xda, 0x6e, 0xdd, 0xd0, 0xf7, 0x36, - 0x77, 0xd7, 0x36, 0xea, 0x6a, 0xfa, 0xf1, 0x7c, 0xee, 0xed, 0x09, 0xf5, 0xee, 0xdd, 0xbb, 0x77, - 0x53, 0x0b, 0xdf, 0x4e, 0x41, 0x29, 0xde, 0xf9, 0xa2, 0x9f, 0x81, 0x07, 0xe5, 0x6b, 0xaa, 0x4f, - 0x02, 0xe3, 0x8e, 0xe5, 0xb1, 0x38, 0x6c, 0x63, 0xde, 0x3b, 0x86, 0x2e, 0x9c, 0x15, 0x5a, 0x3b, - 0x24, 0x78, 0xce, 0xf2, 0x68, 0x94, 0xb5, 0x71, 0x80, 0xd6, 0xe1, 0xbc, 0xe3, 0x1a, 0x7e, 0x80, - 0x9d, 0x06, 0xf6, 0x1a, 0x46, 0xef, 0x82, 0xc0, 0xc0, 0xa6, 0x49, 0x7c, 0xdf, 0xe5, 0x25, 0x20, - 0x64, 0x79, 0x9f, 0xe3, 0xee, 0x08, 0xe5, 0x5e, 0x6e, 0xac, 0x0a, 0xd5, 0xbe, 0xed, 0x4e, 0x1f, - 0xb7, 0xdd, 0xe7, 0x20, 0xdf, 0xc6, 0x1d, 0x83, 0x38, 0x81, 0x77, 0xc8, 0xfa, 0xb5, 0x9c, 0x9e, - 0x6b, 0xe3, 0x4e, 0x9d, 0x8e, 0x7f, 0x74, 0x7b, 0x10, 0xf5, 0xe3, 0x3f, 0xa4, 0xa1, 0x18, 0xed, - 0xd9, 0x68, 0x0b, 0x6c, 0xb2, 0xfc, 0xac, 0xb0, 0xe3, 0xfb, 0xfe, 0x13, 0x3b, 0xbc, 0xa5, 0x1a, - 0x4d, 0xdc, 0xda, 0x38, 0xef, 0xa4, 0x74, 0x8e, 0xa4, 0x45, 0x93, 0x1e, 0x58, 0xc2, 0xfb, 0xf3, - 0x9c, 0x2e, 0x46, 0x68, 0x15, 0xc6, 0x6f, 0xfa, 0x8c, 0x7b, 0x9c, 0x71, 0x3f, 0x7c, 0x32, 0xf7, - 0x8d, 0x1d, 0x46, 0x9e, 0xbf, 0xb1, 0x63, 0x6c, 0x6e, 0xe9, 0x1b, 0xd5, 0x75, 0x5d, 0xc0, 0xd1, - 0x59, 0xc8, 0xd8, 0xf8, 0xa5, 0xc3, 0x78, 0x8a, 0x67, 0xa2, 0x51, 0x1d, 0x7f, 0x16, 0x32, 0x77, - 0x08, 0xbe, 0x15, 0x4f, 0xac, 0x4c, 0xf4, 0x23, 0x0c, 0xfd, 0x8b, 0x90, 0x65, 0xfe, 0x42, 0x00, - 0xc2, 0x63, 0xea, 0x18, 0xca, 0x41, 0xa6, 0xb6, 0xa5, 0xd3, 0xf0, 0x57, 0xa1, 0xc8, 0xa5, 0xc6, - 0xf6, 0x5a, 0xbd, 0x56, 0x57, 0x53, 0x0b, 0x57, 0x60, 0x9c, 0x3b, 0x81, 0x1e, 0x8d, 0xd0, 0x0d, - 0xea, 0x98, 0x18, 0x0a, 0x0e, 0x45, 0xce, 0xee, 0x6d, 0x2c, 0xd7, 0x75, 0x35, 0x15, 0xdd, 0x5e, - 0x1f, 0x8a, 0xd1, 0x76, 0xed, 0xc7, 0x13, 0x53, 0x7f, 0xa5, 0x40, 0x21, 0xd2, 0x7e, 0xd1, 0xc2, - 0x8f, 0x6d, 0xdb, 0xbd, 0x63, 0x60, 0xdb, 0xc2, 0xbe, 0x08, 0x0a, 0x60, 0xa2, 0x2a, 0x95, 0x8c, - 0xba, 0x69, 0x3f, 0x16, 0xe3, 0x5f, 0x57, 0x40, 0xed, 0x6f, 0xdd, 0xfa, 0x0c, 0x54, 0x7e, 0xa2, - 0x06, 0xbe, 0xa6, 0x40, 0x29, 0xde, 0xaf, 0xf5, 0x99, 0x77, 0xe1, 0x27, 0x6a, 0xde, 0x17, 0x14, - 0x98, 0x8c, 0x75, 0x69, 0x3f, 0x55, 0xd6, 0xbd, 0x9a, 0x86, 0x99, 0x21, 0x38, 0x54, 0x15, 0xed, - 0x2c, 0xef, 0xb0, 0x3f, 0x34, 0xca, 0xb3, 0x96, 0x68, 0xb5, 0xdc, 0xc6, 0x5e, 0x20, 0xba, 0xdf, - 0xc7, 0x40, 0xb5, 0x1a, 0xc4, 0x09, 0xac, 0xa6, 0x45, 0x3c, 0xf1, 0x0a, 0xce, 0x7b, 0xdc, 0xa9, - 0x9e, 0x9c, 0xbf, 0x85, 0x7f, 0x10, 0x50, 0xc7, 0xf5, 0xad, 0xc0, 0xba, 0x4d, 0x0c, 0xcb, 0x91, - 0xef, 0xeb, 0xb4, 0xe7, 0xcd, 0xe8, 0xaa, 0x9c, 0x59, 0x73, 0x82, 0x50, 0xdb, 0x21, 0x2d, 0xdc, - 0xa7, 0x4d, 0x73, 0x5f, 0x5a, 0x57, 0xe5, 0x4c, 0xa8, 0x7d, 0x01, 0x8a, 0x0d, 0xb7, 0x4b, 0xdb, - 0x07, 0xae, 0x47, 0x53, 0xad, 0xa2, 0x17, 0xb8, 0x2c, 0x54, 0x11, 0xfd, 0x5d, 0xef, 0xa2, 0xa0, - 0xa8, 0x17, 0xb8, 0x8c, 0xab, 0x3c, 0x0a, 0x53, 0xb8, 0xd5, 0xf2, 0x28, 0xb9, 0x24, 0xe2, 0x4d, - 0x6b, 0x29, 0x14, 0x33, 0xc5, 0xb9, 0x1b, 0x90, 0x93, 0x7e, 0xa0, 0xd5, 0x8c, 0x7a, 0xc2, 0xe8, - 0xf0, 0xeb, 0x9a, 0xd4, 0x62, 0x5e, 0xcf, 0x39, 0x72, 0xf2, 0x02, 0x14, 0x2d, 0xdf, 0xe8, 0xdd, - 0x1b, 0xa6, 0xe6, 0x53, 0x8b, 0x39, 0xbd, 0x60, 0xf9, 0xe1, 0x45, 0xd1, 0xc2, 0x1b, 0x29, 0x28, - 0xc5, 0xef, 0x3d, 0xd1, 0x0a, 0xe4, 0x6c, 0xd7, 0xc4, 0x2c, 0x10, 0xf8, 0xa5, 0xfb, 0x62, 0xc2, - 0x55, 0xe9, 0xd2, 0xba, 0xd0, 0xd7, 0x43, 0xe4, 0xdc, 0xdf, 0x29, 0x90, 0x93, 0x62, 0x74, 0x06, - 0x32, 0x1d, 0x1c, 0x1c, 0x30, 0xba, 0xec, 0x72, 0x4a, 0x55, 0x74, 0x36, 0xa6, 0x72, 0xbf, 0x83, - 0x1d, 0x16, 0x02, 0x42, 0x4e, 0xc7, 0x74, 0x5f, 0x6d, 0x82, 0x1b, 0xac, 0x1d, 0x76, 0xdb, 0x6d, - 0xe2, 0x04, 0xbe, 0xdc, 0x57, 0x21, 0xaf, 0x09, 0x31, 0x7a, 0x02, 0xa6, 0x03, 0x0f, 0x5b, 0x76, - 0x4c, 0x37, 0xc3, 0x74, 0x55, 0x39, 0x11, 0x2a, 0x6b, 0x70, 0x56, 0xf2, 0x36, 0x48, 0x80, 0xcd, - 0x03, 0xd2, 0xe8, 0x81, 0xc6, 0xd9, 0xa5, 0xda, 0x83, 0x42, 0x61, 0x45, 0xcc, 0x4b, 0xec, 0xc2, - 0x77, 0x15, 0x98, 0x96, 0x0d, 0x7c, 0x23, 0x74, 0xd6, 0x06, 0x00, 0x76, 0x1c, 0x37, 0x88, 0xba, - 0x6b, 0x30, 0x94, 0x07, 0x70, 0x4b, 0xd5, 0x10, 0xa4, 0x47, 0x08, 0xe6, 0xda, 0x00, 0xbd, 0x99, - 0x63, 0xdd, 0x76, 0x1e, 0x0a, 0xe2, 0x52, 0x9b, 0x7d, 0x19, 0xe1, 0x6f, 0x7d, 0xc0, 0x45, 0xb4, - 0xd3, 0x47, 0xb3, 0x90, 0xdd, 0x27, 0x2d, 0xcb, 0x11, 0x57, 0x6d, 0x7c, 0x20, 0x2f, 0xf0, 0x32, - 0xe1, 0x05, 0xde, 0xf2, 0xa7, 0x60, 0xc6, 0x74, 0xdb, 0xfd, 0xe6, 0x2e, 0xab, 0x7d, 0x6f, 0x9e, - 0xfe, 0xc7, 0x94, 0x4f, 0x42, 0xaf, 0x3b, 0xfb, 0x92, 0xa2, 0x7c, 0x39, 0x95, 0x5e, 0xdd, 0x5e, - 0xfe, 0x6a, 0x6a, 0x6e, 0x95, 0x43, 0xb7, 0xe5, 0x4a, 0x75, 0xd2, 0xb4, 0x89, 0x49, 0xad, 0x87, - 0xef, 0x7f, 0x00, 0x3e, 0xd4, 0xb2, 0x82, 0x83, 0xee, 0xfe, 0x92, 0xe9, 0xb6, 0x2f, 0xb6, 0xdc, - 0x96, 0xdb, 0xfb, 0x18, 0x44, 0x47, 0x6c, 0xc0, 0x7e, 0x89, 0x0f, 0x42, 0xf9, 0x50, 0x3a, 0x97, - 0xf8, 0xf5, 0x48, 0xdb, 0x84, 0x19, 0xa1, 0x6c, 0xb0, 0x1b, 0x69, 0xde, 0x87, 0xa3, 0x13, 0x6f, - 0x25, 0xca, 0x5f, 0x7f, 0x8b, 0x55, 0x3a, 0x7d, 0x5a, 0x40, 0xe9, 0x1c, 0xef, 0xd4, 0x35, 0x1d, - 0x1e, 0x88, 0xf1, 0xf1, 0xa3, 0x49, 0xbc, 0x04, 0xc6, 0x6f, 0x0b, 0xc6, 0x99, 0x08, 0xe3, 0x8e, - 0x80, 0x6a, 0x35, 0x98, 0x3c, 0x0d, 0xd7, 0xdf, 0x08, 0xae, 0x22, 0x89, 0x92, 0xac, 0xc2, 0x14, - 0x23, 0x31, 0xbb, 0x7e, 0xe0, 0xb6, 0x59, 0xde, 0x3b, 0x99, 0xe6, 0x6f, 0xdf, 0xe2, 0x67, 0xa5, - 0x44, 0x61, 0xb5, 0x10, 0xa5, 0x69, 0xc0, 0x2e, 0xe1, 0x1b, 0xc4, 0xb4, 0x13, 0x18, 0xde, 0x14, - 0x86, 0x84, 0xfa, 0xda, 0x27, 0x60, 0x96, 0xfe, 0x66, 0x69, 0x29, 0x6a, 0x49, 0xf2, 0x1d, 0x4c, - 0xf9, 0xbb, 0x2f, 0xf3, 0xe3, 0x38, 0x13, 0x12, 0x44, 0x6c, 0x8a, 0xec, 0x62, 0x8b, 0x04, 0x01, - 0xf1, 0x7c, 0x03, 0xdb, 0xc3, 0xcc, 0x8b, 0xbc, 0xc1, 0x96, 0x3f, 0xff, 0x4e, 0x7c, 0x17, 0x57, - 0x39, 0xb2, 0x6a, 0xdb, 0xda, 0x1e, 0x3c, 0x38, 0x24, 0x2a, 0x46, 0xe0, 0x7c, 0x55, 0x70, 0xce, - 0x0e, 0x44, 0x06, 0xa5, 0xdd, 0x06, 0x29, 0x0f, 0xf7, 0x72, 0x04, 0xce, 0x2f, 0x08, 0x4e, 0x24, - 0xb0, 0x72, 0x4b, 0x29, 0xe3, 0x0d, 0x98, 0xbe, 0x4d, 0xbc, 0x7d, 0xd7, 0x17, 0x17, 0x07, 0x23, - 0xd0, 0xbd, 0x26, 0xe8, 0xa6, 0x04, 0x90, 0x5d, 0x23, 0x50, 0xae, 0xa7, 0x21, 0xd7, 0xc4, 0x26, - 0x19, 0x81, 0xe2, 0x8b, 0x82, 0x62, 0x82, 0xea, 0x53, 0x68, 0x15, 0x8a, 0x2d, 0x57, 0x54, 0xa6, - 0x64, 0xf8, 0xeb, 0x02, 0x5e, 0x90, 0x18, 0x41, 0xd1, 0x71, 0x3b, 0x5d, 0x9b, 0x96, 0xad, 0x64, - 0x8a, 0xdf, 0x96, 0x14, 0x12, 0x23, 0x28, 0x4e, 0xe1, 0xd6, 0x2f, 0x49, 0x0a, 0x3f, 0xe2, 0xcf, - 0x67, 0xa0, 0xe0, 0x3a, 0xf6, 0xa1, 0xeb, 0x8c, 0x62, 0xc4, 0xef, 0x08, 0x06, 0x10, 0x10, 0x4a, - 0x70, 0x1d, 0xf2, 0xa3, 0x6e, 0xc4, 0xef, 0xbe, 0x23, 0x8f, 0x87, 0xdc, 0x81, 0x55, 0x98, 0x92, - 0x09, 0xca, 0x72, 0x9d, 0x11, 0x28, 0x7e, 0x4f, 0x50, 0x94, 0x22, 0x30, 0xb1, 0x8c, 0x80, 0xf8, - 0x41, 0x8b, 0x8c, 0x42, 0xf2, 0x86, 0x5c, 0x86, 0x80, 0x08, 0x57, 0xee, 0x13, 0xc7, 0x3c, 0x18, - 0x8d, 0xe1, 0x2b, 0xd2, 0x95, 0x12, 0x43, 0x29, 0x6a, 0x30, 0xd9, 0xc6, 0x9e, 0x7f, 0x80, 0xed, - 0x91, 0xb6, 0xe3, 0xf7, 0x05, 0x47, 0x31, 0x04, 0x09, 0x8f, 0x74, 0x9d, 0xd3, 0xd0, 0x7c, 0x55, - 0x7a, 0x24, 0x02, 0x13, 0x47, 0xcf, 0x0f, 0xd8, 0xdd, 0xcc, 0x69, 0xd8, 0xfe, 0x40, 0x1e, 0x3d, - 0x8e, 0xdd, 0x88, 0x32, 0x5e, 0x87, 0xbc, 0x6f, 0xbd, 0x34, 0x12, 0xcd, 0x1f, 0xca, 0x9d, 0x66, - 0x00, 0x0a, 0x7e, 0x01, 0xce, 0x0e, 0x2d, 0x13, 0x23, 0x90, 0xfd, 0x91, 0x20, 0x3b, 0x33, 0xa4, - 0x54, 0x88, 0x94, 0x70, 0x5a, 0xca, 0x3f, 0x96, 0x29, 0x81, 0xf4, 0x71, 0x6d, 0xd3, 0xce, 0xde, - 0xc7, 0xcd, 0xd3, 0x79, 0xed, 0x4f, 0xa4, 0xd7, 0x38, 0x36, 0xe6, 0xb5, 0x5d, 0x38, 0x23, 0x18, - 0x4f, 0xb7, 0xaf, 0x5f, 0x93, 0x89, 0x95, 0xa3, 0xf7, 0xe2, 0xbb, 0xfb, 0x29, 0x98, 0x0b, 0xdd, - 0x29, 0x9b, 0x52, 0xdf, 0x68, 0xe3, 0xce, 0x08, 0xcc, 0x5f, 0x17, 0xcc, 0x32, 0xe3, 0x87, 0x5d, - 0xad, 0xbf, 0x81, 0x3b, 0x94, 0xfc, 0x79, 0x28, 0x4b, 0xf2, 0xae, 0xe3, 0x11, 0xd3, 0x6d, 0x39, - 0xd6, 0x4b, 0xa4, 0x31, 0x02, 0xf5, 0x9f, 0xf6, 0x6d, 0xd5, 0x5e, 0x04, 0x4e, 0x99, 0xd7, 0x40, - 0x0d, 0x7b, 0x15, 0xc3, 0x6a, 0x77, 0x5c, 0x2f, 0x48, 0x60, 0xfc, 0x33, 0xb9, 0x53, 0x21, 0x6e, - 0x8d, 0xc1, 0xb4, 0x3a, 0x94, 0xd8, 0x70, 0xd4, 0x90, 0xfc, 0x73, 0x41, 0x34, 0xd9, 0x43, 0x89, - 0xc4, 0x61, 0xba, 0xed, 0x0e, 0xf6, 0x46, 0xc9, 0x7f, 0x7f, 0x21, 0x13, 0x87, 0x80, 0x88, 0xc4, - 0x11, 0x1c, 0x76, 0x08, 0xad, 0xf6, 0x23, 0x30, 0x7c, 0x43, 0x26, 0x0e, 0x89, 0x11, 0x14, 0xb2, - 0x61, 0x18, 0x81, 0xe2, 0x2f, 0x25, 0x85, 0xc4, 0x50, 0x8a, 0x8f, 0xf7, 0x0a, 0xad, 0x47, 0x5a, - 0x96, 0x1f, 0x78, 0xbc, 0x15, 0x3e, 0x99, 0xea, 0x9b, 0xef, 0xc4, 0x9b, 0x30, 0x3d, 0x02, 0xd5, - 0x6e, 0xc0, 0x54, 0x5f, 0x8b, 0x81, 0x92, 0xbe, 0xe8, 0x97, 0x3f, 0xfd, 0x9e, 0x48, 0x46, 0xf1, - 0x0e, 0x43, 0x5b, 0xa7, 0xfb, 0x1e, 0xef, 0x03, 0x92, 0xc9, 0x5e, 0x7e, 0x2f, 0xdc, 0xfa, 0x58, - 0x1b, 0xa0, 0x3d, 0x0b, 0x93, 0xb1, 0x1e, 0x20, 0x99, 0xea, 0x33, 0x82, 0xaa, 0x18, 0x6d, 0x01, - 0xb4, 0x2b, 0x90, 0xa1, 0xf5, 0x3c, 0x19, 0xfe, 0x73, 0x02, 0xce, 0xd4, 0xb5, 0x8f, 0x40, 0x4e, - 0xd6, 0xf1, 0x64, 0xe8, 0xcf, 0x0b, 0x68, 0x08, 0xa1, 0x70, 0x59, 0xc3, 0x93, 0xe1, 0xbf, 0x20, - 0xe1, 0x12, 0x42, 0xe1, 0xa3, 0xbb, 0xf0, 0x5b, 0x9f, 0xcd, 0x88, 0x3c, 0x2c, 0x7d, 0x77, 0x1d, - 0x26, 0x44, 0xf1, 0x4e, 0x46, 0xbf, 0x22, 0x1e, 0x2e, 0x11, 0xda, 0x53, 0x90, 0x1d, 0xd1, 0xe1, - 0xbf, 0x24, 0xa0, 0x5c, 0x5f, 0xab, 0x41, 0x21, 0x52, 0xb0, 0x93, 0xe1, 0xbf, 0x2c, 0xe0, 0x51, - 0x14, 0x35, 0x5d, 0x14, 0xec, 0x64, 0x82, 0x5f, 0x91, 0xa6, 0x0b, 0x04, 0x75, 0x9b, 0xac, 0xd5, - 0xc9, 0xe8, 0x5f, 0x95, 0x5e, 0x97, 0x10, 0xed, 0x19, 0xc8, 0x87, 0xf9, 0x37, 0x19, 0xff, 0x6b, - 0x02, 0xdf, 0xc3, 0x50, 0x0f, 0x44, 0xf2, 0x7f, 0x32, 0xc5, 0xaf, 0x4b, 0x0f, 0x44, 0x50, 0xf4, - 0x18, 0xf5, 0xd7, 0xf4, 0x64, 0xa6, 0xdf, 0x90, 0xc7, 0xa8, 0xaf, 0xa4, 0xd3, 0xdd, 0x64, 0x69, - 0x30, 0x99, 0xe2, 0x37, 0xe5, 0x6e, 0x32, 0x7d, 0x6a, 0x46, 0x7f, 0x91, 0x4c, 0xe6, 0xf8, 0x2d, - 0x69, 0x46, 0x5f, 0x8d, 0xd4, 0xb6, 0x01, 0x0d, 0x16, 0xc8, 0x64, 0xbe, 0xcf, 0x09, 0xbe, 0xe9, - 0x81, 0xfa, 0xa8, 0x3d, 0x07, 0x67, 0x86, 0x17, 0xc7, 0x64, 0xd6, 0xcf, 0xbf, 0xd7, 0xf7, 0x3a, - 0x13, 0xad, 0x8d, 0xda, 0x6e, 0x2f, 0xcb, 0x46, 0x0b, 0x63, 0x32, 0xed, 0xab, 0xef, 0xc5, 0x13, - 0x6d, 0xb4, 0x2e, 0x6a, 0x55, 0x80, 0x5e, 0x4d, 0x4a, 0xe6, 0x7a, 0x4d, 0x70, 0x45, 0x40, 0xf4, - 0x68, 0x88, 0x92, 0x94, 0x8c, 0xff, 0xa2, 0x3c, 0x1a, 0x02, 0x41, 0x8f, 0x86, 0xac, 0x46, 0xc9, - 0xe8, 0xd7, 0xe5, 0xd1, 0x90, 0x10, 0xed, 0x3a, 0xe4, 0x9c, 0xae, 0x6d, 0xd3, 0xd8, 0x42, 0x27, - 0xff, 0x93, 0x4d, 0xf9, 0x5f, 0xef, 0x0b, 0xb0, 0x04, 0x68, 0x57, 0x20, 0x4b, 0xda, 0xfb, 0xa4, - 0x91, 0x84, 0xfc, 0xb7, 0xfb, 0x32, 0x9f, 0x50, 0x6d, 0xed, 0x19, 0x00, 0xfe, 0x32, 0xcd, 0xbe, - 0xb1, 0x24, 0x60, 0xff, 0xfd, 0xbe, 0xf8, 0x7e, 0xdf, 0x83, 0xf4, 0x08, 0xf8, 0x7f, 0x03, 0x9c, - 0x4c, 0xf0, 0x4e, 0x9c, 0x80, 0xbd, 0x80, 0x3f, 0x0d, 0x13, 0x37, 0x7d, 0xd7, 0x09, 0x70, 0x2b, - 0x09, 0xfd, 0x1f, 0x02, 0x2d, 0xf5, 0xa9, 0xc3, 0xda, 0xae, 0x47, 0x02, 0xdc, 0xf2, 0x93, 0xb0, - 0xff, 0x29, 0xb0, 0x21, 0x80, 0x82, 0x4d, 0xec, 0x07, 0xa3, 0xac, 0xfb, 0xbf, 0x24, 0x58, 0x02, - 0xa8, 0xd1, 0xf4, 0xf7, 0x2d, 0x72, 0x98, 0x84, 0x7d, 0x57, 0x1a, 0x2d, 0xf4, 0xb5, 0x8f, 0x40, - 0x9e, 0xfe, 0xe4, 0xff, 0xd3, 0x92, 0x00, 0xfe, 0x6f, 0x01, 0xee, 0x21, 0xe8, 0x93, 0xfd, 0xa0, - 0x11, 0x58, 0xc9, 0xce, 0xfe, 0x1f, 0xb1, 0xd3, 0x52, 0x5f, 0xab, 0x42, 0xc1, 0x0f, 0x1a, 0x8d, - 0xae, 0xe8, 0x68, 0x12, 0xe0, 0xdf, 0xbf, 0x1f, 0xbe, 0xe4, 0x86, 0x98, 0xe5, 0x0b, 0xc3, 0xef, - 0xeb, 0x60, 0xd5, 0x5d, 0x75, 0xf9, 0x4d, 0x1d, 0xbc, 0x92, 0x85, 0x73, 0xa6, 0xdb, 0xde, 0x77, - 0xfd, 0x8b, 0xfb, 0x6e, 0x70, 0x70, 0x31, 0x34, 0x5d, 0xde, 0xb1, 0x85, 0x82, 0xb9, 0xd3, 0xdd, - 0xce, 0x2d, 0xfc, 0x75, 0x1a, 0x72, 0x35, 0xec, 0x07, 0xf8, 0x0e, 0x3e, 0x44, 0x1d, 0x98, 0xa1, - 0xbf, 0x37, 0x70, 0x87, 0xdd, 0xf5, 0x88, 0xc3, 0x25, 0x2e, 0x40, 0x3f, 0xb8, 0xd4, 0x7b, 0xaa, - 0x44, 0x2c, 0x0d, 0x51, 0x67, 0xdf, 0x5c, 0x97, 0xd5, 0x37, 0xff, 0xf1, 0xfc, 0xd8, 0x2f, 0xfe, - 0xd3, 0xf9, 0xdc, 0xc6, 0xe1, 0x73, 0x96, 0xed, 0xbb, 0x8e, 0x3e, 0x8c, 0x1a, 0x7d, 0x46, 0x81, - 0x73, 0x43, 0xe4, 0x9b, 0xe2, 0x04, 0x8a, 0xcf, 0x08, 0x97, 0x47, 0x7c, 0xb4, 0x84, 0x71, 0x13, - 0x8a, 0xb1, 0xc7, 0x9f, 0xf4, 0x98, 0xb9, 0x17, 0xa0, 0x7c, 0xdc, 0x4a, 0x90, 0x0a, 0xe9, 0x5b, - 0xe4, 0x50, 0xfc, 0xd7, 0x24, 0xfd, 0x89, 0x1e, 0xed, 0xfd, 0xd7, 0x95, 0xb2, 0x58, 0xb8, 0x34, - 0x1d, 0xb1, 0x4e, 0x3c, 0x8c, 0xcf, 0x6b, 0xa9, 0x6b, 0xca, 0x1c, 0x86, 0xf9, 0x24, 0x4b, 0xff, - 0x9f, 0x8f, 0x58, 0xa8, 0xc0, 0x38, 0x17, 0xa2, 0x59, 0xc8, 0xae, 0x39, 0xc1, 0xd5, 0xcb, 0x8c, - 0x2a, 0xad, 0xf3, 0xc1, 0xf2, 0xfa, 0x9b, 0xf7, 0x2a, 0x63, 0xdf, 0xb9, 0x57, 0x19, 0xfb, 0xfb, - 0x7b, 0x95, 0xb1, 0xef, 0xdd, 0xab, 0x28, 0x6f, 0xdf, 0xab, 0x28, 0xef, 0xde, 0xab, 0x28, 0x3f, - 0xb8, 0x57, 0x51, 0xee, 0x1e, 0x55, 0x94, 0xaf, 0x1c, 0x55, 0x94, 0xaf, 0x1d, 0x55, 0x94, 0x6f, - 0x1e, 0x55, 0x94, 0x6f, 0x1d, 0x55, 0x94, 0x37, 0x8f, 0x2a, 0xca, 0x77, 0x8e, 0x2a, 0xca, 0xf7, - 0x8e, 0x2a, 0xca, 0xdb, 0x47, 0x95, 0xb1, 0x77, 0x8f, 0x2a, 0xca, 0x0f, 0x8e, 0x2a, 0x63, 0x77, - 0xff, 0xb9, 0x32, 0xf6, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x60, 0x8d, 0x18, 0x90, 0x06, 0x30, - 0x00, 0x00, + // 3793 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x25, 0x88, 0x8a, 0x21, 0x8a, 0xb1, + 0x23, 0xda, 0x4e, 0xc8, 0x8c, 0x2c, 0xc9, 0x32, 0xd4, 0xc4, 0x03, 0x82, 0x10, 0x03, 0x95, 0x24, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0xc7, 0xed, 0xf4, 0xbf, 0x33, 0x4d, 0x5c, 0xc7, 0x6d, 0x33, + 0xd3, 0x3a, 0x4d, 0xfa, 0x93, 0xf4, 0x27, 0xcd, 0xf4, 0x29, 0x7d, 0x48, 0xeb, 0xa7, 0x4e, 0xf2, + 0xd6, 0x87, 0x4e, 0x6b, 0x31, 0x9e, 0xa9, 0xdb, 0xba, 0xad, 0xdb, 0x78, 0xa6, 0x99, 0xd1, 0x4b, + 0xe7, 0xfe, 0x2d, 0x76, 0x01, 0x90, 0x0b, 0x26, 0xe3, 0xf8, 0x89, 0xb8, 0xe7, 0x9e, 0xef, 0xdb, + 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0xb3, 0x77, 0x09, 0xdf, 0xbf, 0x0c, 0x8b, 0x6d, 0xdb, 0x6e, 0x9b, + 0x78, 0xb5, 0xeb, 0xd8, 0x9e, 0xbd, 0xd7, 0x6b, 0xad, 0x36, 0xb1, 0xab, 0x3b, 0x46, 0xd7, 0xb3, + 0x9d, 0x15, 0x2a, 0x53, 0x66, 0x98, 0xc6, 0x8a, 0xd0, 0x58, 0xda, 0x82, 0xd9, 0xeb, 0x86, 0x89, + 0xd7, 0x7d, 0xc5, 0x06, 0xf6, 0x94, 0xab, 0x90, 0x68, 0x19, 0x26, 0xce, 0x4b, 0x8b, 0xf1, 0xe5, + 0xcc, 0xc5, 0xc7, 0x56, 0x06, 0x40, 0x2b, 0x61, 0x44, 0x9d, 0x88, 0x55, 0x8a, 0x58, 0x7a, 0x2b, + 0x01, 0x73, 0x23, 0x66, 0x15, 0x05, 0x12, 0x16, 0xea, 0x10, 0x46, 0x69, 0x39, 0xad, 0xd2, 0xdf, + 0x4a, 0x1e, 0xa6, 0xba, 0x48, 0xbf, 0x83, 0xda, 0x38, 0x1f, 0xa3, 0x62, 0x31, 0x54, 0x0a, 0x00, + 0x4d, 0xdc, 0xc5, 0x56, 0x13, 0x5b, 0xfa, 0x41, 0x3e, 0xbe, 0x18, 0x5f, 0x4e, 0xab, 0x01, 0x89, + 0xf2, 0x14, 0xcc, 0x76, 0x7b, 0x7b, 0xa6, 0xa1, 0x6b, 0x01, 0x35, 0x58, 0x8c, 0x2f, 0x27, 0x55, + 0x99, 0x4d, 0xac, 0xf7, 0x95, 0x2f, 0xc0, 0xcc, 0x3d, 0x8c, 0xee, 0x04, 0x55, 0x33, 0x54, 0x35, + 0x47, 0xc4, 0x01, 0xc5, 0x32, 0x64, 0x3b, 0xd8, 0x75, 0x51, 0x1b, 0x6b, 0xde, 0x41, 0x17, 0xe7, + 0x13, 0x74, 0xf5, 0x8b, 0x43, 0xab, 0x1f, 0x5c, 0x79, 0x86, 0xa3, 0x76, 0x0e, 0xba, 0x58, 0x29, + 0x41, 0x1a, 0x5b, 0xbd, 0x0e, 0x63, 0x48, 0x1e, 0xe1, 0xbf, 0x8a, 0xd5, 0xeb, 0x0c, 0xb2, 0xa4, + 0x08, 0x8c, 0x53, 0x4c, 0xb9, 0xd8, 0xb9, 0x6b, 0xe8, 0x38, 0x3f, 0x49, 0x09, 0x2e, 0x0c, 0x11, + 0x34, 0xd8, 0xfc, 0x20, 0x87, 0xc0, 0x29, 0x65, 0x48, 0xe3, 0x17, 0x3c, 0x6c, 0xb9, 0x86, 0x6d, + 0xe5, 0xa7, 0x28, 0xc9, 0xe3, 0x23, 0x76, 0x11, 0x9b, 0xcd, 0x41, 0x8a, 0x3e, 0x4e, 0xb9, 0x02, + 0x53, 0x76, 0xd7, 0x33, 0x6c, 0xcb, 0xcd, 0xa7, 0x16, 0xa5, 0xe5, 0xcc, 0xc5, 0x0f, 0x8d, 0x0c, + 0x84, 0x1a, 0xd3, 0x51, 0x85, 0xb2, 0x52, 0x05, 0xd9, 0xb5, 0x7b, 0x8e, 0x8e, 0x35, 0xdd, 0x6e, + 0x62, 0xcd, 0xb0, 0x5a, 0x76, 0x3e, 0x4d, 0x09, 0xce, 0x0d, 0x2f, 0x84, 0x2a, 0x96, 0xed, 0x26, + 0xae, 0x5a, 0x2d, 0x5b, 0xcd, 0xb9, 0xa1, 0xb1, 0x72, 0x0a, 0x26, 0xdd, 0x03, 0xcb, 0x43, 0x2f, + 0xe4, 0xb3, 0x34, 0x42, 0xf8, 0x68, 0xe9, 0xff, 0x92, 0x30, 0x33, 0x4e, 0x88, 0x5d, 0x83, 0x64, + 0x8b, 0xac, 0x32, 0x1f, 0x3b, 0x89, 0x0f, 0x18, 0x26, 0xec, 0xc4, 0xc9, 0x1f, 0xd1, 0x89, 0x25, + 0xc8, 0x58, 0xd8, 0xf5, 0x70, 0x93, 0x45, 0x44, 0x7c, 0xcc, 0x98, 0x02, 0x06, 0x1a, 0x0e, 0xa9, + 0xc4, 0x8f, 0x14, 0x52, 0x37, 0x61, 0xc6, 0x37, 0x49, 0x73, 0x90, 0xd5, 0x16, 0xb1, 0xb9, 0x1a, + 0x65, 0xc9, 0x4a, 0x45, 0xe0, 0x54, 0x02, 0x53, 0x73, 0x38, 0x34, 0x56, 0xd6, 0x01, 0x6c, 0x0b, + 0xdb, 0x2d, 0xad, 0x89, 0x75, 0x33, 0x9f, 0x3a, 0xc2, 0x4b, 0x35, 0xa2, 0x32, 0xe4, 0x25, 0x9b, + 0x49, 0x75, 0x53, 0x79, 0xb6, 0x1f, 0x6a, 0x53, 0x47, 0x44, 0xca, 0x16, 0x3b, 0x64, 0x43, 0xd1, + 0xb6, 0x0b, 0x39, 0x07, 0x93, 0xb8, 0xc7, 0x4d, 0xbe, 0xb2, 0x34, 0x35, 0x62, 0x25, 0x72, 0x65, + 0x2a, 0x87, 0xb1, 0x85, 0x4d, 0x3b, 0xc1, 0xa1, 0xf2, 0x61, 0xf0, 0x05, 0x1a, 0x0d, 0x2b, 0xa0, + 0x59, 0x28, 0x2b, 0x84, 0xdb, 0xa8, 0x83, 0x17, 0xae, 0x42, 0x2e, 0xec, 0x1e, 0x65, 0x1e, 0x92, + 0xae, 0x87, 0x1c, 0x8f, 0x46, 0x61, 0x52, 0x65, 0x03, 0x45, 0x86, 0x38, 0xb6, 0x9a, 0x34, 0xcb, + 0x25, 0x55, 0xf2, 0x73, 0xe1, 0x19, 0x98, 0x0e, 0x3d, 0x7e, 0x5c, 0xe0, 0xd2, 0x17, 0x26, 0x61, + 0x7e, 0x54, 0xcc, 0x8d, 0x0c, 0xff, 0x53, 0x30, 0x69, 0xf5, 0x3a, 0x7b, 0xd8, 0xc9, 0xc7, 0x29, + 0x03, 0x1f, 0x29, 0x25, 0x48, 0x9a, 0x68, 0x0f, 0x9b, 0xf9, 0xc4, 0xa2, 0xb4, 0x9c, 0xbb, 0xf8, + 0xd4, 0x58, 0x51, 0xbd, 0xb2, 0x49, 0x20, 0x2a, 0x43, 0x2a, 0x9f, 0x84, 0x04, 0x4f, 0x71, 0x84, + 0xe1, 0xc9, 0xf1, 0x18, 0x48, 0x2c, 0xaa, 0x14, 0xa7, 0x9c, 0x85, 0x34, 0xf9, 0xcb, 0x7c, 0x3b, + 0x49, 0x6d, 0x4e, 0x11, 0x01, 0xf1, 0xab, 0xb2, 0x00, 0x29, 0x1a, 0x66, 0x4d, 0x2c, 0x4a, 0x83, + 0x3f, 0x26, 0x1b, 0xd3, 0xc4, 0x2d, 0xd4, 0x33, 0x3d, 0xed, 0x2e, 0x32, 0x7b, 0x98, 0x06, 0x4c, + 0x5a, 0xcd, 0x72, 0xe1, 0x67, 0x88, 0x4c, 0x39, 0x07, 0x19, 0x16, 0x95, 0x86, 0xd5, 0xc4, 0x2f, + 0xd0, 0xec, 0x93, 0x54, 0x59, 0xa0, 0x56, 0x89, 0x84, 0x3c, 0xfe, 0xb6, 0x6b, 0x5b, 0x62, 0x6b, + 0xe9, 0x23, 0x88, 0x80, 0x3e, 0xfe, 0x99, 0xc1, 0xc4, 0xf7, 0xe8, 0xe8, 0xe5, 0x0d, 0xc6, 0xe2, + 0xd2, 0x37, 0x63, 0x90, 0xa0, 0xe7, 0x6d, 0x06, 0x32, 0x3b, 0xb7, 0xea, 0x15, 0x6d, 0xbd, 0xb6, + 0xbb, 0xb6, 0x59, 0x91, 0x25, 0x25, 0x07, 0x40, 0x05, 0xd7, 0x37, 0x6b, 0xa5, 0x1d, 0x39, 0xe6, + 0x8f, 0xab, 0xdb, 0x3b, 0x57, 0x2e, 0xc9, 0x71, 0x1f, 0xb0, 0xcb, 0x04, 0x89, 0xa0, 0xc2, 0xd3, + 0x17, 0xe5, 0xa4, 0x22, 0x43, 0x96, 0x11, 0x54, 0x6f, 0x56, 0xd6, 0xaf, 0x5c, 0x92, 0x27, 0xc3, + 0x92, 0xa7, 0x2f, 0xca, 0x53, 0xca, 0x34, 0xa4, 0xa9, 0x64, 0xad, 0x56, 0xdb, 0x94, 0x53, 0x3e, + 0x67, 0x63, 0x47, 0xad, 0x6e, 0x6f, 0xc8, 0x69, 0x9f, 0x73, 0x43, 0xad, 0xed, 0xd6, 0x65, 0xf0, + 0x19, 0xb6, 0x2a, 0x8d, 0x46, 0x69, 0xa3, 0x22, 0x67, 0x7c, 0x8d, 0xb5, 0x5b, 0x3b, 0x95, 0x86, + 0x9c, 0x0d, 0x99, 0xf5, 0xf4, 0x45, 0x79, 0xda, 0x7f, 0x44, 0x65, 0x7b, 0x77, 0x4b, 0xce, 0x29, + 0xb3, 0x30, 0xcd, 0x1e, 0x21, 0x8c, 0x98, 0x19, 0x10, 0x5d, 0xb9, 0x24, 0xcb, 0x7d, 0x43, 0x18, + 0xcb, 0x6c, 0x48, 0x70, 0xe5, 0x92, 0xac, 0x2c, 0x95, 0x21, 0x49, 0xa3, 0x4b, 0x51, 0x20, 0xb7, + 0x59, 0x5a, 0xab, 0x6c, 0x6a, 0xb5, 0xfa, 0x4e, 0xb5, 0xb6, 0x5d, 0xda, 0x94, 0xa5, 0xbe, 0x4c, + 0xad, 0x7c, 0x7a, 0xb7, 0xaa, 0x56, 0xd6, 0xe5, 0x58, 0x50, 0x56, 0xaf, 0x94, 0x76, 0x2a, 0xeb, + 0x72, 0x7c, 0x49, 0x87, 0xf9, 0x51, 0x79, 0x66, 0xe4, 0xc9, 0x08, 0x6c, 0x71, 0xec, 0x88, 0x2d, + 0xa6, 0x5c, 0x43, 0x5b, 0xfc, 0x65, 0x09, 0xe6, 0x46, 0xe4, 0xda, 0x91, 0x0f, 0x79, 0x0e, 0x92, + 0x2c, 0x44, 0x59, 0xf5, 0x79, 0x62, 0x64, 0xd2, 0xa6, 0x01, 0x3b, 0x54, 0x81, 0x28, 0x2e, 0x58, + 0x81, 0xe3, 0x47, 0x54, 0x60, 0x42, 0x31, 0x64, 0xe4, 0x4b, 0x12, 0xe4, 0x8f, 0xe2, 0x8e, 0x48, + 0x14, 0xb1, 0x50, 0xa2, 0xb8, 0x36, 0x68, 0xc0, 0xf9, 0xa3, 0xd7, 0x30, 0x64, 0xc5, 0xeb, 0x12, + 0x9c, 0x1a, 0xdd, 0xa8, 0x8c, 0xb4, 0xe1, 0x93, 0x30, 0xd9, 0xc1, 0xde, 0xbe, 0x2d, 0x8a, 0xf5, + 0x47, 0x46, 0x94, 0x00, 0x32, 0x3d, 0xe8, 0x2b, 0x8e, 0x0a, 0xd6, 0x90, 0xf8, 0x51, 0xdd, 0x06, + 0xb3, 0x66, 0xc8, 0xd2, 0x97, 0x63, 0xf0, 0xc8, 0x48, 0xf2, 0x91, 0x86, 0x3e, 0x0a, 0x60, 0x58, + 0xdd, 0x9e, 0xc7, 0x0a, 0x32, 0xcb, 0x4f, 0x69, 0x2a, 0xa1, 0x67, 0x9f, 0xe4, 0x9e, 0x9e, 0xe7, + 0xcf, 0xc7, 0xe9, 0x3c, 0x30, 0x11, 0x55, 0xb8, 0xda, 0x37, 0x34, 0x41, 0x0d, 0x2d, 0x1c, 0xb1, + 0xd2, 0xa1, 0x5a, 0xf7, 0x71, 0x90, 0x75, 0xd3, 0xc0, 0x96, 0xa7, 0xb9, 0x9e, 0x83, 0x51, 0xc7, + 0xb0, 0xda, 0x34, 0x01, 0xa7, 0x8a, 0xc9, 0x16, 0x32, 0x5d, 0xac, 0xce, 0xb0, 0xe9, 0x86, 0x98, + 0x25, 0x08, 0x5a, 0x65, 0x9c, 0x00, 0x62, 0x32, 0x84, 0x60, 0xd3, 0x3e, 0x62, 0xe9, 0x6b, 0x53, + 0x90, 0x09, 0xb4, 0x75, 0xca, 0x79, 0xc8, 0xde, 0x46, 0x77, 0x91, 0x26, 0x5a, 0x75, 0xe6, 0x89, + 0x0c, 0x91, 0xd5, 0x79, 0xbb, 0xfe, 0x71, 0x98, 0xa7, 0x2a, 0x76, 0xcf, 0xc3, 0x8e, 0xa6, 0x9b, + 0xc8, 0x75, 0xa9, 0xd3, 0x52, 0x54, 0x55, 0x21, 0x73, 0x35, 0x32, 0x55, 0x16, 0x33, 0xca, 0x65, + 0x98, 0xa3, 0x88, 0x4e, 0xcf, 0xf4, 0x8c, 0xae, 0x89, 0x35, 0xf2, 0xf2, 0xe0, 0xd2, 0x44, 0xec, + 0x5b, 0x36, 0x4b, 0x34, 0xb6, 0xb8, 0x02, 0xb1, 0xc8, 0x55, 0xd6, 0xe1, 0x51, 0x0a, 0x6b, 0x63, + 0x0b, 0x3b, 0xc8, 0xc3, 0x1a, 0xfe, 0x5c, 0x0f, 0x99, 0xae, 0x86, 0xac, 0xa6, 0xb6, 0x8f, 0xdc, + 0xfd, 0xfc, 0x3c, 0x21, 0x58, 0x8b, 0xe5, 0x25, 0xf5, 0x0c, 0x51, 0xdc, 0xe0, 0x7a, 0x15, 0xaa, + 0x56, 0xb2, 0x9a, 0x9f, 0x42, 0xee, 0xbe, 0x52, 0x84, 0x53, 0x94, 0xc5, 0xf5, 0x1c, 0xc3, 0x6a, + 0x6b, 0xfa, 0x3e, 0xd6, 0xef, 0x68, 0x3d, 0xaf, 0x75, 0x35, 0x7f, 0x36, 0xf8, 0x7c, 0x6a, 0x61, + 0x83, 0xea, 0x94, 0x89, 0xca, 0xae, 0xd7, 0xba, 0xaa, 0x34, 0x20, 0x4b, 0x36, 0xa3, 0x63, 0xbc, + 0x88, 0xb5, 0x96, 0xed, 0xd0, 0xca, 0x92, 0x1b, 0x71, 0xb2, 0x03, 0x1e, 0x5c, 0xa9, 0x71, 0xc0, + 0x96, 0xdd, 0xc4, 0xc5, 0x64, 0xa3, 0x5e, 0xa9, 0xac, 0xab, 0x19, 0xc1, 0x72, 0xdd, 0x76, 0x48, + 0x40, 0xb5, 0x6d, 0xdf, 0xc1, 0x19, 0x16, 0x50, 0x6d, 0x5b, 0xb8, 0xf7, 0x32, 0xcc, 0xe9, 0x3a, + 0x5b, 0xb3, 0xa1, 0x6b, 0xbc, 0xc5, 0x77, 0xf3, 0x72, 0xc8, 0x59, 0xba, 0xbe, 0xc1, 0x14, 0x78, + 0x8c, 0xbb, 0xca, 0xb3, 0xf0, 0x48, 0xdf, 0x59, 0x41, 0xe0, 0xec, 0xd0, 0x2a, 0x07, 0xa1, 0x97, + 0x61, 0xae, 0x7b, 0x30, 0x0c, 0x54, 0x42, 0x4f, 0xec, 0x1e, 0x0c, 0xc2, 0x1e, 0xa7, 0xaf, 0x6d, + 0x0e, 0xd6, 0x91, 0x87, 0x9b, 0xf9, 0xd3, 0x41, 0xed, 0xc0, 0x84, 0xb2, 0x0a, 0xb2, 0xae, 0x6b, + 0xd8, 0x42, 0x7b, 0x26, 0xd6, 0x90, 0x83, 0x2d, 0xe4, 0xe6, 0xcf, 0x05, 0x95, 0x73, 0xba, 0x5e, + 0xa1, 0xb3, 0x25, 0x3a, 0xa9, 0x3c, 0x09, 0xb3, 0xf6, 0xde, 0x6d, 0x9d, 0x45, 0x96, 0xd6, 0x75, + 0x70, 0xcb, 0x78, 0x21, 0xff, 0x18, 0x75, 0xd3, 0x0c, 0x99, 0xa0, 0x71, 0x55, 0xa7, 0x62, 0xe5, + 0x09, 0x90, 0x75, 0x77, 0x1f, 0x39, 0x5d, 0x5a, 0xda, 0xdd, 0x2e, 0xd2, 0x71, 0xfe, 0x71, 0xa6, + 0xca, 0xe4, 0xdb, 0x42, 0x4c, 0x22, 0xdb, 0xbd, 0x67, 0xb4, 0x3c, 0xc1, 0x78, 0x81, 0x45, 0x36, + 0x95, 0x71, 0xb6, 0x9b, 0x30, 0xdf, 0xb3, 0x0c, 0xcb, 0xc3, 0x4e, 0xd7, 0xc1, 0xa4, 0x89, 0x67, + 0x27, 0x31, 0xff, 0xaf, 0x53, 0x47, 0xb4, 0xe1, 0xbb, 0x41, 0x6d, 0x16, 0x00, 0xea, 0x5c, 0x6f, + 0x58, 0xb8, 0x54, 0x84, 0x6c, 0x30, 0x2e, 0x94, 0x34, 0xb0, 0xc8, 0x90, 0x25, 0x52, 0x63, 0xcb, + 0xb5, 0x75, 0x52, 0x1d, 0x3f, 0x5b, 0x91, 0x63, 0xa4, 0x4a, 0x6f, 0x56, 0x77, 0x2a, 0x9a, 0xba, + 0xbb, 0xbd, 0x53, 0xdd, 0xaa, 0xc8, 0xf1, 0x27, 0xd3, 0xa9, 0xb7, 0xa7, 0xe4, 0xfb, 0xf7, 0xef, + 0xdf, 0x8f, 0x2d, 0x7d, 0x27, 0x06, 0xb9, 0x70, 0x67, 0xac, 0xfc, 0x14, 0x9c, 0x16, 0xaf, 0xb1, + 0x2e, 0xf6, 0xb4, 0x7b, 0x86, 0x43, 0x43, 0xb5, 0x83, 0x58, 0x6f, 0xe9, 0x7b, 0x79, 0x9e, 0x6b, + 0x35, 0xb0, 0xf7, 0xbc, 0xe1, 0x90, 0x40, 0xec, 0x20, 0x4f, 0xd9, 0x84, 0x73, 0x96, 0xad, 0xb9, + 0x1e, 0xb2, 0x9a, 0xc8, 0x69, 0x6a, 0xfd, 0x0b, 0x04, 0x0d, 0xe9, 0x3a, 0x76, 0x5d, 0x9b, 0x95, + 0x08, 0x9f, 0xe5, 0x43, 0x96, 0xdd, 0xe0, 0xca, 0xfd, 0xdc, 0x59, 0xe2, 0xaa, 0x03, 0x11, 0x11, + 0x3f, 0x2a, 0x22, 0xce, 0x42, 0xba, 0x83, 0xba, 0x1a, 0xb6, 0x3c, 0xe7, 0x80, 0xf6, 0x73, 0x29, + 0x35, 0xd5, 0x41, 0xdd, 0x0a, 0x19, 0xbf, 0x7f, 0x7b, 0x10, 0xf4, 0xe3, 0x3f, 0xc5, 0x21, 0x1b, + 0xec, 0xe9, 0x48, 0x8b, 0xac, 0xd3, 0xfc, 0x2d, 0xd1, 0x13, 0xfe, 0xe1, 0x63, 0x3b, 0xc0, 0x95, + 0x32, 0x49, 0xec, 0xc5, 0x49, 0xd6, 0x69, 0xa9, 0x0c, 0x49, 0x8a, 0x2a, 0x39, 0xd3, 0x98, 0xf5, + 0xef, 0x29, 0x95, 0x8f, 0x94, 0x0d, 0x98, 0xbc, 0xed, 0x52, 0xee, 0x49, 0xca, 0xfd, 0xd8, 0xf1, + 0xdc, 0x37, 0x1a, 0x94, 0x3c, 0x7d, 0xa3, 0xa1, 0x6d, 0xd7, 0xd4, 0xad, 0xd2, 0xa6, 0xca, 0xe1, + 0xca, 0x19, 0x48, 0x98, 0xe8, 0xc5, 0x83, 0x70, 0x09, 0xa0, 0xa2, 0x71, 0x1d, 0x7f, 0x06, 0x12, + 0xf7, 0x30, 0xba, 0x13, 0x4e, 0xbc, 0x54, 0xf4, 0x3e, 0x86, 0xfe, 0x2a, 0x24, 0xa9, 0xbf, 0x14, + 0x00, 0xee, 0x31, 0x79, 0x42, 0x49, 0x41, 0xa2, 0x5c, 0x53, 0x49, 0xf8, 0xcb, 0x90, 0x65, 0x52, + 0xad, 0x5e, 0xad, 0x94, 0x2b, 0x72, 0x6c, 0xe9, 0x32, 0x4c, 0x32, 0x27, 0x90, 0xa3, 0xe1, 0xbb, + 0x41, 0x9e, 0xe0, 0x43, 0xce, 0x21, 0x89, 0xd9, 0xdd, 0xad, 0xb5, 0x8a, 0x2a, 0xc7, 0x82, 0xdb, + 0xeb, 0x42, 0x36, 0xd8, 0xce, 0xfd, 0x64, 0x62, 0xea, 0x6f, 0x24, 0xc8, 0x04, 0xda, 0x33, 0xd2, + 0x18, 0x20, 0xd3, 0xb4, 0xef, 0x69, 0xc8, 0x34, 0x90, 0xcb, 0x83, 0x02, 0xa8, 0xa8, 0x44, 0x24, + 0xe3, 0x6e, 0xda, 0x4f, 0xc4, 0xf8, 0xd7, 0x24, 0x90, 0x07, 0x5b, 0xbb, 0x01, 0x03, 0xa5, 0x0f, + 0xd4, 0xc0, 0x57, 0x25, 0xc8, 0x85, 0xfb, 0xb9, 0x01, 0xf3, 0xce, 0x7f, 0xa0, 0xe6, 0xbd, 0x19, + 0x83, 0xe9, 0x50, 0x17, 0x37, 0xae, 0x75, 0x9f, 0x83, 0x59, 0xa3, 0x89, 0x3b, 0x5d, 0xdb, 0xc3, + 0x96, 0x7e, 0xa0, 0x99, 0xf8, 0x2e, 0x36, 0xf3, 0x4b, 0x34, 0x51, 0xac, 0x1e, 0xdf, 0x27, 0xae, + 0x54, 0xfb, 0xb8, 0x4d, 0x02, 0x2b, 0xce, 0x55, 0xd7, 0x2b, 0x5b, 0xf5, 0xda, 0x4e, 0x65, 0xbb, + 0x7c, 0x4b, 0xdb, 0xdd, 0xfe, 0xe9, 0xed, 0xda, 0xf3, 0xdb, 0xaa, 0x6c, 0x0c, 0xa8, 0xbd, 0x8f, + 0x47, 0xbd, 0x0e, 0xf2, 0xa0, 0x51, 0xca, 0x69, 0x18, 0x65, 0x96, 0x3c, 0xa1, 0xcc, 0xc1, 0xcc, + 0x76, 0x4d, 0x6b, 0x54, 0xd7, 0x2b, 0x5a, 0xe5, 0xfa, 0xf5, 0x4a, 0x79, 0xa7, 0xc1, 0x5e, 0x9c, + 0x7d, 0xed, 0x9d, 0xf0, 0xa1, 0x7e, 0x25, 0x0e, 0x73, 0x23, 0x2c, 0x51, 0x4a, 0xbc, 0x67, 0x67, + 0xaf, 0x11, 0x1f, 0x1b, 0xc7, 0xfa, 0x15, 0xd2, 0x15, 0xd4, 0x91, 0xe3, 0xf1, 0x16, 0xff, 0x09, + 0x20, 0x5e, 0xb2, 0x3c, 0xa3, 0x65, 0x60, 0x87, 0xdf, 0x33, 0xb0, 0x46, 0x7e, 0xa6, 0x2f, 0x67, + 0x57, 0x0d, 0x1f, 0x05, 0xa5, 0x6b, 0xbb, 0x86, 0x67, 0xdc, 0xc5, 0x9a, 0x61, 0x89, 0x4b, 0x09, + 0xd2, 0xd8, 0x27, 0x54, 0x59, 0xcc, 0x54, 0x2d, 0xcf, 0xd7, 0xb6, 0x70, 0x1b, 0x0d, 0x68, 0x93, + 0x04, 0x1e, 0x57, 0x65, 0x31, 0xe3, 0x6b, 0x9f, 0x87, 0x6c, 0xd3, 0xee, 0x91, 0x36, 0x89, 0xe9, + 0x91, 0x7a, 0x21, 0xa9, 0x19, 0x26, 0xf3, 0x55, 0x78, 0x1f, 0xdb, 0xbf, 0x0d, 0xc9, 0xaa, 0x19, + 0x26, 0x63, 0x2a, 0x17, 0x60, 0x06, 0xb5, 0xdb, 0x0e, 0x21, 0x17, 0x44, 0xac, 0x33, 0xcf, 0xf9, + 0x62, 0xaa, 0xb8, 0x70, 0x03, 0x52, 0xc2, 0x0f, 0xa4, 0x24, 0x13, 0x4f, 0x68, 0x5d, 0x76, 0x27, + 0x15, 0x5b, 0x4e, 0xab, 0x29, 0x4b, 0x4c, 0x9e, 0x87, 0xac, 0xe1, 0x6a, 0xfd, 0xcb, 0xd1, 0xd8, + 0x62, 0x6c, 0x39, 0xa5, 0x66, 0x0c, 0xd7, 0xbf, 0x0d, 0x5b, 0x7a, 0x3d, 0x06, 0xb9, 0xf0, 0xe5, + 0xae, 0xb2, 0x0e, 0x29, 0xd3, 0xd6, 0x11, 0x0d, 0x2d, 0xf6, 0x65, 0x61, 0x39, 0xe2, 0x3e, 0x78, + 0x65, 0x93, 0xeb, 0xab, 0x3e, 0x72, 0xe1, 0x1f, 0x24, 0x48, 0x09, 0xb1, 0x72, 0x0a, 0x12, 0x5d, + 0xe4, 0xed, 0x53, 0xba, 0xe4, 0x5a, 0x4c, 0x96, 0x54, 0x3a, 0x26, 0x72, 0xb7, 0x8b, 0x2c, 0x1a, + 0x02, 0x5c, 0x4e, 0xc6, 0x64, 0x5f, 0x4d, 0x8c, 0x9a, 0xb4, 0xed, 0xb7, 0x3b, 0x1d, 0x6c, 0x79, + 0xae, 0xd8, 0x57, 0x2e, 0x2f, 0x73, 0xb1, 0xf2, 0x14, 0xcc, 0x7a, 0x0e, 0x32, 0xcc, 0x90, 0x6e, + 0x82, 0xea, 0xca, 0x62, 0xc2, 0x57, 0x2e, 0xc2, 0x19, 0xc1, 0xdb, 0xc4, 0x1e, 0xd2, 0xf7, 0x71, + 0xb3, 0x0f, 0x9a, 0xa4, 0x37, 0x87, 0xa7, 0xb9, 0xc2, 0x3a, 0x9f, 0x17, 0xd8, 0xa5, 0xef, 0x49, + 0x30, 0x2b, 0x5e, 0x54, 0x9a, 0xbe, 0xb3, 0xb6, 0x00, 0x90, 0x65, 0xd9, 0x5e, 0xd0, 0x5d, 0xc3, + 0xa1, 0x3c, 0x84, 0x5b, 0x29, 0xf9, 0x20, 0x35, 0x40, 0xb0, 0xd0, 0x01, 0xe8, 0xcf, 0x1c, 0xe9, + 0xb6, 0x73, 0x90, 0xe1, 0x37, 0xf7, 0xf4, 0xf3, 0x0f, 0x7b, 0xb5, 0x05, 0x26, 0x22, 0x6f, 0x34, + 0xca, 0x3c, 0x24, 0xf7, 0x70, 0xdb, 0xb0, 0xf8, 0x7d, 0x22, 0x1b, 0x88, 0x5b, 0xca, 0x84, 0x7f, + 0x4b, 0xb9, 0x76, 0x13, 0xe6, 0x74, 0xbb, 0x33, 0x68, 0xee, 0x9a, 0x3c, 0xf0, 0x7a, 0xed, 0x7e, + 0x4a, 0xfa, 0x2c, 0xf4, 0x5b, 0xcc, 0x2f, 0xc7, 0xe2, 0x1b, 0xf5, 0xb5, 0xaf, 0xc6, 0x16, 0x36, + 0x18, 0xae, 0x2e, 0x96, 0xa9, 0xe2, 0x96, 0x89, 0x75, 0x62, 0x3a, 0xfc, 0xe0, 0x23, 0xf0, 0xb1, + 0xb6, 0xe1, 0xed, 0xf7, 0xf6, 0x56, 0x74, 0xbb, 0xb3, 0xda, 0xb6, 0xdb, 0x76, 0xff, 0x73, 0x17, + 0x19, 0xd1, 0x01, 0xfd, 0xc5, 0x3f, 0x79, 0xa5, 0x7d, 0xe9, 0x42, 0xe4, 0xf7, 0xb1, 0xe2, 0x36, + 0xcc, 0x71, 0x65, 0x8d, 0xde, 0xb9, 0xb3, 0x57, 0x03, 0xe5, 0xd8, 0x7b, 0x97, 0xfc, 0x37, 0xde, + 0xa2, 0xb5, 0x5a, 0x9d, 0xe5, 0x50, 0x32, 0xc7, 0x5e, 0x20, 0x8a, 0x2a, 0x3c, 0x12, 0xe2, 0x63, + 0xe7, 0x12, 0x3b, 0x11, 0x8c, 0xdf, 0xe1, 0x8c, 0x73, 0x01, 0xc6, 0x06, 0x87, 0x16, 0xcb, 0x30, + 0x7d, 0x12, 0xae, 0xbf, 0xe3, 0x5c, 0x59, 0x1c, 0x24, 0xd9, 0x80, 0x19, 0x4a, 0xa2, 0xf7, 0x5c, + 0xcf, 0xee, 0xd0, 0xa4, 0x77, 0x3c, 0xcd, 0xdf, 0xbf, 0xc5, 0x0e, 0x4a, 0x8e, 0xc0, 0xca, 0x3e, + 0xaa, 0x58, 0x04, 0xfa, 0x99, 0xa1, 0x89, 0x75, 0x33, 0x82, 0xe1, 0x0d, 0x6e, 0x88, 0xaf, 0x5f, + 0xfc, 0x0c, 0xcc, 0x93, 0xdf, 0x34, 0x27, 0x05, 0x2d, 0x89, 0xbe, 0x65, 0xca, 0x7f, 0xef, 0x25, + 0x76, 0x16, 0xe7, 0x7c, 0x82, 0x80, 0x4d, 0x81, 0x5d, 0x6c, 0x63, 0xcf, 0xc3, 0x8e, 0xab, 0x21, + 0x73, 0x94, 0x79, 0x81, 0xd7, 0xf4, 0xfc, 0x17, 0xdf, 0x09, 0xef, 0xe2, 0x06, 0x43, 0x96, 0x4c, + 0xb3, 0xb8, 0x0b, 0xa7, 0x47, 0x44, 0xc5, 0x18, 0x9c, 0xaf, 0x70, 0xce, 0xf9, 0xa1, 0xc8, 0x20, + 0xb4, 0x75, 0x10, 0x72, 0x7f, 0x2f, 0xc7, 0xe0, 0xfc, 0x1d, 0xce, 0xa9, 0x70, 0xac, 0xd8, 0x52, + 0xc2, 0x78, 0x03, 0x66, 0xef, 0x62, 0x67, 0xcf, 0x76, 0xf9, 0xd5, 0xc8, 0x18, 0x74, 0xaf, 0x72, + 0xba, 0x19, 0x0e, 0xa4, 0x77, 0x25, 0x84, 0xeb, 0x59, 0x48, 0xb5, 0x90, 0x8e, 0xc7, 0xa0, 0xf8, + 0x12, 0xa7, 0x98, 0x22, 0xfa, 0x04, 0x5a, 0x82, 0x6c, 0xdb, 0xe6, 0x65, 0x29, 0x1a, 0xfe, 0x1a, + 0x87, 0x67, 0x04, 0x86, 0x53, 0x74, 0xed, 0x6e, 0xcf, 0x24, 0x35, 0x2b, 0x9a, 0xe2, 0x77, 0x05, + 0x85, 0xc0, 0x70, 0x8a, 0x13, 0xb8, 0xf5, 0xf7, 0x04, 0x85, 0x1b, 0xf0, 0xe7, 0x73, 0x90, 0xb1, + 0x2d, 0xf3, 0xc0, 0xb6, 0xc6, 0x31, 0xe2, 0xf7, 0x39, 0x03, 0x70, 0x08, 0x21, 0xb8, 0x06, 0xe9, + 0x71, 0x37, 0xe2, 0x0f, 0xde, 0x11, 0xc7, 0x43, 0xec, 0xc0, 0x06, 0xcc, 0x88, 0x04, 0x65, 0xd8, + 0xd6, 0x18, 0x14, 0x7f, 0xc8, 0x29, 0x72, 0x01, 0x18, 0x5f, 0x86, 0x87, 0x5d, 0xaf, 0x8d, 0xc7, + 0x21, 0x79, 0x5d, 0x2c, 0x83, 0x43, 0xb8, 0x2b, 0xf7, 0xb0, 0xa5, 0xef, 0x8f, 0xc7, 0xf0, 0x15, + 0xe1, 0x4a, 0x81, 0x21, 0x14, 0x65, 0x98, 0xee, 0x20, 0xc7, 0xdd, 0x47, 0xe6, 0x58, 0xdb, 0xf1, + 0x47, 0x9c, 0x23, 0xeb, 0x83, 0xb8, 0x47, 0x7a, 0xd6, 0x49, 0x68, 0xbe, 0x2a, 0x3c, 0x12, 0x80, + 0xf1, 0xa3, 0xe7, 0x7a, 0xf4, 0x02, 0xea, 0x24, 0x6c, 0x5f, 0x13, 0x47, 0x8f, 0x61, 0xb7, 0x82, + 0x8c, 0xd7, 0x20, 0xed, 0x1a, 0x2f, 0x8e, 0x45, 0xf3, 0xc7, 0x62, 0xa7, 0x29, 0x80, 0x80, 0x6f, + 0xc1, 0x99, 0x91, 0x65, 0x62, 0x0c, 0xb2, 0x3f, 0xe1, 0x64, 0xa7, 0x46, 0x94, 0x0a, 0x9e, 0x12, + 0x4e, 0x4a, 0xf9, 0xa7, 0x22, 0x25, 0xe0, 0x01, 0xae, 0x3a, 0x79, 0x51, 0x70, 0x51, 0xeb, 0x64, + 0x5e, 0xfb, 0x33, 0xe1, 0x35, 0x86, 0x0d, 0x79, 0x6d, 0x07, 0x4e, 0x71, 0xc6, 0x93, 0xed, 0xeb, + 0xd7, 0x45, 0x62, 0x65, 0xe8, 0xdd, 0xf0, 0xee, 0xfe, 0x0c, 0x2c, 0xf8, 0xee, 0x14, 0x1d, 0xa9, + 0xab, 0x75, 0x50, 0x77, 0x0c, 0xe6, 0x6f, 0x70, 0x66, 0x91, 0xf1, 0xfd, 0x96, 0xd6, 0xdd, 0x42, + 0x5d, 0x42, 0x7e, 0x13, 0xf2, 0x82, 0xbc, 0x67, 0x39, 0x58, 0xb7, 0xdb, 0x96, 0xf1, 0x22, 0x6e, + 0x8e, 0x41, 0xfd, 0xe7, 0x03, 0x5b, 0xb5, 0x1b, 0x80, 0x13, 0xe6, 0x2a, 0xc8, 0x7e, 0xaf, 0xa2, + 0x19, 0x9d, 0xae, 0xed, 0x78, 0x11, 0x8c, 0x7f, 0x21, 0x76, 0xca, 0xc7, 0x55, 0x29, 0xac, 0x58, + 0x81, 0x1c, 0x1d, 0x8e, 0x1b, 0x92, 0x7f, 0xc9, 0x89, 0xa6, 0xfb, 0x28, 0x9e, 0x38, 0x74, 0xbb, + 0xd3, 0x45, 0xce, 0x38, 0xf9, 0xef, 0xaf, 0x44, 0xe2, 0xe0, 0x10, 0x9e, 0x38, 0xbc, 0x83, 0x2e, + 0x26, 0xd5, 0x7e, 0x0c, 0x86, 0x6f, 0x8a, 0xc4, 0x21, 0x30, 0x9c, 0x42, 0x34, 0x0c, 0x63, 0x50, + 0xfc, 0xb5, 0xa0, 0x10, 0x18, 0x42, 0xf1, 0xe9, 0x7e, 0xa1, 0x75, 0x70, 0xdb, 0x70, 0x3d, 0x87, + 0xf5, 0xc1, 0xc7, 0x53, 0x7d, 0xeb, 0x9d, 0x70, 0x13, 0xa6, 0x06, 0xa0, 0xc5, 0x1b, 0x30, 0x33, + 0xd0, 0x62, 0x28, 0x51, 0xff, 0xb3, 0x90, 0xff, 0xd9, 0xf7, 0x78, 0x32, 0x0a, 0x77, 0x18, 0xc5, + 0x4d, 0xb2, 0xef, 0xe1, 0x3e, 0x20, 0x9a, 0xec, 0xa5, 0xf7, 0xfc, 0xad, 0x0f, 0xb5, 0x01, 0xc5, + 0xeb, 0x30, 0x1d, 0xea, 0x01, 0xa2, 0xa9, 0x3e, 0xcf, 0xa9, 0xb2, 0xc1, 0x16, 0xa0, 0x78, 0x19, + 0x12, 0xa4, 0x9e, 0x47, 0xc3, 0x7f, 0x8e, 0xc3, 0xa9, 0x7a, 0xf1, 0x13, 0x90, 0x12, 0x75, 0x3c, + 0x1a, 0xfa, 0xf3, 0x1c, 0xea, 0x43, 0x08, 0x5c, 0xd4, 0xf0, 0x68, 0xf8, 0x2f, 0x08, 0xb8, 0x80, + 0x10, 0xf8, 0xf8, 0x2e, 0xfc, 0xf6, 0x2f, 0x25, 0x78, 0x1e, 0x16, 0xbe, 0xbb, 0x06, 0x53, 0xbc, + 0x78, 0x47, 0xa3, 0x5f, 0xe6, 0x0f, 0x17, 0x88, 0xe2, 0x33, 0x90, 0x1c, 0xd3, 0xe1, 0xbf, 0xcc, + 0xa1, 0x4c, 0xbf, 0x58, 0x86, 0x4c, 0xa0, 0x60, 0x47, 0xc3, 0x7f, 0x85, 0xc3, 0x83, 0x28, 0x62, + 0x3a, 0x2f, 0xd8, 0xd1, 0x04, 0xbf, 0x2a, 0x4c, 0xe7, 0x08, 0xe2, 0x36, 0x51, 0xab, 0xa3, 0xd1, + 0xbf, 0x26, 0xbc, 0x2e, 0x20, 0xc5, 0xe7, 0x20, 0xed, 0xe7, 0xdf, 0x68, 0xfc, 0xaf, 0x73, 0x7c, + 0x1f, 0x43, 0x3c, 0x10, 0xc8, 0xff, 0xd1, 0x14, 0xbf, 0x21, 0x3c, 0x10, 0x40, 0x91, 0x63, 0x34, + 0x58, 0xd3, 0xa3, 0x99, 0x7e, 0x53, 0x1c, 0xa3, 0x81, 0x92, 0x4e, 0x76, 0x93, 0xa6, 0xc1, 0x68, + 0x8a, 0xdf, 0x12, 0xbb, 0x49, 0xf5, 0x89, 0x19, 0x83, 0x45, 0x32, 0x9a, 0xe3, 0xb7, 0x85, 0x19, + 0x03, 0x35, 0xb2, 0x58, 0x07, 0x65, 0xb8, 0x40, 0x46, 0xf3, 0x7d, 0x81, 0xf3, 0xcd, 0x0e, 0xd5, + 0xc7, 0xe2, 0xf3, 0x70, 0x6a, 0x74, 0x71, 0x8c, 0x66, 0xfd, 0xe2, 0x7b, 0x03, 0xaf, 0x33, 0xc1, + 0xda, 0x58, 0xdc, 0xe9, 0x67, 0xd9, 0x60, 0x61, 0x8c, 0xa6, 0x7d, 0xe5, 0xbd, 0x70, 0xa2, 0x0d, + 0xd6, 0xc5, 0x62, 0x09, 0xa0, 0x5f, 0x93, 0xa2, 0xb9, 0x5e, 0xe5, 0x5c, 0x01, 0x10, 0x39, 0x1a, + 0xbc, 0x24, 0x45, 0xe3, 0xbf, 0x24, 0x8e, 0x06, 0x47, 0x90, 0xa3, 0x21, 0xaa, 0x51, 0x34, 0xfa, + 0x35, 0x71, 0x34, 0x04, 0xa4, 0x78, 0x0d, 0x52, 0x56, 0xcf, 0x34, 0x49, 0x6c, 0x29, 0xc7, 0xff, + 0x1b, 0x51, 0xfe, 0xdf, 0x1e, 0x72, 0xb0, 0x00, 0x14, 0x2f, 0x43, 0x12, 0x77, 0xf6, 0x70, 0x33, + 0x0a, 0xf9, 0xef, 0x0f, 0x45, 0x3e, 0x21, 0xda, 0xc5, 0xe7, 0x00, 0xd8, 0xcb, 0x34, 0xfd, 0x4a, + 0x14, 0x81, 0xfd, 0x8f, 0x87, 0xfc, 0x3f, 0x14, 0xfa, 0x90, 0x3e, 0x01, 0xfb, 0x7f, 0x87, 0xe3, + 0x09, 0xde, 0x09, 0x13, 0xd0, 0x17, 0xf0, 0x67, 0x61, 0xea, 0xb6, 0x6b, 0x5b, 0x1e, 0x6a, 0x47, + 0xa1, 0xff, 0x93, 0xa3, 0x85, 0x3e, 0x71, 0x58, 0xc7, 0x76, 0xb0, 0x87, 0xda, 0x6e, 0x14, 0xf6, + 0xbf, 0x38, 0xd6, 0x07, 0x10, 0xb0, 0x8e, 0x5c, 0x6f, 0x9c, 0x75, 0xff, 0xb7, 0x00, 0x0b, 0x00, + 0x31, 0x9a, 0xfc, 0xbe, 0x83, 0x0f, 0xa2, 0xb0, 0xef, 0x0a, 0xa3, 0xb9, 0x7e, 0xf1, 0x13, 0x90, + 0x26, 0x3f, 0xd9, 0x7f, 0xed, 0x44, 0x80, 0xff, 0x87, 0x83, 0xfb, 0x08, 0xf2, 0x64, 0xd7, 0x6b, + 0x7a, 0x46, 0xb4, 0xb3, 0xff, 0x97, 0xef, 0xb4, 0xd0, 0x2f, 0x96, 0x20, 0xe3, 0x7a, 0xcd, 0x66, + 0x8f, 0x77, 0x34, 0x11, 0xf0, 0x1f, 0x3c, 0xf4, 0x5f, 0x72, 0x7d, 0xcc, 0xda, 0xf9, 0xd1, 0x97, + 0x75, 0xb0, 0x61, 0x6f, 0xd8, 0xec, 0x9a, 0x0e, 0x5e, 0x4e, 0xc2, 0x59, 0xdd, 0xee, 0xec, 0xd9, + 0xee, 0xea, 0x9e, 0xed, 0xed, 0xaf, 0xfa, 0xa6, 0x8b, 0x3b, 0x36, 0x5f, 0xb0, 0x70, 0xb2, 0xdb, + 0xb9, 0xa5, 0xbf, 0x8d, 0x43, 0xaa, 0x8c, 0x5c, 0x0f, 0xdd, 0x43, 0x07, 0x4a, 0x17, 0xe6, 0xc8, + 0xef, 0x2d, 0xd4, 0xa5, 0x77, 0x3d, 0xfc, 0x70, 0xf1, 0xdb, 0xcf, 0x8f, 0xae, 0xf4, 0x9f, 0x2a, + 0x10, 0x2b, 0x23, 0xd4, 0xe9, 0x57, 0xe3, 0x35, 0xf9, 0x8d, 0x7f, 0x3e, 0x37, 0xf1, 0x8b, 0xff, + 0x72, 0x2e, 0xb5, 0x75, 0xf0, 0xbc, 0x61, 0xba, 0xb6, 0xa5, 0x8e, 0xa2, 0x56, 0x3e, 0x2f, 0xc1, + 0xd9, 0x11, 0xf2, 0x6d, 0x7e, 0x02, 0xf9, 0x37, 0x84, 0x4b, 0x63, 0x3e, 0x5a, 0xc0, 0x98, 0x09, + 0xd9, 0xd0, 0xe3, 0x8f, 0x7b, 0xcc, 0xc2, 0x2d, 0xc8, 0x1f, 0xb5, 0x12, 0x45, 0x86, 0xf8, 0x1d, + 0x7c, 0xc0, 0xff, 0x2f, 0x94, 0xfc, 0x54, 0x2e, 0xf4, 0xff, 0xaf, 0x4c, 0x5a, 0xce, 0x5c, 0x9c, + 0x0d, 0x58, 0xc7, 0x1f, 0xc6, 0xe6, 0x8b, 0xb1, 0xab, 0xd2, 0x02, 0x82, 0xc5, 0x28, 0x4b, 0x7f, + 0xcc, 0x47, 0x2c, 0x15, 0x60, 0x92, 0x09, 0x95, 0x79, 0x48, 0x56, 0x2d, 0xef, 0xca, 0x25, 0x4a, + 0x15, 0x57, 0xd9, 0x60, 0x6d, 0xf3, 0x8d, 0x07, 0x85, 0x89, 0xef, 0x3e, 0x28, 0x4c, 0xfc, 0xe3, + 0x83, 0xc2, 0xc4, 0x9b, 0x0f, 0x0a, 0xd2, 0xdb, 0x0f, 0x0a, 0xd2, 0xbb, 0x0f, 0x0a, 0xd2, 0x0f, + 0x1f, 0x14, 0xa4, 0xfb, 0x87, 0x05, 0xe9, 0x2b, 0x87, 0x05, 0xe9, 0xeb, 0x87, 0x05, 0xe9, 0x5b, + 0x87, 0x05, 0xe9, 0xdb, 0x87, 0x05, 0xe9, 0x8d, 0xc3, 0x82, 0xf4, 0xdd, 0xc3, 0x82, 0xf4, 0xe6, + 0x61, 0x41, 0x7a, 0xfb, 0xb0, 0x30, 0xf1, 0xee, 0x61, 0x41, 0xfa, 0xe1, 0x61, 0x61, 0xe2, 0xfe, + 0xf7, 0x0b, 0x13, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x82, 0xb5, 0xa1, 0xe8, 0x30, 0x00, + 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/combos/marshaler/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/combos/marshaler/castvalue.pb.go index 0f0079468..fd9068bb1 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/combos/marshaler/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/combos/marshaler/castvalue.pb.go @@ -72,237 +72,244 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3681 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0x72, 0xcc, 0xd5, 0x2a, - 0x76, 0x2c, 0xdb, 0x89, 0x14, 0xac, 0x77, 0xd7, 0xeb, 0xd9, 0x26, 0x06, 0x45, 0xd1, 0x8a, 0x16, - 0xfa, 0xcb, 0x48, 0x8a, 0xed, 0xe4, 0x61, 0x70, 0x35, 0xbc, 0xa4, 0x66, 0x77, 0x38, 0xc3, 0xce, - 0x0c, 0x77, 0x2d, 0x3f, 0x6d, 0xe0, 0xb4, 0x45, 0x1a, 0x34, 0xfd, 0x05, 0x9a, 0x38, 0x8e, 0x9b, - 0x06, 0x68, 0x9d, 0xa6, 0x7f, 0x49, 0x7f, 0xd2, 0xa0, 0x4f, 0xe9, 0x43, 0x5a, 0x3f, 0x15, 0xc9, - 0x5b, 0x1f, 0x8a, 0x36, 0xab, 0x1a, 0xa8, 0xdb, 0xba, 0xad, 0xdb, 0x18, 0x68, 0x00, 0xbf, 0x14, - 0xf7, 0x6f, 0x38, 0x43, 0x52, 0x1a, 0x2a, 0x45, 0xe2, 0x3e, 0x89, 0xf7, 0xdc, 0xf3, 0x7d, 0x73, - 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xe6, 0x8e, 0xe0, 0xd3, 0x97, 0x61, 0xbe, 0xe5, 0xba, 0x2d, 0x9b, - 0x2c, 0x77, 0x3c, 0x37, 0x70, 0x0f, 0xba, 0xcd, 0xe5, 0x06, 0xf1, 0x4d, 0xcf, 0xea, 0x04, 0xae, - 0xb7, 0xc4, 0x64, 0x68, 0x8a, 0x6b, 0x2c, 0x49, 0x8d, 0x85, 0x4d, 0x98, 0x7e, 0xc6, 0xb2, 0xc9, - 0x6a, 0xa8, 0xb8, 0x4b, 0x02, 0x74, 0x0d, 0x32, 0x4d, 0xcb, 0x26, 0x65, 0x65, 0x3e, 0xbd, 0x58, - 0xb8, 0xf4, 0xd0, 0x52, 0x1f, 0x68, 0x29, 0x8e, 0xd8, 0xa1, 0x62, 0x9d, 0x21, 0x16, 0xde, 0xc8, - 0xc0, 0xcc, 0x90, 0x59, 0x84, 0x20, 0xe3, 0xe0, 0x36, 0x65, 0x54, 0x16, 0xf3, 0x3a, 0xfb, 0x8d, - 0xca, 0x30, 0xd1, 0xc1, 0xe6, 0x2d, 0xdc, 0x22, 0xe5, 0x14, 0x13, 0xcb, 0x21, 0xaa, 0x00, 0x34, - 0x48, 0x87, 0x38, 0x0d, 0xe2, 0x98, 0x47, 0xe5, 0xf4, 0x7c, 0x7a, 0x31, 0xaf, 0x47, 0x24, 0xe8, - 0x71, 0x98, 0xee, 0x74, 0x0f, 0x6c, 0xcb, 0x34, 0x22, 0x6a, 0x30, 0x9f, 0x5e, 0xcc, 0xea, 0x2a, - 0x9f, 0x58, 0xed, 0x29, 0x3f, 0x02, 0x53, 0x77, 0x08, 0xbe, 0x15, 0x55, 0x2d, 0x30, 0xd5, 0x12, - 0x15, 0x47, 0x14, 0x6b, 0x50, 0x6c, 0x13, 0xdf, 0xc7, 0x2d, 0x62, 0x04, 0x47, 0x1d, 0x52, 0xce, - 0xb0, 0xd5, 0xcf, 0x0f, 0xac, 0xbe, 0x7f, 0xe5, 0x05, 0x81, 0xda, 0x3b, 0xea, 0x10, 0x54, 0x85, - 0x3c, 0x71, 0xba, 0x6d, 0xce, 0x90, 0x3d, 0xc1, 0x7f, 0x75, 0xa7, 0xdb, 0xee, 0x67, 0xc9, 0x51, - 0x98, 0xa0, 0x98, 0xf0, 0x89, 0x77, 0xdb, 0x32, 0x49, 0x79, 0x9c, 0x11, 0x3c, 0x32, 0x40, 0xb0, - 0xcb, 0xe7, 0xfb, 0x39, 0x24, 0x0e, 0xd5, 0x20, 0x4f, 0x5e, 0x08, 0x88, 0xe3, 0x5b, 0xae, 0x53, - 0x9e, 0x60, 0x24, 0x0f, 0x0f, 0xd9, 0x45, 0x62, 0x37, 0xfa, 0x29, 0x7a, 0x38, 0x74, 0x15, 0x26, - 0xdc, 0x4e, 0x60, 0xb9, 0x8e, 0x5f, 0xce, 0xcd, 0x2b, 0x8b, 0x85, 0x4b, 0xef, 0x1b, 0x1a, 0x08, - 0xdb, 0x5c, 0x47, 0x97, 0xca, 0x68, 0x1d, 0x54, 0xdf, 0xed, 0x7a, 0x26, 0x31, 0x4c, 0xb7, 0x41, - 0x0c, 0xcb, 0x69, 0xba, 0xe5, 0x3c, 0x23, 0xb8, 0x30, 0xb8, 0x10, 0xa6, 0x58, 0x73, 0x1b, 0x64, - 0xdd, 0x69, 0xba, 0x7a, 0xc9, 0x8f, 0x8d, 0xd1, 0x39, 0x18, 0xf7, 0x8f, 0x9c, 0x00, 0xbf, 0x50, - 0x2e, 0xb2, 0x08, 0x11, 0xa3, 0x85, 0xff, 0xc9, 0xc2, 0xd4, 0x28, 0x21, 0x76, 0x1d, 0xb2, 0x4d, - 0xba, 0xca, 0x72, 0xea, 0x2c, 0x3e, 0xe0, 0x98, 0xb8, 0x13, 0xc7, 0x7f, 0x4c, 0x27, 0x56, 0xa1, - 0xe0, 0x10, 0x3f, 0x20, 0x0d, 0x1e, 0x11, 0xe9, 0x11, 0x63, 0x0a, 0x38, 0x68, 0x30, 0xa4, 0x32, - 0x3f, 0x56, 0x48, 0x3d, 0x07, 0x53, 0xa1, 0x49, 0x86, 0x87, 0x9d, 0x96, 0x8c, 0xcd, 0xe5, 0x24, - 0x4b, 0x96, 0xea, 0x12, 0xa7, 0x53, 0x98, 0x5e, 0x22, 0xb1, 0x31, 0x5a, 0x05, 0x70, 0x1d, 0xe2, - 0x36, 0x8d, 0x06, 0x31, 0xed, 0x72, 0xee, 0x04, 0x2f, 0x6d, 0x53, 0x95, 0x01, 0x2f, 0xb9, 0x5c, - 0x6a, 0xda, 0xe8, 0xa9, 0x5e, 0xa8, 0x4d, 0x9c, 0x10, 0x29, 0x9b, 0xfc, 0x90, 0x0d, 0x44, 0xdb, - 0x3e, 0x94, 0x3c, 0x42, 0xe3, 0x9e, 0x34, 0xc4, 0xca, 0xf2, 0xcc, 0x88, 0xa5, 0xc4, 0x95, 0xe9, - 0x02, 0xc6, 0x17, 0x36, 0xe9, 0x45, 0x87, 0xe8, 0xfd, 0x10, 0x0a, 0x0c, 0x16, 0x56, 0xc0, 0xb2, - 0x50, 0x51, 0x0a, 0xb7, 0x70, 0x9b, 0xcc, 0x5d, 0x83, 0x52, 0xdc, 0x3d, 0x68, 0x16, 0xb2, 0x7e, - 0x80, 0xbd, 0x80, 0x45, 0x61, 0x56, 0xe7, 0x03, 0xa4, 0x42, 0x9a, 0x38, 0x0d, 0x96, 0xe5, 0xb2, - 0x3a, 0xfd, 0x39, 0xf7, 0x24, 0x4c, 0xc6, 0x1e, 0x3f, 0x2a, 0x70, 0xe1, 0x0b, 0xe3, 0x30, 0x3b, - 0x2c, 0xe6, 0x86, 0x86, 0xff, 0x39, 0x18, 0x77, 0xba, 0xed, 0x03, 0xe2, 0x95, 0xd3, 0x8c, 0x41, - 0x8c, 0x50, 0x15, 0xb2, 0x36, 0x3e, 0x20, 0x76, 0x39, 0x33, 0xaf, 0x2c, 0x96, 0x2e, 0x3d, 0x3e, - 0x52, 0x54, 0x2f, 0x6d, 0x50, 0x88, 0xce, 0x91, 0xe8, 0xa3, 0x90, 0x11, 0x29, 0x8e, 0x32, 0x3c, - 0x36, 0x1a, 0x03, 0x8d, 0x45, 0x9d, 0xe1, 0xd0, 0x03, 0x90, 0xa7, 0x7f, 0xb9, 0x6f, 0xc7, 0x99, - 0xcd, 0x39, 0x2a, 0xa0, 0x7e, 0x45, 0x73, 0x90, 0x63, 0x61, 0xd6, 0x20, 0xb2, 0x34, 0x84, 0x63, - 0xba, 0x31, 0x0d, 0xd2, 0xc4, 0x5d, 0x3b, 0x30, 0x6e, 0x63, 0xbb, 0x4b, 0x58, 0xc0, 0xe4, 0xf5, - 0xa2, 0x10, 0x7e, 0x82, 0xca, 0xd0, 0x05, 0x28, 0xf0, 0xa8, 0xb4, 0x9c, 0x06, 0x79, 0x81, 0x65, - 0x9f, 0xac, 0xce, 0x03, 0x75, 0x9d, 0x4a, 0xe8, 0xe3, 0x6f, 0xfa, 0xae, 0x23, 0xb7, 0x96, 0x3d, - 0x82, 0x0a, 0xd8, 0xe3, 0x9f, 0xec, 0x4f, 0x7c, 0x0f, 0x0e, 0x5f, 0x5e, 0x7f, 0x2c, 0x2e, 0x7c, - 0x2b, 0x05, 0x19, 0x76, 0xde, 0xa6, 0xa0, 0xb0, 0xf7, 0xfc, 0x4e, 0xdd, 0x58, 0xdd, 0xde, 0x5f, - 0xd9, 0xa8, 0xab, 0x0a, 0x2a, 0x01, 0x30, 0xc1, 0x33, 0x1b, 0xdb, 0xd5, 0x3d, 0x35, 0x15, 0x8e, - 0xd7, 0xb7, 0xf6, 0xae, 0x5e, 0x56, 0xd3, 0x21, 0x60, 0x9f, 0x0b, 0x32, 0x51, 0x85, 0x27, 0x2e, - 0xa9, 0x59, 0xa4, 0x42, 0x91, 0x13, 0xac, 0x3f, 0x57, 0x5f, 0xbd, 0x7a, 0x59, 0x1d, 0x8f, 0x4b, - 0x9e, 0xb8, 0xa4, 0x4e, 0xa0, 0x49, 0xc8, 0x33, 0xc9, 0xca, 0xf6, 0xf6, 0x86, 0x9a, 0x0b, 0x39, - 0x77, 0xf7, 0xf4, 0xf5, 0xad, 0x35, 0x35, 0x1f, 0x72, 0xae, 0xe9, 0xdb, 0xfb, 0x3b, 0x2a, 0x84, - 0x0c, 0x9b, 0xf5, 0xdd, 0xdd, 0xea, 0x5a, 0x5d, 0x2d, 0x84, 0x1a, 0x2b, 0xcf, 0xef, 0xd5, 0x77, - 0xd5, 0x62, 0xcc, 0xac, 0x27, 0x2e, 0xa9, 0x93, 0xe1, 0x23, 0xea, 0x5b, 0xfb, 0x9b, 0x6a, 0x09, - 0x4d, 0xc3, 0x24, 0x7f, 0x84, 0x34, 0x62, 0xaa, 0x4f, 0x74, 0xf5, 0xb2, 0xaa, 0xf6, 0x0c, 0xe1, - 0x2c, 0xd3, 0x31, 0xc1, 0xd5, 0xcb, 0x2a, 0x5a, 0xa8, 0x41, 0x96, 0x45, 0x17, 0x42, 0x50, 0xda, - 0xa8, 0xae, 0xd4, 0x37, 0x8c, 0xed, 0x9d, 0xbd, 0xf5, 0xed, 0xad, 0xea, 0x86, 0xaa, 0xf4, 0x64, - 0x7a, 0xfd, 0xe3, 0xfb, 0xeb, 0x7a, 0x7d, 0x55, 0x4d, 0x45, 0x65, 0x3b, 0xf5, 0xea, 0x5e, 0x7d, - 0x55, 0x4d, 0x2f, 0x98, 0x30, 0x3b, 0x2c, 0xcf, 0x0c, 0x3d, 0x19, 0x91, 0x2d, 0x4e, 0x9d, 0xb0, - 0xc5, 0x8c, 0x6b, 0x60, 0x8b, 0xbf, 0xaa, 0xc0, 0xcc, 0x90, 0x5c, 0x3b, 0xf4, 0x21, 0x4f, 0x43, - 0x96, 0x87, 0x28, 0xaf, 0x3e, 0x8f, 0x0e, 0x4d, 0xda, 0x2c, 0x60, 0x07, 0x2a, 0x10, 0xc3, 0x45, - 0x2b, 0x70, 0xfa, 0x84, 0x0a, 0x4c, 0x29, 0x06, 0x8c, 0x7c, 0x49, 0x81, 0xf2, 0x49, 0xdc, 0x09, - 0x89, 0x22, 0x15, 0x4b, 0x14, 0xd7, 0xfb, 0x0d, 0xb8, 0x78, 0xf2, 0x1a, 0x06, 0xac, 0x78, 0x4d, - 0x81, 0x73, 0xc3, 0x1b, 0x95, 0xa1, 0x36, 0x7c, 0x14, 0xc6, 0xdb, 0x24, 0x38, 0x74, 0x65, 0xb1, - 0xfe, 0xc0, 0x90, 0x12, 0x40, 0xa7, 0xfb, 0x7d, 0x25, 0x50, 0xd1, 0x1a, 0x92, 0x3e, 0xa9, 0xdb, - 0xe0, 0xd6, 0x0c, 0x58, 0xfa, 0xd9, 0x14, 0xdc, 0x37, 0x94, 0x7c, 0xa8, 0xa1, 0x0f, 0x02, 0x58, - 0x4e, 0xa7, 0x1b, 0xf0, 0x82, 0xcc, 0xf3, 0x53, 0x9e, 0x49, 0xd8, 0xd9, 0xa7, 0xb9, 0xa7, 0x1b, - 0x84, 0xf3, 0x69, 0x36, 0x0f, 0x5c, 0xc4, 0x14, 0xae, 0xf5, 0x0c, 0xcd, 0x30, 0x43, 0x2b, 0x27, - 0xac, 0x74, 0xa0, 0xd6, 0x7d, 0x18, 0x54, 0xd3, 0xb6, 0x88, 0x13, 0x18, 0x7e, 0xe0, 0x11, 0xdc, - 0xb6, 0x9c, 0x16, 0x4b, 0xc0, 0x39, 0x2d, 0xdb, 0xc4, 0xb6, 0x4f, 0xf4, 0x29, 0x3e, 0xbd, 0x2b, - 0x67, 0x29, 0x82, 0x55, 0x19, 0x2f, 0x82, 0x18, 0x8f, 0x21, 0xf8, 0x74, 0x88, 0x58, 0xf8, 0xdc, - 0x04, 0x14, 0x22, 0x6d, 0x1d, 0xba, 0x08, 0xc5, 0x9b, 0xf8, 0x36, 0x36, 0x64, 0xab, 0xce, 0x3d, - 0x51, 0xa0, 0xb2, 0x1d, 0xd1, 0xae, 0x7f, 0x18, 0x66, 0x99, 0x8a, 0xdb, 0x0d, 0x88, 0x67, 0x98, - 0x36, 0xf6, 0x7d, 0xe6, 0xb4, 0x1c, 0x53, 0x45, 0x74, 0x6e, 0x9b, 0x4e, 0xd5, 0xe4, 0x0c, 0xba, - 0x02, 0x33, 0x0c, 0xd1, 0xee, 0xda, 0x81, 0xd5, 0xb1, 0x89, 0x41, 0x5f, 0x1e, 0x7c, 0x96, 0x88, - 0x43, 0xcb, 0xa6, 0xa9, 0xc6, 0xa6, 0x50, 0xa0, 0x16, 0xf9, 0x68, 0x0d, 0x1e, 0x64, 0xb0, 0x16, - 0x71, 0x88, 0x87, 0x03, 0x62, 0x90, 0x9f, 0xed, 0x62, 0xdb, 0x37, 0xb0, 0xd3, 0x30, 0x0e, 0xb1, - 0x7f, 0x58, 0x9e, 0x8d, 0x12, 0x9c, 0xa7, 0xba, 0x6b, 0x42, 0xb5, 0xce, 0x34, 0xab, 0x4e, 0xe3, - 0x63, 0xd8, 0x3f, 0x44, 0x1a, 0x9c, 0x63, 0x44, 0x7e, 0xe0, 0x59, 0x4e, 0xcb, 0x30, 0x0f, 0x89, - 0x79, 0xcb, 0xe8, 0x06, 0xcd, 0x6b, 0xe5, 0x07, 0xa2, 0x0c, 0xcc, 0xc8, 0x5d, 0xa6, 0x53, 0xa3, - 0x2a, 0xfb, 0x41, 0xf3, 0x1a, 0xda, 0x85, 0x22, 0xdd, 0x8f, 0xb6, 0xf5, 0x22, 0x31, 0x9a, 0xae, - 0xc7, 0x8a, 0x4b, 0x69, 0xc8, 0xe1, 0x8e, 0x38, 0x71, 0x69, 0x5b, 0x00, 0x36, 0xdd, 0x06, 0xd1, - 0xb2, 0xbb, 0x3b, 0xf5, 0xfa, 0xaa, 0x5e, 0x90, 0x2c, 0xcf, 0xb8, 0x1e, 0x8d, 0xa9, 0x96, 0x1b, - 0xfa, 0xb8, 0xc0, 0x63, 0xaa, 0xe5, 0x4a, 0x0f, 0x5f, 0x81, 0x19, 0xd3, 0xe4, 0xcb, 0xb6, 0x4c, - 0x43, 0x74, 0xf9, 0x7e, 0x59, 0x8d, 0xf9, 0xcb, 0x34, 0xd7, 0xb8, 0x82, 0x08, 0x73, 0x1f, 0x3d, - 0x05, 0xf7, 0xf5, 0xfc, 0x15, 0x05, 0x4e, 0x0f, 0xac, 0xb2, 0x1f, 0x7a, 0x05, 0x66, 0x3a, 0x47, - 0x83, 0x40, 0x14, 0x7b, 0x62, 0xe7, 0xa8, 0x1f, 0xf6, 0x30, 0x7b, 0x73, 0xf3, 0x88, 0x89, 0x03, - 0xd2, 0x28, 0xdf, 0x1f, 0xd5, 0x8e, 0x4c, 0xa0, 0x65, 0x50, 0x4d, 0xd3, 0x20, 0x0e, 0x3e, 0xb0, - 0x89, 0x81, 0x3d, 0xe2, 0x60, 0xbf, 0x7c, 0x21, 0xaa, 0x5c, 0x32, 0xcd, 0x3a, 0x9b, 0xad, 0xb2, - 0x49, 0xf4, 0x18, 0x4c, 0xbb, 0x07, 0x37, 0x4d, 0x1e, 0x5c, 0x46, 0xc7, 0x23, 0x4d, 0xeb, 0x85, - 0xf2, 0x43, 0xcc, 0x4d, 0x53, 0x74, 0x82, 0x85, 0xd6, 0x0e, 0x13, 0xa3, 0x47, 0x41, 0x35, 0xfd, - 0x43, 0xec, 0x75, 0x58, 0x75, 0xf7, 0x3b, 0xd8, 0x24, 0xe5, 0x87, 0xb9, 0x2a, 0x97, 0x6f, 0x49, - 0x31, 0x7a, 0x0e, 0x66, 0xbb, 0x8e, 0xe5, 0x04, 0xc4, 0xeb, 0x78, 0x84, 0x36, 0xe9, 0xfc, 0xa4, - 0x95, 0xff, 0x79, 0xe2, 0x84, 0x36, 0x7b, 0x3f, 0xaa, 0xcd, 0x77, 0x57, 0x9f, 0xe9, 0x0e, 0x0a, - 0x17, 0x34, 0x28, 0x46, 0x37, 0x1d, 0xe5, 0x81, 0x6f, 0xbb, 0xaa, 0xd0, 0x1a, 0x5a, 0xdb, 0x5e, - 0xa5, 0xd5, 0xef, 0x93, 0x75, 0x35, 0x45, 0xab, 0xf0, 0xc6, 0xfa, 0x5e, 0xdd, 0xd0, 0xf7, 0xb7, - 0xf6, 0xd6, 0x37, 0xeb, 0x6a, 0xfa, 0xb1, 0x7c, 0xee, 0xcd, 0x09, 0xf5, 0xee, 0xdd, 0xbb, 0x77, - 0x53, 0x0b, 0xdf, 0x4d, 0x41, 0x29, 0xde, 0xf9, 0xa2, 0x9f, 0x81, 0xfb, 0xe5, 0x6b, 0xaa, 0x4f, - 0x02, 0xe3, 0x8e, 0xe5, 0xb1, 0x38, 0x6c, 0x63, 0xde, 0x3b, 0x86, 0x2e, 0x9c, 0x15, 0x5a, 0xbb, - 0x24, 0x78, 0xd6, 0xf2, 0x68, 0x94, 0xb5, 0x71, 0x80, 0x36, 0xe0, 0x82, 0xe3, 0x1a, 0x7e, 0x80, - 0x9d, 0x06, 0xf6, 0x1a, 0x46, 0xef, 0x82, 0xc0, 0xc0, 0xa6, 0x49, 0x7c, 0xdf, 0xe5, 0x25, 0x20, - 0x64, 0x79, 0x9f, 0xe3, 0xee, 0x0a, 0xe5, 0x5e, 0x6e, 0xac, 0x0a, 0xd5, 0xbe, 0xed, 0x4e, 0x9f, - 0xb4, 0xdd, 0x0f, 0x40, 0xbe, 0x8d, 0x3b, 0x06, 0x71, 0x02, 0xef, 0x88, 0xf5, 0x6b, 0x39, 0x3d, - 0xd7, 0xc6, 0x9d, 0x3a, 0x1d, 0xff, 0xe4, 0xf6, 0x20, 0xea, 0xc7, 0xbf, 0x4f, 0x43, 0x31, 0xda, - 0xb3, 0xd1, 0x16, 0xd8, 0x64, 0xf9, 0x59, 0x61, 0xc7, 0xf7, 0xfd, 0xa7, 0x76, 0x78, 0x4b, 0x35, - 0x9a, 0xb8, 0xb5, 0x71, 0xde, 0x49, 0xe9, 0x1c, 0x49, 0x8b, 0x26, 0x3d, 0xb0, 0x84, 0xf7, 0xe7, - 0x39, 0x5d, 0x8c, 0xd0, 0x1a, 0x8c, 0xdf, 0xf4, 0x19, 0xf7, 0x38, 0xe3, 0x7e, 0xe8, 0x74, 0xee, - 0x1b, 0xbb, 0x8c, 0x3c, 0x7f, 0x63, 0xd7, 0xd8, 0xda, 0xd6, 0x37, 0xab, 0x1b, 0xba, 0x80, 0xa3, - 0xf3, 0x90, 0xb1, 0xf1, 0x8b, 0x47, 0xf1, 0x14, 0xcf, 0x44, 0xa3, 0x3a, 0xfe, 0x3c, 0x64, 0xee, - 0x10, 0x7c, 0x2b, 0x9e, 0x58, 0x99, 0xe8, 0x27, 0x18, 0xfa, 0xcb, 0x90, 0x65, 0xfe, 0x42, 0x00, - 0xc2, 0x63, 0xea, 0x18, 0xca, 0x41, 0xa6, 0xb6, 0xad, 0xd3, 0xf0, 0x57, 0xa1, 0xc8, 0xa5, 0xc6, - 0xce, 0x7a, 0xbd, 0x56, 0x57, 0x53, 0x0b, 0x57, 0x60, 0x9c, 0x3b, 0x81, 0x1e, 0x8d, 0xd0, 0x0d, - 0xea, 0x98, 0x18, 0x0a, 0x0e, 0x45, 0xce, 0xee, 0x6f, 0xae, 0xd4, 0x75, 0x35, 0x15, 0xdd, 0x5e, - 0x1f, 0x8a, 0xd1, 0x76, 0xed, 0xa7, 0x13, 0x53, 0x7f, 0xa9, 0x40, 0x21, 0xd2, 0x7e, 0xd1, 0xc2, - 0x8f, 0x6d, 0xdb, 0xbd, 0x63, 0x60, 0xdb, 0xc2, 0xbe, 0x08, 0x0a, 0x60, 0xa2, 0x2a, 0x95, 0x8c, - 0xba, 0x69, 0x3f, 0x15, 0xe3, 0x5f, 0x55, 0x40, 0xed, 0x6f, 0xdd, 0xfa, 0x0c, 0x54, 0xde, 0x53, - 0x03, 0x5f, 0x51, 0xa0, 0x14, 0xef, 0xd7, 0xfa, 0xcc, 0xbb, 0xf8, 0x9e, 0x9a, 0xf7, 0x25, 0x05, - 0x26, 0x63, 0x5d, 0xda, 0xff, 0x2b, 0xeb, 0x5e, 0x4e, 0xc3, 0xcc, 0x10, 0x1c, 0xaa, 0x8a, 0x76, - 0x96, 0x77, 0xd8, 0x1f, 0x1a, 0xe5, 0x59, 0x4b, 0xb4, 0x5a, 0xee, 0x60, 0x2f, 0x10, 0xdd, 0xef, - 0xa3, 0xa0, 0x5a, 0x0d, 0xe2, 0x04, 0x56, 0xd3, 0x22, 0x9e, 0x78, 0x05, 0xe7, 0x3d, 0xee, 0x54, - 0x4f, 0xce, 0xdf, 0xc2, 0x3f, 0x08, 0xa8, 0xe3, 0xfa, 0x56, 0x60, 0xdd, 0x26, 0x86, 0xe5, 0xc8, - 0xf7, 0x75, 0xda, 0xf3, 0x66, 0x74, 0x55, 0xce, 0xac, 0x3b, 0x41, 0xa8, 0xed, 0x90, 0x16, 0xee, - 0xd3, 0xa6, 0xb9, 0x2f, 0xad, 0xab, 0x72, 0x26, 0xd4, 0xbe, 0x08, 0xc5, 0x86, 0xdb, 0xa5, 0xed, - 0x03, 0xd7, 0xa3, 0xa9, 0x56, 0xd1, 0x0b, 0x5c, 0x16, 0xaa, 0x88, 0xfe, 0xae, 0x77, 0x51, 0x50, - 0xd4, 0x0b, 0x5c, 0xc6, 0x55, 0x1e, 0x81, 0x29, 0xdc, 0x6a, 0x79, 0x94, 0x5c, 0x12, 0xf1, 0xa6, - 0xb5, 0x14, 0x8a, 0x99, 0xe2, 0xdc, 0x0d, 0xc8, 0x49, 0x3f, 0xd0, 0x6a, 0x46, 0x3d, 0x61, 0x74, - 0xf8, 0x75, 0x4d, 0x6a, 0x31, 0xaf, 0xe7, 0x1c, 0x39, 0x79, 0x11, 0x8a, 0x96, 0x6f, 0xf4, 0xee, - 0x0d, 0x53, 0xf3, 0xa9, 0xc5, 0x9c, 0x5e, 0xb0, 0xfc, 0xf0, 0xa2, 0x68, 0xe1, 0xb5, 0x14, 0x94, - 0xe2, 0xf7, 0x9e, 0x68, 0x15, 0x72, 0xb6, 0x6b, 0x62, 0x16, 0x08, 0xfc, 0xd2, 0x7d, 0x31, 0xe1, - 0xaa, 0x74, 0x69, 0x43, 0xe8, 0xeb, 0x21, 0x72, 0xee, 0x6f, 0x15, 0xc8, 0x49, 0x31, 0x3a, 0x07, - 0x99, 0x0e, 0x0e, 0x0e, 0x19, 0x5d, 0x76, 0x25, 0xa5, 0x2a, 0x3a, 0x1b, 0x53, 0xb9, 0xdf, 0xc1, - 0x0e, 0x0b, 0x01, 0x21, 0xa7, 0x63, 0xba, 0xaf, 0x36, 0xc1, 0x0d, 0xd6, 0x0e, 0xbb, 0xed, 0x36, - 0x71, 0x02, 0x5f, 0xee, 0xab, 0x90, 0xd7, 0x84, 0x18, 0x3d, 0x0e, 0xd3, 0x81, 0x87, 0x2d, 0x3b, - 0xa6, 0x9b, 0x61, 0xba, 0xaa, 0x9c, 0x08, 0x95, 0x35, 0x38, 0x2f, 0x79, 0x1b, 0x24, 0xc0, 0xe6, - 0x21, 0x69, 0xf4, 0x40, 0xe3, 0xec, 0x52, 0xed, 0x7e, 0xa1, 0xb0, 0x2a, 0xe6, 0x25, 0x76, 0xe1, - 0xfb, 0x0a, 0x4c, 0xcb, 0x06, 0xbe, 0x11, 0x3a, 0x6b, 0x13, 0x00, 0x3b, 0x8e, 0x1b, 0x44, 0xdd, - 0x35, 0x18, 0xca, 0x03, 0xb8, 0xa5, 0x6a, 0x08, 0xd2, 0x23, 0x04, 0x73, 0x6d, 0x80, 0xde, 0xcc, - 0x89, 0x6e, 0xbb, 0x00, 0x05, 0x71, 0xa9, 0xcd, 0xbe, 0x8c, 0xf0, 0xb7, 0x3e, 0xe0, 0x22, 0xda, - 0xe9, 0xa3, 0x59, 0xc8, 0x1e, 0x90, 0x96, 0xe5, 0x88, 0xab, 0x36, 0x3e, 0x90, 0x17, 0x78, 0x99, - 0xf0, 0x02, 0x6f, 0xe5, 0x53, 0x30, 0x63, 0xba, 0xed, 0x7e, 0x73, 0x57, 0xd4, 0xbe, 0x37, 0x4f, - 0xff, 0x63, 0xca, 0x27, 0xa1, 0xd7, 0x9d, 0x7d, 0x45, 0x51, 0xbe, 0x9a, 0x4a, 0xaf, 0xed, 0xac, - 0x7c, 0x3d, 0x35, 0xb7, 0xc6, 0xa1, 0x3b, 0x72, 0xa5, 0x3a, 0x69, 0xda, 0xc4, 0xa4, 0xd6, 0xc3, - 0x0f, 0x3f, 0x00, 0x1f, 0x6a, 0x59, 0xc1, 0x61, 0xf7, 0x60, 0xc9, 0x74, 0xdb, 0xcb, 0x2d, 0xb7, - 0xe5, 0xf6, 0x3e, 0x06, 0xd1, 0x11, 0x1b, 0xb0, 0x5f, 0xe2, 0x83, 0x50, 0x3e, 0x94, 0xce, 0x25, - 0x7e, 0x3d, 0xd2, 0xb6, 0x60, 0x46, 0x28, 0x1b, 0xec, 0x46, 0x9a, 0xf7, 0xe1, 0xe8, 0xd4, 0x5b, - 0x89, 0xf2, 0x37, 0xdf, 0x60, 0x95, 0x4e, 0x9f, 0x16, 0x50, 0x3a, 0xc7, 0x3b, 0x75, 0x4d, 0x87, - 0xfb, 0x62, 0x7c, 0xfc, 0x68, 0x12, 0x2f, 0x81, 0xf1, 0xbb, 0x82, 0x71, 0x26, 0xc2, 0xb8, 0x2b, - 0xa0, 0x5a, 0x0d, 0x26, 0xcf, 0xc2, 0xf5, 0xd7, 0x82, 0xab, 0x48, 0xa2, 0x24, 0x6b, 0x30, 0xc5, - 0x48, 0xcc, 0xae, 0x1f, 0xb8, 0x6d, 0x96, 0xf7, 0x4e, 0xa7, 0xf9, 0x9b, 0x37, 0xf8, 0x59, 0x29, - 0x51, 0x58, 0x2d, 0x44, 0x69, 0x1a, 0xb0, 0x4b, 0xf8, 0x06, 0x31, 0xed, 0x04, 0x86, 0xd7, 0x85, - 0x21, 0xa1, 0xbe, 0xf6, 0x09, 0x98, 0xa5, 0xbf, 0x59, 0x5a, 0x8a, 0x5a, 0x92, 0x7c, 0x07, 0x53, - 0xfe, 0xfe, 0x4b, 0xfc, 0x38, 0xce, 0x84, 0x04, 0x11, 0x9b, 0x22, 0xbb, 0xd8, 0x22, 0x41, 0x40, - 0x3c, 0xdf, 0xc0, 0xf6, 0x30, 0xf3, 0x22, 0x6f, 0xb0, 0xe5, 0x2f, 0xbe, 0x15, 0xdf, 0xc5, 0x35, - 0x8e, 0xac, 0xda, 0xb6, 0xb6, 0x0f, 0xf7, 0x0f, 0x89, 0x8a, 0x11, 0x38, 0x5f, 0x16, 0x9c, 0xb3, - 0x03, 0x91, 0x41, 0x69, 0x77, 0x40, 0xca, 0xc3, 0xbd, 0x1c, 0x81, 0xf3, 0x4b, 0x82, 0x13, 0x09, - 0xac, 0xdc, 0x52, 0xca, 0x78, 0x03, 0xa6, 0x6f, 0x13, 0xef, 0xc0, 0xf5, 0xc5, 0xc5, 0xc1, 0x08, - 0x74, 0xaf, 0x08, 0xba, 0x29, 0x01, 0x64, 0xd7, 0x08, 0x94, 0xeb, 0x29, 0xc8, 0x35, 0xb1, 0x49, - 0x46, 0xa0, 0xf8, 0xb2, 0xa0, 0x98, 0xa0, 0xfa, 0x14, 0x5a, 0x85, 0x62, 0xcb, 0x15, 0x95, 0x29, - 0x19, 0xfe, 0xaa, 0x80, 0x17, 0x24, 0x46, 0x50, 0x74, 0xdc, 0x4e, 0xd7, 0xa6, 0x65, 0x2b, 0x99, - 0xe2, 0xb7, 0x24, 0x85, 0xc4, 0x08, 0x8a, 0x33, 0xb8, 0xf5, 0x2b, 0x92, 0xc2, 0x8f, 0xf8, 0xf3, - 0x69, 0x28, 0xb8, 0x8e, 0x7d, 0xe4, 0x3a, 0xa3, 0x18, 0xf1, 0xdb, 0x82, 0x01, 0x04, 0x84, 0x12, - 0x5c, 0x87, 0xfc, 0xa8, 0x1b, 0xf1, 0x3b, 0x6f, 0xc9, 0xe3, 0x21, 0x77, 0x60, 0x0d, 0xa6, 0x64, - 0x82, 0xb2, 0x5c, 0x67, 0x04, 0x8a, 0xdf, 0x15, 0x14, 0xa5, 0x08, 0x4c, 0x2c, 0x23, 0x20, 0x7e, - 0xd0, 0x22, 0xa3, 0x90, 0xbc, 0x26, 0x97, 0x21, 0x20, 0xc2, 0x95, 0x07, 0xc4, 0x31, 0x0f, 0x47, - 0x63, 0xf8, 0x9a, 0x74, 0xa5, 0xc4, 0x50, 0x8a, 0x1a, 0x4c, 0xb6, 0xb1, 0xe7, 0x1f, 0x62, 0x7b, - 0xa4, 0xed, 0xf8, 0x3d, 0xc1, 0x51, 0x0c, 0x41, 0xc2, 0x23, 0x5d, 0xe7, 0x2c, 0x34, 0x5f, 0x97, - 0x1e, 0x89, 0xc0, 0xc4, 0xd1, 0xf3, 0x03, 0x76, 0x37, 0x73, 0x16, 0xb6, 0xdf, 0x97, 0x47, 0x8f, - 0x63, 0x37, 0xa3, 0x8c, 0xd7, 0x21, 0xef, 0x5b, 0x2f, 0x8e, 0x44, 0xf3, 0x07, 0x72, 0xa7, 0x19, - 0x80, 0x82, 0x9f, 0x87, 0xf3, 0x43, 0xcb, 0xc4, 0x08, 0x64, 0x7f, 0x28, 0xc8, 0xce, 0x0d, 0x29, - 0x15, 0x22, 0x25, 0x9c, 0x95, 0xf2, 0x8f, 0x64, 0x4a, 0x20, 0x7d, 0x5c, 0x3b, 0xb4, 0xb3, 0xf7, - 0x71, 0xf3, 0x6c, 0x5e, 0xfb, 0x63, 0xe9, 0x35, 0x8e, 0x8d, 0x79, 0x6d, 0x0f, 0xce, 0x09, 0xc6, - 0xb3, 0xed, 0xeb, 0x37, 0x64, 0x62, 0xe5, 0xe8, 0xfd, 0xf8, 0xee, 0x7e, 0x0a, 0xe6, 0x42, 0x77, - 0xca, 0xa6, 0xd4, 0x37, 0xda, 0xb8, 0x33, 0x02, 0xf3, 0x37, 0x05, 0xb3, 0xcc, 0xf8, 0x61, 0x57, - 0xeb, 0x6f, 0xe2, 0x0e, 0x25, 0x7f, 0x0e, 0xca, 0x92, 0xbc, 0xeb, 0x78, 0xc4, 0x74, 0x5b, 0x8e, - 0xf5, 0x22, 0x69, 0x8c, 0x40, 0xfd, 0x27, 0x7d, 0x5b, 0xb5, 0x1f, 0x81, 0x53, 0xe6, 0x75, 0x50, - 0xc3, 0x5e, 0xc5, 0xb0, 0xda, 0x1d, 0xd7, 0x0b, 0x12, 0x18, 0xff, 0x54, 0xee, 0x54, 0x88, 0x5b, - 0x67, 0x30, 0xad, 0x0e, 0x25, 0x36, 0x1c, 0x35, 0x24, 0xff, 0x4c, 0x10, 0x4d, 0xf6, 0x50, 0x22, - 0x71, 0x98, 0x6e, 0xbb, 0x83, 0xbd, 0x51, 0xf2, 0xdf, 0x9f, 0xcb, 0xc4, 0x21, 0x20, 0x22, 0x71, - 0x04, 0x47, 0x1d, 0x42, 0xab, 0xfd, 0x08, 0x0c, 0xdf, 0x92, 0x89, 0x43, 0x62, 0x04, 0x85, 0x6c, - 0x18, 0x46, 0xa0, 0xf8, 0x0b, 0x49, 0x21, 0x31, 0x94, 0xe2, 0xe3, 0xbd, 0x42, 0xeb, 0x91, 0x96, - 0xe5, 0x07, 0x1e, 0x6f, 0x85, 0x4f, 0xa7, 0xfa, 0xf6, 0x5b, 0xf1, 0x26, 0x4c, 0x8f, 0x40, 0xb5, - 0x1b, 0x30, 0xd5, 0xd7, 0x62, 0xa0, 0xa4, 0x2f, 0xfa, 0xe5, 0x4f, 0xbf, 0x23, 0x92, 0x51, 0xbc, - 0xc3, 0xd0, 0x36, 0xe8, 0xbe, 0xc7, 0xfb, 0x80, 0x64, 0xb2, 0x97, 0xde, 0x09, 0xb7, 0x3e, 0xd6, - 0x06, 0x68, 0xcf, 0xc0, 0x64, 0xac, 0x07, 0x48, 0xa6, 0xfa, 0x8c, 0xa0, 0x2a, 0x46, 0x5b, 0x00, - 0xed, 0x0a, 0x64, 0x68, 0x3d, 0x4f, 0x86, 0xff, 0x9c, 0x80, 0x33, 0x75, 0xed, 0x23, 0x90, 0x93, - 0x75, 0x3c, 0x19, 0xfa, 0xf3, 0x02, 0x1a, 0x42, 0x28, 0x5c, 0xd6, 0xf0, 0x64, 0xf8, 0x2f, 0x48, - 0xb8, 0x84, 0x50, 0xf8, 0xe8, 0x2e, 0xfc, 0xce, 0xe7, 0x32, 0x22, 0x0f, 0x4b, 0xdf, 0x5d, 0x87, - 0x09, 0x51, 0xbc, 0x93, 0xd1, 0x9f, 0x15, 0x0f, 0x97, 0x08, 0xed, 0x49, 0xc8, 0x8e, 0xe8, 0xf0, - 0x5f, 0x12, 0x50, 0xae, 0xaf, 0xd5, 0xa0, 0x10, 0x29, 0xd8, 0xc9, 0xf0, 0xcf, 0x0b, 0x78, 0x14, - 0x45, 0x4d, 0x17, 0x05, 0x3b, 0x99, 0xe0, 0x97, 0xa5, 0xe9, 0x02, 0x41, 0xdd, 0x26, 0x6b, 0x75, - 0x32, 0xfa, 0x57, 0xa4, 0xd7, 0x25, 0x44, 0x7b, 0x1a, 0xf2, 0x61, 0xfe, 0x4d, 0xc6, 0xff, 0xaa, - 0xc0, 0xf7, 0x30, 0xd4, 0x03, 0x91, 0xfc, 0x9f, 0x4c, 0xf1, 0x6b, 0xd2, 0x03, 0x11, 0x14, 0x3d, - 0x46, 0xfd, 0x35, 0x3d, 0x99, 0xe9, 0xd7, 0xe5, 0x31, 0xea, 0x2b, 0xe9, 0x74, 0x37, 0x59, 0x1a, - 0x4c, 0xa6, 0xf8, 0x0d, 0xb9, 0x9b, 0x4c, 0x9f, 0x9a, 0xd1, 0x5f, 0x24, 0x93, 0x39, 0x7e, 0x53, - 0x9a, 0xd1, 0x57, 0x23, 0xb5, 0x1d, 0x40, 0x83, 0x05, 0x32, 0x99, 0xef, 0x0b, 0x82, 0x6f, 0x7a, - 0xa0, 0x3e, 0x6a, 0xcf, 0xc2, 0xb9, 0xe1, 0xc5, 0x31, 0x99, 0xf5, 0x8b, 0xef, 0xf4, 0xbd, 0xce, - 0x44, 0x6b, 0xa3, 0xb6, 0xd7, 0xcb, 0xb2, 0xd1, 0xc2, 0x98, 0x4c, 0xfb, 0xf2, 0x3b, 0xf1, 0x44, - 0x1b, 0xad, 0x8b, 0x5a, 0x15, 0xa0, 0x57, 0x93, 0x92, 0xb9, 0x5e, 0x11, 0x5c, 0x11, 0x10, 0x3d, - 0x1a, 0xa2, 0x24, 0x25, 0xe3, 0xbf, 0x2c, 0x8f, 0x86, 0x40, 0xd0, 0xa3, 0x21, 0xab, 0x51, 0x32, - 0xfa, 0x55, 0x79, 0x34, 0x24, 0x44, 0xbb, 0x0e, 0x39, 0xa7, 0x6b, 0xdb, 0x34, 0xb6, 0xd0, 0xe9, - 0xff, 0x64, 0x53, 0xfe, 0x97, 0x77, 0x05, 0x58, 0x02, 0xb4, 0x2b, 0x90, 0x25, 0xed, 0x03, 0xd2, - 0x48, 0x42, 0xfe, 0xeb, 0xbb, 0x32, 0x9f, 0x50, 0x6d, 0xed, 0x69, 0x00, 0xfe, 0x32, 0xcd, 0xbe, - 0xb1, 0x24, 0x60, 0xff, 0xed, 0x5d, 0xf1, 0xfd, 0xbe, 0x07, 0xe9, 0x11, 0xf0, 0xff, 0x06, 0x38, - 0x9d, 0xe0, 0xad, 0x38, 0x01, 0x7b, 0x01, 0x7f, 0x0a, 0x26, 0x6e, 0xfa, 0xae, 0x13, 0xe0, 0x56, - 0x12, 0xfa, 0xdf, 0x05, 0x5a, 0xea, 0x53, 0x87, 0xb5, 0x5d, 0x8f, 0x04, 0xb8, 0xe5, 0x27, 0x61, - 0xff, 0x43, 0x60, 0x43, 0x00, 0x05, 0x9b, 0xd8, 0x0f, 0x46, 0x59, 0xf7, 0x7f, 0x4a, 0xb0, 0x04, - 0x50, 0xa3, 0xe9, 0xef, 0x5b, 0xe4, 0x28, 0x09, 0xfb, 0xb6, 0x34, 0x5a, 0xe8, 0x6b, 0x1f, 0x81, - 0x3c, 0xfd, 0xc9, 0xff, 0xa7, 0x25, 0x01, 0xfc, 0x5f, 0x02, 0xdc, 0x43, 0xd0, 0x27, 0xfb, 0x41, - 0x23, 0xb0, 0x92, 0x9d, 0xfd, 0xdf, 0x62, 0xa7, 0xa5, 0xbe, 0x56, 0x85, 0x82, 0x1f, 0x34, 0x1a, - 0x5d, 0xd1, 0xd1, 0x24, 0xc0, 0x7f, 0xf8, 0x6e, 0xf8, 0x92, 0x1b, 0x62, 0x56, 0x2e, 0x0e, 0xbf, - 0xaf, 0x83, 0x35, 0x77, 0xcd, 0xe5, 0x37, 0x75, 0xf0, 0xf9, 0x2c, 0xcc, 0x9b, 0x6e, 0xfb, 0xc0, - 0xf5, 0x97, 0xc3, 0x44, 0xb2, 0x1c, 0xda, 0x2f, 0x2f, 0xda, 0x42, 0xc1, 0xdc, 0xd9, 0xae, 0xe8, - 0x16, 0xfe, 0x2a, 0x0d, 0xb9, 0x1a, 0xf6, 0x03, 0x7c, 0x07, 0x1f, 0xa1, 0x0e, 0xcc, 0xd0, 0xdf, - 0x9b, 0xb8, 0xc3, 0x2e, 0x7c, 0xc4, 0x09, 0x13, 0xb7, 0xa0, 0x1f, 0x5c, 0xea, 0x3d, 0x55, 0x22, - 0x96, 0x86, 0xa8, 0xb3, 0x0f, 0xaf, 0x2b, 0xea, 0xeb, 0xff, 0x70, 0x61, 0xec, 0x17, 0xff, 0xf1, - 0x42, 0x6e, 0xf3, 0xe8, 0x59, 0xcb, 0xf6, 0x5d, 0x47, 0x1f, 0x46, 0x8d, 0x3e, 0xa3, 0xc0, 0x03, - 0x43, 0xe4, 0x5b, 0xe2, 0x18, 0x8a, 0x6f, 0x09, 0x97, 0x47, 0x7c, 0xb4, 0x84, 0x71, 0x13, 0x8a, - 0xb1, 0xc7, 0x9f, 0xf6, 0x98, 0xb9, 0xe7, 0xa1, 0x7c, 0xd2, 0x4a, 0x90, 0x0a, 0xe9, 0x5b, 0xe4, - 0x48, 0xfc, 0xeb, 0x24, 0xfd, 0x89, 0x1e, 0xe9, 0xfd, 0xeb, 0x95, 0xb2, 0x58, 0xb8, 0x34, 0x1d, - 0xb1, 0x4e, 0x3c, 0x8c, 0xcf, 0x6b, 0xa9, 0x6b, 0xca, 0x1c, 0x86, 0xf9, 0x24, 0x4b, 0xff, 0x8f, - 0x8f, 0x58, 0xa8, 0xc0, 0x38, 0x17, 0xa2, 0x59, 0xc8, 0xae, 0x3b, 0xc1, 0xd5, 0xcb, 0x8c, 0x2a, - 0xad, 0xf3, 0xc1, 0xca, 0xc6, 0xeb, 0xf7, 0x2a, 0x63, 0xdf, 0xbb, 0x57, 0x19, 0xfb, 0xbb, 0x7b, - 0x95, 0xb1, 0x1f, 0xdc, 0xab, 0x28, 0x6f, 0xde, 0xab, 0x28, 0x6f, 0xdf, 0xab, 0x28, 0x3f, 0xba, - 0x57, 0x51, 0xee, 0x1e, 0x57, 0x94, 0xaf, 0x1d, 0x57, 0x94, 0x6f, 0x1c, 0x57, 0x94, 0x6f, 0x1f, - 0x57, 0x94, 0xef, 0x1c, 0x57, 0x94, 0xd7, 0x8f, 0x2b, 0xca, 0xf7, 0x8e, 0x2b, 0x63, 0x3f, 0x38, - 0xae, 0x28, 0x6f, 0x1e, 0x57, 0xc6, 0xde, 0x3e, 0xae, 0x28, 0x3f, 0x3a, 0xae, 0x8c, 0xdd, 0xfd, - 0xa7, 0xca, 0xd8, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x5e, 0xd3, 0xe8, 0x0b, 0x30, 0x00, + // 3793 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x29, 0x88, 0x8e, 0x21, 0x8a, 0xb1, + 0x23, 0xda, 0x4e, 0xc8, 0x8c, 0x2c, 0xc9, 0x32, 0xd4, 0xc4, 0x03, 0x82, 0x10, 0x03, 0x95, 0x24, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0x27, 0xed, 0x34, 0xfd, 0x9d, 0x69, 0xe2, 0x3a, 0x6e, 0x9b, + 0x99, 0xd6, 0x69, 0xd2, 0x9f, 0xa4, 0x3f, 0x69, 0xa6, 0x4f, 0xe9, 0x43, 0x5a, 0x3f, 0x75, 0x92, + 0xb7, 0x3e, 0x74, 0x5a, 0x8b, 0xf1, 0x4c, 0xdd, 0xd6, 0x6d, 0xdd, 0xc6, 0x33, 0xcd, 0x8c, 0x5e, + 0x3a, 0xf7, 0x6f, 0xb1, 0x0b, 0x80, 0x5c, 0x30, 0x1d, 0x27, 0x4f, 0xc4, 0x3d, 0xf7, 0x7c, 0xdf, + 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x9c, 0xbd, 0x4b, 0xf8, 0xfe, 0x65, 0x58, 0x6a, 0xdb, 0x76, 0xdb, + 0xc4, 0x6b, 0x5d, 0xc7, 0xf6, 0xec, 0xfd, 0x5e, 0x6b, 0xad, 0x89, 0x5d, 0xdd, 0x31, 0xba, 0x9e, + 0xed, 0xac, 0x52, 0x99, 0x32, 0xc3, 0x34, 0x56, 0x85, 0xc6, 0xf2, 0x36, 0xcc, 0x5e, 0x37, 0x4c, + 0xbc, 0xe1, 0x2b, 0x36, 0xb0, 0xa7, 0x5c, 0x85, 0x44, 0xcb, 0x30, 0x71, 0x5e, 0x5a, 0x8a, 0xaf, + 0x64, 0x2e, 0x3e, 0xbe, 0x3a, 0x00, 0x5a, 0x0d, 0x23, 0xea, 0x44, 0xac, 0x52, 0xc4, 0xf2, 0x5b, + 0x09, 0x98, 0x1b, 0x31, 0xab, 0x28, 0x90, 0xb0, 0x50, 0x87, 0x30, 0x4a, 0x2b, 0x69, 0x95, 0xfe, + 0x56, 0xf2, 0x30, 0xd5, 0x45, 0xfa, 0x1d, 0xd4, 0xc6, 0xf9, 0x18, 0x15, 0x8b, 0xa1, 0x52, 0x00, + 0x68, 0xe2, 0x2e, 0xb6, 0x9a, 0xd8, 0xd2, 0x0f, 0xf3, 0xf1, 0xa5, 0xf8, 0x4a, 0x5a, 0x0d, 0x48, + 0x94, 0xa7, 0x61, 0xb6, 0xdb, 0xdb, 0x37, 0x0d, 0x5d, 0x0b, 0xa8, 0xc1, 0x52, 0x7c, 0x25, 0xa9, + 0xca, 0x6c, 0x62, 0xa3, 0xaf, 0x7c, 0x01, 0x66, 0xee, 0x61, 0x74, 0x27, 0xa8, 0x9a, 0xa1, 0xaa, + 0x39, 0x22, 0x0e, 0x28, 0x96, 0x21, 0xdb, 0xc1, 0xae, 0x8b, 0xda, 0x58, 0xf3, 0x0e, 0xbb, 0x38, + 0x9f, 0xa0, 0xab, 0x5f, 0x1a, 0x5a, 0xfd, 0xe0, 0xca, 0x33, 0x1c, 0xb5, 0x7b, 0xd8, 0xc5, 0x4a, + 0x09, 0xd2, 0xd8, 0xea, 0x75, 0x18, 0x43, 0xf2, 0x18, 0xff, 0x55, 0xac, 0x5e, 0x67, 0x90, 0x25, + 0x45, 0x60, 0x9c, 0x62, 0xca, 0xc5, 0xce, 0x5d, 0x43, 0xc7, 0xf9, 0x49, 0x4a, 0x70, 0x61, 0x88, + 0xa0, 0xc1, 0xe6, 0x07, 0x39, 0x04, 0x4e, 0x29, 0x43, 0x1a, 0xbf, 0xe8, 0x61, 0xcb, 0x35, 0x6c, + 0x2b, 0x3f, 0x45, 0x49, 0x9e, 0x18, 0xb1, 0x8b, 0xd8, 0x6c, 0x0e, 0x52, 0xf4, 0x71, 0xca, 0x15, + 0x98, 0xb2, 0xbb, 0x9e, 0x61, 0x5b, 0x6e, 0x3e, 0xb5, 0x24, 0xad, 0x64, 0x2e, 0x7e, 0x60, 0x64, + 0x20, 0xd4, 0x98, 0x8e, 0x2a, 0x94, 0x95, 0x2a, 0xc8, 0xae, 0xdd, 0x73, 0x74, 0xac, 0xe9, 0x76, + 0x13, 0x6b, 0x86, 0xd5, 0xb2, 0xf3, 0x69, 0x4a, 0x70, 0x6e, 0x78, 0x21, 0x54, 0xb1, 0x6c, 0x37, + 0x71, 0xd5, 0x6a, 0xd9, 0x6a, 0xce, 0x0d, 0x8d, 0x95, 0x05, 0x98, 0x74, 0x0f, 0x2d, 0x0f, 0xbd, + 0x98, 0xcf, 0xd2, 0x08, 0xe1, 0xa3, 0xe5, 0xff, 0x4d, 0xc2, 0xcc, 0x38, 0x21, 0x76, 0x0d, 0x92, + 0x2d, 0xb2, 0xca, 0x7c, 0xec, 0x34, 0x3e, 0x60, 0x98, 0xb0, 0x13, 0x27, 0x7f, 0x44, 0x27, 0x96, + 0x20, 0x63, 0x61, 0xd7, 0xc3, 0x4d, 0x16, 0x11, 0xf1, 0x31, 0x63, 0x0a, 0x18, 0x68, 0x38, 0xa4, + 0x12, 0x3f, 0x52, 0x48, 0xdd, 0x84, 0x19, 0xdf, 0x24, 0xcd, 0x41, 0x56, 0x5b, 0xc4, 0xe6, 0x5a, + 0x94, 0x25, 0xab, 0x15, 0x81, 0x53, 0x09, 0x4c, 0xcd, 0xe1, 0xd0, 0x58, 0xd9, 0x00, 0xb0, 0x2d, + 0x6c, 0xb7, 0xb4, 0x26, 0xd6, 0xcd, 0x7c, 0xea, 0x18, 0x2f, 0xd5, 0x88, 0xca, 0x90, 0x97, 0x6c, + 0x26, 0xd5, 0x4d, 0xe5, 0xb9, 0x7e, 0xa8, 0x4d, 0x1d, 0x13, 0x29, 0xdb, 0xec, 0x90, 0x0d, 0x45, + 0xdb, 0x1e, 0xe4, 0x1c, 0x4c, 0xe2, 0x1e, 0x37, 0xf9, 0xca, 0xd2, 0xd4, 0x88, 0xd5, 0xc8, 0x95, + 0xa9, 0x1c, 0xc6, 0x16, 0x36, 0xed, 0x04, 0x87, 0xca, 0x07, 0xc1, 0x17, 0x68, 0x34, 0xac, 0x80, + 0x66, 0xa1, 0xac, 0x10, 0xee, 0xa0, 0x0e, 0x5e, 0xbc, 0x0a, 0xb9, 0xb0, 0x7b, 0x94, 0x79, 0x48, + 0xba, 0x1e, 0x72, 0x3c, 0x1a, 0x85, 0x49, 0x95, 0x0d, 0x14, 0x19, 0xe2, 0xd8, 0x6a, 0xd2, 0x2c, + 0x97, 0x54, 0xc9, 0xcf, 0xc5, 0x67, 0x61, 0x3a, 0xf4, 0xf8, 0x71, 0x81, 0xcb, 0x5f, 0x98, 0x84, + 0xf9, 0x51, 0x31, 0x37, 0x32, 0xfc, 0x17, 0x60, 0xd2, 0xea, 0x75, 0xf6, 0xb1, 0x93, 0x8f, 0x53, + 0x06, 0x3e, 0x52, 0x4a, 0x90, 0x34, 0xd1, 0x3e, 0x36, 0xf3, 0x89, 0x25, 0x69, 0x25, 0x77, 0xf1, + 0xe9, 0xb1, 0xa2, 0x7a, 0x75, 0x8b, 0x40, 0x54, 0x86, 0x54, 0x3e, 0x0e, 0x09, 0x9e, 0xe2, 0x08, + 0xc3, 0x53, 0xe3, 0x31, 0x90, 0x58, 0x54, 0x29, 0x4e, 0x79, 0x14, 0xd2, 0xe4, 0x2f, 0xf3, 0xed, + 0x24, 0xb5, 0x39, 0x45, 0x04, 0xc4, 0xaf, 0xca, 0x22, 0xa4, 0x68, 0x98, 0x35, 0xb1, 0x28, 0x0d, + 0xfe, 0x98, 0x6c, 0x4c, 0x13, 0xb7, 0x50, 0xcf, 0xf4, 0xb4, 0xbb, 0xc8, 0xec, 0x61, 0x1a, 0x30, + 0x69, 0x35, 0xcb, 0x85, 0x9f, 0x22, 0x32, 0xe5, 0x1c, 0x64, 0x58, 0x54, 0x1a, 0x56, 0x13, 0xbf, + 0x48, 0xb3, 0x4f, 0x52, 0x65, 0x81, 0x5a, 0x25, 0x12, 0xf2, 0xf8, 0xdb, 0xae, 0x6d, 0x89, 0xad, + 0xa5, 0x8f, 0x20, 0x02, 0xfa, 0xf8, 0x67, 0x07, 0x13, 0xdf, 0x63, 0xa3, 0x97, 0x37, 0x18, 0x8b, + 0xcb, 0xdf, 0x8c, 0x41, 0x82, 0x9e, 0xb7, 0x19, 0xc8, 0xec, 0xde, 0xaa, 0x57, 0xb4, 0x8d, 0xda, + 0xde, 0xfa, 0x56, 0x45, 0x96, 0x94, 0x1c, 0x00, 0x15, 0x5c, 0xdf, 0xaa, 0x95, 0x76, 0xe5, 0x98, + 0x3f, 0xae, 0xee, 0xec, 0x5e, 0xb9, 0x24, 0xc7, 0x7d, 0xc0, 0x1e, 0x13, 0x24, 0x82, 0x0a, 0xcf, + 0x5c, 0x94, 0x93, 0x8a, 0x0c, 0x59, 0x46, 0x50, 0xbd, 0x59, 0xd9, 0xb8, 0x72, 0x49, 0x9e, 0x0c, + 0x4b, 0x9e, 0xb9, 0x28, 0x4f, 0x29, 0xd3, 0x90, 0xa6, 0x92, 0xf5, 0x5a, 0x6d, 0x4b, 0x4e, 0xf9, + 0x9c, 0x8d, 0x5d, 0xb5, 0xba, 0xb3, 0x29, 0xa7, 0x7d, 0xce, 0x4d, 0xb5, 0xb6, 0x57, 0x97, 0xc1, + 0x67, 0xd8, 0xae, 0x34, 0x1a, 0xa5, 0xcd, 0x8a, 0x9c, 0xf1, 0x35, 0xd6, 0x6f, 0xed, 0x56, 0x1a, + 0x72, 0x36, 0x64, 0xd6, 0x33, 0x17, 0xe5, 0x69, 0xff, 0x11, 0x95, 0x9d, 0xbd, 0x6d, 0x39, 0xa7, + 0xcc, 0xc2, 0x34, 0x7b, 0x84, 0x30, 0x62, 0x66, 0x40, 0x74, 0xe5, 0x92, 0x2c, 0xf7, 0x0d, 0x61, + 0x2c, 0xb3, 0x21, 0xc1, 0x95, 0x4b, 0xb2, 0xb2, 0x5c, 0x86, 0x24, 0x8d, 0x2e, 0x45, 0x81, 0xdc, + 0x56, 0x69, 0xbd, 0xb2, 0xa5, 0xd5, 0xea, 0xbb, 0xd5, 0xda, 0x4e, 0x69, 0x4b, 0x96, 0xfa, 0x32, + 0xb5, 0xf2, 0xc9, 0xbd, 0xaa, 0x5a, 0xd9, 0x90, 0x63, 0x41, 0x59, 0xbd, 0x52, 0xda, 0xad, 0x6c, + 0xc8, 0xf1, 0x65, 0x1d, 0xe6, 0x47, 0xe5, 0x99, 0x91, 0x27, 0x23, 0xb0, 0xc5, 0xb1, 0x63, 0xb6, + 0x98, 0x72, 0x0d, 0x6d, 0xf1, 0x97, 0x25, 0x98, 0x1b, 0x91, 0x6b, 0x47, 0x3e, 0xe4, 0x79, 0x48, + 0xb2, 0x10, 0x65, 0xd5, 0xe7, 0xc9, 0x91, 0x49, 0x9b, 0x06, 0xec, 0x50, 0x05, 0xa2, 0xb8, 0x60, + 0x05, 0x8e, 0x1f, 0x53, 0x81, 0x09, 0xc5, 0x90, 0x91, 0x2f, 0x4b, 0x90, 0x3f, 0x8e, 0x3b, 0x22, + 0x51, 0xc4, 0x42, 0x89, 0xe2, 0xda, 0xa0, 0x01, 0xe7, 0x8f, 0x5f, 0xc3, 0x90, 0x15, 0xaf, 0x4b, + 0xb0, 0x30, 0xba, 0x51, 0x19, 0x69, 0xc3, 0xc7, 0x61, 0xb2, 0x83, 0xbd, 0x03, 0x5b, 0x14, 0xeb, + 0x0f, 0x8d, 0x28, 0x01, 0x64, 0x7a, 0xd0, 0x57, 0x1c, 0x15, 0xac, 0x21, 0xf1, 0xe3, 0xba, 0x0d, + 0x66, 0xcd, 0x90, 0xa5, 0x9f, 0x8b, 0xc1, 0x23, 0x23, 0xc9, 0x47, 0x1a, 0xfa, 0x18, 0x80, 0x61, + 0x75, 0x7b, 0x1e, 0x2b, 0xc8, 0x2c, 0x3f, 0xa5, 0xa9, 0x84, 0x9e, 0x7d, 0x92, 0x7b, 0x7a, 0x9e, + 0x3f, 0x1f, 0xa7, 0xf3, 0xc0, 0x44, 0x54, 0xe1, 0x6a, 0xdf, 0xd0, 0x04, 0x35, 0xb4, 0x70, 0xcc, + 0x4a, 0x87, 0x6a, 0xdd, 0x47, 0x41, 0xd6, 0x4d, 0x03, 0x5b, 0x9e, 0xe6, 0x7a, 0x0e, 0x46, 0x1d, + 0xc3, 0x6a, 0xd3, 0x04, 0x9c, 0x2a, 0x26, 0x5b, 0xc8, 0x74, 0xb1, 0x3a, 0xc3, 0xa6, 0x1b, 0x62, + 0x96, 0x20, 0x68, 0x95, 0x71, 0x02, 0x88, 0xc9, 0x10, 0x82, 0x4d, 0xfb, 0x88, 0xe5, 0xaf, 0x4d, + 0x41, 0x26, 0xd0, 0xd6, 0x29, 0xe7, 0x21, 0x7b, 0x1b, 0xdd, 0x45, 0x9a, 0x68, 0xd5, 0x99, 0x27, + 0x32, 0x44, 0x56, 0xe7, 0xed, 0xfa, 0x47, 0x61, 0x9e, 0xaa, 0xd8, 0x3d, 0x0f, 0x3b, 0x9a, 0x6e, + 0x22, 0xd7, 0xa5, 0x4e, 0x4b, 0x51, 0x55, 0x85, 0xcc, 0xd5, 0xc8, 0x54, 0x59, 0xcc, 0x28, 0x97, + 0x61, 0x8e, 0x22, 0x3a, 0x3d, 0xd3, 0x33, 0xba, 0x26, 0xd6, 0xc8, 0xcb, 0x83, 0x4b, 0x13, 0xb1, + 0x6f, 0xd9, 0x2c, 0xd1, 0xd8, 0xe6, 0x0a, 0xc4, 0x22, 0x57, 0xd9, 0x80, 0xc7, 0x28, 0xac, 0x8d, + 0x2d, 0xec, 0x20, 0x0f, 0x6b, 0xf8, 0x33, 0x3d, 0x64, 0xba, 0x1a, 0xb2, 0x9a, 0xda, 0x01, 0x72, + 0x0f, 0xf2, 0xf3, 0x84, 0x60, 0x3d, 0x96, 0x97, 0xd4, 0xb3, 0x44, 0x71, 0x93, 0xeb, 0x55, 0xa8, + 0x5a, 0xc9, 0x6a, 0x7e, 0x02, 0xb9, 0x07, 0x4a, 0x11, 0x16, 0x28, 0x8b, 0xeb, 0x39, 0x86, 0xd5, + 0xd6, 0xf4, 0x03, 0xac, 0xdf, 0xd1, 0x7a, 0x5e, 0xeb, 0x6a, 0xfe, 0xd1, 0xe0, 0xf3, 0xa9, 0x85, + 0x0d, 0xaa, 0x53, 0x26, 0x2a, 0x7b, 0x5e, 0xeb, 0xaa, 0xd2, 0x80, 0x2c, 0xd9, 0x8c, 0x8e, 0xf1, + 0x12, 0xd6, 0x5a, 0xb6, 0x43, 0x2b, 0x4b, 0x6e, 0xc4, 0xc9, 0x0e, 0x78, 0x70, 0xb5, 0xc6, 0x01, + 0xdb, 0x76, 0x13, 0x17, 0x93, 0x8d, 0x7a, 0xa5, 0xb2, 0xa1, 0x66, 0x04, 0xcb, 0x75, 0xdb, 0x21, + 0x01, 0xd5, 0xb6, 0x7d, 0x07, 0x67, 0x58, 0x40, 0xb5, 0x6d, 0xe1, 0xde, 0xcb, 0x30, 0xa7, 0xeb, + 0x6c, 0xcd, 0x86, 0xae, 0xf1, 0x16, 0xdf, 0xcd, 0xcb, 0x21, 0x67, 0xe9, 0xfa, 0x26, 0x53, 0xe0, + 0x31, 0xee, 0x2a, 0xcf, 0xc1, 0x23, 0x7d, 0x67, 0x05, 0x81, 0xb3, 0x43, 0xab, 0x1c, 0x84, 0x5e, + 0x86, 0xb9, 0xee, 0xe1, 0x30, 0x50, 0x09, 0x3d, 0xb1, 0x7b, 0x38, 0x08, 0x7b, 0x82, 0xbe, 0xb6, + 0x39, 0x58, 0x47, 0x1e, 0x6e, 0xe6, 0xcf, 0x04, 0xb5, 0x03, 0x13, 0xca, 0x1a, 0xc8, 0xba, 0xae, + 0x61, 0x0b, 0xed, 0x9b, 0x58, 0x43, 0x0e, 0xb6, 0x90, 0x9b, 0x3f, 0x17, 0x54, 0xce, 0xe9, 0x7a, + 0x85, 0xce, 0x96, 0xe8, 0xa4, 0xf2, 0x14, 0xcc, 0xda, 0xfb, 0xb7, 0x75, 0x16, 0x59, 0x5a, 0xd7, + 0xc1, 0x2d, 0xe3, 0xc5, 0xfc, 0xe3, 0xd4, 0x4d, 0x33, 0x64, 0x82, 0xc6, 0x55, 0x9d, 0x8a, 0x95, + 0x27, 0x41, 0xd6, 0xdd, 0x03, 0xe4, 0x74, 0x69, 0x69, 0x77, 0xbb, 0x48, 0xc7, 0xf9, 0x27, 0x98, + 0x2a, 0x93, 0xef, 0x08, 0x31, 0x89, 0x6c, 0xf7, 0x9e, 0xd1, 0xf2, 0x04, 0xe3, 0x05, 0x16, 0xd9, + 0x54, 0xc6, 0xd9, 0x6e, 0xc2, 0x7c, 0xcf, 0x32, 0x2c, 0x0f, 0x3b, 0x5d, 0x07, 0x93, 0x26, 0x9e, + 0x9d, 0xc4, 0xfc, 0xbf, 0x4c, 0x1d, 0xd3, 0x86, 0xef, 0x05, 0xb5, 0x59, 0x00, 0xa8, 0x73, 0xbd, + 0x61, 0xe1, 0x72, 0x11, 0xb2, 0xc1, 0xb8, 0x50, 0xd2, 0xc0, 0x22, 0x43, 0x96, 0x48, 0x8d, 0x2d, + 0xd7, 0x36, 0x48, 0x75, 0xfc, 0x74, 0x45, 0x8e, 0x91, 0x2a, 0xbd, 0x55, 0xdd, 0xad, 0x68, 0xea, + 0xde, 0xce, 0x6e, 0x75, 0xbb, 0x22, 0xc7, 0x9f, 0x4a, 0xa7, 0xde, 0x9e, 0x92, 0xef, 0xdf, 0xbf, + 0x7f, 0x3f, 0xb6, 0xfc, 0x9d, 0x18, 0xe4, 0xc2, 0x9d, 0xb1, 0xf2, 0x53, 0x70, 0x46, 0xbc, 0xc6, + 0xba, 0xd8, 0xd3, 0xee, 0x19, 0x0e, 0x0d, 0xd5, 0x0e, 0x62, 0xbd, 0xa5, 0xef, 0xe5, 0x79, 0xae, + 0xd5, 0xc0, 0xde, 0x0b, 0x86, 0x43, 0x02, 0xb1, 0x83, 0x3c, 0x65, 0x0b, 0xce, 0x59, 0xb6, 0xe6, + 0x7a, 0xc8, 0x6a, 0x22, 0xa7, 0xa9, 0xf5, 0x2f, 0x10, 0x34, 0xa4, 0xeb, 0xd8, 0x75, 0x6d, 0x56, + 0x22, 0x7c, 0x96, 0x0f, 0x58, 0x76, 0x83, 0x2b, 0xf7, 0x73, 0x67, 0x89, 0xab, 0x0e, 0x44, 0x44, + 0xfc, 0xb8, 0x88, 0x78, 0x14, 0xd2, 0x1d, 0xd4, 0xd5, 0xb0, 0xe5, 0x39, 0x87, 0xb4, 0x9f, 0x4b, + 0xa9, 0xa9, 0x0e, 0xea, 0x56, 0xc8, 0xf8, 0xfd, 0xdb, 0x83, 0xa0, 0x1f, 0xff, 0x31, 0x0e, 0xd9, + 0x60, 0x4f, 0x47, 0x5a, 0x64, 0x9d, 0xe6, 0x6f, 0x89, 0x9e, 0xf0, 0x0f, 0x9e, 0xd8, 0x01, 0xae, + 0x96, 0x49, 0x62, 0x2f, 0x4e, 0xb2, 0x4e, 0x4b, 0x65, 0x48, 0x52, 0x54, 0xc9, 0x99, 0xc6, 0xac, + 0x7f, 0x4f, 0xa9, 0x7c, 0xa4, 0x6c, 0xc2, 0xe4, 0x6d, 0x97, 0x72, 0x4f, 0x52, 0xee, 0xc7, 0x4f, + 0xe6, 0xbe, 0xd1, 0xa0, 0xe4, 0xe9, 0x1b, 0x0d, 0x6d, 0xa7, 0xa6, 0x6e, 0x97, 0xb6, 0x54, 0x0e, + 0x57, 0xce, 0x42, 0xc2, 0x44, 0x2f, 0x1d, 0x86, 0x4b, 0x00, 0x15, 0x8d, 0xeb, 0xf8, 0xb3, 0x90, + 0xb8, 0x87, 0xd1, 0x9d, 0x70, 0xe2, 0xa5, 0xa2, 0xf7, 0x31, 0xf4, 0xd7, 0x20, 0x49, 0xfd, 0xa5, + 0x00, 0x70, 0x8f, 0xc9, 0x13, 0x4a, 0x0a, 0x12, 0xe5, 0x9a, 0x4a, 0xc2, 0x5f, 0x86, 0x2c, 0x93, + 0x6a, 0xf5, 0x6a, 0xa5, 0x5c, 0x91, 0x63, 0xcb, 0x97, 0x61, 0x92, 0x39, 0x81, 0x1c, 0x0d, 0xdf, + 0x0d, 0xf2, 0x04, 0x1f, 0x72, 0x0e, 0x49, 0xcc, 0xee, 0x6d, 0xaf, 0x57, 0x54, 0x39, 0x16, 0xdc, + 0x5e, 0x17, 0xb2, 0xc1, 0x76, 0xee, 0xc7, 0x13, 0x53, 0x7f, 0x2d, 0x41, 0x26, 0xd0, 0x9e, 0x91, + 0xc6, 0x00, 0x99, 0xa6, 0x7d, 0x4f, 0x43, 0xa6, 0x81, 0x5c, 0x1e, 0x14, 0x40, 0x45, 0x25, 0x22, + 0x19, 0x77, 0xd3, 0x7e, 0x2c, 0xc6, 0xbf, 0x26, 0x81, 0x3c, 0xd8, 0xda, 0x0d, 0x18, 0x28, 0xfd, + 0x44, 0x0d, 0x7c, 0x55, 0x82, 0x5c, 0xb8, 0x9f, 0x1b, 0x30, 0xef, 0xfc, 0x4f, 0xd4, 0xbc, 0x37, + 0x63, 0x30, 0x1d, 0xea, 0xe2, 0xc6, 0xb5, 0xee, 0x33, 0x30, 0x6b, 0x34, 0x71, 0xa7, 0x6b, 0x7b, + 0xd8, 0xd2, 0x0f, 0x35, 0x13, 0xdf, 0xc5, 0x66, 0x7e, 0x99, 0x26, 0x8a, 0xb5, 0x93, 0xfb, 0xc4, + 0xd5, 0x6a, 0x1f, 0xb7, 0x45, 0x60, 0xc5, 0xb9, 0xea, 0x46, 0x65, 0xbb, 0x5e, 0xdb, 0xad, 0xec, + 0x94, 0x6f, 0x69, 0x7b, 0x3b, 0x3f, 0xbd, 0x53, 0x7b, 0x61, 0x47, 0x95, 0x8d, 0x01, 0xb5, 0xf7, + 0xf1, 0xa8, 0xd7, 0x41, 0x1e, 0x34, 0x4a, 0x39, 0x03, 0xa3, 0xcc, 0x92, 0x27, 0x94, 0x39, 0x98, + 0xd9, 0xa9, 0x69, 0x8d, 0xea, 0x46, 0x45, 0xab, 0x5c, 0xbf, 0x5e, 0x29, 0xef, 0x36, 0xd8, 0x8b, + 0xb3, 0xaf, 0xbd, 0x1b, 0x3e, 0xd4, 0xaf, 0xc4, 0x61, 0x6e, 0x84, 0x25, 0x4a, 0x89, 0xf7, 0xec, + 0xec, 0x35, 0xe2, 0x23, 0xe3, 0x58, 0xbf, 0x4a, 0xba, 0x82, 0x3a, 0x72, 0x3c, 0xde, 0xe2, 0x3f, + 0x09, 0xc4, 0x4b, 0x96, 0x67, 0xb4, 0x0c, 0xec, 0xf0, 0x7b, 0x06, 0xd6, 0xc8, 0xcf, 0xf4, 0xe5, + 0xec, 0xaa, 0xe1, 0xc3, 0xa0, 0x74, 0x6d, 0xd7, 0xf0, 0x8c, 0xbb, 0x58, 0x33, 0x2c, 0x71, 0x29, + 0x41, 0x1a, 0xfb, 0x84, 0x2a, 0x8b, 0x99, 0xaa, 0xe5, 0xf9, 0xda, 0x16, 0x6e, 0xa3, 0x01, 0x6d, + 0x92, 0xc0, 0xe3, 0xaa, 0x2c, 0x66, 0x7c, 0xed, 0xf3, 0x90, 0x6d, 0xda, 0x3d, 0xd2, 0x26, 0x31, + 0x3d, 0x52, 0x2f, 0x24, 0x35, 0xc3, 0x64, 0xbe, 0x0a, 0xef, 0x63, 0xfb, 0xb7, 0x21, 0x59, 0x35, + 0xc3, 0x64, 0x4c, 0xe5, 0x02, 0xcc, 0xa0, 0x76, 0xdb, 0x21, 0xe4, 0x82, 0x88, 0x75, 0xe6, 0x39, + 0x5f, 0x4c, 0x15, 0x17, 0x6f, 0x40, 0x4a, 0xf8, 0x81, 0x94, 0x64, 0xe2, 0x09, 0xad, 0xcb, 0xee, + 0xa4, 0x62, 0x2b, 0x69, 0x35, 0x65, 0x89, 0xc9, 0xf3, 0x90, 0x35, 0x5c, 0xad, 0x7f, 0x39, 0x1a, + 0x5b, 0x8a, 0xad, 0xa4, 0xd4, 0x8c, 0xe1, 0xfa, 0xb7, 0x61, 0xcb, 0xaf, 0xc7, 0x20, 0x17, 0xbe, + 0xdc, 0x55, 0x36, 0x20, 0x65, 0xda, 0x3a, 0xa2, 0xa1, 0xc5, 0xbe, 0x2c, 0xac, 0x44, 0xdc, 0x07, + 0xaf, 0x6e, 0x71, 0x7d, 0xd5, 0x47, 0x2e, 0xfe, 0xbd, 0x04, 0x29, 0x21, 0x56, 0x16, 0x20, 0xd1, + 0x45, 0xde, 0x01, 0xa5, 0x4b, 0xae, 0xc7, 0x64, 0x49, 0xa5, 0x63, 0x22, 0x77, 0xbb, 0xc8, 0xa2, + 0x21, 0xc0, 0xe5, 0x64, 0x4c, 0xf6, 0xd5, 0xc4, 0xa8, 0x49, 0xdb, 0x7e, 0xbb, 0xd3, 0xc1, 0x96, + 0xe7, 0x8a, 0x7d, 0xe5, 0xf2, 0x32, 0x17, 0x2b, 0x4f, 0xc3, 0xac, 0xe7, 0x20, 0xc3, 0x0c, 0xe9, + 0x26, 0xa8, 0xae, 0x2c, 0x26, 0x7c, 0xe5, 0x22, 0x9c, 0x15, 0xbc, 0x4d, 0xec, 0x21, 0xfd, 0x00, + 0x37, 0xfb, 0xa0, 0x49, 0x7a, 0x73, 0x78, 0x86, 0x2b, 0x6c, 0xf0, 0x79, 0x81, 0x5d, 0xfe, 0x9e, + 0x04, 0xb3, 0xe2, 0x45, 0xa5, 0xe9, 0x3b, 0x6b, 0x1b, 0x00, 0x59, 0x96, 0xed, 0x05, 0xdd, 0x35, + 0x1c, 0xca, 0x43, 0xb8, 0xd5, 0x92, 0x0f, 0x52, 0x03, 0x04, 0x8b, 0x1d, 0x80, 0xfe, 0xcc, 0xb1, + 0x6e, 0x3b, 0x07, 0x19, 0x7e, 0x73, 0x4f, 0x3f, 0xff, 0xb0, 0x57, 0x5b, 0x60, 0x22, 0xf2, 0x46, + 0xa3, 0xcc, 0x43, 0x72, 0x1f, 0xb7, 0x0d, 0x8b, 0xdf, 0x27, 0xb2, 0x81, 0xb8, 0xa5, 0x4c, 0xf8, + 0xb7, 0x94, 0xeb, 0x37, 0x61, 0x4e, 0xb7, 0x3b, 0x83, 0xe6, 0xae, 0xcb, 0x03, 0xaf, 0xd7, 0xee, + 0x27, 0xa4, 0x4f, 0x43, 0xbf, 0xc5, 0xfc, 0x72, 0x2c, 0xbe, 0x59, 0x5f, 0xff, 0x6a, 0x6c, 0x71, + 0x93, 0xe1, 0xea, 0x62, 0x99, 0x2a, 0x6e, 0x99, 0x58, 0x27, 0xa6, 0xc3, 0x0f, 0x3e, 0x04, 0x1f, + 0x69, 0x1b, 0xde, 0x41, 0x6f, 0x7f, 0x55, 0xb7, 0x3b, 0x6b, 0x6d, 0xbb, 0x6d, 0xf7, 0x3f, 0x77, + 0x91, 0x11, 0x1d, 0xd0, 0x5f, 0xfc, 0x93, 0x57, 0xda, 0x97, 0x2e, 0x46, 0x7e, 0x1f, 0x2b, 0xee, + 0xc0, 0x1c, 0x57, 0xd6, 0xe8, 0x9d, 0x3b, 0x7b, 0x35, 0x50, 0x4e, 0xbc, 0x77, 0xc9, 0x7f, 0xe3, + 0x2d, 0x5a, 0xab, 0xd5, 0x59, 0x0e, 0x25, 0x73, 0xec, 0x05, 0xa2, 0xa8, 0xc2, 0x23, 0x21, 0x3e, + 0x76, 0x2e, 0xb1, 0x13, 0xc1, 0xf8, 0x1d, 0xce, 0x38, 0x17, 0x60, 0x6c, 0x70, 0x68, 0xb1, 0x0c, + 0xd3, 0xa7, 0xe1, 0xfa, 0x5b, 0xce, 0x95, 0xc5, 0x41, 0x92, 0x4d, 0x98, 0xa1, 0x24, 0x7a, 0xcf, + 0xf5, 0xec, 0x0e, 0x4d, 0x7a, 0x27, 0xd3, 0xfc, 0xdd, 0x5b, 0xec, 0xa0, 0xe4, 0x08, 0xac, 0xec, + 0xa3, 0x8a, 0x45, 0xa0, 0x9f, 0x19, 0x9a, 0x58, 0x37, 0x23, 0x18, 0xde, 0xe0, 0x86, 0xf8, 0xfa, + 0xc5, 0x4f, 0xc1, 0x3c, 0xf9, 0x4d, 0x73, 0x52, 0xd0, 0x92, 0xe8, 0x5b, 0xa6, 0xfc, 0xf7, 0x5e, + 0x66, 0x67, 0x71, 0xce, 0x27, 0x08, 0xd8, 0x14, 0xd8, 0xc5, 0x36, 0xf6, 0x3c, 0xec, 0xb8, 0x1a, + 0x32, 0x47, 0x99, 0x17, 0x78, 0x4d, 0xcf, 0x7f, 0xf1, 0x9d, 0xf0, 0x2e, 0x6e, 0x32, 0x64, 0xc9, + 0x34, 0x8b, 0x7b, 0x70, 0x66, 0x44, 0x54, 0x8c, 0xc1, 0xf9, 0x0a, 0xe7, 0x9c, 0x1f, 0x8a, 0x0c, + 0x42, 0x5b, 0x07, 0x21, 0xf7, 0xf7, 0x72, 0x0c, 0xce, 0xdf, 0xe6, 0x9c, 0x0a, 0xc7, 0x8a, 0x2d, + 0x25, 0x8c, 0x37, 0x60, 0xf6, 0x2e, 0x76, 0xf6, 0x6d, 0x97, 0x5f, 0x8d, 0x8c, 0x41, 0xf7, 0x2a, + 0xa7, 0x9b, 0xe1, 0x40, 0x7a, 0x57, 0x42, 0xb8, 0x9e, 0x83, 0x54, 0x0b, 0xe9, 0x78, 0x0c, 0x8a, + 0x2f, 0x71, 0x8a, 0x29, 0xa2, 0x4f, 0xa0, 0x25, 0xc8, 0xb6, 0x6d, 0x5e, 0x96, 0xa2, 0xe1, 0xaf, + 0x71, 0x78, 0x46, 0x60, 0x38, 0x45, 0xd7, 0xee, 0xf6, 0x4c, 0x52, 0xb3, 0xa2, 0x29, 0x7e, 0x47, + 0x50, 0x08, 0x0c, 0xa7, 0x38, 0x85, 0x5b, 0x7f, 0x57, 0x50, 0xb8, 0x01, 0x7f, 0x3e, 0x0f, 0x19, + 0xdb, 0x32, 0x0f, 0x6d, 0x6b, 0x1c, 0x23, 0x7e, 0x8f, 0x33, 0x00, 0x87, 0x10, 0x82, 0x6b, 0x90, + 0x1e, 0x77, 0x23, 0x7e, 0xff, 0x1d, 0x71, 0x3c, 0xc4, 0x0e, 0x6c, 0xc2, 0x8c, 0x48, 0x50, 0x86, + 0x6d, 0x8d, 0x41, 0xf1, 0x07, 0x9c, 0x22, 0x17, 0x80, 0xf1, 0x65, 0x78, 0xd8, 0xf5, 0xda, 0x78, + 0x1c, 0x92, 0xd7, 0xc5, 0x32, 0x38, 0x84, 0xbb, 0x72, 0x1f, 0x5b, 0xfa, 0xc1, 0x78, 0x0c, 0x5f, + 0x11, 0xae, 0x14, 0x18, 0x42, 0x51, 0x86, 0xe9, 0x0e, 0x72, 0xdc, 0x03, 0x64, 0x8e, 0xb5, 0x1d, + 0x7f, 0xc8, 0x39, 0xb2, 0x3e, 0x88, 0x7b, 0xa4, 0x67, 0x9d, 0x86, 0xe6, 0xab, 0xc2, 0x23, 0x01, + 0x18, 0x3f, 0x7a, 0xae, 0x47, 0x2f, 0xa0, 0x4e, 0xc3, 0xf6, 0x35, 0x71, 0xf4, 0x18, 0x76, 0x3b, + 0xc8, 0x78, 0x0d, 0xd2, 0xae, 0xf1, 0xd2, 0x58, 0x34, 0x7f, 0x24, 0x76, 0x9a, 0x02, 0x08, 0xf8, + 0x16, 0x9c, 0x1d, 0x59, 0x26, 0xc6, 0x20, 0xfb, 0x63, 0x4e, 0xb6, 0x30, 0xa2, 0x54, 0xf0, 0x94, + 0x70, 0x5a, 0xca, 0x3f, 0x11, 0x29, 0x01, 0x0f, 0x70, 0xd5, 0xc9, 0x8b, 0x82, 0x8b, 0x5a, 0xa7, + 0xf3, 0xda, 0x9f, 0x0a, 0xaf, 0x31, 0x6c, 0xc8, 0x6b, 0xbb, 0xb0, 0xc0, 0x19, 0x4f, 0xb7, 0xaf, + 0x5f, 0x17, 0x89, 0x95, 0xa1, 0xf7, 0xc2, 0xbb, 0xfb, 0x33, 0xb0, 0xe8, 0xbb, 0x53, 0x74, 0xa4, + 0xae, 0xd6, 0x41, 0xdd, 0x31, 0x98, 0xbf, 0xc1, 0x99, 0x45, 0xc6, 0xf7, 0x5b, 0x5a, 0x77, 0x1b, + 0x75, 0x09, 0xf9, 0x4d, 0xc8, 0x0b, 0xf2, 0x9e, 0xe5, 0x60, 0xdd, 0x6e, 0x5b, 0xc6, 0x4b, 0xb8, + 0x39, 0x06, 0xf5, 0x9f, 0x0d, 0x6c, 0xd5, 0x5e, 0x00, 0x4e, 0x98, 0xab, 0x20, 0xfb, 0xbd, 0x8a, + 0x66, 0x74, 0xba, 0xb6, 0xe3, 0x45, 0x30, 0xfe, 0xb9, 0xd8, 0x29, 0x1f, 0x57, 0xa5, 0xb0, 0x62, + 0x05, 0x72, 0x74, 0x38, 0x6e, 0x48, 0xfe, 0x05, 0x27, 0x9a, 0xee, 0xa3, 0x78, 0xe2, 0xd0, 0xed, + 0x4e, 0x17, 0x39, 0xe3, 0xe4, 0xbf, 0xbf, 0x14, 0x89, 0x83, 0x43, 0x78, 0xe2, 0xf0, 0x0e, 0xbb, + 0x98, 0x54, 0xfb, 0x31, 0x18, 0xbe, 0x29, 0x12, 0x87, 0xc0, 0x70, 0x0a, 0xd1, 0x30, 0x8c, 0x41, + 0xf1, 0x57, 0x82, 0x42, 0x60, 0x08, 0xc5, 0x27, 0xfb, 0x85, 0xd6, 0xc1, 0x6d, 0xc3, 0xf5, 0x1c, + 0xd6, 0x07, 0x9f, 0x4c, 0xf5, 0xad, 0x77, 0xc2, 0x4d, 0x98, 0x1a, 0x80, 0x16, 0x6f, 0xc0, 0xcc, + 0x40, 0x8b, 0xa1, 0x44, 0xfd, 0xcf, 0x42, 0xfe, 0x67, 0xdf, 0xe3, 0xc9, 0x28, 0xdc, 0x61, 0x14, + 0xb7, 0xc8, 0xbe, 0x87, 0xfb, 0x80, 0x68, 0xb2, 0x97, 0xdf, 0xf3, 0xb7, 0x3e, 0xd4, 0x06, 0x14, + 0xaf, 0xc3, 0x74, 0xa8, 0x07, 0x88, 0xa6, 0xfa, 0x2c, 0xa7, 0xca, 0x06, 0x5b, 0x80, 0xe2, 0x65, + 0x48, 0x90, 0x7a, 0x1e, 0x0d, 0xff, 0x39, 0x0e, 0xa7, 0xea, 0xc5, 0x8f, 0x41, 0x4a, 0xd4, 0xf1, + 0x68, 0xe8, 0xcf, 0x73, 0xa8, 0x0f, 0x21, 0x70, 0x51, 0xc3, 0xa3, 0xe1, 0xbf, 0x20, 0xe0, 0x02, + 0x42, 0xe0, 0xe3, 0xbb, 0xf0, 0xdb, 0xbf, 0x94, 0xe0, 0x79, 0x58, 0xf8, 0xee, 0x1a, 0x4c, 0xf1, + 0xe2, 0x1d, 0x8d, 0xfe, 0x1c, 0x7f, 0xb8, 0x40, 0x14, 0x9f, 0x85, 0xe4, 0x98, 0x0e, 0xff, 0x65, + 0x0e, 0x65, 0xfa, 0xc5, 0x32, 0x64, 0x02, 0x05, 0x3b, 0x1a, 0xfe, 0x79, 0x0e, 0x0f, 0xa2, 0x88, + 0xe9, 0xbc, 0x60, 0x47, 0x13, 0xfc, 0x8a, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xad, 0x8e, 0x46, + 0xff, 0xaa, 0xf0, 0xba, 0x80, 0x14, 0x9f, 0x87, 0xb4, 0x9f, 0x7f, 0xa3, 0xf1, 0xbf, 0xc6, 0xf1, + 0x7d, 0x0c, 0xf1, 0x40, 0x20, 0xff, 0x47, 0x53, 0xfc, 0xba, 0xf0, 0x40, 0x00, 0x45, 0x8e, 0xd1, + 0x60, 0x4d, 0x8f, 0x66, 0xfa, 0x0d, 0x71, 0x8c, 0x06, 0x4a, 0x3a, 0xd9, 0x4d, 0x9a, 0x06, 0xa3, + 0x29, 0x7e, 0x53, 0xec, 0x26, 0xd5, 0x27, 0x66, 0x0c, 0x16, 0xc9, 0x68, 0x8e, 0xdf, 0x12, 0x66, + 0x0c, 0xd4, 0xc8, 0x62, 0x1d, 0x94, 0xe1, 0x02, 0x19, 0xcd, 0xf7, 0x05, 0xce, 0x37, 0x3b, 0x54, + 0x1f, 0x8b, 0x2f, 0xc0, 0xc2, 0xe8, 0xe2, 0x18, 0xcd, 0xfa, 0xc5, 0xf7, 0x06, 0x5e, 0x67, 0x82, + 0xb5, 0xb1, 0xb8, 0xdb, 0xcf, 0xb2, 0xc1, 0xc2, 0x18, 0x4d, 0xfb, 0xca, 0x7b, 0xe1, 0x44, 0x1b, + 0xac, 0x8b, 0xc5, 0x12, 0x40, 0xbf, 0x26, 0x45, 0x73, 0xbd, 0xca, 0xb9, 0x02, 0x20, 0x72, 0x34, + 0x78, 0x49, 0x8a, 0xc6, 0x7f, 0x49, 0x1c, 0x0d, 0x8e, 0x20, 0x47, 0x43, 0x54, 0xa3, 0x68, 0xf4, + 0x6b, 0xe2, 0x68, 0x08, 0x48, 0xf1, 0x1a, 0xa4, 0xac, 0x9e, 0x69, 0x92, 0xd8, 0x52, 0x4e, 0xfe, + 0x37, 0xa2, 0xfc, 0xbf, 0x3e, 0xe4, 0x60, 0x01, 0x28, 0x5e, 0x86, 0x24, 0xee, 0xec, 0xe3, 0x66, + 0x14, 0xf2, 0xdf, 0x1e, 0x8a, 0x7c, 0x42, 0xb4, 0x8b, 0xcf, 0x03, 0xb0, 0x97, 0x69, 0xfa, 0x95, + 0x28, 0x02, 0xfb, 0xef, 0x0f, 0xf9, 0x7f, 0x28, 0xf4, 0x21, 0x7d, 0x02, 0xf6, 0xff, 0x0e, 0x27, + 0x13, 0xbc, 0x13, 0x26, 0xa0, 0x2f, 0xe0, 0xcf, 0xc1, 0xd4, 0x6d, 0xd7, 0xb6, 0x3c, 0xd4, 0x8e, + 0x42, 0xff, 0x07, 0x47, 0x0b, 0x7d, 0xe2, 0xb0, 0x8e, 0xed, 0x60, 0x0f, 0xb5, 0xdd, 0x28, 0xec, + 0x7f, 0x72, 0xac, 0x0f, 0x20, 0x60, 0x1d, 0xb9, 0xde, 0x38, 0xeb, 0xfe, 0x2f, 0x01, 0x16, 0x00, + 0x62, 0x34, 0xf9, 0x7d, 0x07, 0x1f, 0x46, 0x61, 0xdf, 0x15, 0x46, 0x73, 0xfd, 0xe2, 0xc7, 0x20, + 0x4d, 0x7e, 0xb2, 0xff, 0xda, 0x89, 0x00, 0xff, 0x37, 0x07, 0xf7, 0x11, 0xe4, 0xc9, 0xae, 0xd7, + 0xf4, 0x8c, 0x68, 0x67, 0xff, 0x0f, 0xdf, 0x69, 0xa1, 0x5f, 0x2c, 0x41, 0xc6, 0xf5, 0x9a, 0xcd, + 0x1e, 0xef, 0x68, 0x22, 0xe0, 0x3f, 0x78, 0xe8, 0xbf, 0xe4, 0xfa, 0x98, 0xf5, 0xf3, 0xa3, 0x2f, + 0xeb, 0x60, 0xd3, 0xde, 0xb4, 0xd9, 0x35, 0x1d, 0x7c, 0x3e, 0x09, 0x4b, 0xba, 0xdd, 0xd9, 0xb7, + 0xdd, 0x35, 0x3f, 0x91, 0xac, 0xf9, 0xf6, 0x8b, 0x8b, 0x36, 0x5f, 0xb0, 0x78, 0xba, 0x2b, 0xba, + 0xe5, 0xbf, 0x89, 0x43, 0xaa, 0x8c, 0x5c, 0x0f, 0xdd, 0x43, 0x87, 0x4a, 0x17, 0xe6, 0xc8, 0xef, + 0x6d, 0xd4, 0xa5, 0x17, 0x3e, 0xfc, 0x84, 0xf1, 0x2b, 0xd0, 0x0f, 0xaf, 0xf6, 0x9f, 0x2a, 0x10, + 0xab, 0x23, 0xd4, 0xe9, 0xa7, 0xe3, 0x75, 0xf9, 0x8d, 0x7f, 0x3a, 0x37, 0xf1, 0x8b, 0xff, 0x7c, + 0x2e, 0xb5, 0x7d, 0xf8, 0x82, 0x61, 0xba, 0xb6, 0xa5, 0x8e, 0xa2, 0x56, 0x3e, 0x2b, 0xc1, 0xa3, + 0x23, 0xe4, 0x3b, 0xfc, 0x18, 0xf2, 0x0f, 0x09, 0x97, 0xc6, 0x7c, 0xb4, 0x80, 0x31, 0x13, 0xb2, + 0xa1, 0xc7, 0x9f, 0xf4, 0x98, 0xc5, 0x5b, 0x90, 0x3f, 0x6e, 0x25, 0x8a, 0x0c, 0xf1, 0x3b, 0xf8, + 0x90, 0xff, 0x73, 0x28, 0xf9, 0xa9, 0x5c, 0xe8, 0xff, 0x73, 0x99, 0xb4, 0x92, 0xb9, 0x38, 0x1b, + 0xb0, 0x8e, 0x3f, 0x8c, 0xcd, 0x17, 0x63, 0x57, 0xa5, 0x45, 0x04, 0x4b, 0x51, 0x96, 0xfe, 0x3f, + 0x1f, 0xb1, 0x5c, 0x80, 0x49, 0x26, 0x54, 0xe6, 0x21, 0x59, 0xb5, 0xbc, 0x2b, 0x97, 0x28, 0x55, + 0x5c, 0x65, 0x83, 0xf5, 0xad, 0x37, 0x1e, 0x14, 0x26, 0xbe, 0xfb, 0xa0, 0x30, 0xf1, 0x0f, 0x0f, + 0x0a, 0x13, 0x6f, 0x3e, 0x28, 0x48, 0x6f, 0x3f, 0x28, 0x48, 0xef, 0x3e, 0x28, 0x48, 0x3f, 0x7c, + 0x50, 0x90, 0xee, 0x1f, 0x15, 0xa4, 0xaf, 0x1c, 0x15, 0xa4, 0xaf, 0x1f, 0x15, 0xa4, 0x6f, 0x1d, + 0x15, 0xa4, 0x6f, 0x1f, 0x15, 0xa4, 0x37, 0x8e, 0x0a, 0xd2, 0x77, 0x8f, 0x0a, 0x13, 0x6f, 0x1e, + 0x15, 0xa4, 0xb7, 0x8f, 0x0a, 0x13, 0xef, 0x1e, 0x15, 0xa4, 0x1f, 0x1e, 0x15, 0x26, 0xee, 0x7f, + 0xbf, 0x30, 0xf1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xdc, 0x4a, 0xcd, 0xed, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unmarshaler/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unmarshaler/castvalue.pb.go index da6d3914e..048233614 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unmarshaler/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unmarshaler/castvalue.pb.go @@ -74,237 +74,244 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3682 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0x72, 0xcc, 0xd5, 0x32, - 0x76, 0x2c, 0xdb, 0x89, 0x36, 0x58, 0xef, 0xae, 0xd7, 0xb3, 0x4d, 0x0c, 0x8a, 0xa2, 0x15, 0x2d, - 0xf4, 0x97, 0x91, 0x14, 0xdb, 0xc9, 0xc3, 0xe0, 0x6a, 0x78, 0x49, 0xcd, 0xee, 0x70, 0x86, 0x9d, - 0x19, 0xee, 0x5a, 0x7e, 0xda, 0xc0, 0x69, 0x8b, 0x34, 0x68, 0x9b, 0xfe, 0x00, 0x4d, 0x1c, 0xc7, - 0x4d, 0x03, 0xb4, 0x4e, 0xd3, 0xbf, 0xa4, 0x3f, 0x69, 0xd0, 0xa7, 0xf4, 0x21, 0xad, 0x9f, 0x8a, - 0xe4, 0xad, 0x0f, 0x45, 0x9b, 0x55, 0x0d, 0xd4, 0x6d, 0xdd, 0xd6, 0x6d, 0x0c, 0x34, 0x80, 0x5f, - 0x8a, 0xfb, 0x37, 0x9c, 0x21, 0xa9, 0x1d, 0x2a, 0x45, 0xe2, 0x3e, 0x89, 0xf7, 0xdc, 0xf3, 0x7d, - 0x73, 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xe6, 0x8e, 0xe0, 0xd3, 0x97, 0x60, 0xb1, 0xed, 0xba, 0x6d, - 0x9b, 0x5c, 0xe8, 0x7a, 0x6e, 0xe0, 0x1e, 0xf4, 0x5a, 0x17, 0x9a, 0xc4, 0x37, 0x3d, 0xab, 0x1b, - 0xb8, 0xde, 0x32, 0x93, 0xa1, 0x19, 0xae, 0xb1, 0x2c, 0x35, 0xaa, 0x9b, 0x30, 0xfb, 0x8c, 0x65, - 0x93, 0xd5, 0x50, 0x71, 0x97, 0x04, 0xe8, 0x2a, 0x64, 0x5a, 0x96, 0x4d, 0xca, 0xca, 0x62, 0x7a, - 0xa9, 0x70, 0xf1, 0xa1, 0xe5, 0x01, 0xd0, 0x72, 0x1c, 0xb1, 0x43, 0xc5, 0x3a, 0x43, 0x54, 0xdf, - 0xc8, 0xc0, 0xdc, 0x88, 0x59, 0x84, 0x20, 0xe3, 0xe0, 0x0e, 0x65, 0x54, 0x96, 0xf2, 0x3a, 0xfb, - 0x8d, 0xca, 0x30, 0xd5, 0xc5, 0xe6, 0x4d, 0xdc, 0x26, 0xe5, 0x14, 0x13, 0xcb, 0x21, 0xaa, 0x00, - 0x34, 0x49, 0x97, 0x38, 0x4d, 0xe2, 0x98, 0x47, 0xe5, 0xf4, 0x62, 0x7a, 0x29, 0xaf, 0x47, 0x24, - 0xe8, 0x71, 0x98, 0xed, 0xf6, 0x0e, 0x6c, 0xcb, 0x34, 0x22, 0x6a, 0xb0, 0x98, 0x5e, 0xca, 0xea, - 0x2a, 0x9f, 0x58, 0xed, 0x2b, 0x3f, 0x02, 0x33, 0xb7, 0x09, 0xbe, 0x19, 0x55, 0x2d, 0x30, 0xd5, - 0x12, 0x15, 0x47, 0x14, 0xeb, 0x50, 0xec, 0x10, 0xdf, 0xc7, 0x6d, 0x62, 0x04, 0x47, 0x5d, 0x52, - 0xce, 0xb0, 0xd5, 0x2f, 0x0e, 0xad, 0x7e, 0x70, 0xe5, 0x05, 0x81, 0xda, 0x3b, 0xea, 0x12, 0x54, - 0x83, 0x3c, 0x71, 0x7a, 0x1d, 0xce, 0x90, 0x3d, 0xc1, 0x7f, 0x0d, 0xa7, 0xd7, 0x19, 0x64, 0xc9, - 0x51, 0x98, 0xa0, 0x98, 0xf2, 0x89, 0x77, 0xcb, 0x32, 0x49, 0x79, 0x92, 0x11, 0x3c, 0x32, 0x44, - 0xb0, 0xcb, 0xe7, 0x07, 0x39, 0x24, 0x0e, 0xd5, 0x21, 0x4f, 0x5e, 0x08, 0x88, 0xe3, 0x5b, 0xae, - 0x53, 0x9e, 0x62, 0x24, 0x0f, 0x8f, 0xd8, 0x45, 0x62, 0x37, 0x07, 0x29, 0xfa, 0x38, 0x74, 0x05, - 0xa6, 0xdc, 0x6e, 0x60, 0xb9, 0x8e, 0x5f, 0xce, 0x2d, 0x2a, 0x4b, 0x85, 0x8b, 0xef, 0x1b, 0x19, - 0x08, 0xdb, 0x5c, 0x47, 0x97, 0xca, 0x68, 0x1d, 0x54, 0xdf, 0xed, 0x79, 0x26, 0x31, 0x4c, 0xb7, - 0x49, 0x0c, 0xcb, 0x69, 0xb9, 0xe5, 0x3c, 0x23, 0x38, 0x37, 0xbc, 0x10, 0xa6, 0x58, 0x77, 0x9b, - 0x64, 0xdd, 0x69, 0xb9, 0x7a, 0xc9, 0x8f, 0x8d, 0xd1, 0x19, 0x98, 0xf4, 0x8f, 0x9c, 0x00, 0xbf, - 0x50, 0x2e, 0xb2, 0x08, 0x11, 0xa3, 0xea, 0xff, 0x64, 0x61, 0x66, 0x9c, 0x10, 0xbb, 0x06, 0xd9, - 0x16, 0x5d, 0x65, 0x39, 0x75, 0x1a, 0x1f, 0x70, 0x4c, 0xdc, 0x89, 0x93, 0x3f, 0xa6, 0x13, 0x6b, - 0x50, 0x70, 0x88, 0x1f, 0x90, 0x26, 0x8f, 0x88, 0xf4, 0x98, 0x31, 0x05, 0x1c, 0x34, 0x1c, 0x52, - 0x99, 0x1f, 0x2b, 0xa4, 0x9e, 0x83, 0x99, 0xd0, 0x24, 0xc3, 0xc3, 0x4e, 0x5b, 0xc6, 0xe6, 0x85, - 0x24, 0x4b, 0x96, 0x1b, 0x12, 0xa7, 0x53, 0x98, 0x5e, 0x22, 0xb1, 0x31, 0x5a, 0x05, 0x70, 0x1d, - 0xe2, 0xb6, 0x8c, 0x26, 0x31, 0xed, 0x72, 0xee, 0x04, 0x2f, 0x6d, 0x53, 0x95, 0x21, 0x2f, 0xb9, - 0x5c, 0x6a, 0xda, 0xe8, 0xa9, 0x7e, 0xa8, 0x4d, 0x9d, 0x10, 0x29, 0x9b, 0xfc, 0x90, 0x0d, 0x45, - 0xdb, 0x3e, 0x94, 0x3c, 0x42, 0xe3, 0x9e, 0x34, 0xc5, 0xca, 0xf2, 0xcc, 0x88, 0xe5, 0xc4, 0x95, - 0xe9, 0x02, 0xc6, 0x17, 0x36, 0xed, 0x45, 0x87, 0xe8, 0xfd, 0x10, 0x0a, 0x0c, 0x16, 0x56, 0xc0, - 0xb2, 0x50, 0x51, 0x0a, 0xb7, 0x70, 0x87, 0x2c, 0x5c, 0x85, 0x52, 0xdc, 0x3d, 0x68, 0x1e, 0xb2, - 0x7e, 0x80, 0xbd, 0x80, 0x45, 0x61, 0x56, 0xe7, 0x03, 0xa4, 0x42, 0x9a, 0x38, 0x4d, 0x96, 0xe5, - 0xb2, 0x3a, 0xfd, 0xb9, 0xf0, 0x24, 0x4c, 0xc7, 0x1e, 0x3f, 0x2e, 0xb0, 0xfa, 0x85, 0x49, 0x98, - 0x1f, 0x15, 0x73, 0x23, 0xc3, 0xff, 0x0c, 0x4c, 0x3a, 0xbd, 0xce, 0x01, 0xf1, 0xca, 0x69, 0xc6, - 0x20, 0x46, 0xa8, 0x06, 0x59, 0x1b, 0x1f, 0x10, 0xbb, 0x9c, 0x59, 0x54, 0x96, 0x4a, 0x17, 0x1f, - 0x1f, 0x2b, 0xaa, 0x97, 0x37, 0x28, 0x44, 0xe7, 0x48, 0xf4, 0x51, 0xc8, 0x88, 0x14, 0x47, 0x19, - 0x1e, 0x1b, 0x8f, 0x81, 0xc6, 0xa2, 0xce, 0x70, 0xe8, 0x01, 0xc8, 0xd3, 0xbf, 0xdc, 0xb7, 0x93, - 0xcc, 0xe6, 0x1c, 0x15, 0x50, 0xbf, 0xa2, 0x05, 0xc8, 0xb1, 0x30, 0x6b, 0x12, 0x59, 0x1a, 0xc2, - 0x31, 0xdd, 0x98, 0x26, 0x69, 0xe1, 0x9e, 0x1d, 0x18, 0xb7, 0xb0, 0xdd, 0x23, 0x2c, 0x60, 0xf2, - 0x7a, 0x51, 0x08, 0x3f, 0x41, 0x65, 0xe8, 0x1c, 0x14, 0x78, 0x54, 0x5a, 0x4e, 0x93, 0xbc, 0xc0, - 0xb2, 0x4f, 0x56, 0xe7, 0x81, 0xba, 0x4e, 0x25, 0xf4, 0xf1, 0x37, 0x7c, 0xd7, 0x91, 0x5b, 0xcb, - 0x1e, 0x41, 0x05, 0xec, 0xf1, 0x4f, 0x0e, 0x26, 0xbe, 0x07, 0x47, 0x2f, 0x6f, 0x30, 0x16, 0xab, - 0xdf, 0x4a, 0x41, 0x86, 0x9d, 0xb7, 0x19, 0x28, 0xec, 0x3d, 0xbf, 0xd3, 0x30, 0x56, 0xb7, 0xf7, - 0x57, 0x36, 0x1a, 0xaa, 0x82, 0x4a, 0x00, 0x4c, 0xf0, 0xcc, 0xc6, 0x76, 0x6d, 0x4f, 0x4d, 0x85, - 0xe3, 0xf5, 0xad, 0xbd, 0x2b, 0x97, 0xd4, 0x74, 0x08, 0xd8, 0xe7, 0x82, 0x4c, 0x54, 0xe1, 0x89, - 0x8b, 0x6a, 0x16, 0xa9, 0x50, 0xe4, 0x04, 0xeb, 0xcf, 0x35, 0x56, 0xaf, 0x5c, 0x52, 0x27, 0xe3, - 0x92, 0x27, 0x2e, 0xaa, 0x53, 0x68, 0x1a, 0xf2, 0x4c, 0xb2, 0xb2, 0xbd, 0xbd, 0xa1, 0xe6, 0x42, - 0xce, 0xdd, 0x3d, 0x7d, 0x7d, 0x6b, 0x4d, 0xcd, 0x87, 0x9c, 0x6b, 0xfa, 0xf6, 0xfe, 0x8e, 0x0a, - 0x21, 0xc3, 0x66, 0x63, 0x77, 0xb7, 0xb6, 0xd6, 0x50, 0x0b, 0xa1, 0xc6, 0xca, 0xf3, 0x7b, 0x8d, - 0x5d, 0xb5, 0x18, 0x33, 0xeb, 0x89, 0x8b, 0xea, 0x74, 0xf8, 0x88, 0xc6, 0xd6, 0xfe, 0xa6, 0x5a, - 0x42, 0xb3, 0x30, 0xcd, 0x1f, 0x21, 0x8d, 0x98, 0x19, 0x10, 0x5d, 0xb9, 0xa4, 0xaa, 0x7d, 0x43, - 0x38, 0xcb, 0x6c, 0x4c, 0x70, 0xe5, 0x92, 0x8a, 0xaa, 0x75, 0xc8, 0xb2, 0xe8, 0x42, 0x08, 0x4a, - 0x1b, 0xb5, 0x95, 0xc6, 0x86, 0xb1, 0xbd, 0xb3, 0xb7, 0xbe, 0xbd, 0x55, 0xdb, 0x50, 0x95, 0xbe, - 0x4c, 0x6f, 0x7c, 0x7c, 0x7f, 0x5d, 0x6f, 0xac, 0xaa, 0xa9, 0xa8, 0x6c, 0xa7, 0x51, 0xdb, 0x6b, - 0xac, 0xaa, 0xe9, 0xaa, 0x09, 0xf3, 0xa3, 0xf2, 0xcc, 0xc8, 0x93, 0x11, 0xd9, 0xe2, 0xd4, 0x09, - 0x5b, 0xcc, 0xb8, 0x86, 0xb6, 0xf8, 0xab, 0x0a, 0xcc, 0x8d, 0xc8, 0xb5, 0x23, 0x1f, 0xf2, 0x34, - 0x64, 0x79, 0x88, 0xf2, 0xea, 0xf3, 0xe8, 0xc8, 0xa4, 0xcd, 0x02, 0x76, 0xa8, 0x02, 0x31, 0x5c, - 0xb4, 0x02, 0xa7, 0x4f, 0xa8, 0xc0, 0x94, 0x62, 0xc8, 0xc8, 0x97, 0x14, 0x28, 0x9f, 0xc4, 0x9d, - 0x90, 0x28, 0x52, 0xb1, 0x44, 0x71, 0x6d, 0xd0, 0x80, 0xf3, 0x27, 0xaf, 0x61, 0xc8, 0x8a, 0xd7, - 0x14, 0x38, 0x33, 0xba, 0x51, 0x19, 0x69, 0xc3, 0x47, 0x61, 0xb2, 0x43, 0x82, 0x43, 0x57, 0x16, - 0xeb, 0x0f, 0x8c, 0x28, 0x01, 0x74, 0x7a, 0xd0, 0x57, 0x02, 0x15, 0xad, 0x21, 0xe9, 0x93, 0xba, - 0x0d, 0x6e, 0xcd, 0x90, 0xa5, 0x9f, 0x4d, 0xc1, 0x7d, 0x23, 0xc9, 0x47, 0x1a, 0xfa, 0x20, 0x80, - 0xe5, 0x74, 0x7b, 0x01, 0x2f, 0xc8, 0x3c, 0x3f, 0xe5, 0x99, 0x84, 0x9d, 0x7d, 0x9a, 0x7b, 0x7a, - 0x41, 0x38, 0x9f, 0x66, 0xf3, 0xc0, 0x45, 0x4c, 0xe1, 0x6a, 0xdf, 0xd0, 0x0c, 0x33, 0xb4, 0x72, - 0xc2, 0x4a, 0x87, 0x6a, 0xdd, 0x87, 0x41, 0x35, 0x6d, 0x8b, 0x38, 0x81, 0xe1, 0x07, 0x1e, 0xc1, - 0x1d, 0xcb, 0x69, 0xb3, 0x04, 0x9c, 0xd3, 0xb2, 0x2d, 0x6c, 0xfb, 0x44, 0x9f, 0xe1, 0xd3, 0xbb, - 0x72, 0x96, 0x22, 0x58, 0x95, 0xf1, 0x22, 0x88, 0xc9, 0x18, 0x82, 0x4f, 0x87, 0x88, 0xea, 0xe7, - 0xa6, 0xa0, 0x10, 0x69, 0xeb, 0xd0, 0x79, 0x28, 0xde, 0xc0, 0xb7, 0xb0, 0x21, 0x5b, 0x75, 0xee, - 0x89, 0x02, 0x95, 0xed, 0x88, 0x76, 0xfd, 0xc3, 0x30, 0xcf, 0x54, 0xdc, 0x5e, 0x40, 0x3c, 0xc3, - 0xb4, 0xb1, 0xef, 0x33, 0xa7, 0xe5, 0x98, 0x2a, 0xa2, 0x73, 0xdb, 0x74, 0xaa, 0x2e, 0x67, 0xd0, - 0x65, 0x98, 0x63, 0x88, 0x4e, 0xcf, 0x0e, 0xac, 0xae, 0x4d, 0x0c, 0xfa, 0xf2, 0xe0, 0xb3, 0x44, - 0x1c, 0x5a, 0x36, 0x4b, 0x35, 0x36, 0x85, 0x02, 0xb5, 0xc8, 0x47, 0x6b, 0xf0, 0x20, 0x83, 0xb5, - 0x89, 0x43, 0x3c, 0x1c, 0x10, 0x83, 0xfc, 0x6c, 0x0f, 0xdb, 0xbe, 0x81, 0x9d, 0xa6, 0x71, 0x88, - 0xfd, 0xc3, 0xf2, 0x7c, 0x94, 0xe0, 0x2c, 0xd5, 0x5d, 0x13, 0xaa, 0x0d, 0xa6, 0x59, 0x73, 0x9a, - 0x1f, 0xc3, 0xfe, 0x21, 0xd2, 0xe0, 0x0c, 0x23, 0xf2, 0x03, 0xcf, 0x72, 0xda, 0x86, 0x79, 0x48, - 0xcc, 0x9b, 0x46, 0x2f, 0x68, 0x5d, 0x2d, 0x3f, 0x10, 0x65, 0x60, 0x46, 0xee, 0x32, 0x9d, 0x3a, - 0x55, 0xd9, 0x0f, 0x5a, 0x57, 0xd1, 0x2e, 0x14, 0xe9, 0x7e, 0x74, 0xac, 0x17, 0x89, 0xd1, 0x72, - 0x3d, 0x56, 0x5c, 0x4a, 0x23, 0x0e, 0x77, 0xc4, 0x89, 0xcb, 0xdb, 0x02, 0xb0, 0xe9, 0x36, 0x89, - 0x96, 0xdd, 0xdd, 0x69, 0x34, 0x56, 0xf5, 0x82, 0x64, 0x79, 0xc6, 0xf5, 0x68, 0x4c, 0xb5, 0xdd, - 0xd0, 0xc7, 0x05, 0x1e, 0x53, 0x6d, 0x57, 0x7a, 0xf8, 0x32, 0xcc, 0x99, 0x26, 0x5f, 0xb6, 0x65, - 0x1a, 0xa2, 0xcb, 0xf7, 0xcb, 0x6a, 0xcc, 0x5f, 0xa6, 0xb9, 0xc6, 0x15, 0x44, 0x98, 0xfb, 0xe8, - 0x29, 0xb8, 0xaf, 0xef, 0xaf, 0x28, 0x70, 0x76, 0x68, 0x95, 0x83, 0xd0, 0xcb, 0x30, 0xd7, 0x3d, - 0x1a, 0x06, 0xa2, 0xd8, 0x13, 0xbb, 0x47, 0x83, 0xb0, 0x87, 0xd9, 0x9b, 0x9b, 0x47, 0x4c, 0x1c, - 0x90, 0x66, 0xf9, 0xfe, 0xa8, 0x76, 0x64, 0x02, 0x5d, 0x00, 0xd5, 0x34, 0x0d, 0xe2, 0xe0, 0x03, - 0x9b, 0x18, 0xd8, 0x23, 0x0e, 0xf6, 0xcb, 0xe7, 0xa2, 0xca, 0x25, 0xd3, 0x6c, 0xb0, 0xd9, 0x1a, - 0x9b, 0x44, 0x8f, 0xc1, 0xac, 0x7b, 0x70, 0xc3, 0xe4, 0xc1, 0x65, 0x74, 0x3d, 0xd2, 0xb2, 0x5e, - 0x28, 0x3f, 0xc4, 0xdc, 0x34, 0x43, 0x27, 0x58, 0x68, 0xed, 0x30, 0x31, 0x7a, 0x14, 0x54, 0xd3, - 0x3f, 0xc4, 0x5e, 0x97, 0x55, 0x77, 0xbf, 0x8b, 0x4d, 0x52, 0x7e, 0x98, 0xab, 0x72, 0xf9, 0x96, - 0x14, 0xa3, 0xe7, 0x60, 0xbe, 0xe7, 0x58, 0x4e, 0x40, 0xbc, 0xae, 0x47, 0x68, 0x93, 0xce, 0x4f, - 0x5a, 0xf9, 0x9f, 0xa7, 0x4e, 0x68, 0xb3, 0xf7, 0xa3, 0xda, 0x7c, 0x77, 0xf5, 0xb9, 0xde, 0xb0, - 0xb0, 0xaa, 0x41, 0x31, 0xba, 0xe9, 0x28, 0x0f, 0x7c, 0xdb, 0x55, 0x85, 0xd6, 0xd0, 0xfa, 0xf6, - 0x2a, 0xad, 0x7e, 0x9f, 0x6c, 0xa8, 0x29, 0x5a, 0x85, 0x37, 0xd6, 0xf7, 0x1a, 0x86, 0xbe, 0xbf, - 0xb5, 0xb7, 0xbe, 0xd9, 0x50, 0xd3, 0x8f, 0xe5, 0x73, 0x6f, 0x4e, 0xa9, 0x77, 0xee, 0xdc, 0xb9, - 0x93, 0xaa, 0x7e, 0x37, 0x05, 0xa5, 0x78, 0xe7, 0x8b, 0x7e, 0x06, 0xee, 0x97, 0xaf, 0xa9, 0x3e, - 0x09, 0x8c, 0xdb, 0x96, 0xc7, 0xe2, 0xb0, 0x83, 0x79, 0xef, 0x18, 0xba, 0x70, 0x5e, 0x68, 0xed, - 0x92, 0xe0, 0x59, 0xcb, 0xa3, 0x51, 0xd6, 0xc1, 0x01, 0xda, 0x80, 0x73, 0x8e, 0x6b, 0xf8, 0x01, - 0x76, 0x9a, 0xd8, 0x6b, 0x1a, 0xfd, 0x0b, 0x02, 0x03, 0x9b, 0x26, 0xf1, 0x7d, 0x97, 0x97, 0x80, - 0x90, 0xe5, 0x7d, 0x8e, 0xbb, 0x2b, 0x94, 0xfb, 0xb9, 0xb1, 0x26, 0x54, 0x07, 0xb6, 0x3b, 0x7d, - 0xd2, 0x76, 0x3f, 0x00, 0xf9, 0x0e, 0xee, 0x1a, 0xc4, 0x09, 0xbc, 0x23, 0xd6, 0xaf, 0xe5, 0xf4, - 0x5c, 0x07, 0x77, 0x1b, 0x74, 0xfc, 0x93, 0xdb, 0x83, 0xa8, 0x1f, 0xff, 0x3e, 0x0d, 0xc5, 0x68, - 0xcf, 0x46, 0x5b, 0x60, 0x93, 0xe5, 0x67, 0x85, 0x1d, 0xdf, 0xf7, 0xdf, 0xb3, 0xc3, 0x5b, 0xae, - 0xd3, 0xc4, 0xad, 0x4d, 0xf2, 0x4e, 0x4a, 0xe7, 0x48, 0x5a, 0x34, 0xe9, 0x81, 0x25, 0xbc, 0x3f, - 0xcf, 0xe9, 0x62, 0x84, 0xd6, 0x60, 0xf2, 0x86, 0xcf, 0xb8, 0x27, 0x19, 0xf7, 0x43, 0xf7, 0xe6, - 0xbe, 0xbe, 0xcb, 0xc8, 0xf3, 0xd7, 0x77, 0x8d, 0xad, 0x6d, 0x7d, 0xb3, 0xb6, 0xa1, 0x0b, 0x38, - 0x3a, 0x0b, 0x19, 0x1b, 0xbf, 0x78, 0x14, 0x4f, 0xf1, 0x4c, 0x34, 0xae, 0xe3, 0xcf, 0x42, 0xe6, - 0x36, 0xc1, 0x37, 0xe3, 0x89, 0x95, 0x89, 0x7e, 0x82, 0xa1, 0x7f, 0x01, 0xb2, 0xcc, 0x5f, 0x08, - 0x40, 0x78, 0x4c, 0x9d, 0x40, 0x39, 0xc8, 0xd4, 0xb7, 0x75, 0x1a, 0xfe, 0x2a, 0x14, 0xb9, 0xd4, - 0xd8, 0x59, 0x6f, 0xd4, 0x1b, 0x6a, 0xaa, 0x7a, 0x19, 0x26, 0xb9, 0x13, 0xe8, 0xd1, 0x08, 0xdd, - 0xa0, 0x4e, 0x88, 0xa1, 0xe0, 0x50, 0xe4, 0xec, 0xfe, 0xe6, 0x4a, 0x43, 0x57, 0x53, 0xd1, 0xed, - 0xf5, 0xa1, 0x18, 0x6d, 0xd7, 0x7e, 0x3a, 0x31, 0xf5, 0x97, 0x0a, 0x14, 0x22, 0xed, 0x17, 0x2d, - 0xfc, 0xd8, 0xb6, 0xdd, 0xdb, 0x06, 0xb6, 0x2d, 0xec, 0x8b, 0xa0, 0x00, 0x26, 0xaa, 0x51, 0xc9, - 0xb8, 0x9b, 0xf6, 0x53, 0x31, 0xfe, 0x55, 0x05, 0xd4, 0xc1, 0xd6, 0x6d, 0xc0, 0x40, 0xe5, 0x3d, - 0x35, 0xf0, 0x15, 0x05, 0x4a, 0xf1, 0x7e, 0x6d, 0xc0, 0xbc, 0xf3, 0xef, 0xa9, 0x79, 0x5f, 0x52, - 0x60, 0x3a, 0xd6, 0xa5, 0xfd, 0xbf, 0xb2, 0xee, 0xe5, 0x34, 0xcc, 0x8d, 0xc0, 0xa1, 0x9a, 0x68, - 0x67, 0x79, 0x87, 0xfd, 0xa1, 0x71, 0x9e, 0xb5, 0x4c, 0xab, 0xe5, 0x0e, 0xf6, 0x02, 0xd1, 0xfd, - 0x3e, 0x0a, 0xaa, 0xd5, 0x24, 0x4e, 0x60, 0xb5, 0x2c, 0xe2, 0x89, 0x57, 0x70, 0xde, 0xe3, 0xce, - 0xf4, 0xe5, 0xfc, 0x2d, 0xfc, 0x83, 0x80, 0xba, 0xae, 0x6f, 0x05, 0xd6, 0x2d, 0x62, 0x58, 0x8e, - 0x7c, 0x5f, 0xa7, 0x3d, 0x6f, 0x46, 0x57, 0xe5, 0xcc, 0xba, 0x13, 0x84, 0xda, 0x0e, 0x69, 0xe3, - 0x01, 0x6d, 0x9a, 0xfb, 0xd2, 0xba, 0x2a, 0x67, 0x42, 0xed, 0xf3, 0x50, 0x6c, 0xba, 0x3d, 0xda, - 0x3e, 0x70, 0x3d, 0x9a, 0x6a, 0x15, 0xbd, 0xc0, 0x65, 0xa1, 0x8a, 0xe8, 0xef, 0xfa, 0x17, 0x05, - 0x45, 0xbd, 0xc0, 0x65, 0x5c, 0xe5, 0x11, 0x98, 0xc1, 0xed, 0xb6, 0x47, 0xc9, 0x25, 0x11, 0x6f, - 0x5a, 0x4b, 0xa1, 0x98, 0x29, 0x2e, 0x5c, 0x87, 0x9c, 0xf4, 0x03, 0xad, 0x66, 0xd4, 0x13, 0x46, - 0x97, 0x5f, 0xd7, 0xa4, 0x96, 0xf2, 0x7a, 0xce, 0x91, 0x93, 0xe7, 0xa1, 0x68, 0xf9, 0x46, 0xff, - 0xde, 0x30, 0xb5, 0x98, 0x5a, 0xca, 0xe9, 0x05, 0xcb, 0x0f, 0x2f, 0x8a, 0xaa, 0xaf, 0xa5, 0xa0, - 0x14, 0xbf, 0xf7, 0x44, 0xab, 0x90, 0xb3, 0x5d, 0x13, 0xb3, 0x40, 0xe0, 0x97, 0xee, 0x4b, 0x09, - 0x57, 0xa5, 0xcb, 0x1b, 0x42, 0x5f, 0x0f, 0x91, 0x0b, 0x7f, 0xab, 0x40, 0x4e, 0x8a, 0xd1, 0x19, - 0xc8, 0x74, 0x71, 0x70, 0xc8, 0xe8, 0xb2, 0x2b, 0x29, 0x55, 0xd1, 0xd9, 0x98, 0xca, 0xfd, 0x2e, - 0x76, 0x58, 0x08, 0x08, 0x39, 0x1d, 0xd3, 0x7d, 0xb5, 0x09, 0x6e, 0xb2, 0x76, 0xd8, 0xed, 0x74, - 0x88, 0x13, 0xf8, 0x72, 0x5f, 0x85, 0xbc, 0x2e, 0xc4, 0xe8, 0x71, 0x98, 0x0d, 0x3c, 0x6c, 0xd9, - 0x31, 0xdd, 0x0c, 0xd3, 0x55, 0xe5, 0x44, 0xa8, 0xac, 0xc1, 0x59, 0xc9, 0xdb, 0x24, 0x01, 0x36, - 0x0f, 0x49, 0xb3, 0x0f, 0x9a, 0x64, 0x97, 0x6a, 0xf7, 0x0b, 0x85, 0x55, 0x31, 0x2f, 0xb1, 0xd5, - 0xef, 0x2b, 0x30, 0x2b, 0x1b, 0xf8, 0x66, 0xe8, 0xac, 0x4d, 0x00, 0xec, 0x38, 0x6e, 0x10, 0x75, - 0xd7, 0x70, 0x28, 0x0f, 0xe1, 0x96, 0x6b, 0x21, 0x48, 0x8f, 0x10, 0x2c, 0x74, 0x00, 0xfa, 0x33, - 0x27, 0xba, 0xed, 0x1c, 0x14, 0xc4, 0xa5, 0x36, 0xfb, 0x32, 0xc2, 0xdf, 0xfa, 0x80, 0x8b, 0x68, - 0xa7, 0x8f, 0xe6, 0x21, 0x7b, 0x40, 0xda, 0x96, 0x23, 0xae, 0xda, 0xf8, 0x40, 0x5e, 0xe0, 0x65, - 0xc2, 0x0b, 0xbc, 0x95, 0x4f, 0xc1, 0x9c, 0xe9, 0x76, 0x06, 0xcd, 0x5d, 0x51, 0x07, 0xde, 0x3c, - 0xfd, 0x8f, 0x29, 0x9f, 0x84, 0x7e, 0x77, 0xf6, 0x15, 0x45, 0xf9, 0x6a, 0x2a, 0xbd, 0xb6, 0xb3, - 0xf2, 0xf5, 0xd4, 0xc2, 0x1a, 0x87, 0xee, 0xc8, 0x95, 0xea, 0xa4, 0x65, 0x13, 0x93, 0x5a, 0x0f, - 0x3f, 0xfc, 0x00, 0x7c, 0xa8, 0x6d, 0x05, 0x87, 0xbd, 0x83, 0x65, 0xd3, 0xed, 0x5c, 0x68, 0xbb, - 0x6d, 0xb7, 0xff, 0x31, 0x88, 0x8e, 0xd8, 0x80, 0xfd, 0x12, 0x1f, 0x84, 0xf2, 0xa1, 0x74, 0x21, - 0xf1, 0xeb, 0x91, 0xb6, 0x05, 0x73, 0x42, 0xd9, 0x60, 0x37, 0xd2, 0xbc, 0x0f, 0x47, 0xf7, 0xbc, - 0x95, 0x28, 0x7f, 0xf3, 0x0d, 0x56, 0xe9, 0xf4, 0x59, 0x01, 0xa5, 0x73, 0xbc, 0x53, 0xd7, 0x74, - 0xb8, 0x2f, 0xc6, 0xc7, 0x8f, 0x26, 0xf1, 0x12, 0x18, 0xbf, 0x2b, 0x18, 0xe7, 0x22, 0x8c, 0xbb, - 0x02, 0xaa, 0xd5, 0x61, 0xfa, 0x34, 0x5c, 0x7f, 0x2d, 0xb8, 0x8a, 0x24, 0x4a, 0xb2, 0x06, 0x33, - 0x8c, 0xc4, 0xec, 0xf9, 0x81, 0xdb, 0x61, 0x79, 0xef, 0xde, 0x34, 0x7f, 0xf3, 0x06, 0x3f, 0x2b, - 0x25, 0x0a, 0xab, 0x87, 0x28, 0x4d, 0x03, 0x76, 0x09, 0xdf, 0x24, 0xa6, 0x9d, 0xc0, 0xf0, 0xba, - 0x30, 0x24, 0xd4, 0xd7, 0x3e, 0x01, 0xf3, 0xf4, 0x37, 0x4b, 0x4b, 0x51, 0x4b, 0x92, 0xef, 0x60, - 0xca, 0xdf, 0x7f, 0x89, 0x1f, 0xc7, 0xb9, 0x90, 0x20, 0x62, 0x53, 0x64, 0x17, 0xdb, 0x24, 0x08, - 0x88, 0xe7, 0x1b, 0xd8, 0x1e, 0x65, 0x5e, 0xe4, 0x0d, 0xb6, 0xfc, 0xc5, 0xb7, 0xe2, 0xbb, 0xb8, - 0xc6, 0x91, 0x35, 0xdb, 0xd6, 0xf6, 0xe1, 0xfe, 0x11, 0x51, 0x31, 0x06, 0xe7, 0xcb, 0x82, 0x73, - 0x7e, 0x28, 0x32, 0x28, 0xed, 0x0e, 0x48, 0x79, 0xb8, 0x97, 0x63, 0x70, 0x7e, 0x49, 0x70, 0x22, - 0x81, 0x95, 0x5b, 0x4a, 0x19, 0xaf, 0xc3, 0xec, 0x2d, 0xe2, 0x1d, 0xb8, 0xbe, 0xb8, 0x38, 0x18, - 0x83, 0xee, 0x15, 0x41, 0x37, 0x23, 0x80, 0xec, 0x1a, 0x81, 0x72, 0x3d, 0x05, 0xb9, 0x16, 0x36, - 0xc9, 0x18, 0x14, 0x5f, 0x16, 0x14, 0x53, 0x54, 0x9f, 0x42, 0x6b, 0x50, 0x6c, 0xbb, 0xa2, 0x32, - 0x25, 0xc3, 0x5f, 0x15, 0xf0, 0x82, 0xc4, 0x08, 0x8a, 0xae, 0xdb, 0xed, 0xd9, 0xb4, 0x6c, 0x25, - 0x53, 0xfc, 0x96, 0xa4, 0x90, 0x18, 0x41, 0x71, 0x0a, 0xb7, 0x7e, 0x45, 0x52, 0xf8, 0x11, 0x7f, - 0x3e, 0x0d, 0x05, 0xd7, 0xb1, 0x8f, 0x5c, 0x67, 0x1c, 0x23, 0x7e, 0x5b, 0x30, 0x80, 0x80, 0x50, - 0x82, 0x6b, 0x90, 0x1f, 0x77, 0x23, 0x7e, 0xe7, 0x2d, 0x79, 0x3c, 0xe4, 0x0e, 0xac, 0xc1, 0x8c, - 0x4c, 0x50, 0x96, 0xeb, 0x8c, 0x41, 0xf1, 0xbb, 0x82, 0xa2, 0x14, 0x81, 0x89, 0x65, 0x04, 0xc4, - 0x0f, 0xda, 0x64, 0x1c, 0x92, 0xd7, 0xe4, 0x32, 0x04, 0x44, 0xb8, 0xf2, 0x80, 0x38, 0xe6, 0xe1, - 0x78, 0x0c, 0x5f, 0x93, 0xae, 0x94, 0x18, 0x4a, 0x51, 0x87, 0xe9, 0x0e, 0xf6, 0xfc, 0x43, 0x6c, - 0x8f, 0xb5, 0x1d, 0xbf, 0x27, 0x38, 0x8a, 0x21, 0x48, 0x78, 0xa4, 0xe7, 0x9c, 0x86, 0xe6, 0xeb, - 0xd2, 0x23, 0x11, 0x98, 0x38, 0x7a, 0x7e, 0xc0, 0xee, 0x66, 0x4e, 0xc3, 0xf6, 0xfb, 0xf2, 0xe8, - 0x71, 0xec, 0x66, 0x94, 0xf1, 0x1a, 0xe4, 0x7d, 0xeb, 0xc5, 0xb1, 0x68, 0xfe, 0x40, 0xee, 0x34, - 0x03, 0x50, 0xf0, 0xf3, 0x70, 0x76, 0x64, 0x99, 0x18, 0x83, 0xec, 0x0f, 0x05, 0xd9, 0x99, 0x11, - 0xa5, 0x42, 0xa4, 0x84, 0xd3, 0x52, 0xfe, 0x91, 0x4c, 0x09, 0x64, 0x80, 0x6b, 0x87, 0x76, 0xf6, - 0x3e, 0x6e, 0x9d, 0xce, 0x6b, 0x7f, 0x2c, 0xbd, 0xc6, 0xb1, 0x31, 0xaf, 0xed, 0xc1, 0x19, 0xc1, - 0x78, 0xba, 0x7d, 0xfd, 0x86, 0x4c, 0xac, 0x1c, 0xbd, 0x1f, 0xdf, 0xdd, 0x4f, 0xc1, 0x42, 0xe8, - 0x4e, 0xd9, 0x94, 0xfa, 0x46, 0x07, 0x77, 0xc7, 0x60, 0xfe, 0xa6, 0x60, 0x96, 0x19, 0x3f, 0xec, - 0x6a, 0xfd, 0x4d, 0xdc, 0xa5, 0xe4, 0xcf, 0x41, 0x59, 0x92, 0xf7, 0x1c, 0x8f, 0x98, 0x6e, 0xdb, - 0xb1, 0x5e, 0x24, 0xcd, 0x31, 0xa8, 0xff, 0x64, 0x60, 0xab, 0xf6, 0x23, 0x70, 0xca, 0xbc, 0x0e, - 0x6a, 0xd8, 0xab, 0x18, 0x56, 0xa7, 0xeb, 0x7a, 0x41, 0x02, 0xe3, 0x9f, 0xca, 0x9d, 0x0a, 0x71, - 0xeb, 0x0c, 0xa6, 0x35, 0xa0, 0xc4, 0x86, 0xe3, 0x86, 0xe4, 0x9f, 0x09, 0xa2, 0xe9, 0x3e, 0x4a, - 0x24, 0x0e, 0xd3, 0xed, 0x74, 0xb1, 0x37, 0x4e, 0xfe, 0xfb, 0x73, 0x99, 0x38, 0x04, 0x44, 0x24, - 0x8e, 0xe0, 0xa8, 0x4b, 0x68, 0xb5, 0x1f, 0x83, 0xe1, 0x5b, 0x32, 0x71, 0x48, 0x8c, 0xa0, 0x90, - 0x0d, 0xc3, 0x18, 0x14, 0x7f, 0x21, 0x29, 0x24, 0x86, 0x52, 0x7c, 0xbc, 0x5f, 0x68, 0x3d, 0xd2, - 0xb6, 0xfc, 0xc0, 0xe3, 0xad, 0xf0, 0xbd, 0xa9, 0xbe, 0xfd, 0x56, 0xbc, 0x09, 0xd3, 0x23, 0x50, - 0xed, 0x3a, 0xcc, 0x0c, 0xb4, 0x18, 0x28, 0xe9, 0x8b, 0x7e, 0xf9, 0xd3, 0xef, 0x88, 0x64, 0x14, - 0xef, 0x30, 0xb4, 0x0d, 0xba, 0xef, 0xf1, 0x3e, 0x20, 0x99, 0xec, 0xa5, 0x77, 0xc2, 0xad, 0x8f, - 0xb5, 0x01, 0xda, 0x33, 0x30, 0x1d, 0xeb, 0x01, 0x92, 0xa9, 0x3e, 0x23, 0xa8, 0x8a, 0xd1, 0x16, - 0x40, 0xbb, 0x0c, 0x19, 0x5a, 0xcf, 0x93, 0xe1, 0x3f, 0x27, 0xe0, 0x4c, 0x5d, 0xfb, 0x08, 0xe4, - 0x64, 0x1d, 0x4f, 0x86, 0xfe, 0xbc, 0x80, 0x86, 0x10, 0x0a, 0x97, 0x35, 0x3c, 0x19, 0xfe, 0x0b, - 0x12, 0x2e, 0x21, 0x14, 0x3e, 0xbe, 0x0b, 0xbf, 0xf3, 0xb9, 0x8c, 0xc8, 0xc3, 0xd2, 0x77, 0xd7, - 0x60, 0x4a, 0x14, 0xef, 0x64, 0xf4, 0x67, 0xc5, 0xc3, 0x25, 0x42, 0x7b, 0x12, 0xb2, 0x63, 0x3a, - 0xfc, 0x97, 0x04, 0x94, 0xeb, 0x6b, 0x75, 0x28, 0x44, 0x0a, 0x76, 0x32, 0xfc, 0x97, 0x05, 0x3c, - 0x8a, 0xa2, 0xa6, 0x8b, 0x82, 0x9d, 0x4c, 0xf0, 0x2b, 0xd2, 0x74, 0x81, 0xa0, 0x6e, 0x93, 0xb5, - 0x3a, 0x19, 0xfd, 0x79, 0xe9, 0x75, 0x09, 0xd1, 0x9e, 0x86, 0x7c, 0x98, 0x7f, 0x93, 0xf1, 0xbf, - 0x2a, 0xf0, 0x7d, 0x0c, 0xf5, 0x40, 0x24, 0xff, 0x27, 0x53, 0xfc, 0x9a, 0xf4, 0x40, 0x04, 0x45, - 0x8f, 0xd1, 0x60, 0x4d, 0x4f, 0x66, 0xfa, 0x75, 0x79, 0x8c, 0x06, 0x4a, 0x3a, 0xdd, 0x4d, 0x96, - 0x06, 0x93, 0x29, 0x7e, 0x43, 0xee, 0x26, 0xd3, 0xa7, 0x66, 0x0c, 0x16, 0xc9, 0x64, 0x8e, 0xdf, - 0x94, 0x66, 0x0c, 0xd4, 0x48, 0x6d, 0x07, 0xd0, 0x70, 0x81, 0x4c, 0xe6, 0xfb, 0x82, 0xe0, 0x9b, - 0x1d, 0xaa, 0x8f, 0xda, 0xb3, 0x70, 0x66, 0x74, 0x71, 0x4c, 0x66, 0xfd, 0xe2, 0x3b, 0x03, 0xaf, - 0x33, 0xd1, 0xda, 0xa8, 0xed, 0xf5, 0xb3, 0x6c, 0xb4, 0x30, 0x26, 0xd3, 0xbe, 0xfc, 0x4e, 0x3c, - 0xd1, 0x46, 0xeb, 0xa2, 0x56, 0x03, 0xe8, 0xd7, 0xa4, 0x64, 0xae, 0x57, 0x04, 0x57, 0x04, 0x44, - 0x8f, 0x86, 0x28, 0x49, 0xc9, 0xf8, 0x2f, 0xcb, 0xa3, 0x21, 0x10, 0xf4, 0x68, 0xc8, 0x6a, 0x94, - 0x8c, 0x7e, 0x55, 0x1e, 0x0d, 0x09, 0xd1, 0xae, 0x41, 0xce, 0xe9, 0xd9, 0x36, 0x8d, 0x2d, 0x74, - 0xef, 0x7f, 0xb2, 0x29, 0xff, 0xcb, 0xbb, 0x02, 0x2c, 0x01, 0xda, 0x65, 0xc8, 0x92, 0xce, 0x01, - 0x69, 0x26, 0x21, 0xff, 0xf5, 0x5d, 0x99, 0x4f, 0xa8, 0xb6, 0xf6, 0x34, 0x00, 0x7f, 0x99, 0x66, - 0xdf, 0x58, 0x12, 0xb0, 0xff, 0xf6, 0xae, 0xf8, 0x7e, 0xdf, 0x87, 0xf4, 0x09, 0xf8, 0x7f, 0x03, - 0xdc, 0x9b, 0xe0, 0xad, 0x38, 0x01, 0x7b, 0x01, 0x7f, 0x0a, 0xa6, 0x6e, 0xf8, 0xae, 0x13, 0xe0, - 0x76, 0x12, 0xfa, 0xdf, 0x05, 0x5a, 0xea, 0x53, 0x87, 0x75, 0x5c, 0x8f, 0x04, 0xb8, 0xed, 0x27, - 0x61, 0xff, 0x43, 0x60, 0x43, 0x00, 0x05, 0x9b, 0xd8, 0x0f, 0xc6, 0x59, 0xf7, 0x7f, 0x4a, 0xb0, - 0x04, 0x50, 0xa3, 0xe9, 0xef, 0x9b, 0xe4, 0x28, 0x09, 0xfb, 0xb6, 0x34, 0x5a, 0xe8, 0x6b, 0x1f, - 0x81, 0x3c, 0xfd, 0xc9, 0xff, 0xa7, 0x25, 0x01, 0xfc, 0x5f, 0x02, 0xdc, 0x47, 0xd0, 0x27, 0xfb, - 0x41, 0x33, 0xb0, 0x92, 0x9d, 0xfd, 0xdf, 0x62, 0xa7, 0xa5, 0xbe, 0x56, 0x83, 0x82, 0x1f, 0x34, - 0x9b, 0x3d, 0xd1, 0xd1, 0x24, 0xc0, 0x7f, 0xf8, 0x6e, 0xf8, 0x92, 0x1b, 0x62, 0x56, 0xce, 0x8f, - 0xbe, 0xaf, 0x83, 0x35, 0x77, 0xcd, 0xe5, 0x37, 0x75, 0xf0, 0xf9, 0x2c, 0x54, 0x4d, 0xb7, 0x73, - 0xe0, 0xfa, 0x17, 0x22, 0x69, 0xe8, 0x42, 0xb8, 0x02, 0x79, 0xd5, 0x16, 0x0a, 0x16, 0x4e, 0x77, - 0x49, 0x57, 0xfd, 0xab, 0x34, 0xe4, 0xea, 0xd8, 0x0f, 0xf0, 0x6d, 0x7c, 0x84, 0xba, 0x30, 0x47, - 0x7f, 0x6f, 0xe2, 0x2e, 0xbb, 0xf2, 0x11, 0x67, 0x4c, 0xdc, 0x83, 0x7e, 0x70, 0xb9, 0xff, 0x54, - 0x89, 0x58, 0x1e, 0xa1, 0xce, 0x3e, 0xbd, 0xae, 0xa8, 0xaf, 0xff, 0xc3, 0xb9, 0x89, 0x5f, 0xfc, - 0xc7, 0x73, 0xb9, 0xcd, 0xa3, 0x67, 0x2d, 0xdb, 0x77, 0x1d, 0x7d, 0x14, 0x35, 0xfa, 0x8c, 0x02, - 0x0f, 0x8c, 0x90, 0x6f, 0x89, 0x83, 0x28, 0xbe, 0x26, 0x5c, 0x1a, 0xf3, 0xd1, 0x12, 0xc6, 0x4d, - 0x28, 0xc6, 0x1e, 0x7f, 0xaf, 0xc7, 0x2c, 0x3c, 0x0f, 0xe5, 0x93, 0x56, 0x82, 0x54, 0x48, 0xdf, - 0x24, 0x47, 0xe2, 0x9f, 0x27, 0xe9, 0x4f, 0xf4, 0x48, 0xff, 0x9f, 0xaf, 0x94, 0xa5, 0xc2, 0xc5, - 0xd9, 0x88, 0x75, 0xe2, 0x61, 0x7c, 0x5e, 0x4b, 0x5d, 0x55, 0x16, 0x30, 0x2c, 0x26, 0x59, 0xfa, - 0x7f, 0x7c, 0x44, 0xb5, 0x02, 0x93, 0x5c, 0x88, 0xe6, 0x21, 0xbb, 0xee, 0x04, 0x57, 0x2e, 0x31, - 0xaa, 0xb4, 0xce, 0x07, 0x2b, 0x1b, 0xaf, 0xdf, 0xad, 0x4c, 0x7c, 0xef, 0x6e, 0x65, 0xe2, 0xef, - 0xee, 0x56, 0x26, 0x7e, 0x70, 0xb7, 0xa2, 0xbc, 0x79, 0xb7, 0xa2, 0xbc, 0x7d, 0xb7, 0xa2, 0xfc, - 0xe8, 0x6e, 0x45, 0xb9, 0x73, 0x5c, 0x51, 0xbe, 0x76, 0x5c, 0x51, 0xbe, 0x71, 0x5c, 0x51, 0xbe, - 0x7d, 0x5c, 0x51, 0xbe, 0x73, 0x5c, 0x51, 0x5e, 0x3f, 0xae, 0x4c, 0x7c, 0xef, 0xb8, 0xa2, 0xfc, - 0xe0, 0xb8, 0xa2, 0xbc, 0x79, 0x5c, 0x99, 0x78, 0xfb, 0xb8, 0xa2, 0xfc, 0xe8, 0xb8, 0x32, 0x71, - 0xe7, 0x9f, 0x2a, 0x13, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xcd, 0x5b, 0x0b, 0xd1, 0x0d, 0x30, + // 3794 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x65, 0x88, 0x8e, 0x21, 0x0a, 0xb1, + 0x23, 0xda, 0x4e, 0xc8, 0x8c, 0x2c, 0xc9, 0x32, 0xd4, 0xc4, 0x03, 0x82, 0x10, 0x03, 0x95, 0x24, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0x27, 0xed, 0xb4, 0x4d, 0x7f, 0x66, 0x9a, 0xb8, 0x8e, 0xdb, + 0x66, 0xa6, 0x75, 0x9a, 0xf4, 0x27, 0xe9, 0x4f, 0x9a, 0xe9, 0x53, 0xfa, 0x90, 0xd6, 0x4f, 0x9d, + 0xe4, 0xad, 0x0f, 0x9d, 0xd6, 0x62, 0x3c, 0x53, 0xb7, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xe3, + 0x97, 0xce, 0xfd, 0x5b, 0xec, 0x02, 0x20, 0x17, 0x4c, 0xc7, 0xc9, 0x13, 0x71, 0xcf, 0x3d, 0xdf, + 0xb7, 0xe7, 0x9e, 0x7b, 0xee, 0x39, 0x67, 0xef, 0x12, 0xbe, 0x7f, 0x19, 0x96, 0x3b, 0xb6, 0xdd, + 0x31, 0xf1, 0x5a, 0xcf, 0xb1, 0x3d, 0x7b, 0xbf, 0xdf, 0x5e, 0x6b, 0x61, 0x57, 0x77, 0x8c, 0x9e, + 0x67, 0x3b, 0xab, 0x54, 0xa6, 0xcc, 0x31, 0x8d, 0x55, 0xa1, 0x51, 0xdc, 0x86, 0xf9, 0xeb, 0x86, + 0x89, 0x37, 0x7c, 0xc5, 0x26, 0xf6, 0x94, 0xab, 0x90, 0x68, 0x1b, 0x26, 0xce, 0x4b, 0xcb, 0xf1, + 0x95, 0xcc, 0xc5, 0xc7, 0x56, 0x87, 0x40, 0xab, 0x61, 0x44, 0x83, 0x88, 0x55, 0x8a, 0x28, 0xbe, + 0x99, 0x80, 0x85, 0x31, 0xb3, 0x8a, 0x02, 0x09, 0x0b, 0x75, 0x09, 0xa3, 0xb4, 0x92, 0x56, 0xe9, + 0x6f, 0x25, 0x0f, 0x33, 0x3d, 0xa4, 0xdf, 0x41, 0x1d, 0x9c, 0x8f, 0x51, 0xb1, 0x18, 0x2a, 0x05, + 0x80, 0x16, 0xee, 0x61, 0xab, 0x85, 0x2d, 0xfd, 0x30, 0x1f, 0x5f, 0x8e, 0xaf, 0xa4, 0xd5, 0x80, + 0x44, 0x79, 0x0a, 0xe6, 0x7b, 0xfd, 0x7d, 0xd3, 0xd0, 0xb5, 0x80, 0x1a, 0x2c, 0xc7, 0x57, 0x92, + 0xaa, 0xcc, 0x26, 0x36, 0x06, 0xca, 0x17, 0x60, 0xee, 0x1e, 0x46, 0x77, 0x82, 0xaa, 0x19, 0xaa, + 0x9a, 0x23, 0xe2, 0x80, 0x62, 0x05, 0xb2, 0x5d, 0xec, 0xba, 0xa8, 0x83, 0x35, 0xef, 0xb0, 0x87, + 0xf3, 0x09, 0xba, 0xfa, 0xe5, 0x91, 0xd5, 0x0f, 0xaf, 0x3c, 0xc3, 0x51, 0xbb, 0x87, 0x3d, 0xac, + 0x94, 0x21, 0x8d, 0xad, 0x7e, 0x97, 0x31, 0x24, 0x8f, 0xf1, 0x5f, 0xd5, 0xea, 0x77, 0x87, 0x59, + 0x52, 0x04, 0xc6, 0x29, 0x66, 0x5c, 0xec, 0xdc, 0x35, 0x74, 0x9c, 0x9f, 0xa6, 0x04, 0x17, 0x46, + 0x08, 0x9a, 0x6c, 0x7e, 0x98, 0x43, 0xe0, 0x94, 0x0a, 0xa4, 0xf1, 0x0b, 0x1e, 0xb6, 0x5c, 0xc3, + 0xb6, 0xf2, 0x33, 0x94, 0xe4, 0xf1, 0x31, 0xbb, 0x88, 0xcd, 0xd6, 0x30, 0xc5, 0x00, 0xa7, 0x5c, + 0x81, 0x19, 0xbb, 0xe7, 0x19, 0xb6, 0xe5, 0xe6, 0x53, 0xcb, 0xd2, 0x4a, 0xe6, 0xe2, 0x07, 0xc6, + 0x06, 0x42, 0x9d, 0xe9, 0xa8, 0x42, 0x59, 0xa9, 0x81, 0xec, 0xda, 0x7d, 0x47, 0xc7, 0x9a, 0x6e, + 0xb7, 0xb0, 0x66, 0x58, 0x6d, 0x3b, 0x9f, 0xa6, 0x04, 0xe7, 0x46, 0x17, 0x42, 0x15, 0x2b, 0x76, + 0x0b, 0xd7, 0xac, 0xb6, 0xad, 0xe6, 0xdc, 0xd0, 0x58, 0x39, 0x03, 0xd3, 0xee, 0xa1, 0xe5, 0xa1, + 0x17, 0xf2, 0x59, 0x1a, 0x21, 0x7c, 0x54, 0xfc, 0xdf, 0x24, 0xcc, 0x4d, 0x12, 0x62, 0xd7, 0x20, + 0xd9, 0x26, 0xab, 0xcc, 0xc7, 0x4e, 0xe3, 0x03, 0x86, 0x09, 0x3b, 0x71, 0xfa, 0x47, 0x74, 0x62, + 0x19, 0x32, 0x16, 0x76, 0x3d, 0xdc, 0x62, 0x11, 0x11, 0x9f, 0x30, 0xa6, 0x80, 0x81, 0x46, 0x43, + 0x2a, 0xf1, 0x23, 0x85, 0xd4, 0x4d, 0x98, 0xf3, 0x4d, 0xd2, 0x1c, 0x64, 0x75, 0x44, 0x6c, 0xae, + 0x45, 0x59, 0xb2, 0x5a, 0x15, 0x38, 0x95, 0xc0, 0xd4, 0x1c, 0x0e, 0x8d, 0x95, 0x0d, 0x00, 0xdb, + 0xc2, 0x76, 0x5b, 0x6b, 0x61, 0xdd, 0xcc, 0xa7, 0x8e, 0xf1, 0x52, 0x9d, 0xa8, 0x8c, 0x78, 0xc9, + 0x66, 0x52, 0xdd, 0x54, 0x9e, 0x1d, 0x84, 0xda, 0xcc, 0x31, 0x91, 0xb2, 0xcd, 0x0e, 0xd9, 0x48, + 0xb4, 0xed, 0x41, 0xce, 0xc1, 0x24, 0xee, 0x71, 0x8b, 0xaf, 0x2c, 0x4d, 0x8d, 0x58, 0x8d, 0x5c, + 0x99, 0xca, 0x61, 0x6c, 0x61, 0xb3, 0x4e, 0x70, 0xa8, 0x7c, 0x10, 0x7c, 0x81, 0x46, 0xc3, 0x0a, + 0x68, 0x16, 0xca, 0x0a, 0xe1, 0x0e, 0xea, 0xe2, 0xa5, 0xab, 0x90, 0x0b, 0xbb, 0x47, 0x59, 0x84, + 0xa4, 0xeb, 0x21, 0xc7, 0xa3, 0x51, 0x98, 0x54, 0xd9, 0x40, 0x91, 0x21, 0x8e, 0xad, 0x16, 0xcd, + 0x72, 0x49, 0x95, 0xfc, 0x5c, 0x7a, 0x06, 0x66, 0x43, 0x8f, 0x9f, 0x14, 0x58, 0xfc, 0xc2, 0x34, + 0x2c, 0x8e, 0x8b, 0xb9, 0xb1, 0xe1, 0x7f, 0x06, 0xa6, 0xad, 0x7e, 0x77, 0x1f, 0x3b, 0xf9, 0x38, + 0x65, 0xe0, 0x23, 0xa5, 0x0c, 0x49, 0x13, 0xed, 0x63, 0x33, 0x9f, 0x58, 0x96, 0x56, 0x72, 0x17, + 0x9f, 0x9a, 0x28, 0xaa, 0x57, 0xb7, 0x08, 0x44, 0x65, 0x48, 0xe5, 0xe3, 0x90, 0xe0, 0x29, 0x8e, + 0x30, 0x3c, 0x39, 0x19, 0x03, 0x89, 0x45, 0x95, 0xe2, 0x94, 0x47, 0x20, 0x4d, 0xfe, 0x32, 0xdf, + 0x4e, 0x53, 0x9b, 0x53, 0x44, 0x40, 0xfc, 0xaa, 0x2c, 0x41, 0x8a, 0x86, 0x59, 0x0b, 0x8b, 0xd2, + 0xe0, 0x8f, 0xc9, 0xc6, 0xb4, 0x70, 0x1b, 0xf5, 0x4d, 0x4f, 0xbb, 0x8b, 0xcc, 0x3e, 0xa6, 0x01, + 0x93, 0x56, 0xb3, 0x5c, 0xf8, 0x29, 0x22, 0x53, 0xce, 0x41, 0x86, 0x45, 0xa5, 0x61, 0xb5, 0xf0, + 0x0b, 0x34, 0xfb, 0x24, 0x55, 0x16, 0xa8, 0x35, 0x22, 0x21, 0x8f, 0xbf, 0xed, 0xda, 0x96, 0xd8, + 0x5a, 0xfa, 0x08, 0x22, 0xa0, 0x8f, 0x7f, 0x66, 0x38, 0xf1, 0x3d, 0x3a, 0x7e, 0x79, 0xc3, 0xb1, + 0x58, 0xfc, 0x66, 0x0c, 0x12, 0xf4, 0xbc, 0xcd, 0x41, 0x66, 0xf7, 0x56, 0xa3, 0xaa, 0x6d, 0xd4, + 0xf7, 0xd6, 0xb7, 0xaa, 0xb2, 0xa4, 0xe4, 0x00, 0xa8, 0xe0, 0xfa, 0x56, 0xbd, 0xbc, 0x2b, 0xc7, + 0xfc, 0x71, 0x6d, 0x67, 0xf7, 0xca, 0x25, 0x39, 0xee, 0x03, 0xf6, 0x98, 0x20, 0x11, 0x54, 0x78, + 0xfa, 0xa2, 0x9c, 0x54, 0x64, 0xc8, 0x32, 0x82, 0xda, 0xcd, 0xea, 0xc6, 0x95, 0x4b, 0xf2, 0x74, + 0x58, 0xf2, 0xf4, 0x45, 0x79, 0x46, 0x99, 0x85, 0x34, 0x95, 0xac, 0xd7, 0xeb, 0x5b, 0x72, 0xca, + 0xe7, 0x6c, 0xee, 0xaa, 0xb5, 0x9d, 0x4d, 0x39, 0xed, 0x73, 0x6e, 0xaa, 0xf5, 0xbd, 0x86, 0x0c, + 0x3e, 0xc3, 0x76, 0xb5, 0xd9, 0x2c, 0x6f, 0x56, 0xe5, 0x8c, 0xaf, 0xb1, 0x7e, 0x6b, 0xb7, 0xda, + 0x94, 0xb3, 0x21, 0xb3, 0x9e, 0xbe, 0x28, 0xcf, 0xfa, 0x8f, 0xa8, 0xee, 0xec, 0x6d, 0xcb, 0x39, + 0x65, 0x1e, 0x66, 0xd9, 0x23, 0x84, 0x11, 0x73, 0x43, 0xa2, 0x2b, 0x97, 0x64, 0x79, 0x60, 0x08, + 0x63, 0x99, 0x0f, 0x09, 0xae, 0x5c, 0x92, 0x95, 0x62, 0x05, 0x92, 0x34, 0xba, 0x14, 0x05, 0x72, + 0x5b, 0xe5, 0xf5, 0xea, 0x96, 0x56, 0x6f, 0xec, 0xd6, 0xea, 0x3b, 0xe5, 0x2d, 0x59, 0x1a, 0xc8, + 0xd4, 0xea, 0x27, 0xf7, 0x6a, 0x6a, 0x75, 0x43, 0x8e, 0x05, 0x65, 0x8d, 0x6a, 0x79, 0xb7, 0xba, + 0x21, 0xc7, 0x8b, 0x3a, 0x2c, 0x8e, 0xcb, 0x33, 0x63, 0x4f, 0x46, 0x60, 0x8b, 0x63, 0xc7, 0x6c, + 0x31, 0xe5, 0x1a, 0xd9, 0xe2, 0x2f, 0x4b, 0xb0, 0x30, 0x26, 0xd7, 0x8e, 0x7d, 0xc8, 0x73, 0x90, + 0x64, 0x21, 0xca, 0xaa, 0xcf, 0x13, 0x63, 0x93, 0x36, 0x0d, 0xd8, 0x91, 0x0a, 0x44, 0x71, 0xc1, + 0x0a, 0x1c, 0x3f, 0xa6, 0x02, 0x13, 0x8a, 0x11, 0x23, 0x5f, 0x92, 0x20, 0x7f, 0x1c, 0x77, 0x44, + 0xa2, 0x88, 0x85, 0x12, 0xc5, 0xb5, 0x61, 0x03, 0xce, 0x1f, 0xbf, 0x86, 0x11, 0x2b, 0x5e, 0x93, + 0xe0, 0xcc, 0xf8, 0x46, 0x65, 0xac, 0x0d, 0x1f, 0x87, 0xe9, 0x2e, 0xf6, 0x0e, 0x6c, 0x51, 0xac, + 0x3f, 0x34, 0xa6, 0x04, 0x90, 0xe9, 0x61, 0x5f, 0x71, 0x54, 0xb0, 0x86, 0xc4, 0x8f, 0xeb, 0x36, + 0x98, 0x35, 0x23, 0x96, 0x7e, 0x2e, 0x06, 0x0f, 0x8d, 0x25, 0x1f, 0x6b, 0xe8, 0xa3, 0x00, 0x86, + 0xd5, 0xeb, 0x7b, 0xac, 0x20, 0xb3, 0xfc, 0x94, 0xa6, 0x12, 0x7a, 0xf6, 0x49, 0xee, 0xe9, 0x7b, + 0xfe, 0x7c, 0x9c, 0xce, 0x03, 0x13, 0x51, 0x85, 0xab, 0x03, 0x43, 0x13, 0xd4, 0xd0, 0xc2, 0x31, + 0x2b, 0x1d, 0xa9, 0x75, 0x1f, 0x05, 0x59, 0x37, 0x0d, 0x6c, 0x79, 0x9a, 0xeb, 0x39, 0x18, 0x75, + 0x0d, 0xab, 0x43, 0x13, 0x70, 0xaa, 0x94, 0x6c, 0x23, 0xd3, 0xc5, 0xea, 0x1c, 0x9b, 0x6e, 0x8a, + 0x59, 0x82, 0xa0, 0x55, 0xc6, 0x09, 0x20, 0xa6, 0x43, 0x08, 0x36, 0xed, 0x23, 0x8a, 0x5f, 0x9b, + 0x81, 0x4c, 0xa0, 0xad, 0x53, 0xce, 0x43, 0xf6, 0x36, 0xba, 0x8b, 0x34, 0xd1, 0xaa, 0x33, 0x4f, + 0x64, 0x88, 0xac, 0xc1, 0xdb, 0xf5, 0x8f, 0xc2, 0x22, 0x55, 0xb1, 0xfb, 0x1e, 0x76, 0x34, 0xdd, + 0x44, 0xae, 0x4b, 0x9d, 0x96, 0xa2, 0xaa, 0x0a, 0x99, 0xab, 0x93, 0xa9, 0x8a, 0x98, 0x51, 0x2e, + 0xc3, 0x02, 0x45, 0x74, 0xfb, 0xa6, 0x67, 0xf4, 0x4c, 0xac, 0x91, 0x97, 0x07, 0x97, 0x26, 0x62, + 0xdf, 0xb2, 0x79, 0xa2, 0xb1, 0xcd, 0x15, 0x88, 0x45, 0xae, 0xb2, 0x01, 0x8f, 0x52, 0x58, 0x07, + 0x5b, 0xd8, 0x41, 0x1e, 0xd6, 0xf0, 0x67, 0xfa, 0xc8, 0x74, 0x35, 0x64, 0xb5, 0xb4, 0x03, 0xe4, + 0x1e, 0xe4, 0x17, 0x09, 0xc1, 0x7a, 0x2c, 0x2f, 0xa9, 0x67, 0x89, 0xe2, 0x26, 0xd7, 0xab, 0x52, + 0xb5, 0xb2, 0xd5, 0xfa, 0x04, 0x72, 0x0f, 0x94, 0x12, 0x9c, 0xa1, 0x2c, 0xae, 0xe7, 0x18, 0x56, + 0x47, 0xd3, 0x0f, 0xb0, 0x7e, 0x47, 0xeb, 0x7b, 0xed, 0xab, 0xf9, 0x47, 0x82, 0xcf, 0xa7, 0x16, + 0x36, 0xa9, 0x4e, 0x85, 0xa8, 0xec, 0x79, 0xed, 0xab, 0x4a, 0x13, 0xb2, 0x64, 0x33, 0xba, 0xc6, + 0x8b, 0x58, 0x6b, 0xdb, 0x0e, 0xad, 0x2c, 0xb9, 0x31, 0x27, 0x3b, 0xe0, 0xc1, 0xd5, 0x3a, 0x07, + 0x6c, 0xdb, 0x2d, 0x5c, 0x4a, 0x36, 0x1b, 0xd5, 0xea, 0x86, 0x9a, 0x11, 0x2c, 0xd7, 0x6d, 0x87, + 0x04, 0x54, 0xc7, 0xf6, 0x1d, 0x9c, 0x61, 0x01, 0xd5, 0xb1, 0x85, 0x7b, 0x2f, 0xc3, 0x82, 0xae, + 0xb3, 0x35, 0x1b, 0xba, 0xc6, 0x5b, 0x7c, 0x37, 0x2f, 0x87, 0x9c, 0xa5, 0xeb, 0x9b, 0x4c, 0x81, + 0xc7, 0xb8, 0xab, 0x3c, 0x0b, 0x0f, 0x0d, 0x9c, 0x15, 0x04, 0xce, 0x8f, 0xac, 0x72, 0x18, 0x7a, + 0x19, 0x16, 0x7a, 0x87, 0xa3, 0x40, 0x25, 0xf4, 0xc4, 0xde, 0xe1, 0x30, 0xec, 0x71, 0xfa, 0xda, + 0xe6, 0x60, 0x1d, 0x79, 0xb8, 0x95, 0x7f, 0x38, 0xa8, 0x1d, 0x98, 0x50, 0xd6, 0x40, 0xd6, 0x75, + 0x0d, 0x5b, 0x68, 0xdf, 0xc4, 0x1a, 0x72, 0xb0, 0x85, 0xdc, 0xfc, 0xb9, 0xa0, 0x72, 0x4e, 0xd7, + 0xab, 0x74, 0xb6, 0x4c, 0x27, 0x95, 0x27, 0x61, 0xde, 0xde, 0xbf, 0xad, 0xb3, 0xc8, 0xd2, 0x7a, + 0x0e, 0x6e, 0x1b, 0x2f, 0xe4, 0x1f, 0xa3, 0x6e, 0x9a, 0x23, 0x13, 0x34, 0xae, 0x1a, 0x54, 0xac, + 0x3c, 0x01, 0xb2, 0xee, 0x1e, 0x20, 0xa7, 0x47, 0x4b, 0xbb, 0xdb, 0x43, 0x3a, 0xce, 0x3f, 0xce, + 0x54, 0x99, 0x7c, 0x47, 0x88, 0x49, 0x64, 0xbb, 0xf7, 0x8c, 0xb6, 0x27, 0x18, 0x2f, 0xb0, 0xc8, + 0xa6, 0x32, 0xce, 0x76, 0x13, 0x16, 0xfb, 0x96, 0x61, 0x79, 0xd8, 0xe9, 0x39, 0x98, 0x34, 0xf1, + 0xec, 0x24, 0xe6, 0xff, 0x65, 0xe6, 0x98, 0x36, 0x7c, 0x2f, 0xa8, 0xcd, 0x02, 0x40, 0x5d, 0xe8, + 0x8f, 0x0a, 0x8b, 0x25, 0xc8, 0x06, 0xe3, 0x42, 0x49, 0x03, 0x8b, 0x0c, 0x59, 0x22, 0x35, 0xb6, + 0x52, 0xdf, 0x20, 0xd5, 0xf1, 0xd3, 0x55, 0x39, 0x46, 0xaa, 0xf4, 0x56, 0x6d, 0xb7, 0xaa, 0xa9, + 0x7b, 0x3b, 0xbb, 0xb5, 0xed, 0xaa, 0x1c, 0x7f, 0x32, 0x9d, 0x7a, 0x6b, 0x46, 0xbe, 0x7f, 0xff, + 0xfe, 0xfd, 0x58, 0xf1, 0x3b, 0x31, 0xc8, 0x85, 0x3b, 0x63, 0xe5, 0xa7, 0xe0, 0x61, 0xf1, 0x1a, + 0xeb, 0x62, 0x4f, 0xbb, 0x67, 0x38, 0x34, 0x54, 0xbb, 0x88, 0xf5, 0x96, 0xbe, 0x97, 0x17, 0xb9, + 0x56, 0x13, 0x7b, 0xcf, 0x1b, 0x0e, 0x09, 0xc4, 0x2e, 0xf2, 0x94, 0x2d, 0x38, 0x67, 0xd9, 0x9a, + 0xeb, 0x21, 0xab, 0x85, 0x9c, 0x96, 0x36, 0xb8, 0x40, 0xd0, 0x90, 0xae, 0x63, 0xd7, 0xb5, 0x59, + 0x89, 0xf0, 0x59, 0x3e, 0x60, 0xd9, 0x4d, 0xae, 0x3c, 0xc8, 0x9d, 0x65, 0xae, 0x3a, 0x14, 0x11, + 0xf1, 0xe3, 0x22, 0xe2, 0x11, 0x48, 0x77, 0x51, 0x4f, 0xc3, 0x96, 0xe7, 0x1c, 0xd2, 0x7e, 0x2e, + 0xa5, 0xa6, 0xba, 0xa8, 0x57, 0x25, 0xe3, 0xf7, 0x6f, 0x0f, 0x82, 0x7e, 0xfc, 0xc7, 0x38, 0x64, + 0x83, 0x3d, 0x1d, 0x69, 0x91, 0x75, 0x9a, 0xbf, 0x25, 0x7a, 0xc2, 0x3f, 0x78, 0x62, 0x07, 0xb8, + 0x5a, 0x21, 0x89, 0xbd, 0x34, 0xcd, 0x3a, 0x2d, 0x95, 0x21, 0x49, 0x51, 0x25, 0x67, 0x1a, 0xb3, + 0xfe, 0x3d, 0xa5, 0xf2, 0x91, 0xb2, 0x09, 0xd3, 0xb7, 0x5d, 0xca, 0x3d, 0x4d, 0xb9, 0x1f, 0x3b, + 0x99, 0xfb, 0x46, 0x93, 0x92, 0xa7, 0x6f, 0x34, 0xb5, 0x9d, 0xba, 0xba, 0x5d, 0xde, 0x52, 0x39, + 0x5c, 0x39, 0x0b, 0x09, 0x13, 0xbd, 0x78, 0x18, 0x2e, 0x01, 0x54, 0x34, 0xa9, 0xe3, 0xcf, 0x42, + 0xe2, 0x1e, 0x46, 0x77, 0xc2, 0x89, 0x97, 0x8a, 0xde, 0xc7, 0xd0, 0x5f, 0x83, 0x24, 0xf5, 0x97, + 0x02, 0xc0, 0x3d, 0x26, 0x4f, 0x29, 0x29, 0x48, 0x54, 0xea, 0x2a, 0x09, 0x7f, 0x19, 0xb2, 0x4c, + 0xaa, 0x35, 0x6a, 0xd5, 0x4a, 0x55, 0x8e, 0x15, 0x2f, 0xc3, 0x34, 0x73, 0x02, 0x39, 0x1a, 0xbe, + 0x1b, 0xe4, 0x29, 0x3e, 0xe4, 0x1c, 0x92, 0x98, 0xdd, 0xdb, 0x5e, 0xaf, 0xaa, 0x72, 0x2c, 0xb8, + 0xbd, 0x2e, 0x64, 0x83, 0xed, 0xdc, 0x8f, 0x27, 0xa6, 0xfe, 0x5a, 0x82, 0x4c, 0xa0, 0x3d, 0x23, + 0x8d, 0x01, 0x32, 0x4d, 0xfb, 0x9e, 0x86, 0x4c, 0x03, 0xb9, 0x3c, 0x28, 0x80, 0x8a, 0xca, 0x44, + 0x32, 0xe9, 0xa6, 0xfd, 0x58, 0x8c, 0x7f, 0x55, 0x02, 0x79, 0xb8, 0xb5, 0x1b, 0x32, 0x50, 0xfa, + 0x89, 0x1a, 0xf8, 0x8a, 0x04, 0xb9, 0x70, 0x3f, 0x37, 0x64, 0xde, 0xf9, 0x9f, 0xa8, 0x79, 0x6f, + 0xc4, 0x60, 0x36, 0xd4, 0xc5, 0x4d, 0x6a, 0xdd, 0x67, 0x60, 0xde, 0x68, 0xe1, 0x6e, 0xcf, 0xf6, + 0xb0, 0xa5, 0x1f, 0x6a, 0x26, 0xbe, 0x8b, 0xcd, 0x7c, 0x91, 0x26, 0x8a, 0xb5, 0x93, 0xfb, 0xc4, + 0xd5, 0xda, 0x00, 0xb7, 0x45, 0x60, 0xa5, 0x85, 0xda, 0x46, 0x75, 0xbb, 0x51, 0xdf, 0xad, 0xee, + 0x54, 0x6e, 0x69, 0x7b, 0x3b, 0x3f, 0xbd, 0x53, 0x7f, 0x7e, 0x47, 0x95, 0x8d, 0x21, 0xb5, 0xf7, + 0xf1, 0xa8, 0x37, 0x40, 0x1e, 0x36, 0x4a, 0x79, 0x18, 0xc6, 0x99, 0x25, 0x4f, 0x29, 0x0b, 0x30, + 0xb7, 0x53, 0xd7, 0x9a, 0xb5, 0x8d, 0xaa, 0x56, 0xbd, 0x7e, 0xbd, 0x5a, 0xd9, 0x6d, 0xb2, 0x17, + 0x67, 0x5f, 0x7b, 0x37, 0x7c, 0xa8, 0x5f, 0x8e, 0xc3, 0xc2, 0x18, 0x4b, 0x94, 0x32, 0xef, 0xd9, + 0xd9, 0x6b, 0xc4, 0x47, 0x26, 0xb1, 0x7e, 0x95, 0x74, 0x05, 0x0d, 0xe4, 0x78, 0xbc, 0xc5, 0x7f, + 0x02, 0x88, 0x97, 0x2c, 0xcf, 0x68, 0x1b, 0xd8, 0xe1, 0xf7, 0x0c, 0xac, 0x91, 0x9f, 0x1b, 0xc8, + 0xd9, 0x55, 0xc3, 0x87, 0x41, 0xe9, 0xd9, 0xae, 0xe1, 0x19, 0x77, 0xb1, 0x66, 0x58, 0xe2, 0x52, + 0x82, 0x34, 0xf6, 0x09, 0x55, 0x16, 0x33, 0x35, 0xcb, 0xf3, 0xb5, 0x2d, 0xdc, 0x41, 0x43, 0xda, + 0x24, 0x81, 0xc7, 0x55, 0x59, 0xcc, 0xf8, 0xda, 0xe7, 0x21, 0xdb, 0xb2, 0xfb, 0xa4, 0x4d, 0x62, + 0x7a, 0xa4, 0x5e, 0x48, 0x6a, 0x86, 0xc9, 0x7c, 0x15, 0xde, 0xc7, 0x0e, 0x6e, 0x43, 0xb2, 0x6a, + 0x86, 0xc9, 0x98, 0xca, 0x05, 0x98, 0x43, 0x9d, 0x8e, 0x43, 0xc8, 0x05, 0x11, 0xeb, 0xcc, 0x73, + 0xbe, 0x98, 0x2a, 0x2e, 0xdd, 0x80, 0x94, 0xf0, 0x03, 0x29, 0xc9, 0xc4, 0x13, 0x5a, 0x8f, 0xdd, + 0x49, 0xc5, 0x56, 0xd2, 0x6a, 0xca, 0x12, 0x93, 0xe7, 0x21, 0x6b, 0xb8, 0xda, 0xe0, 0x72, 0x34, + 0xb6, 0x1c, 0x5b, 0x49, 0xa9, 0x19, 0xc3, 0xf5, 0x6f, 0xc3, 0x8a, 0xaf, 0xc5, 0x20, 0x17, 0xbe, + 0xdc, 0x55, 0x36, 0x20, 0x65, 0xda, 0x3a, 0xa2, 0xa1, 0xc5, 0xbe, 0x2c, 0xac, 0x44, 0xdc, 0x07, + 0xaf, 0x6e, 0x71, 0x7d, 0xd5, 0x47, 0x2e, 0xfd, 0xbd, 0x04, 0x29, 0x21, 0x56, 0xce, 0x40, 0xa2, + 0x87, 0xbc, 0x03, 0x4a, 0x97, 0x5c, 0x8f, 0xc9, 0x92, 0x4a, 0xc7, 0x44, 0xee, 0xf6, 0x90, 0x45, + 0x43, 0x80, 0xcb, 0xc9, 0x98, 0xec, 0xab, 0x89, 0x51, 0x8b, 0xb6, 0xfd, 0x76, 0xb7, 0x8b, 0x2d, + 0xcf, 0x15, 0xfb, 0xca, 0xe5, 0x15, 0x2e, 0x56, 0x9e, 0x82, 0x79, 0xcf, 0x41, 0x86, 0x19, 0xd2, + 0x4d, 0x50, 0x5d, 0x59, 0x4c, 0xf8, 0xca, 0x25, 0x38, 0x2b, 0x78, 0x5b, 0xd8, 0x43, 0xfa, 0x01, + 0x6e, 0x0d, 0x40, 0xd3, 0xf4, 0xe6, 0xf0, 0x61, 0xae, 0xb0, 0xc1, 0xe7, 0x05, 0xb6, 0xf8, 0x3d, + 0x09, 0xe6, 0xc5, 0x8b, 0x4a, 0xcb, 0x77, 0xd6, 0x36, 0x00, 0xb2, 0x2c, 0xdb, 0x0b, 0xba, 0x6b, + 0x34, 0x94, 0x47, 0x70, 0xab, 0x65, 0x1f, 0xa4, 0x06, 0x08, 0x96, 0xba, 0x00, 0x83, 0x99, 0x63, + 0xdd, 0x76, 0x0e, 0x32, 0xfc, 0xe6, 0x9e, 0x7e, 0xfe, 0x61, 0xaf, 0xb6, 0xc0, 0x44, 0xe4, 0x8d, + 0x46, 0x59, 0x84, 0xe4, 0x3e, 0xee, 0x18, 0x16, 0xbf, 0x4f, 0x64, 0x03, 0x71, 0x4b, 0x99, 0xf0, + 0x6f, 0x29, 0xd7, 0x6f, 0xc2, 0x82, 0x6e, 0x77, 0x87, 0xcd, 0x5d, 0x97, 0x87, 0x5e, 0xaf, 0xdd, + 0x4f, 0x48, 0x9f, 0x86, 0x41, 0x8b, 0xf9, 0xe5, 0x58, 0x7c, 0xb3, 0xb1, 0xfe, 0xd5, 0xd8, 0xd2, + 0x26, 0xc3, 0x35, 0xc4, 0x32, 0x55, 0xdc, 0x36, 0xb1, 0x4e, 0x4c, 0x87, 0x1f, 0x7c, 0x08, 0x3e, + 0xd2, 0x31, 0xbc, 0x83, 0xfe, 0xfe, 0xaa, 0x6e, 0x77, 0xd7, 0x3a, 0x76, 0xc7, 0x1e, 0x7c, 0xee, + 0x22, 0x23, 0x3a, 0xa0, 0xbf, 0xf8, 0x27, 0xaf, 0xb4, 0x2f, 0x5d, 0x8a, 0xfc, 0x3e, 0x56, 0xda, + 0x81, 0x05, 0xae, 0xac, 0xd1, 0x3b, 0x77, 0xf6, 0x6a, 0xa0, 0x9c, 0x78, 0xef, 0x92, 0xff, 0xc6, + 0x9b, 0xb4, 0x56, 0xab, 0xf3, 0x1c, 0x4a, 0xe6, 0xd8, 0x0b, 0x44, 0x49, 0x85, 0x87, 0x42, 0x7c, + 0xec, 0x5c, 0x62, 0x27, 0x82, 0xf1, 0x3b, 0x9c, 0x71, 0x21, 0xc0, 0xd8, 0xe4, 0xd0, 0x52, 0x05, + 0x66, 0x4f, 0xc3, 0xf5, 0xb7, 0x9c, 0x2b, 0x8b, 0x83, 0x24, 0x9b, 0x30, 0x47, 0x49, 0xf4, 0xbe, + 0xeb, 0xd9, 0x5d, 0x9a, 0xf4, 0x4e, 0xa6, 0xf9, 0xbb, 0x37, 0xd9, 0x41, 0xc9, 0x11, 0x58, 0xc5, + 0x47, 0x95, 0x4a, 0x40, 0x3f, 0x33, 0xb4, 0xb0, 0x6e, 0x46, 0x30, 0xbc, 0xce, 0x0d, 0xf1, 0xf5, + 0x4b, 0x9f, 0x82, 0x45, 0xf2, 0x9b, 0xe6, 0xa4, 0xa0, 0x25, 0xd1, 0xb7, 0x4c, 0xf9, 0xef, 0xbd, + 0xc4, 0xce, 0xe2, 0x82, 0x4f, 0x10, 0xb0, 0x29, 0xb0, 0x8b, 0x1d, 0xec, 0x79, 0xd8, 0x71, 0x35, + 0x64, 0x8e, 0x33, 0x2f, 0xf0, 0x9a, 0x9e, 0xff, 0xe2, 0xdb, 0xe1, 0x5d, 0xdc, 0x64, 0xc8, 0xb2, + 0x69, 0x96, 0xf6, 0xe0, 0xe1, 0x31, 0x51, 0x31, 0x01, 0xe7, 0xcb, 0x9c, 0x73, 0x71, 0x24, 0x32, + 0x08, 0x6d, 0x03, 0x84, 0xdc, 0xdf, 0xcb, 0x09, 0x38, 0x7f, 0x9b, 0x73, 0x2a, 0x1c, 0x2b, 0xb6, + 0x94, 0x30, 0xde, 0x80, 0xf9, 0xbb, 0xd8, 0xd9, 0xb7, 0x5d, 0x7e, 0x35, 0x32, 0x01, 0xdd, 0x2b, + 0x9c, 0x6e, 0x8e, 0x03, 0xe9, 0x5d, 0x09, 0xe1, 0x7a, 0x16, 0x52, 0x6d, 0xa4, 0xe3, 0x09, 0x28, + 0xbe, 0xc4, 0x29, 0x66, 0x88, 0x3e, 0x81, 0x96, 0x21, 0xdb, 0xb1, 0x79, 0x59, 0x8a, 0x86, 0xbf, + 0xca, 0xe1, 0x19, 0x81, 0xe1, 0x14, 0x3d, 0xbb, 0xd7, 0x37, 0x49, 0xcd, 0x8a, 0xa6, 0xf8, 0x1d, + 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x14, 0x6e, 0xfd, 0x5d, 0x41, 0xe1, 0x06, 0xfc, 0xf9, 0x1c, 0x64, + 0x6c, 0xcb, 0x3c, 0xb4, 0xad, 0x49, 0x8c, 0xf8, 0x3d, 0xce, 0x00, 0x1c, 0x42, 0x08, 0xae, 0x41, + 0x7a, 0xd2, 0x8d, 0xf8, 0xfd, 0xb7, 0xc5, 0xf1, 0x10, 0x3b, 0xb0, 0x09, 0x73, 0x22, 0x41, 0x19, + 0xb6, 0x35, 0x01, 0xc5, 0x1f, 0x70, 0x8a, 0x5c, 0x00, 0xc6, 0x97, 0xe1, 0x61, 0xd7, 0xeb, 0xe0, + 0x49, 0x48, 0x5e, 0x13, 0xcb, 0xe0, 0x10, 0xee, 0xca, 0x7d, 0x6c, 0xe9, 0x07, 0x93, 0x31, 0x7c, + 0x45, 0xb8, 0x52, 0x60, 0x08, 0x45, 0x05, 0x66, 0xbb, 0xc8, 0x71, 0x0f, 0x90, 0x39, 0xd1, 0x76, + 0xfc, 0x21, 0xe7, 0xc8, 0xfa, 0x20, 0xee, 0x91, 0xbe, 0x75, 0x1a, 0x9a, 0xaf, 0x0a, 0x8f, 0x04, + 0x60, 0xfc, 0xe8, 0xb9, 0x1e, 0xbd, 0x80, 0x3a, 0x0d, 0xdb, 0xd7, 0xc4, 0xd1, 0x63, 0xd8, 0xed, + 0x20, 0xe3, 0x35, 0x48, 0xbb, 0xc6, 0x8b, 0x13, 0xd1, 0xfc, 0x91, 0xd8, 0x69, 0x0a, 0x20, 0xe0, + 0x5b, 0x70, 0x76, 0x6c, 0x99, 0x98, 0x80, 0xec, 0x8f, 0x39, 0xd9, 0x99, 0x31, 0xa5, 0x82, 0xa7, + 0x84, 0xd3, 0x52, 0xfe, 0x89, 0x48, 0x09, 0x78, 0x88, 0xab, 0x41, 0x5e, 0x14, 0x5c, 0xd4, 0x3e, + 0x9d, 0xd7, 0xfe, 0x54, 0x78, 0x8d, 0x61, 0x43, 0x5e, 0xdb, 0x85, 0x33, 0x9c, 0xf1, 0x74, 0xfb, + 0xfa, 0x75, 0x91, 0x58, 0x19, 0x7a, 0x2f, 0xbc, 0xbb, 0x3f, 0x03, 0x4b, 0xbe, 0x3b, 0x45, 0x47, + 0xea, 0x6a, 0x5d, 0xd4, 0x9b, 0x80, 0xf9, 0x1b, 0x9c, 0x59, 0x64, 0x7c, 0xbf, 0xa5, 0x75, 0xb7, + 0x51, 0x8f, 0x90, 0xdf, 0x84, 0xbc, 0x20, 0xef, 0x5b, 0x0e, 0xd6, 0xed, 0x8e, 0x65, 0xbc, 0x88, + 0x5b, 0x13, 0x50, 0xff, 0xd9, 0xd0, 0x56, 0xed, 0x05, 0xe0, 0x84, 0xb9, 0x06, 0xb2, 0xdf, 0xab, + 0x68, 0x46, 0xb7, 0x67, 0x3b, 0x5e, 0x04, 0xe3, 0x9f, 0x8b, 0x9d, 0xf2, 0x71, 0x35, 0x0a, 0x2b, + 0x55, 0x21, 0x47, 0x87, 0x93, 0x86, 0xe4, 0x5f, 0x70, 0xa2, 0xd9, 0x01, 0x8a, 0x27, 0x0e, 0xdd, + 0xee, 0xf6, 0x90, 0x33, 0x49, 0xfe, 0xfb, 0x4b, 0x91, 0x38, 0x38, 0x84, 0x27, 0x0e, 0xef, 0xb0, + 0x87, 0x49, 0xb5, 0x9f, 0x80, 0xe1, 0x9b, 0x22, 0x71, 0x08, 0x0c, 0xa7, 0x10, 0x0d, 0xc3, 0x04, + 0x14, 0x7f, 0x25, 0x28, 0x04, 0x86, 0x50, 0x7c, 0x72, 0x50, 0x68, 0x1d, 0xdc, 0x31, 0x5c, 0xcf, + 0x61, 0x7d, 0xf0, 0xc9, 0x54, 0xdf, 0x7a, 0x3b, 0xdc, 0x84, 0xa9, 0x01, 0x68, 0xe9, 0x06, 0xcc, + 0x0d, 0xb5, 0x18, 0x4a, 0xd4, 0xff, 0x2c, 0xe4, 0x7f, 0xf6, 0x5d, 0x9e, 0x8c, 0xc2, 0x1d, 0x46, + 0x69, 0x8b, 0xec, 0x7b, 0xb8, 0x0f, 0x88, 0x26, 0x7b, 0xe9, 0x5d, 0x7f, 0xeb, 0x43, 0x6d, 0x40, + 0xe9, 0x3a, 0xcc, 0x86, 0x7a, 0x80, 0x68, 0xaa, 0xcf, 0x72, 0xaa, 0x6c, 0xb0, 0x05, 0x28, 0x5d, + 0x86, 0x04, 0xa9, 0xe7, 0xd1, 0xf0, 0x9f, 0xe3, 0x70, 0xaa, 0x5e, 0xfa, 0x18, 0xa4, 0x44, 0x1d, + 0x8f, 0x86, 0xfe, 0x3c, 0x87, 0xfa, 0x10, 0x02, 0x17, 0x35, 0x3c, 0x1a, 0xfe, 0x0b, 0x02, 0x2e, + 0x20, 0x04, 0x3e, 0xb9, 0x0b, 0xbf, 0xfd, 0x4b, 0x09, 0x9e, 0x87, 0x85, 0xef, 0xae, 0xc1, 0x0c, + 0x2f, 0xde, 0xd1, 0xe8, 0xcf, 0xf1, 0x87, 0x0b, 0x44, 0xe9, 0x19, 0x48, 0x4e, 0xe8, 0xf0, 0x5f, + 0xe6, 0x50, 0xa6, 0x5f, 0xaa, 0x40, 0x26, 0x50, 0xb0, 0xa3, 0xe1, 0xbf, 0xc2, 0xe1, 0x41, 0x14, + 0x31, 0x9d, 0x17, 0xec, 0x68, 0x82, 0x5f, 0x15, 0xa6, 0x73, 0x04, 0x71, 0x9b, 0xa8, 0xd5, 0xd1, + 0xe8, 0xcf, 0x0b, 0xaf, 0x0b, 0x48, 0xe9, 0x39, 0x48, 0xfb, 0xf9, 0x37, 0x1a, 0xff, 0x6b, 0x1c, + 0x3f, 0xc0, 0x10, 0x0f, 0x04, 0xf2, 0x7f, 0x34, 0xc5, 0xaf, 0x0b, 0x0f, 0x04, 0x50, 0xe4, 0x18, + 0x0d, 0xd7, 0xf4, 0x68, 0xa6, 0xdf, 0x10, 0xc7, 0x68, 0xa8, 0xa4, 0x93, 0xdd, 0xa4, 0x69, 0x30, + 0x9a, 0xe2, 0x37, 0xc5, 0x6e, 0x52, 0x7d, 0x62, 0xc6, 0x70, 0x91, 0x8c, 0xe6, 0xf8, 0x2d, 0x61, + 0xc6, 0x50, 0x8d, 0x2c, 0x35, 0x40, 0x19, 0x2d, 0x90, 0xd1, 0x7c, 0x5f, 0xe0, 0x7c, 0xf3, 0x23, + 0xf5, 0xb1, 0xf4, 0x3c, 0x9c, 0x19, 0x5f, 0x1c, 0xa3, 0x59, 0xbf, 0xf8, 0xee, 0xd0, 0xeb, 0x4c, + 0xb0, 0x36, 0x96, 0x76, 0x07, 0x59, 0x36, 0x58, 0x18, 0xa3, 0x69, 0x5f, 0x7e, 0x37, 0x9c, 0x68, + 0x83, 0x75, 0xb1, 0x54, 0x06, 0x18, 0xd4, 0xa4, 0x68, 0xae, 0x57, 0x38, 0x57, 0x00, 0x44, 0x8e, + 0x06, 0x2f, 0x49, 0xd1, 0xf8, 0x2f, 0x89, 0xa3, 0xc1, 0x11, 0xe4, 0x68, 0x88, 0x6a, 0x14, 0x8d, + 0x7e, 0x55, 0x1c, 0x0d, 0x01, 0x29, 0x5d, 0x83, 0x94, 0xd5, 0x37, 0x4d, 0x12, 0x5b, 0xca, 0xc9, + 0xff, 0x46, 0x94, 0xff, 0xd7, 0xf7, 0x38, 0x58, 0x00, 0x4a, 0x97, 0x21, 0x89, 0xbb, 0xfb, 0xb8, + 0x15, 0x85, 0xfc, 0xb7, 0xf7, 0x44, 0x3e, 0x21, 0xda, 0xa5, 0xe7, 0x00, 0xd8, 0xcb, 0x34, 0xfd, + 0x4a, 0x14, 0x81, 0xfd, 0xf7, 0xf7, 0xf8, 0x7f, 0x28, 0x0c, 0x20, 0x03, 0x02, 0xf6, 0xff, 0x0e, + 0x27, 0x13, 0xbc, 0x1d, 0x26, 0xa0, 0x2f, 0xe0, 0xcf, 0xc2, 0xcc, 0x6d, 0xd7, 0xb6, 0x3c, 0xd4, + 0x89, 0x42, 0xff, 0x07, 0x47, 0x0b, 0x7d, 0xe2, 0xb0, 0xae, 0xed, 0x60, 0x0f, 0x75, 0xdc, 0x28, + 0xec, 0x7f, 0x72, 0xac, 0x0f, 0x20, 0x60, 0x1d, 0xb9, 0xde, 0x24, 0xeb, 0xfe, 0x2f, 0x01, 0x16, + 0x00, 0x62, 0x34, 0xf9, 0x7d, 0x07, 0x1f, 0x46, 0x61, 0xdf, 0x11, 0x46, 0x73, 0xfd, 0xd2, 0xc7, + 0x20, 0x4d, 0x7e, 0xb2, 0xff, 0xda, 0x89, 0x00, 0xff, 0x37, 0x07, 0x0f, 0x10, 0xe4, 0xc9, 0xae, + 0xd7, 0xf2, 0x8c, 0x68, 0x67, 0xff, 0x0f, 0xdf, 0x69, 0xa1, 0x5f, 0x2a, 0x43, 0xc6, 0xf5, 0x5a, + 0xad, 0x3e, 0xef, 0x68, 0x22, 0xe0, 0x3f, 0x78, 0xcf, 0x7f, 0xc9, 0xf5, 0x31, 0xeb, 0xe7, 0xc7, + 0x5f, 0xd6, 0xc1, 0xa6, 0xbd, 0x69, 0xb3, 0x6b, 0x3a, 0xf8, 0x7c, 0x12, 0x8a, 0xba, 0xdd, 0xdd, + 0xb7, 0xdd, 0xb5, 0x40, 0x1a, 0x5a, 0xf3, 0x57, 0x20, 0xae, 0xda, 0x7c, 0xc1, 0xd2, 0xe9, 0x2e, + 0xe9, 0x8a, 0x7f, 0x13, 0x87, 0x54, 0x05, 0xb9, 0x1e, 0xba, 0x87, 0x0e, 0x95, 0x1e, 0x2c, 0x90, + 0xdf, 0xdb, 0xa8, 0x47, 0xaf, 0x7c, 0xf8, 0x19, 0xe3, 0x97, 0xa0, 0x1f, 0x5e, 0x1d, 0x3c, 0x55, + 0x20, 0x56, 0xc7, 0xa8, 0xd3, 0x8f, 0xc7, 0xeb, 0xf2, 0xeb, 0xff, 0x74, 0x6e, 0xea, 0x17, 0xff, + 0xf9, 0x5c, 0x6a, 0xfb, 0xf0, 0x79, 0xc3, 0x74, 0x6d, 0x4b, 0x1d, 0x47, 0xad, 0x7c, 0x56, 0x82, + 0x47, 0xc6, 0xc8, 0x77, 0xf8, 0x41, 0xe4, 0x9f, 0x12, 0x2e, 0x4d, 0xf8, 0x68, 0x01, 0x63, 0x26, + 0x64, 0x43, 0x8f, 0x3f, 0xe9, 0x31, 0x4b, 0xb7, 0x20, 0x7f, 0xdc, 0x4a, 0x14, 0x19, 0xe2, 0x77, + 0xf0, 0x21, 0xff, 0xf7, 0x50, 0xf2, 0x53, 0xb9, 0x30, 0xf8, 0xf7, 0x32, 0x69, 0x25, 0x73, 0x71, + 0x3e, 0x60, 0x1d, 0x7f, 0x18, 0x9b, 0x2f, 0xc5, 0xae, 0x4a, 0x4b, 0x08, 0x96, 0xa3, 0x2c, 0xfd, + 0x7f, 0x3e, 0xa2, 0x58, 0x80, 0x69, 0x26, 0x54, 0x16, 0x21, 0x59, 0xb3, 0xbc, 0x2b, 0x97, 0x28, + 0x55, 0x5c, 0x65, 0x83, 0xf5, 0xad, 0xd7, 0x1f, 0x14, 0xa6, 0xbe, 0xfb, 0xa0, 0x30, 0xf5, 0x0f, + 0x0f, 0x0a, 0x53, 0x6f, 0x3c, 0x28, 0x48, 0x6f, 0x3d, 0x28, 0x48, 0xef, 0x3c, 0x28, 0x48, 0x3f, + 0x7c, 0x50, 0x90, 0xee, 0x1f, 0x15, 0xa4, 0xaf, 0x1c, 0x15, 0xa4, 0xaf, 0x1f, 0x15, 0xa4, 0x6f, + 0x1d, 0x15, 0xa4, 0x6f, 0x1f, 0x15, 0xa4, 0xd7, 0x8f, 0x0a, 0x53, 0xdf, 0x3d, 0x2a, 0x48, 0x6f, + 0x1c, 0x15, 0xa4, 0xb7, 0x8e, 0x0a, 0x53, 0xef, 0x1c, 0x15, 0xa4, 0x1f, 0x1e, 0x15, 0xa6, 0xee, + 0x7f, 0xbf, 0x30, 0xf5, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x72, 0x73, 0x97, 0x57, 0xef, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeboth/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeboth/castvalue.pb.go index db819be40..3257a58d9 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeboth/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeboth/castvalue.pb.go @@ -74,238 +74,245 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3685 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0x72, 0xcc, 0xd5, 0x2a, - 0x76, 0x2c, 0xdb, 0x89, 0x14, 0xac, 0x77, 0xd7, 0xeb, 0xd9, 0x26, 0x06, 0x45, 0xd1, 0x8a, 0x16, - 0xfa, 0xcb, 0x48, 0x8a, 0xed, 0xe4, 0x61, 0x70, 0x35, 0xbc, 0xa4, 0x66, 0x77, 0x38, 0xc3, 0xce, - 0x0c, 0x77, 0x2d, 0x3f, 0x6d, 0xe0, 0xb4, 0x45, 0x1a, 0xb4, 0xe9, 0x1f, 0xd0, 0xc4, 0x71, 0xdc, - 0x34, 0x40, 0xeb, 0x34, 0xfd, 0x4b, 0xfa, 0x93, 0x06, 0x7d, 0x4a, 0x1f, 0xd2, 0xfa, 0xa9, 0x48, - 0xde, 0xfa, 0x50, 0xb4, 0x59, 0xd5, 0x40, 0xdd, 0xd6, 0x6d, 0xdd, 0xc6, 0x40, 0x03, 0xf8, 0xa5, - 0xb8, 0x7f, 0xc3, 0x19, 0x92, 0xd2, 0x50, 0x29, 0x12, 0xf7, 0x49, 0xbc, 0xe7, 0x9e, 0xef, 0x9b, - 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0x33, 0x77, 0x04, 0x9f, 0xbe, 0x0c, 0xf3, 0x2d, 0xd7, 0x6d, 0xd9, - 0x64, 0xb9, 0xe3, 0xb9, 0x81, 0x7b, 0xd0, 0x6d, 0x2e, 0x37, 0x88, 0x6f, 0x7a, 0x56, 0x27, 0x70, - 0xbd, 0x25, 0x26, 0x43, 0x53, 0x5c, 0x63, 0x49, 0x6a, 0x2c, 0x6c, 0xc2, 0xf4, 0x33, 0x96, 0x4d, - 0x56, 0x43, 0xc5, 0x5d, 0x12, 0xa0, 0x6b, 0x90, 0x69, 0x5a, 0x36, 0x29, 0x2b, 0xf3, 0xe9, 0xc5, - 0xc2, 0xa5, 0x87, 0x96, 0xfa, 0x40, 0x4b, 0x71, 0xc4, 0x0e, 0x15, 0xeb, 0x0c, 0xb1, 0xf0, 0x46, - 0x06, 0x66, 0x86, 0xcc, 0x22, 0x04, 0x19, 0x07, 0xb7, 0x29, 0xa3, 0xb2, 0x98, 0xd7, 0xd9, 0x6f, - 0x54, 0x86, 0x89, 0x0e, 0x36, 0x6f, 0xe1, 0x16, 0x29, 0xa7, 0x98, 0x58, 0x0e, 0x51, 0x05, 0xa0, - 0x41, 0x3a, 0xc4, 0x69, 0x10, 0xc7, 0x3c, 0x2a, 0xa7, 0xe7, 0xd3, 0x8b, 0x79, 0x3d, 0x22, 0x41, - 0x8f, 0xc3, 0x74, 0xa7, 0x7b, 0x60, 0x5b, 0xa6, 0x11, 0x51, 0x83, 0xf9, 0xf4, 0x62, 0x56, 0x57, - 0xf9, 0xc4, 0x6a, 0x4f, 0xf9, 0x11, 0x98, 0xba, 0x43, 0xf0, 0xad, 0xa8, 0x6a, 0x81, 0xa9, 0x96, - 0xa8, 0x38, 0xa2, 0x58, 0x83, 0x62, 0x9b, 0xf8, 0x3e, 0x6e, 0x11, 0x23, 0x38, 0xea, 0x90, 0x72, - 0x86, 0xad, 0x7e, 0x7e, 0x60, 0xf5, 0xfd, 0x2b, 0x2f, 0x08, 0xd4, 0xde, 0x51, 0x87, 0xa0, 0x2a, - 0xe4, 0x89, 0xd3, 0x6d, 0x73, 0x86, 0xec, 0x09, 0xfe, 0xab, 0x3b, 0xdd, 0x76, 0x3f, 0x4b, 0x8e, - 0xc2, 0x04, 0xc5, 0x84, 0x4f, 0xbc, 0xdb, 0x96, 0x49, 0xca, 0xe3, 0x8c, 0xe0, 0x91, 0x01, 0x82, - 0x5d, 0x3e, 0xdf, 0xcf, 0x21, 0x71, 0xa8, 0x06, 0x79, 0xf2, 0x42, 0x40, 0x1c, 0xdf, 0x72, 0x9d, - 0xf2, 0x04, 0x23, 0x79, 0x78, 0xc8, 0x2e, 0x12, 0xbb, 0xd1, 0x4f, 0xd1, 0xc3, 0xa1, 0xab, 0x30, - 0xe1, 0x76, 0x02, 0xcb, 0x75, 0xfc, 0x72, 0x6e, 0x5e, 0x59, 0x2c, 0x5c, 0x7a, 0xdf, 0xd0, 0x40, - 0xd8, 0xe6, 0x3a, 0xba, 0x54, 0x46, 0xeb, 0xa0, 0xfa, 0x6e, 0xd7, 0x33, 0x89, 0x61, 0xba, 0x0d, - 0x62, 0x58, 0x4e, 0xd3, 0x2d, 0xe7, 0x19, 0xc1, 0x85, 0xc1, 0x85, 0x30, 0xc5, 0x9a, 0xdb, 0x20, - 0xeb, 0x4e, 0xd3, 0xd5, 0x4b, 0x7e, 0x6c, 0x8c, 0xce, 0xc1, 0xb8, 0x7f, 0xe4, 0x04, 0xf8, 0x85, - 0x72, 0x91, 0x45, 0x88, 0x18, 0x2d, 0xfc, 0x4f, 0x16, 0xa6, 0x46, 0x09, 0xb1, 0xeb, 0x90, 0x6d, - 0xd2, 0x55, 0x96, 0x53, 0x67, 0xf1, 0x01, 0xc7, 0xc4, 0x9d, 0x38, 0xfe, 0x63, 0x3a, 0xb1, 0x0a, - 0x05, 0x87, 0xf8, 0x01, 0x69, 0xf0, 0x88, 0x48, 0x8f, 0x18, 0x53, 0xc0, 0x41, 0x83, 0x21, 0x95, - 0xf9, 0xb1, 0x42, 0xea, 0x39, 0x98, 0x0a, 0x4d, 0x32, 0x3c, 0xec, 0xb4, 0x64, 0x6c, 0x2e, 0x27, - 0x59, 0xb2, 0x54, 0x97, 0x38, 0x9d, 0xc2, 0xf4, 0x12, 0x89, 0x8d, 0xd1, 0x2a, 0x80, 0xeb, 0x10, - 0xb7, 0x69, 0x34, 0x88, 0x69, 0x97, 0x73, 0x27, 0x78, 0x69, 0x9b, 0xaa, 0x0c, 0x78, 0xc9, 0xe5, - 0x52, 0xd3, 0x46, 0x4f, 0xf5, 0x42, 0x6d, 0xe2, 0x84, 0x48, 0xd9, 0xe4, 0x87, 0x6c, 0x20, 0xda, - 0xf6, 0xa1, 0xe4, 0x11, 0x1a, 0xf7, 0xa4, 0x21, 0x56, 0x96, 0x67, 0x46, 0x2c, 0x25, 0xae, 0x4c, - 0x17, 0x30, 0xbe, 0xb0, 0x49, 0x2f, 0x3a, 0x44, 0xef, 0x87, 0x50, 0x60, 0xb0, 0xb0, 0x02, 0x96, - 0x85, 0x8a, 0x52, 0xb8, 0x85, 0xdb, 0x64, 0xee, 0x1a, 0x94, 0xe2, 0xee, 0x41, 0xb3, 0x90, 0xf5, - 0x03, 0xec, 0x05, 0x2c, 0x0a, 0xb3, 0x3a, 0x1f, 0x20, 0x15, 0xd2, 0xc4, 0x69, 0xb0, 0x2c, 0x97, - 0xd5, 0xe9, 0xcf, 0xb9, 0x27, 0x61, 0x32, 0xf6, 0xf8, 0x51, 0x81, 0x0b, 0x5f, 0x18, 0x87, 0xd9, - 0x61, 0x31, 0x37, 0x34, 0xfc, 0xcf, 0xc1, 0xb8, 0xd3, 0x6d, 0x1f, 0x10, 0xaf, 0x9c, 0x66, 0x0c, - 0x62, 0x84, 0xaa, 0x90, 0xb5, 0xf1, 0x01, 0xb1, 0xcb, 0x99, 0x79, 0x65, 0xb1, 0x74, 0xe9, 0xf1, - 0x91, 0xa2, 0x7a, 0x69, 0x83, 0x42, 0x74, 0x8e, 0x44, 0x1f, 0x85, 0x8c, 0x48, 0x71, 0x94, 0xe1, - 0xb1, 0xd1, 0x18, 0x68, 0x2c, 0xea, 0x0c, 0x87, 0x1e, 0x80, 0x3c, 0xfd, 0xcb, 0x7d, 0x3b, 0xce, - 0x6c, 0xce, 0x51, 0x01, 0xf5, 0x2b, 0x9a, 0x83, 0x1c, 0x0b, 0xb3, 0x06, 0x91, 0xa5, 0x21, 0x1c, - 0xd3, 0x8d, 0x69, 0x90, 0x26, 0xee, 0xda, 0x81, 0x71, 0x1b, 0xdb, 0x5d, 0xc2, 0x02, 0x26, 0xaf, - 0x17, 0x85, 0xf0, 0x13, 0x54, 0x86, 0x2e, 0x40, 0x81, 0x47, 0xa5, 0xe5, 0x34, 0xc8, 0x0b, 0x2c, - 0xfb, 0x64, 0x75, 0x1e, 0xa8, 0xeb, 0x54, 0x42, 0x1f, 0x7f, 0xd3, 0x77, 0x1d, 0xb9, 0xb5, 0xec, - 0x11, 0x54, 0xc0, 0x1e, 0xff, 0x64, 0x7f, 0xe2, 0x7b, 0x70, 0xf8, 0xf2, 0xfa, 0x63, 0x71, 0xe1, - 0x5b, 0x29, 0xc8, 0xb0, 0xf3, 0x36, 0x05, 0x85, 0xbd, 0xe7, 0x77, 0xea, 0xc6, 0xea, 0xf6, 0xfe, - 0xca, 0x46, 0x5d, 0x55, 0x50, 0x09, 0x80, 0x09, 0x9e, 0xd9, 0xd8, 0xae, 0xee, 0xa9, 0xa9, 0x70, - 0xbc, 0xbe, 0xb5, 0x77, 0xf5, 0xb2, 0x9a, 0x0e, 0x01, 0xfb, 0x5c, 0x90, 0x89, 0x2a, 0x3c, 0x71, - 0x49, 0xcd, 0x22, 0x15, 0x8a, 0x9c, 0x60, 0xfd, 0xb9, 0xfa, 0xea, 0xd5, 0xcb, 0xea, 0x78, 0x5c, - 0xf2, 0xc4, 0x25, 0x75, 0x02, 0x4d, 0x42, 0x9e, 0x49, 0x56, 0xb6, 0xb7, 0x37, 0xd4, 0x5c, 0xc8, - 0xb9, 0xbb, 0xa7, 0xaf, 0x6f, 0xad, 0xa9, 0xf9, 0x90, 0x73, 0x4d, 0xdf, 0xde, 0xdf, 0x51, 0x21, - 0x64, 0xd8, 0xac, 0xef, 0xee, 0x56, 0xd7, 0xea, 0x6a, 0x21, 0xd4, 0x58, 0x79, 0x7e, 0xaf, 0xbe, - 0xab, 0x16, 0x63, 0x66, 0x3d, 0x71, 0x49, 0x9d, 0x0c, 0x1f, 0x51, 0xdf, 0xda, 0xdf, 0x54, 0x4b, - 0x68, 0x1a, 0x26, 0xf9, 0x23, 0xa4, 0x11, 0x53, 0x7d, 0xa2, 0xab, 0x97, 0x55, 0xb5, 0x67, 0x08, - 0x67, 0x99, 0x8e, 0x09, 0xae, 0x5e, 0x56, 0xd1, 0x42, 0x0d, 0xb2, 0x2c, 0xba, 0x10, 0x82, 0xd2, - 0x46, 0x75, 0xa5, 0xbe, 0x61, 0x6c, 0xef, 0xec, 0xad, 0x6f, 0x6f, 0x55, 0x37, 0x54, 0xa5, 0x27, - 0xd3, 0xeb, 0x1f, 0xdf, 0x5f, 0xd7, 0xeb, 0xab, 0x6a, 0x2a, 0x2a, 0xdb, 0xa9, 0x57, 0xf7, 0xea, - 0xab, 0x6a, 0x7a, 0xc1, 0x84, 0xd9, 0x61, 0x79, 0x66, 0xe8, 0xc9, 0x88, 0x6c, 0x71, 0xea, 0x84, - 0x2d, 0x66, 0x5c, 0x03, 0x5b, 0xfc, 0x55, 0x05, 0x66, 0x86, 0xe4, 0xda, 0xa1, 0x0f, 0x79, 0x1a, - 0xb2, 0x3c, 0x44, 0x79, 0xf5, 0x79, 0x74, 0x68, 0xd2, 0x66, 0x01, 0x3b, 0x50, 0x81, 0x18, 0x2e, - 0x5a, 0x81, 0xd3, 0x27, 0x54, 0x60, 0x4a, 0x31, 0x60, 0xe4, 0x4b, 0x0a, 0x94, 0x4f, 0xe2, 0x4e, - 0x48, 0x14, 0xa9, 0x58, 0xa2, 0xb8, 0xde, 0x6f, 0xc0, 0xc5, 0x93, 0xd7, 0x30, 0x60, 0xc5, 0x6b, - 0x0a, 0x9c, 0x1b, 0xde, 0xa8, 0x0c, 0xb5, 0xe1, 0xa3, 0x30, 0xde, 0x26, 0xc1, 0xa1, 0x2b, 0x8b, - 0xf5, 0x07, 0x86, 0x94, 0x00, 0x3a, 0xdd, 0xef, 0x2b, 0x81, 0x8a, 0xd6, 0x90, 0xf4, 0x49, 0xdd, - 0x06, 0xb7, 0x66, 0xc0, 0xd2, 0xcf, 0xa6, 0xe0, 0xbe, 0xa1, 0xe4, 0x43, 0x0d, 0x7d, 0x10, 0xc0, - 0x72, 0x3a, 0xdd, 0x80, 0x17, 0x64, 0x9e, 0x9f, 0xf2, 0x4c, 0xc2, 0xce, 0x3e, 0xcd, 0x3d, 0xdd, - 0x20, 0x9c, 0x4f, 0xb3, 0x79, 0xe0, 0x22, 0xa6, 0x70, 0xad, 0x67, 0x68, 0x86, 0x19, 0x5a, 0x39, - 0x61, 0xa5, 0x03, 0xb5, 0xee, 0xc3, 0xa0, 0x9a, 0xb6, 0x45, 0x9c, 0xc0, 0xf0, 0x03, 0x8f, 0xe0, - 0xb6, 0xe5, 0xb4, 0x58, 0x02, 0xce, 0x69, 0xd9, 0x26, 0xb6, 0x7d, 0xa2, 0x4f, 0xf1, 0xe9, 0x5d, - 0x39, 0x4b, 0x11, 0xac, 0xca, 0x78, 0x11, 0xc4, 0x78, 0x0c, 0xc1, 0xa7, 0x43, 0xc4, 0xc2, 0xe7, - 0x26, 0xa0, 0x10, 0x69, 0xeb, 0xd0, 0x45, 0x28, 0xde, 0xc4, 0xb7, 0xb1, 0x21, 0x5b, 0x75, 0xee, - 0x89, 0x02, 0x95, 0xed, 0x88, 0x76, 0xfd, 0xc3, 0x30, 0xcb, 0x54, 0xdc, 0x6e, 0x40, 0x3c, 0xc3, - 0xb4, 0xb1, 0xef, 0x33, 0xa7, 0xe5, 0x98, 0x2a, 0xa2, 0x73, 0xdb, 0x74, 0xaa, 0x26, 0x67, 0xd0, - 0x15, 0x98, 0x61, 0x88, 0x76, 0xd7, 0x0e, 0xac, 0x8e, 0x4d, 0x0c, 0xfa, 0xf2, 0xe0, 0xb3, 0x44, - 0x1c, 0x5a, 0x36, 0x4d, 0x35, 0x36, 0x85, 0x02, 0xb5, 0xc8, 0x47, 0x6b, 0xf0, 0x20, 0x83, 0xb5, - 0x88, 0x43, 0x3c, 0x1c, 0x10, 0x83, 0xfc, 0x6c, 0x17, 0xdb, 0xbe, 0x81, 0x9d, 0x86, 0x71, 0x88, - 0xfd, 0xc3, 0xf2, 0x6c, 0x94, 0xe0, 0x3c, 0xd5, 0x5d, 0x13, 0xaa, 0x75, 0xa6, 0x59, 0x75, 0x1a, - 0x1f, 0xc3, 0xfe, 0x21, 0xd2, 0xe0, 0x1c, 0x23, 0xf2, 0x03, 0xcf, 0x72, 0x5a, 0x86, 0x79, 0x48, - 0xcc, 0x5b, 0x46, 0x37, 0x68, 0x5e, 0x2b, 0x3f, 0x10, 0x65, 0x60, 0x46, 0xee, 0x32, 0x9d, 0x1a, - 0x55, 0xd9, 0x0f, 0x9a, 0xd7, 0xd0, 0x2e, 0x14, 0xe9, 0x7e, 0xb4, 0xad, 0x17, 0x89, 0xd1, 0x74, - 0x3d, 0x56, 0x5c, 0x4a, 0x43, 0x0e, 0x77, 0xc4, 0x89, 0x4b, 0xdb, 0x02, 0xb0, 0xe9, 0x36, 0x88, - 0x96, 0xdd, 0xdd, 0xa9, 0xd7, 0x57, 0xf5, 0x82, 0x64, 0x79, 0xc6, 0xf5, 0x68, 0x4c, 0xb5, 0xdc, - 0xd0, 0xc7, 0x05, 0x1e, 0x53, 0x2d, 0x57, 0x7a, 0xf8, 0x0a, 0xcc, 0x98, 0x26, 0x5f, 0xb6, 0x65, - 0x1a, 0xa2, 0xcb, 0xf7, 0xcb, 0x6a, 0xcc, 0x5f, 0xa6, 0xb9, 0xc6, 0x15, 0x44, 0x98, 0xfb, 0xe8, - 0x29, 0xb8, 0xaf, 0xe7, 0xaf, 0x28, 0x70, 0x7a, 0x60, 0x95, 0xfd, 0xd0, 0x2b, 0x30, 0xd3, 0x39, - 0x1a, 0x04, 0xa2, 0xd8, 0x13, 0x3b, 0x47, 0xfd, 0xb0, 0x87, 0xd9, 0x9b, 0x9b, 0x47, 0x4c, 0x1c, - 0x90, 0x46, 0xf9, 0xfe, 0xa8, 0x76, 0x64, 0x02, 0x2d, 0x83, 0x6a, 0x9a, 0x06, 0x71, 0xf0, 0x81, - 0x4d, 0x0c, 0xec, 0x11, 0x07, 0xfb, 0xe5, 0x0b, 0x51, 0xe5, 0x92, 0x69, 0xd6, 0xd9, 0x6c, 0x95, - 0x4d, 0xa2, 0xc7, 0x60, 0xda, 0x3d, 0xb8, 0x69, 0xf2, 0xe0, 0x32, 0x3a, 0x1e, 0x69, 0x5a, 0x2f, - 0x94, 0x1f, 0x62, 0x6e, 0x9a, 0xa2, 0x13, 0x2c, 0xb4, 0x76, 0x98, 0x18, 0x3d, 0x0a, 0xaa, 0xe9, - 0x1f, 0x62, 0xaf, 0xc3, 0xaa, 0xbb, 0xdf, 0xc1, 0x26, 0x29, 0x3f, 0xcc, 0x55, 0xb9, 0x7c, 0x4b, - 0x8a, 0xd1, 0x73, 0x30, 0xdb, 0x75, 0x2c, 0x27, 0x20, 0x5e, 0xc7, 0x23, 0xb4, 0x49, 0xe7, 0x27, - 0xad, 0xfc, 0xcf, 0x13, 0x27, 0xb4, 0xd9, 0xfb, 0x51, 0x6d, 0xbe, 0xbb, 0xfa, 0x4c, 0x77, 0x50, - 0xb8, 0xa0, 0x41, 0x31, 0xba, 0xe9, 0x28, 0x0f, 0x7c, 0xdb, 0x55, 0x85, 0xd6, 0xd0, 0xda, 0xf6, - 0x2a, 0xad, 0x7e, 0x9f, 0xac, 0xab, 0x29, 0x5a, 0x85, 0x37, 0xd6, 0xf7, 0xea, 0x86, 0xbe, 0xbf, - 0xb5, 0xb7, 0xbe, 0x59, 0x57, 0xd3, 0x8f, 0xe5, 0x73, 0x6f, 0x4e, 0xa8, 0x77, 0xef, 0xde, 0xbd, - 0x9b, 0x5a, 0xf8, 0x6e, 0x0a, 0x4a, 0xf1, 0xce, 0x17, 0xfd, 0x0c, 0xdc, 0x2f, 0x5f, 0x53, 0x7d, - 0x12, 0x18, 0x77, 0x2c, 0x8f, 0xc5, 0x61, 0x1b, 0xf3, 0xde, 0x31, 0x74, 0xe1, 0xac, 0xd0, 0xda, - 0x25, 0xc1, 0xb3, 0x96, 0x47, 0xa3, 0xac, 0x8d, 0x03, 0xb4, 0x01, 0x17, 0x1c, 0xd7, 0xf0, 0x03, - 0xec, 0x34, 0xb0, 0xd7, 0x30, 0x7a, 0x17, 0x04, 0x06, 0x36, 0x4d, 0xe2, 0xfb, 0x2e, 0x2f, 0x01, - 0x21, 0xcb, 0xfb, 0x1c, 0x77, 0x57, 0x28, 0xf7, 0x72, 0x63, 0x55, 0xa8, 0xf6, 0x6d, 0x77, 0xfa, - 0xa4, 0xed, 0x7e, 0x00, 0xf2, 0x6d, 0xdc, 0x31, 0x88, 0x13, 0x78, 0x47, 0xac, 0x5f, 0xcb, 0xe9, - 0xb9, 0x36, 0xee, 0xd4, 0xe9, 0xf8, 0x27, 0xb7, 0x07, 0x51, 0x3f, 0xfe, 0x7d, 0x1a, 0x8a, 0xd1, - 0x9e, 0x8d, 0xb6, 0xc0, 0x26, 0xcb, 0xcf, 0x0a, 0x3b, 0xbe, 0xef, 0x3f, 0xb5, 0xc3, 0x5b, 0xaa, - 0xd1, 0xc4, 0xad, 0x8d, 0xf3, 0x4e, 0x4a, 0xe7, 0x48, 0x5a, 0x34, 0xe9, 0x81, 0x25, 0xbc, 0x3f, - 0xcf, 0xe9, 0x62, 0x84, 0xd6, 0x60, 0xfc, 0xa6, 0xcf, 0xb8, 0xc7, 0x19, 0xf7, 0x43, 0xa7, 0x73, - 0xdf, 0xd8, 0x65, 0xe4, 0xf9, 0x1b, 0xbb, 0xc6, 0xd6, 0xb6, 0xbe, 0x59, 0xdd, 0xd0, 0x05, 0x1c, - 0x9d, 0x87, 0x8c, 0x8d, 0x5f, 0x3c, 0x8a, 0xa7, 0x78, 0x26, 0x1a, 0xd5, 0xf1, 0xe7, 0x21, 0x73, - 0x87, 0xe0, 0x5b, 0xf1, 0xc4, 0xca, 0x44, 0x3f, 0xc1, 0xd0, 0x5f, 0x86, 0x2c, 0xf3, 0x17, 0x02, - 0x10, 0x1e, 0x53, 0xc7, 0x50, 0x0e, 0x32, 0xb5, 0x6d, 0x9d, 0x86, 0xbf, 0x0a, 0x45, 0x2e, 0x35, - 0x76, 0xd6, 0xeb, 0xb5, 0xba, 0x9a, 0x5a, 0xb8, 0x02, 0xe3, 0xdc, 0x09, 0xf4, 0x68, 0x84, 0x6e, - 0x50, 0xc7, 0xc4, 0x50, 0x70, 0x28, 0x72, 0x76, 0x7f, 0x73, 0xa5, 0xae, 0xab, 0xa9, 0xe8, 0xf6, - 0xfa, 0x50, 0x8c, 0xb6, 0x6b, 0x3f, 0x9d, 0x98, 0xfa, 0x4b, 0x05, 0x0a, 0x91, 0xf6, 0x8b, 0x16, - 0x7e, 0x6c, 0xdb, 0xee, 0x1d, 0x03, 0xdb, 0x16, 0xf6, 0x45, 0x50, 0x00, 0x13, 0x55, 0xa9, 0x64, - 0xd4, 0x4d, 0xfb, 0xa9, 0x18, 0xff, 0xaa, 0x02, 0x6a, 0x7f, 0xeb, 0xd6, 0x67, 0xa0, 0xf2, 0x9e, - 0x1a, 0xf8, 0x8a, 0x02, 0xa5, 0x78, 0xbf, 0xd6, 0x67, 0xde, 0xc5, 0xf7, 0xd4, 0xbc, 0x2f, 0x29, - 0x30, 0x19, 0xeb, 0xd2, 0xfe, 0x5f, 0x59, 0xf7, 0x72, 0x1a, 0x66, 0x86, 0xe0, 0x50, 0x55, 0xb4, - 0xb3, 0xbc, 0xc3, 0xfe, 0xd0, 0x28, 0xcf, 0x5a, 0xa2, 0xd5, 0x72, 0x07, 0x7b, 0x81, 0xe8, 0x7e, - 0x1f, 0x05, 0xd5, 0x6a, 0x10, 0x27, 0xb0, 0x9a, 0x16, 0xf1, 0xc4, 0x2b, 0x38, 0xef, 0x71, 0xa7, - 0x7a, 0x72, 0xfe, 0x16, 0xfe, 0x41, 0x40, 0x1d, 0xd7, 0xb7, 0x02, 0xeb, 0x36, 0x31, 0x2c, 0x47, - 0xbe, 0xaf, 0xd3, 0x9e, 0x37, 0xa3, 0xab, 0x72, 0x66, 0xdd, 0x09, 0x42, 0x6d, 0x87, 0xb4, 0x70, - 0x9f, 0x36, 0xcd, 0x7d, 0x69, 0x5d, 0x95, 0x33, 0xa1, 0xf6, 0x45, 0x28, 0x36, 0xdc, 0x2e, 0x6d, - 0x1f, 0xb8, 0x1e, 0x4d, 0xb5, 0x8a, 0x5e, 0xe0, 0xb2, 0x50, 0x45, 0xf4, 0x77, 0xbd, 0x8b, 0x82, - 0xa2, 0x5e, 0xe0, 0x32, 0xae, 0xf2, 0x08, 0x4c, 0xe1, 0x56, 0xcb, 0xa3, 0xe4, 0x92, 0x88, 0x37, - 0xad, 0xa5, 0x50, 0xcc, 0x14, 0xe7, 0x6e, 0x40, 0x4e, 0xfa, 0x81, 0x56, 0x33, 0xea, 0x09, 0xa3, - 0xc3, 0xaf, 0x6b, 0x52, 0x8b, 0x79, 0x3d, 0xe7, 0xc8, 0xc9, 0x8b, 0x50, 0xb4, 0x7c, 0xa3, 0x77, - 0x6f, 0x98, 0x9a, 0x4f, 0x2d, 0xe6, 0xf4, 0x82, 0xe5, 0x87, 0x17, 0x45, 0x0b, 0xaf, 0xa5, 0xa0, - 0x14, 0xbf, 0xf7, 0x44, 0xab, 0x90, 0xb3, 0x5d, 0x13, 0xb3, 0x40, 0xe0, 0x97, 0xee, 0x8b, 0x09, - 0x57, 0xa5, 0x4b, 0x1b, 0x42, 0x5f, 0x0f, 0x91, 0x73, 0x7f, 0xab, 0x40, 0x4e, 0x8a, 0xd1, 0x39, - 0xc8, 0x74, 0x70, 0x70, 0xc8, 0xe8, 0xb2, 0x2b, 0x29, 0x55, 0xd1, 0xd9, 0x98, 0xca, 0xfd, 0x0e, - 0x76, 0x58, 0x08, 0x08, 0x39, 0x1d, 0xd3, 0x7d, 0xb5, 0x09, 0x6e, 0xb0, 0x76, 0xd8, 0x6d, 0xb7, - 0x89, 0x13, 0xf8, 0x72, 0x5f, 0x85, 0xbc, 0x26, 0xc4, 0xe8, 0x71, 0x98, 0x0e, 0x3c, 0x6c, 0xd9, - 0x31, 0xdd, 0x0c, 0xd3, 0x55, 0xe5, 0x44, 0xa8, 0xac, 0xc1, 0x79, 0xc9, 0xdb, 0x20, 0x01, 0x36, - 0x0f, 0x49, 0xa3, 0x07, 0x1a, 0x67, 0x97, 0x6a, 0xf7, 0x0b, 0x85, 0x55, 0x31, 0x2f, 0xb1, 0x0b, - 0xdf, 0x57, 0x60, 0x5a, 0x36, 0xf0, 0x8d, 0xd0, 0x59, 0x9b, 0x00, 0xd8, 0x71, 0xdc, 0x20, 0xea, - 0xae, 0xc1, 0x50, 0x1e, 0xc0, 0x2d, 0x55, 0x43, 0x90, 0x1e, 0x21, 0x98, 0x6b, 0x03, 0xf4, 0x66, - 0x4e, 0x74, 0xdb, 0x05, 0x28, 0x88, 0x4b, 0x6d, 0xf6, 0x65, 0x84, 0xbf, 0xf5, 0x01, 0x17, 0xd1, - 0x4e, 0x1f, 0xcd, 0x42, 0xf6, 0x80, 0xb4, 0x2c, 0x47, 0x5c, 0xb5, 0xf1, 0x81, 0xbc, 0xc0, 0xcb, - 0x84, 0x17, 0x78, 0x2b, 0x9f, 0x82, 0x19, 0xd3, 0x6d, 0xf7, 0x9b, 0xbb, 0xa2, 0xf6, 0xbd, 0x79, - 0xfa, 0x1f, 0x53, 0x3e, 0x09, 0xbd, 0xee, 0xec, 0x2b, 0x8a, 0xf2, 0xd5, 0x54, 0x7a, 0x6d, 0x67, - 0xe5, 0xeb, 0xa9, 0xb9, 0x35, 0x0e, 0xdd, 0x91, 0x2b, 0xd5, 0x49, 0xd3, 0x26, 0x26, 0xb5, 0x1e, - 0x7e, 0xf8, 0x01, 0xf8, 0x50, 0xcb, 0x0a, 0x0e, 0xbb, 0x07, 0x4b, 0xa6, 0xdb, 0x5e, 0x6e, 0xb9, - 0x2d, 0xb7, 0xf7, 0x31, 0x88, 0x8e, 0xd8, 0x80, 0xfd, 0x12, 0x1f, 0x84, 0xf2, 0xa1, 0x74, 0x2e, - 0xf1, 0xeb, 0x91, 0xb6, 0x05, 0x33, 0x42, 0xd9, 0x60, 0x37, 0xd2, 0xbc, 0x0f, 0x47, 0xa7, 0xde, - 0x4a, 0x94, 0xbf, 0xf9, 0x06, 0xab, 0x74, 0xfa, 0xb4, 0x80, 0xd2, 0x39, 0xde, 0xa9, 0x6b, 0x3a, - 0xdc, 0x17, 0xe3, 0xe3, 0x47, 0x93, 0x78, 0x09, 0x8c, 0xdf, 0x15, 0x8c, 0x33, 0x11, 0xc6, 0x5d, - 0x01, 0xd5, 0x6a, 0x30, 0x79, 0x16, 0xae, 0xbf, 0x16, 0x5c, 0x45, 0x12, 0x25, 0x59, 0x83, 0x29, - 0x46, 0x62, 0x76, 0xfd, 0xc0, 0x6d, 0xb3, 0xbc, 0x77, 0x3a, 0xcd, 0xdf, 0xbc, 0xc1, 0xcf, 0x4a, - 0x89, 0xc2, 0x6a, 0x21, 0x4a, 0xd3, 0x80, 0x5d, 0xc2, 0x37, 0x88, 0x69, 0x27, 0x30, 0xbc, 0x2e, - 0x0c, 0x09, 0xf5, 0xb5, 0x4f, 0xc0, 0x2c, 0xfd, 0xcd, 0xd2, 0x52, 0xd4, 0x92, 0xe4, 0x3b, 0x98, - 0xf2, 0xf7, 0x5f, 0xe2, 0xc7, 0x71, 0x26, 0x24, 0x88, 0xd8, 0x14, 0xd9, 0xc5, 0x16, 0x09, 0x02, - 0xe2, 0xf9, 0x06, 0xb6, 0x87, 0x99, 0x17, 0x79, 0x83, 0x2d, 0x7f, 0xf1, 0xad, 0xf8, 0x2e, 0xae, - 0x71, 0x64, 0xd5, 0xb6, 0xb5, 0x7d, 0xb8, 0x7f, 0x48, 0x54, 0x8c, 0xc0, 0xf9, 0xb2, 0xe0, 0x9c, - 0x1d, 0x88, 0x0c, 0x4a, 0xbb, 0x03, 0x52, 0x1e, 0xee, 0xe5, 0x08, 0x9c, 0x5f, 0x12, 0x9c, 0x48, - 0x60, 0xe5, 0x96, 0x52, 0xc6, 0x1b, 0x30, 0x7d, 0x9b, 0x78, 0x07, 0xae, 0x2f, 0x2e, 0x0e, 0x46, - 0xa0, 0x7b, 0x45, 0xd0, 0x4d, 0x09, 0x20, 0xbb, 0x46, 0xa0, 0x5c, 0x4f, 0x41, 0xae, 0x89, 0x4d, - 0x32, 0x02, 0xc5, 0x97, 0x05, 0xc5, 0x04, 0xd5, 0xa7, 0xd0, 0x2a, 0x14, 0x5b, 0xae, 0xa8, 0x4c, - 0xc9, 0xf0, 0x57, 0x05, 0xbc, 0x20, 0x31, 0x82, 0xa2, 0xe3, 0x76, 0xba, 0x36, 0x2d, 0x5b, 0xc9, - 0x14, 0xbf, 0x25, 0x29, 0x24, 0x46, 0x50, 0x9c, 0xc1, 0xad, 0x5f, 0x91, 0x14, 0x7e, 0xc4, 0x9f, - 0x4f, 0x43, 0xc1, 0x75, 0xec, 0x23, 0xd7, 0x19, 0xc5, 0x88, 0xdf, 0x16, 0x0c, 0x20, 0x20, 0x94, - 0xe0, 0x3a, 0xe4, 0x47, 0xdd, 0x88, 0xdf, 0x79, 0x4b, 0x1e, 0x0f, 0xb9, 0x03, 0x6b, 0x30, 0x25, - 0x13, 0x94, 0xe5, 0x3a, 0x23, 0x50, 0xfc, 0xae, 0xa0, 0x28, 0x45, 0x60, 0x62, 0x19, 0x01, 0xf1, - 0x83, 0x16, 0x19, 0x85, 0xe4, 0x35, 0xb9, 0x0c, 0x01, 0x11, 0xae, 0x3c, 0x20, 0x8e, 0x79, 0x38, - 0x1a, 0xc3, 0xd7, 0xa4, 0x2b, 0x25, 0x86, 0x52, 0xd4, 0x60, 0xb2, 0x8d, 0x3d, 0xff, 0x10, 0xdb, - 0x23, 0x6d, 0xc7, 0xef, 0x09, 0x8e, 0x62, 0x08, 0x12, 0x1e, 0xe9, 0x3a, 0x67, 0xa1, 0xf9, 0xba, - 0xf4, 0x48, 0x04, 0x26, 0x8e, 0x9e, 0x1f, 0xb0, 0xbb, 0x99, 0xb3, 0xb0, 0xfd, 0xbe, 0x3c, 0x7a, - 0x1c, 0xbb, 0x19, 0x65, 0xbc, 0x0e, 0x79, 0xdf, 0x7a, 0x71, 0x24, 0x9a, 0x3f, 0x90, 0x3b, 0xcd, - 0x00, 0x14, 0xfc, 0x3c, 0x9c, 0x1f, 0x5a, 0x26, 0x46, 0x20, 0xfb, 0x43, 0x41, 0x76, 0x6e, 0x48, - 0xa9, 0x10, 0x29, 0xe1, 0xac, 0x94, 0x7f, 0x24, 0x53, 0x02, 0xe9, 0xe3, 0xda, 0xa1, 0x9d, 0xbd, - 0x8f, 0x9b, 0x67, 0xf3, 0xda, 0x1f, 0x4b, 0xaf, 0x71, 0x6c, 0xcc, 0x6b, 0x7b, 0x70, 0x4e, 0x30, - 0x9e, 0x6d, 0x5f, 0xbf, 0x21, 0x13, 0x2b, 0x47, 0xef, 0xc7, 0x77, 0xf7, 0x53, 0x30, 0x17, 0xba, - 0x53, 0x36, 0xa5, 0xbe, 0xd1, 0xc6, 0x9d, 0x11, 0x98, 0xbf, 0x29, 0x98, 0x65, 0xc6, 0x0f, 0xbb, - 0x5a, 0x7f, 0x13, 0x77, 0x28, 0xf9, 0x73, 0x50, 0x96, 0xe4, 0x5d, 0xc7, 0x23, 0xa6, 0xdb, 0x72, - 0xac, 0x17, 0x49, 0x63, 0x04, 0xea, 0x3f, 0xe9, 0xdb, 0xaa, 0xfd, 0x08, 0x9c, 0x32, 0xaf, 0x83, - 0x1a, 0xf6, 0x2a, 0x86, 0xd5, 0xee, 0xb8, 0x5e, 0x90, 0xc0, 0xf8, 0xa7, 0x72, 0xa7, 0x42, 0xdc, - 0x3a, 0x83, 0x69, 0x75, 0x28, 0xb1, 0xe1, 0xa8, 0x21, 0xf9, 0x67, 0x82, 0x68, 0xb2, 0x87, 0x12, - 0x89, 0xc3, 0x74, 0xdb, 0x1d, 0xec, 0x8d, 0x92, 0xff, 0xfe, 0x5c, 0x26, 0x0e, 0x01, 0x11, 0x89, - 0x23, 0x38, 0xea, 0x10, 0x5a, 0xed, 0x47, 0x60, 0xf8, 0x96, 0x4c, 0x1c, 0x12, 0x23, 0x28, 0x64, - 0xc3, 0x30, 0x02, 0xc5, 0x5f, 0x48, 0x0a, 0x89, 0xa1, 0x14, 0x1f, 0xef, 0x15, 0x5a, 0x8f, 0xb4, - 0x2c, 0x3f, 0xf0, 0x78, 0x2b, 0x7c, 0x3a, 0xd5, 0xb7, 0xdf, 0x8a, 0x37, 0x61, 0x7a, 0x04, 0xaa, - 0xdd, 0x80, 0xa9, 0xbe, 0x16, 0x03, 0x25, 0x7d, 0xd1, 0x2f, 0x7f, 0xfa, 0x1d, 0x91, 0x8c, 0xe2, - 0x1d, 0x86, 0xb6, 0x41, 0xf7, 0x3d, 0xde, 0x07, 0x24, 0x93, 0xbd, 0xf4, 0x4e, 0xb8, 0xf5, 0xb1, - 0x36, 0x40, 0x7b, 0x06, 0x26, 0x63, 0x3d, 0x40, 0x32, 0xd5, 0x67, 0x04, 0x55, 0x31, 0xda, 0x02, - 0x68, 0x57, 0x20, 0x43, 0xeb, 0x79, 0x32, 0xfc, 0xe7, 0x04, 0x9c, 0xa9, 0x6b, 0x1f, 0x81, 0x9c, - 0xac, 0xe3, 0xc9, 0xd0, 0x9f, 0x17, 0xd0, 0x10, 0x42, 0xe1, 0xb2, 0x86, 0x27, 0xc3, 0x7f, 0x41, - 0xc2, 0x25, 0x84, 0xc2, 0x47, 0x77, 0xe1, 0x77, 0x3e, 0x97, 0x11, 0x79, 0x58, 0xfa, 0xee, 0x3a, - 0x4c, 0x88, 0xe2, 0x9d, 0x8c, 0xfe, 0xac, 0x78, 0xb8, 0x44, 0x68, 0x4f, 0x42, 0x76, 0x44, 0x87, - 0xff, 0x92, 0x80, 0x72, 0x7d, 0xad, 0x06, 0x85, 0x48, 0xc1, 0x4e, 0x86, 0xff, 0xb2, 0x80, 0x47, - 0x51, 0xd4, 0x74, 0x51, 0xb0, 0x93, 0x09, 0x3e, 0x2f, 0x4d, 0x17, 0x08, 0xea, 0x36, 0x59, 0xab, - 0x93, 0xd1, 0xbf, 0x22, 0xbd, 0x2e, 0x21, 0xda, 0xd3, 0x90, 0x0f, 0xf3, 0x6f, 0x32, 0xfe, 0x57, - 0x05, 0xbe, 0x87, 0xa1, 0x1e, 0x88, 0xe4, 0xff, 0x64, 0x8a, 0x5f, 0x93, 0x1e, 0x88, 0xa0, 0xe8, - 0x31, 0xea, 0xaf, 0xe9, 0xc9, 0x4c, 0xbf, 0x2e, 0x8f, 0x51, 0x5f, 0x49, 0xa7, 0xbb, 0xc9, 0xd2, - 0x60, 0x32, 0xc5, 0x6f, 0xc8, 0xdd, 0x64, 0xfa, 0xd4, 0x8c, 0xfe, 0x22, 0x99, 0xcc, 0xf1, 0x9b, - 0xd2, 0x8c, 0xbe, 0x1a, 0xa9, 0xed, 0x00, 0x1a, 0x2c, 0x90, 0xc9, 0x7c, 0x5f, 0x10, 0x7c, 0xd3, - 0x03, 0xf5, 0x51, 0x7b, 0x16, 0xce, 0x0d, 0x2f, 0x8e, 0xc9, 0xac, 0x5f, 0x7c, 0xa7, 0xef, 0x75, - 0x26, 0x5a, 0x1b, 0xb5, 0xbd, 0x5e, 0x96, 0x8d, 0x16, 0xc6, 0x64, 0xda, 0x97, 0xdf, 0x89, 0x27, - 0xda, 0x68, 0x5d, 0xd4, 0xaa, 0x00, 0xbd, 0x9a, 0x94, 0xcc, 0xf5, 0x8a, 0xe0, 0x8a, 0x80, 0xe8, - 0xd1, 0x10, 0x25, 0x29, 0x19, 0xff, 0x65, 0x79, 0x34, 0x04, 0x82, 0x1e, 0x0d, 0x59, 0x8d, 0x92, - 0xd1, 0xaf, 0xca, 0xa3, 0x21, 0x21, 0xda, 0x75, 0xc8, 0x39, 0x5d, 0xdb, 0xa6, 0xb1, 0x85, 0x4e, - 0xff, 0x27, 0x9b, 0xf2, 0xbf, 0xbc, 0x2b, 0xc0, 0x12, 0xa0, 0x5d, 0x81, 0x2c, 0x69, 0x1f, 0x90, - 0x46, 0x12, 0xf2, 0x5f, 0xdf, 0x95, 0xf9, 0x84, 0x6a, 0x6b, 0x4f, 0x03, 0xf0, 0x97, 0x69, 0xf6, - 0x8d, 0x25, 0x01, 0xfb, 0x6f, 0xef, 0x8a, 0xef, 0xf7, 0x3d, 0x48, 0x8f, 0x80, 0xff, 0x37, 0xc0, - 0xe9, 0x04, 0x6f, 0xc5, 0x09, 0xd8, 0x0b, 0xf8, 0x53, 0x30, 0x71, 0xd3, 0x77, 0x9d, 0x00, 0xb7, - 0x92, 0xd0, 0xff, 0x2e, 0xd0, 0x52, 0x9f, 0x3a, 0xac, 0xed, 0x7a, 0x24, 0xc0, 0x2d, 0x3f, 0x09, - 0xfb, 0x1f, 0x02, 0x1b, 0x02, 0x28, 0xd8, 0xc4, 0x7e, 0x30, 0xca, 0xba, 0xff, 0x53, 0x82, 0x25, - 0x80, 0x1a, 0x4d, 0x7f, 0xdf, 0x22, 0x47, 0x49, 0xd8, 0xb7, 0xa5, 0xd1, 0x42, 0x5f, 0xfb, 0x08, - 0xe4, 0xe9, 0x4f, 0xfe, 0x3f, 0x2d, 0x09, 0xe0, 0xff, 0x12, 0xe0, 0x1e, 0x82, 0x3e, 0xd9, 0x0f, - 0x1a, 0x81, 0x95, 0xec, 0xec, 0xff, 0x16, 0x3b, 0x2d, 0xf5, 0xb5, 0x2a, 0x14, 0xfc, 0xa0, 0xd1, - 0xe8, 0x8a, 0x8e, 0x26, 0x01, 0xfe, 0xc3, 0x77, 0xc3, 0x97, 0xdc, 0x10, 0xb3, 0x72, 0x71, 0xf8, - 0x7d, 0x1d, 0xac, 0xb9, 0x6b, 0x2e, 0xbf, 0xa9, 0x83, 0xcf, 0x67, 0xe1, 0xa2, 0xe9, 0xb6, 0x0f, - 0x5c, 0x7f, 0x99, 0x27, 0x94, 0x03, 0x37, 0x38, 0x5c, 0x0e, 0x17, 0x20, 0x6f, 0xda, 0x42, 0xc1, - 0xdc, 0xd9, 0xee, 0xe8, 0x16, 0xfe, 0x2a, 0x0d, 0xb9, 0x1a, 0xf6, 0x03, 0x7c, 0x07, 0x1f, 0xa1, - 0x0e, 0xcc, 0xd0, 0xdf, 0x9b, 0xb8, 0xc3, 0x6e, 0x7c, 0xc4, 0x11, 0x13, 0xd7, 0xa0, 0x1f, 0x5c, - 0xea, 0x3d, 0x55, 0x22, 0x96, 0x86, 0xa8, 0xb3, 0x2f, 0xaf, 0x2b, 0xea, 0xeb, 0xff, 0x70, 0x61, - 0xec, 0x17, 0xff, 0xf1, 0x42, 0x6e, 0xf3, 0xe8, 0x59, 0xcb, 0xf6, 0x5d, 0x47, 0x1f, 0x46, 0x8d, - 0x3e, 0xa3, 0xc0, 0x03, 0x43, 0xe4, 0x5b, 0xe2, 0x1c, 0x8a, 0x8f, 0x09, 0x97, 0x47, 0x7c, 0xb4, - 0x84, 0x71, 0x13, 0x8a, 0xb1, 0xc7, 0x9f, 0xf6, 0x98, 0xb9, 0xe7, 0xa1, 0x7c, 0xd2, 0x4a, 0x90, - 0x0a, 0xe9, 0x5b, 0xe4, 0x48, 0xfc, 0xef, 0x24, 0xfd, 0x89, 0x1e, 0xe9, 0xfd, 0xef, 0x95, 0xb2, - 0x58, 0xb8, 0x34, 0x1d, 0xb1, 0x4e, 0x3c, 0x8c, 0xcf, 0x6b, 0xa9, 0x6b, 0xca, 0x1c, 0x86, 0xf9, - 0x24, 0x4b, 0xff, 0x8f, 0x8f, 0x58, 0xa8, 0xc0, 0x38, 0x17, 0xa2, 0x59, 0xc8, 0xae, 0x3b, 0xc1, - 0xd5, 0xcb, 0x8c, 0x2a, 0xad, 0xf3, 0xc1, 0xca, 0xc6, 0xeb, 0xf7, 0x2a, 0x63, 0xdf, 0xbb, 0x57, - 0x19, 0xfb, 0xbb, 0x7b, 0x95, 0xb1, 0x1f, 0xdc, 0xab, 0x28, 0x6f, 0xde, 0xab, 0x28, 0x6f, 0xdf, - 0xab, 0x28, 0x3f, 0xba, 0x57, 0x51, 0xee, 0x1e, 0x57, 0x94, 0xaf, 0x1d, 0x57, 0x94, 0x6f, 0x1c, - 0x57, 0x94, 0x6f, 0x1f, 0x57, 0x94, 0xef, 0x1c, 0x57, 0x94, 0xd7, 0x8f, 0x2b, 0x63, 0xdf, 0x3b, - 0xae, 0x8c, 0xfd, 0xe0, 0xb8, 0xa2, 0xbc, 0x79, 0x5c, 0x19, 0x7b, 0xfb, 0xb8, 0xa2, 0xfc, 0xe8, - 0xb8, 0xa2, 0xdc, 0xfd, 0xa7, 0x8a, 0xf2, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x14, 0x7f, 0x35, - 0x9f, 0x0c, 0x30, 0x00, 0x00, + // 3797 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x29, 0x88, 0x8e, 0x21, 0x8a, 0xb1, + 0x23, 0xda, 0x4e, 0xc8, 0x8c, 0x2c, 0xc9, 0x32, 0xd4, 0xc4, 0x03, 0x82, 0x10, 0x03, 0x95, 0x24, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0x27, 0xed, 0xb4, 0xe9, 0xdf, 0x4c, 0x13, 0xd7, 0x71, 0xdb, + 0xcc, 0xb4, 0x4e, 0x93, 0xfe, 0x24, 0xfd, 0x49, 0x33, 0x7d, 0x4a, 0x1f, 0xd2, 0xfa, 0xa9, 0x93, + 0xbc, 0xf5, 0xa1, 0xd3, 0x5a, 0x8c, 0x67, 0xea, 0xb6, 0x6e, 0xeb, 0x36, 0x9e, 0x69, 0x66, 0xf4, + 0xd2, 0xb9, 0x7f, 0x8b, 0x5d, 0x00, 0xe4, 0x82, 0xe9, 0x38, 0x79, 0x22, 0xee, 0xb9, 0xe7, 0xfb, + 0xf6, 0xdc, 0x73, 0xcf, 0x3d, 0xe7, 0xec, 0x5d, 0xc2, 0xf7, 0x2f, 0xc3, 0x52, 0xdb, 0xb6, 0xdb, + 0x26, 0x5e, 0xeb, 0x3a, 0xb6, 0x67, 0xef, 0xf7, 0x5a, 0x6b, 0x4d, 0xec, 0xea, 0x8e, 0xd1, 0xf5, + 0x6c, 0x67, 0x95, 0xca, 0x94, 0x19, 0xa6, 0xb1, 0x2a, 0x34, 0x96, 0xb7, 0x61, 0xf6, 0xba, 0x61, + 0xe2, 0x0d, 0x5f, 0xb1, 0x81, 0x3d, 0xe5, 0x2a, 0x24, 0x5a, 0x86, 0x89, 0xf3, 0xd2, 0x52, 0x7c, + 0x25, 0x73, 0xf1, 0xf1, 0xd5, 0x01, 0xd0, 0x6a, 0x18, 0x51, 0x27, 0x62, 0x95, 0x22, 0x96, 0xdf, + 0x4a, 0xc0, 0xdc, 0x88, 0x59, 0x45, 0x81, 0x84, 0x85, 0x3a, 0x84, 0x51, 0x5a, 0x49, 0xab, 0xf4, + 0xb7, 0x92, 0x87, 0xa9, 0x2e, 0xd2, 0xef, 0xa0, 0x36, 0xce, 0xc7, 0xa8, 0x58, 0x0c, 0x95, 0x02, + 0x40, 0x13, 0x77, 0xb1, 0xd5, 0xc4, 0x96, 0x7e, 0x98, 0x8f, 0x2f, 0xc5, 0x57, 0xd2, 0x6a, 0x40, + 0xa2, 0x3c, 0x0d, 0xb3, 0xdd, 0xde, 0xbe, 0x69, 0xe8, 0x5a, 0x40, 0x0d, 0x96, 0xe2, 0x2b, 0x49, + 0x55, 0x66, 0x13, 0x1b, 0x7d, 0xe5, 0x0b, 0x30, 0x73, 0x0f, 0xa3, 0x3b, 0x41, 0xd5, 0x0c, 0x55, + 0xcd, 0x11, 0x71, 0x40, 0xb1, 0x0c, 0xd9, 0x0e, 0x76, 0x5d, 0xd4, 0xc6, 0x9a, 0x77, 0xd8, 0xc5, + 0xf9, 0x04, 0x5d, 0xfd, 0xd2, 0xd0, 0xea, 0x07, 0x57, 0x9e, 0xe1, 0xa8, 0xdd, 0xc3, 0x2e, 0x56, + 0x4a, 0x90, 0xc6, 0x56, 0xaf, 0xc3, 0x18, 0x92, 0xc7, 0xf8, 0xaf, 0x62, 0xf5, 0x3a, 0x83, 0x2c, + 0x29, 0x02, 0xe3, 0x14, 0x53, 0x2e, 0x76, 0xee, 0x1a, 0x3a, 0xce, 0x4f, 0x52, 0x82, 0x0b, 0x43, + 0x04, 0x0d, 0x36, 0x3f, 0xc8, 0x21, 0x70, 0x4a, 0x19, 0xd2, 0xf8, 0x45, 0x0f, 0x5b, 0xae, 0x61, + 0x5b, 0xf9, 0x29, 0x4a, 0xf2, 0xc4, 0x88, 0x5d, 0xc4, 0x66, 0x73, 0x90, 0xa2, 0x8f, 0x53, 0xae, + 0xc0, 0x94, 0xdd, 0xf5, 0x0c, 0xdb, 0x72, 0xf3, 0xa9, 0x25, 0x69, 0x25, 0x73, 0xf1, 0x03, 0x23, + 0x03, 0xa1, 0xc6, 0x74, 0x54, 0xa1, 0xac, 0x54, 0x41, 0x76, 0xed, 0x9e, 0xa3, 0x63, 0x4d, 0xb7, + 0x9b, 0x58, 0x33, 0xac, 0x96, 0x9d, 0x4f, 0x53, 0x82, 0x73, 0xc3, 0x0b, 0xa1, 0x8a, 0x65, 0xbb, + 0x89, 0xab, 0x56, 0xcb, 0x56, 0x73, 0x6e, 0x68, 0xac, 0x2c, 0xc0, 0xa4, 0x7b, 0x68, 0x79, 0xe8, + 0xc5, 0x7c, 0x96, 0x46, 0x08, 0x1f, 0x2d, 0xff, 0x6f, 0x12, 0x66, 0xc6, 0x09, 0xb1, 0x6b, 0x90, + 0x6c, 0x91, 0x55, 0xe6, 0x63, 0xa7, 0xf1, 0x01, 0xc3, 0x84, 0x9d, 0x38, 0xf9, 0x23, 0x3a, 0xb1, + 0x04, 0x19, 0x0b, 0xbb, 0x1e, 0x6e, 0xb2, 0x88, 0x88, 0x8f, 0x19, 0x53, 0xc0, 0x40, 0xc3, 0x21, + 0x95, 0xf8, 0x91, 0x42, 0xea, 0x26, 0xcc, 0xf8, 0x26, 0x69, 0x0e, 0xb2, 0xda, 0x22, 0x36, 0xd7, + 0xa2, 0x2c, 0x59, 0xad, 0x08, 0x9c, 0x4a, 0x60, 0x6a, 0x0e, 0x87, 0xc6, 0xca, 0x06, 0x80, 0x6d, + 0x61, 0xbb, 0xa5, 0x35, 0xb1, 0x6e, 0xe6, 0x53, 0xc7, 0x78, 0xa9, 0x46, 0x54, 0x86, 0xbc, 0x64, + 0x33, 0xa9, 0x6e, 0x2a, 0xcf, 0xf5, 0x43, 0x6d, 0xea, 0x98, 0x48, 0xd9, 0x66, 0x87, 0x6c, 0x28, + 0xda, 0xf6, 0x20, 0xe7, 0x60, 0x12, 0xf7, 0xb8, 0xc9, 0x57, 0x96, 0xa6, 0x46, 0xac, 0x46, 0xae, + 0x4c, 0xe5, 0x30, 0xb6, 0xb0, 0x69, 0x27, 0x38, 0x54, 0x3e, 0x08, 0xbe, 0x40, 0xa3, 0x61, 0x05, + 0x34, 0x0b, 0x65, 0x85, 0x70, 0x07, 0x75, 0xf0, 0xe2, 0x55, 0xc8, 0x85, 0xdd, 0xa3, 0xcc, 0x43, + 0xd2, 0xf5, 0x90, 0xe3, 0xd1, 0x28, 0x4c, 0xaa, 0x6c, 0xa0, 0xc8, 0x10, 0xc7, 0x56, 0x93, 0x66, + 0xb9, 0xa4, 0x4a, 0x7e, 0x2e, 0x3e, 0x0b, 0xd3, 0xa1, 0xc7, 0x8f, 0x0b, 0x5c, 0xfe, 0xc2, 0x24, + 0xcc, 0x8f, 0x8a, 0xb9, 0x91, 0xe1, 0xbf, 0x00, 0x93, 0x56, 0xaf, 0xb3, 0x8f, 0x9d, 0x7c, 0x9c, + 0x32, 0xf0, 0x91, 0x52, 0x82, 0xa4, 0x89, 0xf6, 0xb1, 0x99, 0x4f, 0x2c, 0x49, 0x2b, 0xb9, 0x8b, + 0x4f, 0x8f, 0x15, 0xd5, 0xab, 0x5b, 0x04, 0xa2, 0x32, 0xa4, 0xf2, 0x71, 0x48, 0xf0, 0x14, 0x47, + 0x18, 0x9e, 0x1a, 0x8f, 0x81, 0xc4, 0xa2, 0x4a, 0x71, 0xca, 0xa3, 0x90, 0x26, 0x7f, 0x99, 0x6f, + 0x27, 0xa9, 0xcd, 0x29, 0x22, 0x20, 0x7e, 0x55, 0x16, 0x21, 0x45, 0xc3, 0xac, 0x89, 0x45, 0x69, + 0xf0, 0xc7, 0x64, 0x63, 0x9a, 0xb8, 0x85, 0x7a, 0xa6, 0xa7, 0xdd, 0x45, 0x66, 0x0f, 0xd3, 0x80, + 0x49, 0xab, 0x59, 0x2e, 0xfc, 0x14, 0x91, 0x29, 0xe7, 0x20, 0xc3, 0xa2, 0xd2, 0xb0, 0x9a, 0xf8, + 0x45, 0x9a, 0x7d, 0x92, 0x2a, 0x0b, 0xd4, 0x2a, 0x91, 0x90, 0xc7, 0xdf, 0x76, 0x6d, 0x4b, 0x6c, + 0x2d, 0x7d, 0x04, 0x11, 0xd0, 0xc7, 0x3f, 0x3b, 0x98, 0xf8, 0x1e, 0x1b, 0xbd, 0xbc, 0xc1, 0x58, + 0x5c, 0xfe, 0x66, 0x0c, 0x12, 0xf4, 0xbc, 0xcd, 0x40, 0x66, 0xf7, 0x56, 0xbd, 0xa2, 0x6d, 0xd4, + 0xf6, 0xd6, 0xb7, 0x2a, 0xb2, 0xa4, 0xe4, 0x00, 0xa8, 0xe0, 0xfa, 0x56, 0xad, 0xb4, 0x2b, 0xc7, + 0xfc, 0x71, 0x75, 0x67, 0xf7, 0xca, 0x25, 0x39, 0xee, 0x03, 0xf6, 0x98, 0x20, 0x11, 0x54, 0x78, + 0xe6, 0xa2, 0x9c, 0x54, 0x64, 0xc8, 0x32, 0x82, 0xea, 0xcd, 0xca, 0xc6, 0x95, 0x4b, 0xf2, 0x64, + 0x58, 0xf2, 0xcc, 0x45, 0x79, 0x4a, 0x99, 0x86, 0x34, 0x95, 0xac, 0xd7, 0x6a, 0x5b, 0x72, 0xca, + 0xe7, 0x6c, 0xec, 0xaa, 0xd5, 0x9d, 0x4d, 0x39, 0xed, 0x73, 0x6e, 0xaa, 0xb5, 0xbd, 0xba, 0x0c, + 0x3e, 0xc3, 0x76, 0xa5, 0xd1, 0x28, 0x6d, 0x56, 0xe4, 0x8c, 0xaf, 0xb1, 0x7e, 0x6b, 0xb7, 0xd2, + 0x90, 0xb3, 0x21, 0xb3, 0x9e, 0xb9, 0x28, 0x4f, 0xfb, 0x8f, 0xa8, 0xec, 0xec, 0x6d, 0xcb, 0x39, + 0x65, 0x16, 0xa6, 0xd9, 0x23, 0x84, 0x11, 0x33, 0x03, 0xa2, 0x2b, 0x97, 0x64, 0xb9, 0x6f, 0x08, + 0x63, 0x99, 0x0d, 0x09, 0xae, 0x5c, 0x92, 0x95, 0xe5, 0x32, 0x24, 0x69, 0x74, 0x29, 0x0a, 0xe4, + 0xb6, 0x4a, 0xeb, 0x95, 0x2d, 0xad, 0x56, 0xdf, 0xad, 0xd6, 0x76, 0x4a, 0x5b, 0xb2, 0xd4, 0x97, + 0xa9, 0x95, 0x4f, 0xee, 0x55, 0xd5, 0xca, 0x86, 0x1c, 0x0b, 0xca, 0xea, 0x95, 0xd2, 0x6e, 0x65, + 0x43, 0x8e, 0x2f, 0xeb, 0x30, 0x3f, 0x2a, 0xcf, 0x8c, 0x3c, 0x19, 0x81, 0x2d, 0x8e, 0x1d, 0xb3, + 0xc5, 0x94, 0x6b, 0x68, 0x8b, 0xbf, 0x2c, 0xc1, 0xdc, 0x88, 0x5c, 0x3b, 0xf2, 0x21, 0xcf, 0x43, + 0x92, 0x85, 0x28, 0xab, 0x3e, 0x4f, 0x8e, 0x4c, 0xda, 0x34, 0x60, 0x87, 0x2a, 0x10, 0xc5, 0x05, + 0x2b, 0x70, 0xfc, 0x98, 0x0a, 0x4c, 0x28, 0x86, 0x8c, 0x7c, 0x59, 0x82, 0xfc, 0x71, 0xdc, 0x11, + 0x89, 0x22, 0x16, 0x4a, 0x14, 0xd7, 0x06, 0x0d, 0x38, 0x7f, 0xfc, 0x1a, 0x86, 0xac, 0x78, 0x5d, + 0x82, 0x85, 0xd1, 0x8d, 0xca, 0x48, 0x1b, 0x3e, 0x0e, 0x93, 0x1d, 0xec, 0x1d, 0xd8, 0xa2, 0x58, + 0x7f, 0x68, 0x44, 0x09, 0x20, 0xd3, 0x83, 0xbe, 0xe2, 0xa8, 0x60, 0x0d, 0x89, 0x1f, 0xd7, 0x6d, + 0x30, 0x6b, 0x86, 0x2c, 0xfd, 0x5c, 0x0c, 0x1e, 0x19, 0x49, 0x3e, 0xd2, 0xd0, 0xc7, 0x00, 0x0c, + 0xab, 0xdb, 0xf3, 0x58, 0x41, 0x66, 0xf9, 0x29, 0x4d, 0x25, 0xf4, 0xec, 0x93, 0xdc, 0xd3, 0xf3, + 0xfc, 0xf9, 0x38, 0x9d, 0x07, 0x26, 0xa2, 0x0a, 0x57, 0xfb, 0x86, 0x26, 0xa8, 0xa1, 0x85, 0x63, + 0x56, 0x3a, 0x54, 0xeb, 0x3e, 0x0a, 0xb2, 0x6e, 0x1a, 0xd8, 0xf2, 0x34, 0xd7, 0x73, 0x30, 0xea, + 0x18, 0x56, 0x9b, 0x26, 0xe0, 0x54, 0x31, 0xd9, 0x42, 0xa6, 0x8b, 0xd5, 0x19, 0x36, 0xdd, 0x10, + 0xb3, 0x04, 0x41, 0xab, 0x8c, 0x13, 0x40, 0x4c, 0x86, 0x10, 0x6c, 0xda, 0x47, 0x2c, 0x7f, 0x6d, + 0x0a, 0x32, 0x81, 0xb6, 0x4e, 0x39, 0x0f, 0xd9, 0xdb, 0xe8, 0x2e, 0xd2, 0x44, 0xab, 0xce, 0x3c, + 0x91, 0x21, 0xb2, 0x3a, 0x6f, 0xd7, 0x3f, 0x0a, 0xf3, 0x54, 0xc5, 0xee, 0x79, 0xd8, 0xd1, 0x74, + 0x13, 0xb9, 0x2e, 0x75, 0x5a, 0x8a, 0xaa, 0x2a, 0x64, 0xae, 0x46, 0xa6, 0xca, 0x62, 0x46, 0xb9, + 0x0c, 0x73, 0x14, 0xd1, 0xe9, 0x99, 0x9e, 0xd1, 0x35, 0xb1, 0x46, 0x5e, 0x1e, 0x5c, 0x9a, 0x88, + 0x7d, 0xcb, 0x66, 0x89, 0xc6, 0x36, 0x57, 0x20, 0x16, 0xb9, 0xca, 0x06, 0x3c, 0x46, 0x61, 0x6d, + 0x6c, 0x61, 0x07, 0x79, 0x58, 0xc3, 0x9f, 0xe9, 0x21, 0xd3, 0xd5, 0x90, 0xd5, 0xd4, 0x0e, 0x90, + 0x7b, 0x90, 0x9f, 0x27, 0x04, 0xeb, 0xb1, 0xbc, 0xa4, 0x9e, 0x25, 0x8a, 0x9b, 0x5c, 0xaf, 0x42, + 0xd5, 0x4a, 0x56, 0xf3, 0x13, 0xc8, 0x3d, 0x50, 0x8a, 0xb0, 0x40, 0x59, 0x5c, 0xcf, 0x31, 0xac, + 0xb6, 0xa6, 0x1f, 0x60, 0xfd, 0x8e, 0xd6, 0xf3, 0x5a, 0x57, 0xf3, 0x8f, 0x06, 0x9f, 0x4f, 0x2d, + 0x6c, 0x50, 0x9d, 0x32, 0x51, 0xd9, 0xf3, 0x5a, 0x57, 0x95, 0x06, 0x64, 0xc9, 0x66, 0x74, 0x8c, + 0x97, 0xb0, 0xd6, 0xb2, 0x1d, 0x5a, 0x59, 0x72, 0x23, 0x4e, 0x76, 0xc0, 0x83, 0xab, 0x35, 0x0e, + 0xd8, 0xb6, 0x9b, 0xb8, 0x98, 0x6c, 0xd4, 0x2b, 0x95, 0x0d, 0x35, 0x23, 0x58, 0xae, 0xdb, 0x0e, + 0x09, 0xa8, 0xb6, 0xed, 0x3b, 0x38, 0xc3, 0x02, 0xaa, 0x6d, 0x0b, 0xf7, 0x5e, 0x86, 0x39, 0x5d, + 0x67, 0x6b, 0x36, 0x74, 0x8d, 0xb7, 0xf8, 0x6e, 0x5e, 0x0e, 0x39, 0x4b, 0xd7, 0x37, 0x99, 0x02, + 0x8f, 0x71, 0x57, 0x79, 0x0e, 0x1e, 0xe9, 0x3b, 0x2b, 0x08, 0x9c, 0x1d, 0x5a, 0xe5, 0x20, 0xf4, + 0x32, 0xcc, 0x75, 0x0f, 0x87, 0x81, 0x4a, 0xe8, 0x89, 0xdd, 0xc3, 0x41, 0xd8, 0x13, 0xf4, 0xb5, + 0xcd, 0xc1, 0x3a, 0xf2, 0x70, 0x33, 0x7f, 0x26, 0xa8, 0x1d, 0x98, 0x50, 0xd6, 0x40, 0xd6, 0x75, + 0x0d, 0x5b, 0x68, 0xdf, 0xc4, 0x1a, 0x72, 0xb0, 0x85, 0xdc, 0xfc, 0xb9, 0xa0, 0x72, 0x4e, 0xd7, + 0x2b, 0x74, 0xb6, 0x44, 0x27, 0x95, 0xa7, 0x60, 0xd6, 0xde, 0xbf, 0xad, 0xb3, 0xc8, 0xd2, 0xba, + 0x0e, 0x6e, 0x19, 0x2f, 0xe6, 0x1f, 0xa7, 0x6e, 0x9a, 0x21, 0x13, 0x34, 0xae, 0xea, 0x54, 0xac, + 0x3c, 0x09, 0xb2, 0xee, 0x1e, 0x20, 0xa7, 0x4b, 0x4b, 0xbb, 0xdb, 0x45, 0x3a, 0xce, 0x3f, 0xc1, + 0x54, 0x99, 0x7c, 0x47, 0x88, 0x49, 0x64, 0xbb, 0xf7, 0x8c, 0x96, 0x27, 0x18, 0x2f, 0xb0, 0xc8, + 0xa6, 0x32, 0xce, 0x76, 0x13, 0xe6, 0x7b, 0x96, 0x61, 0x79, 0xd8, 0xe9, 0x3a, 0x98, 0x34, 0xf1, + 0xec, 0x24, 0xe6, 0xff, 0x65, 0xea, 0x98, 0x36, 0x7c, 0x2f, 0xa8, 0xcd, 0x02, 0x40, 0x9d, 0xeb, + 0x0d, 0x0b, 0x97, 0x8b, 0x90, 0x0d, 0xc6, 0x85, 0x92, 0x06, 0x16, 0x19, 0xb2, 0x44, 0x6a, 0x6c, + 0xb9, 0xb6, 0x41, 0xaa, 0xe3, 0xa7, 0x2b, 0x72, 0x8c, 0x54, 0xe9, 0xad, 0xea, 0x6e, 0x45, 0x53, + 0xf7, 0x76, 0x76, 0xab, 0xdb, 0x15, 0x39, 0xfe, 0x54, 0x3a, 0xf5, 0xf6, 0x94, 0x7c, 0xff, 0xfe, + 0xfd, 0xfb, 0xb1, 0xe5, 0xef, 0xc4, 0x20, 0x17, 0xee, 0x8c, 0x95, 0x9f, 0x82, 0x33, 0xe2, 0x35, + 0xd6, 0xc5, 0x9e, 0x76, 0xcf, 0x70, 0x68, 0xa8, 0x76, 0x10, 0xeb, 0x2d, 0x7d, 0x2f, 0xcf, 0x73, + 0xad, 0x06, 0xf6, 0x5e, 0x30, 0x1c, 0x12, 0x88, 0x1d, 0xe4, 0x29, 0x5b, 0x70, 0xce, 0xb2, 0x35, + 0xd7, 0x43, 0x56, 0x13, 0x39, 0x4d, 0xad, 0x7f, 0x81, 0xa0, 0x21, 0x5d, 0xc7, 0xae, 0x6b, 0xb3, + 0x12, 0xe1, 0xb3, 0x7c, 0xc0, 0xb2, 0x1b, 0x5c, 0xb9, 0x9f, 0x3b, 0x4b, 0x5c, 0x75, 0x20, 0x22, + 0xe2, 0xc7, 0x45, 0xc4, 0xa3, 0x90, 0xee, 0xa0, 0xae, 0x86, 0x2d, 0xcf, 0x39, 0xa4, 0xfd, 0x5c, + 0x4a, 0x4d, 0x75, 0x50, 0xb7, 0x42, 0xc6, 0xef, 0xdf, 0x1e, 0x04, 0xfd, 0xf8, 0x8f, 0x71, 0xc8, + 0x06, 0x7b, 0x3a, 0xd2, 0x22, 0xeb, 0x34, 0x7f, 0x4b, 0xf4, 0x84, 0x7f, 0xf0, 0xc4, 0x0e, 0x70, + 0xb5, 0x4c, 0x12, 0x7b, 0x71, 0x92, 0x75, 0x5a, 0x2a, 0x43, 0x92, 0xa2, 0x4a, 0xce, 0x34, 0x66, + 0xfd, 0x7b, 0x4a, 0xe5, 0x23, 0x65, 0x13, 0x26, 0x6f, 0xbb, 0x94, 0x7b, 0x92, 0x72, 0x3f, 0x7e, + 0x32, 0xf7, 0x8d, 0x06, 0x25, 0x4f, 0xdf, 0x68, 0x68, 0x3b, 0x35, 0x75, 0xbb, 0xb4, 0xa5, 0x72, + 0xb8, 0x72, 0x16, 0x12, 0x26, 0x7a, 0xe9, 0x30, 0x5c, 0x02, 0xa8, 0x68, 0x5c, 0xc7, 0x9f, 0x85, + 0xc4, 0x3d, 0x8c, 0xee, 0x84, 0x13, 0x2f, 0x15, 0xbd, 0x8f, 0xa1, 0xbf, 0x06, 0x49, 0xea, 0x2f, + 0x05, 0x80, 0x7b, 0x4c, 0x9e, 0x50, 0x52, 0x90, 0x28, 0xd7, 0x54, 0x12, 0xfe, 0x32, 0x64, 0x99, + 0x54, 0xab, 0x57, 0x2b, 0xe5, 0x8a, 0x1c, 0x5b, 0xbe, 0x0c, 0x93, 0xcc, 0x09, 0xe4, 0x68, 0xf8, + 0x6e, 0x90, 0x27, 0xf8, 0x90, 0x73, 0x48, 0x62, 0x76, 0x6f, 0x7b, 0xbd, 0xa2, 0xca, 0xb1, 0xe0, + 0xf6, 0xba, 0x90, 0x0d, 0xb6, 0x73, 0x3f, 0x9e, 0x98, 0xfa, 0x6b, 0x09, 0x32, 0x81, 0xf6, 0x8c, + 0x34, 0x06, 0xc8, 0x34, 0xed, 0x7b, 0x1a, 0x32, 0x0d, 0xe4, 0xf2, 0xa0, 0x00, 0x2a, 0x2a, 0x11, + 0xc9, 0xb8, 0x9b, 0xf6, 0x63, 0x31, 0xfe, 0x35, 0x09, 0xe4, 0xc1, 0xd6, 0x6e, 0xc0, 0x40, 0xe9, + 0x27, 0x6a, 0xe0, 0xab, 0x12, 0xe4, 0xc2, 0xfd, 0xdc, 0x80, 0x79, 0xe7, 0x7f, 0xa2, 0xe6, 0xbd, + 0x19, 0x83, 0xe9, 0x50, 0x17, 0x37, 0xae, 0x75, 0x9f, 0x81, 0x59, 0xa3, 0x89, 0x3b, 0x5d, 0xdb, + 0xc3, 0x96, 0x7e, 0xa8, 0x99, 0xf8, 0x2e, 0x36, 0xf3, 0xcb, 0x34, 0x51, 0xac, 0x9d, 0xdc, 0x27, + 0xae, 0x56, 0xfb, 0xb8, 0x2d, 0x02, 0x2b, 0xce, 0x55, 0x37, 0x2a, 0xdb, 0xf5, 0xda, 0x6e, 0x65, + 0xa7, 0x7c, 0x4b, 0xdb, 0xdb, 0xf9, 0xe9, 0x9d, 0xda, 0x0b, 0x3b, 0xaa, 0x6c, 0x0c, 0xa8, 0xbd, + 0x8f, 0x47, 0xbd, 0x0e, 0xf2, 0xa0, 0x51, 0xca, 0x19, 0x18, 0x65, 0x96, 0x3c, 0xa1, 0xcc, 0xc1, + 0xcc, 0x4e, 0x4d, 0x6b, 0x54, 0x37, 0x2a, 0x5a, 0xe5, 0xfa, 0xf5, 0x4a, 0x79, 0xb7, 0xc1, 0x5e, + 0x9c, 0x7d, 0xed, 0xdd, 0xf0, 0xa1, 0x7e, 0x25, 0x0e, 0x73, 0x23, 0x2c, 0x51, 0x4a, 0xbc, 0x67, + 0x67, 0xaf, 0x11, 0x1f, 0x19, 0xc7, 0xfa, 0x55, 0xd2, 0x15, 0xd4, 0x91, 0xe3, 0xf1, 0x16, 0xff, + 0x49, 0x20, 0x5e, 0xb2, 0x3c, 0xa3, 0x65, 0x60, 0x87, 0xdf, 0x33, 0xb0, 0x46, 0x7e, 0xa6, 0x2f, + 0x67, 0x57, 0x0d, 0x1f, 0x06, 0xa5, 0x6b, 0xbb, 0x86, 0x67, 0xdc, 0xc5, 0x9a, 0x61, 0x89, 0x4b, + 0x09, 0xd2, 0xd8, 0x27, 0x54, 0x59, 0xcc, 0x54, 0x2d, 0xcf, 0xd7, 0xb6, 0x70, 0x1b, 0x0d, 0x68, + 0x93, 0x04, 0x1e, 0x57, 0x65, 0x31, 0xe3, 0x6b, 0x9f, 0x87, 0x6c, 0xd3, 0xee, 0x91, 0x36, 0x89, + 0xe9, 0x91, 0x7a, 0x21, 0xa9, 0x19, 0x26, 0xf3, 0x55, 0x78, 0x1f, 0xdb, 0xbf, 0x0d, 0xc9, 0xaa, + 0x19, 0x26, 0x63, 0x2a, 0x17, 0x60, 0x06, 0xb5, 0xdb, 0x0e, 0x21, 0x17, 0x44, 0xac, 0x33, 0xcf, + 0xf9, 0x62, 0xaa, 0xb8, 0x78, 0x03, 0x52, 0xc2, 0x0f, 0xa4, 0x24, 0x13, 0x4f, 0x68, 0x5d, 0x76, + 0x27, 0x15, 0x5b, 0x49, 0xab, 0x29, 0x4b, 0x4c, 0x9e, 0x87, 0xac, 0xe1, 0x6a, 0xfd, 0xcb, 0xd1, + 0xd8, 0x52, 0x6c, 0x25, 0xa5, 0x66, 0x0c, 0xd7, 0xbf, 0x0d, 0x5b, 0x7e, 0x3d, 0x06, 0xb9, 0xf0, + 0xe5, 0xae, 0xb2, 0x01, 0x29, 0xd3, 0xd6, 0x11, 0x0d, 0x2d, 0xf6, 0x65, 0x61, 0x25, 0xe2, 0x3e, + 0x78, 0x75, 0x8b, 0xeb, 0xab, 0x3e, 0x72, 0xf1, 0xef, 0x25, 0x48, 0x09, 0xb1, 0xb2, 0x00, 0x89, + 0x2e, 0xf2, 0x0e, 0x28, 0x5d, 0x72, 0x3d, 0x26, 0x4b, 0x2a, 0x1d, 0x13, 0xb9, 0xdb, 0x45, 0x16, + 0x0d, 0x01, 0x2e, 0x27, 0x63, 0xb2, 0xaf, 0x26, 0x46, 0x4d, 0xda, 0xf6, 0xdb, 0x9d, 0x0e, 0xb6, + 0x3c, 0x57, 0xec, 0x2b, 0x97, 0x97, 0xb9, 0x58, 0x79, 0x1a, 0x66, 0x3d, 0x07, 0x19, 0x66, 0x48, + 0x37, 0x41, 0x75, 0x65, 0x31, 0xe1, 0x2b, 0x17, 0xe1, 0xac, 0xe0, 0x6d, 0x62, 0x0f, 0xe9, 0x07, + 0xb8, 0xd9, 0x07, 0x4d, 0xd2, 0x9b, 0xc3, 0x33, 0x5c, 0x61, 0x83, 0xcf, 0x0b, 0xec, 0xf2, 0xf7, + 0x24, 0x98, 0x15, 0x2f, 0x2a, 0x4d, 0xdf, 0x59, 0xdb, 0x00, 0xc8, 0xb2, 0x6c, 0x2f, 0xe8, 0xae, + 0xe1, 0x50, 0x1e, 0xc2, 0xad, 0x96, 0x7c, 0x90, 0x1a, 0x20, 0x58, 0xec, 0x00, 0xf4, 0x67, 0x8e, + 0x75, 0xdb, 0x39, 0xc8, 0xf0, 0x9b, 0x7b, 0xfa, 0xf9, 0x87, 0xbd, 0xda, 0x02, 0x13, 0x91, 0x37, + 0x1a, 0x65, 0x1e, 0x92, 0xfb, 0xb8, 0x6d, 0x58, 0xfc, 0x3e, 0x91, 0x0d, 0xc4, 0x2d, 0x65, 0xc2, + 0xbf, 0xa5, 0x5c, 0xbf, 0x09, 0x73, 0xba, 0xdd, 0x19, 0x34, 0x77, 0x5d, 0x1e, 0x78, 0xbd, 0x76, + 0x3f, 0x21, 0x7d, 0x1a, 0xfa, 0x2d, 0xe6, 0x97, 0x63, 0xf1, 0xcd, 0xfa, 0xfa, 0x57, 0x63, 0x8b, + 0x9b, 0x0c, 0x57, 0x17, 0xcb, 0x54, 0x71, 0xcb, 0xc4, 0x3a, 0x31, 0x1d, 0x7e, 0xf0, 0x21, 0xf8, + 0x48, 0xdb, 0xf0, 0x0e, 0x7a, 0xfb, 0xab, 0xba, 0xdd, 0x59, 0x6b, 0xdb, 0x6d, 0xbb, 0xff, 0xb9, + 0x8b, 0x8c, 0xe8, 0x80, 0xfe, 0xe2, 0x9f, 0xbc, 0xd2, 0xbe, 0x74, 0x31, 0xf2, 0xfb, 0x58, 0x71, + 0x07, 0xe6, 0xb8, 0xb2, 0x46, 0xef, 0xdc, 0xd9, 0xab, 0x81, 0x72, 0xe2, 0xbd, 0x4b, 0xfe, 0x1b, + 0x6f, 0xd1, 0x5a, 0xad, 0xce, 0x72, 0x28, 0x99, 0x63, 0x2f, 0x10, 0x45, 0x15, 0x1e, 0x09, 0xf1, + 0xb1, 0x73, 0x89, 0x9d, 0x08, 0xc6, 0xef, 0x70, 0xc6, 0xb9, 0x00, 0x63, 0x83, 0x43, 0x8b, 0x65, + 0x98, 0x3e, 0x0d, 0xd7, 0xdf, 0x72, 0xae, 0x2c, 0x0e, 0x92, 0x6c, 0xc2, 0x0c, 0x25, 0xd1, 0x7b, + 0xae, 0x67, 0x77, 0x68, 0xd2, 0x3b, 0x99, 0xe6, 0xef, 0xde, 0x62, 0x07, 0x25, 0x47, 0x60, 0x65, + 0x1f, 0x55, 0x2c, 0x02, 0xfd, 0xcc, 0xd0, 0xc4, 0xba, 0x19, 0xc1, 0xf0, 0x06, 0x37, 0xc4, 0xd7, + 0x2f, 0x7e, 0x0a, 0xe6, 0xc9, 0x6f, 0x9a, 0x93, 0x82, 0x96, 0x44, 0xdf, 0x32, 0xe5, 0xbf, 0xf7, + 0x32, 0x3b, 0x8b, 0x73, 0x3e, 0x41, 0xc0, 0xa6, 0xc0, 0x2e, 0xb6, 0xb1, 0xe7, 0x61, 0xc7, 0xd5, + 0x90, 0x39, 0xca, 0xbc, 0xc0, 0x6b, 0x7a, 0xfe, 0x8b, 0xef, 0x84, 0x77, 0x71, 0x93, 0x21, 0x4b, + 0xa6, 0x59, 0xdc, 0x83, 0x33, 0x23, 0xa2, 0x62, 0x0c, 0xce, 0x57, 0x38, 0xe7, 0xfc, 0x50, 0x64, + 0x10, 0xda, 0x3a, 0x08, 0xb9, 0xbf, 0x97, 0x63, 0x70, 0xfe, 0x36, 0xe7, 0x54, 0x38, 0x56, 0x6c, + 0x29, 0x61, 0xbc, 0x01, 0xb3, 0x77, 0xb1, 0xb3, 0x6f, 0xbb, 0xfc, 0x6a, 0x64, 0x0c, 0xba, 0x57, + 0x39, 0xdd, 0x0c, 0x07, 0xd2, 0xbb, 0x12, 0xc2, 0xf5, 0x1c, 0xa4, 0x5a, 0x48, 0xc7, 0x63, 0x50, + 0x7c, 0x89, 0x53, 0x4c, 0x11, 0x7d, 0x02, 0x2d, 0x41, 0xb6, 0x6d, 0xf3, 0xb2, 0x14, 0x0d, 0x7f, + 0x8d, 0xc3, 0x33, 0x02, 0xc3, 0x29, 0xba, 0x76, 0xb7, 0x67, 0x92, 0x9a, 0x15, 0x4d, 0xf1, 0x3b, + 0x82, 0x42, 0x60, 0x38, 0xc5, 0x29, 0xdc, 0xfa, 0xbb, 0x82, 0xc2, 0x0d, 0xf8, 0xf3, 0x79, 0xc8, + 0xd8, 0x96, 0x79, 0x68, 0x5b, 0xe3, 0x18, 0xf1, 0x7b, 0x9c, 0x01, 0x38, 0x84, 0x10, 0x5c, 0x83, + 0xf4, 0xb8, 0x1b, 0xf1, 0xfb, 0xef, 0x88, 0xe3, 0x21, 0x76, 0x60, 0x13, 0x66, 0x44, 0x82, 0x32, + 0x6c, 0x6b, 0x0c, 0x8a, 0x3f, 0xe0, 0x14, 0xb9, 0x00, 0x8c, 0x2f, 0xc3, 0xc3, 0xae, 0xd7, 0xc6, + 0xe3, 0x90, 0xbc, 0x2e, 0x96, 0xc1, 0x21, 0xdc, 0x95, 0xfb, 0xd8, 0xd2, 0x0f, 0xc6, 0x63, 0xf8, + 0x8a, 0x70, 0xa5, 0xc0, 0x10, 0x8a, 0x32, 0x4c, 0x77, 0x90, 0xe3, 0x1e, 0x20, 0x73, 0xac, 0xed, + 0xf8, 0x43, 0xce, 0x91, 0xf5, 0x41, 0xdc, 0x23, 0x3d, 0xeb, 0x34, 0x34, 0x5f, 0x15, 0x1e, 0x09, + 0xc0, 0xf8, 0xd1, 0x73, 0x3d, 0x7a, 0x01, 0x75, 0x1a, 0xb6, 0xaf, 0x89, 0xa3, 0xc7, 0xb0, 0xdb, + 0x41, 0xc6, 0x6b, 0x90, 0x76, 0x8d, 0x97, 0xc6, 0xa2, 0xf9, 0x23, 0xb1, 0xd3, 0x14, 0x40, 0xc0, + 0xb7, 0xe0, 0xec, 0xc8, 0x32, 0x31, 0x06, 0xd9, 0x1f, 0x73, 0xb2, 0x85, 0x11, 0xa5, 0x82, 0xa7, + 0x84, 0xd3, 0x52, 0xfe, 0x89, 0x48, 0x09, 0x78, 0x80, 0xab, 0x4e, 0x5e, 0x14, 0x5c, 0xd4, 0x3a, + 0x9d, 0xd7, 0xfe, 0x54, 0x78, 0x8d, 0x61, 0x43, 0x5e, 0xdb, 0x85, 0x05, 0xce, 0x78, 0xba, 0x7d, + 0xfd, 0xba, 0x48, 0xac, 0x0c, 0xbd, 0x17, 0xde, 0xdd, 0x9f, 0x81, 0x45, 0xdf, 0x9d, 0xa2, 0x23, + 0x75, 0xb5, 0x0e, 0xea, 0x8e, 0xc1, 0xfc, 0x0d, 0xce, 0x2c, 0x32, 0xbe, 0xdf, 0xd2, 0xba, 0xdb, + 0xa8, 0x4b, 0xc8, 0x6f, 0x42, 0x5e, 0x90, 0xf7, 0x2c, 0x07, 0xeb, 0x76, 0xdb, 0x32, 0x5e, 0xc2, + 0xcd, 0x31, 0xa8, 0xff, 0x6c, 0x60, 0xab, 0xf6, 0x02, 0x70, 0xc2, 0x5c, 0x05, 0xd9, 0xef, 0x55, + 0x34, 0xa3, 0xd3, 0xb5, 0x1d, 0x2f, 0x82, 0xf1, 0xcf, 0xc5, 0x4e, 0xf9, 0xb8, 0x2a, 0x85, 0x15, + 0x2b, 0x90, 0xa3, 0xc3, 0x71, 0x43, 0xf2, 0x2f, 0x38, 0xd1, 0x74, 0x1f, 0xc5, 0x13, 0x87, 0x6e, + 0x77, 0xba, 0xc8, 0x19, 0x27, 0xff, 0xfd, 0xa5, 0x48, 0x1c, 0x1c, 0xc2, 0x13, 0x87, 0x77, 0xd8, + 0xc5, 0xa4, 0xda, 0x8f, 0xc1, 0xf0, 0x4d, 0x91, 0x38, 0x04, 0x86, 0x53, 0x88, 0x86, 0x61, 0x0c, + 0x8a, 0xbf, 0x12, 0x14, 0x02, 0x43, 0x28, 0x3e, 0xd9, 0x2f, 0xb4, 0x0e, 0x6e, 0x1b, 0xae, 0xe7, + 0xb0, 0x3e, 0xf8, 0x64, 0xaa, 0x6f, 0xbd, 0x13, 0x6e, 0xc2, 0xd4, 0x00, 0xb4, 0x78, 0x03, 0x66, + 0x06, 0x5a, 0x0c, 0x25, 0xea, 0x7f, 0x16, 0xf2, 0x3f, 0xfb, 0x1e, 0x4f, 0x46, 0xe1, 0x0e, 0xa3, + 0xb8, 0x45, 0xf6, 0x3d, 0xdc, 0x07, 0x44, 0x93, 0xbd, 0xfc, 0x9e, 0xbf, 0xf5, 0xa1, 0x36, 0xa0, + 0x78, 0x1d, 0xa6, 0x43, 0x3d, 0x40, 0x34, 0xd5, 0x67, 0x39, 0x55, 0x36, 0xd8, 0x02, 0x14, 0x2f, + 0x43, 0x82, 0xd4, 0xf3, 0x68, 0xf8, 0xcf, 0x71, 0x38, 0x55, 0x2f, 0x7e, 0x0c, 0x52, 0xa2, 0x8e, + 0x47, 0x43, 0x7f, 0x9e, 0x43, 0x7d, 0x08, 0x81, 0x8b, 0x1a, 0x1e, 0x0d, 0xff, 0x05, 0x01, 0x17, + 0x10, 0x02, 0x1f, 0xdf, 0x85, 0xdf, 0xfe, 0xa5, 0x04, 0xcf, 0xc3, 0xc2, 0x77, 0xd7, 0x60, 0x8a, + 0x17, 0xef, 0x68, 0xf4, 0xe7, 0xf8, 0xc3, 0x05, 0xa2, 0xf8, 0x2c, 0x24, 0xc7, 0x74, 0xf8, 0x2f, + 0x73, 0x28, 0xd3, 0x2f, 0x96, 0x21, 0x13, 0x28, 0xd8, 0xd1, 0xf0, 0x5f, 0xe1, 0xf0, 0x20, 0x8a, + 0x98, 0xce, 0x0b, 0x76, 0x34, 0xc1, 0xe7, 0x85, 0xe9, 0x1c, 0x41, 0xdc, 0x26, 0x6a, 0x75, 0x34, + 0xfa, 0x57, 0x85, 0xd7, 0x05, 0xa4, 0xf8, 0x3c, 0xa4, 0xfd, 0xfc, 0x1b, 0x8d, 0xff, 0x35, 0x8e, + 0xef, 0x63, 0x88, 0x07, 0x02, 0xf9, 0x3f, 0x9a, 0xe2, 0xd7, 0x85, 0x07, 0x02, 0x28, 0x72, 0x8c, + 0x06, 0x6b, 0x7a, 0x34, 0xd3, 0x6f, 0x88, 0x63, 0x34, 0x50, 0xd2, 0xc9, 0x6e, 0xd2, 0x34, 0x18, + 0x4d, 0xf1, 0x9b, 0x62, 0x37, 0xa9, 0x3e, 0x31, 0x63, 0xb0, 0x48, 0x46, 0x73, 0xfc, 0x96, 0x30, + 0x63, 0xa0, 0x46, 0x16, 0xeb, 0xa0, 0x0c, 0x17, 0xc8, 0x68, 0xbe, 0x2f, 0x70, 0xbe, 0xd9, 0xa1, + 0xfa, 0x58, 0x7c, 0x01, 0x16, 0x46, 0x17, 0xc7, 0x68, 0xd6, 0x2f, 0xbe, 0x37, 0xf0, 0x3a, 0x13, + 0xac, 0x8d, 0xc5, 0xdd, 0x7e, 0x96, 0x0d, 0x16, 0xc6, 0x68, 0xda, 0x57, 0xde, 0x0b, 0x27, 0xda, + 0x60, 0x5d, 0x2c, 0x96, 0x00, 0xfa, 0x35, 0x29, 0x9a, 0xeb, 0x55, 0xce, 0x15, 0x00, 0x91, 0xa3, + 0xc1, 0x4b, 0x52, 0x34, 0xfe, 0x4b, 0xe2, 0x68, 0x70, 0x04, 0x39, 0x1a, 0xa2, 0x1a, 0x45, 0xa3, + 0x5f, 0x13, 0x47, 0x43, 0x40, 0x8a, 0xd7, 0x20, 0x65, 0xf5, 0x4c, 0x93, 0xc4, 0x96, 0x72, 0xf2, + 0xbf, 0x11, 0xe5, 0xff, 0xf5, 0x21, 0x07, 0x0b, 0x40, 0xf1, 0x32, 0x24, 0x71, 0x67, 0x1f, 0x37, + 0xa3, 0x90, 0xff, 0xf6, 0x50, 0xe4, 0x13, 0xa2, 0x5d, 0x7c, 0x1e, 0x80, 0xbd, 0x4c, 0xd3, 0xaf, + 0x44, 0x11, 0xd8, 0x7f, 0x7f, 0xc8, 0xff, 0x43, 0xa1, 0x0f, 0xe9, 0x13, 0xb0, 0xff, 0x77, 0x38, + 0x99, 0xe0, 0x9d, 0x30, 0x01, 0x7d, 0x01, 0x7f, 0x0e, 0xa6, 0x6e, 0xbb, 0xb6, 0xe5, 0xa1, 0x76, + 0x14, 0xfa, 0x3f, 0x38, 0x5a, 0xe8, 0x13, 0x87, 0x75, 0x6c, 0x07, 0x7b, 0xa8, 0xed, 0x46, 0x61, + 0xff, 0x93, 0x63, 0x7d, 0x00, 0x01, 0xeb, 0xc8, 0xf5, 0xc6, 0x59, 0xf7, 0x7f, 0x09, 0xb0, 0x00, + 0x10, 0xa3, 0xc9, 0xef, 0x3b, 0xf8, 0x30, 0x0a, 0xfb, 0xae, 0x30, 0x9a, 0xeb, 0x17, 0x3f, 0x06, + 0x69, 0xf2, 0x93, 0xfd, 0xd7, 0x4e, 0x04, 0xf8, 0xbf, 0x39, 0xb8, 0x8f, 0x20, 0x4f, 0x76, 0xbd, + 0xa6, 0x67, 0x44, 0x3b, 0xfb, 0x7f, 0xf8, 0x4e, 0x0b, 0xfd, 0x62, 0x09, 0x32, 0xae, 0xd7, 0x6c, + 0xf6, 0x78, 0x47, 0x13, 0x01, 0xff, 0xc1, 0x43, 0xff, 0x25, 0xd7, 0xc7, 0xac, 0x9f, 0x1f, 0x7d, + 0x59, 0x07, 0x9b, 0xf6, 0xa6, 0xcd, 0xae, 0xe9, 0xe0, 0xf3, 0x49, 0x38, 0xaf, 0xdb, 0x9d, 0x7d, + 0xdb, 0x5d, 0x63, 0x09, 0x65, 0xdf, 0xf6, 0x0e, 0xd6, 0xfc, 0x05, 0x88, 0x9b, 0x36, 0x5f, 0xb0, + 0x78, 0xba, 0x3b, 0xba, 0xe5, 0xbf, 0x89, 0x43, 0xaa, 0x8c, 0x5c, 0x0f, 0xdd, 0x43, 0x87, 0x4a, + 0x17, 0xe6, 0xc8, 0xef, 0x6d, 0xd4, 0xa5, 0x37, 0x3e, 0xfc, 0x88, 0xf1, 0x3b, 0xd0, 0x0f, 0xaf, + 0xf6, 0x9f, 0x2a, 0x10, 0xab, 0x23, 0xd4, 0xe9, 0xb7, 0xe3, 0x75, 0xf9, 0x8d, 0x7f, 0x3a, 0x37, + 0xf1, 0x8b, 0xff, 0x7c, 0x2e, 0xb5, 0x7d, 0xf8, 0x82, 0x61, 0xba, 0xb6, 0xa5, 0x8e, 0xa2, 0x56, + 0x3e, 0x2b, 0xc1, 0xa3, 0x23, 0xe4, 0x3b, 0xfc, 0x1c, 0xf2, 0x2f, 0x09, 0x97, 0xc6, 0x7c, 0xb4, + 0x80, 0x31, 0x13, 0xb2, 0xa1, 0xc7, 0x9f, 0xf4, 0x98, 0xc5, 0x5b, 0x90, 0x3f, 0x6e, 0x25, 0x8a, + 0x0c, 0xf1, 0x3b, 0xf8, 0x90, 0xff, 0x77, 0x28, 0xf9, 0xa9, 0x5c, 0xe8, 0xff, 0x77, 0x99, 0xb4, + 0x92, 0xb9, 0x38, 0x1b, 0xb0, 0x8e, 0x3f, 0x8c, 0xcd, 0x17, 0x63, 0x57, 0xa5, 0x45, 0x04, 0x4b, + 0x51, 0x96, 0xfe, 0x3f, 0x1f, 0xb1, 0x5c, 0x80, 0x49, 0x26, 0x54, 0xe6, 0x21, 0x59, 0xb5, 0xbc, + 0x2b, 0x97, 0x28, 0x55, 0x5c, 0x65, 0x83, 0xf5, 0xad, 0x37, 0x1e, 0x14, 0x26, 0xbe, 0xfb, 0xa0, + 0x30, 0xf1, 0x0f, 0x0f, 0x0a, 0x13, 0x6f, 0x3e, 0x28, 0x48, 0x6f, 0x3f, 0x28, 0x48, 0xef, 0x3e, + 0x28, 0x48, 0x3f, 0x7c, 0x50, 0x90, 0xee, 0x1f, 0x15, 0xa4, 0xaf, 0x1c, 0x15, 0xa4, 0xaf, 0x1f, + 0x15, 0xa4, 0x6f, 0x1d, 0x15, 0xa4, 0x6f, 0x1f, 0x15, 0xa4, 0x37, 0x8e, 0x0a, 0x13, 0xdf, 0x3d, + 0x2a, 0x4c, 0xbc, 0x79, 0x54, 0x90, 0xde, 0x3e, 0x2a, 0x4c, 0xbc, 0x7b, 0x54, 0x90, 0x7e, 0x78, + 0x54, 0x90, 0xee, 0x7f, 0xbf, 0x20, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc4, 0x14, 0xcf, + 0xd0, 0xee, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafemarshaler/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafemarshaler/castvalue.pb.go index dfaf5eaf3..f7da2c88f 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafemarshaler/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafemarshaler/castvalue.pb.go @@ -72,237 +72,244 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3683 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0x72, 0xcc, 0xd5, 0x2a, - 0xfe, 0x91, 0xed, 0x44, 0x0a, 0xd6, 0xbb, 0xeb, 0xf5, 0x6c, 0x13, 0x83, 0xa2, 0x68, 0x45, 0x0b, - 0xfd, 0x65, 0x24, 0xc5, 0x76, 0xf2, 0x30, 0xb8, 0x1a, 0x5e, 0x52, 0xb3, 0x3b, 0x9c, 0x61, 0x67, - 0x86, 0xbb, 0x96, 0x9f, 0x36, 0x70, 0xda, 0x22, 0x0d, 0xfa, 0x1f, 0xa0, 0x89, 0xe3, 0xb8, 0x69, - 0x80, 0xd6, 0x69, 0xfa, 0x97, 0xf4, 0x27, 0x0d, 0xfa, 0x94, 0x3e, 0xa4, 0xf5, 0x53, 0x91, 0xbc, - 0xf5, 0xa1, 0x68, 0xb3, 0xaa, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0x06, 0xf0, 0x4b, 0x71, - 0xff, 0x86, 0x33, 0x24, 0xa5, 0xa1, 0x52, 0x24, 0xe9, 0x93, 0x78, 0xcf, 0x3d, 0xdf, 0x37, 0xe7, - 0x9e, 0x7b, 0xee, 0x39, 0x67, 0xee, 0x08, 0x3e, 0x75, 0x19, 0xe6, 0x5b, 0xae, 0xdb, 0xb2, 0xc9, - 0x72, 0xc7, 0x73, 0x03, 0xf7, 0xa0, 0xdb, 0x5c, 0x6e, 0x10, 0xdf, 0xf4, 0xac, 0x4e, 0xe0, 0x7a, - 0x4b, 0x4c, 0x86, 0xa6, 0xb8, 0xc6, 0x92, 0xd4, 0x58, 0xd8, 0x84, 0xe9, 0x67, 0x2d, 0x9b, 0xac, - 0x86, 0x8a, 0xbb, 0x24, 0x40, 0xd7, 0x20, 0xd3, 0xb4, 0x6c, 0x52, 0x56, 0xe6, 0xd3, 0x8b, 0x85, - 0x4b, 0x0f, 0x2d, 0xf5, 0x81, 0x96, 0xe2, 0x88, 0x1d, 0x2a, 0xd6, 0x19, 0x62, 0xe1, 0xcd, 0x0c, - 0xcc, 0x0c, 0x99, 0x45, 0x08, 0x32, 0x0e, 0x6e, 0x53, 0x46, 0x65, 0x31, 0xaf, 0xb3, 0xdf, 0xa8, - 0x0c, 0x13, 0x1d, 0x6c, 0xde, 0xc2, 0x2d, 0x52, 0x4e, 0x31, 0xb1, 0x1c, 0xa2, 0x0a, 0x40, 0x83, - 0x74, 0x88, 0xd3, 0x20, 0x8e, 0x79, 0x54, 0x4e, 0xcf, 0xa7, 0x17, 0xf3, 0x7a, 0x44, 0x82, 0x9e, - 0x80, 0xe9, 0x4e, 0xf7, 0xc0, 0xb6, 0x4c, 0x23, 0xa2, 0x06, 0xf3, 0xe9, 0xc5, 0xac, 0xae, 0xf2, - 0x89, 0xd5, 0x9e, 0xf2, 0xa3, 0x30, 0x75, 0x87, 0xe0, 0x5b, 0x51, 0xd5, 0x02, 0x53, 0x2d, 0x51, - 0x71, 0x44, 0xb1, 0x06, 0xc5, 0x36, 0xf1, 0x7d, 0xdc, 0x22, 0x46, 0x70, 0xd4, 0x21, 0xe5, 0x0c, - 0x5b, 0xfd, 0xfc, 0xc0, 0xea, 0xfb, 0x57, 0x5e, 0x10, 0xa8, 0xbd, 0xa3, 0x0e, 0x41, 0x55, 0xc8, - 0x13, 0xa7, 0xdb, 0xe6, 0x0c, 0xd9, 0x13, 0xfc, 0x57, 0x77, 0xba, 0xed, 0x7e, 0x96, 0x1c, 0x85, - 0x09, 0x8a, 0x09, 0x9f, 0x78, 0xb7, 0x2d, 0x93, 0x94, 0xc7, 0x19, 0xc1, 0xa3, 0x03, 0x04, 0xbb, - 0x7c, 0xbe, 0x9f, 0x43, 0xe2, 0x50, 0x0d, 0xf2, 0xe4, 0xc5, 0x80, 0x38, 0xbe, 0xe5, 0x3a, 0xe5, - 0x09, 0x46, 0xf2, 0xf0, 0x90, 0x5d, 0x24, 0x76, 0xa3, 0x9f, 0xa2, 0x87, 0x43, 0x57, 0x61, 0xc2, - 0xed, 0x04, 0x96, 0xeb, 0xf8, 0xe5, 0xdc, 0xbc, 0xb2, 0x58, 0xb8, 0xf4, 0xbe, 0xa1, 0x81, 0xb0, - 0xcd, 0x75, 0x74, 0xa9, 0x8c, 0xd6, 0x41, 0xf5, 0xdd, 0xae, 0x67, 0x12, 0xc3, 0x74, 0x1b, 0xc4, - 0xb0, 0x9c, 0xa6, 0x5b, 0xce, 0x33, 0x82, 0x0b, 0x83, 0x0b, 0x61, 0x8a, 0x35, 0xb7, 0x41, 0xd6, - 0x9d, 0xa6, 0xab, 0x97, 0xfc, 0xd8, 0x18, 0x9d, 0x83, 0x71, 0xff, 0xc8, 0x09, 0xf0, 0x8b, 0xe5, - 0x22, 0x8b, 0x10, 0x31, 0x5a, 0xf8, 0x9f, 0x2c, 0x4c, 0x8d, 0x12, 0x62, 0xd7, 0x21, 0xdb, 0xa4, - 0xab, 0x2c, 0xa7, 0xce, 0xe2, 0x03, 0x8e, 0x89, 0x3b, 0x71, 0xfc, 0x47, 0x74, 0x62, 0x15, 0x0a, - 0x0e, 0xf1, 0x03, 0xd2, 0xe0, 0x11, 0x91, 0x1e, 0x31, 0xa6, 0x80, 0x83, 0x06, 0x43, 0x2a, 0xf3, - 0x23, 0x85, 0xd4, 0xf3, 0x30, 0x15, 0x9a, 0x64, 0x78, 0xd8, 0x69, 0xc9, 0xd8, 0x5c, 0x4e, 0xb2, - 0x64, 0xa9, 0x2e, 0x71, 0x3a, 0x85, 0xe9, 0x25, 0x12, 0x1b, 0xa3, 0x55, 0x00, 0xd7, 0x21, 0x6e, - 0xd3, 0x68, 0x10, 0xd3, 0x2e, 0xe7, 0x4e, 0xf0, 0xd2, 0x36, 0x55, 0x19, 0xf0, 0x92, 0xcb, 0xa5, - 0xa6, 0x8d, 0x9e, 0xee, 0x85, 0xda, 0xc4, 0x09, 0x91, 0xb2, 0xc9, 0x0f, 0xd9, 0x40, 0xb4, 0xed, - 0x43, 0xc9, 0x23, 0x34, 0xee, 0x49, 0x43, 0xac, 0x2c, 0xcf, 0x8c, 0x58, 0x4a, 0x5c, 0x99, 0x2e, - 0x60, 0x7c, 0x61, 0x93, 0x5e, 0x74, 0x88, 0xde, 0x0f, 0xa1, 0xc0, 0x60, 0x61, 0x05, 0x2c, 0x0b, - 0x15, 0xa5, 0x70, 0x0b, 0xb7, 0xc9, 0xdc, 0x35, 0x28, 0xc5, 0xdd, 0x83, 0x66, 0x21, 0xeb, 0x07, - 0xd8, 0x0b, 0x58, 0x14, 0x66, 0x75, 0x3e, 0x40, 0x2a, 0xa4, 0x89, 0xd3, 0x60, 0x59, 0x2e, 0xab, - 0xd3, 0x9f, 0x73, 0x4f, 0xc1, 0x64, 0xec, 0xf1, 0xa3, 0x02, 0x17, 0x3e, 0x3f, 0x0e, 0xb3, 0xc3, - 0x62, 0x6e, 0x68, 0xf8, 0x9f, 0x83, 0x71, 0xa7, 0xdb, 0x3e, 0x20, 0x5e, 0x39, 0xcd, 0x18, 0xc4, - 0x08, 0x55, 0x21, 0x6b, 0xe3, 0x03, 0x62, 0x97, 0x33, 0xf3, 0xca, 0x62, 0xe9, 0xd2, 0x13, 0x23, - 0x45, 0xf5, 0xd2, 0x06, 0x85, 0xe8, 0x1c, 0x89, 0x3e, 0x02, 0x19, 0x91, 0xe2, 0x28, 0xc3, 0xe3, - 0xa3, 0x31, 0xd0, 0x58, 0xd4, 0x19, 0x0e, 0x3d, 0x00, 0x79, 0xfa, 0x97, 0xfb, 0x76, 0x9c, 0xd9, - 0x9c, 0xa3, 0x02, 0xea, 0x57, 0x34, 0x07, 0x39, 0x16, 0x66, 0x0d, 0x22, 0x4b, 0x43, 0x38, 0xa6, - 0x1b, 0xd3, 0x20, 0x4d, 0xdc, 0xb5, 0x03, 0xe3, 0x36, 0xb6, 0xbb, 0x84, 0x05, 0x4c, 0x5e, 0x2f, - 0x0a, 0xe1, 0xc7, 0xa9, 0x0c, 0x5d, 0x80, 0x02, 0x8f, 0x4a, 0xcb, 0x69, 0x90, 0x17, 0x59, 0xf6, - 0xc9, 0xea, 0x3c, 0x50, 0xd7, 0xa9, 0x84, 0x3e, 0xfe, 0xa6, 0xef, 0x3a, 0x72, 0x6b, 0xd9, 0x23, - 0xa8, 0x80, 0x3d, 0xfe, 0xa9, 0xfe, 0xc4, 0xf7, 0xe0, 0xf0, 0xe5, 0xf5, 0xc7, 0xe2, 0xc2, 0x37, - 0x53, 0x90, 0x61, 0xe7, 0x6d, 0x0a, 0x0a, 0x7b, 0x2f, 0xec, 0xd4, 0x8d, 0xd5, 0xed, 0xfd, 0x95, - 0x8d, 0xba, 0xaa, 0xa0, 0x12, 0x00, 0x13, 0x3c, 0xbb, 0xb1, 0x5d, 0xdd, 0x53, 0x53, 0xe1, 0x78, - 0x7d, 0x6b, 0xef, 0xea, 0x65, 0x35, 0x1d, 0x02, 0xf6, 0xb9, 0x20, 0x13, 0x55, 0x78, 0xf2, 0x92, - 0x9a, 0x45, 0x2a, 0x14, 0x39, 0xc1, 0xfa, 0xf3, 0xf5, 0xd5, 0xab, 0x97, 0xd5, 0xf1, 0xb8, 0xe4, - 0xc9, 0x4b, 0xea, 0x04, 0x9a, 0x84, 0x3c, 0x93, 0xac, 0x6c, 0x6f, 0x6f, 0xa8, 0xb9, 0x90, 0x73, - 0x77, 0x4f, 0x5f, 0xdf, 0x5a, 0x53, 0xf3, 0x21, 0xe7, 0x9a, 0xbe, 0xbd, 0xbf, 0xa3, 0x42, 0xc8, - 0xb0, 0x59, 0xdf, 0xdd, 0xad, 0xae, 0xd5, 0xd5, 0x42, 0xa8, 0xb1, 0xf2, 0xc2, 0x5e, 0x7d, 0x57, - 0x2d, 0xc6, 0xcc, 0x7a, 0xf2, 0x92, 0x3a, 0x19, 0x3e, 0xa2, 0xbe, 0xb5, 0xbf, 0xa9, 0x96, 0xd0, - 0x34, 0x4c, 0xf2, 0x47, 0x48, 0x23, 0xa6, 0xfa, 0x44, 0x57, 0x2f, 0xab, 0x6a, 0xcf, 0x10, 0xce, - 0x32, 0x1d, 0x13, 0x5c, 0xbd, 0xac, 0xa2, 0x85, 0x1a, 0x64, 0x59, 0x74, 0x21, 0x04, 0xa5, 0x8d, - 0xea, 0x4a, 0x7d, 0xc3, 0xd8, 0xde, 0xd9, 0x5b, 0xdf, 0xde, 0xaa, 0x6e, 0xa8, 0x4a, 0x4f, 0xa6, - 0xd7, 0x3f, 0xb6, 0xbf, 0xae, 0xd7, 0x57, 0xd5, 0x54, 0x54, 0xb6, 0x53, 0xaf, 0xee, 0xd5, 0x57, - 0xd5, 0xf4, 0x82, 0x09, 0xb3, 0xc3, 0xf2, 0xcc, 0xd0, 0x93, 0x11, 0xd9, 0xe2, 0xd4, 0x09, 0x5b, - 0xcc, 0xb8, 0x06, 0xb6, 0xf8, 0x2b, 0x0a, 0xcc, 0x0c, 0xc9, 0xb5, 0x43, 0x1f, 0xf2, 0x0c, 0x64, - 0x79, 0x88, 0xf2, 0xea, 0xf3, 0xd8, 0xd0, 0xa4, 0xcd, 0x02, 0x76, 0xa0, 0x02, 0x31, 0x5c, 0xb4, - 0x02, 0xa7, 0x4f, 0xa8, 0xc0, 0x94, 0x62, 0xc0, 0xc8, 0x97, 0x15, 0x28, 0x9f, 0xc4, 0x9d, 0x90, - 0x28, 0x52, 0xb1, 0x44, 0x71, 0xbd, 0xdf, 0x80, 0x8b, 0x27, 0xaf, 0x61, 0xc0, 0x8a, 0xd7, 0x15, - 0x38, 0x37, 0xbc, 0x51, 0x19, 0x6a, 0xc3, 0x47, 0x60, 0xbc, 0x4d, 0x82, 0x43, 0x57, 0x16, 0xeb, - 0x47, 0x86, 0x94, 0x00, 0x3a, 0xdd, 0xef, 0x2b, 0x81, 0x8a, 0xd6, 0x90, 0xf4, 0x49, 0xdd, 0x06, - 0xb7, 0x66, 0xc0, 0xd2, 0xcf, 0xa4, 0xe0, 0xbe, 0xa1, 0xe4, 0x43, 0x0d, 0x7d, 0x10, 0xc0, 0x72, - 0x3a, 0xdd, 0x80, 0x17, 0x64, 0x9e, 0x9f, 0xf2, 0x4c, 0xc2, 0xce, 0x3e, 0xcd, 0x3d, 0xdd, 0x20, - 0x9c, 0x4f, 0xb3, 0x79, 0xe0, 0x22, 0xa6, 0x70, 0xad, 0x67, 0x68, 0x86, 0x19, 0x5a, 0x39, 0x61, - 0xa5, 0x03, 0xb5, 0xee, 0x43, 0xa0, 0x9a, 0xb6, 0x45, 0x9c, 0xc0, 0xf0, 0x03, 0x8f, 0xe0, 0xb6, - 0xe5, 0xb4, 0x58, 0x02, 0xce, 0x69, 0xd9, 0x26, 0xb6, 0x7d, 0xa2, 0x4f, 0xf1, 0xe9, 0x5d, 0x39, - 0x4b, 0x11, 0xac, 0xca, 0x78, 0x11, 0xc4, 0x78, 0x0c, 0xc1, 0xa7, 0x43, 0xc4, 0xc2, 0x67, 0x27, - 0xa0, 0x10, 0x69, 0xeb, 0xd0, 0x45, 0x28, 0xde, 0xc4, 0xb7, 0xb1, 0x21, 0x5b, 0x75, 0xee, 0x89, - 0x02, 0x95, 0xed, 0x88, 0x76, 0xfd, 0x43, 0x30, 0xcb, 0x54, 0xdc, 0x6e, 0x40, 0x3c, 0xc3, 0xb4, - 0xb1, 0xef, 0x33, 0xa7, 0xe5, 0x98, 0x2a, 0xa2, 0x73, 0xdb, 0x74, 0xaa, 0x26, 0x67, 0xd0, 0x15, - 0x98, 0x61, 0x88, 0x76, 0xd7, 0x0e, 0xac, 0x8e, 0x4d, 0x0c, 0xfa, 0xf2, 0xe0, 0xb3, 0x44, 0x1c, - 0x5a, 0x36, 0x4d, 0x35, 0x36, 0x85, 0x02, 0xb5, 0xc8, 0x47, 0x6b, 0xf0, 0x20, 0x83, 0xb5, 0x88, - 0x43, 0x3c, 0x1c, 0x10, 0x83, 0xfc, 0x6c, 0x17, 0xdb, 0xbe, 0x81, 0x9d, 0x86, 0x71, 0x88, 0xfd, - 0xc3, 0xf2, 0x6c, 0x94, 0xe0, 0x3c, 0xd5, 0x5d, 0x13, 0xaa, 0x75, 0xa6, 0x59, 0x75, 0x1a, 0x1f, - 0xc5, 0xfe, 0x21, 0xd2, 0xe0, 0x1c, 0x23, 0xf2, 0x03, 0xcf, 0x72, 0x5a, 0x86, 0x79, 0x48, 0xcc, - 0x5b, 0x46, 0x37, 0x68, 0x5e, 0x2b, 0x3f, 0x10, 0x65, 0x60, 0x46, 0xee, 0x32, 0x9d, 0x1a, 0x55, - 0xd9, 0x0f, 0x9a, 0xd7, 0xd0, 0x2e, 0x14, 0xe9, 0x7e, 0xb4, 0xad, 0x97, 0x88, 0xd1, 0x74, 0x3d, - 0x56, 0x5c, 0x4a, 0x43, 0x0e, 0x77, 0xc4, 0x89, 0x4b, 0xdb, 0x02, 0xb0, 0xe9, 0x36, 0x88, 0x96, - 0xdd, 0xdd, 0xa9, 0xd7, 0x57, 0xf5, 0x82, 0x64, 0x79, 0xd6, 0xf5, 0x68, 0x4c, 0xb5, 0xdc, 0xd0, - 0xc7, 0x05, 0x1e, 0x53, 0x2d, 0x57, 0x7a, 0xf8, 0x0a, 0xcc, 0x98, 0x26, 0x5f, 0xb6, 0x65, 0x1a, - 0xa2, 0xcb, 0xf7, 0xcb, 0x6a, 0xcc, 0x5f, 0xa6, 0xb9, 0xc6, 0x15, 0x44, 0x98, 0xfb, 0xe8, 0x69, - 0xb8, 0xaf, 0xe7, 0xaf, 0x28, 0x70, 0x7a, 0x60, 0x95, 0xfd, 0xd0, 0x2b, 0x30, 0xd3, 0x39, 0x1a, - 0x04, 0xa2, 0xd8, 0x13, 0x3b, 0x47, 0xfd, 0xb0, 0x87, 0xd9, 0x9b, 0x9b, 0x47, 0x4c, 0x1c, 0x90, - 0x46, 0xf9, 0xfe, 0xa8, 0x76, 0x64, 0x02, 0x2d, 0x83, 0x6a, 0x9a, 0x06, 0x71, 0xf0, 0x81, 0x4d, - 0x0c, 0xec, 0x11, 0x07, 0xfb, 0xe5, 0x0b, 0x51, 0xe5, 0x92, 0x69, 0xd6, 0xd9, 0x6c, 0x95, 0x4d, - 0xa2, 0xc7, 0x61, 0xda, 0x3d, 0xb8, 0x69, 0xf2, 0xe0, 0x32, 0x3a, 0x1e, 0x69, 0x5a, 0x2f, 0x96, - 0x1f, 0x62, 0x6e, 0x9a, 0xa2, 0x13, 0x2c, 0xb4, 0x76, 0x98, 0x18, 0x3d, 0x06, 0xaa, 0xe9, 0x1f, - 0x62, 0xaf, 0xc3, 0xaa, 0xbb, 0xdf, 0xc1, 0x26, 0x29, 0x3f, 0xcc, 0x55, 0xb9, 0x7c, 0x4b, 0x8a, - 0xd1, 0xf3, 0x30, 0xdb, 0x75, 0x2c, 0x27, 0x20, 0x5e, 0xc7, 0x23, 0xb4, 0x49, 0xe7, 0x27, 0xad, - 0xfc, 0xcf, 0x13, 0x27, 0xb4, 0xd9, 0xfb, 0x51, 0x6d, 0xbe, 0xbb, 0xfa, 0x4c, 0x77, 0x50, 0xb8, - 0xa0, 0x41, 0x31, 0xba, 0xe9, 0x28, 0x0f, 0x7c, 0xdb, 0x55, 0x85, 0xd6, 0xd0, 0xda, 0xf6, 0x2a, - 0xad, 0x7e, 0x9f, 0xa8, 0xab, 0x29, 0x5a, 0x85, 0x37, 0xd6, 0xf7, 0xea, 0x86, 0xbe, 0xbf, 0xb5, - 0xb7, 0xbe, 0x59, 0x57, 0xd3, 0x8f, 0xe7, 0x73, 0x6f, 0x4d, 0xa8, 0x77, 0xef, 0xde, 0xbd, 0x9b, - 0x5a, 0xf8, 0x4e, 0x0a, 0x4a, 0xf1, 0xce, 0x17, 0xfd, 0x0c, 0xdc, 0x2f, 0x5f, 0x53, 0x7d, 0x12, - 0x18, 0x77, 0x2c, 0x8f, 0xc5, 0x61, 0x1b, 0xf3, 0xde, 0x31, 0x74, 0xe1, 0xac, 0xd0, 0xda, 0x25, - 0xc1, 0x73, 0x96, 0x47, 0xa3, 0xac, 0x8d, 0x03, 0xb4, 0x01, 0x17, 0x1c, 0xd7, 0xf0, 0x03, 0xec, - 0x34, 0xb0, 0xd7, 0x30, 0x7a, 0x17, 0x04, 0x06, 0x36, 0x4d, 0xe2, 0xfb, 0x2e, 0x2f, 0x01, 0x21, - 0xcb, 0xfb, 0x1c, 0x77, 0x57, 0x28, 0xf7, 0x72, 0x63, 0x55, 0xa8, 0xf6, 0x6d, 0x77, 0xfa, 0xa4, - 0xed, 0x7e, 0x00, 0xf2, 0x6d, 0xdc, 0x31, 0x88, 0x13, 0x78, 0x47, 0xac, 0x5f, 0xcb, 0xe9, 0xb9, - 0x36, 0xee, 0xd4, 0xe9, 0xf8, 0xc7, 0xb7, 0x07, 0x51, 0x3f, 0xfe, 0x7d, 0x1a, 0x8a, 0xd1, 0x9e, - 0x8d, 0xb6, 0xc0, 0x26, 0xcb, 0xcf, 0x0a, 0x3b, 0xbe, 0xef, 0x3f, 0xb5, 0xc3, 0x5b, 0xaa, 0xd1, - 0xc4, 0xad, 0x8d, 0xf3, 0x4e, 0x4a, 0xe7, 0x48, 0x5a, 0x34, 0xe9, 0x81, 0x25, 0xbc, 0x3f, 0xcf, - 0xe9, 0x62, 0x84, 0xd6, 0x60, 0xfc, 0xa6, 0xcf, 0xb8, 0xc7, 0x19, 0xf7, 0x43, 0xa7, 0x73, 0xdf, - 0xd8, 0x65, 0xe4, 0xf9, 0x1b, 0xbb, 0xc6, 0xd6, 0xb6, 0xbe, 0x59, 0xdd, 0xd0, 0x05, 0x1c, 0x9d, - 0x87, 0x8c, 0x8d, 0x5f, 0x3a, 0x8a, 0xa7, 0x78, 0x26, 0x1a, 0xd5, 0xf1, 0xe7, 0x21, 0x73, 0x87, - 0xe0, 0x5b, 0xf1, 0xc4, 0xca, 0x44, 0x3f, 0xc6, 0xd0, 0x5f, 0x86, 0x2c, 0xf3, 0x17, 0x02, 0x10, - 0x1e, 0x53, 0xc7, 0x50, 0x0e, 0x32, 0xb5, 0x6d, 0x9d, 0x86, 0xbf, 0x0a, 0x45, 0x2e, 0x35, 0x76, - 0xd6, 0xeb, 0xb5, 0xba, 0x9a, 0x5a, 0xb8, 0x02, 0xe3, 0xdc, 0x09, 0xf4, 0x68, 0x84, 0x6e, 0x50, - 0xc7, 0xc4, 0x50, 0x70, 0x28, 0x72, 0x76, 0x7f, 0x73, 0xa5, 0xae, 0xab, 0xa9, 0xe8, 0xf6, 0xfa, - 0x50, 0x8c, 0xb6, 0x6b, 0x3f, 0x99, 0x98, 0xfa, 0x4b, 0x05, 0x0a, 0x91, 0xf6, 0x8b, 0x16, 0x7e, - 0x6c, 0xdb, 0xee, 0x1d, 0x03, 0xdb, 0x16, 0xf6, 0x45, 0x50, 0x00, 0x13, 0x55, 0xa9, 0x64, 0xd4, - 0x4d, 0xfb, 0x89, 0x18, 0xff, 0x9a, 0x02, 0x6a, 0x7f, 0xeb, 0xd6, 0x67, 0xa0, 0xf2, 0x53, 0x35, - 0xf0, 0x55, 0x05, 0x4a, 0xf1, 0x7e, 0xad, 0xcf, 0xbc, 0x8b, 0x3f, 0x55, 0xf3, 0xbe, 0xa8, 0xc0, - 0x64, 0xac, 0x4b, 0xfb, 0x7f, 0x65, 0xdd, 0x2b, 0x69, 0x98, 0x19, 0x82, 0x43, 0x55, 0xd1, 0xce, - 0xf2, 0x0e, 0xfb, 0x83, 0xa3, 0x3c, 0x6b, 0x89, 0x56, 0xcb, 0x1d, 0xec, 0x05, 0xa2, 0xfb, 0x7d, - 0x0c, 0x54, 0xab, 0x41, 0x9c, 0xc0, 0x6a, 0x5a, 0xc4, 0x13, 0xaf, 0xe0, 0xbc, 0xc7, 0x9d, 0xea, - 0xc9, 0xf9, 0x5b, 0xf8, 0x07, 0x00, 0x75, 0x5c, 0xdf, 0x0a, 0xac, 0xdb, 0xc4, 0xb0, 0x1c, 0xf9, - 0xbe, 0x4e, 0x7b, 0xde, 0x8c, 0xae, 0xca, 0x99, 0x75, 0x27, 0x08, 0xb5, 0x1d, 0xd2, 0xc2, 0x7d, - 0xda, 0x34, 0xf7, 0xa5, 0x75, 0x55, 0xce, 0x84, 0xda, 0x17, 0xa1, 0xd8, 0x70, 0xbb, 0xb4, 0x7d, - 0xe0, 0x7a, 0x34, 0xd5, 0x2a, 0x7a, 0x81, 0xcb, 0x42, 0x15, 0xd1, 0xdf, 0xf5, 0x2e, 0x0a, 0x8a, - 0x7a, 0x81, 0xcb, 0xb8, 0xca, 0xa3, 0x30, 0x85, 0x5b, 0x2d, 0x8f, 0x92, 0x4b, 0x22, 0xde, 0xb4, - 0x96, 0x42, 0x31, 0x53, 0x9c, 0xbb, 0x01, 0x39, 0xe9, 0x07, 0x5a, 0xcd, 0xa8, 0x27, 0x8c, 0x0e, - 0xbf, 0xae, 0x49, 0x2d, 0xe6, 0xf5, 0x9c, 0x23, 0x27, 0x2f, 0x42, 0xd1, 0xf2, 0x8d, 0xde, 0xbd, - 0x61, 0x6a, 0x3e, 0xb5, 0x98, 0xd3, 0x0b, 0x96, 0x1f, 0x5e, 0x14, 0x2d, 0xbc, 0x9e, 0x82, 0x52, - 0xfc, 0xde, 0x13, 0xad, 0x42, 0xce, 0x76, 0x4d, 0xcc, 0x02, 0x81, 0x5f, 0xba, 0x2f, 0x26, 0x5c, - 0x95, 0x2e, 0x6d, 0x08, 0x7d, 0x3d, 0x44, 0xce, 0xfd, 0xad, 0x02, 0x39, 0x29, 0x46, 0xe7, 0x20, - 0xd3, 0xc1, 0xc1, 0x21, 0xa3, 0xcb, 0xae, 0xa4, 0x54, 0x45, 0x67, 0x63, 0x2a, 0xf7, 0x3b, 0xd8, - 0x61, 0x21, 0x20, 0xe4, 0x74, 0x4c, 0xf7, 0xd5, 0x26, 0xb8, 0xc1, 0xda, 0x61, 0xb7, 0xdd, 0x26, - 0x4e, 0xe0, 0xcb, 0x7d, 0x15, 0xf2, 0x9a, 0x10, 0xa3, 0x27, 0x60, 0x3a, 0xf0, 0xb0, 0x65, 0xc7, - 0x74, 0x33, 0x4c, 0x57, 0x95, 0x13, 0xa1, 0xb2, 0x06, 0xe7, 0x25, 0x6f, 0x83, 0x04, 0xd8, 0x3c, - 0x24, 0x8d, 0x1e, 0x68, 0x9c, 0x5d, 0xaa, 0xdd, 0x2f, 0x14, 0x56, 0xc5, 0xbc, 0xc4, 0x2e, 0x7c, - 0x4f, 0x81, 0x69, 0xd9, 0xc0, 0x37, 0x42, 0x67, 0x6d, 0x02, 0x60, 0xc7, 0x71, 0x83, 0xa8, 0xbb, - 0x06, 0x43, 0x79, 0x00, 0xb7, 0x54, 0x0d, 0x41, 0x7a, 0x84, 0x60, 0xae, 0x0d, 0xd0, 0x9b, 0x39, - 0xd1, 0x6d, 0x17, 0xa0, 0x20, 0x2e, 0xb5, 0xd9, 0x97, 0x11, 0xfe, 0xd6, 0x07, 0x5c, 0x44, 0x3b, - 0x7d, 0x34, 0x0b, 0xd9, 0x03, 0xd2, 0xb2, 0x1c, 0x71, 0xd5, 0xc6, 0x07, 0xf2, 0x02, 0x2f, 0x13, - 0x5e, 0xe0, 0xad, 0x7c, 0x12, 0x66, 0x4c, 0xb7, 0xdd, 0x6f, 0xee, 0x8a, 0xda, 0xf7, 0xe6, 0xe9, - 0x7f, 0x54, 0xf9, 0x04, 0xf4, 0xba, 0xb3, 0x2f, 0x2b, 0xca, 0x57, 0x52, 0xe9, 0xb5, 0x9d, 0x95, - 0xaf, 0xa5, 0xe6, 0xd6, 0x38, 0x74, 0x47, 0xae, 0x54, 0x27, 0x4d, 0x9b, 0x98, 0xd4, 0x7a, 0xf8, - 0xc1, 0x23, 0xf0, 0xc1, 0x96, 0x15, 0x1c, 0x76, 0x0f, 0x96, 0x4c, 0xb7, 0xbd, 0xdc, 0x72, 0x5b, - 0x6e, 0xef, 0x63, 0x10, 0x1d, 0xb1, 0x01, 0xfb, 0x25, 0x3e, 0x08, 0xe5, 0x43, 0xe9, 0x5c, 0xe2, - 0xd7, 0x23, 0x6d, 0x0b, 0x66, 0x84, 0xb2, 0xc1, 0x6e, 0xa4, 0x79, 0x1f, 0x8e, 0x4e, 0xbd, 0x95, - 0x28, 0x7f, 0xe3, 0x4d, 0x56, 0xe9, 0xf4, 0x69, 0x01, 0xa5, 0x73, 0xbc, 0x53, 0xd7, 0x74, 0xb8, - 0x2f, 0xc6, 0xc7, 0x8f, 0x26, 0xf1, 0x12, 0x18, 0xbf, 0x23, 0x18, 0x67, 0x22, 0x8c, 0xbb, 0x02, - 0xaa, 0xd5, 0x60, 0xf2, 0x2c, 0x5c, 0x7f, 0x2d, 0xb8, 0x8a, 0x24, 0x4a, 0xb2, 0x06, 0x53, 0x8c, - 0xc4, 0xec, 0xfa, 0x81, 0xdb, 0x66, 0x79, 0xef, 0x74, 0x9a, 0xbf, 0x79, 0x93, 0x9f, 0x95, 0x12, - 0x85, 0xd5, 0x42, 0x94, 0xa6, 0x01, 0xbb, 0x84, 0x6f, 0x10, 0xd3, 0x4e, 0x60, 0x78, 0x43, 0x18, - 0x12, 0xea, 0x6b, 0x1f, 0x87, 0x59, 0xfa, 0x9b, 0xa5, 0xa5, 0xa8, 0x25, 0xc9, 0x77, 0x30, 0xe5, - 0xef, 0xbd, 0xcc, 0x8f, 0xe3, 0x4c, 0x48, 0x10, 0xb1, 0x29, 0xb2, 0x8b, 0x2d, 0x12, 0x04, 0xc4, - 0xf3, 0x0d, 0x6c, 0x0f, 0x33, 0x2f, 0xf2, 0x06, 0x5b, 0xfe, 0xc2, 0xdb, 0xf1, 0x5d, 0x5c, 0xe3, - 0xc8, 0xaa, 0x6d, 0x6b, 0xfb, 0x70, 0xff, 0x90, 0xa8, 0x18, 0x81, 0xf3, 0x15, 0xc1, 0x39, 0x3b, - 0x10, 0x19, 0x94, 0x76, 0x07, 0xa4, 0x3c, 0xdc, 0xcb, 0x11, 0x38, 0xbf, 0x28, 0x38, 0x91, 0xc0, - 0xca, 0x2d, 0xa5, 0x8c, 0x37, 0x60, 0xfa, 0x36, 0xf1, 0x0e, 0x5c, 0x5f, 0x5c, 0x1c, 0x8c, 0x40, - 0xf7, 0xaa, 0xa0, 0x9b, 0x12, 0x40, 0x76, 0x8d, 0x40, 0xb9, 0x9e, 0x86, 0x5c, 0x13, 0x9b, 0x64, - 0x04, 0x8a, 0x2f, 0x09, 0x8a, 0x09, 0xaa, 0x4f, 0xa1, 0x55, 0x28, 0xb6, 0x5c, 0x51, 0x99, 0x92, - 0xe1, 0xaf, 0x09, 0x78, 0x41, 0x62, 0x04, 0x45, 0xc7, 0xed, 0x74, 0x6d, 0x5a, 0xb6, 0x92, 0x29, - 0x7e, 0x4b, 0x52, 0x48, 0x8c, 0xa0, 0x38, 0x83, 0x5b, 0xbf, 0x2c, 0x29, 0xfc, 0x88, 0x3f, 0x9f, - 0x81, 0x82, 0xeb, 0xd8, 0x47, 0xae, 0x33, 0x8a, 0x11, 0xbf, 0x2d, 0x18, 0x40, 0x40, 0x28, 0xc1, - 0x75, 0xc8, 0x8f, 0xba, 0x11, 0xbf, 0xf3, 0xb6, 0x3c, 0x1e, 0x72, 0x07, 0xd6, 0x60, 0x4a, 0x26, - 0x28, 0xcb, 0x75, 0x46, 0xa0, 0xf8, 0x5d, 0x41, 0x51, 0x8a, 0xc0, 0xc4, 0x32, 0x02, 0xe2, 0x07, - 0x2d, 0x32, 0x0a, 0xc9, 0xeb, 0x72, 0x19, 0x02, 0x22, 0x5c, 0x79, 0x40, 0x1c, 0xf3, 0x70, 0x34, - 0x86, 0xaf, 0x4a, 0x57, 0x4a, 0x0c, 0xa5, 0xa8, 0xc1, 0x64, 0x1b, 0x7b, 0xfe, 0x21, 0xb6, 0x47, - 0xda, 0x8e, 0xdf, 0x13, 0x1c, 0xc5, 0x10, 0x24, 0x3c, 0xd2, 0x75, 0xce, 0x42, 0xf3, 0x35, 0xe9, - 0x91, 0x08, 0x4c, 0x1c, 0x3d, 0x3f, 0x60, 0x77, 0x33, 0x67, 0x61, 0xfb, 0x7d, 0x79, 0xf4, 0x38, - 0x76, 0x33, 0xca, 0x78, 0x1d, 0xf2, 0xbe, 0xf5, 0xd2, 0x48, 0x34, 0x7f, 0x20, 0x77, 0x9a, 0x01, - 0x28, 0xf8, 0x05, 0x38, 0x3f, 0xb4, 0x4c, 0x8c, 0x40, 0xf6, 0x87, 0x82, 0xec, 0xdc, 0x90, 0x52, - 0x21, 0x52, 0xc2, 0x59, 0x29, 0xff, 0x48, 0xa6, 0x04, 0xd2, 0xc7, 0xb5, 0x43, 0x3b, 0x7b, 0x1f, - 0x37, 0xcf, 0xe6, 0xb5, 0x3f, 0x96, 0x5e, 0xe3, 0xd8, 0x98, 0xd7, 0xf6, 0xe0, 0x9c, 0x60, 0x3c, - 0xdb, 0xbe, 0x7e, 0x5d, 0x26, 0x56, 0x8e, 0xde, 0x8f, 0xef, 0xee, 0x27, 0x61, 0x2e, 0x74, 0xa7, - 0x6c, 0x4a, 0x7d, 0xa3, 0x8d, 0x3b, 0x23, 0x30, 0x7f, 0x43, 0x30, 0xcb, 0x8c, 0x1f, 0x76, 0xb5, - 0xfe, 0x26, 0xee, 0x50, 0xf2, 0xe7, 0xa1, 0x2c, 0xc9, 0xbb, 0x8e, 0x47, 0x4c, 0xb7, 0xe5, 0x58, - 0x2f, 0x91, 0xc6, 0x08, 0xd4, 0x7f, 0xd2, 0xb7, 0x55, 0xfb, 0x11, 0x38, 0x65, 0x5e, 0x07, 0x35, - 0xec, 0x55, 0x0c, 0xab, 0xdd, 0x71, 0xbd, 0x20, 0x81, 0xf1, 0x4f, 0xe5, 0x4e, 0x85, 0xb8, 0x75, - 0x06, 0xd3, 0xea, 0x50, 0x62, 0xc3, 0x51, 0x43, 0xf2, 0xcf, 0x04, 0xd1, 0x64, 0x0f, 0x25, 0x12, - 0x87, 0xe9, 0xb6, 0x3b, 0xd8, 0x1b, 0x25, 0xff, 0xfd, 0xb9, 0x4c, 0x1c, 0x02, 0x22, 0x12, 0x47, - 0x70, 0xd4, 0x21, 0xb4, 0xda, 0x8f, 0xc0, 0xf0, 0x4d, 0x99, 0x38, 0x24, 0x46, 0x50, 0xc8, 0x86, - 0x61, 0x04, 0x8a, 0xbf, 0x90, 0x14, 0x12, 0x43, 0x29, 0x3e, 0xd6, 0x2b, 0xb4, 0x1e, 0x69, 0x59, - 0x7e, 0xe0, 0xf1, 0x56, 0xf8, 0x74, 0xaa, 0x6f, 0xbd, 0x1d, 0x6f, 0xc2, 0xf4, 0x08, 0x54, 0xbb, - 0x01, 0x53, 0x7d, 0x2d, 0x06, 0x4a, 0xfa, 0xa2, 0x5f, 0xfe, 0xd4, 0xbb, 0x22, 0x19, 0xc5, 0x3b, - 0x0c, 0x6d, 0x83, 0xee, 0x7b, 0xbc, 0x0f, 0x48, 0x26, 0x7b, 0xf9, 0xdd, 0x70, 0xeb, 0x63, 0x6d, - 0x80, 0xf6, 0x2c, 0x4c, 0xc6, 0x7a, 0x80, 0x64, 0xaa, 0x4f, 0x0b, 0xaa, 0x62, 0xb4, 0x05, 0xd0, - 0xae, 0x40, 0x86, 0xd6, 0xf3, 0x64, 0xf8, 0xcf, 0x09, 0x38, 0x53, 0xd7, 0x3e, 0x0c, 0x39, 0x59, - 0xc7, 0x93, 0xa1, 0x3f, 0x2f, 0xa0, 0x21, 0x84, 0xc2, 0x65, 0x0d, 0x4f, 0x86, 0xff, 0x82, 0x84, - 0x4b, 0x08, 0x85, 0x8f, 0xee, 0xc2, 0x6f, 0x7f, 0x36, 0x23, 0xf2, 0xb0, 0xf4, 0xdd, 0x75, 0x98, - 0x10, 0xc5, 0x3b, 0x19, 0xfd, 0x19, 0xf1, 0x70, 0x89, 0xd0, 0x9e, 0x82, 0xec, 0x88, 0x0e, 0xff, - 0x25, 0x01, 0xe5, 0xfa, 0x5a, 0x0d, 0x0a, 0x91, 0x82, 0x9d, 0x0c, 0xff, 0x65, 0x01, 0x8f, 0xa2, - 0xa8, 0xe9, 0xa2, 0x60, 0x27, 0x13, 0xfc, 0x8a, 0x34, 0x5d, 0x20, 0xa8, 0xdb, 0x64, 0xad, 0x4e, - 0x46, 0xff, 0xaa, 0xf4, 0xba, 0x84, 0x68, 0xcf, 0x40, 0x3e, 0xcc, 0xbf, 0xc9, 0xf8, 0x5f, 0x13, - 0xf8, 0x1e, 0x86, 0x7a, 0x20, 0x92, 0xff, 0x93, 0x29, 0x7e, 0x5d, 0x7a, 0x20, 0x82, 0xa2, 0xc7, - 0xa8, 0xbf, 0xa6, 0x27, 0x33, 0xfd, 0x86, 0x3c, 0x46, 0x7d, 0x25, 0x9d, 0xee, 0x26, 0x4b, 0x83, - 0xc9, 0x14, 0x9f, 0x93, 0xbb, 0xc9, 0xf4, 0xa9, 0x19, 0xfd, 0x45, 0x32, 0x99, 0xe3, 0x37, 0xa5, - 0x19, 0x7d, 0x35, 0x52, 0xdb, 0x01, 0x34, 0x58, 0x20, 0x93, 0xf9, 0x3e, 0x2f, 0xf8, 0xa6, 0x07, - 0xea, 0xa3, 0xf6, 0x1c, 0x9c, 0x1b, 0x5e, 0x1c, 0x93, 0x59, 0xbf, 0xf0, 0x6e, 0xdf, 0xeb, 0x4c, - 0xb4, 0x36, 0x6a, 0x7b, 0xbd, 0x2c, 0x1b, 0x2d, 0x8c, 0xc9, 0xb4, 0xaf, 0xbc, 0x1b, 0x4f, 0xb4, - 0xd1, 0xba, 0xa8, 0x55, 0x01, 0x7a, 0x35, 0x29, 0x99, 0xeb, 0x55, 0xc1, 0x15, 0x01, 0xd1, 0xa3, - 0x21, 0x4a, 0x52, 0x32, 0xfe, 0x4b, 0xf2, 0x68, 0x08, 0x04, 0x3d, 0x1a, 0xb2, 0x1a, 0x25, 0xa3, - 0x5f, 0x93, 0x47, 0x43, 0x42, 0xb4, 0xeb, 0x90, 0x73, 0xba, 0xb6, 0x4d, 0x63, 0x0b, 0x9d, 0xfe, - 0x4f, 0x36, 0xe5, 0x7f, 0x79, 0x4f, 0x80, 0x25, 0x40, 0xbb, 0x02, 0x59, 0xd2, 0x3e, 0x20, 0x8d, - 0x24, 0xe4, 0xbf, 0xbe, 0x27, 0xf3, 0x09, 0xd5, 0xd6, 0x9e, 0x01, 0xe0, 0x2f, 0xd3, 0xec, 0x1b, - 0x4b, 0x02, 0xf6, 0xdf, 0xde, 0x13, 0xdf, 0xef, 0x7b, 0x90, 0x1e, 0x01, 0xff, 0x6f, 0x80, 0xd3, - 0x09, 0xde, 0x8e, 0x13, 0xb0, 0x17, 0xf0, 0xa7, 0x61, 0xe2, 0xa6, 0xef, 0x3a, 0x01, 0x6e, 0x25, - 0xa1, 0xff, 0x5d, 0xa0, 0xa5, 0x3e, 0x75, 0x58, 0xdb, 0xf5, 0x48, 0x80, 0x5b, 0x7e, 0x12, 0xf6, - 0x3f, 0x04, 0x36, 0x04, 0x50, 0xb0, 0x89, 0xfd, 0x60, 0x94, 0x75, 0xff, 0xa7, 0x04, 0x4b, 0x00, - 0x35, 0x9a, 0xfe, 0xbe, 0x45, 0x8e, 0x92, 0xb0, 0xef, 0x48, 0xa3, 0x85, 0xbe, 0xf6, 0x61, 0xc8, - 0xd3, 0x9f, 0xfc, 0x7f, 0x5a, 0x12, 0xc0, 0xff, 0x25, 0xc0, 0x3d, 0x04, 0x7d, 0xb2, 0x1f, 0x34, - 0x02, 0x2b, 0xd9, 0xd9, 0xff, 0x2d, 0x76, 0x5a, 0xea, 0x6b, 0x55, 0x28, 0xf8, 0x41, 0xa3, 0xd1, - 0x15, 0x1d, 0x4d, 0x02, 0xfc, 0x07, 0xef, 0x85, 0x2f, 0xb9, 0x21, 0x66, 0xe5, 0xe2, 0xf0, 0xfb, - 0x3a, 0x58, 0x73, 0xd7, 0x5c, 0x7e, 0x53, 0x07, 0x9f, 0xcb, 0xc2, 0x23, 0xa6, 0xdb, 0x3e, 0x70, - 0xfd, 0x65, 0x9e, 0x50, 0xc2, 0x74, 0xb2, 0x1c, 0xae, 0x42, 0x5e, 0xb7, 0x85, 0x82, 0xb9, 0xb3, - 0x5d, 0xd4, 0x2d, 0xfc, 0x55, 0x1a, 0x72, 0x35, 0xec, 0x07, 0xf8, 0x0e, 0x3e, 0x42, 0x1d, 0x98, - 0xa1, 0xbf, 0x37, 0x71, 0x87, 0x5d, 0xfb, 0x88, 0x73, 0x26, 0xee, 0x42, 0x3f, 0xb0, 0xd4, 0x7b, - 0xaa, 0x44, 0x2c, 0x0d, 0x51, 0x67, 0x9f, 0x5f, 0x57, 0xd4, 0x37, 0xfe, 0xe1, 0xc2, 0xd8, 0x2f, - 0xfe, 0xe3, 0x85, 0xdc, 0xe6, 0xd1, 0x73, 0x96, 0xed, 0xbb, 0x8e, 0x3e, 0x8c, 0x1a, 0x7d, 0x5a, - 0x81, 0x07, 0x86, 0xc8, 0xb7, 0xc4, 0x61, 0x14, 0x5f, 0x14, 0x2e, 0x8f, 0xf8, 0x68, 0x09, 0xe3, - 0x26, 0x14, 0x63, 0x8f, 0x3f, 0xed, 0x31, 0x73, 0x2f, 0x40, 0xf9, 0xa4, 0x95, 0x20, 0x15, 0xd2, - 0xb7, 0xc8, 0x91, 0xf8, 0x07, 0x4a, 0xfa, 0x13, 0x3d, 0xda, 0xfb, 0x07, 0x2c, 0x65, 0xb1, 0x70, - 0x69, 0x3a, 0x62, 0x9d, 0x78, 0x18, 0x9f, 0xd7, 0x52, 0xd7, 0x94, 0x39, 0x0c, 0xf3, 0x49, 0x96, - 0xfe, 0x1f, 0x1f, 0xb1, 0x50, 0x81, 0x71, 0x2e, 0x44, 0xb3, 0x90, 0x5d, 0x77, 0x82, 0xab, 0x97, - 0x19, 0x55, 0x5a, 0xe7, 0x83, 0x95, 0x8d, 0x37, 0xee, 0x55, 0xc6, 0xbe, 0x7b, 0xaf, 0x32, 0xf6, - 0x77, 0xf7, 0x2a, 0x63, 0xdf, 0xbf, 0x57, 0x51, 0xde, 0xba, 0x57, 0x51, 0xde, 0xb9, 0x57, 0x51, - 0x7e, 0x78, 0xaf, 0xa2, 0xdc, 0x3d, 0xae, 0x28, 0x5f, 0x3d, 0xae, 0x28, 0x5f, 0x3f, 0xae, 0x28, - 0xdf, 0x3a, 0xae, 0x28, 0xdf, 0x3e, 0xae, 0x28, 0x6f, 0x1c, 0x57, 0xc6, 0xbe, 0x7b, 0x5c, 0x19, - 0xfb, 0xfe, 0x71, 0x45, 0x79, 0xeb, 0xb8, 0x32, 0xf6, 0xce, 0x71, 0x45, 0xf9, 0xe1, 0x71, 0x45, - 0xb9, 0xfb, 0x4f, 0x95, 0xb1, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x84, 0xd5, 0x55, 0x5e, 0x11, + // 3795 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x29, 0x88, 0x8e, 0x21, 0x8a, 0xb1, + 0x2d, 0xda, 0x4e, 0xc8, 0x8c, 0x2c, 0xc9, 0x32, 0xd4, 0xc4, 0x03, 0x82, 0x10, 0x03, 0x95, 0x24, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0x27, 0xed, 0xf4, 0x3f, 0x33, 0x4d, 0x5c, 0xc7, 0x6d, 0x33, + 0xd3, 0x3a, 0x4d, 0xfa, 0x93, 0xf4, 0x27, 0xcd, 0xf4, 0x29, 0x7d, 0x48, 0xeb, 0xa7, 0x4e, 0xf2, + 0xd6, 0x87, 0x4e, 0x6b, 0x31, 0x9e, 0xa9, 0xdb, 0xba, 0xad, 0xdb, 0x78, 0xa6, 0x99, 0xf1, 0x4b, + 0xe7, 0xfe, 0x2d, 0x76, 0x01, 0x90, 0x0b, 0xa6, 0xe3, 0xf8, 0x89, 0xb8, 0xe7, 0x9e, 0xef, 0xdb, + 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0xb3, 0x77, 0x09, 0x3f, 0xb8, 0x0c, 0x4b, 0x6d, 0xdb, 0x6e, 0x9b, + 0x78, 0xad, 0xeb, 0xd8, 0x9e, 0xbd, 0xdf, 0x6b, 0xad, 0x35, 0xb1, 0xab, 0x3b, 0x46, 0xd7, 0xb3, + 0x9d, 0x55, 0x2a, 0x53, 0x66, 0x98, 0xc6, 0xaa, 0xd0, 0x58, 0xde, 0x86, 0xd9, 0xeb, 0x86, 0x89, + 0x37, 0x7c, 0xc5, 0x06, 0xf6, 0x94, 0xab, 0x90, 0x68, 0x19, 0x26, 0xce, 0x4b, 0x4b, 0xf1, 0x95, + 0xcc, 0xc5, 0x47, 0x57, 0x07, 0x40, 0xab, 0x61, 0x44, 0x9d, 0x88, 0x55, 0x8a, 0x58, 0x7e, 0x33, + 0x01, 0x73, 0x23, 0x66, 0x15, 0x05, 0x12, 0x16, 0xea, 0x10, 0x46, 0x69, 0x25, 0xad, 0xd2, 0xdf, + 0x4a, 0x1e, 0xa6, 0xba, 0x48, 0xbf, 0x83, 0xda, 0x38, 0x1f, 0xa3, 0x62, 0x31, 0x54, 0x0a, 0x00, + 0x4d, 0xdc, 0xc5, 0x56, 0x13, 0x5b, 0xfa, 0x61, 0x3e, 0xbe, 0x14, 0x5f, 0x49, 0xab, 0x01, 0x89, + 0xf2, 0x14, 0xcc, 0x76, 0x7b, 0xfb, 0xa6, 0xa1, 0x6b, 0x01, 0x35, 0x58, 0x8a, 0xaf, 0x24, 0x55, + 0x99, 0x4d, 0x6c, 0xf4, 0x95, 0x2f, 0xc0, 0xcc, 0x3d, 0x8c, 0xee, 0x04, 0x55, 0x33, 0x54, 0x35, + 0x47, 0xc4, 0x01, 0xc5, 0x32, 0x64, 0x3b, 0xd8, 0x75, 0x51, 0x1b, 0x6b, 0xde, 0x61, 0x17, 0xe7, + 0x13, 0x74, 0xf5, 0x4b, 0x43, 0xab, 0x1f, 0x5c, 0x79, 0x86, 0xa3, 0x76, 0x0f, 0xbb, 0x58, 0x29, + 0x41, 0x1a, 0x5b, 0xbd, 0x0e, 0x63, 0x48, 0x1e, 0xe3, 0xbf, 0x8a, 0xd5, 0xeb, 0x0c, 0xb2, 0xa4, + 0x08, 0x8c, 0x53, 0x4c, 0xb9, 0xd8, 0xb9, 0x6b, 0xe8, 0x38, 0x3f, 0x49, 0x09, 0x2e, 0x0c, 0x11, + 0x34, 0xd8, 0xfc, 0x20, 0x87, 0xc0, 0x29, 0x65, 0x48, 0xe3, 0x17, 0x3c, 0x6c, 0xb9, 0x86, 0x6d, + 0xe5, 0xa7, 0x28, 0xc9, 0x63, 0x23, 0x76, 0x11, 0x9b, 0xcd, 0x41, 0x8a, 0x3e, 0x4e, 0xb9, 0x02, + 0x53, 0x76, 0xd7, 0x33, 0x6c, 0xcb, 0xcd, 0xa7, 0x96, 0xa4, 0x95, 0xcc, 0xc5, 0x0f, 0x8d, 0x0c, + 0x84, 0x1a, 0xd3, 0x51, 0x85, 0xb2, 0x52, 0x05, 0xd9, 0xb5, 0x7b, 0x8e, 0x8e, 0x35, 0xdd, 0x6e, + 0x62, 0xcd, 0xb0, 0x5a, 0x76, 0x3e, 0x4d, 0x09, 0xce, 0x0d, 0x2f, 0x84, 0x2a, 0x96, 0xed, 0x26, + 0xae, 0x5a, 0x2d, 0x5b, 0xcd, 0xb9, 0xa1, 0xb1, 0xb2, 0x00, 0x93, 0xee, 0xa1, 0xe5, 0xa1, 0x17, + 0xf2, 0x59, 0x1a, 0x21, 0x7c, 0xb4, 0xfc, 0xbf, 0x49, 0x98, 0x19, 0x27, 0xc4, 0xae, 0x41, 0xb2, + 0x45, 0x56, 0x99, 0x8f, 0x9d, 0xc6, 0x07, 0x0c, 0x13, 0x76, 0xe2, 0xe4, 0x8f, 0xe9, 0xc4, 0x12, + 0x64, 0x2c, 0xec, 0x7a, 0xb8, 0xc9, 0x22, 0x22, 0x3e, 0x66, 0x4c, 0x01, 0x03, 0x0d, 0x87, 0x54, + 0xe2, 0xc7, 0x0a, 0xa9, 0x9b, 0x30, 0xe3, 0x9b, 0xa4, 0x39, 0xc8, 0x6a, 0x8b, 0xd8, 0x5c, 0x8b, + 0xb2, 0x64, 0xb5, 0x22, 0x70, 0x2a, 0x81, 0xa9, 0x39, 0x1c, 0x1a, 0x2b, 0x1b, 0x00, 0xb6, 0x85, + 0xed, 0x96, 0xd6, 0xc4, 0xba, 0x99, 0x4f, 0x1d, 0xe3, 0xa5, 0x1a, 0x51, 0x19, 0xf2, 0x92, 0xcd, + 0xa4, 0xba, 0xa9, 0x3c, 0xdb, 0x0f, 0xb5, 0xa9, 0x63, 0x22, 0x65, 0x9b, 0x1d, 0xb2, 0xa1, 0x68, + 0xdb, 0x83, 0x9c, 0x83, 0x49, 0xdc, 0xe3, 0x26, 0x5f, 0x59, 0x9a, 0x1a, 0xb1, 0x1a, 0xb9, 0x32, + 0x95, 0xc3, 0xd8, 0xc2, 0xa6, 0x9d, 0xe0, 0x50, 0xf9, 0x30, 0xf8, 0x02, 0x8d, 0x86, 0x15, 0xd0, + 0x2c, 0x94, 0x15, 0xc2, 0x1d, 0xd4, 0xc1, 0x8b, 0x57, 0x21, 0x17, 0x76, 0x8f, 0x32, 0x0f, 0x49, + 0xd7, 0x43, 0x8e, 0x47, 0xa3, 0x30, 0xa9, 0xb2, 0x81, 0x22, 0x43, 0x1c, 0x5b, 0x4d, 0x9a, 0xe5, + 0x92, 0x2a, 0xf9, 0xb9, 0xf8, 0x0c, 0x4c, 0x87, 0x1e, 0x3f, 0x2e, 0x70, 0xf9, 0x8b, 0x93, 0x30, + 0x3f, 0x2a, 0xe6, 0x46, 0x86, 0xff, 0x02, 0x4c, 0x5a, 0xbd, 0xce, 0x3e, 0x76, 0xf2, 0x71, 0xca, + 0xc0, 0x47, 0x4a, 0x09, 0x92, 0x26, 0xda, 0xc7, 0x66, 0x3e, 0xb1, 0x24, 0xad, 0xe4, 0x2e, 0x3e, + 0x35, 0x56, 0x54, 0xaf, 0x6e, 0x11, 0x88, 0xca, 0x90, 0xca, 0x27, 0x20, 0xc1, 0x53, 0x1c, 0x61, + 0x78, 0x72, 0x3c, 0x06, 0x12, 0x8b, 0x2a, 0xc5, 0x29, 0x0f, 0x43, 0x9a, 0xfc, 0x65, 0xbe, 0x9d, + 0xa4, 0x36, 0xa7, 0x88, 0x80, 0xf8, 0x55, 0x59, 0x84, 0x14, 0x0d, 0xb3, 0x26, 0x16, 0xa5, 0xc1, + 0x1f, 0x93, 0x8d, 0x69, 0xe2, 0x16, 0xea, 0x99, 0x9e, 0x76, 0x17, 0x99, 0x3d, 0x4c, 0x03, 0x26, + 0xad, 0x66, 0xb9, 0xf0, 0xd3, 0x44, 0xa6, 0x9c, 0x83, 0x0c, 0x8b, 0x4a, 0xc3, 0x6a, 0xe2, 0x17, + 0x68, 0xf6, 0x49, 0xaa, 0x2c, 0x50, 0xab, 0x44, 0x42, 0x1e, 0x7f, 0xdb, 0xb5, 0x2d, 0xb1, 0xb5, + 0xf4, 0x11, 0x44, 0x40, 0x1f, 0xff, 0xcc, 0x60, 0xe2, 0x7b, 0x64, 0xf4, 0xf2, 0x06, 0x63, 0x71, + 0xf9, 0x5b, 0x31, 0x48, 0xd0, 0xf3, 0x36, 0x03, 0x99, 0xdd, 0x5b, 0xf5, 0x8a, 0xb6, 0x51, 0xdb, + 0x5b, 0xdf, 0xaa, 0xc8, 0x92, 0x92, 0x03, 0xa0, 0x82, 0xeb, 0x5b, 0xb5, 0xd2, 0xae, 0x1c, 0xf3, + 0xc7, 0xd5, 0x9d, 0xdd, 0x2b, 0x97, 0xe4, 0xb8, 0x0f, 0xd8, 0x63, 0x82, 0x44, 0x50, 0xe1, 0xe9, + 0x8b, 0x72, 0x52, 0x91, 0x21, 0xcb, 0x08, 0xaa, 0x37, 0x2b, 0x1b, 0x57, 0x2e, 0xc9, 0x93, 0x61, + 0xc9, 0xd3, 0x17, 0xe5, 0x29, 0x65, 0x1a, 0xd2, 0x54, 0xb2, 0x5e, 0xab, 0x6d, 0xc9, 0x29, 0x9f, + 0xb3, 0xb1, 0xab, 0x56, 0x77, 0x36, 0xe5, 0xb4, 0xcf, 0xb9, 0xa9, 0xd6, 0xf6, 0xea, 0x32, 0xf8, + 0x0c, 0xdb, 0x95, 0x46, 0xa3, 0xb4, 0x59, 0x91, 0x33, 0xbe, 0xc6, 0xfa, 0xad, 0xdd, 0x4a, 0x43, + 0xce, 0x86, 0xcc, 0x7a, 0xfa, 0xa2, 0x3c, 0xed, 0x3f, 0xa2, 0xb2, 0xb3, 0xb7, 0x2d, 0xe7, 0x94, + 0x59, 0x98, 0x66, 0x8f, 0x10, 0x46, 0xcc, 0x0c, 0x88, 0xae, 0x5c, 0x92, 0xe5, 0xbe, 0x21, 0x8c, + 0x65, 0x36, 0x24, 0xb8, 0x72, 0x49, 0x56, 0x96, 0xcb, 0x90, 0xa4, 0xd1, 0xa5, 0x28, 0x90, 0xdb, + 0x2a, 0xad, 0x57, 0xb6, 0xb4, 0x5a, 0x7d, 0xb7, 0x5a, 0xdb, 0x29, 0x6d, 0xc9, 0x52, 0x5f, 0xa6, + 0x56, 0x3e, 0xb5, 0x57, 0x55, 0x2b, 0x1b, 0x72, 0x2c, 0x28, 0xab, 0x57, 0x4a, 0xbb, 0x95, 0x0d, + 0x39, 0xbe, 0xac, 0xc3, 0xfc, 0xa8, 0x3c, 0x33, 0xf2, 0x64, 0x04, 0xb6, 0x38, 0x76, 0xcc, 0x16, + 0x53, 0xae, 0xa1, 0x2d, 0xfe, 0x8a, 0x04, 0x73, 0x23, 0x72, 0xed, 0xc8, 0x87, 0x3c, 0x07, 0x49, + 0x16, 0xa2, 0xac, 0xfa, 0x3c, 0x31, 0x32, 0x69, 0xd3, 0x80, 0x1d, 0xaa, 0x40, 0x14, 0x17, 0xac, + 0xc0, 0xf1, 0x63, 0x2a, 0x30, 0xa1, 0x18, 0x32, 0xf2, 0x25, 0x09, 0xf2, 0xc7, 0x71, 0x47, 0x24, + 0x8a, 0x58, 0x28, 0x51, 0x5c, 0x1b, 0x34, 0xe0, 0xfc, 0xf1, 0x6b, 0x18, 0xb2, 0xe2, 0x35, 0x09, + 0x16, 0x46, 0x37, 0x2a, 0x23, 0x6d, 0xf8, 0x04, 0x4c, 0x76, 0xb0, 0x77, 0x60, 0x8b, 0x62, 0xfd, + 0xf8, 0x88, 0x12, 0x40, 0xa6, 0x07, 0x7d, 0xc5, 0x51, 0xc1, 0x1a, 0x12, 0x3f, 0xae, 0xdb, 0x60, + 0xd6, 0x0c, 0x59, 0xfa, 0xf9, 0x18, 0x3c, 0x34, 0x92, 0x7c, 0xa4, 0xa1, 0x8f, 0x00, 0x18, 0x56, + 0xb7, 0xe7, 0xb1, 0x82, 0xcc, 0xf2, 0x53, 0x9a, 0x4a, 0xe8, 0xd9, 0x27, 0xb9, 0xa7, 0xe7, 0xf9, + 0xf3, 0x71, 0x3a, 0x0f, 0x4c, 0x44, 0x15, 0xae, 0xf6, 0x0d, 0x4d, 0x50, 0x43, 0x0b, 0xc7, 0xac, + 0x74, 0xa8, 0xd6, 0x7d, 0x0c, 0x64, 0xdd, 0x34, 0xb0, 0xe5, 0x69, 0xae, 0xe7, 0x60, 0xd4, 0x31, + 0xac, 0x36, 0x4d, 0xc0, 0xa9, 0x62, 0xb2, 0x85, 0x4c, 0x17, 0xab, 0x33, 0x6c, 0xba, 0x21, 0x66, + 0x09, 0x82, 0x56, 0x19, 0x27, 0x80, 0x98, 0x0c, 0x21, 0xd8, 0xb4, 0x8f, 0x58, 0xfe, 0xfa, 0x14, + 0x64, 0x02, 0x6d, 0x9d, 0x72, 0x1e, 0xb2, 0xb7, 0xd1, 0x5d, 0xa4, 0x89, 0x56, 0x9d, 0x79, 0x22, + 0x43, 0x64, 0x75, 0xde, 0xae, 0x7f, 0x0c, 0xe6, 0xa9, 0x8a, 0xdd, 0xf3, 0xb0, 0xa3, 0xe9, 0x26, + 0x72, 0x5d, 0xea, 0xb4, 0x14, 0x55, 0x55, 0xc8, 0x5c, 0x8d, 0x4c, 0x95, 0xc5, 0x8c, 0x72, 0x19, + 0xe6, 0x28, 0xa2, 0xd3, 0x33, 0x3d, 0xa3, 0x6b, 0x62, 0x8d, 0xbc, 0x3c, 0xb8, 0x34, 0x11, 0xfb, + 0x96, 0xcd, 0x12, 0x8d, 0x6d, 0xae, 0x40, 0x2c, 0x72, 0x95, 0x0d, 0x78, 0x84, 0xc2, 0xda, 0xd8, + 0xc2, 0x0e, 0xf2, 0xb0, 0x86, 0x3f, 0xdb, 0x43, 0xa6, 0xab, 0x21, 0xab, 0xa9, 0x1d, 0x20, 0xf7, + 0x20, 0x3f, 0x4f, 0x08, 0xd6, 0x63, 0x79, 0x49, 0x3d, 0x4b, 0x14, 0x37, 0xb9, 0x5e, 0x85, 0xaa, + 0x95, 0xac, 0xe6, 0x27, 0x91, 0x7b, 0xa0, 0x14, 0x61, 0x81, 0xb2, 0xb8, 0x9e, 0x63, 0x58, 0x6d, + 0x4d, 0x3f, 0xc0, 0xfa, 0x1d, 0xad, 0xe7, 0xb5, 0xae, 0xe6, 0x1f, 0x0e, 0x3e, 0x9f, 0x5a, 0xd8, + 0xa0, 0x3a, 0x65, 0xa2, 0xb2, 0xe7, 0xb5, 0xae, 0x2a, 0x0d, 0xc8, 0x92, 0xcd, 0xe8, 0x18, 0x2f, + 0x62, 0xad, 0x65, 0x3b, 0xb4, 0xb2, 0xe4, 0x46, 0x9c, 0xec, 0x80, 0x07, 0x57, 0x6b, 0x1c, 0xb0, + 0x6d, 0x37, 0x71, 0x31, 0xd9, 0xa8, 0x57, 0x2a, 0x1b, 0x6a, 0x46, 0xb0, 0x5c, 0xb7, 0x1d, 0x12, + 0x50, 0x6d, 0xdb, 0x77, 0x70, 0x86, 0x05, 0x54, 0xdb, 0x16, 0xee, 0xbd, 0x0c, 0x73, 0xba, 0xce, + 0xd6, 0x6c, 0xe8, 0x1a, 0x6f, 0xf1, 0xdd, 0xbc, 0x1c, 0x72, 0x96, 0xae, 0x6f, 0x32, 0x05, 0x1e, + 0xe3, 0xae, 0xf2, 0x2c, 0x3c, 0xd4, 0x77, 0x56, 0x10, 0x38, 0x3b, 0xb4, 0xca, 0x41, 0xe8, 0x65, + 0x98, 0xeb, 0x1e, 0x0e, 0x03, 0x95, 0xd0, 0x13, 0xbb, 0x87, 0x83, 0xb0, 0xc7, 0xe8, 0x6b, 0x9b, + 0x83, 0x75, 0xe4, 0xe1, 0x66, 0xfe, 0x4c, 0x50, 0x3b, 0x30, 0xa1, 0xac, 0x81, 0xac, 0xeb, 0x1a, + 0xb6, 0xd0, 0xbe, 0x89, 0x35, 0xe4, 0x60, 0x0b, 0xb9, 0xf9, 0x73, 0x41, 0xe5, 0x9c, 0xae, 0x57, + 0xe8, 0x6c, 0x89, 0x4e, 0x2a, 0x4f, 0xc2, 0xac, 0xbd, 0x7f, 0x5b, 0x67, 0x91, 0xa5, 0x75, 0x1d, + 0xdc, 0x32, 0x5e, 0xc8, 0x3f, 0x4a, 0xdd, 0x34, 0x43, 0x26, 0x68, 0x5c, 0xd5, 0xa9, 0x58, 0x79, + 0x02, 0x64, 0xdd, 0x3d, 0x40, 0x4e, 0x97, 0x96, 0x76, 0xb7, 0x8b, 0x74, 0x9c, 0x7f, 0x8c, 0xa9, + 0x32, 0xf9, 0x8e, 0x10, 0x93, 0xc8, 0x76, 0xef, 0x19, 0x2d, 0x4f, 0x30, 0x5e, 0x60, 0x91, 0x4d, + 0x65, 0x9c, 0xed, 0x26, 0xcc, 0xf7, 0x2c, 0xc3, 0xf2, 0xb0, 0xd3, 0x75, 0x30, 0x69, 0xe2, 0xd9, + 0x49, 0xcc, 0xff, 0xcb, 0xd4, 0x31, 0x6d, 0xf8, 0x5e, 0x50, 0x9b, 0x05, 0x80, 0x3a, 0xd7, 0x1b, + 0x16, 0x2e, 0x17, 0x21, 0x1b, 0x8c, 0x0b, 0x25, 0x0d, 0x2c, 0x32, 0x64, 0x89, 0xd4, 0xd8, 0x72, + 0x6d, 0x83, 0x54, 0xc7, 0xcf, 0x54, 0xe4, 0x18, 0xa9, 0xd2, 0x5b, 0xd5, 0xdd, 0x8a, 0xa6, 0xee, + 0xed, 0xec, 0x56, 0xb7, 0x2b, 0x72, 0xfc, 0xc9, 0x74, 0xea, 0xad, 0x29, 0xf9, 0xfe, 0xfd, 0xfb, + 0xf7, 0x63, 0xcb, 0xdf, 0x8d, 0x41, 0x2e, 0xdc, 0x19, 0x2b, 0x3f, 0x05, 0x67, 0xc4, 0x6b, 0xac, + 0x8b, 0x3d, 0xed, 0x9e, 0xe1, 0xd0, 0x50, 0xed, 0x20, 0xd6, 0x5b, 0xfa, 0x5e, 0x9e, 0xe7, 0x5a, + 0x0d, 0xec, 0x3d, 0x6f, 0x38, 0x24, 0x10, 0x3b, 0xc8, 0x53, 0xb6, 0xe0, 0x9c, 0x65, 0x6b, 0xae, + 0x87, 0xac, 0x26, 0x72, 0x9a, 0x5a, 0xff, 0x02, 0x41, 0x43, 0xba, 0x8e, 0x5d, 0xd7, 0x66, 0x25, + 0xc2, 0x67, 0xf9, 0x90, 0x65, 0x37, 0xb8, 0x72, 0x3f, 0x77, 0x96, 0xb8, 0xea, 0x40, 0x44, 0xc4, + 0x8f, 0x8b, 0x88, 0x87, 0x21, 0xdd, 0x41, 0x5d, 0x0d, 0x5b, 0x9e, 0x73, 0x48, 0xfb, 0xb9, 0x94, + 0x9a, 0xea, 0xa0, 0x6e, 0x85, 0x8c, 0xdf, 0xbf, 0x3d, 0x08, 0xfa, 0xf1, 0x1f, 0xe3, 0x90, 0x0d, + 0xf6, 0x74, 0xa4, 0x45, 0xd6, 0x69, 0xfe, 0x96, 0xe8, 0x09, 0xff, 0xf0, 0x89, 0x1d, 0xe0, 0x6a, + 0x99, 0x24, 0xf6, 0xe2, 0x24, 0xeb, 0xb4, 0x54, 0x86, 0x24, 0x45, 0x95, 0x9c, 0x69, 0xcc, 0xfa, + 0xf7, 0x94, 0xca, 0x47, 0xca, 0x26, 0x4c, 0xde, 0x76, 0x29, 0xf7, 0x24, 0xe5, 0x7e, 0xf4, 0x64, + 0xee, 0x1b, 0x0d, 0x4a, 0x9e, 0xbe, 0xd1, 0xd0, 0x76, 0x6a, 0xea, 0x76, 0x69, 0x4b, 0xe5, 0x70, + 0xe5, 0x2c, 0x24, 0x4c, 0xf4, 0xe2, 0x61, 0xb8, 0x04, 0x50, 0xd1, 0xb8, 0x8e, 0x3f, 0x0b, 0x89, + 0x7b, 0x18, 0xdd, 0x09, 0x27, 0x5e, 0x2a, 0x7a, 0x1f, 0x43, 0x7f, 0x0d, 0x92, 0xd4, 0x5f, 0x0a, + 0x00, 0xf7, 0x98, 0x3c, 0xa1, 0xa4, 0x20, 0x51, 0xae, 0xa9, 0x24, 0xfc, 0x65, 0xc8, 0x32, 0xa9, + 0x56, 0xaf, 0x56, 0xca, 0x15, 0x39, 0xb6, 0x7c, 0x19, 0x26, 0x99, 0x13, 0xc8, 0xd1, 0xf0, 0xdd, + 0x20, 0x4f, 0xf0, 0x21, 0xe7, 0x90, 0xc4, 0xec, 0xde, 0xf6, 0x7a, 0x45, 0x95, 0x63, 0xc1, 0xed, + 0x75, 0x21, 0x1b, 0x6c, 0xe7, 0x7e, 0x32, 0x31, 0xf5, 0xd7, 0x12, 0x64, 0x02, 0xed, 0x19, 0x69, + 0x0c, 0x90, 0x69, 0xda, 0xf7, 0x34, 0x64, 0x1a, 0xc8, 0xe5, 0x41, 0x01, 0x54, 0x54, 0x22, 0x92, + 0x71, 0x37, 0xed, 0x27, 0x62, 0xfc, 0xab, 0x12, 0xc8, 0x83, 0xad, 0xdd, 0x80, 0x81, 0xd2, 0x07, + 0x6a, 0xe0, 0x2b, 0x12, 0xe4, 0xc2, 0xfd, 0xdc, 0x80, 0x79, 0xe7, 0x3f, 0x50, 0xf3, 0xde, 0x88, + 0xc1, 0x74, 0xa8, 0x8b, 0x1b, 0xd7, 0xba, 0xcf, 0xc2, 0xac, 0xd1, 0xc4, 0x9d, 0xae, 0xed, 0x61, + 0x4b, 0x3f, 0xd4, 0x4c, 0x7c, 0x17, 0x9b, 0xf9, 0x65, 0x9a, 0x28, 0xd6, 0x4e, 0xee, 0x13, 0x57, + 0xab, 0x7d, 0xdc, 0x16, 0x81, 0x15, 0xe7, 0xaa, 0x1b, 0x95, 0xed, 0x7a, 0x6d, 0xb7, 0xb2, 0x53, + 0xbe, 0xa5, 0xed, 0xed, 0xfc, 0xf4, 0x4e, 0xed, 0xf9, 0x1d, 0x55, 0x36, 0x06, 0xd4, 0xde, 0xc7, + 0xa3, 0x5e, 0x07, 0x79, 0xd0, 0x28, 0xe5, 0x0c, 0x8c, 0x32, 0x4b, 0x9e, 0x50, 0xe6, 0x60, 0x66, + 0xa7, 0xa6, 0x35, 0xaa, 0x1b, 0x15, 0xad, 0x72, 0xfd, 0x7a, 0xa5, 0xbc, 0xdb, 0x60, 0x2f, 0xce, + 0xbe, 0xf6, 0x6e, 0xf8, 0x50, 0xbf, 0x1c, 0x87, 0xb9, 0x11, 0x96, 0x28, 0x25, 0xde, 0xb3, 0xb3, + 0xd7, 0x88, 0x8f, 0x8e, 0x63, 0xfd, 0x2a, 0xe9, 0x0a, 0xea, 0xc8, 0xf1, 0x78, 0x8b, 0xff, 0x04, + 0x10, 0x2f, 0x59, 0x9e, 0xd1, 0x32, 0xb0, 0xc3, 0xef, 0x19, 0x58, 0x23, 0x3f, 0xd3, 0x97, 0xb3, + 0xab, 0x86, 0x8f, 0x80, 0xd2, 0xb5, 0x5d, 0xc3, 0x33, 0xee, 0x62, 0xcd, 0xb0, 0xc4, 0xa5, 0x04, + 0x69, 0xec, 0x13, 0xaa, 0x2c, 0x66, 0xaa, 0x96, 0xe7, 0x6b, 0x5b, 0xb8, 0x8d, 0x06, 0xb4, 0x49, + 0x02, 0x8f, 0xab, 0xb2, 0x98, 0xf1, 0xb5, 0xcf, 0x43, 0xb6, 0x69, 0xf7, 0x48, 0x9b, 0xc4, 0xf4, + 0x48, 0xbd, 0x90, 0xd4, 0x0c, 0x93, 0xf9, 0x2a, 0xbc, 0x8f, 0xed, 0xdf, 0x86, 0x64, 0xd5, 0x0c, + 0x93, 0x31, 0x95, 0x0b, 0x30, 0x83, 0xda, 0x6d, 0x87, 0x90, 0x0b, 0x22, 0xd6, 0x99, 0xe7, 0x7c, + 0x31, 0x55, 0x5c, 0xbc, 0x01, 0x29, 0xe1, 0x07, 0x52, 0x92, 0x89, 0x27, 0xb4, 0x2e, 0xbb, 0x93, + 0x8a, 0xad, 0xa4, 0xd5, 0x94, 0x25, 0x26, 0xcf, 0x43, 0xd6, 0x70, 0xb5, 0xfe, 0xe5, 0x68, 0x6c, + 0x29, 0xb6, 0x92, 0x52, 0x33, 0x86, 0xeb, 0xdf, 0x86, 0x2d, 0xbf, 0x16, 0x83, 0x5c, 0xf8, 0x72, + 0x57, 0xd9, 0x80, 0x94, 0x69, 0xeb, 0x88, 0x86, 0x16, 0xfb, 0xb2, 0xb0, 0x12, 0x71, 0x1f, 0xbc, + 0xba, 0xc5, 0xf5, 0x55, 0x1f, 0xb9, 0xf8, 0xf7, 0x12, 0xa4, 0x84, 0x58, 0x59, 0x80, 0x44, 0x17, + 0x79, 0x07, 0x94, 0x2e, 0xb9, 0x1e, 0x93, 0x25, 0x95, 0x8e, 0x89, 0xdc, 0xed, 0x22, 0x8b, 0x86, + 0x00, 0x97, 0x93, 0x31, 0xd9, 0x57, 0x13, 0xa3, 0x26, 0x6d, 0xfb, 0xed, 0x4e, 0x07, 0x5b, 0x9e, + 0x2b, 0xf6, 0x95, 0xcb, 0xcb, 0x5c, 0xac, 0x3c, 0x05, 0xb3, 0x9e, 0x83, 0x0c, 0x33, 0xa4, 0x9b, + 0xa0, 0xba, 0xb2, 0x98, 0xf0, 0x95, 0x8b, 0x70, 0x56, 0xf0, 0x36, 0xb1, 0x87, 0xf4, 0x03, 0xdc, + 0xec, 0x83, 0x26, 0xe9, 0xcd, 0xe1, 0x19, 0xae, 0xb0, 0xc1, 0xe7, 0x05, 0x76, 0xf9, 0xfb, 0x12, + 0xcc, 0x8a, 0x17, 0x95, 0xa6, 0xef, 0xac, 0x6d, 0x00, 0x64, 0x59, 0xb6, 0x17, 0x74, 0xd7, 0x70, + 0x28, 0x0f, 0xe1, 0x56, 0x4b, 0x3e, 0x48, 0x0d, 0x10, 0x2c, 0x76, 0x00, 0xfa, 0x33, 0xc7, 0xba, + 0xed, 0x1c, 0x64, 0xf8, 0xcd, 0x3d, 0xfd, 0xfc, 0xc3, 0x5e, 0x6d, 0x81, 0x89, 0xc8, 0x1b, 0x8d, + 0x32, 0x0f, 0xc9, 0x7d, 0xdc, 0x36, 0x2c, 0x7e, 0x9f, 0xc8, 0x06, 0xe2, 0x96, 0x32, 0xe1, 0xdf, + 0x52, 0xae, 0xdf, 0x84, 0x39, 0xdd, 0xee, 0x0c, 0x9a, 0xbb, 0x2e, 0x0f, 0xbc, 0x5e, 0xbb, 0x9f, + 0x94, 0x3e, 0x03, 0xfd, 0x16, 0xf3, 0x2b, 0xb1, 0xf8, 0x66, 0x7d, 0xfd, 0x6b, 0xb1, 0xc5, 0x4d, + 0x86, 0xab, 0x8b, 0x65, 0xaa, 0xb8, 0x65, 0x62, 0x9d, 0x98, 0x0e, 0x3f, 0x7c, 0x1c, 0x3e, 0xda, + 0x36, 0xbc, 0x83, 0xde, 0xfe, 0xaa, 0x6e, 0x77, 0xd6, 0xda, 0x76, 0xdb, 0xee, 0x7f, 0xee, 0x22, + 0x23, 0x3a, 0xa0, 0xbf, 0xf8, 0x27, 0xaf, 0xb4, 0x2f, 0x5d, 0x8c, 0xfc, 0x3e, 0x56, 0xdc, 0x81, + 0x39, 0xae, 0xac, 0xd1, 0x3b, 0x77, 0xf6, 0x6a, 0xa0, 0x9c, 0x78, 0xef, 0x92, 0xff, 0xe6, 0x9b, + 0xb4, 0x56, 0xab, 0xb3, 0x1c, 0x4a, 0xe6, 0xd8, 0x0b, 0x44, 0x51, 0x85, 0x87, 0x42, 0x7c, 0xec, + 0x5c, 0x62, 0x27, 0x82, 0xf1, 0xbb, 0x9c, 0x71, 0x2e, 0xc0, 0xd8, 0xe0, 0xd0, 0x62, 0x19, 0xa6, + 0x4f, 0xc3, 0xf5, 0xb7, 0x9c, 0x2b, 0x8b, 0x83, 0x24, 0x9b, 0x30, 0x43, 0x49, 0xf4, 0x9e, 0xeb, + 0xd9, 0x1d, 0x9a, 0xf4, 0x4e, 0xa6, 0xf9, 0xbb, 0x37, 0xd9, 0x41, 0xc9, 0x11, 0x58, 0xd9, 0x47, + 0x15, 0x8b, 0x40, 0x3f, 0x33, 0x34, 0xb1, 0x6e, 0x46, 0x30, 0xbc, 0xce, 0x0d, 0xf1, 0xf5, 0x8b, + 0x9f, 0x86, 0x79, 0xf2, 0x9b, 0xe6, 0xa4, 0xa0, 0x25, 0xd1, 0xb7, 0x4c, 0xf9, 0xef, 0xbf, 0xc4, + 0xce, 0xe2, 0x9c, 0x4f, 0x10, 0xb0, 0x29, 0xb0, 0x8b, 0x6d, 0xec, 0x79, 0xd8, 0x71, 0x35, 0x64, + 0x8e, 0x32, 0x2f, 0xf0, 0x9a, 0x9e, 0xff, 0xd2, 0xdb, 0xe1, 0x5d, 0xdc, 0x64, 0xc8, 0x92, 0x69, + 0x16, 0xf7, 0xe0, 0xcc, 0x88, 0xa8, 0x18, 0x83, 0xf3, 0x65, 0xce, 0x39, 0x3f, 0x14, 0x19, 0x84, + 0xb6, 0x0e, 0x42, 0xee, 0xef, 0xe5, 0x18, 0x9c, 0xbf, 0xcd, 0x39, 0x15, 0x8e, 0x15, 0x5b, 0x4a, + 0x18, 0x6f, 0xc0, 0xec, 0x5d, 0xec, 0xec, 0xdb, 0x2e, 0xbf, 0x1a, 0x19, 0x83, 0xee, 0x15, 0x4e, + 0x37, 0xc3, 0x81, 0xf4, 0xae, 0x84, 0x70, 0x3d, 0x0b, 0xa9, 0x16, 0xd2, 0xf1, 0x18, 0x14, 0x5f, + 0xe6, 0x14, 0x53, 0x44, 0x9f, 0x40, 0x4b, 0x90, 0x6d, 0xdb, 0xbc, 0x2c, 0x45, 0xc3, 0x5f, 0xe5, + 0xf0, 0x8c, 0xc0, 0x70, 0x8a, 0xae, 0xdd, 0xed, 0x99, 0xa4, 0x66, 0x45, 0x53, 0xfc, 0x8e, 0xa0, + 0x10, 0x18, 0x4e, 0x71, 0x0a, 0xb7, 0xfe, 0xae, 0xa0, 0x70, 0x03, 0xfe, 0x7c, 0x0e, 0x32, 0xb6, + 0x65, 0x1e, 0xda, 0xd6, 0x38, 0x46, 0xfc, 0x1e, 0x67, 0x00, 0x0e, 0x21, 0x04, 0xd7, 0x20, 0x3d, + 0xee, 0x46, 0xfc, 0xfe, 0xdb, 0xe2, 0x78, 0x88, 0x1d, 0xd8, 0x84, 0x19, 0x91, 0xa0, 0x0c, 0xdb, + 0x1a, 0x83, 0xe2, 0x0f, 0x38, 0x45, 0x2e, 0x00, 0xe3, 0xcb, 0xf0, 0xb0, 0xeb, 0xb5, 0xf1, 0x38, + 0x24, 0xaf, 0x89, 0x65, 0x70, 0x08, 0x77, 0xe5, 0x3e, 0xb6, 0xf4, 0x83, 0xf1, 0x18, 0xbe, 0x2a, + 0x5c, 0x29, 0x30, 0x84, 0xa2, 0x0c, 0xd3, 0x1d, 0xe4, 0xb8, 0x07, 0xc8, 0x1c, 0x6b, 0x3b, 0xfe, + 0x90, 0x73, 0x64, 0x7d, 0x10, 0xf7, 0x48, 0xcf, 0x3a, 0x0d, 0xcd, 0xd7, 0x84, 0x47, 0x02, 0x30, + 0x7e, 0xf4, 0x5c, 0x8f, 0x5e, 0x40, 0x9d, 0x86, 0xed, 0xeb, 0xe2, 0xe8, 0x31, 0xec, 0x76, 0x90, + 0xf1, 0x1a, 0xa4, 0x5d, 0xe3, 0xc5, 0xb1, 0x68, 0xfe, 0x48, 0xec, 0x34, 0x05, 0x10, 0xf0, 0x2d, + 0x38, 0x3b, 0xb2, 0x4c, 0x8c, 0x41, 0xf6, 0xc7, 0x9c, 0x6c, 0x61, 0x44, 0xa9, 0xe0, 0x29, 0xe1, + 0xb4, 0x94, 0x7f, 0x22, 0x52, 0x02, 0x1e, 0xe0, 0xaa, 0x93, 0x17, 0x05, 0x17, 0xb5, 0x4e, 0xe7, + 0xb5, 0x3f, 0x15, 0x5e, 0x63, 0xd8, 0x90, 0xd7, 0x76, 0x61, 0x81, 0x33, 0x9e, 0x6e, 0x5f, 0xbf, + 0x21, 0x12, 0x2b, 0x43, 0xef, 0x85, 0x77, 0xf7, 0x67, 0x60, 0xd1, 0x77, 0xa7, 0xe8, 0x48, 0x5d, + 0xad, 0x83, 0xba, 0x63, 0x30, 0x7f, 0x93, 0x33, 0x8b, 0x8c, 0xef, 0xb7, 0xb4, 0xee, 0x36, 0xea, + 0x12, 0xf2, 0x9b, 0x90, 0x17, 0xe4, 0x3d, 0xcb, 0xc1, 0xba, 0xdd, 0xb6, 0x8c, 0x17, 0x71, 0x73, + 0x0c, 0xea, 0x3f, 0x1b, 0xd8, 0xaa, 0xbd, 0x00, 0x9c, 0x30, 0x57, 0x41, 0xf6, 0x7b, 0x15, 0xcd, + 0xe8, 0x74, 0x6d, 0xc7, 0x8b, 0x60, 0xfc, 0x73, 0xb1, 0x53, 0x3e, 0xae, 0x4a, 0x61, 0xc5, 0x0a, + 0xe4, 0xe8, 0x70, 0xdc, 0x90, 0xfc, 0x0b, 0x4e, 0x34, 0xdd, 0x47, 0xf1, 0xc4, 0xa1, 0xdb, 0x9d, + 0x2e, 0x72, 0xc6, 0xc9, 0x7f, 0x7f, 0x29, 0x12, 0x07, 0x87, 0xf0, 0xc4, 0xe1, 0x1d, 0x76, 0x31, + 0xa9, 0xf6, 0x63, 0x30, 0x7c, 0x4b, 0x24, 0x0e, 0x81, 0xe1, 0x14, 0xa2, 0x61, 0x18, 0x83, 0xe2, + 0xaf, 0x04, 0x85, 0xc0, 0x10, 0x8a, 0x4f, 0xf5, 0x0b, 0xad, 0x83, 0xdb, 0x86, 0xeb, 0x39, 0xac, + 0x0f, 0x3e, 0x99, 0xea, 0xdb, 0x6f, 0x87, 0x9b, 0x30, 0x35, 0x00, 0x2d, 0xde, 0x80, 0x99, 0x81, + 0x16, 0x43, 0x89, 0xfa, 0x9f, 0x85, 0xfc, 0xcf, 0xbe, 0xcb, 0x93, 0x51, 0xb8, 0xc3, 0x28, 0x6e, + 0x91, 0x7d, 0x0f, 0xf7, 0x01, 0xd1, 0x64, 0x2f, 0xbd, 0xeb, 0x6f, 0x7d, 0xa8, 0x0d, 0x28, 0x5e, + 0x87, 0xe9, 0x50, 0x0f, 0x10, 0x4d, 0xf5, 0x39, 0x4e, 0x95, 0x0d, 0xb6, 0x00, 0xc5, 0xcb, 0x90, + 0x20, 0xf5, 0x3c, 0x1a, 0xfe, 0x73, 0x1c, 0x4e, 0xd5, 0x8b, 0x1f, 0x87, 0x94, 0xa8, 0xe3, 0xd1, + 0xd0, 0x9f, 0xe7, 0x50, 0x1f, 0x42, 0xe0, 0xa2, 0x86, 0x47, 0xc3, 0x7f, 0x41, 0xc0, 0x05, 0x84, + 0xc0, 0xc7, 0x77, 0xe1, 0x77, 0x7e, 0x29, 0xc1, 0xf3, 0xb0, 0xf0, 0xdd, 0x35, 0x98, 0xe2, 0xc5, + 0x3b, 0x1a, 0xfd, 0x79, 0xfe, 0x70, 0x81, 0x28, 0x3e, 0x03, 0xc9, 0x31, 0x1d, 0xfe, 0xcb, 0x1c, + 0xca, 0xf4, 0x8b, 0x65, 0xc8, 0x04, 0x0a, 0x76, 0x34, 0xfc, 0x57, 0x38, 0x3c, 0x88, 0x22, 0xa6, + 0xf3, 0x82, 0x1d, 0x4d, 0xf0, 0xab, 0xc2, 0x74, 0x8e, 0x20, 0x6e, 0x13, 0xb5, 0x3a, 0x1a, 0xfd, + 0x6b, 0xc2, 0xeb, 0x02, 0x52, 0x7c, 0x0e, 0xd2, 0x7e, 0xfe, 0x8d, 0xc6, 0xff, 0x3a, 0xc7, 0xf7, + 0x31, 0xc4, 0x03, 0x81, 0xfc, 0x1f, 0x4d, 0xf1, 0x1b, 0xc2, 0x03, 0x01, 0x14, 0x39, 0x46, 0x83, + 0x35, 0x3d, 0x9a, 0xe9, 0x37, 0xc5, 0x31, 0x1a, 0x28, 0xe9, 0x64, 0x37, 0x69, 0x1a, 0x8c, 0xa6, + 0xf8, 0x82, 0xd8, 0x4d, 0xaa, 0x4f, 0xcc, 0x18, 0x2c, 0x92, 0xd1, 0x1c, 0xbf, 0x25, 0xcc, 0x18, + 0xa8, 0x91, 0xc5, 0x3a, 0x28, 0xc3, 0x05, 0x32, 0x9a, 0xef, 0x8b, 0x9c, 0x6f, 0x76, 0xa8, 0x3e, + 0x16, 0x9f, 0x87, 0x85, 0xd1, 0xc5, 0x31, 0x9a, 0xf5, 0x4b, 0xef, 0x0e, 0xbc, 0xce, 0x04, 0x6b, + 0x63, 0x71, 0xb7, 0x9f, 0x65, 0x83, 0x85, 0x31, 0x9a, 0xf6, 0xe5, 0x77, 0xc3, 0x89, 0x36, 0x58, + 0x17, 0x8b, 0x25, 0x80, 0x7e, 0x4d, 0x8a, 0xe6, 0x7a, 0x85, 0x73, 0x05, 0x40, 0xe4, 0x68, 0xf0, + 0x92, 0x14, 0x8d, 0xff, 0xb2, 0x38, 0x1a, 0x1c, 0x41, 0x8e, 0x86, 0xa8, 0x46, 0xd1, 0xe8, 0x57, + 0xc5, 0xd1, 0x10, 0x90, 0xe2, 0x35, 0x48, 0x59, 0x3d, 0xd3, 0x24, 0xb1, 0xa5, 0x9c, 0xfc, 0x6f, + 0x44, 0xf9, 0x7f, 0x7d, 0x8f, 0x83, 0x05, 0xa0, 0x78, 0x19, 0x92, 0xb8, 0xb3, 0x8f, 0x9b, 0x51, + 0xc8, 0x7f, 0x7b, 0x4f, 0xe4, 0x13, 0xa2, 0x5d, 0x7c, 0x0e, 0x80, 0xbd, 0x4c, 0xd3, 0xaf, 0x44, + 0x11, 0xd8, 0x7f, 0x7f, 0x8f, 0xff, 0x87, 0x42, 0x1f, 0xd2, 0x27, 0x60, 0xff, 0xef, 0x70, 0x32, + 0xc1, 0xdb, 0x61, 0x02, 0xfa, 0x02, 0xfe, 0x2c, 0x4c, 0xdd, 0x76, 0x6d, 0xcb, 0x43, 0xed, 0x28, + 0xf4, 0x7f, 0x70, 0xb4, 0xd0, 0x27, 0x0e, 0xeb, 0xd8, 0x0e, 0xf6, 0x50, 0xdb, 0x8d, 0xc2, 0xfe, + 0x27, 0xc7, 0xfa, 0x00, 0x02, 0xd6, 0x91, 0xeb, 0x8d, 0xb3, 0xee, 0xff, 0x12, 0x60, 0x01, 0x20, + 0x46, 0x93, 0xdf, 0x77, 0xf0, 0x61, 0x14, 0xf6, 0x1d, 0x61, 0x34, 0xd7, 0x2f, 0x7e, 0x1c, 0xd2, + 0xe4, 0x27, 0xfb, 0xaf, 0x9d, 0x08, 0xf0, 0x7f, 0x73, 0x70, 0x1f, 0x41, 0x9e, 0xec, 0x7a, 0x4d, + 0xcf, 0x88, 0x76, 0xf6, 0xff, 0xf0, 0x9d, 0x16, 0xfa, 0xc5, 0x12, 0x64, 0x5c, 0xaf, 0xd9, 0xec, + 0xf1, 0x8e, 0x26, 0x02, 0xfe, 0xc3, 0xf7, 0xfc, 0x97, 0x5c, 0x1f, 0xb3, 0x7e, 0x7e, 0xf4, 0x65, + 0x1d, 0x6c, 0xda, 0x9b, 0x36, 0xbb, 0xa6, 0x83, 0x2f, 0x24, 0xe1, 0x71, 0xdd, 0xee, 0xec, 0xdb, + 0xee, 0x1a, 0x4b, 0x28, 0x7e, 0x3a, 0x59, 0xf3, 0x57, 0x21, 0xae, 0xdb, 0x7c, 0xc1, 0xe2, 0xe9, + 0x2e, 0xea, 0x96, 0xff, 0x26, 0x0e, 0xa9, 0x32, 0x72, 0x3d, 0x74, 0x0f, 0x1d, 0x2a, 0x5d, 0x98, + 0x23, 0xbf, 0xb7, 0x51, 0x97, 0x5e, 0xfb, 0xf0, 0x73, 0xc6, 0x2f, 0x42, 0x3f, 0xb2, 0xda, 0x7f, + 0xaa, 0x40, 0xac, 0x8e, 0x50, 0xa7, 0x1f, 0x90, 0xd7, 0xe5, 0xd7, 0xff, 0xe9, 0xdc, 0xc4, 0x2f, + 0xfe, 0xf3, 0xb9, 0xd4, 0xf6, 0xe1, 0xf3, 0x86, 0xe9, 0xda, 0x96, 0x3a, 0x8a, 0x5a, 0xf9, 0x9c, + 0x04, 0x0f, 0x8f, 0x90, 0xef, 0xf0, 0xc3, 0xc8, 0x3f, 0x27, 0x5c, 0x1a, 0xf3, 0xd1, 0x02, 0xc6, + 0x4c, 0xc8, 0x86, 0x1e, 0x7f, 0xd2, 0x63, 0x16, 0x6f, 0x41, 0xfe, 0xb8, 0x95, 0x28, 0x32, 0xc4, + 0xef, 0xe0, 0x43, 0xfe, 0x2f, 0xa2, 0xe4, 0xa7, 0x72, 0xa1, 0xff, 0x2f, 0x66, 0xd2, 0x4a, 0xe6, + 0xe2, 0x6c, 0xc0, 0x3a, 0xfe, 0x30, 0x36, 0x5f, 0x8c, 0x5d, 0x95, 0x16, 0x11, 0x2c, 0x45, 0x59, + 0xfa, 0xff, 0x7c, 0xc4, 0x72, 0x01, 0x26, 0x99, 0x50, 0x99, 0x87, 0x64, 0xd5, 0xf2, 0xae, 0x5c, + 0xa2, 0x54, 0x71, 0x95, 0x0d, 0xd6, 0xb7, 0x5e, 0x7f, 0x50, 0x98, 0xf8, 0xde, 0x83, 0xc2, 0xc4, + 0x3f, 0x3c, 0x28, 0x4c, 0xbc, 0xf1, 0xa0, 0x20, 0xbd, 0xf5, 0xa0, 0x20, 0xbd, 0xf3, 0xa0, 0x20, + 0xfd, 0xe8, 0x41, 0x41, 0xba, 0x7f, 0x54, 0x90, 0xbe, 0x7a, 0x54, 0x90, 0xbe, 0x71, 0x54, 0x90, + 0xbe, 0x7d, 0x54, 0x90, 0xbe, 0x73, 0x54, 0x90, 0x5e, 0x3f, 0x2a, 0x4c, 0x7c, 0xef, 0xa8, 0x30, + 0xf1, 0xc6, 0x51, 0x41, 0x7a, 0xeb, 0xa8, 0x30, 0xf1, 0xce, 0x51, 0x41, 0xfa, 0xd1, 0x51, 0x41, + 0xba, 0xff, 0x83, 0xc2, 0xc4, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x13, 0x7f, 0x35, 0xf4, 0xf3, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) diff --git a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeunmarshaler/castvalue.pb.go b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeunmarshaler/castvalue.pb.go index eea414719..8c7051345 100644 --- a/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeunmarshaler/castvalue.pb.go +++ b/vendor/github.com/gogo/protobuf/test/castvalue/combos/unsafeunmarshaler/castvalue.pb.go @@ -74,237 +74,244 @@ func (this *Wilson) Description() (desc *github_com_gogo_protobuf_protoc_gen_gog func CastvalueDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3683 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xd6, 0xf0, 0x47, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0xb9, 0x72, 0xcc, 0xd5, 0x2a, - 0x76, 0x2c, 0xdb, 0x89, 0x14, 0xac, 0x77, 0xd7, 0xeb, 0xd9, 0x26, 0x06, 0x45, 0xd1, 0x8a, 0x16, - 0xfa, 0xcb, 0x48, 0x8a, 0xed, 0xe4, 0x61, 0x70, 0x35, 0xbc, 0xa4, 0x66, 0x77, 0x38, 0xc3, 0xce, - 0x0c, 0x77, 0x2d, 0x3f, 0x6d, 0xe0, 0xb4, 0x45, 0x1a, 0xf4, 0xbf, 0x68, 0x13, 0xc7, 0x71, 0xd3, - 0x00, 0xad, 0xd3, 0xf4, 0x2f, 0xe9, 0x4f, 0x1a, 0xf4, 0x29, 0x7d, 0x48, 0xeb, 0xa7, 0x22, 0x79, - 0xeb, 0x43, 0xd1, 0x66, 0x55, 0x03, 0x75, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x0d, 0xe0, 0x97, 0xe2, - 0xfe, 0x0d, 0x67, 0x48, 0x4a, 0x43, 0xa5, 0x48, 0xdc, 0x27, 0xf1, 0x9e, 0x7b, 0xbe, 0x6f, 0xce, - 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0xdc, 0x11, 0x7c, 0xfa, 0x32, 0xcc, 0xb7, 0x5c, 0xb7, 0x65, 0x93, - 0xe5, 0x8e, 0xe7, 0x06, 0xee, 0x41, 0xb7, 0xb9, 0xdc, 0x20, 0xbe, 0xe9, 0x59, 0x9d, 0xc0, 0xf5, - 0x96, 0x98, 0x0c, 0x4d, 0x71, 0x8d, 0x25, 0xa9, 0xb1, 0xb0, 0x09, 0xd3, 0xcf, 0x58, 0x36, 0x59, - 0x0d, 0x15, 0x77, 0x49, 0x80, 0xae, 0x41, 0xa6, 0x69, 0xd9, 0xa4, 0xac, 0xcc, 0xa7, 0x17, 0x0b, - 0x97, 0x1e, 0x5a, 0xea, 0x03, 0x2d, 0xc5, 0x11, 0x3b, 0x54, 0xac, 0x33, 0xc4, 0xc2, 0x1b, 0x19, - 0x98, 0x19, 0x32, 0x8b, 0x10, 0x64, 0x1c, 0xdc, 0xa6, 0x8c, 0xca, 0x62, 0x5e, 0x67, 0xbf, 0x51, - 0x19, 0x26, 0x3a, 0xd8, 0xbc, 0x85, 0x5b, 0xa4, 0x9c, 0x62, 0x62, 0x39, 0x44, 0x15, 0x80, 0x06, - 0xe9, 0x10, 0xa7, 0x41, 0x1c, 0xf3, 0xa8, 0x9c, 0x9e, 0x4f, 0x2f, 0xe6, 0xf5, 0x88, 0x04, 0x3d, - 0x0e, 0xd3, 0x9d, 0xee, 0x81, 0x6d, 0x99, 0x46, 0x44, 0x0d, 0xe6, 0xd3, 0x8b, 0x59, 0x5d, 0xe5, - 0x13, 0xab, 0x3d, 0xe5, 0x47, 0x60, 0xea, 0x0e, 0xc1, 0xb7, 0xa2, 0xaa, 0x05, 0xa6, 0x5a, 0xa2, - 0xe2, 0x88, 0x62, 0x0d, 0x8a, 0x6d, 0xe2, 0xfb, 0xb8, 0x45, 0x8c, 0xe0, 0xa8, 0x43, 0xca, 0x19, - 0xb6, 0xfa, 0xf9, 0x81, 0xd5, 0xf7, 0xaf, 0xbc, 0x20, 0x50, 0x7b, 0x47, 0x1d, 0x82, 0xaa, 0x90, - 0x27, 0x4e, 0xb7, 0xcd, 0x19, 0xb2, 0x27, 0xf8, 0xaf, 0xee, 0x74, 0xdb, 0xfd, 0x2c, 0x39, 0x0a, - 0x13, 0x14, 0x13, 0x3e, 0xf1, 0x6e, 0x5b, 0x26, 0x29, 0x8f, 0x33, 0x82, 0x47, 0x06, 0x08, 0x76, - 0xf9, 0x7c, 0x3f, 0x87, 0xc4, 0xa1, 0x1a, 0xe4, 0xc9, 0x0b, 0x01, 0x71, 0x7c, 0xcb, 0x75, 0xca, - 0x13, 0x8c, 0xe4, 0xe1, 0x21, 0xbb, 0x48, 0xec, 0x46, 0x3f, 0x45, 0x0f, 0x87, 0xae, 0xc2, 0x84, - 0xdb, 0x09, 0x2c, 0xd7, 0xf1, 0xcb, 0xb9, 0x79, 0x65, 0xb1, 0x70, 0xe9, 0x7d, 0x43, 0x03, 0x61, - 0x9b, 0xeb, 0xe8, 0x52, 0x19, 0xad, 0x83, 0xea, 0xbb, 0x5d, 0xcf, 0x24, 0x86, 0xe9, 0x36, 0x88, - 0x61, 0x39, 0x4d, 0xb7, 0x9c, 0x67, 0x04, 0x17, 0x06, 0x17, 0xc2, 0x14, 0x6b, 0x6e, 0x83, 0xac, - 0x3b, 0x4d, 0x57, 0x2f, 0xf9, 0xb1, 0x31, 0x3a, 0x07, 0xe3, 0xfe, 0x91, 0x13, 0xe0, 0x17, 0xca, - 0x45, 0x16, 0x21, 0x62, 0xb4, 0xf0, 0x3f, 0x59, 0x98, 0x1a, 0x25, 0xc4, 0xae, 0x43, 0xb6, 0x49, - 0x57, 0x59, 0x4e, 0x9d, 0xc5, 0x07, 0x1c, 0x13, 0x77, 0xe2, 0xf8, 0x8f, 0xe8, 0xc4, 0x2a, 0x14, - 0x1c, 0xe2, 0x07, 0xa4, 0xc1, 0x23, 0x22, 0x3d, 0x62, 0x4c, 0x01, 0x07, 0x0d, 0x86, 0x54, 0xe6, - 0x47, 0x0a, 0xa9, 0xe7, 0x60, 0x2a, 0x34, 0xc9, 0xf0, 0xb0, 0xd3, 0x92, 0xb1, 0xb9, 0x9c, 0x64, - 0xc9, 0x52, 0x5d, 0xe2, 0x74, 0x0a, 0xd3, 0x4b, 0x24, 0x36, 0x46, 0xab, 0x00, 0xae, 0x43, 0xdc, - 0xa6, 0xd1, 0x20, 0xa6, 0x5d, 0xce, 0x9d, 0xe0, 0xa5, 0x6d, 0xaa, 0x32, 0xe0, 0x25, 0x97, 0x4b, - 0x4d, 0x1b, 0x3d, 0xd5, 0x0b, 0xb5, 0x89, 0x13, 0x22, 0x65, 0x93, 0x1f, 0xb2, 0x81, 0x68, 0xdb, - 0x87, 0x92, 0x47, 0x68, 0xdc, 0x93, 0x86, 0x58, 0x59, 0x9e, 0x19, 0xb1, 0x94, 0xb8, 0x32, 0x5d, - 0xc0, 0xf8, 0xc2, 0x26, 0xbd, 0xe8, 0x10, 0xbd, 0x1f, 0x42, 0x81, 0xc1, 0xc2, 0x0a, 0x58, 0x16, - 0x2a, 0x4a, 0xe1, 0x16, 0x6e, 0x93, 0xb9, 0x6b, 0x50, 0x8a, 0xbb, 0x07, 0xcd, 0x42, 0xd6, 0x0f, - 0xb0, 0x17, 0xb0, 0x28, 0xcc, 0xea, 0x7c, 0x80, 0x54, 0x48, 0x13, 0xa7, 0xc1, 0xb2, 0x5c, 0x56, - 0xa7, 0x3f, 0xe7, 0x9e, 0x84, 0xc9, 0xd8, 0xe3, 0x47, 0x05, 0x2e, 0x7c, 0x7e, 0x1c, 0x66, 0x87, - 0xc5, 0xdc, 0xd0, 0xf0, 0x3f, 0x07, 0xe3, 0x4e, 0xb7, 0x7d, 0x40, 0xbc, 0x72, 0x9a, 0x31, 0x88, - 0x11, 0xaa, 0x42, 0xd6, 0xc6, 0x07, 0xc4, 0x2e, 0x67, 0xe6, 0x95, 0xc5, 0xd2, 0xa5, 0xc7, 0x47, - 0x8a, 0xea, 0xa5, 0x0d, 0x0a, 0xd1, 0x39, 0x12, 0x7d, 0x14, 0x32, 0x22, 0xc5, 0x51, 0x86, 0xc7, - 0x46, 0x63, 0xa0, 0xb1, 0xa8, 0x33, 0x1c, 0x7a, 0x00, 0xf2, 0xf4, 0x2f, 0xf7, 0xed, 0x38, 0xb3, - 0x39, 0x47, 0x05, 0xd4, 0xaf, 0x68, 0x0e, 0x72, 0x2c, 0xcc, 0x1a, 0x44, 0x96, 0x86, 0x70, 0x4c, - 0x37, 0xa6, 0x41, 0x9a, 0xb8, 0x6b, 0x07, 0xc6, 0x6d, 0x6c, 0x77, 0x09, 0x0b, 0x98, 0xbc, 0x5e, - 0x14, 0xc2, 0x4f, 0x50, 0x19, 0xba, 0x00, 0x05, 0x1e, 0x95, 0x96, 0xd3, 0x20, 0x2f, 0xb0, 0xec, - 0x93, 0xd5, 0x79, 0xa0, 0xae, 0x53, 0x09, 0x7d, 0xfc, 0x4d, 0xdf, 0x75, 0xe4, 0xd6, 0xb2, 0x47, - 0x50, 0x01, 0x7b, 0xfc, 0x93, 0xfd, 0x89, 0xef, 0xc1, 0xe1, 0xcb, 0xeb, 0x8f, 0xc5, 0x85, 0x6f, - 0xa6, 0x20, 0xc3, 0xce, 0xdb, 0x14, 0x14, 0xf6, 0x9e, 0xdf, 0xa9, 0x1b, 0xab, 0xdb, 0xfb, 0x2b, - 0x1b, 0x75, 0x55, 0x41, 0x25, 0x00, 0x26, 0x78, 0x66, 0x63, 0xbb, 0xba, 0xa7, 0xa6, 0xc2, 0xf1, - 0xfa, 0xd6, 0xde, 0xd5, 0xcb, 0x6a, 0x3a, 0x04, 0xec, 0x73, 0x41, 0x26, 0xaa, 0xf0, 0xc4, 0x25, - 0x35, 0x8b, 0x54, 0x28, 0x72, 0x82, 0xf5, 0xe7, 0xea, 0xab, 0x57, 0x2f, 0xab, 0xe3, 0x71, 0xc9, - 0x13, 0x97, 0xd4, 0x09, 0x34, 0x09, 0x79, 0x26, 0x59, 0xd9, 0xde, 0xde, 0x50, 0x73, 0x21, 0xe7, - 0xee, 0x9e, 0xbe, 0xbe, 0xb5, 0xa6, 0xe6, 0x43, 0xce, 0x35, 0x7d, 0x7b, 0x7f, 0x47, 0x85, 0x90, - 0x61, 0xb3, 0xbe, 0xbb, 0x5b, 0x5d, 0xab, 0xab, 0x85, 0x50, 0x63, 0xe5, 0xf9, 0xbd, 0xfa, 0xae, - 0x5a, 0x8c, 0x99, 0xf5, 0xc4, 0x25, 0x75, 0x32, 0x7c, 0x44, 0x7d, 0x6b, 0x7f, 0x53, 0x2d, 0xa1, - 0x69, 0x98, 0xe4, 0x8f, 0x90, 0x46, 0x4c, 0xf5, 0x89, 0xae, 0x5e, 0x56, 0xd5, 0x9e, 0x21, 0x9c, - 0x65, 0x3a, 0x26, 0xb8, 0x7a, 0x59, 0x45, 0x0b, 0x35, 0xc8, 0xb2, 0xe8, 0x42, 0x08, 0x4a, 0x1b, - 0xd5, 0x95, 0xfa, 0x86, 0xb1, 0xbd, 0xb3, 0xb7, 0xbe, 0xbd, 0x55, 0xdd, 0x50, 0x95, 0x9e, 0x4c, - 0xaf, 0x7f, 0x7c, 0x7f, 0x5d, 0xaf, 0xaf, 0xaa, 0xa9, 0xa8, 0x6c, 0xa7, 0x5e, 0xdd, 0xab, 0xaf, - 0xaa, 0xe9, 0x05, 0x13, 0x66, 0x87, 0xe5, 0x99, 0xa1, 0x27, 0x23, 0xb2, 0xc5, 0xa9, 0x13, 0xb6, - 0x98, 0x71, 0x0d, 0x6c, 0xf1, 0x57, 0x14, 0x98, 0x19, 0x92, 0x6b, 0x87, 0x3e, 0xe4, 0x69, 0xc8, - 0xf2, 0x10, 0xe5, 0xd5, 0xe7, 0xd1, 0xa1, 0x49, 0x9b, 0x05, 0xec, 0x40, 0x05, 0x62, 0xb8, 0x68, - 0x05, 0x4e, 0x9f, 0x50, 0x81, 0x29, 0xc5, 0x80, 0x91, 0x2f, 0x29, 0x50, 0x3e, 0x89, 0x3b, 0x21, - 0x51, 0xa4, 0x62, 0x89, 0xe2, 0x7a, 0xbf, 0x01, 0x17, 0x4f, 0x5e, 0xc3, 0x80, 0x15, 0xaf, 0x29, - 0x70, 0x6e, 0x78, 0xa3, 0x32, 0xd4, 0x86, 0x8f, 0xc2, 0x78, 0x9b, 0x04, 0x87, 0xae, 0x2c, 0xd6, - 0x1f, 0x18, 0x52, 0x02, 0xe8, 0x74, 0xbf, 0xaf, 0x04, 0x2a, 0x5a, 0x43, 0xd2, 0x27, 0x75, 0x1b, - 0xdc, 0x9a, 0x01, 0x4b, 0x3f, 0x9b, 0x82, 0xfb, 0x86, 0x92, 0x0f, 0x35, 0xf4, 0x41, 0x00, 0xcb, - 0xe9, 0x74, 0x03, 0x5e, 0x90, 0x79, 0x7e, 0xca, 0x33, 0x09, 0x3b, 0xfb, 0x34, 0xf7, 0x74, 0x83, - 0x70, 0x3e, 0xcd, 0xe6, 0x81, 0x8b, 0x98, 0xc2, 0xb5, 0x9e, 0xa1, 0x19, 0x66, 0x68, 0xe5, 0x84, - 0x95, 0x0e, 0xd4, 0xba, 0x0f, 0x83, 0x6a, 0xda, 0x16, 0x71, 0x02, 0xc3, 0x0f, 0x3c, 0x82, 0xdb, - 0x96, 0xd3, 0x62, 0x09, 0x38, 0xa7, 0x65, 0x9b, 0xd8, 0xf6, 0x89, 0x3e, 0xc5, 0xa7, 0x77, 0xe5, - 0x2c, 0x45, 0xb0, 0x2a, 0xe3, 0x45, 0x10, 0xe3, 0x31, 0x04, 0x9f, 0x0e, 0x11, 0x0b, 0x9f, 0x9b, - 0x80, 0x42, 0xa4, 0xad, 0x43, 0x17, 0xa1, 0x78, 0x13, 0xdf, 0xc6, 0x86, 0x6c, 0xd5, 0xb9, 0x27, - 0x0a, 0x54, 0xb6, 0x23, 0xda, 0xf5, 0x0f, 0xc3, 0x2c, 0x53, 0x71, 0xbb, 0x01, 0xf1, 0x0c, 0xd3, - 0xc6, 0xbe, 0xcf, 0x9c, 0x96, 0x63, 0xaa, 0x88, 0xce, 0x6d, 0xd3, 0xa9, 0x9a, 0x9c, 0x41, 0x57, - 0x60, 0x86, 0x21, 0xda, 0x5d, 0x3b, 0xb0, 0x3a, 0x36, 0x31, 0xe8, 0xcb, 0x83, 0xcf, 0x12, 0x71, - 0x68, 0xd9, 0x34, 0xd5, 0xd8, 0x14, 0x0a, 0xd4, 0x22, 0x1f, 0xad, 0xc1, 0x83, 0x0c, 0xd6, 0x22, - 0x0e, 0xf1, 0x70, 0x40, 0x0c, 0xf2, 0xd3, 0x5d, 0x6c, 0xfb, 0x06, 0x76, 0x1a, 0xc6, 0x21, 0xf6, - 0x0f, 0xcb, 0xb3, 0x51, 0x82, 0xf3, 0x54, 0x77, 0x4d, 0xa8, 0xd6, 0x99, 0x66, 0xd5, 0x69, 0x7c, - 0x0c, 0xfb, 0x87, 0x48, 0x83, 0x73, 0x8c, 0xc8, 0x0f, 0x3c, 0xcb, 0x69, 0x19, 0xe6, 0x21, 0x31, - 0x6f, 0x19, 0xdd, 0xa0, 0x79, 0xad, 0xfc, 0x40, 0x94, 0x81, 0x19, 0xb9, 0xcb, 0x74, 0x6a, 0x54, - 0x65, 0x3f, 0x68, 0x5e, 0x43, 0xbb, 0x50, 0xa4, 0xfb, 0xd1, 0xb6, 0x5e, 0x24, 0x46, 0xd3, 0xf5, - 0x58, 0x71, 0x29, 0x0d, 0x39, 0xdc, 0x11, 0x27, 0x2e, 0x6d, 0x0b, 0xc0, 0xa6, 0xdb, 0x20, 0x5a, - 0x76, 0x77, 0xa7, 0x5e, 0x5f, 0xd5, 0x0b, 0x92, 0xe5, 0x19, 0xd7, 0xa3, 0x31, 0xd5, 0x72, 0x43, - 0x1f, 0x17, 0x78, 0x4c, 0xb5, 0x5c, 0xe9, 0xe1, 0x2b, 0x30, 0x63, 0x9a, 0x7c, 0xd9, 0x96, 0x69, - 0x88, 0x2e, 0xdf, 0x2f, 0xab, 0x31, 0x7f, 0x99, 0xe6, 0x1a, 0x57, 0x10, 0x61, 0xee, 0xa3, 0xa7, - 0xe0, 0xbe, 0x9e, 0xbf, 0xa2, 0xc0, 0xe9, 0x81, 0x55, 0xf6, 0x43, 0xaf, 0xc0, 0x4c, 0xe7, 0x68, - 0x10, 0x88, 0x62, 0x4f, 0xec, 0x1c, 0xf5, 0xc3, 0x1e, 0x66, 0x6f, 0x6e, 0x1e, 0x31, 0x71, 0x40, - 0x1a, 0xe5, 0xfb, 0xa3, 0xda, 0x91, 0x09, 0xb4, 0x0c, 0xaa, 0x69, 0x1a, 0xc4, 0xc1, 0x07, 0x36, - 0x31, 0xb0, 0x47, 0x1c, 0xec, 0x97, 0x2f, 0x44, 0x95, 0x4b, 0xa6, 0x59, 0x67, 0xb3, 0x55, 0x36, - 0x89, 0x1e, 0x83, 0x69, 0xf7, 0xe0, 0xa6, 0xc9, 0x83, 0xcb, 0xe8, 0x78, 0xa4, 0x69, 0xbd, 0x50, - 0x7e, 0x88, 0xb9, 0x69, 0x8a, 0x4e, 0xb0, 0xd0, 0xda, 0x61, 0x62, 0xf4, 0x28, 0xa8, 0xa6, 0x7f, - 0x88, 0xbd, 0x0e, 0xab, 0xee, 0x7e, 0x07, 0x9b, 0xa4, 0xfc, 0x30, 0x57, 0xe5, 0xf2, 0x2d, 0x29, - 0x46, 0xcf, 0xc1, 0x6c, 0xd7, 0xb1, 0x9c, 0x80, 0x78, 0x1d, 0x8f, 0xd0, 0x26, 0x9d, 0x9f, 0xb4, - 0xf2, 0x3f, 0x4f, 0x9c, 0xd0, 0x66, 0xef, 0x47, 0xb5, 0xf9, 0xee, 0xea, 0x33, 0xdd, 0x41, 0xe1, - 0x82, 0x06, 0xc5, 0xe8, 0xa6, 0xa3, 0x3c, 0xf0, 0x6d, 0x57, 0x15, 0x5a, 0x43, 0x6b, 0xdb, 0xab, - 0xb4, 0xfa, 0x7d, 0xb2, 0xae, 0xa6, 0x68, 0x15, 0xde, 0x58, 0xdf, 0xab, 0x1b, 0xfa, 0xfe, 0xd6, - 0xde, 0xfa, 0x66, 0x5d, 0x4d, 0x3f, 0x96, 0xcf, 0xbd, 0x39, 0xa1, 0xde, 0xbd, 0x7b, 0xf7, 0x6e, - 0x6a, 0xe1, 0x3b, 0x29, 0x28, 0xc5, 0x3b, 0x5f, 0xf4, 0x53, 0x70, 0xbf, 0x7c, 0x4d, 0xf5, 0x49, - 0x60, 0xdc, 0xb1, 0x3c, 0x16, 0x87, 0x6d, 0xcc, 0x7b, 0xc7, 0xd0, 0x85, 0xb3, 0x42, 0x6b, 0x97, - 0x04, 0xcf, 0x5a, 0x1e, 0x8d, 0xb2, 0x36, 0x0e, 0xd0, 0x06, 0x5c, 0x70, 0x5c, 0xc3, 0x0f, 0xb0, - 0xd3, 0xc0, 0x5e, 0xc3, 0xe8, 0x5d, 0x10, 0x18, 0xd8, 0x34, 0x89, 0xef, 0xbb, 0xbc, 0x04, 0x84, - 0x2c, 0xef, 0x73, 0xdc, 0x5d, 0xa1, 0xdc, 0xcb, 0x8d, 0x55, 0xa1, 0xda, 0xb7, 0xdd, 0xe9, 0x93, - 0xb6, 0xfb, 0x01, 0xc8, 0xb7, 0x71, 0xc7, 0x20, 0x4e, 0xe0, 0x1d, 0xb1, 0x7e, 0x2d, 0xa7, 0xe7, - 0xda, 0xb8, 0x53, 0xa7, 0xe3, 0x1f, 0xdf, 0x1e, 0x44, 0xfd, 0xf8, 0xf7, 0x69, 0x28, 0x46, 0x7b, - 0x36, 0xda, 0x02, 0x9b, 0x2c, 0x3f, 0x2b, 0xec, 0xf8, 0xbe, 0xff, 0xd4, 0x0e, 0x6f, 0xa9, 0x46, - 0x13, 0xb7, 0x36, 0xce, 0x3b, 0x29, 0x9d, 0x23, 0x69, 0xd1, 0xa4, 0x07, 0x96, 0xf0, 0xfe, 0x3c, - 0xa7, 0x8b, 0x11, 0x5a, 0x83, 0xf1, 0x9b, 0x3e, 0xe3, 0x1e, 0x67, 0xdc, 0x0f, 0x9d, 0xce, 0x7d, - 0x63, 0x97, 0x91, 0xe7, 0x6f, 0xec, 0x1a, 0x5b, 0xdb, 0xfa, 0x66, 0x75, 0x43, 0x17, 0x70, 0x74, - 0x1e, 0x32, 0x36, 0x7e, 0xf1, 0x28, 0x9e, 0xe2, 0x99, 0x68, 0x54, 0xc7, 0x9f, 0x87, 0xcc, 0x1d, - 0x82, 0x6f, 0xc5, 0x13, 0x2b, 0x13, 0xfd, 0x18, 0x43, 0x7f, 0x19, 0xb2, 0xcc, 0x5f, 0x08, 0x40, - 0x78, 0x4c, 0x1d, 0x43, 0x39, 0xc8, 0xd4, 0xb6, 0x75, 0x1a, 0xfe, 0x2a, 0x14, 0xb9, 0xd4, 0xd8, - 0x59, 0xaf, 0xd7, 0xea, 0x6a, 0x6a, 0xe1, 0x0a, 0x8c, 0x73, 0x27, 0xd0, 0xa3, 0x11, 0xba, 0x41, - 0x1d, 0x13, 0x43, 0xc1, 0xa1, 0xc8, 0xd9, 0xfd, 0xcd, 0x95, 0xba, 0xae, 0xa6, 0xa2, 0xdb, 0xeb, - 0x43, 0x31, 0xda, 0xae, 0xfd, 0x64, 0x62, 0xea, 0x2f, 0x15, 0x28, 0x44, 0xda, 0x2f, 0x5a, 0xf8, - 0xb1, 0x6d, 0xbb, 0x77, 0x0c, 0x6c, 0x5b, 0xd8, 0x17, 0x41, 0x01, 0x4c, 0x54, 0xa5, 0x92, 0x51, - 0x37, 0xed, 0x27, 0x62, 0xfc, 0xab, 0x0a, 0xa8, 0xfd, 0xad, 0x5b, 0x9f, 0x81, 0xca, 0x7b, 0x6a, - 0xe0, 0x2b, 0x0a, 0x94, 0xe2, 0xfd, 0x5a, 0x9f, 0x79, 0x17, 0xdf, 0x53, 0xf3, 0xbe, 0xa8, 0xc0, - 0x64, 0xac, 0x4b, 0xfb, 0x7f, 0x65, 0xdd, 0xcb, 0x69, 0x98, 0x19, 0x82, 0x43, 0x55, 0xd1, 0xce, - 0xf2, 0x0e, 0xfb, 0x43, 0xa3, 0x3c, 0x6b, 0x89, 0x56, 0xcb, 0x1d, 0xec, 0x05, 0xa2, 0xfb, 0x7d, - 0x14, 0x54, 0xab, 0x41, 0x9c, 0xc0, 0x6a, 0x5a, 0xc4, 0x13, 0xaf, 0xe0, 0xbc, 0xc7, 0x9d, 0xea, - 0xc9, 0xf9, 0x5b, 0xf8, 0x07, 0x01, 0x75, 0x5c, 0xdf, 0x0a, 0xac, 0xdb, 0xc4, 0xb0, 0x1c, 0xf9, - 0xbe, 0x4e, 0x7b, 0xde, 0x8c, 0xae, 0xca, 0x99, 0x75, 0x27, 0x08, 0xb5, 0x1d, 0xd2, 0xc2, 0x7d, - 0xda, 0x34, 0xf7, 0xa5, 0x75, 0x55, 0xce, 0x84, 0xda, 0x17, 0xa1, 0xd8, 0x70, 0xbb, 0xb4, 0x7d, - 0xe0, 0x7a, 0x34, 0xd5, 0x2a, 0x7a, 0x81, 0xcb, 0x42, 0x15, 0xd1, 0xdf, 0xf5, 0x2e, 0x0a, 0x8a, - 0x7a, 0x81, 0xcb, 0xb8, 0xca, 0x23, 0x30, 0x85, 0x5b, 0x2d, 0x8f, 0x92, 0x4b, 0x22, 0xde, 0xb4, - 0x96, 0x42, 0x31, 0x53, 0x9c, 0xbb, 0x01, 0x39, 0xe9, 0x07, 0x5a, 0xcd, 0xa8, 0x27, 0x8c, 0x0e, - 0xbf, 0xae, 0x49, 0x2d, 0xe6, 0xf5, 0x9c, 0x23, 0x27, 0x2f, 0x42, 0xd1, 0xf2, 0x8d, 0xde, 0xbd, - 0x61, 0x6a, 0x3e, 0xb5, 0x98, 0xd3, 0x0b, 0x96, 0x1f, 0x5e, 0x14, 0x2d, 0xbc, 0x96, 0x82, 0x52, - 0xfc, 0xde, 0x13, 0xad, 0x42, 0xce, 0x76, 0x4d, 0xcc, 0x02, 0x81, 0x5f, 0xba, 0x2f, 0x26, 0x5c, - 0x95, 0x2e, 0x6d, 0x08, 0x7d, 0x3d, 0x44, 0xce, 0xfd, 0xad, 0x02, 0x39, 0x29, 0x46, 0xe7, 0x20, - 0xd3, 0xc1, 0xc1, 0x21, 0xa3, 0xcb, 0xae, 0xa4, 0x54, 0x45, 0x67, 0x63, 0x2a, 0xf7, 0x3b, 0xd8, - 0x61, 0x21, 0x20, 0xe4, 0x74, 0x4c, 0xf7, 0xd5, 0x26, 0xb8, 0xc1, 0xda, 0x61, 0xb7, 0xdd, 0x26, - 0x4e, 0xe0, 0xcb, 0x7d, 0x15, 0xf2, 0x9a, 0x10, 0xa3, 0xc7, 0x61, 0x3a, 0xf0, 0xb0, 0x65, 0xc7, - 0x74, 0x33, 0x4c, 0x57, 0x95, 0x13, 0xa1, 0xb2, 0x06, 0xe7, 0x25, 0x6f, 0x83, 0x04, 0xd8, 0x3c, - 0x24, 0x8d, 0x1e, 0x68, 0x9c, 0x5d, 0xaa, 0xdd, 0x2f, 0x14, 0x56, 0xc5, 0xbc, 0xc4, 0x2e, 0x7c, - 0x4f, 0x81, 0x69, 0xd9, 0xc0, 0x37, 0x42, 0x67, 0x6d, 0x02, 0x60, 0xc7, 0x71, 0x83, 0xa8, 0xbb, - 0x06, 0x43, 0x79, 0x00, 0xb7, 0x54, 0x0d, 0x41, 0x7a, 0x84, 0x60, 0xae, 0x0d, 0xd0, 0x9b, 0x39, - 0xd1, 0x6d, 0x17, 0xa0, 0x20, 0x2e, 0xb5, 0xd9, 0x97, 0x11, 0xfe, 0xd6, 0x07, 0x5c, 0x44, 0x3b, - 0x7d, 0x34, 0x0b, 0xd9, 0x03, 0xd2, 0xb2, 0x1c, 0x71, 0xd5, 0xc6, 0x07, 0xf2, 0x02, 0x2f, 0x13, - 0x5e, 0xe0, 0xad, 0x7c, 0x0a, 0x66, 0x4c, 0xb7, 0xdd, 0x6f, 0xee, 0x8a, 0xda, 0xf7, 0xe6, 0xe9, - 0x7f, 0x4c, 0xf9, 0x24, 0xf4, 0xba, 0xb3, 0x2f, 0x2b, 0xca, 0x57, 0x52, 0xe9, 0xb5, 0x9d, 0x95, - 0xaf, 0xa5, 0xe6, 0xd6, 0x38, 0x74, 0x47, 0xae, 0x54, 0x27, 0x4d, 0x9b, 0x98, 0xd4, 0x7a, 0xf8, - 0xc1, 0x07, 0xe0, 0x43, 0x2d, 0x2b, 0x38, 0xec, 0x1e, 0x2c, 0x99, 0x6e, 0x7b, 0xb9, 0xe5, 0xb6, - 0xdc, 0xde, 0xc7, 0x20, 0x3a, 0x62, 0x03, 0xf6, 0x4b, 0x7c, 0x10, 0xca, 0x87, 0xd2, 0xb9, 0xc4, - 0xaf, 0x47, 0xda, 0x16, 0xcc, 0x08, 0x65, 0x83, 0xdd, 0x48, 0xf3, 0x3e, 0x1c, 0x9d, 0x7a, 0x2b, - 0x51, 0xfe, 0xc6, 0x1b, 0xac, 0xd2, 0xe9, 0xd3, 0x02, 0x4a, 0xe7, 0x78, 0xa7, 0xae, 0xe9, 0x70, - 0x5f, 0x8c, 0x8f, 0x1f, 0x4d, 0xe2, 0x25, 0x30, 0x7e, 0x47, 0x30, 0xce, 0x44, 0x18, 0x77, 0x05, - 0x54, 0xab, 0xc1, 0xe4, 0x59, 0xb8, 0xfe, 0x5a, 0x70, 0x15, 0x49, 0x94, 0x64, 0x0d, 0xa6, 0x18, - 0x89, 0xd9, 0xf5, 0x03, 0xb7, 0xcd, 0xf2, 0xde, 0xe9, 0x34, 0x7f, 0xf3, 0x06, 0x3f, 0x2b, 0x25, - 0x0a, 0xab, 0x85, 0x28, 0x4d, 0x03, 0x76, 0x09, 0xdf, 0x20, 0xa6, 0x9d, 0xc0, 0xf0, 0xba, 0x30, - 0x24, 0xd4, 0xd7, 0x3e, 0x01, 0xb3, 0xf4, 0x37, 0x4b, 0x4b, 0x51, 0x4b, 0x92, 0xef, 0x60, 0xca, - 0xdf, 0x7b, 0x89, 0x1f, 0xc7, 0x99, 0x90, 0x20, 0x62, 0x53, 0x64, 0x17, 0x5b, 0x24, 0x08, 0x88, - 0xe7, 0x1b, 0xd8, 0x1e, 0x66, 0x5e, 0xe4, 0x0d, 0xb6, 0xfc, 0x85, 0xb7, 0xe2, 0xbb, 0xb8, 0xc6, - 0x91, 0x55, 0xdb, 0xd6, 0xf6, 0xe1, 0xfe, 0x21, 0x51, 0x31, 0x02, 0xe7, 0xcb, 0x82, 0x73, 0x76, - 0x20, 0x32, 0x28, 0xed, 0x0e, 0x48, 0x79, 0xb8, 0x97, 0x23, 0x70, 0x7e, 0x51, 0x70, 0x22, 0x81, - 0x95, 0x5b, 0x4a, 0x19, 0x6f, 0xc0, 0xf4, 0x6d, 0xe2, 0x1d, 0xb8, 0xbe, 0xb8, 0x38, 0x18, 0x81, - 0xee, 0x15, 0x41, 0x37, 0x25, 0x80, 0xec, 0x1a, 0x81, 0x72, 0x3d, 0x05, 0xb9, 0x26, 0x36, 0xc9, - 0x08, 0x14, 0x5f, 0x12, 0x14, 0x13, 0x54, 0x9f, 0x42, 0xab, 0x50, 0x6c, 0xb9, 0xa2, 0x32, 0x25, - 0xc3, 0x5f, 0x15, 0xf0, 0x82, 0xc4, 0x08, 0x8a, 0x8e, 0xdb, 0xe9, 0xda, 0xb4, 0x6c, 0x25, 0x53, - 0xfc, 0x96, 0xa4, 0x90, 0x18, 0x41, 0x71, 0x06, 0xb7, 0x7e, 0x59, 0x52, 0xf8, 0x11, 0x7f, 0x3e, - 0x0d, 0x05, 0xd7, 0xb1, 0x8f, 0x5c, 0x67, 0x14, 0x23, 0x7e, 0x5b, 0x30, 0x80, 0x80, 0x50, 0x82, - 0xeb, 0x90, 0x1f, 0x75, 0x23, 0x7e, 0xe7, 0x2d, 0x79, 0x3c, 0xe4, 0x0e, 0xac, 0xc1, 0x94, 0x4c, - 0x50, 0x96, 0xeb, 0x8c, 0x40, 0xf1, 0xbb, 0x82, 0xa2, 0x14, 0x81, 0x89, 0x65, 0x04, 0xc4, 0x0f, - 0x5a, 0x64, 0x14, 0x92, 0xd7, 0xe4, 0x32, 0x04, 0x44, 0xb8, 0xf2, 0x80, 0x38, 0xe6, 0xe1, 0x68, - 0x0c, 0x5f, 0x95, 0xae, 0x94, 0x18, 0x4a, 0x51, 0x83, 0xc9, 0x36, 0xf6, 0xfc, 0x43, 0x6c, 0x8f, - 0xb4, 0x1d, 0xbf, 0x27, 0x38, 0x8a, 0x21, 0x48, 0x78, 0xa4, 0xeb, 0x9c, 0x85, 0xe6, 0x6b, 0xd2, - 0x23, 0x11, 0x98, 0x38, 0x7a, 0x7e, 0xc0, 0xee, 0x66, 0xce, 0xc2, 0xf6, 0xfb, 0xf2, 0xe8, 0x71, - 0xec, 0x66, 0x94, 0xf1, 0x3a, 0xe4, 0x7d, 0xeb, 0xc5, 0x91, 0x68, 0xfe, 0x40, 0xee, 0x34, 0x03, - 0x50, 0xf0, 0xf3, 0x70, 0x7e, 0x68, 0x99, 0x18, 0x81, 0xec, 0x0f, 0x05, 0xd9, 0xb9, 0x21, 0xa5, - 0x42, 0xa4, 0x84, 0xb3, 0x52, 0xfe, 0x91, 0x4c, 0x09, 0xa4, 0x8f, 0x6b, 0x87, 0x76, 0xf6, 0x3e, - 0x6e, 0x9e, 0xcd, 0x6b, 0x7f, 0x2c, 0xbd, 0xc6, 0xb1, 0x31, 0xaf, 0xed, 0xc1, 0x39, 0xc1, 0x78, - 0xb6, 0x7d, 0xfd, 0xba, 0x4c, 0xac, 0x1c, 0xbd, 0x1f, 0xdf, 0xdd, 0x4f, 0xc1, 0x5c, 0xe8, 0x4e, - 0xd9, 0x94, 0xfa, 0x46, 0x1b, 0x77, 0x46, 0x60, 0xfe, 0x86, 0x60, 0x96, 0x19, 0x3f, 0xec, 0x6a, - 0xfd, 0x4d, 0xdc, 0xa1, 0xe4, 0xcf, 0x41, 0x59, 0x92, 0x77, 0x1d, 0x8f, 0x98, 0x6e, 0xcb, 0xb1, - 0x5e, 0x24, 0x8d, 0x11, 0xa8, 0xff, 0xa4, 0x6f, 0xab, 0xf6, 0x23, 0x70, 0xca, 0xbc, 0x0e, 0x6a, - 0xd8, 0xab, 0x18, 0x56, 0xbb, 0xe3, 0x7a, 0x41, 0x02, 0xe3, 0x9f, 0xca, 0x9d, 0x0a, 0x71, 0xeb, - 0x0c, 0xa6, 0xd5, 0xa1, 0xc4, 0x86, 0xa3, 0x86, 0xe4, 0x9f, 0x09, 0xa2, 0xc9, 0x1e, 0x4a, 0x24, - 0x0e, 0xd3, 0x6d, 0x77, 0xb0, 0x37, 0x4a, 0xfe, 0xfb, 0x73, 0x99, 0x38, 0x04, 0x44, 0x24, 0x8e, - 0xe0, 0xa8, 0x43, 0x68, 0xb5, 0x1f, 0x81, 0xe1, 0x9b, 0x32, 0x71, 0x48, 0x8c, 0xa0, 0x90, 0x0d, - 0xc3, 0x08, 0x14, 0x7f, 0x21, 0x29, 0x24, 0x86, 0x52, 0x7c, 0xbc, 0x57, 0x68, 0x3d, 0xd2, 0xb2, - 0xfc, 0xc0, 0xe3, 0xad, 0xf0, 0xe9, 0x54, 0xdf, 0x7a, 0x2b, 0xde, 0x84, 0xe9, 0x11, 0xa8, 0x76, - 0x03, 0xa6, 0xfa, 0x5a, 0x0c, 0x94, 0xf4, 0x45, 0xbf, 0xfc, 0xe9, 0x77, 0x44, 0x32, 0x8a, 0x77, - 0x18, 0xda, 0x06, 0xdd, 0xf7, 0x78, 0x1f, 0x90, 0x4c, 0xf6, 0xd2, 0x3b, 0xe1, 0xd6, 0xc7, 0xda, - 0x00, 0xed, 0x19, 0x98, 0x8c, 0xf5, 0x00, 0xc9, 0x54, 0x9f, 0x11, 0x54, 0xc5, 0x68, 0x0b, 0xa0, - 0x5d, 0x81, 0x0c, 0xad, 0xe7, 0xc9, 0xf0, 0x9f, 0x11, 0x70, 0xa6, 0xae, 0x7d, 0x04, 0x72, 0xb2, - 0x8e, 0x27, 0x43, 0x7f, 0x56, 0x40, 0x43, 0x08, 0x85, 0xcb, 0x1a, 0x9e, 0x0c, 0xff, 0x39, 0x09, - 0x97, 0x10, 0x0a, 0x1f, 0xdd, 0x85, 0xdf, 0xfe, 0x5c, 0x46, 0xe4, 0x61, 0xe9, 0xbb, 0xeb, 0x30, - 0x21, 0x8a, 0x77, 0x32, 0xfa, 0xb3, 0xe2, 0xe1, 0x12, 0xa1, 0x3d, 0x09, 0xd9, 0x11, 0x1d, 0xfe, - 0x0b, 0x02, 0xca, 0xf5, 0xb5, 0x1a, 0x14, 0x22, 0x05, 0x3b, 0x19, 0xfe, 0x8b, 0x02, 0x1e, 0x45, - 0x51, 0xd3, 0x45, 0xc1, 0x4e, 0x26, 0xf8, 0x25, 0x69, 0xba, 0x40, 0x50, 0xb7, 0xc9, 0x5a, 0x9d, - 0x8c, 0xfe, 0x65, 0xe9, 0x75, 0x09, 0xd1, 0x9e, 0x86, 0x7c, 0x98, 0x7f, 0x93, 0xf1, 0xbf, 0x22, - 0xf0, 0x3d, 0x0c, 0xf5, 0x40, 0x24, 0xff, 0x27, 0x53, 0xfc, 0xaa, 0xf4, 0x40, 0x04, 0x45, 0x8f, - 0x51, 0x7f, 0x4d, 0x4f, 0x66, 0xfa, 0x35, 0x79, 0x8c, 0xfa, 0x4a, 0x3a, 0xdd, 0x4d, 0x96, 0x06, - 0x93, 0x29, 0x7e, 0x5d, 0xee, 0x26, 0xd3, 0xa7, 0x66, 0xf4, 0x17, 0xc9, 0x64, 0x8e, 0xdf, 0x94, - 0x66, 0xf4, 0xd5, 0x48, 0x6d, 0x07, 0xd0, 0x60, 0x81, 0x4c, 0xe6, 0xfb, 0xbc, 0xe0, 0x9b, 0x1e, - 0xa8, 0x8f, 0xda, 0xb3, 0x70, 0x6e, 0x78, 0x71, 0x4c, 0x66, 0xfd, 0xc2, 0x3b, 0x7d, 0xaf, 0x33, - 0xd1, 0xda, 0xa8, 0xed, 0xf5, 0xb2, 0x6c, 0xb4, 0x30, 0x26, 0xd3, 0xbe, 0xfc, 0x4e, 0x3c, 0xd1, - 0x46, 0xeb, 0xa2, 0x56, 0x05, 0xe8, 0xd5, 0xa4, 0x64, 0xae, 0x57, 0x04, 0x57, 0x04, 0x44, 0x8f, - 0x86, 0x28, 0x49, 0xc9, 0xf8, 0x2f, 0xc9, 0xa3, 0x21, 0x10, 0xf4, 0x68, 0xc8, 0x6a, 0x94, 0x8c, - 0x7e, 0x55, 0x1e, 0x0d, 0x09, 0xd1, 0xae, 0x43, 0xce, 0xe9, 0xda, 0x36, 0x8d, 0x2d, 0x74, 0xfa, - 0x3f, 0xd9, 0x94, 0xff, 0xe5, 0x5d, 0x01, 0x96, 0x00, 0xed, 0x0a, 0x64, 0x49, 0xfb, 0x80, 0x34, - 0x92, 0x90, 0xff, 0xfa, 0xae, 0xcc, 0x27, 0x54, 0x5b, 0x7b, 0x1a, 0x80, 0xbf, 0x4c, 0xb3, 0x6f, - 0x2c, 0x09, 0xd8, 0x7f, 0x7b, 0x57, 0x7c, 0xbf, 0xef, 0x41, 0x7a, 0x04, 0xfc, 0xbf, 0x01, 0x4e, - 0x27, 0x78, 0x2b, 0x4e, 0xc0, 0x5e, 0xc0, 0x9f, 0x82, 0x89, 0x9b, 0xbe, 0xeb, 0x04, 0xb8, 0x95, - 0x84, 0xfe, 0x77, 0x81, 0x96, 0xfa, 0xd4, 0x61, 0x6d, 0xd7, 0x23, 0x01, 0x6e, 0xf9, 0x49, 0xd8, - 0xff, 0x10, 0xd8, 0x10, 0x40, 0xc1, 0x26, 0xf6, 0x83, 0x51, 0xd6, 0xfd, 0x9f, 0x12, 0x2c, 0x01, - 0xd4, 0x68, 0xfa, 0xfb, 0x16, 0x39, 0x4a, 0xc2, 0xbe, 0x2d, 0x8d, 0x16, 0xfa, 0xda, 0x47, 0x20, - 0x4f, 0x7f, 0xf2, 0xff, 0x69, 0x49, 0x00, 0xff, 0x97, 0x00, 0xf7, 0x10, 0xf4, 0xc9, 0x7e, 0xd0, - 0x08, 0xac, 0x64, 0x67, 0xff, 0xb7, 0xd8, 0x69, 0xa9, 0xaf, 0x55, 0xa1, 0xe0, 0x07, 0x8d, 0x46, - 0x57, 0x74, 0x34, 0x09, 0xf0, 0x1f, 0xbc, 0x1b, 0xbe, 0xe4, 0x86, 0x98, 0x95, 0x8b, 0xc3, 0xef, - 0xeb, 0x60, 0xcd, 0x5d, 0x73, 0xf9, 0x4d, 0x1d, 0xfc, 0x46, 0x16, 0x16, 0x4d, 0xb7, 0x7d, 0xe0, - 0xfa, 0xcb, 0x3c, 0xa1, 0x44, 0x92, 0xd1, 0x72, 0xb8, 0x0e, 0x79, 0xe1, 0x16, 0x0a, 0xe6, 0xce, - 0x76, 0x55, 0xb7, 0xf0, 0x57, 0x69, 0xc8, 0xd5, 0xb0, 0x1f, 0xe0, 0x3b, 0xf8, 0x08, 0x75, 0x60, - 0x86, 0xfe, 0xde, 0xc4, 0x1d, 0x76, 0xf1, 0x23, 0x4e, 0x9a, 0xb8, 0x0d, 0xfd, 0xe0, 0x52, 0xef, - 0xa9, 0x12, 0xb1, 0x34, 0x44, 0x9d, 0x7d, 0x80, 0x5d, 0x51, 0x5f, 0xff, 0x87, 0x0b, 0x63, 0x3f, - 0xff, 0x8f, 0x17, 0x72, 0x9b, 0x47, 0xcf, 0x5a, 0xb6, 0xef, 0x3a, 0xfa, 0x30, 0x6a, 0xf4, 0x19, - 0x05, 0x1e, 0x18, 0x22, 0xdf, 0x12, 0xc7, 0x51, 0x7c, 0x53, 0xb8, 0x3c, 0xe2, 0xa3, 0x25, 0x8c, - 0x9b, 0x50, 0x8c, 0x3d, 0xfe, 0xb4, 0xc7, 0xcc, 0x3d, 0x0f, 0xe5, 0x93, 0x56, 0x82, 0x54, 0x48, - 0xdf, 0x22, 0x47, 0xe2, 0x5f, 0x28, 0xe9, 0x4f, 0xf4, 0x48, 0xef, 0x5f, 0xb0, 0x94, 0xc5, 0xc2, - 0xa5, 0xe9, 0x88, 0x75, 0xe2, 0x61, 0x7c, 0x5e, 0x4b, 0x5d, 0x53, 0xe6, 0x30, 0xcc, 0x27, 0x59, - 0xfa, 0x7f, 0x7c, 0xc4, 0x42, 0x05, 0xc6, 0xb9, 0x10, 0xcd, 0x42, 0x76, 0xdd, 0x09, 0xae, 0x5e, - 0x66, 0x54, 0x69, 0x9d, 0x0f, 0x56, 0x36, 0x5e, 0xbf, 0x57, 0x19, 0xfb, 0xee, 0xbd, 0xca, 0xd8, - 0xdf, 0xdd, 0xab, 0x8c, 0x7d, 0xff, 0x5e, 0x45, 0x79, 0xf3, 0x5e, 0x45, 0x79, 0xfb, 0x5e, 0x45, - 0xf9, 0xe1, 0xbd, 0x8a, 0x72, 0xf7, 0xb8, 0xa2, 0x7c, 0xf5, 0xb8, 0xa2, 0x7c, 0xfd, 0xb8, 0xa2, - 0x7c, 0xeb, 0xb8, 0xa2, 0x7c, 0xfb, 0xb8, 0xa2, 0xbc, 0x7e, 0x5c, 0x19, 0xfb, 0xee, 0x71, 0x65, - 0xec, 0xfb, 0xc7, 0x15, 0xe5, 0xcd, 0xe3, 0xca, 0xd8, 0xdb, 0xc7, 0x15, 0xe5, 0x87, 0xc7, 0x95, - 0xb1, 0xbb, 0xff, 0x54, 0x51, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x51, 0x7f, 0x4f, 0xdb, 0x13, + // 3795 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x29, 0x88, 0x8e, 0x21, 0x8a, 0xb1, + 0x23, 0xda, 0x4e, 0xc8, 0x8c, 0x2c, 0xc9, 0x32, 0xd4, 0xc4, 0x03, 0x82, 0x10, 0x03, 0x95, 0x24, + 0x90, 0x05, 0x19, 0x4b, 0xe9, 0xc3, 0xce, 0xe5, 0xe2, 0x02, 0x5c, 0x69, 0xb1, 0x8b, 0xec, 0x2e, + 0x24, 0xd3, 0x4f, 0xea, 0x38, 0x6d, 0x27, 0xed, 0xf4, 0xbf, 0xd3, 0x26, 0xae, 0xe3, 0xb6, 0x99, + 0x69, 0x9d, 0x26, 0xfd, 0x49, 0xfa, 0x93, 0x66, 0xfa, 0x94, 0x3e, 0xa4, 0xf5, 0x53, 0x27, 0x79, + 0xeb, 0x43, 0xa7, 0xb5, 0x18, 0xcf, 0xd4, 0x6d, 0xdd, 0xd6, 0x6d, 0x3c, 0xd3, 0xcc, 0xe8, 0xa5, + 0x73, 0xff, 0x16, 0xbb, 0x00, 0xc8, 0x05, 0xd3, 0x71, 0xf2, 0x44, 0xdc, 0x73, 0xcf, 0xf7, 0xed, + 0xb9, 0xe7, 0x9e, 0x7b, 0xce, 0xd9, 0xbb, 0x84, 0xef, 0x5d, 0x86, 0xa5, 0xb6, 0x6d, 0xb7, 0x4d, + 0xbc, 0xd6, 0x75, 0x6c, 0xcf, 0xde, 0xef, 0xb5, 0xd6, 0x9a, 0xd8, 0xd5, 0x1d, 0xa3, 0xeb, 0xd9, + 0xce, 0x2a, 0x95, 0x29, 0x33, 0x4c, 0x63, 0x55, 0x68, 0x2c, 0x6f, 0xc3, 0xec, 0x75, 0xc3, 0xc4, + 0x1b, 0xbe, 0x62, 0x03, 0x7b, 0xca, 0x55, 0x48, 0xb4, 0x0c, 0x13, 0xe7, 0xa5, 0xa5, 0xf8, 0x4a, + 0xe6, 0xe2, 0xe3, 0xab, 0x03, 0xa0, 0xd5, 0x30, 0xa2, 0x4e, 0xc4, 0x2a, 0x45, 0x2c, 0xbf, 0x95, + 0x80, 0xb9, 0x11, 0xb3, 0x8a, 0x02, 0x09, 0x0b, 0x75, 0x08, 0xa3, 0xb4, 0x92, 0x56, 0xe9, 0x6f, + 0x25, 0x0f, 0x53, 0x5d, 0xa4, 0xdf, 0x41, 0x6d, 0x9c, 0x8f, 0x51, 0xb1, 0x18, 0x2a, 0x05, 0x80, + 0x26, 0xee, 0x62, 0xab, 0x89, 0x2d, 0xfd, 0x30, 0x1f, 0x5f, 0x8a, 0xaf, 0xa4, 0xd5, 0x80, 0x44, + 0x79, 0x1a, 0x66, 0xbb, 0xbd, 0x7d, 0xd3, 0xd0, 0xb5, 0x80, 0x1a, 0x2c, 0xc5, 0x57, 0x92, 0xaa, + 0xcc, 0x26, 0x36, 0xfa, 0xca, 0x17, 0x60, 0xe6, 0x1e, 0x46, 0x77, 0x82, 0xaa, 0x19, 0xaa, 0x9a, + 0x23, 0xe2, 0x80, 0x62, 0x19, 0xb2, 0x1d, 0xec, 0xba, 0xa8, 0x8d, 0x35, 0xef, 0xb0, 0x8b, 0xf3, + 0x09, 0xba, 0xfa, 0xa5, 0xa1, 0xd5, 0x0f, 0xae, 0x3c, 0xc3, 0x51, 0xbb, 0x87, 0x5d, 0xac, 0x94, + 0x20, 0x8d, 0xad, 0x5e, 0x87, 0x31, 0x24, 0x8f, 0xf1, 0x5f, 0xc5, 0xea, 0x75, 0x06, 0x59, 0x52, + 0x04, 0xc6, 0x29, 0xa6, 0x5c, 0xec, 0xdc, 0x35, 0x74, 0x9c, 0x9f, 0xa4, 0x04, 0x17, 0x86, 0x08, + 0x1a, 0x6c, 0x7e, 0x90, 0x43, 0xe0, 0x94, 0x32, 0xa4, 0xf1, 0x8b, 0x1e, 0xb6, 0x5c, 0xc3, 0xb6, + 0xf2, 0x53, 0x94, 0xe4, 0x89, 0x11, 0xbb, 0x88, 0xcd, 0xe6, 0x20, 0x45, 0x1f, 0xa7, 0x5c, 0x81, + 0x29, 0xbb, 0xeb, 0x19, 0xb6, 0xe5, 0xe6, 0x53, 0x4b, 0xd2, 0x4a, 0xe6, 0xe2, 0x07, 0x46, 0x06, + 0x42, 0x8d, 0xe9, 0xa8, 0x42, 0x59, 0xa9, 0x82, 0xec, 0xda, 0x3d, 0x47, 0xc7, 0x9a, 0x6e, 0x37, + 0xb1, 0x66, 0x58, 0x2d, 0x3b, 0x9f, 0xa6, 0x04, 0xe7, 0x86, 0x17, 0x42, 0x15, 0xcb, 0x76, 0x13, + 0x57, 0xad, 0x96, 0xad, 0xe6, 0xdc, 0xd0, 0x58, 0x59, 0x80, 0x49, 0xf7, 0xd0, 0xf2, 0xd0, 0x8b, + 0xf9, 0x2c, 0x8d, 0x10, 0x3e, 0x5a, 0xfe, 0xdf, 0x24, 0xcc, 0x8c, 0x13, 0x62, 0xd7, 0x20, 0xd9, + 0x22, 0xab, 0xcc, 0xc7, 0x4e, 0xe3, 0x03, 0x86, 0x09, 0x3b, 0x71, 0xf2, 0x87, 0x74, 0x62, 0x09, + 0x32, 0x16, 0x76, 0x3d, 0xdc, 0x64, 0x11, 0x11, 0x1f, 0x33, 0xa6, 0x80, 0x81, 0x86, 0x43, 0x2a, + 0xf1, 0x43, 0x85, 0xd4, 0x4d, 0x98, 0xf1, 0x4d, 0xd2, 0x1c, 0x64, 0xb5, 0x45, 0x6c, 0xae, 0x45, + 0x59, 0xb2, 0x5a, 0x11, 0x38, 0x95, 0xc0, 0xd4, 0x1c, 0x0e, 0x8d, 0x95, 0x0d, 0x00, 0xdb, 0xc2, + 0x76, 0x4b, 0x6b, 0x62, 0xdd, 0xcc, 0xa7, 0x8e, 0xf1, 0x52, 0x8d, 0xa8, 0x0c, 0x79, 0xc9, 0x66, + 0x52, 0xdd, 0x54, 0x9e, 0xeb, 0x87, 0xda, 0xd4, 0x31, 0x91, 0xb2, 0xcd, 0x0e, 0xd9, 0x50, 0xb4, + 0xed, 0x41, 0xce, 0xc1, 0x24, 0xee, 0x71, 0x93, 0xaf, 0x2c, 0x4d, 0x8d, 0x58, 0x8d, 0x5c, 0x99, + 0xca, 0x61, 0x6c, 0x61, 0xd3, 0x4e, 0x70, 0xa8, 0x7c, 0x10, 0x7c, 0x81, 0x46, 0xc3, 0x0a, 0x68, + 0x16, 0xca, 0x0a, 0xe1, 0x0e, 0xea, 0xe0, 0xc5, 0xab, 0x90, 0x0b, 0xbb, 0x47, 0x99, 0x87, 0xa4, + 0xeb, 0x21, 0xc7, 0xa3, 0x51, 0x98, 0x54, 0xd9, 0x40, 0x91, 0x21, 0x8e, 0xad, 0x26, 0xcd, 0x72, + 0x49, 0x95, 0xfc, 0x5c, 0x7c, 0x16, 0xa6, 0x43, 0x8f, 0x1f, 0x17, 0xb8, 0xfc, 0xf9, 0x49, 0x98, + 0x1f, 0x15, 0x73, 0x23, 0xc3, 0x7f, 0x01, 0x26, 0xad, 0x5e, 0x67, 0x1f, 0x3b, 0xf9, 0x38, 0x65, + 0xe0, 0x23, 0xa5, 0x04, 0x49, 0x13, 0xed, 0x63, 0x33, 0x9f, 0x58, 0x92, 0x56, 0x72, 0x17, 0x9f, + 0x1e, 0x2b, 0xaa, 0x57, 0xb7, 0x08, 0x44, 0x65, 0x48, 0xe5, 0xe3, 0x90, 0xe0, 0x29, 0x8e, 0x30, + 0x3c, 0x35, 0x1e, 0x03, 0x89, 0x45, 0x95, 0xe2, 0x94, 0x47, 0x21, 0x4d, 0xfe, 0x32, 0xdf, 0x4e, + 0x52, 0x9b, 0x53, 0x44, 0x40, 0xfc, 0xaa, 0x2c, 0x42, 0x8a, 0x86, 0x59, 0x13, 0x8b, 0xd2, 0xe0, + 0x8f, 0xc9, 0xc6, 0x34, 0x71, 0x0b, 0xf5, 0x4c, 0x4f, 0xbb, 0x8b, 0xcc, 0x1e, 0xa6, 0x01, 0x93, + 0x56, 0xb3, 0x5c, 0xf8, 0x29, 0x22, 0x53, 0xce, 0x41, 0x86, 0x45, 0xa5, 0x61, 0x35, 0xf1, 0x8b, + 0x34, 0xfb, 0x24, 0x55, 0x16, 0xa8, 0x55, 0x22, 0x21, 0x8f, 0xbf, 0xed, 0xda, 0x96, 0xd8, 0x5a, + 0xfa, 0x08, 0x22, 0xa0, 0x8f, 0x7f, 0x76, 0x30, 0xf1, 0x3d, 0x36, 0x7a, 0x79, 0x83, 0xb1, 0xb8, + 0xfc, 0x8d, 0x18, 0x24, 0xe8, 0x79, 0x9b, 0x81, 0xcc, 0xee, 0xad, 0x7a, 0x45, 0xdb, 0xa8, 0xed, + 0xad, 0x6f, 0x55, 0x64, 0x49, 0xc9, 0x01, 0x50, 0xc1, 0xf5, 0xad, 0x5a, 0x69, 0x57, 0x8e, 0xf9, + 0xe3, 0xea, 0xce, 0xee, 0x95, 0x4b, 0x72, 0xdc, 0x07, 0xec, 0x31, 0x41, 0x22, 0xa8, 0xf0, 0xcc, + 0x45, 0x39, 0xa9, 0xc8, 0x90, 0x65, 0x04, 0xd5, 0x9b, 0x95, 0x8d, 0x2b, 0x97, 0xe4, 0xc9, 0xb0, + 0xe4, 0x99, 0x8b, 0xf2, 0x94, 0x32, 0x0d, 0x69, 0x2a, 0x59, 0xaf, 0xd5, 0xb6, 0xe4, 0x94, 0xcf, + 0xd9, 0xd8, 0x55, 0xab, 0x3b, 0x9b, 0x72, 0xda, 0xe7, 0xdc, 0x54, 0x6b, 0x7b, 0x75, 0x19, 0x7c, + 0x86, 0xed, 0x4a, 0xa3, 0x51, 0xda, 0xac, 0xc8, 0x19, 0x5f, 0x63, 0xfd, 0xd6, 0x6e, 0xa5, 0x21, + 0x67, 0x43, 0x66, 0x3d, 0x73, 0x51, 0x9e, 0xf6, 0x1f, 0x51, 0xd9, 0xd9, 0xdb, 0x96, 0x73, 0xca, + 0x2c, 0x4c, 0xb3, 0x47, 0x08, 0x23, 0x66, 0x06, 0x44, 0x57, 0x2e, 0xc9, 0x72, 0xdf, 0x10, 0xc6, + 0x32, 0x1b, 0x12, 0x5c, 0xb9, 0x24, 0x2b, 0xcb, 0x65, 0x48, 0xd2, 0xe8, 0x52, 0x14, 0xc8, 0x6d, + 0x95, 0xd6, 0x2b, 0x5b, 0x5a, 0xad, 0xbe, 0x5b, 0xad, 0xed, 0x94, 0xb6, 0x64, 0xa9, 0x2f, 0x53, + 0x2b, 0x9f, 0xdc, 0xab, 0xaa, 0x95, 0x0d, 0x39, 0x16, 0x94, 0xd5, 0x2b, 0xa5, 0xdd, 0xca, 0x86, + 0x1c, 0x5f, 0xd6, 0x61, 0x7e, 0x54, 0x9e, 0x19, 0x79, 0x32, 0x02, 0x5b, 0x1c, 0x3b, 0x66, 0x8b, + 0x29, 0xd7, 0xd0, 0x16, 0x7f, 0x49, 0x82, 0xb9, 0x11, 0xb9, 0x76, 0xe4, 0x43, 0x9e, 0x87, 0x24, + 0x0b, 0x51, 0x56, 0x7d, 0x9e, 0x1c, 0x99, 0xb4, 0x69, 0xc0, 0x0e, 0x55, 0x20, 0x8a, 0x0b, 0x56, + 0xe0, 0xf8, 0x31, 0x15, 0x98, 0x50, 0x0c, 0x19, 0xf9, 0xb2, 0x04, 0xf9, 0xe3, 0xb8, 0x23, 0x12, + 0x45, 0x2c, 0x94, 0x28, 0xae, 0x0d, 0x1a, 0x70, 0xfe, 0xf8, 0x35, 0x0c, 0x59, 0xf1, 0xba, 0x04, + 0x0b, 0xa3, 0x1b, 0x95, 0x91, 0x36, 0x7c, 0x1c, 0x26, 0x3b, 0xd8, 0x3b, 0xb0, 0x45, 0xb1, 0xfe, + 0xd0, 0x88, 0x12, 0x40, 0xa6, 0x07, 0x7d, 0xc5, 0x51, 0xc1, 0x1a, 0x12, 0x3f, 0xae, 0xdb, 0x60, + 0xd6, 0x0c, 0x59, 0xfa, 0xb9, 0x18, 0x3c, 0x32, 0x92, 0x7c, 0xa4, 0xa1, 0x8f, 0x01, 0x18, 0x56, + 0xb7, 0xe7, 0xb1, 0x82, 0xcc, 0xf2, 0x53, 0x9a, 0x4a, 0xe8, 0xd9, 0x27, 0xb9, 0xa7, 0xe7, 0xf9, + 0xf3, 0x71, 0x3a, 0x0f, 0x4c, 0x44, 0x15, 0xae, 0xf6, 0x0d, 0x4d, 0x50, 0x43, 0x0b, 0xc7, 0xac, + 0x74, 0xa8, 0xd6, 0x7d, 0x14, 0x64, 0xdd, 0x34, 0xb0, 0xe5, 0x69, 0xae, 0xe7, 0x60, 0xd4, 0x31, + 0xac, 0x36, 0x4d, 0xc0, 0xa9, 0x62, 0xb2, 0x85, 0x4c, 0x17, 0xab, 0x33, 0x6c, 0xba, 0x21, 0x66, + 0x09, 0x82, 0x56, 0x19, 0x27, 0x80, 0x98, 0x0c, 0x21, 0xd8, 0xb4, 0x8f, 0x58, 0xfe, 0xea, 0x14, + 0x64, 0x02, 0x6d, 0x9d, 0x72, 0x1e, 0xb2, 0xb7, 0xd1, 0x5d, 0xa4, 0x89, 0x56, 0x9d, 0x79, 0x22, + 0x43, 0x64, 0x75, 0xde, 0xae, 0x7f, 0x14, 0xe6, 0xa9, 0x8a, 0xdd, 0xf3, 0xb0, 0xa3, 0xe9, 0x26, + 0x72, 0x5d, 0xea, 0xb4, 0x14, 0x55, 0x55, 0xc8, 0x5c, 0x8d, 0x4c, 0x95, 0xc5, 0x8c, 0x72, 0x19, + 0xe6, 0x28, 0xa2, 0xd3, 0x33, 0x3d, 0xa3, 0x6b, 0x62, 0x8d, 0xbc, 0x3c, 0xb8, 0x34, 0x11, 0xfb, + 0x96, 0xcd, 0x12, 0x8d, 0x6d, 0xae, 0x40, 0x2c, 0x72, 0x95, 0x0d, 0x78, 0x8c, 0xc2, 0xda, 0xd8, + 0xc2, 0x0e, 0xf2, 0xb0, 0x86, 0x3f, 0xd3, 0x43, 0xa6, 0xab, 0x21, 0xab, 0xa9, 0x1d, 0x20, 0xf7, + 0x20, 0x3f, 0x4f, 0x08, 0xd6, 0x63, 0x79, 0x49, 0x3d, 0x4b, 0x14, 0x37, 0xb9, 0x5e, 0x85, 0xaa, + 0x95, 0xac, 0xe6, 0x27, 0x90, 0x7b, 0xa0, 0x14, 0x61, 0x81, 0xb2, 0xb8, 0x9e, 0x63, 0x58, 0x6d, + 0x4d, 0x3f, 0xc0, 0xfa, 0x1d, 0xad, 0xe7, 0xb5, 0xae, 0xe6, 0x1f, 0x0d, 0x3e, 0x9f, 0x5a, 0xd8, + 0xa0, 0x3a, 0x65, 0xa2, 0xb2, 0xe7, 0xb5, 0xae, 0x2a, 0x0d, 0xc8, 0x92, 0xcd, 0xe8, 0x18, 0x2f, + 0x61, 0xad, 0x65, 0x3b, 0xb4, 0xb2, 0xe4, 0x46, 0x9c, 0xec, 0x80, 0x07, 0x57, 0x6b, 0x1c, 0xb0, + 0x6d, 0x37, 0x71, 0x31, 0xd9, 0xa8, 0x57, 0x2a, 0x1b, 0x6a, 0x46, 0xb0, 0x5c, 0xb7, 0x1d, 0x12, + 0x50, 0x6d, 0xdb, 0x77, 0x70, 0x86, 0x05, 0x54, 0xdb, 0x16, 0xee, 0xbd, 0x0c, 0x73, 0xba, 0xce, + 0xd6, 0x6c, 0xe8, 0x1a, 0x6f, 0xf1, 0xdd, 0xbc, 0x1c, 0x72, 0x96, 0xae, 0x6f, 0x32, 0x05, 0x1e, + 0xe3, 0xae, 0xf2, 0x1c, 0x3c, 0xd2, 0x77, 0x56, 0x10, 0x38, 0x3b, 0xb4, 0xca, 0x41, 0xe8, 0x65, + 0x98, 0xeb, 0x1e, 0x0e, 0x03, 0x95, 0xd0, 0x13, 0xbb, 0x87, 0x83, 0xb0, 0x27, 0xe8, 0x6b, 0x9b, + 0x83, 0x75, 0xe4, 0xe1, 0x66, 0xfe, 0x4c, 0x50, 0x3b, 0x30, 0xa1, 0xac, 0x81, 0xac, 0xeb, 0x1a, + 0xb6, 0xd0, 0xbe, 0x89, 0x35, 0xe4, 0x60, 0x0b, 0xb9, 0xf9, 0x73, 0x41, 0xe5, 0x9c, 0xae, 0x57, + 0xe8, 0x6c, 0x89, 0x4e, 0x2a, 0x4f, 0xc1, 0xac, 0xbd, 0x7f, 0x5b, 0x67, 0x91, 0xa5, 0x75, 0x1d, + 0xdc, 0x32, 0x5e, 0xcc, 0x3f, 0x4e, 0xdd, 0x34, 0x43, 0x26, 0x68, 0x5c, 0xd5, 0xa9, 0x58, 0x79, + 0x12, 0x64, 0xdd, 0x3d, 0x40, 0x4e, 0x97, 0x96, 0x76, 0xb7, 0x8b, 0x74, 0x9c, 0x7f, 0x82, 0xa9, + 0x32, 0xf9, 0x8e, 0x10, 0x93, 0xc8, 0x76, 0xef, 0x19, 0x2d, 0x4f, 0x30, 0x5e, 0x60, 0x91, 0x4d, + 0x65, 0x9c, 0xed, 0x26, 0xcc, 0xf7, 0x2c, 0xc3, 0xf2, 0xb0, 0xd3, 0x75, 0x30, 0x69, 0xe2, 0xd9, + 0x49, 0xcc, 0xff, 0xcb, 0xd4, 0x31, 0x6d, 0xf8, 0x5e, 0x50, 0x9b, 0x05, 0x80, 0x3a, 0xd7, 0x1b, + 0x16, 0x2e, 0x17, 0x21, 0x1b, 0x8c, 0x0b, 0x25, 0x0d, 0x2c, 0x32, 0x64, 0x89, 0xd4, 0xd8, 0x72, + 0x6d, 0x83, 0x54, 0xc7, 0x4f, 0x57, 0xe4, 0x18, 0xa9, 0xd2, 0x5b, 0xd5, 0xdd, 0x8a, 0xa6, 0xee, + 0xed, 0xec, 0x56, 0xb7, 0x2b, 0x72, 0xfc, 0xa9, 0x74, 0xea, 0xed, 0x29, 0xf9, 0xfe, 0xfd, 0xfb, + 0xf7, 0x63, 0xcb, 0xdf, 0x8e, 0x41, 0x2e, 0xdc, 0x19, 0x2b, 0x3f, 0x01, 0x67, 0xc4, 0x6b, 0xac, + 0x8b, 0x3d, 0xed, 0x9e, 0xe1, 0xd0, 0x50, 0xed, 0x20, 0xd6, 0x5b, 0xfa, 0x5e, 0x9e, 0xe7, 0x5a, + 0x0d, 0xec, 0xbd, 0x60, 0x38, 0x24, 0x10, 0x3b, 0xc8, 0x53, 0xb6, 0xe0, 0x9c, 0x65, 0x6b, 0xae, + 0x87, 0xac, 0x26, 0x72, 0x9a, 0x5a, 0xff, 0x02, 0x41, 0x43, 0xba, 0x8e, 0x5d, 0xd7, 0x66, 0x25, + 0xc2, 0x67, 0xf9, 0x80, 0x65, 0x37, 0xb8, 0x72, 0x3f, 0x77, 0x96, 0xb8, 0xea, 0x40, 0x44, 0xc4, + 0x8f, 0x8b, 0x88, 0x47, 0x21, 0xdd, 0x41, 0x5d, 0x0d, 0x5b, 0x9e, 0x73, 0x48, 0xfb, 0xb9, 0x94, + 0x9a, 0xea, 0xa0, 0x6e, 0x85, 0x8c, 0xdf, 0xbf, 0x3d, 0x08, 0xfa, 0xf1, 0x1f, 0xe3, 0x90, 0x0d, + 0xf6, 0x74, 0xa4, 0x45, 0xd6, 0x69, 0xfe, 0x96, 0xe8, 0x09, 0xff, 0xe0, 0x89, 0x1d, 0xe0, 0x6a, + 0x99, 0x24, 0xf6, 0xe2, 0x24, 0xeb, 0xb4, 0x54, 0x86, 0x24, 0x45, 0x95, 0x9c, 0x69, 0xcc, 0xfa, + 0xf7, 0x94, 0xca, 0x47, 0xca, 0x26, 0x4c, 0xde, 0x76, 0x29, 0xf7, 0x24, 0xe5, 0x7e, 0xfc, 0x64, + 0xee, 0x1b, 0x0d, 0x4a, 0x9e, 0xbe, 0xd1, 0xd0, 0x76, 0x6a, 0xea, 0x76, 0x69, 0x4b, 0xe5, 0x70, + 0xe5, 0x2c, 0x24, 0x4c, 0xf4, 0xd2, 0x61, 0xb8, 0x04, 0x50, 0xd1, 0xb8, 0x8e, 0x3f, 0x0b, 0x89, + 0x7b, 0x18, 0xdd, 0x09, 0x27, 0x5e, 0x2a, 0x7a, 0x1f, 0x43, 0x7f, 0x0d, 0x92, 0xd4, 0x5f, 0x0a, + 0x00, 0xf7, 0x98, 0x3c, 0xa1, 0xa4, 0x20, 0x51, 0xae, 0xa9, 0x24, 0xfc, 0x65, 0xc8, 0x32, 0xa9, + 0x56, 0xaf, 0x56, 0xca, 0x15, 0x39, 0xb6, 0x7c, 0x19, 0x26, 0x99, 0x13, 0xc8, 0xd1, 0xf0, 0xdd, + 0x20, 0x4f, 0xf0, 0x21, 0xe7, 0x90, 0xc4, 0xec, 0xde, 0xf6, 0x7a, 0x45, 0x95, 0x63, 0xc1, 0xed, + 0x75, 0x21, 0x1b, 0x6c, 0xe7, 0x7e, 0x34, 0x31, 0xf5, 0xd7, 0x12, 0x64, 0x02, 0xed, 0x19, 0x69, + 0x0c, 0x90, 0x69, 0xda, 0xf7, 0x34, 0x64, 0x1a, 0xc8, 0xe5, 0x41, 0x01, 0x54, 0x54, 0x22, 0x92, + 0x71, 0x37, 0xed, 0x47, 0x62, 0xfc, 0x6b, 0x12, 0xc8, 0x83, 0xad, 0xdd, 0x80, 0x81, 0xd2, 0x8f, + 0xd5, 0xc0, 0x57, 0x25, 0xc8, 0x85, 0xfb, 0xb9, 0x01, 0xf3, 0xce, 0xff, 0x58, 0xcd, 0x7b, 0x33, + 0x06, 0xd3, 0xa1, 0x2e, 0x6e, 0x5c, 0xeb, 0x3e, 0x03, 0xb3, 0x46, 0x13, 0x77, 0xba, 0xb6, 0x87, + 0x2d, 0xfd, 0x50, 0x33, 0xf1, 0x5d, 0x6c, 0xe6, 0x97, 0x69, 0xa2, 0x58, 0x3b, 0xb9, 0x4f, 0x5c, + 0xad, 0xf6, 0x71, 0x5b, 0x04, 0x56, 0x9c, 0xab, 0x6e, 0x54, 0xb6, 0xeb, 0xb5, 0xdd, 0xca, 0x4e, + 0xf9, 0x96, 0xb6, 0xb7, 0xf3, 0x93, 0x3b, 0xb5, 0x17, 0x76, 0x54, 0xd9, 0x18, 0x50, 0x7b, 0x1f, + 0x8f, 0x7a, 0x1d, 0xe4, 0x41, 0xa3, 0x94, 0x33, 0x30, 0xca, 0x2c, 0x79, 0x42, 0x99, 0x83, 0x99, + 0x9d, 0x9a, 0xd6, 0xa8, 0x6e, 0x54, 0xb4, 0xca, 0xf5, 0xeb, 0x95, 0xf2, 0x6e, 0x83, 0xbd, 0x38, + 0xfb, 0xda, 0xbb, 0xe1, 0x43, 0xfd, 0x4a, 0x1c, 0xe6, 0x46, 0x58, 0xa2, 0x94, 0x78, 0xcf, 0xce, + 0x5e, 0x23, 0x3e, 0x32, 0x8e, 0xf5, 0xab, 0xa4, 0x2b, 0xa8, 0x23, 0xc7, 0xe3, 0x2d, 0xfe, 0x93, + 0x40, 0xbc, 0x64, 0x79, 0x46, 0xcb, 0xc0, 0x0e, 0xbf, 0x67, 0x60, 0x8d, 0xfc, 0x4c, 0x5f, 0xce, + 0xae, 0x1a, 0x3e, 0x0c, 0x4a, 0xd7, 0x76, 0x0d, 0xcf, 0xb8, 0x8b, 0x35, 0xc3, 0x12, 0x97, 0x12, + 0xa4, 0xb1, 0x4f, 0xa8, 0xb2, 0x98, 0xa9, 0x5a, 0x9e, 0xaf, 0x6d, 0xe1, 0x36, 0x1a, 0xd0, 0x26, + 0x09, 0x3c, 0xae, 0xca, 0x62, 0xc6, 0xd7, 0x3e, 0x0f, 0xd9, 0xa6, 0xdd, 0x23, 0x6d, 0x12, 0xd3, + 0x23, 0xf5, 0x42, 0x52, 0x33, 0x4c, 0xe6, 0xab, 0xf0, 0x3e, 0xb6, 0x7f, 0x1b, 0x92, 0x55, 0x33, + 0x4c, 0xc6, 0x54, 0x2e, 0xc0, 0x0c, 0x6a, 0xb7, 0x1d, 0x42, 0x2e, 0x88, 0x58, 0x67, 0x9e, 0xf3, + 0xc5, 0x54, 0x71, 0xf1, 0x06, 0xa4, 0x84, 0x1f, 0x48, 0x49, 0x26, 0x9e, 0xd0, 0xba, 0xec, 0x4e, + 0x2a, 0xb6, 0x92, 0x56, 0x53, 0x96, 0x98, 0x3c, 0x0f, 0x59, 0xc3, 0xd5, 0xfa, 0x97, 0xa3, 0xb1, + 0xa5, 0xd8, 0x4a, 0x4a, 0xcd, 0x18, 0xae, 0x7f, 0x1b, 0xb6, 0xfc, 0x7a, 0x0c, 0x72, 0xe1, 0xcb, + 0x5d, 0x65, 0x03, 0x52, 0xa6, 0xad, 0x23, 0x1a, 0x5a, 0xec, 0xcb, 0xc2, 0x4a, 0xc4, 0x7d, 0xf0, + 0xea, 0x16, 0xd7, 0x57, 0x7d, 0xe4, 0xe2, 0xdf, 0x4b, 0x90, 0x12, 0x62, 0x65, 0x01, 0x12, 0x5d, + 0xe4, 0x1d, 0x50, 0xba, 0xe4, 0x7a, 0x4c, 0x96, 0x54, 0x3a, 0x26, 0x72, 0xb7, 0x8b, 0x2c, 0x1a, + 0x02, 0x5c, 0x4e, 0xc6, 0x64, 0x5f, 0x4d, 0x8c, 0x9a, 0xb4, 0xed, 0xb7, 0x3b, 0x1d, 0x6c, 0x79, + 0xae, 0xd8, 0x57, 0x2e, 0x2f, 0x73, 0xb1, 0xf2, 0x34, 0xcc, 0x7a, 0x0e, 0x32, 0xcc, 0x90, 0x6e, + 0x82, 0xea, 0xca, 0x62, 0xc2, 0x57, 0x2e, 0xc2, 0x59, 0xc1, 0xdb, 0xc4, 0x1e, 0xd2, 0x0f, 0x70, + 0xb3, 0x0f, 0x9a, 0xa4, 0x37, 0x87, 0x67, 0xb8, 0xc2, 0x06, 0x9f, 0x17, 0xd8, 0xe5, 0xef, 0x4a, + 0x30, 0x2b, 0x5e, 0x54, 0x9a, 0xbe, 0xb3, 0xb6, 0x01, 0x90, 0x65, 0xd9, 0x5e, 0xd0, 0x5d, 0xc3, + 0xa1, 0x3c, 0x84, 0x5b, 0x2d, 0xf9, 0x20, 0x35, 0x40, 0xb0, 0xd8, 0x01, 0xe8, 0xcf, 0x1c, 0xeb, + 0xb6, 0x73, 0x90, 0xe1, 0x37, 0xf7, 0xf4, 0xf3, 0x0f, 0x7b, 0xb5, 0x05, 0x26, 0x22, 0x6f, 0x34, + 0xca, 0x3c, 0x24, 0xf7, 0x71, 0xdb, 0xb0, 0xf8, 0x7d, 0x22, 0x1b, 0x88, 0x5b, 0xca, 0x84, 0x7f, + 0x4b, 0xb9, 0x7e, 0x13, 0xe6, 0x74, 0xbb, 0x33, 0x68, 0xee, 0xba, 0x3c, 0xf0, 0x7a, 0xed, 0x7e, + 0x42, 0xfa, 0x34, 0xf4, 0x5b, 0xcc, 0x2f, 0xc5, 0xe2, 0x9b, 0xf5, 0xf5, 0xaf, 0xc4, 0x16, 0x37, + 0x19, 0xae, 0x2e, 0x96, 0xa9, 0xe2, 0x96, 0x89, 0x75, 0x62, 0x3a, 0x7c, 0xff, 0x43, 0xf0, 0x91, + 0xb6, 0xe1, 0x1d, 0xf4, 0xf6, 0x57, 0x75, 0xbb, 0xb3, 0xd6, 0xb6, 0xdb, 0x76, 0xff, 0x73, 0x17, + 0x19, 0xd1, 0x01, 0xfd, 0xc5, 0x3f, 0x79, 0xa5, 0x7d, 0xe9, 0x62, 0xe4, 0xf7, 0xb1, 0xe2, 0x0e, + 0xcc, 0x71, 0x65, 0x8d, 0xde, 0xb9, 0xb3, 0x57, 0x03, 0xe5, 0xc4, 0x7b, 0x97, 0xfc, 0xd7, 0xdf, + 0xa2, 0xb5, 0x5a, 0x9d, 0xe5, 0x50, 0x32, 0xc7, 0x5e, 0x20, 0x8a, 0x2a, 0x3c, 0x12, 0xe2, 0x63, + 0xe7, 0x12, 0x3b, 0x11, 0x8c, 0xdf, 0xe6, 0x8c, 0x73, 0x01, 0xc6, 0x06, 0x87, 0x16, 0xcb, 0x30, + 0x7d, 0x1a, 0xae, 0xbf, 0xe5, 0x5c, 0x59, 0x1c, 0x24, 0xd9, 0x84, 0x19, 0x4a, 0xa2, 0xf7, 0x5c, + 0xcf, 0xee, 0xd0, 0xa4, 0x77, 0x32, 0xcd, 0xdf, 0xbd, 0xc5, 0x0e, 0x4a, 0x8e, 0xc0, 0xca, 0x3e, + 0xaa, 0x58, 0x04, 0xfa, 0x99, 0xa1, 0x89, 0x75, 0x33, 0x82, 0xe1, 0x0d, 0x6e, 0x88, 0xaf, 0x5f, + 0xfc, 0x14, 0xcc, 0x93, 0xdf, 0x34, 0x27, 0x05, 0x2d, 0x89, 0xbe, 0x65, 0xca, 0x7f, 0xf7, 0x65, + 0x76, 0x16, 0xe7, 0x7c, 0x82, 0x80, 0x4d, 0x81, 0x5d, 0x6c, 0x63, 0xcf, 0xc3, 0x8e, 0xab, 0x21, + 0x73, 0x94, 0x79, 0x81, 0xd7, 0xf4, 0xfc, 0x17, 0xde, 0x09, 0xef, 0xe2, 0x26, 0x43, 0x96, 0x4c, + 0xb3, 0xb8, 0x07, 0x67, 0x46, 0x44, 0xc5, 0x18, 0x9c, 0xaf, 0x70, 0xce, 0xf9, 0xa1, 0xc8, 0x20, + 0xb4, 0x75, 0x10, 0x72, 0x7f, 0x2f, 0xc7, 0xe0, 0xfc, 0x6d, 0xce, 0xa9, 0x70, 0xac, 0xd8, 0x52, + 0xc2, 0x78, 0x03, 0x66, 0xef, 0x62, 0x67, 0xdf, 0x76, 0xf9, 0xd5, 0xc8, 0x18, 0x74, 0xaf, 0x72, + 0xba, 0x19, 0x0e, 0xa4, 0x77, 0x25, 0x84, 0xeb, 0x39, 0x48, 0xb5, 0x90, 0x8e, 0xc7, 0xa0, 0xf8, + 0x22, 0xa7, 0x98, 0x22, 0xfa, 0x04, 0x5a, 0x82, 0x6c, 0xdb, 0xe6, 0x65, 0x29, 0x1a, 0xfe, 0x1a, + 0x87, 0x67, 0x04, 0x86, 0x53, 0x74, 0xed, 0x6e, 0xcf, 0x24, 0x35, 0x2b, 0x9a, 0xe2, 0x77, 0x04, + 0x85, 0xc0, 0x70, 0x8a, 0x53, 0xb8, 0xf5, 0x77, 0x05, 0x85, 0x1b, 0xf0, 0xe7, 0xf3, 0x90, 0xb1, + 0x2d, 0xf3, 0xd0, 0xb6, 0xc6, 0x31, 0xe2, 0xf7, 0x38, 0x03, 0x70, 0x08, 0x21, 0xb8, 0x06, 0xe9, + 0x71, 0x37, 0xe2, 0xf7, 0xdf, 0x11, 0xc7, 0x43, 0xec, 0xc0, 0x26, 0xcc, 0x88, 0x04, 0x65, 0xd8, + 0xd6, 0x18, 0x14, 0x7f, 0xc0, 0x29, 0x72, 0x01, 0x18, 0x5f, 0x86, 0x87, 0x5d, 0xaf, 0x8d, 0xc7, + 0x21, 0x79, 0x5d, 0x2c, 0x83, 0x43, 0xb8, 0x2b, 0xf7, 0xb1, 0xa5, 0x1f, 0x8c, 0xc7, 0xf0, 0x65, + 0xe1, 0x4a, 0x81, 0x21, 0x14, 0x65, 0x98, 0xee, 0x20, 0xc7, 0x3d, 0x40, 0xe6, 0x58, 0xdb, 0xf1, + 0x87, 0x9c, 0x23, 0xeb, 0x83, 0xb8, 0x47, 0x7a, 0xd6, 0x69, 0x68, 0xbe, 0x22, 0x3c, 0x12, 0x80, + 0xf1, 0xa3, 0xe7, 0x7a, 0xf4, 0x02, 0xea, 0x34, 0x6c, 0x5f, 0x15, 0x47, 0x8f, 0x61, 0xb7, 0x83, + 0x8c, 0xd7, 0x20, 0xed, 0x1a, 0x2f, 0x8d, 0x45, 0xf3, 0x47, 0x62, 0xa7, 0x29, 0x80, 0x80, 0x6f, + 0xc1, 0xd9, 0x91, 0x65, 0x62, 0x0c, 0xb2, 0x3f, 0xe6, 0x64, 0x0b, 0x23, 0x4a, 0x05, 0x4f, 0x09, + 0xa7, 0xa5, 0xfc, 0x13, 0x91, 0x12, 0xf0, 0x00, 0x57, 0x9d, 0xbc, 0x28, 0xb8, 0xa8, 0x75, 0x3a, + 0xaf, 0xfd, 0xa9, 0xf0, 0x1a, 0xc3, 0x86, 0xbc, 0xb6, 0x0b, 0x0b, 0x9c, 0xf1, 0x74, 0xfb, 0xfa, + 0x35, 0x91, 0x58, 0x19, 0x7a, 0x2f, 0xbc, 0xbb, 0x3f, 0x05, 0x8b, 0xbe, 0x3b, 0x45, 0x47, 0xea, + 0x6a, 0x1d, 0xd4, 0x1d, 0x83, 0xf9, 0xeb, 0x9c, 0x59, 0x64, 0x7c, 0xbf, 0xa5, 0x75, 0xb7, 0x51, + 0x97, 0x90, 0xdf, 0x84, 0xbc, 0x20, 0xef, 0x59, 0x0e, 0xd6, 0xed, 0xb6, 0x65, 0xbc, 0x84, 0x9b, + 0x63, 0x50, 0xff, 0xd9, 0xc0, 0x56, 0xed, 0x05, 0xe0, 0x84, 0xb9, 0x0a, 0xb2, 0xdf, 0xab, 0x68, + 0x46, 0xa7, 0x6b, 0x3b, 0x5e, 0x04, 0xe3, 0x9f, 0x8b, 0x9d, 0xf2, 0x71, 0x55, 0x0a, 0x2b, 0x56, + 0x20, 0x47, 0x87, 0xe3, 0x86, 0xe4, 0x5f, 0x70, 0xa2, 0xe9, 0x3e, 0x8a, 0x27, 0x0e, 0xdd, 0xee, + 0x74, 0x91, 0x33, 0x4e, 0xfe, 0xfb, 0x4b, 0x91, 0x38, 0x38, 0x84, 0x27, 0x0e, 0xef, 0xb0, 0x8b, + 0x49, 0xb5, 0x1f, 0x83, 0xe1, 0x1b, 0x22, 0x71, 0x08, 0x0c, 0xa7, 0x10, 0x0d, 0xc3, 0x18, 0x14, + 0x7f, 0x25, 0x28, 0x04, 0x86, 0x50, 0x7c, 0xb2, 0x5f, 0x68, 0x1d, 0xdc, 0x36, 0x5c, 0xcf, 0x61, + 0x7d, 0xf0, 0xc9, 0x54, 0xdf, 0x7c, 0x27, 0xdc, 0x84, 0xa9, 0x01, 0x68, 0xf1, 0x06, 0xcc, 0x0c, + 0xb4, 0x18, 0x4a, 0xd4, 0xff, 0x2c, 0xe4, 0x7f, 0xfa, 0x3d, 0x9e, 0x8c, 0xc2, 0x1d, 0x46, 0x71, + 0x8b, 0xec, 0x7b, 0xb8, 0x0f, 0x88, 0x26, 0x7b, 0xf9, 0x3d, 0x7f, 0xeb, 0x43, 0x6d, 0x40, 0xf1, + 0x3a, 0x4c, 0x87, 0x7a, 0x80, 0x68, 0xaa, 0xcf, 0x72, 0xaa, 0x6c, 0xb0, 0x05, 0x28, 0x5e, 0x86, + 0x04, 0xa9, 0xe7, 0xd1, 0xf0, 0x9f, 0xe1, 0x70, 0xaa, 0x5e, 0xfc, 0x18, 0xa4, 0x44, 0x1d, 0x8f, + 0x86, 0xfe, 0x2c, 0x87, 0xfa, 0x10, 0x02, 0x17, 0x35, 0x3c, 0x1a, 0xfe, 0x73, 0x02, 0x2e, 0x20, + 0x04, 0x3e, 0xbe, 0x0b, 0xbf, 0xf5, 0x0b, 0x09, 0x9e, 0x87, 0x85, 0xef, 0xae, 0xc1, 0x14, 0x2f, + 0xde, 0xd1, 0xe8, 0xcf, 0xf1, 0x87, 0x0b, 0x44, 0xf1, 0x59, 0x48, 0x8e, 0xe9, 0xf0, 0x5f, 0xe4, + 0x50, 0xa6, 0x5f, 0x2c, 0x43, 0x26, 0x50, 0xb0, 0xa3, 0xe1, 0xbf, 0xc4, 0xe1, 0x41, 0x14, 0x31, + 0x9d, 0x17, 0xec, 0x68, 0x82, 0x5f, 0x16, 0xa6, 0x73, 0x04, 0x71, 0x9b, 0xa8, 0xd5, 0xd1, 0xe8, + 0x5f, 0x11, 0x5e, 0x17, 0x90, 0xe2, 0xf3, 0x90, 0xf6, 0xf3, 0x6f, 0x34, 0xfe, 0x57, 0x39, 0xbe, + 0x8f, 0x21, 0x1e, 0x08, 0xe4, 0xff, 0x68, 0x8a, 0x5f, 0x13, 0x1e, 0x08, 0xa0, 0xc8, 0x31, 0x1a, + 0xac, 0xe9, 0xd1, 0x4c, 0xbf, 0x2e, 0x8e, 0xd1, 0x40, 0x49, 0x27, 0xbb, 0x49, 0xd3, 0x60, 0x34, + 0xc5, 0x6f, 0x88, 0xdd, 0xa4, 0xfa, 0xc4, 0x8c, 0xc1, 0x22, 0x19, 0xcd, 0xf1, 0x5b, 0xc2, 0x8c, + 0x81, 0x1a, 0x59, 0xac, 0x83, 0x32, 0x5c, 0x20, 0xa3, 0xf9, 0x3e, 0xcf, 0xf9, 0x66, 0x87, 0xea, + 0x63, 0xf1, 0x05, 0x58, 0x18, 0x5d, 0x1c, 0xa3, 0x59, 0xbf, 0xf0, 0xde, 0xc0, 0xeb, 0x4c, 0xb0, + 0x36, 0x16, 0x77, 0xfb, 0x59, 0x36, 0x58, 0x18, 0xa3, 0x69, 0x5f, 0x79, 0x2f, 0x9c, 0x68, 0x83, + 0x75, 0xb1, 0x58, 0x02, 0xe8, 0xd7, 0xa4, 0x68, 0xae, 0x57, 0x39, 0x57, 0x00, 0x44, 0x8e, 0x06, + 0x2f, 0x49, 0xd1, 0xf8, 0x2f, 0x8a, 0xa3, 0xc1, 0x11, 0xe4, 0x68, 0x88, 0x6a, 0x14, 0x8d, 0x7e, + 0x4d, 0x1c, 0x0d, 0x01, 0x29, 0x5e, 0x83, 0x94, 0xd5, 0x33, 0x4d, 0x12, 0x5b, 0xca, 0xc9, 0xff, + 0x46, 0x94, 0xff, 0xd7, 0x87, 0x1c, 0x2c, 0x00, 0xc5, 0xcb, 0x90, 0xc4, 0x9d, 0x7d, 0xdc, 0x8c, + 0x42, 0xfe, 0xdb, 0x43, 0x91, 0x4f, 0x88, 0x76, 0xf1, 0x79, 0x00, 0xf6, 0x32, 0x4d, 0xbf, 0x12, + 0x45, 0x60, 0xff, 0xfd, 0x21, 0xff, 0x0f, 0x85, 0x3e, 0xa4, 0x4f, 0xc0, 0xfe, 0xdf, 0xe1, 0x64, + 0x82, 0x77, 0xc2, 0x04, 0xf4, 0x05, 0xfc, 0x39, 0x98, 0xba, 0xed, 0xda, 0x96, 0x87, 0xda, 0x51, + 0xe8, 0xff, 0xe0, 0x68, 0xa1, 0x4f, 0x1c, 0xd6, 0xb1, 0x1d, 0xec, 0xa1, 0xb6, 0x1b, 0x85, 0xfd, + 0x4f, 0x8e, 0xf5, 0x01, 0x04, 0xac, 0x23, 0xd7, 0x1b, 0x67, 0xdd, 0xff, 0x25, 0xc0, 0x02, 0x40, + 0x8c, 0x26, 0xbf, 0xef, 0xe0, 0xc3, 0x28, 0xec, 0xbb, 0xc2, 0x68, 0xae, 0x5f, 0xfc, 0x18, 0xa4, + 0xc9, 0x4f, 0xf6, 0x5f, 0x3b, 0x11, 0xe0, 0xff, 0xe6, 0xe0, 0x3e, 0x82, 0x3c, 0xd9, 0xf5, 0x9a, + 0x9e, 0x11, 0xed, 0xec, 0xff, 0xe1, 0x3b, 0x2d, 0xf4, 0x8b, 0x25, 0xc8, 0xb8, 0x5e, 0xb3, 0xd9, + 0xe3, 0x1d, 0x4d, 0x04, 0xfc, 0xfb, 0x0f, 0xfd, 0x97, 0x5c, 0x1f, 0xb3, 0x7e, 0x7e, 0xf4, 0x65, + 0x1d, 0x6c, 0xda, 0x9b, 0x36, 0xbb, 0xa6, 0x83, 0xdf, 0x4c, 0xc2, 0x8a, 0x6e, 0x77, 0xf6, 0x6d, + 0x77, 0x8d, 0x25, 0x94, 0x40, 0x32, 0x5a, 0xf3, 0xd7, 0x21, 0x2e, 0xdc, 0x7c, 0xc1, 0xe2, 0xe9, + 0xae, 0xea, 0x96, 0xff, 0x26, 0x0e, 0xa9, 0x32, 0x72, 0x3d, 0x74, 0x0f, 0x1d, 0x2a, 0x5d, 0x98, + 0x23, 0xbf, 0xb7, 0x51, 0x97, 0x5e, 0xfc, 0xf0, 0x93, 0xc6, 0xaf, 0x42, 0x3f, 0xbc, 0xda, 0x7f, + 0xaa, 0x40, 0xac, 0x8e, 0x50, 0xa7, 0x9f, 0x90, 0xd7, 0xe5, 0x37, 0xfe, 0xe9, 0xdc, 0xc4, 0xcf, + 0xff, 0xf3, 0xb9, 0xd4, 0xf6, 0xe1, 0x0b, 0x86, 0xe9, 0xda, 0x96, 0x3a, 0x8a, 0x5a, 0xf9, 0xac, + 0x04, 0x8f, 0x8e, 0x90, 0xef, 0xf0, 0xe3, 0xc8, 0x3f, 0x28, 0x5c, 0x1a, 0xf3, 0xd1, 0x02, 0xc6, + 0x4c, 0xc8, 0x86, 0x1e, 0x7f, 0xd2, 0x63, 0x16, 0x6f, 0x41, 0xfe, 0xb8, 0x95, 0x28, 0x32, 0xc4, + 0xef, 0xe0, 0x43, 0xfe, 0x4f, 0xa2, 0xe4, 0xa7, 0x72, 0xa1, 0xff, 0x4f, 0x66, 0xd2, 0x4a, 0xe6, + 0xe2, 0x6c, 0xc0, 0x3a, 0xfe, 0x30, 0x36, 0x5f, 0x8c, 0x5d, 0x95, 0x16, 0x11, 0x2c, 0x45, 0x59, + 0xfa, 0xff, 0x7c, 0xc4, 0x72, 0x01, 0x26, 0x99, 0x50, 0x99, 0x87, 0x64, 0xd5, 0xf2, 0xae, 0x5c, + 0xa2, 0x54, 0x71, 0x95, 0x0d, 0xd6, 0xb7, 0xde, 0x78, 0x50, 0x98, 0xf8, 0xce, 0x83, 0xc2, 0xc4, + 0x3f, 0x3c, 0x28, 0x4c, 0xbc, 0xf9, 0xa0, 0x20, 0xbd, 0xfd, 0xa0, 0x20, 0xbd, 0xfb, 0xa0, 0x20, + 0xfd, 0xe0, 0x41, 0x41, 0xba, 0x7f, 0x54, 0x90, 0xbe, 0x7c, 0x54, 0x90, 0xbe, 0x76, 0x54, 0x90, + 0xbe, 0x79, 0x54, 0x90, 0xbe, 0x75, 0x54, 0x90, 0xde, 0x38, 0x2a, 0x4c, 0x7c, 0xe7, 0xa8, 0x30, + 0xf1, 0xe6, 0x51, 0x41, 0x7a, 0xfb, 0xa8, 0x30, 0xf1, 0xee, 0x51, 0x41, 0xfa, 0xc1, 0x51, 0x61, + 0xe2, 0xfe, 0xf7, 0x0a, 0xd2, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x83, 0x4c, 0xd3, 0xf5, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) diff --git a/vendor/github.com/gogo/protobuf/test/combos/both/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/combos/both/thetest.pb.go index 88432dabb..ce817e26a 100644 --- a/vendor/github.com/gogo/protobuf/test/combos/both/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/combos/both/thetest.pb.go @@ -6969,407 +6969,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6393 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x70, 0x24, 0x57, - 0x75, 0xff, 0xf6, 0xf4, 0x48, 0x3b, 0x3a, 0xa3, 0x47, 0xab, 0x77, 0x2d, 0x8f, 0xe5, 0xf5, 0x48, - 0x3b, 0x5e, 0xaf, 0x65, 0x61, 0x6b, 0xb5, 0x5a, 0xed, 0x6b, 0x16, 0xdb, 0x35, 0xaf, 0x95, 0xb5, - 0xff, 0xd5, 0x83, 0x96, 0x04, 0x36, 0xfc, 0xab, 0xa6, 0x5a, 0x33, 0x57, 0xd2, 0xd8, 0x33, 0xdd, - 0x93, 0xe9, 0x1e, 0xdb, 0xf2, 0x87, 0x94, 0x81, 0x84, 0x40, 0xa8, 0x3c, 0x49, 0x2a, 0x3c, 0x8d, - 0x21, 0x45, 0x30, 0xe4, 0x05, 0x09, 0x21, 0x14, 0x95, 0x0a, 0xfe, 0x02, 0xd9, 0x7c, 0x49, 0x99, - 0x7c, 0x4a, 0x51, 0x29, 0x17, 0x5e, 0xa8, 0x0a, 0x49, 0x9c, 0x04, 0x82, 0xab, 0xa0, 0xca, 0x7c, - 0x48, 0xdd, 0x57, 0x77, 0xdf, 0x3b, 0x3d, 0xea, 0x96, 0xd7, 0x06, 0xbe, 0xec, 0xce, 0xdc, 0x73, - 0x7e, 0xa7, 0xcf, 0x3d, 0xaf, 0x7b, 0xfa, 0xde, 0xab, 0x81, 0xf7, 0x2e, 0xc2, 0xf4, 0xae, 0x6d, - 0xef, 0x36, 0xd1, 0x99, 0x76, 0xc7, 0x76, 0xed, 0xed, 0xee, 0xce, 0x99, 0x3a, 0x72, 0x6a, 0x9d, - 0x46, 0xdb, 0xb5, 0x3b, 0x73, 0x64, 0x4c, 0x1f, 0xa3, 0x1c, 0x73, 0x9c, 0x23, 0xb7, 0x02, 0xe3, - 0x57, 0x1b, 0x4d, 0x54, 0xf6, 0x18, 0x37, 0x90, 0xab, 0x5f, 0x82, 0xe4, 0x4e, 0xa3, 0x89, 0x32, - 0xca, 0xb4, 0x3a, 0x93, 0x5e, 0x38, 0x35, 0x27, 0x81, 0xe6, 0x44, 0xc4, 0x3a, 0x1e, 0x36, 0x08, - 0x22, 0xf7, 0xfd, 0x24, 0x1c, 0x0b, 0xa1, 0xea, 0x3a, 0x24, 0x2d, 0xb3, 0x85, 0x25, 0x2a, 0x33, - 0x43, 0x06, 0xf9, 0xac, 0x67, 0xe0, 0x68, 0xdb, 0xac, 0x3d, 0x61, 0xee, 0xa2, 0x4c, 0x82, 0x0c, - 0xf3, 0xaf, 0x7a, 0x16, 0xa0, 0x8e, 0xda, 0xc8, 0xaa, 0x23, 0xab, 0xb6, 0x9f, 0x51, 0xa7, 0xd5, - 0x99, 0x21, 0x23, 0x30, 0xa2, 0xbf, 0x0d, 0xc6, 0xdb, 0xdd, 0xed, 0x66, 0xa3, 0x56, 0x0d, 0xb0, - 0xc1, 0xb4, 0x3a, 0x33, 0x60, 0x68, 0x94, 0x50, 0xf6, 0x99, 0xef, 0x85, 0xb1, 0xa7, 0x90, 0xf9, - 0x44, 0x90, 0x35, 0x4d, 0x58, 0x47, 0xf1, 0x70, 0x80, 0xb1, 0x04, 0xc3, 0x2d, 0xe4, 0x38, 0xe6, - 0x2e, 0xaa, 0xba, 0xfb, 0x6d, 0x94, 0x49, 0x92, 0xd9, 0x4f, 0xf7, 0xcc, 0x5e, 0x9e, 0x79, 0x9a, - 0xa1, 0x36, 0xf7, 0xdb, 0x48, 0x2f, 0xc0, 0x10, 0xb2, 0xba, 0x2d, 0x2a, 0x61, 0xa0, 0x8f, 0xfd, - 0x2a, 0x56, 0xb7, 0x25, 0x4b, 0x49, 0x61, 0x18, 0x13, 0x71, 0xd4, 0x41, 0x9d, 0x27, 0x1b, 0x35, - 0x94, 0x19, 0x24, 0x02, 0xee, 0xed, 0x11, 0xb0, 0x41, 0xe9, 0xb2, 0x0c, 0x8e, 0xd3, 0x4b, 0x30, - 0x84, 0x9e, 0x76, 0x91, 0xe5, 0x34, 0x6c, 0x2b, 0x73, 0x94, 0x08, 0xb9, 0x27, 0xc4, 0x8b, 0xa8, - 0x59, 0x97, 0x45, 0xf8, 0x38, 0xfd, 0x02, 0x1c, 0xb5, 0xdb, 0x6e, 0xc3, 0xb6, 0x9c, 0x4c, 0x6a, - 0x5a, 0x99, 0x49, 0x2f, 0x9c, 0x08, 0x0d, 0x84, 0x35, 0xca, 0x63, 0x70, 0x66, 0x7d, 0x19, 0x34, - 0xc7, 0xee, 0x76, 0x6a, 0xa8, 0x5a, 0xb3, 0xeb, 0xa8, 0xda, 0xb0, 0x76, 0xec, 0xcc, 0x10, 0x11, - 0x30, 0xd5, 0x3b, 0x11, 0xc2, 0x58, 0xb2, 0xeb, 0x68, 0xd9, 0xda, 0xb1, 0x8d, 0x51, 0x47, 0xf8, - 0xae, 0x4f, 0xc0, 0xa0, 0xb3, 0x6f, 0xb9, 0xe6, 0xd3, 0x99, 0x61, 0x12, 0x21, 0xec, 0x5b, 0xee, - 0x27, 0x03, 0x30, 0x16, 0x27, 0xc4, 0xae, 0xc0, 0xc0, 0x0e, 0x9e, 0x65, 0x26, 0x71, 0x18, 0x1b, - 0x50, 0x8c, 0x68, 0xc4, 0xc1, 0x37, 0x68, 0xc4, 0x02, 0xa4, 0x2d, 0xe4, 0xb8, 0xa8, 0x4e, 0x23, - 0x42, 0x8d, 0x19, 0x53, 0x40, 0x41, 0xbd, 0x21, 0x95, 0x7c, 0x43, 0x21, 0xf5, 0x28, 0x8c, 0x79, - 0x2a, 0x55, 0x3b, 0xa6, 0xb5, 0xcb, 0x63, 0xf3, 0x4c, 0x94, 0x26, 0x73, 0x15, 0x8e, 0x33, 0x30, - 0xcc, 0x18, 0x45, 0xc2, 0x77, 0xbd, 0x0c, 0x60, 0x5b, 0xc8, 0xde, 0xa9, 0xd6, 0x51, 0xad, 0x99, - 0x49, 0xf5, 0xb1, 0xd2, 0x1a, 0x66, 0xe9, 0xb1, 0x92, 0x4d, 0x47, 0x6b, 0x4d, 0xfd, 0xb2, 0x1f, - 0x6a, 0x47, 0xfb, 0x44, 0xca, 0x0a, 0x4d, 0xb2, 0x9e, 0x68, 0xdb, 0x82, 0xd1, 0x0e, 0xc2, 0x71, - 0x8f, 0xea, 0x6c, 0x66, 0x43, 0x44, 0x89, 0xb9, 0xc8, 0x99, 0x19, 0x0c, 0x46, 0x27, 0x36, 0xd2, - 0x09, 0x7e, 0xd5, 0xef, 0x06, 0x6f, 0xa0, 0x4a, 0xc2, 0x0a, 0x48, 0x15, 0x1a, 0xe6, 0x83, 0xab, - 0x66, 0x0b, 0x4d, 0x5e, 0x82, 0x51, 0xd1, 0x3c, 0xfa, 0x71, 0x18, 0x70, 0x5c, 0xb3, 0xe3, 0x92, - 0x28, 0x1c, 0x30, 0xe8, 0x17, 0x5d, 0x03, 0x15, 0x59, 0x75, 0x52, 0xe5, 0x06, 0x0c, 0xfc, 0x71, - 0xf2, 0x22, 0x8c, 0x08, 0x8f, 0x8f, 0x0b, 0xcc, 0x7d, 0x74, 0x10, 0x8e, 0x87, 0xc5, 0x5c, 0x68, - 0xf8, 0x4f, 0xc0, 0xa0, 0xd5, 0x6d, 0x6d, 0xa3, 0x4e, 0x46, 0x25, 0x12, 0xd8, 0x37, 0xbd, 0x00, - 0x03, 0x4d, 0x73, 0x1b, 0x35, 0x33, 0xc9, 0x69, 0x65, 0x66, 0x74, 0xe1, 0x6d, 0xb1, 0xa2, 0x7a, - 0xee, 0x3a, 0x86, 0x18, 0x14, 0xa9, 0x3f, 0x04, 0x49, 0x56, 0xe2, 0xb0, 0x84, 0xd9, 0x78, 0x12, - 0x70, 0x2c, 0x1a, 0x04, 0xa7, 0xdf, 0x09, 0x43, 0xf8, 0x7f, 0x6a, 0xdb, 0x41, 0xa2, 0x73, 0x0a, - 0x0f, 0x60, 0xbb, 0xea, 0x93, 0x90, 0x22, 0x61, 0x56, 0x47, 0x7c, 0x69, 0xf0, 0xbe, 0x63, 0xc7, - 0xd4, 0xd1, 0x8e, 0xd9, 0x6d, 0xba, 0xd5, 0x27, 0xcd, 0x66, 0x17, 0x91, 0x80, 0x19, 0x32, 0x86, - 0xd9, 0xe0, 0x3b, 0xf1, 0x98, 0x3e, 0x05, 0x69, 0x1a, 0x95, 0x0d, 0xab, 0x8e, 0x9e, 0x26, 0xd5, - 0x67, 0xc0, 0xa0, 0x81, 0xba, 0x8c, 0x47, 0xf0, 0xe3, 0x1f, 0x77, 0x6c, 0x8b, 0xbb, 0x96, 0x3c, - 0x02, 0x0f, 0x90, 0xc7, 0x5f, 0x94, 0x0b, 0xdf, 0x5d, 0xe1, 0xd3, 0x93, 0x63, 0x31, 0xf7, 0xd5, - 0x04, 0x24, 0x49, 0xbe, 0x8d, 0x41, 0x7a, 0xf3, 0xb1, 0xf5, 0x4a, 0xb5, 0xbc, 0xb6, 0x55, 0xbc, - 0x5e, 0xd1, 0x14, 0x7d, 0x14, 0x80, 0x0c, 0x5c, 0xbd, 0xbe, 0x56, 0xd8, 0xd4, 0x12, 0xde, 0xf7, - 0xe5, 0xd5, 0xcd, 0x0b, 0x8b, 0x9a, 0xea, 0x01, 0xb6, 0xe8, 0x40, 0x32, 0xc8, 0x70, 0x6e, 0x41, - 0x1b, 0xd0, 0x35, 0x18, 0xa6, 0x02, 0x96, 0x1f, 0xad, 0x94, 0x2f, 0x2c, 0x6a, 0x83, 0xe2, 0xc8, - 0xb9, 0x05, 0xed, 0xa8, 0x3e, 0x02, 0x43, 0x64, 0xa4, 0xb8, 0xb6, 0x76, 0x5d, 0x4b, 0x79, 0x32, - 0x37, 0x36, 0x8d, 0xe5, 0xd5, 0x25, 0x6d, 0xc8, 0x93, 0xb9, 0x64, 0xac, 0x6d, 0xad, 0x6b, 0xe0, - 0x49, 0x58, 0xa9, 0x6c, 0x6c, 0x14, 0x96, 0x2a, 0x5a, 0xda, 0xe3, 0x28, 0x3e, 0xb6, 0x59, 0xd9, - 0xd0, 0x86, 0x05, 0xb5, 0xce, 0x2d, 0x68, 0x23, 0xde, 0x23, 0x2a, 0xab, 0x5b, 0x2b, 0xda, 0xa8, - 0x3e, 0x0e, 0x23, 0xf4, 0x11, 0x5c, 0x89, 0x31, 0x69, 0xe8, 0xc2, 0xa2, 0xa6, 0xf9, 0x8a, 0x50, - 0x29, 0xe3, 0xc2, 0xc0, 0x85, 0x45, 0x4d, 0xcf, 0x95, 0x60, 0x80, 0x44, 0x97, 0xae, 0xc3, 0xe8, - 0xf5, 0x42, 0xb1, 0x72, 0xbd, 0xba, 0xb6, 0xbe, 0xb9, 0xbc, 0xb6, 0x5a, 0xb8, 0xae, 0x29, 0xfe, - 0x98, 0x51, 0x79, 0xc7, 0xd6, 0xb2, 0x51, 0x29, 0x6b, 0x89, 0xe0, 0xd8, 0x7a, 0xa5, 0xb0, 0x59, - 0x29, 0x6b, 0x6a, 0xae, 0x06, 0xc7, 0xc3, 0xea, 0x4c, 0x68, 0x66, 0x04, 0x5c, 0x9c, 0xe8, 0xe3, - 0x62, 0x22, 0xab, 0xc7, 0xc5, 0x9f, 0x55, 0xe0, 0x58, 0x48, 0xad, 0x0d, 0x7d, 0xc8, 0xc3, 0x30, - 0x40, 0x43, 0x94, 0xae, 0x3e, 0xf7, 0x85, 0x16, 0x6d, 0x12, 0xb0, 0x3d, 0x2b, 0x10, 0xc1, 0x05, - 0x57, 0x60, 0xb5, 0xcf, 0x0a, 0x8c, 0x45, 0xf4, 0x28, 0xf9, 0x7e, 0x05, 0x32, 0xfd, 0x64, 0x47, - 0x14, 0x8a, 0x84, 0x50, 0x28, 0xae, 0xc8, 0x0a, 0x9c, 0xec, 0x3f, 0x87, 0x1e, 0x2d, 0x3e, 0xaf, - 0xc0, 0x44, 0x78, 0xa3, 0x12, 0xaa, 0xc3, 0x43, 0x30, 0xd8, 0x42, 0xee, 0x9e, 0xcd, 0x17, 0xeb, - 0xd3, 0x21, 0x4b, 0x00, 0x26, 0xcb, 0xb6, 0x62, 0xa8, 0xe0, 0x1a, 0xa2, 0xf6, 0xeb, 0x36, 0xa8, - 0x36, 0x3d, 0x9a, 0x7e, 0x28, 0x01, 0xb7, 0x85, 0x0a, 0x0f, 0x55, 0xf4, 0x2e, 0x80, 0x86, 0xd5, - 0xee, 0xba, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x88, 0x8c, 0x90, 0xdc, 0xc7, 0xb5, 0xa7, 0xeb, 0x7a, - 0x74, 0x95, 0xd0, 0x81, 0x0e, 0x11, 0x86, 0x4b, 0xbe, 0xa2, 0x49, 0xa2, 0x68, 0xb6, 0xcf, 0x4c, - 0x7b, 0xd6, 0xba, 0x79, 0xd0, 0x6a, 0xcd, 0x06, 0xb2, 0xdc, 0xaa, 0xe3, 0x76, 0x90, 0xd9, 0x6a, - 0x58, 0xbb, 0xa4, 0x00, 0xa7, 0xf2, 0x03, 0x3b, 0x66, 0xd3, 0x41, 0xc6, 0x18, 0x25, 0x6f, 0x70, - 0x2a, 0x46, 0x90, 0x55, 0xa6, 0x13, 0x40, 0x0c, 0x0a, 0x08, 0x4a, 0xf6, 0x10, 0xb9, 0x0f, 0x1f, - 0x85, 0x74, 0xa0, 0xad, 0xd3, 0x4f, 0xc2, 0xf0, 0xe3, 0xe6, 0x93, 0x66, 0x95, 0xb7, 0xea, 0xd4, - 0x12, 0x69, 0x3c, 0xb6, 0xce, 0xda, 0xf5, 0x79, 0x38, 0x4e, 0x58, 0xec, 0xae, 0x8b, 0x3a, 0xd5, - 0x5a, 0xd3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, 0x31, 0x6d, 0x0d, 0x93, 0x4a, 0x9c, 0xa2, - 0x9f, 0x87, 0x63, 0x04, 0xd1, 0xea, 0x36, 0xdd, 0x46, 0xbb, 0x89, 0xaa, 0xf8, 0xe5, 0xc1, 0x21, - 0x85, 0xd8, 0xd3, 0x6c, 0x1c, 0x73, 0xac, 0x30, 0x06, 0xac, 0x91, 0xa3, 0x2f, 0xc1, 0x5d, 0x04, - 0xb6, 0x8b, 0x2c, 0xd4, 0x31, 0x5d, 0x54, 0x45, 0xbf, 0xd2, 0x35, 0x9b, 0x4e, 0xd5, 0xb4, 0xea, - 0xd5, 0x3d, 0xd3, 0xd9, 0xcb, 0x1c, 0x0f, 0x0a, 0xb8, 0x03, 0xf3, 0x2e, 0x31, 0xd6, 0x0a, 0xe1, - 0x2c, 0x58, 0xf5, 0x47, 0x4c, 0x67, 0x4f, 0xcf, 0xc3, 0x04, 0x11, 0xe4, 0xb8, 0x9d, 0x86, 0xb5, - 0x5b, 0xad, 0xed, 0xa1, 0xda, 0x13, 0xd5, 0xae, 0xbb, 0x73, 0x29, 0x73, 0x67, 0x50, 0x02, 0x51, - 0x72, 0x83, 0xf0, 0x94, 0x30, 0xcb, 0x96, 0xbb, 0x73, 0x49, 0xdf, 0x80, 0x61, 0xec, 0x8f, 0x56, - 0xe3, 0x19, 0x54, 0xdd, 0xb1, 0x3b, 0x64, 0x71, 0x19, 0x0d, 0x49, 0xee, 0x80, 0x11, 0xe7, 0xd6, - 0x18, 0x60, 0xc5, 0xae, 0xa3, 0xfc, 0xc0, 0xc6, 0x7a, 0xa5, 0x52, 0x36, 0xd2, 0x5c, 0xca, 0x55, - 0xbb, 0x83, 0x63, 0x6a, 0xd7, 0xf6, 0x6c, 0x9c, 0xa6, 0x31, 0xb5, 0x6b, 0x73, 0x0b, 0x9f, 0x87, - 0x63, 0xb5, 0x1a, 0x9d, 0x76, 0xa3, 0x56, 0x65, 0x5d, 0xbe, 0x93, 0xd1, 0x04, 0x7b, 0xd5, 0x6a, - 0x4b, 0x94, 0x81, 0x85, 0xb9, 0xa3, 0x5f, 0x86, 0xdb, 0x7c, 0x7b, 0x05, 0x81, 0xe3, 0x3d, 0xb3, - 0x94, 0xa1, 0xe7, 0xe1, 0x58, 0x7b, 0xbf, 0x17, 0xa8, 0x0b, 0x4f, 0x6c, 0xef, 0xcb, 0xb0, 0x7b, - 0xc8, 0x9b, 0x5b, 0x07, 0xd5, 0x4c, 0x17, 0xd5, 0x33, 0xb7, 0x07, 0xb9, 0x03, 0x04, 0xfd, 0x0c, - 0x68, 0xb5, 0x5a, 0x15, 0x59, 0xe6, 0x76, 0x13, 0x55, 0xcd, 0x0e, 0xb2, 0x4c, 0x27, 0x33, 0x15, - 0x64, 0x1e, 0xad, 0xd5, 0x2a, 0x84, 0x5a, 0x20, 0x44, 0x7d, 0x16, 0xc6, 0xed, 0xed, 0xc7, 0x6b, - 0x34, 0xb8, 0xaa, 0xed, 0x0e, 0xda, 0x69, 0x3c, 0x9d, 0x39, 0x45, 0xcc, 0x34, 0x86, 0x09, 0x24, - 0xb4, 0xd6, 0xc9, 0xb0, 0x7e, 0x1f, 0x68, 0x35, 0x67, 0xcf, 0xec, 0xb4, 0xc9, 0xea, 0xee, 0xb4, - 0xcd, 0x1a, 0xca, 0xdc, 0x43, 0x59, 0xe9, 0xf8, 0x2a, 0x1f, 0xd6, 0x1f, 0x85, 0xe3, 0x5d, 0xab, - 0x61, 0xb9, 0xa8, 0xd3, 0xee, 0x20, 0xdc, 0xa4, 0xd3, 0x4c, 0xcb, 0xfc, 0xdb, 0xd1, 0x3e, 0x6d, - 0xf6, 0x56, 0x90, 0x9b, 0x7a, 0xd7, 0x38, 0xd6, 0xed, 0x1d, 0xcc, 0xe5, 0x61, 0x38, 0xe8, 0x74, - 0x7d, 0x08, 0xa8, 0xdb, 0x35, 0x05, 0xaf, 0xa1, 0xa5, 0xb5, 0x32, 0x5e, 0xfd, 0xde, 0x5d, 0xd1, - 0x12, 0x78, 0x15, 0xbe, 0xbe, 0xbc, 0x59, 0xa9, 0x1a, 0x5b, 0xab, 0x9b, 0xcb, 0x2b, 0x15, 0x4d, - 0x9d, 0x1d, 0x4a, 0xfd, 0xe0, 0xa8, 0xf6, 0xec, 0xb3, 0xcf, 0x3e, 0x9b, 0xc8, 0x7d, 0x33, 0x01, - 0xa3, 0x62, 0xe7, 0xab, 0xbf, 0x1d, 0x6e, 0xe7, 0xaf, 0xa9, 0x0e, 0x72, 0xab, 0x4f, 0x35, 0x3a, - 0x24, 0x0e, 0x5b, 0x26, 0xed, 0x1d, 0x3d, 0x13, 0x1e, 0x67, 0x5c, 0x1b, 0xc8, 0x7d, 0x57, 0xa3, - 0x83, 0xa3, 0xac, 0x65, 0xba, 0xfa, 0x75, 0x98, 0xb2, 0xec, 0xaa, 0xe3, 0x9a, 0x56, 0xdd, 0xec, - 0xd4, 0xab, 0xfe, 0x06, 0x41, 0xd5, 0xac, 0xd5, 0x90, 0xe3, 0xd8, 0x74, 0x09, 0xf0, 0xa4, 0x9c, - 0xb0, 0xec, 0x0d, 0xc6, 0xec, 0xd7, 0xc6, 0x02, 0x63, 0x95, 0xdc, 0xad, 0xf6, 0x73, 0xf7, 0x9d, - 0x30, 0xd4, 0x32, 0xdb, 0x55, 0x64, 0xb9, 0x9d, 0x7d, 0xd2, 0xaf, 0xa5, 0x8c, 0x54, 0xcb, 0x6c, - 0x57, 0xf0, 0xf7, 0xb7, 0xce, 0x07, 0x41, 0x3b, 0xfe, 0xab, 0x0a, 0xc3, 0xc1, 0x9e, 0x0d, 0xb7, - 0xc0, 0x35, 0x52, 0x9f, 0x15, 0x92, 0xbe, 0x77, 0x1f, 0xd8, 0xe1, 0xcd, 0x95, 0x70, 0xe1, 0xce, - 0x0f, 0xd2, 0x4e, 0xca, 0xa0, 0x48, 0xbc, 0x68, 0xe2, 0x84, 0x45, 0xb4, 0x3f, 0x4f, 0x19, 0xec, - 0x9b, 0xbe, 0x04, 0x83, 0x8f, 0x3b, 0x44, 0xf6, 0x20, 0x91, 0x7d, 0xea, 0x60, 0xd9, 0xd7, 0x36, - 0x88, 0xf0, 0xa1, 0x6b, 0x1b, 0xd5, 0xd5, 0x35, 0x63, 0xa5, 0x70, 0xdd, 0x60, 0x70, 0xfd, 0x0e, - 0x48, 0x36, 0xcd, 0x67, 0xf6, 0xc5, 0x12, 0x4f, 0x86, 0xe2, 0x1a, 0xfe, 0x0e, 0x48, 0x3e, 0x85, - 0xcc, 0x27, 0xc4, 0xc2, 0x4a, 0x86, 0xde, 0xc2, 0xd0, 0x3f, 0x03, 0x03, 0xc4, 0x5e, 0x3a, 0x00, - 0xb3, 0x98, 0x76, 0x44, 0x4f, 0x41, 0xb2, 0xb4, 0x66, 0xe0, 0xf0, 0xd7, 0x60, 0x98, 0x8e, 0x56, - 0xd7, 0x97, 0x2b, 0xa5, 0x8a, 0x96, 0xc8, 0x9d, 0x87, 0x41, 0x6a, 0x04, 0x9c, 0x1a, 0x9e, 0x19, - 0xb4, 0x23, 0xec, 0x2b, 0x93, 0xa1, 0x70, 0xea, 0xd6, 0x4a, 0xb1, 0x62, 0x68, 0x89, 0xa0, 0x7b, - 0x1d, 0x18, 0x0e, 0xb6, 0x6b, 0x3f, 0x9f, 0x98, 0xfa, 0xba, 0x02, 0xe9, 0x40, 0xfb, 0x85, 0x17, - 0x7e, 0xb3, 0xd9, 0xb4, 0x9f, 0xaa, 0x9a, 0xcd, 0x86, 0xe9, 0xb0, 0xa0, 0x00, 0x32, 0x54, 0xc0, - 0x23, 0x71, 0x9d, 0xf6, 0x73, 0x51, 0xfe, 0x39, 0x05, 0x34, 0xb9, 0x75, 0x93, 0x14, 0x54, 0x7e, - 0xa1, 0x0a, 0x7e, 0x52, 0x81, 0x51, 0xb1, 0x5f, 0x93, 0xd4, 0x3b, 0xf9, 0x0b, 0x55, 0xef, 0x13, - 0x0a, 0x8c, 0x08, 0x5d, 0xda, 0x2f, 0x95, 0x76, 0x1f, 0x57, 0xe1, 0x58, 0x08, 0x4e, 0x2f, 0xb0, - 0x76, 0x96, 0x76, 0xd8, 0x0f, 0xc4, 0x79, 0xd6, 0x1c, 0x5e, 0x2d, 0xd7, 0xcd, 0x8e, 0xcb, 0xba, - 0xdf, 0xfb, 0x40, 0x6b, 0xd4, 0x91, 0xe5, 0x36, 0x76, 0x1a, 0xa8, 0xc3, 0x5e, 0xc1, 0x69, 0x8f, - 0x3b, 0xe6, 0x8f, 0xd3, 0xb7, 0xf0, 0xfb, 0x41, 0x6f, 0xdb, 0x4e, 0xc3, 0x6d, 0x3c, 0x89, 0xaa, - 0x0d, 0x8b, 0xbf, 0xaf, 0xe3, 0x9e, 0x37, 0x69, 0x68, 0x9c, 0xb2, 0x6c, 0xb9, 0x1e, 0xb7, 0x85, - 0x76, 0x4d, 0x89, 0x1b, 0xd7, 0x3e, 0xd5, 0xd0, 0x38, 0xc5, 0xe3, 0x3e, 0x09, 0xc3, 0x75, 0xbb, - 0x8b, 0xdb, 0x07, 0xca, 0x87, 0x4b, 0xad, 0x62, 0xa4, 0xe9, 0x98, 0xc7, 0xc2, 0xfa, 0x3b, 0x7f, - 0xa3, 0x60, 0xd8, 0x48, 0xd3, 0x31, 0xca, 0x72, 0x2f, 0x8c, 0x99, 0xbb, 0xbb, 0x1d, 0x2c, 0x9c, - 0x0b, 0xa2, 0x4d, 0xeb, 0xa8, 0x37, 0x4c, 0x18, 0x27, 0xaf, 0x41, 0x8a, 0xdb, 0x01, 0xaf, 0x66, - 0xd8, 0x12, 0xd5, 0x36, 0xdd, 0xae, 0x49, 0xcc, 0x0c, 0x19, 0x29, 0x8b, 0x13, 0x4f, 0xc2, 0x70, - 0xc3, 0xa9, 0xfa, 0xfb, 0x86, 0x89, 0xe9, 0xc4, 0x4c, 0xca, 0x48, 0x37, 0x1c, 0x6f, 0xa3, 0x28, - 0xf7, 0xf9, 0x04, 0x8c, 0x8a, 0xfb, 0x9e, 0x7a, 0x19, 0x52, 0x4d, 0xbb, 0x66, 0x92, 0x40, 0xa0, - 0x9b, 0xee, 0x33, 0x11, 0x5b, 0xa5, 0x73, 0xd7, 0x19, 0xbf, 0xe1, 0x21, 0x27, 0xff, 0x49, 0x81, - 0x14, 0x1f, 0xd6, 0x27, 0x20, 0xd9, 0x36, 0xdd, 0x3d, 0x22, 0x6e, 0xa0, 0x98, 0xd0, 0x14, 0x83, - 0x7c, 0xc7, 0xe3, 0x4e, 0xdb, 0xb4, 0x48, 0x08, 0xb0, 0x71, 0xfc, 0x1d, 0xfb, 0xb5, 0x89, 0xcc, - 0x3a, 0x69, 0x87, 0xed, 0x56, 0x0b, 0x59, 0xae, 0xc3, 0xfd, 0xca, 0xc6, 0x4b, 0x6c, 0x58, 0x7f, - 0x1b, 0x8c, 0xbb, 0x1d, 0xb3, 0xd1, 0x14, 0x78, 0x93, 0x84, 0x57, 0xe3, 0x04, 0x8f, 0x39, 0x0f, - 0x77, 0x70, 0xb9, 0x75, 0xe4, 0x9a, 0xb5, 0x3d, 0x54, 0xf7, 0x41, 0x83, 0x64, 0x53, 0xed, 0x76, - 0xc6, 0x50, 0x66, 0x74, 0x8e, 0xcd, 0x7d, 0x5b, 0x81, 0x71, 0xde, 0xc0, 0xd7, 0x3d, 0x63, 0xad, - 0x00, 0x98, 0x96, 0x65, 0xbb, 0x41, 0x73, 0xf5, 0x86, 0x72, 0x0f, 0x6e, 0xae, 0xe0, 0x81, 0x8c, - 0x80, 0x80, 0xc9, 0x16, 0x80, 0x4f, 0xe9, 0x6b, 0xb6, 0x29, 0x48, 0xb3, 0x4d, 0x6d, 0x72, 0x32, - 0x42, 0xdf, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0x5f, 0x3f, 0x0e, 0x03, 0xdb, 0x68, 0xb7, 0x61, 0xb1, - 0xad, 0x36, 0xfa, 0x85, 0x6f, 0xe0, 0x25, 0xbd, 0x0d, 0xbc, 0xe2, 0x7b, 0xe0, 0x58, 0xcd, 0x6e, - 0xc9, 0xea, 0x16, 0x35, 0xe9, 0xcd, 0xd3, 0x79, 0x44, 0x79, 0x37, 0xf8, 0xdd, 0xd9, 0xf3, 0x8a, - 0xf2, 0xd9, 0x84, 0xba, 0xb4, 0x5e, 0xfc, 0x62, 0x62, 0x72, 0x89, 0x42, 0xd7, 0xf9, 0x4c, 0x0d, - 0xb4, 0xd3, 0x44, 0x35, 0xac, 0x3d, 0xfc, 0xf8, 0x34, 0x3c, 0xb0, 0xdb, 0x70, 0xf7, 0xba, 0xdb, - 0x73, 0x35, 0xbb, 0x75, 0x66, 0xd7, 0xde, 0xb5, 0xfd, 0xc3, 0x20, 0xfc, 0x8d, 0x7c, 0x21, 0x9f, - 0xd8, 0x81, 0xd0, 0x90, 0x37, 0x3a, 0x19, 0x79, 0x7a, 0x94, 0x5f, 0x85, 0x63, 0x8c, 0xb9, 0x4a, - 0x76, 0xa4, 0x69, 0x1f, 0xae, 0x1f, 0xb8, 0x2b, 0x91, 0xf9, 0xf2, 0xf7, 0xc9, 0x4a, 0x67, 0x8c, - 0x33, 0x28, 0xa6, 0xd1, 0x4e, 0x3d, 0x6f, 0xc0, 0x6d, 0x82, 0x3c, 0x9a, 0x9a, 0xa8, 0x13, 0x21, - 0xf1, 0x9b, 0x4c, 0xe2, 0xb1, 0x80, 0xc4, 0x0d, 0x06, 0xcd, 0x97, 0x60, 0xe4, 0x30, 0xb2, 0xbe, - 0xc5, 0x64, 0x0d, 0xa3, 0xa0, 0x90, 0x25, 0x18, 0x23, 0x42, 0x6a, 0x5d, 0xc7, 0xb5, 0x5b, 0xa4, - 0xee, 0x1d, 0x2c, 0xe6, 0x1f, 0xbe, 0x4f, 0x73, 0x65, 0x14, 0xc3, 0x4a, 0x1e, 0x2a, 0x9f, 0x07, - 0xb2, 0x09, 0x5f, 0x47, 0xb5, 0x66, 0x84, 0x84, 0x1b, 0x4c, 0x11, 0x8f, 0x3f, 0xff, 0x4e, 0x38, - 0x8e, 0x3f, 0x93, 0xb2, 0x14, 0xd4, 0x24, 0x7a, 0x0f, 0x26, 0xf3, 0xed, 0xf7, 0xd3, 0x74, 0x3c, - 0xe6, 0x09, 0x08, 0xe8, 0x14, 0xf0, 0xe2, 0x2e, 0x72, 0x5d, 0xd4, 0x71, 0xaa, 0x66, 0x33, 0x4c, - 0xbd, 0xc0, 0x1b, 0x6c, 0xe6, 0x63, 0xaf, 0x8a, 0x5e, 0x5c, 0xa2, 0xc8, 0x42, 0xb3, 0x99, 0xdf, - 0x82, 0xdb, 0x43, 0xa2, 0x22, 0x86, 0xcc, 0x8f, 0x33, 0x99, 0xc7, 0x7b, 0x22, 0x03, 0x8b, 0x5d, - 0x07, 0x3e, 0xee, 0xf9, 0x32, 0x86, 0xcc, 0x4f, 0x30, 0x99, 0x3a, 0xc3, 0x72, 0x97, 0x62, 0x89, - 0xd7, 0x60, 0xfc, 0x49, 0xd4, 0xd9, 0xb6, 0x1d, 0xb6, 0x71, 0x10, 0x43, 0xdc, 0x27, 0x99, 0xb8, - 0x31, 0x06, 0x24, 0xdb, 0x08, 0x58, 0xd6, 0x65, 0x48, 0xed, 0x98, 0x35, 0x14, 0x43, 0xc4, 0xa7, - 0x98, 0x88, 0xa3, 0x98, 0x1f, 0x43, 0x0b, 0x30, 0xbc, 0x6b, 0xb3, 0x95, 0x29, 0x1a, 0xfe, 0x1c, - 0x83, 0xa7, 0x39, 0x86, 0x89, 0x68, 0xdb, 0xed, 0x6e, 0x13, 0x2f, 0x5b, 0xd1, 0x22, 0x3e, 0xcd, - 0x45, 0x70, 0x0c, 0x13, 0x71, 0x08, 0xb3, 0x3e, 0xcf, 0x45, 0x38, 0x01, 0x7b, 0x3e, 0x0c, 0x69, - 0xdb, 0x6a, 0xee, 0xdb, 0x56, 0x1c, 0x25, 0x3e, 0xc3, 0x24, 0x00, 0x83, 0x60, 0x01, 0x57, 0x60, - 0x28, 0xae, 0x23, 0x3e, 0xf7, 0x2a, 0x4f, 0x0f, 0xee, 0x81, 0x25, 0x18, 0xe3, 0x05, 0xaa, 0x61, - 0x5b, 0x31, 0x44, 0xfc, 0x09, 0x13, 0x31, 0x1a, 0x80, 0xb1, 0x69, 0xb8, 0xc8, 0x71, 0x77, 0x51, - 0x1c, 0x21, 0x9f, 0xe7, 0xd3, 0x60, 0x10, 0x66, 0xca, 0x6d, 0x64, 0xd5, 0xf6, 0xe2, 0x49, 0x78, - 0x81, 0x9b, 0x92, 0x63, 0xb0, 0x88, 0x12, 0x8c, 0xb4, 0xcc, 0x8e, 0xb3, 0x67, 0x36, 0x63, 0xb9, - 0xe3, 0x0b, 0x4c, 0xc6, 0xb0, 0x07, 0x62, 0x16, 0xe9, 0x5a, 0x87, 0x11, 0xf3, 0x45, 0x6e, 0x91, - 0x00, 0x8c, 0xa5, 0x9e, 0xe3, 0x92, 0xbd, 0x99, 0xc3, 0x48, 0xfb, 0x53, 0x9e, 0x7a, 0x14, 0xbb, - 0x12, 0x94, 0x78, 0x05, 0x86, 0x9c, 0xc6, 0x33, 0xb1, 0xc4, 0xfc, 0x19, 0xf7, 0x34, 0x01, 0x60, - 0xf0, 0x63, 0x70, 0x47, 0xe8, 0x32, 0x11, 0x43, 0xd8, 0x9f, 0x33, 0x61, 0x13, 0x21, 0x4b, 0x05, - 0x2b, 0x09, 0x87, 0x15, 0xf9, 0x17, 0xbc, 0x24, 0x20, 0x49, 0xd6, 0x3a, 0xee, 0xec, 0x1d, 0x73, - 0xe7, 0x70, 0x56, 0xfb, 0x4b, 0x6e, 0x35, 0x8a, 0x15, 0xac, 0xb6, 0x09, 0x13, 0x4c, 0xe2, 0xe1, - 0xfc, 0xfa, 0x25, 0x5e, 0x58, 0x29, 0x7a, 0x4b, 0xf4, 0xee, 0x7b, 0x60, 0xd2, 0x33, 0x27, 0x6f, - 0x4a, 0x9d, 0x6a, 0xcb, 0x6c, 0xc7, 0x90, 0xfc, 0x65, 0x26, 0x99, 0x57, 0x7c, 0xaf, 0xab, 0x75, - 0x56, 0xcc, 0x36, 0x16, 0xfe, 0x28, 0x64, 0xb8, 0xf0, 0xae, 0xd5, 0x41, 0x35, 0x7b, 0xd7, 0x6a, - 0x3c, 0x83, 0xea, 0x31, 0x44, 0xff, 0x95, 0xe4, 0xaa, 0xad, 0x00, 0x1c, 0x4b, 0x5e, 0x06, 0xcd, - 0xeb, 0x55, 0xaa, 0x8d, 0x56, 0xdb, 0xee, 0xb8, 0x11, 0x12, 0xff, 0x9a, 0x7b, 0xca, 0xc3, 0x2d, - 0x13, 0x58, 0xbe, 0x02, 0xa3, 0xe4, 0x6b, 0xdc, 0x90, 0xfc, 0x0a, 0x13, 0x34, 0xe2, 0xa3, 0x58, - 0xe1, 0xa8, 0xd9, 0xad, 0xb6, 0xd9, 0x89, 0x53, 0xff, 0xfe, 0x86, 0x17, 0x0e, 0x06, 0x61, 0x85, - 0xc3, 0xdd, 0x6f, 0x23, 0xbc, 0xda, 0xc7, 0x90, 0xf0, 0x55, 0x5e, 0x38, 0x38, 0x86, 0x89, 0xe0, - 0x0d, 0x43, 0x0c, 0x11, 0x7f, 0xcb, 0x45, 0x70, 0x0c, 0x16, 0xf1, 0x0e, 0x7f, 0xa1, 0xed, 0xa0, - 0xdd, 0x86, 0xe3, 0x76, 0x68, 0x2b, 0x7c, 0xb0, 0xa8, 0xaf, 0xbd, 0x2a, 0x36, 0x61, 0x46, 0x00, - 0x9a, 0xbf, 0x06, 0x63, 0x52, 0x8b, 0xa1, 0x47, 0x9d, 0xe8, 0x67, 0xde, 0xfb, 0x1a, 0x2b, 0x46, - 0x62, 0x87, 0x91, 0xbf, 0x8e, 0xfd, 0x2e, 0xf6, 0x01, 0xd1, 0xc2, 0xde, 0xff, 0x9a, 0xe7, 0x7a, - 0xa1, 0x0d, 0xc8, 0x5f, 0x85, 0x11, 0xa1, 0x07, 0x88, 0x16, 0xf5, 0x6b, 0x4c, 0xd4, 0x70, 0xb0, - 0x05, 0xc8, 0x9f, 0x87, 0x24, 0x5e, 0xcf, 0xa3, 0xe1, 0xbf, 0xce, 0xe0, 0x84, 0x3d, 0xff, 0x20, - 0xa4, 0xf8, 0x3a, 0x1e, 0x0d, 0xfd, 0x00, 0x83, 0x7a, 0x10, 0x0c, 0xe7, 0x6b, 0x78, 0x34, 0xfc, - 0x37, 0x38, 0x9c, 0x43, 0x30, 0x3c, 0xbe, 0x09, 0x5f, 0xfc, 0x70, 0x92, 0xd5, 0x61, 0x6e, 0xbb, - 0x2b, 0x70, 0x94, 0x2d, 0xde, 0xd1, 0xe8, 0x0f, 0xb1, 0x87, 0x73, 0x44, 0xfe, 0x22, 0x0c, 0xc4, - 0x34, 0xf8, 0x6f, 0x31, 0x28, 0xe5, 0xcf, 0x97, 0x20, 0x1d, 0x58, 0xb0, 0xa3, 0xe1, 0xbf, 0xcd, - 0xe0, 0x41, 0x14, 0x56, 0x9d, 0x2d, 0xd8, 0xd1, 0x02, 0x7e, 0x87, 0xab, 0xce, 0x10, 0xd8, 0x6c, - 0x7c, 0xad, 0x8e, 0x46, 0xff, 0x2e, 0xb7, 0x3a, 0x87, 0xe4, 0x1f, 0x86, 0x21, 0xaf, 0xfe, 0x46, - 0xe3, 0x7f, 0x8f, 0xe1, 0x7d, 0x0c, 0xb6, 0x40, 0xa0, 0xfe, 0x47, 0x8b, 0xf8, 0x7d, 0x6e, 0x81, - 0x00, 0x0a, 0xa7, 0x91, 0xbc, 0xa6, 0x47, 0x4b, 0xfa, 0x08, 0x4f, 0x23, 0x69, 0x49, 0xc7, 0xde, - 0x24, 0x65, 0x30, 0x5a, 0xc4, 0x1f, 0x70, 0x6f, 0x12, 0x7e, 0xac, 0x86, 0xbc, 0x48, 0x46, 0xcb, - 0xf8, 0x23, 0xae, 0x86, 0xb4, 0x46, 0xe6, 0xd7, 0x41, 0xef, 0x5d, 0x20, 0xa3, 0xe5, 0x7d, 0x94, - 0xc9, 0x1b, 0xef, 0x59, 0x1f, 0xf3, 0xef, 0x82, 0x89, 0xf0, 0xc5, 0x31, 0x5a, 0xea, 0xc7, 0x5e, - 0x93, 0x5e, 0x67, 0x82, 0x6b, 0x63, 0x7e, 0xd3, 0xaf, 0xb2, 0xc1, 0x85, 0x31, 0x5a, 0xec, 0xc7, - 0x5f, 0x13, 0x0b, 0x6d, 0x70, 0x5d, 0xcc, 0x17, 0x00, 0xfc, 0x35, 0x29, 0x5a, 0xd6, 0x27, 0x99, - 0xac, 0x00, 0x08, 0xa7, 0x06, 0x5b, 0x92, 0xa2, 0xf1, 0x9f, 0xe2, 0xa9, 0xc1, 0x10, 0x38, 0x35, - 0xf8, 0x6a, 0x14, 0x8d, 0x7e, 0x8e, 0xa7, 0x06, 0x87, 0xe4, 0xaf, 0x40, 0xca, 0xea, 0x36, 0x9b, - 0x38, 0xb6, 0xf4, 0x83, 0x2f, 0xd9, 0x64, 0xfe, 0xfd, 0x75, 0x06, 0xe6, 0x80, 0xfc, 0x79, 0x18, - 0x40, 0xad, 0x6d, 0x54, 0x8f, 0x42, 0xfe, 0xc7, 0xeb, 0xbc, 0x9e, 0x60, 0xee, 0xfc, 0xc3, 0x00, - 0xf4, 0x65, 0x9a, 0x9c, 0xb1, 0x44, 0x60, 0xff, 0xf3, 0x75, 0x76, 0x7e, 0xef, 0x43, 0x7c, 0x01, - 0xf4, 0x36, 0xc0, 0xc1, 0x02, 0x5e, 0x15, 0x05, 0x90, 0x17, 0xf0, 0xcb, 0x70, 0xf4, 0x71, 0xc7, - 0xb6, 0x5c, 0x73, 0x37, 0x0a, 0xfd, 0x5f, 0x0c, 0xcd, 0xf9, 0xb1, 0xc1, 0x5a, 0x76, 0x07, 0xb9, - 0xe6, 0xae, 0x13, 0x85, 0xfd, 0x6f, 0x86, 0xf5, 0x00, 0x18, 0x5c, 0x33, 0x1d, 0x37, 0xce, 0xbc, - 0xff, 0x87, 0x83, 0x39, 0x00, 0x2b, 0x8d, 0x3f, 0x3f, 0x81, 0xf6, 0xa3, 0xb0, 0x3f, 0xe4, 0x4a, - 0x33, 0xfe, 0xfc, 0x83, 0x30, 0x84, 0x3f, 0xd2, 0x3b, 0x2d, 0x11, 0xe0, 0x1f, 0x31, 0xb0, 0x8f, - 0xc0, 0x4f, 0x76, 0xdc, 0xba, 0xdb, 0x88, 0x36, 0xf6, 0xff, 0x32, 0x4f, 0x73, 0xfe, 0x7c, 0x01, - 0xd2, 0x8e, 0x5b, 0xaf, 0x77, 0x59, 0x47, 0x13, 0x01, 0xff, 0xf1, 0xeb, 0xde, 0x4b, 0xae, 0x87, - 0x29, 0x9e, 0x0c, 0xdf, 0xaf, 0x83, 0x25, 0x7b, 0xc9, 0xa6, 0x3b, 0x75, 0xf0, 0xad, 0x26, 0xdc, - 0x51, 0xb3, 0x5b, 0xdb, 0xb6, 0x73, 0x66, 0xdb, 0x76, 0xf7, 0xce, 0xb8, 0x7b, 0x08, 0x2f, 0x1d, - 0x6c, 0x87, 0x2d, 0x89, 0x3f, 0x4f, 0x1e, 0x6e, 0x5b, 0x8e, 0x9c, 0x57, 0xae, 0x36, 0xb0, 0x66, - 0xab, 0x64, 0xdf, 0x5b, 0x3f, 0x01, 0x83, 0x44, 0xd7, 0xb3, 0xe4, 0x58, 0x46, 0x29, 0x26, 0x6f, - 0xbc, 0x3c, 0x75, 0xc4, 0x60, 0x63, 0x1e, 0x75, 0x81, 0x6c, 0x4c, 0x26, 0x04, 0xea, 0x82, 0x47, - 0x3d, 0x47, 0xf7, 0x26, 0x05, 0xea, 0x39, 0x8f, 0xba, 0x48, 0x76, 0x29, 0x55, 0x81, 0xba, 0xe8, - 0x51, 0xcf, 0x93, 0x9d, 0xf8, 0x11, 0x81, 0x7a, 0xde, 0xa3, 0x5e, 0x20, 0xfb, 0xef, 0x49, 0x81, - 0x7a, 0xc1, 0xa3, 0x5e, 0x24, 0x5b, 0xef, 0xe3, 0x02, 0xf5, 0xa2, 0x47, 0xbd, 0x44, 0xb6, 0xdc, - 0x75, 0x81, 0x7a, 0xc9, 0xa3, 0x5e, 0x26, 0xf7, 0x2b, 0x8e, 0x0a, 0xd4, 0xcb, 0x7a, 0x16, 0x8e, - 0xd2, 0x99, 0xcf, 0x93, 0xa3, 0xcd, 0x31, 0x46, 0xe6, 0x83, 0x3e, 0xfd, 0x2c, 0xb9, 0x4b, 0x31, - 0x28, 0xd2, 0xcf, 0xfa, 0xf4, 0x05, 0x72, 0xb1, 0x58, 0x13, 0xe9, 0x0b, 0x3e, 0xfd, 0x5c, 0x66, - 0x04, 0x87, 0x84, 0x48, 0x3f, 0xe7, 0xd3, 0x17, 0x33, 0xa3, 0x38, 0x5c, 0x45, 0xfa, 0xa2, 0x4f, - 0x3f, 0x9f, 0x19, 0x9b, 0x56, 0x66, 0x86, 0x45, 0xfa, 0xf9, 0xdc, 0xfb, 0x88, 0x7b, 0x2d, 0xdf, - 0xbd, 0x13, 0xa2, 0x7b, 0x3d, 0xc7, 0x4e, 0x88, 0x8e, 0xf5, 0x5c, 0x3a, 0x21, 0xba, 0xd4, 0x73, - 0xe6, 0x84, 0xe8, 0x4c, 0xcf, 0x8d, 0x13, 0xa2, 0x1b, 0x3d, 0x07, 0x4e, 0x88, 0x0e, 0xf4, 0x5c, - 0x37, 0x21, 0xba, 0xce, 0x73, 0xda, 0x84, 0xe8, 0x34, 0xcf, 0x5d, 0x13, 0xa2, 0xbb, 0x3c, 0x47, - 0x65, 0x24, 0x47, 0xf9, 0x2e, 0xca, 0x48, 0x2e, 0xf2, 0x9d, 0x93, 0x91, 0x9c, 0xe3, 0xbb, 0x25, - 0x23, 0xb9, 0xc5, 0x77, 0x48, 0x46, 0x72, 0x88, 0xef, 0x8a, 0x8c, 0xe4, 0x0a, 0xdf, 0x09, 0x2c, - 0xc7, 0x0c, 0xd4, 0x0e, 0xc9, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, - 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, - 0xcc, 0x31, 0xf5, 0xe0, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, 0x35, 0x22, 0xc7, 0xd4, - 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0xed, 0x9b, 0x63, 0xbe, 0x7b, 0x27, 0x44, 0xf7, 0x86, 0xe6, - 0x98, 0xda, 0x27, 0xc7, 0xd4, 0x3e, 0x39, 0xa6, 0xf6, 0xc9, 0x31, 0xb5, 0x4f, 0x8e, 0xa9, 0x7d, - 0x72, 0x4c, 0xed, 0x93, 0x63, 0x6a, 0x9f, 0x1c, 0x53, 0xfb, 0xe5, 0x98, 0xda, 0x37, 0xc7, 0xd4, - 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0x0d, 0xe6, 0xd8, - 0xdf, 0xa9, 0xa0, 0xd3, 0x1c, 0x5b, 0x27, 0x97, 0x63, 0x98, 0x2b, 0xb2, 0x52, 0xa6, 0x0d, 0x62, - 0xd7, 0x69, 0xbe, 0x4b, 0xb2, 0x52, 0xae, 0x89, 0xf4, 0x05, 0x8f, 0xce, 0xb3, 0x4d, 0xa4, 0x9f, - 0xf3, 0xe8, 0x3c, 0xdf, 0x44, 0xfa, 0xa2, 0x47, 0xe7, 0x19, 0x27, 0xd2, 0xcf, 0x7b, 0x74, 0x9e, - 0x73, 0x22, 0xfd, 0x82, 0x47, 0xe7, 0x59, 0x27, 0xd2, 0x2f, 0x7a, 0x74, 0x9e, 0x77, 0x22, 0xfd, - 0x92, 0x47, 0xe7, 0x99, 0x27, 0xd2, 0x2f, 0xeb, 0xd3, 0x72, 0xee, 0x71, 0x06, 0xcf, 0xb5, 0xd3, - 0x72, 0xf6, 0x49, 0x1c, 0x67, 0x7d, 0x0e, 0x9e, 0x7f, 0x12, 0xc7, 0x82, 0xcf, 0xc1, 0x33, 0x50, - 0xe2, 0x38, 0x97, 0xfb, 0x20, 0x71, 0x9f, 0x25, 0xbb, 0x6f, 0x52, 0x72, 0x5f, 0x22, 0xe0, 0xba, - 0x49, 0xc9, 0x75, 0x89, 0x80, 0xdb, 0x26, 0x25, 0xb7, 0x25, 0x02, 0x2e, 0x9b, 0x94, 0x5c, 0x96, - 0x08, 0xb8, 0x6b, 0x52, 0x72, 0x57, 0x22, 0xe0, 0xaa, 0x49, 0xc9, 0x55, 0x89, 0x80, 0x9b, 0x26, - 0x25, 0x37, 0x25, 0x02, 0x2e, 0x9a, 0x94, 0x5c, 0x94, 0x08, 0xb8, 0x67, 0x52, 0x72, 0x4f, 0x22, - 0xe0, 0x9a, 0x13, 0xb2, 0x6b, 0x12, 0x41, 0xb7, 0x9c, 0x90, 0xdd, 0x92, 0x08, 0xba, 0xe4, 0x84, - 0xec, 0x92, 0x44, 0xd0, 0x1d, 0x27, 0x64, 0x77, 0x24, 0x82, 0xae, 0xf8, 0x59, 0x82, 0x77, 0x84, - 0x1b, 0x6e, 0xa7, 0x5b, 0x73, 0x6f, 0xa9, 0x23, 0x9c, 0x17, 0xda, 0x87, 0xf4, 0x82, 0x3e, 0x47, - 0x1a, 0xd6, 0x60, 0xc7, 0x29, 0xad, 0x60, 0xf3, 0x42, 0x63, 0x11, 0x40, 0x58, 0xe1, 0x88, 0xc5, - 0x5b, 0xea, 0x0d, 0xe7, 0x85, 0x36, 0x23, 0x5a, 0xbf, 0x4b, 0x6f, 0x79, 0xc7, 0xf6, 0x62, 0x82, - 0x77, 0x6c, 0xcc, 0xfc, 0x87, 0xed, 0xd8, 0x66, 0xa3, 0x4d, 0xee, 0x19, 0x7b, 0x36, 0xda, 0xd8, - 0x3d, 0xab, 0x4e, 0xdc, 0x0e, 0x6e, 0x36, 0xda, 0xb4, 0x9e, 0x51, 0xdf, 0xdc, 0x7e, 0x8b, 0x45, - 0xb0, 0x81, 0xda, 0x21, 0x11, 0x7c, 0xd8, 0x7e, 0x6b, 0x5e, 0x28, 0x25, 0x87, 0x8d, 0x60, 0xf5, - 0xd0, 0x11, 0x7c, 0xd8, 0xce, 0x6b, 0x5e, 0x28, 0x2f, 0x87, 0x8e, 0xe0, 0xb7, 0xa0, 0x1f, 0x62, - 0x11, 0xec, 0x9b, 0xff, 0xb0, 0xfd, 0xd0, 0x6c, 0xb4, 0xc9, 0x43, 0x23, 0x58, 0x3d, 0x44, 0x04, - 0xc7, 0xe9, 0x8f, 0x66, 0xa3, 0x4d, 0x1b, 0x1e, 0xc1, 0xb7, 0xdc, 0xcd, 0x7c, 0x5a, 0x81, 0xf1, - 0xd5, 0x46, 0xbd, 0xd2, 0xda, 0x46, 0xf5, 0x3a, 0xaa, 0x33, 0x3b, 0xce, 0x0b, 0x95, 0xa0, 0x8f, - 0xab, 0x5f, 0x7a, 0x79, 0xca, 0xb7, 0xf0, 0x79, 0x48, 0x51, 0x9b, 0xce, 0xcf, 0x67, 0x6e, 0x28, - 0x11, 0x15, 0xce, 0x63, 0xd5, 0x4f, 0x72, 0xd8, 0xd9, 0xf9, 0xcc, 0x3f, 0x2b, 0x81, 0x2a, 0xe7, - 0x0d, 0xe7, 0x3e, 0x42, 0x34, 0xb4, 0x6e, 0x59, 0xc3, 0x33, 0xb1, 0x34, 0x0c, 0xe8, 0x76, 0x67, - 0x8f, 0x6e, 0x01, 0xad, 0xba, 0x30, 0xb6, 0xda, 0xa8, 0xaf, 0x92, 0x3f, 0x69, 0x8d, 0xa3, 0x12, - 0xe5, 0x91, 0xea, 0xc1, 0xbc, 0x10, 0x96, 0x41, 0x84, 0x17, 0xd2, 0x62, 0x8d, 0xc8, 0x35, 0xf0, - 0x63, 0x2d, 0xe1, 0xb1, 0xb3, 0xfd, 0x1e, 0xeb, 0x57, 0x76, 0xef, 0x81, 0xb3, 0xfd, 0x1e, 0xe8, - 0xe7, 0x90, 0xf7, 0xa8, 0xa7, 0xf9, 0xe2, 0x4c, 0xef, 0xd9, 0xe8, 0x27, 0x20, 0xb1, 0x4c, 0x6f, - 0xd0, 0x0e, 0x17, 0x87, 0xb1, 0x52, 0xdf, 0x79, 0x79, 0x2a, 0xb9, 0xd5, 0x6d, 0xd4, 0x8d, 0xc4, - 0x72, 0x5d, 0xbf, 0x06, 0x03, 0xef, 0x64, 0x7f, 0x18, 0x86, 0x19, 0x16, 0x19, 0xc3, 0xfd, 0x7d, - 0xf7, 0x88, 0xf0, 0x83, 0xcf, 0xd0, 0x1d, 0xc4, 0xb9, 0xad, 0x86, 0xe5, 0x9e, 0x5d, 0xb8, 0x64, - 0x50, 0x11, 0xb9, 0xff, 0x0f, 0x40, 0x9f, 0x59, 0x36, 0x9d, 0x3d, 0x7d, 0x95, 0x4b, 0xa6, 0x8f, - 0xbe, 0xf4, 0x9d, 0x97, 0xa7, 0x16, 0xe3, 0x48, 0x7d, 0xa0, 0x6e, 0x3a, 0x7b, 0x0f, 0xb8, 0xfb, - 0x6d, 0x34, 0x57, 0xdc, 0x77, 0x91, 0xc3, 0xa5, 0xb7, 0xf9, 0xaa, 0xc7, 0xe6, 0x95, 0x09, 0xcc, - 0x2b, 0x25, 0xcc, 0xe9, 0xaa, 0x38, 0xa7, 0xf9, 0x37, 0x3a, 0x9f, 0xa7, 0xf9, 0x22, 0x21, 0x59, - 0x52, 0x8d, 0xb2, 0xa4, 0x7a, 0xab, 0x96, 0x6c, 0xf3, 0xfa, 0x28, 0xcd, 0x55, 0x3d, 0x68, 0xae, - 0xea, 0xad, 0xcc, 0xf5, 0x27, 0x34, 0x5b, 0xbd, 0x7c, 0xda, 0xb2, 0xe8, 0x15, 0xc4, 0x5f, 0xae, - 0xbd, 0xa0, 0x37, 0xb5, 0x0b, 0xc8, 0x27, 0x6f, 0x3c, 0x3f, 0xa5, 0xe4, 0x3e, 0x9d, 0xe0, 0x33, - 0xa7, 0x89, 0xf4, 0xc6, 0x66, 0xfe, 0xcb, 0xd2, 0x53, 0xbd, 0x15, 0x16, 0x7a, 0x4e, 0x81, 0x89, - 0x9e, 0x4a, 0x4e, 0xcd, 0xf4, 0xe6, 0x96, 0x73, 0xeb, 0xb0, 0xe5, 0x9c, 0x29, 0xf8, 0x15, 0x05, - 0x8e, 0x4b, 0xe5, 0x95, 0xaa, 0x77, 0x46, 0x52, 0xef, 0xf6, 0xde, 0x27, 0x11, 0xc6, 0x80, 0x76, - 0x41, 0xf7, 0x4a, 0x80, 0x80, 0x64, 0xcf, 0xef, 0x8b, 0x92, 0xdf, 0x4f, 0x78, 0x80, 0x10, 0x73, - 0xf1, 0x08, 0x60, 0x6a, 0xdb, 0x90, 0xdc, 0xec, 0x20, 0xa4, 0x67, 0x21, 0xb1, 0xd6, 0x61, 0x1a, - 0x8e, 0x52, 0xfc, 0x5a, 0xa7, 0xd8, 0x31, 0xad, 0xda, 0x9e, 0x91, 0x58, 0xeb, 0xe8, 0x27, 0x41, - 0x2d, 0xb0, 0x3f, 0xbd, 0x4f, 0x2f, 0x8c, 0x51, 0x86, 0x82, 0x55, 0x67, 0x1c, 0x98, 0xa6, 0x67, - 0x21, 0x79, 0x1d, 0x99, 0x3b, 0x4c, 0x09, 0xa0, 0x3c, 0x78, 0xc4, 0x20, 0xe3, 0xec, 0x81, 0x8f, - 0x42, 0x8a, 0x0b, 0xd6, 0x4f, 0x61, 0xc4, 0x8e, 0xcb, 0x1e, 0xcb, 0x10, 0x58, 0x1d, 0xb6, 0x72, - 0x11, 0xaa, 0x7e, 0x1a, 0x06, 0x8c, 0xc6, 0xee, 0x9e, 0xcb, 0x1e, 0xde, 0xcb, 0x46, 0xc9, 0xb9, - 0xc7, 0x60, 0xc8, 0xd3, 0xe8, 0x4d, 0x16, 0x5d, 0xa6, 0x53, 0xd3, 0x27, 0x83, 0xeb, 0x09, 0xdf, - 0xb7, 0xa4, 0x43, 0xfa, 0x34, 0xa4, 0x36, 0xdc, 0x8e, 0x5f, 0xf4, 0x79, 0x47, 0xea, 0x8d, 0xe6, - 0xde, 0xa7, 0x40, 0xaa, 0x8c, 0x50, 0x9b, 0x18, 0xfc, 0x1e, 0x48, 0x96, 0xed, 0xa7, 0x2c, 0xa6, - 0xe0, 0x38, 0xb3, 0x28, 0x26, 0x33, 0x9b, 0x12, 0xb2, 0x7e, 0x4f, 0xd0, 0xee, 0xc7, 0x3c, 0xbb, - 0x07, 0xf8, 0x88, 0xed, 0x73, 0x82, 0xed, 0x99, 0x03, 0x31, 0x53, 0x8f, 0xfd, 0x2f, 0x42, 0x3a, - 0xf0, 0x14, 0x7d, 0x86, 0xa9, 0x91, 0x90, 0x81, 0x41, 0x5b, 0x61, 0x8e, 0x1c, 0x82, 0x11, 0xe1, - 0xc1, 0x18, 0x1a, 0x30, 0x71, 0x1f, 0x28, 0x31, 0xf3, 0xac, 0x68, 0xe6, 0x70, 0x56, 0x66, 0xea, - 0x79, 0x6a, 0x23, 0x62, 0xee, 0x53, 0x34, 0x38, 0xfb, 0x3b, 0x11, 0x7f, 0xce, 0x0d, 0x80, 0xba, - 0xda, 0x68, 0xe6, 0x1e, 0x04, 0xa0, 0x29, 0x5f, 0xb1, 0xba, 0x2d, 0x29, 0xeb, 0x46, 0xb9, 0x81, - 0x37, 0xf7, 0xd0, 0x26, 0x72, 0x08, 0x8b, 0xd8, 0x4f, 0xe1, 0x02, 0x03, 0x34, 0xc5, 0x08, 0xfe, - 0xbe, 0x48, 0x7c, 0x68, 0x27, 0x86, 0x59, 0x33, 0x94, 0xf5, 0x31, 0xe4, 0x16, 0x2c, 0xdb, 0xdd, - 0x43, 0x1d, 0x09, 0xb1, 0xa0, 0x9f, 0x13, 0x12, 0x76, 0x74, 0xe1, 0x4e, 0x0f, 0xd1, 0x17, 0x74, - 0x2e, 0xf7, 0x25, 0xa2, 0x20, 0x6e, 0x05, 0x7a, 0x26, 0xa8, 0xc6, 0x98, 0xa0, 0x7e, 0x41, 0xe8, - 0xdf, 0x0e, 0x50, 0x53, 0x7a, 0xb5, 0xbc, 0x2c, 0xbc, 0xe7, 0x1c, 0xac, 0xac, 0xf8, 0x8e, 0xc9, - 0x6d, 0xca, 0x55, 0xbe, 0x2f, 0x52, 0xe5, 0x3e, 0xdd, 0xed, 0x61, 0x6d, 0xaa, 0xc6, 0xb5, 0xe9, - 0xd7, 0xbd, 0x8e, 0x83, 0xfe, 0x88, 0x01, 0xf9, 0xcd, 0x0c, 0xfd, 0xfe, 0x48, 0xdf, 0xe7, 0x95, - 0x92, 0xa7, 0xea, 0x62, 0x5c, 0xf7, 0xe7, 0x13, 0xc5, 0xa2, 0xa7, 0xee, 0xc5, 0x43, 0x84, 0x40, - 0x3e, 0x51, 0x2a, 0x79, 0x65, 0x3b, 0xf5, 0xc1, 0xe7, 0xa7, 0x94, 0x17, 0x9e, 0x9f, 0x3a, 0x92, - 0xfb, 0x82, 0x02, 0xe3, 0x8c, 0x33, 0x10, 0xb8, 0x0f, 0x48, 0xca, 0xdf, 0xc6, 0x6b, 0x46, 0x98, - 0x05, 0x7e, 0x6e, 0xc1, 0xfb, 0x4d, 0x05, 0x32, 0x3d, 0xba, 0x72, 0x7b, 0xcf, 0xc7, 0x52, 0x39, - 0xaf, 0x54, 0x7e, 0xf1, 0x36, 0x7f, 0x0c, 0x06, 0x36, 0x1b, 0x2d, 0xd4, 0xc1, 0x2b, 0x01, 0xfe, - 0x40, 0x55, 0xe6, 0x87, 0x39, 0x74, 0x88, 0xd3, 0xa8, 0x72, 0x02, 0x6d, 0x41, 0xcf, 0x40, 0xb2, - 0x6c, 0xba, 0x26, 0xd1, 0x60, 0xd8, 0xab, 0xaf, 0xa6, 0x6b, 0xe6, 0xce, 0xc1, 0xf0, 0xca, 0x3e, - 0xb9, 0x24, 0x53, 0x27, 0x17, 0x40, 0xc4, 0xee, 0x8f, 0xf7, 0xab, 0x67, 0x67, 0x07, 0x52, 0x75, - 0xed, 0x86, 0x92, 0x4f, 0x12, 0x7d, 0x9e, 0x84, 0xd1, 0x35, 0xac, 0x36, 0xc1, 0x09, 0x30, 0xfa, - 0x74, 0xd5, 0x9b, 0xbc, 0xd4, 0x94, 0xa9, 0x7e, 0x53, 0x36, 0x0d, 0xca, 0x8a, 0xd8, 0x3a, 0x05, - 0xf5, 0x30, 0x94, 0x95, 0xd9, 0x64, 0x6a, 0x54, 0x1b, 0x9f, 0x4d, 0xa6, 0x40, 0x1b, 0x61, 0xcf, - 0xfd, 0x47, 0x15, 0x34, 0xda, 0xea, 0x94, 0xd1, 0x4e, 0xc3, 0x6a, 0xb8, 0xbd, 0xfd, 0xaa, 0xa7, - 0xb1, 0xfe, 0x30, 0x0c, 0x61, 0x93, 0x5e, 0x65, 0x3f, 0x3d, 0x85, 0x4d, 0x7f, 0x92, 0xb5, 0x28, - 0x92, 0x08, 0x36, 0x40, 0x42, 0xc7, 0xc7, 0xe8, 0x57, 0x41, 0x5d, 0x5d, 0x5d, 0x61, 0x8b, 0xdb, - 0xe2, 0x81, 0x50, 0x76, 0xc7, 0x86, 0x7d, 0x63, 0x63, 0xce, 0xae, 0x81, 0x05, 0xe8, 0x8b, 0x90, - 0x58, 0x5d, 0x61, 0x0d, 0xef, 0xa9, 0x38, 0x62, 0x8c, 0xc4, 0xea, 0xca, 0xe4, 0xdf, 0x2b, 0x30, - 0x22, 0x8c, 0xea, 0x39, 0x18, 0xa6, 0x03, 0x81, 0xe9, 0x0e, 0x1a, 0xc2, 0x18, 0xd7, 0x39, 0x71, - 0x8b, 0x3a, 0x4f, 0x16, 0x60, 0x4c, 0x1a, 0xd7, 0xe7, 0x40, 0x0f, 0x0e, 0x31, 0x25, 0xe8, 0xcf, - 0xf6, 0x84, 0x50, 0x72, 0x77, 0x01, 0xf8, 0x76, 0xf5, 0x7e, 0x6d, 0x66, 0xb5, 0xb2, 0xb1, 0x59, - 0x29, 0x6b, 0x4a, 0xee, 0xab, 0x0a, 0xa4, 0x59, 0xdb, 0x5a, 0xb3, 0xdb, 0x48, 0x2f, 0x82, 0x52, - 0x60, 0xf1, 0xf0, 0xc6, 0xf4, 0x56, 0x0a, 0xfa, 0x19, 0x50, 0x8a, 0xf1, 0x5d, 0xad, 0x14, 0xf5, - 0x05, 0x50, 0x4a, 0xcc, 0xc1, 0xf1, 0x3c, 0xa3, 0x94, 0x72, 0x3f, 0x52, 0xe1, 0x58, 0xb0, 0x8d, - 0xe6, 0xf5, 0xe4, 0xa4, 0xf8, 0xde, 0x94, 0x1f, 0x3a, 0xbb, 0x70, 0x6e, 0x71, 0x0e, 0xff, 0xe3, - 0x85, 0xe4, 0x49, 0xf1, 0x15, 0xaa, 0x97, 0xa5, 0xe7, 0x9a, 0x48, 0x3e, 0x19, 0xa0, 0xf6, 0x5c, - 0x13, 0x11, 0xa8, 0x3d, 0xd7, 0x44, 0x04, 0x6a, 0xcf, 0x35, 0x11, 0x81, 0xda, 0x73, 0x14, 0x20, - 0x50, 0x7b, 0xae, 0x89, 0x08, 0xd4, 0x9e, 0x6b, 0x22, 0x02, 0xb5, 0xf7, 0x9a, 0x08, 0x23, 0xf7, - 0xbd, 0x26, 0x22, 0xd2, 0x7b, 0xaf, 0x89, 0x88, 0xf4, 0xde, 0x6b, 0x22, 0xf9, 0xa4, 0xdb, 0xe9, - 0xa2, 0xfe, 0x87, 0x0e, 0x22, 0xfe, 0xa0, 0x77, 0x40, 0xbf, 0x00, 0xaf, 0xc1, 0x18, 0xdd, 0x8f, - 0x28, 0xd9, 0x96, 0x6b, 0x36, 0x2c, 0xd4, 0xd1, 0xdf, 0x0e, 0xc3, 0x74, 0x88, 0xbe, 0xe5, 0x84, - 0xbd, 0x05, 0x52, 0x3a, 0x2b, 0xb7, 0x02, 0x77, 0xee, 0x67, 0x49, 0x98, 0xa0, 0x03, 0xab, 0x66, - 0x0b, 0x09, 0x97, 0x8c, 0x4e, 0x4b, 0x47, 0x4a, 0xa3, 0x18, 0x7e, 0xf3, 0xe5, 0x29, 0x3a, 0x5a, - 0xf0, 0x82, 0xe9, 0xb4, 0x74, 0xb8, 0x24, 0xf2, 0xf9, 0xeb, 0xcf, 0x69, 0xe9, 0xe2, 0x91, 0xc8, - 0xe7, 0x2d, 0x37, 0x1e, 0x1f, 0xbf, 0x82, 0x24, 0xf2, 0x95, 0xbd, 0x28, 0x3b, 0x2d, 0x5d, 0x46, - 0x12, 0xf9, 0x2a, 0x5e, 0xbc, 0x9d, 0x96, 0x8e, 0x9e, 0x44, 0xbe, 0xab, 0x5e, 0xe4, 0x9d, 0x96, - 0x0e, 0xa1, 0x44, 0xbe, 0x25, 0x2f, 0x06, 0x4f, 0x4b, 0x57, 0x95, 0x44, 0xbe, 0x47, 0xbc, 0x68, - 0x3c, 0x2d, 0x5d, 0x5a, 0x12, 0xf9, 0x96, 0xbd, 0xb8, 0x9c, 0x91, 0xaf, 0x2f, 0x89, 0x8c, 0xd7, - 0xfc, 0x08, 0x9d, 0x91, 0x2f, 0x32, 0x89, 0x9c, 0xff, 0xcf, 0x8f, 0xd5, 0x19, 0xf9, 0x4a, 0x93, - 0xc8, 0x79, 0xdd, 0x8f, 0xda, 0x19, 0xf9, 0xa8, 0x4c, 0xe4, 0x5c, 0xf1, 0xe3, 0x77, 0x46, 0x3e, - 0x34, 0x13, 0x39, 0x57, 0xfd, 0x48, 0x9e, 0x91, 0x8f, 0xcf, 0x44, 0xce, 0x35, 0x7f, 0x0f, 0xfd, - 0x1b, 0x52, 0xf8, 0x05, 0x2e, 0x41, 0xe5, 0xa4, 0xf0, 0x83, 0x90, 0xd0, 0xcb, 0x49, 0xa1, 0x07, - 0x21, 0x61, 0x97, 0x93, 0xc2, 0x0e, 0x42, 0x42, 0x2e, 0x27, 0x85, 0x1c, 0x84, 0x84, 0x5b, 0x4e, - 0x0a, 0x37, 0x08, 0x09, 0xb5, 0x9c, 0x14, 0x6a, 0x10, 0x12, 0x66, 0x39, 0x29, 0xcc, 0x20, 0x24, - 0xc4, 0x72, 0x52, 0x88, 0x41, 0x48, 0x78, 0xe5, 0xa4, 0xf0, 0x82, 0x90, 0xd0, 0x3a, 0x25, 0x87, - 0x16, 0x84, 0x85, 0xd5, 0x29, 0x39, 0xac, 0x20, 0x2c, 0xa4, 0xee, 0x96, 0x43, 0x6a, 0xe8, 0xe6, - 0xcb, 0x53, 0x03, 0x78, 0x28, 0x10, 0x4d, 0xa7, 0xe4, 0x68, 0x82, 0xb0, 0x48, 0x3a, 0x25, 0x47, - 0x12, 0x84, 0x45, 0xd1, 0x29, 0x39, 0x8a, 0x20, 0x2c, 0x82, 0x5e, 0x94, 0x23, 0xc8, 0xbf, 0xe2, - 0x93, 0x93, 0x4e, 0x14, 0xa3, 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, - 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x71, - 0x22, 0x48, 0x8d, 0x15, 0x41, 0x6a, 0xbf, 0x08, 0x3a, 0x25, 0x5f, 0x78, 0x80, 0xb0, 0x82, 0x74, - 0x4a, 0x3e, 0xf9, 0x8c, 0x0e, 0x21, 0x35, 0x56, 0x08, 0xa9, 0xfd, 0x42, 0xe8, 0x1b, 0x2a, 0x1c, - 0x13, 0x42, 0x88, 0x1d, 0x0f, 0xbd, 0x59, 0x15, 0xe8, 0x42, 0x8c, 0xfb, 0x15, 0x61, 0x31, 0x75, - 0x21, 0xc6, 0x19, 0xf5, 0x41, 0x71, 0xd6, 0x5b, 0x85, 0x2a, 0x31, 0xaa, 0xd0, 0x55, 0x2f, 0x86, - 0x2e, 0xc4, 0xb8, 0x77, 0xd1, 0x1b, 0x7b, 0x97, 0x0e, 0x2a, 0x02, 0x8f, 0xc4, 0x2a, 0x02, 0xcb, - 0xb1, 0x8a, 0xc0, 0x35, 0xdf, 0x83, 0x1f, 0x48, 0xc0, 0x71, 0xdf, 0x83, 0xf4, 0x13, 0xf9, 0x09, - 0xa1, 0x5c, 0xe0, 0x84, 0x4a, 0xe7, 0xa7, 0x36, 0x01, 0x37, 0x26, 0x96, 0xeb, 0xfa, 0xba, 0x78, - 0x56, 0x95, 0x3f, 0xec, 0xf9, 0x4d, 0xc0, 0xe3, 0x6c, 0x2f, 0xf4, 0x14, 0xa8, 0xcb, 0x75, 0x87, - 0x54, 0x8b, 0xb0, 0xc7, 0x96, 0x0c, 0x4c, 0xd6, 0x0d, 0x18, 0x24, 0xec, 0x0e, 0x71, 0xef, 0xad, - 0x3c, 0xb8, 0x6c, 0x30, 0x49, 0xb9, 0x17, 0x15, 0x98, 0x16, 0x42, 0xf9, 0xcd, 0x39, 0x31, 0xb8, - 0x12, 0xeb, 0xc4, 0x40, 0x48, 0x10, 0xff, 0xf4, 0xe0, 0xde, 0xde, 0x83, 0xea, 0x60, 0x96, 0xc8, - 0x27, 0x09, 0xbf, 0x0a, 0xa3, 0xfe, 0x0c, 0xc8, 0x2b, 0xdb, 0xf9, 0xe8, 0xcd, 0xcc, 0xb0, 0xd4, - 0x3c, 0x2f, 0x6d, 0xa2, 0x1d, 0x08, 0xf3, 0xb2, 0x35, 0x97, 0x87, 0xb1, 0x55, 0xf1, 0xaf, 0x75, - 0xa2, 0xf6, 0x22, 0x52, 0xb8, 0x35, 0xbf, 0xf1, 0x99, 0xa9, 0x23, 0xb9, 0xfb, 0x61, 0x38, 0xf8, - 0x07, 0x39, 0x12, 0x70, 0x88, 0x03, 0xf3, 0xc9, 0x97, 0x30, 0xf7, 0x1f, 0x2a, 0x70, 0x5b, 0x90, - 0xfd, 0x5d, 0x0d, 0x77, 0x6f, 0xd9, 0xc2, 0x3d, 0xfd, 0x83, 0x90, 0x42, 0xcc, 0x71, 0xec, 0x27, - 0x4d, 0xd8, 0x6b, 0x64, 0x28, 0xfb, 0x1c, 0xf9, 0xd7, 0xf0, 0x20, 0xd2, 0x26, 0x08, 0x7f, 0xec, - 0xc2, 0xe4, 0x3d, 0x30, 0x40, 0xe5, 0x8b, 0x7a, 0x8d, 0x48, 0x7a, 0x7d, 0x2e, 0x44, 0x2f, 0x12, - 0x47, 0xfa, 0x35, 0x41, 0xaf, 0xc0, 0xdb, 0x6a, 0x28, 0xfb, 0x1c, 0x0f, 0xbe, 0x62, 0x0a, 0xf7, - 0x7f, 0x24, 0xa2, 0xa2, 0x95, 0x9c, 0x81, 0x54, 0x45, 0xe6, 0x09, 0xd7, 0xb3, 0x0c, 0xc9, 0x55, - 0xbb, 0x4e, 0x7e, 0x6c, 0x85, 0xfc, 0x5e, 0x2c, 0x33, 0x32, 0xfb, 0xf1, 0xd8, 0xd3, 0x90, 0x2a, - 0xed, 0x35, 0x9a, 0xf5, 0x0e, 0xb2, 0xd8, 0x91, 0x3d, 0xdb, 0x41, 0xc7, 0x18, 0xc3, 0xa3, 0xe5, - 0x4a, 0x30, 0xbe, 0x6a, 0x5b, 0xc5, 0x7d, 0x37, 0x58, 0x37, 0xe6, 0xa4, 0x14, 0x61, 0x47, 0x3e, - 0xe4, 0x4f, 0x3c, 0x30, 0x43, 0x71, 0xe0, 0x3b, 0x2f, 0x4f, 0x29, 0x9b, 0xde, 0xf6, 0xf9, 0x0a, - 0xdc, 0xce, 0xd2, 0xa7, 0x47, 0xd4, 0x42, 0x94, 0xa8, 0x21, 0x76, 0x4c, 0x1d, 0x10, 0xb7, 0x8c, - 0xc5, 0x59, 0xa1, 0xe2, 0xde, 0x98, 0x66, 0xb8, 0x29, 0x3a, 0x50, 0x33, 0xf5, 0x50, 0x9a, 0x85, - 0x8a, 0x9b, 0x8b, 0x12, 0x27, 0x69, 0x76, 0x37, 0x0c, 0x79, 0xb4, 0x40, 0x34, 0x04, 0x33, 0x65, - 0x61, 0x36, 0x07, 0xe9, 0x40, 0xc2, 0xea, 0x03, 0xa0, 0x14, 0xb4, 0x23, 0xf8, 0xbf, 0xa2, 0xa6, - 0xe0, 0xff, 0x4a, 0x5a, 0x62, 0xf6, 0x1e, 0x18, 0x93, 0xb6, 0x2f, 0x31, 0xa5, 0xac, 0x01, 0xfe, - 0xaf, 0xa2, 0xa5, 0x27, 0x93, 0x1f, 0xfc, 0xe3, 0xec, 0x91, 0xd9, 0x2b, 0xa0, 0xf7, 0x6e, 0x74, - 0xea, 0x83, 0x90, 0x28, 0x60, 0x91, 0xb7, 0x43, 0xa2, 0x58, 0xd4, 0x94, 0xc9, 0xb1, 0xdf, 0xfc, - 0xd4, 0x74, 0xba, 0x48, 0xfe, 0xda, 0xf8, 0x31, 0xe4, 0x16, 0x8b, 0x0c, 0xfc, 0x10, 0xdc, 0x16, - 0xba, 0x51, 0x8a, 0xf1, 0xa5, 0x12, 0xc5, 0x97, 0xcb, 0x3d, 0xf8, 0x72, 0x99, 0xe0, 0x95, 0x3c, - 0x3f, 0x70, 0x2e, 0xe8, 0x21, 0x9b, 0x8c, 0x99, 0x7a, 0xe0, 0x80, 0xbb, 0x90, 0x7f, 0x88, 0xf1, - 0x16, 0x43, 0x79, 0x51, 0xc4, 0x81, 0x75, 0x31, 0x5f, 0x62, 0xf8, 0x52, 0x28, 0x7e, 0x47, 0x3a, - 0x55, 0x15, 0x57, 0x08, 0x26, 0xa4, 0xe4, 0x29, 0x5c, 0x0e, 0x15, 0xb2, 0x17, 0xb8, 0xeb, 0x5e, - 0xf6, 0x14, 0xae, 0x84, 0xf2, 0x36, 0x22, 0xee, 0x7c, 0x55, 0xf2, 0x67, 0xd8, 0x22, 0x5f, 0x38, - 0xab, 0xdf, 0xc6, 0x73, 0x54, 0xa8, 0xc0, 0xcc, 0x40, 0x9c, 0x2b, 0x5f, 0x62, 0x80, 0x62, 0x5f, - 0x40, 0x7f, 0x2b, 0x71, 0x64, 0xfe, 0x11, 0x26, 0xa4, 0xd4, 0x57, 0x48, 0x84, 0xa9, 0x38, 0xbc, - 0xb8, 0x79, 0xe3, 0x95, 0xec, 0x91, 0x97, 0x5e, 0xc9, 0x1e, 0xf9, 0x97, 0x57, 0xb2, 0x47, 0xbe, - 0xfb, 0x4a, 0x56, 0xf9, 0xc1, 0x2b, 0x59, 0xe5, 0x87, 0xaf, 0x64, 0x95, 0x9f, 0xbe, 0x92, 0x55, - 0x9e, 0xbd, 0x99, 0x55, 0x5e, 0xb8, 0x99, 0x55, 0xbe, 0x74, 0x33, 0xab, 0x7c, 0xed, 0x66, 0x56, - 0x79, 0xf1, 0x66, 0x56, 0xb9, 0x71, 0x33, 0xab, 0xbc, 0x74, 0x33, 0xab, 0x7c, 0xf7, 0x66, 0x56, - 0xf9, 0xc1, 0xcd, 0xec, 0x91, 0x1f, 0xde, 0xcc, 0x2a, 0x3f, 0xbd, 0x99, 0x3d, 0xf2, 0xec, 0xf7, - 0xb2, 0x47, 0x9e, 0xff, 0x5e, 0xf6, 0xc8, 0x0b, 0xdf, 0xcb, 0x2a, 0xff, 0x17, 0x00, 0x00, 0xff, - 0xff, 0x00, 0x4b, 0x23, 0x60, 0xc3, 0x63, 0x00, 0x00, + // 6506 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0x6b, 0x70, 0x24, 0x57, + 0x75, 0x56, 0x4f, 0x8f, 0xb4, 0xa3, 0xa3, 0x57, 0xab, 0xb5, 0xd6, 0x8e, 0xe5, 0xb5, 0xa4, 0x1d, + 0xaf, 0xd7, 0xb2, 0xb0, 0xb5, 0x5a, 0xad, 0xb4, 0x8f, 0x59, 0x6c, 0xd7, 0xbc, 0x76, 0xad, 0x45, + 0x1a, 0x89, 0x96, 0x84, 0xbd, 0x24, 0x55, 0x53, 0xbd, 0x33, 0x57, 0xd2, 0xd8, 0x33, 0xdd, 0xc3, + 0x74, 0xcb, 0xb6, 0xfc, 0x23, 0xe5, 0x40, 0x42, 0x20, 0xa9, 0x3c, 0x49, 0x2a, 0x40, 0xc0, 0x18, + 0x52, 0x04, 0x03, 0x79, 0x40, 0x42, 0x08, 0x45, 0xa5, 0x82, 0xff, 0x40, 0x36, 0x7f, 0x52, 0x26, + 0xbf, 0x52, 0x54, 0xca, 0xc5, 0xae, 0xa9, 0x0a, 0x49, 0x9c, 0x04, 0x82, 0xab, 0xa0, 0xca, 0xfc, + 0x48, 0xdd, 0x57, 0x77, 0xdf, 0x3b, 0x3d, 0xea, 0x96, 0xd7, 0x06, 0xfe, 0xec, 0xce, 0xdc, 0x73, + 0xbe, 0xd3, 0xe7, 0x9e, 0xd7, 0x3d, 0x7d, 0xef, 0xd5, 0xc0, 0xab, 0x4b, 0x30, 0xbd, 0x63, 0xdb, + 0x3b, 0x0d, 0x74, 0xba, 0xd5, 0xb6, 0x5d, 0xfb, 0xfa, 0xde, 0xf6, 0xe9, 0x1a, 0x72, 0xaa, 0xed, + 0x7a, 0xcb, 0xb5, 0xdb, 0x73, 0x64, 0x4c, 0x1f, 0xa1, 0x1c, 0x73, 0x9c, 0x23, 0xb3, 0x0a, 0xa3, + 0x97, 0xeb, 0x0d, 0x54, 0xf4, 0x18, 0x37, 0x90, 0xab, 0x5f, 0x80, 0xe4, 0x76, 0xbd, 0x81, 0xd2, + 0xca, 0xb4, 0x3a, 0x33, 0xb0, 0x70, 0x72, 0x4e, 0x02, 0xcd, 0x89, 0x88, 0x75, 0x3c, 0x6c, 0x10, + 0x44, 0xe6, 0x7b, 0x49, 0x18, 0x0b, 0xa1, 0xea, 0x3a, 0x24, 0x2d, 0xb3, 0x89, 0x25, 0x2a, 0x33, + 0xfd, 0x06, 0xf9, 0xac, 0xa7, 0xe1, 0x48, 0xcb, 0xac, 0x3e, 0x69, 0xee, 0xa0, 0x74, 0x82, 0x0c, + 0xf3, 0xaf, 0xfa, 0x24, 0x40, 0x0d, 0xb5, 0x90, 0x55, 0x43, 0x56, 0x75, 0x3f, 0xad, 0x4e, 0xab, + 0x33, 0xfd, 0x46, 0x60, 0x44, 0x7f, 0x07, 0x8c, 0xb6, 0xf6, 0xae, 0x37, 0xea, 0xd5, 0x4a, 0x80, + 0x0d, 0xa6, 0xd5, 0x99, 0x5e, 0x43, 0xa3, 0x84, 0xa2, 0xcf, 0x7c, 0x1f, 0x8c, 0x3c, 0x8d, 0xcc, + 0x27, 0x83, 0xac, 0x03, 0x84, 0x75, 0x18, 0x0f, 0x07, 0x18, 0x0b, 0x30, 0xd8, 0x44, 0x8e, 0x63, + 0xee, 0xa0, 0x8a, 0xbb, 0xdf, 0x42, 0xe9, 0x24, 0x99, 0xfd, 0x74, 0xc7, 0xec, 0xe5, 0x99, 0x0f, + 0x30, 0xd4, 0xe6, 0x7e, 0x0b, 0xe9, 0x39, 0xe8, 0x47, 0xd6, 0x5e, 0x93, 0x4a, 0xe8, 0xed, 0x62, + 0xbf, 0x92, 0xb5, 0xd7, 0x94, 0xa5, 0xa4, 0x30, 0x8c, 0x89, 0x38, 0xe2, 0xa0, 0xf6, 0x53, 0xf5, + 0x2a, 0x4a, 0xf7, 0x11, 0x01, 0xf7, 0x75, 0x08, 0xd8, 0xa0, 0x74, 0x59, 0x06, 0xc7, 0xe9, 0x05, + 0xe8, 0x47, 0xcf, 0xb8, 0xc8, 0x72, 0xea, 0xb6, 0x95, 0x3e, 0x42, 0x84, 0xdc, 0x1b, 0xe2, 0x45, + 0xd4, 0xa8, 0xc9, 0x22, 0x7c, 0x9c, 0x7e, 0x0e, 0x8e, 0xd8, 0x2d, 0xb7, 0x6e, 0x5b, 0x4e, 0x3a, + 0x35, 0xad, 0xcc, 0x0c, 0x2c, 0x1c, 0x0f, 0x0d, 0x84, 0x35, 0xca, 0x63, 0x70, 0x66, 0x7d, 0x19, + 0x34, 0xc7, 0xde, 0x6b, 0x57, 0x51, 0xa5, 0x6a, 0xd7, 0x50, 0xa5, 0x6e, 0x6d, 0xdb, 0xe9, 0x7e, + 0x22, 0x60, 0xaa, 0x73, 0x22, 0x84, 0xb1, 0x60, 0xd7, 0xd0, 0xb2, 0xb5, 0x6d, 0x1b, 0xc3, 0x8e, + 0xf0, 0x5d, 0x1f, 0x87, 0x3e, 0x67, 0xdf, 0x72, 0xcd, 0x67, 0xd2, 0x83, 0x24, 0x42, 0xd8, 0xb7, + 0xcc, 0x8f, 0x7b, 0x61, 0x24, 0x4e, 0x88, 0x5d, 0x82, 0xde, 0x6d, 0x3c, 0xcb, 0x74, 0xe2, 0x30, + 0x36, 0xa0, 0x18, 0xd1, 0x88, 0x7d, 0x6f, 0xd2, 0x88, 0x39, 0x18, 0xb0, 0x90, 0xe3, 0xa2, 0x1a, + 0x8d, 0x08, 0x35, 0x66, 0x4c, 0x01, 0x05, 0x75, 0x86, 0x54, 0xf2, 0x4d, 0x85, 0xd4, 0xe3, 0x30, + 0xe2, 0xa9, 0x54, 0x69, 0x9b, 0xd6, 0x0e, 0x8f, 0xcd, 0xd3, 0x51, 0x9a, 0xcc, 0x95, 0x38, 0xce, + 0xc0, 0x30, 0x63, 0x18, 0x09, 0xdf, 0xf5, 0x22, 0x80, 0x6d, 0x21, 0x7b, 0xbb, 0x52, 0x43, 0xd5, + 0x46, 0x3a, 0xd5, 0xc5, 0x4a, 0x6b, 0x98, 0xa5, 0xc3, 0x4a, 0x36, 0x1d, 0xad, 0x36, 0xf4, 0x8b, + 0x7e, 0xa8, 0x1d, 0xe9, 0x12, 0x29, 0xab, 0x34, 0xc9, 0x3a, 0xa2, 0x6d, 0x0b, 0x86, 0xdb, 0x08, + 0xc7, 0x3d, 0xaa, 0xb1, 0x99, 0xf5, 0x13, 0x25, 0xe6, 0x22, 0x67, 0x66, 0x30, 0x18, 0x9d, 0xd8, + 0x50, 0x3b, 0xf8, 0x55, 0xbf, 0x07, 0xbc, 0x81, 0x0a, 0x09, 0x2b, 0x20, 0x55, 0x68, 0x90, 0x0f, + 0x96, 0xcd, 0x26, 0x9a, 0xb8, 0x00, 0xc3, 0xa2, 0x79, 0xf4, 0xa3, 0xd0, 0xeb, 0xb8, 0x66, 0xdb, + 0x25, 0x51, 0xd8, 0x6b, 0xd0, 0x2f, 0xba, 0x06, 0x2a, 0xb2, 0x6a, 0xa4, 0xca, 0xf5, 0x1a, 0xf8, + 0xe3, 0xc4, 0x79, 0x18, 0x12, 0x1e, 0x1f, 0x17, 0x98, 0xf9, 0x68, 0x1f, 0x1c, 0x0d, 0x8b, 0xb9, + 0xd0, 0xf0, 0x1f, 0x87, 0x3e, 0x6b, 0xaf, 0x79, 0x1d, 0xb5, 0xd3, 0x2a, 0x91, 0xc0, 0xbe, 0xe9, + 0x39, 0xe8, 0x6d, 0x98, 0xd7, 0x51, 0x23, 0x9d, 0x9c, 0x56, 0x66, 0x86, 0x17, 0xde, 0x11, 0x2b, + 0xaa, 0xe7, 0x56, 0x30, 0xc4, 0xa0, 0x48, 0xfd, 0x61, 0x48, 0xb2, 0x12, 0x87, 0x25, 0xcc, 0xc6, + 0x93, 0x80, 0x63, 0xd1, 0x20, 0x38, 0xfd, 0x2e, 0xe8, 0xc7, 0xff, 0x53, 0xdb, 0xf6, 0x11, 0x9d, + 0x53, 0x78, 0x00, 0xdb, 0x55, 0x9f, 0x80, 0x14, 0x09, 0xb3, 0x1a, 0xe2, 0x4b, 0x83, 0xf7, 0x1d, + 0x3b, 0xa6, 0x86, 0xb6, 0xcd, 0xbd, 0x86, 0x5b, 0x79, 0xca, 0x6c, 0xec, 0x21, 0x12, 0x30, 0xfd, + 0xc6, 0x20, 0x1b, 0x7c, 0x0f, 0x1e, 0xd3, 0xa7, 0x60, 0x80, 0x46, 0x65, 0xdd, 0xaa, 0xa1, 0x67, + 0x48, 0xf5, 0xe9, 0x35, 0x68, 0xa0, 0x2e, 0xe3, 0x11, 0xfc, 0xf8, 0x27, 0x1c, 0xdb, 0xe2, 0xae, + 0x25, 0x8f, 0xc0, 0x03, 0xe4, 0xf1, 0xe7, 0xe5, 0xc2, 0x77, 0x77, 0xf8, 0xf4, 0xe4, 0x58, 0xcc, + 0x7c, 0x35, 0x01, 0x49, 0x92, 0x6f, 0x23, 0x30, 0xb0, 0x79, 0x6d, 0xbd, 0x54, 0x29, 0xae, 0x6d, + 0xe5, 0x57, 0x4a, 0x9a, 0xa2, 0x0f, 0x03, 0x90, 0x81, 0xcb, 0x2b, 0x6b, 0xb9, 0x4d, 0x2d, 0xe1, + 0x7d, 0x5f, 0x2e, 0x6f, 0x9e, 0x5b, 0xd4, 0x54, 0x0f, 0xb0, 0x45, 0x07, 0x92, 0x41, 0x86, 0xb3, + 0x0b, 0x5a, 0xaf, 0xae, 0xc1, 0x20, 0x15, 0xb0, 0xfc, 0x78, 0xa9, 0x78, 0x6e, 0x51, 0xeb, 0x13, + 0x47, 0xce, 0x2e, 0x68, 0x47, 0xf4, 0x21, 0xe8, 0x27, 0x23, 0xf9, 0xb5, 0xb5, 0x15, 0x2d, 0xe5, + 0xc9, 0xdc, 0xd8, 0x34, 0x96, 0xcb, 0x57, 0xb4, 0x7e, 0x4f, 0xe6, 0x15, 0x63, 0x6d, 0x6b, 0x5d, + 0x03, 0x4f, 0xc2, 0x6a, 0x69, 0x63, 0x23, 0x77, 0xa5, 0xa4, 0x0d, 0x78, 0x1c, 0xf9, 0x6b, 0x9b, + 0xa5, 0x0d, 0x6d, 0x50, 0x50, 0xeb, 0xec, 0x82, 0x36, 0xe4, 0x3d, 0xa2, 0x54, 0xde, 0x5a, 0xd5, + 0x86, 0xf5, 0x51, 0x18, 0xa2, 0x8f, 0xe0, 0x4a, 0x8c, 0x48, 0x43, 0xe7, 0x16, 0x35, 0xcd, 0x57, + 0x84, 0x4a, 0x19, 0x15, 0x06, 0xce, 0x2d, 0x6a, 0x7a, 0xa6, 0x00, 0xbd, 0x24, 0xba, 0x74, 0x1d, + 0x86, 0x57, 0x72, 0xf9, 0xd2, 0x4a, 0x65, 0x6d, 0x7d, 0x73, 0x79, 0xad, 0x9c, 0x5b, 0xd1, 0x14, + 0x7f, 0xcc, 0x28, 0xbd, 0x7b, 0x6b, 0xd9, 0x28, 0x15, 0xb5, 0x44, 0x70, 0x6c, 0xbd, 0x94, 0xdb, + 0x2c, 0x15, 0x35, 0x35, 0x53, 0x85, 0xa3, 0x61, 0x75, 0x26, 0x34, 0x33, 0x02, 0x2e, 0x4e, 0x74, + 0x71, 0x31, 0x91, 0xd5, 0xe1, 0xe2, 0xcf, 0x28, 0x30, 0x16, 0x52, 0x6b, 0x43, 0x1f, 0xf2, 0x08, + 0xf4, 0xd2, 0x10, 0xa5, 0xab, 0xcf, 0xfd, 0xa1, 0x45, 0x9b, 0x04, 0x6c, 0xc7, 0x0a, 0x44, 0x70, + 0xc1, 0x15, 0x58, 0xed, 0xb2, 0x02, 0x63, 0x11, 0x1d, 0x4a, 0x7e, 0x40, 0x81, 0x74, 0x37, 0xd9, + 0x11, 0x85, 0x22, 0x21, 0x14, 0x8a, 0x4b, 0xb2, 0x02, 0x27, 0xba, 0xcf, 0xa1, 0x43, 0x8b, 0xcf, + 0x29, 0x30, 0x1e, 0xde, 0xa8, 0x84, 0xea, 0xf0, 0x30, 0xf4, 0x35, 0x91, 0xbb, 0x6b, 0xf3, 0xc5, + 0xfa, 0x54, 0xc8, 0x12, 0x80, 0xc9, 0xb2, 0xad, 0x18, 0x2a, 0xb8, 0x86, 0xa8, 0xdd, 0xba, 0x0d, + 0xaa, 0x4d, 0x87, 0xa6, 0x1f, 0x4e, 0xc0, 0x1d, 0xa1, 0xc2, 0x43, 0x15, 0xbd, 0x1b, 0xa0, 0x6e, + 0xb5, 0xf6, 0x5c, 0xba, 0x20, 0xd3, 0xfa, 0xd4, 0x4f, 0x46, 0x48, 0xee, 0xe3, 0xda, 0xb3, 0xe7, + 0x7a, 0x74, 0x95, 0xd0, 0x81, 0x0e, 0x11, 0x86, 0x0b, 0xbe, 0xa2, 0x49, 0xa2, 0xe8, 0x64, 0x97, + 0x99, 0x76, 0xac, 0x75, 0xf3, 0xa0, 0x55, 0x1b, 0x75, 0x64, 0xb9, 0x15, 0xc7, 0x6d, 0x23, 0xb3, + 0x59, 0xb7, 0x76, 0x48, 0x01, 0x4e, 0x65, 0x7b, 0xb7, 0xcd, 0x86, 0x83, 0x8c, 0x11, 0x4a, 0xde, + 0xe0, 0x54, 0x8c, 0x20, 0xab, 0x4c, 0x3b, 0x80, 0xe8, 0x13, 0x10, 0x94, 0xec, 0x21, 0x32, 0x5f, + 0x3c, 0x02, 0x03, 0x81, 0xb6, 0x4e, 0x3f, 0x01, 0x83, 0x4f, 0x98, 0x4f, 0x99, 0x15, 0xde, 0xaa, + 0x53, 0x4b, 0x0c, 0xe0, 0xb1, 0x75, 0xd6, 0xae, 0xcf, 0xc3, 0x51, 0xc2, 0x62, 0xef, 0xb9, 0xa8, + 0x5d, 0xa9, 0x36, 0x4c, 0xc7, 0x21, 0x46, 0x4b, 0x11, 0x56, 0x1d, 0xd3, 0xd6, 0x30, 0xa9, 0xc0, + 0x29, 0xfa, 0x12, 0x8c, 0x11, 0x44, 0x73, 0xaf, 0xe1, 0xd6, 0x5b, 0x0d, 0x54, 0xc1, 0x2f, 0x0f, + 0x0e, 0x29, 0xc4, 0x9e, 0x66, 0xa3, 0x98, 0x63, 0x95, 0x31, 0x60, 0x8d, 0x1c, 0xbd, 0x08, 0x77, + 0x13, 0xd8, 0x0e, 0xb2, 0x50, 0xdb, 0x74, 0x51, 0x05, 0xbd, 0x6f, 0xcf, 0x6c, 0x38, 0x15, 0xd3, + 0xaa, 0x55, 0x76, 0x4d, 0x67, 0x37, 0x7d, 0x14, 0x0b, 0xc8, 0x27, 0xd2, 0x8a, 0x71, 0x27, 0x66, + 0xbc, 0xc2, 0xf8, 0x4a, 0x84, 0x2d, 0x67, 0xd5, 0x1e, 0x35, 0x9d, 0x5d, 0x3d, 0x0b, 0xe3, 0x44, + 0x8a, 0xe3, 0xb6, 0xeb, 0xd6, 0x4e, 0xa5, 0xba, 0x8b, 0xaa, 0x4f, 0x56, 0xf6, 0xdc, 0xed, 0x0b, + 0xe9, 0xbb, 0x82, 0xcf, 0x27, 0x1a, 0x6e, 0x10, 0x9e, 0x02, 0x66, 0xd9, 0x72, 0xb7, 0x2f, 0xe8, + 0x1b, 0x30, 0x88, 0x9d, 0xd1, 0xac, 0x3f, 0x8b, 0x2a, 0xdb, 0x76, 0x9b, 0xac, 0x2c, 0xc3, 0x21, + 0x99, 0x1d, 0xb0, 0xe0, 0xdc, 0x1a, 0x03, 0xac, 0xda, 0x35, 0x94, 0xed, 0xdd, 0x58, 0x2f, 0x95, + 0x8a, 0xc6, 0x00, 0x97, 0x72, 0xd9, 0x6e, 0xe3, 0x80, 0xda, 0xb1, 0x3d, 0x03, 0x0f, 0xd0, 0x80, + 0xda, 0xb1, 0xb9, 0x79, 0x97, 0x60, 0xac, 0x5a, 0xa5, 0x73, 0xae, 0x57, 0x2b, 0xac, 0xc5, 0x77, + 0xd2, 0x9a, 0x60, 0xac, 0x6a, 0xf5, 0x0a, 0x65, 0x60, 0x31, 0xee, 0xe8, 0x17, 0xe1, 0x0e, 0xdf, + 0x58, 0x41, 0xe0, 0x68, 0xc7, 0x2c, 0x65, 0xe8, 0x12, 0x8c, 0xb5, 0xf6, 0x3b, 0x81, 0xba, 0xf0, + 0xc4, 0xd6, 0xbe, 0x0c, 0xbb, 0x97, 0xbc, 0xb6, 0xb5, 0x51, 0xd5, 0x74, 0x51, 0x2d, 0x7d, 0x2c, + 0xc8, 0x1d, 0x20, 0xe8, 0xa7, 0x41, 0xab, 0x56, 0x2b, 0xc8, 0x32, 0xaf, 0x37, 0x50, 0xc5, 0x6c, + 0x23, 0xcb, 0x74, 0xd2, 0x53, 0x41, 0xe6, 0xe1, 0x6a, 0xb5, 0x44, 0xa8, 0x39, 0x42, 0xd4, 0x67, + 0x61, 0xd4, 0xbe, 0xfe, 0x44, 0x95, 0x46, 0x56, 0xa5, 0xd5, 0x46, 0xdb, 0xf5, 0x67, 0xd2, 0x27, + 0x89, 0x99, 0x46, 0x30, 0x81, 0xc4, 0xd5, 0x3a, 0x19, 0xd6, 0xef, 0x07, 0xad, 0xea, 0xec, 0x9a, + 0xed, 0x16, 0x59, 0xda, 0x9d, 0x96, 0x59, 0x45, 0xe9, 0x7b, 0x29, 0x2b, 0x1d, 0x2f, 0xf3, 0x61, + 0x1c, 0xd9, 0xce, 0xd3, 0xf5, 0x6d, 0x97, 0x4b, 0xbc, 0x8f, 0x46, 0x36, 0x19, 0x63, 0xd2, 0x1e, + 0x87, 0xa3, 0x7b, 0x56, 0xdd, 0x72, 0x51, 0xbb, 0xd5, 0x46, 0xb8, 0x89, 0xa7, 0x99, 0x98, 0xfe, + 0xf7, 0x23, 0x5d, 0xda, 0xf0, 0xad, 0x20, 0x37, 0x0d, 0x00, 0x63, 0x6c, 0xaf, 0x73, 0x30, 0x93, + 0x85, 0xc1, 0x60, 0x5c, 0xe8, 0xfd, 0x40, 0x23, 0x43, 0x53, 0xf0, 0x1a, 0x5b, 0x58, 0x2b, 0xe2, + 0xd5, 0xf1, 0xbd, 0x25, 0x2d, 0x81, 0x57, 0xe9, 0x95, 0xe5, 0xcd, 0x52, 0xc5, 0xd8, 0x2a, 0x6f, + 0x2e, 0xaf, 0x96, 0x34, 0x75, 0xb6, 0x3f, 0xf5, 0xfd, 0x23, 0xda, 0x73, 0xcf, 0x3d, 0xf7, 0x5c, + 0x22, 0xf3, 0xcd, 0x04, 0x0c, 0x8b, 0x9d, 0xb1, 0xfe, 0x4e, 0x38, 0xc6, 0x5f, 0x63, 0x1d, 0xe4, + 0x56, 0x9e, 0xae, 0xb7, 0x49, 0xa8, 0x36, 0x4d, 0xda, 0x5b, 0x7a, 0x56, 0x3e, 0xca, 0xb8, 0x36, + 0x90, 0xfb, 0x58, 0xbd, 0x8d, 0x03, 0xb1, 0x69, 0xba, 0xfa, 0x0a, 0x4c, 0x59, 0x76, 0xc5, 0x71, + 0x4d, 0xab, 0x66, 0xb6, 0x6b, 0x15, 0x7f, 0x03, 0xa1, 0x62, 0x56, 0xab, 0xc8, 0x71, 0x6c, 0xba, + 0x44, 0x78, 0x52, 0x8e, 0x5b, 0xf6, 0x06, 0x63, 0xf6, 0x6b, 0x67, 0x8e, 0xb1, 0x4a, 0x11, 0xa1, + 0x76, 0x8b, 0x88, 0xbb, 0xa0, 0xbf, 0x69, 0xb6, 0x2a, 0xc8, 0x72, 0xdb, 0xfb, 0xa4, 0x9f, 0x4b, + 0x19, 0xa9, 0xa6, 0xd9, 0x2a, 0xe1, 0xef, 0x6f, 0x9f, 0x0f, 0x82, 0x76, 0xfc, 0x37, 0x15, 0x06, + 0x83, 0x3d, 0x1d, 0x6e, 0x91, 0xab, 0xa4, 0x7e, 0x2b, 0x24, 0xc3, 0xef, 0x39, 0xb0, 0x03, 0x9c, + 0x2b, 0xe0, 0xc2, 0x9e, 0xed, 0xa3, 0x9d, 0x96, 0x41, 0x91, 0x78, 0x51, 0xc5, 0x39, 0x8d, 0x68, + 0xff, 0x9e, 0x32, 0xd8, 0x37, 0xfd, 0x0a, 0xf4, 0x3d, 0xe1, 0x10, 0xd9, 0x7d, 0x44, 0xf6, 0xc9, + 0x83, 0x65, 0x5f, 0xdd, 0x20, 0xc2, 0xfb, 0xaf, 0x6e, 0x54, 0xca, 0x6b, 0xc6, 0x6a, 0x6e, 0xc5, + 0x60, 0x70, 0xfd, 0x4e, 0x48, 0x36, 0xcc, 0x67, 0xf7, 0xc5, 0x25, 0x80, 0x0c, 0xc5, 0x35, 0xfc, + 0x9d, 0x90, 0x7c, 0x1a, 0x99, 0x4f, 0x8a, 0x85, 0x97, 0x0c, 0xbd, 0x8d, 0xa1, 0x7f, 0x1a, 0x7a, + 0x89, 0xbd, 0x74, 0x00, 0x66, 0x31, 0xad, 0x47, 0x4f, 0x41, 0xb2, 0xb0, 0x66, 0xe0, 0xf0, 0xd7, + 0x60, 0x90, 0x8e, 0x56, 0xd6, 0x97, 0x4b, 0x85, 0x92, 0x96, 0xc8, 0x2c, 0x41, 0x1f, 0x35, 0x02, + 0x4e, 0x0d, 0xcf, 0x0c, 0x5a, 0x0f, 0xfb, 0xca, 0x64, 0x28, 0x9c, 0xba, 0xb5, 0x9a, 0x2f, 0x19, + 0x5a, 0x22, 0xe8, 0x5e, 0x07, 0x06, 0x83, 0xed, 0xdc, 0xcf, 0x26, 0xa6, 0xbe, 0xae, 0xc0, 0x40, + 0xa0, 0x3d, 0xc3, 0x8d, 0x81, 0xd9, 0x68, 0xd8, 0x4f, 0x57, 0xcc, 0x46, 0xdd, 0x74, 0x58, 0x50, + 0x00, 0x19, 0xca, 0xe1, 0x91, 0xb8, 0x4e, 0xfb, 0x99, 0x28, 0xff, 0xbc, 0x02, 0x9a, 0xdc, 0xda, + 0x49, 0x0a, 0x2a, 0x3f, 0x57, 0x05, 0x3f, 0xa1, 0xc0, 0xb0, 0xd8, 0xcf, 0x49, 0xea, 0x9d, 0xf8, + 0xb9, 0xaa, 0xf7, 0xdd, 0x04, 0x0c, 0x09, 0x5d, 0x5c, 0x5c, 0xed, 0xde, 0x07, 0xa3, 0xf5, 0x1a, + 0x6a, 0xb6, 0x6c, 0x17, 0x59, 0xd5, 0xfd, 0x4a, 0x03, 0x3d, 0x85, 0x1a, 0xe9, 0x0c, 0x29, 0x14, + 0xa7, 0x0f, 0xee, 0x13, 0xe7, 0x96, 0x7d, 0xdc, 0x0a, 0x86, 0x65, 0xc7, 0x96, 0x8b, 0xa5, 0xd5, + 0xf5, 0xb5, 0xcd, 0x52, 0xb9, 0x70, 0xad, 0xb2, 0x55, 0x7e, 0x57, 0x79, 0xed, 0xb1, 0xb2, 0xa1, + 0xd5, 0x25, 0xb6, 0xb7, 0x31, 0xd5, 0xd7, 0x41, 0x93, 0x95, 0xd2, 0x8f, 0x41, 0x98, 0x5a, 0x5a, + 0x8f, 0x3e, 0x06, 0x23, 0xe5, 0xb5, 0xca, 0xc6, 0x72, 0xb1, 0x54, 0x29, 0x5d, 0xbe, 0x5c, 0x2a, + 0x6c, 0x6e, 0xd0, 0x17, 0x67, 0x8f, 0x7b, 0x53, 0x4c, 0xea, 0x8f, 0xab, 0x30, 0x16, 0xa2, 0x89, + 0x9e, 0x63, 0x3d, 0x3b, 0x7d, 0x8d, 0x78, 0x30, 0x8e, 0xf6, 0x73, 0xb8, 0x2b, 0x58, 0x37, 0xdb, + 0x2e, 0x6b, 0xf1, 0xef, 0x07, 0x6c, 0x25, 0xcb, 0xad, 0x6f, 0xd7, 0x51, 0x9b, 0xed, 0x33, 0xd0, + 0x46, 0x7e, 0xc4, 0x1f, 0xa7, 0x5b, 0x0d, 0x0f, 0x80, 0xde, 0xb2, 0x9d, 0xba, 0x5b, 0x7f, 0x0a, + 0x55, 0xea, 0x16, 0xdf, 0x94, 0xc0, 0x8d, 0x7d, 0xd2, 0xd0, 0x38, 0x65, 0xd9, 0x72, 0x3d, 0x6e, + 0x0b, 0xed, 0x98, 0x12, 0x37, 0x2e, 0xe0, 0xaa, 0xa1, 0x71, 0x8a, 0xc7, 0x7d, 0x02, 0x06, 0x6b, + 0xf6, 0x1e, 0x6e, 0x93, 0x28, 0x1f, 0x5e, 0x2f, 0x14, 0x63, 0x80, 0x8e, 0x79, 0x2c, 0xac, 0x8f, + 0xf5, 0x77, 0x43, 0x06, 0x8d, 0x01, 0x3a, 0x46, 0x59, 0xee, 0x83, 0x11, 0x73, 0x67, 0xa7, 0x8d, + 0x85, 0x73, 0x41, 0xb4, 0x33, 0x1f, 0xf6, 0x86, 0x09, 0xe3, 0xc4, 0x55, 0x48, 0x71, 0x3b, 0xe0, + 0x25, 0x19, 0x5b, 0xa2, 0xd2, 0xa2, 0x7b, 0x52, 0x89, 0x99, 0x7e, 0x23, 0x65, 0x71, 0xe2, 0x09, + 0x18, 0xac, 0x3b, 0x15, 0x7f, 0x73, 0x34, 0x31, 0x9d, 0x98, 0x49, 0x19, 0x03, 0x75, 0xc7, 0xdb, + 0x0d, 0xcb, 0x7c, 0x2e, 0x01, 0xc3, 0xe2, 0xe6, 0xae, 0x5e, 0x84, 0x54, 0xc3, 0xae, 0x9a, 0x24, + 0xb4, 0xe8, 0xc9, 0xc2, 0x4c, 0xc4, 0x7e, 0xf0, 0xdc, 0x0a, 0xe3, 0x37, 0x3c, 0xe4, 0xc4, 0x3f, + 0x2b, 0x90, 0xe2, 0xc3, 0xfa, 0x38, 0x24, 0x5b, 0xa6, 0xbb, 0x4b, 0xc4, 0xf5, 0xe6, 0x13, 0x9a, + 0x62, 0x90, 0xef, 0x78, 0xdc, 0x69, 0x99, 0x16, 0x09, 0x01, 0x36, 0x8e, 0xbf, 0x63, 0xbf, 0x36, + 0x90, 0x59, 0x23, 0x6d, 0xbf, 0xdd, 0x6c, 0x22, 0xcb, 0x75, 0xb8, 0x5f, 0xd9, 0x78, 0x81, 0x0d, + 0xeb, 0xef, 0x80, 0x51, 0xb7, 0x6d, 0xd6, 0x1b, 0x02, 0x6f, 0x92, 0xf0, 0x6a, 0x9c, 0xe0, 0x31, + 0x67, 0xe1, 0x4e, 0x2e, 0xb7, 0x86, 0x5c, 0xb3, 0xba, 0x8b, 0x6a, 0x3e, 0xa8, 0x8f, 0xec, 0x1c, + 0x1e, 0x63, 0x0c, 0x45, 0x46, 0xe7, 0xd8, 0xcc, 0xb7, 0x15, 0x18, 0xe5, 0x2f, 0x2a, 0x35, 0xcf, + 0x58, 0xab, 0x00, 0xa6, 0x65, 0xd9, 0x6e, 0xd0, 0x5c, 0x9d, 0xa1, 0xdc, 0x81, 0x9b, 0xcb, 0x79, + 0x20, 0x23, 0x20, 0x60, 0xa2, 0x09, 0xe0, 0x53, 0xba, 0x9a, 0x6d, 0x0a, 0x06, 0xd8, 0xce, 0x3d, + 0x39, 0xfe, 0xa1, 0xaf, 0xb6, 0x40, 0x87, 0xf0, 0x1b, 0x8d, 0x7e, 0x14, 0x7a, 0xaf, 0xa3, 0x9d, + 0xba, 0xc5, 0xf6, 0x13, 0xe9, 0x17, 0xbe, 0x4b, 0x99, 0xf4, 0x76, 0x29, 0xf3, 0x8f, 0xc3, 0x58, + 0xd5, 0x6e, 0xca, 0xea, 0xe6, 0x35, 0xe9, 0xf5, 0xda, 0x79, 0x54, 0x79, 0x2f, 0xf8, 0x2d, 0xe6, + 0x67, 0x12, 0xea, 0x95, 0xf5, 0xfc, 0x17, 0x12, 0x13, 0x57, 0x28, 0x6e, 0x9d, 0x4f, 0xd3, 0x40, + 0xdb, 0x0d, 0x54, 0xc5, 0xaa, 0xc3, 0x8f, 0x4e, 0xc1, 0x83, 0x3b, 0x75, 0x77, 0x77, 0xef, 0xfa, + 0x5c, 0xd5, 0x6e, 0x9e, 0xde, 0xb1, 0x77, 0x6c, 0xff, 0xb8, 0x0b, 0x7f, 0x23, 0x5f, 0xc8, 0x27, + 0x76, 0xe4, 0xd5, 0xef, 0x8d, 0x4e, 0x44, 0x9e, 0x8f, 0x65, 0xcb, 0x30, 0xc6, 0x98, 0x2b, 0x64, + 0xcf, 0x9d, 0xbe, 0x1a, 0xe8, 0x07, 0xee, 0xbb, 0xa4, 0xbf, 0xfc, 0x3d, 0xb2, 0x56, 0x1b, 0xa3, + 0x0c, 0x8a, 0x69, 0xf4, 0x05, 0x22, 0x6b, 0xc0, 0x1d, 0x82, 0x3c, 0x9a, 0x97, 0xa8, 0x1d, 0x21, + 0xf1, 0x9b, 0x4c, 0xe2, 0x58, 0x40, 0xe2, 0x06, 0x83, 0x66, 0x0b, 0x30, 0x74, 0x18, 0x59, 0xdf, + 0x62, 0xb2, 0x06, 0x51, 0x50, 0xc8, 0x15, 0x18, 0x21, 0x42, 0xaa, 0x7b, 0x8e, 0x6b, 0x37, 0x49, + 0xd1, 0x3b, 0x58, 0xcc, 0x3f, 0x7e, 0x8f, 0x26, 0xca, 0x30, 0x86, 0x15, 0x3c, 0x54, 0x36, 0x0b, + 0xe4, 0x98, 0xa1, 0x86, 0xaa, 0x8d, 0x08, 0x09, 0x37, 0x98, 0x22, 0x1e, 0x7f, 0xf6, 0x3d, 0x70, + 0x14, 0x7f, 0x26, 0x35, 0x29, 0xa8, 0x49, 0xf4, 0x2e, 0x53, 0xfa, 0xdb, 0x1f, 0xa0, 0xb9, 0x38, + 0xe6, 0x09, 0x08, 0xe8, 0x14, 0xf0, 0xe2, 0x0e, 0x72, 0x5d, 0xd4, 0x76, 0x2a, 0x66, 0x23, 0x4c, + 0xbd, 0xc0, 0x6b, 0x7a, 0xfa, 0x63, 0xaf, 0x89, 0x5e, 0xbc, 0x42, 0x91, 0xb9, 0x46, 0x23, 0xbb, + 0x05, 0xc7, 0x42, 0xa2, 0x22, 0x86, 0xcc, 0x8f, 0x33, 0x99, 0x47, 0x3b, 0x22, 0x03, 0x8b, 0x5d, + 0x07, 0x3e, 0xee, 0xf9, 0x32, 0x86, 0xcc, 0x3f, 0x61, 0x32, 0x75, 0x86, 0xe5, 0x2e, 0xc5, 0x12, + 0xaf, 0xc2, 0xe8, 0x53, 0xa8, 0x7d, 0xdd, 0x76, 0xd8, 0xd6, 0x48, 0x0c, 0x71, 0x9f, 0x60, 0xe2, + 0x46, 0x18, 0x90, 0xec, 0x95, 0x60, 0x59, 0x17, 0x21, 0xb5, 0x6d, 0x56, 0x51, 0x0c, 0x11, 0x9f, + 0x64, 0x22, 0x8e, 0x60, 0x7e, 0x0c, 0xcd, 0xc1, 0xe0, 0x8e, 0xcd, 0x96, 0xa5, 0x68, 0xf8, 0xf3, + 0x0c, 0x3e, 0xc0, 0x31, 0x4c, 0x44, 0xcb, 0x6e, 0xed, 0x35, 0xf0, 0x9a, 0x15, 0x2d, 0xe2, 0x53, + 0x5c, 0x04, 0xc7, 0x30, 0x11, 0x87, 0x30, 0xeb, 0x0b, 0x5c, 0x84, 0x13, 0xb0, 0xe7, 0x23, 0x30, + 0x60, 0x5b, 0x8d, 0x7d, 0xdb, 0x8a, 0xa3, 0xc4, 0xa7, 0x99, 0x04, 0x60, 0x10, 0x2c, 0xe0, 0x12, + 0xf4, 0xc7, 0x75, 0xc4, 0x67, 0x5f, 0xe3, 0xe9, 0xc1, 0x3d, 0x70, 0x05, 0x46, 0x78, 0x81, 0xaa, + 0xdb, 0x56, 0x0c, 0x11, 0x7f, 0xc6, 0x44, 0x0c, 0x07, 0x60, 0x6c, 0x1a, 0x2e, 0x72, 0xdc, 0x1d, + 0x14, 0x47, 0xc8, 0xe7, 0xf8, 0x34, 0x18, 0x84, 0x99, 0xf2, 0x3a, 0xb2, 0xaa, 0xbb, 0xf1, 0x24, + 0xbc, 0xc8, 0x4d, 0xc9, 0x31, 0x58, 0x44, 0x01, 0x86, 0x9a, 0x66, 0xdb, 0xd9, 0x35, 0x1b, 0xb1, + 0xdc, 0xf1, 0x79, 0x26, 0x63, 0xd0, 0x03, 0x31, 0x8b, 0xec, 0x59, 0x87, 0x11, 0xf3, 0x05, 0x6e, + 0x91, 0x00, 0x8c, 0xa5, 0x9e, 0xe3, 0x92, 0x0d, 0xa8, 0xc3, 0x48, 0xfb, 0x22, 0x4f, 0x3d, 0x8a, + 0x5d, 0x0d, 0x4a, 0xbc, 0x04, 0xfd, 0x4e, 0xfd, 0xd9, 0x58, 0x62, 0xfe, 0x9c, 0x7b, 0x9a, 0x00, + 0x30, 0xf8, 0x1a, 0xdc, 0x19, 0xba, 0x4c, 0xc4, 0x10, 0xf6, 0x17, 0x4c, 0xd8, 0x78, 0xc8, 0x52, + 0xc1, 0x4a, 0xc2, 0x61, 0x45, 0xfe, 0x25, 0x2f, 0x09, 0x48, 0x92, 0xb5, 0x8e, 0x5f, 0x14, 0x1c, + 0x73, 0xfb, 0x70, 0x56, 0xfb, 0x2b, 0x6e, 0x35, 0x8a, 0x15, 0xac, 0xb6, 0x09, 0xe3, 0x4c, 0xe2, + 0xe1, 0xfc, 0xfa, 0x25, 0x5e, 0x58, 0x29, 0x7a, 0x4b, 0xf4, 0xee, 0x2f, 0xc1, 0x84, 0x67, 0x4e, + 0xde, 0x91, 0x3a, 0x95, 0xa6, 0xd9, 0x8a, 0x21, 0xf9, 0xcb, 0x4c, 0x32, 0xaf, 0xf8, 0x5e, 0x4b, + 0xeb, 0xac, 0x9a, 0x2d, 0x2c, 0xfc, 0x71, 0x48, 0x73, 0xe1, 0x7b, 0x56, 0x1b, 0x55, 0xed, 0x1d, + 0xab, 0xfe, 0x2c, 0xaa, 0xc5, 0x10, 0xfd, 0xd7, 0x92, 0xab, 0xb6, 0x02, 0x70, 0x2c, 0x79, 0x19, + 0x34, 0xaf, 0x57, 0xa9, 0xd4, 0x9b, 0x2d, 0xbb, 0xed, 0x46, 0x48, 0xfc, 0x1b, 0xee, 0x29, 0x0f, + 0xb7, 0x4c, 0x60, 0xd9, 0x12, 0x0c, 0x93, 0xaf, 0x71, 0x43, 0xf2, 0x2b, 0x4c, 0xd0, 0x90, 0x8f, + 0x62, 0x85, 0xa3, 0x6a, 0x37, 0x5b, 0x66, 0x3b, 0x4e, 0xfd, 0xfb, 0x5b, 0x5e, 0x38, 0x18, 0x84, + 0x15, 0x0e, 0x77, 0xbf, 0x85, 0xf0, 0x6a, 0x1f, 0x43, 0xc2, 0x57, 0x79, 0xe1, 0xe0, 0x18, 0x26, + 0x82, 0x37, 0x0c, 0x31, 0x44, 0xfc, 0x1d, 0x17, 0xc1, 0x31, 0x58, 0xc4, 0xbb, 0xfd, 0x85, 0xb6, + 0x8d, 0x76, 0xea, 0x8e, 0xdb, 0xa6, 0x7d, 0xf0, 0xc1, 0xa2, 0xbe, 0xf6, 0x9a, 0xd8, 0x84, 0x19, + 0x01, 0x68, 0xf6, 0x2a, 0x8c, 0x48, 0x2d, 0x86, 0x1e, 0x75, 0x67, 0x21, 0xfd, 0xab, 0xaf, 0xb3, + 0x62, 0x24, 0x76, 0x18, 0xd9, 0x15, 0xec, 0x77, 0xb1, 0x0f, 0x88, 0x16, 0xf6, 0x81, 0xd7, 0x3d, + 0xd7, 0x0b, 0x6d, 0x40, 0xf6, 0x32, 0x0c, 0x09, 0x3d, 0x40, 0xb4, 0xa8, 0x5f, 0x63, 0xa2, 0x06, + 0x83, 0x2d, 0x40, 0x76, 0x09, 0x92, 0x78, 0x3d, 0x8f, 0x86, 0xff, 0x3a, 0x83, 0x13, 0xf6, 0xec, + 0x43, 0x90, 0xe2, 0xeb, 0x78, 0x34, 0xf4, 0x83, 0x0c, 0xea, 0x41, 0x30, 0x9c, 0xaf, 0xe1, 0xd1, + 0xf0, 0xdf, 0xe0, 0x70, 0x0e, 0xc1, 0xf0, 0xf8, 0x26, 0x7c, 0xe9, 0xb7, 0x92, 0xac, 0x0e, 0x73, + 0xdb, 0x5d, 0x82, 0x23, 0x6c, 0xf1, 0x8e, 0x46, 0x7f, 0x98, 0x3d, 0x9c, 0x23, 0xb2, 0xe7, 0xa1, + 0x37, 0xa6, 0xc1, 0x7f, 0x9b, 0x41, 0x29, 0x7f, 0xb6, 0x00, 0x03, 0x81, 0x05, 0x3b, 0x1a, 0xfe, + 0x3b, 0x0c, 0x1e, 0x44, 0x61, 0xd5, 0xd9, 0x82, 0x1d, 0x2d, 0xe0, 0x77, 0xb9, 0xea, 0x0c, 0x81, + 0xcd, 0xc6, 0xd7, 0xea, 0x68, 0xf4, 0xef, 0x71, 0xab, 0x73, 0x48, 0xf6, 0x11, 0xe8, 0xf7, 0xea, + 0x6f, 0x34, 0xfe, 0xf7, 0x19, 0xde, 0xc7, 0x60, 0x0b, 0x04, 0xea, 0x7f, 0xb4, 0x88, 0x3f, 0xe0, + 0x16, 0x08, 0xa0, 0x70, 0x1a, 0xc9, 0x6b, 0x7a, 0xb4, 0xa4, 0x8f, 0xf0, 0x34, 0x92, 0x96, 0x74, + 0xec, 0x4d, 0x52, 0x06, 0xa3, 0x45, 0xfc, 0x21, 0xf7, 0x26, 0xe1, 0xc7, 0x6a, 0xc8, 0x8b, 0x64, + 0xb4, 0x8c, 0x3f, 0xe6, 0x6a, 0x48, 0x6b, 0x64, 0x76, 0x1d, 0xf4, 0xce, 0x05, 0x32, 0x5a, 0xde, + 0x47, 0x99, 0xbc, 0xd1, 0x8e, 0xf5, 0x31, 0xfb, 0x18, 0x8c, 0x87, 0x2f, 0x8e, 0xd1, 0x52, 0x3f, + 0xf6, 0xba, 0xf4, 0x3a, 0x13, 0x5c, 0x1b, 0xb3, 0x9b, 0x7e, 0x95, 0x0d, 0x2e, 0x8c, 0xd1, 0x62, + 0x3f, 0xfe, 0xba, 0x58, 0x68, 0x83, 0xeb, 0x62, 0x36, 0x07, 0xe0, 0xaf, 0x49, 0xd1, 0xb2, 0x3e, + 0xc1, 0x64, 0x05, 0x40, 0x38, 0x35, 0xd8, 0x92, 0x14, 0x8d, 0xff, 0x24, 0x4f, 0x0d, 0x86, 0xc0, + 0xa9, 0xc1, 0x57, 0xa3, 0x68, 0xf4, 0xf3, 0x3c, 0x35, 0x38, 0x24, 0x7b, 0x09, 0x52, 0xd6, 0x5e, + 0xa3, 0x81, 0x63, 0x4b, 0x3f, 0xf8, 0x1a, 0x51, 0xfa, 0x3f, 0xde, 0x60, 0x60, 0x0e, 0xc8, 0x2e, + 0x41, 0x2f, 0x6a, 0x5e, 0x47, 0xb5, 0x28, 0xe4, 0x7f, 0xbe, 0xc1, 0xeb, 0x09, 0xe6, 0xce, 0x3e, + 0x02, 0x40, 0x5f, 0xa6, 0xc9, 0x29, 0x51, 0x04, 0xf6, 0xbf, 0xde, 0x60, 0x37, 0x14, 0x7c, 0x88, + 0x2f, 0x80, 0xde, 0x77, 0x38, 0x58, 0xc0, 0x6b, 0xa2, 0x00, 0xf2, 0x02, 0x7e, 0x11, 0x8e, 0x3c, + 0xe1, 0xd8, 0x96, 0x6b, 0xee, 0x44, 0xa1, 0xff, 0x9b, 0xa1, 0x39, 0x3f, 0x36, 0x58, 0xd3, 0x6e, + 0x23, 0xd7, 0xdc, 0x71, 0xa2, 0xb0, 0xff, 0xc3, 0xb0, 0x1e, 0x00, 0x83, 0xab, 0xa6, 0xe3, 0xc6, + 0x99, 0xf7, 0xff, 0x72, 0x30, 0x07, 0x60, 0xa5, 0xf1, 0xe7, 0x27, 0xd1, 0x7e, 0x14, 0xf6, 0x07, + 0x5c, 0x69, 0xc6, 0x9f, 0x7d, 0x08, 0xfa, 0xf1, 0x47, 0x7a, 0x6b, 0x27, 0x02, 0xfc, 0x43, 0x06, + 0xf6, 0x11, 0xf8, 0xc9, 0x8e, 0x5b, 0x73, 0xeb, 0xd1, 0xc6, 0xfe, 0x3f, 0xe6, 0x69, 0xce, 0x9f, + 0xcd, 0xc1, 0x80, 0xe3, 0xd6, 0x6a, 0x7b, 0xac, 0xa3, 0x89, 0x80, 0xff, 0xe8, 0x0d, 0xef, 0x25, + 0xd7, 0xc3, 0xe4, 0x4f, 0x84, 0x6f, 0xd6, 0xc1, 0x15, 0xfb, 0x8a, 0x4d, 0xb7, 0xe9, 0xe0, 0x5b, + 0x0d, 0xb8, 0xb3, 0x6a, 0x37, 0xaf, 0xdb, 0xce, 0xe9, 0xeb, 0xb6, 0xbb, 0x7b, 0xda, 0xdd, 0x45, + 0x78, 0xe9, 0x60, 0x3b, 0x6c, 0x49, 0xfc, 0x79, 0xe2, 0x70, 0xdb, 0x72, 0xe4, 0xc4, 0xb5, 0x5c, + 0xc7, 0x9a, 0x95, 0xc9, 0xa6, 0xb7, 0x7e, 0x1c, 0xfa, 0x88, 0xae, 0x67, 0xc8, 0xc1, 0x92, 0x92, + 0x4f, 0xde, 0x78, 0x65, 0xaa, 0xc7, 0x60, 0x63, 0x1e, 0x75, 0x81, 0xec, 0x4a, 0x26, 0x04, 0xea, + 0x82, 0x47, 0x3d, 0x4b, 0x37, 0x26, 0x05, 0xea, 0x59, 0x8f, 0xba, 0x48, 0xb6, 0x28, 0x55, 0x81, + 0xba, 0xe8, 0x51, 0x97, 0xc8, 0x36, 0xfc, 0x90, 0x40, 0x5d, 0xf2, 0xa8, 0xe7, 0xc8, 0xe6, 0x7b, + 0x52, 0xa0, 0x9e, 0xf3, 0xa8, 0xe7, 0xc9, 0xbe, 0xfb, 0xa8, 0x40, 0x3d, 0xef, 0x51, 0x2f, 0x90, + 0xfd, 0x76, 0x5d, 0xa0, 0x5e, 0xf0, 0xa8, 0x17, 0xc9, 0x25, 0x92, 0x23, 0x02, 0xf5, 0xa2, 0x3e, + 0x09, 0x47, 0xe8, 0xcc, 0xe7, 0xc9, 0xe1, 0xec, 0x08, 0x23, 0xf3, 0x41, 0x9f, 0x7e, 0x86, 0x5c, + 0x18, 0xe9, 0x13, 0xe9, 0x67, 0x7c, 0xfa, 0x02, 0xb9, 0x3a, 0xad, 0x89, 0xf4, 0x05, 0x9f, 0x7e, + 0x36, 0x3d, 0x44, 0x2e, 0xcd, 0x08, 0xf4, 0xb3, 0x3e, 0x7d, 0x31, 0x3d, 0x8c, 0xc3, 0x55, 0xa4, + 0x2f, 0xfa, 0xf4, 0xa5, 0xf4, 0xc8, 0xb4, 0x32, 0x33, 0x28, 0xd2, 0x97, 0x32, 0xef, 0x27, 0xee, + 0xb5, 0x7c, 0xf7, 0x8e, 0x8b, 0xee, 0xf5, 0x1c, 0x3b, 0x2e, 0x3a, 0xd6, 0x73, 0xe9, 0xb8, 0xe8, + 0x52, 0xcf, 0x99, 0xe3, 0xa2, 0x33, 0x3d, 0x37, 0x8e, 0x8b, 0x6e, 0xf4, 0x1c, 0x38, 0x2e, 0x3a, + 0xd0, 0x73, 0xdd, 0xb8, 0xe8, 0x3a, 0xcf, 0x69, 0xe3, 0xa2, 0xd3, 0x3c, 0x77, 0x8d, 0x8b, 0xee, + 0xf2, 0x1c, 0x95, 0x96, 0x1c, 0xe5, 0xbb, 0x28, 0x2d, 0xb9, 0xc8, 0x77, 0x4e, 0x5a, 0x72, 0x8e, + 0xef, 0x96, 0xb4, 0xe4, 0x16, 0xdf, 0x21, 0x69, 0xc9, 0x21, 0xbe, 0x2b, 0xd2, 0x92, 0x2b, 0x7c, + 0x27, 0xb0, 0x1c, 0x33, 0x50, 0x2b, 0x24, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, + 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, + 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x83, 0x73, 0x4c, 0x8d, 0xc8, 0x31, 0x35, 0x22, 0xc7, 0xd4, 0x88, + 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, 0xb5, 0x6b, 0x8e, 0xf9, 0xee, 0x1d, 0x17, 0xdd, + 0x1b, 0x9a, 0x63, 0x6a, 0x97, 0x1c, 0x53, 0xbb, 0xe4, 0x98, 0xda, 0x25, 0xc7, 0xd4, 0x2e, 0x39, + 0xa6, 0x76, 0xc9, 0x31, 0xb5, 0x4b, 0x8e, 0xa9, 0x5d, 0x72, 0x4c, 0xed, 0x96, 0x63, 0x6a, 0xd7, + 0x1c, 0x53, 0xbb, 0xe6, 0x98, 0xda, 0x35, 0xc7, 0xd4, 0xae, 0x39, 0xa6, 0x76, 0xcd, 0x31, 0x35, + 0x98, 0x63, 0x7f, 0xaf, 0x82, 0x4e, 0x73, 0x6c, 0x9d, 0x5c, 0xef, 0x61, 0xae, 0x98, 0x94, 0x32, + 0xad, 0x0f, 0xbb, 0x4e, 0xf3, 0x5d, 0x32, 0x29, 0xe5, 0x9a, 0x48, 0x5f, 0xf0, 0xe8, 0x3c, 0xdb, + 0x44, 0xfa, 0x59, 0x8f, 0xce, 0xf3, 0x4d, 0xa4, 0x2f, 0x7a, 0x74, 0x9e, 0x71, 0x22, 0x7d, 0xc9, + 0xa3, 0xf3, 0x9c, 0x13, 0xe9, 0xe7, 0x3c, 0x3a, 0xcf, 0x3a, 0x91, 0x7e, 0xde, 0xa3, 0xf3, 0xbc, + 0x13, 0xe9, 0x17, 0x3c, 0x3a, 0xcf, 0x3c, 0x91, 0x7e, 0x51, 0x9f, 0x96, 0x73, 0x8f, 0x33, 0x78, + 0xae, 0x9d, 0x96, 0xb3, 0x4f, 0xe2, 0x38, 0xe3, 0x73, 0xf0, 0xfc, 0x93, 0x38, 0x16, 0x7c, 0x0e, + 0x9e, 0x81, 0x12, 0xc7, 0xd9, 0xcc, 0x87, 0x88, 0xfb, 0x2c, 0xd9, 0x7d, 0x13, 0x92, 0xfb, 0x12, + 0x01, 0xd7, 0x4d, 0x48, 0xae, 0x4b, 0x04, 0xdc, 0x36, 0x21, 0xb9, 0x2d, 0x11, 0x70, 0xd9, 0x84, + 0xe4, 0xb2, 0x44, 0xc0, 0x5d, 0x13, 0x92, 0xbb, 0x12, 0x01, 0x57, 0x4d, 0x48, 0xae, 0x4a, 0x04, + 0xdc, 0x34, 0x21, 0xb9, 0x29, 0x11, 0x70, 0xd1, 0x84, 0xe4, 0xa2, 0x44, 0xc0, 0x3d, 0x13, 0x92, + 0x7b, 0x12, 0x01, 0xd7, 0x1c, 0x97, 0x5d, 0x93, 0x08, 0xba, 0xe5, 0xb8, 0xec, 0x96, 0x44, 0xd0, + 0x25, 0xc7, 0x65, 0x97, 0x24, 0x82, 0xee, 0x38, 0x2e, 0xbb, 0x23, 0x11, 0x74, 0xc5, 0x4f, 0x13, + 0xbc, 0x23, 0xdc, 0x70, 0xdb, 0x7b, 0x55, 0xf7, 0xb6, 0x3a, 0xc2, 0x79, 0xa1, 0x7d, 0x18, 0x58, + 0xd0, 0xe7, 0x48, 0xc3, 0x1a, 0xec, 0x38, 0xa5, 0x15, 0x6c, 0x5e, 0x68, 0x2c, 0x02, 0x08, 0x2b, + 0x1c, 0xb1, 0x78, 0x5b, 0xbd, 0xe1, 0xbc, 0xd0, 0x66, 0x44, 0xeb, 0x77, 0xe1, 0x6d, 0xef, 0xd8, + 0x5e, 0x4a, 0xf0, 0x8e, 0x8d, 0x99, 0xff, 0xb0, 0x1d, 0xdb, 0x6c, 0xb4, 0xc9, 0x3d, 0x63, 0xcf, + 0x46, 0x1b, 0xbb, 0x63, 0xd5, 0x89, 0xdb, 0xc1, 0xcd, 0x46, 0x9b, 0xd6, 0x33, 0xea, 0x5b, 0xdb, + 0x6f, 0xb1, 0x08, 0x36, 0x50, 0x2b, 0x24, 0x82, 0x0f, 0xdb, 0x6f, 0xcd, 0x0b, 0xa5, 0xe4, 0xb0, + 0x11, 0xac, 0x1e, 0x3a, 0x82, 0x0f, 0xdb, 0x79, 0xcd, 0x0b, 0xe5, 0xe5, 0xd0, 0x11, 0xfc, 0x36, + 0xf4, 0x43, 0x2c, 0x82, 0x7d, 0xf3, 0x1f, 0xb6, 0x1f, 0x9a, 0x8d, 0x36, 0x79, 0x68, 0x04, 0xab, + 0x87, 0x88, 0xe0, 0x38, 0xfd, 0xd1, 0x6c, 0xb4, 0x69, 0xc3, 0x23, 0xf8, 0xb6, 0xbb, 0x99, 0x4f, + 0x29, 0x30, 0x5a, 0xae, 0xd7, 0x4a, 0xcd, 0xeb, 0xa8, 0x56, 0x43, 0x35, 0x66, 0xc7, 0x79, 0xa1, + 0x12, 0x74, 0x71, 0xf5, 0xcb, 0xaf, 0x4c, 0xf9, 0x16, 0x5e, 0x82, 0x14, 0xb5, 0xe9, 0xfc, 0x7c, + 0xfa, 0x86, 0x12, 0x51, 0xe1, 0x3c, 0x56, 0xfd, 0x04, 0x87, 0x9d, 0x99, 0x4f, 0xff, 0x8b, 0x12, + 0xa8, 0x72, 0xde, 0x70, 0xe6, 0x23, 0x44, 0x43, 0xeb, 0xb6, 0x35, 0x3c, 0x1d, 0x4b, 0xc3, 0x80, + 0x6e, 0x77, 0x75, 0xe8, 0x16, 0xd0, 0x6a, 0x0f, 0x46, 0xca, 0xf5, 0x5a, 0x99, 0xfc, 0xd1, 0x6e, + 0x1c, 0x95, 0x28, 0x8f, 0x54, 0x0f, 0xe6, 0x85, 0xb0, 0x0c, 0x22, 0xbc, 0x90, 0x16, 0x6b, 0x44, + 0xa6, 0x8e, 0x1f, 0x6b, 0x09, 0x8f, 0x9d, 0xed, 0xf6, 0x58, 0xbf, 0xb2, 0x7b, 0x0f, 0x9c, 0xed, + 0xf6, 0x40, 0x3f, 0x87, 0xbc, 0x47, 0x3d, 0xc3, 0x17, 0x67, 0x7a, 0xcf, 0x46, 0x3f, 0x0e, 0x89, + 0x65, 0x7a, 0x07, 0x78, 0x30, 0x3f, 0x88, 0x95, 0xfa, 0xce, 0x2b, 0x53, 0xc9, 0xad, 0xbd, 0x7a, + 0xcd, 0x48, 0x2c, 0xd7, 0xf4, 0xab, 0xd0, 0xfb, 0x1e, 0xf6, 0xa7, 0x6f, 0x98, 0x61, 0x91, 0x31, + 0x3c, 0xd0, 0x75, 0x8f, 0x08, 0x3f, 0xf8, 0x34, 0xdd, 0x41, 0x9c, 0xdb, 0xaa, 0x5b, 0xee, 0x99, + 0x85, 0x0b, 0x06, 0x15, 0x91, 0xf9, 0x65, 0x00, 0xfa, 0xcc, 0xa2, 0xe9, 0xec, 0xea, 0x65, 0x2e, + 0x99, 0x3e, 0xfa, 0xc2, 0x77, 0x5e, 0x99, 0x5a, 0x8c, 0x23, 0xf5, 0xc1, 0x9a, 0xe9, 0xec, 0x3e, + 0xe8, 0xee, 0xb7, 0xd0, 0x5c, 0x7e, 0xdf, 0x45, 0x0e, 0x97, 0xde, 0xe2, 0xab, 0x1e, 0x9b, 0x57, + 0x3a, 0x30, 0xaf, 0x94, 0x30, 0xa7, 0xcb, 0xe2, 0x9c, 0xe6, 0xdf, 0xec, 0x7c, 0x9e, 0xe1, 0x8b, + 0x84, 0x64, 0x49, 0x35, 0xca, 0x92, 0xea, 0xed, 0x5a, 0xb2, 0xc5, 0xeb, 0xa3, 0x34, 0x57, 0xf5, + 0xa0, 0xb9, 0xaa, 0xb7, 0x33, 0xd7, 0x1f, 0xd3, 0x6c, 0xf5, 0xf2, 0x69, 0xcb, 0xa2, 0xf7, 0x0f, + 0x7f, 0xb1, 0xf6, 0x82, 0xde, 0xd2, 0x2e, 0x20, 0x9b, 0xbc, 0xf1, 0xc2, 0x94, 0x92, 0xf9, 0x54, + 0x82, 0xcf, 0x9c, 0x26, 0xd2, 0x9b, 0x9b, 0xf9, 0x2f, 0x4a, 0x4f, 0xf5, 0x76, 0x58, 0xe8, 0x79, + 0x05, 0xc6, 0x3b, 0x2a, 0x39, 0x35, 0xd3, 0x5b, 0x5b, 0xce, 0xad, 0xc3, 0x96, 0x73, 0xa6, 0xe0, + 0x57, 0x14, 0x38, 0x2a, 0x95, 0x57, 0xaa, 0xde, 0x69, 0x49, 0xbd, 0x63, 0x9d, 0x4f, 0x22, 0x8c, + 0x01, 0xed, 0x82, 0xee, 0x95, 0x00, 0x01, 0xc9, 0x9e, 0xdf, 0x17, 0x25, 0xbf, 0x1f, 0xf7, 0x00, + 0x21, 0xe6, 0xe2, 0x11, 0xc0, 0xd4, 0xb6, 0x21, 0xb9, 0xd9, 0x46, 0x48, 0x9f, 0x84, 0xc4, 0x5a, + 0x9b, 0x69, 0x38, 0x4c, 0xf1, 0x6b, 0xed, 0x7c, 0xdb, 0xb4, 0xaa, 0xbb, 0x46, 0x62, 0xad, 0xad, + 0x9f, 0x00, 0x35, 0xc7, 0x7e, 0x5c, 0x60, 0x60, 0x61, 0x84, 0x32, 0xe4, 0xac, 0x1a, 0xe3, 0xc0, + 0x34, 0x7d, 0x12, 0x92, 0x2b, 0xc8, 0xdc, 0x66, 0x4a, 0x00, 0xe5, 0xc1, 0x23, 0x06, 0x19, 0x67, + 0x0f, 0x7c, 0x1c, 0x52, 0x5c, 0xb0, 0x7e, 0x12, 0x23, 0xb6, 0x5d, 0xf6, 0x58, 0x86, 0xc0, 0xea, + 0xb0, 0x95, 0x8b, 0x50, 0xf5, 0x53, 0xd0, 0x6b, 0xd4, 0x77, 0x76, 0x5d, 0xf6, 0xf0, 0x4e, 0x36, + 0x4a, 0xce, 0x5c, 0x83, 0x7e, 0x4f, 0xa3, 0xb7, 0x58, 0x74, 0x91, 0x4e, 0x4d, 0x9f, 0x08, 0xae, + 0x27, 0x7c, 0xdf, 0x92, 0x0e, 0xe9, 0xd3, 0x90, 0xda, 0x70, 0xdb, 0x7e, 0xd1, 0xe7, 0x1d, 0xa9, + 0x37, 0x9a, 0x79, 0xbf, 0x02, 0xa9, 0x22, 0x42, 0x2d, 0x62, 0xf0, 0x7b, 0x21, 0x59, 0xb4, 0x9f, + 0xb6, 0x98, 0x82, 0xa3, 0xcc, 0xa2, 0x98, 0xcc, 0x6c, 0x4a, 0xc8, 0xfa, 0xbd, 0x41, 0xbb, 0x8f, + 0x79, 0x76, 0x0f, 0xf0, 0x11, 0xdb, 0x67, 0x04, 0xdb, 0x33, 0x07, 0x62, 0xa6, 0x0e, 0xfb, 0x9f, + 0x87, 0x81, 0xc0, 0x53, 0xf4, 0x19, 0xa6, 0x46, 0x42, 0x06, 0x06, 0x6d, 0x85, 0x39, 0x32, 0x08, + 0x86, 0x84, 0x07, 0x63, 0x68, 0xc0, 0xc4, 0x5d, 0xa0, 0xc4, 0xcc, 0xb3, 0xa2, 0x99, 0xc3, 0x59, + 0x99, 0xa9, 0xe7, 0xa9, 0x8d, 0x88, 0xb9, 0x4f, 0xd2, 0xe0, 0xec, 0xee, 0x44, 0xfc, 0x39, 0xd3, + 0x0b, 0x6a, 0xb9, 0xde, 0xc8, 0x3c, 0x04, 0x40, 0x53, 0xbe, 0x64, 0xed, 0x35, 0xa5, 0xac, 0x1b, + 0xe6, 0x06, 0xde, 0xdc, 0x45, 0x9b, 0xc8, 0x21, 0x2c, 0x62, 0x3f, 0x85, 0x0b, 0x0c, 0xd0, 0x14, + 0x23, 0xf8, 0xfb, 0x23, 0xf1, 0xa1, 0x9d, 0x18, 0x66, 0x4d, 0x53, 0xd6, 0x6b, 0xc8, 0xcd, 0x59, + 0xb6, 0xbb, 0x8b, 0xda, 0x12, 0x62, 0x41, 0x3f, 0x2b, 0x24, 0xec, 0xf0, 0xc2, 0x5d, 0x1e, 0xa2, + 0x2b, 0xe8, 0x6c, 0xe6, 0x4b, 0x44, 0x41, 0xdc, 0x0a, 0x74, 0x4c, 0x50, 0x8d, 0x31, 0x41, 0xfd, + 0x9c, 0xd0, 0xbf, 0x1d, 0xa0, 0xa6, 0xf4, 0x6a, 0x79, 0x51, 0x78, 0xcf, 0x39, 0x58, 0x59, 0xf1, + 0x1d, 0x93, 0xdb, 0x94, 0xab, 0x7c, 0x7f, 0xa4, 0xca, 0x5d, 0xba, 0xdb, 0xc3, 0xda, 0x54, 0x8d, + 0x6b, 0xd3, 0xaf, 0x7b, 0x1d, 0x07, 0xfd, 0x99, 0x06, 0xf2, 0xab, 0x20, 0xfa, 0x03, 0x91, 0xbe, + 0xcf, 0x2a, 0x05, 0x4f, 0xd5, 0xc5, 0xb8, 0xee, 0xcf, 0x26, 0xf2, 0x79, 0x4f, 0xdd, 0xf3, 0x87, + 0x08, 0x81, 0x6c, 0xa2, 0x50, 0xf0, 0xca, 0x76, 0xea, 0x43, 0x2f, 0x4c, 0x29, 0x2f, 0xbe, 0x30, + 0xd5, 0x93, 0xf9, 0xbc, 0x02, 0xa3, 0x8c, 0x33, 0x10, 0xb8, 0x0f, 0x4a, 0xca, 0xdf, 0xc1, 0x6b, + 0x46, 0x98, 0x05, 0x7e, 0x66, 0xc1, 0xfb, 0x4d, 0x05, 0xd2, 0x1d, 0xba, 0x72, 0x7b, 0xcf, 0xc7, + 0x52, 0x39, 0xab, 0x94, 0x7e, 0xfe, 0x36, 0xbf, 0x06, 0xbd, 0x9b, 0xf5, 0x26, 0x6a, 0xe3, 0x95, + 0x00, 0x7f, 0xa0, 0x2a, 0xf3, 0xc3, 0x1c, 0x3a, 0xc4, 0x69, 0x54, 0x39, 0x81, 0xb6, 0xa0, 0xa7, + 0x21, 0x59, 0x34, 0x5d, 0x93, 0x68, 0x30, 0xe8, 0xd5, 0x57, 0xd3, 0x35, 0x33, 0x67, 0x61, 0x70, + 0x75, 0x9f, 0x5c, 0x92, 0xa9, 0x91, 0x0b, 0x20, 0x62, 0xf7, 0xc7, 0xfb, 0xd5, 0x33, 0xb3, 0xbd, + 0xa9, 0x9a, 0x76, 0x43, 0xc9, 0x26, 0x89, 0x3e, 0x4f, 0xc1, 0xf0, 0x1a, 0x56, 0x9b, 0xe0, 0x04, + 0x18, 0x7d, 0xba, 0xea, 0x4d, 0x5e, 0x6a, 0xca, 0x54, 0xbf, 0x29, 0x9b, 0x06, 0x65, 0x55, 0x6c, + 0x9d, 0x82, 0x7a, 0x18, 0xca, 0xea, 0x6c, 0x32, 0x35, 0xac, 0x8d, 0xce, 0x26, 0x53, 0xa0, 0x0d, + 0xb1, 0xe7, 0xfe, 0x93, 0x0a, 0x1a, 0x6d, 0x75, 0x8a, 0x68, 0xbb, 0x6e, 0xd5, 0xdd, 0xce, 0x7e, + 0xd5, 0xd3, 0x58, 0x7f, 0x04, 0xfa, 0xb1, 0x49, 0x2f, 0xb3, 0x1f, 0xd7, 0xc2, 0xa6, 0x3f, 0xc1, + 0x5a, 0x14, 0x49, 0x04, 0x1b, 0x20, 0xa1, 0xe3, 0x63, 0xf4, 0xcb, 0xa0, 0x96, 0xcb, 0xab, 0x6c, + 0x71, 0x5b, 0x3c, 0x10, 0xca, 0xee, 0xd8, 0xb0, 0x6f, 0x6c, 0xcc, 0xd9, 0x31, 0xb0, 0x00, 0x7d, + 0x11, 0x12, 0xe5, 0x55, 0xd6, 0xf0, 0x9e, 0x8c, 0x23, 0xc6, 0x48, 0x94, 0x57, 0x27, 0xfe, 0x41, + 0x81, 0x21, 0x61, 0x54, 0xcf, 0xc0, 0x20, 0x1d, 0x08, 0x4c, 0xb7, 0xcf, 0x10, 0xc6, 0xb8, 0xce, + 0x89, 0xdb, 0xd4, 0x79, 0x22, 0x07, 0x23, 0xd2, 0xb8, 0x3e, 0x07, 0x7a, 0x70, 0x88, 0x29, 0x41, + 0x7f, 0x98, 0x28, 0x84, 0x92, 0xb9, 0x1b, 0xc0, 0xb7, 0xab, 0xf7, 0x7b, 0x3a, 0xe5, 0xd2, 0xc6, + 0x66, 0xa9, 0xa8, 0x29, 0x99, 0xaf, 0x2a, 0x30, 0xc0, 0xda, 0xd6, 0xaa, 0xdd, 0x42, 0x7a, 0x1e, + 0x94, 0x1c, 0x8b, 0x87, 0x37, 0xa7, 0xb7, 0x92, 0xd3, 0x4f, 0x83, 0x92, 0x8f, 0xef, 0x6a, 0x25, + 0xaf, 0x2f, 0x80, 0x52, 0x60, 0x0e, 0x8e, 0xe7, 0x19, 0xa5, 0x90, 0xf9, 0xa1, 0x0a, 0x63, 0xc1, + 0x36, 0x9a, 0xd7, 0x93, 0x13, 0xe2, 0x7b, 0x53, 0xb6, 0xff, 0xcc, 0xc2, 0xd9, 0xc5, 0x39, 0xfc, + 0x8f, 0x17, 0x92, 0x27, 0xc4, 0x57, 0xa8, 0x4e, 0x96, 0x8e, 0x6b, 0x22, 0xd9, 0x64, 0x80, 0xda, + 0x71, 0x4d, 0x44, 0xa0, 0x76, 0x5c, 0x13, 0x11, 0xa8, 0x1d, 0xd7, 0x44, 0x04, 0x6a, 0xc7, 0x51, + 0x80, 0x40, 0xed, 0xb8, 0x26, 0x22, 0x50, 0x3b, 0xae, 0x89, 0x08, 0xd4, 0xce, 0x6b, 0x22, 0x8c, + 0xdc, 0xf5, 0x9a, 0x88, 0x48, 0xef, 0xbc, 0x26, 0x22, 0xd2, 0x3b, 0xaf, 0x89, 0x64, 0x93, 0x6e, + 0x7b, 0x0f, 0x75, 0x3f, 0x74, 0x10, 0xf1, 0x07, 0xbd, 0x03, 0xfa, 0x05, 0x78, 0x0d, 0x46, 0xe8, + 0x7e, 0x44, 0xc1, 0xb6, 0x5c, 0xb3, 0x6e, 0xa1, 0xb6, 0xfe, 0x4e, 0x18, 0xa4, 0x43, 0xf4, 0x2d, + 0x27, 0xec, 0x2d, 0x90, 0xd2, 0x59, 0xb9, 0x15, 0xb8, 0x33, 0x3f, 0x4d, 0xc2, 0x38, 0x1d, 0x28, + 0x9b, 0x4d, 0x24, 0x5c, 0x32, 0x3a, 0x25, 0x1d, 0x29, 0x0d, 0x63, 0xf8, 0xad, 0x57, 0xa6, 0xe8, + 0x68, 0xce, 0x0b, 0xa6, 0x53, 0xd2, 0xe1, 0x92, 0xc8, 0xe7, 0xaf, 0x3f, 0xa7, 0xa4, 0x8b, 0x47, + 0x22, 0x9f, 0xb7, 0xdc, 0x78, 0x7c, 0xfc, 0x0a, 0x92, 0xc8, 0x57, 0xf4, 0xa2, 0xec, 0x94, 0x74, + 0x19, 0x49, 0xe4, 0x2b, 0x79, 0xf1, 0x76, 0x4a, 0x3a, 0x7a, 0x12, 0xf9, 0x2e, 0x7b, 0x91, 0x77, + 0x4a, 0x3a, 0x84, 0x12, 0xf9, 0xae, 0x78, 0x31, 0x78, 0x4a, 0xba, 0xaa, 0x24, 0xf2, 0x3d, 0xea, + 0x45, 0xe3, 0x29, 0xe9, 0xd2, 0x92, 0xc8, 0xb7, 0xec, 0xc5, 0xe5, 0x8c, 0x7c, 0x7d, 0x49, 0x64, + 0xbc, 0xea, 0x47, 0xe8, 0x8c, 0x7c, 0x91, 0x49, 0xe4, 0x7c, 0x97, 0x1f, 0xab, 0x33, 0xf2, 0x95, + 0x26, 0x91, 0x73, 0xc5, 0x8f, 0xda, 0x19, 0xf9, 0xa8, 0x4c, 0xe4, 0x5c, 0xf5, 0xe3, 0x77, 0x46, + 0x3e, 0x34, 0x13, 0x39, 0xcb, 0x7e, 0x24, 0xcf, 0xc8, 0xc7, 0x67, 0x22, 0xe7, 0x9a, 0xbf, 0x87, + 0xfe, 0x0d, 0x29, 0xfc, 0x02, 0x97, 0xa0, 0x32, 0x52, 0xf8, 0x41, 0x48, 0xe8, 0x65, 0xa4, 0xd0, + 0x83, 0x90, 0xb0, 0xcb, 0x48, 0x61, 0x07, 0x21, 0x21, 0x97, 0x91, 0x42, 0x0e, 0x42, 0xc2, 0x2d, + 0x23, 0x85, 0x1b, 0x84, 0x84, 0x5a, 0x46, 0x0a, 0x35, 0x08, 0x09, 0xb3, 0x8c, 0x14, 0x66, 0x10, + 0x12, 0x62, 0x19, 0x29, 0xc4, 0x20, 0x24, 0xbc, 0x32, 0x52, 0x78, 0x41, 0x48, 0x68, 0x9d, 0x94, + 0x43, 0x0b, 0xc2, 0xc2, 0xea, 0xa4, 0x1c, 0x56, 0x10, 0x16, 0x52, 0xf7, 0xc8, 0x21, 0xd5, 0x7f, + 0xeb, 0x95, 0xa9, 0x5e, 0x3c, 0x14, 0x88, 0xa6, 0x93, 0x72, 0x34, 0x41, 0x58, 0x24, 0x9d, 0x94, + 0x23, 0x09, 0xc2, 0xa2, 0xe8, 0xa4, 0x1c, 0x45, 0x10, 0x16, 0x41, 0x2f, 0xc9, 0x11, 0xe4, 0x5f, + 0xf1, 0xc9, 0x48, 0x27, 0x8a, 0x51, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, + 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, 0xd4, + 0x38, 0x11, 0xa4, 0xc6, 0x8a, 0x20, 0xb5, 0x5b, 0x04, 0x9d, 0x94, 0x2f, 0x3c, 0x40, 0x58, 0x41, + 0x3a, 0x29, 0x9f, 0x7c, 0x46, 0x87, 0x90, 0x1a, 0x2b, 0x84, 0xd4, 0x6e, 0x21, 0xf4, 0x0d, 0x15, + 0xc6, 0x84, 0x10, 0x62, 0xc7, 0x43, 0x6f, 0x55, 0x05, 0x3a, 0x17, 0xe3, 0x7e, 0x45, 0x58, 0x4c, + 0x9d, 0x8b, 0x71, 0x46, 0x7d, 0x50, 0x9c, 0x75, 0x56, 0xa1, 0x52, 0x8c, 0x2a, 0x74, 0xd9, 0x8b, + 0xa1, 0x73, 0x31, 0xee, 0x5d, 0x74, 0xc6, 0xde, 0x85, 0x83, 0x8a, 0xc0, 0xa3, 0xb1, 0x8a, 0xc0, + 0x72, 0xac, 0x22, 0x70, 0xd5, 0xf7, 0xe0, 0x07, 0x13, 0x70, 0xd4, 0xf7, 0x20, 0xfd, 0x44, 0x7e, + 0x04, 0x29, 0x13, 0x38, 0xa1, 0xd2, 0xf9, 0xa9, 0x4d, 0xc0, 0x8d, 0x89, 0xe5, 0x9a, 0xbe, 0x2e, + 0x9e, 0x55, 0x65, 0x0f, 0x7b, 0x7e, 0x13, 0xf0, 0x38, 0xdb, 0x0b, 0x3d, 0x09, 0xea, 0x72, 0xcd, + 0x21, 0xd5, 0x22, 0xec, 0xb1, 0x05, 0x03, 0x93, 0x75, 0x03, 0xfa, 0x08, 0xbb, 0x43, 0xdc, 0x7b, + 0x3b, 0x0f, 0x2e, 0x1a, 0x4c, 0x52, 0xe6, 0x25, 0x05, 0xa6, 0x85, 0x50, 0x7e, 0x6b, 0x4e, 0x0c, + 0x2e, 0xc5, 0x3a, 0x31, 0x10, 0x12, 0xc4, 0x3f, 0x3d, 0xb8, 0xaf, 0xf3, 0xa0, 0x3a, 0x98, 0x25, + 0xf2, 0x49, 0xc2, 0xaf, 0xc0, 0xb0, 0x3f, 0x03, 0xf2, 0xca, 0xb6, 0x14, 0xbd, 0x99, 0x19, 0x96, + 0x9a, 0x4b, 0xd2, 0x26, 0xda, 0x81, 0x30, 0x2f, 0x5b, 0x33, 0x59, 0x18, 0x29, 0x8b, 0x7f, 0xad, + 0x13, 0xb5, 0x17, 0x91, 0xc2, 0xad, 0xf9, 0x8d, 0x4f, 0x4f, 0xf5, 0x64, 0x1e, 0x80, 0xc1, 0xe0, + 0x1f, 0xe4, 0x48, 0xc0, 0x7e, 0x0e, 0xcc, 0x26, 0x5f, 0xc6, 0xdc, 0x7f, 0xa4, 0xc0, 0x1d, 0x41, + 0xf6, 0xc7, 0xea, 0xee, 0xee, 0xb2, 0x85, 0x7b, 0xfa, 0x87, 0x20, 0x85, 0x98, 0xe3, 0xd8, 0xef, + 0x99, 0xb0, 0xd7, 0xc8, 0x50, 0xf6, 0x39, 0xf2, 0xaf, 0xe1, 0x41, 0xa4, 0x4d, 0x10, 0xfe, 0xd8, + 0x85, 0x89, 0x7b, 0xa1, 0x97, 0xca, 0x17, 0xf5, 0x1a, 0x92, 0xf4, 0xfa, 0x6c, 0x88, 0x5e, 0x24, + 0x8e, 0xf4, 0xab, 0x82, 0x5e, 0x81, 0xb7, 0xd5, 0x50, 0xf6, 0x39, 0x1e, 0x7c, 0xf9, 0x14, 0xee, + 0xff, 0x48, 0x44, 0x45, 0x2b, 0x39, 0x03, 0xa9, 0x92, 0xcc, 0x13, 0xae, 0x67, 0x11, 0x92, 0x65, + 0xbb, 0x46, 0x7e, 0x69, 0x85, 0xfc, 0x22, 0x2e, 0x33, 0x32, 0xfb, 0x79, 0xdc, 0x53, 0x90, 0x2a, + 0xec, 0xd6, 0x1b, 0xb5, 0x36, 0xb2, 0xd8, 0x91, 0x3d, 0xdb, 0x41, 0xc7, 0x18, 0xc3, 0xa3, 0x65, + 0x0a, 0x30, 0x5a, 0xb6, 0xad, 0xfc, 0xbe, 0x1b, 0xac, 0x1b, 0x73, 0x52, 0x8a, 0xb0, 0x23, 0x1f, + 0xf2, 0x27, 0x1e, 0x98, 0x21, 0xdf, 0xfb, 0x9d, 0x57, 0xa6, 0x94, 0x4d, 0x6f, 0xfb, 0x7c, 0x15, + 0x8e, 0xb1, 0xf4, 0xe9, 0x10, 0xb5, 0x10, 0x25, 0xaa, 0x9f, 0x1d, 0x53, 0x07, 0xc4, 0x2d, 0x63, + 0x71, 0x56, 0xa8, 0xb8, 0x37, 0xa7, 0x19, 0x6e, 0x8a, 0x0e, 0xd4, 0x4c, 0x3d, 0x94, 0x66, 0xa1, + 0xe2, 0xe6, 0xa2, 0xc4, 0x49, 0x9a, 0xdd, 0x03, 0xfd, 0x1e, 0x2d, 0x10, 0x0d, 0xc1, 0x4c, 0x59, + 0x98, 0xcd, 0xc0, 0x40, 0x20, 0x61, 0xf5, 0x5e, 0x50, 0x72, 0x5a, 0x0f, 0xfe, 0x2f, 0xaf, 0x29, + 0xf8, 0xbf, 0x82, 0x96, 0x98, 0xbd, 0x17, 0x46, 0xa4, 0xed, 0x4b, 0x4c, 0x29, 0x6a, 0x80, 0xff, + 0x2b, 0x69, 0x03, 0x13, 0xc9, 0x0f, 0xfd, 0xe9, 0x64, 0xcf, 0xec, 0x25, 0xd0, 0x3b, 0x37, 0x3a, + 0xf5, 0x3e, 0x48, 0xe4, 0xb0, 0xc8, 0x63, 0x90, 0xc8, 0xe7, 0x35, 0x65, 0x62, 0xe4, 0x37, 0x3f, + 0x39, 0x3d, 0x90, 0x27, 0x7f, 0x6d, 0x7c, 0x0d, 0xb9, 0xf9, 0x3c, 0x03, 0x3f, 0x0c, 0x77, 0x84, + 0x6e, 0x94, 0x62, 0x7c, 0xa1, 0x40, 0xf1, 0xc5, 0x62, 0x07, 0xbe, 0x58, 0x24, 0x78, 0x25, 0xcb, + 0x0f, 0x9c, 0x73, 0x7a, 0xc8, 0x26, 0x63, 0xba, 0x16, 0x38, 0xe0, 0xce, 0x65, 0x1f, 0x66, 0xbc, + 0xf9, 0x50, 0x5e, 0x14, 0x71, 0x60, 0x9d, 0xcf, 0x16, 0x18, 0xbe, 0x10, 0x8a, 0xdf, 0x96, 0x4e, + 0x55, 0xc5, 0x15, 0x82, 0x09, 0x29, 0x78, 0x0a, 0x17, 0x43, 0x85, 0xec, 0x06, 0xee, 0xba, 0x17, + 0x3d, 0x85, 0x4b, 0xa1, 0xbc, 0xf5, 0x88, 0x3b, 0x5f, 0xa5, 0xec, 0x69, 0xb6, 0xc8, 0xe7, 0xce, + 0xe8, 0x77, 0xf0, 0x1c, 0x15, 0x2a, 0x30, 0x33, 0x10, 0xe7, 0xca, 0x16, 0x18, 0x20, 0xdf, 0x15, + 0xd0, 0xdd, 0x4a, 0x1c, 0x99, 0x7d, 0x94, 0x09, 0x29, 0x74, 0x15, 0x12, 0x61, 0x2a, 0x0e, 0xcf, + 0x6f, 0xde, 0xb8, 0x39, 0xd9, 0xf3, 0xf2, 0xcd, 0xc9, 0x9e, 0x7f, 0xbd, 0x39, 0xd9, 0xf3, 0xdd, + 0x9b, 0x93, 0xca, 0xf7, 0x6f, 0x4e, 0x2a, 0x3f, 0xb8, 0x39, 0xa9, 0xfc, 0xe4, 0xe6, 0xa4, 0xf2, + 0xdc, 0xad, 0x49, 0xe5, 0xc5, 0x5b, 0x93, 0xca, 0x97, 0x6e, 0x4d, 0x2a, 0x5f, 0xbb, 0x35, 0xa9, + 0xbc, 0x74, 0x6b, 0x52, 0xb9, 0x71, 0x6b, 0x52, 0x79, 0xf9, 0xd6, 0xa4, 0xf2, 0xdd, 0x5b, 0x93, + 0xca, 0xf7, 0x6f, 0x4d, 0xf6, 0xfc, 0xe0, 0xd6, 0xa4, 0xf2, 0x93, 0x5b, 0x93, 0x3d, 0xcf, 0xbd, + 0x3a, 0xd9, 0xf3, 0xc2, 0xab, 0x93, 0x3d, 0x2f, 0xbe, 0x3a, 0xa9, 0xfc, 0x7f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x35, 0x89, 0x28, 0xbd, 0xa5, 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/combos/marshaler/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/combos/marshaler/thetest.pb.go index c38168d91..d66746058 100644 --- a/vendor/github.com/gogo/protobuf/test/combos/marshaler/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/combos/marshaler/thetest.pb.go @@ -6967,407 +6967,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6393 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x86, 0x43, 0x69, 0xa9, 0x43, 0x3d, 0x46, 0xb3, 0x6b, 0x99, 0x96, 0xd7, 0x94, 0x96, - 0x5e, 0xaf, 0x65, 0xc5, 0xd6, 0x6a, 0xb5, 0xda, 0x17, 0x37, 0xb6, 0xc1, 0xd7, 0xca, 0xda, 0xff, - 0xea, 0x91, 0x91, 0x94, 0xd8, 0xc9, 0x1f, 0x20, 0x66, 0xc9, 0x2b, 0x89, 0x36, 0x39, 0xc3, 0x72, - 0x86, 0xb6, 0xe5, 0x0f, 0x85, 0x93, 0xb4, 0x69, 0xd2, 0xa0, 0xcf, 0xb4, 0x68, 0x9e, 0x8e, 0x93, - 0x22, 0x8d, 0x93, 0xbe, 0x92, 0x36, 0x4d, 0x83, 0xa0, 0x68, 0xfc, 0x25, 0xed, 0x16, 0x05, 0x0a, - 0xa7, 0x9f, 0x8a, 0xa0, 0x30, 0xe2, 0x4d, 0x80, 0xa6, 0xad, 0xdb, 0x26, 0x8d, 0x81, 0x04, 0x70, - 0x3e, 0x14, 0xf7, 0x35, 0x33, 0xf7, 0x72, 0xa8, 0x19, 0x79, 0xed, 0x24, 0x5f, 0x76, 0xc9, 0x7b, - 0xce, 0xef, 0xcc, 0xb9, 0xe7, 0x75, 0xcf, 0xdc, 0x7b, 0x45, 0x78, 0xef, 0x12, 0xcc, 0xec, 0xda, - 0xf6, 0x6e, 0x13, 0x9d, 0x6e, 0x77, 0x6c, 0xd7, 0xbe, 0xde, 0xdd, 0x39, 0x5d, 0x47, 0x4e, 0xad, - 0xd3, 0x68, 0xbb, 0x76, 0x67, 0x9e, 0x8c, 0xe9, 0xe3, 0x94, 0x63, 0x9e, 0x73, 0xe4, 0x56, 0x61, - 0xe2, 0x4a, 0xa3, 0x89, 0xca, 0x1e, 0xe3, 0x26, 0x72, 0xf5, 0x8b, 0x90, 0xdc, 0x69, 0x34, 0x51, - 0x46, 0x99, 0x51, 0x67, 0xd3, 0x8b, 0x27, 0xe7, 0x25, 0xd0, 0xbc, 0x88, 0xd8, 0xc0, 0xc3, 0x06, - 0x41, 0xe4, 0xbe, 0x97, 0x84, 0xa3, 0x21, 0x54, 0x5d, 0x87, 0xa4, 0x65, 0xb6, 0xb0, 0x44, 0x65, - 0x76, 0xd8, 0x20, 0x9f, 0xf5, 0x0c, 0x1c, 0x69, 0x9b, 0xb5, 0x27, 0xcc, 0x5d, 0x94, 0x49, 0x90, - 0x61, 0xfe, 0x55, 0xcf, 0x02, 0xd4, 0x51, 0x1b, 0x59, 0x75, 0x64, 0xd5, 0xf6, 0x33, 0xea, 0x8c, - 0x3a, 0x3b, 0x6c, 0x04, 0x46, 0xf4, 0xb7, 0xc1, 0x44, 0xbb, 0x7b, 0xbd, 0xd9, 0xa8, 0x55, 0x03, - 0x6c, 0x30, 0xa3, 0xce, 0x0e, 0x1a, 0x1a, 0x25, 0x94, 0x7d, 0xe6, 0x7b, 0x61, 0xfc, 0x29, 0x64, - 0x3e, 0x11, 0x64, 0x4d, 0x13, 0xd6, 0x31, 0x3c, 0x1c, 0x60, 0x2c, 0xc1, 0x48, 0x0b, 0x39, 0x8e, - 0xb9, 0x8b, 0xaa, 0xee, 0x7e, 0x1b, 0x65, 0x92, 0x64, 0xf6, 0x33, 0x3d, 0xb3, 0x97, 0x67, 0x9e, - 0x66, 0xa8, 0xad, 0xfd, 0x36, 0xd2, 0x0b, 0x30, 0x8c, 0xac, 0x6e, 0x8b, 0x4a, 0x18, 0xec, 0x63, - 0xbf, 0x8a, 0xd5, 0x6d, 0xc9, 0x52, 0x52, 0x18, 0xc6, 0x44, 0x1c, 0x71, 0x50, 0xe7, 0xc9, 0x46, - 0x0d, 0x65, 0x86, 0x88, 0x80, 0x7b, 0x7b, 0x04, 0x6c, 0x52, 0xba, 0x2c, 0x83, 0xe3, 0xf4, 0x12, - 0x0c, 0xa3, 0xa7, 0x5d, 0x64, 0x39, 0x0d, 0xdb, 0xca, 0x1c, 0x21, 0x42, 0xee, 0x09, 0xf1, 0x22, - 0x6a, 0xd6, 0x65, 0x11, 0x3e, 0x4e, 0x3f, 0x0f, 0x47, 0xec, 0xb6, 0xdb, 0xb0, 0x2d, 0x27, 0x93, - 0x9a, 0x51, 0x66, 0xd3, 0x8b, 0xc7, 0x43, 0x03, 0x61, 0x9d, 0xf2, 0x18, 0x9c, 0x59, 0x5f, 0x01, - 0xcd, 0xb1, 0xbb, 0x9d, 0x1a, 0xaa, 0xd6, 0xec, 0x3a, 0xaa, 0x36, 0xac, 0x1d, 0x3b, 0x33, 0x4c, - 0x04, 0x4c, 0xf7, 0x4e, 0x84, 0x30, 0x96, 0xec, 0x3a, 0x5a, 0xb1, 0x76, 0x6c, 0x63, 0xcc, 0x11, - 0xbe, 0xeb, 0x93, 0x30, 0xe4, 0xec, 0x5b, 0xae, 0xf9, 0x74, 0x66, 0x84, 0x44, 0x08, 0xfb, 0x96, - 0xfb, 0xf1, 0x20, 0x8c, 0xc7, 0x09, 0xb1, 0xcb, 0x30, 0xb8, 0x83, 0x67, 0x99, 0x49, 0x1c, 0xc6, - 0x06, 0x14, 0x23, 0x1a, 0x71, 0xe8, 0x0d, 0x1a, 0xb1, 0x00, 0x69, 0x0b, 0x39, 0x2e, 0xaa, 0xd3, - 0x88, 0x50, 0x63, 0xc6, 0x14, 0x50, 0x50, 0x6f, 0x48, 0x25, 0xdf, 0x50, 0x48, 0x3d, 0x0a, 0xe3, - 0x9e, 0x4a, 0xd5, 0x8e, 0x69, 0xed, 0xf2, 0xd8, 0x3c, 0x1d, 0xa5, 0xc9, 0x7c, 0x85, 0xe3, 0x0c, - 0x0c, 0x33, 0xc6, 0x90, 0xf0, 0x5d, 0x2f, 0x03, 0xd8, 0x16, 0xb2, 0x77, 0xaa, 0x75, 0x54, 0x6b, - 0x66, 0x52, 0x7d, 0xac, 0xb4, 0x8e, 0x59, 0x7a, 0xac, 0x64, 0xd3, 0xd1, 0x5a, 0x53, 0xbf, 0xe4, - 0x87, 0xda, 0x91, 0x3e, 0x91, 0xb2, 0x4a, 0x93, 0xac, 0x27, 0xda, 0xb6, 0x61, 0xac, 0x83, 0x70, - 0xdc, 0xa3, 0x3a, 0x9b, 0xd9, 0x30, 0x51, 0x62, 0x3e, 0x72, 0x66, 0x06, 0x83, 0xd1, 0x89, 0x8d, - 0x76, 0x82, 0x5f, 0xf5, 0xbb, 0xc1, 0x1b, 0xa8, 0x92, 0xb0, 0x02, 0x52, 0x85, 0x46, 0xf8, 0xe0, - 0x9a, 0xd9, 0x42, 0x53, 0x17, 0x61, 0x4c, 0x34, 0x8f, 0x7e, 0x0c, 0x06, 0x1d, 0xd7, 0xec, 0xb8, - 0x24, 0x0a, 0x07, 0x0d, 0xfa, 0x45, 0xd7, 0x40, 0x45, 0x56, 0x9d, 0x54, 0xb9, 0x41, 0x03, 0x7f, - 0x9c, 0xba, 0x00, 0xa3, 0xc2, 0xe3, 0xe3, 0x02, 0x73, 0x1f, 0x1d, 0x82, 0x63, 0x61, 0x31, 0x17, - 0x1a, 0xfe, 0x93, 0x30, 0x64, 0x75, 0x5b, 0xd7, 0x51, 0x27, 0xa3, 0x12, 0x09, 0xec, 0x9b, 0x5e, - 0x80, 0xc1, 0xa6, 0x79, 0x1d, 0x35, 0x33, 0xc9, 0x19, 0x65, 0x76, 0x6c, 0xf1, 0x6d, 0xb1, 0xa2, - 0x7a, 0xfe, 0x1a, 0x86, 0x18, 0x14, 0xa9, 0x3f, 0x04, 0x49, 0x56, 0xe2, 0xb0, 0x84, 0xb9, 0x78, - 0x12, 0x70, 0x2c, 0x1a, 0x04, 0xa7, 0xdf, 0x09, 0xc3, 0xf8, 0x7f, 0x6a, 0xdb, 0x21, 0xa2, 0x73, - 0x0a, 0x0f, 0x60, 0xbb, 0xea, 0x53, 0x90, 0x22, 0x61, 0x56, 0x47, 0x7c, 0x69, 0xf0, 0xbe, 0x63, - 0xc7, 0xd4, 0xd1, 0x8e, 0xd9, 0x6d, 0xba, 0xd5, 0x27, 0xcd, 0x66, 0x17, 0x91, 0x80, 0x19, 0x36, - 0x46, 0xd8, 0xe0, 0x3b, 0xf1, 0x98, 0x3e, 0x0d, 0x69, 0x1a, 0x95, 0x0d, 0xab, 0x8e, 0x9e, 0x26, - 0xd5, 0x67, 0xd0, 0xa0, 0x81, 0xba, 0x82, 0x47, 0xf0, 0xe3, 0x1f, 0x77, 0x6c, 0x8b, 0xbb, 0x96, - 0x3c, 0x02, 0x0f, 0x90, 0xc7, 0x5f, 0x90, 0x0b, 0xdf, 0x5d, 0xe1, 0xd3, 0x93, 0x63, 0x31, 0xf7, - 0xd5, 0x04, 0x24, 0x49, 0xbe, 0x8d, 0x43, 0x7a, 0xeb, 0xb1, 0x8d, 0x4a, 0xb5, 0xbc, 0xbe, 0x5d, - 0xbc, 0x56, 0xd1, 0x14, 0x7d, 0x0c, 0x80, 0x0c, 0x5c, 0xb9, 0xb6, 0x5e, 0xd8, 0xd2, 0x12, 0xde, - 0xf7, 0x95, 0xb5, 0xad, 0xf3, 0x4b, 0x9a, 0xea, 0x01, 0xb6, 0xe9, 0x40, 0x32, 0xc8, 0x70, 0x76, - 0x51, 0x1b, 0xd4, 0x35, 0x18, 0xa1, 0x02, 0x56, 0x1e, 0xad, 0x94, 0xcf, 0x2f, 0x69, 0x43, 0xe2, - 0xc8, 0xd9, 0x45, 0xed, 0x88, 0x3e, 0x0a, 0xc3, 0x64, 0xa4, 0xb8, 0xbe, 0x7e, 0x4d, 0x4b, 0x79, - 0x32, 0x37, 0xb7, 0x8c, 0x95, 0xb5, 0x65, 0x6d, 0xd8, 0x93, 0xb9, 0x6c, 0xac, 0x6f, 0x6f, 0x68, - 0xe0, 0x49, 0x58, 0xad, 0x6c, 0x6e, 0x16, 0x96, 0x2b, 0x5a, 0xda, 0xe3, 0x28, 0x3e, 0xb6, 0x55, - 0xd9, 0xd4, 0x46, 0x04, 0xb5, 0xce, 0x2e, 0x6a, 0xa3, 0xde, 0x23, 0x2a, 0x6b, 0xdb, 0xab, 0xda, - 0x98, 0x3e, 0x01, 0xa3, 0xf4, 0x11, 0x5c, 0x89, 0x71, 0x69, 0xe8, 0xfc, 0x92, 0xa6, 0xf9, 0x8a, - 0x50, 0x29, 0x13, 0xc2, 0xc0, 0xf9, 0x25, 0x4d, 0xcf, 0x95, 0x60, 0x90, 0x44, 0x97, 0xae, 0xc3, - 0xd8, 0xb5, 0x42, 0xb1, 0x72, 0xad, 0xba, 0xbe, 0xb1, 0xb5, 0xb2, 0xbe, 0x56, 0xb8, 0xa6, 0x29, - 0xfe, 0x98, 0x51, 0x79, 0xc7, 0xf6, 0x8a, 0x51, 0x29, 0x6b, 0x89, 0xe0, 0xd8, 0x46, 0xa5, 0xb0, - 0x55, 0x29, 0x6b, 0x6a, 0xae, 0x06, 0xc7, 0xc2, 0xea, 0x4c, 0x68, 0x66, 0x04, 0x5c, 0x9c, 0xe8, - 0xe3, 0x62, 0x22, 0xab, 0xc7, 0xc5, 0x9f, 0x55, 0xe0, 0x68, 0x48, 0xad, 0x0d, 0x7d, 0xc8, 0xc3, - 0x30, 0x48, 0x43, 0x94, 0xae, 0x3e, 0xf7, 0x85, 0x16, 0x6d, 0x12, 0xb0, 0x3d, 0x2b, 0x10, 0xc1, - 0x05, 0x57, 0x60, 0xb5, 0xcf, 0x0a, 0x8c, 0x45, 0xf4, 0x28, 0xf9, 0x7e, 0x05, 0x32, 0xfd, 0x64, - 0x47, 0x14, 0x8a, 0x84, 0x50, 0x28, 0x2e, 0xcb, 0x0a, 0x9c, 0xe8, 0x3f, 0x87, 0x1e, 0x2d, 0x3e, - 0xaf, 0xc0, 0x64, 0x78, 0xa3, 0x12, 0xaa, 0xc3, 0x43, 0x30, 0xd4, 0x42, 0xee, 0x9e, 0xcd, 0x17, - 0xeb, 0x53, 0x21, 0x4b, 0x00, 0x26, 0xcb, 0xb6, 0x62, 0xa8, 0xe0, 0x1a, 0xa2, 0xf6, 0xeb, 0x36, - 0xa8, 0x36, 0x3d, 0x9a, 0x7e, 0x28, 0x01, 0xb7, 0x85, 0x0a, 0x0f, 0x55, 0xf4, 0x2e, 0x80, 0x86, - 0xd5, 0xee, 0xba, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x98, 0x8c, 0x90, 0xdc, 0xc7, 0xb5, 0xa7, 0xeb, - 0x7a, 0x74, 0x95, 0xd0, 0x81, 0x0e, 0x11, 0x86, 0x8b, 0xbe, 0xa2, 0x49, 0xa2, 0x68, 0xb6, 0xcf, - 0x4c, 0x7b, 0xd6, 0xba, 0x05, 0xd0, 0x6a, 0xcd, 0x06, 0xb2, 0xdc, 0xaa, 0xe3, 0x76, 0x90, 0xd9, - 0x6a, 0x58, 0xbb, 0xa4, 0x00, 0xa7, 0xf2, 0x83, 0x3b, 0x66, 0xd3, 0x41, 0xc6, 0x38, 0x25, 0x6f, - 0x72, 0x2a, 0x46, 0x90, 0x55, 0xa6, 0x13, 0x40, 0x0c, 0x09, 0x08, 0x4a, 0xf6, 0x10, 0xb9, 0x0f, - 0x1f, 0x81, 0x74, 0xa0, 0xad, 0xd3, 0x4f, 0xc0, 0xc8, 0xe3, 0xe6, 0x93, 0x66, 0x95, 0xb7, 0xea, - 0xd4, 0x12, 0x69, 0x3c, 0xb6, 0xc1, 0xda, 0xf5, 0x05, 0x38, 0x46, 0x58, 0xec, 0xae, 0x8b, 0x3a, - 0xd5, 0x5a, 0xd3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, 0x31, 0x6d, 0x1d, 0x93, 0x4a, 0x9c, - 0xa2, 0x9f, 0x83, 0xa3, 0x04, 0xd1, 0xea, 0x36, 0xdd, 0x46, 0xbb, 0x89, 0xaa, 0xf8, 0xe5, 0xc1, - 0x21, 0x85, 0xd8, 0xd3, 0x6c, 0x02, 0x73, 0xac, 0x32, 0x06, 0xac, 0x91, 0xa3, 0x2f, 0xc3, 0x5d, - 0x04, 0xb6, 0x8b, 0x2c, 0xd4, 0x31, 0x5d, 0x54, 0x45, 0xbf, 0xd4, 0x35, 0x9b, 0x4e, 0xd5, 0xb4, - 0xea, 0xd5, 0x3d, 0xd3, 0xd9, 0xcb, 0x1c, 0x0b, 0x0a, 0xb8, 0x03, 0xf3, 0x2e, 0x33, 0xd6, 0x0a, - 0xe1, 0x2c, 0x58, 0xf5, 0x47, 0x4c, 0x67, 0x4f, 0xcf, 0xc3, 0x24, 0x11, 0xe4, 0xb8, 0x9d, 0x86, - 0xb5, 0x5b, 0xad, 0xed, 0xa1, 0xda, 0x13, 0xd5, 0xae, 0xbb, 0x73, 0x31, 0x73, 0x67, 0x50, 0x02, - 0x51, 0x72, 0x93, 0xf0, 0x94, 0x30, 0xcb, 0xb6, 0xbb, 0x73, 0x51, 0xdf, 0x84, 0x11, 0xec, 0x8f, - 0x56, 0xe3, 0x19, 0x54, 0xdd, 0xb1, 0x3b, 0x64, 0x71, 0x19, 0x0b, 0x49, 0xee, 0x80, 0x11, 0xe7, - 0xd7, 0x19, 0x60, 0xd5, 0xae, 0xa3, 0xfc, 0xe0, 0xe6, 0x46, 0xa5, 0x52, 0x36, 0xd2, 0x5c, 0xca, - 0x15, 0xbb, 0x83, 0x63, 0x6a, 0xd7, 0xf6, 0x6c, 0x9c, 0xa6, 0x31, 0xb5, 0x6b, 0x73, 0x0b, 0x9f, - 0x83, 0xa3, 0xb5, 0x1a, 0x9d, 0x76, 0xa3, 0x56, 0x65, 0x5d, 0xbe, 0x93, 0xd1, 0x04, 0x7b, 0xd5, - 0x6a, 0xcb, 0x94, 0x81, 0x85, 0xb9, 0xa3, 0x5f, 0x82, 0xdb, 0x7c, 0x7b, 0x05, 0x81, 0x13, 0x3d, - 0xb3, 0x94, 0xa1, 0xe7, 0xe0, 0x68, 0x7b, 0xbf, 0x17, 0xa8, 0x0b, 0x4f, 0x6c, 0xef, 0xcb, 0xb0, - 0x7b, 0xc8, 0x9b, 0x5b, 0x07, 0xd5, 0x4c, 0x17, 0xd5, 0x33, 0xb7, 0x07, 0xb9, 0x03, 0x04, 0xfd, - 0x34, 0x68, 0xb5, 0x5a, 0x15, 0x59, 0xe6, 0xf5, 0x26, 0xaa, 0x9a, 0x1d, 0x64, 0x99, 0x4e, 0x66, - 0x3a, 0xc8, 0x3c, 0x56, 0xab, 0x55, 0x08, 0xb5, 0x40, 0x88, 0xfa, 0x1c, 0x4c, 0xd8, 0xd7, 0x1f, - 0xaf, 0xd1, 0xe0, 0xaa, 0xb6, 0x3b, 0x68, 0xa7, 0xf1, 0x74, 0xe6, 0x24, 0x31, 0xd3, 0x38, 0x26, - 0x90, 0xd0, 0xda, 0x20, 0xc3, 0xfa, 0x7d, 0xa0, 0xd5, 0x9c, 0x3d, 0xb3, 0xd3, 0x26, 0xab, 0xbb, - 0xd3, 0x36, 0x6b, 0x28, 0x73, 0x0f, 0x65, 0xa5, 0xe3, 0x6b, 0x7c, 0x58, 0x7f, 0x14, 0x8e, 0x75, - 0xad, 0x86, 0xe5, 0xa2, 0x4e, 0xbb, 0x83, 0x70, 0x93, 0x4e, 0x33, 0x2d, 0xf3, 0x6f, 0x47, 0xfa, - 0xb4, 0xd9, 0xdb, 0x41, 0x6e, 0xea, 0x5d, 0xe3, 0x68, 0xb7, 0x77, 0x30, 0x97, 0x87, 0x91, 0xa0, - 0xd3, 0xf5, 0x61, 0xa0, 0x6e, 0xd7, 0x14, 0xbc, 0x86, 0x96, 0xd6, 0xcb, 0x78, 0xf5, 0x7b, 0x77, - 0x45, 0x4b, 0xe0, 0x55, 0xf8, 0xda, 0xca, 0x56, 0xa5, 0x6a, 0x6c, 0xaf, 0x6d, 0xad, 0xac, 0x56, - 0x34, 0x75, 0x6e, 0x38, 0xf5, 0xfd, 0x23, 0xda, 0xb3, 0xcf, 0x3e, 0xfb, 0x6c, 0x22, 0xf7, 0xcd, - 0x04, 0x8c, 0x89, 0x9d, 0xaf, 0xfe, 0x76, 0xb8, 0x9d, 0xbf, 0xa6, 0x3a, 0xc8, 0xad, 0x3e, 0xd5, - 0xe8, 0x90, 0x38, 0x6c, 0x99, 0xb4, 0x77, 0xf4, 0x4c, 0x78, 0x8c, 0x71, 0x6d, 0x22, 0xf7, 0x5d, - 0x8d, 0x0e, 0x8e, 0xb2, 0x96, 0xe9, 0xea, 0xd7, 0x60, 0xda, 0xb2, 0xab, 0x8e, 0x6b, 0x5a, 0x75, - 0xb3, 0x53, 0xaf, 0xfa, 0x1b, 0x04, 0x55, 0xb3, 0x56, 0x43, 0x8e, 0x63, 0xd3, 0x25, 0xc0, 0x93, - 0x72, 0xdc, 0xb2, 0x37, 0x19, 0xb3, 0x5f, 0x1b, 0x0b, 0x8c, 0x55, 0x72, 0xb7, 0xda, 0xcf, 0xdd, - 0x77, 0xc2, 0x70, 0xcb, 0x6c, 0x57, 0x91, 0xe5, 0x76, 0xf6, 0x49, 0xbf, 0x96, 0x32, 0x52, 0x2d, - 0xb3, 0x5d, 0xc1, 0xdf, 0xdf, 0x3a, 0x1f, 0x04, 0xed, 0xf8, 0xaf, 0x2a, 0x8c, 0x04, 0x7b, 0x36, - 0xdc, 0x02, 0xd7, 0x48, 0x7d, 0x56, 0x48, 0xfa, 0xde, 0x7d, 0x60, 0x87, 0x37, 0x5f, 0xc2, 0x85, - 0x3b, 0x3f, 0x44, 0x3b, 0x29, 0x83, 0x22, 0xf1, 0xa2, 0x89, 0x13, 0x16, 0xd1, 0xfe, 0x3c, 0x65, - 0xb0, 0x6f, 0xfa, 0x32, 0x0c, 0x3d, 0xee, 0x10, 0xd9, 0x43, 0x44, 0xf6, 0xc9, 0x83, 0x65, 0x5f, - 0xdd, 0x24, 0xc2, 0x87, 0xaf, 0x6e, 0x56, 0xd7, 0xd6, 0x8d, 0xd5, 0xc2, 0x35, 0x83, 0xc1, 0xf5, - 0x3b, 0x20, 0xd9, 0x34, 0x9f, 0xd9, 0x17, 0x4b, 0x3c, 0x19, 0x8a, 0x6b, 0xf8, 0x3b, 0x20, 0xf9, - 0x14, 0x32, 0x9f, 0x10, 0x0b, 0x2b, 0x19, 0x7a, 0x0b, 0x43, 0xff, 0x34, 0x0c, 0x12, 0x7b, 0xe9, - 0x00, 0xcc, 0x62, 0xda, 0x80, 0x9e, 0x82, 0x64, 0x69, 0xdd, 0xc0, 0xe1, 0xaf, 0xc1, 0x08, 0x1d, - 0xad, 0x6e, 0xac, 0x54, 0x4a, 0x15, 0x2d, 0x91, 0x3b, 0x07, 0x43, 0xd4, 0x08, 0x38, 0x35, 0x3c, - 0x33, 0x68, 0x03, 0xec, 0x2b, 0x93, 0xa1, 0x70, 0xea, 0xf6, 0x6a, 0xb1, 0x62, 0x68, 0x89, 0xa0, - 0x7b, 0x1d, 0x18, 0x09, 0xb6, 0x6b, 0x3f, 0x9b, 0x98, 0xfa, 0xba, 0x02, 0xe9, 0x40, 0xfb, 0x85, - 0x17, 0x7e, 0xb3, 0xd9, 0xb4, 0x9f, 0xaa, 0x9a, 0xcd, 0x86, 0xe9, 0xb0, 0xa0, 0x00, 0x32, 0x54, - 0xc0, 0x23, 0x71, 0x9d, 0xf6, 0x33, 0x51, 0xfe, 0x39, 0x05, 0x34, 0xb9, 0x75, 0x93, 0x14, 0x54, - 0x7e, 0xae, 0x0a, 0x7e, 0x52, 0x81, 0x31, 0xb1, 0x5f, 0x93, 0xd4, 0x3b, 0xf1, 0x73, 0x55, 0xef, - 0x13, 0x0a, 0x8c, 0x0a, 0x5d, 0xda, 0x2f, 0x94, 0x76, 0x1f, 0x57, 0xe1, 0x68, 0x08, 0x4e, 0x2f, - 0xb0, 0x76, 0x96, 0x76, 0xd8, 0x0f, 0xc4, 0x79, 0xd6, 0x3c, 0x5e, 0x2d, 0x37, 0xcc, 0x8e, 0xcb, - 0xba, 0xdf, 0xfb, 0x40, 0x6b, 0xd4, 0x91, 0xe5, 0x36, 0x76, 0x1a, 0xa8, 0xc3, 0x5e, 0xc1, 0x69, - 0x8f, 0x3b, 0xee, 0x8f, 0xd3, 0xb7, 0xf0, 0xfb, 0x41, 0x6f, 0xdb, 0x4e, 0xc3, 0x6d, 0x3c, 0x89, - 0xaa, 0x0d, 0x8b, 0xbf, 0xaf, 0xe3, 0x9e, 0x37, 0x69, 0x68, 0x9c, 0xb2, 0x62, 0xb9, 0x1e, 0xb7, - 0x85, 0x76, 0x4d, 0x89, 0x1b, 0xd7, 0x3e, 0xd5, 0xd0, 0x38, 0xc5, 0xe3, 0x3e, 0x01, 0x23, 0x75, - 0xbb, 0x8b, 0xdb, 0x07, 0xca, 0x87, 0x4b, 0xad, 0x62, 0xa4, 0xe9, 0x98, 0xc7, 0xc2, 0xfa, 0x3b, - 0x7f, 0xa3, 0x60, 0xc4, 0x48, 0xd3, 0x31, 0xca, 0x72, 0x2f, 0x8c, 0x9b, 0xbb, 0xbb, 0x1d, 0x2c, - 0x9c, 0x0b, 0xa2, 0x4d, 0xeb, 0x98, 0x37, 0x4c, 0x18, 0xa7, 0xae, 0x42, 0x8a, 0xdb, 0x01, 0xaf, - 0x66, 0xd8, 0x12, 0xd5, 0x36, 0xdd, 0xae, 0x49, 0xcc, 0x0e, 0x1b, 0x29, 0x8b, 0x13, 0x4f, 0xc0, - 0x48, 0xc3, 0xa9, 0xfa, 0xfb, 0x86, 0x89, 0x99, 0xc4, 0x6c, 0xca, 0x48, 0x37, 0x1c, 0x6f, 0xa3, - 0x28, 0xf7, 0xf9, 0x04, 0x8c, 0x89, 0xfb, 0x9e, 0x7a, 0x19, 0x52, 0x4d, 0xbb, 0x66, 0x92, 0x40, - 0xa0, 0x9b, 0xee, 0xb3, 0x11, 0x5b, 0xa5, 0xf3, 0xd7, 0x18, 0xbf, 0xe1, 0x21, 0xa7, 0xfe, 0x49, - 0x81, 0x14, 0x1f, 0xd6, 0x27, 0x21, 0xd9, 0x36, 0xdd, 0x3d, 0x22, 0x6e, 0xb0, 0x98, 0xd0, 0x14, - 0x83, 0x7c, 0xc7, 0xe3, 0x4e, 0xdb, 0xb4, 0x48, 0x08, 0xb0, 0x71, 0xfc, 0x1d, 0xfb, 0xb5, 0x89, - 0xcc, 0x3a, 0x69, 0x87, 0xed, 0x56, 0x0b, 0x59, 0xae, 0xc3, 0xfd, 0xca, 0xc6, 0x4b, 0x6c, 0x58, - 0x7f, 0x1b, 0x4c, 0xb8, 0x1d, 0xb3, 0xd1, 0x14, 0x78, 0x93, 0x84, 0x57, 0xe3, 0x04, 0x8f, 0x39, - 0x0f, 0x77, 0x70, 0xb9, 0x75, 0xe4, 0x9a, 0xb5, 0x3d, 0x54, 0xf7, 0x41, 0x43, 0x64, 0x53, 0xed, - 0x76, 0xc6, 0x50, 0x66, 0x74, 0x8e, 0xcd, 0x7d, 0x4b, 0x81, 0x09, 0xde, 0xc0, 0xd7, 0x3d, 0x63, - 0xad, 0x02, 0x98, 0x96, 0x65, 0xbb, 0x41, 0x73, 0xf5, 0x86, 0x72, 0x0f, 0x6e, 0xbe, 0xe0, 0x81, - 0x8c, 0x80, 0x80, 0xa9, 0x16, 0x80, 0x4f, 0xe9, 0x6b, 0xb6, 0x69, 0x48, 0xb3, 0x4d, 0x6d, 0x72, - 0x32, 0x42, 0xdf, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0x5f, 0x3f, 0x06, 0x83, 0xd7, 0xd1, 0x6e, 0xc3, - 0x62, 0x5b, 0x6d, 0xf4, 0x0b, 0xdf, 0xc0, 0x4b, 0x7a, 0x1b, 0x78, 0xc5, 0xf7, 0xc0, 0xd1, 0x9a, - 0xdd, 0x92, 0xd5, 0x2d, 0x6a, 0xd2, 0x9b, 0xa7, 0xf3, 0x88, 0xf2, 0x6e, 0xf0, 0xbb, 0xb3, 0xe7, - 0x15, 0xe5, 0xb3, 0x09, 0x75, 0x79, 0xa3, 0xf8, 0xc5, 0xc4, 0xd4, 0x32, 0x85, 0x6e, 0xf0, 0x99, - 0x1a, 0x68, 0xa7, 0x89, 0x6a, 0x58, 0x7b, 0xf8, 0xd1, 0x29, 0x78, 0x60, 0xb7, 0xe1, 0xee, 0x75, - 0xaf, 0xcf, 0xd7, 0xec, 0xd6, 0xe9, 0x5d, 0x7b, 0xd7, 0xf6, 0x0f, 0x83, 0xf0, 0x37, 0xf2, 0x85, - 0x7c, 0x62, 0x07, 0x42, 0xc3, 0xde, 0xe8, 0x54, 0xe4, 0xe9, 0x51, 0x7e, 0x0d, 0x8e, 0x32, 0xe6, - 0x2a, 0xd9, 0x91, 0xa6, 0x7d, 0xb8, 0x7e, 0xe0, 0xae, 0x44, 0xe6, 0xcb, 0xdf, 0x23, 0x2b, 0x9d, - 0x31, 0xc1, 0xa0, 0x98, 0x46, 0x3b, 0xf5, 0xbc, 0x01, 0xb7, 0x09, 0xf2, 0x68, 0x6a, 0xa2, 0x4e, - 0x84, 0xc4, 0x6f, 0x32, 0x89, 0x47, 0x03, 0x12, 0x37, 0x19, 0x34, 0x5f, 0x82, 0xd1, 0xc3, 0xc8, - 0xfa, 0x3b, 0x26, 0x6b, 0x04, 0x05, 0x85, 0x2c, 0xc3, 0x38, 0x11, 0x52, 0xeb, 0x3a, 0xae, 0xdd, - 0x22, 0x75, 0xef, 0x60, 0x31, 0x7f, 0xff, 0x3d, 0x9a, 0x2b, 0x63, 0x18, 0x56, 0xf2, 0x50, 0xf9, - 0x3c, 0x90, 0x4d, 0xf8, 0x3a, 0xaa, 0x35, 0x23, 0x24, 0xdc, 0x60, 0x8a, 0x78, 0xfc, 0xf9, 0x77, - 0xc2, 0x31, 0xfc, 0x99, 0x94, 0xa5, 0xa0, 0x26, 0xd1, 0x7b, 0x30, 0x99, 0x6f, 0xbd, 0x9f, 0xa6, - 0xe3, 0x51, 0x4f, 0x40, 0x40, 0xa7, 0x80, 0x17, 0x77, 0x91, 0xeb, 0xa2, 0x8e, 0x53, 0x35, 0x9b, - 0x61, 0xea, 0x05, 0xde, 0x60, 0x33, 0x1f, 0x7b, 0x55, 0xf4, 0xe2, 0x32, 0x45, 0x16, 0x9a, 0xcd, - 0xfc, 0x36, 0xdc, 0x1e, 0x12, 0x15, 0x31, 0x64, 0x7e, 0x9c, 0xc9, 0x3c, 0xd6, 0x13, 0x19, 0x58, - 0xec, 0x06, 0xf0, 0x71, 0xcf, 0x97, 0x31, 0x64, 0x7e, 0x82, 0xc9, 0xd4, 0x19, 0x96, 0xbb, 0x14, - 0x4b, 0xbc, 0x0a, 0x13, 0x4f, 0xa2, 0xce, 0x75, 0xdb, 0x61, 0x1b, 0x07, 0x31, 0xc4, 0x7d, 0x92, - 0x89, 0x1b, 0x67, 0x40, 0xb2, 0x8d, 0x80, 0x65, 0x5d, 0x82, 0xd4, 0x8e, 0x59, 0x43, 0x31, 0x44, - 0x7c, 0x8a, 0x89, 0x38, 0x82, 0xf9, 0x31, 0xb4, 0x00, 0x23, 0xbb, 0x36, 0x5b, 0x99, 0xa2, 0xe1, - 0xcf, 0x31, 0x78, 0x9a, 0x63, 0x98, 0x88, 0xb6, 0xdd, 0xee, 0x36, 0xf1, 0xb2, 0x15, 0x2d, 0xe2, - 0xd3, 0x5c, 0x04, 0xc7, 0x30, 0x11, 0x87, 0x30, 0xeb, 0xf3, 0x5c, 0x84, 0x13, 0xb0, 0xe7, 0xc3, - 0x90, 0xb6, 0xad, 0xe6, 0xbe, 0x6d, 0xc5, 0x51, 0xe2, 0x33, 0x4c, 0x02, 0x30, 0x08, 0x16, 0x70, - 0x19, 0x86, 0xe3, 0x3a, 0xe2, 0x73, 0xaf, 0xf2, 0xf4, 0xe0, 0x1e, 0x58, 0x86, 0x71, 0x5e, 0xa0, - 0x1a, 0xb6, 0x15, 0x43, 0xc4, 0x1f, 0x31, 0x11, 0x63, 0x01, 0x18, 0x9b, 0x86, 0x8b, 0x1c, 0x77, - 0x17, 0xc5, 0x11, 0xf2, 0x79, 0x3e, 0x0d, 0x06, 0x61, 0xa6, 0xbc, 0x8e, 0xac, 0xda, 0x5e, 0x3c, - 0x09, 0x2f, 0x70, 0x53, 0x72, 0x0c, 0x16, 0x51, 0x82, 0xd1, 0x96, 0xd9, 0x71, 0xf6, 0xcc, 0x66, - 0x2c, 0x77, 0x7c, 0x81, 0xc9, 0x18, 0xf1, 0x40, 0xcc, 0x22, 0x5d, 0xeb, 0x30, 0x62, 0xbe, 0xc8, - 0x2d, 0x12, 0x80, 0xb1, 0xd4, 0x73, 0x5c, 0xb2, 0x37, 0x73, 0x18, 0x69, 0x7f, 0xcc, 0x53, 0x8f, - 0x62, 0x57, 0x83, 0x12, 0x2f, 0xc3, 0xb0, 0xd3, 0x78, 0x26, 0x96, 0x98, 0x3f, 0xe1, 0x9e, 0x26, - 0x00, 0x0c, 0x7e, 0x0c, 0xee, 0x08, 0x5d, 0x26, 0x62, 0x08, 0xfb, 0x53, 0x26, 0x6c, 0x32, 0x64, - 0xa9, 0x60, 0x25, 0xe1, 0xb0, 0x22, 0xff, 0x8c, 0x97, 0x04, 0x24, 0xc9, 0xda, 0xc0, 0x9d, 0xbd, - 0x63, 0xee, 0x1c, 0xce, 0x6a, 0x7f, 0xce, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0xb6, 0x60, 0x92, 0x49, - 0x3c, 0x9c, 0x5f, 0xbf, 0xc4, 0x0b, 0x2b, 0x45, 0x6f, 0x8b, 0xde, 0x7d, 0x0f, 0x4c, 0x79, 0xe6, - 0xe4, 0x4d, 0xa9, 0x53, 0x6d, 0x99, 0xed, 0x18, 0x92, 0xbf, 0xcc, 0x24, 0xf3, 0x8a, 0xef, 0x75, - 0xb5, 0xce, 0xaa, 0xd9, 0xc6, 0xc2, 0x1f, 0x85, 0x0c, 0x17, 0xde, 0xb5, 0x3a, 0xa8, 0x66, 0xef, - 0x5a, 0x8d, 0x67, 0x50, 0x3d, 0x86, 0xe8, 0xbf, 0x90, 0x5c, 0xb5, 0x1d, 0x80, 0x63, 0xc9, 0x2b, - 0xa0, 0x79, 0xbd, 0x4a, 0xb5, 0xd1, 0x6a, 0xdb, 0x1d, 0x37, 0x42, 0xe2, 0x5f, 0x72, 0x4f, 0x79, - 0xb8, 0x15, 0x02, 0xcb, 0x57, 0x60, 0x8c, 0x7c, 0x8d, 0x1b, 0x92, 0x5f, 0x61, 0x82, 0x46, 0x7d, - 0x14, 0x2b, 0x1c, 0x35, 0xbb, 0xd5, 0x36, 0x3b, 0x71, 0xea, 0xdf, 0x5f, 0xf1, 0xc2, 0xc1, 0x20, - 0xac, 0x70, 0xb8, 0xfb, 0x6d, 0x84, 0x57, 0xfb, 0x18, 0x12, 0xbe, 0xca, 0x0b, 0x07, 0xc7, 0x30, - 0x11, 0xbc, 0x61, 0x88, 0x21, 0xe2, 0xaf, 0xb9, 0x08, 0x8e, 0xc1, 0x22, 0xde, 0xe1, 0x2f, 0xb4, - 0x1d, 0xb4, 0xdb, 0x70, 0xdc, 0x0e, 0x6d, 0x85, 0x0f, 0x16, 0xf5, 0xb5, 0x57, 0xc5, 0x26, 0xcc, - 0x08, 0x40, 0xf3, 0x57, 0x61, 0x5c, 0x6a, 0x31, 0xf4, 0xa8, 0x13, 0xfd, 0xcc, 0x7b, 0x5f, 0x63, - 0xc5, 0x48, 0xec, 0x30, 0xf2, 0xd7, 0xb0, 0xdf, 0xc5, 0x3e, 0x20, 0x5a, 0xd8, 0xfb, 0x5f, 0xf3, - 0x5c, 0x2f, 0xb4, 0x01, 0xf9, 0x2b, 0x30, 0x2a, 0xf4, 0x00, 0xd1, 0xa2, 0x7e, 0x85, 0x89, 0x1a, - 0x09, 0xb6, 0x00, 0xf9, 0x73, 0x90, 0xc4, 0xeb, 0x79, 0x34, 0xfc, 0x57, 0x19, 0x9c, 0xb0, 0xe7, - 0x1f, 0x84, 0x14, 0x5f, 0xc7, 0xa3, 0xa1, 0x1f, 0x60, 0x50, 0x0f, 0x82, 0xe1, 0x7c, 0x0d, 0x8f, - 0x86, 0xff, 0x1a, 0x87, 0x73, 0x08, 0x86, 0xc7, 0x37, 0xe1, 0x8b, 0x1f, 0x4e, 0xb2, 0x3a, 0xcc, - 0x6d, 0x77, 0x19, 0x8e, 0xb0, 0xc5, 0x3b, 0x1a, 0xfd, 0x21, 0xf6, 0x70, 0x8e, 0xc8, 0x5f, 0x80, - 0xc1, 0x98, 0x06, 0xff, 0x0d, 0x06, 0xa5, 0xfc, 0xf9, 0x12, 0xa4, 0x03, 0x0b, 0x76, 0x34, 0xfc, - 0x37, 0x19, 0x3c, 0x88, 0xc2, 0xaa, 0xb3, 0x05, 0x3b, 0x5a, 0xc0, 0x6f, 0x71, 0xd5, 0x19, 0x02, - 0x9b, 0x8d, 0xaf, 0xd5, 0xd1, 0xe8, 0xdf, 0xe6, 0x56, 0xe7, 0x90, 0xfc, 0xc3, 0x30, 0xec, 0xd5, - 0xdf, 0x68, 0xfc, 0xef, 0x30, 0xbc, 0x8f, 0xc1, 0x16, 0x08, 0xd4, 0xff, 0x68, 0x11, 0xbf, 0xcb, - 0x2d, 0x10, 0x40, 0xe1, 0x34, 0x92, 0xd7, 0xf4, 0x68, 0x49, 0x1f, 0xe1, 0x69, 0x24, 0x2d, 0xe9, - 0xd8, 0x9b, 0xa4, 0x0c, 0x46, 0x8b, 0xf8, 0x3d, 0xee, 0x4d, 0xc2, 0x8f, 0xd5, 0x90, 0x17, 0xc9, - 0x68, 0x19, 0x7f, 0xc0, 0xd5, 0x90, 0xd6, 0xc8, 0xfc, 0x06, 0xe8, 0xbd, 0x0b, 0x64, 0xb4, 0xbc, - 0x8f, 0x32, 0x79, 0x13, 0x3d, 0xeb, 0x63, 0xfe, 0x5d, 0x30, 0x19, 0xbe, 0x38, 0x46, 0x4b, 0xfd, - 0xd8, 0x6b, 0xd2, 0xeb, 0x4c, 0x70, 0x6d, 0xcc, 0x6f, 0xf9, 0x55, 0x36, 0xb8, 0x30, 0x46, 0x8b, - 0xfd, 0xf8, 0x6b, 0x62, 0xa1, 0x0d, 0xae, 0x8b, 0xf9, 0x02, 0x80, 0xbf, 0x26, 0x45, 0xcb, 0xfa, - 0x24, 0x93, 0x15, 0x00, 0xe1, 0xd4, 0x60, 0x4b, 0x52, 0x34, 0xfe, 0x53, 0x3c, 0x35, 0x18, 0x02, - 0xa7, 0x06, 0x5f, 0x8d, 0xa2, 0xd1, 0xcf, 0xf1, 0xd4, 0xe0, 0x90, 0xfc, 0x65, 0x48, 0x59, 0xdd, - 0x66, 0x13, 0xc7, 0x96, 0x7e, 0xf0, 0x25, 0x9b, 0xcc, 0xbf, 0xbf, 0xce, 0xc0, 0x1c, 0x90, 0x3f, - 0x07, 0x83, 0xa8, 0x75, 0x1d, 0xd5, 0xa3, 0x90, 0xff, 0xf1, 0x3a, 0xaf, 0x27, 0x98, 0x3b, 0xff, - 0x30, 0x00, 0x7d, 0x99, 0x26, 0x67, 0x2c, 0x11, 0xd8, 0xff, 0x7c, 0x9d, 0x9d, 0xdf, 0xfb, 0x10, - 0x5f, 0x00, 0xbd, 0x0d, 0x70, 0xb0, 0x80, 0x57, 0x45, 0x01, 0xe4, 0x05, 0xfc, 0x12, 0x1c, 0x79, - 0xdc, 0xb1, 0x2d, 0xd7, 0xdc, 0x8d, 0x42, 0xff, 0x17, 0x43, 0x73, 0x7e, 0x6c, 0xb0, 0x96, 0xdd, - 0x41, 0xae, 0xb9, 0xeb, 0x44, 0x61, 0xff, 0x9b, 0x61, 0x3d, 0x00, 0x06, 0xd7, 0x4c, 0xc7, 0x8d, - 0x33, 0xef, 0xff, 0xe1, 0x60, 0x0e, 0xc0, 0x4a, 0xe3, 0xcf, 0x4f, 0xa0, 0xfd, 0x28, 0xec, 0x0f, - 0xb8, 0xd2, 0x8c, 0x3f, 0xff, 0x20, 0x0c, 0xe3, 0x8f, 0xf4, 0x4e, 0x4b, 0x04, 0xf8, 0x87, 0x0c, - 0xec, 0x23, 0xf0, 0x93, 0x1d, 0xb7, 0xee, 0x36, 0xa2, 0x8d, 0xfd, 0xbf, 0xcc, 0xd3, 0x9c, 0x3f, - 0x5f, 0x80, 0xb4, 0xe3, 0xd6, 0xeb, 0x5d, 0xd6, 0xd1, 0x44, 0xc0, 0x7f, 0xf4, 0xba, 0xf7, 0x92, - 0xeb, 0x61, 0x8a, 0x27, 0xc2, 0xf7, 0xeb, 0x60, 0xd9, 0x5e, 0xb6, 0xe9, 0x4e, 0x1d, 0xfc, 0x63, - 0x13, 0xb2, 0x35, 0xbb, 0x75, 0xdd, 0x76, 0x4e, 0x7b, 0x85, 0xe4, 0xb4, 0xbb, 0x87, 0xf0, 0xfa, - 0xc1, 0xb6, 0xd9, 0x92, 0xf8, 0xf3, 0xd4, 0xe1, 0xf6, 0xe6, 0xc8, 0xa1, 0xe5, 0x5a, 0x03, 0xab, - 0xb7, 0x46, 0x36, 0xbf, 0xf5, 0xe3, 0x30, 0x44, 0x14, 0x3e, 0x43, 0xce, 0x66, 0x94, 0x62, 0xf2, - 0xc6, 0xcb, 0xd3, 0x03, 0x06, 0x1b, 0xf3, 0xa8, 0x8b, 0x64, 0x77, 0x32, 0x21, 0x50, 0x17, 0x3d, - 0xea, 0x59, 0xba, 0x41, 0x29, 0x50, 0xcf, 0x7a, 0xd4, 0x25, 0xb2, 0x55, 0xa9, 0x0a, 0xd4, 0x25, - 0x8f, 0x7a, 0x8e, 0x6c, 0xc7, 0x8f, 0x0a, 0xd4, 0x73, 0x1e, 0xf5, 0x3c, 0xd9, 0x84, 0x4f, 0x0a, - 0xd4, 0xf3, 0x1e, 0xf5, 0x02, 0xd9, 0x7f, 0x9f, 0x10, 0xa8, 0x17, 0x3c, 0xea, 0x45, 0xb2, 0xef, - 0xae, 0x0b, 0xd4, 0x8b, 0x1e, 0xf5, 0x12, 0xb9, 0x64, 0x71, 0x44, 0xa0, 0x5e, 0xd2, 0xb3, 0x70, - 0x84, 0xce, 0x7c, 0x81, 0x9c, 0x6f, 0x8e, 0x33, 0x32, 0x1f, 0xf4, 0xe9, 0x67, 0xc8, 0x85, 0x8a, - 0x21, 0x91, 0x7e, 0xc6, 0xa7, 0x2f, 0x92, 0xdb, 0xc5, 0x9a, 0x48, 0x5f, 0xf4, 0xe9, 0x67, 0x33, - 0xa3, 0x38, 0x2e, 0x44, 0xfa, 0x59, 0x9f, 0xbe, 0x94, 0x19, 0xc3, 0x31, 0x2b, 0xd2, 0x97, 0x7c, - 0xfa, 0xb9, 0xcc, 0xf8, 0x8c, 0x32, 0x3b, 0x22, 0xd2, 0xcf, 0xe5, 0xde, 0x47, 0xdc, 0x6b, 0xf9, - 0xee, 0x9d, 0x14, 0xdd, 0xeb, 0x39, 0x76, 0x52, 0x74, 0xac, 0xe7, 0xd2, 0x49, 0xd1, 0xa5, 0x9e, - 0x33, 0x27, 0x45, 0x67, 0x7a, 0x6e, 0x9c, 0x14, 0xdd, 0xe8, 0x39, 0x70, 0x52, 0x74, 0xa0, 0xe7, - 0xba, 0x49, 0xd1, 0x75, 0x9e, 0xd3, 0x26, 0x45, 0xa7, 0x79, 0xee, 0x9a, 0x14, 0xdd, 0xe5, 0x39, - 0x2a, 0x23, 0x39, 0xca, 0x77, 0x51, 0x46, 0x72, 0x91, 0xef, 0x9c, 0x8c, 0xe4, 0x1c, 0xdf, 0x2d, - 0x19, 0xc9, 0x2d, 0xbe, 0x43, 0x32, 0x92, 0x43, 0x7c, 0x57, 0x64, 0x24, 0x57, 0xf8, 0x4e, 0x60, - 0x39, 0x66, 0xa0, 0x76, 0x48, 0x8e, 0xa9, 0x07, 0xe6, 0x98, 0x7a, 0x60, 0x8e, 0xa9, 0x07, 0xe6, - 0x98, 0x7a, 0x60, 0x8e, 0xa9, 0x07, 0xe6, 0x98, 0x7a, 0x60, 0x8e, 0xa9, 0x07, 0xe6, 0x98, 0x7a, - 0x60, 0x8e, 0xa9, 0x07, 0xe7, 0x98, 0x1a, 0x91, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x11, 0x39, 0xa6, - 0x46, 0xe4, 0x98, 0x1a, 0x91, 0x63, 0x6a, 0xdf, 0x1c, 0xf3, 0xdd, 0x3b, 0x29, 0xba, 0x37, 0x34, - 0xc7, 0xd4, 0x3e, 0x39, 0xa6, 0xf6, 0xc9, 0x31, 0xb5, 0x4f, 0x8e, 0xa9, 0x7d, 0x72, 0x4c, 0xed, - 0x93, 0x63, 0x6a, 0x9f, 0x1c, 0x53, 0xfb, 0xe4, 0x98, 0xda, 0x2f, 0xc7, 0xd4, 0xbe, 0x39, 0xa6, - 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0x30, 0xc7, - 0xfe, 0x46, 0x05, 0x9d, 0xe6, 0xd8, 0x06, 0xb9, 0x21, 0xc3, 0x5c, 0x91, 0x95, 0x32, 0x6d, 0x08, - 0xbb, 0x4e, 0xf3, 0x5d, 0x92, 0x95, 0x72, 0x4d, 0xa4, 0x2f, 0x7a, 0x74, 0x9e, 0x6d, 0x22, 0xfd, - 0xac, 0x47, 0xe7, 0xf9, 0x26, 0xd2, 0x97, 0x3c, 0x3a, 0xcf, 0x38, 0x91, 0x7e, 0xce, 0xa3, 0xf3, - 0x9c, 0x13, 0xe9, 0xe7, 0x3d, 0x3a, 0xcf, 0x3a, 0x91, 0x7e, 0xc1, 0xa3, 0xf3, 0xbc, 0x13, 0xe9, - 0x17, 0x3d, 0x3a, 0xcf, 0x3c, 0x91, 0x7e, 0x49, 0x9f, 0x91, 0x73, 0x8f, 0x33, 0x78, 0xae, 0x9d, - 0x91, 0xb3, 0x4f, 0xe2, 0x38, 0xe3, 0x73, 0xf0, 0xfc, 0x93, 0x38, 0x16, 0x7d, 0x0e, 0x9e, 0x81, - 0x12, 0xc7, 0xd9, 0xdc, 0x07, 0x89, 0xfb, 0x2c, 0xd9, 0x7d, 0x53, 0x92, 0xfb, 0x12, 0x01, 0xd7, - 0x4d, 0x49, 0xae, 0x4b, 0x04, 0xdc, 0x36, 0x25, 0xb9, 0x2d, 0x11, 0x70, 0xd9, 0x94, 0xe4, 0xb2, - 0x44, 0xc0, 0x5d, 0x53, 0x92, 0xbb, 0x12, 0x01, 0x57, 0x4d, 0x49, 0xae, 0x4a, 0x04, 0xdc, 0x34, - 0x25, 0xb9, 0x29, 0x11, 0x70, 0xd1, 0x94, 0xe4, 0xa2, 0x44, 0xc0, 0x3d, 0x53, 0x92, 0x7b, 0x12, - 0x01, 0xd7, 0x1c, 0x97, 0x5d, 0x93, 0x08, 0xba, 0xe5, 0xb8, 0xec, 0x96, 0x44, 0xd0, 0x25, 0xc7, - 0x65, 0x97, 0x24, 0x82, 0xee, 0x38, 0x2e, 0xbb, 0x23, 0x11, 0x74, 0xc5, 0x4f, 0x13, 0xbc, 0x23, - 0xdc, 0x74, 0x3b, 0xdd, 0x9a, 0x7b, 0x4b, 0x1d, 0xe1, 0x82, 0xd0, 0x3e, 0xa4, 0x17, 0xf5, 0x79, - 0xd2, 0xb0, 0x06, 0x3b, 0x4e, 0x69, 0x05, 0x5b, 0x10, 0x1a, 0x8b, 0x00, 0xc2, 0x0a, 0x47, 0x2c, - 0xdd, 0x52, 0x6f, 0xb8, 0x20, 0xb4, 0x19, 0xd1, 0xfa, 0x5d, 0x7c, 0xcb, 0x3b, 0xb6, 0x17, 0x13, - 0xbc, 0x63, 0x63, 0xe6, 0x3f, 0x6c, 0xc7, 0x36, 0x17, 0x6d, 0x72, 0xcf, 0xd8, 0x73, 0xd1, 0xc6, - 0xee, 0x59, 0x75, 0xe2, 0x76, 0x70, 0x73, 0xd1, 0xa6, 0xf5, 0x8c, 0xfa, 0xe6, 0xf6, 0x5b, 0x2c, - 0x82, 0x0d, 0xd4, 0x0e, 0x89, 0xe0, 0xc3, 0xf6, 0x5b, 0x0b, 0x42, 0x29, 0x39, 0x6c, 0x04, 0xab, - 0x87, 0x8e, 0xe0, 0xc3, 0x76, 0x5e, 0x0b, 0x42, 0x79, 0x39, 0x74, 0x04, 0xbf, 0x05, 0xfd, 0x10, - 0x8b, 0x60, 0xdf, 0xfc, 0x87, 0xed, 0x87, 0xe6, 0xa2, 0x4d, 0x1e, 0x1a, 0xc1, 0xea, 0x21, 0x22, - 0x38, 0x4e, 0x7f, 0x34, 0x17, 0x6d, 0xda, 0xf0, 0x08, 0xbe, 0xe5, 0x6e, 0xe6, 0xd3, 0x0a, 0x4c, - 0xac, 0x35, 0xea, 0x95, 0xd6, 0x75, 0x54, 0xaf, 0xa3, 0x3a, 0xb3, 0xe3, 0x82, 0x50, 0x09, 0xfa, - 0xb8, 0xfa, 0xa5, 0x97, 0xa7, 0x7d, 0x0b, 0x9f, 0x83, 0x14, 0xb5, 0xe9, 0xc2, 0x42, 0xe6, 0x86, - 0x12, 0x51, 0xe1, 0x3c, 0x56, 0xfd, 0x04, 0x87, 0x9d, 0x59, 0xc8, 0xfc, 0xb3, 0x12, 0xa8, 0x72, - 0xde, 0x70, 0xee, 0x23, 0x44, 0x43, 0xeb, 0x96, 0x35, 0x3c, 0x1d, 0x4b, 0xc3, 0x80, 0x6e, 0x77, - 0xf6, 0xe8, 0x16, 0xd0, 0xaa, 0x0b, 0xe3, 0x6b, 0x8d, 0xfa, 0x1a, 0xf9, 0xbb, 0xd6, 0x38, 0x2a, - 0x51, 0x1e, 0xa9, 0x1e, 0x2c, 0x08, 0x61, 0x19, 0x44, 0x78, 0x21, 0x2d, 0xd6, 0x88, 0x5c, 0x03, - 0x3f, 0xd6, 0x12, 0x1e, 0x3b, 0xd7, 0xef, 0xb1, 0x7e, 0x65, 0xf7, 0x1e, 0x38, 0xd7, 0xef, 0x81, - 0x7e, 0x0e, 0x79, 0x8f, 0x7a, 0x9a, 0x2f, 0xce, 0xf4, 0xb2, 0x8d, 0x7e, 0x1c, 0x12, 0x2b, 0xf4, - 0x1a, 0xed, 0x48, 0x71, 0x04, 0x2b, 0xf5, 0xed, 0x97, 0xa7, 0x93, 0xdb, 0xdd, 0x46, 0xdd, 0x48, - 0xac, 0xd4, 0xf5, 0xab, 0x30, 0xf8, 0x4e, 0xf6, 0xd7, 0x61, 0x98, 0x61, 0x89, 0x31, 0xdc, 0xdf, - 0x77, 0x8f, 0x08, 0x3f, 0xf8, 0x34, 0xdd, 0x46, 0x9c, 0xdf, 0x6e, 0x58, 0xee, 0x99, 0xc5, 0x8b, - 0x06, 0x15, 0x91, 0xfb, 0xff, 0x00, 0xf4, 0x99, 0x65, 0xd3, 0xd9, 0xd3, 0xd7, 0xb8, 0x64, 0xfa, - 0xe8, 0x8b, 0xdf, 0x7e, 0x79, 0x7a, 0x29, 0x8e, 0xd4, 0x07, 0xea, 0xa6, 0xb3, 0xf7, 0x80, 0xbb, - 0xdf, 0x46, 0xf3, 0xc5, 0x7d, 0x17, 0x39, 0x5c, 0x7a, 0x9b, 0xaf, 0x7a, 0x6c, 0x5e, 0x99, 0xc0, - 0xbc, 0x52, 0xc2, 0x9c, 0xae, 0x88, 0x73, 0x5a, 0x78, 0xa3, 0xf3, 0x79, 0x9a, 0x2f, 0x12, 0x92, - 0x25, 0xd5, 0x28, 0x4b, 0xaa, 0xb7, 0x6a, 0xc9, 0x36, 0xaf, 0x8f, 0xd2, 0x5c, 0xd5, 0x83, 0xe6, - 0xaa, 0xde, 0xca, 0x5c, 0x7f, 0x4c, 0xb3, 0xd5, 0xcb, 0xa7, 0x6d, 0x8b, 0xde, 0x43, 0xfc, 0xc5, - 0xda, 0x0b, 0x7a, 0x53, 0xbb, 0x80, 0x7c, 0xf2, 0xc6, 0xf3, 0xd3, 0x4a, 0xee, 0xd3, 0x09, 0x3e, - 0x73, 0x9a, 0x48, 0x6f, 0x6c, 0xe6, 0xbf, 0x28, 0x3d, 0xd5, 0x5b, 0x61, 0xa1, 0xe7, 0x14, 0x98, - 0xec, 0xa9, 0xe4, 0xd4, 0x4c, 0x6f, 0x6e, 0x39, 0xb7, 0x0e, 0x5b, 0xce, 0x99, 0x82, 0x5f, 0x51, - 0xe0, 0x98, 0x54, 0x5e, 0xa9, 0x7a, 0xa7, 0x25, 0xf5, 0x6e, 0xef, 0x7d, 0x12, 0x61, 0x0c, 0x68, - 0x17, 0x74, 0xaf, 0x04, 0x08, 0x48, 0xf6, 0xfc, 0xbe, 0x24, 0xf9, 0xfd, 0xb8, 0x07, 0x08, 0x31, - 0x17, 0x8f, 0x00, 0xa6, 0xb6, 0x0d, 0xc9, 0xad, 0x0e, 0x42, 0x7a, 0x16, 0x12, 0xeb, 0x1d, 0xa6, - 0xe1, 0x18, 0xc5, 0xaf, 0x77, 0x8a, 0x1d, 0xd3, 0xaa, 0xed, 0x19, 0x89, 0xf5, 0x8e, 0x7e, 0x02, - 0xd4, 0x02, 0xfb, 0xfb, 0xfb, 0xf4, 0xe2, 0x38, 0x65, 0x28, 0x58, 0x75, 0xc6, 0x81, 0x69, 0x7a, - 0x16, 0x92, 0xd7, 0x90, 0xb9, 0xc3, 0x94, 0x00, 0xca, 0x83, 0x47, 0x0c, 0x32, 0xce, 0x1e, 0xf8, - 0x28, 0xa4, 0xb8, 0x60, 0xfd, 0x24, 0x46, 0xec, 0xb8, 0xec, 0xb1, 0x0c, 0x81, 0xd5, 0x61, 0x2b, - 0x17, 0xa1, 0xea, 0xa7, 0x60, 0xd0, 0x68, 0xec, 0xee, 0xb9, 0xec, 0xe1, 0xbd, 0x6c, 0x94, 0x9c, - 0x7b, 0x0c, 0x86, 0x3d, 0x8d, 0xde, 0x64, 0xd1, 0x65, 0x3a, 0x35, 0x7d, 0x2a, 0xb8, 0x9e, 0xf0, - 0x7d, 0x4b, 0x3a, 0xa4, 0xcf, 0x40, 0x6a, 0xd3, 0xed, 0xf8, 0x45, 0x9f, 0x77, 0xa4, 0xde, 0x68, - 0xee, 0x7d, 0x0a, 0xa4, 0xca, 0x08, 0xb5, 0x89, 0xc1, 0xef, 0x81, 0x64, 0xd9, 0x7e, 0xca, 0x62, - 0x0a, 0x4e, 0x30, 0x8b, 0x62, 0x32, 0xb3, 0x29, 0x21, 0xeb, 0xf7, 0x04, 0xed, 0x7e, 0xd4, 0xb3, - 0x7b, 0x80, 0x8f, 0xd8, 0x3e, 0x27, 0xd8, 0x9e, 0x39, 0x10, 0x33, 0xf5, 0xd8, 0xff, 0x02, 0xa4, - 0x03, 0x4f, 0xd1, 0x67, 0x99, 0x1a, 0x09, 0x19, 0x18, 0xb4, 0x15, 0xe6, 0xc8, 0x21, 0x18, 0x15, - 0x1e, 0x8c, 0xa1, 0x01, 0x13, 0xf7, 0x81, 0x12, 0x33, 0xcf, 0x89, 0x66, 0x0e, 0x67, 0x65, 0xa6, - 0x5e, 0xa0, 0x36, 0x22, 0xe6, 0x3e, 0x49, 0x83, 0xb3, 0xbf, 0x13, 0xf1, 0xe7, 0xdc, 0x20, 0xa8, - 0x6b, 0x8d, 0x66, 0xee, 0x41, 0x00, 0x9a, 0xf2, 0x15, 0xab, 0xdb, 0x92, 0xb2, 0x6e, 0x8c, 0x1b, - 0x78, 0x6b, 0x0f, 0x6d, 0x21, 0x87, 0xb0, 0x88, 0xfd, 0x14, 0x2e, 0x30, 0x40, 0x53, 0x8c, 0xe0, - 0xef, 0x8b, 0xc4, 0x87, 0x76, 0x62, 0x98, 0x35, 0x43, 0x59, 0x1f, 0x43, 0x6e, 0xc1, 0xb2, 0xdd, - 0x3d, 0xd4, 0x91, 0x10, 0x8b, 0xfa, 0x59, 0x21, 0x61, 0xc7, 0x16, 0xef, 0xf4, 0x10, 0x7d, 0x41, - 0x67, 0x73, 0x5f, 0x22, 0x0a, 0xe2, 0x56, 0xa0, 0x67, 0x82, 0x6a, 0x8c, 0x09, 0xea, 0xe7, 0x85, - 0xfe, 0xed, 0x00, 0x35, 0xa5, 0x57, 0xcb, 0x4b, 0xc2, 0x7b, 0xce, 0xc1, 0xca, 0x8a, 0xef, 0x98, - 0xdc, 0xa6, 0x5c, 0xe5, 0xfb, 0x22, 0x55, 0xee, 0xd3, 0xdd, 0x1e, 0xd6, 0xa6, 0x6a, 0x5c, 0x9b, - 0x7e, 0xdd, 0xeb, 0x38, 0xe8, 0x2f, 0x19, 0x90, 0x1f, 0xce, 0xd0, 0xef, 0x8f, 0xf4, 0x7d, 0x5e, - 0x29, 0x79, 0xaa, 0x2e, 0xc5, 0x75, 0x7f, 0x3e, 0x51, 0x2c, 0x7a, 0xea, 0x5e, 0x38, 0x44, 0x08, - 0xe4, 0x13, 0xa5, 0x92, 0x57, 0xb6, 0x53, 0x1f, 0x7c, 0x7e, 0x5a, 0x79, 0xe1, 0xf9, 0xe9, 0x81, - 0xdc, 0x17, 0x14, 0x98, 0x60, 0x9c, 0x81, 0xc0, 0x7d, 0x40, 0x52, 0xfe, 0x36, 0x5e, 0x33, 0xc2, - 0x2c, 0xf0, 0x33, 0x0b, 0xde, 0x6f, 0x2a, 0x90, 0xe9, 0xd1, 0x95, 0xdb, 0x7b, 0x21, 0x96, 0xca, - 0x79, 0xa5, 0xf2, 0xf3, 0xb7, 0xf9, 0x63, 0x30, 0xb8, 0xd5, 0x68, 0xa1, 0x0e, 0x5e, 0x09, 0xf0, - 0x07, 0xaa, 0x32, 0x3f, 0xcc, 0xa1, 0x43, 0x9c, 0x46, 0x95, 0x13, 0x68, 0x8b, 0x7a, 0x06, 0x92, - 0x65, 0xd3, 0x35, 0x89, 0x06, 0x23, 0x5e, 0x7d, 0x35, 0x5d, 0x33, 0x77, 0x16, 0x46, 0x56, 0xf7, - 0xc9, 0x4d, 0x99, 0x3a, 0xb9, 0x05, 0x22, 0x76, 0x7f, 0xbc, 0x5f, 0x3d, 0x33, 0x37, 0x98, 0xaa, - 0x6b, 0x37, 0x94, 0x7c, 0x92, 0xe8, 0xf3, 0x24, 0x8c, 0xad, 0x63, 0xb5, 0x09, 0x4e, 0x80, 0xd1, - 0xa7, 0xab, 0xde, 0xe4, 0xa5, 0xa6, 0x4c, 0xf5, 0x9b, 0xb2, 0x19, 0x50, 0x56, 0xc5, 0xd6, 0x29, - 0xa8, 0x87, 0xa1, 0xac, 0xce, 0x25, 0x53, 0x63, 0xda, 0xc4, 0x5c, 0x32, 0x05, 0xda, 0x28, 0x7b, - 0xee, 0x3f, 0xa8, 0xa0, 0xd1, 0x56, 0xa7, 0x8c, 0x76, 0x1a, 0x56, 0xc3, 0xed, 0xed, 0x57, 0x3d, - 0x8d, 0xf5, 0x87, 0x61, 0x18, 0x9b, 0xf4, 0x0a, 0xfb, 0xfd, 0x29, 0x6c, 0xfa, 0x13, 0xac, 0x45, - 0x91, 0x44, 0xb0, 0x01, 0x12, 0x3a, 0x3e, 0x46, 0xbf, 0x02, 0xea, 0xda, 0xda, 0x2a, 0x5b, 0xdc, - 0x96, 0x0e, 0x84, 0xb2, 0x8b, 0x36, 0xec, 0x1b, 0x1b, 0x73, 0x76, 0x0d, 0x2c, 0x40, 0x5f, 0x82, - 0xc4, 0xda, 0x2a, 0x6b, 0x78, 0x4f, 0xc6, 0x11, 0x63, 0x24, 0xd6, 0x56, 0xa7, 0xfe, 0x56, 0x81, - 0x51, 0x61, 0x54, 0xcf, 0xc1, 0x08, 0x1d, 0x08, 0x4c, 0x77, 0xc8, 0x10, 0xc6, 0xb8, 0xce, 0x89, - 0x5b, 0xd4, 0x79, 0xaa, 0x00, 0xe3, 0xd2, 0xb8, 0x3e, 0x0f, 0x7a, 0x70, 0x88, 0x29, 0x41, 0x7f, - 0xbb, 0x27, 0x84, 0x92, 0xbb, 0x0b, 0xc0, 0xb7, 0xab, 0xf7, 0x93, 0x33, 0x6b, 0x95, 0xcd, 0xad, - 0x4a, 0x59, 0x53, 0x72, 0x5f, 0x55, 0x20, 0xcd, 0xda, 0xd6, 0x9a, 0xdd, 0x46, 0x7a, 0x11, 0x94, - 0x02, 0x8b, 0x87, 0x37, 0xa6, 0xb7, 0x52, 0xd0, 0x4f, 0x83, 0x52, 0x8c, 0xef, 0x6a, 0xa5, 0xa8, - 0x2f, 0x82, 0x52, 0x62, 0x0e, 0x8e, 0xe7, 0x19, 0xa5, 0x94, 0xfb, 0xa1, 0x0a, 0x47, 0x83, 0x6d, - 0x34, 0xaf, 0x27, 0x27, 0xc4, 0xf7, 0xa6, 0xfc, 0xf0, 0x99, 0xc5, 0xb3, 0x4b, 0xf3, 0xf8, 0x1f, - 0x2f, 0x24, 0x4f, 0x88, 0xaf, 0x50, 0xbd, 0x2c, 0x3d, 0xd7, 0x44, 0xf2, 0xc9, 0x00, 0xb5, 0xe7, - 0x9a, 0x88, 0x40, 0xed, 0xb9, 0x26, 0x22, 0x50, 0x7b, 0xae, 0x89, 0x08, 0xd4, 0x9e, 0xa3, 0x00, - 0x81, 0xda, 0x73, 0x4d, 0x44, 0xa0, 0xf6, 0x5c, 0x13, 0x11, 0xa8, 0xbd, 0xd7, 0x44, 0x18, 0xb9, - 0xef, 0x35, 0x11, 0x91, 0xde, 0x7b, 0x4d, 0x44, 0xa4, 0xf7, 0x5e, 0x13, 0xc9, 0x27, 0xdd, 0x4e, - 0x17, 0xf5, 0x3f, 0x74, 0x10, 0xf1, 0x07, 0xbd, 0x03, 0xfa, 0x05, 0x78, 0x1d, 0xc6, 0xe9, 0x7e, - 0x44, 0xc9, 0xb6, 0x5c, 0xb3, 0x61, 0xa1, 0x8e, 0xfe, 0x76, 0x18, 0xa1, 0x43, 0xf4, 0x2d, 0x27, - 0xec, 0x2d, 0x90, 0xd2, 0x59, 0xb9, 0x15, 0xb8, 0x73, 0x3f, 0x4d, 0xc2, 0x24, 0x1d, 0x58, 0x33, - 0x5b, 0x48, 0xb8, 0x64, 0x74, 0x4a, 0x3a, 0x52, 0x1a, 0xc3, 0xf0, 0x9b, 0x2f, 0x4f, 0xd3, 0xd1, - 0x82, 0x17, 0x4c, 0xa7, 0xa4, 0xc3, 0x25, 0x91, 0xcf, 0x5f, 0x7f, 0x4e, 0x49, 0x17, 0x8f, 0x44, - 0x3e, 0x6f, 0xb9, 0xf1, 0xf8, 0xf8, 0x15, 0x24, 0x91, 0xaf, 0xec, 0x45, 0xd9, 0x29, 0xe9, 0x32, - 0x92, 0xc8, 0x57, 0xf1, 0xe2, 0xed, 0x94, 0x74, 0xf4, 0x24, 0xf2, 0x5d, 0xf1, 0x22, 0xef, 0x94, - 0x74, 0x08, 0x25, 0xf2, 0x2d, 0x7b, 0x31, 0x78, 0x4a, 0xba, 0xaa, 0x24, 0xf2, 0x3d, 0xe2, 0x45, - 0xe3, 0x29, 0xe9, 0xd2, 0x92, 0xc8, 0xb7, 0xe2, 0xc5, 0xe5, 0xac, 0x7c, 0x7d, 0x49, 0x64, 0xbc, - 0xea, 0x47, 0xe8, 0xac, 0x7c, 0x91, 0x49, 0xe4, 0xfc, 0x7f, 0x7e, 0xac, 0xce, 0xca, 0x57, 0x9a, - 0x44, 0xce, 0x6b, 0x7e, 0xd4, 0xce, 0xca, 0x47, 0x65, 0x22, 0xe7, 0xaa, 0x1f, 0xbf, 0xb3, 0xf2, - 0xa1, 0x99, 0xc8, 0xb9, 0xe6, 0x47, 0xf2, 0xac, 0x7c, 0x7c, 0x26, 0x72, 0xae, 0xfb, 0x7b, 0xe8, - 0xdf, 0x90, 0xc2, 0x2f, 0x70, 0x09, 0x2a, 0x27, 0x85, 0x1f, 0x84, 0x84, 0x5e, 0x4e, 0x0a, 0x3d, - 0x08, 0x09, 0xbb, 0x9c, 0x14, 0x76, 0x10, 0x12, 0x72, 0x39, 0x29, 0xe4, 0x20, 0x24, 0xdc, 0x72, - 0x52, 0xb8, 0x41, 0x48, 0xa8, 0xe5, 0xa4, 0x50, 0x83, 0x90, 0x30, 0xcb, 0x49, 0x61, 0x06, 0x21, - 0x21, 0x96, 0x93, 0x42, 0x0c, 0x42, 0xc2, 0x2b, 0x27, 0x85, 0x17, 0x84, 0x84, 0xd6, 0x49, 0x39, - 0xb4, 0x20, 0x2c, 0xac, 0x4e, 0xca, 0x61, 0x05, 0x61, 0x21, 0x75, 0xb7, 0x1c, 0x52, 0xc3, 0x37, - 0x5f, 0x9e, 0x1e, 0xc4, 0x43, 0x81, 0x68, 0x3a, 0x29, 0x47, 0x13, 0x84, 0x45, 0xd2, 0x49, 0x39, - 0x92, 0x20, 0x2c, 0x8a, 0x4e, 0xca, 0x51, 0x04, 0x61, 0x11, 0xf4, 0xa2, 0x1c, 0x41, 0xfe, 0x15, - 0x9f, 0x9c, 0x74, 0xa2, 0x18, 0x15, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, - 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, - 0x13, 0x41, 0x6a, 0xac, 0x08, 0x52, 0xfb, 0x45, 0xd0, 0x49, 0xf9, 0xc2, 0x03, 0x84, 0x15, 0xa4, - 0x93, 0xf2, 0xc9, 0x67, 0x74, 0x08, 0xa9, 0xb1, 0x42, 0x48, 0xed, 0x17, 0x42, 0xdf, 0x50, 0xe1, - 0xa8, 0x10, 0x42, 0xec, 0x78, 0xe8, 0xcd, 0xaa, 0x40, 0xe7, 0x63, 0xdc, 0xaf, 0x08, 0x8b, 0xa9, - 0xf3, 0x31, 0xce, 0xa8, 0x0f, 0x8a, 0xb3, 0xde, 0x2a, 0x54, 0x89, 0x51, 0x85, 0xae, 0x78, 0x31, - 0x74, 0x3e, 0xc6, 0xbd, 0x8b, 0xde, 0xd8, 0xbb, 0x78, 0x50, 0x11, 0x78, 0x24, 0x56, 0x11, 0x58, - 0x89, 0x55, 0x04, 0xae, 0xfa, 0x1e, 0xfc, 0x40, 0x02, 0x8e, 0xf9, 0x1e, 0xa4, 0x9f, 0xc8, 0xef, - 0x08, 0xe5, 0x02, 0x27, 0x54, 0x3a, 0x3f, 0xb5, 0x09, 0xb8, 0x31, 0xb1, 0x52, 0xd7, 0x37, 0xc4, - 0xb3, 0xaa, 0xfc, 0x61, 0xcf, 0x6f, 0x02, 0x1e, 0x67, 0x7b, 0xa1, 0x27, 0x41, 0x5d, 0xa9, 0x3b, - 0xa4, 0x5a, 0x84, 0x3d, 0xb6, 0x64, 0x60, 0xb2, 0x6e, 0xc0, 0x10, 0x61, 0x77, 0x88, 0x7b, 0x6f, - 0xe5, 0xc1, 0x65, 0x83, 0x49, 0xca, 0xbd, 0xa8, 0xc0, 0x8c, 0x10, 0xca, 0x6f, 0xce, 0x89, 0xc1, - 0xe5, 0x58, 0x27, 0x06, 0x42, 0x82, 0xf8, 0xa7, 0x07, 0xf7, 0xf6, 0x1e, 0x54, 0x07, 0xb3, 0x44, - 0x3e, 0x49, 0xf8, 0x65, 0x18, 0xf3, 0x67, 0x40, 0x5e, 0xd9, 0xce, 0x45, 0x6f, 0x66, 0x86, 0xa5, - 0xe6, 0x39, 0x69, 0x13, 0xed, 0x40, 0x98, 0x97, 0xad, 0xb9, 0x3c, 0x8c, 0xaf, 0x89, 0x7f, 0xb2, - 0x13, 0xb5, 0x17, 0x91, 0xc2, 0xad, 0xf9, 0x8d, 0xcf, 0x4c, 0x0f, 0xe4, 0xee, 0x87, 0x91, 0xe0, - 0x5f, 0xe5, 0x48, 0xc0, 0x61, 0x0e, 0xcc, 0x27, 0x5f, 0xc2, 0xdc, 0xbf, 0xaf, 0xc0, 0x6d, 0x41, - 0xf6, 0x77, 0x35, 0xdc, 0xbd, 0x15, 0x0b, 0xf7, 0xf4, 0x0f, 0x42, 0x0a, 0x31, 0xc7, 0xb1, 0xdf, - 0x35, 0x61, 0xaf, 0x91, 0xa1, 0xec, 0xf3, 0xe4, 0x5f, 0xc3, 0x83, 0x48, 0x9b, 0x20, 0xfc, 0xb1, - 0x8b, 0x53, 0xf7, 0xc0, 0x20, 0x95, 0x2f, 0xea, 0x35, 0x2a, 0xe9, 0xf5, 0xb9, 0x10, 0xbd, 0x48, - 0x1c, 0xe9, 0x57, 0x05, 0xbd, 0x02, 0x6f, 0xab, 0xa1, 0xec, 0xf3, 0x3c, 0xf8, 0x8a, 0x29, 0xdc, - 0xff, 0x91, 0x88, 0x8a, 0x56, 0x72, 0x16, 0x52, 0x15, 0x99, 0x27, 0x5c, 0xcf, 0x32, 0x24, 0xd7, - 0xec, 0x3a, 0xf9, 0xc5, 0x15, 0xf2, 0xa3, 0xb1, 0xcc, 0xc8, 0xec, 0x17, 0x64, 0x4f, 0x41, 0xaa, - 0xb4, 0xd7, 0x68, 0xd6, 0x3b, 0xc8, 0x62, 0x47, 0xf6, 0x6c, 0x07, 0x1d, 0x63, 0x0c, 0x8f, 0x96, - 0x2b, 0xc1, 0xc4, 0x9a, 0x6d, 0x15, 0xf7, 0xdd, 0x60, 0xdd, 0x98, 0x97, 0x52, 0x84, 0x1d, 0xf9, - 0x90, 0xbf, 0xf3, 0xc0, 0x0c, 0xc5, 0xc1, 0x6f, 0xbf, 0x3c, 0xad, 0x6c, 0x79, 0xdb, 0xe7, 0xab, - 0x70, 0x3b, 0x4b, 0x9f, 0x1e, 0x51, 0x8b, 0x51, 0xa2, 0x86, 0xd9, 0x31, 0x75, 0x40, 0xdc, 0x0a, - 0x16, 0x67, 0x85, 0x8a, 0x7b, 0x63, 0x9a, 0xe1, 0xa6, 0xe8, 0x40, 0xcd, 0xd4, 0x43, 0x69, 0x16, - 0x2a, 0x6e, 0x3e, 0x4a, 0x9c, 0xa4, 0xd9, 0xdd, 0x30, 0xec, 0xd1, 0x02, 0xd1, 0x10, 0xcc, 0x94, - 0xc5, 0xb9, 0x1c, 0xa4, 0x03, 0x09, 0xab, 0x0f, 0x82, 0x52, 0xd0, 0x06, 0xf0, 0x7f, 0x45, 0x4d, - 0xc1, 0xff, 0x95, 0xb4, 0xc4, 0xdc, 0x3d, 0x30, 0x2e, 0x6d, 0x5f, 0x62, 0x4a, 0x59, 0x03, 0xfc, - 0x5f, 0x45, 0x4b, 0x4f, 0x25, 0x3f, 0xf8, 0x87, 0xd9, 0x81, 0xb9, 0xcb, 0xa0, 0xf7, 0x6e, 0x74, - 0xea, 0x43, 0x90, 0x28, 0x60, 0x91, 0xb7, 0x43, 0xa2, 0x58, 0xd4, 0x94, 0xa9, 0xf1, 0x5f, 0xff, - 0xd4, 0x4c, 0xba, 0x48, 0xfe, 0xe4, 0xf8, 0x31, 0xe4, 0x16, 0x8b, 0x0c, 0xfc, 0x10, 0xdc, 0x16, - 0xba, 0x51, 0x8a, 0xf1, 0xa5, 0x12, 0xc5, 0x97, 0xcb, 0x3d, 0xf8, 0x72, 0x99, 0xe0, 0x95, 0x3c, - 0x3f, 0x70, 0x2e, 0xe8, 0x21, 0x9b, 0x8c, 0x99, 0x7a, 0xe0, 0x80, 0xbb, 0x90, 0x7f, 0x88, 0xf1, - 0x16, 0x43, 0x79, 0x51, 0xc4, 0x81, 0x75, 0x31, 0x5f, 0x62, 0xf8, 0x52, 0x28, 0x7e, 0x47, 0x3a, - 0x55, 0x15, 0x57, 0x08, 0x26, 0xa4, 0xe4, 0x29, 0x5c, 0x0e, 0x15, 0xb2, 0x17, 0xb8, 0xeb, 0x5e, - 0xf6, 0x14, 0xae, 0x84, 0xf2, 0x36, 0x22, 0xee, 0x7c, 0x55, 0xf2, 0xa7, 0xd9, 0x22, 0x5f, 0x38, - 0xa3, 0xdf, 0xc6, 0x73, 0x54, 0xa8, 0xc0, 0xcc, 0x40, 0x9c, 0x2b, 0x5f, 0x62, 0x80, 0x62, 0x5f, - 0x40, 0x7f, 0x2b, 0x71, 0x64, 0xfe, 0x11, 0x26, 0xa4, 0xd4, 0x57, 0x48, 0x84, 0xa9, 0x38, 0xbc, - 0xb8, 0x75, 0xe3, 0x95, 0xec, 0xc0, 0x4b, 0xaf, 0x64, 0x07, 0xfe, 0xe5, 0x95, 0xec, 0xc0, 0x77, - 0x5e, 0xc9, 0x2a, 0xdf, 0x7f, 0x25, 0xab, 0xfc, 0xe0, 0x95, 0xac, 0xf2, 0x93, 0x57, 0xb2, 0xca, - 0xb3, 0x37, 0xb3, 0xca, 0x0b, 0x37, 0xb3, 0xca, 0x97, 0x6e, 0x66, 0x95, 0xaf, 0xdd, 0xcc, 0x2a, - 0x2f, 0xde, 0xcc, 0x2a, 0x37, 0x6e, 0x66, 0x95, 0x97, 0x6e, 0x66, 0x07, 0xbe, 0x73, 0x33, 0xab, - 0x7c, 0xff, 0x66, 0x76, 0xe0, 0x07, 0x37, 0xb3, 0xca, 0x4f, 0x6e, 0x66, 0x07, 0x9e, 0xfd, 0x6e, - 0x76, 0xe0, 0xf9, 0xef, 0x66, 0x07, 0x5e, 0xf8, 0x6e, 0x56, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x32, 0x62, 0x27, 0x65, 0xc8, 0x63, 0x00, 0x00, + // 6509 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x7b, 0x6c, 0x1c, 0xd7, + 0x79, 0x2f, 0x67, 0x67, 0x49, 0x2d, 0x3f, 0xbe, 0x86, 0x43, 0x99, 0x5a, 0xd3, 0xf2, 0x52, 0x5a, + 0xcb, 0x32, 0xcd, 0xd8, 0x14, 0x45, 0x91, 0x7a, 0xac, 0x62, 0x1b, 0xfb, 0x92, 0x4c, 0x85, 0x5c, + 0x32, 0x43, 0x32, 0xb6, 0x72, 0x2f, 0xb0, 0x18, 0xed, 0x1e, 0x92, 0x6b, 0xef, 0xce, 0x6c, 0x76, + 0x86, 0xb6, 0xe9, 0x3f, 0x2e, 0x7c, 0x93, 0x7b, 0x73, 0x93, 0x5b, 0xf4, 0x99, 0x16, 0x4d, 0xd2, + 0xc4, 0x71, 0x52, 0xa4, 0x71, 0x92, 0x3e, 0x92, 0x36, 0x4d, 0x83, 0xa0, 0x68, 0xfc, 0x4f, 0x5a, + 0x15, 0x05, 0x0a, 0xa7, 0x7f, 0x15, 0x41, 0x61, 0xc4, 0x72, 0x80, 0xa6, 0xad, 0xdb, 0x26, 0x8d, + 0x81, 0x04, 0x70, 0xfe, 0x28, 0xce, 0x6b, 0x66, 0xce, 0xd9, 0x59, 0xce, 0xd0, 0xb2, 0x93, 0xfc, + 0x23, 0xed, 0x9e, 0xef, 0xfb, 0x7d, 0xf3, 0x9d, 0xef, 0x75, 0xbe, 0x39, 0xe7, 0x70, 0xe1, 0xb5, + 0x25, 0x38, 0xb1, 0x63, 0xdb, 0x3b, 0x4d, 0x74, 0xa6, 0xdd, 0xb1, 0x5d, 0xfb, 0xc6, 0xde, 0xf6, + 0x99, 0x3a, 0x72, 0x6a, 0x9d, 0x46, 0xdb, 0xb5, 0x3b, 0x73, 0x64, 0x4c, 0x1f, 0xa3, 0x1c, 0x73, + 0x9c, 0x23, 0xbb, 0x0a, 0xe3, 0x57, 0x1a, 0x4d, 0x54, 0xf2, 0x18, 0x37, 0x90, 0xab, 0x5f, 0x84, + 0xe4, 0x76, 0xa3, 0x89, 0xd2, 0xca, 0x09, 0x75, 0x66, 0x68, 0xe1, 0xd4, 0x9c, 0x04, 0x9a, 0x13, + 0x11, 0xeb, 0x78, 0xd8, 0x20, 0x88, 0xec, 0xf7, 0x93, 0x30, 0x11, 0x42, 0xd5, 0x75, 0x48, 0x5a, + 0x66, 0x0b, 0x4b, 0x54, 0x66, 0x06, 0x0d, 0xf2, 0x59, 0x4f, 0xc3, 0x91, 0xb6, 0x59, 0x7b, 0xd2, + 0xdc, 0x41, 0xe9, 0x04, 0x19, 0xe6, 0x5f, 0xf5, 0x0c, 0x40, 0x1d, 0xb5, 0x91, 0x55, 0x47, 0x56, + 0x6d, 0x3f, 0xad, 0x9e, 0x50, 0x67, 0x06, 0x8d, 0xc0, 0x88, 0xfe, 0x2e, 0x18, 0x6f, 0xef, 0xdd, + 0x68, 0x36, 0x6a, 0xd5, 0x00, 0x1b, 0x9c, 0x50, 0x67, 0xfa, 0x0d, 0x8d, 0x12, 0x4a, 0x3e, 0xf3, + 0x7d, 0x30, 0xf6, 0x34, 0x32, 0x9f, 0x0c, 0xb2, 0x0e, 0x11, 0xd6, 0x51, 0x3c, 0x1c, 0x60, 0x2c, + 0xc2, 0x70, 0x0b, 0x39, 0x8e, 0xb9, 0x83, 0xaa, 0xee, 0x7e, 0x1b, 0xa5, 0x93, 0x64, 0xf6, 0x27, + 0xba, 0x66, 0x2f, 0xcf, 0x7c, 0x88, 0xa1, 0x36, 0xf7, 0xdb, 0x48, 0xcf, 0xc3, 0x20, 0xb2, 0xf6, + 0x5a, 0x54, 0x42, 0x7f, 0x0f, 0xfb, 0x95, 0xad, 0xbd, 0x96, 0x2c, 0x25, 0x85, 0x61, 0x4c, 0xc4, + 0x11, 0x07, 0x75, 0x9e, 0x6a, 0xd4, 0x50, 0x7a, 0x80, 0x08, 0xb8, 0xaf, 0x4b, 0xc0, 0x06, 0xa5, + 0xcb, 0x32, 0x38, 0x4e, 0x2f, 0xc2, 0x20, 0x7a, 0xc6, 0x45, 0x96, 0xd3, 0xb0, 0xad, 0xf4, 0x11, + 0x22, 0xe4, 0xde, 0x10, 0x2f, 0xa2, 0x66, 0x5d, 0x16, 0xe1, 0xe3, 0xf4, 0xf3, 0x70, 0xc4, 0x6e, + 0xbb, 0x0d, 0xdb, 0x72, 0xd2, 0xa9, 0x13, 0xca, 0xcc, 0xd0, 0xc2, 0xf1, 0xd0, 0x40, 0x58, 0xa3, + 0x3c, 0x06, 0x67, 0xd6, 0x97, 0x41, 0x73, 0xec, 0xbd, 0x4e, 0x0d, 0x55, 0x6b, 0x76, 0x1d, 0x55, + 0x1b, 0xd6, 0xb6, 0x9d, 0x1e, 0x24, 0x02, 0xa6, 0xbb, 0x27, 0x42, 0x18, 0x8b, 0x76, 0x1d, 0x2d, + 0x5b, 0xdb, 0xb6, 0x31, 0xea, 0x08, 0xdf, 0xf5, 0x49, 0x18, 0x70, 0xf6, 0x2d, 0xd7, 0x7c, 0x26, + 0x3d, 0x4c, 0x22, 0x84, 0x7d, 0xcb, 0xfe, 0xa4, 0x1f, 0xc6, 0xe2, 0x84, 0xd8, 0x65, 0xe8, 0xdf, + 0xc6, 0xb3, 0x4c, 0x27, 0x0e, 0x63, 0x03, 0x8a, 0x11, 0x8d, 0x38, 0xf0, 0x16, 0x8d, 0x98, 0x87, + 0x21, 0x0b, 0x39, 0x2e, 0xaa, 0xd3, 0x88, 0x50, 0x63, 0xc6, 0x14, 0x50, 0x50, 0x77, 0x48, 0x25, + 0xdf, 0x52, 0x48, 0x3d, 0x0e, 0x63, 0x9e, 0x4a, 0xd5, 0x8e, 0x69, 0xed, 0xf0, 0xd8, 0x3c, 0x13, + 0xa5, 0xc9, 0x5c, 0x99, 0xe3, 0x0c, 0x0c, 0x33, 0x46, 0x91, 0xf0, 0x5d, 0x2f, 0x01, 0xd8, 0x16, + 0xb2, 0xb7, 0xab, 0x75, 0x54, 0x6b, 0xa6, 0x53, 0x3d, 0xac, 0xb4, 0x86, 0x59, 0xba, 0xac, 0x64, + 0xd3, 0xd1, 0x5a, 0x53, 0xbf, 0xe4, 0x87, 0xda, 0x91, 0x1e, 0x91, 0xb2, 0x4a, 0x93, 0xac, 0x2b, + 0xda, 0xb6, 0x60, 0xb4, 0x83, 0x70, 0xdc, 0xa3, 0x3a, 0x9b, 0xd9, 0x20, 0x51, 0x62, 0x2e, 0x72, + 0x66, 0x06, 0x83, 0xd1, 0x89, 0x8d, 0x74, 0x82, 0x5f, 0xf5, 0x7b, 0xc0, 0x1b, 0xa8, 0x92, 0xb0, + 0x02, 0x52, 0x85, 0x86, 0xf9, 0x60, 0xc5, 0x6c, 0xa1, 0xa9, 0x8b, 0x30, 0x2a, 0x9a, 0x47, 0x3f, + 0x0a, 0xfd, 0x8e, 0x6b, 0x76, 0x5c, 0x12, 0x85, 0xfd, 0x06, 0xfd, 0xa2, 0x6b, 0xa0, 0x22, 0xab, + 0x4e, 0xaa, 0x5c, 0xbf, 0x81, 0x3f, 0x4e, 0x5d, 0x80, 0x11, 0xe1, 0xf1, 0x71, 0x81, 0xd9, 0x8f, + 0x0f, 0xc0, 0xd1, 0xb0, 0x98, 0x0b, 0x0d, 0xff, 0x49, 0x18, 0xb0, 0xf6, 0x5a, 0x37, 0x50, 0x27, + 0xad, 0x12, 0x09, 0xec, 0x9b, 0x9e, 0x87, 0xfe, 0xa6, 0x79, 0x03, 0x35, 0xd3, 0xc9, 0x13, 0xca, + 0xcc, 0xe8, 0xc2, 0xbb, 0x62, 0x45, 0xf5, 0xdc, 0x0a, 0x86, 0x18, 0x14, 0xa9, 0x3f, 0x0c, 0x49, + 0x56, 0xe2, 0xb0, 0x84, 0xd9, 0x78, 0x12, 0x70, 0x2c, 0x1a, 0x04, 0xa7, 0xdf, 0x05, 0x83, 0xf8, + 0x7f, 0x6a, 0xdb, 0x01, 0xa2, 0x73, 0x0a, 0x0f, 0x60, 0xbb, 0xea, 0x53, 0x90, 0x22, 0x61, 0x56, + 0x47, 0x7c, 0x69, 0xf0, 0xbe, 0x63, 0xc7, 0xd4, 0xd1, 0xb6, 0xb9, 0xd7, 0x74, 0xab, 0x4f, 0x99, + 0xcd, 0x3d, 0x44, 0x02, 0x66, 0xd0, 0x18, 0x66, 0x83, 0xef, 0xc3, 0x63, 0xfa, 0x34, 0x0c, 0xd1, + 0xa8, 0x6c, 0x58, 0x75, 0xf4, 0x0c, 0xa9, 0x3e, 0xfd, 0x06, 0x0d, 0xd4, 0x65, 0x3c, 0x82, 0x1f, + 0xff, 0x84, 0x63, 0x5b, 0xdc, 0xb5, 0xe4, 0x11, 0x78, 0x80, 0x3c, 0xfe, 0x82, 0x5c, 0xf8, 0xee, + 0x0e, 0x9f, 0x9e, 0x1c, 0x8b, 0xd9, 0xaf, 0x27, 0x20, 0x49, 0xf2, 0x6d, 0x0c, 0x86, 0x36, 0xaf, + 0xaf, 0x97, 0xab, 0xa5, 0xb5, 0xad, 0xc2, 0x4a, 0x59, 0x53, 0xf4, 0x51, 0x00, 0x32, 0x70, 0x65, + 0x65, 0x2d, 0xbf, 0xa9, 0x25, 0xbc, 0xef, 0xcb, 0x95, 0xcd, 0xf3, 0x8b, 0x9a, 0xea, 0x01, 0xb6, + 0xe8, 0x40, 0x32, 0xc8, 0x70, 0x6e, 0x41, 0xeb, 0xd7, 0x35, 0x18, 0xa6, 0x02, 0x96, 0x1f, 0x2f, + 0x97, 0xce, 0x2f, 0x6a, 0x03, 0xe2, 0xc8, 0xb9, 0x05, 0xed, 0x88, 0x3e, 0x02, 0x83, 0x64, 0xa4, + 0xb0, 0xb6, 0xb6, 0xa2, 0xa5, 0x3c, 0x99, 0x1b, 0x9b, 0xc6, 0x72, 0xe5, 0xaa, 0x36, 0xe8, 0xc9, + 0xbc, 0x6a, 0xac, 0x6d, 0xad, 0x6b, 0xe0, 0x49, 0x58, 0x2d, 0x6f, 0x6c, 0xe4, 0xaf, 0x96, 0xb5, + 0x21, 0x8f, 0xa3, 0x70, 0x7d, 0xb3, 0xbc, 0xa1, 0x0d, 0x0b, 0x6a, 0x9d, 0x5b, 0xd0, 0x46, 0xbc, + 0x47, 0x94, 0x2b, 0x5b, 0xab, 0xda, 0xa8, 0x3e, 0x0e, 0x23, 0xf4, 0x11, 0x5c, 0x89, 0x31, 0x69, + 0xe8, 0xfc, 0xa2, 0xa6, 0xf9, 0x8a, 0x50, 0x29, 0xe3, 0xc2, 0xc0, 0xf9, 0x45, 0x4d, 0xcf, 0x16, + 0xa1, 0x9f, 0x44, 0x97, 0xae, 0xc3, 0xe8, 0x4a, 0xbe, 0x50, 0x5e, 0xa9, 0xae, 0xad, 0x6f, 0x2e, + 0xaf, 0x55, 0xf2, 0x2b, 0x9a, 0xe2, 0x8f, 0x19, 0xe5, 0xf7, 0x6e, 0x2d, 0x1b, 0xe5, 0x92, 0x96, + 0x08, 0x8e, 0xad, 0x97, 0xf3, 0x9b, 0xe5, 0x92, 0xa6, 0x66, 0x6b, 0x70, 0x34, 0xac, 0xce, 0x84, + 0x66, 0x46, 0xc0, 0xc5, 0x89, 0x1e, 0x2e, 0x26, 0xb2, 0xba, 0x5c, 0xfc, 0x39, 0x05, 0x26, 0x42, + 0x6a, 0x6d, 0xe8, 0x43, 0x1e, 0x81, 0x7e, 0x1a, 0xa2, 0x74, 0xf5, 0xb9, 0x3f, 0xb4, 0x68, 0x93, + 0x80, 0xed, 0x5a, 0x81, 0x08, 0x2e, 0xb8, 0x02, 0xab, 0x3d, 0x56, 0x60, 0x2c, 0xa2, 0x4b, 0xc9, + 0x0f, 0x29, 0x90, 0xee, 0x25, 0x3b, 0xa2, 0x50, 0x24, 0x84, 0x42, 0x71, 0x59, 0x56, 0xe0, 0x64, + 0xef, 0x39, 0x74, 0x69, 0xf1, 0x05, 0x05, 0x26, 0xc3, 0x1b, 0x95, 0x50, 0x1d, 0x1e, 0x86, 0x81, + 0x16, 0x72, 0x77, 0x6d, 0xbe, 0x58, 0x9f, 0x0e, 0x59, 0x02, 0x30, 0x59, 0xb6, 0x15, 0x43, 0x05, + 0xd7, 0x10, 0xb5, 0x57, 0xb7, 0x41, 0xb5, 0xe9, 0xd2, 0xf4, 0xa3, 0x09, 0xb8, 0x23, 0x54, 0x78, + 0xa8, 0xa2, 0x77, 0x03, 0x34, 0xac, 0xf6, 0x9e, 0x4b, 0x17, 0x64, 0x5a, 0x9f, 0x06, 0xc9, 0x08, + 0xc9, 0x7d, 0x5c, 0x7b, 0xf6, 0x5c, 0x8f, 0xae, 0x12, 0x3a, 0xd0, 0x21, 0xc2, 0x70, 0xd1, 0x57, + 0x34, 0x49, 0x14, 0xcd, 0xf4, 0x98, 0x69, 0xd7, 0x5a, 0x37, 0x0f, 0x5a, 0xad, 0xd9, 0x40, 0x96, + 0x5b, 0x75, 0xdc, 0x0e, 0x32, 0x5b, 0x0d, 0x6b, 0x87, 0x14, 0xe0, 0x54, 0xae, 0x7f, 0xdb, 0x6c, + 0x3a, 0xc8, 0x18, 0xa3, 0xe4, 0x0d, 0x4e, 0xc5, 0x08, 0xb2, 0xca, 0x74, 0x02, 0x88, 0x01, 0x01, + 0x41, 0xc9, 0x1e, 0x22, 0xfb, 0xe5, 0x23, 0x30, 0x14, 0x68, 0xeb, 0xf4, 0x93, 0x30, 0xfc, 0x84, + 0xf9, 0x94, 0x59, 0xe5, 0xad, 0x3a, 0xb5, 0xc4, 0x10, 0x1e, 0x5b, 0x67, 0xed, 0xfa, 0x3c, 0x1c, + 0x25, 0x2c, 0xf6, 0x9e, 0x8b, 0x3a, 0xd5, 0x5a, 0xd3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, + 0x31, 0x6d, 0x0d, 0x93, 0x8a, 0x9c, 0xa2, 0x2f, 0xc1, 0x04, 0x41, 0xb4, 0xf6, 0x9a, 0x6e, 0xa3, + 0xdd, 0x44, 0x55, 0xfc, 0xf2, 0xe0, 0x90, 0x42, 0xec, 0x69, 0x36, 0x8e, 0x39, 0x56, 0x19, 0x03, + 0xd6, 0xc8, 0xd1, 0x4b, 0x70, 0x37, 0x81, 0xed, 0x20, 0x0b, 0x75, 0x4c, 0x17, 0x55, 0xd1, 0x07, + 0xf6, 0xcc, 0xa6, 0x53, 0x35, 0xad, 0x7a, 0x75, 0xd7, 0x74, 0x76, 0xd3, 0x47, 0xb1, 0x80, 0x42, + 0x22, 0xad, 0x18, 0x77, 0x62, 0xc6, 0xab, 0x8c, 0xaf, 0x4c, 0xd8, 0xf2, 0x56, 0xfd, 0x51, 0xd3, + 0xd9, 0xd5, 0x73, 0x30, 0x49, 0xa4, 0x38, 0x6e, 0xa7, 0x61, 0xed, 0x54, 0x6b, 0xbb, 0xa8, 0xf6, + 0x64, 0x75, 0xcf, 0xdd, 0xbe, 0x98, 0xbe, 0x2b, 0xf8, 0x7c, 0xa2, 0xe1, 0x06, 0xe1, 0x29, 0x62, + 0x96, 0x2d, 0x77, 0xfb, 0xa2, 0xbe, 0x01, 0xc3, 0xd8, 0x19, 0xad, 0xc6, 0xb3, 0xa8, 0xba, 0x6d, + 0x77, 0xc8, 0xca, 0x32, 0x1a, 0x92, 0xd9, 0x01, 0x0b, 0xce, 0xad, 0x31, 0xc0, 0xaa, 0x5d, 0x47, + 0xb9, 0xfe, 0x8d, 0xf5, 0x72, 0xb9, 0x64, 0x0c, 0x71, 0x29, 0x57, 0xec, 0x0e, 0x0e, 0xa8, 0x1d, + 0xdb, 0x33, 0xf0, 0x10, 0x0d, 0xa8, 0x1d, 0x9b, 0x9b, 0x77, 0x09, 0x26, 0x6a, 0x35, 0x3a, 0xe7, + 0x46, 0xad, 0xca, 0x5a, 0x7c, 0x27, 0xad, 0x09, 0xc6, 0xaa, 0xd5, 0xae, 0x52, 0x06, 0x16, 0xe3, + 0x8e, 0x7e, 0x09, 0xee, 0xf0, 0x8d, 0x15, 0x04, 0x8e, 0x77, 0xcd, 0x52, 0x86, 0x2e, 0xc1, 0x44, + 0x7b, 0xbf, 0x1b, 0xa8, 0x0b, 0x4f, 0x6c, 0xef, 0xcb, 0xb0, 0x7b, 0xc9, 0x6b, 0x5b, 0x07, 0xd5, + 0x4c, 0x17, 0xd5, 0xd3, 0xc7, 0x82, 0xdc, 0x01, 0x82, 0x7e, 0x06, 0xb4, 0x5a, 0xad, 0x8a, 0x2c, + 0xf3, 0x46, 0x13, 0x55, 0xcd, 0x0e, 0xb2, 0x4c, 0x27, 0x3d, 0x1d, 0x64, 0x1e, 0xad, 0xd5, 0xca, + 0x84, 0x9a, 0x27, 0x44, 0x7d, 0x16, 0xc6, 0xed, 0x1b, 0x4f, 0xd4, 0x68, 0x64, 0x55, 0xdb, 0x1d, + 0xb4, 0xdd, 0x78, 0x26, 0x7d, 0x8a, 0x98, 0x69, 0x0c, 0x13, 0x48, 0x5c, 0xad, 0x93, 0x61, 0xfd, + 0x7e, 0xd0, 0x6a, 0xce, 0xae, 0xd9, 0x69, 0x93, 0xa5, 0xdd, 0x69, 0x9b, 0x35, 0x94, 0xbe, 0x97, + 0xb2, 0xd2, 0xf1, 0x0a, 0x1f, 0xc6, 0x91, 0xed, 0x3c, 0xdd, 0xd8, 0x76, 0xb9, 0xc4, 0xfb, 0x68, + 0x64, 0x93, 0x31, 0x26, 0xed, 0x71, 0x38, 0xba, 0x67, 0x35, 0x2c, 0x17, 0x75, 0xda, 0x1d, 0x84, + 0x9b, 0x78, 0x9a, 0x89, 0xe9, 0x7f, 0x3e, 0xd2, 0xa3, 0x0d, 0xdf, 0x0a, 0x72, 0xd3, 0x00, 0x30, + 0x26, 0xf6, 0xba, 0x07, 0xb3, 0x39, 0x18, 0x0e, 0xc6, 0x85, 0x3e, 0x08, 0x34, 0x32, 0x34, 0x05, + 0xaf, 0xb1, 0xc5, 0xb5, 0x12, 0x5e, 0x1d, 0xdf, 0x5f, 0xd6, 0x12, 0x78, 0x95, 0x5e, 0x59, 0xde, + 0x2c, 0x57, 0x8d, 0xad, 0xca, 0xe6, 0xf2, 0x6a, 0x59, 0x53, 0x67, 0x07, 0x53, 0x3f, 0x38, 0xa2, + 0x3d, 0xf7, 0xdc, 0x73, 0xcf, 0x25, 0xb2, 0xdf, 0x4e, 0xc0, 0xa8, 0xd8, 0x19, 0xeb, 0xef, 0x86, + 0x63, 0xfc, 0x35, 0xd6, 0x41, 0x6e, 0xf5, 0xe9, 0x46, 0x87, 0x84, 0x6a, 0xcb, 0xa4, 0xbd, 0xa5, + 0x67, 0xe5, 0xa3, 0x8c, 0x6b, 0x03, 0xb9, 0x8f, 0x35, 0x3a, 0x38, 0x10, 0x5b, 0xa6, 0xab, 0xaf, + 0xc0, 0xb4, 0x65, 0x57, 0x1d, 0xd7, 0xb4, 0xea, 0x66, 0xa7, 0x5e, 0xf5, 0x37, 0x10, 0xaa, 0x66, + 0xad, 0x86, 0x1c, 0xc7, 0xa6, 0x4b, 0x84, 0x27, 0xe5, 0xb8, 0x65, 0x6f, 0x30, 0x66, 0xbf, 0x76, + 0xe6, 0x19, 0xab, 0x14, 0x11, 0x6a, 0xaf, 0x88, 0xb8, 0x0b, 0x06, 0x5b, 0x66, 0xbb, 0x8a, 0x2c, + 0xb7, 0xb3, 0x4f, 0xfa, 0xb9, 0x94, 0x91, 0x6a, 0x99, 0xed, 0x32, 0xfe, 0xfe, 0xce, 0xf9, 0x20, + 0x68, 0xc7, 0x7f, 0x52, 0x61, 0x38, 0xd8, 0xd3, 0xe1, 0x16, 0xb9, 0x46, 0xea, 0xb7, 0x42, 0x32, + 0xfc, 0x9e, 0x03, 0x3b, 0xc0, 0xb9, 0x22, 0x2e, 0xec, 0xb9, 0x01, 0xda, 0x69, 0x19, 0x14, 0x89, + 0x17, 0x55, 0x9c, 0xd3, 0x88, 0xf6, 0xef, 0x29, 0x83, 0x7d, 0xd3, 0xaf, 0xc2, 0xc0, 0x13, 0x0e, + 0x91, 0x3d, 0x40, 0x64, 0x9f, 0x3a, 0x58, 0xf6, 0xb5, 0x0d, 0x22, 0x7c, 0xf0, 0xda, 0x46, 0xb5, + 0xb2, 0x66, 0xac, 0xe6, 0x57, 0x0c, 0x06, 0xd7, 0xef, 0x84, 0x64, 0xd3, 0x7c, 0x76, 0x5f, 0x5c, + 0x02, 0xc8, 0x50, 0x5c, 0xc3, 0xdf, 0x09, 0xc9, 0xa7, 0x91, 0xf9, 0xa4, 0x58, 0x78, 0xc9, 0xd0, + 0x3b, 0x18, 0xfa, 0x67, 0xa0, 0x9f, 0xd8, 0x4b, 0x07, 0x60, 0x16, 0xd3, 0xfa, 0xf4, 0x14, 0x24, + 0x8b, 0x6b, 0x06, 0x0e, 0x7f, 0x0d, 0x86, 0xe9, 0x68, 0x75, 0x7d, 0xb9, 0x5c, 0x2c, 0x6b, 0x89, + 0xec, 0x12, 0x0c, 0x50, 0x23, 0xe0, 0xd4, 0xf0, 0xcc, 0xa0, 0xf5, 0xb1, 0xaf, 0x4c, 0x86, 0xc2, + 0xa9, 0x5b, 0xab, 0x85, 0xb2, 0xa1, 0x25, 0x82, 0xee, 0x75, 0x60, 0x38, 0xd8, 0xce, 0xfd, 0x7c, + 0x62, 0xea, 0x9b, 0x0a, 0x0c, 0x05, 0xda, 0x33, 0xdc, 0x18, 0x98, 0xcd, 0xa6, 0xfd, 0x74, 0xd5, + 0x6c, 0x36, 0x4c, 0x87, 0x05, 0x05, 0x90, 0xa1, 0x3c, 0x1e, 0x89, 0xeb, 0xb4, 0x9f, 0x8b, 0xf2, + 0xcf, 0x2b, 0xa0, 0xc9, 0xad, 0x9d, 0xa4, 0xa0, 0xf2, 0x0b, 0x55, 0xf0, 0x53, 0x0a, 0x8c, 0x8a, + 0xfd, 0x9c, 0xa4, 0xde, 0xc9, 0x5f, 0xa8, 0x7a, 0xdf, 0x4b, 0xc0, 0x88, 0xd0, 0xc5, 0xc5, 0xd5, + 0xee, 0x03, 0x30, 0xde, 0xa8, 0xa3, 0x56, 0xdb, 0x76, 0x91, 0x55, 0xdb, 0xaf, 0x36, 0xd1, 0x53, + 0xa8, 0x99, 0xce, 0x92, 0x42, 0x71, 0xe6, 0xe0, 0x3e, 0x71, 0x6e, 0xd9, 0xc7, 0xad, 0x60, 0x58, + 0x6e, 0x62, 0xb9, 0x54, 0x5e, 0x5d, 0x5f, 0xdb, 0x2c, 0x57, 0x8a, 0xd7, 0xab, 0x5b, 0x95, 0xf7, + 0x54, 0xd6, 0x1e, 0xab, 0x18, 0x5a, 0x43, 0x62, 0x7b, 0x07, 0x53, 0x7d, 0x1d, 0x34, 0x59, 0x29, + 0xfd, 0x18, 0x84, 0xa9, 0xa5, 0xf5, 0xe9, 0x13, 0x30, 0x56, 0x59, 0xab, 0x6e, 0x2c, 0x97, 0xca, + 0xd5, 0xf2, 0x95, 0x2b, 0xe5, 0xe2, 0xe6, 0x06, 0x7d, 0x71, 0xf6, 0xb8, 0x37, 0xc5, 0xa4, 0xfe, + 0xa4, 0x0a, 0x13, 0x21, 0x9a, 0xe8, 0x79, 0xd6, 0xb3, 0xd3, 0xd7, 0x88, 0x07, 0xe3, 0x68, 0x3f, + 0x87, 0xbb, 0x82, 0x75, 0xb3, 0xe3, 0xb2, 0x16, 0xff, 0x7e, 0xc0, 0x56, 0xb2, 0xdc, 0xc6, 0x76, + 0x03, 0x75, 0xd8, 0x3e, 0x03, 0x6d, 0xe4, 0xc7, 0xfc, 0x71, 0xba, 0xd5, 0xf0, 0x00, 0xe8, 0x6d, + 0xdb, 0x69, 0xb8, 0x8d, 0xa7, 0x50, 0xb5, 0x61, 0xf1, 0x4d, 0x09, 0xdc, 0xd8, 0x27, 0x0d, 0x8d, + 0x53, 0x96, 0x2d, 0xd7, 0xe3, 0xb6, 0xd0, 0x8e, 0x29, 0x71, 0xe3, 0x02, 0xae, 0x1a, 0x1a, 0xa7, + 0x78, 0xdc, 0x27, 0x61, 0xb8, 0x6e, 0xef, 0xe1, 0x36, 0x89, 0xf2, 0xe1, 0xf5, 0x42, 0x31, 0x86, + 0xe8, 0x98, 0xc7, 0xc2, 0xfa, 0x58, 0x7f, 0x37, 0x64, 0xd8, 0x18, 0xa2, 0x63, 0x94, 0xe5, 0x3e, + 0x18, 0x33, 0x77, 0x76, 0x3a, 0x58, 0x38, 0x17, 0x44, 0x3b, 0xf3, 0x51, 0x6f, 0x98, 0x30, 0x4e, + 0x5d, 0x83, 0x14, 0xb7, 0x03, 0x5e, 0x92, 0xb1, 0x25, 0xaa, 0x6d, 0xba, 0x27, 0x95, 0x98, 0x19, + 0x34, 0x52, 0x16, 0x27, 0x9e, 0x84, 0xe1, 0x86, 0x53, 0xf5, 0x37, 0x47, 0x13, 0x27, 0x12, 0x33, + 0x29, 0x63, 0xa8, 0xe1, 0x78, 0xbb, 0x61, 0xd9, 0x2f, 0x24, 0x60, 0x54, 0xdc, 0xdc, 0xd5, 0x4b, + 0x90, 0x6a, 0xda, 0x35, 0x93, 0x84, 0x16, 0x3d, 0x59, 0x98, 0x89, 0xd8, 0x0f, 0x9e, 0x5b, 0x61, + 0xfc, 0x86, 0x87, 0x9c, 0xfa, 0x7b, 0x05, 0x52, 0x7c, 0x58, 0x9f, 0x84, 0x64, 0xdb, 0x74, 0x77, + 0x89, 0xb8, 0xfe, 0x42, 0x42, 0x53, 0x0c, 0xf2, 0x1d, 0x8f, 0x3b, 0x6d, 0xd3, 0x22, 0x21, 0xc0, + 0xc6, 0xf1, 0x77, 0xec, 0xd7, 0x26, 0x32, 0xeb, 0xa4, 0xed, 0xb7, 0x5b, 0x2d, 0x64, 0xb9, 0x0e, + 0xf7, 0x2b, 0x1b, 0x2f, 0xb2, 0x61, 0xfd, 0x5d, 0x30, 0xee, 0x76, 0xcc, 0x46, 0x53, 0xe0, 0x4d, + 0x12, 0x5e, 0x8d, 0x13, 0x3c, 0xe6, 0x1c, 0xdc, 0xc9, 0xe5, 0xd6, 0x91, 0x6b, 0xd6, 0x76, 0x51, + 0xdd, 0x07, 0x0d, 0x90, 0x9d, 0xc3, 0x63, 0x8c, 0xa1, 0xc4, 0xe8, 0x1c, 0x9b, 0xfd, 0x8e, 0x02, + 0xe3, 0xfc, 0x45, 0xa5, 0xee, 0x19, 0x6b, 0x15, 0xc0, 0xb4, 0x2c, 0xdb, 0x0d, 0x9a, 0xab, 0x3b, + 0x94, 0xbb, 0x70, 0x73, 0x79, 0x0f, 0x64, 0x04, 0x04, 0x4c, 0xb5, 0x00, 0x7c, 0x4a, 0x4f, 0xb3, + 0x4d, 0xc3, 0x10, 0xdb, 0xb9, 0x27, 0xc7, 0x3f, 0xf4, 0xd5, 0x16, 0xe8, 0x10, 0x7e, 0xa3, 0xd1, + 0x8f, 0x42, 0xff, 0x0d, 0xb4, 0xd3, 0xb0, 0xd8, 0x7e, 0x22, 0xfd, 0xc2, 0x77, 0x29, 0x93, 0xde, + 0x2e, 0x65, 0xe1, 0x71, 0x98, 0xa8, 0xd9, 0x2d, 0x59, 0xdd, 0x82, 0x26, 0xbd, 0x5e, 0x3b, 0x8f, + 0x2a, 0xef, 0x07, 0xbf, 0xc5, 0xfc, 0x5c, 0x42, 0xbd, 0xba, 0x5e, 0xf8, 0x52, 0x62, 0xea, 0x2a, + 0xc5, 0xad, 0xf3, 0x69, 0x1a, 0x68, 0xbb, 0x89, 0x6a, 0x58, 0x75, 0xf8, 0xf1, 0x69, 0x78, 0x70, + 0xa7, 0xe1, 0xee, 0xee, 0xdd, 0x98, 0xab, 0xd9, 0xad, 0x33, 0x3b, 0xf6, 0x8e, 0xed, 0x1f, 0x77, + 0xe1, 0x6f, 0xe4, 0x0b, 0xf9, 0xc4, 0x8e, 0xbc, 0x06, 0xbd, 0xd1, 0xa9, 0xc8, 0xf3, 0xb1, 0x5c, + 0x05, 0x26, 0x18, 0x73, 0x95, 0xec, 0xb9, 0xd3, 0x57, 0x03, 0xfd, 0xc0, 0x7d, 0x97, 0xf4, 0x57, + 0xbf, 0x4f, 0xd6, 0x6a, 0x63, 0x9c, 0x41, 0x31, 0x8d, 0xbe, 0x40, 0xe4, 0x0c, 0xb8, 0x43, 0x90, + 0x47, 0xf3, 0x12, 0x75, 0x22, 0x24, 0x7e, 0x9b, 0x49, 0x9c, 0x08, 0x48, 0xdc, 0x60, 0xd0, 0x5c, + 0x11, 0x46, 0x0e, 0x23, 0xeb, 0xaf, 0x99, 0xac, 0x61, 0x14, 0x14, 0x72, 0x15, 0xc6, 0x88, 0x90, + 0xda, 0x9e, 0xe3, 0xda, 0x2d, 0x52, 0xf4, 0x0e, 0x16, 0xf3, 0x37, 0xdf, 0xa7, 0x89, 0x32, 0x8a, + 0x61, 0x45, 0x0f, 0x95, 0xcb, 0x01, 0x39, 0x66, 0xa8, 0xa3, 0x5a, 0x33, 0x42, 0xc2, 0x4d, 0xa6, + 0x88, 0xc7, 0x9f, 0x7b, 0x1f, 0x1c, 0xc5, 0x9f, 0x49, 0x4d, 0x0a, 0x6a, 0x12, 0xbd, 0xcb, 0x94, + 0xfe, 0xce, 0x87, 0x68, 0x2e, 0x4e, 0x78, 0x02, 0x02, 0x3a, 0x05, 0xbc, 0xb8, 0x83, 0x5c, 0x17, + 0x75, 0x9c, 0xaa, 0xd9, 0x0c, 0x53, 0x2f, 0xf0, 0x9a, 0x9e, 0xfe, 0xc4, 0xeb, 0xa2, 0x17, 0xaf, + 0x52, 0x64, 0xbe, 0xd9, 0xcc, 0x6d, 0xc1, 0xb1, 0x90, 0xa8, 0x88, 0x21, 0xf3, 0x93, 0x4c, 0xe6, + 0xd1, 0xae, 0xc8, 0xc0, 0x62, 0xd7, 0x81, 0x8f, 0x7b, 0xbe, 0x8c, 0x21, 0xf3, 0xf7, 0x98, 0x4c, + 0x9d, 0x61, 0xb9, 0x4b, 0xb1, 0xc4, 0x6b, 0x30, 0xfe, 0x14, 0xea, 0xdc, 0xb0, 0x1d, 0xb6, 0x35, + 0x12, 0x43, 0xdc, 0xa7, 0x98, 0xb8, 0x31, 0x06, 0x24, 0x7b, 0x25, 0x58, 0xd6, 0x25, 0x48, 0x6d, + 0x9b, 0x35, 0x14, 0x43, 0xc4, 0xa7, 0x99, 0x88, 0x23, 0x98, 0x1f, 0x43, 0xf3, 0x30, 0xbc, 0x63, + 0xb3, 0x65, 0x29, 0x1a, 0xfe, 0x3c, 0x83, 0x0f, 0x71, 0x0c, 0x13, 0xd1, 0xb6, 0xdb, 0x7b, 0x4d, + 0xbc, 0x66, 0x45, 0x8b, 0xf8, 0x0c, 0x17, 0xc1, 0x31, 0x4c, 0xc4, 0x21, 0xcc, 0xfa, 0x02, 0x17, + 0xe1, 0x04, 0xec, 0xf9, 0x08, 0x0c, 0xd9, 0x56, 0x73, 0xdf, 0xb6, 0xe2, 0x28, 0xf1, 0x59, 0x26, + 0x01, 0x18, 0x04, 0x0b, 0xb8, 0x0c, 0x83, 0x71, 0x1d, 0xf1, 0xf9, 0xd7, 0x79, 0x7a, 0x70, 0x0f, + 0x5c, 0x85, 0x31, 0x5e, 0xa0, 0x1a, 0xb6, 0x15, 0x43, 0xc4, 0x1f, 0x30, 0x11, 0xa3, 0x01, 0x18, + 0x9b, 0x86, 0x8b, 0x1c, 0x77, 0x07, 0xc5, 0x11, 0xf2, 0x05, 0x3e, 0x0d, 0x06, 0x61, 0xa6, 0xbc, + 0x81, 0xac, 0xda, 0x6e, 0x3c, 0x09, 0x2f, 0x72, 0x53, 0x72, 0x0c, 0x16, 0x51, 0x84, 0x91, 0x96, + 0xd9, 0x71, 0x76, 0xcd, 0x66, 0x2c, 0x77, 0x7c, 0x91, 0xc9, 0x18, 0xf6, 0x40, 0xcc, 0x22, 0x7b, + 0xd6, 0x61, 0xc4, 0x7c, 0x89, 0x5b, 0x24, 0x00, 0x63, 0xa9, 0xe7, 0xb8, 0x64, 0x03, 0xea, 0x30, + 0xd2, 0xbe, 0xcc, 0x53, 0x8f, 0x62, 0x57, 0x83, 0x12, 0x2f, 0xc3, 0xa0, 0xd3, 0x78, 0x36, 0x96, + 0x98, 0x3f, 0xe4, 0x9e, 0x26, 0x00, 0x0c, 0xbe, 0x0e, 0x77, 0x86, 0x2e, 0x13, 0x31, 0x84, 0xfd, + 0x11, 0x13, 0x36, 0x19, 0xb2, 0x54, 0xb0, 0x92, 0x70, 0x58, 0x91, 0x7f, 0xcc, 0x4b, 0x02, 0x92, + 0x64, 0xad, 0xe3, 0x17, 0x05, 0xc7, 0xdc, 0x3e, 0x9c, 0xd5, 0xfe, 0x84, 0x5b, 0x8d, 0x62, 0x05, + 0xab, 0x6d, 0xc2, 0x24, 0x93, 0x78, 0x38, 0xbf, 0x7e, 0x85, 0x17, 0x56, 0x8a, 0xde, 0x12, 0xbd, + 0xfb, 0x3f, 0x60, 0xca, 0x33, 0x27, 0xef, 0x48, 0x9d, 0x6a, 0xcb, 0x6c, 0xc7, 0x90, 0xfc, 0x55, + 0x26, 0x99, 0x57, 0x7c, 0xaf, 0xa5, 0x75, 0x56, 0xcd, 0x36, 0x16, 0xfe, 0x38, 0xa4, 0xb9, 0xf0, + 0x3d, 0xab, 0x83, 0x6a, 0xf6, 0x8e, 0xd5, 0x78, 0x16, 0xd5, 0x63, 0x88, 0xfe, 0x53, 0xc9, 0x55, + 0x5b, 0x01, 0x38, 0x96, 0xbc, 0x0c, 0x9a, 0xd7, 0xab, 0x54, 0x1b, 0xad, 0xb6, 0xdd, 0x71, 0x23, + 0x24, 0xfe, 0x19, 0xf7, 0x94, 0x87, 0x5b, 0x26, 0xb0, 0x5c, 0x19, 0x46, 0xc9, 0xd7, 0xb8, 0x21, + 0xf9, 0x35, 0x26, 0x68, 0xc4, 0x47, 0xb1, 0xc2, 0x51, 0xb3, 0x5b, 0x6d, 0xb3, 0x13, 0xa7, 0xfe, + 0xfd, 0x39, 0x2f, 0x1c, 0x0c, 0xc2, 0x0a, 0x87, 0xbb, 0xdf, 0x46, 0x78, 0xb5, 0x8f, 0x21, 0xe1, + 0xeb, 0xbc, 0x70, 0x70, 0x0c, 0x13, 0xc1, 0x1b, 0x86, 0x18, 0x22, 0xfe, 0x82, 0x8b, 0xe0, 0x18, + 0x2c, 0xe2, 0xbd, 0xfe, 0x42, 0xdb, 0x41, 0x3b, 0x0d, 0xc7, 0xed, 0xd0, 0x3e, 0xf8, 0x60, 0x51, + 0xdf, 0x78, 0x5d, 0x6c, 0xc2, 0x8c, 0x00, 0x34, 0x77, 0x0d, 0xc6, 0xa4, 0x16, 0x43, 0x8f, 0xba, + 0xb3, 0x90, 0xfe, 0xdf, 0x6f, 0xb0, 0x62, 0x24, 0x76, 0x18, 0xb9, 0x15, 0xec, 0x77, 0xb1, 0x0f, + 0x88, 0x16, 0xf6, 0xa1, 0x37, 0x3c, 0xd7, 0x0b, 0x6d, 0x40, 0xee, 0x0a, 0x8c, 0x08, 0x3d, 0x40, + 0xb4, 0xa8, 0xff, 0xc3, 0x44, 0x0d, 0x07, 0x5b, 0x80, 0xdc, 0x12, 0x24, 0xf1, 0x7a, 0x1e, 0x0d, + 0xff, 0xbf, 0x0c, 0x4e, 0xd8, 0x73, 0x0f, 0x41, 0x8a, 0xaf, 0xe3, 0xd1, 0xd0, 0x0f, 0x33, 0xa8, + 0x07, 0xc1, 0x70, 0xbe, 0x86, 0x47, 0xc3, 0xff, 0x1f, 0x87, 0x73, 0x08, 0x86, 0xc7, 0x37, 0xe1, + 0x4b, 0xbf, 0x92, 0x64, 0x75, 0x98, 0xdb, 0xee, 0x32, 0x1c, 0x61, 0x8b, 0x77, 0x34, 0xfa, 0xa3, + 0xec, 0xe1, 0x1c, 0x91, 0xbb, 0x00, 0xfd, 0x31, 0x0d, 0xfe, 0xab, 0x0c, 0x4a, 0xf9, 0x73, 0x45, + 0x18, 0x0a, 0x2c, 0xd8, 0xd1, 0xf0, 0x5f, 0x63, 0xf0, 0x20, 0x0a, 0xab, 0xce, 0x16, 0xec, 0x68, + 0x01, 0xbf, 0xce, 0x55, 0x67, 0x08, 0x6c, 0x36, 0xbe, 0x56, 0x47, 0xa3, 0x7f, 0x83, 0x5b, 0x9d, + 0x43, 0x72, 0x8f, 0xc0, 0xa0, 0x57, 0x7f, 0xa3, 0xf1, 0xbf, 0xc9, 0xf0, 0x3e, 0x06, 0x5b, 0x20, + 0x50, 0xff, 0xa3, 0x45, 0xfc, 0x16, 0xb7, 0x40, 0x00, 0x85, 0xd3, 0x48, 0x5e, 0xd3, 0xa3, 0x25, + 0x7d, 0x8c, 0xa7, 0x91, 0xb4, 0xa4, 0x63, 0x6f, 0x92, 0x32, 0x18, 0x2d, 0xe2, 0xb7, 0xb9, 0x37, + 0x09, 0x3f, 0x56, 0x43, 0x5e, 0x24, 0xa3, 0x65, 0xfc, 0x2e, 0x57, 0x43, 0x5a, 0x23, 0x73, 0xeb, + 0xa0, 0x77, 0x2f, 0x90, 0xd1, 0xf2, 0x3e, 0xce, 0xe4, 0x8d, 0x77, 0xad, 0x8f, 0xb9, 0xc7, 0x60, + 0x32, 0x7c, 0x71, 0x8c, 0x96, 0xfa, 0x89, 0x37, 0xa4, 0xd7, 0x99, 0xe0, 0xda, 0x98, 0xdb, 0xf4, + 0xab, 0x6c, 0x70, 0x61, 0x8c, 0x16, 0xfb, 0xc9, 0x37, 0xc4, 0x42, 0x1b, 0x5c, 0x17, 0x73, 0x79, + 0x00, 0x7f, 0x4d, 0x8a, 0x96, 0xf5, 0x29, 0x26, 0x2b, 0x00, 0xc2, 0xa9, 0xc1, 0x96, 0xa4, 0x68, + 0xfc, 0xa7, 0x79, 0x6a, 0x30, 0x04, 0x4e, 0x0d, 0xbe, 0x1a, 0x45, 0xa3, 0x9f, 0xe7, 0xa9, 0xc1, + 0x21, 0xb9, 0xcb, 0x90, 0xb2, 0xf6, 0x9a, 0x4d, 0x1c, 0x5b, 0xfa, 0xc1, 0xd7, 0x88, 0xd2, 0xff, + 0xf2, 0x26, 0x03, 0x73, 0x40, 0x6e, 0x09, 0xfa, 0x51, 0xeb, 0x06, 0xaa, 0x47, 0x21, 0xff, 0xf5, + 0x4d, 0x5e, 0x4f, 0x30, 0x77, 0xee, 0x11, 0x00, 0xfa, 0x32, 0x4d, 0x4e, 0x89, 0x22, 0xb0, 0xff, + 0xf6, 0x26, 0xbb, 0xa1, 0xe0, 0x43, 0x7c, 0x01, 0xf4, 0xbe, 0xc3, 0xc1, 0x02, 0x5e, 0x17, 0x05, + 0x90, 0x17, 0xf0, 0x4b, 0x70, 0xe4, 0x09, 0xc7, 0xb6, 0x5c, 0x73, 0x27, 0x0a, 0xfd, 0xef, 0x0c, + 0xcd, 0xf9, 0xb1, 0xc1, 0x5a, 0x76, 0x07, 0xb9, 0xe6, 0x8e, 0x13, 0x85, 0xfd, 0x0f, 0x86, 0xf5, + 0x00, 0x18, 0x5c, 0x33, 0x1d, 0x37, 0xce, 0xbc, 0xff, 0x93, 0x83, 0x39, 0x00, 0x2b, 0x8d, 0x3f, + 0x3f, 0x89, 0xf6, 0xa3, 0xb0, 0x3f, 0xe4, 0x4a, 0x33, 0xfe, 0xdc, 0x43, 0x30, 0x88, 0x3f, 0xd2, + 0x5b, 0x3b, 0x11, 0xe0, 0x1f, 0x31, 0xb0, 0x8f, 0xc0, 0x4f, 0x76, 0xdc, 0xba, 0xdb, 0x88, 0x36, + 0xf6, 0x7f, 0x31, 0x4f, 0x73, 0xfe, 0x5c, 0x1e, 0x86, 0x1c, 0xb7, 0x5e, 0xdf, 0x63, 0x1d, 0x4d, + 0x04, 0xfc, 0xc7, 0x6f, 0x7a, 0x2f, 0xb9, 0x1e, 0xa6, 0x70, 0x32, 0x7c, 0xb3, 0x0e, 0xae, 0xda, + 0x57, 0x6d, 0xba, 0x4d, 0x07, 0x7f, 0xd7, 0x84, 0x4c, 0xcd, 0x6e, 0xdd, 0xb0, 0x9d, 0x33, 0x5e, + 0x21, 0x39, 0xe3, 0xee, 0x22, 0xbc, 0x7e, 0xb0, 0x6d, 0xb6, 0x24, 0xfe, 0x3c, 0x75, 0xb8, 0xbd, + 0x39, 0x72, 0xec, 0x5a, 0x69, 0x60, 0xf5, 0x2a, 0x64, 0xe7, 0x5b, 0x3f, 0x0e, 0x03, 0x44, 0xe1, + 0xb3, 0xe4, 0x74, 0x49, 0x29, 0x24, 0x6f, 0xbe, 0x32, 0xdd, 0x67, 0xb0, 0x31, 0x8f, 0xba, 0x40, + 0xb6, 0x26, 0x13, 0x02, 0x75, 0xc1, 0xa3, 0x9e, 0xa3, 0xbb, 0x93, 0x02, 0xf5, 0x9c, 0x47, 0x5d, + 0x24, 0xfb, 0x94, 0xaa, 0x40, 0x5d, 0xf4, 0xa8, 0x4b, 0x64, 0x2f, 0x7e, 0x44, 0xa0, 0x2e, 0x79, + 0xd4, 0xf3, 0x64, 0x07, 0x3e, 0x29, 0x50, 0xcf, 0x7b, 0xd4, 0x0b, 0x64, 0xf3, 0x7d, 0x5c, 0xa0, + 0x5e, 0xf0, 0xa8, 0x17, 0xc9, 0xa6, 0xbb, 0x2e, 0x50, 0x2f, 0x7a, 0xd4, 0x4b, 0xe4, 0x26, 0xc9, + 0x11, 0x81, 0x7a, 0x49, 0xcf, 0xc0, 0x11, 0x3a, 0xf3, 0x79, 0x72, 0x42, 0x3b, 0xc6, 0xc8, 0x7c, + 0xd0, 0xa7, 0x9f, 0x25, 0xb7, 0x46, 0x06, 0x44, 0xfa, 0x59, 0x9f, 0xbe, 0x40, 0xee, 0x4f, 0x6b, + 0x22, 0x7d, 0xc1, 0xa7, 0x9f, 0x4b, 0x8f, 0x90, 0x9b, 0x33, 0x02, 0xfd, 0x9c, 0x4f, 0x5f, 0x4c, + 0x8f, 0xe2, 0x98, 0x15, 0xe9, 0x8b, 0x3e, 0x7d, 0x29, 0x3d, 0x76, 0x42, 0x99, 0x19, 0x16, 0xe9, + 0x4b, 0xd9, 0x0f, 0x12, 0xf7, 0x5a, 0xbe, 0x7b, 0x27, 0x45, 0xf7, 0x7a, 0x8e, 0x9d, 0x14, 0x1d, + 0xeb, 0xb9, 0x74, 0x52, 0x74, 0xa9, 0xe7, 0xcc, 0x49, 0xd1, 0x99, 0x9e, 0x1b, 0x27, 0x45, 0x37, + 0x7a, 0x0e, 0x9c, 0x14, 0x1d, 0xe8, 0xb9, 0x6e, 0x52, 0x74, 0x9d, 0xe7, 0xb4, 0x49, 0xd1, 0x69, + 0x9e, 0xbb, 0x26, 0x45, 0x77, 0x79, 0x8e, 0x4a, 0x4b, 0x8e, 0xf2, 0x5d, 0x94, 0x96, 0x5c, 0xe4, + 0x3b, 0x27, 0x2d, 0x39, 0xc7, 0x77, 0x4b, 0x5a, 0x72, 0x8b, 0xef, 0x90, 0xb4, 0xe4, 0x10, 0xdf, + 0x15, 0x69, 0xc9, 0x15, 0xbe, 0x13, 0x58, 0x8e, 0x19, 0xa8, 0x1d, 0x92, 0x63, 0xea, 0x81, 0x39, + 0xa6, 0x1e, 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, + 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, 0xc1, 0x39, 0xa6, 0x46, 0xe4, 0x98, + 0x1a, 0x91, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x11, 0x39, 0xa6, 0x46, 0xe4, 0x98, 0xda, 0x33, 0xc7, + 0x7c, 0xf7, 0x4e, 0x8a, 0xee, 0x0d, 0xcd, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, + 0x91, 0x63, 0x6a, 0x8f, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x23, 0xc7, 0xd4, 0x1e, 0x39, 0xa6, + 0xf6, 0xca, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0x3d, 0x73, 0x4c, 0xed, 0x99, 0x63, 0x6a, 0xcf, 0x1c, + 0x53, 0x7b, 0xe6, 0x98, 0x1a, 0xcc, 0xb1, 0xbf, 0x54, 0x41, 0xa7, 0x39, 0xb6, 0x4e, 0xee, 0xf8, + 0x30, 0x57, 0x64, 0xa4, 0x4c, 0x1b, 0xc0, 0xae, 0xd3, 0x7c, 0x97, 0x64, 0xa4, 0x5c, 0x13, 0xe9, + 0x0b, 0x1e, 0x9d, 0x67, 0x9b, 0x48, 0x3f, 0xe7, 0xd1, 0x79, 0xbe, 0x89, 0xf4, 0x45, 0x8f, 0xce, + 0x33, 0x4e, 0xa4, 0x2f, 0x79, 0x74, 0x9e, 0x73, 0x22, 0xfd, 0xbc, 0x47, 0xe7, 0x59, 0x27, 0xd2, + 0x2f, 0x78, 0x74, 0x9e, 0x77, 0x22, 0xfd, 0xa2, 0x47, 0xe7, 0x99, 0x27, 0xd2, 0x2f, 0xe9, 0x27, + 0xe4, 0xdc, 0xe3, 0x0c, 0x9e, 0x6b, 0x4f, 0xc8, 0xd9, 0x27, 0x71, 0x9c, 0xf5, 0x39, 0x78, 0xfe, + 0x49, 0x1c, 0x0b, 0x3e, 0x07, 0xcf, 0x40, 0x89, 0xe3, 0x5c, 0xf6, 0x23, 0xc4, 0x7d, 0x96, 0xec, + 0xbe, 0x29, 0xc9, 0x7d, 0x89, 0x80, 0xeb, 0xa6, 0x24, 0xd7, 0x25, 0x02, 0x6e, 0x9b, 0x92, 0xdc, + 0x96, 0x08, 0xb8, 0x6c, 0x4a, 0x72, 0x59, 0x22, 0xe0, 0xae, 0x29, 0xc9, 0x5d, 0x89, 0x80, 0xab, + 0xa6, 0x24, 0x57, 0x25, 0x02, 0x6e, 0x9a, 0x92, 0xdc, 0x94, 0x08, 0xb8, 0x68, 0x4a, 0x72, 0x51, + 0x22, 0xe0, 0x9e, 0x29, 0xc9, 0x3d, 0x89, 0x80, 0x6b, 0x8e, 0xcb, 0xae, 0x49, 0x04, 0xdd, 0x72, + 0x5c, 0x76, 0x4b, 0x22, 0xe8, 0x92, 0xe3, 0xb2, 0x4b, 0x12, 0x41, 0x77, 0x1c, 0x97, 0xdd, 0x91, + 0x08, 0xba, 0xe2, 0x67, 0x09, 0xde, 0x11, 0x6e, 0xb8, 0x9d, 0xbd, 0x9a, 0x7b, 0x5b, 0x1d, 0xe1, + 0xbc, 0xd0, 0x3e, 0x0c, 0x2d, 0xe8, 0x73, 0xa4, 0x61, 0x0d, 0x76, 0x9c, 0xd2, 0x0a, 0x36, 0x2f, + 0x34, 0x16, 0x01, 0x84, 0x15, 0x8e, 0x58, 0xbc, 0xad, 0xde, 0x70, 0x5e, 0x68, 0x33, 0xa2, 0xf5, + 0xbb, 0xf8, 0x8e, 0x77, 0x6c, 0x2f, 0x25, 0x78, 0xc7, 0xc6, 0xcc, 0x7f, 0xd8, 0x8e, 0x6d, 0x36, + 0xda, 0xe4, 0x9e, 0xb1, 0x67, 0xa3, 0x8d, 0xdd, 0xb5, 0xea, 0xc4, 0xed, 0xe0, 0x66, 0xa3, 0x4d, + 0xeb, 0x19, 0xf5, 0xed, 0xed, 0xb7, 0x58, 0x04, 0x1b, 0xa8, 0x1d, 0x12, 0xc1, 0x87, 0xed, 0xb7, + 0xe6, 0x85, 0x52, 0x72, 0xd8, 0x08, 0x56, 0x0f, 0x1d, 0xc1, 0x87, 0xed, 0xbc, 0xe6, 0x85, 0xf2, + 0x72, 0xe8, 0x08, 0x7e, 0x07, 0xfa, 0x21, 0x16, 0xc1, 0xbe, 0xf9, 0x0f, 0xdb, 0x0f, 0xcd, 0x46, + 0x9b, 0x3c, 0x34, 0x82, 0xd5, 0x43, 0x44, 0x70, 0x9c, 0xfe, 0x68, 0x36, 0xda, 0xb4, 0xe1, 0x11, + 0x7c, 0xdb, 0xdd, 0xcc, 0x67, 0x14, 0x18, 0xaf, 0x34, 0xea, 0xe5, 0xd6, 0x0d, 0x54, 0xaf, 0xa3, + 0x3a, 0xb3, 0xe3, 0xbc, 0x50, 0x09, 0x7a, 0xb8, 0xfa, 0xe5, 0x57, 0xa6, 0x7d, 0x0b, 0x2f, 0x41, + 0x8a, 0xda, 0x74, 0x7e, 0x3e, 0x7d, 0x53, 0x89, 0xa8, 0x70, 0x1e, 0xab, 0x7e, 0x92, 0xc3, 0xce, + 0xce, 0xa7, 0xff, 0x41, 0x09, 0x54, 0x39, 0x6f, 0x38, 0xfb, 0x31, 0xa2, 0xa1, 0x75, 0xdb, 0x1a, + 0x9e, 0x89, 0xa5, 0x61, 0x40, 0xb7, 0xbb, 0xba, 0x74, 0x0b, 0x68, 0xb5, 0x07, 0x63, 0x95, 0x46, + 0xbd, 0x42, 0xfe, 0x72, 0x37, 0x8e, 0x4a, 0x94, 0x47, 0xaa, 0x07, 0xf3, 0x42, 0x58, 0x06, 0x11, + 0x5e, 0x48, 0x8b, 0x35, 0x22, 0xdb, 0xc0, 0x8f, 0xb5, 0x84, 0xc7, 0xce, 0xf6, 0x7a, 0xac, 0x5f, + 0xd9, 0xbd, 0x07, 0xce, 0xf6, 0x7a, 0xa0, 0x9f, 0x43, 0xde, 0xa3, 0x9e, 0xe1, 0x8b, 0x33, 0xbd, + 0x6c, 0xa3, 0x1f, 0x87, 0xc4, 0x32, 0xbd, 0x08, 0x3c, 0x5c, 0x18, 0xc6, 0x4a, 0x7d, 0xf7, 0x95, + 0xe9, 0xe4, 0xd6, 0x5e, 0xa3, 0x6e, 0x24, 0x96, 0xeb, 0xfa, 0x35, 0xe8, 0x7f, 0x1f, 0xfb, 0xfb, + 0x37, 0xcc, 0xb0, 0xc8, 0x18, 0x1e, 0xe8, 0xb9, 0x47, 0x84, 0x1f, 0x7c, 0x86, 0x6e, 0x23, 0xce, + 0x6d, 0x35, 0x2c, 0xf7, 0xec, 0xc2, 0x45, 0x83, 0x8a, 0xc8, 0xfe, 0x4f, 0x00, 0xfa, 0xcc, 0x92, + 0xe9, 0xec, 0xea, 0x15, 0x2e, 0x99, 0x3e, 0xfa, 0xe2, 0x77, 0x5f, 0x99, 0x5e, 0x8c, 0x23, 0xf5, + 0xc1, 0xba, 0xe9, 0xec, 0x3e, 0xe8, 0xee, 0xb7, 0xd1, 0x5c, 0x61, 0xdf, 0x45, 0x0e, 0x97, 0xde, + 0xe6, 0xab, 0x1e, 0x9b, 0x57, 0x3a, 0x30, 0xaf, 0x94, 0x30, 0xa7, 0x2b, 0xe2, 0x9c, 0xe6, 0xdf, + 0xea, 0x7c, 0x9e, 0xe1, 0x8b, 0x84, 0x64, 0x49, 0x35, 0xca, 0x92, 0xea, 0xed, 0x5a, 0xb2, 0xcd, + 0xeb, 0xa3, 0x34, 0x57, 0xf5, 0xa0, 0xb9, 0xaa, 0xb7, 0x33, 0xd7, 0x9f, 0xd0, 0x6c, 0xf5, 0xf2, + 0x69, 0xcb, 0xa2, 0x97, 0x10, 0x7f, 0xb9, 0xf6, 0x82, 0xde, 0xd6, 0x2e, 0x20, 0x97, 0xbc, 0xf9, + 0xc2, 0xb4, 0x92, 0xfd, 0x4c, 0x82, 0xcf, 0x9c, 0x26, 0xd2, 0x5b, 0x9b, 0xf9, 0x2f, 0x4b, 0x4f, + 0xf5, 0x4e, 0x58, 0xe8, 0x79, 0x05, 0x26, 0xbb, 0x2a, 0x39, 0x35, 0xd3, 0xdb, 0x5b, 0xce, 0xad, + 0xc3, 0x96, 0x73, 0xa6, 0xe0, 0xd7, 0x14, 0x38, 0x2a, 0x95, 0x57, 0xaa, 0xde, 0x19, 0x49, 0xbd, + 0x63, 0xdd, 0x4f, 0x22, 0x8c, 0x01, 0xed, 0x82, 0xee, 0x95, 0x00, 0x01, 0xc9, 0x9e, 0xdf, 0x17, + 0x25, 0xbf, 0x1f, 0xf7, 0x00, 0x21, 0xe6, 0xe2, 0x11, 0xc0, 0xd4, 0xb6, 0x21, 0xb9, 0xd9, 0x41, + 0x48, 0xcf, 0x40, 0x62, 0xad, 0xc3, 0x34, 0x1c, 0xa5, 0xf8, 0xb5, 0x4e, 0xa1, 0x63, 0x5a, 0xb5, + 0x5d, 0x23, 0xb1, 0xd6, 0xd1, 0x4f, 0x82, 0x9a, 0x67, 0xbf, 0x30, 0x30, 0xb4, 0x30, 0x46, 0x19, + 0xf2, 0x56, 0x9d, 0x71, 0x60, 0x9a, 0x9e, 0x81, 0xe4, 0x0a, 0x32, 0xb7, 0x99, 0x12, 0x40, 0x79, + 0xf0, 0x88, 0x41, 0xc6, 0xd9, 0x03, 0x1f, 0x87, 0x14, 0x17, 0xac, 0x9f, 0xc2, 0x88, 0x6d, 0x97, + 0x3d, 0x96, 0x21, 0xb0, 0x3a, 0x6c, 0xe5, 0x22, 0x54, 0xfd, 0x34, 0xf4, 0x1b, 0x8d, 0x9d, 0x5d, + 0x97, 0x3d, 0xbc, 0x9b, 0x8d, 0x92, 0xb3, 0xd7, 0x61, 0xd0, 0xd3, 0xe8, 0x6d, 0x16, 0x5d, 0xa2, + 0x53, 0xd3, 0xa7, 0x82, 0xeb, 0x09, 0xdf, 0xb7, 0xa4, 0x43, 0xfa, 0x09, 0x48, 0x6d, 0xb8, 0x1d, + 0xbf, 0xe8, 0xf3, 0x8e, 0xd4, 0x1b, 0xcd, 0x7e, 0x50, 0x81, 0x54, 0x09, 0xa1, 0x36, 0x31, 0xf8, + 0xbd, 0x90, 0x2c, 0xd9, 0x4f, 0x5b, 0x4c, 0xc1, 0x71, 0x66, 0x51, 0x4c, 0x66, 0x36, 0x25, 0x64, + 0xfd, 0xde, 0xa0, 0xdd, 0x27, 0x3c, 0xbb, 0x07, 0xf8, 0x88, 0xed, 0xb3, 0x82, 0xed, 0x99, 0x03, + 0x31, 0x53, 0x97, 0xfd, 0x2f, 0xc0, 0x50, 0xe0, 0x29, 0xfa, 0x0c, 0x53, 0x23, 0x21, 0x03, 0x83, + 0xb6, 0xc2, 0x1c, 0x59, 0x04, 0x23, 0xc2, 0x83, 0x31, 0x34, 0x60, 0xe2, 0x1e, 0x50, 0x62, 0xe6, + 0x59, 0xd1, 0xcc, 0xe1, 0xac, 0xcc, 0xd4, 0xf3, 0xd4, 0x46, 0xc4, 0xdc, 0xa7, 0x68, 0x70, 0xf6, + 0x76, 0x22, 0xfe, 0x9c, 0xed, 0x07, 0xb5, 0xd2, 0x68, 0x66, 0x1f, 0x02, 0xa0, 0x29, 0x5f, 0xb6, + 0xf6, 0x5a, 0x52, 0xd6, 0x8d, 0x72, 0x03, 0x6f, 0xee, 0xa2, 0x4d, 0xe4, 0x10, 0x16, 0xb1, 0x9f, + 0xc2, 0x05, 0x06, 0x68, 0x8a, 0x11, 0xfc, 0xfd, 0x91, 0xf8, 0xd0, 0x4e, 0x0c, 0xb3, 0xa6, 0x29, + 0xeb, 0x75, 0xe4, 0xe6, 0x2d, 0xdb, 0xdd, 0x45, 0x1d, 0x09, 0xb1, 0xa0, 0x9f, 0x13, 0x12, 0x76, + 0x74, 0xe1, 0x2e, 0x0f, 0xd1, 0x13, 0x74, 0x2e, 0xfb, 0x15, 0xa2, 0x20, 0x6e, 0x05, 0xba, 0x26, + 0xa8, 0xc6, 0x98, 0xa0, 0x7e, 0x5e, 0xe8, 0xdf, 0x0e, 0x50, 0x53, 0x7a, 0xb5, 0xbc, 0x24, 0xbc, + 0xe7, 0x1c, 0xac, 0xac, 0xf8, 0x8e, 0xc9, 0x6d, 0xca, 0x55, 0xbe, 0x3f, 0x52, 0xe5, 0x1e, 0xdd, + 0xed, 0x61, 0x6d, 0xaa, 0xc6, 0xb5, 0xe9, 0x37, 0xbd, 0x8e, 0x83, 0xfe, 0x56, 0x03, 0xf9, 0x69, + 0x10, 0xfd, 0x81, 0x48, 0xdf, 0xe7, 0x94, 0xa2, 0xa7, 0xea, 0x62, 0x5c, 0xf7, 0xe7, 0x12, 0x85, + 0x82, 0xa7, 0xee, 0x85, 0x43, 0x84, 0x40, 0x2e, 0x51, 0x2c, 0x7a, 0x65, 0x3b, 0xf5, 0x91, 0x17, + 0xa6, 0x95, 0x17, 0x5f, 0x98, 0xee, 0xcb, 0x7e, 0x51, 0x81, 0x71, 0xc6, 0x19, 0x08, 0xdc, 0x07, + 0x25, 0xe5, 0xef, 0xe0, 0x35, 0x23, 0xcc, 0x02, 0x3f, 0xb7, 0xe0, 0xfd, 0xb6, 0x02, 0xe9, 0x2e, + 0x5d, 0xb9, 0xbd, 0xe7, 0x63, 0xa9, 0x9c, 0x53, 0xca, 0xbf, 0x78, 0x9b, 0x5f, 0x87, 0xfe, 0xcd, + 0x46, 0x0b, 0x75, 0xf0, 0x4a, 0x80, 0x3f, 0x50, 0x95, 0xf9, 0x61, 0x0e, 0x1d, 0xe2, 0x34, 0xaa, + 0x9c, 0x40, 0x5b, 0xd0, 0xd3, 0x90, 0x2c, 0x99, 0xae, 0x49, 0x34, 0x18, 0xf6, 0xea, 0xab, 0xe9, + 0x9a, 0xd9, 0x73, 0x30, 0xbc, 0xba, 0x4f, 0x6e, 0xca, 0xd4, 0xc9, 0x2d, 0x10, 0xb1, 0xfb, 0xe3, + 0xfd, 0xea, 0xd9, 0xd9, 0xfe, 0x54, 0x5d, 0xbb, 0xa9, 0xe4, 0x92, 0x44, 0x9f, 0xa7, 0x60, 0x74, + 0x0d, 0xab, 0x4d, 0x70, 0x02, 0x8c, 0x3e, 0x5d, 0xf5, 0x26, 0x2f, 0x35, 0x65, 0xaa, 0xdf, 0x94, + 0x9d, 0x00, 0x65, 0x55, 0x6c, 0x9d, 0x82, 0x7a, 0x18, 0xca, 0xea, 0x6c, 0x32, 0x35, 0xaa, 0x8d, + 0xcf, 0x26, 0x53, 0xa0, 0x8d, 0xb0, 0xe7, 0xfe, 0xad, 0x0a, 0x1a, 0x6d, 0x75, 0x4a, 0x68, 0xbb, + 0x61, 0x35, 0xdc, 0xee, 0x7e, 0xd5, 0xd3, 0x58, 0x7f, 0x04, 0x06, 0xb1, 0x49, 0xaf, 0xb0, 0x5f, + 0xd8, 0xc2, 0xa6, 0x3f, 0xc9, 0x5a, 0x14, 0x49, 0x04, 0x1b, 0x20, 0xa1, 0xe3, 0x63, 0xf4, 0x2b, + 0xa0, 0x56, 0x2a, 0xab, 0x6c, 0x71, 0x5b, 0x3c, 0x10, 0xca, 0x2e, 0xda, 0xb0, 0x6f, 0x6c, 0xcc, + 0xd9, 0x31, 0xb0, 0x00, 0x7d, 0x11, 0x12, 0x95, 0x55, 0xd6, 0xf0, 0x9e, 0x8a, 0x23, 0xc6, 0x48, + 0x54, 0x56, 0xa7, 0xfe, 0x4a, 0x81, 0x11, 0x61, 0x54, 0xcf, 0xc2, 0x30, 0x1d, 0x08, 0x4c, 0x77, + 0xc0, 0x10, 0xc6, 0xb8, 0xce, 0x89, 0xdb, 0xd4, 0x79, 0x2a, 0x0f, 0x63, 0xd2, 0xb8, 0x3e, 0x07, + 0x7a, 0x70, 0x88, 0x29, 0x41, 0x7f, 0x9d, 0x28, 0x84, 0x92, 0xbd, 0x1b, 0xc0, 0xb7, 0xab, 0xf7, + 0xa3, 0x3a, 0x95, 0xf2, 0xc6, 0x66, 0xb9, 0xa4, 0x29, 0xd9, 0xaf, 0x2b, 0x30, 0xc4, 0xda, 0xd6, + 0x9a, 0xdd, 0x46, 0x7a, 0x01, 0x94, 0x3c, 0x8b, 0x87, 0xb7, 0xa6, 0xb7, 0x92, 0xd7, 0xcf, 0x80, + 0x52, 0x88, 0xef, 0x6a, 0xa5, 0xa0, 0x2f, 0x80, 0x52, 0x64, 0x0e, 0x8e, 0xe7, 0x19, 0xa5, 0x98, + 0xfd, 0x91, 0x0a, 0x13, 0xc1, 0x36, 0x9a, 0xd7, 0x93, 0x93, 0xe2, 0x7b, 0x53, 0x6e, 0xf0, 0xec, + 0xc2, 0xb9, 0xc5, 0x39, 0xfc, 0x8f, 0x17, 0x92, 0x27, 0xc5, 0x57, 0xa8, 0x6e, 0x96, 0xae, 0x6b, + 0x22, 0xb9, 0x64, 0x80, 0xda, 0x75, 0x4d, 0x44, 0xa0, 0x76, 0x5d, 0x13, 0x11, 0xa8, 0x5d, 0xd7, + 0x44, 0x04, 0x6a, 0xd7, 0x51, 0x80, 0x40, 0xed, 0xba, 0x26, 0x22, 0x50, 0xbb, 0xae, 0x89, 0x08, + 0xd4, 0xee, 0x6b, 0x22, 0x8c, 0xdc, 0xf3, 0x9a, 0x88, 0x48, 0xef, 0xbe, 0x26, 0x22, 0xd2, 0xbb, + 0xaf, 0x89, 0xe4, 0x92, 0x6e, 0x67, 0x0f, 0xf5, 0x3e, 0x74, 0x10, 0xf1, 0x07, 0xbd, 0x03, 0xfa, + 0x05, 0x78, 0x0d, 0xc6, 0xe8, 0x7e, 0x44, 0xd1, 0xb6, 0x5c, 0xb3, 0x61, 0xa1, 0x8e, 0xfe, 0x6e, + 0x18, 0xa6, 0x43, 0xf4, 0x2d, 0x27, 0xec, 0x2d, 0x90, 0xd2, 0x59, 0xb9, 0x15, 0xb8, 0xb3, 0x3f, + 0x4b, 0xc2, 0x24, 0x1d, 0xa8, 0x98, 0x2d, 0x24, 0x5c, 0x32, 0x3a, 0x2d, 0x1d, 0x29, 0x8d, 0x62, + 0xf8, 0xad, 0x57, 0xa6, 0xe9, 0x68, 0xde, 0x0b, 0xa6, 0xd3, 0xd2, 0xe1, 0x92, 0xc8, 0xe7, 0xaf, + 0x3f, 0xa7, 0xa5, 0x8b, 0x47, 0x22, 0x9f, 0xb7, 0xdc, 0x78, 0x7c, 0xfc, 0x0a, 0x92, 0xc8, 0x57, + 0xf2, 0xa2, 0xec, 0xb4, 0x74, 0x19, 0x49, 0xe4, 0x2b, 0x7b, 0xf1, 0x76, 0x5a, 0x3a, 0x7a, 0x12, + 0xf9, 0xae, 0x78, 0x91, 0x77, 0x5a, 0x3a, 0x84, 0x12, 0xf9, 0xae, 0x7a, 0x31, 0x78, 0x5a, 0xba, + 0xaa, 0x24, 0xf2, 0x3d, 0xea, 0x45, 0xe3, 0x69, 0xe9, 0xd2, 0x92, 0xc8, 0xb7, 0xec, 0xc5, 0xe5, + 0x8c, 0x7c, 0x7d, 0x49, 0x64, 0xbc, 0xe6, 0x47, 0xe8, 0x8c, 0x7c, 0x91, 0x49, 0xe4, 0x7c, 0x8f, + 0x1f, 0xab, 0x33, 0xf2, 0x95, 0x26, 0x91, 0x73, 0xc5, 0x8f, 0xda, 0x19, 0xf9, 0xa8, 0x4c, 0xe4, + 0x5c, 0xf5, 0xe3, 0x77, 0x46, 0x3e, 0x34, 0x13, 0x39, 0x2b, 0x7e, 0x24, 0xcf, 0xc8, 0xc7, 0x67, + 0x22, 0xe7, 0x9a, 0xbf, 0x87, 0xfe, 0x2d, 0x29, 0xfc, 0x02, 0x97, 0xa0, 0xb2, 0x52, 0xf8, 0x41, + 0x48, 0xe8, 0x65, 0xa5, 0xd0, 0x83, 0x90, 0xb0, 0xcb, 0x4a, 0x61, 0x07, 0x21, 0x21, 0x97, 0x95, + 0x42, 0x0e, 0x42, 0xc2, 0x2d, 0x2b, 0x85, 0x1b, 0x84, 0x84, 0x5a, 0x56, 0x0a, 0x35, 0x08, 0x09, + 0xb3, 0xac, 0x14, 0x66, 0x10, 0x12, 0x62, 0x59, 0x29, 0xc4, 0x20, 0x24, 0xbc, 0xb2, 0x52, 0x78, + 0x41, 0x48, 0x68, 0x9d, 0x92, 0x43, 0x0b, 0xc2, 0xc2, 0xea, 0x94, 0x1c, 0x56, 0x10, 0x16, 0x52, + 0xf7, 0xc8, 0x21, 0x35, 0x78, 0xeb, 0x95, 0xe9, 0x7e, 0x3c, 0x14, 0x88, 0xa6, 0x53, 0x72, 0x34, + 0x41, 0x58, 0x24, 0x9d, 0x92, 0x23, 0x09, 0xc2, 0xa2, 0xe8, 0x94, 0x1c, 0x45, 0x10, 0x16, 0x41, + 0x2f, 0xc9, 0x11, 0xe4, 0x5f, 0xf1, 0xc9, 0x4a, 0x27, 0x8a, 0x51, 0x11, 0xa4, 0xc6, 0x88, 0x20, + 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, + 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x38, 0x11, 0xa4, 0xc6, 0x8a, 0x20, 0xb5, 0x57, 0x04, 0x9d, 0x92, + 0x2f, 0x3c, 0x40, 0x58, 0x41, 0x3a, 0x25, 0x9f, 0x7c, 0x46, 0x87, 0x90, 0x1a, 0x2b, 0x84, 0xd4, + 0x5e, 0x21, 0xf4, 0x2d, 0x15, 0x26, 0x84, 0x10, 0x62, 0xc7, 0x43, 0x6f, 0x57, 0x05, 0x3a, 0x1f, + 0xe3, 0x7e, 0x45, 0x58, 0x4c, 0x9d, 0x8f, 0x71, 0x46, 0x7d, 0x50, 0x9c, 0x75, 0x57, 0xa1, 0x72, + 0x8c, 0x2a, 0x74, 0xc5, 0x8b, 0xa1, 0xf3, 0x31, 0xee, 0x5d, 0x74, 0xc7, 0xde, 0xc5, 0x83, 0x8a, + 0xc0, 0xa3, 0xb1, 0x8a, 0xc0, 0x72, 0xac, 0x22, 0x70, 0xcd, 0xf7, 0xe0, 0x87, 0x13, 0x70, 0xd4, + 0xf7, 0x20, 0xfd, 0x44, 0x7e, 0x09, 0x29, 0x1b, 0x38, 0xa1, 0xd2, 0xf9, 0xa9, 0x4d, 0xc0, 0x8d, + 0x89, 0xe5, 0xba, 0xbe, 0x2e, 0x9e, 0x55, 0xe5, 0x0e, 0x7b, 0x7e, 0x13, 0xf0, 0x38, 0xdb, 0x0b, + 0x3d, 0x05, 0xea, 0x72, 0xdd, 0x21, 0xd5, 0x22, 0xec, 0xb1, 0x45, 0x03, 0x93, 0x75, 0x03, 0x06, + 0x08, 0xbb, 0x43, 0xdc, 0x7b, 0x3b, 0x0f, 0x2e, 0x19, 0x4c, 0x52, 0xf6, 0x25, 0x05, 0x4e, 0x08, + 0xa1, 0xfc, 0xf6, 0x9c, 0x18, 0x5c, 0x8e, 0x75, 0x62, 0x20, 0x24, 0x88, 0x7f, 0x7a, 0x70, 0x5f, + 0xf7, 0x41, 0x75, 0x30, 0x4b, 0xe4, 0x93, 0x84, 0xff, 0x05, 0xa3, 0xfe, 0x0c, 0xc8, 0x2b, 0xdb, + 0x52, 0xf4, 0x66, 0x66, 0x58, 0x6a, 0x2e, 0x49, 0x9b, 0x68, 0x07, 0xc2, 0xbc, 0x6c, 0xcd, 0xe6, + 0x60, 0xac, 0x22, 0xfe, 0xc9, 0x4e, 0xd4, 0x5e, 0x44, 0x0a, 0xb7, 0xe6, 0x37, 0x3f, 0x3b, 0xdd, + 0x97, 0x7d, 0x00, 0x86, 0x83, 0x7f, 0x95, 0x23, 0x01, 0x07, 0x39, 0x30, 0x97, 0x7c, 0x19, 0x73, + 0xff, 0x8e, 0x02, 0x77, 0x04, 0xd9, 0x1f, 0x6b, 0xb8, 0xbb, 0xcb, 0x16, 0xee, 0xe9, 0x1f, 0x82, + 0x14, 0x62, 0x8e, 0x63, 0x3f, 0x6a, 0xc2, 0x5e, 0x23, 0x43, 0xd9, 0xe7, 0xc8, 0xbf, 0x86, 0x07, + 0x91, 0x36, 0x41, 0xf8, 0x63, 0x17, 0xa6, 0xee, 0x85, 0x7e, 0x2a, 0x5f, 0xd4, 0x6b, 0x44, 0xd2, + 0xeb, 0xf3, 0x21, 0x7a, 0x91, 0x38, 0xd2, 0xaf, 0x09, 0x7a, 0x05, 0xde, 0x56, 0x43, 0xd9, 0xe7, + 0x78, 0xf0, 0x15, 0x52, 0xb8, 0xff, 0x23, 0x11, 0x15, 0xad, 0xe4, 0x0c, 0xa4, 0xca, 0x32, 0x4f, + 0xb8, 0x9e, 0x25, 0x48, 0x56, 0xec, 0x3a, 0xf9, 0xb9, 0x15, 0xf2, 0xb3, 0xb8, 0xcc, 0xc8, 0xec, + 0x37, 0x72, 0x4f, 0x43, 0xaa, 0xb8, 0xdb, 0x68, 0xd6, 0x3b, 0xc8, 0x62, 0x47, 0xf6, 0x6c, 0x07, + 0x1d, 0x63, 0x0c, 0x8f, 0x96, 0x2d, 0xc2, 0x78, 0xc5, 0xb6, 0x0a, 0xfb, 0x6e, 0xb0, 0x6e, 0xcc, + 0x49, 0x29, 0xc2, 0x8e, 0x7c, 0xc8, 0xdf, 0x79, 0x60, 0x86, 0x42, 0xff, 0x77, 0x5f, 0x99, 0x56, + 0x36, 0xbd, 0xed, 0xf3, 0x55, 0x38, 0xc6, 0xd2, 0xa7, 0x4b, 0xd4, 0x42, 0x94, 0xa8, 0x41, 0x76, + 0x4c, 0x1d, 0x10, 0xb7, 0x8c, 0xc5, 0x59, 0xa1, 0xe2, 0xde, 0x9a, 0x66, 0xb8, 0x29, 0x3a, 0x50, + 0x33, 0xf5, 0x50, 0x9a, 0x85, 0x8a, 0x9b, 0x8b, 0x12, 0x27, 0x69, 0x76, 0x0f, 0x0c, 0x7a, 0xb4, + 0x40, 0x34, 0x04, 0x33, 0x65, 0x61, 0x36, 0x0b, 0x43, 0x81, 0x84, 0xd5, 0xfb, 0x41, 0xc9, 0x6b, + 0x7d, 0xf8, 0xbf, 0x82, 0xa6, 0xe0, 0xff, 0x8a, 0x5a, 0x62, 0xf6, 0x5e, 0x18, 0x93, 0xb6, 0x2f, + 0x31, 0xa5, 0xa4, 0x01, 0xfe, 0xaf, 0xac, 0x0d, 0x4d, 0x25, 0x3f, 0xf2, 0xfb, 0x99, 0xbe, 0xd9, + 0xcb, 0xa0, 0x77, 0x6f, 0x74, 0xea, 0x03, 0x90, 0xc8, 0x63, 0x91, 0xc7, 0x20, 0x51, 0x28, 0x68, + 0xca, 0xd4, 0xd8, 0xff, 0xff, 0xf4, 0x89, 0xa1, 0x02, 0xf9, 0x93, 0xe3, 0xeb, 0xc8, 0x2d, 0x14, + 0x18, 0xf8, 0x61, 0xb8, 0x23, 0x74, 0xa3, 0x14, 0xe3, 0x8b, 0x45, 0x8a, 0x2f, 0x95, 0xba, 0xf0, + 0xa5, 0x12, 0xc1, 0x2b, 0x39, 0x7e, 0xe0, 0x9c, 0xd7, 0x43, 0x36, 0x19, 0xd3, 0xf5, 0xc0, 0x01, + 0x77, 0x3e, 0xf7, 0x30, 0xe3, 0x2d, 0x84, 0xf2, 0xa2, 0x88, 0x03, 0xeb, 0x42, 0xae, 0xc8, 0xf0, + 0xc5, 0x50, 0xfc, 0xb6, 0x74, 0xaa, 0x2a, 0xae, 0x10, 0x4c, 0x48, 0xd1, 0x53, 0xb8, 0x14, 0x2a, + 0x64, 0x37, 0x70, 0xd7, 0xbd, 0xe4, 0x29, 0x5c, 0x0e, 0xe5, 0x6d, 0x44, 0xdc, 0xf9, 0x2a, 0xe7, + 0xce, 0xb0, 0x45, 0x3e, 0x7f, 0x56, 0xbf, 0x83, 0xe7, 0xa8, 0x50, 0x81, 0x99, 0x81, 0x38, 0x57, + 0xae, 0xc8, 0x00, 0x85, 0x9e, 0x80, 0xde, 0x56, 0xe2, 0xc8, 0xdc, 0xa3, 0x4c, 0x48, 0xb1, 0xa7, + 0x90, 0x08, 0x53, 0x71, 0x78, 0x61, 0xf3, 0xe6, 0xab, 0x99, 0xbe, 0x97, 0x5f, 0xcd, 0xf4, 0xfd, + 0xe3, 0xab, 0x99, 0xbe, 0xef, 0xbd, 0x9a, 0x51, 0x7e, 0xf0, 0x6a, 0x46, 0xf9, 0xe1, 0xab, 0x19, + 0xe5, 0xa7, 0xaf, 0x66, 0x94, 0xe7, 0x6e, 0x65, 0x94, 0x17, 0x6f, 0x65, 0x94, 0xaf, 0xdc, 0xca, + 0x28, 0xdf, 0xb8, 0x95, 0x51, 0x5e, 0xba, 0x95, 0x51, 0x6e, 0xde, 0xca, 0x28, 0x2f, 0xdf, 0xca, + 0xf4, 0x7d, 0xef, 0x56, 0x46, 0xf9, 0xc1, 0xad, 0x4c, 0xdf, 0x0f, 0x6f, 0x65, 0x94, 0x9f, 0xde, + 0xca, 0xf4, 0x3d, 0xf7, 0x5a, 0xa6, 0xef, 0x85, 0xd7, 0x32, 0x7d, 0x2f, 0xbe, 0x96, 0x51, 0xfe, + 0x3b, 0x00, 0x00, 0xff, 0xff, 0xfa, 0x27, 0x61, 0xe8, 0xaa, 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/combos/unmarshaler/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/combos/unmarshaler/thetest.pb.go index e4436ae5a..c6ef9ff12 100644 --- a/vendor/github.com/gogo/protobuf/test/combos/unmarshaler/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/combos/unmarshaler/thetest.pb.go @@ -6969,407 +6969,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6393 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x70, 0x24, 0x57, - 0x75, 0xbf, 0x7a, 0x7a, 0xa4, 0x1d, 0x9d, 0xd1, 0xa3, 0xd5, 0xbb, 0x96, 0xc7, 0xf2, 0x7a, 0xa4, - 0x1d, 0xaf, 0xd7, 0xb2, 0xb0, 0xb5, 0x5a, 0xad, 0xf6, 0x35, 0x8b, 0xed, 0x9a, 0xd7, 0xca, 0xda, - 0xff, 0xea, 0x41, 0x4b, 0x02, 0x1b, 0xfe, 0x55, 0x53, 0xbd, 0x33, 0x57, 0xd2, 0xd8, 0x33, 0xdd, - 0x93, 0xe9, 0x1e, 0xdb, 0xf2, 0x87, 0x94, 0x81, 0x84, 0x40, 0xa8, 0x3c, 0x49, 0x2a, 0x3c, 0x8d, - 0x21, 0x45, 0x30, 0xe4, 0x05, 0x09, 0x21, 0x14, 0x95, 0x0a, 0xfe, 0x42, 0xb2, 0xf9, 0x90, 0x94, - 0xc9, 0xa7, 0x14, 0x95, 0x72, 0xe1, 0x85, 0xaa, 0x90, 0xc4, 0x49, 0x20, 0xb8, 0x0a, 0xaa, 0xcc, - 0x87, 0xd4, 0x7d, 0x75, 0xf7, 0xbd, 0xd3, 0xa3, 0x6e, 0x79, 0x6d, 0xe0, 0xcb, 0xee, 0xcc, 0x3d, - 0xe7, 0x77, 0xfa, 0xdc, 0xf3, 0xba, 0xa7, 0xef, 0xbd, 0x1a, 0x78, 0xef, 0x12, 0xcc, 0xec, 0xda, - 0xf6, 0x6e, 0x13, 0x9d, 0x6e, 0x77, 0x6c, 0xd7, 0xbe, 0xde, 0xdd, 0x39, 0x5d, 0x47, 0x4e, 0xad, - 0xd3, 0x68, 0xbb, 0x76, 0x67, 0x9e, 0x8c, 0xe9, 0xe3, 0x94, 0x63, 0x9e, 0x73, 0xe4, 0x56, 0x61, - 0xe2, 0x4a, 0xa3, 0x89, 0xca, 0x1e, 0xe3, 0x26, 0x72, 0xf5, 0x8b, 0x90, 0xdc, 0x69, 0x34, 0x51, - 0x46, 0x99, 0x51, 0x67, 0xd3, 0x8b, 0x27, 0xe7, 0x25, 0xd0, 0xbc, 0x88, 0xd8, 0xc0, 0xc3, 0x06, - 0x41, 0xe4, 0xbe, 0x97, 0x84, 0xa3, 0x21, 0x54, 0x5d, 0x87, 0xa4, 0x65, 0xb6, 0xb0, 0x44, 0x65, - 0x76, 0xd8, 0x20, 0x9f, 0xf5, 0x0c, 0x1c, 0x69, 0x9b, 0xb5, 0x27, 0xcc, 0x5d, 0x94, 0x49, 0x90, - 0x61, 0xfe, 0x55, 0xcf, 0x02, 0xd4, 0x51, 0x1b, 0x59, 0x75, 0x64, 0xd5, 0xf6, 0x33, 0xea, 0x8c, - 0x3a, 0x3b, 0x6c, 0x04, 0x46, 0xf4, 0xb7, 0xc1, 0x44, 0xbb, 0x7b, 0xbd, 0xd9, 0xa8, 0x55, 0x03, - 0x6c, 0x30, 0xa3, 0xce, 0x0e, 0x1a, 0x1a, 0x25, 0x94, 0x7d, 0xe6, 0x7b, 0x61, 0xfc, 0x29, 0x64, - 0x3e, 0x11, 0x64, 0x4d, 0x13, 0xd6, 0x31, 0x3c, 0x1c, 0x60, 0x2c, 0xc1, 0x48, 0x0b, 0x39, 0x8e, - 0xb9, 0x8b, 0xaa, 0xee, 0x7e, 0x1b, 0x65, 0x92, 0x64, 0xf6, 0x33, 0x3d, 0xb3, 0x97, 0x67, 0x9e, - 0x66, 0xa8, 0xad, 0xfd, 0x36, 0xd2, 0x0b, 0x30, 0x8c, 0xac, 0x6e, 0x8b, 0x4a, 0x18, 0xec, 0x63, - 0xbf, 0x8a, 0xd5, 0x6d, 0xc9, 0x52, 0x52, 0x18, 0xc6, 0x44, 0x1c, 0x71, 0x50, 0xe7, 0xc9, 0x46, - 0x0d, 0x65, 0x86, 0x88, 0x80, 0x7b, 0x7b, 0x04, 0x6c, 0x52, 0xba, 0x2c, 0x83, 0xe3, 0xf4, 0x12, - 0x0c, 0xa3, 0xa7, 0x5d, 0x64, 0x39, 0x0d, 0xdb, 0xca, 0x1c, 0x21, 0x42, 0xee, 0x09, 0xf1, 0x22, - 0x6a, 0xd6, 0x65, 0x11, 0x3e, 0x4e, 0x3f, 0x0f, 0x47, 0xec, 0xb6, 0xdb, 0xb0, 0x2d, 0x27, 0x93, - 0x9a, 0x51, 0x66, 0xd3, 0x8b, 0xc7, 0x43, 0x03, 0x61, 0x9d, 0xf2, 0x18, 0x9c, 0x59, 0x5f, 0x01, - 0xcd, 0xb1, 0xbb, 0x9d, 0x1a, 0xaa, 0xd6, 0xec, 0x3a, 0xaa, 0x36, 0xac, 0x1d, 0x3b, 0x33, 0x4c, - 0x04, 0x4c, 0xf7, 0x4e, 0x84, 0x30, 0x96, 0xec, 0x3a, 0x5a, 0xb1, 0x76, 0x6c, 0x63, 0xcc, 0x11, - 0xbe, 0xeb, 0x93, 0x30, 0xe4, 0xec, 0x5b, 0xae, 0xf9, 0x74, 0x66, 0x84, 0x44, 0x08, 0xfb, 0x96, - 0xfb, 0xf1, 0x20, 0x8c, 0xc7, 0x09, 0xb1, 0xcb, 0x30, 0xb8, 0x83, 0x67, 0x99, 0x49, 0x1c, 0xc6, - 0x06, 0x14, 0x23, 0x1a, 0x71, 0xe8, 0x0d, 0x1a, 0xb1, 0x00, 0x69, 0x0b, 0x39, 0x2e, 0xaa, 0xd3, - 0x88, 0x50, 0x63, 0xc6, 0x14, 0x50, 0x50, 0x6f, 0x48, 0x25, 0xdf, 0x50, 0x48, 0x3d, 0x0a, 0xe3, - 0x9e, 0x4a, 0xd5, 0x8e, 0x69, 0xed, 0xf2, 0xd8, 0x3c, 0x1d, 0xa5, 0xc9, 0x7c, 0x85, 0xe3, 0x0c, - 0x0c, 0x33, 0xc6, 0x90, 0xf0, 0x5d, 0x2f, 0x03, 0xd8, 0x16, 0xb2, 0x77, 0xaa, 0x75, 0x54, 0x6b, - 0x66, 0x52, 0x7d, 0xac, 0xb4, 0x8e, 0x59, 0x7a, 0xac, 0x64, 0xd3, 0xd1, 0x5a, 0x53, 0xbf, 0xe4, - 0x87, 0xda, 0x91, 0x3e, 0x91, 0xb2, 0x4a, 0x93, 0xac, 0x27, 0xda, 0xb6, 0x61, 0xac, 0x83, 0x70, - 0xdc, 0xa3, 0x3a, 0x9b, 0xd9, 0x30, 0x51, 0x62, 0x3e, 0x72, 0x66, 0x06, 0x83, 0xd1, 0x89, 0x8d, - 0x76, 0x82, 0x5f, 0xf5, 0xbb, 0xc1, 0x1b, 0xa8, 0x92, 0xb0, 0x02, 0x52, 0x85, 0x46, 0xf8, 0xe0, - 0x9a, 0xd9, 0x42, 0x53, 0x17, 0x61, 0x4c, 0x34, 0x8f, 0x7e, 0x0c, 0x06, 0x1d, 0xd7, 0xec, 0xb8, - 0x24, 0x0a, 0x07, 0x0d, 0xfa, 0x45, 0xd7, 0x40, 0x45, 0x56, 0x9d, 0x54, 0xb9, 0x41, 0x03, 0x7f, - 0x9c, 0xba, 0x00, 0xa3, 0xc2, 0xe3, 0xe3, 0x02, 0x73, 0x1f, 0x1d, 0x82, 0x63, 0x61, 0x31, 0x17, - 0x1a, 0xfe, 0x93, 0x30, 0x64, 0x75, 0x5b, 0xd7, 0x51, 0x27, 0xa3, 0x12, 0x09, 0xec, 0x9b, 0x5e, - 0x80, 0xc1, 0xa6, 0x79, 0x1d, 0x35, 0x33, 0xc9, 0x19, 0x65, 0x76, 0x6c, 0xf1, 0x6d, 0xb1, 0xa2, - 0x7a, 0xfe, 0x1a, 0x86, 0x18, 0x14, 0xa9, 0x3f, 0x04, 0x49, 0x56, 0xe2, 0xb0, 0x84, 0xb9, 0x78, - 0x12, 0x70, 0x2c, 0x1a, 0x04, 0xa7, 0xdf, 0x09, 0xc3, 0xf8, 0x7f, 0x6a, 0xdb, 0x21, 0xa2, 0x73, - 0x0a, 0x0f, 0x60, 0xbb, 0xea, 0x53, 0x90, 0x22, 0x61, 0x56, 0x47, 0x7c, 0x69, 0xf0, 0xbe, 0x63, - 0xc7, 0xd4, 0xd1, 0x8e, 0xd9, 0x6d, 0xba, 0xd5, 0x27, 0xcd, 0x66, 0x17, 0x91, 0x80, 0x19, 0x36, - 0x46, 0xd8, 0xe0, 0x3b, 0xf1, 0x98, 0x3e, 0x0d, 0x69, 0x1a, 0x95, 0x0d, 0xab, 0x8e, 0x9e, 0x26, - 0xd5, 0x67, 0xd0, 0xa0, 0x81, 0xba, 0x82, 0x47, 0xf0, 0xe3, 0x1f, 0x77, 0x6c, 0x8b, 0xbb, 0x96, - 0x3c, 0x02, 0x0f, 0x90, 0xc7, 0x5f, 0x90, 0x0b, 0xdf, 0x5d, 0xe1, 0xd3, 0x93, 0x63, 0x31, 0xf7, - 0xd5, 0x04, 0x24, 0x49, 0xbe, 0x8d, 0x43, 0x7a, 0xeb, 0xb1, 0x8d, 0x4a, 0xb5, 0xbc, 0xbe, 0x5d, - 0xbc, 0x56, 0xd1, 0x14, 0x7d, 0x0c, 0x80, 0x0c, 0x5c, 0xb9, 0xb6, 0x5e, 0xd8, 0xd2, 0x12, 0xde, - 0xf7, 0x95, 0xb5, 0xad, 0xf3, 0x4b, 0x9a, 0xea, 0x01, 0xb6, 0xe9, 0x40, 0x32, 0xc8, 0x70, 0x76, - 0x51, 0x1b, 0xd4, 0x35, 0x18, 0xa1, 0x02, 0x56, 0x1e, 0xad, 0x94, 0xcf, 0x2f, 0x69, 0x43, 0xe2, - 0xc8, 0xd9, 0x45, 0xed, 0x88, 0x3e, 0x0a, 0xc3, 0x64, 0xa4, 0xb8, 0xbe, 0x7e, 0x4d, 0x4b, 0x79, - 0x32, 0x37, 0xb7, 0x8c, 0x95, 0xb5, 0x65, 0x6d, 0xd8, 0x93, 0xb9, 0x6c, 0xac, 0x6f, 0x6f, 0x68, - 0xe0, 0x49, 0x58, 0xad, 0x6c, 0x6e, 0x16, 0x96, 0x2b, 0x5a, 0xda, 0xe3, 0x28, 0x3e, 0xb6, 0x55, - 0xd9, 0xd4, 0x46, 0x04, 0xb5, 0xce, 0x2e, 0x6a, 0xa3, 0xde, 0x23, 0x2a, 0x6b, 0xdb, 0xab, 0xda, - 0x98, 0x3e, 0x01, 0xa3, 0xf4, 0x11, 0x5c, 0x89, 0x71, 0x69, 0xe8, 0xfc, 0x92, 0xa6, 0xf9, 0x8a, - 0x50, 0x29, 0x13, 0xc2, 0xc0, 0xf9, 0x25, 0x4d, 0xcf, 0x95, 0x60, 0x90, 0x44, 0x97, 0xae, 0xc3, - 0xd8, 0xb5, 0x42, 0xb1, 0x72, 0xad, 0xba, 0xbe, 0xb1, 0xb5, 0xb2, 0xbe, 0x56, 0xb8, 0xa6, 0x29, - 0xfe, 0x98, 0x51, 0x79, 0xc7, 0xf6, 0x8a, 0x51, 0x29, 0x6b, 0x89, 0xe0, 0xd8, 0x46, 0xa5, 0xb0, - 0x55, 0x29, 0x6b, 0x6a, 0xae, 0x06, 0xc7, 0xc2, 0xea, 0x4c, 0x68, 0x66, 0x04, 0x5c, 0x9c, 0xe8, - 0xe3, 0x62, 0x22, 0xab, 0xc7, 0xc5, 0x9f, 0x55, 0xe0, 0x68, 0x48, 0xad, 0x0d, 0x7d, 0xc8, 0xc3, - 0x30, 0x48, 0x43, 0x94, 0xae, 0x3e, 0xf7, 0x85, 0x16, 0x6d, 0x12, 0xb0, 0x3d, 0x2b, 0x10, 0xc1, - 0x05, 0x57, 0x60, 0xb5, 0xcf, 0x0a, 0x8c, 0x45, 0xf4, 0x28, 0xf9, 0x7e, 0x05, 0x32, 0xfd, 0x64, - 0x47, 0x14, 0x8a, 0x84, 0x50, 0x28, 0x2e, 0xcb, 0x0a, 0x9c, 0xe8, 0x3f, 0x87, 0x1e, 0x2d, 0x3e, - 0xaf, 0xc0, 0x64, 0x78, 0xa3, 0x12, 0xaa, 0xc3, 0x43, 0x30, 0xd4, 0x42, 0xee, 0x9e, 0xcd, 0x17, - 0xeb, 0x53, 0x21, 0x4b, 0x00, 0x26, 0xcb, 0xb6, 0x62, 0xa8, 0xe0, 0x1a, 0xa2, 0xf6, 0xeb, 0x36, - 0xa8, 0x36, 0x3d, 0x9a, 0x7e, 0x28, 0x01, 0xb7, 0x85, 0x0a, 0x0f, 0x55, 0xf4, 0x2e, 0x80, 0x86, - 0xd5, 0xee, 0xba, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x98, 0x8c, 0x90, 0xdc, 0xc7, 0xb5, 0xa7, 0xeb, - 0x7a, 0x74, 0x95, 0xd0, 0x81, 0x0e, 0x11, 0x86, 0x8b, 0xbe, 0xa2, 0x49, 0xa2, 0x68, 0xb6, 0xcf, - 0x4c, 0x7b, 0xd6, 0xba, 0x05, 0xd0, 0x6a, 0xcd, 0x06, 0xb2, 0xdc, 0xaa, 0xe3, 0x76, 0x90, 0xd9, - 0x6a, 0x58, 0xbb, 0xa4, 0x00, 0xa7, 0xf2, 0x83, 0x3b, 0x66, 0xd3, 0x41, 0xc6, 0x38, 0x25, 0x6f, - 0x72, 0x2a, 0x46, 0x90, 0x55, 0xa6, 0x13, 0x40, 0x0c, 0x09, 0x08, 0x4a, 0xf6, 0x10, 0xb9, 0x0f, - 0x1f, 0x81, 0x74, 0xa0, 0xad, 0xd3, 0x4f, 0xc0, 0xc8, 0xe3, 0xe6, 0x93, 0x66, 0x95, 0xb7, 0xea, - 0xd4, 0x12, 0x69, 0x3c, 0xb6, 0xc1, 0xda, 0xf5, 0x05, 0x38, 0x46, 0x58, 0xec, 0xae, 0x8b, 0x3a, - 0xd5, 0x5a, 0xd3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, 0x31, 0x6d, 0x1d, 0x93, 0x4a, 0x9c, - 0xa2, 0x9f, 0x83, 0xa3, 0x04, 0xd1, 0xea, 0x36, 0xdd, 0x46, 0xbb, 0x89, 0xaa, 0xf8, 0xe5, 0xc1, - 0x21, 0x85, 0xd8, 0xd3, 0x6c, 0x02, 0x73, 0xac, 0x32, 0x06, 0xac, 0x91, 0xa3, 0x2f, 0xc3, 0x5d, - 0x04, 0xb6, 0x8b, 0x2c, 0xd4, 0x31, 0x5d, 0x54, 0x45, 0xbf, 0xd4, 0x35, 0x9b, 0x4e, 0xd5, 0xb4, - 0xea, 0xd5, 0x3d, 0xd3, 0xd9, 0xcb, 0x1c, 0x0b, 0x0a, 0xb8, 0x03, 0xf3, 0x2e, 0x33, 0xd6, 0x0a, - 0xe1, 0x2c, 0x58, 0xf5, 0x47, 0x4c, 0x67, 0x4f, 0xcf, 0xc3, 0x24, 0x11, 0xe4, 0xb8, 0x9d, 0x86, - 0xb5, 0x5b, 0xad, 0xed, 0xa1, 0xda, 0x13, 0xd5, 0xae, 0xbb, 0x73, 0x31, 0x73, 0x67, 0x50, 0x02, - 0x51, 0x72, 0x93, 0xf0, 0x94, 0x30, 0xcb, 0xb6, 0xbb, 0x73, 0x51, 0xdf, 0x84, 0x11, 0xec, 0x8f, - 0x56, 0xe3, 0x19, 0x54, 0xdd, 0xb1, 0x3b, 0x64, 0x71, 0x19, 0x0b, 0x49, 0xee, 0x80, 0x11, 0xe7, - 0xd7, 0x19, 0x60, 0xd5, 0xae, 0xa3, 0xfc, 0xe0, 0xe6, 0x46, 0xa5, 0x52, 0x36, 0xd2, 0x5c, 0xca, - 0x15, 0xbb, 0x83, 0x63, 0x6a, 0xd7, 0xf6, 0x6c, 0x9c, 0xa6, 0x31, 0xb5, 0x6b, 0x73, 0x0b, 0x9f, - 0x83, 0xa3, 0xb5, 0x1a, 0x9d, 0x76, 0xa3, 0x56, 0x65, 0x5d, 0xbe, 0x93, 0xd1, 0x04, 0x7b, 0xd5, - 0x6a, 0xcb, 0x94, 0x81, 0x85, 0xb9, 0xa3, 0x5f, 0x82, 0xdb, 0x7c, 0x7b, 0x05, 0x81, 0x13, 0x3d, - 0xb3, 0x94, 0xa1, 0xe7, 0xe0, 0x68, 0x7b, 0xbf, 0x17, 0xa8, 0x0b, 0x4f, 0x6c, 0xef, 0xcb, 0xb0, - 0x7b, 0xc8, 0x9b, 0x5b, 0x07, 0xd5, 0x4c, 0x17, 0xd5, 0x33, 0xb7, 0x07, 0xb9, 0x03, 0x04, 0xfd, - 0x34, 0x68, 0xb5, 0x5a, 0x15, 0x59, 0xe6, 0xf5, 0x26, 0xaa, 0x9a, 0x1d, 0x64, 0x99, 0x4e, 0x66, - 0x3a, 0xc8, 0x3c, 0x56, 0xab, 0x55, 0x08, 0xb5, 0x40, 0x88, 0xfa, 0x1c, 0x4c, 0xd8, 0xd7, 0x1f, - 0xaf, 0xd1, 0xe0, 0xaa, 0xb6, 0x3b, 0x68, 0xa7, 0xf1, 0x74, 0xe6, 0x24, 0x31, 0xd3, 0x38, 0x26, - 0x90, 0xd0, 0xda, 0x20, 0xc3, 0xfa, 0x7d, 0xa0, 0xd5, 0x9c, 0x3d, 0xb3, 0xd3, 0x26, 0xab, 0xbb, - 0xd3, 0x36, 0x6b, 0x28, 0x73, 0x0f, 0x65, 0xa5, 0xe3, 0x6b, 0x7c, 0x58, 0x7f, 0x14, 0x8e, 0x75, - 0xad, 0x86, 0xe5, 0xa2, 0x4e, 0xbb, 0x83, 0x70, 0x93, 0x4e, 0x33, 0x2d, 0xf3, 0x6f, 0x47, 0xfa, - 0xb4, 0xd9, 0xdb, 0x41, 0x6e, 0xea, 0x5d, 0xe3, 0x68, 0xb7, 0x77, 0x30, 0x97, 0x87, 0x91, 0xa0, - 0xd3, 0xf5, 0x61, 0xa0, 0x6e, 0xd7, 0x14, 0xbc, 0x86, 0x96, 0xd6, 0xcb, 0x78, 0xf5, 0x7b, 0x77, - 0x45, 0x4b, 0xe0, 0x55, 0xf8, 0xda, 0xca, 0x56, 0xa5, 0x6a, 0x6c, 0xaf, 0x6d, 0xad, 0xac, 0x56, - 0x34, 0x75, 0x6e, 0x38, 0xf5, 0xfd, 0x23, 0xda, 0xb3, 0xcf, 0x3e, 0xfb, 0x6c, 0x22, 0xf7, 0xcd, - 0x04, 0x8c, 0x89, 0x9d, 0xaf, 0xfe, 0x76, 0xb8, 0x9d, 0xbf, 0xa6, 0x3a, 0xc8, 0xad, 0x3e, 0xd5, - 0xe8, 0x90, 0x38, 0x6c, 0x99, 0xb4, 0x77, 0xf4, 0x4c, 0x78, 0x8c, 0x71, 0x6d, 0x22, 0xf7, 0x5d, - 0x8d, 0x0e, 0x8e, 0xb2, 0x96, 0xe9, 0xea, 0xd7, 0x60, 0xda, 0xb2, 0xab, 0x8e, 0x6b, 0x5a, 0x75, - 0xb3, 0x53, 0xaf, 0xfa, 0x1b, 0x04, 0x55, 0xb3, 0x56, 0x43, 0x8e, 0x63, 0xd3, 0x25, 0xc0, 0x93, - 0x72, 0xdc, 0xb2, 0x37, 0x19, 0xb3, 0x5f, 0x1b, 0x0b, 0x8c, 0x55, 0x72, 0xb7, 0xda, 0xcf, 0xdd, - 0x77, 0xc2, 0x70, 0xcb, 0x6c, 0x57, 0x91, 0xe5, 0x76, 0xf6, 0x49, 0xbf, 0x96, 0x32, 0x52, 0x2d, - 0xb3, 0x5d, 0xc1, 0xdf, 0xdf, 0x3a, 0x1f, 0x04, 0xed, 0xf8, 0xaf, 0x2a, 0x8c, 0x04, 0x7b, 0x36, - 0xdc, 0x02, 0xd7, 0x48, 0x7d, 0x56, 0x48, 0xfa, 0xde, 0x7d, 0x60, 0x87, 0x37, 0x5f, 0xc2, 0x85, - 0x3b, 0x3f, 0x44, 0x3b, 0x29, 0x83, 0x22, 0xf1, 0xa2, 0x89, 0x13, 0x16, 0xd1, 0xfe, 0x3c, 0x65, - 0xb0, 0x6f, 0xfa, 0x32, 0x0c, 0x3d, 0xee, 0x10, 0xd9, 0x43, 0x44, 0xf6, 0xc9, 0x83, 0x65, 0x5f, - 0xdd, 0x24, 0xc2, 0x87, 0xaf, 0x6e, 0x56, 0xd7, 0xd6, 0x8d, 0xd5, 0xc2, 0x35, 0x83, 0xc1, 0xf5, - 0x3b, 0x20, 0xd9, 0x34, 0x9f, 0xd9, 0x17, 0x4b, 0x3c, 0x19, 0x8a, 0x6b, 0xf8, 0x3b, 0x20, 0xf9, - 0x14, 0x32, 0x9f, 0x10, 0x0b, 0x2b, 0x19, 0x7a, 0x0b, 0x43, 0xff, 0x34, 0x0c, 0x12, 0x7b, 0xe9, - 0x00, 0xcc, 0x62, 0xda, 0x80, 0x9e, 0x82, 0x64, 0x69, 0xdd, 0xc0, 0xe1, 0xaf, 0xc1, 0x08, 0x1d, - 0xad, 0x6e, 0xac, 0x54, 0x4a, 0x15, 0x2d, 0x91, 0x3b, 0x07, 0x43, 0xd4, 0x08, 0x38, 0x35, 0x3c, - 0x33, 0x68, 0x03, 0xec, 0x2b, 0x93, 0xa1, 0x70, 0xea, 0xf6, 0x6a, 0xb1, 0x62, 0x68, 0x89, 0xa0, - 0x7b, 0x1d, 0x18, 0x09, 0xb6, 0x6b, 0x3f, 0x9b, 0x98, 0xfa, 0xba, 0x02, 0xe9, 0x40, 0xfb, 0x85, - 0x17, 0x7e, 0xb3, 0xd9, 0xb4, 0x9f, 0xaa, 0x9a, 0xcd, 0x86, 0xe9, 0xb0, 0xa0, 0x00, 0x32, 0x54, - 0xc0, 0x23, 0x71, 0x9d, 0xf6, 0x33, 0x51, 0xfe, 0x39, 0x05, 0x34, 0xb9, 0x75, 0x93, 0x14, 0x54, - 0x7e, 0xae, 0x0a, 0x7e, 0x52, 0x81, 0x31, 0xb1, 0x5f, 0x93, 0xd4, 0x3b, 0xf1, 0x73, 0x55, 0xef, - 0x13, 0x0a, 0x8c, 0x0a, 0x5d, 0xda, 0x2f, 0x94, 0x76, 0x1f, 0x57, 0xe1, 0x68, 0x08, 0x4e, 0x2f, - 0xb0, 0x76, 0x96, 0x76, 0xd8, 0x0f, 0xc4, 0x79, 0xd6, 0x3c, 0x5e, 0x2d, 0x37, 0xcc, 0x8e, 0xcb, - 0xba, 0xdf, 0xfb, 0x40, 0x6b, 0xd4, 0x91, 0xe5, 0x36, 0x76, 0x1a, 0xa8, 0xc3, 0x5e, 0xc1, 0x69, - 0x8f, 0x3b, 0xee, 0x8f, 0xd3, 0xb7, 0xf0, 0xfb, 0x41, 0x6f, 0xdb, 0x4e, 0xc3, 0x6d, 0x3c, 0x89, - 0xaa, 0x0d, 0x8b, 0xbf, 0xaf, 0xe3, 0x9e, 0x37, 0x69, 0x68, 0x9c, 0xb2, 0x62, 0xb9, 0x1e, 0xb7, - 0x85, 0x76, 0x4d, 0x89, 0x1b, 0xd7, 0x3e, 0xd5, 0xd0, 0x38, 0xc5, 0xe3, 0x3e, 0x01, 0x23, 0x75, - 0xbb, 0x8b, 0xdb, 0x07, 0xca, 0x87, 0x4b, 0xad, 0x62, 0xa4, 0xe9, 0x98, 0xc7, 0xc2, 0xfa, 0x3b, - 0x7f, 0xa3, 0x60, 0xc4, 0x48, 0xd3, 0x31, 0xca, 0x72, 0x2f, 0x8c, 0x9b, 0xbb, 0xbb, 0x1d, 0x2c, - 0x9c, 0x0b, 0xa2, 0x4d, 0xeb, 0x98, 0x37, 0x4c, 0x18, 0xa7, 0xae, 0x42, 0x8a, 0xdb, 0x01, 0xaf, - 0x66, 0xd8, 0x12, 0xd5, 0x36, 0xdd, 0xae, 0x49, 0xcc, 0x0e, 0x1b, 0x29, 0x8b, 0x13, 0x4f, 0xc0, - 0x48, 0xc3, 0xa9, 0xfa, 0xfb, 0x86, 0x89, 0x99, 0xc4, 0x6c, 0xca, 0x48, 0x37, 0x1c, 0x6f, 0xa3, - 0x28, 0xf7, 0xf9, 0x04, 0x8c, 0x89, 0xfb, 0x9e, 0x7a, 0x19, 0x52, 0x4d, 0xbb, 0x66, 0x92, 0x40, - 0xa0, 0x9b, 0xee, 0xb3, 0x11, 0x5b, 0xa5, 0xf3, 0xd7, 0x18, 0xbf, 0xe1, 0x21, 0xa7, 0xfe, 0x49, - 0x81, 0x14, 0x1f, 0xd6, 0x27, 0x21, 0xd9, 0x36, 0xdd, 0x3d, 0x22, 0x6e, 0xb0, 0x98, 0xd0, 0x14, - 0x83, 0x7c, 0xc7, 0xe3, 0x4e, 0xdb, 0xb4, 0x48, 0x08, 0xb0, 0x71, 0xfc, 0x1d, 0xfb, 0xb5, 0x89, - 0xcc, 0x3a, 0x69, 0x87, 0xed, 0x56, 0x0b, 0x59, 0xae, 0xc3, 0xfd, 0xca, 0xc6, 0x4b, 0x6c, 0x58, - 0x7f, 0x1b, 0x4c, 0xb8, 0x1d, 0xb3, 0xd1, 0x14, 0x78, 0x93, 0x84, 0x57, 0xe3, 0x04, 0x8f, 0x39, - 0x0f, 0x77, 0x70, 0xb9, 0x75, 0xe4, 0x9a, 0xb5, 0x3d, 0x54, 0xf7, 0x41, 0x43, 0x64, 0x53, 0xed, - 0x76, 0xc6, 0x50, 0x66, 0x74, 0x8e, 0xcd, 0x7d, 0x4b, 0x81, 0x09, 0xde, 0xc0, 0xd7, 0x3d, 0x63, - 0xad, 0x02, 0x98, 0x96, 0x65, 0xbb, 0x41, 0x73, 0xf5, 0x86, 0x72, 0x0f, 0x6e, 0xbe, 0xe0, 0x81, - 0x8c, 0x80, 0x80, 0xa9, 0x16, 0x80, 0x4f, 0xe9, 0x6b, 0xb6, 0x69, 0x48, 0xb3, 0x4d, 0x6d, 0x72, - 0x32, 0x42, 0xdf, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0x5f, 0x3f, 0x06, 0x83, 0xd7, 0xd1, 0x6e, 0xc3, - 0x62, 0x5b, 0x6d, 0xf4, 0x0b, 0xdf, 0xc0, 0x4b, 0x7a, 0x1b, 0x78, 0xc5, 0xf7, 0xc0, 0xd1, 0x9a, - 0xdd, 0x92, 0xd5, 0x2d, 0x6a, 0xd2, 0x9b, 0xa7, 0xf3, 0x88, 0xf2, 0x6e, 0xf0, 0xbb, 0xb3, 0xe7, - 0x15, 0xe5, 0xb3, 0x09, 0x75, 0x79, 0xa3, 0xf8, 0xc5, 0xc4, 0xd4, 0x32, 0x85, 0x6e, 0xf0, 0x99, - 0x1a, 0x68, 0xa7, 0x89, 0x6a, 0x58, 0x7b, 0xf8, 0xd1, 0x29, 0x78, 0x60, 0xb7, 0xe1, 0xee, 0x75, - 0xaf, 0xcf, 0xd7, 0xec, 0xd6, 0xe9, 0x5d, 0x7b, 0xd7, 0xf6, 0x0f, 0x83, 0xf0, 0x37, 0xf2, 0x85, - 0x7c, 0x62, 0x07, 0x42, 0xc3, 0xde, 0xe8, 0x54, 0xe4, 0xe9, 0x51, 0x7e, 0x0d, 0x8e, 0x32, 0xe6, - 0x2a, 0xd9, 0x91, 0xa6, 0x7d, 0xb8, 0x7e, 0xe0, 0xae, 0x44, 0xe6, 0xcb, 0xdf, 0x23, 0x2b, 0x9d, - 0x31, 0xc1, 0xa0, 0x98, 0x46, 0x3b, 0xf5, 0xbc, 0x01, 0xb7, 0x09, 0xf2, 0x68, 0x6a, 0xa2, 0x4e, - 0x84, 0xc4, 0x6f, 0x32, 0x89, 0x47, 0x03, 0x12, 0x37, 0x19, 0x34, 0x5f, 0x82, 0xd1, 0xc3, 0xc8, - 0xfa, 0x3b, 0x26, 0x6b, 0x04, 0x05, 0x85, 0x2c, 0xc3, 0x38, 0x11, 0x52, 0xeb, 0x3a, 0xae, 0xdd, - 0x22, 0x75, 0xef, 0x60, 0x31, 0x7f, 0xff, 0x3d, 0x9a, 0x2b, 0x63, 0x18, 0x56, 0xf2, 0x50, 0xf9, - 0x3c, 0x90, 0x4d, 0xf8, 0x3a, 0xaa, 0x35, 0x23, 0x24, 0xdc, 0x60, 0x8a, 0x78, 0xfc, 0xf9, 0x77, - 0xc2, 0x31, 0xfc, 0x99, 0x94, 0xa5, 0xa0, 0x26, 0xd1, 0x7b, 0x30, 0x99, 0x6f, 0xbd, 0x9f, 0xa6, - 0xe3, 0x51, 0x4f, 0x40, 0x40, 0xa7, 0x80, 0x17, 0x77, 0x91, 0xeb, 0xa2, 0x8e, 0x53, 0x35, 0x9b, - 0x61, 0xea, 0x05, 0xde, 0x60, 0x33, 0x1f, 0x7b, 0x55, 0xf4, 0xe2, 0x32, 0x45, 0x16, 0x9a, 0xcd, - 0xfc, 0x36, 0xdc, 0x1e, 0x12, 0x15, 0x31, 0x64, 0x7e, 0x9c, 0xc9, 0x3c, 0xd6, 0x13, 0x19, 0x58, - 0xec, 0x06, 0xf0, 0x71, 0xcf, 0x97, 0x31, 0x64, 0x7e, 0x82, 0xc9, 0xd4, 0x19, 0x96, 0xbb, 0x14, - 0x4b, 0xbc, 0x0a, 0x13, 0x4f, 0xa2, 0xce, 0x75, 0xdb, 0x61, 0x1b, 0x07, 0x31, 0xc4, 0x7d, 0x92, - 0x89, 0x1b, 0x67, 0x40, 0xb2, 0x8d, 0x80, 0x65, 0x5d, 0x82, 0xd4, 0x8e, 0x59, 0x43, 0x31, 0x44, - 0x7c, 0x8a, 0x89, 0x38, 0x82, 0xf9, 0x31, 0xb4, 0x00, 0x23, 0xbb, 0x36, 0x5b, 0x99, 0xa2, 0xe1, - 0xcf, 0x31, 0x78, 0x9a, 0x63, 0x98, 0x88, 0xb6, 0xdd, 0xee, 0x36, 0xf1, 0xb2, 0x15, 0x2d, 0xe2, - 0xd3, 0x5c, 0x04, 0xc7, 0x30, 0x11, 0x87, 0x30, 0xeb, 0xf3, 0x5c, 0x84, 0x13, 0xb0, 0xe7, 0xc3, - 0x90, 0xb6, 0xad, 0xe6, 0xbe, 0x6d, 0xc5, 0x51, 0xe2, 0x33, 0x4c, 0x02, 0x30, 0x08, 0x16, 0x70, - 0x19, 0x86, 0xe3, 0x3a, 0xe2, 0x73, 0xaf, 0xf2, 0xf4, 0xe0, 0x1e, 0x58, 0x86, 0x71, 0x5e, 0xa0, - 0x1a, 0xb6, 0x15, 0x43, 0xc4, 0x1f, 0x31, 0x11, 0x63, 0x01, 0x18, 0x9b, 0x86, 0x8b, 0x1c, 0x77, - 0x17, 0xc5, 0x11, 0xf2, 0x79, 0x3e, 0x0d, 0x06, 0x61, 0xa6, 0xbc, 0x8e, 0xac, 0xda, 0x5e, 0x3c, - 0x09, 0x2f, 0x70, 0x53, 0x72, 0x0c, 0x16, 0x51, 0x82, 0xd1, 0x96, 0xd9, 0x71, 0xf6, 0xcc, 0x66, - 0x2c, 0x77, 0x7c, 0x81, 0xc9, 0x18, 0xf1, 0x40, 0xcc, 0x22, 0x5d, 0xeb, 0x30, 0x62, 0xbe, 0xc8, - 0x2d, 0x12, 0x80, 0xb1, 0xd4, 0x73, 0x5c, 0xb2, 0x37, 0x73, 0x18, 0x69, 0x7f, 0xcc, 0x53, 0x8f, - 0x62, 0x57, 0x83, 0x12, 0x2f, 0xc3, 0xb0, 0xd3, 0x78, 0x26, 0x96, 0x98, 0x3f, 0xe1, 0x9e, 0x26, - 0x00, 0x0c, 0x7e, 0x0c, 0xee, 0x08, 0x5d, 0x26, 0x62, 0x08, 0xfb, 0x53, 0x26, 0x6c, 0x32, 0x64, - 0xa9, 0x60, 0x25, 0xe1, 0xb0, 0x22, 0xff, 0x8c, 0x97, 0x04, 0x24, 0xc9, 0xda, 0xc0, 0x9d, 0xbd, - 0x63, 0xee, 0x1c, 0xce, 0x6a, 0x7f, 0xce, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0xb6, 0x60, 0x92, 0x49, - 0x3c, 0x9c, 0x5f, 0xbf, 0xc4, 0x0b, 0x2b, 0x45, 0x6f, 0x8b, 0xde, 0x7d, 0x0f, 0x4c, 0x79, 0xe6, - 0xe4, 0x4d, 0xa9, 0x53, 0x6d, 0x99, 0xed, 0x18, 0x92, 0xbf, 0xcc, 0x24, 0xf3, 0x8a, 0xef, 0x75, - 0xb5, 0xce, 0xaa, 0xd9, 0xc6, 0xc2, 0x1f, 0x85, 0x0c, 0x17, 0xde, 0xb5, 0x3a, 0xa8, 0x66, 0xef, - 0x5a, 0x8d, 0x67, 0x50, 0x3d, 0x86, 0xe8, 0xbf, 0x90, 0x5c, 0xb5, 0x1d, 0x80, 0x63, 0xc9, 0x2b, - 0xa0, 0x79, 0xbd, 0x4a, 0xb5, 0xd1, 0x6a, 0xdb, 0x1d, 0x37, 0x42, 0xe2, 0x5f, 0x72, 0x4f, 0x79, - 0xb8, 0x15, 0x02, 0xcb, 0x57, 0x60, 0x8c, 0x7c, 0x8d, 0x1b, 0x92, 0x5f, 0x61, 0x82, 0x46, 0x7d, - 0x14, 0x2b, 0x1c, 0x35, 0xbb, 0xd5, 0x36, 0x3b, 0x71, 0xea, 0xdf, 0x5f, 0xf1, 0xc2, 0xc1, 0x20, - 0xac, 0x70, 0xb8, 0xfb, 0x6d, 0x84, 0x57, 0xfb, 0x18, 0x12, 0xbe, 0xca, 0x0b, 0x07, 0xc7, 0x30, - 0x11, 0xbc, 0x61, 0x88, 0x21, 0xe2, 0xaf, 0xb9, 0x08, 0x8e, 0xc1, 0x22, 0xde, 0xe1, 0x2f, 0xb4, - 0x1d, 0xb4, 0xdb, 0x70, 0xdc, 0x0e, 0x6d, 0x85, 0x0f, 0x16, 0xf5, 0xb5, 0x57, 0xc5, 0x26, 0xcc, - 0x08, 0x40, 0xf3, 0x57, 0x61, 0x5c, 0x6a, 0x31, 0xf4, 0xa8, 0x13, 0xfd, 0xcc, 0x7b, 0x5f, 0x63, - 0xc5, 0x48, 0xec, 0x30, 0xf2, 0xd7, 0xb0, 0xdf, 0xc5, 0x3e, 0x20, 0x5a, 0xd8, 0xfb, 0x5f, 0xf3, - 0x5c, 0x2f, 0xb4, 0x01, 0xf9, 0x2b, 0x30, 0x2a, 0xf4, 0x00, 0xd1, 0xa2, 0x7e, 0x85, 0x89, 0x1a, - 0x09, 0xb6, 0x00, 0xf9, 0x73, 0x90, 0xc4, 0xeb, 0x79, 0x34, 0xfc, 0x57, 0x19, 0x9c, 0xb0, 0xe7, - 0x1f, 0x84, 0x14, 0x5f, 0xc7, 0xa3, 0xa1, 0x1f, 0x60, 0x50, 0x0f, 0x82, 0xe1, 0x7c, 0x0d, 0x8f, - 0x86, 0xff, 0x1a, 0x87, 0x73, 0x08, 0x86, 0xc7, 0x37, 0xe1, 0x8b, 0x1f, 0x4e, 0xb2, 0x3a, 0xcc, - 0x6d, 0x77, 0x19, 0x8e, 0xb0, 0xc5, 0x3b, 0x1a, 0xfd, 0x21, 0xf6, 0x70, 0x8e, 0xc8, 0x5f, 0x80, - 0xc1, 0x98, 0x06, 0xff, 0x0d, 0x06, 0xa5, 0xfc, 0xf9, 0x12, 0xa4, 0x03, 0x0b, 0x76, 0x34, 0xfc, - 0x37, 0x19, 0x3c, 0x88, 0xc2, 0xaa, 0xb3, 0x05, 0x3b, 0x5a, 0xc0, 0x6f, 0x71, 0xd5, 0x19, 0x02, - 0x9b, 0x8d, 0xaf, 0xd5, 0xd1, 0xe8, 0xdf, 0xe6, 0x56, 0xe7, 0x90, 0xfc, 0xc3, 0x30, 0xec, 0xd5, - 0xdf, 0x68, 0xfc, 0xef, 0x30, 0xbc, 0x8f, 0xc1, 0x16, 0x08, 0xd4, 0xff, 0x68, 0x11, 0xbf, 0xcb, - 0x2d, 0x10, 0x40, 0xe1, 0x34, 0x92, 0xd7, 0xf4, 0x68, 0x49, 0x1f, 0xe1, 0x69, 0x24, 0x2d, 0xe9, - 0xd8, 0x9b, 0xa4, 0x0c, 0x46, 0x8b, 0xf8, 0x3d, 0xee, 0x4d, 0xc2, 0x8f, 0xd5, 0x90, 0x17, 0xc9, - 0x68, 0x19, 0x7f, 0xc0, 0xd5, 0x90, 0xd6, 0xc8, 0xfc, 0x06, 0xe8, 0xbd, 0x0b, 0x64, 0xb4, 0xbc, - 0x8f, 0x32, 0x79, 0x13, 0x3d, 0xeb, 0x63, 0xfe, 0x5d, 0x30, 0x19, 0xbe, 0x38, 0x46, 0x4b, 0xfd, - 0xd8, 0x6b, 0xd2, 0xeb, 0x4c, 0x70, 0x6d, 0xcc, 0x6f, 0xf9, 0x55, 0x36, 0xb8, 0x30, 0x46, 0x8b, - 0xfd, 0xf8, 0x6b, 0x62, 0xa1, 0x0d, 0xae, 0x8b, 0xf9, 0x02, 0x80, 0xbf, 0x26, 0x45, 0xcb, 0xfa, - 0x24, 0x93, 0x15, 0x00, 0xe1, 0xd4, 0x60, 0x4b, 0x52, 0x34, 0xfe, 0x53, 0x3c, 0x35, 0x18, 0x02, - 0xa7, 0x06, 0x5f, 0x8d, 0xa2, 0xd1, 0xcf, 0xf1, 0xd4, 0xe0, 0x90, 0xfc, 0x65, 0x48, 0x59, 0xdd, - 0x66, 0x13, 0xc7, 0x96, 0x7e, 0xf0, 0x25, 0x9b, 0xcc, 0xbf, 0xbf, 0xce, 0xc0, 0x1c, 0x90, 0x3f, - 0x07, 0x83, 0xa8, 0x75, 0x1d, 0xd5, 0xa3, 0x90, 0xff, 0xf1, 0x3a, 0xaf, 0x27, 0x98, 0x3b, 0xff, - 0x30, 0x00, 0x7d, 0x99, 0x26, 0x67, 0x2c, 0x11, 0xd8, 0xff, 0x7c, 0x9d, 0x9d, 0xdf, 0xfb, 0x10, - 0x5f, 0x00, 0xbd, 0x0d, 0x70, 0xb0, 0x80, 0x57, 0x45, 0x01, 0xe4, 0x05, 0xfc, 0x12, 0x1c, 0x79, - 0xdc, 0xb1, 0x2d, 0xd7, 0xdc, 0x8d, 0x42, 0xff, 0x17, 0x43, 0x73, 0x7e, 0x6c, 0xb0, 0x96, 0xdd, - 0x41, 0xae, 0xb9, 0xeb, 0x44, 0x61, 0xff, 0x9b, 0x61, 0x3d, 0x00, 0x06, 0xd7, 0x4c, 0xc7, 0x8d, - 0x33, 0xef, 0xff, 0xe1, 0x60, 0x0e, 0xc0, 0x4a, 0xe3, 0xcf, 0x4f, 0xa0, 0xfd, 0x28, 0xec, 0x0f, - 0xb8, 0xd2, 0x8c, 0x3f, 0xff, 0x20, 0x0c, 0xe3, 0x8f, 0xf4, 0x4e, 0x4b, 0x04, 0xf8, 0x87, 0x0c, - 0xec, 0x23, 0xf0, 0x93, 0x1d, 0xb7, 0xee, 0x36, 0xa2, 0x8d, 0xfd, 0xbf, 0xcc, 0xd3, 0x9c, 0x3f, - 0x5f, 0x80, 0xb4, 0xe3, 0xd6, 0xeb, 0x5d, 0xd6, 0xd1, 0x44, 0xc0, 0x7f, 0xf4, 0xba, 0xf7, 0x92, - 0xeb, 0x61, 0x8a, 0x27, 0xc2, 0xf7, 0xeb, 0x60, 0xd9, 0x5e, 0xb6, 0xe9, 0x4e, 0x1d, 0xfc, 0x63, - 0x13, 0x66, 0x6a, 0x76, 0xeb, 0xba, 0xed, 0x9c, 0x0e, 0x94, 0xa1, 0xd3, 0xee, 0x1e, 0xc2, 0x2b, - 0x08, 0xdb, 0x68, 0x4b, 0xe2, 0xcf, 0x53, 0x87, 0xdb, 0x9d, 0x23, 0xc7, 0x96, 0x6b, 0x0d, 0xac, - 0xe0, 0x1a, 0xd9, 0xfe, 0xd6, 0x8f, 0xc3, 0x10, 0x51, 0xf9, 0x0c, 0x39, 0x9d, 0x51, 0x8a, 0xc9, - 0x1b, 0x2f, 0x4f, 0x0f, 0x18, 0x6c, 0xcc, 0xa3, 0x2e, 0x92, 0xfd, 0xc9, 0x84, 0x40, 0x5d, 0xf4, - 0xa8, 0x67, 0xe9, 0x16, 0xa5, 0x40, 0x3d, 0xeb, 0x51, 0x97, 0xc8, 0x66, 0xa5, 0x2a, 0x50, 0x97, - 0x3c, 0xea, 0x39, 0xb2, 0x21, 0x3f, 0x2a, 0x50, 0xcf, 0x79, 0xd4, 0xf3, 0x64, 0x1b, 0x3e, 0x29, - 0x50, 0xcf, 0x7b, 0xd4, 0x0b, 0x64, 0x07, 0x7e, 0x42, 0xa0, 0x5e, 0xf0, 0xa8, 0x17, 0xc9, 0xce, - 0xbb, 0x2e, 0x50, 0x2f, 0x7a, 0xd4, 0x4b, 0xe4, 0x9a, 0xc5, 0x11, 0x81, 0x7a, 0x49, 0xcf, 0xc2, - 0x11, 0x3a, 0xf3, 0x05, 0x72, 0xc2, 0x39, 0xce, 0xc8, 0x7c, 0xd0, 0xa7, 0x9f, 0x21, 0x57, 0x2a, - 0x86, 0x44, 0xfa, 0x19, 0x9f, 0xbe, 0x48, 0xee, 0x17, 0x6b, 0x22, 0x7d, 0xd1, 0xa7, 0x9f, 0xcd, - 0x8c, 0xe2, 0xc8, 0x10, 0xe9, 0x67, 0x7d, 0xfa, 0x52, 0x66, 0x0c, 0x47, 0xad, 0x48, 0x5f, 0xf2, - 0xe9, 0xe7, 0x32, 0xe3, 0x33, 0xca, 0xec, 0x88, 0x48, 0x3f, 0x97, 0x7b, 0x1f, 0x71, 0xaf, 0xe5, - 0xbb, 0x77, 0x52, 0x74, 0xaf, 0xe7, 0xd8, 0x49, 0xd1, 0xb1, 0x9e, 0x4b, 0x27, 0x45, 0x97, 0x7a, - 0xce, 0x9c, 0x14, 0x9d, 0xe9, 0xb9, 0x71, 0x52, 0x74, 0xa3, 0xe7, 0xc0, 0x49, 0xd1, 0x81, 0x9e, - 0xeb, 0x26, 0x45, 0xd7, 0x79, 0x4e, 0x9b, 0x14, 0x9d, 0xe6, 0xb9, 0x6b, 0x52, 0x74, 0x97, 0xe7, - 0xa8, 0x8c, 0xe4, 0x28, 0xdf, 0x45, 0x19, 0xc9, 0x45, 0xbe, 0x73, 0x32, 0x92, 0x73, 0x7c, 0xb7, - 0x64, 0x24, 0xb7, 0xf8, 0x0e, 0xc9, 0x48, 0x0e, 0xf1, 0x5d, 0x91, 0x91, 0x5c, 0xe1, 0x3b, 0x81, - 0xe5, 0x98, 0x81, 0xda, 0x21, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, - 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, - 0x81, 0x39, 0xa6, 0x1e, 0x9c, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x11, 0x39, 0xa6, 0x46, 0xe4, 0x98, - 0x1a, 0x91, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x7d, 0x73, 0xcc, 0x77, 0xef, 0xa4, 0xe8, 0xde, 0xd0, - 0x1c, 0x53, 0xfb, 0xe4, 0x98, 0xda, 0x27, 0xc7, 0xd4, 0x3e, 0x39, 0xa6, 0xf6, 0xc9, 0x31, 0xb5, - 0x4f, 0x8e, 0xa9, 0x7d, 0x72, 0x4c, 0xed, 0x93, 0x63, 0x6a, 0xbf, 0x1c, 0x53, 0xfb, 0xe6, 0x98, - 0xda, 0x37, 0xc7, 0xd4, 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0xc1, 0x1c, - 0xfb, 0x1b, 0x15, 0x74, 0x9a, 0x63, 0x1b, 0xe4, 0x8e, 0x0c, 0x73, 0x45, 0x56, 0xca, 0xb4, 0x21, - 0xec, 0x3a, 0xcd, 0x77, 0x49, 0x56, 0xca, 0x35, 0x91, 0xbe, 0xe8, 0xd1, 0x79, 0xb6, 0x89, 0xf4, - 0xb3, 0x1e, 0x9d, 0xe7, 0x9b, 0x48, 0x5f, 0xf2, 0xe8, 0x3c, 0xe3, 0x44, 0xfa, 0x39, 0x8f, 0xce, - 0x73, 0x4e, 0xa4, 0x9f, 0xf7, 0xe8, 0x3c, 0xeb, 0x44, 0xfa, 0x05, 0x8f, 0xce, 0xf3, 0x4e, 0xa4, - 0x5f, 0xf4, 0xe8, 0x3c, 0xf3, 0x44, 0xfa, 0x25, 0x7d, 0x46, 0xce, 0x3d, 0xce, 0xe0, 0xb9, 0x76, - 0x46, 0xce, 0x3e, 0x89, 0xe3, 0x8c, 0xcf, 0xc1, 0xf3, 0x4f, 0xe2, 0x58, 0xf4, 0x39, 0x78, 0x06, - 0x4a, 0x1c, 0x67, 0x73, 0x1f, 0x24, 0xee, 0xb3, 0x64, 0xf7, 0x4d, 0x49, 0xee, 0x4b, 0x04, 0x5c, - 0x37, 0x25, 0xb9, 0x2e, 0x11, 0x70, 0xdb, 0x94, 0xe4, 0xb6, 0x44, 0xc0, 0x65, 0x53, 0x92, 0xcb, - 0x12, 0x01, 0x77, 0x4d, 0x49, 0xee, 0x4a, 0x04, 0x5c, 0x35, 0x25, 0xb9, 0x2a, 0x11, 0x70, 0xd3, - 0x94, 0xe4, 0xa6, 0x44, 0xc0, 0x45, 0x53, 0x92, 0x8b, 0x12, 0x01, 0xf7, 0x4c, 0x49, 0xee, 0x49, - 0x04, 0x5c, 0x73, 0x5c, 0x76, 0x4d, 0x22, 0xe8, 0x96, 0xe3, 0xb2, 0x5b, 0x12, 0x41, 0x97, 0x1c, - 0x97, 0x5d, 0x92, 0x08, 0xba, 0xe3, 0xb8, 0xec, 0x8e, 0x44, 0xd0, 0x15, 0x3f, 0x4d, 0xf0, 0x8e, - 0x70, 0xd3, 0xed, 0x74, 0x6b, 0xee, 0x2d, 0x75, 0x84, 0x0b, 0x42, 0xfb, 0x90, 0x5e, 0xd4, 0xe7, - 0x49, 0xc3, 0x1a, 0xec, 0x38, 0xa5, 0x15, 0x6c, 0x41, 0x68, 0x2c, 0x02, 0x08, 0x2b, 0x1c, 0xb1, - 0x74, 0x4b, 0xbd, 0xe1, 0x82, 0xd0, 0x66, 0x44, 0xeb, 0x77, 0xf1, 0x2d, 0xef, 0xd8, 0x5e, 0x4c, - 0xf0, 0x8e, 0x8d, 0x99, 0xff, 0xb0, 0x1d, 0xdb, 0x5c, 0xb4, 0xc9, 0x3d, 0x63, 0xcf, 0x45, 0x1b, - 0xbb, 0x67, 0xd5, 0x89, 0xdb, 0xc1, 0xcd, 0x45, 0x9b, 0xd6, 0x33, 0xea, 0x9b, 0xdb, 0x6f, 0xb1, - 0x08, 0x36, 0x50, 0x3b, 0x24, 0x82, 0x0f, 0xdb, 0x6f, 0x2d, 0x08, 0xa5, 0xe4, 0xb0, 0x11, 0xac, - 0x1e, 0x3a, 0x82, 0x0f, 0xdb, 0x79, 0x2d, 0x08, 0xe5, 0xe5, 0xd0, 0x11, 0xfc, 0x16, 0xf4, 0x43, - 0x2c, 0x82, 0x7d, 0xf3, 0x1f, 0xb6, 0x1f, 0x9a, 0x8b, 0x36, 0x79, 0x68, 0x04, 0xab, 0x87, 0x88, - 0xe0, 0x38, 0xfd, 0xd1, 0x5c, 0xb4, 0x69, 0xc3, 0x23, 0xf8, 0x96, 0xbb, 0x99, 0x4f, 0x2b, 0x30, - 0xb1, 0xd6, 0xa8, 0x57, 0x5a, 0xd7, 0x51, 0xbd, 0x8e, 0xea, 0xcc, 0x8e, 0x0b, 0x42, 0x25, 0xe8, - 0xe3, 0xea, 0x97, 0x5e, 0x9e, 0xf6, 0x2d, 0x7c, 0x0e, 0x52, 0xd4, 0xa6, 0x0b, 0x0b, 0x99, 0x1b, - 0x4a, 0x44, 0x85, 0xf3, 0x58, 0xf5, 0x13, 0x1c, 0x76, 0x66, 0x21, 0xf3, 0xcf, 0x4a, 0xa0, 0xca, - 0x79, 0xc3, 0xb9, 0x8f, 0x10, 0x0d, 0xad, 0x5b, 0xd6, 0xf0, 0x74, 0x2c, 0x0d, 0x03, 0xba, 0xdd, - 0xd9, 0xa3, 0x5b, 0x40, 0xab, 0x2e, 0x8c, 0xaf, 0x35, 0xea, 0x6b, 0xe4, 0x2f, 0x5b, 0xe3, 0xa8, - 0x44, 0x79, 0xa4, 0x7a, 0xb0, 0x20, 0x84, 0x65, 0x10, 0xe1, 0x85, 0xb4, 0x58, 0x23, 0x72, 0x0d, - 0xfc, 0x58, 0x4b, 0x78, 0xec, 0x5c, 0xbf, 0xc7, 0xfa, 0x95, 0xdd, 0x7b, 0xe0, 0x5c, 0xbf, 0x07, - 0xfa, 0x39, 0xe4, 0x3d, 0xea, 0x69, 0xbe, 0x38, 0xd3, 0xeb, 0x36, 0xfa, 0x71, 0x48, 0xac, 0xd0, - 0x8b, 0xb4, 0x23, 0xc5, 0x11, 0xac, 0xd4, 0xb7, 0x5f, 0x9e, 0x4e, 0x6e, 0x77, 0x1b, 0x75, 0x23, - 0xb1, 0x52, 0xd7, 0xaf, 0xc2, 0xe0, 0x3b, 0xd9, 0xdf, 0x87, 0x61, 0x86, 0x25, 0xc6, 0x70, 0x7f, - 0xdf, 0x3d, 0x22, 0xfc, 0xe0, 0xd3, 0x74, 0x23, 0x71, 0x7e, 0xbb, 0x61, 0xb9, 0x67, 0x16, 0x2f, - 0x1a, 0x54, 0x44, 0xee, 0xff, 0x03, 0xd0, 0x67, 0x96, 0x4d, 0x67, 0x4f, 0x5f, 0xe3, 0x92, 0xe9, - 0xa3, 0x2f, 0x7e, 0xfb, 0xe5, 0xe9, 0xa5, 0x38, 0x52, 0x1f, 0xa8, 0x9b, 0xce, 0xde, 0x03, 0xee, - 0x7e, 0x1b, 0xcd, 0x17, 0xf7, 0x5d, 0xe4, 0x70, 0xe9, 0x6d, 0xbe, 0xea, 0xb1, 0x79, 0x65, 0x02, - 0xf3, 0x4a, 0x09, 0x73, 0xba, 0x22, 0xce, 0x69, 0xe1, 0x8d, 0xce, 0xe7, 0x69, 0xbe, 0x48, 0x48, - 0x96, 0x54, 0xa3, 0x2c, 0xa9, 0xde, 0xaa, 0x25, 0xdb, 0xbc, 0x3e, 0x4a, 0x73, 0x55, 0x0f, 0x9a, - 0xab, 0x7a, 0x2b, 0x73, 0xfd, 0x31, 0xcd, 0x56, 0x2f, 0x9f, 0xb6, 0x2d, 0x7a, 0x13, 0xf1, 0x17, - 0x6b, 0x2f, 0xe8, 0x4d, 0xed, 0x02, 0xf2, 0xc9, 0x1b, 0xcf, 0x4f, 0x2b, 0xb9, 0x4f, 0x27, 0xf8, - 0xcc, 0x69, 0x22, 0xbd, 0xb1, 0x99, 0xff, 0xa2, 0xf4, 0x54, 0x6f, 0x85, 0x85, 0x9e, 0x53, 0x60, - 0xb2, 0xa7, 0x92, 0x53, 0x33, 0xbd, 0xb9, 0xe5, 0xdc, 0x3a, 0x6c, 0x39, 0x67, 0x0a, 0x7e, 0x45, - 0x81, 0x63, 0x52, 0x79, 0xa5, 0xea, 0x9d, 0x96, 0xd4, 0xbb, 0xbd, 0xf7, 0x49, 0x84, 0x31, 0xa0, - 0x5d, 0xd0, 0xbd, 0x12, 0x20, 0x20, 0xd9, 0xf3, 0xfb, 0x92, 0xe4, 0xf7, 0xe3, 0x1e, 0x20, 0xc4, - 0x5c, 0x3c, 0x02, 0x98, 0xda, 0x36, 0x24, 0xb7, 0x3a, 0x08, 0xe9, 0x59, 0x48, 0xac, 0x77, 0x98, - 0x86, 0x63, 0x14, 0xbf, 0xde, 0x29, 0x76, 0x4c, 0xab, 0xb6, 0x67, 0x24, 0xd6, 0x3b, 0xfa, 0x09, - 0x50, 0x0b, 0xec, 0x2f, 0xf0, 0xd3, 0x8b, 0xe3, 0x94, 0xa1, 0x60, 0xd5, 0x19, 0x07, 0xa6, 0xe9, - 0x59, 0x48, 0x5e, 0x43, 0xe6, 0x0e, 0x53, 0x02, 0x28, 0x0f, 0x1e, 0x31, 0xc8, 0x38, 0x7b, 0xe0, - 0xa3, 0x90, 0xe2, 0x82, 0xf5, 0x93, 0x18, 0xb1, 0xe3, 0xb2, 0xc7, 0x32, 0x04, 0x56, 0x87, 0xad, - 0x5c, 0x84, 0xaa, 0x9f, 0x82, 0x41, 0xa3, 0xb1, 0xbb, 0xe7, 0xb2, 0x87, 0xf7, 0xb2, 0x51, 0x72, - 0xee, 0x31, 0x18, 0xf6, 0x34, 0x7a, 0x93, 0x45, 0x97, 0xe9, 0xd4, 0xf4, 0xa9, 0xe0, 0x7a, 0xc2, - 0xf7, 0x2d, 0xe9, 0x90, 0x3e, 0x03, 0xa9, 0x4d, 0xb7, 0xe3, 0x17, 0x7d, 0xde, 0x91, 0x7a, 0xa3, - 0xb9, 0xf7, 0x29, 0x90, 0x2a, 0x23, 0xd4, 0x26, 0x06, 0xbf, 0x07, 0x92, 0x65, 0xfb, 0x29, 0x8b, - 0x29, 0x38, 0xc1, 0x2c, 0x8a, 0xc9, 0xcc, 0xa6, 0x84, 0xac, 0xdf, 0x13, 0xb4, 0xfb, 0x51, 0xcf, - 0xee, 0x01, 0x3e, 0x62, 0xfb, 0x9c, 0x60, 0x7b, 0xe6, 0x40, 0xcc, 0xd4, 0x63, 0xff, 0x0b, 0x90, - 0x0e, 0x3c, 0x45, 0x9f, 0x65, 0x6a, 0x24, 0x64, 0x60, 0xd0, 0x56, 0x98, 0x23, 0x87, 0x60, 0x54, - 0x78, 0x30, 0x86, 0x06, 0x4c, 0xdc, 0x07, 0x4a, 0xcc, 0x3c, 0x27, 0x9a, 0x39, 0x9c, 0x95, 0x99, - 0x7a, 0x81, 0xda, 0x88, 0x98, 0xfb, 0x24, 0x0d, 0xce, 0xfe, 0x4e, 0xc4, 0x9f, 0x73, 0x83, 0xa0, - 0xae, 0x35, 0x9a, 0xb9, 0x07, 0x01, 0x68, 0xca, 0x57, 0xac, 0x6e, 0x4b, 0xca, 0xba, 0x31, 0x6e, - 0xe0, 0xad, 0x3d, 0xb4, 0x85, 0x1c, 0xc2, 0x22, 0xf6, 0x53, 0xb8, 0xc0, 0x00, 0x4d, 0x31, 0x82, - 0xbf, 0x2f, 0x12, 0x1f, 0xda, 0x89, 0x61, 0xd6, 0x0c, 0x65, 0x7d, 0x0c, 0xb9, 0x05, 0xcb, 0x76, - 0xf7, 0x50, 0x47, 0x42, 0x2c, 0xea, 0x67, 0x85, 0x84, 0x1d, 0x5b, 0xbc, 0xd3, 0x43, 0xf4, 0x05, - 0x9d, 0xcd, 0x7d, 0x89, 0x28, 0x88, 0x5b, 0x81, 0x9e, 0x09, 0xaa, 0x31, 0x26, 0xa8, 0x9f, 0x17, - 0xfa, 0xb7, 0x03, 0xd4, 0x94, 0x5e, 0x2d, 0x2f, 0x09, 0xef, 0x39, 0x07, 0x2b, 0x2b, 0xbe, 0x63, - 0x72, 0x9b, 0x72, 0x95, 0xef, 0x8b, 0x54, 0xb9, 0x4f, 0x77, 0x7b, 0x58, 0x9b, 0xaa, 0x71, 0x6d, - 0xfa, 0x75, 0xaf, 0xe3, 0xa0, 0xbf, 0x65, 0x40, 0x7e, 0x3a, 0x43, 0xbf, 0x3f, 0xd2, 0xf7, 0x79, - 0xa5, 0xe4, 0xa9, 0xba, 0x14, 0xd7, 0xfd, 0xf9, 0x44, 0xb1, 0xe8, 0xa9, 0x7b, 0xe1, 0x10, 0x21, - 0x90, 0x4f, 0x94, 0x4a, 0x5e, 0xd9, 0x4e, 0x7d, 0xf0, 0xf9, 0x69, 0xe5, 0x85, 0xe7, 0xa7, 0x07, - 0x72, 0x5f, 0x50, 0x60, 0x82, 0x71, 0x06, 0x02, 0xf7, 0x01, 0x49, 0xf9, 0xdb, 0x78, 0xcd, 0x08, - 0xb3, 0xc0, 0xcf, 0x2c, 0x78, 0xbf, 0xa9, 0x40, 0xa6, 0x47, 0x57, 0x6e, 0xef, 0x85, 0x58, 0x2a, - 0xe7, 0x95, 0xca, 0xcf, 0xdf, 0xe6, 0x8f, 0xc1, 0xe0, 0x56, 0xa3, 0x85, 0x3a, 0x78, 0x25, 0xc0, - 0x1f, 0xa8, 0xca, 0xfc, 0x30, 0x87, 0x0e, 0x71, 0x1a, 0x55, 0x4e, 0xa0, 0x2d, 0xea, 0x19, 0x48, - 0x96, 0x4d, 0xd7, 0x24, 0x1a, 0x8c, 0x78, 0xf5, 0xd5, 0x74, 0xcd, 0xdc, 0x59, 0x18, 0x59, 0xdd, - 0x27, 0x77, 0x65, 0xea, 0xe4, 0x1e, 0x88, 0xd8, 0xfd, 0xf1, 0x7e, 0xf5, 0xcc, 0xdc, 0x60, 0xaa, - 0xae, 0xdd, 0x50, 0xf2, 0x49, 0xa2, 0xcf, 0x93, 0x30, 0xb6, 0x8e, 0xd5, 0x26, 0x38, 0x01, 0x46, - 0x9f, 0xae, 0x7a, 0x93, 0x97, 0x9a, 0x32, 0xd5, 0x6f, 0xca, 0x66, 0x40, 0x59, 0x15, 0x5b, 0xa7, - 0xa0, 0x1e, 0x86, 0xb2, 0x3a, 0x97, 0x4c, 0x8d, 0x69, 0x13, 0x73, 0xc9, 0x14, 0x68, 0xa3, 0xec, - 0xb9, 0xff, 0xa0, 0x82, 0x46, 0x5b, 0x9d, 0x32, 0xda, 0x69, 0x58, 0x0d, 0xb7, 0xb7, 0x5f, 0xf5, - 0x34, 0xd6, 0x1f, 0x86, 0x61, 0x6c, 0xd2, 0x2b, 0xec, 0x17, 0xa8, 0xb0, 0xe9, 0x4f, 0xb0, 0x16, - 0x45, 0x12, 0xc1, 0x06, 0x48, 0xe8, 0xf8, 0x18, 0xfd, 0x0a, 0xa8, 0x6b, 0x6b, 0xab, 0x6c, 0x71, - 0x5b, 0x3a, 0x10, 0xca, 0xae, 0xda, 0xb0, 0x6f, 0x6c, 0xcc, 0xd9, 0x35, 0xb0, 0x00, 0x7d, 0x09, - 0x12, 0x6b, 0xab, 0xac, 0xe1, 0x3d, 0x19, 0x47, 0x8c, 0x91, 0x58, 0x5b, 0x9d, 0xfa, 0x5b, 0x05, - 0x46, 0x85, 0x51, 0x3d, 0x07, 0x23, 0x74, 0x20, 0x30, 0xdd, 0x21, 0x43, 0x18, 0xe3, 0x3a, 0x27, - 0x6e, 0x51, 0xe7, 0xa9, 0x02, 0x8c, 0x4b, 0xe3, 0xfa, 0x3c, 0xe8, 0xc1, 0x21, 0xa6, 0x04, 0xfd, - 0xf5, 0x9e, 0x10, 0x4a, 0xee, 0x2e, 0x00, 0xdf, 0xae, 0xde, 0x8f, 0xce, 0xac, 0x55, 0x36, 0xb7, - 0x2a, 0x65, 0x4d, 0xc9, 0x7d, 0x55, 0x81, 0x34, 0x6b, 0x5b, 0x6b, 0x76, 0x1b, 0xe9, 0x45, 0x50, - 0x0a, 0x2c, 0x1e, 0xde, 0x98, 0xde, 0x4a, 0x41, 0x3f, 0x0d, 0x4a, 0x31, 0xbe, 0xab, 0x95, 0xa2, - 0xbe, 0x08, 0x4a, 0x89, 0x39, 0x38, 0x9e, 0x67, 0x94, 0x52, 0xee, 0x87, 0x2a, 0x1c, 0x0d, 0xb6, - 0xd1, 0xbc, 0x9e, 0x9c, 0x10, 0xdf, 0x9b, 0xf2, 0xc3, 0x67, 0x16, 0xcf, 0x2e, 0xcd, 0xe3, 0x7f, - 0xbc, 0x90, 0x3c, 0x21, 0xbe, 0x42, 0xf5, 0xb2, 0xf4, 0x5c, 0x13, 0xc9, 0x27, 0x03, 0xd4, 0x9e, - 0x6b, 0x22, 0x02, 0xb5, 0xe7, 0x9a, 0x88, 0x40, 0xed, 0xb9, 0x26, 0x22, 0x50, 0x7b, 0x8e, 0x02, - 0x04, 0x6a, 0xcf, 0x35, 0x11, 0x81, 0xda, 0x73, 0x4d, 0x44, 0xa0, 0xf6, 0x5e, 0x13, 0x61, 0xe4, - 0xbe, 0xd7, 0x44, 0x44, 0x7a, 0xef, 0x35, 0x11, 0x91, 0xde, 0x7b, 0x4d, 0x24, 0x9f, 0x74, 0x3b, - 0x5d, 0xd4, 0xff, 0xd0, 0x41, 0xc4, 0x1f, 0xf4, 0x0e, 0xe8, 0x17, 0xe0, 0x75, 0x18, 0xa7, 0xfb, - 0x11, 0x25, 0xdb, 0x72, 0xcd, 0x86, 0x85, 0x3a, 0xfa, 0xdb, 0x61, 0x84, 0x0e, 0xd1, 0xb7, 0x9c, - 0xb0, 0xb7, 0x40, 0x4a, 0x67, 0xe5, 0x56, 0xe0, 0xce, 0xfd, 0x34, 0x09, 0x93, 0x74, 0x60, 0xcd, - 0x6c, 0x21, 0xe1, 0x92, 0xd1, 0x29, 0xe9, 0x48, 0x69, 0x0c, 0xc3, 0x6f, 0xbe, 0x3c, 0x4d, 0x47, - 0x0b, 0x5e, 0x30, 0x9d, 0x92, 0x0e, 0x97, 0x44, 0x3e, 0x7f, 0xfd, 0x39, 0x25, 0x5d, 0x3c, 0x12, - 0xf9, 0xbc, 0xe5, 0xc6, 0xe3, 0xe3, 0x57, 0x90, 0x44, 0xbe, 0xb2, 0x17, 0x65, 0xa7, 0xa4, 0xcb, - 0x48, 0x22, 0x5f, 0xc5, 0x8b, 0xb7, 0x53, 0xd2, 0xd1, 0x93, 0xc8, 0x77, 0xc5, 0x8b, 0xbc, 0x53, - 0xd2, 0x21, 0x94, 0xc8, 0xb7, 0xec, 0xc5, 0xe0, 0x29, 0xe9, 0xaa, 0x92, 0xc8, 0xf7, 0x88, 0x17, - 0x8d, 0xa7, 0xa4, 0x4b, 0x4b, 0x22, 0xdf, 0x8a, 0x17, 0x97, 0xb3, 0xf2, 0xf5, 0x25, 0x91, 0xf1, - 0xaa, 0x1f, 0xa1, 0xb3, 0xf2, 0x45, 0x26, 0x91, 0xf3, 0xff, 0xf9, 0xb1, 0x3a, 0x2b, 0x5f, 0x69, - 0x12, 0x39, 0xaf, 0xf9, 0x51, 0x3b, 0x2b, 0x1f, 0x95, 0x89, 0x9c, 0xab, 0x7e, 0xfc, 0xce, 0xca, - 0x87, 0x66, 0x22, 0xe7, 0x9a, 0x1f, 0xc9, 0xb3, 0xf2, 0xf1, 0x99, 0xc8, 0xb9, 0xee, 0xef, 0xa1, - 0x7f, 0x43, 0x0a, 0xbf, 0xc0, 0x25, 0xa8, 0x9c, 0x14, 0x7e, 0x10, 0x12, 0x7a, 0x39, 0x29, 0xf4, - 0x20, 0x24, 0xec, 0x72, 0x52, 0xd8, 0x41, 0x48, 0xc8, 0xe5, 0xa4, 0x90, 0x83, 0x90, 0x70, 0xcb, - 0x49, 0xe1, 0x06, 0x21, 0xa1, 0x96, 0x93, 0x42, 0x0d, 0x42, 0xc2, 0x2c, 0x27, 0x85, 0x19, 0x84, - 0x84, 0x58, 0x4e, 0x0a, 0x31, 0x08, 0x09, 0xaf, 0x9c, 0x14, 0x5e, 0x10, 0x12, 0x5a, 0x27, 0xe5, - 0xd0, 0x82, 0xb0, 0xb0, 0x3a, 0x29, 0x87, 0x15, 0x84, 0x85, 0xd4, 0xdd, 0x72, 0x48, 0x0d, 0xdf, - 0x7c, 0x79, 0x7a, 0x10, 0x0f, 0x05, 0xa2, 0xe9, 0xa4, 0x1c, 0x4d, 0x10, 0x16, 0x49, 0x27, 0xe5, - 0x48, 0x82, 0xb0, 0x28, 0x3a, 0x29, 0x47, 0x11, 0x84, 0x45, 0xd0, 0x8b, 0x72, 0x04, 0xf9, 0x57, - 0x7c, 0x72, 0xd2, 0x89, 0x62, 0x54, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, - 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, - 0x4e, 0x04, 0xa9, 0xb1, 0x22, 0x48, 0xed, 0x17, 0x41, 0x27, 0xe5, 0x0b, 0x0f, 0x10, 0x56, 0x90, - 0x4e, 0xca, 0x27, 0x9f, 0xd1, 0x21, 0xa4, 0xc6, 0x0a, 0x21, 0xb5, 0x5f, 0x08, 0x7d, 0x43, 0x85, - 0xa3, 0x42, 0x08, 0xb1, 0xe3, 0xa1, 0x37, 0xab, 0x02, 0x9d, 0x8f, 0x71, 0xbf, 0x22, 0x2c, 0xa6, - 0xce, 0xc7, 0x38, 0xa3, 0x3e, 0x28, 0xce, 0x7a, 0xab, 0x50, 0x25, 0x46, 0x15, 0xba, 0xe2, 0xc5, - 0xd0, 0xf9, 0x18, 0xf7, 0x2e, 0x7a, 0x63, 0xef, 0xe2, 0x41, 0x45, 0xe0, 0x91, 0x58, 0x45, 0x60, - 0x25, 0x56, 0x11, 0xb8, 0xea, 0x7b, 0xf0, 0x03, 0x09, 0x38, 0xe6, 0x7b, 0x90, 0x7e, 0x22, 0xbf, - 0x24, 0x94, 0x0b, 0x9c, 0x50, 0xe9, 0xfc, 0xd4, 0x26, 0xe0, 0xc6, 0xc4, 0x4a, 0x5d, 0xdf, 0x10, - 0xcf, 0xaa, 0xf2, 0x87, 0x3d, 0xbf, 0x09, 0x78, 0x9c, 0xed, 0x85, 0x9e, 0x04, 0x75, 0xa5, 0xee, - 0x90, 0x6a, 0x11, 0xf6, 0xd8, 0x92, 0x81, 0xc9, 0xba, 0x01, 0x43, 0x84, 0xdd, 0x21, 0xee, 0xbd, - 0x95, 0x07, 0x97, 0x0d, 0x26, 0x29, 0xf7, 0xa2, 0x02, 0x33, 0x42, 0x28, 0xbf, 0x39, 0x27, 0x06, - 0x97, 0x63, 0x9d, 0x18, 0x08, 0x09, 0xe2, 0x9f, 0x1e, 0xdc, 0xdb, 0x7b, 0x50, 0x1d, 0xcc, 0x12, - 0xf9, 0x24, 0xe1, 0x97, 0x61, 0xcc, 0x9f, 0x01, 0x79, 0x65, 0x3b, 0x17, 0xbd, 0x99, 0x19, 0x96, - 0x9a, 0xe7, 0xa4, 0x4d, 0xb4, 0x03, 0x61, 0x5e, 0xb6, 0xe6, 0xf2, 0x30, 0xbe, 0x26, 0xfe, 0xd1, - 0x4e, 0xd4, 0x5e, 0x44, 0x0a, 0xb7, 0xe6, 0x37, 0x3e, 0x33, 0x3d, 0x90, 0xbb, 0x1f, 0x46, 0x82, - 0x7f, 0x97, 0x23, 0x01, 0x87, 0x39, 0x30, 0x9f, 0x7c, 0x09, 0x73, 0xff, 0xbe, 0x02, 0xb7, 0x05, - 0xd9, 0xdf, 0xd5, 0x70, 0xf7, 0x56, 0x2c, 0xdc, 0xd3, 0x3f, 0x08, 0x29, 0xc4, 0x1c, 0xc7, 0x7e, - 0xd9, 0x84, 0xbd, 0x46, 0x86, 0xb2, 0xcf, 0x93, 0x7f, 0x0d, 0x0f, 0x22, 0x6d, 0x82, 0xf0, 0xc7, - 0x2e, 0x4e, 0xdd, 0x03, 0x83, 0x54, 0xbe, 0xa8, 0xd7, 0xa8, 0xa4, 0xd7, 0xe7, 0x42, 0xf4, 0x22, - 0x71, 0xa4, 0x5f, 0x15, 0xf4, 0x0a, 0xbc, 0xad, 0x86, 0xb2, 0xcf, 0xf3, 0xe0, 0x2b, 0xa6, 0x70, - 0xff, 0x47, 0x22, 0x2a, 0x5a, 0xc9, 0x59, 0x48, 0x55, 0x64, 0x9e, 0x70, 0x3d, 0xcb, 0x90, 0x5c, - 0xb3, 0xeb, 0xe4, 0x37, 0x57, 0xc8, 0xcf, 0xc6, 0x32, 0x23, 0xb3, 0xdf, 0x90, 0x3d, 0x05, 0xa9, - 0xd2, 0x5e, 0xa3, 0x59, 0xef, 0x20, 0x8b, 0x1d, 0xd9, 0xb3, 0x1d, 0x74, 0x8c, 0x31, 0x3c, 0x5a, - 0xae, 0x04, 0x13, 0x6b, 0xb6, 0x55, 0xdc, 0x77, 0x83, 0x75, 0x63, 0x5e, 0x4a, 0x11, 0x76, 0xe4, - 0x43, 0xfe, 0xd2, 0x03, 0x33, 0x14, 0x07, 0xbf, 0xfd, 0xf2, 0xb4, 0xb2, 0xe5, 0x6d, 0x9f, 0xaf, - 0xc2, 0xed, 0x2c, 0x7d, 0x7a, 0x44, 0x2d, 0x46, 0x89, 0x1a, 0x66, 0xc7, 0xd4, 0x01, 0x71, 0x2b, - 0x58, 0x9c, 0x15, 0x2a, 0xee, 0x8d, 0x69, 0x86, 0x9b, 0xa2, 0x03, 0x35, 0x53, 0x0f, 0xa5, 0x59, - 0xa8, 0xb8, 0xf9, 0x28, 0x71, 0x92, 0x66, 0x77, 0xc3, 0xb0, 0x47, 0x0b, 0x44, 0x43, 0x30, 0x53, - 0x16, 0xe7, 0x72, 0x90, 0x0e, 0x24, 0xac, 0x3e, 0x08, 0x4a, 0x41, 0x1b, 0xc0, 0xff, 0x15, 0x35, - 0x05, 0xff, 0x57, 0xd2, 0x12, 0x73, 0xf7, 0xc0, 0xb8, 0xb4, 0x7d, 0x89, 0x29, 0x65, 0x0d, 0xf0, - 0x7f, 0x15, 0x2d, 0x3d, 0x95, 0xfc, 0xe0, 0x1f, 0x66, 0x07, 0xe6, 0x2e, 0x83, 0xde, 0xbb, 0xd1, - 0xa9, 0x0f, 0x41, 0xa2, 0x80, 0x45, 0xde, 0x0e, 0x89, 0x62, 0x51, 0x53, 0xa6, 0xc6, 0x7f, 0xfd, - 0x53, 0x33, 0xe9, 0x22, 0xf9, 0xa3, 0xe3, 0xc7, 0x90, 0x5b, 0x2c, 0x32, 0xf0, 0x43, 0x70, 0x5b, - 0xe8, 0x46, 0x29, 0xc6, 0x97, 0x4a, 0x14, 0x5f, 0x2e, 0xf7, 0xe0, 0xcb, 0x65, 0x82, 0x57, 0xf2, - 0xfc, 0xc0, 0xb9, 0xa0, 0x87, 0x6c, 0x32, 0x66, 0xea, 0x81, 0x03, 0xee, 0x42, 0xfe, 0x21, 0xc6, - 0x5b, 0x0c, 0xe5, 0x45, 0x11, 0x07, 0xd6, 0xc5, 0x7c, 0x89, 0xe1, 0x4b, 0xa1, 0xf8, 0x1d, 0xe9, - 0x54, 0x55, 0x5c, 0x21, 0x98, 0x90, 0x92, 0xa7, 0x70, 0x39, 0x54, 0xc8, 0x5e, 0xe0, 0xae, 0x7b, - 0xd9, 0x53, 0xb8, 0x12, 0xca, 0xdb, 0x88, 0xb8, 0xf3, 0x55, 0xc9, 0x9f, 0x66, 0x8b, 0x7c, 0xe1, - 0x8c, 0x7e, 0x1b, 0xcf, 0x51, 0xa1, 0x02, 0x33, 0x03, 0x71, 0xae, 0x7c, 0x89, 0x01, 0x8a, 0x7d, - 0x01, 0xfd, 0xad, 0xc4, 0x91, 0xf9, 0x47, 0x98, 0x90, 0x52, 0x5f, 0x21, 0x11, 0xa6, 0xe2, 0xf0, - 0xe2, 0xd6, 0x8d, 0x57, 0xb2, 0x03, 0x2f, 0xbd, 0x92, 0x1d, 0xf8, 0x97, 0x57, 0xb2, 0x03, 0xdf, - 0x79, 0x25, 0xab, 0x7c, 0xff, 0x95, 0xac, 0xf2, 0x83, 0x57, 0xb2, 0xca, 0x4f, 0x5e, 0xc9, 0x2a, - 0xcf, 0xde, 0xcc, 0x2a, 0x2f, 0xdc, 0xcc, 0x2a, 0x5f, 0xba, 0x99, 0x55, 0xbe, 0x76, 0x33, 0xab, - 0xbc, 0x78, 0x33, 0xab, 0xdc, 0xb8, 0x99, 0x1d, 0x78, 0xe9, 0x66, 0x56, 0xf9, 0xce, 0xcd, 0xac, - 0xf2, 0xfd, 0x9b, 0xd9, 0x81, 0x1f, 0xdc, 0xcc, 0x2a, 0x3f, 0xb9, 0x99, 0x1d, 0x78, 0xf6, 0xbb, - 0xd9, 0x81, 0xe7, 0xbf, 0x9b, 0x1d, 0x78, 0xe1, 0xbb, 0x59, 0xe5, 0xff, 0x02, 0x00, 0x00, 0xff, - 0xff, 0x7f, 0x74, 0x9e, 0xa0, 0xca, 0x63, 0x00, 0x00, + // 6505 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0x6b, 0x70, 0x24, 0x57, + 0x75, 0x56, 0x4f, 0x8f, 0xb4, 0xa3, 0xa3, 0x57, 0xab, 0xb5, 0xd6, 0x8e, 0xe5, 0xb5, 0xa4, 0x1d, + 0xaf, 0xd7, 0xb2, 0xb0, 0xb5, 0x5a, 0xad, 0xb4, 0x8f, 0x59, 0x6c, 0xd7, 0xbc, 0x76, 0xad, 0x45, + 0x1a, 0x89, 0x96, 0x84, 0xbd, 0x24, 0x55, 0x53, 0xbd, 0x33, 0x57, 0xd2, 0xd8, 0x33, 0xdd, 0xc3, + 0x74, 0xcb, 0xb6, 0xfc, 0x23, 0xe5, 0x40, 0x42, 0x20, 0xa9, 0x3c, 0x49, 0x2a, 0x40, 0xc0, 0x18, + 0x52, 0x04, 0x03, 0x79, 0x40, 0x42, 0x08, 0x45, 0xa5, 0x82, 0xff, 0x90, 0x6c, 0x7e, 0x24, 0x65, + 0xf2, 0x2b, 0x45, 0xa5, 0x5c, 0xec, 0x9a, 0xaa, 0x90, 0xc4, 0x49, 0x20, 0xb8, 0x0a, 0xaa, 0xcc, + 0x8f, 0xd4, 0x7d, 0x75, 0xf7, 0xbd, 0xd3, 0xa3, 0x6e, 0x79, 0x6d, 0xe0, 0xcf, 0xee, 0xcc, 0x3d, + 0xe7, 0x3b, 0x7d, 0xee, 0x79, 0xdd, 0xd3, 0xf7, 0x5e, 0x0d, 0xbc, 0xba, 0x04, 0xd3, 0x3b, 0xb6, + 0xbd, 0xd3, 0x40, 0xa7, 0x5b, 0x6d, 0xdb, 0xb5, 0xaf, 0xef, 0x6d, 0x9f, 0xae, 0x21, 0xa7, 0xda, + 0xae, 0xb7, 0x5c, 0xbb, 0x3d, 0x47, 0xc6, 0xf4, 0x11, 0xca, 0x31, 0xc7, 0x39, 0x32, 0xab, 0x30, + 0x7a, 0xb9, 0xde, 0x40, 0x45, 0x8f, 0x71, 0x03, 0xb9, 0xfa, 0x05, 0x48, 0x6e, 0xd7, 0x1b, 0x28, + 0xad, 0x4c, 0xab, 0x33, 0x03, 0x0b, 0x27, 0xe7, 0x24, 0xd0, 0x9c, 0x88, 0x58, 0xc7, 0xc3, 0x06, + 0x41, 0x64, 0xbe, 0x9b, 0x84, 0xb1, 0x10, 0xaa, 0xae, 0x43, 0xd2, 0x32, 0x9b, 0x58, 0xa2, 0x32, + 0xd3, 0x6f, 0x90, 0xcf, 0x7a, 0x1a, 0x8e, 0xb4, 0xcc, 0xea, 0x93, 0xe6, 0x0e, 0x4a, 0x27, 0xc8, + 0x30, 0xff, 0xaa, 0x4f, 0x02, 0xd4, 0x50, 0x0b, 0x59, 0x35, 0x64, 0x55, 0xf7, 0xd3, 0xea, 0xb4, + 0x3a, 0xd3, 0x6f, 0x04, 0x46, 0xf4, 0x77, 0xc0, 0x68, 0x6b, 0xef, 0x7a, 0xa3, 0x5e, 0xad, 0x04, + 0xd8, 0x60, 0x5a, 0x9d, 0xe9, 0x35, 0x34, 0x4a, 0x28, 0xfa, 0xcc, 0xf7, 0xc1, 0xc8, 0xd3, 0xc8, + 0x7c, 0x32, 0xc8, 0x3a, 0x40, 0x58, 0x87, 0xf1, 0x70, 0x80, 0xb1, 0x00, 0x83, 0x4d, 0xe4, 0x38, + 0xe6, 0x0e, 0xaa, 0xb8, 0xfb, 0x2d, 0x94, 0x4e, 0x92, 0xd9, 0x4f, 0x77, 0xcc, 0x5e, 0x9e, 0xf9, + 0x00, 0x43, 0x6d, 0xee, 0xb7, 0x90, 0x9e, 0x83, 0x7e, 0x64, 0xed, 0x35, 0xa9, 0x84, 0xde, 0x2e, + 0xf6, 0x2b, 0x59, 0x7b, 0x4d, 0x59, 0x4a, 0x0a, 0xc3, 0x98, 0x88, 0x23, 0x0e, 0x6a, 0x3f, 0x55, + 0xaf, 0xa2, 0x74, 0x1f, 0x11, 0x70, 0x5f, 0x87, 0x80, 0x0d, 0x4a, 0x97, 0x65, 0x70, 0x9c, 0x5e, + 0x80, 0x7e, 0xf4, 0x8c, 0x8b, 0x2c, 0xa7, 0x6e, 0x5b, 0xe9, 0x23, 0x44, 0xc8, 0xbd, 0x21, 0x5e, + 0x44, 0x8d, 0x9a, 0x2c, 0xc2, 0xc7, 0xe9, 0xe7, 0xe0, 0x88, 0xdd, 0x72, 0xeb, 0xb6, 0xe5, 0xa4, + 0x53, 0xd3, 0xca, 0xcc, 0xc0, 0xc2, 0xf1, 0xd0, 0x40, 0x58, 0xa3, 0x3c, 0x06, 0x67, 0xd6, 0x97, + 0x41, 0x73, 0xec, 0xbd, 0x76, 0x15, 0x55, 0xaa, 0x76, 0x0d, 0x55, 0xea, 0xd6, 0xb6, 0x9d, 0xee, + 0x27, 0x02, 0xa6, 0x3a, 0x27, 0x42, 0x18, 0x0b, 0x76, 0x0d, 0x2d, 0x5b, 0xdb, 0xb6, 0x31, 0xec, + 0x08, 0xdf, 0xf5, 0x71, 0xe8, 0x73, 0xf6, 0x2d, 0xd7, 0x7c, 0x26, 0x3d, 0x48, 0x22, 0x84, 0x7d, + 0xcb, 0xfc, 0xa8, 0x17, 0x46, 0xe2, 0x84, 0xd8, 0x25, 0xe8, 0xdd, 0xc6, 0xb3, 0x4c, 0x27, 0x0e, + 0x63, 0x03, 0x8a, 0x11, 0x8d, 0xd8, 0xf7, 0x26, 0x8d, 0x98, 0x83, 0x01, 0x0b, 0x39, 0x2e, 0xaa, + 0xd1, 0x88, 0x50, 0x63, 0xc6, 0x14, 0x50, 0x50, 0x67, 0x48, 0x25, 0xdf, 0x54, 0x48, 0x3d, 0x0e, + 0x23, 0x9e, 0x4a, 0x95, 0xb6, 0x69, 0xed, 0xf0, 0xd8, 0x3c, 0x1d, 0xa5, 0xc9, 0x5c, 0x89, 0xe3, + 0x0c, 0x0c, 0x33, 0x86, 0x91, 0xf0, 0x5d, 0x2f, 0x02, 0xd8, 0x16, 0xb2, 0xb7, 0x2b, 0x35, 0x54, + 0x6d, 0xa4, 0x53, 0x5d, 0xac, 0xb4, 0x86, 0x59, 0x3a, 0xac, 0x64, 0xd3, 0xd1, 0x6a, 0x43, 0xbf, + 0xe8, 0x87, 0xda, 0x91, 0x2e, 0x91, 0xb2, 0x4a, 0x93, 0xac, 0x23, 0xda, 0xb6, 0x60, 0xb8, 0x8d, + 0x70, 0xdc, 0xa3, 0x1a, 0x9b, 0x59, 0x3f, 0x51, 0x62, 0x2e, 0x72, 0x66, 0x06, 0x83, 0xd1, 0x89, + 0x0d, 0xb5, 0x83, 0x5f, 0xf5, 0x7b, 0xc0, 0x1b, 0xa8, 0x90, 0xb0, 0x02, 0x52, 0x85, 0x06, 0xf9, + 0x60, 0xd9, 0x6c, 0xa2, 0x89, 0x0b, 0x30, 0x2c, 0x9a, 0x47, 0x3f, 0x0a, 0xbd, 0x8e, 0x6b, 0xb6, + 0x5d, 0x12, 0x85, 0xbd, 0x06, 0xfd, 0xa2, 0x6b, 0xa0, 0x22, 0xab, 0x46, 0xaa, 0x5c, 0xaf, 0x81, + 0x3f, 0x4e, 0x9c, 0x87, 0x21, 0xe1, 0xf1, 0x71, 0x81, 0x99, 0x8f, 0xf6, 0xc1, 0xd1, 0xb0, 0x98, + 0x0b, 0x0d, 0xff, 0x71, 0xe8, 0xb3, 0xf6, 0x9a, 0xd7, 0x51, 0x3b, 0xad, 0x12, 0x09, 0xec, 0x9b, + 0x9e, 0x83, 0xde, 0x86, 0x79, 0x1d, 0x35, 0xd2, 0xc9, 0x69, 0x65, 0x66, 0x78, 0xe1, 0x1d, 0xb1, + 0xa2, 0x7a, 0x6e, 0x05, 0x43, 0x0c, 0x8a, 0xd4, 0x1f, 0x86, 0x24, 0x2b, 0x71, 0x58, 0xc2, 0x6c, + 0x3c, 0x09, 0x38, 0x16, 0x0d, 0x82, 0xd3, 0xef, 0x82, 0x7e, 0xfc, 0x3f, 0xb5, 0x6d, 0x1f, 0xd1, + 0x39, 0x85, 0x07, 0xb0, 0x5d, 0xf5, 0x09, 0x48, 0x91, 0x30, 0xab, 0x21, 0xbe, 0x34, 0x78, 0xdf, + 0xb1, 0x63, 0x6a, 0x68, 0xdb, 0xdc, 0x6b, 0xb8, 0x95, 0xa7, 0xcc, 0xc6, 0x1e, 0x22, 0x01, 0xd3, + 0x6f, 0x0c, 0xb2, 0xc1, 0xf7, 0xe0, 0x31, 0x7d, 0x0a, 0x06, 0x68, 0x54, 0xd6, 0xad, 0x1a, 0x7a, + 0x86, 0x54, 0x9f, 0x5e, 0x83, 0x06, 0xea, 0x32, 0x1e, 0xc1, 0x8f, 0x7f, 0xc2, 0xb1, 0x2d, 0xee, + 0x5a, 0xf2, 0x08, 0x3c, 0x40, 0x1e, 0x7f, 0x5e, 0x2e, 0x7c, 0x77, 0x87, 0x4f, 0x4f, 0x8e, 0xc5, + 0xcc, 0x57, 0x13, 0x90, 0x24, 0xf9, 0x36, 0x02, 0x03, 0x9b, 0xd7, 0xd6, 0x4b, 0x95, 0xe2, 0xda, + 0x56, 0x7e, 0xa5, 0xa4, 0x29, 0xfa, 0x30, 0x00, 0x19, 0xb8, 0xbc, 0xb2, 0x96, 0xdb, 0xd4, 0x12, + 0xde, 0xf7, 0xe5, 0xf2, 0xe6, 0xb9, 0x45, 0x4d, 0xf5, 0x00, 0x5b, 0x74, 0x20, 0x19, 0x64, 0x38, + 0xbb, 0xa0, 0xf5, 0xea, 0x1a, 0x0c, 0x52, 0x01, 0xcb, 0x8f, 0x97, 0x8a, 0xe7, 0x16, 0xb5, 0x3e, + 0x71, 0xe4, 0xec, 0x82, 0x76, 0x44, 0x1f, 0x82, 0x7e, 0x32, 0x92, 0x5f, 0x5b, 0x5b, 0xd1, 0x52, + 0x9e, 0xcc, 0x8d, 0x4d, 0x63, 0xb9, 0x7c, 0x45, 0xeb, 0xf7, 0x64, 0x5e, 0x31, 0xd6, 0xb6, 0xd6, + 0x35, 0xf0, 0x24, 0xac, 0x96, 0x36, 0x36, 0x72, 0x57, 0x4a, 0xda, 0x80, 0xc7, 0x91, 0xbf, 0xb6, + 0x59, 0xda, 0xd0, 0x06, 0x05, 0xb5, 0xce, 0x2e, 0x68, 0x43, 0xde, 0x23, 0x4a, 0xe5, 0xad, 0x55, + 0x6d, 0x58, 0x1f, 0x85, 0x21, 0xfa, 0x08, 0xae, 0xc4, 0x88, 0x34, 0x74, 0x6e, 0x51, 0xd3, 0x7c, + 0x45, 0xa8, 0x94, 0x51, 0x61, 0xe0, 0xdc, 0xa2, 0xa6, 0x67, 0x0a, 0xd0, 0x4b, 0xa2, 0x4b, 0xd7, + 0x61, 0x78, 0x25, 0x97, 0x2f, 0xad, 0x54, 0xd6, 0xd6, 0x37, 0x97, 0xd7, 0xca, 0xb9, 0x15, 0x4d, + 0xf1, 0xc7, 0x8c, 0xd2, 0xbb, 0xb7, 0x96, 0x8d, 0x52, 0x51, 0x4b, 0x04, 0xc7, 0xd6, 0x4b, 0xb9, + 0xcd, 0x52, 0x51, 0x53, 0x33, 0x55, 0x38, 0x1a, 0x56, 0x67, 0x42, 0x33, 0x23, 0xe0, 0xe2, 0x44, + 0x17, 0x17, 0x13, 0x59, 0x1d, 0x2e, 0xfe, 0x8c, 0x02, 0x63, 0x21, 0xb5, 0x36, 0xf4, 0x21, 0x8f, + 0x40, 0x2f, 0x0d, 0x51, 0xba, 0xfa, 0xdc, 0x1f, 0x5a, 0xb4, 0x49, 0xc0, 0x76, 0xac, 0x40, 0x04, + 0x17, 0x5c, 0x81, 0xd5, 0x2e, 0x2b, 0x30, 0x16, 0xd1, 0xa1, 0xe4, 0x07, 0x14, 0x48, 0x77, 0x93, + 0x1d, 0x51, 0x28, 0x12, 0x42, 0xa1, 0xb8, 0x24, 0x2b, 0x70, 0xa2, 0xfb, 0x1c, 0x3a, 0xb4, 0xf8, + 0x9c, 0x02, 0xe3, 0xe1, 0x8d, 0x4a, 0xa8, 0x0e, 0x0f, 0x43, 0x5f, 0x13, 0xb9, 0xbb, 0x36, 0x5f, + 0xac, 0x4f, 0x85, 0x2c, 0x01, 0x98, 0x2c, 0xdb, 0x8a, 0xa1, 0x82, 0x6b, 0x88, 0xda, 0xad, 0xdb, + 0xa0, 0xda, 0x74, 0x68, 0xfa, 0xe1, 0x04, 0xdc, 0x11, 0x2a, 0x3c, 0x54, 0xd1, 0xbb, 0x01, 0xea, + 0x56, 0x6b, 0xcf, 0xa5, 0x0b, 0x32, 0xad, 0x4f, 0xfd, 0x64, 0x84, 0xe4, 0x3e, 0xae, 0x3d, 0x7b, + 0xae, 0x47, 0x57, 0x09, 0x1d, 0xe8, 0x10, 0x61, 0xb8, 0xe0, 0x2b, 0x9a, 0x24, 0x8a, 0x4e, 0x76, + 0x99, 0x69, 0xc7, 0x5a, 0x37, 0x0f, 0x5a, 0xb5, 0x51, 0x47, 0x96, 0x5b, 0x71, 0xdc, 0x36, 0x32, + 0x9b, 0x75, 0x6b, 0x87, 0x14, 0xe0, 0x54, 0xb6, 0x77, 0xdb, 0x6c, 0x38, 0xc8, 0x18, 0xa1, 0xe4, + 0x0d, 0x4e, 0xc5, 0x08, 0xb2, 0xca, 0xb4, 0x03, 0x88, 0x3e, 0x01, 0x41, 0xc9, 0x1e, 0x22, 0xf3, + 0xc5, 0x23, 0x30, 0x10, 0x68, 0xeb, 0xf4, 0x13, 0x30, 0xf8, 0x84, 0xf9, 0x94, 0x59, 0xe1, 0xad, + 0x3a, 0xb5, 0xc4, 0x00, 0x1e, 0x5b, 0x67, 0xed, 0xfa, 0x3c, 0x1c, 0x25, 0x2c, 0xf6, 0x9e, 0x8b, + 0xda, 0x95, 0x6a, 0xc3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, 0x31, 0x6d, 0x0d, 0x93, 0x0a, + 0x9c, 0xa2, 0x2f, 0xc1, 0x18, 0x41, 0x34, 0xf7, 0x1a, 0x6e, 0xbd, 0xd5, 0x40, 0x15, 0xfc, 0xf2, + 0xe0, 0x90, 0x42, 0xec, 0x69, 0x36, 0x8a, 0x39, 0x56, 0x19, 0x03, 0xd6, 0xc8, 0xd1, 0x8b, 0x70, + 0x37, 0x81, 0xed, 0x20, 0x0b, 0xb5, 0x4d, 0x17, 0x55, 0xd0, 0xfb, 0xf6, 0xcc, 0x86, 0x53, 0x31, + 0xad, 0x5a, 0x65, 0xd7, 0x74, 0x76, 0xd3, 0x47, 0xb1, 0x80, 0x7c, 0x22, 0xad, 0x18, 0x77, 0x62, + 0xc6, 0x2b, 0x8c, 0xaf, 0x44, 0xd8, 0x72, 0x56, 0xed, 0x51, 0xd3, 0xd9, 0xd5, 0xb3, 0x30, 0x4e, + 0xa4, 0x38, 0x6e, 0xbb, 0x6e, 0xed, 0x54, 0xaa, 0xbb, 0xa8, 0xfa, 0x64, 0x65, 0xcf, 0xdd, 0xbe, + 0x90, 0xbe, 0x2b, 0xf8, 0x7c, 0xa2, 0xe1, 0x06, 0xe1, 0x29, 0x60, 0x96, 0x2d, 0x77, 0xfb, 0x82, + 0xbe, 0x01, 0x83, 0xd8, 0x19, 0xcd, 0xfa, 0xb3, 0xa8, 0xb2, 0x6d, 0xb7, 0xc9, 0xca, 0x32, 0x1c, + 0x92, 0xd9, 0x01, 0x0b, 0xce, 0xad, 0x31, 0xc0, 0xaa, 0x5d, 0x43, 0xd9, 0xde, 0x8d, 0xf5, 0x52, + 0xa9, 0x68, 0x0c, 0x70, 0x29, 0x97, 0xed, 0x36, 0x0e, 0xa8, 0x1d, 0xdb, 0x33, 0xf0, 0x00, 0x0d, + 0xa8, 0x1d, 0x9b, 0x9b, 0x77, 0x09, 0xc6, 0xaa, 0x55, 0x3a, 0xe7, 0x7a, 0xb5, 0xc2, 0x5a, 0x7c, + 0x27, 0xad, 0x09, 0xc6, 0xaa, 0x56, 0xaf, 0x50, 0x06, 0x16, 0xe3, 0x8e, 0x7e, 0x11, 0xee, 0xf0, + 0x8d, 0x15, 0x04, 0x8e, 0x76, 0xcc, 0x52, 0x86, 0x2e, 0xc1, 0x58, 0x6b, 0xbf, 0x13, 0xa8, 0x0b, + 0x4f, 0x6c, 0xed, 0xcb, 0xb0, 0x7b, 0xc9, 0x6b, 0x5b, 0x1b, 0x55, 0x4d, 0x17, 0xd5, 0xd2, 0xc7, + 0x82, 0xdc, 0x01, 0x82, 0x7e, 0x1a, 0xb4, 0x6a, 0xb5, 0x82, 0x2c, 0xf3, 0x7a, 0x03, 0x55, 0xcc, + 0x36, 0xb2, 0x4c, 0x27, 0x3d, 0x15, 0x64, 0x1e, 0xae, 0x56, 0x4b, 0x84, 0x9a, 0x23, 0x44, 0x7d, + 0x16, 0x46, 0xed, 0xeb, 0x4f, 0x54, 0x69, 0x64, 0x55, 0x5a, 0x6d, 0xb4, 0x5d, 0x7f, 0x26, 0x7d, + 0x92, 0x98, 0x69, 0x04, 0x13, 0x48, 0x5c, 0xad, 0x93, 0x61, 0xfd, 0x7e, 0xd0, 0xaa, 0xce, 0xae, + 0xd9, 0x6e, 0x91, 0xa5, 0xdd, 0x69, 0x99, 0x55, 0x94, 0xbe, 0x97, 0xb2, 0xd2, 0xf1, 0x32, 0x1f, + 0xc6, 0x91, 0xed, 0x3c, 0x5d, 0xdf, 0x76, 0xb9, 0xc4, 0xfb, 0x68, 0x64, 0x93, 0x31, 0x26, 0xed, + 0x71, 0x38, 0xba, 0x67, 0xd5, 0x2d, 0x17, 0xb5, 0x5b, 0x6d, 0x84, 0x9b, 0x78, 0x9a, 0x89, 0xe9, + 0x7f, 0x3f, 0xd2, 0xa5, 0x0d, 0xdf, 0x0a, 0x72, 0xd3, 0x00, 0x30, 0xc6, 0xf6, 0x3a, 0x07, 0x33, + 0x59, 0x18, 0x0c, 0xc6, 0x85, 0xde, 0x0f, 0x34, 0x32, 0x34, 0x05, 0xaf, 0xb1, 0x85, 0xb5, 0x22, + 0x5e, 0x1d, 0xdf, 0x5b, 0xd2, 0x12, 0x78, 0x95, 0x5e, 0x59, 0xde, 0x2c, 0x55, 0x8c, 0xad, 0xf2, + 0xe6, 0xf2, 0x6a, 0x49, 0x53, 0x67, 0xfb, 0x53, 0xdf, 0x3b, 0xa2, 0x3d, 0xf7, 0xdc, 0x73, 0xcf, + 0x25, 0x32, 0xdf, 0x4c, 0xc0, 0xb0, 0xd8, 0x19, 0xeb, 0xef, 0x84, 0x63, 0xfc, 0x35, 0xd6, 0x41, + 0x6e, 0xe5, 0xe9, 0x7a, 0x9b, 0x84, 0x6a, 0xd3, 0xa4, 0xbd, 0xa5, 0x67, 0xe5, 0xa3, 0x8c, 0x6b, + 0x03, 0xb9, 0x8f, 0xd5, 0xdb, 0x38, 0x10, 0x9b, 0xa6, 0xab, 0xaf, 0xc0, 0x94, 0x65, 0x57, 0x1c, + 0xd7, 0xb4, 0x6a, 0x66, 0xbb, 0x56, 0xf1, 0x37, 0x10, 0x2a, 0x66, 0xb5, 0x8a, 0x1c, 0xc7, 0xa6, + 0x4b, 0x84, 0x27, 0xe5, 0xb8, 0x65, 0x6f, 0x30, 0x66, 0xbf, 0x76, 0xe6, 0x18, 0xab, 0x14, 0x11, + 0x6a, 0xb7, 0x88, 0xb8, 0x0b, 0xfa, 0x9b, 0x66, 0xab, 0x82, 0x2c, 0xb7, 0xbd, 0x4f, 0xfa, 0xb9, + 0x94, 0x91, 0x6a, 0x9a, 0xad, 0x12, 0xfe, 0xfe, 0xf6, 0xf9, 0x20, 0x68, 0xc7, 0x7f, 0x53, 0x61, + 0x30, 0xd8, 0xd3, 0xe1, 0x16, 0xb9, 0x4a, 0xea, 0xb7, 0x42, 0x32, 0xfc, 0x9e, 0x03, 0x3b, 0xc0, + 0xb9, 0x02, 0x2e, 0xec, 0xd9, 0x3e, 0xda, 0x69, 0x19, 0x14, 0x89, 0x17, 0x55, 0x9c, 0xd3, 0x88, + 0xf6, 0xef, 0x29, 0x83, 0x7d, 0xd3, 0xaf, 0x40, 0xdf, 0x13, 0x0e, 0x91, 0xdd, 0x47, 0x64, 0x9f, + 0x3c, 0x58, 0xf6, 0xd5, 0x0d, 0x22, 0xbc, 0xff, 0xea, 0x46, 0xa5, 0xbc, 0x66, 0xac, 0xe6, 0x56, + 0x0c, 0x06, 0xd7, 0xef, 0x84, 0x64, 0xc3, 0x7c, 0x76, 0x5f, 0x5c, 0x02, 0xc8, 0x50, 0x5c, 0xc3, + 0xdf, 0x09, 0xc9, 0xa7, 0x91, 0xf9, 0xa4, 0x58, 0x78, 0xc9, 0xd0, 0xdb, 0x18, 0xfa, 0xa7, 0xa1, + 0x97, 0xd8, 0x4b, 0x07, 0x60, 0x16, 0xd3, 0x7a, 0xf4, 0x14, 0x24, 0x0b, 0x6b, 0x06, 0x0e, 0x7f, + 0x0d, 0x06, 0xe9, 0x68, 0x65, 0x7d, 0xb9, 0x54, 0x28, 0x69, 0x89, 0xcc, 0x12, 0xf4, 0x51, 0x23, + 0xe0, 0xd4, 0xf0, 0xcc, 0xa0, 0xf5, 0xb0, 0xaf, 0x4c, 0x86, 0xc2, 0xa9, 0x5b, 0xab, 0xf9, 0x92, + 0xa1, 0x25, 0x82, 0xee, 0x75, 0x60, 0x30, 0xd8, 0xce, 0xfd, 0x74, 0x62, 0xea, 0xeb, 0x0a, 0x0c, + 0x04, 0xda, 0x33, 0xdc, 0x18, 0x98, 0x8d, 0x86, 0xfd, 0x74, 0xc5, 0x6c, 0xd4, 0x4d, 0x87, 0x05, + 0x05, 0x90, 0xa1, 0x1c, 0x1e, 0x89, 0xeb, 0xb4, 0x9f, 0x8a, 0xf2, 0xcf, 0x2b, 0xa0, 0xc9, 0xad, + 0x9d, 0xa4, 0xa0, 0xf2, 0x33, 0x55, 0xf0, 0x13, 0x0a, 0x0c, 0x8b, 0xfd, 0x9c, 0xa4, 0xde, 0x89, + 0x9f, 0xa9, 0x7a, 0xdf, 0x49, 0xc0, 0x90, 0xd0, 0xc5, 0xc5, 0xd5, 0xee, 0x7d, 0x30, 0x5a, 0xaf, + 0xa1, 0x66, 0xcb, 0x76, 0x91, 0x55, 0xdd, 0xaf, 0x34, 0xd0, 0x53, 0xa8, 0x91, 0xce, 0x90, 0x42, + 0x71, 0xfa, 0xe0, 0x3e, 0x71, 0x6e, 0xd9, 0xc7, 0xad, 0x60, 0x58, 0x76, 0x6c, 0xb9, 0x58, 0x5a, + 0x5d, 0x5f, 0xdb, 0x2c, 0x95, 0x0b, 0xd7, 0x2a, 0x5b, 0xe5, 0x77, 0x95, 0xd7, 0x1e, 0x2b, 0x1b, + 0x5a, 0x5d, 0x62, 0x7b, 0x1b, 0x53, 0x7d, 0x1d, 0x34, 0x59, 0x29, 0xfd, 0x18, 0x84, 0xa9, 0xa5, + 0xf5, 0xe8, 0x63, 0x30, 0x52, 0x5e, 0xab, 0x6c, 0x2c, 0x17, 0x4b, 0x95, 0xd2, 0xe5, 0xcb, 0xa5, + 0xc2, 0xe6, 0x06, 0x7d, 0x71, 0xf6, 0xb8, 0x37, 0xc5, 0xa4, 0xfe, 0xb8, 0x0a, 0x63, 0x21, 0x9a, + 0xe8, 0x39, 0xd6, 0xb3, 0xd3, 0xd7, 0x88, 0x07, 0xe3, 0x68, 0x3f, 0x87, 0xbb, 0x82, 0x75, 0xb3, + 0xed, 0xb2, 0x16, 0xff, 0x7e, 0xc0, 0x56, 0xb2, 0xdc, 0xfa, 0x76, 0x1d, 0xb5, 0xd9, 0x3e, 0x03, + 0x6d, 0xe4, 0x47, 0xfc, 0x71, 0xba, 0xd5, 0xf0, 0x00, 0xe8, 0x2d, 0xdb, 0xa9, 0xbb, 0xf5, 0xa7, + 0x50, 0xa5, 0x6e, 0xf1, 0x4d, 0x09, 0xdc, 0xd8, 0x27, 0x0d, 0x8d, 0x53, 0x96, 0x2d, 0xd7, 0xe3, + 0xb6, 0xd0, 0x8e, 0x29, 0x71, 0xe3, 0x02, 0xae, 0x1a, 0x1a, 0xa7, 0x78, 0xdc, 0x27, 0x60, 0xb0, + 0x66, 0xef, 0xe1, 0x36, 0x89, 0xf2, 0xe1, 0xf5, 0x42, 0x31, 0x06, 0xe8, 0x98, 0xc7, 0xc2, 0xfa, + 0x58, 0x7f, 0x37, 0x64, 0xd0, 0x18, 0xa0, 0x63, 0x94, 0xe5, 0x3e, 0x18, 0x31, 0x77, 0x76, 0xda, + 0x58, 0x38, 0x17, 0x44, 0x3b, 0xf3, 0x61, 0x6f, 0x98, 0x30, 0x4e, 0x5c, 0x85, 0x14, 0xb7, 0x03, + 0x5e, 0x92, 0xb1, 0x25, 0x2a, 0x2d, 0xba, 0x27, 0x95, 0x98, 0xe9, 0x37, 0x52, 0x16, 0x27, 0x9e, + 0x80, 0xc1, 0xba, 0x53, 0xf1, 0x37, 0x47, 0x13, 0xd3, 0x89, 0x99, 0x94, 0x31, 0x50, 0x77, 0xbc, + 0xdd, 0xb0, 0xcc, 0xe7, 0x12, 0x30, 0x2c, 0x6e, 0xee, 0xea, 0x45, 0x48, 0x35, 0xec, 0xaa, 0x49, + 0x42, 0x8b, 0x9e, 0x2c, 0xcc, 0x44, 0xec, 0x07, 0xcf, 0xad, 0x30, 0x7e, 0xc3, 0x43, 0x4e, 0xfc, + 0xb3, 0x02, 0x29, 0x3e, 0xac, 0x8f, 0x43, 0xb2, 0x65, 0xba, 0xbb, 0x44, 0x5c, 0x6f, 0x3e, 0xa1, + 0x29, 0x06, 0xf9, 0x8e, 0xc7, 0x9d, 0x96, 0x69, 0x91, 0x10, 0x60, 0xe3, 0xf8, 0x3b, 0xf6, 0x6b, + 0x03, 0x99, 0x35, 0xd2, 0xf6, 0xdb, 0xcd, 0x26, 0xb2, 0x5c, 0x87, 0xfb, 0x95, 0x8d, 0x17, 0xd8, + 0xb0, 0xfe, 0x0e, 0x18, 0x75, 0xdb, 0x66, 0xbd, 0x21, 0xf0, 0x26, 0x09, 0xaf, 0xc6, 0x09, 0x1e, + 0x73, 0x16, 0xee, 0xe4, 0x72, 0x6b, 0xc8, 0x35, 0xab, 0xbb, 0xa8, 0xe6, 0x83, 0xfa, 0xc8, 0xce, + 0xe1, 0x31, 0xc6, 0x50, 0x64, 0x74, 0x8e, 0xcd, 0x7c, 0x4b, 0x81, 0x51, 0xfe, 0xa2, 0x52, 0xf3, + 0x8c, 0xb5, 0x0a, 0x60, 0x5a, 0x96, 0xed, 0x06, 0xcd, 0xd5, 0x19, 0xca, 0x1d, 0xb8, 0xb9, 0x9c, + 0x07, 0x32, 0x02, 0x02, 0x26, 0x9a, 0x00, 0x3e, 0xa5, 0xab, 0xd9, 0xa6, 0x60, 0x80, 0xed, 0xdc, + 0x93, 0xe3, 0x1f, 0xfa, 0x6a, 0x0b, 0x74, 0x08, 0xbf, 0xd1, 0xe8, 0x47, 0xa1, 0xf7, 0x3a, 0xda, + 0xa9, 0x5b, 0x6c, 0x3f, 0x91, 0x7e, 0xe1, 0xbb, 0x94, 0x49, 0x6f, 0x97, 0x32, 0xff, 0x38, 0x8c, + 0x55, 0xed, 0xa6, 0xac, 0x6e, 0x5e, 0x93, 0x5e, 0xaf, 0x9d, 0x47, 0x95, 0xf7, 0x82, 0xdf, 0x62, + 0x7e, 0x26, 0xa1, 0x5e, 0x59, 0xcf, 0x7f, 0x21, 0x31, 0x71, 0x85, 0xe2, 0xd6, 0xf9, 0x34, 0x0d, + 0xb4, 0xdd, 0x40, 0x55, 0xac, 0x3a, 0xfc, 0xf0, 0x14, 0x3c, 0xb8, 0x53, 0x77, 0x77, 0xf7, 0xae, + 0xcf, 0x55, 0xed, 0xe6, 0xe9, 0x1d, 0x7b, 0xc7, 0xf6, 0x8f, 0xbb, 0xf0, 0x37, 0xf2, 0x85, 0x7c, + 0x62, 0x47, 0x5e, 0xfd, 0xde, 0xe8, 0x44, 0xe4, 0xf9, 0x58, 0xb6, 0x0c, 0x63, 0x8c, 0xb9, 0x42, + 0xf6, 0xdc, 0xe9, 0xab, 0x81, 0x7e, 0xe0, 0xbe, 0x4b, 0xfa, 0xcb, 0xdf, 0x25, 0x6b, 0xb5, 0x31, + 0xca, 0xa0, 0x98, 0x46, 0x5f, 0x20, 0xb2, 0x06, 0xdc, 0x21, 0xc8, 0xa3, 0x79, 0x89, 0xda, 0x11, + 0x12, 0xbf, 0xc9, 0x24, 0x8e, 0x05, 0x24, 0x6e, 0x30, 0x68, 0xb6, 0x00, 0x43, 0x87, 0x91, 0xf5, + 0xf7, 0x4c, 0xd6, 0x20, 0x0a, 0x0a, 0xb9, 0x02, 0x23, 0x44, 0x48, 0x75, 0xcf, 0x71, 0xed, 0x26, + 0x29, 0x7a, 0x07, 0x8b, 0xf9, 0x87, 0xef, 0xd2, 0x44, 0x19, 0xc6, 0xb0, 0x82, 0x87, 0xca, 0x66, + 0x81, 0x1c, 0x33, 0xd4, 0x50, 0xb5, 0x11, 0x21, 0xe1, 0x06, 0x53, 0xc4, 0xe3, 0xcf, 0xbe, 0x07, + 0x8e, 0xe2, 0xcf, 0xa4, 0x26, 0x05, 0x35, 0x89, 0xde, 0x65, 0x4a, 0x7f, 0xeb, 0x03, 0x34, 0x17, + 0xc7, 0x3c, 0x01, 0x01, 0x9d, 0x02, 0x5e, 0xdc, 0x41, 0xae, 0x8b, 0xda, 0x4e, 0xc5, 0x6c, 0x84, + 0xa9, 0x17, 0x78, 0x4d, 0x4f, 0x7f, 0xec, 0x35, 0xd1, 0x8b, 0x57, 0x28, 0x32, 0xd7, 0x68, 0x64, + 0xb7, 0xe0, 0x58, 0x48, 0x54, 0xc4, 0x90, 0xf9, 0x71, 0x26, 0xf3, 0x68, 0x47, 0x64, 0x60, 0xb1, + 0xeb, 0xc0, 0xc7, 0x3d, 0x5f, 0xc6, 0x90, 0xf9, 0x47, 0x4c, 0xa6, 0xce, 0xb0, 0xdc, 0xa5, 0x58, + 0xe2, 0x55, 0x18, 0x7d, 0x0a, 0xb5, 0xaf, 0xdb, 0x0e, 0xdb, 0x1a, 0x89, 0x21, 0xee, 0x13, 0x4c, + 0xdc, 0x08, 0x03, 0x92, 0xbd, 0x12, 0x2c, 0xeb, 0x22, 0xa4, 0xb6, 0xcd, 0x2a, 0x8a, 0x21, 0xe2, + 0x93, 0x4c, 0xc4, 0x11, 0xcc, 0x8f, 0xa1, 0x39, 0x18, 0xdc, 0xb1, 0xd9, 0xb2, 0x14, 0x0d, 0x7f, + 0x9e, 0xc1, 0x07, 0x38, 0x86, 0x89, 0x68, 0xd9, 0xad, 0xbd, 0x06, 0x5e, 0xb3, 0xa2, 0x45, 0x7c, + 0x8a, 0x8b, 0xe0, 0x18, 0x26, 0xe2, 0x10, 0x66, 0x7d, 0x81, 0x8b, 0x70, 0x02, 0xf6, 0x7c, 0x04, + 0x06, 0x6c, 0xab, 0xb1, 0x6f, 0x5b, 0x71, 0x94, 0xf8, 0x34, 0x93, 0x00, 0x0c, 0x82, 0x05, 0x5c, + 0x82, 0xfe, 0xb8, 0x8e, 0xf8, 0xec, 0x6b, 0x3c, 0x3d, 0xb8, 0x07, 0xae, 0xc0, 0x08, 0x2f, 0x50, + 0x75, 0xdb, 0x8a, 0x21, 0xe2, 0x4f, 0x98, 0x88, 0xe1, 0x00, 0x8c, 0x4d, 0xc3, 0x45, 0x8e, 0xbb, + 0x83, 0xe2, 0x08, 0xf9, 0x1c, 0x9f, 0x06, 0x83, 0x30, 0x53, 0x5e, 0x47, 0x56, 0x75, 0x37, 0x9e, + 0x84, 0x17, 0xb9, 0x29, 0x39, 0x06, 0x8b, 0x28, 0xc0, 0x50, 0xd3, 0x6c, 0x3b, 0xbb, 0x66, 0x23, + 0x96, 0x3b, 0x3e, 0xcf, 0x64, 0x0c, 0x7a, 0x20, 0x66, 0x91, 0x3d, 0xeb, 0x30, 0x62, 0xbe, 0xc0, + 0x2d, 0x12, 0x80, 0xb1, 0xd4, 0x73, 0x5c, 0xb2, 0x01, 0x75, 0x18, 0x69, 0x5f, 0xe4, 0xa9, 0x47, + 0xb1, 0xab, 0x41, 0x89, 0x97, 0xa0, 0xdf, 0xa9, 0x3f, 0x1b, 0x4b, 0xcc, 0x9f, 0x72, 0x4f, 0x13, + 0x00, 0x06, 0x5f, 0x83, 0x3b, 0x43, 0x97, 0x89, 0x18, 0xc2, 0xfe, 0x8c, 0x09, 0x1b, 0x0f, 0x59, + 0x2a, 0x58, 0x49, 0x38, 0xac, 0xc8, 0x3f, 0xe7, 0x25, 0x01, 0x49, 0xb2, 0xd6, 0xf1, 0x8b, 0x82, + 0x63, 0x6e, 0x1f, 0xce, 0x6a, 0x7f, 0xc1, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0x36, 0x61, 0x9c, 0x49, + 0x3c, 0x9c, 0x5f, 0xbf, 0xc4, 0x0b, 0x2b, 0x45, 0x6f, 0x89, 0xde, 0xfd, 0x05, 0x98, 0xf0, 0xcc, + 0xc9, 0x3b, 0x52, 0xa7, 0xd2, 0x34, 0x5b, 0x31, 0x24, 0x7f, 0x99, 0x49, 0xe6, 0x15, 0xdf, 0x6b, + 0x69, 0x9d, 0x55, 0xb3, 0x85, 0x85, 0x3f, 0x0e, 0x69, 0x2e, 0x7c, 0xcf, 0x6a, 0xa3, 0xaa, 0xbd, + 0x63, 0xd5, 0x9f, 0x45, 0xb5, 0x18, 0xa2, 0xff, 0x52, 0x72, 0xd5, 0x56, 0x00, 0x8e, 0x25, 0x2f, + 0x83, 0xe6, 0xf5, 0x2a, 0x95, 0x7a, 0xb3, 0x65, 0xb7, 0xdd, 0x08, 0x89, 0x7f, 0xc5, 0x3d, 0xe5, + 0xe1, 0x96, 0x09, 0x2c, 0x5b, 0x82, 0x61, 0xf2, 0x35, 0x6e, 0x48, 0x7e, 0x85, 0x09, 0x1a, 0xf2, + 0x51, 0xac, 0x70, 0x54, 0xed, 0x66, 0xcb, 0x6c, 0xc7, 0xa9, 0x7f, 0x7f, 0xcd, 0x0b, 0x07, 0x83, + 0xb0, 0xc2, 0xe1, 0xee, 0xb7, 0x10, 0x5e, 0xed, 0x63, 0x48, 0xf8, 0x2a, 0x2f, 0x1c, 0x1c, 0xc3, + 0x44, 0xf0, 0x86, 0x21, 0x86, 0x88, 0xbf, 0xe1, 0x22, 0x38, 0x06, 0x8b, 0x78, 0xb7, 0xbf, 0xd0, + 0xb6, 0xd1, 0x4e, 0xdd, 0x71, 0xdb, 0xb4, 0x0f, 0x3e, 0x58, 0xd4, 0xd7, 0x5e, 0x13, 0x9b, 0x30, + 0x23, 0x00, 0xcd, 0x5e, 0x85, 0x11, 0xa9, 0xc5, 0xd0, 0xa3, 0xee, 0x2c, 0xa4, 0x7f, 0xf9, 0x75, + 0x56, 0x8c, 0xc4, 0x0e, 0x23, 0xbb, 0x82, 0xfd, 0x2e, 0xf6, 0x01, 0xd1, 0xc2, 0x3e, 0xf0, 0xba, + 0xe7, 0x7a, 0xa1, 0x0d, 0xc8, 0x5e, 0x86, 0x21, 0xa1, 0x07, 0x88, 0x16, 0xf5, 0x2b, 0x4c, 0xd4, + 0x60, 0xb0, 0x05, 0xc8, 0x2e, 0x41, 0x12, 0xaf, 0xe7, 0xd1, 0xf0, 0x5f, 0x65, 0x70, 0xc2, 0x9e, + 0x7d, 0x08, 0x52, 0x7c, 0x1d, 0x8f, 0x86, 0x7e, 0x90, 0x41, 0x3d, 0x08, 0x86, 0xf3, 0x35, 0x3c, + 0x1a, 0xfe, 0x6b, 0x1c, 0xce, 0x21, 0x18, 0x1e, 0xdf, 0x84, 0x2f, 0xfd, 0x46, 0x92, 0xd5, 0x61, + 0x6e, 0xbb, 0x4b, 0x70, 0x84, 0x2d, 0xde, 0xd1, 0xe8, 0x0f, 0xb3, 0x87, 0x73, 0x44, 0xf6, 0x3c, + 0xf4, 0xc6, 0x34, 0xf8, 0x6f, 0x32, 0x28, 0xe5, 0xcf, 0x16, 0x60, 0x20, 0xb0, 0x60, 0x47, 0xc3, + 0x7f, 0x8b, 0xc1, 0x83, 0x28, 0xac, 0x3a, 0x5b, 0xb0, 0xa3, 0x05, 0xfc, 0x36, 0x57, 0x9d, 0x21, + 0xb0, 0xd9, 0xf8, 0x5a, 0x1d, 0x8d, 0xfe, 0x1d, 0x6e, 0x75, 0x0e, 0xc9, 0x3e, 0x02, 0xfd, 0x5e, + 0xfd, 0x8d, 0xc6, 0xff, 0x2e, 0xc3, 0xfb, 0x18, 0x6c, 0x81, 0x40, 0xfd, 0x8f, 0x16, 0xf1, 0x7b, + 0xdc, 0x02, 0x01, 0x14, 0x4e, 0x23, 0x79, 0x4d, 0x8f, 0x96, 0xf4, 0x11, 0x9e, 0x46, 0xd2, 0x92, + 0x8e, 0xbd, 0x49, 0xca, 0x60, 0xb4, 0x88, 0xdf, 0xe7, 0xde, 0x24, 0xfc, 0x58, 0x0d, 0x79, 0x91, + 0x8c, 0x96, 0xf1, 0x87, 0x5c, 0x0d, 0x69, 0x8d, 0xcc, 0xae, 0x83, 0xde, 0xb9, 0x40, 0x46, 0xcb, + 0xfb, 0x28, 0x93, 0x37, 0xda, 0xb1, 0x3e, 0x66, 0x1f, 0x83, 0xf1, 0xf0, 0xc5, 0x31, 0x5a, 0xea, + 0xc7, 0x5e, 0x97, 0x5e, 0x67, 0x82, 0x6b, 0x63, 0x76, 0xd3, 0xaf, 0xb2, 0xc1, 0x85, 0x31, 0x5a, + 0xec, 0xc7, 0x5f, 0x17, 0x0b, 0x6d, 0x70, 0x5d, 0xcc, 0xe6, 0x00, 0xfc, 0x35, 0x29, 0x5a, 0xd6, + 0x27, 0x98, 0xac, 0x00, 0x08, 0xa7, 0x06, 0x5b, 0x92, 0xa2, 0xf1, 0x9f, 0xe4, 0xa9, 0xc1, 0x10, + 0x38, 0x35, 0xf8, 0x6a, 0x14, 0x8d, 0x7e, 0x9e, 0xa7, 0x06, 0x87, 0x64, 0x2f, 0x41, 0xca, 0xda, + 0x6b, 0x34, 0x70, 0x6c, 0xe9, 0x07, 0x5f, 0x23, 0x4a, 0xff, 0xc7, 0x1b, 0x0c, 0xcc, 0x01, 0xd9, + 0x25, 0xe8, 0x45, 0xcd, 0xeb, 0xa8, 0x16, 0x85, 0xfc, 0xcf, 0x37, 0x78, 0x3d, 0xc1, 0xdc, 0xd9, + 0x47, 0x00, 0xe8, 0xcb, 0x34, 0x39, 0x25, 0x8a, 0xc0, 0xfe, 0xd7, 0x1b, 0xec, 0x86, 0x82, 0x0f, + 0xf1, 0x05, 0xd0, 0xfb, 0x0e, 0x07, 0x0b, 0x78, 0x4d, 0x14, 0x40, 0x5e, 0xc0, 0x2f, 0xc2, 0x91, + 0x27, 0x1c, 0xdb, 0x72, 0xcd, 0x9d, 0x28, 0xf4, 0x7f, 0x33, 0x34, 0xe7, 0xc7, 0x06, 0x6b, 0xda, + 0x6d, 0xe4, 0x9a, 0x3b, 0x4e, 0x14, 0xf6, 0x7f, 0x18, 0xd6, 0x03, 0x60, 0x70, 0xd5, 0x74, 0xdc, + 0x38, 0xf3, 0xfe, 0x5f, 0x0e, 0xe6, 0x00, 0xac, 0x34, 0xfe, 0xfc, 0x24, 0xda, 0x8f, 0xc2, 0x7e, + 0x9f, 0x2b, 0xcd, 0xf8, 0xb3, 0x0f, 0x41, 0x3f, 0xfe, 0x48, 0x6f, 0xed, 0x44, 0x80, 0x7f, 0xc0, + 0xc0, 0x3e, 0x02, 0x3f, 0xd9, 0x71, 0x6b, 0x6e, 0x3d, 0xda, 0xd8, 0xff, 0xc7, 0x3c, 0xcd, 0xf9, + 0xb3, 0x39, 0x18, 0x70, 0xdc, 0x5a, 0x6d, 0x8f, 0x75, 0x34, 0x11, 0xf0, 0x1f, 0xbe, 0xe1, 0xbd, + 0xe4, 0x7a, 0x98, 0xfc, 0x89, 0xf0, 0xcd, 0x3a, 0xb8, 0x62, 0x5f, 0xb1, 0xe9, 0x36, 0x1d, 0xfc, + 0x53, 0x03, 0xa6, 0xab, 0x76, 0xf3, 0xba, 0xed, 0x9c, 0x0e, 0x94, 0xa1, 0xd3, 0xee, 0x2e, 0xc2, + 0x2b, 0x08, 0xdb, 0x68, 0x4b, 0xe2, 0xcf, 0x13, 0x87, 0xdb, 0x9d, 0x23, 0x07, 0xaf, 0xe5, 0x3a, + 0x56, 0xb0, 0x4c, 0xf6, 0xbe, 0xf5, 0xe3, 0xd0, 0x47, 0x54, 0x3e, 0x43, 0xce, 0x97, 0x94, 0x7c, + 0xf2, 0xc6, 0x2b, 0x53, 0x3d, 0x06, 0x1b, 0xf3, 0xa8, 0x0b, 0x64, 0x73, 0x32, 0x21, 0x50, 0x17, + 0x3c, 0xea, 0x59, 0xba, 0x3f, 0x29, 0x50, 0xcf, 0x7a, 0xd4, 0x45, 0xb2, 0x53, 0xa9, 0x0a, 0xd4, + 0x45, 0x8f, 0xba, 0x44, 0x76, 0xe3, 0x87, 0x04, 0xea, 0x92, 0x47, 0x3d, 0x47, 0xf6, 0xe0, 0x93, + 0x02, 0xf5, 0x9c, 0x47, 0x3d, 0x4f, 0xb6, 0xdf, 0x47, 0x05, 0xea, 0x79, 0x8f, 0x7a, 0x81, 0x6c, + 0xbb, 0xeb, 0x02, 0xf5, 0x82, 0x47, 0xbd, 0x48, 0xee, 0x92, 0x1c, 0x11, 0xa8, 0x17, 0xf5, 0x49, + 0x38, 0x42, 0x67, 0x3e, 0x4f, 0xce, 0x68, 0x47, 0x18, 0x99, 0x0f, 0xfa, 0xf4, 0x33, 0xe4, 0xde, + 0x48, 0x9f, 0x48, 0x3f, 0xe3, 0xd3, 0x17, 0xc8, 0x0d, 0x6a, 0x4d, 0xa4, 0x2f, 0xf8, 0xf4, 0xb3, + 0xe9, 0x21, 0x72, 0x77, 0x46, 0xa0, 0x9f, 0xf5, 0xe9, 0x8b, 0xe9, 0x61, 0x1c, 0xb5, 0x22, 0x7d, + 0xd1, 0xa7, 0x2f, 0xa5, 0x47, 0xa6, 0x95, 0x99, 0x41, 0x91, 0xbe, 0x94, 0x79, 0x3f, 0x71, 0xaf, + 0xe5, 0xbb, 0x77, 0x5c, 0x74, 0xaf, 0xe7, 0xd8, 0x71, 0xd1, 0xb1, 0x9e, 0x4b, 0xc7, 0x45, 0x97, + 0x7a, 0xce, 0x1c, 0x17, 0x9d, 0xe9, 0xb9, 0x71, 0x5c, 0x74, 0xa3, 0xe7, 0xc0, 0x71, 0xd1, 0x81, + 0x9e, 0xeb, 0xc6, 0x45, 0xd7, 0x79, 0x4e, 0x1b, 0x17, 0x9d, 0xe6, 0xb9, 0x6b, 0x5c, 0x74, 0x97, + 0xe7, 0xa8, 0xb4, 0xe4, 0x28, 0xdf, 0x45, 0x69, 0xc9, 0x45, 0xbe, 0x73, 0xd2, 0x92, 0x73, 0x7c, + 0xb7, 0xa4, 0x25, 0xb7, 0xf8, 0x0e, 0x49, 0x4b, 0x0e, 0xf1, 0x5d, 0x91, 0x96, 0x5c, 0xe1, 0x3b, + 0x81, 0xe5, 0x98, 0x81, 0x5a, 0x21, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, + 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, 0x63, 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x98, 0x63, + 0xea, 0x81, 0x39, 0xa6, 0x1e, 0x9c, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x11, 0x39, 0xa6, 0x46, 0xe4, + 0x98, 0x1a, 0x91, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x5d, 0x73, 0xcc, 0x77, 0xef, 0xb8, 0xe8, 0xde, + 0xd0, 0x1c, 0x53, 0xbb, 0xe4, 0x98, 0xda, 0x25, 0xc7, 0xd4, 0x2e, 0x39, 0xa6, 0x76, 0xc9, 0x31, + 0xb5, 0x4b, 0x8e, 0xa9, 0x5d, 0x72, 0x4c, 0xed, 0x92, 0x63, 0x6a, 0xb7, 0x1c, 0x53, 0xbb, 0xe6, + 0x98, 0xda, 0x35, 0xc7, 0xd4, 0xae, 0x39, 0xa6, 0x76, 0xcd, 0x31, 0xb5, 0x6b, 0x8e, 0xa9, 0xc1, + 0x1c, 0xfb, 0x5b, 0x15, 0x74, 0x9a, 0x63, 0xeb, 0xe4, 0x96, 0x0f, 0x73, 0xc5, 0xa4, 0x94, 0x69, + 0x7d, 0xd8, 0x75, 0x9a, 0xef, 0x92, 0x49, 0x29, 0xd7, 0x44, 0xfa, 0x82, 0x47, 0xe7, 0xd9, 0x26, + 0xd2, 0xcf, 0x7a, 0x74, 0x9e, 0x6f, 0x22, 0x7d, 0xd1, 0xa3, 0xf3, 0x8c, 0x13, 0xe9, 0x4b, 0x1e, + 0x9d, 0xe7, 0x9c, 0x48, 0x3f, 0xe7, 0xd1, 0x79, 0xd6, 0x89, 0xf4, 0xf3, 0x1e, 0x9d, 0xe7, 0x9d, + 0x48, 0xbf, 0xe0, 0xd1, 0x79, 0xe6, 0x89, 0xf4, 0x8b, 0xfa, 0xb4, 0x9c, 0x7b, 0x9c, 0xc1, 0x73, + 0xed, 0xb4, 0x9c, 0x7d, 0x12, 0xc7, 0x19, 0x9f, 0x83, 0xe7, 0x9f, 0xc4, 0xb1, 0xe0, 0x73, 0xf0, + 0x0c, 0x94, 0x38, 0xce, 0x66, 0x3e, 0x44, 0xdc, 0x67, 0xc9, 0xee, 0x9b, 0x90, 0xdc, 0x97, 0x08, + 0xb8, 0x6e, 0x42, 0x72, 0x5d, 0x22, 0xe0, 0xb6, 0x09, 0xc9, 0x6d, 0x89, 0x80, 0xcb, 0x26, 0x24, + 0x97, 0x25, 0x02, 0xee, 0x9a, 0x90, 0xdc, 0x95, 0x08, 0xb8, 0x6a, 0x42, 0x72, 0x55, 0x22, 0xe0, + 0xa6, 0x09, 0xc9, 0x4d, 0x89, 0x80, 0x8b, 0x26, 0x24, 0x17, 0x25, 0x02, 0xee, 0x99, 0x90, 0xdc, + 0x93, 0x08, 0xb8, 0xe6, 0xb8, 0xec, 0x9a, 0x44, 0xd0, 0x2d, 0xc7, 0x65, 0xb7, 0x24, 0x82, 0x2e, + 0x39, 0x2e, 0xbb, 0x24, 0x11, 0x74, 0xc7, 0x71, 0xd9, 0x1d, 0x89, 0xa0, 0x2b, 0x7e, 0x92, 0xe0, + 0x1d, 0xe1, 0x86, 0xdb, 0xde, 0xab, 0xba, 0xb7, 0xd5, 0x11, 0xce, 0x0b, 0xed, 0xc3, 0xc0, 0x82, + 0x3e, 0x47, 0x1a, 0xd6, 0x60, 0xc7, 0x29, 0xad, 0x60, 0xf3, 0x42, 0x63, 0x11, 0x40, 0x58, 0xe1, + 0x88, 0xc5, 0xdb, 0xea, 0x0d, 0xe7, 0x85, 0x36, 0x23, 0x5a, 0xbf, 0x0b, 0x6f, 0x7b, 0xc7, 0xf6, + 0x52, 0x82, 0x77, 0x6c, 0xcc, 0xfc, 0x87, 0xed, 0xd8, 0x66, 0xa3, 0x4d, 0xee, 0x19, 0x7b, 0x36, + 0xda, 0xd8, 0x1d, 0xab, 0x4e, 0xdc, 0x0e, 0x6e, 0x36, 0xda, 0xb4, 0x9e, 0x51, 0xdf, 0xda, 0x7e, + 0x8b, 0x45, 0xb0, 0x81, 0x5a, 0x21, 0x11, 0x7c, 0xd8, 0x7e, 0x6b, 0x5e, 0x28, 0x25, 0x87, 0x8d, + 0x60, 0xf5, 0xd0, 0x11, 0x7c, 0xd8, 0xce, 0x6b, 0x5e, 0x28, 0x2f, 0x87, 0x8e, 0xe0, 0xb7, 0xa1, + 0x1f, 0x62, 0x11, 0xec, 0x9b, 0xff, 0xb0, 0xfd, 0xd0, 0x6c, 0xb4, 0xc9, 0x43, 0x23, 0x58, 0x3d, + 0x44, 0x04, 0xc7, 0xe9, 0x8f, 0x66, 0xa3, 0x4d, 0x1b, 0x1e, 0xc1, 0xb7, 0xdd, 0xcd, 0x7c, 0x4a, + 0x81, 0xd1, 0x72, 0xbd, 0x56, 0x6a, 0x5e, 0x47, 0xb5, 0x1a, 0xaa, 0x31, 0x3b, 0xce, 0x0b, 0x95, + 0xa0, 0x8b, 0xab, 0x5f, 0x7e, 0x65, 0xca, 0xb7, 0xf0, 0x12, 0xa4, 0xa8, 0x4d, 0xe7, 0xe7, 0xd3, + 0x37, 0x94, 0x88, 0x0a, 0xe7, 0xb1, 0xea, 0x27, 0x38, 0xec, 0xcc, 0x7c, 0xfa, 0x5f, 0x94, 0x40, + 0x95, 0xf3, 0x86, 0x33, 0x1f, 0x21, 0x1a, 0x5a, 0xb7, 0xad, 0xe1, 0xe9, 0x58, 0x1a, 0x06, 0x74, + 0xbb, 0xab, 0x43, 0xb7, 0x80, 0x56, 0x7b, 0x30, 0x52, 0xae, 0xd7, 0xca, 0xe4, 0x6f, 0x77, 0xe3, + 0xa8, 0x44, 0x79, 0xa4, 0x7a, 0x30, 0x2f, 0x84, 0x65, 0x10, 0xe1, 0x85, 0xb4, 0x58, 0x23, 0x32, + 0x75, 0xfc, 0x58, 0x4b, 0x78, 0xec, 0x6c, 0xb7, 0xc7, 0xfa, 0x95, 0xdd, 0x7b, 0xe0, 0x6c, 0xb7, + 0x07, 0xfa, 0x39, 0xe4, 0x3d, 0xea, 0x19, 0xbe, 0x38, 0xd3, 0xeb, 0x36, 0xfa, 0x71, 0x48, 0x2c, + 0xd3, 0xab, 0xc0, 0x83, 0xf9, 0x41, 0xac, 0xd4, 0xb7, 0x5f, 0x99, 0x4a, 0x6e, 0xed, 0xd5, 0x6b, + 0x46, 0x62, 0xb9, 0xa6, 0x5f, 0x85, 0xde, 0xf7, 0xb0, 0xbf, 0x80, 0xc3, 0x0c, 0x8b, 0x8c, 0xe1, + 0x81, 0xae, 0x7b, 0x44, 0xf8, 0xc1, 0xa7, 0xe9, 0x46, 0xe2, 0xdc, 0x56, 0xdd, 0x72, 0xcf, 0x2c, + 0x5c, 0x30, 0xa8, 0x88, 0xcc, 0x2f, 0x02, 0xd0, 0x67, 0x16, 0x4d, 0x67, 0x57, 0x2f, 0x73, 0xc9, + 0xf4, 0xd1, 0x17, 0xbe, 0xfd, 0xca, 0xd4, 0x62, 0x1c, 0xa9, 0x0f, 0xd6, 0x4c, 0x67, 0xf7, 0x41, + 0x77, 0xbf, 0x85, 0xe6, 0xf2, 0xfb, 0x2e, 0x72, 0xb8, 0xf4, 0x16, 0x5f, 0xf5, 0xd8, 0xbc, 0xd2, + 0x81, 0x79, 0xa5, 0x84, 0x39, 0x5d, 0x16, 0xe7, 0x34, 0xff, 0x66, 0xe7, 0xf3, 0x0c, 0x5f, 0x24, + 0x24, 0x4b, 0xaa, 0x51, 0x96, 0x54, 0x6f, 0xd7, 0x92, 0x2d, 0x5e, 0x1f, 0xa5, 0xb9, 0xaa, 0x07, + 0xcd, 0x55, 0xbd, 0x9d, 0xb9, 0xfe, 0x88, 0x66, 0xab, 0x97, 0x4f, 0x5b, 0x16, 0xbd, 0x86, 0xf8, + 0xf3, 0xb5, 0x17, 0xf4, 0x96, 0x76, 0x01, 0xd9, 0xe4, 0x8d, 0x17, 0xa6, 0x94, 0xcc, 0xa7, 0x12, + 0x7c, 0xe6, 0x34, 0x91, 0xde, 0xdc, 0xcc, 0x7f, 0x5e, 0x7a, 0xaa, 0xb7, 0xc3, 0x42, 0xcf, 0x2b, + 0x30, 0xde, 0x51, 0xc9, 0xa9, 0x99, 0xde, 0xda, 0x72, 0x6e, 0x1d, 0xb6, 0x9c, 0x33, 0x05, 0xbf, + 0xa2, 0xc0, 0x51, 0xa9, 0xbc, 0x52, 0xf5, 0x4e, 0x4b, 0xea, 0x1d, 0xeb, 0x7c, 0x12, 0x61, 0x0c, + 0x68, 0x17, 0x74, 0xaf, 0x04, 0x08, 0x48, 0xf6, 0xfc, 0xbe, 0x28, 0xf9, 0xfd, 0xb8, 0x07, 0x08, + 0x31, 0x17, 0x8f, 0x00, 0xa6, 0xb6, 0x0d, 0xc9, 0xcd, 0x36, 0x42, 0xfa, 0x24, 0x24, 0xd6, 0xda, + 0x4c, 0xc3, 0x61, 0x8a, 0x5f, 0x6b, 0xe7, 0xdb, 0xa6, 0x55, 0xdd, 0x35, 0x12, 0x6b, 0x6d, 0xfd, + 0x04, 0xa8, 0x39, 0xf6, 0x1b, 0x03, 0x03, 0x0b, 0x23, 0x94, 0x21, 0x67, 0xd5, 0x18, 0x07, 0xa6, + 0xe9, 0x93, 0x90, 0x5c, 0x41, 0xe6, 0x36, 0x53, 0x02, 0x28, 0x0f, 0x1e, 0x31, 0xc8, 0x38, 0x7b, + 0xe0, 0xe3, 0x90, 0xe2, 0x82, 0xf5, 0x93, 0x18, 0xb1, 0xed, 0xb2, 0xc7, 0x32, 0x04, 0x56, 0x87, + 0xad, 0x5c, 0x84, 0xaa, 0x9f, 0x82, 0x5e, 0xa3, 0xbe, 0xb3, 0xeb, 0xb2, 0x87, 0x77, 0xb2, 0x51, + 0x72, 0xe6, 0x1a, 0xf4, 0x7b, 0x1a, 0xbd, 0xc5, 0xa2, 0x8b, 0x74, 0x6a, 0xfa, 0x44, 0x70, 0x3d, + 0xe1, 0xfb, 0x96, 0x74, 0x48, 0x9f, 0x86, 0xd4, 0x86, 0xdb, 0xf6, 0x8b, 0x3e, 0xef, 0x48, 0xbd, + 0xd1, 0xcc, 0xfb, 0x15, 0x48, 0x15, 0x11, 0x6a, 0x11, 0x83, 0xdf, 0x0b, 0xc9, 0xa2, 0xfd, 0xb4, + 0xc5, 0x14, 0x1c, 0x65, 0x16, 0xc5, 0x64, 0x66, 0x53, 0x42, 0xd6, 0xef, 0x0d, 0xda, 0x7d, 0xcc, + 0xb3, 0x7b, 0x80, 0x8f, 0xd8, 0x3e, 0x23, 0xd8, 0x9e, 0x39, 0x10, 0x33, 0x75, 0xd8, 0xff, 0x3c, + 0x0c, 0x04, 0x9e, 0xa2, 0xcf, 0x30, 0x35, 0x12, 0x32, 0x30, 0x68, 0x2b, 0xcc, 0x91, 0x41, 0x30, + 0x24, 0x3c, 0x18, 0x43, 0x03, 0x26, 0xee, 0x02, 0x25, 0x66, 0x9e, 0x15, 0xcd, 0x1c, 0xce, 0xca, + 0x4c, 0x3d, 0x4f, 0x6d, 0x44, 0xcc, 0x7d, 0x92, 0x06, 0x67, 0x77, 0x27, 0xe2, 0xcf, 0x99, 0x5e, + 0x50, 0xcb, 0xf5, 0x46, 0xe6, 0x21, 0x00, 0x9a, 0xf2, 0x25, 0x6b, 0xaf, 0x29, 0x65, 0xdd, 0x30, + 0x37, 0xf0, 0xe6, 0x2e, 0xda, 0x44, 0x0e, 0x61, 0x11, 0xfb, 0x29, 0x5c, 0x60, 0x80, 0xa6, 0x18, + 0xc1, 0xdf, 0x1f, 0x89, 0x0f, 0xed, 0xc4, 0x30, 0x6b, 0x9a, 0xb2, 0x5e, 0x43, 0x6e, 0xce, 0xb2, + 0xdd, 0x5d, 0xd4, 0x96, 0x10, 0x0b, 0xfa, 0x59, 0x21, 0x61, 0x87, 0x17, 0xee, 0xf2, 0x10, 0x5d, + 0x41, 0x67, 0x33, 0x5f, 0x22, 0x0a, 0xe2, 0x56, 0xa0, 0x63, 0x82, 0x6a, 0x8c, 0x09, 0xea, 0xe7, + 0x84, 0xfe, 0xed, 0x00, 0x35, 0xa5, 0x57, 0xcb, 0x8b, 0xc2, 0x7b, 0xce, 0xc1, 0xca, 0x8a, 0xef, + 0x98, 0xdc, 0xa6, 0x5c, 0xe5, 0xfb, 0x23, 0x55, 0xee, 0xd2, 0xdd, 0x1e, 0xd6, 0xa6, 0x6a, 0x5c, + 0x9b, 0x7e, 0xdd, 0xeb, 0x38, 0xe8, 0xaf, 0x35, 0x90, 0x1f, 0x07, 0xd1, 0x1f, 0x88, 0xf4, 0x7d, + 0x56, 0x29, 0x78, 0xaa, 0x2e, 0xc6, 0x75, 0x7f, 0x36, 0x91, 0xcf, 0x7b, 0xea, 0x9e, 0x3f, 0x44, + 0x08, 0x64, 0x13, 0x85, 0x82, 0x57, 0xb6, 0x53, 0x1f, 0x7a, 0x61, 0x4a, 0x79, 0xf1, 0x85, 0xa9, + 0x9e, 0xcc, 0xe7, 0x15, 0x18, 0x65, 0x9c, 0x81, 0xc0, 0x7d, 0x50, 0x52, 0xfe, 0x0e, 0x5e, 0x33, + 0xc2, 0x2c, 0xf0, 0x53, 0x0b, 0xde, 0x6f, 0x2a, 0x90, 0xee, 0xd0, 0x95, 0xdb, 0x7b, 0x3e, 0x96, + 0xca, 0x59, 0xa5, 0xf4, 0xb3, 0xb7, 0xf9, 0x35, 0xe8, 0xdd, 0xac, 0x37, 0x51, 0x1b, 0xaf, 0x04, + 0xf8, 0x03, 0x55, 0x99, 0x1f, 0xe6, 0xd0, 0x21, 0x4e, 0xa3, 0xca, 0x09, 0xb4, 0x05, 0x3d, 0x0d, + 0xc9, 0xa2, 0xe9, 0x9a, 0x44, 0x83, 0x41, 0xaf, 0xbe, 0x9a, 0xae, 0x99, 0x39, 0x0b, 0x83, 0xab, + 0xfb, 0xe4, 0xae, 0x4c, 0x8d, 0xdc, 0x03, 0x11, 0xbb, 0x3f, 0xde, 0xaf, 0x9e, 0x99, 0xed, 0x4d, + 0xd5, 0xb4, 0x1b, 0x4a, 0x36, 0x49, 0xf4, 0x79, 0x0a, 0x86, 0xd7, 0xb0, 0xda, 0x04, 0x27, 0xc0, + 0xe8, 0xd3, 0x55, 0x6f, 0xf2, 0x52, 0x53, 0xa6, 0xfa, 0x4d, 0xd9, 0x34, 0x28, 0xab, 0x62, 0xeb, + 0x14, 0xd4, 0xc3, 0x50, 0x56, 0x67, 0x93, 0xa9, 0x61, 0x6d, 0x74, 0x36, 0x99, 0x02, 0x6d, 0x88, + 0x3d, 0xf7, 0x1f, 0x55, 0xd0, 0x68, 0xab, 0x53, 0x44, 0xdb, 0x75, 0xab, 0xee, 0x76, 0xf6, 0xab, + 0x9e, 0xc6, 0xfa, 0x23, 0xd0, 0x8f, 0x4d, 0x7a, 0x99, 0xfd, 0xc6, 0x16, 0x36, 0xfd, 0x09, 0xd6, + 0xa2, 0x48, 0x22, 0xd8, 0x00, 0x09, 0x1d, 0x1f, 0xa3, 0x5f, 0x06, 0xb5, 0x5c, 0x5e, 0x65, 0x8b, + 0xdb, 0xe2, 0x81, 0x50, 0x76, 0xd5, 0x86, 0x7d, 0x63, 0x63, 0xce, 0x8e, 0x81, 0x05, 0xe8, 0x8b, + 0x90, 0x28, 0xaf, 0xb2, 0x86, 0xf7, 0x64, 0x1c, 0x31, 0x46, 0xa2, 0xbc, 0x3a, 0xf1, 0x77, 0x0a, + 0x0c, 0x09, 0xa3, 0x7a, 0x06, 0x06, 0xe9, 0x40, 0x60, 0xba, 0x7d, 0x86, 0x30, 0xc6, 0x75, 0x4e, + 0xdc, 0xa6, 0xce, 0x13, 0x39, 0x18, 0x91, 0xc6, 0xf5, 0x39, 0xd0, 0x83, 0x43, 0x4c, 0x09, 0xfa, + 0xfb, 0x44, 0x21, 0x94, 0xcc, 0xdd, 0x00, 0xbe, 0x5d, 0xbd, 0x9f, 0xd5, 0x29, 0x97, 0x36, 0x36, + 0x4b, 0x45, 0x4d, 0xc9, 0x7c, 0x55, 0x81, 0x01, 0xd6, 0xb6, 0x56, 0xed, 0x16, 0xd2, 0xf3, 0xa0, + 0xe4, 0x58, 0x3c, 0xbc, 0x39, 0xbd, 0x95, 0x9c, 0x7e, 0x1a, 0x94, 0x7c, 0x7c, 0x57, 0x2b, 0x79, + 0x7d, 0x01, 0x94, 0x02, 0x73, 0x70, 0x3c, 0xcf, 0x28, 0x85, 0xcc, 0x0f, 0x54, 0x18, 0x0b, 0xb6, + 0xd1, 0xbc, 0x9e, 0x9c, 0x10, 0xdf, 0x9b, 0xb2, 0xfd, 0x67, 0x16, 0xce, 0x2e, 0xce, 0xe1, 0x7f, + 0xbc, 0x90, 0x3c, 0x21, 0xbe, 0x42, 0x75, 0xb2, 0x74, 0x5c, 0x13, 0xc9, 0x26, 0x03, 0xd4, 0x8e, + 0x6b, 0x22, 0x02, 0xb5, 0xe3, 0x9a, 0x88, 0x40, 0xed, 0xb8, 0x26, 0x22, 0x50, 0x3b, 0x8e, 0x02, + 0x04, 0x6a, 0xc7, 0x35, 0x11, 0x81, 0xda, 0x71, 0x4d, 0x44, 0xa0, 0x76, 0x5e, 0x13, 0x61, 0xe4, + 0xae, 0xd7, 0x44, 0x44, 0x7a, 0xe7, 0x35, 0x11, 0x91, 0xde, 0x79, 0x4d, 0x24, 0x9b, 0x74, 0xdb, + 0x7b, 0xa8, 0xfb, 0xa1, 0x83, 0x88, 0x3f, 0xe8, 0x1d, 0xd0, 0x2f, 0xc0, 0x6b, 0x30, 0x42, 0xf7, + 0x23, 0x0a, 0xb6, 0xe5, 0x9a, 0x75, 0x0b, 0xb5, 0xf5, 0x77, 0xc2, 0x20, 0x1d, 0xa2, 0x6f, 0x39, + 0x61, 0x6f, 0x81, 0x94, 0xce, 0xca, 0xad, 0xc0, 0x9d, 0xf9, 0x49, 0x12, 0xc6, 0xe9, 0x40, 0xd9, + 0x6c, 0x22, 0xe1, 0x92, 0xd1, 0x29, 0xe9, 0x48, 0x69, 0x18, 0xc3, 0x6f, 0xbd, 0x32, 0x45, 0x47, + 0x73, 0x5e, 0x30, 0x9d, 0x92, 0x0e, 0x97, 0x44, 0x3e, 0x7f, 0xfd, 0x39, 0x25, 0x5d, 0x3c, 0x12, + 0xf9, 0xbc, 0xe5, 0xc6, 0xe3, 0xe3, 0x57, 0x90, 0x44, 0xbe, 0xa2, 0x17, 0x65, 0xa7, 0xa4, 0xcb, + 0x48, 0x22, 0x5f, 0xc9, 0x8b, 0xb7, 0x53, 0xd2, 0xd1, 0x93, 0xc8, 0x77, 0xd9, 0x8b, 0xbc, 0x53, + 0xd2, 0x21, 0x94, 0xc8, 0x77, 0xc5, 0x8b, 0xc1, 0x53, 0xd2, 0x55, 0x25, 0x91, 0xef, 0x51, 0x2f, + 0x1a, 0x4f, 0x49, 0x97, 0x96, 0x44, 0xbe, 0x65, 0x2f, 0x2e, 0x67, 0xe4, 0xeb, 0x4b, 0x22, 0xe3, + 0x55, 0x3f, 0x42, 0x67, 0xe4, 0x8b, 0x4c, 0x22, 0xe7, 0xbb, 0xfc, 0x58, 0x9d, 0x91, 0xaf, 0x34, + 0x89, 0x9c, 0x2b, 0x7e, 0xd4, 0xce, 0xc8, 0x47, 0x65, 0x22, 0xe7, 0xaa, 0x1f, 0xbf, 0x33, 0xf2, + 0xa1, 0x99, 0xc8, 0x59, 0xf6, 0x23, 0x79, 0x46, 0x3e, 0x3e, 0x13, 0x39, 0xd7, 0xfc, 0x3d, 0xf4, + 0x6f, 0x48, 0xe1, 0x17, 0xb8, 0x04, 0x95, 0x91, 0xc2, 0x0f, 0x42, 0x42, 0x2f, 0x23, 0x85, 0x1e, + 0x84, 0x84, 0x5d, 0x46, 0x0a, 0x3b, 0x08, 0x09, 0xb9, 0x8c, 0x14, 0x72, 0x10, 0x12, 0x6e, 0x19, + 0x29, 0xdc, 0x20, 0x24, 0xd4, 0x32, 0x52, 0xa8, 0x41, 0x48, 0x98, 0x65, 0xa4, 0x30, 0x83, 0x90, + 0x10, 0xcb, 0x48, 0x21, 0x06, 0x21, 0xe1, 0x95, 0x91, 0xc2, 0x0b, 0x42, 0x42, 0xeb, 0xa4, 0x1c, + 0x5a, 0x10, 0x16, 0x56, 0x27, 0xe5, 0xb0, 0x82, 0xb0, 0x90, 0xba, 0x47, 0x0e, 0xa9, 0xfe, 0x5b, + 0xaf, 0x4c, 0xf5, 0xe2, 0xa1, 0x40, 0x34, 0x9d, 0x94, 0xa3, 0x09, 0xc2, 0x22, 0xe9, 0xa4, 0x1c, + 0x49, 0x10, 0x16, 0x45, 0x27, 0xe5, 0x28, 0x82, 0xb0, 0x08, 0x7a, 0x49, 0x8e, 0x20, 0xff, 0x8a, + 0x4f, 0x46, 0x3a, 0x51, 0x8c, 0x8a, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, + 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, + 0x89, 0x20, 0x35, 0x56, 0x04, 0xa9, 0xdd, 0x22, 0xe8, 0xa4, 0x7c, 0xe1, 0x01, 0xc2, 0x0a, 0xd2, + 0x49, 0xf9, 0xe4, 0x33, 0x3a, 0x84, 0xd4, 0x58, 0x21, 0xa4, 0x76, 0x0b, 0xa1, 0x6f, 0xa8, 0x30, + 0x26, 0x84, 0x10, 0x3b, 0x1e, 0x7a, 0xab, 0x2a, 0xd0, 0xb9, 0x18, 0xf7, 0x2b, 0xc2, 0x62, 0xea, + 0x5c, 0x8c, 0x33, 0xea, 0x83, 0xe2, 0xac, 0xb3, 0x0a, 0x95, 0x62, 0x54, 0xa1, 0xcb, 0x5e, 0x0c, + 0x9d, 0x8b, 0x71, 0xef, 0xa2, 0x33, 0xf6, 0x2e, 0x1c, 0x54, 0x04, 0x1e, 0x8d, 0x55, 0x04, 0x96, + 0x63, 0x15, 0x81, 0xab, 0xbe, 0x07, 0x3f, 0x98, 0x80, 0xa3, 0xbe, 0x07, 0xe9, 0x27, 0xf2, 0x5b, + 0x48, 0x99, 0xc0, 0x09, 0x95, 0xce, 0x4f, 0x6d, 0x02, 0x6e, 0x4c, 0x2c, 0xd7, 0xf4, 0x75, 0xf1, + 0xac, 0x2a, 0x7b, 0xd8, 0xf3, 0x9b, 0x80, 0xc7, 0xd9, 0x5e, 0xe8, 0x49, 0x50, 0x97, 0x6b, 0x0e, + 0xa9, 0x16, 0x61, 0x8f, 0x2d, 0x18, 0x98, 0xac, 0x1b, 0xd0, 0x47, 0xd8, 0x1d, 0xe2, 0xde, 0xdb, + 0x79, 0x70, 0xd1, 0x60, 0x92, 0x32, 0x2f, 0x29, 0x30, 0x2d, 0x84, 0xf2, 0x5b, 0x73, 0x62, 0x70, + 0x29, 0xd6, 0x89, 0x81, 0x90, 0x20, 0xfe, 0xe9, 0xc1, 0x7d, 0x9d, 0x07, 0xd5, 0xc1, 0x2c, 0x91, + 0x4f, 0x12, 0x7e, 0x09, 0x86, 0xfd, 0x19, 0x90, 0x57, 0xb6, 0xa5, 0xe8, 0xcd, 0xcc, 0xb0, 0xd4, + 0x5c, 0x92, 0x36, 0xd1, 0x0e, 0x84, 0x79, 0xd9, 0x9a, 0xc9, 0xc2, 0x48, 0x59, 0xfc, 0xa3, 0x9d, + 0xa8, 0xbd, 0x88, 0x14, 0x6e, 0xcd, 0x6f, 0x7c, 0x7a, 0xaa, 0x27, 0xf3, 0x00, 0x0c, 0x06, 0xff, + 0x2e, 0x47, 0x02, 0xf6, 0x73, 0x60, 0x36, 0xf9, 0x32, 0xe6, 0xfe, 0x03, 0x05, 0xee, 0x08, 0xb2, + 0x3f, 0x56, 0x77, 0x77, 0x97, 0x2d, 0xdc, 0xd3, 0x3f, 0x04, 0x29, 0xc4, 0x1c, 0xc7, 0x7e, 0xd6, + 0x84, 0xbd, 0x46, 0x86, 0xb2, 0xcf, 0x91, 0x7f, 0x0d, 0x0f, 0x22, 0x6d, 0x82, 0xf0, 0xc7, 0x2e, + 0x4c, 0xdc, 0x0b, 0xbd, 0x54, 0xbe, 0xa8, 0xd7, 0x90, 0xa4, 0xd7, 0x67, 0x43, 0xf4, 0x22, 0x71, + 0xa4, 0x5f, 0x15, 0xf4, 0x0a, 0xbc, 0xad, 0x86, 0xb2, 0xcf, 0xf1, 0xe0, 0xcb, 0xa7, 0x70, 0xff, + 0x47, 0x22, 0x2a, 0x5a, 0xc9, 0x19, 0x48, 0x95, 0x64, 0x9e, 0x70, 0x3d, 0x8b, 0x90, 0x2c, 0xdb, + 0x35, 0xf2, 0x83, 0x2b, 0xe4, 0x87, 0x71, 0x99, 0x91, 0xd9, 0xaf, 0xe4, 0x9e, 0x82, 0x54, 0x61, + 0xb7, 0xde, 0xa8, 0xb5, 0x91, 0xc5, 0x8e, 0xec, 0xd9, 0x0e, 0x3a, 0xc6, 0x18, 0x1e, 0x2d, 0x53, + 0x80, 0xd1, 0xb2, 0x6d, 0xe5, 0xf7, 0xdd, 0x60, 0xdd, 0x98, 0x93, 0x52, 0x84, 0x1d, 0xf9, 0x90, + 0xbf, 0xf4, 0xc0, 0x0c, 0xf9, 0xde, 0x6f, 0xbf, 0x32, 0xa5, 0x6c, 0x7a, 0xdb, 0xe7, 0xab, 0x70, + 0x8c, 0xa5, 0x4f, 0x87, 0xa8, 0x85, 0x28, 0x51, 0xfd, 0xec, 0x98, 0x3a, 0x20, 0x6e, 0x19, 0x8b, + 0xb3, 0x42, 0xc5, 0xbd, 0x39, 0xcd, 0x70, 0x53, 0x74, 0xa0, 0x66, 0xea, 0xa1, 0x34, 0x0b, 0x15, + 0x37, 0x17, 0x25, 0x4e, 0xd2, 0xec, 0x1e, 0xe8, 0xf7, 0x68, 0x81, 0x68, 0x08, 0x66, 0xca, 0xc2, + 0x6c, 0x06, 0x06, 0x02, 0x09, 0xab, 0xf7, 0x82, 0x92, 0xd3, 0x7a, 0xf0, 0x7f, 0x79, 0x4d, 0xc1, + 0xff, 0x15, 0xb4, 0xc4, 0xec, 0xbd, 0x30, 0x22, 0x6d, 0x5f, 0x62, 0x4a, 0x51, 0x03, 0xfc, 0x5f, + 0x49, 0x1b, 0x98, 0x48, 0x7e, 0xe8, 0x8f, 0x27, 0x7b, 0x66, 0x2f, 0x81, 0xde, 0xb9, 0xd1, 0xa9, + 0xf7, 0x41, 0x22, 0x87, 0x45, 0x1e, 0x83, 0x44, 0x3e, 0xaf, 0x29, 0x13, 0x23, 0xbf, 0xfe, 0xc9, + 0xe9, 0x81, 0x3c, 0xf9, 0xa3, 0xe3, 0x6b, 0xc8, 0xcd, 0xe7, 0x19, 0xf8, 0x61, 0xb8, 0x23, 0x74, + 0xa3, 0x14, 0xe3, 0x0b, 0x05, 0x8a, 0x2f, 0x16, 0x3b, 0xf0, 0xc5, 0x22, 0xc1, 0x2b, 0x59, 0x7e, + 0xe0, 0x9c, 0xd3, 0x43, 0x36, 0x19, 0xd3, 0xb5, 0xc0, 0x01, 0x77, 0x2e, 0xfb, 0x30, 0xe3, 0xcd, + 0x87, 0xf2, 0xa2, 0x88, 0x03, 0xeb, 0x7c, 0xb6, 0xc0, 0xf0, 0x85, 0x50, 0xfc, 0xb6, 0x74, 0xaa, + 0x2a, 0xae, 0x10, 0x4c, 0x48, 0xc1, 0x53, 0xb8, 0x18, 0x2a, 0x64, 0x37, 0x70, 0xd7, 0xbd, 0xe8, + 0x29, 0x5c, 0x0a, 0xe5, 0xad, 0x47, 0xdc, 0xf9, 0x2a, 0x65, 0x4f, 0xb3, 0x45, 0x3e, 0x77, 0x46, + 0xbf, 0x83, 0xe7, 0xa8, 0x50, 0x81, 0x99, 0x81, 0x38, 0x57, 0xb6, 0xc0, 0x00, 0xf9, 0xae, 0x80, + 0xee, 0x56, 0xe2, 0xc8, 0xec, 0xa3, 0x4c, 0x48, 0xa1, 0xab, 0x90, 0x08, 0x53, 0x71, 0x78, 0x7e, + 0xf3, 0xc6, 0xcd, 0xc9, 0x9e, 0x97, 0x6f, 0x4e, 0xf6, 0xfc, 0xeb, 0xcd, 0xc9, 0x9e, 0xef, 0xdc, + 0x9c, 0x54, 0xbe, 0x77, 0x73, 0x52, 0xf9, 0xfe, 0xcd, 0x49, 0xe5, 0xc7, 0x37, 0x27, 0x95, 0xe7, + 0x6e, 0x4d, 0x2a, 0x2f, 0xde, 0x9a, 0x54, 0xbe, 0x74, 0x6b, 0x52, 0xf9, 0xda, 0xad, 0x49, 0xe5, + 0xa5, 0x5b, 0x93, 0xca, 0x8d, 0x5b, 0x93, 0x3d, 0x2f, 0xdf, 0x9a, 0x54, 0xbe, 0x73, 0x6b, 0x52, + 0xf9, 0xde, 0xad, 0xc9, 0x9e, 0xef, 0xdf, 0x9a, 0x54, 0x7e, 0x7c, 0x6b, 0xb2, 0xe7, 0xb9, 0x57, + 0x27, 0x7b, 0x5e, 0x78, 0x75, 0xb2, 0xe7, 0xc5, 0x57, 0x27, 0x95, 0xff, 0x0f, 0x00, 0x00, 0xff, + 0xff, 0x60, 0x11, 0x0b, 0xa5, 0xac, 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/combos/unsafeboth/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/combos/unsafeboth/thetest.pb.go index a871bd818..4e291b14c 100644 --- a/vendor/github.com/gogo/protobuf/test/combos/unsafeboth/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/combos/unsafeboth/thetest.pb.go @@ -6971,407 +6971,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6396 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xff, 0x0e, 0x87, 0xd2, 0x52, 0x87, 0x7a, 0x8c, 0x66, 0xd7, 0x32, 0x2d, 0xaf, 0x29, 0x2d, - 0xbd, 0x5e, 0xcb, 0x8a, 0xad, 0xd5, 0x6a, 0xb5, 0x2f, 0x6e, 0x6c, 0x83, 0xaf, 0x95, 0xb5, 0xff, - 0xd5, 0x23, 0x23, 0x29, 0xb1, 0x93, 0x3f, 0x40, 0x8c, 0xc8, 0x2b, 0x89, 0x36, 0x39, 0xc3, 0x72, - 0x86, 0xb6, 0xe5, 0x0f, 0x85, 0x93, 0xb4, 0x69, 0xd2, 0xa0, 0xcf, 0xb4, 0x68, 0x9e, 0x8e, 0x93, - 0x22, 0x8d, 0x93, 0xbe, 0x92, 0x36, 0x4d, 0x83, 0xa0, 0x68, 0xfc, 0x25, 0xed, 0x16, 0x28, 0x0a, - 0xa7, 0x9f, 0x8a, 0xa0, 0x30, 0xe2, 0x4d, 0x80, 0xa6, 0xad, 0xdb, 0x26, 0x8d, 0x81, 0x04, 0x70, - 0x3e, 0x14, 0xf7, 0x35, 0x33, 0xf7, 0x72, 0xa8, 0x19, 0x79, 0xed, 0x24, 0x5f, 0x76, 0xc9, 0x7b, - 0xce, 0xef, 0xcc, 0xb9, 0xe7, 0x75, 0xcf, 0xdc, 0x7b, 0x45, 0x78, 0xef, 0x22, 0x4c, 0xef, 0xda, - 0xf6, 0x6e, 0x13, 0x9d, 0x69, 0x77, 0x6c, 0xd7, 0xde, 0xee, 0xee, 0x9c, 0xa9, 0x23, 0xa7, 0xd6, - 0x69, 0xb4, 0x5d, 0xbb, 0x33, 0x47, 0xc6, 0xf4, 0x31, 0xca, 0x31, 0xc7, 0x39, 0x72, 0x2b, 0x30, - 0x7e, 0xb5, 0xd1, 0x44, 0x65, 0x8f, 0x71, 0x03, 0xb9, 0xfa, 0x25, 0x48, 0xee, 0x34, 0x9a, 0x28, - 0xa3, 0x4c, 0xab, 0x33, 0xe9, 0x85, 0x53, 0x73, 0x12, 0x68, 0x4e, 0x44, 0xac, 0xe3, 0x61, 0x83, - 0x20, 0x72, 0xdf, 0x4b, 0xc2, 0xb1, 0x10, 0xaa, 0xae, 0x43, 0xd2, 0x32, 0x5b, 0x58, 0xa2, 0x32, - 0x33, 0x64, 0x90, 0xcf, 0x7a, 0x06, 0x8e, 0xb6, 0xcd, 0xda, 0x13, 0xe6, 0x2e, 0xca, 0x24, 0xc8, - 0x30, 0xff, 0xaa, 0x67, 0x01, 0xea, 0xa8, 0x8d, 0xac, 0x3a, 0xb2, 0x6a, 0xfb, 0x19, 0x75, 0x5a, - 0x9d, 0x19, 0x32, 0x02, 0x23, 0xfa, 0xdb, 0x60, 0xbc, 0xdd, 0xdd, 0x6e, 0x36, 0x6a, 0xd5, 0x00, - 0x1b, 0x4c, 0xab, 0x33, 0x03, 0x86, 0x46, 0x09, 0x65, 0x9f, 0xf9, 0x5e, 0x18, 0x7b, 0x0a, 0x99, - 0x4f, 0x04, 0x59, 0xd3, 0x84, 0x75, 0x14, 0x0f, 0x07, 0x18, 0x4b, 0x30, 0xdc, 0x42, 0x8e, 0x63, - 0xee, 0xa2, 0xaa, 0xbb, 0xdf, 0x46, 0x99, 0x24, 0x99, 0xfd, 0x74, 0xcf, 0xec, 0xe5, 0x99, 0xa7, - 0x19, 0x6a, 0x73, 0xbf, 0x8d, 0xf4, 0x02, 0x0c, 0x21, 0xab, 0xdb, 0xa2, 0x12, 0x06, 0xfa, 0xd8, - 0xaf, 0x62, 0x75, 0x5b, 0xb2, 0x94, 0x14, 0x86, 0x31, 0x11, 0x47, 0x1d, 0xd4, 0x79, 0xb2, 0x51, - 0x43, 0x99, 0x41, 0x22, 0xe0, 0xde, 0x1e, 0x01, 0x1b, 0x94, 0x2e, 0xcb, 0xe0, 0x38, 0xbd, 0x04, - 0x43, 0xe8, 0x69, 0x17, 0x59, 0x4e, 0xc3, 0xb6, 0x32, 0x47, 0x89, 0x90, 0x7b, 0x42, 0xbc, 0x88, - 0x9a, 0x75, 0x59, 0x84, 0x8f, 0xd3, 0x2f, 0xc0, 0x51, 0xbb, 0xed, 0x36, 0x6c, 0xcb, 0xc9, 0xa4, - 0xa6, 0x95, 0x99, 0xf4, 0xc2, 0x89, 0xd0, 0x40, 0x58, 0xa3, 0x3c, 0x06, 0x67, 0xd6, 0x97, 0x41, - 0x73, 0xec, 0x6e, 0xa7, 0x86, 0xaa, 0x35, 0xbb, 0x8e, 0xaa, 0x0d, 0x6b, 0xc7, 0xce, 0x0c, 0x11, - 0x01, 0x53, 0xbd, 0x13, 0x21, 0x8c, 0x25, 0xbb, 0x8e, 0x96, 0xad, 0x1d, 0xdb, 0x18, 0x75, 0x84, - 0xef, 0xfa, 0x04, 0x0c, 0x3a, 0xfb, 0x96, 0x6b, 0x3e, 0x9d, 0x19, 0x26, 0x11, 0xc2, 0xbe, 0xe5, - 0x7e, 0x3c, 0x00, 0x63, 0x71, 0x42, 0xec, 0x0a, 0x0c, 0xec, 0xe0, 0x59, 0x66, 0x12, 0x87, 0xb1, - 0x01, 0xc5, 0x88, 0x46, 0x1c, 0x7c, 0x83, 0x46, 0x2c, 0x40, 0xda, 0x42, 0x8e, 0x8b, 0xea, 0x34, - 0x22, 0xd4, 0x98, 0x31, 0x05, 0x14, 0xd4, 0x1b, 0x52, 0xc9, 0x37, 0x14, 0x52, 0x8f, 0xc2, 0x98, - 0xa7, 0x52, 0xb5, 0x63, 0x5a, 0xbb, 0x3c, 0x36, 0xcf, 0x44, 0x69, 0x32, 0x57, 0xe1, 0x38, 0x03, - 0xc3, 0x8c, 0x51, 0x24, 0x7c, 0xd7, 0xcb, 0x00, 0xb6, 0x85, 0xec, 0x9d, 0x6a, 0x1d, 0xd5, 0x9a, - 0x99, 0x54, 0x1f, 0x2b, 0xad, 0x61, 0x96, 0x1e, 0x2b, 0xd9, 0x74, 0xb4, 0xd6, 0xd4, 0x2f, 0xfb, - 0xa1, 0x76, 0xb4, 0x4f, 0xa4, 0xac, 0xd0, 0x24, 0xeb, 0x89, 0xb6, 0x2d, 0x18, 0xed, 0x20, 0x1c, - 0xf7, 0xa8, 0xce, 0x66, 0x36, 0x44, 0x94, 0x98, 0x8b, 0x9c, 0x99, 0xc1, 0x60, 0x74, 0x62, 0x23, - 0x9d, 0xe0, 0x57, 0xfd, 0x6e, 0xf0, 0x06, 0xaa, 0x24, 0xac, 0x80, 0x54, 0xa1, 0x61, 0x3e, 0xb8, - 0x6a, 0xb6, 0xd0, 0xe4, 0x25, 0x18, 0x15, 0xcd, 0xa3, 0x1f, 0x87, 0x01, 0xc7, 0x35, 0x3b, 0x2e, - 0x89, 0xc2, 0x01, 0x83, 0x7e, 0xd1, 0x35, 0x50, 0x91, 0x55, 0x27, 0x55, 0x6e, 0xc0, 0xc0, 0x1f, - 0x27, 0x2f, 0xc2, 0x88, 0xf0, 0xf8, 0xb8, 0xc0, 0xdc, 0x47, 0x07, 0xe1, 0x78, 0x58, 0xcc, 0x85, - 0x86, 0xff, 0x04, 0x0c, 0x5a, 0xdd, 0xd6, 0x36, 0xea, 0x64, 0x54, 0x22, 0x81, 0x7d, 0xd3, 0x0b, - 0x30, 0xd0, 0x34, 0xb7, 0x51, 0x33, 0x93, 0x9c, 0x56, 0x66, 0x46, 0x17, 0xde, 0x16, 0x2b, 0xaa, - 0xe7, 0xae, 0x63, 0x88, 0x41, 0x91, 0xfa, 0x43, 0x90, 0x64, 0x25, 0x0e, 0x4b, 0x98, 0x8d, 0x27, - 0x01, 0xc7, 0xa2, 0x41, 0x70, 0xfa, 0x9d, 0x30, 0x84, 0xff, 0xa7, 0xb6, 0x1d, 0x24, 0x3a, 0xa7, - 0xf0, 0x00, 0xb6, 0xab, 0x3e, 0x09, 0x29, 0x12, 0x66, 0x75, 0xc4, 0x97, 0x06, 0xef, 0x3b, 0x76, - 0x4c, 0x1d, 0xed, 0x98, 0xdd, 0xa6, 0x5b, 0x7d, 0xd2, 0x6c, 0x76, 0x11, 0x09, 0x98, 0x21, 0x63, - 0x98, 0x0d, 0xbe, 0x13, 0x8f, 0xe9, 0x53, 0x90, 0xa6, 0x51, 0xd9, 0xb0, 0xea, 0xe8, 0x69, 0x52, - 0x7d, 0x06, 0x0c, 0x1a, 0xa8, 0xcb, 0x78, 0x04, 0x3f, 0xfe, 0x71, 0xc7, 0xb6, 0xb8, 0x6b, 0xc9, - 0x23, 0xf0, 0x00, 0x79, 0xfc, 0x45, 0xb9, 0xf0, 0xdd, 0x15, 0x3e, 0x3d, 0x39, 0x16, 0x73, 0x5f, - 0x4d, 0x40, 0x92, 0xe4, 0xdb, 0x18, 0xa4, 0x37, 0x1f, 0x5b, 0xaf, 0x54, 0xcb, 0x6b, 0x5b, 0xc5, - 0xeb, 0x15, 0x4d, 0xd1, 0x47, 0x01, 0xc8, 0xc0, 0xd5, 0xeb, 0x6b, 0x85, 0x4d, 0x2d, 0xe1, 0x7d, - 0x5f, 0x5e, 0xdd, 0xbc, 0xb0, 0xa8, 0xa9, 0x1e, 0x60, 0x8b, 0x0e, 0x24, 0x83, 0x0c, 0xe7, 0x16, - 0xb4, 0x01, 0x5d, 0x83, 0x61, 0x2a, 0x60, 0xf9, 0xd1, 0x4a, 0xf9, 0xc2, 0xa2, 0x36, 0x28, 0x8e, - 0x9c, 0x5b, 0xd0, 0x8e, 0xea, 0x23, 0x30, 0x44, 0x46, 0x8a, 0x6b, 0x6b, 0xd7, 0xb5, 0x94, 0x27, - 0x73, 0x63, 0xd3, 0x58, 0x5e, 0x5d, 0xd2, 0x86, 0x3c, 0x99, 0x4b, 0xc6, 0xda, 0xd6, 0xba, 0x06, - 0x9e, 0x84, 0x95, 0xca, 0xc6, 0x46, 0x61, 0xa9, 0xa2, 0xa5, 0x3d, 0x8e, 0xe2, 0x63, 0x9b, 0x95, - 0x0d, 0x6d, 0x58, 0x50, 0xeb, 0xdc, 0x82, 0x36, 0xe2, 0x3d, 0xa2, 0xb2, 0xba, 0xb5, 0xa2, 0x8d, - 0xea, 0xe3, 0x30, 0x42, 0x1f, 0xc1, 0x95, 0x18, 0x93, 0x86, 0x2e, 0x2c, 0x6a, 0x9a, 0xaf, 0x08, - 0x95, 0x32, 0x2e, 0x0c, 0x5c, 0x58, 0xd4, 0xf4, 0x5c, 0x09, 0x06, 0x48, 0x74, 0xe9, 0x3a, 0x8c, - 0x5e, 0x2f, 0x14, 0x2b, 0xd7, 0xab, 0x6b, 0xeb, 0x9b, 0xcb, 0x6b, 0xab, 0x85, 0xeb, 0x9a, 0xe2, - 0x8f, 0x19, 0x95, 0x77, 0x6c, 0x2d, 0x1b, 0x95, 0xb2, 0x96, 0x08, 0x8e, 0xad, 0x57, 0x0a, 0x9b, - 0x95, 0xb2, 0xa6, 0xe6, 0x6a, 0x70, 0x3c, 0xac, 0xce, 0x84, 0x66, 0x46, 0xc0, 0xc5, 0x89, 0x3e, - 0x2e, 0x26, 0xb2, 0x7a, 0x5c, 0xfc, 0x59, 0x05, 0x8e, 0x85, 0xd4, 0xda, 0xd0, 0x87, 0x3c, 0x0c, - 0x03, 0x34, 0x44, 0xe9, 0xea, 0x73, 0x5f, 0x68, 0xd1, 0x26, 0x01, 0xdb, 0xb3, 0x02, 0x11, 0x5c, - 0x70, 0x05, 0x56, 0xfb, 0xac, 0xc0, 0x58, 0x44, 0x8f, 0x92, 0xef, 0x57, 0x20, 0xd3, 0x4f, 0x76, - 0x44, 0xa1, 0x48, 0x08, 0x85, 0xe2, 0x8a, 0xac, 0xc0, 0xc9, 0xfe, 0x73, 0xe8, 0xd1, 0xe2, 0xf3, - 0x0a, 0x4c, 0x84, 0x37, 0x2a, 0xa1, 0x3a, 0x3c, 0x04, 0x83, 0x2d, 0xe4, 0xee, 0xd9, 0x7c, 0xb1, - 0x3e, 0x1d, 0xb2, 0x04, 0x60, 0xb2, 0x6c, 0x2b, 0x86, 0x0a, 0xae, 0x21, 0x6a, 0xbf, 0x6e, 0x83, - 0x6a, 0xd3, 0xa3, 0xe9, 0x87, 0x12, 0x70, 0x5b, 0xa8, 0xf0, 0x50, 0x45, 0xef, 0x02, 0x68, 0x58, - 0xed, 0xae, 0x4b, 0x17, 0x64, 0x5a, 0x9f, 0x86, 0xc8, 0x08, 0xc9, 0x7d, 0x5c, 0x7b, 0xba, 0xae, - 0x47, 0x57, 0x09, 0x1d, 0xe8, 0x10, 0x61, 0xb8, 0xe4, 0x2b, 0x9a, 0x24, 0x8a, 0x66, 0xfb, 0xcc, - 0xb4, 0x67, 0xad, 0x9b, 0x07, 0xad, 0xd6, 0x6c, 0x20, 0xcb, 0xad, 0x3a, 0x6e, 0x07, 0x99, 0xad, - 0x86, 0xb5, 0x4b, 0x0a, 0x70, 0x2a, 0x3f, 0xb0, 0x63, 0x36, 0x1d, 0x64, 0x8c, 0x51, 0xf2, 0x06, - 0xa7, 0x62, 0x04, 0x59, 0x65, 0x3a, 0x01, 0xc4, 0xa0, 0x80, 0xa0, 0x64, 0x0f, 0x91, 0xfb, 0xf0, - 0x51, 0x48, 0x07, 0xda, 0x3a, 0xfd, 0x24, 0x0c, 0x3f, 0x6e, 0x3e, 0x69, 0x56, 0x79, 0xab, 0x4e, - 0x2d, 0x91, 0xc6, 0x63, 0xeb, 0xac, 0x5d, 0x9f, 0x87, 0xe3, 0x84, 0xc5, 0xee, 0xba, 0xa8, 0x53, - 0xad, 0x35, 0x4d, 0xc7, 0x21, 0x46, 0x4b, 0x11, 0x56, 0x1d, 0xd3, 0xd6, 0x30, 0xa9, 0xc4, 0x29, - 0xfa, 0x79, 0x38, 0x46, 0x10, 0xad, 0x6e, 0xd3, 0x6d, 0xb4, 0x9b, 0xa8, 0x8a, 0x5f, 0x1e, 0x1c, - 0x52, 0x88, 0x3d, 0xcd, 0xc6, 0x31, 0xc7, 0x0a, 0x63, 0xc0, 0x1a, 0x39, 0xfa, 0x12, 0xdc, 0x45, - 0x60, 0xbb, 0xc8, 0x42, 0x1d, 0xd3, 0x45, 0x55, 0xf4, 0x4b, 0x5d, 0xb3, 0xe9, 0x54, 0x4d, 0xab, - 0x5e, 0xdd, 0x33, 0x9d, 0xbd, 0xcc, 0xf1, 0xa0, 0x80, 0x3b, 0x30, 0xef, 0x12, 0x63, 0xad, 0x10, - 0xce, 0x82, 0x55, 0x7f, 0xc4, 0x74, 0xf6, 0xf4, 0x3c, 0x4c, 0x10, 0x41, 0x8e, 0xdb, 0x69, 0x58, - 0xbb, 0xd5, 0xda, 0x1e, 0xaa, 0x3d, 0x51, 0xed, 0xba, 0x3b, 0x97, 0x32, 0x77, 0x06, 0x25, 0x10, - 0x25, 0x37, 0x08, 0x4f, 0x09, 0xb3, 0x6c, 0xb9, 0x3b, 0x97, 0xf4, 0x0d, 0x18, 0xc6, 0xfe, 0x68, - 0x35, 0x9e, 0x41, 0xd5, 0x1d, 0xbb, 0x43, 0x16, 0x97, 0xd1, 0x90, 0xe4, 0x0e, 0x18, 0x71, 0x6e, - 0x8d, 0x01, 0x56, 0xec, 0x3a, 0xca, 0x0f, 0x6c, 0xac, 0x57, 0x2a, 0x65, 0x23, 0xcd, 0xa5, 0x5c, - 0xb5, 0x3b, 0x38, 0xa6, 0x76, 0x6d, 0xcf, 0xc6, 0x69, 0x1a, 0x53, 0xbb, 0x36, 0xb7, 0xf0, 0x79, - 0x38, 0x56, 0xab, 0xd1, 0x69, 0x37, 0x6a, 0x55, 0xd6, 0xe5, 0x3b, 0x19, 0x4d, 0xb0, 0x57, 0xad, - 0xb6, 0x44, 0x19, 0x58, 0x98, 0x3b, 0xfa, 0x65, 0xb8, 0xcd, 0xb7, 0x57, 0x10, 0x38, 0xde, 0x33, - 0x4b, 0x19, 0x7a, 0x1e, 0x8e, 0xb5, 0xf7, 0x7b, 0x81, 0xba, 0xf0, 0xc4, 0xf6, 0xbe, 0x0c, 0xbb, - 0x87, 0xbc, 0xb9, 0x75, 0x50, 0xcd, 0x74, 0x51, 0x3d, 0x73, 0x7b, 0x90, 0x3b, 0x40, 0xd0, 0xcf, - 0x80, 0x56, 0xab, 0x55, 0x91, 0x65, 0x6e, 0x37, 0x51, 0xd5, 0xec, 0x20, 0xcb, 0x74, 0x32, 0x53, - 0x41, 0xe6, 0xd1, 0x5a, 0xad, 0x42, 0xa8, 0x05, 0x42, 0xd4, 0x67, 0x61, 0xdc, 0xde, 0x7e, 0xbc, - 0x46, 0x83, 0xab, 0xda, 0xee, 0xa0, 0x9d, 0xc6, 0xd3, 0x99, 0x53, 0xc4, 0x4c, 0x63, 0x98, 0x40, - 0x42, 0x6b, 0x9d, 0x0c, 0xeb, 0xf7, 0x81, 0x56, 0x73, 0xf6, 0xcc, 0x4e, 0x9b, 0xac, 0xee, 0x4e, - 0xdb, 0xac, 0xa1, 0xcc, 0x3d, 0x94, 0x95, 0x8e, 0xaf, 0xf2, 0x61, 0xfd, 0x51, 0x38, 0xde, 0xb5, - 0x1a, 0x96, 0x8b, 0x3a, 0xed, 0x0e, 0xc2, 0x4d, 0x3a, 0xcd, 0xb4, 0xcc, 0xbf, 0x1d, 0xed, 0xd3, - 0x66, 0x6f, 0x05, 0xb9, 0xa9, 0x77, 0x8d, 0x63, 0xdd, 0xde, 0xc1, 0x5c, 0x1e, 0x86, 0x83, 0x4e, - 0xd7, 0x87, 0x80, 0xba, 0x5d, 0x53, 0xf0, 0x1a, 0x5a, 0x5a, 0x2b, 0xe3, 0xd5, 0xef, 0xdd, 0x15, - 0x2d, 0x81, 0x57, 0xe1, 0xeb, 0xcb, 0x9b, 0x95, 0xaa, 0xb1, 0xb5, 0xba, 0xb9, 0xbc, 0x52, 0xd1, - 0xd4, 0xd9, 0xa1, 0xd4, 0xf7, 0x8f, 0x6a, 0xcf, 0x3e, 0xfb, 0xec, 0xb3, 0x89, 0xdc, 0x37, 0x13, - 0x30, 0x2a, 0x76, 0xbe, 0xfa, 0xdb, 0xe1, 0x76, 0xfe, 0x9a, 0xea, 0x20, 0xb7, 0xfa, 0x54, 0xa3, - 0x43, 0xe2, 0xb0, 0x65, 0xd2, 0xde, 0xd1, 0x33, 0xe1, 0x71, 0xc6, 0xb5, 0x81, 0xdc, 0x77, 0x35, - 0x3a, 0x38, 0xca, 0x5a, 0xa6, 0xab, 0x5f, 0x87, 0x29, 0xcb, 0xae, 0x3a, 0xae, 0x69, 0xd5, 0xcd, - 0x4e, 0xbd, 0xea, 0x6f, 0x10, 0x54, 0xcd, 0x5a, 0x0d, 0x39, 0x8e, 0x4d, 0x97, 0x00, 0x4f, 0xca, - 0x09, 0xcb, 0xde, 0x60, 0xcc, 0x7e, 0x6d, 0x2c, 0x30, 0x56, 0xc9, 0xdd, 0x6a, 0x3f, 0x77, 0xdf, - 0x09, 0x43, 0x2d, 0xb3, 0x5d, 0x45, 0x96, 0xdb, 0xd9, 0x27, 0xfd, 0x5a, 0xca, 0x48, 0xb5, 0xcc, - 0x76, 0x05, 0x7f, 0x7f, 0xeb, 0x7c, 0x10, 0xb4, 0xe3, 0xbf, 0xaa, 0x30, 0x1c, 0xec, 0xd9, 0x70, - 0x0b, 0x5c, 0x23, 0xf5, 0x59, 0x21, 0xe9, 0x7b, 0xf7, 0x81, 0x1d, 0xde, 0x5c, 0x09, 0x17, 0xee, - 0xfc, 0x20, 0xed, 0xa4, 0x0c, 0x8a, 0xc4, 0x8b, 0x26, 0x4e, 0x58, 0x44, 0xfb, 0xf3, 0x94, 0xc1, - 0xbe, 0xe9, 0x4b, 0x30, 0xf8, 0xb8, 0x43, 0x64, 0x0f, 0x12, 0xd9, 0xa7, 0x0e, 0x96, 0x7d, 0x6d, - 0x83, 0x08, 0x1f, 0xba, 0xb6, 0x51, 0x5d, 0x5d, 0x33, 0x56, 0x0a, 0xd7, 0x0d, 0x06, 0xd7, 0xef, - 0x80, 0x64, 0xd3, 0x7c, 0x66, 0x5f, 0x2c, 0xf1, 0x64, 0x28, 0xae, 0xe1, 0xef, 0x80, 0xe4, 0x53, - 0xc8, 0x7c, 0x42, 0x2c, 0xac, 0x64, 0xe8, 0x2d, 0x0c, 0xfd, 0x33, 0x30, 0x40, 0xec, 0xa5, 0x03, - 0x30, 0x8b, 0x69, 0x47, 0xf4, 0x14, 0x24, 0x4b, 0x6b, 0x06, 0x0e, 0x7f, 0x0d, 0x86, 0xe9, 0x68, - 0x75, 0x7d, 0xb9, 0x52, 0xaa, 0x68, 0x89, 0xdc, 0x79, 0x18, 0xa4, 0x46, 0xc0, 0xa9, 0xe1, 0x99, - 0x41, 0x3b, 0xc2, 0xbe, 0x32, 0x19, 0x0a, 0xa7, 0x6e, 0xad, 0x14, 0x2b, 0x86, 0x96, 0x08, 0xba, - 0xd7, 0x81, 0xe1, 0x60, 0xbb, 0xf6, 0xb3, 0x89, 0xa9, 0xaf, 0x2b, 0x90, 0x0e, 0xb4, 0x5f, 0x78, - 0xe1, 0x37, 0x9b, 0x4d, 0xfb, 0xa9, 0xaa, 0xd9, 0x6c, 0x98, 0x0e, 0x0b, 0x0a, 0x20, 0x43, 0x05, - 0x3c, 0x12, 0xd7, 0x69, 0x3f, 0x13, 0xe5, 0x9f, 0x53, 0x40, 0x93, 0x5b, 0x37, 0x49, 0x41, 0xe5, - 0xe7, 0xaa, 0xe0, 0x27, 0x15, 0x18, 0x15, 0xfb, 0x35, 0x49, 0xbd, 0x93, 0x3f, 0x57, 0xf5, 0x3e, - 0xa1, 0xc0, 0x88, 0xd0, 0xa5, 0xfd, 0x42, 0x69, 0xf7, 0x71, 0x15, 0x8e, 0x85, 0xe0, 0xf4, 0x02, - 0x6b, 0x67, 0x69, 0x87, 0xfd, 0x40, 0x9c, 0x67, 0xcd, 0xe1, 0xd5, 0x72, 0xdd, 0xec, 0xb8, 0xac, - 0xfb, 0xbd, 0x0f, 0xb4, 0x46, 0x1d, 0x59, 0x6e, 0x63, 0xa7, 0x81, 0x3a, 0xec, 0x15, 0x9c, 0xf6, - 0xb8, 0x63, 0xfe, 0x38, 0x7d, 0x0b, 0xbf, 0x1f, 0xf4, 0xb6, 0xed, 0x34, 0xdc, 0xc6, 0x93, 0xa8, - 0xda, 0xb0, 0xf8, 0xfb, 0x3a, 0xee, 0x79, 0x93, 0x86, 0xc6, 0x29, 0xcb, 0x96, 0xeb, 0x71, 0x5b, - 0x68, 0xd7, 0x94, 0xb8, 0x71, 0xed, 0x53, 0x0d, 0x8d, 0x53, 0x3c, 0xee, 0x93, 0x30, 0x5c, 0xb7, - 0xbb, 0xb8, 0x7d, 0xa0, 0x7c, 0xb8, 0xd4, 0x2a, 0x46, 0x9a, 0x8e, 0x79, 0x2c, 0xac, 0xbf, 0xf3, - 0x37, 0x0a, 0x86, 0x8d, 0x34, 0x1d, 0xa3, 0x2c, 0xf7, 0xc2, 0x98, 0xb9, 0xbb, 0xdb, 0xc1, 0xc2, - 0xb9, 0x20, 0xda, 0xb4, 0x8e, 0x7a, 0xc3, 0x84, 0x71, 0xf2, 0x1a, 0xa4, 0xb8, 0x1d, 0xf0, 0x6a, - 0x86, 0x2d, 0x51, 0x6d, 0xd3, 0xed, 0x9a, 0xc4, 0xcc, 0x90, 0x91, 0xb2, 0x38, 0xf1, 0x24, 0x0c, - 0x37, 0x9c, 0xaa, 0xbf, 0x6f, 0x98, 0x98, 0x4e, 0xcc, 0xa4, 0x8c, 0x74, 0xc3, 0xf1, 0x36, 0x8a, - 0x72, 0x9f, 0x4f, 0xc0, 0xa8, 0xb8, 0xef, 0xa9, 0x97, 0x21, 0xd5, 0xb4, 0x6b, 0x26, 0x09, 0x04, - 0xba, 0xe9, 0x3e, 0x13, 0xb1, 0x55, 0x3a, 0x77, 0x9d, 0xf1, 0x1b, 0x1e, 0x72, 0xf2, 0x9f, 0x14, - 0x48, 0xf1, 0x61, 0x7d, 0x02, 0x92, 0x6d, 0xd3, 0xdd, 0x23, 0xe2, 0x06, 0x8a, 0x09, 0x4d, 0x31, - 0xc8, 0x77, 0x3c, 0xee, 0xb4, 0x4d, 0x8b, 0x84, 0x00, 0x1b, 0xc7, 0xdf, 0xb1, 0x5f, 0x9b, 0xc8, - 0xac, 0x93, 0x76, 0xd8, 0x6e, 0xb5, 0x90, 0xe5, 0x3a, 0xdc, 0xaf, 0x6c, 0xbc, 0xc4, 0x86, 0xf5, - 0xb7, 0xc1, 0xb8, 0xdb, 0x31, 0x1b, 0x4d, 0x81, 0x37, 0x49, 0x78, 0x35, 0x4e, 0xf0, 0x98, 0xf3, - 0x70, 0x07, 0x97, 0x5b, 0x47, 0xae, 0x59, 0xdb, 0x43, 0x75, 0x1f, 0x34, 0x48, 0x36, 0xd5, 0x6e, - 0x67, 0x0c, 0x65, 0x46, 0xe7, 0xd8, 0xdc, 0xb7, 0x14, 0x18, 0xe7, 0x0d, 0x7c, 0xdd, 0x33, 0xd6, - 0x0a, 0x80, 0x69, 0x59, 0xb6, 0x1b, 0x34, 0x57, 0x6f, 0x28, 0xf7, 0xe0, 0xe6, 0x0a, 0x1e, 0xc8, - 0x08, 0x08, 0x98, 0x6c, 0x01, 0xf8, 0x94, 0xbe, 0x66, 0x9b, 0x82, 0x34, 0xdb, 0xd4, 0x26, 0x27, - 0x23, 0xf4, 0xad, 0x0f, 0xe8, 0x10, 0xee, 0xf4, 0xf5, 0xe3, 0x30, 0xb0, 0x8d, 0x76, 0x1b, 0x16, - 0xdb, 0x6a, 0xa3, 0x5f, 0xf8, 0x06, 0x5e, 0xd2, 0xdb, 0xc0, 0x2b, 0xbe, 0x07, 0x8e, 0xd5, 0xec, - 0x96, 0xac, 0x6e, 0x51, 0x93, 0xde, 0x3c, 0x9d, 0x47, 0x94, 0x77, 0x83, 0xdf, 0x9d, 0x3d, 0xaf, - 0x28, 0x9f, 0x4d, 0xa8, 0x4b, 0xeb, 0xc5, 0x2f, 0x26, 0x26, 0x97, 0x28, 0x74, 0x9d, 0xcf, 0xd4, - 0x40, 0x3b, 0x4d, 0x54, 0xc3, 0xda, 0xc3, 0x8f, 0x4e, 0xc3, 0x03, 0xbb, 0x0d, 0x77, 0xaf, 0xbb, - 0x3d, 0x57, 0xb3, 0x5b, 0x67, 0x76, 0xed, 0x5d, 0xdb, 0x3f, 0x0c, 0xc2, 0xdf, 0xc8, 0x17, 0xf2, - 0x89, 0x1d, 0x08, 0x0d, 0x79, 0xa3, 0x93, 0x91, 0xa7, 0x47, 0xf9, 0x55, 0x38, 0xc6, 0x98, 0xab, - 0x64, 0x47, 0x9a, 0xf6, 0xe1, 0xfa, 0x81, 0xbb, 0x12, 0x99, 0x2f, 0x7f, 0x8f, 0xac, 0x74, 0xc6, - 0x38, 0x83, 0x62, 0x1a, 0xed, 0xd4, 0xf3, 0x06, 0xdc, 0x26, 0xc8, 0xa3, 0xa9, 0x89, 0x3a, 0x11, - 0x12, 0xbf, 0xc9, 0x24, 0x1e, 0x0b, 0x48, 0xdc, 0x60, 0xd0, 0x7c, 0x09, 0x46, 0x0e, 0x23, 0xeb, - 0xef, 0x98, 0xac, 0x61, 0x14, 0x14, 0xb2, 0x04, 0x63, 0x44, 0x48, 0xad, 0xeb, 0xb8, 0x76, 0x8b, - 0xd4, 0xbd, 0x83, 0xc5, 0xfc, 0xfd, 0xf7, 0x68, 0xae, 0x8c, 0x62, 0x58, 0xc9, 0x43, 0xe5, 0xf3, - 0x40, 0x36, 0xe1, 0xeb, 0xa8, 0xd6, 0x8c, 0x90, 0x70, 0x83, 0x29, 0xe2, 0xf1, 0xe7, 0xdf, 0x09, - 0xc7, 0xf1, 0x67, 0x52, 0x96, 0x82, 0x9a, 0x44, 0xef, 0xc1, 0x64, 0xbe, 0xf5, 0x7e, 0x9a, 0x8e, - 0xc7, 0x3c, 0x01, 0x01, 0x9d, 0x02, 0x5e, 0xdc, 0x45, 0xae, 0x8b, 0x3a, 0x4e, 0xd5, 0x6c, 0x86, - 0xa9, 0x17, 0x78, 0x83, 0xcd, 0x7c, 0xec, 0x55, 0xd1, 0x8b, 0x4b, 0x14, 0x59, 0x68, 0x36, 0xf3, - 0x5b, 0x70, 0x7b, 0x48, 0x54, 0xc4, 0x90, 0xf9, 0x71, 0x26, 0xf3, 0x78, 0x4f, 0x64, 0x60, 0xb1, - 0xeb, 0xc0, 0xc7, 0x3d, 0x5f, 0xc6, 0x90, 0xf9, 0x09, 0x26, 0x53, 0x67, 0x58, 0xee, 0x52, 0x2c, - 0xf1, 0x1a, 0x8c, 0x3f, 0x89, 0x3a, 0xdb, 0xb6, 0xc3, 0x36, 0x0e, 0x62, 0x88, 0xfb, 0x24, 0x13, - 0x37, 0xc6, 0x80, 0x64, 0x1b, 0x01, 0xcb, 0xba, 0x0c, 0xa9, 0x1d, 0xb3, 0x86, 0x62, 0x88, 0xf8, - 0x14, 0x13, 0x71, 0x14, 0xf3, 0x63, 0x68, 0x01, 0x86, 0x77, 0x6d, 0xb6, 0x32, 0x45, 0xc3, 0x9f, - 0x63, 0xf0, 0x34, 0xc7, 0x30, 0x11, 0x6d, 0xbb, 0xdd, 0x6d, 0xe2, 0x65, 0x2b, 0x5a, 0xc4, 0xa7, - 0xb9, 0x08, 0x8e, 0x61, 0x22, 0x0e, 0x61, 0xd6, 0xe7, 0xb9, 0x08, 0x27, 0x60, 0xcf, 0x87, 0x21, - 0x6d, 0x5b, 0xcd, 0x7d, 0xdb, 0x8a, 0xa3, 0xc4, 0x67, 0x98, 0x04, 0x60, 0x10, 0x2c, 0xe0, 0x0a, - 0x0c, 0xc5, 0x75, 0xc4, 0xe7, 0x5e, 0xe5, 0xe9, 0xc1, 0x3d, 0xb0, 0x04, 0x63, 0xbc, 0x40, 0x35, - 0x6c, 0x2b, 0x86, 0x88, 0x3f, 0x62, 0x22, 0x46, 0x03, 0x30, 0x36, 0x0d, 0x17, 0x39, 0xee, 0x2e, - 0x8a, 0x23, 0xe4, 0xf3, 0x7c, 0x1a, 0x0c, 0xc2, 0x4c, 0xb9, 0x8d, 0xac, 0xda, 0x5e, 0x3c, 0x09, - 0x2f, 0x70, 0x53, 0x72, 0x0c, 0x16, 0x51, 0x82, 0x91, 0x96, 0xd9, 0x71, 0xf6, 0xcc, 0x66, 0x2c, - 0x77, 0x7c, 0x81, 0xc9, 0x18, 0xf6, 0x40, 0xcc, 0x22, 0x5d, 0xeb, 0x30, 0x62, 0xbe, 0xc8, 0x2d, - 0x12, 0x80, 0xb1, 0xd4, 0x73, 0x5c, 0xb2, 0x37, 0x73, 0x18, 0x69, 0x7f, 0xcc, 0x53, 0x8f, 0x62, - 0x57, 0x82, 0x12, 0xaf, 0xc0, 0x90, 0xd3, 0x78, 0x26, 0x96, 0x98, 0x3f, 0xe1, 0x9e, 0x26, 0x00, - 0x0c, 0x7e, 0x0c, 0xee, 0x08, 0x5d, 0x26, 0x62, 0x08, 0xfb, 0x53, 0x26, 0x6c, 0x22, 0x64, 0xa9, - 0x60, 0x25, 0xe1, 0xb0, 0x22, 0xff, 0x8c, 0x97, 0x04, 0x24, 0xc9, 0x5a, 0xc7, 0x9d, 0xbd, 0x63, - 0xee, 0x1c, 0xce, 0x6a, 0x7f, 0xce, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0x36, 0x61, 0x82, 0x49, 0x3c, - 0x9c, 0x5f, 0xbf, 0xc4, 0x0b, 0x2b, 0x45, 0x6f, 0x89, 0xde, 0x7d, 0x0f, 0x4c, 0x7a, 0xe6, 0xe4, - 0x4d, 0xa9, 0x53, 0x6d, 0x99, 0xed, 0x18, 0x92, 0xbf, 0xcc, 0x24, 0xf3, 0x8a, 0xef, 0x75, 0xb5, - 0xce, 0x8a, 0xd9, 0xc6, 0xc2, 0x1f, 0x85, 0x0c, 0x17, 0xde, 0xb5, 0x3a, 0xa8, 0x66, 0xef, 0x5a, - 0x8d, 0x67, 0x50, 0x3d, 0x86, 0xe8, 0xbf, 0x90, 0x5c, 0xb5, 0x15, 0x80, 0x63, 0xc9, 0xcb, 0xa0, - 0x79, 0xbd, 0x4a, 0xb5, 0xd1, 0x6a, 0xdb, 0x1d, 0x37, 0x42, 0xe2, 0x5f, 0x72, 0x4f, 0x79, 0xb8, - 0x65, 0x02, 0xcb, 0x57, 0x60, 0x94, 0x7c, 0x8d, 0x1b, 0x92, 0x5f, 0x61, 0x82, 0x46, 0x7c, 0x14, - 0x2b, 0x1c, 0x35, 0xbb, 0xd5, 0x36, 0x3b, 0x71, 0xea, 0xdf, 0x5f, 0xf1, 0xc2, 0xc1, 0x20, 0xac, - 0x70, 0xb8, 0xfb, 0x6d, 0x84, 0x57, 0xfb, 0x18, 0x12, 0xbe, 0xca, 0x0b, 0x07, 0xc7, 0x30, 0x11, - 0xbc, 0x61, 0x88, 0x21, 0xe2, 0xaf, 0xb9, 0x08, 0x8e, 0xc1, 0x22, 0xde, 0xe1, 0x2f, 0xb4, 0x1d, - 0xb4, 0xdb, 0x70, 0xdc, 0x0e, 0x6d, 0x85, 0x0f, 0x16, 0xf5, 0xb5, 0x57, 0xc5, 0x26, 0xcc, 0x08, - 0x40, 0xf3, 0xd7, 0x60, 0x4c, 0x6a, 0x31, 0xf4, 0xa8, 0x13, 0xfd, 0xcc, 0x7b, 0x5f, 0x63, 0xc5, - 0x48, 0xec, 0x30, 0xf2, 0xd7, 0xb1, 0xdf, 0xc5, 0x3e, 0x20, 0x5a, 0xd8, 0xfb, 0x5f, 0xf3, 0x5c, - 0x2f, 0xb4, 0x01, 0xf9, 0xab, 0x30, 0x22, 0xf4, 0x00, 0xd1, 0xa2, 0x7e, 0x85, 0x89, 0x1a, 0x0e, - 0xb6, 0x00, 0xf9, 0xf3, 0x90, 0xc4, 0xeb, 0x79, 0x34, 0xfc, 0x57, 0x19, 0x9c, 0xb0, 0xe7, 0x1f, - 0x84, 0x14, 0x5f, 0xc7, 0xa3, 0xa1, 0x1f, 0x60, 0x50, 0x0f, 0x82, 0xe1, 0x7c, 0x0d, 0x8f, 0x86, - 0xff, 0x1a, 0x87, 0x73, 0x08, 0x86, 0xc7, 0x37, 0xe1, 0x8b, 0x1f, 0x4e, 0xb2, 0x3a, 0xcc, 0x6d, - 0x77, 0x05, 0x8e, 0xb2, 0xc5, 0x3b, 0x1a, 0xfd, 0x21, 0xf6, 0x70, 0x8e, 0xc8, 0x5f, 0x84, 0x81, - 0x98, 0x06, 0xff, 0x0d, 0x06, 0xa5, 0xfc, 0xf9, 0x12, 0xa4, 0x03, 0x0b, 0x76, 0x34, 0xfc, 0x37, - 0x19, 0x3c, 0x88, 0xc2, 0xaa, 0xb3, 0x05, 0x3b, 0x5a, 0xc0, 0x6f, 0x71, 0xd5, 0x19, 0x02, 0x9b, - 0x8d, 0xaf, 0xd5, 0xd1, 0xe8, 0xdf, 0xe6, 0x56, 0xe7, 0x90, 0xfc, 0xc3, 0x30, 0xe4, 0xd5, 0xdf, - 0x68, 0xfc, 0xef, 0x30, 0xbc, 0x8f, 0xc1, 0x16, 0x08, 0xd4, 0xff, 0x68, 0x11, 0xbf, 0xcb, 0x2d, - 0x10, 0x40, 0xe1, 0x34, 0x92, 0xd7, 0xf4, 0x68, 0x49, 0x1f, 0xe1, 0x69, 0x24, 0x2d, 0xe9, 0xd8, - 0x9b, 0xa4, 0x0c, 0x46, 0x8b, 0xf8, 0x3d, 0xee, 0x4d, 0xc2, 0x8f, 0xd5, 0x90, 0x17, 0xc9, 0x68, - 0x19, 0x7f, 0xc0, 0xd5, 0x90, 0xd6, 0xc8, 0xfc, 0x3a, 0xe8, 0xbd, 0x0b, 0x64, 0xb4, 0xbc, 0x8f, - 0x32, 0x79, 0xe3, 0x3d, 0xeb, 0x63, 0xfe, 0x5d, 0x30, 0x11, 0xbe, 0x38, 0x46, 0x4b, 0xfd, 0xd8, - 0x6b, 0xd2, 0xeb, 0x4c, 0x70, 0x6d, 0xcc, 0x6f, 0xfa, 0x55, 0x36, 0xb8, 0x30, 0x46, 0x8b, 0xfd, - 0xf8, 0x6b, 0x62, 0xa1, 0x0d, 0xae, 0x8b, 0xf9, 0x02, 0x80, 0xbf, 0x26, 0x45, 0xcb, 0xfa, 0x24, - 0x93, 0x15, 0x00, 0xe1, 0xd4, 0x60, 0x4b, 0x52, 0x34, 0xfe, 0x53, 0x3c, 0x35, 0x18, 0x02, 0xa7, - 0x06, 0x5f, 0x8d, 0xa2, 0xd1, 0xcf, 0xf1, 0xd4, 0xe0, 0x90, 0xfc, 0x15, 0x48, 0x59, 0xdd, 0x66, - 0x13, 0xc7, 0x96, 0x7e, 0xf0, 0x25, 0x9b, 0xcc, 0xbf, 0xbf, 0xce, 0xc0, 0x1c, 0x90, 0x3f, 0x0f, - 0x03, 0xa8, 0xb5, 0x8d, 0xea, 0x51, 0xc8, 0xff, 0x78, 0x9d, 0xd7, 0x13, 0xcc, 0x9d, 0x7f, 0x18, - 0x80, 0xbe, 0x4c, 0x93, 0x33, 0x96, 0x08, 0xec, 0x7f, 0xbe, 0xce, 0xce, 0xef, 0x7d, 0x88, 0x2f, - 0x80, 0xde, 0x06, 0x38, 0x58, 0xc0, 0xab, 0xa2, 0x00, 0xf2, 0x02, 0x7e, 0x19, 0x8e, 0x3e, 0xee, - 0xd8, 0x96, 0x6b, 0xee, 0x46, 0xa1, 0xff, 0x8b, 0xa1, 0x39, 0x3f, 0x36, 0x58, 0xcb, 0xee, 0x20, - 0xd7, 0xdc, 0x75, 0xa2, 0xb0, 0xff, 0xcd, 0xb0, 0x1e, 0x00, 0x83, 0x6b, 0xa6, 0xe3, 0xc6, 0x99, - 0xf7, 0xff, 0x70, 0x30, 0x07, 0x60, 0xa5, 0xf1, 0xe7, 0x27, 0xd0, 0x7e, 0x14, 0xf6, 0x07, 0x5c, - 0x69, 0xc6, 0x9f, 0x7f, 0x10, 0x86, 0xf0, 0x47, 0x7a, 0xa7, 0x25, 0x02, 0xfc, 0x43, 0x06, 0xf6, - 0x11, 0xf8, 0xc9, 0x8e, 0x5b, 0x77, 0x1b, 0xd1, 0xc6, 0xfe, 0x5f, 0xe6, 0x69, 0xce, 0x9f, 0x2f, - 0x40, 0xda, 0x71, 0xeb, 0xf5, 0x2e, 0xeb, 0x68, 0x22, 0xe0, 0x3f, 0x7a, 0xdd, 0x7b, 0xc9, 0xf5, - 0x30, 0xc5, 0x93, 0xe1, 0xfb, 0x75, 0xb0, 0x64, 0x2f, 0xd9, 0x74, 0xa7, 0x0e, 0xfe, 0xb1, 0x09, - 0x53, 0x35, 0xbb, 0xb5, 0x6d, 0x3b, 0x67, 0x68, 0x41, 0xd9, 0xb6, 0xdd, 0xbd, 0x33, 0xee, 0x1e, - 0xc2, 0x0b, 0x08, 0xdb, 0x67, 0x4b, 0xe2, 0xcf, 0x93, 0x87, 0xdb, 0x9c, 0x23, 0xa7, 0x96, 0xab, - 0x0d, 0xac, 0xdf, 0x2a, 0xd9, 0xfd, 0xd6, 0x4f, 0xc0, 0x20, 0xd1, 0xf8, 0x2c, 0x39, 0x9c, 0x51, - 0x8a, 0xc9, 0x1b, 0x2f, 0x4f, 0x1d, 0x31, 0xd8, 0x98, 0x47, 0x5d, 0x20, 0xdb, 0x93, 0x09, 0x81, - 0xba, 0xe0, 0x51, 0xcf, 0xd1, 0x1d, 0x4a, 0x81, 0x7a, 0xce, 0xa3, 0x2e, 0x92, 0xbd, 0x4a, 0x55, - 0xa0, 0x2e, 0x7a, 0xd4, 0xf3, 0x64, 0x3f, 0x7e, 0x44, 0xa0, 0x9e, 0xf7, 0xa8, 0x17, 0xc8, 0x2e, - 0x7c, 0x52, 0xa0, 0x5e, 0xf0, 0xa8, 0x17, 0xc9, 0x06, 0xfc, 0xb8, 0x40, 0xbd, 0xe8, 0x51, 0x2f, - 0x91, 0x8d, 0x77, 0x5d, 0xa0, 0x5e, 0xf2, 0xa8, 0x97, 0xc9, 0x2d, 0x8b, 0xa3, 0x02, 0xf5, 0xb2, - 0x9e, 0x85, 0xa3, 0x74, 0xe6, 0xf3, 0xe4, 0x80, 0x73, 0x8c, 0x91, 0xf9, 0xa0, 0x4f, 0x3f, 0x4b, - 0x6e, 0x54, 0x0c, 0x8a, 0xf4, 0xb3, 0x3e, 0x7d, 0x81, 0x5c, 0x2f, 0xd6, 0x44, 0xfa, 0x82, 0x4f, - 0x3f, 0x97, 0x19, 0xc1, 0x81, 0x21, 0xd2, 0xcf, 0xf9, 0xf4, 0xc5, 0xcc, 0x28, 0x0e, 0x5a, 0x91, - 0xbe, 0xe8, 0xd3, 0xcf, 0x67, 0xc6, 0xa6, 0x95, 0x99, 0x61, 0x91, 0x7e, 0x3e, 0xf7, 0x3e, 0xe2, - 0x5e, 0xcb, 0x77, 0xef, 0x84, 0xe8, 0x5e, 0xcf, 0xb1, 0x13, 0xa2, 0x63, 0x3d, 0x97, 0x4e, 0x88, - 0x2e, 0xf5, 0x9c, 0x39, 0x21, 0x3a, 0xd3, 0x73, 0xe3, 0x84, 0xe8, 0x46, 0xcf, 0x81, 0x13, 0xa2, - 0x03, 0x3d, 0xd7, 0x4d, 0x88, 0xae, 0xf3, 0x9c, 0x36, 0x21, 0x3a, 0xcd, 0x73, 0xd7, 0x84, 0xe8, - 0x2e, 0xcf, 0x51, 0x19, 0xc9, 0x51, 0xbe, 0x8b, 0x32, 0x92, 0x8b, 0x7c, 0xe7, 0x64, 0x24, 0xe7, - 0xf8, 0x6e, 0xc9, 0x48, 0x6e, 0xf1, 0x1d, 0x92, 0x91, 0x1c, 0xe2, 0xbb, 0x22, 0x23, 0xb9, 0xc2, - 0x77, 0x02, 0xcb, 0x31, 0x03, 0xb5, 0x43, 0x72, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, - 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, - 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x38, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, - 0xc8, 0x31, 0x35, 0x22, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xef, 0xde, 0x09, 0xd1, - 0xbd, 0xa1, 0x39, 0xa6, 0xf6, 0xc9, 0x31, 0xb5, 0x4f, 0x8e, 0xa9, 0x7d, 0x72, 0x4c, 0xed, 0x93, - 0x63, 0x6a, 0x9f, 0x1c, 0x53, 0xfb, 0xe4, 0x98, 0xda, 0x27, 0xc7, 0xd4, 0x7e, 0x39, 0xa6, 0xf6, - 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, - 0x83, 0x39, 0xf6, 0x37, 0x2a, 0xe8, 0x34, 0xc7, 0xd6, 0xc9, 0x15, 0x19, 0xe6, 0x8a, 0xac, 0x94, - 0x69, 0x83, 0xd8, 0x75, 0x9a, 0xef, 0x92, 0xac, 0x94, 0x6b, 0x22, 0x7d, 0xc1, 0xa3, 0xf3, 0x6c, - 0x13, 0xe9, 0xe7, 0x3c, 0x3a, 0xcf, 0x37, 0x91, 0xbe, 0xe8, 0xd1, 0x79, 0xc6, 0x89, 0xf4, 0xf3, - 0x1e, 0x9d, 0xe7, 0x9c, 0x48, 0xbf, 0xe0, 0xd1, 0x79, 0xd6, 0x89, 0xf4, 0x8b, 0x1e, 0x9d, 0xe7, - 0x9d, 0x48, 0xbf, 0xe4, 0xd1, 0x79, 0xe6, 0x89, 0xf4, 0xcb, 0xfa, 0xb4, 0x9c, 0x7b, 0x9c, 0xc1, - 0x73, 0xed, 0xb4, 0x9c, 0x7d, 0x12, 0xc7, 0x59, 0x9f, 0x83, 0xe7, 0x9f, 0xc4, 0xb1, 0xe0, 0x73, - 0xf0, 0x0c, 0x94, 0x38, 0xce, 0xe5, 0x3e, 0x48, 0xdc, 0x67, 0xc9, 0xee, 0x9b, 0x94, 0xdc, 0x97, - 0x08, 0xb8, 0x6e, 0x52, 0x72, 0x5d, 0x22, 0xe0, 0xb6, 0x49, 0xc9, 0x6d, 0x89, 0x80, 0xcb, 0x26, - 0x25, 0x97, 0x25, 0x02, 0xee, 0x9a, 0x94, 0xdc, 0x95, 0x08, 0xb8, 0x6a, 0x52, 0x72, 0x55, 0x22, - 0xe0, 0xa6, 0x49, 0xc9, 0x4d, 0x89, 0x80, 0x8b, 0x26, 0x25, 0x17, 0x25, 0x02, 0xee, 0x99, 0x94, - 0xdc, 0x93, 0x08, 0xb8, 0xe6, 0x84, 0xec, 0x9a, 0x44, 0xd0, 0x2d, 0x27, 0x64, 0xb7, 0x24, 0x82, - 0x2e, 0x39, 0x21, 0xbb, 0x24, 0x11, 0x74, 0xc7, 0x09, 0xd9, 0x1d, 0x89, 0xa0, 0x2b, 0x7e, 0x9a, - 0xe0, 0x1d, 0xe1, 0x86, 0xdb, 0xe9, 0xd6, 0xdc, 0x5b, 0xea, 0x08, 0xe7, 0x85, 0xf6, 0x21, 0xbd, - 0xa0, 0xcf, 0x91, 0x86, 0x35, 0xd8, 0x71, 0x4a, 0x2b, 0xd8, 0xbc, 0xd0, 0x58, 0x04, 0x10, 0x56, - 0x38, 0x62, 0xf1, 0x96, 0x7a, 0xc3, 0x79, 0xa1, 0xcd, 0x88, 0xd6, 0xef, 0xd2, 0x5b, 0xde, 0xb1, - 0xbd, 0x98, 0xe0, 0x1d, 0x1b, 0x33, 0xff, 0x61, 0x3b, 0xb6, 0xd9, 0x68, 0x93, 0x7b, 0xc6, 0x9e, - 0x8d, 0x36, 0x76, 0xcf, 0xaa, 0x13, 0xb7, 0x83, 0x9b, 0x8d, 0x36, 0xad, 0x67, 0xd4, 0x37, 0xb7, - 0xdf, 0x62, 0x11, 0x6c, 0xa0, 0x76, 0x48, 0x04, 0x1f, 0xb6, 0xdf, 0x9a, 0x17, 0x4a, 0xc9, 0x61, - 0x23, 0x58, 0x3d, 0x74, 0x04, 0x1f, 0xb6, 0xf3, 0x9a, 0x17, 0xca, 0xcb, 0xa1, 0x23, 0xf8, 0x2d, - 0xe8, 0x87, 0x58, 0x04, 0xfb, 0xe6, 0x3f, 0x6c, 0x3f, 0x34, 0x1b, 0x6d, 0xf2, 0xd0, 0x08, 0x56, - 0x0f, 0x11, 0xc1, 0x71, 0xfa, 0xa3, 0xd9, 0x68, 0xd3, 0x86, 0x47, 0xf0, 0x2d, 0x77, 0x33, 0x9f, - 0x56, 0x60, 0x7c, 0xb5, 0x51, 0xaf, 0xb4, 0xb6, 0x51, 0xbd, 0x8e, 0xea, 0xcc, 0x8e, 0xf3, 0x42, - 0x25, 0xe8, 0xe3, 0xea, 0x97, 0x5e, 0x9e, 0xf2, 0x2d, 0x7c, 0x1e, 0x52, 0xd4, 0xa6, 0xf3, 0xf3, - 0x99, 0x1b, 0x4a, 0x44, 0x85, 0xf3, 0x58, 0xf5, 0x93, 0x1c, 0x76, 0x76, 0x3e, 0xf3, 0xcf, 0x4a, - 0xa0, 0xca, 0x79, 0xc3, 0xb9, 0x8f, 0x10, 0x0d, 0xad, 0x5b, 0xd6, 0xf0, 0x4c, 0x2c, 0x0d, 0x03, - 0xba, 0xdd, 0xd9, 0xa3, 0x5b, 0x40, 0xab, 0x2e, 0x8c, 0xad, 0x36, 0xea, 0xab, 0xe4, 0x0f, 0x5b, - 0xe3, 0xa8, 0x44, 0x79, 0xa4, 0x7a, 0x30, 0x2f, 0x84, 0x65, 0x10, 0xe1, 0x85, 0xb4, 0x58, 0x23, - 0x72, 0x0d, 0xfc, 0x58, 0x4b, 0x78, 0xec, 0x6c, 0xbf, 0xc7, 0xfa, 0x95, 0xdd, 0x7b, 0xe0, 0x6c, - 0xbf, 0x07, 0xfa, 0x39, 0xe4, 0x3d, 0xea, 0x69, 0xbe, 0x38, 0xd3, 0xdb, 0x36, 0xfa, 0x09, 0x48, - 0x2c, 0xd3, 0x7b, 0xb4, 0xc3, 0xc5, 0x61, 0xac, 0xd4, 0xb7, 0x5f, 0x9e, 0x4a, 0x6e, 0x75, 0x1b, - 0x75, 0x23, 0xb1, 0x5c, 0xd7, 0xaf, 0xc1, 0xc0, 0x3b, 0xd9, 0x9f, 0x87, 0x61, 0x86, 0x45, 0xc6, - 0x70, 0x7f, 0xdf, 0x3d, 0x22, 0xfc, 0xe0, 0x33, 0x74, 0x1f, 0x71, 0x6e, 0xab, 0x61, 0xb9, 0x67, - 0x17, 0x2e, 0x19, 0x54, 0x44, 0xee, 0xff, 0x03, 0xd0, 0x67, 0x96, 0x4d, 0x67, 0x4f, 0x5f, 0xe5, - 0x92, 0xe9, 0xa3, 0x2f, 0x7d, 0xfb, 0xe5, 0xa9, 0xc5, 0x38, 0x52, 0x1f, 0xa8, 0x9b, 0xce, 0xde, - 0x03, 0xee, 0x7e, 0x1b, 0xcd, 0x15, 0xf7, 0x5d, 0xe4, 0x70, 0xe9, 0x6d, 0xbe, 0xea, 0xb1, 0x79, - 0x65, 0x02, 0xf3, 0x4a, 0x09, 0x73, 0xba, 0x2a, 0xce, 0x69, 0xfe, 0x8d, 0xce, 0xe7, 0x69, 0xbe, - 0x48, 0x48, 0x96, 0x54, 0xa3, 0x2c, 0xa9, 0xde, 0xaa, 0x25, 0xdb, 0xbc, 0x3e, 0x4a, 0x73, 0x55, - 0x0f, 0x9a, 0xab, 0x7a, 0x2b, 0x73, 0xfd, 0x31, 0xcd, 0x56, 0x2f, 0x9f, 0xb6, 0x2c, 0x7a, 0x11, - 0xf1, 0x17, 0x6b, 0x2f, 0xe8, 0x4d, 0xed, 0x02, 0xf2, 0xc9, 0x1b, 0xcf, 0x4f, 0x29, 0xb9, 0x4f, - 0x27, 0xf8, 0xcc, 0x69, 0x22, 0xbd, 0xb1, 0x99, 0xff, 0xa2, 0xf4, 0x54, 0x6f, 0x85, 0x85, 0x9e, - 0x53, 0x60, 0xa2, 0xa7, 0x92, 0x53, 0x33, 0xbd, 0xb9, 0xe5, 0xdc, 0x3a, 0x6c, 0x39, 0x67, 0x0a, - 0x7e, 0x45, 0x81, 0xe3, 0x52, 0x79, 0xa5, 0xea, 0x9d, 0x91, 0xd4, 0xbb, 0xbd, 0xf7, 0x49, 0x84, - 0x31, 0xa0, 0x5d, 0xd0, 0xbd, 0x12, 0x20, 0x20, 0xd9, 0xf3, 0xfb, 0xa2, 0xe4, 0xf7, 0x13, 0x1e, - 0x20, 0xc4, 0x5c, 0x3c, 0x02, 0x98, 0xda, 0x36, 0x24, 0x37, 0x3b, 0x08, 0xe9, 0x59, 0x48, 0xac, - 0x75, 0x98, 0x86, 0xa3, 0x14, 0xbf, 0xd6, 0x29, 0x76, 0x4c, 0xab, 0xb6, 0x67, 0x24, 0xd6, 0x3a, - 0xfa, 0x49, 0x50, 0x0b, 0xec, 0x0f, 0xf0, 0xd3, 0x0b, 0x63, 0x94, 0xa1, 0x60, 0xd5, 0x19, 0x07, - 0xa6, 0xe9, 0x59, 0x48, 0x5e, 0x47, 0xe6, 0x0e, 0x53, 0x02, 0x28, 0x0f, 0x1e, 0x31, 0xc8, 0x38, - 0x7b, 0xe0, 0xa3, 0x90, 0xe2, 0x82, 0xf5, 0x53, 0x18, 0xb1, 0xe3, 0xb2, 0xc7, 0x32, 0x04, 0x56, - 0x87, 0xad, 0x5c, 0x84, 0xaa, 0x9f, 0x86, 0x01, 0xa3, 0xb1, 0xbb, 0xe7, 0xb2, 0x87, 0xf7, 0xb2, - 0x51, 0x72, 0xee, 0x31, 0x18, 0xf2, 0x34, 0x7a, 0x93, 0x45, 0x97, 0xe9, 0xd4, 0xf4, 0xc9, 0xe0, - 0x7a, 0xc2, 0xf7, 0x2d, 0xe9, 0x90, 0x3e, 0x0d, 0xa9, 0x0d, 0xb7, 0xe3, 0x17, 0x7d, 0xde, 0x91, - 0x7a, 0xa3, 0xb9, 0xf7, 0x29, 0x90, 0x2a, 0x23, 0xd4, 0x26, 0x06, 0xbf, 0x07, 0x92, 0x65, 0xfb, - 0x29, 0x8b, 0x29, 0x38, 0xce, 0x2c, 0x8a, 0xc9, 0xcc, 0xa6, 0x84, 0xac, 0xdf, 0x13, 0xb4, 0xfb, - 0x31, 0xcf, 0xee, 0x01, 0x3e, 0x62, 0xfb, 0x9c, 0x60, 0x7b, 0xe6, 0x40, 0xcc, 0xd4, 0x63, 0xff, - 0x8b, 0x90, 0x0e, 0x3c, 0x45, 0x9f, 0x61, 0x6a, 0x24, 0x64, 0x60, 0xd0, 0x56, 0x98, 0x23, 0x87, - 0x60, 0x44, 0x78, 0x30, 0x86, 0x06, 0x4c, 0xdc, 0x07, 0x4a, 0xcc, 0x3c, 0x2b, 0x9a, 0x39, 0x9c, - 0x95, 0x99, 0x7a, 0x9e, 0xda, 0x88, 0x98, 0xfb, 0x14, 0x0d, 0xce, 0xfe, 0x4e, 0xc4, 0x9f, 0x73, - 0x03, 0xa0, 0xae, 0x36, 0x9a, 0xb9, 0x07, 0x01, 0x68, 0xca, 0x57, 0xac, 0x6e, 0x4b, 0xca, 0xba, - 0x51, 0x6e, 0xe0, 0xcd, 0x3d, 0xb4, 0x89, 0x1c, 0xc2, 0x22, 0xf6, 0x53, 0xb8, 0xc0, 0x00, 0x4d, - 0x31, 0x82, 0xbf, 0x2f, 0x12, 0x1f, 0xda, 0x89, 0x61, 0xd6, 0x0c, 0x65, 0x7d, 0x0c, 0xb9, 0x05, - 0xcb, 0x76, 0xf7, 0x50, 0x47, 0x42, 0x2c, 0xe8, 0xe7, 0x84, 0x84, 0x1d, 0x5d, 0xb8, 0xd3, 0x43, - 0xf4, 0x05, 0x9d, 0xcb, 0x7d, 0x89, 0x28, 0x88, 0x5b, 0x81, 0x9e, 0x09, 0xaa, 0x31, 0x26, 0xa8, - 0x5f, 0x10, 0xfa, 0xb7, 0x03, 0xd4, 0x94, 0x5e, 0x2d, 0x2f, 0x0b, 0xef, 0x39, 0x07, 0x2b, 0x2b, - 0xbe, 0x63, 0x72, 0x9b, 0x72, 0x95, 0xef, 0x8b, 0x54, 0xb9, 0x4f, 0x77, 0x7b, 0x58, 0x9b, 0xaa, - 0x71, 0x6d, 0xfa, 0x75, 0xaf, 0xe3, 0xa0, 0x3f, 0x65, 0x40, 0x7e, 0x39, 0x43, 0xbf, 0x3f, 0xd2, - 0xf7, 0x79, 0xa5, 0xe4, 0xa9, 0xba, 0x18, 0xd7, 0xfd, 0xf9, 0x44, 0xb1, 0xe8, 0xa9, 0x7b, 0xf1, - 0x10, 0x21, 0x90, 0x4f, 0x94, 0x4a, 0x5e, 0xd9, 0x4e, 0x7d, 0xf0, 0xf9, 0x29, 0xe5, 0x85, 0xe7, - 0xa7, 0x8e, 0xe4, 0xbe, 0xa0, 0xc0, 0x38, 0xe3, 0x0c, 0x04, 0xee, 0x03, 0x92, 0xf2, 0xb7, 0xf1, - 0x9a, 0x11, 0x66, 0x81, 0x9f, 0x59, 0xf0, 0x7e, 0x53, 0x81, 0x4c, 0x8f, 0xae, 0xdc, 0xde, 0xf3, - 0xb1, 0x54, 0xce, 0x2b, 0x95, 0x9f, 0xbf, 0xcd, 0x1f, 0x83, 0x81, 0xcd, 0x46, 0x0b, 0x75, 0xf0, - 0x4a, 0x80, 0x3f, 0x50, 0x95, 0xf9, 0x61, 0x0e, 0x1d, 0xe2, 0x34, 0xaa, 0x9c, 0x40, 0x5b, 0xd0, - 0x33, 0x90, 0x2c, 0x9b, 0xae, 0x49, 0x34, 0x18, 0xf6, 0xea, 0xab, 0xe9, 0x9a, 0xb9, 0x73, 0x30, - 0xbc, 0xb2, 0x4f, 0xae, 0xca, 0xd4, 0xc9, 0x35, 0x10, 0xb1, 0xfb, 0xe3, 0xfd, 0xea, 0xd9, 0xd9, - 0x81, 0x54, 0x5d, 0xbb, 0xa1, 0xe4, 0x93, 0x44, 0x9f, 0x27, 0x61, 0x74, 0x0d, 0xab, 0x4d, 0x70, - 0x02, 0x8c, 0x3e, 0x5d, 0xf5, 0x26, 0x2f, 0x35, 0x65, 0xaa, 0xdf, 0x94, 0x4d, 0x83, 0xb2, 0x22, - 0xb6, 0x4e, 0x41, 0x3d, 0x0c, 0x65, 0x65, 0x36, 0x99, 0x1a, 0xd5, 0xc6, 0x67, 0x93, 0x29, 0xd0, - 0x46, 0xd8, 0x73, 0xff, 0x41, 0x05, 0x8d, 0xb6, 0x3a, 0x65, 0xb4, 0xd3, 0xb0, 0x1a, 0x6e, 0x6f, - 0xbf, 0xea, 0x69, 0xac, 0x3f, 0x0c, 0x43, 0xd8, 0xa4, 0x57, 0xd9, 0x0f, 0x50, 0x61, 0xd3, 0x9f, - 0x64, 0x2d, 0x8a, 0x24, 0x82, 0x0d, 0x90, 0xd0, 0xf1, 0x31, 0xfa, 0x55, 0x50, 0x57, 0x57, 0x57, - 0xd8, 0xe2, 0xb6, 0x78, 0x20, 0x94, 0xdd, 0xb4, 0x61, 0xdf, 0xd8, 0x98, 0xb3, 0x6b, 0x60, 0x01, - 0xfa, 0x22, 0x24, 0x56, 0x57, 0x58, 0xc3, 0x7b, 0x2a, 0x8e, 0x18, 0x23, 0xb1, 0xba, 0x32, 0xf9, - 0xb7, 0x0a, 0x8c, 0x08, 0xa3, 0x7a, 0x0e, 0x86, 0xe9, 0x40, 0x60, 0xba, 0x83, 0x86, 0x30, 0xc6, - 0x75, 0x4e, 0xdc, 0xa2, 0xce, 0x93, 0x05, 0x18, 0x93, 0xc6, 0xf5, 0x39, 0xd0, 0x83, 0x43, 0x4c, - 0x09, 0xfa, 0xe3, 0x3d, 0x21, 0x94, 0xdc, 0x5d, 0x00, 0xbe, 0x5d, 0xbd, 0xdf, 0x9c, 0x59, 0xad, - 0x6c, 0x6c, 0x56, 0xca, 0x9a, 0x92, 0xfb, 0xaa, 0x02, 0x69, 0xd6, 0xb6, 0xd6, 0xec, 0x36, 0xd2, - 0x8b, 0xa0, 0x14, 0x58, 0x3c, 0xbc, 0x31, 0xbd, 0x95, 0x82, 0x7e, 0x06, 0x94, 0x62, 0x7c, 0x57, - 0x2b, 0x45, 0x7d, 0x01, 0x94, 0x12, 0x73, 0x70, 0x3c, 0xcf, 0x28, 0xa5, 0xdc, 0x0f, 0x55, 0x38, - 0x16, 0x6c, 0xa3, 0x79, 0x3d, 0x39, 0x29, 0xbe, 0x37, 0xe5, 0x87, 0xce, 0x2e, 0x9c, 0x5b, 0x9c, - 0xc3, 0xff, 0x78, 0x21, 0x79, 0x52, 0x7c, 0x85, 0xea, 0x65, 0xe9, 0xb9, 0x26, 0x92, 0x4f, 0x06, - 0xa8, 0x3d, 0xd7, 0x44, 0x04, 0x6a, 0xcf, 0x35, 0x11, 0x81, 0xda, 0x73, 0x4d, 0x44, 0xa0, 0xf6, - 0x1c, 0x05, 0x08, 0xd4, 0x9e, 0x6b, 0x22, 0x02, 0xb5, 0xe7, 0x9a, 0x88, 0x40, 0xed, 0xbd, 0x26, - 0xc2, 0xc8, 0x7d, 0xaf, 0x89, 0x88, 0xf4, 0xde, 0x6b, 0x22, 0x22, 0xbd, 0xf7, 0x9a, 0x48, 0x3e, - 0xe9, 0x76, 0xba, 0xa8, 0xff, 0xa1, 0x83, 0x88, 0x3f, 0xe8, 0x1d, 0xd0, 0x2f, 0xc0, 0x6b, 0x30, - 0x46, 0xf7, 0x23, 0x4a, 0xb6, 0xe5, 0x9a, 0x0d, 0x0b, 0x75, 0xf4, 0xb7, 0xc3, 0x30, 0x1d, 0xa2, - 0x6f, 0x39, 0x61, 0x6f, 0x81, 0x94, 0xce, 0xca, 0xad, 0xc0, 0x9d, 0xfb, 0x69, 0x12, 0x26, 0xe8, - 0xc0, 0xaa, 0xd9, 0x42, 0xc2, 0x25, 0xa3, 0xd3, 0xd2, 0x91, 0xd2, 0x28, 0x86, 0xdf, 0x7c, 0x79, - 0x8a, 0x8e, 0x16, 0xbc, 0x60, 0x3a, 0x2d, 0x1d, 0x2e, 0x89, 0x7c, 0xfe, 0xfa, 0x73, 0x5a, 0xba, - 0x78, 0x24, 0xf2, 0x79, 0xcb, 0x8d, 0xc7, 0xc7, 0xaf, 0x20, 0x89, 0x7c, 0x65, 0x2f, 0xca, 0x4e, - 0x4b, 0x97, 0x91, 0x44, 0xbe, 0x8a, 0x17, 0x6f, 0xa7, 0xa5, 0xa3, 0x27, 0x91, 0xef, 0xaa, 0x17, - 0x79, 0xa7, 0xa5, 0x43, 0x28, 0x91, 0x6f, 0xc9, 0x8b, 0xc1, 0xd3, 0xd2, 0x55, 0x25, 0x91, 0xef, - 0x11, 0x2f, 0x1a, 0x4f, 0x4b, 0x97, 0x96, 0x44, 0xbe, 0x65, 0x2f, 0x2e, 0x67, 0xe4, 0xeb, 0x4b, - 0x22, 0xe3, 0x35, 0x3f, 0x42, 0x67, 0xe4, 0x8b, 0x4c, 0x22, 0xe7, 0xff, 0xf3, 0x63, 0x75, 0x46, - 0xbe, 0xd2, 0x24, 0x72, 0x5e, 0xf7, 0xa3, 0x76, 0x46, 0x3e, 0x2a, 0x13, 0x39, 0x57, 0xfc, 0xf8, - 0x9d, 0x91, 0x0f, 0xcd, 0x44, 0xce, 0x55, 0x3f, 0x92, 0x67, 0xe4, 0xe3, 0x33, 0x91, 0x73, 0xcd, - 0xdf, 0x43, 0xff, 0x86, 0x14, 0x7e, 0x81, 0x4b, 0x50, 0x39, 0x29, 0xfc, 0x20, 0x24, 0xf4, 0x72, - 0x52, 0xe8, 0x41, 0x48, 0xd8, 0xe5, 0xa4, 0xb0, 0x83, 0x90, 0x90, 0xcb, 0x49, 0x21, 0x07, 0x21, - 0xe1, 0x96, 0x93, 0xc2, 0x0d, 0x42, 0x42, 0x2d, 0x27, 0x85, 0x1a, 0x84, 0x84, 0x59, 0x4e, 0x0a, - 0x33, 0x08, 0x09, 0xb1, 0x9c, 0x14, 0x62, 0x10, 0x12, 0x5e, 0x39, 0x29, 0xbc, 0x20, 0x24, 0xb4, - 0x4e, 0xc9, 0xa1, 0x05, 0x61, 0x61, 0x75, 0x4a, 0x0e, 0x2b, 0x08, 0x0b, 0xa9, 0xbb, 0xe5, 0x90, - 0x1a, 0xba, 0xf9, 0xf2, 0xd4, 0x00, 0x1e, 0x0a, 0x44, 0xd3, 0x29, 0x39, 0x9a, 0x20, 0x2c, 0x92, - 0x4e, 0xc9, 0x91, 0x04, 0x61, 0x51, 0x74, 0x4a, 0x8e, 0x22, 0x08, 0x8b, 0xa0, 0x17, 0xe5, 0x08, - 0xf2, 0xaf, 0xf8, 0xe4, 0xa4, 0x13, 0xc5, 0xa8, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, - 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, - 0x41, 0x6a, 0x9c, 0x08, 0x52, 0x63, 0x45, 0x90, 0xda, 0x2f, 0x82, 0x4e, 0xc9, 0x17, 0x1e, 0x20, - 0xac, 0x20, 0x9d, 0x92, 0x4f, 0x3e, 0xa3, 0x43, 0x48, 0x8d, 0x15, 0x42, 0x6a, 0xbf, 0x10, 0xfa, - 0x86, 0x0a, 0xc7, 0x84, 0x10, 0x62, 0xc7, 0x43, 0x6f, 0x56, 0x05, 0xba, 0x10, 0xe3, 0x7e, 0x45, - 0x58, 0x4c, 0x5d, 0x88, 0x71, 0x46, 0x7d, 0x50, 0x9c, 0xf5, 0x56, 0xa1, 0x4a, 0x8c, 0x2a, 0x74, - 0xd5, 0x8b, 0xa1, 0x0b, 0x31, 0xee, 0x5d, 0xf4, 0xc6, 0xde, 0xa5, 0x83, 0x8a, 0xc0, 0x23, 0xb1, - 0x8a, 0xc0, 0x72, 0xac, 0x22, 0x70, 0xcd, 0xf7, 0xe0, 0x07, 0x12, 0x70, 0xdc, 0xf7, 0x20, 0xfd, - 0x44, 0x7e, 0x48, 0x28, 0x17, 0x38, 0xa1, 0xd2, 0xf9, 0xa9, 0x4d, 0xc0, 0x8d, 0x89, 0xe5, 0xba, - 0xbe, 0x2e, 0x9e, 0x55, 0xe5, 0x0f, 0x7b, 0x7e, 0x13, 0xf0, 0x38, 0xdb, 0x0b, 0x3d, 0x05, 0xea, - 0x72, 0xdd, 0x21, 0xd5, 0x22, 0xec, 0xb1, 0x25, 0x03, 0x93, 0x75, 0x03, 0x06, 0x09, 0xbb, 0x43, - 0xdc, 0x7b, 0x2b, 0x0f, 0x2e, 0x1b, 0x4c, 0x52, 0xee, 0x45, 0x05, 0xa6, 0x85, 0x50, 0x7e, 0x73, - 0x4e, 0x0c, 0xae, 0xc4, 0x3a, 0x31, 0x10, 0x12, 0xc4, 0x3f, 0x3d, 0xb8, 0xb7, 0xf7, 0xa0, 0x3a, - 0x98, 0x25, 0xf2, 0x49, 0xc2, 0x2f, 0xc3, 0xa8, 0x3f, 0x03, 0xf2, 0xca, 0x76, 0x3e, 0x7a, 0x33, - 0x33, 0x2c, 0x35, 0xcf, 0x4b, 0x9b, 0x68, 0x07, 0xc2, 0xbc, 0x6c, 0xcd, 0xe5, 0x61, 0x6c, 0x55, - 0xfc, 0x9b, 0x9d, 0xa8, 0xbd, 0x88, 0x14, 0x6e, 0xcd, 0x6f, 0x7c, 0x66, 0xea, 0x48, 0xee, 0x7e, - 0x18, 0x0e, 0xfe, 0x59, 0x8e, 0x04, 0x1c, 0xe2, 0xc0, 0x7c, 0xf2, 0x25, 0xcc, 0xfd, 0xfb, 0x0a, - 0xdc, 0x16, 0x64, 0x7f, 0x57, 0xc3, 0xdd, 0x5b, 0xb6, 0x70, 0x4f, 0xff, 0x20, 0xa4, 0x10, 0x73, - 0x1c, 0xfb, 0x61, 0x13, 0xf6, 0x1a, 0x19, 0xca, 0x3e, 0x47, 0xfe, 0x35, 0x3c, 0x88, 0xb4, 0x09, - 0xc2, 0x1f, 0xbb, 0x30, 0x79, 0x0f, 0x0c, 0x50, 0xf9, 0xa2, 0x5e, 0x23, 0x92, 0x5e, 0x9f, 0x0b, - 0xd1, 0x8b, 0xc4, 0x91, 0x7e, 0x4d, 0xd0, 0x2b, 0xf0, 0xb6, 0x1a, 0xca, 0x3e, 0xc7, 0x83, 0xaf, - 0x98, 0xc2, 0xfd, 0x1f, 0x89, 0xa8, 0x68, 0x25, 0x67, 0x20, 0x55, 0x91, 0x79, 0xc2, 0xf5, 0x2c, - 0x43, 0x72, 0xd5, 0xae, 0x93, 0x9f, 0x5c, 0x21, 0xbf, 0x1a, 0xcb, 0x8c, 0xcc, 0x7e, 0x42, 0xf6, - 0x34, 0xa4, 0x4a, 0x7b, 0x8d, 0x66, 0xbd, 0x83, 0x2c, 0x76, 0x64, 0xcf, 0x76, 0xd0, 0x31, 0xc6, - 0xf0, 0x68, 0xb9, 0x12, 0x8c, 0xaf, 0xda, 0x56, 0x71, 0xdf, 0x0d, 0xd6, 0x8d, 0x39, 0x29, 0x45, - 0xd8, 0x91, 0x0f, 0xf9, 0x43, 0x0f, 0xcc, 0x50, 0x1c, 0xf8, 0xf6, 0xcb, 0x53, 0xca, 0xa6, 0xb7, - 0x7d, 0xbe, 0x02, 0xb7, 0xb3, 0xf4, 0xe9, 0x11, 0xb5, 0x10, 0x25, 0x6a, 0x88, 0x1d, 0x53, 0x07, - 0xc4, 0x2d, 0x63, 0x71, 0x56, 0xa8, 0xb8, 0x37, 0xa6, 0x19, 0x6e, 0x8a, 0x0e, 0xd4, 0x4c, 0x3d, - 0x94, 0x66, 0xa1, 0xe2, 0xe6, 0xa2, 0xc4, 0x49, 0x9a, 0xdd, 0x0d, 0x43, 0x1e, 0x2d, 0x10, 0x0d, - 0xc1, 0x4c, 0x59, 0x98, 0xcd, 0x41, 0x3a, 0x90, 0xb0, 0xfa, 0x00, 0x28, 0x05, 0xed, 0x08, 0xfe, - 0xaf, 0xa8, 0x29, 0xf8, 0xbf, 0x92, 0x96, 0x98, 0xbd, 0x07, 0xc6, 0xa4, 0xed, 0x4b, 0x4c, 0x29, - 0x6b, 0x80, 0xff, 0xab, 0x68, 0xe9, 0xc9, 0xe4, 0x07, 0xff, 0x30, 0x7b, 0x64, 0xf6, 0x0a, 0xe8, - 0xbd, 0x1b, 0x9d, 0xfa, 0x20, 0x24, 0x0a, 0x58, 0xe4, 0xed, 0x90, 0x28, 0x16, 0x35, 0x65, 0x72, - 0xec, 0xd7, 0x3f, 0x35, 0x9d, 0x2e, 0x92, 0xbf, 0x39, 0x7e, 0x0c, 0xb9, 0xc5, 0x22, 0x03, 0x3f, - 0x04, 0xb7, 0x85, 0x6e, 0x94, 0x62, 0x7c, 0xa9, 0x44, 0xf1, 0xe5, 0x72, 0x0f, 0xbe, 0x5c, 0x26, - 0x78, 0x25, 0xcf, 0x0f, 0x9c, 0x0b, 0x7a, 0xc8, 0x26, 0x63, 0xa6, 0x1e, 0x38, 0xe0, 0x2e, 0xe4, - 0x1f, 0x62, 0xbc, 0xc5, 0x50, 0x5e, 0x14, 0x71, 0x60, 0x5d, 0xcc, 0x97, 0x18, 0xbe, 0x14, 0x8a, - 0xdf, 0x91, 0x4e, 0x55, 0xc5, 0x15, 0x82, 0x09, 0x29, 0x79, 0x0a, 0x97, 0x43, 0x85, 0xec, 0x05, - 0xee, 0xba, 0x97, 0x3d, 0x85, 0x2b, 0xa1, 0xbc, 0x8d, 0x88, 0x3b, 0x5f, 0x95, 0xfc, 0x19, 0xb6, - 0xc8, 0x17, 0xce, 0xea, 0xb7, 0xf1, 0x1c, 0x15, 0x2a, 0x30, 0x33, 0x10, 0xe7, 0xca, 0x97, 0x18, - 0xa0, 0xd8, 0x17, 0xd0, 0xdf, 0x4a, 0x1c, 0x99, 0x7f, 0x84, 0x09, 0x29, 0xf5, 0x15, 0x12, 0x61, - 0x2a, 0x0e, 0x2f, 0x6e, 0xde, 0x78, 0x25, 0x7b, 0xe4, 0xa5, 0x57, 0xb2, 0x47, 0xfe, 0xe5, 0x95, - 0xec, 0x91, 0xef, 0xbc, 0x92, 0x55, 0xbe, 0xff, 0x4a, 0x56, 0xf9, 0xc1, 0x2b, 0x59, 0xe5, 0x27, - 0xaf, 0x64, 0x95, 0x67, 0x6f, 0x66, 0x95, 0x17, 0x6e, 0x66, 0x95, 0x2f, 0xdd, 0xcc, 0x2a, 0x5f, - 0xbb, 0x99, 0x55, 0x5e, 0xbc, 0x99, 0x55, 0x6e, 0xdc, 0xcc, 0x1e, 0x79, 0xe9, 0x66, 0xf6, 0xc8, - 0x77, 0x6e, 0x66, 0x95, 0xef, 0xdf, 0xcc, 0x1e, 0xf9, 0xc1, 0xcd, 0xac, 0xf2, 0x93, 0x9b, 0x59, - 0xe5, 0xd9, 0xef, 0x66, 0x95, 0xe7, 0xbf, 0x9b, 0x3d, 0xf2, 0xc2, 0x77, 0xb3, 0xca, 0xff, 0x05, - 0x00, 0x00, 0xff, 0xff, 0xa2, 0xa4, 0x55, 0x3b, 0xc9, 0x63, 0x00, 0x00, + // 6509 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0x6b, 0x6c, 0x1c, 0xd7, + 0x75, 0xe6, 0xec, 0x2c, 0xa9, 0xe5, 0xe1, 0x6b, 0x38, 0x94, 0xa9, 0x35, 0x2d, 0x93, 0xd4, 0x5a, + 0x96, 0x69, 0xc6, 0xa6, 0x28, 0x8a, 0xd4, 0x63, 0x15, 0xdb, 0xd8, 0x97, 0x64, 0x2a, 0xe4, 0x92, + 0x19, 0x92, 0xb1, 0x95, 0x16, 0x58, 0x8c, 0x76, 0x2f, 0xc9, 0xb5, 0x77, 0x67, 0x36, 0x3b, 0x43, + 0xdb, 0xf4, 0x8f, 0xc2, 0x4d, 0xda, 0x34, 0x69, 0xd1, 0x67, 0x5a, 0x34, 0x49, 0x13, 0xc7, 0x49, + 0x91, 0xc6, 0x49, 0xfa, 0x48, 0xda, 0x34, 0x0d, 0x82, 0xa2, 0xf1, 0x9f, 0xb4, 0x2a, 0x50, 0x14, + 0x4e, 0x7f, 0x15, 0x41, 0x61, 0x44, 0x72, 0x80, 0xa6, 0xad, 0xdb, 0x26, 0x8d, 0x81, 0x04, 0x70, + 0x7e, 0x14, 0xf7, 0x35, 0x33, 0xf7, 0xee, 0x2c, 0x67, 0x68, 0xd9, 0x49, 0xfe, 0x48, 0xbb, 0xf7, + 0x9c, 0xef, 0xcc, 0xb9, 0xe7, 0x75, 0xcf, 0xdc, 0x7b, 0xb9, 0xf0, 0xea, 0x12, 0x4c, 0xef, 0xd8, + 0xf6, 0x4e, 0x03, 0x9d, 0x6e, 0xb5, 0x6d, 0xd7, 0xbe, 0xbe, 0xb7, 0x7d, 0xba, 0x86, 0x9c, 0x6a, + 0xbb, 0xde, 0x72, 0xed, 0xf6, 0x1c, 0x19, 0xd3, 0x47, 0x28, 0xc7, 0x1c, 0xe7, 0xc8, 0xac, 0xc2, + 0xe8, 0xe5, 0x7a, 0x03, 0x15, 0x3d, 0xc6, 0x0d, 0xe4, 0xea, 0x17, 0x20, 0xb9, 0x5d, 0x6f, 0xa0, + 0xb4, 0x32, 0xad, 0xce, 0x0c, 0x2c, 0x9c, 0x9c, 0x93, 0x40, 0x73, 0x22, 0x62, 0x1d, 0x0f, 0x1b, + 0x04, 0x91, 0xf9, 0x6e, 0x12, 0xc6, 0x42, 0xa8, 0xba, 0x0e, 0x49, 0xcb, 0x6c, 0x62, 0x89, 0xca, + 0x4c, 0xbf, 0x41, 0x3e, 0xeb, 0x69, 0x38, 0xd2, 0x32, 0xab, 0x4f, 0x9a, 0x3b, 0x28, 0x9d, 0x20, + 0xc3, 0xfc, 0xab, 0x3e, 0x09, 0x50, 0x43, 0x2d, 0x64, 0xd5, 0x90, 0x55, 0xdd, 0x4f, 0xab, 0xd3, + 0xea, 0x4c, 0xbf, 0x11, 0x18, 0xd1, 0xdf, 0x01, 0xa3, 0xad, 0xbd, 0xeb, 0x8d, 0x7a, 0xb5, 0x12, + 0x60, 0x83, 0x69, 0x75, 0xa6, 0xd7, 0xd0, 0x28, 0xa1, 0xe8, 0x33, 0xdf, 0x07, 0x23, 0x4f, 0x23, + 0xf3, 0xc9, 0x20, 0xeb, 0x00, 0x61, 0x1d, 0xc6, 0xc3, 0x01, 0xc6, 0x02, 0x0c, 0x36, 0x91, 0xe3, + 0x98, 0x3b, 0xa8, 0xe2, 0xee, 0xb7, 0x50, 0x3a, 0x49, 0x66, 0x3f, 0xdd, 0x31, 0x7b, 0x79, 0xe6, + 0x03, 0x0c, 0xb5, 0xb9, 0xdf, 0x42, 0x7a, 0x0e, 0xfa, 0x91, 0xb5, 0xd7, 0xa4, 0x12, 0x7a, 0xbb, + 0xd8, 0xaf, 0x64, 0xed, 0x35, 0x65, 0x29, 0x29, 0x0c, 0x63, 0x22, 0x8e, 0x38, 0xa8, 0xfd, 0x54, + 0xbd, 0x8a, 0xd2, 0x7d, 0x44, 0xc0, 0x7d, 0x1d, 0x02, 0x36, 0x28, 0x5d, 0x96, 0xc1, 0x71, 0x7a, + 0x01, 0xfa, 0xd1, 0x33, 0x2e, 0xb2, 0x9c, 0xba, 0x6d, 0xa5, 0x8f, 0x10, 0x21, 0xf7, 0x86, 0x78, + 0x11, 0x35, 0x6a, 0xb2, 0x08, 0x1f, 0xa7, 0x9f, 0x83, 0x23, 0x76, 0xcb, 0xad, 0xdb, 0x96, 0x93, + 0x4e, 0x4d, 0x2b, 0x33, 0x03, 0x0b, 0xc7, 0x43, 0x03, 0x61, 0x8d, 0xf2, 0x18, 0x9c, 0x59, 0x5f, + 0x06, 0xcd, 0xb1, 0xf7, 0xda, 0x55, 0x54, 0xa9, 0xda, 0x35, 0x54, 0xa9, 0x5b, 0xdb, 0x76, 0xba, + 0x9f, 0x08, 0x98, 0xea, 0x9c, 0x08, 0x61, 0x2c, 0xd8, 0x35, 0xb4, 0x6c, 0x6d, 0xdb, 0xc6, 0xb0, + 0x23, 0x7c, 0xd7, 0xc7, 0xa1, 0xcf, 0xd9, 0xb7, 0x5c, 0xf3, 0x99, 0xf4, 0x20, 0x89, 0x10, 0xf6, + 0x2d, 0xf3, 0xa3, 0x5e, 0x18, 0x89, 0x13, 0x62, 0x97, 0xa0, 0x77, 0x1b, 0xcf, 0x32, 0x9d, 0x38, + 0x8c, 0x0d, 0x28, 0x46, 0x34, 0x62, 0xdf, 0x9b, 0x34, 0x62, 0x0e, 0x06, 0x2c, 0xe4, 0xb8, 0xa8, + 0x46, 0x23, 0x42, 0x8d, 0x19, 0x53, 0x40, 0x41, 0x9d, 0x21, 0x95, 0x7c, 0x53, 0x21, 0xf5, 0x38, + 0x8c, 0x78, 0x2a, 0x55, 0xda, 0xa6, 0xb5, 0xc3, 0x63, 0xf3, 0x74, 0x94, 0x26, 0x73, 0x25, 0x8e, + 0x33, 0x30, 0xcc, 0x18, 0x46, 0xc2, 0x77, 0xbd, 0x08, 0x60, 0x5b, 0xc8, 0xde, 0xae, 0xd4, 0x50, + 0xb5, 0x91, 0x4e, 0x75, 0xb1, 0xd2, 0x1a, 0x66, 0xe9, 0xb0, 0x92, 0x4d, 0x47, 0xab, 0x0d, 0xfd, + 0xa2, 0x1f, 0x6a, 0x47, 0xba, 0x44, 0xca, 0x2a, 0x4d, 0xb2, 0x8e, 0x68, 0xdb, 0x82, 0xe1, 0x36, + 0xc2, 0x71, 0x8f, 0x6a, 0x6c, 0x66, 0xfd, 0x44, 0x89, 0xb9, 0xc8, 0x99, 0x19, 0x0c, 0x46, 0x27, + 0x36, 0xd4, 0x0e, 0x7e, 0xd5, 0xef, 0x01, 0x6f, 0xa0, 0x42, 0xc2, 0x0a, 0x48, 0x15, 0x1a, 0xe4, + 0x83, 0x65, 0xb3, 0x89, 0x26, 0x2e, 0xc0, 0xb0, 0x68, 0x1e, 0xfd, 0x28, 0xf4, 0x3a, 0xae, 0xd9, + 0x76, 0x49, 0x14, 0xf6, 0x1a, 0xf4, 0x8b, 0xae, 0x81, 0x8a, 0xac, 0x1a, 0xa9, 0x72, 0xbd, 0x06, + 0xfe, 0x38, 0x71, 0x1e, 0x86, 0x84, 0xc7, 0xc7, 0x05, 0x66, 0x3e, 0xda, 0x07, 0x47, 0xc3, 0x62, + 0x2e, 0x34, 0xfc, 0xc7, 0xa1, 0xcf, 0xda, 0x6b, 0x5e, 0x47, 0xed, 0xb4, 0x4a, 0x24, 0xb0, 0x6f, + 0x7a, 0x0e, 0x7a, 0x1b, 0xe6, 0x75, 0xd4, 0x48, 0x27, 0xa7, 0x95, 0x99, 0xe1, 0x85, 0x77, 0xc4, + 0x8a, 0xea, 0xb9, 0x15, 0x0c, 0x31, 0x28, 0x52, 0x7f, 0x18, 0x92, 0xac, 0xc4, 0x61, 0x09, 0xb3, + 0xf1, 0x24, 0xe0, 0x58, 0x34, 0x08, 0x4e, 0xbf, 0x0b, 0xfa, 0xf1, 0xff, 0xd4, 0xb6, 0x7d, 0x44, + 0xe7, 0x14, 0x1e, 0xc0, 0x76, 0xd5, 0x27, 0x20, 0x45, 0xc2, 0xac, 0x86, 0xf8, 0xd2, 0xe0, 0x7d, + 0xc7, 0x8e, 0xa9, 0xa1, 0x6d, 0x73, 0xaf, 0xe1, 0x56, 0x9e, 0x32, 0x1b, 0x7b, 0x88, 0x04, 0x4c, + 0xbf, 0x31, 0xc8, 0x06, 0xdf, 0x83, 0xc7, 0xf4, 0x29, 0x18, 0xa0, 0x51, 0x59, 0xb7, 0x6a, 0xe8, + 0x19, 0x52, 0x7d, 0x7a, 0x0d, 0x1a, 0xa8, 0xcb, 0x78, 0x04, 0x3f, 0xfe, 0x09, 0xc7, 0xb6, 0xb8, + 0x6b, 0xc9, 0x23, 0xf0, 0x00, 0x79, 0xfc, 0x79, 0xb9, 0xf0, 0xdd, 0x1d, 0x3e, 0x3d, 0x39, 0x16, + 0x33, 0x5f, 0x4d, 0x40, 0x92, 0xe4, 0xdb, 0x08, 0x0c, 0x6c, 0x5e, 0x5b, 0x2f, 0x55, 0x8a, 0x6b, + 0x5b, 0xf9, 0x95, 0x92, 0xa6, 0xe8, 0xc3, 0x00, 0x64, 0xe0, 0xf2, 0xca, 0x5a, 0x6e, 0x53, 0x4b, + 0x78, 0xdf, 0x97, 0xcb, 0x9b, 0xe7, 0x16, 0x35, 0xd5, 0x03, 0x6c, 0xd1, 0x81, 0x64, 0x90, 0xe1, + 0xec, 0x82, 0xd6, 0xab, 0x6b, 0x30, 0x48, 0x05, 0x2c, 0x3f, 0x5e, 0x2a, 0x9e, 0x5b, 0xd4, 0xfa, + 0xc4, 0x91, 0xb3, 0x0b, 0xda, 0x11, 0x7d, 0x08, 0xfa, 0xc9, 0x48, 0x7e, 0x6d, 0x6d, 0x45, 0x4b, + 0x79, 0x32, 0x37, 0x36, 0x8d, 0xe5, 0xf2, 0x15, 0xad, 0xdf, 0x93, 0x79, 0xc5, 0x58, 0xdb, 0x5a, + 0xd7, 0xc0, 0x93, 0xb0, 0x5a, 0xda, 0xd8, 0xc8, 0x5d, 0x29, 0x69, 0x03, 0x1e, 0x47, 0xfe, 0xda, + 0x66, 0x69, 0x43, 0x1b, 0x14, 0xd4, 0x3a, 0xbb, 0xa0, 0x0d, 0x79, 0x8f, 0x28, 0x95, 0xb7, 0x56, + 0xb5, 0x61, 0x7d, 0x14, 0x86, 0xe8, 0x23, 0xb8, 0x12, 0x23, 0xd2, 0xd0, 0xb9, 0x45, 0x4d, 0xf3, + 0x15, 0xa1, 0x52, 0x46, 0x85, 0x81, 0x73, 0x8b, 0x9a, 0x9e, 0x29, 0x40, 0x2f, 0x89, 0x2e, 0x5d, + 0x87, 0xe1, 0x95, 0x5c, 0xbe, 0xb4, 0x52, 0x59, 0x5b, 0xdf, 0x5c, 0x5e, 0x2b, 0xe7, 0x56, 0x34, + 0xc5, 0x1f, 0x33, 0x4a, 0xef, 0xde, 0x5a, 0x36, 0x4a, 0x45, 0x2d, 0x11, 0x1c, 0x5b, 0x2f, 0xe5, + 0x36, 0x4b, 0x45, 0x4d, 0xcd, 0x54, 0xe1, 0x68, 0x58, 0x9d, 0x09, 0xcd, 0x8c, 0x80, 0x8b, 0x13, + 0x5d, 0x5c, 0x4c, 0x64, 0x75, 0xb8, 0xf8, 0x33, 0x0a, 0x8c, 0x85, 0xd4, 0xda, 0xd0, 0x87, 0x3c, + 0x02, 0xbd, 0x34, 0x44, 0xe9, 0xea, 0x73, 0x7f, 0x68, 0xd1, 0x26, 0x01, 0xdb, 0xb1, 0x02, 0x11, + 0x5c, 0x70, 0x05, 0x56, 0xbb, 0xac, 0xc0, 0x58, 0x44, 0x87, 0x92, 0x1f, 0x50, 0x20, 0xdd, 0x4d, + 0x76, 0x44, 0xa1, 0x48, 0x08, 0x85, 0xe2, 0x92, 0xac, 0xc0, 0x89, 0xee, 0x73, 0xe8, 0xd0, 0xe2, + 0x73, 0x0a, 0x8c, 0x87, 0x37, 0x2a, 0xa1, 0x3a, 0x3c, 0x0c, 0x7d, 0x4d, 0xe4, 0xee, 0xda, 0x7c, + 0xb1, 0x3e, 0x15, 0xb2, 0x04, 0x60, 0xb2, 0x6c, 0x2b, 0x86, 0x0a, 0xae, 0x21, 0x6a, 0xb7, 0x6e, + 0x83, 0x6a, 0xd3, 0xa1, 0xe9, 0x87, 0x13, 0x70, 0x47, 0xa8, 0xf0, 0x50, 0x45, 0xef, 0x06, 0xa8, + 0x5b, 0xad, 0x3d, 0x97, 0x2e, 0xc8, 0xb4, 0x3e, 0xf5, 0x93, 0x11, 0x92, 0xfb, 0xb8, 0xf6, 0xec, + 0xb9, 0x1e, 0x5d, 0x25, 0x74, 0xa0, 0x43, 0x84, 0xe1, 0x82, 0xaf, 0x68, 0x92, 0x28, 0x3a, 0xd9, + 0x65, 0xa6, 0x1d, 0x6b, 0xdd, 0x3c, 0x68, 0xd5, 0x46, 0x1d, 0x59, 0x6e, 0xc5, 0x71, 0xdb, 0xc8, + 0x6c, 0xd6, 0xad, 0x1d, 0x52, 0x80, 0x53, 0xd9, 0xde, 0x6d, 0xb3, 0xe1, 0x20, 0x63, 0x84, 0x92, + 0x37, 0x38, 0x15, 0x23, 0xc8, 0x2a, 0xd3, 0x0e, 0x20, 0xfa, 0x04, 0x04, 0x25, 0x7b, 0x88, 0xcc, + 0x17, 0x8f, 0xc0, 0x40, 0xa0, 0xad, 0xd3, 0x4f, 0xc0, 0xe0, 0x13, 0xe6, 0x53, 0x66, 0x85, 0xb7, + 0xea, 0xd4, 0x12, 0x03, 0x78, 0x6c, 0x9d, 0xb5, 0xeb, 0xf3, 0x70, 0x94, 0xb0, 0xd8, 0x7b, 0x2e, + 0x6a, 0x57, 0xaa, 0x0d, 0xd3, 0x71, 0x88, 0xd1, 0x52, 0x84, 0x55, 0xc7, 0xb4, 0x35, 0x4c, 0x2a, + 0x70, 0x8a, 0xbe, 0x04, 0x63, 0x04, 0xd1, 0xdc, 0x6b, 0xb8, 0xf5, 0x56, 0x03, 0x55, 0xf0, 0xcb, + 0x83, 0x43, 0x0a, 0xb1, 0xa7, 0xd9, 0x28, 0xe6, 0x58, 0x65, 0x0c, 0x58, 0x23, 0x47, 0x2f, 0xc2, + 0xdd, 0x04, 0xb6, 0x83, 0x2c, 0xd4, 0x36, 0x5d, 0x54, 0x41, 0xef, 0xdb, 0x33, 0x1b, 0x4e, 0xc5, + 0xb4, 0x6a, 0x95, 0x5d, 0xd3, 0xd9, 0x4d, 0x1f, 0xc5, 0x02, 0xf2, 0x89, 0xb4, 0x62, 0xdc, 0x89, + 0x19, 0xaf, 0x30, 0xbe, 0x12, 0x61, 0xcb, 0x59, 0xb5, 0x47, 0x4d, 0x67, 0x57, 0xcf, 0xc2, 0x38, + 0x91, 0xe2, 0xb8, 0xed, 0xba, 0xb5, 0x53, 0xa9, 0xee, 0xa2, 0xea, 0x93, 0x95, 0x3d, 0x77, 0xfb, + 0x42, 0xfa, 0xae, 0xe0, 0xf3, 0x89, 0x86, 0x1b, 0x84, 0xa7, 0x80, 0x59, 0xb6, 0xdc, 0xed, 0x0b, + 0xfa, 0x06, 0x0c, 0x62, 0x67, 0x34, 0xeb, 0xcf, 0xa2, 0xca, 0xb6, 0xdd, 0x26, 0x2b, 0xcb, 0x70, + 0x48, 0x66, 0x07, 0x2c, 0x38, 0xb7, 0xc6, 0x00, 0xab, 0x76, 0x0d, 0x65, 0x7b, 0x37, 0xd6, 0x4b, + 0xa5, 0xa2, 0x31, 0xc0, 0xa5, 0x5c, 0xb6, 0xdb, 0x38, 0xa0, 0x76, 0x6c, 0xcf, 0xc0, 0x03, 0x34, + 0xa0, 0x76, 0x6c, 0x6e, 0xde, 0x25, 0x18, 0xab, 0x56, 0xe9, 0x9c, 0xeb, 0xd5, 0x0a, 0x6b, 0xf1, + 0x9d, 0xb4, 0x26, 0x18, 0xab, 0x5a, 0xbd, 0x42, 0x19, 0x58, 0x8c, 0x3b, 0xfa, 0x45, 0xb8, 0xc3, + 0x37, 0x56, 0x10, 0x38, 0xda, 0x31, 0x4b, 0x19, 0xba, 0x04, 0x63, 0xad, 0xfd, 0x4e, 0xa0, 0x2e, + 0x3c, 0xb1, 0xb5, 0x2f, 0xc3, 0xee, 0x25, 0xaf, 0x6d, 0x6d, 0x54, 0x35, 0x5d, 0x54, 0x4b, 0x1f, + 0x0b, 0x72, 0x07, 0x08, 0xfa, 0x69, 0xd0, 0xaa, 0xd5, 0x0a, 0xb2, 0xcc, 0xeb, 0x0d, 0x54, 0x31, + 0xdb, 0xc8, 0x32, 0x9d, 0xf4, 0x54, 0x90, 0x79, 0xb8, 0x5a, 0x2d, 0x11, 0x6a, 0x8e, 0x10, 0xf5, + 0x59, 0x18, 0xb5, 0xaf, 0x3f, 0x51, 0xa5, 0x91, 0x55, 0x69, 0xb5, 0xd1, 0x76, 0xfd, 0x99, 0xf4, + 0x49, 0x62, 0xa6, 0x11, 0x4c, 0x20, 0x71, 0xb5, 0x4e, 0x86, 0xf5, 0xfb, 0x41, 0xab, 0x3a, 0xbb, + 0x66, 0xbb, 0x45, 0x96, 0x76, 0xa7, 0x65, 0x56, 0x51, 0xfa, 0x5e, 0xca, 0x4a, 0xc7, 0xcb, 0x7c, + 0x18, 0x47, 0xb6, 0xf3, 0x74, 0x7d, 0xdb, 0xe5, 0x12, 0xef, 0xa3, 0x91, 0x4d, 0xc6, 0x98, 0xb4, + 0xc7, 0xe1, 0xe8, 0x9e, 0x55, 0xb7, 0x5c, 0xd4, 0x6e, 0xb5, 0x11, 0x6e, 0xe2, 0x69, 0x26, 0xa6, + 0xff, 0xfd, 0x48, 0x97, 0x36, 0x7c, 0x2b, 0xc8, 0x4d, 0x03, 0xc0, 0x18, 0xdb, 0xeb, 0x1c, 0xcc, + 0x64, 0x61, 0x30, 0x18, 0x17, 0x7a, 0x3f, 0xd0, 0xc8, 0xd0, 0x14, 0xbc, 0xc6, 0x16, 0xd6, 0x8a, + 0x78, 0x75, 0x7c, 0x6f, 0x49, 0x4b, 0xe0, 0x55, 0x7a, 0x65, 0x79, 0xb3, 0x54, 0x31, 0xb6, 0xca, + 0x9b, 0xcb, 0xab, 0x25, 0x4d, 0x9d, 0xed, 0x4f, 0x7d, 0xef, 0x88, 0xf6, 0xdc, 0x73, 0xcf, 0x3d, + 0x97, 0xc8, 0x7c, 0x33, 0x01, 0xc3, 0x62, 0x67, 0xac, 0xbf, 0x13, 0x8e, 0xf1, 0xd7, 0x58, 0x07, + 0xb9, 0x95, 0xa7, 0xeb, 0x6d, 0x12, 0xaa, 0x4d, 0x93, 0xf6, 0x96, 0x9e, 0x95, 0x8f, 0x32, 0xae, + 0x0d, 0xe4, 0x3e, 0x56, 0x6f, 0xe3, 0x40, 0x6c, 0x9a, 0xae, 0xbe, 0x02, 0x53, 0x96, 0x5d, 0x71, + 0x5c, 0xd3, 0xaa, 0x99, 0xed, 0x5a, 0xc5, 0xdf, 0x40, 0xa8, 0x98, 0xd5, 0x2a, 0x72, 0x1c, 0x9b, + 0x2e, 0x11, 0x9e, 0x94, 0xe3, 0x96, 0xbd, 0xc1, 0x98, 0xfd, 0xda, 0x99, 0x63, 0xac, 0x52, 0x44, + 0xa8, 0xdd, 0x22, 0xe2, 0x2e, 0xe8, 0x6f, 0x9a, 0xad, 0x0a, 0xb2, 0xdc, 0xf6, 0x3e, 0xe9, 0xe7, + 0x52, 0x46, 0xaa, 0x69, 0xb6, 0x4a, 0xf8, 0xfb, 0xdb, 0xe7, 0x83, 0xa0, 0x1d, 0xff, 0x4d, 0x85, + 0xc1, 0x60, 0x4f, 0x87, 0x5b, 0xe4, 0x2a, 0xa9, 0xdf, 0x0a, 0xc9, 0xf0, 0x7b, 0x0e, 0xec, 0x00, + 0xe7, 0x0a, 0xb8, 0xb0, 0x67, 0xfb, 0x68, 0xa7, 0x65, 0x50, 0x24, 0x5e, 0x54, 0x71, 0x4e, 0x23, + 0xda, 0xbf, 0xa7, 0x0c, 0xf6, 0x4d, 0xbf, 0x02, 0x7d, 0x4f, 0x38, 0x44, 0x76, 0x1f, 0x91, 0x7d, + 0xf2, 0x60, 0xd9, 0x57, 0x37, 0x88, 0xf0, 0xfe, 0xab, 0x1b, 0x95, 0xf2, 0x9a, 0xb1, 0x9a, 0x5b, + 0x31, 0x18, 0x5c, 0xbf, 0x13, 0x92, 0x0d, 0xf3, 0xd9, 0x7d, 0x71, 0x09, 0x20, 0x43, 0x71, 0x0d, + 0x7f, 0x27, 0x24, 0x9f, 0x46, 0xe6, 0x93, 0x62, 0xe1, 0x25, 0x43, 0x6f, 0x63, 0xe8, 0x9f, 0x86, + 0x5e, 0x62, 0x2f, 0x1d, 0x80, 0x59, 0x4c, 0xeb, 0xd1, 0x53, 0x90, 0x2c, 0xac, 0x19, 0x38, 0xfc, + 0x35, 0x18, 0xa4, 0xa3, 0x95, 0xf5, 0xe5, 0x52, 0xa1, 0xa4, 0x25, 0x32, 0x4b, 0xd0, 0x47, 0x8d, + 0x80, 0x53, 0xc3, 0x33, 0x83, 0xd6, 0xc3, 0xbe, 0x32, 0x19, 0x0a, 0xa7, 0x6e, 0xad, 0xe6, 0x4b, + 0x86, 0x96, 0x08, 0xba, 0xd7, 0x81, 0xc1, 0x60, 0x3b, 0xf7, 0xd3, 0x89, 0xa9, 0xaf, 0x2b, 0x30, + 0x10, 0x68, 0xcf, 0x70, 0x63, 0x60, 0x36, 0x1a, 0xf6, 0xd3, 0x15, 0xb3, 0x51, 0x37, 0x1d, 0x16, + 0x14, 0x40, 0x86, 0x72, 0x78, 0x24, 0xae, 0xd3, 0x7e, 0x2a, 0xca, 0x3f, 0xaf, 0x80, 0x26, 0xb7, + 0x76, 0x92, 0x82, 0xca, 0xcf, 0x54, 0xc1, 0x4f, 0x28, 0x30, 0x2c, 0xf6, 0x73, 0x92, 0x7a, 0x27, + 0x7e, 0xa6, 0xea, 0x7d, 0x27, 0x01, 0x43, 0x42, 0x17, 0x17, 0x57, 0xbb, 0xf7, 0xc1, 0x68, 0xbd, + 0x86, 0x9a, 0x2d, 0xdb, 0x45, 0x56, 0x75, 0xbf, 0xd2, 0x40, 0x4f, 0xa1, 0x46, 0x3a, 0x43, 0x0a, + 0xc5, 0xe9, 0x83, 0xfb, 0xc4, 0xb9, 0x65, 0x1f, 0xb7, 0x82, 0x61, 0xd9, 0xb1, 0xe5, 0x62, 0x69, + 0x75, 0x7d, 0x6d, 0xb3, 0x54, 0x2e, 0x5c, 0xab, 0x6c, 0x95, 0xdf, 0x55, 0x5e, 0x7b, 0xac, 0x6c, + 0x68, 0x75, 0x89, 0xed, 0x6d, 0x4c, 0xf5, 0x75, 0xd0, 0x64, 0xa5, 0xf4, 0x63, 0x10, 0xa6, 0x96, + 0xd6, 0xa3, 0x8f, 0xc1, 0x48, 0x79, 0xad, 0xb2, 0xb1, 0x5c, 0x2c, 0x55, 0x4a, 0x97, 0x2f, 0x97, + 0x0a, 0x9b, 0x1b, 0xf4, 0xc5, 0xd9, 0xe3, 0xde, 0x14, 0x93, 0xfa, 0xe3, 0x2a, 0x8c, 0x85, 0x68, + 0xa2, 0xe7, 0x58, 0xcf, 0x4e, 0x5f, 0x23, 0x1e, 0x8c, 0xa3, 0xfd, 0x1c, 0xee, 0x0a, 0xd6, 0xcd, + 0xb6, 0xcb, 0x5a, 0xfc, 0xfb, 0x01, 0x5b, 0xc9, 0x72, 0xeb, 0xdb, 0x75, 0xd4, 0x66, 0xfb, 0x0c, + 0xb4, 0x91, 0x1f, 0xf1, 0xc7, 0xe9, 0x56, 0xc3, 0x03, 0xa0, 0xb7, 0x6c, 0xa7, 0xee, 0xd6, 0x9f, + 0x42, 0x95, 0xba, 0xc5, 0x37, 0x25, 0x70, 0x63, 0x9f, 0x34, 0x34, 0x4e, 0x59, 0xb6, 0x5c, 0x8f, + 0xdb, 0x42, 0x3b, 0xa6, 0xc4, 0x8d, 0x0b, 0xb8, 0x6a, 0x68, 0x9c, 0xe2, 0x71, 0x9f, 0x80, 0xc1, + 0x9a, 0xbd, 0x87, 0xdb, 0x24, 0xca, 0x87, 0xd7, 0x0b, 0xc5, 0x18, 0xa0, 0x63, 0x1e, 0x0b, 0xeb, + 0x63, 0xfd, 0xdd, 0x90, 0x41, 0x63, 0x80, 0x8e, 0x51, 0x96, 0xfb, 0x60, 0xc4, 0xdc, 0xd9, 0x69, + 0x63, 0xe1, 0x5c, 0x10, 0xed, 0xcc, 0x87, 0xbd, 0x61, 0xc2, 0x38, 0x71, 0x15, 0x52, 0xdc, 0x0e, + 0x78, 0x49, 0xc6, 0x96, 0xa8, 0xb4, 0xe8, 0x9e, 0x54, 0x62, 0xa6, 0xdf, 0x48, 0x59, 0x9c, 0x78, + 0x02, 0x06, 0xeb, 0x4e, 0xc5, 0xdf, 0x1c, 0x4d, 0x4c, 0x27, 0x66, 0x52, 0xc6, 0x40, 0xdd, 0xf1, + 0x76, 0xc3, 0x32, 0x9f, 0x4b, 0xc0, 0xb0, 0xb8, 0xb9, 0xab, 0x17, 0x21, 0xd5, 0xb0, 0xab, 0x26, + 0x09, 0x2d, 0x7a, 0xb2, 0x30, 0x13, 0xb1, 0x1f, 0x3c, 0xb7, 0xc2, 0xf8, 0x0d, 0x0f, 0x39, 0xf1, + 0xcf, 0x0a, 0xa4, 0xf8, 0xb0, 0x3e, 0x0e, 0xc9, 0x96, 0xe9, 0xee, 0x12, 0x71, 0xbd, 0xf9, 0x84, + 0xa6, 0x18, 0xe4, 0x3b, 0x1e, 0x77, 0x5a, 0xa6, 0x45, 0x42, 0x80, 0x8d, 0xe3, 0xef, 0xd8, 0xaf, + 0x0d, 0x64, 0xd6, 0x48, 0xdb, 0x6f, 0x37, 0x9b, 0xc8, 0x72, 0x1d, 0xee, 0x57, 0x36, 0x5e, 0x60, + 0xc3, 0xfa, 0x3b, 0x60, 0xd4, 0x6d, 0x9b, 0xf5, 0x86, 0xc0, 0x9b, 0x24, 0xbc, 0x1a, 0x27, 0x78, + 0xcc, 0x59, 0xb8, 0x93, 0xcb, 0xad, 0x21, 0xd7, 0xac, 0xee, 0xa2, 0x9a, 0x0f, 0xea, 0x23, 0x3b, + 0x87, 0xc7, 0x18, 0x43, 0x91, 0xd1, 0x39, 0x36, 0xf3, 0x2d, 0x05, 0x46, 0xf9, 0x8b, 0x4a, 0xcd, + 0x33, 0xd6, 0x2a, 0x80, 0x69, 0x59, 0xb6, 0x1b, 0x34, 0x57, 0x67, 0x28, 0x77, 0xe0, 0xe6, 0x72, + 0x1e, 0xc8, 0x08, 0x08, 0x98, 0x68, 0x02, 0xf8, 0x94, 0xae, 0x66, 0x9b, 0x82, 0x01, 0xb6, 0x73, + 0x4f, 0x8e, 0x7f, 0xe8, 0xab, 0x2d, 0xd0, 0x21, 0xfc, 0x46, 0xa3, 0x1f, 0x85, 0xde, 0xeb, 0x68, + 0xa7, 0x6e, 0xb1, 0xfd, 0x44, 0xfa, 0x85, 0xef, 0x52, 0x26, 0xbd, 0x5d, 0xca, 0xfc, 0xe3, 0x30, + 0x56, 0xb5, 0x9b, 0xb2, 0xba, 0x79, 0x4d, 0x7a, 0xbd, 0x76, 0x1e, 0x55, 0xde, 0x0b, 0x7e, 0x8b, + 0xf9, 0x99, 0x84, 0x7a, 0x65, 0x3d, 0xff, 0x85, 0xc4, 0xc4, 0x15, 0x8a, 0x5b, 0xe7, 0xd3, 0x34, + 0xd0, 0x76, 0x03, 0x55, 0xb1, 0xea, 0xf0, 0xc3, 0x53, 0xf0, 0xe0, 0x4e, 0xdd, 0xdd, 0xdd, 0xbb, + 0x3e, 0x57, 0xb5, 0x9b, 0xa7, 0x77, 0xec, 0x1d, 0xdb, 0x3f, 0xee, 0xc2, 0xdf, 0xc8, 0x17, 0xf2, + 0x89, 0x1d, 0x79, 0xf5, 0x7b, 0xa3, 0x13, 0x91, 0xe7, 0x63, 0xd9, 0x32, 0x8c, 0x31, 0xe6, 0x0a, + 0xd9, 0x73, 0xa7, 0xaf, 0x06, 0xfa, 0x81, 0xfb, 0x2e, 0xe9, 0x2f, 0x7f, 0x97, 0xac, 0xd5, 0xc6, + 0x28, 0x83, 0x62, 0x1a, 0x7d, 0x81, 0xc8, 0x1a, 0x70, 0x87, 0x20, 0x8f, 0xe6, 0x25, 0x6a, 0x47, + 0x48, 0xfc, 0x26, 0x93, 0x38, 0x16, 0x90, 0xb8, 0xc1, 0xa0, 0xd9, 0x02, 0x0c, 0x1d, 0x46, 0xd6, + 0xdf, 0x33, 0x59, 0x83, 0x28, 0x28, 0xe4, 0x0a, 0x8c, 0x10, 0x21, 0xd5, 0x3d, 0xc7, 0xb5, 0x9b, + 0xa4, 0xe8, 0x1d, 0x2c, 0xe6, 0x1f, 0xbe, 0x4b, 0x13, 0x65, 0x18, 0xc3, 0x0a, 0x1e, 0x2a, 0x9b, + 0x05, 0x72, 0xcc, 0x50, 0x43, 0xd5, 0x46, 0x84, 0x84, 0x1b, 0x4c, 0x11, 0x8f, 0x3f, 0xfb, 0x1e, + 0x38, 0x8a, 0x3f, 0x93, 0x9a, 0x14, 0xd4, 0x24, 0x7a, 0x97, 0x29, 0xfd, 0xad, 0x0f, 0xd0, 0x5c, + 0x1c, 0xf3, 0x04, 0x04, 0x74, 0x0a, 0x78, 0x71, 0x07, 0xb9, 0x2e, 0x6a, 0x3b, 0x15, 0xb3, 0x11, + 0xa6, 0x5e, 0xe0, 0x35, 0x3d, 0xfd, 0xb1, 0xd7, 0x44, 0x2f, 0x5e, 0xa1, 0xc8, 0x5c, 0xa3, 0x91, + 0xdd, 0x82, 0x63, 0x21, 0x51, 0x11, 0x43, 0xe6, 0xc7, 0x99, 0xcc, 0xa3, 0x1d, 0x91, 0x81, 0xc5, + 0xae, 0x03, 0x1f, 0xf7, 0x7c, 0x19, 0x43, 0xe6, 0x1f, 0x31, 0x99, 0x3a, 0xc3, 0x72, 0x97, 0x62, + 0x89, 0x57, 0x61, 0xf4, 0x29, 0xd4, 0xbe, 0x6e, 0x3b, 0x6c, 0x6b, 0x24, 0x86, 0xb8, 0x4f, 0x30, + 0x71, 0x23, 0x0c, 0x48, 0xf6, 0x4a, 0xb0, 0xac, 0x8b, 0x90, 0xda, 0x36, 0xab, 0x28, 0x86, 0x88, + 0x4f, 0x32, 0x11, 0x47, 0x30, 0x3f, 0x86, 0xe6, 0x60, 0x70, 0xc7, 0x66, 0xcb, 0x52, 0x34, 0xfc, + 0x79, 0x06, 0x1f, 0xe0, 0x18, 0x26, 0xa2, 0x65, 0xb7, 0xf6, 0x1a, 0x78, 0xcd, 0x8a, 0x16, 0xf1, + 0x29, 0x2e, 0x82, 0x63, 0x98, 0x88, 0x43, 0x98, 0xf5, 0x05, 0x2e, 0xc2, 0x09, 0xd8, 0xf3, 0x11, + 0x18, 0xb0, 0xad, 0xc6, 0xbe, 0x6d, 0xc5, 0x51, 0xe2, 0xd3, 0x4c, 0x02, 0x30, 0x08, 0x16, 0x70, + 0x09, 0xfa, 0xe3, 0x3a, 0xe2, 0xb3, 0xaf, 0xf1, 0xf4, 0xe0, 0x1e, 0xb8, 0x02, 0x23, 0xbc, 0x40, + 0xd5, 0x6d, 0x2b, 0x86, 0x88, 0x3f, 0x61, 0x22, 0x86, 0x03, 0x30, 0x36, 0x0d, 0x17, 0x39, 0xee, + 0x0e, 0x8a, 0x23, 0xe4, 0x73, 0x7c, 0x1a, 0x0c, 0xc2, 0x4c, 0x79, 0x1d, 0x59, 0xd5, 0xdd, 0x78, + 0x12, 0x5e, 0xe4, 0xa6, 0xe4, 0x18, 0x2c, 0xa2, 0x00, 0x43, 0x4d, 0xb3, 0xed, 0xec, 0x9a, 0x8d, + 0x58, 0xee, 0xf8, 0x3c, 0x93, 0x31, 0xe8, 0x81, 0x98, 0x45, 0xf6, 0xac, 0xc3, 0x88, 0xf9, 0x02, + 0xb7, 0x48, 0x00, 0xc6, 0x52, 0xcf, 0x71, 0xc9, 0x06, 0xd4, 0x61, 0xa4, 0x7d, 0x91, 0xa7, 0x1e, + 0xc5, 0xae, 0x06, 0x25, 0x5e, 0x82, 0x7e, 0xa7, 0xfe, 0x6c, 0x2c, 0x31, 0x7f, 0xca, 0x3d, 0x4d, + 0x00, 0x18, 0x7c, 0x0d, 0xee, 0x0c, 0x5d, 0x26, 0x62, 0x08, 0xfb, 0x33, 0x26, 0x6c, 0x3c, 0x64, + 0xa9, 0x60, 0x25, 0xe1, 0xb0, 0x22, 0xff, 0x9c, 0x97, 0x04, 0x24, 0xc9, 0x5a, 0xc7, 0x2f, 0x0a, + 0x8e, 0xb9, 0x7d, 0x38, 0xab, 0xfd, 0x05, 0xb7, 0x1a, 0xc5, 0x0a, 0x56, 0xdb, 0x84, 0x71, 0x26, + 0xf1, 0x70, 0x7e, 0xfd, 0x12, 0x2f, 0xac, 0x14, 0xbd, 0x25, 0x7a, 0xf7, 0x17, 0x60, 0xc2, 0x33, + 0x27, 0xef, 0x48, 0x9d, 0x4a, 0xd3, 0x6c, 0xc5, 0x90, 0xfc, 0x65, 0x26, 0x99, 0x57, 0x7c, 0xaf, + 0xa5, 0x75, 0x56, 0xcd, 0x16, 0x16, 0xfe, 0x38, 0xa4, 0xb9, 0xf0, 0x3d, 0xab, 0x8d, 0xaa, 0xf6, + 0x8e, 0x55, 0x7f, 0x16, 0xd5, 0x62, 0x88, 0xfe, 0x4b, 0xc9, 0x55, 0x5b, 0x01, 0x38, 0x96, 0xbc, + 0x0c, 0x9a, 0xd7, 0xab, 0x54, 0xea, 0xcd, 0x96, 0xdd, 0x76, 0x23, 0x24, 0xfe, 0x15, 0xf7, 0x94, + 0x87, 0x5b, 0x26, 0xb0, 0x6c, 0x09, 0x86, 0xc9, 0xd7, 0xb8, 0x21, 0xf9, 0x15, 0x26, 0x68, 0xc8, + 0x47, 0xb1, 0xc2, 0x51, 0xb5, 0x9b, 0x2d, 0xb3, 0x1d, 0xa7, 0xfe, 0xfd, 0x35, 0x2f, 0x1c, 0x0c, + 0xc2, 0x0a, 0x87, 0xbb, 0xdf, 0x42, 0x78, 0xb5, 0x8f, 0x21, 0xe1, 0xab, 0xbc, 0x70, 0x70, 0x0c, + 0x13, 0xc1, 0x1b, 0x86, 0x18, 0x22, 0xfe, 0x86, 0x8b, 0xe0, 0x18, 0x2c, 0xe2, 0xdd, 0xfe, 0x42, + 0xdb, 0x46, 0x3b, 0x75, 0xc7, 0x6d, 0xd3, 0x3e, 0xf8, 0x60, 0x51, 0x5f, 0x7b, 0x4d, 0x6c, 0xc2, + 0x8c, 0x00, 0x34, 0x7b, 0x15, 0x46, 0xa4, 0x16, 0x43, 0x8f, 0xba, 0xb3, 0x90, 0xfe, 0xe5, 0xd7, + 0x59, 0x31, 0x12, 0x3b, 0x8c, 0xec, 0x0a, 0xf6, 0xbb, 0xd8, 0x07, 0x44, 0x0b, 0xfb, 0xc0, 0xeb, + 0x9e, 0xeb, 0x85, 0x36, 0x20, 0x7b, 0x19, 0x86, 0x84, 0x1e, 0x20, 0x5a, 0xd4, 0xaf, 0x30, 0x51, + 0x83, 0xc1, 0x16, 0x20, 0xbb, 0x04, 0x49, 0xbc, 0x9e, 0x47, 0xc3, 0x7f, 0x95, 0xc1, 0x09, 0x7b, + 0xf6, 0x21, 0x48, 0xf1, 0x75, 0x3c, 0x1a, 0xfa, 0x41, 0x06, 0xf5, 0x20, 0x18, 0xce, 0xd7, 0xf0, + 0x68, 0xf8, 0xaf, 0x71, 0x38, 0x87, 0x60, 0x78, 0x7c, 0x13, 0xbe, 0xf4, 0x1b, 0x49, 0x56, 0x87, + 0xb9, 0xed, 0x2e, 0xc1, 0x11, 0xb6, 0x78, 0x47, 0xa3, 0x3f, 0xcc, 0x1e, 0xce, 0x11, 0xd9, 0xf3, + 0xd0, 0x1b, 0xd3, 0xe0, 0xbf, 0xc9, 0xa0, 0x94, 0x3f, 0x5b, 0x80, 0x81, 0xc0, 0x82, 0x1d, 0x0d, + 0xff, 0x2d, 0x06, 0x0f, 0xa2, 0xb0, 0xea, 0x6c, 0xc1, 0x8e, 0x16, 0xf0, 0xdb, 0x5c, 0x75, 0x86, + 0xc0, 0x66, 0xe3, 0x6b, 0x75, 0x34, 0xfa, 0x77, 0xb8, 0xd5, 0x39, 0x24, 0xfb, 0x08, 0xf4, 0x7b, + 0xf5, 0x37, 0x1a, 0xff, 0xbb, 0x0c, 0xef, 0x63, 0xb0, 0x05, 0x02, 0xf5, 0x3f, 0x5a, 0xc4, 0xef, + 0x71, 0x0b, 0x04, 0x50, 0x38, 0x8d, 0xe4, 0x35, 0x3d, 0x5a, 0xd2, 0x47, 0x78, 0x1a, 0x49, 0x4b, + 0x3a, 0xf6, 0x26, 0x29, 0x83, 0xd1, 0x22, 0x7e, 0x9f, 0x7b, 0x93, 0xf0, 0x63, 0x35, 0xe4, 0x45, + 0x32, 0x5a, 0xc6, 0x1f, 0x72, 0x35, 0xa4, 0x35, 0x32, 0xbb, 0x0e, 0x7a, 0xe7, 0x02, 0x19, 0x2d, + 0xef, 0xa3, 0x4c, 0xde, 0x68, 0xc7, 0xfa, 0x98, 0x7d, 0x0c, 0xc6, 0xc3, 0x17, 0xc7, 0x68, 0xa9, + 0x1f, 0x7b, 0x5d, 0x7a, 0x9d, 0x09, 0xae, 0x8d, 0xd9, 0x4d, 0xbf, 0xca, 0x06, 0x17, 0xc6, 0x68, + 0xb1, 0x1f, 0x7f, 0x5d, 0x2c, 0xb4, 0xc1, 0x75, 0x31, 0x9b, 0x03, 0xf0, 0xd7, 0xa4, 0x68, 0x59, + 0x9f, 0x60, 0xb2, 0x02, 0x20, 0x9c, 0x1a, 0x6c, 0x49, 0x8a, 0xc6, 0x7f, 0x92, 0xa7, 0x06, 0x43, + 0xe0, 0xd4, 0xe0, 0xab, 0x51, 0x34, 0xfa, 0x79, 0x9e, 0x1a, 0x1c, 0x92, 0xbd, 0x04, 0x29, 0x6b, + 0xaf, 0xd1, 0xc0, 0xb1, 0xa5, 0x1f, 0x7c, 0x8d, 0x28, 0xfd, 0x1f, 0x6f, 0x30, 0x30, 0x07, 0x64, + 0x97, 0xa0, 0x17, 0x35, 0xaf, 0xa3, 0x5a, 0x14, 0xf2, 0x3f, 0xdf, 0xe0, 0xf5, 0x04, 0x73, 0x67, + 0x1f, 0x01, 0xa0, 0x2f, 0xd3, 0xe4, 0x94, 0x28, 0x02, 0xfb, 0x5f, 0x6f, 0xb0, 0x1b, 0x0a, 0x3e, + 0xc4, 0x17, 0x40, 0xef, 0x3b, 0x1c, 0x2c, 0xe0, 0x35, 0x51, 0x00, 0x79, 0x01, 0xbf, 0x08, 0x47, + 0x9e, 0x70, 0x6c, 0xcb, 0x35, 0x77, 0xa2, 0xd0, 0xff, 0xcd, 0xd0, 0x9c, 0x1f, 0x1b, 0xac, 0x69, + 0xb7, 0x91, 0x6b, 0xee, 0x38, 0x51, 0xd8, 0xff, 0x61, 0x58, 0x0f, 0x80, 0xc1, 0x55, 0xd3, 0x71, + 0xe3, 0xcc, 0xfb, 0x7f, 0x39, 0x98, 0x03, 0xb0, 0xd2, 0xf8, 0xf3, 0x93, 0x68, 0x3f, 0x0a, 0xfb, + 0x7d, 0xae, 0x34, 0xe3, 0xcf, 0x3e, 0x04, 0xfd, 0xf8, 0x23, 0xbd, 0xb5, 0x13, 0x01, 0xfe, 0x01, + 0x03, 0xfb, 0x08, 0xfc, 0x64, 0xc7, 0xad, 0xb9, 0xf5, 0x68, 0x63, 0xff, 0x1f, 0xf3, 0x34, 0xe7, + 0xcf, 0xe6, 0x60, 0xc0, 0x71, 0x6b, 0xb5, 0x3d, 0xd6, 0xd1, 0x44, 0xc0, 0x7f, 0xf8, 0x86, 0xf7, + 0x92, 0xeb, 0x61, 0xf2, 0x27, 0xc2, 0x37, 0xeb, 0xe0, 0x8a, 0x7d, 0xc5, 0xa6, 0xdb, 0x74, 0xf0, + 0x4f, 0x0d, 0x98, 0xaa, 0xda, 0xcd, 0xeb, 0xb6, 0x73, 0x9a, 0x16, 0x94, 0xeb, 0xb6, 0xbb, 0x7b, + 0xda, 0xdd, 0x45, 0x78, 0x01, 0x61, 0xfb, 0x6c, 0x49, 0xfc, 0x79, 0xe2, 0x70, 0x9b, 0x73, 0xe4, + 0xdc, 0xb5, 0x5c, 0xc7, 0xfa, 0x95, 0xc9, 0xd6, 0xb7, 0x7e, 0x1c, 0xfa, 0x88, 0xc6, 0x67, 0xc8, + 0xf1, 0x92, 0x92, 0x4f, 0xde, 0x78, 0x65, 0xaa, 0xc7, 0x60, 0x63, 0x1e, 0x75, 0x81, 0xec, 0x4d, + 0x26, 0x04, 0xea, 0x82, 0x47, 0x3d, 0x4b, 0xb7, 0x27, 0x05, 0xea, 0x59, 0x8f, 0xba, 0x48, 0x36, + 0x2a, 0x55, 0x81, 0xba, 0xe8, 0x51, 0x97, 0xc8, 0x66, 0xfc, 0x90, 0x40, 0x5d, 0xf2, 0xa8, 0xe7, + 0xc8, 0x16, 0x7c, 0x52, 0xa0, 0x9e, 0xf3, 0xa8, 0xe7, 0xc9, 0xee, 0xfb, 0xa8, 0x40, 0x3d, 0xef, + 0x51, 0x2f, 0x90, 0x5d, 0x77, 0x5d, 0xa0, 0x5e, 0xf0, 0xa8, 0x17, 0xc9, 0x55, 0x92, 0x23, 0x02, + 0xf5, 0xa2, 0x3e, 0x09, 0x47, 0xe8, 0xcc, 0xe7, 0xc9, 0x11, 0xed, 0x08, 0x23, 0xf3, 0x41, 0x9f, + 0x7e, 0x86, 0x5c, 0x1b, 0xe9, 0x13, 0xe9, 0x67, 0x7c, 0xfa, 0x02, 0xb9, 0x40, 0xad, 0x89, 0xf4, + 0x05, 0x9f, 0x7e, 0x36, 0x3d, 0x44, 0xae, 0xce, 0x08, 0xf4, 0xb3, 0x3e, 0x7d, 0x31, 0x3d, 0x8c, + 0x83, 0x56, 0xa4, 0x2f, 0xfa, 0xf4, 0xa5, 0xf4, 0xc8, 0xb4, 0x32, 0x33, 0x28, 0xd2, 0x97, 0x32, + 0xef, 0x27, 0xee, 0xb5, 0x7c, 0xf7, 0x8e, 0x8b, 0xee, 0xf5, 0x1c, 0x3b, 0x2e, 0x3a, 0xd6, 0x73, + 0xe9, 0xb8, 0xe8, 0x52, 0xcf, 0x99, 0xe3, 0xa2, 0x33, 0x3d, 0x37, 0x8e, 0x8b, 0x6e, 0xf4, 0x1c, + 0x38, 0x2e, 0x3a, 0xd0, 0x73, 0xdd, 0xb8, 0xe8, 0x3a, 0xcf, 0x69, 0xe3, 0xa2, 0xd3, 0x3c, 0x77, + 0x8d, 0x8b, 0xee, 0xf2, 0x1c, 0x95, 0x96, 0x1c, 0xe5, 0xbb, 0x28, 0x2d, 0xb9, 0xc8, 0x77, 0x4e, + 0x5a, 0x72, 0x8e, 0xef, 0x96, 0xb4, 0xe4, 0x16, 0xdf, 0x21, 0x69, 0xc9, 0x21, 0xbe, 0x2b, 0xd2, + 0x92, 0x2b, 0x7c, 0x27, 0xb0, 0x1c, 0x33, 0x50, 0x2b, 0x24, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, + 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, + 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x83, 0x73, 0x4c, 0x8d, 0xc8, 0x31, 0x35, 0x22, + 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, 0xb5, 0x6b, 0x8e, 0xf9, 0xee, + 0x1d, 0x17, 0xdd, 0x1b, 0x9a, 0x63, 0x6a, 0x97, 0x1c, 0x53, 0xbb, 0xe4, 0x98, 0xda, 0x25, 0xc7, + 0xd4, 0x2e, 0x39, 0xa6, 0x76, 0xc9, 0x31, 0xb5, 0x4b, 0x8e, 0xa9, 0x5d, 0x72, 0x4c, 0xed, 0x96, + 0x63, 0x6a, 0xd7, 0x1c, 0x53, 0xbb, 0xe6, 0x98, 0xda, 0x35, 0xc7, 0xd4, 0xae, 0x39, 0xa6, 0x76, + 0xcd, 0x31, 0x35, 0x98, 0x63, 0x7f, 0xab, 0x82, 0x4e, 0x73, 0x6c, 0x9d, 0x5c, 0xf2, 0x61, 0xae, + 0x98, 0x94, 0x32, 0xad, 0x0f, 0xbb, 0x4e, 0xf3, 0x5d, 0x32, 0x29, 0xe5, 0x9a, 0x48, 0x5f, 0xf0, + 0xe8, 0x3c, 0xdb, 0x44, 0xfa, 0x59, 0x8f, 0xce, 0xf3, 0x4d, 0xa4, 0x2f, 0x7a, 0x74, 0x9e, 0x71, + 0x22, 0x7d, 0xc9, 0xa3, 0xf3, 0x9c, 0x13, 0xe9, 0xe7, 0x3c, 0x3a, 0xcf, 0x3a, 0x91, 0x7e, 0xde, + 0xa3, 0xf3, 0xbc, 0x13, 0xe9, 0x17, 0x3c, 0x3a, 0xcf, 0x3c, 0x91, 0x7e, 0x51, 0x9f, 0x96, 0x73, + 0x8f, 0x33, 0x78, 0xae, 0x9d, 0x96, 0xb3, 0x4f, 0xe2, 0x38, 0xe3, 0x73, 0xf0, 0xfc, 0x93, 0x38, + 0x16, 0x7c, 0x0e, 0x9e, 0x81, 0x12, 0xc7, 0xd9, 0xcc, 0x87, 0x88, 0xfb, 0x2c, 0xd9, 0x7d, 0x13, + 0x92, 0xfb, 0x12, 0x01, 0xd7, 0x4d, 0x48, 0xae, 0x4b, 0x04, 0xdc, 0x36, 0x21, 0xb9, 0x2d, 0x11, + 0x70, 0xd9, 0x84, 0xe4, 0xb2, 0x44, 0xc0, 0x5d, 0x13, 0x92, 0xbb, 0x12, 0x01, 0x57, 0x4d, 0x48, + 0xae, 0x4a, 0x04, 0xdc, 0x34, 0x21, 0xb9, 0x29, 0x11, 0x70, 0xd1, 0x84, 0xe4, 0xa2, 0x44, 0xc0, + 0x3d, 0x13, 0x92, 0x7b, 0x12, 0x01, 0xd7, 0x1c, 0x97, 0x5d, 0x93, 0x08, 0xba, 0xe5, 0xb8, 0xec, + 0x96, 0x44, 0xd0, 0x25, 0xc7, 0x65, 0x97, 0x24, 0x82, 0xee, 0x38, 0x2e, 0xbb, 0x23, 0x11, 0x74, + 0xc5, 0x4f, 0x12, 0xbc, 0x23, 0xdc, 0x70, 0xdb, 0x7b, 0x55, 0xf7, 0xb6, 0x3a, 0xc2, 0x79, 0xa1, + 0x7d, 0x18, 0x58, 0xd0, 0xe7, 0x48, 0xc3, 0x1a, 0xec, 0x38, 0xa5, 0x15, 0x6c, 0x5e, 0x68, 0x2c, + 0x02, 0x08, 0x2b, 0x1c, 0xb1, 0x78, 0x5b, 0xbd, 0xe1, 0xbc, 0xd0, 0x66, 0x44, 0xeb, 0x77, 0xe1, + 0x6d, 0xef, 0xd8, 0x5e, 0x4a, 0xf0, 0x8e, 0x8d, 0x99, 0xff, 0xb0, 0x1d, 0xdb, 0x6c, 0xb4, 0xc9, + 0x3d, 0x63, 0xcf, 0x46, 0x1b, 0xbb, 0x63, 0xd5, 0x89, 0xdb, 0xc1, 0xcd, 0x46, 0x9b, 0xd6, 0x33, + 0xea, 0x5b, 0xdb, 0x6f, 0xb1, 0x08, 0x36, 0x50, 0x2b, 0x24, 0x82, 0x0f, 0xdb, 0x6f, 0xcd, 0x0b, + 0xa5, 0xe4, 0xb0, 0x11, 0xac, 0x1e, 0x3a, 0x82, 0x0f, 0xdb, 0x79, 0xcd, 0x0b, 0xe5, 0xe5, 0xd0, + 0x11, 0xfc, 0x36, 0xf4, 0x43, 0x2c, 0x82, 0x7d, 0xf3, 0x1f, 0xb6, 0x1f, 0x9a, 0x8d, 0x36, 0x79, + 0x68, 0x04, 0xab, 0x87, 0x88, 0xe0, 0x38, 0xfd, 0xd1, 0x6c, 0xb4, 0x69, 0xc3, 0x23, 0xf8, 0xb6, + 0xbb, 0x99, 0x4f, 0x29, 0x30, 0x5a, 0xae, 0xd7, 0x4a, 0xcd, 0xeb, 0xa8, 0x56, 0x43, 0x35, 0x66, + 0xc7, 0x79, 0xa1, 0x12, 0x74, 0x71, 0xf5, 0xcb, 0xaf, 0x4c, 0xf9, 0x16, 0x5e, 0x82, 0x14, 0xb5, + 0xe9, 0xfc, 0x7c, 0xfa, 0x86, 0x12, 0x51, 0xe1, 0x3c, 0x56, 0xfd, 0x04, 0x87, 0x9d, 0x99, 0x4f, + 0xff, 0x8b, 0x12, 0xa8, 0x72, 0xde, 0x70, 0xe6, 0x23, 0x44, 0x43, 0xeb, 0xb6, 0x35, 0x3c, 0x1d, + 0x4b, 0xc3, 0x80, 0x6e, 0x77, 0x75, 0xe8, 0x16, 0xd0, 0x6a, 0x0f, 0x46, 0xca, 0xf5, 0x5a, 0x99, + 0xfc, 0xe9, 0x6e, 0x1c, 0x95, 0x28, 0x8f, 0x54, 0x0f, 0xe6, 0x85, 0xb0, 0x0c, 0x22, 0xbc, 0x90, + 0x16, 0x6b, 0x44, 0xa6, 0x8e, 0x1f, 0x6b, 0x09, 0x8f, 0x9d, 0xed, 0xf6, 0x58, 0xbf, 0xb2, 0x7b, + 0x0f, 0x9c, 0xed, 0xf6, 0x40, 0x3f, 0x87, 0xbc, 0x47, 0x3d, 0xc3, 0x17, 0x67, 0x7a, 0xdb, 0x46, + 0x3f, 0x0e, 0x89, 0x65, 0x7a, 0x13, 0x78, 0x30, 0x3f, 0x88, 0x95, 0xfa, 0xf6, 0x2b, 0x53, 0xc9, + 0xad, 0xbd, 0x7a, 0xcd, 0x48, 0x2c, 0xd7, 0xf4, 0xab, 0xd0, 0xfb, 0x1e, 0xf6, 0x07, 0x70, 0x98, + 0x61, 0x91, 0x31, 0x3c, 0xd0, 0x75, 0x8f, 0x08, 0x3f, 0xf8, 0x34, 0xdd, 0x47, 0x9c, 0xdb, 0xaa, + 0x5b, 0xee, 0x99, 0x85, 0x0b, 0x06, 0x15, 0x91, 0xf9, 0x45, 0x00, 0xfa, 0xcc, 0xa2, 0xe9, 0xec, + 0xea, 0x65, 0x2e, 0x99, 0x3e, 0xfa, 0xc2, 0xb7, 0x5f, 0x99, 0x5a, 0x8c, 0x23, 0xf5, 0xc1, 0x9a, + 0xe9, 0xec, 0x3e, 0xe8, 0xee, 0xb7, 0xd0, 0x5c, 0x7e, 0xdf, 0x45, 0x0e, 0x97, 0xde, 0xe2, 0xab, + 0x1e, 0x9b, 0x57, 0x3a, 0x30, 0xaf, 0x94, 0x30, 0xa7, 0xcb, 0xe2, 0x9c, 0xe6, 0xdf, 0xec, 0x7c, + 0x9e, 0xe1, 0x8b, 0x84, 0x64, 0x49, 0x35, 0xca, 0x92, 0xea, 0xed, 0x5a, 0xb2, 0xc5, 0xeb, 0xa3, + 0x34, 0x57, 0xf5, 0xa0, 0xb9, 0xaa, 0xb7, 0x33, 0xd7, 0x1f, 0xd1, 0x6c, 0xf5, 0xf2, 0x69, 0xcb, + 0xa2, 0xb7, 0x10, 0x7f, 0xbe, 0xf6, 0x82, 0xde, 0xd2, 0x2e, 0x20, 0x9b, 0xbc, 0xf1, 0xc2, 0x94, + 0x92, 0xf9, 0x54, 0x82, 0xcf, 0x9c, 0x26, 0xd2, 0x9b, 0x9b, 0xf9, 0xcf, 0x4b, 0x4f, 0xf5, 0x76, + 0x58, 0xe8, 0x79, 0x05, 0xc6, 0x3b, 0x2a, 0x39, 0x35, 0xd3, 0x5b, 0x5b, 0xce, 0xad, 0xc3, 0x96, + 0x73, 0xa6, 0xe0, 0x57, 0x14, 0x38, 0x2a, 0x95, 0x57, 0xaa, 0xde, 0x69, 0x49, 0xbd, 0x63, 0x9d, + 0x4f, 0x22, 0x8c, 0x01, 0xed, 0x82, 0xee, 0x95, 0x00, 0x01, 0xc9, 0x9e, 0xdf, 0x17, 0x25, 0xbf, + 0x1f, 0xf7, 0x00, 0x21, 0xe6, 0xe2, 0x11, 0xc0, 0xd4, 0xb6, 0x21, 0xb9, 0xd9, 0x46, 0x48, 0x9f, + 0x84, 0xc4, 0x5a, 0x9b, 0x69, 0x38, 0x4c, 0xf1, 0x6b, 0xed, 0x7c, 0xdb, 0xb4, 0xaa, 0xbb, 0x46, + 0x62, 0xad, 0xad, 0x9f, 0x00, 0x35, 0xc7, 0x7e, 0x62, 0x60, 0x60, 0x61, 0x84, 0x32, 0xe4, 0xac, + 0x1a, 0xe3, 0xc0, 0x34, 0x7d, 0x12, 0x92, 0x2b, 0xc8, 0xdc, 0x66, 0x4a, 0x00, 0xe5, 0xc1, 0x23, + 0x06, 0x19, 0x67, 0x0f, 0x7c, 0x1c, 0x52, 0x5c, 0xb0, 0x7e, 0x12, 0x23, 0xb6, 0x5d, 0xf6, 0x58, + 0x86, 0xc0, 0xea, 0xb0, 0x95, 0x8b, 0x50, 0xf5, 0x53, 0xd0, 0x6b, 0xd4, 0x77, 0x76, 0x5d, 0xf6, + 0xf0, 0x4e, 0x36, 0x4a, 0xce, 0x5c, 0x83, 0x7e, 0x4f, 0xa3, 0xb7, 0x58, 0x74, 0x91, 0x4e, 0x4d, + 0x9f, 0x08, 0xae, 0x27, 0x7c, 0xdf, 0x92, 0x0e, 0xe9, 0xd3, 0x90, 0xda, 0x70, 0xdb, 0x7e, 0xd1, + 0xe7, 0x1d, 0xa9, 0x37, 0x9a, 0x79, 0xbf, 0x02, 0xa9, 0x22, 0x42, 0x2d, 0x62, 0xf0, 0x7b, 0x21, + 0x59, 0xb4, 0x9f, 0xb6, 0x98, 0x82, 0xa3, 0xcc, 0xa2, 0x98, 0xcc, 0x6c, 0x4a, 0xc8, 0xfa, 0xbd, + 0x41, 0xbb, 0x8f, 0x79, 0x76, 0x0f, 0xf0, 0x11, 0xdb, 0x67, 0x04, 0xdb, 0x33, 0x07, 0x62, 0xa6, + 0x0e, 0xfb, 0x9f, 0x87, 0x81, 0xc0, 0x53, 0xf4, 0x19, 0xa6, 0x46, 0x42, 0x06, 0x06, 0x6d, 0x85, + 0x39, 0x32, 0x08, 0x86, 0x84, 0x07, 0x63, 0x68, 0xc0, 0xc4, 0x5d, 0xa0, 0xc4, 0xcc, 0xb3, 0xa2, + 0x99, 0xc3, 0x59, 0x99, 0xa9, 0xe7, 0xa9, 0x8d, 0x88, 0xb9, 0x4f, 0xd2, 0xe0, 0xec, 0xee, 0x44, + 0xfc, 0x39, 0xd3, 0x0b, 0x6a, 0xb9, 0xde, 0xc8, 0x3c, 0x04, 0x40, 0x53, 0xbe, 0x64, 0xed, 0x35, + 0xa5, 0xac, 0x1b, 0xe6, 0x06, 0xde, 0xdc, 0x45, 0x9b, 0xc8, 0x21, 0x2c, 0x62, 0x3f, 0x85, 0x0b, + 0x0c, 0xd0, 0x14, 0x23, 0xf8, 0xfb, 0x23, 0xf1, 0xa1, 0x9d, 0x18, 0x66, 0x4d, 0x53, 0xd6, 0x6b, + 0xc8, 0xcd, 0x59, 0xb6, 0xbb, 0x8b, 0xda, 0x12, 0x62, 0x41, 0x3f, 0x2b, 0x24, 0xec, 0xf0, 0xc2, + 0x5d, 0x1e, 0xa2, 0x2b, 0xe8, 0x6c, 0xe6, 0x4b, 0x44, 0x41, 0xdc, 0x0a, 0x74, 0x4c, 0x50, 0x8d, + 0x31, 0x41, 0xfd, 0x9c, 0xd0, 0xbf, 0x1d, 0xa0, 0xa6, 0xf4, 0x6a, 0x79, 0x51, 0x78, 0xcf, 0x39, + 0x58, 0x59, 0xf1, 0x1d, 0x93, 0xdb, 0x94, 0xab, 0x7c, 0x7f, 0xa4, 0xca, 0x5d, 0xba, 0xdb, 0xc3, + 0xda, 0x54, 0x8d, 0x6b, 0xd3, 0xaf, 0x7b, 0x1d, 0x07, 0xfd, 0xb1, 0x06, 0xf2, 0xdb, 0x20, 0xfa, + 0x03, 0x91, 0xbe, 0xcf, 0x2a, 0x05, 0x4f, 0xd5, 0xc5, 0xb8, 0xee, 0xcf, 0x26, 0xf2, 0x79, 0x4f, + 0xdd, 0xf3, 0x87, 0x08, 0x81, 0x6c, 0xa2, 0x50, 0xf0, 0xca, 0x76, 0xea, 0x43, 0x2f, 0x4c, 0x29, + 0x2f, 0xbe, 0x30, 0xd5, 0x93, 0xf9, 0xbc, 0x02, 0xa3, 0x8c, 0x33, 0x10, 0xb8, 0x0f, 0x4a, 0xca, + 0xdf, 0xc1, 0x6b, 0x46, 0x98, 0x05, 0x7e, 0x6a, 0xc1, 0xfb, 0x4d, 0x05, 0xd2, 0x1d, 0xba, 0x72, + 0x7b, 0xcf, 0xc7, 0x52, 0x39, 0xab, 0x94, 0x7e, 0xf6, 0x36, 0xbf, 0x06, 0xbd, 0x9b, 0xf5, 0x26, + 0x6a, 0xe3, 0x95, 0x00, 0x7f, 0xa0, 0x2a, 0xf3, 0xc3, 0x1c, 0x3a, 0xc4, 0x69, 0x54, 0x39, 0x81, + 0xb6, 0xa0, 0xa7, 0x21, 0x59, 0x34, 0x5d, 0x93, 0x68, 0x30, 0xe8, 0xd5, 0x57, 0xd3, 0x35, 0x33, + 0x67, 0x61, 0x70, 0x75, 0x9f, 0x5c, 0x95, 0xa9, 0x91, 0x6b, 0x20, 0x62, 0xf7, 0xc7, 0xfb, 0xd5, + 0x33, 0xb3, 0xbd, 0xa9, 0x9a, 0x76, 0x43, 0xc9, 0x26, 0x89, 0x3e, 0x4f, 0xc1, 0xf0, 0x1a, 0x56, + 0x9b, 0xe0, 0x04, 0x18, 0x7d, 0xba, 0xea, 0x4d, 0x5e, 0x6a, 0xca, 0x54, 0xbf, 0x29, 0x9b, 0x06, + 0x65, 0x55, 0x6c, 0x9d, 0x82, 0x7a, 0x18, 0xca, 0xea, 0x6c, 0x32, 0x35, 0xac, 0x8d, 0xce, 0x26, + 0x53, 0xa0, 0x0d, 0xb1, 0xe7, 0xfe, 0xa3, 0x0a, 0x1a, 0x6d, 0x75, 0x8a, 0x68, 0xbb, 0x6e, 0xd5, + 0xdd, 0xce, 0x7e, 0xd5, 0xd3, 0x58, 0x7f, 0x04, 0xfa, 0xb1, 0x49, 0x2f, 0xb3, 0x9f, 0xd8, 0xc2, + 0xa6, 0x3f, 0xc1, 0x5a, 0x14, 0x49, 0x04, 0x1b, 0x20, 0xa1, 0xe3, 0x63, 0xf4, 0xcb, 0xa0, 0x96, + 0xcb, 0xab, 0x6c, 0x71, 0x5b, 0x3c, 0x10, 0xca, 0x6e, 0xda, 0xb0, 0x6f, 0x6c, 0xcc, 0xd9, 0x31, + 0xb0, 0x00, 0x7d, 0x11, 0x12, 0xe5, 0x55, 0xd6, 0xf0, 0x9e, 0x8c, 0x23, 0xc6, 0x48, 0x94, 0x57, + 0x27, 0xfe, 0x4e, 0x81, 0x21, 0x61, 0x54, 0xcf, 0xc0, 0x20, 0x1d, 0x08, 0x4c, 0xb7, 0xcf, 0x10, + 0xc6, 0xb8, 0xce, 0x89, 0xdb, 0xd4, 0x79, 0x22, 0x07, 0x23, 0xd2, 0xb8, 0x3e, 0x07, 0x7a, 0x70, + 0x88, 0x29, 0x41, 0x7f, 0x9e, 0x28, 0x84, 0x92, 0xb9, 0x1b, 0xc0, 0xb7, 0xab, 0xf7, 0xab, 0x3a, + 0xe5, 0xd2, 0xc6, 0x66, 0xa9, 0xa8, 0x29, 0x99, 0xaf, 0x2a, 0x30, 0xc0, 0xda, 0xd6, 0xaa, 0xdd, + 0x42, 0x7a, 0x1e, 0x94, 0x1c, 0x8b, 0x87, 0x37, 0xa7, 0xb7, 0x92, 0xd3, 0x4f, 0x83, 0x92, 0x8f, + 0xef, 0x6a, 0x25, 0xaf, 0x2f, 0x80, 0x52, 0x60, 0x0e, 0x8e, 0xe7, 0x19, 0xa5, 0x90, 0xf9, 0x81, + 0x0a, 0x63, 0xc1, 0x36, 0x9a, 0xd7, 0x93, 0x13, 0xe2, 0x7b, 0x53, 0xb6, 0xff, 0xcc, 0xc2, 0xd9, + 0xc5, 0x39, 0xfc, 0x8f, 0x17, 0x92, 0x27, 0xc4, 0x57, 0xa8, 0x4e, 0x96, 0x8e, 0x6b, 0x22, 0xd9, + 0x64, 0x80, 0xda, 0x71, 0x4d, 0x44, 0xa0, 0x76, 0x5c, 0x13, 0x11, 0xa8, 0x1d, 0xd7, 0x44, 0x04, + 0x6a, 0xc7, 0x51, 0x80, 0x40, 0xed, 0xb8, 0x26, 0x22, 0x50, 0x3b, 0xae, 0x89, 0x08, 0xd4, 0xce, + 0x6b, 0x22, 0x8c, 0xdc, 0xf5, 0x9a, 0x88, 0x48, 0xef, 0xbc, 0x26, 0x22, 0xd2, 0x3b, 0xaf, 0x89, + 0x64, 0x93, 0x6e, 0x7b, 0x0f, 0x75, 0x3f, 0x74, 0x10, 0xf1, 0x07, 0xbd, 0x03, 0xfa, 0x05, 0x78, + 0x0d, 0x46, 0xe8, 0x7e, 0x44, 0xc1, 0xb6, 0x5c, 0xb3, 0x6e, 0xa1, 0xb6, 0xfe, 0x4e, 0x18, 0xa4, + 0x43, 0xf4, 0x2d, 0x27, 0xec, 0x2d, 0x90, 0xd2, 0x59, 0xb9, 0x15, 0xb8, 0x33, 0x3f, 0x49, 0xc2, + 0x38, 0x1d, 0x28, 0x9b, 0x4d, 0x24, 0x5c, 0x32, 0x3a, 0x25, 0x1d, 0x29, 0x0d, 0x63, 0xf8, 0xad, + 0x57, 0xa6, 0xe8, 0x68, 0xce, 0x0b, 0xa6, 0x53, 0xd2, 0xe1, 0x92, 0xc8, 0xe7, 0xaf, 0x3f, 0xa7, + 0xa4, 0x8b, 0x47, 0x22, 0x9f, 0xb7, 0xdc, 0x78, 0x7c, 0xfc, 0x0a, 0x92, 0xc8, 0x57, 0xf4, 0xa2, + 0xec, 0x94, 0x74, 0x19, 0x49, 0xe4, 0x2b, 0x79, 0xf1, 0x76, 0x4a, 0x3a, 0x7a, 0x12, 0xf9, 0x2e, + 0x7b, 0x91, 0x77, 0x4a, 0x3a, 0x84, 0x12, 0xf9, 0xae, 0x78, 0x31, 0x78, 0x4a, 0xba, 0xaa, 0x24, + 0xf2, 0x3d, 0xea, 0x45, 0xe3, 0x29, 0xe9, 0xd2, 0x92, 0xc8, 0xb7, 0xec, 0xc5, 0xe5, 0x8c, 0x7c, + 0x7d, 0x49, 0x64, 0xbc, 0xea, 0x47, 0xe8, 0x8c, 0x7c, 0x91, 0x49, 0xe4, 0x7c, 0x97, 0x1f, 0xab, + 0x33, 0xf2, 0x95, 0x26, 0x91, 0x73, 0xc5, 0x8f, 0xda, 0x19, 0xf9, 0xa8, 0x4c, 0xe4, 0x5c, 0xf5, + 0xe3, 0x77, 0x46, 0x3e, 0x34, 0x13, 0x39, 0xcb, 0x7e, 0x24, 0xcf, 0xc8, 0xc7, 0x67, 0x22, 0xe7, + 0x9a, 0xbf, 0x87, 0xfe, 0x0d, 0x29, 0xfc, 0x02, 0x97, 0xa0, 0x32, 0x52, 0xf8, 0x41, 0x48, 0xe8, + 0x65, 0xa4, 0xd0, 0x83, 0x90, 0xb0, 0xcb, 0x48, 0x61, 0x07, 0x21, 0x21, 0x97, 0x91, 0x42, 0x0e, + 0x42, 0xc2, 0x2d, 0x23, 0x85, 0x1b, 0x84, 0x84, 0x5a, 0x46, 0x0a, 0x35, 0x08, 0x09, 0xb3, 0x8c, + 0x14, 0x66, 0x10, 0x12, 0x62, 0x19, 0x29, 0xc4, 0x20, 0x24, 0xbc, 0x32, 0x52, 0x78, 0x41, 0x48, + 0x68, 0x9d, 0x94, 0x43, 0x0b, 0xc2, 0xc2, 0xea, 0xa4, 0x1c, 0x56, 0x10, 0x16, 0x52, 0xf7, 0xc8, + 0x21, 0xd5, 0x7f, 0xeb, 0x95, 0xa9, 0x5e, 0x3c, 0x14, 0x88, 0xa6, 0x93, 0x72, 0x34, 0x41, 0x58, + 0x24, 0x9d, 0x94, 0x23, 0x09, 0xc2, 0xa2, 0xe8, 0xa4, 0x1c, 0x45, 0x10, 0x16, 0x41, 0x2f, 0xc9, + 0x11, 0xe4, 0x5f, 0xf1, 0xc9, 0x48, 0x27, 0x8a, 0x51, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, + 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, + 0x23, 0x82, 0xd4, 0x38, 0x11, 0xa4, 0xc6, 0x8a, 0x20, 0xb5, 0x5b, 0x04, 0x9d, 0x94, 0x2f, 0x3c, + 0x40, 0x58, 0x41, 0x3a, 0x29, 0x9f, 0x7c, 0x46, 0x87, 0x90, 0x1a, 0x2b, 0x84, 0xd4, 0x6e, 0x21, + 0xf4, 0x0d, 0x15, 0xc6, 0x84, 0x10, 0x62, 0xc7, 0x43, 0x6f, 0x55, 0x05, 0x3a, 0x17, 0xe3, 0x7e, + 0x45, 0x58, 0x4c, 0x9d, 0x8b, 0x71, 0x46, 0x7d, 0x50, 0x9c, 0x75, 0x56, 0xa1, 0x52, 0x8c, 0x2a, + 0x74, 0xd9, 0x8b, 0xa1, 0x73, 0x31, 0xee, 0x5d, 0x74, 0xc6, 0xde, 0x85, 0x83, 0x8a, 0xc0, 0xa3, + 0xb1, 0x8a, 0xc0, 0x72, 0xac, 0x22, 0x70, 0xd5, 0xf7, 0xe0, 0x07, 0x13, 0x70, 0xd4, 0xf7, 0x20, + 0xfd, 0x44, 0x7e, 0x0a, 0x29, 0x13, 0x38, 0xa1, 0xd2, 0xf9, 0xa9, 0x4d, 0xc0, 0x8d, 0x89, 0xe5, + 0x9a, 0xbe, 0x2e, 0x9e, 0x55, 0x65, 0x0f, 0x7b, 0x7e, 0x13, 0xf0, 0x38, 0xdb, 0x0b, 0x3d, 0x09, + 0xea, 0x72, 0xcd, 0x21, 0xd5, 0x22, 0xec, 0xb1, 0x05, 0x03, 0x93, 0x75, 0x03, 0xfa, 0x08, 0xbb, + 0x43, 0xdc, 0x7b, 0x3b, 0x0f, 0x2e, 0x1a, 0x4c, 0x52, 0xe6, 0x25, 0x05, 0xa6, 0x85, 0x50, 0x7e, + 0x6b, 0x4e, 0x0c, 0x2e, 0xc5, 0x3a, 0x31, 0x10, 0x12, 0xc4, 0x3f, 0x3d, 0xb8, 0xaf, 0xf3, 0xa0, + 0x3a, 0x98, 0x25, 0xf2, 0x49, 0xc2, 0x2f, 0xc1, 0xb0, 0x3f, 0x03, 0xf2, 0xca, 0xb6, 0x14, 0xbd, + 0x99, 0x19, 0x96, 0x9a, 0x4b, 0xd2, 0x26, 0xda, 0x81, 0x30, 0x2f, 0x5b, 0x33, 0x59, 0x18, 0x29, + 0x8b, 0x7f, 0xb3, 0x13, 0xb5, 0x17, 0x91, 0xc2, 0xad, 0xf9, 0x8d, 0x4f, 0x4f, 0xf5, 0x64, 0x1e, + 0x80, 0xc1, 0xe0, 0x9f, 0xe5, 0x48, 0xc0, 0x7e, 0x0e, 0xcc, 0x26, 0x5f, 0xc6, 0xdc, 0x7f, 0xa0, + 0xc0, 0x1d, 0x41, 0xf6, 0xc7, 0xea, 0xee, 0xee, 0xb2, 0x85, 0x7b, 0xfa, 0x87, 0x20, 0x85, 0x98, + 0xe3, 0xd8, 0xaf, 0x9a, 0xb0, 0xd7, 0xc8, 0x50, 0xf6, 0x39, 0xf2, 0xaf, 0xe1, 0x41, 0xa4, 0x4d, + 0x10, 0xfe, 0xd8, 0x85, 0x89, 0x7b, 0xa1, 0x97, 0xca, 0x17, 0xf5, 0x1a, 0x92, 0xf4, 0xfa, 0x6c, + 0x88, 0x5e, 0x24, 0x8e, 0xf4, 0xab, 0x82, 0x5e, 0x81, 0xb7, 0xd5, 0x50, 0xf6, 0x39, 0x1e, 0x7c, + 0xf9, 0x14, 0xee, 0xff, 0x48, 0x44, 0x45, 0x2b, 0x39, 0x03, 0xa9, 0x92, 0xcc, 0x13, 0xae, 0x67, + 0x11, 0x92, 0x65, 0xbb, 0x46, 0x7e, 0x6f, 0x85, 0xfc, 0x2e, 0x2e, 0x33, 0x32, 0xfb, 0x91, 0xdc, + 0x53, 0x90, 0x2a, 0xec, 0xd6, 0x1b, 0xb5, 0x36, 0xb2, 0xd8, 0x91, 0x3d, 0xdb, 0x41, 0xc7, 0x18, + 0xc3, 0xa3, 0x65, 0x0a, 0x30, 0x5a, 0xb6, 0xad, 0xfc, 0xbe, 0x1b, 0xac, 0x1b, 0x73, 0x52, 0x8a, + 0xb0, 0x23, 0x1f, 0xf2, 0x87, 0x1e, 0x98, 0x21, 0xdf, 0xfb, 0xed, 0x57, 0xa6, 0x94, 0x4d, 0x6f, + 0xfb, 0x7c, 0x15, 0x8e, 0xb1, 0xf4, 0xe9, 0x10, 0xb5, 0x10, 0x25, 0xaa, 0x9f, 0x1d, 0x53, 0x07, + 0xc4, 0x2d, 0x63, 0x71, 0x56, 0xa8, 0xb8, 0x37, 0xa7, 0x19, 0x6e, 0x8a, 0x0e, 0xd4, 0x4c, 0x3d, + 0x94, 0x66, 0xa1, 0xe2, 0xe6, 0xa2, 0xc4, 0x49, 0x9a, 0xdd, 0x03, 0xfd, 0x1e, 0x2d, 0x10, 0x0d, + 0xc1, 0x4c, 0x59, 0x98, 0xcd, 0xc0, 0x40, 0x20, 0x61, 0xf5, 0x5e, 0x50, 0x72, 0x5a, 0x0f, 0xfe, + 0x2f, 0xaf, 0x29, 0xf8, 0xbf, 0x82, 0x96, 0x98, 0xbd, 0x17, 0x46, 0xa4, 0xed, 0x4b, 0x4c, 0x29, + 0x6a, 0x80, 0xff, 0x2b, 0x69, 0x03, 0x13, 0xc9, 0x0f, 0xfd, 0xf1, 0x64, 0xcf, 0xec, 0x25, 0xd0, + 0x3b, 0x37, 0x3a, 0xf5, 0x3e, 0x48, 0xe4, 0xb0, 0xc8, 0x63, 0x90, 0xc8, 0xe7, 0x35, 0x65, 0x62, + 0xe4, 0xd7, 0x3f, 0x39, 0x3d, 0x90, 0x27, 0x7f, 0x73, 0x7c, 0x0d, 0xb9, 0xf9, 0x3c, 0x03, 0x3f, + 0x0c, 0x77, 0x84, 0x6e, 0x94, 0x62, 0x7c, 0xa1, 0x40, 0xf1, 0xc5, 0x62, 0x07, 0xbe, 0x58, 0x24, + 0x78, 0x25, 0xcb, 0x0f, 0x9c, 0x73, 0x7a, 0xc8, 0x26, 0x63, 0xba, 0x16, 0x38, 0xe0, 0xce, 0x65, + 0x1f, 0x66, 0xbc, 0xf9, 0x50, 0x5e, 0x14, 0x71, 0x60, 0x9d, 0xcf, 0x16, 0x18, 0xbe, 0x10, 0x8a, + 0xdf, 0x96, 0x4e, 0x55, 0xc5, 0x15, 0x82, 0x09, 0x29, 0x78, 0x0a, 0x17, 0x43, 0x85, 0xec, 0x06, + 0xee, 0xba, 0x17, 0x3d, 0x85, 0x4b, 0xa1, 0xbc, 0xf5, 0x88, 0x3b, 0x5f, 0xa5, 0xec, 0x69, 0xb6, + 0xc8, 0xe7, 0xce, 0xe8, 0x77, 0xf0, 0x1c, 0x15, 0x2a, 0x30, 0x33, 0x10, 0xe7, 0xca, 0x16, 0x18, + 0x20, 0xdf, 0x15, 0xd0, 0xdd, 0x4a, 0x1c, 0x99, 0x7d, 0x94, 0x09, 0x29, 0x74, 0x15, 0x12, 0x61, + 0x2a, 0x0e, 0xcf, 0x6f, 0xde, 0xb8, 0x39, 0xd9, 0xf3, 0xf2, 0xcd, 0xc9, 0x9e, 0x7f, 0xbd, 0x39, + 0xd9, 0xf3, 0x9d, 0x9b, 0x93, 0xca, 0xf7, 0x6e, 0x4e, 0x2a, 0xdf, 0xbf, 0x39, 0xa9, 0xfc, 0xf8, + 0xe6, 0xa4, 0xf2, 0xdc, 0xad, 0x49, 0xe5, 0xc5, 0x5b, 0x93, 0xca, 0x97, 0x6e, 0x4d, 0x2a, 0x5f, + 0xbb, 0x35, 0xa9, 0xbc, 0x74, 0x6b, 0x52, 0xb9, 0x71, 0x6b, 0xb2, 0xe7, 0xe5, 0x5b, 0x93, 0x3d, + 0xdf, 0xb9, 0x35, 0xa9, 0x7c, 0xef, 0xd6, 0x64, 0xcf, 0xf7, 0x6f, 0x4d, 0x2a, 0x3f, 0xbe, 0x35, + 0xa9, 0x3c, 0xf7, 0xea, 0xa4, 0xf2, 0xc2, 0xab, 0x93, 0x3d, 0x2f, 0xbe, 0x3a, 0xa9, 0xfc, 0x7f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, 0xa8, 0x67, 0xae, 0xab, 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/combos/unsafemarshaler/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/combos/unsafemarshaler/thetest.pb.go index bb85c3a2a..506e3bbcd 100644 --- a/vendor/github.com/gogo/protobuf/test/combos/unsafemarshaler/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/combos/unsafemarshaler/thetest.pb.go @@ -6969,407 +6969,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6392 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0x6b, 0x70, 0x24, 0x57, - 0x75, 0x56, 0x4f, 0x8f, 0xb4, 0xa3, 0xa3, 0x57, 0xab, 0x77, 0x2d, 0x8f, 0xe5, 0xf5, 0x48, 0x3b, - 0x96, 0xd7, 0xb2, 0xb0, 0xb5, 0x5a, 0xad, 0xf6, 0x35, 0x8b, 0xed, 0x9a, 0xd7, 0xca, 0xda, 0xe8, - 0x45, 0x4b, 0x02, 0x1b, 0x52, 0x35, 0xd5, 0x3b, 0x73, 0x25, 0x8d, 0x3d, 0xd3, 0x3d, 0x99, 0xee, - 0xb1, 0x2d, 0xff, 0x48, 0x19, 0x48, 0x08, 0x84, 0xca, 0x93, 0xa4, 0xc2, 0xd3, 0x18, 0x52, 0x04, - 0x43, 0x5e, 0x90, 0x10, 0x42, 0x51, 0xa9, 0xe0, 0x3f, 0x24, 0x9b, 0x3f, 0x29, 0x93, 0x5f, 0x29, - 0x2a, 0xe5, 0xc2, 0x0b, 0x55, 0x21, 0x89, 0x93, 0x40, 0x70, 0x15, 0x54, 0x99, 0x1f, 0xa9, 0xfb, - 0xea, 0xee, 0x7b, 0xa7, 0x47, 0xdd, 0xf2, 0xda, 0xc0, 0x9f, 0xdd, 0x99, 0x7b, 0xce, 0x77, 0xfa, - 0xdc, 0xf3, 0xba, 0xa7, 0xef, 0xbd, 0x1a, 0x78, 0xef, 0x12, 0x4c, 0xef, 0xd9, 0xf6, 0x5e, 0x03, - 0x9d, 0x69, 0xb5, 0x6d, 0xd7, 0xbe, 0xde, 0xd9, 0x3d, 0x53, 0x43, 0x4e, 0xb5, 0x5d, 0x6f, 0xb9, - 0x76, 0x7b, 0x9e, 0x8c, 0xe9, 0x63, 0x94, 0x63, 0x9e, 0x73, 0x64, 0xd7, 0x60, 0xfc, 0x6a, 0xbd, - 0x81, 0x4a, 0x1e, 0xe3, 0x16, 0x72, 0xf5, 0x4b, 0x90, 0xdc, 0xad, 0x37, 0x50, 0x5a, 0x99, 0x56, - 0x67, 0x87, 0x16, 0x67, 0xe6, 0x25, 0xd0, 0xbc, 0x88, 0xd8, 0xc4, 0xc3, 0x06, 0x41, 0x64, 0xbf, - 0x97, 0x84, 0xe3, 0x21, 0x54, 0x5d, 0x87, 0xa4, 0x65, 0x36, 0xb1, 0x44, 0x65, 0x76, 0xd0, 0x20, - 0x9f, 0xf5, 0x34, 0x1c, 0x6b, 0x99, 0xd5, 0x27, 0xcc, 0x3d, 0x94, 0x4e, 0x90, 0x61, 0xfe, 0x55, - 0xcf, 0x00, 0xd4, 0x50, 0x0b, 0x59, 0x35, 0x64, 0x55, 0x0f, 0xd2, 0xea, 0xb4, 0x3a, 0x3b, 0x68, - 0x04, 0x46, 0xf4, 0xb7, 0xc1, 0x78, 0xab, 0x73, 0xbd, 0x51, 0xaf, 0x56, 0x02, 0x6c, 0x30, 0xad, - 0xce, 0xf6, 0x1b, 0x1a, 0x25, 0x94, 0x7c, 0xe6, 0x7b, 0x61, 0xec, 0x29, 0x64, 0x3e, 0x11, 0x64, - 0x1d, 0x22, 0xac, 0xa3, 0x78, 0x38, 0xc0, 0x58, 0x84, 0xe1, 0x26, 0x72, 0x1c, 0x73, 0x0f, 0x55, - 0xdc, 0x83, 0x16, 0x4a, 0x27, 0xc9, 0xec, 0xa7, 0xbb, 0x66, 0x2f, 0xcf, 0x7c, 0x88, 0xa1, 0xb6, - 0x0f, 0x5a, 0x48, 0xcf, 0xc3, 0x20, 0xb2, 0x3a, 0x4d, 0x2a, 0xa1, 0xbf, 0x87, 0xfd, 0xca, 0x56, - 0xa7, 0x29, 0x4b, 0x49, 0x61, 0x18, 0x13, 0x71, 0xcc, 0x41, 0xed, 0x27, 0xeb, 0x55, 0x94, 0x1e, - 0x20, 0x02, 0xee, 0xed, 0x12, 0xb0, 0x45, 0xe9, 0xb2, 0x0c, 0x8e, 0xd3, 0x8b, 0x30, 0x88, 0x9e, - 0x76, 0x91, 0xe5, 0xd4, 0x6d, 0x2b, 0x7d, 0x8c, 0x08, 0xb9, 0x27, 0xc4, 0x8b, 0xa8, 0x51, 0x93, - 0x45, 0xf8, 0x38, 0xfd, 0x02, 0x1c, 0xb3, 0x5b, 0x6e, 0xdd, 0xb6, 0x9c, 0x74, 0x6a, 0x5a, 0x99, - 0x1d, 0x5a, 0x3c, 0x19, 0x1a, 0x08, 0x1b, 0x94, 0xc7, 0xe0, 0xcc, 0xfa, 0x0a, 0x68, 0x8e, 0xdd, - 0x69, 0x57, 0x51, 0xa5, 0x6a, 0xd7, 0x50, 0xa5, 0x6e, 0xed, 0xda, 0xe9, 0x41, 0x22, 0x60, 0xaa, - 0x7b, 0x22, 0x84, 0xb1, 0x68, 0xd7, 0xd0, 0x8a, 0xb5, 0x6b, 0x1b, 0xa3, 0x8e, 0xf0, 0x5d, 0x9f, - 0x80, 0x01, 0xe7, 0xc0, 0x72, 0xcd, 0xa7, 0xd3, 0xc3, 0x24, 0x42, 0xd8, 0xb7, 0xec, 0x8f, 0xfb, - 0x61, 0x2c, 0x4e, 0x88, 0x5d, 0x81, 0xfe, 0x5d, 0x3c, 0xcb, 0x74, 0xe2, 0x28, 0x36, 0xa0, 0x18, - 0xd1, 0x88, 0x03, 0x6f, 0xd0, 0x88, 0x79, 0x18, 0xb2, 0x90, 0xe3, 0xa2, 0x1a, 0x8d, 0x08, 0x35, - 0x66, 0x4c, 0x01, 0x05, 0x75, 0x87, 0x54, 0xf2, 0x0d, 0x85, 0xd4, 0xa3, 0x30, 0xe6, 0xa9, 0x54, - 0x69, 0x9b, 0xd6, 0x1e, 0x8f, 0xcd, 0x33, 0x51, 0x9a, 0xcc, 0x97, 0x39, 0xce, 0xc0, 0x30, 0x63, - 0x14, 0x09, 0xdf, 0xf5, 0x12, 0x80, 0x6d, 0x21, 0x7b, 0xb7, 0x52, 0x43, 0xd5, 0x46, 0x3a, 0xd5, - 0xc3, 0x4a, 0x1b, 0x98, 0xa5, 0xcb, 0x4a, 0x36, 0x1d, 0xad, 0x36, 0xf4, 0xcb, 0x7e, 0xa8, 0x1d, - 0xeb, 0x11, 0x29, 0x6b, 0x34, 0xc9, 0xba, 0xa2, 0x6d, 0x07, 0x46, 0xdb, 0x08, 0xc7, 0x3d, 0xaa, - 0xb1, 0x99, 0x0d, 0x12, 0x25, 0xe6, 0x23, 0x67, 0x66, 0x30, 0x18, 0x9d, 0xd8, 0x48, 0x3b, 0xf8, - 0x55, 0xbf, 0x1b, 0xbc, 0x81, 0x0a, 0x09, 0x2b, 0x20, 0x55, 0x68, 0x98, 0x0f, 0xae, 0x9b, 0x4d, - 0x34, 0x79, 0x09, 0x46, 0x45, 0xf3, 0xe8, 0x27, 0xa0, 0xdf, 0x71, 0xcd, 0xb6, 0x4b, 0xa2, 0xb0, - 0xdf, 0xa0, 0x5f, 0x74, 0x0d, 0x54, 0x64, 0xd5, 0x48, 0x95, 0xeb, 0x37, 0xf0, 0xc7, 0xc9, 0x8b, - 0x30, 0x22, 0x3c, 0x3e, 0x2e, 0x30, 0xfb, 0xd1, 0x01, 0x38, 0x11, 0x16, 0x73, 0xa1, 0xe1, 0x3f, - 0x01, 0x03, 0x56, 0xa7, 0x79, 0x1d, 0xb5, 0xd3, 0x2a, 0x91, 0xc0, 0xbe, 0xe9, 0x79, 0xe8, 0x6f, - 0x98, 0xd7, 0x51, 0x23, 0x9d, 0x9c, 0x56, 0x66, 0x47, 0x17, 0xdf, 0x16, 0x2b, 0xaa, 0xe7, 0x57, - 0x31, 0xc4, 0xa0, 0x48, 0xfd, 0x21, 0x48, 0xb2, 0x12, 0x87, 0x25, 0xcc, 0xc5, 0x93, 0x80, 0x63, - 0xd1, 0x20, 0x38, 0xfd, 0x4e, 0x18, 0xc4, 0xff, 0x53, 0xdb, 0x0e, 0x10, 0x9d, 0x53, 0x78, 0x00, - 0xdb, 0x55, 0x9f, 0x84, 0x14, 0x09, 0xb3, 0x1a, 0xe2, 0x4b, 0x83, 0xf7, 0x1d, 0x3b, 0xa6, 0x86, - 0x76, 0xcd, 0x4e, 0xc3, 0xad, 0x3c, 0x69, 0x36, 0x3a, 0x88, 0x04, 0xcc, 0xa0, 0x31, 0xcc, 0x06, - 0xdf, 0x89, 0xc7, 0xf4, 0x29, 0x18, 0xa2, 0x51, 0x59, 0xb7, 0x6a, 0xe8, 0x69, 0x52, 0x7d, 0xfa, - 0x0d, 0x1a, 0xa8, 0x2b, 0x78, 0x04, 0x3f, 0xfe, 0x71, 0xc7, 0xb6, 0xb8, 0x6b, 0xc9, 0x23, 0xf0, - 0x00, 0x79, 0xfc, 0x45, 0xb9, 0xf0, 0xdd, 0x15, 0x3e, 0x3d, 0x39, 0x16, 0xb3, 0x5f, 0x4d, 0x40, - 0x92, 0xe4, 0xdb, 0x18, 0x0c, 0x6d, 0x3f, 0xb6, 0x59, 0xae, 0x94, 0x36, 0x76, 0x0a, 0xab, 0x65, - 0x4d, 0xd1, 0x47, 0x01, 0xc8, 0xc0, 0xd5, 0xd5, 0x8d, 0xfc, 0xb6, 0x96, 0xf0, 0xbe, 0xaf, 0xac, - 0x6f, 0x5f, 0x58, 0xd2, 0x54, 0x0f, 0xb0, 0x43, 0x07, 0x92, 0x41, 0x86, 0x73, 0x8b, 0x5a, 0xbf, - 0xae, 0xc1, 0x30, 0x15, 0xb0, 0xf2, 0x68, 0xb9, 0x74, 0x61, 0x49, 0x1b, 0x10, 0x47, 0xce, 0x2d, - 0x6a, 0xc7, 0xf4, 0x11, 0x18, 0x24, 0x23, 0x85, 0x8d, 0x8d, 0x55, 0x2d, 0xe5, 0xc9, 0xdc, 0xda, - 0x36, 0x56, 0xd6, 0x97, 0xb5, 0x41, 0x4f, 0xe6, 0xb2, 0xb1, 0xb1, 0xb3, 0xa9, 0x81, 0x27, 0x61, - 0xad, 0xbc, 0xb5, 0x95, 0x5f, 0x2e, 0x6b, 0x43, 0x1e, 0x47, 0xe1, 0xb1, 0xed, 0xf2, 0x96, 0x36, - 0x2c, 0xa8, 0x75, 0x6e, 0x51, 0x1b, 0xf1, 0x1e, 0x51, 0x5e, 0xdf, 0x59, 0xd3, 0x46, 0xf5, 0x71, - 0x18, 0xa1, 0x8f, 0xe0, 0x4a, 0x8c, 0x49, 0x43, 0x17, 0x96, 0x34, 0xcd, 0x57, 0x84, 0x4a, 0x19, - 0x17, 0x06, 0x2e, 0x2c, 0x69, 0x7a, 0xb6, 0x08, 0xfd, 0x24, 0xba, 0x74, 0x1d, 0x46, 0x57, 0xf3, - 0x85, 0xf2, 0x6a, 0x65, 0x63, 0x73, 0x7b, 0x65, 0x63, 0x3d, 0xbf, 0xaa, 0x29, 0xfe, 0x98, 0x51, - 0x7e, 0xc7, 0xce, 0x8a, 0x51, 0x2e, 0x69, 0x89, 0xe0, 0xd8, 0x66, 0x39, 0xbf, 0x5d, 0x2e, 0x69, - 0x6a, 0xb6, 0x0a, 0x27, 0xc2, 0xea, 0x4c, 0x68, 0x66, 0x04, 0x5c, 0x9c, 0xe8, 0xe1, 0x62, 0x22, - 0xab, 0xcb, 0xc5, 0x9f, 0x55, 0xe0, 0x78, 0x48, 0xad, 0x0d, 0x7d, 0xc8, 0xc3, 0xd0, 0x4f, 0x43, - 0x94, 0xae, 0x3e, 0xf7, 0x85, 0x16, 0x6d, 0x12, 0xb0, 0x5d, 0x2b, 0x10, 0xc1, 0x05, 0x57, 0x60, - 0xb5, 0xc7, 0x0a, 0x8c, 0x45, 0x74, 0x29, 0xf9, 0x7e, 0x05, 0xd2, 0xbd, 0x64, 0x47, 0x14, 0x8a, - 0x84, 0x50, 0x28, 0xae, 0xc8, 0x0a, 0x9c, 0xea, 0x3d, 0x87, 0x2e, 0x2d, 0x3e, 0xaf, 0xc0, 0x44, - 0x78, 0xa3, 0x12, 0xaa, 0xc3, 0x43, 0x30, 0xd0, 0x44, 0xee, 0xbe, 0xcd, 0x17, 0xeb, 0xd3, 0x21, - 0x4b, 0x00, 0x26, 0xcb, 0xb6, 0x62, 0xa8, 0xe0, 0x1a, 0xa2, 0xf6, 0xea, 0x36, 0xa8, 0x36, 0x5d, - 0x9a, 0x7e, 0x28, 0x01, 0xb7, 0x85, 0x0a, 0x0f, 0x55, 0xf4, 0x2e, 0x80, 0xba, 0xd5, 0xea, 0xb8, - 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x90, 0x8c, 0x90, 0xdc, 0xc7, 0xb5, 0xa7, 0xe3, 0x7a, 0x74, 0x95, - 0xd0, 0x81, 0x0e, 0x11, 0x86, 0x4b, 0xbe, 0xa2, 0x49, 0xa2, 0x68, 0xa6, 0xc7, 0x4c, 0xbb, 0xd6, - 0xba, 0x05, 0xd0, 0xaa, 0x8d, 0x3a, 0xb2, 0xdc, 0x8a, 0xe3, 0xb6, 0x91, 0xd9, 0xac, 0x5b, 0x7b, - 0xa4, 0x00, 0xa7, 0x72, 0xfd, 0xbb, 0x66, 0xc3, 0x41, 0xc6, 0x18, 0x25, 0x6f, 0x71, 0x2a, 0x46, - 0x90, 0x55, 0xa6, 0x1d, 0x40, 0x0c, 0x08, 0x08, 0x4a, 0xf6, 0x10, 0xd9, 0x0f, 0x1f, 0x83, 0xa1, - 0x40, 0x5b, 0xa7, 0x9f, 0x82, 0xe1, 0xc7, 0xcd, 0x27, 0xcd, 0x0a, 0x6f, 0xd5, 0xa9, 0x25, 0x86, - 0xf0, 0xd8, 0x26, 0x6b, 0xd7, 0x17, 0xe0, 0x04, 0x61, 0xb1, 0x3b, 0x2e, 0x6a, 0x57, 0xaa, 0x0d, - 0xd3, 0x71, 0x88, 0xd1, 0x52, 0x84, 0x55, 0xc7, 0xb4, 0x0d, 0x4c, 0x2a, 0x72, 0x8a, 0x7e, 0x1e, - 0x8e, 0x13, 0x44, 0xb3, 0xd3, 0x70, 0xeb, 0xad, 0x06, 0xaa, 0xe0, 0x97, 0x07, 0x87, 0x14, 0x62, - 0x4f, 0xb3, 0x71, 0xcc, 0xb1, 0xc6, 0x18, 0xb0, 0x46, 0x8e, 0xbe, 0x0c, 0x77, 0x11, 0xd8, 0x1e, - 0xb2, 0x50, 0xdb, 0x74, 0x51, 0x05, 0xfd, 0x4a, 0xc7, 0x6c, 0x38, 0x15, 0xd3, 0xaa, 0x55, 0xf6, - 0x4d, 0x67, 0x3f, 0x7d, 0x22, 0x28, 0xe0, 0x0e, 0xcc, 0xbb, 0xcc, 0x58, 0xcb, 0x84, 0x33, 0x6f, - 0xd5, 0x1e, 0x31, 0x9d, 0x7d, 0x3d, 0x07, 0x13, 0x44, 0x90, 0xe3, 0xb6, 0xeb, 0xd6, 0x5e, 0xa5, - 0xba, 0x8f, 0xaa, 0x4f, 0x54, 0x3a, 0xee, 0xee, 0xa5, 0xf4, 0x9d, 0x41, 0x09, 0x44, 0xc9, 0x2d, - 0xc2, 0x53, 0xc4, 0x2c, 0x3b, 0xee, 0xee, 0x25, 0x7d, 0x0b, 0x86, 0xb1, 0x3f, 0x9a, 0xf5, 0x67, - 0x50, 0x65, 0xd7, 0x6e, 0x93, 0xc5, 0x65, 0x34, 0x24, 0xb9, 0x03, 0x46, 0x9c, 0xdf, 0x60, 0x80, - 0x35, 0xbb, 0x86, 0x72, 0xfd, 0x5b, 0x9b, 0xe5, 0x72, 0xc9, 0x18, 0xe2, 0x52, 0xae, 0xda, 0x6d, - 0x1c, 0x53, 0x7b, 0xb6, 0x67, 0xe3, 0x21, 0x1a, 0x53, 0x7b, 0x36, 0xb7, 0xf0, 0x79, 0x38, 0x5e, - 0xad, 0xd2, 0x69, 0xd7, 0xab, 0x15, 0xd6, 0xe5, 0x3b, 0x69, 0x4d, 0xb0, 0x57, 0xb5, 0xba, 0x4c, - 0x19, 0x58, 0x98, 0x3b, 0xfa, 0x65, 0xb8, 0xcd, 0xb7, 0x57, 0x10, 0x38, 0xde, 0x35, 0x4b, 0x19, - 0x7a, 0x1e, 0x8e, 0xb7, 0x0e, 0xba, 0x81, 0xba, 0xf0, 0xc4, 0xd6, 0x81, 0x0c, 0xbb, 0x87, 0xbc, - 0xb9, 0xb5, 0x51, 0xd5, 0x74, 0x51, 0x2d, 0x7d, 0x7b, 0x90, 0x3b, 0x40, 0xd0, 0xcf, 0x80, 0x56, - 0xad, 0x56, 0x90, 0x65, 0x5e, 0x6f, 0xa0, 0x8a, 0xd9, 0x46, 0x96, 0xe9, 0xa4, 0xa7, 0x82, 0xcc, - 0xa3, 0xd5, 0x6a, 0x99, 0x50, 0xf3, 0x84, 0xa8, 0xcf, 0xc1, 0xb8, 0x7d, 0xfd, 0xf1, 0x2a, 0x0d, - 0xae, 0x4a, 0xab, 0x8d, 0x76, 0xeb, 0x4f, 0xa7, 0x67, 0x88, 0x99, 0xc6, 0x30, 0x81, 0x84, 0xd6, - 0x26, 0x19, 0xd6, 0xef, 0x03, 0xad, 0xea, 0xec, 0x9b, 0xed, 0x16, 0x59, 0xdd, 0x9d, 0x96, 0x59, - 0x45, 0xe9, 0x7b, 0x28, 0x2b, 0x1d, 0x5f, 0xe7, 0xc3, 0xfa, 0xa3, 0x70, 0xa2, 0x63, 0xd5, 0x2d, - 0x17, 0xb5, 0x5b, 0x6d, 0x84, 0x9b, 0x74, 0x9a, 0x69, 0xe9, 0x7f, 0x3f, 0xd6, 0xa3, 0xcd, 0xde, - 0x09, 0x72, 0x53, 0xef, 0x1a, 0xc7, 0x3b, 0xdd, 0x83, 0xd9, 0x1c, 0x0c, 0x07, 0x9d, 0xae, 0x0f, - 0x02, 0x75, 0xbb, 0xa6, 0xe0, 0x35, 0xb4, 0xb8, 0x51, 0xc2, 0xab, 0xdf, 0xbb, 0xcb, 0x5a, 0x02, - 0xaf, 0xc2, 0xab, 0x2b, 0xdb, 0xe5, 0x8a, 0xb1, 0xb3, 0xbe, 0xbd, 0xb2, 0x56, 0xd6, 0xd4, 0xb9, - 0xc1, 0xd4, 0xf7, 0x8f, 0x69, 0xcf, 0x3e, 0xfb, 0xec, 0xb3, 0x89, 0xec, 0x37, 0x13, 0x30, 0x2a, - 0x76, 0xbe, 0xfa, 0xdb, 0xe1, 0x76, 0xfe, 0x9a, 0xea, 0x20, 0xb7, 0xf2, 0x54, 0xbd, 0x4d, 0xe2, - 0xb0, 0x69, 0xd2, 0xde, 0xd1, 0x33, 0xe1, 0x09, 0xc6, 0xb5, 0x85, 0xdc, 0x77, 0xd5, 0xdb, 0x38, - 0xca, 0x9a, 0xa6, 0xab, 0xaf, 0xc2, 0x94, 0x65, 0x57, 0x1c, 0xd7, 0xb4, 0x6a, 0x66, 0xbb, 0x56, - 0xf1, 0x37, 0x08, 0x2a, 0x66, 0xb5, 0x8a, 0x1c, 0xc7, 0xa6, 0x4b, 0x80, 0x27, 0xe5, 0xa4, 0x65, - 0x6f, 0x31, 0x66, 0xbf, 0x36, 0xe6, 0x19, 0xab, 0xe4, 0x6e, 0xb5, 0x97, 0xbb, 0xef, 0x84, 0xc1, - 0xa6, 0xd9, 0xaa, 0x20, 0xcb, 0x6d, 0x1f, 0x90, 0x7e, 0x2d, 0x65, 0xa4, 0x9a, 0x66, 0xab, 0x8c, - 0xbf, 0xbf, 0x75, 0x3e, 0x08, 0xda, 0xf1, 0xdf, 0x54, 0x18, 0x0e, 0xf6, 0x6c, 0xb8, 0x05, 0xae, - 0x92, 0xfa, 0xac, 0x90, 0xf4, 0xbd, 0xfb, 0xd0, 0x0e, 0x6f, 0xbe, 0x88, 0x0b, 0x77, 0x6e, 0x80, - 0x76, 0x52, 0x06, 0x45, 0xe2, 0x45, 0x13, 0x27, 0x2c, 0xa2, 0xfd, 0x79, 0xca, 0x60, 0xdf, 0xf4, - 0x65, 0x18, 0x78, 0xdc, 0x21, 0xb2, 0x07, 0x88, 0xec, 0x99, 0xc3, 0x65, 0x5f, 0xdb, 0x22, 0xc2, - 0x07, 0xaf, 0x6d, 0x55, 0xd6, 0x37, 0x8c, 0xb5, 0xfc, 0xaa, 0xc1, 0xe0, 0xfa, 0x1d, 0x90, 0x6c, - 0x98, 0xcf, 0x1c, 0x88, 0x25, 0x9e, 0x0c, 0xc5, 0x35, 0xfc, 0x1d, 0x90, 0x7c, 0x0a, 0x99, 0x4f, - 0x88, 0x85, 0x95, 0x0c, 0xbd, 0x85, 0xa1, 0x7f, 0x06, 0xfa, 0x89, 0xbd, 0x74, 0x00, 0x66, 0x31, - 0xad, 0x4f, 0x4f, 0x41, 0xb2, 0xb8, 0x61, 0xe0, 0xf0, 0xd7, 0x60, 0x98, 0x8e, 0x56, 0x36, 0x57, - 0xca, 0xc5, 0xb2, 0x96, 0xc8, 0x9e, 0x87, 0x01, 0x6a, 0x04, 0x9c, 0x1a, 0x9e, 0x19, 0xb4, 0x3e, - 0xf6, 0x95, 0xc9, 0x50, 0x38, 0x75, 0x67, 0xad, 0x50, 0x36, 0xb4, 0x44, 0xd0, 0xbd, 0x0e, 0x0c, - 0x07, 0xdb, 0xb5, 0x9f, 0x4d, 0x4c, 0x7d, 0x5d, 0x81, 0xa1, 0x40, 0xfb, 0x85, 0x17, 0x7e, 0xb3, - 0xd1, 0xb0, 0x9f, 0xaa, 0x98, 0x8d, 0xba, 0xe9, 0xb0, 0xa0, 0x00, 0x32, 0x94, 0xc7, 0x23, 0x71, - 0x9d, 0xf6, 0x33, 0x51, 0xfe, 0x39, 0x05, 0x34, 0xb9, 0x75, 0x93, 0x14, 0x54, 0x7e, 0xae, 0x0a, - 0x7e, 0x52, 0x81, 0x51, 0xb1, 0x5f, 0x93, 0xd4, 0x3b, 0xf5, 0x73, 0x55, 0xef, 0x13, 0x0a, 0x8c, - 0x08, 0x5d, 0xda, 0x2f, 0x94, 0x76, 0x1f, 0x57, 0xe1, 0x78, 0x08, 0x4e, 0xcf, 0xb3, 0x76, 0x96, - 0x76, 0xd8, 0x0f, 0xc4, 0x79, 0xd6, 0x3c, 0x5e, 0x2d, 0x37, 0xcd, 0xb6, 0xcb, 0xba, 0xdf, 0xfb, - 0x40, 0xab, 0xd7, 0x90, 0xe5, 0xd6, 0x77, 0xeb, 0xa8, 0xcd, 0x5e, 0xc1, 0x69, 0x8f, 0x3b, 0xe6, - 0x8f, 0xd3, 0xb7, 0xf0, 0xfb, 0x41, 0x6f, 0xd9, 0x4e, 0xdd, 0xad, 0x3f, 0x89, 0x2a, 0x75, 0x8b, - 0xbf, 0xaf, 0xe3, 0x9e, 0x37, 0x69, 0x68, 0x9c, 0xb2, 0x62, 0xb9, 0x1e, 0xb7, 0x85, 0xf6, 0x4c, - 0x89, 0x1b, 0xd7, 0x3e, 0xd5, 0xd0, 0x38, 0xc5, 0xe3, 0x3e, 0x05, 0xc3, 0x35, 0xbb, 0x83, 0xdb, - 0x07, 0xca, 0x87, 0x4b, 0xad, 0x62, 0x0c, 0xd1, 0x31, 0x8f, 0x85, 0xf5, 0x77, 0xfe, 0x46, 0xc1, - 0xb0, 0x31, 0x44, 0xc7, 0x28, 0xcb, 0xbd, 0x30, 0x66, 0xee, 0xed, 0xb5, 0xb1, 0x70, 0x2e, 0x88, - 0x36, 0xad, 0xa3, 0xde, 0x30, 0x61, 0x9c, 0xbc, 0x06, 0x29, 0x6e, 0x07, 0xbc, 0x9a, 0x61, 0x4b, - 0x54, 0x5a, 0x74, 0xbb, 0x26, 0x31, 0x3b, 0x68, 0xa4, 0x2c, 0x4e, 0x3c, 0x05, 0xc3, 0x75, 0xa7, - 0xe2, 0xef, 0x1b, 0x26, 0xa6, 0x13, 0xb3, 0x29, 0x63, 0xa8, 0xee, 0x78, 0x1b, 0x45, 0xd9, 0xcf, - 0x27, 0x60, 0x54, 0xdc, 0xf7, 0xd4, 0x4b, 0x90, 0x6a, 0xd8, 0x55, 0x93, 0x04, 0x02, 0xdd, 0x74, - 0x9f, 0x8d, 0xd8, 0x2a, 0x9d, 0x5f, 0x65, 0xfc, 0x86, 0x87, 0x9c, 0xfc, 0x67, 0x05, 0x52, 0x7c, - 0x58, 0x9f, 0x80, 0x64, 0xcb, 0x74, 0xf7, 0x89, 0xb8, 0xfe, 0x42, 0x42, 0x53, 0x0c, 0xf2, 0x1d, - 0x8f, 0x3b, 0x2d, 0xd3, 0x22, 0x21, 0xc0, 0xc6, 0xf1, 0x77, 0xec, 0xd7, 0x06, 0x32, 0x6b, 0xa4, - 0x1d, 0xb6, 0x9b, 0x4d, 0x64, 0xb9, 0x0e, 0xf7, 0x2b, 0x1b, 0x2f, 0xb2, 0x61, 0xfd, 0x6d, 0x30, - 0xee, 0xb6, 0xcd, 0x7a, 0x43, 0xe0, 0x4d, 0x12, 0x5e, 0x8d, 0x13, 0x3c, 0xe6, 0x1c, 0xdc, 0xc1, - 0xe5, 0xd6, 0x90, 0x6b, 0x56, 0xf7, 0x51, 0xcd, 0x07, 0x0d, 0x90, 0x4d, 0xb5, 0xdb, 0x19, 0x43, - 0x89, 0xd1, 0x39, 0x36, 0xfb, 0x2d, 0x05, 0xc6, 0x79, 0x03, 0x5f, 0xf3, 0x8c, 0xb5, 0x06, 0x60, - 0x5a, 0x96, 0xed, 0x06, 0xcd, 0xd5, 0x1d, 0xca, 0x5d, 0xb8, 0xf9, 0xbc, 0x07, 0x32, 0x02, 0x02, - 0x26, 0x9b, 0x00, 0x3e, 0xa5, 0xa7, 0xd9, 0xa6, 0x60, 0x88, 0x6d, 0x6a, 0x93, 0x93, 0x11, 0xfa, - 0xd6, 0x07, 0x74, 0x08, 0x77, 0xfa, 0xfa, 0x09, 0xe8, 0xbf, 0x8e, 0xf6, 0xea, 0x16, 0xdb, 0x6a, - 0xa3, 0x5f, 0xf8, 0x06, 0x5e, 0xd2, 0xdb, 0xc0, 0x2b, 0xbc, 0x07, 0x8e, 0x57, 0xed, 0xa6, 0xac, - 0x6e, 0x41, 0x93, 0xde, 0x3c, 0x9d, 0x47, 0x94, 0x77, 0x83, 0xdf, 0x9d, 0x3d, 0xaf, 0x28, 0x9f, - 0x4d, 0xa8, 0xcb, 0x9b, 0x85, 0x2f, 0x26, 0x26, 0x97, 0x29, 0x74, 0x93, 0xcf, 0xd4, 0x40, 0xbb, - 0x0d, 0x54, 0xc5, 0xda, 0xc3, 0x8f, 0x4e, 0xc3, 0x03, 0x7b, 0x75, 0x77, 0xbf, 0x73, 0x7d, 0xbe, - 0x6a, 0x37, 0xcf, 0xec, 0xd9, 0x7b, 0xb6, 0x7f, 0x18, 0x84, 0xbf, 0x91, 0x2f, 0xe4, 0x13, 0x3b, - 0x10, 0x1a, 0xf4, 0x46, 0x27, 0x23, 0x4f, 0x8f, 0x72, 0xeb, 0x70, 0x9c, 0x31, 0x57, 0xc8, 0x8e, - 0x34, 0xed, 0xc3, 0xf5, 0x43, 0x77, 0x25, 0xd2, 0x5f, 0xfe, 0x1e, 0x59, 0xe9, 0x8c, 0x71, 0x06, - 0xc5, 0x34, 0xda, 0xa9, 0xe7, 0x0c, 0xb8, 0x4d, 0x90, 0x47, 0x53, 0x13, 0xb5, 0x23, 0x24, 0x7e, - 0x93, 0x49, 0x3c, 0x1e, 0x90, 0xb8, 0xc5, 0xa0, 0xb9, 0x22, 0x8c, 0x1c, 0x45, 0xd6, 0x3f, 0x30, - 0x59, 0xc3, 0x28, 0x28, 0x64, 0x19, 0xc6, 0x88, 0x90, 0x6a, 0xc7, 0x71, 0xed, 0x26, 0xa9, 0x7b, - 0x87, 0x8b, 0xf9, 0xc7, 0xef, 0xd1, 0x5c, 0x19, 0xc5, 0xb0, 0xa2, 0x87, 0xca, 0xe5, 0x80, 0x6c, - 0xc2, 0xd7, 0x50, 0xb5, 0x11, 0x21, 0xe1, 0x06, 0x53, 0xc4, 0xe3, 0xcf, 0xbd, 0x13, 0x4e, 0xe0, - 0xcf, 0xa4, 0x2c, 0x05, 0x35, 0x89, 0xde, 0x83, 0x49, 0x7f, 0xeb, 0xfd, 0x34, 0x1d, 0x8f, 0x7b, - 0x02, 0x02, 0x3a, 0x05, 0xbc, 0xb8, 0x87, 0x5c, 0x17, 0xb5, 0x9d, 0x8a, 0xd9, 0x08, 0x53, 0x2f, - 0xf0, 0x06, 0x9b, 0xfe, 0xd8, 0xab, 0xa2, 0x17, 0x97, 0x29, 0x32, 0xdf, 0x68, 0xe4, 0x76, 0xe0, - 0xf6, 0x90, 0xa8, 0x88, 0x21, 0xf3, 0xe3, 0x4c, 0xe6, 0x89, 0xae, 0xc8, 0xc0, 0x62, 0x37, 0x81, - 0x8f, 0x7b, 0xbe, 0x8c, 0x21, 0xf3, 0x13, 0x4c, 0xa6, 0xce, 0xb0, 0xdc, 0xa5, 0x58, 0xe2, 0x35, - 0x18, 0x7f, 0x12, 0xb5, 0xaf, 0xdb, 0x0e, 0xdb, 0x38, 0x88, 0x21, 0xee, 0x93, 0x4c, 0xdc, 0x18, - 0x03, 0x92, 0x6d, 0x04, 0x2c, 0xeb, 0x32, 0xa4, 0x76, 0xcd, 0x2a, 0x8a, 0x21, 0xe2, 0x53, 0x4c, - 0xc4, 0x31, 0xcc, 0x8f, 0xa1, 0x79, 0x18, 0xde, 0xb3, 0xd9, 0xca, 0x14, 0x0d, 0x7f, 0x8e, 0xc1, - 0x87, 0x38, 0x86, 0x89, 0x68, 0xd9, 0xad, 0x4e, 0x03, 0x2f, 0x5b, 0xd1, 0x22, 0x3e, 0xcd, 0x45, - 0x70, 0x0c, 0x13, 0x71, 0x04, 0xb3, 0x3e, 0xcf, 0x45, 0x38, 0x01, 0x7b, 0x3e, 0x0c, 0x43, 0xb6, - 0xd5, 0x38, 0xb0, 0xad, 0x38, 0x4a, 0x7c, 0x86, 0x49, 0x00, 0x06, 0xc1, 0x02, 0xae, 0xc0, 0x60, - 0x5c, 0x47, 0x7c, 0xee, 0x55, 0x9e, 0x1e, 0xdc, 0x03, 0xcb, 0x30, 0xc6, 0x0b, 0x54, 0xdd, 0xb6, - 0x62, 0x88, 0xf8, 0x13, 0x26, 0x62, 0x34, 0x00, 0x63, 0xd3, 0x70, 0x91, 0xe3, 0xee, 0xa1, 0x38, - 0x42, 0x3e, 0xcf, 0xa7, 0xc1, 0x20, 0xcc, 0x94, 0xd7, 0x91, 0x55, 0xdd, 0x8f, 0x27, 0xe1, 0x05, - 0x6e, 0x4a, 0x8e, 0xc1, 0x22, 0x8a, 0x30, 0xd2, 0x34, 0xdb, 0xce, 0xbe, 0xd9, 0x88, 0xe5, 0x8e, - 0x2f, 0x30, 0x19, 0xc3, 0x1e, 0x88, 0x59, 0xa4, 0x63, 0x1d, 0x45, 0xcc, 0x17, 0xb9, 0x45, 0x02, - 0x30, 0x96, 0x7a, 0x8e, 0x4b, 0xf6, 0x66, 0x8e, 0x22, 0xed, 0x4f, 0x79, 0xea, 0x51, 0xec, 0x5a, - 0x50, 0xe2, 0x15, 0x18, 0x74, 0xea, 0xcf, 0xc4, 0x12, 0xf3, 0x67, 0xdc, 0xd3, 0x04, 0x80, 0xc1, - 0x8f, 0xc1, 0x1d, 0xa1, 0xcb, 0x44, 0x0c, 0x61, 0x7f, 0xce, 0x84, 0x4d, 0x84, 0x2c, 0x15, 0xac, - 0x24, 0x1c, 0x55, 0xe4, 0x5f, 0xf0, 0x92, 0x80, 0x24, 0x59, 0x9b, 0xb8, 0xb3, 0x77, 0xcc, 0xdd, - 0xa3, 0x59, 0xed, 0x2f, 0xb9, 0xd5, 0x28, 0x56, 0xb0, 0xda, 0x36, 0x4c, 0x30, 0x89, 0x47, 0xf3, - 0xeb, 0x97, 0x78, 0x61, 0xa5, 0xe8, 0x1d, 0xd1, 0xbb, 0xef, 0x81, 0x49, 0xcf, 0x9c, 0xbc, 0x29, - 0x75, 0x2a, 0x4d, 0xb3, 0x15, 0x43, 0xf2, 0x97, 0x99, 0x64, 0x5e, 0xf1, 0xbd, 0xae, 0xd6, 0x59, - 0x33, 0x5b, 0x58, 0xf8, 0xa3, 0x90, 0xe6, 0xc2, 0x3b, 0x56, 0x1b, 0x55, 0xed, 0x3d, 0xab, 0xfe, - 0x0c, 0xaa, 0xc5, 0x10, 0xfd, 0x57, 0x92, 0xab, 0x76, 0x02, 0x70, 0x2c, 0x79, 0x05, 0x34, 0xaf, - 0x57, 0xa9, 0xd4, 0x9b, 0x2d, 0xbb, 0xed, 0x46, 0x48, 0xfc, 0x6b, 0xee, 0x29, 0x0f, 0xb7, 0x42, - 0x60, 0xb9, 0x32, 0x8c, 0x92, 0xaf, 0x71, 0x43, 0xf2, 0x2b, 0x4c, 0xd0, 0x88, 0x8f, 0x62, 0x85, - 0xa3, 0x6a, 0x37, 0x5b, 0x66, 0x3b, 0x4e, 0xfd, 0xfb, 0x1b, 0x5e, 0x38, 0x18, 0x84, 0x15, 0x0e, - 0xf7, 0xa0, 0x85, 0xf0, 0x6a, 0x1f, 0x43, 0xc2, 0x57, 0x79, 0xe1, 0xe0, 0x18, 0x26, 0x82, 0x37, - 0x0c, 0x31, 0x44, 0xfc, 0x2d, 0x17, 0xc1, 0x31, 0x58, 0xc4, 0x3b, 0xfc, 0x85, 0xb6, 0x8d, 0xf6, - 0xea, 0x8e, 0xdb, 0xa6, 0xad, 0xf0, 0xe1, 0xa2, 0xbe, 0xf6, 0xaa, 0xd8, 0x84, 0x19, 0x01, 0x68, - 0xee, 0x1a, 0x8c, 0x49, 0x2d, 0x86, 0x1e, 0x75, 0xa2, 0x9f, 0x7e, 0xef, 0x6b, 0xac, 0x18, 0x89, - 0x1d, 0x46, 0x6e, 0x15, 0xfb, 0x5d, 0xec, 0x03, 0xa2, 0x85, 0xbd, 0xff, 0x35, 0xcf, 0xf5, 0x42, - 0x1b, 0x90, 0xbb, 0x0a, 0x23, 0x42, 0x0f, 0x10, 0x2d, 0xea, 0xd7, 0x98, 0xa8, 0xe1, 0x60, 0x0b, - 0x90, 0x3b, 0x0f, 0x49, 0xbc, 0x9e, 0x47, 0xc3, 0x7f, 0x9d, 0xc1, 0x09, 0x7b, 0xee, 0x41, 0x48, - 0xf1, 0x75, 0x3c, 0x1a, 0xfa, 0x01, 0x06, 0xf5, 0x20, 0x18, 0xce, 0xd7, 0xf0, 0x68, 0xf8, 0x6f, - 0x70, 0x38, 0x87, 0x60, 0x78, 0x7c, 0x13, 0xbe, 0xf8, 0xe1, 0x24, 0xab, 0xc3, 0xdc, 0x76, 0x57, - 0xe0, 0x18, 0x5b, 0xbc, 0xa3, 0xd1, 0x1f, 0x62, 0x0f, 0xe7, 0x88, 0xdc, 0x45, 0xe8, 0x8f, 0x69, - 0xf0, 0xdf, 0x62, 0x50, 0xca, 0x9f, 0x2b, 0xc2, 0x50, 0x60, 0xc1, 0x8e, 0x86, 0xff, 0x36, 0x83, - 0x07, 0x51, 0x58, 0x75, 0xb6, 0x60, 0x47, 0x0b, 0xf8, 0x1d, 0xae, 0x3a, 0x43, 0x60, 0xb3, 0xf1, - 0xb5, 0x3a, 0x1a, 0xfd, 0xbb, 0xdc, 0xea, 0x1c, 0x92, 0x7b, 0x18, 0x06, 0xbd, 0xfa, 0x1b, 0x8d, - 0xff, 0x3d, 0x86, 0xf7, 0x31, 0xd8, 0x02, 0x81, 0xfa, 0x1f, 0x2d, 0xe2, 0xf7, 0xb9, 0x05, 0x02, - 0x28, 0x9c, 0x46, 0xf2, 0x9a, 0x1e, 0x2d, 0xe9, 0x23, 0x3c, 0x8d, 0xa4, 0x25, 0x1d, 0x7b, 0x93, - 0x94, 0xc1, 0x68, 0x11, 0x7f, 0xc0, 0xbd, 0x49, 0xf8, 0xb1, 0x1a, 0xf2, 0x22, 0x19, 0x2d, 0xe3, - 0x8f, 0xb8, 0x1a, 0xd2, 0x1a, 0x99, 0xdb, 0x04, 0xbd, 0x7b, 0x81, 0x8c, 0x96, 0xf7, 0x51, 0x26, - 0x6f, 0xbc, 0x6b, 0x7d, 0xcc, 0xbd, 0x0b, 0x26, 0xc2, 0x17, 0xc7, 0x68, 0xa9, 0x1f, 0x7b, 0x4d, - 0x7a, 0x9d, 0x09, 0xae, 0x8d, 0xb9, 0x6d, 0xbf, 0xca, 0x06, 0x17, 0xc6, 0x68, 0xb1, 0x1f, 0x7f, - 0x4d, 0x2c, 0xb4, 0xc1, 0x75, 0x31, 0x97, 0x07, 0xf0, 0xd7, 0xa4, 0x68, 0x59, 0x9f, 0x64, 0xb2, - 0x02, 0x20, 0x9c, 0x1a, 0x6c, 0x49, 0x8a, 0xc6, 0x7f, 0x8a, 0xa7, 0x06, 0x43, 0xe0, 0xd4, 0xe0, - 0xab, 0x51, 0x34, 0xfa, 0x39, 0x9e, 0x1a, 0x1c, 0x92, 0xbb, 0x02, 0x29, 0xab, 0xd3, 0x68, 0xe0, - 0xd8, 0xd2, 0x0f, 0xbf, 0x64, 0x93, 0xfe, 0x8f, 0xd7, 0x19, 0x98, 0x03, 0x72, 0xe7, 0xa1, 0x1f, - 0x35, 0xaf, 0xa3, 0x5a, 0x14, 0xf2, 0x3f, 0x5f, 0xe7, 0xf5, 0x04, 0x73, 0xe7, 0x1e, 0x06, 0xa0, - 0x2f, 0xd3, 0xe4, 0x8c, 0x25, 0x02, 0xfb, 0x5f, 0xaf, 0xb3, 0xf3, 0x7b, 0x1f, 0xe2, 0x0b, 0xa0, - 0xb7, 0x01, 0x0e, 0x17, 0xf0, 0xaa, 0x28, 0x80, 0xbc, 0x80, 0x5f, 0x86, 0x63, 0x8f, 0x3b, 0xb6, - 0xe5, 0x9a, 0x7b, 0x51, 0xe8, 0xff, 0x66, 0x68, 0xce, 0x8f, 0x0d, 0xd6, 0xb4, 0xdb, 0xc8, 0x35, - 0xf7, 0x9c, 0x28, 0xec, 0xff, 0x30, 0xac, 0x07, 0xc0, 0xe0, 0xaa, 0xe9, 0xb8, 0x71, 0xe6, 0xfd, - 0xbf, 0x1c, 0xcc, 0x01, 0x58, 0x69, 0xfc, 0xf9, 0x09, 0x74, 0x10, 0x85, 0xfd, 0x01, 0x57, 0x9a, - 0xf1, 0xe7, 0x1e, 0x84, 0x41, 0xfc, 0x91, 0xde, 0x69, 0x89, 0x00, 0xff, 0x90, 0x81, 0x7d, 0x04, - 0x7e, 0xb2, 0xe3, 0xd6, 0xdc, 0x7a, 0xb4, 0xb1, 0xff, 0x8f, 0x79, 0x9a, 0xf3, 0xe7, 0xf2, 0x30, - 0xe4, 0xb8, 0xb5, 0x5a, 0x87, 0x75, 0x34, 0x11, 0xf0, 0x1f, 0xbd, 0xee, 0xbd, 0xe4, 0x7a, 0x98, - 0xc2, 0xa9, 0xf0, 0xfd, 0x3a, 0x58, 0xb6, 0x97, 0x6d, 0xba, 0x53, 0x07, 0xdf, 0x6a, 0xc0, 0x4c, - 0xd5, 0x6e, 0x5e, 0xb7, 0x9d, 0x33, 0xb4, 0xa0, 0x78, 0xe5, 0xe4, 0x8c, 0xbb, 0x8f, 0xf0, 0x2a, - 0xc2, 0x36, 0xdb, 0x92, 0xf8, 0xf3, 0xe4, 0xd1, 0x76, 0xe8, 0xc8, 0xd1, 0xe5, 0x7a, 0x1d, 0x2b, - 0xb9, 0x4e, 0xb6, 0xc0, 0xf5, 0x93, 0x30, 0x40, 0xd4, 0x3e, 0x4b, 0x4e, 0x68, 0x94, 0x42, 0xf2, - 0xc6, 0xcb, 0x53, 0x7d, 0x06, 0x1b, 0xf3, 0xa8, 0x8b, 0x64, 0x8f, 0x32, 0x21, 0x50, 0x17, 0x3d, - 0xea, 0x39, 0xba, 0x4d, 0x29, 0x50, 0xcf, 0x79, 0xd4, 0x25, 0xb2, 0x61, 0xa9, 0x0a, 0xd4, 0x25, - 0x8f, 0x7a, 0x9e, 0x6c, 0xca, 0x8f, 0x08, 0xd4, 0xf3, 0x1e, 0xf5, 0x02, 0xd9, 0x8a, 0x4f, 0x0a, - 0xd4, 0x0b, 0x1e, 0xf5, 0x22, 0xd9, 0x85, 0x1f, 0x17, 0xa8, 0x17, 0x3d, 0xea, 0x25, 0xb2, 0xfb, - 0xae, 0x0b, 0xd4, 0x4b, 0x1e, 0xf5, 0x32, 0xb9, 0x6a, 0x71, 0x4c, 0xa0, 0x5e, 0xd6, 0x33, 0x70, - 0x8c, 0xce, 0x7c, 0x81, 0x9c, 0x72, 0x8e, 0x31, 0x32, 0x1f, 0xf4, 0xe9, 0x67, 0xc9, 0xb5, 0x8a, - 0x01, 0x91, 0x7e, 0xd6, 0xa7, 0x2f, 0x92, 0x3b, 0xc6, 0x9a, 0x48, 0x5f, 0xf4, 0xe9, 0xe7, 0xd2, - 0x23, 0x38, 0x3a, 0x44, 0xfa, 0x39, 0x9f, 0xbe, 0x94, 0x1e, 0xc5, 0x91, 0x2b, 0xd2, 0x97, 0x7c, - 0xfa, 0xf9, 0xf4, 0xd8, 0xb4, 0x32, 0x3b, 0x2c, 0xd2, 0xcf, 0x67, 0xdf, 0x47, 0xdc, 0x6b, 0xf9, - 0xee, 0x9d, 0x10, 0xdd, 0xeb, 0x39, 0x76, 0x42, 0x74, 0xac, 0xe7, 0xd2, 0x09, 0xd1, 0xa5, 0x9e, - 0x33, 0x27, 0x44, 0x67, 0x7a, 0x6e, 0x9c, 0x10, 0xdd, 0xe8, 0x39, 0x70, 0x42, 0x74, 0xa0, 0xe7, - 0xba, 0x09, 0xd1, 0x75, 0x9e, 0xd3, 0x26, 0x44, 0xa7, 0x79, 0xee, 0x9a, 0x10, 0xdd, 0xe5, 0x39, - 0x2a, 0x2d, 0x39, 0xca, 0x77, 0x51, 0x5a, 0x72, 0x91, 0xef, 0x9c, 0xb4, 0xe4, 0x1c, 0xdf, 0x2d, - 0x69, 0xc9, 0x2d, 0xbe, 0x43, 0xd2, 0x92, 0x43, 0x7c, 0x57, 0xa4, 0x25, 0x57, 0xf8, 0x4e, 0x60, - 0x39, 0x66, 0xa0, 0x56, 0x48, 0x8e, 0xa9, 0x87, 0xe6, 0x98, 0x7a, 0x68, 0x8e, 0xa9, 0x87, 0xe6, - 0x98, 0x7a, 0x68, 0x8e, 0xa9, 0x87, 0xe6, 0x98, 0x7a, 0x68, 0x8e, 0xa9, 0x87, 0xe6, 0x98, 0x7a, - 0x68, 0x8e, 0xa9, 0x87, 0xe7, 0x98, 0x1a, 0x91, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x11, 0x39, 0xa6, - 0x46, 0xe4, 0x98, 0x1a, 0x91, 0x63, 0x6a, 0xcf, 0x1c, 0xf3, 0xdd, 0x3b, 0x21, 0xba, 0x37, 0x34, - 0xc7, 0xd4, 0x1e, 0x39, 0xa6, 0xf6, 0xc8, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, - 0x91, 0x63, 0x6a, 0x8f, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x2b, 0xc7, 0xd4, 0x9e, 0x39, 0xa6, - 0xf6, 0xcc, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0x3d, 0x73, 0x4c, 0xed, 0x99, 0x63, 0x6a, 0x30, 0xc7, - 0xfe, 0x4e, 0x05, 0x9d, 0xe6, 0xd8, 0x26, 0xb9, 0x27, 0xc3, 0x5c, 0x91, 0x91, 0x32, 0x6d, 0x00, - 0xbb, 0x4e, 0xf3, 0x5d, 0x92, 0x91, 0x72, 0x4d, 0xa4, 0x2f, 0x7a, 0x74, 0x9e, 0x6d, 0x22, 0xfd, - 0x9c, 0x47, 0xe7, 0xf9, 0x26, 0xd2, 0x97, 0x3c, 0x3a, 0xcf, 0x38, 0x91, 0x7e, 0xde, 0xa3, 0xf3, - 0x9c, 0x13, 0xe9, 0x17, 0x3c, 0x3a, 0xcf, 0x3a, 0x91, 0x7e, 0xd1, 0xa3, 0xf3, 0xbc, 0x13, 0xe9, - 0x97, 0x3c, 0x3a, 0xcf, 0x3c, 0x91, 0x7e, 0x59, 0x9f, 0x96, 0x73, 0x8f, 0x33, 0x78, 0xae, 0x9d, - 0x96, 0xb3, 0x4f, 0xe2, 0x38, 0xeb, 0x73, 0xf0, 0xfc, 0x93, 0x38, 0x16, 0x7d, 0x0e, 0x9e, 0x81, - 0x12, 0xc7, 0xb9, 0xec, 0x07, 0x89, 0xfb, 0x2c, 0xd9, 0x7d, 0x93, 0x92, 0xfb, 0x12, 0x01, 0xd7, - 0x4d, 0x4a, 0xae, 0x4b, 0x04, 0xdc, 0x36, 0x29, 0xb9, 0x2d, 0x11, 0x70, 0xd9, 0xa4, 0xe4, 0xb2, - 0x44, 0xc0, 0x5d, 0x93, 0x92, 0xbb, 0x12, 0x01, 0x57, 0x4d, 0x4a, 0xae, 0x4a, 0x04, 0xdc, 0x34, - 0x29, 0xb9, 0x29, 0x11, 0x70, 0xd1, 0xa4, 0xe4, 0xa2, 0x44, 0xc0, 0x3d, 0x93, 0x92, 0x7b, 0x12, - 0x01, 0xd7, 0x9c, 0x94, 0x5d, 0x93, 0x08, 0xba, 0xe5, 0xa4, 0xec, 0x96, 0x44, 0xd0, 0x25, 0x27, - 0x65, 0x97, 0x24, 0x82, 0xee, 0x38, 0x29, 0xbb, 0x23, 0x11, 0x74, 0xc5, 0x4f, 0x13, 0xbc, 0x23, - 0xdc, 0x72, 0xdb, 0x9d, 0xaa, 0x7b, 0x4b, 0x1d, 0xe1, 0x82, 0xd0, 0x3e, 0x0c, 0x2d, 0xea, 0xf3, - 0xa4, 0x61, 0x0d, 0x76, 0x9c, 0xd2, 0x0a, 0xb6, 0x20, 0x34, 0x16, 0x01, 0x84, 0x15, 0x8e, 0x58, - 0xba, 0xa5, 0xde, 0x70, 0x41, 0x68, 0x33, 0xa2, 0xf5, 0xbb, 0xf4, 0x96, 0x77, 0x6c, 0x2f, 0x26, - 0x78, 0xc7, 0xc6, 0xcc, 0x7f, 0xd4, 0x8e, 0x6d, 0x2e, 0xda, 0xe4, 0x9e, 0xb1, 0xe7, 0xa2, 0x8d, - 0xdd, 0xb5, 0xea, 0xc4, 0xed, 0xe0, 0xe6, 0xa2, 0x4d, 0xeb, 0x19, 0xf5, 0xcd, 0xed, 0xb7, 0x58, - 0x04, 0x1b, 0xa8, 0x15, 0x12, 0xc1, 0x47, 0xed, 0xb7, 0x16, 0x84, 0x52, 0x72, 0xd4, 0x08, 0x56, - 0x8f, 0x1c, 0xc1, 0x47, 0xed, 0xbc, 0x16, 0x84, 0xf2, 0x72, 0xe4, 0x08, 0x7e, 0x0b, 0xfa, 0x21, - 0x16, 0xc1, 0xbe, 0xf9, 0x8f, 0xda, 0x0f, 0xcd, 0x45, 0x9b, 0x3c, 0x34, 0x82, 0xd5, 0x23, 0x44, - 0x70, 0x9c, 0xfe, 0x68, 0x2e, 0xda, 0xb4, 0xe1, 0x11, 0x7c, 0xcb, 0xdd, 0xcc, 0xa7, 0x15, 0x18, - 0x5f, 0xaf, 0xd7, 0xca, 0xcd, 0xeb, 0xa8, 0x56, 0x43, 0x35, 0x66, 0xc7, 0x05, 0xa1, 0x12, 0xf4, - 0x70, 0xf5, 0x4b, 0x2f, 0x4f, 0xf9, 0x16, 0x3e, 0x0f, 0x29, 0x6a, 0xd3, 0x85, 0x85, 0xf4, 0x0d, - 0x25, 0xa2, 0xc2, 0x79, 0xac, 0xfa, 0x29, 0x0e, 0x3b, 0xbb, 0x90, 0xfe, 0x17, 0x25, 0x50, 0xe5, - 0xbc, 0xe1, 0xec, 0x47, 0x88, 0x86, 0xd6, 0x2d, 0x6b, 0x78, 0x26, 0x96, 0x86, 0x01, 0xdd, 0xee, - 0xec, 0xd2, 0x2d, 0xa0, 0x55, 0x07, 0xc6, 0xd6, 0xeb, 0xb5, 0x75, 0xf2, 0xd7, 0xad, 0x71, 0x54, - 0xa2, 0x3c, 0x52, 0x3d, 0x58, 0x10, 0xc2, 0x32, 0x88, 0xf0, 0x42, 0x5a, 0xac, 0x11, 0xd9, 0x3a, - 0x7e, 0xac, 0x25, 0x3c, 0x76, 0xae, 0xd7, 0x63, 0xfd, 0xca, 0xee, 0x3d, 0x70, 0xae, 0xd7, 0x03, - 0xfd, 0x1c, 0xf2, 0x1e, 0xf5, 0x34, 0x5f, 0x9c, 0xe9, 0x95, 0x1b, 0xfd, 0x24, 0x24, 0x56, 0xe8, - 0x65, 0xda, 0xe1, 0xc2, 0x30, 0x56, 0xea, 0xdb, 0x2f, 0x4f, 0x25, 0x77, 0x3a, 0xf5, 0x9a, 0x91, - 0x58, 0xa9, 0xe9, 0xd7, 0xa0, 0xff, 0x9d, 0xec, 0x6f, 0xc4, 0x30, 0xc3, 0x12, 0x63, 0xb8, 0xbf, - 0xe7, 0x1e, 0x11, 0x7e, 0xf0, 0x19, 0xba, 0x99, 0x38, 0xbf, 0x53, 0xb7, 0xdc, 0xb3, 0x8b, 0x97, - 0x0c, 0x2a, 0x22, 0xfb, 0xcb, 0x00, 0xf4, 0x99, 0x25, 0xd3, 0xd9, 0xd7, 0xd7, 0xb9, 0x64, 0xfa, - 0xe8, 0x4b, 0xdf, 0x7e, 0x79, 0x6a, 0x29, 0x8e, 0xd4, 0x07, 0x6a, 0xa6, 0xb3, 0xff, 0x80, 0x7b, - 0xd0, 0x42, 0xf3, 0x85, 0x03, 0x17, 0x39, 0x5c, 0x7a, 0x8b, 0xaf, 0x7a, 0x6c, 0x5e, 0xe9, 0xc0, - 0xbc, 0x52, 0xc2, 0x9c, 0xae, 0x8a, 0x73, 0x5a, 0x78, 0xa3, 0xf3, 0x79, 0x9a, 0x2f, 0x12, 0x92, - 0x25, 0xd5, 0x28, 0x4b, 0xaa, 0xb7, 0x6a, 0xc9, 0x16, 0xaf, 0x8f, 0xd2, 0x5c, 0xd5, 0xc3, 0xe6, - 0xaa, 0xde, 0xca, 0x5c, 0x7f, 0x4c, 0xb3, 0xd5, 0xcb, 0xa7, 0x1d, 0x8b, 0xde, 0x46, 0xfc, 0xc5, - 0xda, 0x0b, 0x7a, 0x53, 0xbb, 0x80, 0x5c, 0xf2, 0xc6, 0xf3, 0x53, 0x4a, 0xf6, 0xd3, 0x09, 0x3e, - 0x73, 0x9a, 0x48, 0x6f, 0x6c, 0xe6, 0xbf, 0x28, 0x3d, 0xd5, 0x5b, 0x61, 0xa1, 0xe7, 0x14, 0x98, - 0xe8, 0xaa, 0xe4, 0xd4, 0x4c, 0x6f, 0x6e, 0x39, 0xb7, 0x8e, 0x5a, 0xce, 0x99, 0x82, 0x5f, 0x51, - 0xe0, 0x84, 0x54, 0x5e, 0xa9, 0x7a, 0x67, 0x24, 0xf5, 0x6e, 0xef, 0x7e, 0x12, 0x61, 0x0c, 0x68, - 0x17, 0x74, 0xaf, 0x04, 0x08, 0x48, 0xf6, 0xfc, 0xbe, 0x24, 0xf9, 0xfd, 0xa4, 0x07, 0x08, 0x31, - 0x17, 0x8f, 0x00, 0xa6, 0xb6, 0x0d, 0xc9, 0xed, 0x36, 0x42, 0x7a, 0x06, 0x12, 0x1b, 0x6d, 0xa6, - 0xe1, 0x28, 0xc5, 0x6f, 0xb4, 0x0b, 0x6d, 0xd3, 0xaa, 0xee, 0x1b, 0x89, 0x8d, 0xb6, 0x7e, 0x0a, - 0xd4, 0x3c, 0xfb, 0x2b, 0xfc, 0xa1, 0xc5, 0x31, 0xca, 0x90, 0xb7, 0x6a, 0x8c, 0x03, 0xd3, 0xf4, - 0x0c, 0x24, 0x57, 0x91, 0xb9, 0xcb, 0x94, 0x00, 0xca, 0x83, 0x47, 0x0c, 0x32, 0xce, 0x1e, 0xf8, - 0x28, 0xa4, 0xb8, 0x60, 0x7d, 0x06, 0x23, 0x76, 0x5d, 0xf6, 0x58, 0x86, 0xc0, 0xea, 0xb0, 0x95, - 0x8b, 0x50, 0xf5, 0xd3, 0xd0, 0x6f, 0xd4, 0xf7, 0xf6, 0x5d, 0xf6, 0xf0, 0x6e, 0x36, 0x4a, 0xce, - 0x3e, 0x06, 0x83, 0x9e, 0x46, 0x6f, 0xb2, 0xe8, 0x12, 0x9d, 0x9a, 0x3e, 0x19, 0x5c, 0x4f, 0xf8, - 0xbe, 0x25, 0x1d, 0xd2, 0xa7, 0x21, 0xb5, 0xe5, 0xb6, 0xfd, 0xa2, 0xcf, 0x3b, 0x52, 0x6f, 0x34, - 0xfb, 0x3e, 0x05, 0x52, 0x25, 0x84, 0x5a, 0xc4, 0xe0, 0xf7, 0x40, 0xb2, 0x64, 0x3f, 0x65, 0x31, - 0x05, 0xc7, 0x99, 0x45, 0x31, 0x99, 0xd9, 0x94, 0x90, 0xf5, 0x7b, 0x82, 0x76, 0x3f, 0xee, 0xd9, - 0x3d, 0xc0, 0x47, 0x6c, 0x9f, 0x15, 0x6c, 0xcf, 0x1c, 0x88, 0x99, 0xba, 0xec, 0x7f, 0x11, 0x86, - 0x02, 0x4f, 0xd1, 0x67, 0x99, 0x1a, 0x09, 0x19, 0x18, 0xb4, 0x15, 0xe6, 0xc8, 0x22, 0x18, 0x11, - 0x1e, 0x8c, 0xa1, 0x01, 0x13, 0xf7, 0x80, 0x12, 0x33, 0xcf, 0x89, 0x66, 0x0e, 0x67, 0x65, 0xa6, - 0x5e, 0xa0, 0x36, 0x22, 0xe6, 0x9e, 0xa1, 0xc1, 0xd9, 0xdb, 0x89, 0xf8, 0x73, 0xb6, 0x1f, 0xd4, - 0xf5, 0x7a, 0x23, 0xfb, 0x20, 0x00, 0x4d, 0xf9, 0xb2, 0xd5, 0x69, 0x4a, 0x59, 0x37, 0xca, 0x0d, - 0xbc, 0xbd, 0x8f, 0xb6, 0x91, 0x43, 0x58, 0xc4, 0x7e, 0x0a, 0x17, 0x18, 0xa0, 0x29, 0x46, 0xf0, - 0xf7, 0x45, 0xe2, 0x43, 0x3b, 0x31, 0xcc, 0x9a, 0xa6, 0xac, 0x8f, 0x21, 0x37, 0x6f, 0xd9, 0xee, - 0x3e, 0x6a, 0x4b, 0x88, 0x45, 0xfd, 0x9c, 0x90, 0xb0, 0xa3, 0x8b, 0x77, 0x7a, 0x88, 0x9e, 0xa0, - 0x73, 0xd9, 0x2f, 0x11, 0x05, 0x71, 0x2b, 0xd0, 0x35, 0x41, 0x35, 0xc6, 0x04, 0xf5, 0x0b, 0x42, - 0xff, 0x76, 0x88, 0x9a, 0xd2, 0xab, 0xe5, 0x65, 0xe1, 0x3d, 0xe7, 0x70, 0x65, 0xc5, 0x77, 0x4c, - 0x6e, 0x53, 0xae, 0xf2, 0x7d, 0x91, 0x2a, 0xf7, 0xe8, 0x6e, 0x8f, 0x6a, 0x53, 0x35, 0xae, 0x4d, - 0xbf, 0xee, 0x75, 0x1c, 0xf4, 0xf7, 0x0c, 0xc8, 0xcf, 0x67, 0xe8, 0xf7, 0x47, 0xfa, 0x3e, 0xa7, - 0x14, 0x3d, 0x55, 0x97, 0xe2, 0xba, 0x3f, 0x97, 0x28, 0x14, 0x3c, 0x75, 0x2f, 0x1e, 0x21, 0x04, - 0x72, 0x89, 0x62, 0xd1, 0x2b, 0xdb, 0xa9, 0x0f, 0x3e, 0x3f, 0xa5, 0xbc, 0xf0, 0xfc, 0x54, 0x5f, - 0xf6, 0x0b, 0x0a, 0x8c, 0x33, 0xce, 0x40, 0xe0, 0x3e, 0x20, 0x29, 0x7f, 0x1b, 0xaf, 0x19, 0x61, - 0x16, 0xf8, 0x99, 0x05, 0xef, 0x37, 0x15, 0x48, 0x77, 0xe9, 0xca, 0xed, 0xbd, 0x10, 0x4b, 0xe5, - 0x9c, 0x52, 0xfe, 0xf9, 0xdb, 0xfc, 0x31, 0xe8, 0xdf, 0xae, 0x37, 0x51, 0x1b, 0xaf, 0x04, 0xf8, - 0x03, 0x55, 0x99, 0x1f, 0xe6, 0xd0, 0x21, 0x4e, 0xa3, 0xca, 0x09, 0xb4, 0x45, 0x3d, 0x0d, 0xc9, - 0x92, 0xe9, 0x9a, 0x44, 0x83, 0x61, 0xaf, 0xbe, 0x9a, 0xae, 0x99, 0x3d, 0x07, 0xc3, 0x6b, 0x07, - 0xe4, 0xbe, 0x4c, 0x8d, 0xdc, 0x05, 0x11, 0xbb, 0x3f, 0xde, 0xaf, 0x9e, 0x9d, 0xeb, 0x4f, 0xd5, - 0xb4, 0x1b, 0x4a, 0x2e, 0x49, 0xf4, 0x79, 0x12, 0x46, 0x37, 0xb0, 0xda, 0x04, 0x27, 0xc0, 0xe8, - 0xd3, 0x55, 0x6f, 0xf2, 0x52, 0x53, 0xa6, 0xfa, 0x4d, 0xd9, 0x34, 0x28, 0x6b, 0x62, 0xeb, 0x14, - 0xd4, 0xc3, 0x50, 0xd6, 0xe6, 0x92, 0xa9, 0x51, 0x6d, 0x7c, 0x2e, 0x99, 0x02, 0x6d, 0x84, 0x3d, - 0xf7, 0x9f, 0x54, 0xd0, 0x68, 0xab, 0x53, 0x42, 0xbb, 0x75, 0xab, 0xee, 0x76, 0xf7, 0xab, 0x9e, - 0xc6, 0xfa, 0xc3, 0x30, 0x88, 0x4d, 0x7a, 0x95, 0xfd, 0x0a, 0x15, 0x36, 0xfd, 0x29, 0xd6, 0xa2, - 0x48, 0x22, 0xd8, 0x00, 0x09, 0x1d, 0x1f, 0xa3, 0x5f, 0x05, 0x75, 0x7d, 0x7d, 0x8d, 0x2d, 0x6e, - 0x4b, 0x87, 0x42, 0xd9, 0x75, 0x1b, 0xf6, 0x8d, 0x8d, 0x39, 0x7b, 0x06, 0x16, 0xa0, 0x2f, 0x41, - 0x62, 0x7d, 0x8d, 0x35, 0xbc, 0x33, 0x71, 0xc4, 0x18, 0x89, 0xf5, 0xb5, 0xc9, 0xbf, 0x57, 0x60, - 0x44, 0x18, 0xd5, 0xb3, 0x30, 0x4c, 0x07, 0x02, 0xd3, 0x1d, 0x30, 0x84, 0x31, 0xae, 0x73, 0xe2, - 0x16, 0x75, 0x9e, 0xcc, 0xc3, 0x98, 0x34, 0xae, 0xcf, 0x83, 0x1e, 0x1c, 0x62, 0x4a, 0xd0, 0x5f, - 0xf0, 0x09, 0xa1, 0x64, 0xef, 0x02, 0xf0, 0xed, 0xea, 0xfd, 0xf0, 0xcc, 0x7a, 0x79, 0x6b, 0xbb, - 0x5c, 0xd2, 0x94, 0xec, 0x57, 0x15, 0x18, 0x62, 0x6d, 0x6b, 0xd5, 0x6e, 0x21, 0xbd, 0x00, 0x4a, - 0x9e, 0xc5, 0xc3, 0x1b, 0xd3, 0x5b, 0xc9, 0xeb, 0x67, 0x40, 0x29, 0xc4, 0x77, 0xb5, 0x52, 0xd0, - 0x17, 0x41, 0x29, 0x32, 0x07, 0xc7, 0xf3, 0x8c, 0x52, 0xcc, 0xfe, 0x50, 0x85, 0xe3, 0xc1, 0x36, - 0x9a, 0xd7, 0x93, 0x53, 0xe2, 0x7b, 0x53, 0x6e, 0xf0, 0xec, 0xe2, 0xb9, 0xa5, 0x79, 0xfc, 0x8f, - 0x17, 0x92, 0xa7, 0xc4, 0x57, 0xa8, 0x6e, 0x96, 0xae, 0x6b, 0x22, 0xb9, 0x64, 0x80, 0xda, 0x75, - 0x4d, 0x44, 0xa0, 0x76, 0x5d, 0x13, 0x11, 0xa8, 0x5d, 0xd7, 0x44, 0x04, 0x6a, 0xd7, 0x51, 0x80, - 0x40, 0xed, 0xba, 0x26, 0x22, 0x50, 0xbb, 0xae, 0x89, 0x08, 0xd4, 0xee, 0x6b, 0x22, 0x8c, 0xdc, - 0xf3, 0x9a, 0x88, 0x48, 0xef, 0xbe, 0x26, 0x22, 0xd2, 0xbb, 0xaf, 0x89, 0xe4, 0x92, 0x6e, 0xbb, - 0x83, 0x7a, 0x1f, 0x3a, 0x88, 0xf8, 0xc3, 0xde, 0x01, 0xfd, 0x02, 0xbc, 0x01, 0x63, 0x74, 0x3f, - 0xa2, 0x68, 0x5b, 0xae, 0x59, 0xb7, 0x50, 0x5b, 0x7f, 0x3b, 0x0c, 0xd3, 0x21, 0xfa, 0x96, 0x13, - 0xf6, 0x16, 0x48, 0xe9, 0xac, 0xdc, 0x0a, 0xdc, 0xd9, 0x9f, 0x26, 0x61, 0x82, 0x0e, 0xac, 0x9b, - 0x4d, 0x24, 0x5c, 0x32, 0x3a, 0x2d, 0x1d, 0x29, 0x8d, 0x62, 0xf8, 0xcd, 0x97, 0xa7, 0xe8, 0x68, - 0xde, 0x0b, 0xa6, 0xd3, 0xd2, 0xe1, 0x92, 0xc8, 0xe7, 0xaf, 0x3f, 0xa7, 0xa5, 0x8b, 0x47, 0x22, - 0x9f, 0xb7, 0xdc, 0x78, 0x7c, 0xfc, 0x0a, 0x92, 0xc8, 0x57, 0xf2, 0xa2, 0xec, 0xb4, 0x74, 0x19, - 0x49, 0xe4, 0x2b, 0x7b, 0xf1, 0x76, 0x5a, 0x3a, 0x7a, 0x12, 0xf9, 0xae, 0x7a, 0x91, 0x77, 0x5a, - 0x3a, 0x84, 0x12, 0xf9, 0x96, 0xbd, 0x18, 0x3c, 0x2d, 0x5d, 0x55, 0x12, 0xf9, 0x1e, 0xf1, 0xa2, - 0xf1, 0xb4, 0x74, 0x69, 0x49, 0xe4, 0x5b, 0xf1, 0xe2, 0x72, 0x56, 0xbe, 0xbe, 0x24, 0x32, 0x5e, - 0xf3, 0x23, 0x74, 0x56, 0xbe, 0xc8, 0x24, 0x72, 0xfe, 0x92, 0x1f, 0xab, 0xb3, 0xf2, 0x95, 0x26, - 0x91, 0x73, 0xd5, 0x8f, 0xda, 0x59, 0xf9, 0xa8, 0x4c, 0xe4, 0x5c, 0xf3, 0xe3, 0x77, 0x56, 0x3e, - 0x34, 0x13, 0x39, 0xd7, 0xfd, 0x48, 0x9e, 0x95, 0x8f, 0xcf, 0x44, 0xce, 0x0d, 0x7f, 0x0f, 0xfd, - 0x1b, 0x52, 0xf8, 0x05, 0x2e, 0x41, 0x65, 0xa5, 0xf0, 0x83, 0x90, 0xd0, 0xcb, 0x4a, 0xa1, 0x07, - 0x21, 0x61, 0x97, 0x95, 0xc2, 0x0e, 0x42, 0x42, 0x2e, 0x2b, 0x85, 0x1c, 0x84, 0x84, 0x5b, 0x56, - 0x0a, 0x37, 0x08, 0x09, 0xb5, 0xac, 0x14, 0x6a, 0x10, 0x12, 0x66, 0x59, 0x29, 0xcc, 0x20, 0x24, - 0xc4, 0xb2, 0x52, 0x88, 0x41, 0x48, 0x78, 0x65, 0xa5, 0xf0, 0x82, 0x90, 0xd0, 0x9a, 0x91, 0x43, - 0x0b, 0xc2, 0xc2, 0x6a, 0x46, 0x0e, 0x2b, 0x08, 0x0b, 0xa9, 0xbb, 0xe5, 0x90, 0x1a, 0xbc, 0xf9, - 0xf2, 0x54, 0x3f, 0x1e, 0x0a, 0x44, 0xd3, 0x8c, 0x1c, 0x4d, 0x10, 0x16, 0x49, 0x33, 0x72, 0x24, - 0x41, 0x58, 0x14, 0xcd, 0xc8, 0x51, 0x04, 0x61, 0x11, 0xf4, 0xa2, 0x1c, 0x41, 0xfe, 0x15, 0x9f, - 0xac, 0x74, 0xa2, 0x18, 0x15, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, - 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x13, - 0x41, 0x6a, 0xac, 0x08, 0x52, 0x7b, 0x45, 0xd0, 0x8c, 0x7c, 0xe1, 0x01, 0xc2, 0x0a, 0xd2, 0x8c, - 0x7c, 0xf2, 0x19, 0x1d, 0x42, 0x6a, 0xac, 0x10, 0x52, 0x7b, 0x85, 0xd0, 0x37, 0x54, 0x38, 0x2e, - 0x84, 0x10, 0x3b, 0x1e, 0x7a, 0xb3, 0x2a, 0xd0, 0x85, 0x18, 0xf7, 0x2b, 0xc2, 0x62, 0xea, 0x42, - 0x8c, 0x33, 0xea, 0xc3, 0xe2, 0xac, 0xbb, 0x0a, 0x95, 0x63, 0x54, 0xa1, 0xab, 0x5e, 0x0c, 0x5d, - 0x88, 0x71, 0xef, 0xa2, 0x3b, 0xf6, 0x2e, 0x1d, 0x56, 0x04, 0x1e, 0x89, 0x55, 0x04, 0x56, 0x62, - 0x15, 0x81, 0x6b, 0xbe, 0x07, 0x3f, 0x90, 0x80, 0x13, 0xbe, 0x07, 0xe9, 0x27, 0xf2, 0x6b, 0x42, - 0xd9, 0xc0, 0x09, 0x95, 0xce, 0x4f, 0x6d, 0x02, 0x6e, 0x4c, 0xac, 0xd4, 0xf4, 0x4d, 0xf1, 0xac, - 0x2a, 0x77, 0xd4, 0xf3, 0x9b, 0x80, 0xc7, 0xd9, 0x5e, 0xe8, 0x0c, 0xa8, 0x2b, 0x35, 0x87, 0x54, - 0x8b, 0xb0, 0xc7, 0x16, 0x0d, 0x4c, 0xd6, 0x0d, 0x18, 0x20, 0xec, 0x0e, 0x71, 0xef, 0xad, 0x3c, - 0xb8, 0x64, 0x30, 0x49, 0xd9, 0x17, 0x15, 0x98, 0x16, 0x42, 0xf9, 0xcd, 0x39, 0x31, 0xb8, 0x12, - 0xeb, 0xc4, 0x40, 0x48, 0x10, 0xff, 0xf4, 0xe0, 0xde, 0xee, 0x83, 0xea, 0x60, 0x96, 0xc8, 0x27, - 0x09, 0xbf, 0x0a, 0xa3, 0xfe, 0x0c, 0xc8, 0x2b, 0xdb, 0xf9, 0xe8, 0xcd, 0xcc, 0xb0, 0xd4, 0x3c, - 0x2f, 0x6d, 0xa2, 0x1d, 0x0a, 0xf3, 0xb2, 0x35, 0x9b, 0x83, 0xb1, 0x75, 0xf1, 0x0f, 0x77, 0xa2, - 0xf6, 0x22, 0x52, 0xb8, 0x35, 0xbf, 0xf1, 0x99, 0xa9, 0xbe, 0xec, 0xfd, 0x30, 0x1c, 0xfc, 0xdb, - 0x1c, 0x09, 0x38, 0xc8, 0x81, 0xb9, 0xe4, 0x4b, 0x98, 0xfb, 0x0f, 0x15, 0xb8, 0x2d, 0xc8, 0xfe, - 0xae, 0xba, 0xbb, 0xbf, 0x62, 0xe1, 0x9e, 0xfe, 0x41, 0x48, 0x21, 0xe6, 0x38, 0xf6, 0xeb, 0x26, - 0xec, 0x35, 0x32, 0x94, 0x7d, 0x9e, 0xfc, 0x6b, 0x78, 0x10, 0x69, 0x13, 0x84, 0x3f, 0x76, 0x71, - 0xf2, 0x1e, 0xe8, 0xa7, 0xf2, 0x45, 0xbd, 0x46, 0x24, 0xbd, 0x3e, 0x17, 0xa2, 0x17, 0x89, 0x23, - 0xfd, 0x9a, 0xa0, 0x57, 0xe0, 0x6d, 0x35, 0x94, 0x7d, 0x9e, 0x07, 0x5f, 0x21, 0x85, 0xfb, 0x3f, - 0x12, 0x51, 0xd1, 0x4a, 0xce, 0x42, 0xaa, 0x2c, 0xf3, 0x84, 0xeb, 0x59, 0x82, 0xe4, 0xba, 0x5d, - 0x23, 0xbf, 0xbb, 0x42, 0x7e, 0x3a, 0x96, 0x19, 0x99, 0xfd, 0x8e, 0xec, 0x69, 0x48, 0x15, 0xf7, - 0xeb, 0x8d, 0x5a, 0x1b, 0x59, 0xec, 0xc8, 0x9e, 0xed, 0xa0, 0x63, 0x8c, 0xe1, 0xd1, 0xb2, 0x45, - 0x18, 0x5f, 0xb7, 0xad, 0xc2, 0x81, 0x1b, 0xac, 0x1b, 0xf3, 0x52, 0x8a, 0xb0, 0x23, 0x1f, 0xf2, - 0xd7, 0x1e, 0x98, 0xa1, 0xd0, 0xff, 0xed, 0x97, 0xa7, 0x94, 0x6d, 0x6f, 0xfb, 0x7c, 0x0d, 0x6e, - 0x67, 0xe9, 0xd3, 0x25, 0x6a, 0x31, 0x4a, 0xd4, 0x20, 0x3b, 0xa6, 0x0e, 0x88, 0x5b, 0xc1, 0xe2, - 0xac, 0x50, 0x71, 0x6f, 0x4c, 0x33, 0xdc, 0x14, 0x1d, 0xaa, 0x99, 0x7a, 0x24, 0xcd, 0x42, 0xc5, - 0xcd, 0x47, 0x89, 0x93, 0x34, 0xbb, 0x1b, 0x06, 0x3d, 0x5a, 0x20, 0x1a, 0x82, 0x99, 0xb2, 0x38, - 0x97, 0x85, 0xa1, 0x40, 0xc2, 0xea, 0xfd, 0xa0, 0xe4, 0xb5, 0x3e, 0xfc, 0x5f, 0x41, 0x53, 0xf0, - 0x7f, 0x45, 0x2d, 0x31, 0x77, 0x0f, 0x8c, 0x49, 0xdb, 0x97, 0x98, 0x52, 0xd2, 0x00, 0xff, 0x57, - 0xd6, 0x86, 0x26, 0x93, 0x1f, 0xfc, 0xe3, 0x4c, 0xdf, 0xdc, 0x15, 0xd0, 0xbb, 0x37, 0x3a, 0xf5, - 0x01, 0x48, 0xe4, 0xb1, 0xc8, 0xdb, 0x21, 0x51, 0x28, 0x68, 0xca, 0xe4, 0xd8, 0x6f, 0x7e, 0x6a, - 0x7a, 0xa8, 0x40, 0xfe, 0xf0, 0xf8, 0x31, 0xe4, 0x16, 0x0a, 0x0c, 0xfc, 0x10, 0xdc, 0x16, 0xba, - 0x51, 0x8a, 0xf1, 0xc5, 0x22, 0xc5, 0x97, 0x4a, 0x5d, 0xf8, 0x52, 0x89, 0xe0, 0x95, 0x1c, 0x3f, - 0x70, 0xce, 0xeb, 0x21, 0x9b, 0x8c, 0xe9, 0x5a, 0xe0, 0x80, 0x3b, 0x9f, 0x7b, 0x88, 0xf1, 0x16, - 0x42, 0x79, 0x51, 0xc4, 0x81, 0x75, 0x21, 0x57, 0x64, 0xf8, 0x62, 0x28, 0x7e, 0x57, 0x3a, 0x55, - 0x15, 0x57, 0x08, 0x26, 0xa4, 0xe8, 0x29, 0x5c, 0x0a, 0x15, 0xb2, 0x1f, 0xb8, 0xeb, 0x5e, 0xf2, - 0x14, 0x2e, 0x87, 0xf2, 0xd6, 0x23, 0xee, 0x7c, 0x95, 0x73, 0x67, 0xd8, 0x22, 0x9f, 0x3f, 0xab, - 0xdf, 0xc6, 0x73, 0x54, 0xa8, 0xc0, 0xcc, 0x40, 0x9c, 0x2b, 0x57, 0x64, 0x80, 0x42, 0x4f, 0x40, - 0x6f, 0x2b, 0x71, 0x64, 0xee, 0x11, 0x26, 0xa4, 0xd8, 0x53, 0x48, 0x84, 0xa9, 0x38, 0xbc, 0xb0, - 0x7d, 0xe3, 0x95, 0x4c, 0xdf, 0x4b, 0xaf, 0x64, 0xfa, 0xfe, 0xf5, 0x95, 0x4c, 0xdf, 0x77, 0x5e, - 0xc9, 0x28, 0xdf, 0x7f, 0x25, 0xa3, 0xfc, 0xe0, 0x95, 0x8c, 0xf2, 0x93, 0x57, 0x32, 0xca, 0xb3, - 0x37, 0x33, 0xca, 0x0b, 0x37, 0x33, 0xca, 0x97, 0x6e, 0x66, 0x94, 0xaf, 0xdd, 0xcc, 0x28, 0x2f, - 0xde, 0xcc, 0x28, 0x37, 0x6e, 0x66, 0xfa, 0x5e, 0xba, 0x99, 0xe9, 0xfb, 0xce, 0xcd, 0x8c, 0xf2, - 0xfd, 0x9b, 0x99, 0xbe, 0x1f, 0xdc, 0xcc, 0x28, 0x3f, 0xb9, 0x99, 0x51, 0x9e, 0xfd, 0x6e, 0xa6, - 0xef, 0xf9, 0xef, 0x66, 0xfa, 0x5e, 0xf8, 0x6e, 0x46, 0xf9, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xa8, 0x9b, 0x4a, 0x25, 0xce, 0x63, 0x00, 0x00, + // 6510 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x70, 0x24, 0x57, + 0x75, 0xbf, 0x7a, 0x7a, 0xa4, 0x1d, 0x1d, 0xbd, 0x5a, 0xad, 0xb5, 0x76, 0x2c, 0xaf, 0x25, 0xed, + 0x58, 0x5e, 0xcb, 0xc2, 0xd6, 0x6a, 0xb5, 0xd2, 0x3e, 0x66, 0xb1, 0x5d, 0xf3, 0xda, 0xb5, 0x16, + 0x69, 0x24, 0x5a, 0x12, 0xf6, 0xf2, 0xff, 0x57, 0x4d, 0xf5, 0xce, 0x5c, 0x49, 0x63, 0xcf, 0x74, + 0x0f, 0xd3, 0x2d, 0xdb, 0xf2, 0x87, 0x7f, 0xf9, 0x0f, 0xff, 0x3f, 0x81, 0xa4, 0xf2, 0x24, 0xa9, + 0x00, 0x01, 0x63, 0x48, 0x11, 0x0c, 0xe4, 0x01, 0x09, 0x21, 0x14, 0x95, 0x0a, 0xfe, 0x42, 0xb2, + 0xf9, 0x92, 0x32, 0xf9, 0x94, 0xa2, 0x52, 0x2e, 0xbc, 0xa6, 0x2a, 0x24, 0x71, 0x12, 0x08, 0xae, + 0x82, 0x2a, 0xf3, 0x21, 0x75, 0x5f, 0xdd, 0x7d, 0xef, 0xf4, 0xa8, 0x5b, 0x5e, 0x1b, 0xf8, 0xb2, + 0x3b, 0x73, 0xcf, 0xf9, 0x9d, 0x3e, 0xf7, 0xbc, 0xee, 0xe9, 0x7b, 0xaf, 0x06, 0x5e, 0x5b, 0x86, + 0xe9, 0x5d, 0xdb, 0xde, 0x6d, 0xa0, 0x33, 0xad, 0xb6, 0xed, 0xda, 0x37, 0xf6, 0x77, 0xce, 0xd4, + 0x90, 0x53, 0x6d, 0xd7, 0x5b, 0xae, 0xdd, 0x9e, 0x27, 0x63, 0xfa, 0x08, 0xe5, 0x98, 0xe7, 0x1c, + 0x99, 0x35, 0x18, 0xbd, 0x52, 0x6f, 0xa0, 0xa2, 0xc7, 0xb8, 0x89, 0x5c, 0xfd, 0x22, 0x24, 0x77, + 0xea, 0x0d, 0x94, 0x56, 0xa6, 0xd5, 0xd9, 0x81, 0xc5, 0x99, 0x79, 0x09, 0x34, 0x2f, 0x22, 0x36, + 0xf0, 0xb0, 0x41, 0x10, 0x99, 0xef, 0x27, 0x61, 0x2c, 0x84, 0xaa, 0xeb, 0x90, 0xb4, 0xcc, 0x26, + 0x96, 0xa8, 0xcc, 0xf6, 0x1b, 0xe4, 0xb3, 0x9e, 0x86, 0x63, 0x2d, 0xb3, 0xfa, 0xa4, 0xb9, 0x8b, + 0xd2, 0x09, 0x32, 0xcc, 0xbf, 0xea, 0x93, 0x00, 0x35, 0xd4, 0x42, 0x56, 0x0d, 0x59, 0xd5, 0x83, + 0xb4, 0x3a, 0xad, 0xce, 0xf6, 0x1b, 0x81, 0x11, 0xfd, 0x5d, 0x30, 0xda, 0xda, 0xbf, 0xd1, 0xa8, + 0x57, 0x2b, 0x01, 0x36, 0x98, 0x56, 0x67, 0x7b, 0x0d, 0x8d, 0x12, 0x8a, 0x3e, 0xf3, 0x7d, 0x30, + 0xf2, 0x34, 0x32, 0x9f, 0x0c, 0xb2, 0x0e, 0x10, 0xd6, 0x61, 0x3c, 0x1c, 0x60, 0x2c, 0xc0, 0x60, + 0x13, 0x39, 0x8e, 0xb9, 0x8b, 0x2a, 0xee, 0x41, 0x0b, 0xa5, 0x93, 0x64, 0xf6, 0xd3, 0x1d, 0xb3, + 0x97, 0x67, 0x3e, 0xc0, 0x50, 0x5b, 0x07, 0x2d, 0xa4, 0xe7, 0xa0, 0x1f, 0x59, 0xfb, 0x4d, 0x2a, + 0xa1, 0xb7, 0x8b, 0xfd, 0x4a, 0xd6, 0x7e, 0x53, 0x96, 0x92, 0xc2, 0x30, 0x26, 0xe2, 0x98, 0x83, + 0xda, 0x4f, 0xd5, 0xab, 0x28, 0xdd, 0x47, 0x04, 0xdc, 0xd7, 0x21, 0x60, 0x93, 0xd2, 0x65, 0x19, + 0x1c, 0xa7, 0x17, 0xa0, 0x1f, 0x3d, 0xe3, 0x22, 0xcb, 0xa9, 0xdb, 0x56, 0xfa, 0x18, 0x11, 0x72, + 0x6f, 0x88, 0x17, 0x51, 0xa3, 0x26, 0x8b, 0xf0, 0x71, 0xfa, 0x79, 0x38, 0x66, 0xb7, 0xdc, 0xba, + 0x6d, 0x39, 0xe9, 0xd4, 0xb4, 0x32, 0x3b, 0xb0, 0x78, 0x32, 0x34, 0x10, 0xd6, 0x29, 0x8f, 0xc1, + 0x99, 0xf5, 0x15, 0xd0, 0x1c, 0x7b, 0xbf, 0x5d, 0x45, 0x95, 0xaa, 0x5d, 0x43, 0x95, 0xba, 0xb5, + 0x63, 0xa7, 0xfb, 0x89, 0x80, 0xa9, 0xce, 0x89, 0x10, 0xc6, 0x82, 0x5d, 0x43, 0x2b, 0xd6, 0x8e, + 0x6d, 0x0c, 0x3b, 0xc2, 0x77, 0x7d, 0x1c, 0xfa, 0x9c, 0x03, 0xcb, 0x35, 0x9f, 0x49, 0x0f, 0x92, + 0x08, 0x61, 0xdf, 0x32, 0x3f, 0xe9, 0x85, 0x91, 0x38, 0x21, 0x76, 0x19, 0x7a, 0x77, 0xf0, 0x2c, + 0xd3, 0x89, 0xa3, 0xd8, 0x80, 0x62, 0x44, 0x23, 0xf6, 0xbd, 0x45, 0x23, 0xe6, 0x60, 0xc0, 0x42, + 0x8e, 0x8b, 0x6a, 0x34, 0x22, 0xd4, 0x98, 0x31, 0x05, 0x14, 0xd4, 0x19, 0x52, 0xc9, 0xb7, 0x14, + 0x52, 0x8f, 0xc3, 0x88, 0xa7, 0x52, 0xa5, 0x6d, 0x5a, 0xbb, 0x3c, 0x36, 0xcf, 0x44, 0x69, 0x32, + 0x5f, 0xe2, 0x38, 0x03, 0xc3, 0x8c, 0x61, 0x24, 0x7c, 0xd7, 0x8b, 0x00, 0xb6, 0x85, 0xec, 0x9d, + 0x4a, 0x0d, 0x55, 0x1b, 0xe9, 0x54, 0x17, 0x2b, 0xad, 0x63, 0x96, 0x0e, 0x2b, 0xd9, 0x74, 0xb4, + 0xda, 0xd0, 0x2f, 0xf9, 0xa1, 0x76, 0xac, 0x4b, 0xa4, 0xac, 0xd1, 0x24, 0xeb, 0x88, 0xb6, 0x6d, + 0x18, 0x6e, 0x23, 0x1c, 0xf7, 0xa8, 0xc6, 0x66, 0xd6, 0x4f, 0x94, 0x98, 0x8f, 0x9c, 0x99, 0xc1, + 0x60, 0x74, 0x62, 0x43, 0xed, 0xe0, 0x57, 0xfd, 0x1e, 0xf0, 0x06, 0x2a, 0x24, 0xac, 0x80, 0x54, + 0xa1, 0x41, 0x3e, 0x58, 0x36, 0x9b, 0x68, 0xe2, 0x22, 0x0c, 0x8b, 0xe6, 0xd1, 0x8f, 0x43, 0xaf, + 0xe3, 0x9a, 0x6d, 0x97, 0x44, 0x61, 0xaf, 0x41, 0xbf, 0xe8, 0x1a, 0xa8, 0xc8, 0xaa, 0x91, 0x2a, + 0xd7, 0x6b, 0xe0, 0x8f, 0x13, 0x17, 0x60, 0x48, 0x78, 0x7c, 0x5c, 0x60, 0xe6, 0xe3, 0x7d, 0x70, + 0x3c, 0x2c, 0xe6, 0x42, 0xc3, 0x7f, 0x1c, 0xfa, 0xac, 0xfd, 0xe6, 0x0d, 0xd4, 0x4e, 0xab, 0x44, + 0x02, 0xfb, 0xa6, 0xe7, 0xa0, 0xb7, 0x61, 0xde, 0x40, 0x8d, 0x74, 0x72, 0x5a, 0x99, 0x1d, 0x5e, + 0x7c, 0x57, 0xac, 0xa8, 0x9e, 0x5f, 0xc5, 0x10, 0x83, 0x22, 0xf5, 0x87, 0x21, 0xc9, 0x4a, 0x1c, + 0x96, 0x30, 0x17, 0x4f, 0x02, 0x8e, 0x45, 0x83, 0xe0, 0xf4, 0xbb, 0xa0, 0x1f, 0xff, 0x4f, 0x6d, + 0xdb, 0x47, 0x74, 0x4e, 0xe1, 0x01, 0x6c, 0x57, 0x7d, 0x02, 0x52, 0x24, 0xcc, 0x6a, 0x88, 0x2f, + 0x0d, 0xde, 0x77, 0xec, 0x98, 0x1a, 0xda, 0x31, 0xf7, 0x1b, 0x6e, 0xe5, 0x29, 0xb3, 0xb1, 0x8f, + 0x48, 0xc0, 0xf4, 0x1b, 0x83, 0x6c, 0xf0, 0x7d, 0x78, 0x4c, 0x9f, 0x82, 0x01, 0x1a, 0x95, 0x75, + 0xab, 0x86, 0x9e, 0x21, 0xd5, 0xa7, 0xd7, 0xa0, 0x81, 0xba, 0x82, 0x47, 0xf0, 0xe3, 0x9f, 0x70, + 0x6c, 0x8b, 0xbb, 0x96, 0x3c, 0x02, 0x0f, 0x90, 0xc7, 0x5f, 0x90, 0x0b, 0xdf, 0xdd, 0xe1, 0xd3, + 0x93, 0x63, 0x31, 0xf3, 0xf5, 0x04, 0x24, 0x49, 0xbe, 0x8d, 0xc0, 0xc0, 0xd6, 0xf5, 0x8d, 0x52, + 0xa5, 0xb8, 0xbe, 0x9d, 0x5f, 0x2d, 0x69, 0x8a, 0x3e, 0x0c, 0x40, 0x06, 0xae, 0xac, 0xae, 0xe7, + 0xb6, 0xb4, 0x84, 0xf7, 0x7d, 0xa5, 0xbc, 0x75, 0x7e, 0x49, 0x53, 0x3d, 0xc0, 0x36, 0x1d, 0x48, + 0x06, 0x19, 0xce, 0x2d, 0x6a, 0xbd, 0xba, 0x06, 0x83, 0x54, 0xc0, 0xca, 0xe3, 0xa5, 0xe2, 0xf9, + 0x25, 0xad, 0x4f, 0x1c, 0x39, 0xb7, 0xa8, 0x1d, 0xd3, 0x87, 0xa0, 0x9f, 0x8c, 0xe4, 0xd7, 0xd7, + 0x57, 0xb5, 0x94, 0x27, 0x73, 0x73, 0xcb, 0x58, 0x29, 0x5f, 0xd5, 0xfa, 0x3d, 0x99, 0x57, 0x8d, + 0xf5, 0xed, 0x0d, 0x0d, 0x3c, 0x09, 0x6b, 0xa5, 0xcd, 0xcd, 0xdc, 0xd5, 0x92, 0x36, 0xe0, 0x71, + 0xe4, 0xaf, 0x6f, 0x95, 0x36, 0xb5, 0x41, 0x41, 0xad, 0x73, 0x8b, 0xda, 0x90, 0xf7, 0x88, 0x52, + 0x79, 0x7b, 0x4d, 0x1b, 0xd6, 0x47, 0x61, 0x88, 0x3e, 0x82, 0x2b, 0x31, 0x22, 0x0d, 0x9d, 0x5f, + 0xd2, 0x34, 0x5f, 0x11, 0x2a, 0x65, 0x54, 0x18, 0x38, 0xbf, 0xa4, 0xe9, 0x99, 0x02, 0xf4, 0x92, + 0xe8, 0xd2, 0x75, 0x18, 0x5e, 0xcd, 0xe5, 0x4b, 0xab, 0x95, 0xf5, 0x8d, 0xad, 0x95, 0xf5, 0x72, + 0x6e, 0x55, 0x53, 0xfc, 0x31, 0xa3, 0xf4, 0xde, 0xed, 0x15, 0xa3, 0x54, 0xd4, 0x12, 0xc1, 0xb1, + 0x8d, 0x52, 0x6e, 0xab, 0x54, 0xd4, 0xd4, 0x4c, 0x15, 0x8e, 0x87, 0xd5, 0x99, 0xd0, 0xcc, 0x08, + 0xb8, 0x38, 0xd1, 0xc5, 0xc5, 0x44, 0x56, 0x87, 0x8b, 0x3f, 0xa7, 0xc0, 0x58, 0x48, 0xad, 0x0d, + 0x7d, 0xc8, 0x23, 0xd0, 0x4b, 0x43, 0x94, 0xae, 0x3e, 0xf7, 0x87, 0x16, 0x6d, 0x12, 0xb0, 0x1d, + 0x2b, 0x10, 0xc1, 0x05, 0x57, 0x60, 0xb5, 0xcb, 0x0a, 0x8c, 0x45, 0x74, 0x28, 0xf9, 0x21, 0x05, + 0xd2, 0xdd, 0x64, 0x47, 0x14, 0x8a, 0x84, 0x50, 0x28, 0x2e, 0xcb, 0x0a, 0x9c, 0xea, 0x3e, 0x87, + 0x0e, 0x2d, 0xbe, 0xa0, 0xc0, 0x78, 0x78, 0xa3, 0x12, 0xaa, 0xc3, 0xc3, 0xd0, 0xd7, 0x44, 0xee, + 0x9e, 0xcd, 0x17, 0xeb, 0xd3, 0x21, 0x4b, 0x00, 0x26, 0xcb, 0xb6, 0x62, 0xa8, 0xe0, 0x1a, 0xa2, + 0x76, 0xeb, 0x36, 0xa8, 0x36, 0x1d, 0x9a, 0x7e, 0x34, 0x01, 0x77, 0x84, 0x0a, 0x0f, 0x55, 0xf4, + 0x6e, 0x80, 0xba, 0xd5, 0xda, 0x77, 0xe9, 0x82, 0x4c, 0xeb, 0x53, 0x3f, 0x19, 0x21, 0xb9, 0x8f, + 0x6b, 0xcf, 0xbe, 0xeb, 0xd1, 0x55, 0x42, 0x07, 0x3a, 0x44, 0x18, 0x2e, 0xfa, 0x8a, 0x26, 0x89, + 0xa2, 0x93, 0x5d, 0x66, 0xda, 0xb1, 0xd6, 0x2d, 0x80, 0x56, 0x6d, 0xd4, 0x91, 0xe5, 0x56, 0x1c, + 0xb7, 0x8d, 0xcc, 0x66, 0xdd, 0xda, 0x25, 0x05, 0x38, 0x95, 0xed, 0xdd, 0x31, 0x1b, 0x0e, 0x32, + 0x46, 0x28, 0x79, 0x93, 0x53, 0x31, 0x82, 0xac, 0x32, 0xed, 0x00, 0xa2, 0x4f, 0x40, 0x50, 0xb2, + 0x87, 0xc8, 0x7c, 0xf9, 0x18, 0x0c, 0x04, 0xda, 0x3a, 0xfd, 0x14, 0x0c, 0x3e, 0x61, 0x3e, 0x65, + 0x56, 0x78, 0xab, 0x4e, 0x2d, 0x31, 0x80, 0xc7, 0x36, 0x58, 0xbb, 0xbe, 0x00, 0xc7, 0x09, 0x8b, + 0xbd, 0xef, 0xa2, 0x76, 0xa5, 0xda, 0x30, 0x1d, 0x87, 0x18, 0x2d, 0x45, 0x58, 0x75, 0x4c, 0x5b, + 0xc7, 0xa4, 0x02, 0xa7, 0xe8, 0xcb, 0x30, 0x46, 0x10, 0xcd, 0xfd, 0x86, 0x5b, 0x6f, 0x35, 0x50, + 0x05, 0xbf, 0x3c, 0x38, 0xa4, 0x10, 0x7b, 0x9a, 0x8d, 0x62, 0x8e, 0x35, 0xc6, 0x80, 0x35, 0x72, + 0xf4, 0x22, 0xdc, 0x4d, 0x60, 0xbb, 0xc8, 0x42, 0x6d, 0xd3, 0x45, 0x15, 0xf4, 0x81, 0x7d, 0xb3, + 0xe1, 0x54, 0x4c, 0xab, 0x56, 0xd9, 0x33, 0x9d, 0xbd, 0xf4, 0x71, 0x2c, 0x20, 0x9f, 0x48, 0x2b, + 0xc6, 0x9d, 0x98, 0xf1, 0x2a, 0xe3, 0x2b, 0x11, 0xb6, 0x9c, 0x55, 0x7b, 0xd4, 0x74, 0xf6, 0xf4, + 0x2c, 0x8c, 0x13, 0x29, 0x8e, 0xdb, 0xae, 0x5b, 0xbb, 0x95, 0xea, 0x1e, 0xaa, 0x3e, 0x59, 0xd9, + 0x77, 0x77, 0x2e, 0xa6, 0xef, 0x0a, 0x3e, 0x9f, 0x68, 0xb8, 0x49, 0x78, 0x0a, 0x98, 0x65, 0xdb, + 0xdd, 0xb9, 0xa8, 0x6f, 0xc2, 0x20, 0x76, 0x46, 0xb3, 0xfe, 0x2c, 0xaa, 0xec, 0xd8, 0x6d, 0xb2, + 0xb2, 0x0c, 0x87, 0x64, 0x76, 0xc0, 0x82, 0xf3, 0xeb, 0x0c, 0xb0, 0x66, 0xd7, 0x50, 0xb6, 0x77, + 0x73, 0xa3, 0x54, 0x2a, 0x1a, 0x03, 0x5c, 0xca, 0x15, 0xbb, 0x8d, 0x03, 0x6a, 0xd7, 0xf6, 0x0c, + 0x3c, 0x40, 0x03, 0x6a, 0xd7, 0xe6, 0xe6, 0x5d, 0x86, 0xb1, 0x6a, 0x95, 0xce, 0xb9, 0x5e, 0xad, + 0xb0, 0x16, 0xdf, 0x49, 0x6b, 0x82, 0xb1, 0xaa, 0xd5, 0xab, 0x94, 0x81, 0xc5, 0xb8, 0xa3, 0x5f, + 0x82, 0x3b, 0x7c, 0x63, 0x05, 0x81, 0xa3, 0x1d, 0xb3, 0x94, 0xa1, 0xcb, 0x30, 0xd6, 0x3a, 0xe8, + 0x04, 0xea, 0xc2, 0x13, 0x5b, 0x07, 0x32, 0xec, 0x5e, 0xf2, 0xda, 0xd6, 0x46, 0x55, 0xd3, 0x45, + 0xb5, 0xf4, 0x89, 0x20, 0x77, 0x80, 0xa0, 0x9f, 0x01, 0xad, 0x5a, 0xad, 0x20, 0xcb, 0xbc, 0xd1, + 0x40, 0x15, 0xb3, 0x8d, 0x2c, 0xd3, 0x49, 0x4f, 0x05, 0x99, 0x87, 0xab, 0xd5, 0x12, 0xa1, 0xe6, + 0x08, 0x51, 0x9f, 0x83, 0x51, 0xfb, 0xc6, 0x13, 0x55, 0x1a, 0x59, 0x95, 0x56, 0x1b, 0xed, 0xd4, + 0x9f, 0x49, 0xcf, 0x10, 0x33, 0x8d, 0x60, 0x02, 0x89, 0xab, 0x0d, 0x32, 0xac, 0xdf, 0x0f, 0x5a, + 0xd5, 0xd9, 0x33, 0xdb, 0x2d, 0xb2, 0xb4, 0x3b, 0x2d, 0xb3, 0x8a, 0xd2, 0xf7, 0x52, 0x56, 0x3a, + 0x5e, 0xe6, 0xc3, 0x38, 0xb2, 0x9d, 0xa7, 0xeb, 0x3b, 0x2e, 0x97, 0x78, 0x1f, 0x8d, 0x6c, 0x32, + 0xc6, 0xa4, 0x3d, 0x0e, 0xc7, 0xf7, 0xad, 0xba, 0xe5, 0xa2, 0x76, 0xab, 0x8d, 0x70, 0x13, 0x4f, + 0x33, 0x31, 0xfd, 0x2f, 0xc7, 0xba, 0xb4, 0xe1, 0xdb, 0x41, 0x6e, 0x1a, 0x00, 0xc6, 0xd8, 0x7e, + 0xe7, 0x60, 0x26, 0x0b, 0x83, 0xc1, 0xb8, 0xd0, 0xfb, 0x81, 0x46, 0x86, 0xa6, 0xe0, 0x35, 0xb6, + 0xb0, 0x5e, 0xc4, 0xab, 0xe3, 0xfb, 0x4b, 0x5a, 0x02, 0xaf, 0xd2, 0xab, 0x2b, 0x5b, 0xa5, 0x8a, + 0xb1, 0x5d, 0xde, 0x5a, 0x59, 0x2b, 0x69, 0xea, 0x5c, 0x7f, 0xea, 0x07, 0xc7, 0xb4, 0xe7, 0x9e, + 0x7b, 0xee, 0xb9, 0x44, 0xe6, 0xdb, 0x09, 0x18, 0x16, 0x3b, 0x63, 0xfd, 0xdd, 0x70, 0x82, 0xbf, + 0xc6, 0x3a, 0xc8, 0xad, 0x3c, 0x5d, 0x6f, 0x93, 0x50, 0x6d, 0x9a, 0xb4, 0xb7, 0xf4, 0xac, 0x7c, + 0x9c, 0x71, 0x6d, 0x22, 0xf7, 0xb1, 0x7a, 0x1b, 0x07, 0x62, 0xd3, 0x74, 0xf5, 0x55, 0x98, 0xb2, + 0xec, 0x8a, 0xe3, 0x9a, 0x56, 0xcd, 0x6c, 0xd7, 0x2a, 0xfe, 0x06, 0x42, 0xc5, 0xac, 0x56, 0x91, + 0xe3, 0xd8, 0x74, 0x89, 0xf0, 0xa4, 0x9c, 0xb4, 0xec, 0x4d, 0xc6, 0xec, 0xd7, 0xce, 0x1c, 0x63, + 0x95, 0x22, 0x42, 0xed, 0x16, 0x11, 0x77, 0x41, 0x7f, 0xd3, 0x6c, 0x55, 0x90, 0xe5, 0xb6, 0x0f, + 0x48, 0x3f, 0x97, 0x32, 0x52, 0x4d, 0xb3, 0x55, 0xc2, 0xdf, 0xdf, 0x39, 0x1f, 0x04, 0xed, 0xf8, + 0xcf, 0x2a, 0x0c, 0x06, 0x7b, 0x3a, 0xdc, 0x22, 0x57, 0x49, 0xfd, 0x56, 0x48, 0x86, 0xdf, 0x73, + 0x68, 0x07, 0x38, 0x5f, 0xc0, 0x85, 0x3d, 0xdb, 0x47, 0x3b, 0x2d, 0x83, 0x22, 0xf1, 0xa2, 0x8a, + 0x73, 0x1a, 0xd1, 0xfe, 0x3d, 0x65, 0xb0, 0x6f, 0xfa, 0x55, 0xe8, 0x7b, 0xc2, 0x21, 0xb2, 0xfb, + 0x88, 0xec, 0x99, 0xc3, 0x65, 0x5f, 0xdb, 0x24, 0xc2, 0xfb, 0xaf, 0x6d, 0x56, 0xca, 0xeb, 0xc6, + 0x5a, 0x6e, 0xd5, 0x60, 0x70, 0xfd, 0x4e, 0x48, 0x36, 0xcc, 0x67, 0x0f, 0xc4, 0x25, 0x80, 0x0c, + 0xc5, 0x35, 0xfc, 0x9d, 0x90, 0x7c, 0x1a, 0x99, 0x4f, 0x8a, 0x85, 0x97, 0x0c, 0xbd, 0x83, 0xa1, + 0x7f, 0x06, 0x7a, 0x89, 0xbd, 0x74, 0x00, 0x66, 0x31, 0xad, 0x47, 0x4f, 0x41, 0xb2, 0xb0, 0x6e, + 0xe0, 0xf0, 0xd7, 0x60, 0x90, 0x8e, 0x56, 0x36, 0x56, 0x4a, 0x85, 0x92, 0x96, 0xc8, 0x2c, 0x43, + 0x1f, 0x35, 0x02, 0x4e, 0x0d, 0xcf, 0x0c, 0x5a, 0x0f, 0xfb, 0xca, 0x64, 0x28, 0x9c, 0xba, 0xbd, + 0x96, 0x2f, 0x19, 0x5a, 0x22, 0xe8, 0x5e, 0x07, 0x06, 0x83, 0xed, 0xdc, 0xcf, 0x27, 0xa6, 0xbe, + 0xa9, 0xc0, 0x40, 0xa0, 0x3d, 0xc3, 0x8d, 0x81, 0xd9, 0x68, 0xd8, 0x4f, 0x57, 0xcc, 0x46, 0xdd, + 0x74, 0x58, 0x50, 0x00, 0x19, 0xca, 0xe1, 0x91, 0xb8, 0x4e, 0xfb, 0xb9, 0x28, 0xff, 0xbc, 0x02, + 0x9a, 0xdc, 0xda, 0x49, 0x0a, 0x2a, 0xbf, 0x50, 0x05, 0x3f, 0xa5, 0xc0, 0xb0, 0xd8, 0xcf, 0x49, + 0xea, 0x9d, 0xfa, 0x85, 0xaa, 0xf7, 0xbd, 0x04, 0x0c, 0x09, 0x5d, 0x5c, 0x5c, 0xed, 0x3e, 0x00, + 0xa3, 0xf5, 0x1a, 0x6a, 0xb6, 0x6c, 0x17, 0x59, 0xd5, 0x83, 0x4a, 0x03, 0x3d, 0x85, 0x1a, 0xe9, + 0x0c, 0x29, 0x14, 0x67, 0x0e, 0xef, 0x13, 0xe7, 0x57, 0x7c, 0xdc, 0x2a, 0x86, 0x65, 0xc7, 0x56, + 0x8a, 0xa5, 0xb5, 0x8d, 0xf5, 0xad, 0x52, 0xb9, 0x70, 0xbd, 0xb2, 0x5d, 0x7e, 0x4f, 0x79, 0xfd, + 0xb1, 0xb2, 0xa1, 0xd5, 0x25, 0xb6, 0x77, 0x30, 0xd5, 0x37, 0x40, 0x93, 0x95, 0xd2, 0x4f, 0x40, + 0x98, 0x5a, 0x5a, 0x8f, 0x3e, 0x06, 0x23, 0xe5, 0xf5, 0xca, 0xe6, 0x4a, 0xb1, 0x54, 0x29, 0x5d, + 0xb9, 0x52, 0x2a, 0x6c, 0x6d, 0xd2, 0x17, 0x67, 0x8f, 0x7b, 0x4b, 0x4c, 0xea, 0x4f, 0xaa, 0x30, + 0x16, 0xa2, 0x89, 0x9e, 0x63, 0x3d, 0x3b, 0x7d, 0x8d, 0x78, 0x30, 0x8e, 0xf6, 0xf3, 0xb8, 0x2b, + 0xd8, 0x30, 0xdb, 0x2e, 0x6b, 0xf1, 0xef, 0x07, 0x6c, 0x25, 0xcb, 0xad, 0xef, 0xd4, 0x51, 0x9b, + 0xed, 0x33, 0xd0, 0x46, 0x7e, 0xc4, 0x1f, 0xa7, 0x5b, 0x0d, 0x0f, 0x80, 0xde, 0xb2, 0x9d, 0xba, + 0x5b, 0x7f, 0x0a, 0x55, 0xea, 0x16, 0xdf, 0x94, 0xc0, 0x8d, 0x7d, 0xd2, 0xd0, 0x38, 0x65, 0xc5, + 0x72, 0x3d, 0x6e, 0x0b, 0xed, 0x9a, 0x12, 0x37, 0x2e, 0xe0, 0xaa, 0xa1, 0x71, 0x8a, 0xc7, 0x7d, + 0x0a, 0x06, 0x6b, 0xf6, 0x3e, 0x6e, 0x93, 0x28, 0x1f, 0x5e, 0x2f, 0x14, 0x63, 0x80, 0x8e, 0x79, + 0x2c, 0xac, 0x8f, 0xf5, 0x77, 0x43, 0x06, 0x8d, 0x01, 0x3a, 0x46, 0x59, 0xee, 0x83, 0x11, 0x73, + 0x77, 0xb7, 0x8d, 0x85, 0x73, 0x41, 0xb4, 0x33, 0x1f, 0xf6, 0x86, 0x09, 0xe3, 0xc4, 0x35, 0x48, + 0x71, 0x3b, 0xe0, 0x25, 0x19, 0x5b, 0xa2, 0xd2, 0xa2, 0x7b, 0x52, 0x89, 0xd9, 0x7e, 0x23, 0x65, + 0x71, 0xe2, 0x29, 0x18, 0xac, 0x3b, 0x15, 0x7f, 0x73, 0x34, 0x31, 0x9d, 0x98, 0x4d, 0x19, 0x03, + 0x75, 0xc7, 0xdb, 0x0d, 0xcb, 0x7c, 0x21, 0x01, 0xc3, 0xe2, 0xe6, 0xae, 0x5e, 0x84, 0x54, 0xc3, + 0xae, 0x9a, 0x24, 0xb4, 0xe8, 0xc9, 0xc2, 0x6c, 0xc4, 0x7e, 0xf0, 0xfc, 0x2a, 0xe3, 0x37, 0x3c, + 0xe4, 0xc4, 0x3f, 0x28, 0x90, 0xe2, 0xc3, 0xfa, 0x38, 0x24, 0x5b, 0xa6, 0xbb, 0x47, 0xc4, 0xf5, + 0xe6, 0x13, 0x9a, 0x62, 0x90, 0xef, 0x78, 0xdc, 0x69, 0x99, 0x16, 0x09, 0x01, 0x36, 0x8e, 0xbf, + 0x63, 0xbf, 0x36, 0x90, 0x59, 0x23, 0x6d, 0xbf, 0xdd, 0x6c, 0x22, 0xcb, 0x75, 0xb8, 0x5f, 0xd9, + 0x78, 0x81, 0x0d, 0xeb, 0xef, 0x82, 0x51, 0xb7, 0x6d, 0xd6, 0x1b, 0x02, 0x6f, 0x92, 0xf0, 0x6a, + 0x9c, 0xe0, 0x31, 0x67, 0xe1, 0x4e, 0x2e, 0xb7, 0x86, 0x5c, 0xb3, 0xba, 0x87, 0x6a, 0x3e, 0xa8, + 0x8f, 0xec, 0x1c, 0x9e, 0x60, 0x0c, 0x45, 0x46, 0xe7, 0xd8, 0xcc, 0x77, 0x14, 0x18, 0xe5, 0x2f, + 0x2a, 0x35, 0xcf, 0x58, 0x6b, 0x00, 0xa6, 0x65, 0xd9, 0x6e, 0xd0, 0x5c, 0x9d, 0xa1, 0xdc, 0x81, + 0x9b, 0xcf, 0x79, 0x20, 0x23, 0x20, 0x60, 0xa2, 0x09, 0xe0, 0x53, 0xba, 0x9a, 0x6d, 0x0a, 0x06, + 0xd8, 0xce, 0x3d, 0x39, 0xfe, 0xa1, 0xaf, 0xb6, 0x40, 0x87, 0xf0, 0x1b, 0x8d, 0x7e, 0x1c, 0x7a, + 0x6f, 0xa0, 0xdd, 0xba, 0xc5, 0xf6, 0x13, 0xe9, 0x17, 0xbe, 0x4b, 0x99, 0xf4, 0x76, 0x29, 0xf3, + 0x8f, 0xc3, 0x58, 0xd5, 0x6e, 0xca, 0xea, 0xe6, 0x35, 0xe9, 0xf5, 0xda, 0x79, 0x54, 0x79, 0x3f, + 0xf8, 0x2d, 0xe6, 0xe7, 0x12, 0xea, 0xd5, 0x8d, 0xfc, 0x97, 0x12, 0x13, 0x57, 0x29, 0x6e, 0x83, + 0x4f, 0xd3, 0x40, 0x3b, 0x0d, 0x54, 0xc5, 0xaa, 0xc3, 0x8f, 0x4f, 0xc3, 0x83, 0xbb, 0x75, 0x77, + 0x6f, 0xff, 0xc6, 0x7c, 0xd5, 0x6e, 0x9e, 0xd9, 0xb5, 0x77, 0x6d, 0xff, 0xb8, 0x0b, 0x7f, 0x23, + 0x5f, 0xc8, 0x27, 0x76, 0xe4, 0xd5, 0xef, 0x8d, 0x4e, 0x44, 0x9e, 0x8f, 0x65, 0xcb, 0x30, 0xc6, + 0x98, 0x2b, 0x64, 0xcf, 0x9d, 0xbe, 0x1a, 0xe8, 0x87, 0xee, 0xbb, 0xa4, 0xbf, 0xfa, 0x7d, 0xb2, + 0x56, 0x1b, 0xa3, 0x0c, 0x8a, 0x69, 0xf4, 0x05, 0x22, 0x6b, 0xc0, 0x1d, 0x82, 0x3c, 0x9a, 0x97, + 0xa8, 0x1d, 0x21, 0xf1, 0xdb, 0x4c, 0xe2, 0x58, 0x40, 0xe2, 0x26, 0x83, 0x66, 0x0b, 0x30, 0x74, + 0x14, 0x59, 0x7f, 0xcb, 0x64, 0x0d, 0xa2, 0xa0, 0x90, 0xab, 0x30, 0x42, 0x84, 0x54, 0xf7, 0x1d, + 0xd7, 0x6e, 0x92, 0xa2, 0x77, 0xb8, 0x98, 0xbf, 0xfb, 0x3e, 0x4d, 0x94, 0x61, 0x0c, 0x2b, 0x78, + 0xa8, 0x6c, 0x16, 0xc8, 0x31, 0x43, 0x0d, 0x55, 0x1b, 0x11, 0x12, 0x6e, 0x32, 0x45, 0x3c, 0xfe, + 0xec, 0xfb, 0xe0, 0x38, 0xfe, 0x4c, 0x6a, 0x52, 0x50, 0x93, 0xe8, 0x5d, 0xa6, 0xf4, 0x77, 0x3e, + 0x44, 0x73, 0x71, 0xcc, 0x13, 0x10, 0xd0, 0x29, 0xe0, 0xc5, 0x5d, 0xe4, 0xba, 0xa8, 0xed, 0x54, + 0xcc, 0x46, 0x98, 0x7a, 0x81, 0xd7, 0xf4, 0xf4, 0x27, 0x5e, 0x17, 0xbd, 0x78, 0x95, 0x22, 0x73, + 0x8d, 0x46, 0x76, 0x1b, 0x4e, 0x84, 0x44, 0x45, 0x0c, 0x99, 0x9f, 0x64, 0x32, 0x8f, 0x77, 0x44, + 0x06, 0x16, 0xbb, 0x01, 0x7c, 0xdc, 0xf3, 0x65, 0x0c, 0x99, 0x7f, 0xc0, 0x64, 0xea, 0x0c, 0xcb, + 0x5d, 0x8a, 0x25, 0x5e, 0x83, 0xd1, 0xa7, 0x50, 0xfb, 0x86, 0xed, 0xb0, 0xad, 0x91, 0x18, 0xe2, + 0x3e, 0xc5, 0xc4, 0x8d, 0x30, 0x20, 0xd9, 0x2b, 0xc1, 0xb2, 0x2e, 0x41, 0x6a, 0xc7, 0xac, 0xa2, + 0x18, 0x22, 0x3e, 0xcd, 0x44, 0x1c, 0xc3, 0xfc, 0x18, 0x9a, 0x83, 0xc1, 0x5d, 0x9b, 0x2d, 0x4b, + 0xd1, 0xf0, 0xe7, 0x19, 0x7c, 0x80, 0x63, 0x98, 0x88, 0x96, 0xdd, 0xda, 0x6f, 0xe0, 0x35, 0x2b, + 0x5a, 0xc4, 0x67, 0xb8, 0x08, 0x8e, 0x61, 0x22, 0x8e, 0x60, 0xd6, 0x17, 0xb8, 0x08, 0x27, 0x60, + 0xcf, 0x47, 0x60, 0xc0, 0xb6, 0x1a, 0x07, 0xb6, 0x15, 0x47, 0x89, 0xcf, 0x32, 0x09, 0xc0, 0x20, + 0x58, 0xc0, 0x65, 0xe8, 0x8f, 0xeb, 0x88, 0xcf, 0xbf, 0xce, 0xd3, 0x83, 0x7b, 0xe0, 0x2a, 0x8c, + 0xf0, 0x02, 0x55, 0xb7, 0xad, 0x18, 0x22, 0xfe, 0x88, 0x89, 0x18, 0x0e, 0xc0, 0xd8, 0x34, 0x5c, + 0xe4, 0xb8, 0xbb, 0x28, 0x8e, 0x90, 0x2f, 0xf0, 0x69, 0x30, 0x08, 0x33, 0xe5, 0x0d, 0x64, 0x55, + 0xf7, 0xe2, 0x49, 0x78, 0x91, 0x9b, 0x92, 0x63, 0xb0, 0x88, 0x02, 0x0c, 0x35, 0xcd, 0xb6, 0xb3, + 0x67, 0x36, 0x62, 0xb9, 0xe3, 0x8b, 0x4c, 0xc6, 0xa0, 0x07, 0x62, 0x16, 0xd9, 0xb7, 0x8e, 0x22, + 0xe6, 0x4b, 0xdc, 0x22, 0x01, 0x18, 0x4b, 0x3d, 0xc7, 0x25, 0x1b, 0x50, 0x47, 0x91, 0xf6, 0x65, + 0x9e, 0x7a, 0x14, 0xbb, 0x16, 0x94, 0x78, 0x19, 0xfa, 0x9d, 0xfa, 0xb3, 0xb1, 0xc4, 0xfc, 0x31, + 0xf7, 0x34, 0x01, 0x60, 0xf0, 0x75, 0xb8, 0x33, 0x74, 0x99, 0x88, 0x21, 0xec, 0x4f, 0x98, 0xb0, + 0xf1, 0x90, 0xa5, 0x82, 0x95, 0x84, 0xa3, 0x8a, 0xfc, 0x53, 0x5e, 0x12, 0x90, 0x24, 0x6b, 0x03, + 0xbf, 0x28, 0x38, 0xe6, 0xce, 0xd1, 0xac, 0xf6, 0x67, 0xdc, 0x6a, 0x14, 0x2b, 0x58, 0x6d, 0x0b, + 0xc6, 0x99, 0xc4, 0xa3, 0xf9, 0xf5, 0x2b, 0xbc, 0xb0, 0x52, 0xf4, 0xb6, 0xe8, 0xdd, 0xff, 0x05, + 0x13, 0x9e, 0x39, 0x79, 0x47, 0xea, 0x54, 0x9a, 0x66, 0x2b, 0x86, 0xe4, 0xaf, 0x32, 0xc9, 0xbc, + 0xe2, 0x7b, 0x2d, 0xad, 0xb3, 0x66, 0xb6, 0xb0, 0xf0, 0xc7, 0x21, 0xcd, 0x85, 0xef, 0x5b, 0x6d, + 0x54, 0xb5, 0x77, 0xad, 0xfa, 0xb3, 0xa8, 0x16, 0x43, 0xf4, 0x9f, 0x4b, 0xae, 0xda, 0x0e, 0xc0, + 0xb1, 0xe4, 0x15, 0xd0, 0xbc, 0x5e, 0xa5, 0x52, 0x6f, 0xb6, 0xec, 0xb6, 0x1b, 0x21, 0xf1, 0x2f, + 0xb8, 0xa7, 0x3c, 0xdc, 0x0a, 0x81, 0x65, 0x4b, 0x30, 0x4c, 0xbe, 0xc6, 0x0d, 0xc9, 0xaf, 0x31, + 0x41, 0x43, 0x3e, 0x8a, 0x15, 0x8e, 0xaa, 0xdd, 0x6c, 0x99, 0xed, 0x38, 0xf5, 0xef, 0x2f, 0x79, + 0xe1, 0x60, 0x10, 0x56, 0x38, 0xdc, 0x83, 0x16, 0xc2, 0xab, 0x7d, 0x0c, 0x09, 0x5f, 0xe7, 0x85, + 0x83, 0x63, 0x98, 0x08, 0xde, 0x30, 0xc4, 0x10, 0xf1, 0x57, 0x5c, 0x04, 0xc7, 0x60, 0x11, 0xef, + 0xf5, 0x17, 0xda, 0x36, 0xda, 0xad, 0x3b, 0x6e, 0x9b, 0xf6, 0xc1, 0x87, 0x8b, 0xfa, 0xc6, 0xeb, + 0x62, 0x13, 0x66, 0x04, 0xa0, 0xd9, 0x6b, 0x30, 0x22, 0xb5, 0x18, 0x7a, 0xd4, 0x9d, 0x85, 0xf4, + 0xff, 0x7d, 0x83, 0x15, 0x23, 0xb1, 0xc3, 0xc8, 0xae, 0x62, 0xbf, 0x8b, 0x7d, 0x40, 0xb4, 0xb0, + 0x0f, 0xbd, 0xe1, 0xb9, 0x5e, 0x68, 0x03, 0xb2, 0x57, 0x60, 0x48, 0xe8, 0x01, 0xa2, 0x45, 0xfd, + 0x3f, 0x26, 0x6a, 0x30, 0xd8, 0x02, 0x64, 0x97, 0x21, 0x89, 0xd7, 0xf3, 0x68, 0xf8, 0xff, 0x67, + 0x70, 0xc2, 0x9e, 0x7d, 0x08, 0x52, 0x7c, 0x1d, 0x8f, 0x86, 0x7e, 0x98, 0x41, 0x3d, 0x08, 0x86, + 0xf3, 0x35, 0x3c, 0x1a, 0xfe, 0x2b, 0x1c, 0xce, 0x21, 0x18, 0x1e, 0xdf, 0x84, 0x2f, 0xfd, 0x5a, + 0x92, 0xd5, 0x61, 0x6e, 0xbb, 0xcb, 0x70, 0x8c, 0x2d, 0xde, 0xd1, 0xe8, 0x8f, 0xb2, 0x87, 0x73, + 0x44, 0xf6, 0x02, 0xf4, 0xc6, 0x34, 0xf8, 0xaf, 0x33, 0x28, 0xe5, 0xcf, 0x16, 0x60, 0x20, 0xb0, + 0x60, 0x47, 0xc3, 0x7f, 0x83, 0xc1, 0x83, 0x28, 0xac, 0x3a, 0x5b, 0xb0, 0xa3, 0x05, 0xfc, 0x26, + 0x57, 0x9d, 0x21, 0xb0, 0xd9, 0xf8, 0x5a, 0x1d, 0x8d, 0xfe, 0x2d, 0x6e, 0x75, 0x0e, 0xc9, 0x3e, + 0x02, 0xfd, 0x5e, 0xfd, 0x8d, 0xc6, 0xff, 0x36, 0xc3, 0xfb, 0x18, 0x6c, 0x81, 0x40, 0xfd, 0x8f, + 0x16, 0xf1, 0x3b, 0xdc, 0x02, 0x01, 0x14, 0x4e, 0x23, 0x79, 0x4d, 0x8f, 0x96, 0xf4, 0x31, 0x9e, + 0x46, 0xd2, 0x92, 0x8e, 0xbd, 0x49, 0xca, 0x60, 0xb4, 0x88, 0xdf, 0xe5, 0xde, 0x24, 0xfc, 0x58, + 0x0d, 0x79, 0x91, 0x8c, 0x96, 0xf1, 0xfb, 0x5c, 0x0d, 0x69, 0x8d, 0xcc, 0x6e, 0x80, 0xde, 0xb9, + 0x40, 0x46, 0xcb, 0xfb, 0x38, 0x93, 0x37, 0xda, 0xb1, 0x3e, 0x66, 0x1f, 0x83, 0xf1, 0xf0, 0xc5, + 0x31, 0x5a, 0xea, 0x27, 0xde, 0x90, 0x5e, 0x67, 0x82, 0x6b, 0x63, 0x76, 0xcb, 0xaf, 0xb2, 0xc1, + 0x85, 0x31, 0x5a, 0xec, 0x27, 0xdf, 0x10, 0x0b, 0x6d, 0x70, 0x5d, 0xcc, 0xe6, 0x00, 0xfc, 0x35, + 0x29, 0x5a, 0xd6, 0xa7, 0x98, 0xac, 0x00, 0x08, 0xa7, 0x06, 0x5b, 0x92, 0xa2, 0xf1, 0x9f, 0xe6, + 0xa9, 0xc1, 0x10, 0x38, 0x35, 0xf8, 0x6a, 0x14, 0x8d, 0x7e, 0x9e, 0xa7, 0x06, 0x87, 0x64, 0x2f, + 0x43, 0xca, 0xda, 0x6f, 0x34, 0x70, 0x6c, 0xe9, 0x87, 0x5f, 0x23, 0x4a, 0xff, 0xeb, 0x9b, 0x0c, + 0xcc, 0x01, 0xd9, 0x65, 0xe8, 0x45, 0xcd, 0x1b, 0xa8, 0x16, 0x85, 0xfc, 0xb7, 0x37, 0x79, 0x3d, + 0xc1, 0xdc, 0xd9, 0x47, 0x00, 0xe8, 0xcb, 0x34, 0x39, 0x25, 0x8a, 0xc0, 0xfe, 0xfb, 0x9b, 0xec, + 0x86, 0x82, 0x0f, 0xf1, 0x05, 0xd0, 0xfb, 0x0e, 0x87, 0x0b, 0x78, 0x5d, 0x14, 0x40, 0x5e, 0xc0, + 0x2f, 0xc1, 0xb1, 0x27, 0x1c, 0xdb, 0x72, 0xcd, 0xdd, 0x28, 0xf4, 0x7f, 0x30, 0x34, 0xe7, 0xc7, + 0x06, 0x6b, 0xda, 0x6d, 0xe4, 0x9a, 0xbb, 0x4e, 0x14, 0xf6, 0x3f, 0x19, 0xd6, 0x03, 0x60, 0x70, + 0xd5, 0x74, 0xdc, 0x38, 0xf3, 0xfe, 0x2f, 0x0e, 0xe6, 0x00, 0xac, 0x34, 0xfe, 0xfc, 0x24, 0x3a, + 0x88, 0xc2, 0xfe, 0x90, 0x2b, 0xcd, 0xf8, 0xb3, 0x0f, 0x41, 0x3f, 0xfe, 0x48, 0x6f, 0xed, 0x44, + 0x80, 0x7f, 0xc4, 0xc0, 0x3e, 0x02, 0x3f, 0xd9, 0x71, 0x6b, 0x6e, 0x3d, 0xda, 0xd8, 0xff, 0xcd, + 0x3c, 0xcd, 0xf9, 0xb3, 0x39, 0x18, 0x70, 0xdc, 0x5a, 0x6d, 0x9f, 0x75, 0x34, 0x11, 0xf0, 0x1f, + 0xbf, 0xe9, 0xbd, 0xe4, 0x7a, 0x98, 0xfc, 0xa9, 0xf0, 0xcd, 0x3a, 0xb8, 0x6a, 0x5f, 0xb5, 0xe9, + 0x36, 0x1d, 0x7c, 0xa7, 0x01, 0x33, 0x55, 0xbb, 0x79, 0xc3, 0x76, 0xce, 0xd0, 0x82, 0xe2, 0x95, + 0x93, 0x33, 0xee, 0x1e, 0xc2, 0xab, 0x08, 0xdb, 0x6c, 0x4b, 0xe2, 0xcf, 0x13, 0x47, 0xdb, 0xa1, + 0x23, 0x87, 0xaf, 0xe5, 0x3a, 0x56, 0xb2, 0x4c, 0xf6, 0xbf, 0xf5, 0x93, 0xd0, 0x47, 0xd4, 0x3e, + 0x4b, 0xce, 0x98, 0x94, 0x7c, 0xf2, 0xe6, 0x2b, 0x53, 0x3d, 0x06, 0x1b, 0xf3, 0xa8, 0x8b, 0x64, + 0x83, 0x32, 0x21, 0x50, 0x17, 0x3d, 0xea, 0x39, 0xba, 0x47, 0x29, 0x50, 0xcf, 0x79, 0xd4, 0x25, + 0xb2, 0x5b, 0xa9, 0x0a, 0xd4, 0x25, 0x8f, 0xba, 0x4c, 0x76, 0xe4, 0x87, 0x04, 0xea, 0xb2, 0x47, + 0x3d, 0x4f, 0xf6, 0xe1, 0x93, 0x02, 0xf5, 0xbc, 0x47, 0xbd, 0x40, 0xb6, 0xe0, 0x47, 0x05, 0xea, + 0x05, 0x8f, 0x7a, 0x91, 0x6c, 0xbd, 0xeb, 0x02, 0xf5, 0xa2, 0x47, 0xbd, 0x44, 0xee, 0x93, 0x1c, + 0x13, 0xa8, 0x97, 0xf4, 0x49, 0x38, 0x46, 0x67, 0xbe, 0x40, 0xce, 0x69, 0x47, 0x18, 0x99, 0x0f, + 0xfa, 0xf4, 0xb3, 0xe4, 0xee, 0x48, 0x9f, 0x48, 0x3f, 0xeb, 0xd3, 0x17, 0xc9, 0x2d, 0x6a, 0x4d, + 0xa4, 0x2f, 0xfa, 0xf4, 0x73, 0xe9, 0x21, 0x72, 0x7f, 0x46, 0xa0, 0x9f, 0xf3, 0xe9, 0x4b, 0xe9, + 0x61, 0x1c, 0xb9, 0x22, 0x7d, 0xc9, 0xa7, 0x2f, 0xa7, 0x47, 0xa6, 0x95, 0xd9, 0x41, 0x91, 0xbe, + 0x9c, 0xf9, 0x20, 0x71, 0xaf, 0xe5, 0xbb, 0x77, 0x5c, 0x74, 0xaf, 0xe7, 0xd8, 0x71, 0xd1, 0xb1, + 0x9e, 0x4b, 0xc7, 0x45, 0x97, 0x7a, 0xce, 0x1c, 0x17, 0x9d, 0xe9, 0xb9, 0x71, 0x5c, 0x74, 0xa3, + 0xe7, 0xc0, 0x71, 0xd1, 0x81, 0x9e, 0xeb, 0xc6, 0x45, 0xd7, 0x79, 0x4e, 0x1b, 0x17, 0x9d, 0xe6, + 0xb9, 0x6b, 0x5c, 0x74, 0x97, 0xe7, 0xa8, 0xb4, 0xe4, 0x28, 0xdf, 0x45, 0x69, 0xc9, 0x45, 0xbe, + 0x73, 0xd2, 0x92, 0x73, 0x7c, 0xb7, 0xa4, 0x25, 0xb7, 0xf8, 0x0e, 0x49, 0x4b, 0x0e, 0xf1, 0x5d, + 0x91, 0x96, 0x5c, 0xe1, 0x3b, 0x81, 0xe5, 0x98, 0x81, 0x5a, 0x21, 0x39, 0xa6, 0x1e, 0x9a, 0x63, + 0xea, 0xa1, 0x39, 0xa6, 0x1e, 0x9a, 0x63, 0xea, 0xa1, 0x39, 0xa6, 0x1e, 0x9a, 0x63, 0xea, 0xa1, + 0x39, 0xa6, 0x1e, 0x9a, 0x63, 0xea, 0xa1, 0x39, 0xa6, 0x1e, 0x9e, 0x63, 0x6a, 0x44, 0x8e, 0xa9, + 0x11, 0x39, 0xa6, 0x46, 0xe4, 0x98, 0x1a, 0x91, 0x63, 0x6a, 0x44, 0x8e, 0xa9, 0x5d, 0x73, 0xcc, + 0x77, 0xef, 0xb8, 0xe8, 0xde, 0xd0, 0x1c, 0x53, 0xbb, 0xe4, 0x98, 0xda, 0x25, 0xc7, 0xd4, 0x2e, + 0x39, 0xa6, 0x76, 0xc9, 0x31, 0xb5, 0x4b, 0x8e, 0xa9, 0x5d, 0x72, 0x4c, 0xed, 0x92, 0x63, 0x6a, + 0xb7, 0x1c, 0x53, 0xbb, 0xe6, 0x98, 0xda, 0x35, 0xc7, 0xd4, 0xae, 0x39, 0xa6, 0x76, 0xcd, 0x31, + 0xb5, 0x6b, 0x8e, 0xa9, 0xc1, 0x1c, 0xfb, 0x6b, 0x15, 0x74, 0x9a, 0x63, 0x1b, 0xe4, 0xa6, 0x0f, + 0x73, 0xc5, 0xa4, 0x94, 0x69, 0x7d, 0xd8, 0x75, 0x9a, 0xef, 0x92, 0x49, 0x29, 0xd7, 0x44, 0xfa, + 0xa2, 0x47, 0xe7, 0xd9, 0x26, 0xd2, 0xcf, 0x79, 0x74, 0x9e, 0x6f, 0x22, 0x7d, 0xc9, 0xa3, 0xf3, + 0x8c, 0x13, 0xe9, 0xcb, 0x1e, 0x9d, 0xe7, 0x9c, 0x48, 0x3f, 0xef, 0xd1, 0x79, 0xd6, 0x89, 0xf4, + 0x0b, 0x1e, 0x9d, 0xe7, 0x9d, 0x48, 0xbf, 0xe8, 0xd1, 0x79, 0xe6, 0x89, 0xf4, 0x4b, 0xfa, 0xb4, + 0x9c, 0x7b, 0x9c, 0xc1, 0x73, 0xed, 0xb4, 0x9c, 0x7d, 0x12, 0xc7, 0x59, 0x9f, 0x83, 0xe7, 0x9f, + 0xc4, 0xb1, 0xe8, 0x73, 0xf0, 0x0c, 0x94, 0x38, 0xce, 0x65, 0x3e, 0x42, 0xdc, 0x67, 0xc9, 0xee, + 0x9b, 0x90, 0xdc, 0x97, 0x08, 0xb8, 0x6e, 0x42, 0x72, 0x5d, 0x22, 0xe0, 0xb6, 0x09, 0xc9, 0x6d, + 0x89, 0x80, 0xcb, 0x26, 0x24, 0x97, 0x25, 0x02, 0xee, 0x9a, 0x90, 0xdc, 0x95, 0x08, 0xb8, 0x6a, + 0x42, 0x72, 0x55, 0x22, 0xe0, 0xa6, 0x09, 0xc9, 0x4d, 0x89, 0x80, 0x8b, 0x26, 0x24, 0x17, 0x25, + 0x02, 0xee, 0x99, 0x90, 0xdc, 0x93, 0x08, 0xb8, 0xe6, 0xa4, 0xec, 0x9a, 0x44, 0xd0, 0x2d, 0x27, + 0x65, 0xb7, 0x24, 0x82, 0x2e, 0x39, 0x29, 0xbb, 0x24, 0x11, 0x74, 0xc7, 0x49, 0xd9, 0x1d, 0x89, + 0xa0, 0x2b, 0x7e, 0x96, 0xe0, 0x1d, 0xe1, 0xa6, 0xdb, 0xde, 0xaf, 0xba, 0xb7, 0xd5, 0x11, 0x2e, + 0x08, 0xed, 0xc3, 0xc0, 0xa2, 0x3e, 0x4f, 0x1a, 0xd6, 0x60, 0xc7, 0x29, 0xad, 0x60, 0x0b, 0x42, + 0x63, 0x11, 0x40, 0x58, 0xe1, 0x88, 0xa5, 0xdb, 0xea, 0x0d, 0x17, 0x84, 0x36, 0x23, 0x5a, 0xbf, + 0x8b, 0xef, 0x78, 0xc7, 0xf6, 0x52, 0x82, 0x77, 0x6c, 0xcc, 0xfc, 0x47, 0xed, 0xd8, 0xe6, 0xa2, + 0x4d, 0xee, 0x19, 0x7b, 0x2e, 0xda, 0xd8, 0x1d, 0xab, 0x4e, 0xdc, 0x0e, 0x6e, 0x2e, 0xda, 0xb4, + 0x9e, 0x51, 0xdf, 0xde, 0x7e, 0x8b, 0x45, 0xb0, 0x81, 0x5a, 0x21, 0x11, 0x7c, 0xd4, 0x7e, 0x6b, + 0x41, 0x28, 0x25, 0x47, 0x8d, 0x60, 0xf5, 0xc8, 0x11, 0x7c, 0xd4, 0xce, 0x6b, 0x41, 0x28, 0x2f, + 0x47, 0x8e, 0xe0, 0x77, 0xa0, 0x1f, 0x62, 0x11, 0xec, 0x9b, 0xff, 0xa8, 0xfd, 0xd0, 0x5c, 0xb4, + 0xc9, 0x43, 0x23, 0x58, 0x3d, 0x42, 0x04, 0xc7, 0xe9, 0x8f, 0xe6, 0xa2, 0x4d, 0x1b, 0x1e, 0xc1, + 0xb7, 0xdd, 0xcd, 0x7c, 0x46, 0x81, 0xd1, 0x72, 0xbd, 0x56, 0x6a, 0xde, 0x40, 0xb5, 0x1a, 0xaa, + 0x31, 0x3b, 0x2e, 0x08, 0x95, 0xa0, 0x8b, 0xab, 0x5f, 0x7e, 0x65, 0xca, 0xb7, 0xf0, 0x32, 0xa4, + 0xa8, 0x4d, 0x17, 0x16, 0xd2, 0x37, 0x95, 0x88, 0x0a, 0xe7, 0xb1, 0xea, 0xa7, 0x38, 0xec, 0xec, + 0x42, 0xfa, 0x1f, 0x95, 0x40, 0x95, 0xf3, 0x86, 0x33, 0x1f, 0x23, 0x1a, 0x5a, 0xb7, 0xad, 0xe1, + 0x99, 0x58, 0x1a, 0x06, 0x74, 0xbb, 0xab, 0x43, 0xb7, 0x80, 0x56, 0xfb, 0x30, 0x52, 0xae, 0xd7, + 0xca, 0xe4, 0xef, 0x77, 0xe3, 0xa8, 0x44, 0x79, 0xa4, 0x7a, 0xb0, 0x20, 0x84, 0x65, 0x10, 0xe1, + 0x85, 0xb4, 0x58, 0x23, 0x32, 0x75, 0xfc, 0x58, 0x4b, 0x78, 0xec, 0x5c, 0xb7, 0xc7, 0xfa, 0x95, + 0xdd, 0x7b, 0xe0, 0x5c, 0xb7, 0x07, 0xfa, 0x39, 0xe4, 0x3d, 0xea, 0x19, 0xbe, 0x38, 0xd3, 0x2b, + 0x37, 0xfa, 0x49, 0x48, 0xac, 0xd0, 0xeb, 0xc0, 0x83, 0xf9, 0x41, 0xac, 0xd4, 0x77, 0x5f, 0x99, + 0x4a, 0x6e, 0xef, 0xd7, 0x6b, 0x46, 0x62, 0xa5, 0xa6, 0x5f, 0x83, 0xde, 0xf7, 0xb1, 0xbf, 0x82, + 0xc3, 0x0c, 0x4b, 0x8c, 0xe1, 0x81, 0xae, 0x7b, 0x44, 0xf8, 0xc1, 0x67, 0xe8, 0x66, 0xe2, 0xfc, + 0x76, 0xdd, 0x72, 0xcf, 0x2e, 0x5e, 0x34, 0xa8, 0x88, 0xcc, 0xff, 0x06, 0xa0, 0xcf, 0x2c, 0x9a, + 0xce, 0x9e, 0x5e, 0xe6, 0x92, 0xe9, 0xa3, 0x2f, 0x7e, 0xf7, 0x95, 0xa9, 0xa5, 0x38, 0x52, 0x1f, + 0xac, 0x99, 0xce, 0xde, 0x83, 0xee, 0x41, 0x0b, 0xcd, 0xe7, 0x0f, 0x5c, 0xe4, 0x70, 0xe9, 0x2d, + 0xbe, 0xea, 0xb1, 0x79, 0xa5, 0x03, 0xf3, 0x4a, 0x09, 0x73, 0xba, 0x22, 0xce, 0x69, 0xe1, 0xad, + 0xce, 0xe7, 0x19, 0xbe, 0x48, 0x48, 0x96, 0x54, 0xa3, 0x2c, 0xa9, 0xde, 0xae, 0x25, 0x5b, 0xbc, + 0x3e, 0x4a, 0x73, 0x55, 0x0f, 0x9b, 0xab, 0x7a, 0x3b, 0x73, 0xfd, 0x09, 0xcd, 0x56, 0x2f, 0x9f, + 0xb6, 0x2d, 0x7a, 0x15, 0xf1, 0x97, 0x6b, 0x2f, 0xe8, 0x6d, 0xed, 0x02, 0xb2, 0xc9, 0x9b, 0x2f, + 0x4c, 0x29, 0x99, 0xcf, 0x24, 0xf8, 0xcc, 0x69, 0x22, 0xbd, 0xb5, 0x99, 0xff, 0xb2, 0xf4, 0x54, + 0xef, 0x84, 0x85, 0x9e, 0x57, 0x60, 0xbc, 0xa3, 0x92, 0x53, 0x33, 0xbd, 0xbd, 0xe5, 0xdc, 0x3a, + 0x6a, 0x39, 0x67, 0x0a, 0x7e, 0x4d, 0x81, 0xe3, 0x52, 0x79, 0xa5, 0xea, 0x9d, 0x91, 0xd4, 0x3b, + 0xd1, 0xf9, 0x24, 0xc2, 0x18, 0xd0, 0x2e, 0xe8, 0x5e, 0x09, 0x10, 0x90, 0xec, 0xf9, 0x7d, 0x49, + 0xf2, 0xfb, 0x49, 0x0f, 0x10, 0x62, 0x2e, 0x1e, 0x01, 0x4c, 0x6d, 0x1b, 0x92, 0x5b, 0x6d, 0x84, + 0xf4, 0x49, 0x48, 0xac, 0xb7, 0x99, 0x86, 0xc3, 0x14, 0xbf, 0xde, 0xce, 0xb7, 0x4d, 0xab, 0xba, + 0x67, 0x24, 0xd6, 0xdb, 0xfa, 0x29, 0x50, 0x73, 0xec, 0x77, 0x06, 0x06, 0x16, 0x47, 0x28, 0x43, + 0xce, 0xaa, 0x31, 0x0e, 0x4c, 0xd3, 0x27, 0x21, 0xb9, 0x8a, 0xcc, 0x1d, 0xa6, 0x04, 0x50, 0x1e, + 0x3c, 0x62, 0x90, 0x71, 0xf6, 0xc0, 0xc7, 0x21, 0xc5, 0x05, 0xeb, 0x33, 0x18, 0xb1, 0xe3, 0xb2, + 0xc7, 0x32, 0x04, 0x56, 0x87, 0xad, 0x5c, 0x84, 0xaa, 0x9f, 0x86, 0x5e, 0xa3, 0xbe, 0xbb, 0xe7, + 0xb2, 0x87, 0x77, 0xb2, 0x51, 0x72, 0xe6, 0x3a, 0xf4, 0x7b, 0x1a, 0xbd, 0xcd, 0xa2, 0x8b, 0x74, + 0x6a, 0xfa, 0x44, 0x70, 0x3d, 0xe1, 0xfb, 0x96, 0x74, 0x48, 0x9f, 0x86, 0xd4, 0xa6, 0xdb, 0xf6, + 0x8b, 0x3e, 0xef, 0x48, 0xbd, 0xd1, 0xcc, 0x07, 0x15, 0x48, 0x15, 0x11, 0x6a, 0x11, 0x83, 0xdf, + 0x0b, 0xc9, 0xa2, 0xfd, 0xb4, 0xc5, 0x14, 0x1c, 0x65, 0x16, 0xc5, 0x64, 0x66, 0x53, 0x42, 0xd6, + 0xef, 0x0d, 0xda, 0x7d, 0xcc, 0xb3, 0x7b, 0x80, 0x8f, 0xd8, 0x3e, 0x23, 0xd8, 0x9e, 0x39, 0x10, + 0x33, 0x75, 0xd8, 0xff, 0x02, 0x0c, 0x04, 0x9e, 0xa2, 0xcf, 0x32, 0x35, 0x12, 0x32, 0x30, 0x68, + 0x2b, 0xcc, 0x91, 0x41, 0x30, 0x24, 0x3c, 0x18, 0x43, 0x03, 0x26, 0xee, 0x02, 0x25, 0x66, 0x9e, + 0x13, 0xcd, 0x1c, 0xce, 0xca, 0x4c, 0xbd, 0x40, 0x6d, 0x44, 0xcc, 0x3d, 0x43, 0x83, 0xb3, 0xbb, + 0x13, 0xf1, 0xe7, 0x4c, 0x2f, 0xa8, 0xe5, 0x7a, 0x23, 0xf3, 0x10, 0x00, 0x4d, 0xf9, 0x92, 0xb5, + 0xdf, 0x94, 0xb2, 0x6e, 0x98, 0x1b, 0x78, 0x6b, 0x0f, 0x6d, 0x21, 0x87, 0xb0, 0x88, 0xfd, 0x14, + 0x2e, 0x30, 0x40, 0x53, 0x8c, 0xe0, 0xef, 0x8f, 0xc4, 0x87, 0x76, 0x62, 0x98, 0x35, 0x4d, 0x59, + 0xaf, 0x23, 0x37, 0x67, 0xd9, 0xee, 0x1e, 0x6a, 0x4b, 0x88, 0x45, 0xfd, 0x9c, 0x90, 0xb0, 0xc3, + 0x8b, 0x77, 0x79, 0x88, 0xae, 0xa0, 0x73, 0x99, 0xaf, 0x10, 0x05, 0x71, 0x2b, 0xd0, 0x31, 0x41, + 0x35, 0xc6, 0x04, 0xf5, 0xf3, 0x42, 0xff, 0x76, 0x88, 0x9a, 0xd2, 0xab, 0xe5, 0x25, 0xe1, 0x3d, + 0xe7, 0x70, 0x65, 0xc5, 0x77, 0x4c, 0x6e, 0x53, 0xae, 0xf2, 0xfd, 0x91, 0x2a, 0x77, 0xe9, 0x6e, + 0x8f, 0x6a, 0x53, 0x35, 0xae, 0x4d, 0xbf, 0xe9, 0x75, 0x1c, 0xf4, 0x17, 0x1b, 0xc8, 0x0f, 0x84, + 0xe8, 0x0f, 0x44, 0xfa, 0x3e, 0xab, 0x14, 0x3c, 0x55, 0x97, 0xe2, 0xba, 0x3f, 0x9b, 0xc8, 0xe7, + 0x3d, 0x75, 0x2f, 0x1c, 0x21, 0x04, 0xb2, 0x89, 0x42, 0xc1, 0x2b, 0xdb, 0xa9, 0x8f, 0xbc, 0x30, + 0xa5, 0xbc, 0xf8, 0xc2, 0x54, 0x4f, 0xe6, 0x8b, 0x0a, 0x8c, 0x32, 0xce, 0x40, 0xe0, 0x3e, 0x28, + 0x29, 0x7f, 0x07, 0xaf, 0x19, 0x61, 0x16, 0xf8, 0xb9, 0x05, 0xef, 0xb7, 0x15, 0x48, 0x77, 0xe8, + 0xca, 0xed, 0xbd, 0x10, 0x4b, 0xe5, 0xac, 0x52, 0xfa, 0xc5, 0xdb, 0xfc, 0x3a, 0xf4, 0x6e, 0xd5, + 0x9b, 0xa8, 0x8d, 0x57, 0x02, 0xfc, 0x81, 0xaa, 0xcc, 0x0f, 0x73, 0xe8, 0x10, 0xa7, 0x51, 0xe5, + 0x04, 0xda, 0xa2, 0x9e, 0x86, 0x64, 0xd1, 0x74, 0x4d, 0xa2, 0xc1, 0xa0, 0x57, 0x5f, 0x4d, 0xd7, + 0xcc, 0x9c, 0x83, 0xc1, 0xb5, 0x03, 0x72, 0x5f, 0xa6, 0x46, 0xee, 0x82, 0x88, 0xdd, 0x1f, 0xef, + 0x57, 0xcf, 0xce, 0xf5, 0xa6, 0x6a, 0xda, 0x4d, 0x25, 0x9b, 0x24, 0xfa, 0x3c, 0x05, 0xc3, 0xeb, + 0x58, 0x6d, 0x82, 0x13, 0x60, 0xf4, 0xe9, 0xaa, 0x37, 0x79, 0xa9, 0x29, 0x53, 0xfd, 0xa6, 0x6c, + 0x1a, 0x94, 0x35, 0xb1, 0x75, 0x0a, 0xea, 0x61, 0x28, 0x6b, 0x73, 0xc9, 0xd4, 0xb0, 0x36, 0x3a, + 0x97, 0x4c, 0x81, 0x36, 0xc4, 0x9e, 0xfb, 0xf7, 0x2a, 0x68, 0xb4, 0xd5, 0x29, 0xa2, 0x9d, 0xba, + 0x55, 0x77, 0x3b, 0xfb, 0x55, 0x4f, 0x63, 0xfd, 0x11, 0xe8, 0xc7, 0x26, 0xbd, 0xc2, 0x7e, 0x67, + 0x0b, 0x9b, 0xfe, 0x14, 0x6b, 0x51, 0x24, 0x11, 0x6c, 0x80, 0x84, 0x8e, 0x8f, 0xd1, 0xaf, 0x80, + 0x5a, 0x2e, 0xaf, 0xb1, 0xc5, 0x6d, 0xe9, 0x50, 0x28, 0xbb, 0x6e, 0xc3, 0xbe, 0xb1, 0x31, 0x67, + 0xd7, 0xc0, 0x02, 0xf4, 0x25, 0x48, 0x94, 0xd7, 0x58, 0xc3, 0x3b, 0x13, 0x47, 0x8c, 0x91, 0x28, + 0xaf, 0x4d, 0xfc, 0x8d, 0x02, 0x43, 0xc2, 0xa8, 0x9e, 0x81, 0x41, 0x3a, 0x10, 0x98, 0x6e, 0x9f, + 0x21, 0x8c, 0x71, 0x9d, 0x13, 0xb7, 0xa9, 0xf3, 0x44, 0x0e, 0x46, 0xa4, 0x71, 0x7d, 0x1e, 0xf4, + 0xe0, 0x10, 0x53, 0x82, 0xfe, 0x46, 0x51, 0x08, 0x25, 0x73, 0x37, 0x80, 0x6f, 0x57, 0xef, 0xa7, + 0x75, 0xca, 0xa5, 0xcd, 0xad, 0x52, 0x51, 0x53, 0x32, 0x5f, 0x57, 0x60, 0x80, 0xb5, 0xad, 0x55, + 0xbb, 0x85, 0xf4, 0x3c, 0x28, 0x39, 0x16, 0x0f, 0x6f, 0x4d, 0x6f, 0x25, 0xa7, 0x9f, 0x01, 0x25, + 0x1f, 0xdf, 0xd5, 0x4a, 0x5e, 0x5f, 0x04, 0xa5, 0xc0, 0x1c, 0x1c, 0xcf, 0x33, 0x4a, 0x21, 0xf3, + 0x23, 0x15, 0xc6, 0x82, 0x6d, 0x34, 0xaf, 0x27, 0xa7, 0xc4, 0xf7, 0xa6, 0x6c, 0xff, 0xd9, 0xc5, + 0x73, 0x4b, 0xf3, 0xf8, 0x1f, 0x2f, 0x24, 0x4f, 0x89, 0xaf, 0x50, 0x9d, 0x2c, 0x1d, 0xd7, 0x44, + 0xb2, 0xc9, 0x00, 0xb5, 0xe3, 0x9a, 0x88, 0x40, 0xed, 0xb8, 0x26, 0x22, 0x50, 0x3b, 0xae, 0x89, + 0x08, 0xd4, 0x8e, 0xa3, 0x00, 0x81, 0xda, 0x71, 0x4d, 0x44, 0xa0, 0x76, 0x5c, 0x13, 0x11, 0xa8, + 0x9d, 0xd7, 0x44, 0x18, 0xb9, 0xeb, 0x35, 0x11, 0x91, 0xde, 0x79, 0x4d, 0x44, 0xa4, 0x77, 0x5e, + 0x13, 0xc9, 0x26, 0xdd, 0xf6, 0x3e, 0xea, 0x7e, 0xe8, 0x20, 0xe2, 0x0f, 0x7b, 0x07, 0xf4, 0x0b, + 0xf0, 0x3a, 0x8c, 0xd0, 0xfd, 0x88, 0x82, 0x6d, 0xb9, 0x66, 0xdd, 0x42, 0x6d, 0xfd, 0xdd, 0x30, + 0x48, 0x87, 0xe8, 0x5b, 0x4e, 0xd8, 0x5b, 0x20, 0xa5, 0xb3, 0x72, 0x2b, 0x70, 0x67, 0x7e, 0x96, + 0x84, 0x71, 0x3a, 0x50, 0x36, 0x9b, 0x48, 0xb8, 0x64, 0x74, 0x5a, 0x3a, 0x52, 0x1a, 0xc6, 0xf0, + 0x5b, 0xaf, 0x4c, 0xd1, 0xd1, 0x9c, 0x17, 0x4c, 0xa7, 0xa5, 0xc3, 0x25, 0x91, 0xcf, 0x5f, 0x7f, + 0x4e, 0x4b, 0x17, 0x8f, 0x44, 0x3e, 0x6f, 0xb9, 0xf1, 0xf8, 0xf8, 0x15, 0x24, 0x91, 0xaf, 0xe8, + 0x45, 0xd9, 0x69, 0xe9, 0x32, 0x92, 0xc8, 0x57, 0xf2, 0xe2, 0xed, 0xb4, 0x74, 0xf4, 0x24, 0xf2, + 0x5d, 0xf1, 0x22, 0xef, 0xb4, 0x74, 0x08, 0x25, 0xf2, 0x5d, 0xf5, 0x62, 0xf0, 0xb4, 0x74, 0x55, + 0x49, 0xe4, 0x7b, 0xd4, 0x8b, 0xc6, 0xd3, 0xd2, 0xa5, 0x25, 0x91, 0x6f, 0xc5, 0x8b, 0xcb, 0x59, + 0xf9, 0xfa, 0x92, 0xc8, 0x78, 0xcd, 0x8f, 0xd0, 0x59, 0xf9, 0x22, 0x93, 0xc8, 0xf9, 0x1e, 0x3f, + 0x56, 0x67, 0xe5, 0x2b, 0x4d, 0x22, 0xe7, 0xaa, 0x1f, 0xb5, 0xb3, 0xf2, 0x51, 0x99, 0xc8, 0xb9, + 0xe6, 0xc7, 0xef, 0xac, 0x7c, 0x68, 0x26, 0x72, 0x96, 0xfd, 0x48, 0x9e, 0x95, 0x8f, 0xcf, 0x44, + 0xce, 0x75, 0x7f, 0x0f, 0xfd, 0x5b, 0x52, 0xf8, 0x05, 0x2e, 0x41, 0x65, 0xa4, 0xf0, 0x83, 0x90, + 0xd0, 0xcb, 0x48, 0xa1, 0x07, 0x21, 0x61, 0x97, 0x91, 0xc2, 0x0e, 0x42, 0x42, 0x2e, 0x23, 0x85, + 0x1c, 0x84, 0x84, 0x5b, 0x46, 0x0a, 0x37, 0x08, 0x09, 0xb5, 0x8c, 0x14, 0x6a, 0x10, 0x12, 0x66, + 0x19, 0x29, 0xcc, 0x20, 0x24, 0xc4, 0x32, 0x52, 0x88, 0x41, 0x48, 0x78, 0x65, 0xa4, 0xf0, 0x82, + 0x90, 0xd0, 0x9a, 0x91, 0x43, 0x0b, 0xc2, 0xc2, 0x6a, 0x46, 0x0e, 0x2b, 0x08, 0x0b, 0xa9, 0x7b, + 0xe4, 0x90, 0xea, 0xbf, 0xf5, 0xca, 0x54, 0x2f, 0x1e, 0x0a, 0x44, 0xd3, 0x8c, 0x1c, 0x4d, 0x10, + 0x16, 0x49, 0x33, 0x72, 0x24, 0x41, 0x58, 0x14, 0xcd, 0xc8, 0x51, 0x04, 0x61, 0x11, 0xf4, 0x92, + 0x1c, 0x41, 0xfe, 0x15, 0x9f, 0x8c, 0x74, 0xa2, 0x18, 0x15, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0x63, + 0x44, 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, + 0x31, 0x22, 0x48, 0x8d, 0x13, 0x41, 0x6a, 0xac, 0x08, 0x52, 0xbb, 0x45, 0xd0, 0x8c, 0x7c, 0xe1, + 0x01, 0xc2, 0x0a, 0xd2, 0x8c, 0x7c, 0xf2, 0x19, 0x1d, 0x42, 0x6a, 0xac, 0x10, 0x52, 0xbb, 0x85, + 0xd0, 0xb7, 0x54, 0x18, 0x13, 0x42, 0x88, 0x1d, 0x0f, 0xbd, 0x5d, 0x15, 0xe8, 0x7c, 0x8c, 0xfb, + 0x15, 0x61, 0x31, 0x75, 0x3e, 0xc6, 0x19, 0xf5, 0x61, 0x71, 0xd6, 0x59, 0x85, 0x4a, 0x31, 0xaa, + 0xd0, 0x15, 0x2f, 0x86, 0xce, 0xc7, 0xb8, 0x77, 0xd1, 0x19, 0x7b, 0x17, 0x0f, 0x2b, 0x02, 0x8f, + 0xc6, 0x2a, 0x02, 0x2b, 0xb1, 0x8a, 0xc0, 0x35, 0xdf, 0x83, 0x1f, 0x4e, 0xc0, 0x71, 0xdf, 0x83, + 0xf4, 0x13, 0xf9, 0x3d, 0xa4, 0x4c, 0xe0, 0x84, 0x4a, 0xe7, 0xa7, 0x36, 0x01, 0x37, 0x26, 0x56, + 0x6a, 0xfa, 0x86, 0x78, 0x56, 0x95, 0x3d, 0xea, 0xf9, 0x4d, 0xc0, 0xe3, 0x6c, 0x2f, 0x74, 0x06, + 0xd4, 0x95, 0x9a, 0x43, 0xaa, 0x45, 0xd8, 0x63, 0x0b, 0x06, 0x26, 0xeb, 0x06, 0xf4, 0x11, 0x76, + 0x87, 0xb8, 0xf7, 0x76, 0x1e, 0x5c, 0x34, 0x98, 0xa4, 0xcc, 0x4b, 0x0a, 0x4c, 0x0b, 0xa1, 0xfc, + 0xf6, 0x9c, 0x18, 0x5c, 0x8e, 0x75, 0x62, 0x20, 0x24, 0x88, 0x7f, 0x7a, 0x70, 0x5f, 0xe7, 0x41, + 0x75, 0x30, 0x4b, 0xe4, 0x93, 0x84, 0xff, 0x03, 0xc3, 0xfe, 0x0c, 0xc8, 0x2b, 0xdb, 0x72, 0xf4, + 0x66, 0x66, 0x58, 0x6a, 0x2e, 0x4b, 0x9b, 0x68, 0x87, 0xc2, 0xbc, 0x6c, 0xcd, 0x64, 0x61, 0xa4, + 0x2c, 0xfe, 0xe1, 0x4e, 0xd4, 0x5e, 0x44, 0x0a, 0xb7, 0xe6, 0x37, 0x3f, 0x3b, 0xd5, 0x93, 0x79, + 0x00, 0x06, 0x83, 0x7f, 0x9b, 0x23, 0x01, 0xfb, 0x39, 0x30, 0x9b, 0x7c, 0x19, 0x73, 0xff, 0x9e, + 0x02, 0x77, 0x04, 0xd9, 0x1f, 0xab, 0xbb, 0x7b, 0x2b, 0x16, 0xee, 0xe9, 0x1f, 0x82, 0x14, 0x62, + 0x8e, 0x63, 0x3f, 0x6d, 0xc2, 0x5e, 0x23, 0x43, 0xd9, 0xe7, 0xc9, 0xbf, 0x86, 0x07, 0x91, 0x36, + 0x41, 0xf8, 0x63, 0x17, 0x27, 0xee, 0x85, 0x5e, 0x2a, 0x5f, 0xd4, 0x6b, 0x48, 0xd2, 0xeb, 0xf3, + 0x21, 0x7a, 0x91, 0x38, 0xd2, 0xaf, 0x09, 0x7a, 0x05, 0xde, 0x56, 0x43, 0xd9, 0xe7, 0x79, 0xf0, + 0xe5, 0x53, 0xb8, 0xff, 0x23, 0x11, 0x15, 0xad, 0xe4, 0x2c, 0xa4, 0x4a, 0x32, 0x4f, 0xb8, 0x9e, + 0x45, 0x48, 0x96, 0xed, 0x1a, 0xf9, 0xd1, 0x15, 0xf2, 0xe3, 0xb8, 0xcc, 0xc8, 0xec, 0x97, 0x72, + 0x4f, 0x43, 0xaa, 0xb0, 0x57, 0x6f, 0xd4, 0xda, 0xc8, 0x62, 0x47, 0xf6, 0x6c, 0x07, 0x1d, 0x63, + 0x0c, 0x8f, 0x96, 0x29, 0xc0, 0x68, 0xd9, 0xb6, 0xf2, 0x07, 0x6e, 0xb0, 0x6e, 0xcc, 0x4b, 0x29, + 0xc2, 0x8e, 0x7c, 0xc8, 0x5f, 0x7b, 0x60, 0x86, 0x7c, 0xef, 0x77, 0x5f, 0x99, 0x52, 0xb6, 0xbc, + 0xed, 0xf3, 0x35, 0x38, 0xc1, 0xd2, 0xa7, 0x43, 0xd4, 0x62, 0x94, 0xa8, 0x7e, 0x76, 0x4c, 0x1d, + 0x10, 0xb7, 0x82, 0xc5, 0x59, 0xa1, 0xe2, 0xde, 0x9a, 0x66, 0xb8, 0x29, 0x3a, 0x54, 0x33, 0xf5, + 0x48, 0x9a, 0x85, 0x8a, 0x9b, 0x8f, 0x12, 0x27, 0x69, 0x76, 0x0f, 0xf4, 0x7b, 0xb4, 0x40, 0x34, + 0x04, 0x33, 0x65, 0x71, 0x2e, 0x03, 0x03, 0x81, 0x84, 0xd5, 0x7b, 0x41, 0xc9, 0x69, 0x3d, 0xf8, + 0xbf, 0xbc, 0xa6, 0xe0, 0xff, 0x0a, 0x5a, 0x62, 0xee, 0x5e, 0x18, 0x91, 0xb6, 0x2f, 0x31, 0xa5, + 0xa8, 0x01, 0xfe, 0xaf, 0xa4, 0x0d, 0x4c, 0x24, 0x3f, 0xf2, 0x87, 0x93, 0x3d, 0x73, 0x97, 0x41, + 0xef, 0xdc, 0xe8, 0xd4, 0xfb, 0x20, 0x91, 0xc3, 0x22, 0x4f, 0x40, 0x22, 0x9f, 0xd7, 0x94, 0x89, + 0x91, 0x5f, 0xfd, 0xf4, 0xf4, 0x40, 0x9e, 0xfc, 0xe1, 0xf1, 0x75, 0xe4, 0xe6, 0xf3, 0x0c, 0xfc, + 0x30, 0xdc, 0x11, 0xba, 0x51, 0x8a, 0xf1, 0x85, 0x02, 0xc5, 0x17, 0x8b, 0x1d, 0xf8, 0x62, 0x91, + 0xe0, 0x95, 0x2c, 0x3f, 0x70, 0xce, 0xe9, 0x21, 0x9b, 0x8c, 0xe9, 0x5a, 0xe0, 0x80, 0x3b, 0x97, + 0x7d, 0x98, 0xf1, 0xe6, 0x43, 0x79, 0x51, 0xc4, 0x81, 0x75, 0x3e, 0x5b, 0x60, 0xf8, 0x42, 0x28, + 0x7e, 0x47, 0x3a, 0x55, 0x15, 0x57, 0x08, 0x26, 0xa4, 0xe0, 0x29, 0x5c, 0x0c, 0x15, 0xb2, 0x17, + 0xb8, 0xeb, 0x5e, 0xf4, 0x14, 0x2e, 0x85, 0xf2, 0xd6, 0x23, 0xee, 0x7c, 0x95, 0xb2, 0x67, 0xd8, + 0x22, 0x9f, 0x3b, 0xab, 0xdf, 0xc1, 0x73, 0x54, 0xa8, 0xc0, 0xcc, 0x40, 0x9c, 0x2b, 0x5b, 0x60, + 0x80, 0x7c, 0x57, 0x40, 0x77, 0x2b, 0x71, 0x64, 0xf6, 0x51, 0x26, 0xa4, 0xd0, 0x55, 0x48, 0x84, + 0xa9, 0x38, 0x3c, 0xbf, 0x75, 0xf3, 0xd5, 0xc9, 0x9e, 0x97, 0x5f, 0x9d, 0xec, 0xf9, 0xa7, 0x57, + 0x27, 0x7b, 0xbe, 0xf7, 0xea, 0xa4, 0xf2, 0x83, 0x57, 0x27, 0x95, 0x1f, 0xbe, 0x3a, 0xa9, 0xfc, + 0xf4, 0xd5, 0x49, 0xe5, 0xb9, 0x5b, 0x93, 0xca, 0x8b, 0xb7, 0x26, 0x95, 0xaf, 0xdc, 0x9a, 0x54, + 0xbe, 0x71, 0x6b, 0x52, 0x79, 0xe9, 0xd6, 0xa4, 0x72, 0xf3, 0xd6, 0x64, 0xcf, 0xcb, 0xb7, 0x26, + 0x7b, 0xbe, 0x77, 0x6b, 0x52, 0xf9, 0xc1, 0xad, 0xc9, 0x9e, 0x1f, 0xde, 0x9a, 0x54, 0x7e, 0x7a, + 0x6b, 0x52, 0x79, 0xee, 0xb5, 0xc9, 0x9e, 0x17, 0x5e, 0x9b, 0xec, 0x79, 0xf1, 0xb5, 0x49, 0xe5, + 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x5f, 0x70, 0x1f, 0xb0, 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/combos/unsafeunmarshaler/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/combos/unsafeunmarshaler/thetest.pb.go index 8eb80a3ac..7e3b9a08e 100644 --- a/vendor/github.com/gogo/protobuf/test/combos/unsafeunmarshaler/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/combos/unsafeunmarshaler/thetest.pb.go @@ -6970,407 +6970,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6395 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x70, 0x24, 0x57, - 0x75, 0xbf, 0x7a, 0x7a, 0xa4, 0x1d, 0x9d, 0xd1, 0xa3, 0xd5, 0xbb, 0x96, 0xc7, 0xf2, 0x7a, 0xa4, - 0x1d, 0xaf, 0xd7, 0xb2, 0xb0, 0xb5, 0x5a, 0xad, 0xf6, 0x35, 0x8b, 0xed, 0x9a, 0xd7, 0xca, 0xda, - 0xff, 0xea, 0x41, 0x4b, 0x02, 0x1b, 0xfe, 0x55, 0x53, 0xbd, 0x33, 0x57, 0xd2, 0xd8, 0x33, 0xdd, - 0x93, 0xe9, 0x1e, 0xdb, 0xf2, 0x87, 0x94, 0x81, 0x84, 0x40, 0xa8, 0x3c, 0x49, 0x2a, 0x3c, 0x8d, - 0x21, 0x45, 0x30, 0xe4, 0x05, 0x09, 0x21, 0x14, 0x95, 0x0a, 0xfe, 0x42, 0xb2, 0xf9, 0x92, 0x32, - 0xc9, 0x97, 0x14, 0x95, 0x72, 0xe1, 0x85, 0xaa, 0x90, 0xc4, 0x49, 0x20, 0xb8, 0x0a, 0xaa, 0xcc, - 0x87, 0xd4, 0x7d, 0x75, 0xf7, 0xbd, 0xd3, 0xa3, 0x6e, 0x79, 0x6d, 0xe0, 0xcb, 0xee, 0xcc, 0x3d, - 0xe7, 0x77, 0xfa, 0xdc, 0xf3, 0xba, 0xa7, 0xef, 0xbd, 0x1a, 0x78, 0xef, 0x12, 0xcc, 0xec, 0xda, - 0xf6, 0x6e, 0x13, 0x9d, 0x6e, 0x77, 0x6c, 0xd7, 0xbe, 0xde, 0xdd, 0x39, 0x5d, 0x47, 0x4e, 0xad, - 0xd3, 0x68, 0xbb, 0x76, 0x67, 0x9e, 0x8c, 0xe9, 0xe3, 0x94, 0x63, 0x9e, 0x73, 0xe4, 0x56, 0x61, - 0xe2, 0x4a, 0xa3, 0x89, 0xca, 0x1e, 0xe3, 0x26, 0x72, 0xf5, 0x8b, 0x90, 0xdc, 0x69, 0x34, 0x51, - 0x46, 0x99, 0x51, 0x67, 0xd3, 0x8b, 0x27, 0xe7, 0x25, 0xd0, 0xbc, 0x88, 0xd8, 0xc0, 0xc3, 0x06, - 0x41, 0xe4, 0xbe, 0x97, 0x84, 0xa3, 0x21, 0x54, 0x5d, 0x87, 0xa4, 0x65, 0xb6, 0xb0, 0x44, 0x65, - 0x76, 0xd8, 0x20, 0x9f, 0xf5, 0x0c, 0x1c, 0x69, 0x9b, 0xb5, 0x27, 0xcc, 0x5d, 0x94, 0x49, 0x90, - 0x61, 0xfe, 0x55, 0xcf, 0x02, 0xd4, 0x51, 0x1b, 0x59, 0x75, 0x64, 0xd5, 0xf6, 0x33, 0xea, 0x8c, - 0x3a, 0x3b, 0x6c, 0x04, 0x46, 0xf4, 0xb7, 0xc1, 0x44, 0xbb, 0x7b, 0xbd, 0xd9, 0xa8, 0x55, 0x03, - 0x6c, 0x30, 0xa3, 0xce, 0x0e, 0x1a, 0x1a, 0x25, 0x94, 0x7d, 0xe6, 0x7b, 0x61, 0xfc, 0x29, 0x64, - 0x3e, 0x11, 0x64, 0x4d, 0x13, 0xd6, 0x31, 0x3c, 0x1c, 0x60, 0x2c, 0xc1, 0x48, 0x0b, 0x39, 0x8e, - 0xb9, 0x8b, 0xaa, 0xee, 0x7e, 0x1b, 0x65, 0x92, 0x64, 0xf6, 0x33, 0x3d, 0xb3, 0x97, 0x67, 0x9e, - 0x66, 0xa8, 0xad, 0xfd, 0x36, 0xd2, 0x0b, 0x30, 0x8c, 0xac, 0x6e, 0x8b, 0x4a, 0x18, 0xec, 0x63, - 0xbf, 0x8a, 0xd5, 0x6d, 0xc9, 0x52, 0x52, 0x18, 0xc6, 0x44, 0x1c, 0x71, 0x50, 0xe7, 0xc9, 0x46, - 0x0d, 0x65, 0x86, 0x88, 0x80, 0x7b, 0x7b, 0x04, 0x6c, 0x52, 0xba, 0x2c, 0x83, 0xe3, 0xf4, 0x12, - 0x0c, 0xa3, 0xa7, 0x5d, 0x64, 0x39, 0x0d, 0xdb, 0xca, 0x1c, 0x21, 0x42, 0xee, 0x09, 0xf1, 0x22, - 0x6a, 0xd6, 0x65, 0x11, 0x3e, 0x4e, 0x3f, 0x0f, 0x47, 0xec, 0xb6, 0xdb, 0xb0, 0x2d, 0x27, 0x93, - 0x9a, 0x51, 0x66, 0xd3, 0x8b, 0xc7, 0x43, 0x03, 0x61, 0x9d, 0xf2, 0x18, 0x9c, 0x59, 0x5f, 0x01, - 0xcd, 0xb1, 0xbb, 0x9d, 0x1a, 0xaa, 0xd6, 0xec, 0x3a, 0xaa, 0x36, 0xac, 0x1d, 0x3b, 0x33, 0x4c, - 0x04, 0x4c, 0xf7, 0x4e, 0x84, 0x30, 0x96, 0xec, 0x3a, 0x5a, 0xb1, 0x76, 0x6c, 0x63, 0xcc, 0x11, - 0xbe, 0xeb, 0x93, 0x30, 0xe4, 0xec, 0x5b, 0xae, 0xf9, 0x74, 0x66, 0x84, 0x44, 0x08, 0xfb, 0x96, - 0xfb, 0xf1, 0x20, 0x8c, 0xc7, 0x09, 0xb1, 0xcb, 0x30, 0xb8, 0x83, 0x67, 0x99, 0x49, 0x1c, 0xc6, - 0x06, 0x14, 0x23, 0x1a, 0x71, 0xe8, 0x0d, 0x1a, 0xb1, 0x00, 0x69, 0x0b, 0x39, 0x2e, 0xaa, 0xd3, - 0x88, 0x50, 0x63, 0xc6, 0x14, 0x50, 0x50, 0x6f, 0x48, 0x25, 0xdf, 0x50, 0x48, 0x3d, 0x0a, 0xe3, - 0x9e, 0x4a, 0xd5, 0x8e, 0x69, 0xed, 0xf2, 0xd8, 0x3c, 0x1d, 0xa5, 0xc9, 0x7c, 0x85, 0xe3, 0x0c, - 0x0c, 0x33, 0xc6, 0x90, 0xf0, 0x5d, 0x2f, 0x03, 0xd8, 0x16, 0xb2, 0x77, 0xaa, 0x75, 0x54, 0x6b, - 0x66, 0x52, 0x7d, 0xac, 0xb4, 0x8e, 0x59, 0x7a, 0xac, 0x64, 0xd3, 0xd1, 0x5a, 0x53, 0xbf, 0xe4, - 0x87, 0xda, 0x91, 0x3e, 0x91, 0xb2, 0x4a, 0x93, 0xac, 0x27, 0xda, 0xb6, 0x61, 0xac, 0x83, 0x70, - 0xdc, 0xa3, 0x3a, 0x9b, 0xd9, 0x30, 0x51, 0x62, 0x3e, 0x72, 0x66, 0x06, 0x83, 0xd1, 0x89, 0x8d, - 0x76, 0x82, 0x5f, 0xf5, 0xbb, 0xc1, 0x1b, 0xa8, 0x92, 0xb0, 0x02, 0x52, 0x85, 0x46, 0xf8, 0xe0, - 0x9a, 0xd9, 0x42, 0x53, 0x17, 0x61, 0x4c, 0x34, 0x8f, 0x7e, 0x0c, 0x06, 0x1d, 0xd7, 0xec, 0xb8, - 0x24, 0x0a, 0x07, 0x0d, 0xfa, 0x45, 0xd7, 0x40, 0x45, 0x56, 0x9d, 0x54, 0xb9, 0x41, 0x03, 0x7f, - 0x9c, 0xba, 0x00, 0xa3, 0xc2, 0xe3, 0xe3, 0x02, 0x73, 0x1f, 0x1d, 0x82, 0x63, 0x61, 0x31, 0x17, - 0x1a, 0xfe, 0x93, 0x30, 0x64, 0x75, 0x5b, 0xd7, 0x51, 0x27, 0xa3, 0x12, 0x09, 0xec, 0x9b, 0x5e, - 0x80, 0xc1, 0xa6, 0x79, 0x1d, 0x35, 0x33, 0xc9, 0x19, 0x65, 0x76, 0x6c, 0xf1, 0x6d, 0xb1, 0xa2, - 0x7a, 0xfe, 0x1a, 0x86, 0x18, 0x14, 0xa9, 0x3f, 0x04, 0x49, 0x56, 0xe2, 0xb0, 0x84, 0xb9, 0x78, - 0x12, 0x70, 0x2c, 0x1a, 0x04, 0xa7, 0xdf, 0x09, 0xc3, 0xf8, 0x7f, 0x6a, 0xdb, 0x21, 0xa2, 0x73, - 0x0a, 0x0f, 0x60, 0xbb, 0xea, 0x53, 0x90, 0x22, 0x61, 0x56, 0x47, 0x7c, 0x69, 0xf0, 0xbe, 0x63, - 0xc7, 0xd4, 0xd1, 0x8e, 0xd9, 0x6d, 0xba, 0xd5, 0x27, 0xcd, 0x66, 0x17, 0x91, 0x80, 0x19, 0x36, - 0x46, 0xd8, 0xe0, 0x3b, 0xf1, 0x98, 0x3e, 0x0d, 0x69, 0x1a, 0x95, 0x0d, 0xab, 0x8e, 0x9e, 0x26, - 0xd5, 0x67, 0xd0, 0xa0, 0x81, 0xba, 0x82, 0x47, 0xf0, 0xe3, 0x1f, 0x77, 0x6c, 0x8b, 0xbb, 0x96, - 0x3c, 0x02, 0x0f, 0x90, 0xc7, 0x5f, 0x90, 0x0b, 0xdf, 0x5d, 0xe1, 0xd3, 0x93, 0x63, 0x31, 0xf7, - 0xd5, 0x04, 0x24, 0x49, 0xbe, 0x8d, 0x43, 0x7a, 0xeb, 0xb1, 0x8d, 0x4a, 0xb5, 0xbc, 0xbe, 0x5d, - 0xbc, 0x56, 0xd1, 0x14, 0x7d, 0x0c, 0x80, 0x0c, 0x5c, 0xb9, 0xb6, 0x5e, 0xd8, 0xd2, 0x12, 0xde, - 0xf7, 0x95, 0xb5, 0xad, 0xf3, 0x4b, 0x9a, 0xea, 0x01, 0xb6, 0xe9, 0x40, 0x32, 0xc8, 0x70, 0x76, - 0x51, 0x1b, 0xd4, 0x35, 0x18, 0xa1, 0x02, 0x56, 0x1e, 0xad, 0x94, 0xcf, 0x2f, 0x69, 0x43, 0xe2, - 0xc8, 0xd9, 0x45, 0xed, 0x88, 0x3e, 0x0a, 0xc3, 0x64, 0xa4, 0xb8, 0xbe, 0x7e, 0x4d, 0x4b, 0x79, - 0x32, 0x37, 0xb7, 0x8c, 0x95, 0xb5, 0x65, 0x6d, 0xd8, 0x93, 0xb9, 0x6c, 0xac, 0x6f, 0x6f, 0x68, - 0xe0, 0x49, 0x58, 0xad, 0x6c, 0x6e, 0x16, 0x96, 0x2b, 0x5a, 0xda, 0xe3, 0x28, 0x3e, 0xb6, 0x55, - 0xd9, 0xd4, 0x46, 0x04, 0xb5, 0xce, 0x2e, 0x6a, 0xa3, 0xde, 0x23, 0x2a, 0x6b, 0xdb, 0xab, 0xda, - 0x98, 0x3e, 0x01, 0xa3, 0xf4, 0x11, 0x5c, 0x89, 0x71, 0x69, 0xe8, 0xfc, 0x92, 0xa6, 0xf9, 0x8a, - 0x50, 0x29, 0x13, 0xc2, 0xc0, 0xf9, 0x25, 0x4d, 0xcf, 0x95, 0x60, 0x90, 0x44, 0x97, 0xae, 0xc3, - 0xd8, 0xb5, 0x42, 0xb1, 0x72, 0xad, 0xba, 0xbe, 0xb1, 0xb5, 0xb2, 0xbe, 0x56, 0xb8, 0xa6, 0x29, - 0xfe, 0x98, 0x51, 0x79, 0xc7, 0xf6, 0x8a, 0x51, 0x29, 0x6b, 0x89, 0xe0, 0xd8, 0x46, 0xa5, 0xb0, - 0x55, 0x29, 0x6b, 0x6a, 0xae, 0x06, 0xc7, 0xc2, 0xea, 0x4c, 0x68, 0x66, 0x04, 0x5c, 0x9c, 0xe8, - 0xe3, 0x62, 0x22, 0xab, 0xc7, 0xc5, 0x9f, 0x55, 0xe0, 0x68, 0x48, 0xad, 0x0d, 0x7d, 0xc8, 0xc3, - 0x30, 0x48, 0x43, 0x94, 0xae, 0x3e, 0xf7, 0x85, 0x16, 0x6d, 0x12, 0xb0, 0x3d, 0x2b, 0x10, 0xc1, - 0x05, 0x57, 0x60, 0xb5, 0xcf, 0x0a, 0x8c, 0x45, 0xf4, 0x28, 0xf9, 0x7e, 0x05, 0x32, 0xfd, 0x64, - 0x47, 0x14, 0x8a, 0x84, 0x50, 0x28, 0x2e, 0xcb, 0x0a, 0x9c, 0xe8, 0x3f, 0x87, 0x1e, 0x2d, 0x3e, - 0xaf, 0xc0, 0x64, 0x78, 0xa3, 0x12, 0xaa, 0xc3, 0x43, 0x30, 0xd4, 0x42, 0xee, 0x9e, 0xcd, 0x17, - 0xeb, 0x53, 0x21, 0x4b, 0x00, 0x26, 0xcb, 0xb6, 0x62, 0xa8, 0xe0, 0x1a, 0xa2, 0xf6, 0xeb, 0x36, - 0xa8, 0x36, 0x3d, 0x9a, 0x7e, 0x28, 0x01, 0xb7, 0x85, 0x0a, 0x0f, 0x55, 0xf4, 0x2e, 0x80, 0x86, - 0xd5, 0xee, 0xba, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x98, 0x8c, 0x90, 0xdc, 0xc7, 0xb5, 0xa7, 0xeb, - 0x7a, 0x74, 0x95, 0xd0, 0x81, 0x0e, 0x11, 0x86, 0x8b, 0xbe, 0xa2, 0x49, 0xa2, 0x68, 0xb6, 0xcf, - 0x4c, 0x7b, 0xd6, 0xba, 0x05, 0xd0, 0x6a, 0xcd, 0x06, 0xb2, 0xdc, 0xaa, 0xe3, 0x76, 0x90, 0xd9, - 0x6a, 0x58, 0xbb, 0xa4, 0x00, 0xa7, 0xf2, 0x83, 0x3b, 0x66, 0xd3, 0x41, 0xc6, 0x38, 0x25, 0x6f, - 0x72, 0x2a, 0x46, 0x90, 0x55, 0xa6, 0x13, 0x40, 0x0c, 0x09, 0x08, 0x4a, 0xf6, 0x10, 0xb9, 0x0f, - 0x1f, 0x81, 0x74, 0xa0, 0xad, 0xd3, 0x4f, 0xc0, 0xc8, 0xe3, 0xe6, 0x93, 0x66, 0x95, 0xb7, 0xea, - 0xd4, 0x12, 0x69, 0x3c, 0xb6, 0xc1, 0xda, 0xf5, 0x05, 0x38, 0x46, 0x58, 0xec, 0xae, 0x8b, 0x3a, - 0xd5, 0x5a, 0xd3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, 0x31, 0x6d, 0x1d, 0x93, 0x4a, 0x9c, - 0xa2, 0x9f, 0x83, 0xa3, 0x04, 0xd1, 0xea, 0x36, 0xdd, 0x46, 0xbb, 0x89, 0xaa, 0xf8, 0xe5, 0xc1, - 0x21, 0x85, 0xd8, 0xd3, 0x6c, 0x02, 0x73, 0xac, 0x32, 0x06, 0xac, 0x91, 0xa3, 0x2f, 0xc3, 0x5d, - 0x04, 0xb6, 0x8b, 0x2c, 0xd4, 0x31, 0x5d, 0x54, 0x45, 0xbf, 0xd4, 0x35, 0x9b, 0x4e, 0xd5, 0xb4, - 0xea, 0xd5, 0x3d, 0xd3, 0xd9, 0xcb, 0x1c, 0x0b, 0x0a, 0xb8, 0x03, 0xf3, 0x2e, 0x33, 0xd6, 0x0a, - 0xe1, 0x2c, 0x58, 0xf5, 0x47, 0x4c, 0x67, 0x4f, 0xcf, 0xc3, 0x24, 0x11, 0xe4, 0xb8, 0x9d, 0x86, - 0xb5, 0x5b, 0xad, 0xed, 0xa1, 0xda, 0x13, 0xd5, 0xae, 0xbb, 0x73, 0x31, 0x73, 0x67, 0x50, 0x02, - 0x51, 0x72, 0x93, 0xf0, 0x94, 0x30, 0xcb, 0xb6, 0xbb, 0x73, 0x51, 0xdf, 0x84, 0x11, 0xec, 0x8f, - 0x56, 0xe3, 0x19, 0x54, 0xdd, 0xb1, 0x3b, 0x64, 0x71, 0x19, 0x0b, 0x49, 0xee, 0x80, 0x11, 0xe7, - 0xd7, 0x19, 0x60, 0xd5, 0xae, 0xa3, 0xfc, 0xe0, 0xe6, 0x46, 0xa5, 0x52, 0x36, 0xd2, 0x5c, 0xca, - 0x15, 0xbb, 0x83, 0x63, 0x6a, 0xd7, 0xf6, 0x6c, 0x9c, 0xa6, 0x31, 0xb5, 0x6b, 0x73, 0x0b, 0x9f, - 0x83, 0xa3, 0xb5, 0x1a, 0x9d, 0x76, 0xa3, 0x56, 0x65, 0x5d, 0xbe, 0x93, 0xd1, 0x04, 0x7b, 0xd5, - 0x6a, 0xcb, 0x94, 0x81, 0x85, 0xb9, 0xa3, 0x5f, 0x82, 0xdb, 0x7c, 0x7b, 0x05, 0x81, 0x13, 0x3d, - 0xb3, 0x94, 0xa1, 0xe7, 0xe0, 0x68, 0x7b, 0xbf, 0x17, 0xa8, 0x0b, 0x4f, 0x6c, 0xef, 0xcb, 0xb0, - 0x7b, 0xc8, 0x9b, 0x5b, 0x07, 0xd5, 0x4c, 0x17, 0xd5, 0x33, 0xb7, 0x07, 0xb9, 0x03, 0x04, 0xfd, - 0x34, 0x68, 0xb5, 0x5a, 0x15, 0x59, 0xe6, 0xf5, 0x26, 0xaa, 0x9a, 0x1d, 0x64, 0x99, 0x4e, 0x66, - 0x3a, 0xc8, 0x3c, 0x56, 0xab, 0x55, 0x08, 0xb5, 0x40, 0x88, 0xfa, 0x1c, 0x4c, 0xd8, 0xd7, 0x1f, - 0xaf, 0xd1, 0xe0, 0xaa, 0xb6, 0x3b, 0x68, 0xa7, 0xf1, 0x74, 0xe6, 0x24, 0x31, 0xd3, 0x38, 0x26, - 0x90, 0xd0, 0xda, 0x20, 0xc3, 0xfa, 0x7d, 0xa0, 0xd5, 0x9c, 0x3d, 0xb3, 0xd3, 0x26, 0xab, 0xbb, - 0xd3, 0x36, 0x6b, 0x28, 0x73, 0x0f, 0x65, 0xa5, 0xe3, 0x6b, 0x7c, 0x58, 0x7f, 0x14, 0x8e, 0x75, - 0xad, 0x86, 0xe5, 0xa2, 0x4e, 0xbb, 0x83, 0x70, 0x93, 0x4e, 0x33, 0x2d, 0xf3, 0x6f, 0x47, 0xfa, - 0xb4, 0xd9, 0xdb, 0x41, 0x6e, 0xea, 0x5d, 0xe3, 0x68, 0xb7, 0x77, 0x30, 0x97, 0x87, 0x91, 0xa0, - 0xd3, 0xf5, 0x61, 0xa0, 0x6e, 0xd7, 0x14, 0xbc, 0x86, 0x96, 0xd6, 0xcb, 0x78, 0xf5, 0x7b, 0x77, - 0x45, 0x4b, 0xe0, 0x55, 0xf8, 0xda, 0xca, 0x56, 0xa5, 0x6a, 0x6c, 0xaf, 0x6d, 0xad, 0xac, 0x56, - 0x34, 0x75, 0x6e, 0x38, 0xf5, 0xfd, 0x23, 0xda, 0xb3, 0xcf, 0x3e, 0xfb, 0x6c, 0x22, 0xf7, 0xcd, - 0x04, 0x8c, 0x89, 0x9d, 0xaf, 0xfe, 0x76, 0xb8, 0x9d, 0xbf, 0xa6, 0x3a, 0xc8, 0xad, 0x3e, 0xd5, - 0xe8, 0x90, 0x38, 0x6c, 0x99, 0xb4, 0x77, 0xf4, 0x4c, 0x78, 0x8c, 0x71, 0x6d, 0x22, 0xf7, 0x5d, - 0x8d, 0x0e, 0x8e, 0xb2, 0x96, 0xe9, 0xea, 0xd7, 0x60, 0xda, 0xb2, 0xab, 0x8e, 0x6b, 0x5a, 0x75, - 0xb3, 0x53, 0xaf, 0xfa, 0x1b, 0x04, 0x55, 0xb3, 0x56, 0x43, 0x8e, 0x63, 0xd3, 0x25, 0xc0, 0x93, - 0x72, 0xdc, 0xb2, 0x37, 0x19, 0xb3, 0x5f, 0x1b, 0x0b, 0x8c, 0x55, 0x72, 0xb7, 0xda, 0xcf, 0xdd, - 0x77, 0xc2, 0x70, 0xcb, 0x6c, 0x57, 0x91, 0xe5, 0x76, 0xf6, 0x49, 0xbf, 0x96, 0x32, 0x52, 0x2d, - 0xb3, 0x5d, 0xc1, 0xdf, 0xdf, 0x3a, 0x1f, 0x04, 0xed, 0xf8, 0xaf, 0x2a, 0x8c, 0x04, 0x7b, 0x36, - 0xdc, 0x02, 0xd7, 0x48, 0x7d, 0x56, 0x48, 0xfa, 0xde, 0x7d, 0x60, 0x87, 0x37, 0x5f, 0xc2, 0x85, - 0x3b, 0x3f, 0x44, 0x3b, 0x29, 0x83, 0x22, 0xf1, 0xa2, 0x89, 0x13, 0x16, 0xd1, 0xfe, 0x3c, 0x65, - 0xb0, 0x6f, 0xfa, 0x32, 0x0c, 0x3d, 0xee, 0x10, 0xd9, 0x43, 0x44, 0xf6, 0xc9, 0x83, 0x65, 0x5f, - 0xdd, 0x24, 0xc2, 0x87, 0xaf, 0x6e, 0x56, 0xd7, 0xd6, 0x8d, 0xd5, 0xc2, 0x35, 0x83, 0xc1, 0xf5, - 0x3b, 0x20, 0xd9, 0x34, 0x9f, 0xd9, 0x17, 0x4b, 0x3c, 0x19, 0x8a, 0x6b, 0xf8, 0x3b, 0x20, 0xf9, - 0x14, 0x32, 0x9f, 0x10, 0x0b, 0x2b, 0x19, 0x7a, 0x0b, 0x43, 0xff, 0x34, 0x0c, 0x12, 0x7b, 0xe9, - 0x00, 0xcc, 0x62, 0xda, 0x80, 0x9e, 0x82, 0x64, 0x69, 0xdd, 0xc0, 0xe1, 0xaf, 0xc1, 0x08, 0x1d, - 0xad, 0x6e, 0xac, 0x54, 0x4a, 0x15, 0x2d, 0x91, 0x3b, 0x07, 0x43, 0xd4, 0x08, 0x38, 0x35, 0x3c, - 0x33, 0x68, 0x03, 0xec, 0x2b, 0x93, 0xa1, 0x70, 0xea, 0xf6, 0x6a, 0xb1, 0x62, 0x68, 0x89, 0xa0, - 0x7b, 0x1d, 0x18, 0x09, 0xb6, 0x6b, 0x3f, 0x9b, 0x98, 0xfa, 0xba, 0x02, 0xe9, 0x40, 0xfb, 0x85, - 0x17, 0x7e, 0xb3, 0xd9, 0xb4, 0x9f, 0xaa, 0x9a, 0xcd, 0x86, 0xe9, 0xb0, 0xa0, 0x00, 0x32, 0x54, - 0xc0, 0x23, 0x71, 0x9d, 0xf6, 0x33, 0x51, 0xfe, 0x39, 0x05, 0x34, 0xb9, 0x75, 0x93, 0x14, 0x54, - 0x7e, 0xae, 0x0a, 0x7e, 0x52, 0x81, 0x31, 0xb1, 0x5f, 0x93, 0xd4, 0x3b, 0xf1, 0x73, 0x55, 0xef, - 0x13, 0x0a, 0x8c, 0x0a, 0x5d, 0xda, 0x2f, 0x94, 0x76, 0x1f, 0x57, 0xe1, 0x68, 0x08, 0x4e, 0x2f, - 0xb0, 0x76, 0x96, 0x76, 0xd8, 0x0f, 0xc4, 0x79, 0xd6, 0x3c, 0x5e, 0x2d, 0x37, 0xcc, 0x8e, 0xcb, - 0xba, 0xdf, 0xfb, 0x40, 0x6b, 0xd4, 0x91, 0xe5, 0x36, 0x76, 0x1a, 0xa8, 0xc3, 0x5e, 0xc1, 0x69, - 0x8f, 0x3b, 0xee, 0x8f, 0xd3, 0xb7, 0xf0, 0xfb, 0x41, 0x6f, 0xdb, 0x4e, 0xc3, 0x6d, 0x3c, 0x89, - 0xaa, 0x0d, 0x8b, 0xbf, 0xaf, 0xe3, 0x9e, 0x37, 0x69, 0x68, 0x9c, 0xb2, 0x62, 0xb9, 0x1e, 0xb7, - 0x85, 0x76, 0x4d, 0x89, 0x1b, 0xd7, 0x3e, 0xd5, 0xd0, 0x38, 0xc5, 0xe3, 0x3e, 0x01, 0x23, 0x75, - 0xbb, 0x8b, 0xdb, 0x07, 0xca, 0x87, 0x4b, 0xad, 0x62, 0xa4, 0xe9, 0x98, 0xc7, 0xc2, 0xfa, 0x3b, - 0x7f, 0xa3, 0x60, 0xc4, 0x48, 0xd3, 0x31, 0xca, 0x72, 0x2f, 0x8c, 0x9b, 0xbb, 0xbb, 0x1d, 0x2c, - 0x9c, 0x0b, 0xa2, 0x4d, 0xeb, 0x98, 0x37, 0x4c, 0x18, 0xa7, 0xae, 0x42, 0x8a, 0xdb, 0x01, 0xaf, - 0x66, 0xd8, 0x12, 0xd5, 0x36, 0xdd, 0xae, 0x49, 0xcc, 0x0e, 0x1b, 0x29, 0x8b, 0x13, 0x4f, 0xc0, - 0x48, 0xc3, 0xa9, 0xfa, 0xfb, 0x86, 0x89, 0x99, 0xc4, 0x6c, 0xca, 0x48, 0x37, 0x1c, 0x6f, 0xa3, - 0x28, 0xf7, 0xf9, 0x04, 0x8c, 0x89, 0xfb, 0x9e, 0x7a, 0x19, 0x52, 0x4d, 0xbb, 0x66, 0x92, 0x40, - 0xa0, 0x9b, 0xee, 0xb3, 0x11, 0x5b, 0xa5, 0xf3, 0xd7, 0x18, 0xbf, 0xe1, 0x21, 0xa7, 0xfe, 0x51, - 0x81, 0x14, 0x1f, 0xd6, 0x27, 0x21, 0xd9, 0x36, 0xdd, 0x3d, 0x22, 0x6e, 0xb0, 0x98, 0xd0, 0x14, - 0x83, 0x7c, 0xc7, 0xe3, 0x4e, 0xdb, 0xb4, 0x48, 0x08, 0xb0, 0x71, 0xfc, 0x1d, 0xfb, 0xb5, 0x89, - 0xcc, 0x3a, 0x69, 0x87, 0xed, 0x56, 0x0b, 0x59, 0xae, 0xc3, 0xfd, 0xca, 0xc6, 0x4b, 0x6c, 0x58, - 0x7f, 0x1b, 0x4c, 0xb8, 0x1d, 0xb3, 0xd1, 0x14, 0x78, 0x93, 0x84, 0x57, 0xe3, 0x04, 0x8f, 0x39, - 0x0f, 0x77, 0x70, 0xb9, 0x75, 0xe4, 0x9a, 0xb5, 0x3d, 0x54, 0xf7, 0x41, 0x43, 0x64, 0x53, 0xed, - 0x76, 0xc6, 0x50, 0x66, 0x74, 0x8e, 0xcd, 0x7d, 0x4b, 0x81, 0x09, 0xde, 0xc0, 0xd7, 0x3d, 0x63, - 0xad, 0x02, 0x98, 0x96, 0x65, 0xbb, 0x41, 0x73, 0xf5, 0x86, 0x72, 0x0f, 0x6e, 0xbe, 0xe0, 0x81, - 0x8c, 0x80, 0x80, 0xa9, 0x16, 0x80, 0x4f, 0xe9, 0x6b, 0xb6, 0x69, 0x48, 0xb3, 0x4d, 0x6d, 0x72, - 0x32, 0x42, 0xdf, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0x5f, 0x3f, 0x06, 0x83, 0xd7, 0xd1, 0x6e, 0xc3, - 0x62, 0x5b, 0x6d, 0xf4, 0x0b, 0xdf, 0xc0, 0x4b, 0x7a, 0x1b, 0x78, 0xc5, 0xf7, 0xc0, 0xd1, 0x9a, - 0xdd, 0x92, 0xd5, 0x2d, 0x6a, 0xd2, 0x9b, 0xa7, 0xf3, 0x88, 0xf2, 0x6e, 0xf0, 0xbb, 0xb3, 0xe7, - 0x15, 0xe5, 0xb3, 0x09, 0x75, 0x79, 0xa3, 0xf8, 0xc5, 0xc4, 0xd4, 0x32, 0x85, 0x6e, 0xf0, 0x99, - 0x1a, 0x68, 0xa7, 0x89, 0x6a, 0x58, 0x7b, 0xf8, 0xd1, 0x29, 0x78, 0x60, 0xb7, 0xe1, 0xee, 0x75, - 0xaf, 0xcf, 0xd7, 0xec, 0xd6, 0xe9, 0x5d, 0x7b, 0xd7, 0xf6, 0x0f, 0x83, 0xf0, 0x37, 0xf2, 0x85, - 0x7c, 0x62, 0x07, 0x42, 0xc3, 0xde, 0xe8, 0x54, 0xe4, 0xe9, 0x51, 0x7e, 0x0d, 0x8e, 0x32, 0xe6, - 0x2a, 0xd9, 0x91, 0xa6, 0x7d, 0xb8, 0x7e, 0xe0, 0xae, 0x44, 0xe6, 0xcb, 0xdf, 0x23, 0x2b, 0x9d, - 0x31, 0xc1, 0xa0, 0x98, 0x46, 0x3b, 0xf5, 0xbc, 0x01, 0xb7, 0x09, 0xf2, 0x68, 0x6a, 0xa2, 0x4e, - 0x84, 0xc4, 0x6f, 0x32, 0x89, 0x47, 0x03, 0x12, 0x37, 0x19, 0x34, 0x5f, 0x82, 0xd1, 0xc3, 0xc8, - 0xfa, 0x3b, 0x26, 0x6b, 0x04, 0x05, 0x85, 0x2c, 0xc3, 0x38, 0x11, 0x52, 0xeb, 0x3a, 0xae, 0xdd, - 0x22, 0x75, 0xef, 0x60, 0x31, 0x7f, 0xff, 0x3d, 0x9a, 0x2b, 0x63, 0x18, 0x56, 0xf2, 0x50, 0xf9, - 0x3c, 0x90, 0x4d, 0xf8, 0x3a, 0xaa, 0x35, 0x23, 0x24, 0xdc, 0x60, 0x8a, 0x78, 0xfc, 0xf9, 0x77, - 0xc2, 0x31, 0xfc, 0x99, 0x94, 0xa5, 0xa0, 0x26, 0xd1, 0x7b, 0x30, 0x99, 0x6f, 0xbd, 0x9f, 0xa6, - 0xe3, 0x51, 0x4f, 0x40, 0x40, 0xa7, 0x80, 0x17, 0x77, 0x91, 0xeb, 0xa2, 0x8e, 0x53, 0x35, 0x9b, - 0x61, 0xea, 0x05, 0xde, 0x60, 0x33, 0x1f, 0x7b, 0x55, 0xf4, 0xe2, 0x32, 0x45, 0x16, 0x9a, 0xcd, - 0xfc, 0x36, 0xdc, 0x1e, 0x12, 0x15, 0x31, 0x64, 0x7e, 0x9c, 0xc9, 0x3c, 0xd6, 0x13, 0x19, 0x58, - 0xec, 0x06, 0xf0, 0x71, 0xcf, 0x97, 0x31, 0x64, 0x7e, 0x82, 0xc9, 0xd4, 0x19, 0x96, 0xbb, 0x14, - 0x4b, 0xbc, 0x0a, 0x13, 0x4f, 0xa2, 0xce, 0x75, 0xdb, 0x61, 0x1b, 0x07, 0x31, 0xc4, 0x7d, 0x92, - 0x89, 0x1b, 0x67, 0x40, 0xb2, 0x8d, 0x80, 0x65, 0x5d, 0x82, 0xd4, 0x8e, 0x59, 0x43, 0x31, 0x44, - 0x7c, 0x8a, 0x89, 0x38, 0x82, 0xf9, 0x31, 0xb4, 0x00, 0x23, 0xbb, 0x36, 0x5b, 0x99, 0xa2, 0xe1, - 0xcf, 0x31, 0x78, 0x9a, 0x63, 0x98, 0x88, 0xb6, 0xdd, 0xee, 0x36, 0xf1, 0xb2, 0x15, 0x2d, 0xe2, - 0xd3, 0x5c, 0x04, 0xc7, 0x30, 0x11, 0x87, 0x30, 0xeb, 0xf3, 0x5c, 0x84, 0x13, 0xb0, 0xe7, 0xc3, - 0x90, 0xb6, 0xad, 0xe6, 0xbe, 0x6d, 0xc5, 0x51, 0xe2, 0x33, 0x4c, 0x02, 0x30, 0x08, 0x16, 0x70, - 0x19, 0x86, 0xe3, 0x3a, 0xe2, 0x73, 0xaf, 0xf2, 0xf4, 0xe0, 0x1e, 0x58, 0x86, 0x71, 0x5e, 0xa0, - 0x1a, 0xb6, 0x15, 0x43, 0xc4, 0x1f, 0x31, 0x11, 0x63, 0x01, 0x18, 0x9b, 0x86, 0x8b, 0x1c, 0x77, - 0x17, 0xc5, 0x11, 0xf2, 0x79, 0x3e, 0x0d, 0x06, 0x61, 0xa6, 0xbc, 0x8e, 0xac, 0xda, 0x5e, 0x3c, - 0x09, 0x2f, 0x70, 0x53, 0x72, 0x0c, 0x16, 0x51, 0x82, 0xd1, 0x96, 0xd9, 0x71, 0xf6, 0xcc, 0x66, - 0x2c, 0x77, 0x7c, 0x81, 0xc9, 0x18, 0xf1, 0x40, 0xcc, 0x22, 0x5d, 0xeb, 0x30, 0x62, 0xbe, 0xc8, - 0x2d, 0x12, 0x80, 0xb1, 0xd4, 0x73, 0x5c, 0xb2, 0x37, 0x73, 0x18, 0x69, 0x7f, 0xcc, 0x53, 0x8f, - 0x62, 0x57, 0x83, 0x12, 0x2f, 0xc3, 0xb0, 0xd3, 0x78, 0x26, 0x96, 0x98, 0x3f, 0xe1, 0x9e, 0x26, - 0x00, 0x0c, 0x7e, 0x0c, 0xee, 0x08, 0x5d, 0x26, 0x62, 0x08, 0xfb, 0x53, 0x26, 0x6c, 0x32, 0x64, - 0xa9, 0x60, 0x25, 0xe1, 0xb0, 0x22, 0xff, 0x8c, 0x97, 0x04, 0x24, 0xc9, 0xda, 0xc0, 0x9d, 0xbd, - 0x63, 0xee, 0x1c, 0xce, 0x6a, 0x7f, 0xce, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0xb6, 0x60, 0x92, 0x49, - 0x3c, 0x9c, 0x5f, 0xbf, 0xc4, 0x0b, 0x2b, 0x45, 0x6f, 0x8b, 0xde, 0x7d, 0x0f, 0x4c, 0x79, 0xe6, - 0xe4, 0x4d, 0xa9, 0x53, 0x6d, 0x99, 0xed, 0x18, 0x92, 0xbf, 0xcc, 0x24, 0xf3, 0x8a, 0xef, 0x75, - 0xb5, 0xce, 0xaa, 0xd9, 0xc6, 0xc2, 0x1f, 0x85, 0x0c, 0x17, 0xde, 0xb5, 0x3a, 0xa8, 0x66, 0xef, - 0x5a, 0x8d, 0x67, 0x50, 0x3d, 0x86, 0xe8, 0xbf, 0x90, 0x5c, 0xb5, 0x1d, 0x80, 0x63, 0xc9, 0x2b, - 0xa0, 0x79, 0xbd, 0x4a, 0xb5, 0xd1, 0x6a, 0xdb, 0x1d, 0x37, 0x42, 0xe2, 0x5f, 0x72, 0x4f, 0x79, - 0xb8, 0x15, 0x02, 0xcb, 0x57, 0x60, 0x8c, 0x7c, 0x8d, 0x1b, 0x92, 0x5f, 0x61, 0x82, 0x46, 0x7d, - 0x14, 0x2b, 0x1c, 0x35, 0xbb, 0xd5, 0x36, 0x3b, 0x71, 0xea, 0xdf, 0x5f, 0xf1, 0xc2, 0xc1, 0x20, - 0xac, 0x70, 0xb8, 0xfb, 0x6d, 0x84, 0x57, 0xfb, 0x18, 0x12, 0xbe, 0xca, 0x0b, 0x07, 0xc7, 0x30, - 0x11, 0xbc, 0x61, 0x88, 0x21, 0xe2, 0xaf, 0xb9, 0x08, 0x8e, 0xc1, 0x22, 0xde, 0xe1, 0x2f, 0xb4, - 0x1d, 0xb4, 0xdb, 0x70, 0xdc, 0x0e, 0x6d, 0x85, 0x0f, 0x16, 0xf5, 0xb5, 0x57, 0xc5, 0x26, 0xcc, - 0x08, 0x40, 0xf3, 0x57, 0x61, 0x5c, 0x6a, 0x31, 0xf4, 0xa8, 0x13, 0xfd, 0xcc, 0x7b, 0x5f, 0x63, - 0xc5, 0x48, 0xec, 0x30, 0xf2, 0xd7, 0xb0, 0xdf, 0xc5, 0x3e, 0x20, 0x5a, 0xd8, 0xfb, 0x5f, 0xf3, - 0x5c, 0x2f, 0xb4, 0x01, 0xf9, 0x2b, 0x30, 0x2a, 0xf4, 0x00, 0xd1, 0xa2, 0x7e, 0x85, 0x89, 0x1a, - 0x09, 0xb6, 0x00, 0xf9, 0x73, 0x90, 0xc4, 0xeb, 0x79, 0x34, 0xfc, 0x57, 0x19, 0x9c, 0xb0, 0xe7, - 0x1f, 0x84, 0x14, 0x5f, 0xc7, 0xa3, 0xa1, 0x1f, 0x60, 0x50, 0x0f, 0x82, 0xe1, 0x7c, 0x0d, 0x8f, - 0x86, 0xff, 0x1a, 0x87, 0x73, 0x08, 0x86, 0xc7, 0x37, 0xe1, 0x8b, 0x1f, 0x4e, 0xb2, 0x3a, 0xcc, - 0x6d, 0x77, 0x19, 0x8e, 0xb0, 0xc5, 0x3b, 0x1a, 0xfd, 0x21, 0xf6, 0x70, 0x8e, 0xc8, 0x5f, 0x80, - 0xc1, 0x98, 0x06, 0xff, 0x0d, 0x06, 0xa5, 0xfc, 0xf9, 0x12, 0xa4, 0x03, 0x0b, 0x76, 0x34, 0xfc, - 0x37, 0x19, 0x3c, 0x88, 0xc2, 0xaa, 0xb3, 0x05, 0x3b, 0x5a, 0xc0, 0x6f, 0x71, 0xd5, 0x19, 0x02, - 0x9b, 0x8d, 0xaf, 0xd5, 0xd1, 0xe8, 0xdf, 0xe6, 0x56, 0xe7, 0x90, 0xfc, 0xc3, 0x30, 0xec, 0xd5, - 0xdf, 0x68, 0xfc, 0xef, 0x30, 0xbc, 0x8f, 0xc1, 0x16, 0x08, 0xd4, 0xff, 0x68, 0x11, 0xbf, 0xcb, - 0x2d, 0x10, 0x40, 0xe1, 0x34, 0x92, 0xd7, 0xf4, 0x68, 0x49, 0x1f, 0xe1, 0x69, 0x24, 0x2d, 0xe9, - 0xd8, 0x9b, 0xa4, 0x0c, 0x46, 0x8b, 0xf8, 0x3d, 0xee, 0x4d, 0xc2, 0x8f, 0xd5, 0x90, 0x17, 0xc9, - 0x68, 0x19, 0x7f, 0xc0, 0xd5, 0x90, 0xd6, 0xc8, 0xfc, 0x06, 0xe8, 0xbd, 0x0b, 0x64, 0xb4, 0xbc, - 0x8f, 0x32, 0x79, 0x13, 0x3d, 0xeb, 0x63, 0xfe, 0x5d, 0x30, 0x19, 0xbe, 0x38, 0x46, 0x4b, 0xfd, - 0xd8, 0x6b, 0xd2, 0xeb, 0x4c, 0x70, 0x6d, 0xcc, 0x6f, 0xf9, 0x55, 0x36, 0xb8, 0x30, 0x46, 0x8b, - 0xfd, 0xf8, 0x6b, 0x62, 0xa1, 0x0d, 0xae, 0x8b, 0xf9, 0x02, 0x80, 0xbf, 0x26, 0x45, 0xcb, 0xfa, - 0x24, 0x93, 0x15, 0x00, 0xe1, 0xd4, 0x60, 0x4b, 0x52, 0x34, 0xfe, 0x53, 0x3c, 0x35, 0x18, 0x02, - 0xa7, 0x06, 0x5f, 0x8d, 0xa2, 0xd1, 0xcf, 0xf1, 0xd4, 0xe0, 0x90, 0xfc, 0x65, 0x48, 0x59, 0xdd, - 0x66, 0x13, 0xc7, 0x96, 0x7e, 0xf0, 0x25, 0x9b, 0xcc, 0xbf, 0xbf, 0xce, 0xc0, 0x1c, 0x90, 0x3f, - 0x07, 0x83, 0xa8, 0x75, 0x1d, 0xd5, 0xa3, 0x90, 0xff, 0xf1, 0x3a, 0xaf, 0x27, 0x98, 0x3b, 0xff, - 0x30, 0x00, 0x7d, 0x99, 0x26, 0x67, 0x2c, 0x11, 0xd8, 0xff, 0x7c, 0x9d, 0x9d, 0xdf, 0xfb, 0x10, - 0x5f, 0x00, 0xbd, 0x0d, 0x70, 0xb0, 0x80, 0x57, 0x45, 0x01, 0xe4, 0x05, 0xfc, 0x12, 0x1c, 0x79, - 0xdc, 0xb1, 0x2d, 0xd7, 0xdc, 0x8d, 0x42, 0xff, 0x17, 0x43, 0x73, 0x7e, 0x6c, 0xb0, 0x96, 0xdd, - 0x41, 0xae, 0xb9, 0xeb, 0x44, 0x61, 0xff, 0x9b, 0x61, 0x3d, 0x00, 0x06, 0xd7, 0x4c, 0xc7, 0x8d, - 0x33, 0xef, 0xff, 0xe1, 0x60, 0x0e, 0xc0, 0x4a, 0xe3, 0xcf, 0x4f, 0xa0, 0xfd, 0x28, 0xec, 0x0f, - 0xb8, 0xd2, 0x8c, 0x3f, 0xff, 0x20, 0x0c, 0xe3, 0x8f, 0xf4, 0x4e, 0x4b, 0x04, 0xf8, 0x87, 0x0c, - 0xec, 0x23, 0xf0, 0x93, 0x1d, 0xb7, 0xee, 0x36, 0xa2, 0x8d, 0xfd, 0xbf, 0xcc, 0xd3, 0x9c, 0x3f, - 0x5f, 0x80, 0xb4, 0xe3, 0xd6, 0xeb, 0x5d, 0xd6, 0xd1, 0x44, 0xc0, 0x7f, 0xf4, 0xba, 0xf7, 0x92, - 0xeb, 0x61, 0x8a, 0x27, 0xc2, 0xf7, 0xeb, 0x60, 0xd9, 0x5e, 0xb6, 0xe9, 0x4e, 0x1d, 0xfc, 0x73, - 0x13, 0x4e, 0xd5, 0xec, 0xd6, 0x75, 0xdb, 0x39, 0x4d, 0x0b, 0x4a, 0xa0, 0x18, 0x9d, 0x76, 0xf7, - 0x10, 0x5e, 0x47, 0xd8, 0x76, 0x5b, 0x12, 0x7f, 0x9e, 0x3a, 0xdc, 0x1e, 0x1d, 0x39, 0xbc, 0x5c, - 0x6b, 0x60, 0x35, 0xd7, 0xc8, 0x26, 0xb8, 0x7e, 0x1c, 0x86, 0x88, 0xe2, 0x67, 0xc8, 0x19, 0x8d, - 0x52, 0x4c, 0xde, 0x78, 0x79, 0x7a, 0xc0, 0x60, 0x63, 0x1e, 0x75, 0x91, 0xec, 0x52, 0x26, 0x04, - 0xea, 0xa2, 0x47, 0x3d, 0x4b, 0x37, 0x2a, 0x05, 0xea, 0x59, 0x8f, 0xba, 0x44, 0xb6, 0x2c, 0x55, - 0x81, 0xba, 0xe4, 0x51, 0xcf, 0x91, 0x6d, 0xf9, 0x51, 0x81, 0x7a, 0xce, 0xa3, 0x9e, 0x27, 0x9b, - 0xf1, 0x49, 0x81, 0x7a, 0xde, 0xa3, 0x5e, 0x20, 0xfb, 0xf0, 0x13, 0x02, 0xf5, 0x82, 0x47, 0xbd, - 0x48, 0xf6, 0xdf, 0x75, 0x81, 0x7a, 0xd1, 0xa3, 0x5e, 0x22, 0x97, 0x2d, 0x8e, 0x08, 0xd4, 0x4b, - 0x7a, 0x16, 0x8e, 0xd0, 0x99, 0x2f, 0x90, 0x73, 0xce, 0x71, 0x46, 0xe6, 0x83, 0x3e, 0xfd, 0x0c, - 0xb9, 0x58, 0x31, 0x24, 0xd2, 0xcf, 0xf8, 0xf4, 0x45, 0x72, 0xcb, 0x58, 0x13, 0xe9, 0x8b, 0x3e, - 0xfd, 0x6c, 0x66, 0x14, 0xc7, 0x87, 0x48, 0x3f, 0xeb, 0xd3, 0x97, 0x32, 0x63, 0x38, 0x76, 0x45, - 0xfa, 0x92, 0x4f, 0x3f, 0x97, 0x19, 0x9f, 0x51, 0x66, 0x47, 0x44, 0xfa, 0xb9, 0xdc, 0xfb, 0x88, - 0x7b, 0x2d, 0xdf, 0xbd, 0x93, 0xa2, 0x7b, 0x3d, 0xc7, 0x4e, 0x8a, 0x8e, 0xf5, 0x5c, 0x3a, 0x29, - 0xba, 0xd4, 0x73, 0xe6, 0xa4, 0xe8, 0x4c, 0xcf, 0x8d, 0x93, 0xa2, 0x1b, 0x3d, 0x07, 0x4e, 0x8a, - 0x0e, 0xf4, 0x5c, 0x37, 0x29, 0xba, 0xce, 0x73, 0xda, 0xa4, 0xe8, 0x34, 0xcf, 0x5d, 0x93, 0xa2, - 0xbb, 0x3c, 0x47, 0x65, 0x24, 0x47, 0xf9, 0x2e, 0xca, 0x48, 0x2e, 0xf2, 0x9d, 0x93, 0x91, 0x9c, - 0xe3, 0xbb, 0x25, 0x23, 0xb9, 0xc5, 0x77, 0x48, 0x46, 0x72, 0x88, 0xef, 0x8a, 0x8c, 0xe4, 0x0a, - 0xdf, 0x09, 0x2c, 0xc7, 0x0c, 0xd4, 0x0e, 0xc9, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, - 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, - 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xe0, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, 0x35, - 0x22, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0xed, 0x9b, 0x63, 0xbe, 0x7b, 0x27, 0x45, - 0xf7, 0x86, 0xe6, 0x98, 0xda, 0x27, 0xc7, 0xd4, 0x3e, 0x39, 0xa6, 0xf6, 0xc9, 0x31, 0xb5, 0x4f, - 0x8e, 0xa9, 0x7d, 0x72, 0x4c, 0xed, 0x93, 0x63, 0x6a, 0x9f, 0x1c, 0x53, 0xfb, 0xe5, 0x98, 0xda, - 0x37, 0xc7, 0xd4, 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, - 0x0d, 0xe6, 0xd8, 0xdf, 0xa8, 0xa0, 0xd3, 0x1c, 0xdb, 0x20, 0x37, 0x65, 0x98, 0x2b, 0xb2, 0x52, - 0xa6, 0x0d, 0x61, 0xd7, 0x69, 0xbe, 0x4b, 0xb2, 0x52, 0xae, 0x89, 0xf4, 0x45, 0x8f, 0xce, 0xb3, - 0x4d, 0xa4, 0x9f, 0xf5, 0xe8, 0x3c, 0xdf, 0x44, 0xfa, 0x92, 0x47, 0xe7, 0x19, 0x27, 0xd2, 0xcf, - 0x79, 0x74, 0x9e, 0x73, 0x22, 0xfd, 0xbc, 0x47, 0xe7, 0x59, 0x27, 0xd2, 0x2f, 0x78, 0x74, 0x9e, - 0x77, 0x22, 0xfd, 0xa2, 0x47, 0xe7, 0x99, 0x27, 0xd2, 0x2f, 0xe9, 0x33, 0x72, 0xee, 0x71, 0x06, - 0xcf, 0xb5, 0x33, 0x72, 0xf6, 0x49, 0x1c, 0x67, 0x7c, 0x0e, 0x9e, 0x7f, 0x12, 0xc7, 0xa2, 0xcf, - 0xc1, 0x33, 0x50, 0xe2, 0x38, 0x9b, 0xfb, 0x20, 0x71, 0x9f, 0x25, 0xbb, 0x6f, 0x4a, 0x72, 0x5f, - 0x22, 0xe0, 0xba, 0x29, 0xc9, 0x75, 0x89, 0x80, 0xdb, 0xa6, 0x24, 0xb7, 0x25, 0x02, 0x2e, 0x9b, - 0x92, 0x5c, 0x96, 0x08, 0xb8, 0x6b, 0x4a, 0x72, 0x57, 0x22, 0xe0, 0xaa, 0x29, 0xc9, 0x55, 0x89, - 0x80, 0x9b, 0xa6, 0x24, 0x37, 0x25, 0x02, 0x2e, 0x9a, 0x92, 0x5c, 0x94, 0x08, 0xb8, 0x67, 0x4a, - 0x72, 0x4f, 0x22, 0xe0, 0x9a, 0xe3, 0xb2, 0x6b, 0x12, 0x41, 0xb7, 0x1c, 0x97, 0xdd, 0x92, 0x08, - 0xba, 0xe4, 0xb8, 0xec, 0x92, 0x44, 0xd0, 0x1d, 0xc7, 0x65, 0x77, 0x24, 0x82, 0xae, 0xf8, 0x69, - 0x82, 0x77, 0x84, 0x9b, 0x6e, 0xa7, 0x5b, 0x73, 0x6f, 0xa9, 0x23, 0x5c, 0x10, 0xda, 0x87, 0xf4, - 0xa2, 0x3e, 0x4f, 0x1a, 0xd6, 0x60, 0xc7, 0x29, 0xad, 0x60, 0x0b, 0x42, 0x63, 0x11, 0x40, 0x58, - 0xe1, 0x88, 0xa5, 0x5b, 0xea, 0x0d, 0x17, 0x84, 0x36, 0x23, 0x5a, 0xbf, 0x8b, 0x6f, 0x79, 0xc7, - 0xf6, 0x62, 0x82, 0x77, 0x6c, 0xcc, 0xfc, 0x87, 0xed, 0xd8, 0xe6, 0xa2, 0x4d, 0xee, 0x19, 0x7b, - 0x2e, 0xda, 0xd8, 0x3d, 0xab, 0x4e, 0xdc, 0x0e, 0x6e, 0x2e, 0xda, 0xb4, 0x9e, 0x51, 0xdf, 0xdc, - 0x7e, 0x8b, 0x45, 0xb0, 0x81, 0xda, 0x21, 0x11, 0x7c, 0xd8, 0x7e, 0x6b, 0x41, 0x28, 0x25, 0x87, - 0x8d, 0x60, 0xf5, 0xd0, 0x11, 0x7c, 0xd8, 0xce, 0x6b, 0x41, 0x28, 0x2f, 0x87, 0x8e, 0xe0, 0xb7, - 0xa0, 0x1f, 0x62, 0x11, 0xec, 0x9b, 0xff, 0xb0, 0xfd, 0xd0, 0x5c, 0xb4, 0xc9, 0x43, 0x23, 0x58, - 0x3d, 0x44, 0x04, 0xc7, 0xe9, 0x8f, 0xe6, 0xa2, 0x4d, 0x1b, 0x1e, 0xc1, 0xb7, 0xdc, 0xcd, 0x7c, - 0x5a, 0x81, 0x89, 0xb5, 0x46, 0xbd, 0xd2, 0xba, 0x8e, 0xea, 0x75, 0x54, 0x67, 0x76, 0x5c, 0x10, - 0x2a, 0x41, 0x1f, 0x57, 0xbf, 0xf4, 0xf2, 0xb4, 0x6f, 0xe1, 0x73, 0x90, 0xa2, 0x36, 0x5d, 0x58, - 0xc8, 0xdc, 0x50, 0x22, 0x2a, 0x9c, 0xc7, 0xaa, 0x9f, 0xe0, 0xb0, 0x33, 0x0b, 0x99, 0x7f, 0x52, - 0x02, 0x55, 0xce, 0x1b, 0xce, 0x7d, 0x84, 0x68, 0x68, 0xdd, 0xb2, 0x86, 0xa7, 0x63, 0x69, 0x18, - 0xd0, 0xed, 0xce, 0x1e, 0xdd, 0x02, 0x5a, 0x75, 0x61, 0x7c, 0xad, 0x51, 0x5f, 0x23, 0x7f, 0xdf, - 0x1a, 0x47, 0x25, 0xca, 0x23, 0xd5, 0x83, 0x05, 0x21, 0x2c, 0x83, 0x08, 0x2f, 0xa4, 0xc5, 0x1a, - 0x91, 0x6b, 0xe0, 0xc7, 0x5a, 0xc2, 0x63, 0xe7, 0xfa, 0x3d, 0xd6, 0xaf, 0xec, 0xde, 0x03, 0xe7, - 0xfa, 0x3d, 0xd0, 0xcf, 0x21, 0xef, 0x51, 0x4f, 0xf3, 0xc5, 0x99, 0x5e, 0xba, 0xd1, 0x8f, 0x43, - 0x62, 0x85, 0x5e, 0xa7, 0x1d, 0x29, 0x8e, 0x60, 0xa5, 0xbe, 0xfd, 0xf2, 0x74, 0x72, 0xbb, 0xdb, - 0xa8, 0x1b, 0x89, 0x95, 0xba, 0x7e, 0x15, 0x06, 0xdf, 0xc9, 0xfe, 0x4a, 0x0c, 0x33, 0x2c, 0x31, - 0x86, 0xfb, 0xfb, 0xee, 0x11, 0xe1, 0x07, 0x9f, 0xa6, 0xdb, 0x89, 0xf3, 0xdb, 0x0d, 0xcb, 0x3d, - 0xb3, 0x78, 0xd1, 0xa0, 0x22, 0x72, 0xff, 0x1f, 0x80, 0x3e, 0xb3, 0x6c, 0x3a, 0x7b, 0xfa, 0x1a, - 0x97, 0x4c, 0x1f, 0x7d, 0xf1, 0xdb, 0x2f, 0x4f, 0x2f, 0xc5, 0x91, 0xfa, 0x40, 0xdd, 0x74, 0xf6, - 0x1e, 0x70, 0xf7, 0xdb, 0x68, 0xbe, 0xb8, 0xef, 0x22, 0x87, 0x4b, 0x6f, 0xf3, 0x55, 0x8f, 0xcd, - 0x2b, 0x13, 0x98, 0x57, 0x4a, 0x98, 0xd3, 0x15, 0x71, 0x4e, 0x0b, 0x6f, 0x74, 0x3e, 0x4f, 0xf3, - 0x45, 0x42, 0xb2, 0xa4, 0x1a, 0x65, 0x49, 0xf5, 0x56, 0x2d, 0xd9, 0xe6, 0xf5, 0x51, 0x9a, 0xab, - 0x7a, 0xd0, 0x5c, 0xd5, 0x5b, 0x99, 0xeb, 0x8f, 0x69, 0xb6, 0x7a, 0xf9, 0xb4, 0x6d, 0xd1, 0xfb, - 0x88, 0xbf, 0x58, 0x7b, 0x41, 0x6f, 0x6a, 0x17, 0x90, 0x4f, 0xde, 0x78, 0x7e, 0x5a, 0xc9, 0x7d, - 0x3a, 0xc1, 0x67, 0x4e, 0x13, 0xe9, 0x8d, 0xcd, 0xfc, 0x17, 0xa5, 0xa7, 0x7a, 0x2b, 0x2c, 0xf4, - 0x9c, 0x02, 0x93, 0x3d, 0x95, 0x9c, 0x9a, 0xe9, 0xcd, 0x2d, 0xe7, 0xd6, 0x61, 0xcb, 0x39, 0x53, - 0xf0, 0x2b, 0x0a, 0x1c, 0x93, 0xca, 0x2b, 0x55, 0xef, 0xb4, 0xa4, 0xde, 0xed, 0xbd, 0x4f, 0x22, - 0x8c, 0x01, 0xed, 0x82, 0xee, 0x95, 0x00, 0x01, 0xc9, 0x9e, 0xdf, 0x97, 0x24, 0xbf, 0x1f, 0xf7, - 0x00, 0x21, 0xe6, 0xe2, 0x11, 0xc0, 0xd4, 0xb6, 0x21, 0xb9, 0xd5, 0x41, 0x48, 0xcf, 0x42, 0x62, - 0xbd, 0xc3, 0x34, 0x1c, 0xa3, 0xf8, 0xf5, 0x4e, 0xb1, 0x63, 0x5a, 0xb5, 0x3d, 0x23, 0xb1, 0xde, - 0xd1, 0x4f, 0x80, 0x5a, 0x60, 0x7f, 0x87, 0x9f, 0x5e, 0x1c, 0xa7, 0x0c, 0x05, 0xab, 0xce, 0x38, - 0x30, 0x4d, 0xcf, 0x42, 0xf2, 0x1a, 0x32, 0x77, 0x98, 0x12, 0x40, 0x79, 0xf0, 0x88, 0x41, 0xc6, - 0xd9, 0x03, 0x1f, 0x85, 0x14, 0x17, 0xac, 0x9f, 0xc4, 0x88, 0x1d, 0x97, 0x3d, 0x96, 0x21, 0xb0, - 0x3a, 0x6c, 0xe5, 0x22, 0x54, 0xfd, 0x14, 0x0c, 0x1a, 0x8d, 0xdd, 0x3d, 0x97, 0x3d, 0xbc, 0x97, - 0x8d, 0x92, 0x73, 0x8f, 0xc1, 0xb0, 0xa7, 0xd1, 0x9b, 0x2c, 0xba, 0x4c, 0xa7, 0xa6, 0x4f, 0x05, - 0xd7, 0x13, 0xbe, 0x6f, 0x49, 0x87, 0xf4, 0x19, 0x48, 0x6d, 0xba, 0x1d, 0xbf, 0xe8, 0xf3, 0x8e, - 0xd4, 0x1b, 0xcd, 0xbd, 0x4f, 0x81, 0x54, 0x19, 0xa1, 0x36, 0x31, 0xf8, 0x3d, 0x90, 0x2c, 0xdb, - 0x4f, 0x59, 0x4c, 0xc1, 0x09, 0x66, 0x51, 0x4c, 0x66, 0x36, 0x25, 0x64, 0xfd, 0x9e, 0xa0, 0xdd, - 0x8f, 0x7a, 0x76, 0x0f, 0xf0, 0x11, 0xdb, 0xe7, 0x04, 0xdb, 0x33, 0x07, 0x62, 0xa6, 0x1e, 0xfb, - 0x5f, 0x80, 0x74, 0xe0, 0x29, 0xfa, 0x2c, 0x53, 0x23, 0x21, 0x03, 0x83, 0xb6, 0xc2, 0x1c, 0x39, - 0x04, 0xa3, 0xc2, 0x83, 0x31, 0x34, 0x60, 0xe2, 0x3e, 0x50, 0x62, 0xe6, 0x39, 0xd1, 0xcc, 0xe1, - 0xac, 0xcc, 0xd4, 0x0b, 0xd4, 0x46, 0xc4, 0xdc, 0x27, 0x69, 0x70, 0xf6, 0x77, 0x22, 0xfe, 0x9c, - 0x1b, 0x04, 0x75, 0xad, 0xd1, 0xcc, 0x3d, 0x08, 0x40, 0x53, 0xbe, 0x62, 0x75, 0x5b, 0x52, 0xd6, - 0x8d, 0x71, 0x03, 0x6f, 0xed, 0xa1, 0x2d, 0xe4, 0x10, 0x16, 0xb1, 0x9f, 0xc2, 0x05, 0x06, 0x68, - 0x8a, 0x11, 0xfc, 0x7d, 0x91, 0xf8, 0xd0, 0x4e, 0x0c, 0xb3, 0x66, 0x28, 0xeb, 0x63, 0xc8, 0x2d, - 0x58, 0xb6, 0xbb, 0x87, 0x3a, 0x12, 0x62, 0x51, 0x3f, 0x2b, 0x24, 0xec, 0xd8, 0xe2, 0x9d, 0x1e, - 0xa2, 0x2f, 0xe8, 0x6c, 0xee, 0x4b, 0x44, 0x41, 0xdc, 0x0a, 0xf4, 0x4c, 0x50, 0x8d, 0x31, 0x41, - 0xfd, 0xbc, 0xd0, 0xbf, 0x1d, 0xa0, 0xa6, 0xf4, 0x6a, 0x79, 0x49, 0x78, 0xcf, 0x39, 0x58, 0x59, - 0xf1, 0x1d, 0x93, 0xdb, 0x94, 0xab, 0x7c, 0x5f, 0xa4, 0xca, 0x7d, 0xba, 0xdb, 0xc3, 0xda, 0x54, - 0x8d, 0x6b, 0xd3, 0xaf, 0x7b, 0x1d, 0x07, 0xfd, 0x45, 0x03, 0xf2, 0x03, 0x1a, 0xfa, 0xfd, 0x91, - 0xbe, 0xcf, 0x2b, 0x25, 0x4f, 0xd5, 0xa5, 0xb8, 0xee, 0xcf, 0x27, 0x8a, 0x45, 0x4f, 0xdd, 0x0b, - 0x87, 0x08, 0x81, 0x7c, 0xa2, 0x54, 0xf2, 0xca, 0x76, 0xea, 0x83, 0xcf, 0x4f, 0x2b, 0x2f, 0x3c, - 0x3f, 0x3d, 0x90, 0xfb, 0x82, 0x02, 0x13, 0x8c, 0x33, 0x10, 0xb8, 0x0f, 0x48, 0xca, 0xdf, 0xc6, - 0x6b, 0x46, 0x98, 0x05, 0x7e, 0x66, 0xc1, 0xfb, 0x4d, 0x05, 0x32, 0x3d, 0xba, 0x72, 0x7b, 0x2f, - 0xc4, 0x52, 0x39, 0xaf, 0x54, 0x7e, 0xfe, 0x36, 0x7f, 0x0c, 0x06, 0xb7, 0x1a, 0x2d, 0xd4, 0xc1, - 0x2b, 0x01, 0xfe, 0x40, 0x55, 0xe6, 0x87, 0x39, 0x74, 0x88, 0xd3, 0xa8, 0x72, 0x02, 0x6d, 0x51, - 0xcf, 0x40, 0xb2, 0x6c, 0xba, 0x26, 0xd1, 0x60, 0xc4, 0xab, 0xaf, 0xa6, 0x6b, 0xe6, 0xce, 0xc2, - 0xc8, 0xea, 0x3e, 0xb9, 0x31, 0x53, 0x27, 0xb7, 0x41, 0xc4, 0xee, 0x8f, 0xf7, 0xab, 0x67, 0xe6, - 0x06, 0x53, 0x75, 0xed, 0x86, 0x92, 0x4f, 0x12, 0x7d, 0x9e, 0x84, 0xb1, 0x75, 0xac, 0x36, 0xc1, - 0x09, 0x30, 0xfa, 0x74, 0xd5, 0x9b, 0xbc, 0xd4, 0x94, 0xa9, 0x7e, 0x53, 0x36, 0x03, 0xca, 0xaa, - 0xd8, 0x3a, 0x05, 0xf5, 0x30, 0x94, 0xd5, 0xb9, 0x64, 0x6a, 0x4c, 0x9b, 0x98, 0x4b, 0xa6, 0x40, - 0x1b, 0x65, 0xcf, 0xfd, 0x07, 0x15, 0x34, 0xda, 0xea, 0x94, 0xd1, 0x4e, 0xc3, 0x6a, 0xb8, 0xbd, - 0xfd, 0xaa, 0xa7, 0xb1, 0xfe, 0x30, 0x0c, 0x63, 0x93, 0x5e, 0x61, 0xbf, 0x43, 0x85, 0x4d, 0x7f, - 0x82, 0xb5, 0x28, 0x92, 0x08, 0x36, 0x40, 0x42, 0xc7, 0xc7, 0xe8, 0x57, 0x40, 0x5d, 0x5b, 0x5b, - 0x65, 0x8b, 0xdb, 0xd2, 0x81, 0x50, 0x76, 0xe1, 0x86, 0x7d, 0x63, 0x63, 0xce, 0xae, 0x81, 0x05, - 0xe8, 0x4b, 0x90, 0x58, 0x5b, 0x65, 0x0d, 0xef, 0xc9, 0x38, 0x62, 0x8c, 0xc4, 0xda, 0xea, 0xd4, - 0xdf, 0x2a, 0x30, 0x2a, 0x8c, 0xea, 0x39, 0x18, 0xa1, 0x03, 0x81, 0xe9, 0x0e, 0x19, 0xc2, 0x18, - 0xd7, 0x39, 0x71, 0x8b, 0x3a, 0x4f, 0x15, 0x60, 0x5c, 0x1a, 0xd7, 0xe7, 0x41, 0x0f, 0x0e, 0x31, - 0x25, 0xe8, 0x6f, 0xf8, 0x84, 0x50, 0x72, 0x77, 0x01, 0xf8, 0x76, 0xf5, 0x7e, 0x7a, 0x66, 0xad, - 0xb2, 0xb9, 0x55, 0x29, 0x6b, 0x4a, 0xee, 0xab, 0x0a, 0xa4, 0x59, 0xdb, 0x5a, 0xb3, 0xdb, 0x48, - 0x2f, 0x82, 0x52, 0x60, 0xf1, 0xf0, 0xc6, 0xf4, 0x56, 0x0a, 0xfa, 0x69, 0x50, 0x8a, 0xf1, 0x5d, - 0xad, 0x14, 0xf5, 0x45, 0x50, 0x4a, 0xcc, 0xc1, 0xf1, 0x3c, 0xa3, 0x94, 0x72, 0x3f, 0x54, 0xe1, - 0x68, 0xb0, 0x8d, 0xe6, 0xf5, 0xe4, 0x84, 0xf8, 0xde, 0x94, 0x1f, 0x3e, 0xb3, 0x78, 0x76, 0x69, - 0x1e, 0xff, 0xe3, 0x85, 0xe4, 0x09, 0xf1, 0x15, 0xaa, 0x97, 0xa5, 0xe7, 0x9a, 0x48, 0x3e, 0x19, - 0xa0, 0xf6, 0x5c, 0x13, 0x11, 0xa8, 0x3d, 0xd7, 0x44, 0x04, 0x6a, 0xcf, 0x35, 0x11, 0x81, 0xda, - 0x73, 0x14, 0x20, 0x50, 0x7b, 0xae, 0x89, 0x08, 0xd4, 0x9e, 0x6b, 0x22, 0x02, 0xb5, 0xf7, 0x9a, - 0x08, 0x23, 0xf7, 0xbd, 0x26, 0x22, 0xd2, 0x7b, 0xaf, 0x89, 0x88, 0xf4, 0xde, 0x6b, 0x22, 0xf9, - 0xa4, 0xdb, 0xe9, 0xa2, 0xfe, 0x87, 0x0e, 0x22, 0xfe, 0xa0, 0x77, 0x40, 0xbf, 0x00, 0xaf, 0xc3, - 0x38, 0xdd, 0x8f, 0x28, 0xd9, 0x96, 0x6b, 0x36, 0x2c, 0xd4, 0xd1, 0xdf, 0x0e, 0x23, 0x74, 0x88, - 0xbe, 0xe5, 0x84, 0xbd, 0x05, 0x52, 0x3a, 0x2b, 0xb7, 0x02, 0x77, 0xee, 0xa7, 0x49, 0x98, 0xa4, - 0x03, 0x6b, 0x66, 0x0b, 0x09, 0x97, 0x8c, 0x4e, 0x49, 0x47, 0x4a, 0x63, 0x18, 0x7e, 0xf3, 0xe5, - 0x69, 0x3a, 0x5a, 0xf0, 0x82, 0xe9, 0x94, 0x74, 0xb8, 0x24, 0xf2, 0xf9, 0xeb, 0xcf, 0x29, 0xe9, - 0xe2, 0x91, 0xc8, 0xe7, 0x2d, 0x37, 0x1e, 0x1f, 0xbf, 0x82, 0x24, 0xf2, 0x95, 0xbd, 0x28, 0x3b, - 0x25, 0x5d, 0x46, 0x12, 0xf9, 0x2a, 0x5e, 0xbc, 0x9d, 0x92, 0x8e, 0x9e, 0x44, 0xbe, 0x2b, 0x5e, - 0xe4, 0x9d, 0x92, 0x0e, 0xa1, 0x44, 0xbe, 0x65, 0x2f, 0x06, 0x4f, 0x49, 0x57, 0x95, 0x44, 0xbe, - 0x47, 0xbc, 0x68, 0x3c, 0x25, 0x5d, 0x5a, 0x12, 0xf9, 0x56, 0xbc, 0xb8, 0x9c, 0x95, 0xaf, 0x2f, - 0x89, 0x8c, 0x57, 0xfd, 0x08, 0x9d, 0x95, 0x2f, 0x32, 0x89, 0x9c, 0xff, 0xcf, 0x8f, 0xd5, 0x59, - 0xf9, 0x4a, 0x93, 0xc8, 0x79, 0xcd, 0x8f, 0xda, 0x59, 0xf9, 0xa8, 0x4c, 0xe4, 0x5c, 0xf5, 0xe3, - 0x77, 0x56, 0x3e, 0x34, 0x13, 0x39, 0xd7, 0xfc, 0x48, 0x9e, 0x95, 0x8f, 0xcf, 0x44, 0xce, 0x75, - 0x7f, 0x0f, 0xfd, 0x1b, 0x52, 0xf8, 0x05, 0x2e, 0x41, 0xe5, 0xa4, 0xf0, 0x83, 0x90, 0xd0, 0xcb, - 0x49, 0xa1, 0x07, 0x21, 0x61, 0x97, 0x93, 0xc2, 0x0e, 0x42, 0x42, 0x2e, 0x27, 0x85, 0x1c, 0x84, - 0x84, 0x5b, 0x4e, 0x0a, 0x37, 0x08, 0x09, 0xb5, 0x9c, 0x14, 0x6a, 0x10, 0x12, 0x66, 0x39, 0x29, - 0xcc, 0x20, 0x24, 0xc4, 0x72, 0x52, 0x88, 0x41, 0x48, 0x78, 0xe5, 0xa4, 0xf0, 0x82, 0x90, 0xd0, - 0x3a, 0x29, 0x87, 0x16, 0x84, 0x85, 0xd5, 0x49, 0x39, 0xac, 0x20, 0x2c, 0xa4, 0xee, 0x96, 0x43, - 0x6a, 0xf8, 0xe6, 0xcb, 0xd3, 0x83, 0x78, 0x28, 0x10, 0x4d, 0x27, 0xe5, 0x68, 0x82, 0xb0, 0x48, - 0x3a, 0x29, 0x47, 0x12, 0x84, 0x45, 0xd1, 0x49, 0x39, 0x8a, 0x20, 0x2c, 0x82, 0x5e, 0x94, 0x23, - 0xc8, 0xbf, 0xe2, 0x93, 0x93, 0x4e, 0x14, 0xa3, 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, - 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, - 0x04, 0xa9, 0x71, 0x22, 0x48, 0x8d, 0x15, 0x41, 0x6a, 0xbf, 0x08, 0x3a, 0x29, 0x5f, 0x78, 0x80, - 0xb0, 0x82, 0x74, 0x52, 0x3e, 0xf9, 0x8c, 0x0e, 0x21, 0x35, 0x56, 0x08, 0xa9, 0xfd, 0x42, 0xe8, - 0x1b, 0x2a, 0x1c, 0x15, 0x42, 0x88, 0x1d, 0x0f, 0xbd, 0x59, 0x15, 0xe8, 0x7c, 0x8c, 0xfb, 0x15, - 0x61, 0x31, 0x75, 0x3e, 0xc6, 0x19, 0xf5, 0x41, 0x71, 0xd6, 0x5b, 0x85, 0x2a, 0x31, 0xaa, 0xd0, - 0x15, 0x2f, 0x86, 0xce, 0xc7, 0xb8, 0x77, 0xd1, 0x1b, 0x7b, 0x17, 0x0f, 0x2a, 0x02, 0x8f, 0xc4, - 0x2a, 0x02, 0x2b, 0xb1, 0x8a, 0xc0, 0x55, 0xdf, 0x83, 0x1f, 0x48, 0xc0, 0x31, 0xdf, 0x83, 0xf4, - 0x13, 0xf9, 0x3d, 0xa1, 0x5c, 0xe0, 0x84, 0x4a, 0xe7, 0xa7, 0x36, 0x01, 0x37, 0x26, 0x56, 0xea, - 0xfa, 0x86, 0x78, 0x56, 0x95, 0x3f, 0xec, 0xf9, 0x4d, 0xc0, 0xe3, 0x6c, 0x2f, 0xf4, 0x24, 0xa8, - 0x2b, 0x75, 0x87, 0x54, 0x8b, 0xb0, 0xc7, 0x96, 0x0c, 0x4c, 0xd6, 0x0d, 0x18, 0x22, 0xec, 0x0e, - 0x71, 0xef, 0xad, 0x3c, 0xb8, 0x6c, 0x30, 0x49, 0xb9, 0x17, 0x15, 0x98, 0x11, 0x42, 0xf9, 0xcd, - 0x39, 0x31, 0xb8, 0x1c, 0xeb, 0xc4, 0x40, 0x48, 0x10, 0xff, 0xf4, 0xe0, 0xde, 0xde, 0x83, 0xea, - 0x60, 0x96, 0xc8, 0x27, 0x09, 0xbf, 0x0c, 0x63, 0xfe, 0x0c, 0xc8, 0x2b, 0xdb, 0xb9, 0xe8, 0xcd, - 0xcc, 0xb0, 0xd4, 0x3c, 0x27, 0x6d, 0xa2, 0x1d, 0x08, 0xf3, 0xb2, 0x35, 0x97, 0x87, 0xf1, 0x35, - 0xf1, 0x4f, 0x77, 0xa2, 0xf6, 0x22, 0x52, 0xb8, 0x35, 0xbf, 0xf1, 0x99, 0xe9, 0x81, 0xdc, 0xfd, - 0x30, 0x12, 0xfc, 0xeb, 0x1c, 0x09, 0x38, 0xcc, 0x81, 0xf9, 0xe4, 0x4b, 0x98, 0xfb, 0xf7, 0x15, - 0xb8, 0x2d, 0xc8, 0xfe, 0xae, 0x86, 0xbb, 0xb7, 0x62, 0xe1, 0x9e, 0xfe, 0x41, 0x48, 0x21, 0xe6, - 0x38, 0xf6, 0xfb, 0x26, 0xec, 0x35, 0x32, 0x94, 0x7d, 0x9e, 0xfc, 0x6b, 0x78, 0x10, 0x69, 0x13, - 0x84, 0x3f, 0x76, 0x71, 0xea, 0x1e, 0x18, 0xa4, 0xf2, 0x45, 0xbd, 0x46, 0x25, 0xbd, 0x3e, 0x17, - 0xa2, 0x17, 0x89, 0x23, 0xfd, 0xaa, 0xa0, 0x57, 0xe0, 0x6d, 0x35, 0x94, 0x7d, 0x9e, 0x07, 0x5f, - 0x31, 0x85, 0xfb, 0x3f, 0x12, 0x51, 0xd1, 0x4a, 0xce, 0x42, 0xaa, 0x22, 0xf3, 0x84, 0xeb, 0x59, - 0x86, 0xe4, 0x9a, 0x5d, 0x27, 0xbf, 0xbc, 0x42, 0x7e, 0x3c, 0x96, 0x19, 0x99, 0xfd, 0x92, 0xec, - 0x29, 0x48, 0x95, 0xf6, 0x1a, 0xcd, 0x7a, 0x07, 0x59, 0xec, 0xc8, 0x9e, 0xed, 0xa0, 0x63, 0x8c, - 0xe1, 0xd1, 0x72, 0x25, 0x98, 0x58, 0xb3, 0xad, 0xe2, 0xbe, 0x1b, 0xac, 0x1b, 0xf3, 0x52, 0x8a, - 0xb0, 0x23, 0x1f, 0xf2, 0xf7, 0x1e, 0x98, 0xa1, 0x38, 0xf8, 0xed, 0x97, 0xa7, 0x95, 0x2d, 0x6f, - 0xfb, 0x7c, 0x15, 0x6e, 0x67, 0xe9, 0xd3, 0x23, 0x6a, 0x31, 0x4a, 0xd4, 0x30, 0x3b, 0xa6, 0x0e, - 0x88, 0x5b, 0xc1, 0xe2, 0xac, 0x50, 0x71, 0x6f, 0x4c, 0x33, 0xdc, 0x14, 0x1d, 0xa8, 0x99, 0x7a, - 0x28, 0xcd, 0x42, 0xc5, 0xcd, 0x47, 0x89, 0x93, 0x34, 0xbb, 0x1b, 0x86, 0x3d, 0x5a, 0x20, 0x1a, - 0x82, 0x99, 0xb2, 0x38, 0x97, 0x83, 0x74, 0x20, 0x61, 0xf5, 0x41, 0x50, 0x0a, 0xda, 0x00, 0xfe, - 0xaf, 0xa8, 0x29, 0xf8, 0xbf, 0x92, 0x96, 0x98, 0xbb, 0x07, 0xc6, 0xa5, 0xed, 0x4b, 0x4c, 0x29, - 0x6b, 0x80, 0xff, 0xab, 0x68, 0xe9, 0xa9, 0xe4, 0x07, 0xff, 0x30, 0x3b, 0x30, 0x77, 0x19, 0xf4, - 0xde, 0x8d, 0x4e, 0x7d, 0x08, 0x12, 0x05, 0x2c, 0xf2, 0x76, 0x48, 0x14, 0x8b, 0x9a, 0x32, 0x35, - 0xfe, 0xeb, 0x9f, 0x9a, 0x49, 0x17, 0xc9, 0x9f, 0x1e, 0x3f, 0x86, 0xdc, 0x62, 0x91, 0x81, 0x1f, - 0x82, 0xdb, 0x42, 0x37, 0x4a, 0x31, 0xbe, 0x54, 0xa2, 0xf8, 0x72, 0xb9, 0x07, 0x5f, 0x2e, 0x13, - 0xbc, 0x92, 0xe7, 0x07, 0xce, 0x05, 0x3d, 0x64, 0x93, 0x31, 0x53, 0x0f, 0x1c, 0x70, 0x17, 0xf2, - 0x0f, 0x31, 0xde, 0x62, 0x28, 0x2f, 0x8a, 0x38, 0xb0, 0x2e, 0xe6, 0x4b, 0x0c, 0x5f, 0x0a, 0xc5, - 0xef, 0x48, 0xa7, 0xaa, 0xe2, 0x0a, 0xc1, 0x84, 0x94, 0x3c, 0x85, 0xcb, 0xa1, 0x42, 0xf6, 0x02, - 0x77, 0xdd, 0xcb, 0x9e, 0xc2, 0x95, 0x50, 0xde, 0x46, 0xc4, 0x9d, 0xaf, 0x4a, 0xfe, 0x34, 0x5b, - 0xe4, 0x0b, 0x67, 0xf4, 0xdb, 0x78, 0x8e, 0x0a, 0x15, 0x98, 0x19, 0x88, 0x73, 0xe5, 0x4b, 0x0c, - 0x50, 0xec, 0x0b, 0xe8, 0x6f, 0x25, 0x8e, 0xcc, 0x3f, 0xc2, 0x84, 0x94, 0xfa, 0x0a, 0x89, 0x30, - 0x15, 0x87, 0x17, 0xb7, 0x6e, 0xbc, 0x92, 0x1d, 0x78, 0xe9, 0x95, 0xec, 0xc0, 0xbf, 0xbc, 0x92, - 0x1d, 0xf8, 0xce, 0x2b, 0x59, 0xe5, 0xfb, 0xaf, 0x64, 0x95, 0x1f, 0xbc, 0x92, 0x55, 0x7e, 0xf2, - 0x4a, 0x56, 0x79, 0xf6, 0x66, 0x56, 0x79, 0xe1, 0x66, 0x56, 0xf9, 0xd2, 0xcd, 0xac, 0xf2, 0xb5, - 0x9b, 0x59, 0xe5, 0xc5, 0x9b, 0x59, 0xe5, 0xc6, 0xcd, 0xec, 0xc0, 0x4b, 0x37, 0xb3, 0x03, 0xdf, - 0xb9, 0x99, 0x55, 0xbe, 0x7f, 0x33, 0x3b, 0xf0, 0x83, 0x9b, 0x59, 0xe5, 0x27, 0x37, 0xb3, 0x03, - 0xcf, 0x7e, 0x37, 0xab, 0x3c, 0xff, 0xdd, 0xec, 0xc0, 0x0b, 0xdf, 0xcd, 0x2a, 0xff, 0x17, 0x00, - 0x00, 0xff, 0xff, 0xab, 0x90, 0x2c, 0xa8, 0xd0, 0x63, 0x00, 0x00, + // 6508 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0x6b, 0x70, 0x24, 0x57, + 0x75, 0x56, 0x4f, 0x8f, 0xb4, 0xa3, 0xa3, 0x57, 0xab, 0xb5, 0xd6, 0x8e, 0xe5, 0xb5, 0xa4, 0x1d, + 0xaf, 0xd7, 0xb2, 0xb0, 0xb5, 0x5a, 0xad, 0xb4, 0x8f, 0x59, 0x6c, 0xd7, 0xbc, 0x76, 0xad, 0x45, + 0x1a, 0x89, 0x96, 0x84, 0xbd, 0x24, 0x55, 0x53, 0xbd, 0x33, 0x57, 0xd2, 0xd8, 0x33, 0xdd, 0xc3, + 0x74, 0xcb, 0xb6, 0xfc, 0x23, 0xe5, 0x40, 0x42, 0x20, 0xa9, 0x3c, 0x49, 0x2a, 0x40, 0xc0, 0x18, + 0x52, 0x04, 0x03, 0x79, 0x40, 0x42, 0x08, 0x45, 0xa5, 0x82, 0xff, 0x90, 0x6c, 0xfe, 0xa4, 0x4c, + 0xf2, 0x27, 0x45, 0xa5, 0x5c, 0xec, 0x9a, 0xaa, 0x90, 0xc4, 0x49, 0x20, 0xb8, 0x0a, 0xaa, 0xcc, + 0x8f, 0xd4, 0x7d, 0x75, 0xf7, 0xbd, 0xd3, 0xa3, 0x6e, 0x79, 0x6d, 0xe0, 0xcf, 0xee, 0xcc, 0x3d, + 0xe7, 0x3b, 0x7d, 0xee, 0x79, 0xdd, 0xd3, 0xf7, 0x5e, 0x0d, 0xbc, 0xba, 0x04, 0xd3, 0x3b, 0xb6, + 0xbd, 0xd3, 0x40, 0xa7, 0x5b, 0x6d, 0xdb, 0xb5, 0xaf, 0xef, 0x6d, 0x9f, 0xae, 0x21, 0xa7, 0xda, + 0xae, 0xb7, 0x5c, 0xbb, 0x3d, 0x47, 0xc6, 0xf4, 0x11, 0xca, 0x31, 0xc7, 0x39, 0x32, 0xab, 0x30, + 0x7a, 0xb9, 0xde, 0x40, 0x45, 0x8f, 0x71, 0x03, 0xb9, 0xfa, 0x05, 0x48, 0x6e, 0xd7, 0x1b, 0x28, + 0xad, 0x4c, 0xab, 0x33, 0x03, 0x0b, 0x27, 0xe7, 0x24, 0xd0, 0x9c, 0x88, 0x58, 0xc7, 0xc3, 0x06, + 0x41, 0x64, 0xbe, 0x9b, 0x84, 0xb1, 0x10, 0xaa, 0xae, 0x43, 0xd2, 0x32, 0x9b, 0x58, 0xa2, 0x32, + 0xd3, 0x6f, 0x90, 0xcf, 0x7a, 0x1a, 0x8e, 0xb4, 0xcc, 0xea, 0x93, 0xe6, 0x0e, 0x4a, 0x27, 0xc8, + 0x30, 0xff, 0xaa, 0x4f, 0x02, 0xd4, 0x50, 0x0b, 0x59, 0x35, 0x64, 0x55, 0xf7, 0xd3, 0xea, 0xb4, + 0x3a, 0xd3, 0x6f, 0x04, 0x46, 0xf4, 0x77, 0xc0, 0x68, 0x6b, 0xef, 0x7a, 0xa3, 0x5e, 0xad, 0x04, + 0xd8, 0x60, 0x5a, 0x9d, 0xe9, 0x35, 0x34, 0x4a, 0x28, 0xfa, 0xcc, 0xf7, 0xc1, 0xc8, 0xd3, 0xc8, + 0x7c, 0x32, 0xc8, 0x3a, 0x40, 0x58, 0x87, 0xf1, 0x70, 0x80, 0xb1, 0x00, 0x83, 0x4d, 0xe4, 0x38, + 0xe6, 0x0e, 0xaa, 0xb8, 0xfb, 0x2d, 0x94, 0x4e, 0x92, 0xd9, 0x4f, 0x77, 0xcc, 0x5e, 0x9e, 0xf9, + 0x00, 0x43, 0x6d, 0xee, 0xb7, 0x90, 0x9e, 0x83, 0x7e, 0x64, 0xed, 0x35, 0xa9, 0x84, 0xde, 0x2e, + 0xf6, 0x2b, 0x59, 0x7b, 0x4d, 0x59, 0x4a, 0x0a, 0xc3, 0x98, 0x88, 0x23, 0x0e, 0x6a, 0x3f, 0x55, + 0xaf, 0xa2, 0x74, 0x1f, 0x11, 0x70, 0x5f, 0x87, 0x80, 0x0d, 0x4a, 0x97, 0x65, 0x70, 0x9c, 0x5e, + 0x80, 0x7e, 0xf4, 0x8c, 0x8b, 0x2c, 0xa7, 0x6e, 0x5b, 0xe9, 0x23, 0x44, 0xc8, 0xbd, 0x21, 0x5e, + 0x44, 0x8d, 0x9a, 0x2c, 0xc2, 0xc7, 0xe9, 0xe7, 0xe0, 0x88, 0xdd, 0x72, 0xeb, 0xb6, 0xe5, 0xa4, + 0x53, 0xd3, 0xca, 0xcc, 0xc0, 0xc2, 0xf1, 0xd0, 0x40, 0x58, 0xa3, 0x3c, 0x06, 0x67, 0xd6, 0x97, + 0x41, 0x73, 0xec, 0xbd, 0x76, 0x15, 0x55, 0xaa, 0x76, 0x0d, 0x55, 0xea, 0xd6, 0xb6, 0x9d, 0xee, + 0x27, 0x02, 0xa6, 0x3a, 0x27, 0x42, 0x18, 0x0b, 0x76, 0x0d, 0x2d, 0x5b, 0xdb, 0xb6, 0x31, 0xec, + 0x08, 0xdf, 0xf5, 0x71, 0xe8, 0x73, 0xf6, 0x2d, 0xd7, 0x7c, 0x26, 0x3d, 0x48, 0x22, 0x84, 0x7d, + 0xcb, 0xfc, 0xa8, 0x17, 0x46, 0xe2, 0x84, 0xd8, 0x25, 0xe8, 0xdd, 0xc6, 0xb3, 0x4c, 0x27, 0x0e, + 0x63, 0x03, 0x8a, 0x11, 0x8d, 0xd8, 0xf7, 0x26, 0x8d, 0x98, 0x83, 0x01, 0x0b, 0x39, 0x2e, 0xaa, + 0xd1, 0x88, 0x50, 0x63, 0xc6, 0x14, 0x50, 0x50, 0x67, 0x48, 0x25, 0xdf, 0x54, 0x48, 0x3d, 0x0e, + 0x23, 0x9e, 0x4a, 0x95, 0xb6, 0x69, 0xed, 0xf0, 0xd8, 0x3c, 0x1d, 0xa5, 0xc9, 0x5c, 0x89, 0xe3, + 0x0c, 0x0c, 0x33, 0x86, 0x91, 0xf0, 0x5d, 0x2f, 0x02, 0xd8, 0x16, 0xb2, 0xb7, 0x2b, 0x35, 0x54, + 0x6d, 0xa4, 0x53, 0x5d, 0xac, 0xb4, 0x86, 0x59, 0x3a, 0xac, 0x64, 0xd3, 0xd1, 0x6a, 0x43, 0xbf, + 0xe8, 0x87, 0xda, 0x91, 0x2e, 0x91, 0xb2, 0x4a, 0x93, 0xac, 0x23, 0xda, 0xb6, 0x60, 0xb8, 0x8d, + 0x70, 0xdc, 0xa3, 0x1a, 0x9b, 0x59, 0x3f, 0x51, 0x62, 0x2e, 0x72, 0x66, 0x06, 0x83, 0xd1, 0x89, + 0x0d, 0xb5, 0x83, 0x5f, 0xf5, 0x7b, 0xc0, 0x1b, 0xa8, 0x90, 0xb0, 0x02, 0x52, 0x85, 0x06, 0xf9, + 0x60, 0xd9, 0x6c, 0xa2, 0x89, 0x0b, 0x30, 0x2c, 0x9a, 0x47, 0x3f, 0x0a, 0xbd, 0x8e, 0x6b, 0xb6, + 0x5d, 0x12, 0x85, 0xbd, 0x06, 0xfd, 0xa2, 0x6b, 0xa0, 0x22, 0xab, 0x46, 0xaa, 0x5c, 0xaf, 0x81, + 0x3f, 0x4e, 0x9c, 0x87, 0x21, 0xe1, 0xf1, 0x71, 0x81, 0x99, 0x8f, 0xf6, 0xc1, 0xd1, 0xb0, 0x98, + 0x0b, 0x0d, 0xff, 0x71, 0xe8, 0xb3, 0xf6, 0x9a, 0xd7, 0x51, 0x3b, 0xad, 0x12, 0x09, 0xec, 0x9b, + 0x9e, 0x83, 0xde, 0x86, 0x79, 0x1d, 0x35, 0xd2, 0xc9, 0x69, 0x65, 0x66, 0x78, 0xe1, 0x1d, 0xb1, + 0xa2, 0x7a, 0x6e, 0x05, 0x43, 0x0c, 0x8a, 0xd4, 0x1f, 0x86, 0x24, 0x2b, 0x71, 0x58, 0xc2, 0x6c, + 0x3c, 0x09, 0x38, 0x16, 0x0d, 0x82, 0xd3, 0xef, 0x82, 0x7e, 0xfc, 0x3f, 0xb5, 0x6d, 0x1f, 0xd1, + 0x39, 0x85, 0x07, 0xb0, 0x5d, 0xf5, 0x09, 0x48, 0x91, 0x30, 0xab, 0x21, 0xbe, 0x34, 0x78, 0xdf, + 0xb1, 0x63, 0x6a, 0x68, 0xdb, 0xdc, 0x6b, 0xb8, 0x95, 0xa7, 0xcc, 0xc6, 0x1e, 0x22, 0x01, 0xd3, + 0x6f, 0x0c, 0xb2, 0xc1, 0xf7, 0xe0, 0x31, 0x7d, 0x0a, 0x06, 0x68, 0x54, 0xd6, 0xad, 0x1a, 0x7a, + 0x86, 0x54, 0x9f, 0x5e, 0x83, 0x06, 0xea, 0x32, 0x1e, 0xc1, 0x8f, 0x7f, 0xc2, 0xb1, 0x2d, 0xee, + 0x5a, 0xf2, 0x08, 0x3c, 0x40, 0x1e, 0x7f, 0x5e, 0x2e, 0x7c, 0x77, 0x87, 0x4f, 0x4f, 0x8e, 0xc5, + 0xcc, 0x57, 0x13, 0x90, 0x24, 0xf9, 0x36, 0x02, 0x03, 0x9b, 0xd7, 0xd6, 0x4b, 0x95, 0xe2, 0xda, + 0x56, 0x7e, 0xa5, 0xa4, 0x29, 0xfa, 0x30, 0x00, 0x19, 0xb8, 0xbc, 0xb2, 0x96, 0xdb, 0xd4, 0x12, + 0xde, 0xf7, 0xe5, 0xf2, 0xe6, 0xb9, 0x45, 0x4d, 0xf5, 0x00, 0x5b, 0x74, 0x20, 0x19, 0x64, 0x38, + 0xbb, 0xa0, 0xf5, 0xea, 0x1a, 0x0c, 0x52, 0x01, 0xcb, 0x8f, 0x97, 0x8a, 0xe7, 0x16, 0xb5, 0x3e, + 0x71, 0xe4, 0xec, 0x82, 0x76, 0x44, 0x1f, 0x82, 0x7e, 0x32, 0x92, 0x5f, 0x5b, 0x5b, 0xd1, 0x52, + 0x9e, 0xcc, 0x8d, 0x4d, 0x63, 0xb9, 0x7c, 0x45, 0xeb, 0xf7, 0x64, 0x5e, 0x31, 0xd6, 0xb6, 0xd6, + 0x35, 0xf0, 0x24, 0xac, 0x96, 0x36, 0x36, 0x72, 0x57, 0x4a, 0xda, 0x80, 0xc7, 0x91, 0xbf, 0xb6, + 0x59, 0xda, 0xd0, 0x06, 0x05, 0xb5, 0xce, 0x2e, 0x68, 0x43, 0xde, 0x23, 0x4a, 0xe5, 0xad, 0x55, + 0x6d, 0x58, 0x1f, 0x85, 0x21, 0xfa, 0x08, 0xae, 0xc4, 0x88, 0x34, 0x74, 0x6e, 0x51, 0xd3, 0x7c, + 0x45, 0xa8, 0x94, 0x51, 0x61, 0xe0, 0xdc, 0xa2, 0xa6, 0x67, 0x0a, 0xd0, 0x4b, 0xa2, 0x4b, 0xd7, + 0x61, 0x78, 0x25, 0x97, 0x2f, 0xad, 0x54, 0xd6, 0xd6, 0x37, 0x97, 0xd7, 0xca, 0xb9, 0x15, 0x4d, + 0xf1, 0xc7, 0x8c, 0xd2, 0xbb, 0xb7, 0x96, 0x8d, 0x52, 0x51, 0x4b, 0x04, 0xc7, 0xd6, 0x4b, 0xb9, + 0xcd, 0x52, 0x51, 0x53, 0x33, 0x55, 0x38, 0x1a, 0x56, 0x67, 0x42, 0x33, 0x23, 0xe0, 0xe2, 0x44, + 0x17, 0x17, 0x13, 0x59, 0x1d, 0x2e, 0xfe, 0x8c, 0x02, 0x63, 0x21, 0xb5, 0x36, 0xf4, 0x21, 0x8f, + 0x40, 0x2f, 0x0d, 0x51, 0xba, 0xfa, 0xdc, 0x1f, 0x5a, 0xb4, 0x49, 0xc0, 0x76, 0xac, 0x40, 0x04, + 0x17, 0x5c, 0x81, 0xd5, 0x2e, 0x2b, 0x30, 0x16, 0xd1, 0xa1, 0xe4, 0x07, 0x14, 0x48, 0x77, 0x93, + 0x1d, 0x51, 0x28, 0x12, 0x42, 0xa1, 0xb8, 0x24, 0x2b, 0x70, 0xa2, 0xfb, 0x1c, 0x3a, 0xb4, 0xf8, + 0x9c, 0x02, 0xe3, 0xe1, 0x8d, 0x4a, 0xa8, 0x0e, 0x0f, 0x43, 0x5f, 0x13, 0xb9, 0xbb, 0x36, 0x5f, + 0xac, 0x4f, 0x85, 0x2c, 0x01, 0x98, 0x2c, 0xdb, 0x8a, 0xa1, 0x82, 0x6b, 0x88, 0xda, 0xad, 0xdb, + 0xa0, 0xda, 0x74, 0x68, 0xfa, 0xe1, 0x04, 0xdc, 0x11, 0x2a, 0x3c, 0x54, 0xd1, 0xbb, 0x01, 0xea, + 0x56, 0x6b, 0xcf, 0xa5, 0x0b, 0x32, 0xad, 0x4f, 0xfd, 0x64, 0x84, 0xe4, 0x3e, 0xae, 0x3d, 0x7b, + 0xae, 0x47, 0x57, 0x09, 0x1d, 0xe8, 0x10, 0x61, 0xb8, 0xe0, 0x2b, 0x9a, 0x24, 0x8a, 0x4e, 0x76, + 0x99, 0x69, 0xc7, 0x5a, 0x37, 0x0f, 0x5a, 0xb5, 0x51, 0x47, 0x96, 0x5b, 0x71, 0xdc, 0x36, 0x32, + 0x9b, 0x75, 0x6b, 0x87, 0x14, 0xe0, 0x54, 0xb6, 0x77, 0xdb, 0x6c, 0x38, 0xc8, 0x18, 0xa1, 0xe4, + 0x0d, 0x4e, 0xc5, 0x08, 0xb2, 0xca, 0xb4, 0x03, 0x88, 0x3e, 0x01, 0x41, 0xc9, 0x1e, 0x22, 0xf3, + 0xc5, 0x23, 0x30, 0x10, 0x68, 0xeb, 0xf4, 0x13, 0x30, 0xf8, 0x84, 0xf9, 0x94, 0x59, 0xe1, 0xad, + 0x3a, 0xb5, 0xc4, 0x00, 0x1e, 0x5b, 0x67, 0xed, 0xfa, 0x3c, 0x1c, 0x25, 0x2c, 0xf6, 0x9e, 0x8b, + 0xda, 0x95, 0x6a, 0xc3, 0x74, 0x1c, 0x62, 0xb4, 0x14, 0x61, 0xd5, 0x31, 0x6d, 0x0d, 0x93, 0x0a, + 0x9c, 0xa2, 0x2f, 0xc1, 0x18, 0x41, 0x34, 0xf7, 0x1a, 0x6e, 0xbd, 0xd5, 0x40, 0x15, 0xfc, 0xf2, + 0xe0, 0x90, 0x42, 0xec, 0x69, 0x36, 0x8a, 0x39, 0x56, 0x19, 0x03, 0xd6, 0xc8, 0xd1, 0x8b, 0x70, + 0x37, 0x81, 0xed, 0x20, 0x0b, 0xb5, 0x4d, 0x17, 0x55, 0xd0, 0xfb, 0xf6, 0xcc, 0x86, 0x53, 0x31, + 0xad, 0x5a, 0x65, 0xd7, 0x74, 0x76, 0xd3, 0x47, 0xb1, 0x80, 0x7c, 0x22, 0xad, 0x18, 0x77, 0x62, + 0xc6, 0x2b, 0x8c, 0xaf, 0x44, 0xd8, 0x72, 0x56, 0xed, 0x51, 0xd3, 0xd9, 0xd5, 0xb3, 0x30, 0x4e, + 0xa4, 0x38, 0x6e, 0xbb, 0x6e, 0xed, 0x54, 0xaa, 0xbb, 0xa8, 0xfa, 0x64, 0x65, 0xcf, 0xdd, 0xbe, + 0x90, 0xbe, 0x2b, 0xf8, 0x7c, 0xa2, 0xe1, 0x06, 0xe1, 0x29, 0x60, 0x96, 0x2d, 0x77, 0xfb, 0x82, + 0xbe, 0x01, 0x83, 0xd8, 0x19, 0xcd, 0xfa, 0xb3, 0xa8, 0xb2, 0x6d, 0xb7, 0xc9, 0xca, 0x32, 0x1c, + 0x92, 0xd9, 0x01, 0x0b, 0xce, 0xad, 0x31, 0xc0, 0xaa, 0x5d, 0x43, 0xd9, 0xde, 0x8d, 0xf5, 0x52, + 0xa9, 0x68, 0x0c, 0x70, 0x29, 0x97, 0xed, 0x36, 0x0e, 0xa8, 0x1d, 0xdb, 0x33, 0xf0, 0x00, 0x0d, + 0xa8, 0x1d, 0x9b, 0x9b, 0x77, 0x09, 0xc6, 0xaa, 0x55, 0x3a, 0xe7, 0x7a, 0xb5, 0xc2, 0x5a, 0x7c, + 0x27, 0xad, 0x09, 0xc6, 0xaa, 0x56, 0xaf, 0x50, 0x06, 0x16, 0xe3, 0x8e, 0x7e, 0x11, 0xee, 0xf0, + 0x8d, 0x15, 0x04, 0x8e, 0x76, 0xcc, 0x52, 0x86, 0x2e, 0xc1, 0x58, 0x6b, 0xbf, 0x13, 0xa8, 0x0b, + 0x4f, 0x6c, 0xed, 0xcb, 0xb0, 0x7b, 0xc9, 0x6b, 0x5b, 0x1b, 0x55, 0x4d, 0x17, 0xd5, 0xd2, 0xc7, + 0x82, 0xdc, 0x01, 0x82, 0x7e, 0x1a, 0xb4, 0x6a, 0xb5, 0x82, 0x2c, 0xf3, 0x7a, 0x03, 0x55, 0xcc, + 0x36, 0xb2, 0x4c, 0x27, 0x3d, 0x15, 0x64, 0x1e, 0xae, 0x56, 0x4b, 0x84, 0x9a, 0x23, 0x44, 0x7d, + 0x16, 0x46, 0xed, 0xeb, 0x4f, 0x54, 0x69, 0x64, 0x55, 0x5a, 0x6d, 0xb4, 0x5d, 0x7f, 0x26, 0x7d, + 0x92, 0x98, 0x69, 0x04, 0x13, 0x48, 0x5c, 0xad, 0x93, 0x61, 0xfd, 0x7e, 0xd0, 0xaa, 0xce, 0xae, + 0xd9, 0x6e, 0x91, 0xa5, 0xdd, 0x69, 0x99, 0x55, 0x94, 0xbe, 0x97, 0xb2, 0xd2, 0xf1, 0x32, 0x1f, + 0xc6, 0x91, 0xed, 0x3c, 0x5d, 0xdf, 0x76, 0xb9, 0xc4, 0xfb, 0x68, 0x64, 0x93, 0x31, 0x26, 0xed, + 0x71, 0x38, 0xba, 0x67, 0xd5, 0x2d, 0x17, 0xb5, 0x5b, 0x6d, 0x84, 0x9b, 0x78, 0x9a, 0x89, 0xe9, + 0x7f, 0x3f, 0xd2, 0xa5, 0x0d, 0xdf, 0x0a, 0x72, 0xd3, 0x00, 0x30, 0xc6, 0xf6, 0x3a, 0x07, 0x33, + 0x59, 0x18, 0x0c, 0xc6, 0x85, 0xde, 0x0f, 0x34, 0x32, 0x34, 0x05, 0xaf, 0xb1, 0x85, 0xb5, 0x22, + 0x5e, 0x1d, 0xdf, 0x5b, 0xd2, 0x12, 0x78, 0x95, 0x5e, 0x59, 0xde, 0x2c, 0x55, 0x8c, 0xad, 0xf2, + 0xe6, 0xf2, 0x6a, 0x49, 0x53, 0x67, 0xfb, 0x53, 0xdf, 0x3b, 0xa2, 0x3d, 0xf7, 0xdc, 0x73, 0xcf, + 0x25, 0x32, 0xdf, 0x4c, 0xc0, 0xb0, 0xd8, 0x19, 0xeb, 0xef, 0x84, 0x63, 0xfc, 0x35, 0xd6, 0x41, + 0x6e, 0xe5, 0xe9, 0x7a, 0x9b, 0x84, 0x6a, 0xd3, 0xa4, 0xbd, 0xa5, 0x67, 0xe5, 0xa3, 0x8c, 0x6b, + 0x03, 0xb9, 0x8f, 0xd5, 0xdb, 0x38, 0x10, 0x9b, 0xa6, 0xab, 0xaf, 0xc0, 0x94, 0x65, 0x57, 0x1c, + 0xd7, 0xb4, 0x6a, 0x66, 0xbb, 0x56, 0xf1, 0x37, 0x10, 0x2a, 0x66, 0xb5, 0x8a, 0x1c, 0xc7, 0xa6, + 0x4b, 0x84, 0x27, 0xe5, 0xb8, 0x65, 0x6f, 0x30, 0x66, 0xbf, 0x76, 0xe6, 0x18, 0xab, 0x14, 0x11, + 0x6a, 0xb7, 0x88, 0xb8, 0x0b, 0xfa, 0x9b, 0x66, 0xab, 0x82, 0x2c, 0xb7, 0xbd, 0x4f, 0xfa, 0xb9, + 0x94, 0x91, 0x6a, 0x9a, 0xad, 0x12, 0xfe, 0xfe, 0xf6, 0xf9, 0x20, 0x68, 0xc7, 0x7f, 0x53, 0x61, + 0x30, 0xd8, 0xd3, 0xe1, 0x16, 0xb9, 0x4a, 0xea, 0xb7, 0x42, 0x32, 0xfc, 0x9e, 0x03, 0x3b, 0xc0, + 0xb9, 0x02, 0x2e, 0xec, 0xd9, 0x3e, 0xda, 0x69, 0x19, 0x14, 0x89, 0x17, 0x55, 0x9c, 0xd3, 0x88, + 0xf6, 0xef, 0x29, 0x83, 0x7d, 0xd3, 0xaf, 0x40, 0xdf, 0x13, 0x0e, 0x91, 0xdd, 0x47, 0x64, 0x9f, + 0x3c, 0x58, 0xf6, 0xd5, 0x0d, 0x22, 0xbc, 0xff, 0xea, 0x46, 0xa5, 0xbc, 0x66, 0xac, 0xe6, 0x56, + 0x0c, 0x06, 0xd7, 0xef, 0x84, 0x64, 0xc3, 0x7c, 0x76, 0x5f, 0x5c, 0x02, 0xc8, 0x50, 0x5c, 0xc3, + 0xdf, 0x09, 0xc9, 0xa7, 0x91, 0xf9, 0xa4, 0x58, 0x78, 0xc9, 0xd0, 0xdb, 0x18, 0xfa, 0xa7, 0xa1, + 0x97, 0xd8, 0x4b, 0x07, 0x60, 0x16, 0xd3, 0x7a, 0xf4, 0x14, 0x24, 0x0b, 0x6b, 0x06, 0x0e, 0x7f, + 0x0d, 0x06, 0xe9, 0x68, 0x65, 0x7d, 0xb9, 0x54, 0x28, 0x69, 0x89, 0xcc, 0x12, 0xf4, 0x51, 0x23, + 0xe0, 0xd4, 0xf0, 0xcc, 0xa0, 0xf5, 0xb0, 0xaf, 0x4c, 0x86, 0xc2, 0xa9, 0x5b, 0xab, 0xf9, 0x92, + 0xa1, 0x25, 0x82, 0xee, 0x75, 0x60, 0x30, 0xd8, 0xce, 0xfd, 0x74, 0x62, 0xea, 0xeb, 0x0a, 0x0c, + 0x04, 0xda, 0x33, 0xdc, 0x18, 0x98, 0x8d, 0x86, 0xfd, 0x74, 0xc5, 0x6c, 0xd4, 0x4d, 0x87, 0x05, + 0x05, 0x90, 0xa1, 0x1c, 0x1e, 0x89, 0xeb, 0xb4, 0x9f, 0x8a, 0xf2, 0xcf, 0x2b, 0xa0, 0xc9, 0xad, + 0x9d, 0xa4, 0xa0, 0xf2, 0x33, 0x55, 0xf0, 0x13, 0x0a, 0x0c, 0x8b, 0xfd, 0x9c, 0xa4, 0xde, 0x89, + 0x9f, 0xa9, 0x7a, 0xdf, 0x49, 0xc0, 0x90, 0xd0, 0xc5, 0xc5, 0xd5, 0xee, 0x7d, 0x30, 0x5a, 0xaf, + 0xa1, 0x66, 0xcb, 0x76, 0x91, 0x55, 0xdd, 0xaf, 0x34, 0xd0, 0x53, 0xa8, 0x91, 0xce, 0x90, 0x42, + 0x71, 0xfa, 0xe0, 0x3e, 0x71, 0x6e, 0xd9, 0xc7, 0xad, 0x60, 0x58, 0x76, 0x6c, 0xb9, 0x58, 0x5a, + 0x5d, 0x5f, 0xdb, 0x2c, 0x95, 0x0b, 0xd7, 0x2a, 0x5b, 0xe5, 0x77, 0x95, 0xd7, 0x1e, 0x2b, 0x1b, + 0x5a, 0x5d, 0x62, 0x7b, 0x1b, 0x53, 0x7d, 0x1d, 0x34, 0x59, 0x29, 0xfd, 0x18, 0x84, 0xa9, 0xa5, + 0xf5, 0xe8, 0x63, 0x30, 0x52, 0x5e, 0xab, 0x6c, 0x2c, 0x17, 0x4b, 0x95, 0xd2, 0xe5, 0xcb, 0xa5, + 0xc2, 0xe6, 0x06, 0x7d, 0x71, 0xf6, 0xb8, 0x37, 0xc5, 0xa4, 0xfe, 0xb8, 0x0a, 0x63, 0x21, 0x9a, + 0xe8, 0x39, 0xd6, 0xb3, 0xd3, 0xd7, 0x88, 0x07, 0xe3, 0x68, 0x3f, 0x87, 0xbb, 0x82, 0x75, 0xb3, + 0xed, 0xb2, 0x16, 0xff, 0x7e, 0xc0, 0x56, 0xb2, 0xdc, 0xfa, 0x76, 0x1d, 0xb5, 0xd9, 0x3e, 0x03, + 0x6d, 0xe4, 0x47, 0xfc, 0x71, 0xba, 0xd5, 0xf0, 0x00, 0xe8, 0x2d, 0xdb, 0xa9, 0xbb, 0xf5, 0xa7, + 0x50, 0xa5, 0x6e, 0xf1, 0x4d, 0x09, 0xdc, 0xd8, 0x27, 0x0d, 0x8d, 0x53, 0x96, 0x2d, 0xd7, 0xe3, + 0xb6, 0xd0, 0x8e, 0x29, 0x71, 0xe3, 0x02, 0xae, 0x1a, 0x1a, 0xa7, 0x78, 0xdc, 0x27, 0x60, 0xb0, + 0x66, 0xef, 0xe1, 0x36, 0x89, 0xf2, 0xe1, 0xf5, 0x42, 0x31, 0x06, 0xe8, 0x98, 0xc7, 0xc2, 0xfa, + 0x58, 0x7f, 0x37, 0x64, 0xd0, 0x18, 0xa0, 0x63, 0x94, 0xe5, 0x3e, 0x18, 0x31, 0x77, 0x76, 0xda, + 0x58, 0x38, 0x17, 0x44, 0x3b, 0xf3, 0x61, 0x6f, 0x98, 0x30, 0x4e, 0x5c, 0x85, 0x14, 0xb7, 0x03, + 0x5e, 0x92, 0xb1, 0x25, 0x2a, 0x2d, 0xba, 0x27, 0x95, 0x98, 0xe9, 0x37, 0x52, 0x16, 0x27, 0x9e, + 0x80, 0xc1, 0xba, 0x53, 0xf1, 0x37, 0x47, 0x13, 0xd3, 0x89, 0x99, 0x94, 0x31, 0x50, 0x77, 0xbc, + 0xdd, 0xb0, 0xcc, 0xe7, 0x12, 0x30, 0x2c, 0x6e, 0xee, 0xea, 0x45, 0x48, 0x35, 0xec, 0xaa, 0x49, + 0x42, 0x8b, 0x9e, 0x2c, 0xcc, 0x44, 0xec, 0x07, 0xcf, 0xad, 0x30, 0x7e, 0xc3, 0x43, 0x4e, 0xfc, + 0x93, 0x02, 0x29, 0x3e, 0xac, 0x8f, 0x43, 0xb2, 0x65, 0xba, 0xbb, 0x44, 0x5c, 0x6f, 0x3e, 0xa1, + 0x29, 0x06, 0xf9, 0x8e, 0xc7, 0x9d, 0x96, 0x69, 0x91, 0x10, 0x60, 0xe3, 0xf8, 0x3b, 0xf6, 0x6b, + 0x03, 0x99, 0x35, 0xd2, 0xf6, 0xdb, 0xcd, 0x26, 0xb2, 0x5c, 0x87, 0xfb, 0x95, 0x8d, 0x17, 0xd8, + 0xb0, 0xfe, 0x0e, 0x18, 0x75, 0xdb, 0x66, 0xbd, 0x21, 0xf0, 0x26, 0x09, 0xaf, 0xc6, 0x09, 0x1e, + 0x73, 0x16, 0xee, 0xe4, 0x72, 0x6b, 0xc8, 0x35, 0xab, 0xbb, 0xa8, 0xe6, 0x83, 0xfa, 0xc8, 0xce, + 0xe1, 0x31, 0xc6, 0x50, 0x64, 0x74, 0x8e, 0xcd, 0x7c, 0x4b, 0x81, 0x51, 0xfe, 0xa2, 0x52, 0xf3, + 0x8c, 0xb5, 0x0a, 0x60, 0x5a, 0x96, 0xed, 0x06, 0xcd, 0xd5, 0x19, 0xca, 0x1d, 0xb8, 0xb9, 0x9c, + 0x07, 0x32, 0x02, 0x02, 0x26, 0x9a, 0x00, 0x3e, 0xa5, 0xab, 0xd9, 0xa6, 0x60, 0x80, 0xed, 0xdc, + 0x93, 0xe3, 0x1f, 0xfa, 0x6a, 0x0b, 0x74, 0x08, 0xbf, 0xd1, 0xe8, 0x47, 0xa1, 0xf7, 0x3a, 0xda, + 0xa9, 0x5b, 0x6c, 0x3f, 0x91, 0x7e, 0xe1, 0xbb, 0x94, 0x49, 0x6f, 0x97, 0x32, 0xff, 0x38, 0x8c, + 0x55, 0xed, 0xa6, 0xac, 0x6e, 0x5e, 0x93, 0x5e, 0xaf, 0x9d, 0x47, 0x95, 0xf7, 0x82, 0xdf, 0x62, + 0x7e, 0x26, 0xa1, 0x5e, 0x59, 0xcf, 0x7f, 0x21, 0x31, 0x71, 0x85, 0xe2, 0xd6, 0xf9, 0x34, 0x0d, + 0xb4, 0xdd, 0x40, 0x55, 0xac, 0x3a, 0xfc, 0xf0, 0x14, 0x3c, 0xb8, 0x53, 0x77, 0x77, 0xf7, 0xae, + 0xcf, 0x55, 0xed, 0xe6, 0xe9, 0x1d, 0x7b, 0xc7, 0xf6, 0x8f, 0xbb, 0xf0, 0x37, 0xf2, 0x85, 0x7c, + 0x62, 0x47, 0x5e, 0xfd, 0xde, 0xe8, 0x44, 0xe4, 0xf9, 0x58, 0xb6, 0x0c, 0x63, 0x8c, 0xb9, 0x42, + 0xf6, 0xdc, 0xe9, 0xab, 0x81, 0x7e, 0xe0, 0xbe, 0x4b, 0xfa, 0xcb, 0xdf, 0x25, 0x6b, 0xb5, 0x31, + 0xca, 0xa0, 0x98, 0x46, 0x5f, 0x20, 0xb2, 0x06, 0xdc, 0x21, 0xc8, 0xa3, 0x79, 0x89, 0xda, 0x11, + 0x12, 0xbf, 0xc9, 0x24, 0x8e, 0x05, 0x24, 0x6e, 0x30, 0x68, 0xb6, 0x00, 0x43, 0x87, 0x91, 0xf5, + 0xf7, 0x4c, 0xd6, 0x20, 0x0a, 0x0a, 0xb9, 0x02, 0x23, 0x44, 0x48, 0x75, 0xcf, 0x71, 0xed, 0x26, + 0x29, 0x7a, 0x07, 0x8b, 0xf9, 0x87, 0xef, 0xd2, 0x44, 0x19, 0xc6, 0xb0, 0x82, 0x87, 0xca, 0x66, + 0x81, 0x1c, 0x33, 0xd4, 0x50, 0xb5, 0x11, 0x21, 0xe1, 0x06, 0x53, 0xc4, 0xe3, 0xcf, 0xbe, 0x07, + 0x8e, 0xe2, 0xcf, 0xa4, 0x26, 0x05, 0x35, 0x89, 0xde, 0x65, 0x4a, 0x7f, 0xeb, 0x03, 0x34, 0x17, + 0xc7, 0x3c, 0x01, 0x01, 0x9d, 0x02, 0x5e, 0xdc, 0x41, 0xae, 0x8b, 0xda, 0x4e, 0xc5, 0x6c, 0x84, + 0xa9, 0x17, 0x78, 0x4d, 0x4f, 0x7f, 0xec, 0x35, 0xd1, 0x8b, 0x57, 0x28, 0x32, 0xd7, 0x68, 0x64, + 0xb7, 0xe0, 0x58, 0x48, 0x54, 0xc4, 0x90, 0xf9, 0x71, 0x26, 0xf3, 0x68, 0x47, 0x64, 0x60, 0xb1, + 0xeb, 0xc0, 0xc7, 0x3d, 0x5f, 0xc6, 0x90, 0xf9, 0x47, 0x4c, 0xa6, 0xce, 0xb0, 0xdc, 0xa5, 0x58, + 0xe2, 0x55, 0x18, 0x7d, 0x0a, 0xb5, 0xaf, 0xdb, 0x0e, 0xdb, 0x1a, 0x89, 0x21, 0xee, 0x13, 0x4c, + 0xdc, 0x08, 0x03, 0x92, 0xbd, 0x12, 0x2c, 0xeb, 0x22, 0xa4, 0xb6, 0xcd, 0x2a, 0x8a, 0x21, 0xe2, + 0x93, 0x4c, 0xc4, 0x11, 0xcc, 0x8f, 0xa1, 0x39, 0x18, 0xdc, 0xb1, 0xd9, 0xb2, 0x14, 0x0d, 0x7f, + 0x9e, 0xc1, 0x07, 0x38, 0x86, 0x89, 0x68, 0xd9, 0xad, 0xbd, 0x06, 0x5e, 0xb3, 0xa2, 0x45, 0x7c, + 0x8a, 0x8b, 0xe0, 0x18, 0x26, 0xe2, 0x10, 0x66, 0x7d, 0x81, 0x8b, 0x70, 0x02, 0xf6, 0x7c, 0x04, + 0x06, 0x6c, 0xab, 0xb1, 0x6f, 0x5b, 0x71, 0x94, 0xf8, 0x34, 0x93, 0x00, 0x0c, 0x82, 0x05, 0x5c, + 0x82, 0xfe, 0xb8, 0x8e, 0xf8, 0xec, 0x6b, 0x3c, 0x3d, 0xb8, 0x07, 0xae, 0xc0, 0x08, 0x2f, 0x50, + 0x75, 0xdb, 0x8a, 0x21, 0xe2, 0x4f, 0x98, 0x88, 0xe1, 0x00, 0x8c, 0x4d, 0xc3, 0x45, 0x8e, 0xbb, + 0x83, 0xe2, 0x08, 0xf9, 0x1c, 0x9f, 0x06, 0x83, 0x30, 0x53, 0x5e, 0x47, 0x56, 0x75, 0x37, 0x9e, + 0x84, 0x17, 0xb9, 0x29, 0x39, 0x06, 0x8b, 0x28, 0xc0, 0x50, 0xd3, 0x6c, 0x3b, 0xbb, 0x66, 0x23, + 0x96, 0x3b, 0x3e, 0xcf, 0x64, 0x0c, 0x7a, 0x20, 0x66, 0x91, 0x3d, 0xeb, 0x30, 0x62, 0xbe, 0xc0, + 0x2d, 0x12, 0x80, 0xb1, 0xd4, 0x73, 0x5c, 0xb2, 0x01, 0x75, 0x18, 0x69, 0x5f, 0xe4, 0xa9, 0x47, + 0xb1, 0xab, 0x41, 0x89, 0x97, 0xa0, 0xdf, 0xa9, 0x3f, 0x1b, 0x4b, 0xcc, 0x9f, 0x72, 0x4f, 0x13, + 0x00, 0x06, 0x5f, 0x83, 0x3b, 0x43, 0x97, 0x89, 0x18, 0xc2, 0xfe, 0x8c, 0x09, 0x1b, 0x0f, 0x59, + 0x2a, 0x58, 0x49, 0x38, 0xac, 0xc8, 0x3f, 0xe7, 0x25, 0x01, 0x49, 0xb2, 0xd6, 0xf1, 0x8b, 0x82, + 0x63, 0x6e, 0x1f, 0xce, 0x6a, 0x7f, 0xc1, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0x36, 0x61, 0x9c, 0x49, + 0x3c, 0x9c, 0x5f, 0xbf, 0xc4, 0x0b, 0x2b, 0x45, 0x6f, 0x89, 0xde, 0xfd, 0x05, 0x98, 0xf0, 0xcc, + 0xc9, 0x3b, 0x52, 0xa7, 0xd2, 0x34, 0x5b, 0x31, 0x24, 0x7f, 0x99, 0x49, 0xe6, 0x15, 0xdf, 0x6b, + 0x69, 0x9d, 0x55, 0xb3, 0x85, 0x85, 0x3f, 0x0e, 0x69, 0x2e, 0x7c, 0xcf, 0x6a, 0xa3, 0xaa, 0xbd, + 0x63, 0xd5, 0x9f, 0x45, 0xb5, 0x18, 0xa2, 0xff, 0x52, 0x72, 0xd5, 0x56, 0x00, 0x8e, 0x25, 0x2f, + 0x83, 0xe6, 0xf5, 0x2a, 0x95, 0x7a, 0xb3, 0x65, 0xb7, 0xdd, 0x08, 0x89, 0x7f, 0xc5, 0x3d, 0xe5, + 0xe1, 0x96, 0x09, 0x2c, 0x5b, 0x82, 0x61, 0xf2, 0x35, 0x6e, 0x48, 0x7e, 0x85, 0x09, 0x1a, 0xf2, + 0x51, 0xac, 0x70, 0x54, 0xed, 0x66, 0xcb, 0x6c, 0xc7, 0xa9, 0x7f, 0x7f, 0xcd, 0x0b, 0x07, 0x83, + 0xb0, 0xc2, 0xe1, 0xee, 0xb7, 0x10, 0x5e, 0xed, 0x63, 0x48, 0xf8, 0x2a, 0x2f, 0x1c, 0x1c, 0xc3, + 0x44, 0xf0, 0x86, 0x21, 0x86, 0x88, 0xbf, 0xe1, 0x22, 0x38, 0x06, 0x8b, 0x78, 0xb7, 0xbf, 0xd0, + 0xb6, 0xd1, 0x4e, 0xdd, 0x71, 0xdb, 0xb4, 0x0f, 0x3e, 0x58, 0xd4, 0xd7, 0x5e, 0x13, 0x9b, 0x30, + 0x23, 0x00, 0xcd, 0x5e, 0x85, 0x11, 0xa9, 0xc5, 0xd0, 0xa3, 0xee, 0x2c, 0xa4, 0x7f, 0xf9, 0x75, + 0x56, 0x8c, 0xc4, 0x0e, 0x23, 0xbb, 0x82, 0xfd, 0x2e, 0xf6, 0x01, 0xd1, 0xc2, 0x3e, 0xf0, 0xba, + 0xe7, 0x7a, 0xa1, 0x0d, 0xc8, 0x5e, 0x86, 0x21, 0xa1, 0x07, 0x88, 0x16, 0xf5, 0x2b, 0x4c, 0xd4, + 0x60, 0xb0, 0x05, 0xc8, 0x2e, 0x41, 0x12, 0xaf, 0xe7, 0xd1, 0xf0, 0x5f, 0x65, 0x70, 0xc2, 0x9e, + 0x7d, 0x08, 0x52, 0x7c, 0x1d, 0x8f, 0x86, 0x7e, 0x90, 0x41, 0x3d, 0x08, 0x86, 0xf3, 0x35, 0x3c, + 0x1a, 0xfe, 0x6b, 0x1c, 0xce, 0x21, 0x18, 0x1e, 0xdf, 0x84, 0x2f, 0xfd, 0x46, 0x92, 0xd5, 0x61, + 0x6e, 0xbb, 0x4b, 0x70, 0x84, 0x2d, 0xde, 0xd1, 0xe8, 0x0f, 0xb3, 0x87, 0x73, 0x44, 0xf6, 0x3c, + 0xf4, 0xc6, 0x34, 0xf8, 0x6f, 0x32, 0x28, 0xe5, 0xcf, 0x16, 0x60, 0x20, 0xb0, 0x60, 0x47, 0xc3, + 0x7f, 0x8b, 0xc1, 0x83, 0x28, 0xac, 0x3a, 0x5b, 0xb0, 0xa3, 0x05, 0xfc, 0x36, 0x57, 0x9d, 0x21, + 0xb0, 0xd9, 0xf8, 0x5a, 0x1d, 0x8d, 0xfe, 0x1d, 0x6e, 0x75, 0x0e, 0xc9, 0x3e, 0x02, 0xfd, 0x5e, + 0xfd, 0x8d, 0xc6, 0xff, 0x2e, 0xc3, 0xfb, 0x18, 0x6c, 0x81, 0x40, 0xfd, 0x8f, 0x16, 0xf1, 0x7b, + 0xdc, 0x02, 0x01, 0x14, 0x4e, 0x23, 0x79, 0x4d, 0x8f, 0x96, 0xf4, 0x11, 0x9e, 0x46, 0xd2, 0x92, + 0x8e, 0xbd, 0x49, 0xca, 0x60, 0xb4, 0x88, 0xdf, 0xe7, 0xde, 0x24, 0xfc, 0x58, 0x0d, 0x79, 0x91, + 0x8c, 0x96, 0xf1, 0x87, 0x5c, 0x0d, 0x69, 0x8d, 0xcc, 0xae, 0x83, 0xde, 0xb9, 0x40, 0x46, 0xcb, + 0xfb, 0x28, 0x93, 0x37, 0xda, 0xb1, 0x3e, 0x66, 0x1f, 0x83, 0xf1, 0xf0, 0xc5, 0x31, 0x5a, 0xea, + 0xc7, 0x5e, 0x97, 0x5e, 0x67, 0x82, 0x6b, 0x63, 0x76, 0xd3, 0xaf, 0xb2, 0xc1, 0x85, 0x31, 0x5a, + 0xec, 0xc7, 0x5f, 0x17, 0x0b, 0x6d, 0x70, 0x5d, 0xcc, 0xe6, 0x00, 0xfc, 0x35, 0x29, 0x5a, 0xd6, + 0x27, 0x98, 0xac, 0x00, 0x08, 0xa7, 0x06, 0x5b, 0x92, 0xa2, 0xf1, 0x9f, 0xe4, 0xa9, 0xc1, 0x10, + 0x38, 0x35, 0xf8, 0x6a, 0x14, 0x8d, 0x7e, 0x9e, 0xa7, 0x06, 0x87, 0x64, 0x2f, 0x41, 0xca, 0xda, + 0x6b, 0x34, 0x70, 0x6c, 0xe9, 0x07, 0x5f, 0x23, 0x4a, 0xff, 0xc7, 0x1b, 0x0c, 0xcc, 0x01, 0xd9, + 0x25, 0xe8, 0x45, 0xcd, 0xeb, 0xa8, 0x16, 0x85, 0xfc, 0xcf, 0x37, 0x78, 0x3d, 0xc1, 0xdc, 0xd9, + 0x47, 0x00, 0xe8, 0xcb, 0x34, 0x39, 0x25, 0x8a, 0xc0, 0xfe, 0xd7, 0x1b, 0xec, 0x86, 0x82, 0x0f, + 0xf1, 0x05, 0xd0, 0xfb, 0x0e, 0x07, 0x0b, 0x78, 0x4d, 0x14, 0x40, 0x5e, 0xc0, 0x2f, 0xc2, 0x91, + 0x27, 0x1c, 0xdb, 0x72, 0xcd, 0x9d, 0x28, 0xf4, 0x7f, 0x33, 0x34, 0xe7, 0xc7, 0x06, 0x6b, 0xda, + 0x6d, 0xe4, 0x9a, 0x3b, 0x4e, 0x14, 0xf6, 0x7f, 0x18, 0xd6, 0x03, 0x60, 0x70, 0xd5, 0x74, 0xdc, + 0x38, 0xf3, 0xfe, 0x5f, 0x0e, 0xe6, 0x00, 0xac, 0x34, 0xfe, 0xfc, 0x24, 0xda, 0x8f, 0xc2, 0x7e, + 0x9f, 0x2b, 0xcd, 0xf8, 0xb3, 0x0f, 0x41, 0x3f, 0xfe, 0x48, 0x6f, 0xed, 0x44, 0x80, 0x7f, 0xc0, + 0xc0, 0x3e, 0x02, 0x3f, 0xd9, 0x71, 0x6b, 0x6e, 0x3d, 0xda, 0xd8, 0xff, 0xc7, 0x3c, 0xcd, 0xf9, + 0xb3, 0x39, 0x18, 0x70, 0xdc, 0x5a, 0x6d, 0x8f, 0x75, 0x34, 0x11, 0xf0, 0x1f, 0xbe, 0xe1, 0xbd, + 0xe4, 0x7a, 0x98, 0xfc, 0x89, 0xf0, 0xcd, 0x3a, 0xb8, 0x62, 0x5f, 0xb1, 0xe9, 0x36, 0x1d, 0xfc, + 0x4b, 0x03, 0x4e, 0x55, 0xed, 0xe6, 0x75, 0xdb, 0x39, 0x4d, 0x0b, 0x4a, 0xa0, 0x18, 0x9d, 0x76, + 0x77, 0x11, 0x5e, 0x47, 0xd8, 0x76, 0x5b, 0x12, 0x7f, 0x9e, 0x38, 0xdc, 0x1e, 0x1d, 0x39, 0x7e, + 0x2d, 0xd7, 0xb1, 0x9a, 0x65, 0xb2, 0x03, 0xae, 0x1f, 0x87, 0x3e, 0xa2, 0xf8, 0x19, 0x72, 0xca, + 0xa4, 0xe4, 0x93, 0x37, 0x5e, 0x99, 0xea, 0x31, 0xd8, 0x98, 0x47, 0x5d, 0x20, 0x5b, 0x94, 0x09, + 0x81, 0xba, 0xe0, 0x51, 0xcf, 0xd2, 0x5d, 0x4a, 0x81, 0x7a, 0xd6, 0xa3, 0x2e, 0x92, 0xfd, 0x4a, + 0x55, 0xa0, 0x2e, 0x7a, 0xd4, 0x25, 0xb2, 0x27, 0x3f, 0x24, 0x50, 0x97, 0x3c, 0xea, 0x39, 0xb2, + 0x13, 0x9f, 0x14, 0xa8, 0xe7, 0x3c, 0xea, 0x79, 0xb2, 0x09, 0x3f, 0x2a, 0x50, 0xcf, 0x7b, 0xd4, + 0x0b, 0x64, 0xf3, 0x5d, 0x17, 0xa8, 0x17, 0x3c, 0xea, 0x45, 0x72, 0xa3, 0xe4, 0x88, 0x40, 0xbd, + 0xa8, 0x4f, 0xc2, 0x11, 0x3a, 0xf3, 0x79, 0x72, 0x52, 0x3b, 0xc2, 0xc8, 0x7c, 0xd0, 0xa7, 0x9f, + 0x21, 0xb7, 0x47, 0xfa, 0x44, 0xfa, 0x19, 0x9f, 0xbe, 0x40, 0xee, 0x51, 0x6b, 0x22, 0x7d, 0xc1, + 0xa7, 0x9f, 0x4d, 0x0f, 0x91, 0x1b, 0x34, 0x02, 0xfd, 0xac, 0x4f, 0x5f, 0x4c, 0x0f, 0xe3, 0xd8, + 0x15, 0xe9, 0x8b, 0x3e, 0x7d, 0x29, 0x3d, 0x32, 0xad, 0xcc, 0x0c, 0x8a, 0xf4, 0xa5, 0xcc, 0xfb, + 0x89, 0x7b, 0x2d, 0xdf, 0xbd, 0xe3, 0xa2, 0x7b, 0x3d, 0xc7, 0x8e, 0x8b, 0x8e, 0xf5, 0x5c, 0x3a, + 0x2e, 0xba, 0xd4, 0x73, 0xe6, 0xb8, 0xe8, 0x4c, 0xcf, 0x8d, 0xe3, 0xa2, 0x1b, 0x3d, 0x07, 0x8e, + 0x8b, 0x0e, 0xf4, 0x5c, 0x37, 0x2e, 0xba, 0xce, 0x73, 0xda, 0xb8, 0xe8, 0x34, 0xcf, 0x5d, 0xe3, + 0xa2, 0xbb, 0x3c, 0x47, 0xa5, 0x25, 0x47, 0xf9, 0x2e, 0x4a, 0x4b, 0x2e, 0xf2, 0x9d, 0x93, 0x96, + 0x9c, 0xe3, 0xbb, 0x25, 0x2d, 0xb9, 0xc5, 0x77, 0x48, 0x5a, 0x72, 0x88, 0xef, 0x8a, 0xb4, 0xe4, + 0x0a, 0xdf, 0x09, 0x2c, 0xc7, 0x0c, 0xd4, 0x0a, 0xc9, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, + 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, + 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xe0, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, + 0x35, 0x22, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0xed, 0x9a, 0x63, 0xbe, 0x7b, 0xc7, + 0x45, 0xf7, 0x86, 0xe6, 0x98, 0xda, 0x25, 0xc7, 0xd4, 0x2e, 0x39, 0xa6, 0x76, 0xc9, 0x31, 0xb5, + 0x4b, 0x8e, 0xa9, 0x5d, 0x72, 0x4c, 0xed, 0x92, 0x63, 0x6a, 0x97, 0x1c, 0x53, 0xbb, 0xe5, 0x98, + 0xda, 0x35, 0xc7, 0xd4, 0xae, 0x39, 0xa6, 0x76, 0xcd, 0x31, 0xb5, 0x6b, 0x8e, 0xa9, 0x5d, 0x73, + 0x4c, 0x0d, 0xe6, 0xd8, 0xdf, 0xaa, 0xa0, 0xd3, 0x1c, 0x5b, 0x27, 0x77, 0x7d, 0x98, 0x2b, 0x26, + 0xa5, 0x4c, 0xeb, 0xc3, 0xae, 0xd3, 0x7c, 0x97, 0x4c, 0x4a, 0xb9, 0x26, 0xd2, 0x17, 0x3c, 0x3a, + 0xcf, 0x36, 0x91, 0x7e, 0xd6, 0xa3, 0xf3, 0x7c, 0x13, 0xe9, 0x8b, 0x1e, 0x9d, 0x67, 0x9c, 0x48, + 0x5f, 0xf2, 0xe8, 0x3c, 0xe7, 0x44, 0xfa, 0x39, 0x8f, 0xce, 0xb3, 0x4e, 0xa4, 0x9f, 0xf7, 0xe8, + 0x3c, 0xef, 0x44, 0xfa, 0x05, 0x8f, 0xce, 0x33, 0x4f, 0xa4, 0x5f, 0xd4, 0xa7, 0xe5, 0xdc, 0xe3, + 0x0c, 0x9e, 0x6b, 0xa7, 0xe5, 0xec, 0x93, 0x38, 0xce, 0xf8, 0x1c, 0x3c, 0xff, 0x24, 0x8e, 0x05, + 0x9f, 0x83, 0x67, 0xa0, 0xc4, 0x71, 0x36, 0xf3, 0x21, 0xe2, 0x3e, 0x4b, 0x76, 0xdf, 0x84, 0xe4, + 0xbe, 0x44, 0xc0, 0x75, 0x13, 0x92, 0xeb, 0x12, 0x01, 0xb7, 0x4d, 0x48, 0x6e, 0x4b, 0x04, 0x5c, + 0x36, 0x21, 0xb9, 0x2c, 0x11, 0x70, 0xd7, 0x84, 0xe4, 0xae, 0x44, 0xc0, 0x55, 0x13, 0x92, 0xab, + 0x12, 0x01, 0x37, 0x4d, 0x48, 0x6e, 0x4a, 0x04, 0x5c, 0x34, 0x21, 0xb9, 0x28, 0x11, 0x70, 0xcf, + 0x84, 0xe4, 0x9e, 0x44, 0xc0, 0x35, 0xc7, 0x65, 0xd7, 0x24, 0x82, 0x6e, 0x39, 0x2e, 0xbb, 0x25, + 0x11, 0x74, 0xc9, 0x71, 0xd9, 0x25, 0x89, 0xa0, 0x3b, 0x8e, 0xcb, 0xee, 0x48, 0x04, 0x5d, 0xf1, + 0x93, 0x04, 0xef, 0x08, 0x37, 0xdc, 0xf6, 0x5e, 0xd5, 0xbd, 0xad, 0x8e, 0x70, 0x5e, 0x68, 0x1f, + 0x06, 0x16, 0xf4, 0x39, 0xd2, 0xb0, 0x06, 0x3b, 0x4e, 0x69, 0x05, 0x9b, 0x17, 0x1a, 0x8b, 0x00, + 0xc2, 0x0a, 0x47, 0x2c, 0xde, 0x56, 0x6f, 0x38, 0x2f, 0xb4, 0x19, 0xd1, 0xfa, 0x5d, 0x78, 0xdb, + 0x3b, 0xb6, 0x97, 0x12, 0xbc, 0x63, 0x63, 0xe6, 0x3f, 0x6c, 0xc7, 0x36, 0x1b, 0x6d, 0x72, 0xcf, + 0xd8, 0xb3, 0xd1, 0xc6, 0xee, 0x58, 0x75, 0xe2, 0x76, 0x70, 0xb3, 0xd1, 0xa6, 0xf5, 0x8c, 0xfa, + 0xd6, 0xf6, 0x5b, 0x2c, 0x82, 0x0d, 0xd4, 0x0a, 0x89, 0xe0, 0xc3, 0xf6, 0x5b, 0xf3, 0x42, 0x29, + 0x39, 0x6c, 0x04, 0xab, 0x87, 0x8e, 0xe0, 0xc3, 0x76, 0x5e, 0xf3, 0x42, 0x79, 0x39, 0x74, 0x04, + 0xbf, 0x0d, 0xfd, 0x10, 0x8b, 0x60, 0xdf, 0xfc, 0x87, 0xed, 0x87, 0x66, 0xa3, 0x4d, 0x1e, 0x1a, + 0xc1, 0xea, 0x21, 0x22, 0x38, 0x4e, 0x7f, 0x34, 0x1b, 0x6d, 0xda, 0xf0, 0x08, 0xbe, 0xed, 0x6e, + 0xe6, 0x53, 0x0a, 0x8c, 0x96, 0xeb, 0xb5, 0x52, 0xf3, 0x3a, 0xaa, 0xd5, 0x50, 0x8d, 0xd9, 0x71, + 0x5e, 0xa8, 0x04, 0x5d, 0x5c, 0xfd, 0xf2, 0x2b, 0x53, 0xbe, 0x85, 0x97, 0x20, 0x45, 0x6d, 0x3a, + 0x3f, 0x9f, 0xbe, 0xa1, 0x44, 0x54, 0x38, 0x8f, 0x55, 0x3f, 0xc1, 0x61, 0x67, 0xe6, 0xd3, 0xff, + 0xac, 0x04, 0xaa, 0x9c, 0x37, 0x9c, 0xf9, 0x08, 0xd1, 0xd0, 0xba, 0x6d, 0x0d, 0x4f, 0xc7, 0xd2, + 0x30, 0xa0, 0xdb, 0x5d, 0x1d, 0xba, 0x05, 0xb4, 0xda, 0x83, 0x91, 0x72, 0xbd, 0x56, 0x26, 0x7f, + 0xc1, 0x1b, 0x47, 0x25, 0xca, 0x23, 0xd5, 0x83, 0x79, 0x21, 0x2c, 0x83, 0x08, 0x2f, 0xa4, 0xc5, + 0x1a, 0x91, 0xa9, 0xe3, 0xc7, 0x5a, 0xc2, 0x63, 0x67, 0xbb, 0x3d, 0xd6, 0xaf, 0xec, 0xde, 0x03, + 0x67, 0xbb, 0x3d, 0xd0, 0xcf, 0x21, 0xef, 0x51, 0xcf, 0xf0, 0xc5, 0x99, 0x5e, 0xba, 0xd1, 0x8f, + 0x43, 0x62, 0x99, 0x5e, 0x08, 0x1e, 0xcc, 0x0f, 0x62, 0xa5, 0xbe, 0xfd, 0xca, 0x54, 0x72, 0x6b, + 0xaf, 0x5e, 0x33, 0x12, 0xcb, 0x35, 0xfd, 0x2a, 0xf4, 0xbe, 0x87, 0xfd, 0x1d, 0x1c, 0x66, 0x58, + 0x64, 0x0c, 0x0f, 0x74, 0xdd, 0x23, 0xc2, 0x0f, 0x3e, 0x4d, 0xb7, 0x13, 0xe7, 0xb6, 0xea, 0x96, + 0x7b, 0x66, 0xe1, 0x82, 0x41, 0x45, 0x64, 0x7e, 0x11, 0x80, 0x3e, 0xb3, 0x68, 0x3a, 0xbb, 0x7a, + 0x99, 0x4b, 0xa6, 0x8f, 0xbe, 0xf0, 0xed, 0x57, 0xa6, 0x16, 0xe3, 0x48, 0x7d, 0xb0, 0x66, 0x3a, + 0xbb, 0x0f, 0xba, 0xfb, 0x2d, 0x34, 0x97, 0xdf, 0x77, 0x91, 0xc3, 0xa5, 0xb7, 0xf8, 0xaa, 0xc7, + 0xe6, 0x95, 0x0e, 0xcc, 0x2b, 0x25, 0xcc, 0xe9, 0xb2, 0x38, 0xa7, 0xf9, 0x37, 0x3b, 0x9f, 0x67, + 0xf8, 0x22, 0x21, 0x59, 0x52, 0x8d, 0xb2, 0xa4, 0x7a, 0xbb, 0x96, 0x6c, 0xf1, 0xfa, 0x28, 0xcd, + 0x55, 0x3d, 0x68, 0xae, 0xea, 0xed, 0xcc, 0xf5, 0x47, 0x34, 0x5b, 0xbd, 0x7c, 0xda, 0xb2, 0xe8, + 0x65, 0xc4, 0x9f, 0xaf, 0xbd, 0xa0, 0xb7, 0xb4, 0x0b, 0xc8, 0x26, 0x6f, 0xbc, 0x30, 0xa5, 0x64, + 0x3e, 0x95, 0xe0, 0x33, 0xa7, 0x89, 0xf4, 0xe6, 0x66, 0xfe, 0xf3, 0xd2, 0x53, 0xbd, 0x1d, 0x16, + 0x7a, 0x5e, 0x81, 0xf1, 0x8e, 0x4a, 0x4e, 0xcd, 0xf4, 0xd6, 0x96, 0x73, 0xeb, 0xb0, 0xe5, 0x9c, + 0x29, 0xf8, 0x15, 0x05, 0x8e, 0x4a, 0xe5, 0x95, 0xaa, 0x77, 0x5a, 0x52, 0xef, 0x58, 0xe7, 0x93, + 0x08, 0x63, 0x40, 0xbb, 0xa0, 0x7b, 0x25, 0x40, 0x40, 0xb2, 0xe7, 0xf7, 0x45, 0xc9, 0xef, 0xc7, + 0x3d, 0x40, 0x88, 0xb9, 0x78, 0x04, 0x30, 0xb5, 0x6d, 0x48, 0x6e, 0xb6, 0x11, 0xd2, 0x27, 0x21, + 0xb1, 0xd6, 0x66, 0x1a, 0x0e, 0x53, 0xfc, 0x5a, 0x3b, 0xdf, 0x36, 0xad, 0xea, 0xae, 0x91, 0x58, + 0x6b, 0xeb, 0x27, 0x40, 0xcd, 0xb1, 0x5f, 0x1a, 0x18, 0x58, 0x18, 0xa1, 0x0c, 0x39, 0xab, 0xc6, + 0x38, 0x30, 0x4d, 0x9f, 0x84, 0xe4, 0x0a, 0x32, 0xb7, 0x99, 0x12, 0x40, 0x79, 0xf0, 0x88, 0x41, + 0xc6, 0xd9, 0x03, 0x1f, 0x87, 0x14, 0x17, 0xac, 0x9f, 0xc4, 0x88, 0x6d, 0x97, 0x3d, 0x96, 0x21, + 0xb0, 0x3a, 0x6c, 0xe5, 0x22, 0x54, 0xfd, 0x14, 0xf4, 0x1a, 0xf5, 0x9d, 0x5d, 0x97, 0x3d, 0xbc, + 0x93, 0x8d, 0x92, 0x33, 0xd7, 0xa0, 0xdf, 0xd3, 0xe8, 0x2d, 0x16, 0x5d, 0xa4, 0x53, 0xd3, 0x27, + 0x82, 0xeb, 0x09, 0xdf, 0xb7, 0xa4, 0x43, 0xfa, 0x34, 0xa4, 0x36, 0xdc, 0xb6, 0x5f, 0xf4, 0x79, + 0x47, 0xea, 0x8d, 0x66, 0xde, 0xaf, 0x40, 0xaa, 0x88, 0x50, 0x8b, 0x18, 0xfc, 0x5e, 0x48, 0x16, + 0xed, 0xa7, 0x2d, 0xa6, 0xe0, 0x28, 0xb3, 0x28, 0x26, 0x33, 0x9b, 0x12, 0xb2, 0x7e, 0x6f, 0xd0, + 0xee, 0x63, 0x9e, 0xdd, 0x03, 0x7c, 0xc4, 0xf6, 0x19, 0xc1, 0xf6, 0xcc, 0x81, 0x98, 0xa9, 0xc3, + 0xfe, 0xe7, 0x61, 0x20, 0xf0, 0x14, 0x7d, 0x86, 0xa9, 0x91, 0x90, 0x81, 0x41, 0x5b, 0x61, 0x8e, + 0x0c, 0x82, 0x21, 0xe1, 0xc1, 0x18, 0x1a, 0x30, 0x71, 0x17, 0x28, 0x31, 0xf3, 0xac, 0x68, 0xe6, + 0x70, 0x56, 0x66, 0xea, 0x79, 0x6a, 0x23, 0x62, 0xee, 0x93, 0x34, 0x38, 0xbb, 0x3b, 0x11, 0x7f, + 0xce, 0xf4, 0x82, 0x5a, 0xae, 0x37, 0x32, 0x0f, 0x01, 0xd0, 0x94, 0x2f, 0x59, 0x7b, 0x4d, 0x29, + 0xeb, 0x86, 0xb9, 0x81, 0x37, 0x77, 0xd1, 0x26, 0x72, 0x08, 0x8b, 0xd8, 0x4f, 0xe1, 0x02, 0x03, + 0x34, 0xc5, 0x08, 0xfe, 0xfe, 0x48, 0x7c, 0x68, 0x27, 0x86, 0x59, 0xd3, 0x94, 0xf5, 0x1a, 0x72, + 0x73, 0x96, 0xed, 0xee, 0xa2, 0xb6, 0x84, 0x58, 0xd0, 0xcf, 0x0a, 0x09, 0x3b, 0xbc, 0x70, 0x97, + 0x87, 0xe8, 0x0a, 0x3a, 0x9b, 0xf9, 0x12, 0x51, 0x10, 0xb7, 0x02, 0x1d, 0x13, 0x54, 0x63, 0x4c, + 0x50, 0x3f, 0x27, 0xf4, 0x6f, 0x07, 0xa8, 0x29, 0xbd, 0x5a, 0x5e, 0x14, 0xde, 0x73, 0x0e, 0x56, + 0x56, 0x7c, 0xc7, 0xe4, 0x36, 0xe5, 0x2a, 0xdf, 0x1f, 0xa9, 0x72, 0x97, 0xee, 0xf6, 0xb0, 0x36, + 0x55, 0xe3, 0xda, 0xf4, 0xeb, 0x5e, 0xc7, 0x41, 0x7f, 0xb3, 0x81, 0xfc, 0x44, 0x88, 0xfe, 0x40, + 0xa4, 0xef, 0xb3, 0x4a, 0xc1, 0x53, 0x75, 0x31, 0xae, 0xfb, 0xb3, 0x89, 0x7c, 0xde, 0x53, 0xf7, + 0xfc, 0x21, 0x42, 0x20, 0x9b, 0x28, 0x14, 0xbc, 0xb2, 0x9d, 0xfa, 0xd0, 0x0b, 0x53, 0xca, 0x8b, + 0x2f, 0x4c, 0xf5, 0x64, 0x3e, 0xaf, 0xc0, 0x28, 0xe3, 0x0c, 0x04, 0xee, 0x83, 0x92, 0xf2, 0x77, + 0xf0, 0x9a, 0x11, 0x66, 0x81, 0x9f, 0x5a, 0xf0, 0x7e, 0x53, 0x81, 0x74, 0x87, 0xae, 0xdc, 0xde, + 0xf3, 0xb1, 0x54, 0xce, 0x2a, 0xa5, 0x9f, 0xbd, 0xcd, 0xaf, 0x41, 0xef, 0x66, 0xbd, 0x89, 0xda, + 0x78, 0x25, 0xc0, 0x1f, 0xa8, 0xca, 0xfc, 0x30, 0x87, 0x0e, 0x71, 0x1a, 0x55, 0x4e, 0xa0, 0x2d, + 0xe8, 0x69, 0x48, 0x16, 0x4d, 0xd7, 0x24, 0x1a, 0x0c, 0x7a, 0xf5, 0xd5, 0x74, 0xcd, 0xcc, 0x59, + 0x18, 0x5c, 0xdd, 0x27, 0x37, 0x66, 0x6a, 0xe4, 0x36, 0x88, 0xd8, 0xfd, 0xf1, 0x7e, 0xf5, 0xcc, + 0x6c, 0x6f, 0xaa, 0xa6, 0xdd, 0x50, 0xb2, 0x49, 0xa2, 0xcf, 0x53, 0x30, 0xbc, 0x86, 0xd5, 0x26, + 0x38, 0x01, 0x46, 0x9f, 0xae, 0x7a, 0x93, 0x97, 0x9a, 0x32, 0xd5, 0x6f, 0xca, 0xa6, 0x41, 0x59, + 0x15, 0x5b, 0xa7, 0xa0, 0x1e, 0x86, 0xb2, 0x3a, 0x9b, 0x4c, 0x0d, 0x6b, 0xa3, 0xb3, 0xc9, 0x14, + 0x68, 0x43, 0xec, 0xb9, 0xff, 0xa8, 0x82, 0x46, 0x5b, 0x9d, 0x22, 0xda, 0xae, 0x5b, 0x75, 0xb7, + 0xb3, 0x5f, 0xf5, 0x34, 0xd6, 0x1f, 0x81, 0x7e, 0x6c, 0xd2, 0xcb, 0xec, 0x97, 0xb6, 0xb0, 0xe9, + 0x4f, 0xb0, 0x16, 0x45, 0x12, 0xc1, 0x06, 0x48, 0xe8, 0xf8, 0x18, 0xfd, 0x32, 0xa8, 0xe5, 0xf2, + 0x2a, 0x5b, 0xdc, 0x16, 0x0f, 0x84, 0xb2, 0x0b, 0x37, 0xec, 0x1b, 0x1b, 0x73, 0x76, 0x0c, 0x2c, + 0x40, 0x5f, 0x84, 0x44, 0x79, 0x95, 0x35, 0xbc, 0x27, 0xe3, 0x88, 0x31, 0x12, 0xe5, 0xd5, 0x89, + 0xbf, 0x53, 0x60, 0x48, 0x18, 0xd5, 0x33, 0x30, 0x48, 0x07, 0x02, 0xd3, 0xed, 0x33, 0x84, 0x31, + 0xae, 0x73, 0xe2, 0x36, 0x75, 0x9e, 0xc8, 0xc1, 0x88, 0x34, 0xae, 0xcf, 0x81, 0x1e, 0x1c, 0x62, + 0x4a, 0xd0, 0x5f, 0x29, 0x0a, 0xa1, 0x64, 0xee, 0x06, 0xf0, 0xed, 0xea, 0xfd, 0xb8, 0x4e, 0xb9, + 0xb4, 0xb1, 0x59, 0x2a, 0x6a, 0x4a, 0xe6, 0xab, 0x0a, 0x0c, 0xb0, 0xb6, 0xb5, 0x6a, 0xb7, 0x90, + 0x9e, 0x07, 0x25, 0xc7, 0xe2, 0xe1, 0xcd, 0xe9, 0xad, 0xe4, 0xf4, 0xd3, 0xa0, 0xe4, 0xe3, 0xbb, + 0x5a, 0xc9, 0xeb, 0x0b, 0xa0, 0x14, 0x98, 0x83, 0xe3, 0x79, 0x46, 0x29, 0x64, 0x7e, 0xa0, 0xc2, + 0x58, 0xb0, 0x8d, 0xe6, 0xf5, 0xe4, 0x84, 0xf8, 0xde, 0x94, 0xed, 0x3f, 0xb3, 0x70, 0x76, 0x71, + 0x0e, 0xff, 0xe3, 0x85, 0xe4, 0x09, 0xf1, 0x15, 0xaa, 0x93, 0xa5, 0xe3, 0x9a, 0x48, 0x36, 0x19, + 0xa0, 0x76, 0x5c, 0x13, 0x11, 0xa8, 0x1d, 0xd7, 0x44, 0x04, 0x6a, 0xc7, 0x35, 0x11, 0x81, 0xda, + 0x71, 0x14, 0x20, 0x50, 0x3b, 0xae, 0x89, 0x08, 0xd4, 0x8e, 0x6b, 0x22, 0x02, 0xb5, 0xf3, 0x9a, + 0x08, 0x23, 0x77, 0xbd, 0x26, 0x22, 0xd2, 0x3b, 0xaf, 0x89, 0x88, 0xf4, 0xce, 0x6b, 0x22, 0xd9, + 0xa4, 0xdb, 0xde, 0x43, 0xdd, 0x0f, 0x1d, 0x44, 0xfc, 0x41, 0xef, 0x80, 0x7e, 0x01, 0x5e, 0x83, + 0x11, 0xba, 0x1f, 0x51, 0xb0, 0x2d, 0xd7, 0xac, 0x5b, 0xa8, 0xad, 0xbf, 0x13, 0x06, 0xe9, 0x10, + 0x7d, 0xcb, 0x09, 0x7b, 0x0b, 0xa4, 0x74, 0x56, 0x6e, 0x05, 0xee, 0xcc, 0x4f, 0x92, 0x30, 0x4e, + 0x07, 0xca, 0x66, 0x13, 0x09, 0x97, 0x8c, 0x4e, 0x49, 0x47, 0x4a, 0xc3, 0x18, 0x7e, 0xeb, 0x95, + 0x29, 0x3a, 0x9a, 0xf3, 0x82, 0xe9, 0x94, 0x74, 0xb8, 0x24, 0xf2, 0xf9, 0xeb, 0xcf, 0x29, 0xe9, + 0xe2, 0x91, 0xc8, 0xe7, 0x2d, 0x37, 0x1e, 0x1f, 0xbf, 0x82, 0x24, 0xf2, 0x15, 0xbd, 0x28, 0x3b, + 0x25, 0x5d, 0x46, 0x12, 0xf9, 0x4a, 0x5e, 0xbc, 0x9d, 0x92, 0x8e, 0x9e, 0x44, 0xbe, 0xcb, 0x5e, + 0xe4, 0x9d, 0x92, 0x0e, 0xa1, 0x44, 0xbe, 0x2b, 0x5e, 0x0c, 0x9e, 0x92, 0xae, 0x2a, 0x89, 0x7c, + 0x8f, 0x7a, 0xd1, 0x78, 0x4a, 0xba, 0xb4, 0x24, 0xf2, 0x2d, 0x7b, 0x71, 0x39, 0x23, 0x5f, 0x5f, + 0x12, 0x19, 0xaf, 0xfa, 0x11, 0x3a, 0x23, 0x5f, 0x64, 0x12, 0x39, 0xdf, 0xe5, 0xc7, 0xea, 0x8c, + 0x7c, 0xa5, 0x49, 0xe4, 0x5c, 0xf1, 0xa3, 0x76, 0x46, 0x3e, 0x2a, 0x13, 0x39, 0x57, 0xfd, 0xf8, + 0x9d, 0x91, 0x0f, 0xcd, 0x44, 0xce, 0xb2, 0x1f, 0xc9, 0x33, 0xf2, 0xf1, 0x99, 0xc8, 0xb9, 0xe6, + 0xef, 0xa1, 0x7f, 0x43, 0x0a, 0xbf, 0xc0, 0x25, 0xa8, 0x8c, 0x14, 0x7e, 0x10, 0x12, 0x7a, 0x19, + 0x29, 0xf4, 0x20, 0x24, 0xec, 0x32, 0x52, 0xd8, 0x41, 0x48, 0xc8, 0x65, 0xa4, 0x90, 0x83, 0x90, + 0x70, 0xcb, 0x48, 0xe1, 0x06, 0x21, 0xa1, 0x96, 0x91, 0x42, 0x0d, 0x42, 0xc2, 0x2c, 0x23, 0x85, + 0x19, 0x84, 0x84, 0x58, 0x46, 0x0a, 0x31, 0x08, 0x09, 0xaf, 0x8c, 0x14, 0x5e, 0x10, 0x12, 0x5a, + 0x27, 0xe5, 0xd0, 0x82, 0xb0, 0xb0, 0x3a, 0x29, 0x87, 0x15, 0x84, 0x85, 0xd4, 0x3d, 0x72, 0x48, + 0xf5, 0xdf, 0x7a, 0x65, 0xaa, 0x17, 0x0f, 0x05, 0xa2, 0xe9, 0xa4, 0x1c, 0x4d, 0x10, 0x16, 0x49, + 0x27, 0xe5, 0x48, 0x82, 0xb0, 0x28, 0x3a, 0x29, 0x47, 0x11, 0x84, 0x45, 0xd0, 0x4b, 0x72, 0x04, + 0xf9, 0x57, 0x7c, 0x32, 0xd2, 0x89, 0x62, 0x54, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, 0x41, + 0x6a, 0x8c, 0x08, 0x52, 0x63, 0x44, 0x90, 0x1a, 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, + 0x20, 0x35, 0x4e, 0x04, 0xa9, 0xb1, 0x22, 0x48, 0xed, 0x16, 0x41, 0x27, 0xe5, 0x0b, 0x0f, 0x10, + 0x56, 0x90, 0x4e, 0xca, 0x27, 0x9f, 0xd1, 0x21, 0xa4, 0xc6, 0x0a, 0x21, 0xb5, 0x5b, 0x08, 0x7d, + 0x43, 0x85, 0x31, 0x21, 0x84, 0xd8, 0xf1, 0xd0, 0x5b, 0x55, 0x81, 0xce, 0xc5, 0xb8, 0x5f, 0x11, + 0x16, 0x53, 0xe7, 0x62, 0x9c, 0x51, 0x1f, 0x14, 0x67, 0x9d, 0x55, 0xa8, 0x14, 0xa3, 0x0a, 0x5d, + 0xf6, 0x62, 0xe8, 0x5c, 0x8c, 0x7b, 0x17, 0x9d, 0xb1, 0x77, 0xe1, 0xa0, 0x22, 0xf0, 0x68, 0xac, + 0x22, 0xb0, 0x1c, 0xab, 0x08, 0x5c, 0xf5, 0x3d, 0xf8, 0xc1, 0x04, 0x1c, 0xf5, 0x3d, 0x48, 0x3f, + 0x91, 0x5f, 0x44, 0xca, 0x04, 0x4e, 0xa8, 0x74, 0x7e, 0x6a, 0x13, 0x70, 0x63, 0x62, 0xb9, 0xa6, + 0xaf, 0x8b, 0x67, 0x55, 0xd9, 0xc3, 0x9e, 0xdf, 0x04, 0x3c, 0xce, 0xf6, 0x42, 0x4f, 0x82, 0xba, + 0x5c, 0x73, 0x48, 0xb5, 0x08, 0x7b, 0x6c, 0xc1, 0xc0, 0x64, 0xdd, 0x80, 0x3e, 0xc2, 0xee, 0x10, + 0xf7, 0xde, 0xce, 0x83, 0x8b, 0x06, 0x93, 0x94, 0x79, 0x49, 0x81, 0x69, 0x21, 0x94, 0xdf, 0x9a, + 0x13, 0x83, 0x4b, 0xb1, 0x4e, 0x0c, 0x84, 0x04, 0xf1, 0x4f, 0x0f, 0xee, 0xeb, 0x3c, 0xa8, 0x0e, + 0x66, 0x89, 0x7c, 0x92, 0xf0, 0x4b, 0x30, 0xec, 0xcf, 0x80, 0xbc, 0xb2, 0x2d, 0x45, 0x6f, 0x66, + 0x86, 0xa5, 0xe6, 0x92, 0xb4, 0x89, 0x76, 0x20, 0xcc, 0xcb, 0xd6, 0x4c, 0x16, 0x46, 0xca, 0xe2, + 0x9f, 0xee, 0x44, 0xed, 0x45, 0xa4, 0x70, 0x6b, 0x7e, 0xe3, 0xd3, 0x53, 0x3d, 0x99, 0x07, 0x60, + 0x30, 0xf8, 0xd7, 0x39, 0x12, 0xb0, 0x9f, 0x03, 0xb3, 0xc9, 0x97, 0x31, 0xf7, 0x1f, 0x28, 0x70, + 0x47, 0x90, 0xfd, 0xb1, 0xba, 0xbb, 0xbb, 0x6c, 0xe1, 0x9e, 0xfe, 0x21, 0x48, 0x21, 0xe6, 0x38, + 0xf6, 0xe3, 0x26, 0xec, 0x35, 0x32, 0x94, 0x7d, 0x8e, 0xfc, 0x6b, 0x78, 0x10, 0x69, 0x13, 0x84, + 0x3f, 0x76, 0x61, 0xe2, 0x5e, 0xe8, 0xa5, 0xf2, 0x45, 0xbd, 0x86, 0x24, 0xbd, 0x3e, 0x1b, 0xa2, + 0x17, 0x89, 0x23, 0xfd, 0xaa, 0xa0, 0x57, 0xe0, 0x6d, 0x35, 0x94, 0x7d, 0x8e, 0x07, 0x5f, 0x3e, + 0x85, 0xfb, 0x3f, 0x12, 0x51, 0xd1, 0x4a, 0xce, 0x40, 0xaa, 0x24, 0xf3, 0x84, 0xeb, 0x59, 0x84, + 0x64, 0xd9, 0xae, 0x91, 0x9f, 0x5d, 0x21, 0x3f, 0x8f, 0xcb, 0x8c, 0xcc, 0x7e, 0x2b, 0xf7, 0x14, + 0xa4, 0x0a, 0xbb, 0xf5, 0x46, 0xad, 0x8d, 0x2c, 0x76, 0x64, 0xcf, 0x76, 0xd0, 0x31, 0xc6, 0xf0, + 0x68, 0x99, 0x02, 0x8c, 0x96, 0x6d, 0x2b, 0xbf, 0xef, 0x06, 0xeb, 0xc6, 0x9c, 0x94, 0x22, 0xec, + 0xc8, 0x87, 0xfc, 0xbd, 0x07, 0x66, 0xc8, 0xf7, 0x7e, 0xfb, 0x95, 0x29, 0x65, 0xd3, 0xdb, 0x3e, + 0x5f, 0x85, 0x63, 0x2c, 0x7d, 0x3a, 0x44, 0x2d, 0x44, 0x89, 0xea, 0x67, 0xc7, 0xd4, 0x01, 0x71, + 0xcb, 0x58, 0x9c, 0x15, 0x2a, 0xee, 0xcd, 0x69, 0x86, 0x9b, 0xa2, 0x03, 0x35, 0x53, 0x0f, 0xa5, + 0x59, 0xa8, 0xb8, 0xb9, 0x28, 0x71, 0x92, 0x66, 0xf7, 0x40, 0xbf, 0x47, 0x0b, 0x44, 0x43, 0x30, + 0x53, 0x16, 0x66, 0x33, 0x30, 0x10, 0x48, 0x58, 0xbd, 0x17, 0x94, 0x9c, 0xd6, 0x83, 0xff, 0xcb, + 0x6b, 0x0a, 0xfe, 0xaf, 0xa0, 0x25, 0x66, 0xef, 0x85, 0x11, 0x69, 0xfb, 0x12, 0x53, 0x8a, 0x1a, + 0xe0, 0xff, 0x4a, 0xda, 0xc0, 0x44, 0xf2, 0x43, 0x7f, 0x3c, 0xd9, 0x33, 0x7b, 0x09, 0xf4, 0xce, + 0x8d, 0x4e, 0xbd, 0x0f, 0x12, 0x39, 0x2c, 0xf2, 0x18, 0x24, 0xf2, 0x79, 0x4d, 0x99, 0x18, 0xf9, + 0xf5, 0x4f, 0x4e, 0x0f, 0xe4, 0xc9, 0x9f, 0x1e, 0x5f, 0x43, 0x6e, 0x3e, 0xcf, 0xc0, 0x0f, 0xc3, + 0x1d, 0xa1, 0x1b, 0xa5, 0x18, 0x5f, 0x28, 0x50, 0x7c, 0xb1, 0xd8, 0x81, 0x2f, 0x16, 0x09, 0x5e, + 0xc9, 0xf2, 0x03, 0xe7, 0x9c, 0x1e, 0xb2, 0xc9, 0x98, 0xae, 0x05, 0x0e, 0xb8, 0x73, 0xd9, 0x87, + 0x19, 0x6f, 0x3e, 0x94, 0x17, 0x45, 0x1c, 0x58, 0xe7, 0xb3, 0x05, 0x86, 0x2f, 0x84, 0xe2, 0xb7, + 0xa5, 0x53, 0x55, 0x71, 0x85, 0x60, 0x42, 0x0a, 0x9e, 0xc2, 0xc5, 0x50, 0x21, 0xbb, 0x81, 0xbb, + 0xee, 0x45, 0x4f, 0xe1, 0x52, 0x28, 0x6f, 0x3d, 0xe2, 0xce, 0x57, 0x29, 0x7b, 0x9a, 0x2d, 0xf2, + 0xb9, 0x33, 0xfa, 0x1d, 0x3c, 0x47, 0x85, 0x0a, 0xcc, 0x0c, 0xc4, 0xb9, 0xb2, 0x05, 0x06, 0xc8, + 0x77, 0x05, 0x74, 0xb7, 0x12, 0x47, 0x66, 0x1f, 0x65, 0x42, 0x0a, 0x5d, 0x85, 0x44, 0x98, 0x8a, + 0xc3, 0xf3, 0x9b, 0x37, 0x6e, 0x4e, 0xf6, 0xbc, 0x7c, 0x73, 0xb2, 0xe7, 0x5f, 0x6f, 0x4e, 0xf6, + 0x7c, 0xe7, 0xe6, 0xa4, 0xf2, 0xbd, 0x9b, 0x93, 0xca, 0xf7, 0x6f, 0x4e, 0x2a, 0x3f, 0xbe, 0x39, + 0xa9, 0x3c, 0x77, 0x6b, 0x52, 0x79, 0xf1, 0xd6, 0xa4, 0xf2, 0xa5, 0x5b, 0x93, 0xca, 0xd7, 0x6e, + 0x4d, 0x2a, 0x2f, 0xdd, 0x9a, 0x54, 0x6e, 0xdc, 0x9a, 0xec, 0x79, 0xf9, 0xd6, 0x64, 0xcf, 0x77, + 0x6e, 0x4d, 0x2a, 0xdf, 0xbb, 0x35, 0xd9, 0xf3, 0xfd, 0x5b, 0x93, 0xca, 0x8f, 0x6f, 0x4d, 0xf6, + 0x3c, 0xf7, 0xea, 0xa4, 0xf2, 0xc2, 0xab, 0x93, 0x3d, 0x2f, 0xbe, 0x3a, 0xa9, 0xfc, 0x7f, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xa5, 0x0b, 0x2b, 0x87, 0xb2, 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/example/example.pb.go b/vendor/github.com/gogo/protobuf/test/example/example.pb.go index b297450db..76e648730 100644 --- a/vendor/github.com/gogo/protobuf/test/example/example.pb.go +++ b/vendor/github.com/gogo/protobuf/test/example/example.pb.go @@ -179,241 +179,248 @@ func (this *B) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_des func ExampleDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3739 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x6b, 0x6c, 0x1c, 0xd7, - 0x75, 0xd6, 0xec, 0x83, 0xdc, 0x3d, 0xbb, 0x5c, 0x0e, 0x2f, 0x29, 0x79, 0x45, 0xdb, 0xa4, 0xb4, - 0x7e, 0xd1, 0xb2, 0x43, 0xa5, 0xb4, 0x24, 0xcb, 0xa3, 0x26, 0xc6, 0xee, 0x72, 0xcd, 0xac, 0xc0, - 0x57, 0x66, 0xb9, 0x89, 0x9d, 0xfc, 0x18, 0x0c, 0x67, 0xee, 0x2e, 0x47, 0x9a, 0x9d, 0xd9, 0xce, - 0xcc, 0xca, 0xa2, 0x7e, 0x29, 0x70, 0x5f, 0x41, 0xd0, 0xa6, 0x2f, 0xa0, 0x89, 0xe3, 0xb8, 0x4e, - 0x80, 0xd6, 0x6e, 0xfa, 0x4c, 0x1f, 0x69, 0xd0, 0x3f, 0xcd, 0x9f, 0xb4, 0xfa, 0x55, 0x38, 0xff, - 0x8a, 0xa2, 0x10, 0x62, 0xc1, 0x40, 0x5f, 0x6e, 0xeb, 0x36, 0x06, 0x5a, 0xd4, 0x7f, 0x8a, 0xfb, - 0x9a, 0x9d, 0x7d, 0x50, 0xb3, 0x0c, 0x90, 0xa4, 0xbf, 0xc8, 0x7b, 0xee, 0xf9, 0xbe, 0x39, 0xf7, - 0xdc, 0x73, 0xcf, 0x39, 0x73, 0x67, 0xe1, 0x73, 0x17, 0xe0, 0x4c, 0xdb, 0x75, 0xdb, 0x36, 0x3e, - 0xdf, 0xf5, 0xdc, 0xc0, 0xdd, 0xef, 0xb5, 0xce, 0x9b, 0xd8, 0x37, 0x3c, 0xab, 0x1b, 0xb8, 0xde, - 0x2a, 0x95, 0xa1, 0x59, 0xa6, 0xb1, 0x2a, 0x34, 0x4a, 0x5b, 0x30, 0xf7, 0x82, 0x65, 0xe3, 0xf5, - 0x50, 0xb1, 0x81, 0x03, 0x74, 0x19, 0x52, 0x2d, 0xcb, 0xc6, 0x45, 0xe9, 0x4c, 0x72, 0x25, 0xb7, - 0xf6, 0xe8, 0xea, 0x10, 0x68, 0x75, 0x10, 0xb1, 0x4b, 0xc4, 0x2a, 0x45, 0x94, 0xde, 0x4d, 0xc1, - 0xfc, 0x98, 0x59, 0x84, 0x20, 0xe5, 0xe8, 0x1d, 0xc2, 0x28, 0xad, 0x64, 0x55, 0xfa, 0x3f, 0x2a, - 0xc2, 0x74, 0x57, 0x37, 0xae, 0xeb, 0x6d, 0x5c, 0x4c, 0x50, 0xb1, 0x18, 0xa2, 0x25, 0x00, 0x13, - 0x77, 0xb1, 0x63, 0x62, 0xc7, 0x38, 0x2c, 0x26, 0xcf, 0x24, 0x57, 0xb2, 0x6a, 0x44, 0x82, 0x9e, - 0x82, 0xb9, 0x6e, 0x6f, 0xdf, 0xb6, 0x0c, 0x2d, 0xa2, 0x06, 0x67, 0x92, 0x2b, 0x69, 0x55, 0x66, - 0x13, 0xeb, 0x7d, 0xe5, 0x27, 0x60, 0xf6, 0x65, 0xac, 0x5f, 0x8f, 0xaa, 0xe6, 0xa8, 0x6a, 0x81, - 0x88, 0x23, 0x8a, 0x55, 0xc8, 0x77, 0xb0, 0xef, 0xeb, 0x6d, 0xac, 0x05, 0x87, 0x5d, 0x5c, 0x4c, - 0xd1, 0xd5, 0x9f, 0x19, 0x59, 0xfd, 0xf0, 0xca, 0x73, 0x1c, 0xb5, 0x77, 0xd8, 0xc5, 0xa8, 0x0c, - 0x59, 0xec, 0xf4, 0x3a, 0x8c, 0x21, 0x7d, 0x84, 0xff, 0x6a, 0x4e, 0xaf, 0x33, 0xcc, 0x92, 0x21, - 0x30, 0x4e, 0x31, 0xed, 0x63, 0xef, 0x86, 0x65, 0xe0, 0xe2, 0x14, 0x25, 0x78, 0x62, 0x84, 0xa0, - 0xc1, 0xe6, 0x87, 0x39, 0x04, 0x0e, 0x55, 0x21, 0x8b, 0x6f, 0x06, 0xd8, 0xf1, 0x2d, 0xd7, 0x29, - 0x4e, 0x53, 0x92, 0xc7, 0xc6, 0xec, 0x22, 0xb6, 0xcd, 0x61, 0x8a, 0x3e, 0x0e, 0x5d, 0x82, 0x69, - 0xb7, 0x1b, 0x58, 0xae, 0xe3, 0x17, 0x33, 0x67, 0xa4, 0x95, 0xdc, 0xda, 0x43, 0x63, 0x03, 0x61, - 0x87, 0xe9, 0xa8, 0x42, 0x19, 0xd5, 0x41, 0xf6, 0xdd, 0x9e, 0x67, 0x60, 0xcd, 0x70, 0x4d, 0xac, - 0x59, 0x4e, 0xcb, 0x2d, 0x66, 0x29, 0xc1, 0xf2, 0xe8, 0x42, 0xa8, 0x62, 0xd5, 0x35, 0x71, 0xdd, - 0x69, 0xb9, 0x6a, 0xc1, 0x1f, 0x18, 0xa3, 0x53, 0x30, 0xe5, 0x1f, 0x3a, 0x81, 0x7e, 0xb3, 0x98, - 0xa7, 0x11, 0xc2, 0x47, 0xa5, 0xff, 0x4e, 0xc3, 0xec, 0x24, 0x21, 0x76, 0x05, 0xd2, 0x2d, 0xb2, - 0xca, 0x62, 0xe2, 0x38, 0x3e, 0x60, 0x98, 0x41, 0x27, 0x4e, 0xfd, 0x90, 0x4e, 0x2c, 0x43, 0xce, - 0xc1, 0x7e, 0x80, 0x4d, 0x16, 0x11, 0xc9, 0x09, 0x63, 0x0a, 0x18, 0x68, 0x34, 0xa4, 0x52, 0x3f, - 0x54, 0x48, 0xbd, 0x08, 0xb3, 0xa1, 0x49, 0x9a, 0xa7, 0x3b, 0x6d, 0x11, 0x9b, 0xe7, 0xe3, 0x2c, - 0x59, 0xad, 0x09, 0x9c, 0x4a, 0x60, 0x6a, 0x01, 0x0f, 0x8c, 0xd1, 0x3a, 0x80, 0xeb, 0x60, 0xb7, - 0xa5, 0x99, 0xd8, 0xb0, 0x8b, 0x99, 0x23, 0xbc, 0xb4, 0x43, 0x54, 0x46, 0xbc, 0xe4, 0x32, 0xa9, - 0x61, 0xa3, 0xe7, 0xfa, 0xa1, 0x36, 0x7d, 0x44, 0xa4, 0x6c, 0xb1, 0x43, 0x36, 0x12, 0x6d, 0x4d, - 0x28, 0x78, 0x98, 0xc4, 0x3d, 0x36, 0xf9, 0xca, 0xb2, 0xd4, 0x88, 0xd5, 0xd8, 0x95, 0xa9, 0x1c, - 0xc6, 0x16, 0x36, 0xe3, 0x45, 0x87, 0xe8, 0x11, 0x08, 0x05, 0x1a, 0x0d, 0x2b, 0xa0, 0x59, 0x28, - 0x2f, 0x84, 0xdb, 0x7a, 0x07, 0x2f, 0x5e, 0x86, 0xc2, 0xa0, 0x7b, 0xd0, 0x02, 0xa4, 0xfd, 0x40, - 0xf7, 0x02, 0x1a, 0x85, 0x69, 0x95, 0x0d, 0x90, 0x0c, 0x49, 0xec, 0x98, 0x34, 0xcb, 0xa5, 0x55, - 0xf2, 0xef, 0xe2, 0xb3, 0x30, 0x33, 0xf0, 0xf8, 0x49, 0x81, 0xa5, 0x2f, 0x4d, 0xc1, 0xc2, 0xb8, - 0x98, 0x1b, 0x1b, 0xfe, 0xa7, 0x60, 0xca, 0xe9, 0x75, 0xf6, 0xb1, 0x57, 0x4c, 0x52, 0x06, 0x3e, - 0x42, 0x65, 0x48, 0xdb, 0xfa, 0x3e, 0xb6, 0x8b, 0xa9, 0x33, 0xd2, 0x4a, 0x61, 0xed, 0xa9, 0x89, - 0xa2, 0x7a, 0x75, 0x93, 0x40, 0x54, 0x86, 0x44, 0x1f, 0x87, 0x14, 0x4f, 0x71, 0x84, 0xe1, 0xdc, - 0x64, 0x0c, 0x24, 0x16, 0x55, 0x8a, 0x43, 0x0f, 0x42, 0x96, 0xfc, 0x65, 0xbe, 0x9d, 0xa2, 0x36, - 0x67, 0x88, 0x80, 0xf8, 0x15, 0x2d, 0x42, 0x86, 0x86, 0x99, 0x89, 0x45, 0x69, 0x08, 0xc7, 0x64, - 0x63, 0x4c, 0xdc, 0xd2, 0x7b, 0x76, 0xa0, 0xdd, 0xd0, 0xed, 0x1e, 0xa6, 0x01, 0x93, 0x55, 0xf3, - 0x5c, 0xf8, 0x29, 0x22, 0x43, 0xcb, 0x90, 0x63, 0x51, 0x69, 0x39, 0x26, 0xbe, 0x49, 0xb3, 0x4f, - 0x5a, 0x65, 0x81, 0x5a, 0x27, 0x12, 0xf2, 0xf8, 0x6b, 0xbe, 0xeb, 0x88, 0xad, 0xa5, 0x8f, 0x20, - 0x02, 0xfa, 0xf8, 0x67, 0x87, 0x13, 0xdf, 0xc3, 0xe3, 0x97, 0x37, 0x1c, 0x8b, 0xa5, 0x6f, 0x25, - 0x20, 0x45, 0xcf, 0xdb, 0x2c, 0xe4, 0xf6, 0x5e, 0xda, 0xad, 0x69, 0xeb, 0x3b, 0xcd, 0xca, 0x66, - 0x4d, 0x96, 0x50, 0x01, 0x80, 0x0a, 0x5e, 0xd8, 0xdc, 0x29, 0xef, 0xc9, 0x89, 0x70, 0x5c, 0xdf, - 0xde, 0xbb, 0x74, 0x41, 0x4e, 0x86, 0x80, 0x26, 0x13, 0xa4, 0xa2, 0x0a, 0xcf, 0xac, 0xc9, 0x69, - 0x24, 0x43, 0x9e, 0x11, 0xd4, 0x5f, 0xac, 0xad, 0x5f, 0xba, 0x20, 0x4f, 0x0d, 0x4a, 0x9e, 0x59, - 0x93, 0xa7, 0xd1, 0x0c, 0x64, 0xa9, 0xa4, 0xb2, 0xb3, 0xb3, 0x29, 0x67, 0x42, 0xce, 0xc6, 0x9e, - 0x5a, 0xdf, 0xde, 0x90, 0xb3, 0x21, 0xe7, 0x86, 0xba, 0xd3, 0xdc, 0x95, 0x21, 0x64, 0xd8, 0xaa, - 0x35, 0x1a, 0xe5, 0x8d, 0x9a, 0x9c, 0x0b, 0x35, 0x2a, 0x2f, 0xed, 0xd5, 0x1a, 0x72, 0x7e, 0xc0, - 0xac, 0x67, 0xd6, 0xe4, 0x99, 0xf0, 0x11, 0xb5, 0xed, 0xe6, 0x96, 0x5c, 0x40, 0x73, 0x30, 0xc3, - 0x1e, 0x21, 0x8c, 0x98, 0x1d, 0x12, 0x5d, 0xba, 0x20, 0xcb, 0x7d, 0x43, 0x18, 0xcb, 0xdc, 0x80, - 0xe0, 0xd2, 0x05, 0x19, 0x95, 0xaa, 0x90, 0xa6, 0xd1, 0x85, 0x10, 0x14, 0x36, 0xcb, 0x95, 0xda, - 0xa6, 0xb6, 0xb3, 0xbb, 0x57, 0xdf, 0xd9, 0x2e, 0x6f, 0xca, 0x52, 0x5f, 0xa6, 0xd6, 0x3e, 0xd9, - 0xac, 0xab, 0xb5, 0x75, 0x39, 0x11, 0x95, 0xed, 0xd6, 0xca, 0x7b, 0xb5, 0x75, 0x39, 0x59, 0x32, - 0x60, 0x61, 0x5c, 0x9e, 0x19, 0x7b, 0x32, 0x22, 0x5b, 0x9c, 0x38, 0x62, 0x8b, 0x29, 0xd7, 0xc8, - 0x16, 0x7f, 0x5d, 0x82, 0xf9, 0x31, 0xb9, 0x76, 0xec, 0x43, 0x9e, 0x87, 0x34, 0x0b, 0x51, 0x56, - 0x7d, 0x9e, 0x1c, 0x9b, 0xb4, 0x69, 0xc0, 0x8e, 0x54, 0x20, 0x8a, 0x8b, 0x56, 0xe0, 0xe4, 0x11, - 0x15, 0x98, 0x50, 0x8c, 0x18, 0xf9, 0x8a, 0x04, 0xc5, 0xa3, 0xb8, 0x63, 0x12, 0x45, 0x62, 0x20, - 0x51, 0x5c, 0x19, 0x36, 0xe0, 0xec, 0xd1, 0x6b, 0x18, 0xb1, 0xe2, 0x4d, 0x09, 0x4e, 0x8d, 0x6f, - 0x54, 0xc6, 0xda, 0xf0, 0x71, 0x98, 0xea, 0xe0, 0xe0, 0xc0, 0x15, 0xc5, 0xfa, 0xf1, 0x31, 0x25, - 0x80, 0x4c, 0x0f, 0xfb, 0x8a, 0xa3, 0xa2, 0x35, 0x24, 0x79, 0x54, 0xb7, 0xc1, 0xac, 0x19, 0xb1, - 0xf4, 0xf3, 0x09, 0x38, 0x39, 0x96, 0x7c, 0xac, 0xa1, 0x0f, 0x03, 0x58, 0x4e, 0xb7, 0x17, 0xb0, - 0x82, 0xcc, 0xf2, 0x53, 0x96, 0x4a, 0xe8, 0xd9, 0x27, 0xb9, 0xa7, 0x17, 0x84, 0xf3, 0x49, 0x3a, - 0x0f, 0x4c, 0x44, 0x15, 0x2e, 0xf7, 0x0d, 0x4d, 0x51, 0x43, 0x97, 0x8e, 0x58, 0xe9, 0x48, 0xad, - 0xfb, 0x28, 0xc8, 0x86, 0x6d, 0x61, 0x27, 0xd0, 0xfc, 0xc0, 0xc3, 0x7a, 0xc7, 0x72, 0xda, 0x34, - 0x01, 0x67, 0x94, 0x74, 0x4b, 0xb7, 0x7d, 0xac, 0xce, 0xb2, 0xe9, 0x86, 0x98, 0x25, 0x08, 0x5a, - 0x65, 0xbc, 0x08, 0x62, 0x6a, 0x00, 0xc1, 0xa6, 0x43, 0x44, 0xe9, 0x0b, 0xd3, 0x90, 0x8b, 0xb4, - 0x75, 0xe8, 0x2c, 0xe4, 0xaf, 0xe9, 0x37, 0x74, 0x4d, 0xb4, 0xea, 0xcc, 0x13, 0x39, 0x22, 0xdb, - 0xe5, 0xed, 0xfa, 0x47, 0x61, 0x81, 0xaa, 0xb8, 0xbd, 0x00, 0x7b, 0x9a, 0x61, 0xeb, 0xbe, 0x4f, - 0x9d, 0x96, 0xa1, 0xaa, 0x88, 0xcc, 0xed, 0x90, 0xa9, 0xaa, 0x98, 0x41, 0x17, 0x61, 0x9e, 0x22, - 0x3a, 0x3d, 0x3b, 0xb0, 0xba, 0x36, 0xd6, 0xc8, 0xcb, 0x83, 0x4f, 0x13, 0x71, 0x68, 0xd9, 0x1c, - 0xd1, 0xd8, 0xe2, 0x0a, 0xc4, 0x22, 0x1f, 0x6d, 0xc0, 0xc3, 0x14, 0xd6, 0xc6, 0x0e, 0xf6, 0xf4, - 0x00, 0x6b, 0xf8, 0x67, 0x7a, 0xba, 0xed, 0x6b, 0xba, 0x63, 0x6a, 0x07, 0xba, 0x7f, 0x50, 0x5c, - 0x88, 0x12, 0x9c, 0x26, 0xba, 0x1b, 0x5c, 0xb5, 0x46, 0x35, 0xcb, 0x8e, 0xf9, 0x09, 0xdd, 0x3f, - 0x40, 0x0a, 0x9c, 0xa2, 0x44, 0x7e, 0xe0, 0x59, 0x4e, 0x5b, 0x33, 0x0e, 0xb0, 0x71, 0x5d, 0xeb, - 0x05, 0xad, 0xcb, 0xc5, 0x07, 0xa3, 0x0c, 0xd4, 0xc8, 0x06, 0xd5, 0xa9, 0x12, 0x95, 0x66, 0xd0, - 0xba, 0x8c, 0x1a, 0x90, 0x27, 0xfb, 0xd1, 0xb1, 0x6e, 0x61, 0xad, 0xe5, 0x7a, 0xb4, 0xb8, 0x14, - 0xc6, 0x1c, 0xee, 0x88, 0x13, 0x57, 0x77, 0x38, 0x60, 0xcb, 0x35, 0xb1, 0x92, 0x6e, 0xec, 0xd6, - 0x6a, 0xeb, 0x6a, 0x4e, 0xb0, 0xbc, 0xe0, 0x7a, 0x24, 0xa6, 0xda, 0x6e, 0xe8, 0xe3, 0x1c, 0x8b, - 0xa9, 0xb6, 0x2b, 0x3c, 0x7c, 0x11, 0xe6, 0x0d, 0x83, 0x2d, 0xdb, 0x32, 0x34, 0xde, 0xe5, 0xfb, - 0x45, 0x79, 0xc0, 0x5f, 0x86, 0xb1, 0xc1, 0x14, 0x78, 0x98, 0xfb, 0xe8, 0x39, 0x38, 0xd9, 0xf7, - 0x57, 0x14, 0x38, 0x37, 0xb2, 0xca, 0x61, 0xe8, 0x45, 0x98, 0xef, 0x1e, 0x8e, 0x02, 0xd1, 0xc0, - 0x13, 0xbb, 0x87, 0xc3, 0xb0, 0xc7, 0xe8, 0x9b, 0x9b, 0x87, 0x0d, 0x3d, 0xc0, 0x66, 0xf1, 0x81, - 0xa8, 0x76, 0x64, 0x02, 0x9d, 0x07, 0xd9, 0x30, 0x34, 0xec, 0xe8, 0xfb, 0x36, 0xd6, 0x74, 0x0f, - 0x3b, 0xba, 0x5f, 0x5c, 0x8e, 0x2a, 0x17, 0x0c, 0xa3, 0x46, 0x67, 0xcb, 0x74, 0x12, 0x9d, 0x83, - 0x39, 0x77, 0xff, 0x9a, 0xc1, 0x82, 0x4b, 0xeb, 0x7a, 0xb8, 0x65, 0xdd, 0x2c, 0x3e, 0x4a, 0xdd, - 0x34, 0x4b, 0x26, 0x68, 0x68, 0xed, 0x52, 0x31, 0x7a, 0x12, 0x64, 0xc3, 0x3f, 0xd0, 0xbd, 0x2e, - 0xad, 0xee, 0x7e, 0x57, 0x37, 0x70, 0xf1, 0x31, 0xa6, 0xca, 0xe4, 0xdb, 0x42, 0x8c, 0x5e, 0x84, - 0x85, 0x9e, 0x63, 0x39, 0x01, 0xf6, 0xba, 0x1e, 0x26, 0x4d, 0x3a, 0x3b, 0x69, 0xc5, 0x7f, 0x9c, - 0x3e, 0xa2, 0xcd, 0x6e, 0x46, 0xb5, 0xd9, 0xee, 0xaa, 0xf3, 0xbd, 0x51, 0x61, 0x49, 0x81, 0x7c, - 0x74, 0xd3, 0x51, 0x16, 0xd8, 0xb6, 0xcb, 0x12, 0xa9, 0xa1, 0xd5, 0x9d, 0x75, 0x52, 0xfd, 0x3e, - 0x53, 0x93, 0x13, 0xa4, 0x0a, 0x6f, 0xd6, 0xf7, 0x6a, 0x9a, 0xda, 0xdc, 0xde, 0xab, 0x6f, 0xd5, - 0xe4, 0xe4, 0xb9, 0x6c, 0xe6, 0x9f, 0xa6, 0xe5, 0xdb, 0xb7, 0x6f, 0xdf, 0x4e, 0x94, 0xbe, 0x9b, - 0x80, 0xc2, 0x60, 0xe7, 0x8b, 0x7e, 0x1a, 0x1e, 0x10, 0xaf, 0xa9, 0x3e, 0x0e, 0xb4, 0x97, 0x2d, - 0x8f, 0xc6, 0x61, 0x47, 0x67, 0xbd, 0x63, 0xe8, 0xc2, 0x05, 0xae, 0xd5, 0xc0, 0xc1, 0xa7, 0x2d, - 0x8f, 0x44, 0x59, 0x47, 0x0f, 0xd0, 0x26, 0x2c, 0x3b, 0xae, 0xe6, 0x07, 0xba, 0x63, 0xea, 0x9e, - 0xa9, 0xf5, 0x2f, 0x08, 0x34, 0xdd, 0x30, 0xb0, 0xef, 0xbb, 0xac, 0x04, 0x84, 0x2c, 0x0f, 0x39, - 0x6e, 0x83, 0x2b, 0xf7, 0x73, 0x63, 0x99, 0xab, 0x0e, 0x6d, 0x77, 0xf2, 0xa8, 0xed, 0x7e, 0x10, - 0xb2, 0x1d, 0xbd, 0xab, 0x61, 0x27, 0xf0, 0x0e, 0x69, 0xbf, 0x96, 0x51, 0x33, 0x1d, 0xbd, 0x5b, - 0x23, 0xe3, 0x1f, 0xdd, 0x1e, 0x44, 0xfd, 0xf8, 0x0f, 0x49, 0xc8, 0x47, 0x7b, 0x36, 0xd2, 0x02, - 0x1b, 0x34, 0x3f, 0x4b, 0xf4, 0xf8, 0x3e, 0x72, 0xdf, 0x0e, 0x6f, 0xb5, 0x4a, 0x12, 0xb7, 0x32, - 0xc5, 0x3a, 0x29, 0x95, 0x21, 0x49, 0xd1, 0x24, 0x07, 0x16, 0xb3, 0xfe, 0x3c, 0xa3, 0xf2, 0x11, - 0xda, 0x80, 0xa9, 0x6b, 0x3e, 0xe5, 0x9e, 0xa2, 0xdc, 0x8f, 0xde, 0x9f, 0xfb, 0x6a, 0x83, 0x92, - 0x67, 0xaf, 0x36, 0xb4, 0xed, 0x1d, 0x75, 0xab, 0xbc, 0xa9, 0x72, 0x38, 0x3a, 0x0d, 0x29, 0x5b, - 0xbf, 0x75, 0x38, 0x98, 0xe2, 0xa9, 0x68, 0x52, 0xc7, 0x9f, 0x86, 0xd4, 0xcb, 0x58, 0xbf, 0x3e, - 0x98, 0x58, 0xa9, 0xe8, 0x47, 0x18, 0xfa, 0xe7, 0x21, 0x4d, 0xfd, 0x85, 0x00, 0xb8, 0xc7, 0xe4, - 0x13, 0x28, 0x03, 0xa9, 0xea, 0x8e, 0x4a, 0xc2, 0x5f, 0x86, 0x3c, 0x93, 0x6a, 0xbb, 0xf5, 0x5a, - 0xb5, 0x26, 0x27, 0x4a, 0x17, 0x61, 0x8a, 0x39, 0x81, 0x1c, 0x8d, 0xd0, 0x0d, 0xf2, 0x09, 0x3e, - 0xe4, 0x1c, 0x92, 0x98, 0x6d, 0x6e, 0x55, 0x6a, 0xaa, 0x9c, 0x88, 0x6e, 0xaf, 0x0f, 0xf9, 0x68, - 0xbb, 0xf6, 0xe3, 0x89, 0xa9, 0xbf, 0x94, 0x20, 0x17, 0x69, 0xbf, 0x48, 0xe1, 0xd7, 0x6d, 0xdb, - 0x7d, 0x59, 0xd3, 0x6d, 0x4b, 0xf7, 0x79, 0x50, 0x00, 0x15, 0x95, 0x89, 0x64, 0xd2, 0x4d, 0xfb, - 0xb1, 0x18, 0xff, 0xba, 0x04, 0xf2, 0x70, 0xeb, 0x36, 0x64, 0xa0, 0xf4, 0x13, 0x35, 0xf0, 0x35, - 0x09, 0x0a, 0x83, 0xfd, 0xda, 0x90, 0x79, 0x67, 0x7f, 0xa2, 0xe6, 0x7d, 0x45, 0x82, 0x99, 0x81, - 0x2e, 0xed, 0xff, 0x95, 0x75, 0xaf, 0x26, 0x61, 0x7e, 0x0c, 0x0e, 0x95, 0x79, 0x3b, 0xcb, 0x3a, - 0xec, 0x8f, 0x4c, 0xf2, 0xac, 0x55, 0x52, 0x2d, 0x77, 0x75, 0x2f, 0xe0, 0xdd, 0xef, 0x93, 0x20, - 0x5b, 0x26, 0x76, 0x02, 0xab, 0x65, 0x61, 0x8f, 0xbf, 0x82, 0xb3, 0x1e, 0x77, 0xb6, 0x2f, 0x67, - 0x6f, 0xe1, 0x4f, 0x03, 0xea, 0xba, 0xbe, 0x15, 0x58, 0x37, 0xb0, 0x66, 0x39, 0xe2, 0x7d, 0x9d, - 0xf4, 0xbc, 0x29, 0x55, 0x16, 0x33, 0x75, 0x27, 0x08, 0xb5, 0x1d, 0xdc, 0xd6, 0x87, 0xb4, 0x49, - 0xee, 0x4b, 0xaa, 0xb2, 0x98, 0x09, 0xb5, 0xcf, 0x42, 0xde, 0x74, 0x7b, 0xa4, 0x7d, 0x60, 0x7a, - 0x24, 0xd5, 0x4a, 0x6a, 0x8e, 0xc9, 0x42, 0x15, 0xde, 0xdf, 0xf5, 0x2f, 0x0a, 0xf2, 0x6a, 0x8e, - 0xc9, 0x98, 0xca, 0x13, 0x30, 0xab, 0xb7, 0xdb, 0x1e, 0x21, 0x17, 0x44, 0xac, 0x69, 0x2d, 0x84, - 0x62, 0xaa, 0xb8, 0x78, 0x15, 0x32, 0xc2, 0x0f, 0xa4, 0x9a, 0x11, 0x4f, 0x68, 0x5d, 0x76, 0x5d, - 0x93, 0x58, 0xc9, 0xaa, 0x19, 0x47, 0x4c, 0x9e, 0x85, 0xbc, 0xe5, 0x6b, 0xfd, 0x7b, 0xc3, 0xc4, - 0x99, 0xc4, 0x4a, 0x46, 0xcd, 0x59, 0x7e, 0x78, 0x51, 0x54, 0x7a, 0x33, 0x01, 0x85, 0xc1, 0x7b, - 0x4f, 0xb4, 0x0e, 0x19, 0xdb, 0x35, 0x74, 0x1a, 0x08, 0xec, 0xd2, 0x7d, 0x25, 0xe6, 0xaa, 0x74, - 0x75, 0x93, 0xeb, 0xab, 0x21, 0x72, 0xf1, 0x6f, 0x25, 0xc8, 0x08, 0x31, 0x3a, 0x05, 0xa9, 0xae, - 0x1e, 0x1c, 0x50, 0xba, 0x74, 0x25, 0x21, 0x4b, 0x2a, 0x1d, 0x13, 0xb9, 0xdf, 0xd5, 0x1d, 0x1a, - 0x02, 0x5c, 0x4e, 0xc6, 0x64, 0x5f, 0x6d, 0xac, 0x9b, 0xb4, 0x1d, 0x76, 0x3b, 0x1d, 0xec, 0x04, - 0xbe, 0xd8, 0x57, 0x2e, 0xaf, 0x72, 0x31, 0x7a, 0x0a, 0xe6, 0x02, 0x4f, 0xb7, 0xec, 0x01, 0xdd, - 0x14, 0xd5, 0x95, 0xc5, 0x44, 0xa8, 0xac, 0xc0, 0x69, 0xc1, 0x6b, 0xe2, 0x40, 0x37, 0x0e, 0xb0, - 0xd9, 0x07, 0x4d, 0xd1, 0x4b, 0xb5, 0x07, 0xb8, 0xc2, 0x3a, 0x9f, 0x17, 0xd8, 0xd2, 0xf7, 0x24, - 0x98, 0x13, 0x0d, 0xbc, 0x19, 0x3a, 0x6b, 0x0b, 0x40, 0x77, 0x1c, 0x37, 0x88, 0xba, 0x6b, 0x34, - 0x94, 0x47, 0x70, 0xab, 0xe5, 0x10, 0xa4, 0x46, 0x08, 0x16, 0x3b, 0x00, 0xfd, 0x99, 0x23, 0xdd, - 0xb6, 0x0c, 0x39, 0x7e, 0xa9, 0x4d, 0xbf, 0x8c, 0xb0, 0xb7, 0x3e, 0x60, 0x22, 0xd2, 0xe9, 0xa3, - 0x05, 0x48, 0xef, 0xe3, 0xb6, 0xe5, 0xf0, 0xab, 0x36, 0x36, 0x10, 0x17, 0x78, 0xa9, 0xf0, 0x02, - 0xaf, 0xf2, 0x59, 0x98, 0x37, 0xdc, 0xce, 0xb0, 0xb9, 0x15, 0x79, 0xe8, 0xcd, 0xd3, 0xff, 0x84, - 0xf4, 0x19, 0xe8, 0x77, 0x67, 0x6f, 0x48, 0xd2, 0xd7, 0x13, 0xc9, 0x8d, 0xdd, 0xca, 0x37, 0x12, - 0x8b, 0x1b, 0x0c, 0xba, 0x2b, 0x56, 0xaa, 0xe2, 0x96, 0x8d, 0x0d, 0x62, 0x3d, 0xfc, 0xe0, 0x71, - 0xf8, 0x48, 0xdb, 0x0a, 0x0e, 0x7a, 0xfb, 0xab, 0x86, 0xdb, 0x39, 0xdf, 0x76, 0xdb, 0x6e, 0xff, - 0x63, 0x10, 0x19, 0xd1, 0x01, 0xfd, 0x8f, 0x7f, 0x10, 0xca, 0x86, 0xd2, 0xc5, 0xd8, 0xaf, 0x47, - 0xca, 0x36, 0xcc, 0x73, 0x65, 0x8d, 0xde, 0x48, 0xb3, 0x3e, 0x1c, 0xdd, 0xf7, 0x56, 0xa2, 0xf8, - 0xcd, 0x77, 0x69, 0xa5, 0x53, 0xe7, 0x38, 0x94, 0xcc, 0xb1, 0x4e, 0x5d, 0x51, 0xe1, 0xe4, 0x00, - 0x1f, 0x3b, 0x9a, 0xd8, 0x8b, 0x61, 0xfc, 0x2e, 0x67, 0x9c, 0x8f, 0x30, 0x36, 0x38, 0x54, 0xa9, - 0xc2, 0xcc, 0x71, 0xb8, 0xfe, 0x9a, 0x73, 0xe5, 0x71, 0x94, 0x64, 0x03, 0x66, 0x29, 0x89, 0xd1, - 0xf3, 0x03, 0xb7, 0x43, 0xf3, 0xde, 0xfd, 0x69, 0xfe, 0xe6, 0x5d, 0x76, 0x56, 0x0a, 0x04, 0x56, - 0x0d, 0x51, 0x8a, 0x02, 0xf4, 0x12, 0xde, 0xc4, 0x86, 0x1d, 0xc3, 0x70, 0x87, 0x1b, 0x12, 0xea, - 0x2b, 0x9f, 0x82, 0x05, 0xf2, 0x3f, 0x4d, 0x4b, 0x51, 0x4b, 0xe2, 0xef, 0x60, 0x8a, 0xdf, 0x7b, - 0x85, 0x1d, 0xc7, 0xf9, 0x90, 0x20, 0x62, 0x53, 0x64, 0x17, 0xdb, 0x38, 0x08, 0xb0, 0xe7, 0x6b, - 0xba, 0x3d, 0xce, 0xbc, 0xc8, 0x1b, 0x6c, 0xf1, 0xcb, 0xef, 0x0d, 0xee, 0xe2, 0x06, 0x43, 0x96, - 0x6d, 0x5b, 0x69, 0xc2, 0x03, 0x63, 0xa2, 0x62, 0x02, 0xce, 0x57, 0x39, 0xe7, 0xc2, 0x48, 0x64, - 0x10, 0xda, 0x5d, 0x10, 0xf2, 0x70, 0x2f, 0x27, 0xe0, 0xfc, 0x0a, 0xe7, 0x44, 0x1c, 0x2b, 0xb6, - 0x94, 0x30, 0x5e, 0x85, 0xb9, 0x1b, 0xd8, 0xdb, 0x77, 0x7d, 0x7e, 0x71, 0x30, 0x01, 0xdd, 0x6b, - 0x9c, 0x6e, 0x96, 0x03, 0xe9, 0x35, 0x02, 0xe1, 0x7a, 0x0e, 0x32, 0x2d, 0xdd, 0xc0, 0x13, 0x50, - 0x7c, 0x95, 0x53, 0x4c, 0x13, 0x7d, 0x02, 0x2d, 0x43, 0xbe, 0xed, 0xf2, 0xca, 0x14, 0x0f, 0x7f, - 0x9d, 0xc3, 0x73, 0x02, 0xc3, 0x29, 0xba, 0x6e, 0xb7, 0x67, 0x93, 0xb2, 0x15, 0x4f, 0xf1, 0x5b, - 0x82, 0x42, 0x60, 0x38, 0xc5, 0x31, 0xdc, 0xfa, 0x86, 0xa0, 0xf0, 0x23, 0xfe, 0x7c, 0x1e, 0x72, - 0xae, 0x63, 0x1f, 0xba, 0xce, 0x24, 0x46, 0x7c, 0x8d, 0x33, 0x00, 0x87, 0x10, 0x82, 0x2b, 0x90, - 0x9d, 0x74, 0x23, 0x7e, 0xfb, 0x3d, 0x71, 0x3c, 0xc4, 0x0e, 0x6c, 0xc0, 0xac, 0x48, 0x50, 0x96, - 0xeb, 0x4c, 0x40, 0xf1, 0x3b, 0x9c, 0xa2, 0x10, 0x81, 0xf1, 0x65, 0x04, 0xd8, 0x0f, 0xda, 0x78, - 0x12, 0x92, 0x37, 0xc5, 0x32, 0x38, 0x84, 0xbb, 0x72, 0x1f, 0x3b, 0xc6, 0xc1, 0x64, 0x0c, 0x6f, - 0x09, 0x57, 0x0a, 0x0c, 0xa1, 0xa8, 0xc2, 0x4c, 0x47, 0xf7, 0xfc, 0x03, 0xdd, 0x9e, 0x68, 0x3b, - 0x7e, 0x97, 0x73, 0xe4, 0x43, 0x10, 0xf7, 0x48, 0xcf, 0x39, 0x0e, 0xcd, 0x37, 0x84, 0x47, 0x22, - 0x30, 0x7e, 0xf4, 0xfc, 0x80, 0xde, 0xcd, 0x1c, 0x87, 0xed, 0xf7, 0xc4, 0xd1, 0x63, 0xd8, 0xad, - 0x28, 0xe3, 0x15, 0xc8, 0xfa, 0xd6, 0xad, 0x89, 0x68, 0x7e, 0x5f, 0xec, 0x34, 0x05, 0x10, 0xf0, - 0x4b, 0x70, 0x7a, 0x6c, 0x99, 0x98, 0x80, 0xec, 0x0f, 0x38, 0xd9, 0xa9, 0x31, 0xa5, 0x82, 0xa7, - 0x84, 0xe3, 0x52, 0xfe, 0xa1, 0x48, 0x09, 0x78, 0x88, 0x6b, 0x97, 0x74, 0xf6, 0xbe, 0xde, 0x3a, - 0x9e, 0xd7, 0xfe, 0x48, 0x78, 0x8d, 0x61, 0x07, 0xbc, 0xb6, 0x07, 0xa7, 0x38, 0xe3, 0xf1, 0xf6, - 0xf5, 0x8f, 0x45, 0x62, 0x65, 0xe8, 0xe6, 0xe0, 0xee, 0x7e, 0x16, 0x16, 0x43, 0x77, 0x8a, 0xa6, - 0xd4, 0xd7, 0x3a, 0x7a, 0x77, 0x02, 0xe6, 0x6f, 0x72, 0x66, 0x91, 0xf1, 0xc3, 0xae, 0xd6, 0xdf, - 0xd2, 0xbb, 0x84, 0xfc, 0x45, 0x28, 0x0a, 0xf2, 0x9e, 0xe3, 0x61, 0xc3, 0x6d, 0x3b, 0xd6, 0x2d, - 0x6c, 0x4e, 0x40, 0xfd, 0x27, 0x43, 0x5b, 0xd5, 0x8c, 0xc0, 0x09, 0x73, 0x1d, 0xe4, 0xb0, 0x57, - 0xd1, 0xac, 0x4e, 0xd7, 0xf5, 0x82, 0x18, 0xc6, 0x3f, 0x15, 0x3b, 0x15, 0xe2, 0xea, 0x14, 0xa6, - 0xd4, 0xa0, 0x40, 0x87, 0x93, 0x86, 0xe4, 0x9f, 0x71, 0xa2, 0x99, 0x3e, 0x8a, 0x27, 0x0e, 0xc3, - 0xed, 0x74, 0x75, 0x6f, 0x92, 0xfc, 0xf7, 0xe7, 0x22, 0x71, 0x70, 0x08, 0x4f, 0x1c, 0xc1, 0x61, - 0x17, 0x93, 0x6a, 0x3f, 0x01, 0xc3, 0xb7, 0x44, 0xe2, 0x10, 0x18, 0x4e, 0x21, 0x1a, 0x86, 0x09, - 0x28, 0xfe, 0x42, 0x50, 0x08, 0x0c, 0xa1, 0xf8, 0x64, 0xbf, 0xd0, 0x7a, 0xb8, 0x6d, 0xf9, 0x81, - 0xc7, 0x5a, 0xe1, 0xfb, 0x53, 0x7d, 0xfb, 0xbd, 0xc1, 0x26, 0x4c, 0x8d, 0x40, 0x95, 0xab, 0x30, - 0x3b, 0xd4, 0x62, 0xa0, 0xb8, 0x2f, 0xfa, 0xc5, 0xcf, 0x7d, 0xc0, 0x93, 0xd1, 0x60, 0x87, 0xa1, - 0x6c, 0x92, 0x7d, 0x1f, 0xec, 0x03, 0xe2, 0xc9, 0x5e, 0xf9, 0x20, 0xdc, 0xfa, 0x81, 0x36, 0x40, - 0x79, 0x01, 0x66, 0x06, 0x7a, 0x80, 0x78, 0xaa, 0x9f, 0xe5, 0x54, 0xf9, 0x68, 0x0b, 0xa0, 0x5c, - 0x84, 0x14, 0xa9, 0xe7, 0xf1, 0xf0, 0x9f, 0xe3, 0x70, 0xaa, 0xae, 0x7c, 0x0c, 0x32, 0xa2, 0x8e, - 0xc7, 0x43, 0x7f, 0x9e, 0x43, 0x43, 0x08, 0x81, 0x8b, 0x1a, 0x1e, 0x0f, 0xff, 0x05, 0x01, 0x17, - 0x10, 0x02, 0x9f, 0xdc, 0x85, 0xdf, 0xf9, 0x42, 0x8a, 0xe7, 0x61, 0xe1, 0xbb, 0x2b, 0x30, 0xcd, - 0x8b, 0x77, 0x3c, 0xfa, 0xf3, 0xfc, 0xe1, 0x02, 0xa1, 0x3c, 0x0b, 0xe9, 0x09, 0x1d, 0xfe, 0x4b, - 0x1c, 0xca, 0xf4, 0x95, 0x2a, 0xe4, 0x22, 0x05, 0x3b, 0x1e, 0xfe, 0xcb, 0x1c, 0x1e, 0x45, 0x11, - 0xd3, 0x79, 0xc1, 0x8e, 0x27, 0xf8, 0xa2, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xad, 0x8e, 0x47, - 0xff, 0x8a, 0xf0, 0xba, 0x80, 0x28, 0xcf, 0x43, 0x36, 0xcc, 0xbf, 0xf1, 0xf8, 0x5f, 0xe5, 0xf8, - 0x3e, 0x86, 0x78, 0x20, 0x92, 0xff, 0xe3, 0x29, 0x7e, 0x4d, 0x78, 0x20, 0x82, 0x22, 0xc7, 0x68, - 0xb8, 0xa6, 0xc7, 0x33, 0xfd, 0xba, 0x38, 0x46, 0x43, 0x25, 0x9d, 0xec, 0x26, 0x4d, 0x83, 0xf1, - 0x14, 0xbf, 0x21, 0x76, 0x93, 0xea, 0x13, 0x33, 0x86, 0x8b, 0x64, 0x3c, 0xc7, 0x6f, 0x0a, 0x33, - 0x86, 0x6a, 0xa4, 0xb2, 0x0b, 0x68, 0xb4, 0x40, 0xc6, 0xf3, 0x7d, 0x89, 0xf3, 0xcd, 0x8d, 0xd4, - 0x47, 0xe5, 0xd3, 0x70, 0x6a, 0x7c, 0x71, 0x8c, 0x67, 0xfd, 0xf2, 0x07, 0x43, 0xaf, 0x33, 0xd1, - 0xda, 0xa8, 0xec, 0xf5, 0xb3, 0x6c, 0xb4, 0x30, 0xc6, 0xd3, 0xbe, 0xfa, 0xc1, 0x60, 0xa2, 0x8d, - 0xd6, 0x45, 0xa5, 0x0c, 0xd0, 0xaf, 0x49, 0xf1, 0x5c, 0xaf, 0x71, 0xae, 0x08, 0x88, 0x1c, 0x0d, - 0x5e, 0x92, 0xe2, 0xf1, 0x5f, 0x15, 0x47, 0x83, 0x23, 0xc8, 0xd1, 0x10, 0xd5, 0x28, 0x1e, 0xfd, - 0xba, 0x38, 0x1a, 0x02, 0xa2, 0x5c, 0x81, 0x8c, 0xd3, 0xb3, 0x6d, 0x12, 0x5b, 0xe8, 0xfe, 0x3f, - 0xb2, 0x29, 0xfe, 0xf3, 0x87, 0x1c, 0x2c, 0x00, 0xca, 0x45, 0x48, 0xe3, 0xce, 0x3e, 0x36, 0xe3, - 0x90, 0xff, 0xf2, 0xa1, 0xc8, 0x27, 0x44, 0x5b, 0x79, 0x1e, 0x80, 0xbd, 0x4c, 0xd3, 0x6f, 0x2c, - 0x31, 0xd8, 0x7f, 0xfd, 0x90, 0x7f, 0xbf, 0xef, 0x43, 0xfa, 0x04, 0xec, 0xd7, 0x00, 0xf7, 0x27, - 0x78, 0x6f, 0x90, 0x80, 0xbe, 0x80, 0x3f, 0x07, 0xd3, 0xd7, 0x7c, 0xd7, 0x09, 0xf4, 0x76, 0x1c, - 0xfa, 0xdf, 0x38, 0x5a, 0xe8, 0x13, 0x87, 0x75, 0x5c, 0x0f, 0x07, 0x7a, 0xdb, 0x8f, 0xc3, 0xfe, - 0x3b, 0xc7, 0x86, 0x00, 0x02, 0x36, 0x74, 0x3f, 0x98, 0x64, 0xdd, 0xff, 0x21, 0xc0, 0x02, 0x40, - 0x8c, 0x26, 0xff, 0x5f, 0xc7, 0x87, 0x71, 0xd8, 0xf7, 0x85, 0xd1, 0x5c, 0x5f, 0xf9, 0x18, 0x64, - 0xc9, 0xbf, 0xec, 0x37, 0x2d, 0x31, 0xe0, 0xff, 0xe4, 0xe0, 0x3e, 0x82, 0x3c, 0xd9, 0x0f, 0xcc, - 0xc0, 0x8a, 0x77, 0xf6, 0x7f, 0xf1, 0x9d, 0x16, 0xfa, 0x4a, 0x19, 0x72, 0x7e, 0x60, 0x9a, 0x3d, - 0xde, 0xd1, 0xc4, 0xc0, 0x7f, 0xf0, 0x61, 0xf8, 0x92, 0x1b, 0x62, 0x2a, 0x67, 0xc7, 0xdf, 0xd7, - 0xc1, 0x86, 0xbb, 0xe1, 0xb2, 0x9b, 0x3a, 0xf8, 0xab, 0x14, 0xcc, 0xe0, 0x9b, 0x7a, 0xa7, 0x2b, - 0x14, 0x50, 0x8a, 0x94, 0x8e, 0xc5, 0xe3, 0x5d, 0xc5, 0x95, 0xbe, 0x28, 0x81, 0x54, 0x46, 0x8f, - 0x43, 0x6e, 0xbd, 0x5f, 0xb8, 0xd8, 0xcf, 0x2d, 0x2a, 0xa9, 0x3b, 0x77, 0x97, 0x4f, 0xa8, 0xd1, - 0x09, 0xf4, 0x10, 0x4c, 0x6d, 0xf7, 0x7f, 0xb2, 0x93, 0xe4, 0x2a, 0x5c, 0x86, 0x14, 0x48, 0xd4, - 0xd9, 0x27, 0xa6, 0x7c, 0xe5, 0x1c, 0x99, 0xf9, 0xfb, 0xbb, 0xcb, 0xa5, 0x23, 0xcd, 0x21, 0xd6, - 0xae, 0x36, 0x7b, 0x96, 0xa9, 0x26, 0xea, 0xa6, 0x92, 0xf9, 0xc5, 0x37, 0x96, 0x4f, 0xbc, 0xf5, - 0xc6, 0xb2, 0x54, 0x72, 0x40, 0xaa, 0xa0, 0x65, 0x90, 0xca, 0xd4, 0x8c, 0xdc, 0xda, 0xf4, 0x2a, - 0xd5, 0x2c, 0x57, 0x32, 0x84, 0xf2, 0xed, 0xbb, 0xcb, 0x92, 0x2a, 0x95, 0x51, 0x05, 0xa4, 0x0d, - 0x7a, 0x9d, 0x9c, 0xaf, 0x5c, 0xe0, 0x8f, 0x7a, 0xfa, 0xbe, 0x8f, 0x3a, 0xcf, 0xce, 0xc2, 0x6a, - 0xd3, 0x72, 0x82, 0x9f, 0x5a, 0xbb, 0xac, 0x4a, 0x1b, 0x4a, 0xea, 0x7d, 0xf2, 0xbc, 0x47, 0x40, - 0xaa, 0xa2, 0x25, 0x48, 0x91, 0xc4, 0x44, 0x1f, 0x99, 0xac, 0xc0, 0xbd, 0xbb, 0xcb, 0x53, 0x5b, - 0x87, 0x0d, 0xeb, 0x16, 0x56, 0xa9, 0xbc, 0xf4, 0x2c, 0x48, 0x4d, 0x74, 0x72, 0xd4, 0x28, 0x62, - 0xca, 0x49, 0x90, 0x2a, 0xfc, 0x07, 0x5d, 0x5c, 0x5c, 0x51, 0xa5, 0x8a, 0x92, 0xba, 0x43, 0xd8, - 0xe7, 0x41, 0xaa, 0x9d, 0xcb, 0x64, 0x24, 0xf6, 0x8d, 0x44, 0x49, 0xdd, 0xf9, 0xda, 0xf2, 0x89, - 0xd2, 0x93, 0x20, 0xa9, 0x68, 0x09, 0xa0, 0x9f, 0x53, 0x29, 0xed, 0x8c, 0x1a, 0x91, 0x28, 0xa9, - 0xb7, 0x89, 0xea, 0x53, 0x90, 0xa9, 0xea, 0xbe, 0xf8, 0x91, 0x4f, 0xba, 0xee, 0x04, 0xcf, 0xac, - 0x71, 0x2b, 0xb3, 0xff, 0x7b, 0x77, 0x39, 0x6d, 0x11, 0x81, 0xca, 0xe4, 0x95, 0xa7, 0xff, 0xee, - 0x9d, 0xa5, 0x13, 0xdf, 0x7f, 0x67, 0x49, 0x7a, 0xff, 0x9d, 0x25, 0xe9, 0x7f, 0xde, 0x59, 0x92, - 0x6e, 0xdf, 0x5b, 0x92, 0xde, 0xba, 0xb7, 0x24, 0x7d, 0xfb, 0xde, 0x92, 0xf4, 0x9d, 0x7b, 0x4b, - 0xd2, 0x9d, 0x7b, 0x4b, 0xd2, 0xdb, 0xf7, 0x96, 0xa4, 0xef, 0xdf, 0x5b, 0x92, 0xfe, 0x2f, 0x00, - 0x00, 0xff, 0xff, 0x47, 0x52, 0xf9, 0xbf, 0xbc, 0x2f, 0x00, 0x00, + // 3850 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x6b, 0x70, 0x1b, 0xd7, + 0x75, 0xd6, 0xe2, 0x41, 0x02, 0x07, 0x20, 0xb8, 0xbc, 0xa4, 0x24, 0x88, 0xb6, 0x49, 0x09, 0x7e, + 0xd1, 0xb2, 0x43, 0xa5, 0xb4, 0x24, 0xcb, 0xab, 0x26, 0x1e, 0x00, 0x84, 0x18, 0xa8, 0x7c, 0x65, + 0x41, 0xc4, 0x72, 0xfa, 0x63, 0x67, 0xb9, 0xb8, 0x00, 0x57, 0x5a, 0xec, 0x22, 0xbb, 0x0b, 0x49, + 0xd4, 0x2f, 0x75, 0xdc, 0x57, 0xa6, 0xd3, 0xa6, 0xaf, 0x99, 0x26, 0xae, 0xe3, 0x3a, 0x99, 0x69, + 0xed, 0x26, 0x7d, 0xa5, 0x8f, 0x34, 0xd3, 0x3f, 0xcd, 0x9f, 0xb4, 0xfa, 0xd5, 0x71, 0xfe, 0x75, + 0x3a, 0x1d, 0x8d, 0xad, 0x7a, 0xa6, 0x2f, 0xb7, 0x75, 0x1b, 0xcf, 0xb4, 0x53, 0xff, 0xc9, 0xdc, + 0xd7, 0x62, 0xf1, 0x20, 0x17, 0xcc, 0x8c, 0xe3, 0x5f, 0xe4, 0x3d, 0xf7, 0x7c, 0xdf, 0x9e, 0x3d, + 0xf7, 0xdc, 0x73, 0xce, 0xbd, 0x58, 0xf8, 0xa7, 0x0b, 0x70, 0xba, 0xe5, 0x38, 0x2d, 0x0b, 0x9f, + 0xeb, 0xb8, 0x8e, 0xef, 0xec, 0x76, 0x9b, 0xe7, 0x1a, 0xd8, 0x33, 0x5c, 0xb3, 0xe3, 0x3b, 0xee, + 0x32, 0x95, 0xa1, 0x69, 0xa6, 0xb1, 0x2c, 0x34, 0x0a, 0x1b, 0x30, 0x73, 0xc5, 0xb4, 0xf0, 0x6a, + 0xa0, 0x58, 0xc3, 0x3e, 0xba, 0x04, 0x89, 0xa6, 0x69, 0xe1, 0xbc, 0x74, 0x3a, 0xbe, 0x94, 0x59, + 0x79, 0x6c, 0x79, 0x00, 0xb4, 0xdc, 0x8f, 0xd8, 0x26, 0x62, 0x95, 0x22, 0x0a, 0xef, 0x26, 0x60, + 0x76, 0xc4, 0x2c, 0x42, 0x90, 0xb0, 0xf5, 0x36, 0x61, 0x94, 0x96, 0xd2, 0x2a, 0xfd, 0x1f, 0xe5, + 0x61, 0xb2, 0xa3, 0x1b, 0x37, 0xf4, 0x16, 0xce, 0xc7, 0xa8, 0x58, 0x0c, 0xd1, 0x02, 0x40, 0x03, + 0x77, 0xb0, 0xdd, 0xc0, 0xb6, 0xb1, 0x9f, 0x8f, 0x9f, 0x8e, 0x2f, 0xa5, 0xd5, 0x90, 0x04, 0x3d, + 0x0d, 0x33, 0x9d, 0xee, 0xae, 0x65, 0x1a, 0x5a, 0x48, 0x0d, 0x4e, 0xc7, 0x97, 0x92, 0xaa, 0xcc, + 0x26, 0x56, 0x7b, 0xca, 0x4f, 0xc2, 0xf4, 0x2d, 0xac, 0xdf, 0x08, 0xab, 0x66, 0xa8, 0x6a, 0x8e, + 0x88, 0x43, 0x8a, 0x65, 0xc8, 0xb6, 0xb1, 0xe7, 0xe9, 0x2d, 0xac, 0xf9, 0xfb, 0x1d, 0x9c, 0x4f, + 0xd0, 0xb7, 0x3f, 0x3d, 0xf4, 0xf6, 0x83, 0x6f, 0x9e, 0xe1, 0xa8, 0x9d, 0xfd, 0x0e, 0x46, 0x45, + 0x48, 0x63, 0xbb, 0xdb, 0x66, 0x0c, 0xc9, 0x03, 0xfc, 0x57, 0xb1, 0xbb, 0xed, 0x41, 0x96, 0x14, + 0x81, 0x71, 0x8a, 0x49, 0x0f, 0xbb, 0x37, 0x4d, 0x03, 0xe7, 0x27, 0x28, 0xc1, 0x93, 0x43, 0x04, + 0x35, 0x36, 0x3f, 0xc8, 0x21, 0x70, 0xa8, 0x0c, 0x69, 0x7c, 0xdb, 0xc7, 0xb6, 0x67, 0x3a, 0x76, + 0x7e, 0x92, 0x92, 0x3c, 0x3e, 0x62, 0x15, 0xb1, 0xd5, 0x18, 0xa4, 0xe8, 0xe1, 0xd0, 0x45, 0x98, + 0x74, 0x3a, 0xbe, 0xe9, 0xd8, 0x5e, 0x3e, 0x75, 0x5a, 0x5a, 0xca, 0xac, 0x3c, 0x3c, 0x32, 0x10, + 0xb6, 0x98, 0x8e, 0x2a, 0x94, 0x51, 0x15, 0x64, 0xcf, 0xe9, 0xba, 0x06, 0xd6, 0x0c, 0xa7, 0x81, + 0x35, 0xd3, 0x6e, 0x3a, 0xf9, 0x34, 0x25, 0x58, 0x1c, 0x7e, 0x11, 0xaa, 0x58, 0x76, 0x1a, 0xb8, + 0x6a, 0x37, 0x1d, 0x35, 0xe7, 0xf5, 0x8d, 0xd1, 0x09, 0x98, 0xf0, 0xf6, 0x6d, 0x5f, 0xbf, 0x9d, + 0xcf, 0xd2, 0x08, 0xe1, 0xa3, 0xc2, 0xff, 0x26, 0x61, 0x7a, 0x9c, 0x10, 0xbb, 0x0c, 0xc9, 0x26, + 0x79, 0xcb, 0x7c, 0xec, 0x28, 0x3e, 0x60, 0x98, 0x7e, 0x27, 0x4e, 0xfc, 0x88, 0x4e, 0x2c, 0x42, + 0xc6, 0xc6, 0x9e, 0x8f, 0x1b, 0x2c, 0x22, 0xe2, 0x63, 0xc6, 0x14, 0x30, 0xd0, 0x70, 0x48, 0x25, + 0x7e, 0xa4, 0x90, 0xba, 0x06, 0xd3, 0x81, 0x49, 0x9a, 0xab, 0xdb, 0x2d, 0x11, 0x9b, 0xe7, 0xa2, + 0x2c, 0x59, 0xae, 0x08, 0x9c, 0x4a, 0x60, 0x6a, 0x0e, 0xf7, 0x8d, 0xd1, 0x2a, 0x80, 0x63, 0x63, + 0xa7, 0xa9, 0x35, 0xb0, 0x61, 0xe5, 0x53, 0x07, 0x78, 0x69, 0x8b, 0xa8, 0x0c, 0x79, 0xc9, 0x61, + 0x52, 0xc3, 0x42, 0xcf, 0xf7, 0x42, 0x6d, 0xf2, 0x80, 0x48, 0xd9, 0x60, 0x9b, 0x6c, 0x28, 0xda, + 0xea, 0x90, 0x73, 0x31, 0x89, 0x7b, 0xdc, 0xe0, 0x6f, 0x96, 0xa6, 0x46, 0x2c, 0x47, 0xbe, 0x99, + 0xca, 0x61, 0xec, 0xc5, 0xa6, 0xdc, 0xf0, 0x10, 0x3d, 0x0a, 0x81, 0x40, 0xa3, 0x61, 0x05, 0x34, + 0x0b, 0x65, 0x85, 0x70, 0x53, 0x6f, 0xe3, 0xf9, 0x4b, 0x90, 0xeb, 0x77, 0x0f, 0x9a, 0x83, 0xa4, + 0xe7, 0xeb, 0xae, 0x4f, 0xa3, 0x30, 0xa9, 0xb2, 0x01, 0x92, 0x21, 0x8e, 0xed, 0x06, 0xcd, 0x72, + 0x49, 0x95, 0xfc, 0x3b, 0xff, 0x1c, 0x4c, 0xf5, 0x3d, 0x7e, 0x5c, 0x60, 0xe1, 0xcb, 0x13, 0x30, + 0x37, 0x2a, 0xe6, 0x46, 0x86, 0xff, 0x09, 0x98, 0xb0, 0xbb, 0xed, 0x5d, 0xec, 0xe6, 0xe3, 0x94, + 0x81, 0x8f, 0x50, 0x11, 0x92, 0x96, 0xbe, 0x8b, 0xad, 0x7c, 0xe2, 0xb4, 0xb4, 0x94, 0x5b, 0x79, + 0x7a, 0xac, 0xa8, 0x5e, 0x5e, 0x27, 0x10, 0x95, 0x21, 0xd1, 0xa7, 0x21, 0xc1, 0x53, 0x1c, 0x61, + 0x38, 0x3b, 0x1e, 0x03, 0x89, 0x45, 0x95, 0xe2, 0xd0, 0x43, 0x90, 0x26, 0x7f, 0x99, 0x6f, 0x27, + 0xa8, 0xcd, 0x29, 0x22, 0x20, 0x7e, 0x45, 0xf3, 0x90, 0xa2, 0x61, 0xd6, 0xc0, 0xa2, 0x34, 0x04, + 0x63, 0xb2, 0x30, 0x0d, 0xdc, 0xd4, 0xbb, 0x96, 0xaf, 0xdd, 0xd4, 0xad, 0x2e, 0xa6, 0x01, 0x93, + 0x56, 0xb3, 0x5c, 0xf8, 0x39, 0x22, 0x43, 0x8b, 0x90, 0x61, 0x51, 0x69, 0xda, 0x0d, 0x7c, 0x9b, + 0x66, 0x9f, 0xa4, 0xca, 0x02, 0xb5, 0x4a, 0x24, 0xe4, 0xf1, 0xd7, 0x3d, 0xc7, 0x16, 0x4b, 0x4b, + 0x1f, 0x41, 0x04, 0xf4, 0xf1, 0xcf, 0x0d, 0x26, 0xbe, 0x47, 0x46, 0xbf, 0xde, 0x60, 0x2c, 0x16, + 0xbe, 0x1d, 0x83, 0x04, 0xdd, 0x6f, 0xd3, 0x90, 0xd9, 0x79, 0x69, 0xbb, 0xa2, 0xad, 0x6e, 0xd5, + 0x4b, 0xeb, 0x15, 0x59, 0x42, 0x39, 0x00, 0x2a, 0xb8, 0xb2, 0xbe, 0x55, 0xdc, 0x91, 0x63, 0xc1, + 0xb8, 0xba, 0xb9, 0x73, 0xf1, 0xbc, 0x1c, 0x0f, 0x00, 0x75, 0x26, 0x48, 0x84, 0x15, 0x9e, 0x5d, + 0x91, 0x93, 0x48, 0x86, 0x2c, 0x23, 0xa8, 0x5e, 0xab, 0xac, 0x5e, 0x3c, 0x2f, 0x4f, 0xf4, 0x4b, + 0x9e, 0x5d, 0x91, 0x27, 0xd1, 0x14, 0xa4, 0xa9, 0xa4, 0xb4, 0xb5, 0xb5, 0x2e, 0xa7, 0x02, 0xce, + 0xda, 0x8e, 0x5a, 0xdd, 0x5c, 0x93, 0xd3, 0x01, 0xe7, 0x9a, 0xba, 0x55, 0xdf, 0x96, 0x21, 0x60, + 0xd8, 0xa8, 0xd4, 0x6a, 0xc5, 0xb5, 0x8a, 0x9c, 0x09, 0x34, 0x4a, 0x2f, 0xed, 0x54, 0x6a, 0x72, + 0xb6, 0xcf, 0xac, 0x67, 0x57, 0xe4, 0xa9, 0xe0, 0x11, 0x95, 0xcd, 0xfa, 0x86, 0x9c, 0x43, 0x33, + 0x30, 0xc5, 0x1e, 0x21, 0x8c, 0x98, 0x1e, 0x10, 0x5d, 0x3c, 0x2f, 0xcb, 0x3d, 0x43, 0x18, 0xcb, + 0x4c, 0x9f, 0xe0, 0xe2, 0x79, 0x19, 0x15, 0xca, 0x90, 0xa4, 0xd1, 0x85, 0x10, 0xe4, 0xd6, 0x8b, + 0xa5, 0xca, 0xba, 0xb6, 0xb5, 0xbd, 0x53, 0xdd, 0xda, 0x2c, 0xae, 0xcb, 0x52, 0x4f, 0xa6, 0x56, + 0x3e, 0x5b, 0xaf, 0xaa, 0x95, 0x55, 0x39, 0x16, 0x96, 0x6d, 0x57, 0x8a, 0x3b, 0x95, 0x55, 0x39, + 0x5e, 0x30, 0x60, 0x6e, 0x54, 0x9e, 0x19, 0xb9, 0x33, 0x42, 0x4b, 0x1c, 0x3b, 0x60, 0x89, 0x29, + 0xd7, 0xd0, 0x12, 0x7f, 0x5d, 0x82, 0xd9, 0x11, 0xb9, 0x76, 0xe4, 0x43, 0x5e, 0x80, 0x24, 0x0b, + 0x51, 0x56, 0x7d, 0x9e, 0x1a, 0x99, 0xb4, 0x69, 0xc0, 0x0e, 0x55, 0x20, 0x8a, 0x0b, 0x57, 0xe0, + 0xf8, 0x01, 0x15, 0x98, 0x50, 0x0c, 0x19, 0xf9, 0xb2, 0x04, 0xf9, 0x83, 0xb8, 0x23, 0x12, 0x45, + 0xac, 0x2f, 0x51, 0x5c, 0x1e, 0x34, 0xe0, 0xcc, 0xc1, 0xef, 0x30, 0x64, 0xc5, 0x1b, 0x12, 0x9c, + 0x18, 0xdd, 0xa8, 0x8c, 0xb4, 0xe1, 0xd3, 0x30, 0xd1, 0xc6, 0xfe, 0x9e, 0x23, 0x8a, 0xf5, 0x13, + 0x23, 0x4a, 0x00, 0x99, 0x1e, 0xf4, 0x15, 0x47, 0x85, 0x6b, 0x48, 0xfc, 0xa0, 0x6e, 0x83, 0x59, + 0x33, 0x64, 0xe9, 0x17, 0x63, 0x70, 0x7c, 0x24, 0xf9, 0x48, 0x43, 0x1f, 0x01, 0x30, 0xed, 0x4e, + 0xd7, 0x67, 0x05, 0x99, 0xe5, 0xa7, 0x34, 0x95, 0xd0, 0xbd, 0x4f, 0x72, 0x4f, 0xd7, 0x0f, 0xe6, + 0xe3, 0x74, 0x1e, 0x98, 0x88, 0x2a, 0x5c, 0xea, 0x19, 0x9a, 0xa0, 0x86, 0x2e, 0x1c, 0xf0, 0xa6, + 0x43, 0xb5, 0xee, 0x93, 0x20, 0x1b, 0x96, 0x89, 0x6d, 0x5f, 0xf3, 0x7c, 0x17, 0xeb, 0x6d, 0xd3, + 0x6e, 0xd1, 0x04, 0x9c, 0x52, 0x92, 0x4d, 0xdd, 0xf2, 0xb0, 0x3a, 0xcd, 0xa6, 0x6b, 0x62, 0x96, + 0x20, 0x68, 0x95, 0x71, 0x43, 0x88, 0x89, 0x3e, 0x04, 0x9b, 0x0e, 0x10, 0x85, 0x6f, 0x4e, 0x42, + 0x26, 0xd4, 0xd6, 0xa1, 0x33, 0x90, 0xbd, 0xae, 0xdf, 0xd4, 0x35, 0xd1, 0xaa, 0x33, 0x4f, 0x64, + 0x88, 0x6c, 0x9b, 0xb7, 0xeb, 0x9f, 0x84, 0x39, 0xaa, 0xe2, 0x74, 0x7d, 0xec, 0x6a, 0x86, 0xa5, + 0x7b, 0x1e, 0x75, 0x5a, 0x8a, 0xaa, 0x22, 0x32, 0xb7, 0x45, 0xa6, 0xca, 0x62, 0x06, 0x5d, 0x80, + 0x59, 0x8a, 0x68, 0x77, 0x2d, 0xdf, 0xec, 0x58, 0x58, 0x23, 0x87, 0x07, 0x8f, 0x26, 0xe2, 0xc0, + 0xb2, 0x19, 0xa2, 0xb1, 0xc1, 0x15, 0x88, 0x45, 0x1e, 0x5a, 0x85, 0x47, 0x28, 0xac, 0x85, 0x6d, + 0xec, 0xea, 0x3e, 0xd6, 0xf0, 0x17, 0xba, 0xba, 0xe5, 0x69, 0xba, 0xdd, 0xd0, 0xf6, 0x74, 0x6f, + 0x2f, 0x3f, 0x47, 0x08, 0x4a, 0xb1, 0xbc, 0xa4, 0x9e, 0x22, 0x8a, 0x6b, 0x5c, 0xaf, 0x42, 0xd5, + 0x8a, 0x76, 0xe3, 0x33, 0xba, 0xb7, 0x87, 0x14, 0x38, 0x41, 0x59, 0x3c, 0xdf, 0x35, 0xed, 0x96, + 0x66, 0xec, 0x61, 0xe3, 0x86, 0xd6, 0xf5, 0x9b, 0x97, 0xf2, 0x0f, 0x85, 0x9f, 0x4f, 0x2d, 0xac, + 0x51, 0x9d, 0x32, 0x51, 0xa9, 0xfb, 0xcd, 0x4b, 0xa8, 0x06, 0x59, 0xb2, 0x18, 0x6d, 0xf3, 0x0e, + 0xd6, 0x9a, 0x8e, 0x4b, 0x2b, 0x4b, 0x6e, 0xc4, 0xce, 0x0e, 0x79, 0x70, 0x79, 0x8b, 0x03, 0x36, + 0x9c, 0x06, 0x56, 0x92, 0xb5, 0xed, 0x4a, 0x65, 0x55, 0xcd, 0x08, 0x96, 0x2b, 0x8e, 0x4b, 0x02, + 0xaa, 0xe5, 0x04, 0x0e, 0xce, 0xb0, 0x80, 0x6a, 0x39, 0xc2, 0xbd, 0x17, 0x60, 0xd6, 0x30, 0xd8, + 0x3b, 0x9b, 0x86, 0xc6, 0x5b, 0x7c, 0x2f, 0x2f, 0xf7, 0x39, 0xcb, 0x30, 0xd6, 0x98, 0x02, 0x8f, + 0x71, 0x0f, 0x3d, 0x0f, 0xc7, 0x7b, 0xce, 0x0a, 0x03, 0x67, 0x86, 0xde, 0x72, 0x10, 0x7a, 0x01, + 0x66, 0x3b, 0xfb, 0xc3, 0x40, 0xd4, 0xf7, 0xc4, 0xce, 0xfe, 0x20, 0xec, 0x71, 0x7a, 0x6c, 0x73, + 0xb1, 0xa1, 0xfb, 0xb8, 0x91, 0x3f, 0x19, 0xd6, 0x0e, 0x4d, 0xa0, 0x73, 0x20, 0x1b, 0x86, 0x86, + 0x6d, 0x7d, 0xd7, 0xc2, 0x9a, 0xee, 0x62, 0x5b, 0xf7, 0xf2, 0x8b, 0x61, 0xe5, 0x9c, 0x61, 0x54, + 0xe8, 0x6c, 0x91, 0x4e, 0xa2, 0xb3, 0x30, 0xe3, 0xec, 0x5e, 0x37, 0x58, 0x64, 0x69, 0x1d, 0x17, + 0x37, 0xcd, 0xdb, 0xf9, 0xc7, 0xa8, 0x9b, 0xa6, 0xc9, 0x04, 0x8d, 0xab, 0x6d, 0x2a, 0x46, 0x4f, + 0x81, 0x6c, 0x78, 0x7b, 0xba, 0xdb, 0xa1, 0xa5, 0xdd, 0xeb, 0xe8, 0x06, 0xce, 0x3f, 0xce, 0x54, + 0x99, 0x7c, 0x53, 0x88, 0x49, 0x64, 0x7b, 0xb7, 0xcc, 0xa6, 0x2f, 0x18, 0x9f, 0x64, 0x91, 0x4d, + 0x65, 0x9c, 0xed, 0x1a, 0xcc, 0x75, 0x6d, 0xd3, 0xf6, 0xb1, 0xdb, 0x71, 0x31, 0x69, 0xe2, 0xd9, + 0x4e, 0xcc, 0xff, 0xf3, 0xe4, 0x01, 0x6d, 0x78, 0x3d, 0xac, 0xcd, 0x02, 0x40, 0x9d, 0xed, 0x0e, + 0x0b, 0x0b, 0x0a, 0x64, 0xc3, 0x71, 0x81, 0xd2, 0xc0, 0x22, 0x43, 0x96, 0x48, 0x8d, 0x2d, 0x6f, + 0xad, 0x92, 0xea, 0xf8, 0xf9, 0x8a, 0x1c, 0x23, 0x55, 0x7a, 0xbd, 0xba, 0x53, 0xd1, 0xd4, 0xfa, + 0xe6, 0x4e, 0x75, 0xa3, 0x22, 0xc7, 0xcf, 0xa6, 0x53, 0xff, 0x32, 0x29, 0xdf, 0xbd, 0x7b, 0xf7, + 0x6e, 0xac, 0xf0, 0xbd, 0x18, 0xe4, 0xfa, 0x3b, 0x63, 0xf4, 0x93, 0x70, 0x52, 0x1c, 0x63, 0x3d, + 0xec, 0x6b, 0xb7, 0x4c, 0x97, 0x86, 0x6a, 0x5b, 0x67, 0xbd, 0x65, 0xe0, 0xe5, 0x39, 0xae, 0x55, + 0xc3, 0xfe, 0x8b, 0xa6, 0x4b, 0x02, 0xb1, 0xad, 0xfb, 0x68, 0x1d, 0x16, 0x6d, 0x47, 0xf3, 0x7c, + 0xdd, 0x6e, 0xe8, 0x6e, 0x43, 0xeb, 0x5d, 0x20, 0x68, 0xba, 0x61, 0x60, 0xcf, 0x73, 0x58, 0x89, + 0x08, 0x58, 0x1e, 0xb6, 0x9d, 0x1a, 0x57, 0xee, 0xe5, 0xce, 0x22, 0x57, 0x1d, 0x88, 0x88, 0xf8, + 0x41, 0x11, 0xf1, 0x10, 0xa4, 0xdb, 0x7a, 0x47, 0xc3, 0xb6, 0xef, 0xee, 0xd3, 0x7e, 0x2e, 0xa5, + 0xa6, 0xda, 0x7a, 0xa7, 0x42, 0xc6, 0x1f, 0xdd, 0x1a, 0x84, 0xfd, 0xf8, 0x8f, 0x71, 0xc8, 0x86, + 0x7b, 0x3a, 0xd2, 0x22, 0x1b, 0x34, 0x7f, 0x4b, 0x74, 0x87, 0x3f, 0x7a, 0x68, 0x07, 0xb8, 0x5c, + 0x26, 0x89, 0x5d, 0x99, 0x60, 0x9d, 0x96, 0xca, 0x90, 0xa4, 0xa8, 0x92, 0x3d, 0x8d, 0x59, 0xff, + 0x9e, 0x52, 0xf9, 0x08, 0xad, 0xc1, 0xc4, 0x75, 0x8f, 0x72, 0x4f, 0x50, 0xee, 0xc7, 0x0e, 0xe7, + 0xbe, 0x5a, 0xa3, 0xe4, 0xe9, 0xab, 0x35, 0x6d, 0x73, 0x4b, 0xdd, 0x28, 0xae, 0xab, 0x1c, 0x8e, + 0x4e, 0x41, 0xc2, 0xd2, 0xef, 0xec, 0xf7, 0x97, 0x00, 0x2a, 0x1a, 0xd7, 0xf1, 0xa7, 0x20, 0x71, + 0x0b, 0xeb, 0x37, 0xfa, 0x13, 0x2f, 0x15, 0x7d, 0x84, 0xa1, 0x7f, 0x0e, 0x92, 0xd4, 0x5f, 0x08, + 0x80, 0x7b, 0x4c, 0x3e, 0x86, 0x52, 0x90, 0x28, 0x6f, 0xa9, 0x24, 0xfc, 0x65, 0xc8, 0x32, 0xa9, + 0xb6, 0x5d, 0xad, 0x94, 0x2b, 0x72, 0xac, 0x70, 0x01, 0x26, 0x98, 0x13, 0xc8, 0xd6, 0x08, 0xdc, + 0x20, 0x1f, 0xe3, 0x43, 0xce, 0x21, 0x89, 0xd9, 0xfa, 0x46, 0xa9, 0xa2, 0xca, 0xb1, 0xf0, 0xf2, + 0x7a, 0x90, 0x0d, 0xb7, 0x73, 0x3f, 0x9e, 0x98, 0xfa, 0x2b, 0x09, 0x32, 0xa1, 0xf6, 0x8c, 0x34, + 0x06, 0xba, 0x65, 0x39, 0xb7, 0x34, 0xdd, 0x32, 0x75, 0x8f, 0x07, 0x05, 0x50, 0x51, 0x91, 0x48, + 0xc6, 0x5d, 0xb4, 0x1f, 0x8b, 0xf1, 0xaf, 0x49, 0x20, 0x0f, 0xb6, 0x76, 0x03, 0x06, 0x4a, 0x1f, + 0xab, 0x81, 0xaf, 0x4a, 0x90, 0xeb, 0xef, 0xe7, 0x06, 0xcc, 0x3b, 0xf3, 0xb1, 0x9a, 0xf7, 0x76, + 0x0c, 0xa6, 0xfa, 0xba, 0xb8, 0x71, 0xad, 0xfb, 0x02, 0xcc, 0x98, 0x0d, 0xdc, 0xee, 0x38, 0x3e, + 0xb6, 0x8d, 0x7d, 0xcd, 0xc2, 0x37, 0xb1, 0x95, 0x2f, 0xd0, 0x44, 0x71, 0xee, 0xf0, 0x3e, 0x71, + 0xb9, 0xda, 0xc3, 0xad, 0x13, 0x98, 0x32, 0x5b, 0x5d, 0xad, 0x6c, 0x6c, 0x6f, 0xed, 0x54, 0x36, + 0xcb, 0x2f, 0x69, 0xf5, 0xcd, 0x9f, 0xda, 0xdc, 0x7a, 0x71, 0x53, 0x95, 0xcd, 0x01, 0xb5, 0x8f, + 0x70, 0xab, 0x6f, 0x83, 0x3c, 0x68, 0x14, 0x3a, 0x09, 0xa3, 0xcc, 0x92, 0x8f, 0xa1, 0x59, 0x98, + 0xde, 0xdc, 0xd2, 0x6a, 0xd5, 0xd5, 0x8a, 0x56, 0xb9, 0x72, 0xa5, 0x52, 0xde, 0xa9, 0xb1, 0x83, + 0x73, 0xa0, 0xbd, 0xd3, 0xbf, 0xa9, 0x5f, 0x89, 0xc3, 0xec, 0x08, 0x4b, 0x50, 0x91, 0xf7, 0xec, + 0xec, 0x18, 0xf1, 0x89, 0x71, 0xac, 0x5f, 0x26, 0x5d, 0xc1, 0xb6, 0xee, 0xfa, 0xbc, 0xc5, 0x7f, + 0x0a, 0x88, 0x97, 0x6c, 0xdf, 0x6c, 0x9a, 0xd8, 0xe5, 0xf7, 0x0c, 0xac, 0x91, 0x9f, 0xee, 0xc9, + 0xd9, 0x55, 0xc3, 0x33, 0x80, 0x3a, 0x8e, 0x67, 0xfa, 0xe6, 0x4d, 0xac, 0x99, 0xb6, 0xb8, 0x94, + 0x20, 0x8d, 0x7d, 0x42, 0x95, 0xc5, 0x4c, 0xd5, 0xf6, 0x03, 0x6d, 0x1b, 0xb7, 0xf4, 0x01, 0x6d, + 0x92, 0xc0, 0xe3, 0xaa, 0x2c, 0x66, 0x02, 0xed, 0x33, 0x90, 0x6d, 0x38, 0x5d, 0xd2, 0x26, 0x31, + 0x3d, 0x52, 0x2f, 0x24, 0x35, 0xc3, 0x64, 0x81, 0x0a, 0xef, 0x63, 0x7b, 0xb7, 0x21, 0x59, 0x35, + 0xc3, 0x64, 0x4c, 0xe5, 0x49, 0x98, 0xd6, 0x5b, 0x2d, 0x97, 0x90, 0x0b, 0x22, 0xd6, 0x99, 0xe7, + 0x02, 0x31, 0x55, 0x9c, 0xbf, 0x0a, 0x29, 0xe1, 0x07, 0x52, 0x92, 0x89, 0x27, 0xb4, 0x0e, 0xbb, + 0x93, 0x8a, 0x2d, 0xa5, 0xd5, 0x94, 0x2d, 0x26, 0xcf, 0x40, 0xd6, 0xf4, 0xb4, 0xde, 0xe5, 0x68, + 0xec, 0x74, 0x6c, 0x29, 0xa5, 0x66, 0x4c, 0x2f, 0xb8, 0x0d, 0x2b, 0xbc, 0x11, 0x83, 0x5c, 0xff, + 0xe5, 0x2e, 0x5a, 0x85, 0x94, 0xe5, 0x18, 0x3a, 0x0d, 0x2d, 0xf6, 0xcb, 0xc2, 0x52, 0xc4, 0x7d, + 0xf0, 0xf2, 0x3a, 0xd7, 0x57, 0x03, 0xe4, 0xfc, 0xdf, 0x49, 0x90, 0x12, 0x62, 0x74, 0x02, 0x12, + 0x1d, 0xdd, 0xdf, 0xa3, 0x74, 0xc9, 0x52, 0x4c, 0x96, 0x54, 0x3a, 0x26, 0x72, 0xaf, 0xa3, 0xdb, + 0x34, 0x04, 0xb8, 0x9c, 0x8c, 0xc9, 0xba, 0x5a, 0x58, 0x6f, 0xd0, 0xb6, 0xdf, 0x69, 0xb7, 0xb1, + 0xed, 0x7b, 0x62, 0x5d, 0xb9, 0xbc, 0xcc, 0xc5, 0xe8, 0x69, 0x98, 0xf1, 0x5d, 0xdd, 0xb4, 0xfa, + 0x74, 0x13, 0x54, 0x57, 0x16, 0x13, 0x81, 0xb2, 0x02, 0xa7, 0x04, 0x6f, 0x03, 0xfb, 0xba, 0xb1, + 0x87, 0x1b, 0x3d, 0xd0, 0x04, 0xbd, 0x39, 0x3c, 0xc9, 0x15, 0x56, 0xf9, 0xbc, 0xc0, 0x16, 0xbe, + 0x2f, 0xc1, 0x8c, 0x38, 0xa8, 0x34, 0x02, 0x67, 0x6d, 0x00, 0xe8, 0xb6, 0xed, 0xf8, 0x61, 0x77, + 0x0d, 0x87, 0xf2, 0x10, 0x6e, 0xb9, 0x18, 0x80, 0xd4, 0x10, 0xc1, 0x7c, 0x1b, 0xa0, 0x37, 0x73, + 0xa0, 0xdb, 0x16, 0x21, 0xc3, 0x6f, 0xee, 0xe9, 0xcf, 0x3f, 0xec, 0x68, 0x0b, 0x4c, 0x44, 0x4e, + 0x34, 0x68, 0x0e, 0x92, 0xbb, 0xb8, 0x65, 0xda, 0xfc, 0x3e, 0x91, 0x0d, 0xc4, 0x2d, 0x65, 0x22, + 0xb8, 0xa5, 0x2c, 0x5d, 0x83, 0x59, 0xc3, 0x69, 0x0f, 0x9a, 0x5b, 0x92, 0x07, 0x8e, 0xd7, 0xde, + 0x67, 0xa4, 0xcf, 0x43, 0xaf, 0xc5, 0xfc, 0x7a, 0x2c, 0xbe, 0xb6, 0x5d, 0xfa, 0x46, 0x6c, 0x7e, + 0x8d, 0xe1, 0xb6, 0xc5, 0x6b, 0xaa, 0xb8, 0x69, 0x61, 0x83, 0x98, 0x0e, 0x3f, 0x78, 0x02, 0x3e, + 0xd1, 0x32, 0xfd, 0xbd, 0xee, 0xee, 0xb2, 0xe1, 0xb4, 0xcf, 0xb5, 0x9c, 0x96, 0xd3, 0xfb, 0xb9, + 0x8b, 0x8c, 0xe8, 0x80, 0xfe, 0xc7, 0x7f, 0xf2, 0x4a, 0x07, 0xd2, 0xf9, 0xc8, 0xdf, 0xc7, 0x94, + 0x4d, 0x98, 0xe5, 0xca, 0x1a, 0xbd, 0x73, 0x67, 0x47, 0x03, 0x74, 0xe8, 0xbd, 0x4b, 0xfe, 0x5b, + 0xef, 0xd2, 0x5a, 0xad, 0xce, 0x70, 0x28, 0x99, 0x63, 0x07, 0x08, 0x45, 0x85, 0xe3, 0x7d, 0x7c, + 0x6c, 0x5f, 0x62, 0x37, 0x82, 0xf1, 0x7b, 0x9c, 0x71, 0x36, 0xc4, 0x58, 0xe3, 0x50, 0xa5, 0x0c, + 0x53, 0x47, 0xe1, 0xfa, 0x1b, 0xce, 0x95, 0xc5, 0x61, 0x92, 0x35, 0x98, 0xa6, 0x24, 0x46, 0xd7, + 0xf3, 0x9d, 0x36, 0x4d, 0x7a, 0x87, 0xd3, 0xfc, 0xed, 0xbb, 0x6c, 0xa3, 0xe4, 0x08, 0xac, 0x1c, + 0xa0, 0x14, 0x05, 0xe8, 0xcf, 0x0c, 0x0d, 0x6c, 0x58, 0x11, 0x0c, 0xf7, 0xb8, 0x21, 0x81, 0xbe, + 0xf2, 0x39, 0x98, 0x23, 0xff, 0xd3, 0x9c, 0x14, 0xb6, 0x24, 0xfa, 0x96, 0x29, 0xff, 0xfd, 0x97, + 0xd9, 0x5e, 0x9c, 0x0d, 0x08, 0x42, 0x36, 0x85, 0x56, 0xb1, 0x85, 0x7d, 0x1f, 0xbb, 0x9e, 0xa6, + 0x5b, 0xa3, 0xcc, 0x0b, 0x1d, 0xd3, 0xf3, 0x5f, 0x79, 0xaf, 0x7f, 0x15, 0xd7, 0x18, 0xb2, 0x68, + 0x59, 0x4a, 0x1d, 0x4e, 0x8e, 0x88, 0x8a, 0x31, 0x38, 0x5f, 0xe1, 0x9c, 0x73, 0x43, 0x91, 0x41, + 0x68, 0xb7, 0x41, 0xc8, 0x83, 0xb5, 0x1c, 0x83, 0xf3, 0xb7, 0x39, 0x27, 0xe2, 0x58, 0xb1, 0xa4, + 0x84, 0xf1, 0x2a, 0xcc, 0xdc, 0xc4, 0xee, 0xae, 0xe3, 0xf1, 0xab, 0x91, 0x31, 0xe8, 0x5e, 0xe5, + 0x74, 0xd3, 0x1c, 0x48, 0xef, 0x4a, 0x08, 0xd7, 0xf3, 0x90, 0x6a, 0xea, 0x06, 0x1e, 0x83, 0xe2, + 0xab, 0x9c, 0x62, 0x92, 0xe8, 0x13, 0x68, 0x11, 0xb2, 0x2d, 0x87, 0x97, 0xa5, 0x68, 0xf8, 0x6b, + 0x1c, 0x9e, 0x11, 0x18, 0x4e, 0xd1, 0x71, 0x3a, 0x5d, 0x8b, 0xd4, 0xac, 0x68, 0x8a, 0xdf, 0x11, + 0x14, 0x02, 0xc3, 0x29, 0x8e, 0xe0, 0xd6, 0xd7, 0x05, 0x85, 0x17, 0xf2, 0xe7, 0x0b, 0x90, 0x71, + 0x6c, 0x6b, 0xdf, 0xb1, 0xc7, 0x31, 0xe2, 0x6b, 0x9c, 0x01, 0x38, 0x84, 0x10, 0x5c, 0x86, 0xf4, + 0xb8, 0x0b, 0xf1, 0xbb, 0xef, 0x89, 0xed, 0x21, 0x56, 0x60, 0x0d, 0xa6, 0x45, 0x82, 0x32, 0x1d, + 0x7b, 0x0c, 0x8a, 0xdf, 0xe3, 0x14, 0xb9, 0x10, 0x8c, 0xbf, 0x86, 0x8f, 0x3d, 0xbf, 0x85, 0xc7, + 0x21, 0x79, 0x43, 0xbc, 0x06, 0x87, 0x70, 0x57, 0xee, 0x62, 0xdb, 0xd8, 0x1b, 0x8f, 0xe1, 0x4d, + 0xe1, 0x4a, 0x81, 0x21, 0x14, 0x65, 0x98, 0x6a, 0xeb, 0xae, 0xb7, 0xa7, 0x5b, 0x63, 0x2d, 0xc7, + 0xef, 0x73, 0x8e, 0x6c, 0x00, 0xe2, 0x1e, 0xe9, 0xda, 0x47, 0xa1, 0xf9, 0x86, 0xf0, 0x48, 0x08, + 0xc6, 0xb7, 0x9e, 0xe7, 0xd3, 0x0b, 0xa8, 0xa3, 0xb0, 0x7d, 0x53, 0x6c, 0x3d, 0x86, 0xdd, 0x08, + 0x33, 0x5e, 0x86, 0xb4, 0x67, 0xde, 0x19, 0x8b, 0xe6, 0x0f, 0xc4, 0x4a, 0x53, 0x00, 0x01, 0xbf, + 0x04, 0xa7, 0x46, 0x96, 0x89, 0x31, 0xc8, 0xfe, 0x90, 0x93, 0x9d, 0x18, 0x51, 0x2a, 0x78, 0x4a, + 0x38, 0x2a, 0xe5, 0x1f, 0x89, 0x94, 0x80, 0x07, 0xb8, 0xb6, 0xc9, 0x41, 0xc1, 0xd3, 0x9b, 0x47, + 0xf3, 0xda, 0x1f, 0x0b, 0xaf, 0x31, 0x6c, 0x9f, 0xd7, 0x76, 0xe0, 0x04, 0x67, 0x3c, 0xda, 0xba, + 0xfe, 0x89, 0x48, 0xac, 0x0c, 0x5d, 0xef, 0x5f, 0xdd, 0x9f, 0x86, 0xf9, 0xc0, 0x9d, 0xa2, 0x23, + 0xf5, 0xb4, 0xb6, 0xde, 0x19, 0x83, 0xf9, 0x5b, 0x9c, 0x59, 0x64, 0xfc, 0xa0, 0xa5, 0xf5, 0x36, + 0xf4, 0x0e, 0x21, 0xbf, 0x06, 0x79, 0x41, 0xde, 0xb5, 0x5d, 0x6c, 0x38, 0x2d, 0xdb, 0xbc, 0x83, + 0x1b, 0x63, 0x50, 0xff, 0xe9, 0xc0, 0x52, 0xd5, 0x43, 0x70, 0xc2, 0x5c, 0x05, 0x39, 0xe8, 0x55, + 0x34, 0xb3, 0xdd, 0x71, 0x5c, 0x3f, 0x82, 0xf1, 0xcf, 0xc4, 0x4a, 0x05, 0xb8, 0x2a, 0x85, 0x29, + 0x15, 0xc8, 0xd1, 0xe1, 0xb8, 0x21, 0xf9, 0xe7, 0x9c, 0x68, 0xaa, 0x87, 0xe2, 0x89, 0xc3, 0x70, + 0xda, 0x1d, 0xdd, 0x1d, 0x27, 0xff, 0xfd, 0x85, 0x48, 0x1c, 0x1c, 0xc2, 0x13, 0x87, 0xbf, 0xdf, + 0xc1, 0xa4, 0xda, 0x8f, 0xc1, 0xf0, 0x6d, 0x91, 0x38, 0x04, 0x86, 0x53, 0x88, 0x86, 0x61, 0x0c, + 0x8a, 0xbf, 0x14, 0x14, 0x02, 0x43, 0x28, 0x3e, 0xdb, 0x2b, 0xb4, 0x2e, 0x6e, 0x99, 0x9e, 0xef, + 0xb2, 0x3e, 0xf8, 0x70, 0xaa, 0xef, 0xbc, 0xd7, 0xdf, 0x84, 0xa9, 0x21, 0xa8, 0x72, 0x15, 0xa6, + 0x07, 0x5a, 0x0c, 0x14, 0xf5, 0xcd, 0x42, 0xfe, 0x67, 0x3e, 0xe0, 0xc9, 0xa8, 0xbf, 0xc3, 0x50, + 0xd6, 0xc9, 0xba, 0xf7, 0xf7, 0x01, 0xd1, 0x64, 0x2f, 0x7f, 0x10, 0x2c, 0x7d, 0x5f, 0x1b, 0xa0, + 0x5c, 0x81, 0xa9, 0xbe, 0x1e, 0x20, 0x9a, 0xea, 0x67, 0x39, 0x55, 0x36, 0xdc, 0x02, 0x28, 0x17, + 0x20, 0x41, 0xea, 0x79, 0x34, 0xfc, 0xe7, 0x38, 0x9c, 0xaa, 0x2b, 0x9f, 0x82, 0x94, 0xa8, 0xe3, + 0xd1, 0xd0, 0x9f, 0xe7, 0xd0, 0x00, 0x42, 0xe0, 0xa2, 0x86, 0x47, 0xc3, 0x7f, 0x41, 0xc0, 0x05, + 0x84, 0xc0, 0xc7, 0x77, 0xe1, 0x77, 0x7f, 0x29, 0xc1, 0xf3, 0xb0, 0xf0, 0xdd, 0x65, 0x98, 0xe4, + 0xc5, 0x3b, 0x1a, 0xfd, 0x45, 0xfe, 0x70, 0x81, 0x50, 0x9e, 0x83, 0xe4, 0x98, 0x0e, 0xff, 0x65, + 0x0e, 0x65, 0xfa, 0x4a, 0x19, 0x32, 0xa1, 0x82, 0x1d, 0x0d, 0xff, 0x15, 0x0e, 0x0f, 0xa3, 0x88, + 0xe9, 0xbc, 0x60, 0x47, 0x13, 0x7c, 0x49, 0x98, 0xce, 0x11, 0xc4, 0x6d, 0xa2, 0x56, 0x47, 0xa3, + 0x7f, 0x55, 0x78, 0x5d, 0x40, 0x94, 0x17, 0x20, 0x1d, 0xe4, 0xdf, 0x68, 0xfc, 0xaf, 0x71, 0x7c, + 0x0f, 0x43, 0x3c, 0x10, 0xca, 0xff, 0xd1, 0x14, 0xbf, 0x2e, 0x3c, 0x10, 0x42, 0x91, 0x6d, 0x34, + 0x58, 0xd3, 0xa3, 0x99, 0x7e, 0x43, 0x6c, 0xa3, 0x81, 0x92, 0x4e, 0x56, 0x93, 0xa6, 0xc1, 0x68, + 0x8a, 0xdf, 0x14, 0xab, 0x49, 0xf5, 0x89, 0x19, 0x83, 0x45, 0x32, 0x9a, 0xe3, 0xb7, 0x84, 0x19, + 0x03, 0x35, 0x52, 0xd9, 0x06, 0x34, 0x5c, 0x20, 0xa3, 0xf9, 0xbe, 0xcc, 0xf9, 0x66, 0x86, 0xea, + 0xa3, 0xf2, 0x22, 0x9c, 0x18, 0x5d, 0x1c, 0xa3, 0x59, 0xbf, 0xf2, 0xc1, 0xc0, 0x71, 0x26, 0x5c, + 0x1b, 0x95, 0x9d, 0x5e, 0x96, 0x0d, 0x17, 0xc6, 0x68, 0xda, 0x57, 0x3e, 0xe8, 0x4f, 0xb4, 0xe1, + 0xba, 0xa8, 0x14, 0x01, 0x7a, 0x35, 0x29, 0x9a, 0xeb, 0x55, 0xce, 0x15, 0x02, 0x91, 0xad, 0xc1, + 0x4b, 0x52, 0x34, 0xfe, 0xab, 0x62, 0x6b, 0x70, 0x04, 0xd9, 0x1a, 0xa2, 0x1a, 0x45, 0xa3, 0x5f, + 0x13, 0x5b, 0x43, 0x40, 0x94, 0xcb, 0x90, 0xb2, 0xbb, 0x96, 0x45, 0x62, 0x0b, 0x1d, 0xfe, 0x19, + 0x51, 0xfe, 0x5f, 0x3f, 0xe4, 0x60, 0x01, 0x50, 0x2e, 0x40, 0x12, 0xb7, 0x77, 0x71, 0x23, 0x0a, + 0xf9, 0x6f, 0x1f, 0x8a, 0x7c, 0x42, 0xb4, 0x95, 0x17, 0x00, 0xd8, 0x61, 0x9a, 0xfe, 0x4a, 0x14, + 0x81, 0xfd, 0xf7, 0x0f, 0xf9, 0x17, 0x0a, 0x3d, 0x48, 0x8f, 0x80, 0x7d, 0xef, 0x70, 0x38, 0xc1, + 0x7b, 0xfd, 0x04, 0xf4, 0x00, 0xfe, 0x3c, 0x4c, 0x5e, 0xf7, 0x1c, 0xdb, 0xd7, 0x5b, 0x51, 0xe8, + 0xff, 0xe0, 0x68, 0xa1, 0x4f, 0x1c, 0xd6, 0x76, 0x5c, 0xec, 0xeb, 0x2d, 0x2f, 0x0a, 0xfb, 0x9f, + 0x1c, 0x1b, 0x00, 0x08, 0xd8, 0xd0, 0x3d, 0x7f, 0x9c, 0xf7, 0xfe, 0x2f, 0x01, 0x16, 0x00, 0x62, + 0x34, 0xf9, 0xff, 0x06, 0xde, 0x8f, 0xc2, 0xbe, 0x2f, 0x8c, 0xe6, 0xfa, 0xca, 0xa7, 0x20, 0x4d, + 0xfe, 0x65, 0x5f, 0xed, 0x44, 0x80, 0xff, 0x9b, 0x83, 0x7b, 0x08, 0xf2, 0x64, 0xcf, 0x6f, 0xf8, + 0x66, 0xb4, 0xb3, 0xff, 0x87, 0xaf, 0xb4, 0xd0, 0x57, 0x8a, 0x90, 0xf1, 0xfc, 0x46, 0xa3, 0xcb, + 0x3b, 0x9a, 0x08, 0xf8, 0x0f, 0x3e, 0x0c, 0x0e, 0xb9, 0x01, 0xa6, 0x74, 0x66, 0xf4, 0x65, 0x1d, + 0xac, 0x39, 0x6b, 0x0e, 0xbb, 0xa6, 0x83, 0xbf, 0x4e, 0xc0, 0x14, 0xbe, 0xad, 0xb7, 0x3b, 0x42, + 0x01, 0x25, 0x48, 0xe9, 0x98, 0x3f, 0xda, 0x55, 0x5c, 0xe1, 0x4b, 0x12, 0x48, 0x45, 0xf4, 0x04, + 0x64, 0x56, 0x7b, 0x85, 0x8b, 0x7d, 0x50, 0x52, 0x4a, 0xdc, 0xbb, 0xbf, 0x78, 0x4c, 0x0d, 0x4f, + 0xa0, 0x87, 0x61, 0x62, 0xb3, 0xf7, 0x51, 0x52, 0x9c, 0xab, 0x70, 0x19, 0x52, 0x20, 0x56, 0x65, + 0x3f, 0x92, 0x65, 0x4b, 0x67, 0xc9, 0xcc, 0x3f, 0xdc, 0x5f, 0x2c, 0x1c, 0x68, 0x0e, 0xb1, 0x76, + 0xb9, 0xde, 0x35, 0x1b, 0x6a, 0xac, 0xda, 0x50, 0x52, 0xbf, 0xf8, 0xfa, 0xe2, 0xb1, 0x37, 0x5f, + 0x5f, 0x94, 0x0a, 0x36, 0x48, 0x25, 0xb4, 0x08, 0x52, 0x91, 0x9a, 0x91, 0x59, 0x99, 0x5c, 0xa6, + 0x9a, 0xc5, 0x52, 0x8a, 0x50, 0xbe, 0x75, 0x7f, 0x51, 0x52, 0xa5, 0x22, 0x2a, 0x81, 0xb4, 0x46, + 0xef, 0x92, 0xb3, 0xa5, 0xf3, 0xfc, 0x51, 0xcf, 0x1c, 0xfa, 0xa8, 0x73, 0x6c, 0x2f, 0x2c, 0xd7, + 0x4d, 0xdb, 0xff, 0x89, 0x95, 0x4b, 0xaa, 0xb4, 0xa6, 0x24, 0xde, 0x27, 0xcf, 0x7b, 0x14, 0xa4, + 0x32, 0x5a, 0x80, 0x04, 0x49, 0x4c, 0xf4, 0x91, 0xf1, 0x12, 0x3c, 0xb8, 0xbf, 0x38, 0xb1, 0xb1, + 0x5f, 0x33, 0xef, 0x60, 0x95, 0xca, 0x0b, 0xcf, 0x81, 0x54, 0x47, 0xc7, 0x87, 0x8d, 0x22, 0xa6, + 0x1c, 0x07, 0xa9, 0xc4, 0x3f, 0x59, 0xe3, 0xe2, 0x92, 0x2a, 0x95, 0x94, 0xc4, 0x3d, 0xc2, 0x3e, + 0x0b, 0x52, 0xe5, 0x6c, 0x2a, 0x25, 0xb1, 0x1f, 0x48, 0x94, 0xc4, 0xbd, 0xaf, 0x2d, 0x1e, 0x2b, + 0x3c, 0x05, 0x92, 0x8a, 0x16, 0x00, 0x7a, 0x39, 0x95, 0xd2, 0x4e, 0xa9, 0x21, 0x89, 0x92, 0x78, + 0x8b, 0xa8, 0x3e, 0x0d, 0xa9, 0xb2, 0xee, 0x89, 0xcf, 0x98, 0x92, 0x55, 0xdb, 0x7f, 0x76, 0x85, + 0x5b, 0x99, 0xfe, 0xff, 0xfb, 0x8b, 0x49, 0x93, 0x08, 0x54, 0x26, 0x2f, 0x3d, 0xf3, 0xf7, 0xef, + 0x2c, 0x1c, 0x7b, 0xfb, 0x9d, 0x05, 0xe9, 0xfd, 0x77, 0x16, 0xa4, 0xff, 0x7b, 0x67, 0x41, 0xba, + 0xfb, 0x60, 0x41, 0x7a, 0xf3, 0xc1, 0x82, 0xf4, 0x9d, 0x07, 0x0b, 0xd2, 0x77, 0x1f, 0x2c, 0x48, + 0xf7, 0x1e, 0x2c, 0x48, 0x6f, 0x3d, 0x58, 0x90, 0xde, 0x7e, 0xb0, 0x20, 0xfd, 0x30, 0x00, 0x00, + 0xff, 0xff, 0xbe, 0x52, 0xb0, 0x1d, 0x9e, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/filedotname/file.dot.pb.go b/vendor/github.com/gogo/protobuf/test/filedotname/file.dot.pb.go index ff830c77b..ae12f2969 100644 --- a/vendor/github.com/gogo/protobuf/test/filedotname/file.dot.pb.go +++ b/vendor/github.com/gogo/protobuf/test/filedotname/file.dot.pb.go @@ -56,229 +56,236 @@ func (this *M) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_des func FileDotDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3540 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x70, 0x1c, 0x65, - 0x76, 0x56, 0xcf, 0x45, 0x9a, 0x39, 0x33, 0x1a, 0xb5, 0x5a, 0x42, 0x1e, 0x0b, 0x18, 0xcb, 0xe2, - 0x26, 0x20, 0xc8, 0x94, 0xb1, 0x8d, 0x3d, 0x0e, 0xb8, 0x46, 0xd2, 0x58, 0xc8, 0xa5, 0x1b, 0x2d, - 0x09, 0x0c, 0x3c, 0x74, 0xfd, 0xea, 0xfe, 0x67, 0xd4, 0x76, 0x4f, 0xf7, 0xa4, 0xbb, 0xc7, 0xb6, - 0xfc, 0x64, 0x8a, 0x5c, 0x8a, 0xa2, 0x72, 0x4f, 0x55, 0xb8, 0x87, 0x50, 0x95, 0x40, 0x48, 0x48, - 0x20, 0x17, 0x42, 0xe5, 0x89, 0x17, 0x12, 0x9e, 0x52, 0xf0, 0x96, 0x87, 0x3c, 0x60, 0x85, 0xaa, - 0xb0, 0xbb, 0xde, 0x5d, 0x76, 0x71, 0xd5, 0x52, 0xe5, 0x97, 0xad, 0xff, 0xd6, 0xd3, 0x73, 0x91, - 0x7b, 0x44, 0x15, 0xb0, 0x4f, 0xd6, 0x7f, 0xfe, 0xf3, 0x7d, 0x7d, 0xfa, 0x9c, 0xf3, 0x9f, 0x73, - 0xfa, 0x1f, 0xc3, 0xb3, 0x47, 0x60, 0xa2, 0xea, 0x38, 0x55, 0x0b, 0x1f, 0xaa, 0xbb, 0x8e, 0xef, - 0x6c, 0x36, 0x2a, 0x87, 0x0c, 0xec, 0xe9, 0xae, 0x59, 0xf7, 0x1d, 0x77, 0x9a, 0xca, 0x94, 0x21, - 0xa6, 0x31, 0x2d, 0x34, 0x26, 0x97, 0x60, 0xf8, 0xb4, 0x69, 0xe1, 0xb9, 0x40, 0x71, 0x0d, 0xfb, - 0xca, 0x71, 0x48, 0x54, 0x4c, 0x0b, 0xe7, 0xa5, 0x89, 0xf8, 0x54, 0xe6, 0xf0, 0x9d, 0xd3, 0x6d, - 0xa0, 0xe9, 0x56, 0xc4, 0x2a, 0x11, 0xab, 0x14, 0x31, 0xf9, 0x45, 0x02, 0x46, 0xba, 0xec, 0x2a, - 0x0a, 0x24, 0x6c, 0x54, 0x23, 0x8c, 0xd2, 0x54, 0x5a, 0xa5, 0x7f, 0x2b, 0x79, 0x18, 0xa8, 0x23, - 0xfd, 0x3c, 0xaa, 0xe2, 0x7c, 0x8c, 0x8a, 0xc5, 0x52, 0x29, 0x00, 0x18, 0xb8, 0x8e, 0x6d, 0x03, - 0xdb, 0xfa, 0x76, 0x3e, 0x3e, 0x11, 0x9f, 0x4a, 0xab, 0x21, 0x89, 0x72, 0x3f, 0x0c, 0xd7, 0x1b, - 0x9b, 0x96, 0xa9, 0x6b, 0x21, 0x35, 0x98, 0x88, 0x4f, 0x25, 0x55, 0x99, 0x6d, 0xcc, 0x35, 0x95, - 0xef, 0x81, 0xa1, 0x8b, 0x18, 0x9d, 0x0f, 0xab, 0x66, 0xa8, 0x6a, 0x8e, 0x88, 0x43, 0x8a, 0xb3, - 0x90, 0xad, 0x61, 0xcf, 0x43, 0x55, 0xac, 0xf9, 0xdb, 0x75, 0x9c, 0x4f, 0xd0, 0xb7, 0x9f, 0xe8, - 0x78, 0xfb, 0xf6, 0x37, 0xcf, 0x70, 0xd4, 0xfa, 0x76, 0x1d, 0x2b, 0x25, 0x48, 0x63, 0xbb, 0x51, - 0x63, 0x0c, 0xc9, 0x5d, 0xfc, 0x57, 0xb6, 0x1b, 0xb5, 0x76, 0x96, 0x14, 0x81, 0x71, 0x8a, 0x01, - 0x0f, 0xbb, 0x17, 0x4c, 0x1d, 0xe7, 0xfb, 0x29, 0xc1, 0x3d, 0x1d, 0x04, 0x6b, 0x6c, 0xbf, 0x9d, - 0x43, 0xe0, 0x94, 0x59, 0x48, 0xe3, 0x4b, 0x3e, 0xb6, 0x3d, 0xd3, 0xb1, 0xf3, 0x03, 0x94, 0xe4, - 0xae, 0x2e, 0x51, 0xc4, 0x96, 0xd1, 0x4e, 0xd1, 0xc4, 0x29, 0xc7, 0x60, 0xc0, 0xa9, 0xfb, 0xa6, - 0x63, 0x7b, 0xf9, 0xd4, 0x84, 0x34, 0x95, 0x39, 0x7c, 0x5b, 0xd7, 0x44, 0x58, 0x61, 0x3a, 0xaa, - 0x50, 0x56, 0x16, 0x40, 0xf6, 0x9c, 0x86, 0xab, 0x63, 0x4d, 0x77, 0x0c, 0xac, 0x99, 0x76, 0xc5, - 0xc9, 0xa7, 0x29, 0xc1, 0x81, 0xce, 0x17, 0xa1, 0x8a, 0xb3, 0x8e, 0x81, 0x17, 0xec, 0x8a, 0xa3, - 0xe6, 0xbc, 0x96, 0xb5, 0x32, 0x06, 0xfd, 0xde, 0xb6, 0xed, 0xa3, 0x4b, 0xf9, 0x2c, 0xcd, 0x10, - 0xbe, 0x9a, 0xfc, 0x55, 0x12, 0x86, 0x7a, 0x49, 0xb1, 0x93, 0x90, 0xac, 0x90, 0xb7, 0xcc, 0xc7, - 0xf6, 0xe2, 0x03, 0x86, 0x69, 0x75, 0x62, 0xff, 0xb7, 0x74, 0x62, 0x09, 0x32, 0x36, 0xf6, 0x7c, - 0x6c, 0xb0, 0x8c, 0x88, 0xf7, 0x98, 0x53, 0xc0, 0x40, 0x9d, 0x29, 0x95, 0xf8, 0x56, 0x29, 0x75, - 0x16, 0x86, 0x02, 0x93, 0x34, 0x17, 0xd9, 0x55, 0x91, 0x9b, 0x87, 0xa2, 0x2c, 0x99, 0x2e, 0x0b, - 0x9c, 0x4a, 0x60, 0x6a, 0x0e, 0xb7, 0xac, 0x95, 0x39, 0x00, 0xc7, 0xc6, 0x4e, 0x45, 0x33, 0xb0, - 0x6e, 0xe5, 0x53, 0xbb, 0x78, 0x69, 0x85, 0xa8, 0x74, 0x78, 0xc9, 0x61, 0x52, 0xdd, 0x52, 0x4e, - 0x34, 0x53, 0x6d, 0x60, 0x97, 0x4c, 0x59, 0x62, 0x87, 0xac, 0x23, 0xdb, 0x36, 0x20, 0xe7, 0x62, - 0x92, 0xf7, 0xd8, 0xe0, 0x6f, 0x96, 0xa6, 0x46, 0x4c, 0x47, 0xbe, 0x99, 0xca, 0x61, 0xec, 0xc5, - 0x06, 0xdd, 0xf0, 0x52, 0xb9, 0x03, 0x02, 0x81, 0x46, 0xd3, 0x0a, 0x68, 0x15, 0xca, 0x0a, 0xe1, - 0x32, 0xaa, 0xe1, 0xf1, 0xe3, 0x90, 0x6b, 0x75, 0x8f, 0x32, 0x0a, 0x49, 0xcf, 0x47, 0xae, 0x4f, - 0xb3, 0x30, 0xa9, 0xb2, 0x85, 0x22, 0x43, 0x1c, 0xdb, 0x06, 0xad, 0x72, 0x49, 0x95, 0xfc, 0x39, - 0xfe, 0x30, 0x0c, 0xb6, 0x3c, 0xbe, 0x57, 0xe0, 0xe4, 0x8b, 0xfd, 0x30, 0xda, 0x2d, 0xe7, 0xba, - 0xa6, 0xff, 0x18, 0xf4, 0xdb, 0x8d, 0xda, 0x26, 0x76, 0xf3, 0x71, 0xca, 0xc0, 0x57, 0x4a, 0x09, - 0x92, 0x16, 0xda, 0xc4, 0x56, 0x3e, 0x31, 0x21, 0x4d, 0xe5, 0x0e, 0xdf, 0xdf, 0x53, 0x56, 0x4f, - 0x2f, 0x12, 0x88, 0xca, 0x90, 0xca, 0xa3, 0x90, 0xe0, 0x25, 0x8e, 0x30, 0xdc, 0xd7, 0x1b, 0x03, - 0xc9, 0x45, 0x95, 0xe2, 0x94, 0x5b, 0x21, 0x4d, 0xfe, 0x65, 0xbe, 0xed, 0xa7, 0x36, 0xa7, 0x88, - 0x80, 0xf8, 0x55, 0x19, 0x87, 0x14, 0x4d, 0x33, 0x03, 0x8b, 0xd6, 0x10, 0xac, 0x49, 0x60, 0x0c, - 0x5c, 0x41, 0x0d, 0xcb, 0xd7, 0x2e, 0x20, 0xab, 0x81, 0x69, 0xc2, 0xa4, 0xd5, 0x2c, 0x17, 0x3e, - 0x41, 0x64, 0xca, 0x01, 0xc8, 0xb0, 0xac, 0x34, 0x6d, 0x03, 0x5f, 0xa2, 0xd5, 0x27, 0xa9, 0xb2, - 0x44, 0x5d, 0x20, 0x12, 0xf2, 0xf8, 0x73, 0x9e, 0x63, 0x8b, 0xd0, 0xd2, 0x47, 0x10, 0x01, 0x7d, - 0xfc, 0xc3, 0xed, 0x85, 0xef, 0xf6, 0xee, 0xaf, 0xd7, 0x9e, 0x8b, 0x93, 0x1f, 0xc4, 0x20, 0x41, - 0xcf, 0xdb, 0x10, 0x64, 0xd6, 0x9f, 0x5a, 0x2d, 0x6b, 0x73, 0x2b, 0x1b, 0x33, 0x8b, 0x65, 0x59, - 0x52, 0x72, 0x00, 0x54, 0x70, 0x7a, 0x71, 0xa5, 0xb4, 0x2e, 0xc7, 0x82, 0xf5, 0xc2, 0xf2, 0xfa, - 0xb1, 0x23, 0x72, 0x3c, 0x00, 0x6c, 0x30, 0x41, 0x22, 0xac, 0xf0, 0xd0, 0x61, 0x39, 0xa9, 0xc8, - 0x90, 0x65, 0x04, 0x0b, 0x67, 0xcb, 0x73, 0xc7, 0x8e, 0xc8, 0xfd, 0xad, 0x92, 0x87, 0x0e, 0xcb, - 0x03, 0xca, 0x20, 0xa4, 0xa9, 0x64, 0x66, 0x65, 0x65, 0x51, 0x4e, 0x05, 0x9c, 0x6b, 0xeb, 0xea, - 0xc2, 0xf2, 0xbc, 0x9c, 0x0e, 0x38, 0xe7, 0xd5, 0x95, 0x8d, 0x55, 0x19, 0x02, 0x86, 0xa5, 0xf2, - 0xda, 0x5a, 0x69, 0xbe, 0x2c, 0x67, 0x02, 0x8d, 0x99, 0xa7, 0xd6, 0xcb, 0x6b, 0x72, 0xb6, 0xc5, - 0xac, 0x87, 0x0e, 0xcb, 0x83, 0xc1, 0x23, 0xca, 0xcb, 0x1b, 0x4b, 0x72, 0x4e, 0x19, 0x86, 0x41, - 0xf6, 0x08, 0x61, 0xc4, 0x50, 0x9b, 0xe8, 0xd8, 0x11, 0x59, 0x6e, 0x1a, 0xc2, 0x58, 0x86, 0x5b, - 0x04, 0xc7, 0x8e, 0xc8, 0xca, 0xe4, 0x2c, 0x24, 0x69, 0x76, 0x29, 0x0a, 0xe4, 0x16, 0x4b, 0x33, - 0xe5, 0x45, 0x6d, 0x65, 0x75, 0x7d, 0x61, 0x65, 0xb9, 0xb4, 0x28, 0x4b, 0x4d, 0x99, 0x5a, 0x7e, - 0x7c, 0x63, 0x41, 0x2d, 0xcf, 0xc9, 0xb1, 0xb0, 0x6c, 0xb5, 0x5c, 0x5a, 0x2f, 0xcf, 0xc9, 0xf1, - 0x49, 0x1d, 0x46, 0xbb, 0xd5, 0x99, 0xae, 0x27, 0x23, 0x14, 0xe2, 0xd8, 0x2e, 0x21, 0xa6, 0x5c, - 0x1d, 0x21, 0x7e, 0x53, 0x82, 0x91, 0x2e, 0xb5, 0xb6, 0xeb, 0x43, 0x4e, 0x41, 0x92, 0xa5, 0x28, - 0xeb, 0x3e, 0xf7, 0x76, 0x2d, 0xda, 0x34, 0x61, 0x3b, 0x3a, 0x10, 0xc5, 0x85, 0x3b, 0x70, 0x7c, - 0x97, 0x0e, 0x4c, 0x28, 0x3a, 0x8c, 0x7c, 0x4e, 0x82, 0xfc, 0x6e, 0xdc, 0x11, 0x85, 0x22, 0xd6, - 0x52, 0x28, 0x4e, 0xb6, 0x1b, 0x70, 0x70, 0xf7, 0x77, 0xe8, 0xb0, 0xe2, 0x2d, 0x09, 0xc6, 0xba, - 0x0f, 0x2a, 0x5d, 0x6d, 0x78, 0x14, 0xfa, 0x6b, 0xd8, 0xdf, 0x72, 0x44, 0xb3, 0xbe, 0xbb, 0x4b, - 0x0b, 0x20, 0xdb, 0xed, 0xbe, 0xe2, 0xa8, 0x70, 0x0f, 0x89, 0xef, 0x36, 0x6d, 0x30, 0x6b, 0x3a, - 0x2c, 0x7d, 0x3e, 0x06, 0xb7, 0x74, 0x25, 0xef, 0x6a, 0xe8, 0xed, 0x00, 0xa6, 0x5d, 0x6f, 0xf8, - 0xac, 0x21, 0xb3, 0xfa, 0x94, 0xa6, 0x12, 0x7a, 0xf6, 0x49, 0xed, 0x69, 0xf8, 0xc1, 0x7e, 0x9c, - 0xee, 0x03, 0x13, 0x51, 0x85, 0xe3, 0x4d, 0x43, 0x13, 0xd4, 0xd0, 0xc2, 0x2e, 0x6f, 0xda, 0xd1, - 0xeb, 0x1e, 0x04, 0x59, 0xb7, 0x4c, 0x6c, 0xfb, 0x9a, 0xe7, 0xbb, 0x18, 0xd5, 0x4c, 0xbb, 0x4a, - 0x0b, 0x70, 0xaa, 0x98, 0xac, 0x20, 0xcb, 0xc3, 0xea, 0x10, 0xdb, 0x5e, 0x13, 0xbb, 0x04, 0x41, - 0xbb, 0x8c, 0x1b, 0x42, 0xf4, 0xb7, 0x20, 0xd8, 0x76, 0x80, 0x98, 0x7c, 0x61, 0x00, 0x32, 0xa1, - 0xb1, 0x4e, 0x39, 0x08, 0xd9, 0x73, 0xe8, 0x02, 0xd2, 0xc4, 0xa8, 0xce, 0x3c, 0x91, 0x21, 0xb2, - 0x55, 0x3e, 0xae, 0x3f, 0x08, 0xa3, 0x54, 0xc5, 0x69, 0xf8, 0xd8, 0xd5, 0x74, 0x0b, 0x79, 0x1e, - 0x75, 0x5a, 0x8a, 0xaa, 0x2a, 0x64, 0x6f, 0x85, 0x6c, 0xcd, 0x8a, 0x1d, 0xe5, 0x28, 0x8c, 0x50, - 0x44, 0xad, 0x61, 0xf9, 0x66, 0xdd, 0xc2, 0x1a, 0xf9, 0x78, 0xf0, 0x68, 0x21, 0x0e, 0x2c, 0x1b, - 0x26, 0x1a, 0x4b, 0x5c, 0x81, 0x58, 0xe4, 0x29, 0xf3, 0x70, 0x3b, 0x85, 0x55, 0xb1, 0x8d, 0x5d, - 0xe4, 0x63, 0x0d, 0xff, 0x4e, 0x03, 0x59, 0x9e, 0x86, 0x6c, 0x43, 0xdb, 0x42, 0xde, 0x56, 0x7e, - 0x34, 0x4c, 0xb0, 0x9f, 0xe8, 0xce, 0x73, 0xd5, 0x32, 0xd5, 0x2c, 0xd9, 0xc6, 0x63, 0xc8, 0xdb, - 0x52, 0x8a, 0x30, 0x46, 0x89, 0x3c, 0xdf, 0x35, 0xed, 0xaa, 0xa6, 0x6f, 0x61, 0xfd, 0xbc, 0xd6, - 0xf0, 0x2b, 0xc7, 0xf3, 0xb7, 0x86, 0x19, 0xa8, 0x91, 0x6b, 0x54, 0x67, 0x96, 0xa8, 0x6c, 0xf8, - 0x95, 0xe3, 0xca, 0x1a, 0x64, 0x49, 0x3c, 0x6a, 0xe6, 0x65, 0xac, 0x55, 0x1c, 0x97, 0x36, 0x97, - 0x5c, 0x97, 0xc3, 0x1d, 0x72, 0xe2, 0xf4, 0x0a, 0x07, 0x2c, 0x39, 0x06, 0x2e, 0x26, 0xd7, 0x56, - 0xcb, 0xe5, 0x39, 0x35, 0x23, 0x58, 0x4e, 0x3b, 0x2e, 0xc9, 0xa9, 0xaa, 0x13, 0xf8, 0x38, 0xc3, - 0x72, 0xaa, 0xea, 0x08, 0x0f, 0x1f, 0x85, 0x11, 0x5d, 0x67, 0xaf, 0x6d, 0xea, 0x1a, 0x9f, 0xf2, - 0xbd, 0xbc, 0xdc, 0xe2, 0x2f, 0x5d, 0x9f, 0x67, 0x0a, 0x3c, 0xcd, 0x3d, 0xe5, 0x04, 0xdc, 0xd2, - 0xf4, 0x57, 0x18, 0x38, 0xdc, 0xf1, 0x96, 0xed, 0xd0, 0xa3, 0x30, 0x52, 0xdf, 0xee, 0x04, 0x2a, - 0x2d, 0x4f, 0xac, 0x6f, 0xb7, 0xc3, 0xee, 0xa2, 0x5f, 0x6e, 0x2e, 0xd6, 0x91, 0x8f, 0x8d, 0xfc, - 0xbe, 0xb0, 0x76, 0x68, 0x43, 0x39, 0x04, 0xb2, 0xae, 0x6b, 0xd8, 0x46, 0x9b, 0x16, 0xd6, 0x90, - 0x8b, 0x6d, 0xe4, 0xe5, 0x0f, 0x84, 0x95, 0x73, 0xba, 0x5e, 0xa6, 0xbb, 0x25, 0xba, 0xa9, 0xdc, - 0x07, 0xc3, 0xce, 0xe6, 0x39, 0x9d, 0x25, 0x97, 0x56, 0x77, 0x71, 0xc5, 0xbc, 0x94, 0xbf, 0x93, - 0xba, 0x69, 0x88, 0x6c, 0xd0, 0xd4, 0x5a, 0xa5, 0x62, 0xe5, 0x5e, 0x90, 0x75, 0x6f, 0x0b, 0xb9, - 0x75, 0xda, 0xdd, 0xbd, 0x3a, 0xd2, 0x71, 0xfe, 0x2e, 0xa6, 0xca, 0xe4, 0xcb, 0x42, 0xac, 0x9c, - 0x85, 0xd1, 0x86, 0x6d, 0xda, 0x3e, 0x76, 0xeb, 0x2e, 0x26, 0x43, 0x3a, 0x3b, 0x69, 0xf9, 0xff, - 0x1f, 0xd8, 0x65, 0xcc, 0xde, 0x08, 0x6b, 0xb3, 0xe8, 0xaa, 0x23, 0x8d, 0x4e, 0xe1, 0x64, 0x11, - 0xb2, 0xe1, 0xa0, 0x2b, 0x69, 0x60, 0x61, 0x97, 0x25, 0xd2, 0x43, 0x67, 0x57, 0xe6, 0x48, 0xf7, - 0x7b, 0xba, 0x2c, 0xc7, 0x48, 0x17, 0x5e, 0x5c, 0x58, 0x2f, 0x6b, 0xea, 0xc6, 0xf2, 0xfa, 0xc2, - 0x52, 0x59, 0x8e, 0xdf, 0x97, 0x4e, 0x7d, 0x39, 0x20, 0x5f, 0xb9, 0x72, 0xe5, 0x4a, 0x6c, 0xf2, - 0xe3, 0x18, 0xe4, 0x5a, 0x27, 0x5f, 0xe5, 0xb7, 0x61, 0x9f, 0xf8, 0x4c, 0xf5, 0xb0, 0xaf, 0x5d, - 0x34, 0x5d, 0x9a, 0x87, 0x35, 0xc4, 0x66, 0xc7, 0xc0, 0x85, 0xa3, 0x5c, 0x6b, 0x0d, 0xfb, 0x4f, - 0x9a, 0x2e, 0xc9, 0xb2, 0x1a, 0xf2, 0x95, 0x45, 0x38, 0x60, 0x3b, 0x9a, 0xe7, 0x23, 0xdb, 0x40, - 0xae, 0xa1, 0x35, 0x2f, 0x08, 0x34, 0xa4, 0xeb, 0xd8, 0xf3, 0x1c, 0xd6, 0x02, 0x02, 0x96, 0xdb, - 0x6c, 0x67, 0x8d, 0x2b, 0x37, 0x6b, 0x63, 0x89, 0xab, 0xb6, 0x85, 0x3b, 0xbe, 0x5b, 0xb8, 0x6f, - 0x85, 0x74, 0x0d, 0xd5, 0x35, 0x6c, 0xfb, 0xee, 0x36, 0x9d, 0xd7, 0x52, 0x6a, 0xaa, 0x86, 0xea, - 0x65, 0xb2, 0xfe, 0xee, 0x62, 0x10, 0xf6, 0xe3, 0xff, 0xc6, 0x21, 0x1b, 0x9e, 0xd9, 0xc8, 0x08, - 0xac, 0xd3, 0xfa, 0x2c, 0xd1, 0xe3, 0x7b, 0xc7, 0x4d, 0x27, 0xbc, 0xe9, 0x59, 0x52, 0xb8, 0x8b, - 0xfd, 0x6c, 0x92, 0x52, 0x19, 0x92, 0x34, 0x4d, 0x72, 0x60, 0x31, 0x9b, 0xcf, 0x53, 0x2a, 0x5f, - 0x29, 0xf3, 0xd0, 0x7f, 0xce, 0xa3, 0xdc, 0xfd, 0x94, 0xfb, 0xce, 0x9b, 0x73, 0x9f, 0x59, 0xa3, - 0xe4, 0xe9, 0x33, 0x6b, 0xda, 0xf2, 0x8a, 0xba, 0x54, 0x5a, 0x54, 0x39, 0x5c, 0xd9, 0x0f, 0x09, - 0x0b, 0x5d, 0xde, 0x6e, 0x2d, 0xf1, 0x54, 0xd4, 0xab, 0xe3, 0xf7, 0x43, 0xe2, 0x22, 0x46, 0xe7, - 0x5b, 0x0b, 0x2b, 0x15, 0x7d, 0x87, 0xa9, 0x7f, 0x08, 0x92, 0xd4, 0x5f, 0x0a, 0x00, 0xf7, 0x98, - 0xdc, 0xa7, 0xa4, 0x20, 0x31, 0xbb, 0xa2, 0x92, 0xf4, 0x97, 0x21, 0xcb, 0xa4, 0xda, 0xea, 0x42, - 0x79, 0xb6, 0x2c, 0xc7, 0x26, 0x8f, 0x42, 0x3f, 0x73, 0x02, 0x39, 0x1a, 0x81, 0x1b, 0xe4, 0x3e, - 0xbe, 0xe4, 0x1c, 0x92, 0xd8, 0xdd, 0x58, 0x9a, 0x29, 0xab, 0x72, 0x2c, 0x1c, 0x5e, 0x0f, 0xb2, - 0xe1, 0x71, 0xed, 0xfb, 0xc9, 0xa9, 0xff, 0x90, 0x20, 0x13, 0x1a, 0xbf, 0x48, 0xe3, 0x47, 0x96, - 0xe5, 0x5c, 0xd4, 0x90, 0x65, 0x22, 0x8f, 0x27, 0x05, 0x50, 0x51, 0x89, 0x48, 0x7a, 0x0d, 0xda, - 0xf7, 0x62, 0xfc, 0xeb, 0x12, 0xc8, 0xed, 0xa3, 0x5b, 0x9b, 0x81, 0xd2, 0x0f, 0x6a, 0xe0, 0xab, - 0x12, 0xe4, 0x5a, 0xe7, 0xb5, 0x36, 0xf3, 0x0e, 0xfe, 0xa0, 0xe6, 0xbd, 0x22, 0xc1, 0x60, 0xcb, - 0x94, 0xf6, 0x1b, 0x65, 0xdd, 0xcb, 0x71, 0x18, 0xe9, 0x82, 0x53, 0x4a, 0x7c, 0x9c, 0x65, 0x13, - 0xf6, 0x03, 0xbd, 0x3c, 0x6b, 0x9a, 0x74, 0xcb, 0x55, 0xe4, 0xfa, 0x7c, 0xfa, 0xbd, 0x17, 0x64, - 0xd3, 0xc0, 0xb6, 0x6f, 0x56, 0x4c, 0xec, 0xf2, 0x4f, 0x70, 0x36, 0xe3, 0x0e, 0x35, 0xe5, 0xec, - 0x2b, 0xfc, 0xb7, 0x40, 0xa9, 0x3b, 0x9e, 0xe9, 0x9b, 0x17, 0xb0, 0x66, 0xda, 0xe2, 0x7b, 0x9d, - 0xcc, 0xbc, 0x09, 0x55, 0x16, 0x3b, 0x0b, 0xb6, 0x1f, 0x68, 0xdb, 0xb8, 0x8a, 0xda, 0xb4, 0x49, - 0xed, 0x8b, 0xab, 0xb2, 0xd8, 0x09, 0xb4, 0x0f, 0x42, 0xd6, 0x70, 0x1a, 0x64, 0x7c, 0x60, 0x7a, - 0xa4, 0xd4, 0x4a, 0x6a, 0x86, 0xc9, 0x02, 0x15, 0x3e, 0xdf, 0x35, 0x2f, 0x0a, 0xb2, 0x6a, 0x86, - 0xc9, 0x98, 0xca, 0x3d, 0x30, 0x84, 0xaa, 0x55, 0x97, 0x90, 0x0b, 0x22, 0x36, 0xb4, 0xe6, 0x02, - 0x31, 0x55, 0x1c, 0x3f, 0x03, 0x29, 0xe1, 0x07, 0xd2, 0xcd, 0x88, 0x27, 0xb4, 0x3a, 0xbb, 0xae, - 0x89, 0x4d, 0xa5, 0xd5, 0x94, 0x2d, 0x36, 0x0f, 0x42, 0xd6, 0xf4, 0xb4, 0xe6, 0xbd, 0x61, 0x6c, - 0x22, 0x36, 0x95, 0x52, 0x33, 0xa6, 0x17, 0x5c, 0x14, 0x4d, 0xbe, 0x15, 0x83, 0x5c, 0xeb, 0xbd, - 0xa7, 0x32, 0x07, 0x29, 0xcb, 0xd1, 0x11, 0x4d, 0x04, 0x76, 0xe9, 0x3e, 0x15, 0x71, 0x55, 0x3a, - 0xbd, 0xc8, 0xf5, 0xd5, 0x00, 0x39, 0xfe, 0xdf, 0x12, 0xa4, 0x84, 0x58, 0x19, 0x83, 0x44, 0x1d, - 0xf9, 0x5b, 0x94, 0x2e, 0x39, 0x13, 0x93, 0x25, 0x95, 0xae, 0x89, 0xdc, 0xab, 0x23, 0x9b, 0xa6, - 0x00, 0x97, 0x93, 0x35, 0x89, 0xab, 0x85, 0x91, 0x41, 0xc7, 0x61, 0xa7, 0x56, 0xc3, 0xb6, 0xef, - 0x89, 0xb8, 0x72, 0xf9, 0x2c, 0x17, 0x2b, 0xf7, 0xc3, 0xb0, 0xef, 0x22, 0xd3, 0x6a, 0xd1, 0x4d, - 0x50, 0x5d, 0x59, 0x6c, 0x04, 0xca, 0x45, 0xd8, 0x2f, 0x78, 0x0d, 0xec, 0x23, 0x7d, 0x0b, 0x1b, - 0x4d, 0x50, 0x3f, 0xbd, 0x54, 0xdb, 0xc7, 0x15, 0xe6, 0xf8, 0xbe, 0xc0, 0x4e, 0x7e, 0x26, 0xc1, - 0xb0, 0x18, 0xe0, 0x8d, 0xc0, 0x59, 0x4b, 0x00, 0xc8, 0xb6, 0x1d, 0x3f, 0xec, 0xae, 0xce, 0x54, - 0xee, 0xc0, 0x4d, 0x97, 0x02, 0x90, 0x1a, 0x22, 0x18, 0xaf, 0x01, 0x34, 0x77, 0x76, 0x75, 0xdb, - 0x01, 0xc8, 0xf0, 0x4b, 0x6d, 0xfa, 0xcb, 0x08, 0xfb, 0xea, 0x03, 0x26, 0x22, 0x93, 0xbe, 0x32, - 0x0a, 0xc9, 0x4d, 0x5c, 0x35, 0x6d, 0x7e, 0xd5, 0xc6, 0x16, 0xe2, 0x02, 0x2f, 0x11, 0x5c, 0xe0, - 0xcd, 0x3c, 0x03, 0x23, 0xba, 0x53, 0x6b, 0x37, 0x77, 0x46, 0x6e, 0xfb, 0xf2, 0xf4, 0x1e, 0x93, - 0x9e, 0x86, 0xe6, 0x74, 0xf6, 0x86, 0x24, 0xbd, 0x19, 0x8b, 0xcf, 0xaf, 0xce, 0xbc, 0x13, 0x1b, - 0x9f, 0x67, 0xd0, 0x55, 0xf1, 0xa6, 0x2a, 0xae, 0x58, 0x58, 0x27, 0xd6, 0xc3, 0xd7, 0x77, 0xc3, - 0x03, 0x55, 0xd3, 0xdf, 0x6a, 0x6c, 0x4e, 0xeb, 0x4e, 0xed, 0x50, 0xd5, 0xa9, 0x3a, 0xcd, 0x1f, - 0x83, 0xc8, 0x8a, 0x2e, 0xe8, 0x5f, 0xfc, 0x07, 0xa1, 0x74, 0x20, 0x1d, 0x8f, 0xfc, 0xf5, 0xa8, - 0xb8, 0x0c, 0x23, 0x5c, 0x59, 0xa3, 0x37, 0xd2, 0x6c, 0x0e, 0x57, 0x6e, 0x7a, 0x2b, 0x91, 0x7f, - 0xff, 0x0b, 0xda, 0xe9, 0xd4, 0x61, 0x0e, 0x25, 0x7b, 0x6c, 0x52, 0x2f, 0xaa, 0x70, 0x4b, 0x0b, - 0x1f, 0x3b, 0x9a, 0xd8, 0x8d, 0x60, 0xfc, 0x98, 0x33, 0x8e, 0x84, 0x18, 0xd7, 0x38, 0xb4, 0x38, - 0x0b, 0x83, 0x7b, 0xe1, 0xfa, 0x4f, 0xce, 0x95, 0xc5, 0x61, 0x92, 0x79, 0x18, 0xa2, 0x24, 0x7a, - 0xc3, 0xf3, 0x9d, 0x1a, 0xad, 0x7b, 0x37, 0xa7, 0xf9, 0xaf, 0x2f, 0xd8, 0x59, 0xc9, 0x11, 0xd8, - 0x6c, 0x80, 0x2a, 0x16, 0x81, 0x5e, 0xc2, 0x1b, 0x58, 0xb7, 0x22, 0x18, 0x3e, 0xe1, 0x86, 0x04, - 0xfa, 0xc5, 0x27, 0x60, 0x94, 0xfc, 0x4d, 0xcb, 0x52, 0xd8, 0x92, 0xe8, 0x3b, 0x98, 0xfc, 0x67, - 0xcf, 0xb1, 0xe3, 0x38, 0x12, 0x10, 0x84, 0x6c, 0x0a, 0x45, 0xb1, 0x8a, 0x7d, 0x1f, 0xbb, 0x9e, - 0x86, 0xac, 0x6e, 0xe6, 0x85, 0xbe, 0x60, 0xf3, 0x2f, 0x5d, 0x6b, 0x8d, 0xe2, 0x3c, 0x43, 0x96, - 0x2c, 0xab, 0xb8, 0x01, 0xfb, 0xba, 0x64, 0x45, 0x0f, 0x9c, 0x2f, 0x73, 0xce, 0xd1, 0x8e, 0xcc, - 0x20, 0xb4, 0xab, 0x20, 0xe4, 0x41, 0x2c, 0x7b, 0xe0, 0x7c, 0x85, 0x73, 0x2a, 0x1c, 0x2b, 0x42, - 0x4a, 0x18, 0xcf, 0xc0, 0xf0, 0x05, 0xec, 0x6e, 0x3a, 0x1e, 0xbf, 0x38, 0xe8, 0x81, 0xee, 0x55, - 0x4e, 0x37, 0xc4, 0x81, 0xf4, 0x1a, 0x81, 0x70, 0x9d, 0x80, 0x54, 0x05, 0xe9, 0xb8, 0x07, 0x8a, - 0xd7, 0x38, 0xc5, 0x00, 0xd1, 0x27, 0xd0, 0x12, 0x64, 0xab, 0x0e, 0xef, 0x4c, 0xd1, 0xf0, 0xd7, - 0x39, 0x3c, 0x23, 0x30, 0x9c, 0xa2, 0xee, 0xd4, 0x1b, 0x16, 0x69, 0x5b, 0xd1, 0x14, 0x7f, 0x25, - 0x28, 0x04, 0x86, 0x53, 0xec, 0xc1, 0xad, 0x6f, 0x08, 0x0a, 0x2f, 0xe4, 0xcf, 0x53, 0x90, 0x71, - 0x6c, 0x6b, 0xdb, 0xb1, 0x7b, 0x31, 0xe2, 0xaf, 0x39, 0x03, 0x70, 0x08, 0x21, 0x38, 0x09, 0xe9, - 0x5e, 0x03, 0xf1, 0x37, 0xd7, 0xc4, 0xf1, 0x10, 0x11, 0x98, 0x87, 0x21, 0x51, 0xa0, 0x4c, 0xc7, - 0xee, 0x81, 0xe2, 0x6f, 0x39, 0x45, 0x2e, 0x04, 0xe3, 0xaf, 0xe1, 0x63, 0xcf, 0xaf, 0xe2, 0x5e, - 0x48, 0xde, 0x12, 0xaf, 0xc1, 0x21, 0xdc, 0x95, 0x9b, 0xd8, 0xd6, 0xb7, 0x7a, 0x63, 0x78, 0x5b, - 0xb8, 0x52, 0x60, 0x08, 0xc5, 0x2c, 0x0c, 0xd6, 0x90, 0xeb, 0x6d, 0x21, 0xab, 0xa7, 0x70, 0xfc, - 0x1d, 0xe7, 0xc8, 0x06, 0x20, 0xee, 0x91, 0x86, 0xbd, 0x17, 0x9a, 0x77, 0x84, 0x47, 0x42, 0x30, - 0x7e, 0xf4, 0x3c, 0x9f, 0xde, 0xcd, 0xec, 0x85, 0xed, 0xef, 0xc5, 0xd1, 0x63, 0xd8, 0xa5, 0x30, - 0xe3, 0x49, 0x48, 0x7b, 0xe6, 0xe5, 0x9e, 0x68, 0xfe, 0x41, 0x44, 0x9a, 0x02, 0x08, 0xf8, 0x29, - 0xd8, 0xdf, 0xb5, 0x4d, 0xf4, 0x40, 0xf6, 0x2e, 0x27, 0x1b, 0xeb, 0xd2, 0x2a, 0x78, 0x49, 0xd8, - 0x2b, 0xe5, 0x3f, 0x8a, 0x92, 0x80, 0xdb, 0xb8, 0x56, 0xc9, 0x64, 0xef, 0xa1, 0xca, 0xde, 0xbc, - 0xf6, 0x4f, 0xc2, 0x6b, 0x0c, 0xdb, 0xe2, 0xb5, 0x75, 0x18, 0xe3, 0x8c, 0x7b, 0x8b, 0xeb, 0x7b, - 0xa2, 0xb0, 0x32, 0xf4, 0x46, 0x6b, 0x74, 0x9f, 0x81, 0xf1, 0xc0, 0x9d, 0x62, 0x28, 0xf5, 0xb4, - 0x1a, 0xaa, 0xf7, 0xc0, 0xfc, 0x3e, 0x67, 0x16, 0x15, 0x3f, 0x98, 0x6a, 0xbd, 0x25, 0x54, 0x27, - 0xe4, 0x67, 0x21, 0x2f, 0xc8, 0x1b, 0xb6, 0x8b, 0x75, 0xa7, 0x6a, 0x9b, 0x97, 0xb1, 0xd1, 0x03, - 0xf5, 0x3f, 0xb7, 0x85, 0x6a, 0x23, 0x04, 0x27, 0xcc, 0x0b, 0x20, 0x07, 0xb3, 0x8a, 0x66, 0xd6, - 0xea, 0x8e, 0xeb, 0x47, 0x30, 0xfe, 0x8b, 0x88, 0x54, 0x80, 0x5b, 0xa0, 0xb0, 0x62, 0x19, 0x72, - 0x74, 0xd9, 0x6b, 0x4a, 0xfe, 0x2b, 0x27, 0x1a, 0x6c, 0xa2, 0x78, 0xe1, 0xd0, 0x9d, 0x5a, 0x1d, - 0xb9, 0xbd, 0xd4, 0xbf, 0x7f, 0x13, 0x85, 0x83, 0x43, 0x78, 0xe1, 0xf0, 0xb7, 0xeb, 0x98, 0x74, - 0xfb, 0x1e, 0x18, 0x3e, 0x10, 0x85, 0x43, 0x60, 0x38, 0x85, 0x18, 0x18, 0x7a, 0xa0, 0xf8, 0x77, - 0x41, 0x21, 0x30, 0x84, 0xe2, 0xf1, 0x66, 0xa3, 0x75, 0x71, 0xd5, 0xf4, 0x7c, 0x97, 0x8d, 0xc2, - 0x37, 0xa7, 0xfa, 0xf0, 0x5a, 0xeb, 0x10, 0xa6, 0x86, 0xa0, 0xc5, 0x33, 0x30, 0xd4, 0x36, 0x62, - 0x28, 0x51, 0xbf, 0xe8, 0xe7, 0x9f, 0xbd, 0xce, 0x8b, 0x51, 0xeb, 0x84, 0x51, 0x5c, 0x24, 0x71, - 0x6f, 0x9d, 0x03, 0xa2, 0xc9, 0x9e, 0xbb, 0x1e, 0x84, 0xbe, 0x65, 0x0c, 0x28, 0x9e, 0x86, 0xc1, - 0x96, 0x19, 0x20, 0x9a, 0xea, 0x77, 0x39, 0x55, 0x36, 0x3c, 0x02, 0x14, 0x8f, 0x42, 0x82, 0xf4, - 0xf3, 0x68, 0xf8, 0xef, 0x71, 0x38, 0x55, 0x2f, 0x3e, 0x02, 0x29, 0xd1, 0xc7, 0xa3, 0xa1, 0xbf, - 0xcf, 0xa1, 0x01, 0x84, 0xc0, 0x45, 0x0f, 0x8f, 0x86, 0xff, 0x81, 0x80, 0x0b, 0x08, 0x81, 0xf7, - 0xee, 0xc2, 0x8f, 0x5e, 0x48, 0xf0, 0x3a, 0x2c, 0x7c, 0x77, 0x12, 0x06, 0x78, 0xf3, 0x8e, 0x46, - 0x3f, 0xcf, 0x1f, 0x2e, 0x10, 0xc5, 0x87, 0x21, 0xd9, 0xa3, 0xc3, 0xff, 0x90, 0x43, 0x99, 0x7e, - 0x71, 0x16, 0x32, 0xa1, 0x86, 0x1d, 0x0d, 0xff, 0x23, 0x0e, 0x0f, 0xa3, 0x88, 0xe9, 0xbc, 0x61, - 0x47, 0x13, 0xfc, 0xb1, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xaf, 0x8e, 0x46, 0xff, 0x89, 0xf0, - 0xba, 0x80, 0x14, 0x4f, 0x41, 0x3a, 0xa8, 0xbf, 0xd1, 0xf8, 0x3f, 0xe5, 0xf8, 0x26, 0x86, 0x78, - 0x20, 0x54, 0xff, 0xa3, 0x29, 0xfe, 0x4c, 0x78, 0x20, 0x84, 0x22, 0xc7, 0xa8, 0xbd, 0xa7, 0x47, - 0x33, 0xfd, 0xb9, 0x38, 0x46, 0x6d, 0x2d, 0x9d, 0x44, 0x93, 0x96, 0xc1, 0x68, 0x8a, 0xbf, 0x10, - 0xd1, 0xa4, 0xfa, 0xc4, 0x8c, 0xf6, 0x26, 0x19, 0xcd, 0xf1, 0x97, 0xc2, 0x8c, 0xb6, 0x1e, 0x59, - 0x5c, 0x05, 0xa5, 0xb3, 0x41, 0x46, 0xf3, 0xbd, 0xc8, 0xf9, 0x86, 0x3b, 0xfa, 0x63, 0xf1, 0x49, - 0x18, 0xeb, 0xde, 0x1c, 0xa3, 0x59, 0x5f, 0xba, 0xde, 0xf6, 0x39, 0x13, 0xee, 0x8d, 0xc5, 0xf5, - 0x66, 0x95, 0x0d, 0x37, 0xc6, 0x68, 0xda, 0x97, 0xaf, 0xb7, 0x16, 0xda, 0x70, 0x5f, 0x2c, 0x96, - 0x00, 0x9a, 0x3d, 0x29, 0x9a, 0xeb, 0x55, 0xce, 0x15, 0x02, 0x91, 0xa3, 0xc1, 0x5b, 0x52, 0x34, - 0xfe, 0x35, 0x71, 0x34, 0x38, 0x82, 0x1c, 0x0d, 0xd1, 0x8d, 0xa2, 0xd1, 0xaf, 0x8b, 0xa3, 0x21, - 0x20, 0xc5, 0x93, 0x90, 0xb2, 0x1b, 0x96, 0x45, 0x72, 0x4b, 0xb9, 0xf9, 0x7f, 0xb2, 0xc9, 0xff, - 0xe8, 0x06, 0x07, 0x0b, 0x40, 0xf1, 0x28, 0x24, 0x71, 0x6d, 0x13, 0x1b, 0x51, 0xc8, 0x1f, 0xdf, - 0x10, 0xf5, 0x84, 0x68, 0x17, 0x4f, 0x01, 0xb0, 0x8f, 0x69, 0xfa, 0x1b, 0x4b, 0x04, 0xf6, 0x27, - 0x37, 0xf8, 0xef, 0xf7, 0x4d, 0x48, 0x93, 0x80, 0xfd, 0x6f, 0x80, 0x9b, 0x13, 0x5c, 0x6b, 0x25, - 0xa0, 0x1f, 0xe0, 0x27, 0x60, 0xe0, 0x9c, 0xe7, 0xd8, 0x3e, 0xaa, 0x46, 0xa1, 0x7f, 0xca, 0xd1, - 0x42, 0x9f, 0x38, 0xac, 0xe6, 0xb8, 0xd8, 0x47, 0x55, 0x2f, 0x0a, 0xfb, 0x33, 0x8e, 0x0d, 0x00, - 0x04, 0xac, 0x23, 0xcf, 0xef, 0xe5, 0xbd, 0x7f, 0x2e, 0xc0, 0x02, 0x40, 0x8c, 0x26, 0x7f, 0x9f, - 0xc7, 0xdb, 0x51, 0xd8, 0xaf, 0x84, 0xd1, 0x5c, 0xbf, 0xf8, 0x08, 0xa4, 0xc9, 0x9f, 0xec, 0xff, - 0xb4, 0x44, 0x80, 0x7f, 0xc1, 0xc1, 0x4d, 0x04, 0x79, 0xb2, 0xe7, 0x1b, 0xbe, 0x19, 0xed, 0xec, - 0x5f, 0xf2, 0x48, 0x0b, 0xfd, 0x62, 0x09, 0x32, 0x9e, 0x6f, 0x18, 0x0d, 0x3e, 0xd1, 0x44, 0xc0, - 0xbf, 0xbe, 0x11, 0x7c, 0xe4, 0x06, 0x98, 0x99, 0x83, 0xdd, 0xef, 0xeb, 0x60, 0xde, 0x99, 0x77, - 0xd8, 0x4d, 0x1d, 0xbc, 0x2b, 0x41, 0xae, 0x62, 0x5a, 0x78, 0xda, 0x70, 0x7c, 0x7e, 0xad, 0x96, - 0x21, 0x6b, 0xc3, 0xf1, 0x49, 0xbc, 0xc7, 0xf7, 0x76, 0x25, 0x37, 0x39, 0x0c, 0xd2, 0x92, 0x92, - 0x05, 0x09, 0xf1, 0xff, 0x6b, 0x21, 0xa1, 0x99, 0xc5, 0x4f, 0xae, 0x16, 0xfa, 0x3e, 0xbd, 0x5a, - 0xe8, 0xfb, 0x9f, 0xab, 0x85, 0xbe, 0xcf, 0xaf, 0x16, 0xa4, 0x2f, 0xaf, 0x16, 0xa4, 0xaf, 0xae, - 0x16, 0xa4, 0x6f, 0xae, 0x16, 0xa4, 0x2b, 0x3b, 0x05, 0xe9, 0xed, 0x9d, 0x82, 0xf4, 0xde, 0x4e, - 0x41, 0xfa, 0x70, 0xa7, 0x20, 0x7d, 0xb4, 0x53, 0x90, 0x3e, 0xd9, 0x29, 0xf4, 0x7d, 0xba, 0x53, - 0xe8, 0xfb, 0x7c, 0xa7, 0x20, 0x7d, 0xb9, 0x53, 0xe8, 0xfb, 0x6a, 0xa7, 0x20, 0x7d, 0xb3, 0x53, - 0xe8, 0xbb, 0xf2, 0x7f, 0x85, 0xbe, 0x5f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x48, 0x22, 0x25, 0xd5, - 0x2a, 0x2e, 0x00, 0x00, + // 3657 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0x1b, 0xd7, + 0x75, 0xe6, 0xe2, 0x87, 0x04, 0x0e, 0x40, 0x70, 0xb9, 0xa4, 0x29, 0x88, 0x8e, 0x21, 0x8a, 0xb1, + 0x63, 0xda, 0x6e, 0xa8, 0x8c, 0x6c, 0xc9, 0xf2, 0xaa, 0x89, 0x06, 0x04, 0x21, 0x06, 0x2a, 0x49, + 0x20, 0x0b, 0x32, 0x96, 0xd2, 0x87, 0x9d, 0xe5, 0xee, 0x05, 0xb8, 0xd2, 0x62, 0x17, 0xd9, 0x5d, + 0x48, 0xa2, 0x9e, 0xd4, 0x71, 0x7f, 0x26, 0xd3, 0xe9, 0x7f, 0x67, 0x9a, 0xb8, 0x8e, 0xdb, 0x66, + 0xa6, 0x75, 0x9a, 0x34, 0x6d, 0xd2, 0x9f, 0x34, 0xd3, 0xa7, 0xbc, 0xa4, 0xf5, 0x53, 0x27, 0x79, + 0xeb, 0x43, 0x1f, 0x2c, 0xc6, 0x33, 0x75, 0x5b, 0xb5, 0x75, 0x1b, 0xcd, 0x34, 0x33, 0x7a, 0xc9, + 0xdc, 0xbf, 0xc5, 0x2e, 0x00, 0x72, 0xc1, 0xcc, 0x38, 0x7e, 0x22, 0xef, 0xb9, 0xe7, 0xfb, 0xf6, + 0xec, 0xb9, 0xe7, 0x9e, 0x73, 0xee, 0x5d, 0xc0, 0x0f, 0x2f, 0xc0, 0x52, 0xdb, 0x71, 0xda, 0x16, + 0x3a, 0xd7, 0x75, 0x1d, 0xdf, 0xd9, 0xeb, 0xb5, 0xce, 0x19, 0xc8, 0xd3, 0x5d, 0xb3, 0xeb, 0x3b, + 0xee, 0x2a, 0x91, 0x49, 0x33, 0x54, 0x63, 0x95, 0x6b, 0x2c, 0x6f, 0xc1, 0xec, 0x55, 0xd3, 0x42, + 0xeb, 0x81, 0x62, 0x13, 0xf9, 0xd2, 0x25, 0x48, 0xb5, 0x4c, 0x0b, 0x15, 0x85, 0xa5, 0xe4, 0x4a, + 0xee, 0xfc, 0xd3, 0xab, 0x03, 0xa0, 0xd5, 0x28, 0xa2, 0x81, 0xc5, 0x0a, 0x41, 0x2c, 0xbf, 0x9b, + 0x82, 0xb9, 0x11, 0xb3, 0x92, 0x04, 0x29, 0x5b, 0xeb, 0x60, 0x46, 0x61, 0x25, 0xab, 0x90, 0xff, + 0xa5, 0x22, 0x4c, 0x75, 0x35, 0xfd, 0x96, 0xd6, 0x46, 0xc5, 0x04, 0x11, 0xf3, 0xa1, 0x54, 0x02, + 0x30, 0x50, 0x17, 0xd9, 0x06, 0xb2, 0xf5, 0x83, 0x62, 0x72, 0x29, 0xb9, 0x92, 0x55, 0x42, 0x12, + 0xe9, 0x05, 0x98, 0xed, 0xf6, 0xf6, 0x2c, 0x53, 0x57, 0x43, 0x6a, 0xb0, 0x94, 0x5c, 0x49, 0x2b, + 0x22, 0x9d, 0x58, 0xef, 0x2b, 0x3f, 0x0b, 0x33, 0x77, 0x90, 0x76, 0x2b, 0xac, 0x9a, 0x23, 0xaa, + 0x05, 0x2c, 0x0e, 0x29, 0x56, 0x20, 0xdf, 0x41, 0x9e, 0xa7, 0xb5, 0x91, 0xea, 0x1f, 0x74, 0x51, + 0x31, 0x45, 0xde, 0x7e, 0x69, 0xe8, 0xed, 0x07, 0xdf, 0x3c, 0xc7, 0x50, 0x3b, 0x07, 0x5d, 0x24, + 0x95, 0x21, 0x8b, 0xec, 0x5e, 0x87, 0x32, 0xa4, 0x8f, 0xf0, 0x5f, 0xd5, 0xee, 0x75, 0x06, 0x59, + 0x32, 0x18, 0xc6, 0x28, 0xa6, 0x3c, 0xe4, 0xde, 0x36, 0x75, 0x54, 0x9c, 0x24, 0x04, 0xcf, 0x0e, + 0x11, 0x34, 0xe9, 0xfc, 0x20, 0x07, 0xc7, 0x49, 0x15, 0xc8, 0xa2, 0xbb, 0x3e, 0xb2, 0x3d, 0xd3, + 0xb1, 0x8b, 0x53, 0x84, 0xe4, 0x99, 0x11, 0xab, 0x88, 0x2c, 0x63, 0x90, 0xa2, 0x8f, 0x93, 0x2e, + 0xc2, 0x94, 0xd3, 0xf5, 0x4d, 0xc7, 0xf6, 0x8a, 0x99, 0x25, 0x61, 0x25, 0x77, 0xfe, 0x23, 0x23, + 0x03, 0xa1, 0x4e, 0x75, 0x14, 0xae, 0x2c, 0xd5, 0x40, 0xf4, 0x9c, 0x9e, 0xab, 0x23, 0x55, 0x77, + 0x0c, 0xa4, 0x9a, 0x76, 0xcb, 0x29, 0x66, 0x09, 0xc1, 0x99, 0xe1, 0x17, 0x21, 0x8a, 0x15, 0xc7, + 0x40, 0x35, 0xbb, 0xe5, 0x28, 0x05, 0x2f, 0x32, 0x96, 0x16, 0x60, 0xd2, 0x3b, 0xb0, 0x7d, 0xed, + 0x6e, 0x31, 0x4f, 0x22, 0x84, 0x8d, 0x96, 0xff, 0x3f, 0x0d, 0x33, 0xe3, 0x84, 0xd8, 0x65, 0x48, + 0xb7, 0xf0, 0x5b, 0x16, 0x13, 0x27, 0xf1, 0x01, 0xc5, 0x44, 0x9d, 0x38, 0xf9, 0x53, 0x3a, 0xb1, + 0x0c, 0x39, 0x1b, 0x79, 0x3e, 0x32, 0x68, 0x44, 0x24, 0xc7, 0x8c, 0x29, 0xa0, 0xa0, 0xe1, 0x90, + 0x4a, 0xfd, 0x54, 0x21, 0x75, 0x1d, 0x66, 0x02, 0x93, 0x54, 0x57, 0xb3, 0xdb, 0x3c, 0x36, 0xcf, + 0xc5, 0x59, 0xb2, 0x5a, 0xe5, 0x38, 0x05, 0xc3, 0x94, 0x02, 0x8a, 0x8c, 0xa5, 0x75, 0x00, 0xc7, + 0x46, 0x4e, 0x4b, 0x35, 0x90, 0x6e, 0x15, 0x33, 0x47, 0x78, 0xa9, 0x8e, 0x55, 0x86, 0xbc, 0xe4, + 0x50, 0xa9, 0x6e, 0x49, 0xaf, 0xf4, 0x43, 0x6d, 0xea, 0x88, 0x48, 0xd9, 0xa2, 0x9b, 0x6c, 0x28, + 0xda, 0x76, 0xa1, 0xe0, 0x22, 0x1c, 0xf7, 0xc8, 0x60, 0x6f, 0x96, 0x25, 0x46, 0xac, 0xc6, 0xbe, + 0x99, 0xc2, 0x60, 0xf4, 0xc5, 0xa6, 0xdd, 0xf0, 0x50, 0xfa, 0x28, 0x04, 0x02, 0x95, 0x84, 0x15, + 0x90, 0x2c, 0x94, 0xe7, 0xc2, 0x6d, 0xad, 0x83, 0x16, 0x2f, 0x41, 0x21, 0xea, 0x1e, 0x69, 0x1e, + 0xd2, 0x9e, 0xaf, 0xb9, 0x3e, 0x89, 0xc2, 0xb4, 0x42, 0x07, 0x92, 0x08, 0x49, 0x64, 0x1b, 0x24, + 0xcb, 0xa5, 0x15, 0xfc, 0xef, 0xe2, 0xcb, 0x30, 0x1d, 0x79, 0xfc, 0xb8, 0xc0, 0xe5, 0x2f, 0x4e, + 0xc2, 0xfc, 0xa8, 0x98, 0x1b, 0x19, 0xfe, 0x0b, 0x30, 0x69, 0xf7, 0x3a, 0x7b, 0xc8, 0x2d, 0x26, + 0x09, 0x03, 0x1b, 0x49, 0x65, 0x48, 0x5b, 0xda, 0x1e, 0xb2, 0x8a, 0xa9, 0x25, 0x61, 0xa5, 0x70, + 0xfe, 0x85, 0xb1, 0xa2, 0x7a, 0x75, 0x13, 0x43, 0x14, 0x8a, 0x94, 0x3e, 0x05, 0x29, 0x96, 0xe2, + 0x30, 0xc3, 0xf3, 0xe3, 0x31, 0xe0, 0x58, 0x54, 0x08, 0x4e, 0x7a, 0x12, 0xb2, 0xf8, 0x2f, 0xf5, + 0xed, 0x24, 0xb1, 0x39, 0x83, 0x05, 0xd8, 0xaf, 0xd2, 0x22, 0x64, 0x48, 0x98, 0x19, 0x88, 0x97, + 0x86, 0x60, 0x8c, 0x17, 0xc6, 0x40, 0x2d, 0xad, 0x67, 0xf9, 0xea, 0x6d, 0xcd, 0xea, 0x21, 0x12, + 0x30, 0x59, 0x25, 0xcf, 0x84, 0x9f, 0xc5, 0x32, 0xe9, 0x0c, 0xe4, 0x68, 0x54, 0x9a, 0xb6, 0x81, + 0xee, 0x92, 0xec, 0x93, 0x56, 0x68, 0xa0, 0xd6, 0xb0, 0x04, 0x3f, 0xfe, 0xa6, 0xe7, 0xd8, 0x7c, + 0x69, 0xc9, 0x23, 0xb0, 0x80, 0x3c, 0xfe, 0xe5, 0xc1, 0xc4, 0xf7, 0xd4, 0xe8, 0xd7, 0x1b, 0x8c, + 0xc5, 0xe5, 0x6f, 0x27, 0x20, 0x45, 0xf6, 0xdb, 0x0c, 0xe4, 0x76, 0x6e, 0x34, 0xaa, 0xea, 0x7a, + 0x7d, 0x77, 0x6d, 0xb3, 0x2a, 0x0a, 0x52, 0x01, 0x80, 0x08, 0xae, 0x6e, 0xd6, 0xcb, 0x3b, 0x62, + 0x22, 0x18, 0xd7, 0xb6, 0x77, 0x2e, 0xbe, 0x24, 0x26, 0x03, 0xc0, 0x2e, 0x15, 0xa4, 0xc2, 0x0a, + 0x2f, 0x9e, 0x17, 0xd3, 0x92, 0x08, 0x79, 0x4a, 0x50, 0xbb, 0x5e, 0x5d, 0xbf, 0xf8, 0x92, 0x38, + 0x19, 0x95, 0xbc, 0x78, 0x5e, 0x9c, 0x92, 0xa6, 0x21, 0x4b, 0x24, 0x6b, 0xf5, 0xfa, 0xa6, 0x98, + 0x09, 0x38, 0x9b, 0x3b, 0x4a, 0x6d, 0x7b, 0x43, 0xcc, 0x06, 0x9c, 0x1b, 0x4a, 0x7d, 0xb7, 0x21, + 0x42, 0xc0, 0xb0, 0x55, 0x6d, 0x36, 0xcb, 0x1b, 0x55, 0x31, 0x17, 0x68, 0xac, 0xdd, 0xd8, 0xa9, + 0x36, 0xc5, 0x7c, 0xc4, 0xac, 0x17, 0xcf, 0x8b, 0xd3, 0xc1, 0x23, 0xaa, 0xdb, 0xbb, 0x5b, 0x62, + 0x41, 0x9a, 0x85, 0x69, 0xfa, 0x08, 0x6e, 0xc4, 0xcc, 0x80, 0xe8, 0xe2, 0x4b, 0xa2, 0xd8, 0x37, + 0x84, 0xb2, 0xcc, 0x46, 0x04, 0x17, 0x5f, 0x12, 0xa5, 0xe5, 0x0a, 0xa4, 0x49, 0x74, 0x49, 0x12, + 0x14, 0x36, 0xcb, 0x6b, 0xd5, 0x4d, 0xb5, 0xde, 0xd8, 0xa9, 0xd5, 0xb7, 0xcb, 0x9b, 0xa2, 0xd0, + 0x97, 0x29, 0xd5, 0xcf, 0xec, 0xd6, 0x94, 0xea, 0xba, 0x98, 0x08, 0xcb, 0x1a, 0xd5, 0xf2, 0x4e, + 0x75, 0x5d, 0x4c, 0x2e, 0xeb, 0x30, 0x3f, 0x2a, 0xcf, 0x8c, 0xdc, 0x19, 0xa1, 0x25, 0x4e, 0x1c, + 0xb1, 0xc4, 0x84, 0x6b, 0x68, 0x89, 0xbf, 0x22, 0xc0, 0xdc, 0x88, 0x5c, 0x3b, 0xf2, 0x21, 0x57, + 0x20, 0x4d, 0x43, 0x94, 0x56, 0x9f, 0xe7, 0x46, 0x26, 0x6d, 0x12, 0xb0, 0x43, 0x15, 0x88, 0xe0, + 0xc2, 0x15, 0x38, 0x79, 0x44, 0x05, 0xc6, 0x14, 0x43, 0x46, 0xbe, 0x26, 0x40, 0xf1, 0x28, 0xee, + 0x98, 0x44, 0x91, 0x88, 0x24, 0x8a, 0xcb, 0x83, 0x06, 0x9c, 0x3d, 0xfa, 0x1d, 0x86, 0xac, 0x78, + 0x4b, 0x80, 0x85, 0xd1, 0x8d, 0xca, 0x48, 0x1b, 0x3e, 0x05, 0x93, 0x1d, 0xe4, 0xef, 0x3b, 0xbc, + 0x58, 0x7f, 0x6c, 0x44, 0x09, 0xc0, 0xd3, 0x83, 0xbe, 0x62, 0xa8, 0x70, 0x0d, 0x49, 0x1e, 0xd5, + 0x6d, 0x50, 0x6b, 0x86, 0x2c, 0xfd, 0x42, 0x02, 0x9e, 0x18, 0x49, 0x3e, 0xd2, 0xd0, 0xa7, 0x00, + 0x4c, 0xbb, 0xdb, 0xf3, 0x69, 0x41, 0xa6, 0xf9, 0x29, 0x4b, 0x24, 0x64, 0xef, 0xe3, 0xdc, 0xd3, + 0xf3, 0x83, 0xf9, 0x24, 0x99, 0x07, 0x2a, 0x22, 0x0a, 0x97, 0xfa, 0x86, 0xa6, 0x88, 0xa1, 0xa5, + 0x23, 0xde, 0x74, 0xa8, 0xd6, 0x7d, 0x02, 0x44, 0xdd, 0x32, 0x91, 0xed, 0xab, 0x9e, 0xef, 0x22, + 0xad, 0x63, 0xda, 0x6d, 0x92, 0x80, 0x33, 0x72, 0xba, 0xa5, 0x59, 0x1e, 0x52, 0x66, 0xe8, 0x74, + 0x93, 0xcf, 0x62, 0x04, 0xa9, 0x32, 0x6e, 0x08, 0x31, 0x19, 0x41, 0xd0, 0xe9, 0x00, 0xb1, 0xfc, + 0xf5, 0x29, 0xc8, 0x85, 0xda, 0x3a, 0xe9, 0x2c, 0xe4, 0x6f, 0x6a, 0xb7, 0x35, 0x95, 0xb7, 0xea, + 0xd4, 0x13, 0x39, 0x2c, 0x6b, 0xb0, 0x76, 0xfd, 0x13, 0x30, 0x4f, 0x54, 0x9c, 0x9e, 0x8f, 0x5c, + 0x55, 0xb7, 0x34, 0xcf, 0x23, 0x4e, 0xcb, 0x10, 0x55, 0x09, 0xcf, 0xd5, 0xf1, 0x54, 0x85, 0xcf, + 0x48, 0x17, 0x60, 0x8e, 0x20, 0x3a, 0x3d, 0xcb, 0x37, 0xbb, 0x16, 0x52, 0xf1, 0xe1, 0xc1, 0x23, + 0x89, 0x38, 0xb0, 0x6c, 0x16, 0x6b, 0x6c, 0x31, 0x05, 0x6c, 0x91, 0x27, 0xad, 0xc3, 0x53, 0x04, + 0xd6, 0x46, 0x36, 0x72, 0x35, 0x1f, 0xa9, 0xe8, 0xf3, 0x3d, 0xcd, 0xf2, 0x54, 0xcd, 0x36, 0xd4, + 0x7d, 0xcd, 0xdb, 0x2f, 0xce, 0x63, 0x82, 0xb5, 0x44, 0x51, 0x50, 0x4e, 0x63, 0xc5, 0x0d, 0xa6, + 0x57, 0x25, 0x6a, 0x65, 0xdb, 0xf8, 0xb4, 0xe6, 0xed, 0x4b, 0x32, 0x2c, 0x10, 0x16, 0xcf, 0x77, + 0x4d, 0xbb, 0xad, 0xea, 0xfb, 0x48, 0xbf, 0xa5, 0xf6, 0xfc, 0xd6, 0xa5, 0xe2, 0x93, 0xe1, 0xe7, + 0x13, 0x0b, 0x9b, 0x44, 0xa7, 0x82, 0x55, 0x76, 0xfd, 0xd6, 0x25, 0xa9, 0x09, 0x79, 0xbc, 0x18, + 0x1d, 0xf3, 0x1e, 0x52, 0x5b, 0x8e, 0x4b, 0x2a, 0x4b, 0x61, 0xc4, 0xce, 0x0e, 0x79, 0x70, 0xb5, + 0xce, 0x00, 0x5b, 0x8e, 0x81, 0xe4, 0x74, 0xb3, 0x51, 0xad, 0xae, 0x2b, 0x39, 0xce, 0x72, 0xd5, + 0x71, 0x71, 0x40, 0xb5, 0x9d, 0xc0, 0xc1, 0x39, 0x1a, 0x50, 0x6d, 0x87, 0xbb, 0xf7, 0x02, 0xcc, + 0xe9, 0x3a, 0x7d, 0x67, 0x53, 0x57, 0x59, 0x8b, 0xef, 0x15, 0xc5, 0x88, 0xb3, 0x74, 0x7d, 0x83, + 0x2a, 0xb0, 0x18, 0xf7, 0xa4, 0x57, 0xe0, 0x89, 0xbe, 0xb3, 0xc2, 0xc0, 0xd9, 0xa1, 0xb7, 0x1c, + 0x84, 0x5e, 0x80, 0xb9, 0xee, 0xc1, 0x30, 0x50, 0x8a, 0x3c, 0xb1, 0x7b, 0x30, 0x08, 0x7b, 0x86, + 0x1c, 0xdb, 0x5c, 0xa4, 0x6b, 0x3e, 0x32, 0x8a, 0xa7, 0xc2, 0xda, 0xa1, 0x09, 0xe9, 0x1c, 0x88, + 0xba, 0xae, 0x22, 0x5b, 0xdb, 0xb3, 0x90, 0xaa, 0xb9, 0xc8, 0xd6, 0xbc, 0xe2, 0x99, 0xb0, 0x72, + 0x41, 0xd7, 0xab, 0x64, 0xb6, 0x4c, 0x26, 0xa5, 0xe7, 0x61, 0xd6, 0xd9, 0xbb, 0xa9, 0xd3, 0xc8, + 0x52, 0xbb, 0x2e, 0x6a, 0x99, 0x77, 0x8b, 0x4f, 0x13, 0x37, 0xcd, 0xe0, 0x09, 0x12, 0x57, 0x0d, + 0x22, 0x96, 0x9e, 0x03, 0x51, 0xf7, 0xf6, 0x35, 0xb7, 0x4b, 0x4a, 0xbb, 0xd7, 0xd5, 0x74, 0x54, + 0x7c, 0x86, 0xaa, 0x52, 0xf9, 0x36, 0x17, 0xe3, 0xc8, 0xf6, 0xee, 0x98, 0x2d, 0x9f, 0x33, 0x3e, + 0x4b, 0x23, 0x9b, 0xc8, 0x18, 0xdb, 0x75, 0x98, 0xef, 0xd9, 0xa6, 0xed, 0x23, 0xb7, 0xeb, 0x22, + 0xdc, 0xc4, 0xd3, 0x9d, 0x58, 0xfc, 0xb7, 0xa9, 0x23, 0xda, 0xf0, 0xdd, 0xb0, 0x36, 0x0d, 0x00, + 0x65, 0xae, 0x37, 0x2c, 0x5c, 0x96, 0x21, 0x1f, 0x8e, 0x0b, 0x29, 0x0b, 0x34, 0x32, 0x44, 0x01, + 0xd7, 0xd8, 0x4a, 0x7d, 0x1d, 0x57, 0xc7, 0xcf, 0x55, 0xc5, 0x04, 0xae, 0xd2, 0x9b, 0xb5, 0x9d, + 0xaa, 0xaa, 0xec, 0x6e, 0xef, 0xd4, 0xb6, 0xaa, 0x62, 0xf2, 0xf9, 0x6c, 0xe6, 0xbd, 0x29, 0xf1, + 0xfe, 0xfd, 0xfb, 0xf7, 0x13, 0xcb, 0xdf, 0x4b, 0x40, 0x21, 0xda, 0x19, 0x4b, 0x3f, 0x0f, 0xa7, + 0xf8, 0x31, 0xd6, 0x43, 0xbe, 0x7a, 0xc7, 0x74, 0x49, 0xa8, 0x76, 0x34, 0xda, 0x5b, 0x06, 0x5e, + 0x9e, 0x67, 0x5a, 0x4d, 0xe4, 0xbf, 0x6a, 0xba, 0x38, 0x10, 0x3b, 0x9a, 0x2f, 0x6d, 0xc2, 0x19, + 0xdb, 0x51, 0x3d, 0x5f, 0xb3, 0x0d, 0xcd, 0x35, 0xd4, 0xfe, 0x05, 0x82, 0xaa, 0xe9, 0x3a, 0xf2, + 0x3c, 0x87, 0x96, 0x88, 0x80, 0xe5, 0x23, 0xb6, 0xd3, 0x64, 0xca, 0xfd, 0xdc, 0x59, 0x66, 0xaa, + 0x03, 0x11, 0x91, 0x3c, 0x2a, 0x22, 0x9e, 0x84, 0x6c, 0x47, 0xeb, 0xaa, 0xc8, 0xf6, 0xdd, 0x03, + 0xd2, 0xcf, 0x65, 0x94, 0x4c, 0x47, 0xeb, 0x56, 0xf1, 0xf8, 0x83, 0x5b, 0x83, 0xb0, 0x1f, 0xff, + 0x35, 0x09, 0xf9, 0x70, 0x4f, 0x87, 0x5b, 0x64, 0x9d, 0xe4, 0x6f, 0x81, 0xec, 0xf0, 0x8f, 0x1e, + 0xdb, 0x01, 0xae, 0x56, 0x70, 0x62, 0x97, 0x27, 0x69, 0xa7, 0xa5, 0x50, 0x24, 0x2e, 0xaa, 0x78, + 0x4f, 0x23, 0xda, 0xbf, 0x67, 0x14, 0x36, 0x92, 0x36, 0x60, 0xf2, 0xa6, 0x47, 0xb8, 0x27, 0x09, + 0xf7, 0xd3, 0xc7, 0x73, 0x5f, 0x6b, 0x12, 0xf2, 0xec, 0xb5, 0xa6, 0xba, 0x5d, 0x57, 0xb6, 0xca, + 0x9b, 0x0a, 0x83, 0x4b, 0xa7, 0x21, 0x65, 0x69, 0xf7, 0x0e, 0xa2, 0x25, 0x80, 0x88, 0xc6, 0x75, + 0xfc, 0x69, 0x48, 0xdd, 0x41, 0xda, 0xad, 0x68, 0xe2, 0x25, 0xa2, 0x0f, 0x30, 0xf4, 0xcf, 0x41, + 0x9a, 0xf8, 0x4b, 0x02, 0x60, 0x1e, 0x13, 0x27, 0xa4, 0x0c, 0xa4, 0x2a, 0x75, 0x05, 0x87, 0xbf, + 0x08, 0x79, 0x2a, 0x55, 0x1b, 0xb5, 0x6a, 0xa5, 0x2a, 0x26, 0x96, 0x2f, 0xc0, 0x24, 0x75, 0x02, + 0xde, 0x1a, 0x81, 0x1b, 0xc4, 0x09, 0x36, 0x64, 0x1c, 0x02, 0x9f, 0xdd, 0xdd, 0x5a, 0xab, 0x2a, + 0x62, 0x22, 0xbc, 0xbc, 0x1e, 0xe4, 0xc3, 0xed, 0xdc, 0xcf, 0x26, 0xa6, 0xfe, 0x41, 0x80, 0x5c, + 0xa8, 0x3d, 0xc3, 0x8d, 0x81, 0x66, 0x59, 0xce, 0x1d, 0x55, 0xb3, 0x4c, 0xcd, 0x63, 0x41, 0x01, + 0x44, 0x54, 0xc6, 0x92, 0x71, 0x17, 0xed, 0x67, 0x62, 0xfc, 0x9b, 0x02, 0x88, 0x83, 0xad, 0xdd, + 0x80, 0x81, 0xc2, 0x87, 0x6a, 0xe0, 0x1b, 0x02, 0x14, 0xa2, 0xfd, 0xdc, 0x80, 0x79, 0x67, 0x3f, + 0x54, 0xf3, 0xde, 0x49, 0xc0, 0x74, 0xa4, 0x8b, 0x1b, 0xd7, 0xba, 0xcf, 0xc3, 0xac, 0x69, 0xa0, + 0x4e, 0xd7, 0xf1, 0x91, 0xad, 0x1f, 0xa8, 0x16, 0xba, 0x8d, 0xac, 0xe2, 0x32, 0x49, 0x14, 0xe7, + 0x8e, 0xef, 0x13, 0x57, 0x6b, 0x7d, 0xdc, 0x26, 0x86, 0xc9, 0x73, 0xb5, 0xf5, 0xea, 0x56, 0xa3, + 0xbe, 0x53, 0xdd, 0xae, 0xdc, 0x50, 0x77, 0xb7, 0x7f, 0x61, 0xbb, 0xfe, 0xea, 0xb6, 0x22, 0x9a, + 0x03, 0x6a, 0x1f, 0xe0, 0x56, 0x6f, 0x80, 0x38, 0x68, 0x94, 0x74, 0x0a, 0x46, 0x99, 0x25, 0x4e, + 0x48, 0x73, 0x30, 0xb3, 0x5d, 0x57, 0x9b, 0xb5, 0xf5, 0xaa, 0x5a, 0xbd, 0x7a, 0xb5, 0x5a, 0xd9, + 0x69, 0xd2, 0x83, 0x73, 0xa0, 0xbd, 0x13, 0xdd, 0xd4, 0xaf, 0x27, 0x61, 0x6e, 0x84, 0x25, 0x52, + 0x99, 0xf5, 0xec, 0xf4, 0x18, 0xf1, 0xf1, 0x71, 0xac, 0x5f, 0xc5, 0x5d, 0x41, 0x43, 0x73, 0x7d, + 0xd6, 0xe2, 0x3f, 0x07, 0xd8, 0x4b, 0xb6, 0x6f, 0xb6, 0x4c, 0xe4, 0xb2, 0x7b, 0x06, 0xda, 0xc8, + 0xcf, 0xf4, 0xe5, 0xf4, 0xaa, 0xe1, 0xe7, 0x40, 0xea, 0x3a, 0x9e, 0xe9, 0x9b, 0xb7, 0x91, 0x6a, + 0xda, 0xfc, 0x52, 0x02, 0x37, 0xf6, 0x29, 0x45, 0xe4, 0x33, 0x35, 0xdb, 0x0f, 0xb4, 0x6d, 0xd4, + 0xd6, 0x06, 0xb4, 0x71, 0x02, 0x4f, 0x2a, 0x22, 0x9f, 0x09, 0xb4, 0xcf, 0x42, 0xde, 0x70, 0x7a, + 0xb8, 0x4d, 0xa2, 0x7a, 0xb8, 0x5e, 0x08, 0x4a, 0x8e, 0xca, 0x02, 0x15, 0xd6, 0xc7, 0xf6, 0x6f, + 0x43, 0xf2, 0x4a, 0x8e, 0xca, 0xa8, 0xca, 0xb3, 0x30, 0xa3, 0xb5, 0xdb, 0x2e, 0x26, 0xe7, 0x44, + 0xb4, 0x33, 0x2f, 0x04, 0x62, 0xa2, 0xb8, 0x78, 0x0d, 0x32, 0xdc, 0x0f, 0xb8, 0x24, 0x63, 0x4f, + 0xa8, 0x5d, 0x7a, 0x27, 0x95, 0x58, 0xc9, 0x2a, 0x19, 0x9b, 0x4f, 0x9e, 0x85, 0xbc, 0xe9, 0xa9, + 0xfd, 0xcb, 0xd1, 0xc4, 0x52, 0x62, 0x25, 0xa3, 0xe4, 0x4c, 0x2f, 0xb8, 0x0d, 0x5b, 0x7e, 0x2b, + 0x01, 0x85, 0xe8, 0xe5, 0xae, 0xb4, 0x0e, 0x19, 0xcb, 0xd1, 0x35, 0x12, 0x5a, 0xf4, 0xcb, 0xc2, + 0x4a, 0xcc, 0x7d, 0xf0, 0xea, 0x26, 0xd3, 0x57, 0x02, 0xe4, 0xe2, 0x3f, 0x0b, 0x90, 0xe1, 0x62, + 0x69, 0x01, 0x52, 0x5d, 0xcd, 0xdf, 0x27, 0x74, 0xe9, 0xb5, 0x84, 0x28, 0x28, 0x64, 0x8c, 0xe5, + 0x5e, 0x57, 0xb3, 0x49, 0x08, 0x30, 0x39, 0x1e, 0xe3, 0x75, 0xb5, 0x90, 0x66, 0x90, 0xb6, 0xdf, + 0xe9, 0x74, 0x90, 0xed, 0x7b, 0x7c, 0x5d, 0x99, 0xbc, 0xc2, 0xc4, 0xd2, 0x0b, 0x30, 0xeb, 0xbb, + 0x9a, 0x69, 0x45, 0x74, 0x53, 0x44, 0x57, 0xe4, 0x13, 0x81, 0xb2, 0x0c, 0xa7, 0x39, 0xaf, 0x81, + 0x7c, 0x4d, 0xdf, 0x47, 0x46, 0x1f, 0x34, 0x49, 0x6e, 0x0e, 0x4f, 0x31, 0x85, 0x75, 0x36, 0xcf, + 0xb1, 0xcb, 0x3f, 0x10, 0x60, 0x96, 0x1f, 0x54, 0x8c, 0xc0, 0x59, 0x5b, 0x00, 0x9a, 0x6d, 0x3b, + 0x7e, 0xd8, 0x5d, 0xc3, 0xa1, 0x3c, 0x84, 0x5b, 0x2d, 0x07, 0x20, 0x25, 0x44, 0xb0, 0xd8, 0x01, + 0xe8, 0xcf, 0x1c, 0xe9, 0xb6, 0x33, 0x90, 0x63, 0x37, 0xf7, 0xe4, 0xf3, 0x0f, 0x3d, 0xda, 0x02, + 0x15, 0xe1, 0x13, 0x8d, 0x34, 0x0f, 0xe9, 0x3d, 0xd4, 0x36, 0x6d, 0x76, 0x9f, 0x48, 0x07, 0xfc, + 0x96, 0x32, 0x15, 0xdc, 0x52, 0xae, 0x5d, 0x87, 0x39, 0xdd, 0xe9, 0x0c, 0x9a, 0xbb, 0x26, 0x0e, + 0x1c, 0xaf, 0xbd, 0x4f, 0x0b, 0x9f, 0x83, 0x7e, 0x8b, 0xf9, 0x95, 0x44, 0x72, 0xa3, 0xb1, 0xf6, + 0xb5, 0xc4, 0xe2, 0x06, 0xc5, 0x35, 0xf8, 0x6b, 0x2a, 0xa8, 0x65, 0x21, 0x1d, 0x9b, 0x0e, 0x3f, + 0xfa, 0x18, 0x7c, 0xbc, 0x6d, 0xfa, 0xfb, 0xbd, 0xbd, 0x55, 0xdd, 0xe9, 0x9c, 0x6b, 0x3b, 0x6d, + 0xa7, 0xff, 0xb9, 0x0b, 0x8f, 0xc8, 0x80, 0xfc, 0xc7, 0x3e, 0x79, 0x65, 0x03, 0xe9, 0x62, 0xec, + 0xf7, 0x31, 0x79, 0x1b, 0xe6, 0x98, 0xb2, 0x4a, 0xee, 0xdc, 0xe9, 0xd1, 0x40, 0x3a, 0xf6, 0xde, + 0xa5, 0xf8, 0xad, 0x77, 0x49, 0xad, 0x56, 0x66, 0x19, 0x14, 0xcf, 0xd1, 0x03, 0x84, 0xac, 0xc0, + 0x13, 0x11, 0x3e, 0xba, 0x2f, 0x91, 0x1b, 0xc3, 0xf8, 0x3d, 0xc6, 0x38, 0x17, 0x62, 0x6c, 0x32, + 0xa8, 0x5c, 0x81, 0xe9, 0x93, 0x70, 0xfd, 0x23, 0xe3, 0xca, 0xa3, 0x30, 0xc9, 0x06, 0xcc, 0x10, + 0x12, 0xbd, 0xe7, 0xf9, 0x4e, 0x87, 0x24, 0xbd, 0xe3, 0x69, 0xfe, 0xe9, 0x5d, 0xba, 0x51, 0x0a, + 0x18, 0x56, 0x09, 0x50, 0xb2, 0x0c, 0xe4, 0x33, 0x83, 0x81, 0x74, 0x2b, 0x86, 0xe1, 0x6d, 0x66, + 0x48, 0xa0, 0x2f, 0x7f, 0x16, 0xe6, 0xf1, 0xff, 0x24, 0x27, 0x85, 0x2d, 0x89, 0xbf, 0x65, 0x2a, + 0xfe, 0xe0, 0x35, 0xba, 0x17, 0xe7, 0x02, 0x82, 0x90, 0x4d, 0xa1, 0x55, 0x6c, 0x23, 0xdf, 0x47, + 0xae, 0xa7, 0x6a, 0xd6, 0x28, 0xf3, 0x42, 0xc7, 0xf4, 0xe2, 0x97, 0x1e, 0x46, 0x57, 0x71, 0x83, + 0x22, 0xcb, 0x96, 0x25, 0xef, 0xc2, 0xa9, 0x11, 0x51, 0x31, 0x06, 0xe7, 0xeb, 0x8c, 0x73, 0x7e, + 0x28, 0x32, 0x30, 0x6d, 0x03, 0xb8, 0x3c, 0x58, 0xcb, 0x31, 0x38, 0xff, 0x90, 0x71, 0x4a, 0x0c, + 0xcb, 0x97, 0x14, 0x33, 0x5e, 0x83, 0xd9, 0xdb, 0xc8, 0xdd, 0x73, 0x3c, 0x76, 0x35, 0x32, 0x06, + 0xdd, 0x1b, 0x8c, 0x6e, 0x86, 0x01, 0xc9, 0x5d, 0x09, 0xe6, 0x7a, 0x05, 0x32, 0x2d, 0x4d, 0x47, + 0x63, 0x50, 0x7c, 0x99, 0x51, 0x4c, 0x61, 0x7d, 0x0c, 0x2d, 0x43, 0xbe, 0xed, 0xb0, 0xb2, 0x14, + 0x0f, 0x7f, 0x93, 0xc1, 0x73, 0x1c, 0xc3, 0x28, 0xba, 0x4e, 0xb7, 0x67, 0xe1, 0x9a, 0x15, 0x4f, + 0xf1, 0x47, 0x9c, 0x82, 0x63, 0x18, 0xc5, 0x09, 0xdc, 0xfa, 0xc7, 0x9c, 0xc2, 0x0b, 0xf9, 0xf3, + 0x0a, 0xe4, 0x1c, 0xdb, 0x3a, 0x70, 0xec, 0x71, 0x8c, 0xf8, 0x13, 0xc6, 0x00, 0x0c, 0x82, 0x09, + 0x2e, 0x43, 0x76, 0xdc, 0x85, 0xf8, 0xd3, 0x87, 0x7c, 0x7b, 0xf0, 0x15, 0xd8, 0x80, 0x19, 0x9e, + 0xa0, 0x4c, 0xc7, 0x1e, 0x83, 0xe2, 0xcf, 0x18, 0x45, 0x21, 0x04, 0x63, 0xaf, 0xe1, 0x23, 0xcf, + 0x6f, 0xa3, 0x71, 0x48, 0xde, 0xe2, 0xaf, 0xc1, 0x20, 0xcc, 0x95, 0x7b, 0xc8, 0xd6, 0xf7, 0xc7, + 0x63, 0xf8, 0x2a, 0x77, 0x25, 0xc7, 0x60, 0x8a, 0x0a, 0x4c, 0x77, 0x34, 0xd7, 0xdb, 0xd7, 0xac, + 0xb1, 0x96, 0xe3, 0xcf, 0x19, 0x47, 0x3e, 0x00, 0x31, 0x8f, 0xf4, 0xec, 0x93, 0xd0, 0x7c, 0x8d, + 0x7b, 0x24, 0x04, 0x63, 0x5b, 0xcf, 0xf3, 0xc9, 0x05, 0xd4, 0x49, 0xd8, 0xbe, 0xce, 0xb7, 0x1e, + 0xc5, 0x6e, 0x85, 0x19, 0x2f, 0x43, 0xd6, 0x33, 0xef, 0x8d, 0x45, 0xf3, 0x17, 0x7c, 0xa5, 0x09, + 0x00, 0x83, 0x6f, 0xc0, 0xe9, 0x91, 0x65, 0x62, 0x0c, 0xb2, 0x6f, 0x30, 0xb2, 0x85, 0x11, 0xa5, + 0x82, 0xa5, 0x84, 0x93, 0x52, 0xfe, 0x25, 0x4f, 0x09, 0x68, 0x80, 0xab, 0x81, 0x0f, 0x0a, 0x9e, + 0xd6, 0x3a, 0x99, 0xd7, 0xfe, 0x8a, 0x7b, 0x8d, 0x62, 0x23, 0x5e, 0xdb, 0x81, 0x05, 0xc6, 0x78, + 0xb2, 0x75, 0xfd, 0x26, 0x4f, 0xac, 0x14, 0xbd, 0x1b, 0x5d, 0xdd, 0x5f, 0x84, 0xc5, 0xc0, 0x9d, + 0xbc, 0x23, 0xf5, 0xd4, 0x8e, 0xd6, 0x1d, 0x83, 0xf9, 0x5b, 0x8c, 0x99, 0x67, 0xfc, 0xa0, 0xa5, + 0xf5, 0xb6, 0xb4, 0x2e, 0x26, 0xbf, 0x0e, 0x45, 0x4e, 0xde, 0xb3, 0x5d, 0xa4, 0x3b, 0x6d, 0xdb, + 0xbc, 0x87, 0x8c, 0x31, 0xa8, 0xff, 0x7a, 0x60, 0xa9, 0x76, 0x43, 0x70, 0xcc, 0x5c, 0x03, 0x31, + 0xe8, 0x55, 0x54, 0xb3, 0xd3, 0x75, 0x5c, 0x3f, 0x86, 0xf1, 0x6f, 0xf8, 0x4a, 0x05, 0xb8, 0x1a, + 0x81, 0xc9, 0x55, 0x28, 0x90, 0xe1, 0xb8, 0x21, 0xf9, 0xb7, 0x8c, 0x68, 0xba, 0x8f, 0x62, 0x89, + 0x43, 0x77, 0x3a, 0x5d, 0xcd, 0x1d, 0x27, 0xff, 0xfd, 0x1d, 0x4f, 0x1c, 0x0c, 0xc2, 0x12, 0x87, + 0x7f, 0xd0, 0x45, 0xb8, 0xda, 0x8f, 0xc1, 0xf0, 0x6d, 0x9e, 0x38, 0x38, 0x86, 0x51, 0xf0, 0x86, + 0x61, 0x0c, 0x8a, 0xbf, 0xe7, 0x14, 0x1c, 0x83, 0x29, 0x3e, 0xd3, 0x2f, 0xb4, 0x2e, 0x6a, 0x9b, + 0x9e, 0xef, 0xd2, 0x3e, 0xf8, 0x78, 0xaa, 0xef, 0x3c, 0x8c, 0x36, 0x61, 0x4a, 0x08, 0x2a, 0x5f, + 0x83, 0x99, 0x81, 0x16, 0x43, 0x8a, 0xfb, 0xcd, 0x42, 0xf1, 0x97, 0x1e, 0xb1, 0x64, 0x14, 0xed, + 0x30, 0xe4, 0x4d, 0xbc, 0xee, 0xd1, 0x3e, 0x20, 0x9e, 0xec, 0xb5, 0x47, 0xc1, 0xd2, 0x47, 0xda, + 0x00, 0xf9, 0x2a, 0x4c, 0x47, 0x7a, 0x80, 0x78, 0xaa, 0x5f, 0x66, 0x54, 0xf9, 0x70, 0x0b, 0x20, + 0x5f, 0x80, 0x14, 0xae, 0xe7, 0xf1, 0xf0, 0x5f, 0x61, 0x70, 0xa2, 0x2e, 0x7f, 0x12, 0x32, 0xbc, + 0x8e, 0xc7, 0x43, 0x7f, 0x95, 0x41, 0x03, 0x08, 0x86, 0xf3, 0x1a, 0x1e, 0x0f, 0xff, 0x35, 0x0e, + 0xe7, 0x10, 0x0c, 0x1f, 0xdf, 0x85, 0xdf, 0xfd, 0xf5, 0x14, 0xcb, 0xc3, 0xdc, 0x77, 0x97, 0x61, + 0x8a, 0x15, 0xef, 0x78, 0xf4, 0x17, 0xd8, 0xc3, 0x39, 0x42, 0x7e, 0x19, 0xd2, 0x63, 0x3a, 0xfc, + 0x37, 0x18, 0x94, 0xea, 0xcb, 0x15, 0xc8, 0x85, 0x0a, 0x76, 0x3c, 0xfc, 0x37, 0x19, 0x3c, 0x8c, + 0xc2, 0xa6, 0xb3, 0x82, 0x1d, 0x4f, 0xf0, 0x5b, 0xdc, 0x74, 0x86, 0xc0, 0x6e, 0xe3, 0xb5, 0x3a, + 0x1e, 0xfd, 0xdb, 0xdc, 0xeb, 0x1c, 0x22, 0x5f, 0x81, 0x6c, 0x90, 0x7f, 0xe3, 0xf1, 0xbf, 0xc3, + 0xf0, 0x7d, 0x0c, 0xf6, 0x40, 0x28, 0xff, 0xc7, 0x53, 0xfc, 0x2e, 0xf7, 0x40, 0x08, 0x85, 0xb7, + 0xd1, 0x60, 0x4d, 0x8f, 0x67, 0xfa, 0x3d, 0xbe, 0x8d, 0x06, 0x4a, 0x3a, 0x5e, 0x4d, 0x92, 0x06, + 0xe3, 0x29, 0x7e, 0x9f, 0xaf, 0x26, 0xd1, 0xc7, 0x66, 0x0c, 0x16, 0xc9, 0x78, 0x8e, 0x3f, 0xe0, + 0x66, 0x0c, 0xd4, 0x48, 0xb9, 0x01, 0xd2, 0x70, 0x81, 0x8c, 0xe7, 0xfb, 0x22, 0xe3, 0x9b, 0x1d, + 0xaa, 0x8f, 0xf2, 0xab, 0xb0, 0x30, 0xba, 0x38, 0xc6, 0xb3, 0x7e, 0xe9, 0xd1, 0xc0, 0x71, 0x26, + 0x5c, 0x1b, 0xe5, 0x9d, 0x7e, 0x96, 0x0d, 0x17, 0xc6, 0x78, 0xda, 0xd7, 0x1f, 0x45, 0x13, 0x6d, + 0xb8, 0x2e, 0xca, 0x65, 0x80, 0x7e, 0x4d, 0x8a, 0xe7, 0x7a, 0x83, 0x71, 0x85, 0x40, 0x78, 0x6b, + 0xb0, 0x92, 0x14, 0x8f, 0xff, 0x32, 0xdf, 0x1a, 0x0c, 0x81, 0xb7, 0x06, 0xaf, 0x46, 0xf1, 0xe8, + 0x37, 0xf9, 0xd6, 0xe0, 0x10, 0xf9, 0x32, 0x64, 0xec, 0x9e, 0x65, 0xe1, 0xd8, 0x92, 0x8e, 0xff, + 0x19, 0x51, 0xf1, 0xdf, 0x1f, 0x33, 0x30, 0x07, 0xc8, 0x17, 0x20, 0x8d, 0x3a, 0x7b, 0xc8, 0x88, + 0x43, 0xfe, 0xc7, 0x63, 0x9e, 0x4f, 0xb0, 0xb6, 0x7c, 0x05, 0x80, 0x1e, 0xa6, 0xc9, 0x57, 0xa2, + 0x18, 0xec, 0x7f, 0x3e, 0x66, 0xbf, 0x50, 0xe8, 0x43, 0xfa, 0x04, 0xf4, 0xf7, 0x0e, 0xc7, 0x13, + 0x3c, 0x8c, 0x12, 0x90, 0x03, 0xf8, 0x2b, 0x30, 0x75, 0xd3, 0x73, 0x6c, 0x5f, 0x6b, 0xc7, 0xa1, + 0xff, 0x8b, 0xa1, 0xb9, 0x3e, 0x76, 0x58, 0xc7, 0x71, 0x91, 0xaf, 0xb5, 0xbd, 0x38, 0xec, 0x7f, + 0x33, 0x6c, 0x00, 0xc0, 0x60, 0x5d, 0xf3, 0xfc, 0x71, 0xde, 0xfb, 0x7f, 0x38, 0x98, 0x03, 0xb0, + 0xd1, 0xf8, 0xff, 0x5b, 0xe8, 0x20, 0x0e, 0xfb, 0x3e, 0x37, 0x9a, 0xe9, 0xcb, 0x9f, 0x84, 0x2c, + 0xfe, 0x97, 0xfe, 0x6a, 0x27, 0x06, 0xfc, 0xbf, 0x0c, 0xdc, 0x47, 0xe0, 0x27, 0x7b, 0xbe, 0xe1, + 0x9b, 0xf1, 0xce, 0xfe, 0x3f, 0xb6, 0xd2, 0x5c, 0x5f, 0x2e, 0x43, 0xce, 0xf3, 0x0d, 0xa3, 0xc7, + 0x3a, 0x9a, 0x18, 0xf8, 0x8f, 0x1e, 0x07, 0x87, 0xdc, 0x00, 0xb3, 0x76, 0x76, 0xf4, 0x65, 0x1d, + 0x6c, 0x38, 0x1b, 0x0e, 0xbd, 0xa6, 0x83, 0x6f, 0x08, 0x50, 0x68, 0x99, 0x16, 0x5a, 0x35, 0x1c, + 0x9f, 0x5d, 0xab, 0xe5, 0xf0, 0xd8, 0x70, 0x7c, 0xbc, 0xde, 0x8b, 0x27, 0xbb, 0x92, 0x5b, 0x9e, + 0x05, 0x61, 0x4b, 0xca, 0x83, 0xa0, 0xb1, 0x5f, 0x93, 0x08, 0xda, 0xda, 0xe6, 0xdb, 0x0f, 0x4a, + 0x13, 0xdf, 0x7f, 0x50, 0x9a, 0xf8, 0x97, 0x07, 0xa5, 0x89, 0x77, 0x1e, 0x94, 0x84, 0xf7, 0x1e, + 0x94, 0x84, 0xf7, 0x1f, 0x94, 0x84, 0x1f, 0x3f, 0x28, 0x09, 0xf7, 0x0f, 0x4b, 0xc2, 0x57, 0x0f, + 0x4b, 0xc2, 0x37, 0x0f, 0x4b, 0xc2, 0x77, 0x0e, 0x4b, 0xc2, 0x77, 0x0f, 0x4b, 0xc2, 0xdb, 0x87, + 0xa5, 0x89, 0xef, 0x1f, 0x96, 0x26, 0xde, 0x39, 0x2c, 0x09, 0xef, 0x1d, 0x96, 0x26, 0xde, 0x3f, + 0x2c, 0x09, 0x3f, 0x3e, 0x2c, 0x4d, 0xdc, 0xff, 0x61, 0x69, 0xe2, 0x27, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x7c, 0xbe, 0x1b, 0xf8, 0x0c, 0x2f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/group/group.pb.go b/vendor/github.com/gogo/protobuf/test/group/group.pb.go index ac6108d68..9938b6608 100644 --- a/vendor/github.com/gogo/protobuf/test/group/group.pb.go +++ b/vendor/github.com/gogo/protobuf/test/group/group.pb.go @@ -98,230 +98,237 @@ func (this *Groups2_G) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func GroupDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3563 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0x1c, 0x65, - 0x96, 0x76, 0xf5, 0xc5, 0xee, 0x3e, 0xdd, 0x6e, 0x97, 0xcb, 0xc6, 0xe9, 0x18, 0xe8, 0x38, 0xe6, - 0x66, 0x60, 0x71, 0xc0, 0xb9, 0x90, 0x74, 0x16, 0xa2, 0xb6, 0xdd, 0x69, 0x1c, 0xf9, 0x46, 0xd9, - 0x86, 0x00, 0xd2, 0x96, 0xca, 0x55, 0x7f, 0xb7, 0x2b, 0xa9, 0xae, 0xea, 0xad, 0xaa, 0x4e, 0xe2, - 0x3c, 0x05, 0xb1, 0x17, 0x21, 0xb4, 0xf7, 0x95, 0x96, 0xfb, 0xb2, 0x48, 0xbb, 0xb0, 0xec, 0xce, - 0x0c, 0xcc, 0x85, 0x61, 0xe6, 0x69, 0x5e, 0x98, 0xe1, 0x69, 0x04, 0x6f, 0xf3, 0x30, 0x0f, 0x24, - 0x42, 0x9a, 0x5b, 0x66, 0x86, 0x19, 0x22, 0xcd, 0x48, 0x79, 0x19, 0xfd, 0xb7, 0xea, 0xaa, 0xee, - 0x76, 0xaa, 0x8d, 0x04, 0xcc, 0x93, 0xfb, 0x3f, 0xff, 0xf9, 0xbe, 0x3a, 0xff, 0xf9, 0xcf, 0x7f, - 0xce, 0xa9, 0xbf, 0x0c, 0x4f, 0x1f, 0x82, 0x89, 0x9a, 0x6d, 0xd7, 0x4c, 0x74, 0xa0, 0xe1, 0xd8, - 0x9e, 0xbd, 0xd9, 0xac, 0x1e, 0xd0, 0x91, 0xab, 0x39, 0x46, 0xc3, 0xb3, 0x9d, 0x69, 0x22, 0x93, - 0x86, 0xa8, 0xc6, 0x34, 0xd7, 0x98, 0x5c, 0x82, 0xe1, 0x93, 0x86, 0x89, 0xe6, 0x7d, 0xc5, 0x35, - 0xe4, 0x49, 0x47, 0x21, 0x51, 0x35, 0x4c, 0x94, 0x17, 0x26, 0xe2, 0x53, 0x99, 0x99, 0xdb, 0xa7, - 0xdb, 0x40, 0xd3, 0x61, 0xc4, 0x2a, 0x16, 0xcb, 0x04, 0x31, 0xf9, 0x49, 0x02, 0x46, 0xba, 0xcc, - 0x4a, 0x12, 0x24, 0x2c, 0xb5, 0x8e, 0x19, 0x85, 0xa9, 0xb4, 0x4c, 0x7e, 0x4b, 0x79, 0x18, 0x68, - 0xa8, 0xda, 0x59, 0xb5, 0x86, 0xf2, 0x31, 0x22, 0xe6, 0x43, 0xa9, 0x00, 0xa0, 0xa3, 0x06, 0xb2, - 0x74, 0x64, 0x69, 0xdb, 0xf9, 0xf8, 0x44, 0x7c, 0x2a, 0x2d, 0x07, 0x24, 0xd2, 0xbd, 0x30, 0xdc, - 0x68, 0x6e, 0x9a, 0x86, 0xa6, 0x04, 0xd4, 0x60, 0x22, 0x3e, 0x95, 0x94, 0x45, 0x3a, 0x31, 0xdf, - 0x52, 0xbe, 0x0b, 0x86, 0xce, 0x23, 0xf5, 0x6c, 0x50, 0x35, 0x43, 0x54, 0x73, 0x58, 0x1c, 0x50, - 0x9c, 0x83, 0x6c, 0x1d, 0xb9, 0xae, 0x5a, 0x43, 0x8a, 0xb7, 0xdd, 0x40, 0xf9, 0x04, 0x59, 0xfd, - 0x44, 0xc7, 0xea, 0xdb, 0x57, 0x9e, 0x61, 0xa8, 0xf5, 0xed, 0x06, 0x92, 0x4a, 0x90, 0x46, 0x56, - 0xb3, 0x4e, 0x19, 0x92, 0x3b, 0xf8, 0xaf, 0x6c, 0x35, 0xeb, 0xed, 0x2c, 0x29, 0x0c, 0x63, 0x14, - 0x03, 0x2e, 0x72, 0xce, 0x19, 0x1a, 0xca, 0xf7, 0x13, 0x82, 0xbb, 0x3a, 0x08, 0xd6, 0xe8, 0x7c, - 0x3b, 0x07, 0xc7, 0x49, 0x73, 0x90, 0x46, 0x17, 0x3c, 0x64, 0xb9, 0x86, 0x6d, 0xe5, 0x07, 0x08, - 0xc9, 0x1d, 0x5d, 0x76, 0x11, 0x99, 0x7a, 0x3b, 0x45, 0x0b, 0x27, 0x1d, 0x81, 0x01, 0xbb, 0xe1, - 0x19, 0xb6, 0xe5, 0xe6, 0x53, 0x13, 0xc2, 0x54, 0x66, 0xe6, 0x96, 0xae, 0x81, 0xb0, 0x42, 0x75, - 0x64, 0xae, 0x2c, 0x2d, 0x80, 0xe8, 0xda, 0x4d, 0x47, 0x43, 0x8a, 0x66, 0xeb, 0x48, 0x31, 0xac, - 0xaa, 0x9d, 0x4f, 0x13, 0x82, 0x7d, 0x9d, 0x0b, 0x21, 0x8a, 0x73, 0xb6, 0x8e, 0x16, 0xac, 0xaa, - 0x2d, 0xe7, 0xdc, 0xd0, 0x58, 0x1a, 0x83, 0x7e, 0x77, 0xdb, 0xf2, 0xd4, 0x0b, 0xf9, 0x2c, 0x89, - 0x10, 0x36, 0x9a, 0xfc, 0x43, 0x12, 0x86, 0x7a, 0x09, 0xb1, 0xe3, 0x90, 0xac, 0xe2, 0x55, 0xe6, - 0x63, 0xbb, 0xf1, 0x01, 0xc5, 0x84, 0x9d, 0xd8, 0xff, 0x39, 0x9d, 0x58, 0x82, 0x8c, 0x85, 0x5c, - 0x0f, 0xe9, 0x34, 0x22, 0xe2, 0x3d, 0xc6, 0x14, 0x50, 0x50, 0x67, 0x48, 0x25, 0x3e, 0x57, 0x48, - 0x9d, 0x86, 0x21, 0xdf, 0x24, 0xc5, 0x51, 0xad, 0x1a, 0x8f, 0xcd, 0x03, 0x51, 0x96, 0x4c, 0x97, - 0x39, 0x4e, 0xc6, 0x30, 0x39, 0x87, 0x42, 0x63, 0x69, 0x1e, 0xc0, 0xb6, 0x90, 0x5d, 0x55, 0x74, - 0xa4, 0x99, 0xf9, 0xd4, 0x0e, 0x5e, 0x5a, 0xc1, 0x2a, 0x1d, 0x5e, 0xb2, 0xa9, 0x54, 0x33, 0xa5, - 0x63, 0xad, 0x50, 0x1b, 0xd8, 0x21, 0x52, 0x96, 0xe8, 0x21, 0xeb, 0x88, 0xb6, 0x0d, 0xc8, 0x39, - 0x08, 0xc7, 0x3d, 0xd2, 0xd9, 0xca, 0xd2, 0xc4, 0x88, 0xe9, 0xc8, 0x95, 0xc9, 0x0c, 0x46, 0x17, - 0x36, 0xe8, 0x04, 0x87, 0xd2, 0x6d, 0xe0, 0x0b, 0x14, 0x12, 0x56, 0x40, 0xb2, 0x50, 0x96, 0x0b, - 0x97, 0xd5, 0x3a, 0x1a, 0x3f, 0x0a, 0xb9, 0xb0, 0x7b, 0xa4, 0x51, 0x48, 0xba, 0x9e, 0xea, 0x78, - 0x24, 0x0a, 0x93, 0x32, 0x1d, 0x48, 0x22, 0xc4, 0x91, 0xa5, 0x93, 0x2c, 0x97, 0x94, 0xf1, 0xcf, - 0xf1, 0x07, 0x61, 0x30, 0xf4, 0xf8, 0x5e, 0x81, 0x93, 0xcf, 0xf7, 0xc3, 0x68, 0xb7, 0x98, 0xeb, - 0x1a, 0xfe, 0x63, 0xd0, 0x6f, 0x35, 0xeb, 0x9b, 0xc8, 0xc9, 0xc7, 0x09, 0x03, 0x1b, 0x49, 0x25, - 0x48, 0x9a, 0xea, 0x26, 0x32, 0xf3, 0x89, 0x09, 0x61, 0x2a, 0x37, 0x73, 0x6f, 0x4f, 0x51, 0x3d, - 0xbd, 0x88, 0x21, 0x32, 0x45, 0x4a, 0x0f, 0x43, 0x82, 0xa5, 0x38, 0xcc, 0x70, 0x4f, 0x6f, 0x0c, - 0x38, 0x16, 0x65, 0x82, 0x93, 0x6e, 0x86, 0x34, 0xfe, 0x4b, 0x7d, 0xdb, 0x4f, 0x6c, 0x4e, 0x61, - 0x01, 0xf6, 0xab, 0x34, 0x0e, 0x29, 0x12, 0x66, 0x3a, 0xe2, 0xa5, 0xc1, 0x1f, 0xe3, 0x8d, 0xd1, - 0x51, 0x55, 0x6d, 0x9a, 0x9e, 0x72, 0x4e, 0x35, 0x9b, 0x88, 0x04, 0x4c, 0x5a, 0xce, 0x32, 0xe1, - 0x63, 0x58, 0x26, 0xed, 0x83, 0x0c, 0x8d, 0x4a, 0xc3, 0xd2, 0xd1, 0x05, 0x92, 0x7d, 0x92, 0x32, - 0x0d, 0xd4, 0x05, 0x2c, 0xc1, 0x8f, 0x3f, 0xe3, 0xda, 0x16, 0xdf, 0x5a, 0xf2, 0x08, 0x2c, 0x20, - 0x8f, 0x7f, 0xb0, 0x3d, 0xf1, 0xdd, 0xda, 0x7d, 0x79, 0xed, 0xb1, 0x38, 0xf9, 0x6e, 0x0c, 0x12, - 0xe4, 0xbc, 0x0d, 0x41, 0x66, 0xfd, 0x89, 0xd5, 0xb2, 0x32, 0xbf, 0xb2, 0x31, 0xbb, 0x58, 0x16, - 0x05, 0x29, 0x07, 0x40, 0x04, 0x27, 0x17, 0x57, 0x4a, 0xeb, 0x62, 0xcc, 0x1f, 0x2f, 0x2c, 0xaf, - 0x1f, 0x39, 0x24, 0xc6, 0x7d, 0xc0, 0x06, 0x15, 0x24, 0x82, 0x0a, 0x07, 0x67, 0xc4, 0xa4, 0x24, - 0x42, 0x96, 0x12, 0x2c, 0x9c, 0x2e, 0xcf, 0x1f, 0x39, 0x24, 0xf6, 0x87, 0x25, 0x07, 0x67, 0xc4, - 0x01, 0x69, 0x10, 0xd2, 0x44, 0x32, 0xbb, 0xb2, 0xb2, 0x28, 0xa6, 0x7c, 0xce, 0xb5, 0x75, 0x79, - 0x61, 0xb9, 0x22, 0xa6, 0x7d, 0xce, 0x8a, 0xbc, 0xb2, 0xb1, 0x2a, 0x82, 0xcf, 0xb0, 0x54, 0x5e, - 0x5b, 0x2b, 0x55, 0xca, 0x62, 0xc6, 0xd7, 0x98, 0x7d, 0x62, 0xbd, 0xbc, 0x26, 0x66, 0x43, 0x66, - 0x1d, 0x9c, 0x11, 0x07, 0xfd, 0x47, 0x94, 0x97, 0x37, 0x96, 0xc4, 0x9c, 0x34, 0x0c, 0x83, 0xf4, - 0x11, 0xdc, 0x88, 0xa1, 0x36, 0xd1, 0x91, 0x43, 0xa2, 0xd8, 0x32, 0x84, 0xb2, 0x0c, 0x87, 0x04, - 0x47, 0x0e, 0x89, 0xd2, 0xe4, 0x1c, 0x24, 0x49, 0x74, 0x49, 0x12, 0xe4, 0x16, 0x4b, 0xb3, 0xe5, - 0x45, 0x65, 0x65, 0x75, 0x7d, 0x61, 0x65, 0xb9, 0xb4, 0x28, 0x0a, 0x2d, 0x99, 0x5c, 0x7e, 0x74, - 0x63, 0x41, 0x2e, 0xcf, 0x8b, 0xb1, 0xa0, 0x6c, 0xb5, 0x5c, 0x5a, 0x2f, 0xcf, 0x8b, 0xf1, 0x49, - 0x0d, 0x46, 0xbb, 0xe5, 0x99, 0xae, 0x27, 0x23, 0xb0, 0xc5, 0xb1, 0x1d, 0xb6, 0x98, 0x70, 0x75, - 0x6c, 0xf1, 0xeb, 0x02, 0x8c, 0x74, 0xc9, 0xb5, 0x5d, 0x1f, 0x72, 0x02, 0x92, 0x34, 0x44, 0x69, - 0xf5, 0xb9, 0xbb, 0x6b, 0xd2, 0x26, 0x01, 0xdb, 0x51, 0x81, 0x08, 0x2e, 0x58, 0x81, 0xe3, 0x3b, - 0x54, 0x60, 0x4c, 0xd1, 0x61, 0xe4, 0x33, 0x02, 0xe4, 0x77, 0xe2, 0x8e, 0x48, 0x14, 0xb1, 0x50, - 0xa2, 0x38, 0xde, 0x6e, 0xc0, 0xfe, 0x9d, 0xd7, 0xd0, 0x61, 0xc5, 0x1b, 0x02, 0x8c, 0x75, 0x6f, - 0x54, 0xba, 0xda, 0xf0, 0x30, 0xf4, 0xd7, 0x91, 0xb7, 0x65, 0xf3, 0x62, 0x7d, 0x67, 0x97, 0x12, - 0x80, 0xa7, 0xdb, 0x7d, 0xc5, 0x50, 0xc1, 0x1a, 0x12, 0xdf, 0xa9, 0xdb, 0xa0, 0xd6, 0x74, 0x58, - 0xfa, 0x6c, 0x0c, 0x6e, 0xea, 0x4a, 0xde, 0xd5, 0xd0, 0x5b, 0x01, 0x0c, 0xab, 0xd1, 0xf4, 0x68, - 0x41, 0xa6, 0xf9, 0x29, 0x4d, 0x24, 0xe4, 0xec, 0xe3, 0xdc, 0xd3, 0xf4, 0xfc, 0xf9, 0x38, 0x99, - 0x07, 0x2a, 0x22, 0x0a, 0x47, 0x5b, 0x86, 0x26, 0x88, 0xa1, 0x85, 0x1d, 0x56, 0xda, 0x51, 0xeb, - 0xee, 0x07, 0x51, 0x33, 0x0d, 0x64, 0x79, 0x8a, 0xeb, 0x39, 0x48, 0xad, 0x1b, 0x56, 0x8d, 0x24, - 0xe0, 0x54, 0x31, 0x59, 0x55, 0x4d, 0x17, 0xc9, 0x43, 0x74, 0x7a, 0x8d, 0xcf, 0x62, 0x04, 0xa9, - 0x32, 0x4e, 0x00, 0xd1, 0x1f, 0x42, 0xd0, 0x69, 0x1f, 0x31, 0xf9, 0xdc, 0x00, 0x64, 0x02, 0x6d, - 0x9d, 0xb4, 0x1f, 0xb2, 0x67, 0xd4, 0x73, 0xaa, 0xc2, 0x5b, 0x75, 0xea, 0x89, 0x0c, 0x96, 0xad, - 0xb2, 0x76, 0xfd, 0x7e, 0x18, 0x25, 0x2a, 0x76, 0xd3, 0x43, 0x8e, 0xa2, 0x99, 0xaa, 0xeb, 0x12, - 0xa7, 0xa5, 0x88, 0xaa, 0x84, 0xe7, 0x56, 0xf0, 0xd4, 0x1c, 0x9f, 0x91, 0x0e, 0xc3, 0x08, 0x41, - 0xd4, 0x9b, 0xa6, 0x67, 0x34, 0x4c, 0xa4, 0xe0, 0x97, 0x07, 0x97, 0x24, 0x62, 0xdf, 0xb2, 0x61, - 0xac, 0xb1, 0xc4, 0x14, 0xb0, 0x45, 0xae, 0x54, 0x81, 0x5b, 0x09, 0xac, 0x86, 0x2c, 0xe4, 0xa8, - 0x1e, 0x52, 0xd0, 0x5f, 0x37, 0x55, 0xd3, 0x55, 0x54, 0x4b, 0x57, 0xb6, 0x54, 0x77, 0x2b, 0x3f, - 0x1a, 0x24, 0xd8, 0x8b, 0x75, 0x2b, 0x4c, 0xb5, 0x4c, 0x34, 0x4b, 0x96, 0xfe, 0x88, 0xea, 0x6e, - 0x49, 0x45, 0x18, 0x23, 0x44, 0xae, 0xe7, 0x18, 0x56, 0x4d, 0xd1, 0xb6, 0x90, 0x76, 0x56, 0x69, - 0x7a, 0xd5, 0xa3, 0xf9, 0x9b, 0x83, 0x0c, 0xc4, 0xc8, 0x35, 0xa2, 0x33, 0x87, 0x55, 0x36, 0xbc, - 0xea, 0x51, 0x69, 0x0d, 0xb2, 0x78, 0x3f, 0xea, 0xc6, 0x45, 0xa4, 0x54, 0x6d, 0x87, 0x14, 0x97, - 0x5c, 0x97, 0xc3, 0x1d, 0x70, 0xe2, 0xf4, 0x0a, 0x03, 0x2c, 0xd9, 0x3a, 0x2a, 0x26, 0xd7, 0x56, - 0xcb, 0xe5, 0x79, 0x39, 0xc3, 0x59, 0x4e, 0xda, 0x0e, 0x8e, 0xa9, 0x9a, 0xed, 0xfb, 0x38, 0x43, - 0x63, 0xaa, 0x66, 0x73, 0x0f, 0x1f, 0x86, 0x11, 0x4d, 0xa3, 0xcb, 0x36, 0x34, 0x85, 0x75, 0xf9, - 0x6e, 0x5e, 0x0c, 0xf9, 0x4b, 0xd3, 0x2a, 0x54, 0x81, 0x85, 0xb9, 0x2b, 0x1d, 0x83, 0x9b, 0x5a, - 0xfe, 0x0a, 0x02, 0x87, 0x3b, 0x56, 0xd9, 0x0e, 0x3d, 0x0c, 0x23, 0x8d, 0xed, 0x4e, 0xa0, 0x14, - 0x7a, 0x62, 0x63, 0xbb, 0x1d, 0x76, 0x07, 0x79, 0x73, 0x73, 0x90, 0xa6, 0x7a, 0x48, 0xcf, 0xef, - 0x09, 0x6a, 0x07, 0x26, 0xa4, 0x03, 0x20, 0x6a, 0x9a, 0x82, 0x2c, 0x75, 0xd3, 0x44, 0x8a, 0xea, - 0x20, 0x4b, 0x75, 0xf3, 0xfb, 0x82, 0xca, 0x39, 0x4d, 0x2b, 0x93, 0xd9, 0x12, 0x99, 0x94, 0xee, - 0x81, 0x61, 0x7b, 0xf3, 0x8c, 0x46, 0x83, 0x4b, 0x69, 0x38, 0xa8, 0x6a, 0x5c, 0xc8, 0xdf, 0x4e, - 0xdc, 0x34, 0x84, 0x27, 0x48, 0x68, 0xad, 0x12, 0xb1, 0x74, 0x37, 0x88, 0x9a, 0xbb, 0xa5, 0x3a, - 0x0d, 0x52, 0xdd, 0xdd, 0x86, 0xaa, 0xa1, 0xfc, 0x1d, 0x54, 0x95, 0xca, 0x97, 0xb9, 0x58, 0x3a, - 0x0d, 0xa3, 0x4d, 0xcb, 0xb0, 0x3c, 0xe4, 0x34, 0x1c, 0x84, 0x9b, 0x74, 0x7a, 0xd2, 0xf2, 0x3f, - 0x1b, 0xd8, 0xa1, 0xcd, 0xde, 0x08, 0x6a, 0xd3, 0xdd, 0x95, 0x47, 0x9a, 0x9d, 0xc2, 0xc9, 0x22, - 0x64, 0x83, 0x9b, 0x2e, 0xa5, 0x81, 0x6e, 0xbb, 0x28, 0xe0, 0x1a, 0x3a, 0xb7, 0x32, 0x8f, 0xab, - 0xdf, 0x93, 0x65, 0x31, 0x86, 0xab, 0xf0, 0xe2, 0xc2, 0x7a, 0x59, 0x91, 0x37, 0x96, 0xd7, 0x17, - 0x96, 0xca, 0x62, 0xfc, 0x9e, 0x74, 0xea, 0xe7, 0x03, 0xe2, 0xa5, 0x4b, 0x97, 0x2e, 0xc5, 0x26, - 0xdf, 0x8f, 0x41, 0x2e, 0xdc, 0xf9, 0x4a, 0x7f, 0x09, 0x7b, 0xf8, 0x6b, 0xaa, 0x8b, 0x3c, 0xe5, - 0xbc, 0xe1, 0x90, 0x38, 0xac, 0xab, 0xb4, 0x77, 0xf4, 0x5d, 0x38, 0xca, 0xb4, 0xd6, 0x90, 0xf7, - 0xb8, 0xe1, 0xe0, 0x28, 0xab, 0xab, 0x9e, 0xb4, 0x08, 0xfb, 0x2c, 0x5b, 0x71, 0x3d, 0xd5, 0xd2, - 0x55, 0x47, 0x57, 0x5a, 0x17, 0x04, 0x8a, 0xaa, 0x69, 0xc8, 0x75, 0x6d, 0x5a, 0x02, 0x7c, 0x96, - 0x5b, 0x2c, 0x7b, 0x8d, 0x29, 0xb7, 0x72, 0x63, 0x89, 0xa9, 0xb6, 0x6d, 0x77, 0x7c, 0xa7, 0xed, - 0xbe, 0x19, 0xd2, 0x75, 0xb5, 0xa1, 0x20, 0xcb, 0x73, 0xb6, 0x49, 0xbf, 0x96, 0x92, 0x53, 0x75, - 0xb5, 0x51, 0xc6, 0xe3, 0x2f, 0x6e, 0x0f, 0x82, 0x7e, 0xfc, 0x69, 0x1c, 0xb2, 0xc1, 0x9e, 0x0d, - 0xb7, 0xc0, 0x1a, 0xc9, 0xcf, 0x02, 0x39, 0xbe, 0xb7, 0xdd, 0xb0, 0xc3, 0x9b, 0x9e, 0xc3, 0x89, - 0xbb, 0xd8, 0x4f, 0x3b, 0x29, 0x99, 0x22, 0x71, 0xd1, 0xc4, 0x07, 0x16, 0xd1, 0xfe, 0x3c, 0x25, - 0xb3, 0x91, 0x54, 0x81, 0xfe, 0x33, 0x2e, 0xe1, 0xee, 0x27, 0xdc, 0xb7, 0xdf, 0x98, 0xfb, 0xd4, - 0x1a, 0x21, 0x4f, 0x9f, 0x5a, 0x53, 0x96, 0x57, 0xe4, 0xa5, 0xd2, 0xa2, 0xcc, 0xe0, 0xd2, 0x5e, - 0x48, 0x98, 0xea, 0xc5, 0xed, 0x70, 0x8a, 0x27, 0xa2, 0x5e, 0x1d, 0xbf, 0x17, 0x12, 0xe7, 0x91, - 0x7a, 0x36, 0x9c, 0x58, 0x89, 0xe8, 0x0b, 0x0c, 0xfd, 0x03, 0x90, 0x24, 0xfe, 0x92, 0x00, 0x98, - 0xc7, 0xc4, 0x3e, 0x29, 0x05, 0x89, 0xb9, 0x15, 0x19, 0x87, 0xbf, 0x08, 0x59, 0x2a, 0x55, 0x56, - 0x17, 0xca, 0x73, 0x65, 0x31, 0x36, 0x79, 0x18, 0xfa, 0xa9, 0x13, 0xf0, 0xd1, 0xf0, 0xdd, 0x20, - 0xf6, 0xb1, 0x21, 0xe3, 0x10, 0xf8, 0xec, 0xc6, 0xd2, 0x6c, 0x59, 0x16, 0x63, 0xc1, 0xed, 0x75, - 0x21, 0x1b, 0x6c, 0xd7, 0xbe, 0x9c, 0x98, 0xfa, 0xbe, 0x00, 0x99, 0x40, 0xfb, 0x85, 0x0b, 0xbf, - 0x6a, 0x9a, 0xf6, 0x79, 0x45, 0x35, 0x0d, 0xd5, 0x65, 0x41, 0x01, 0x44, 0x54, 0xc2, 0x92, 0x5e, - 0x37, 0xed, 0x4b, 0x31, 0xfe, 0x55, 0x01, 0xc4, 0xf6, 0xd6, 0xad, 0xcd, 0x40, 0xe1, 0x2b, 0x35, - 0xf0, 0x65, 0x01, 0x72, 0xe1, 0x7e, 0xad, 0xcd, 0xbc, 0xfd, 0x5f, 0xa9, 0x79, 0x2f, 0x09, 0x30, - 0x18, 0xea, 0xd2, 0xfe, 0xac, 0xac, 0x7b, 0x31, 0x0e, 0x23, 0x5d, 0x70, 0x52, 0x89, 0xb5, 0xb3, - 0xb4, 0xc3, 0xbe, 0xaf, 0x97, 0x67, 0x4d, 0xe3, 0x6a, 0xb9, 0xaa, 0x3a, 0x1e, 0xeb, 0x7e, 0xef, - 0x06, 0xd1, 0xd0, 0x91, 0xe5, 0x19, 0x55, 0x03, 0x39, 0xec, 0x15, 0x9c, 0xf6, 0xb8, 0x43, 0x2d, - 0x39, 0x7d, 0x0b, 0xff, 0x0b, 0x90, 0x1a, 0xb6, 0x6b, 0x78, 0xc6, 0x39, 0xa4, 0x18, 0x16, 0x7f, - 0x5f, 0xc7, 0x3d, 0x6f, 0x42, 0x16, 0xf9, 0xcc, 0x82, 0xe5, 0xf9, 0xda, 0x16, 0xaa, 0xa9, 0x6d, - 0xda, 0x38, 0xf7, 0xc5, 0x65, 0x91, 0xcf, 0xf8, 0xda, 0xfb, 0x21, 0xab, 0xdb, 0x4d, 0xdc, 0x3e, - 0x50, 0x3d, 0x9c, 0x6a, 0x05, 0x39, 0x43, 0x65, 0xbe, 0x0a, 0xeb, 0xef, 0x5a, 0x17, 0x05, 0x59, - 0x39, 0x43, 0x65, 0x54, 0xe5, 0x2e, 0x18, 0x52, 0x6b, 0x35, 0x07, 0x93, 0x73, 0x22, 0xda, 0xb4, - 0xe6, 0x7c, 0x31, 0x51, 0x1c, 0x3f, 0x05, 0x29, 0xee, 0x07, 0x5c, 0xcd, 0xb0, 0x27, 0x94, 0x06, - 0xbd, 0xae, 0x89, 0x4d, 0xa5, 0xe5, 0x94, 0xc5, 0x27, 0xf7, 0x43, 0xd6, 0x70, 0x95, 0xd6, 0xbd, - 0x61, 0x6c, 0x22, 0x36, 0x95, 0x92, 0x33, 0x86, 0xeb, 0x5f, 0x14, 0x4d, 0xbe, 0x11, 0x83, 0x5c, - 0xf8, 0xde, 0x53, 0x9a, 0x87, 0x94, 0x69, 0x6b, 0x2a, 0x09, 0x04, 0x7a, 0xe9, 0x3e, 0x15, 0x71, - 0x55, 0x3a, 0xbd, 0xc8, 0xf4, 0x65, 0x1f, 0x39, 0xfe, 0x63, 0x01, 0x52, 0x5c, 0x2c, 0x8d, 0x41, - 0xa2, 0xa1, 0x7a, 0x5b, 0x84, 0x2e, 0x39, 0x1b, 0x13, 0x05, 0x99, 0x8c, 0xb1, 0xdc, 0x6d, 0xa8, - 0x16, 0x09, 0x01, 0x26, 0xc7, 0x63, 0xbc, 0xaf, 0x26, 0x52, 0x75, 0xd2, 0x0e, 0xdb, 0xf5, 0x3a, - 0xb2, 0x3c, 0x97, 0xef, 0x2b, 0x93, 0xcf, 0x31, 0xb1, 0x74, 0x2f, 0x0c, 0x7b, 0x8e, 0x6a, 0x98, - 0x21, 0xdd, 0x04, 0xd1, 0x15, 0xf9, 0x84, 0xaf, 0x5c, 0x84, 0xbd, 0x9c, 0x57, 0x47, 0x9e, 0xaa, - 0x6d, 0x21, 0xbd, 0x05, 0xea, 0x27, 0x97, 0x6a, 0x7b, 0x98, 0xc2, 0x3c, 0x9b, 0xe7, 0xd8, 0xc9, - 0x8f, 0x04, 0x18, 0xe6, 0x0d, 0xbc, 0xee, 0x3b, 0x6b, 0x09, 0x40, 0xb5, 0x2c, 0xdb, 0x0b, 0xba, - 0xab, 0x33, 0x94, 0x3b, 0x70, 0xd3, 0x25, 0x1f, 0x24, 0x07, 0x08, 0xc6, 0xeb, 0x00, 0xad, 0x99, - 0x1d, 0xdd, 0xb6, 0x0f, 0x32, 0xec, 0x52, 0x9b, 0x7c, 0x19, 0xa1, 0x6f, 0x7d, 0x40, 0x45, 0xb8, - 0xd3, 0x97, 0x46, 0x21, 0xb9, 0x89, 0x6a, 0x86, 0xc5, 0xae, 0xda, 0xe8, 0x80, 0x5f, 0xe0, 0x25, - 0xfc, 0x0b, 0xbc, 0xd9, 0xa7, 0x60, 0x44, 0xb3, 0xeb, 0xed, 0xe6, 0xce, 0x8a, 0x6d, 0x6f, 0x9e, - 0xee, 0x23, 0xc2, 0x93, 0xd0, 0xea, 0xce, 0x5e, 0x13, 0x84, 0xd7, 0x63, 0xf1, 0xca, 0xea, 0xec, - 0x5b, 0xb1, 0xf1, 0x0a, 0x85, 0xae, 0xf2, 0x95, 0xca, 0xa8, 0x6a, 0x22, 0x0d, 0x5b, 0x0f, 0x9f, - 0xdd, 0x09, 0xf7, 0xd5, 0x0c, 0x6f, 0xab, 0xb9, 0x39, 0xad, 0xd9, 0xf5, 0x03, 0x35, 0xbb, 0x66, - 0xb7, 0x3e, 0x06, 0xe1, 0x11, 0x19, 0x90, 0x5f, 0xec, 0x83, 0x50, 0xda, 0x97, 0x8e, 0x47, 0x7e, - 0x3d, 0x2a, 0x2e, 0xc3, 0x08, 0x53, 0x56, 0xc8, 0x8d, 0x34, 0xed, 0xc3, 0xa5, 0x1b, 0xde, 0x4a, - 0xe4, 0xdf, 0xf9, 0x84, 0x54, 0x3a, 0x79, 0x98, 0x41, 0xf1, 0x1c, 0xed, 0xd4, 0x8b, 0x32, 0xdc, - 0x14, 0xe2, 0xa3, 0x47, 0x13, 0x39, 0x11, 0x8c, 0xef, 0x33, 0xc6, 0x91, 0x00, 0xe3, 0x1a, 0x83, - 0x16, 0xe7, 0x60, 0x70, 0x37, 0x5c, 0x3f, 0x64, 0x5c, 0x59, 0x14, 0x24, 0xa9, 0xc0, 0x10, 0x21, - 0xd1, 0x9a, 0xae, 0x67, 0xd7, 0x49, 0xde, 0xbb, 0x31, 0xcd, 0x8f, 0x3e, 0xa1, 0x67, 0x25, 0x87, - 0x61, 0x73, 0x3e, 0xaa, 0x58, 0x04, 0x72, 0x09, 0xaf, 0x23, 0xcd, 0x8c, 0x60, 0xf8, 0x80, 0x19, - 0xe2, 0xeb, 0x17, 0x1f, 0x83, 0x51, 0xfc, 0x9b, 0xa4, 0xa5, 0xa0, 0x25, 0xd1, 0x77, 0x30, 0xf9, - 0x8f, 0x9e, 0xa1, 0xc7, 0x71, 0xc4, 0x27, 0x08, 0xd8, 0x14, 0xd8, 0xc5, 0x1a, 0xf2, 0x3c, 0xe4, - 0xb8, 0x8a, 0x6a, 0x76, 0x33, 0x2f, 0xf0, 0x06, 0x9b, 0x7f, 0xe1, 0x6a, 0x78, 0x17, 0x2b, 0x14, - 0x59, 0x32, 0xcd, 0xe2, 0x06, 0xec, 0xe9, 0x12, 0x15, 0x3d, 0x70, 0xbe, 0xc8, 0x38, 0x47, 0x3b, - 0x22, 0x03, 0xd3, 0xae, 0x02, 0x97, 0xfb, 0x7b, 0xd9, 0x03, 0xe7, 0x4b, 0x8c, 0x53, 0x62, 0x58, - 0xbe, 0xa5, 0x98, 0xf1, 0x14, 0x0c, 0x9f, 0x43, 0xce, 0xa6, 0xed, 0xb2, 0x8b, 0x83, 0x1e, 0xe8, - 0x5e, 0x66, 0x74, 0x43, 0x0c, 0x48, 0xae, 0x11, 0x30, 0xd7, 0x31, 0x48, 0x55, 0x55, 0x0d, 0xf5, - 0x40, 0xf1, 0x0a, 0xa3, 0x18, 0xc0, 0xfa, 0x18, 0x5a, 0x82, 0x6c, 0xcd, 0x66, 0x95, 0x29, 0x1a, - 0xfe, 0x2a, 0x83, 0x67, 0x38, 0x86, 0x51, 0x34, 0xec, 0x46, 0xd3, 0xc4, 0x65, 0x2b, 0x9a, 0xe2, - 0x3f, 0x39, 0x05, 0xc7, 0x30, 0x8a, 0x5d, 0xb8, 0xf5, 0x35, 0x4e, 0xe1, 0x06, 0xfc, 0x79, 0x02, - 0x32, 0xb6, 0x65, 0x6e, 0xdb, 0x56, 0x2f, 0x46, 0xfc, 0x17, 0x63, 0x00, 0x06, 0xc1, 0x04, 0xc7, - 0x21, 0xdd, 0xeb, 0x46, 0xfc, 0xf7, 0x55, 0x7e, 0x3c, 0xf8, 0x0e, 0x54, 0x60, 0x88, 0x27, 0x28, - 0xc3, 0xb6, 0x7a, 0xa0, 0xf8, 0x1f, 0x46, 0x91, 0x0b, 0xc0, 0xd8, 0x32, 0x3c, 0xe4, 0x7a, 0x35, - 0xd4, 0x0b, 0xc9, 0x1b, 0x7c, 0x19, 0x0c, 0xc2, 0x5c, 0xb9, 0x89, 0x2c, 0x6d, 0xab, 0x37, 0x86, - 0x37, 0xb9, 0x2b, 0x39, 0x06, 0x53, 0xcc, 0xc1, 0x60, 0x5d, 0x75, 0xdc, 0x2d, 0xd5, 0xec, 0x69, - 0x3b, 0xfe, 0x97, 0x71, 0x64, 0x7d, 0x10, 0xf3, 0x48, 0xd3, 0xda, 0x0d, 0xcd, 0x5b, 0xdc, 0x23, - 0x01, 0x18, 0x3b, 0x7a, 0xae, 0x47, 0xee, 0x66, 0x76, 0xc3, 0xf6, 0x7f, 0xfc, 0xe8, 0x51, 0xec, - 0x52, 0x90, 0xf1, 0x38, 0xa4, 0x5d, 0xe3, 0x62, 0x4f, 0x34, 0xff, 0xcf, 0x77, 0x9a, 0x00, 0x30, - 0xf8, 0x09, 0xd8, 0xdb, 0xb5, 0x4c, 0xf4, 0x40, 0xf6, 0x35, 0x46, 0x36, 0xd6, 0xa5, 0x54, 0xb0, - 0x94, 0xb0, 0x5b, 0xca, 0xaf, 0xf3, 0x94, 0x80, 0xda, 0xb8, 0x56, 0x71, 0x67, 0xef, 0xaa, 0xd5, - 0xdd, 0x79, 0xed, 0x1b, 0xdc, 0x6b, 0x14, 0x1b, 0xf2, 0xda, 0x3a, 0x8c, 0x31, 0xc6, 0xdd, 0xed, - 0xeb, 0xdb, 0x3c, 0xb1, 0x52, 0xf4, 0x46, 0x78, 0x77, 0x9f, 0x82, 0x71, 0xdf, 0x9d, 0xbc, 0x29, - 0x75, 0x95, 0xba, 0xda, 0xe8, 0x81, 0xf9, 0x1d, 0xc6, 0xcc, 0x33, 0xbe, 0xdf, 0xd5, 0xba, 0x4b, - 0x6a, 0x03, 0x93, 0x9f, 0x86, 0x3c, 0x27, 0x6f, 0x5a, 0x0e, 0xd2, 0xec, 0x9a, 0x65, 0x5c, 0x44, - 0x7a, 0x0f, 0xd4, 0xdf, 0x6c, 0xdb, 0xaa, 0x8d, 0x00, 0x1c, 0x33, 0x2f, 0x80, 0xe8, 0xf7, 0x2a, - 0x8a, 0x51, 0x6f, 0xd8, 0x8e, 0x17, 0xc1, 0xf8, 0x2d, 0xbe, 0x53, 0x3e, 0x6e, 0x81, 0xc0, 0x8a, - 0x65, 0xc8, 0x91, 0x61, 0xaf, 0x21, 0xf9, 0x6d, 0x46, 0x34, 0xd8, 0x42, 0xb1, 0xc4, 0xa1, 0xd9, - 0xf5, 0x86, 0xea, 0xf4, 0x92, 0xff, 0xbe, 0xc3, 0x13, 0x07, 0x83, 0xb0, 0xc4, 0xe1, 0x6d, 0x37, - 0x10, 0xae, 0xf6, 0x3d, 0x30, 0xbc, 0xcb, 0x13, 0x07, 0xc7, 0x30, 0x0a, 0xde, 0x30, 0xf4, 0x40, - 0xf1, 0x5d, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0xd1, 0x56, 0xa1, 0x75, 0x50, 0xcd, 0x70, 0x3d, 0x87, - 0xb6, 0xc2, 0x37, 0xa6, 0x7a, 0xef, 0x6a, 0xb8, 0x09, 0x93, 0x03, 0xd0, 0xe2, 0x29, 0x18, 0x6a, - 0x6b, 0x31, 0xa4, 0xa8, 0x2f, 0xfa, 0xf9, 0xa7, 0xaf, 0xb1, 0x64, 0x14, 0xee, 0x30, 0x8a, 0x8b, - 0x78, 0xdf, 0xc3, 0x7d, 0x40, 0x34, 0xd9, 0x33, 0xd7, 0xfc, 0xad, 0x0f, 0xb5, 0x01, 0xc5, 0x93, - 0x30, 0x18, 0xea, 0x01, 0xa2, 0xa9, 0xfe, 0x86, 0x51, 0x65, 0x83, 0x2d, 0x40, 0xf1, 0x30, 0x24, - 0x70, 0x3d, 0x8f, 0x86, 0xff, 0x2d, 0x83, 0x13, 0xf5, 0xe2, 0x43, 0x90, 0xe2, 0x75, 0x3c, 0x1a, - 0xfa, 0x77, 0x0c, 0xea, 0x43, 0x30, 0x9c, 0xd7, 0xf0, 0x68, 0xf8, 0xdf, 0x73, 0x38, 0x87, 0x60, - 0x78, 0xef, 0x2e, 0xfc, 0xc1, 0x73, 0x09, 0x96, 0x87, 0xb9, 0xef, 0x8e, 0xc3, 0x00, 0x2b, 0xde, - 0xd1, 0xe8, 0x67, 0xd9, 0xc3, 0x39, 0xa2, 0xf8, 0x20, 0x24, 0x7b, 0x74, 0xf8, 0x3f, 0x30, 0x28, - 0xd5, 0x2f, 0xce, 0x41, 0x26, 0x50, 0xb0, 0xa3, 0xe1, 0xff, 0xc8, 0xe0, 0x41, 0x14, 0x36, 0x9d, - 0x15, 0xec, 0x68, 0x82, 0x7f, 0xe2, 0xa6, 0x33, 0x04, 0x76, 0x1b, 0xaf, 0xd5, 0xd1, 0xe8, 0x7f, - 0xe6, 0x5e, 0xe7, 0x90, 0xe2, 0x09, 0x48, 0xfb, 0xf9, 0x37, 0x1a, 0xff, 0x2f, 0x0c, 0xdf, 0xc2, - 0x60, 0x0f, 0x04, 0xf2, 0x7f, 0x34, 0xc5, 0xbf, 0x72, 0x0f, 0x04, 0x50, 0xf8, 0x18, 0xb5, 0xd7, - 0xf4, 0x68, 0xa6, 0x7f, 0xe3, 0xc7, 0xa8, 0xad, 0xa4, 0xe3, 0xdd, 0x24, 0x69, 0x30, 0x9a, 0xe2, - 0xdf, 0xf9, 0x6e, 0x12, 0x7d, 0x6c, 0x46, 0x7b, 0x91, 0x8c, 0xe6, 0xf8, 0x0f, 0x6e, 0x46, 0x5b, - 0x8d, 0x2c, 0xae, 0x82, 0xd4, 0x59, 0x20, 0xa3, 0xf9, 0x9e, 0x67, 0x7c, 0xc3, 0x1d, 0xf5, 0xb1, - 0xf8, 0x38, 0x8c, 0x75, 0x2f, 0x8e, 0xd1, 0xac, 0x2f, 0x5c, 0x6b, 0x7b, 0x9d, 0x09, 0xd6, 0xc6, - 0xe2, 0x7a, 0x2b, 0xcb, 0x06, 0x0b, 0x63, 0x34, 0xed, 0x8b, 0xd7, 0xc2, 0x89, 0x36, 0x58, 0x17, - 0x8b, 0x25, 0x80, 0x56, 0x4d, 0x8a, 0xe6, 0x7a, 0x99, 0x71, 0x05, 0x40, 0xf8, 0x68, 0xb0, 0x92, - 0x14, 0x8d, 0x7f, 0x85, 0x1f, 0x0d, 0x86, 0xc0, 0x47, 0x83, 0x57, 0xa3, 0x68, 0xf4, 0xab, 0xfc, - 0x68, 0x70, 0x48, 0xf1, 0x38, 0xa4, 0xac, 0xa6, 0x69, 0xe2, 0xd8, 0x92, 0x6e, 0xfc, 0x4f, 0x36, - 0xf9, 0x5f, 0x5c, 0x67, 0x60, 0x0e, 0x28, 0x1e, 0x86, 0x24, 0xaa, 0x6f, 0x22, 0x3d, 0x0a, 0xf9, - 0xcb, 0xeb, 0x3c, 0x9f, 0x60, 0xed, 0xe2, 0x09, 0x00, 0xfa, 0x32, 0x4d, 0xbe, 0xb1, 0x44, 0x60, - 0x7f, 0x75, 0x9d, 0x7d, 0xbf, 0x6f, 0x41, 0x5a, 0x04, 0xf4, 0xbf, 0x01, 0x6e, 0x4c, 0x70, 0x35, - 0x4c, 0x40, 0x5e, 0xc0, 0x8f, 0xc1, 0xc0, 0x19, 0xd7, 0xb6, 0x3c, 0xb5, 0x16, 0x85, 0xfe, 0x35, - 0x43, 0x73, 0x7d, 0xec, 0xb0, 0xba, 0xed, 0x20, 0x4f, 0xad, 0xb9, 0x51, 0xd8, 0xdf, 0x30, 0xac, - 0x0f, 0xc0, 0x60, 0x4d, 0x75, 0xbd, 0x5e, 0xd6, 0xfd, 0x5b, 0x0e, 0xe6, 0x00, 0x6c, 0x34, 0xfe, - 0x7d, 0x16, 0x6d, 0x47, 0x61, 0x3f, 0xe5, 0x46, 0x33, 0xfd, 0xe2, 0x43, 0x90, 0xc6, 0x3f, 0xe9, - 0xff, 0xb4, 0x44, 0x80, 0x7f, 0xc7, 0xc0, 0x2d, 0x04, 0x7e, 0xb2, 0xeb, 0xe9, 0x9e, 0x11, 0xed, - 0xec, 0xdf, 0xb3, 0x9d, 0xe6, 0xfa, 0xc5, 0x12, 0x64, 0x5c, 0x4f, 0xd7, 0x9b, 0xac, 0xa3, 0x89, - 0x80, 0x7f, 0x76, 0xdd, 0x7f, 0xc9, 0xf5, 0x31, 0xb3, 0xfb, 0xbb, 0xdf, 0xd7, 0x41, 0xc5, 0xae, - 0xd8, 0xf4, 0xa6, 0x0e, 0xbe, 0x17, 0x83, 0x4c, 0xcd, 0xb1, 0x9b, 0x0d, 0x76, 0xa7, 0x96, 0x24, - 0x83, 0xf1, 0xdd, 0xdd, 0xc4, 0x4d, 0xfe, 0x15, 0x0c, 0x54, 0x30, 0xce, 0x7d, 0x40, 0x2a, 0x80, - 0x50, 0x23, 0x37, 0x90, 0x30, 0x23, 0x4e, 0x53, 0x66, 0x36, 0x35, 0x5d, 0x91, 0x85, 0xda, 0xf8, - 0x41, 0x10, 0x2a, 0xd2, 0x18, 0xf4, 0x13, 0xeb, 0x1f, 0x20, 0x1f, 0x6a, 0xe2, 0x32, 0x1b, 0xf9, - 0xf2, 0x19, 0x72, 0x49, 0x29, 0x30, 0xf9, 0x4c, 0x8b, 0x7f, 0x86, 0xf3, 0x0b, 0x1d, 0xfc, 0x33, - 0xbb, 0xe4, 0x8f, 0xb7, 0xf8, 0x67, 0x0f, 0x7d, 0x70, 0xb9, 0xd0, 0xf7, 0xe1, 0xe5, 0x42, 0xdf, - 0x4f, 0x2e, 0x17, 0xfa, 0x3e, 0xbe, 0x5c, 0x10, 0x3e, 0xbd, 0x5c, 0x10, 0xfe, 0x78, 0xb9, 0x20, - 0x5c, 0xba, 0x52, 0x10, 0xde, 0xbc, 0x52, 0x10, 0xde, 0xbe, 0x52, 0x10, 0xde, 0xbb, 0x52, 0x10, - 0x3e, 0xb8, 0x52, 0xe8, 0xfb, 0xf0, 0x4a, 0xa1, 0xef, 0xe3, 0x2b, 0x85, 0xbe, 0x3f, 0x05, 0x00, - 0x00, 0xff, 0xff, 0xc4, 0x60, 0x14, 0xd2, 0xb6, 0x2e, 0x00, 0x00, + // 3678 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x70, 0xdb, 0xd8, + 0x75, 0x16, 0xf8, 0x23, 0x91, 0x87, 0x14, 0x05, 0x41, 0x5a, 0x99, 0xd6, 0x66, 0x69, 0x59, 0xd9, + 0xcd, 0x6a, 0x77, 0x1b, 0x3a, 0xd1, 0xda, 0x5e, 0x1b, 0x6e, 0xe2, 0xa1, 0x28, 0x9a, 0xa1, 0x2b, + 0x89, 0x0c, 0x28, 0x65, 0xed, 0x74, 0xa6, 0x18, 0x08, 0xbc, 0xa4, 0x60, 0x83, 0x00, 0x03, 0x80, + 0xb6, 0xe5, 0x27, 0x77, 0xb6, 0x3f, 0x93, 0xe9, 0xf4, 0xbf, 0x33, 0x4d, 0xb6, 0x9b, 0x6d, 0x9b, + 0x99, 0x76, 0xd3, 0xa4, 0x3f, 0x49, 0x7f, 0xd2, 0xb4, 0x4f, 0x7d, 0x49, 0xbb, 0x4f, 0x9d, 0xe4, + 0xad, 0x0f, 0x7d, 0x58, 0xbb, 0x3b, 0xd3, 0x3f, 0xb7, 0x4d, 0x1b, 0xcf, 0xb4, 0x33, 0x7e, 0xe9, + 0xdc, 0x3f, 0x10, 0x20, 0x29, 0x81, 0xca, 0xcc, 0x26, 0x4f, 0xe2, 0x3d, 0xf7, 0x7c, 0x1f, 0x0e, + 0xce, 0x3d, 0xf7, 0x9c, 0x73, 0x2f, 0x04, 0xff, 0x74, 0x01, 0x56, 0x3a, 0xb6, 0xdd, 0x31, 0xd1, + 0xb9, 0x9e, 0x63, 0x7b, 0xf6, 0x7e, 0xbf, 0x7d, 0xae, 0x85, 0x5c, 0xdd, 0x31, 0x7a, 0x9e, 0xed, + 0x14, 0x89, 0x4c, 0x9a, 0xa3, 0x1a, 0x45, 0xae, 0xb1, 0xba, 0x0d, 0xf3, 0xd7, 0x0c, 0x13, 0x6d, + 0xfa, 0x8a, 0x4d, 0xe4, 0x49, 0x97, 0x20, 0xd1, 0x36, 0x4c, 0x94, 0x17, 0x56, 0xe2, 0x6b, 0x99, + 0xf5, 0xe7, 0x8b, 0x43, 0xa0, 0x62, 0x18, 0xd1, 0xc0, 0x62, 0x85, 0x20, 0x56, 0xdf, 0x4f, 0xc0, + 0xc2, 0x98, 0x59, 0x49, 0x82, 0x84, 0xa5, 0x75, 0x31, 0xa3, 0xb0, 0x96, 0x56, 0xc8, 0x6f, 0x29, + 0x0f, 0x33, 0x3d, 0x4d, 0xbf, 0xad, 0x75, 0x50, 0x3e, 0x46, 0xc4, 0x7c, 0x28, 0x15, 0x00, 0x5a, + 0xa8, 0x87, 0xac, 0x16, 0xb2, 0xf4, 0xc3, 0x7c, 0x7c, 0x25, 0xbe, 0x96, 0x56, 0x02, 0x12, 0xe9, + 0x15, 0x98, 0xef, 0xf5, 0xf7, 0x4d, 0x43, 0x57, 0x03, 0x6a, 0xb0, 0x12, 0x5f, 0x4b, 0x2a, 0x22, + 0x9d, 0xd8, 0x1c, 0x28, 0xbf, 0x08, 0x73, 0x77, 0x91, 0x76, 0x3b, 0xa8, 0x9a, 0x21, 0xaa, 0x39, + 0x2c, 0x0e, 0x28, 0x96, 0x21, 0xdb, 0x45, 0xae, 0xab, 0x75, 0x90, 0xea, 0x1d, 0xf6, 0x50, 0x3e, + 0x41, 0xde, 0x7e, 0x65, 0xe4, 0xed, 0x87, 0xdf, 0x3c, 0xc3, 0x50, 0xbb, 0x87, 0x3d, 0x24, 0x95, + 0x20, 0x8d, 0xac, 0x7e, 0x97, 0x32, 0x24, 0x8f, 0xf0, 0x5f, 0xc5, 0xea, 0x77, 0x87, 0x59, 0x52, + 0x18, 0xc6, 0x28, 0x66, 0x5c, 0xe4, 0xdc, 0x31, 0x74, 0x94, 0x9f, 0x26, 0x04, 0x2f, 0x8e, 0x10, + 0x34, 0xe9, 0xfc, 0x30, 0x07, 0xc7, 0x49, 0x65, 0x48, 0xa3, 0x7b, 0x1e, 0xb2, 0x5c, 0xc3, 0xb6, + 0xf2, 0x33, 0x84, 0xe4, 0x85, 0x31, 0xab, 0x88, 0xcc, 0xd6, 0x30, 0xc5, 0x00, 0x27, 0x5d, 0x84, + 0x19, 0xbb, 0xe7, 0x19, 0xb6, 0xe5, 0xe6, 0x53, 0x2b, 0xc2, 0x5a, 0x66, 0xfd, 0x43, 0x63, 0x03, + 0xa1, 0x4e, 0x75, 0x14, 0xae, 0x2c, 0xd5, 0x40, 0x74, 0xed, 0xbe, 0xa3, 0x23, 0x55, 0xb7, 0x5b, + 0x48, 0x35, 0xac, 0xb6, 0x9d, 0x4f, 0x13, 0x82, 0x33, 0xa3, 0x2f, 0x42, 0x14, 0xcb, 0x76, 0x0b, + 0xd5, 0xac, 0xb6, 0xad, 0xe4, 0xdc, 0xd0, 0x58, 0x5a, 0x82, 0x69, 0xf7, 0xd0, 0xf2, 0xb4, 0x7b, + 0xf9, 0x2c, 0x89, 0x10, 0x36, 0x5a, 0xfd, 0xdf, 0x24, 0xcc, 0x4d, 0x12, 0x62, 0x57, 0x20, 0xd9, + 0xc6, 0x6f, 0x99, 0x8f, 0x9d, 0xc4, 0x07, 0x14, 0x13, 0x76, 0xe2, 0xf4, 0x0f, 0xe8, 0xc4, 0x12, + 0x64, 0x2c, 0xe4, 0x7a, 0xa8, 0x45, 0x23, 0x22, 0x3e, 0x61, 0x4c, 0x01, 0x05, 0x8d, 0x86, 0x54, + 0xe2, 0x07, 0x0a, 0xa9, 0x1b, 0x30, 0xe7, 0x9b, 0xa4, 0x3a, 0x9a, 0xd5, 0xe1, 0xb1, 0x79, 0x2e, + 0xca, 0x92, 0x62, 0x85, 0xe3, 0x14, 0x0c, 0x53, 0x72, 0x28, 0x34, 0x96, 0x36, 0x01, 0x6c, 0x0b, + 0xd9, 0x6d, 0xb5, 0x85, 0x74, 0x33, 0x9f, 0x3a, 0xc2, 0x4b, 0x75, 0xac, 0x32, 0xe2, 0x25, 0x9b, + 0x4a, 0x75, 0x53, 0xba, 0x3c, 0x08, 0xb5, 0x99, 0x23, 0x22, 0x65, 0x9b, 0x6e, 0xb2, 0x91, 0x68, + 0xdb, 0x83, 0x9c, 0x83, 0x70, 0xdc, 0xa3, 0x16, 0x7b, 0xb3, 0x34, 0x31, 0xa2, 0x18, 0xf9, 0x66, + 0x0a, 0x83, 0xd1, 0x17, 0x9b, 0x75, 0x82, 0x43, 0xe9, 0xc3, 0xe0, 0x0b, 0x54, 0x12, 0x56, 0x40, + 0xb2, 0x50, 0x96, 0x0b, 0x77, 0xb4, 0x2e, 0x5a, 0xbe, 0x04, 0xb9, 0xb0, 0x7b, 0xa4, 0x45, 0x48, + 0xba, 0x9e, 0xe6, 0x78, 0x24, 0x0a, 0x93, 0x0a, 0x1d, 0x48, 0x22, 0xc4, 0x91, 0xd5, 0x22, 0x59, + 0x2e, 0xa9, 0xe0, 0x9f, 0xcb, 0xaf, 0xc1, 0x6c, 0xe8, 0xf1, 0x93, 0x02, 0x57, 0xbf, 0x30, 0x0d, + 0x8b, 0xe3, 0x62, 0x6e, 0x6c, 0xf8, 0x2f, 0xc1, 0xb4, 0xd5, 0xef, 0xee, 0x23, 0x27, 0x1f, 0x27, + 0x0c, 0x6c, 0x24, 0x95, 0x20, 0x69, 0x6a, 0xfb, 0xc8, 0xcc, 0x27, 0x56, 0x84, 0xb5, 0xdc, 0xfa, + 0x2b, 0x13, 0x45, 0x75, 0x71, 0x0b, 0x43, 0x14, 0x8a, 0x94, 0x3e, 0x09, 0x09, 0x96, 0xe2, 0x30, + 0xc3, 0xcb, 0x93, 0x31, 0xe0, 0x58, 0x54, 0x08, 0x4e, 0x7a, 0x16, 0xd2, 0xf8, 0x2f, 0xf5, 0xed, + 0x34, 0xb1, 0x39, 0x85, 0x05, 0xd8, 0xaf, 0xd2, 0x32, 0xa4, 0x48, 0x98, 0xb5, 0x10, 0x2f, 0x0d, + 0xfe, 0x18, 0x2f, 0x4c, 0x0b, 0xb5, 0xb5, 0xbe, 0xe9, 0xa9, 0x77, 0x34, 0xb3, 0x8f, 0x48, 0xc0, + 0xa4, 0x95, 0x2c, 0x13, 0x7e, 0x06, 0xcb, 0xa4, 0x33, 0x90, 0xa1, 0x51, 0x69, 0x58, 0x2d, 0x74, + 0x8f, 0x64, 0x9f, 0xa4, 0x42, 0x03, 0xb5, 0x86, 0x25, 0xf8, 0xf1, 0xb7, 0x5c, 0xdb, 0xe2, 0x4b, + 0x4b, 0x1e, 0x81, 0x05, 0xe4, 0xf1, 0xaf, 0x0d, 0x27, 0xbe, 0xe7, 0xc6, 0xbf, 0xde, 0x70, 0x2c, + 0xae, 0x7e, 0x33, 0x06, 0x09, 0xb2, 0xdf, 0xe6, 0x20, 0xb3, 0x7b, 0xb3, 0x51, 0x51, 0x37, 0xeb, + 0x7b, 0x1b, 0x5b, 0x15, 0x51, 0x90, 0x72, 0x00, 0x44, 0x70, 0x6d, 0xab, 0x5e, 0xda, 0x15, 0x63, + 0xfe, 0xb8, 0xb6, 0xb3, 0x7b, 0xf1, 0xbc, 0x18, 0xf7, 0x01, 0x7b, 0x54, 0x90, 0x08, 0x2a, 0xbc, + 0xba, 0x2e, 0x26, 0x25, 0x11, 0xb2, 0x94, 0xa0, 0x76, 0xa3, 0xb2, 0x79, 0xf1, 0xbc, 0x38, 0x1d, + 0x96, 0xbc, 0xba, 0x2e, 0xce, 0x48, 0xb3, 0x90, 0x26, 0x92, 0x8d, 0x7a, 0x7d, 0x4b, 0x4c, 0xf9, + 0x9c, 0xcd, 0x5d, 0xa5, 0xb6, 0x53, 0x15, 0xd3, 0x3e, 0x67, 0x55, 0xa9, 0xef, 0x35, 0x44, 0xf0, + 0x19, 0xb6, 0x2b, 0xcd, 0x66, 0xa9, 0x5a, 0x11, 0x33, 0xbe, 0xc6, 0xc6, 0xcd, 0xdd, 0x4a, 0x53, + 0xcc, 0x86, 0xcc, 0x7a, 0x75, 0x5d, 0x9c, 0xf5, 0x1f, 0x51, 0xd9, 0xd9, 0xdb, 0x16, 0x73, 0xd2, + 0x3c, 0xcc, 0xd2, 0x47, 0x70, 0x23, 0xe6, 0x86, 0x44, 0x17, 0xcf, 0x8b, 0xe2, 0xc0, 0x10, 0xca, + 0x32, 0x1f, 0x12, 0x5c, 0x3c, 0x2f, 0x4a, 0xab, 0x65, 0x48, 0x92, 0xe8, 0x92, 0x24, 0xc8, 0x6d, + 0x95, 0x36, 0x2a, 0x5b, 0x6a, 0xbd, 0xb1, 0x5b, 0xab, 0xef, 0x94, 0xb6, 0x44, 0x61, 0x20, 0x53, + 0x2a, 0x9f, 0xde, 0xab, 0x29, 0x95, 0x4d, 0x31, 0x16, 0x94, 0x35, 0x2a, 0xa5, 0xdd, 0xca, 0xa6, + 0x18, 0x5f, 0xd5, 0x61, 0x71, 0x5c, 0x9e, 0x19, 0xbb, 0x33, 0x02, 0x4b, 0x1c, 0x3b, 0x62, 0x89, + 0x09, 0xd7, 0xc8, 0x12, 0x7f, 0x59, 0x80, 0x85, 0x31, 0xb9, 0x76, 0xec, 0x43, 0xae, 0x42, 0x92, + 0x86, 0x28, 0xad, 0x3e, 0x2f, 0x8d, 0x4d, 0xda, 0x24, 0x60, 0x47, 0x2a, 0x10, 0xc1, 0x05, 0x2b, + 0x70, 0xfc, 0x88, 0x0a, 0x8c, 0x29, 0x46, 0x8c, 0x7c, 0x43, 0x80, 0xfc, 0x51, 0xdc, 0x11, 0x89, + 0x22, 0x16, 0x4a, 0x14, 0x57, 0x86, 0x0d, 0x38, 0x7b, 0xf4, 0x3b, 0x8c, 0x58, 0xf1, 0x8e, 0x00, + 0x4b, 0xe3, 0x1b, 0x95, 0xb1, 0x36, 0x7c, 0x12, 0xa6, 0xbb, 0xc8, 0x3b, 0xb0, 0x79, 0xb1, 0xfe, + 0xc8, 0x98, 0x12, 0x80, 0xa7, 0x87, 0x7d, 0xc5, 0x50, 0xc1, 0x1a, 0x12, 0x3f, 0xaa, 0xdb, 0xa0, + 0xd6, 0x8c, 0x58, 0xfa, 0xf9, 0x18, 0x3c, 0x33, 0x96, 0x7c, 0xac, 0xa1, 0xcf, 0x01, 0x18, 0x56, + 0xaf, 0xef, 0xd1, 0x82, 0x4c, 0xf3, 0x53, 0x9a, 0x48, 0xc8, 0xde, 0xc7, 0xb9, 0xa7, 0xef, 0xf9, + 0xf3, 0x71, 0x32, 0x0f, 0x54, 0x44, 0x14, 0x2e, 0x0d, 0x0c, 0x4d, 0x10, 0x43, 0x0b, 0x47, 0xbc, + 0xe9, 0x48, 0xad, 0xfb, 0x18, 0x88, 0xba, 0x69, 0x20, 0xcb, 0x53, 0x5d, 0xcf, 0x41, 0x5a, 0xd7, + 0xb0, 0x3a, 0x24, 0x01, 0xa7, 0xe4, 0x64, 0x5b, 0x33, 0x5d, 0xa4, 0xcc, 0xd1, 0xe9, 0x26, 0x9f, + 0xc5, 0x08, 0x52, 0x65, 0x9c, 0x00, 0x62, 0x3a, 0x84, 0xa0, 0xd3, 0x3e, 0x62, 0xf5, 0x6b, 0x33, + 0x90, 0x09, 0xb4, 0x75, 0xd2, 0x59, 0xc8, 0xde, 0xd2, 0xee, 0x68, 0x2a, 0x6f, 0xd5, 0xa9, 0x27, + 0x32, 0x58, 0xd6, 0x60, 0xed, 0xfa, 0xc7, 0x60, 0x91, 0xa8, 0xd8, 0x7d, 0x0f, 0x39, 0xaa, 0x6e, + 0x6a, 0xae, 0x4b, 0x9c, 0x96, 0x22, 0xaa, 0x12, 0x9e, 0xab, 0xe3, 0xa9, 0x32, 0x9f, 0x91, 0x2e, + 0xc0, 0x02, 0x41, 0x74, 0xfb, 0xa6, 0x67, 0xf4, 0x4c, 0xa4, 0xe2, 0xc3, 0x83, 0x4b, 0x12, 0xb1, + 0x6f, 0xd9, 0x3c, 0xd6, 0xd8, 0x66, 0x0a, 0xd8, 0x22, 0x57, 0xda, 0x84, 0xe7, 0x08, 0xac, 0x83, + 0x2c, 0xe4, 0x68, 0x1e, 0x52, 0xd1, 0xe7, 0xfa, 0x9a, 0xe9, 0xaa, 0x9a, 0xd5, 0x52, 0x0f, 0x34, + 0xf7, 0x20, 0xbf, 0x88, 0x09, 0x36, 0x62, 0x79, 0x41, 0x39, 0x8d, 0x15, 0xab, 0x4c, 0xaf, 0x42, + 0xd4, 0x4a, 0x56, 0xeb, 0x53, 0x9a, 0x7b, 0x20, 0xc9, 0xb0, 0x44, 0x58, 0x5c, 0xcf, 0x31, 0xac, + 0x8e, 0xaa, 0x1f, 0x20, 0xfd, 0xb6, 0xda, 0xf7, 0xda, 0x97, 0xf2, 0xcf, 0x06, 0x9f, 0x4f, 0x2c, + 0x6c, 0x12, 0x9d, 0x32, 0x56, 0xd9, 0xf3, 0xda, 0x97, 0xa4, 0x26, 0x64, 0xf1, 0x62, 0x74, 0x8d, + 0xfb, 0x48, 0x6d, 0xdb, 0x0e, 0xa9, 0x2c, 0xb9, 0x31, 0x3b, 0x3b, 0xe0, 0xc1, 0x62, 0x9d, 0x01, + 0xb6, 0xed, 0x16, 0x92, 0x93, 0xcd, 0x46, 0xa5, 0xb2, 0xa9, 0x64, 0x38, 0xcb, 0x35, 0xdb, 0xc1, + 0x01, 0xd5, 0xb1, 0x7d, 0x07, 0x67, 0x68, 0x40, 0x75, 0x6c, 0xee, 0xde, 0x0b, 0xb0, 0xa0, 0xeb, + 0xf4, 0x9d, 0x0d, 0x5d, 0x65, 0x2d, 0xbe, 0x9b, 0x17, 0x43, 0xce, 0xd2, 0xf5, 0x2a, 0x55, 0x60, + 0x31, 0xee, 0x4a, 0x97, 0xe1, 0x99, 0x81, 0xb3, 0x82, 0xc0, 0xf9, 0x91, 0xb7, 0x1c, 0x86, 0x5e, + 0x80, 0x85, 0xde, 0xe1, 0x28, 0x50, 0x0a, 0x3d, 0xb1, 0x77, 0x38, 0x0c, 0x7b, 0x81, 0x1c, 0xdb, + 0x1c, 0xa4, 0x6b, 0x1e, 0x6a, 0xe5, 0x4f, 0x05, 0xb5, 0x03, 0x13, 0xd2, 0x39, 0x10, 0x75, 0x5d, + 0x45, 0x96, 0xb6, 0x6f, 0x22, 0x55, 0x73, 0x90, 0xa5, 0xb9, 0xf9, 0x33, 0x41, 0xe5, 0x9c, 0xae, + 0x57, 0xc8, 0x6c, 0x89, 0x4c, 0x4a, 0x2f, 0xc3, 0xbc, 0xbd, 0x7f, 0x4b, 0xa7, 0x91, 0xa5, 0xf6, + 0x1c, 0xd4, 0x36, 0xee, 0xe5, 0x9f, 0x27, 0x6e, 0x9a, 0xc3, 0x13, 0x24, 0xae, 0x1a, 0x44, 0x2c, + 0xbd, 0x04, 0xa2, 0xee, 0x1e, 0x68, 0x4e, 0x8f, 0x94, 0x76, 0xb7, 0xa7, 0xe9, 0x28, 0xff, 0x02, + 0x55, 0xa5, 0xf2, 0x1d, 0x2e, 0xc6, 0x91, 0xed, 0xde, 0x35, 0xda, 0x1e, 0x67, 0x7c, 0x91, 0x46, + 0x36, 0x91, 0x31, 0xb6, 0x1b, 0xb0, 0xd8, 0xb7, 0x0c, 0xcb, 0x43, 0x4e, 0xcf, 0x41, 0xb8, 0x89, + 0xa7, 0x3b, 0x31, 0xff, 0xcf, 0x33, 0x47, 0xb4, 0xe1, 0x7b, 0x41, 0x6d, 0x1a, 0x00, 0xca, 0x42, + 0x7f, 0x54, 0xb8, 0x2a, 0x43, 0x36, 0x18, 0x17, 0x52, 0x1a, 0x68, 0x64, 0x88, 0x02, 0xae, 0xb1, + 0xe5, 0xfa, 0x26, 0xae, 0x8e, 0x9f, 0xad, 0x88, 0x31, 0x5c, 0xa5, 0xb7, 0x6a, 0xbb, 0x15, 0x55, + 0xd9, 0xdb, 0xd9, 0xad, 0x6d, 0x57, 0xc4, 0xf8, 0xcb, 0xe9, 0xd4, 0xbf, 0xcc, 0x88, 0x0f, 0x1e, + 0x3c, 0x78, 0x10, 0x5b, 0xfd, 0x76, 0x0c, 0x72, 0xe1, 0xce, 0x58, 0xfa, 0x71, 0x38, 0xc5, 0x8f, + 0xb1, 0x2e, 0xf2, 0xd4, 0xbb, 0x86, 0x43, 0x42, 0xb5, 0xab, 0xd1, 0xde, 0xd2, 0xf7, 0xf2, 0x22, + 0xd3, 0x6a, 0x22, 0xef, 0x75, 0xc3, 0xc1, 0x81, 0xd8, 0xd5, 0x3c, 0x69, 0x0b, 0xce, 0x58, 0xb6, + 0xea, 0x7a, 0x9a, 0xd5, 0xd2, 0x9c, 0x96, 0x3a, 0xb8, 0x40, 0x50, 0x35, 0x5d, 0x47, 0xae, 0x6b, + 0xd3, 0x12, 0xe1, 0xb3, 0x7c, 0xc8, 0xb2, 0x9b, 0x4c, 0x79, 0x90, 0x3b, 0x4b, 0x4c, 0x75, 0x28, + 0x22, 0xe2, 0x47, 0x45, 0xc4, 0xb3, 0x90, 0xee, 0x6a, 0x3d, 0x15, 0x59, 0x9e, 0x73, 0x48, 0xfa, + 0xb9, 0x94, 0x92, 0xea, 0x6a, 0xbd, 0x0a, 0x1e, 0x7f, 0x70, 0x6b, 0x10, 0xf4, 0xe3, 0x3f, 0xc6, + 0x21, 0x1b, 0xec, 0xe9, 0x70, 0x8b, 0xac, 0x93, 0xfc, 0x2d, 0x90, 0x1d, 0xfe, 0xe1, 0x63, 0x3b, + 0xc0, 0x62, 0x19, 0x27, 0x76, 0x79, 0x9a, 0x76, 0x5a, 0x0a, 0x45, 0xe2, 0xa2, 0x8a, 0xf7, 0x34, + 0xa2, 0xfd, 0x7b, 0x4a, 0x61, 0x23, 0xa9, 0x0a, 0xd3, 0xb7, 0x5c, 0xc2, 0x3d, 0x4d, 0xb8, 0x9f, + 0x3f, 0x9e, 0xfb, 0x7a, 0x93, 0x90, 0xa7, 0xaf, 0x37, 0xd5, 0x9d, 0xba, 0xb2, 0x5d, 0xda, 0x52, + 0x18, 0x5c, 0x3a, 0x0d, 0x09, 0x53, 0xbb, 0x7f, 0x18, 0x2e, 0x01, 0x44, 0x34, 0xa9, 0xe3, 0x4f, + 0x43, 0xe2, 0x2e, 0xd2, 0x6e, 0x87, 0x13, 0x2f, 0x11, 0x7d, 0x80, 0xa1, 0x7f, 0x0e, 0x92, 0xc4, + 0x5f, 0x12, 0x00, 0xf3, 0x98, 0x38, 0x25, 0xa5, 0x20, 0x51, 0xae, 0x2b, 0x38, 0xfc, 0x45, 0xc8, + 0x52, 0xa9, 0xda, 0xa8, 0x55, 0xca, 0x15, 0x31, 0xb6, 0x7a, 0x01, 0xa6, 0xa9, 0x13, 0xf0, 0xd6, + 0xf0, 0xdd, 0x20, 0x4e, 0xb1, 0x21, 0xe3, 0x10, 0xf8, 0xec, 0xde, 0xf6, 0x46, 0x45, 0x11, 0x63, + 0xc1, 0xe5, 0x75, 0x21, 0x1b, 0x6c, 0xe7, 0x7e, 0x38, 0x31, 0xf5, 0xd7, 0x02, 0x64, 0x02, 0xed, + 0x19, 0x6e, 0x0c, 0x34, 0xd3, 0xb4, 0xef, 0xaa, 0x9a, 0x69, 0x68, 0x2e, 0x0b, 0x0a, 0x20, 0xa2, + 0x12, 0x96, 0x4c, 0xba, 0x68, 0x3f, 0x14, 0xe3, 0xdf, 0x16, 0x40, 0x1c, 0x6e, 0xed, 0x86, 0x0c, + 0x14, 0x7e, 0xa4, 0x06, 0xbe, 0x25, 0x40, 0x2e, 0xdc, 0xcf, 0x0d, 0x99, 0x77, 0xf6, 0x47, 0x6a, + 0xde, 0x7b, 0x31, 0x98, 0x0d, 0x75, 0x71, 0x93, 0x5a, 0xf7, 0x39, 0x98, 0x37, 0x5a, 0xa8, 0xdb, + 0xb3, 0x3d, 0x64, 0xe9, 0x87, 0xaa, 0x89, 0xee, 0x20, 0x33, 0xbf, 0x4a, 0x12, 0xc5, 0xb9, 0xe3, + 0xfb, 0xc4, 0x62, 0x6d, 0x80, 0xdb, 0xc2, 0x30, 0x79, 0xa1, 0xb6, 0x59, 0xd9, 0x6e, 0xd4, 0x77, + 0x2b, 0x3b, 0xe5, 0x9b, 0xea, 0xde, 0xce, 0x4f, 0xec, 0xd4, 0x5f, 0xdf, 0x51, 0x44, 0x63, 0x48, + 0xed, 0x03, 0xdc, 0xea, 0x0d, 0x10, 0x87, 0x8d, 0x92, 0x4e, 0xc1, 0x38, 0xb3, 0xc4, 0x29, 0x69, + 0x01, 0xe6, 0x76, 0xea, 0x6a, 0xb3, 0xb6, 0x59, 0x51, 0x2b, 0xd7, 0xae, 0x55, 0xca, 0xbb, 0x4d, + 0x7a, 0x70, 0xf6, 0xb5, 0x77, 0xc3, 0x9b, 0xfa, 0xcd, 0x38, 0x2c, 0x8c, 0xb1, 0x44, 0x2a, 0xb1, + 0x9e, 0x9d, 0x1e, 0x23, 0x3e, 0x3a, 0x89, 0xf5, 0x45, 0xdc, 0x15, 0x34, 0x34, 0xc7, 0x63, 0x2d, + 0xfe, 0x4b, 0x80, 0xbd, 0x64, 0x79, 0x46, 0xdb, 0x40, 0x0e, 0xbb, 0x67, 0xa0, 0x8d, 0xfc, 0xdc, + 0x40, 0x4e, 0xaf, 0x1a, 0x7e, 0x0c, 0xa4, 0x9e, 0xed, 0x1a, 0x9e, 0x71, 0x07, 0xa9, 0x86, 0xc5, + 0x2f, 0x25, 0x70, 0x63, 0x9f, 0x50, 0x44, 0x3e, 0x53, 0xb3, 0x3c, 0x5f, 0xdb, 0x42, 0x1d, 0x6d, + 0x48, 0x1b, 0x27, 0xf0, 0xb8, 0x22, 0xf2, 0x19, 0x5f, 0xfb, 0x2c, 0x64, 0x5b, 0x76, 0x1f, 0xb7, + 0x49, 0x54, 0x0f, 0xd7, 0x0b, 0x41, 0xc9, 0x50, 0x99, 0xaf, 0xc2, 0xfa, 0xd8, 0xc1, 0x6d, 0x48, + 0x56, 0xc9, 0x50, 0x19, 0x55, 0x79, 0x11, 0xe6, 0xb4, 0x4e, 0xc7, 0xc1, 0xe4, 0x9c, 0x88, 0x76, + 0xe6, 0x39, 0x5f, 0x4c, 0x14, 0x97, 0xaf, 0x43, 0x8a, 0xfb, 0x01, 0x97, 0x64, 0xec, 0x09, 0xb5, + 0x47, 0xef, 0xa4, 0x62, 0x6b, 0x69, 0x25, 0x65, 0xf1, 0xc9, 0xb3, 0x90, 0x35, 0x5c, 0x75, 0x70, + 0x39, 0x1a, 0x5b, 0x89, 0xad, 0xa5, 0x94, 0x8c, 0xe1, 0xfa, 0xb7, 0x61, 0xab, 0xef, 0xc4, 0x20, + 0x17, 0xbe, 0xdc, 0x95, 0x36, 0x21, 0x65, 0xda, 0xba, 0x46, 0x42, 0x8b, 0x7e, 0x59, 0x58, 0x8b, + 0xb8, 0x0f, 0x2e, 0x6e, 0x31, 0x7d, 0xc5, 0x47, 0x2e, 0xff, 0xbd, 0x00, 0x29, 0x2e, 0x96, 0x96, + 0x20, 0xd1, 0xd3, 0xbc, 0x03, 0x42, 0x97, 0xdc, 0x88, 0x89, 0x82, 0x42, 0xc6, 0x58, 0xee, 0xf6, + 0x34, 0x8b, 0x84, 0x00, 0x93, 0xe3, 0x31, 0x5e, 0x57, 0x13, 0x69, 0x2d, 0xd2, 0xf6, 0xdb, 0xdd, + 0x2e, 0xb2, 0x3c, 0x97, 0xaf, 0x2b, 0x93, 0x97, 0x99, 0x58, 0x7a, 0x05, 0xe6, 0x3d, 0x47, 0x33, + 0xcc, 0x90, 0x6e, 0x82, 0xe8, 0x8a, 0x7c, 0xc2, 0x57, 0x96, 0xe1, 0x34, 0xe7, 0x6d, 0x21, 0x4f, + 0xd3, 0x0f, 0x50, 0x6b, 0x00, 0x9a, 0x26, 0x37, 0x87, 0xa7, 0x98, 0xc2, 0x26, 0x9b, 0xe7, 0xd8, + 0xd5, 0xef, 0x0a, 0x30, 0xcf, 0x0f, 0x2a, 0x2d, 0xdf, 0x59, 0xdb, 0x00, 0x9a, 0x65, 0xd9, 0x5e, + 0xd0, 0x5d, 0xa3, 0xa1, 0x3c, 0x82, 0x2b, 0x96, 0x7c, 0x90, 0x12, 0x20, 0x58, 0xee, 0x02, 0x0c, + 0x66, 0x8e, 0x74, 0xdb, 0x19, 0xc8, 0xb0, 0x9b, 0x7b, 0xf2, 0xf9, 0x87, 0x1e, 0x6d, 0x81, 0x8a, + 0xf0, 0x89, 0x46, 0x5a, 0x84, 0xe4, 0x3e, 0xea, 0x18, 0x16, 0xbb, 0x4f, 0xa4, 0x03, 0x7e, 0x4b, + 0x99, 0xf0, 0x6f, 0x29, 0x37, 0x6e, 0xc0, 0x82, 0x6e, 0x77, 0x87, 0xcd, 0xdd, 0x10, 0x87, 0x8e, + 0xd7, 0xee, 0xa7, 0x84, 0xcf, 0xc2, 0xa0, 0xc5, 0xfc, 0x72, 0x2c, 0x5e, 0x6d, 0x6c, 0x7c, 0x35, + 0xb6, 0x5c, 0xa5, 0xb8, 0x06, 0x7f, 0x4d, 0x05, 0xb5, 0x4d, 0xa4, 0x63, 0xd3, 0xe1, 0xfb, 0x1f, + 0x81, 0x8f, 0x76, 0x0c, 0xef, 0xa0, 0xbf, 0x5f, 0xd4, 0xed, 0xee, 0xb9, 0x8e, 0xdd, 0xb1, 0x07, + 0x9f, 0xbb, 0xf0, 0x88, 0x0c, 0xc8, 0x2f, 0xf6, 0xc9, 0x2b, 0xed, 0x4b, 0x97, 0x23, 0xbf, 0x8f, + 0xc9, 0x3b, 0xb0, 0xc0, 0x94, 0x55, 0x72, 0xe7, 0x4e, 0x8f, 0x06, 0xd2, 0xb1, 0xf7, 0x2e, 0xf9, + 0x6f, 0xbc, 0x4f, 0x6a, 0xb5, 0x32, 0xcf, 0xa0, 0x78, 0x8e, 0x1e, 0x20, 0x64, 0x05, 0x9e, 0x09, + 0xf1, 0xd1, 0x7d, 0x89, 0x9c, 0x08, 0xc6, 0x6f, 0x33, 0xc6, 0x85, 0x00, 0x63, 0x93, 0x41, 0xe5, + 0x32, 0xcc, 0x9e, 0x84, 0xeb, 0x6f, 0x19, 0x57, 0x16, 0x05, 0x49, 0xaa, 0x30, 0x47, 0x48, 0xf4, + 0xbe, 0xeb, 0xd9, 0x5d, 0x92, 0xf4, 0x8e, 0xa7, 0xf9, 0xbb, 0xf7, 0xe9, 0x46, 0xc9, 0x61, 0x58, + 0xd9, 0x47, 0xc9, 0x32, 0x90, 0xcf, 0x0c, 0x2d, 0xa4, 0x9b, 0x11, 0x0c, 0xef, 0x32, 0x43, 0x7c, + 0x7d, 0xf9, 0x33, 0xb0, 0x88, 0x7f, 0x93, 0x9c, 0x14, 0xb4, 0x24, 0xfa, 0x96, 0x29, 0xff, 0xdd, + 0x37, 0xe8, 0x5e, 0x5c, 0xf0, 0x09, 0x02, 0x36, 0x05, 0x56, 0xb1, 0x83, 0x3c, 0x0f, 0x39, 0xae, + 0xaa, 0x99, 0xe3, 0xcc, 0x0b, 0x1c, 0xd3, 0xf3, 0x5f, 0x7c, 0x1c, 0x5e, 0xc5, 0x2a, 0x45, 0x96, + 0x4c, 0x53, 0xde, 0x83, 0x53, 0x63, 0xa2, 0x62, 0x02, 0xce, 0x37, 0x19, 0xe7, 0xe2, 0x48, 0x64, + 0x60, 0xda, 0x06, 0x70, 0xb9, 0xbf, 0x96, 0x13, 0x70, 0xfe, 0x16, 0xe3, 0x94, 0x18, 0x96, 0x2f, + 0x29, 0x66, 0xbc, 0x0e, 0xf3, 0x77, 0x90, 0xb3, 0x6f, 0xbb, 0xec, 0x6a, 0x64, 0x02, 0xba, 0xb7, + 0x18, 0xdd, 0x1c, 0x03, 0x92, 0xbb, 0x12, 0xcc, 0x75, 0x19, 0x52, 0x6d, 0x4d, 0x47, 0x13, 0x50, + 0x7c, 0x89, 0x51, 0xcc, 0x60, 0x7d, 0x0c, 0x2d, 0x41, 0xb6, 0x63, 0xb3, 0xb2, 0x14, 0x0d, 0x7f, + 0x9b, 0xc1, 0x33, 0x1c, 0xc3, 0x28, 0x7a, 0x76, 0xaf, 0x6f, 0xe2, 0x9a, 0x15, 0x4d, 0xf1, 0xdb, + 0x9c, 0x82, 0x63, 0x18, 0xc5, 0x09, 0xdc, 0xfa, 0x3b, 0x9c, 0xc2, 0x0d, 0xf8, 0xf3, 0x2a, 0x64, + 0x6c, 0xcb, 0x3c, 0xb4, 0xad, 0x49, 0x8c, 0xf8, 0x5d, 0xc6, 0x00, 0x0c, 0x82, 0x09, 0xae, 0x40, + 0x7a, 0xd2, 0x85, 0xf8, 0xbd, 0xc7, 0x7c, 0x7b, 0xf0, 0x15, 0xa8, 0xc2, 0x1c, 0x4f, 0x50, 0x86, + 0x6d, 0x4d, 0x40, 0xf1, 0xfb, 0x8c, 0x22, 0x17, 0x80, 0xb1, 0xd7, 0xf0, 0x90, 0xeb, 0x75, 0xd0, + 0x24, 0x24, 0xef, 0xf0, 0xd7, 0x60, 0x10, 0xe6, 0xca, 0x7d, 0x64, 0xe9, 0x07, 0x93, 0x31, 0x7c, + 0x85, 0xbb, 0x92, 0x63, 0x30, 0x45, 0x19, 0x66, 0xbb, 0x9a, 0xe3, 0x1e, 0x68, 0xe6, 0x44, 0xcb, + 0xf1, 0x07, 0x8c, 0x23, 0xeb, 0x83, 0x98, 0x47, 0xfa, 0xd6, 0x49, 0x68, 0xbe, 0xca, 0x3d, 0x12, + 0x80, 0xb1, 0xad, 0xe7, 0x7a, 0xe4, 0x02, 0xea, 0x24, 0x6c, 0x5f, 0xe3, 0x5b, 0x8f, 0x62, 0xb7, + 0x83, 0x8c, 0x57, 0x20, 0xed, 0x1a, 0xf7, 0x27, 0xa2, 0xf9, 0x43, 0xbe, 0xd2, 0x04, 0x80, 0xc1, + 0x37, 0xe1, 0xf4, 0xd8, 0x32, 0x31, 0x01, 0xd9, 0x1f, 0x31, 0xb2, 0xa5, 0x31, 0xa5, 0x82, 0xa5, + 0x84, 0x93, 0x52, 0xfe, 0x31, 0x4f, 0x09, 0x68, 0x88, 0xab, 0x81, 0x0f, 0x0a, 0xae, 0xd6, 0x3e, + 0x99, 0xd7, 0xfe, 0x84, 0x7b, 0x8d, 0x62, 0x43, 0x5e, 0xdb, 0x85, 0x25, 0xc6, 0x78, 0xb2, 0x75, + 0xfd, 0x3a, 0x4f, 0xac, 0x14, 0xbd, 0x17, 0x5e, 0xdd, 0x9f, 0x84, 0x65, 0xdf, 0x9d, 0xbc, 0x23, + 0x75, 0xd5, 0xae, 0xd6, 0x9b, 0x80, 0xf9, 0x1b, 0x8c, 0x99, 0x67, 0x7c, 0xbf, 0xa5, 0x75, 0xb7, + 0xb5, 0x1e, 0x26, 0xbf, 0x01, 0x79, 0x4e, 0xde, 0xb7, 0x1c, 0xa4, 0xdb, 0x1d, 0xcb, 0xb8, 0x8f, + 0x5a, 0x13, 0x50, 0xff, 0xe9, 0xd0, 0x52, 0xed, 0x05, 0xe0, 0x98, 0xb9, 0x06, 0xa2, 0xdf, 0xab, + 0xa8, 0x46, 0xb7, 0x67, 0x3b, 0x5e, 0x04, 0xe3, 0x9f, 0xf1, 0x95, 0xf2, 0x71, 0x35, 0x02, 0x93, + 0x2b, 0x90, 0x23, 0xc3, 0x49, 0x43, 0xf2, 0xcf, 0x19, 0xd1, 0xec, 0x00, 0xc5, 0x12, 0x87, 0x6e, + 0x77, 0x7b, 0x9a, 0x33, 0x49, 0xfe, 0xfb, 0x0b, 0x9e, 0x38, 0x18, 0x84, 0x25, 0x0e, 0xef, 0xb0, + 0x87, 0x70, 0xb5, 0x9f, 0x80, 0xe1, 0x9b, 0x3c, 0x71, 0x70, 0x0c, 0xa3, 0xe0, 0x0d, 0xc3, 0x04, + 0x14, 0x7f, 0xc9, 0x29, 0x38, 0x06, 0x53, 0x7c, 0x7a, 0x50, 0x68, 0x1d, 0xd4, 0x31, 0x5c, 0xcf, + 0xa1, 0x7d, 0xf0, 0xf1, 0x54, 0xdf, 0x7a, 0x1c, 0x6e, 0xc2, 0x94, 0x00, 0x54, 0xbe, 0x0e, 0x73, + 0x43, 0x2d, 0x86, 0x14, 0xf5, 0x3f, 0x0b, 0xf9, 0x9f, 0x7e, 0xc2, 0x92, 0x51, 0xb8, 0xc3, 0x90, + 0xb7, 0xf0, 0xba, 0x87, 0xfb, 0x80, 0x68, 0xb2, 0x37, 0x9e, 0xf8, 0x4b, 0x1f, 0x6a, 0x03, 0xe4, + 0x6b, 0x30, 0x1b, 0xea, 0x01, 0xa2, 0xa9, 0x7e, 0x86, 0x51, 0x65, 0x83, 0x2d, 0x80, 0x7c, 0x01, + 0x12, 0xb8, 0x9e, 0x47, 0xc3, 0x7f, 0x96, 0xc1, 0x89, 0xba, 0xfc, 0x09, 0x48, 0xf1, 0x3a, 0x1e, + 0x0d, 0xfd, 0x39, 0x06, 0xf5, 0x21, 0x18, 0xce, 0x6b, 0x78, 0x34, 0xfc, 0xe7, 0x39, 0x9c, 0x43, + 0x30, 0x7c, 0x72, 0x17, 0xfe, 0xcd, 0x2f, 0x24, 0x58, 0x1e, 0xe6, 0xbe, 0xbb, 0x02, 0x33, 0xac, + 0x78, 0x47, 0xa3, 0x3f, 0xcf, 0x1e, 0xce, 0x11, 0xf2, 0x6b, 0x90, 0x9c, 0xd0, 0xe1, 0xbf, 0xc8, + 0xa0, 0x54, 0x5f, 0x2e, 0x43, 0x26, 0x50, 0xb0, 0xa3, 0xe1, 0xbf, 0xc4, 0xe0, 0x41, 0x14, 0x36, + 0x9d, 0x15, 0xec, 0x68, 0x82, 0x5f, 0xe6, 0xa6, 0x33, 0x04, 0x76, 0x1b, 0xaf, 0xd5, 0xd1, 0xe8, + 0x5f, 0xe1, 0x5e, 0xe7, 0x10, 0xf9, 0x2a, 0xa4, 0xfd, 0xfc, 0x1b, 0x8d, 0xff, 0x55, 0x86, 0x1f, + 0x60, 0xb0, 0x07, 0x02, 0xf9, 0x3f, 0x9a, 0xe2, 0xd7, 0xb8, 0x07, 0x02, 0x28, 0xbc, 0x8d, 0x86, + 0x6b, 0x7a, 0x34, 0xd3, 0xaf, 0xf3, 0x6d, 0x34, 0x54, 0xd2, 0xf1, 0x6a, 0x92, 0x34, 0x18, 0x4d, + 0xf1, 0x1b, 0x7c, 0x35, 0x89, 0x3e, 0x36, 0x63, 0xb8, 0x48, 0x46, 0x73, 0xfc, 0x26, 0x37, 0x63, + 0xa8, 0x46, 0xca, 0x0d, 0x90, 0x46, 0x0b, 0x64, 0x34, 0xdf, 0x17, 0x18, 0xdf, 0xfc, 0x48, 0x7d, + 0x94, 0x5f, 0x87, 0xa5, 0xf1, 0xc5, 0x31, 0x9a, 0xf5, 0x8b, 0x4f, 0x86, 0x8e, 0x33, 0xc1, 0xda, + 0x28, 0xef, 0x0e, 0xb2, 0x6c, 0xb0, 0x30, 0x46, 0xd3, 0xbe, 0xf9, 0x24, 0x9c, 0x68, 0x83, 0x75, + 0x51, 0x2e, 0x01, 0x0c, 0x6a, 0x52, 0x34, 0xd7, 0x5b, 0x8c, 0x2b, 0x00, 0xc2, 0x5b, 0x83, 0x95, + 0xa4, 0x68, 0xfc, 0x97, 0xf8, 0xd6, 0x60, 0x08, 0xbc, 0x35, 0x78, 0x35, 0x8a, 0x46, 0xbf, 0xcd, + 0xb7, 0x06, 0x87, 0xc8, 0x57, 0x20, 0x65, 0xf5, 0x4d, 0x13, 0xc7, 0x96, 0x74, 0xfc, 0xbf, 0x11, + 0xe5, 0xff, 0xf5, 0x29, 0x03, 0x73, 0x80, 0x7c, 0x01, 0x92, 0xa8, 0xbb, 0x8f, 0x5a, 0x51, 0xc8, + 0x7f, 0x7b, 0xca, 0xf3, 0x09, 0xd6, 0x96, 0xaf, 0x02, 0xd0, 0xc3, 0x34, 0xf9, 0x4a, 0x14, 0x81, + 0xfd, 0xf7, 0xa7, 0xec, 0x3f, 0x14, 0x06, 0x90, 0x01, 0x01, 0xfd, 0x7f, 0x87, 0xe3, 0x09, 0x1e, + 0x87, 0x09, 0xc8, 0x01, 0xfc, 0x32, 0xcc, 0xdc, 0x72, 0x6d, 0xcb, 0xd3, 0x3a, 0x51, 0xe8, 0xff, + 0x60, 0x68, 0xae, 0x8f, 0x1d, 0xd6, 0xb5, 0x1d, 0xe4, 0x69, 0x1d, 0x37, 0x0a, 0xfb, 0x9f, 0x0c, + 0xeb, 0x03, 0x30, 0x58, 0xd7, 0x5c, 0x6f, 0x92, 0xf7, 0xfe, 0x2f, 0x0e, 0xe6, 0x00, 0x6c, 0x34, + 0xfe, 0x7d, 0x1b, 0x1d, 0x46, 0x61, 0xbf, 0xc7, 0x8d, 0x66, 0xfa, 0xf2, 0x27, 0x20, 0x8d, 0x7f, + 0xd2, 0xff, 0xda, 0x89, 0x00, 0xff, 0x37, 0x03, 0x0f, 0x10, 0xf8, 0xc9, 0xae, 0xd7, 0xf2, 0x8c, + 0x68, 0x67, 0xff, 0x0f, 0x5b, 0x69, 0xae, 0x2f, 0x97, 0x20, 0xe3, 0x7a, 0xad, 0x56, 0x9f, 0x75, + 0x34, 0x11, 0xf0, 0xef, 0x3f, 0xf5, 0x0f, 0xb9, 0x3e, 0x66, 0xe3, 0xec, 0xf8, 0xcb, 0x3a, 0xa8, + 0xda, 0x55, 0x9b, 0x5e, 0xd3, 0xc1, 0x5f, 0xc5, 0x20, 0xd3, 0x71, 0xec, 0x7e, 0x8f, 0xdd, 0xa9, + 0x25, 0xc9, 0x60, 0xf9, 0x64, 0x37, 0x71, 0xab, 0x3f, 0x05, 0x33, 0x55, 0x8c, 0x73, 0x3f, 0x2e, + 0x15, 0x40, 0xe8, 0x90, 0xeb, 0x47, 0x58, 0x17, 0x8b, 0x94, 0x99, 0x4d, 0x15, 0xab, 0x8a, 0xd0, + 0x59, 0x7e, 0x15, 0x84, 0xaa, 0xb4, 0x04, 0xd3, 0xc4, 0xfa, 0x8f, 0x93, 0x4f, 0x4d, 0x71, 0x85, + 0x8d, 0x7c, 0xf9, 0x3a, 0xb9, 0xa1, 0x14, 0x98, 0x7c, 0x7d, 0xc0, 0xbf, 0xce, 0xf9, 0x85, 0x11, + 0xfe, 0xf5, 0x13, 0xf2, 0xc7, 0x07, 0xfc, 0x1b, 0xe7, 0xdf, 0x7d, 0x58, 0x98, 0xfa, 0xce, 0xc3, + 0xc2, 0xd4, 0x3f, 0x3c, 0x2c, 0x4c, 0xbd, 0xf7, 0xb0, 0x20, 0x7c, 0xef, 0x61, 0x41, 0xf8, 0xbf, + 0x87, 0x05, 0xe1, 0xc1, 0xa3, 0x82, 0xf0, 0x95, 0x47, 0x05, 0xe1, 0xeb, 0x8f, 0x0a, 0xc2, 0xb7, + 0x1e, 0x15, 0x84, 0x77, 0x1f, 0x15, 0xa6, 0xbe, 0xf3, 0xa8, 0x30, 0xf5, 0xde, 0xa3, 0xc2, 0xd4, + 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x24, 0xb4, 0xef, 0x98, 0x2f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/both/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/both/mapsproto2.pb.go index 58eee2637..f8e42b0a3 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/both/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/both/mapsproto2.pb.go @@ -179,286 +179,294 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4464 bytes of a gzipped FileDescriptorSet + // 4577 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xde, 0xe1, 0x43, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0x69, 0xd9, 0xe6, 0xee, 0xca, - 0x2f, 0x79, 0x6d, 0x6b, 0x6d, 0x79, 0x77, 0xbd, 0xe6, 0xc6, 0x36, 0x28, 0x89, 0xab, 0x95, 0xa3, - 0x57, 0x86, 0x92, 0x5f, 0x81, 0x31, 0x1d, 0x0d, 0x2f, 0xa9, 0xf1, 0x92, 0x33, 0xcc, 0xcc, 0x70, - 0xbd, 0xf2, 0x8f, 0x62, 0x03, 0xf7, 0x81, 0x20, 0xe8, 0xbb, 0x40, 0x1d, 0xc7, 0x71, 0x93, 0x00, - 0xad, 0xd3, 0xf4, 0x95, 0xf4, 0x91, 0x06, 0xfd, 0x95, 0x3f, 0x69, 0x0d, 0x14, 0x28, 0x92, 0x7f, - 0x41, 0x10, 0x18, 0x59, 0xd5, 0x40, 0xdd, 0xd6, 0x6d, 0xdd, 0xc4, 0x40, 0x03, 0xf8, 0x4f, 0x70, - 0x5f, 0xc3, 0x99, 0xe1, 0x90, 0x43, 0x19, 0xc8, 0xe3, 0x87, 0x7f, 0x49, 0x73, 0xee, 0xf9, 0xbe, - 0x7b, 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xe6, 0x72, 0xe0, 0xd3, 0x67, 0xe1, 0x64, 0xd3, 0xb2, 0x9a, - 0x2d, 0x7c, 0xa6, 0x63, 0x5b, 0xae, 0xb5, 0xd7, 0x6d, 0x9c, 0xa9, 0x63, 0x47, 0xb7, 0x8d, 0x8e, - 0x6b, 0xd9, 0x0b, 0x54, 0x86, 0x26, 0x99, 0xc6, 0x82, 0xd0, 0x98, 0xdb, 0x80, 0xa9, 0x4b, 0x46, - 0x0b, 0xaf, 0x78, 0x8a, 0x35, 0xec, 0xa2, 0x0b, 0x90, 0x6a, 0x18, 0x2d, 0x5c, 0x94, 0x4e, 0x26, - 0xe7, 0x73, 0x8b, 0x77, 0x2e, 0x84, 0x40, 0x0b, 0x41, 0xc4, 0x36, 0x11, 0x2b, 0x14, 0x31, 0xf7, - 0x76, 0x0a, 0xa6, 0x23, 0x46, 0x11, 0x82, 0x94, 0xa9, 0xb5, 0x09, 0xa3, 0x34, 0x9f, 0x55, 0xe8, - 0xff, 0xa8, 0x08, 0xe3, 0x1d, 0x4d, 0xbf, 0xa2, 0x35, 0x71, 0x31, 0x41, 0xc5, 0xe2, 0x11, 0x95, - 0x00, 0xea, 0xb8, 0x83, 0xcd, 0x3a, 0x36, 0xf5, 0x83, 0x62, 0xf2, 0x64, 0x72, 0x3e, 0xab, 0xf8, - 0x24, 0xe8, 0x3e, 0x98, 0xea, 0x74, 0xf7, 0x5a, 0x86, 0xae, 0xfa, 0xd4, 0xe0, 0x64, 0x72, 0x3e, - 0xad, 0xc8, 0x6c, 0x60, 0xa5, 0xa7, 0x7c, 0x0f, 0x4c, 0xbe, 0x88, 0xb5, 0x2b, 0x7e, 0xd5, 0x1c, - 0x55, 0x2d, 0x10, 0xb1, 0x4f, 0x71, 0x19, 0xf2, 0x6d, 0xec, 0x38, 0x5a, 0x13, 0xab, 0xee, 0x41, - 0x07, 0x17, 0x53, 0x74, 0xf5, 0x27, 0xfb, 0x56, 0x1f, 0x5e, 0x79, 0x8e, 0xa3, 0x76, 0x0e, 0x3a, - 0x18, 0x55, 0x20, 0x8b, 0xcd, 0x6e, 0x9b, 0x31, 0xa4, 0x07, 0xf8, 0xaf, 0x6a, 0x76, 0xdb, 0x61, - 0x96, 0x0c, 0x81, 0x71, 0x8a, 0x71, 0x07, 0xdb, 0x57, 0x0d, 0x1d, 0x17, 0xc7, 0x28, 0xc1, 0x3d, - 0x7d, 0x04, 0x35, 0x36, 0x1e, 0xe6, 0x10, 0x38, 0xb4, 0x0c, 0x59, 0x7c, 0xcd, 0xc5, 0xa6, 0x63, - 0x58, 0x66, 0x71, 0x9c, 0x92, 0xdc, 0x15, 0xb1, 0x8b, 0xb8, 0x55, 0x0f, 0x53, 0xf4, 0x70, 0xe8, - 0x3c, 0x8c, 0x5b, 0x1d, 0xd7, 0xb0, 0x4c, 0xa7, 0x98, 0x39, 0x29, 0xcd, 0xe7, 0x16, 0x6f, 0x8b, - 0x0c, 0x84, 0x2d, 0xa6, 0xa3, 0x08, 0x65, 0xb4, 0x06, 0xb2, 0x63, 0x75, 0x6d, 0x1d, 0xab, 0xba, - 0x55, 0xc7, 0xaa, 0x61, 0x36, 0xac, 0x62, 0x96, 0x12, 0x9c, 0xe8, 0x5f, 0x08, 0x55, 0x5c, 0xb6, - 0xea, 0x78, 0xcd, 0x6c, 0x58, 0x4a, 0xc1, 0x09, 0x3c, 0xa3, 0xe3, 0x30, 0xe6, 0x1c, 0x98, 0xae, - 0x76, 0xad, 0x98, 0xa7, 0x11, 0xc2, 0x9f, 0xe6, 0xfe, 0x3f, 0x0d, 0x93, 0xa3, 0x84, 0xd8, 0x45, - 0x48, 0x37, 0xc8, 0x2a, 0x8b, 0x89, 0xa3, 0xf8, 0x80, 0x61, 0x82, 0x4e, 0x1c, 0xfb, 0x90, 0x4e, - 0xac, 0x40, 0xce, 0xc4, 0x8e, 0x8b, 0xeb, 0x2c, 0x22, 0x92, 0x23, 0xc6, 0x14, 0x30, 0x50, 0x7f, - 0x48, 0xa5, 0x3e, 0x54, 0x48, 0x3d, 0x03, 0x93, 0x9e, 0x49, 0xaa, 0xad, 0x99, 0x4d, 0x11, 0x9b, - 0x67, 0xe2, 0x2c, 0x59, 0xa8, 0x0a, 0x9c, 0x42, 0x60, 0x4a, 0x01, 0x07, 0x9e, 0xd1, 0x0a, 0x80, - 0x65, 0x62, 0xab, 0xa1, 0xd6, 0xb1, 0xde, 0x2a, 0x66, 0x06, 0x78, 0x69, 0x8b, 0xa8, 0xf4, 0x79, - 0xc9, 0x62, 0x52, 0xbd, 0x85, 0x1e, 0xed, 0x85, 0xda, 0xf8, 0x80, 0x48, 0xd9, 0x60, 0x87, 0xac, - 0x2f, 0xda, 0x76, 0xa1, 0x60, 0x63, 0x12, 0xf7, 0xb8, 0xce, 0x57, 0x96, 0xa5, 0x46, 0x2c, 0xc4, - 0xae, 0x4c, 0xe1, 0x30, 0xb6, 0xb0, 0x09, 0xdb, 0xff, 0x88, 0xee, 0x00, 0x4f, 0xa0, 0xd2, 0xb0, - 0x02, 0x9a, 0x85, 0xf2, 0x42, 0xb8, 0xa9, 0xb5, 0xf1, 0xec, 0x05, 0x28, 0x04, 0xdd, 0x83, 0x66, - 0x20, 0xed, 0xb8, 0x9a, 0xed, 0xd2, 0x28, 0x4c, 0x2b, 0xec, 0x01, 0xc9, 0x90, 0xc4, 0x66, 0x9d, - 0x66, 0xb9, 0xb4, 0x42, 0xfe, 0x9d, 0x7d, 0x04, 0x26, 0x02, 0xd3, 0x8f, 0x0a, 0x9c, 0x7b, 0x65, - 0x0c, 0x66, 0xa2, 0x62, 0x2e, 0x32, 0xfc, 0x8f, 0xc3, 0x98, 0xd9, 0x6d, 0xef, 0x61, 0xbb, 0x98, - 0xa4, 0x0c, 0xfc, 0x09, 0x55, 0x20, 0xdd, 0xd2, 0xf6, 0x70, 0xab, 0x98, 0x3a, 0x29, 0xcd, 0x17, - 0x16, 0xef, 0x1b, 0x29, 0xaa, 0x17, 0xd6, 0x09, 0x44, 0x61, 0x48, 0xf4, 0x38, 0xa4, 0x78, 0x8a, - 0x23, 0x0c, 0xa7, 0x47, 0x63, 0x20, 0xb1, 0xa8, 0x50, 0x1c, 0xba, 0x15, 0xb2, 0xe4, 0x2f, 0xf3, - 0xed, 0x18, 0xb5, 0x39, 0x43, 0x04, 0xc4, 0xaf, 0x68, 0x16, 0x32, 0x34, 0xcc, 0xea, 0x58, 0x94, - 0x06, 0xef, 0x99, 0x6c, 0x4c, 0x1d, 0x37, 0xb4, 0x6e, 0xcb, 0x55, 0xaf, 0x6a, 0xad, 0x2e, 0xa6, - 0x01, 0x93, 0x55, 0xf2, 0x5c, 0xf8, 0x14, 0x91, 0xa1, 0x13, 0x90, 0x63, 0x51, 0x69, 0x98, 0x75, - 0x7c, 0x8d, 0x66, 0x9f, 0xb4, 0xc2, 0x02, 0x75, 0x8d, 0x48, 0xc8, 0xf4, 0x2f, 0x38, 0x96, 0x29, - 0xb6, 0x96, 0x4e, 0x41, 0x04, 0x74, 0xfa, 0x47, 0xc2, 0x89, 0xef, 0xf6, 0xe8, 0xe5, 0x85, 0x63, - 0x71, 0xee, 0x1b, 0x09, 0x48, 0xd1, 0xf3, 0x36, 0x09, 0xb9, 0x9d, 0x67, 0xb7, 0xab, 0xea, 0xca, - 0xd6, 0xee, 0xd2, 0x7a, 0x55, 0x96, 0x50, 0x01, 0x80, 0x0a, 0x2e, 0xad, 0x6f, 0x55, 0x76, 0xe4, - 0x84, 0xf7, 0xbc, 0xb6, 0xb9, 0x73, 0xfe, 0xac, 0x9c, 0xf4, 0x00, 0xbb, 0x4c, 0x90, 0xf2, 0x2b, - 0x3c, 0xbc, 0x28, 0xa7, 0x91, 0x0c, 0x79, 0x46, 0xb0, 0xf6, 0x4c, 0x75, 0xe5, 0xfc, 0x59, 0x79, - 0x2c, 0x28, 0x79, 0x78, 0x51, 0x1e, 0x47, 0x13, 0x90, 0xa5, 0x92, 0xa5, 0xad, 0xad, 0x75, 0x39, - 0xe3, 0x71, 0xd6, 0x76, 0x94, 0xb5, 0xcd, 0x55, 0x39, 0xeb, 0x71, 0xae, 0x2a, 0x5b, 0xbb, 0xdb, - 0x32, 0x78, 0x0c, 0x1b, 0xd5, 0x5a, 0xad, 0xb2, 0x5a, 0x95, 0x73, 0x9e, 0xc6, 0xd2, 0xb3, 0x3b, - 0xd5, 0x9a, 0x9c, 0x0f, 0x98, 0xf5, 0xf0, 0xa2, 0x3c, 0xe1, 0x4d, 0x51, 0xdd, 0xdc, 0xdd, 0x90, - 0x0b, 0x68, 0x0a, 0x26, 0xd8, 0x14, 0xc2, 0x88, 0xc9, 0x90, 0xe8, 0xfc, 0x59, 0x59, 0xee, 0x19, - 0xc2, 0x58, 0xa6, 0x02, 0x82, 0xf3, 0x67, 0x65, 0x34, 0xb7, 0x0c, 0x69, 0x1a, 0x5d, 0x08, 0x41, - 0x61, 0xbd, 0xb2, 0x54, 0x5d, 0x57, 0xb7, 0xb6, 0x77, 0xd6, 0xb6, 0x36, 0x2b, 0xeb, 0xb2, 0xd4, - 0x93, 0x29, 0xd5, 0x4f, 0xec, 0xae, 0x29, 0xd5, 0x15, 0x39, 0xe1, 0x97, 0x6d, 0x57, 0x2b, 0x3b, - 0xd5, 0x15, 0x39, 0x39, 0xa7, 0xc3, 0x4c, 0x54, 0x9e, 0x89, 0x3c, 0x19, 0xbe, 0x2d, 0x4e, 0x0c, - 0xd8, 0x62, 0xca, 0xd5, 0xb7, 0xc5, 0x5f, 0x96, 0x60, 0x3a, 0x22, 0xd7, 0x46, 0x4e, 0xf2, 0x04, - 0xa4, 0x59, 0x88, 0xb2, 0xea, 0x73, 0x6f, 0x64, 0xd2, 0xa6, 0x01, 0xdb, 0x57, 0x81, 0x28, 0xce, - 0x5f, 0x81, 0x93, 0x03, 0x2a, 0x30, 0xa1, 0xe8, 0x33, 0xf2, 0x65, 0x09, 0x8a, 0x83, 0xb8, 0x63, - 0x12, 0x45, 0x22, 0x90, 0x28, 0x2e, 0x86, 0x0d, 0x38, 0x35, 0x78, 0x0d, 0x7d, 0x56, 0xbc, 0x21, - 0xc1, 0xf1, 0xe8, 0x46, 0x25, 0xd2, 0x86, 0xc7, 0x61, 0xac, 0x8d, 0xdd, 0x7d, 0x4b, 0x14, 0xeb, - 0xbb, 0x23, 0x4a, 0x00, 0x19, 0x0e, 0xfb, 0x8a, 0xa3, 0xfc, 0x35, 0x24, 0x39, 0xa8, 0xdb, 0x60, - 0xd6, 0xf4, 0x59, 0xfa, 0x99, 0x04, 0xdc, 0x14, 0x49, 0x1e, 0x69, 0xe8, 0xed, 0x00, 0x86, 0xd9, - 0xe9, 0xba, 0xac, 0x20, 0xb3, 0xfc, 0x94, 0xa5, 0x12, 0x7a, 0xf6, 0x49, 0xee, 0xe9, 0xba, 0xde, - 0x78, 0x92, 0x8e, 0x03, 0x13, 0x51, 0x85, 0x0b, 0x3d, 0x43, 0x53, 0xd4, 0xd0, 0xd2, 0x80, 0x95, - 0xf6, 0xd5, 0xba, 0x07, 0x41, 0xd6, 0x5b, 0x06, 0x36, 0x5d, 0xd5, 0x71, 0x6d, 0xac, 0xb5, 0x0d, - 0xb3, 0x49, 0x13, 0x70, 0xa6, 0x9c, 0x6e, 0x68, 0x2d, 0x07, 0x2b, 0x93, 0x6c, 0xb8, 0x26, 0x46, - 0x09, 0x82, 0x56, 0x19, 0xdb, 0x87, 0x18, 0x0b, 0x20, 0xd8, 0xb0, 0x87, 0x98, 0xfb, 0xec, 0x38, - 0xe4, 0x7c, 0x6d, 0x1d, 0x3a, 0x05, 0xf9, 0x17, 0xb4, 0xab, 0x9a, 0x2a, 0x5a, 0x75, 0xe6, 0x89, - 0x1c, 0x91, 0x6d, 0xf3, 0x76, 0xfd, 0x41, 0x98, 0xa1, 0x2a, 0x56, 0xd7, 0xc5, 0xb6, 0xaa, 0xb7, - 0x34, 0xc7, 0xa1, 0x4e, 0xcb, 0x50, 0x55, 0x44, 0xc6, 0xb6, 0xc8, 0xd0, 0xb2, 0x18, 0x41, 0xe7, - 0x60, 0x9a, 0x22, 0xda, 0xdd, 0x96, 0x6b, 0x74, 0x5a, 0x58, 0x25, 0x2f, 0x0f, 0x0e, 0x4d, 0xc4, - 0x9e, 0x65, 0x53, 0x44, 0x63, 0x83, 0x2b, 0x10, 0x8b, 0x1c, 0xb4, 0x0a, 0xb7, 0x53, 0x58, 0x13, - 0x9b, 0xd8, 0xd6, 0x5c, 0xac, 0xe2, 0x4f, 0x75, 0xb5, 0x96, 0xa3, 0x6a, 0x66, 0x5d, 0xdd, 0xd7, - 0x9c, 0xfd, 0xe2, 0x8c, 0x9f, 0xe0, 0x16, 0xa2, 0xbb, 0xca, 0x55, 0xab, 0x54, 0xb3, 0x62, 0xd6, - 0x2f, 0x6b, 0xce, 0x3e, 0x2a, 0xc3, 0x71, 0x4a, 0xe4, 0xb8, 0xb6, 0x61, 0x36, 0x55, 0x7d, 0x1f, - 0xeb, 0x57, 0xd4, 0xae, 0xdb, 0xb8, 0x50, 0xbc, 0xd5, 0xcf, 0x40, 0x8d, 0xac, 0x51, 0x9d, 0x65, - 0xa2, 0xb2, 0xeb, 0x36, 0x2e, 0xa0, 0x1a, 0xe4, 0xc9, 0x7e, 0xb4, 0x8d, 0x97, 0xb0, 0xda, 0xb0, - 0x6c, 0x5a, 0x5c, 0x0a, 0x11, 0x87, 0xdb, 0xe7, 0xc4, 0x85, 0x2d, 0x0e, 0xd8, 0xb0, 0xea, 0xb8, - 0x9c, 0xae, 0x6d, 0x57, 0xab, 0x2b, 0x4a, 0x4e, 0xb0, 0x5c, 0xb2, 0x6c, 0x12, 0x53, 0x4d, 0xcb, - 0xf3, 0x71, 0x8e, 0xc5, 0x54, 0xd3, 0x12, 0x1e, 0x3e, 0x07, 0xd3, 0xba, 0xce, 0x96, 0x6d, 0xe8, - 0x2a, 0xef, 0xf2, 0x9d, 0xa2, 0x1c, 0xf0, 0x97, 0xae, 0xaf, 0x32, 0x05, 0x1e, 0xe6, 0x0e, 0x7a, - 0x14, 0x6e, 0xea, 0xf9, 0xcb, 0x0f, 0x9c, 0xea, 0x5b, 0x65, 0x18, 0x7a, 0x0e, 0xa6, 0x3b, 0x07, - 0xfd, 0x40, 0x14, 0x98, 0xb1, 0x73, 0x10, 0x86, 0xdd, 0x45, 0xdf, 0xdc, 0x6c, 0xac, 0x6b, 0x2e, - 0xae, 0x17, 0x6f, 0xf6, 0x6b, 0xfb, 0x06, 0xd0, 0x19, 0x90, 0x75, 0x5d, 0xc5, 0xa6, 0xb6, 0xd7, - 0xc2, 0xaa, 0x66, 0x63, 0x53, 0x73, 0x8a, 0x27, 0xfc, 0xca, 0x05, 0x5d, 0xaf, 0xd2, 0xd1, 0x0a, - 0x1d, 0x44, 0xa7, 0x61, 0xca, 0xda, 0x7b, 0x41, 0x67, 0xc1, 0xa5, 0x76, 0x6c, 0xdc, 0x30, 0xae, - 0x15, 0xef, 0xa4, 0x6e, 0x9a, 0x24, 0x03, 0x34, 0xb4, 0xb6, 0xa9, 0x18, 0xdd, 0x0b, 0xb2, 0xee, - 0xec, 0x6b, 0x76, 0x87, 0x56, 0x77, 0xa7, 0xa3, 0xe9, 0xb8, 0x78, 0x17, 0x53, 0x65, 0xf2, 0x4d, - 0x21, 0x46, 0xcf, 0xc0, 0x4c, 0xd7, 0x34, 0x4c, 0x17, 0xdb, 0x1d, 0x1b, 0x93, 0x26, 0x9d, 0x9d, - 0xb4, 0xe2, 0xbf, 0x8f, 0x0f, 0x68, 0xb3, 0x77, 0xfd, 0xda, 0x6c, 0x77, 0x95, 0xe9, 0x6e, 0xbf, - 0x70, 0xae, 0x0c, 0x79, 0xff, 0xa6, 0xa3, 0x2c, 0xb0, 0x6d, 0x97, 0x25, 0x52, 0x43, 0x97, 0xb7, - 0x56, 0x48, 0xf5, 0x7b, 0xae, 0x2a, 0x27, 0x48, 0x15, 0x5e, 0x5f, 0xdb, 0xa9, 0xaa, 0xca, 0xee, - 0xe6, 0xce, 0xda, 0x46, 0x55, 0x4e, 0x9e, 0xce, 0x66, 0xde, 0x19, 0x97, 0xaf, 0x5f, 0xbf, 0x7e, - 0x3d, 0x31, 0xf7, 0xed, 0x04, 0x14, 0x82, 0x9d, 0x2f, 0xfa, 0x18, 0xdc, 0x2c, 0x5e, 0x53, 0x1d, - 0xec, 0xaa, 0x2f, 0x1a, 0x36, 0x8d, 0xc3, 0xb6, 0xc6, 0x7a, 0x47, 0xcf, 0x85, 0x33, 0x5c, 0xab, - 0x86, 0xdd, 0xa7, 0x0d, 0x9b, 0x44, 0x59, 0x5b, 0x73, 0xd1, 0x3a, 0x9c, 0x30, 0x2d, 0xd5, 0x71, - 0x35, 0xb3, 0xae, 0xd9, 0x75, 0xb5, 0x77, 0x41, 0xa0, 0x6a, 0xba, 0x8e, 0x1d, 0xc7, 0x62, 0x25, - 0xc0, 0x63, 0xb9, 0xcd, 0xb4, 0x6a, 0x5c, 0xb9, 0x97, 0x1b, 0x2b, 0x5c, 0x35, 0xb4, 0xdd, 0xc9, - 0x41, 0xdb, 0x7d, 0x2b, 0x64, 0xdb, 0x5a, 0x47, 0xc5, 0xa6, 0x6b, 0x1f, 0xd0, 0x7e, 0x2d, 0xa3, - 0x64, 0xda, 0x5a, 0xa7, 0x4a, 0x9e, 0x7f, 0x76, 0x7b, 0xe0, 0xf7, 0xe3, 0x0f, 0x92, 0x90, 0xf7, - 0xf7, 0x6c, 0xa4, 0x05, 0xd6, 0x69, 0x7e, 0x96, 0xe8, 0xf1, 0xbd, 0x63, 0x68, 0x87, 0xb7, 0xb0, - 0x4c, 0x12, 0x77, 0x79, 0x8c, 0x75, 0x52, 0x0a, 0x43, 0x92, 0xa2, 0x49, 0x0e, 0x2c, 0x66, 0xfd, - 0x79, 0x46, 0xe1, 0x4f, 0x68, 0x15, 0xc6, 0x5e, 0x70, 0x28, 0xf7, 0x18, 0xe5, 0xbe, 0x73, 0x38, - 0xf7, 0x93, 0x35, 0x4a, 0x9e, 0x7d, 0xb2, 0xa6, 0x6e, 0x6e, 0x29, 0x1b, 0x95, 0x75, 0x85, 0xc3, - 0xd1, 0x2d, 0x90, 0x6a, 0x69, 0x2f, 0x1d, 0x04, 0x53, 0x3c, 0x15, 0x8d, 0xea, 0xf8, 0x5b, 0x20, - 0xf5, 0x22, 0xd6, 0xae, 0x04, 0x13, 0x2b, 0x15, 0xfd, 0x0c, 0x43, 0xff, 0x0c, 0xa4, 0xa9, 0xbf, - 0x10, 0x00, 0xf7, 0x98, 0x7c, 0x0c, 0x65, 0x20, 0xb5, 0xbc, 0xa5, 0x90, 0xf0, 0x97, 0x21, 0xcf, - 0xa4, 0xea, 0xf6, 0x5a, 0x75, 0xb9, 0x2a, 0x27, 0xe6, 0xce, 0xc1, 0x18, 0x73, 0x02, 0x39, 0x1a, - 0x9e, 0x1b, 0xe4, 0x63, 0xfc, 0x91, 0x73, 0x48, 0x62, 0x74, 0x77, 0x63, 0xa9, 0xaa, 0xc8, 0x09, - 0xff, 0xf6, 0x3a, 0x90, 0xf7, 0xb7, 0x6b, 0x3f, 0x9f, 0x98, 0xfa, 0x47, 0x09, 0x72, 0xbe, 0xf6, - 0x8b, 0x14, 0x7e, 0xad, 0xd5, 0xb2, 0x5e, 0x54, 0xb5, 0x96, 0xa1, 0x39, 0x3c, 0x28, 0x80, 0x8a, - 0x2a, 0x44, 0x32, 0xea, 0xa6, 0xfd, 0x5c, 0x8c, 0x7f, 0x5d, 0x02, 0x39, 0xdc, 0xba, 0x85, 0x0c, - 0x94, 0x7e, 0xa1, 0x06, 0xbe, 0x26, 0x41, 0x21, 0xd8, 0xaf, 0x85, 0xcc, 0x3b, 0xf5, 0x0b, 0x35, - 0xef, 0xf3, 0x12, 0x4c, 0x04, 0xba, 0xb4, 0x5f, 0x2a, 0xeb, 0x5e, 0x4d, 0xc2, 0x74, 0x04, 0x0e, - 0x55, 0x78, 0x3b, 0xcb, 0x3a, 0xec, 0x07, 0x46, 0x99, 0x6b, 0x81, 0x54, 0xcb, 0x6d, 0xcd, 0x76, - 0x79, 0xf7, 0x7b, 0x2f, 0xc8, 0x46, 0x1d, 0x9b, 0xae, 0xd1, 0x30, 0xb0, 0xcd, 0x5f, 0xc1, 0x59, - 0x8f, 0x3b, 0xd9, 0x93, 0xb3, 0xb7, 0xf0, 0xfb, 0x01, 0x75, 0x2c, 0xc7, 0x70, 0x8d, 0xab, 0x58, - 0x35, 0x4c, 0xf1, 0xbe, 0x4e, 0x7a, 0xde, 0x94, 0x22, 0x8b, 0x91, 0x35, 0xd3, 0xf5, 0xb4, 0x4d, - 0xdc, 0xd4, 0x42, 0xda, 0x24, 0xf7, 0x25, 0x15, 0x59, 0x8c, 0x78, 0xda, 0xa7, 0x20, 0x5f, 0xb7, - 0xba, 0xa4, 0x7d, 0x60, 0x7a, 0x24, 0xd5, 0x4a, 0x4a, 0x8e, 0xc9, 0x3c, 0x15, 0xde, 0xdf, 0xf5, - 0x2e, 0x0a, 0xf2, 0x4a, 0x8e, 0xc9, 0x98, 0xca, 0x3d, 0x30, 0xa9, 0x35, 0x9b, 0x36, 0x21, 0x17, - 0x44, 0xac, 0x69, 0x2d, 0x78, 0x62, 0xaa, 0x38, 0xfb, 0x24, 0x64, 0x84, 0x1f, 0x48, 0x35, 0x23, - 0x9e, 0x50, 0x3b, 0xec, 0xba, 0x26, 0x31, 0x9f, 0x55, 0x32, 0xa6, 0x18, 0x3c, 0x05, 0x79, 0xc3, - 0x51, 0x7b, 0xf7, 0x86, 0x89, 0x93, 0x89, 0xf9, 0x8c, 0x92, 0x33, 0x1c, 0xef, 0xa2, 0x68, 0xee, - 0x8d, 0x04, 0x14, 0x82, 0xf7, 0x9e, 0x68, 0x05, 0x32, 0x2d, 0x4b, 0xd7, 0x68, 0x20, 0xb0, 0x4b, - 0xf7, 0xf9, 0x98, 0xab, 0xd2, 0x85, 0x75, 0xae, 0xaf, 0x78, 0xc8, 0xd9, 0x7f, 0x95, 0x20, 0x23, - 0xc4, 0xe8, 0x38, 0xa4, 0x3a, 0x9a, 0xbb, 0x4f, 0xe9, 0xd2, 0x4b, 0x09, 0x59, 0x52, 0xe8, 0x33, - 0x91, 0x3b, 0x1d, 0xcd, 0xa4, 0x21, 0xc0, 0xe5, 0xe4, 0x99, 0xec, 0x6b, 0x0b, 0x6b, 0x75, 0xda, - 0x0e, 0x5b, 0xed, 0x36, 0x36, 0x5d, 0x47, 0xec, 0x2b, 0x97, 0x2f, 0x73, 0x31, 0xba, 0x0f, 0xa6, - 0x5c, 0x5b, 0x33, 0x5a, 0x01, 0xdd, 0x14, 0xd5, 0x95, 0xc5, 0x80, 0xa7, 0x5c, 0x86, 0x5b, 0x04, - 0x6f, 0x1d, 0xbb, 0x9a, 0xbe, 0x8f, 0xeb, 0x3d, 0xd0, 0x18, 0xbd, 0x54, 0xbb, 0x99, 0x2b, 0xac, - 0xf0, 0x71, 0x81, 0x9d, 0xfb, 0xae, 0x04, 0x53, 0xa2, 0x81, 0xaf, 0x7b, 0xce, 0xda, 0x00, 0xd0, - 0x4c, 0xd3, 0x72, 0xfd, 0xee, 0xea, 0x0f, 0xe5, 0x3e, 0xdc, 0x42, 0xc5, 0x03, 0x29, 0x3e, 0x82, - 0xd9, 0x36, 0x40, 0x6f, 0x64, 0xa0, 0xdb, 0x4e, 0x40, 0x8e, 0x5f, 0x6a, 0xd3, 0x5f, 0x46, 0xd8, - 0x5b, 0x1f, 0x30, 0x11, 0xe9, 0xf4, 0xd1, 0x0c, 0xa4, 0xf7, 0x70, 0xd3, 0x30, 0xf9, 0x55, 0x1b, - 0x7b, 0x10, 0x17, 0x78, 0x29, 0xef, 0x02, 0x6f, 0xe9, 0x93, 0x30, 0xad, 0x5b, 0xed, 0xb0, 0xb9, - 0x4b, 0x72, 0xe8, 0xcd, 0xd3, 0xb9, 0x2c, 0x3d, 0x07, 0xbd, 0xee, 0xec, 0x8b, 0x92, 0xf4, 0xe5, - 0x44, 0x72, 0x75, 0x7b, 0xe9, 0xab, 0x89, 0xd9, 0x55, 0x06, 0xdd, 0x16, 0x2b, 0x55, 0x70, 0xa3, - 0x85, 0x75, 0x62, 0x3d, 0xfc, 0xf8, 0x6e, 0x78, 0xa0, 0x69, 0xb8, 0xfb, 0xdd, 0xbd, 0x05, 0xdd, - 0x6a, 0x9f, 0x69, 0x5a, 0x4d, 0xab, 0xf7, 0x63, 0x10, 0x79, 0xa2, 0x0f, 0xf4, 0x3f, 0xfe, 0x83, - 0x50, 0xd6, 0x93, 0xce, 0xc6, 0xfe, 0x7a, 0x54, 0xde, 0x84, 0x69, 0xae, 0xac, 0xd2, 0x1b, 0x69, - 0xd6, 0x87, 0xa3, 0xa1, 0xb7, 0x12, 0xc5, 0xaf, 0xbf, 0x4d, 0x2b, 0x9d, 0x32, 0xc5, 0xa1, 0x64, - 0x8c, 0x75, 0xea, 0x65, 0x05, 0x6e, 0x0a, 0xf0, 0xb1, 0xa3, 0x89, 0xed, 0x18, 0xc6, 0x6f, 0x73, - 0xc6, 0x69, 0x1f, 0x63, 0x8d, 0x43, 0xcb, 0xcb, 0x30, 0x71, 0x14, 0xae, 0x7f, 0xe2, 0x5c, 0x79, - 0xec, 0x27, 0x59, 0x85, 0x49, 0x4a, 0xa2, 0x77, 0x1d, 0xd7, 0x6a, 0xd3, 0xbc, 0x37, 0x9c, 0xe6, - 0x9f, 0xdf, 0x66, 0x67, 0xa5, 0x40, 0x60, 0xcb, 0x1e, 0xaa, 0x5c, 0x06, 0x7a, 0x09, 0x5f, 0xc7, - 0x7a, 0x2b, 0x86, 0xe1, 0x4d, 0x6e, 0x88, 0xa7, 0x5f, 0x7e, 0x0a, 0x66, 0xc8, 0xff, 0x34, 0x2d, - 0xf9, 0x2d, 0x89, 0xbf, 0x83, 0x29, 0x7e, 0xf7, 0x65, 0x76, 0x1c, 0xa7, 0x3d, 0x02, 0x9f, 0x4d, - 0xbe, 0x5d, 0x6c, 0x62, 0xd7, 0xc5, 0xb6, 0xa3, 0x6a, 0xad, 0x28, 0xf3, 0x7c, 0x6f, 0xb0, 0xc5, - 0xcf, 0xbd, 0x1b, 0xdc, 0xc5, 0x55, 0x86, 0xac, 0xb4, 0x5a, 0xe5, 0x5d, 0xb8, 0x39, 0x22, 0x2a, - 0x46, 0xe0, 0x7c, 0x95, 0x73, 0xce, 0xf4, 0x45, 0x06, 0xa1, 0xdd, 0x06, 0x21, 0xf7, 0xf6, 0x72, - 0x04, 0xce, 0xcf, 0x73, 0x4e, 0xc4, 0xb1, 0x62, 0x4b, 0x09, 0xe3, 0x93, 0x30, 0x75, 0x15, 0xdb, - 0x7b, 0x96, 0xc3, 0x2f, 0x0e, 0x46, 0xa0, 0x7b, 0x8d, 0xd3, 0x4d, 0x72, 0x20, 0xbd, 0x46, 0x20, - 0x5c, 0x8f, 0x42, 0xa6, 0xa1, 0xe9, 0x78, 0x04, 0x8a, 0x2f, 0x70, 0x8a, 0x71, 0xa2, 0x4f, 0xa0, - 0x15, 0xc8, 0x37, 0x2d, 0x5e, 0x99, 0xe2, 0xe1, 0xaf, 0x73, 0x78, 0x4e, 0x60, 0x38, 0x45, 0xc7, - 0xea, 0x74, 0x5b, 0xa4, 0x6c, 0xc5, 0x53, 0xfc, 0xb1, 0xa0, 0x10, 0x18, 0x4e, 0x71, 0x04, 0xb7, - 0x7e, 0x51, 0x50, 0x38, 0x3e, 0x7f, 0x3e, 0x01, 0x39, 0xcb, 0x6c, 0x1d, 0x58, 0xe6, 0x28, 0x46, - 0x7c, 0x89, 0x33, 0x00, 0x87, 0x10, 0x82, 0x8b, 0x90, 0x1d, 0x75, 0x23, 0xfe, 0xe4, 0x5d, 0x71, - 0x3c, 0xc4, 0x0e, 0xac, 0xc2, 0xa4, 0x48, 0x50, 0x86, 0x65, 0x8e, 0x40, 0xf1, 0xa7, 0x9c, 0xa2, - 0xe0, 0x83, 0xf1, 0x65, 0xb8, 0xd8, 0x71, 0x9b, 0x78, 0x14, 0x92, 0x37, 0xc4, 0x32, 0x38, 0x84, - 0xbb, 0x72, 0x0f, 0x9b, 0xfa, 0xfe, 0x68, 0x0c, 0x5f, 0x11, 0xae, 0x14, 0x18, 0x42, 0xb1, 0x0c, - 0x13, 0x6d, 0xcd, 0x76, 0xf6, 0xb5, 0xd6, 0x48, 0xdb, 0xf1, 0x67, 0x9c, 0x23, 0xef, 0x81, 0xb8, - 0x47, 0xba, 0xe6, 0x51, 0x68, 0xbe, 0x2a, 0x3c, 0xe2, 0x83, 0xf1, 0xa3, 0xe7, 0xb8, 0xf4, 0x6e, - 0xe6, 0x28, 0x6c, 0x7f, 0x2e, 0x8e, 0x1e, 0xc3, 0x6e, 0xf8, 0x19, 0x2f, 0x42, 0xd6, 0x31, 0x5e, - 0x1a, 0x89, 0xe6, 0x2f, 0xc4, 0x4e, 0x53, 0x00, 0x01, 0x3f, 0x0b, 0xb7, 0x44, 0x96, 0x89, 0x11, - 0xc8, 0xfe, 0x92, 0x93, 0x1d, 0x8f, 0x28, 0x15, 0x3c, 0x25, 0x1c, 0x95, 0xf2, 0xaf, 0x44, 0x4a, - 0xc0, 0x21, 0xae, 0x6d, 0xd2, 0xd9, 0x3b, 0x5a, 0xe3, 0x68, 0x5e, 0xfb, 0x6b, 0xe1, 0x35, 0x86, - 0x0d, 0x78, 0x6d, 0x07, 0x8e, 0x73, 0xc6, 0xa3, 0xed, 0xeb, 0xd7, 0x44, 0x62, 0x65, 0xe8, 0xdd, - 0xe0, 0xee, 0x7e, 0x12, 0x66, 0x3d, 0x77, 0x8a, 0xa6, 0xd4, 0x51, 0xdb, 0x5a, 0x67, 0x04, 0xe6, - 0xaf, 0x73, 0x66, 0x91, 0xf1, 0xbd, 0xae, 0xd6, 0xd9, 0xd0, 0x3a, 0x84, 0xfc, 0x19, 0x28, 0x0a, - 0xf2, 0xae, 0x69, 0x63, 0xdd, 0x6a, 0x9a, 0xc6, 0x4b, 0xb8, 0x3e, 0x02, 0xf5, 0xdf, 0x84, 0xb6, - 0x6a, 0xd7, 0x07, 0x27, 0xcc, 0x6b, 0x20, 0x7b, 0xbd, 0x8a, 0x6a, 0xb4, 0x3b, 0x96, 0xed, 0xc6, - 0x30, 0xfe, 0xad, 0xd8, 0x29, 0x0f, 0xb7, 0x46, 0x61, 0xe5, 0x2a, 0x14, 0xe8, 0xe3, 0xa8, 0x21, - 0xf9, 0x77, 0x9c, 0x68, 0xa2, 0x87, 0xe2, 0x89, 0x43, 0xb7, 0xda, 0x1d, 0xcd, 0x1e, 0x25, 0xff, - 0xfd, 0xbd, 0x48, 0x1c, 0x1c, 0xc2, 0x13, 0x87, 0x7b, 0xd0, 0xc1, 0xa4, 0xda, 0x8f, 0xc0, 0xf0, - 0x0d, 0x91, 0x38, 0x04, 0x86, 0x53, 0x88, 0x86, 0x61, 0x04, 0x8a, 0x7f, 0x10, 0x14, 0x02, 0x43, - 0x28, 0x3e, 0xd1, 0x2b, 0xb4, 0x36, 0x6e, 0x1a, 0x8e, 0x6b, 0xb3, 0x56, 0x78, 0x38, 0xd5, 0x37, - 0xdf, 0x0d, 0x36, 0x61, 0x8a, 0x0f, 0x5a, 0x7e, 0x12, 0x26, 0x43, 0x2d, 0x06, 0x8a, 0xfb, 0x45, - 0xbf, 0xf8, 0xe9, 0xf7, 0x79, 0x32, 0x0a, 0x76, 0x18, 0xe5, 0x75, 0xb2, 0xef, 0xc1, 0x3e, 0x20, - 0x9e, 0xec, 0xe5, 0xf7, 0xbd, 0xad, 0x0f, 0xb4, 0x01, 0xe5, 0x4b, 0x30, 0x11, 0xe8, 0x01, 0xe2, - 0xa9, 0x7e, 0x8d, 0x53, 0xe5, 0xfd, 0x2d, 0x40, 0xf9, 0x1c, 0xa4, 0x48, 0x3d, 0x8f, 0x87, 0xff, - 0x3a, 0x87, 0x53, 0xf5, 0xf2, 0x63, 0x90, 0x11, 0x75, 0x3c, 0x1e, 0xfa, 0x1b, 0x1c, 0xea, 0x41, - 0x08, 0x5c, 0xd4, 0xf0, 0x78, 0xf8, 0x6f, 0x0a, 0xb8, 0x80, 0x10, 0xf8, 0xe8, 0x2e, 0xfc, 0xd6, - 0x67, 0x53, 0x3c, 0x0f, 0x0b, 0xdf, 0x5d, 0x84, 0x71, 0x5e, 0xbc, 0xe3, 0xd1, 0x9f, 0xe1, 0x93, - 0x0b, 0x44, 0xf9, 0x11, 0x48, 0x8f, 0xe8, 0xf0, 0xdf, 0xe2, 0x50, 0xa6, 0x5f, 0x5e, 0x86, 0x9c, - 0xaf, 0x60, 0xc7, 0xc3, 0x7f, 0x9b, 0xc3, 0xfd, 0x28, 0x62, 0x3a, 0x2f, 0xd8, 0xf1, 0x04, 0xbf, - 0x23, 0x4c, 0xe7, 0x08, 0xe2, 0x36, 0x51, 0xab, 0xe3, 0xd1, 0xbf, 0x2b, 0xbc, 0x2e, 0x20, 0xe5, - 0x27, 0x20, 0xeb, 0xe5, 0xdf, 0x78, 0xfc, 0xef, 0x71, 0x7c, 0x0f, 0x43, 0x3c, 0xe0, 0xcb, 0xff, - 0xf1, 0x14, 0xbf, 0x2f, 0x3c, 0xe0, 0x43, 0x91, 0x63, 0x14, 0xae, 0xe9, 0xf1, 0x4c, 0x7f, 0x20, - 0x8e, 0x51, 0xa8, 0xa4, 0x93, 0xdd, 0xa4, 0x69, 0x30, 0x9e, 0xe2, 0x0f, 0xc5, 0x6e, 0x52, 0x7d, - 0x62, 0x46, 0xb8, 0x48, 0xc6, 0x73, 0xfc, 0x91, 0x30, 0x23, 0x54, 0x23, 0xcb, 0xdb, 0x80, 0xfa, - 0x0b, 0x64, 0x3c, 0xdf, 0x2b, 0x9c, 0x6f, 0xaa, 0xaf, 0x3e, 0x96, 0x9f, 0x86, 0xe3, 0xd1, 0xc5, - 0x31, 0x9e, 0xf5, 0x73, 0xef, 0x87, 0x5e, 0x67, 0xfc, 0xb5, 0xb1, 0xbc, 0xd3, 0xcb, 0xb2, 0xfe, - 0xc2, 0x18, 0x4f, 0xfb, 0xea, 0xfb, 0xc1, 0x44, 0xeb, 0xaf, 0x8b, 0xe5, 0x0a, 0x40, 0xaf, 0x26, - 0xc5, 0x73, 0xbd, 0xc6, 0xb9, 0x7c, 0x20, 0x72, 0x34, 0x78, 0x49, 0x8a, 0xc7, 0x7f, 0x41, 0x1c, - 0x0d, 0x8e, 0x20, 0x47, 0x43, 0x54, 0xa3, 0x78, 0xf4, 0xeb, 0xe2, 0x68, 0x08, 0x48, 0xf9, 0x22, - 0x64, 0xcc, 0x6e, 0xab, 0x45, 0x62, 0x0b, 0x0d, 0xff, 0xc8, 0xa6, 0xf8, 0x1f, 0x1f, 0x70, 0xb0, - 0x00, 0x94, 0xcf, 0x41, 0x1a, 0xb7, 0xf7, 0x70, 0x3d, 0x0e, 0xf9, 0x9f, 0x1f, 0x88, 0x7c, 0x42, - 0xb4, 0xcb, 0x4f, 0x00, 0xb0, 0x97, 0x69, 0xfa, 0x1b, 0x4b, 0x0c, 0xf6, 0xbf, 0x3e, 0xe0, 0xbf, - 0xdf, 0xf7, 0x20, 0x3d, 0x02, 0xf6, 0x35, 0xc0, 0x70, 0x82, 0x77, 0x83, 0x04, 0xf4, 0x05, 0xfc, - 0x51, 0x18, 0x7f, 0xc1, 0xb1, 0x4c, 0x57, 0x6b, 0xc6, 0xa1, 0xff, 0x9b, 0xa3, 0x85, 0x3e, 0x71, - 0x58, 0xdb, 0xb2, 0xb1, 0xab, 0x35, 0x9d, 0x38, 0xec, 0xff, 0x70, 0xac, 0x07, 0x20, 0x60, 0x5d, - 0x73, 0xdc, 0x51, 0xd6, 0xfd, 0xbf, 0x02, 0x2c, 0x00, 0xc4, 0x68, 0xf2, 0xff, 0x15, 0x7c, 0x10, - 0x87, 0x7d, 0x4f, 0x18, 0xcd, 0xf5, 0xcb, 0x8f, 0x41, 0x96, 0xfc, 0xcb, 0xbe, 0x69, 0x89, 0x01, - 0xff, 0x1f, 0x07, 0xf7, 0x10, 0x64, 0x66, 0xc7, 0xad, 0xbb, 0x46, 0xbc, 0xb3, 0x7f, 0xc4, 0x77, - 0x5a, 0xe8, 0x97, 0x2b, 0x90, 0x73, 0xdc, 0x7a, 0xbd, 0xcb, 0x3b, 0x9a, 0x18, 0xf8, 0x8f, 0x3f, - 0xf0, 0x5e, 0x72, 0x3d, 0xcc, 0xd2, 0xa9, 0xe8, 0xfb, 0x3a, 0x58, 0xb5, 0x56, 0x2d, 0x76, 0x53, - 0x07, 0x3f, 0x7a, 0x00, 0x6e, 0xd3, 0xad, 0xf6, 0x9e, 0xe5, 0x9c, 0xd9, 0xb3, 0xdc, 0xfd, 0x33, - 0x6d, 0xad, 0xe3, 0x50, 0xc5, 0x45, 0x7e, 0xc9, 0x96, 0xe3, 0x4f, 0x64, 0x60, 0xf6, 0x68, 0x17, - 0x74, 0x73, 0xb7, 0xc3, 0xc4, 0xa5, 0x96, 0xa5, 0xb9, 0x86, 0xd9, 0xdc, 0xb6, 0x0c, 0xd3, 0x45, - 0x79, 0x90, 0x1a, 0xf4, 0xb7, 0x19, 0x49, 0x91, 0x1a, 0x73, 0xff, 0x92, 0x86, 0x2c, 0xbb, 0xdb, - 0xd9, 0xd0, 0x3a, 0xe8, 0x57, 0x21, 0xbf, 0xc9, 0x8f, 0xc7, 0x43, 0x8b, 0x17, 0x1c, 0xef, 0x2e, - 0xd9, 0x37, 0xff, 0x82, 0xa7, 0xbd, 0xe0, 0x57, 0xa5, 0xbf, 0xc5, 0x2e, 0x3d, 0xf8, 0xfd, 0xb7, - 0x4e, 0xdc, 0x3f, 0xd0, 0x3e, 0x52, 0x0f, 0xcf, 0xb0, 0x38, 0x5e, 0xd8, 0x35, 0x4c, 0xf7, 0xa1, - 0xc5, 0x0b, 0x4a, 0x60, 0x3e, 0x74, 0x15, 0x32, 0x7c, 0xc0, 0xe1, 0xbf, 0x31, 0xdc, 0x39, 0x60, - 0x6e, 0xa1, 0xc6, 0xe6, 0x3d, 0xfb, 0xe6, 0x5b, 0x27, 0x8e, 0x1d, 0x79, 0x6e, 0x6f, 0x2e, 0xf4, - 0x29, 0xc8, 0x09, 0x3b, 0xd6, 0xea, 0x0e, 0xff, 0xca, 0xf6, 0x9e, 0x98, 0x65, 0xaf, 0xd5, 0xf9, - 0xec, 0x77, 0x7f, 0xff, 0xad, 0x13, 0x73, 0x43, 0x67, 0x5e, 0xd8, 0xed, 0x1a, 0x75, 0xc5, 0x3f, - 0x07, 0x7a, 0x1e, 0x92, 0x64, 0x2a, 0xf6, 0x3d, 0xee, 0x89, 0x01, 0x53, 0x79, 0x53, 0x9c, 0xe6, - 0x0b, 0x1c, 0x65, 0x1a, 0xc2, 0x3b, 0xfb, 0x04, 0x4c, 0xf5, 0x6d, 0x0f, 0x92, 0x21, 0x79, 0x05, - 0x1f, 0xf0, 0x4f, 0x70, 0xc8, 0xbf, 0x68, 0xa6, 0xf7, 0x89, 0x99, 0x34, 0x9f, 0xe7, 0xdf, 0x8d, - 0x95, 0x13, 0x17, 0xa4, 0xd9, 0x8b, 0x30, 0x11, 0xf0, 0xf1, 0x91, 0xc0, 0x8f, 0x83, 0x1c, 0xf6, - 0xd2, 0x91, 0xf0, 0xe7, 0x21, 0xf3, 0x61, 0x70, 0x73, 0xdf, 0x43, 0x30, 0x5e, 0x69, 0xb5, 0x36, - 0xb4, 0x8e, 0x83, 0x9e, 0x85, 0x29, 0xd6, 0xb5, 0xef, 0x58, 0x2b, 0xf4, 0x57, 0x9d, 0x0d, 0xad, - 0xc3, 0x03, 0xfa, 0xbe, 0x80, 0xbb, 0x39, 0x60, 0xa1, 0x4f, 0x9b, 0xce, 0xaf, 0xf4, 0xb3, 0xa0, - 0xa7, 0x40, 0x16, 0x42, 0x7a, 0xb6, 0x08, 0x33, 0x0b, 0xd7, 0xd3, 0x43, 0x99, 0x85, 0x32, 0x23, - 0xee, 0xe3, 0x40, 0x8f, 0x43, 0x66, 0xcd, 0x74, 0x1f, 0x5e, 0x24, 0x7c, 0x2c, 0x06, 0xe7, 0x22, - 0xf9, 0x84, 0x12, 0xe3, 0xf1, 0x30, 0x1c, 0x7f, 0xfe, 0x2c, 0xc1, 0xa7, 0x86, 0xe3, 0xa9, 0x52, - 0x0f, 0x4f, 0x1f, 0x51, 0x05, 0xb2, 0x64, 0xcf, 0x99, 0x01, 0xec, 0x03, 0xef, 0x3b, 0x22, 0x09, - 0x3c, 0x2d, 0xc6, 0xd0, 0x43, 0x09, 0x0a, 0x66, 0xc3, 0x58, 0x0c, 0x85, 0xcf, 0x88, 0x1e, 0x8a, - 0x50, 0xd4, 0x3c, 0x2b, 0xc6, 0x87, 0x50, 0xd4, 0x42, 0x56, 0xd4, 0xfc, 0x56, 0xd4, 0x3c, 0x2b, - 0x32, 0x31, 0x14, 0x7e, 0x2b, 0xbc, 0x67, 0xb4, 0x02, 0x70, 0xc9, 0xb8, 0x86, 0xeb, 0xcc, 0x8c, - 0x6c, 0x44, 0x32, 0x12, 0x1c, 0x3d, 0x35, 0x46, 0xe2, 0xc3, 0xa1, 0x55, 0xc8, 0xd5, 0x1a, 0x3d, - 0x1a, 0xe0, 0xdf, 0xb7, 0x47, 0x9a, 0xd2, 0x08, 0xf1, 0xf8, 0x91, 0x9e, 0x39, 0x6c, 0x49, 0xb9, - 0x38, 0x73, 0x7c, 0x6b, 0xf2, 0xe1, 0x7a, 0xe6, 0x30, 0x9a, 0x7c, 0xac, 0x39, 0x3e, 0x1e, 0x3f, - 0x12, 0x5d, 0x84, 0xf1, 0x25, 0xcb, 0x22, 0x9a, 0xc5, 0x09, 0x4a, 0x72, 0x2a, 0x92, 0x84, 0xeb, - 0x30, 0x02, 0x81, 0xa0, 0xbb, 0x43, 0x43, 0x9f, 0xc0, 0x0b, 0xc3, 0x76, 0x47, 0x68, 0x89, 0xdd, - 0x11, 0xcf, 0xfe, 0x13, 0xb8, 0x74, 0xe0, 0x62, 0xd2, 0x21, 0x17, 0x27, 0x47, 0x38, 0x81, 0x42, - 0x39, 0x74, 0x02, 0x85, 0x18, 0xd5, 0x60, 0x52, 0xc8, 0xaa, 0x66, 0x97, 0xe4, 0xe0, 0xa2, 0xcc, - 0x3f, 0xbe, 0x1d, 0x46, 0xcb, 0x75, 0x19, 0x6b, 0x98, 0x01, 0x6d, 0x43, 0x41, 0x88, 0x36, 0x1c, - 0xba, 0xe8, 0xa9, 0x88, 0xba, 0x1a, 0xe6, 0x64, 0xaa, 0x8c, 0x32, 0x84, 0x9f, 0x5d, 0x81, 0xe3, - 0xd1, 0xd9, 0x2a, 0x2e, 0x5b, 0x4a, 0xfe, 0x2c, 0xbb, 0x0c, 0x37, 0x45, 0x66, 0xa6, 0x38, 0x92, - 0x44, 0xa8, 0x4e, 0x04, 0xd2, 0x91, 0x1f, 0x9c, 0x8e, 0x00, 0xa7, 0xfb, 0xc1, 0xbd, 0x20, 0xf3, - 0x83, 0x93, 0x11, 0xe0, 0xa4, 0x1f, 0xfc, 0x31, 0x28, 0x04, 0xf3, 0x90, 0x1f, 0x3d, 0x11, 0x81, - 0x9e, 0x88, 0x40, 0x47, 0xcf, 0x9d, 0x8a, 0x40, 0xa7, 0x42, 0xe8, 0xda, 0xc0, 0xb9, 0xa7, 0x22, - 0xd0, 0x53, 0x11, 0xe8, 0xe8, 0xb9, 0x51, 0x04, 0x1a, 0xf9, 0xd1, 0x8f, 0xc1, 0x64, 0x28, 0xe5, - 0xf8, 0xe1, 0xe3, 0x11, 0xf0, 0xf1, 0x50, 0x6d, 0x0e, 0xa7, 0x1a, 0x3f, 0x7e, 0x32, 0x02, 0x3f, - 0x19, 0x35, 0x7d, 0xb4, 0xf5, 0x63, 0x11, 0xf0, 0xb1, 0xc8, 0xe9, 0xa3, 0xf1, 0x72, 0x04, 0x5e, - 0xf6, 0xe3, 0xcb, 0x90, 0xf7, 0x67, 0x15, 0x3f, 0x36, 0x13, 0x81, 0xcd, 0x84, 0xfd, 0x1e, 0x48, - 0x29, 0x71, 0x91, 0x9e, 0x1d, 0x70, 0x5c, 0x02, 0x69, 0xe4, 0x48, 0x9d, 0xcd, 0x33, 0x30, 0x13, - 0x95, 0x34, 0x22, 0x38, 0x4e, 0xfb, 0x39, 0x0a, 0x8b, 0x33, 0x81, 0x64, 0x41, 0x71, 0xdd, 0xb6, - 0x9f, 0xf9, 0x79, 0x98, 0x8e, 0x48, 0x1d, 0x11, 0xc4, 0x0f, 0xfa, 0x89, 0x73, 0x8b, 0xb3, 0x01, - 0xe2, 0xc0, 0xbb, 0x82, 0xbf, 0xb5, 0xfa, 0xc1, 0x34, 0x14, 0x78, 0x8a, 0xda, 0xb2, 0xeb, 0xd8, - 0xc6, 0x75, 0xf4, 0x2b, 0x83, 0x3b, 0xac, 0xc5, 0xa8, 0xd4, 0xc6, 0x71, 0x47, 0x68, 0xb4, 0x9e, - 0x1f, 0xd8, 0x68, 0x3d, 0x34, 0xca, 0x04, 0x71, 0xfd, 0x56, 0xb5, 0xaf, 0xdf, 0xba, 0x77, 0x18, - 0xed, 0xa0, 0xb6, 0xab, 0xda, 0xd7, 0x76, 0xc5, 0xd1, 0x44, 0x76, 0x5f, 0x97, 0xfb, 0xbb, 0xaf, - 0xd3, 0xc3, 0x78, 0x06, 0x37, 0x61, 0x97, 0xfb, 0x9b, 0xb0, 0x58, 0xa6, 0xe8, 0x5e, 0xec, 0x72, - 0x7f, 0x2f, 0x36, 0x94, 0x69, 0x70, 0x4b, 0x76, 0xb9, 0xbf, 0x25, 0x8b, 0x65, 0x8a, 0xee, 0xcc, - 0x3e, 0x1e, 0xd1, 0x99, 0xdd, 0x37, 0x8c, 0x6a, 0x58, 0x83, 0xb6, 0x19, 0xd5, 0xa0, 0xdd, 0x3f, - 0xd4, 0xb0, 0xa1, 0x7d, 0xda, 0xc7, 0x23, 0xfa, 0xb4, 0x78, 0xe3, 0x06, 0xb4, 0x6b, 0x9b, 0x51, - 0xed, 0xda, 0x08, 0xc6, 0x0d, 0xea, 0xda, 0x96, 0xc2, 0x5d, 0xdb, 0xfc, 0x30, 0xae, 0xe8, 0xe6, - 0xed, 0x72, 0x7f, 0xf3, 0x76, 0x3a, 0xfe, 0x2c, 0x46, 0xf5, 0x70, 0xcf, 0x0f, 0xec, 0xe1, 0x46, - 0x3a, 0xdc, 0x71, 0xad, 0xdc, 0x73, 0x83, 0x5a, 0xb9, 0x07, 0x47, 0x61, 0x1f, 0xde, 0xd1, 0x3d, - 0x3d, 0xa0, 0xa3, 0x3b, 0x33, 0x0a, 0xf5, 0x47, 0x8d, 0xdd, 0x47, 0x8d, 0xdd, 0x47, 0x8d, 0xdd, - 0x47, 0x8d, 0xdd, 0x2f, 0x47, 0x63, 0x57, 0x4e, 0xbd, 0xf2, 0xa5, 0x13, 0xd2, 0xe9, 0x53, 0x30, - 0xce, 0xa7, 0x46, 0x63, 0x90, 0xd8, 0xa8, 0xc8, 0xc7, 0xe8, 0xdf, 0x25, 0x59, 0xa2, 0x7f, 0x97, - 0xe5, 0xc4, 0xd2, 0xfa, 0x9b, 0x37, 0x4a, 0xc7, 0xbe, 0x73, 0xa3, 0x74, 0xec, 0x7b, 0x37, 0x4a, - 0xc7, 0x7e, 0x78, 0xa3, 0x24, 0xbd, 0x73, 0xa3, 0x24, 0xbd, 0x77, 0xa3, 0x24, 0xfd, 0xe4, 0x46, - 0x49, 0xba, 0x7e, 0x58, 0x92, 0xbe, 0x72, 0x58, 0x92, 0xbe, 0x76, 0x58, 0x92, 0xbe, 0x79, 0x58, - 0x92, 0xbe, 0x75, 0x58, 0x92, 0xde, 0x3c, 0x2c, 0x49, 0xdf, 0x39, 0x2c, 0x49, 0x3f, 0x3c, 0x2c, - 0x49, 0xef, 0x1c, 0x96, 0x8e, 0xbd, 0x77, 0x58, 0x92, 0x7e, 0x72, 0x58, 0x3a, 0x76, 0xfd, 0xdf, - 0x4a, 0xc7, 0x7e, 0x1a, 0x00, 0x00, 0xff, 0xff, 0xdc, 0xc3, 0xa6, 0xc2, 0x6f, 0x44, 0x00, 0x00, + 0x75, 0xd6, 0xf0, 0x21, 0x91, 0x87, 0x14, 0x35, 0x1a, 0xc9, 0x6b, 0x5a, 0xb6, 0xa9, 0x5d, 0xf9, + 0x25, 0xaf, 0x6d, 0xc9, 0x96, 0x77, 0xd7, 0x6b, 0x6e, 0x6c, 0x83, 0x92, 0xb8, 0x5a, 0xd9, 0x7a, + 0x65, 0x28, 0xd9, 0x6b, 0x17, 0xc6, 0x74, 0x34, 0xbc, 0xa4, 0xc6, 0x3b, 0x9c, 0xa1, 0x67, 0x86, + 0xeb, 0x95, 0x7f, 0x14, 0x5b, 0xb8, 0x0f, 0x04, 0x45, 0xdf, 0x05, 0xea, 0xb8, 0x8e, 0xdb, 0x04, + 0x68, 0x9d, 0x26, 0x7d, 0x24, 0x7d, 0xa4, 0x41, 0x7f, 0xe5, 0x4f, 0x5a, 0x03, 0x05, 0x8a, 0xe4, + 0x5f, 0x10, 0x04, 0x86, 0x57, 0x31, 0x50, 0xb7, 0x75, 0x5b, 0x37, 0x31, 0xd0, 0x00, 0xfe, 0x53, + 0xdc, 0xd7, 0x70, 0x66, 0x38, 0xe4, 0x50, 0x06, 0x9c, 0xe4, 0x87, 0x7f, 0x49, 0x73, 0xee, 0xf9, + 0xbe, 0x7b, 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xe6, 0x72, 0xe0, 0x87, 0x67, 0xe1, 0x64, 0xd3, 0xb2, + 0x9a, 0x06, 0x5a, 0x6c, 0xdb, 0x96, 0x6b, 0xed, 0x77, 0x1a, 0x8b, 0x75, 0xe4, 0x68, 0xb6, 0xde, + 0x76, 0x2d, 0x7b, 0x81, 0xc8, 0xa4, 0x09, 0xaa, 0xb1, 0xc0, 0x35, 0xe6, 0x36, 0x61, 0xf2, 0xa2, + 0x6e, 0xa0, 0x55, 0x4f, 0xb1, 0x86, 0x5c, 0xe9, 0x3c, 0xa4, 0x1a, 0xba, 0x81, 0x8a, 0xc2, 0xc9, + 0xe4, 0x7c, 0x6e, 0xe9, 0xce, 0x85, 0x10, 0x68, 0x21, 0x88, 0xd8, 0xc1, 0x62, 0x99, 0x20, 0xe6, + 0xde, 0x4d, 0xc1, 0x54, 0xc4, 0xa8, 0x24, 0x41, 0xca, 0x54, 0x5b, 0x98, 0x51, 0x98, 0xcf, 0xca, + 0xe4, 0x7f, 0xa9, 0x08, 0x63, 0x6d, 0x55, 0xbb, 0xa2, 0x36, 0x51, 0x31, 0x41, 0xc4, 0xfc, 0x51, + 0x2a, 0x01, 0xd4, 0x51, 0x1b, 0x99, 0x75, 0x64, 0x6a, 0x87, 0xc5, 0xe4, 0xc9, 0xe4, 0x7c, 0x56, + 0xf6, 0x49, 0xa4, 0xfb, 0x60, 0xb2, 0xdd, 0xd9, 0x37, 0x74, 0x4d, 0xf1, 0xa9, 0xc1, 0xc9, 0xe4, + 0x7c, 0x5a, 0x16, 0xe9, 0xc0, 0x6a, 0x57, 0xf9, 0x1e, 0x98, 0x78, 0x09, 0xa9, 0x57, 0xfc, 0xaa, + 0x39, 0xa2, 0x5a, 0xc0, 0x62, 0x9f, 0xe2, 0x0a, 0xe4, 0x5b, 0xc8, 0x71, 0xd4, 0x26, 0x52, 0xdc, + 0xc3, 0x36, 0x2a, 0xa6, 0xc8, 0xea, 0x4f, 0xf6, 0xac, 0x3e, 0xbc, 0xf2, 0x1c, 0x43, 0xed, 0x1e, + 0xb6, 0x91, 0x54, 0x81, 0x2c, 0x32, 0x3b, 0x2d, 0xca, 0x90, 0xee, 0xe3, 0xbf, 0xaa, 0xd9, 0x69, + 0x85, 0x59, 0x32, 0x18, 0xc6, 0x28, 0xc6, 0x1c, 0x64, 0x5f, 0xd5, 0x35, 0x54, 0x1c, 0x25, 0x04, + 0xf7, 0xf4, 0x10, 0xd4, 0xe8, 0x78, 0x98, 0x83, 0xe3, 0xa4, 0x15, 0xc8, 0xa2, 0x6b, 0x2e, 0x32, + 0x1d, 0xdd, 0x32, 0x8b, 0x63, 0x84, 0xe4, 0xae, 0x88, 0x5d, 0x44, 0x46, 0x3d, 0x4c, 0xd1, 0xc5, + 0x49, 0xe7, 0x60, 0xcc, 0x6a, 0xbb, 0xba, 0x65, 0x3a, 0xc5, 0xcc, 0x49, 0x61, 0x3e, 0xb7, 0x74, + 0x5b, 0x64, 0x20, 0x6c, 0x53, 0x1d, 0x99, 0x2b, 0x4b, 0xeb, 0x20, 0x3a, 0x56, 0xc7, 0xd6, 0x90, + 0xa2, 0x59, 0x75, 0xa4, 0xe8, 0x66, 0xc3, 0x2a, 0x66, 0x09, 0xc1, 0x6c, 0xef, 0x42, 0x88, 0xe2, + 0x8a, 0x55, 0x47, 0xeb, 0x66, 0xc3, 0x92, 0x0b, 0x4e, 0xe0, 0x59, 0x3a, 0x01, 0xa3, 0xce, 0xa1, + 0xe9, 0xaa, 0xd7, 0x8a, 0x79, 0x12, 0x21, 0xec, 0x69, 0xee, 0xff, 0xd2, 0x30, 0x31, 0x4c, 0x88, + 0x5d, 0x80, 0x74, 0x03, 0xaf, 0xb2, 0x98, 0x38, 0x8e, 0x0f, 0x28, 0x26, 0xe8, 0xc4, 0xd1, 0x8f, + 0xe9, 0xc4, 0x0a, 0xe4, 0x4c, 0xe4, 0xb8, 0xa8, 0x4e, 0x23, 0x22, 0x39, 0x64, 0x4c, 0x01, 0x05, + 0xf5, 0x86, 0x54, 0xea, 0x63, 0x85, 0xd4, 0x65, 0x98, 0xf0, 0x4c, 0x52, 0x6c, 0xd5, 0x6c, 0xf2, + 0xd8, 0x5c, 0x8c, 0xb3, 0x64, 0xa1, 0xca, 0x71, 0x32, 0x86, 0xc9, 0x05, 0x14, 0x78, 0x96, 0x56, + 0x01, 0x2c, 0x13, 0x59, 0x0d, 0xa5, 0x8e, 0x34, 0xa3, 0x98, 0xe9, 0xe3, 0xa5, 0x6d, 0xac, 0xd2, + 0xe3, 0x25, 0x8b, 0x4a, 0x35, 0x43, 0x7a, 0xb4, 0x1b, 0x6a, 0x63, 0x7d, 0x22, 0x65, 0x93, 0x1e, + 0xb2, 0x9e, 0x68, 0xdb, 0x83, 0x82, 0x8d, 0x70, 0xdc, 0xa3, 0x3a, 0x5b, 0x59, 0x96, 0x18, 0xb1, + 0x10, 0xbb, 0x32, 0x99, 0xc1, 0xe8, 0xc2, 0xc6, 0x6d, 0xff, 0xa3, 0x74, 0x07, 0x78, 0x02, 0x85, + 0x84, 0x15, 0x90, 0x2c, 0x94, 0xe7, 0xc2, 0x2d, 0xb5, 0x85, 0x66, 0xce, 0x43, 0x21, 0xe8, 0x1e, + 0x69, 0x1a, 0xd2, 0x8e, 0xab, 0xda, 0x2e, 0x89, 0xc2, 0xb4, 0x4c, 0x1f, 0x24, 0x11, 0x92, 0xc8, + 0xac, 0x93, 0x2c, 0x97, 0x96, 0xf1, 0xbf, 0x33, 0x8f, 0xc0, 0x78, 0x60, 0xfa, 0x61, 0x81, 0x73, + 0xaf, 0x8e, 0xc2, 0x74, 0x54, 0xcc, 0x45, 0x86, 0xff, 0x09, 0x18, 0x35, 0x3b, 0xad, 0x7d, 0x64, + 0x17, 0x93, 0x84, 0x81, 0x3d, 0x49, 0x15, 0x48, 0x1b, 0xea, 0x3e, 0x32, 0x8a, 0xa9, 0x93, 0xc2, + 0x7c, 0x61, 0xe9, 0xbe, 0xa1, 0xa2, 0x7a, 0x61, 0x03, 0x43, 0x64, 0x8a, 0x94, 0x1e, 0x87, 0x14, + 0x4b, 0x71, 0x98, 0xe1, 0xf4, 0x70, 0x0c, 0x38, 0x16, 0x65, 0x82, 0x93, 0x6e, 0x85, 0x2c, 0xfe, + 0x4b, 0x7d, 0x3b, 0x4a, 0x6c, 0xce, 0x60, 0x01, 0xf6, 0xab, 0x34, 0x03, 0x19, 0x12, 0x66, 0x75, + 0xc4, 0x4b, 0x83, 0xf7, 0x8c, 0x37, 0xa6, 0x8e, 0x1a, 0x6a, 0xc7, 0x70, 0x95, 0xab, 0xaa, 0xd1, + 0x41, 0x24, 0x60, 0xb2, 0x72, 0x9e, 0x09, 0x9f, 0xc6, 0x32, 0x69, 0x16, 0x72, 0x34, 0x2a, 0x75, + 0xb3, 0x8e, 0xae, 0x91, 0xec, 0x93, 0x96, 0x69, 0xa0, 0xae, 0x63, 0x09, 0x9e, 0xfe, 0x05, 0xc7, + 0x32, 0xf9, 0xd6, 0x92, 0x29, 0xb0, 0x80, 0x4c, 0xff, 0x48, 0x38, 0xf1, 0xdd, 0x1e, 0xbd, 0xbc, + 0x70, 0x2c, 0xce, 0x7d, 0x23, 0x01, 0x29, 0x72, 0xde, 0x26, 0x20, 0xb7, 0xfb, 0xec, 0x4e, 0x55, + 0x59, 0xdd, 0xde, 0x5b, 0xde, 0xa8, 0x8a, 0x82, 0x54, 0x00, 0x20, 0x82, 0x8b, 0x1b, 0xdb, 0x95, + 0x5d, 0x31, 0xe1, 0x3d, 0xaf, 0x6f, 0xed, 0x9e, 0x3b, 0x23, 0x26, 0x3d, 0xc0, 0x1e, 0x15, 0xa4, + 0xfc, 0x0a, 0x0f, 0x2f, 0x89, 0x69, 0x49, 0x84, 0x3c, 0x25, 0x58, 0xbf, 0x5c, 0x5d, 0x3d, 0x77, + 0x46, 0x1c, 0x0d, 0x4a, 0x1e, 0x5e, 0x12, 0xc7, 0xa4, 0x71, 0xc8, 0x12, 0xc9, 0xf2, 0xf6, 0xf6, + 0x86, 0x98, 0xf1, 0x38, 0x6b, 0xbb, 0xf2, 0xfa, 0xd6, 0x9a, 0x98, 0xf5, 0x38, 0xd7, 0xe4, 0xed, + 0xbd, 0x1d, 0x11, 0x3c, 0x86, 0xcd, 0x6a, 0xad, 0x56, 0x59, 0xab, 0x8a, 0x39, 0x4f, 0x63, 0xf9, + 0xd9, 0xdd, 0x6a, 0x4d, 0xcc, 0x07, 0xcc, 0x7a, 0x78, 0x49, 0x1c, 0xf7, 0xa6, 0xa8, 0x6e, 0xed, + 0x6d, 0x8a, 0x05, 0x69, 0x12, 0xc6, 0xe9, 0x14, 0xdc, 0x88, 0x89, 0x90, 0xe8, 0xdc, 0x19, 0x51, + 0xec, 0x1a, 0x42, 0x59, 0x26, 0x03, 0x82, 0x73, 0x67, 0x44, 0x69, 0x6e, 0x05, 0xd2, 0x24, 0xba, + 0x24, 0x09, 0x0a, 0x1b, 0x95, 0xe5, 0xea, 0x86, 0xb2, 0xbd, 0xb3, 0xbb, 0xbe, 0xbd, 0x55, 0xd9, + 0x10, 0x85, 0xae, 0x4c, 0xae, 0x7e, 0x76, 0x6f, 0x5d, 0xae, 0xae, 0x8a, 0x09, 0xbf, 0x6c, 0xa7, + 0x5a, 0xd9, 0xad, 0xae, 0x8a, 0xc9, 0x39, 0x0d, 0xa6, 0xa3, 0xf2, 0x4c, 0xe4, 0xc9, 0xf0, 0x6d, + 0x71, 0xa2, 0xcf, 0x16, 0x13, 0xae, 0x9e, 0x2d, 0xfe, 0x92, 0x00, 0x53, 0x11, 0xb9, 0x36, 0x72, + 0x92, 0x27, 0x20, 0x4d, 0x43, 0x94, 0x56, 0x9f, 0x7b, 0x23, 0x93, 0x36, 0x09, 0xd8, 0x9e, 0x0a, + 0x44, 0x70, 0xfe, 0x0a, 0x9c, 0xec, 0x53, 0x81, 0x31, 0x45, 0x8f, 0x91, 0xaf, 0x08, 0x50, 0xec, + 0xc7, 0x1d, 0x93, 0x28, 0x12, 0x81, 0x44, 0x71, 0x21, 0x6c, 0xc0, 0xa9, 0xfe, 0x6b, 0xe8, 0xb1, + 0xe2, 0x4d, 0x01, 0x4e, 0x44, 0x37, 0x2a, 0x91, 0x36, 0x3c, 0x0e, 0xa3, 0x2d, 0xe4, 0x1e, 0x58, + 0xbc, 0x58, 0xdf, 0x1d, 0x51, 0x02, 0xf0, 0x70, 0xd8, 0x57, 0x0c, 0xe5, 0xaf, 0x21, 0xc9, 0x7e, + 0xdd, 0x06, 0xb5, 0xa6, 0xc7, 0xd2, 0xcf, 0x25, 0xe0, 0xa6, 0x48, 0xf2, 0x48, 0x43, 0x6f, 0x07, + 0xd0, 0xcd, 0x76, 0xc7, 0xa5, 0x05, 0x99, 0xe6, 0xa7, 0x2c, 0x91, 0x90, 0xb3, 0x8f, 0x73, 0x4f, + 0xc7, 0xf5, 0xc6, 0x93, 0x64, 0x1c, 0xa8, 0x88, 0x28, 0x9c, 0xef, 0x1a, 0x9a, 0x22, 0x86, 0x96, + 0xfa, 0xac, 0xb4, 0xa7, 0xd6, 0x3d, 0x08, 0xa2, 0x66, 0xe8, 0xc8, 0x74, 0x15, 0xc7, 0xb5, 0x91, + 0xda, 0xd2, 0xcd, 0x26, 0x49, 0xc0, 0x99, 0x72, 0xba, 0xa1, 0x1a, 0x0e, 0x92, 0x27, 0xe8, 0x70, + 0x8d, 0x8f, 0x62, 0x04, 0xa9, 0x32, 0xb6, 0x0f, 0x31, 0x1a, 0x40, 0xd0, 0x61, 0x0f, 0x31, 0xf7, + 0xd5, 0x31, 0xc8, 0xf9, 0xda, 0x3a, 0xe9, 0x14, 0xe4, 0x5f, 0x50, 0xaf, 0xaa, 0x0a, 0x6f, 0xd5, + 0xa9, 0x27, 0x72, 0x58, 0xb6, 0xc3, 0xda, 0xf5, 0x07, 0x61, 0x9a, 0xa8, 0x58, 0x1d, 0x17, 0xd9, + 0x8a, 0x66, 0xa8, 0x8e, 0x43, 0x9c, 0x96, 0x21, 0xaa, 0x12, 0x1e, 0xdb, 0xc6, 0x43, 0x2b, 0x7c, + 0x44, 0x3a, 0x0b, 0x53, 0x04, 0xd1, 0xea, 0x18, 0xae, 0xde, 0x36, 0x90, 0x82, 0x5f, 0x1e, 0x1c, + 0x92, 0x88, 0x3d, 0xcb, 0x26, 0xb1, 0xc6, 0x26, 0x53, 0xc0, 0x16, 0x39, 0xd2, 0x2a, 0xdc, 0x4e, + 0x60, 0x4d, 0x64, 0x22, 0x5b, 0x75, 0x91, 0x82, 0x5e, 0xec, 0xa8, 0x86, 0xa3, 0xa8, 0x66, 0x5d, + 0x39, 0x50, 0x9d, 0x83, 0xe2, 0x34, 0x26, 0x58, 0x4e, 0x14, 0x05, 0xf9, 0x16, 0xac, 0xb8, 0xc6, + 0xf4, 0xaa, 0x44, 0xad, 0x62, 0xd6, 0x2f, 0xa9, 0xce, 0x81, 0x54, 0x86, 0x13, 0x84, 0xc5, 0x71, + 0x6d, 0xdd, 0x6c, 0x2a, 0xda, 0x01, 0xd2, 0xae, 0x28, 0x1d, 0xb7, 0x71, 0xbe, 0x78, 0xab, 0x7f, + 0x7e, 0x62, 0x61, 0x8d, 0xe8, 0xac, 0x60, 0x95, 0x3d, 0xb7, 0x71, 0x5e, 0xaa, 0x41, 0x1e, 0x6f, + 0x46, 0x4b, 0x7f, 0x19, 0x29, 0x0d, 0xcb, 0x26, 0x95, 0xa5, 0x10, 0x71, 0xb2, 0x7d, 0x1e, 0x5c, + 0xd8, 0x66, 0x80, 0x4d, 0xab, 0x8e, 0xca, 0xe9, 0xda, 0x4e, 0xb5, 0xba, 0x2a, 0xe7, 0x38, 0xcb, + 0x45, 0xcb, 0xc6, 0x01, 0xd5, 0xb4, 0x3c, 0x07, 0xe7, 0x68, 0x40, 0x35, 0x2d, 0xee, 0xde, 0xb3, + 0x30, 0xa5, 0x69, 0x74, 0xcd, 0xba, 0xa6, 0xb0, 0x16, 0xdf, 0x29, 0x8a, 0x01, 0x67, 0x69, 0xda, + 0x1a, 0x55, 0x60, 0x31, 0xee, 0x48, 0x8f, 0xc2, 0x4d, 0x5d, 0x67, 0xf9, 0x81, 0x93, 0x3d, 0xab, + 0x0c, 0x43, 0xcf, 0xc2, 0x54, 0xfb, 0xb0, 0x17, 0x28, 0x05, 0x66, 0x6c, 0x1f, 0x86, 0x61, 0x77, + 0x91, 0xd7, 0x36, 0x1b, 0x69, 0xaa, 0x8b, 0xea, 0xc5, 0x9b, 0xfd, 0xda, 0xbe, 0x01, 0x69, 0x11, + 0x44, 0x4d, 0x53, 0x90, 0xa9, 0xee, 0x1b, 0x48, 0x51, 0x6d, 0x64, 0xaa, 0x4e, 0x71, 0xd6, 0xaf, + 0x5c, 0xd0, 0xb4, 0x2a, 0x19, 0xad, 0x90, 0x41, 0xe9, 0x34, 0x4c, 0x5a, 0xfb, 0x2f, 0x68, 0x34, + 0xb2, 0x94, 0xb6, 0x8d, 0x1a, 0xfa, 0xb5, 0xe2, 0x9d, 0xc4, 0x4d, 0x13, 0x78, 0x80, 0xc4, 0xd5, + 0x0e, 0x11, 0x4b, 0xf7, 0x82, 0xa8, 0x39, 0x07, 0xaa, 0xdd, 0x26, 0xa5, 0xdd, 0x69, 0xab, 0x1a, + 0x2a, 0xde, 0x45, 0x55, 0xa9, 0x7c, 0x8b, 0x8b, 0x71, 0x64, 0x3b, 0x2f, 0xe9, 0x0d, 0x97, 0x33, + 0xde, 0x43, 0x23, 0x9b, 0xc8, 0x18, 0xdb, 0x65, 0x98, 0xee, 0x98, 0xba, 0xe9, 0x22, 0xbb, 0x6d, + 0x23, 0xdc, 0xc4, 0xd3, 0x93, 0x58, 0xfc, 0xb7, 0xb1, 0x3e, 0x6d, 0xf8, 0x9e, 0x5f, 0x9b, 0x06, + 0x80, 0x3c, 0xd5, 0xe9, 0x15, 0xce, 0x95, 0x21, 0xef, 0x8f, 0x0b, 0x29, 0x0b, 0x34, 0x32, 0x44, + 0x01, 0xd7, 0xd8, 0x95, 0xed, 0x55, 0x5c, 0x1d, 0x9f, 0xab, 0x8a, 0x09, 0x5c, 0xa5, 0x37, 0xd6, + 0x77, 0xab, 0x8a, 0xbc, 0xb7, 0xb5, 0xbb, 0xbe, 0x59, 0x15, 0x93, 0xa7, 0xb3, 0x99, 0xf7, 0xc6, + 0xc4, 0xeb, 0xd7, 0xaf, 0x5f, 0x4f, 0xcc, 0x7d, 0x3b, 0x01, 0x85, 0x60, 0x67, 0x2c, 0x7d, 0x06, + 0x6e, 0xe6, 0xaf, 0xb1, 0x0e, 0x72, 0x95, 0x97, 0x74, 0x9b, 0x84, 0x6a, 0x4b, 0xa5, 0xbd, 0xa5, + 0xe7, 0xe5, 0x69, 0xa6, 0x55, 0x43, 0xee, 0x33, 0xba, 0x8d, 0x03, 0xb1, 0xa5, 0xba, 0xd2, 0x06, + 0xcc, 0x9a, 0x96, 0xe2, 0xb8, 0xaa, 0x59, 0x57, 0xed, 0xba, 0xd2, 0xbd, 0x40, 0x50, 0x54, 0x4d, + 0x43, 0x8e, 0x63, 0xd1, 0x12, 0xe1, 0xb1, 0xdc, 0x66, 0x5a, 0x35, 0xa6, 0xdc, 0xcd, 0x9d, 0x15, + 0xa6, 0x1a, 0x8a, 0x88, 0x64, 0xbf, 0x88, 0xb8, 0x15, 0xb2, 0x2d, 0xb5, 0xad, 0x20, 0xd3, 0xb5, + 0x0f, 0x49, 0x3f, 0x97, 0x91, 0x33, 0x2d, 0xb5, 0x5d, 0xc5, 0xcf, 0x9f, 0xdc, 0x1e, 0xf8, 0xfd, + 0xf8, 0x83, 0x24, 0xe4, 0xfd, 0x3d, 0x1d, 0x6e, 0x91, 0x35, 0x92, 0xbf, 0x05, 0x72, 0xc2, 0xef, + 0x18, 0xd8, 0x01, 0x2e, 0xac, 0xe0, 0xc4, 0x5e, 0x1e, 0xa5, 0x9d, 0x96, 0x4c, 0x91, 0xb8, 0xa8, + 0xe2, 0x33, 0x8d, 0x68, 0xff, 0x9e, 0x91, 0xd9, 0x93, 0xb4, 0x06, 0xa3, 0x2f, 0x38, 0x84, 0x7b, + 0x94, 0x70, 0xdf, 0x39, 0x98, 0xfb, 0xc9, 0x1a, 0x21, 0xcf, 0x3e, 0x59, 0x53, 0xb6, 0xb6, 0xe5, + 0xcd, 0xca, 0x86, 0xcc, 0xe0, 0xd2, 0x2d, 0x90, 0x32, 0xd4, 0x97, 0x0f, 0x83, 0x25, 0x80, 0x88, + 0x86, 0x75, 0xfc, 0x2d, 0x90, 0x7a, 0x09, 0xa9, 0x57, 0x82, 0x89, 0x97, 0x88, 0x3e, 0xc1, 0xd0, + 0x5f, 0x84, 0x34, 0xf1, 0x97, 0x04, 0xc0, 0x3c, 0x26, 0x8e, 0x48, 0x19, 0x48, 0xad, 0x6c, 0xcb, + 0x38, 0xfc, 0x45, 0xc8, 0x53, 0xa9, 0xb2, 0xb3, 0x5e, 0x5d, 0xa9, 0x8a, 0x89, 0xb9, 0xb3, 0x30, + 0x4a, 0x9d, 0x80, 0x8f, 0x86, 0xe7, 0x06, 0x71, 0x84, 0x3d, 0x32, 0x0e, 0x81, 0x8f, 0xee, 0x6d, + 0x2e, 0x57, 0x65, 0x31, 0xe1, 0xdf, 0x5e, 0x07, 0xf2, 0xfe, 0x76, 0xee, 0xa7, 0x13, 0x53, 0xff, + 0x28, 0x40, 0xce, 0xd7, 0x9e, 0xe1, 0xc6, 0x40, 0x35, 0x0c, 0xeb, 0x25, 0x45, 0x35, 0x74, 0xd5, + 0x61, 0x41, 0x01, 0x44, 0x54, 0xc1, 0x92, 0x61, 0x37, 0xed, 0xa7, 0x62, 0xfc, 0x1b, 0x02, 0x88, + 0xe1, 0xd6, 0x2e, 0x64, 0xa0, 0xf0, 0x33, 0x35, 0xf0, 0x75, 0x01, 0x0a, 0xc1, 0x7e, 0x2e, 0x64, + 0xde, 0xa9, 0x9f, 0xa9, 0x79, 0xef, 0x24, 0x60, 0x3c, 0xd0, 0xc5, 0x0d, 0x6b, 0xdd, 0x8b, 0x30, + 0xa9, 0xd7, 0x51, 0xab, 0x6d, 0xb9, 0xc8, 0xd4, 0x0e, 0x15, 0x03, 0x5d, 0x45, 0x46, 0x71, 0x8e, + 0x24, 0x8a, 0xc5, 0xc1, 0x7d, 0xe2, 0xc2, 0x7a, 0x17, 0xb7, 0x81, 0x61, 0xe5, 0xa9, 0xf5, 0xd5, + 0xea, 0xe6, 0xce, 0xf6, 0x6e, 0x75, 0x6b, 0xe5, 0x59, 0x65, 0x6f, 0xeb, 0xa9, 0xad, 0xed, 0x67, + 0xb6, 0x64, 0x51, 0x0f, 0xa9, 0x7d, 0x82, 0x47, 0x7d, 0x07, 0xc4, 0xb0, 0x51, 0xd2, 0xcd, 0x10, + 0x65, 0x96, 0x38, 0x22, 0x4d, 0xc1, 0xc4, 0xd6, 0xb6, 0x52, 0x5b, 0x5f, 0xad, 0x2a, 0xd5, 0x8b, + 0x17, 0xab, 0x2b, 0xbb, 0x35, 0xfa, 0xe2, 0xec, 0x69, 0xef, 0x06, 0x0f, 0xf5, 0x6b, 0x49, 0x98, + 0x8a, 0xb0, 0x44, 0xaa, 0xb0, 0x9e, 0x9d, 0xbe, 0x46, 0x3c, 0x30, 0x8c, 0xf5, 0x0b, 0xb8, 0x2b, + 0xd8, 0x51, 0x6d, 0x97, 0xb5, 0xf8, 0xf7, 0x02, 0xf6, 0x92, 0xe9, 0xea, 0x0d, 0x1d, 0xd9, 0xec, + 0x9e, 0x81, 0x36, 0xf2, 0x13, 0x5d, 0x39, 0xbd, 0x6a, 0xb8, 0x1f, 0xa4, 0xb6, 0xe5, 0xe8, 0xae, + 0x7e, 0x15, 0x29, 0xba, 0xc9, 0x2f, 0x25, 0x70, 0x63, 0x9f, 0x92, 0x45, 0x3e, 0xb2, 0x6e, 0xba, + 0x9e, 0xb6, 0x89, 0x9a, 0x6a, 0x48, 0x1b, 0x27, 0xf0, 0xa4, 0x2c, 0xf2, 0x11, 0x4f, 0xfb, 0x14, + 0xe4, 0xeb, 0x56, 0x07, 0xb7, 0x49, 0x54, 0x0f, 0xd7, 0x0b, 0x41, 0xce, 0x51, 0x99, 0xa7, 0xc2, + 0xfa, 0xd8, 0xee, 0x6d, 0x48, 0x5e, 0xce, 0x51, 0x19, 0x55, 0xb9, 0x07, 0x26, 0xd4, 0x66, 0xd3, + 0xc6, 0xe4, 0x9c, 0x88, 0x76, 0xe6, 0x05, 0x4f, 0x4c, 0x14, 0x67, 0x9e, 0x84, 0x0c, 0xf7, 0x03, + 0x2e, 0xc9, 0xd8, 0x13, 0x4a, 0x9b, 0xde, 0x49, 0x25, 0xe6, 0xb3, 0x72, 0xc6, 0xe4, 0x83, 0xa7, + 0x20, 0xaf, 0x3b, 0x4a, 0xf7, 0x72, 0x34, 0x71, 0x32, 0x31, 0x9f, 0x91, 0x73, 0xba, 0xe3, 0xdd, + 0x86, 0xcd, 0xbd, 0x99, 0x80, 0x42, 0xf0, 0x72, 0x57, 0x5a, 0x85, 0x8c, 0x61, 0x69, 0x2a, 0x09, + 0x2d, 0xfa, 0xcb, 0xc2, 0x7c, 0xcc, 0x7d, 0xf0, 0xc2, 0x06, 0xd3, 0x97, 0x3d, 0xe4, 0xcc, 0xbf, + 0x0a, 0x90, 0xe1, 0x62, 0xe9, 0x04, 0xa4, 0xda, 0xaa, 0x7b, 0x40, 0xe8, 0xd2, 0xcb, 0x09, 0x51, + 0x90, 0xc9, 0x33, 0x96, 0x3b, 0x6d, 0xd5, 0x24, 0x21, 0xc0, 0xe4, 0xf8, 0x19, 0xef, 0xab, 0x81, + 0xd4, 0x3a, 0x69, 0xfb, 0xad, 0x56, 0x0b, 0x99, 0xae, 0xc3, 0xf7, 0x95, 0xc9, 0x57, 0x98, 0x58, + 0xba, 0x0f, 0x26, 0x5d, 0x5b, 0xd5, 0x8d, 0x80, 0x6e, 0x8a, 0xe8, 0x8a, 0x7c, 0xc0, 0x53, 0x2e, + 0xc3, 0x2d, 0x9c, 0xb7, 0x8e, 0x5c, 0x55, 0x3b, 0x40, 0xf5, 0x2e, 0x68, 0x94, 0xdc, 0x1c, 0xde, + 0xcc, 0x14, 0x56, 0xd9, 0x38, 0xc7, 0xce, 0x7d, 0x57, 0x80, 0x49, 0xfe, 0xa2, 0x52, 0xf7, 0x9c, + 0xb5, 0x09, 0xa0, 0x9a, 0xa6, 0xe5, 0xfa, 0xdd, 0xd5, 0x1b, 0xca, 0x3d, 0xb8, 0x85, 0x8a, 0x07, + 0x92, 0x7d, 0x04, 0x33, 0x2d, 0x80, 0xee, 0x48, 0x5f, 0xb7, 0xcd, 0x42, 0x8e, 0xdd, 0xdc, 0x93, + 0x9f, 0x7f, 0xe8, 0xab, 0x2d, 0x50, 0x11, 0x7e, 0xa3, 0x91, 0xa6, 0x21, 0xbd, 0x8f, 0x9a, 0xba, + 0xc9, 0xee, 0x13, 0xe9, 0x03, 0xbf, 0xa5, 0x4c, 0x79, 0xb7, 0x94, 0xcb, 0x97, 0x61, 0x4a, 0xb3, + 0x5a, 0x61, 0x73, 0x97, 0xc5, 0xd0, 0xeb, 0xb5, 0x73, 0x49, 0x78, 0x0e, 0xba, 0x2d, 0xe6, 0x97, + 0x12, 0xc9, 0xb5, 0x9d, 0xe5, 0xaf, 0x24, 0x66, 0xd6, 0x28, 0x6e, 0x87, 0x2f, 0x53, 0x46, 0x0d, + 0x03, 0x69, 0xd8, 0x74, 0xf8, 0xf1, 0xdd, 0xf0, 0x40, 0x53, 0x77, 0x0f, 0x3a, 0xfb, 0x0b, 0x9a, + 0xd5, 0x5a, 0x6c, 0x5a, 0x4d, 0xab, 0xfb, 0x73, 0x17, 0x7e, 0x22, 0x0f, 0xe4, 0x3f, 0xf6, 0x93, + 0x57, 0xd6, 0x93, 0xce, 0xc4, 0xfe, 0x3e, 0x56, 0xde, 0x82, 0x29, 0xa6, 0xac, 0x90, 0x3b, 0x77, + 0xfa, 0x6a, 0x20, 0x0d, 0xbc, 0x77, 0x29, 0x7e, 0xfd, 0x5d, 0x52, 0xab, 0xe5, 0x49, 0x06, 0xc5, + 0x63, 0xf4, 0x05, 0xa2, 0x2c, 0xc3, 0x4d, 0x01, 0x3e, 0x7a, 0x2e, 0x91, 0x1d, 0xc3, 0xf8, 0x6d, + 0xc6, 0x38, 0xe5, 0x63, 0xac, 0x31, 0x68, 0x79, 0x05, 0xc6, 0x8f, 0xc3, 0xf5, 0x4f, 0x8c, 0x2b, + 0x8f, 0xfc, 0x24, 0x6b, 0x30, 0x41, 0x48, 0xb4, 0x8e, 0xe3, 0x5a, 0x2d, 0x92, 0xf4, 0x06, 0xd3, + 0xfc, 0xf3, 0xbb, 0xf4, 0xa0, 0x14, 0x30, 0x6c, 0xc5, 0x43, 0x95, 0xcb, 0x40, 0x7e, 0x66, 0xa8, + 0x23, 0xcd, 0x88, 0x61, 0x78, 0x8b, 0x19, 0xe2, 0xe9, 0x97, 0x9f, 0x86, 0x69, 0xfc, 0x3f, 0xc9, + 0x49, 0x7e, 0x4b, 0xe2, 0x6f, 0x99, 0x8a, 0xdf, 0x7d, 0x85, 0x9e, 0xc5, 0x29, 0x8f, 0xc0, 0x67, + 0x93, 0x6f, 0x17, 0x9b, 0xc8, 0x75, 0x91, 0xed, 0x28, 0xaa, 0x11, 0x65, 0x9e, 0xef, 0x35, 0xbd, + 0xf8, 0xf9, 0xf7, 0x83, 0xbb, 0xb8, 0x46, 0x91, 0x15, 0xc3, 0x28, 0xef, 0xc1, 0xcd, 0x11, 0x51, + 0x31, 0x04, 0xe7, 0x6b, 0x8c, 0x73, 0xba, 0x27, 0x32, 0x30, 0xed, 0x0e, 0x70, 0xb9, 0xb7, 0x97, + 0x43, 0x70, 0xfe, 0x11, 0xe3, 0x94, 0x18, 0x96, 0x6f, 0x29, 0x66, 0x7c, 0x12, 0x26, 0xaf, 0x22, + 0x7b, 0xdf, 0x72, 0xd8, 0xd5, 0xc8, 0x10, 0x74, 0xaf, 0x33, 0xba, 0x09, 0x06, 0x24, 0x77, 0x25, + 0x98, 0xeb, 0x51, 0xc8, 0x34, 0x54, 0x0d, 0x0d, 0x41, 0xf1, 0x05, 0x46, 0x31, 0x86, 0xf5, 0x31, + 0xb4, 0x02, 0xf9, 0xa6, 0xc5, 0xca, 0x52, 0x3c, 0xfc, 0x0d, 0x06, 0xcf, 0x71, 0x0c, 0xa3, 0x68, + 0x5b, 0xed, 0x8e, 0x81, 0x6b, 0x56, 0x3c, 0xc5, 0x1f, 0x73, 0x0a, 0x8e, 0x61, 0x14, 0xc7, 0x70, + 0xeb, 0x9f, 0x70, 0x0a, 0xc7, 0xe7, 0xcf, 0x27, 0x20, 0x67, 0x99, 0xc6, 0xa1, 0x65, 0x0e, 0x63, + 0xc4, 0x17, 0x19, 0x03, 0x30, 0x08, 0x26, 0xb8, 0x00, 0xd9, 0x61, 0x37, 0xe2, 0x4f, 0xdf, 0xe7, + 0xc7, 0x83, 0xef, 0xc0, 0x1a, 0x4c, 0xf0, 0x04, 0xa5, 0x5b, 0xe6, 0x10, 0x14, 0x7f, 0xc6, 0x28, + 0x0a, 0x3e, 0x18, 0x5b, 0x86, 0x8b, 0x1c, 0xb7, 0x89, 0x86, 0x21, 0x79, 0x93, 0x2f, 0x83, 0x41, + 0x98, 0x2b, 0xf7, 0x91, 0xa9, 0x1d, 0x0c, 0xc7, 0xf0, 0x65, 0xee, 0x4a, 0x8e, 0xc1, 0x14, 0x2b, + 0x30, 0xde, 0x52, 0x6d, 0xe7, 0x40, 0x35, 0x86, 0xda, 0x8e, 0x3f, 0x67, 0x1c, 0x79, 0x0f, 0xc4, + 0x3c, 0xd2, 0x31, 0x8f, 0x43, 0xf3, 0x15, 0xee, 0x11, 0x1f, 0x8c, 0x1d, 0x3d, 0xc7, 0x25, 0x17, + 0x50, 0xc7, 0x61, 0xfb, 0x2a, 0x3f, 0x7a, 0x14, 0xbb, 0xe9, 0x67, 0xbc, 0x00, 0x59, 0x47, 0x7f, + 0x79, 0x28, 0x9a, 0xbf, 0xe0, 0x3b, 0x4d, 0x00, 0x18, 0xfc, 0x2c, 0xdc, 0x12, 0x59, 0x26, 0x86, + 0x20, 0xfb, 0x4b, 0x46, 0x76, 0x22, 0xa2, 0x54, 0xb0, 0x94, 0x70, 0x5c, 0xca, 0xbf, 0xe2, 0x29, + 0x01, 0x85, 0xb8, 0x76, 0xf0, 0x8b, 0x82, 0xa3, 0x36, 0x8e, 0xe7, 0xb5, 0xbf, 0xe6, 0x5e, 0xa3, + 0xd8, 0x80, 0xd7, 0x76, 0xe1, 0x04, 0x63, 0x3c, 0xde, 0xbe, 0x7e, 0x8d, 0x27, 0x56, 0x8a, 0xde, + 0x0b, 0xee, 0xee, 0x2f, 0xc0, 0x8c, 0xe7, 0x4e, 0xde, 0x91, 0x3a, 0x4a, 0x4b, 0x6d, 0x0f, 0xc1, + 0xfc, 0x75, 0xc6, 0xcc, 0x33, 0xbe, 0xd7, 0xd2, 0x3a, 0x9b, 0x6a, 0x1b, 0x93, 0x5f, 0x86, 0x22, + 0x27, 0xef, 0x98, 0x36, 0xd2, 0xac, 0xa6, 0xa9, 0xbf, 0x8c, 0xea, 0x43, 0x50, 0xff, 0x4d, 0x68, + 0xab, 0xf6, 0x7c, 0x70, 0xcc, 0xbc, 0x0e, 0xa2, 0xd7, 0xab, 0x28, 0x7a, 0xab, 0x6d, 0xd9, 0x6e, + 0x0c, 0xe3, 0xdf, 0xf2, 0x9d, 0xf2, 0x70, 0xeb, 0x04, 0x56, 0xae, 0x42, 0x81, 0x3c, 0x0e, 0x1b, + 0x92, 0x7f, 0xc7, 0x88, 0xc6, 0xbb, 0x28, 0x96, 0x38, 0x34, 0xab, 0xd5, 0x56, 0xed, 0x61, 0xf2, + 0xdf, 0xdf, 0xf3, 0xc4, 0xc1, 0x20, 0x2c, 0x71, 0xb8, 0x87, 0x6d, 0x84, 0xab, 0xfd, 0x10, 0x0c, + 0xdf, 0xe0, 0x89, 0x83, 0x63, 0x18, 0x05, 0x6f, 0x18, 0x86, 0xa0, 0xf8, 0x07, 0x4e, 0xc1, 0x31, + 0x98, 0xe2, 0xb3, 0xdd, 0x42, 0x6b, 0xa3, 0xa6, 0xee, 0xb8, 0x36, 0xed, 0x83, 0x07, 0x53, 0x7d, + 0xf3, 0xfd, 0x60, 0x13, 0x26, 0xfb, 0xa0, 0xe5, 0x27, 0x61, 0x22, 0xd4, 0x62, 0x48, 0x71, 0xdf, + 0x2c, 0x14, 0x7f, 0xf9, 0x43, 0x96, 0x8c, 0x82, 0x1d, 0x46, 0x79, 0x03, 0xef, 0x7b, 0xb0, 0x0f, + 0x88, 0x27, 0x7b, 0xe5, 0x43, 0x6f, 0xeb, 0x03, 0x6d, 0x40, 0xf9, 0x22, 0x8c, 0x07, 0x7a, 0x80, + 0x78, 0xaa, 0x5f, 0x61, 0x54, 0x79, 0x7f, 0x0b, 0x50, 0x3e, 0x0b, 0x29, 0x5c, 0xcf, 0xe3, 0xe1, + 0xbf, 0xca, 0xe0, 0x44, 0xbd, 0xfc, 0x18, 0x64, 0x78, 0x1d, 0x8f, 0x87, 0xfe, 0x1a, 0x83, 0x7a, + 0x10, 0x0c, 0xe7, 0x35, 0x3c, 0x1e, 0xfe, 0xeb, 0x1c, 0xce, 0x21, 0x18, 0x3e, 0xbc, 0x0b, 0xbf, + 0xf5, 0x1b, 0x29, 0x96, 0x87, 0xb9, 0xef, 0x2e, 0xc0, 0x18, 0x2b, 0xde, 0xf1, 0xe8, 0xcf, 0xb1, + 0xc9, 0x39, 0xa2, 0xfc, 0x08, 0xa4, 0x87, 0x74, 0xf8, 0x6f, 0x32, 0x28, 0xd5, 0x2f, 0xaf, 0x40, + 0xce, 0x57, 0xb0, 0xe3, 0xe1, 0xbf, 0xc5, 0xe0, 0x7e, 0x14, 0x36, 0x9d, 0x15, 0xec, 0x78, 0x82, + 0xdf, 0xe6, 0xa6, 0x33, 0x04, 0x76, 0x1b, 0xaf, 0xd5, 0xf1, 0xe8, 0xdf, 0xe1, 0x5e, 0xe7, 0x90, + 0xf2, 0x13, 0x90, 0xf5, 0xf2, 0x6f, 0x3c, 0xfe, 0x77, 0x19, 0xbe, 0x8b, 0xc1, 0x1e, 0xf0, 0xe5, + 0xff, 0x78, 0x8a, 0xdf, 0xe3, 0x1e, 0xf0, 0xa1, 0xf0, 0x31, 0x0a, 0xd7, 0xf4, 0x78, 0xa6, 0xdf, + 0xe7, 0xc7, 0x28, 0x54, 0xd2, 0xf1, 0x6e, 0x92, 0x34, 0x18, 0x4f, 0xf1, 0x07, 0x7c, 0x37, 0x89, + 0x3e, 0x36, 0x23, 0x5c, 0x24, 0xe3, 0x39, 0xfe, 0x90, 0x9b, 0x11, 0xaa, 0x91, 0xe5, 0x1d, 0x90, + 0x7a, 0x0b, 0x64, 0x3c, 0xdf, 0xab, 0x8c, 0x6f, 0xb2, 0xa7, 0x3e, 0x96, 0x9f, 0x81, 0x13, 0xd1, + 0xc5, 0x31, 0x9e, 0xf5, 0xf3, 0x1f, 0x86, 0x5e, 0x67, 0xfc, 0xb5, 0xb1, 0xbc, 0xdb, 0xcd, 0xb2, + 0xfe, 0xc2, 0x18, 0x4f, 0xfb, 0xda, 0x87, 0xc1, 0x44, 0xeb, 0xaf, 0x8b, 0xe5, 0x0a, 0x40, 0xb7, + 0x26, 0xc5, 0x73, 0xbd, 0xce, 0xb8, 0x7c, 0x20, 0x7c, 0x34, 0x58, 0x49, 0x8a, 0xc7, 0x7f, 0x81, + 0x1f, 0x0d, 0x86, 0xc0, 0x47, 0x83, 0x57, 0xa3, 0x78, 0xf4, 0x1b, 0xfc, 0x68, 0x70, 0x48, 0xf9, + 0x02, 0x64, 0xcc, 0x8e, 0x61, 0xe0, 0xd8, 0x92, 0x06, 0x7f, 0x46, 0x54, 0xfc, 0xf7, 0x8f, 0x18, + 0x98, 0x03, 0xca, 0x67, 0x21, 0x8d, 0x5a, 0xfb, 0xa8, 0x1e, 0x87, 0xfc, 0x8f, 0x8f, 0x78, 0x3e, + 0xc1, 0xda, 0xe5, 0x27, 0x00, 0xe8, 0xcb, 0x34, 0xf9, 0x95, 0x28, 0x06, 0xfb, 0x9f, 0x1f, 0xb1, + 0x2f, 0x14, 0xba, 0x90, 0x2e, 0x01, 0xfd, 0xde, 0x61, 0x30, 0xc1, 0xfb, 0x41, 0x02, 0xf2, 0x02, + 0xfe, 0x28, 0x8c, 0xbd, 0xe0, 0x58, 0xa6, 0xab, 0x36, 0xe3, 0xd0, 0xff, 0xc5, 0xd0, 0x5c, 0x1f, + 0x3b, 0xac, 0x65, 0xd9, 0xc8, 0x55, 0x9b, 0x4e, 0x1c, 0xf6, 0xbf, 0x19, 0xd6, 0x03, 0x60, 0xb0, + 0xa6, 0x3a, 0xee, 0x30, 0xeb, 0xfe, 0x1f, 0x0e, 0xe6, 0x00, 0x6c, 0x34, 0xfe, 0xff, 0x0a, 0x3a, + 0x8c, 0xc3, 0x7e, 0xc0, 0x8d, 0x66, 0xfa, 0xe5, 0xc7, 0x20, 0x8b, 0xff, 0xa5, 0x5f, 0xed, 0xc4, + 0x80, 0xff, 0x97, 0x81, 0xbb, 0x08, 0x3c, 0xb3, 0xe3, 0xd6, 0x5d, 0x3d, 0xde, 0xd9, 0x3f, 0x62, + 0x3b, 0xcd, 0xf5, 0xcb, 0x15, 0xc8, 0x39, 0x6e, 0xbd, 0xde, 0x61, 0x1d, 0x4d, 0x0c, 0xfc, 0xc7, + 0x1f, 0x79, 0x2f, 0xb9, 0x1e, 0x66, 0xf9, 0x54, 0xf4, 0x65, 0x1d, 0xac, 0x59, 0x6b, 0x16, 0xbd, + 0xa6, 0x83, 0x1f, 0x3d, 0x00, 0xb7, 0x69, 0x56, 0x6b, 0xdf, 0x72, 0x16, 0xf7, 0x2d, 0xf7, 0x60, + 0xb1, 0xa5, 0xb6, 0x1d, 0xa2, 0xb8, 0xc4, 0x2e, 0xd9, 0x72, 0xec, 0x09, 0x0f, 0xcc, 0x1c, 0xef, + 0x82, 0x6e, 0xee, 0x76, 0x18, 0xbf, 0x68, 0x58, 0xaa, 0xab, 0x9b, 0xcd, 0x1d, 0x4b, 0x37, 0x5d, + 0x29, 0x0f, 0x42, 0x83, 0xfc, 0xba, 0x24, 0xc8, 0x42, 0x63, 0xee, 0x5f, 0xd2, 0x90, 0xa5, 0x77, + 0x3b, 0x9b, 0x6a, 0x5b, 0xfa, 0x25, 0xc8, 0x6f, 0xb1, 0xe3, 0xf1, 0xd0, 0xd2, 0x79, 0xc7, 0xbb, + 0x48, 0xf6, 0xcd, 0xbf, 0xe0, 0x69, 0x2f, 0xf8, 0x55, 0xc9, 0xaf, 0xc9, 0xcb, 0x0f, 0x7e, 0xff, + 0xed, 0xd9, 0xfb, 0xfb, 0xda, 0x87, 0xeb, 0xe1, 0x22, 0x8d, 0xe3, 0x85, 0x3d, 0xdd, 0x74, 0x1f, + 0x5a, 0x3a, 0x2f, 0x07, 0xe6, 0x93, 0xae, 0x42, 0x86, 0x0d, 0x38, 0xec, 0x07, 0x86, 0x3b, 0xfb, + 0xcc, 0xcd, 0xd5, 0xe8, 0xbc, 0x67, 0xde, 0x7a, 0x7b, 0x76, 0xe4, 0xd8, 0x73, 0x7b, 0x73, 0x49, + 0x2f, 0x42, 0x8e, 0xdb, 0xb1, 0x5e, 0x77, 0xd8, 0x77, 0xc4, 0xf7, 0xc4, 0x2c, 0x7b, 0xbd, 0xce, + 0x66, 0xbf, 0xfb, 0xfb, 0x6f, 0xcf, 0xce, 0x0d, 0x9c, 0x79, 0x61, 0xaf, 0xa3, 0xd7, 0x65, 0xff, + 0x1c, 0xd2, 0xf3, 0x90, 0xc4, 0x53, 0xd1, 0x2f, 0x8e, 0x67, 0xfb, 0x4c, 0xe5, 0x4d, 0x71, 0x9a, + 0x2d, 0x70, 0x98, 0x69, 0x30, 0xef, 0xcc, 0x13, 0x30, 0xd9, 0xb3, 0x3d, 0x92, 0x08, 0xc9, 0x2b, + 0xe8, 0x90, 0x7d, 0x64, 0x84, 0xff, 0x95, 0xa6, 0xbb, 0x1f, 0xd1, 0x09, 0xf3, 0x79, 0xf6, 0x65, + 0x5c, 0x39, 0x71, 0x5e, 0x98, 0xb9, 0x00, 0xe3, 0x01, 0x1f, 0x1f, 0x0b, 0xfc, 0x38, 0x88, 0x61, + 0x2f, 0x1d, 0x0b, 0x7f, 0x0e, 0x32, 0x1f, 0x07, 0x37, 0xf7, 0x3d, 0x09, 0xc6, 0x2a, 0x86, 0xb1, + 0xa9, 0xb6, 0x1d, 0xe9, 0x59, 0x98, 0xa4, 0x5d, 0xfb, 0xae, 0xb5, 0x4a, 0x7e, 0xd2, 0xd9, 0x54, + 0xdb, 0x2c, 0xa0, 0xef, 0x0b, 0xb8, 0x9b, 0x01, 0x16, 0x7a, 0xb4, 0xc9, 0xfc, 0x72, 0x2f, 0x8b, + 0xf4, 0x34, 0x88, 0x5c, 0x48, 0xce, 0x16, 0x66, 0xa6, 0xe1, 0x7a, 0x7a, 0x20, 0x33, 0x57, 0xa6, + 0xc4, 0x3d, 0x1c, 0xd2, 0xe3, 0x90, 0x59, 0x37, 0xdd, 0x87, 0x97, 0x30, 0x1f, 0x8d, 0xc1, 0xb9, + 0x48, 0x3e, 0xae, 0x44, 0x79, 0x3c, 0x0c, 0xc3, 0x9f, 0x3b, 0x83, 0xf1, 0xa9, 0xc1, 0x78, 0xa2, + 0xd4, 0xc5, 0x93, 0x47, 0xa9, 0x02, 0x59, 0xbc, 0xe7, 0xd4, 0x00, 0xfa, 0x09, 0xfb, 0x1d, 0x91, + 0x04, 0x9e, 0x16, 0x65, 0xe8, 0xa2, 0x38, 0x05, 0xb5, 0x61, 0x34, 0x86, 0xc2, 0x67, 0x44, 0x17, + 0x85, 0x29, 0x6a, 0x9e, 0x15, 0x63, 0x03, 0x28, 0x6a, 0x21, 0x2b, 0x6a, 0x7e, 0x2b, 0x6a, 0x9e, + 0x15, 0x99, 0x18, 0x0a, 0xbf, 0x15, 0xde, 0xb3, 0xb4, 0x0a, 0x70, 0x51, 0xbf, 0x86, 0xea, 0xd4, + 0x8c, 0x6c, 0x44, 0x32, 0xe2, 0x1c, 0x5d, 0x35, 0x4a, 0xe2, 0xc3, 0x49, 0x6b, 0x90, 0xab, 0x35, + 0xba, 0x34, 0xc0, 0xbe, 0xe0, 0x8f, 0x34, 0xa5, 0x11, 0xe2, 0xf1, 0x23, 0x3d, 0x73, 0xe8, 0x92, + 0x72, 0x71, 0xe6, 0xf8, 0xd6, 0xe4, 0xc3, 0x75, 0xcd, 0xa1, 0x34, 0xf9, 0x58, 0x73, 0x7c, 0x3c, + 0x7e, 0xa4, 0x74, 0x01, 0xc6, 0x96, 0x2d, 0x0b, 0x6b, 0x16, 0xc7, 0x09, 0xc9, 0xa9, 0x48, 0x12, + 0xa6, 0x43, 0x09, 0x38, 0x82, 0xec, 0x0e, 0x09, 0x7d, 0x0c, 0x2f, 0x0c, 0xda, 0x1d, 0xae, 0xc5, + 0x77, 0x87, 0x3f, 0xfb, 0x4f, 0xe0, 0xf2, 0xa1, 0x8b, 0x70, 0x87, 0x5c, 0x9c, 0x18, 0xe2, 0x04, + 0x72, 0xe5, 0xd0, 0x09, 0xe4, 0x62, 0xa9, 0x06, 0x13, 0x5c, 0x56, 0x35, 0x3b, 0x38, 0x07, 0x17, + 0x45, 0xf6, 0x79, 0xf1, 0x20, 0x5a, 0xa6, 0x4b, 0x59, 0xc3, 0x0c, 0xd2, 0x0e, 0x14, 0xb8, 0x68, + 0xd3, 0x21, 0x8b, 0x9e, 0x8c, 0xa8, 0xab, 0x61, 0x4e, 0xaa, 0x4a, 0x29, 0x43, 0xf8, 0x99, 0x55, + 0x38, 0x11, 0x9d, 0xad, 0xe2, 0xb2, 0xa5, 0xe0, 0xcf, 0xb2, 0x2b, 0x70, 0x53, 0x64, 0x66, 0x8a, + 0x23, 0x49, 0x84, 0xea, 0x44, 0x20, 0x1d, 0xf9, 0xc1, 0xe9, 0x08, 0x70, 0xba, 0x17, 0xdc, 0x0d, + 0x32, 0x3f, 0x38, 0x19, 0x01, 0x4e, 0xfa, 0xc1, 0x9f, 0x81, 0x42, 0x30, 0x0f, 0xf9, 0xd1, 0xe3, + 0x11, 0xe8, 0xf1, 0x08, 0x74, 0xf4, 0xdc, 0xa9, 0x08, 0x74, 0x2a, 0x84, 0xae, 0xf5, 0x9d, 0x7b, + 0x32, 0x02, 0x3d, 0x19, 0x81, 0x8e, 0x9e, 0x5b, 0x8a, 0x40, 0x4b, 0x7e, 0xf4, 0x63, 0x30, 0x11, + 0x4a, 0x39, 0x7e, 0xf8, 0x58, 0x04, 0x7c, 0x2c, 0x54, 0x9b, 0xc3, 0xa9, 0xc6, 0x8f, 0x9f, 0x88, + 0xc0, 0x4f, 0x44, 0x4d, 0x1f, 0x6d, 0xfd, 0x68, 0x04, 0x7c, 0x34, 0x72, 0xfa, 0x68, 0xbc, 0x18, + 0x81, 0x17, 0xfd, 0xf8, 0x32, 0xe4, 0xfd, 0x59, 0xc5, 0x8f, 0xcd, 0x44, 0x60, 0x33, 0x61, 0xbf, + 0x07, 0x52, 0x4a, 0x5c, 0xa4, 0x67, 0xfb, 0x1c, 0x97, 0x40, 0x1a, 0x39, 0x56, 0x67, 0x73, 0x19, + 0xa6, 0xa3, 0x92, 0x46, 0x04, 0xc7, 0x69, 0x3f, 0x47, 0x61, 0x69, 0x3a, 0x90, 0x2c, 0x08, 0xae, + 0xd3, 0xf2, 0x33, 0x3f, 0x0f, 0x53, 0x11, 0xa9, 0x23, 0x82, 0xf8, 0x41, 0x3f, 0x71, 0x6e, 0x69, + 0x26, 0x40, 0x1c, 0x78, 0x57, 0xf0, 0xb7, 0x56, 0x3f, 0x98, 0x82, 0x02, 0x4b, 0x51, 0xdb, 0x76, + 0x1d, 0xd9, 0xa8, 0x2e, 0xfd, 0x62, 0xff, 0x0e, 0x6b, 0x29, 0x2a, 0xb5, 0x31, 0xdc, 0x31, 0x1a, + 0xad, 0xe7, 0xfb, 0x36, 0x5a, 0x0f, 0x0d, 0x33, 0x41, 0x5c, 0xbf, 0x55, 0xed, 0xe9, 0xb7, 0xee, + 0x1d, 0x44, 0xdb, 0xaf, 0xed, 0xaa, 0xf6, 0xb4, 0x5d, 0x71, 0x34, 0x91, 0xdd, 0xd7, 0xa5, 0xde, + 0xee, 0xeb, 0xf4, 0x20, 0x9e, 0xfe, 0x4d, 0xd8, 0xa5, 0xde, 0x26, 0x2c, 0x96, 0x29, 0xba, 0x17, + 0xbb, 0xd4, 0xdb, 0x8b, 0x0d, 0x64, 0xea, 0xdf, 0x92, 0x5d, 0xea, 0x6d, 0xc9, 0x62, 0x99, 0xa2, + 0x3b, 0xb3, 0xa7, 0x22, 0x3a, 0xb3, 0xfb, 0x06, 0x51, 0x0d, 0x6a, 0xd0, 0xb6, 0xa2, 0x1a, 0xb4, + 0xfb, 0x07, 0x1a, 0x36, 0xb0, 0x4f, 0x7b, 0x2a, 0xa2, 0x4f, 0x8b, 0x37, 0xae, 0x4f, 0xbb, 0xb6, + 0x15, 0xd5, 0xae, 0x0d, 0x61, 0x5c, 0xbf, 0xae, 0x6d, 0x39, 0xdc, 0xb5, 0xcd, 0x0f, 0xe2, 0x8a, + 0x6e, 0xde, 0x2e, 0xf5, 0x36, 0x6f, 0xa7, 0xe3, 0xcf, 0x62, 0x54, 0x0f, 0xf7, 0x7c, 0xdf, 0x1e, + 0x6e, 0xa8, 0xc3, 0x1d, 0xd7, 0xca, 0x3d, 0xd7, 0xaf, 0x95, 0x7b, 0x70, 0x18, 0xf6, 0xc1, 0x1d, + 0xdd, 0x33, 0x7d, 0x3a, 0xba, 0xc5, 0x61, 0xa8, 0x3f, 0x6d, 0xec, 0x3e, 0x6d, 0xec, 0x3e, 0x6d, + 0xec, 0x3e, 0x6d, 0xec, 0x7e, 0x3e, 0x1a, 0xbb, 0x72, 0xea, 0xd5, 0x2f, 0xce, 0x0a, 0xa7, 0x4f, + 0xc1, 0x18, 0x9b, 0x5a, 0x1a, 0x85, 0xc4, 0x66, 0x45, 0x1c, 0x21, 0x7f, 0x97, 0x45, 0x81, 0xfc, + 0x5d, 0x11, 0x13, 0xcb, 0x1b, 0x6f, 0xdd, 0x28, 0x8d, 0x7c, 0xe7, 0x46, 0x69, 0xe4, 0x7b, 0x37, + 0x4a, 0x23, 0xef, 0xdc, 0x28, 0x09, 0xef, 0xdd, 0x28, 0x09, 0x1f, 0xdc, 0x28, 0x09, 0x3f, 0xb9, + 0x51, 0x12, 0xae, 0x1f, 0x95, 0x84, 0x2f, 0x1f, 0x95, 0x84, 0xaf, 0x1d, 0x95, 0x84, 0x6f, 0x1e, + 0x95, 0x84, 0x6f, 0x1d, 0x95, 0x84, 0xb7, 0x8e, 0x4a, 0xc2, 0x77, 0x8e, 0x4a, 0xc2, 0x3b, 0x47, + 0x25, 0xe1, 0xbd, 0xa3, 0xd2, 0xc8, 0x07, 0x47, 0x25, 0xe1, 0x27, 0x47, 0xa5, 0x91, 0xeb, 0x3f, + 0x2c, 0x8d, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, 0xa4, 0xc6, 0x17, 0x51, 0x45, 0x00, + 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/marshaler/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/marshaler/mapsproto2.pb.go index 82a476383..be3e7569c 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/marshaler/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/marshaler/mapsproto2.pb.go @@ -177,286 +177,293 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4465 bytes of a gzipped FileDescriptorSet + // 4577 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x98, 0xbb, 0x2b, - 0xbf, 0xe4, 0xb5, 0xad, 0xb5, 0xe5, 0xdd, 0xf5, 0x9a, 0x1b, 0xdb, 0xa0, 0x24, 0xae, 0x56, 0x8e, - 0x5e, 0x19, 0x4a, 0x7e, 0x05, 0xc6, 0xfc, 0x47, 0xc3, 0x4b, 0x6a, 0xbc, 0xe4, 0x0c, 0x33, 0x33, - 0x5c, 0x5b, 0xfe, 0xf0, 0xc7, 0x06, 0xee, 0x03, 0x41, 0xd0, 0x77, 0x81, 0x3a, 0x8e, 0xe3, 0x26, - 0x01, 0x5a, 0xa7, 0xe9, 0x2b, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, 0x24, - 0xdf, 0x82, 0x20, 0x30, 0xb2, 0xaa, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0x04, 0xf0, 0x97, - 0xe2, 0xbe, 0x86, 0x33, 0xc3, 0x21, 0x87, 0x32, 0x90, 0xc7, 0x07, 0x7f, 0x92, 0xe6, 0xdc, 0xf3, - 0xfb, 0xdd, 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0x33, 0x97, 0x03, 0x9f, 0x39, 0x07, 0xa7, 0x9a, 0x96, - 0xd5, 0x6c, 0xe1, 0xb3, 0x1d, 0xdb, 0x72, 0xad, 0xfd, 0x6e, 0xe3, 0x6c, 0x1d, 0x3b, 0xba, 0x6d, - 0x74, 0x5c, 0xcb, 0x5e, 0xa4, 0x32, 0x34, 0xc5, 0x34, 0x16, 0x85, 0xc6, 0xfc, 0x26, 0x4c, 0x5f, - 0x36, 0x5a, 0x78, 0xd5, 0x53, 0xac, 0x61, 0x17, 0x5d, 0x84, 0x54, 0xc3, 0x68, 0xe1, 0xa2, 0x74, - 0x2a, 0xb9, 0x90, 0x5b, 0xba, 0x63, 0x31, 0x04, 0x5a, 0x0c, 0x22, 0x76, 0x88, 0x58, 0xa1, 0x88, - 0xf9, 0xb7, 0x53, 0x30, 0x13, 0x31, 0x8a, 0x10, 0xa4, 0x4c, 0xad, 0x4d, 0x18, 0xa5, 0x85, 0xac, - 0x42, 0xff, 0x47, 0x45, 0x98, 0xe8, 0x68, 0xfa, 0x55, 0xad, 0x89, 0x8b, 0x09, 0x2a, 0x16, 0x8f, - 0xa8, 0x04, 0x50, 0xc7, 0x1d, 0x6c, 0xd6, 0xb1, 0xa9, 0x1f, 0x16, 0x93, 0xa7, 0x92, 0x0b, 0x59, - 0xc5, 0x27, 0x41, 0xf7, 0xc2, 0x74, 0xa7, 0xbb, 0xdf, 0x32, 0x74, 0xd5, 0xa7, 0x06, 0xa7, 0x92, - 0x0b, 0x69, 0x45, 0x66, 0x03, 0xab, 0x3d, 0xe5, 0xbb, 0x61, 0xea, 0x05, 0xac, 0x5d, 0xf5, 0xab, - 0xe6, 0xa8, 0x6a, 0x81, 0x88, 0x7d, 0x8a, 0x2b, 0x90, 0x6f, 0x63, 0xc7, 0xd1, 0x9a, 0x58, 0x75, - 0x0f, 0x3b, 0xb8, 0x98, 0xa2, 0xab, 0x3f, 0xd5, 0xb7, 0xfa, 0xf0, 0xca, 0x73, 0x1c, 0xb5, 0x7b, - 0xd8, 0xc1, 0xa8, 0x02, 0x59, 0x6c, 0x76, 0xdb, 0x8c, 0x21, 0x3d, 0xc0, 0x7f, 0x55, 0xb3, 0xdb, - 0x0e, 0xb3, 0x64, 0x08, 0x8c, 0x53, 0x4c, 0x38, 0xd8, 0xbe, 0x66, 0xe8, 0xb8, 0x38, 0x4e, 0x09, - 0xee, 0xee, 0x23, 0xa8, 0xb1, 0xf1, 0x30, 0x87, 0xc0, 0xa1, 0x15, 0xc8, 0xe2, 0x17, 0x5d, 0x6c, - 0x3a, 0x86, 0x65, 0x16, 0x27, 0x28, 0xc9, 0x9d, 0x11, 0xbb, 0x88, 0x5b, 0xf5, 0x30, 0x45, 0x0f, - 0x87, 0x2e, 0xc0, 0x84, 0xd5, 0x71, 0x0d, 0xcb, 0x74, 0x8a, 0x99, 0x53, 0xd2, 0x42, 0x6e, 0xe9, - 0x63, 0x91, 0x81, 0xb0, 0xcd, 0x74, 0x14, 0xa1, 0x8c, 0xd6, 0x41, 0x76, 0xac, 0xae, 0xad, 0x63, - 0x55, 0xb7, 0xea, 0x58, 0x35, 0xcc, 0x86, 0x55, 0xcc, 0x52, 0x82, 0x93, 0xfd, 0x0b, 0xa1, 0x8a, - 0x2b, 0x56, 0x1d, 0xaf, 0x9b, 0x0d, 0x4b, 0x29, 0x38, 0x81, 0x67, 0x74, 0x02, 0xc6, 0x9d, 0x43, - 0xd3, 0xd5, 0x5e, 0x2c, 0xe6, 0x69, 0x84, 0xf0, 0xa7, 0xf9, 0x9f, 0xa4, 0x61, 0x6a, 0x94, 0x10, - 0xbb, 0x04, 0xe9, 0x06, 0x59, 0x65, 0x31, 0x71, 0x1c, 0x1f, 0x30, 0x4c, 0xd0, 0x89, 0xe3, 0x1f, - 0xd2, 0x89, 0x15, 0xc8, 0x99, 0xd8, 0x71, 0x71, 0x9d, 0x45, 0x44, 0x72, 0xc4, 0x98, 0x02, 0x06, - 0xea, 0x0f, 0xa9, 0xd4, 0x87, 0x0a, 0xa9, 0xa7, 0x61, 0xca, 0x33, 0x49, 0xb5, 0x35, 0xb3, 0x29, - 0x62, 0xf3, 0x6c, 0x9c, 0x25, 0x8b, 0x55, 0x81, 0x53, 0x08, 0x4c, 0x29, 0xe0, 0xc0, 0x33, 0x5a, - 0x05, 0xb0, 0x4c, 0x6c, 0x35, 0xd4, 0x3a, 0xd6, 0x5b, 0xc5, 0xcc, 0x00, 0x2f, 0x6d, 0x13, 0x95, - 0x3e, 0x2f, 0x59, 0x4c, 0xaa, 0xb7, 0xd0, 0x23, 0xbd, 0x50, 0x9b, 0x18, 0x10, 0x29, 0x9b, 0xec, - 0x90, 0xf5, 0x45, 0xdb, 0x1e, 0x14, 0x6c, 0x4c, 0xe2, 0x1e, 0xd7, 0xf9, 0xca, 0xb2, 0xd4, 0x88, - 0xc5, 0xd8, 0x95, 0x29, 0x1c, 0xc6, 0x16, 0x36, 0x69, 0xfb, 0x1f, 0xd1, 0xed, 0xe0, 0x09, 0x54, - 0x1a, 0x56, 0x40, 0xb3, 0x50, 0x5e, 0x08, 0xb7, 0xb4, 0x36, 0x9e, 0xbb, 0x08, 0x85, 0xa0, 0x7b, - 0xd0, 0x2c, 0xa4, 0x1d, 0x57, 0xb3, 0x5d, 0x1a, 0x85, 0x69, 0x85, 0x3d, 0x20, 0x19, 0x92, 0xd8, - 0xac, 0xd3, 0x2c, 0x97, 0x56, 0xc8, 0xbf, 0x73, 0x0f, 0xc3, 0x64, 0x60, 0xfa, 0x51, 0x81, 0xf3, - 0xaf, 0x8c, 0xc3, 0x6c, 0x54, 0xcc, 0x45, 0x86, 0xff, 0x09, 0x18, 0x37, 0xbb, 0xed, 0x7d, 0x6c, - 0x17, 0x93, 0x94, 0x81, 0x3f, 0xa1, 0x0a, 0xa4, 0x5b, 0xda, 0x3e, 0x6e, 0x15, 0x53, 0xa7, 0xa4, - 0x85, 0xc2, 0xd2, 0xbd, 0x23, 0x45, 0xf5, 0xe2, 0x06, 0x81, 0x28, 0x0c, 0x89, 0x1e, 0x83, 0x14, - 0x4f, 0x71, 0x84, 0xe1, 0xcc, 0x68, 0x0c, 0x24, 0x16, 0x15, 0x8a, 0x43, 0xb7, 0x42, 0x96, 0xfc, - 0x65, 0xbe, 0x1d, 0xa7, 0x36, 0x67, 0x88, 0x80, 0xf8, 0x15, 0xcd, 0x41, 0x86, 0x86, 0x59, 0x1d, - 0x8b, 0xd2, 0xe0, 0x3d, 0x93, 0x8d, 0xa9, 0xe3, 0x86, 0xd6, 0x6d, 0xb9, 0xea, 0x35, 0xad, 0xd5, - 0xc5, 0x34, 0x60, 0xb2, 0x4a, 0x9e, 0x0b, 0x9f, 0x24, 0x32, 0x74, 0x12, 0x72, 0x2c, 0x2a, 0x0d, - 0xb3, 0x8e, 0x5f, 0xa4, 0xd9, 0x27, 0xad, 0xb0, 0x40, 0x5d, 0x27, 0x12, 0x32, 0xfd, 0xf3, 0x8e, - 0x65, 0x8a, 0xad, 0xa5, 0x53, 0x10, 0x01, 0x9d, 0xfe, 0xe1, 0x70, 0xe2, 0xbb, 0x2d, 0x7a, 0x79, - 0xe1, 0x58, 0x9c, 0xff, 0x66, 0x02, 0x52, 0xf4, 0xbc, 0x4d, 0x41, 0x6e, 0xf7, 0x99, 0x9d, 0xaa, - 0xba, 0xba, 0xbd, 0xb7, 0xbc, 0x51, 0x95, 0x25, 0x54, 0x00, 0xa0, 0x82, 0xcb, 0x1b, 0xdb, 0x95, - 0x5d, 0x39, 0xe1, 0x3d, 0xaf, 0x6f, 0xed, 0x5e, 0x38, 0x27, 0x27, 0x3d, 0xc0, 0x1e, 0x13, 0xa4, - 0xfc, 0x0a, 0x0f, 0x2d, 0xc9, 0x69, 0x24, 0x43, 0x9e, 0x11, 0xac, 0x3f, 0x5d, 0x5d, 0xbd, 0x70, - 0x4e, 0x1e, 0x0f, 0x4a, 0x1e, 0x5a, 0x92, 0x27, 0xd0, 0x24, 0x64, 0xa9, 0x64, 0x79, 0x7b, 0x7b, - 0x43, 0xce, 0x78, 0x9c, 0xb5, 0x5d, 0x65, 0x7d, 0x6b, 0x4d, 0xce, 0x7a, 0x9c, 0x6b, 0xca, 0xf6, - 0xde, 0x8e, 0x0c, 0x1e, 0xc3, 0x66, 0xb5, 0x56, 0xab, 0xac, 0x55, 0xe5, 0x9c, 0xa7, 0xb1, 0xfc, - 0xcc, 0x6e, 0xb5, 0x26, 0xe7, 0x03, 0x66, 0x3d, 0xb4, 0x24, 0x4f, 0x7a, 0x53, 0x54, 0xb7, 0xf6, - 0x36, 0xe5, 0x02, 0x9a, 0x86, 0x49, 0x36, 0x85, 0x30, 0x62, 0x2a, 0x24, 0xba, 0x70, 0x4e, 0x96, - 0x7b, 0x86, 0x30, 0x96, 0xe9, 0x80, 0xe0, 0xc2, 0x39, 0x19, 0xcd, 0xaf, 0x40, 0x9a, 0x46, 0x17, - 0x42, 0x50, 0xd8, 0xa8, 0x2c, 0x57, 0x37, 0xd4, 0xed, 0x9d, 0xdd, 0xf5, 0xed, 0xad, 0xca, 0x86, - 0x2c, 0xf5, 0x64, 0x4a, 0xf5, 0x93, 0x7b, 0xeb, 0x4a, 0x75, 0x55, 0x4e, 0xf8, 0x65, 0x3b, 0xd5, - 0xca, 0x6e, 0x75, 0x55, 0x4e, 0xce, 0xeb, 0x30, 0x1b, 0x95, 0x67, 0x22, 0x4f, 0x86, 0x6f, 0x8b, - 0x13, 0x03, 0xb6, 0x98, 0x72, 0xf5, 0x6d, 0xf1, 0x57, 0x24, 0x98, 0x89, 0xc8, 0xb5, 0x91, 0x93, - 0x3c, 0x0e, 0x69, 0x16, 0xa2, 0xac, 0xfa, 0xdc, 0x13, 0x99, 0xb4, 0x69, 0xc0, 0xf6, 0x55, 0x20, - 0x8a, 0xf3, 0x57, 0xe0, 0xe4, 0x80, 0x0a, 0x4c, 0x28, 0xfa, 0x8c, 0x7c, 0x59, 0x82, 0xe2, 0x20, - 0xee, 0x98, 0x44, 0x91, 0x08, 0x24, 0x8a, 0x4b, 0x61, 0x03, 0x4e, 0x0f, 0x5e, 0x43, 0x9f, 0x15, - 0x6f, 0x48, 0x70, 0x22, 0xba, 0x51, 0x89, 0xb4, 0xe1, 0x31, 0x18, 0x6f, 0x63, 0xf7, 0xc0, 0x12, - 0xc5, 0xfa, 0xae, 0x88, 0x12, 0x40, 0x86, 0xc3, 0xbe, 0xe2, 0x28, 0x7f, 0x0d, 0x49, 0x0e, 0xea, - 0x36, 0x98, 0x35, 0x7d, 0x96, 0x7e, 0x36, 0x01, 0x37, 0x45, 0x92, 0x47, 0x1a, 0x7a, 0x1b, 0x80, - 0x61, 0x76, 0xba, 0x2e, 0x2b, 0xc8, 0x2c, 0x3f, 0x65, 0xa9, 0x84, 0x9e, 0x7d, 0x92, 0x7b, 0xba, - 0xae, 0x37, 0x9e, 0xa4, 0xe3, 0xc0, 0x44, 0x54, 0xe1, 0x62, 0xcf, 0xd0, 0x14, 0x35, 0xb4, 0x34, - 0x60, 0xa5, 0x7d, 0xb5, 0xee, 0x01, 0x90, 0xf5, 0x96, 0x81, 0x4d, 0x57, 0x75, 0x5c, 0x1b, 0x6b, - 0x6d, 0xc3, 0x6c, 0xd2, 0x04, 0x9c, 0x29, 0xa7, 0x1b, 0x5a, 0xcb, 0xc1, 0xca, 0x14, 0x1b, 0xae, - 0x89, 0x51, 0x82, 0xa0, 0x55, 0xc6, 0xf6, 0x21, 0xc6, 0x03, 0x08, 0x36, 0xec, 0x21, 0xe6, 0x3f, - 0x37, 0x01, 0x39, 0x5f, 0x5b, 0x87, 0x4e, 0x43, 0xfe, 0x79, 0xed, 0x9a, 0xa6, 0x8a, 0x56, 0x9d, - 0x79, 0x22, 0x47, 0x64, 0x3b, 0xbc, 0x5d, 0x7f, 0x00, 0x66, 0xa9, 0x8a, 0xd5, 0x75, 0xb1, 0xad, - 0xea, 0x2d, 0xcd, 0x71, 0xa8, 0xd3, 0x32, 0x54, 0x15, 0x91, 0xb1, 0x6d, 0x32, 0xb4, 0x22, 0x46, - 0xd0, 0x79, 0x98, 0xa1, 0x88, 0x76, 0xb7, 0xe5, 0x1a, 0x9d, 0x16, 0x56, 0xc9, 0xcb, 0x83, 0x43, - 0x13, 0xb1, 0x67, 0xd9, 0x34, 0xd1, 0xd8, 0xe4, 0x0a, 0xc4, 0x22, 0x07, 0xad, 0xc1, 0x6d, 0x14, - 0xd6, 0xc4, 0x26, 0xb6, 0x35, 0x17, 0xab, 0xf8, 0xd3, 0x5d, 0xad, 0xe5, 0xa8, 0x9a, 0x59, 0x57, - 0x0f, 0x34, 0xe7, 0xa0, 0x38, 0xeb, 0x27, 0xb8, 0x85, 0xe8, 0xae, 0x71, 0xd5, 0x2a, 0xd5, 0xac, - 0x98, 0xf5, 0x2b, 0x9a, 0x73, 0x80, 0xca, 0x70, 0x82, 0x12, 0x39, 0xae, 0x6d, 0x98, 0x4d, 0x55, - 0x3f, 0xc0, 0xfa, 0x55, 0xb5, 0xeb, 0x36, 0x2e, 0x16, 0x6f, 0xf5, 0x33, 0x50, 0x23, 0x6b, 0x54, - 0x67, 0x85, 0xa8, 0xec, 0xb9, 0x8d, 0x8b, 0xa8, 0x06, 0x79, 0xb2, 0x1f, 0x6d, 0xe3, 0x25, 0xac, - 0x36, 0x2c, 0x9b, 0x16, 0x97, 0x42, 0xc4, 0xe1, 0xf6, 0x39, 0x71, 0x71, 0x9b, 0x03, 0x36, 0xad, - 0x3a, 0x2e, 0xa7, 0x6b, 0x3b, 0xd5, 0xea, 0xaa, 0x92, 0x13, 0x2c, 0x97, 0x2d, 0x9b, 0xc4, 0x54, - 0xd3, 0xf2, 0x7c, 0x9c, 0x63, 0x31, 0xd5, 0xb4, 0x84, 0x87, 0xcf, 0xc3, 0x8c, 0xae, 0xb3, 0x65, - 0x1b, 0xba, 0xca, 0xbb, 0x7c, 0xa7, 0x28, 0x07, 0xfc, 0xa5, 0xeb, 0x6b, 0x4c, 0x81, 0x87, 0xb9, - 0x83, 0x1e, 0x81, 0x9b, 0x7a, 0xfe, 0xf2, 0x03, 0xa7, 0xfb, 0x56, 0x19, 0x86, 0x9e, 0x87, 0x99, - 0xce, 0x61, 0x3f, 0x10, 0x05, 0x66, 0xec, 0x1c, 0x86, 0x61, 0x77, 0xd2, 0x37, 0x37, 0x1b, 0xeb, - 0x9a, 0x8b, 0xeb, 0xc5, 0x9b, 0xfd, 0xda, 0xbe, 0x01, 0x74, 0x16, 0x64, 0x5d, 0x57, 0xb1, 0xa9, - 0xed, 0xb7, 0xb0, 0xaa, 0xd9, 0xd8, 0xd4, 0x9c, 0xe2, 0x49, 0xbf, 0x72, 0x41, 0xd7, 0xab, 0x74, - 0xb4, 0x42, 0x07, 0xd1, 0x19, 0x98, 0xb6, 0xf6, 0x9f, 0xd7, 0x59, 0x70, 0xa9, 0x1d, 0x1b, 0x37, - 0x8c, 0x17, 0x8b, 0x77, 0x50, 0x37, 0x4d, 0x91, 0x01, 0x1a, 0x5a, 0x3b, 0x54, 0x8c, 0xee, 0x01, - 0x59, 0x77, 0x0e, 0x34, 0xbb, 0x43, 0xab, 0xbb, 0xd3, 0xd1, 0x74, 0x5c, 0xbc, 0x93, 0xa9, 0x32, - 0xf9, 0x96, 0x10, 0xa3, 0xa7, 0x61, 0xb6, 0x6b, 0x1a, 0xa6, 0x8b, 0xed, 0x8e, 0x8d, 0x49, 0x93, - 0xce, 0x4e, 0x5a, 0xf1, 0x5f, 0x27, 0x06, 0xb4, 0xd9, 0x7b, 0x7e, 0x6d, 0xb6, 0xbb, 0xca, 0x4c, - 0xb7, 0x5f, 0x38, 0x5f, 0x86, 0xbc, 0x7f, 0xd3, 0x51, 0x16, 0xd8, 0xb6, 0xcb, 0x12, 0xa9, 0xa1, - 0x2b, 0xdb, 0xab, 0xa4, 0xfa, 0x3d, 0x5b, 0x95, 0x13, 0xa4, 0x0a, 0x6f, 0xac, 0xef, 0x56, 0x55, - 0x65, 0x6f, 0x6b, 0x77, 0x7d, 0xb3, 0x2a, 0x27, 0xcf, 0x64, 0x33, 0xef, 0x4c, 0xc8, 0xd7, 0xaf, - 0x5f, 0xbf, 0x9e, 0x98, 0xff, 0x4e, 0x02, 0x0a, 0xc1, 0xce, 0x17, 0x7d, 0x1c, 0x6e, 0x16, 0xaf, - 0xa9, 0x0e, 0x76, 0xd5, 0x17, 0x0c, 0x9b, 0xc6, 0x61, 0x5b, 0x63, 0xbd, 0xa3, 0xe7, 0xc2, 0x59, - 0xae, 0x55, 0xc3, 0xee, 0x53, 0x86, 0x4d, 0xa2, 0xac, 0xad, 0xb9, 0x68, 0x03, 0x4e, 0x9a, 0x96, - 0xea, 0xb8, 0x9a, 0x59, 0xd7, 0xec, 0xba, 0xda, 0xbb, 0x20, 0x50, 0x35, 0x5d, 0xc7, 0x8e, 0x63, - 0xb1, 0x12, 0xe0, 0xb1, 0x7c, 0xcc, 0xb4, 0x6a, 0x5c, 0xb9, 0x97, 0x1b, 0x2b, 0x5c, 0x35, 0xb4, - 0xdd, 0xc9, 0x41, 0xdb, 0x7d, 0x2b, 0x64, 0xdb, 0x5a, 0x47, 0xc5, 0xa6, 0x6b, 0x1f, 0xd2, 0x7e, - 0x2d, 0xa3, 0x64, 0xda, 0x5a, 0xa7, 0x4a, 0x9e, 0x7f, 0x76, 0x7b, 0xe0, 0xf7, 0xe3, 0x0f, 0x93, - 0x90, 0xf7, 0xf7, 0x6c, 0xa4, 0x05, 0xd6, 0x69, 0x7e, 0x96, 0xe8, 0xf1, 0xbd, 0x7d, 0x68, 0x87, - 0xb7, 0xb8, 0x42, 0x12, 0x77, 0x79, 0x9c, 0x75, 0x52, 0x0a, 0x43, 0x92, 0xa2, 0x49, 0x0e, 0x2c, - 0x66, 0xfd, 0x79, 0x46, 0xe1, 0x4f, 0x68, 0x0d, 0xc6, 0x9f, 0x77, 0x28, 0xf7, 0x38, 0xe5, 0xbe, - 0x63, 0x38, 0xf7, 0x13, 0x35, 0x4a, 0x9e, 0x7d, 0xa2, 0xa6, 0x6e, 0x6d, 0x2b, 0x9b, 0x95, 0x0d, - 0x85, 0xc3, 0xd1, 0x2d, 0x90, 0x6a, 0x69, 0x2f, 0x1d, 0x06, 0x53, 0x3c, 0x15, 0x8d, 0xea, 0xf8, - 0x5b, 0x20, 0xf5, 0x02, 0xd6, 0xae, 0x06, 0x13, 0x2b, 0x15, 0xfd, 0x0c, 0x43, 0xff, 0x2c, 0xa4, - 0xa9, 0xbf, 0x10, 0x00, 0xf7, 0x98, 0x3c, 0x86, 0x32, 0x90, 0x5a, 0xd9, 0x56, 0x48, 0xf8, 0xcb, - 0x90, 0x67, 0x52, 0x75, 0x67, 0xbd, 0xba, 0x52, 0x95, 0x13, 0xf3, 0xe7, 0x61, 0x9c, 0x39, 0x81, - 0x1c, 0x0d, 0xcf, 0x0d, 0xf2, 0x18, 0x7f, 0xe4, 0x1c, 0x92, 0x18, 0xdd, 0xdb, 0x5c, 0xae, 0x2a, - 0x72, 0xc2, 0xbf, 0xbd, 0x0e, 0xe4, 0xfd, 0xed, 0xda, 0xcf, 0x27, 0xa6, 0xfe, 0x5e, 0x82, 0x9c, - 0xaf, 0xfd, 0x22, 0x85, 0x5f, 0x6b, 0xb5, 0xac, 0x17, 0x54, 0xad, 0x65, 0x68, 0x0e, 0x0f, 0x0a, - 0xa0, 0xa2, 0x0a, 0x91, 0x8c, 0xba, 0x69, 0x3f, 0x17, 0xe3, 0x5f, 0x97, 0x40, 0x0e, 0xb7, 0x6e, - 0x21, 0x03, 0xa5, 0x5f, 0xa8, 0x81, 0xaf, 0x49, 0x50, 0x08, 0xf6, 0x6b, 0x21, 0xf3, 0x4e, 0xff, - 0x42, 0xcd, 0xfb, 0x82, 0x04, 0x93, 0x81, 0x2e, 0xed, 0x97, 0xca, 0xba, 0x57, 0x93, 0x30, 0x13, - 0x81, 0x43, 0x15, 0xde, 0xce, 0xb2, 0x0e, 0xfb, 0xfe, 0x51, 0xe6, 0x5a, 0x24, 0xd5, 0x72, 0x47, - 0xb3, 0x5d, 0xde, 0xfd, 0xde, 0x03, 0xb2, 0x51, 0xc7, 0xa6, 0x6b, 0x34, 0x0c, 0x6c, 0xf3, 0x57, - 0x70, 0xd6, 0xe3, 0x4e, 0xf5, 0xe4, 0xec, 0x2d, 0xfc, 0x3e, 0x40, 0x1d, 0xcb, 0x31, 0x5c, 0xe3, - 0x1a, 0x56, 0x0d, 0x53, 0xbc, 0xaf, 0x93, 0x9e, 0x37, 0xa5, 0xc8, 0x62, 0x64, 0xdd, 0x74, 0x3d, - 0x6d, 0x13, 0x37, 0xb5, 0x90, 0x36, 0xc9, 0x7d, 0x49, 0x45, 0x16, 0x23, 0x9e, 0xf6, 0x69, 0xc8, - 0xd7, 0xad, 0x2e, 0x69, 0x1f, 0x98, 0x1e, 0x49, 0xb5, 0x92, 0x92, 0x63, 0x32, 0x4f, 0x85, 0xf7, - 0x77, 0xbd, 0x8b, 0x82, 0xbc, 0x92, 0x63, 0x32, 0xa6, 0x72, 0x37, 0x4c, 0x69, 0xcd, 0xa6, 0x4d, - 0xc8, 0x05, 0x11, 0x6b, 0x5a, 0x0b, 0x9e, 0x98, 0x2a, 0xce, 0x3d, 0x01, 0x19, 0xe1, 0x07, 0x52, - 0xcd, 0x88, 0x27, 0xd4, 0x0e, 0xbb, 0xae, 0x49, 0x2c, 0x64, 0x95, 0x8c, 0x29, 0x06, 0x4f, 0x43, - 0xde, 0x70, 0xd4, 0xde, 0xbd, 0x61, 0xe2, 0x54, 0x62, 0x21, 0xa3, 0xe4, 0x0c, 0xc7, 0xbb, 0x28, - 0x9a, 0x7f, 0x23, 0x01, 0x85, 0xe0, 0xbd, 0x27, 0x5a, 0x85, 0x4c, 0xcb, 0xd2, 0x35, 0x1a, 0x08, - 0xec, 0xd2, 0x7d, 0x21, 0xe6, 0xaa, 0x74, 0x71, 0x83, 0xeb, 0x2b, 0x1e, 0x72, 0xee, 0x9f, 0x25, - 0xc8, 0x08, 0x31, 0x3a, 0x01, 0xa9, 0x8e, 0xe6, 0x1e, 0x50, 0xba, 0xf4, 0x72, 0x42, 0x96, 0x14, - 0xfa, 0x4c, 0xe4, 0x4e, 0x47, 0x33, 0x69, 0x08, 0x70, 0x39, 0x79, 0x26, 0xfb, 0xda, 0xc2, 0x5a, - 0x9d, 0xb6, 0xc3, 0x56, 0xbb, 0x8d, 0x4d, 0xd7, 0x11, 0xfb, 0xca, 0xe5, 0x2b, 0x5c, 0x8c, 0xee, - 0x85, 0x69, 0xd7, 0xd6, 0x8c, 0x56, 0x40, 0x37, 0x45, 0x75, 0x65, 0x31, 0xe0, 0x29, 0x97, 0xe1, - 0x16, 0xc1, 0x5b, 0xc7, 0xae, 0xa6, 0x1f, 0xe0, 0x7a, 0x0f, 0x34, 0x4e, 0x2f, 0xd5, 0x6e, 0xe6, - 0x0a, 0xab, 0x7c, 0x5c, 0x60, 0xe7, 0xbf, 0x27, 0xc1, 0xb4, 0x68, 0xe0, 0xeb, 0x9e, 0xb3, 0x36, - 0x01, 0x34, 0xd3, 0xb4, 0x5c, 0xbf, 0xbb, 0xfa, 0x43, 0xb9, 0x0f, 0xb7, 0x58, 0xf1, 0x40, 0x8a, - 0x8f, 0x60, 0xae, 0x0d, 0xd0, 0x1b, 0x19, 0xe8, 0xb6, 0x93, 0x90, 0xe3, 0x97, 0xda, 0xf4, 0x97, - 0x11, 0xf6, 0xd6, 0x07, 0x4c, 0x44, 0x3a, 0x7d, 0x34, 0x0b, 0xe9, 0x7d, 0xdc, 0x34, 0x4c, 0x7e, - 0xd5, 0xc6, 0x1e, 0xc4, 0x05, 0x5e, 0xca, 0xbb, 0xc0, 0x5b, 0xfe, 0x14, 0xcc, 0xe8, 0x56, 0x3b, - 0x6c, 0xee, 0xb2, 0x1c, 0x7a, 0xf3, 0x74, 0xae, 0x48, 0xcf, 0x42, 0xaf, 0x3b, 0xfb, 0x92, 0x24, - 0x7d, 0x25, 0x91, 0x5c, 0xdb, 0x59, 0xfe, 0x5a, 0x62, 0x6e, 0x8d, 0x41, 0x77, 0xc4, 0x4a, 0x15, - 0xdc, 0x68, 0x61, 0x9d, 0x58, 0x0f, 0x3f, 0xbe, 0x0b, 0xee, 0x6f, 0x1a, 0xee, 0x41, 0x77, 0x7f, - 0x51, 0xb7, 0xda, 0x67, 0x9b, 0x56, 0xd3, 0xea, 0xfd, 0x18, 0x44, 0x9e, 0xe8, 0x03, 0xfd, 0x8f, - 0xff, 0x20, 0x94, 0xf5, 0xa4, 0x73, 0xb1, 0xbf, 0x1e, 0x95, 0xb7, 0x60, 0x86, 0x2b, 0xab, 0xf4, - 0x46, 0x9a, 0xf5, 0xe1, 0x68, 0xe8, 0xad, 0x44, 0xf1, 0x1b, 0x6f, 0xd3, 0x4a, 0xa7, 0x4c, 0x73, - 0x28, 0x19, 0x63, 0x9d, 0x7a, 0x59, 0x81, 0x9b, 0x02, 0x7c, 0xec, 0x68, 0x62, 0x3b, 0x86, 0xf1, - 0x3b, 0x9c, 0x71, 0xc6, 0xc7, 0x58, 0xe3, 0xd0, 0xf2, 0x0a, 0x4c, 0x1e, 0x87, 0xeb, 0x1f, 0x38, - 0x57, 0x1e, 0xfb, 0x49, 0xd6, 0x60, 0x8a, 0x92, 0xe8, 0x5d, 0xc7, 0xb5, 0xda, 0x34, 0xef, 0x0d, - 0xa7, 0xf9, 0xc7, 0xb7, 0xd9, 0x59, 0x29, 0x10, 0xd8, 0x8a, 0x87, 0x2a, 0x97, 0x81, 0x5e, 0xc2, - 0xd7, 0xb1, 0xde, 0x8a, 0x61, 0x78, 0x93, 0x1b, 0xe2, 0xe9, 0x97, 0x9f, 0x84, 0x59, 0xf2, 0x3f, - 0x4d, 0x4b, 0x7e, 0x4b, 0xe2, 0xef, 0x60, 0x8a, 0xdf, 0x7b, 0x99, 0x1d, 0xc7, 0x19, 0x8f, 0xc0, - 0x67, 0x93, 0x6f, 0x17, 0x9b, 0xd8, 0x75, 0xb1, 0xed, 0xa8, 0x5a, 0x2b, 0xca, 0x3c, 0xdf, 0x1b, - 0x6c, 0xf1, 0xf3, 0xef, 0x06, 0x77, 0x71, 0x8d, 0x21, 0x2b, 0xad, 0x56, 0x79, 0x0f, 0x6e, 0x8e, - 0x88, 0x8a, 0x11, 0x38, 0x5f, 0xe5, 0x9c, 0xb3, 0x7d, 0x91, 0x41, 0x68, 0x77, 0x40, 0xc8, 0xbd, - 0xbd, 0x1c, 0x81, 0xf3, 0x0b, 0x9c, 0x13, 0x71, 0xac, 0xd8, 0x52, 0xc2, 0xf8, 0x04, 0x4c, 0x5f, - 0xc3, 0xf6, 0xbe, 0xe5, 0xf0, 0x8b, 0x83, 0x11, 0xe8, 0x5e, 0xe3, 0x74, 0x53, 0x1c, 0x48, 0xaf, - 0x11, 0x08, 0xd7, 0x23, 0x90, 0x69, 0x68, 0x3a, 0x1e, 0x81, 0xe2, 0x8b, 0x9c, 0x62, 0x82, 0xe8, - 0x13, 0x68, 0x05, 0xf2, 0x4d, 0x8b, 0x57, 0xa6, 0x78, 0xf8, 0xeb, 0x1c, 0x9e, 0x13, 0x18, 0x4e, - 0xd1, 0xb1, 0x3a, 0xdd, 0x16, 0x29, 0x5b, 0xf1, 0x14, 0x7f, 0x28, 0x28, 0x04, 0x86, 0x53, 0x1c, - 0xc3, 0xad, 0x5f, 0x12, 0x14, 0x8e, 0xcf, 0x9f, 0x8f, 0x43, 0xce, 0x32, 0x5b, 0x87, 0x96, 0x39, - 0x8a, 0x11, 0x5f, 0xe6, 0x0c, 0xc0, 0x21, 0x84, 0xe0, 0x12, 0x64, 0x47, 0xdd, 0x88, 0x3f, 0x7a, - 0x57, 0x1c, 0x0f, 0xb1, 0x03, 0x6b, 0x30, 0x25, 0x12, 0x94, 0x61, 0x99, 0x23, 0x50, 0xfc, 0x31, - 0xa7, 0x28, 0xf8, 0x60, 0x7c, 0x19, 0x2e, 0x76, 0xdc, 0x26, 0x1e, 0x85, 0xe4, 0x0d, 0xb1, 0x0c, - 0x0e, 0xe1, 0xae, 0xdc, 0xc7, 0xa6, 0x7e, 0x30, 0x1a, 0xc3, 0x57, 0x85, 0x2b, 0x05, 0x86, 0x50, - 0xac, 0xc0, 0x64, 0x5b, 0xb3, 0x9d, 0x03, 0xad, 0x35, 0xd2, 0x76, 0xfc, 0x09, 0xe7, 0xc8, 0x7b, - 0x20, 0xee, 0x91, 0xae, 0x79, 0x1c, 0x9a, 0xaf, 0x09, 0x8f, 0xf8, 0x60, 0xfc, 0xe8, 0x39, 0x2e, - 0xbd, 0x9b, 0x39, 0x0e, 0xdb, 0x9f, 0x8a, 0xa3, 0xc7, 0xb0, 0x9b, 0x7e, 0xc6, 0x4b, 0x90, 0x75, - 0x8c, 0x97, 0x46, 0xa2, 0xf9, 0x33, 0xb1, 0xd3, 0x14, 0x40, 0xc0, 0xcf, 0xc0, 0x2d, 0x91, 0x65, - 0x62, 0x04, 0xb2, 0x3f, 0xe7, 0x64, 0x27, 0x22, 0x4a, 0x05, 0x4f, 0x09, 0xc7, 0xa5, 0xfc, 0x0b, - 0x91, 0x12, 0x70, 0x88, 0x6b, 0x87, 0x74, 0xf6, 0x8e, 0xd6, 0x38, 0x9e, 0xd7, 0xfe, 0x52, 0x78, - 0x8d, 0x61, 0x03, 0x5e, 0xdb, 0x85, 0x13, 0x9c, 0xf1, 0x78, 0xfb, 0xfa, 0x75, 0x91, 0x58, 0x19, - 0x7a, 0x2f, 0xb8, 0xbb, 0x9f, 0x82, 0x39, 0xcf, 0x9d, 0xa2, 0x29, 0x75, 0xd4, 0xb6, 0xd6, 0x19, - 0x81, 0xf9, 0x1b, 0x9c, 0x59, 0x64, 0x7c, 0xaf, 0xab, 0x75, 0x36, 0xb5, 0x0e, 0x21, 0x7f, 0x1a, - 0x8a, 0x82, 0xbc, 0x6b, 0xda, 0x58, 0xb7, 0x9a, 0xa6, 0xf1, 0x12, 0xae, 0x8f, 0x40, 0xfd, 0x57, - 0xa1, 0xad, 0xda, 0xf3, 0xc1, 0x09, 0xf3, 0x3a, 0xc8, 0x5e, 0xaf, 0xa2, 0x1a, 0xed, 0x8e, 0x65, - 0xbb, 0x31, 0x8c, 0x7f, 0x2d, 0x76, 0xca, 0xc3, 0xad, 0x53, 0x58, 0xb9, 0x0a, 0x05, 0xfa, 0x38, - 0x6a, 0x48, 0xfe, 0x0d, 0x27, 0x9a, 0xec, 0xa1, 0x78, 0xe2, 0xd0, 0xad, 0x76, 0x47, 0xb3, 0x47, - 0xc9, 0x7f, 0x7f, 0x2b, 0x12, 0x07, 0x87, 0xf0, 0xc4, 0xe1, 0x1e, 0x76, 0x30, 0xa9, 0xf6, 0x23, - 0x30, 0x7c, 0x53, 0x24, 0x0e, 0x81, 0xe1, 0x14, 0xa2, 0x61, 0x18, 0x81, 0xe2, 0xef, 0x04, 0x85, - 0xc0, 0x10, 0x8a, 0x4f, 0xf6, 0x0a, 0xad, 0x8d, 0x9b, 0x86, 0xe3, 0xda, 0xac, 0x15, 0x1e, 0x4e, - 0xf5, 0xad, 0x77, 0x83, 0x4d, 0x98, 0xe2, 0x83, 0x96, 0x9f, 0x80, 0xa9, 0x50, 0x8b, 0x81, 0xe2, - 0x7e, 0xd1, 0x2f, 0x7e, 0xe6, 0x7d, 0x9e, 0x8c, 0x82, 0x1d, 0x46, 0x79, 0x83, 0xec, 0x7b, 0xb0, - 0x0f, 0x88, 0x27, 0x7b, 0xf9, 0x7d, 0x6f, 0xeb, 0x03, 0x6d, 0x40, 0xf9, 0x32, 0x4c, 0x06, 0x7a, - 0x80, 0x78, 0xaa, 0x5f, 0xe1, 0x54, 0x79, 0x7f, 0x0b, 0x50, 0x3e, 0x0f, 0x29, 0x52, 0xcf, 0xe3, - 0xe1, 0xbf, 0xca, 0xe1, 0x54, 0xbd, 0xfc, 0x28, 0x64, 0x44, 0x1d, 0x8f, 0x87, 0xfe, 0x1a, 0x87, - 0x7a, 0x10, 0x02, 0x17, 0x35, 0x3c, 0x1e, 0xfe, 0xeb, 0x02, 0x2e, 0x20, 0x04, 0x3e, 0xba, 0x0b, - 0xbf, 0xfd, 0xb9, 0x14, 0xcf, 0xc3, 0xc2, 0x77, 0x97, 0x60, 0x82, 0x17, 0xef, 0x78, 0xf4, 0x67, - 0xf9, 0xe4, 0x02, 0x51, 0x7e, 0x18, 0xd2, 0x23, 0x3a, 0xfc, 0x37, 0x38, 0x94, 0xe9, 0x97, 0x57, - 0x20, 0xe7, 0x2b, 0xd8, 0xf1, 0xf0, 0xdf, 0xe4, 0x70, 0x3f, 0x8a, 0x98, 0xce, 0x0b, 0x76, 0x3c, - 0xc1, 0x6f, 0x09, 0xd3, 0x39, 0x82, 0xb8, 0x4d, 0xd4, 0xea, 0x78, 0xf4, 0x6f, 0x0b, 0xaf, 0x0b, - 0x48, 0xf9, 0x71, 0xc8, 0x7a, 0xf9, 0x37, 0x1e, 0xff, 0x3b, 0x1c, 0xdf, 0xc3, 0x10, 0x0f, 0xf8, - 0xf2, 0x7f, 0x3c, 0xc5, 0xef, 0x0a, 0x0f, 0xf8, 0x50, 0xe4, 0x18, 0x85, 0x6b, 0x7a, 0x3c, 0xd3, - 0xef, 0x89, 0x63, 0x14, 0x2a, 0xe9, 0x64, 0x37, 0x69, 0x1a, 0x8c, 0xa7, 0xf8, 0x7d, 0xb1, 0x9b, - 0x54, 0x9f, 0x98, 0x11, 0x2e, 0x92, 0xf1, 0x1c, 0x7f, 0x20, 0xcc, 0x08, 0xd5, 0xc8, 0xf2, 0x0e, - 0xa0, 0xfe, 0x02, 0x19, 0xcf, 0xf7, 0x0a, 0xe7, 0x9b, 0xee, 0xab, 0x8f, 0xe5, 0xa7, 0xe0, 0x44, - 0x74, 0x71, 0x8c, 0x67, 0xfd, 0xfc, 0xfb, 0xa1, 0xd7, 0x19, 0x7f, 0x6d, 0x2c, 0xef, 0xf6, 0xb2, - 0xac, 0xbf, 0x30, 0xc6, 0xd3, 0xbe, 0xfa, 0x7e, 0x30, 0xd1, 0xfa, 0xeb, 0x62, 0xb9, 0x02, 0xd0, - 0xab, 0x49, 0xf1, 0x5c, 0xaf, 0x71, 0x2e, 0x1f, 0x88, 0x1c, 0x0d, 0x5e, 0x92, 0xe2, 0xf1, 0x5f, - 0x14, 0x47, 0x83, 0x23, 0xc8, 0xd1, 0x10, 0xd5, 0x28, 0x1e, 0xfd, 0xba, 0x38, 0x1a, 0x02, 0x52, - 0xbe, 0x04, 0x19, 0xb3, 0xdb, 0x6a, 0x91, 0xd8, 0x42, 0xc3, 0x3f, 0xb2, 0x29, 0xfe, 0xdb, 0x07, - 0x1c, 0x2c, 0x00, 0xe5, 0xf3, 0x90, 0xc6, 0xed, 0x7d, 0x5c, 0x8f, 0x43, 0xfe, 0xfb, 0x07, 0x22, - 0x9f, 0x10, 0xed, 0xf2, 0xe3, 0x00, 0xec, 0x65, 0x9a, 0xfe, 0xc6, 0x12, 0x83, 0xfd, 0x8f, 0x0f, - 0xf8, 0xef, 0xf7, 0x3d, 0x48, 0x8f, 0x80, 0x7d, 0x0d, 0x30, 0x9c, 0xe0, 0xdd, 0x20, 0x01, 0x7d, - 0x01, 0x7f, 0x04, 0x26, 0x9e, 0x77, 0x2c, 0xd3, 0xd5, 0x9a, 0x71, 0xe8, 0xff, 0xe4, 0x68, 0xa1, - 0x4f, 0x1c, 0xd6, 0xb6, 0x6c, 0xec, 0x6a, 0x4d, 0x27, 0x0e, 0xfb, 0x5f, 0x1c, 0xeb, 0x01, 0x08, - 0x58, 0xd7, 0x1c, 0x77, 0x94, 0x75, 0xff, 0xb7, 0x00, 0x0b, 0x00, 0x31, 0x9a, 0xfc, 0x7f, 0x15, - 0x1f, 0xc6, 0x61, 0xdf, 0x13, 0x46, 0x73, 0xfd, 0xf2, 0xa3, 0x90, 0x25, 0xff, 0xb2, 0x6f, 0x5a, - 0x62, 0xc0, 0xff, 0xc3, 0xc1, 0x3d, 0x04, 0x99, 0xd9, 0x71, 0xeb, 0xae, 0x11, 0xef, 0xec, 0xff, - 0xe5, 0x3b, 0x2d, 0xf4, 0xcb, 0x15, 0xc8, 0x39, 0x6e, 0xbd, 0xde, 0xe5, 0x1d, 0x4d, 0x0c, 0xfc, - 0xc7, 0x1f, 0x78, 0x2f, 0xb9, 0x1e, 0x66, 0xf9, 0x74, 0xf4, 0x7d, 0x1d, 0xac, 0x59, 0x6b, 0x16, - 0xbb, 0xa9, 0x83, 0x9f, 0xdc, 0x0f, 0xa7, 0x75, 0xab, 0xbd, 0x6f, 0x39, 0x67, 0xbd, 0x44, 0x72, - 0xb6, 0xad, 0x75, 0x1c, 0xaa, 0xbd, 0xc4, 0x6f, 0xda, 0x72, 0xfc, 0x89, 0x0c, 0xcc, 0x1d, 0xef, - 0x96, 0x6e, 0xfe, 0x36, 0x98, 0xbc, 0xdc, 0xb2, 0x34, 0xd7, 0x30, 0x9b, 0x3b, 0x96, 0x61, 0xba, - 0x28, 0x0f, 0x52, 0x83, 0xfe, 0x40, 0x23, 0x29, 0x52, 0x63, 0xfe, 0x9f, 0xd2, 0x90, 0x65, 0x17, - 0x3c, 0x9b, 0x5a, 0x07, 0xfd, 0x7f, 0xc8, 0x6f, 0xf1, 0x33, 0xf2, 0xe0, 0xd2, 0x45, 0xc7, 0xbb, - 0x50, 0xf6, 0xcd, 0xbf, 0xe8, 0x69, 0x2f, 0xfa, 0x55, 0xe9, 0x0f, 0xb2, 0xcb, 0x0f, 0xfc, 0xe0, - 0xad, 0x93, 0xf7, 0x0d, 0xb4, 0x8f, 0x14, 0xc5, 0xb3, 0x2c, 0x98, 0x17, 0xf7, 0x0c, 0xd3, 0x7d, - 0x70, 0xe9, 0xa2, 0x12, 0x98, 0x0f, 0x5d, 0x83, 0x0c, 0x1f, 0x70, 0xf8, 0x0f, 0x0d, 0x77, 0x0c, - 0x98, 0x5b, 0xa8, 0xb1, 0x79, 0xcf, 0xbd, 0xf9, 0xd6, 0xc9, 0xb1, 0x63, 0xcf, 0xed, 0xcd, 0x85, - 0x3e, 0x0d, 0x39, 0x61, 0xc7, 0x7a, 0xdd, 0xe1, 0x9f, 0xda, 0xde, 0x1d, 0xb3, 0xec, 0xf5, 0x3a, - 0x9f, 0xfd, 0xae, 0x1f, 0xbc, 0x75, 0x72, 0x7e, 0xe8, 0xcc, 0x8b, 0x7b, 0x5d, 0xa3, 0xae, 0xf8, - 0xe7, 0x40, 0xcf, 0x41, 0x92, 0x4c, 0xc5, 0x3e, 0xca, 0x3d, 0x39, 0x60, 0x2a, 0x6f, 0x8a, 0x33, - 0x7c, 0x81, 0xa3, 0x4c, 0x43, 0x78, 0xe7, 0x1e, 0x87, 0xe9, 0xbe, 0xed, 0x41, 0x32, 0x24, 0xaf, - 0xe2, 0x43, 0xfe, 0x1d, 0x0e, 0xf9, 0x17, 0xcd, 0xf6, 0xbe, 0x33, 0x93, 0x16, 0xf2, 0xfc, 0xe3, - 0xb1, 0x72, 0xe2, 0xa2, 0x34, 0x77, 0x09, 0x26, 0x03, 0x3e, 0x3e, 0x16, 0xf8, 0x31, 0x90, 0xc3, - 0x5e, 0x3a, 0x16, 0xfe, 0x02, 0x64, 0x3e, 0x0c, 0x6e, 0xfe, 0xfb, 0x08, 0x26, 0x2a, 0xad, 0xd6, - 0xa6, 0xd6, 0x71, 0xd0, 0x33, 0x30, 0xcd, 0x5a, 0xf7, 0x5d, 0x6b, 0x95, 0xfe, 0xb4, 0xb3, 0xa9, - 0x75, 0x78, 0x40, 0xdf, 0x1b, 0x70, 0x37, 0x07, 0x2c, 0xf6, 0x69, 0xd3, 0xf9, 0x95, 0x7e, 0x16, - 0xf4, 0x24, 0xc8, 0x42, 0x48, 0xcf, 0x16, 0x61, 0x66, 0xe1, 0x7a, 0x66, 0x28, 0xb3, 0x50, 0x66, - 0xc4, 0x7d, 0x1c, 0xe8, 0x31, 0xc8, 0xac, 0x9b, 0xee, 0x43, 0x4b, 0x84, 0x8f, 0xc5, 0xe0, 0x7c, - 0x24, 0x9f, 0x50, 0x62, 0x3c, 0x1e, 0x86, 0xe3, 0x2f, 0x9c, 0x23, 0xf8, 0xd4, 0x70, 0x3c, 0x55, - 0xea, 0xe1, 0xe9, 0x23, 0xaa, 0x40, 0x96, 0xec, 0x39, 0x33, 0x80, 0x7d, 0xe5, 0x7d, 0x7b, 0x24, - 0x81, 0xa7, 0xc5, 0x18, 0x7a, 0x28, 0x41, 0xc1, 0x6c, 0x18, 0x8f, 0xa1, 0xf0, 0x19, 0xd1, 0x43, - 0x11, 0x8a, 0x9a, 0x67, 0xc5, 0xc4, 0x10, 0x8a, 0x5a, 0xc8, 0x8a, 0x9a, 0xdf, 0x8a, 0x9a, 0x67, - 0x45, 0x26, 0x86, 0xc2, 0x6f, 0x85, 0xf7, 0x8c, 0x56, 0x01, 0x2e, 0x1b, 0x2f, 0xe2, 0x3a, 0x33, - 0x23, 0x1b, 0x91, 0x8c, 0x04, 0x47, 0x4f, 0x8d, 0x91, 0xf8, 0x70, 0x68, 0x0d, 0x72, 0xb5, 0x46, - 0x8f, 0x06, 0xf8, 0x47, 0xee, 0x91, 0xa6, 0x34, 0x42, 0x3c, 0x7e, 0xa4, 0x67, 0x0e, 0x5b, 0x52, - 0x2e, 0xce, 0x1c, 0xdf, 0x9a, 0x7c, 0xb8, 0x9e, 0x39, 0x8c, 0x26, 0x1f, 0x6b, 0x8e, 0x8f, 0xc7, - 0x8f, 0x44, 0x97, 0x60, 0x62, 0xd9, 0xb2, 0x88, 0x66, 0x71, 0x92, 0x92, 0x9c, 0x8e, 0x24, 0xe1, - 0x3a, 0x8c, 0x40, 0x20, 0xe8, 0xee, 0xd0, 0xd0, 0x27, 0xf0, 0xc2, 0xb0, 0xdd, 0x11, 0x5a, 0x62, - 0x77, 0xc4, 0xb3, 0xff, 0x04, 0x2e, 0x1f, 0xba, 0x98, 0xb4, 0xc9, 0xc5, 0xa9, 0x11, 0x4e, 0xa0, - 0x50, 0x0e, 0x9d, 0x40, 0x21, 0x46, 0x35, 0x98, 0x12, 0xb2, 0xaa, 0xd9, 0x25, 0x39, 0xb8, 0x28, - 0xf3, 0x2f, 0x70, 0x87, 0xd1, 0x72, 0x5d, 0xc6, 0x1a, 0x66, 0x40, 0x3b, 0x50, 0x10, 0xa2, 0x4d, - 0x87, 0x2e, 0x7a, 0x3a, 0xa2, 0xae, 0x86, 0x39, 0x99, 0x2a, 0xa3, 0x0c, 0xe1, 0xe7, 0x56, 0xe1, - 0x44, 0x74, 0xb6, 0x8a, 0xcb, 0x96, 0x92, 0x3f, 0xcb, 0xae, 0xc0, 0x4d, 0x91, 0x99, 0x29, 0x8e, - 0x24, 0x11, 0xaa, 0x13, 0x81, 0x74, 0xe4, 0x07, 0xa7, 0x23, 0xc0, 0xe9, 0x7e, 0x70, 0x2f, 0xc8, - 0xfc, 0xe0, 0x64, 0x04, 0x38, 0xe9, 0x07, 0x7f, 0x1c, 0x0a, 0xc1, 0x3c, 0xe4, 0x47, 0x4f, 0x46, - 0xa0, 0x27, 0x23, 0xd0, 0xd1, 0x73, 0xa7, 0x22, 0xd0, 0xa9, 0x10, 0xba, 0x36, 0x70, 0xee, 0xe9, - 0x08, 0xf4, 0x74, 0x04, 0x3a, 0x7a, 0x6e, 0x14, 0x81, 0x46, 0x7e, 0xf4, 0xa3, 0x30, 0x15, 0x4a, - 0x39, 0x7e, 0xf8, 0x44, 0x04, 0x7c, 0x22, 0x54, 0x9b, 0xc3, 0xa9, 0xc6, 0x8f, 0x9f, 0x8a, 0xc0, - 0x4f, 0x45, 0x4d, 0x1f, 0x6d, 0xfd, 0x78, 0x04, 0x7c, 0x3c, 0x72, 0xfa, 0x68, 0xbc, 0x1c, 0x81, - 0x97, 0xfd, 0xf8, 0x32, 0xe4, 0xfd, 0x59, 0xc5, 0x8f, 0xcd, 0x44, 0x60, 0x33, 0x61, 0xbf, 0x07, - 0x52, 0x4a, 0x5c, 0xa4, 0x67, 0x07, 0x1c, 0x97, 0x40, 0x1a, 0x39, 0x56, 0x67, 0xf3, 0x34, 0xcc, - 0x46, 0x25, 0x8d, 0x08, 0x8e, 0x33, 0x7e, 0x8e, 0xc2, 0xd2, 0x6c, 0x20, 0x59, 0x50, 0x5c, 0xb7, - 0xed, 0x67, 0x7e, 0x0e, 0x66, 0x22, 0x52, 0x47, 0x04, 0xf1, 0x03, 0x7e, 0xe2, 0xdc, 0xd2, 0x5c, - 0x80, 0x38, 0xf0, 0xae, 0xe0, 0x6f, 0xad, 0x7e, 0x38, 0x03, 0x05, 0x9e, 0xa2, 0xb6, 0xed, 0x3a, - 0xb6, 0x71, 0x1d, 0xfd, 0xbf, 0xc1, 0x1d, 0xd6, 0x52, 0x54, 0x6a, 0xe3, 0xb8, 0x63, 0x34, 0x5a, - 0xcf, 0x0d, 0x6c, 0xb4, 0x1e, 0x1c, 0x65, 0x82, 0xb8, 0x7e, 0xab, 0xda, 0xd7, 0x6f, 0xdd, 0x33, - 0x8c, 0x76, 0x50, 0xdb, 0x55, 0xed, 0x6b, 0xbb, 0xe2, 0x68, 0x22, 0xbb, 0xaf, 0x2b, 0xfd, 0xdd, - 0xd7, 0x99, 0x61, 0x3c, 0x83, 0x9b, 0xb0, 0x2b, 0xfd, 0x4d, 0x58, 0x2c, 0x53, 0x74, 0x2f, 0x76, - 0xa5, 0xbf, 0x17, 0x1b, 0xca, 0x34, 0xb8, 0x25, 0xbb, 0xd2, 0xdf, 0x92, 0xc5, 0x32, 0x45, 0x77, - 0x66, 0x9f, 0x88, 0xe8, 0xcc, 0xee, 0x1d, 0x46, 0x35, 0xac, 0x41, 0xdb, 0x8a, 0x6a, 0xd0, 0xee, - 0x1b, 0x6a, 0xd8, 0xd0, 0x3e, 0xed, 0x13, 0x11, 0x7d, 0x5a, 0xbc, 0x71, 0x03, 0xda, 0xb5, 0xad, - 0xa8, 0x76, 0x6d, 0x04, 0xe3, 0x06, 0x75, 0x6d, 0xcb, 0xe1, 0xae, 0x6d, 0x61, 0x18, 0x57, 0x74, - 0xf3, 0x76, 0xa5, 0xbf, 0x79, 0x3b, 0x13, 0x7f, 0x16, 0xa3, 0x7a, 0xb8, 0xe7, 0x06, 0xf6, 0x70, - 0x23, 0x1d, 0xee, 0xb8, 0x56, 0xee, 0xd9, 0x41, 0xad, 0xdc, 0x03, 0xa3, 0xb0, 0x0f, 0xef, 0xe8, - 0x9e, 0x1a, 0xd0, 0xd1, 0x9d, 0x1d, 0x85, 0xfa, 0xa3, 0xc6, 0xee, 0xa3, 0xc6, 0xee, 0xa3, 0xc6, - 0xee, 0xa3, 0xc6, 0xee, 0x97, 0xa3, 0xb1, 0x2b, 0xa7, 0x5e, 0xf9, 0xf2, 0x49, 0xe9, 0xcc, 0x69, - 0x98, 0xe0, 0x53, 0xa3, 0x71, 0x48, 0x6c, 0x56, 0xe4, 0x31, 0xfa, 0x77, 0x59, 0x96, 0xe8, 0xdf, - 0x15, 0x39, 0xb1, 0xbc, 0xf1, 0xe6, 0x8d, 0xd2, 0xd8, 0x77, 0x6f, 0x94, 0xc6, 0xbe, 0x7f, 0xa3, - 0x34, 0xf6, 0xa3, 0x1b, 0x25, 0xe9, 0x9d, 0x1b, 0x25, 0xe9, 0xbd, 0x1b, 0x25, 0xe9, 0xa7, 0x37, - 0x4a, 0xd2, 0xf5, 0xa3, 0x92, 0xf4, 0xd5, 0xa3, 0x92, 0xf4, 0xf5, 0xa3, 0x92, 0xf4, 0xad, 0xa3, - 0x92, 0xf4, 0xed, 0xa3, 0x92, 0xf4, 0xe6, 0x51, 0x49, 0xfa, 0xee, 0x51, 0x69, 0xec, 0x47, 0x47, - 0x25, 0xe9, 0x9d, 0xa3, 0xd2, 0xd8, 0x7b, 0x47, 0x25, 0xe9, 0xa7, 0x47, 0xa5, 0xb1, 0xeb, 0xff, - 0x52, 0x1a, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x57, 0x36, 0xcf, 0x74, 0x44, 0x00, + 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x58, 0xbb, 0x2b, + 0xbf, 0xe4, 0xb5, 0x2d, 0xd9, 0xf2, 0xee, 0x7a, 0xcd, 0x8d, 0x6d, 0x50, 0x12, 0x57, 0x2b, 0x5b, + 0xaf, 0x0c, 0x25, 0x7b, 0xed, 0x3f, 0x8c, 0xf9, 0x8f, 0x86, 0x97, 0xd4, 0x78, 0xc9, 0x19, 0x7a, + 0x66, 0xb8, 0xb6, 0xfc, 0xa1, 0xd8, 0xc2, 0x7d, 0x20, 0x28, 0xfa, 0x2e, 0x50, 0xc7, 0x75, 0xdc, + 0x26, 0x40, 0xeb, 0x34, 0xe9, 0x23, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, + 0x24, 0xdf, 0x82, 0x20, 0x30, 0xbc, 0x8a, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0x04, 0xf0, + 0x97, 0xe2, 0xbe, 0x86, 0x33, 0xc3, 0x21, 0x87, 0x32, 0xe0, 0xa4, 0x1f, 0xfc, 0x49, 0x9a, 0x73, + 0xcf, 0xef, 0x77, 0xcf, 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0x5c, 0x0e, 0xfc, 0xe8, 0x1c, 0x9c, 0x6a, + 0x58, 0x56, 0xa3, 0x89, 0x17, 0xdb, 0xb6, 0xe5, 0x5a, 0xfb, 0x9d, 0xfa, 0x62, 0x0d, 0x3b, 0xba, + 0x6d, 0xb4, 0x5d, 0xcb, 0x5e, 0xa0, 0x32, 0x34, 0xc1, 0x34, 0x16, 0x84, 0xc6, 0xdc, 0x26, 0x4c, + 0x5e, 0x32, 0x9a, 0x78, 0xd5, 0x53, 0xac, 0x62, 0x17, 0x5d, 0x80, 0x54, 0xdd, 0x68, 0xe2, 0xa2, + 0x74, 0x2a, 0x39, 0x9f, 0x5b, 0xba, 0x63, 0x21, 0x04, 0x5a, 0x08, 0x22, 0x76, 0x88, 0x58, 0xa1, + 0x88, 0xb9, 0x77, 0x53, 0x30, 0x15, 0x31, 0x8a, 0x10, 0xa4, 0x4c, 0xad, 0x45, 0x18, 0xa5, 0xf9, + 0xac, 0x42, 0xff, 0x47, 0x45, 0x18, 0x6b, 0x6b, 0xfa, 0x55, 0xad, 0x81, 0x8b, 0x09, 0x2a, 0x16, + 0x8f, 0x68, 0x16, 0xa0, 0x86, 0xdb, 0xd8, 0xac, 0x61, 0x53, 0x3f, 0x2c, 0x26, 0x4f, 0x25, 0xe7, + 0xb3, 0x8a, 0x4f, 0x82, 0xee, 0x85, 0xc9, 0x76, 0x67, 0xbf, 0x69, 0xe8, 0xaa, 0x4f, 0x0d, 0x4e, + 0x25, 0xe7, 0xd3, 0x8a, 0xcc, 0x06, 0x56, 0xbb, 0xca, 0x77, 0xc3, 0xc4, 0x8b, 0x58, 0xbb, 0xea, + 0x57, 0xcd, 0x51, 0xd5, 0x02, 0x11, 0xfb, 0x14, 0x57, 0x20, 0xdf, 0xc2, 0x8e, 0xa3, 0x35, 0xb0, + 0xea, 0x1e, 0xb6, 0x71, 0x31, 0x45, 0x57, 0x7f, 0xaa, 0x67, 0xf5, 0xe1, 0x95, 0xe7, 0x38, 0x6a, + 0xf7, 0xb0, 0x8d, 0x51, 0x19, 0xb2, 0xd8, 0xec, 0xb4, 0x18, 0x43, 0xba, 0x8f, 0xff, 0x2a, 0x66, + 0xa7, 0x15, 0x66, 0xc9, 0x10, 0x18, 0xa7, 0x18, 0x73, 0xb0, 0x7d, 0xcd, 0xd0, 0x71, 0x71, 0x94, + 0x12, 0xdc, 0xdd, 0x43, 0x50, 0x65, 0xe3, 0x61, 0x0e, 0x81, 0x43, 0x2b, 0x90, 0xc5, 0x2f, 0xb9, + 0xd8, 0x74, 0x0c, 0xcb, 0x2c, 0x8e, 0x51, 0x92, 0x3b, 0x23, 0x76, 0x11, 0x37, 0x6b, 0x61, 0x8a, + 0x2e, 0x0e, 0x9d, 0x87, 0x31, 0xab, 0xed, 0x1a, 0x96, 0xe9, 0x14, 0x33, 0xa7, 0xa4, 0xf9, 0xdc, + 0xd2, 0x67, 0x22, 0x03, 0x61, 0x9b, 0xe9, 0x28, 0x42, 0x19, 0xad, 0x83, 0xec, 0x58, 0x1d, 0x5b, + 0xc7, 0xaa, 0x6e, 0xd5, 0xb0, 0x6a, 0x98, 0x75, 0xab, 0x98, 0xa5, 0x04, 0x27, 0x7b, 0x17, 0x42, + 0x15, 0x57, 0xac, 0x1a, 0x5e, 0x37, 0xeb, 0x96, 0x52, 0x70, 0x02, 0xcf, 0xe8, 0x04, 0x8c, 0x3a, + 0x87, 0xa6, 0xab, 0xbd, 0x54, 0xcc, 0xd3, 0x08, 0xe1, 0x4f, 0x73, 0x3f, 0x49, 0xc3, 0xc4, 0x30, + 0x21, 0x76, 0x11, 0xd2, 0x75, 0xb2, 0xca, 0x62, 0xe2, 0x38, 0x3e, 0x60, 0x98, 0xa0, 0x13, 0x47, + 0x3f, 0xa6, 0x13, 0xcb, 0x90, 0x33, 0xb1, 0xe3, 0xe2, 0x1a, 0x8b, 0x88, 0xe4, 0x90, 0x31, 0x05, + 0x0c, 0xd4, 0x1b, 0x52, 0xa9, 0x8f, 0x15, 0x52, 0x57, 0x60, 0xc2, 0x33, 0x49, 0xb5, 0x35, 0xb3, + 0x21, 0x62, 0x73, 0x31, 0xce, 0x92, 0x85, 0x8a, 0xc0, 0x29, 0x04, 0xa6, 0x14, 0x70, 0xe0, 0x19, + 0xad, 0x02, 0x58, 0x26, 0xb6, 0xea, 0x6a, 0x0d, 0xeb, 0xcd, 0x62, 0xa6, 0x8f, 0x97, 0xb6, 0x89, + 0x4a, 0x8f, 0x97, 0x2c, 0x26, 0xd5, 0x9b, 0xe8, 0x91, 0x6e, 0xa8, 0x8d, 0xf5, 0x89, 0x94, 0x4d, + 0x76, 0xc8, 0x7a, 0xa2, 0x6d, 0x0f, 0x0a, 0x36, 0x26, 0x71, 0x8f, 0x6b, 0x7c, 0x65, 0x59, 0x6a, + 0xc4, 0x42, 0xec, 0xca, 0x14, 0x0e, 0x63, 0x0b, 0x1b, 0xb7, 0xfd, 0x8f, 0xe8, 0x76, 0xf0, 0x04, + 0x2a, 0x0d, 0x2b, 0xa0, 0x59, 0x28, 0x2f, 0x84, 0x5b, 0x5a, 0x0b, 0xcf, 0x5c, 0x80, 0x42, 0xd0, + 0x3d, 0x68, 0x1a, 0xd2, 0x8e, 0xab, 0xd9, 0x2e, 0x8d, 0xc2, 0xb4, 0xc2, 0x1e, 0x90, 0x0c, 0x49, + 0x6c, 0xd6, 0x68, 0x96, 0x4b, 0x2b, 0xe4, 0xdf, 0x99, 0x87, 0x61, 0x3c, 0x30, 0xfd, 0xb0, 0xc0, + 0xb9, 0x57, 0x47, 0x61, 0x3a, 0x2a, 0xe6, 0x22, 0xc3, 0xff, 0x04, 0x8c, 0x9a, 0x9d, 0xd6, 0x3e, + 0xb6, 0x8b, 0x49, 0xca, 0xc0, 0x9f, 0x50, 0x19, 0xd2, 0x4d, 0x6d, 0x1f, 0x37, 0x8b, 0xa9, 0x53, + 0xd2, 0x7c, 0x61, 0xe9, 0xde, 0xa1, 0xa2, 0x7a, 0x61, 0x83, 0x40, 0x14, 0x86, 0x44, 0x8f, 0x41, + 0x8a, 0xa7, 0x38, 0xc2, 0x70, 0x66, 0x38, 0x06, 0x12, 0x8b, 0x0a, 0xc5, 0xa1, 0x5b, 0x21, 0x4b, + 0xfe, 0x32, 0xdf, 0x8e, 0x52, 0x9b, 0x33, 0x44, 0x40, 0xfc, 0x8a, 0x66, 0x20, 0x43, 0xc3, 0xac, + 0x86, 0x45, 0x69, 0xf0, 0x9e, 0xc9, 0xc6, 0xd4, 0x70, 0x5d, 0xeb, 0x34, 0x5d, 0xf5, 0x9a, 0xd6, + 0xec, 0x60, 0x1a, 0x30, 0x59, 0x25, 0xcf, 0x85, 0x4f, 0x11, 0x19, 0x3a, 0x09, 0x39, 0x16, 0x95, + 0x86, 0x59, 0xc3, 0x2f, 0xd1, 0xec, 0x93, 0x56, 0x58, 0xa0, 0xae, 0x13, 0x09, 0x99, 0xfe, 0x79, + 0xc7, 0x32, 0xc5, 0xd6, 0xd2, 0x29, 0x88, 0x80, 0x4e, 0xff, 0x70, 0x38, 0xf1, 0xdd, 0x16, 0xbd, + 0xbc, 0x70, 0x2c, 0xce, 0x7d, 0x33, 0x01, 0x29, 0x7a, 0xde, 0x26, 0x20, 0xb7, 0xfb, 0xcc, 0x4e, + 0x45, 0x5d, 0xdd, 0xde, 0x5b, 0xde, 0xa8, 0xc8, 0x12, 0x2a, 0x00, 0x50, 0xc1, 0xa5, 0x8d, 0xed, + 0xf2, 0xae, 0x9c, 0xf0, 0x9e, 0xd7, 0xb7, 0x76, 0xcf, 0x9f, 0x95, 0x93, 0x1e, 0x60, 0x8f, 0x09, + 0x52, 0x7e, 0x85, 0x87, 0x96, 0xe4, 0x34, 0x92, 0x21, 0xcf, 0x08, 0xd6, 0xaf, 0x54, 0x56, 0xcf, + 0x9f, 0x95, 0x47, 0x83, 0x92, 0x87, 0x96, 0xe4, 0x31, 0x34, 0x0e, 0x59, 0x2a, 0x59, 0xde, 0xde, + 0xde, 0x90, 0x33, 0x1e, 0x67, 0x75, 0x57, 0x59, 0xdf, 0x5a, 0x93, 0xb3, 0x1e, 0xe7, 0x9a, 0xb2, + 0xbd, 0xb7, 0x23, 0x83, 0xc7, 0xb0, 0x59, 0xa9, 0x56, 0xcb, 0x6b, 0x15, 0x39, 0xe7, 0x69, 0x2c, + 0x3f, 0xb3, 0x5b, 0xa9, 0xca, 0xf9, 0x80, 0x59, 0x0f, 0x2d, 0xc9, 0xe3, 0xde, 0x14, 0x95, 0xad, + 0xbd, 0x4d, 0xb9, 0x80, 0x26, 0x61, 0x9c, 0x4d, 0x21, 0x8c, 0x98, 0x08, 0x89, 0xce, 0x9f, 0x95, + 0xe5, 0xae, 0x21, 0x8c, 0x65, 0x32, 0x20, 0x38, 0x7f, 0x56, 0x46, 0x73, 0x2b, 0x90, 0xa6, 0xd1, + 0x85, 0x10, 0x14, 0x36, 0xca, 0xcb, 0x95, 0x0d, 0x75, 0x7b, 0x67, 0x77, 0x7d, 0x7b, 0xab, 0xbc, + 0x21, 0x4b, 0x5d, 0x99, 0x52, 0xf9, 0xdc, 0xde, 0xba, 0x52, 0x59, 0x95, 0x13, 0x7e, 0xd9, 0x4e, + 0xa5, 0xbc, 0x5b, 0x59, 0x95, 0x93, 0x73, 0x3a, 0x4c, 0x47, 0xe5, 0x99, 0xc8, 0x93, 0xe1, 0xdb, + 0xe2, 0x44, 0x9f, 0x2d, 0xa6, 0x5c, 0x3d, 0x5b, 0xfc, 0x65, 0x09, 0xa6, 0x22, 0x72, 0x6d, 0xe4, + 0x24, 0x8f, 0x43, 0x9a, 0x85, 0x28, 0xab, 0x3e, 0xf7, 0x44, 0x26, 0x6d, 0x1a, 0xb0, 0x3d, 0x15, + 0x88, 0xe2, 0xfc, 0x15, 0x38, 0xd9, 0xa7, 0x02, 0x13, 0x8a, 0x1e, 0x23, 0x5f, 0x91, 0xa0, 0xd8, + 0x8f, 0x3b, 0x26, 0x51, 0x24, 0x02, 0x89, 0xe2, 0x62, 0xd8, 0x80, 0xd3, 0xfd, 0xd7, 0xd0, 0x63, + 0xc5, 0x9b, 0x12, 0x9c, 0x88, 0x6e, 0x54, 0x22, 0x6d, 0x78, 0x0c, 0x46, 0x5b, 0xd8, 0x3d, 0xb0, + 0x44, 0xb1, 0xbe, 0x2b, 0xa2, 0x04, 0x90, 0xe1, 0xb0, 0xaf, 0x38, 0xca, 0x5f, 0x43, 0x92, 0xfd, + 0xba, 0x0d, 0x66, 0x4d, 0x8f, 0xa5, 0x9f, 0x4f, 0xc0, 0x4d, 0x91, 0xe4, 0x91, 0x86, 0xde, 0x06, + 0x60, 0x98, 0xed, 0x8e, 0xcb, 0x0a, 0x32, 0xcb, 0x4f, 0x59, 0x2a, 0xa1, 0x67, 0x9f, 0xe4, 0x9e, + 0x8e, 0xeb, 0x8d, 0x27, 0xe9, 0x38, 0x30, 0x11, 0x55, 0xb8, 0xd0, 0x35, 0x34, 0x45, 0x0d, 0x9d, + 0xed, 0xb3, 0xd2, 0x9e, 0x5a, 0xf7, 0x00, 0xc8, 0x7a, 0xd3, 0xc0, 0xa6, 0xab, 0x3a, 0xae, 0x8d, + 0xb5, 0x96, 0x61, 0x36, 0x68, 0x02, 0xce, 0x94, 0xd2, 0x75, 0xad, 0xe9, 0x60, 0x65, 0x82, 0x0d, + 0x57, 0xc5, 0x28, 0x41, 0xd0, 0x2a, 0x63, 0xfb, 0x10, 0xa3, 0x01, 0x04, 0x1b, 0xf6, 0x10, 0x73, + 0x5f, 0x1b, 0x83, 0x9c, 0xaf, 0xad, 0x43, 0xa7, 0x21, 0xff, 0xbc, 0x76, 0x4d, 0x53, 0x45, 0xab, + 0xce, 0x3c, 0x91, 0x23, 0xb2, 0x1d, 0xde, 0xae, 0x3f, 0x00, 0xd3, 0x54, 0xc5, 0xea, 0xb8, 0xd8, + 0x56, 0xf5, 0xa6, 0xe6, 0x38, 0xd4, 0x69, 0x19, 0xaa, 0x8a, 0xc8, 0xd8, 0x36, 0x19, 0x5a, 0x11, + 0x23, 0xe8, 0x1c, 0x4c, 0x51, 0x44, 0xab, 0xd3, 0x74, 0x8d, 0x76, 0x13, 0xab, 0xe4, 0xe5, 0xc1, + 0xa1, 0x89, 0xd8, 0xb3, 0x6c, 0x92, 0x68, 0x6c, 0x72, 0x05, 0x62, 0x91, 0x83, 0x56, 0xe1, 0x36, + 0x0a, 0x6b, 0x60, 0x13, 0xdb, 0x9a, 0x8b, 0x55, 0xfc, 0x42, 0x47, 0x6b, 0x3a, 0xaa, 0x66, 0xd6, + 0xd4, 0x03, 0xcd, 0x39, 0x28, 0x4e, 0x13, 0x82, 0xe5, 0x44, 0x51, 0x52, 0x6e, 0x21, 0x8a, 0x6b, + 0x5c, 0xaf, 0x42, 0xd5, 0xca, 0x66, 0xed, 0xb2, 0xe6, 0x1c, 0xa0, 0x12, 0x9c, 0xa0, 0x2c, 0x8e, + 0x6b, 0x1b, 0x66, 0x43, 0xd5, 0x0f, 0xb0, 0x7e, 0x55, 0xed, 0xb8, 0xf5, 0x0b, 0xc5, 0x5b, 0xfd, + 0xf3, 0x53, 0x0b, 0xab, 0x54, 0x67, 0x85, 0xa8, 0xec, 0xb9, 0xf5, 0x0b, 0xa8, 0x0a, 0x79, 0xb2, + 0x19, 0x2d, 0xe3, 0x65, 0xac, 0xd6, 0x2d, 0x9b, 0x56, 0x96, 0x42, 0xc4, 0xc9, 0xf6, 0x79, 0x70, + 0x61, 0x9b, 0x03, 0x36, 0xad, 0x1a, 0x2e, 0xa5, 0xab, 0x3b, 0x95, 0xca, 0xaa, 0x92, 0x13, 0x2c, + 0x97, 0x2c, 0x9b, 0x04, 0x54, 0xc3, 0xf2, 0x1c, 0x9c, 0x63, 0x01, 0xd5, 0xb0, 0x84, 0x7b, 0xcf, + 0xc1, 0x94, 0xae, 0xb3, 0x35, 0x1b, 0xba, 0xca, 0x5b, 0x7c, 0xa7, 0x28, 0x07, 0x9c, 0xa5, 0xeb, + 0x6b, 0x4c, 0x81, 0xc7, 0xb8, 0x83, 0x1e, 0x81, 0x9b, 0xba, 0xce, 0xf2, 0x03, 0x27, 0x7b, 0x56, + 0x19, 0x86, 0x9e, 0x83, 0xa9, 0xf6, 0x61, 0x2f, 0x10, 0x05, 0x66, 0x6c, 0x1f, 0x86, 0x61, 0x77, + 0xd2, 0xd7, 0x36, 0x1b, 0xeb, 0x9a, 0x8b, 0x6b, 0xc5, 0x9b, 0xfd, 0xda, 0xbe, 0x01, 0xb4, 0x08, + 0xb2, 0xae, 0xab, 0xd8, 0xd4, 0xf6, 0x9b, 0x58, 0xd5, 0x6c, 0x6c, 0x6a, 0x4e, 0xf1, 0xa4, 0x5f, + 0xb9, 0xa0, 0xeb, 0x15, 0x3a, 0x5a, 0xa6, 0x83, 0xe8, 0x0c, 0x4c, 0x5a, 0xfb, 0xcf, 0xeb, 0x2c, + 0xb2, 0xd4, 0xb6, 0x8d, 0xeb, 0xc6, 0x4b, 0xc5, 0x3b, 0xa8, 0x9b, 0x26, 0xc8, 0x00, 0x8d, 0xab, + 0x1d, 0x2a, 0x46, 0xf7, 0x80, 0xac, 0x3b, 0x07, 0x9a, 0xdd, 0xa6, 0xa5, 0xdd, 0x69, 0x6b, 0x3a, + 0x2e, 0xde, 0xc9, 0x54, 0x99, 0x7c, 0x4b, 0x88, 0x49, 0x64, 0x3b, 0x2f, 0x1a, 0x75, 0x57, 0x30, + 0xde, 0xcd, 0x22, 0x9b, 0xca, 0x38, 0xdb, 0x15, 0x98, 0xee, 0x98, 0x86, 0xe9, 0x62, 0xbb, 0x6d, + 0x63, 0xd2, 0xc4, 0xb3, 0x93, 0x58, 0xfc, 0x97, 0xb1, 0x3e, 0x6d, 0xf8, 0x9e, 0x5f, 0x9b, 0x05, + 0x80, 0x32, 0xd5, 0xe9, 0x15, 0xce, 0x95, 0x20, 0xef, 0x8f, 0x0b, 0x94, 0x05, 0x16, 0x19, 0xb2, + 0x44, 0x6a, 0xec, 0xca, 0xf6, 0x2a, 0xa9, 0x8e, 0xcf, 0x56, 0xe4, 0x04, 0xa9, 0xd2, 0x1b, 0xeb, + 0xbb, 0x15, 0x55, 0xd9, 0xdb, 0xda, 0x5d, 0xdf, 0xac, 0xc8, 0xc9, 0x33, 0xd9, 0xcc, 0x7b, 0x63, + 0xf2, 0xf5, 0xeb, 0xd7, 0xaf, 0x27, 0xe6, 0xbe, 0x93, 0x80, 0x42, 0xb0, 0x33, 0x46, 0x9f, 0x85, + 0x9b, 0xc5, 0x6b, 0xac, 0x83, 0x5d, 0xf5, 0x45, 0xc3, 0xa6, 0xa1, 0xda, 0xd2, 0x58, 0x6f, 0xe9, + 0x79, 0x79, 0x9a, 0x6b, 0x55, 0xb1, 0xfb, 0xb4, 0x61, 0x93, 0x40, 0x6c, 0x69, 0x2e, 0xda, 0x80, + 0x93, 0xa6, 0xa5, 0x3a, 0xae, 0x66, 0xd6, 0x34, 0xbb, 0xa6, 0x76, 0x2f, 0x10, 0x54, 0x4d, 0xd7, + 0xb1, 0xe3, 0x58, 0xac, 0x44, 0x78, 0x2c, 0x9f, 0x31, 0xad, 0x2a, 0x57, 0xee, 0xe6, 0xce, 0x32, + 0x57, 0x0d, 0x45, 0x44, 0xb2, 0x5f, 0x44, 0xdc, 0x0a, 0xd9, 0x96, 0xd6, 0x56, 0xb1, 0xe9, 0xda, + 0x87, 0xb4, 0x9f, 0xcb, 0x28, 0x99, 0x96, 0xd6, 0xae, 0x90, 0xe7, 0x4f, 0x6e, 0x0f, 0xfc, 0x7e, + 0xfc, 0x61, 0x12, 0xf2, 0xfe, 0x9e, 0x8e, 0xb4, 0xc8, 0x3a, 0xcd, 0xdf, 0x12, 0x3d, 0xe1, 0xb7, + 0x0f, 0xec, 0x00, 0x17, 0x56, 0x48, 0x62, 0x2f, 0x8d, 0xb2, 0x4e, 0x4b, 0x61, 0x48, 0x52, 0x54, + 0xc9, 0x99, 0xc6, 0xac, 0x7f, 0xcf, 0x28, 0xfc, 0x09, 0xad, 0xc1, 0xe8, 0xf3, 0x0e, 0xe5, 0x1e, + 0xa5, 0xdc, 0x77, 0x0c, 0xe6, 0x7e, 0xa2, 0x4a, 0xc9, 0xb3, 0x4f, 0x54, 0xd5, 0xad, 0x6d, 0x65, + 0xb3, 0xbc, 0xa1, 0x70, 0x38, 0xba, 0x05, 0x52, 0x4d, 0xed, 0xe5, 0xc3, 0x60, 0x09, 0xa0, 0xa2, + 0x61, 0x1d, 0x7f, 0x0b, 0xa4, 0x5e, 0xc4, 0xda, 0xd5, 0x60, 0xe2, 0xa5, 0xa2, 0x4f, 0x30, 0xf4, + 0x17, 0x21, 0x4d, 0xfd, 0x85, 0x00, 0xb8, 0xc7, 0xe4, 0x11, 0x94, 0x81, 0xd4, 0xca, 0xb6, 0x42, + 0xc2, 0x5f, 0x86, 0x3c, 0x93, 0xaa, 0x3b, 0xeb, 0x95, 0x95, 0x8a, 0x9c, 0x98, 0x3b, 0x07, 0xa3, + 0xcc, 0x09, 0xe4, 0x68, 0x78, 0x6e, 0x90, 0x47, 0xf8, 0x23, 0xe7, 0x90, 0xc4, 0xe8, 0xde, 0xe6, + 0x72, 0x45, 0x91, 0x13, 0xfe, 0xed, 0x75, 0x20, 0xef, 0x6f, 0xe7, 0x7e, 0x36, 0x31, 0xf5, 0xf7, + 0x12, 0xe4, 0x7c, 0xed, 0x19, 0x69, 0x0c, 0xb4, 0x66, 0xd3, 0x7a, 0x51, 0xd5, 0x9a, 0x86, 0xe6, + 0xf0, 0xa0, 0x00, 0x2a, 0x2a, 0x13, 0xc9, 0xb0, 0x9b, 0xf6, 0x33, 0x31, 0xfe, 0x0d, 0x09, 0xe4, + 0x70, 0x6b, 0x17, 0x32, 0x50, 0xfa, 0xb9, 0x1a, 0xf8, 0xba, 0x04, 0x85, 0x60, 0x3f, 0x17, 0x32, + 0xef, 0xf4, 0xcf, 0xd5, 0xbc, 0x77, 0x12, 0x30, 0x1e, 0xe8, 0xe2, 0x86, 0xb5, 0xee, 0x05, 0x98, + 0x34, 0x6a, 0xb8, 0xd5, 0xb6, 0x5c, 0x6c, 0xea, 0x87, 0x6a, 0x13, 0x5f, 0xc3, 0xcd, 0xe2, 0x1c, + 0x4d, 0x14, 0x8b, 0x83, 0xfb, 0xc4, 0x85, 0xf5, 0x2e, 0x6e, 0x83, 0xc0, 0x4a, 0x53, 0xeb, 0xab, + 0x95, 0xcd, 0x9d, 0xed, 0xdd, 0xca, 0xd6, 0xca, 0x33, 0xea, 0xde, 0xd6, 0x93, 0x5b, 0xdb, 0x4f, + 0x6f, 0x29, 0xb2, 0x11, 0x52, 0xfb, 0x04, 0x8f, 0xfa, 0x0e, 0xc8, 0x61, 0xa3, 0xd0, 0xcd, 0x10, + 0x65, 0x96, 0x3c, 0x82, 0xa6, 0x60, 0x62, 0x6b, 0x5b, 0xad, 0xae, 0xaf, 0x56, 0xd4, 0xca, 0xa5, + 0x4b, 0x95, 0x95, 0xdd, 0x2a, 0x7b, 0x71, 0xf6, 0xb4, 0x77, 0x83, 0x87, 0xfa, 0xb5, 0x24, 0x4c, + 0x45, 0x58, 0x82, 0xca, 0xbc, 0x67, 0x67, 0xaf, 0x11, 0xf7, 0x0f, 0x63, 0xfd, 0x02, 0xe9, 0x0a, + 0x76, 0x34, 0xdb, 0xe5, 0x2d, 0xfe, 0x3d, 0x40, 0xbc, 0x64, 0xba, 0x46, 0xdd, 0xc0, 0x36, 0xbf, + 0x67, 0x60, 0x8d, 0xfc, 0x44, 0x57, 0xce, 0xae, 0x1a, 0xee, 0x03, 0xd4, 0xb6, 0x1c, 0xc3, 0x35, + 0xae, 0x61, 0xd5, 0x30, 0xc5, 0xa5, 0x04, 0x69, 0xec, 0x53, 0x8a, 0x2c, 0x46, 0xd6, 0x4d, 0xd7, + 0xd3, 0x36, 0x71, 0x43, 0x0b, 0x69, 0x93, 0x04, 0x9e, 0x54, 0x64, 0x31, 0xe2, 0x69, 0x9f, 0x86, + 0x7c, 0xcd, 0xea, 0x90, 0x36, 0x89, 0xe9, 0x91, 0x7a, 0x21, 0x29, 0x39, 0x26, 0xf3, 0x54, 0x78, + 0x1f, 0xdb, 0xbd, 0x0d, 0xc9, 0x2b, 0x39, 0x26, 0x63, 0x2a, 0x77, 0xc3, 0x84, 0xd6, 0x68, 0xd8, + 0x84, 0x5c, 0x10, 0xb1, 0xce, 0xbc, 0xe0, 0x89, 0xa9, 0xe2, 0xcc, 0x13, 0x90, 0x11, 0x7e, 0x20, + 0x25, 0x99, 0x78, 0x42, 0x6d, 0xb3, 0x3b, 0xa9, 0xc4, 0x7c, 0x56, 0xc9, 0x98, 0x62, 0xf0, 0x34, + 0xe4, 0x0d, 0x47, 0xed, 0x5e, 0x8e, 0x26, 0x4e, 0x25, 0xe6, 0x33, 0x4a, 0xce, 0x70, 0xbc, 0xdb, + 0xb0, 0xb9, 0x37, 0x13, 0x50, 0x08, 0x5e, 0xee, 0xa2, 0x55, 0xc8, 0x34, 0x2d, 0x5d, 0xa3, 0xa1, + 0xc5, 0x7e, 0x59, 0x98, 0x8f, 0xb9, 0x0f, 0x5e, 0xd8, 0xe0, 0xfa, 0x8a, 0x87, 0x9c, 0xf9, 0x67, + 0x09, 0x32, 0x42, 0x8c, 0x4e, 0x40, 0xaa, 0xad, 0xb9, 0x07, 0x94, 0x2e, 0xbd, 0x9c, 0x90, 0x25, + 0x85, 0x3e, 0x13, 0xb9, 0xd3, 0xd6, 0x4c, 0x1a, 0x02, 0x5c, 0x4e, 0x9e, 0xc9, 0xbe, 0x36, 0xb1, + 0x56, 0xa3, 0x6d, 0xbf, 0xd5, 0x6a, 0x61, 0xd3, 0x75, 0xc4, 0xbe, 0x72, 0xf9, 0x0a, 0x17, 0xa3, + 0x7b, 0x61, 0xd2, 0xb5, 0x35, 0xa3, 0x19, 0xd0, 0x4d, 0x51, 0x5d, 0x59, 0x0c, 0x78, 0xca, 0x25, + 0xb8, 0x45, 0xf0, 0xd6, 0xb0, 0xab, 0xe9, 0x07, 0xb8, 0xd6, 0x05, 0x8d, 0xd2, 0x9b, 0xc3, 0x9b, + 0xb9, 0xc2, 0x2a, 0x1f, 0x17, 0xd8, 0xb9, 0xef, 0x49, 0x30, 0x29, 0x5e, 0x54, 0x6a, 0x9e, 0xb3, + 0x36, 0x01, 0x34, 0xd3, 0xb4, 0x5c, 0xbf, 0xbb, 0x7a, 0x43, 0xb9, 0x07, 0xb7, 0x50, 0xf6, 0x40, + 0x8a, 0x8f, 0x60, 0xa6, 0x05, 0xd0, 0x1d, 0xe9, 0xeb, 0xb6, 0x93, 0x90, 0xe3, 0x37, 0xf7, 0xf4, + 0xe7, 0x1f, 0xf6, 0x6a, 0x0b, 0x4c, 0x44, 0xde, 0x68, 0xd0, 0x34, 0xa4, 0xf7, 0x71, 0xc3, 0x30, + 0xf9, 0x7d, 0x22, 0x7b, 0x10, 0xb7, 0x94, 0x29, 0xef, 0x96, 0x72, 0xf9, 0x0a, 0x4c, 0xe9, 0x56, + 0x2b, 0x6c, 0xee, 0xb2, 0x1c, 0x7a, 0xbd, 0x76, 0x2e, 0x4b, 0xcf, 0x42, 0xb7, 0xc5, 0xfc, 0x72, + 0x22, 0xb9, 0xb6, 0xb3, 0xfc, 0xd5, 0xc4, 0xcc, 0x1a, 0xc3, 0xed, 0x88, 0x65, 0x2a, 0xb8, 0xde, + 0xc4, 0x3a, 0x31, 0x1d, 0x7e, 0x7c, 0x17, 0xdc, 0xdf, 0x30, 0xdc, 0x83, 0xce, 0xfe, 0x82, 0x6e, + 0xb5, 0x16, 0x1b, 0x56, 0xc3, 0xea, 0xfe, 0xdc, 0x45, 0x9e, 0xe8, 0x03, 0xfd, 0x8f, 0xff, 0xe4, + 0x95, 0xf5, 0xa4, 0x33, 0xb1, 0xbf, 0x8f, 0x95, 0xb6, 0x60, 0x8a, 0x2b, 0xab, 0xf4, 0xce, 0x9d, + 0xbd, 0x1a, 0xa0, 0x81, 0xf7, 0x2e, 0xc5, 0x6f, 0xbc, 0x4b, 0x6b, 0xb5, 0x32, 0xc9, 0xa1, 0x64, + 0x8c, 0xbd, 0x40, 0x94, 0x14, 0xb8, 0x29, 0xc0, 0xc7, 0xce, 0x25, 0xb6, 0x63, 0x18, 0xbf, 0xc3, + 0x19, 0xa7, 0x7c, 0x8c, 0x55, 0x0e, 0x2d, 0xad, 0xc0, 0xf8, 0x71, 0xb8, 0xfe, 0x81, 0x73, 0xe5, + 0xb1, 0x9f, 0x64, 0x0d, 0x26, 0x28, 0x89, 0xde, 0x71, 0x5c, 0xab, 0x45, 0x93, 0xde, 0x60, 0x9a, + 0x7f, 0x7c, 0x97, 0x1d, 0x94, 0x02, 0x81, 0xad, 0x78, 0xa8, 0x52, 0x09, 0xe8, 0xcf, 0x0c, 0x35, + 0xac, 0x37, 0x63, 0x18, 0xde, 0xe2, 0x86, 0x78, 0xfa, 0xa5, 0xa7, 0x60, 0x9a, 0xfc, 0x4f, 0x73, + 0x92, 0xdf, 0x92, 0xf8, 0x5b, 0xa6, 0xe2, 0xf7, 0x5e, 0x61, 0x67, 0x71, 0xca, 0x23, 0xf0, 0xd9, + 0xe4, 0xdb, 0xc5, 0x06, 0x76, 0x5d, 0x6c, 0x3b, 0xaa, 0xd6, 0x8c, 0x32, 0xcf, 0xf7, 0x9a, 0x5e, + 0xfc, 0xc2, 0xfb, 0xc1, 0x5d, 0x5c, 0x63, 0xc8, 0x72, 0xb3, 0x59, 0xda, 0x83, 0x9b, 0x23, 0xa2, + 0x62, 0x08, 0xce, 0xd7, 0x38, 0xe7, 0x74, 0x4f, 0x64, 0x10, 0xda, 0x1d, 0x10, 0x72, 0x6f, 0x2f, + 0x87, 0xe0, 0xfc, 0x03, 0xce, 0x89, 0x38, 0x56, 0x6c, 0x29, 0x61, 0x7c, 0x02, 0x26, 0xaf, 0x61, + 0x7b, 0xdf, 0x72, 0xf8, 0xd5, 0xc8, 0x10, 0x74, 0xaf, 0x73, 0xba, 0x09, 0x0e, 0xa4, 0x77, 0x25, + 0x84, 0xeb, 0x11, 0xc8, 0xd4, 0x35, 0x1d, 0x0f, 0x41, 0xf1, 0x45, 0x4e, 0x31, 0x46, 0xf4, 0x09, + 0xb4, 0x0c, 0xf9, 0x86, 0xc5, 0xcb, 0x52, 0x3c, 0xfc, 0x0d, 0x0e, 0xcf, 0x09, 0x0c, 0xa7, 0x68, + 0x5b, 0xed, 0x4e, 0x93, 0xd4, 0xac, 0x78, 0x8a, 0x3f, 0x14, 0x14, 0x02, 0xc3, 0x29, 0x8e, 0xe1, + 0xd6, 0x3f, 0x12, 0x14, 0x8e, 0xcf, 0x9f, 0x8f, 0x43, 0xce, 0x32, 0x9b, 0x87, 0x96, 0x39, 0x8c, + 0x11, 0x5f, 0xe2, 0x0c, 0xc0, 0x21, 0x84, 0xe0, 0x22, 0x64, 0x87, 0xdd, 0x88, 0x3f, 0x7e, 0x5f, + 0x1c, 0x0f, 0xb1, 0x03, 0x6b, 0x30, 0x21, 0x12, 0x94, 0x61, 0x99, 0x43, 0x50, 0xfc, 0x09, 0xa7, + 0x28, 0xf8, 0x60, 0x7c, 0x19, 0x2e, 0x76, 0xdc, 0x06, 0x1e, 0x86, 0xe4, 0x4d, 0xb1, 0x0c, 0x0e, + 0xe1, 0xae, 0xdc, 0xc7, 0xa6, 0x7e, 0x30, 0x1c, 0xc3, 0x57, 0x84, 0x2b, 0x05, 0x86, 0x50, 0xac, + 0xc0, 0x78, 0x4b, 0xb3, 0x9d, 0x03, 0xad, 0x39, 0xd4, 0x76, 0xfc, 0x29, 0xe7, 0xc8, 0x7b, 0x20, + 0xee, 0x91, 0x8e, 0x79, 0x1c, 0x9a, 0xaf, 0x0a, 0x8f, 0xf8, 0x60, 0xfc, 0xe8, 0x39, 0x2e, 0xbd, + 0x80, 0x3a, 0x0e, 0xdb, 0xd7, 0xc4, 0xd1, 0x63, 0xd8, 0x4d, 0x3f, 0xe3, 0x45, 0xc8, 0x3a, 0xc6, + 0xcb, 0x43, 0xd1, 0xfc, 0x99, 0xd8, 0x69, 0x0a, 0x20, 0xe0, 0x67, 0xe0, 0x96, 0xc8, 0x32, 0x31, + 0x04, 0xd9, 0x9f, 0x73, 0xb2, 0x13, 0x11, 0xa5, 0x82, 0xa7, 0x84, 0xe3, 0x52, 0xfe, 0x85, 0x48, + 0x09, 0x38, 0xc4, 0xb5, 0x43, 0x5e, 0x14, 0x1c, 0xad, 0x7e, 0x3c, 0xaf, 0xfd, 0xa5, 0xf0, 0x1a, + 0xc3, 0x06, 0xbc, 0xb6, 0x0b, 0x27, 0x38, 0xe3, 0xf1, 0xf6, 0xf5, 0xeb, 0x22, 0xb1, 0x32, 0xf4, + 0x5e, 0x70, 0x77, 0xff, 0x1f, 0xcc, 0x78, 0xee, 0x14, 0x1d, 0xa9, 0xa3, 0xb6, 0xb4, 0xf6, 0x10, + 0xcc, 0xdf, 0xe0, 0xcc, 0x22, 0xe3, 0x7b, 0x2d, 0xad, 0xb3, 0xa9, 0xb5, 0x09, 0xf9, 0x15, 0x28, + 0x0a, 0xf2, 0x8e, 0x69, 0x63, 0xdd, 0x6a, 0x98, 0xc6, 0xcb, 0xb8, 0x36, 0x04, 0xf5, 0x5f, 0x85, + 0xb6, 0x6a, 0xcf, 0x07, 0x27, 0xcc, 0xeb, 0x20, 0x7b, 0xbd, 0x8a, 0x6a, 0xb4, 0xda, 0x96, 0xed, + 0xc6, 0x30, 0xfe, 0xb5, 0xd8, 0x29, 0x0f, 0xb7, 0x4e, 0x61, 0xa5, 0x0a, 0x14, 0xe8, 0xe3, 0xb0, + 0x21, 0xf9, 0x37, 0x9c, 0x68, 0xbc, 0x8b, 0xe2, 0x89, 0x43, 0xb7, 0x5a, 0x6d, 0xcd, 0x1e, 0x26, + 0xff, 0xfd, 0xad, 0x48, 0x1c, 0x1c, 0xc2, 0x13, 0x87, 0x7b, 0xd8, 0xc6, 0xa4, 0xda, 0x0f, 0xc1, + 0xf0, 0x4d, 0x91, 0x38, 0x04, 0x86, 0x53, 0x88, 0x86, 0x61, 0x08, 0x8a, 0xbf, 0x13, 0x14, 0x02, + 0x43, 0x28, 0x3e, 0xd7, 0x2d, 0xb4, 0x36, 0x6e, 0x18, 0x8e, 0x6b, 0xb3, 0x3e, 0x78, 0x30, 0xd5, + 0xb7, 0xde, 0x0f, 0x36, 0x61, 0x8a, 0x0f, 0x5a, 0x7a, 0x02, 0x26, 0x42, 0x2d, 0x06, 0x8a, 0xfb, + 0x66, 0xa1, 0xf8, 0x8b, 0x1f, 0xf2, 0x64, 0x14, 0xec, 0x30, 0x4a, 0x1b, 0x64, 0xdf, 0x83, 0x7d, + 0x40, 0x3c, 0xd9, 0x2b, 0x1f, 0x7a, 0x5b, 0x1f, 0x68, 0x03, 0x4a, 0x97, 0x60, 0x3c, 0xd0, 0x03, + 0xc4, 0x53, 0xfd, 0x12, 0xa7, 0xca, 0xfb, 0x5b, 0x80, 0xd2, 0x39, 0x48, 0x91, 0x7a, 0x1e, 0x0f, + 0xff, 0x65, 0x0e, 0xa7, 0xea, 0xa5, 0x47, 0x21, 0x23, 0xea, 0x78, 0x3c, 0xf4, 0x57, 0x38, 0xd4, + 0x83, 0x10, 0xb8, 0xa8, 0xe1, 0xf1, 0xf0, 0x5f, 0x15, 0x70, 0x01, 0x21, 0xf0, 0xe1, 0x5d, 0xf8, + 0xed, 0x5f, 0x4b, 0xf1, 0x3c, 0x2c, 0x7c, 0x77, 0x11, 0xc6, 0x78, 0xf1, 0x8e, 0x47, 0x7f, 0x9e, + 0x4f, 0x2e, 0x10, 0xa5, 0x87, 0x21, 0x3d, 0xa4, 0xc3, 0x7f, 0x9d, 0x43, 0x99, 0x7e, 0x69, 0x05, + 0x72, 0xbe, 0x82, 0x1d, 0x0f, 0xff, 0x0d, 0x0e, 0xf7, 0xa3, 0x88, 0xe9, 0xbc, 0x60, 0xc7, 0x13, + 0xfc, 0xa6, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xad, 0x8e, 0x47, 0xff, 0x96, 0xf0, 0xba, 0x80, + 0x94, 0x1e, 0x87, 0xac, 0x97, 0x7f, 0xe3, 0xf1, 0xbf, 0xcd, 0xf1, 0x5d, 0x0c, 0xf1, 0x80, 0x2f, + 0xff, 0xc7, 0x53, 0xfc, 0x8e, 0xf0, 0x80, 0x0f, 0x45, 0x8e, 0x51, 0xb8, 0xa6, 0xc7, 0x33, 0xfd, + 0xae, 0x38, 0x46, 0xa1, 0x92, 0x4e, 0x76, 0x93, 0xa6, 0xc1, 0x78, 0x8a, 0xdf, 0x13, 0xbb, 0x49, + 0xf5, 0x89, 0x19, 0xe1, 0x22, 0x19, 0xcf, 0xf1, 0xfb, 0xc2, 0x8c, 0x50, 0x8d, 0x2c, 0xed, 0x00, + 0xea, 0x2d, 0x90, 0xf1, 0x7c, 0xaf, 0x72, 0xbe, 0xc9, 0x9e, 0xfa, 0x58, 0x7a, 0x1a, 0x4e, 0x44, + 0x17, 0xc7, 0x78, 0xd6, 0x2f, 0x7c, 0x18, 0x7a, 0x9d, 0xf1, 0xd7, 0xc6, 0xd2, 0x6e, 0x37, 0xcb, + 0xfa, 0x0b, 0x63, 0x3c, 0xed, 0x6b, 0x1f, 0x06, 0x13, 0xad, 0xbf, 0x2e, 0x96, 0xca, 0x00, 0xdd, + 0x9a, 0x14, 0xcf, 0xf5, 0x3a, 0xe7, 0xf2, 0x81, 0xc8, 0xd1, 0xe0, 0x25, 0x29, 0x1e, 0xff, 0x45, + 0x71, 0x34, 0x38, 0x82, 0x1c, 0x0d, 0x51, 0x8d, 0xe2, 0xd1, 0x6f, 0x88, 0xa3, 0x21, 0x20, 0xa5, + 0x8b, 0x90, 0x31, 0x3b, 0xcd, 0x26, 0x89, 0x2d, 0x34, 0xf8, 0x33, 0xa2, 0xe2, 0xbf, 0x7e, 0xc4, + 0xc1, 0x02, 0x50, 0x3a, 0x07, 0x69, 0xdc, 0xda, 0xc7, 0xb5, 0x38, 0xe4, 0xbf, 0x7d, 0x24, 0xf2, + 0x09, 0xd1, 0x2e, 0x3d, 0x0e, 0xc0, 0x5e, 0xa6, 0xe9, 0xaf, 0x44, 0x31, 0xd8, 0x7f, 0xff, 0x88, + 0x7f, 0xa1, 0xd0, 0x85, 0x74, 0x09, 0xd8, 0xf7, 0x0e, 0x83, 0x09, 0xde, 0x0f, 0x12, 0xd0, 0x17, + 0xf0, 0x47, 0x60, 0xec, 0x79, 0xc7, 0x32, 0x5d, 0xad, 0x11, 0x87, 0xfe, 0x0f, 0x8e, 0x16, 0xfa, + 0xc4, 0x61, 0x2d, 0xcb, 0xc6, 0xae, 0xd6, 0x70, 0xe2, 0xb0, 0xff, 0xc9, 0xb1, 0x1e, 0x80, 0x80, + 0x75, 0xcd, 0x71, 0x87, 0x59, 0xf7, 0x7f, 0x09, 0xb0, 0x00, 0x10, 0xa3, 0xc9, 0xff, 0x57, 0xf1, + 0x61, 0x1c, 0xf6, 0x03, 0x61, 0x34, 0xd7, 0x2f, 0x3d, 0x0a, 0x59, 0xf2, 0x2f, 0xfb, 0x6a, 0x27, + 0x06, 0xfc, 0xdf, 0x1c, 0xdc, 0x45, 0x90, 0x99, 0x1d, 0xb7, 0xe6, 0x1a, 0xf1, 0xce, 0xfe, 0x1f, + 0xbe, 0xd3, 0x42, 0xbf, 0x54, 0x86, 0x9c, 0xe3, 0xd6, 0x6a, 0x1d, 0xde, 0xd1, 0xc4, 0xc0, 0x7f, + 0xfc, 0x91, 0xf7, 0x92, 0xeb, 0x61, 0x96, 0x4f, 0x47, 0x5f, 0xd6, 0xc1, 0x9a, 0xb5, 0x66, 0xb1, + 0x6b, 0x3a, 0xf8, 0xc9, 0xfd, 0x70, 0x5a, 0xb7, 0x5a, 0xfb, 0x96, 0xb3, 0xe8, 0x25, 0x92, 0xc5, + 0x96, 0xd6, 0x76, 0xa8, 0xf6, 0x12, 0xbf, 0x69, 0xcb, 0xf1, 0x27, 0x32, 0x30, 0x73, 0xbc, 0x5b, + 0xba, 0xb9, 0xdb, 0x60, 0xfc, 0x52, 0xd3, 0xd2, 0x5c, 0xc3, 0x6c, 0xec, 0x58, 0x86, 0xe9, 0xa2, + 0x3c, 0x48, 0x75, 0xfa, 0x13, 0x93, 0xa4, 0x48, 0xf5, 0xb9, 0x7f, 0x4a, 0x43, 0x96, 0x5d, 0xf0, + 0x6c, 0x6a, 0x6d, 0xf4, 0x0b, 0x90, 0xdf, 0xe2, 0x67, 0xe4, 0xc1, 0xa5, 0x0b, 0x8e, 0x77, 0x9b, + 0xec, 0x9b, 0x7f, 0xc1, 0xd3, 0x5e, 0xf0, 0xab, 0xd2, 0x9f, 0x94, 0x97, 0x1f, 0xf8, 0xc1, 0xdb, + 0x27, 0xef, 0xeb, 0x6b, 0x1f, 0x29, 0x8a, 0x8b, 0x2c, 0x98, 0x17, 0xf6, 0x0c, 0xd3, 0x7d, 0x70, + 0xe9, 0x82, 0x12, 0x98, 0x0f, 0x5d, 0x83, 0x0c, 0x1f, 0x70, 0xf8, 0xaf, 0x0c, 0x77, 0xf4, 0x99, + 0x5b, 0xa8, 0xb1, 0x79, 0xcf, 0xbe, 0xf5, 0xf6, 0xc9, 0x91, 0x63, 0xcf, 0xed, 0xcd, 0x85, 0x5e, + 0x80, 0x9c, 0xb0, 0x63, 0xbd, 0xe6, 0xf0, 0x8f, 0x89, 0xef, 0x8e, 0x59, 0xf6, 0x7a, 0x8d, 0xcf, + 0x7e, 0xd7, 0x0f, 0xde, 0x3e, 0x39, 0x37, 0x70, 0xe6, 0x85, 0xbd, 0x8e, 0x51, 0x53, 0xfc, 0x73, + 0xa0, 0xe7, 0x20, 0x49, 0xa6, 0x62, 0x9f, 0x1d, 0x9f, 0xec, 0x33, 0x95, 0x37, 0xc5, 0x19, 0xbe, + 0xc0, 0x61, 0xa6, 0x21, 0xbc, 0x33, 0x8f, 0xc3, 0x64, 0xcf, 0xf6, 0x20, 0x19, 0x92, 0x57, 0xf1, + 0x21, 0xff, 0xd2, 0x88, 0xfc, 0x8b, 0xa6, 0xbb, 0x5f, 0xd2, 0x49, 0xf3, 0x79, 0xfe, 0x79, 0x5c, + 0x29, 0x71, 0x41, 0x9a, 0xb9, 0x08, 0xe3, 0x01, 0x1f, 0x1f, 0x0b, 0xfc, 0x18, 0xc8, 0x61, 0x2f, + 0x1d, 0x0b, 0x7f, 0x1e, 0x32, 0x1f, 0x07, 0x37, 0xf7, 0x7d, 0x04, 0x63, 0xe5, 0x66, 0x73, 0x53, + 0x6b, 0x3b, 0xe8, 0x19, 0x98, 0x64, 0xad, 0xfb, 0xae, 0xb5, 0x4a, 0x7f, 0xd7, 0xd9, 0xd4, 0xda, + 0x3c, 0xa0, 0xef, 0x0d, 0xb8, 0x9b, 0x03, 0x16, 0x7a, 0xb4, 0xe9, 0xfc, 0x4a, 0x2f, 0x0b, 0x7a, + 0x0a, 0x64, 0x21, 0xa4, 0x67, 0x8b, 0x30, 0xb3, 0x70, 0x3d, 0x33, 0x90, 0x59, 0x28, 0x33, 0xe2, + 0x1e, 0x0e, 0xf4, 0x18, 0x64, 0xd6, 0x4d, 0xf7, 0xa1, 0x25, 0xc2, 0xc7, 0x62, 0x70, 0x2e, 0x92, + 0x4f, 0x28, 0x31, 0x1e, 0x0f, 0xc3, 0xf1, 0xe7, 0xcf, 0x12, 0x7c, 0x6a, 0x30, 0x9e, 0x2a, 0x75, + 0xf1, 0xf4, 0x11, 0x95, 0x21, 0x4b, 0xf6, 0x9c, 0x19, 0xc0, 0xbe, 0x63, 0xbf, 0x3d, 0x92, 0xc0, + 0xd3, 0x62, 0x0c, 0x5d, 0x94, 0xa0, 0x60, 0x36, 0x8c, 0xc6, 0x50, 0xf8, 0x8c, 0xe8, 0xa2, 0x08, + 0x45, 0xd5, 0xb3, 0x62, 0x6c, 0x00, 0x45, 0x35, 0x64, 0x45, 0xd5, 0x6f, 0x45, 0xd5, 0xb3, 0x22, + 0x13, 0x43, 0xe1, 0xb7, 0xc2, 0x7b, 0x46, 0xab, 0x00, 0x97, 0x8c, 0x97, 0x70, 0x8d, 0x99, 0x91, + 0x8d, 0x48, 0x46, 0x82, 0xa3, 0xab, 0xc6, 0x48, 0x7c, 0x38, 0xb4, 0x06, 0xb9, 0x6a, 0xbd, 0x4b, + 0x03, 0xfc, 0x33, 0xfe, 0x48, 0x53, 0xea, 0x21, 0x1e, 0x3f, 0xd2, 0x33, 0x87, 0x2d, 0x29, 0x17, + 0x67, 0x8e, 0x6f, 0x4d, 0x3e, 0x5c, 0xd7, 0x1c, 0x46, 0x93, 0x8f, 0x35, 0xc7, 0xc7, 0xe3, 0x47, + 0xa2, 0x8b, 0x30, 0xb6, 0x6c, 0x59, 0x44, 0xb3, 0x38, 0x4e, 0x49, 0x4e, 0x47, 0x92, 0x70, 0x1d, + 0x46, 0x20, 0x10, 0x74, 0x77, 0x68, 0xe8, 0x13, 0x78, 0x61, 0xd0, 0xee, 0x08, 0x2d, 0xb1, 0x3b, + 0xe2, 0xd9, 0x7f, 0x02, 0x97, 0x0f, 0x5d, 0x4c, 0xda, 0xe4, 0xe2, 0xc4, 0x10, 0x27, 0x50, 0x28, + 0x87, 0x4e, 0xa0, 0x10, 0xa3, 0x2a, 0x4c, 0x08, 0x59, 0xc5, 0xec, 0x90, 0x1c, 0x5c, 0x94, 0xf9, + 0x37, 0xc6, 0x83, 0x68, 0xb9, 0x2e, 0x63, 0x0d, 0x33, 0xa0, 0x1d, 0x28, 0x08, 0xd1, 0xa6, 0x43, + 0x17, 0x3d, 0x19, 0x51, 0x57, 0xc3, 0x9c, 0x4c, 0x95, 0x51, 0x86, 0xf0, 0x33, 0xab, 0x70, 0x22, + 0x3a, 0x5b, 0xc5, 0x65, 0x4b, 0xc9, 0x9f, 0x65, 0x57, 0xe0, 0xa6, 0xc8, 0xcc, 0x14, 0x47, 0x92, + 0x08, 0xd5, 0x89, 0x40, 0x3a, 0xf2, 0x83, 0xd3, 0x11, 0xe0, 0x74, 0x2f, 0xb8, 0x1b, 0x64, 0x7e, + 0x70, 0x32, 0x02, 0x9c, 0xf4, 0x83, 0x3f, 0x0b, 0x85, 0x60, 0x1e, 0xf2, 0xa3, 0xc7, 0x23, 0xd0, + 0xe3, 0x11, 0xe8, 0xe8, 0xb9, 0x53, 0x11, 0xe8, 0x54, 0x08, 0x5d, 0xed, 0x3b, 0xf7, 0x64, 0x04, + 0x7a, 0x32, 0x02, 0x1d, 0x3d, 0x37, 0x8a, 0x40, 0x23, 0x3f, 0xfa, 0x51, 0x98, 0x08, 0xa5, 0x1c, + 0x3f, 0x7c, 0x2c, 0x02, 0x3e, 0x16, 0xaa, 0xcd, 0xe1, 0x54, 0xe3, 0xc7, 0x4f, 0x44, 0xe0, 0x27, + 0xa2, 0xa6, 0x8f, 0xb6, 0x7e, 0x34, 0x02, 0x3e, 0x1a, 0x39, 0x7d, 0x34, 0x5e, 0x8e, 0xc0, 0xcb, + 0x7e, 0x7c, 0x09, 0xf2, 0xfe, 0xac, 0xe2, 0xc7, 0x66, 0x22, 0xb0, 0x99, 0xb0, 0xdf, 0x03, 0x29, + 0x25, 0x2e, 0xd2, 0xb3, 0x7d, 0x8e, 0x4b, 0x20, 0x8d, 0x1c, 0xab, 0xb3, 0xb9, 0x02, 0xd3, 0x51, + 0x49, 0x23, 0x82, 0xe3, 0x8c, 0x9f, 0xa3, 0xb0, 0x34, 0x1d, 0x48, 0x16, 0x14, 0xd7, 0x69, 0xf9, + 0x99, 0x9f, 0x83, 0xa9, 0x88, 0xd4, 0x11, 0x41, 0xfc, 0x80, 0x9f, 0x38, 0xb7, 0x34, 0x13, 0x20, + 0x0e, 0xbc, 0x2b, 0xf8, 0x5b, 0xab, 0x1f, 0x4e, 0x41, 0x81, 0xa7, 0xa8, 0x6d, 0xbb, 0x86, 0x6d, + 0x5c, 0x43, 0xff, 0xbf, 0x7f, 0x87, 0xb5, 0x14, 0x95, 0xda, 0x38, 0xee, 0x18, 0x8d, 0xd6, 0x73, + 0x7d, 0x1b, 0xad, 0x07, 0x87, 0x99, 0x20, 0xae, 0xdf, 0xaa, 0xf4, 0xf4, 0x5b, 0xf7, 0x0c, 0xa2, + 0xed, 0xd7, 0x76, 0x55, 0x7a, 0xda, 0xae, 0x38, 0x9a, 0xc8, 0xee, 0xeb, 0x72, 0x6f, 0xf7, 0x75, + 0x66, 0x10, 0x4f, 0xff, 0x26, 0xec, 0x72, 0x6f, 0x13, 0x16, 0xcb, 0x14, 0xdd, 0x8b, 0x5d, 0xee, + 0xed, 0xc5, 0x06, 0x32, 0xf5, 0x6f, 0xc9, 0x2e, 0xf7, 0xb6, 0x64, 0xb1, 0x4c, 0xd1, 0x9d, 0xd9, + 0x93, 0x11, 0x9d, 0xd9, 0xbd, 0x83, 0xa8, 0x06, 0x35, 0x68, 0x5b, 0x51, 0x0d, 0xda, 0x7d, 0x03, + 0x0d, 0x1b, 0xd8, 0xa7, 0x3d, 0x19, 0xd1, 0xa7, 0xc5, 0x1b, 0xd7, 0xa7, 0x5d, 0xdb, 0x8a, 0x6a, + 0xd7, 0x86, 0x30, 0xae, 0x5f, 0xd7, 0xb6, 0x1c, 0xee, 0xda, 0xe6, 0x07, 0x71, 0x45, 0x37, 0x6f, + 0x97, 0x7b, 0x9b, 0xb7, 0x33, 0xf1, 0x67, 0x31, 0xaa, 0x87, 0x7b, 0xae, 0x6f, 0x0f, 0x37, 0xd4, + 0xe1, 0x8e, 0x6b, 0xe5, 0x9e, 0xed, 0xd7, 0xca, 0x3d, 0x30, 0x0c, 0xfb, 0xe0, 0x8e, 0xee, 0xe9, + 0x3e, 0x1d, 0xdd, 0xe2, 0x30, 0xd4, 0x9f, 0x36, 0x76, 0x9f, 0x36, 0x76, 0x9f, 0x36, 0x76, 0x9f, + 0x36, 0x76, 0xff, 0x37, 0x1a, 0xbb, 0x52, 0xea, 0xd5, 0x2f, 0x9d, 0x94, 0xce, 0x9c, 0x86, 0x31, + 0x3e, 0x35, 0x1a, 0x85, 0xc4, 0x66, 0x59, 0x1e, 0xa1, 0x7f, 0x97, 0x65, 0x89, 0xfe, 0x5d, 0x91, + 0x13, 0xcb, 0x1b, 0x6f, 0xdd, 0x98, 0x1d, 0xf9, 0xee, 0x8d, 0xd9, 0x91, 0xef, 0xdf, 0x98, 0x1d, + 0x79, 0xe7, 0xc6, 0xac, 0xf4, 0xde, 0x8d, 0x59, 0xe9, 0x83, 0x1b, 0xb3, 0xd2, 0x4f, 0x6f, 0xcc, + 0x4a, 0xd7, 0x8f, 0x66, 0xa5, 0xaf, 0x1c, 0xcd, 0x4a, 0x5f, 0x3f, 0x9a, 0x95, 0xbe, 0x75, 0x34, + 0x2b, 0x7d, 0xfb, 0x68, 0x56, 0x7a, 0xeb, 0x68, 0x56, 0xfa, 0xee, 0xd1, 0xec, 0xc8, 0x3b, 0x47, + 0xb3, 0xd2, 0x7b, 0x47, 0xb3, 0x23, 0x1f, 0x1c, 0xcd, 0x4a, 0x3f, 0x3d, 0x9a, 0x1d, 0xb9, 0xfe, + 0xa3, 0xd9, 0x91, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x91, 0x69, 0xdc, 0x1d, 0x56, 0x45, 0x00, 0x00, } r := bytes.NewReader(gzipped) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/neither/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/neither/mapsproto2.pb.go index 63cc4a504..5609f29c6 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/neither/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/neither/mapsproto2.pb.go @@ -177,287 +177,294 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4468 bytes of a gzipped FileDescriptorSet + // 4580 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x98, 0xda, 0x95, - 0x5f, 0xf2, 0xda, 0x96, 0x6c, 0x79, 0x77, 0xbd, 0xe6, 0xc6, 0x36, 0x28, 0x89, 0xab, 0x95, 0xa3, - 0x57, 0x86, 0x92, 0x5f, 0x81, 0x31, 0xff, 0xd1, 0xf0, 0x8a, 0x1a, 0x2f, 0x39, 0xc3, 0xcc, 0x0c, - 0xd7, 0x96, 0x3f, 0xfc, 0xb1, 0x81, 0xfb, 0x40, 0x10, 0xf4, 0x5d, 0xa0, 0x8e, 0xe3, 0xb8, 0x49, - 0x80, 0xd6, 0x69, 0xfa, 0x4a, 0xfa, 0x48, 0x83, 0x7e, 0xca, 0x97, 0xb4, 0x06, 0x0a, 0x14, 0xc9, - 0xb7, 0x20, 0x08, 0x8c, 0xac, 0x6a, 0xa0, 0x6e, 0xeb, 0xb6, 0x6e, 0xe3, 0xa2, 0x01, 0xfc, 0xa5, - 0xb8, 0xaf, 0xe1, 0xcc, 0x70, 0xc8, 0xa1, 0x0c, 0xe4, 0xf1, 0xc1, 0x9f, 0xa4, 0x39, 0xf7, 0xfc, - 0x7e, 0xf7, 0xdc, 0x73, 0xcf, 0x3d, 0xe7, 0xcc, 0xe5, 0xc0, 0x67, 0xce, 0xc1, 0xe9, 0x86, 0x65, - 0x35, 0x9a, 0x78, 0xb1, 0x6d, 0x5b, 0xae, 0xb5, 0xdf, 0x39, 0x58, 0xac, 0x63, 0x47, 0xb7, 0x8d, - 0xb6, 0x6b, 0xd9, 0x0b, 0x54, 0x86, 0x26, 0x98, 0xc6, 0x82, 0xd0, 0x98, 0xdb, 0x84, 0xc9, 0xcb, - 0x46, 0x13, 0xaf, 0x7a, 0x8a, 0x35, 0xec, 0xa2, 0x8b, 0x90, 0x3a, 0x30, 0x9a, 0xb8, 0x28, 0x9d, - 0x4e, 0xce, 0xe7, 0x96, 0xee, 0x58, 0x08, 0x81, 0x16, 0x82, 0x88, 0x1d, 0x22, 0x56, 0x28, 0x62, - 0xee, 0xed, 0x14, 0x4c, 0x45, 0x8c, 0x22, 0x04, 0x29, 0x53, 0x6b, 0x11, 0x46, 0x69, 0x3e, 0xab, - 0xd0, 0xff, 0x51, 0x11, 0xc6, 0xda, 0x9a, 0x7e, 0x55, 0x6b, 0xe0, 0x62, 0x82, 0x8a, 0xc5, 0x23, - 0x2a, 0x01, 0xd4, 0x71, 0x1b, 0x9b, 0x75, 0x6c, 0xea, 0x47, 0xc5, 0xe4, 0xe9, 0xe4, 0x7c, 0x56, - 0xf1, 0x49, 0xd0, 0xbd, 0x30, 0xd9, 0xee, 0xec, 0x37, 0x0d, 0x5d, 0xf5, 0xa9, 0xc1, 0xe9, 0xe4, - 0x7c, 0x5a, 0x91, 0xd9, 0xc0, 0x6a, 0x57, 0xf9, 0x6e, 0x98, 0x78, 0x01, 0x6b, 0x57, 0xfd, 0xaa, - 0x39, 0xaa, 0x5a, 0x20, 0x62, 0x9f, 0xe2, 0x0a, 0xe4, 0x5b, 0xd8, 0x71, 0xb4, 0x06, 0x56, 0xdd, - 0xa3, 0x36, 0x2e, 0xa6, 0xe8, 0xea, 0x4f, 0xf7, 0xac, 0x3e, 0xbc, 0xf2, 0x1c, 0x47, 0xed, 0x1e, - 0xb5, 0x31, 0xaa, 0x40, 0x16, 0x9b, 0x9d, 0x16, 0x63, 0x48, 0xf7, 0xf1, 0x5f, 0xd5, 0xec, 0xb4, - 0xc2, 0x2c, 0x19, 0x02, 0xe3, 0x14, 0x63, 0x0e, 0xb6, 0xaf, 0x19, 0x3a, 0x2e, 0x8e, 0x52, 0x82, - 0xbb, 0x7b, 0x08, 0x6a, 0x6c, 0x3c, 0xcc, 0x21, 0x70, 0x68, 0x05, 0xb2, 0xf8, 0x45, 0x17, 0x9b, - 0x8e, 0x61, 0x99, 0xc5, 0x31, 0x4a, 0x72, 0x67, 0xc4, 0x2e, 0xe2, 0x66, 0x3d, 0x4c, 0xd1, 0xc5, - 0xa1, 0x0b, 0x30, 0x66, 0xb5, 0x5d, 0xc3, 0x32, 0x9d, 0x62, 0xe6, 0xb4, 0x34, 0x9f, 0x5b, 0xfa, - 0x58, 0x64, 0x20, 0x6c, 0x33, 0x1d, 0x45, 0x28, 0xa3, 0x75, 0x90, 0x1d, 0xab, 0x63, 0xeb, 0x58, - 0xd5, 0xad, 0x3a, 0x56, 0x0d, 0xf3, 0xc0, 0x2a, 0x66, 0x29, 0xc1, 0x6c, 0xef, 0x42, 0xa8, 0xe2, - 0x8a, 0x55, 0xc7, 0xeb, 0xe6, 0x81, 0xa5, 0x14, 0x9c, 0xc0, 0x33, 0x3a, 0x05, 0xa3, 0xce, 0x91, - 0xe9, 0x6a, 0x2f, 0x16, 0xf3, 0x34, 0x42, 0xf8, 0xd3, 0xdc, 0xff, 0xa6, 0x61, 0x62, 0x98, 0x10, - 0xbb, 0x04, 0xe9, 0x03, 0xb2, 0xca, 0x62, 0xe2, 0x24, 0x3e, 0x60, 0x98, 0xa0, 0x13, 0x47, 0x3f, - 0xa4, 0x13, 0x2b, 0x90, 0x33, 0xb1, 0xe3, 0xe2, 0x3a, 0x8b, 0x88, 0xe4, 0x90, 0x31, 0x05, 0x0c, - 0xd4, 0x1b, 0x52, 0xa9, 0x0f, 0x15, 0x52, 0x4f, 0xc3, 0x84, 0x67, 0x92, 0x6a, 0x6b, 0x66, 0x43, - 0xc4, 0xe6, 0x62, 0x9c, 0x25, 0x0b, 0x55, 0x81, 0x53, 0x08, 0x4c, 0x29, 0xe0, 0xc0, 0x33, 0x5a, - 0x05, 0xb0, 0x4c, 0x6c, 0x1d, 0xa8, 0x75, 0xac, 0x37, 0x8b, 0x99, 0x3e, 0x5e, 0xda, 0x26, 0x2a, - 0x3d, 0x5e, 0xb2, 0x98, 0x54, 0x6f, 0xa2, 0x47, 0xba, 0xa1, 0x36, 0xd6, 0x27, 0x52, 0x36, 0xd9, - 0x21, 0xeb, 0x89, 0xb6, 0x3d, 0x28, 0xd8, 0x98, 0xc4, 0x3d, 0xae, 0xf3, 0x95, 0x65, 0xa9, 0x11, - 0x0b, 0xb1, 0x2b, 0x53, 0x38, 0x8c, 0x2d, 0x6c, 0xdc, 0xf6, 0x3f, 0xa2, 0xdb, 0xc1, 0x13, 0xa8, - 0x34, 0xac, 0x80, 0x66, 0xa1, 0xbc, 0x10, 0x6e, 0x69, 0x2d, 0x3c, 0x73, 0x11, 0x0a, 0x41, 0xf7, - 0xa0, 0x69, 0x48, 0x3b, 0xae, 0x66, 0xbb, 0x34, 0x0a, 0xd3, 0x0a, 0x7b, 0x40, 0x32, 0x24, 0xb1, - 0x59, 0xa7, 0x59, 0x2e, 0xad, 0x90, 0x7f, 0x67, 0x1e, 0x86, 0xf1, 0xc0, 0xf4, 0xc3, 0x02, 0xe7, - 0x5e, 0x19, 0x85, 0xe9, 0xa8, 0x98, 0x8b, 0x0c, 0xff, 0x53, 0x30, 0x6a, 0x76, 0x5a, 0xfb, 0xd8, - 0x2e, 0x26, 0x29, 0x03, 0x7f, 0x42, 0x15, 0x48, 0x37, 0xb5, 0x7d, 0xdc, 0x2c, 0xa6, 0x4e, 0x4b, - 0xf3, 0x85, 0xa5, 0x7b, 0x87, 0x8a, 0xea, 0x85, 0x0d, 0x02, 0x51, 0x18, 0x12, 0x3d, 0x06, 0x29, - 0x9e, 0xe2, 0x08, 0xc3, 0xd9, 0xe1, 0x18, 0x48, 0x2c, 0x2a, 0x14, 0x87, 0x6e, 0x85, 0x2c, 0xf9, - 0xcb, 0x7c, 0x3b, 0x4a, 0x6d, 0xce, 0x10, 0x01, 0xf1, 0x2b, 0x9a, 0x81, 0x0c, 0x0d, 0xb3, 0x3a, - 0x16, 0xa5, 0xc1, 0x7b, 0x26, 0x1b, 0x53, 0xc7, 0x07, 0x5a, 0xa7, 0xe9, 0xaa, 0xd7, 0xb4, 0x66, - 0x07, 0xd3, 0x80, 0xc9, 0x2a, 0x79, 0x2e, 0x7c, 0x92, 0xc8, 0xd0, 0x2c, 0xe4, 0x58, 0x54, 0x1a, - 0x66, 0x1d, 0xbf, 0x48, 0xb3, 0x4f, 0x5a, 0x61, 0x81, 0xba, 0x4e, 0x24, 0x64, 0xfa, 0xe7, 0x1d, - 0xcb, 0x14, 0x5b, 0x4b, 0xa7, 0x20, 0x02, 0x3a, 0xfd, 0xc3, 0xe1, 0xc4, 0x77, 0x5b, 0xf4, 0xf2, - 0xc2, 0xb1, 0x38, 0xf7, 0xcd, 0x04, 0xa4, 0xe8, 0x79, 0x9b, 0x80, 0xdc, 0xee, 0x33, 0x3b, 0x55, - 0x75, 0x75, 0x7b, 0x6f, 0x79, 0xa3, 0x2a, 0x4b, 0xa8, 0x00, 0x40, 0x05, 0x97, 0x37, 0xb6, 0x2b, - 0xbb, 0x72, 0xc2, 0x7b, 0x5e, 0xdf, 0xda, 0xbd, 0x70, 0x4e, 0x4e, 0x7a, 0x80, 0x3d, 0x26, 0x48, - 0xf9, 0x15, 0x1e, 0x5a, 0x92, 0xd3, 0x48, 0x86, 0x3c, 0x23, 0x58, 0x7f, 0xba, 0xba, 0x7a, 0xe1, - 0x9c, 0x3c, 0x1a, 0x94, 0x3c, 0xb4, 0x24, 0x8f, 0xa1, 0x71, 0xc8, 0x52, 0xc9, 0xf2, 0xf6, 0xf6, - 0x86, 0x9c, 0xf1, 0x38, 0x6b, 0xbb, 0xca, 0xfa, 0xd6, 0x9a, 0x9c, 0xf5, 0x38, 0xd7, 0x94, 0xed, - 0xbd, 0x1d, 0x19, 0x3c, 0x86, 0xcd, 0x6a, 0xad, 0x56, 0x59, 0xab, 0xca, 0x39, 0x4f, 0x63, 0xf9, - 0x99, 0xdd, 0x6a, 0x4d, 0xce, 0x07, 0xcc, 0x7a, 0x68, 0x49, 0x1e, 0xf7, 0xa6, 0xa8, 0x6e, 0xed, - 0x6d, 0xca, 0x05, 0x34, 0x09, 0xe3, 0x6c, 0x0a, 0x61, 0xc4, 0x44, 0x48, 0x74, 0xe1, 0x9c, 0x2c, - 0x77, 0x0d, 0x61, 0x2c, 0x93, 0x01, 0xc1, 0x85, 0x73, 0x32, 0x9a, 0x5b, 0x81, 0x34, 0x8d, 0x2e, - 0x84, 0xa0, 0xb0, 0x51, 0x59, 0xae, 0x6e, 0xa8, 0xdb, 0x3b, 0xbb, 0xeb, 0xdb, 0x5b, 0x95, 0x0d, - 0x59, 0xea, 0xca, 0x94, 0xea, 0x27, 0xf7, 0xd6, 0x95, 0xea, 0xaa, 0x9c, 0xf0, 0xcb, 0x76, 0xaa, - 0x95, 0xdd, 0xea, 0xaa, 0x9c, 0x9c, 0xd3, 0x61, 0x3a, 0x2a, 0xcf, 0x44, 0x9e, 0x0c, 0xdf, 0x16, - 0x27, 0xfa, 0x6c, 0x31, 0xe5, 0xea, 0xd9, 0xe2, 0xaf, 0x48, 0x30, 0x15, 0x91, 0x6b, 0x23, 0x27, - 0x79, 0x1c, 0xd2, 0x2c, 0x44, 0x59, 0xf5, 0xb9, 0x27, 0x32, 0x69, 0xd3, 0x80, 0xed, 0xa9, 0x40, - 0x14, 0xe7, 0xaf, 0xc0, 0xc9, 0x3e, 0x15, 0x98, 0x50, 0xf4, 0x18, 0xf9, 0xb2, 0x04, 0xc5, 0x7e, - 0xdc, 0x31, 0x89, 0x22, 0x11, 0x48, 0x14, 0x97, 0xc2, 0x06, 0x9c, 0xe9, 0xbf, 0x86, 0x1e, 0x2b, - 0xde, 0x90, 0xe0, 0x54, 0x74, 0xa3, 0x12, 0x69, 0xc3, 0x63, 0x30, 0xda, 0xc2, 0xee, 0xa1, 0x25, - 0x8a, 0xf5, 0x5d, 0x11, 0x25, 0x80, 0x0c, 0x87, 0x7d, 0xc5, 0x51, 0xfe, 0x1a, 0x92, 0xec, 0xd7, - 0x6d, 0x30, 0x6b, 0x7a, 0x2c, 0xfd, 0x6c, 0x02, 0x6e, 0x8a, 0x24, 0x8f, 0x34, 0xf4, 0x36, 0x00, - 0xc3, 0x6c, 0x77, 0x5c, 0x56, 0x90, 0x59, 0x7e, 0xca, 0x52, 0x09, 0x3d, 0xfb, 0x24, 0xf7, 0x74, - 0x5c, 0x6f, 0x3c, 0x49, 0xc7, 0x81, 0x89, 0xa8, 0xc2, 0xc5, 0xae, 0xa1, 0x29, 0x6a, 0x68, 0xa9, - 0xcf, 0x4a, 0x7b, 0x6a, 0xdd, 0x03, 0x20, 0xeb, 0x4d, 0x03, 0x9b, 0xae, 0xea, 0xb8, 0x36, 0xd6, - 0x5a, 0x86, 0xd9, 0xa0, 0x09, 0x38, 0x53, 0x4e, 0x1f, 0x68, 0x4d, 0x07, 0x2b, 0x13, 0x6c, 0xb8, - 0x26, 0x46, 0x09, 0x82, 0x56, 0x19, 0xdb, 0x87, 0x18, 0x0d, 0x20, 0xd8, 0xb0, 0x87, 0x98, 0xfb, - 0xdc, 0x18, 0xe4, 0x7c, 0x6d, 0x1d, 0x3a, 0x03, 0xf9, 0xe7, 0xb5, 0x6b, 0x9a, 0x2a, 0x5a, 0x75, - 0xe6, 0x89, 0x1c, 0x91, 0xed, 0xf0, 0x76, 0xfd, 0x01, 0x98, 0xa6, 0x2a, 0x56, 0xc7, 0xc5, 0xb6, - 0xaa, 0x37, 0x35, 0xc7, 0xa1, 0x4e, 0xcb, 0x50, 0x55, 0x44, 0xc6, 0xb6, 0xc9, 0xd0, 0x8a, 0x18, - 0x41, 0xe7, 0x61, 0x8a, 0x22, 0x5a, 0x9d, 0xa6, 0x6b, 0xb4, 0x9b, 0x58, 0x25, 0x2f, 0x0f, 0x0e, - 0x4d, 0xc4, 0x9e, 0x65, 0x93, 0x44, 0x63, 0x93, 0x2b, 0x10, 0x8b, 0x1c, 0xb4, 0x06, 0xb7, 0x51, - 0x58, 0x03, 0x9b, 0xd8, 0xd6, 0x5c, 0xac, 0xe2, 0x4f, 0x77, 0xb4, 0xa6, 0xa3, 0x6a, 0x66, 0x5d, - 0x3d, 0xd4, 0x9c, 0xc3, 0xe2, 0xb4, 0x9f, 0xe0, 0x16, 0xa2, 0xbb, 0xc6, 0x55, 0xab, 0x54, 0xb3, - 0x62, 0xd6, 0xaf, 0x68, 0xce, 0x21, 0x2a, 0xc3, 0x29, 0x4a, 0xe4, 0xb8, 0xb6, 0x61, 0x36, 0x54, - 0xfd, 0x10, 0xeb, 0x57, 0xd5, 0x8e, 0x7b, 0x70, 0xb1, 0x78, 0xab, 0x9f, 0x81, 0x1a, 0x59, 0xa3, - 0x3a, 0x2b, 0x44, 0x65, 0xcf, 0x3d, 0xb8, 0x88, 0x6a, 0x90, 0x27, 0xfb, 0xd1, 0x32, 0x5e, 0xc2, - 0xea, 0x81, 0x65, 0xd3, 0xe2, 0x52, 0x88, 0x38, 0xdc, 0x3e, 0x27, 0x2e, 0x6c, 0x73, 0xc0, 0xa6, - 0x55, 0xc7, 0xe5, 0x74, 0x6d, 0xa7, 0x5a, 0x5d, 0x55, 0x72, 0x82, 0xe5, 0xb2, 0x65, 0x93, 0x98, - 0x6a, 0x58, 0x9e, 0x8f, 0x73, 0x2c, 0xa6, 0x1a, 0x96, 0xf0, 0xf0, 0x79, 0x98, 0xd2, 0x75, 0xb6, - 0x6c, 0x43, 0x57, 0x79, 0x97, 0xef, 0x14, 0xe5, 0x80, 0xbf, 0x74, 0x7d, 0x8d, 0x29, 0xf0, 0x30, - 0x77, 0xd0, 0x23, 0x70, 0x53, 0xd7, 0x5f, 0x7e, 0xe0, 0x64, 0xcf, 0x2a, 0xc3, 0xd0, 0xf3, 0x30, - 0xd5, 0x3e, 0xea, 0x05, 0xa2, 0xc0, 0x8c, 0xed, 0xa3, 0x30, 0xec, 0x4e, 0xfa, 0xe6, 0x66, 0x63, - 0x5d, 0x73, 0x71, 0xbd, 0x78, 0xb3, 0x5f, 0xdb, 0x37, 0x80, 0x16, 0x41, 0xd6, 0x75, 0x15, 0x9b, - 0xda, 0x7e, 0x13, 0xab, 0x9a, 0x8d, 0x4d, 0xcd, 0x29, 0xce, 0xfa, 0x95, 0x0b, 0xba, 0x5e, 0xa5, - 0xa3, 0x15, 0x3a, 0x88, 0xce, 0xc2, 0xa4, 0xb5, 0xff, 0xbc, 0xce, 0x82, 0x4b, 0x6d, 0xdb, 0xf8, - 0xc0, 0x78, 0xb1, 0x78, 0x07, 0x75, 0xd3, 0x04, 0x19, 0xa0, 0xa1, 0xb5, 0x43, 0xc5, 0xe8, 0x1e, - 0x90, 0x75, 0xe7, 0x50, 0xb3, 0xdb, 0xb4, 0xba, 0x3b, 0x6d, 0x4d, 0xc7, 0xc5, 0x3b, 0x99, 0x2a, - 0x93, 0x6f, 0x09, 0x31, 0x7a, 0x1a, 0xa6, 0x3b, 0xa6, 0x61, 0xba, 0xd8, 0x6e, 0xdb, 0x98, 0x34, - 0xe9, 0xec, 0xa4, 0x15, 0xff, 0x79, 0xac, 0x4f, 0x9b, 0xbd, 0xe7, 0xd7, 0x66, 0xbb, 0xab, 0x4c, - 0x75, 0x7a, 0x85, 0x73, 0x65, 0xc8, 0xfb, 0x37, 0x1d, 0x65, 0x81, 0x6d, 0xbb, 0x2c, 0x91, 0x1a, - 0xba, 0xb2, 0xbd, 0x4a, 0xaa, 0xdf, 0xb3, 0x55, 0x39, 0x41, 0xaa, 0xf0, 0xc6, 0xfa, 0x6e, 0x55, - 0x55, 0xf6, 0xb6, 0x76, 0xd7, 0x37, 0xab, 0x72, 0xf2, 0x6c, 0x36, 0xf3, 0xce, 0x98, 0x7c, 0xfd, - 0xfa, 0xf5, 0xeb, 0x89, 0xb9, 0xef, 0x24, 0xa0, 0x10, 0xec, 0x7c, 0xd1, 0xc7, 0xe1, 0x66, 0xf1, - 0x9a, 0xea, 0x60, 0x57, 0x7d, 0xc1, 0xb0, 0x69, 0x1c, 0xb6, 0x34, 0xd6, 0x3b, 0x7a, 0x2e, 0x9c, - 0xe6, 0x5a, 0x35, 0xec, 0x3e, 0x65, 0xd8, 0x24, 0xca, 0x5a, 0x9a, 0x8b, 0x36, 0x60, 0xd6, 0xb4, - 0x54, 0xc7, 0xd5, 0xcc, 0xba, 0x66, 0xd7, 0xd5, 0xee, 0x05, 0x81, 0xaa, 0xe9, 0x3a, 0x76, 0x1c, - 0x8b, 0x95, 0x00, 0x8f, 0xe5, 0x63, 0xa6, 0x55, 0xe3, 0xca, 0xdd, 0xdc, 0x58, 0xe1, 0xaa, 0xa1, - 0xed, 0x4e, 0xf6, 0xdb, 0xee, 0x5b, 0x21, 0xdb, 0xd2, 0xda, 0x2a, 0x36, 0x5d, 0xfb, 0x88, 0xf6, - 0x6b, 0x19, 0x25, 0xd3, 0xd2, 0xda, 0x55, 0xf2, 0xfc, 0xd3, 0xdb, 0x03, 0xbf, 0x1f, 0x7f, 0x98, - 0x84, 0xbc, 0xbf, 0x67, 0x23, 0x2d, 0xb0, 0x4e, 0xf3, 0xb3, 0x44, 0x8f, 0xef, 0xed, 0x03, 0x3b, - 0xbc, 0x85, 0x15, 0x92, 0xb8, 0xcb, 0xa3, 0xac, 0x93, 0x52, 0x18, 0x92, 0x14, 0x4d, 0x72, 0x60, - 0x31, 0xeb, 0xcf, 0x33, 0x0a, 0x7f, 0x42, 0x6b, 0x30, 0xfa, 0xbc, 0x43, 0xb9, 0x47, 0x29, 0xf7, - 0x1d, 0x83, 0xb9, 0x9f, 0xa8, 0x51, 0xf2, 0xec, 0x13, 0x35, 0x75, 0x6b, 0x5b, 0xd9, 0xac, 0x6c, - 0x28, 0x1c, 0x8e, 0x6e, 0x81, 0x54, 0x53, 0x7b, 0xe9, 0x28, 0x98, 0xe2, 0xa9, 0x68, 0x58, 0xc7, - 0xdf, 0x02, 0xa9, 0x17, 0xb0, 0x76, 0x35, 0x98, 0x58, 0xa9, 0xe8, 0xa7, 0x18, 0xfa, 0x8b, 0x90, - 0xa6, 0xfe, 0x42, 0x00, 0xdc, 0x63, 0xf2, 0x08, 0xca, 0x40, 0x6a, 0x65, 0x5b, 0x21, 0xe1, 0x2f, - 0x43, 0x9e, 0x49, 0xd5, 0x9d, 0xf5, 0xea, 0x4a, 0x55, 0x4e, 0xcc, 0x9d, 0x87, 0x51, 0xe6, 0x04, - 0x72, 0x34, 0x3c, 0x37, 0xc8, 0x23, 0xfc, 0x91, 0x73, 0x48, 0x62, 0x74, 0x6f, 0x73, 0xb9, 0xaa, - 0xc8, 0x09, 0xff, 0xf6, 0x3a, 0x90, 0xf7, 0xb7, 0x6b, 0x3f, 0x9b, 0x98, 0xfa, 0x5b, 0x09, 0x72, - 0xbe, 0xf6, 0x8b, 0x14, 0x7e, 0xad, 0xd9, 0xb4, 0x5e, 0x50, 0xb5, 0xa6, 0xa1, 0x39, 0x3c, 0x28, - 0x80, 0x8a, 0x2a, 0x44, 0x32, 0xec, 0xa6, 0xfd, 0x4c, 0x8c, 0x7f, 0x5d, 0x02, 0x39, 0xdc, 0xba, - 0x85, 0x0c, 0x94, 0x7e, 0xae, 0x06, 0xbe, 0x26, 0x41, 0x21, 0xd8, 0xaf, 0x85, 0xcc, 0x3b, 0xf3, - 0x73, 0x35, 0xef, 0x0b, 0x12, 0x8c, 0x07, 0xba, 0xb4, 0x5f, 0x28, 0xeb, 0x5e, 0x4d, 0xc2, 0x54, - 0x04, 0x0e, 0x55, 0x78, 0x3b, 0xcb, 0x3a, 0xec, 0xfb, 0x87, 0x99, 0x6b, 0x81, 0x54, 0xcb, 0x1d, - 0xcd, 0x76, 0x79, 0xf7, 0x7b, 0x0f, 0xc8, 0x46, 0x1d, 0x9b, 0xae, 0x71, 0x60, 0x60, 0x9b, 0xbf, - 0x82, 0xb3, 0x1e, 0x77, 0xa2, 0x2b, 0x67, 0x6f, 0xe1, 0xf7, 0x01, 0x6a, 0x5b, 0x8e, 0xe1, 0x1a, - 0xd7, 0xb0, 0x6a, 0x98, 0xe2, 0x7d, 0x9d, 0xf4, 0xbc, 0x29, 0x45, 0x16, 0x23, 0xeb, 0xa6, 0xeb, - 0x69, 0x9b, 0xb8, 0xa1, 0x85, 0xb4, 0x49, 0xee, 0x4b, 0x2a, 0xb2, 0x18, 0xf1, 0xb4, 0xcf, 0x40, - 0xbe, 0x6e, 0x75, 0x48, 0xfb, 0xc0, 0xf4, 0x48, 0xaa, 0x95, 0x94, 0x1c, 0x93, 0x79, 0x2a, 0xbc, - 0xbf, 0xeb, 0x5e, 0x14, 0xe4, 0x95, 0x1c, 0x93, 0x31, 0x95, 0xbb, 0x61, 0x42, 0x6b, 0x34, 0x6c, - 0x42, 0x2e, 0x88, 0x58, 0xd3, 0x5a, 0xf0, 0xc4, 0x54, 0x71, 0xe6, 0x09, 0xc8, 0x08, 0x3f, 0x90, - 0x6a, 0x46, 0x3c, 0xa1, 0xb6, 0xd9, 0x75, 0x4d, 0x62, 0x3e, 0xab, 0x64, 0x4c, 0x31, 0x78, 0x06, - 0xf2, 0x86, 0xa3, 0x76, 0xef, 0x0d, 0x13, 0xa7, 0x13, 0xf3, 0x19, 0x25, 0x67, 0x38, 0xde, 0x45, - 0xd1, 0xdc, 0x1b, 0x09, 0x28, 0x04, 0xef, 0x3d, 0xd1, 0x2a, 0x64, 0x9a, 0x96, 0xae, 0xd1, 0x40, - 0x60, 0x97, 0xee, 0xf3, 0x31, 0x57, 0xa5, 0x0b, 0x1b, 0x5c, 0x5f, 0xf1, 0x90, 0x33, 0xff, 0x28, - 0x41, 0x46, 0x88, 0xd1, 0x29, 0x48, 0xb5, 0x35, 0xf7, 0x90, 0xd2, 0xa5, 0x97, 0x13, 0xb2, 0xa4, - 0xd0, 0x67, 0x22, 0x77, 0xda, 0x9a, 0x49, 0x43, 0x80, 0xcb, 0xc9, 0x33, 0xd9, 0xd7, 0x26, 0xd6, - 0xea, 0xb4, 0x1d, 0xb6, 0x5a, 0x2d, 0x6c, 0xba, 0x8e, 0xd8, 0x57, 0x2e, 0x5f, 0xe1, 0x62, 0x74, - 0x2f, 0x4c, 0xba, 0xb6, 0x66, 0x34, 0x03, 0xba, 0x29, 0xaa, 0x2b, 0x8b, 0x01, 0x4f, 0xb9, 0x0c, - 0xb7, 0x08, 0xde, 0x3a, 0x76, 0x35, 0xfd, 0x10, 0xd7, 0xbb, 0xa0, 0x51, 0x7a, 0xa9, 0x76, 0x33, - 0x57, 0x58, 0xe5, 0xe3, 0x02, 0x3b, 0xf7, 0x3d, 0x09, 0x26, 0x45, 0x03, 0x5f, 0xf7, 0x9c, 0xb5, - 0x09, 0xa0, 0x99, 0xa6, 0xe5, 0xfa, 0xdd, 0xd5, 0x1b, 0xca, 0x3d, 0xb8, 0x85, 0x8a, 0x07, 0x52, - 0x7c, 0x04, 0x33, 0x2d, 0x80, 0xee, 0x48, 0x5f, 0xb7, 0xcd, 0x42, 0x8e, 0x5f, 0x6a, 0xd3, 0x5f, - 0x46, 0xd8, 0x5b, 0x1f, 0x30, 0x11, 0xe9, 0xf4, 0xd1, 0x34, 0xa4, 0xf7, 0x71, 0xc3, 0x30, 0xf9, - 0x55, 0x1b, 0x7b, 0x10, 0x17, 0x78, 0x29, 0xef, 0x02, 0x6f, 0xf9, 0x53, 0x30, 0xa5, 0x5b, 0xad, - 0xb0, 0xb9, 0xcb, 0x72, 0xe8, 0xcd, 0xd3, 0xb9, 0x22, 0x3d, 0x0b, 0xdd, 0xee, 0xec, 0x4b, 0x92, - 0xf4, 0x95, 0x44, 0x72, 0x6d, 0x67, 0xf9, 0x6b, 0x89, 0x99, 0x35, 0x06, 0xdd, 0x11, 0x2b, 0x55, - 0xf0, 0x41, 0x13, 0xeb, 0xc4, 0x7a, 0xf8, 0xf1, 0x5d, 0x70, 0x7f, 0xc3, 0x70, 0x0f, 0x3b, 0xfb, - 0x0b, 0xba, 0xd5, 0x5a, 0x6c, 0x58, 0x0d, 0xab, 0xfb, 0x63, 0x10, 0x79, 0xa2, 0x0f, 0xf4, 0x3f, - 0xfe, 0x83, 0x50, 0xd6, 0x93, 0xce, 0xc4, 0xfe, 0x7a, 0x54, 0xde, 0x82, 0x29, 0xae, 0xac, 0xd2, - 0x1b, 0x69, 0xd6, 0x87, 0xa3, 0x81, 0xb7, 0x12, 0xc5, 0x6f, 0xbc, 0x4d, 0x2b, 0x9d, 0x32, 0xc9, - 0xa1, 0x64, 0x8c, 0x75, 0xea, 0x65, 0x05, 0x6e, 0x0a, 0xf0, 0xb1, 0xa3, 0x89, 0xed, 0x18, 0xc6, - 0xef, 0x70, 0xc6, 0x29, 0x1f, 0x63, 0x8d, 0x43, 0xcb, 0x2b, 0x30, 0x7e, 0x12, 0xae, 0xbf, 0xe3, - 0x5c, 0x79, 0xec, 0x27, 0x59, 0x83, 0x09, 0x4a, 0xa2, 0x77, 0x1c, 0xd7, 0x6a, 0xd1, 0xbc, 0x37, - 0x98, 0xe6, 0xef, 0xdf, 0x66, 0x67, 0xa5, 0x40, 0x60, 0x2b, 0x1e, 0xaa, 0x5c, 0x06, 0x7a, 0x09, - 0x5f, 0xc7, 0x7a, 0x33, 0x86, 0xe1, 0x4d, 0x6e, 0x88, 0xa7, 0x5f, 0x7e, 0x12, 0xa6, 0xc9, 0xff, - 0x34, 0x2d, 0xf9, 0x2d, 0x89, 0xbf, 0x83, 0x29, 0x7e, 0xef, 0x65, 0x76, 0x1c, 0xa7, 0x3c, 0x02, - 0x9f, 0x4d, 0xbe, 0x5d, 0x6c, 0x60, 0xd7, 0xc5, 0xb6, 0xa3, 0x6a, 0xcd, 0x28, 0xf3, 0x7c, 0x6f, - 0xb0, 0xc5, 0xcf, 0xbf, 0x1b, 0xdc, 0xc5, 0x35, 0x86, 0xac, 0x34, 0x9b, 0xe5, 0x3d, 0xb8, 0x39, - 0x22, 0x2a, 0x86, 0xe0, 0x7c, 0x95, 0x73, 0x4e, 0xf7, 0x44, 0x06, 0xa1, 0xdd, 0x01, 0x21, 0xf7, - 0xf6, 0x72, 0x08, 0xce, 0x2f, 0x70, 0x4e, 0xc4, 0xb1, 0x62, 0x4b, 0x09, 0xe3, 0x13, 0x30, 0x79, - 0x0d, 0xdb, 0xfb, 0x96, 0xc3, 0x2f, 0x0e, 0x86, 0xa0, 0x7b, 0x8d, 0xd3, 0x4d, 0x70, 0x20, 0xbd, - 0x46, 0x20, 0x5c, 0x8f, 0x40, 0xe6, 0x40, 0xd3, 0xf1, 0x10, 0x14, 0x5f, 0xe4, 0x14, 0x63, 0x44, - 0x9f, 0x40, 0x2b, 0x90, 0x6f, 0x58, 0xbc, 0x32, 0xc5, 0xc3, 0x5f, 0xe7, 0xf0, 0x9c, 0xc0, 0x70, - 0x8a, 0xb6, 0xd5, 0xee, 0x34, 0x49, 0xd9, 0x8a, 0xa7, 0xf8, 0x7d, 0x41, 0x21, 0x30, 0x9c, 0xe2, - 0x04, 0x6e, 0xfd, 0x92, 0xa0, 0x70, 0x7c, 0xfe, 0x7c, 0x1c, 0x72, 0x96, 0xd9, 0x3c, 0xb2, 0xcc, - 0x61, 0x8c, 0xf8, 0x32, 0x67, 0x00, 0x0e, 0x21, 0x04, 0x97, 0x20, 0x3b, 0xec, 0x46, 0xfc, 0xc1, - 0xbb, 0xe2, 0x78, 0x88, 0x1d, 0x58, 0x83, 0x09, 0x91, 0xa0, 0x0c, 0xcb, 0x1c, 0x82, 0xe2, 0x0f, - 0x39, 0x45, 0xc1, 0x07, 0xe3, 0xcb, 0x70, 0xb1, 0xe3, 0x36, 0xf0, 0x30, 0x24, 0x6f, 0x88, 0x65, - 0x70, 0x08, 0x77, 0xe5, 0x3e, 0x36, 0xf5, 0xc3, 0xe1, 0x18, 0xbe, 0x2a, 0x5c, 0x29, 0x30, 0x84, - 0x62, 0x05, 0xc6, 0x5b, 0x9a, 0xed, 0x1c, 0x6a, 0xcd, 0xa1, 0xb6, 0xe3, 0x8f, 0x38, 0x47, 0xde, - 0x03, 0x71, 0x8f, 0x74, 0xcc, 0x93, 0xd0, 0x7c, 0x4d, 0x78, 0xc4, 0x07, 0xe3, 0x47, 0xcf, 0x71, - 0xe9, 0xdd, 0xcc, 0x49, 0xd8, 0xfe, 0x58, 0x1c, 0x3d, 0x86, 0xdd, 0xf4, 0x33, 0x5e, 0x82, 0xac, - 0x63, 0xbc, 0x34, 0x14, 0xcd, 0x9f, 0x88, 0x9d, 0xa6, 0x00, 0x02, 0x7e, 0x06, 0x6e, 0x89, 0x2c, - 0x13, 0x43, 0x90, 0xfd, 0x29, 0x27, 0x3b, 0x15, 0x51, 0x2a, 0x78, 0x4a, 0x38, 0x29, 0xe5, 0x9f, - 0x89, 0x94, 0x80, 0x43, 0x5c, 0x3b, 0xa4, 0xb3, 0x77, 0xb4, 0x83, 0x93, 0x79, 0xed, 0xcf, 0x85, - 0xd7, 0x18, 0x36, 0xe0, 0xb5, 0x5d, 0x38, 0xc5, 0x19, 0x4f, 0xb6, 0xaf, 0x5f, 0x17, 0x89, 0x95, - 0xa1, 0xf7, 0x82, 0xbb, 0xfb, 0x29, 0x98, 0xf1, 0xdc, 0x29, 0x9a, 0x52, 0x47, 0x6d, 0x69, 0xed, - 0x21, 0x98, 0xbf, 0xc1, 0x99, 0x45, 0xc6, 0xf7, 0xba, 0x5a, 0x67, 0x53, 0x6b, 0x13, 0xf2, 0xa7, - 0xa1, 0x28, 0xc8, 0x3b, 0xa6, 0x8d, 0x75, 0xab, 0x61, 0x1a, 0x2f, 0xe1, 0xfa, 0x10, 0xd4, 0x7f, - 0x11, 0xda, 0xaa, 0x3d, 0x1f, 0x9c, 0x30, 0xaf, 0x83, 0xec, 0xf5, 0x2a, 0xaa, 0xd1, 0x6a, 0x5b, - 0xb6, 0x1b, 0xc3, 0xf8, 0x97, 0x62, 0xa7, 0x3c, 0xdc, 0x3a, 0x85, 0x95, 0xab, 0x50, 0xa0, 0x8f, - 0xc3, 0x86, 0xe4, 0x5f, 0x71, 0xa2, 0xf1, 0x2e, 0x8a, 0x27, 0x0e, 0xdd, 0x6a, 0xb5, 0x35, 0x7b, - 0x98, 0xfc, 0xf7, 0xd7, 0x22, 0x71, 0x70, 0x08, 0x4f, 0x1c, 0xee, 0x51, 0x1b, 0x93, 0x6a, 0x3f, - 0x04, 0xc3, 0x37, 0x45, 0xe2, 0x10, 0x18, 0x4e, 0x21, 0x1a, 0x86, 0x21, 0x28, 0xfe, 0x46, 0x50, - 0x08, 0x0c, 0xa1, 0xf8, 0x64, 0xb7, 0xd0, 0xda, 0xb8, 0x61, 0x38, 0xae, 0xcd, 0x5a, 0xe1, 0xc1, - 0x54, 0xdf, 0x7a, 0x37, 0xd8, 0x84, 0x29, 0x3e, 0x68, 0xf9, 0x09, 0x98, 0x08, 0xb5, 0x18, 0x28, - 0xee, 0x17, 0xfd, 0xe2, 0x67, 0xde, 0xe7, 0xc9, 0x28, 0xd8, 0x61, 0x94, 0x37, 0xc8, 0xbe, 0x07, - 0xfb, 0x80, 0x78, 0xb2, 0x97, 0xdf, 0xf7, 0xb6, 0x3e, 0xd0, 0x06, 0x94, 0x2f, 0xc3, 0x78, 0xa0, - 0x07, 0x88, 0xa7, 0xfa, 0x25, 0x4e, 0x95, 0xf7, 0xb7, 0x00, 0xe5, 0xf3, 0x90, 0x22, 0xf5, 0x3c, - 0x1e, 0xfe, 0xcb, 0x1c, 0x4e, 0xd5, 0xcb, 0x8f, 0x42, 0x46, 0xd4, 0xf1, 0x78, 0xe8, 0xaf, 0x70, - 0xa8, 0x07, 0x21, 0x70, 0x51, 0xc3, 0xe3, 0xe1, 0xbf, 0x2a, 0xe0, 0x02, 0x42, 0xe0, 0xc3, 0xbb, - 0xf0, 0xdb, 0x9f, 0x4b, 0xf1, 0x3c, 0x2c, 0x7c, 0x77, 0x09, 0xc6, 0x78, 0xf1, 0x8e, 0x47, 0x7f, - 0x96, 0x4f, 0x2e, 0x10, 0xe5, 0x87, 0x21, 0x3d, 0xa4, 0xc3, 0x7f, 0x8d, 0x43, 0x99, 0x7e, 0x79, - 0x05, 0x72, 0xbe, 0x82, 0x1d, 0x0f, 0xff, 0x75, 0x0e, 0xf7, 0xa3, 0x88, 0xe9, 0xbc, 0x60, 0xc7, - 0x13, 0xfc, 0x86, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xad, 0x8e, 0x47, 0xff, 0xa6, 0xf0, 0xba, - 0x80, 0x94, 0x1f, 0x87, 0xac, 0x97, 0x7f, 0xe3, 0xf1, 0xbf, 0xc5, 0xf1, 0x5d, 0x0c, 0xf1, 0x80, - 0x2f, 0xff, 0xc7, 0x53, 0xfc, 0xb6, 0xf0, 0x80, 0x0f, 0x45, 0x8e, 0x51, 0xb8, 0xa6, 0xc7, 0x33, - 0xfd, 0x8e, 0x38, 0x46, 0xa1, 0x92, 0x4e, 0x76, 0x93, 0xa6, 0xc1, 0x78, 0x8a, 0xdf, 0x15, 0xbb, - 0x49, 0xf5, 0x89, 0x19, 0xe1, 0x22, 0x19, 0xcf, 0xf1, 0x7b, 0xc2, 0x8c, 0x50, 0x8d, 0x2c, 0xef, - 0x00, 0xea, 0x2d, 0x90, 0xf1, 0x7c, 0xaf, 0x70, 0xbe, 0xc9, 0x9e, 0xfa, 0x58, 0x7e, 0x0a, 0x4e, - 0x45, 0x17, 0xc7, 0x78, 0xd6, 0xcf, 0xbf, 0x1f, 0x7a, 0x9d, 0xf1, 0xd7, 0xc6, 0xf2, 0x6e, 0x37, - 0xcb, 0xfa, 0x0b, 0x63, 0x3c, 0xed, 0xab, 0xef, 0x07, 0x13, 0xad, 0xbf, 0x2e, 0x96, 0x2b, 0x00, - 0xdd, 0x9a, 0x14, 0xcf, 0xf5, 0x1a, 0xe7, 0xf2, 0x81, 0xc8, 0xd1, 0xe0, 0x25, 0x29, 0x1e, 0xff, - 0x45, 0x71, 0x34, 0x38, 0x82, 0x1c, 0x0d, 0x51, 0x8d, 0xe2, 0xd1, 0xaf, 0x8b, 0xa3, 0x21, 0x20, - 0xe5, 0x4b, 0x90, 0x31, 0x3b, 0xcd, 0x26, 0x89, 0x2d, 0x34, 0xf8, 0x23, 0x9b, 0xe2, 0xbf, 0x7c, - 0xc0, 0xc1, 0x02, 0x50, 0x3e, 0x0f, 0x69, 0xdc, 0xda, 0xc7, 0xf5, 0x38, 0xe4, 0xbf, 0x7e, 0x20, - 0xf2, 0x09, 0xd1, 0x2e, 0x3f, 0x0e, 0xc0, 0x5e, 0xa6, 0xe9, 0x6f, 0x2c, 0x31, 0xd8, 0x7f, 0xfb, - 0x80, 0xff, 0x7e, 0xdf, 0x85, 0x74, 0x09, 0xd8, 0xd7, 0x00, 0x83, 0x09, 0xde, 0x0d, 0x12, 0xd0, - 0x17, 0xf0, 0x47, 0x60, 0xec, 0x79, 0xc7, 0x32, 0x5d, 0xad, 0x11, 0x87, 0xfe, 0x77, 0x8e, 0x16, - 0xfa, 0xc4, 0x61, 0x2d, 0xcb, 0xc6, 0xae, 0xd6, 0x70, 0xe2, 0xb0, 0xff, 0xc1, 0xb1, 0x1e, 0x80, - 0x80, 0x75, 0xcd, 0x71, 0x87, 0x59, 0xf7, 0x7f, 0x0a, 0xb0, 0x00, 0x10, 0xa3, 0xc9, 0xff, 0x57, - 0xf1, 0x51, 0x1c, 0xf6, 0x3d, 0x61, 0x34, 0xd7, 0x2f, 0x3f, 0x0a, 0x59, 0xf2, 0x2f, 0xfb, 0xa6, - 0x25, 0x06, 0xfc, 0x5f, 0x1c, 0xdc, 0x45, 0x90, 0x99, 0x1d, 0xb7, 0xee, 0x1a, 0xf1, 0xce, 0xfe, - 0x6f, 0xbe, 0xd3, 0x42, 0xbf, 0x5c, 0x81, 0x9c, 0xe3, 0xd6, 0xeb, 0x1d, 0xde, 0xd1, 0xc4, 0xc0, - 0x7f, 0xfc, 0x81, 0xf7, 0x92, 0xeb, 0x61, 0x96, 0xcf, 0x44, 0xdf, 0xd7, 0xc1, 0x9a, 0xb5, 0x66, - 0xb1, 0x9b, 0x3a, 0xf8, 0x9f, 0xfb, 0x61, 0x56, 0xb7, 0x5a, 0xfb, 0x96, 0xb3, 0x68, 0x62, 0xc3, - 0x3d, 0xc4, 0xf6, 0x62, 0x4b, 0x6b, 0x3b, 0x54, 0x77, 0x89, 0xdf, 0xb3, 0xe5, 0xf8, 0x13, 0x19, - 0x98, 0x39, 0xd9, 0x1d, 0xdd, 0xdc, 0x6d, 0x30, 0x7e, 0xb9, 0x69, 0x69, 0xae, 0x61, 0x36, 0x76, - 0x2c, 0xc3, 0x74, 0x51, 0x1e, 0xa4, 0x03, 0xfa, 0xf3, 0x8c, 0xa4, 0x48, 0x07, 0x73, 0xff, 0x90, - 0x86, 0x2c, 0xbb, 0xde, 0xd9, 0xd4, 0xda, 0xe8, 0xff, 0x43, 0x7e, 0x8b, 0x9f, 0x90, 0x07, 0x97, - 0x2e, 0x3a, 0xde, 0x75, 0xb2, 0x6f, 0xfe, 0x05, 0x4f, 0x7b, 0xc1, 0xaf, 0x4a, 0x7f, 0x8e, 0x5d, - 0x7e, 0xe0, 0x07, 0x6f, 0xcd, 0xde, 0xd7, 0xd7, 0x3e, 0x52, 0x12, 0x17, 0x59, 0x28, 0x2f, 0xec, - 0x19, 0xa6, 0xfb, 0xe0, 0xd2, 0x45, 0x25, 0x30, 0x1f, 0xba, 0x06, 0x19, 0x3e, 0xe0, 0xf0, 0x9f, - 0x19, 0xee, 0xe8, 0x33, 0xb7, 0x50, 0x63, 0xf3, 0x9e, 0x7b, 0xf3, 0xad, 0xd9, 0x91, 0x13, 0xcf, - 0xed, 0xcd, 0x85, 0x3e, 0x0d, 0x39, 0x61, 0xc7, 0x7a, 0xdd, 0xe1, 0x1f, 0xda, 0xde, 0x1d, 0xb3, - 0xec, 0xf5, 0x3a, 0x9f, 0xfd, 0xae, 0x1f, 0xbc, 0x35, 0x3b, 0x37, 0x70, 0xe6, 0x85, 0xbd, 0x8e, - 0x51, 0x57, 0xfc, 0x73, 0xa0, 0xe7, 0x20, 0x49, 0xa6, 0x62, 0x9f, 0xe4, 0xce, 0xf6, 0x99, 0xca, - 0x9b, 0xe2, 0x2c, 0x5f, 0xe0, 0x30, 0xd3, 0x10, 0xde, 0x99, 0xc7, 0x61, 0xb2, 0x67, 0x7b, 0x90, - 0x0c, 0xc9, 0xab, 0xf8, 0x88, 0x7f, 0x85, 0x43, 0xfe, 0x45, 0xd3, 0xdd, 0xaf, 0xcc, 0xa4, 0xf9, - 0x3c, 0xff, 0x74, 0xac, 0x9c, 0xb8, 0x28, 0xcd, 0x5c, 0x82, 0xf1, 0x80, 0x8f, 0x4f, 0x04, 0x7e, - 0x0c, 0xe4, 0xb0, 0x97, 0x4e, 0x84, 0xbf, 0x00, 0x99, 0x0f, 0x83, 0x9b, 0xfb, 0x3e, 0x82, 0xb1, - 0x4a, 0xb3, 0xb9, 0xa9, 0xb5, 0x1d, 0xf4, 0x0c, 0x4c, 0xb2, 0xc6, 0x7d, 0xd7, 0x5a, 0xa5, 0x3f, - 0xec, 0x6c, 0x6a, 0x6d, 0x1e, 0xd0, 0xf7, 0x06, 0xdc, 0xcd, 0x01, 0x0b, 0x3d, 0xda, 0x74, 0x7e, - 0xa5, 0x97, 0x05, 0x3d, 0x09, 0xb2, 0x10, 0xd2, 0xb3, 0x45, 0x98, 0x59, 0xb8, 0x9e, 0x1d, 0xc8, - 0x2c, 0x94, 0x19, 0x71, 0x0f, 0x07, 0x7a, 0x0c, 0x32, 0xeb, 0xa6, 0xfb, 0xd0, 0x12, 0xe1, 0x63, - 0x31, 0x38, 0x17, 0xc9, 0x27, 0x94, 0x18, 0x8f, 0x87, 0xe1, 0xf8, 0x0b, 0xe7, 0x08, 0x3e, 0x35, - 0x18, 0x4f, 0x95, 0xba, 0x78, 0xfa, 0x88, 0x2a, 0x90, 0x25, 0x7b, 0xce, 0x0c, 0x60, 0xdf, 0x78, - 0xdf, 0x1e, 0x49, 0xe0, 0x69, 0x31, 0x86, 0x2e, 0x4a, 0x50, 0x30, 0x1b, 0x46, 0x63, 0x28, 0x7c, - 0x46, 0x74, 0x51, 0x84, 0xa2, 0xe6, 0x59, 0x31, 0x36, 0x80, 0xa2, 0x16, 0xb2, 0xa2, 0xe6, 0xb7, - 0xa2, 0xe6, 0x59, 0x91, 0x89, 0xa1, 0xf0, 0x5b, 0xe1, 0x3d, 0xa3, 0x55, 0x80, 0xcb, 0xc6, 0x8b, - 0xb8, 0xce, 0xcc, 0xc8, 0x46, 0x24, 0x23, 0xc1, 0xd1, 0x55, 0x63, 0x24, 0x3e, 0x1c, 0x5a, 0x83, - 0x5c, 0xed, 0xa0, 0x4b, 0x03, 0xfc, 0x13, 0xf7, 0x48, 0x53, 0x0e, 0x42, 0x3c, 0x7e, 0xa4, 0x67, - 0x0e, 0x5b, 0x52, 0x2e, 0xce, 0x1c, 0xdf, 0x9a, 0x7c, 0xb8, 0xae, 0x39, 0x8c, 0x26, 0x1f, 0x6b, - 0x8e, 0x8f, 0xc7, 0x8f, 0x44, 0x97, 0x60, 0x6c, 0xd9, 0xb2, 0x88, 0x66, 0x71, 0x9c, 0x92, 0x9c, - 0x89, 0x24, 0xe1, 0x3a, 0x8c, 0x40, 0x20, 0xe8, 0xee, 0xd0, 0xd0, 0x27, 0xf0, 0xc2, 0xa0, 0xdd, - 0x11, 0x5a, 0x62, 0x77, 0xc4, 0xb3, 0xff, 0x04, 0x2e, 0x1f, 0xb9, 0x98, 0x34, 0xc9, 0xc5, 0x89, - 0x21, 0x4e, 0xa0, 0x50, 0x0e, 0x9d, 0x40, 0x21, 0x46, 0x35, 0x98, 0x10, 0xb2, 0xaa, 0xd9, 0x21, - 0x39, 0xb8, 0x28, 0xf3, 0xef, 0x6f, 0x07, 0xd1, 0x72, 0x5d, 0xc6, 0x1a, 0x66, 0x40, 0x3b, 0x50, - 0x10, 0xa2, 0x4d, 0x87, 0x2e, 0x7a, 0x32, 0xa2, 0xae, 0x86, 0x39, 0x99, 0x2a, 0xa3, 0x0c, 0xe1, - 0x67, 0x56, 0xe1, 0x54, 0x74, 0xb6, 0x8a, 0xcb, 0x96, 0x92, 0x3f, 0xcb, 0xae, 0xc0, 0x4d, 0x91, - 0x99, 0x29, 0x8e, 0x24, 0x11, 0xaa, 0x13, 0x81, 0x74, 0xe4, 0x07, 0xa7, 0x23, 0xc0, 0xe9, 0x5e, - 0x70, 0x37, 0xc8, 0xfc, 0xe0, 0x64, 0x04, 0x38, 0xe9, 0x07, 0x7f, 0x1c, 0x0a, 0xc1, 0x3c, 0xe4, - 0x47, 0x8f, 0x47, 0xa0, 0xc7, 0x23, 0xd0, 0xd1, 0x73, 0xa7, 0x22, 0xd0, 0xa9, 0x10, 0xba, 0xd6, - 0x77, 0xee, 0xc9, 0x08, 0xf4, 0x64, 0x04, 0x3a, 0x7a, 0x6e, 0x14, 0x81, 0x46, 0x7e, 0xf4, 0xa3, - 0x30, 0x11, 0x4a, 0x39, 0x7e, 0xf8, 0x58, 0x04, 0x7c, 0x2c, 0x54, 0x9b, 0xc3, 0xa9, 0xc6, 0x8f, - 0x9f, 0x88, 0xc0, 0x4f, 0x44, 0x4d, 0x1f, 0x6d, 0xfd, 0x68, 0x04, 0x7c, 0x34, 0x72, 0xfa, 0x68, - 0xbc, 0x1c, 0x81, 0x97, 0xfd, 0xf8, 0x32, 0xe4, 0xfd, 0x59, 0xc5, 0x8f, 0xcd, 0x44, 0x60, 0x33, - 0x61, 0xbf, 0x07, 0x52, 0x4a, 0x5c, 0xa4, 0x67, 0xfb, 0x1c, 0x97, 0x40, 0x1a, 0x39, 0x51, 0x67, - 0xf3, 0x34, 0x4c, 0x47, 0x25, 0x8d, 0x08, 0x8e, 0xb3, 0x7e, 0x8e, 0xc2, 0xd2, 0x74, 0x20, 0x59, - 0x50, 0x5c, 0xa7, 0xe5, 0x67, 0x7e, 0x0e, 0xa6, 0x22, 0x52, 0x47, 0x04, 0xf1, 0x03, 0x7e, 0xe2, - 0xdc, 0xd2, 0x4c, 0x80, 0x38, 0xf0, 0xae, 0xe0, 0x6f, 0xad, 0x7e, 0x38, 0x05, 0x05, 0x9e, 0xa2, - 0xb6, 0xed, 0x3a, 0xb6, 0x71, 0x1d, 0xfd, 0xbf, 0xfe, 0x1d, 0xd6, 0x52, 0x54, 0x6a, 0xe3, 0xb8, - 0x13, 0x34, 0x5a, 0xcf, 0xf5, 0x6d, 0xb4, 0x1e, 0x1c, 0x66, 0x82, 0xb8, 0x7e, 0xab, 0xda, 0xd3, - 0x6f, 0xdd, 0x33, 0x88, 0xb6, 0x5f, 0xdb, 0x55, 0xed, 0x69, 0xbb, 0xe2, 0x68, 0x22, 0xbb, 0xaf, - 0x2b, 0xbd, 0xdd, 0xd7, 0xd9, 0x41, 0x3c, 0xfd, 0x9b, 0xb0, 0x2b, 0xbd, 0x4d, 0x58, 0x2c, 0x53, - 0x74, 0x2f, 0x76, 0xa5, 0xb7, 0x17, 0x1b, 0xc8, 0xd4, 0xbf, 0x25, 0xbb, 0xd2, 0xdb, 0x92, 0xc5, - 0x32, 0x45, 0x77, 0x66, 0x9f, 0x88, 0xe8, 0xcc, 0xee, 0x1d, 0x44, 0x35, 0xa8, 0x41, 0xdb, 0x8a, - 0x6a, 0xd0, 0xee, 0x1b, 0x68, 0xd8, 0xc0, 0x3e, 0xed, 0x13, 0x11, 0x7d, 0x5a, 0xbc, 0x71, 0x7d, - 0xda, 0xb5, 0xad, 0xa8, 0x76, 0x6d, 0x08, 0xe3, 0xfa, 0x75, 0x6d, 0xcb, 0xe1, 0xae, 0x6d, 0x7e, - 0x10, 0x57, 0x74, 0xf3, 0x76, 0xa5, 0xb7, 0x79, 0x3b, 0x1b, 0x7f, 0x16, 0xa3, 0x7a, 0xb8, 0xe7, - 0xfa, 0xf6, 0x70, 0x43, 0x1d, 0xee, 0xb8, 0x56, 0xee, 0xd9, 0x7e, 0xad, 0xdc, 0x03, 0xc3, 0xb0, - 0x0f, 0xee, 0xe8, 0x9e, 0xea, 0xd3, 0xd1, 0x2d, 0x0e, 0x43, 0xfd, 0x51, 0x63, 0xf7, 0x51, 0x63, - 0xf7, 0x51, 0x63, 0xf7, 0x51, 0x63, 0xf7, 0x8b, 0xd1, 0xd8, 0x95, 0x53, 0xaf, 0x7c, 0x79, 0x56, - 0x3a, 0x7b, 0x06, 0xc6, 0xf8, 0xd4, 0x68, 0x14, 0x12, 0x9b, 0x15, 0x79, 0x84, 0xfe, 0x5d, 0x96, - 0x25, 0xfa, 0x77, 0x45, 0x4e, 0x2c, 0x6f, 0xbc, 0x79, 0xa3, 0x34, 0xf2, 0xdd, 0x1b, 0xa5, 0x91, - 0xef, 0xdf, 0x28, 0x8d, 0xfc, 0xe8, 0x46, 0x49, 0x7a, 0xe7, 0x46, 0x49, 0x7a, 0xef, 0x46, 0x49, - 0xfa, 0xc9, 0x8d, 0x92, 0x74, 0xfd, 0xb8, 0x24, 0x7d, 0xf5, 0xb8, 0x24, 0x7d, 0xfd, 0xb8, 0x24, - 0x7d, 0xeb, 0xb8, 0x24, 0x7d, 0xfb, 0xb8, 0x24, 0xbd, 0x79, 0x5c, 0x1a, 0xf9, 0xee, 0x71, 0x69, - 0xe4, 0x47, 0xc7, 0x25, 0xe9, 0x9d, 0xe3, 0xd2, 0xc8, 0x7b, 0xc7, 0x25, 0xe9, 0x27, 0xc7, 0xa5, - 0x91, 0xeb, 0xff, 0x54, 0x1a, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x38, 0x86, 0x85, 0xf7, - 0x72, 0x44, 0x00, 0x00, + 0x75, 0xbf, 0xf8, 0x92, 0xc8, 0x43, 0x8a, 0x1a, 0x5d, 0xc9, 0x6b, 0x5a, 0x8e, 0xa9, 0x5d, 0xf9, + 0x25, 0xaf, 0x6d, 0xc9, 0x96, 0x77, 0xd7, 0x6b, 0x6e, 0x6c, 0x83, 0x92, 0xb8, 0x5a, 0xd9, 0x7a, + 0x65, 0x28, 0xd9, 0x6b, 0xff, 0x61, 0xcc, 0x7f, 0x34, 0xbc, 0xa4, 0xc6, 0x4b, 0xce, 0xd0, 0x33, + 0xc3, 0xdd, 0x95, 0x3f, 0x14, 0x5b, 0xb8, 0x0f, 0x04, 0x45, 0xdf, 0x05, 0xea, 0xb8, 0x8e, 0xdb, + 0x04, 0x68, 0x9d, 0x26, 0x7d, 0x24, 0x7d, 0xa4, 0x41, 0x3f, 0xe5, 0x4b, 0x5a, 0x03, 0x05, 0x8a, + 0xe4, 0x5b, 0x10, 0x04, 0x86, 0x57, 0x31, 0x50, 0xb7, 0x75, 0x5b, 0xb7, 0x71, 0xd1, 0x00, 0xfe, + 0x52, 0xdc, 0xd7, 0x70, 0x66, 0x38, 0xe4, 0x50, 0x06, 0x9c, 0xf4, 0x83, 0x3f, 0x49, 0x73, 0xee, + 0xf9, 0xfd, 0xee, 0xb9, 0xe7, 0x9e, 0x7b, 0xce, 0x99, 0xcb, 0x81, 0x1f, 0x9d, 0x85, 0x93, 0x0d, + 0xd3, 0x6c, 0x34, 0xf1, 0x62, 0xdb, 0x32, 0x1d, 0x73, 0xbf, 0x53, 0x5f, 0xac, 0x61, 0x5b, 0xb3, + 0xf4, 0xb6, 0x63, 0x5a, 0x0b, 0x54, 0x86, 0x26, 0x98, 0xc6, 0x82, 0xd0, 0x98, 0xdb, 0x84, 0xc9, + 0x8b, 0x7a, 0x13, 0xaf, 0xba, 0x8a, 0x55, 0xec, 0xa0, 0xf3, 0x90, 0xac, 0xeb, 0x4d, 0x5c, 0x88, + 0x9d, 0x4c, 0xcc, 0x67, 0x97, 0xee, 0x5a, 0x08, 0x80, 0x16, 0xfc, 0x88, 0x1d, 0x22, 0x96, 0x29, + 0x62, 0xee, 0xdd, 0x24, 0x4c, 0x85, 0x8c, 0x22, 0x04, 0x49, 0x43, 0x6d, 0x11, 0xc6, 0xd8, 0x7c, + 0x46, 0xa6, 0xff, 0xa3, 0x02, 0x8c, 0xb5, 0x55, 0xed, 0x8a, 0xda, 0xc0, 0x85, 0x38, 0x15, 0x8b, + 0x47, 0x54, 0x04, 0xa8, 0xe1, 0x36, 0x36, 0x6a, 0xd8, 0xd0, 0x0e, 0x0b, 0x89, 0x93, 0x89, 0xf9, + 0x8c, 0xec, 0x91, 0xa0, 0xfb, 0x61, 0xb2, 0xdd, 0xd9, 0x6f, 0xea, 0x9a, 0xe2, 0x51, 0x83, 0x93, + 0x89, 0xf9, 0x94, 0x2c, 0xb1, 0x81, 0xd5, 0xae, 0xf2, 0xbd, 0x30, 0x71, 0x0d, 0xab, 0x57, 0xbc, + 0xaa, 0x59, 0xaa, 0x9a, 0x27, 0x62, 0x8f, 0xe2, 0x0a, 0xe4, 0x5a, 0xd8, 0xb6, 0xd5, 0x06, 0x56, + 0x9c, 0xc3, 0x36, 0x2e, 0x24, 0xe9, 0xea, 0x4f, 0xf6, 0xac, 0x3e, 0xb8, 0xf2, 0x2c, 0x47, 0xed, + 0x1e, 0xb6, 0x31, 0x2a, 0x43, 0x06, 0x1b, 0x9d, 0x16, 0x63, 0x48, 0xf5, 0xf1, 0x5f, 0xc5, 0xe8, + 0xb4, 0x82, 0x2c, 0x69, 0x02, 0xe3, 0x14, 0x63, 0x36, 0xb6, 0xae, 0xea, 0x1a, 0x2e, 0x8c, 0x52, + 0x82, 0x7b, 0x7b, 0x08, 0xaa, 0x6c, 0x3c, 0xc8, 0x21, 0x70, 0x68, 0x05, 0x32, 0xf8, 0xba, 0x83, + 0x0d, 0x5b, 0x37, 0x8d, 0xc2, 0x18, 0x25, 0xb9, 0x3b, 0x64, 0x17, 0x71, 0xb3, 0x16, 0xa4, 0xe8, + 0xe2, 0xd0, 0x39, 0x18, 0x33, 0xdb, 0x8e, 0x6e, 0x1a, 0x76, 0x21, 0x7d, 0x32, 0x36, 0x9f, 0x5d, + 0xfa, 0x4c, 0x68, 0x20, 0x6c, 0x33, 0x1d, 0x59, 0x28, 0xa3, 0x75, 0x90, 0x6c, 0xb3, 0x63, 0x69, + 0x58, 0xd1, 0xcc, 0x1a, 0x56, 0x74, 0xa3, 0x6e, 0x16, 0x32, 0x94, 0x60, 0xb6, 0x77, 0x21, 0x54, + 0x71, 0xc5, 0xac, 0xe1, 0x75, 0xa3, 0x6e, 0xca, 0x79, 0xdb, 0xf7, 0x8c, 0x4e, 0xc0, 0xa8, 0x7d, + 0x68, 0x38, 0xea, 0xf5, 0x42, 0x8e, 0x46, 0x08, 0x7f, 0x9a, 0xfb, 0x9f, 0x14, 0x4c, 0x0c, 0x13, + 0x62, 0x17, 0x20, 0x55, 0x27, 0xab, 0x2c, 0xc4, 0x8f, 0xe3, 0x03, 0x86, 0xf1, 0x3b, 0x71, 0xf4, + 0x63, 0x3a, 0xb1, 0x0c, 0x59, 0x03, 0xdb, 0x0e, 0xae, 0xb1, 0x88, 0x48, 0x0c, 0x19, 0x53, 0xc0, + 0x40, 0xbd, 0x21, 0x95, 0xfc, 0x58, 0x21, 0x75, 0x19, 0x26, 0x5c, 0x93, 0x14, 0x4b, 0x35, 0x1a, + 0x22, 0x36, 0x17, 0xa3, 0x2c, 0x59, 0xa8, 0x08, 0x9c, 0x4c, 0x60, 0x72, 0x1e, 0xfb, 0x9e, 0xd1, + 0x2a, 0x80, 0x69, 0x60, 0xb3, 0xae, 0xd4, 0xb0, 0xd6, 0x2c, 0xa4, 0xfb, 0x78, 0x69, 0x9b, 0xa8, + 0xf4, 0x78, 0xc9, 0x64, 0x52, 0xad, 0x89, 0x1e, 0xeb, 0x86, 0xda, 0x58, 0x9f, 0x48, 0xd9, 0x64, + 0x87, 0xac, 0x27, 0xda, 0xf6, 0x20, 0x6f, 0x61, 0x12, 0xf7, 0xb8, 0xc6, 0x57, 0x96, 0xa1, 0x46, + 0x2c, 0x44, 0xae, 0x4c, 0xe6, 0x30, 0xb6, 0xb0, 0x71, 0xcb, 0xfb, 0x88, 0xee, 0x04, 0x57, 0xa0, + 0xd0, 0xb0, 0x02, 0x9a, 0x85, 0x72, 0x42, 0xb8, 0xa5, 0xb6, 0xf0, 0xcc, 0x79, 0xc8, 0xfb, 0xdd, + 0x83, 0xa6, 0x21, 0x65, 0x3b, 0xaa, 0xe5, 0xd0, 0x28, 0x4c, 0xc9, 0xec, 0x01, 0x49, 0x90, 0xc0, + 0x46, 0x8d, 0x66, 0xb9, 0x94, 0x4c, 0xfe, 0x9d, 0x79, 0x14, 0xc6, 0x7d, 0xd3, 0x0f, 0x0b, 0x9c, + 0x7b, 0x75, 0x14, 0xa6, 0xc3, 0x62, 0x2e, 0x34, 0xfc, 0x4f, 0xc0, 0xa8, 0xd1, 0x69, 0xed, 0x63, + 0xab, 0x90, 0xa0, 0x0c, 0xfc, 0x09, 0x95, 0x21, 0xd5, 0x54, 0xf7, 0x71, 0xb3, 0x90, 0x3c, 0x19, + 0x9b, 0xcf, 0x2f, 0xdd, 0x3f, 0x54, 0x54, 0x2f, 0x6c, 0x10, 0x88, 0xcc, 0x90, 0xe8, 0x09, 0x48, + 0xf2, 0x14, 0x47, 0x18, 0x4e, 0x0f, 0xc7, 0x40, 0x62, 0x51, 0xa6, 0x38, 0x74, 0x3b, 0x64, 0xc8, + 0x5f, 0xe6, 0xdb, 0x51, 0x6a, 0x73, 0x9a, 0x08, 0x88, 0x5f, 0xd1, 0x0c, 0xa4, 0x69, 0x98, 0xd5, + 0xb0, 0x28, 0x0d, 0xee, 0x33, 0xd9, 0x98, 0x1a, 0xae, 0xab, 0x9d, 0xa6, 0xa3, 0x5c, 0x55, 0x9b, + 0x1d, 0x4c, 0x03, 0x26, 0x23, 0xe7, 0xb8, 0xf0, 0x19, 0x22, 0x43, 0xb3, 0x90, 0x65, 0x51, 0xa9, + 0x1b, 0x35, 0x7c, 0x9d, 0x66, 0x9f, 0x94, 0xcc, 0x02, 0x75, 0x9d, 0x48, 0xc8, 0xf4, 0x2f, 0xda, + 0xa6, 0x21, 0xb6, 0x96, 0x4e, 0x41, 0x04, 0x74, 0xfa, 0x47, 0x83, 0x89, 0xef, 0x8e, 0xf0, 0xe5, + 0x05, 0x63, 0x71, 0xee, 0x9b, 0x71, 0x48, 0xd2, 0xf3, 0x36, 0x01, 0xd9, 0xdd, 0xe7, 0x76, 0x2a, + 0xca, 0xea, 0xf6, 0xde, 0xf2, 0x46, 0x45, 0x8a, 0xa1, 0x3c, 0x00, 0x15, 0x5c, 0xdc, 0xd8, 0x2e, + 0xef, 0x4a, 0x71, 0xf7, 0x79, 0x7d, 0x6b, 0xf7, 0xdc, 0x19, 0x29, 0xe1, 0x02, 0xf6, 0x98, 0x20, + 0xe9, 0x55, 0x78, 0x64, 0x49, 0x4a, 0x21, 0x09, 0x72, 0x8c, 0x60, 0xfd, 0x72, 0x65, 0xf5, 0xdc, + 0x19, 0x69, 0xd4, 0x2f, 0x79, 0x64, 0x49, 0x1a, 0x43, 0xe3, 0x90, 0xa1, 0x92, 0xe5, 0xed, 0xed, + 0x0d, 0x29, 0xed, 0x72, 0x56, 0x77, 0xe5, 0xf5, 0xad, 0x35, 0x29, 0xe3, 0x72, 0xae, 0xc9, 0xdb, + 0x7b, 0x3b, 0x12, 0xb8, 0x0c, 0x9b, 0x95, 0x6a, 0xb5, 0xbc, 0x56, 0x91, 0xb2, 0xae, 0xc6, 0xf2, + 0x73, 0xbb, 0x95, 0xaa, 0x94, 0xf3, 0x99, 0xf5, 0xc8, 0x92, 0x34, 0xee, 0x4e, 0x51, 0xd9, 0xda, + 0xdb, 0x94, 0xf2, 0x68, 0x12, 0xc6, 0xd9, 0x14, 0xc2, 0x88, 0x89, 0x80, 0xe8, 0xdc, 0x19, 0x49, + 0xea, 0x1a, 0xc2, 0x58, 0x26, 0x7d, 0x82, 0x73, 0x67, 0x24, 0x34, 0xb7, 0x02, 0x29, 0x1a, 0x5d, + 0x08, 0x41, 0x7e, 0xa3, 0xbc, 0x5c, 0xd9, 0x50, 0xb6, 0x77, 0x76, 0xd7, 0xb7, 0xb7, 0xca, 0x1b, + 0x52, 0xac, 0x2b, 0x93, 0x2b, 0x9f, 0xdb, 0x5b, 0x97, 0x2b, 0xab, 0x52, 0xdc, 0x2b, 0xdb, 0xa9, + 0x94, 0x77, 0x2b, 0xab, 0x52, 0x62, 0x4e, 0x83, 0xe9, 0xb0, 0x3c, 0x13, 0x7a, 0x32, 0x3c, 0x5b, + 0x1c, 0xef, 0xb3, 0xc5, 0x94, 0xab, 0x67, 0x8b, 0xbf, 0x1c, 0x83, 0xa9, 0x90, 0x5c, 0x1b, 0x3a, + 0xc9, 0x93, 0x90, 0x62, 0x21, 0xca, 0xaa, 0xcf, 0x7d, 0xa1, 0x49, 0x9b, 0x06, 0x6c, 0x4f, 0x05, + 0xa2, 0x38, 0x6f, 0x05, 0x4e, 0xf4, 0xa9, 0xc0, 0x84, 0xa2, 0xc7, 0xc8, 0x57, 0x62, 0x50, 0xe8, + 0xc7, 0x1d, 0x91, 0x28, 0xe2, 0xbe, 0x44, 0x71, 0x21, 0x68, 0xc0, 0xa9, 0xfe, 0x6b, 0xe8, 0xb1, + 0xe2, 0xcd, 0x18, 0x9c, 0x08, 0x6f, 0x54, 0x42, 0x6d, 0x78, 0x02, 0x46, 0x5b, 0xd8, 0x39, 0x30, + 0x45, 0xb1, 0xbe, 0x27, 0xa4, 0x04, 0x90, 0xe1, 0xa0, 0xaf, 0x38, 0xca, 0x5b, 0x43, 0x12, 0xfd, + 0xba, 0x0d, 0x66, 0x4d, 0x8f, 0xa5, 0x9f, 0x8f, 0xc3, 0x2d, 0xa1, 0xe4, 0xa1, 0x86, 0xde, 0x01, + 0xa0, 0x1b, 0xed, 0x8e, 0xc3, 0x0a, 0x32, 0xcb, 0x4f, 0x19, 0x2a, 0xa1, 0x67, 0x9f, 0xe4, 0x9e, + 0x8e, 0xe3, 0x8e, 0x27, 0xe8, 0x38, 0x30, 0x11, 0x55, 0x38, 0xdf, 0x35, 0x34, 0x49, 0x0d, 0x2d, + 0xf6, 0x59, 0x69, 0x4f, 0xad, 0x7b, 0x08, 0x24, 0xad, 0xa9, 0x63, 0xc3, 0x51, 0x6c, 0xc7, 0xc2, + 0x6a, 0x4b, 0x37, 0x1a, 0x34, 0x01, 0xa7, 0x4b, 0xa9, 0xba, 0xda, 0xb4, 0xb1, 0x3c, 0xc1, 0x86, + 0xab, 0x62, 0x94, 0x20, 0x68, 0x95, 0xb1, 0x3c, 0x88, 0x51, 0x1f, 0x82, 0x0d, 0xbb, 0x88, 0xb9, + 0xaf, 0x8d, 0x41, 0xd6, 0xd3, 0xd6, 0xa1, 0x53, 0x90, 0x7b, 0x51, 0xbd, 0xaa, 0x2a, 0xa2, 0x55, + 0x67, 0x9e, 0xc8, 0x12, 0xd9, 0x0e, 0x6f, 0xd7, 0x1f, 0x82, 0x69, 0xaa, 0x62, 0x76, 0x1c, 0x6c, + 0x29, 0x5a, 0x53, 0xb5, 0x6d, 0xea, 0xb4, 0x34, 0x55, 0x45, 0x64, 0x6c, 0x9b, 0x0c, 0xad, 0x88, + 0x11, 0x74, 0x16, 0xa6, 0x28, 0xa2, 0xd5, 0x69, 0x3a, 0x7a, 0xbb, 0x89, 0x15, 0xf2, 0xf2, 0x60, + 0xd3, 0x44, 0xec, 0x5a, 0x36, 0x49, 0x34, 0x36, 0xb9, 0x02, 0xb1, 0xc8, 0x46, 0xab, 0x70, 0x07, + 0x85, 0x35, 0xb0, 0x81, 0x2d, 0xd5, 0xc1, 0x0a, 0x7e, 0xa9, 0xa3, 0x36, 0x6d, 0x45, 0x35, 0x6a, + 0xca, 0x81, 0x6a, 0x1f, 0x14, 0xa6, 0x09, 0xc1, 0x72, 0xbc, 0x10, 0x93, 0x6f, 0x23, 0x8a, 0x6b, + 0x5c, 0xaf, 0x42, 0xd5, 0xca, 0x46, 0xed, 0x92, 0x6a, 0x1f, 0xa0, 0x12, 0x9c, 0xa0, 0x2c, 0xb6, + 0x63, 0xe9, 0x46, 0x43, 0xd1, 0x0e, 0xb0, 0x76, 0x45, 0xe9, 0x38, 0xf5, 0xf3, 0x85, 0xdb, 0xbd, + 0xf3, 0x53, 0x0b, 0xab, 0x54, 0x67, 0x85, 0xa8, 0xec, 0x39, 0xf5, 0xf3, 0xa8, 0x0a, 0x39, 0xb2, + 0x19, 0x2d, 0xfd, 0x65, 0xac, 0xd4, 0x4d, 0x8b, 0x56, 0x96, 0x7c, 0xc8, 0xc9, 0xf6, 0x78, 0x70, + 0x61, 0x9b, 0x03, 0x36, 0xcd, 0x1a, 0x2e, 0xa5, 0xaa, 0x3b, 0x95, 0xca, 0xaa, 0x9c, 0x15, 0x2c, + 0x17, 0x4d, 0x8b, 0x04, 0x54, 0xc3, 0x74, 0x1d, 0x9c, 0x65, 0x01, 0xd5, 0x30, 0x85, 0x7b, 0xcf, + 0xc2, 0x94, 0xa6, 0xb1, 0x35, 0xeb, 0x9a, 0xc2, 0x5b, 0x7c, 0xbb, 0x20, 0xf9, 0x9c, 0xa5, 0x69, + 0x6b, 0x4c, 0x81, 0xc7, 0xb8, 0x8d, 0x1e, 0x83, 0x5b, 0xba, 0xce, 0xf2, 0x02, 0x27, 0x7b, 0x56, + 0x19, 0x84, 0x9e, 0x85, 0xa9, 0xf6, 0x61, 0x2f, 0x10, 0xf9, 0x66, 0x6c, 0x1f, 0x06, 0x61, 0x77, + 0xd3, 0xd7, 0x36, 0x0b, 0x6b, 0xaa, 0x83, 0x6b, 0x85, 0x5b, 0xbd, 0xda, 0x9e, 0x01, 0xb4, 0x08, + 0x92, 0xa6, 0x29, 0xd8, 0x50, 0xf7, 0x9b, 0x58, 0x51, 0x2d, 0x6c, 0xa8, 0x76, 0x61, 0xd6, 0xab, + 0x9c, 0xd7, 0xb4, 0x0a, 0x1d, 0x2d, 0xd3, 0x41, 0x74, 0x1a, 0x26, 0xcd, 0xfd, 0x17, 0x35, 0x16, + 0x59, 0x4a, 0xdb, 0xc2, 0x75, 0xfd, 0x7a, 0xe1, 0x2e, 0xea, 0xa6, 0x09, 0x32, 0x40, 0xe3, 0x6a, + 0x87, 0x8a, 0xd1, 0x7d, 0x20, 0x69, 0xf6, 0x81, 0x6a, 0xb5, 0x69, 0x69, 0xb7, 0xdb, 0xaa, 0x86, + 0x0b, 0x77, 0x33, 0x55, 0x26, 0xdf, 0x12, 0x62, 0x12, 0xd9, 0xf6, 0x35, 0xbd, 0xee, 0x08, 0xc6, + 0x7b, 0x59, 0x64, 0x53, 0x19, 0x67, 0xbb, 0x0c, 0xd3, 0x1d, 0x43, 0x37, 0x1c, 0x6c, 0xb5, 0x2d, + 0x4c, 0x9a, 0x78, 0x76, 0x12, 0x0b, 0xff, 0x34, 0xd6, 0xa7, 0x0d, 0xdf, 0xf3, 0x6a, 0xb3, 0x00, + 0x90, 0xa7, 0x3a, 0xbd, 0xc2, 0xb9, 0x12, 0xe4, 0xbc, 0x71, 0x81, 0x32, 0xc0, 0x22, 0x43, 0x8a, + 0x91, 0x1a, 0xbb, 0xb2, 0xbd, 0x4a, 0xaa, 0xe3, 0xf3, 0x15, 0x29, 0x4e, 0xaa, 0xf4, 0xc6, 0xfa, + 0x6e, 0x45, 0x91, 0xf7, 0xb6, 0x76, 0xd7, 0x37, 0x2b, 0x52, 0xe2, 0x74, 0x26, 0xfd, 0xde, 0x98, + 0x74, 0xe3, 0xc6, 0x8d, 0x1b, 0xf1, 0xb9, 0xef, 0xc4, 0x21, 0xef, 0xef, 0x8c, 0xd1, 0x67, 0xe1, + 0x56, 0xf1, 0x1a, 0x6b, 0x63, 0x47, 0xb9, 0xa6, 0x5b, 0x34, 0x54, 0x5b, 0x2a, 0xeb, 0x2d, 0x5d, + 0x2f, 0x4f, 0x73, 0xad, 0x2a, 0x76, 0x9e, 0xd5, 0x2d, 0x12, 0x88, 0x2d, 0xd5, 0x41, 0x1b, 0x30, + 0x6b, 0x98, 0x8a, 0xed, 0xa8, 0x46, 0x4d, 0xb5, 0x6a, 0x4a, 0xf7, 0x02, 0x41, 0x51, 0x35, 0x0d, + 0xdb, 0xb6, 0xc9, 0x4a, 0x84, 0xcb, 0xf2, 0x19, 0xc3, 0xac, 0x72, 0xe5, 0x6e, 0xee, 0x2c, 0x73, + 0xd5, 0x40, 0x44, 0x24, 0xfa, 0x45, 0xc4, 0xed, 0x90, 0x69, 0xa9, 0x6d, 0x05, 0x1b, 0x8e, 0x75, + 0x48, 0xfb, 0xb9, 0xb4, 0x9c, 0x6e, 0xa9, 0xed, 0x0a, 0x79, 0xfe, 0xe4, 0xf6, 0xc0, 0xeb, 0xc7, + 0x1f, 0x26, 0x20, 0xe7, 0xed, 0xe9, 0x48, 0x8b, 0xac, 0xd1, 0xfc, 0x1d, 0xa3, 0x27, 0xfc, 0xce, + 0x81, 0x1d, 0xe0, 0xc2, 0x0a, 0x49, 0xec, 0xa5, 0x51, 0xd6, 0x69, 0xc9, 0x0c, 0x49, 0x8a, 0x2a, + 0x39, 0xd3, 0x98, 0xf5, 0xef, 0x69, 0x99, 0x3f, 0xa1, 0x35, 0x18, 0x7d, 0xd1, 0xa6, 0xdc, 0xa3, + 0x94, 0xfb, 0xae, 0xc1, 0xdc, 0x4f, 0x55, 0x29, 0x79, 0xe6, 0xa9, 0xaa, 0xb2, 0xb5, 0x2d, 0x6f, + 0x96, 0x37, 0x64, 0x0e, 0x47, 0xb7, 0x41, 0xb2, 0xa9, 0xbe, 0x7c, 0xe8, 0x2f, 0x01, 0x54, 0x34, + 0xac, 0xe3, 0x6f, 0x83, 0xe4, 0x35, 0xac, 0x5e, 0xf1, 0x27, 0x5e, 0x2a, 0xfa, 0x04, 0x43, 0x7f, + 0x11, 0x52, 0xd4, 0x5f, 0x08, 0x80, 0x7b, 0x4c, 0x1a, 0x41, 0x69, 0x48, 0xae, 0x6c, 0xcb, 0x24, + 0xfc, 0x25, 0xc8, 0x31, 0xa9, 0xb2, 0xb3, 0x5e, 0x59, 0xa9, 0x48, 0xf1, 0xb9, 0xb3, 0x30, 0xca, + 0x9c, 0x40, 0x8e, 0x86, 0xeb, 0x06, 0x69, 0x84, 0x3f, 0x72, 0x8e, 0x98, 0x18, 0xdd, 0xdb, 0x5c, + 0xae, 0xc8, 0x52, 0xdc, 0xbb, 0xbd, 0x36, 0xe4, 0xbc, 0xed, 0xdc, 0x4f, 0x27, 0xa6, 0xfe, 0x36, + 0x06, 0x59, 0x4f, 0x7b, 0x46, 0x1a, 0x03, 0xb5, 0xd9, 0x34, 0xaf, 0x29, 0x6a, 0x53, 0x57, 0x6d, + 0x1e, 0x14, 0x40, 0x45, 0x65, 0x22, 0x19, 0x76, 0xd3, 0x7e, 0x2a, 0xc6, 0xbf, 0x11, 0x03, 0x29, + 0xd8, 0xda, 0x05, 0x0c, 0x8c, 0xfd, 0x4c, 0x0d, 0x7c, 0x3d, 0x06, 0x79, 0x7f, 0x3f, 0x17, 0x30, + 0xef, 0xd4, 0xcf, 0xd4, 0xbc, 0x77, 0xe2, 0x30, 0xee, 0xeb, 0xe2, 0x86, 0xb5, 0xee, 0x25, 0x98, + 0xd4, 0x6b, 0xb8, 0xd5, 0x36, 0x1d, 0x6c, 0x68, 0x87, 0x4a, 0x13, 0x5f, 0xc5, 0xcd, 0xc2, 0x1c, + 0x4d, 0x14, 0x8b, 0x83, 0xfb, 0xc4, 0x85, 0xf5, 0x2e, 0x6e, 0x83, 0xc0, 0x4a, 0x53, 0xeb, 0xab, + 0x95, 0xcd, 0x9d, 0xed, 0xdd, 0xca, 0xd6, 0xca, 0x73, 0xca, 0xde, 0xd6, 0xd3, 0x5b, 0xdb, 0xcf, + 0x6e, 0xc9, 0x92, 0x1e, 0x50, 0xfb, 0x04, 0x8f, 0xfa, 0x0e, 0x48, 0x41, 0xa3, 0xd0, 0xad, 0x10, + 0x66, 0x96, 0x34, 0x82, 0xa6, 0x60, 0x62, 0x6b, 0x5b, 0xa9, 0xae, 0xaf, 0x56, 0x94, 0xca, 0xc5, + 0x8b, 0x95, 0x95, 0xdd, 0x2a, 0x7b, 0x71, 0x76, 0xb5, 0x77, 0xfd, 0x87, 0xfa, 0xb5, 0x04, 0x4c, + 0x85, 0x58, 0x82, 0xca, 0xbc, 0x67, 0x67, 0xaf, 0x11, 0x0f, 0x0e, 0x63, 0xfd, 0x02, 0xe9, 0x0a, + 0x76, 0x54, 0xcb, 0xe1, 0x2d, 0xfe, 0x7d, 0x40, 0xbc, 0x64, 0x38, 0x7a, 0x5d, 0xc7, 0x16, 0xbf, + 0x67, 0x60, 0x8d, 0xfc, 0x44, 0x57, 0xce, 0xae, 0x1a, 0x1e, 0x00, 0xd4, 0x36, 0x6d, 0xdd, 0xd1, + 0xaf, 0x62, 0x45, 0x37, 0xc4, 0xa5, 0x04, 0x69, 0xec, 0x93, 0xb2, 0x24, 0x46, 0xd6, 0x0d, 0xc7, + 0xd5, 0x36, 0x70, 0x43, 0x0d, 0x68, 0x93, 0x04, 0x9e, 0x90, 0x25, 0x31, 0xe2, 0x6a, 0x9f, 0x82, + 0x5c, 0xcd, 0xec, 0x90, 0x36, 0x89, 0xe9, 0x91, 0x7a, 0x11, 0x93, 0xb3, 0x4c, 0xe6, 0xaa, 0xf0, + 0x3e, 0xb6, 0x7b, 0x1b, 0x92, 0x93, 0xb3, 0x4c, 0xc6, 0x54, 0xee, 0x85, 0x09, 0xb5, 0xd1, 0xb0, + 0x08, 0xb9, 0x20, 0x62, 0x9d, 0x79, 0xde, 0x15, 0x53, 0xc5, 0x99, 0xa7, 0x20, 0x2d, 0xfc, 0x40, + 0x4a, 0x32, 0xf1, 0x84, 0xd2, 0x66, 0x77, 0x52, 0xf1, 0xf9, 0x8c, 0x9c, 0x36, 0xc4, 0xe0, 0x29, + 0xc8, 0xe9, 0xb6, 0xd2, 0xbd, 0x1c, 0x8d, 0x9f, 0x8c, 0xcf, 0xa7, 0xe5, 0xac, 0x6e, 0xbb, 0xb7, + 0x61, 0x73, 0x6f, 0xc6, 0x21, 0xef, 0xbf, 0xdc, 0x45, 0xab, 0x90, 0x6e, 0x9a, 0x9a, 0x4a, 0x43, + 0x8b, 0xfd, 0xb2, 0x30, 0x1f, 0x71, 0x1f, 0xbc, 0xb0, 0xc1, 0xf5, 0x65, 0x17, 0x39, 0xf3, 0x8f, + 0x31, 0x48, 0x0b, 0x31, 0x3a, 0x01, 0xc9, 0xb6, 0xea, 0x1c, 0x50, 0xba, 0xd4, 0x72, 0x5c, 0x8a, + 0xc9, 0xf4, 0x99, 0xc8, 0xed, 0xb6, 0x6a, 0xd0, 0x10, 0xe0, 0x72, 0xf2, 0x4c, 0xf6, 0xb5, 0x89, + 0xd5, 0x1a, 0x6d, 0xfb, 0xcd, 0x56, 0x0b, 0x1b, 0x8e, 0x2d, 0xf6, 0x95, 0xcb, 0x57, 0xb8, 0x18, + 0xdd, 0x0f, 0x93, 0x8e, 0xa5, 0xea, 0x4d, 0x9f, 0x6e, 0x92, 0xea, 0x4a, 0x62, 0xc0, 0x55, 0x2e, + 0xc1, 0x6d, 0x82, 0xb7, 0x86, 0x1d, 0x55, 0x3b, 0xc0, 0xb5, 0x2e, 0x68, 0x94, 0xde, 0x1c, 0xde, + 0xca, 0x15, 0x56, 0xf9, 0xb8, 0xc0, 0xce, 0x7d, 0x2f, 0x06, 0x93, 0xe2, 0x45, 0xa5, 0xe6, 0x3a, + 0x6b, 0x13, 0x40, 0x35, 0x0c, 0xd3, 0xf1, 0xba, 0xab, 0x37, 0x94, 0x7b, 0x70, 0x0b, 0x65, 0x17, + 0x24, 0x7b, 0x08, 0x66, 0x5a, 0x00, 0xdd, 0x91, 0xbe, 0x6e, 0x9b, 0x85, 0x2c, 0xbf, 0xb9, 0xa7, + 0x3f, 0xff, 0xb0, 0x57, 0x5b, 0x60, 0x22, 0xf2, 0x46, 0x83, 0xa6, 0x21, 0xb5, 0x8f, 0x1b, 0xba, + 0xc1, 0xef, 0x13, 0xd9, 0x83, 0xb8, 0xa5, 0x4c, 0xba, 0xb7, 0x94, 0xcb, 0x97, 0x61, 0x4a, 0x33, + 0x5b, 0x41, 0x73, 0x97, 0xa5, 0xc0, 0xeb, 0xb5, 0x7d, 0x29, 0xf6, 0x3c, 0x74, 0x5b, 0xcc, 0x2f, + 0xc7, 0x13, 0x6b, 0x3b, 0xcb, 0x5f, 0x8d, 0xcf, 0xac, 0x31, 0xdc, 0x8e, 0x58, 0xa6, 0x8c, 0xeb, + 0x4d, 0xac, 0x11, 0xd3, 0xe1, 0xc7, 0xf7, 0xc0, 0x83, 0x0d, 0xdd, 0x39, 0xe8, 0xec, 0x2f, 0x68, + 0x66, 0x6b, 0xb1, 0x61, 0x36, 0xcc, 0xee, 0xcf, 0x5d, 0xe4, 0x89, 0x3e, 0xd0, 0xff, 0xf8, 0x4f, + 0x5e, 0x19, 0x57, 0x3a, 0x13, 0xf9, 0xfb, 0x58, 0x69, 0x0b, 0xa6, 0xb8, 0xb2, 0x42, 0xef, 0xdc, + 0xd9, 0xab, 0x01, 0x1a, 0x78, 0xef, 0x52, 0xf8, 0xc6, 0xbb, 0xb4, 0x56, 0xcb, 0x93, 0x1c, 0x4a, + 0xc6, 0xd8, 0x0b, 0x44, 0x49, 0x86, 0x5b, 0x7c, 0x7c, 0xec, 0x5c, 0x62, 0x2b, 0x82, 0xf1, 0x3b, + 0x9c, 0x71, 0xca, 0xc3, 0x58, 0xe5, 0xd0, 0xd2, 0x0a, 0x8c, 0x1f, 0x87, 0xeb, 0xef, 0x38, 0x57, + 0x0e, 0x7b, 0x49, 0xd6, 0x60, 0x82, 0x92, 0x68, 0x1d, 0xdb, 0x31, 0x5b, 0x34, 0xe9, 0x0d, 0xa6, + 0xf9, 0xfb, 0x77, 0xd9, 0x41, 0xc9, 0x13, 0xd8, 0x8a, 0x8b, 0x2a, 0x95, 0x80, 0xfe, 0xcc, 0x50, + 0xc3, 0x5a, 0x33, 0x82, 0xe1, 0x2d, 0x6e, 0x88, 0xab, 0x5f, 0x7a, 0x06, 0xa6, 0xc9, 0xff, 0x34, + 0x27, 0x79, 0x2d, 0x89, 0xbe, 0x65, 0x2a, 0x7c, 0xef, 0x15, 0x76, 0x16, 0xa7, 0x5c, 0x02, 0x8f, + 0x4d, 0x9e, 0x5d, 0x6c, 0x60, 0xc7, 0xc1, 0x96, 0xad, 0xa8, 0xcd, 0x30, 0xf3, 0x3c, 0xaf, 0xe9, + 0x85, 0x2f, 0xbc, 0xef, 0xdf, 0xc5, 0x35, 0x86, 0x2c, 0x37, 0x9b, 0xa5, 0x3d, 0xb8, 0x35, 0x24, + 0x2a, 0x86, 0xe0, 0x7c, 0x8d, 0x73, 0x4e, 0xf7, 0x44, 0x06, 0xa1, 0xdd, 0x01, 0x21, 0x77, 0xf7, + 0x72, 0x08, 0xce, 0xdf, 0xe3, 0x9c, 0x88, 0x63, 0xc5, 0x96, 0x12, 0xc6, 0xa7, 0x60, 0xf2, 0x2a, + 0xb6, 0xf6, 0x4d, 0x9b, 0x5f, 0x8d, 0x0c, 0x41, 0xf7, 0x3a, 0xa7, 0x9b, 0xe0, 0x40, 0x7a, 0x57, + 0x42, 0xb8, 0x1e, 0x83, 0x74, 0x5d, 0xd5, 0xf0, 0x10, 0x14, 0x5f, 0xe4, 0x14, 0x63, 0x44, 0x9f, + 0x40, 0xcb, 0x90, 0x6b, 0x98, 0xbc, 0x2c, 0x45, 0xc3, 0xdf, 0xe0, 0xf0, 0xac, 0xc0, 0x70, 0x8a, + 0xb6, 0xd9, 0xee, 0x34, 0x49, 0xcd, 0x8a, 0xa6, 0xf8, 0x7d, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x18, + 0x6e, 0xfd, 0x03, 0x41, 0x61, 0x7b, 0xfc, 0xf9, 0x24, 0x64, 0x4d, 0xa3, 0x79, 0x68, 0x1a, 0xc3, + 0x18, 0xf1, 0x25, 0xce, 0x00, 0x1c, 0x42, 0x08, 0x2e, 0x40, 0x66, 0xd8, 0x8d, 0xf8, 0xc3, 0xf7, + 0xc5, 0xf1, 0x10, 0x3b, 0xb0, 0x06, 0x13, 0x22, 0x41, 0xe9, 0xa6, 0x31, 0x04, 0xc5, 0x1f, 0x71, + 0x8a, 0xbc, 0x07, 0xc6, 0x97, 0xe1, 0x60, 0xdb, 0x69, 0xe0, 0x61, 0x48, 0xde, 0x14, 0xcb, 0xe0, + 0x10, 0xee, 0xca, 0x7d, 0x6c, 0x68, 0x07, 0xc3, 0x31, 0x7c, 0x45, 0xb8, 0x52, 0x60, 0x08, 0xc5, + 0x0a, 0x8c, 0xb7, 0x54, 0xcb, 0x3e, 0x50, 0x9b, 0x43, 0x6d, 0xc7, 0x1f, 0x73, 0x8e, 0x9c, 0x0b, + 0xe2, 0x1e, 0xe9, 0x18, 0xc7, 0xa1, 0xf9, 0xaa, 0xf0, 0x88, 0x07, 0xc6, 0x8f, 0x9e, 0xed, 0xd0, + 0x0b, 0xa8, 0xe3, 0xb0, 0x7d, 0x4d, 0x1c, 0x3d, 0x86, 0xdd, 0xf4, 0x32, 0x5e, 0x80, 0x8c, 0xad, + 0xbf, 0x3c, 0x14, 0xcd, 0x9f, 0x88, 0x9d, 0xa6, 0x00, 0x02, 0x7e, 0x0e, 0x6e, 0x0b, 0x2d, 0x13, + 0x43, 0x90, 0xfd, 0x29, 0x27, 0x3b, 0x11, 0x52, 0x2a, 0x78, 0x4a, 0x38, 0x2e, 0xe5, 0x9f, 0x89, + 0x94, 0x80, 0x03, 0x5c, 0x3b, 0xe4, 0x45, 0xc1, 0x56, 0xeb, 0xc7, 0xf3, 0xda, 0x9f, 0x0b, 0xaf, + 0x31, 0xac, 0xcf, 0x6b, 0xbb, 0x70, 0x82, 0x33, 0x1e, 0x6f, 0x5f, 0xbf, 0x2e, 0x12, 0x2b, 0x43, + 0xef, 0xf9, 0x77, 0xf7, 0xff, 0xc1, 0x8c, 0xeb, 0x4e, 0xd1, 0x91, 0xda, 0x4a, 0x4b, 0x6d, 0x0f, + 0xc1, 0xfc, 0x0d, 0xce, 0x2c, 0x32, 0xbe, 0xdb, 0xd2, 0xda, 0x9b, 0x6a, 0x9b, 0x90, 0x5f, 0x86, + 0x82, 0x20, 0xef, 0x18, 0x16, 0xd6, 0xcc, 0x86, 0xa1, 0xbf, 0x8c, 0x6b, 0x43, 0x50, 0xff, 0x45, + 0x60, 0xab, 0xf6, 0x3c, 0x70, 0xc2, 0xbc, 0x0e, 0x92, 0xdb, 0xab, 0x28, 0x7a, 0xab, 0x6d, 0x5a, + 0x4e, 0x04, 0xe3, 0x5f, 0x8a, 0x9d, 0x72, 0x71, 0xeb, 0x14, 0x56, 0xaa, 0x40, 0x9e, 0x3e, 0x0e, + 0x1b, 0x92, 0x7f, 0xc5, 0x89, 0xc6, 0xbb, 0x28, 0x9e, 0x38, 0x34, 0xb3, 0xd5, 0x56, 0xad, 0x61, + 0xf2, 0xdf, 0x5f, 0x8b, 0xc4, 0xc1, 0x21, 0x3c, 0x71, 0x38, 0x87, 0x6d, 0x4c, 0xaa, 0xfd, 0x10, + 0x0c, 0xdf, 0x14, 0x89, 0x43, 0x60, 0x38, 0x85, 0x68, 0x18, 0x86, 0xa0, 0xf8, 0x1b, 0x41, 0x21, + 0x30, 0x84, 0xe2, 0x73, 0xdd, 0x42, 0x6b, 0xe1, 0x86, 0x6e, 0x3b, 0x16, 0xeb, 0x83, 0x07, 0x53, + 0x7d, 0xeb, 0x7d, 0x7f, 0x13, 0x26, 0x7b, 0xa0, 0xa5, 0xa7, 0x60, 0x22, 0xd0, 0x62, 0xa0, 0xa8, + 0x6f, 0x16, 0x0a, 0x3f, 0xff, 0x21, 0x4f, 0x46, 0xfe, 0x0e, 0xa3, 0xb4, 0x41, 0xf6, 0xdd, 0xdf, + 0x07, 0x44, 0x93, 0xbd, 0xf2, 0xa1, 0xbb, 0xf5, 0xbe, 0x36, 0xa0, 0x74, 0x11, 0xc6, 0x7d, 0x3d, + 0x40, 0x34, 0xd5, 0x2f, 0x70, 0xaa, 0x9c, 0xb7, 0x05, 0x28, 0x9d, 0x85, 0x24, 0xa9, 0xe7, 0xd1, + 0xf0, 0x5f, 0xe4, 0x70, 0xaa, 0x5e, 0x7a, 0x1c, 0xd2, 0xa2, 0x8e, 0x47, 0x43, 0x7f, 0x89, 0x43, + 0x5d, 0x08, 0x81, 0x8b, 0x1a, 0x1e, 0x0d, 0xff, 0x65, 0x01, 0x17, 0x10, 0x02, 0x1f, 0xde, 0x85, + 0xdf, 0xfe, 0x95, 0x24, 0xcf, 0xc3, 0xc2, 0x77, 0x17, 0x60, 0x8c, 0x17, 0xef, 0x68, 0xf4, 0xe7, + 0xf9, 0xe4, 0x02, 0x51, 0x7a, 0x14, 0x52, 0x43, 0x3a, 0xfc, 0x57, 0x39, 0x94, 0xe9, 0x97, 0x56, + 0x20, 0xeb, 0x29, 0xd8, 0xd1, 0xf0, 0x5f, 0xe3, 0x70, 0x2f, 0x8a, 0x98, 0xce, 0x0b, 0x76, 0x34, + 0xc1, 0xaf, 0x0b, 0xd3, 0x39, 0x82, 0xb8, 0x4d, 0xd4, 0xea, 0x68, 0xf4, 0x6f, 0x08, 0xaf, 0x0b, + 0x48, 0xe9, 0x49, 0xc8, 0xb8, 0xf9, 0x37, 0x1a, 0xff, 0x9b, 0x1c, 0xdf, 0xc5, 0x10, 0x0f, 0x78, + 0xf2, 0x7f, 0x34, 0xc5, 0x6f, 0x09, 0x0f, 0x78, 0x50, 0xe4, 0x18, 0x05, 0x6b, 0x7a, 0x34, 0xd3, + 0x6f, 0x8b, 0x63, 0x14, 0x28, 0xe9, 0x64, 0x37, 0x69, 0x1a, 0x8c, 0xa6, 0xf8, 0x1d, 0xb1, 0x9b, + 0x54, 0x9f, 0x98, 0x11, 0x2c, 0x92, 0xd1, 0x1c, 0xbf, 0x2b, 0xcc, 0x08, 0xd4, 0xc8, 0xd2, 0x0e, + 0xa0, 0xde, 0x02, 0x19, 0xcd, 0xf7, 0x2a, 0xe7, 0x9b, 0xec, 0xa9, 0x8f, 0xa5, 0x67, 0xe1, 0x44, + 0x78, 0x71, 0x8c, 0x66, 0xfd, 0xc2, 0x87, 0x81, 0xd7, 0x19, 0x6f, 0x6d, 0x2c, 0xed, 0x76, 0xb3, + 0xac, 0xb7, 0x30, 0x46, 0xd3, 0xbe, 0xf6, 0xa1, 0x3f, 0xd1, 0x7a, 0xeb, 0x62, 0xa9, 0x0c, 0xd0, + 0xad, 0x49, 0xd1, 0x5c, 0xaf, 0x73, 0x2e, 0x0f, 0x88, 0x1c, 0x0d, 0x5e, 0x92, 0xa2, 0xf1, 0x5f, + 0x14, 0x47, 0x83, 0x23, 0xc8, 0xd1, 0x10, 0xd5, 0x28, 0x1a, 0xfd, 0x86, 0x38, 0x1a, 0x02, 0x52, + 0xba, 0x00, 0x69, 0xa3, 0xd3, 0x6c, 0x92, 0xd8, 0x42, 0x83, 0x3f, 0x23, 0x2a, 0xfc, 0xf3, 0x47, + 0x1c, 0x2c, 0x00, 0xa5, 0xb3, 0x90, 0xc2, 0xad, 0x7d, 0x5c, 0x8b, 0x42, 0xfe, 0xcb, 0x47, 0x22, + 0x9f, 0x10, 0xed, 0xd2, 0x93, 0x00, 0xec, 0x65, 0x9a, 0xfe, 0x4a, 0x14, 0x81, 0xfd, 0xd7, 0x8f, + 0xf8, 0x17, 0x0a, 0x5d, 0x48, 0x97, 0x80, 0x7d, 0xef, 0x30, 0x98, 0xe0, 0x7d, 0x3f, 0x01, 0x7d, + 0x01, 0x7f, 0x0c, 0xc6, 0x5e, 0xb4, 0x4d, 0xc3, 0x51, 0x1b, 0x51, 0xe8, 0x7f, 0xe3, 0x68, 0xa1, + 0x4f, 0x1c, 0xd6, 0x32, 0x2d, 0xec, 0xa8, 0x0d, 0x3b, 0x0a, 0xfb, 0xef, 0x1c, 0xeb, 0x02, 0x08, + 0x58, 0x53, 0x6d, 0x67, 0x98, 0x75, 0xff, 0x87, 0x00, 0x0b, 0x00, 0x31, 0x9a, 0xfc, 0x7f, 0x05, + 0x1f, 0x46, 0x61, 0x3f, 0x10, 0x46, 0x73, 0xfd, 0xd2, 0xe3, 0x90, 0x21, 0xff, 0xb2, 0xaf, 0x76, + 0x22, 0xc0, 0xff, 0xc9, 0xc1, 0x5d, 0x04, 0x99, 0xd9, 0x76, 0x6a, 0x8e, 0x1e, 0xed, 0xec, 0xff, + 0xe2, 0x3b, 0x2d, 0xf4, 0x4b, 0x65, 0xc8, 0xda, 0x4e, 0xad, 0xd6, 0xe1, 0x1d, 0x4d, 0x04, 0xfc, + 0xc7, 0x1f, 0xb9, 0x2f, 0xb9, 0x2e, 0x66, 0xf9, 0x54, 0xf8, 0x65, 0x1d, 0xac, 0x99, 0x6b, 0x26, + 0xbb, 0xa6, 0x83, 0xff, 0x7e, 0x10, 0x66, 0x35, 0xb3, 0xb5, 0x6f, 0xda, 0x8b, 0x06, 0xd6, 0x9d, + 0x03, 0x6c, 0x2d, 0xb6, 0xd4, 0xb6, 0x4d, 0x75, 0x97, 0xf8, 0x3d, 0x5b, 0x96, 0x3f, 0x91, 0x81, + 0x99, 0xe3, 0xdd, 0xd1, 0xcd, 0xdd, 0x01, 0xe3, 0x17, 0x9b, 0xa6, 0xea, 0xe8, 0x46, 0x63, 0xc7, + 0xd4, 0x0d, 0x07, 0xe5, 0x20, 0x56, 0xa7, 0x3f, 0x30, 0xc5, 0xe4, 0x58, 0x7d, 0xee, 0x1f, 0x52, + 0x90, 0x61, 0xd7, 0x3b, 0x9b, 0x6a, 0x1b, 0xfd, 0x1c, 0xe4, 0xb6, 0xf8, 0x09, 0x79, 0x78, 0xe9, + 0xbc, 0xed, 0xde, 0x25, 0x7b, 0xe6, 0x5f, 0x70, 0xb5, 0x17, 0xbc, 0xaa, 0xf4, 0x07, 0xe5, 0xe5, + 0x87, 0x7e, 0xf0, 0xf6, 0xec, 0x03, 0x7d, 0xed, 0x23, 0x25, 0x71, 0x91, 0x85, 0xf2, 0xc2, 0x9e, + 0x6e, 0x38, 0x0f, 0x2f, 0x9d, 0x97, 0x7d, 0xf3, 0xa1, 0xab, 0x90, 0xe6, 0x03, 0x36, 0xff, 0x8d, + 0xe1, 0xae, 0x3e, 0x73, 0x0b, 0x35, 0x36, 0xef, 0x99, 0xb7, 0xde, 0x9e, 0x1d, 0x39, 0xf6, 0xdc, + 0xee, 0x5c, 0xe8, 0x25, 0xc8, 0x0a, 0x3b, 0xd6, 0x6b, 0x36, 0xff, 0x94, 0xf8, 0xde, 0x88, 0x65, + 0xaf, 0xd7, 0xf8, 0xec, 0xf7, 0xfc, 0xe0, 0xed, 0xd9, 0xb9, 0x81, 0x33, 0x2f, 0xec, 0x75, 0xf4, + 0x9a, 0xec, 0x9d, 0x03, 0xbd, 0x00, 0x09, 0x32, 0x15, 0xfb, 0xe8, 0x78, 0xb6, 0xcf, 0x54, 0xee, + 0x14, 0xa7, 0xf9, 0x02, 0x87, 0x99, 0x86, 0xf0, 0xce, 0x3c, 0x09, 0x93, 0x3d, 0xdb, 0x83, 0x24, + 0x48, 0x5c, 0xc1, 0x87, 0xfc, 0x3b, 0x23, 0xf2, 0x2f, 0x9a, 0xee, 0x7e, 0x47, 0x17, 0x9b, 0xcf, + 0xf1, 0x8f, 0xe3, 0x4a, 0xf1, 0xf3, 0xb1, 0x99, 0x0b, 0x30, 0xee, 0xf3, 0xf1, 0xb1, 0xc0, 0x4f, + 0x80, 0x14, 0xf4, 0xd2, 0xb1, 0xf0, 0xe7, 0x20, 0xfd, 0x71, 0x70, 0x73, 0xdf, 0x47, 0x30, 0x56, + 0x6e, 0x36, 0x37, 0xd5, 0xb6, 0x8d, 0x9e, 0x83, 0x49, 0xd6, 0xb8, 0xef, 0x9a, 0xab, 0xf4, 0x57, + 0x9d, 0x4d, 0xb5, 0xcd, 0x03, 0xfa, 0x7e, 0x9f, 0xbb, 0x39, 0x60, 0xa1, 0x47, 0x9b, 0xce, 0x2f, + 0xf7, 0xb2, 0xa0, 0x67, 0x40, 0x12, 0x42, 0x7a, 0xb6, 0x08, 0x33, 0x0b, 0xd7, 0xd3, 0x03, 0x99, + 0x85, 0x32, 0x23, 0xee, 0xe1, 0x40, 0x4f, 0x40, 0x7a, 0xdd, 0x70, 0x1e, 0x59, 0x22, 0x7c, 0x2c, + 0x06, 0xe7, 0x42, 0xf9, 0x84, 0x12, 0xe3, 0x71, 0x31, 0x1c, 0x7f, 0xee, 0x0c, 0xc1, 0x27, 0x07, + 0xe3, 0xa9, 0x52, 0x17, 0x4f, 0x1f, 0x51, 0x19, 0x32, 0x64, 0xcf, 0x99, 0x01, 0xec, 0x2b, 0xf6, + 0x3b, 0x43, 0x09, 0x5c, 0x2d, 0xc6, 0xd0, 0x45, 0x09, 0x0a, 0x66, 0xc3, 0x68, 0x04, 0x85, 0xc7, + 0x88, 0x2e, 0x8a, 0x50, 0x54, 0x5d, 0x2b, 0xc6, 0x06, 0x50, 0x54, 0x03, 0x56, 0x54, 0xbd, 0x56, + 0x54, 0x5d, 0x2b, 0xd2, 0x11, 0x14, 0x5e, 0x2b, 0xdc, 0x67, 0xb4, 0x0a, 0x70, 0x51, 0xbf, 0x8e, + 0x6b, 0xcc, 0x8c, 0x4c, 0x48, 0x32, 0x12, 0x1c, 0x5d, 0x35, 0x46, 0xe2, 0xc1, 0xa1, 0x35, 0xc8, + 0x56, 0xeb, 0x5d, 0x1a, 0xe0, 0x1f, 0xf1, 0x87, 0x9a, 0x52, 0x0f, 0xf0, 0x78, 0x91, 0xae, 0x39, + 0x6c, 0x49, 0xd9, 0x28, 0x73, 0x3c, 0x6b, 0xf2, 0xe0, 0xba, 0xe6, 0x30, 0x9a, 0x5c, 0xa4, 0x39, + 0x1e, 0x1e, 0x2f, 0x12, 0x5d, 0x80, 0xb1, 0x65, 0xd3, 0x24, 0x9a, 0x85, 0x71, 0x4a, 0x72, 0x2a, + 0x94, 0x84, 0xeb, 0x30, 0x02, 0x81, 0xa0, 0xbb, 0x43, 0x43, 0x9f, 0xc0, 0xf3, 0x83, 0x76, 0x47, + 0x68, 0x89, 0xdd, 0x11, 0xcf, 0xde, 0x13, 0xb8, 0x7c, 0xe8, 0x60, 0xd2, 0x24, 0x17, 0x26, 0x86, + 0x38, 0x81, 0x42, 0x39, 0x70, 0x02, 0x85, 0x18, 0x55, 0x61, 0x42, 0xc8, 0x2a, 0x46, 0x87, 0xe4, + 0xe0, 0x82, 0xc4, 0xbf, 0x30, 0x1e, 0x44, 0xcb, 0x75, 0x19, 0x6b, 0x90, 0x01, 0xed, 0x40, 0x5e, + 0x88, 0x36, 0x6d, 0xba, 0xe8, 0xc9, 0x90, 0xba, 0x1a, 0xe4, 0x64, 0xaa, 0x8c, 0x32, 0x80, 0x9f, + 0x59, 0x85, 0x13, 0xe1, 0xd9, 0x2a, 0x2a, 0x5b, 0xc6, 0xbc, 0x59, 0x76, 0x05, 0x6e, 0x09, 0xcd, + 0x4c, 0x51, 0x24, 0xf1, 0x40, 0x9d, 0xf0, 0xa5, 0x23, 0x2f, 0x38, 0x15, 0x02, 0x4e, 0xf5, 0x82, + 0xbb, 0x41, 0xe6, 0x05, 0x27, 0x42, 0xc0, 0x09, 0x2f, 0xf8, 0xb3, 0x90, 0xf7, 0xe7, 0x21, 0x2f, + 0x7a, 0x3c, 0x04, 0x3d, 0x1e, 0x82, 0x0e, 0x9f, 0x3b, 0x19, 0x82, 0x4e, 0x06, 0xd0, 0xd5, 0xbe, + 0x73, 0x4f, 0x86, 0xa0, 0x27, 0x43, 0xd0, 0xe1, 0x73, 0xa3, 0x10, 0x34, 0xf2, 0xa2, 0x1f, 0x87, + 0x89, 0x40, 0xca, 0xf1, 0xc2, 0xc7, 0x42, 0xe0, 0x63, 0x81, 0xda, 0x1c, 0x4c, 0x35, 0x5e, 0xfc, + 0x44, 0x08, 0x7e, 0x22, 0x6c, 0xfa, 0x70, 0xeb, 0x47, 0x43, 0xe0, 0xa3, 0xa1, 0xd3, 0x87, 0xe3, + 0xa5, 0x10, 0xbc, 0xe4, 0xc5, 0x97, 0x20, 0xe7, 0xcd, 0x2a, 0x5e, 0x6c, 0x3a, 0x04, 0x9b, 0x0e, + 0xfa, 0xdd, 0x97, 0x52, 0xa2, 0x22, 0x3d, 0xd3, 0xe7, 0xb8, 0xf8, 0xd2, 0xc8, 0xb1, 0x3a, 0x9b, + 0xcb, 0x30, 0x1d, 0x96, 0x34, 0x42, 0x38, 0x4e, 0x7b, 0x39, 0xf2, 0x4b, 0xd3, 0xbe, 0x64, 0x41, + 0x71, 0x9d, 0x96, 0x97, 0xf9, 0x05, 0x98, 0x0a, 0x49, 0x1d, 0x21, 0xc4, 0x0f, 0x79, 0x89, 0xb3, + 0x4b, 0x33, 0x3e, 0x62, 0xdf, 0xbb, 0x82, 0xb7, 0xb5, 0xfa, 0xe1, 0x14, 0xe4, 0x79, 0x8a, 0xda, + 0xb6, 0x6a, 0xd8, 0xc2, 0x35, 0xf4, 0xff, 0xfb, 0x77, 0x58, 0x4b, 0x61, 0xa9, 0x8d, 0xe3, 0x8e, + 0xd1, 0x68, 0xbd, 0xd0, 0xb7, 0xd1, 0x7a, 0x78, 0x98, 0x09, 0xa2, 0xfa, 0xad, 0x4a, 0x4f, 0xbf, + 0x75, 0xdf, 0x20, 0xda, 0x7e, 0x6d, 0x57, 0xa5, 0xa7, 0xed, 0x8a, 0xa2, 0x09, 0xed, 0xbe, 0x2e, + 0xf5, 0x76, 0x5f, 0xa7, 0x07, 0xf1, 0xf4, 0x6f, 0xc2, 0x2e, 0xf5, 0x36, 0x61, 0x91, 0x4c, 0xe1, + 0xbd, 0xd8, 0xa5, 0xde, 0x5e, 0x6c, 0x20, 0x53, 0xff, 0x96, 0xec, 0x52, 0x6f, 0x4b, 0x16, 0xc9, + 0x14, 0xde, 0x99, 0x3d, 0x1d, 0xd2, 0x99, 0xdd, 0x3f, 0x88, 0x6a, 0x50, 0x83, 0xb6, 0x15, 0xd6, + 0xa0, 0x3d, 0x30, 0xd0, 0xb0, 0x81, 0x7d, 0xda, 0xd3, 0x21, 0x7d, 0x5a, 0xb4, 0x71, 0x7d, 0xda, + 0xb5, 0xad, 0xb0, 0x76, 0x6d, 0x08, 0xe3, 0xfa, 0x75, 0x6d, 0xcb, 0xc1, 0xae, 0x6d, 0x7e, 0x10, + 0x57, 0x78, 0xf3, 0x76, 0xa9, 0xb7, 0x79, 0x3b, 0x1d, 0x7d, 0x16, 0xc3, 0x7a, 0xb8, 0x17, 0xfa, + 0xf6, 0x70, 0x43, 0x1d, 0xee, 0xa8, 0x56, 0xee, 0xf9, 0x7e, 0xad, 0xdc, 0x43, 0xc3, 0xb0, 0x0f, + 0xee, 0xe8, 0x9e, 0xed, 0xd3, 0xd1, 0x2d, 0x0e, 0x43, 0xfd, 0x69, 0x63, 0xf7, 0x69, 0x63, 0xf7, + 0x69, 0x63, 0xf7, 0x69, 0x63, 0xf7, 0x7f, 0xa3, 0xb1, 0x2b, 0x25, 0x5f, 0xfd, 0xd2, 0x6c, 0xec, + 0xf4, 0x29, 0x18, 0xe3, 0x53, 0xa3, 0x51, 0x88, 0x6f, 0x96, 0xa5, 0x11, 0xfa, 0x77, 0x59, 0x8a, + 0xd1, 0xbf, 0x2b, 0x52, 0x7c, 0x79, 0xe3, 0xad, 0x9b, 0xc5, 0x91, 0xef, 0xde, 0x2c, 0x8e, 0x7c, + 0xff, 0x66, 0x71, 0xe4, 0x9d, 0x9b, 0xc5, 0xd8, 0x7b, 0x37, 0x8b, 0xb1, 0x0f, 0x6e, 0x16, 0x63, + 0x3f, 0xb9, 0x59, 0x8c, 0xdd, 0x38, 0x2a, 0xc6, 0xbe, 0x72, 0x54, 0x8c, 0x7d, 0xfd, 0xa8, 0x18, + 0xfb, 0xd6, 0x51, 0x31, 0xf6, 0xed, 0xa3, 0x62, 0xec, 0xad, 0xa3, 0xe2, 0xc8, 0x77, 0x8f, 0x8a, + 0x23, 0xef, 0x1c, 0x15, 0x63, 0xef, 0x1d, 0x15, 0x47, 0x3e, 0x38, 0x2a, 0xc6, 0x7e, 0x72, 0x54, + 0x1c, 0xb9, 0xf1, 0xa3, 0xe2, 0xc8, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x36, 0xa7, 0xef, 0xf4, + 0x54, 0x45, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unmarshaler/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unmarshaler/mapsproto2.pb.go index 7dd3a588c..e9ccaa873 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unmarshaler/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unmarshaler/mapsproto2.pb.go @@ -179,287 +179,294 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4465 bytes of a gzipped FileDescriptorSet + // 4578 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x98, 0xbb, 0x2b, - 0xbf, 0xe4, 0xb5, 0xad, 0xb5, 0xe5, 0xdd, 0xf5, 0x9a, 0x1b, 0xdb, 0xa0, 0x24, 0xae, 0x56, 0x8e, - 0x5e, 0x19, 0x4a, 0x7e, 0x05, 0xc6, 0xfc, 0x47, 0xc3, 0x4b, 0x6a, 0xbc, 0xe4, 0x0c, 0x33, 0x33, - 0x5c, 0x5b, 0xfe, 0xf0, 0xc7, 0x06, 0xee, 0x03, 0x41, 0xd0, 0x77, 0x81, 0x3a, 0x8e, 0xe3, 0x26, - 0x01, 0x5a, 0xa7, 0xe9, 0x2b, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, 0x24, - 0xdf, 0x82, 0x20, 0x30, 0xb2, 0xaa, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0xa6, 0xf0, 0x97, - 0xe2, 0xbe, 0x86, 0x33, 0xc3, 0x21, 0x87, 0x32, 0x90, 0xc7, 0x07, 0x7f, 0x92, 0xe6, 0xdc, 0xf3, - 0xfb, 0xdd, 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0x33, 0x97, 0x03, 0x9f, 0x39, 0x07, 0xa7, 0x9a, 0x96, - 0xd5, 0x6c, 0xe1, 0xb3, 0x1d, 0xdb, 0x72, 0xad, 0xfd, 0x6e, 0xe3, 0x6c, 0x1d, 0x3b, 0xba, 0x6d, - 0x74, 0x5c, 0xcb, 0x5e, 0xa4, 0x32, 0x34, 0xc5, 0x34, 0x16, 0x85, 0xc6, 0xfc, 0x26, 0x4c, 0x5f, - 0x36, 0x5a, 0x78, 0xd5, 0x53, 0xac, 0x61, 0x17, 0x5d, 0x84, 0x54, 0xc3, 0x68, 0xe1, 0xa2, 0x74, - 0x2a, 0xb9, 0x90, 0x5b, 0xba, 0x63, 0x31, 0x04, 0x5a, 0x0c, 0x22, 0x76, 0x88, 0x58, 0xa1, 0x88, - 0xf9, 0xb7, 0x53, 0x30, 0x13, 0x31, 0x8a, 0x10, 0xa4, 0x4c, 0xad, 0x4d, 0x18, 0xa5, 0x85, 0xac, - 0x42, 0xff, 0x47, 0x45, 0x98, 0xe8, 0x68, 0xfa, 0x55, 0xad, 0x89, 0x8b, 0x09, 0x2a, 0x16, 0x8f, - 0xa8, 0x04, 0x50, 0xc7, 0x1d, 0x6c, 0xd6, 0xb1, 0xa9, 0x1f, 0x16, 0x93, 0xa7, 0x92, 0x0b, 0x59, - 0xc5, 0x27, 0x41, 0xf7, 0xc2, 0x74, 0xa7, 0xbb, 0xdf, 0x32, 0x74, 0xd5, 0xa7, 0x06, 0xa7, 0x92, - 0x0b, 0x69, 0x45, 0x66, 0x03, 0xab, 0x3d, 0xe5, 0xbb, 0x61, 0xea, 0x05, 0xac, 0x5d, 0xf5, 0xab, - 0xe6, 0xa8, 0x6a, 0x81, 0x88, 0x7d, 0x8a, 0x2b, 0x90, 0x6f, 0x63, 0xc7, 0xd1, 0x9a, 0x58, 0x75, - 0x0f, 0x3b, 0xb8, 0x98, 0xa2, 0xab, 0x3f, 0xd5, 0xb7, 0xfa, 0xf0, 0xca, 0x73, 0x1c, 0xb5, 0x7b, - 0xd8, 0xc1, 0xa8, 0x02, 0x59, 0x6c, 0x76, 0xdb, 0x8c, 0x21, 0x3d, 0xc0, 0x7f, 0x55, 0xb3, 0xdb, - 0x0e, 0xb3, 0x64, 0x08, 0x8c, 0x53, 0x4c, 0x38, 0xd8, 0xbe, 0x66, 0xe8, 0xb8, 0x38, 0x4e, 0x09, - 0xee, 0xee, 0x23, 0xa8, 0xb1, 0xf1, 0x30, 0x87, 0xc0, 0xa1, 0x15, 0xc8, 0xe2, 0x17, 0x5d, 0x6c, - 0x3a, 0x86, 0x65, 0x16, 0x27, 0x28, 0xc9, 0x9d, 0x11, 0xbb, 0x88, 0x5b, 0xf5, 0x30, 0x45, 0x0f, - 0x87, 0x2e, 0xc0, 0x84, 0xd5, 0x71, 0x0d, 0xcb, 0x74, 0x8a, 0x99, 0x53, 0xd2, 0x42, 0x6e, 0xe9, - 0x63, 0x91, 0x81, 0xb0, 0xcd, 0x74, 0x14, 0xa1, 0x8c, 0xd6, 0x41, 0x76, 0xac, 0xae, 0xad, 0x63, - 0x55, 0xb7, 0xea, 0x58, 0x35, 0xcc, 0x86, 0x55, 0xcc, 0x52, 0x82, 0x93, 0xfd, 0x0b, 0xa1, 0x8a, - 0x2b, 0x56, 0x1d, 0xaf, 0x9b, 0x0d, 0x4b, 0x29, 0x38, 0x81, 0x67, 0x74, 0x02, 0xc6, 0x9d, 0x43, - 0xd3, 0xd5, 0x5e, 0x2c, 0xe6, 0x69, 0x84, 0xf0, 0xa7, 0xf9, 0xff, 0x49, 0xc3, 0xd4, 0x28, 0x21, - 0x76, 0x09, 0xd2, 0x0d, 0xb2, 0xca, 0x62, 0xe2, 0x38, 0x3e, 0x60, 0x98, 0xa0, 0x13, 0xc7, 0x3f, - 0xa4, 0x13, 0x2b, 0x90, 0x33, 0xb1, 0xe3, 0xe2, 0x3a, 0x8b, 0x88, 0xe4, 0x88, 0x31, 0x05, 0x0c, - 0xd4, 0x1f, 0x52, 0xa9, 0x0f, 0x15, 0x52, 0x4f, 0xc3, 0x94, 0x67, 0x92, 0x6a, 0x6b, 0x66, 0x53, - 0xc4, 0xe6, 0xd9, 0x38, 0x4b, 0x16, 0xab, 0x02, 0xa7, 0x10, 0x98, 0x52, 0xc0, 0x81, 0x67, 0xb4, - 0x0a, 0x60, 0x99, 0xd8, 0x6a, 0xa8, 0x75, 0xac, 0xb7, 0x8a, 0x99, 0x01, 0x5e, 0xda, 0x26, 0x2a, - 0x7d, 0x5e, 0xb2, 0x98, 0x54, 0x6f, 0xa1, 0x47, 0x7a, 0xa1, 0x36, 0x31, 0x20, 0x52, 0x36, 0xd9, - 0x21, 0xeb, 0x8b, 0xb6, 0x3d, 0x28, 0xd8, 0x98, 0xc4, 0x3d, 0xae, 0xf3, 0x95, 0x65, 0xa9, 0x11, - 0x8b, 0xb1, 0x2b, 0x53, 0x38, 0x8c, 0x2d, 0x6c, 0xd2, 0xf6, 0x3f, 0xa2, 0xdb, 0xc1, 0x13, 0xa8, - 0x34, 0xac, 0x80, 0x66, 0xa1, 0xbc, 0x10, 0x6e, 0x69, 0x6d, 0x3c, 0x77, 0x11, 0x0a, 0x41, 0xf7, - 0xa0, 0x59, 0x48, 0x3b, 0xae, 0x66, 0xbb, 0x34, 0x0a, 0xd3, 0x0a, 0x7b, 0x40, 0x32, 0x24, 0xb1, - 0x59, 0xa7, 0x59, 0x2e, 0xad, 0x90, 0x7f, 0xe7, 0x1e, 0x86, 0xc9, 0xc0, 0xf4, 0xa3, 0x02, 0xe7, - 0x5f, 0x19, 0x87, 0xd9, 0xa8, 0x98, 0x8b, 0x0c, 0xff, 0x13, 0x30, 0x6e, 0x76, 0xdb, 0xfb, 0xd8, - 0x2e, 0x26, 0x29, 0x03, 0x7f, 0x42, 0x15, 0x48, 0xb7, 0xb4, 0x7d, 0xdc, 0x2a, 0xa6, 0x4e, 0x49, - 0x0b, 0x85, 0xa5, 0x7b, 0x47, 0x8a, 0xea, 0xc5, 0x0d, 0x02, 0x51, 0x18, 0x12, 0x3d, 0x06, 0x29, - 0x9e, 0xe2, 0x08, 0xc3, 0x99, 0xd1, 0x18, 0x48, 0x2c, 0x2a, 0x14, 0x87, 0x6e, 0x85, 0x2c, 0xf9, - 0xcb, 0x7c, 0x3b, 0x4e, 0x6d, 0xce, 0x10, 0x01, 0xf1, 0x2b, 0x9a, 0x83, 0x0c, 0x0d, 0xb3, 0x3a, - 0x16, 0xa5, 0xc1, 0x7b, 0x26, 0x1b, 0x53, 0xc7, 0x0d, 0xad, 0xdb, 0x72, 0xd5, 0x6b, 0x5a, 0xab, - 0x8b, 0x69, 0xc0, 0x64, 0x95, 0x3c, 0x17, 0x3e, 0x49, 0x64, 0xe8, 0x24, 0xe4, 0x58, 0x54, 0x1a, - 0x66, 0x1d, 0xbf, 0x48, 0xb3, 0x4f, 0x5a, 0x61, 0x81, 0xba, 0x4e, 0x24, 0x64, 0xfa, 0xe7, 0x1d, - 0xcb, 0x14, 0x5b, 0x4b, 0xa7, 0x20, 0x02, 0x3a, 0xfd, 0xc3, 0xe1, 0xc4, 0x77, 0x5b, 0xf4, 0xf2, - 0xc2, 0xb1, 0x38, 0xff, 0xcd, 0x04, 0xa4, 0xe8, 0x79, 0x9b, 0x82, 0xdc, 0xee, 0x33, 0x3b, 0x55, - 0x75, 0x75, 0x7b, 0x6f, 0x79, 0xa3, 0x2a, 0x4b, 0xa8, 0x00, 0x40, 0x05, 0x97, 0x37, 0xb6, 0x2b, - 0xbb, 0x72, 0xc2, 0x7b, 0x5e, 0xdf, 0xda, 0xbd, 0x70, 0x4e, 0x4e, 0x7a, 0x80, 0x3d, 0x26, 0x48, - 0xf9, 0x15, 0x1e, 0x5a, 0x92, 0xd3, 0x48, 0x86, 0x3c, 0x23, 0x58, 0x7f, 0xba, 0xba, 0x7a, 0xe1, - 0x9c, 0x3c, 0x1e, 0x94, 0x3c, 0xb4, 0x24, 0x4f, 0xa0, 0x49, 0xc8, 0x52, 0xc9, 0xf2, 0xf6, 0xf6, - 0x86, 0x9c, 0xf1, 0x38, 0x6b, 0xbb, 0xca, 0xfa, 0xd6, 0x9a, 0x9c, 0xf5, 0x38, 0xd7, 0x94, 0xed, - 0xbd, 0x1d, 0x19, 0x3c, 0x86, 0xcd, 0x6a, 0xad, 0x56, 0x59, 0xab, 0xca, 0x39, 0x4f, 0x63, 0xf9, - 0x99, 0xdd, 0x6a, 0x4d, 0xce, 0x07, 0xcc, 0x7a, 0x68, 0x49, 0x9e, 0xf4, 0xa6, 0xa8, 0x6e, 0xed, - 0x6d, 0xca, 0x05, 0x34, 0x0d, 0x93, 0x6c, 0x0a, 0x61, 0xc4, 0x54, 0x48, 0x74, 0xe1, 0x9c, 0x2c, - 0xf7, 0x0c, 0x61, 0x2c, 0xd3, 0x01, 0xc1, 0x85, 0x73, 0x32, 0x9a, 0x5f, 0x81, 0x34, 0x8d, 0x2e, - 0x84, 0xa0, 0xb0, 0x51, 0x59, 0xae, 0x6e, 0xa8, 0xdb, 0x3b, 0xbb, 0xeb, 0xdb, 0x5b, 0x95, 0x0d, - 0x59, 0xea, 0xc9, 0x94, 0xea, 0x27, 0xf7, 0xd6, 0x95, 0xea, 0xaa, 0x9c, 0xf0, 0xcb, 0x76, 0xaa, - 0x95, 0xdd, 0xea, 0xaa, 0x9c, 0x9c, 0xd7, 0x61, 0x36, 0x2a, 0xcf, 0x44, 0x9e, 0x0c, 0xdf, 0x16, - 0x27, 0x06, 0x6c, 0x31, 0xe5, 0xea, 0xdb, 0xe2, 0xaf, 0x48, 0x30, 0x13, 0x91, 0x6b, 0x23, 0x27, - 0x79, 0x1c, 0xd2, 0x2c, 0x44, 0x59, 0xf5, 0xb9, 0x27, 0x32, 0x69, 0xd3, 0x80, 0xed, 0xab, 0x40, - 0x14, 0xe7, 0xaf, 0xc0, 0xc9, 0x01, 0x15, 0x98, 0x50, 0xf4, 0x19, 0xf9, 0xb2, 0x04, 0xc5, 0x41, - 0xdc, 0x31, 0x89, 0x22, 0x11, 0x48, 0x14, 0x97, 0xc2, 0x06, 0x9c, 0x1e, 0xbc, 0x86, 0x3e, 0x2b, - 0xde, 0x90, 0xe0, 0x44, 0x74, 0xa3, 0x12, 0x69, 0xc3, 0x63, 0x30, 0xde, 0xc6, 0xee, 0x81, 0x25, - 0x8a, 0xf5, 0x5d, 0x11, 0x25, 0x80, 0x0c, 0x87, 0x7d, 0xc5, 0x51, 0xfe, 0x1a, 0x92, 0x1c, 0xd4, - 0x6d, 0x30, 0x6b, 0xfa, 0x2c, 0xfd, 0x6c, 0x02, 0x6e, 0x8a, 0x24, 0x8f, 0x34, 0xf4, 0x36, 0x00, - 0xc3, 0xec, 0x74, 0x5d, 0x56, 0x90, 0x59, 0x7e, 0xca, 0x52, 0x09, 0x3d, 0xfb, 0x24, 0xf7, 0x74, - 0x5d, 0x6f, 0x3c, 0x49, 0xc7, 0x81, 0x89, 0xa8, 0xc2, 0xc5, 0x9e, 0xa1, 0x29, 0x6a, 0x68, 0x69, - 0xc0, 0x4a, 0xfb, 0x6a, 0xdd, 0x03, 0x20, 0xeb, 0x2d, 0x03, 0x9b, 0xae, 0xea, 0xb8, 0x36, 0xd6, - 0xda, 0x86, 0xd9, 0xa4, 0x09, 0x38, 0x53, 0x4e, 0x37, 0xb4, 0x96, 0x83, 0x95, 0x29, 0x36, 0x5c, - 0x13, 0xa3, 0x04, 0x41, 0xab, 0x8c, 0xed, 0x43, 0x8c, 0x07, 0x10, 0x6c, 0xd8, 0x43, 0xcc, 0x7f, - 0x6e, 0x02, 0x72, 0xbe, 0xb6, 0x0e, 0x9d, 0x86, 0xfc, 0xf3, 0xda, 0x35, 0x4d, 0x15, 0xad, 0x3a, - 0xf3, 0x44, 0x8e, 0xc8, 0x76, 0x78, 0xbb, 0xfe, 0x00, 0xcc, 0x52, 0x15, 0xab, 0xeb, 0x62, 0x5b, - 0xd5, 0x5b, 0x9a, 0xe3, 0x50, 0xa7, 0x65, 0xa8, 0x2a, 0x22, 0x63, 0xdb, 0x64, 0x68, 0x45, 0x8c, - 0xa0, 0xf3, 0x30, 0x43, 0x11, 0xed, 0x6e, 0xcb, 0x35, 0x3a, 0x2d, 0xac, 0x92, 0x97, 0x07, 0x87, - 0x26, 0x62, 0xcf, 0xb2, 0x69, 0xa2, 0xb1, 0xc9, 0x15, 0x88, 0x45, 0x0e, 0x5a, 0x83, 0xdb, 0x28, - 0xac, 0x89, 0x4d, 0x6c, 0x6b, 0x2e, 0x56, 0xf1, 0xa7, 0xbb, 0x5a, 0xcb, 0x51, 0x35, 0xb3, 0xae, - 0x1e, 0x68, 0xce, 0x41, 0x71, 0xd6, 0x4f, 0x70, 0x0b, 0xd1, 0x5d, 0xe3, 0xaa, 0x55, 0xaa, 0x59, - 0x31, 0xeb, 0x57, 0x34, 0xe7, 0x00, 0x95, 0xe1, 0x04, 0x25, 0x72, 0x5c, 0xdb, 0x30, 0x9b, 0xaa, - 0x7e, 0x80, 0xf5, 0xab, 0x6a, 0xd7, 0x6d, 0x5c, 0x2c, 0xde, 0xea, 0x67, 0xa0, 0x46, 0xd6, 0xa8, - 0xce, 0x0a, 0x51, 0xd9, 0x73, 0x1b, 0x17, 0x51, 0x0d, 0xf2, 0x64, 0x3f, 0xda, 0xc6, 0x4b, 0x58, - 0x6d, 0x58, 0x36, 0x2d, 0x2e, 0x85, 0x88, 0xc3, 0xed, 0x73, 0xe2, 0xe2, 0x36, 0x07, 0x6c, 0x5a, - 0x75, 0x5c, 0x4e, 0xd7, 0x76, 0xaa, 0xd5, 0x55, 0x25, 0x27, 0x58, 0x2e, 0x5b, 0x36, 0x89, 0xa9, - 0xa6, 0xe5, 0xf9, 0x38, 0xc7, 0x62, 0xaa, 0x69, 0x09, 0x0f, 0x9f, 0x87, 0x19, 0x5d, 0x67, 0xcb, - 0x36, 0x74, 0x95, 0x77, 0xf9, 0x4e, 0x51, 0x0e, 0xf8, 0x4b, 0xd7, 0xd7, 0x98, 0x02, 0x0f, 0x73, - 0x07, 0x3d, 0x02, 0x37, 0xf5, 0xfc, 0xe5, 0x07, 0x4e, 0xf7, 0xad, 0x32, 0x0c, 0x3d, 0x0f, 0x33, - 0x9d, 0xc3, 0x7e, 0x20, 0x0a, 0xcc, 0xd8, 0x39, 0x0c, 0xc3, 0xee, 0xa4, 0x6f, 0x6e, 0x36, 0xd6, - 0x35, 0x17, 0xd7, 0x8b, 0x37, 0xfb, 0xb5, 0x7d, 0x03, 0xe8, 0x2c, 0xc8, 0xba, 0xae, 0x62, 0x53, - 0xdb, 0x6f, 0x61, 0x55, 0xb3, 0xb1, 0xa9, 0x39, 0xc5, 0x93, 0x7e, 0xe5, 0x82, 0xae, 0x57, 0xe9, - 0x68, 0x85, 0x0e, 0xa2, 0x33, 0x30, 0x6d, 0xed, 0x3f, 0xaf, 0xb3, 0xe0, 0x52, 0x3b, 0x36, 0x6e, - 0x18, 0x2f, 0x16, 0xef, 0xa0, 0x6e, 0x9a, 0x22, 0x03, 0x34, 0xb4, 0x76, 0xa8, 0x18, 0xdd, 0x03, - 0xb2, 0xee, 0x1c, 0x68, 0x76, 0x87, 0x56, 0x77, 0xa7, 0xa3, 0xe9, 0xb8, 0x78, 0x27, 0x53, 0x65, - 0xf2, 0x2d, 0x21, 0x46, 0x4f, 0xc3, 0x6c, 0xd7, 0x34, 0x4c, 0x17, 0xdb, 0x1d, 0x1b, 0x93, 0x26, - 0x9d, 0x9d, 0xb4, 0xe2, 0x3f, 0x4f, 0x0c, 0x68, 0xb3, 0xf7, 0xfc, 0xda, 0x6c, 0x77, 0x95, 0x99, - 0x6e, 0xbf, 0x70, 0xbe, 0x0c, 0x79, 0xff, 0xa6, 0xa3, 0x2c, 0xb0, 0x6d, 0x97, 0x25, 0x52, 0x43, - 0x57, 0xb6, 0x57, 0x49, 0xf5, 0x7b, 0xb6, 0x2a, 0x27, 0x48, 0x15, 0xde, 0x58, 0xdf, 0xad, 0xaa, - 0xca, 0xde, 0xd6, 0xee, 0xfa, 0x66, 0x55, 0x4e, 0x9e, 0xc9, 0x66, 0xde, 0x99, 0x90, 0xaf, 0x5f, - 0xbf, 0x7e, 0x3d, 0x31, 0xff, 0x9d, 0x04, 0x14, 0x82, 0x9d, 0x2f, 0xfa, 0x38, 0xdc, 0x2c, 0x5e, - 0x53, 0x1d, 0xec, 0xaa, 0x2f, 0x18, 0x36, 0x8d, 0xc3, 0xb6, 0xc6, 0x7a, 0x47, 0xcf, 0x85, 0xb3, - 0x5c, 0xab, 0x86, 0xdd, 0xa7, 0x0c, 0x9b, 0x44, 0x59, 0x5b, 0x73, 0xd1, 0x06, 0x9c, 0x34, 0x2d, - 0xd5, 0x71, 0x35, 0xb3, 0xae, 0xd9, 0x75, 0xb5, 0x77, 0x41, 0xa0, 0x6a, 0xba, 0x8e, 0x1d, 0xc7, - 0x62, 0x25, 0xc0, 0x63, 0xf9, 0x98, 0x69, 0xd5, 0xb8, 0x72, 0x2f, 0x37, 0x56, 0xb8, 0x6a, 0x68, - 0xbb, 0x93, 0x83, 0xb6, 0xfb, 0x56, 0xc8, 0xb6, 0xb5, 0x8e, 0x8a, 0x4d, 0xd7, 0x3e, 0xa4, 0xfd, - 0x5a, 0x46, 0xc9, 0xb4, 0xb5, 0x4e, 0x95, 0x3c, 0xff, 0xf4, 0xf6, 0xc0, 0xef, 0xc7, 0x1f, 0x26, - 0x21, 0xef, 0xef, 0xd9, 0x48, 0x0b, 0xac, 0xd3, 0xfc, 0x2c, 0xd1, 0xe3, 0x7b, 0xfb, 0xd0, 0x0e, - 0x6f, 0x71, 0x85, 0x24, 0xee, 0xf2, 0x38, 0xeb, 0xa4, 0x14, 0x86, 0x24, 0x45, 0x93, 0x1c, 0x58, - 0xcc, 0xfa, 0xf3, 0x8c, 0xc2, 0x9f, 0xd0, 0x1a, 0x8c, 0x3f, 0xef, 0x50, 0xee, 0x71, 0xca, 0x7d, - 0xc7, 0x70, 0xee, 0x27, 0x6a, 0x94, 0x3c, 0xfb, 0x44, 0x4d, 0xdd, 0xda, 0x56, 0x36, 0x2b, 0x1b, - 0x0a, 0x87, 0xa3, 0x5b, 0x20, 0xd5, 0xd2, 0x5e, 0x3a, 0x0c, 0xa6, 0x78, 0x2a, 0x1a, 0xd5, 0xf1, - 0xb7, 0x40, 0xea, 0x05, 0xac, 0x5d, 0x0d, 0x26, 0x56, 0x2a, 0xfa, 0x29, 0x86, 0xfe, 0x59, 0x48, - 0x53, 0x7f, 0x21, 0x00, 0xee, 0x31, 0x79, 0x0c, 0x65, 0x20, 0xb5, 0xb2, 0xad, 0x90, 0xf0, 0x97, - 0x21, 0xcf, 0xa4, 0xea, 0xce, 0x7a, 0x75, 0xa5, 0x2a, 0x27, 0xe6, 0xcf, 0xc3, 0x38, 0x73, 0x02, - 0x39, 0x1a, 0x9e, 0x1b, 0xe4, 0x31, 0xfe, 0xc8, 0x39, 0x24, 0x31, 0xba, 0xb7, 0xb9, 0x5c, 0x55, - 0xe4, 0x84, 0x7f, 0x7b, 0x1d, 0xc8, 0xfb, 0xdb, 0xb5, 0x9f, 0x4d, 0x4c, 0xfd, 0xad, 0x04, 0x39, - 0x5f, 0xfb, 0x45, 0x0a, 0xbf, 0xd6, 0x6a, 0x59, 0x2f, 0xa8, 0x5a, 0xcb, 0xd0, 0x1c, 0x1e, 0x14, - 0x40, 0x45, 0x15, 0x22, 0x19, 0x75, 0xd3, 0x7e, 0x26, 0xc6, 0xbf, 0x2e, 0x81, 0x1c, 0x6e, 0xdd, - 0x42, 0x06, 0x4a, 0x3f, 0x57, 0x03, 0x5f, 0x93, 0xa0, 0x10, 0xec, 0xd7, 0x42, 0xe6, 0x9d, 0xfe, - 0xb9, 0x9a, 0xf7, 0x05, 0x09, 0x26, 0x03, 0x5d, 0xda, 0x2f, 0x94, 0x75, 0xaf, 0x26, 0x61, 0x26, - 0x02, 0x87, 0x2a, 0xbc, 0x9d, 0x65, 0x1d, 0xf6, 0xfd, 0xa3, 0xcc, 0xb5, 0x48, 0xaa, 0xe5, 0x8e, - 0x66, 0xbb, 0xbc, 0xfb, 0xbd, 0x07, 0x64, 0xa3, 0x8e, 0x4d, 0xd7, 0x68, 0x18, 0xd8, 0xe6, 0xaf, - 0xe0, 0xac, 0xc7, 0x9d, 0xea, 0xc9, 0xd9, 0x5b, 0xf8, 0x7d, 0x80, 0x3a, 0x96, 0x63, 0xb8, 0xc6, - 0x35, 0xac, 0x1a, 0xa6, 0x78, 0x5f, 0x27, 0x3d, 0x6f, 0x4a, 0x91, 0xc5, 0xc8, 0xba, 0xe9, 0x7a, - 0xda, 0x26, 0x6e, 0x6a, 0x21, 0x6d, 0x92, 0xfb, 0x92, 0x8a, 0x2c, 0x46, 0x3c, 0xed, 0xd3, 0x90, - 0xaf, 0x5b, 0x5d, 0xd2, 0x3e, 0x30, 0x3d, 0x92, 0x6a, 0x25, 0x25, 0xc7, 0x64, 0x9e, 0x0a, 0xef, - 0xef, 0x7a, 0x17, 0x05, 0x79, 0x25, 0xc7, 0x64, 0x4c, 0xe5, 0x6e, 0x98, 0xd2, 0x9a, 0x4d, 0x9b, - 0x90, 0x0b, 0x22, 0xd6, 0xb4, 0x16, 0x3c, 0x31, 0x55, 0x9c, 0x7b, 0x02, 0x32, 0xc2, 0x0f, 0xa4, - 0x9a, 0x11, 0x4f, 0xa8, 0x1d, 0x76, 0x5d, 0x93, 0x58, 0xc8, 0x2a, 0x19, 0x53, 0x0c, 0x9e, 0x86, - 0xbc, 0xe1, 0xa8, 0xbd, 0x7b, 0xc3, 0xc4, 0xa9, 0xc4, 0x42, 0x46, 0xc9, 0x19, 0x8e, 0x77, 0x51, - 0x34, 0xff, 0x46, 0x02, 0x0a, 0xc1, 0x7b, 0x4f, 0xb4, 0x0a, 0x99, 0x96, 0xa5, 0x6b, 0x34, 0x10, - 0xd8, 0xa5, 0xfb, 0x42, 0xcc, 0x55, 0xe9, 0xe2, 0x06, 0xd7, 0x57, 0x3c, 0xe4, 0xdc, 0x3f, 0x4a, - 0x90, 0x11, 0x62, 0x74, 0x02, 0x52, 0x1d, 0xcd, 0x3d, 0xa0, 0x74, 0xe9, 0xe5, 0x84, 0x2c, 0x29, - 0xf4, 0x99, 0xc8, 0x9d, 0x8e, 0x66, 0xd2, 0x10, 0xe0, 0x72, 0xf2, 0x4c, 0xf6, 0xb5, 0x85, 0xb5, - 0x3a, 0x6d, 0x87, 0xad, 0x76, 0x1b, 0x9b, 0xae, 0x23, 0xf6, 0x95, 0xcb, 0x57, 0xb8, 0x18, 0xdd, - 0x0b, 0xd3, 0xae, 0xad, 0x19, 0xad, 0x80, 0x6e, 0x8a, 0xea, 0xca, 0x62, 0xc0, 0x53, 0x2e, 0xc3, - 0x2d, 0x82, 0xb7, 0x8e, 0x5d, 0x4d, 0x3f, 0xc0, 0xf5, 0x1e, 0x68, 0x9c, 0x5e, 0xaa, 0xdd, 0xcc, - 0x15, 0x56, 0xf9, 0xb8, 0xc0, 0xce, 0x7f, 0x4f, 0x82, 0x69, 0xd1, 0xc0, 0xd7, 0x3d, 0x67, 0x6d, - 0x02, 0x68, 0xa6, 0x69, 0xb9, 0x7e, 0x77, 0xf5, 0x87, 0x72, 0x1f, 0x6e, 0xb1, 0xe2, 0x81, 0x14, - 0x1f, 0xc1, 0x5c, 0x1b, 0xa0, 0x37, 0x32, 0xd0, 0x6d, 0x27, 0x21, 0xc7, 0x2f, 0xb5, 0xe9, 0x2f, - 0x23, 0xec, 0xad, 0x0f, 0x98, 0x88, 0x74, 0xfa, 0x68, 0x16, 0xd2, 0xfb, 0xb8, 0x69, 0x98, 0xfc, - 0xaa, 0x8d, 0x3d, 0x88, 0x0b, 0xbc, 0x94, 0x77, 0x81, 0xb7, 0xfc, 0x29, 0x98, 0xd1, 0xad, 0x76, - 0xd8, 0xdc, 0x65, 0x39, 0xf4, 0xe6, 0xe9, 0x5c, 0x91, 0x9e, 0x85, 0x5e, 0x77, 0xf6, 0x25, 0x49, - 0xfa, 0x4a, 0x22, 0xb9, 0xb6, 0xb3, 0xfc, 0xb5, 0xc4, 0xdc, 0x1a, 0x83, 0xee, 0x88, 0x95, 0x2a, - 0xb8, 0xd1, 0xc2, 0x3a, 0xb1, 0x1e, 0x7e, 0x7c, 0x17, 0xdc, 0xdf, 0x34, 0xdc, 0x83, 0xee, 0xfe, - 0xa2, 0x6e, 0xb5, 0xcf, 0x36, 0xad, 0xa6, 0xd5, 0xfb, 0x31, 0x88, 0x3c, 0xd1, 0x07, 0xfa, 0x1f, - 0xff, 0x41, 0x28, 0xeb, 0x49, 0xe7, 0x62, 0x7f, 0x3d, 0x2a, 0x6f, 0xc1, 0x0c, 0x57, 0x56, 0xe9, - 0x8d, 0x34, 0xeb, 0xc3, 0xd1, 0xd0, 0x5b, 0x89, 0xe2, 0x37, 0xde, 0xa6, 0x95, 0x4e, 0x99, 0xe6, - 0x50, 0x32, 0xc6, 0x3a, 0xf5, 0xb2, 0x02, 0x37, 0x05, 0xf8, 0xd8, 0xd1, 0xc4, 0x76, 0x0c, 0xe3, - 0x77, 0x38, 0xe3, 0x8c, 0x8f, 0xb1, 0xc6, 0xa1, 0xe5, 0x15, 0x98, 0x3c, 0x0e, 0xd7, 0xdf, 0x71, - 0xae, 0x3c, 0xf6, 0x93, 0xac, 0xc1, 0x14, 0x25, 0xd1, 0xbb, 0x8e, 0x6b, 0xb5, 0x69, 0xde, 0x1b, - 0x4e, 0xf3, 0xf7, 0x6f, 0xb3, 0xb3, 0x52, 0x20, 0xb0, 0x15, 0x0f, 0x55, 0x2e, 0x03, 0xbd, 0x84, - 0xaf, 0x63, 0xbd, 0x15, 0xc3, 0xf0, 0x26, 0x37, 0xc4, 0xd3, 0x2f, 0x3f, 0x09, 0xb3, 0xe4, 0x7f, - 0x9a, 0x96, 0xfc, 0x96, 0xc4, 0xdf, 0xc1, 0x14, 0xbf, 0xf7, 0x32, 0x3b, 0x8e, 0x33, 0x1e, 0x81, - 0xcf, 0x26, 0xdf, 0x2e, 0x36, 0xb1, 0xeb, 0x62, 0xdb, 0x51, 0xb5, 0x56, 0x94, 0x79, 0xbe, 0x37, - 0xd8, 0xe2, 0xe7, 0xdf, 0x0d, 0xee, 0xe2, 0x1a, 0x43, 0x56, 0x5a, 0xad, 0xf2, 0x1e, 0xdc, 0x1c, - 0x11, 0x15, 0x23, 0x70, 0xbe, 0xca, 0x39, 0x67, 0xfb, 0x22, 0x83, 0xd0, 0xee, 0x80, 0x90, 0x7b, - 0x7b, 0x39, 0x02, 0xe7, 0x17, 0x38, 0x27, 0xe2, 0x58, 0xb1, 0xa5, 0x84, 0xf1, 0x09, 0x98, 0xbe, - 0x86, 0xed, 0x7d, 0xcb, 0xe1, 0x17, 0x07, 0x23, 0xd0, 0xbd, 0xc6, 0xe9, 0xa6, 0x38, 0x90, 0x5e, - 0x23, 0x10, 0xae, 0x47, 0x20, 0xd3, 0xd0, 0x74, 0x3c, 0x02, 0xc5, 0x17, 0x39, 0xc5, 0x04, 0xd1, - 0x27, 0xd0, 0x0a, 0xe4, 0x9b, 0x16, 0xaf, 0x4c, 0xf1, 0xf0, 0xd7, 0x39, 0x3c, 0x27, 0x30, 0x9c, - 0xa2, 0x63, 0x75, 0xba, 0x2d, 0x52, 0xb6, 0xe2, 0x29, 0x7e, 0x5f, 0x50, 0x08, 0x0c, 0xa7, 0x38, - 0x86, 0x5b, 0xbf, 0x24, 0x28, 0x1c, 0x9f, 0x3f, 0x1f, 0x87, 0x9c, 0x65, 0xb6, 0x0e, 0x2d, 0x73, - 0x14, 0x23, 0xbe, 0xcc, 0x19, 0x80, 0x43, 0x08, 0xc1, 0x25, 0xc8, 0x8e, 0xba, 0x11, 0x7f, 0xf0, - 0xae, 0x38, 0x1e, 0x62, 0x07, 0xd6, 0x60, 0x4a, 0x24, 0x28, 0xc3, 0x32, 0x47, 0xa0, 0xf8, 0x43, - 0x4e, 0x51, 0xf0, 0xc1, 0xf8, 0x32, 0x5c, 0xec, 0xb8, 0x4d, 0x3c, 0x0a, 0xc9, 0x1b, 0x62, 0x19, - 0x1c, 0xc2, 0x5d, 0xb9, 0x8f, 0x4d, 0xfd, 0x60, 0x34, 0x86, 0xaf, 0x0a, 0x57, 0x0a, 0x0c, 0xa1, - 0x58, 0x81, 0xc9, 0xb6, 0x66, 0x3b, 0x07, 0x5a, 0x6b, 0xa4, 0xed, 0xf8, 0x23, 0xce, 0x91, 0xf7, - 0x40, 0xdc, 0x23, 0x5d, 0xf3, 0x38, 0x34, 0x5f, 0x13, 0x1e, 0xf1, 0xc1, 0xf8, 0xd1, 0x73, 0x5c, - 0x7a, 0x37, 0x73, 0x1c, 0xb6, 0x3f, 0x16, 0x47, 0x8f, 0x61, 0x37, 0xfd, 0x8c, 0x97, 0x20, 0xeb, - 0x18, 0x2f, 0x8d, 0x44, 0xf3, 0x27, 0x62, 0xa7, 0x29, 0x80, 0x80, 0x9f, 0x81, 0x5b, 0x22, 0xcb, - 0xc4, 0x08, 0x64, 0x7f, 0xca, 0xc9, 0x4e, 0x44, 0x94, 0x0a, 0x9e, 0x12, 0x8e, 0x4b, 0xf9, 0x67, - 0x22, 0x25, 0xe0, 0x10, 0xd7, 0x0e, 0xe9, 0xec, 0x1d, 0xad, 0x71, 0x3c, 0xaf, 0xfd, 0xb9, 0xf0, - 0x1a, 0xc3, 0x06, 0xbc, 0xb6, 0x0b, 0x27, 0x38, 0xe3, 0xf1, 0xf6, 0xf5, 0xeb, 0x22, 0xb1, 0x32, - 0xf4, 0x5e, 0x70, 0x77, 0x3f, 0x05, 0x73, 0x9e, 0x3b, 0x45, 0x53, 0xea, 0xa8, 0x6d, 0xad, 0x33, - 0x02, 0xf3, 0x37, 0x38, 0xb3, 0xc8, 0xf8, 0x5e, 0x57, 0xeb, 0x6c, 0x6a, 0x1d, 0x42, 0xfe, 0x34, - 0x14, 0x05, 0x79, 0xd7, 0xb4, 0xb1, 0x6e, 0x35, 0x4d, 0xe3, 0x25, 0x5c, 0x1f, 0x81, 0xfa, 0x2f, - 0x42, 0x5b, 0xb5, 0xe7, 0x83, 0x13, 0xe6, 0x75, 0x90, 0xbd, 0x5e, 0x45, 0x35, 0xda, 0x1d, 0xcb, - 0x76, 0x63, 0x18, 0xff, 0x52, 0xec, 0x94, 0x87, 0x5b, 0xa7, 0xb0, 0x72, 0x15, 0x0a, 0xf4, 0x71, - 0xd4, 0x90, 0xfc, 0x2b, 0x4e, 0x34, 0xd9, 0x43, 0xf1, 0xc4, 0xa1, 0x5b, 0xed, 0x8e, 0x66, 0x8f, - 0x92, 0xff, 0xfe, 0x5a, 0x24, 0x0e, 0x0e, 0xe1, 0x89, 0xc3, 0x3d, 0xec, 0x60, 0x52, 0xed, 0x47, - 0x60, 0xf8, 0xa6, 0x48, 0x1c, 0x02, 0xc3, 0x29, 0x44, 0xc3, 0x30, 0x02, 0xc5, 0xdf, 0x08, 0x0a, - 0x81, 0x21, 0x14, 0x9f, 0xec, 0x15, 0x5a, 0x1b, 0x37, 0x0d, 0xc7, 0xb5, 0x59, 0x2b, 0x3c, 0x9c, - 0xea, 0x5b, 0xef, 0x06, 0x9b, 0x30, 0xc5, 0x07, 0x2d, 0x3f, 0x01, 0x53, 0xa1, 0x16, 0x03, 0xc5, - 0xfd, 0xa2, 0x5f, 0xfc, 0xcc, 0xfb, 0x3c, 0x19, 0x05, 0x3b, 0x8c, 0xf2, 0x06, 0xd9, 0xf7, 0x60, - 0x1f, 0x10, 0x4f, 0xf6, 0xf2, 0xfb, 0xde, 0xd6, 0x07, 0xda, 0x80, 0xf2, 0x65, 0x98, 0x0c, 0xf4, - 0x00, 0xf1, 0x54, 0xbf, 0xc4, 0xa9, 0xf2, 0xfe, 0x16, 0xa0, 0x7c, 0x1e, 0x52, 0xa4, 0x9e, 0xc7, - 0xc3, 0x7f, 0x99, 0xc3, 0xa9, 0x7a, 0xf9, 0x51, 0xc8, 0x88, 0x3a, 0x1e, 0x0f, 0xfd, 0x15, 0x0e, - 0xf5, 0x20, 0x04, 0x2e, 0x6a, 0x78, 0x3c, 0xfc, 0x57, 0x05, 0x5c, 0x40, 0x08, 0x7c, 0x74, 0x17, - 0x7e, 0xfb, 0x73, 0x29, 0x9e, 0x87, 0x85, 0xef, 0x2e, 0xc1, 0x04, 0x2f, 0xde, 0xf1, 0xe8, 0xcf, - 0xf2, 0xc9, 0x05, 0xa2, 0xfc, 0x30, 0xa4, 0x47, 0x74, 0xf8, 0xaf, 0x71, 0x28, 0xd3, 0x2f, 0xaf, - 0x40, 0xce, 0x57, 0xb0, 0xe3, 0xe1, 0xbf, 0xce, 0xe1, 0x7e, 0x14, 0x31, 0x9d, 0x17, 0xec, 0x78, - 0x82, 0xdf, 0x10, 0xa6, 0x73, 0x04, 0x71, 0x9b, 0xa8, 0xd5, 0xf1, 0xe8, 0xdf, 0x14, 0x5e, 0x17, - 0x90, 0xf2, 0xe3, 0x90, 0xf5, 0xf2, 0x6f, 0x3c, 0xfe, 0xb7, 0x38, 0xbe, 0x87, 0x21, 0x1e, 0xf0, - 0xe5, 0xff, 0x78, 0x8a, 0xdf, 0x16, 0x1e, 0xf0, 0xa1, 0xc8, 0x31, 0x0a, 0xd7, 0xf4, 0x78, 0xa6, - 0xdf, 0x11, 0xc7, 0x28, 0x54, 0xd2, 0xc9, 0x6e, 0xd2, 0x34, 0x18, 0x4f, 0xf1, 0xbb, 0x62, 0x37, - 0xa9, 0x3e, 0x31, 0x23, 0x5c, 0x24, 0xe3, 0x39, 0x7e, 0x4f, 0x98, 0x11, 0xaa, 0x91, 0xe5, 0x1d, - 0x40, 0xfd, 0x05, 0x32, 0x9e, 0xef, 0x15, 0xce, 0x37, 0xdd, 0x57, 0x1f, 0xcb, 0x4f, 0xc1, 0x89, - 0xe8, 0xe2, 0x18, 0xcf, 0xfa, 0xf9, 0xf7, 0x43, 0xaf, 0x33, 0xfe, 0xda, 0x58, 0xde, 0xed, 0x65, - 0x59, 0x7f, 0x61, 0x8c, 0xa7, 0x7d, 0xf5, 0xfd, 0x60, 0xa2, 0xf5, 0xd7, 0xc5, 0x72, 0x05, 0xa0, - 0x57, 0x93, 0xe2, 0xb9, 0x5e, 0xe3, 0x5c, 0x3e, 0x10, 0x39, 0x1a, 0xbc, 0x24, 0xc5, 0xe3, 0xbf, - 0x28, 0x8e, 0x06, 0x47, 0x90, 0xa3, 0x21, 0xaa, 0x51, 0x3c, 0xfa, 0x75, 0x71, 0x34, 0x04, 0xa4, - 0x7c, 0x09, 0x32, 0x66, 0xb7, 0xd5, 0x22, 0xb1, 0x85, 0x86, 0x7f, 0x64, 0x53, 0xfc, 0x97, 0x0f, - 0x38, 0x58, 0x00, 0xca, 0xe7, 0x21, 0x8d, 0xdb, 0xfb, 0xb8, 0x1e, 0x87, 0xfc, 0xd7, 0x0f, 0x44, - 0x3e, 0x21, 0xda, 0xe5, 0xc7, 0x01, 0xd8, 0xcb, 0x34, 0xfd, 0x8d, 0x25, 0x06, 0xfb, 0x6f, 0x1f, - 0xf0, 0xdf, 0xef, 0x7b, 0x90, 0x1e, 0x01, 0xfb, 0x1a, 0x60, 0x38, 0xc1, 0xbb, 0x41, 0x02, 0xfa, - 0x02, 0xfe, 0x08, 0x4c, 0x3c, 0xef, 0x58, 0xa6, 0xab, 0x35, 0xe3, 0xd0, 0xff, 0xce, 0xd1, 0x42, - 0x9f, 0x38, 0xac, 0x6d, 0xd9, 0xd8, 0xd5, 0x9a, 0x4e, 0x1c, 0xf6, 0x3f, 0x38, 0xd6, 0x03, 0x10, - 0xb0, 0xae, 0x39, 0xee, 0x28, 0xeb, 0xfe, 0x4f, 0x01, 0x16, 0x00, 0x62, 0x34, 0xf9, 0xff, 0x2a, - 0x3e, 0x8c, 0xc3, 0xbe, 0x27, 0x8c, 0xe6, 0xfa, 0xe5, 0x47, 0x21, 0x4b, 0xfe, 0x65, 0xdf, 0xb4, - 0xc4, 0x80, 0xff, 0x8b, 0x83, 0x7b, 0x08, 0x32, 0xb3, 0xe3, 0xd6, 0x5d, 0x23, 0xde, 0xd9, 0xff, - 0xcd, 0x77, 0x5a, 0xe8, 0x97, 0x2b, 0x90, 0x73, 0xdc, 0x7a, 0xbd, 0xcb, 0x3b, 0x9a, 0x18, 0xf8, - 0x8f, 0x3f, 0xf0, 0x5e, 0x72, 0x3d, 0xcc, 0xf2, 0xe9, 0xe8, 0xfb, 0x3a, 0x58, 0xb3, 0xd6, 0x2c, - 0x76, 0x53, 0x07, 0xff, 0x7b, 0x3f, 0xdc, 0xae, 0x5b, 0xed, 0x7d, 0xcb, 0x39, 0xeb, 0x4b, 0x43, - 0x67, 0xdb, 0x5a, 0xc7, 0xa1, 0xfa, 0x4b, 0xfc, 0xae, 0x2d, 0xc7, 0x9f, 0xc8, 0xc0, 0xdc, 0xf1, - 0xee, 0xe9, 0xe6, 0x6f, 0x83, 0xc9, 0xcb, 0x2d, 0x4b, 0x73, 0x0d, 0xb3, 0xb9, 0x63, 0x19, 0xa6, - 0x8b, 0xf2, 0x20, 0x35, 0xe8, 0x4f, 0x34, 0x92, 0x22, 0x35, 0xe6, 0xff, 0x21, 0x0d, 0x59, 0x76, - 0xc5, 0xb3, 0xa9, 0x75, 0xd0, 0xff, 0x87, 0xfc, 0x16, 0x3f, 0x25, 0x0f, 0x2e, 0x5d, 0x74, 0xbc, - 0x2b, 0x65, 0xdf, 0xfc, 0x8b, 0x9e, 0xf6, 0xa2, 0x5f, 0x95, 0xfe, 0x24, 0xbb, 0xfc, 0xc0, 0x0f, - 0xde, 0x3a, 0x79, 0xdf, 0x40, 0xfb, 0x48, 0x59, 0x3c, 0xcb, 0xc2, 0x79, 0x71, 0xcf, 0x30, 0xdd, - 0x07, 0x97, 0x2e, 0x2a, 0x81, 0xf9, 0xd0, 0x35, 0xc8, 0xf0, 0x01, 0x87, 0xff, 0xd4, 0x70, 0xc7, - 0x80, 0xb9, 0x85, 0x1a, 0x9b, 0xf7, 0xdc, 0x9b, 0x6f, 0x9d, 0x1c, 0x3b, 0xf6, 0xdc, 0xde, 0x5c, - 0xe8, 0xd3, 0x90, 0x13, 0x76, 0xac, 0xd7, 0x1d, 0xfe, 0xb1, 0xed, 0xdd, 0x31, 0xcb, 0x5e, 0xaf, - 0xf3, 0xd9, 0xef, 0xfa, 0xc1, 0x5b, 0x27, 0xe7, 0x87, 0xce, 0xbc, 0xb8, 0xd7, 0x35, 0xea, 0x8a, - 0x7f, 0x0e, 0xf4, 0x1c, 0x24, 0xc9, 0x54, 0xec, 0xb3, 0xdc, 0x93, 0x03, 0xa6, 0xf2, 0xa6, 0x38, - 0xc3, 0x17, 0x38, 0xca, 0x34, 0x84, 0x77, 0xee, 0x71, 0x98, 0xee, 0xdb, 0x1e, 0x24, 0x43, 0xf2, - 0x2a, 0x3e, 0xe4, 0x5f, 0xe2, 0x90, 0x7f, 0xd1, 0x6c, 0xef, 0x4b, 0x33, 0x69, 0x21, 0xcf, 0x3f, - 0x1f, 0x2b, 0x27, 0x2e, 0x4a, 0x73, 0x97, 0x60, 0x32, 0xe0, 0xe3, 0x63, 0x81, 0x1f, 0x03, 0x39, - 0xec, 0xa5, 0x63, 0xe1, 0x2f, 0x40, 0xe6, 0xc3, 0xe0, 0xe6, 0xbf, 0x8f, 0x60, 0xa2, 0xd2, 0x6a, - 0x6d, 0x6a, 0x1d, 0x07, 0x3d, 0x03, 0xd3, 0xac, 0x79, 0xdf, 0xb5, 0x56, 0xe9, 0x8f, 0x3b, 0x9b, - 0x5a, 0x87, 0x07, 0xf4, 0xbd, 0x01, 0x77, 0x73, 0xc0, 0x62, 0x9f, 0x36, 0x9d, 0x5f, 0xe9, 0x67, - 0x41, 0x4f, 0x82, 0x2c, 0x84, 0xf4, 0x6c, 0x11, 0x66, 0x16, 0xae, 0x67, 0x86, 0x32, 0x0b, 0x65, - 0x46, 0xdc, 0xc7, 0x81, 0x1e, 0x83, 0xcc, 0xba, 0xe9, 0x3e, 0xb4, 0x44, 0xf8, 0x58, 0x0c, 0xce, - 0x47, 0xf2, 0x09, 0x25, 0xc6, 0xe3, 0x61, 0x38, 0xfe, 0xc2, 0x39, 0x82, 0x4f, 0x0d, 0xc7, 0x53, - 0xa5, 0x1e, 0x9e, 0x3e, 0xa2, 0x0a, 0x64, 0xc9, 0x9e, 0x33, 0x03, 0xd8, 0x77, 0xde, 0xb7, 0x47, - 0x12, 0x78, 0x5a, 0x8c, 0xa1, 0x87, 0x12, 0x14, 0xcc, 0x86, 0xf1, 0x18, 0x0a, 0x9f, 0x11, 0x3d, - 0x14, 0xa1, 0xa8, 0x79, 0x56, 0x4c, 0x0c, 0xa1, 0xa8, 0x85, 0xac, 0xa8, 0xf9, 0xad, 0xa8, 0x79, - 0x56, 0x64, 0x62, 0x28, 0xfc, 0x56, 0x78, 0xcf, 0x68, 0x15, 0xe0, 0xb2, 0xf1, 0x22, 0xae, 0x33, - 0x33, 0xb2, 0x11, 0xc9, 0x48, 0x70, 0xf4, 0xd4, 0x18, 0x89, 0x0f, 0x87, 0xd6, 0x20, 0x57, 0x6b, - 0xf4, 0x68, 0x80, 0x7f, 0xe6, 0x1e, 0x69, 0x4a, 0x23, 0xc4, 0xe3, 0x47, 0x7a, 0xe6, 0xb0, 0x25, - 0xe5, 0xe2, 0xcc, 0xf1, 0xad, 0xc9, 0x87, 0xeb, 0x99, 0xc3, 0x68, 0xf2, 0xb1, 0xe6, 0xf8, 0x78, - 0xfc, 0x48, 0x74, 0x09, 0x26, 0x96, 0x2d, 0x8b, 0x68, 0x16, 0x27, 0x29, 0xc9, 0xe9, 0x48, 0x12, - 0xae, 0xc3, 0x08, 0x04, 0x82, 0xee, 0x0e, 0x0d, 0x7d, 0x02, 0x2f, 0x0c, 0xdb, 0x1d, 0xa1, 0x25, - 0x76, 0x47, 0x3c, 0xfb, 0x4f, 0xe0, 0xf2, 0xa1, 0x8b, 0x49, 0xa3, 0x5c, 0x9c, 0x1a, 0xe1, 0x04, - 0x0a, 0xe5, 0xd0, 0x09, 0x14, 0x62, 0x54, 0x83, 0x29, 0x21, 0xab, 0x9a, 0x5d, 0x92, 0x83, 0x8b, - 0x32, 0xff, 0x06, 0x77, 0x18, 0x2d, 0xd7, 0x65, 0xac, 0x61, 0x06, 0xb4, 0x03, 0x05, 0x21, 0xda, - 0x74, 0xe8, 0xa2, 0xa7, 0x23, 0xea, 0x6a, 0x98, 0x93, 0xa9, 0x32, 0xca, 0x10, 0x7e, 0x6e, 0x15, - 0x4e, 0x44, 0x67, 0xab, 0xb8, 0x6c, 0x29, 0xf9, 0xb3, 0xec, 0x0a, 0xdc, 0x14, 0x99, 0x99, 0xe2, - 0x48, 0x12, 0xa1, 0x3a, 0x11, 0x48, 0x47, 0x7e, 0x70, 0x3a, 0x02, 0x9c, 0xee, 0x07, 0xf7, 0x82, - 0xcc, 0x0f, 0x4e, 0x46, 0x80, 0x93, 0x7e, 0xf0, 0xc7, 0xa1, 0x10, 0xcc, 0x43, 0x7e, 0xf4, 0x64, - 0x04, 0x7a, 0x32, 0x02, 0x1d, 0x3d, 0x77, 0x2a, 0x02, 0x9d, 0x0a, 0xa1, 0x6b, 0x03, 0xe7, 0x9e, - 0x8e, 0x40, 0x4f, 0x47, 0xa0, 0xa3, 0xe7, 0x46, 0x11, 0x68, 0xe4, 0x47, 0x3f, 0x0a, 0x53, 0xa1, - 0x94, 0xe3, 0x87, 0x4f, 0x44, 0xc0, 0x27, 0x42, 0xb5, 0x39, 0x9c, 0x6a, 0xfc, 0xf8, 0xa9, 0x08, - 0xfc, 0x54, 0xd4, 0xf4, 0xd1, 0xd6, 0x8f, 0x47, 0xc0, 0xc7, 0x23, 0xa7, 0x8f, 0xc6, 0xcb, 0x11, - 0x78, 0xd9, 0x8f, 0x2f, 0x43, 0xde, 0x9f, 0x55, 0xfc, 0xd8, 0x4c, 0x04, 0x36, 0x13, 0xf6, 0x7b, - 0x20, 0xa5, 0xc4, 0x45, 0x7a, 0x76, 0xc0, 0x71, 0x09, 0xa4, 0x91, 0x63, 0x75, 0x36, 0x4f, 0xc3, - 0x6c, 0x54, 0xd2, 0x88, 0xe0, 0x38, 0xe3, 0xe7, 0x28, 0x2c, 0xcd, 0x06, 0x92, 0x05, 0xc5, 0x75, - 0xdb, 0x7e, 0xe6, 0xe7, 0x60, 0x26, 0x22, 0x75, 0x44, 0x10, 0x3f, 0xe0, 0x27, 0xce, 0x2d, 0xcd, - 0x05, 0x88, 0x03, 0xef, 0x0a, 0xfe, 0xd6, 0xea, 0x87, 0x33, 0x50, 0xe0, 0x29, 0x6a, 0xdb, 0xae, - 0x63, 0x1b, 0xd7, 0xd1, 0xff, 0x1b, 0xdc, 0x61, 0x2d, 0x45, 0xa5, 0x36, 0x8e, 0x3b, 0x46, 0xa3, - 0xf5, 0xdc, 0xc0, 0x46, 0xeb, 0xc1, 0x51, 0x26, 0x88, 0xeb, 0xb7, 0xaa, 0x7d, 0xfd, 0xd6, 0x3d, - 0xc3, 0x68, 0x07, 0xb5, 0x5d, 0xd5, 0xbe, 0xb6, 0x2b, 0x8e, 0x26, 0xb2, 0xfb, 0xba, 0xd2, 0xdf, - 0x7d, 0x9d, 0x19, 0xc6, 0x33, 0xb8, 0x09, 0xbb, 0xd2, 0xdf, 0x84, 0xc5, 0x32, 0x45, 0xf7, 0x62, - 0x57, 0xfa, 0x7b, 0xb1, 0xa1, 0x4c, 0x83, 0x5b, 0xb2, 0x2b, 0xfd, 0x2d, 0x59, 0x2c, 0x53, 0x74, - 0x67, 0xf6, 0x89, 0x88, 0xce, 0xec, 0xde, 0x61, 0x54, 0xc3, 0x1a, 0xb4, 0xad, 0xa8, 0x06, 0xed, - 0xbe, 0xa1, 0x86, 0x0d, 0xed, 0xd3, 0x3e, 0x11, 0xd1, 0xa7, 0xc5, 0x1b, 0x37, 0xa0, 0x5d, 0xdb, - 0x8a, 0x6a, 0xd7, 0x46, 0x30, 0x6e, 0x50, 0xd7, 0xb6, 0x1c, 0xee, 0xda, 0x16, 0x86, 0x71, 0x45, - 0x37, 0x6f, 0x57, 0xfa, 0x9b, 0xb7, 0x33, 0xf1, 0x67, 0x31, 0xaa, 0x87, 0x7b, 0x6e, 0x60, 0x0f, - 0x37, 0xd2, 0xe1, 0x8e, 0x6b, 0xe5, 0x9e, 0x1d, 0xd4, 0xca, 0x3d, 0x30, 0x0a, 0xfb, 0xf0, 0x8e, - 0xee, 0xa9, 0x01, 0x1d, 0xdd, 0xd9, 0x51, 0xa8, 0x3f, 0x6a, 0xec, 0x3e, 0x6a, 0xec, 0x3e, 0x6a, - 0xec, 0x3e, 0x6a, 0xec, 0x7e, 0x31, 0x1a, 0xbb, 0x72, 0xea, 0x95, 0x2f, 0x9f, 0x94, 0xce, 0x9c, - 0x86, 0x09, 0x3e, 0x35, 0x1a, 0x87, 0xc4, 0x66, 0x45, 0x1e, 0xa3, 0x7f, 0x97, 0x65, 0x89, 0xfe, - 0x5d, 0x91, 0x13, 0xcb, 0x1b, 0x6f, 0xde, 0x28, 0x8d, 0x7d, 0xf7, 0x46, 0x69, 0xec, 0xfb, 0x37, - 0x4a, 0x63, 0x3f, 0xba, 0x51, 0x92, 0xde, 0xb9, 0x51, 0x92, 0xde, 0xbb, 0x51, 0x92, 0x7e, 0x72, - 0xa3, 0x24, 0x5d, 0x3f, 0x2a, 0x49, 0x5f, 0x3d, 0x2a, 0x49, 0x5f, 0x3f, 0x2a, 0x49, 0xdf, 0x3a, - 0x2a, 0x49, 0xdf, 0x3e, 0x2a, 0x49, 0x6f, 0x1e, 0x95, 0xc6, 0xbe, 0x7b, 0x54, 0x92, 0x7e, 0x74, - 0x54, 0x92, 0xde, 0x39, 0x2a, 0x8d, 0xbd, 0x77, 0x54, 0x92, 0x7e, 0x72, 0x54, 0x1a, 0xbb, 0xfe, - 0x4f, 0xa5, 0xb1, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x09, 0x05, 0x1f, 0x76, 0x44, 0x00, - 0x00, + 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x58, 0xbb, 0x2b, + 0xbf, 0xe4, 0xb5, 0x2d, 0xd9, 0xf2, 0xee, 0x7a, 0xcd, 0x8d, 0x6d, 0x50, 0x12, 0x57, 0x2b, 0x5b, + 0xaf, 0x0c, 0x25, 0x7b, 0xed, 0x3f, 0x8c, 0xf9, 0x8f, 0x86, 0x97, 0xd4, 0x78, 0xc9, 0x19, 0x7a, + 0x66, 0xb8, 0xb6, 0xfc, 0xa1, 0xd8, 0xc2, 0x7d, 0x20, 0x28, 0xfa, 0x2e, 0x50, 0xc7, 0x75, 0xdc, + 0x26, 0x40, 0xeb, 0x34, 0xe9, 0x23, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, + 0x24, 0xdf, 0x82, 0x20, 0x30, 0xbc, 0x8a, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0xa6, 0xf0, + 0x97, 0xe2, 0xbe, 0x86, 0x33, 0xc3, 0x21, 0x87, 0x32, 0xe0, 0xa4, 0x1f, 0xfc, 0x49, 0x9a, 0x73, + 0xcf, 0xef, 0x77, 0xcf, 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0x5c, 0x0e, 0xfc, 0xe8, 0x1c, 0x9c, 0x6a, + 0x58, 0x56, 0xa3, 0x89, 0x17, 0xdb, 0xb6, 0xe5, 0x5a, 0xfb, 0x9d, 0xfa, 0x62, 0x0d, 0x3b, 0xba, + 0x6d, 0xb4, 0x5d, 0xcb, 0x5e, 0xa0, 0x32, 0x34, 0xc1, 0x34, 0x16, 0x84, 0xc6, 0xdc, 0x26, 0x4c, + 0x5e, 0x32, 0x9a, 0x78, 0xd5, 0x53, 0xac, 0x62, 0x17, 0x5d, 0x80, 0x54, 0xdd, 0x68, 0xe2, 0xa2, + 0x74, 0x2a, 0x39, 0x9f, 0x5b, 0xba, 0x63, 0x21, 0x04, 0x5a, 0x08, 0x22, 0x76, 0x88, 0x58, 0xa1, + 0x88, 0xb9, 0x77, 0x53, 0x30, 0x15, 0x31, 0x8a, 0x10, 0xa4, 0x4c, 0xad, 0x45, 0x18, 0xa5, 0xf9, + 0xac, 0x42, 0xff, 0x47, 0x45, 0x18, 0x6b, 0x6b, 0xfa, 0x55, 0xad, 0x81, 0x8b, 0x09, 0x2a, 0x16, + 0x8f, 0x68, 0x16, 0xa0, 0x86, 0xdb, 0xd8, 0xac, 0x61, 0x53, 0x3f, 0x2c, 0x26, 0x4f, 0x25, 0xe7, + 0xb3, 0x8a, 0x4f, 0x82, 0xee, 0x85, 0xc9, 0x76, 0x67, 0xbf, 0x69, 0xe8, 0xaa, 0x4f, 0x0d, 0x4e, + 0x25, 0xe7, 0xd3, 0x8a, 0xcc, 0x06, 0x56, 0xbb, 0xca, 0x77, 0xc3, 0xc4, 0x8b, 0x58, 0xbb, 0xea, + 0x57, 0xcd, 0x51, 0xd5, 0x02, 0x11, 0xfb, 0x14, 0x57, 0x20, 0xdf, 0xc2, 0x8e, 0xa3, 0x35, 0xb0, + 0xea, 0x1e, 0xb6, 0x71, 0x31, 0x45, 0x57, 0x7f, 0xaa, 0x67, 0xf5, 0xe1, 0x95, 0xe7, 0x38, 0x6a, + 0xf7, 0xb0, 0x8d, 0x51, 0x19, 0xb2, 0xd8, 0xec, 0xb4, 0x18, 0x43, 0xba, 0x8f, 0xff, 0x2a, 0x66, + 0xa7, 0x15, 0x66, 0xc9, 0x10, 0x18, 0xa7, 0x18, 0x73, 0xb0, 0x7d, 0xcd, 0xd0, 0x71, 0x71, 0x94, + 0x12, 0xdc, 0xdd, 0x43, 0x50, 0x65, 0xe3, 0x61, 0x0e, 0x81, 0x43, 0x2b, 0x90, 0xc5, 0x2f, 0xb9, + 0xd8, 0x74, 0x0c, 0xcb, 0x2c, 0x8e, 0x51, 0x92, 0x3b, 0x23, 0x76, 0x11, 0x37, 0x6b, 0x61, 0x8a, + 0x2e, 0x0e, 0x9d, 0x87, 0x31, 0xab, 0xed, 0x1a, 0x96, 0xe9, 0x14, 0x33, 0xa7, 0xa4, 0xf9, 0xdc, + 0xd2, 0x67, 0x22, 0x03, 0x61, 0x9b, 0xe9, 0x28, 0x42, 0x19, 0xad, 0x83, 0xec, 0x58, 0x1d, 0x5b, + 0xc7, 0xaa, 0x6e, 0xd5, 0xb0, 0x6a, 0x98, 0x75, 0xab, 0x98, 0xa5, 0x04, 0x27, 0x7b, 0x17, 0x42, + 0x15, 0x57, 0xac, 0x1a, 0x5e, 0x37, 0xeb, 0x96, 0x52, 0x70, 0x02, 0xcf, 0xe8, 0x04, 0x8c, 0x3a, + 0x87, 0xa6, 0xab, 0xbd, 0x54, 0xcc, 0xd3, 0x08, 0xe1, 0x4f, 0x73, 0xff, 0x9d, 0x86, 0x89, 0x61, + 0x42, 0xec, 0x22, 0xa4, 0xeb, 0x64, 0x95, 0xc5, 0xc4, 0x71, 0x7c, 0xc0, 0x30, 0x41, 0x27, 0x8e, + 0x7e, 0x4c, 0x27, 0x96, 0x21, 0x67, 0x62, 0xc7, 0xc5, 0x35, 0x16, 0x11, 0xc9, 0x21, 0x63, 0x0a, + 0x18, 0xa8, 0x37, 0xa4, 0x52, 0x1f, 0x2b, 0xa4, 0xae, 0xc0, 0x84, 0x67, 0x92, 0x6a, 0x6b, 0x66, + 0x43, 0xc4, 0xe6, 0x62, 0x9c, 0x25, 0x0b, 0x15, 0x81, 0x53, 0x08, 0x4c, 0x29, 0xe0, 0xc0, 0x33, + 0x5a, 0x05, 0xb0, 0x4c, 0x6c, 0xd5, 0xd5, 0x1a, 0xd6, 0x9b, 0xc5, 0x4c, 0x1f, 0x2f, 0x6d, 0x13, + 0x95, 0x1e, 0x2f, 0x59, 0x4c, 0xaa, 0x37, 0xd1, 0x23, 0xdd, 0x50, 0x1b, 0xeb, 0x13, 0x29, 0x9b, + 0xec, 0x90, 0xf5, 0x44, 0xdb, 0x1e, 0x14, 0x6c, 0x4c, 0xe2, 0x1e, 0xd7, 0xf8, 0xca, 0xb2, 0xd4, + 0x88, 0x85, 0xd8, 0x95, 0x29, 0x1c, 0xc6, 0x16, 0x36, 0x6e, 0xfb, 0x1f, 0xd1, 0xed, 0xe0, 0x09, + 0x54, 0x1a, 0x56, 0x40, 0xb3, 0x50, 0x5e, 0x08, 0xb7, 0xb4, 0x16, 0x9e, 0xb9, 0x00, 0x85, 0xa0, + 0x7b, 0xd0, 0x34, 0xa4, 0x1d, 0x57, 0xb3, 0x5d, 0x1a, 0x85, 0x69, 0x85, 0x3d, 0x20, 0x19, 0x92, + 0xd8, 0xac, 0xd1, 0x2c, 0x97, 0x56, 0xc8, 0xbf, 0x33, 0x0f, 0xc3, 0x78, 0x60, 0xfa, 0x61, 0x81, + 0x73, 0xaf, 0x8e, 0xc2, 0x74, 0x54, 0xcc, 0x45, 0x86, 0xff, 0x09, 0x18, 0x35, 0x3b, 0xad, 0x7d, + 0x6c, 0x17, 0x93, 0x94, 0x81, 0x3f, 0xa1, 0x32, 0xa4, 0x9b, 0xda, 0x3e, 0x6e, 0x16, 0x53, 0xa7, + 0xa4, 0xf9, 0xc2, 0xd2, 0xbd, 0x43, 0x45, 0xf5, 0xc2, 0x06, 0x81, 0x28, 0x0c, 0x89, 0x1e, 0x83, + 0x14, 0x4f, 0x71, 0x84, 0xe1, 0xcc, 0x70, 0x0c, 0x24, 0x16, 0x15, 0x8a, 0x43, 0xb7, 0x42, 0x96, + 0xfc, 0x65, 0xbe, 0x1d, 0xa5, 0x36, 0x67, 0x88, 0x80, 0xf8, 0x15, 0xcd, 0x40, 0x86, 0x86, 0x59, + 0x0d, 0x8b, 0xd2, 0xe0, 0x3d, 0x93, 0x8d, 0xa9, 0xe1, 0xba, 0xd6, 0x69, 0xba, 0xea, 0x35, 0xad, + 0xd9, 0xc1, 0x34, 0x60, 0xb2, 0x4a, 0x9e, 0x0b, 0x9f, 0x22, 0x32, 0x74, 0x12, 0x72, 0x2c, 0x2a, + 0x0d, 0xb3, 0x86, 0x5f, 0xa2, 0xd9, 0x27, 0xad, 0xb0, 0x40, 0x5d, 0x27, 0x12, 0x32, 0xfd, 0xf3, + 0x8e, 0x65, 0x8a, 0xad, 0xa5, 0x53, 0x10, 0x01, 0x9d, 0xfe, 0xe1, 0x70, 0xe2, 0xbb, 0x2d, 0x7a, + 0x79, 0xe1, 0x58, 0x9c, 0xfb, 0x66, 0x02, 0x52, 0xf4, 0xbc, 0x4d, 0x40, 0x6e, 0xf7, 0x99, 0x9d, + 0x8a, 0xba, 0xba, 0xbd, 0xb7, 0xbc, 0x51, 0x91, 0x25, 0x54, 0x00, 0xa0, 0x82, 0x4b, 0x1b, 0xdb, + 0xe5, 0x5d, 0x39, 0xe1, 0x3d, 0xaf, 0x6f, 0xed, 0x9e, 0x3f, 0x2b, 0x27, 0x3d, 0xc0, 0x1e, 0x13, + 0xa4, 0xfc, 0x0a, 0x0f, 0x2d, 0xc9, 0x69, 0x24, 0x43, 0x9e, 0x11, 0xac, 0x5f, 0xa9, 0xac, 0x9e, + 0x3f, 0x2b, 0x8f, 0x06, 0x25, 0x0f, 0x2d, 0xc9, 0x63, 0x68, 0x1c, 0xb2, 0x54, 0xb2, 0xbc, 0xbd, + 0xbd, 0x21, 0x67, 0x3c, 0xce, 0xea, 0xae, 0xb2, 0xbe, 0xb5, 0x26, 0x67, 0x3d, 0xce, 0x35, 0x65, + 0x7b, 0x6f, 0x47, 0x06, 0x8f, 0x61, 0xb3, 0x52, 0xad, 0x96, 0xd7, 0x2a, 0x72, 0xce, 0xd3, 0x58, + 0x7e, 0x66, 0xb7, 0x52, 0x95, 0xf3, 0x01, 0xb3, 0x1e, 0x5a, 0x92, 0xc7, 0xbd, 0x29, 0x2a, 0x5b, + 0x7b, 0x9b, 0x72, 0x01, 0x4d, 0xc2, 0x38, 0x9b, 0x42, 0x18, 0x31, 0x11, 0x12, 0x9d, 0x3f, 0x2b, + 0xcb, 0x5d, 0x43, 0x18, 0xcb, 0x64, 0x40, 0x70, 0xfe, 0xac, 0x8c, 0xe6, 0x56, 0x20, 0x4d, 0xa3, + 0x0b, 0x21, 0x28, 0x6c, 0x94, 0x97, 0x2b, 0x1b, 0xea, 0xf6, 0xce, 0xee, 0xfa, 0xf6, 0x56, 0x79, + 0x43, 0x96, 0xba, 0x32, 0xa5, 0xf2, 0xb9, 0xbd, 0x75, 0xa5, 0xb2, 0x2a, 0x27, 0xfc, 0xb2, 0x9d, + 0x4a, 0x79, 0xb7, 0xb2, 0x2a, 0x27, 0xe7, 0x74, 0x98, 0x8e, 0xca, 0x33, 0x91, 0x27, 0xc3, 0xb7, + 0xc5, 0x89, 0x3e, 0x5b, 0x4c, 0xb9, 0x7a, 0xb6, 0xf8, 0xcb, 0x12, 0x4c, 0x45, 0xe4, 0xda, 0xc8, + 0x49, 0x1e, 0x87, 0x34, 0x0b, 0x51, 0x56, 0x7d, 0xee, 0x89, 0x4c, 0xda, 0x34, 0x60, 0x7b, 0x2a, + 0x10, 0xc5, 0xf9, 0x2b, 0x70, 0xb2, 0x4f, 0x05, 0x26, 0x14, 0x3d, 0x46, 0xbe, 0x22, 0x41, 0xb1, + 0x1f, 0x77, 0x4c, 0xa2, 0x48, 0x04, 0x12, 0xc5, 0xc5, 0xb0, 0x01, 0xa7, 0xfb, 0xaf, 0xa1, 0xc7, + 0x8a, 0x37, 0x25, 0x38, 0x11, 0xdd, 0xa8, 0x44, 0xda, 0xf0, 0x18, 0x8c, 0xb6, 0xb0, 0x7b, 0x60, + 0x89, 0x62, 0x7d, 0x57, 0x44, 0x09, 0x20, 0xc3, 0x61, 0x5f, 0x71, 0x94, 0xbf, 0x86, 0x24, 0xfb, + 0x75, 0x1b, 0xcc, 0x9a, 0x1e, 0x4b, 0x3f, 0x9f, 0x80, 0x9b, 0x22, 0xc9, 0x23, 0x0d, 0xbd, 0x0d, + 0xc0, 0x30, 0xdb, 0x1d, 0x97, 0x15, 0x64, 0x96, 0x9f, 0xb2, 0x54, 0x42, 0xcf, 0x3e, 0xc9, 0x3d, + 0x1d, 0xd7, 0x1b, 0x4f, 0xd2, 0x71, 0x60, 0x22, 0xaa, 0x70, 0xa1, 0x6b, 0x68, 0x8a, 0x1a, 0x3a, + 0xdb, 0x67, 0xa5, 0x3d, 0xb5, 0xee, 0x01, 0x90, 0xf5, 0xa6, 0x81, 0x4d, 0x57, 0x75, 0x5c, 0x1b, + 0x6b, 0x2d, 0xc3, 0x6c, 0xd0, 0x04, 0x9c, 0x29, 0xa5, 0xeb, 0x5a, 0xd3, 0xc1, 0xca, 0x04, 0x1b, + 0xae, 0x8a, 0x51, 0x82, 0xa0, 0x55, 0xc6, 0xf6, 0x21, 0x46, 0x03, 0x08, 0x36, 0xec, 0x21, 0xe6, + 0xbe, 0x36, 0x06, 0x39, 0x5f, 0x5b, 0x87, 0x4e, 0x43, 0xfe, 0x79, 0xed, 0x9a, 0xa6, 0x8a, 0x56, + 0x9d, 0x79, 0x22, 0x47, 0x64, 0x3b, 0xbc, 0x5d, 0x7f, 0x00, 0xa6, 0xa9, 0x8a, 0xd5, 0x71, 0xb1, + 0xad, 0xea, 0x4d, 0xcd, 0x71, 0xa8, 0xd3, 0x32, 0x54, 0x15, 0x91, 0xb1, 0x6d, 0x32, 0xb4, 0x22, + 0x46, 0xd0, 0x39, 0x98, 0xa2, 0x88, 0x56, 0xa7, 0xe9, 0x1a, 0xed, 0x26, 0x56, 0xc9, 0xcb, 0x83, + 0x43, 0x13, 0xb1, 0x67, 0xd9, 0x24, 0xd1, 0xd8, 0xe4, 0x0a, 0xc4, 0x22, 0x07, 0xad, 0xc2, 0x6d, + 0x14, 0xd6, 0xc0, 0x26, 0xb6, 0x35, 0x17, 0xab, 0xf8, 0x85, 0x8e, 0xd6, 0x74, 0x54, 0xcd, 0xac, + 0xa9, 0x07, 0x9a, 0x73, 0x50, 0x9c, 0x26, 0x04, 0xcb, 0x89, 0xa2, 0xa4, 0xdc, 0x42, 0x14, 0xd7, + 0xb8, 0x5e, 0x85, 0xaa, 0x95, 0xcd, 0xda, 0x65, 0xcd, 0x39, 0x40, 0x25, 0x38, 0x41, 0x59, 0x1c, + 0xd7, 0x36, 0xcc, 0x86, 0xaa, 0x1f, 0x60, 0xfd, 0xaa, 0xda, 0x71, 0xeb, 0x17, 0x8a, 0xb7, 0xfa, + 0xe7, 0xa7, 0x16, 0x56, 0xa9, 0xce, 0x0a, 0x51, 0xd9, 0x73, 0xeb, 0x17, 0x50, 0x15, 0xf2, 0x64, + 0x33, 0x5a, 0xc6, 0xcb, 0x58, 0xad, 0x5b, 0x36, 0xad, 0x2c, 0x85, 0x88, 0x93, 0xed, 0xf3, 0xe0, + 0xc2, 0x36, 0x07, 0x6c, 0x5a, 0x35, 0x5c, 0x4a, 0x57, 0x77, 0x2a, 0x95, 0x55, 0x25, 0x27, 0x58, + 0x2e, 0x59, 0x36, 0x09, 0xa8, 0x86, 0xe5, 0x39, 0x38, 0xc7, 0x02, 0xaa, 0x61, 0x09, 0xf7, 0x9e, + 0x83, 0x29, 0x5d, 0x67, 0x6b, 0x36, 0x74, 0x95, 0xb7, 0xf8, 0x4e, 0x51, 0x0e, 0x38, 0x4b, 0xd7, + 0xd7, 0x98, 0x02, 0x8f, 0x71, 0x07, 0x3d, 0x02, 0x37, 0x75, 0x9d, 0xe5, 0x07, 0x4e, 0xf6, 0xac, + 0x32, 0x0c, 0x3d, 0x07, 0x53, 0xed, 0xc3, 0x5e, 0x20, 0x0a, 0xcc, 0xd8, 0x3e, 0x0c, 0xc3, 0xee, + 0xa4, 0xaf, 0x6d, 0x36, 0xd6, 0x35, 0x17, 0xd7, 0x8a, 0x37, 0xfb, 0xb5, 0x7d, 0x03, 0x68, 0x11, + 0x64, 0x5d, 0x57, 0xb1, 0xa9, 0xed, 0x37, 0xb1, 0xaa, 0xd9, 0xd8, 0xd4, 0x9c, 0xe2, 0x49, 0xbf, + 0x72, 0x41, 0xd7, 0x2b, 0x74, 0xb4, 0x4c, 0x07, 0xd1, 0x19, 0x98, 0xb4, 0xf6, 0x9f, 0xd7, 0x59, + 0x64, 0xa9, 0x6d, 0x1b, 0xd7, 0x8d, 0x97, 0x8a, 0x77, 0x50, 0x37, 0x4d, 0x90, 0x01, 0x1a, 0x57, + 0x3b, 0x54, 0x8c, 0xee, 0x01, 0x59, 0x77, 0x0e, 0x34, 0xbb, 0x4d, 0x4b, 0xbb, 0xd3, 0xd6, 0x74, + 0x5c, 0xbc, 0x93, 0xa9, 0x32, 0xf9, 0x96, 0x10, 0x93, 0xc8, 0x76, 0x5e, 0x34, 0xea, 0xae, 0x60, + 0xbc, 0x9b, 0x45, 0x36, 0x95, 0x71, 0xb6, 0x2b, 0x30, 0xdd, 0x31, 0x0d, 0xd3, 0xc5, 0x76, 0xdb, + 0xc6, 0xa4, 0x89, 0x67, 0x27, 0xb1, 0xf8, 0x4f, 0x63, 0x7d, 0xda, 0xf0, 0x3d, 0xbf, 0x36, 0x0b, + 0x00, 0x65, 0xaa, 0xd3, 0x2b, 0x9c, 0x2b, 0x41, 0xde, 0x1f, 0x17, 0x28, 0x0b, 0x2c, 0x32, 0x64, + 0x89, 0xd4, 0xd8, 0x95, 0xed, 0x55, 0x52, 0x1d, 0x9f, 0xad, 0xc8, 0x09, 0x52, 0xa5, 0x37, 0xd6, + 0x77, 0x2b, 0xaa, 0xb2, 0xb7, 0xb5, 0xbb, 0xbe, 0x59, 0x91, 0x93, 0x67, 0xb2, 0x99, 0xf7, 0xc6, + 0xe4, 0xeb, 0xd7, 0xaf, 0x5f, 0x4f, 0xcc, 0x7d, 0x27, 0x01, 0x85, 0x60, 0x67, 0x8c, 0x3e, 0x0b, + 0x37, 0x8b, 0xd7, 0x58, 0x07, 0xbb, 0xea, 0x8b, 0x86, 0x4d, 0x43, 0xb5, 0xa5, 0xb1, 0xde, 0xd2, + 0xf3, 0xf2, 0x34, 0xd7, 0xaa, 0x62, 0xf7, 0x69, 0xc3, 0x26, 0x81, 0xd8, 0xd2, 0x5c, 0xb4, 0x01, + 0x27, 0x4d, 0x4b, 0x75, 0x5c, 0xcd, 0xac, 0x69, 0x76, 0x4d, 0xed, 0x5e, 0x20, 0xa8, 0x9a, 0xae, + 0x63, 0xc7, 0xb1, 0x58, 0x89, 0xf0, 0x58, 0x3e, 0x63, 0x5a, 0x55, 0xae, 0xdc, 0xcd, 0x9d, 0x65, + 0xae, 0x1a, 0x8a, 0x88, 0x64, 0xbf, 0x88, 0xb8, 0x15, 0xb2, 0x2d, 0xad, 0xad, 0x62, 0xd3, 0xb5, + 0x0f, 0x69, 0x3f, 0x97, 0x51, 0x32, 0x2d, 0xad, 0x5d, 0x21, 0xcf, 0x9f, 0xdc, 0x1e, 0xf8, 0xfd, + 0xf8, 0xc3, 0x24, 0xe4, 0xfd, 0x3d, 0x1d, 0x69, 0x91, 0x75, 0x9a, 0xbf, 0x25, 0x7a, 0xc2, 0x6f, + 0x1f, 0xd8, 0x01, 0x2e, 0xac, 0x90, 0xc4, 0x5e, 0x1a, 0x65, 0x9d, 0x96, 0xc2, 0x90, 0xa4, 0xa8, + 0x92, 0x33, 0x8d, 0x59, 0xff, 0x9e, 0x51, 0xf8, 0x13, 0x5a, 0x83, 0xd1, 0xe7, 0x1d, 0xca, 0x3d, + 0x4a, 0xb9, 0xef, 0x18, 0xcc, 0xfd, 0x44, 0x95, 0x92, 0x67, 0x9f, 0xa8, 0xaa, 0x5b, 0xdb, 0xca, + 0x66, 0x79, 0x43, 0xe1, 0x70, 0x74, 0x0b, 0xa4, 0x9a, 0xda, 0xcb, 0x87, 0xc1, 0x12, 0x40, 0x45, + 0xc3, 0x3a, 0xfe, 0x16, 0x48, 0xbd, 0x88, 0xb5, 0xab, 0xc1, 0xc4, 0x4b, 0x45, 0x9f, 0x60, 0xe8, + 0x2f, 0x42, 0x9a, 0xfa, 0x0b, 0x01, 0x70, 0x8f, 0xc9, 0x23, 0x28, 0x03, 0xa9, 0x95, 0x6d, 0x85, + 0x84, 0xbf, 0x0c, 0x79, 0x26, 0x55, 0x77, 0xd6, 0x2b, 0x2b, 0x15, 0x39, 0x31, 0x77, 0x0e, 0x46, + 0x99, 0x13, 0xc8, 0xd1, 0xf0, 0xdc, 0x20, 0x8f, 0xf0, 0x47, 0xce, 0x21, 0x89, 0xd1, 0xbd, 0xcd, + 0xe5, 0x8a, 0x22, 0x27, 0xfc, 0xdb, 0xeb, 0x40, 0xde, 0xdf, 0xce, 0xfd, 0x74, 0x62, 0xea, 0x6f, + 0x25, 0xc8, 0xf9, 0xda, 0x33, 0xd2, 0x18, 0x68, 0xcd, 0xa6, 0xf5, 0xa2, 0xaa, 0x35, 0x0d, 0xcd, + 0xe1, 0x41, 0x01, 0x54, 0x54, 0x26, 0x92, 0x61, 0x37, 0xed, 0xa7, 0x62, 0xfc, 0x1b, 0x12, 0xc8, + 0xe1, 0xd6, 0x2e, 0x64, 0xa0, 0xf4, 0x33, 0x35, 0xf0, 0x75, 0x09, 0x0a, 0xc1, 0x7e, 0x2e, 0x64, + 0xde, 0xe9, 0x9f, 0xa9, 0x79, 0xef, 0x24, 0x60, 0x3c, 0xd0, 0xc5, 0x0d, 0x6b, 0xdd, 0x0b, 0x30, + 0x69, 0xd4, 0x70, 0xab, 0x6d, 0xb9, 0xd8, 0xd4, 0x0f, 0xd5, 0x26, 0xbe, 0x86, 0x9b, 0xc5, 0x39, + 0x9a, 0x28, 0x16, 0x07, 0xf7, 0x89, 0x0b, 0xeb, 0x5d, 0xdc, 0x06, 0x81, 0x95, 0xa6, 0xd6, 0x57, + 0x2b, 0x9b, 0x3b, 0xdb, 0xbb, 0x95, 0xad, 0x95, 0x67, 0xd4, 0xbd, 0xad, 0x27, 0xb7, 0xb6, 0x9f, + 0xde, 0x52, 0x64, 0x23, 0xa4, 0xf6, 0x09, 0x1e, 0xf5, 0x1d, 0x90, 0xc3, 0x46, 0xa1, 0x9b, 0x21, + 0xca, 0x2c, 0x79, 0x04, 0x4d, 0xc1, 0xc4, 0xd6, 0xb6, 0x5a, 0x5d, 0x5f, 0xad, 0xa8, 0x95, 0x4b, + 0x97, 0x2a, 0x2b, 0xbb, 0x55, 0xf6, 0xe2, 0xec, 0x69, 0xef, 0x06, 0x0f, 0xf5, 0x6b, 0x49, 0x98, + 0x8a, 0xb0, 0x04, 0x95, 0x79, 0xcf, 0xce, 0x5e, 0x23, 0xee, 0x1f, 0xc6, 0xfa, 0x05, 0xd2, 0x15, + 0xec, 0x68, 0xb6, 0xcb, 0x5b, 0xfc, 0x7b, 0x80, 0x78, 0xc9, 0x74, 0x8d, 0xba, 0x81, 0x6d, 0x7e, + 0xcf, 0xc0, 0x1a, 0xf9, 0x89, 0xae, 0x9c, 0x5d, 0x35, 0xdc, 0x07, 0xa8, 0x6d, 0x39, 0x86, 0x6b, + 0x5c, 0xc3, 0xaa, 0x61, 0x8a, 0x4b, 0x09, 0xd2, 0xd8, 0xa7, 0x14, 0x59, 0x8c, 0xac, 0x9b, 0xae, + 0xa7, 0x6d, 0xe2, 0x86, 0x16, 0xd2, 0x26, 0x09, 0x3c, 0xa9, 0xc8, 0x62, 0xc4, 0xd3, 0x3e, 0x0d, + 0xf9, 0x9a, 0xd5, 0x21, 0x6d, 0x12, 0xd3, 0x23, 0xf5, 0x42, 0x52, 0x72, 0x4c, 0xe6, 0xa9, 0xf0, + 0x3e, 0xb6, 0x7b, 0x1b, 0x92, 0x57, 0x72, 0x4c, 0xc6, 0x54, 0xee, 0x86, 0x09, 0xad, 0xd1, 0xb0, + 0x09, 0xb9, 0x20, 0x62, 0x9d, 0x79, 0xc1, 0x13, 0x53, 0xc5, 0x99, 0x27, 0x20, 0x23, 0xfc, 0x40, + 0x4a, 0x32, 0xf1, 0x84, 0xda, 0x66, 0x77, 0x52, 0x89, 0xf9, 0xac, 0x92, 0x31, 0xc5, 0xe0, 0x69, + 0xc8, 0x1b, 0x8e, 0xda, 0xbd, 0x1c, 0x4d, 0x9c, 0x4a, 0xcc, 0x67, 0x94, 0x9c, 0xe1, 0x78, 0xb7, + 0x61, 0x73, 0x6f, 0x26, 0xa0, 0x10, 0xbc, 0xdc, 0x45, 0xab, 0x90, 0x69, 0x5a, 0xba, 0x46, 0x43, + 0x8b, 0xfd, 0xb2, 0x30, 0x1f, 0x73, 0x1f, 0xbc, 0xb0, 0xc1, 0xf5, 0x15, 0x0f, 0x39, 0xf3, 0x8f, + 0x12, 0x64, 0x84, 0x18, 0x9d, 0x80, 0x54, 0x5b, 0x73, 0x0f, 0x28, 0x5d, 0x7a, 0x39, 0x21, 0x4b, + 0x0a, 0x7d, 0x26, 0x72, 0xa7, 0xad, 0x99, 0x34, 0x04, 0xb8, 0x9c, 0x3c, 0x93, 0x7d, 0x6d, 0x62, + 0xad, 0x46, 0xdb, 0x7e, 0xab, 0xd5, 0xc2, 0xa6, 0xeb, 0x88, 0x7d, 0xe5, 0xf2, 0x15, 0x2e, 0x46, + 0xf7, 0xc2, 0xa4, 0x6b, 0x6b, 0x46, 0x33, 0xa0, 0x9b, 0xa2, 0xba, 0xb2, 0x18, 0xf0, 0x94, 0x4b, + 0x70, 0x8b, 0xe0, 0xad, 0x61, 0x57, 0xd3, 0x0f, 0x70, 0xad, 0x0b, 0x1a, 0xa5, 0x37, 0x87, 0x37, + 0x73, 0x85, 0x55, 0x3e, 0x2e, 0xb0, 0x73, 0xdf, 0x93, 0x60, 0x52, 0xbc, 0xa8, 0xd4, 0x3c, 0x67, + 0x6d, 0x02, 0x68, 0xa6, 0x69, 0xb9, 0x7e, 0x77, 0xf5, 0x86, 0x72, 0x0f, 0x6e, 0xa1, 0xec, 0x81, + 0x14, 0x1f, 0xc1, 0x4c, 0x0b, 0xa0, 0x3b, 0xd2, 0xd7, 0x6d, 0x27, 0x21, 0xc7, 0x6f, 0xee, 0xe9, + 0xcf, 0x3f, 0xec, 0xd5, 0x16, 0x98, 0x88, 0xbc, 0xd1, 0xa0, 0x69, 0x48, 0xef, 0xe3, 0x86, 0x61, + 0xf2, 0xfb, 0x44, 0xf6, 0x20, 0x6e, 0x29, 0x53, 0xde, 0x2d, 0xe5, 0xf2, 0x15, 0x98, 0xd2, 0xad, + 0x56, 0xd8, 0xdc, 0x65, 0x39, 0xf4, 0x7a, 0xed, 0x5c, 0x96, 0x9e, 0x85, 0x6e, 0x8b, 0xf9, 0xe5, + 0x44, 0x72, 0x6d, 0x67, 0xf9, 0xab, 0x89, 0x99, 0x35, 0x86, 0xdb, 0x11, 0xcb, 0x54, 0x70, 0xbd, + 0x89, 0x75, 0x62, 0x3a, 0xfc, 0xf8, 0x2e, 0xb8, 0xbf, 0x61, 0xb8, 0x07, 0x9d, 0xfd, 0x05, 0xdd, + 0x6a, 0x2d, 0x36, 0xac, 0x86, 0xd5, 0xfd, 0xb9, 0x8b, 0x3c, 0xd1, 0x07, 0xfa, 0x1f, 0xff, 0xc9, + 0x2b, 0xeb, 0x49, 0x67, 0x62, 0x7f, 0x1f, 0x2b, 0x6d, 0xc1, 0x14, 0x57, 0x56, 0xe9, 0x9d, 0x3b, + 0x7b, 0x35, 0x40, 0x03, 0xef, 0x5d, 0x8a, 0xdf, 0x78, 0x97, 0xd6, 0x6a, 0x65, 0x92, 0x43, 0xc9, + 0x18, 0x7b, 0x81, 0x28, 0x29, 0x70, 0x53, 0x80, 0x8f, 0x9d, 0x4b, 0x6c, 0xc7, 0x30, 0x7e, 0x87, + 0x33, 0x4e, 0xf9, 0x18, 0xab, 0x1c, 0x5a, 0x5a, 0x81, 0xf1, 0xe3, 0x70, 0xfd, 0x1d, 0xe7, 0xca, + 0x63, 0x3f, 0xc9, 0x1a, 0x4c, 0x50, 0x12, 0xbd, 0xe3, 0xb8, 0x56, 0x8b, 0x26, 0xbd, 0xc1, 0x34, + 0x7f, 0xff, 0x2e, 0x3b, 0x28, 0x05, 0x02, 0x5b, 0xf1, 0x50, 0xa5, 0x12, 0xd0, 0x9f, 0x19, 0x6a, + 0x58, 0x6f, 0xc6, 0x30, 0xbc, 0xc5, 0x0d, 0xf1, 0xf4, 0x4b, 0x4f, 0xc1, 0x34, 0xf9, 0x9f, 0xe6, + 0x24, 0xbf, 0x25, 0xf1, 0xb7, 0x4c, 0xc5, 0xef, 0xbd, 0xc2, 0xce, 0xe2, 0x94, 0x47, 0xe0, 0xb3, + 0xc9, 0xb7, 0x8b, 0x0d, 0xec, 0xba, 0xd8, 0x76, 0x54, 0xad, 0x19, 0x65, 0x9e, 0xef, 0x35, 0xbd, + 0xf8, 0x85, 0xf7, 0x83, 0xbb, 0xb8, 0xc6, 0x90, 0xe5, 0x66, 0xb3, 0xb4, 0x07, 0x37, 0x47, 0x44, + 0xc5, 0x10, 0x9c, 0xaf, 0x71, 0xce, 0xe9, 0x9e, 0xc8, 0x20, 0xb4, 0x3b, 0x20, 0xe4, 0xde, 0x5e, + 0x0e, 0xc1, 0xf9, 0x7b, 0x9c, 0x13, 0x71, 0xac, 0xd8, 0x52, 0xc2, 0xf8, 0x04, 0x4c, 0x5e, 0xc3, + 0xf6, 0xbe, 0xe5, 0xf0, 0xab, 0x91, 0x21, 0xe8, 0x5e, 0xe7, 0x74, 0x13, 0x1c, 0x48, 0xef, 0x4a, + 0x08, 0xd7, 0x23, 0x90, 0xa9, 0x6b, 0x3a, 0x1e, 0x82, 0xe2, 0x8b, 0x9c, 0x62, 0x8c, 0xe8, 0x13, + 0x68, 0x19, 0xf2, 0x0d, 0x8b, 0x97, 0xa5, 0x78, 0xf8, 0x1b, 0x1c, 0x9e, 0x13, 0x18, 0x4e, 0xd1, + 0xb6, 0xda, 0x9d, 0x26, 0xa9, 0x59, 0xf1, 0x14, 0xbf, 0x2f, 0x28, 0x04, 0x86, 0x53, 0x1c, 0xc3, + 0xad, 0x7f, 0x20, 0x28, 0x1c, 0x9f, 0x3f, 0x1f, 0x87, 0x9c, 0x65, 0x36, 0x0f, 0x2d, 0x73, 0x18, + 0x23, 0xbe, 0xc4, 0x19, 0x80, 0x43, 0x08, 0xc1, 0x45, 0xc8, 0x0e, 0xbb, 0x11, 0x7f, 0xf8, 0xbe, + 0x38, 0x1e, 0x62, 0x07, 0xd6, 0x60, 0x42, 0x24, 0x28, 0xc3, 0x32, 0x87, 0xa0, 0xf8, 0x23, 0x4e, + 0x51, 0xf0, 0xc1, 0xf8, 0x32, 0x5c, 0xec, 0xb8, 0x0d, 0x3c, 0x0c, 0xc9, 0x9b, 0x62, 0x19, 0x1c, + 0xc2, 0x5d, 0xb9, 0x8f, 0x4d, 0xfd, 0x60, 0x38, 0x86, 0xaf, 0x08, 0x57, 0x0a, 0x0c, 0xa1, 0x58, + 0x81, 0xf1, 0x96, 0x66, 0x3b, 0x07, 0x5a, 0x73, 0xa8, 0xed, 0xf8, 0x63, 0xce, 0x91, 0xf7, 0x40, + 0xdc, 0x23, 0x1d, 0xf3, 0x38, 0x34, 0x5f, 0x15, 0x1e, 0xf1, 0xc1, 0xf8, 0xd1, 0x73, 0x5c, 0x7a, + 0x01, 0x75, 0x1c, 0xb6, 0xaf, 0x89, 0xa3, 0xc7, 0xb0, 0x9b, 0x7e, 0xc6, 0x8b, 0x90, 0x75, 0x8c, + 0x97, 0x87, 0xa2, 0xf9, 0x13, 0xb1, 0xd3, 0x14, 0x40, 0xc0, 0xcf, 0xc0, 0x2d, 0x91, 0x65, 0x62, + 0x08, 0xb2, 0x3f, 0xe5, 0x64, 0x27, 0x22, 0x4a, 0x05, 0x4f, 0x09, 0xc7, 0xa5, 0xfc, 0x33, 0x91, + 0x12, 0x70, 0x88, 0x6b, 0x87, 0xbc, 0x28, 0x38, 0x5a, 0xfd, 0x78, 0x5e, 0xfb, 0x73, 0xe1, 0x35, + 0x86, 0x0d, 0x78, 0x6d, 0x17, 0x4e, 0x70, 0xc6, 0xe3, 0xed, 0xeb, 0xd7, 0x45, 0x62, 0x65, 0xe8, + 0xbd, 0xe0, 0xee, 0xfe, 0x3f, 0x98, 0xf1, 0xdc, 0x29, 0x3a, 0x52, 0x47, 0x6d, 0x69, 0xed, 0x21, + 0x98, 0xbf, 0xc1, 0x99, 0x45, 0xc6, 0xf7, 0x5a, 0x5a, 0x67, 0x53, 0x6b, 0x13, 0xf2, 0x2b, 0x50, + 0x14, 0xe4, 0x1d, 0xd3, 0xc6, 0xba, 0xd5, 0x30, 0x8d, 0x97, 0x71, 0x6d, 0x08, 0xea, 0xbf, 0x08, + 0x6d, 0xd5, 0x9e, 0x0f, 0x4e, 0x98, 0xd7, 0x41, 0xf6, 0x7a, 0x15, 0xd5, 0x68, 0xb5, 0x2d, 0xdb, + 0x8d, 0x61, 0xfc, 0x4b, 0xb1, 0x53, 0x1e, 0x6e, 0x9d, 0xc2, 0x4a, 0x15, 0x28, 0xd0, 0xc7, 0x61, + 0x43, 0xf2, 0xaf, 0x38, 0xd1, 0x78, 0x17, 0xc5, 0x13, 0x87, 0x6e, 0xb5, 0xda, 0x9a, 0x3d, 0x4c, + 0xfe, 0xfb, 0x6b, 0x91, 0x38, 0x38, 0x84, 0x27, 0x0e, 0xf7, 0xb0, 0x8d, 0x49, 0xb5, 0x1f, 0x82, + 0xe1, 0x9b, 0x22, 0x71, 0x08, 0x0c, 0xa7, 0x10, 0x0d, 0xc3, 0x10, 0x14, 0x7f, 0x23, 0x28, 0x04, + 0x86, 0x50, 0x7c, 0xae, 0x5b, 0x68, 0x6d, 0xdc, 0x30, 0x1c, 0xd7, 0x66, 0x7d, 0xf0, 0x60, 0xaa, + 0x6f, 0xbd, 0x1f, 0x6c, 0xc2, 0x14, 0x1f, 0xb4, 0xf4, 0x04, 0x4c, 0x84, 0x5a, 0x0c, 0x14, 0xf7, + 0xcd, 0x42, 0xf1, 0xe7, 0x3f, 0xe4, 0xc9, 0x28, 0xd8, 0x61, 0x94, 0x36, 0xc8, 0xbe, 0x07, 0xfb, + 0x80, 0x78, 0xb2, 0x57, 0x3e, 0xf4, 0xb6, 0x3e, 0xd0, 0x06, 0x94, 0x2e, 0xc1, 0x78, 0xa0, 0x07, + 0x88, 0xa7, 0xfa, 0x05, 0x4e, 0x95, 0xf7, 0xb7, 0x00, 0xa5, 0x73, 0x90, 0x22, 0xf5, 0x3c, 0x1e, + 0xfe, 0x8b, 0x1c, 0x4e, 0xd5, 0x4b, 0x8f, 0x42, 0x46, 0xd4, 0xf1, 0x78, 0xe8, 0x2f, 0x71, 0xa8, + 0x07, 0x21, 0x70, 0x51, 0xc3, 0xe3, 0xe1, 0xbf, 0x2c, 0xe0, 0x02, 0x42, 0xe0, 0xc3, 0xbb, 0xf0, + 0xdb, 0xbf, 0x92, 0xe2, 0x79, 0x58, 0xf8, 0xee, 0x22, 0x8c, 0xf1, 0xe2, 0x1d, 0x8f, 0xfe, 0x3c, + 0x9f, 0x5c, 0x20, 0x4a, 0x0f, 0x43, 0x7a, 0x48, 0x87, 0xff, 0x2a, 0x87, 0x32, 0xfd, 0xd2, 0x0a, + 0xe4, 0x7c, 0x05, 0x3b, 0x1e, 0xfe, 0x6b, 0x1c, 0xee, 0x47, 0x11, 0xd3, 0x79, 0xc1, 0x8e, 0x27, + 0xf8, 0x75, 0x61, 0x3a, 0x47, 0x10, 0xb7, 0x89, 0x5a, 0x1d, 0x8f, 0xfe, 0x0d, 0xe1, 0x75, 0x01, + 0x29, 0x3d, 0x0e, 0x59, 0x2f, 0xff, 0xc6, 0xe3, 0x7f, 0x93, 0xe3, 0xbb, 0x18, 0xe2, 0x01, 0x5f, + 0xfe, 0x8f, 0xa7, 0xf8, 0x2d, 0xe1, 0x01, 0x1f, 0x8a, 0x1c, 0xa3, 0x70, 0x4d, 0x8f, 0x67, 0xfa, + 0x6d, 0x71, 0x8c, 0x42, 0x25, 0x9d, 0xec, 0x26, 0x4d, 0x83, 0xf1, 0x14, 0xbf, 0x23, 0x76, 0x93, + 0xea, 0x13, 0x33, 0xc2, 0x45, 0x32, 0x9e, 0xe3, 0x77, 0x85, 0x19, 0xa1, 0x1a, 0x59, 0xda, 0x01, + 0xd4, 0x5b, 0x20, 0xe3, 0xf9, 0x5e, 0xe5, 0x7c, 0x93, 0x3d, 0xf5, 0xb1, 0xf4, 0x34, 0x9c, 0x88, + 0x2e, 0x8e, 0xf1, 0xac, 0x5f, 0xf8, 0x30, 0xf4, 0x3a, 0xe3, 0xaf, 0x8d, 0xa5, 0xdd, 0x6e, 0x96, + 0xf5, 0x17, 0xc6, 0x78, 0xda, 0xd7, 0x3e, 0x0c, 0x26, 0x5a, 0x7f, 0x5d, 0x2c, 0x95, 0x01, 0xba, + 0x35, 0x29, 0x9e, 0xeb, 0x75, 0xce, 0xe5, 0x03, 0x91, 0xa3, 0xc1, 0x4b, 0x52, 0x3c, 0xfe, 0x8b, + 0xe2, 0x68, 0x70, 0x04, 0x39, 0x1a, 0xa2, 0x1a, 0xc5, 0xa3, 0xdf, 0x10, 0x47, 0x43, 0x40, 0x4a, + 0x17, 0x21, 0x63, 0x76, 0x9a, 0x4d, 0x12, 0x5b, 0x68, 0xf0, 0x67, 0x44, 0xc5, 0x7f, 0xfe, 0x88, + 0x83, 0x05, 0xa0, 0x74, 0x0e, 0xd2, 0xb8, 0xb5, 0x8f, 0x6b, 0x71, 0xc8, 0x7f, 0xf9, 0x48, 0xe4, + 0x13, 0xa2, 0x5d, 0x7a, 0x1c, 0x80, 0xbd, 0x4c, 0xd3, 0x5f, 0x89, 0x62, 0xb0, 0xff, 0xfa, 0x11, + 0xff, 0x42, 0xa1, 0x0b, 0xe9, 0x12, 0xb0, 0xef, 0x1d, 0x06, 0x13, 0xbc, 0x1f, 0x24, 0xa0, 0x2f, + 0xe0, 0x8f, 0xc0, 0xd8, 0xf3, 0x8e, 0x65, 0xba, 0x5a, 0x23, 0x0e, 0xfd, 0x6f, 0x1c, 0x2d, 0xf4, + 0x89, 0xc3, 0x5a, 0x96, 0x8d, 0x5d, 0xad, 0xe1, 0xc4, 0x61, 0xff, 0x9d, 0x63, 0x3d, 0x00, 0x01, + 0xeb, 0x9a, 0xe3, 0x0e, 0xb3, 0xee, 0xff, 0x10, 0x60, 0x01, 0x20, 0x46, 0x93, 0xff, 0xaf, 0xe2, + 0xc3, 0x38, 0xec, 0x07, 0xc2, 0x68, 0xae, 0x5f, 0x7a, 0x14, 0xb2, 0xe4, 0x5f, 0xf6, 0xd5, 0x4e, + 0x0c, 0xf8, 0x3f, 0x39, 0xb8, 0x8b, 0x20, 0x33, 0x3b, 0x6e, 0xcd, 0x35, 0xe2, 0x9d, 0xfd, 0x5f, + 0x7c, 0xa7, 0x85, 0x7e, 0xa9, 0x0c, 0x39, 0xc7, 0xad, 0xd5, 0x3a, 0xbc, 0xa3, 0x89, 0x81, 0xff, + 0xf8, 0x23, 0xef, 0x25, 0xd7, 0xc3, 0x2c, 0x9f, 0x8e, 0xbe, 0xac, 0x83, 0x35, 0x6b, 0xcd, 0x62, + 0xd7, 0x74, 0xf0, 0x3f, 0xf7, 0xc3, 0xed, 0xba, 0xd5, 0xda, 0xb7, 0x9c, 0x45, 0x5f, 0x1a, 0x5a, + 0x6c, 0x69, 0x6d, 0x87, 0xea, 0x2f, 0xf1, 0xbb, 0xb6, 0x1c, 0x7f, 0x22, 0x03, 0x33, 0xc7, 0xbb, + 0xa7, 0x9b, 0xbb, 0x0d, 0xc6, 0x2f, 0x35, 0x2d, 0xcd, 0x35, 0xcc, 0xc6, 0x8e, 0x65, 0x98, 0x2e, + 0xca, 0x83, 0x54, 0xa7, 0x3f, 0x32, 0x49, 0x8a, 0x54, 0x9f, 0xfb, 0x87, 0x34, 0x64, 0xd9, 0x15, + 0xcf, 0xa6, 0xd6, 0x46, 0x3f, 0x07, 0xf9, 0x2d, 0x7e, 0x4a, 0x1e, 0x5c, 0xba, 0xe0, 0x78, 0xf7, + 0xc9, 0xbe, 0xf9, 0x17, 0x3c, 0xed, 0x05, 0xbf, 0x2a, 0xfd, 0x51, 0x79, 0xf9, 0x81, 0x1f, 0xbc, + 0x7d, 0xf2, 0xbe, 0xbe, 0xf6, 0x91, 0xb2, 0xb8, 0xc8, 0xc2, 0x79, 0x61, 0xcf, 0x30, 0xdd, 0x07, + 0x97, 0x2e, 0x28, 0x81, 0xf9, 0xd0, 0x35, 0xc8, 0xf0, 0x01, 0x87, 0xff, 0xce, 0x70, 0x47, 0x9f, + 0xb9, 0x85, 0x1a, 0x9b, 0xf7, 0xec, 0x5b, 0x6f, 0x9f, 0x1c, 0x39, 0xf6, 0xdc, 0xde, 0x5c, 0xe8, + 0x05, 0xc8, 0x09, 0x3b, 0xd6, 0x6b, 0x0e, 0xff, 0x9c, 0xf8, 0xee, 0x98, 0x65, 0xaf, 0xd7, 0xf8, + 0xec, 0x77, 0xfd, 0xe0, 0xed, 0x93, 0x73, 0x03, 0x67, 0x5e, 0xd8, 0xeb, 0x18, 0x35, 0xc5, 0x3f, + 0x07, 0x7a, 0x0e, 0x92, 0x64, 0x2a, 0xf6, 0xe1, 0xf1, 0xc9, 0x3e, 0x53, 0x79, 0x53, 0x9c, 0xe1, + 0x0b, 0x1c, 0x66, 0x1a, 0xc2, 0x3b, 0xf3, 0x38, 0x4c, 0xf6, 0x6c, 0x0f, 0x92, 0x21, 0x79, 0x15, + 0x1f, 0xf2, 0x6f, 0x8d, 0xc8, 0xbf, 0x68, 0xba, 0xfb, 0x2d, 0x9d, 0x34, 0x9f, 0xe7, 0x1f, 0xc8, + 0x95, 0x12, 0x17, 0xa4, 0x99, 0x8b, 0x30, 0x1e, 0xf0, 0xf1, 0xb1, 0xc0, 0x8f, 0x81, 0x1c, 0xf6, + 0xd2, 0xb1, 0xf0, 0xe7, 0x21, 0xf3, 0x71, 0x70, 0x73, 0xdf, 0x47, 0x30, 0x56, 0x6e, 0x36, 0x37, + 0xb5, 0xb6, 0x83, 0x9e, 0x81, 0x49, 0xd6, 0xbc, 0xef, 0x5a, 0xab, 0xf4, 0x97, 0x9d, 0x4d, 0xad, + 0xcd, 0x03, 0xfa, 0xde, 0x80, 0xbb, 0x39, 0x60, 0xa1, 0x47, 0x9b, 0xce, 0xaf, 0xf4, 0xb2, 0xa0, + 0xa7, 0x40, 0x16, 0x42, 0x7a, 0xb6, 0x08, 0x33, 0x0b, 0xd7, 0x33, 0x03, 0x99, 0x85, 0x32, 0x23, + 0xee, 0xe1, 0x40, 0x8f, 0x41, 0x66, 0xdd, 0x74, 0x1f, 0x5a, 0x22, 0x7c, 0x2c, 0x06, 0xe7, 0x22, + 0xf9, 0x84, 0x12, 0xe3, 0xf1, 0x30, 0x1c, 0x7f, 0xfe, 0x2c, 0xc1, 0xa7, 0x06, 0xe3, 0xa9, 0x52, + 0x17, 0x4f, 0x1f, 0x51, 0x19, 0xb2, 0x64, 0xcf, 0x99, 0x01, 0xec, 0x4b, 0xf6, 0xdb, 0x23, 0x09, + 0x3c, 0x2d, 0xc6, 0xd0, 0x45, 0x09, 0x0a, 0x66, 0xc3, 0x68, 0x0c, 0x85, 0xcf, 0x88, 0x2e, 0x8a, + 0x50, 0x54, 0x3d, 0x2b, 0xc6, 0x06, 0x50, 0x54, 0x43, 0x56, 0x54, 0xfd, 0x56, 0x54, 0x3d, 0x2b, + 0x32, 0x31, 0x14, 0x7e, 0x2b, 0xbc, 0x67, 0xb4, 0x0a, 0x70, 0xc9, 0x78, 0x09, 0xd7, 0x98, 0x19, + 0xd9, 0x88, 0x64, 0x24, 0x38, 0xba, 0x6a, 0x8c, 0xc4, 0x87, 0x43, 0x6b, 0x90, 0xab, 0xd6, 0xbb, + 0x34, 0xc0, 0x3f, 0xe4, 0x8f, 0x34, 0xa5, 0x1e, 0xe2, 0xf1, 0x23, 0x3d, 0x73, 0xd8, 0x92, 0x72, + 0x71, 0xe6, 0xf8, 0xd6, 0xe4, 0xc3, 0x75, 0xcd, 0x61, 0x34, 0xf9, 0x58, 0x73, 0x7c, 0x3c, 0x7e, + 0x24, 0xba, 0x08, 0x63, 0xcb, 0x96, 0x45, 0x34, 0x8b, 0xe3, 0x94, 0xe4, 0x74, 0x24, 0x09, 0xd7, + 0x61, 0x04, 0x02, 0x41, 0x77, 0x87, 0x86, 0x3e, 0x81, 0x17, 0x06, 0xed, 0x8e, 0xd0, 0x12, 0xbb, + 0x23, 0x9e, 0xfd, 0x27, 0x70, 0xf9, 0xd0, 0xc5, 0xa4, 0x51, 0x2e, 0x4e, 0x0c, 0x71, 0x02, 0x85, + 0x72, 0xe8, 0x04, 0x0a, 0x31, 0xaa, 0xc2, 0x84, 0x90, 0x55, 0xcc, 0x0e, 0xc9, 0xc1, 0x45, 0x99, + 0x7f, 0x65, 0x3c, 0x88, 0x96, 0xeb, 0x32, 0xd6, 0x30, 0x03, 0xda, 0x81, 0x82, 0x10, 0x6d, 0x3a, + 0x74, 0xd1, 0x93, 0x11, 0x75, 0x35, 0xcc, 0xc9, 0x54, 0x19, 0x65, 0x08, 0x3f, 0xb3, 0x0a, 0x27, + 0xa2, 0xb3, 0x55, 0x5c, 0xb6, 0x94, 0xfc, 0x59, 0x76, 0x05, 0x6e, 0x8a, 0xcc, 0x4c, 0x71, 0x24, + 0x89, 0x50, 0x9d, 0x08, 0xa4, 0x23, 0x3f, 0x38, 0x1d, 0x01, 0x4e, 0xf7, 0x82, 0xbb, 0x41, 0xe6, + 0x07, 0x27, 0x23, 0xc0, 0x49, 0x3f, 0xf8, 0xb3, 0x50, 0x08, 0xe6, 0x21, 0x3f, 0x7a, 0x3c, 0x02, + 0x3d, 0x1e, 0x81, 0x8e, 0x9e, 0x3b, 0x15, 0x81, 0x4e, 0x85, 0xd0, 0xd5, 0xbe, 0x73, 0x4f, 0x46, + 0xa0, 0x27, 0x23, 0xd0, 0xd1, 0x73, 0xa3, 0x08, 0x34, 0xf2, 0xa3, 0x1f, 0x85, 0x89, 0x50, 0xca, + 0xf1, 0xc3, 0xc7, 0x22, 0xe0, 0x63, 0xa1, 0xda, 0x1c, 0x4e, 0x35, 0x7e, 0xfc, 0x44, 0x04, 0x7e, + 0x22, 0x6a, 0xfa, 0x68, 0xeb, 0x47, 0x23, 0xe0, 0xa3, 0x91, 0xd3, 0x47, 0xe3, 0xe5, 0x08, 0xbc, + 0xec, 0xc7, 0x97, 0x20, 0xef, 0xcf, 0x2a, 0x7e, 0x6c, 0x26, 0x02, 0x9b, 0x09, 0xfb, 0x3d, 0x90, + 0x52, 0xe2, 0x22, 0x3d, 0xdb, 0xe7, 0xb8, 0x04, 0xd2, 0xc8, 0xb1, 0x3a, 0x9b, 0x2b, 0x30, 0x1d, + 0x95, 0x34, 0x22, 0x38, 0xce, 0xf8, 0x39, 0x0a, 0x4b, 0xd3, 0x81, 0x64, 0x41, 0x71, 0x9d, 0x96, + 0x9f, 0xf9, 0x39, 0x98, 0x8a, 0x48, 0x1d, 0x11, 0xc4, 0x0f, 0xf8, 0x89, 0x73, 0x4b, 0x33, 0x01, + 0xe2, 0xc0, 0xbb, 0x82, 0xbf, 0xb5, 0xfa, 0xe1, 0x14, 0x14, 0x78, 0x8a, 0xda, 0xb6, 0x6b, 0xd8, + 0xc6, 0x35, 0xf4, 0xff, 0xfb, 0x77, 0x58, 0x4b, 0x51, 0xa9, 0x8d, 0xe3, 0x8e, 0xd1, 0x68, 0x3d, + 0xd7, 0xb7, 0xd1, 0x7a, 0x70, 0x98, 0x09, 0xe2, 0xfa, 0xad, 0x4a, 0x4f, 0xbf, 0x75, 0xcf, 0x20, + 0xda, 0x7e, 0x6d, 0x57, 0xa5, 0xa7, 0xed, 0x8a, 0xa3, 0x89, 0xec, 0xbe, 0x2e, 0xf7, 0x76, 0x5f, + 0x67, 0x06, 0xf1, 0xf4, 0x6f, 0xc2, 0x2e, 0xf7, 0x36, 0x61, 0xb1, 0x4c, 0xd1, 0xbd, 0xd8, 0xe5, + 0xde, 0x5e, 0x6c, 0x20, 0x53, 0xff, 0x96, 0xec, 0x72, 0x6f, 0x4b, 0x16, 0xcb, 0x14, 0xdd, 0x99, + 0x3d, 0x19, 0xd1, 0x99, 0xdd, 0x3b, 0x88, 0x6a, 0x50, 0x83, 0xb6, 0x15, 0xd5, 0xa0, 0xdd, 0x37, + 0xd0, 0xb0, 0x81, 0x7d, 0xda, 0x93, 0x11, 0x7d, 0x5a, 0xbc, 0x71, 0x7d, 0xda, 0xb5, 0xad, 0xa8, + 0x76, 0x6d, 0x08, 0xe3, 0xfa, 0x75, 0x6d, 0xcb, 0xe1, 0xae, 0x6d, 0x7e, 0x10, 0x57, 0x74, 0xf3, + 0x76, 0xb9, 0xb7, 0x79, 0x3b, 0x13, 0x7f, 0x16, 0xa3, 0x7a, 0xb8, 0xe7, 0xfa, 0xf6, 0x70, 0x43, + 0x1d, 0xee, 0xb8, 0x56, 0xee, 0xd9, 0x7e, 0xad, 0xdc, 0x03, 0xc3, 0xb0, 0x0f, 0xee, 0xe8, 0x9e, + 0xee, 0xd3, 0xd1, 0x2d, 0x0e, 0x43, 0xfd, 0x69, 0x63, 0xf7, 0x69, 0x63, 0xf7, 0x69, 0x63, 0xf7, + 0x69, 0x63, 0xf7, 0x7f, 0xa3, 0xb1, 0x2b, 0xa5, 0x5e, 0xfd, 0xd2, 0x49, 0xe9, 0xcc, 0x69, 0x18, + 0xe3, 0x53, 0xa3, 0x51, 0x48, 0x6c, 0x96, 0xe5, 0x11, 0xfa, 0x77, 0x59, 0x96, 0xe8, 0xdf, 0x15, + 0x39, 0xb1, 0xbc, 0xf1, 0xd6, 0x8d, 0xd9, 0x91, 0xef, 0xde, 0x98, 0x1d, 0xf9, 0xfe, 0x8d, 0xd9, + 0x91, 0x77, 0x6e, 0xcc, 0x4a, 0xef, 0xdd, 0x98, 0x95, 0x3e, 0xb8, 0x31, 0x2b, 0xfd, 0xe4, 0xc6, + 0xac, 0x74, 0xfd, 0x68, 0x56, 0xfa, 0xca, 0xd1, 0xac, 0xf4, 0xf5, 0xa3, 0x59, 0xe9, 0x5b, 0x47, + 0xb3, 0xd2, 0xb7, 0x8f, 0x66, 0xa5, 0xb7, 0x8e, 0x66, 0x47, 0xbe, 0x7b, 0x34, 0x2b, 0xbd, 0x73, + 0x34, 0x2b, 0xbd, 0x77, 0x34, 0x3b, 0xf2, 0xc1, 0xd1, 0xac, 0xf4, 0x93, 0xa3, 0xd9, 0x91, 0xeb, + 0x3f, 0x9a, 0x1d, 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x95, 0x80, 0x4e, 0xc0, 0x58, 0x45, + 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeboth/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeboth/mapsproto2.pb.go index 4e24890e3..f27551686 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeboth/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeboth/mapsproto2.pb.go @@ -181,286 +181,293 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4466 bytes of a gzipped FileDescriptorSet + // 4578 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xde, 0xe1, 0x43, 0x22, 0x0f, 0x29, 0x6a, 0x74, 0x25, 0xaf, 0x69, 0x25, 0xe6, 0xee, 0xca, - 0x2f, 0x79, 0x6d, 0x4b, 0xb6, 0xbc, 0xbb, 0x5e, 0x73, 0x63, 0x1b, 0x94, 0xc4, 0xd5, 0xca, 0xd1, - 0x2b, 0x43, 0xc9, 0xaf, 0xc0, 0x98, 0x8e, 0x86, 0x97, 0xd4, 0x78, 0xc9, 0x19, 0x66, 0x66, 0xb8, - 0xb6, 0xfc, 0xa3, 0xd8, 0xc0, 0x7d, 0x20, 0x08, 0xfa, 0x2e, 0x50, 0xc7, 0x71, 0xdc, 0x24, 0x40, - 0xeb, 0x34, 0x7d, 0x25, 0x7d, 0xa4, 0x41, 0x7f, 0xe5, 0x4f, 0x5a, 0x03, 0x05, 0x8a, 0xe4, 0x5f, - 0x10, 0x04, 0x46, 0x56, 0x35, 0x50, 0xb7, 0x75, 0x5b, 0xb7, 0x31, 0x50, 0x03, 0xfe, 0x53, 0xdc, - 0xd7, 0x70, 0x66, 0x38, 0xe4, 0x50, 0x06, 0xf2, 0xf8, 0xe1, 0x5f, 0xd2, 0x9c, 0x7b, 0xbe, 0xef, - 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x9c, 0xb9, 0x1c, 0xf8, 0xec, 0x39, 0x38, 0xdd, 0xb4, 0xac, 0x66, - 0x0b, 0x2f, 0x76, 0x6c, 0xcb, 0xb5, 0xf6, 0xbb, 0x8d, 0xc5, 0x3a, 0x76, 0x74, 0xdb, 0xe8, 0xb8, - 0x96, 0xbd, 0x40, 0x65, 0x68, 0x92, 0x69, 0x2c, 0x08, 0x8d, 0xb9, 0x4d, 0x98, 0xba, 0x6c, 0xb4, - 0xf0, 0xaa, 0xa7, 0x58, 0xc3, 0x2e, 0xba, 0x08, 0xa9, 0x86, 0xd1, 0xc2, 0x45, 0xe9, 0x74, 0x72, - 0x3e, 0xb7, 0x74, 0xfb, 0x42, 0x08, 0xb4, 0x10, 0x44, 0xec, 0x10, 0xb1, 0x42, 0x11, 0x73, 0x6f, - 0xa5, 0x60, 0x3a, 0x62, 0x14, 0x21, 0x48, 0x99, 0x5a, 0x9b, 0x30, 0x4a, 0xf3, 0x59, 0x85, 0xfe, - 0x8f, 0x8a, 0x30, 0xde, 0xd1, 0xf4, 0xab, 0x5a, 0x13, 0x17, 0x13, 0x54, 0x2c, 0x1e, 0x51, 0x09, - 0xa0, 0x8e, 0x3b, 0xd8, 0xac, 0x63, 0x53, 0x3f, 0x2c, 0x26, 0x4f, 0x27, 0xe7, 0xb3, 0x8a, 0x4f, - 0x82, 0xee, 0x81, 0xa9, 0x4e, 0x77, 0xbf, 0x65, 0xe8, 0xaa, 0x4f, 0x0d, 0x4e, 0x27, 0xe7, 0xd3, - 0x8a, 0xcc, 0x06, 0x56, 0x7b, 0xca, 0x77, 0xc1, 0xe4, 0xf3, 0x58, 0xbb, 0xea, 0x57, 0xcd, 0x51, - 0xd5, 0x02, 0x11, 0xfb, 0x14, 0x57, 0x20, 0xdf, 0xc6, 0x8e, 0xa3, 0x35, 0xb1, 0xea, 0x1e, 0x76, - 0x70, 0x31, 0x45, 0x57, 0x7f, 0xba, 0x6f, 0xf5, 0xe1, 0x95, 0xe7, 0x38, 0x6a, 0xf7, 0xb0, 0x83, - 0x51, 0x05, 0xb2, 0xd8, 0xec, 0xb6, 0x19, 0x43, 0x7a, 0x80, 0xff, 0xaa, 0x66, 0xb7, 0x1d, 0x66, - 0xc9, 0x10, 0x18, 0xa7, 0x18, 0x77, 0xb0, 0x7d, 0xcd, 0xd0, 0x71, 0x71, 0x8c, 0x12, 0xdc, 0xd5, - 0x47, 0x50, 0x63, 0xe3, 0x61, 0x0e, 0x81, 0x43, 0x2b, 0x90, 0xc5, 0x2f, 0xb8, 0xd8, 0x74, 0x0c, - 0xcb, 0x2c, 0x8e, 0x53, 0x92, 0x3b, 0x22, 0x76, 0x11, 0xb7, 0xea, 0x61, 0x8a, 0x1e, 0x0e, 0x5d, - 0x80, 0x71, 0xab, 0xe3, 0x1a, 0x96, 0xe9, 0x14, 0x33, 0xa7, 0xa5, 0xf9, 0xdc, 0xd2, 0xc7, 0x23, - 0x03, 0x61, 0x9b, 0xe9, 0x28, 0x42, 0x19, 0xad, 0x83, 0xec, 0x58, 0x5d, 0x5b, 0xc7, 0xaa, 0x6e, - 0xd5, 0xb1, 0x6a, 0x98, 0x0d, 0xab, 0x98, 0xa5, 0x04, 0xa7, 0xfa, 0x17, 0x42, 0x15, 0x57, 0xac, - 0x3a, 0x5e, 0x37, 0x1b, 0x96, 0x52, 0x70, 0x02, 0xcf, 0xe8, 0x24, 0x8c, 0x39, 0x87, 0xa6, 0xab, - 0xbd, 0x50, 0xcc, 0xd3, 0x08, 0xe1, 0x4f, 0x73, 0xff, 0x97, 0x86, 0xc9, 0x51, 0x42, 0xec, 0x12, - 0xa4, 0x1b, 0x64, 0x95, 0xc5, 0xc4, 0x71, 0x7c, 0xc0, 0x30, 0x41, 0x27, 0x8e, 0x7d, 0x48, 0x27, - 0x56, 0x20, 0x67, 0x62, 0xc7, 0xc5, 0x75, 0x16, 0x11, 0xc9, 0x11, 0x63, 0x0a, 0x18, 0xa8, 0x3f, - 0xa4, 0x52, 0x1f, 0x2a, 0xa4, 0x9e, 0x82, 0x49, 0xcf, 0x24, 0xd5, 0xd6, 0xcc, 0xa6, 0x88, 0xcd, - 0xc5, 0x38, 0x4b, 0x16, 0xaa, 0x02, 0xa7, 0x10, 0x98, 0x52, 0xc0, 0x81, 0x67, 0xb4, 0x0a, 0x60, - 0x99, 0xd8, 0x6a, 0xa8, 0x75, 0xac, 0xb7, 0x8a, 0x99, 0x01, 0x5e, 0xda, 0x26, 0x2a, 0x7d, 0x5e, - 0xb2, 0x98, 0x54, 0x6f, 0xa1, 0x87, 0x7b, 0xa1, 0x36, 0x3e, 0x20, 0x52, 0x36, 0xd9, 0x21, 0xeb, - 0x8b, 0xb6, 0x3d, 0x28, 0xd8, 0x98, 0xc4, 0x3d, 0xae, 0xf3, 0x95, 0x65, 0xa9, 0x11, 0x0b, 0xb1, - 0x2b, 0x53, 0x38, 0x8c, 0x2d, 0x6c, 0xc2, 0xf6, 0x3f, 0xa2, 0xdb, 0xc0, 0x13, 0xa8, 0x34, 0xac, - 0x80, 0x66, 0xa1, 0xbc, 0x10, 0x6e, 0x69, 0x6d, 0x3c, 0x7b, 0x11, 0x0a, 0x41, 0xf7, 0xa0, 0x19, - 0x48, 0x3b, 0xae, 0x66, 0xbb, 0x34, 0x0a, 0xd3, 0x0a, 0x7b, 0x40, 0x32, 0x24, 0xb1, 0x59, 0xa7, - 0x59, 0x2e, 0xad, 0x90, 0x7f, 0x67, 0x1f, 0x82, 0x89, 0xc0, 0xf4, 0xa3, 0x02, 0xe7, 0x5e, 0x1e, - 0x83, 0x99, 0xa8, 0x98, 0x8b, 0x0c, 0xff, 0x93, 0x30, 0x66, 0x76, 0xdb, 0xfb, 0xd8, 0x2e, 0x26, - 0x29, 0x03, 0x7f, 0x42, 0x15, 0x48, 0xb7, 0xb4, 0x7d, 0xdc, 0x2a, 0xa6, 0x4e, 0x4b, 0xf3, 0x85, - 0xa5, 0x7b, 0x46, 0x8a, 0xea, 0x85, 0x0d, 0x02, 0x51, 0x18, 0x12, 0x3d, 0x0a, 0x29, 0x9e, 0xe2, - 0x08, 0xc3, 0xd9, 0xd1, 0x18, 0x48, 0x2c, 0x2a, 0x14, 0x87, 0x3e, 0x06, 0x59, 0xf2, 0x97, 0xf9, - 0x76, 0x8c, 0xda, 0x9c, 0x21, 0x02, 0xe2, 0x57, 0x34, 0x0b, 0x19, 0x1a, 0x66, 0x75, 0x2c, 0x4a, - 0x83, 0xf7, 0x4c, 0x36, 0xa6, 0x8e, 0x1b, 0x5a, 0xb7, 0xe5, 0xaa, 0xd7, 0xb4, 0x56, 0x17, 0xd3, - 0x80, 0xc9, 0x2a, 0x79, 0x2e, 0x7c, 0x82, 0xc8, 0xd0, 0x29, 0xc8, 0xb1, 0xa8, 0x34, 0xcc, 0x3a, - 0x7e, 0x81, 0x66, 0x9f, 0xb4, 0xc2, 0x02, 0x75, 0x9d, 0x48, 0xc8, 0xf4, 0xcf, 0x39, 0x96, 0x29, - 0xb6, 0x96, 0x4e, 0x41, 0x04, 0x74, 0xfa, 0x87, 0xc2, 0x89, 0xef, 0xd6, 0xe8, 0xe5, 0x85, 0x63, - 0x71, 0xee, 0x5b, 0x09, 0x48, 0xd1, 0xf3, 0x36, 0x09, 0xb9, 0xdd, 0xa7, 0x77, 0xaa, 0xea, 0xea, - 0xf6, 0xde, 0xf2, 0x46, 0x55, 0x96, 0x50, 0x01, 0x80, 0x0a, 0x2e, 0x6f, 0x6c, 0x57, 0x76, 0xe5, - 0x84, 0xf7, 0xbc, 0xbe, 0xb5, 0x7b, 0xe1, 0x9c, 0x9c, 0xf4, 0x00, 0x7b, 0x4c, 0x90, 0xf2, 0x2b, - 0x3c, 0xb8, 0x24, 0xa7, 0x91, 0x0c, 0x79, 0x46, 0xb0, 0xfe, 0x54, 0x75, 0xf5, 0xc2, 0x39, 0x79, - 0x2c, 0x28, 0x79, 0x70, 0x49, 0x1e, 0x47, 0x13, 0x90, 0xa5, 0x92, 0xe5, 0xed, 0xed, 0x0d, 0x39, - 0xe3, 0x71, 0xd6, 0x76, 0x95, 0xf5, 0xad, 0x35, 0x39, 0xeb, 0x71, 0xae, 0x29, 0xdb, 0x7b, 0x3b, - 0x32, 0x78, 0x0c, 0x9b, 0xd5, 0x5a, 0xad, 0xb2, 0x56, 0x95, 0x73, 0x9e, 0xc6, 0xf2, 0xd3, 0xbb, - 0xd5, 0x9a, 0x9c, 0x0f, 0x98, 0xf5, 0xe0, 0x92, 0x3c, 0xe1, 0x4d, 0x51, 0xdd, 0xda, 0xdb, 0x94, - 0x0b, 0x68, 0x0a, 0x26, 0xd8, 0x14, 0xc2, 0x88, 0xc9, 0x90, 0xe8, 0xc2, 0x39, 0x59, 0xee, 0x19, - 0xc2, 0x58, 0xa6, 0x02, 0x82, 0x0b, 0xe7, 0x64, 0x34, 0xb7, 0x02, 0x69, 0x1a, 0x5d, 0x08, 0x41, - 0x61, 0xa3, 0xb2, 0x5c, 0xdd, 0x50, 0xb7, 0x77, 0x76, 0xd7, 0xb7, 0xb7, 0x2a, 0x1b, 0xb2, 0xd4, - 0x93, 0x29, 0xd5, 0x4f, 0xed, 0xad, 0x2b, 0xd5, 0x55, 0x39, 0xe1, 0x97, 0xed, 0x54, 0x2b, 0xbb, - 0xd5, 0x55, 0x39, 0x39, 0xa7, 0xc3, 0x4c, 0x54, 0x9e, 0x89, 0x3c, 0x19, 0xbe, 0x2d, 0x4e, 0x0c, - 0xd8, 0x62, 0xca, 0xd5, 0xb7, 0xc5, 0x5f, 0x95, 0x60, 0x3a, 0x22, 0xd7, 0x46, 0x4e, 0xf2, 0x18, - 0xa4, 0x59, 0x88, 0xb2, 0xea, 0x73, 0x77, 0x64, 0xd2, 0xa6, 0x01, 0xdb, 0x57, 0x81, 0x28, 0xce, - 0x5f, 0x81, 0x93, 0x03, 0x2a, 0x30, 0xa1, 0xe8, 0x33, 0xf2, 0x25, 0x09, 0x8a, 0x83, 0xb8, 0x63, - 0x12, 0x45, 0x22, 0x90, 0x28, 0x2e, 0x85, 0x0d, 0x38, 0x33, 0x78, 0x0d, 0x7d, 0x56, 0xbc, 0x2e, - 0xc1, 0xc9, 0xe8, 0x46, 0x25, 0xd2, 0x86, 0x47, 0x61, 0xac, 0x8d, 0xdd, 0x03, 0x4b, 0x14, 0xeb, - 0x3b, 0x23, 0x4a, 0x00, 0x19, 0x0e, 0xfb, 0x8a, 0xa3, 0xfc, 0x35, 0x24, 0x39, 0xa8, 0xdb, 0x60, - 0xd6, 0xf4, 0x59, 0xfa, 0xb9, 0x04, 0xdc, 0x14, 0x49, 0x1e, 0x69, 0xe8, 0xad, 0x00, 0x86, 0xd9, - 0xe9, 0xba, 0xac, 0x20, 0xb3, 0xfc, 0x94, 0xa5, 0x12, 0x7a, 0xf6, 0x49, 0xee, 0xe9, 0xba, 0xde, - 0x78, 0x92, 0x8e, 0x03, 0x13, 0x51, 0x85, 0x8b, 0x3d, 0x43, 0x53, 0xd4, 0xd0, 0xd2, 0x80, 0x95, - 0xf6, 0xd5, 0xba, 0xfb, 0x41, 0xd6, 0x5b, 0x06, 0x36, 0x5d, 0xd5, 0x71, 0x6d, 0xac, 0xb5, 0x0d, - 0xb3, 0x49, 0x13, 0x70, 0xa6, 0x9c, 0x6e, 0x68, 0x2d, 0x07, 0x2b, 0x93, 0x6c, 0xb8, 0x26, 0x46, - 0x09, 0x82, 0x56, 0x19, 0xdb, 0x87, 0x18, 0x0b, 0x20, 0xd8, 0xb0, 0x87, 0x98, 0xfb, 0xfc, 0x38, - 0xe4, 0x7c, 0x6d, 0x1d, 0x3a, 0x03, 0xf9, 0xe7, 0xb4, 0x6b, 0x9a, 0x2a, 0x5a, 0x75, 0xe6, 0x89, - 0x1c, 0x91, 0xed, 0xf0, 0x76, 0xfd, 0x7e, 0x98, 0xa1, 0x2a, 0x56, 0xd7, 0xc5, 0xb6, 0xaa, 0xb7, - 0x34, 0xc7, 0xa1, 0x4e, 0xcb, 0x50, 0x55, 0x44, 0xc6, 0xb6, 0xc9, 0xd0, 0x8a, 0x18, 0x41, 0xe7, - 0x61, 0x9a, 0x22, 0xda, 0xdd, 0x96, 0x6b, 0x74, 0x5a, 0x58, 0x25, 0x2f, 0x0f, 0x0e, 0x4d, 0xc4, - 0x9e, 0x65, 0x53, 0x44, 0x63, 0x93, 0x2b, 0x10, 0x8b, 0x1c, 0xb4, 0x06, 0xb7, 0x52, 0x58, 0x13, - 0x9b, 0xd8, 0xd6, 0x5c, 0xac, 0xe2, 0xcf, 0x74, 0xb5, 0x96, 0xa3, 0x6a, 0x66, 0x5d, 0x3d, 0xd0, - 0x9c, 0x83, 0xe2, 0x8c, 0x9f, 0xe0, 0x16, 0xa2, 0xbb, 0xc6, 0x55, 0xab, 0x54, 0xb3, 0x62, 0xd6, - 0xaf, 0x68, 0xce, 0x01, 0x2a, 0xc3, 0x49, 0x4a, 0xe4, 0xb8, 0xb6, 0x61, 0x36, 0x55, 0xfd, 0x00, - 0xeb, 0x57, 0xd5, 0xae, 0xdb, 0xb8, 0x58, 0xfc, 0x98, 0x9f, 0x81, 0x1a, 0x59, 0xa3, 0x3a, 0x2b, - 0x44, 0x65, 0xcf, 0x6d, 0x5c, 0x44, 0x35, 0xc8, 0x93, 0xfd, 0x68, 0x1b, 0x2f, 0x62, 0xb5, 0x61, - 0xd9, 0xb4, 0xb8, 0x14, 0x22, 0x0e, 0xb7, 0xcf, 0x89, 0x0b, 0xdb, 0x1c, 0xb0, 0x69, 0xd5, 0x71, - 0x39, 0x5d, 0xdb, 0xa9, 0x56, 0x57, 0x95, 0x9c, 0x60, 0xb9, 0x6c, 0xd9, 0x24, 0xa6, 0x9a, 0x96, - 0xe7, 0xe3, 0x1c, 0x8b, 0xa9, 0xa6, 0x25, 0x3c, 0x7c, 0x1e, 0xa6, 0x75, 0x9d, 0x2d, 0xdb, 0xd0, - 0x55, 0xde, 0xe5, 0x3b, 0x45, 0x39, 0xe0, 0x2f, 0x5d, 0x5f, 0x63, 0x0a, 0x3c, 0xcc, 0x1d, 0xf4, - 0x30, 0xdc, 0xd4, 0xf3, 0x97, 0x1f, 0x38, 0xd5, 0xb7, 0xca, 0x30, 0xf4, 0x3c, 0x4c, 0x77, 0x0e, - 0xfb, 0x81, 0x28, 0x30, 0x63, 0xe7, 0x30, 0x0c, 0xbb, 0x83, 0xbe, 0xb9, 0xd9, 0x58, 0xd7, 0x5c, - 0x5c, 0x2f, 0xde, 0xec, 0xd7, 0xf6, 0x0d, 0xa0, 0x45, 0x90, 0x75, 0x5d, 0xc5, 0xa6, 0xb6, 0xdf, - 0xc2, 0xaa, 0x66, 0x63, 0x53, 0x73, 0x8a, 0xa7, 0xfc, 0xca, 0x05, 0x5d, 0xaf, 0xd2, 0xd1, 0x0a, - 0x1d, 0x44, 0x67, 0x61, 0xca, 0xda, 0x7f, 0x4e, 0x67, 0xc1, 0xa5, 0x76, 0x6c, 0xdc, 0x30, 0x5e, - 0x28, 0xde, 0x4e, 0xdd, 0x34, 0x49, 0x06, 0x68, 0x68, 0xed, 0x50, 0x31, 0xba, 0x1b, 0x64, 0xdd, - 0x39, 0xd0, 0xec, 0x0e, 0xad, 0xee, 0x4e, 0x47, 0xd3, 0x71, 0xf1, 0x0e, 0xa6, 0xca, 0xe4, 0x5b, - 0x42, 0x8c, 0x9e, 0x82, 0x99, 0xae, 0x69, 0x98, 0x2e, 0xb6, 0x3b, 0x36, 0x26, 0x4d, 0x3a, 0x3b, - 0x69, 0xc5, 0x7f, 0x1d, 0x1f, 0xd0, 0x66, 0xef, 0xf9, 0xb5, 0xd9, 0xee, 0x2a, 0xd3, 0xdd, 0x7e, - 0xe1, 0x5c, 0x19, 0xf2, 0xfe, 0x4d, 0x47, 0x59, 0x60, 0xdb, 0x2e, 0x4b, 0xa4, 0x86, 0xae, 0x6c, - 0xaf, 0x92, 0xea, 0xf7, 0x4c, 0x55, 0x4e, 0x90, 0x2a, 0xbc, 0xb1, 0xbe, 0x5b, 0x55, 0x95, 0xbd, - 0xad, 0xdd, 0xf5, 0xcd, 0xaa, 0x9c, 0x3c, 0x9b, 0xcd, 0xbc, 0x3d, 0x2e, 0x5f, 0xbf, 0x7e, 0xfd, - 0x7a, 0x62, 0xee, 0xbb, 0x09, 0x28, 0x04, 0x3b, 0x5f, 0xf4, 0x09, 0xb8, 0x59, 0xbc, 0xa6, 0x3a, - 0xd8, 0x55, 0x9f, 0x37, 0x6c, 0x1a, 0x87, 0x6d, 0x8d, 0xf5, 0x8e, 0x9e, 0x0b, 0x67, 0xb8, 0x56, - 0x0d, 0xbb, 0x4f, 0x1a, 0x36, 0x89, 0xb2, 0xb6, 0xe6, 0xa2, 0x0d, 0x38, 0x65, 0x5a, 0xaa, 0xe3, - 0x6a, 0x66, 0x5d, 0xb3, 0xeb, 0x6a, 0xef, 0x82, 0x40, 0xd5, 0x74, 0x1d, 0x3b, 0x8e, 0xc5, 0x4a, - 0x80, 0xc7, 0xf2, 0x71, 0xd3, 0xaa, 0x71, 0xe5, 0x5e, 0x6e, 0xac, 0x70, 0xd5, 0xd0, 0x76, 0x27, - 0x07, 0x6d, 0xf7, 0xc7, 0x20, 0xdb, 0xd6, 0x3a, 0x2a, 0x36, 0x5d, 0xfb, 0x90, 0xf6, 0x6b, 0x19, - 0x25, 0xd3, 0xd6, 0x3a, 0x55, 0xf2, 0xfc, 0xd3, 0xdb, 0x03, 0xbf, 0x1f, 0x7f, 0x94, 0x84, 0xbc, - 0xbf, 0x67, 0x23, 0x2d, 0xb0, 0x4e, 0xf3, 0xb3, 0x44, 0x8f, 0xef, 0x6d, 0x43, 0x3b, 0xbc, 0x85, - 0x15, 0x92, 0xb8, 0xcb, 0x63, 0xac, 0x93, 0x52, 0x18, 0x92, 0x14, 0x4d, 0x72, 0x60, 0x31, 0xeb, - 0xcf, 0x33, 0x0a, 0x7f, 0x42, 0x6b, 0x30, 0xf6, 0x9c, 0x43, 0xb9, 0xc7, 0x28, 0xf7, 0xed, 0xc3, - 0xb9, 0x1f, 0xaf, 0x51, 0xf2, 0xec, 0xe3, 0x35, 0x75, 0x6b, 0x5b, 0xd9, 0xac, 0x6c, 0x28, 0x1c, - 0x8e, 0x6e, 0x81, 0x54, 0x4b, 0x7b, 0xf1, 0x30, 0x98, 0xe2, 0xa9, 0x68, 0x54, 0xc7, 0xdf, 0x02, - 0xa9, 0xe7, 0xb1, 0x76, 0x35, 0x98, 0x58, 0xa9, 0xe8, 0xa7, 0x18, 0xfa, 0x8b, 0x90, 0xa6, 0xfe, - 0x42, 0x00, 0xdc, 0x63, 0xf2, 0x09, 0x94, 0x81, 0xd4, 0xca, 0xb6, 0x42, 0xc2, 0x5f, 0x86, 0x3c, - 0x93, 0xaa, 0x3b, 0xeb, 0xd5, 0x95, 0xaa, 0x9c, 0x98, 0x3b, 0x0f, 0x63, 0xcc, 0x09, 0xe4, 0x68, - 0x78, 0x6e, 0x90, 0x4f, 0xf0, 0x47, 0xce, 0x21, 0x89, 0xd1, 0xbd, 0xcd, 0xe5, 0xaa, 0x22, 0x27, - 0xfc, 0xdb, 0xeb, 0x40, 0xde, 0xdf, 0xae, 0xfd, 0x6c, 0x62, 0xea, 0xef, 0x25, 0xc8, 0xf9, 0xda, - 0x2f, 0x52, 0xf8, 0xb5, 0x56, 0xcb, 0x7a, 0x5e, 0xd5, 0x5a, 0x86, 0xe6, 0xf0, 0xa0, 0x00, 0x2a, - 0xaa, 0x10, 0xc9, 0xa8, 0x9b, 0xf6, 0x33, 0x31, 0xfe, 0x35, 0x09, 0xe4, 0x70, 0xeb, 0x16, 0x32, - 0x50, 0xfa, 0xb9, 0x1a, 0xf8, 0xaa, 0x04, 0x85, 0x60, 0xbf, 0x16, 0x32, 0xef, 0xcc, 0xcf, 0xd5, - 0xbc, 0x2f, 0x4a, 0x30, 0x11, 0xe8, 0xd2, 0x7e, 0xa1, 0xac, 0x7b, 0x25, 0x09, 0xd3, 0x11, 0x38, - 0x54, 0xe1, 0xed, 0x2c, 0xeb, 0xb0, 0xef, 0x1b, 0x65, 0xae, 0x05, 0x52, 0x2d, 0x77, 0x34, 0xdb, - 0xe5, 0xdd, 0xef, 0xdd, 0x20, 0x1b, 0x75, 0x6c, 0xba, 0x46, 0xc3, 0xc0, 0x36, 0x7f, 0x05, 0x67, - 0x3d, 0xee, 0x64, 0x4f, 0xce, 0xde, 0xc2, 0xef, 0x05, 0xd4, 0xb1, 0x1c, 0xc3, 0x35, 0xae, 0x61, - 0xd5, 0x30, 0xc5, 0xfb, 0x3a, 0xe9, 0x79, 0x53, 0x8a, 0x2c, 0x46, 0xd6, 0x4d, 0xd7, 0xd3, 0x36, - 0x71, 0x53, 0x0b, 0x69, 0x93, 0xdc, 0x97, 0x54, 0x64, 0x31, 0xe2, 0x69, 0x9f, 0x81, 0x7c, 0xdd, - 0xea, 0x92, 0xf6, 0x81, 0xe9, 0x91, 0x54, 0x2b, 0x29, 0x39, 0x26, 0xf3, 0x54, 0x78, 0x7f, 0xd7, - 0xbb, 0x28, 0xc8, 0x2b, 0x39, 0x26, 0x63, 0x2a, 0x77, 0xc1, 0xa4, 0xd6, 0x6c, 0xda, 0x84, 0x5c, - 0x10, 0xb1, 0xa6, 0xb5, 0xe0, 0x89, 0xa9, 0xe2, 0xec, 0xe3, 0x90, 0x11, 0x7e, 0x20, 0xd5, 0x8c, - 0x78, 0x42, 0xed, 0xb0, 0xeb, 0x9a, 0xc4, 0x7c, 0x56, 0xc9, 0x98, 0x62, 0xf0, 0x0c, 0xe4, 0x0d, - 0x47, 0xed, 0xdd, 0x1b, 0x26, 0x4e, 0x27, 0xe6, 0x33, 0x4a, 0xce, 0x70, 0xbc, 0x8b, 0xa2, 0xb9, - 0xd7, 0x13, 0x50, 0x08, 0xde, 0x7b, 0xa2, 0x55, 0xc8, 0xb4, 0x2c, 0x5d, 0xa3, 0x81, 0xc0, 0x2e, - 0xdd, 0xe7, 0x63, 0xae, 0x4a, 0x17, 0x36, 0xb8, 0xbe, 0xe2, 0x21, 0x67, 0xff, 0x59, 0x82, 0x8c, - 0x10, 0xa3, 0x93, 0x90, 0xea, 0x68, 0xee, 0x01, 0xa5, 0x4b, 0x2f, 0x27, 0x64, 0x49, 0xa1, 0xcf, - 0x44, 0xee, 0x74, 0x34, 0x93, 0x86, 0x00, 0x97, 0x93, 0x67, 0xb2, 0xaf, 0x2d, 0xac, 0xd5, 0x69, - 0x3b, 0x6c, 0xb5, 0xdb, 0xd8, 0x74, 0x1d, 0xb1, 0xaf, 0x5c, 0xbe, 0xc2, 0xc5, 0xe8, 0x1e, 0x98, - 0x72, 0x6d, 0xcd, 0x68, 0x05, 0x74, 0x53, 0x54, 0x57, 0x16, 0x03, 0x9e, 0x72, 0x19, 0x6e, 0x11, - 0xbc, 0x75, 0xec, 0x6a, 0xfa, 0x01, 0xae, 0xf7, 0x40, 0x63, 0xf4, 0x52, 0xed, 0x66, 0xae, 0xb0, - 0xca, 0xc7, 0x05, 0x76, 0xee, 0xfb, 0x12, 0x4c, 0x89, 0x06, 0xbe, 0xee, 0x39, 0x6b, 0x13, 0x40, - 0x33, 0x4d, 0xcb, 0xf5, 0xbb, 0xab, 0x3f, 0x94, 0xfb, 0x70, 0x0b, 0x15, 0x0f, 0xa4, 0xf8, 0x08, - 0x66, 0xdb, 0x00, 0xbd, 0x91, 0x81, 0x6e, 0x3b, 0x05, 0x39, 0x7e, 0xa9, 0x4d, 0x7f, 0x19, 0x61, - 0x6f, 0x7d, 0xc0, 0x44, 0xa4, 0xd3, 0x47, 0x33, 0x90, 0xde, 0xc7, 0x4d, 0xc3, 0xe4, 0x57, 0x6d, - 0xec, 0x41, 0x5c, 0xe0, 0xa5, 0xbc, 0x0b, 0xbc, 0xe5, 0x4f, 0xc3, 0xb4, 0x6e, 0xb5, 0xc3, 0xe6, - 0x2e, 0xcb, 0xa1, 0x37, 0x4f, 0xe7, 0x8a, 0xf4, 0x0c, 0xf4, 0xba, 0xb3, 0x2f, 0x4b, 0xd2, 0x57, - 0x13, 0xc9, 0xb5, 0x9d, 0xe5, 0xaf, 0x27, 0x66, 0xd7, 0x18, 0x74, 0x47, 0xac, 0x54, 0xc1, 0x8d, - 0x16, 0xd6, 0x89, 0xf5, 0xf0, 0x93, 0x3b, 0xe1, 0xbe, 0xa6, 0xe1, 0x1e, 0x74, 0xf7, 0x17, 0x74, - 0xab, 0xbd, 0xd8, 0xb4, 0x9a, 0x56, 0xef, 0xc7, 0x20, 0xf2, 0x44, 0x1f, 0xe8, 0x7f, 0xfc, 0x07, - 0xa1, 0xac, 0x27, 0x9d, 0x8d, 0xfd, 0xf5, 0xa8, 0xbc, 0x05, 0xd3, 0x5c, 0x59, 0xa5, 0x37, 0xd2, - 0xac, 0x0f, 0x47, 0x43, 0x6f, 0x25, 0x8a, 0xdf, 0x7c, 0x8b, 0x56, 0x3a, 0x65, 0x8a, 0x43, 0xc9, - 0x18, 0xeb, 0xd4, 0xcb, 0x0a, 0xdc, 0x14, 0xe0, 0x63, 0x47, 0x13, 0xdb, 0x31, 0x8c, 0xdf, 0xe5, - 0x8c, 0xd3, 0x3e, 0xc6, 0x1a, 0x87, 0x96, 0x57, 0x60, 0xe2, 0x38, 0x5c, 0xff, 0xc0, 0xb9, 0xf2, - 0xd8, 0x4f, 0xb2, 0x06, 0x93, 0x94, 0x44, 0xef, 0x3a, 0xae, 0xd5, 0xa6, 0x79, 0x6f, 0x38, 0xcd, - 0x3f, 0xbe, 0xc5, 0xce, 0x4a, 0x81, 0xc0, 0x56, 0x3c, 0x54, 0xb9, 0x0c, 0xf4, 0x12, 0xbe, 0x8e, - 0xf5, 0x56, 0x0c, 0xc3, 0x1b, 0xdc, 0x10, 0x4f, 0xbf, 0xfc, 0x04, 0xcc, 0x90, 0xff, 0x69, 0x5a, - 0xf2, 0x5b, 0x12, 0x7f, 0x07, 0x53, 0xfc, 0xfe, 0x4b, 0xec, 0x38, 0x4e, 0x7b, 0x04, 0x3e, 0x9b, - 0x7c, 0xbb, 0xd8, 0xc4, 0xae, 0x8b, 0x6d, 0x47, 0xd5, 0x5a, 0x51, 0xe6, 0xf9, 0xde, 0x60, 0x8b, - 0x5f, 0x78, 0x27, 0xb8, 0x8b, 0x6b, 0x0c, 0x59, 0x69, 0xb5, 0xca, 0x7b, 0x70, 0x73, 0x44, 0x54, - 0x8c, 0xc0, 0xf9, 0x0a, 0xe7, 0x9c, 0xe9, 0x8b, 0x0c, 0x42, 0xbb, 0x03, 0x42, 0xee, 0xed, 0xe5, - 0x08, 0x9c, 0x5f, 0xe4, 0x9c, 0x88, 0x63, 0xc5, 0x96, 0x12, 0xc6, 0xc7, 0x61, 0xea, 0x1a, 0xb6, - 0xf7, 0x2d, 0x87, 0x5f, 0x1c, 0x8c, 0x40, 0xf7, 0x2a, 0xa7, 0x9b, 0xe4, 0x40, 0x7a, 0x8d, 0x40, - 0xb8, 0x1e, 0x86, 0x4c, 0x43, 0xd3, 0xf1, 0x08, 0x14, 0x5f, 0xe2, 0x14, 0xe3, 0x44, 0x9f, 0x40, - 0x2b, 0x90, 0x6f, 0x5a, 0xbc, 0x32, 0xc5, 0xc3, 0x5f, 0xe3, 0xf0, 0x9c, 0xc0, 0x70, 0x8a, 0x8e, - 0xd5, 0xe9, 0xb6, 0x48, 0xd9, 0x8a, 0xa7, 0xf8, 0x43, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x18, 0x6e, - 0xfd, 0xb2, 0xa0, 0x70, 0x7c, 0xfe, 0x7c, 0x0c, 0x72, 0x96, 0xd9, 0x3a, 0xb4, 0xcc, 0x51, 0x8c, - 0xf8, 0x0a, 0x67, 0x00, 0x0e, 0x21, 0x04, 0x97, 0x20, 0x3b, 0xea, 0x46, 0xfc, 0xd1, 0x3b, 0xe2, - 0x78, 0x88, 0x1d, 0x58, 0x83, 0x49, 0x91, 0xa0, 0x0c, 0xcb, 0x1c, 0x81, 0xe2, 0x8f, 0x39, 0x45, - 0xc1, 0x07, 0xe3, 0xcb, 0x70, 0xb1, 0xe3, 0x36, 0xf1, 0x28, 0x24, 0xaf, 0x8b, 0x65, 0x70, 0x08, - 0x77, 0xe5, 0x3e, 0x36, 0xf5, 0x83, 0xd1, 0x18, 0xbe, 0x26, 0x5c, 0x29, 0x30, 0x84, 0x62, 0x05, - 0x26, 0xda, 0x9a, 0xed, 0x1c, 0x68, 0xad, 0x91, 0xb6, 0xe3, 0x4f, 0x38, 0x47, 0xde, 0x03, 0x71, - 0x8f, 0x74, 0xcd, 0xe3, 0xd0, 0x7c, 0x5d, 0x78, 0xc4, 0x07, 0xe3, 0x47, 0xcf, 0x71, 0xe9, 0xdd, - 0xcc, 0x71, 0xd8, 0xfe, 0x54, 0x1c, 0x3d, 0x86, 0xdd, 0xf4, 0x33, 0x5e, 0x82, 0xac, 0x63, 0xbc, - 0x38, 0x12, 0xcd, 0x9f, 0x89, 0x9d, 0xa6, 0x00, 0x02, 0x7e, 0x1a, 0x6e, 0x89, 0x2c, 0x13, 0x23, - 0x90, 0xfd, 0x39, 0x27, 0x3b, 0x19, 0x51, 0x2a, 0x78, 0x4a, 0x38, 0x2e, 0xe5, 0x5f, 0x88, 0x94, - 0x80, 0x43, 0x5c, 0x3b, 0xa4, 0xb3, 0x77, 0xb4, 0xc6, 0xf1, 0xbc, 0xf6, 0x97, 0xc2, 0x6b, 0x0c, - 0x1b, 0xf0, 0xda, 0x2e, 0x9c, 0xe4, 0x8c, 0xc7, 0xdb, 0xd7, 0x6f, 0x88, 0xc4, 0xca, 0xd0, 0x7b, - 0xc1, 0xdd, 0xfd, 0x34, 0xcc, 0x7a, 0xee, 0x14, 0x4d, 0xa9, 0xa3, 0xb6, 0xb5, 0xce, 0x08, 0xcc, - 0xdf, 0xe4, 0xcc, 0x22, 0xe3, 0x7b, 0x5d, 0xad, 0xb3, 0xa9, 0x75, 0x08, 0xf9, 0x53, 0x50, 0x14, - 0xe4, 0x5d, 0xd3, 0xc6, 0xba, 0xd5, 0x34, 0x8d, 0x17, 0x71, 0x7d, 0x04, 0xea, 0xbf, 0x0a, 0x6d, - 0xd5, 0x9e, 0x0f, 0x4e, 0x98, 0xd7, 0x41, 0xf6, 0x7a, 0x15, 0xd5, 0x68, 0x77, 0x2c, 0xdb, 0x8d, - 0x61, 0xfc, 0x6b, 0xb1, 0x53, 0x1e, 0x6e, 0x9d, 0xc2, 0xca, 0x55, 0x28, 0xd0, 0xc7, 0x51, 0x43, - 0xf2, 0x6f, 0x38, 0xd1, 0x44, 0x0f, 0xc5, 0x13, 0x87, 0x6e, 0xb5, 0x3b, 0x9a, 0x3d, 0x4a, 0xfe, - 0xfb, 0x5b, 0x91, 0x38, 0x38, 0x84, 0x27, 0x0e, 0xf7, 0xb0, 0x83, 0x49, 0xb5, 0x1f, 0x81, 0xe1, - 0x5b, 0x22, 0x71, 0x08, 0x0c, 0xa7, 0x10, 0x0d, 0xc3, 0x08, 0x14, 0x7f, 0x27, 0x28, 0x04, 0x86, - 0x50, 0x7c, 0xaa, 0x57, 0x68, 0x6d, 0xdc, 0x34, 0x1c, 0xd7, 0x66, 0xad, 0xf0, 0x70, 0xaa, 0x6f, - 0xbf, 0x13, 0x6c, 0xc2, 0x14, 0x1f, 0xb4, 0xfc, 0x38, 0x4c, 0x86, 0x5a, 0x0c, 0x14, 0xf7, 0x8b, - 0x7e, 0xf1, 0xb3, 0xef, 0xf1, 0x64, 0x14, 0xec, 0x30, 0xca, 0x1b, 0x64, 0xdf, 0x83, 0x7d, 0x40, - 0x3c, 0xd9, 0x4b, 0xef, 0x79, 0x5b, 0x1f, 0x68, 0x03, 0xca, 0x97, 0x61, 0x22, 0xd0, 0x03, 0xc4, - 0x53, 0xfd, 0x0a, 0xa7, 0xca, 0xfb, 0x5b, 0x80, 0xf2, 0x79, 0x48, 0x91, 0x7a, 0x1e, 0x0f, 0xff, - 0x55, 0x0e, 0xa7, 0xea, 0xe5, 0x47, 0x20, 0x23, 0xea, 0x78, 0x3c, 0xf4, 0xd7, 0x38, 0xd4, 0x83, - 0x10, 0xb8, 0xa8, 0xe1, 0xf1, 0xf0, 0x5f, 0x17, 0x70, 0x01, 0x21, 0xf0, 0xd1, 0x5d, 0xf8, 0x9d, - 0xcf, 0xa7, 0x78, 0x1e, 0x16, 0xbe, 0xbb, 0x04, 0xe3, 0xbc, 0x78, 0xc7, 0xa3, 0x3f, 0xc7, 0x27, - 0x17, 0x88, 0xf2, 0x43, 0x90, 0x1e, 0xd1, 0xe1, 0xbf, 0xc1, 0xa1, 0x4c, 0xbf, 0xbc, 0x02, 0x39, - 0x5f, 0xc1, 0x8e, 0x87, 0xff, 0x26, 0x87, 0xfb, 0x51, 0xc4, 0x74, 0x5e, 0xb0, 0xe3, 0x09, 0x7e, - 0x4b, 0x98, 0xce, 0x11, 0xc4, 0x6d, 0xa2, 0x56, 0xc7, 0xa3, 0x7f, 0x5b, 0x78, 0x5d, 0x40, 0xca, - 0x8f, 0x41, 0xd6, 0xcb, 0xbf, 0xf1, 0xf8, 0xdf, 0xe1, 0xf8, 0x1e, 0x86, 0x78, 0xc0, 0x97, 0xff, - 0xe3, 0x29, 0x7e, 0x57, 0x78, 0xc0, 0x87, 0x22, 0xc7, 0x28, 0x5c, 0xd3, 0xe3, 0x99, 0x7e, 0x4f, - 0x1c, 0xa3, 0x50, 0x49, 0x27, 0xbb, 0x49, 0xd3, 0x60, 0x3c, 0xc5, 0xef, 0x8b, 0xdd, 0xa4, 0xfa, - 0xc4, 0x8c, 0x70, 0x91, 0x8c, 0xe7, 0xf8, 0x03, 0x61, 0x46, 0xa8, 0x46, 0x96, 0x77, 0x00, 0xf5, - 0x17, 0xc8, 0x78, 0xbe, 0x97, 0x39, 0xdf, 0x54, 0x5f, 0x7d, 0x2c, 0x3f, 0x09, 0x27, 0xa3, 0x8b, - 0x63, 0x3c, 0xeb, 0x17, 0xde, 0x0b, 0xbd, 0xce, 0xf8, 0x6b, 0x63, 0x79, 0xb7, 0x97, 0x65, 0xfd, - 0x85, 0x31, 0x9e, 0xf6, 0x95, 0xf7, 0x82, 0x89, 0xd6, 0x5f, 0x17, 0xcb, 0x15, 0x80, 0x5e, 0x4d, - 0x8a, 0xe7, 0x7a, 0x95, 0x73, 0xf9, 0x40, 0xe4, 0x68, 0xf0, 0x92, 0x14, 0x8f, 0xff, 0x92, 0x38, - 0x1a, 0x1c, 0x41, 0x8e, 0x86, 0xa8, 0x46, 0xf1, 0xe8, 0xd7, 0xc4, 0xd1, 0x10, 0x90, 0xf2, 0x25, - 0xc8, 0x98, 0xdd, 0x56, 0x8b, 0xc4, 0x16, 0x1a, 0xfe, 0x91, 0x4d, 0xf1, 0xdf, 0x3e, 0xe0, 0x60, - 0x01, 0x28, 0x9f, 0x87, 0x34, 0x6e, 0xef, 0xe3, 0x7a, 0x1c, 0xf2, 0xdf, 0x3f, 0x10, 0xf9, 0x84, - 0x68, 0x97, 0x1f, 0x03, 0x60, 0x2f, 0xd3, 0xf4, 0x37, 0x96, 0x18, 0xec, 0x7f, 0x7c, 0xc0, 0x7f, - 0xbf, 0xef, 0x41, 0x7a, 0x04, 0xec, 0x6b, 0x80, 0xe1, 0x04, 0xef, 0x04, 0x09, 0xe8, 0x0b, 0xf8, - 0xc3, 0x30, 0xfe, 0x9c, 0x63, 0x99, 0xae, 0xd6, 0x8c, 0x43, 0xff, 0x27, 0x47, 0x0b, 0x7d, 0xe2, - 0xb0, 0xb6, 0x65, 0x63, 0x57, 0x6b, 0x3a, 0x71, 0xd8, 0xff, 0xe2, 0x58, 0x0f, 0x40, 0xc0, 0xba, - 0xe6, 0xb8, 0xa3, 0xac, 0xfb, 0xbf, 0x05, 0x58, 0x00, 0x88, 0xd1, 0xe4, 0xff, 0xab, 0xf8, 0x30, - 0x0e, 0xfb, 0xae, 0x30, 0x9a, 0xeb, 0x97, 0x1f, 0x81, 0x2c, 0xf9, 0x97, 0x7d, 0xd3, 0x12, 0x03, - 0xfe, 0x1f, 0x0e, 0xee, 0x21, 0xc8, 0xcc, 0x8e, 0x5b, 0x77, 0x8d, 0x78, 0x67, 0xff, 0x2f, 0xdf, - 0x69, 0xa1, 0x5f, 0xae, 0x40, 0xce, 0x71, 0xeb, 0xf5, 0x2e, 0xef, 0x68, 0x62, 0xe0, 0x3f, 0xf9, - 0xc0, 0x7b, 0xc9, 0xf5, 0x30, 0xcb, 0x67, 0xa2, 0xef, 0xeb, 0x60, 0xcd, 0x5a, 0xb3, 0xd8, 0x4d, - 0x1d, 0xbc, 0x7f, 0x1f, 0xcc, 0xe9, 0x56, 0x7b, 0xdf, 0x72, 0x16, 0x59, 0x42, 0xd9, 0xb7, 0xdc, - 0x83, 0xc5, 0xb6, 0xd6, 0x71, 0xa8, 0xfa, 0x12, 0xbf, 0x6a, 0xcb, 0xf1, 0x27, 0x32, 0x30, 0x7b, - 0xbc, 0x6b, 0xba, 0xb9, 0x5b, 0x61, 0xe2, 0x72, 0xcb, 0xd2, 0x5c, 0xc3, 0x6c, 0xee, 0x58, 0x86, - 0xe9, 0xa2, 0x3c, 0x48, 0x0d, 0xfa, 0x0b, 0x8d, 0xa4, 0x48, 0x8d, 0xb9, 0x7f, 0x4a, 0x43, 0x96, - 0xdd, 0xf0, 0x6c, 0x6a, 0x1d, 0xf4, 0xcb, 0x90, 0xdf, 0xe2, 0x87, 0xe4, 0x81, 0xa5, 0x8b, 0x8e, - 0x77, 0xa3, 0xec, 0x9b, 0x7f, 0xc1, 0xd3, 0x5e, 0xf0, 0xab, 0xd2, 0x5f, 0x64, 0x97, 0xef, 0xff, - 0xe1, 0x9b, 0xa7, 0xee, 0x1d, 0x68, 0x1f, 0xa9, 0x8a, 0x8b, 0x2c, 0x9a, 0x17, 0xf6, 0x0c, 0xd3, - 0x7d, 0x60, 0xe9, 0xa2, 0x12, 0x98, 0x0f, 0x5d, 0x83, 0x0c, 0x1f, 0x70, 0xf8, 0x2f, 0x0d, 0xb7, - 0x0f, 0x98, 0x5b, 0xa8, 0xb1, 0x79, 0xcf, 0xbd, 0xf1, 0xe6, 0xa9, 0x13, 0xc7, 0x9e, 0xdb, 0x9b, - 0x0b, 0x7d, 0x06, 0x72, 0xc2, 0x8e, 0xf5, 0xba, 0xc3, 0xbf, 0xb5, 0xbd, 0x2b, 0x66, 0xd9, 0xeb, - 0x75, 0x3e, 0xfb, 0x9d, 0x3f, 0x7c, 0xf3, 0xd4, 0xdc, 0xd0, 0x99, 0x17, 0xf6, 0xba, 0x46, 0x5d, - 0xf1, 0xcf, 0x81, 0x9e, 0x85, 0x24, 0x99, 0x8a, 0x7d, 0x95, 0x7b, 0x6a, 0xc0, 0x54, 0xde, 0x14, - 0x67, 0xf9, 0x02, 0x47, 0x99, 0x86, 0xf0, 0xce, 0x3e, 0x06, 0x53, 0x7d, 0xdb, 0x83, 0x64, 0x48, - 0x5e, 0xc5, 0x87, 0xfc, 0x43, 0x1c, 0xf2, 0x2f, 0x9a, 0xe9, 0x7d, 0x68, 0x26, 0xcd, 0xe7, 0xf9, - 0xd7, 0x63, 0xe5, 0xc4, 0x45, 0x69, 0xf6, 0x12, 0x4c, 0x04, 0x7c, 0x7c, 0x2c, 0xf0, 0xa3, 0x20, - 0x87, 0xbd, 0x74, 0x2c, 0xfc, 0x05, 0xc8, 0x7c, 0x18, 0xdc, 0xdc, 0x0f, 0x10, 0x8c, 0x57, 0x5a, - 0xad, 0x4d, 0xad, 0xe3, 0xa0, 0xa7, 0x61, 0x8a, 0xf5, 0xee, 0xbb, 0xd6, 0x2a, 0xfd, 0x6d, 0x67, - 0x53, 0xeb, 0xf0, 0x80, 0xbe, 0x27, 0xe0, 0x6e, 0x0e, 0x58, 0xe8, 0xd3, 0xa6, 0xf3, 0x2b, 0xfd, - 0x2c, 0xe8, 0x09, 0x90, 0x85, 0x90, 0x9e, 0x2d, 0xc2, 0xcc, 0xc2, 0xf5, 0xec, 0x50, 0x66, 0xa1, - 0xcc, 0x88, 0xfb, 0x38, 0xd0, 0xa3, 0x90, 0x59, 0x37, 0xdd, 0x07, 0x97, 0x08, 0x1f, 0x8b, 0xc1, - 0xb9, 0x48, 0x3e, 0xa1, 0xc4, 0x78, 0x3c, 0x0c, 0xc7, 0x5f, 0x38, 0x47, 0xf0, 0xa9, 0xe1, 0x78, - 0xaa, 0xd4, 0xc3, 0xd3, 0x47, 0x54, 0x81, 0x2c, 0xd9, 0x73, 0x66, 0x00, 0xfb, 0xcc, 0xfb, 0xb6, - 0x48, 0x02, 0x4f, 0x8b, 0x31, 0xf4, 0x50, 0x82, 0x82, 0xd9, 0x30, 0x16, 0x43, 0xe1, 0x33, 0xa2, - 0x87, 0x22, 0x14, 0x35, 0xcf, 0x8a, 0xf1, 0x21, 0x14, 0xb5, 0x90, 0x15, 0x35, 0xbf, 0x15, 0x35, - 0xcf, 0x8a, 0x4c, 0x0c, 0x85, 0xdf, 0x0a, 0xef, 0x19, 0xad, 0x02, 0x5c, 0x36, 0x5e, 0xc0, 0x75, - 0x66, 0x46, 0x36, 0x22, 0x19, 0x09, 0x8e, 0x9e, 0x1a, 0x23, 0xf1, 0xe1, 0xd0, 0x1a, 0xe4, 0x6a, - 0x8d, 0x1e, 0x0d, 0xf0, 0xaf, 0xdc, 0x23, 0x4d, 0x69, 0x84, 0x78, 0xfc, 0x48, 0xcf, 0x1c, 0xb6, - 0xa4, 0x5c, 0x9c, 0x39, 0xbe, 0x35, 0xf9, 0x70, 0x3d, 0x73, 0x18, 0x4d, 0x3e, 0xd6, 0x1c, 0x1f, - 0x8f, 0x1f, 0x89, 0x2e, 0xc1, 0xf8, 0xb2, 0x65, 0x11, 0xcd, 0xe2, 0x04, 0x25, 0x39, 0x13, 0x49, - 0xc2, 0x75, 0x18, 0x81, 0x40, 0xd0, 0xdd, 0xa1, 0xa1, 0x4f, 0xe0, 0x85, 0x61, 0xbb, 0x23, 0xb4, - 0xc4, 0xee, 0x88, 0x67, 0xff, 0x09, 0x5c, 0x3e, 0x74, 0x31, 0xe9, 0x93, 0x8b, 0x93, 0x23, 0x9c, - 0x40, 0xa1, 0x1c, 0x3a, 0x81, 0x42, 0x8c, 0x6a, 0x30, 0x29, 0x64, 0x55, 0xb3, 0x4b, 0x72, 0x70, - 0x51, 0xe6, 0x9f, 0xe0, 0x0e, 0xa3, 0xe5, 0xba, 0x8c, 0x35, 0xcc, 0x80, 0x76, 0xa0, 0x20, 0x44, - 0x9b, 0x0e, 0x5d, 0xf4, 0x54, 0x44, 0x5d, 0x0d, 0x73, 0x32, 0x55, 0x46, 0x19, 0xc2, 0xcf, 0xae, - 0xc2, 0xc9, 0xe8, 0x6c, 0x15, 0x97, 0x2d, 0x25, 0x7f, 0x96, 0x5d, 0x81, 0x9b, 0x22, 0x33, 0x53, - 0x1c, 0x49, 0x22, 0x54, 0x27, 0x02, 0xe9, 0xc8, 0x0f, 0x4e, 0x47, 0x80, 0xd3, 0xfd, 0xe0, 0x5e, - 0x90, 0xf9, 0xc1, 0xc9, 0x08, 0x70, 0xd2, 0x0f, 0xfe, 0x04, 0x14, 0x82, 0x79, 0xc8, 0x8f, 0x9e, - 0x88, 0x40, 0x4f, 0x44, 0xa0, 0xa3, 0xe7, 0x4e, 0x45, 0xa0, 0x53, 0x21, 0x74, 0x6d, 0xe0, 0xdc, - 0x53, 0x11, 0xe8, 0xa9, 0x08, 0x74, 0xf4, 0xdc, 0x28, 0x02, 0x8d, 0xfc, 0xe8, 0x47, 0x60, 0x32, - 0x94, 0x72, 0xfc, 0xf0, 0xf1, 0x08, 0xf8, 0x78, 0xa8, 0x36, 0x87, 0x53, 0x8d, 0x1f, 0x3f, 0x19, - 0x81, 0x9f, 0x8c, 0x9a, 0x3e, 0xda, 0xfa, 0xb1, 0x08, 0xf8, 0x58, 0xe4, 0xf4, 0xd1, 0x78, 0x39, - 0x02, 0x2f, 0xfb, 0xf1, 0x65, 0xc8, 0xfb, 0xb3, 0x8a, 0x1f, 0x9b, 0x89, 0xc0, 0x66, 0xc2, 0x7e, - 0x0f, 0xa4, 0x94, 0xb8, 0x48, 0xcf, 0x0e, 0x38, 0x2e, 0x81, 0x34, 0x72, 0xac, 0xce, 0xe6, 0x29, - 0x98, 0x89, 0x4a, 0x1a, 0x11, 0x1c, 0x67, 0xfd, 0x1c, 0x85, 0xa5, 0x99, 0x40, 0xb2, 0xa0, 0xb8, - 0x6e, 0xdb, 0xcf, 0xfc, 0x2c, 0x4c, 0x47, 0xa4, 0x8e, 0x08, 0xe2, 0xfb, 0xfd, 0xc4, 0xb9, 0xa5, - 0xd9, 0x00, 0x71, 0xe0, 0x5d, 0xc1, 0xdf, 0x5a, 0xfd, 0x68, 0x1a, 0x0a, 0x3c, 0x45, 0x6d, 0xdb, - 0x75, 0x6c, 0xe3, 0x3a, 0xfa, 0xa5, 0xc1, 0x1d, 0xd6, 0x52, 0x54, 0x6a, 0xe3, 0xb8, 0x63, 0x34, - 0x5a, 0xcf, 0x0e, 0x6c, 0xb4, 0x1e, 0x18, 0x65, 0x82, 0xb8, 0x7e, 0xab, 0xda, 0xd7, 0x6f, 0xdd, - 0x3d, 0x8c, 0x76, 0x50, 0xdb, 0x55, 0xed, 0x6b, 0xbb, 0xe2, 0x68, 0x22, 0xbb, 0xaf, 0x2b, 0xfd, - 0xdd, 0xd7, 0xd9, 0x61, 0x3c, 0x83, 0x9b, 0xb0, 0x2b, 0xfd, 0x4d, 0x58, 0x2c, 0x53, 0x74, 0x2f, - 0x76, 0xa5, 0xbf, 0x17, 0x1b, 0xca, 0x34, 0xb8, 0x25, 0xbb, 0xd2, 0xdf, 0x92, 0xc5, 0x32, 0x45, - 0x77, 0x66, 0x9f, 0x8c, 0xe8, 0xcc, 0xee, 0x19, 0x46, 0x35, 0xac, 0x41, 0xdb, 0x8a, 0x6a, 0xd0, - 0xee, 0x1d, 0x6a, 0xd8, 0xd0, 0x3e, 0xed, 0x93, 0x11, 0x7d, 0x5a, 0xbc, 0x71, 0x03, 0xda, 0xb5, - 0xad, 0xa8, 0x76, 0x6d, 0x04, 0xe3, 0x06, 0x75, 0x6d, 0xcb, 0xe1, 0xae, 0x6d, 0x7e, 0x18, 0x57, - 0x74, 0xf3, 0x76, 0xa5, 0xbf, 0x79, 0x3b, 0x1b, 0x7f, 0x16, 0xa3, 0x7a, 0xb8, 0x67, 0x07, 0xf6, - 0x70, 0x23, 0x1d, 0xee, 0xb8, 0x56, 0xee, 0x99, 0x41, 0xad, 0xdc, 0xfd, 0xa3, 0xb0, 0x0f, 0xef, - 0xe8, 0x9e, 0x1c, 0xd0, 0xd1, 0x2d, 0x8e, 0x42, 0xfd, 0x51, 0x63, 0xf7, 0x51, 0x63, 0xf7, 0x51, - 0x63, 0xf7, 0x51, 0x63, 0xf7, 0x8b, 0xd1, 0xd8, 0x95, 0x53, 0x2f, 0x7f, 0xe5, 0x94, 0x74, 0xf6, - 0x0c, 0x8c, 0xf3, 0xa9, 0xd1, 0x18, 0x24, 0x36, 0x2b, 0xf2, 0x09, 0xfa, 0x77, 0x59, 0x96, 0xe8, - 0xdf, 0x15, 0x39, 0xb1, 0xbc, 0xf1, 0xc6, 0x8d, 0xd2, 0x89, 0xef, 0xdd, 0x28, 0x9d, 0xf8, 0xc1, - 0x8d, 0xd2, 0x89, 0x1f, 0xdf, 0x28, 0x49, 0x6f, 0xdf, 0x28, 0x49, 0xef, 0xde, 0x28, 0x49, 0xef, - 0xdf, 0x28, 0x49, 0xd7, 0x8f, 0x4a, 0xd2, 0xd7, 0x8e, 0x4a, 0xd2, 0x37, 0x8e, 0x4a, 0xd2, 0xb7, - 0x8f, 0x4a, 0xd2, 0x77, 0x8e, 0x4a, 0xd2, 0x1b, 0x47, 0xa5, 0x13, 0xdf, 0x3b, 0x2a, 0x9d, 0xf8, - 0xf1, 0x51, 0x49, 0x7a, 0xfb, 0xa8, 0x74, 0xe2, 0xdd, 0xa3, 0x92, 0xf4, 0xfe, 0x51, 0x49, 0xba, - 0xfe, 0x2f, 0x25, 0xe9, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8f, 0xa3, 0x46, 0xb1, 0x75, 0x44, + 0x75, 0xd6, 0xf0, 0x21, 0x91, 0x87, 0x14, 0x35, 0xba, 0x92, 0xd7, 0xb4, 0x12, 0x6b, 0x77, 0xe5, + 0x97, 0xbc, 0xb6, 0x25, 0x5b, 0xde, 0x5d, 0xaf, 0xb9, 0xb1, 0x0d, 0x4a, 0xe2, 0x6a, 0x65, 0xeb, + 0x95, 0xa1, 0x64, 0xaf, 0x5d, 0x18, 0xd3, 0xd1, 0xf0, 0x92, 0x1a, 0x2f, 0x39, 0x43, 0xcf, 0x0c, + 0xd7, 0x96, 0x7f, 0x14, 0x5b, 0xb8, 0x0f, 0x04, 0x45, 0xdf, 0x05, 0xea, 0xb8, 0x8e, 0xdb, 0x04, + 0x68, 0x9d, 0x26, 0x7d, 0x24, 0x7d, 0xa4, 0x41, 0x7f, 0xe5, 0x4f, 0x5a, 0x03, 0x05, 0x8a, 0xe4, + 0x5f, 0x10, 0x04, 0x86, 0x57, 0x31, 0x50, 0xb7, 0x75, 0x5b, 0xb7, 0x31, 0x50, 0x03, 0xfe, 0x53, + 0xdc, 0xd7, 0x70, 0x66, 0x38, 0xe4, 0x50, 0x06, 0x9c, 0xf4, 0x87, 0x7f, 0x49, 0x73, 0xee, 0xf9, + 0xbe, 0x7b, 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xe6, 0x72, 0xe0, 0xc7, 0xe7, 0xe0, 0x54, 0xc3, 0xb2, + 0x1a, 0x4d, 0xbc, 0xd8, 0xb6, 0x2d, 0xd7, 0xda, 0xef, 0xd4, 0x17, 0x6b, 0xd8, 0xd1, 0x6d, 0xa3, + 0xed, 0x5a, 0xf6, 0x02, 0x95, 0xa1, 0x09, 0xa6, 0xb1, 0x20, 0x34, 0xe6, 0x36, 0x61, 0xf2, 0x92, + 0xd1, 0xc4, 0xab, 0x9e, 0x62, 0x15, 0xbb, 0xe8, 0x02, 0xa4, 0xea, 0x46, 0x13, 0x17, 0xa5, 0x53, + 0xc9, 0xf9, 0xdc, 0xd2, 0xed, 0x0b, 0x21, 0xd0, 0x42, 0x10, 0xb1, 0x43, 0xc4, 0x0a, 0x45, 0xcc, + 0xbd, 0x93, 0x82, 0xa9, 0x88, 0x51, 0x84, 0x20, 0x65, 0x6a, 0x2d, 0xc2, 0x28, 0xcd, 0x67, 0x15, + 0xfa, 0x3f, 0x2a, 0xc2, 0x58, 0x5b, 0xd3, 0xaf, 0x6a, 0x0d, 0x5c, 0x4c, 0x50, 0xb1, 0x78, 0x44, + 0xb3, 0x00, 0x35, 0xdc, 0xc6, 0x66, 0x0d, 0x9b, 0xfa, 0x61, 0x31, 0x79, 0x2a, 0x39, 0x9f, 0x55, + 0x7c, 0x12, 0x74, 0x0f, 0x4c, 0xb6, 0x3b, 0xfb, 0x4d, 0x43, 0x57, 0x7d, 0x6a, 0x70, 0x2a, 0x39, + 0x9f, 0x56, 0x64, 0x36, 0xb0, 0xda, 0x55, 0xbe, 0x0b, 0x26, 0x5e, 0xc0, 0xda, 0x55, 0xbf, 0x6a, + 0x8e, 0xaa, 0x16, 0x88, 0xd8, 0xa7, 0xb8, 0x02, 0xf9, 0x16, 0x76, 0x1c, 0xad, 0x81, 0x55, 0xf7, + 0xb0, 0x8d, 0x8b, 0x29, 0xba, 0xfa, 0x53, 0x3d, 0xab, 0x0f, 0xaf, 0x3c, 0xc7, 0x51, 0xbb, 0x87, + 0x6d, 0x8c, 0xca, 0x90, 0xc5, 0x66, 0xa7, 0xc5, 0x18, 0xd2, 0x7d, 0xfc, 0x57, 0x31, 0x3b, 0xad, + 0x30, 0x4b, 0x86, 0xc0, 0x38, 0xc5, 0x98, 0x83, 0xed, 0x6b, 0x86, 0x8e, 0x8b, 0xa3, 0x94, 0xe0, + 0xae, 0x1e, 0x82, 0x2a, 0x1b, 0x0f, 0x73, 0x08, 0x1c, 0x5a, 0x81, 0x2c, 0x7e, 0xd1, 0xc5, 0xa6, + 0x63, 0x58, 0x66, 0x71, 0x8c, 0x92, 0xdc, 0x11, 0xb1, 0x8b, 0xb8, 0x59, 0x0b, 0x53, 0x74, 0x71, + 0xe8, 0x3c, 0x8c, 0x59, 0x6d, 0xd7, 0xb0, 0x4c, 0xa7, 0x98, 0x39, 0x25, 0xcd, 0xe7, 0x96, 0x3e, + 0x1b, 0x19, 0x08, 0xdb, 0x4c, 0x47, 0x11, 0xca, 0x68, 0x1d, 0x64, 0xc7, 0xea, 0xd8, 0x3a, 0x56, + 0x75, 0xab, 0x86, 0x55, 0xc3, 0xac, 0x5b, 0xc5, 0x2c, 0x25, 0x38, 0xd9, 0xbb, 0x10, 0xaa, 0xb8, + 0x62, 0xd5, 0xf0, 0xba, 0x59, 0xb7, 0x94, 0x82, 0x13, 0x78, 0x46, 0x27, 0x60, 0xd4, 0x39, 0x34, + 0x5d, 0xed, 0xc5, 0x62, 0x9e, 0x46, 0x08, 0x7f, 0x9a, 0xfb, 0xdf, 0x34, 0x4c, 0x0c, 0x13, 0x62, + 0x17, 0x21, 0x5d, 0x27, 0xab, 0x2c, 0x26, 0x8e, 0xe3, 0x03, 0x86, 0x09, 0x3a, 0x71, 0xf4, 0x63, + 0x3a, 0xb1, 0x0c, 0x39, 0x13, 0x3b, 0x2e, 0xae, 0xb1, 0x88, 0x48, 0x0e, 0x19, 0x53, 0xc0, 0x40, + 0xbd, 0x21, 0x95, 0xfa, 0x58, 0x21, 0x75, 0x05, 0x26, 0x3c, 0x93, 0x54, 0x5b, 0x33, 0x1b, 0x22, + 0x36, 0x17, 0xe3, 0x2c, 0x59, 0xa8, 0x08, 0x9c, 0x42, 0x60, 0x4a, 0x01, 0x07, 0x9e, 0xd1, 0x2a, + 0x80, 0x65, 0x62, 0xab, 0xae, 0xd6, 0xb0, 0xde, 0x2c, 0x66, 0xfa, 0x78, 0x69, 0x9b, 0xa8, 0xf4, + 0x78, 0xc9, 0x62, 0x52, 0xbd, 0x89, 0x1e, 0xee, 0x86, 0xda, 0x58, 0x9f, 0x48, 0xd9, 0x64, 0x87, + 0xac, 0x27, 0xda, 0xf6, 0xa0, 0x60, 0x63, 0x12, 0xf7, 0xb8, 0xc6, 0x57, 0x96, 0xa5, 0x46, 0x2c, + 0xc4, 0xae, 0x4c, 0xe1, 0x30, 0xb6, 0xb0, 0x71, 0xdb, 0xff, 0x88, 0x6e, 0x03, 0x4f, 0xa0, 0xd2, + 0xb0, 0x02, 0x9a, 0x85, 0xf2, 0x42, 0xb8, 0xa5, 0xb5, 0xf0, 0xcc, 0x05, 0x28, 0x04, 0xdd, 0x83, + 0xa6, 0x21, 0xed, 0xb8, 0x9a, 0xed, 0xd2, 0x28, 0x4c, 0x2b, 0xec, 0x01, 0xc9, 0x90, 0xc4, 0x66, + 0x8d, 0x66, 0xb9, 0xb4, 0x42, 0xfe, 0x9d, 0x79, 0x08, 0xc6, 0x03, 0xd3, 0x0f, 0x0b, 0x9c, 0x7b, + 0x65, 0x14, 0xa6, 0xa3, 0x62, 0x2e, 0x32, 0xfc, 0x4f, 0xc0, 0xa8, 0xd9, 0x69, 0xed, 0x63, 0xbb, + 0x98, 0xa4, 0x0c, 0xfc, 0x09, 0x95, 0x21, 0xdd, 0xd4, 0xf6, 0x71, 0xb3, 0x98, 0x3a, 0x25, 0xcd, + 0x17, 0x96, 0xee, 0x19, 0x2a, 0xaa, 0x17, 0x36, 0x08, 0x44, 0x61, 0x48, 0xf4, 0x28, 0xa4, 0x78, + 0x8a, 0x23, 0x0c, 0x67, 0x86, 0x63, 0x20, 0xb1, 0xa8, 0x50, 0x1c, 0xfa, 0x0c, 0x64, 0xc9, 0x5f, + 0xe6, 0xdb, 0x51, 0x6a, 0x73, 0x86, 0x08, 0x88, 0x5f, 0xd1, 0x0c, 0x64, 0x68, 0x98, 0xd5, 0xb0, + 0x28, 0x0d, 0xde, 0x33, 0xd9, 0x98, 0x1a, 0xae, 0x6b, 0x9d, 0xa6, 0xab, 0x5e, 0xd3, 0x9a, 0x1d, + 0x4c, 0x03, 0x26, 0xab, 0xe4, 0xb9, 0xf0, 0x49, 0x22, 0x43, 0x27, 0x21, 0xc7, 0xa2, 0xd2, 0x30, + 0x6b, 0xf8, 0x45, 0x9a, 0x7d, 0xd2, 0x0a, 0x0b, 0xd4, 0x75, 0x22, 0x21, 0xd3, 0x3f, 0xe7, 0x58, + 0xa6, 0xd8, 0x5a, 0x3a, 0x05, 0x11, 0xd0, 0xe9, 0x1f, 0x0a, 0x27, 0xbe, 0x5b, 0xa3, 0x97, 0x17, + 0x8e, 0xc5, 0xb9, 0x6f, 0x25, 0x20, 0x45, 0xcf, 0xdb, 0x04, 0xe4, 0x76, 0x9f, 0xde, 0xa9, 0xa8, + 0xab, 0xdb, 0x7b, 0xcb, 0x1b, 0x15, 0x59, 0x42, 0x05, 0x00, 0x2a, 0xb8, 0xb4, 0xb1, 0x5d, 0xde, + 0x95, 0x13, 0xde, 0xf3, 0xfa, 0xd6, 0xee, 0xf9, 0xb3, 0x72, 0xd2, 0x03, 0xec, 0x31, 0x41, 0xca, + 0xaf, 0xf0, 0xe0, 0x92, 0x9c, 0x46, 0x32, 0xe4, 0x19, 0xc1, 0xfa, 0x95, 0xca, 0xea, 0xf9, 0xb3, + 0xf2, 0x68, 0x50, 0xf2, 0xe0, 0x92, 0x3c, 0x86, 0xc6, 0x21, 0x4b, 0x25, 0xcb, 0xdb, 0xdb, 0x1b, + 0x72, 0xc6, 0xe3, 0xac, 0xee, 0x2a, 0xeb, 0x5b, 0x6b, 0x72, 0xd6, 0xe3, 0x5c, 0x53, 0xb6, 0xf7, + 0x76, 0x64, 0xf0, 0x18, 0x36, 0x2b, 0xd5, 0x6a, 0x79, 0xad, 0x22, 0xe7, 0x3c, 0x8d, 0xe5, 0xa7, + 0x77, 0x2b, 0x55, 0x39, 0x1f, 0x30, 0xeb, 0xc1, 0x25, 0x79, 0xdc, 0x9b, 0xa2, 0xb2, 0xb5, 0xb7, + 0x29, 0x17, 0xd0, 0x24, 0x8c, 0xb3, 0x29, 0x84, 0x11, 0x13, 0x21, 0xd1, 0xf9, 0xb3, 0xb2, 0xdc, + 0x35, 0x84, 0xb1, 0x4c, 0x06, 0x04, 0xe7, 0xcf, 0xca, 0x68, 0x6e, 0x05, 0xd2, 0x34, 0xba, 0x10, + 0x82, 0xc2, 0x46, 0x79, 0xb9, 0xb2, 0xa1, 0x6e, 0xef, 0xec, 0xae, 0x6f, 0x6f, 0x95, 0x37, 0x64, + 0xa9, 0x2b, 0x53, 0x2a, 0x9f, 0xdf, 0x5b, 0x57, 0x2a, 0xab, 0x72, 0xc2, 0x2f, 0xdb, 0xa9, 0x94, + 0x77, 0x2b, 0xab, 0x72, 0x72, 0x4e, 0x87, 0xe9, 0xa8, 0x3c, 0x13, 0x79, 0x32, 0x7c, 0x5b, 0x9c, + 0xe8, 0xb3, 0xc5, 0x94, 0xab, 0x67, 0x8b, 0xbf, 0x22, 0xc1, 0x54, 0x44, 0xae, 0x8d, 0x9c, 0xe4, + 0x31, 0x48, 0xb3, 0x10, 0x65, 0xd5, 0xe7, 0xee, 0xc8, 0xa4, 0x4d, 0x03, 0xb6, 0xa7, 0x02, 0x51, + 0x9c, 0xbf, 0x02, 0x27, 0xfb, 0x54, 0x60, 0x42, 0xd1, 0x63, 0xe4, 0xcb, 0x12, 0x14, 0xfb, 0x71, + 0xc7, 0x24, 0x8a, 0x44, 0x20, 0x51, 0x5c, 0x0c, 0x1b, 0x70, 0xba, 0xff, 0x1a, 0x7a, 0xac, 0x78, + 0x43, 0x82, 0x13, 0xd1, 0x8d, 0x4a, 0xa4, 0x0d, 0x8f, 0xc2, 0x68, 0x0b, 0xbb, 0x07, 0x96, 0x28, + 0xd6, 0x77, 0x46, 0x94, 0x00, 0x32, 0x1c, 0xf6, 0x15, 0x47, 0xf9, 0x6b, 0x48, 0xb2, 0x5f, 0xb7, + 0xc1, 0xac, 0xe9, 0xb1, 0xf4, 0x0b, 0x09, 0xb8, 0x29, 0x92, 0x3c, 0xd2, 0xd0, 0x5b, 0x01, 0x0c, + 0xb3, 0xdd, 0x71, 0x59, 0x41, 0x66, 0xf9, 0x29, 0x4b, 0x25, 0xf4, 0xec, 0x93, 0xdc, 0xd3, 0x71, + 0xbd, 0xf1, 0x24, 0x1d, 0x07, 0x26, 0xa2, 0x0a, 0x17, 0xba, 0x86, 0xa6, 0xa8, 0xa1, 0xb3, 0x7d, + 0x56, 0xda, 0x53, 0xeb, 0xee, 0x07, 0x59, 0x6f, 0x1a, 0xd8, 0x74, 0x55, 0xc7, 0xb5, 0xb1, 0xd6, + 0x32, 0xcc, 0x06, 0x4d, 0xc0, 0x99, 0x52, 0xba, 0xae, 0x35, 0x1d, 0xac, 0x4c, 0xb0, 0xe1, 0xaa, + 0x18, 0x25, 0x08, 0x5a, 0x65, 0x6c, 0x1f, 0x62, 0x34, 0x80, 0x60, 0xc3, 0x1e, 0x62, 0xee, 0xeb, + 0x63, 0x90, 0xf3, 0xb5, 0x75, 0xe8, 0x34, 0xe4, 0x9f, 0xd3, 0xae, 0x69, 0xaa, 0x68, 0xd5, 0x99, + 0x27, 0x72, 0x44, 0xb6, 0xc3, 0xdb, 0xf5, 0xfb, 0x61, 0x9a, 0xaa, 0x58, 0x1d, 0x17, 0xdb, 0xaa, + 0xde, 0xd4, 0x1c, 0x87, 0x3a, 0x2d, 0x43, 0x55, 0x11, 0x19, 0xdb, 0x26, 0x43, 0x2b, 0x62, 0x04, + 0x9d, 0x83, 0x29, 0x8a, 0x68, 0x75, 0x9a, 0xae, 0xd1, 0x6e, 0x62, 0x95, 0xbc, 0x3c, 0x38, 0x34, + 0x11, 0x7b, 0x96, 0x4d, 0x12, 0x8d, 0x4d, 0xae, 0x40, 0x2c, 0x72, 0xd0, 0x2a, 0xdc, 0x4a, 0x61, + 0x0d, 0x6c, 0x62, 0x5b, 0x73, 0xb1, 0x8a, 0x9f, 0xef, 0x68, 0x4d, 0x47, 0xd5, 0xcc, 0x9a, 0x7a, + 0xa0, 0x39, 0x07, 0xc5, 0x69, 0x42, 0xb0, 0x9c, 0x28, 0x4a, 0xca, 0x2d, 0x44, 0x71, 0x8d, 0xeb, + 0x55, 0xa8, 0x5a, 0xd9, 0xac, 0x5d, 0xd6, 0x9c, 0x03, 0x54, 0x82, 0x13, 0x94, 0xc5, 0x71, 0x6d, + 0xc3, 0x6c, 0xa8, 0xfa, 0x01, 0xd6, 0xaf, 0xaa, 0x1d, 0xb7, 0x7e, 0xa1, 0xf8, 0x19, 0xff, 0xfc, + 0xd4, 0xc2, 0x2a, 0xd5, 0x59, 0x21, 0x2a, 0x7b, 0x6e, 0xfd, 0x02, 0xaa, 0x42, 0x9e, 0x6c, 0x46, + 0xcb, 0x78, 0x09, 0xab, 0x75, 0xcb, 0xa6, 0x95, 0xa5, 0x10, 0x71, 0xb2, 0x7d, 0x1e, 0x5c, 0xd8, + 0xe6, 0x80, 0x4d, 0xab, 0x86, 0x4b, 0xe9, 0xea, 0x4e, 0xa5, 0xb2, 0xaa, 0xe4, 0x04, 0xcb, 0x25, + 0xcb, 0x26, 0x01, 0xd5, 0xb0, 0x3c, 0x07, 0xe7, 0x58, 0x40, 0x35, 0x2c, 0xe1, 0xde, 0x73, 0x30, + 0xa5, 0xeb, 0x6c, 0xcd, 0x86, 0xae, 0xf2, 0x16, 0xdf, 0x29, 0xca, 0x01, 0x67, 0xe9, 0xfa, 0x1a, + 0x53, 0xe0, 0x31, 0xee, 0xa0, 0x87, 0xe1, 0xa6, 0xae, 0xb3, 0xfc, 0xc0, 0xc9, 0x9e, 0x55, 0x86, + 0xa1, 0xe7, 0x60, 0xaa, 0x7d, 0xd8, 0x0b, 0x44, 0x81, 0x19, 0xdb, 0x87, 0x61, 0xd8, 0x1d, 0xf4, + 0xb5, 0xcd, 0xc6, 0xba, 0xe6, 0xe2, 0x5a, 0xf1, 0x66, 0xbf, 0xb6, 0x6f, 0x00, 0x2d, 0x82, 0xac, + 0xeb, 0x2a, 0x36, 0xb5, 0xfd, 0x26, 0x56, 0x35, 0x1b, 0x9b, 0x9a, 0x53, 0x3c, 0xe9, 0x57, 0x2e, + 0xe8, 0x7a, 0x85, 0x8e, 0x96, 0xe9, 0x20, 0x3a, 0x03, 0x93, 0xd6, 0xfe, 0x73, 0x3a, 0x8b, 0x2c, + 0xb5, 0x6d, 0xe3, 0xba, 0xf1, 0x62, 0xf1, 0x76, 0xea, 0xa6, 0x09, 0x32, 0x40, 0xe3, 0x6a, 0x87, + 0x8a, 0xd1, 0xdd, 0x20, 0xeb, 0xce, 0x81, 0x66, 0xb7, 0x69, 0x69, 0x77, 0xda, 0x9a, 0x8e, 0x8b, + 0x77, 0x30, 0x55, 0x26, 0xdf, 0x12, 0x62, 0x12, 0xd9, 0xce, 0x0b, 0x46, 0xdd, 0x15, 0x8c, 0x77, + 0xb1, 0xc8, 0xa6, 0x32, 0xce, 0x76, 0x05, 0xa6, 0x3b, 0xa6, 0x61, 0xba, 0xd8, 0x6e, 0xdb, 0x98, + 0x34, 0xf1, 0xec, 0x24, 0x16, 0xff, 0x65, 0xac, 0x4f, 0x1b, 0xbe, 0xe7, 0xd7, 0x66, 0x01, 0xa0, + 0x4c, 0x75, 0x7a, 0x85, 0x73, 0x25, 0xc8, 0xfb, 0xe3, 0x02, 0x65, 0x81, 0x45, 0x86, 0x2c, 0x91, + 0x1a, 0xbb, 0xb2, 0xbd, 0x4a, 0xaa, 0xe3, 0x33, 0x15, 0x39, 0x41, 0xaa, 0xf4, 0xc6, 0xfa, 0x6e, + 0x45, 0x55, 0xf6, 0xb6, 0x76, 0xd7, 0x37, 0x2b, 0x72, 0xf2, 0x4c, 0x36, 0xf3, 0xee, 0x98, 0x7c, + 0xfd, 0xfa, 0xf5, 0xeb, 0x89, 0xb9, 0xef, 0x26, 0xa0, 0x10, 0xec, 0x8c, 0xd1, 0xe7, 0xe0, 0x66, + 0xf1, 0x1a, 0xeb, 0x60, 0x57, 0x7d, 0xc1, 0xb0, 0x69, 0xa8, 0xb6, 0x34, 0xd6, 0x5b, 0x7a, 0x5e, + 0x9e, 0xe6, 0x5a, 0x55, 0xec, 0x3e, 0x65, 0xd8, 0x24, 0x10, 0x5b, 0x9a, 0x8b, 0x36, 0xe0, 0xa4, + 0x69, 0xa9, 0x8e, 0xab, 0x99, 0x35, 0xcd, 0xae, 0xa9, 0xdd, 0x0b, 0x04, 0x55, 0xd3, 0x75, 0xec, + 0x38, 0x16, 0x2b, 0x11, 0x1e, 0xcb, 0x67, 0x4d, 0xab, 0xca, 0x95, 0xbb, 0xb9, 0xb3, 0xcc, 0x55, + 0x43, 0x11, 0x91, 0xec, 0x17, 0x11, 0x9f, 0x81, 0x6c, 0x4b, 0x6b, 0xab, 0xd8, 0x74, 0xed, 0x43, + 0xda, 0xcf, 0x65, 0x94, 0x4c, 0x4b, 0x6b, 0x57, 0xc8, 0xf3, 0x27, 0xb7, 0x07, 0x7e, 0x3f, 0xfe, + 0x28, 0x09, 0x79, 0x7f, 0x4f, 0x47, 0x5a, 0x64, 0x9d, 0xe6, 0x6f, 0x89, 0x9e, 0xf0, 0xdb, 0x06, + 0x76, 0x80, 0x0b, 0x2b, 0x24, 0xb1, 0x97, 0x46, 0x59, 0xa7, 0xa5, 0x30, 0x24, 0x29, 0xaa, 0xe4, + 0x4c, 0x63, 0xd6, 0xbf, 0x67, 0x14, 0xfe, 0x84, 0xd6, 0x60, 0xf4, 0x39, 0x87, 0x72, 0x8f, 0x52, + 0xee, 0xdb, 0x07, 0x73, 0x3f, 0x5e, 0xa5, 0xe4, 0xd9, 0xc7, 0xab, 0xea, 0xd6, 0xb6, 0xb2, 0x59, + 0xde, 0x50, 0x38, 0x1c, 0xdd, 0x02, 0xa9, 0xa6, 0xf6, 0xd2, 0x61, 0xb0, 0x04, 0x50, 0xd1, 0xb0, + 0x8e, 0xbf, 0x05, 0x52, 0x2f, 0x60, 0xed, 0x6a, 0x30, 0xf1, 0x52, 0xd1, 0x27, 0x18, 0xfa, 0x8b, + 0x90, 0xa6, 0xfe, 0x42, 0x00, 0xdc, 0x63, 0xf2, 0x08, 0xca, 0x40, 0x6a, 0x65, 0x5b, 0x21, 0xe1, + 0x2f, 0x43, 0x9e, 0x49, 0xd5, 0x9d, 0xf5, 0xca, 0x4a, 0x45, 0x4e, 0xcc, 0x9d, 0x83, 0x51, 0xe6, + 0x04, 0x72, 0x34, 0x3c, 0x37, 0xc8, 0x23, 0xfc, 0x91, 0x73, 0x48, 0x62, 0x74, 0x6f, 0x73, 0xb9, + 0xa2, 0xc8, 0x09, 0xff, 0xf6, 0x3a, 0x90, 0xf7, 0xb7, 0x73, 0x3f, 0x9d, 0x98, 0xfa, 0x7b, 0x09, + 0x72, 0xbe, 0xf6, 0x8c, 0x34, 0x06, 0x5a, 0xb3, 0x69, 0xbd, 0xa0, 0x6a, 0x4d, 0x43, 0x73, 0x78, + 0x50, 0x00, 0x15, 0x95, 0x89, 0x64, 0xd8, 0x4d, 0xfb, 0xa9, 0x18, 0xff, 0xba, 0x04, 0x72, 0xb8, + 0xb5, 0x0b, 0x19, 0x28, 0xfd, 0x4c, 0x0d, 0x7c, 0x4d, 0x82, 0x42, 0xb0, 0x9f, 0x0b, 0x99, 0x77, + 0xfa, 0x67, 0x6a, 0xde, 0xdb, 0x09, 0x18, 0x0f, 0x74, 0x71, 0xc3, 0x5a, 0xf7, 0x3c, 0x4c, 0x1a, + 0x35, 0xdc, 0x6a, 0x5b, 0x2e, 0x36, 0xf5, 0x43, 0xb5, 0x89, 0xaf, 0xe1, 0x66, 0x71, 0x8e, 0x26, + 0x8a, 0xc5, 0xc1, 0x7d, 0xe2, 0xc2, 0x7a, 0x17, 0xb7, 0x41, 0x60, 0xa5, 0xa9, 0xf5, 0xd5, 0xca, + 0xe6, 0xce, 0xf6, 0x6e, 0x65, 0x6b, 0xe5, 0x69, 0x75, 0x6f, 0xeb, 0x89, 0xad, 0xed, 0xa7, 0xb6, + 0x14, 0xd9, 0x08, 0xa9, 0x7d, 0x82, 0x47, 0x7d, 0x07, 0xe4, 0xb0, 0x51, 0xe8, 0x66, 0x88, 0x32, + 0x4b, 0x1e, 0x41, 0x53, 0x30, 0xb1, 0xb5, 0xad, 0x56, 0xd7, 0x57, 0x2b, 0x6a, 0xe5, 0xd2, 0xa5, + 0xca, 0xca, 0x6e, 0x95, 0xbd, 0x38, 0x7b, 0xda, 0xbb, 0xc1, 0x43, 0xfd, 0x6a, 0x12, 0xa6, 0x22, + 0x2c, 0x41, 0x65, 0xde, 0xb3, 0xb3, 0xd7, 0x88, 0xfb, 0x86, 0xb1, 0x7e, 0x81, 0x74, 0x05, 0x3b, + 0x9a, 0xed, 0xf2, 0x16, 0xff, 0x6e, 0x20, 0x5e, 0x32, 0x5d, 0xa3, 0x6e, 0x60, 0x9b, 0xdf, 0x33, + 0xb0, 0x46, 0x7e, 0xa2, 0x2b, 0x67, 0x57, 0x0d, 0xf7, 0x02, 0x6a, 0x5b, 0x8e, 0xe1, 0x1a, 0xd7, + 0xb0, 0x6a, 0x98, 0xe2, 0x52, 0x82, 0x34, 0xf6, 0x29, 0x45, 0x16, 0x23, 0xeb, 0xa6, 0xeb, 0x69, + 0x9b, 0xb8, 0xa1, 0x85, 0xb4, 0x49, 0x02, 0x4f, 0x2a, 0xb2, 0x18, 0xf1, 0xb4, 0x4f, 0x43, 0xbe, + 0x66, 0x75, 0x48, 0x9b, 0xc4, 0xf4, 0x48, 0xbd, 0x90, 0x94, 0x1c, 0x93, 0x79, 0x2a, 0xbc, 0x8f, + 0xed, 0xde, 0x86, 0xe4, 0x95, 0x1c, 0x93, 0x31, 0x95, 0xbb, 0x60, 0x42, 0x6b, 0x34, 0x6c, 0x42, + 0x2e, 0x88, 0x58, 0x67, 0x5e, 0xf0, 0xc4, 0x54, 0x71, 0xe6, 0x71, 0xc8, 0x08, 0x3f, 0x90, 0x92, + 0x4c, 0x3c, 0xa1, 0xb6, 0xd9, 0x9d, 0x54, 0x62, 0x3e, 0xab, 0x64, 0x4c, 0x31, 0x78, 0x1a, 0xf2, + 0x86, 0xa3, 0x76, 0x2f, 0x47, 0x13, 0xa7, 0x12, 0xf3, 0x19, 0x25, 0x67, 0x38, 0xde, 0x6d, 0xd8, + 0xdc, 0x1b, 0x09, 0x28, 0x04, 0x2f, 0x77, 0xd1, 0x2a, 0x64, 0x9a, 0x96, 0xae, 0xd1, 0xd0, 0x62, + 0xbf, 0x2c, 0xcc, 0xc7, 0xdc, 0x07, 0x2f, 0x6c, 0x70, 0x7d, 0xc5, 0x43, 0xce, 0xfc, 0xb3, 0x04, + 0x19, 0x21, 0x46, 0x27, 0x20, 0xd5, 0xd6, 0xdc, 0x03, 0x4a, 0x97, 0x5e, 0x4e, 0xc8, 0x92, 0x42, + 0x9f, 0x89, 0xdc, 0x69, 0x6b, 0x26, 0x0d, 0x01, 0x2e, 0x27, 0xcf, 0x64, 0x5f, 0x9b, 0x58, 0xab, + 0xd1, 0xb6, 0xdf, 0x6a, 0xb5, 0xb0, 0xe9, 0x3a, 0x62, 0x5f, 0xb9, 0x7c, 0x85, 0x8b, 0xd1, 0x3d, + 0x30, 0xe9, 0xda, 0x9a, 0xd1, 0x0c, 0xe8, 0xa6, 0xa8, 0xae, 0x2c, 0x06, 0x3c, 0xe5, 0x12, 0xdc, + 0x22, 0x78, 0x6b, 0xd8, 0xd5, 0xf4, 0x03, 0x5c, 0xeb, 0x82, 0x46, 0xe9, 0xcd, 0xe1, 0xcd, 0x5c, + 0x61, 0x95, 0x8f, 0x0b, 0xec, 0xdc, 0xf7, 0x25, 0x98, 0x14, 0x2f, 0x2a, 0x35, 0xcf, 0x59, 0x9b, + 0x00, 0x9a, 0x69, 0x5a, 0xae, 0xdf, 0x5d, 0xbd, 0xa1, 0xdc, 0x83, 0x5b, 0x28, 0x7b, 0x20, 0xc5, + 0x47, 0x30, 0xd3, 0x02, 0xe8, 0x8e, 0xf4, 0x75, 0xdb, 0x49, 0xc8, 0xf1, 0x9b, 0x7b, 0xfa, 0xf3, + 0x0f, 0x7b, 0xb5, 0x05, 0x26, 0x22, 0x6f, 0x34, 0x68, 0x1a, 0xd2, 0xfb, 0xb8, 0x61, 0x98, 0xfc, + 0x3e, 0x91, 0x3d, 0x88, 0x5b, 0xca, 0x94, 0x77, 0x4b, 0xb9, 0x7c, 0x05, 0xa6, 0x74, 0xab, 0x15, + 0x36, 0x77, 0x59, 0x0e, 0xbd, 0x5e, 0x3b, 0x97, 0xa5, 0x67, 0xa0, 0xdb, 0x62, 0x7e, 0x25, 0x91, + 0x5c, 0xdb, 0x59, 0xfe, 0x5a, 0x62, 0x66, 0x8d, 0xe1, 0x76, 0xc4, 0x32, 0x15, 0x5c, 0x6f, 0x62, + 0x9d, 0x98, 0x0e, 0x3f, 0xb9, 0x13, 0xee, 0x6b, 0x18, 0xee, 0x41, 0x67, 0x7f, 0x41, 0xb7, 0x5a, + 0x8b, 0x0d, 0xab, 0x61, 0x75, 0x7f, 0xee, 0x22, 0x4f, 0xf4, 0x81, 0xfe, 0xc7, 0x7f, 0xf2, 0xca, + 0x7a, 0xd2, 0x99, 0xd8, 0xdf, 0xc7, 0x4a, 0x5b, 0x30, 0xc5, 0x95, 0x55, 0x7a, 0xe7, 0xce, 0x5e, + 0x0d, 0xd0, 0xc0, 0x7b, 0x97, 0xe2, 0x37, 0xdf, 0xa1, 0xb5, 0x5a, 0x99, 0xe4, 0x50, 0x32, 0xc6, + 0x5e, 0x20, 0x4a, 0x0a, 0xdc, 0x14, 0xe0, 0x63, 0xe7, 0x12, 0xdb, 0x31, 0x8c, 0xdf, 0xe5, 0x8c, + 0x53, 0x3e, 0xc6, 0x2a, 0x87, 0x96, 0x56, 0x60, 0xfc, 0x38, 0x5c, 0xff, 0xc0, 0xb9, 0xf2, 0xd8, + 0x4f, 0xb2, 0x06, 0x13, 0x94, 0x44, 0xef, 0x38, 0xae, 0xd5, 0xa2, 0x49, 0x6f, 0x30, 0xcd, 0x3f, + 0xbe, 0xc3, 0x0e, 0x4a, 0x81, 0xc0, 0x56, 0x3c, 0x54, 0xa9, 0x04, 0xf4, 0x67, 0x86, 0x1a, 0xd6, + 0x9b, 0x31, 0x0c, 0x6f, 0x72, 0x43, 0x3c, 0xfd, 0xd2, 0x93, 0x30, 0x4d, 0xfe, 0xa7, 0x39, 0xc9, + 0x6f, 0x49, 0xfc, 0x2d, 0x53, 0xf1, 0xfb, 0x2f, 0xb3, 0xb3, 0x38, 0xe5, 0x11, 0xf8, 0x6c, 0xf2, + 0xed, 0x62, 0x03, 0xbb, 0x2e, 0xb6, 0x1d, 0x55, 0x6b, 0x46, 0x99, 0xe7, 0x7b, 0x4d, 0x2f, 0x7e, + 0xf1, 0xbd, 0xe0, 0x2e, 0xae, 0x31, 0x64, 0xb9, 0xd9, 0x2c, 0xed, 0xc1, 0xcd, 0x11, 0x51, 0x31, + 0x04, 0xe7, 0xab, 0x9c, 0x73, 0xba, 0x27, 0x32, 0x08, 0xed, 0x0e, 0x08, 0xb9, 0xb7, 0x97, 0x43, + 0x70, 0xfe, 0x01, 0xe7, 0x44, 0x1c, 0x2b, 0xb6, 0x94, 0x30, 0x3e, 0x0e, 0x93, 0xd7, 0xb0, 0xbd, + 0x6f, 0x39, 0xfc, 0x6a, 0x64, 0x08, 0xba, 0xd7, 0x38, 0xdd, 0x04, 0x07, 0xd2, 0xbb, 0x12, 0xc2, + 0xf5, 0x30, 0x64, 0xea, 0x9a, 0x8e, 0x87, 0xa0, 0xf8, 0x12, 0xa7, 0x18, 0x23, 0xfa, 0x04, 0x5a, + 0x86, 0x7c, 0xc3, 0xe2, 0x65, 0x29, 0x1e, 0xfe, 0x3a, 0x87, 0xe7, 0x04, 0x86, 0x53, 0xb4, 0xad, + 0x76, 0xa7, 0x49, 0x6a, 0x56, 0x3c, 0xc5, 0x1f, 0x0a, 0x0a, 0x81, 0xe1, 0x14, 0xc7, 0x70, 0xeb, + 0x1f, 0x09, 0x0a, 0xc7, 0xe7, 0xcf, 0xc7, 0x20, 0x67, 0x99, 0xcd, 0x43, 0xcb, 0x1c, 0xc6, 0x88, + 0x2f, 0x73, 0x06, 0xe0, 0x10, 0x42, 0x70, 0x11, 0xb2, 0xc3, 0x6e, 0xc4, 0x1f, 0xbf, 0x27, 0x8e, + 0x87, 0xd8, 0x81, 0x35, 0x98, 0x10, 0x09, 0xca, 0xb0, 0xcc, 0x21, 0x28, 0xfe, 0x84, 0x53, 0x14, + 0x7c, 0x30, 0xbe, 0x0c, 0x17, 0x3b, 0x6e, 0x03, 0x0f, 0x43, 0xf2, 0x86, 0x58, 0x06, 0x87, 0x70, + 0x57, 0xee, 0x63, 0x53, 0x3f, 0x18, 0x8e, 0xe1, 0xab, 0xc2, 0x95, 0x02, 0x43, 0x28, 0x56, 0x60, + 0xbc, 0xa5, 0xd9, 0xce, 0x81, 0xd6, 0x1c, 0x6a, 0x3b, 0xfe, 0x94, 0x73, 0xe4, 0x3d, 0x10, 0xf7, + 0x48, 0xc7, 0x3c, 0x0e, 0xcd, 0xd7, 0x84, 0x47, 0x7c, 0x30, 0x7e, 0xf4, 0x1c, 0x97, 0x5e, 0x40, + 0x1d, 0x87, 0xed, 0xeb, 0xe2, 0xe8, 0x31, 0xec, 0xa6, 0x9f, 0xf1, 0x22, 0x64, 0x1d, 0xe3, 0xa5, + 0xa1, 0x68, 0xfe, 0x4c, 0xec, 0x34, 0x05, 0x10, 0xf0, 0xd3, 0x70, 0x4b, 0x64, 0x99, 0x18, 0x82, + 0xec, 0xcf, 0x39, 0xd9, 0x89, 0x88, 0x52, 0xc1, 0x53, 0xc2, 0x71, 0x29, 0xff, 0x42, 0xa4, 0x04, + 0x1c, 0xe2, 0xda, 0x21, 0x2f, 0x0a, 0x8e, 0x56, 0x3f, 0x9e, 0xd7, 0xfe, 0x52, 0x78, 0x8d, 0x61, + 0x03, 0x5e, 0xdb, 0x85, 0x13, 0x9c, 0xf1, 0x78, 0xfb, 0xfa, 0x0d, 0x91, 0x58, 0x19, 0x7a, 0x2f, + 0xb8, 0xbb, 0x3f, 0x07, 0x33, 0x9e, 0x3b, 0x45, 0x47, 0xea, 0xa8, 0x2d, 0xad, 0x3d, 0x04, 0xf3, + 0x37, 0x39, 0xb3, 0xc8, 0xf8, 0x5e, 0x4b, 0xeb, 0x6c, 0x6a, 0x6d, 0x42, 0x7e, 0x05, 0x8a, 0x82, + 0xbc, 0x63, 0xda, 0x58, 0xb7, 0x1a, 0xa6, 0xf1, 0x12, 0xae, 0x0d, 0x41, 0xfd, 0x57, 0xa1, 0xad, + 0xda, 0xf3, 0xc1, 0x09, 0xf3, 0x3a, 0xc8, 0x5e, 0xaf, 0xa2, 0x1a, 0xad, 0xb6, 0x65, 0xbb, 0x31, + 0x8c, 0x7f, 0x2d, 0x76, 0xca, 0xc3, 0xad, 0x53, 0x58, 0xa9, 0x02, 0x05, 0xfa, 0x38, 0x6c, 0x48, + 0xfe, 0x0d, 0x27, 0x1a, 0xef, 0xa2, 0x78, 0xe2, 0xd0, 0xad, 0x56, 0x5b, 0xb3, 0x87, 0xc9, 0x7f, + 0x7f, 0x2b, 0x12, 0x07, 0x87, 0xf0, 0xc4, 0xe1, 0x1e, 0xb6, 0x31, 0xa9, 0xf6, 0x43, 0x30, 0x7c, + 0x4b, 0x24, 0x0e, 0x81, 0xe1, 0x14, 0xa2, 0x61, 0x18, 0x82, 0xe2, 0xef, 0x04, 0x85, 0xc0, 0x10, + 0x8a, 0xcf, 0x77, 0x0b, 0xad, 0x8d, 0x1b, 0x86, 0xe3, 0xda, 0xac, 0x0f, 0x1e, 0x4c, 0xf5, 0xed, + 0xf7, 0x82, 0x4d, 0x98, 0xe2, 0x83, 0x96, 0x1e, 0x87, 0x89, 0x50, 0x8b, 0x81, 0xe2, 0xbe, 0x59, + 0x28, 0xfe, 0xe2, 0x07, 0x3c, 0x19, 0x05, 0x3b, 0x8c, 0xd2, 0x06, 0xd9, 0xf7, 0x60, 0x1f, 0x10, + 0x4f, 0xf6, 0xf2, 0x07, 0xde, 0xd6, 0x07, 0xda, 0x80, 0xd2, 0x25, 0x18, 0x0f, 0xf4, 0x00, 0xf1, + 0x54, 0xbf, 0xc4, 0xa9, 0xf2, 0xfe, 0x16, 0xa0, 0x74, 0x0e, 0x52, 0xa4, 0x9e, 0xc7, 0xc3, 0x7f, + 0x99, 0xc3, 0xa9, 0x7a, 0xe9, 0x11, 0xc8, 0x88, 0x3a, 0x1e, 0x0f, 0xfd, 0x15, 0x0e, 0xf5, 0x20, + 0x04, 0x2e, 0x6a, 0x78, 0x3c, 0xfc, 0x57, 0x05, 0x5c, 0x40, 0x08, 0x7c, 0x78, 0x17, 0x7e, 0xe7, + 0xd7, 0x52, 0x3c, 0x0f, 0x0b, 0xdf, 0x5d, 0x84, 0x31, 0x5e, 0xbc, 0xe3, 0xd1, 0x5f, 0xe0, 0x93, + 0x0b, 0x44, 0xe9, 0x21, 0x48, 0x0f, 0xe9, 0xf0, 0x5f, 0xe7, 0x50, 0xa6, 0x5f, 0x5a, 0x81, 0x9c, + 0xaf, 0x60, 0xc7, 0xc3, 0x7f, 0x83, 0xc3, 0xfd, 0x28, 0x62, 0x3a, 0x2f, 0xd8, 0xf1, 0x04, 0xbf, + 0x29, 0x4c, 0xe7, 0x08, 0xe2, 0x36, 0x51, 0xab, 0xe3, 0xd1, 0xbf, 0x25, 0xbc, 0x2e, 0x20, 0xa5, + 0xc7, 0x20, 0xeb, 0xe5, 0xdf, 0x78, 0xfc, 0x6f, 0x73, 0x7c, 0x17, 0x43, 0x3c, 0xe0, 0xcb, 0xff, + 0xf1, 0x14, 0xbf, 0x23, 0x3c, 0xe0, 0x43, 0x91, 0x63, 0x14, 0xae, 0xe9, 0xf1, 0x4c, 0xbf, 0x2b, + 0x8e, 0x51, 0xa8, 0xa4, 0x93, 0xdd, 0xa4, 0x69, 0x30, 0x9e, 0xe2, 0xf7, 0xc4, 0x6e, 0x52, 0x7d, + 0x62, 0x46, 0xb8, 0x48, 0xc6, 0x73, 0xfc, 0xbe, 0x30, 0x23, 0x54, 0x23, 0x4b, 0x3b, 0x80, 0x7a, + 0x0b, 0x64, 0x3c, 0xdf, 0x2b, 0x9c, 0x6f, 0xb2, 0xa7, 0x3e, 0x96, 0x9e, 0x82, 0x13, 0xd1, 0xc5, + 0x31, 0x9e, 0xf5, 0x8b, 0x1f, 0x84, 0x5e, 0x67, 0xfc, 0xb5, 0xb1, 0xb4, 0xdb, 0xcd, 0xb2, 0xfe, + 0xc2, 0x18, 0x4f, 0xfb, 0xea, 0x07, 0xc1, 0x44, 0xeb, 0xaf, 0x8b, 0xa5, 0x32, 0x40, 0xb7, 0x26, + 0xc5, 0x73, 0xbd, 0xc6, 0xb9, 0x7c, 0x20, 0x72, 0x34, 0x78, 0x49, 0x8a, 0xc7, 0x7f, 0x49, 0x1c, + 0x0d, 0x8e, 0x20, 0x47, 0x43, 0x54, 0xa3, 0x78, 0xf4, 0xeb, 0xe2, 0x68, 0x08, 0x48, 0xe9, 0x22, + 0x64, 0xcc, 0x4e, 0xb3, 0x49, 0x62, 0x0b, 0x0d, 0xfe, 0x8c, 0xa8, 0xf8, 0xaf, 0x1f, 0x71, 0xb0, + 0x00, 0x94, 0xce, 0x41, 0x1a, 0xb7, 0xf6, 0x71, 0x2d, 0x0e, 0xf9, 0x6f, 0x1f, 0x89, 0x7c, 0x42, + 0xb4, 0x4b, 0x8f, 0x01, 0xb0, 0x97, 0x69, 0xfa, 0x2b, 0x51, 0x0c, 0xf6, 0xdf, 0x3f, 0xe2, 0x5f, + 0x28, 0x74, 0x21, 0x5d, 0x02, 0xf6, 0xbd, 0xc3, 0x60, 0x82, 0xf7, 0x82, 0x04, 0xf4, 0x05, 0xfc, + 0x61, 0x18, 0x7b, 0xce, 0xb1, 0x4c, 0x57, 0x6b, 0xc4, 0xa1, 0xff, 0x83, 0xa3, 0x85, 0x3e, 0x71, + 0x58, 0xcb, 0xb2, 0xb1, 0xab, 0x35, 0x9c, 0x38, 0xec, 0x7f, 0x72, 0xac, 0x07, 0x20, 0x60, 0x5d, + 0x73, 0xdc, 0x61, 0xd6, 0xfd, 0x5f, 0x02, 0x2c, 0x00, 0xc4, 0x68, 0xf2, 0xff, 0x55, 0x7c, 0x18, + 0x87, 0x7d, 0x5f, 0x18, 0xcd, 0xf5, 0x4b, 0x8f, 0x40, 0x96, 0xfc, 0xcb, 0xbe, 0xda, 0x89, 0x01, + 0xff, 0x37, 0x07, 0x77, 0x11, 0x64, 0x66, 0xc7, 0xad, 0xb9, 0x46, 0xbc, 0xb3, 0xff, 0x87, 0xef, + 0xb4, 0xd0, 0x2f, 0x95, 0x21, 0xe7, 0xb8, 0xb5, 0x5a, 0x87, 0x77, 0x34, 0x31, 0xf0, 0x9f, 0x7c, + 0xe4, 0xbd, 0xe4, 0x7a, 0x98, 0xe5, 0xd3, 0xd1, 0x97, 0x75, 0xb0, 0x66, 0xad, 0x59, 0xec, 0x9a, + 0x0e, 0x3e, 0xbc, 0x0f, 0xe6, 0x74, 0xab, 0xb5, 0x6f, 0x39, 0x8b, 0x2c, 0xa1, 0xec, 0x5b, 0xee, + 0xc1, 0x62, 0x4b, 0x6b, 0x3b, 0x54, 0x7d, 0x89, 0x5f, 0xb5, 0xe5, 0xf8, 0x13, 0x19, 0x98, 0x39, + 0xde, 0x35, 0xdd, 0xdc, 0xad, 0x30, 0x7e, 0xa9, 0x69, 0x69, 0xae, 0x61, 0x36, 0x76, 0x2c, 0xc3, + 0x74, 0x51, 0x1e, 0xa4, 0x3a, 0xfd, 0x8d, 0x49, 0x52, 0xa4, 0xfa, 0xdc, 0x3f, 0xa5, 0x21, 0xcb, + 0x6e, 0x78, 0x36, 0xb5, 0x36, 0xfa, 0x05, 0xc8, 0x6f, 0xf1, 0x43, 0xf2, 0xc0, 0xd2, 0x05, 0xc7, + 0xbb, 0x4e, 0xf6, 0xcd, 0xbf, 0xe0, 0x69, 0x2f, 0xf8, 0x55, 0xe9, 0x6f, 0xca, 0xcb, 0xf7, 0xff, + 0xf0, 0xad, 0x93, 0xf7, 0xf6, 0xb5, 0x8f, 0x54, 0xc5, 0x45, 0x16, 0xcd, 0x0b, 0x7b, 0x86, 0xe9, + 0x3e, 0xb0, 0x74, 0x41, 0x09, 0xcc, 0x87, 0xae, 0x41, 0x86, 0x0f, 0x38, 0xfc, 0x67, 0x86, 0xdb, + 0xfb, 0xcc, 0x2d, 0xd4, 0xd8, 0xbc, 0x67, 0xdf, 0x7c, 0xeb, 0xe4, 0xc8, 0xb1, 0xe7, 0xf6, 0xe6, + 0x42, 0xcf, 0x43, 0x4e, 0xd8, 0xb1, 0x5e, 0x73, 0xf8, 0xd7, 0xc4, 0x77, 0xc5, 0x2c, 0x7b, 0xbd, + 0xc6, 0x67, 0xbf, 0xf3, 0x87, 0x6f, 0x9d, 0x9c, 0x1b, 0x38, 0xf3, 0xc2, 0x5e, 0xc7, 0xa8, 0x29, + 0xfe, 0x39, 0xd0, 0xb3, 0x90, 0x24, 0x53, 0xb1, 0xef, 0x8e, 0x4f, 0xf6, 0x99, 0xca, 0x9b, 0xe2, + 0x0c, 0x5f, 0xe0, 0x30, 0xd3, 0x10, 0xde, 0x99, 0xc7, 0x60, 0xb2, 0x67, 0x7b, 0x90, 0x0c, 0xc9, + 0xab, 0xf8, 0x90, 0x7f, 0x6a, 0x44, 0xfe, 0x45, 0xd3, 0xdd, 0x4f, 0xe9, 0xa4, 0xf9, 0x3c, 0xff, + 0x3e, 0xae, 0x94, 0xb8, 0x20, 0xcd, 0x5c, 0x84, 0xf1, 0x80, 0x8f, 0x8f, 0x05, 0x7e, 0x14, 0xe4, + 0xb0, 0x97, 0x8e, 0x85, 0x3f, 0x0f, 0x99, 0x8f, 0x83, 0x9b, 0xfb, 0x01, 0x82, 0xb1, 0x72, 0xb3, + 0xb9, 0xa9, 0xb5, 0x1d, 0xf4, 0x34, 0x4c, 0xb2, 0xde, 0x7d, 0xd7, 0x5a, 0xa5, 0x3f, 0xec, 0x6c, + 0x6a, 0x6d, 0x1e, 0xd0, 0xf7, 0x04, 0xdc, 0xcd, 0x01, 0x0b, 0x3d, 0xda, 0x74, 0x7e, 0xa5, 0x97, + 0x05, 0x3d, 0x09, 0xb2, 0x10, 0xd2, 0xb3, 0x45, 0x98, 0x59, 0xb8, 0x9e, 0x19, 0xc8, 0x2c, 0x94, + 0x19, 0x71, 0x0f, 0x07, 0x7a, 0x14, 0x32, 0xeb, 0xa6, 0xfb, 0xe0, 0x12, 0xe1, 0x63, 0x31, 0x38, + 0x17, 0xc9, 0x27, 0x94, 0x18, 0x8f, 0x87, 0xe1, 0xf8, 0xf3, 0x67, 0x09, 0x3e, 0x35, 0x18, 0x4f, + 0x95, 0xba, 0x78, 0xfa, 0x88, 0xca, 0x90, 0x25, 0x7b, 0xce, 0x0c, 0x60, 0x1f, 0xb2, 0xdf, 0x16, + 0x49, 0xe0, 0x69, 0x31, 0x86, 0x2e, 0x4a, 0x50, 0x30, 0x1b, 0x46, 0x63, 0x28, 0x7c, 0x46, 0x74, + 0x51, 0x84, 0xa2, 0xea, 0x59, 0x31, 0x36, 0x80, 0xa2, 0x1a, 0xb2, 0xa2, 0xea, 0xb7, 0xa2, 0xea, + 0x59, 0x91, 0x89, 0xa1, 0xf0, 0x5b, 0xe1, 0x3d, 0xa3, 0x55, 0x80, 0x4b, 0xc6, 0x8b, 0xb8, 0xc6, + 0xcc, 0xc8, 0x46, 0x24, 0x23, 0xc1, 0xd1, 0x55, 0x63, 0x24, 0x3e, 0x1c, 0x5a, 0x83, 0x5c, 0xb5, + 0xde, 0xa5, 0x01, 0xfe, 0x1d, 0x7f, 0xa4, 0x29, 0xf5, 0x10, 0x8f, 0x1f, 0xe9, 0x99, 0xc3, 0x96, + 0x94, 0x8b, 0x33, 0xc7, 0xb7, 0x26, 0x1f, 0xae, 0x6b, 0x0e, 0xa3, 0xc9, 0xc7, 0x9a, 0xe3, 0xe3, + 0xf1, 0x23, 0xd1, 0x45, 0x18, 0x5b, 0xb6, 0x2c, 0xa2, 0x59, 0x1c, 0xa7, 0x24, 0xa7, 0x23, 0x49, + 0xb8, 0x0e, 0x23, 0x10, 0x08, 0xba, 0x3b, 0x34, 0xf4, 0x09, 0xbc, 0x30, 0x68, 0x77, 0x84, 0x96, + 0xd8, 0x1d, 0xf1, 0xec, 0x3f, 0x81, 0xcb, 0x87, 0x2e, 0x26, 0x7d, 0x72, 0x71, 0x62, 0x88, 0x13, + 0x28, 0x94, 0x43, 0x27, 0x50, 0x88, 0x51, 0x15, 0x26, 0x84, 0xac, 0x62, 0x76, 0x48, 0x0e, 0x2e, + 0xca, 0xfc, 0x23, 0xe3, 0x41, 0xb4, 0x5c, 0x97, 0xb1, 0x86, 0x19, 0xd0, 0x0e, 0x14, 0x84, 0x68, + 0xd3, 0xa1, 0x8b, 0x9e, 0x8c, 0xa8, 0xab, 0x61, 0x4e, 0xa6, 0xca, 0x28, 0x43, 0xf8, 0x99, 0x55, + 0x38, 0x11, 0x9d, 0xad, 0xe2, 0xb2, 0xa5, 0xe4, 0xcf, 0xb2, 0x2b, 0x70, 0x53, 0x64, 0x66, 0x8a, + 0x23, 0x49, 0x84, 0xea, 0x44, 0x20, 0x1d, 0xf9, 0xc1, 0xe9, 0x08, 0x70, 0xba, 0x17, 0xdc, 0x0d, + 0x32, 0x3f, 0x38, 0x19, 0x01, 0x4e, 0xfa, 0xc1, 0x9f, 0x83, 0x42, 0x30, 0x0f, 0xf9, 0xd1, 0xe3, + 0x11, 0xe8, 0xf1, 0x08, 0x74, 0xf4, 0xdc, 0xa9, 0x08, 0x74, 0x2a, 0x84, 0xae, 0xf6, 0x9d, 0x7b, + 0x32, 0x02, 0x3d, 0x19, 0x81, 0x8e, 0x9e, 0x1b, 0x45, 0xa0, 0x91, 0x1f, 0xfd, 0x08, 0x4c, 0x84, + 0x52, 0x8e, 0x1f, 0x3e, 0x16, 0x01, 0x1f, 0x0b, 0xd5, 0xe6, 0x70, 0xaa, 0xf1, 0xe3, 0x27, 0x22, + 0xf0, 0x13, 0x51, 0xd3, 0x47, 0x5b, 0x3f, 0x1a, 0x01, 0x1f, 0x8d, 0x9c, 0x3e, 0x1a, 0x2f, 0x47, + 0xe0, 0x65, 0x3f, 0xbe, 0x04, 0x79, 0x7f, 0x56, 0xf1, 0x63, 0x33, 0x11, 0xd8, 0x4c, 0xd8, 0xef, + 0x81, 0x94, 0x12, 0x17, 0xe9, 0xd9, 0x3e, 0xc7, 0x25, 0x90, 0x46, 0x8e, 0xd5, 0xd9, 0x5c, 0x81, + 0xe9, 0xa8, 0xa4, 0x11, 0xc1, 0x71, 0xc6, 0xcf, 0x51, 0x58, 0x9a, 0x0e, 0x24, 0x0b, 0x8a, 0xeb, + 0xb4, 0xfc, 0xcc, 0xcf, 0xc2, 0x54, 0x44, 0xea, 0x88, 0x20, 0xbe, 0xdf, 0x4f, 0x9c, 0x5b, 0x9a, + 0x09, 0x10, 0x07, 0xde, 0x15, 0xfc, 0xad, 0xd5, 0x8f, 0xa6, 0xa0, 0xc0, 0x53, 0xd4, 0xb6, 0x5d, + 0xc3, 0x36, 0xae, 0xa1, 0x9f, 0xef, 0xdf, 0x61, 0x2d, 0x45, 0xa5, 0x36, 0x8e, 0x3b, 0x46, 0xa3, + 0xf5, 0x6c, 0xdf, 0x46, 0xeb, 0x81, 0x61, 0x26, 0x88, 0xeb, 0xb7, 0x2a, 0x3d, 0xfd, 0xd6, 0xdd, + 0x83, 0x68, 0xfb, 0xb5, 0x5d, 0x95, 0x9e, 0xb6, 0x2b, 0x8e, 0x26, 0xb2, 0xfb, 0xba, 0xdc, 0xdb, + 0x7d, 0x9d, 0x19, 0xc4, 0xd3, 0xbf, 0x09, 0xbb, 0xdc, 0xdb, 0x84, 0xc5, 0x32, 0x45, 0xf7, 0x62, + 0x97, 0x7b, 0x7b, 0xb1, 0x81, 0x4c, 0xfd, 0x5b, 0xb2, 0xcb, 0xbd, 0x2d, 0x59, 0x2c, 0x53, 0x74, + 0x67, 0xf6, 0x44, 0x44, 0x67, 0x76, 0xcf, 0x20, 0xaa, 0x41, 0x0d, 0xda, 0x56, 0x54, 0x83, 0x76, + 0xef, 0x40, 0xc3, 0x06, 0xf6, 0x69, 0x4f, 0x44, 0xf4, 0x69, 0xf1, 0xc6, 0xf5, 0x69, 0xd7, 0xb6, + 0xa2, 0xda, 0xb5, 0x21, 0x8c, 0xeb, 0xd7, 0xb5, 0x2d, 0x87, 0xbb, 0xb6, 0xf9, 0x41, 0x5c, 0xd1, + 0xcd, 0xdb, 0xe5, 0xde, 0xe6, 0xed, 0x4c, 0xfc, 0x59, 0x8c, 0xea, 0xe1, 0x9e, 0xed, 0xdb, 0xc3, + 0x0d, 0x75, 0xb8, 0xe3, 0x5a, 0xb9, 0x67, 0xfa, 0xb5, 0x72, 0xf7, 0x0f, 0xc3, 0x3e, 0xb8, 0xa3, + 0x7b, 0xaa, 0x4f, 0x47, 0xb7, 0x38, 0x0c, 0xf5, 0xa7, 0x8d, 0xdd, 0xa7, 0x8d, 0xdd, 0xa7, 0x8d, + 0xdd, 0xa7, 0x8d, 0xdd, 0xff, 0x8f, 0xc6, 0xae, 0x94, 0x7a, 0xe5, 0xcb, 0x27, 0xa5, 0x33, 0xa7, + 0x61, 0x8c, 0x4f, 0x8d, 0x46, 0x21, 0xb1, 0x59, 0x96, 0x47, 0xe8, 0xdf, 0x65, 0x59, 0xa2, 0x7f, + 0x57, 0xe4, 0xc4, 0xf2, 0xc6, 0x9b, 0x37, 0x66, 0x47, 0xbe, 0x77, 0x63, 0x76, 0xe4, 0x07, 0x37, + 0x66, 0x47, 0xde, 0xbe, 0x31, 0x2b, 0xbd, 0x7b, 0x63, 0x56, 0x7a, 0xff, 0xc6, 0xac, 0xf4, 0xe1, + 0x8d, 0x59, 0xe9, 0xfa, 0xd1, 0xac, 0xf4, 0xd5, 0xa3, 0x59, 0xe9, 0x1b, 0x47, 0xb3, 0xd2, 0xb7, + 0x8f, 0x66, 0xa5, 0xef, 0x1c, 0xcd, 0x4a, 0x6f, 0x1e, 0xcd, 0x8e, 0x7c, 0xef, 0x68, 0x76, 0xe4, + 0xed, 0xa3, 0x59, 0xe9, 0xdd, 0xa3, 0xd9, 0x91, 0xf7, 0x8f, 0x66, 0xa5, 0x0f, 0x8f, 0x66, 0xa5, + 0xeb, 0x3f, 0x9e, 0x95, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x23, 0x13, 0x20, 0x9a, 0x57, 0x45, 0x00, 0x00, } r := bytes.NewReader(gzipped) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafemarshaler/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafemarshaler/mapsproto2.pb.go index e2f67373b..42993b249 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafemarshaler/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafemarshaler/mapsproto2.pb.go @@ -179,287 +179,294 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4468 bytes of a gzipped FileDescriptorSet + // 4580 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x98, 0xbb, 0x2b, - 0xbf, 0xe4, 0xb5, 0xad, 0xb5, 0xe5, 0xdd, 0xf5, 0x9a, 0x1b, 0xdb, 0xa0, 0x24, 0xae, 0x56, 0x8e, - 0x5e, 0x19, 0x4a, 0x7e, 0x05, 0xc6, 0xfc, 0x47, 0xc3, 0x4b, 0x6a, 0xbc, 0xe4, 0x0c, 0x33, 0x33, - 0x5c, 0x5b, 0xfe, 0xf0, 0xc7, 0x06, 0xee, 0x03, 0x41, 0xd0, 0x77, 0x81, 0x3a, 0x8e, 0xe3, 0x26, - 0x01, 0x5a, 0xa7, 0xe9, 0x2b, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, 0x24, - 0xdf, 0x82, 0x20, 0x30, 0xb2, 0xaa, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0x06, 0x30, 0x0a, - 0x14, 0xf7, 0x35, 0x9c, 0x19, 0x0e, 0x39, 0x94, 0x81, 0x3c, 0x3e, 0xf8, 0x93, 0x34, 0xe7, 0x9e, - 0xdf, 0xef, 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x9c, 0xb9, 0x1c, 0xf8, 0xcc, 0x39, 0x38, 0xd5, 0xb4, - 0xac, 0x66, 0x0b, 0x9f, 0xed, 0xd8, 0x96, 0x6b, 0xed, 0x77, 0x1b, 0x67, 0xeb, 0xd8, 0xd1, 0x6d, - 0xa3, 0xe3, 0x5a, 0xf6, 0x22, 0x95, 0xa1, 0x29, 0xa6, 0xb1, 0x28, 0x34, 0xe6, 0x37, 0x61, 0xfa, - 0xb2, 0xd1, 0xc2, 0xab, 0x9e, 0x62, 0x0d, 0xbb, 0xe8, 0x22, 0xa4, 0x1a, 0x46, 0x0b, 0x17, 0xa5, - 0x53, 0xc9, 0x85, 0xdc, 0xd2, 0x1d, 0x8b, 0x21, 0xd0, 0x62, 0x10, 0xb1, 0x43, 0xc4, 0x0a, 0x45, - 0xcc, 0xbf, 0x9d, 0x82, 0x99, 0x88, 0x51, 0x84, 0x20, 0x65, 0x6a, 0x6d, 0xc2, 0x28, 0x2d, 0x64, - 0x15, 0xfa, 0x3f, 0x2a, 0xc2, 0x44, 0x47, 0xd3, 0xaf, 0x6a, 0x4d, 0x5c, 0x4c, 0x50, 0xb1, 0x78, - 0x44, 0x25, 0x80, 0x3a, 0xee, 0x60, 0xb3, 0x8e, 0x4d, 0xfd, 0xb0, 0x98, 0x3c, 0x95, 0x5c, 0xc8, - 0x2a, 0x3e, 0x09, 0xba, 0x17, 0xa6, 0x3b, 0xdd, 0xfd, 0x96, 0xa1, 0xab, 0x3e, 0x35, 0x38, 0x95, - 0x5c, 0x48, 0x2b, 0x32, 0x1b, 0x58, 0xed, 0x29, 0xdf, 0x0d, 0x53, 0x2f, 0x60, 0xed, 0xaa, 0x5f, - 0x35, 0x47, 0x55, 0x0b, 0x44, 0xec, 0x53, 0x5c, 0x81, 0x7c, 0x1b, 0x3b, 0x8e, 0xd6, 0xc4, 0xaa, - 0x7b, 0xd8, 0xc1, 0xc5, 0x14, 0x5d, 0xfd, 0xa9, 0xbe, 0xd5, 0x87, 0x57, 0x9e, 0xe3, 0xa8, 0xdd, - 0xc3, 0x0e, 0x46, 0x15, 0xc8, 0x62, 0xb3, 0xdb, 0x66, 0x0c, 0xe9, 0x01, 0xfe, 0xab, 0x9a, 0xdd, - 0x76, 0x98, 0x25, 0x43, 0x60, 0x9c, 0x62, 0xc2, 0xc1, 0xf6, 0x35, 0x43, 0xc7, 0xc5, 0x71, 0x4a, - 0x70, 0x77, 0x1f, 0x41, 0x8d, 0x8d, 0x87, 0x39, 0x04, 0x0e, 0xad, 0x40, 0x16, 0xbf, 0xe8, 0x62, - 0xd3, 0x31, 0x2c, 0xb3, 0x38, 0x41, 0x49, 0xee, 0x8c, 0xd8, 0x45, 0xdc, 0xaa, 0x87, 0x29, 0x7a, - 0x38, 0x74, 0x01, 0x26, 0xac, 0x8e, 0x6b, 0x58, 0xa6, 0x53, 0xcc, 0x9c, 0x92, 0x16, 0x72, 0x4b, - 0x1f, 0x8b, 0x0c, 0x84, 0x6d, 0xa6, 0xa3, 0x08, 0x65, 0xb4, 0x0e, 0xb2, 0x63, 0x75, 0x6d, 0x1d, - 0xab, 0xba, 0x55, 0xc7, 0xaa, 0x61, 0x36, 0xac, 0x62, 0x96, 0x12, 0x9c, 0xec, 0x5f, 0x08, 0x55, - 0x5c, 0xb1, 0xea, 0x78, 0xdd, 0x6c, 0x58, 0x4a, 0xc1, 0x09, 0x3c, 0xa3, 0x13, 0x30, 0xee, 0x1c, - 0x9a, 0xae, 0xf6, 0x62, 0x31, 0x4f, 0x23, 0x84, 0x3f, 0xcd, 0xff, 0x4f, 0x1a, 0xa6, 0x46, 0x09, - 0xb1, 0x4b, 0x90, 0x6e, 0x90, 0x55, 0x16, 0x13, 0xc7, 0xf1, 0x01, 0xc3, 0x04, 0x9d, 0x38, 0xfe, - 0x21, 0x9d, 0x58, 0x81, 0x9c, 0x89, 0x1d, 0x17, 0xd7, 0x59, 0x44, 0x24, 0x47, 0x8c, 0x29, 0x60, - 0xa0, 0xfe, 0x90, 0x4a, 0x7d, 0xa8, 0x90, 0x7a, 0x1a, 0xa6, 0x3c, 0x93, 0x54, 0x5b, 0x33, 0x9b, - 0x22, 0x36, 0xcf, 0xc6, 0x59, 0xb2, 0x58, 0x15, 0x38, 0x85, 0xc0, 0x94, 0x02, 0x0e, 0x3c, 0xa3, - 0x55, 0x00, 0xcb, 0xc4, 0x56, 0x43, 0xad, 0x63, 0xbd, 0x55, 0xcc, 0x0c, 0xf0, 0xd2, 0x36, 0x51, - 0xe9, 0xf3, 0x92, 0xc5, 0xa4, 0x7a, 0x0b, 0x3d, 0xd2, 0x0b, 0xb5, 0x89, 0x01, 0x91, 0xb2, 0xc9, - 0x0e, 0x59, 0x5f, 0xb4, 0xed, 0x41, 0xc1, 0xc6, 0x24, 0xee, 0x71, 0x9d, 0xaf, 0x2c, 0x4b, 0x8d, - 0x58, 0x8c, 0x5d, 0x99, 0xc2, 0x61, 0x6c, 0x61, 0x93, 0xb6, 0xff, 0x11, 0xdd, 0x0e, 0x9e, 0x40, - 0xa5, 0x61, 0x05, 0x34, 0x0b, 0xe5, 0x85, 0x70, 0x4b, 0x6b, 0xe3, 0xb9, 0x8b, 0x50, 0x08, 0xba, - 0x07, 0xcd, 0x42, 0xda, 0x71, 0x35, 0xdb, 0xa5, 0x51, 0x98, 0x56, 0xd8, 0x03, 0x92, 0x21, 0x89, - 0xcd, 0x3a, 0xcd, 0x72, 0x69, 0x85, 0xfc, 0x3b, 0xf7, 0x30, 0x4c, 0x06, 0xa6, 0x1f, 0x15, 0x38, - 0xff, 0xca, 0x38, 0xcc, 0x46, 0xc5, 0x5c, 0x64, 0xf8, 0x9f, 0x80, 0x71, 0xb3, 0xdb, 0xde, 0xc7, - 0x76, 0x31, 0x49, 0x19, 0xf8, 0x13, 0xaa, 0x40, 0xba, 0xa5, 0xed, 0xe3, 0x56, 0x31, 0x75, 0x4a, - 0x5a, 0x28, 0x2c, 0xdd, 0x3b, 0x52, 0x54, 0x2f, 0x6e, 0x10, 0x88, 0xc2, 0x90, 0xe8, 0x31, 0x48, - 0xf1, 0x14, 0x47, 0x18, 0xce, 0x8c, 0xc6, 0x40, 0x62, 0x51, 0xa1, 0x38, 0x74, 0x2b, 0x64, 0xc9, - 0x5f, 0xe6, 0xdb, 0x71, 0x6a, 0x73, 0x86, 0x08, 0x88, 0x5f, 0xd1, 0x1c, 0x64, 0x68, 0x98, 0xd5, - 0xb1, 0x28, 0x0d, 0xde, 0x33, 0xd9, 0x98, 0x3a, 0x6e, 0x68, 0xdd, 0x96, 0xab, 0x5e, 0xd3, 0x5a, - 0x5d, 0x4c, 0x03, 0x26, 0xab, 0xe4, 0xb9, 0xf0, 0x49, 0x22, 0x43, 0x27, 0x21, 0xc7, 0xa2, 0xd2, - 0x30, 0xeb, 0xf8, 0x45, 0x9a, 0x7d, 0xd2, 0x0a, 0x0b, 0xd4, 0x75, 0x22, 0x21, 0xd3, 0x3f, 0xef, - 0x58, 0xa6, 0xd8, 0x5a, 0x3a, 0x05, 0x11, 0xd0, 0xe9, 0x1f, 0x0e, 0x27, 0xbe, 0xdb, 0xa2, 0x97, - 0x17, 0x8e, 0xc5, 0xf9, 0x6f, 0x26, 0x20, 0x45, 0xcf, 0xdb, 0x14, 0xe4, 0x76, 0x9f, 0xd9, 0xa9, - 0xaa, 0xab, 0xdb, 0x7b, 0xcb, 0x1b, 0x55, 0x59, 0x42, 0x05, 0x00, 0x2a, 0xb8, 0xbc, 0xb1, 0x5d, - 0xd9, 0x95, 0x13, 0xde, 0xf3, 0xfa, 0xd6, 0xee, 0x85, 0x73, 0x72, 0xd2, 0x03, 0xec, 0x31, 0x41, - 0xca, 0xaf, 0xf0, 0xd0, 0x92, 0x9c, 0x46, 0x32, 0xe4, 0x19, 0xc1, 0xfa, 0xd3, 0xd5, 0xd5, 0x0b, - 0xe7, 0xe4, 0xf1, 0xa0, 0xe4, 0xa1, 0x25, 0x79, 0x02, 0x4d, 0x42, 0x96, 0x4a, 0x96, 0xb7, 0xb7, - 0x37, 0xe4, 0x8c, 0xc7, 0x59, 0xdb, 0x55, 0xd6, 0xb7, 0xd6, 0xe4, 0xac, 0xc7, 0xb9, 0xa6, 0x6c, - 0xef, 0xed, 0xc8, 0xe0, 0x31, 0x6c, 0x56, 0x6b, 0xb5, 0xca, 0x5a, 0x55, 0xce, 0x79, 0x1a, 0xcb, - 0xcf, 0xec, 0x56, 0x6b, 0x72, 0x3e, 0x60, 0xd6, 0x43, 0x4b, 0xf2, 0xa4, 0x37, 0x45, 0x75, 0x6b, - 0x6f, 0x53, 0x2e, 0xa0, 0x69, 0x98, 0x64, 0x53, 0x08, 0x23, 0xa6, 0x42, 0xa2, 0x0b, 0xe7, 0x64, - 0xb9, 0x67, 0x08, 0x63, 0x99, 0x0e, 0x08, 0x2e, 0x9c, 0x93, 0xd1, 0xfc, 0x0a, 0xa4, 0x69, 0x74, - 0x21, 0x04, 0x85, 0x8d, 0xca, 0x72, 0x75, 0x43, 0xdd, 0xde, 0xd9, 0x5d, 0xdf, 0xde, 0xaa, 0x6c, - 0xc8, 0x52, 0x4f, 0xa6, 0x54, 0x3f, 0xb9, 0xb7, 0xae, 0x54, 0x57, 0xe5, 0x84, 0x5f, 0xb6, 0x53, - 0xad, 0xec, 0x56, 0x57, 0xe5, 0xe4, 0xbc, 0x0e, 0xb3, 0x51, 0x79, 0x26, 0xf2, 0x64, 0xf8, 0xb6, - 0x38, 0x31, 0x60, 0x8b, 0x29, 0x57, 0xdf, 0x16, 0x7f, 0x45, 0x82, 0x99, 0x88, 0x5c, 0x1b, 0x39, - 0xc9, 0xe3, 0x90, 0x66, 0x21, 0xca, 0xaa, 0xcf, 0x3d, 0x91, 0x49, 0x9b, 0x06, 0x6c, 0x5f, 0x05, - 0xa2, 0x38, 0x7f, 0x05, 0x4e, 0x0e, 0xa8, 0xc0, 0x84, 0xa2, 0xcf, 0xc8, 0x97, 0x25, 0x28, 0x0e, - 0xe2, 0x8e, 0x49, 0x14, 0x89, 0x40, 0xa2, 0xb8, 0x14, 0x36, 0xe0, 0xf4, 0xe0, 0x35, 0xf4, 0x59, - 0xf1, 0x86, 0x04, 0x27, 0xa2, 0x1b, 0x95, 0x48, 0x1b, 0x1e, 0x83, 0xf1, 0x36, 0x76, 0x0f, 0x2c, - 0x51, 0xac, 0xef, 0x8a, 0x28, 0x01, 0x64, 0x38, 0xec, 0x2b, 0x8e, 0xf2, 0xd7, 0x90, 0xe4, 0xa0, - 0x6e, 0x83, 0x59, 0xd3, 0x67, 0xe9, 0x67, 0x13, 0x70, 0x53, 0x24, 0x79, 0xa4, 0xa1, 0xb7, 0x01, - 0x18, 0x66, 0xa7, 0xeb, 0xb2, 0x82, 0xcc, 0xf2, 0x53, 0x96, 0x4a, 0xe8, 0xd9, 0x27, 0xb9, 0xa7, - 0xeb, 0x7a, 0xe3, 0x49, 0x3a, 0x0e, 0x4c, 0x44, 0x15, 0x2e, 0xf6, 0x0c, 0x4d, 0x51, 0x43, 0x4b, - 0x03, 0x56, 0xda, 0x57, 0xeb, 0x1e, 0x00, 0x59, 0x6f, 0x19, 0xd8, 0x74, 0x55, 0xc7, 0xb5, 0xb1, - 0xd6, 0x36, 0xcc, 0x26, 0x4d, 0xc0, 0x99, 0x72, 0xba, 0xa1, 0xb5, 0x1c, 0xac, 0x4c, 0xb1, 0xe1, - 0x9a, 0x18, 0x25, 0x08, 0x5a, 0x65, 0x6c, 0x1f, 0x62, 0x3c, 0x80, 0x60, 0xc3, 0x1e, 0x62, 0xfe, - 0x73, 0x13, 0x90, 0xf3, 0xb5, 0x75, 0xe8, 0x34, 0xe4, 0x9f, 0xd7, 0xae, 0x69, 0xaa, 0x68, 0xd5, - 0x99, 0x27, 0x72, 0x44, 0xb6, 0xc3, 0xdb, 0xf5, 0x07, 0x60, 0x96, 0xaa, 0x58, 0x5d, 0x17, 0xdb, - 0xaa, 0xde, 0xd2, 0x1c, 0x87, 0x3a, 0x2d, 0x43, 0x55, 0x11, 0x19, 0xdb, 0x26, 0x43, 0x2b, 0x62, - 0x04, 0x9d, 0x87, 0x19, 0x8a, 0x68, 0x77, 0x5b, 0xae, 0xd1, 0x69, 0x61, 0x95, 0xbc, 0x3c, 0x38, - 0x34, 0x11, 0x7b, 0x96, 0x4d, 0x13, 0x8d, 0x4d, 0xae, 0x40, 0x2c, 0x72, 0xd0, 0x1a, 0xdc, 0x46, - 0x61, 0x4d, 0x6c, 0x62, 0x5b, 0x73, 0xb1, 0x8a, 0x3f, 0xdd, 0xd5, 0x5a, 0x8e, 0xaa, 0x99, 0x75, - 0xf5, 0x40, 0x73, 0x0e, 0x8a, 0xb3, 0x7e, 0x82, 0x5b, 0x88, 0xee, 0x1a, 0x57, 0xad, 0x52, 0xcd, - 0x8a, 0x59, 0xbf, 0xa2, 0x39, 0x07, 0xa8, 0x0c, 0x27, 0x28, 0x91, 0xe3, 0xda, 0x86, 0xd9, 0x54, - 0xf5, 0x03, 0xac, 0x5f, 0x55, 0xbb, 0x6e, 0xe3, 0x62, 0xf1, 0x56, 0x3f, 0x03, 0x35, 0xb2, 0x46, - 0x75, 0x56, 0x88, 0xca, 0x9e, 0xdb, 0xb8, 0x88, 0x6a, 0x90, 0x27, 0xfb, 0xd1, 0x36, 0x5e, 0xc2, - 0x6a, 0xc3, 0xb2, 0x69, 0x71, 0x29, 0x44, 0x1c, 0x6e, 0x9f, 0x13, 0x17, 0xb7, 0x39, 0x60, 0xd3, - 0xaa, 0xe3, 0x72, 0xba, 0xb6, 0x53, 0xad, 0xae, 0x2a, 0x39, 0xc1, 0x72, 0xd9, 0xb2, 0x49, 0x4c, - 0x35, 0x2d, 0xcf, 0xc7, 0x39, 0x16, 0x53, 0x4d, 0x4b, 0x78, 0xf8, 0x3c, 0xcc, 0xe8, 0x3a, 0x5b, - 0xb6, 0xa1, 0xab, 0xbc, 0xcb, 0x77, 0x8a, 0x72, 0xc0, 0x5f, 0xba, 0xbe, 0xc6, 0x14, 0x78, 0x98, - 0x3b, 0xe8, 0x11, 0xb8, 0xa9, 0xe7, 0x2f, 0x3f, 0x70, 0xba, 0x6f, 0x95, 0x61, 0xe8, 0x79, 0x98, - 0xe9, 0x1c, 0xf6, 0x03, 0x51, 0x60, 0xc6, 0xce, 0x61, 0x18, 0x76, 0x27, 0x7d, 0x73, 0xb3, 0xb1, - 0xae, 0xb9, 0xb8, 0x5e, 0xbc, 0xd9, 0xaf, 0xed, 0x1b, 0x40, 0x67, 0x41, 0xd6, 0x75, 0x15, 0x9b, - 0xda, 0x7e, 0x0b, 0xab, 0x9a, 0x8d, 0x4d, 0xcd, 0x29, 0x9e, 0xf4, 0x2b, 0x17, 0x74, 0xbd, 0x4a, - 0x47, 0x2b, 0x74, 0x10, 0x9d, 0x81, 0x69, 0x6b, 0xff, 0x79, 0x9d, 0x05, 0x97, 0xda, 0xb1, 0x71, - 0xc3, 0x78, 0xb1, 0x78, 0x07, 0x75, 0xd3, 0x14, 0x19, 0xa0, 0xa1, 0xb5, 0x43, 0xc5, 0xe8, 0x1e, - 0x90, 0x75, 0xe7, 0x40, 0xb3, 0x3b, 0xb4, 0xba, 0x3b, 0x1d, 0x4d, 0xc7, 0xc5, 0x3b, 0x99, 0x2a, - 0x93, 0x6f, 0x09, 0x31, 0x7a, 0x1a, 0x66, 0xbb, 0xa6, 0x61, 0xba, 0xd8, 0xee, 0xd8, 0x98, 0x34, - 0xe9, 0xec, 0xa4, 0x15, 0xff, 0x79, 0x62, 0x40, 0x9b, 0xbd, 0xe7, 0xd7, 0x66, 0xbb, 0xab, 0xcc, - 0x74, 0xfb, 0x85, 0xf3, 0x65, 0xc8, 0xfb, 0x37, 0x1d, 0x65, 0x81, 0x6d, 0xbb, 0x2c, 0x91, 0x1a, - 0xba, 0xb2, 0xbd, 0x4a, 0xaa, 0xdf, 0xb3, 0x55, 0x39, 0x41, 0xaa, 0xf0, 0xc6, 0xfa, 0x6e, 0x55, - 0x55, 0xf6, 0xb6, 0x76, 0xd7, 0x37, 0xab, 0x72, 0xf2, 0x4c, 0x36, 0xf3, 0xce, 0x84, 0x7c, 0xfd, - 0xfa, 0xf5, 0xeb, 0x89, 0xf9, 0xef, 0x24, 0xa0, 0x10, 0xec, 0x7c, 0xd1, 0xc7, 0xe1, 0x66, 0xf1, - 0x9a, 0xea, 0x60, 0x57, 0x7d, 0xc1, 0xb0, 0x69, 0x1c, 0xb6, 0x35, 0xd6, 0x3b, 0x7a, 0x2e, 0x9c, - 0xe5, 0x5a, 0x35, 0xec, 0x3e, 0x65, 0xd8, 0x24, 0xca, 0xda, 0x9a, 0x8b, 0x36, 0xe0, 0xa4, 0x69, - 0xa9, 0x8e, 0xab, 0x99, 0x75, 0xcd, 0xae, 0xab, 0xbd, 0x0b, 0x02, 0x55, 0xd3, 0x75, 0xec, 0x38, - 0x16, 0x2b, 0x01, 0x1e, 0xcb, 0xc7, 0x4c, 0xab, 0xc6, 0x95, 0x7b, 0xb9, 0xb1, 0xc2, 0x55, 0x43, - 0xdb, 0x9d, 0x1c, 0xb4, 0xdd, 0xb7, 0x42, 0xb6, 0xad, 0x75, 0x54, 0x6c, 0xba, 0xf6, 0x21, 0xed, - 0xd7, 0x32, 0x4a, 0xa6, 0xad, 0x75, 0xaa, 0xe4, 0xf9, 0xa7, 0xb7, 0x07, 0x7e, 0x3f, 0xfe, 0x30, - 0x09, 0x79, 0x7f, 0xcf, 0x46, 0x5a, 0x60, 0x9d, 0xe6, 0x67, 0x89, 0x1e, 0xdf, 0xdb, 0x87, 0x76, - 0x78, 0x8b, 0x2b, 0x24, 0x71, 0x97, 0xc7, 0x59, 0x27, 0xa5, 0x30, 0x24, 0x29, 0x9a, 0xe4, 0xc0, - 0x62, 0xd6, 0x9f, 0x67, 0x14, 0xfe, 0x84, 0xd6, 0x60, 0xfc, 0x79, 0x87, 0x72, 0x8f, 0x53, 0xee, - 0x3b, 0x86, 0x73, 0x3f, 0x51, 0xa3, 0xe4, 0xd9, 0x27, 0x6a, 0xea, 0xd6, 0xb6, 0xb2, 0x59, 0xd9, - 0x50, 0x38, 0x1c, 0xdd, 0x02, 0xa9, 0x96, 0xf6, 0xd2, 0x61, 0x30, 0xc5, 0x53, 0xd1, 0xa8, 0x8e, - 0xbf, 0x05, 0x52, 0x2f, 0x60, 0xed, 0x6a, 0x30, 0xb1, 0x52, 0xd1, 0x4f, 0x31, 0xf4, 0xcf, 0x42, - 0x9a, 0xfa, 0x0b, 0x01, 0x70, 0x8f, 0xc9, 0x63, 0x28, 0x03, 0xa9, 0x95, 0x6d, 0x85, 0x84, 0xbf, - 0x0c, 0x79, 0x26, 0x55, 0x77, 0xd6, 0xab, 0x2b, 0x55, 0x39, 0x31, 0x7f, 0x1e, 0xc6, 0x99, 0x13, - 0xc8, 0xd1, 0xf0, 0xdc, 0x20, 0x8f, 0xf1, 0x47, 0xce, 0x21, 0x89, 0xd1, 0xbd, 0xcd, 0xe5, 0xaa, - 0x22, 0x27, 0xfc, 0xdb, 0xeb, 0x40, 0xde, 0xdf, 0xae, 0xfd, 0x6c, 0x62, 0xea, 0x6f, 0x25, 0xc8, - 0xf9, 0xda, 0x2f, 0x52, 0xf8, 0xb5, 0x56, 0xcb, 0x7a, 0x41, 0xd5, 0x5a, 0x86, 0xe6, 0xf0, 0xa0, - 0x00, 0x2a, 0xaa, 0x10, 0xc9, 0xa8, 0x9b, 0xf6, 0x33, 0x31, 0xfe, 0x75, 0x09, 0xe4, 0x70, 0xeb, - 0x16, 0x32, 0x50, 0xfa, 0xb9, 0x1a, 0xf8, 0x9a, 0x04, 0x85, 0x60, 0xbf, 0x16, 0x32, 0xef, 0xf4, - 0xcf, 0xd5, 0xbc, 0x2f, 0x48, 0x30, 0x19, 0xe8, 0xd2, 0x7e, 0xa1, 0xac, 0x7b, 0x35, 0x09, 0x33, - 0x11, 0x38, 0x54, 0xe1, 0xed, 0x2c, 0xeb, 0xb0, 0xef, 0x1f, 0x65, 0xae, 0x45, 0x52, 0x2d, 0x77, - 0x34, 0xdb, 0xe5, 0xdd, 0xef, 0x3d, 0x20, 0x1b, 0x75, 0x6c, 0xba, 0x46, 0xc3, 0xc0, 0x36, 0x7f, - 0x05, 0x67, 0x3d, 0xee, 0x54, 0x4f, 0xce, 0xde, 0xc2, 0xef, 0x03, 0xd4, 0xb1, 0x1c, 0xc3, 0x35, - 0xae, 0x61, 0xd5, 0x30, 0xc5, 0xfb, 0x3a, 0xe9, 0x79, 0x53, 0x8a, 0x2c, 0x46, 0xd6, 0x4d, 0xd7, - 0xd3, 0x36, 0x71, 0x53, 0x0b, 0x69, 0x93, 0xdc, 0x97, 0x54, 0x64, 0x31, 0xe2, 0x69, 0x9f, 0x86, - 0x7c, 0xdd, 0xea, 0x92, 0xf6, 0x81, 0xe9, 0x91, 0x54, 0x2b, 0x29, 0x39, 0x26, 0xf3, 0x54, 0x78, - 0x7f, 0xd7, 0xbb, 0x28, 0xc8, 0x2b, 0x39, 0x26, 0x63, 0x2a, 0x77, 0xc3, 0x94, 0xd6, 0x6c, 0xda, - 0x84, 0x5c, 0x10, 0xb1, 0xa6, 0xb5, 0xe0, 0x89, 0xa9, 0xe2, 0xdc, 0x13, 0x90, 0x11, 0x7e, 0x20, - 0xd5, 0x8c, 0x78, 0x42, 0xed, 0xb0, 0xeb, 0x9a, 0xc4, 0x42, 0x56, 0xc9, 0x98, 0x62, 0xf0, 0x34, - 0xe4, 0x0d, 0x47, 0xed, 0xdd, 0x1b, 0x26, 0x4e, 0x25, 0x16, 0x32, 0x4a, 0xce, 0x70, 0xbc, 0x8b, - 0xa2, 0xf9, 0x37, 0x12, 0x50, 0x08, 0xde, 0x7b, 0xa2, 0x55, 0xc8, 0xb4, 0x2c, 0x5d, 0xa3, 0x81, - 0xc0, 0x2e, 0xdd, 0x17, 0x62, 0xae, 0x4a, 0x17, 0x37, 0xb8, 0xbe, 0xe2, 0x21, 0xe7, 0xfe, 0x51, - 0x82, 0x8c, 0x10, 0xa3, 0x13, 0x90, 0xea, 0x68, 0xee, 0x01, 0xa5, 0x4b, 0x2f, 0x27, 0x64, 0x49, - 0xa1, 0xcf, 0x44, 0xee, 0x74, 0x34, 0x93, 0x86, 0x00, 0x97, 0x93, 0x67, 0xb2, 0xaf, 0x2d, 0xac, - 0xd5, 0x69, 0x3b, 0x6c, 0xb5, 0xdb, 0xd8, 0x74, 0x1d, 0xb1, 0xaf, 0x5c, 0xbe, 0xc2, 0xc5, 0xe8, - 0x5e, 0x98, 0x76, 0x6d, 0xcd, 0x68, 0x05, 0x74, 0x53, 0x54, 0x57, 0x16, 0x03, 0x9e, 0x72, 0x19, - 0x6e, 0x11, 0xbc, 0x75, 0xec, 0x6a, 0xfa, 0x01, 0xae, 0xf7, 0x40, 0xe3, 0xf4, 0x52, 0xed, 0x66, - 0xae, 0xb0, 0xca, 0xc7, 0x05, 0x76, 0xfe, 0x7b, 0x12, 0x4c, 0x8b, 0x06, 0xbe, 0xee, 0x39, 0x6b, - 0x13, 0x40, 0x33, 0x4d, 0xcb, 0xf5, 0xbb, 0xab, 0x3f, 0x94, 0xfb, 0x70, 0x8b, 0x15, 0x0f, 0xa4, - 0xf8, 0x08, 0xe6, 0xda, 0x00, 0xbd, 0x91, 0x81, 0x6e, 0x3b, 0x09, 0x39, 0x7e, 0xa9, 0x4d, 0x7f, - 0x19, 0x61, 0x6f, 0x7d, 0xc0, 0x44, 0xa4, 0xd3, 0x47, 0xb3, 0x90, 0xde, 0xc7, 0x4d, 0xc3, 0xe4, - 0x57, 0x6d, 0xec, 0x41, 0x5c, 0xe0, 0xa5, 0xbc, 0x0b, 0xbc, 0xe5, 0x4f, 0xc1, 0x8c, 0x6e, 0xb5, - 0xc3, 0xe6, 0x2e, 0xcb, 0xa1, 0x37, 0x4f, 0xe7, 0x8a, 0xf4, 0x2c, 0xf4, 0xba, 0xb3, 0x2f, 0x49, - 0xd2, 0x57, 0x12, 0xc9, 0xb5, 0x9d, 0xe5, 0xaf, 0x25, 0xe6, 0xd6, 0x18, 0x74, 0x47, 0xac, 0x54, - 0xc1, 0x8d, 0x16, 0xd6, 0x89, 0xf5, 0xf0, 0xe3, 0xbb, 0xe0, 0xfe, 0xa6, 0xe1, 0x1e, 0x74, 0xf7, - 0x17, 0x75, 0xab, 0x7d, 0xb6, 0x69, 0x35, 0xad, 0xde, 0x8f, 0x41, 0xe4, 0x89, 0x3e, 0xd0, 0xff, - 0xf8, 0x0f, 0x42, 0x59, 0x4f, 0x3a, 0x17, 0xfb, 0xeb, 0x51, 0x79, 0x0b, 0x66, 0xb8, 0xb2, 0x4a, - 0x6f, 0xa4, 0x59, 0x1f, 0x8e, 0x86, 0xde, 0x4a, 0x14, 0xbf, 0xf1, 0x36, 0xad, 0x74, 0xca, 0x34, - 0x87, 0x92, 0x31, 0xd6, 0xa9, 0x97, 0x15, 0xb8, 0x29, 0xc0, 0xc7, 0x8e, 0x26, 0xb6, 0x63, 0x18, - 0xbf, 0xc3, 0x19, 0x67, 0x7c, 0x8c, 0x35, 0x0e, 0x2d, 0xaf, 0xc0, 0xe4, 0x71, 0xb8, 0xfe, 0x8e, - 0x73, 0xe5, 0xb1, 0x9f, 0x64, 0x0d, 0xa6, 0x28, 0x89, 0xde, 0x75, 0x5c, 0xab, 0x4d, 0xf3, 0xde, - 0x70, 0x9a, 0xbf, 0x7f, 0x9b, 0x9d, 0x95, 0x02, 0x81, 0xad, 0x78, 0xa8, 0x72, 0x19, 0xe8, 0x25, - 0x7c, 0x1d, 0xeb, 0xad, 0x18, 0x86, 0x37, 0xb9, 0x21, 0x9e, 0x7e, 0xf9, 0x49, 0x98, 0x25, 0xff, - 0xd3, 0xb4, 0xe4, 0xb7, 0x24, 0xfe, 0x0e, 0xa6, 0xf8, 0xbd, 0x97, 0xd9, 0x71, 0x9c, 0xf1, 0x08, - 0x7c, 0x36, 0xf9, 0x76, 0xb1, 0x89, 0x5d, 0x17, 0xdb, 0x8e, 0xaa, 0xb5, 0xa2, 0xcc, 0xf3, 0xbd, - 0xc1, 0x16, 0x3f, 0xff, 0x6e, 0x70, 0x17, 0xd7, 0x18, 0xb2, 0xd2, 0x6a, 0x95, 0xf7, 0xe0, 0xe6, - 0x88, 0xa8, 0x18, 0x81, 0xf3, 0x55, 0xce, 0x39, 0xdb, 0x17, 0x19, 0x84, 0x76, 0x07, 0x84, 0xdc, - 0xdb, 0xcb, 0x11, 0x38, 0xbf, 0xc0, 0x39, 0x11, 0xc7, 0x8a, 0x2d, 0x25, 0x8c, 0x4f, 0xc0, 0xf4, - 0x35, 0x6c, 0xef, 0x5b, 0x0e, 0xbf, 0x38, 0x18, 0x81, 0xee, 0x35, 0x4e, 0x37, 0xc5, 0x81, 0xf4, - 0x1a, 0x81, 0x70, 0x3d, 0x02, 0x99, 0x86, 0xa6, 0xe3, 0x11, 0x28, 0xbe, 0xc8, 0x29, 0x26, 0x88, - 0x3e, 0x81, 0x56, 0x20, 0xdf, 0xb4, 0x78, 0x65, 0x8a, 0x87, 0xbf, 0xce, 0xe1, 0x39, 0x81, 0xe1, - 0x14, 0x1d, 0xab, 0xd3, 0x6d, 0x91, 0xb2, 0x15, 0x4f, 0xf1, 0xfb, 0x82, 0x42, 0x60, 0x38, 0xc5, - 0x31, 0xdc, 0xfa, 0x25, 0x41, 0xe1, 0xf8, 0xfc, 0xf9, 0x38, 0xe4, 0x2c, 0xb3, 0x75, 0x68, 0x99, - 0xa3, 0x18, 0xf1, 0x65, 0xce, 0x00, 0x1c, 0x42, 0x08, 0x2e, 0x41, 0x76, 0xd4, 0x8d, 0xf8, 0x83, - 0x77, 0xc5, 0xf1, 0x10, 0x3b, 0xb0, 0x06, 0x53, 0x22, 0x41, 0x19, 0x96, 0x39, 0x02, 0xc5, 0x1f, - 0x72, 0x8a, 0x82, 0x0f, 0xc6, 0x97, 0xe1, 0x62, 0xc7, 0x6d, 0xe2, 0x51, 0x48, 0xde, 0x10, 0xcb, - 0xe0, 0x10, 0xee, 0xca, 0x7d, 0x6c, 0xea, 0x07, 0xa3, 0x31, 0x7c, 0x55, 0xb8, 0x52, 0x60, 0x08, - 0xc5, 0x0a, 0x4c, 0xb6, 0x35, 0xdb, 0x39, 0xd0, 0x5a, 0x23, 0x6d, 0xc7, 0x1f, 0x71, 0x8e, 0xbc, - 0x07, 0xe2, 0x1e, 0xe9, 0x9a, 0xc7, 0xa1, 0xf9, 0x9a, 0xf0, 0x88, 0x0f, 0xc6, 0x8f, 0x9e, 0xe3, - 0xd2, 0xbb, 0x99, 0xe3, 0xb0, 0xfd, 0xb1, 0x38, 0x7a, 0x0c, 0xbb, 0xe9, 0x67, 0xbc, 0x04, 0x59, - 0xc7, 0x78, 0x69, 0x24, 0x9a, 0x3f, 0x11, 0x3b, 0x4d, 0x01, 0x04, 0xfc, 0x0c, 0xdc, 0x12, 0x59, - 0x26, 0x46, 0x20, 0xfb, 0x53, 0x4e, 0x76, 0x22, 0xa2, 0x54, 0xf0, 0x94, 0x70, 0x5c, 0xca, 0x3f, - 0x13, 0x29, 0x01, 0x87, 0xb8, 0x76, 0x48, 0x67, 0xef, 0x68, 0x8d, 0xe3, 0x79, 0xed, 0xcf, 0x85, - 0xd7, 0x18, 0x36, 0xe0, 0xb5, 0x5d, 0x38, 0xc1, 0x19, 0x8f, 0xb7, 0xaf, 0x5f, 0x17, 0x89, 0x95, - 0xa1, 0xf7, 0x82, 0xbb, 0xfb, 0x29, 0x98, 0xf3, 0xdc, 0x29, 0x9a, 0x52, 0x47, 0x6d, 0x6b, 0x9d, - 0x11, 0x98, 0xbf, 0xc1, 0x99, 0x45, 0xc6, 0xf7, 0xba, 0x5a, 0x67, 0x53, 0xeb, 0x10, 0xf2, 0xa7, - 0xa1, 0x28, 0xc8, 0xbb, 0xa6, 0x8d, 0x75, 0xab, 0x69, 0x1a, 0x2f, 0xe1, 0xfa, 0x08, 0xd4, 0x7f, - 0x11, 0xda, 0xaa, 0x3d, 0x1f, 0x9c, 0x30, 0xaf, 0x83, 0xec, 0xf5, 0x2a, 0xaa, 0xd1, 0xee, 0x58, - 0xb6, 0x1b, 0xc3, 0xf8, 0x97, 0x62, 0xa7, 0x3c, 0xdc, 0x3a, 0x85, 0x95, 0xab, 0x50, 0xa0, 0x8f, - 0xa3, 0x86, 0xe4, 0x5f, 0x71, 0xa2, 0xc9, 0x1e, 0x8a, 0x27, 0x0e, 0xdd, 0x6a, 0x77, 0x34, 0x7b, - 0x94, 0xfc, 0xf7, 0xd7, 0x22, 0x71, 0x70, 0x08, 0x4f, 0x1c, 0xee, 0x61, 0x07, 0x93, 0x6a, 0x3f, - 0x02, 0xc3, 0x37, 0x45, 0xe2, 0x10, 0x18, 0x4e, 0x21, 0x1a, 0x86, 0x11, 0x28, 0xfe, 0x46, 0x50, - 0x08, 0x0c, 0xa1, 0xf8, 0x64, 0xaf, 0xd0, 0xda, 0xb8, 0x69, 0x38, 0xae, 0xcd, 0x5a, 0xe1, 0xe1, - 0x54, 0xdf, 0x7a, 0x37, 0xd8, 0x84, 0x29, 0x3e, 0x68, 0xf9, 0x09, 0x98, 0x0a, 0xb5, 0x18, 0x28, - 0xee, 0x17, 0xfd, 0xe2, 0x67, 0xde, 0xe7, 0xc9, 0x28, 0xd8, 0x61, 0x94, 0x37, 0xc8, 0xbe, 0x07, - 0xfb, 0x80, 0x78, 0xb2, 0x97, 0xdf, 0xf7, 0xb6, 0x3e, 0xd0, 0x06, 0x94, 0x2f, 0xc3, 0x64, 0xa0, - 0x07, 0x88, 0xa7, 0xfa, 0x25, 0x4e, 0x95, 0xf7, 0xb7, 0x00, 0xe5, 0xf3, 0x90, 0x22, 0xf5, 0x3c, - 0x1e, 0xfe, 0xcb, 0x1c, 0x4e, 0xd5, 0xcb, 0x8f, 0x42, 0x46, 0xd4, 0xf1, 0x78, 0xe8, 0xaf, 0x70, - 0xa8, 0x07, 0x21, 0x70, 0x51, 0xc3, 0xe3, 0xe1, 0xbf, 0x2a, 0xe0, 0x02, 0x42, 0xe0, 0xa3, 0xbb, - 0xf0, 0xdb, 0x9f, 0x4b, 0xf1, 0x3c, 0x2c, 0x7c, 0x77, 0x09, 0x26, 0x78, 0xf1, 0x8e, 0x47, 0x7f, - 0x96, 0x4f, 0x2e, 0x10, 0xe5, 0x87, 0x21, 0x3d, 0xa2, 0xc3, 0x7f, 0x8d, 0x43, 0x99, 0x7e, 0x79, - 0x05, 0x72, 0xbe, 0x82, 0x1d, 0x0f, 0xff, 0x75, 0x0e, 0xf7, 0xa3, 0x88, 0xe9, 0xbc, 0x60, 0xc7, - 0x13, 0xfc, 0x86, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xad, 0x8e, 0x47, 0xff, 0xa6, 0xf0, 0xba, - 0x80, 0x94, 0x1f, 0x87, 0xac, 0x97, 0x7f, 0xe3, 0xf1, 0xbf, 0xc5, 0xf1, 0x3d, 0x0c, 0xf1, 0x80, - 0x2f, 0xff, 0xc7, 0x53, 0xfc, 0xb6, 0xf0, 0x80, 0x0f, 0x45, 0x8e, 0x51, 0xb8, 0xa6, 0xc7, 0x33, - 0xfd, 0x8e, 0x38, 0x46, 0xa1, 0x92, 0x4e, 0x76, 0x93, 0xa6, 0xc1, 0x78, 0x8a, 0xdf, 0x15, 0xbb, - 0x49, 0xf5, 0x89, 0x19, 0xe1, 0x22, 0x19, 0xcf, 0xf1, 0x7b, 0xc2, 0x8c, 0x50, 0x8d, 0x2c, 0xef, - 0x00, 0xea, 0x2f, 0x90, 0xf1, 0x7c, 0xaf, 0x70, 0xbe, 0xe9, 0xbe, 0xfa, 0x58, 0x7e, 0x0a, 0x4e, - 0x44, 0x17, 0xc7, 0x78, 0xd6, 0xcf, 0xbf, 0x1f, 0x7a, 0x9d, 0xf1, 0xd7, 0xc6, 0xf2, 0x6e, 0x2f, - 0xcb, 0xfa, 0x0b, 0x63, 0x3c, 0xed, 0xab, 0xef, 0x07, 0x13, 0xad, 0xbf, 0x2e, 0x96, 0x2b, 0x00, - 0xbd, 0x9a, 0x14, 0xcf, 0xf5, 0x1a, 0xe7, 0xf2, 0x81, 0xc8, 0xd1, 0xe0, 0x25, 0x29, 0x1e, 0xff, - 0x45, 0x71, 0x34, 0x38, 0x82, 0x1c, 0x0d, 0x51, 0x8d, 0xe2, 0xd1, 0xaf, 0x8b, 0xa3, 0x21, 0x20, - 0xe5, 0x4b, 0x90, 0x31, 0xbb, 0xad, 0x16, 0x89, 0x2d, 0x34, 0xfc, 0x23, 0x9b, 0xe2, 0xbf, 0x7c, - 0xc0, 0xc1, 0x02, 0x50, 0x3e, 0x0f, 0x69, 0xdc, 0xde, 0xc7, 0xf5, 0x38, 0xe4, 0xbf, 0x7e, 0x20, - 0xf2, 0x09, 0xd1, 0x2e, 0x3f, 0x0e, 0xc0, 0x5e, 0xa6, 0xe9, 0x6f, 0x2c, 0x31, 0xd8, 0x7f, 0xfb, - 0x80, 0xff, 0x7e, 0xdf, 0x83, 0xf4, 0x08, 0xd8, 0xd7, 0x00, 0xc3, 0x09, 0xde, 0x0d, 0x12, 0xd0, - 0x17, 0xf0, 0x47, 0x60, 0xe2, 0x79, 0xc7, 0x32, 0x5d, 0xad, 0x19, 0x87, 0xfe, 0x77, 0x8e, 0x16, - 0xfa, 0xc4, 0x61, 0x6d, 0xcb, 0xc6, 0xae, 0xd6, 0x74, 0xe2, 0xb0, 0xff, 0xc1, 0xb1, 0x1e, 0x80, - 0x80, 0x75, 0xcd, 0x71, 0x47, 0x59, 0xf7, 0x7f, 0x0a, 0xb0, 0x00, 0x10, 0xa3, 0xc9, 0xff, 0x57, - 0xf1, 0x61, 0x1c, 0xf6, 0x3d, 0x61, 0x34, 0xd7, 0x2f, 0x3f, 0x0a, 0x59, 0xf2, 0x2f, 0xfb, 0xa6, - 0x25, 0x06, 0xfc, 0x5f, 0x1c, 0xdc, 0x43, 0x90, 0x99, 0x1d, 0xb7, 0xee, 0x1a, 0xf1, 0xce, 0xfe, - 0x6f, 0xbe, 0xd3, 0x42, 0xbf, 0x5c, 0x81, 0x9c, 0xe3, 0xd6, 0xeb, 0x5d, 0xde, 0xd1, 0xc4, 0xc0, - 0x7f, 0xfc, 0x81, 0xf7, 0x92, 0xeb, 0x61, 0x96, 0x4f, 0x47, 0xdf, 0xd7, 0xc1, 0x9a, 0xb5, 0x66, - 0xb1, 0x9b, 0x3a, 0xf8, 0xdf, 0xfb, 0xe1, 0x6e, 0xdd, 0x6a, 0xef, 0x5b, 0xce, 0x59, 0x96, 0x50, - 0xbc, 0x74, 0x72, 0xb6, 0xad, 0x75, 0x1c, 0x8a, 0x59, 0xe2, 0xf7, 0x6d, 0x39, 0xfe, 0x44, 0x06, - 0xe6, 0x8e, 0x77, 0x57, 0x37, 0x7f, 0x1b, 0x4c, 0x5e, 0x6e, 0x59, 0x9a, 0x6b, 0x98, 0xcd, 0x1d, - 0xcb, 0x30, 0x5d, 0x94, 0x07, 0xa9, 0x41, 0x7f, 0xa6, 0x91, 0x14, 0xa9, 0x31, 0xff, 0x0f, 0x69, - 0xc8, 0xb2, 0x6b, 0x9e, 0x4d, 0xad, 0x83, 0xfe, 0x3f, 0xe4, 0xb7, 0xf8, 0x49, 0x79, 0x70, 0xe9, - 0xa2, 0xe3, 0x5d, 0x2b, 0xfb, 0xe6, 0x5f, 0xf4, 0xb4, 0x17, 0xfd, 0xaa, 0xf4, 0x67, 0xd9, 0xe5, - 0x07, 0x7e, 0xf0, 0xd6, 0xc9, 0xfb, 0x06, 0xda, 0x47, 0x4a, 0xe3, 0x59, 0x16, 0xd2, 0x8b, 0x7b, - 0x86, 0xe9, 0x3e, 0xb8, 0x74, 0x51, 0x09, 0xcc, 0x87, 0xae, 0x41, 0x86, 0x0f, 0x38, 0xfc, 0xe7, - 0x86, 0x3b, 0x06, 0xcc, 0x2d, 0xd4, 0xd8, 0xbc, 0xe7, 0xde, 0x7c, 0xeb, 0xe4, 0xd8, 0xb1, 0xe7, - 0xf6, 0xe6, 0x42, 0x9f, 0x86, 0x9c, 0xb0, 0x63, 0xbd, 0xee, 0xf0, 0x0f, 0x6e, 0xef, 0x8e, 0x59, - 0xf6, 0x7a, 0x9d, 0xcf, 0x7e, 0xd7, 0x0f, 0xde, 0x3a, 0x39, 0x3f, 0x74, 0xe6, 0xc5, 0xbd, 0xae, - 0x51, 0x57, 0xfc, 0x73, 0xa0, 0xe7, 0x20, 0x49, 0xa6, 0x62, 0x9f, 0xe6, 0x9e, 0x1c, 0x30, 0x95, - 0x37, 0xc5, 0x19, 0xbe, 0xc0, 0x51, 0xa6, 0x21, 0xbc, 0x73, 0x8f, 0xc3, 0x74, 0xdf, 0xf6, 0x20, - 0x19, 0x92, 0x57, 0xf1, 0x21, 0xff, 0x1a, 0x87, 0xfc, 0x8b, 0x66, 0x7b, 0x5f, 0x9b, 0x49, 0x0b, - 0x79, 0xfe, 0x09, 0x59, 0x39, 0x71, 0x51, 0x9a, 0xbb, 0x04, 0x93, 0x01, 0x1f, 0x1f, 0x0b, 0xfc, - 0x18, 0xc8, 0x61, 0x2f, 0x1d, 0x0b, 0x7f, 0x01, 0x32, 0x1f, 0x06, 0x37, 0xff, 0x7d, 0x04, 0x13, - 0x95, 0x56, 0x6b, 0x53, 0xeb, 0x38, 0xe8, 0x19, 0x98, 0x66, 0x0d, 0xfc, 0xae, 0xb5, 0x4a, 0x7f, - 0xe0, 0xd9, 0xd4, 0x3a, 0x3c, 0xa0, 0xef, 0x0d, 0xb8, 0x9b, 0x03, 0x16, 0xfb, 0xb4, 0xe9, 0xfc, - 0x4a, 0x3f, 0x0b, 0x7a, 0x12, 0x64, 0x21, 0xa4, 0x67, 0x8b, 0x30, 0xb3, 0x70, 0x3d, 0x33, 0x94, - 0x59, 0x28, 0x33, 0xe2, 0x3e, 0x0e, 0xf4, 0x18, 0x64, 0xd6, 0x4d, 0xf7, 0xa1, 0x25, 0xc2, 0xc7, - 0x62, 0x70, 0x3e, 0x92, 0x4f, 0x28, 0x31, 0x1e, 0x0f, 0xc3, 0xf1, 0x17, 0xce, 0x11, 0x7c, 0x6a, - 0x38, 0x9e, 0x2a, 0xf5, 0xf0, 0xf4, 0x11, 0x55, 0x20, 0x4b, 0xf6, 0x9c, 0x19, 0xc0, 0xbe, 0xf5, - 0xbe, 0x3d, 0x92, 0xc0, 0xd3, 0x62, 0x0c, 0x3d, 0x94, 0xa0, 0x60, 0x36, 0x8c, 0xc7, 0x50, 0xf8, - 0x8c, 0xe8, 0xa1, 0x08, 0x45, 0xcd, 0xb3, 0x62, 0x62, 0x08, 0x45, 0x2d, 0x64, 0x45, 0xcd, 0x6f, - 0x45, 0xcd, 0xb3, 0x22, 0x13, 0x43, 0xe1, 0xb7, 0xc2, 0x7b, 0x46, 0xab, 0x00, 0x97, 0x8d, 0x17, - 0x71, 0x9d, 0x99, 0x91, 0x8d, 0x48, 0x46, 0x82, 0xa3, 0xa7, 0xc6, 0x48, 0x7c, 0x38, 0xb4, 0x06, - 0xb9, 0x5a, 0xa3, 0x47, 0x03, 0xfc, 0x53, 0xf7, 0x48, 0x53, 0x1a, 0x21, 0x1e, 0x3f, 0xd2, 0x33, - 0x87, 0x2d, 0x29, 0x17, 0x67, 0x8e, 0x6f, 0x4d, 0x3e, 0x5c, 0xcf, 0x1c, 0x46, 0x93, 0x8f, 0x35, - 0xc7, 0xc7, 0xe3, 0x47, 0xa2, 0x4b, 0x30, 0xb1, 0x6c, 0x59, 0x44, 0xb3, 0x38, 0x49, 0x49, 0x4e, - 0x47, 0x92, 0x70, 0x1d, 0x46, 0x20, 0x10, 0x74, 0x77, 0x68, 0xe8, 0x13, 0x78, 0x61, 0xd8, 0xee, - 0x08, 0x2d, 0xb1, 0x3b, 0xe2, 0xd9, 0x7f, 0x02, 0x97, 0x0f, 0x5d, 0x4c, 0x9a, 0xe5, 0xe2, 0xd4, - 0x08, 0x27, 0x50, 0x28, 0x87, 0x4e, 0xa0, 0x10, 0xa3, 0x1a, 0x4c, 0x09, 0x59, 0xd5, 0xec, 0x92, - 0x1c, 0x5c, 0x94, 0xf9, 0x77, 0xb8, 0xc3, 0x68, 0xb9, 0x2e, 0x63, 0x0d, 0x33, 0xa0, 0x1d, 0x28, - 0x08, 0xd1, 0xa6, 0x43, 0x17, 0x3d, 0x1d, 0x51, 0x57, 0xc3, 0x9c, 0x4c, 0x95, 0x51, 0x86, 0xf0, - 0x73, 0xab, 0x70, 0x22, 0x3a, 0x5b, 0xc5, 0x65, 0x4b, 0xc9, 0x9f, 0x65, 0x57, 0xe0, 0xa6, 0xc8, - 0xcc, 0x14, 0x47, 0x92, 0x08, 0xd5, 0x89, 0x40, 0x3a, 0xf2, 0x83, 0xd3, 0x11, 0xe0, 0x74, 0x3f, - 0xb8, 0x17, 0x64, 0x7e, 0x70, 0x32, 0x02, 0x9c, 0xf4, 0x83, 0x3f, 0x0e, 0x85, 0x60, 0x1e, 0xf2, - 0xa3, 0x27, 0x23, 0xd0, 0x93, 0x11, 0xe8, 0xe8, 0xb9, 0x53, 0x11, 0xe8, 0x54, 0x08, 0x5d, 0x1b, - 0x38, 0xf7, 0x74, 0x04, 0x7a, 0x3a, 0x02, 0x1d, 0x3d, 0x37, 0x8a, 0x40, 0x23, 0x3f, 0xfa, 0x51, - 0x98, 0x0a, 0xa5, 0x1c, 0x3f, 0x7c, 0x22, 0x02, 0x3e, 0x11, 0xaa, 0xcd, 0xe1, 0x54, 0xe3, 0xc7, - 0x4f, 0x45, 0xe0, 0xa7, 0xa2, 0xa6, 0x8f, 0xb6, 0x7e, 0x3c, 0x02, 0x3e, 0x1e, 0x39, 0x7d, 0x34, - 0x5e, 0x8e, 0xc0, 0xcb, 0x7e, 0x7c, 0x19, 0xf2, 0xfe, 0xac, 0xe2, 0xc7, 0x66, 0x22, 0xb0, 0x99, - 0xb0, 0xdf, 0x03, 0x29, 0x25, 0x2e, 0xd2, 0xb3, 0x03, 0x8e, 0x4b, 0x20, 0x8d, 0x1c, 0xab, 0xb3, - 0x79, 0x1a, 0x66, 0xa3, 0x92, 0x46, 0x04, 0xc7, 0x19, 0x3f, 0x47, 0x61, 0x69, 0x36, 0x90, 0x2c, - 0x28, 0xae, 0xdb, 0xf6, 0x33, 0x3f, 0x07, 0x33, 0x11, 0xa9, 0x23, 0x82, 0xf8, 0x01, 0x3f, 0x71, - 0x6e, 0x69, 0x2e, 0x40, 0x1c, 0x78, 0x57, 0xf0, 0xb7, 0x56, 0x3f, 0x9c, 0x81, 0x02, 0x4f, 0x51, - 0xdb, 0x76, 0x1d, 0xdb, 0xb8, 0x8e, 0xfe, 0xdf, 0xe0, 0x0e, 0x6b, 0x29, 0x2a, 0xb5, 0x71, 0xdc, - 0x31, 0x1a, 0xad, 0xe7, 0x06, 0x36, 0x5a, 0x0f, 0x8e, 0x32, 0x41, 0x5c, 0xbf, 0x55, 0xed, 0xeb, - 0xb7, 0xee, 0x19, 0x46, 0x3b, 0xa8, 0xed, 0xaa, 0xf6, 0xb5, 0x5d, 0x71, 0x34, 0x91, 0xdd, 0xd7, - 0x95, 0xfe, 0xee, 0xeb, 0xcc, 0x30, 0x9e, 0xc1, 0x4d, 0xd8, 0x95, 0xfe, 0x26, 0x2c, 0x96, 0x29, - 0xba, 0x17, 0xbb, 0xd2, 0xdf, 0x8b, 0x0d, 0x65, 0x1a, 0xdc, 0x92, 0x5d, 0xe9, 0x6f, 0xc9, 0x62, - 0x99, 0xa2, 0x3b, 0xb3, 0x4f, 0x44, 0x74, 0x66, 0xf7, 0x0e, 0xa3, 0x1a, 0xd6, 0xa0, 0x6d, 0x45, - 0x35, 0x68, 0xf7, 0x0d, 0x35, 0x6c, 0x68, 0x9f, 0xf6, 0x89, 0x88, 0x3e, 0x2d, 0xde, 0xb8, 0x01, - 0xed, 0xda, 0x56, 0x54, 0xbb, 0x36, 0x82, 0x71, 0x83, 0xba, 0xb6, 0xe5, 0x70, 0xd7, 0xb6, 0x30, - 0x8c, 0x2b, 0xba, 0x79, 0xbb, 0xd2, 0xdf, 0xbc, 0x9d, 0x89, 0x3f, 0x8b, 0x51, 0x3d, 0xdc, 0x73, - 0x03, 0x7b, 0xb8, 0x91, 0x0e, 0x77, 0x5c, 0x2b, 0xf7, 0xec, 0xa0, 0x56, 0xee, 0x81, 0x51, 0xd8, - 0x87, 0x77, 0x74, 0x4f, 0x0d, 0xe8, 0xe8, 0xce, 0x8e, 0x42, 0xfd, 0x51, 0x63, 0xf7, 0x51, 0x63, - 0xf7, 0x51, 0x63, 0xf7, 0x51, 0x63, 0xf7, 0x8b, 0xd1, 0xd8, 0x95, 0x53, 0xaf, 0x7c, 0xf9, 0xa4, - 0x74, 0xe6, 0x34, 0x4c, 0xf0, 0xa9, 0xd1, 0x38, 0x24, 0x36, 0x2b, 0xf2, 0x18, 0xfd, 0xbb, 0x2c, - 0x4b, 0xf4, 0xef, 0x8a, 0x9c, 0x58, 0xde, 0x78, 0xf3, 0x46, 0x69, 0xec, 0xbb, 0x37, 0x4a, 0x63, - 0xdf, 0xbf, 0x51, 0x1a, 0xfb, 0xd1, 0x8d, 0x92, 0xf4, 0xce, 0x8d, 0x92, 0xf4, 0xde, 0x8d, 0x92, - 0xf4, 0x93, 0x1b, 0x25, 0xe9, 0xfa, 0x51, 0x49, 0xfa, 0xea, 0x51, 0x49, 0xfa, 0xfa, 0x51, 0x49, - 0xfa, 0xd6, 0x51, 0x49, 0xfa, 0xf6, 0x51, 0x49, 0x7a, 0xf3, 0xa8, 0x34, 0xf6, 0xdd, 0xa3, 0xd2, - 0xd8, 0x8f, 0x8e, 0x4a, 0xd2, 0x3b, 0x47, 0xa5, 0xb1, 0xf7, 0x8e, 0x4a, 0xd2, 0x4f, 0x8e, 0x4a, - 0xd2, 0xf5, 0x7f, 0x2a, 0x8d, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x27, 0x8b, 0xdc, - 0x7a, 0x44, 0x00, 0x00, + 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x48, 0x5e, 0xd3, 0x72, 0x4c, 0xed, 0xca, + 0x8f, 0x95, 0xd7, 0xb6, 0x64, 0xcb, 0xbb, 0xeb, 0x35, 0x37, 0xb6, 0x41, 0x49, 0x5c, 0xad, 0x6c, + 0xbd, 0x32, 0x94, 0xec, 0xb5, 0xff, 0x30, 0xe6, 0x3f, 0x1a, 0x5e, 0x52, 0xe3, 0x1d, 0xce, 0xd0, + 0x33, 0xc3, 0xf5, 0xca, 0x1f, 0x8a, 0x2d, 0xdc, 0x07, 0x82, 0xa2, 0xef, 0x02, 0x75, 0x5c, 0xc7, + 0x6d, 0x02, 0xb4, 0x4e, 0x93, 0x3e, 0x92, 0x3e, 0xd2, 0xa0, 0x9f, 0xf2, 0x25, 0xad, 0x81, 0x02, + 0x45, 0xf2, 0x2d, 0x08, 0x02, 0xc3, 0xab, 0x18, 0xa8, 0xdb, 0xba, 0xad, 0xdb, 0x18, 0x68, 0x00, + 0xa3, 0x40, 0x71, 0x5f, 0xc3, 0x99, 0xe1, 0x90, 0x43, 0x19, 0x70, 0xd2, 0x0f, 0xfe, 0x24, 0xcd, + 0xb9, 0xe7, 0xf7, 0xbb, 0xe7, 0x9e, 0x7b, 0xee, 0x39, 0x67, 0x2e, 0x07, 0x7e, 0x74, 0x0e, 0x4e, + 0x36, 0x2d, 0xab, 0x69, 0xa0, 0xc5, 0xb6, 0x6d, 0xb9, 0xd6, 0x7e, 0xa7, 0xb1, 0x58, 0x47, 0x8e, + 0x66, 0xeb, 0x6d, 0xd7, 0xb2, 0x17, 0x88, 0x4c, 0x9a, 0xa0, 0x1a, 0x0b, 0x5c, 0x63, 0x6e, 0x13, + 0x26, 0x2f, 0xe9, 0x06, 0x5a, 0xf5, 0x14, 0x6b, 0xc8, 0x95, 0x2e, 0x40, 0xaa, 0xa1, 0x1b, 0xa8, + 0x28, 0x9c, 0x4c, 0xce, 0xe7, 0x96, 0xee, 0x5a, 0x08, 0x81, 0x16, 0x82, 0x88, 0x1d, 0x2c, 0x96, + 0x09, 0x62, 0xee, 0xdd, 0x14, 0x4c, 0x45, 0x8c, 0x4a, 0x12, 0xa4, 0x4c, 0xb5, 0x85, 0x19, 0x85, + 0xf9, 0xac, 0x4c, 0xfe, 0x97, 0x8a, 0x30, 0xd6, 0x56, 0xb5, 0xab, 0x6a, 0x13, 0x15, 0x13, 0x44, + 0xcc, 0x1f, 0xa5, 0x12, 0x40, 0x1d, 0xb5, 0x91, 0x59, 0x47, 0xa6, 0x76, 0x58, 0x4c, 0x9e, 0x4c, + 0xce, 0x67, 0x65, 0x9f, 0x44, 0xba, 0x0f, 0x26, 0xdb, 0x9d, 0x7d, 0x43, 0xd7, 0x14, 0x9f, 0x1a, + 0x9c, 0x4c, 0xce, 0xa7, 0x65, 0x91, 0x0e, 0xac, 0x76, 0x95, 0x4f, 0xc3, 0xc4, 0x4b, 0x48, 0xbd, + 0xea, 0x57, 0xcd, 0x11, 0xd5, 0x02, 0x16, 0xfb, 0x14, 0x57, 0x20, 0xdf, 0x42, 0x8e, 0xa3, 0x36, + 0x91, 0xe2, 0x1e, 0xb6, 0x51, 0x31, 0x45, 0x56, 0x7f, 0xb2, 0x67, 0xf5, 0xe1, 0x95, 0xe7, 0x18, + 0x6a, 0xf7, 0xb0, 0x8d, 0xa4, 0x0a, 0x64, 0x91, 0xd9, 0x69, 0x51, 0x86, 0x74, 0x1f, 0xff, 0x55, + 0xcd, 0x4e, 0x2b, 0xcc, 0x92, 0xc1, 0x30, 0x46, 0x31, 0xe6, 0x20, 0xfb, 0x9a, 0xae, 0xa1, 0xe2, + 0x28, 0x21, 0x38, 0xdd, 0x43, 0x50, 0xa3, 0xe3, 0x61, 0x0e, 0x8e, 0x93, 0x56, 0x20, 0x8b, 0xae, + 0xbb, 0xc8, 0x74, 0x74, 0xcb, 0x2c, 0x8e, 0x11, 0x92, 0xbb, 0x23, 0x76, 0x11, 0x19, 0xf5, 0x30, + 0x45, 0x17, 0x27, 0x9d, 0x87, 0x31, 0xab, 0xed, 0xea, 0x96, 0xe9, 0x14, 0x33, 0x27, 0x85, 0xf9, + 0xdc, 0xd2, 0x67, 0x22, 0x03, 0x61, 0x9b, 0xea, 0xc8, 0x5c, 0x59, 0x5a, 0x07, 0xd1, 0xb1, 0x3a, + 0xb6, 0x86, 0x14, 0xcd, 0xaa, 0x23, 0x45, 0x37, 0x1b, 0x56, 0x31, 0x4b, 0x08, 0x66, 0x7b, 0x17, + 0x42, 0x14, 0x57, 0xac, 0x3a, 0x5a, 0x37, 0x1b, 0x96, 0x5c, 0x70, 0x02, 0xcf, 0xd2, 0x09, 0x18, + 0x75, 0x0e, 0x4d, 0x57, 0xbd, 0x5e, 0xcc, 0x93, 0x08, 0x61, 0x4f, 0x73, 0xff, 0x9d, 0x86, 0x89, + 0x61, 0x42, 0xec, 0x22, 0xa4, 0x1b, 0x78, 0x95, 0xc5, 0xc4, 0x71, 0x7c, 0x40, 0x31, 0x41, 0x27, + 0x8e, 0x7e, 0x4c, 0x27, 0x56, 0x20, 0x67, 0x22, 0xc7, 0x45, 0x75, 0x1a, 0x11, 0xc9, 0x21, 0x63, + 0x0a, 0x28, 0xa8, 0x37, 0xa4, 0x52, 0x1f, 0x2b, 0xa4, 0xae, 0xc0, 0x84, 0x67, 0x92, 0x62, 0xab, + 0x66, 0x93, 0xc7, 0xe6, 0x62, 0x9c, 0x25, 0x0b, 0x55, 0x8e, 0x93, 0x31, 0x4c, 0x2e, 0xa0, 0xc0, + 0xb3, 0xb4, 0x0a, 0x60, 0x99, 0xc8, 0x6a, 0x28, 0x75, 0xa4, 0x19, 0xc5, 0x4c, 0x1f, 0x2f, 0x6d, + 0x63, 0x95, 0x1e, 0x2f, 0x59, 0x54, 0xaa, 0x19, 0xd2, 0xa3, 0xdd, 0x50, 0x1b, 0xeb, 0x13, 0x29, + 0x9b, 0xf4, 0x90, 0xf5, 0x44, 0xdb, 0x1e, 0x14, 0x6c, 0x84, 0xe3, 0x1e, 0xd5, 0xd9, 0xca, 0xb2, + 0xc4, 0x88, 0x85, 0xd8, 0x95, 0xc9, 0x0c, 0x46, 0x17, 0x36, 0x6e, 0xfb, 0x1f, 0xa5, 0x3b, 0xc1, + 0x13, 0x28, 0x24, 0xac, 0x80, 0x64, 0xa1, 0x3c, 0x17, 0x6e, 0xa9, 0x2d, 0x34, 0x73, 0x01, 0x0a, + 0x41, 0xf7, 0x48, 0xd3, 0x90, 0x76, 0x5c, 0xd5, 0x76, 0x49, 0x14, 0xa6, 0x65, 0xfa, 0x20, 0x89, + 0x90, 0x44, 0x66, 0x9d, 0x64, 0xb9, 0xb4, 0x8c, 0xff, 0x9d, 0x79, 0x04, 0xc6, 0x03, 0xd3, 0x0f, + 0x0b, 0x9c, 0x7b, 0x75, 0x14, 0xa6, 0xa3, 0x62, 0x2e, 0x32, 0xfc, 0x4f, 0xc0, 0xa8, 0xd9, 0x69, + 0xed, 0x23, 0xbb, 0x98, 0x24, 0x0c, 0xec, 0x49, 0xaa, 0x40, 0xda, 0x50, 0xf7, 0x91, 0x51, 0x4c, + 0x9d, 0x14, 0xe6, 0x0b, 0x4b, 0xf7, 0x0d, 0x15, 0xd5, 0x0b, 0x1b, 0x18, 0x22, 0x53, 0xa4, 0xf4, + 0x38, 0xa4, 0x58, 0x8a, 0xc3, 0x0c, 0x67, 0x86, 0x63, 0xc0, 0xb1, 0x28, 0x13, 0x9c, 0x74, 0x3b, + 0x64, 0xf1, 0x5f, 0xea, 0xdb, 0x51, 0x62, 0x73, 0x06, 0x0b, 0xb0, 0x5f, 0xa5, 0x19, 0xc8, 0x90, + 0x30, 0xab, 0x23, 0x5e, 0x1a, 0xbc, 0x67, 0xbc, 0x31, 0x75, 0xd4, 0x50, 0x3b, 0x86, 0xab, 0x5c, + 0x53, 0x8d, 0x0e, 0x22, 0x01, 0x93, 0x95, 0xf3, 0x4c, 0xf8, 0x34, 0x96, 0x49, 0xb3, 0x90, 0xa3, + 0x51, 0xa9, 0x9b, 0x75, 0x74, 0x9d, 0x64, 0x9f, 0xb4, 0x4c, 0x03, 0x75, 0x1d, 0x4b, 0xf0, 0xf4, + 0x2f, 0x38, 0x96, 0xc9, 0xb7, 0x96, 0x4c, 0x81, 0x05, 0x64, 0xfa, 0x47, 0xc2, 0x89, 0xef, 0x8e, + 0xe8, 0xe5, 0x85, 0x63, 0x71, 0xee, 0x9b, 0x09, 0x48, 0x91, 0xf3, 0x36, 0x01, 0xb9, 0xdd, 0x67, + 0x77, 0xaa, 0xca, 0xea, 0xf6, 0xde, 0xf2, 0x46, 0x55, 0x14, 0xa4, 0x02, 0x00, 0x11, 0x5c, 0xda, + 0xd8, 0xae, 0xec, 0x8a, 0x09, 0xef, 0x79, 0x7d, 0x6b, 0xf7, 0xfc, 0x59, 0x31, 0xe9, 0x01, 0xf6, + 0xa8, 0x20, 0xe5, 0x57, 0x78, 0x78, 0x49, 0x4c, 0x4b, 0x22, 0xe4, 0x29, 0xc1, 0xfa, 0x95, 0xea, + 0xea, 0xf9, 0xb3, 0xe2, 0x68, 0x50, 0xf2, 0xf0, 0x92, 0x38, 0x26, 0x8d, 0x43, 0x96, 0x48, 0x96, + 0xb7, 0xb7, 0x37, 0xc4, 0x8c, 0xc7, 0x59, 0xdb, 0x95, 0xd7, 0xb7, 0xd6, 0xc4, 0xac, 0xc7, 0xb9, + 0x26, 0x6f, 0xef, 0xed, 0x88, 0xe0, 0x31, 0x6c, 0x56, 0x6b, 0xb5, 0xca, 0x5a, 0x55, 0xcc, 0x79, + 0x1a, 0xcb, 0xcf, 0xee, 0x56, 0x6b, 0x62, 0x3e, 0x60, 0xd6, 0xc3, 0x4b, 0xe2, 0xb8, 0x37, 0x45, + 0x75, 0x6b, 0x6f, 0x53, 0x2c, 0x48, 0x93, 0x30, 0x4e, 0xa7, 0xe0, 0x46, 0x4c, 0x84, 0x44, 0xe7, + 0xcf, 0x8a, 0x62, 0xd7, 0x10, 0xca, 0x32, 0x19, 0x10, 0x9c, 0x3f, 0x2b, 0x4a, 0x73, 0x2b, 0x90, + 0x26, 0xd1, 0x25, 0x49, 0x50, 0xd8, 0xa8, 0x2c, 0x57, 0x37, 0x94, 0xed, 0x9d, 0xdd, 0xf5, 0xed, + 0xad, 0xca, 0x86, 0x28, 0x74, 0x65, 0x72, 0xf5, 0x73, 0x7b, 0xeb, 0x72, 0x75, 0x55, 0x4c, 0xf8, + 0x65, 0x3b, 0xd5, 0xca, 0x6e, 0x75, 0x55, 0x4c, 0xce, 0x69, 0x30, 0x1d, 0x95, 0x67, 0x22, 0x4f, + 0x86, 0x6f, 0x8b, 0x13, 0x7d, 0xb6, 0x98, 0x70, 0xf5, 0x6c, 0xf1, 0x97, 0x05, 0x98, 0x8a, 0xc8, + 0xb5, 0x91, 0x93, 0x3c, 0x01, 0x69, 0x1a, 0xa2, 0xb4, 0xfa, 0xdc, 0x1b, 0x99, 0xb4, 0x49, 0xc0, + 0xf6, 0x54, 0x20, 0x82, 0xf3, 0x57, 0xe0, 0x64, 0x9f, 0x0a, 0x8c, 0x29, 0x7a, 0x8c, 0x7c, 0x45, + 0x80, 0x62, 0x3f, 0xee, 0x98, 0x44, 0x91, 0x08, 0x24, 0x8a, 0x8b, 0x61, 0x03, 0x4e, 0xf5, 0x5f, + 0x43, 0x8f, 0x15, 0x6f, 0x0a, 0x70, 0x22, 0xba, 0x51, 0x89, 0xb4, 0xe1, 0x71, 0x18, 0x6d, 0x21, + 0xf7, 0xc0, 0xe2, 0xc5, 0xfa, 0x9e, 0x88, 0x12, 0x80, 0x87, 0xc3, 0xbe, 0x62, 0x28, 0x7f, 0x0d, + 0x49, 0xf6, 0xeb, 0x36, 0xa8, 0x35, 0x3d, 0x96, 0x7e, 0x3e, 0x01, 0xb7, 0x44, 0x92, 0x47, 0x1a, + 0x7a, 0x07, 0x80, 0x6e, 0xb6, 0x3b, 0x2e, 0x2d, 0xc8, 0x34, 0x3f, 0x65, 0x89, 0x84, 0x9c, 0x7d, + 0x9c, 0x7b, 0x3a, 0xae, 0x37, 0x9e, 0x24, 0xe3, 0x40, 0x45, 0x44, 0xe1, 0x42, 0xd7, 0xd0, 0x14, + 0x31, 0xb4, 0xd4, 0x67, 0xa5, 0x3d, 0xb5, 0xee, 0x41, 0x10, 0x35, 0x43, 0x47, 0xa6, 0xab, 0x38, + 0xae, 0x8d, 0xd4, 0x96, 0x6e, 0x36, 0x49, 0x02, 0xce, 0x94, 0xd3, 0x0d, 0xd5, 0x70, 0x90, 0x3c, + 0x41, 0x87, 0x6b, 0x7c, 0x14, 0x23, 0x48, 0x95, 0xb1, 0x7d, 0x88, 0xd1, 0x00, 0x82, 0x0e, 0x7b, + 0x88, 0xb9, 0xaf, 0x8d, 0x41, 0xce, 0xd7, 0xd6, 0x49, 0xa7, 0x20, 0xff, 0x82, 0x7a, 0x4d, 0x55, + 0x78, 0xab, 0x4e, 0x3d, 0x91, 0xc3, 0xb2, 0x1d, 0xd6, 0xae, 0x3f, 0x08, 0xd3, 0x44, 0xc5, 0xea, + 0xb8, 0xc8, 0x56, 0x34, 0x43, 0x75, 0x1c, 0xe2, 0xb4, 0x0c, 0x51, 0x95, 0xf0, 0xd8, 0x36, 0x1e, + 0x5a, 0xe1, 0x23, 0xd2, 0x39, 0x98, 0x22, 0x88, 0x56, 0xc7, 0x70, 0xf5, 0xb6, 0x81, 0x14, 0xfc, + 0xf2, 0xe0, 0x90, 0x44, 0xec, 0x59, 0x36, 0x89, 0x35, 0x36, 0x99, 0x02, 0xb6, 0xc8, 0x91, 0x56, + 0xe1, 0x0e, 0x02, 0x6b, 0x22, 0x13, 0xd9, 0xaa, 0x8b, 0x14, 0xf4, 0x62, 0x47, 0x35, 0x1c, 0x45, + 0x35, 0xeb, 0xca, 0x81, 0xea, 0x1c, 0x14, 0xa7, 0x31, 0xc1, 0x72, 0xa2, 0x28, 0xc8, 0xb7, 0x61, + 0xc5, 0x35, 0xa6, 0x57, 0x25, 0x6a, 0x15, 0xb3, 0x7e, 0x59, 0x75, 0x0e, 0xa4, 0x32, 0x9c, 0x20, + 0x2c, 0x8e, 0x6b, 0xeb, 0x66, 0x53, 0xd1, 0x0e, 0x90, 0x76, 0x55, 0xe9, 0xb8, 0x8d, 0x0b, 0xc5, + 0xdb, 0xfd, 0xf3, 0x13, 0x0b, 0x6b, 0x44, 0x67, 0x05, 0xab, 0xec, 0xb9, 0x8d, 0x0b, 0x52, 0x0d, + 0xf2, 0x78, 0x33, 0x5a, 0xfa, 0xcb, 0x48, 0x69, 0x58, 0x36, 0xa9, 0x2c, 0x85, 0x88, 0x93, 0xed, + 0xf3, 0xe0, 0xc2, 0x36, 0x03, 0x6c, 0x5a, 0x75, 0x54, 0x4e, 0xd7, 0x76, 0xaa, 0xd5, 0x55, 0x39, + 0xc7, 0x59, 0x2e, 0x59, 0x36, 0x0e, 0xa8, 0xa6, 0xe5, 0x39, 0x38, 0x47, 0x03, 0xaa, 0x69, 0x71, + 0xf7, 0x9e, 0x83, 0x29, 0x4d, 0xa3, 0x6b, 0xd6, 0x35, 0x85, 0xb5, 0xf8, 0x4e, 0x51, 0x0c, 0x38, + 0x4b, 0xd3, 0xd6, 0xa8, 0x02, 0x8b, 0x71, 0x47, 0x7a, 0x14, 0x6e, 0xe9, 0x3a, 0xcb, 0x0f, 0x9c, + 0xec, 0x59, 0x65, 0x18, 0x7a, 0x0e, 0xa6, 0xda, 0x87, 0xbd, 0x40, 0x29, 0x30, 0x63, 0xfb, 0x30, + 0x0c, 0xbb, 0x9b, 0xbc, 0xb6, 0xd9, 0x48, 0x53, 0x5d, 0x54, 0x2f, 0xde, 0xea, 0xd7, 0xf6, 0x0d, + 0x48, 0x8b, 0x20, 0x6a, 0x9a, 0x82, 0x4c, 0x75, 0xdf, 0x40, 0x8a, 0x6a, 0x23, 0x53, 0x75, 0x8a, + 0xb3, 0x7e, 0xe5, 0x82, 0xa6, 0x55, 0xc9, 0x68, 0x85, 0x0c, 0x4a, 0x67, 0x60, 0xd2, 0xda, 0x7f, + 0x41, 0xa3, 0x91, 0xa5, 0xb4, 0x6d, 0xd4, 0xd0, 0xaf, 0x17, 0xef, 0x22, 0x6e, 0x9a, 0xc0, 0x03, + 0x24, 0xae, 0x76, 0x88, 0x58, 0xba, 0x17, 0x44, 0xcd, 0x39, 0x50, 0xed, 0x36, 0x29, 0xed, 0x4e, + 0x5b, 0xd5, 0x50, 0xf1, 0x6e, 0xaa, 0x4a, 0xe5, 0x5b, 0x5c, 0x8c, 0x23, 0xdb, 0x79, 0x49, 0x6f, + 0xb8, 0x9c, 0xf1, 0x34, 0x8d, 0x6c, 0x22, 0x63, 0x6c, 0x57, 0x60, 0xba, 0x63, 0xea, 0xa6, 0x8b, + 0xec, 0xb6, 0x8d, 0x70, 0x13, 0x4f, 0x4f, 0x62, 0xf1, 0x9f, 0xc6, 0xfa, 0xb4, 0xe1, 0x7b, 0x7e, + 0x6d, 0x1a, 0x00, 0xf2, 0x54, 0xa7, 0x57, 0x38, 0x57, 0x86, 0xbc, 0x3f, 0x2e, 0xa4, 0x2c, 0xd0, + 0xc8, 0x10, 0x05, 0x5c, 0x63, 0x57, 0xb6, 0x57, 0x71, 0x75, 0x7c, 0xae, 0x2a, 0x26, 0x70, 0x95, + 0xde, 0x58, 0xdf, 0xad, 0x2a, 0xf2, 0xde, 0xd6, 0xee, 0xfa, 0x66, 0x55, 0x4c, 0x9e, 0xc9, 0x66, + 0xde, 0x1b, 0x13, 0x6f, 0xdc, 0xb8, 0x71, 0x23, 0x31, 0xf7, 0x9d, 0x04, 0x14, 0x82, 0x9d, 0xb1, + 0xf4, 0x59, 0xb8, 0x95, 0xbf, 0xc6, 0x3a, 0xc8, 0x55, 0x5e, 0xd2, 0x6d, 0x12, 0xaa, 0x2d, 0x95, + 0xf6, 0x96, 0x9e, 0x97, 0xa7, 0x99, 0x56, 0x0d, 0xb9, 0xcf, 0xe8, 0x36, 0x0e, 0xc4, 0x96, 0xea, + 0x4a, 0x1b, 0x30, 0x6b, 0x5a, 0x8a, 0xe3, 0xaa, 0x66, 0x5d, 0xb5, 0xeb, 0x4a, 0xf7, 0x02, 0x41, + 0x51, 0x35, 0x0d, 0x39, 0x8e, 0x45, 0x4b, 0x84, 0xc7, 0xf2, 0x19, 0xd3, 0xaa, 0x31, 0xe5, 0x6e, + 0xee, 0xac, 0x30, 0xd5, 0x50, 0x44, 0x24, 0xfb, 0x45, 0xc4, 0xed, 0x90, 0x6d, 0xa9, 0x6d, 0x05, + 0x99, 0xae, 0x7d, 0x48, 0xfa, 0xb9, 0x8c, 0x9c, 0x69, 0xa9, 0xed, 0x2a, 0x7e, 0xfe, 0xe4, 0xf6, + 0xc0, 0xef, 0xc7, 0x1f, 0x26, 0x21, 0xef, 0xef, 0xe9, 0x70, 0x8b, 0xac, 0x91, 0xfc, 0x2d, 0x90, + 0x13, 0x7e, 0xe7, 0xc0, 0x0e, 0x70, 0x61, 0x05, 0x27, 0xf6, 0xf2, 0x28, 0xed, 0xb4, 0x64, 0x8a, + 0xc4, 0x45, 0x15, 0x9f, 0x69, 0x44, 0xfb, 0xf7, 0x8c, 0xcc, 0x9e, 0xa4, 0x35, 0x18, 0x7d, 0xc1, + 0x21, 0xdc, 0xa3, 0x84, 0xfb, 0xae, 0xc1, 0xdc, 0x4f, 0xd6, 0x08, 0x79, 0xf6, 0xc9, 0x9a, 0xb2, + 0xb5, 0x2d, 0x6f, 0x56, 0x36, 0x64, 0x06, 0x97, 0x6e, 0x83, 0x94, 0xa1, 0xbe, 0x7c, 0x18, 0x2c, + 0x01, 0x44, 0x34, 0xac, 0xe3, 0x6f, 0x83, 0xd4, 0x4b, 0x48, 0xbd, 0x1a, 0x4c, 0xbc, 0x44, 0xf4, + 0x09, 0x86, 0xfe, 0x22, 0xa4, 0x89, 0xbf, 0x24, 0x00, 0xe6, 0x31, 0x71, 0x44, 0xca, 0x40, 0x6a, + 0x65, 0x5b, 0xc6, 0xe1, 0x2f, 0x42, 0x9e, 0x4a, 0x95, 0x9d, 0xf5, 0xea, 0x4a, 0x55, 0x4c, 0xcc, + 0x9d, 0x83, 0x51, 0xea, 0x04, 0x7c, 0x34, 0x3c, 0x37, 0x88, 0x23, 0xec, 0x91, 0x71, 0x08, 0x7c, + 0x74, 0x6f, 0x73, 0xb9, 0x2a, 0x8b, 0x09, 0xff, 0xf6, 0x3a, 0x90, 0xf7, 0xb7, 0x73, 0x3f, 0x9d, + 0x98, 0xfa, 0x5b, 0x01, 0x72, 0xbe, 0xf6, 0x0c, 0x37, 0x06, 0xaa, 0x61, 0x58, 0x2f, 0x29, 0xaa, + 0xa1, 0xab, 0x0e, 0x0b, 0x0a, 0x20, 0xa2, 0x0a, 0x96, 0x0c, 0xbb, 0x69, 0x3f, 0x15, 0xe3, 0xdf, + 0x10, 0x40, 0x0c, 0xb7, 0x76, 0x21, 0x03, 0x85, 0x9f, 0xa9, 0x81, 0xaf, 0x0b, 0x50, 0x08, 0xf6, + 0x73, 0x21, 0xf3, 0x4e, 0xfd, 0x4c, 0xcd, 0x7b, 0x27, 0x01, 0xe3, 0x81, 0x2e, 0x6e, 0x58, 0xeb, + 0x5e, 0x84, 0x49, 0xbd, 0x8e, 0x5a, 0x6d, 0xcb, 0x45, 0xa6, 0x76, 0xa8, 0x18, 0xe8, 0x1a, 0x32, + 0x8a, 0x73, 0x24, 0x51, 0x2c, 0x0e, 0xee, 0x13, 0x17, 0xd6, 0xbb, 0xb8, 0x0d, 0x0c, 0x2b, 0x4f, + 0xad, 0xaf, 0x56, 0x37, 0x77, 0xb6, 0x77, 0xab, 0x5b, 0x2b, 0xcf, 0x2a, 0x7b, 0x5b, 0x4f, 0x6d, + 0x6d, 0x3f, 0xb3, 0x25, 0x8b, 0x7a, 0x48, 0xed, 0x13, 0x3c, 0xea, 0x3b, 0x20, 0x86, 0x8d, 0x92, + 0x6e, 0x85, 0x28, 0xb3, 0xc4, 0x11, 0x69, 0x0a, 0x26, 0xb6, 0xb6, 0x95, 0xda, 0xfa, 0x6a, 0x55, + 0xa9, 0x5e, 0xba, 0x54, 0x5d, 0xd9, 0xad, 0xd1, 0x17, 0x67, 0x4f, 0x7b, 0x37, 0x78, 0xa8, 0x5f, + 0x4b, 0xc2, 0x54, 0x84, 0x25, 0x52, 0x85, 0xf5, 0xec, 0xf4, 0x35, 0xe2, 0x81, 0x61, 0xac, 0x5f, + 0xc0, 0x5d, 0xc1, 0x8e, 0x6a, 0xbb, 0xac, 0xc5, 0xbf, 0x17, 0xb0, 0x97, 0x4c, 0x57, 0x6f, 0xe8, + 0xc8, 0x66, 0xf7, 0x0c, 0xb4, 0x91, 0x9f, 0xe8, 0xca, 0xe9, 0x55, 0xc3, 0xfd, 0x20, 0xb5, 0x2d, + 0x47, 0x77, 0xf5, 0x6b, 0x48, 0xd1, 0x4d, 0x7e, 0x29, 0x81, 0x1b, 0xfb, 0x94, 0x2c, 0xf2, 0x91, + 0x75, 0xd3, 0xf5, 0xb4, 0x4d, 0xd4, 0x54, 0x43, 0xda, 0x38, 0x81, 0x27, 0x65, 0x91, 0x8f, 0x78, + 0xda, 0xa7, 0x20, 0x5f, 0xb7, 0x3a, 0xb8, 0x4d, 0xa2, 0x7a, 0xb8, 0x5e, 0x08, 0x72, 0x8e, 0xca, + 0x3c, 0x15, 0xd6, 0xc7, 0x76, 0x6f, 0x43, 0xf2, 0x72, 0x8e, 0xca, 0xa8, 0xca, 0x69, 0x98, 0x50, + 0x9b, 0x4d, 0x1b, 0x93, 0x73, 0x22, 0xda, 0x99, 0x17, 0x3c, 0x31, 0x51, 0x9c, 0x79, 0x12, 0x32, + 0xdc, 0x0f, 0xb8, 0x24, 0x63, 0x4f, 0x28, 0x6d, 0x7a, 0x27, 0x95, 0x98, 0xcf, 0xca, 0x19, 0x93, + 0x0f, 0x9e, 0x82, 0xbc, 0xee, 0x28, 0xdd, 0xcb, 0xd1, 0xc4, 0xc9, 0xc4, 0x7c, 0x46, 0xce, 0xe9, + 0x8e, 0x77, 0x1b, 0x36, 0xf7, 0x66, 0x02, 0x0a, 0xc1, 0xcb, 0x5d, 0x69, 0x15, 0x32, 0x86, 0xa5, + 0xa9, 0x24, 0xb4, 0xe8, 0x2f, 0x0b, 0xf3, 0x31, 0xf7, 0xc1, 0x0b, 0x1b, 0x4c, 0x5f, 0xf6, 0x90, + 0x33, 0xff, 0x28, 0x40, 0x86, 0x8b, 0xa5, 0x13, 0x90, 0x6a, 0xab, 0xee, 0x01, 0xa1, 0x4b, 0x2f, + 0x27, 0x44, 0x41, 0x26, 0xcf, 0x58, 0xee, 0xb4, 0x55, 0x93, 0x84, 0x00, 0x93, 0xe3, 0x67, 0xbc, + 0xaf, 0x06, 0x52, 0xeb, 0xa4, 0xed, 0xb7, 0x5a, 0x2d, 0x64, 0xba, 0x0e, 0xdf, 0x57, 0x26, 0x5f, + 0x61, 0x62, 0xe9, 0x3e, 0x98, 0x74, 0x6d, 0x55, 0x37, 0x02, 0xba, 0x29, 0xa2, 0x2b, 0xf2, 0x01, + 0x4f, 0xb9, 0x0c, 0xb7, 0x71, 0xde, 0x3a, 0x72, 0x55, 0xed, 0x00, 0xd5, 0xbb, 0xa0, 0x51, 0x72, + 0x73, 0x78, 0x2b, 0x53, 0x58, 0x65, 0xe3, 0x1c, 0x3b, 0xf7, 0x3d, 0x01, 0x26, 0xf9, 0x8b, 0x4a, + 0xdd, 0x73, 0xd6, 0x26, 0x80, 0x6a, 0x9a, 0x96, 0xeb, 0x77, 0x57, 0x6f, 0x28, 0xf7, 0xe0, 0x16, + 0x2a, 0x1e, 0x48, 0xf6, 0x11, 0xcc, 0xb4, 0x00, 0xba, 0x23, 0x7d, 0xdd, 0x36, 0x0b, 0x39, 0x76, + 0x73, 0x4f, 0x7e, 0xfe, 0xa1, 0xaf, 0xb6, 0x40, 0x45, 0xf8, 0x8d, 0x46, 0x9a, 0x86, 0xf4, 0x3e, + 0x6a, 0xea, 0x26, 0xbb, 0x4f, 0xa4, 0x0f, 0xfc, 0x96, 0x32, 0xe5, 0xdd, 0x52, 0x2e, 0x5f, 0x81, + 0x29, 0xcd, 0x6a, 0x85, 0xcd, 0x5d, 0x16, 0x43, 0xaf, 0xd7, 0xce, 0x65, 0xe1, 0x39, 0xe8, 0xb6, + 0x98, 0x5f, 0x4e, 0x24, 0xd7, 0x76, 0x96, 0xbf, 0x9a, 0x98, 0x59, 0xa3, 0xb8, 0x1d, 0xbe, 0x4c, + 0x19, 0x35, 0x0c, 0xa4, 0x61, 0xd3, 0xe1, 0xc7, 0xf7, 0xc0, 0x03, 0x4d, 0xdd, 0x3d, 0xe8, 0xec, + 0x2f, 0x68, 0x56, 0x6b, 0xb1, 0x69, 0x35, 0xad, 0xee, 0xcf, 0x5d, 0xf8, 0x89, 0x3c, 0x90, 0xff, + 0xd8, 0x4f, 0x5e, 0x59, 0x4f, 0x3a, 0x13, 0xfb, 0xfb, 0x58, 0x79, 0x0b, 0xa6, 0x98, 0xb2, 0x42, + 0xee, 0xdc, 0xe9, 0xab, 0x81, 0x34, 0xf0, 0xde, 0xa5, 0xf8, 0x8d, 0x77, 0x49, 0xad, 0x96, 0x27, + 0x19, 0x14, 0x8f, 0xd1, 0x17, 0x88, 0xb2, 0x0c, 0xb7, 0x04, 0xf8, 0xe8, 0xb9, 0x44, 0x76, 0x0c, + 0xe3, 0x77, 0x18, 0xe3, 0x94, 0x8f, 0xb1, 0xc6, 0xa0, 0xe5, 0x15, 0x18, 0x3f, 0x0e, 0xd7, 0xdf, + 0x31, 0xae, 0x3c, 0xf2, 0x93, 0xac, 0xc1, 0x04, 0x21, 0xd1, 0x3a, 0x8e, 0x6b, 0xb5, 0x48, 0xd2, + 0x1b, 0x4c, 0xf3, 0xf7, 0xef, 0xd2, 0x83, 0x52, 0xc0, 0xb0, 0x15, 0x0f, 0x55, 0x2e, 0x03, 0xf9, + 0x99, 0xa1, 0x8e, 0x34, 0x23, 0x86, 0xe1, 0x2d, 0x66, 0x88, 0xa7, 0x5f, 0x7e, 0x1a, 0xa6, 0xf1, + 0xff, 0x24, 0x27, 0xf9, 0x2d, 0x89, 0xbf, 0x65, 0x2a, 0x7e, 0xef, 0x15, 0x7a, 0x16, 0xa7, 0x3c, + 0x02, 0x9f, 0x4d, 0xbe, 0x5d, 0x6c, 0x22, 0xd7, 0x45, 0xb6, 0xa3, 0xa8, 0x46, 0x94, 0x79, 0xbe, + 0xd7, 0xf4, 0xe2, 0x17, 0xde, 0x0f, 0xee, 0xe2, 0x1a, 0x45, 0x56, 0x0c, 0xa3, 0xbc, 0x07, 0xb7, + 0x46, 0x44, 0xc5, 0x10, 0x9c, 0xaf, 0x31, 0xce, 0xe9, 0x9e, 0xc8, 0xc0, 0xb4, 0x3b, 0xc0, 0xe5, + 0xde, 0x5e, 0x0e, 0xc1, 0xf9, 0x7b, 0x8c, 0x53, 0x62, 0x58, 0xbe, 0xa5, 0x98, 0xf1, 0x49, 0x98, + 0xbc, 0x86, 0xec, 0x7d, 0xcb, 0x61, 0x57, 0x23, 0x43, 0xd0, 0xbd, 0xce, 0xe8, 0x26, 0x18, 0x90, + 0xdc, 0x95, 0x60, 0xae, 0x47, 0x21, 0xd3, 0x50, 0x35, 0x34, 0x04, 0xc5, 0x17, 0x19, 0xc5, 0x18, + 0xd6, 0xc7, 0xd0, 0x0a, 0xe4, 0x9b, 0x16, 0x2b, 0x4b, 0xf1, 0xf0, 0x37, 0x18, 0x3c, 0xc7, 0x31, + 0x8c, 0xa2, 0x6d, 0xb5, 0x3b, 0x06, 0xae, 0x59, 0xf1, 0x14, 0xbf, 0xcf, 0x29, 0x38, 0x86, 0x51, + 0x1c, 0xc3, 0xad, 0x7f, 0xc0, 0x29, 0x1c, 0x9f, 0x3f, 0x9f, 0x80, 0x9c, 0x65, 0x1a, 0x87, 0x96, + 0x39, 0x8c, 0x11, 0x5f, 0x62, 0x0c, 0xc0, 0x20, 0x98, 0xe0, 0x22, 0x64, 0x87, 0xdd, 0x88, 0x3f, + 0x7c, 0x9f, 0x1f, 0x0f, 0xbe, 0x03, 0x6b, 0x30, 0xc1, 0x13, 0x94, 0x6e, 0x99, 0x43, 0x50, 0xfc, + 0x11, 0xa3, 0x28, 0xf8, 0x60, 0x6c, 0x19, 0x2e, 0x72, 0xdc, 0x26, 0x1a, 0x86, 0xe4, 0x4d, 0xbe, + 0x0c, 0x06, 0x61, 0xae, 0xdc, 0x47, 0xa6, 0x76, 0x30, 0x1c, 0xc3, 0x57, 0xb8, 0x2b, 0x39, 0x06, + 0x53, 0xac, 0xc0, 0x78, 0x4b, 0xb5, 0x9d, 0x03, 0xd5, 0x18, 0x6a, 0x3b, 0xfe, 0x98, 0x71, 0xe4, + 0x3d, 0x10, 0xf3, 0x48, 0xc7, 0x3c, 0x0e, 0xcd, 0x57, 0xb9, 0x47, 0x7c, 0x30, 0x76, 0xf4, 0x1c, + 0x97, 0x5c, 0x40, 0x1d, 0x87, 0xed, 0x6b, 0xfc, 0xe8, 0x51, 0xec, 0xa6, 0x9f, 0xf1, 0x22, 0x64, + 0x1d, 0xfd, 0xe5, 0xa1, 0x68, 0xfe, 0x84, 0xef, 0x34, 0x01, 0x60, 0xf0, 0xb3, 0x70, 0x5b, 0x64, + 0x99, 0x18, 0x82, 0xec, 0x4f, 0x19, 0xd9, 0x89, 0x88, 0x52, 0xc1, 0x52, 0xc2, 0x71, 0x29, 0xff, + 0x8c, 0xa7, 0x04, 0x14, 0xe2, 0xda, 0xc1, 0x2f, 0x0a, 0x8e, 0xda, 0x38, 0x9e, 0xd7, 0xfe, 0x9c, + 0x7b, 0x8d, 0x62, 0x03, 0x5e, 0xdb, 0x85, 0x13, 0x8c, 0xf1, 0x78, 0xfb, 0xfa, 0x75, 0x9e, 0x58, + 0x29, 0x7a, 0x2f, 0xb8, 0xbb, 0xff, 0x0f, 0x66, 0x3c, 0x77, 0xf2, 0x8e, 0xd4, 0x51, 0x5a, 0x6a, + 0x7b, 0x08, 0xe6, 0x6f, 0x30, 0x66, 0x9e, 0xf1, 0xbd, 0x96, 0xd6, 0xd9, 0x54, 0xdb, 0x98, 0xfc, + 0x0a, 0x14, 0x39, 0x79, 0xc7, 0xb4, 0x91, 0x66, 0x35, 0x4d, 0xfd, 0x65, 0x54, 0x1f, 0x82, 0xfa, + 0x2f, 0x42, 0x5b, 0xb5, 0xe7, 0x83, 0x63, 0xe6, 0x75, 0x10, 0xbd, 0x5e, 0x45, 0xd1, 0x5b, 0x6d, + 0xcb, 0x76, 0x63, 0x18, 0xff, 0x92, 0xef, 0x94, 0x87, 0x5b, 0x27, 0xb0, 0x72, 0x15, 0x0a, 0xe4, + 0x71, 0xd8, 0x90, 0xfc, 0x2b, 0x46, 0x34, 0xde, 0x45, 0xb1, 0xc4, 0xa1, 0x59, 0xad, 0xb6, 0x6a, + 0x0f, 0x93, 0xff, 0xfe, 0x9a, 0x27, 0x0e, 0x06, 0x61, 0x89, 0xc3, 0x3d, 0x6c, 0x23, 0x5c, 0xed, + 0x87, 0x60, 0xf8, 0x26, 0x4f, 0x1c, 0x1c, 0xc3, 0x28, 0x78, 0xc3, 0x30, 0x04, 0xc5, 0xdf, 0x70, + 0x0a, 0x8e, 0xc1, 0x14, 0x9f, 0xeb, 0x16, 0x5a, 0x1b, 0x35, 0x75, 0xc7, 0xb5, 0x69, 0x1f, 0x3c, + 0x98, 0xea, 0x5b, 0xef, 0x07, 0x9b, 0x30, 0xd9, 0x07, 0x2d, 0x3f, 0x09, 0x13, 0xa1, 0x16, 0x43, + 0x8a, 0xfb, 0x66, 0xa1, 0xf8, 0xf3, 0x1f, 0xb2, 0x64, 0x14, 0xec, 0x30, 0xca, 0x1b, 0x78, 0xdf, + 0x83, 0x7d, 0x40, 0x3c, 0xd9, 0x2b, 0x1f, 0x7a, 0x5b, 0x1f, 0x68, 0x03, 0xca, 0x97, 0x60, 0x3c, + 0xd0, 0x03, 0xc4, 0x53, 0xfd, 0x02, 0xa3, 0xca, 0xfb, 0x5b, 0x80, 0xf2, 0x39, 0x48, 0xe1, 0x7a, + 0x1e, 0x0f, 0xff, 0x45, 0x06, 0x27, 0xea, 0xe5, 0xc7, 0x20, 0xc3, 0xeb, 0x78, 0x3c, 0xf4, 0x97, + 0x18, 0xd4, 0x83, 0x60, 0x38, 0xaf, 0xe1, 0xf1, 0xf0, 0x5f, 0xe6, 0x70, 0x0e, 0xc1, 0xf0, 0xe1, + 0x5d, 0xf8, 0xed, 0x5f, 0x49, 0xb1, 0x3c, 0xcc, 0x7d, 0x77, 0x11, 0xc6, 0x58, 0xf1, 0x8e, 0x47, + 0x7f, 0x9e, 0x4d, 0xce, 0x11, 0xe5, 0x47, 0x20, 0x3d, 0xa4, 0xc3, 0x7f, 0x95, 0x41, 0xa9, 0x7e, + 0x79, 0x05, 0x72, 0xbe, 0x82, 0x1d, 0x0f, 0xff, 0x35, 0x06, 0xf7, 0xa3, 0xb0, 0xe9, 0xac, 0x60, + 0xc7, 0x13, 0xfc, 0x3a, 0x37, 0x9d, 0x21, 0xb0, 0xdb, 0x78, 0xad, 0x8e, 0x47, 0xff, 0x06, 0xf7, + 0x3a, 0x87, 0x94, 0x9f, 0x80, 0xac, 0x97, 0x7f, 0xe3, 0xf1, 0xbf, 0xc9, 0xf0, 0x5d, 0x0c, 0xf6, + 0x80, 0x2f, 0xff, 0xc7, 0x53, 0xfc, 0x16, 0xf7, 0x80, 0x0f, 0x85, 0x8f, 0x51, 0xb8, 0xa6, 0xc7, + 0x33, 0xfd, 0x36, 0x3f, 0x46, 0xa1, 0x92, 0x8e, 0x77, 0x93, 0xa4, 0xc1, 0x78, 0x8a, 0xdf, 0xe1, + 0xbb, 0x49, 0xf4, 0xb1, 0x19, 0xe1, 0x22, 0x19, 0xcf, 0xf1, 0xbb, 0xdc, 0x8c, 0x50, 0x8d, 0x2c, + 0xef, 0x80, 0xd4, 0x5b, 0x20, 0xe3, 0xf9, 0x5e, 0x65, 0x7c, 0x93, 0x3d, 0xf5, 0xb1, 0xfc, 0x0c, + 0x9c, 0x88, 0x2e, 0x8e, 0xf1, 0xac, 0x5f, 0xf8, 0x30, 0xf4, 0x3a, 0xe3, 0xaf, 0x8d, 0xe5, 0xdd, + 0x6e, 0x96, 0xf5, 0x17, 0xc6, 0x78, 0xda, 0xd7, 0x3e, 0x0c, 0x26, 0x5a, 0x7f, 0x5d, 0x2c, 0x57, + 0x00, 0xba, 0x35, 0x29, 0x9e, 0xeb, 0x75, 0xc6, 0xe5, 0x03, 0xe1, 0xa3, 0xc1, 0x4a, 0x52, 0x3c, + 0xfe, 0x8b, 0xfc, 0x68, 0x30, 0x04, 0x3e, 0x1a, 0xbc, 0x1a, 0xc5, 0xa3, 0xdf, 0xe0, 0x47, 0x83, + 0x43, 0xca, 0x17, 0x21, 0x63, 0x76, 0x0c, 0x03, 0xc7, 0x96, 0x34, 0xf8, 0x33, 0xa2, 0xe2, 0x3f, + 0x7f, 0xc4, 0xc0, 0x1c, 0x50, 0x3e, 0x07, 0x69, 0xd4, 0xda, 0x47, 0xf5, 0x38, 0xe4, 0xbf, 0x7c, + 0xc4, 0xf3, 0x09, 0xd6, 0x2e, 0x3f, 0x01, 0x40, 0x5f, 0xa6, 0xc9, 0xaf, 0x44, 0x31, 0xd8, 0x7f, + 0xfd, 0x88, 0x7d, 0xa1, 0xd0, 0x85, 0x74, 0x09, 0xe8, 0xf7, 0x0e, 0x83, 0x09, 0xde, 0x0f, 0x12, + 0x90, 0x17, 0xf0, 0x47, 0x61, 0xec, 0x05, 0xc7, 0x32, 0x5d, 0xb5, 0x19, 0x87, 0xfe, 0x37, 0x86, + 0xe6, 0xfa, 0xd8, 0x61, 0x2d, 0xcb, 0x46, 0xae, 0xda, 0x74, 0xe2, 0xb0, 0xff, 0xce, 0xb0, 0x1e, + 0x00, 0x83, 0x35, 0xd5, 0x71, 0x87, 0x59, 0xf7, 0x7f, 0x70, 0x30, 0x07, 0x60, 0xa3, 0xf1, 0xff, + 0x57, 0xd1, 0x61, 0x1c, 0xf6, 0x03, 0x6e, 0x34, 0xd3, 0x2f, 0x3f, 0x06, 0x59, 0xfc, 0x2f, 0xfd, + 0x6a, 0x27, 0x06, 0xfc, 0x9f, 0x0c, 0xdc, 0x45, 0xe0, 0x99, 0x1d, 0xb7, 0xee, 0xea, 0xf1, 0xce, + 0xfe, 0x2f, 0xb6, 0xd3, 0x5c, 0xbf, 0x5c, 0x81, 0x9c, 0xe3, 0xd6, 0xeb, 0x1d, 0xd6, 0xd1, 0xc4, + 0xc0, 0x7f, 0xfc, 0x91, 0xf7, 0x92, 0xeb, 0x61, 0x96, 0x4f, 0x45, 0x5f, 0xd6, 0xc1, 0x9a, 0xb5, + 0x66, 0xd1, 0x6b, 0x3a, 0xf8, 0x9f, 0x07, 0xe0, 0xb4, 0x66, 0xb5, 0xf6, 0x2d, 0x67, 0x91, 0x26, + 0x14, 0x2f, 0x9d, 0x2c, 0xb6, 0xd4, 0xb6, 0x43, 0x30, 0x4b, 0xec, 0xbe, 0x2d, 0xc7, 0x9e, 0xf0, + 0xc0, 0xcc, 0xf1, 0xee, 0xea, 0xe6, 0xee, 0x80, 0xf1, 0x4b, 0x86, 0xa5, 0xba, 0xba, 0xd9, 0xdc, + 0xb1, 0x74, 0xd3, 0x95, 0xf2, 0x20, 0x34, 0xc8, 0x0f, 0x4d, 0x82, 0x2c, 0x34, 0xe6, 0xfe, 0x21, + 0x0d, 0x59, 0x7a, 0xcd, 0xb3, 0xa9, 0xb6, 0xa5, 0x9f, 0x83, 0xfc, 0x16, 0x3b, 0x29, 0x0f, 0x2d, + 0x5d, 0x70, 0xbc, 0x3b, 0x65, 0xdf, 0xfc, 0x0b, 0x9e, 0xf6, 0x82, 0x5f, 0x95, 0xfc, 0xb0, 0xbc, + 0xfc, 0xe0, 0x0f, 0xde, 0x9e, 0xbd, 0xbf, 0xaf, 0x7d, 0xb8, 0x34, 0x2e, 0xd2, 0x90, 0x5e, 0xd8, + 0xd3, 0x4d, 0xf7, 0xa1, 0xa5, 0x0b, 0x72, 0x60, 0x3e, 0xe9, 0x1a, 0x64, 0xd8, 0x80, 0xc3, 0x7e, + 0x6b, 0xb8, 0xab, 0xcf, 0xdc, 0x5c, 0x8d, 0xce, 0x7b, 0xf6, 0xad, 0xb7, 0x67, 0x47, 0x8e, 0x3d, + 0xb7, 0x37, 0x97, 0xf4, 0x22, 0xe4, 0xb8, 0x1d, 0xeb, 0x75, 0x87, 0x7d, 0x52, 0x7c, 0x3a, 0x66, + 0xd9, 0xeb, 0x75, 0x36, 0xfb, 0x3d, 0x3f, 0x78, 0x7b, 0x76, 0x6e, 0xe0, 0xcc, 0x0b, 0x7b, 0x1d, + 0xbd, 0x2e, 0xfb, 0xe7, 0x90, 0x9e, 0x87, 0x24, 0x9e, 0x8a, 0x7e, 0x7c, 0x3c, 0xdb, 0x67, 0x2a, + 0x6f, 0x8a, 0x33, 0x6c, 0x81, 0xc3, 0x4c, 0x83, 0x79, 0x67, 0x9e, 0x80, 0xc9, 0x9e, 0xed, 0x91, + 0x44, 0x48, 0x5e, 0x45, 0x87, 0xec, 0x7b, 0x23, 0xfc, 0xaf, 0x34, 0xdd, 0xfd, 0x9e, 0x4e, 0x98, + 0xcf, 0xb3, 0x8f, 0xe4, 0xca, 0x89, 0x0b, 0xc2, 0xcc, 0x45, 0x18, 0x0f, 0xf8, 0xf8, 0x58, 0xe0, + 0xc7, 0x41, 0x0c, 0x7b, 0xe9, 0x58, 0xf8, 0xf3, 0x90, 0xf9, 0x38, 0xb8, 0xb9, 0xef, 0x4b, 0x30, + 0x56, 0x31, 0x8c, 0x4d, 0xb5, 0xed, 0x48, 0xcf, 0xc2, 0x24, 0x6d, 0xe0, 0x77, 0xad, 0x55, 0xf2, + 0xeb, 0xce, 0xa6, 0xda, 0x66, 0x01, 0x7d, 0x5f, 0xc0, 0xdd, 0x0c, 0xb0, 0xd0, 0xa3, 0x4d, 0xe6, + 0x97, 0x7b, 0x59, 0xa4, 0xa7, 0x41, 0xe4, 0x42, 0x72, 0xb6, 0x30, 0x33, 0x0d, 0xd7, 0x33, 0x03, + 0x99, 0xb9, 0x32, 0x25, 0xee, 0xe1, 0x90, 0x1e, 0x87, 0xcc, 0xba, 0xe9, 0x3e, 0xbc, 0x84, 0xf9, + 0x68, 0x0c, 0xce, 0x45, 0xf2, 0x71, 0x25, 0xca, 0xe3, 0x61, 0x18, 0xfe, 0xfc, 0x59, 0x8c, 0x4f, + 0x0d, 0xc6, 0x13, 0xa5, 0x2e, 0x9e, 0x3c, 0x4a, 0x15, 0xc8, 0xe2, 0x3d, 0xa7, 0x06, 0xd0, 0xaf, + 0xd9, 0xef, 0x8c, 0x24, 0xf0, 0xb4, 0x28, 0x43, 0x17, 0xc5, 0x29, 0xa8, 0x0d, 0xa3, 0x31, 0x14, + 0x3e, 0x23, 0xba, 0x28, 0x4c, 0x51, 0xf3, 0xac, 0x18, 0x1b, 0x40, 0x51, 0x0b, 0x59, 0x51, 0xf3, + 0x5b, 0x51, 0xf3, 0xac, 0xc8, 0xc4, 0x50, 0xf8, 0xad, 0xf0, 0x9e, 0xa5, 0x55, 0x80, 0x4b, 0xfa, + 0x75, 0x54, 0xa7, 0x66, 0x64, 0x23, 0x92, 0x11, 0xe7, 0xe8, 0xaa, 0x51, 0x12, 0x1f, 0x4e, 0x5a, + 0x83, 0x5c, 0xad, 0xd1, 0xa5, 0x01, 0xf6, 0x31, 0x7f, 0xa4, 0x29, 0x8d, 0x10, 0x8f, 0x1f, 0xe9, + 0x99, 0x43, 0x97, 0x94, 0x8b, 0x33, 0xc7, 0xb7, 0x26, 0x1f, 0xae, 0x6b, 0x0e, 0xa5, 0xc9, 0xc7, + 0x9a, 0xe3, 0xe3, 0xf1, 0x23, 0xa5, 0x8b, 0x30, 0xb6, 0x6c, 0x59, 0x58, 0xb3, 0x38, 0x4e, 0x48, + 0x4e, 0x45, 0x92, 0x30, 0x1d, 0x4a, 0xc0, 0x11, 0x64, 0x77, 0x48, 0xe8, 0x63, 0x78, 0x61, 0xd0, + 0xee, 0x70, 0x2d, 0xbe, 0x3b, 0xfc, 0xd9, 0x7f, 0x02, 0x97, 0x0f, 0x5d, 0x84, 0x9b, 0xe5, 0xe2, + 0xc4, 0x10, 0x27, 0x90, 0x2b, 0x87, 0x4e, 0x20, 0x17, 0x4b, 0x35, 0x98, 0xe0, 0xb2, 0xaa, 0xd9, + 0xc1, 0x39, 0xb8, 0x28, 0xb2, 0x2f, 0x8d, 0x07, 0xd1, 0x32, 0x5d, 0xca, 0x1a, 0x66, 0x90, 0x76, + 0xa0, 0xc0, 0x45, 0x9b, 0x0e, 0x59, 0xf4, 0x64, 0x44, 0x5d, 0x0d, 0x73, 0x52, 0x55, 0x4a, 0x19, + 0xc2, 0xcf, 0xac, 0xc2, 0x89, 0xe8, 0x6c, 0x15, 0x97, 0x2d, 0x05, 0x7f, 0x96, 0x5d, 0x81, 0x5b, + 0x22, 0x33, 0x53, 0x1c, 0x49, 0x22, 0x54, 0x27, 0x02, 0xe9, 0xc8, 0x0f, 0x4e, 0x47, 0x80, 0xd3, + 0xbd, 0xe0, 0x6e, 0x90, 0xf9, 0xc1, 0xc9, 0x08, 0x70, 0xd2, 0x0f, 0xfe, 0x2c, 0x14, 0x82, 0x79, + 0xc8, 0x8f, 0x1e, 0x8f, 0x40, 0x8f, 0x47, 0xa0, 0xa3, 0xe7, 0x4e, 0x45, 0xa0, 0x53, 0x21, 0x74, + 0xad, 0xef, 0xdc, 0x93, 0x11, 0xe8, 0xc9, 0x08, 0x74, 0xf4, 0xdc, 0x52, 0x04, 0x5a, 0xf2, 0xa3, + 0x1f, 0x83, 0x89, 0x50, 0xca, 0xf1, 0xc3, 0xc7, 0x22, 0xe0, 0x63, 0xa1, 0xda, 0x1c, 0x4e, 0x35, + 0x7e, 0xfc, 0x44, 0x04, 0x7e, 0x22, 0x6a, 0xfa, 0x68, 0xeb, 0x47, 0x23, 0xe0, 0xa3, 0x91, 0xd3, + 0x47, 0xe3, 0xc5, 0x08, 0xbc, 0xe8, 0xc7, 0x97, 0x21, 0xef, 0xcf, 0x2a, 0x7e, 0x6c, 0x26, 0x02, + 0x9b, 0x09, 0xfb, 0x3d, 0x90, 0x52, 0xe2, 0x22, 0x3d, 0xdb, 0xe7, 0xb8, 0x04, 0xd2, 0xc8, 0xb1, + 0x3a, 0x9b, 0x2b, 0x30, 0x1d, 0x95, 0x34, 0x22, 0x38, 0xce, 0xf8, 0x39, 0x0a, 0x4b, 0xd3, 0x81, + 0x64, 0x41, 0x70, 0x9d, 0x96, 0x9f, 0xf9, 0x79, 0x98, 0x8a, 0x48, 0x1d, 0x11, 0xc4, 0x0f, 0xfa, + 0x89, 0x73, 0x4b, 0x33, 0x01, 0xe2, 0xc0, 0xbb, 0x82, 0xbf, 0xb5, 0xfa, 0xe1, 0x14, 0x14, 0x58, + 0x8a, 0xda, 0xb6, 0xeb, 0xc8, 0x46, 0x75, 0xe9, 0xff, 0xf7, 0xef, 0xb0, 0x96, 0xa2, 0x52, 0x1b, + 0xc3, 0x1d, 0xa3, 0xd1, 0x7a, 0xbe, 0x6f, 0xa3, 0xf5, 0xd0, 0x30, 0x13, 0xc4, 0xf5, 0x5b, 0xd5, + 0x9e, 0x7e, 0xeb, 0xde, 0x41, 0xb4, 0xfd, 0xda, 0xae, 0x6a, 0x4f, 0xdb, 0x15, 0x47, 0x13, 0xd9, + 0x7d, 0x5d, 0xee, 0xed, 0xbe, 0xce, 0x0c, 0xe2, 0xe9, 0xdf, 0x84, 0x5d, 0xee, 0x6d, 0xc2, 0x62, + 0x99, 0xa2, 0x7b, 0xb1, 0xcb, 0xbd, 0xbd, 0xd8, 0x40, 0xa6, 0xfe, 0x2d, 0xd9, 0xe5, 0xde, 0x96, + 0x2c, 0x96, 0x29, 0xba, 0x33, 0x7b, 0x2a, 0xa2, 0x33, 0xbb, 0x6f, 0x10, 0xd5, 0xa0, 0x06, 0x6d, + 0x2b, 0xaa, 0x41, 0xbb, 0x7f, 0xa0, 0x61, 0x03, 0xfb, 0xb4, 0xa7, 0x22, 0xfa, 0xb4, 0x78, 0xe3, + 0xfa, 0xb4, 0x6b, 0x5b, 0x51, 0xed, 0xda, 0x10, 0xc6, 0xf5, 0xeb, 0xda, 0x96, 0xc3, 0x5d, 0xdb, + 0xfc, 0x20, 0xae, 0xe8, 0xe6, 0xed, 0x72, 0x6f, 0xf3, 0x76, 0x26, 0xfe, 0x2c, 0x46, 0xf5, 0x70, + 0xcf, 0xf7, 0xed, 0xe1, 0x86, 0x3a, 0xdc, 0x71, 0xad, 0xdc, 0x73, 0xfd, 0x5a, 0xb9, 0x07, 0x87, + 0x61, 0x1f, 0xdc, 0xd1, 0x3d, 0xd3, 0xa7, 0xa3, 0x5b, 0x1c, 0x86, 0xfa, 0xd3, 0xc6, 0xee, 0xd3, + 0xc6, 0xee, 0xd3, 0xc6, 0xee, 0xd3, 0xc6, 0xee, 0xff, 0x46, 0x63, 0x57, 0x4e, 0xbd, 0xfa, 0xa5, + 0x59, 0xe1, 0xcc, 0x29, 0x18, 0x63, 0x53, 0x4b, 0xa3, 0x90, 0xd8, 0xac, 0x88, 0x23, 0xe4, 0xef, + 0xb2, 0x28, 0x90, 0xbf, 0x2b, 0x62, 0x62, 0x79, 0xe3, 0xad, 0x9b, 0xa5, 0x91, 0xef, 0xde, 0x2c, + 0x8d, 0x7c, 0xff, 0x66, 0x69, 0xe4, 0x9d, 0x9b, 0x25, 0xe1, 0xbd, 0x9b, 0x25, 0xe1, 0x83, 0x9b, + 0x25, 0xe1, 0x27, 0x37, 0x4b, 0xc2, 0x8d, 0xa3, 0x92, 0xf0, 0x95, 0xa3, 0x92, 0xf0, 0xf5, 0xa3, + 0x92, 0xf0, 0xad, 0xa3, 0x92, 0xf0, 0xed, 0xa3, 0x92, 0xf0, 0xd6, 0x51, 0x69, 0xe4, 0xbb, 0x47, + 0xa5, 0x91, 0x77, 0x8e, 0x4a, 0xc2, 0x7b, 0x47, 0xa5, 0x91, 0x0f, 0x8e, 0x4a, 0xc2, 0x4f, 0x8e, + 0x4a, 0xc2, 0x8d, 0x1f, 0x95, 0x46, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x39, 0x51, 0x04, 0x4e, + 0x5c, 0x45, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeunmarshaler/mapsproto2.pb.go b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeunmarshaler/mapsproto2.pb.go index 44cc8d006..65d09fb74 100644 --- a/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeunmarshaler/mapsproto2.pb.go +++ b/vendor/github.com/gogo/protobuf/test/mapsproto2/combos/unsafeunmarshaler/mapsproto2.pb.go @@ -180,287 +180,294 @@ func (this *AllMapsOrdered) Description() (desc *github_com_gogo_protobuf_protoc func Mapsproto2Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 4468 bytes of a gzipped FileDescriptorSet + // 4580 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7a, 0x6b, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x98, 0xbb, 0x2b, - 0xbf, 0xe4, 0xb5, 0xad, 0xb5, 0xe5, 0xdd, 0xf5, 0x9a, 0x1b, 0xdb, 0xa0, 0x24, 0xae, 0x56, 0x8e, - 0x5e, 0x19, 0x4a, 0x7e, 0x05, 0xc6, 0xfc, 0x47, 0xc3, 0x4b, 0x6a, 0xbc, 0xe4, 0x0c, 0x33, 0x33, - 0x5c, 0x5b, 0xfe, 0xf0, 0xc7, 0x06, 0xee, 0x03, 0x41, 0xd0, 0x77, 0x81, 0x3a, 0x8e, 0xe3, 0x26, - 0x01, 0x5a, 0xa7, 0xe9, 0x2b, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, 0x24, - 0xdf, 0x82, 0x20, 0x30, 0xb2, 0xaa, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0x06, 0xf0, 0x87, - 0x16, 0xf7, 0x35, 0x9c, 0x19, 0x0e, 0x39, 0x94, 0x81, 0x3c, 0x3e, 0xf8, 0x93, 0x34, 0xe7, 0x9e, - 0xdf, 0xef, 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x9c, 0xb9, 0x1c, 0xf8, 0xcc, 0x39, 0x38, 0xd5, 0xb4, - 0xac, 0x66, 0x0b, 0x9f, 0xed, 0xd8, 0x96, 0x6b, 0xed, 0x77, 0x1b, 0x67, 0xeb, 0xd8, 0xd1, 0x6d, - 0xa3, 0xe3, 0x5a, 0xf6, 0x22, 0x95, 0xa1, 0x29, 0xa6, 0xb1, 0x28, 0x34, 0xe6, 0x37, 0x61, 0xfa, - 0xb2, 0xd1, 0xc2, 0xab, 0x9e, 0x62, 0x0d, 0xbb, 0xe8, 0x22, 0xa4, 0x1a, 0x46, 0x0b, 0x17, 0xa5, - 0x53, 0xc9, 0x85, 0xdc, 0xd2, 0x1d, 0x8b, 0x21, 0xd0, 0x62, 0x10, 0xb1, 0x43, 0xc4, 0x0a, 0x45, - 0xcc, 0xbf, 0x9d, 0x82, 0x99, 0x88, 0x51, 0x84, 0x20, 0x65, 0x6a, 0x6d, 0xc2, 0x28, 0x2d, 0x64, - 0x15, 0xfa, 0x3f, 0x2a, 0xc2, 0x44, 0x47, 0xd3, 0xaf, 0x6a, 0x4d, 0x5c, 0x4c, 0x50, 0xb1, 0x78, - 0x44, 0x25, 0x80, 0x3a, 0xee, 0x60, 0xb3, 0x8e, 0x4d, 0xfd, 0xb0, 0x98, 0x3c, 0x95, 0x5c, 0xc8, - 0x2a, 0x3e, 0x09, 0xba, 0x17, 0xa6, 0x3b, 0xdd, 0xfd, 0x96, 0xa1, 0xab, 0x3e, 0x35, 0x38, 0x95, - 0x5c, 0x48, 0x2b, 0x32, 0x1b, 0x58, 0xed, 0x29, 0xdf, 0x0d, 0x53, 0x2f, 0x60, 0xed, 0xaa, 0x5f, - 0x35, 0x47, 0x55, 0x0b, 0x44, 0xec, 0x53, 0x5c, 0x81, 0x7c, 0x1b, 0x3b, 0x8e, 0xd6, 0xc4, 0xaa, - 0x7b, 0xd8, 0xc1, 0xc5, 0x14, 0x5d, 0xfd, 0xa9, 0xbe, 0xd5, 0x87, 0x57, 0x9e, 0xe3, 0xa8, 0xdd, - 0xc3, 0x0e, 0x46, 0x15, 0xc8, 0x62, 0xb3, 0xdb, 0x66, 0x0c, 0xe9, 0x01, 0xfe, 0xab, 0x9a, 0xdd, - 0x76, 0x98, 0x25, 0x43, 0x60, 0x9c, 0x62, 0xc2, 0xc1, 0xf6, 0x35, 0x43, 0xc7, 0xc5, 0x71, 0x4a, - 0x70, 0x77, 0x1f, 0x41, 0x8d, 0x8d, 0x87, 0x39, 0x04, 0x0e, 0xad, 0x40, 0x16, 0xbf, 0xe8, 0x62, - 0xd3, 0x31, 0x2c, 0xb3, 0x38, 0x41, 0x49, 0xee, 0x8c, 0xd8, 0x45, 0xdc, 0xaa, 0x87, 0x29, 0x7a, - 0x38, 0x74, 0x01, 0x26, 0xac, 0x8e, 0x6b, 0x58, 0xa6, 0x53, 0xcc, 0x9c, 0x92, 0x16, 0x72, 0x4b, - 0x1f, 0x8b, 0x0c, 0x84, 0x6d, 0xa6, 0xa3, 0x08, 0x65, 0xb4, 0x0e, 0xb2, 0x63, 0x75, 0x6d, 0x1d, - 0xab, 0xba, 0x55, 0xc7, 0xaa, 0x61, 0x36, 0xac, 0x62, 0x96, 0x12, 0x9c, 0xec, 0x5f, 0x08, 0x55, - 0x5c, 0xb1, 0xea, 0x78, 0xdd, 0x6c, 0x58, 0x4a, 0xc1, 0x09, 0x3c, 0xa3, 0x13, 0x30, 0xee, 0x1c, - 0x9a, 0xae, 0xf6, 0x62, 0x31, 0x4f, 0x23, 0x84, 0x3f, 0xcd, 0xff, 0x4f, 0x1a, 0xa6, 0x46, 0x09, - 0xb1, 0x4b, 0x90, 0x6e, 0x90, 0x55, 0x16, 0x13, 0xc7, 0xf1, 0x01, 0xc3, 0x04, 0x9d, 0x38, 0xfe, - 0x21, 0x9d, 0x58, 0x81, 0x9c, 0x89, 0x1d, 0x17, 0xd7, 0x59, 0x44, 0x24, 0x47, 0x8c, 0x29, 0x60, - 0xa0, 0xfe, 0x90, 0x4a, 0x7d, 0xa8, 0x90, 0x7a, 0x1a, 0xa6, 0x3c, 0x93, 0x54, 0x5b, 0x33, 0x9b, - 0x22, 0x36, 0xcf, 0xc6, 0x59, 0xb2, 0x58, 0x15, 0x38, 0x85, 0xc0, 0x94, 0x02, 0x0e, 0x3c, 0xa3, - 0x55, 0x00, 0xcb, 0xc4, 0x56, 0x43, 0xad, 0x63, 0xbd, 0x55, 0xcc, 0x0c, 0xf0, 0xd2, 0x36, 0x51, - 0xe9, 0xf3, 0x92, 0xc5, 0xa4, 0x7a, 0x0b, 0x3d, 0xd2, 0x0b, 0xb5, 0x89, 0x01, 0x91, 0xb2, 0xc9, - 0x0e, 0x59, 0x5f, 0xb4, 0xed, 0x41, 0xc1, 0xc6, 0x24, 0xee, 0x71, 0x9d, 0xaf, 0x2c, 0x4b, 0x8d, - 0x58, 0x8c, 0x5d, 0x99, 0xc2, 0x61, 0x6c, 0x61, 0x93, 0xb6, 0xff, 0x11, 0xdd, 0x0e, 0x9e, 0x40, - 0xa5, 0x61, 0x05, 0x34, 0x0b, 0xe5, 0x85, 0x70, 0x4b, 0x6b, 0xe3, 0xb9, 0x8b, 0x50, 0x08, 0xba, - 0x07, 0xcd, 0x42, 0xda, 0x71, 0x35, 0xdb, 0xa5, 0x51, 0x98, 0x56, 0xd8, 0x03, 0x92, 0x21, 0x89, - 0xcd, 0x3a, 0xcd, 0x72, 0x69, 0x85, 0xfc, 0x3b, 0xf7, 0x30, 0x4c, 0x06, 0xa6, 0x1f, 0x15, 0x38, - 0xff, 0xca, 0x38, 0xcc, 0x46, 0xc5, 0x5c, 0x64, 0xf8, 0x9f, 0x80, 0x71, 0xb3, 0xdb, 0xde, 0xc7, - 0x76, 0x31, 0x49, 0x19, 0xf8, 0x13, 0xaa, 0x40, 0xba, 0xa5, 0xed, 0xe3, 0x56, 0x31, 0x75, 0x4a, - 0x5a, 0x28, 0x2c, 0xdd, 0x3b, 0x52, 0x54, 0x2f, 0x6e, 0x10, 0x88, 0xc2, 0x90, 0xe8, 0x31, 0x48, - 0xf1, 0x14, 0x47, 0x18, 0xce, 0x8c, 0xc6, 0x40, 0x62, 0x51, 0xa1, 0x38, 0x74, 0x2b, 0x64, 0xc9, - 0x5f, 0xe6, 0xdb, 0x71, 0x6a, 0x73, 0x86, 0x08, 0x88, 0x5f, 0xd1, 0x1c, 0x64, 0x68, 0x98, 0xd5, - 0xb1, 0x28, 0x0d, 0xde, 0x33, 0xd9, 0x98, 0x3a, 0x6e, 0x68, 0xdd, 0x96, 0xab, 0x5e, 0xd3, 0x5a, - 0x5d, 0x4c, 0x03, 0x26, 0xab, 0xe4, 0xb9, 0xf0, 0x49, 0x22, 0x43, 0x27, 0x21, 0xc7, 0xa2, 0xd2, - 0x30, 0xeb, 0xf8, 0x45, 0x9a, 0x7d, 0xd2, 0x0a, 0x0b, 0xd4, 0x75, 0x22, 0x21, 0xd3, 0x3f, 0xef, - 0x58, 0xa6, 0xd8, 0x5a, 0x3a, 0x05, 0x11, 0xd0, 0xe9, 0x1f, 0x0e, 0x27, 0xbe, 0xdb, 0xa2, 0x97, - 0x17, 0x8e, 0xc5, 0xf9, 0x6f, 0x26, 0x20, 0x45, 0xcf, 0xdb, 0x14, 0xe4, 0x76, 0x9f, 0xd9, 0xa9, - 0xaa, 0xab, 0xdb, 0x7b, 0xcb, 0x1b, 0x55, 0x59, 0x42, 0x05, 0x00, 0x2a, 0xb8, 0xbc, 0xb1, 0x5d, - 0xd9, 0x95, 0x13, 0xde, 0xf3, 0xfa, 0xd6, 0xee, 0x85, 0x73, 0x72, 0xd2, 0x03, 0xec, 0x31, 0x41, - 0xca, 0xaf, 0xf0, 0xd0, 0x92, 0x9c, 0x46, 0x32, 0xe4, 0x19, 0xc1, 0xfa, 0xd3, 0xd5, 0xd5, 0x0b, - 0xe7, 0xe4, 0xf1, 0xa0, 0xe4, 0xa1, 0x25, 0x79, 0x02, 0x4d, 0x42, 0x96, 0x4a, 0x96, 0xb7, 0xb7, - 0x37, 0xe4, 0x8c, 0xc7, 0x59, 0xdb, 0x55, 0xd6, 0xb7, 0xd6, 0xe4, 0xac, 0xc7, 0xb9, 0xa6, 0x6c, - 0xef, 0xed, 0xc8, 0xe0, 0x31, 0x6c, 0x56, 0x6b, 0xb5, 0xca, 0x5a, 0x55, 0xce, 0x79, 0x1a, 0xcb, - 0xcf, 0xec, 0x56, 0x6b, 0x72, 0x3e, 0x60, 0xd6, 0x43, 0x4b, 0xf2, 0xa4, 0x37, 0x45, 0x75, 0x6b, - 0x6f, 0x53, 0x2e, 0xa0, 0x69, 0x98, 0x64, 0x53, 0x08, 0x23, 0xa6, 0x42, 0xa2, 0x0b, 0xe7, 0x64, - 0xb9, 0x67, 0x08, 0x63, 0x99, 0x0e, 0x08, 0x2e, 0x9c, 0x93, 0xd1, 0xfc, 0x0a, 0xa4, 0x69, 0x74, - 0x21, 0x04, 0x85, 0x8d, 0xca, 0x72, 0x75, 0x43, 0xdd, 0xde, 0xd9, 0x5d, 0xdf, 0xde, 0xaa, 0x6c, - 0xc8, 0x52, 0x4f, 0xa6, 0x54, 0x3f, 0xb9, 0xb7, 0xae, 0x54, 0x57, 0xe5, 0x84, 0x5f, 0xb6, 0x53, - 0xad, 0xec, 0x56, 0x57, 0xe5, 0xe4, 0xbc, 0x0e, 0xb3, 0x51, 0x79, 0x26, 0xf2, 0x64, 0xf8, 0xb6, - 0x38, 0x31, 0x60, 0x8b, 0x29, 0x57, 0xdf, 0x16, 0x7f, 0x45, 0x82, 0x99, 0x88, 0x5c, 0x1b, 0x39, - 0xc9, 0xe3, 0x90, 0x66, 0x21, 0xca, 0xaa, 0xcf, 0x3d, 0x91, 0x49, 0x9b, 0x06, 0x6c, 0x5f, 0x05, - 0xa2, 0x38, 0x7f, 0x05, 0x4e, 0x0e, 0xa8, 0xc0, 0x84, 0xa2, 0xcf, 0xc8, 0x97, 0x25, 0x28, 0x0e, - 0xe2, 0x8e, 0x49, 0x14, 0x89, 0x40, 0xa2, 0xb8, 0x14, 0x36, 0xe0, 0xf4, 0xe0, 0x35, 0xf4, 0x59, - 0xf1, 0x86, 0x04, 0x27, 0xa2, 0x1b, 0x95, 0x48, 0x1b, 0x1e, 0x83, 0xf1, 0x36, 0x76, 0x0f, 0x2c, - 0x51, 0xac, 0xef, 0x8a, 0x28, 0x01, 0x64, 0x38, 0xec, 0x2b, 0x8e, 0xf2, 0xd7, 0x90, 0xe4, 0xa0, - 0x6e, 0x83, 0x59, 0xd3, 0x67, 0xe9, 0x67, 0x13, 0x70, 0x53, 0x24, 0x79, 0xa4, 0xa1, 0xb7, 0x01, - 0x18, 0x66, 0xa7, 0xeb, 0xb2, 0x82, 0xcc, 0xf2, 0x53, 0x96, 0x4a, 0xe8, 0xd9, 0x27, 0xb9, 0xa7, - 0xeb, 0x7a, 0xe3, 0x49, 0x3a, 0x0e, 0x4c, 0x44, 0x15, 0x2e, 0xf6, 0x0c, 0x4d, 0x51, 0x43, 0x4b, - 0x03, 0x56, 0xda, 0x57, 0xeb, 0x1e, 0x00, 0x59, 0x6f, 0x19, 0xd8, 0x74, 0x55, 0xc7, 0xb5, 0xb1, - 0xd6, 0x36, 0xcc, 0x26, 0x4d, 0xc0, 0x99, 0x72, 0xba, 0xa1, 0xb5, 0x1c, 0xac, 0x4c, 0xb1, 0xe1, - 0x9a, 0x18, 0x25, 0x08, 0x5a, 0x65, 0x6c, 0x1f, 0x62, 0x3c, 0x80, 0x60, 0xc3, 0x1e, 0x62, 0xfe, - 0x73, 0x13, 0x90, 0xf3, 0xb5, 0x75, 0xe8, 0x34, 0xe4, 0x9f, 0xd7, 0xae, 0x69, 0xaa, 0x68, 0xd5, - 0x99, 0x27, 0x72, 0x44, 0xb6, 0xc3, 0xdb, 0xf5, 0x07, 0x60, 0x96, 0xaa, 0x58, 0x5d, 0x17, 0xdb, - 0xaa, 0xde, 0xd2, 0x1c, 0x87, 0x3a, 0x2d, 0x43, 0x55, 0x11, 0x19, 0xdb, 0x26, 0x43, 0x2b, 0x62, - 0x04, 0x9d, 0x87, 0x19, 0x8a, 0x68, 0x77, 0x5b, 0xae, 0xd1, 0x69, 0x61, 0x95, 0xbc, 0x3c, 0x38, - 0x34, 0x11, 0x7b, 0x96, 0x4d, 0x13, 0x8d, 0x4d, 0xae, 0x40, 0x2c, 0x72, 0xd0, 0x1a, 0xdc, 0x46, - 0x61, 0x4d, 0x6c, 0x62, 0x5b, 0x73, 0xb1, 0x8a, 0x3f, 0xdd, 0xd5, 0x5a, 0x8e, 0xaa, 0x99, 0x75, - 0xf5, 0x40, 0x73, 0x0e, 0x8a, 0xb3, 0x7e, 0x82, 0x5b, 0x88, 0xee, 0x1a, 0x57, 0xad, 0x52, 0xcd, - 0x8a, 0x59, 0xbf, 0xa2, 0x39, 0x07, 0xa8, 0x0c, 0x27, 0x28, 0x91, 0xe3, 0xda, 0x86, 0xd9, 0x54, - 0xf5, 0x03, 0xac, 0x5f, 0x55, 0xbb, 0x6e, 0xe3, 0x62, 0xf1, 0x56, 0x3f, 0x03, 0x35, 0xb2, 0x46, - 0x75, 0x56, 0x88, 0xca, 0x9e, 0xdb, 0xb8, 0x88, 0x6a, 0x90, 0x27, 0xfb, 0xd1, 0x36, 0x5e, 0xc2, - 0x6a, 0xc3, 0xb2, 0x69, 0x71, 0x29, 0x44, 0x1c, 0x6e, 0x9f, 0x13, 0x17, 0xb7, 0x39, 0x60, 0xd3, - 0xaa, 0xe3, 0x72, 0xba, 0xb6, 0x53, 0xad, 0xae, 0x2a, 0x39, 0xc1, 0x72, 0xd9, 0xb2, 0x49, 0x4c, - 0x35, 0x2d, 0xcf, 0xc7, 0x39, 0x16, 0x53, 0x4d, 0x4b, 0x78, 0xf8, 0x3c, 0xcc, 0xe8, 0x3a, 0x5b, - 0xb6, 0xa1, 0xab, 0xbc, 0xcb, 0x77, 0x8a, 0x72, 0xc0, 0x5f, 0xba, 0xbe, 0xc6, 0x14, 0x78, 0x98, - 0x3b, 0xe8, 0x11, 0xb8, 0xa9, 0xe7, 0x2f, 0x3f, 0x70, 0xba, 0x6f, 0x95, 0x61, 0xe8, 0x79, 0x98, - 0xe9, 0x1c, 0xf6, 0x03, 0x51, 0x60, 0xc6, 0xce, 0x61, 0x18, 0x76, 0x27, 0x7d, 0x73, 0xb3, 0xb1, - 0xae, 0xb9, 0xb8, 0x5e, 0xbc, 0xd9, 0xaf, 0xed, 0x1b, 0x40, 0x67, 0x41, 0xd6, 0x75, 0x15, 0x9b, - 0xda, 0x7e, 0x0b, 0xab, 0x9a, 0x8d, 0x4d, 0xcd, 0x29, 0x9e, 0xf4, 0x2b, 0x17, 0x74, 0xbd, 0x4a, - 0x47, 0x2b, 0x74, 0x10, 0x9d, 0x81, 0x69, 0x6b, 0xff, 0x79, 0x9d, 0x05, 0x97, 0xda, 0xb1, 0x71, - 0xc3, 0x78, 0xb1, 0x78, 0x07, 0x75, 0xd3, 0x14, 0x19, 0xa0, 0xa1, 0xb5, 0x43, 0xc5, 0xe8, 0x1e, - 0x90, 0x75, 0xe7, 0x40, 0xb3, 0x3b, 0xb4, 0xba, 0x3b, 0x1d, 0x4d, 0xc7, 0xc5, 0x3b, 0x99, 0x2a, - 0x93, 0x6f, 0x09, 0x31, 0x7a, 0x1a, 0x66, 0xbb, 0xa6, 0x61, 0xba, 0xd8, 0xee, 0xd8, 0x98, 0x34, - 0xe9, 0xec, 0xa4, 0x15, 0xff, 0x79, 0x62, 0x40, 0x9b, 0xbd, 0xe7, 0xd7, 0x66, 0xbb, 0xab, 0xcc, - 0x74, 0xfb, 0x85, 0xf3, 0x65, 0xc8, 0xfb, 0x37, 0x1d, 0x65, 0x81, 0x6d, 0xbb, 0x2c, 0x91, 0x1a, - 0xba, 0xb2, 0xbd, 0x4a, 0xaa, 0xdf, 0xb3, 0x55, 0x39, 0x41, 0xaa, 0xf0, 0xc6, 0xfa, 0x6e, 0x55, - 0x55, 0xf6, 0xb6, 0x76, 0xd7, 0x37, 0xab, 0x72, 0xf2, 0x4c, 0x36, 0xf3, 0xce, 0x84, 0x7c, 0xfd, - 0xfa, 0xf5, 0xeb, 0x89, 0xf9, 0xef, 0x24, 0xa0, 0x10, 0xec, 0x7c, 0xd1, 0xc7, 0xe1, 0x66, 0xf1, - 0x9a, 0xea, 0x60, 0x57, 0x7d, 0xc1, 0xb0, 0x69, 0x1c, 0xb6, 0x35, 0xd6, 0x3b, 0x7a, 0x2e, 0x9c, - 0xe5, 0x5a, 0x35, 0xec, 0x3e, 0x65, 0xd8, 0x24, 0xca, 0xda, 0x9a, 0x8b, 0x36, 0xe0, 0xa4, 0x69, - 0xa9, 0x8e, 0xab, 0x99, 0x75, 0xcd, 0xae, 0xab, 0xbd, 0x0b, 0x02, 0x55, 0xd3, 0x75, 0xec, 0x38, - 0x16, 0x2b, 0x01, 0x1e, 0xcb, 0xc7, 0x4c, 0xab, 0xc6, 0x95, 0x7b, 0xb9, 0xb1, 0xc2, 0x55, 0x43, - 0xdb, 0x9d, 0x1c, 0xb4, 0xdd, 0xb7, 0x42, 0xb6, 0xad, 0x75, 0x54, 0x6c, 0xba, 0xf6, 0x21, 0xed, - 0xd7, 0x32, 0x4a, 0xa6, 0xad, 0x75, 0xaa, 0xe4, 0xf9, 0xa7, 0xb7, 0x07, 0x7e, 0x3f, 0xfe, 0x30, - 0x09, 0x79, 0x7f, 0xcf, 0x46, 0x5a, 0x60, 0x9d, 0xe6, 0x67, 0x89, 0x1e, 0xdf, 0xdb, 0x87, 0x76, - 0x78, 0x8b, 0x2b, 0x24, 0x71, 0x97, 0xc7, 0x59, 0x27, 0xa5, 0x30, 0x24, 0x29, 0x9a, 0xe4, 0xc0, - 0x62, 0xd6, 0x9f, 0x67, 0x14, 0xfe, 0x84, 0xd6, 0x60, 0xfc, 0x79, 0x87, 0x72, 0x8f, 0x53, 0xee, - 0x3b, 0x86, 0x73, 0x3f, 0x51, 0xa3, 0xe4, 0xd9, 0x27, 0x6a, 0xea, 0xd6, 0xb6, 0xb2, 0x59, 0xd9, - 0x50, 0x38, 0x1c, 0xdd, 0x02, 0xa9, 0x96, 0xf6, 0xd2, 0x61, 0x30, 0xc5, 0x53, 0xd1, 0xa8, 0x8e, - 0xbf, 0x05, 0x52, 0x2f, 0x60, 0xed, 0x6a, 0x30, 0xb1, 0x52, 0xd1, 0x4f, 0x31, 0xf4, 0xcf, 0x42, - 0x9a, 0xfa, 0x0b, 0x01, 0x70, 0x8f, 0xc9, 0x63, 0x28, 0x03, 0xa9, 0x95, 0x6d, 0x85, 0x84, 0xbf, - 0x0c, 0x79, 0x26, 0x55, 0x77, 0xd6, 0xab, 0x2b, 0x55, 0x39, 0x31, 0x7f, 0x1e, 0xc6, 0x99, 0x13, - 0xc8, 0xd1, 0xf0, 0xdc, 0x20, 0x8f, 0xf1, 0x47, 0xce, 0x21, 0x89, 0xd1, 0xbd, 0xcd, 0xe5, 0xaa, - 0x22, 0x27, 0xfc, 0xdb, 0xeb, 0x40, 0xde, 0xdf, 0xae, 0xfd, 0x6c, 0x62, 0xea, 0x6f, 0x25, 0xc8, - 0xf9, 0xda, 0x2f, 0x52, 0xf8, 0xb5, 0x56, 0xcb, 0x7a, 0x41, 0xd5, 0x5a, 0x86, 0xe6, 0xf0, 0xa0, - 0x00, 0x2a, 0xaa, 0x10, 0xc9, 0xa8, 0x9b, 0xf6, 0x33, 0x31, 0xfe, 0x75, 0x09, 0xe4, 0x70, 0xeb, - 0x16, 0x32, 0x50, 0xfa, 0xb9, 0x1a, 0xf8, 0x9a, 0x04, 0x85, 0x60, 0xbf, 0x16, 0x32, 0xef, 0xf4, - 0xcf, 0xd5, 0xbc, 0x2f, 0x48, 0x30, 0x19, 0xe8, 0xd2, 0x7e, 0xa1, 0xac, 0x7b, 0x35, 0x09, 0x33, - 0x11, 0x38, 0x54, 0xe1, 0xed, 0x2c, 0xeb, 0xb0, 0xef, 0x1f, 0x65, 0xae, 0x45, 0x52, 0x2d, 0x77, - 0x34, 0xdb, 0xe5, 0xdd, 0xef, 0x3d, 0x20, 0x1b, 0x75, 0x6c, 0xba, 0x46, 0xc3, 0xc0, 0x36, 0x7f, - 0x05, 0x67, 0x3d, 0xee, 0x54, 0x4f, 0xce, 0xde, 0xc2, 0xef, 0x03, 0xd4, 0xb1, 0x1c, 0xc3, 0x35, - 0xae, 0x61, 0xd5, 0x30, 0xc5, 0xfb, 0x3a, 0xe9, 0x79, 0x53, 0x8a, 0x2c, 0x46, 0xd6, 0x4d, 0xd7, - 0xd3, 0x36, 0x71, 0x53, 0x0b, 0x69, 0x93, 0xdc, 0x97, 0x54, 0x64, 0x31, 0xe2, 0x69, 0x9f, 0x86, - 0x7c, 0xdd, 0xea, 0x92, 0xf6, 0x81, 0xe9, 0x91, 0x54, 0x2b, 0x29, 0x39, 0x26, 0xf3, 0x54, 0x78, - 0x7f, 0xd7, 0xbb, 0x28, 0xc8, 0x2b, 0x39, 0x26, 0x63, 0x2a, 0x77, 0xc3, 0x94, 0xd6, 0x6c, 0xda, - 0x84, 0x5c, 0x10, 0xb1, 0xa6, 0xb5, 0xe0, 0x89, 0xa9, 0xe2, 0xdc, 0x13, 0x90, 0x11, 0x7e, 0x20, - 0xd5, 0x8c, 0x78, 0x42, 0xed, 0xb0, 0xeb, 0x9a, 0xc4, 0x42, 0x56, 0xc9, 0x98, 0x62, 0xf0, 0x34, - 0xe4, 0x0d, 0x47, 0xed, 0xdd, 0x1b, 0x26, 0x4e, 0x25, 0x16, 0x32, 0x4a, 0xce, 0x70, 0xbc, 0x8b, - 0xa2, 0xf9, 0x37, 0x12, 0x50, 0x08, 0xde, 0x7b, 0xa2, 0x55, 0xc8, 0xb4, 0x2c, 0x5d, 0xa3, 0x81, - 0xc0, 0x2e, 0xdd, 0x17, 0x62, 0xae, 0x4a, 0x17, 0x37, 0xb8, 0xbe, 0xe2, 0x21, 0xe7, 0xfe, 0x51, - 0x82, 0x8c, 0x10, 0xa3, 0x13, 0x90, 0xea, 0x68, 0xee, 0x01, 0xa5, 0x4b, 0x2f, 0x27, 0x64, 0x49, - 0xa1, 0xcf, 0x44, 0xee, 0x74, 0x34, 0x93, 0x86, 0x00, 0x97, 0x93, 0x67, 0xb2, 0xaf, 0x2d, 0xac, - 0xd5, 0x69, 0x3b, 0x6c, 0xb5, 0xdb, 0xd8, 0x74, 0x1d, 0xb1, 0xaf, 0x5c, 0xbe, 0xc2, 0xc5, 0xe8, - 0x5e, 0x98, 0x76, 0x6d, 0xcd, 0x68, 0x05, 0x74, 0x53, 0x54, 0x57, 0x16, 0x03, 0x9e, 0x72, 0x19, - 0x6e, 0x11, 0xbc, 0x75, 0xec, 0x6a, 0xfa, 0x01, 0xae, 0xf7, 0x40, 0xe3, 0xf4, 0x52, 0xed, 0x66, - 0xae, 0xb0, 0xca, 0xc7, 0x05, 0x76, 0xfe, 0x7b, 0x12, 0x4c, 0x8b, 0x06, 0xbe, 0xee, 0x39, 0x6b, - 0x13, 0x40, 0x33, 0x4d, 0xcb, 0xf5, 0xbb, 0xab, 0x3f, 0x94, 0xfb, 0x70, 0x8b, 0x15, 0x0f, 0xa4, - 0xf8, 0x08, 0xe6, 0xda, 0x00, 0xbd, 0x91, 0x81, 0x6e, 0x3b, 0x09, 0x39, 0x7e, 0xa9, 0x4d, 0x7f, - 0x19, 0x61, 0x6f, 0x7d, 0xc0, 0x44, 0xa4, 0xd3, 0x47, 0xb3, 0x90, 0xde, 0xc7, 0x4d, 0xc3, 0xe4, - 0x57, 0x6d, 0xec, 0x41, 0x5c, 0xe0, 0xa5, 0xbc, 0x0b, 0xbc, 0xe5, 0x4f, 0xc1, 0x8c, 0x6e, 0xb5, - 0xc3, 0xe6, 0x2e, 0xcb, 0xa1, 0x37, 0x4f, 0xe7, 0x8a, 0xf4, 0x2c, 0xf4, 0xba, 0xb3, 0x2f, 0x49, - 0xd2, 0x57, 0x12, 0xc9, 0xb5, 0x9d, 0xe5, 0xaf, 0x25, 0xe6, 0xd6, 0x18, 0x74, 0x47, 0xac, 0x54, - 0xc1, 0x8d, 0x16, 0xd6, 0x89, 0xf5, 0xf0, 0xe3, 0xbb, 0xe0, 0xfe, 0xa6, 0xe1, 0x1e, 0x74, 0xf7, - 0x17, 0x75, 0xab, 0x7d, 0xb6, 0x69, 0x35, 0xad, 0xde, 0x8f, 0x41, 0xe4, 0x89, 0x3e, 0xd0, 0xff, - 0xf8, 0x0f, 0x42, 0x59, 0x4f, 0x3a, 0x17, 0xfb, 0xeb, 0x51, 0x79, 0x0b, 0x66, 0xb8, 0xb2, 0x4a, - 0x6f, 0xa4, 0x59, 0x1f, 0x8e, 0x86, 0xde, 0x4a, 0x14, 0xbf, 0xf1, 0x36, 0xad, 0x74, 0xca, 0x34, - 0x87, 0x92, 0x31, 0xd6, 0xa9, 0x97, 0x15, 0xb8, 0x29, 0xc0, 0xc7, 0x8e, 0x26, 0xb6, 0x63, 0x18, - 0xbf, 0xc3, 0x19, 0x67, 0x7c, 0x8c, 0x35, 0x0e, 0x2d, 0xaf, 0xc0, 0xe4, 0x71, 0xb8, 0xfe, 0x8e, - 0x73, 0xe5, 0xb1, 0x9f, 0x64, 0x0d, 0xa6, 0x28, 0x89, 0xde, 0x75, 0x5c, 0xab, 0x4d, 0xf3, 0xde, - 0x70, 0x9a, 0xbf, 0x7f, 0x9b, 0x9d, 0x95, 0x02, 0x81, 0xad, 0x78, 0xa8, 0x72, 0x19, 0xe8, 0x25, - 0x7c, 0x1d, 0xeb, 0xad, 0x18, 0x86, 0x37, 0xb9, 0x21, 0x9e, 0x7e, 0xf9, 0x49, 0x98, 0x25, 0xff, - 0xd3, 0xb4, 0xe4, 0xb7, 0x24, 0xfe, 0x0e, 0xa6, 0xf8, 0xbd, 0x97, 0xd9, 0x71, 0x9c, 0xf1, 0x08, - 0x7c, 0x36, 0xf9, 0x76, 0xb1, 0x89, 0x5d, 0x17, 0xdb, 0x8e, 0xaa, 0xb5, 0xa2, 0xcc, 0xf3, 0xbd, - 0xc1, 0x16, 0x3f, 0xff, 0x6e, 0x70, 0x17, 0xd7, 0x18, 0xb2, 0xd2, 0x6a, 0x95, 0xf7, 0xe0, 0xe6, - 0x88, 0xa8, 0x18, 0x81, 0xf3, 0x55, 0xce, 0x39, 0xdb, 0x17, 0x19, 0x84, 0x76, 0x07, 0x84, 0xdc, - 0xdb, 0xcb, 0x11, 0x38, 0xbf, 0xc0, 0x39, 0x11, 0xc7, 0x8a, 0x2d, 0x25, 0x8c, 0x4f, 0xc0, 0xf4, - 0x35, 0x6c, 0xef, 0x5b, 0x0e, 0xbf, 0x38, 0x18, 0x81, 0xee, 0x35, 0x4e, 0x37, 0xc5, 0x81, 0xf4, - 0x1a, 0x81, 0x70, 0x3d, 0x02, 0x99, 0x86, 0xa6, 0xe3, 0x11, 0x28, 0xbe, 0xc8, 0x29, 0x26, 0x88, - 0x3e, 0x81, 0x56, 0x20, 0xdf, 0xb4, 0x78, 0x65, 0x8a, 0x87, 0xbf, 0xce, 0xe1, 0x39, 0x81, 0xe1, - 0x14, 0x1d, 0xab, 0xd3, 0x6d, 0x91, 0xb2, 0x15, 0x4f, 0xf1, 0xfb, 0x82, 0x42, 0x60, 0x38, 0xc5, - 0x31, 0xdc, 0xfa, 0x25, 0x41, 0xe1, 0xf8, 0xfc, 0xf9, 0x38, 0xe4, 0x2c, 0xb3, 0x75, 0x68, 0x99, - 0xa3, 0x18, 0xf1, 0x65, 0xce, 0x00, 0x1c, 0x42, 0x08, 0x2e, 0x41, 0x76, 0xd4, 0x8d, 0xf8, 0x83, - 0x77, 0xc5, 0xf1, 0x10, 0x3b, 0xb0, 0x06, 0x53, 0x22, 0x41, 0x19, 0x96, 0x39, 0x02, 0xc5, 0x1f, - 0x72, 0x8a, 0x82, 0x0f, 0xc6, 0x97, 0xe1, 0x62, 0xc7, 0x6d, 0xe2, 0x51, 0x48, 0xde, 0x10, 0xcb, - 0xe0, 0x10, 0xee, 0xca, 0x7d, 0x6c, 0xea, 0x07, 0xa3, 0x31, 0x7c, 0x55, 0xb8, 0x52, 0x60, 0x08, - 0xc5, 0x0a, 0x4c, 0xb6, 0x35, 0xdb, 0x39, 0xd0, 0x5a, 0x23, 0x6d, 0xc7, 0x1f, 0x71, 0x8e, 0xbc, - 0x07, 0xe2, 0x1e, 0xe9, 0x9a, 0xc7, 0xa1, 0xf9, 0x9a, 0xf0, 0x88, 0x0f, 0xc6, 0x8f, 0x9e, 0xe3, - 0xd2, 0xbb, 0x99, 0xe3, 0xb0, 0xfd, 0xb1, 0x38, 0x7a, 0x0c, 0xbb, 0xe9, 0x67, 0xbc, 0x04, 0x59, - 0xc7, 0x78, 0x69, 0x24, 0x9a, 0x3f, 0x11, 0x3b, 0x4d, 0x01, 0x04, 0xfc, 0x0c, 0xdc, 0x12, 0x59, - 0x26, 0x46, 0x20, 0xfb, 0x53, 0x4e, 0x76, 0x22, 0xa2, 0x54, 0xf0, 0x94, 0x70, 0x5c, 0xca, 0x3f, - 0x13, 0x29, 0x01, 0x87, 0xb8, 0x76, 0x48, 0x67, 0xef, 0x68, 0x8d, 0xe3, 0x79, 0xed, 0xcf, 0x85, - 0xd7, 0x18, 0x36, 0xe0, 0xb5, 0x5d, 0x38, 0xc1, 0x19, 0x8f, 0xb7, 0xaf, 0x5f, 0x17, 0x89, 0x95, - 0xa1, 0xf7, 0x82, 0xbb, 0xfb, 0x29, 0x98, 0xf3, 0xdc, 0x29, 0x9a, 0x52, 0x47, 0x6d, 0x6b, 0x9d, - 0x11, 0x98, 0xbf, 0xc1, 0x99, 0x45, 0xc6, 0xf7, 0xba, 0x5a, 0x67, 0x53, 0xeb, 0x10, 0xf2, 0xa7, - 0xa1, 0x28, 0xc8, 0xbb, 0xa6, 0x8d, 0x75, 0xab, 0x69, 0x1a, 0x2f, 0xe1, 0xfa, 0x08, 0xd4, 0x7f, - 0x11, 0xda, 0xaa, 0x3d, 0x1f, 0x9c, 0x30, 0xaf, 0x83, 0xec, 0xf5, 0x2a, 0xaa, 0xd1, 0xee, 0x58, - 0xb6, 0x1b, 0xc3, 0xf8, 0x97, 0x62, 0xa7, 0x3c, 0xdc, 0x3a, 0x85, 0x95, 0xab, 0x50, 0xa0, 0x8f, - 0xa3, 0x86, 0xe4, 0x5f, 0x71, 0xa2, 0xc9, 0x1e, 0x8a, 0x27, 0x0e, 0xdd, 0x6a, 0x77, 0x34, 0x7b, - 0x94, 0xfc, 0xf7, 0xd7, 0x22, 0x71, 0x70, 0x08, 0x4f, 0x1c, 0xee, 0x61, 0x07, 0x93, 0x6a, 0x3f, - 0x02, 0xc3, 0x37, 0x45, 0xe2, 0x10, 0x18, 0x4e, 0x21, 0x1a, 0x86, 0x11, 0x28, 0xfe, 0x46, 0x50, - 0x08, 0x0c, 0xa1, 0xf8, 0x64, 0xaf, 0xd0, 0xda, 0xb8, 0x69, 0x38, 0xae, 0xcd, 0x5a, 0xe1, 0xe1, - 0x54, 0xdf, 0x7a, 0x37, 0xd8, 0x84, 0x29, 0x3e, 0x68, 0xf9, 0x09, 0x98, 0x0a, 0xb5, 0x18, 0x28, - 0xee, 0x17, 0xfd, 0xe2, 0x67, 0xde, 0xe7, 0xc9, 0x28, 0xd8, 0x61, 0x94, 0x37, 0xc8, 0xbe, 0x07, - 0xfb, 0x80, 0x78, 0xb2, 0x97, 0xdf, 0xf7, 0xb6, 0x3e, 0xd0, 0x06, 0x94, 0x2f, 0xc3, 0x64, 0xa0, - 0x07, 0x88, 0xa7, 0xfa, 0x25, 0x4e, 0x95, 0xf7, 0xb7, 0x00, 0xe5, 0xf3, 0x90, 0x22, 0xf5, 0x3c, - 0x1e, 0xfe, 0xcb, 0x1c, 0x4e, 0xd5, 0xcb, 0x8f, 0x42, 0x46, 0xd4, 0xf1, 0x78, 0xe8, 0xaf, 0x70, - 0xa8, 0x07, 0x21, 0x70, 0x51, 0xc3, 0xe3, 0xe1, 0xbf, 0x2a, 0xe0, 0x02, 0x42, 0xe0, 0xa3, 0xbb, - 0xf0, 0xdb, 0x9f, 0x4b, 0xf1, 0x3c, 0x2c, 0x7c, 0x77, 0x09, 0x26, 0x78, 0xf1, 0x8e, 0x47, 0x7f, - 0x96, 0x4f, 0x2e, 0x10, 0xe5, 0x87, 0x21, 0x3d, 0xa2, 0xc3, 0x7f, 0x8d, 0x43, 0x99, 0x7e, 0x79, - 0x05, 0x72, 0xbe, 0x82, 0x1d, 0x0f, 0xff, 0x75, 0x0e, 0xf7, 0xa3, 0x88, 0xe9, 0xbc, 0x60, 0xc7, - 0x13, 0xfc, 0x86, 0x30, 0x9d, 0x23, 0x88, 0xdb, 0x44, 0xad, 0x8e, 0x47, 0xff, 0xa6, 0xf0, 0xba, - 0x80, 0x94, 0x1f, 0x87, 0xac, 0x97, 0x7f, 0xe3, 0xf1, 0xbf, 0xc5, 0xf1, 0x3d, 0x0c, 0xf1, 0x80, - 0x2f, 0xff, 0xc7, 0x53, 0xfc, 0xb6, 0xf0, 0x80, 0x0f, 0x45, 0x8e, 0x51, 0xb8, 0xa6, 0xc7, 0x33, - 0xfd, 0x8e, 0x38, 0x46, 0xa1, 0x92, 0x4e, 0x76, 0x93, 0xa6, 0xc1, 0x78, 0x8a, 0xdf, 0x15, 0xbb, - 0x49, 0xf5, 0x89, 0x19, 0xe1, 0x22, 0x19, 0xcf, 0xf1, 0x7b, 0xc2, 0x8c, 0x50, 0x8d, 0x2c, 0xef, - 0x00, 0xea, 0x2f, 0x90, 0xf1, 0x7c, 0xaf, 0x70, 0xbe, 0xe9, 0xbe, 0xfa, 0x58, 0x7e, 0x0a, 0x4e, - 0x44, 0x17, 0xc7, 0x78, 0xd6, 0xcf, 0xbf, 0x1f, 0x7a, 0x9d, 0xf1, 0xd7, 0xc6, 0xf2, 0x6e, 0x2f, - 0xcb, 0xfa, 0x0b, 0x63, 0x3c, 0xed, 0xab, 0xef, 0x07, 0x13, 0xad, 0xbf, 0x2e, 0x96, 0x2b, 0x00, - 0xbd, 0x9a, 0x14, 0xcf, 0xf5, 0x1a, 0xe7, 0xf2, 0x81, 0xc8, 0xd1, 0xe0, 0x25, 0x29, 0x1e, 0xff, - 0x45, 0x71, 0x34, 0x38, 0x82, 0x1c, 0x0d, 0x51, 0x8d, 0xe2, 0xd1, 0xaf, 0x8b, 0xa3, 0x21, 0x20, - 0xe5, 0x4b, 0x90, 0x31, 0xbb, 0xad, 0x16, 0x89, 0x2d, 0x34, 0xfc, 0x23, 0x9b, 0xe2, 0xbf, 0x7c, - 0xc0, 0xc1, 0x02, 0x50, 0x3e, 0x0f, 0x69, 0xdc, 0xde, 0xc7, 0xf5, 0x38, 0xe4, 0xbf, 0x7e, 0x20, - 0xf2, 0x09, 0xd1, 0x2e, 0x3f, 0x0e, 0xc0, 0x5e, 0xa6, 0xe9, 0x6f, 0x2c, 0x31, 0xd8, 0x7f, 0xfb, - 0x80, 0xff, 0x7e, 0xdf, 0x83, 0xf4, 0x08, 0xd8, 0xd7, 0x00, 0xc3, 0x09, 0xde, 0x0d, 0x12, 0xd0, - 0x17, 0xf0, 0x47, 0x60, 0xe2, 0x79, 0xc7, 0x32, 0x5d, 0xad, 0x19, 0x87, 0xfe, 0x77, 0x8e, 0x16, - 0xfa, 0xc4, 0x61, 0x6d, 0xcb, 0xc6, 0xae, 0xd6, 0x74, 0xe2, 0xb0, 0xff, 0xc1, 0xb1, 0x1e, 0x80, - 0x80, 0x75, 0xcd, 0x71, 0x47, 0x59, 0xf7, 0x7f, 0x0a, 0xb0, 0x00, 0x10, 0xa3, 0xc9, 0xff, 0x57, - 0xf1, 0x61, 0x1c, 0xf6, 0x3d, 0x61, 0x34, 0xd7, 0x2f, 0x3f, 0x0a, 0x59, 0xf2, 0x2f, 0xfb, 0xa6, - 0x25, 0x06, 0xfc, 0x5f, 0x1c, 0xdc, 0x43, 0x90, 0x99, 0x1d, 0xb7, 0xee, 0x1a, 0xf1, 0xce, 0xfe, - 0x6f, 0xbe, 0xd3, 0x42, 0xbf, 0x5c, 0x81, 0x9c, 0xe3, 0xd6, 0xeb, 0x5d, 0xde, 0xd1, 0xc4, 0xc0, - 0x7f, 0xfc, 0x81, 0xf7, 0x92, 0xeb, 0x61, 0x96, 0x4f, 0x47, 0xdf, 0xd7, 0xc1, 0x9a, 0xb5, 0x66, - 0xb1, 0x9b, 0x3a, 0xf8, 0xdf, 0xfb, 0xe1, 0x1e, 0xdd, 0x6a, 0xef, 0x5b, 0xce, 0x59, 0x96, 0x50, - 0x7c, 0xc9, 0xe8, 0x6c, 0x5b, 0xeb, 0x38, 0x14, 0xb5, 0xc4, 0x6f, 0xdc, 0x72, 0xfc, 0x89, 0x0c, - 0xcc, 0x1d, 0xef, 0xb6, 0x6e, 0xfe, 0x36, 0x98, 0xbc, 0xdc, 0xb2, 0x34, 0xd7, 0x30, 0x9b, 0x3b, - 0x96, 0x61, 0xba, 0x28, 0x0f, 0x52, 0x83, 0xfe, 0x50, 0x23, 0x29, 0x52, 0x63, 0xfe, 0x1f, 0xd2, - 0x90, 0x65, 0x17, 0x3d, 0x9b, 0x5a, 0x07, 0xfd, 0x7f, 0xc8, 0x6f, 0xf1, 0xb3, 0xf2, 0xe0, 0xd2, - 0x45, 0xc7, 0xbb, 0x58, 0xf6, 0xcd, 0xbf, 0xe8, 0x69, 0x2f, 0xfa, 0x55, 0xe9, 0x0f, 0xb3, 0xcb, - 0x0f, 0xfc, 0xe0, 0xad, 0x93, 0xf7, 0x0d, 0xb4, 0x8f, 0x14, 0xc7, 0xb3, 0x2c, 0xa8, 0x17, 0xf7, - 0x0c, 0xd3, 0x7d, 0x70, 0xe9, 0xa2, 0x12, 0x98, 0x0f, 0x5d, 0x83, 0x0c, 0x1f, 0x70, 0xf8, 0x0f, - 0x0e, 0x77, 0x0c, 0x98, 0x5b, 0xa8, 0xb1, 0x79, 0xcf, 0xbd, 0xf9, 0xd6, 0xc9, 0xb1, 0x63, 0xcf, - 0xed, 0xcd, 0x85, 0x3e, 0x0d, 0x39, 0x61, 0xc7, 0x7a, 0xdd, 0xe1, 0x9f, 0xdc, 0xde, 0x1d, 0xb3, - 0xec, 0xf5, 0x3a, 0x9f, 0xfd, 0xae, 0x1f, 0xbc, 0x75, 0x72, 0x7e, 0xe8, 0xcc, 0x8b, 0x7b, 0x5d, - 0xa3, 0xae, 0xf8, 0xe7, 0x40, 0xcf, 0x41, 0x92, 0x4c, 0xc5, 0x3e, 0xce, 0x3d, 0x39, 0x60, 0x2a, - 0x6f, 0x8a, 0x33, 0x7c, 0x81, 0xa3, 0x4c, 0x43, 0x78, 0xe7, 0x1e, 0x87, 0xe9, 0xbe, 0xed, 0x41, - 0x32, 0x24, 0xaf, 0xe2, 0x43, 0xfe, 0x3d, 0x0e, 0xf9, 0x17, 0xcd, 0xf6, 0xbe, 0x37, 0x93, 0x16, - 0xf2, 0xfc, 0x23, 0xb2, 0x72, 0xe2, 0xa2, 0x34, 0x77, 0x09, 0x26, 0x03, 0x3e, 0x3e, 0x16, 0xf8, - 0x31, 0x90, 0xc3, 0x5e, 0x3a, 0x16, 0xfe, 0x02, 0x64, 0x3e, 0x0c, 0x6e, 0xfe, 0xfb, 0x08, 0x26, - 0x2a, 0xad, 0xd6, 0xa6, 0xd6, 0x71, 0xd0, 0x33, 0x30, 0xcd, 0x5a, 0xf8, 0x5d, 0x6b, 0x95, 0xfe, - 0xc4, 0xb3, 0xa9, 0x75, 0x78, 0x40, 0xdf, 0x1b, 0x70, 0x37, 0x07, 0x2c, 0xf6, 0x69, 0xd3, 0xf9, - 0x95, 0x7e, 0x16, 0xf4, 0x24, 0xc8, 0x42, 0x48, 0xcf, 0x16, 0x61, 0x66, 0xe1, 0x7a, 0x66, 0x28, - 0xb3, 0x50, 0x66, 0xc4, 0x7d, 0x1c, 0xe8, 0x31, 0xc8, 0xac, 0x9b, 0xee, 0x43, 0x4b, 0x84, 0x8f, - 0xc5, 0xe0, 0x7c, 0x24, 0x9f, 0x50, 0x62, 0x3c, 0x1e, 0x86, 0xe3, 0x2f, 0x9c, 0x23, 0xf8, 0xd4, - 0x70, 0x3c, 0x55, 0xea, 0xe1, 0xe9, 0x23, 0xaa, 0x40, 0x96, 0xec, 0x39, 0x33, 0x80, 0x7d, 0xed, - 0x7d, 0x7b, 0x24, 0x81, 0xa7, 0xc5, 0x18, 0x7a, 0x28, 0x41, 0xc1, 0x6c, 0x18, 0x8f, 0xa1, 0xf0, - 0x19, 0xd1, 0x43, 0x11, 0x8a, 0x9a, 0x67, 0xc5, 0xc4, 0x10, 0x8a, 0x5a, 0xc8, 0x8a, 0x9a, 0xdf, - 0x8a, 0x9a, 0x67, 0x45, 0x26, 0x86, 0xc2, 0x6f, 0x85, 0xf7, 0x8c, 0x56, 0x01, 0x2e, 0x1b, 0x2f, - 0xe2, 0x3a, 0x33, 0x23, 0x1b, 0x91, 0x8c, 0x04, 0x47, 0x4f, 0x8d, 0x91, 0xf8, 0x70, 0x68, 0x0d, - 0x72, 0xb5, 0x46, 0x8f, 0x06, 0xf8, 0xc7, 0xee, 0x91, 0xa6, 0x34, 0x42, 0x3c, 0x7e, 0xa4, 0x67, - 0x0e, 0x5b, 0x52, 0x2e, 0xce, 0x1c, 0xdf, 0x9a, 0x7c, 0xb8, 0x9e, 0x39, 0x8c, 0x26, 0x1f, 0x6b, - 0x8e, 0x8f, 0xc7, 0x8f, 0x44, 0x97, 0x60, 0x62, 0xd9, 0xb2, 0x88, 0x66, 0x71, 0x92, 0x92, 0x9c, - 0x8e, 0x24, 0xe1, 0x3a, 0x8c, 0x40, 0x20, 0xe8, 0xee, 0xd0, 0xd0, 0x27, 0xf0, 0xc2, 0xb0, 0xdd, - 0x11, 0x5a, 0x62, 0x77, 0xc4, 0xb3, 0xff, 0x04, 0x2e, 0x1f, 0xba, 0x98, 0xb4, 0xcb, 0xc5, 0xa9, - 0x11, 0x4e, 0xa0, 0x50, 0x0e, 0x9d, 0x40, 0x21, 0x46, 0x35, 0x98, 0x12, 0xb2, 0xaa, 0xd9, 0x25, - 0x39, 0xb8, 0x28, 0xf3, 0x2f, 0x71, 0x87, 0xd1, 0x72, 0x5d, 0xc6, 0x1a, 0x66, 0x40, 0x3b, 0x50, - 0x10, 0xa2, 0x4d, 0x87, 0x2e, 0x7a, 0x3a, 0xa2, 0xae, 0x86, 0x39, 0x99, 0x2a, 0xa3, 0x0c, 0xe1, - 0xe7, 0x56, 0xe1, 0x44, 0x74, 0xb6, 0x8a, 0xcb, 0x96, 0x92, 0x3f, 0xcb, 0xae, 0xc0, 0x4d, 0x91, - 0x99, 0x29, 0x8e, 0x24, 0x11, 0xaa, 0x13, 0x81, 0x74, 0xe4, 0x07, 0xa7, 0x23, 0xc0, 0xe9, 0x7e, - 0x70, 0x2f, 0xc8, 0xfc, 0xe0, 0x64, 0x04, 0x38, 0xe9, 0x07, 0x7f, 0x1c, 0x0a, 0xc1, 0x3c, 0xe4, - 0x47, 0x4f, 0x46, 0xa0, 0x27, 0x23, 0xd0, 0xd1, 0x73, 0xa7, 0x22, 0xd0, 0xa9, 0x10, 0xba, 0x36, - 0x70, 0xee, 0xe9, 0x08, 0xf4, 0x74, 0x04, 0x3a, 0x7a, 0x6e, 0x14, 0x81, 0x46, 0x7e, 0xf4, 0xa3, - 0x30, 0x15, 0x4a, 0x39, 0x7e, 0xf8, 0x44, 0x04, 0x7c, 0x22, 0x54, 0x9b, 0xc3, 0xa9, 0xc6, 0x8f, - 0x9f, 0x8a, 0xc0, 0x4f, 0x45, 0x4d, 0x1f, 0x6d, 0xfd, 0x78, 0x04, 0x7c, 0x3c, 0x72, 0xfa, 0x68, - 0xbc, 0x1c, 0x81, 0x97, 0xfd, 0xf8, 0x32, 0xe4, 0xfd, 0x59, 0xc5, 0x8f, 0xcd, 0x44, 0x60, 0x33, - 0x61, 0xbf, 0x07, 0x52, 0x4a, 0x5c, 0xa4, 0x67, 0x07, 0x1c, 0x97, 0x40, 0x1a, 0x39, 0x56, 0x67, - 0xf3, 0x34, 0xcc, 0x46, 0x25, 0x8d, 0x08, 0x8e, 0x33, 0x7e, 0x8e, 0xc2, 0xd2, 0x6c, 0x20, 0x59, - 0x50, 0x5c, 0xb7, 0xed, 0x67, 0x7e, 0x0e, 0x66, 0x22, 0x52, 0x47, 0x04, 0xf1, 0x03, 0x7e, 0xe2, - 0xdc, 0xd2, 0x5c, 0x80, 0x38, 0xf0, 0xae, 0xe0, 0x6f, 0xad, 0x7e, 0x38, 0x03, 0x05, 0x9e, 0xa2, - 0xb6, 0xed, 0x3a, 0xb6, 0x71, 0x1d, 0xfd, 0xbf, 0xc1, 0x1d, 0xd6, 0x52, 0x54, 0x6a, 0xe3, 0xb8, - 0x63, 0x34, 0x5a, 0xcf, 0x0d, 0x6c, 0xb4, 0x1e, 0x1c, 0x65, 0x82, 0xb8, 0x7e, 0xab, 0xda, 0xd7, - 0x6f, 0xdd, 0x33, 0x8c, 0x76, 0x50, 0xdb, 0x55, 0xed, 0x6b, 0xbb, 0xe2, 0x68, 0x22, 0xbb, 0xaf, - 0x2b, 0xfd, 0xdd, 0xd7, 0x99, 0x61, 0x3c, 0x83, 0x9b, 0xb0, 0x2b, 0xfd, 0x4d, 0x58, 0x2c, 0x53, - 0x74, 0x2f, 0x76, 0xa5, 0xbf, 0x17, 0x1b, 0xca, 0x34, 0xb8, 0x25, 0xbb, 0xd2, 0xdf, 0x92, 0xc5, - 0x32, 0x45, 0x77, 0x66, 0x9f, 0x88, 0xe8, 0xcc, 0xee, 0x1d, 0x46, 0x35, 0xac, 0x41, 0xdb, 0x8a, - 0x6a, 0xd0, 0xee, 0x1b, 0x6a, 0xd8, 0xd0, 0x3e, 0xed, 0x13, 0x11, 0x7d, 0x5a, 0xbc, 0x71, 0x03, - 0xda, 0xb5, 0xad, 0xa8, 0x76, 0x6d, 0x04, 0xe3, 0x06, 0x75, 0x6d, 0xcb, 0xe1, 0xae, 0x6d, 0x61, - 0x18, 0x57, 0x74, 0xf3, 0x76, 0xa5, 0xbf, 0x79, 0x3b, 0x13, 0x7f, 0x16, 0xa3, 0x7a, 0xb8, 0xe7, - 0x06, 0xf6, 0x70, 0x23, 0x1d, 0xee, 0xb8, 0x56, 0xee, 0xd9, 0x41, 0xad, 0xdc, 0x03, 0xa3, 0xb0, - 0x0f, 0xef, 0xe8, 0x9e, 0x1a, 0xd0, 0xd1, 0x9d, 0x1d, 0x85, 0xfa, 0xa3, 0xc6, 0xee, 0xa3, 0xc6, - 0xee, 0xa3, 0xc6, 0xee, 0xa3, 0xc6, 0xee, 0x17, 0xa3, 0xb1, 0x2b, 0xa7, 0x5e, 0xf9, 0xf2, 0x49, - 0xe9, 0xcc, 0x69, 0x98, 0xe0, 0x53, 0xa3, 0x71, 0x48, 0x6c, 0x56, 0xe4, 0x31, 0xfa, 0x77, 0x59, - 0x96, 0xe8, 0xdf, 0x15, 0x39, 0xb1, 0xbc, 0xf1, 0xe6, 0x8d, 0xd2, 0xd8, 0x77, 0x6f, 0x94, 0xc6, - 0xbe, 0x7f, 0xa3, 0x34, 0xf6, 0xa3, 0x1b, 0x25, 0xe9, 0x9d, 0x1b, 0x25, 0xe9, 0xbd, 0x1b, 0x25, - 0xe9, 0x27, 0x37, 0x4a, 0xd2, 0xf5, 0xa3, 0x92, 0xf4, 0xd5, 0xa3, 0x92, 0xf4, 0xf5, 0xa3, 0x92, - 0xf4, 0xad, 0xa3, 0x92, 0xf4, 0xed, 0xa3, 0x92, 0xf4, 0xe6, 0x51, 0x69, 0xec, 0xbb, 0x47, 0xa5, - 0xb1, 0x1f, 0x1d, 0x95, 0xa4, 0x77, 0x8e, 0x4a, 0x63, 0xef, 0x1d, 0x95, 0xa4, 0x9f, 0x1c, 0x95, - 0xc6, 0xae, 0xff, 0x53, 0x49, 0xfa, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x29, 0x59, 0x3b, 0x49, - 0x7c, 0x44, 0x00, 0x00, + 0x75, 0xbf, 0x86, 0x0f, 0x89, 0x3c, 0xa4, 0xa8, 0xd1, 0x95, 0xbc, 0xa6, 0xe5, 0x58, 0xbb, 0x2b, + 0xbf, 0xe4, 0xb5, 0x2d, 0xd9, 0xf2, 0xee, 0x7a, 0xcd, 0x8d, 0x6d, 0x50, 0x12, 0x57, 0x2b, 0x5b, + 0xaf, 0x0c, 0x25, 0x7b, 0xed, 0x3f, 0x8c, 0xf9, 0x8f, 0x86, 0x97, 0xd4, 0x78, 0xc9, 0x19, 0x7a, + 0x66, 0xb8, 0xb6, 0xfc, 0xa1, 0xd8, 0xc2, 0x7d, 0x20, 0x28, 0xfa, 0x2e, 0x50, 0xc7, 0x75, 0xdc, + 0x26, 0x40, 0xeb, 0x34, 0xe9, 0x23, 0xe9, 0x23, 0x0d, 0xfa, 0x29, 0x5f, 0xd2, 0x1a, 0x28, 0x50, + 0x24, 0xdf, 0x82, 0x20, 0x30, 0xbc, 0x8a, 0x81, 0xba, 0xad, 0xdb, 0xba, 0x8d, 0x81, 0x06, 0xf0, + 0x87, 0x16, 0xf7, 0x35, 0x9c, 0x19, 0x0e, 0x39, 0x94, 0x01, 0x27, 0xfd, 0xe0, 0x4f, 0xd2, 0x9c, + 0x7b, 0x7e, 0xbf, 0x7b, 0xee, 0xb9, 0xe7, 0x9e, 0x73, 0xe6, 0x72, 0xe0, 0x47, 0xe7, 0xe0, 0x54, + 0xc3, 0xb2, 0x1a, 0x4d, 0xbc, 0xd8, 0xb6, 0x2d, 0xd7, 0xda, 0xef, 0xd4, 0x17, 0x6b, 0xd8, 0xd1, + 0x6d, 0xa3, 0xed, 0x5a, 0xf6, 0x02, 0x95, 0xa1, 0x09, 0xa6, 0xb1, 0x20, 0x34, 0xe6, 0x36, 0x61, + 0xf2, 0x92, 0xd1, 0xc4, 0xab, 0x9e, 0x62, 0x15, 0xbb, 0xe8, 0x02, 0xa4, 0xea, 0x46, 0x13, 0x17, + 0xa5, 0x53, 0xc9, 0xf9, 0xdc, 0xd2, 0x1d, 0x0b, 0x21, 0xd0, 0x42, 0x10, 0xb1, 0x43, 0xc4, 0x0a, + 0x45, 0xcc, 0xbd, 0x9b, 0x82, 0xa9, 0x88, 0x51, 0x84, 0x20, 0x65, 0x6a, 0x2d, 0xc2, 0x28, 0xcd, + 0x67, 0x15, 0xfa, 0x3f, 0x2a, 0xc2, 0x58, 0x5b, 0xd3, 0xaf, 0x6a, 0x0d, 0x5c, 0x4c, 0x50, 0xb1, + 0x78, 0x44, 0xb3, 0x00, 0x35, 0xdc, 0xc6, 0x66, 0x0d, 0x9b, 0xfa, 0x61, 0x31, 0x79, 0x2a, 0x39, + 0x9f, 0x55, 0x7c, 0x12, 0x74, 0x2f, 0x4c, 0xb6, 0x3b, 0xfb, 0x4d, 0x43, 0x57, 0x7d, 0x6a, 0x70, + 0x2a, 0x39, 0x9f, 0x56, 0x64, 0x36, 0xb0, 0xda, 0x55, 0xbe, 0x1b, 0x26, 0x5e, 0xc4, 0xda, 0x55, + 0xbf, 0x6a, 0x8e, 0xaa, 0x16, 0x88, 0xd8, 0xa7, 0xb8, 0x02, 0xf9, 0x16, 0x76, 0x1c, 0xad, 0x81, + 0x55, 0xf7, 0xb0, 0x8d, 0x8b, 0x29, 0xba, 0xfa, 0x53, 0x3d, 0xab, 0x0f, 0xaf, 0x3c, 0xc7, 0x51, + 0xbb, 0x87, 0x6d, 0x8c, 0xca, 0x90, 0xc5, 0x66, 0xa7, 0xc5, 0x18, 0xd2, 0x7d, 0xfc, 0x57, 0x31, + 0x3b, 0xad, 0x30, 0x4b, 0x86, 0xc0, 0x38, 0xc5, 0x98, 0x83, 0xed, 0x6b, 0x86, 0x8e, 0x8b, 0xa3, + 0x94, 0xe0, 0xee, 0x1e, 0x82, 0x2a, 0x1b, 0x0f, 0x73, 0x08, 0x1c, 0x5a, 0x81, 0x2c, 0x7e, 0xc9, + 0xc5, 0xa6, 0x63, 0x58, 0x66, 0x71, 0x8c, 0x92, 0xdc, 0x19, 0xb1, 0x8b, 0xb8, 0x59, 0x0b, 0x53, + 0x74, 0x71, 0xe8, 0x3c, 0x8c, 0x59, 0x6d, 0xd7, 0xb0, 0x4c, 0xa7, 0x98, 0x39, 0x25, 0xcd, 0xe7, + 0x96, 0x3e, 0x13, 0x19, 0x08, 0xdb, 0x4c, 0x47, 0x11, 0xca, 0x68, 0x1d, 0x64, 0xc7, 0xea, 0xd8, + 0x3a, 0x56, 0x75, 0xab, 0x86, 0x55, 0xc3, 0xac, 0x5b, 0xc5, 0x2c, 0x25, 0x38, 0xd9, 0xbb, 0x10, + 0xaa, 0xb8, 0x62, 0xd5, 0xf0, 0xba, 0x59, 0xb7, 0x94, 0x82, 0x13, 0x78, 0x46, 0x27, 0x60, 0xd4, + 0x39, 0x34, 0x5d, 0xed, 0xa5, 0x62, 0x9e, 0x46, 0x08, 0x7f, 0x9a, 0xfb, 0xef, 0x34, 0x4c, 0x0c, + 0x13, 0x62, 0x17, 0x21, 0x5d, 0x27, 0xab, 0x2c, 0x26, 0x8e, 0xe3, 0x03, 0x86, 0x09, 0x3a, 0x71, + 0xf4, 0x63, 0x3a, 0xb1, 0x0c, 0x39, 0x13, 0x3b, 0x2e, 0xae, 0xb1, 0x88, 0x48, 0x0e, 0x19, 0x53, + 0xc0, 0x40, 0xbd, 0x21, 0x95, 0xfa, 0x58, 0x21, 0x75, 0x05, 0x26, 0x3c, 0x93, 0x54, 0x5b, 0x33, + 0x1b, 0x22, 0x36, 0x17, 0xe3, 0x2c, 0x59, 0xa8, 0x08, 0x9c, 0x42, 0x60, 0x4a, 0x01, 0x07, 0x9e, + 0xd1, 0x2a, 0x80, 0x65, 0x62, 0xab, 0xae, 0xd6, 0xb0, 0xde, 0x2c, 0x66, 0xfa, 0x78, 0x69, 0x9b, + 0xa8, 0xf4, 0x78, 0xc9, 0x62, 0x52, 0xbd, 0x89, 0x1e, 0xe9, 0x86, 0xda, 0x58, 0x9f, 0x48, 0xd9, + 0x64, 0x87, 0xac, 0x27, 0xda, 0xf6, 0xa0, 0x60, 0x63, 0x12, 0xf7, 0xb8, 0xc6, 0x57, 0x96, 0xa5, + 0x46, 0x2c, 0xc4, 0xae, 0x4c, 0xe1, 0x30, 0xb6, 0xb0, 0x71, 0xdb, 0xff, 0x88, 0x6e, 0x07, 0x4f, + 0xa0, 0xd2, 0xb0, 0x02, 0x9a, 0x85, 0xf2, 0x42, 0xb8, 0xa5, 0xb5, 0xf0, 0xcc, 0x05, 0x28, 0x04, + 0xdd, 0x83, 0xa6, 0x21, 0xed, 0xb8, 0x9a, 0xed, 0xd2, 0x28, 0x4c, 0x2b, 0xec, 0x01, 0xc9, 0x90, + 0xc4, 0x66, 0x8d, 0x66, 0xb9, 0xb4, 0x42, 0xfe, 0x9d, 0x79, 0x18, 0xc6, 0x03, 0xd3, 0x0f, 0x0b, + 0x9c, 0x7b, 0x75, 0x14, 0xa6, 0xa3, 0x62, 0x2e, 0x32, 0xfc, 0x4f, 0xc0, 0xa8, 0xd9, 0x69, 0xed, + 0x63, 0xbb, 0x98, 0xa4, 0x0c, 0xfc, 0x09, 0x95, 0x21, 0xdd, 0xd4, 0xf6, 0x71, 0xb3, 0x98, 0x3a, + 0x25, 0xcd, 0x17, 0x96, 0xee, 0x1d, 0x2a, 0xaa, 0x17, 0x36, 0x08, 0x44, 0x61, 0x48, 0xf4, 0x18, + 0xa4, 0x78, 0x8a, 0x23, 0x0c, 0x67, 0x86, 0x63, 0x20, 0xb1, 0xa8, 0x50, 0x1c, 0xba, 0x15, 0xb2, + 0xe4, 0x2f, 0xf3, 0xed, 0x28, 0xb5, 0x39, 0x43, 0x04, 0xc4, 0xaf, 0x68, 0x06, 0x32, 0x34, 0xcc, + 0x6a, 0x58, 0x94, 0x06, 0xef, 0x99, 0x6c, 0x4c, 0x0d, 0xd7, 0xb5, 0x4e, 0xd3, 0x55, 0xaf, 0x69, + 0xcd, 0x0e, 0xa6, 0x01, 0x93, 0x55, 0xf2, 0x5c, 0xf8, 0x14, 0x91, 0xa1, 0x93, 0x90, 0x63, 0x51, + 0x69, 0x98, 0x35, 0xfc, 0x12, 0xcd, 0x3e, 0x69, 0x85, 0x05, 0xea, 0x3a, 0x91, 0x90, 0xe9, 0x9f, + 0x77, 0x2c, 0x53, 0x6c, 0x2d, 0x9d, 0x82, 0x08, 0xe8, 0xf4, 0x0f, 0x87, 0x13, 0xdf, 0x6d, 0xd1, + 0xcb, 0x0b, 0xc7, 0xe2, 0xdc, 0x37, 0x13, 0x90, 0xa2, 0xe7, 0x6d, 0x02, 0x72, 0xbb, 0xcf, 0xec, + 0x54, 0xd4, 0xd5, 0xed, 0xbd, 0xe5, 0x8d, 0x8a, 0x2c, 0xa1, 0x02, 0x00, 0x15, 0x5c, 0xda, 0xd8, + 0x2e, 0xef, 0xca, 0x09, 0xef, 0x79, 0x7d, 0x6b, 0xf7, 0xfc, 0x59, 0x39, 0xe9, 0x01, 0xf6, 0x98, + 0x20, 0xe5, 0x57, 0x78, 0x68, 0x49, 0x4e, 0x23, 0x19, 0xf2, 0x8c, 0x60, 0xfd, 0x4a, 0x65, 0xf5, + 0xfc, 0x59, 0x79, 0x34, 0x28, 0x79, 0x68, 0x49, 0x1e, 0x43, 0xe3, 0x90, 0xa5, 0x92, 0xe5, 0xed, + 0xed, 0x0d, 0x39, 0xe3, 0x71, 0x56, 0x77, 0x95, 0xf5, 0xad, 0x35, 0x39, 0xeb, 0x71, 0xae, 0x29, + 0xdb, 0x7b, 0x3b, 0x32, 0x78, 0x0c, 0x9b, 0x95, 0x6a, 0xb5, 0xbc, 0x56, 0x91, 0x73, 0x9e, 0xc6, + 0xf2, 0x33, 0xbb, 0x95, 0xaa, 0x9c, 0x0f, 0x98, 0xf5, 0xd0, 0x92, 0x3c, 0xee, 0x4d, 0x51, 0xd9, + 0xda, 0xdb, 0x94, 0x0b, 0x68, 0x12, 0xc6, 0xd9, 0x14, 0xc2, 0x88, 0x89, 0x90, 0xe8, 0xfc, 0x59, + 0x59, 0xee, 0x1a, 0xc2, 0x58, 0x26, 0x03, 0x82, 0xf3, 0x67, 0x65, 0x34, 0xb7, 0x02, 0x69, 0x1a, + 0x5d, 0x08, 0x41, 0x61, 0xa3, 0xbc, 0x5c, 0xd9, 0x50, 0xb7, 0x77, 0x76, 0xd7, 0xb7, 0xb7, 0xca, + 0x1b, 0xb2, 0xd4, 0x95, 0x29, 0x95, 0xcf, 0xed, 0xad, 0x2b, 0x95, 0x55, 0x39, 0xe1, 0x97, 0xed, + 0x54, 0xca, 0xbb, 0x95, 0x55, 0x39, 0x39, 0xa7, 0xc3, 0x74, 0x54, 0x9e, 0x89, 0x3c, 0x19, 0xbe, + 0x2d, 0x4e, 0xf4, 0xd9, 0x62, 0xca, 0xd5, 0xb3, 0xc5, 0x5f, 0x96, 0x60, 0x2a, 0x22, 0xd7, 0x46, + 0x4e, 0xf2, 0x38, 0xa4, 0x59, 0x88, 0xb2, 0xea, 0x73, 0x4f, 0x64, 0xd2, 0xa6, 0x01, 0xdb, 0x53, + 0x81, 0x28, 0xce, 0x5f, 0x81, 0x93, 0x7d, 0x2a, 0x30, 0xa1, 0xe8, 0x31, 0xf2, 0x15, 0x09, 0x8a, + 0xfd, 0xb8, 0x63, 0x12, 0x45, 0x22, 0x90, 0x28, 0x2e, 0x86, 0x0d, 0x38, 0xdd, 0x7f, 0x0d, 0x3d, + 0x56, 0xbc, 0x29, 0xc1, 0x89, 0xe8, 0x46, 0x25, 0xd2, 0x86, 0xc7, 0x60, 0xb4, 0x85, 0xdd, 0x03, + 0x4b, 0x14, 0xeb, 0xbb, 0x22, 0x4a, 0x00, 0x19, 0x0e, 0xfb, 0x8a, 0xa3, 0xfc, 0x35, 0x24, 0xd9, + 0xaf, 0xdb, 0x60, 0xd6, 0xf4, 0x58, 0xfa, 0xf9, 0x04, 0xdc, 0x14, 0x49, 0x1e, 0x69, 0xe8, 0x6d, + 0x00, 0x86, 0xd9, 0xee, 0xb8, 0xac, 0x20, 0xb3, 0xfc, 0x94, 0xa5, 0x12, 0x7a, 0xf6, 0x49, 0xee, + 0xe9, 0xb8, 0xde, 0x78, 0x92, 0x8e, 0x03, 0x13, 0x51, 0x85, 0x0b, 0x5d, 0x43, 0x53, 0xd4, 0xd0, + 0xd9, 0x3e, 0x2b, 0xed, 0xa9, 0x75, 0x0f, 0x80, 0xac, 0x37, 0x0d, 0x6c, 0xba, 0xaa, 0xe3, 0xda, + 0x58, 0x6b, 0x19, 0x66, 0x83, 0x26, 0xe0, 0x4c, 0x29, 0x5d, 0xd7, 0x9a, 0x0e, 0x56, 0x26, 0xd8, + 0x70, 0x55, 0x8c, 0x12, 0x04, 0xad, 0x32, 0xb6, 0x0f, 0x31, 0x1a, 0x40, 0xb0, 0x61, 0x0f, 0x31, + 0xf7, 0xb5, 0x31, 0xc8, 0xf9, 0xda, 0x3a, 0x74, 0x1a, 0xf2, 0xcf, 0x6b, 0xd7, 0x34, 0x55, 0xb4, + 0xea, 0xcc, 0x13, 0x39, 0x22, 0xdb, 0xe1, 0xed, 0xfa, 0x03, 0x30, 0x4d, 0x55, 0xac, 0x8e, 0x8b, + 0x6d, 0x55, 0x6f, 0x6a, 0x8e, 0x43, 0x9d, 0x96, 0xa1, 0xaa, 0x88, 0x8c, 0x6d, 0x93, 0xa1, 0x15, + 0x31, 0x82, 0xce, 0xc1, 0x14, 0x45, 0xb4, 0x3a, 0x4d, 0xd7, 0x68, 0x37, 0xb1, 0x4a, 0x5e, 0x1e, + 0x1c, 0x9a, 0x88, 0x3d, 0xcb, 0x26, 0x89, 0xc6, 0x26, 0x57, 0x20, 0x16, 0x39, 0x68, 0x15, 0x6e, + 0xa3, 0xb0, 0x06, 0x36, 0xb1, 0xad, 0xb9, 0x58, 0xc5, 0x2f, 0x74, 0xb4, 0xa6, 0xa3, 0x6a, 0x66, + 0x4d, 0x3d, 0xd0, 0x9c, 0x83, 0xe2, 0x34, 0x21, 0x58, 0x4e, 0x14, 0x25, 0xe5, 0x16, 0xa2, 0xb8, + 0xc6, 0xf5, 0x2a, 0x54, 0xad, 0x6c, 0xd6, 0x2e, 0x6b, 0xce, 0x01, 0x2a, 0xc1, 0x09, 0xca, 0xe2, + 0xb8, 0xb6, 0x61, 0x36, 0x54, 0xfd, 0x00, 0xeb, 0x57, 0xd5, 0x8e, 0x5b, 0xbf, 0x50, 0xbc, 0xd5, + 0x3f, 0x3f, 0xb5, 0xb0, 0x4a, 0x75, 0x56, 0x88, 0xca, 0x9e, 0x5b, 0xbf, 0x80, 0xaa, 0x90, 0x27, + 0x9b, 0xd1, 0x32, 0x5e, 0xc6, 0x6a, 0xdd, 0xb2, 0x69, 0x65, 0x29, 0x44, 0x9c, 0x6c, 0x9f, 0x07, + 0x17, 0xb6, 0x39, 0x60, 0xd3, 0xaa, 0xe1, 0x52, 0xba, 0xba, 0x53, 0xa9, 0xac, 0x2a, 0x39, 0xc1, + 0x72, 0xc9, 0xb2, 0x49, 0x40, 0x35, 0x2c, 0xcf, 0xc1, 0x39, 0x16, 0x50, 0x0d, 0x4b, 0xb8, 0xf7, + 0x1c, 0x4c, 0xe9, 0x3a, 0x5b, 0xb3, 0xa1, 0xab, 0xbc, 0xc5, 0x77, 0x8a, 0x72, 0xc0, 0x59, 0xba, + 0xbe, 0xc6, 0x14, 0x78, 0x8c, 0x3b, 0xe8, 0x11, 0xb8, 0xa9, 0xeb, 0x2c, 0x3f, 0x70, 0xb2, 0x67, + 0x95, 0x61, 0xe8, 0x39, 0x98, 0x6a, 0x1f, 0xf6, 0x02, 0x51, 0x60, 0xc6, 0xf6, 0x61, 0x18, 0x76, + 0x27, 0x7d, 0x6d, 0xb3, 0xb1, 0xae, 0xb9, 0xb8, 0x56, 0xbc, 0xd9, 0xaf, 0xed, 0x1b, 0x40, 0x8b, + 0x20, 0xeb, 0xba, 0x8a, 0x4d, 0x6d, 0xbf, 0x89, 0x55, 0xcd, 0xc6, 0xa6, 0xe6, 0x14, 0x4f, 0xfa, + 0x95, 0x0b, 0xba, 0x5e, 0xa1, 0xa3, 0x65, 0x3a, 0x88, 0xce, 0xc0, 0xa4, 0xb5, 0xff, 0xbc, 0xce, + 0x22, 0x4b, 0x6d, 0xdb, 0xb8, 0x6e, 0xbc, 0x54, 0xbc, 0x83, 0xba, 0x69, 0x82, 0x0c, 0xd0, 0xb8, + 0xda, 0xa1, 0x62, 0x74, 0x0f, 0xc8, 0xba, 0x73, 0xa0, 0xd9, 0x6d, 0x5a, 0xda, 0x9d, 0xb6, 0xa6, + 0xe3, 0xe2, 0x9d, 0x4c, 0x95, 0xc9, 0xb7, 0x84, 0x98, 0x44, 0xb6, 0xf3, 0xa2, 0x51, 0x77, 0x05, + 0xe3, 0xdd, 0x2c, 0xb2, 0xa9, 0x8c, 0xb3, 0x5d, 0x81, 0xe9, 0x8e, 0x69, 0x98, 0x2e, 0xb6, 0xdb, + 0x36, 0x26, 0x4d, 0x3c, 0x3b, 0x89, 0xc5, 0x7f, 0x1a, 0xeb, 0xd3, 0x86, 0xef, 0xf9, 0xb5, 0x59, + 0x00, 0x28, 0x53, 0x9d, 0x5e, 0xe1, 0x5c, 0x09, 0xf2, 0xfe, 0xb8, 0x40, 0x59, 0x60, 0x91, 0x21, + 0x4b, 0xa4, 0xc6, 0xae, 0x6c, 0xaf, 0x92, 0xea, 0xf8, 0x6c, 0x45, 0x4e, 0x90, 0x2a, 0xbd, 0xb1, + 0xbe, 0x5b, 0x51, 0x95, 0xbd, 0xad, 0xdd, 0xf5, 0xcd, 0x8a, 0x9c, 0x3c, 0x93, 0xcd, 0xbc, 0x37, + 0x26, 0x5f, 0xbf, 0x7e, 0xfd, 0x7a, 0x62, 0xee, 0x3b, 0x09, 0x28, 0x04, 0x3b, 0x63, 0xf4, 0x59, + 0xb8, 0x59, 0xbc, 0xc6, 0x3a, 0xd8, 0x55, 0x5f, 0x34, 0x6c, 0x1a, 0xaa, 0x2d, 0x8d, 0xf5, 0x96, + 0x9e, 0x97, 0xa7, 0xb9, 0x56, 0x15, 0xbb, 0x4f, 0x1b, 0x36, 0x09, 0xc4, 0x96, 0xe6, 0xa2, 0x0d, + 0x38, 0x69, 0x5a, 0xaa, 0xe3, 0x6a, 0x66, 0x4d, 0xb3, 0x6b, 0x6a, 0xf7, 0x02, 0x41, 0xd5, 0x74, + 0x1d, 0x3b, 0x8e, 0xc5, 0x4a, 0x84, 0xc7, 0xf2, 0x19, 0xd3, 0xaa, 0x72, 0xe5, 0x6e, 0xee, 0x2c, + 0x73, 0xd5, 0x50, 0x44, 0x24, 0xfb, 0x45, 0xc4, 0xad, 0x90, 0x6d, 0x69, 0x6d, 0x15, 0x9b, 0xae, + 0x7d, 0x48, 0xfb, 0xb9, 0x8c, 0x92, 0x69, 0x69, 0xed, 0x0a, 0x79, 0xfe, 0xe4, 0xf6, 0xc0, 0xef, + 0xc7, 0x1f, 0x26, 0x21, 0xef, 0xef, 0xe9, 0x48, 0x8b, 0xac, 0xd3, 0xfc, 0x2d, 0xd1, 0x13, 0x7e, + 0xfb, 0xc0, 0x0e, 0x70, 0x61, 0x85, 0x24, 0xf6, 0xd2, 0x28, 0xeb, 0xb4, 0x14, 0x86, 0x24, 0x45, + 0x95, 0x9c, 0x69, 0xcc, 0xfa, 0xf7, 0x8c, 0xc2, 0x9f, 0xd0, 0x1a, 0x8c, 0x3e, 0xef, 0x50, 0xee, + 0x51, 0xca, 0x7d, 0xc7, 0x60, 0xee, 0x27, 0xaa, 0x94, 0x3c, 0xfb, 0x44, 0x55, 0xdd, 0xda, 0x56, + 0x36, 0xcb, 0x1b, 0x0a, 0x87, 0xa3, 0x5b, 0x20, 0xd5, 0xd4, 0x5e, 0x3e, 0x0c, 0x96, 0x00, 0x2a, + 0x1a, 0xd6, 0xf1, 0xb7, 0x40, 0xea, 0x45, 0xac, 0x5d, 0x0d, 0x26, 0x5e, 0x2a, 0xfa, 0x04, 0x43, + 0x7f, 0x11, 0xd2, 0xd4, 0x5f, 0x08, 0x80, 0x7b, 0x4c, 0x1e, 0x41, 0x19, 0x48, 0xad, 0x6c, 0x2b, + 0x24, 0xfc, 0x65, 0xc8, 0x33, 0xa9, 0xba, 0xb3, 0x5e, 0x59, 0xa9, 0xc8, 0x89, 0xb9, 0x73, 0x30, + 0xca, 0x9c, 0x40, 0x8e, 0x86, 0xe7, 0x06, 0x79, 0x84, 0x3f, 0x72, 0x0e, 0x49, 0x8c, 0xee, 0x6d, + 0x2e, 0x57, 0x14, 0x39, 0xe1, 0xdf, 0x5e, 0x07, 0xf2, 0xfe, 0x76, 0xee, 0xa7, 0x13, 0x53, 0x7f, + 0x2b, 0x41, 0xce, 0xd7, 0x9e, 0x91, 0xc6, 0x40, 0x6b, 0x36, 0xad, 0x17, 0x55, 0xad, 0x69, 0x68, + 0x0e, 0x0f, 0x0a, 0xa0, 0xa2, 0x32, 0x91, 0x0c, 0xbb, 0x69, 0x3f, 0x15, 0xe3, 0xdf, 0x90, 0x40, + 0x0e, 0xb7, 0x76, 0x21, 0x03, 0xa5, 0x9f, 0xa9, 0x81, 0xaf, 0x4b, 0x50, 0x08, 0xf6, 0x73, 0x21, + 0xf3, 0x4e, 0xff, 0x4c, 0xcd, 0x7b, 0x27, 0x01, 0xe3, 0x81, 0x2e, 0x6e, 0x58, 0xeb, 0x5e, 0x80, + 0x49, 0xa3, 0x86, 0x5b, 0x6d, 0xcb, 0xc5, 0xa6, 0x7e, 0xa8, 0x36, 0xf1, 0x35, 0xdc, 0x2c, 0xce, + 0xd1, 0x44, 0xb1, 0x38, 0xb8, 0x4f, 0x5c, 0x58, 0xef, 0xe2, 0x36, 0x08, 0xac, 0x34, 0xb5, 0xbe, + 0x5a, 0xd9, 0xdc, 0xd9, 0xde, 0xad, 0x6c, 0xad, 0x3c, 0xa3, 0xee, 0x6d, 0x3d, 0xb9, 0xb5, 0xfd, + 0xf4, 0x96, 0x22, 0x1b, 0x21, 0xb5, 0x4f, 0xf0, 0xa8, 0xef, 0x80, 0x1c, 0x36, 0x0a, 0xdd, 0x0c, + 0x51, 0x66, 0xc9, 0x23, 0x68, 0x0a, 0x26, 0xb6, 0xb6, 0xd5, 0xea, 0xfa, 0x6a, 0x45, 0xad, 0x5c, + 0xba, 0x54, 0x59, 0xd9, 0xad, 0xb2, 0x17, 0x67, 0x4f, 0x7b, 0x37, 0x78, 0xa8, 0x5f, 0x4b, 0xc2, + 0x54, 0x84, 0x25, 0xa8, 0xcc, 0x7b, 0x76, 0xf6, 0x1a, 0x71, 0xff, 0x30, 0xd6, 0x2f, 0x90, 0xae, + 0x60, 0x47, 0xb3, 0x5d, 0xde, 0xe2, 0xdf, 0x03, 0xc4, 0x4b, 0xa6, 0x6b, 0xd4, 0x0d, 0x6c, 0xf3, + 0x7b, 0x06, 0xd6, 0xc8, 0x4f, 0x74, 0xe5, 0xec, 0xaa, 0xe1, 0x3e, 0x40, 0x6d, 0xcb, 0x31, 0x5c, + 0xe3, 0x1a, 0x56, 0x0d, 0x53, 0x5c, 0x4a, 0x90, 0xc6, 0x3e, 0xa5, 0xc8, 0x62, 0x64, 0xdd, 0x74, + 0x3d, 0x6d, 0x13, 0x37, 0xb4, 0x90, 0x36, 0x49, 0xe0, 0x49, 0x45, 0x16, 0x23, 0x9e, 0xf6, 0x69, + 0xc8, 0xd7, 0xac, 0x0e, 0x69, 0x93, 0x98, 0x1e, 0xa9, 0x17, 0x92, 0x92, 0x63, 0x32, 0x4f, 0x85, + 0xf7, 0xb1, 0xdd, 0xdb, 0x90, 0xbc, 0x92, 0x63, 0x32, 0xa6, 0x72, 0x37, 0x4c, 0x68, 0x8d, 0x86, + 0x4d, 0xc8, 0x05, 0x11, 0xeb, 0xcc, 0x0b, 0x9e, 0x98, 0x2a, 0xce, 0x3c, 0x01, 0x19, 0xe1, 0x07, + 0x52, 0x92, 0x89, 0x27, 0xd4, 0x36, 0xbb, 0x93, 0x4a, 0xcc, 0x67, 0x95, 0x8c, 0x29, 0x06, 0x4f, + 0x43, 0xde, 0x70, 0xd4, 0xee, 0xe5, 0x68, 0xe2, 0x54, 0x62, 0x3e, 0xa3, 0xe4, 0x0c, 0xc7, 0xbb, + 0x0d, 0x9b, 0x7b, 0x33, 0x01, 0x85, 0xe0, 0xe5, 0x2e, 0x5a, 0x85, 0x4c, 0xd3, 0xd2, 0x35, 0x1a, + 0x5a, 0xec, 0x97, 0x85, 0xf9, 0x98, 0xfb, 0xe0, 0x85, 0x0d, 0xae, 0xaf, 0x78, 0xc8, 0x99, 0x7f, + 0x94, 0x20, 0x23, 0xc4, 0xe8, 0x04, 0xa4, 0xda, 0x9a, 0x7b, 0x40, 0xe9, 0xd2, 0xcb, 0x09, 0x59, + 0x52, 0xe8, 0x33, 0x91, 0x3b, 0x6d, 0xcd, 0xa4, 0x21, 0xc0, 0xe5, 0xe4, 0x99, 0xec, 0x6b, 0x13, + 0x6b, 0x35, 0xda, 0xf6, 0x5b, 0xad, 0x16, 0x36, 0x5d, 0x47, 0xec, 0x2b, 0x97, 0xaf, 0x70, 0x31, + 0xba, 0x17, 0x26, 0x5d, 0x5b, 0x33, 0x9a, 0x01, 0xdd, 0x14, 0xd5, 0x95, 0xc5, 0x80, 0xa7, 0x5c, + 0x82, 0x5b, 0x04, 0x6f, 0x0d, 0xbb, 0x9a, 0x7e, 0x80, 0x6b, 0x5d, 0xd0, 0x28, 0xbd, 0x39, 0xbc, + 0x99, 0x2b, 0xac, 0xf2, 0x71, 0x81, 0x9d, 0xfb, 0x9e, 0x04, 0x93, 0xe2, 0x45, 0xa5, 0xe6, 0x39, + 0x6b, 0x13, 0x40, 0x33, 0x4d, 0xcb, 0xf5, 0xbb, 0xab, 0x37, 0x94, 0x7b, 0x70, 0x0b, 0x65, 0x0f, + 0xa4, 0xf8, 0x08, 0x66, 0x5a, 0x00, 0xdd, 0x91, 0xbe, 0x6e, 0x3b, 0x09, 0x39, 0x7e, 0x73, 0x4f, + 0x7f, 0xfe, 0x61, 0xaf, 0xb6, 0xc0, 0x44, 0xe4, 0x8d, 0x06, 0x4d, 0x43, 0x7a, 0x1f, 0x37, 0x0c, + 0x93, 0xdf, 0x27, 0xb2, 0x07, 0x71, 0x4b, 0x99, 0xf2, 0x6e, 0x29, 0x97, 0xaf, 0xc0, 0x94, 0x6e, + 0xb5, 0xc2, 0xe6, 0x2e, 0xcb, 0xa1, 0xd7, 0x6b, 0xe7, 0xb2, 0xf4, 0x2c, 0x74, 0x5b, 0xcc, 0x2f, + 0x27, 0x92, 0x6b, 0x3b, 0xcb, 0x5f, 0x4d, 0xcc, 0xac, 0x31, 0xdc, 0x8e, 0x58, 0xa6, 0x82, 0xeb, + 0x4d, 0xac, 0x13, 0xd3, 0xe1, 0xc7, 0x77, 0xc1, 0xfd, 0x0d, 0xc3, 0x3d, 0xe8, 0xec, 0x2f, 0xe8, + 0x56, 0x6b, 0xb1, 0x61, 0x35, 0xac, 0xee, 0xcf, 0x5d, 0xe4, 0x89, 0x3e, 0xd0, 0xff, 0xf8, 0x4f, + 0x5e, 0x59, 0x4f, 0x3a, 0x13, 0xfb, 0xfb, 0x58, 0x69, 0x0b, 0xa6, 0xb8, 0xb2, 0x4a, 0xef, 0xdc, + 0xd9, 0xab, 0x01, 0x1a, 0x78, 0xef, 0x52, 0xfc, 0xc6, 0xbb, 0xb4, 0x56, 0x2b, 0x93, 0x1c, 0x4a, + 0xc6, 0xd8, 0x0b, 0x44, 0x49, 0x81, 0x9b, 0x02, 0x7c, 0xec, 0x5c, 0x62, 0x3b, 0x86, 0xf1, 0x3b, + 0x9c, 0x71, 0xca, 0xc7, 0x58, 0xe5, 0xd0, 0xd2, 0x0a, 0x8c, 0x1f, 0x87, 0xeb, 0xef, 0x38, 0x57, + 0x1e, 0xfb, 0x49, 0xd6, 0x60, 0x82, 0x92, 0xe8, 0x1d, 0xc7, 0xb5, 0x5a, 0x34, 0xe9, 0x0d, 0xa6, + 0xf9, 0xfb, 0x77, 0xd9, 0x41, 0x29, 0x10, 0xd8, 0x8a, 0x87, 0x2a, 0x95, 0x80, 0xfe, 0xcc, 0x50, + 0xc3, 0x7a, 0x33, 0x86, 0xe1, 0x2d, 0x6e, 0x88, 0xa7, 0x5f, 0x7a, 0x0a, 0xa6, 0xc9, 0xff, 0x34, + 0x27, 0xf9, 0x2d, 0x89, 0xbf, 0x65, 0x2a, 0x7e, 0xef, 0x15, 0x76, 0x16, 0xa7, 0x3c, 0x02, 0x9f, + 0x4d, 0xbe, 0x5d, 0x6c, 0x60, 0xd7, 0xc5, 0xb6, 0xa3, 0x6a, 0xcd, 0x28, 0xf3, 0x7c, 0xaf, 0xe9, + 0xc5, 0x2f, 0xbc, 0x1f, 0xdc, 0xc5, 0x35, 0x86, 0x2c, 0x37, 0x9b, 0xa5, 0x3d, 0xb8, 0x39, 0x22, + 0x2a, 0x86, 0xe0, 0x7c, 0x8d, 0x73, 0x4e, 0xf7, 0x44, 0x06, 0xa1, 0xdd, 0x01, 0x21, 0xf7, 0xf6, + 0x72, 0x08, 0xce, 0xdf, 0xe3, 0x9c, 0x88, 0x63, 0xc5, 0x96, 0x12, 0xc6, 0x27, 0x60, 0xf2, 0x1a, + 0xb6, 0xf7, 0x2d, 0x87, 0x5f, 0x8d, 0x0c, 0x41, 0xf7, 0x3a, 0xa7, 0x9b, 0xe0, 0x40, 0x7a, 0x57, + 0x42, 0xb8, 0x1e, 0x81, 0x4c, 0x5d, 0xd3, 0xf1, 0x10, 0x14, 0x5f, 0xe4, 0x14, 0x63, 0x44, 0x9f, + 0x40, 0xcb, 0x90, 0x6f, 0x58, 0xbc, 0x2c, 0xc5, 0xc3, 0xdf, 0xe0, 0xf0, 0x9c, 0xc0, 0x70, 0x8a, + 0xb6, 0xd5, 0xee, 0x34, 0x49, 0xcd, 0x8a, 0xa7, 0xf8, 0x7d, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x18, + 0x6e, 0xfd, 0x03, 0x41, 0xe1, 0xf8, 0xfc, 0xf9, 0x38, 0xe4, 0x2c, 0xb3, 0x79, 0x68, 0x99, 0xc3, + 0x18, 0xf1, 0x25, 0xce, 0x00, 0x1c, 0x42, 0x08, 0x2e, 0x42, 0x76, 0xd8, 0x8d, 0xf8, 0xc3, 0xf7, + 0xc5, 0xf1, 0x10, 0x3b, 0xb0, 0x06, 0x13, 0x22, 0x41, 0x19, 0x96, 0x39, 0x04, 0xc5, 0x1f, 0x71, + 0x8a, 0x82, 0x0f, 0xc6, 0x97, 0xe1, 0x62, 0xc7, 0x6d, 0xe0, 0x61, 0x48, 0xde, 0x14, 0xcb, 0xe0, + 0x10, 0xee, 0xca, 0x7d, 0x6c, 0xea, 0x07, 0xc3, 0x31, 0x7c, 0x45, 0xb8, 0x52, 0x60, 0x08, 0xc5, + 0x0a, 0x8c, 0xb7, 0x34, 0xdb, 0x39, 0xd0, 0x9a, 0x43, 0x6d, 0xc7, 0x1f, 0x73, 0x8e, 0xbc, 0x07, + 0xe2, 0x1e, 0xe9, 0x98, 0xc7, 0xa1, 0xf9, 0xaa, 0xf0, 0x88, 0x0f, 0xc6, 0x8f, 0x9e, 0xe3, 0xd2, + 0x0b, 0xa8, 0xe3, 0xb0, 0x7d, 0x4d, 0x1c, 0x3d, 0x86, 0xdd, 0xf4, 0x33, 0x5e, 0x84, 0xac, 0x63, + 0xbc, 0x3c, 0x14, 0xcd, 0x9f, 0x88, 0x9d, 0xa6, 0x00, 0x02, 0x7e, 0x06, 0x6e, 0x89, 0x2c, 0x13, + 0x43, 0x90, 0xfd, 0x29, 0x27, 0x3b, 0x11, 0x51, 0x2a, 0x78, 0x4a, 0x38, 0x2e, 0xe5, 0x9f, 0x89, + 0x94, 0x80, 0x43, 0x5c, 0x3b, 0xe4, 0x45, 0xc1, 0xd1, 0xea, 0xc7, 0xf3, 0xda, 0x9f, 0x0b, 0xaf, + 0x31, 0x6c, 0xc0, 0x6b, 0xbb, 0x70, 0x82, 0x33, 0x1e, 0x6f, 0x5f, 0xbf, 0x2e, 0x12, 0x2b, 0x43, + 0xef, 0x05, 0x77, 0xf7, 0xff, 0xc1, 0x8c, 0xe7, 0x4e, 0xd1, 0x91, 0x3a, 0x6a, 0x4b, 0x6b, 0x0f, + 0xc1, 0xfc, 0x0d, 0xce, 0x2c, 0x32, 0xbe, 0xd7, 0xd2, 0x3a, 0x9b, 0x5a, 0x9b, 0x90, 0x5f, 0x81, + 0xa2, 0x20, 0xef, 0x98, 0x36, 0xd6, 0xad, 0x86, 0x69, 0xbc, 0x8c, 0x6b, 0x43, 0x50, 0xff, 0x45, + 0x68, 0xab, 0xf6, 0x7c, 0x70, 0xc2, 0xbc, 0x0e, 0xb2, 0xd7, 0xab, 0xa8, 0x46, 0xab, 0x6d, 0xd9, + 0x6e, 0x0c, 0xe3, 0x5f, 0x8a, 0x9d, 0xf2, 0x70, 0xeb, 0x14, 0x56, 0xaa, 0x40, 0x81, 0x3e, 0x0e, + 0x1b, 0x92, 0x7f, 0xc5, 0x89, 0xc6, 0xbb, 0x28, 0x9e, 0x38, 0x74, 0xab, 0xd5, 0xd6, 0xec, 0x61, + 0xf2, 0xdf, 0x5f, 0x8b, 0xc4, 0xc1, 0x21, 0x3c, 0x71, 0xb8, 0x87, 0x6d, 0x4c, 0xaa, 0xfd, 0x10, + 0x0c, 0xdf, 0x14, 0x89, 0x43, 0x60, 0x38, 0x85, 0x68, 0x18, 0x86, 0xa0, 0xf8, 0x1b, 0x41, 0x21, + 0x30, 0x84, 0xe2, 0x73, 0xdd, 0x42, 0x6b, 0xe3, 0x86, 0xe1, 0xb8, 0x36, 0xeb, 0x83, 0x07, 0x53, + 0x7d, 0xeb, 0xfd, 0x60, 0x13, 0xa6, 0xf8, 0xa0, 0xa5, 0x27, 0x60, 0x22, 0xd4, 0x62, 0xa0, 0xb8, + 0x6f, 0x16, 0x8a, 0x3f, 0xff, 0x21, 0x4f, 0x46, 0xc1, 0x0e, 0xa3, 0xb4, 0x41, 0xf6, 0x3d, 0xd8, + 0x07, 0xc4, 0x93, 0xbd, 0xf2, 0xa1, 0xb7, 0xf5, 0x81, 0x36, 0xa0, 0x74, 0x09, 0xc6, 0x03, 0x3d, + 0x40, 0x3c, 0xd5, 0x2f, 0x70, 0xaa, 0xbc, 0xbf, 0x05, 0x28, 0x9d, 0x83, 0x14, 0xa9, 0xe7, 0xf1, + 0xf0, 0x5f, 0xe4, 0x70, 0xaa, 0x5e, 0x7a, 0x14, 0x32, 0xa2, 0x8e, 0xc7, 0x43, 0x7f, 0x89, 0x43, + 0x3d, 0x08, 0x81, 0x8b, 0x1a, 0x1e, 0x0f, 0xff, 0x65, 0x01, 0x17, 0x10, 0x02, 0x1f, 0xde, 0x85, + 0xdf, 0xfe, 0x95, 0x14, 0xcf, 0xc3, 0xc2, 0x77, 0x17, 0x61, 0x8c, 0x17, 0xef, 0x78, 0xf4, 0xe7, + 0xf9, 0xe4, 0x02, 0x51, 0x7a, 0x18, 0xd2, 0x43, 0x3a, 0xfc, 0x57, 0x39, 0x94, 0xe9, 0x97, 0x56, + 0x20, 0xe7, 0x2b, 0xd8, 0xf1, 0xf0, 0x5f, 0xe3, 0x70, 0x3f, 0x8a, 0x98, 0xce, 0x0b, 0x76, 0x3c, + 0xc1, 0xaf, 0x0b, 0xd3, 0x39, 0x82, 0xb8, 0x4d, 0xd4, 0xea, 0x78, 0xf4, 0x6f, 0x08, 0xaf, 0x0b, + 0x48, 0xe9, 0x71, 0xc8, 0x7a, 0xf9, 0x37, 0x1e, 0xff, 0x9b, 0x1c, 0xdf, 0xc5, 0x10, 0x0f, 0xf8, + 0xf2, 0x7f, 0x3c, 0xc5, 0x6f, 0x09, 0x0f, 0xf8, 0x50, 0xe4, 0x18, 0x85, 0x6b, 0x7a, 0x3c, 0xd3, + 0x6f, 0x8b, 0x63, 0x14, 0x2a, 0xe9, 0x64, 0x37, 0x69, 0x1a, 0x8c, 0xa7, 0xf8, 0x1d, 0xb1, 0x9b, + 0x54, 0x9f, 0x98, 0x11, 0x2e, 0x92, 0xf1, 0x1c, 0xbf, 0x2b, 0xcc, 0x08, 0xd5, 0xc8, 0xd2, 0x0e, + 0xa0, 0xde, 0x02, 0x19, 0xcf, 0xf7, 0x2a, 0xe7, 0x9b, 0xec, 0xa9, 0x8f, 0xa5, 0xa7, 0xe1, 0x44, + 0x74, 0x71, 0x8c, 0x67, 0xfd, 0xc2, 0x87, 0xa1, 0xd7, 0x19, 0x7f, 0x6d, 0x2c, 0xed, 0x76, 0xb3, + 0xac, 0xbf, 0x30, 0xc6, 0xd3, 0xbe, 0xf6, 0x61, 0x30, 0xd1, 0xfa, 0xeb, 0x62, 0xa9, 0x0c, 0xd0, + 0xad, 0x49, 0xf1, 0x5c, 0xaf, 0x73, 0x2e, 0x1f, 0x88, 0x1c, 0x0d, 0x5e, 0x92, 0xe2, 0xf1, 0x5f, + 0x14, 0x47, 0x83, 0x23, 0xc8, 0xd1, 0x10, 0xd5, 0x28, 0x1e, 0xfd, 0x86, 0x38, 0x1a, 0x02, 0x52, + 0xba, 0x08, 0x19, 0xb3, 0xd3, 0x6c, 0x92, 0xd8, 0x42, 0x83, 0x3f, 0x23, 0x2a, 0xfe, 0xf3, 0x47, + 0x1c, 0x2c, 0x00, 0xa5, 0x73, 0x90, 0xc6, 0xad, 0x7d, 0x5c, 0x8b, 0x43, 0xfe, 0xcb, 0x47, 0x22, + 0x9f, 0x10, 0xed, 0xd2, 0xe3, 0x00, 0xec, 0x65, 0x9a, 0xfe, 0x4a, 0x14, 0x83, 0xfd, 0xd7, 0x8f, + 0xf8, 0x17, 0x0a, 0x5d, 0x48, 0x97, 0x80, 0x7d, 0xef, 0x30, 0x98, 0xe0, 0xfd, 0x20, 0x01, 0x7d, + 0x01, 0x7f, 0x04, 0xc6, 0x9e, 0x77, 0x2c, 0xd3, 0xd5, 0x1a, 0x71, 0xe8, 0x7f, 0xe3, 0x68, 0xa1, + 0x4f, 0x1c, 0xd6, 0xb2, 0x6c, 0xec, 0x6a, 0x0d, 0x27, 0x0e, 0xfb, 0xef, 0x1c, 0xeb, 0x01, 0x08, + 0x58, 0xd7, 0x1c, 0x77, 0x98, 0x75, 0xff, 0x87, 0x00, 0x0b, 0x00, 0x31, 0x9a, 0xfc, 0x7f, 0x15, + 0x1f, 0xc6, 0x61, 0x3f, 0x10, 0x46, 0x73, 0xfd, 0xd2, 0xa3, 0x90, 0x25, 0xff, 0xb2, 0xaf, 0x76, + 0x62, 0xc0, 0xff, 0xc9, 0xc1, 0x5d, 0x04, 0x99, 0xd9, 0x71, 0x6b, 0xae, 0x11, 0xef, 0xec, 0xff, + 0xe2, 0x3b, 0x2d, 0xf4, 0x4b, 0x65, 0xc8, 0x39, 0x6e, 0xad, 0xd6, 0xe1, 0x1d, 0x4d, 0x0c, 0xfc, + 0xc7, 0x1f, 0x79, 0x2f, 0xb9, 0x1e, 0x66, 0xf9, 0x74, 0xf4, 0x65, 0x1d, 0xac, 0x59, 0x6b, 0x16, + 0xbb, 0xa6, 0x83, 0xff, 0xb9, 0x1f, 0xee, 0xd1, 0xad, 0xd6, 0xbe, 0xe5, 0x2c, 0xb2, 0x84, 0xe2, + 0x4b, 0x46, 0x8b, 0x2d, 0xad, 0xed, 0x50, 0xd4, 0x12, 0xbf, 0x71, 0xcb, 0xf1, 0x27, 0x32, 0x30, + 0x73, 0xbc, 0xdb, 0xba, 0xb9, 0xdb, 0x60, 0xfc, 0x52, 0xd3, 0xd2, 0x5c, 0xc3, 0x6c, 0xec, 0x58, + 0x86, 0xe9, 0xa2, 0x3c, 0x48, 0x75, 0xfa, 0x53, 0x93, 0xa4, 0x48, 0xf5, 0xb9, 0x7f, 0x48, 0x43, + 0x96, 0x5d, 0xf4, 0x6c, 0x6a, 0x6d, 0xf4, 0x73, 0x90, 0xdf, 0xe2, 0x67, 0xe5, 0xc1, 0xa5, 0x0b, + 0x8e, 0x77, 0xab, 0xec, 0x9b, 0x7f, 0xc1, 0xd3, 0x5e, 0xf0, 0xab, 0xd2, 0x9f, 0x96, 0x97, 0x1f, + 0xf8, 0xc1, 0xdb, 0x27, 0xef, 0xeb, 0x6b, 0x1f, 0x29, 0x8e, 0x8b, 0x2c, 0xa8, 0x17, 0xf6, 0x0c, + 0xd3, 0x7d, 0x70, 0xe9, 0x82, 0x12, 0x98, 0x0f, 0x5d, 0x83, 0x0c, 0x1f, 0x70, 0xf8, 0xaf, 0x0d, + 0x77, 0xf4, 0x99, 0x5b, 0xa8, 0xb1, 0x79, 0xcf, 0xbe, 0xf5, 0xf6, 0xc9, 0x91, 0x63, 0xcf, 0xed, + 0xcd, 0x85, 0x5e, 0x80, 0x9c, 0xb0, 0x63, 0xbd, 0xe6, 0xf0, 0x8f, 0x8a, 0xef, 0x8e, 0x59, 0xf6, + 0x7a, 0x8d, 0xcf, 0x7e, 0xd7, 0x0f, 0xde, 0x3e, 0x39, 0x37, 0x70, 0xe6, 0x85, 0xbd, 0x8e, 0x51, + 0x53, 0xfc, 0x73, 0xa0, 0xe7, 0x20, 0x49, 0xa6, 0x62, 0x9f, 0x1f, 0x9f, 0xec, 0x33, 0x95, 0x37, + 0xc5, 0x19, 0xbe, 0xc0, 0x61, 0xa6, 0x21, 0xbc, 0x33, 0x8f, 0xc3, 0x64, 0xcf, 0xf6, 0x20, 0x19, + 0x92, 0x57, 0xf1, 0x21, 0xff, 0xe2, 0x88, 0xfc, 0x8b, 0xa6, 0xbb, 0x5f, 0xd4, 0x49, 0xf3, 0x79, + 0xfe, 0x99, 0x5c, 0x29, 0x71, 0x41, 0x9a, 0xb9, 0x08, 0xe3, 0x01, 0x1f, 0x1f, 0x0b, 0xfc, 0x18, + 0xc8, 0x61, 0x2f, 0x1d, 0x0b, 0x7f, 0x1e, 0x32, 0x1f, 0x07, 0x37, 0xf7, 0x7d, 0x04, 0x63, 0xe5, + 0x66, 0x73, 0x53, 0x6b, 0x3b, 0xe8, 0x19, 0x98, 0x64, 0x2d, 0xfc, 0xae, 0xb5, 0x4a, 0x7f, 0xdf, + 0xd9, 0xd4, 0xda, 0x3c, 0xa0, 0xef, 0x0d, 0xb8, 0x9b, 0x03, 0x16, 0x7a, 0xb4, 0xe9, 0xfc, 0x4a, + 0x2f, 0x0b, 0x7a, 0x0a, 0x64, 0x21, 0xa4, 0x67, 0x8b, 0x30, 0xb3, 0x70, 0x3d, 0x33, 0x90, 0x59, + 0x28, 0x33, 0xe2, 0x1e, 0x0e, 0xf4, 0x18, 0x64, 0xd6, 0x4d, 0xf7, 0xa1, 0x25, 0xc2, 0xc7, 0x62, + 0x70, 0x2e, 0x92, 0x4f, 0x28, 0x31, 0x1e, 0x0f, 0xc3, 0xf1, 0xe7, 0xcf, 0x12, 0x7c, 0x6a, 0x30, + 0x9e, 0x2a, 0x75, 0xf1, 0xf4, 0x11, 0x95, 0x21, 0x4b, 0xf6, 0x9c, 0x19, 0xc0, 0xbe, 0x67, 0xbf, + 0x3d, 0x92, 0xc0, 0xd3, 0x62, 0x0c, 0x5d, 0x94, 0xa0, 0x60, 0x36, 0x8c, 0xc6, 0x50, 0xf8, 0x8c, + 0xe8, 0xa2, 0x08, 0x45, 0xd5, 0xb3, 0x62, 0x6c, 0x00, 0x45, 0x35, 0x64, 0x45, 0xd5, 0x6f, 0x45, + 0xd5, 0xb3, 0x22, 0x13, 0x43, 0xe1, 0xb7, 0xc2, 0x7b, 0x46, 0xab, 0x00, 0x97, 0x8c, 0x97, 0x70, + 0x8d, 0x99, 0x91, 0x8d, 0x48, 0x46, 0x82, 0xa3, 0xab, 0xc6, 0x48, 0x7c, 0x38, 0xb4, 0x06, 0xb9, + 0x6a, 0xbd, 0x4b, 0x03, 0xfc, 0x73, 0xfe, 0x48, 0x53, 0xea, 0x21, 0x1e, 0x3f, 0xd2, 0x33, 0x87, + 0x2d, 0x29, 0x17, 0x67, 0x8e, 0x6f, 0x4d, 0x3e, 0x5c, 0xd7, 0x1c, 0x46, 0x93, 0x8f, 0x35, 0xc7, + 0xc7, 0xe3, 0x47, 0xa2, 0x8b, 0x30, 0xb6, 0x6c, 0x59, 0x44, 0xb3, 0x38, 0x4e, 0x49, 0x4e, 0x47, + 0x92, 0x70, 0x1d, 0x46, 0x20, 0x10, 0x74, 0x77, 0x68, 0xe8, 0x13, 0x78, 0x61, 0xd0, 0xee, 0x08, + 0x2d, 0xb1, 0x3b, 0xe2, 0xd9, 0x7f, 0x02, 0x97, 0x0f, 0x5d, 0x4c, 0xda, 0xe5, 0xe2, 0xc4, 0x10, + 0x27, 0x50, 0x28, 0x87, 0x4e, 0xa0, 0x10, 0xa3, 0x2a, 0x4c, 0x08, 0x59, 0xc5, 0xec, 0x90, 0x1c, + 0x5c, 0x94, 0xf9, 0xb7, 0xc6, 0x83, 0x68, 0xb9, 0x2e, 0x63, 0x0d, 0x33, 0xa0, 0x1d, 0x28, 0x08, + 0xd1, 0xa6, 0x43, 0x17, 0x3d, 0x19, 0x51, 0x57, 0xc3, 0x9c, 0x4c, 0x95, 0x51, 0x86, 0xf0, 0x33, + 0xab, 0x70, 0x22, 0x3a, 0x5b, 0xc5, 0x65, 0x4b, 0xc9, 0x9f, 0x65, 0x57, 0xe0, 0xa6, 0xc8, 0xcc, + 0x14, 0x47, 0x92, 0x08, 0xd5, 0x89, 0x40, 0x3a, 0xf2, 0x83, 0xd3, 0x11, 0xe0, 0x74, 0x2f, 0xb8, + 0x1b, 0x64, 0x7e, 0x70, 0x32, 0x02, 0x9c, 0xf4, 0x83, 0x3f, 0x0b, 0x85, 0x60, 0x1e, 0xf2, 0xa3, + 0xc7, 0x23, 0xd0, 0xe3, 0x11, 0xe8, 0xe8, 0xb9, 0x53, 0x11, 0xe8, 0x54, 0x08, 0x5d, 0xed, 0x3b, + 0xf7, 0x64, 0x04, 0x7a, 0x32, 0x02, 0x1d, 0x3d, 0x37, 0x8a, 0x40, 0x23, 0x3f, 0xfa, 0x51, 0x98, + 0x08, 0xa5, 0x1c, 0x3f, 0x7c, 0x2c, 0x02, 0x3e, 0x16, 0xaa, 0xcd, 0xe1, 0x54, 0xe3, 0xc7, 0x4f, + 0x44, 0xe0, 0x27, 0xa2, 0xa6, 0x8f, 0xb6, 0x7e, 0x34, 0x02, 0x3e, 0x1a, 0x39, 0x7d, 0x34, 0x5e, + 0x8e, 0xc0, 0xcb, 0x7e, 0x7c, 0x09, 0xf2, 0xfe, 0xac, 0xe2, 0xc7, 0x66, 0x22, 0xb0, 0x99, 0xb0, + 0xdf, 0x03, 0x29, 0x25, 0x2e, 0xd2, 0xb3, 0x7d, 0x8e, 0x4b, 0x20, 0x8d, 0x1c, 0xab, 0xb3, 0xb9, + 0x02, 0xd3, 0x51, 0x49, 0x23, 0x82, 0xe3, 0x8c, 0x9f, 0xa3, 0xb0, 0x34, 0x1d, 0x48, 0x16, 0x14, + 0xd7, 0x69, 0xf9, 0x99, 0x9f, 0x83, 0xa9, 0x88, 0xd4, 0x11, 0x41, 0xfc, 0x80, 0x9f, 0x38, 0xb7, + 0x34, 0x13, 0x20, 0x0e, 0xbc, 0x2b, 0xf8, 0x5b, 0xab, 0x1f, 0x4e, 0x41, 0x81, 0xa7, 0xa8, 0x6d, + 0xbb, 0x86, 0x6d, 0x5c, 0x43, 0xff, 0xbf, 0x7f, 0x87, 0xb5, 0x14, 0x95, 0xda, 0x38, 0xee, 0x18, + 0x8d, 0xd6, 0x73, 0x7d, 0x1b, 0xad, 0x07, 0x87, 0x99, 0x20, 0xae, 0xdf, 0xaa, 0xf4, 0xf4, 0x5b, + 0xf7, 0x0c, 0xa2, 0xed, 0xd7, 0x76, 0x55, 0x7a, 0xda, 0xae, 0x38, 0x9a, 0xc8, 0xee, 0xeb, 0x72, + 0x6f, 0xf7, 0x75, 0x66, 0x10, 0x4f, 0xff, 0x26, 0xec, 0x72, 0x6f, 0x13, 0x16, 0xcb, 0x14, 0xdd, + 0x8b, 0x5d, 0xee, 0xed, 0xc5, 0x06, 0x32, 0xf5, 0x6f, 0xc9, 0x2e, 0xf7, 0xb6, 0x64, 0xb1, 0x4c, + 0xd1, 0x9d, 0xd9, 0x93, 0x11, 0x9d, 0xd9, 0xbd, 0x83, 0xa8, 0x06, 0x35, 0x68, 0x5b, 0x51, 0x0d, + 0xda, 0x7d, 0x03, 0x0d, 0x1b, 0xd8, 0xa7, 0x3d, 0x19, 0xd1, 0xa7, 0xc5, 0x1b, 0xd7, 0xa7, 0x5d, + 0xdb, 0x8a, 0x6a, 0xd7, 0x86, 0x30, 0xae, 0x5f, 0xd7, 0xb6, 0x1c, 0xee, 0xda, 0xe6, 0x07, 0x71, + 0x45, 0x37, 0x6f, 0x97, 0x7b, 0x9b, 0xb7, 0x33, 0xf1, 0x67, 0x31, 0xaa, 0x87, 0x7b, 0xae, 0x6f, + 0x0f, 0x37, 0xd4, 0xe1, 0x8e, 0x6b, 0xe5, 0x9e, 0xed, 0xd7, 0xca, 0x3d, 0x30, 0x0c, 0xfb, 0xe0, + 0x8e, 0xee, 0xe9, 0x3e, 0x1d, 0xdd, 0xe2, 0x30, 0xd4, 0x9f, 0x36, 0x76, 0x9f, 0x36, 0x76, 0x9f, + 0x36, 0x76, 0x9f, 0x36, 0x76, 0xff, 0x37, 0x1a, 0xbb, 0x52, 0xea, 0xd5, 0x2f, 0x9d, 0x94, 0xce, + 0x9c, 0x86, 0x31, 0x3e, 0x35, 0x1a, 0x85, 0xc4, 0x66, 0x59, 0x1e, 0xa1, 0x7f, 0x97, 0x65, 0x89, + 0xfe, 0x5d, 0x91, 0x13, 0xcb, 0x1b, 0x6f, 0xdd, 0x98, 0x1d, 0xf9, 0xee, 0x8d, 0xd9, 0x91, 0xef, + 0xdf, 0x98, 0x1d, 0x79, 0xe7, 0xc6, 0xac, 0xf4, 0xde, 0x8d, 0x59, 0xe9, 0x83, 0x1b, 0xb3, 0xd2, + 0x4f, 0x6e, 0xcc, 0x4a, 0xd7, 0x8f, 0x66, 0xa5, 0xaf, 0x1c, 0xcd, 0x4a, 0x5f, 0x3f, 0x9a, 0x95, + 0xbe, 0x75, 0x34, 0x2b, 0x7d, 0xfb, 0x68, 0x56, 0x7a, 0xeb, 0x68, 0x76, 0xe4, 0xbb, 0x47, 0xb3, + 0x23, 0xef, 0x1c, 0xcd, 0x4a, 0xef, 0x1d, 0xcd, 0x8e, 0x7c, 0x70, 0x34, 0x2b, 0xfd, 0xe4, 0x68, + 0x76, 0xe4, 0xfa, 0x8f, 0x66, 0xa5, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x94, 0x59, 0xbb, 0xb2, + 0x5e, 0x45, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/both/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/both/one.pb.go index 85b70bd34..340c44107 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/both/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/both/one.pb.go @@ -991,253 +991,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3929 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0xbf, 0x38, 0x17, 0x69, 0xe6, 0xcc, 0x68, 0x44, 0x7d, 0x92, 0xd7, 0x5c, 0x39, 0x9e, 0xd5, - 0x8e, 0xed, 0x58, 0xb6, 0x63, 0xc9, 0xd6, 0x65, 0x2f, 0xb3, 0xff, 0xc4, 0x18, 0x49, 0x63, 0xad, - 0x16, 0xba, 0x85, 0x92, 0x12, 0x3b, 0x79, 0x20, 0x38, 0x9c, 0x6f, 0x46, 0xdc, 0xe5, 0x90, 0xf3, - 0x27, 0x39, 0xbb, 0x96, 0x9f, 0x36, 0x70, 0x2f, 0x08, 0x82, 0xde, 0xd2, 0x02, 0x4d, 0x1c, 0xc7, - 0x4d, 0x03, 0xb4, 0x4e, 0xd3, 0x5b, 0xd2, 0x4b, 0x1a, 0xf4, 0xa9, 0x2f, 0x69, 0xfd, 0x54, 0x38, - 0x6f, 0x45, 0x51, 0x18, 0x59, 0xd5, 0x40, 0xd3, 0xd6, 0x6d, 0xdd, 0xc6, 0x45, 0x83, 0xfa, 0xa5, - 0xf8, 0x6e, 0x24, 0xe7, 0xa2, 0xe5, 0x28, 0x68, 0x92, 0x3e, 0x49, 0x3c, 0xe7, 0xfc, 0x7e, 0x3c, - 0xdf, 0xf9, 0x0e, 0xcf, 0x39, 0xfc, 0x86, 0xf0, 0x99, 0x65, 0x98, 0x6d, 0x3a, 0x4e, 0xd3, 0xc2, - 0x0b, 0x6d, 0xd7, 0xf1, 0x9d, 0x5a, 0xa7, 0xb1, 0x50, 0xc7, 0x9e, 0xe1, 0x9a, 0x6d, 0xdf, 0x71, - 0xe7, 0xa9, 0x0c, 0x4d, 0x30, 0x8b, 0x79, 0x61, 0x51, 0xda, 0x86, 0xc9, 0xe7, 0x4d, 0x0b, 0xaf, - 0x07, 0x86, 0xfb, 0xd8, 0x47, 0x57, 0x20, 0xd5, 0x30, 0x2d, 0xac, 0x48, 0xb3, 0xc9, 0xb9, 0xdc, - 0xe2, 0xa3, 0xf3, 0x3d, 0xa0, 0xf9, 0x6e, 0xc4, 0x1e, 0x11, 0xab, 0x14, 0x51, 0x7a, 0x27, 0x05, - 0x53, 0x03, 0xb4, 0x08, 0x41, 0xca, 0xd6, 0x5b, 0x84, 0x51, 0x9a, 0xcb, 0xaa, 0xf4, 0x7f, 0xa4, - 0xc0, 0x58, 0x5b, 0x37, 0x6e, 0xe9, 0x4d, 0xac, 0x24, 0xa8, 0x58, 0x5c, 0xa2, 0x22, 0x40, 0x1d, - 0xb7, 0xb1, 0x5d, 0xc7, 0xb6, 0x71, 0xac, 0x24, 0x67, 0x93, 0x73, 0x59, 0x35, 0x22, 0x41, 0x4f, - 0xc1, 0x64, 0xbb, 0x53, 0xb3, 0x4c, 0x43, 0x8b, 0x98, 0xc1, 0x6c, 0x72, 0x2e, 0xad, 0xca, 0x4c, - 0xb1, 0x1e, 0x1a, 0x3f, 0x0e, 0x13, 0x77, 0xb0, 0x7e, 0x2b, 0x6a, 0x9a, 0xa3, 0xa6, 0x05, 0x22, - 0x8e, 0x18, 0xae, 0x41, 0xbe, 0x85, 0x3d, 0x4f, 0x6f, 0x62, 0xcd, 0x3f, 0x6e, 0x63, 0x25, 0x45, - 0x57, 0x3f, 0xdb, 0xb7, 0xfa, 0xde, 0x95, 0xe7, 0x38, 0xea, 0xe0, 0xb8, 0x8d, 0x51, 0x05, 0xb2, - 0xd8, 0xee, 0xb4, 0x18, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x4e, 0xab, 0x97, 0x25, 0x43, 0x60, - 0x9c, 0x62, 0xcc, 0xc3, 0xee, 0x6d, 0xd3, 0xc0, 0xca, 0x28, 0x25, 0x78, 0xbc, 0x8f, 0x60, 0x9f, - 0xe9, 0x7b, 0x39, 0x04, 0x0e, 0xad, 0x41, 0x16, 0xbf, 0xe4, 0x63, 0xdb, 0x33, 0x1d, 0x5b, 0x19, - 0xa3, 0x24, 0x8f, 0x0d, 0xd8, 0x45, 0x6c, 0xd5, 0x7b, 0x29, 0x42, 0x1c, 0xba, 0x04, 0x63, 0x4e, - 0xdb, 0x37, 0x1d, 0xdb, 0x53, 0x32, 0xb3, 0xd2, 0x5c, 0x6e, 0xf1, 0x43, 0x03, 0x13, 0x61, 0x97, - 0xd9, 0xa8, 0xc2, 0x18, 0x6d, 0x82, 0xec, 0x39, 0x1d, 0xd7, 0xc0, 0x9a, 0xe1, 0xd4, 0xb1, 0x66, - 0xda, 0x0d, 0x47, 0xc9, 0x52, 0x82, 0x0b, 0xfd, 0x0b, 0xa1, 0x86, 0x6b, 0x4e, 0x1d, 0x6f, 0xda, - 0x0d, 0x47, 0x2d, 0x78, 0x5d, 0xd7, 0xe8, 0x1c, 0x8c, 0x7a, 0xc7, 0xb6, 0xaf, 0xbf, 0xa4, 0xe4, - 0x69, 0x86, 0xf0, 0xab, 0xd2, 0x7f, 0xa5, 0x61, 0x62, 0x98, 0x14, 0xbb, 0x06, 0xe9, 0x06, 0x59, - 0xa5, 0x92, 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x3b, 0x88, 0xa3, 0x3f, 0x62, 0x10, 0x2b, 0x90, 0xb3, - 0xb1, 0xe7, 0xe3, 0x3a, 0xcb, 0x88, 0xe4, 0x90, 0x39, 0x05, 0x0c, 0xd4, 0x9f, 0x52, 0xa9, 0x1f, - 0x29, 0xa5, 0x5e, 0x80, 0x89, 0xc0, 0x25, 0xcd, 0xd5, 0xed, 0xa6, 0xc8, 0xcd, 0x85, 0x38, 0x4f, - 0xe6, 0xab, 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc0, 0x5d, 0xd7, 0x68, 0x1d, 0xc0, 0xb1, 0xb1, 0xd3, - 0xd0, 0xea, 0xd8, 0xb0, 0x94, 0xcc, 0x29, 0x51, 0xda, 0x25, 0x26, 0x7d, 0x51, 0x72, 0x98, 0xd4, - 0xb0, 0xd0, 0xd5, 0x30, 0xd5, 0xc6, 0x4e, 0xc9, 0x94, 0x6d, 0xf6, 0x90, 0xf5, 0x65, 0xdb, 0x21, - 0x14, 0x5c, 0x4c, 0xf2, 0x1e, 0xd7, 0xf9, 0xca, 0xb2, 0xd4, 0x89, 0xf9, 0xd8, 0x95, 0xa9, 0x1c, - 0xc6, 0x16, 0x36, 0xee, 0x46, 0x2f, 0xd1, 0x23, 0x10, 0x08, 0x34, 0x9a, 0x56, 0x40, 0xab, 0x50, - 0x5e, 0x08, 0x77, 0xf4, 0x16, 0x9e, 0xb9, 0x02, 0x85, 0xee, 0xf0, 0xa0, 0x69, 0x48, 0x7b, 0xbe, - 0xee, 0xfa, 0x34, 0x0b, 0xd3, 0x2a, 0xbb, 0x40, 0x32, 0x24, 0xb1, 0x5d, 0xa7, 0x55, 0x2e, 0xad, - 0x92, 0x7f, 0x67, 0x2e, 0xc3, 0x78, 0xd7, 0xed, 0x87, 0x05, 0x96, 0xbe, 0x30, 0x0a, 0xd3, 0x83, - 0x72, 0x6e, 0x60, 0xfa, 0x9f, 0x83, 0x51, 0xbb, 0xd3, 0xaa, 0x61, 0x57, 0x49, 0x52, 0x06, 0x7e, - 0x85, 0x2a, 0x90, 0xb6, 0xf4, 0x1a, 0xb6, 0x94, 0xd4, 0xac, 0x34, 0x57, 0x58, 0x7c, 0x6a, 0xa8, - 0xac, 0x9e, 0xdf, 0x22, 0x10, 0x95, 0x21, 0xd1, 0xc7, 0x20, 0xc5, 0x4b, 0x1c, 0x61, 0x78, 0x72, - 0x38, 0x06, 0x92, 0x8b, 0x2a, 0xc5, 0xa1, 0x87, 0x20, 0x4b, 0xfe, 0xb2, 0xd8, 0x8e, 0x52, 0x9f, - 0x33, 0x44, 0x40, 0xe2, 0x8a, 0x66, 0x20, 0x43, 0xd3, 0xac, 0x8e, 0x45, 0x6b, 0x08, 0xae, 0xc9, - 0xc6, 0xd4, 0x71, 0x43, 0xef, 0x58, 0xbe, 0x76, 0x5b, 0xb7, 0x3a, 0x98, 0x26, 0x4c, 0x56, 0xcd, - 0x73, 0xe1, 0x27, 0x88, 0x0c, 0x5d, 0x80, 0x1c, 0xcb, 0x4a, 0xd3, 0xae, 0xe3, 0x97, 0x68, 0xf5, - 0x49, 0xab, 0x2c, 0x51, 0x37, 0x89, 0x84, 0xdc, 0xfe, 0xa6, 0xe7, 0xd8, 0x62, 0x6b, 0xe9, 0x2d, - 0x88, 0x80, 0xde, 0xfe, 0x72, 0x6f, 0xe1, 0x7b, 0x78, 0xf0, 0xf2, 0x7a, 0x73, 0xb1, 0xf4, 0xad, - 0x04, 0xa4, 0xe8, 0xf3, 0x36, 0x01, 0xb9, 0x83, 0x17, 0xf7, 0xaa, 0xda, 0xfa, 0xee, 0xe1, 0xea, - 0x56, 0x55, 0x96, 0x50, 0x01, 0x80, 0x0a, 0x9e, 0xdf, 0xda, 0xad, 0x1c, 0xc8, 0x89, 0xe0, 0x7a, - 0x73, 0xe7, 0xe0, 0xd2, 0xb2, 0x9c, 0x0c, 0x00, 0x87, 0x4c, 0x90, 0x8a, 0x1a, 0x2c, 0x2d, 0xca, - 0x69, 0x24, 0x43, 0x9e, 0x11, 0x6c, 0xbe, 0x50, 0x5d, 0xbf, 0xb4, 0x2c, 0x8f, 0x76, 0x4b, 0x96, - 0x16, 0xe5, 0x31, 0x34, 0x0e, 0x59, 0x2a, 0x59, 0xdd, 0xdd, 0xdd, 0x92, 0x33, 0x01, 0xe7, 0xfe, - 0x81, 0xba, 0xb9, 0xb3, 0x21, 0x67, 0x03, 0xce, 0x0d, 0x75, 0xf7, 0x70, 0x4f, 0x86, 0x80, 0x61, - 0xbb, 0xba, 0xbf, 0x5f, 0xd9, 0xa8, 0xca, 0xb9, 0xc0, 0x62, 0xf5, 0xc5, 0x83, 0xea, 0xbe, 0x9c, - 0xef, 0x72, 0x6b, 0x69, 0x51, 0x1e, 0x0f, 0x6e, 0x51, 0xdd, 0x39, 0xdc, 0x96, 0x0b, 0x68, 0x12, - 0xc6, 0xd9, 0x2d, 0x84, 0x13, 0x13, 0x3d, 0xa2, 0x4b, 0xcb, 0xb2, 0x1c, 0x3a, 0xc2, 0x58, 0x26, - 0xbb, 0x04, 0x97, 0x96, 0x65, 0x54, 0x5a, 0x83, 0x34, 0xcd, 0x2e, 0x84, 0xa0, 0xb0, 0x55, 0x59, - 0xad, 0x6e, 0x69, 0xbb, 0x7b, 0x07, 0x9b, 0xbb, 0x3b, 0x95, 0x2d, 0x59, 0x0a, 0x65, 0x6a, 0xf5, - 0xe3, 0x87, 0x9b, 0x6a, 0x75, 0x5d, 0x4e, 0x44, 0x65, 0x7b, 0xd5, 0xca, 0x41, 0x75, 0x5d, 0x4e, - 0x96, 0x0c, 0x98, 0x1e, 0x54, 0x67, 0x06, 0x3e, 0x19, 0x91, 0x2d, 0x4e, 0x9c, 0xb2, 0xc5, 0x94, - 0xab, 0x6f, 0x8b, 0xbf, 0x2a, 0xc1, 0xd4, 0x80, 0x5a, 0x3b, 0xf0, 0x26, 0xcf, 0x41, 0x9a, 0xa5, - 0x28, 0xeb, 0x3e, 0x4f, 0x0c, 0x2c, 0xda, 0x34, 0x61, 0xfb, 0x3a, 0x10, 0xc5, 0x45, 0x3b, 0x70, - 0xf2, 0x94, 0x0e, 0x4c, 0x28, 0xfa, 0x9c, 0x7c, 0x45, 0x02, 0xe5, 0x34, 0xee, 0x98, 0x42, 0x91, - 0xe8, 0x2a, 0x14, 0xd7, 0x7a, 0x1d, 0xb8, 0x78, 0xfa, 0x1a, 0xfa, 0xbc, 0x78, 0x43, 0x82, 0x73, - 0x83, 0x07, 0x95, 0x81, 0x3e, 0x7c, 0x0c, 0x46, 0x5b, 0xd8, 0x3f, 0x72, 0x44, 0xb3, 0xfe, 0xf0, - 0x80, 0x16, 0x40, 0xd4, 0xbd, 0xb1, 0xe2, 0xa8, 0x68, 0x0f, 0x49, 0x9e, 0x36, 0x6d, 0x30, 0x6f, - 0xfa, 0x3c, 0xfd, 0x6c, 0x02, 0x1e, 0x18, 0x48, 0x3e, 0xd0, 0xd1, 0x87, 0x01, 0x4c, 0xbb, 0xdd, - 0xf1, 0x59, 0x43, 0x66, 0xf5, 0x29, 0x4b, 0x25, 0xf4, 0xd9, 0x27, 0xb5, 0xa7, 0xe3, 0x07, 0xfa, - 0x24, 0xd5, 0x03, 0x13, 0x51, 0x83, 0x2b, 0xa1, 0xa3, 0x29, 0xea, 0x68, 0xf1, 0x94, 0x95, 0xf6, - 0xf5, 0xba, 0x67, 0x40, 0x36, 0x2c, 0x13, 0xdb, 0xbe, 0xe6, 0xf9, 0x2e, 0xd6, 0x5b, 0xa6, 0xdd, - 0xa4, 0x05, 0x38, 0x53, 0x4e, 0x37, 0x74, 0xcb, 0xc3, 0xea, 0x04, 0x53, 0xef, 0x0b, 0x2d, 0x41, - 0xd0, 0x2e, 0xe3, 0x46, 0x10, 0xa3, 0x5d, 0x08, 0xa6, 0x0e, 0x10, 0xa5, 0xcf, 0x8d, 0x41, 0x2e, - 0x32, 0xd6, 0xa1, 0x8b, 0x90, 0xbf, 0xa9, 0xdf, 0xd6, 0x35, 0x31, 0xaa, 0xb3, 0x48, 0xe4, 0x88, - 0x6c, 0x8f, 0x8f, 0xeb, 0xcf, 0xc0, 0x34, 0x35, 0x71, 0x3a, 0x3e, 0x76, 0x35, 0xc3, 0xd2, 0x3d, - 0x8f, 0x06, 0x2d, 0x43, 0x4d, 0x11, 0xd1, 0xed, 0x12, 0xd5, 0x9a, 0xd0, 0xa0, 0x15, 0x98, 0xa2, - 0x88, 0x56, 0xc7, 0xf2, 0xcd, 0xb6, 0x85, 0x35, 0xf2, 0xf2, 0xe0, 0xd1, 0x42, 0x1c, 0x78, 0x36, - 0x49, 0x2c, 0xb6, 0xb9, 0x01, 0xf1, 0xc8, 0x43, 0x1b, 0xf0, 0x30, 0x85, 0x35, 0xb1, 0x8d, 0x5d, - 0xdd, 0xc7, 0x1a, 0xfe, 0xff, 0x1d, 0xdd, 0xf2, 0x34, 0xdd, 0xae, 0x6b, 0x47, 0xba, 0x77, 0xa4, - 0x4c, 0x47, 0x09, 0xce, 0x13, 0xdb, 0x0d, 0x6e, 0x5a, 0xa5, 0x96, 0x15, 0xbb, 0x7e, 0x5d, 0xf7, - 0x8e, 0x50, 0x19, 0xce, 0x51, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xa9, 0x19, 0x47, 0xd8, 0xb8, 0xa5, - 0x75, 0xfc, 0xc6, 0x15, 0xe5, 0xa1, 0x28, 0x03, 0x75, 0x72, 0x9f, 0xda, 0xac, 0x11, 0x93, 0x43, - 0xbf, 0x71, 0x05, 0xed, 0x43, 0x9e, 0xec, 0x47, 0xcb, 0x7c, 0x19, 0x6b, 0x0d, 0xc7, 0xa5, 0xcd, - 0xa5, 0x30, 0xe0, 0xe1, 0x8e, 0x04, 0x71, 0x7e, 0x97, 0x03, 0xb6, 0x9d, 0x3a, 0x2e, 0xa7, 0xf7, - 0xf7, 0xaa, 0xd5, 0x75, 0x35, 0x27, 0x58, 0x9e, 0x77, 0x5c, 0x92, 0x53, 0x4d, 0x27, 0x88, 0x71, - 0x8e, 0xe5, 0x54, 0xd3, 0x11, 0x11, 0x5e, 0x81, 0x29, 0xc3, 0x60, 0xcb, 0x36, 0x0d, 0x8d, 0x4f, - 0xf9, 0x9e, 0x22, 0x77, 0xc5, 0xcb, 0x30, 0x36, 0x98, 0x01, 0x4f, 0x73, 0x0f, 0x5d, 0x85, 0x07, - 0xc2, 0x78, 0x45, 0x81, 0x93, 0x7d, 0xab, 0xec, 0x85, 0xae, 0xc0, 0x54, 0xfb, 0xb8, 0x1f, 0x88, - 0xba, 0xee, 0xd8, 0x3e, 0xee, 0x85, 0x3d, 0x46, 0xdf, 0xdc, 0x5c, 0x6c, 0xe8, 0x3e, 0xae, 0x2b, - 0x0f, 0x46, 0xad, 0x23, 0x0a, 0xb4, 0x00, 0xb2, 0x61, 0x68, 0xd8, 0xd6, 0x6b, 0x16, 0xd6, 0x74, - 0x17, 0xdb, 0xba, 0xa7, 0x5c, 0x88, 0x1a, 0x17, 0x0c, 0xa3, 0x4a, 0xb5, 0x15, 0xaa, 0x44, 0x4f, - 0xc2, 0xa4, 0x53, 0xbb, 0x69, 0xb0, 0xe4, 0xd2, 0xda, 0x2e, 0x6e, 0x98, 0x2f, 0x29, 0x8f, 0xd2, - 0x30, 0x4d, 0x10, 0x05, 0x4d, 0xad, 0x3d, 0x2a, 0x46, 0x4f, 0x80, 0x6c, 0x78, 0x47, 0xba, 0xdb, - 0xa6, 0xdd, 0xdd, 0x6b, 0xeb, 0x06, 0x56, 0x1e, 0x63, 0xa6, 0x4c, 0xbe, 0x23, 0xc4, 0xe8, 0x05, - 0x98, 0xee, 0xd8, 0xa6, 0xed, 0x63, 0xb7, 0xed, 0x62, 0x32, 0xa4, 0xb3, 0x27, 0x4d, 0xf9, 0x87, - 0xb1, 0x53, 0xc6, 0xec, 0xc3, 0xa8, 0x35, 0xdb, 0x5d, 0x75, 0xaa, 0xd3, 0x2f, 0x2c, 0x95, 0x21, - 0x1f, 0xdd, 0x74, 0x94, 0x05, 0xb6, 0xed, 0xb2, 0x44, 0x7a, 0xe8, 0xda, 0xee, 0x3a, 0xe9, 0x7e, - 0x9f, 0xaa, 0xca, 0x09, 0xd2, 0x85, 0xb7, 0x36, 0x0f, 0xaa, 0x9a, 0x7a, 0xb8, 0x73, 0xb0, 0xb9, - 0x5d, 0x95, 0x93, 0x4f, 0x66, 0x33, 0xdf, 0x1f, 0x93, 0xef, 0xde, 0xbd, 0x7b, 0x37, 0x51, 0xfa, - 0x4e, 0x02, 0x0a, 0xdd, 0x93, 0x2f, 0xfa, 0x7f, 0xf0, 0xa0, 0x78, 0x4d, 0xf5, 0xb0, 0xaf, 0xdd, - 0x31, 0x5d, 0x9a, 0x87, 0x2d, 0x9d, 0xcd, 0x8e, 0x41, 0x08, 0xa7, 0xb9, 0xd5, 0x3e, 0xf6, 0x3f, - 0x69, 0xba, 0x24, 0xcb, 0x5a, 0xba, 0x8f, 0xb6, 0xe0, 0x82, 0xed, 0x68, 0x9e, 0xaf, 0xdb, 0x75, - 0xdd, 0xad, 0x6b, 0xe1, 0x01, 0x81, 0xa6, 0x1b, 0x06, 0xf6, 0x3c, 0x87, 0xb5, 0x80, 0x80, 0xe5, - 0x43, 0xb6, 0xb3, 0xcf, 0x8d, 0xc3, 0xda, 0x58, 0xe1, 0xa6, 0x3d, 0xdb, 0x9d, 0x3c, 0x6d, 0xbb, - 0x1f, 0x82, 0x6c, 0x4b, 0x6f, 0x6b, 0xd8, 0xf6, 0xdd, 0x63, 0x3a, 0xaf, 0x65, 0xd4, 0x4c, 0x4b, - 0x6f, 0x57, 0xc9, 0xf5, 0x8f, 0x6f, 0x0f, 0xa2, 0x71, 0xfc, 0xbb, 0x24, 0xe4, 0xa3, 0x33, 0x1b, - 0x19, 0x81, 0x0d, 0x5a, 0x9f, 0x25, 0xfa, 0xf8, 0x3e, 0x72, 0xdf, 0x09, 0x6f, 0x7e, 0x8d, 0x14, - 0xee, 0xf2, 0x28, 0x9b, 0xa4, 0x54, 0x86, 0x24, 0x4d, 0x93, 0x3c, 0xb0, 0x98, 0xcd, 0xe7, 0x19, - 0x95, 0x5f, 0xa1, 0x0d, 0x18, 0xbd, 0xe9, 0x51, 0xee, 0x51, 0xca, 0xfd, 0xe8, 0xfd, 0xb9, 0x6f, - 0xec, 0x53, 0xf2, 0xec, 0x8d, 0x7d, 0x6d, 0x67, 0x57, 0xdd, 0xae, 0x6c, 0xa9, 0x1c, 0x8e, 0xce, - 0x43, 0xca, 0xd2, 0x5f, 0x3e, 0xee, 0x2e, 0xf1, 0x54, 0x34, 0x6c, 0xe0, 0xcf, 0x43, 0xea, 0x0e, - 0xd6, 0x6f, 0x75, 0x17, 0x56, 0x2a, 0xfa, 0x31, 0xa6, 0xfe, 0x02, 0xa4, 0x69, 0xbc, 0x10, 0x00, - 0x8f, 0x98, 0x3c, 0x82, 0x32, 0x90, 0x5a, 0xdb, 0x55, 0x49, 0xfa, 0xcb, 0x90, 0x67, 0x52, 0x6d, - 0x6f, 0xb3, 0xba, 0x56, 0x95, 0x13, 0xa5, 0x15, 0x18, 0x65, 0x41, 0x20, 0x8f, 0x46, 0x10, 0x06, - 0x79, 0x84, 0x5f, 0x72, 0x0e, 0x49, 0x68, 0x0f, 0xb7, 0x57, 0xab, 0xaa, 0x9c, 0x88, 0x6e, 0xaf, - 0x07, 0xf9, 0xe8, 0xb8, 0xf6, 0x93, 0xc9, 0xa9, 0x3f, 0x97, 0x20, 0x17, 0x19, 0xbf, 0x48, 0xe3, - 0xd7, 0x2d, 0xcb, 0xb9, 0xa3, 0xe9, 0x96, 0xa9, 0x7b, 0x3c, 0x29, 0x80, 0x8a, 0x2a, 0x44, 0x32, - 0xec, 0xa6, 0xfd, 0x44, 0x9c, 0x7f, 0x5d, 0x02, 0xb9, 0x77, 0x74, 0xeb, 0x71, 0x50, 0xfa, 0xa9, - 0x3a, 0xf8, 0x9a, 0x04, 0x85, 0xee, 0x79, 0xad, 0xc7, 0xbd, 0x8b, 0x3f, 0x55, 0xf7, 0xbe, 0x24, - 0xc1, 0x78, 0xd7, 0x94, 0xf6, 0x7f, 0xca, 0xbb, 0x57, 0x93, 0x30, 0x35, 0x00, 0x87, 0x2a, 0x7c, - 0x9c, 0x65, 0x13, 0xf6, 0xd3, 0xc3, 0xdc, 0x6b, 0x9e, 0x74, 0xcb, 0x3d, 0xdd, 0xf5, 0xf9, 0xf4, - 0xfb, 0x04, 0xc8, 0x66, 0x1d, 0xdb, 0xbe, 0xd9, 0x30, 0xb1, 0xcb, 0x5f, 0xc1, 0xd9, 0x8c, 0x3b, - 0x11, 0xca, 0xd9, 0x5b, 0xf8, 0x47, 0x00, 0xb5, 0x1d, 0xcf, 0xf4, 0xcd, 0xdb, 0x58, 0x33, 0x6d, - 0xf1, 0xbe, 0x4e, 0x66, 0xde, 0x94, 0x2a, 0x0b, 0xcd, 0xa6, 0xed, 0x07, 0xd6, 0x36, 0x6e, 0xea, - 0x3d, 0xd6, 0xa4, 0xf6, 0x25, 0x55, 0x59, 0x68, 0x02, 0xeb, 0x8b, 0x90, 0xaf, 0x3b, 0x1d, 0x32, - 0x3e, 0x30, 0x3b, 0x52, 0x6a, 0x25, 0x35, 0xc7, 0x64, 0x81, 0x09, 0x9f, 0xef, 0xc2, 0x83, 0x82, - 0xbc, 0x9a, 0x63, 0x32, 0x66, 0xf2, 0x38, 0x4c, 0xe8, 0xcd, 0xa6, 0x4b, 0xc8, 0x05, 0x11, 0x1b, - 0x5a, 0x0b, 0x81, 0x98, 0x1a, 0xce, 0xdc, 0x80, 0x8c, 0x88, 0x03, 0xe9, 0x66, 0x24, 0x12, 0x5a, - 0x9b, 0x1d, 0xd7, 0x24, 0xe6, 0xb2, 0x6a, 0xc6, 0x16, 0xca, 0x8b, 0x90, 0x37, 0x3d, 0x2d, 0x3c, - 0x37, 0x4c, 0xcc, 0x26, 0xe6, 0x32, 0x6a, 0xce, 0xf4, 0x82, 0x83, 0xa2, 0xd2, 0x1b, 0x09, 0x28, - 0x74, 0x9f, 0x7b, 0xa2, 0x75, 0xc8, 0x58, 0x8e, 0xa1, 0xd3, 0x44, 0x60, 0x87, 0xee, 0x73, 0x31, - 0x47, 0xa5, 0xf3, 0x5b, 0xdc, 0x5e, 0x0d, 0x90, 0x33, 0x7f, 0x2d, 0x41, 0x46, 0x88, 0xd1, 0x39, - 0x48, 0xb5, 0x75, 0xff, 0x88, 0xd2, 0xa5, 0x57, 0x13, 0xb2, 0xa4, 0xd2, 0x6b, 0x22, 0xf7, 0xda, - 0xba, 0x4d, 0x53, 0x80, 0xcb, 0xc9, 0x35, 0xd9, 0x57, 0x0b, 0xeb, 0x75, 0x3a, 0x0e, 0x3b, 0xad, - 0x16, 0xb6, 0x7d, 0x4f, 0xec, 0x2b, 0x97, 0xaf, 0x71, 0x31, 0x7a, 0x0a, 0x26, 0x7d, 0x57, 0x37, - 0xad, 0x2e, 0xdb, 0x14, 0xb5, 0x95, 0x85, 0x22, 0x30, 0x2e, 0xc3, 0x79, 0xc1, 0x5b, 0xc7, 0xbe, - 0x6e, 0x1c, 0xe1, 0x7a, 0x08, 0x1a, 0xa5, 0x87, 0x6a, 0x0f, 0x72, 0x83, 0x75, 0xae, 0x17, 0xd8, - 0xd2, 0x77, 0x25, 0x98, 0x14, 0x03, 0x7c, 0x3d, 0x08, 0xd6, 0x36, 0x80, 0x6e, 0xdb, 0x8e, 0x1f, - 0x0d, 0x57, 0x7f, 0x2a, 0xf7, 0xe1, 0xe6, 0x2b, 0x01, 0x48, 0x8d, 0x10, 0xcc, 0xb4, 0x00, 0x42, - 0xcd, 0xa9, 0x61, 0xbb, 0x00, 0x39, 0x7e, 0xa8, 0x4d, 0x7f, 0x19, 0x61, 0x6f, 0x7d, 0xc0, 0x44, - 0x64, 0xd2, 0x47, 0xd3, 0x90, 0xae, 0xe1, 0xa6, 0x69, 0xf3, 0xa3, 0x36, 0x76, 0x21, 0x0e, 0xf0, - 0x52, 0xc1, 0x01, 0xde, 0xea, 0xa7, 0x61, 0xca, 0x70, 0x5a, 0xbd, 0xee, 0xae, 0xca, 0x3d, 0x6f, - 0x9e, 0xde, 0x75, 0xe9, 0x53, 0x10, 0x4e, 0x67, 0x5f, 0x91, 0xa4, 0xaf, 0x26, 0x92, 0x1b, 0x7b, - 0xab, 0x5f, 0x4f, 0xcc, 0x6c, 0x30, 0xe8, 0x9e, 0x58, 0xa9, 0x8a, 0x1b, 0x16, 0x36, 0x88, 0xf7, - 0xf0, 0x83, 0x0f, 0xc3, 0xd3, 0x4d, 0xd3, 0x3f, 0xea, 0xd4, 0xe6, 0x0d, 0xa7, 0xb5, 0xd0, 0x74, - 0x9a, 0x4e, 0xf8, 0x63, 0x10, 0xb9, 0xa2, 0x17, 0xf4, 0x3f, 0xfe, 0x83, 0x50, 0x36, 0x90, 0xce, - 0xc4, 0xfe, 0x7a, 0x54, 0xde, 0x81, 0x29, 0x6e, 0xac, 0xd1, 0x13, 0x69, 0x36, 0x87, 0xa3, 0xfb, - 0x9e, 0x4a, 0x28, 0xdf, 0x7c, 0x87, 0x76, 0x3a, 0x75, 0x92, 0x43, 0x89, 0x8e, 0x4d, 0xea, 0x65, - 0x15, 0x1e, 0xe8, 0xe2, 0x63, 0x8f, 0x26, 0x76, 0x63, 0x18, 0xbf, 0xc3, 0x19, 0xa7, 0x22, 0x8c, - 0xfb, 0x1c, 0x5a, 0x5e, 0x83, 0xf1, 0xb3, 0x70, 0xfd, 0x25, 0xe7, 0xca, 0xe3, 0x28, 0xc9, 0x06, - 0x4c, 0x50, 0x12, 0xa3, 0xe3, 0xf9, 0x4e, 0x8b, 0xd6, 0xbd, 0xfb, 0xd3, 0xfc, 0xd5, 0x3b, 0xec, - 0x59, 0x29, 0x10, 0xd8, 0x5a, 0x80, 0x2a, 0x97, 0x81, 0x1e, 0xc2, 0xd7, 0xb1, 0x61, 0xc5, 0x30, - 0xbc, 0xc9, 0x1d, 0x09, 0xec, 0xcb, 0x9f, 0x80, 0x69, 0xf2, 0x3f, 0x2d, 0x4b, 0x51, 0x4f, 0xe2, - 0xcf, 0x60, 0x94, 0xef, 0xbe, 0xc2, 0x1e, 0xc7, 0xa9, 0x80, 0x20, 0xe2, 0x53, 0x64, 0x17, 0x9b, - 0xd8, 0xf7, 0xb1, 0xeb, 0x69, 0xba, 0x35, 0xc8, 0xbd, 0xc8, 0x1b, 0xac, 0xf2, 0xc5, 0x77, 0xbb, - 0x77, 0x71, 0x83, 0x21, 0x2b, 0x96, 0x55, 0x3e, 0x84, 0x07, 0x07, 0x64, 0xc5, 0x10, 0x9c, 0xaf, - 0x72, 0xce, 0xe9, 0xbe, 0xcc, 0x20, 0xb4, 0x7b, 0x20, 0xe4, 0xc1, 0x5e, 0x0e, 0xc1, 0xf9, 0x25, - 0xce, 0x89, 0x38, 0x56, 0x6c, 0x29, 0x61, 0xbc, 0x01, 0x93, 0xb7, 0xb1, 0x5b, 0x73, 0x3c, 0x7e, - 0x70, 0x30, 0x04, 0xdd, 0x6b, 0x9c, 0x6e, 0x82, 0x03, 0xe9, 0x31, 0x02, 0xe1, 0xba, 0x0a, 0x99, - 0x86, 0x6e, 0xe0, 0x21, 0x28, 0xbe, 0xcc, 0x29, 0xc6, 0x88, 0x3d, 0x81, 0x56, 0x20, 0xdf, 0x74, - 0x78, 0x67, 0x8a, 0x87, 0xbf, 0xce, 0xe1, 0x39, 0x81, 0xe1, 0x14, 0x6d, 0xa7, 0xdd, 0xb1, 0x48, - 0xdb, 0x8a, 0xa7, 0xf8, 0x0d, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x0c, 0x61, 0xfd, 0x8a, 0xa0, 0xf0, - 0x22, 0xf1, 0x7c, 0x0e, 0x72, 0x8e, 0x6d, 0x1d, 0x3b, 0xf6, 0x30, 0x4e, 0xfc, 0x26, 0x67, 0x00, - 0x0e, 0x21, 0x04, 0xd7, 0x20, 0x3b, 0xec, 0x46, 0xfc, 0xd6, 0xbb, 0xe2, 0xf1, 0x10, 0x3b, 0xb0, - 0x01, 0x13, 0xa2, 0x40, 0x99, 0x8e, 0x3d, 0x04, 0xc5, 0x6f, 0x73, 0x8a, 0x42, 0x04, 0xc6, 0x97, - 0xe1, 0x63, 0xcf, 0x6f, 0xe2, 0x61, 0x48, 0xde, 0x10, 0xcb, 0xe0, 0x10, 0x1e, 0xca, 0x1a, 0xb6, - 0x8d, 0xa3, 0xe1, 0x18, 0xbe, 0x26, 0x42, 0x29, 0x30, 0x84, 0x62, 0x0d, 0xc6, 0x5b, 0xba, 0xeb, - 0x1d, 0xe9, 0xd6, 0x50, 0xdb, 0xf1, 0x3b, 0x9c, 0x23, 0x1f, 0x80, 0x78, 0x44, 0x3a, 0xf6, 0x59, - 0x68, 0xbe, 0x2e, 0x22, 0x12, 0x81, 0xf1, 0x47, 0xcf, 0xf3, 0xe9, 0xd9, 0xcc, 0x59, 0xd8, 0x7e, - 0x57, 0x3c, 0x7a, 0x0c, 0xbb, 0x1d, 0x65, 0xbc, 0x06, 0x59, 0xcf, 0x7c, 0x79, 0x28, 0x9a, 0xdf, - 0x13, 0x3b, 0x4d, 0x01, 0x04, 0xfc, 0x22, 0x9c, 0x1f, 0xd8, 0x26, 0x86, 0x20, 0xfb, 0x7d, 0x4e, - 0x76, 0x6e, 0x40, 0xab, 0xe0, 0x25, 0xe1, 0xac, 0x94, 0x7f, 0x20, 0x4a, 0x02, 0xee, 0xe1, 0xda, - 0x23, 0x93, 0xbd, 0xa7, 0x37, 0xce, 0x16, 0xb5, 0x3f, 0x14, 0x51, 0x63, 0xd8, 0xae, 0xa8, 0x1d, - 0xc0, 0x39, 0xce, 0x78, 0xb6, 0x7d, 0xfd, 0x86, 0x28, 0xac, 0x0c, 0x7d, 0xd8, 0xbd, 0xbb, 0x9f, - 0x86, 0x99, 0x20, 0x9c, 0x62, 0x28, 0xf5, 0xb4, 0x96, 0xde, 0x1e, 0x82, 0xf9, 0x9b, 0x9c, 0x59, - 0x54, 0xfc, 0x60, 0xaa, 0xf5, 0xb6, 0xf5, 0x36, 0x21, 0x7f, 0x01, 0x14, 0x41, 0xde, 0xb1, 0x5d, - 0x6c, 0x38, 0x4d, 0xdb, 0x7c, 0x19, 0xd7, 0x87, 0xa0, 0xfe, 0xa3, 0x9e, 0xad, 0x3a, 0x8c, 0xc0, - 0x09, 0xf3, 0x26, 0xc8, 0xc1, 0xac, 0xa2, 0x99, 0xad, 0xb6, 0xe3, 0xfa, 0x31, 0x8c, 0x7f, 0x2c, - 0x76, 0x2a, 0xc0, 0x6d, 0x52, 0x58, 0xb9, 0x0a, 0x05, 0x7a, 0x39, 0x6c, 0x4a, 0xfe, 0x09, 0x27, - 0x1a, 0x0f, 0x51, 0xbc, 0x70, 0x18, 0x4e, 0xab, 0xad, 0xbb, 0xc3, 0xd4, 0xbf, 0x3f, 0x15, 0x85, - 0x83, 0x43, 0x78, 0xe1, 0xf0, 0x8f, 0xdb, 0x98, 0x74, 0xfb, 0x21, 0x18, 0xbe, 0x25, 0x0a, 0x87, - 0xc0, 0x70, 0x0a, 0x31, 0x30, 0x0c, 0x41, 0xf1, 0x67, 0x82, 0x42, 0x60, 0x08, 0xc5, 0xc7, 0xc3, - 0x46, 0xeb, 0xe2, 0xa6, 0xe9, 0xf9, 0x2e, 0x1b, 0x85, 0xef, 0x4f, 0xf5, 0xed, 0x77, 0xbb, 0x87, - 0x30, 0x35, 0x02, 0x2d, 0xdf, 0x80, 0x89, 0x9e, 0x11, 0x03, 0xc5, 0xfd, 0xa2, 0xaf, 0x7c, 0xe6, - 0x7d, 0x5e, 0x8c, 0xba, 0x27, 0x8c, 0xf2, 0x16, 0xd9, 0xf7, 0xee, 0x39, 0x20, 0x9e, 0xec, 0x95, - 0xf7, 0x83, 0xad, 0xef, 0x1a, 0x03, 0xca, 0xcf, 0xc3, 0x78, 0xd7, 0x0c, 0x10, 0x4f, 0xf5, 0x33, - 0x9c, 0x2a, 0x1f, 0x1d, 0x01, 0xca, 0x2b, 0x90, 0x22, 0xfd, 0x3c, 0x1e, 0xfe, 0xb3, 0x1c, 0x4e, - 0xcd, 0xcb, 0x1f, 0x85, 0x8c, 0xe8, 0xe3, 0xf1, 0xd0, 0x9f, 0xe3, 0xd0, 0x00, 0x42, 0xe0, 0xa2, - 0x87, 0xc7, 0xc3, 0x7f, 0x5e, 0xc0, 0x05, 0x84, 0xc0, 0x87, 0x0f, 0xe1, 0x5f, 0x7c, 0x2e, 0xc5, - 0xeb, 0xb0, 0x88, 0xdd, 0x35, 0x18, 0xe3, 0xcd, 0x3b, 0x1e, 0xfd, 0x59, 0x7e, 0x73, 0x81, 0x28, - 0x5f, 0x86, 0xf4, 0x90, 0x01, 0xff, 0x05, 0x0e, 0x65, 0xf6, 0xe5, 0x35, 0xc8, 0x45, 0x1a, 0x76, - 0x3c, 0xfc, 0x17, 0x39, 0x3c, 0x8a, 0x22, 0xae, 0xf3, 0x86, 0x1d, 0x4f, 0xf0, 0x4b, 0xc2, 0x75, - 0x8e, 0x20, 0x61, 0x13, 0xbd, 0x3a, 0x1e, 0xfd, 0xcb, 0x22, 0xea, 0x02, 0x52, 0x7e, 0x0e, 0xb2, - 0x41, 0xfd, 0x8d, 0xc7, 0xff, 0x0a, 0xc7, 0x87, 0x18, 0x12, 0x81, 0x48, 0xfd, 0x8f, 0xa7, 0xf8, - 0xbc, 0x88, 0x40, 0x04, 0x45, 0x1e, 0xa3, 0xde, 0x9e, 0x1e, 0xcf, 0xf4, 0xab, 0xe2, 0x31, 0xea, - 0x69, 0xe9, 0x64, 0x37, 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x35, 0xb1, 0x9b, 0xd4, 0x9e, 0xb8, 0xd1, - 0xdb, 0x24, 0xe3, 0x39, 0x7e, 0x5d, 0xb8, 0xd1, 0xd3, 0x23, 0xcb, 0x7b, 0x80, 0xfa, 0x1b, 0x64, - 0x3c, 0xdf, 0x17, 0x38, 0xdf, 0x64, 0x5f, 0x7f, 0x2c, 0x7f, 0x12, 0xce, 0x0d, 0x6e, 0x8e, 0xf1, - 0xac, 0x5f, 0x7c, 0xbf, 0xe7, 0x75, 0x26, 0xda, 0x1b, 0xcb, 0x07, 0x61, 0x95, 0x8d, 0x36, 0xc6, - 0x78, 0xda, 0x57, 0xdf, 0xef, 0x2e, 0xb4, 0xd1, 0xbe, 0x58, 0xae, 0x00, 0x84, 0x3d, 0x29, 0x9e, - 0xeb, 0x35, 0xce, 0x15, 0x01, 0x91, 0x47, 0x83, 0xb7, 0xa4, 0x78, 0xfc, 0x97, 0xc5, 0xa3, 0xc1, - 0x11, 0xe4, 0xd1, 0x10, 0xdd, 0x28, 0x1e, 0xfd, 0xba, 0x78, 0x34, 0x04, 0xa4, 0x7c, 0x0d, 0x32, - 0x76, 0xc7, 0xb2, 0x48, 0x6e, 0xa1, 0xfb, 0x7f, 0x64, 0xa3, 0xfc, 0xe3, 0x07, 0x1c, 0x2c, 0x00, - 0xe5, 0x15, 0x48, 0xe3, 0x56, 0x0d, 0xd7, 0xe3, 0x90, 0xff, 0xf4, 0x81, 0xa8, 0x27, 0xc4, 0xba, - 0xfc, 0x1c, 0x00, 0x7b, 0x99, 0xa6, 0xbf, 0xb1, 0xc4, 0x60, 0xff, 0xf9, 0x03, 0xfe, 0xfb, 0x7d, - 0x08, 0x09, 0x09, 0xd8, 0xd7, 0x00, 0xf7, 0x27, 0x78, 0xb7, 0x9b, 0x80, 0xbe, 0x80, 0x5f, 0x85, - 0xb1, 0x9b, 0x9e, 0x63, 0xfb, 0x7a, 0x33, 0x0e, 0xfd, 0x2f, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0x5a, - 0x8e, 0x8b, 0x7d, 0xbd, 0xe9, 0xc5, 0x61, 0xff, 0x95, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, - 0x0f, 0xb3, 0xee, 0x7f, 0x13, 0x60, 0x01, 0x20, 0x4e, 0x93, 0xff, 0x6f, 0xe1, 0xe3, 0x38, 0xec, - 0x7b, 0xc2, 0x69, 0x6e, 0x5f, 0xfe, 0x28, 0x64, 0xc9, 0xbf, 0xec, 0x9b, 0x96, 0x18, 0xf0, 0xbf, - 0x73, 0x70, 0x88, 0x20, 0x77, 0xf6, 0xfc, 0xba, 0x6f, 0xc6, 0x07, 0xfb, 0x3f, 0xf8, 0x4e, 0x0b, - 0xfb, 0x72, 0x05, 0x72, 0x9e, 0x5f, 0xaf, 0x77, 0xf8, 0x44, 0x13, 0x03, 0xff, 0xc1, 0x07, 0xc1, - 0x4b, 0x6e, 0x80, 0x59, 0xbd, 0x38, 0xf8, 0xbc, 0x0e, 0x36, 0x9c, 0x0d, 0x87, 0x9d, 0xd4, 0xc1, - 0x7f, 0x66, 0xe0, 0x01, 0xc3, 0x69, 0xd5, 0x1c, 0x6f, 0xa1, 0xe6, 0xf8, 0x47, 0x0b, 0x8e, 0xcd, - 0x0d, 0x51, 0xd2, 0xb1, 0xf1, 0xcc, 0xd9, 0x4e, 0xe4, 0x4a, 0xe7, 0x21, 0xbd, 0xdf, 0xa9, 0xd5, - 0x8e, 0x91, 0x0c, 0x49, 0xaf, 0x53, 0xe3, 0x1f, 0x5c, 0x90, 0x7f, 0x4b, 0x6f, 0x27, 0x61, 0xbc, - 0x62, 0x59, 0x07, 0xc7, 0x6d, 0xec, 0xed, 0xda, 0x78, 0xb7, 0x81, 0x14, 0x18, 0xa5, 0x4b, 0x78, - 0x96, 0x9a, 0x49, 0xd7, 0x47, 0x54, 0x7e, 0x1d, 0x68, 0x16, 0xe9, 0x59, 0x65, 0x22, 0xd0, 0x2c, - 0x06, 0x9a, 0x25, 0x76, 0x54, 0x19, 0x68, 0x96, 0x02, 0xcd, 0x32, 0x3d, 0xb0, 0x4c, 0x06, 0x9a, - 0xe5, 0x40, 0xb3, 0x42, 0x0f, 0xe4, 0xc7, 0x03, 0xcd, 0x4a, 0xa0, 0xb9, 0x44, 0x8f, 0xe0, 0x53, - 0x81, 0xe6, 0x52, 0xa0, 0xb9, 0x4c, 0x4f, 0xde, 0x27, 0x03, 0xcd, 0xe5, 0x40, 0x73, 0x85, 0x9e, - 0xb6, 0xa3, 0x40, 0x73, 0x25, 0xd0, 0x5c, 0xa5, 0x9f, 0x55, 0x8c, 0x05, 0x9a, 0xab, 0x68, 0x06, - 0xc6, 0xd8, 0xca, 0x9e, 0xa1, 0xbf, 0x66, 0x4e, 0x5c, 0x1f, 0x51, 0x85, 0x20, 0xd4, 0x3d, 0x4b, - 0x3f, 0x9d, 0x18, 0x0d, 0x75, 0xcf, 0x86, 0xba, 0x45, 0xfa, 0x0d, 0xb1, 0x1c, 0xea, 0x16, 0x43, - 0xdd, 0x92, 0x32, 0x4e, 0x76, 0x3e, 0xd4, 0x2d, 0x85, 0xba, 0x65, 0xa5, 0x40, 0x76, 0x20, 0xd4, - 0x2d, 0x87, 0xba, 0x15, 0x65, 0x62, 0x56, 0x9a, 0xcb, 0x87, 0xba, 0x15, 0xf4, 0x34, 0xe4, 0xbc, - 0x4e, 0x4d, 0xe3, 0x3f, 0xbe, 0xd3, 0x4f, 0x34, 0x72, 0x8b, 0x30, 0x4f, 0x72, 0x82, 0x6e, 0xeb, - 0xf5, 0x11, 0x15, 0xbc, 0x4e, 0x8d, 0x97, 0xc6, 0xd5, 0x3c, 0xd0, 0x93, 0x04, 0x8d, 0x7e, 0x9b, - 0x58, 0x7a, 0x4b, 0x82, 0xec, 0xc1, 0x1d, 0x87, 0xfe, 0x96, 0xe9, 0xfd, 0x2f, 0x6f, 0xae, 0x70, - 0x7a, 0x69, 0x59, 0x29, 0xd1, 0x05, 0x49, 0xaa, 0x10, 0x84, 0xba, 0x15, 0xe5, 0x11, 0xba, 0xa0, - 0x40, 0xb7, 0x82, 0x16, 0x20, 0x1f, 0x59, 0xd0, 0x22, 0xfd, 0xea, 0xa2, 0x7b, 0x45, 0x92, 0x9a, - 0x0b, 0x57, 0xb4, 0xb8, 0x9a, 0x06, 0x92, 0xf6, 0xe4, 0x8f, 0x7f, 0xc7, 0x29, 0x7d, 0x3e, 0x01, - 0x39, 0x76, 0xf8, 0x48, 0x57, 0x45, 0x6e, 0xc5, 0x86, 0xf1, 0x63, 0xee, 0xc6, 0x88, 0x2a, 0x04, - 0x48, 0x05, 0x60, 0xa6, 0x24, 0xc3, 0x99, 0x27, 0xab, 0xcf, 0xfc, 0xed, 0xdb, 0x17, 0x3e, 0x72, - 0xea, 0x13, 0x44, 0x62, 0xb7, 0xc0, 0x4a, 0xeb, 0xfc, 0xa1, 0x69, 0xfb, 0xcf, 0x2e, 0x5e, 0x21, - 0x01, 0x0e, 0x59, 0xd0, 0x21, 0x64, 0xd6, 0x74, 0x8f, 0x7e, 0x79, 0x45, 0x5d, 0x4f, 0xad, 0x5e, - 0xfe, 0xef, 0xb7, 0x2f, 0x2c, 0xc5, 0x30, 0xf2, 0xaa, 0x37, 0xbf, 0x7d, 0x4c, 0x58, 0x2f, 0x2d, - 0x13, 0xf8, 0xf5, 0x11, 0x35, 0xa0, 0x42, 0x8b, 0xc2, 0xd5, 0x1d, 0xbd, 0xc5, 0x3e, 0x2f, 0x49, - 0xae, 0xca, 0x27, 0x6f, 0x5f, 0xc8, 0x6f, 0x1f, 0x87, 0xf2, 0xd0, 0x15, 0x72, 0xb5, 0x9a, 0x81, - 0x51, 0xe6, 0xea, 0xea, 0xfa, 0x9b, 0xf7, 0x8a, 0x23, 0x6f, 0xdd, 0x2b, 0x8e, 0xfc, 0xcd, 0xbd, - 0xe2, 0xc8, 0xf7, 0xee, 0x15, 0xa5, 0xf7, 0xee, 0x15, 0xa5, 0x1f, 0xde, 0x2b, 0x4a, 0x77, 0x4f, - 0x8a, 0xd2, 0xd7, 0x4e, 0x8a, 0xd2, 0x37, 0x4e, 0x8a, 0xd2, 0xb7, 0x4f, 0x8a, 0xd2, 0x9b, 0x27, - 0x45, 0xe9, 0xad, 0x93, 0xa2, 0xf4, 0xbd, 0x93, 0xa2, 0xf4, 0xfd, 0x93, 0xe2, 0xc8, 0x7b, 0x27, - 0x45, 0xe9, 0x87, 0x27, 0xc5, 0x91, 0xbb, 0x7f, 0x5f, 0x1c, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xa1, 0x31, 0xd7, 0xe9, 0xf2, 0x31, 0x00, 0x00, + // 4043 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0xbf, 0xc0, 0x8b, 0x44, 0x1e, 0x52, 0x14, 0x04, 0xc9, 0xbb, 0x58, 0x39, 0xe6, 0xee, 0xd2, + 0x76, 0x2c, 0xdb, 0xb1, 0x64, 0x6b, 0xa5, 0xbd, 0x70, 0xff, 0x89, 0x87, 0xa4, 0xb8, 0x5a, 0xed, + 0x5f, 0x12, 0x15, 0x50, 0x8a, 0xd7, 0xe9, 0x03, 0x06, 0x04, 0x3f, 0x52, 0xd8, 0x05, 0x01, 0x06, + 0x00, 0x77, 0x2d, 0x3f, 0x6d, 0xc7, 0xbd, 0x4c, 0xa6, 0xd3, 0x5b, 0xda, 0x99, 0x26, 0xae, 0xe3, + 0xb6, 0x99, 0x69, 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, + 0xce, 0x5b, 0xa7, 0xd3, 0xf1, 0x78, 0x15, 0xcf, 0x34, 0x6d, 0xdd, 0xd6, 0x6d, 0xdc, 0x69, 0xa6, + 0x7e, 0xe9, 0x7c, 0x37, 0x00, 0xbc, 0x68, 0x41, 0x65, 0xea, 0xe4, 0x49, 0xfa, 0xce, 0x39, 0xbf, + 0x1f, 0xce, 0x77, 0xbe, 0xf3, 0x7d, 0xe7, 0xe0, 0x23, 0xe0, 0x7b, 0x6b, 0x70, 0xae, 0x6d, 0xdb, + 0x6d, 0x13, 0x2d, 0x77, 0x1d, 0xdb, 0xb3, 0x1b, 0xbd, 0xd6, 0x72, 0x13, 0xb9, 0xba, 0x63, 0x74, + 0x3d, 0xdb, 0x59, 0x22, 0x32, 0x69, 0x86, 0x5a, 0x2c, 0x71, 0x8b, 0xc2, 0x36, 0xcc, 0x5e, 0x33, + 0x4c, 0xb4, 0xee, 0x1b, 0xd6, 0x91, 0x27, 0x5d, 0x86, 0x44, 0xcb, 0x30, 0x91, 0x2c, 0x9c, 0x8b, + 0x2f, 0x66, 0x56, 0x1e, 0x5b, 0x1a, 0x00, 0x2d, 0xf5, 0x23, 0x76, 0xb1, 0x58, 0x21, 0x88, 0xc2, + 0xbb, 0x09, 0x98, 0x1b, 0xa1, 0x95, 0x24, 0x48, 0x58, 0x5a, 0x07, 0x33, 0x0a, 0x8b, 0x69, 0x85, + 0xfc, 0x2f, 0xc9, 0x30, 0xd5, 0xd5, 0xf4, 0xdb, 0x5a, 0x1b, 0xc9, 0x31, 0x22, 0xe6, 0x43, 0x29, + 0x0f, 0xd0, 0x44, 0x5d, 0x64, 0x35, 0x91, 0xa5, 0x1f, 0xca, 0xf1, 0x73, 0xf1, 0xc5, 0xb4, 0x12, + 0x92, 0x48, 0x4f, 0xc3, 0x6c, 0xb7, 0xd7, 0x30, 0x0d, 0x5d, 0x0d, 0x99, 0xc1, 0xb9, 0xf8, 0x62, + 0x52, 0x11, 0xa9, 0x62, 0x3d, 0x30, 0x7e, 0x02, 0x66, 0xee, 0x22, 0xed, 0x76, 0xd8, 0x34, 0x43, + 0x4c, 0x73, 0x58, 0x1c, 0x32, 0xac, 0x40, 0xb6, 0x83, 0x5c, 0x57, 0x6b, 0x23, 0xd5, 0x3b, 0xec, + 0x22, 0x39, 0x41, 0x66, 0x7f, 0x6e, 0x68, 0xf6, 0x83, 0x33, 0xcf, 0x30, 0xd4, 0xde, 0x61, 0x17, + 0x49, 0x25, 0x48, 0x23, 0xab, 0xd7, 0xa1, 0x0c, 0xc9, 0x63, 0xe2, 0x57, 0xb5, 0x7a, 0x9d, 0x41, + 0x96, 0x14, 0x86, 0x31, 0x8a, 0x29, 0x17, 0x39, 0x77, 0x0c, 0x1d, 0xc9, 0x93, 0x84, 0xe0, 0x89, + 0x21, 0x82, 0x3a, 0xd5, 0x0f, 0x72, 0x70, 0x9c, 0x54, 0x81, 0x34, 0x7a, 0xc9, 0x43, 0x96, 0x6b, + 0xd8, 0x96, 0x3c, 0x45, 0x48, 0x1e, 0x1f, 0xb1, 0x8a, 0xc8, 0x6c, 0x0e, 0x52, 0x04, 0x38, 0xe9, + 0x22, 0x4c, 0xd9, 0x5d, 0xcf, 0xb0, 0x2d, 0x57, 0x4e, 0x9d, 0x13, 0x16, 0x33, 0x2b, 0x1f, 0x1b, + 0x99, 0x08, 0x35, 0x6a, 0xa3, 0x70, 0x63, 0x69, 0x13, 0x44, 0xd7, 0xee, 0x39, 0x3a, 0x52, 0x75, + 0xbb, 0x89, 0x54, 0xc3, 0x6a, 0xd9, 0x72, 0x9a, 0x10, 0x9c, 0x1d, 0x9e, 0x08, 0x31, 0xac, 0xd8, + 0x4d, 0xb4, 0x69, 0xb5, 0x6c, 0x25, 0xe7, 0xf6, 0x8d, 0xa5, 0x53, 0x30, 0xe9, 0x1e, 0x5a, 0x9e, + 0xf6, 0x92, 0x9c, 0x25, 0x19, 0xc2, 0x46, 0x85, 0xff, 0x4e, 0xc2, 0xcc, 0x38, 0x29, 0x76, 0x15, + 0x92, 0x2d, 0x3c, 0x4b, 0x39, 0x76, 0x92, 0x18, 0x50, 0x4c, 0x7f, 0x10, 0x27, 0x7f, 0xc4, 0x20, + 0x96, 0x20, 0x63, 0x21, 0xd7, 0x43, 0x4d, 0x9a, 0x11, 0xf1, 0x31, 0x73, 0x0a, 0x28, 0x68, 0x38, + 0xa5, 0x12, 0x3f, 0x52, 0x4a, 0xdd, 0x84, 0x19, 0xdf, 0x25, 0xd5, 0xd1, 0xac, 0x36, 0xcf, 0xcd, + 0xe5, 0x28, 0x4f, 0x96, 0xaa, 0x1c, 0xa7, 0x60, 0x98, 0x92, 0x43, 0x7d, 0x63, 0x69, 0x1d, 0xc0, + 0xb6, 0x90, 0xdd, 0x52, 0x9b, 0x48, 0x37, 0xe5, 0xd4, 0x31, 0x51, 0xaa, 0x61, 0x93, 0xa1, 0x28, + 0xd9, 0x54, 0xaa, 0x9b, 0xd2, 0x95, 0x20, 0xd5, 0xa6, 0x8e, 0xc9, 0x94, 0x6d, 0xba, 0xc9, 0x86, + 0xb2, 0x6d, 0x1f, 0x72, 0x0e, 0xc2, 0x79, 0x8f, 0x9a, 0x6c, 0x66, 0x69, 0xe2, 0xc4, 0x52, 0xe4, + 0xcc, 0x14, 0x06, 0xa3, 0x13, 0x9b, 0x76, 0xc2, 0x43, 0xe9, 0x51, 0xf0, 0x05, 0x2a, 0x49, 0x2b, + 0x20, 0xa7, 0x50, 0x96, 0x0b, 0x77, 0xb4, 0x0e, 0x5a, 0xb8, 0x0c, 0xb9, 0xfe, 0xf0, 0x48, 0xf3, + 0x90, 0x74, 0x3d, 0xcd, 0xf1, 0x48, 0x16, 0x26, 0x15, 0x3a, 0x90, 0x44, 0x88, 0x23, 0xab, 0x49, + 0x4e, 0xb9, 0xa4, 0x82, 0xff, 0x5d, 0xb8, 0x04, 0xd3, 0x7d, 0x8f, 0x1f, 0x17, 0x58, 0xf8, 0xe2, + 0x24, 0xcc, 0x8f, 0xca, 0xb9, 0x91, 0xe9, 0x7f, 0x0a, 0x26, 0xad, 0x5e, 0xa7, 0x81, 0x1c, 0x39, + 0x4e, 0x18, 0xd8, 0x48, 0x2a, 0x41, 0xd2, 0xd4, 0x1a, 0xc8, 0x94, 0x13, 0xe7, 0x84, 0xc5, 0xdc, + 0xca, 0xd3, 0x63, 0x65, 0xf5, 0xd2, 0x16, 0x86, 0x28, 0x14, 0x29, 0x7d, 0x0a, 0x12, 0xec, 0x88, + 0xc3, 0x0c, 0x4f, 0x8d, 0xc7, 0x80, 0x73, 0x51, 0x21, 0x38, 0xe9, 0x61, 0x48, 0xe3, 0xbf, 0x34, + 0xb6, 0x93, 0xc4, 0xe7, 0x14, 0x16, 0xe0, 0xb8, 0x4a, 0x0b, 0x90, 0x22, 0x69, 0xd6, 0x44, 0xbc, + 0x34, 0xf8, 0x63, 0xbc, 0x30, 0x4d, 0xd4, 0xd2, 0x7a, 0xa6, 0xa7, 0xde, 0xd1, 0xcc, 0x1e, 0x22, + 0x09, 0x93, 0x56, 0xb2, 0x4c, 0xf8, 0x19, 0x2c, 0x93, 0xce, 0x42, 0x86, 0x66, 0xa5, 0x61, 0x35, + 0xd1, 0x4b, 0xe4, 0xf4, 0x49, 0x2a, 0x34, 0x51, 0x37, 0xb1, 0x04, 0x3f, 0xfe, 0x96, 0x6b, 0x5b, + 0x7c, 0x69, 0xc9, 0x23, 0xb0, 0x80, 0x3c, 0xfe, 0xd2, 0xe0, 0xc1, 0xf7, 0xc8, 0xe8, 0xe9, 0x0d, + 0xe6, 0x62, 0xe1, 0x5b, 0x31, 0x48, 0x90, 0xfd, 0x36, 0x03, 0x99, 0xbd, 0x17, 0x77, 0xab, 0xea, + 0x7a, 0x6d, 0xbf, 0xbc, 0x55, 0x15, 0x05, 0x29, 0x07, 0x40, 0x04, 0xd7, 0xb6, 0x6a, 0xa5, 0x3d, + 0x31, 0xe6, 0x8f, 0x37, 0x77, 0xf6, 0x2e, 0xae, 0x8a, 0x71, 0x1f, 0xb0, 0x4f, 0x05, 0x89, 0xb0, + 0xc1, 0x85, 0x15, 0x31, 0x29, 0x89, 0x90, 0xa5, 0x04, 0x9b, 0x37, 0xab, 0xeb, 0x17, 0x57, 0xc5, + 0xc9, 0x7e, 0xc9, 0x85, 0x15, 0x71, 0x4a, 0x9a, 0x86, 0x34, 0x91, 0x94, 0x6b, 0xb5, 0x2d, 0x31, + 0xe5, 0x73, 0xd6, 0xf7, 0x94, 0xcd, 0x9d, 0x0d, 0x31, 0xed, 0x73, 0x6e, 0x28, 0xb5, 0xfd, 0x5d, + 0x11, 0x7c, 0x86, 0xed, 0x6a, 0xbd, 0x5e, 0xda, 0xa8, 0x8a, 0x19, 0xdf, 0xa2, 0xfc, 0xe2, 0x5e, + 0xb5, 0x2e, 0x66, 0xfb, 0xdc, 0xba, 0xb0, 0x22, 0x4e, 0xfb, 0x8f, 0xa8, 0xee, 0xec, 0x6f, 0x8b, + 0x39, 0x69, 0x16, 0xa6, 0xe9, 0x23, 0xb8, 0x13, 0x33, 0x03, 0xa2, 0x8b, 0xab, 0xa2, 0x18, 0x38, + 0x42, 0x59, 0x66, 0xfb, 0x04, 0x17, 0x57, 0x45, 0xa9, 0x50, 0x81, 0x24, 0xc9, 0x2e, 0x49, 0x82, + 0xdc, 0x56, 0xa9, 0x5c, 0xdd, 0x52, 0x6b, 0xbb, 0x7b, 0x9b, 0xb5, 0x9d, 0xd2, 0x96, 0x28, 0x04, + 0x32, 0xa5, 0xfa, 0xe9, 0xfd, 0x4d, 0xa5, 0xba, 0x2e, 0xc6, 0xc2, 0xb2, 0xdd, 0x6a, 0x69, 0xaf, + 0xba, 0x2e, 0xc6, 0x0b, 0x3a, 0xcc, 0x8f, 0x3a, 0x67, 0x46, 0xee, 0x8c, 0xd0, 0x12, 0xc7, 0x8e, + 0x59, 0x62, 0xc2, 0x35, 0xb4, 0xc4, 0x5f, 0x11, 0x60, 0x6e, 0xc4, 0x59, 0x3b, 0xf2, 0x21, 0xcf, + 0x43, 0x92, 0xa6, 0x28, 0xad, 0x3e, 0x4f, 0x8e, 0x3c, 0xb4, 0x49, 0xc2, 0x0e, 0x55, 0x20, 0x82, + 0x0b, 0x57, 0xe0, 0xf8, 0x31, 0x15, 0x18, 0x53, 0x0c, 0x39, 0xf9, 0x8a, 0x00, 0xf2, 0x71, 0xdc, + 0x11, 0x07, 0x45, 0xac, 0xef, 0xa0, 0xb8, 0x3a, 0xe8, 0xc0, 0xf9, 0xe3, 0xe7, 0x30, 0xe4, 0xc5, + 0x1b, 0x02, 0x9c, 0x1a, 0xdd, 0xa8, 0x8c, 0xf4, 0xe1, 0x53, 0x30, 0xd9, 0x41, 0xde, 0x81, 0xcd, + 0x8b, 0xf5, 0xc7, 0x47, 0x94, 0x00, 0xac, 0x1e, 0x8c, 0x15, 0x43, 0x85, 0x6b, 0x48, 0xfc, 0xb8, + 0x6e, 0x83, 0x7a, 0x33, 0xe4, 0xe9, 0xe7, 0x63, 0xf0, 0xd0, 0x48, 0xf2, 0x91, 0x8e, 0x3e, 0x02, + 0x60, 0x58, 0xdd, 0x9e, 0x47, 0x0b, 0x32, 0x3d, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0x3e, 0x7b, + 0x7a, 0x9e, 0xaf, 0x8f, 0x13, 0x3d, 0x50, 0x11, 0x31, 0xb8, 0x1c, 0x38, 0x9a, 0x20, 0x8e, 0xe6, + 0x8f, 0x99, 0xe9, 0x50, 0xad, 0x7b, 0x16, 0x44, 0xdd, 0x34, 0x90, 0xe5, 0xa9, 0xae, 0xe7, 0x20, + 0xad, 0x63, 0x58, 0x6d, 0x72, 0x00, 0xa7, 0x8a, 0xc9, 0x96, 0x66, 0xba, 0x48, 0x99, 0xa1, 0xea, + 0x3a, 0xd7, 0x62, 0x04, 0xa9, 0x32, 0x4e, 0x08, 0x31, 0xd9, 0x87, 0xa0, 0x6a, 0x1f, 0x51, 0xf8, + 0xfa, 0x14, 0x64, 0x42, 0x6d, 0x9d, 0x74, 0x1e, 0xb2, 0xb7, 0xb4, 0x3b, 0x9a, 0xca, 0x5b, 0x75, + 0x1a, 0x89, 0x0c, 0x96, 0xed, 0xb2, 0x76, 0xfd, 0x59, 0x98, 0x27, 0x26, 0x76, 0xcf, 0x43, 0x8e, + 0xaa, 0x9b, 0x9a, 0xeb, 0x92, 0xa0, 0xa5, 0x88, 0xa9, 0x84, 0x75, 0x35, 0xac, 0xaa, 0x70, 0x8d, + 0xb4, 0x06, 0x73, 0x04, 0xd1, 0xe9, 0x99, 0x9e, 0xd1, 0x35, 0x91, 0x8a, 0x5f, 0x1e, 0x5c, 0x72, + 0x10, 0xfb, 0x9e, 0xcd, 0x62, 0x8b, 0x6d, 0x66, 0x80, 0x3d, 0x72, 0xa5, 0x75, 0x78, 0x84, 0xc0, + 0xda, 0xc8, 0x42, 0x8e, 0xe6, 0x21, 0x15, 0x7d, 0xae, 0xa7, 0x99, 0xae, 0xaa, 0x59, 0x4d, 0xf5, + 0x40, 0x73, 0x0f, 0xe4, 0x79, 0x4c, 0x50, 0x8e, 0xc9, 0x82, 0x72, 0x06, 0x1b, 0x6e, 0x30, 0xbb, + 0x2a, 0x31, 0x2b, 0x59, 0xcd, 0xeb, 0x9a, 0x7b, 0x20, 0x15, 0xe1, 0x14, 0x61, 0x71, 0x3d, 0xc7, + 0xb0, 0xda, 0xaa, 0x7e, 0x80, 0xf4, 0xdb, 0x6a, 0xcf, 0x6b, 0x5d, 0x96, 0x1f, 0x0e, 0x3f, 0x9f, + 0x78, 0x58, 0x27, 0x36, 0x15, 0x6c, 0xb2, 0xef, 0xb5, 0x2e, 0x4b, 0x75, 0xc8, 0xe2, 0xc5, 0xe8, + 0x18, 0x2f, 0x23, 0xb5, 0x65, 0x3b, 0xa4, 0xb2, 0xe4, 0x46, 0xec, 0xec, 0x50, 0x04, 0x97, 0x6a, + 0x0c, 0xb0, 0x6d, 0x37, 0x51, 0x31, 0x59, 0xdf, 0xad, 0x56, 0xd7, 0x95, 0x0c, 0x67, 0xb9, 0x66, + 0x3b, 0x38, 0xa1, 0xda, 0xb6, 0x1f, 0xe0, 0x0c, 0x4d, 0xa8, 0xb6, 0xcd, 0xc3, 0xbb, 0x06, 0x73, + 0xba, 0x4e, 0xe7, 0x6c, 0xe8, 0x2a, 0x6b, 0xf1, 0x5d, 0x59, 0xec, 0x0b, 0x96, 0xae, 0x6f, 0x50, + 0x03, 0x96, 0xe3, 0xae, 0x74, 0x05, 0x1e, 0x0a, 0x82, 0x15, 0x06, 0xce, 0x0e, 0xcd, 0x72, 0x10, + 0xba, 0x06, 0x73, 0xdd, 0xc3, 0x61, 0xa0, 0xd4, 0xf7, 0xc4, 0xee, 0xe1, 0x20, 0xec, 0x71, 0xf2, + 0xda, 0xe6, 0x20, 0x5d, 0xf3, 0x50, 0x53, 0x3e, 0x1d, 0xb6, 0x0e, 0x29, 0xa4, 0x65, 0x10, 0x75, + 0x5d, 0x45, 0x96, 0xd6, 0x30, 0x91, 0xaa, 0x39, 0xc8, 0xd2, 0x5c, 0xf9, 0x6c, 0xd8, 0x38, 0xa7, + 0xeb, 0x55, 0xa2, 0x2d, 0x11, 0xa5, 0xf4, 0x14, 0xcc, 0xda, 0x8d, 0x5b, 0x3a, 0xcd, 0x2c, 0xb5, + 0xeb, 0xa0, 0x96, 0xf1, 0x92, 0xfc, 0x18, 0x09, 0xd3, 0x0c, 0x56, 0x90, 0xbc, 0xda, 0x25, 0x62, + 0xe9, 0x49, 0x10, 0x75, 0xf7, 0x40, 0x73, 0xba, 0xa4, 0xb4, 0xbb, 0x5d, 0x4d, 0x47, 0xf2, 0xe3, + 0xd4, 0x94, 0xca, 0x77, 0xb8, 0x18, 0x67, 0xb6, 0x7b, 0xd7, 0x68, 0x79, 0x9c, 0xf1, 0x09, 0x9a, + 0xd9, 0x44, 0xc6, 0xd8, 0x6e, 0xc2, 0x7c, 0xcf, 0x32, 0x2c, 0x0f, 0x39, 0x5d, 0x07, 0xe1, 0x26, + 0x9e, 0xee, 0x44, 0xf9, 0x1f, 0xa7, 0x8e, 0x69, 0xc3, 0xf7, 0xc3, 0xd6, 0x34, 0x01, 0x94, 0xb9, + 0xde, 0xb0, 0xb0, 0x50, 0x84, 0x6c, 0x38, 0x2f, 0xa4, 0x34, 0xd0, 0xcc, 0x10, 0x05, 0x5c, 0x63, + 0x2b, 0xb5, 0x75, 0x5c, 0x1d, 0x3f, 0x5b, 0x15, 0x63, 0xb8, 0x4a, 0x6f, 0x6d, 0xee, 0x55, 0x55, + 0x65, 0x7f, 0x67, 0x6f, 0x73, 0xbb, 0x2a, 0xc6, 0x9f, 0x4a, 0xa7, 0xbe, 0x3f, 0x25, 0xde, 0xbb, + 0x77, 0xef, 0x5e, 0xac, 0xf0, 0x9d, 0x18, 0xe4, 0xfa, 0x3b, 0x63, 0xe9, 0xff, 0xc1, 0x69, 0xfe, + 0x1a, 0xeb, 0x22, 0x4f, 0xbd, 0x6b, 0x38, 0x24, 0x55, 0x3b, 0x1a, 0xed, 0x2d, 0xfd, 0x28, 0xcf, + 0x33, 0xab, 0x3a, 0xf2, 0x5e, 0x30, 0x1c, 0x9c, 0x88, 0x1d, 0xcd, 0x93, 0xb6, 0xe0, 0xac, 0x65, + 0xab, 0xae, 0xa7, 0x59, 0x4d, 0xcd, 0x69, 0xaa, 0xc1, 0x05, 0x82, 0xaa, 0xe9, 0x3a, 0x72, 0x5d, + 0x9b, 0x96, 0x08, 0x9f, 0xe5, 0x63, 0x96, 0x5d, 0x67, 0xc6, 0xc1, 0xd9, 0x59, 0x62, 0xa6, 0x03, + 0x19, 0x11, 0x3f, 0x2e, 0x23, 0x1e, 0x86, 0x74, 0x47, 0xeb, 0xaa, 0xc8, 0xf2, 0x9c, 0x43, 0xd2, + 0xcf, 0xa5, 0x94, 0x54, 0x47, 0xeb, 0x56, 0xf1, 0xf8, 0xa3, 0x5b, 0x83, 0x70, 0x1c, 0xff, 0x21, + 0x0e, 0xd9, 0x70, 0x4f, 0x87, 0x5b, 0x64, 0x9d, 0x9c, 0xdf, 0x02, 0xd9, 0xe1, 0x8f, 0x3e, 0xb0, + 0x03, 0x5c, 0xaa, 0xe0, 0x83, 0xbd, 0x38, 0x49, 0x3b, 0x2d, 0x85, 0x22, 0x71, 0x51, 0xc5, 0x7b, + 0x1a, 0xd1, 0xfe, 0x3d, 0xa5, 0xb0, 0x91, 0xb4, 0x01, 0x93, 0xb7, 0x5c, 0xc2, 0x3d, 0x49, 0xb8, + 0x1f, 0x7b, 0x30, 0xf7, 0x8d, 0x3a, 0x21, 0x4f, 0xdf, 0xa8, 0xab, 0x3b, 0x35, 0x65, 0xbb, 0xb4, + 0xa5, 0x30, 0xb8, 0x74, 0x06, 0x12, 0xa6, 0xf6, 0xf2, 0x61, 0x7f, 0x09, 0x20, 0xa2, 0x71, 0x03, + 0x7f, 0x06, 0x12, 0x77, 0x91, 0x76, 0xbb, 0xff, 0xe0, 0x25, 0xa2, 0x8f, 0x30, 0xf5, 0x97, 0x21, + 0x49, 0xe2, 0x25, 0x01, 0xb0, 0x88, 0x89, 0x13, 0x52, 0x0a, 0x12, 0x95, 0x9a, 0x82, 0xd3, 0x5f, + 0x84, 0x2c, 0x95, 0xaa, 0xbb, 0x9b, 0xd5, 0x4a, 0x55, 0x8c, 0x15, 0xd6, 0x60, 0x92, 0x06, 0x01, + 0x6f, 0x0d, 0x3f, 0x0c, 0xe2, 0x04, 0x1b, 0x32, 0x0e, 0x81, 0x6b, 0xf7, 0xb7, 0xcb, 0x55, 0x45, + 0x8c, 0x85, 0x97, 0xd7, 0x85, 0x6c, 0xb8, 0x9d, 0xfb, 0xf1, 0xe4, 0xd4, 0x5f, 0x0a, 0x90, 0x09, + 0xb5, 0x67, 0xb8, 0x31, 0xd0, 0x4c, 0xd3, 0xbe, 0xab, 0x6a, 0xa6, 0xa1, 0xb9, 0x2c, 0x29, 0x80, + 0x88, 0x4a, 0x58, 0x32, 0xee, 0xa2, 0xfd, 0x58, 0x9c, 0x7f, 0x5d, 0x00, 0x71, 0xb0, 0xb5, 0x1b, + 0x70, 0x50, 0xf8, 0x89, 0x3a, 0xf8, 0x9a, 0x00, 0xb9, 0xfe, 0x7e, 0x6e, 0xc0, 0xbd, 0xf3, 0x3f, + 0x51, 0xf7, 0xde, 0x89, 0xc1, 0x74, 0x5f, 0x17, 0x37, 0xae, 0x77, 0x9f, 0x83, 0x59, 0xa3, 0x89, + 0x3a, 0x5d, 0xdb, 0x43, 0x96, 0x7e, 0xa8, 0x9a, 0xe8, 0x0e, 0x32, 0xe5, 0x02, 0x39, 0x28, 0x96, + 0x1f, 0xdc, 0x27, 0x2e, 0x6d, 0x06, 0xb8, 0x2d, 0x0c, 0x2b, 0xce, 0x6d, 0xae, 0x57, 0xb7, 0x77, + 0x6b, 0x7b, 0xd5, 0x9d, 0xca, 0x8b, 0xea, 0xfe, 0xce, 0xff, 0xdf, 0xa9, 0xbd, 0xb0, 0xa3, 0x88, + 0xc6, 0x80, 0xd9, 0x47, 0xb8, 0xd5, 0x77, 0x41, 0x1c, 0x74, 0x4a, 0x3a, 0x0d, 0xa3, 0xdc, 0x12, + 0x27, 0xa4, 0x39, 0x98, 0xd9, 0xa9, 0xa9, 0xf5, 0xcd, 0xf5, 0xaa, 0x5a, 0xbd, 0x76, 0xad, 0x5a, + 0xd9, 0xab, 0xd3, 0x17, 0x67, 0xdf, 0x7a, 0xaf, 0x7f, 0x53, 0xbf, 0x1a, 0x87, 0xb9, 0x11, 0x9e, + 0x48, 0x25, 0xd6, 0xb3, 0xd3, 0xd7, 0x88, 0x67, 0xc6, 0xf1, 0x7e, 0x09, 0x77, 0x05, 0xbb, 0x9a, + 0xe3, 0xb1, 0x16, 0xff, 0x49, 0xc0, 0x51, 0xb2, 0x3c, 0xa3, 0x65, 0x20, 0x87, 0xdd, 0x33, 0xd0, + 0x46, 0x7e, 0x26, 0x90, 0xd3, 0xab, 0x86, 0x4f, 0x80, 0xd4, 0xb5, 0x5d, 0xc3, 0x33, 0xee, 0x20, + 0xd5, 0xb0, 0xf8, 0xa5, 0x04, 0x6e, 0xec, 0x13, 0x8a, 0xc8, 0x35, 0x9b, 0x96, 0xe7, 0x5b, 0x5b, + 0xa8, 0xad, 0x0d, 0x58, 0xe3, 0x03, 0x3c, 0xae, 0x88, 0x5c, 0xe3, 0x5b, 0x9f, 0x87, 0x6c, 0xd3, + 0xee, 0xe1, 0x36, 0x89, 0xda, 0xe1, 0x7a, 0x21, 0x28, 0x19, 0x2a, 0xf3, 0x4d, 0x58, 0x1f, 0x1b, + 0xdc, 0x86, 0x64, 0x95, 0x0c, 0x95, 0x51, 0x93, 0x27, 0x60, 0x46, 0x6b, 0xb7, 0x1d, 0x4c, 0xce, + 0x89, 0x68, 0x67, 0x9e, 0xf3, 0xc5, 0xc4, 0x70, 0xe1, 0x06, 0xa4, 0x78, 0x1c, 0x70, 0x49, 0xc6, + 0x91, 0x50, 0xbb, 0xf4, 0x4e, 0x2a, 0xb6, 0x98, 0x56, 0x52, 0x16, 0x57, 0x9e, 0x87, 0xac, 0xe1, + 0xaa, 0xc1, 0xe5, 0x68, 0xec, 0x5c, 0x6c, 0x31, 0xa5, 0x64, 0x0c, 0xd7, 0xbf, 0x0d, 0x2b, 0xbc, + 0x11, 0x83, 0x5c, 0xff, 0xe5, 0xae, 0xb4, 0x0e, 0x29, 0xd3, 0xd6, 0x35, 0x92, 0x5a, 0xf4, 0x97, + 0x85, 0xc5, 0x88, 0xfb, 0xe0, 0xa5, 0x2d, 0x66, 0xaf, 0xf8, 0xc8, 0x85, 0xbf, 0x15, 0x20, 0xc5, + 0xc5, 0xd2, 0x29, 0x48, 0x74, 0x35, 0xef, 0x80, 0xd0, 0x25, 0xcb, 0x31, 0x51, 0x50, 0xc8, 0x18, + 0xcb, 0xdd, 0xae, 0x66, 0x91, 0x14, 0x60, 0x72, 0x3c, 0xc6, 0xeb, 0x6a, 0x22, 0xad, 0x49, 0xda, + 0x7e, 0xbb, 0xd3, 0x41, 0x96, 0xe7, 0xf2, 0x75, 0x65, 0xf2, 0x0a, 0x13, 0x4b, 0x4f, 0xc3, 0xac, + 0xe7, 0x68, 0x86, 0xd9, 0x67, 0x9b, 0x20, 0xb6, 0x22, 0x57, 0xf8, 0xc6, 0x45, 0x38, 0xc3, 0x79, + 0x9b, 0xc8, 0xd3, 0xf4, 0x03, 0xd4, 0x0c, 0x40, 0x93, 0xe4, 0xe6, 0xf0, 0x34, 0x33, 0x58, 0x67, + 0x7a, 0x8e, 0x2d, 0x7c, 0x57, 0x80, 0x59, 0xfe, 0xa2, 0xd2, 0xf4, 0x83, 0xb5, 0x0d, 0xa0, 0x59, + 0x96, 0xed, 0x85, 0xc3, 0x35, 0x9c, 0xca, 0x43, 0xb8, 0xa5, 0x92, 0x0f, 0x52, 0x42, 0x04, 0x0b, + 0x1d, 0x80, 0x40, 0x73, 0x6c, 0xd8, 0xce, 0x42, 0x86, 0xdd, 0xdc, 0x93, 0x9f, 0x7f, 0xe8, 0xab, + 0x2d, 0x50, 0x11, 0x7e, 0xa3, 0x91, 0xe6, 0x21, 0xd9, 0x40, 0x6d, 0xc3, 0x62, 0xf7, 0x89, 0x74, + 0xc0, 0x6f, 0x29, 0x13, 0xfe, 0x2d, 0x65, 0xf9, 0x26, 0xcc, 0xe9, 0x76, 0x67, 0xd0, 0xdd, 0xb2, + 0x38, 0xf0, 0x7a, 0xed, 0x5e, 0x17, 0x3e, 0x0b, 0x41, 0x8b, 0xf9, 0x95, 0x58, 0x7c, 0x63, 0xb7, + 0xfc, 0xb5, 0xd8, 0xc2, 0x06, 0xc5, 0xed, 0xf2, 0x69, 0x2a, 0xa8, 0x65, 0x22, 0x1d, 0xbb, 0x0e, + 0x3f, 0xf8, 0x38, 0x3c, 0xd3, 0x36, 0xbc, 0x83, 0x5e, 0x63, 0x49, 0xb7, 0x3b, 0xcb, 0x6d, 0xbb, + 0x6d, 0x07, 0x3f, 0x77, 0xe1, 0x11, 0x19, 0x90, 0xff, 0xd8, 0x4f, 0x5e, 0x69, 0x5f, 0xba, 0x10, + 0xf9, 0xfb, 0x58, 0x71, 0x07, 0xe6, 0x98, 0xb1, 0x4a, 0xee, 0xdc, 0xe9, 0xab, 0x81, 0xf4, 0xc0, + 0x7b, 0x17, 0xf9, 0x9b, 0xef, 0x92, 0x5a, 0xad, 0xcc, 0x32, 0x28, 0xd6, 0xd1, 0x17, 0x88, 0xa2, + 0x02, 0x0f, 0xf5, 0xf1, 0xd1, 0x7d, 0x89, 0x9c, 0x08, 0xc6, 0xef, 0x30, 0xc6, 0xb9, 0x10, 0x63, + 0x9d, 0x41, 0x8b, 0x15, 0x98, 0x3e, 0x09, 0xd7, 0x5f, 0x33, 0xae, 0x2c, 0x0a, 0x93, 0x6c, 0xc0, + 0x0c, 0x21, 0xd1, 0x7b, 0xae, 0x67, 0x77, 0xc8, 0xa1, 0xf7, 0x60, 0x9a, 0xbf, 0x79, 0x97, 0x6e, + 0x94, 0x1c, 0x86, 0x55, 0x7c, 0x54, 0xb1, 0x08, 0xe4, 0x67, 0x86, 0x26, 0xd2, 0xcd, 0x08, 0x86, + 0x37, 0x99, 0x23, 0xbe, 0x7d, 0xf1, 0x33, 0x30, 0x8f, 0xff, 0x27, 0x67, 0x52, 0xd8, 0x93, 0xe8, + 0x5b, 0x26, 0xf9, 0xbb, 0xaf, 0xd0, 0xbd, 0x38, 0xe7, 0x13, 0x84, 0x7c, 0x0a, 0xad, 0x62, 0x1b, + 0x79, 0x1e, 0x72, 0x5c, 0x55, 0x33, 0x47, 0xb9, 0x17, 0x7a, 0x4d, 0x97, 0xbf, 0xf4, 0x5e, 0xff, + 0x2a, 0x6e, 0x50, 0x64, 0xc9, 0x34, 0x8b, 0xfb, 0x70, 0x7a, 0x44, 0x56, 0x8c, 0xc1, 0xf9, 0x2a, + 0xe3, 0x9c, 0x1f, 0xca, 0x0c, 0x4c, 0xbb, 0x0b, 0x5c, 0xee, 0xaf, 0xe5, 0x18, 0x9c, 0xbf, 0xc9, + 0x38, 0x25, 0x86, 0xe5, 0x4b, 0x8a, 0x19, 0x6f, 0xc0, 0xec, 0x1d, 0xe4, 0x34, 0x6c, 0x97, 0x5d, + 0x8d, 0x8c, 0x41, 0xf7, 0x1a, 0xa3, 0x9b, 0x61, 0x40, 0x72, 0x57, 0x82, 0xb9, 0xae, 0x40, 0xaa, + 0xa5, 0xe9, 0x68, 0x0c, 0x8a, 0x2f, 0x33, 0x8a, 0x29, 0x6c, 0x8f, 0xa1, 0x25, 0xc8, 0xb6, 0x6d, + 0x56, 0x96, 0xa2, 0xe1, 0xaf, 0x33, 0x78, 0x86, 0x63, 0x18, 0x45, 0xd7, 0xee, 0xf6, 0x4c, 0x5c, + 0xb3, 0xa2, 0x29, 0x7e, 0x8b, 0x53, 0x70, 0x0c, 0xa3, 0x38, 0x41, 0x58, 0x7f, 0x9b, 0x53, 0xb8, + 0xa1, 0x78, 0x3e, 0x0f, 0x19, 0xdb, 0x32, 0x0f, 0x6d, 0x6b, 0x1c, 0x27, 0x7e, 0x87, 0x31, 0x00, + 0x83, 0x60, 0x82, 0xab, 0x90, 0x1e, 0x77, 0x21, 0x7e, 0xf7, 0x3d, 0xbe, 0x3d, 0xf8, 0x0a, 0x6c, + 0xc0, 0x0c, 0x3f, 0xa0, 0x0c, 0xdb, 0x1a, 0x83, 0xe2, 0xf7, 0x18, 0x45, 0x2e, 0x04, 0x63, 0xd3, + 0xf0, 0x90, 0xeb, 0xb5, 0xd1, 0x38, 0x24, 0x6f, 0xf0, 0x69, 0x30, 0x08, 0x0b, 0x65, 0x03, 0x59, + 0xfa, 0xc1, 0x78, 0x0c, 0x5f, 0xe5, 0xa1, 0xe4, 0x18, 0x4c, 0x51, 0x81, 0xe9, 0x8e, 0xe6, 0xb8, + 0x07, 0x9a, 0x39, 0xd6, 0x72, 0xfc, 0x3e, 0xe3, 0xc8, 0xfa, 0x20, 0x16, 0x91, 0x9e, 0x75, 0x12, + 0x9a, 0xaf, 0xf1, 0x88, 0x84, 0x60, 0x6c, 0xeb, 0xb9, 0x1e, 0xb9, 0x80, 0x3a, 0x09, 0xdb, 0xd7, + 0xf9, 0xd6, 0xa3, 0xd8, 0xed, 0x30, 0xe3, 0x55, 0x48, 0xbb, 0xc6, 0xcb, 0x63, 0xd1, 0xfc, 0x01, + 0x5f, 0x69, 0x02, 0xc0, 0xe0, 0x17, 0xe1, 0xcc, 0xc8, 0x32, 0x31, 0x06, 0xd9, 0x1f, 0x32, 0xb2, + 0x53, 0x23, 0x4a, 0x05, 0x3b, 0x12, 0x4e, 0x4a, 0xf9, 0x47, 0xfc, 0x48, 0x40, 0x03, 0x5c, 0xbb, + 0xf8, 0x45, 0xc1, 0xd5, 0x5a, 0x27, 0x8b, 0xda, 0x1f, 0xf3, 0xa8, 0x51, 0x6c, 0x5f, 0xd4, 0xf6, + 0xe0, 0x14, 0x63, 0x3c, 0xd9, 0xba, 0x7e, 0x83, 0x1f, 0xac, 0x14, 0xbd, 0xdf, 0xbf, 0xba, 0x3f, + 0x05, 0x0b, 0x7e, 0x38, 0x79, 0x47, 0xea, 0xaa, 0x1d, 0xad, 0x3b, 0x06, 0xf3, 0x37, 0x19, 0x33, + 0x3f, 0xf1, 0xfd, 0x96, 0xd6, 0xdd, 0xd6, 0xba, 0x98, 0xfc, 0x26, 0xc8, 0x9c, 0xbc, 0x67, 0x39, + 0x48, 0xb7, 0xdb, 0x96, 0xf1, 0x32, 0x6a, 0x8e, 0x41, 0xfd, 0x27, 0x03, 0x4b, 0xb5, 0x1f, 0x82, + 0x63, 0xe6, 0x4d, 0x10, 0xfd, 0x5e, 0x45, 0x35, 0x3a, 0x5d, 0xdb, 0xf1, 0x22, 0x18, 0xff, 0x94, + 0xaf, 0x94, 0x8f, 0xdb, 0x24, 0xb0, 0x62, 0x15, 0x72, 0x64, 0x38, 0x6e, 0x4a, 0xfe, 0x19, 0x23, + 0x9a, 0x0e, 0x50, 0xec, 0xe0, 0xd0, 0xed, 0x4e, 0x57, 0x73, 0xc6, 0x39, 0xff, 0xfe, 0x9c, 0x1f, + 0x1c, 0x0c, 0xc2, 0x0e, 0x0e, 0xef, 0xb0, 0x8b, 0x70, 0xb5, 0x1f, 0x83, 0xe1, 0x5b, 0xfc, 0xe0, + 0xe0, 0x18, 0x46, 0xc1, 0x1b, 0x86, 0x31, 0x28, 0xfe, 0x82, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x74, + 0x50, 0x68, 0x1d, 0xd4, 0x36, 0x5c, 0xcf, 0xa1, 0x7d, 0xf0, 0x83, 0xa9, 0xbe, 0xfd, 0x5e, 0x7f, + 0x13, 0xa6, 0x84, 0xa0, 0xc5, 0x1b, 0x30, 0x33, 0xd0, 0x62, 0x48, 0x51, 0xdf, 0x2c, 0xc8, 0x3f, + 0xfd, 0x01, 0x3b, 0x8c, 0xfa, 0x3b, 0x8c, 0xe2, 0x16, 0x5e, 0xf7, 0xfe, 0x3e, 0x20, 0x9a, 0xec, + 0x95, 0x0f, 0xfc, 0xa5, 0xef, 0x6b, 0x03, 0x8a, 0xd7, 0x60, 0xba, 0xaf, 0x07, 0x88, 0xa6, 0xfa, + 0x19, 0x46, 0x95, 0x0d, 0xb7, 0x00, 0xc5, 0x35, 0x48, 0xe0, 0x7a, 0x1e, 0x0d, 0xff, 0x59, 0x06, + 0x27, 0xe6, 0xc5, 0x4f, 0x42, 0x8a, 0xd7, 0xf1, 0x68, 0xe8, 0xcf, 0x31, 0xa8, 0x0f, 0xc1, 0x70, + 0x5e, 0xc3, 0xa3, 0xe1, 0x3f, 0xcf, 0xe1, 0x1c, 0x82, 0xe1, 0xe3, 0x87, 0xf0, 0xaf, 0x7e, 0x21, + 0xc1, 0xce, 0x61, 0x1e, 0xbb, 0xab, 0x30, 0xc5, 0x8a, 0x77, 0x34, 0xfa, 0xf3, 0xec, 0xe1, 0x1c, + 0x51, 0xbc, 0x04, 0xc9, 0x31, 0x03, 0xfe, 0x8b, 0x0c, 0x4a, 0xed, 0x8b, 0x15, 0xc8, 0x84, 0x0a, + 0x76, 0x34, 0xfc, 0x97, 0x18, 0x3c, 0x8c, 0xc2, 0xae, 0xb3, 0x82, 0x1d, 0x4d, 0xf0, 0xcb, 0xdc, + 0x75, 0x86, 0xc0, 0x61, 0xe3, 0xb5, 0x3a, 0x1a, 0xfd, 0x2b, 0x3c, 0xea, 0x1c, 0x52, 0x7c, 0x1e, + 0xd2, 0xfe, 0xf9, 0x1b, 0x8d, 0xff, 0x55, 0x86, 0x0f, 0x30, 0x38, 0x02, 0xa1, 0xf3, 0x3f, 0x9a, + 0xe2, 0x0b, 0x3c, 0x02, 0x21, 0x14, 0xde, 0x46, 0x83, 0x35, 0x3d, 0x9a, 0xe9, 0xd7, 0xf8, 0x36, + 0x1a, 0x28, 0xe9, 0x78, 0x35, 0xc9, 0x31, 0x18, 0x4d, 0xf1, 0xeb, 0x7c, 0x35, 0x89, 0x3d, 0x76, + 0x63, 0xb0, 0x48, 0x46, 0x73, 0xfc, 0x06, 0x77, 0x63, 0xa0, 0x46, 0x16, 0x77, 0x41, 0x1a, 0x2e, + 0x90, 0xd1, 0x7c, 0x5f, 0x64, 0x7c, 0xb3, 0x43, 0xf5, 0xb1, 0xf8, 0x02, 0x9c, 0x1a, 0x5d, 0x1c, + 0xa3, 0x59, 0xbf, 0xf4, 0xc1, 0xc0, 0xeb, 0x4c, 0xb8, 0x36, 0x16, 0xf7, 0x82, 0x53, 0x36, 0x5c, + 0x18, 0xa3, 0x69, 0x5f, 0xfd, 0xa0, 0xff, 0xa0, 0x0d, 0xd7, 0xc5, 0x62, 0x09, 0x20, 0xa8, 0x49, + 0xd1, 0x5c, 0xaf, 0x31, 0xae, 0x10, 0x08, 0x6f, 0x0d, 0x56, 0x92, 0xa2, 0xf1, 0x5f, 0xe6, 0x5b, + 0x83, 0x21, 0xf0, 0xd6, 0xe0, 0xd5, 0x28, 0x1a, 0xfd, 0x3a, 0xdf, 0x1a, 0x1c, 0x52, 0xbc, 0x0a, + 0x29, 0xab, 0x67, 0x9a, 0x38, 0xb7, 0xa4, 0x07, 0x7f, 0x46, 0x24, 0xff, 0xd3, 0x87, 0x0c, 0xcc, + 0x01, 0xc5, 0x35, 0x48, 0xa2, 0x4e, 0x03, 0x35, 0xa3, 0x90, 0xff, 0xfc, 0x21, 0x3f, 0x4f, 0xb0, + 0x75, 0xf1, 0x79, 0x00, 0xfa, 0x32, 0x4d, 0x7e, 0x25, 0x8a, 0xc0, 0xfe, 0xcb, 0x87, 0xec, 0x0b, + 0x85, 0x00, 0x12, 0x10, 0xd0, 0xef, 0x1d, 0x1e, 0x4c, 0xf0, 0x5e, 0x3f, 0x01, 0x79, 0x01, 0xbf, + 0x02, 0x53, 0xb7, 0x5c, 0xdb, 0xf2, 0xb4, 0x76, 0x14, 0xfa, 0x5f, 0x19, 0x9a, 0xdb, 0xe3, 0x80, + 0x75, 0x6c, 0x07, 0x79, 0x5a, 0xdb, 0x8d, 0xc2, 0xfe, 0x1b, 0xc3, 0xfa, 0x00, 0x0c, 0xd6, 0x35, + 0xd7, 0x1b, 0x67, 0xde, 0xff, 0xce, 0xc1, 0x1c, 0x80, 0x9d, 0xc6, 0xff, 0xdf, 0x46, 0x87, 0x51, + 0xd8, 0xf7, 0xb9, 0xd3, 0xcc, 0xbe, 0xf8, 0x49, 0x48, 0xe3, 0x7f, 0xe9, 0x57, 0x3b, 0x11, 0xe0, + 0xff, 0x60, 0xe0, 0x00, 0x81, 0x9f, 0xec, 0x7a, 0x4d, 0xcf, 0x88, 0x0e, 0xf6, 0x7f, 0xb2, 0x95, + 0xe6, 0xf6, 0xc5, 0x12, 0x64, 0x5c, 0xaf, 0xd9, 0xec, 0xb1, 0x8e, 0x26, 0x02, 0xfe, 0x83, 0x0f, + 0xfd, 0x97, 0x5c, 0x1f, 0x53, 0x3e, 0x3f, 0xfa, 0xb2, 0x0e, 0x36, 0xec, 0x0d, 0x9b, 0x5e, 0xd3, + 0xc1, 0x7f, 0xa5, 0xe0, 0x21, 0xdd, 0xee, 0x34, 0x6c, 0x77, 0xb9, 0x61, 0x7b, 0x07, 0xcb, 0xb6, + 0xc5, 0x0c, 0xa5, 0xb8, 0x6d, 0xa1, 0x85, 0x93, 0xdd, 0xc8, 0x15, 0xce, 0x40, 0xb2, 0xde, 0x6b, + 0x34, 0x0e, 0x25, 0x11, 0xe2, 0x6e, 0xaf, 0xc1, 0x3e, 0x29, 0xc1, 0xff, 0x16, 0xde, 0x8e, 0xc3, + 0x74, 0xc9, 0x34, 0xf7, 0x0e, 0xbb, 0xc8, 0xad, 0x59, 0xa8, 0xd6, 0x92, 0x64, 0x98, 0x24, 0x53, + 0x78, 0x8e, 0x98, 0x09, 0xd7, 0x27, 0x14, 0x36, 0xf6, 0x35, 0x2b, 0xe4, 0xa2, 0x32, 0xe6, 0x6b, + 0x56, 0x7c, 0xcd, 0x05, 0x7a, 0x4f, 0xe9, 0x6b, 0x2e, 0xf8, 0x9a, 0x55, 0x72, 0x5b, 0x19, 0xf7, + 0x35, 0xab, 0xbe, 0x66, 0x8d, 0xdc, 0xc6, 0x4f, 0xfb, 0x9a, 0x35, 0x5f, 0x73, 0x91, 0xdc, 0xbf, + 0x27, 0x7c, 0xcd, 0x45, 0x5f, 0x73, 0x89, 0x5c, 0xbb, 0xcf, 0xfa, 0x9a, 0x4b, 0xbe, 0xe6, 0x32, + 0xb9, 0x6a, 0x97, 0x7c, 0xcd, 0x65, 0x5f, 0x73, 0x85, 0x7c, 0x3b, 0x32, 0xe5, 0x6b, 0xae, 0x48, + 0x0b, 0x30, 0x45, 0x67, 0xf6, 0x2c, 0xf9, 0x3d, 0x76, 0xe6, 0xfa, 0x84, 0xc2, 0x05, 0x81, 0xee, + 0x39, 0xf2, 0x7d, 0xc8, 0x64, 0xa0, 0x7b, 0x2e, 0xd0, 0xad, 0x90, 0xaf, 0xa4, 0xc5, 0x40, 0xb7, + 0x12, 0xe8, 0x2e, 0xc8, 0xd3, 0x78, 0xe5, 0x03, 0xdd, 0x85, 0x40, 0xb7, 0x2a, 0xe7, 0xf0, 0x0a, + 0x04, 0xba, 0xd5, 0x40, 0xb7, 0x26, 0xcf, 0x9c, 0x13, 0x16, 0xb3, 0x81, 0x6e, 0x4d, 0x7a, 0x06, + 0x32, 0x6e, 0xaf, 0xa1, 0xb2, 0xcf, 0x07, 0xc8, 0x77, 0x28, 0x99, 0x15, 0x58, 0xc2, 0x39, 0x41, + 0x96, 0xf5, 0xfa, 0x84, 0x02, 0x6e, 0xaf, 0xc1, 0x8e, 0xc6, 0x72, 0x16, 0xc8, 0x4d, 0x82, 0x4a, + 0xbe, 0xbe, 0x2c, 0xbc, 0x25, 0x40, 0x7a, 0xef, 0xae, 0x4d, 0x7e, 0x8d, 0x75, 0xff, 0x8f, 0x17, + 0x97, 0x3b, 0x7d, 0x61, 0x95, 0xfc, 0x60, 0x96, 0xbe, 0x2e, 0x28, 0x5c, 0x10, 0xe8, 0xd6, 0xe4, + 0x47, 0xc9, 0x84, 0x7c, 0xdd, 0x9a, 0xb4, 0x0c, 0xd9, 0xd0, 0x84, 0x56, 0xc8, 0xa7, 0x25, 0xfd, + 0x33, 0x12, 0x94, 0x4c, 0x30, 0xa3, 0x95, 0x72, 0x12, 0x70, 0xda, 0xe3, 0x3f, 0xde, 0x5d, 0xbb, + 0xf0, 0x85, 0x18, 0x64, 0xe8, 0xe5, 0x23, 0x99, 0x15, 0x7e, 0x14, 0x6d, 0xc6, 0x0f, 0x99, 0x1b, + 0x13, 0x0a, 0x17, 0x48, 0x0a, 0x00, 0x35, 0xc5, 0x19, 0x4e, 0x3d, 0x29, 0x3f, 0xfb, 0xf7, 0x6f, + 0x9f, 0xfd, 0xc4, 0xb1, 0x3b, 0x08, 0xc7, 0x6e, 0x99, 0x1e, 0xad, 0x4b, 0xfb, 0x86, 0xe5, 0x3d, + 0xb7, 0x72, 0x19, 0x07, 0x38, 0x60, 0x91, 0xf6, 0x21, 0x55, 0xd1, 0x5c, 0xf2, 0x6d, 0x19, 0x71, + 0x3d, 0x51, 0xbe, 0xf4, 0x3f, 0x6f, 0x9f, 0xbd, 0x10, 0xc1, 0xc8, 0x4e, 0xbd, 0xa5, 0xed, 0x43, + 0xcc, 0x7a, 0x71, 0x15, 0xc3, 0xaf, 0x4f, 0x28, 0x3e, 0x95, 0xb4, 0xc2, 0x5d, 0xdd, 0xd1, 0x3a, + 0xf4, 0x1b, 0x9a, 0x78, 0x59, 0x3c, 0x7a, 0xfb, 0x6c, 0x76, 0xfb, 0x30, 0x90, 0x07, 0xae, 0xe0, + 0x51, 0x39, 0x05, 0x93, 0xd4, 0xd5, 0xf2, 0xfa, 0x9b, 0xf7, 0xf3, 0x13, 0x6f, 0xdd, 0xcf, 0x4f, + 0xfc, 0xdd, 0xfd, 0xfc, 0xc4, 0x3b, 0xf7, 0xf3, 0xc2, 0xfb, 0xf7, 0xf3, 0xc2, 0x0f, 0xef, 0xe7, + 0x85, 0x7b, 0x47, 0x79, 0xe1, 0xab, 0x47, 0x79, 0xe1, 0x1b, 0x47, 0x79, 0xe1, 0xdb, 0x47, 0x79, + 0xe1, 0xcd, 0xa3, 0xbc, 0xf0, 0xd6, 0x51, 0x5e, 0x78, 0xe7, 0x28, 0x2f, 0x7c, 0xff, 0x28, 0x3f, + 0xf1, 0xfe, 0x51, 0x5e, 0xf8, 0xe1, 0x51, 0x7e, 0xe2, 0xde, 0xf7, 0xf2, 0x13, 0xff, 0x1b, 0x00, + 0x00, 0xff, 0xff, 0xb8, 0x5b, 0xbb, 0x19, 0xd4, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/marshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/marshaler/one.pb.go index 74d517dc9..6e4e08873 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/marshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/marshaler/one.pb.go @@ -989,253 +989,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3927 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0xbf, 0x38, 0x17, 0x69, 0xe6, 0xcc, 0x68, 0x44, 0x7d, 0x92, 0xd7, 0x5c, 0x39, 0x9e, 0xd5, - 0x8e, 0xed, 0x58, 0xb6, 0x63, 0xc9, 0xd6, 0x65, 0x2f, 0xb3, 0xff, 0xc4, 0x18, 0x49, 0x63, 0xad, - 0x16, 0xba, 0x85, 0x92, 0x12, 0x3b, 0x79, 0x20, 0x38, 0x9c, 0x6f, 0x46, 0xdc, 0xe5, 0x90, 0xf3, - 0x27, 0x39, 0xbb, 0x96, 0x9f, 0x36, 0x70, 0x2f, 0x08, 0x82, 0xde, 0xd2, 0x02, 0x4d, 0x1c, 0xc7, - 0x4d, 0x03, 0xb4, 0x4e, 0xd3, 0x5b, 0xd2, 0x4b, 0x1a, 0xf4, 0xa9, 0x2f, 0x69, 0xfd, 0x54, 0x38, - 0x6f, 0x45, 0x51, 0x18, 0x59, 0xd5, 0x40, 0xd3, 0xd6, 0x6d, 0xdd, 0xc6, 0x40, 0x83, 0xf8, 0xa5, - 0xf8, 0x6e, 0x24, 0xe7, 0xa2, 0xe5, 0x28, 0x68, 0x92, 0x3e, 0x49, 0x3c, 0xe7, 0xfc, 0x7e, 0x3c, - 0xdf, 0xf9, 0x0e, 0xcf, 0x39, 0xfc, 0x86, 0xf0, 0x99, 0x65, 0x98, 0x6d, 0x3a, 0x4e, 0xd3, 0xc2, - 0x0b, 0x6d, 0xd7, 0xf1, 0x9d, 0x5a, 0xa7, 0xb1, 0x50, 0xc7, 0x9e, 0xe1, 0x9a, 0x6d, 0xdf, 0x71, - 0xe7, 0xa9, 0x0c, 0x4d, 0x30, 0x8b, 0x79, 0x61, 0x51, 0xda, 0x86, 0xc9, 0xe7, 0x4d, 0x0b, 0xaf, - 0x07, 0x86, 0xfb, 0xd8, 0x47, 0x57, 0x20, 0xd5, 0x30, 0x2d, 0xac, 0x48, 0xb3, 0xc9, 0xb9, 0xdc, - 0xe2, 0xa3, 0xf3, 0x3d, 0xa0, 0xf9, 0x6e, 0xc4, 0x1e, 0x11, 0xab, 0x14, 0x51, 0x7a, 0x27, 0x05, - 0x53, 0x03, 0xb4, 0x08, 0x41, 0xca, 0xd6, 0x5b, 0x84, 0x51, 0x9a, 0xcb, 0xaa, 0xf4, 0x7f, 0xa4, - 0xc0, 0x58, 0x5b, 0x37, 0x6e, 0xe9, 0x4d, 0xac, 0x24, 0xa8, 0x58, 0x5c, 0xa2, 0x22, 0x40, 0x1d, - 0xb7, 0xb1, 0x5d, 0xc7, 0xb6, 0x71, 0xac, 0x24, 0x67, 0x93, 0x73, 0x59, 0x35, 0x22, 0x41, 0x4f, - 0xc1, 0x64, 0xbb, 0x53, 0xb3, 0x4c, 0x43, 0x8b, 0x98, 0xc1, 0x6c, 0x72, 0x2e, 0xad, 0xca, 0x4c, - 0xb1, 0x1e, 0x1a, 0x3f, 0x0e, 0x13, 0x77, 0xb0, 0x7e, 0x2b, 0x6a, 0x9a, 0xa3, 0xa6, 0x05, 0x22, - 0x8e, 0x18, 0xae, 0x41, 0xbe, 0x85, 0x3d, 0x4f, 0x6f, 0x62, 0xcd, 0x3f, 0x6e, 0x63, 0x25, 0x45, - 0x57, 0x3f, 0xdb, 0xb7, 0xfa, 0xde, 0x95, 0xe7, 0x38, 0xea, 0xe0, 0xb8, 0x8d, 0x51, 0x05, 0xb2, - 0xd8, 0xee, 0xb4, 0x18, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x4e, 0xab, 0x97, 0x25, 0x43, 0x60, - 0x9c, 0x62, 0xcc, 0xc3, 0xee, 0x6d, 0xd3, 0xc0, 0xca, 0x28, 0x25, 0x78, 0xbc, 0x8f, 0x60, 0x9f, - 0xe9, 0x7b, 0x39, 0x04, 0x0e, 0xad, 0x41, 0x16, 0xbf, 0xe4, 0x63, 0xdb, 0x33, 0x1d, 0x5b, 0x19, - 0xa3, 0x24, 0x8f, 0x0d, 0xd8, 0x45, 0x6c, 0xd5, 0x7b, 0x29, 0x42, 0x1c, 0xba, 0x04, 0x63, 0x4e, - 0xdb, 0x37, 0x1d, 0xdb, 0x53, 0x32, 0xb3, 0xd2, 0x5c, 0x6e, 0xf1, 0x43, 0x03, 0x13, 0x61, 0x97, - 0xd9, 0xa8, 0xc2, 0x18, 0x6d, 0x82, 0xec, 0x39, 0x1d, 0xd7, 0xc0, 0x9a, 0xe1, 0xd4, 0xb1, 0x66, - 0xda, 0x0d, 0x47, 0xc9, 0x52, 0x82, 0x0b, 0xfd, 0x0b, 0xa1, 0x86, 0x6b, 0x4e, 0x1d, 0x6f, 0xda, - 0x0d, 0x47, 0x2d, 0x78, 0x5d, 0xd7, 0xe8, 0x1c, 0x8c, 0x7a, 0xc7, 0xb6, 0xaf, 0xbf, 0xa4, 0xe4, - 0x69, 0x86, 0xf0, 0xab, 0xd2, 0x7f, 0xa7, 0x61, 0x62, 0x98, 0x14, 0xbb, 0x06, 0xe9, 0x06, 0x59, - 0xa5, 0x92, 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x3b, 0x88, 0xa3, 0x3f, 0x66, 0x10, 0x2b, 0x90, 0xb3, - 0xb1, 0xe7, 0xe3, 0x3a, 0xcb, 0x88, 0xe4, 0x90, 0x39, 0x05, 0x0c, 0xd4, 0x9f, 0x52, 0xa9, 0x1f, - 0x2b, 0xa5, 0x5e, 0x80, 0x89, 0xc0, 0x25, 0xcd, 0xd5, 0xed, 0xa6, 0xc8, 0xcd, 0x85, 0x38, 0x4f, - 0xe6, 0xab, 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc0, 0x5d, 0xd7, 0x68, 0x1d, 0xc0, 0xb1, 0xb1, 0xd3, - 0xd0, 0xea, 0xd8, 0xb0, 0x94, 0xcc, 0x29, 0x51, 0xda, 0x25, 0x26, 0x7d, 0x51, 0x72, 0x98, 0xd4, - 0xb0, 0xd0, 0xd5, 0x30, 0xd5, 0xc6, 0x4e, 0xc9, 0x94, 0x6d, 0xf6, 0x90, 0xf5, 0x65, 0xdb, 0x21, - 0x14, 0x5c, 0x4c, 0xf2, 0x1e, 0xd7, 0xf9, 0xca, 0xb2, 0xd4, 0x89, 0xf9, 0xd8, 0x95, 0xa9, 0x1c, - 0xc6, 0x16, 0x36, 0xee, 0x46, 0x2f, 0xd1, 0x23, 0x10, 0x08, 0x34, 0x9a, 0x56, 0x40, 0xab, 0x50, - 0x5e, 0x08, 0x77, 0xf4, 0x16, 0x9e, 0xb9, 0x02, 0x85, 0xee, 0xf0, 0xa0, 0x69, 0x48, 0x7b, 0xbe, - 0xee, 0xfa, 0x34, 0x0b, 0xd3, 0x2a, 0xbb, 0x40, 0x32, 0x24, 0xb1, 0x5d, 0xa7, 0x55, 0x2e, 0xad, - 0x92, 0x7f, 0x67, 0x2e, 0xc3, 0x78, 0xd7, 0xed, 0x87, 0x05, 0x96, 0xbe, 0x30, 0x0a, 0xd3, 0x83, - 0x72, 0x6e, 0x60, 0xfa, 0x9f, 0x83, 0x51, 0xbb, 0xd3, 0xaa, 0x61, 0x57, 0x49, 0x52, 0x06, 0x7e, - 0x85, 0x2a, 0x90, 0xb6, 0xf4, 0x1a, 0xb6, 0x94, 0xd4, 0xac, 0x34, 0x57, 0x58, 0x7c, 0x6a, 0xa8, - 0xac, 0x9e, 0xdf, 0x22, 0x10, 0x95, 0x21, 0xd1, 0xc7, 0x20, 0xc5, 0x4b, 0x1c, 0x61, 0x78, 0x72, - 0x38, 0x06, 0x92, 0x8b, 0x2a, 0xc5, 0xa1, 0x87, 0x20, 0x4b, 0xfe, 0xb2, 0xd8, 0x8e, 0x52, 0x9f, - 0x33, 0x44, 0x40, 0xe2, 0x8a, 0x66, 0x20, 0x43, 0xd3, 0xac, 0x8e, 0x45, 0x6b, 0x08, 0xae, 0xc9, - 0xc6, 0xd4, 0x71, 0x43, 0xef, 0x58, 0xbe, 0x76, 0x5b, 0xb7, 0x3a, 0x98, 0x26, 0x4c, 0x56, 0xcd, - 0x73, 0xe1, 0x27, 0x88, 0x0c, 0x5d, 0x80, 0x1c, 0xcb, 0x4a, 0xd3, 0xae, 0xe3, 0x97, 0x68, 0xf5, - 0x49, 0xab, 0x2c, 0x51, 0x37, 0x89, 0x84, 0xdc, 0xfe, 0xa6, 0xe7, 0xd8, 0x62, 0x6b, 0xe9, 0x2d, - 0x88, 0x80, 0xde, 0xfe, 0x72, 0x6f, 0xe1, 0x7b, 0x78, 0xf0, 0xf2, 0x7a, 0x73, 0xb1, 0xf4, 0xad, - 0x04, 0xa4, 0xe8, 0xf3, 0x36, 0x01, 0xb9, 0x83, 0x17, 0xf7, 0xaa, 0xda, 0xfa, 0xee, 0xe1, 0xea, - 0x56, 0x55, 0x96, 0x50, 0x01, 0x80, 0x0a, 0x9e, 0xdf, 0xda, 0xad, 0x1c, 0xc8, 0x89, 0xe0, 0x7a, - 0x73, 0xe7, 0xe0, 0xd2, 0xb2, 0x9c, 0x0c, 0x00, 0x87, 0x4c, 0x90, 0x8a, 0x1a, 0x2c, 0x2d, 0xca, - 0x69, 0x24, 0x43, 0x9e, 0x11, 0x6c, 0xbe, 0x50, 0x5d, 0xbf, 0xb4, 0x2c, 0x8f, 0x76, 0x4b, 0x96, - 0x16, 0xe5, 0x31, 0x34, 0x0e, 0x59, 0x2a, 0x59, 0xdd, 0xdd, 0xdd, 0x92, 0x33, 0x01, 0xe7, 0xfe, - 0x81, 0xba, 0xb9, 0xb3, 0x21, 0x67, 0x03, 0xce, 0x0d, 0x75, 0xf7, 0x70, 0x4f, 0x86, 0x80, 0x61, - 0xbb, 0xba, 0xbf, 0x5f, 0xd9, 0xa8, 0xca, 0xb9, 0xc0, 0x62, 0xf5, 0xc5, 0x83, 0xea, 0xbe, 0x9c, - 0xef, 0x72, 0x6b, 0x69, 0x51, 0x1e, 0x0f, 0x6e, 0x51, 0xdd, 0x39, 0xdc, 0x96, 0x0b, 0x68, 0x12, - 0xc6, 0xd9, 0x2d, 0x84, 0x13, 0x13, 0x3d, 0xa2, 0x4b, 0xcb, 0xb2, 0x1c, 0x3a, 0xc2, 0x58, 0x26, - 0xbb, 0x04, 0x97, 0x96, 0x65, 0x54, 0x5a, 0x83, 0x34, 0xcd, 0x2e, 0x84, 0xa0, 0xb0, 0x55, 0x59, - 0xad, 0x6e, 0x69, 0xbb, 0x7b, 0x07, 0x9b, 0xbb, 0x3b, 0x95, 0x2d, 0x59, 0x0a, 0x65, 0x6a, 0xf5, - 0xe3, 0x87, 0x9b, 0x6a, 0x75, 0x5d, 0x4e, 0x44, 0x65, 0x7b, 0xd5, 0xca, 0x41, 0x75, 0x5d, 0x4e, - 0x96, 0x0c, 0x98, 0x1e, 0x54, 0x67, 0x06, 0x3e, 0x19, 0x91, 0x2d, 0x4e, 0x9c, 0xb2, 0xc5, 0x94, - 0xab, 0x6f, 0x8b, 0xbf, 0x2a, 0xc1, 0xd4, 0x80, 0x5a, 0x3b, 0xf0, 0x26, 0xcf, 0x41, 0x9a, 0xa5, - 0x28, 0xeb, 0x3e, 0x4f, 0x0c, 0x2c, 0xda, 0x34, 0x61, 0xfb, 0x3a, 0x10, 0xc5, 0x45, 0x3b, 0x70, - 0xf2, 0x94, 0x0e, 0x4c, 0x28, 0xfa, 0x9c, 0x7c, 0x45, 0x02, 0xe5, 0x34, 0xee, 0x98, 0x42, 0x91, - 0xe8, 0x2a, 0x14, 0xd7, 0x7a, 0x1d, 0xb8, 0x78, 0xfa, 0x1a, 0xfa, 0xbc, 0x78, 0x43, 0x82, 0x73, - 0x83, 0x07, 0x95, 0x81, 0x3e, 0x7c, 0x0c, 0x46, 0x5b, 0xd8, 0x3f, 0x72, 0x44, 0xb3, 0xfe, 0xf0, - 0x80, 0x16, 0x40, 0xd4, 0xbd, 0xb1, 0xe2, 0xa8, 0x68, 0x0f, 0x49, 0x9e, 0x36, 0x6d, 0x30, 0x6f, - 0xfa, 0x3c, 0xfd, 0x6c, 0x02, 0x1e, 0x18, 0x48, 0x3e, 0xd0, 0xd1, 0x87, 0x01, 0x4c, 0xbb, 0xdd, - 0xf1, 0x59, 0x43, 0x66, 0xf5, 0x29, 0x4b, 0x25, 0xf4, 0xd9, 0x27, 0xb5, 0xa7, 0xe3, 0x07, 0xfa, - 0x24, 0xd5, 0x03, 0x13, 0x51, 0x83, 0x2b, 0xa1, 0xa3, 0x29, 0xea, 0x68, 0xf1, 0x94, 0x95, 0xf6, - 0xf5, 0xba, 0x67, 0x40, 0x36, 0x2c, 0x13, 0xdb, 0xbe, 0xe6, 0xf9, 0x2e, 0xd6, 0x5b, 0xa6, 0xdd, - 0xa4, 0x05, 0x38, 0x53, 0x4e, 0x37, 0x74, 0xcb, 0xc3, 0xea, 0x04, 0x53, 0xef, 0x0b, 0x2d, 0x41, - 0xd0, 0x2e, 0xe3, 0x46, 0x10, 0xa3, 0x5d, 0x08, 0xa6, 0x0e, 0x10, 0xa5, 0xcf, 0x8d, 0x41, 0x2e, - 0x32, 0xd6, 0xa1, 0x8b, 0x90, 0xbf, 0xa9, 0xdf, 0xd6, 0x35, 0x31, 0xaa, 0xb3, 0x48, 0xe4, 0x88, - 0x6c, 0x8f, 0x8f, 0xeb, 0xcf, 0xc0, 0x34, 0x35, 0x71, 0x3a, 0x3e, 0x76, 0x35, 0xc3, 0xd2, 0x3d, - 0x8f, 0x06, 0x2d, 0x43, 0x4d, 0x11, 0xd1, 0xed, 0x12, 0xd5, 0x9a, 0xd0, 0xa0, 0x15, 0x98, 0xa2, - 0x88, 0x56, 0xc7, 0xf2, 0xcd, 0xb6, 0x85, 0x35, 0xf2, 0xf2, 0xe0, 0xd1, 0x42, 0x1c, 0x78, 0x36, - 0x49, 0x2c, 0xb6, 0xb9, 0x01, 0xf1, 0xc8, 0x43, 0x1b, 0xf0, 0x30, 0x85, 0x35, 0xb1, 0x8d, 0x5d, - 0xdd, 0xc7, 0x1a, 0xfe, 0xff, 0x1d, 0xdd, 0xf2, 0x34, 0xdd, 0xae, 0x6b, 0x47, 0xba, 0x77, 0xa4, - 0x4c, 0x47, 0x09, 0xce, 0x13, 0xdb, 0x0d, 0x6e, 0x5a, 0xa5, 0x96, 0x15, 0xbb, 0x7e, 0x5d, 0xf7, - 0x8e, 0x50, 0x19, 0xce, 0x51, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xa9, 0x19, 0x47, 0xd8, 0xb8, 0xa5, - 0x75, 0xfc, 0xc6, 0x15, 0xe5, 0xa1, 0x28, 0x03, 0x75, 0x72, 0x9f, 0xda, 0xac, 0x11, 0x93, 0x43, - 0xbf, 0x71, 0x05, 0xed, 0x43, 0x9e, 0xec, 0x47, 0xcb, 0x7c, 0x19, 0x6b, 0x0d, 0xc7, 0xa5, 0xcd, - 0xa5, 0x30, 0xe0, 0xe1, 0x8e, 0x04, 0x71, 0x7e, 0x97, 0x03, 0xb6, 0x9d, 0x3a, 0x2e, 0xa7, 0xf7, - 0xf7, 0xaa, 0xd5, 0x75, 0x35, 0x27, 0x58, 0x9e, 0x77, 0x5c, 0x92, 0x53, 0x4d, 0x27, 0x88, 0x71, - 0x8e, 0xe5, 0x54, 0xd3, 0x11, 0x11, 0x5e, 0x81, 0x29, 0xc3, 0x60, 0xcb, 0x36, 0x0d, 0x8d, 0x4f, - 0xf9, 0x9e, 0x22, 0x77, 0xc5, 0xcb, 0x30, 0x36, 0x98, 0x01, 0x4f, 0x73, 0x0f, 0x5d, 0x85, 0x07, - 0xc2, 0x78, 0x45, 0x81, 0x93, 0x7d, 0xab, 0xec, 0x85, 0xae, 0xc0, 0x54, 0xfb, 0xb8, 0x1f, 0x88, - 0xba, 0xee, 0xd8, 0x3e, 0xee, 0x85, 0x3d, 0x46, 0xdf, 0xdc, 0x5c, 0x6c, 0xe8, 0x3e, 0xae, 0x2b, - 0x0f, 0x46, 0xad, 0x23, 0x0a, 0xb4, 0x00, 0xb2, 0x61, 0x68, 0xd8, 0xd6, 0x6b, 0x16, 0xd6, 0x74, - 0x17, 0xdb, 0xba, 0xa7, 0x5c, 0x88, 0x1a, 0x17, 0x0c, 0xa3, 0x4a, 0xb5, 0x15, 0xaa, 0x44, 0x4f, - 0xc2, 0xa4, 0x53, 0xbb, 0x69, 0xb0, 0xe4, 0xd2, 0xda, 0x2e, 0x6e, 0x98, 0x2f, 0x29, 0x8f, 0xd2, - 0x30, 0x4d, 0x10, 0x05, 0x4d, 0xad, 0x3d, 0x2a, 0x46, 0x4f, 0x80, 0x6c, 0x78, 0x47, 0xba, 0xdb, - 0xa6, 0xdd, 0xdd, 0x6b, 0xeb, 0x06, 0x56, 0x1e, 0x63, 0xa6, 0x4c, 0xbe, 0x23, 0xc4, 0xe8, 0x05, - 0x98, 0xee, 0xd8, 0xa6, 0xed, 0x63, 0xb7, 0xed, 0x62, 0x32, 0xa4, 0xb3, 0x27, 0x4d, 0xf9, 0xa7, - 0xb1, 0x53, 0xc6, 0xec, 0xc3, 0xa8, 0x35, 0xdb, 0x5d, 0x75, 0xaa, 0xd3, 0x2f, 0x2c, 0x95, 0x21, - 0x1f, 0xdd, 0x74, 0x94, 0x05, 0xb6, 0xed, 0xb2, 0x44, 0x7a, 0xe8, 0xda, 0xee, 0x3a, 0xe9, 0x7e, - 0x9f, 0xaa, 0xca, 0x09, 0xd2, 0x85, 0xb7, 0x36, 0x0f, 0xaa, 0x9a, 0x7a, 0xb8, 0x73, 0xb0, 0xb9, - 0x5d, 0x95, 0x93, 0x4f, 0x66, 0x33, 0xdf, 0x1f, 0x93, 0xef, 0xde, 0xbd, 0x7b, 0x37, 0x51, 0xfa, - 0x4e, 0x02, 0x0a, 0xdd, 0x93, 0x2f, 0xfa, 0x7f, 0xf0, 0xa0, 0x78, 0x4d, 0xf5, 0xb0, 0xaf, 0xdd, - 0x31, 0x5d, 0x9a, 0x87, 0x2d, 0x9d, 0xcd, 0x8e, 0x41, 0x08, 0xa7, 0xb9, 0xd5, 0x3e, 0xf6, 0x3f, - 0x69, 0xba, 0x24, 0xcb, 0x5a, 0xba, 0x8f, 0xb6, 0xe0, 0x82, 0xed, 0x68, 0x9e, 0xaf, 0xdb, 0x75, - 0xdd, 0xad, 0x6b, 0xe1, 0x01, 0x81, 0xa6, 0x1b, 0x06, 0xf6, 0x3c, 0x87, 0xb5, 0x80, 0x80, 0xe5, - 0x43, 0xb6, 0xb3, 0xcf, 0x8d, 0xc3, 0xda, 0x58, 0xe1, 0xa6, 0x3d, 0xdb, 0x9d, 0x3c, 0x6d, 0xbb, - 0x1f, 0x82, 0x6c, 0x4b, 0x6f, 0x6b, 0xd8, 0xf6, 0xdd, 0x63, 0x3a, 0xaf, 0x65, 0xd4, 0x4c, 0x4b, - 0x6f, 0x57, 0xc9, 0xf5, 0x4f, 0x6e, 0x0f, 0xa2, 0x71, 0xfc, 0x87, 0x24, 0xe4, 0xa3, 0x33, 0x1b, - 0x19, 0x81, 0x0d, 0x5a, 0x9f, 0x25, 0xfa, 0xf8, 0x3e, 0x72, 0xdf, 0x09, 0x6f, 0x7e, 0x8d, 0x14, - 0xee, 0xf2, 0x28, 0x9b, 0xa4, 0x54, 0x86, 0x24, 0x4d, 0x93, 0x3c, 0xb0, 0x98, 0xcd, 0xe7, 0x19, - 0x95, 0x5f, 0xa1, 0x0d, 0x18, 0xbd, 0xe9, 0x51, 0xee, 0x51, 0xca, 0xfd, 0xe8, 0xfd, 0xb9, 0x6f, - 0xec, 0x53, 0xf2, 0xec, 0x8d, 0x7d, 0x6d, 0x67, 0x57, 0xdd, 0xae, 0x6c, 0xa9, 0x1c, 0x8e, 0xce, - 0x43, 0xca, 0xd2, 0x5f, 0x3e, 0xee, 0x2e, 0xf1, 0x54, 0x34, 0x6c, 0xe0, 0xcf, 0x43, 0xea, 0x0e, - 0xd6, 0x6f, 0x75, 0x17, 0x56, 0x2a, 0xfa, 0x09, 0xa6, 0xfe, 0x02, 0xa4, 0x69, 0xbc, 0x10, 0x00, - 0x8f, 0x98, 0x3c, 0x82, 0x32, 0x90, 0x5a, 0xdb, 0x55, 0x49, 0xfa, 0xcb, 0x90, 0x67, 0x52, 0x6d, - 0x6f, 0xb3, 0xba, 0x56, 0x95, 0x13, 0xa5, 0x15, 0x18, 0x65, 0x41, 0x20, 0x8f, 0x46, 0x10, 0x06, - 0x79, 0x84, 0x5f, 0x72, 0x0e, 0x49, 0x68, 0x0f, 0xb7, 0x57, 0xab, 0xaa, 0x9c, 0x88, 0x6e, 0xaf, - 0x07, 0xf9, 0xe8, 0xb8, 0xf6, 0xd3, 0xc9, 0xa9, 0xbf, 0x94, 0x20, 0x17, 0x19, 0xbf, 0x48, 0xe3, - 0xd7, 0x2d, 0xcb, 0xb9, 0xa3, 0xe9, 0x96, 0xa9, 0x7b, 0x3c, 0x29, 0x80, 0x8a, 0x2a, 0x44, 0x32, - 0xec, 0xa6, 0xfd, 0x54, 0x9c, 0x7f, 0x5d, 0x02, 0xb9, 0x77, 0x74, 0xeb, 0x71, 0x50, 0xfa, 0x99, - 0x3a, 0xf8, 0x9a, 0x04, 0x85, 0xee, 0x79, 0xad, 0xc7, 0xbd, 0x8b, 0x3f, 0x53, 0xf7, 0xbe, 0x24, - 0xc1, 0x78, 0xd7, 0x94, 0xf6, 0x7f, 0xca, 0xbb, 0x57, 0x93, 0x30, 0x35, 0x00, 0x87, 0x2a, 0x7c, - 0x9c, 0x65, 0x13, 0xf6, 0xd3, 0xc3, 0xdc, 0x6b, 0x9e, 0x74, 0xcb, 0x3d, 0xdd, 0xf5, 0xf9, 0xf4, - 0xfb, 0x04, 0xc8, 0x66, 0x1d, 0xdb, 0xbe, 0xd9, 0x30, 0xb1, 0xcb, 0x5f, 0xc1, 0xd9, 0x8c, 0x3b, - 0x11, 0xca, 0xd9, 0x5b, 0xf8, 0x47, 0x00, 0xb5, 0x1d, 0xcf, 0xf4, 0xcd, 0xdb, 0x58, 0x33, 0x6d, - 0xf1, 0xbe, 0x4e, 0x66, 0xde, 0x94, 0x2a, 0x0b, 0xcd, 0xa6, 0xed, 0x07, 0xd6, 0x36, 0x6e, 0xea, - 0x3d, 0xd6, 0xa4, 0xf6, 0x25, 0x55, 0x59, 0x68, 0x02, 0xeb, 0x8b, 0x90, 0xaf, 0x3b, 0x1d, 0x32, - 0x3e, 0x30, 0x3b, 0x52, 0x6a, 0x25, 0x35, 0xc7, 0x64, 0x81, 0x09, 0x9f, 0xef, 0xc2, 0x83, 0x82, - 0xbc, 0x9a, 0x63, 0x32, 0x66, 0xf2, 0x38, 0x4c, 0xe8, 0xcd, 0xa6, 0x4b, 0xc8, 0x05, 0x11, 0x1b, - 0x5a, 0x0b, 0x81, 0x98, 0x1a, 0xce, 0xdc, 0x80, 0x8c, 0x88, 0x03, 0xe9, 0x66, 0x24, 0x12, 0x5a, - 0x9b, 0x1d, 0xd7, 0x24, 0xe6, 0xb2, 0x6a, 0xc6, 0x16, 0xca, 0x8b, 0x90, 0x37, 0x3d, 0x2d, 0x3c, - 0x37, 0x4c, 0xcc, 0x26, 0xe6, 0x32, 0x6a, 0xce, 0xf4, 0x82, 0x83, 0xa2, 0xd2, 0x1b, 0x09, 0x28, - 0x74, 0x9f, 0x7b, 0xa2, 0x75, 0xc8, 0x58, 0x8e, 0xa1, 0xd3, 0x44, 0x60, 0x87, 0xee, 0x73, 0x31, - 0x47, 0xa5, 0xf3, 0x5b, 0xdc, 0x5e, 0x0d, 0x90, 0x33, 0x7f, 0x2b, 0x41, 0x46, 0x88, 0xd1, 0x39, - 0x48, 0xb5, 0x75, 0xff, 0x88, 0xd2, 0xa5, 0x57, 0x13, 0xb2, 0xa4, 0xd2, 0x6b, 0x22, 0xf7, 0xda, - 0xba, 0x4d, 0x53, 0x80, 0xcb, 0xc9, 0x35, 0xd9, 0x57, 0x0b, 0xeb, 0x75, 0x3a, 0x0e, 0x3b, 0xad, - 0x16, 0xb6, 0x7d, 0x4f, 0xec, 0x2b, 0x97, 0xaf, 0x71, 0x31, 0x7a, 0x0a, 0x26, 0x7d, 0x57, 0x37, - 0xad, 0x2e, 0xdb, 0x14, 0xb5, 0x95, 0x85, 0x22, 0x30, 0x2e, 0xc3, 0x79, 0xc1, 0x5b, 0xc7, 0xbe, - 0x6e, 0x1c, 0xe1, 0x7a, 0x08, 0x1a, 0xa5, 0x87, 0x6a, 0x0f, 0x72, 0x83, 0x75, 0xae, 0x17, 0xd8, - 0xd2, 0x77, 0x25, 0x98, 0x14, 0x03, 0x7c, 0x3d, 0x08, 0xd6, 0x36, 0x80, 0x6e, 0xdb, 0x8e, 0x1f, - 0x0d, 0x57, 0x7f, 0x2a, 0xf7, 0xe1, 0xe6, 0x2b, 0x01, 0x48, 0x8d, 0x10, 0xcc, 0xb4, 0x00, 0x42, - 0xcd, 0xa9, 0x61, 0xbb, 0x00, 0x39, 0x7e, 0xa8, 0x4d, 0x7f, 0x19, 0x61, 0x6f, 0x7d, 0xc0, 0x44, - 0x64, 0xd2, 0x47, 0xd3, 0x90, 0xae, 0xe1, 0xa6, 0x69, 0xf3, 0xa3, 0x36, 0x76, 0x21, 0x0e, 0xf0, - 0x52, 0xc1, 0x01, 0xde, 0xea, 0xa7, 0x61, 0xca, 0x70, 0x5a, 0xbd, 0xee, 0xae, 0xca, 0x3d, 0x6f, - 0x9e, 0xde, 0x75, 0xe9, 0x53, 0x10, 0x4e, 0x67, 0x5f, 0x91, 0xa4, 0xaf, 0x26, 0x92, 0x1b, 0x7b, - 0xab, 0x5f, 0x4f, 0xcc, 0x6c, 0x30, 0xe8, 0x9e, 0x58, 0xa9, 0x8a, 0x1b, 0x16, 0x36, 0x88, 0xf7, - 0xf0, 0x83, 0x0f, 0xc3, 0xd3, 0x4d, 0xd3, 0x3f, 0xea, 0xd4, 0xe6, 0x0d, 0xa7, 0xb5, 0xd0, 0x74, - 0x9a, 0x4e, 0xf8, 0x63, 0x10, 0xb9, 0xa2, 0x17, 0xf4, 0x3f, 0xfe, 0x83, 0x50, 0x36, 0x90, 0xce, - 0xc4, 0xfe, 0x7a, 0x54, 0xde, 0x81, 0x29, 0x6e, 0xac, 0xd1, 0x13, 0x69, 0x36, 0x87, 0xa3, 0xfb, - 0x9e, 0x4a, 0x28, 0xdf, 0x7c, 0x87, 0x76, 0x3a, 0x75, 0x92, 0x43, 0x89, 0x8e, 0x4d, 0xea, 0x65, - 0x15, 0x1e, 0xe8, 0xe2, 0x63, 0x8f, 0x26, 0x76, 0x63, 0x18, 0xbf, 0xc3, 0x19, 0xa7, 0x22, 0x8c, - 0xfb, 0x1c, 0x5a, 0x5e, 0x83, 0xf1, 0xb3, 0x70, 0xfd, 0x35, 0xe7, 0xca, 0xe3, 0x28, 0xc9, 0x06, - 0x4c, 0x50, 0x12, 0xa3, 0xe3, 0xf9, 0x4e, 0x8b, 0xd6, 0xbd, 0xfb, 0xd3, 0xfc, 0xcd, 0x3b, 0xec, - 0x59, 0x29, 0x10, 0xd8, 0x5a, 0x80, 0x2a, 0x97, 0x81, 0x1e, 0xc2, 0xd7, 0xb1, 0x61, 0xc5, 0x30, - 0xbc, 0xc9, 0x1d, 0x09, 0xec, 0xcb, 0x9f, 0x80, 0x69, 0xf2, 0x3f, 0x2d, 0x4b, 0x51, 0x4f, 0xe2, - 0xcf, 0x60, 0x94, 0xef, 0xbe, 0xc2, 0x1e, 0xc7, 0xa9, 0x80, 0x20, 0xe2, 0x53, 0x64, 0x17, 0x9b, - 0xd8, 0xf7, 0xb1, 0xeb, 0x69, 0xba, 0x35, 0xc8, 0xbd, 0xc8, 0x1b, 0xac, 0xf2, 0xc5, 0x77, 0xbb, - 0x77, 0x71, 0x83, 0x21, 0x2b, 0x96, 0x55, 0x3e, 0x84, 0x07, 0x07, 0x64, 0xc5, 0x10, 0x9c, 0xaf, - 0x72, 0xce, 0xe9, 0xbe, 0xcc, 0x20, 0xb4, 0x7b, 0x20, 0xe4, 0xc1, 0x5e, 0x0e, 0xc1, 0xf9, 0x25, - 0xce, 0x89, 0x38, 0x56, 0x6c, 0x29, 0x61, 0xbc, 0x01, 0x93, 0xb7, 0xb1, 0x5b, 0x73, 0x3c, 0x7e, - 0x70, 0x30, 0x04, 0xdd, 0x6b, 0x9c, 0x6e, 0x82, 0x03, 0xe9, 0x31, 0x02, 0xe1, 0xba, 0x0a, 0x99, - 0x86, 0x6e, 0xe0, 0x21, 0x28, 0xbe, 0xcc, 0x29, 0xc6, 0x88, 0x3d, 0x81, 0x56, 0x20, 0xdf, 0x74, - 0x78, 0x67, 0x8a, 0x87, 0xbf, 0xce, 0xe1, 0x39, 0x81, 0xe1, 0x14, 0x6d, 0xa7, 0xdd, 0xb1, 0x48, - 0xdb, 0x8a, 0xa7, 0xf8, 0x2d, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x0c, 0x61, 0xfd, 0x8a, 0xa0, 0xf0, - 0x22, 0xf1, 0x7c, 0x0e, 0x72, 0x8e, 0x6d, 0x1d, 0x3b, 0xf6, 0x30, 0x4e, 0xfc, 0x36, 0x67, 0x00, - 0x0e, 0x21, 0x04, 0xd7, 0x20, 0x3b, 0xec, 0x46, 0xfc, 0xce, 0xbb, 0xe2, 0xf1, 0x10, 0x3b, 0xb0, - 0x01, 0x13, 0xa2, 0x40, 0x99, 0x8e, 0x3d, 0x04, 0xc5, 0xef, 0x72, 0x8a, 0x42, 0x04, 0xc6, 0x97, - 0xe1, 0x63, 0xcf, 0x6f, 0xe2, 0x61, 0x48, 0xde, 0x10, 0xcb, 0xe0, 0x10, 0x1e, 0xca, 0x1a, 0xb6, - 0x8d, 0xa3, 0xe1, 0x18, 0xbe, 0x26, 0x42, 0x29, 0x30, 0x84, 0x62, 0x0d, 0xc6, 0x5b, 0xba, 0xeb, - 0x1d, 0xe9, 0xd6, 0x50, 0xdb, 0xf1, 0x7b, 0x9c, 0x23, 0x1f, 0x80, 0x78, 0x44, 0x3a, 0xf6, 0x59, - 0x68, 0xbe, 0x2e, 0x22, 0x12, 0x81, 0xf1, 0x47, 0xcf, 0xf3, 0xe9, 0xd9, 0xcc, 0x59, 0xd8, 0x7e, - 0x5f, 0x3c, 0x7a, 0x0c, 0xbb, 0x1d, 0x65, 0xbc, 0x06, 0x59, 0xcf, 0x7c, 0x79, 0x28, 0x9a, 0x3f, - 0x10, 0x3b, 0x4d, 0x01, 0x04, 0xfc, 0x22, 0x9c, 0x1f, 0xd8, 0x26, 0x86, 0x20, 0xfb, 0x43, 0x4e, - 0x76, 0x6e, 0x40, 0xab, 0xe0, 0x25, 0xe1, 0xac, 0x94, 0x7f, 0x24, 0x4a, 0x02, 0xee, 0xe1, 0xda, - 0x23, 0x93, 0xbd, 0xa7, 0x37, 0xce, 0x16, 0xb5, 0x3f, 0x16, 0x51, 0x63, 0xd8, 0xae, 0xa8, 0x1d, - 0xc0, 0x39, 0xce, 0x78, 0xb6, 0x7d, 0xfd, 0x86, 0x28, 0xac, 0x0c, 0x7d, 0xd8, 0xbd, 0xbb, 0x9f, - 0x86, 0x99, 0x20, 0x9c, 0x62, 0x28, 0xf5, 0xb4, 0x96, 0xde, 0x1e, 0x82, 0xf9, 0x9b, 0x9c, 0x59, - 0x54, 0xfc, 0x60, 0xaa, 0xf5, 0xb6, 0xf5, 0x36, 0x21, 0x7f, 0x01, 0x14, 0x41, 0xde, 0xb1, 0x5d, - 0x6c, 0x38, 0x4d, 0xdb, 0x7c, 0x19, 0xd7, 0x87, 0xa0, 0xfe, 0x93, 0x9e, 0xad, 0x3a, 0x8c, 0xc0, - 0x09, 0xf3, 0x26, 0xc8, 0xc1, 0xac, 0xa2, 0x99, 0xad, 0xb6, 0xe3, 0xfa, 0x31, 0x8c, 0x7f, 0x2a, - 0x76, 0x2a, 0xc0, 0x6d, 0x52, 0x58, 0xb9, 0x0a, 0x05, 0x7a, 0x39, 0x6c, 0x4a, 0xfe, 0x19, 0x27, - 0x1a, 0x0f, 0x51, 0xbc, 0x70, 0x18, 0x4e, 0xab, 0xad, 0xbb, 0xc3, 0xd4, 0xbf, 0x3f, 0x17, 0x85, - 0x83, 0x43, 0x78, 0xe1, 0xf0, 0x8f, 0xdb, 0x98, 0x74, 0xfb, 0x21, 0x18, 0xbe, 0x25, 0x0a, 0x87, - 0xc0, 0x70, 0x0a, 0x31, 0x30, 0x0c, 0x41, 0xf1, 0x17, 0x82, 0x42, 0x60, 0x08, 0xc5, 0xc7, 0xc3, - 0x46, 0xeb, 0xe2, 0xa6, 0xe9, 0xf9, 0x2e, 0x1b, 0x85, 0xef, 0x4f, 0xf5, 0xed, 0x77, 0xbb, 0x87, - 0x30, 0x35, 0x02, 0x2d, 0xdf, 0x80, 0x89, 0x9e, 0x11, 0x03, 0xc5, 0xfd, 0xa2, 0xaf, 0x7c, 0xe6, - 0x7d, 0x5e, 0x8c, 0xba, 0x27, 0x8c, 0xf2, 0x16, 0xd9, 0xf7, 0xee, 0x39, 0x20, 0x9e, 0xec, 0x95, - 0xf7, 0x83, 0xad, 0xef, 0x1a, 0x03, 0xca, 0xcf, 0xc3, 0x78, 0xd7, 0x0c, 0x10, 0x4f, 0xf5, 0x73, - 0x9c, 0x2a, 0x1f, 0x1d, 0x01, 0xca, 0x2b, 0x90, 0x22, 0xfd, 0x3c, 0x1e, 0xfe, 0xf3, 0x1c, 0x4e, - 0xcd, 0xcb, 0x1f, 0x85, 0x8c, 0xe8, 0xe3, 0xf1, 0xd0, 0x5f, 0xe0, 0xd0, 0x00, 0x42, 0xe0, 0xa2, - 0x87, 0xc7, 0xc3, 0x7f, 0x51, 0xc0, 0x05, 0x84, 0xc0, 0x87, 0x0f, 0xe1, 0x5f, 0x7d, 0x2e, 0xc5, - 0xeb, 0xb0, 0x88, 0xdd, 0x35, 0x18, 0xe3, 0xcd, 0x3b, 0x1e, 0xfd, 0x59, 0x7e, 0x73, 0x81, 0x28, - 0x5f, 0x86, 0xf4, 0x90, 0x01, 0xff, 0x25, 0x0e, 0x65, 0xf6, 0xe5, 0x35, 0xc8, 0x45, 0x1a, 0x76, - 0x3c, 0xfc, 0x97, 0x39, 0x3c, 0x8a, 0x22, 0xae, 0xf3, 0x86, 0x1d, 0x4f, 0xf0, 0x2b, 0xc2, 0x75, - 0x8e, 0x20, 0x61, 0x13, 0xbd, 0x3a, 0x1e, 0xfd, 0xab, 0x22, 0xea, 0x02, 0x52, 0x7e, 0x0e, 0xb2, - 0x41, 0xfd, 0x8d, 0xc7, 0xff, 0x1a, 0xc7, 0x87, 0x18, 0x12, 0x81, 0x48, 0xfd, 0x8f, 0xa7, 0xf8, - 0xbc, 0x88, 0x40, 0x04, 0x45, 0x1e, 0xa3, 0xde, 0x9e, 0x1e, 0xcf, 0xf4, 0xeb, 0xe2, 0x31, 0xea, - 0x69, 0xe9, 0x64, 0x37, 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x0d, 0xb1, 0x9b, 0xd4, 0x9e, 0xb8, 0xd1, - 0xdb, 0x24, 0xe3, 0x39, 0x7e, 0x53, 0xb8, 0xd1, 0xd3, 0x23, 0xcb, 0x7b, 0x80, 0xfa, 0x1b, 0x64, - 0x3c, 0xdf, 0x17, 0x38, 0xdf, 0x64, 0x5f, 0x7f, 0x2c, 0x7f, 0x12, 0xce, 0x0d, 0x6e, 0x8e, 0xf1, - 0xac, 0x5f, 0x7c, 0xbf, 0xe7, 0x75, 0x26, 0xda, 0x1b, 0xcb, 0x07, 0x61, 0x95, 0x8d, 0x36, 0xc6, - 0x78, 0xda, 0x57, 0xdf, 0xef, 0x2e, 0xb4, 0xd1, 0xbe, 0x58, 0xae, 0x00, 0x84, 0x3d, 0x29, 0x9e, - 0xeb, 0x35, 0xce, 0x15, 0x01, 0x91, 0x47, 0x83, 0xb7, 0xa4, 0x78, 0xfc, 0x97, 0xc5, 0xa3, 0xc1, - 0x11, 0xe4, 0xd1, 0x10, 0xdd, 0x28, 0x1e, 0xfd, 0xba, 0x78, 0x34, 0x04, 0xa4, 0x7c, 0x0d, 0x32, - 0x76, 0xc7, 0xb2, 0x48, 0x6e, 0xa1, 0xfb, 0x7f, 0x64, 0xa3, 0xfc, 0xf3, 0x07, 0x1c, 0x2c, 0x00, - 0xe5, 0x15, 0x48, 0xe3, 0x56, 0x0d, 0xd7, 0xe3, 0x90, 0xff, 0xf2, 0x81, 0xa8, 0x27, 0xc4, 0xba, - 0xfc, 0x1c, 0x00, 0x7b, 0x99, 0xa6, 0xbf, 0xb1, 0xc4, 0x60, 0xff, 0xf5, 0x03, 0xfe, 0xfb, 0x7d, - 0x08, 0x09, 0x09, 0xd8, 0xd7, 0x00, 0xf7, 0x27, 0x78, 0xb7, 0x9b, 0x80, 0xbe, 0x80, 0x5f, 0x85, - 0xb1, 0x9b, 0x9e, 0x63, 0xfb, 0x7a, 0x33, 0x0e, 0xfd, 0x6f, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0x5a, - 0x8e, 0x8b, 0x7d, 0xbd, 0xe9, 0xc5, 0x61, 0xff, 0x9d, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, - 0x0f, 0xb3, 0xee, 0xff, 0x10, 0x60, 0x01, 0x20, 0x4e, 0x93, 0xff, 0x6f, 0xe1, 0xe3, 0x38, 0xec, - 0x7b, 0xc2, 0x69, 0x6e, 0x5f, 0xfe, 0x28, 0x64, 0xc9, 0xbf, 0xec, 0x9b, 0x96, 0x18, 0xf0, 0x7f, - 0x72, 0x70, 0x88, 0x20, 0x77, 0xf6, 0xfc, 0xba, 0x6f, 0xc6, 0x07, 0xfb, 0xbf, 0xf8, 0x4e, 0x0b, - 0xfb, 0x72, 0x05, 0x72, 0x9e, 0x5f, 0xaf, 0x77, 0xf8, 0x44, 0x13, 0x03, 0xff, 0xc1, 0x07, 0xc1, - 0x4b, 0x6e, 0x80, 0x59, 0xbd, 0x38, 0xf8, 0xbc, 0x0e, 0x36, 0x9c, 0x0d, 0x87, 0x9d, 0xd4, 0xc1, - 0x8f, 0x32, 0x30, 0x63, 0x38, 0xad, 0x9a, 0xe3, 0x2d, 0x04, 0x85, 0x64, 0xc1, 0xb1, 0xb9, 0x35, - 0x4a, 0x3a, 0x36, 0x9e, 0x39, 0xdb, 0xb1, 0x5c, 0xe9, 0x3c, 0xa4, 0xf7, 0x3b, 0xb5, 0xda, 0x31, - 0x92, 0x21, 0xe9, 0x75, 0x6a, 0xfc, 0xab, 0x0b, 0xf2, 0x6f, 0xe9, 0xed, 0x24, 0x8c, 0x57, 0x2c, - 0xeb, 0xe0, 0xb8, 0x8d, 0xbd, 0x5d, 0x1b, 0xef, 0x36, 0x90, 0x02, 0xa3, 0x74, 0x1d, 0xcf, 0x52, - 0x33, 0xe9, 0xfa, 0x88, 0xca, 0xaf, 0x03, 0xcd, 0x22, 0x3d, 0xb0, 0x4c, 0x04, 0x9a, 0xc5, 0x40, - 0xb3, 0xc4, 0xce, 0x2b, 0x03, 0xcd, 0x52, 0xa0, 0x59, 0xa6, 0xa7, 0x96, 0xc9, 0x40, 0xb3, 0x1c, - 0x68, 0x56, 0xe8, 0xa9, 0xfc, 0x78, 0xa0, 0x59, 0x09, 0x34, 0x97, 0xe8, 0x39, 0x7c, 0x2a, 0xd0, - 0x5c, 0x0a, 0x34, 0x97, 0xe9, 0xf1, 0xfb, 0x64, 0xa0, 0xb9, 0x1c, 0x68, 0xae, 0xd0, 0x23, 0x77, - 0x14, 0x68, 0xae, 0x04, 0x9a, 0xab, 0xf4, 0xdb, 0x8a, 0xb1, 0x40, 0x73, 0x15, 0xcd, 0xc0, 0x18, - 0x5b, 0xd9, 0x33, 0xf4, 0x27, 0xcd, 0x89, 0xeb, 0x23, 0xaa, 0x10, 0x84, 0xba, 0x67, 0xe9, 0xf7, - 0x13, 0xa3, 0xa1, 0xee, 0xd9, 0x50, 0xb7, 0x48, 0x3f, 0x24, 0x96, 0x43, 0xdd, 0x62, 0xa8, 0x5b, - 0x52, 0xc6, 0xc9, 0xf6, 0x87, 0xba, 0xa5, 0x50, 0xb7, 0xac, 0x14, 0xc8, 0x0e, 0x84, 0xba, 0xe5, - 0x50, 0xb7, 0xa2, 0x4c, 0xcc, 0x4a, 0x73, 0xf9, 0x50, 0xb7, 0x82, 0x9e, 0x86, 0x9c, 0xd7, 0xa9, - 0x69, 0xfc, 0x17, 0x78, 0xfa, 0x9d, 0x46, 0x6e, 0x11, 0xe6, 0x49, 0x4e, 0xd0, 0x6d, 0xbd, 0x3e, - 0xa2, 0x82, 0xd7, 0xa9, 0xf1, 0xfa, 0xb8, 0x9a, 0x07, 0x7a, 0x9c, 0xa0, 0xd1, 0x0f, 0x14, 0x4b, - 0x6f, 0x49, 0x90, 0x3d, 0xb8, 0xe3, 0xd0, 0x1f, 0x34, 0xbd, 0xff, 0xe5, 0xcd, 0x15, 0x4e, 0x2f, - 0x2d, 0x2b, 0x25, 0xba, 0x20, 0x49, 0x15, 0x82, 0x50, 0xb7, 0xa2, 0x3c, 0x42, 0x17, 0x14, 0xe8, - 0x56, 0xd0, 0x02, 0xe4, 0x23, 0x0b, 0x5a, 0xa4, 0x9f, 0x5e, 0x74, 0xaf, 0x48, 0x52, 0x73, 0xe1, - 0x8a, 0x16, 0x57, 0xd3, 0x40, 0xd2, 0x9e, 0xfc, 0xf1, 0xef, 0x38, 0xa5, 0xcf, 0x27, 0x20, 0xc7, - 0x4e, 0x20, 0xe9, 0xaa, 0xc8, 0xad, 0xd8, 0x44, 0x7e, 0xcc, 0xdd, 0x18, 0x51, 0x85, 0x00, 0xa9, - 0x00, 0xcc, 0x94, 0x64, 0x38, 0xf3, 0x64, 0xf5, 0x99, 0xbf, 0x7f, 0xfb, 0xc2, 0x47, 0x4e, 0x7d, - 0x82, 0x48, 0xec, 0x16, 0x58, 0x7d, 0x9d, 0x3f, 0x34, 0x6d, 0xff, 0xd9, 0xc5, 0x2b, 0x24, 0xc0, - 0x21, 0x0b, 0x3a, 0x84, 0xcc, 0x9a, 0xee, 0xd1, 0xcf, 0xaf, 0xa8, 0xeb, 0xa9, 0xd5, 0xcb, 0x3f, - 0x7a, 0xfb, 0xc2, 0x52, 0x0c, 0x23, 0x2f, 0x7d, 0xf3, 0xdb, 0xc7, 0x84, 0xf5, 0xd2, 0x32, 0x81, - 0x5f, 0x1f, 0x51, 0x03, 0x2a, 0xb4, 0x28, 0x5c, 0xdd, 0xd1, 0x5b, 0xec, 0x1b, 0x93, 0xe4, 0xaa, - 0x7c, 0xf2, 0xf6, 0x85, 0xfc, 0xf6, 0x71, 0x28, 0x0f, 0x5d, 0x21, 0x57, 0xab, 0x19, 0x18, 0x65, - 0xae, 0xae, 0xae, 0xbf, 0x79, 0xaf, 0x38, 0xf2, 0xd6, 0xbd, 0xe2, 0xc8, 0xdf, 0xdd, 0x2b, 0x8e, - 0x7c, 0xef, 0x5e, 0x51, 0x7a, 0xef, 0x5e, 0x51, 0xfa, 0xe1, 0xbd, 0xa2, 0x74, 0xf7, 0xa4, 0x28, - 0x7d, 0xed, 0xa4, 0x28, 0x7d, 0xe3, 0xa4, 0x28, 0x7d, 0xfb, 0xa4, 0x28, 0xbd, 0x79, 0x52, 0x94, - 0xde, 0x3a, 0x29, 0x8e, 0x7c, 0xef, 0xa4, 0x28, 0x7d, 0xff, 0xa4, 0x38, 0xf2, 0xde, 0x49, 0x51, - 0xfa, 0xe1, 0x49, 0x71, 0xe4, 0xee, 0x3f, 0x16, 0x47, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0xfc, - 0x0a, 0x55, 0xbb, 0xf7, 0x31, 0x00, 0x00, + // 4041 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0xbf, 0xc0, 0x8b, 0x44, 0x1e, 0x52, 0x14, 0x04, 0xc9, 0xbb, 0x58, 0x39, 0xe6, 0x6a, 0x69, + 0x3b, 0x96, 0xed, 0x58, 0xb2, 0x75, 0xd9, 0x0b, 0xf7, 0x9f, 0x78, 0x48, 0x8a, 0xab, 0xd5, 0xfe, + 0x25, 0x51, 0x01, 0xa5, 0x78, 0x9d, 0x3e, 0x60, 0x20, 0xf0, 0x23, 0x85, 0x5d, 0x10, 0x60, 0x00, + 0x70, 0xd7, 0xf2, 0xd3, 0x76, 0xdc, 0xcb, 0x64, 0x3a, 0xbd, 0xa5, 0x9d, 0x69, 0xe2, 0x3a, 0x6e, + 0x9b, 0x99, 0xd6, 0x69, 0xd2, 0x4b, 0xd2, 0x4b, 0x9a, 0xe9, 0x53, 0x5f, 0xd2, 0xfa, 0xa9, 0xe3, + 0xbc, 0x75, 0x3a, 0x1d, 0x8f, 0x57, 0xf1, 0x4c, 0xd3, 0xd6, 0x6d, 0xdd, 0xc6, 0x33, 0xcd, 0xc4, + 0x2f, 0x9d, 0xef, 0x06, 0x80, 0x17, 0x2d, 0xa8, 0x4c, 0x9d, 0x3c, 0x49, 0x38, 0xe7, 0xfc, 0x7e, + 0x38, 0x38, 0xdf, 0xf9, 0xce, 0x39, 0xf8, 0x08, 0xf8, 0xde, 0x1a, 0xcc, 0xb7, 0x6c, 0xbb, 0x65, + 0xa2, 0xa5, 0x8e, 0x63, 0x7b, 0xf6, 0x41, 0xb7, 0xb9, 0xd4, 0x40, 0xae, 0xee, 0x18, 0x1d, 0xcf, + 0x76, 0x16, 0x89, 0x4c, 0x9a, 0xa2, 0x16, 0x8b, 0xdc, 0xa2, 0xb0, 0x0d, 0xd3, 0xd7, 0x0c, 0x13, + 0xad, 0xfb, 0x86, 0x75, 0xe4, 0x49, 0x97, 0x21, 0xd1, 0x34, 0x4c, 0x24, 0x0b, 0xf3, 0xf1, 0x85, + 0xcc, 0xf2, 0x63, 0x8b, 0x7d, 0xa0, 0xc5, 0x5e, 0xc4, 0x2e, 0x16, 0x2b, 0x04, 0x51, 0x78, 0x37, + 0x01, 0x33, 0x43, 0xb4, 0x92, 0x04, 0x09, 0x4b, 0x6b, 0x63, 0x46, 0x61, 0x21, 0xad, 0x90, 0xff, + 0x25, 0x19, 0x26, 0x3a, 0x9a, 0x7e, 0x5b, 0x6b, 0x21, 0x39, 0x46, 0xc4, 0xfc, 0x52, 0xca, 0x03, + 0x34, 0x50, 0x07, 0x59, 0x0d, 0x64, 0xe9, 0x47, 0x72, 0x7c, 0x3e, 0xbe, 0x90, 0x56, 0x42, 0x12, + 0xe9, 0x69, 0x98, 0xee, 0x74, 0x0f, 0x4c, 0x43, 0x57, 0x43, 0x66, 0x30, 0x1f, 0x5f, 0x48, 0x2a, + 0x22, 0x55, 0xac, 0x07, 0xc6, 0x4f, 0xc0, 0xd4, 0x5d, 0xa4, 0xdd, 0x0e, 0x9b, 0x66, 0x88, 0x69, + 0x0e, 0x8b, 0x43, 0x86, 0x15, 0xc8, 0xb6, 0x91, 0xeb, 0x6a, 0x2d, 0xa4, 0x7a, 0x47, 0x1d, 0x24, + 0x27, 0xc8, 0xd3, 0xcf, 0x0f, 0x3c, 0x7d, 0xff, 0x93, 0x67, 0x18, 0x6a, 0xef, 0xa8, 0x83, 0xa4, + 0x12, 0xa4, 0x91, 0xd5, 0x6d, 0x53, 0x86, 0xe4, 0x09, 0xf1, 0xab, 0x5a, 0xdd, 0x76, 0x3f, 0x4b, + 0x0a, 0xc3, 0x18, 0xc5, 0x84, 0x8b, 0x9c, 0x3b, 0x86, 0x8e, 0xe4, 0x71, 0x42, 0xf0, 0xc4, 0x00, + 0x41, 0x9d, 0xea, 0xfb, 0x39, 0x38, 0x4e, 0xaa, 0x40, 0x1a, 0xbd, 0xe4, 0x21, 0xcb, 0x35, 0x6c, + 0x4b, 0x9e, 0x20, 0x24, 0x8f, 0x0f, 0x59, 0x45, 0x64, 0x36, 0xfa, 0x29, 0x02, 0x9c, 0x74, 0x11, + 0x26, 0xec, 0x8e, 0x67, 0xd8, 0x96, 0x2b, 0xa7, 0xe6, 0x85, 0x85, 0xcc, 0xf2, 0xc7, 0x86, 0x26, + 0x42, 0x8d, 0xda, 0x28, 0xdc, 0x58, 0xda, 0x04, 0xd1, 0xb5, 0xbb, 0x8e, 0x8e, 0x54, 0xdd, 0x6e, + 0x20, 0xd5, 0xb0, 0x9a, 0xb6, 0x9c, 0x26, 0x04, 0xe7, 0x07, 0x1f, 0x84, 0x18, 0x56, 0xec, 0x06, + 0xda, 0xb4, 0x9a, 0xb6, 0x92, 0x73, 0x7b, 0xae, 0xa5, 0x33, 0x30, 0xee, 0x1e, 0x59, 0x9e, 0xf6, + 0x92, 0x9c, 0x25, 0x19, 0xc2, 0xae, 0x0a, 0xff, 0x93, 0x84, 0xa9, 0x51, 0x52, 0xec, 0x2a, 0x24, + 0x9b, 0xf8, 0x29, 0xe5, 0xd8, 0x69, 0x62, 0x40, 0x31, 0xbd, 0x41, 0x1c, 0xff, 0x31, 0x83, 0x58, + 0x82, 0x8c, 0x85, 0x5c, 0x0f, 0x35, 0x68, 0x46, 0xc4, 0x47, 0xcc, 0x29, 0xa0, 0xa0, 0xc1, 0x94, + 0x4a, 0xfc, 0x58, 0x29, 0x75, 0x13, 0xa6, 0x7c, 0x97, 0x54, 0x47, 0xb3, 0x5a, 0x3c, 0x37, 0x97, + 0xa2, 0x3c, 0x59, 0xac, 0x72, 0x9c, 0x82, 0x61, 0x4a, 0x0e, 0xf5, 0x5c, 0x4b, 0xeb, 0x00, 0xb6, + 0x85, 0xec, 0xa6, 0xda, 0x40, 0xba, 0x29, 0xa7, 0x4e, 0x88, 0x52, 0x0d, 0x9b, 0x0c, 0x44, 0xc9, + 0xa6, 0x52, 0xdd, 0x94, 0xae, 0x04, 0xa9, 0x36, 0x71, 0x42, 0xa6, 0x6c, 0xd3, 0x4d, 0x36, 0x90, + 0x6d, 0xfb, 0x90, 0x73, 0x10, 0xce, 0x7b, 0xd4, 0x60, 0x4f, 0x96, 0x26, 0x4e, 0x2c, 0x46, 0x3e, + 0x99, 0xc2, 0x60, 0xf4, 0xc1, 0x26, 0x9d, 0xf0, 0xa5, 0xf4, 0x28, 0xf8, 0x02, 0x95, 0xa4, 0x15, + 0x90, 0x2a, 0x94, 0xe5, 0xc2, 0x1d, 0xad, 0x8d, 0xe6, 0x2e, 0x43, 0xae, 0x37, 0x3c, 0xd2, 0x2c, + 0x24, 0x5d, 0x4f, 0x73, 0x3c, 0x92, 0x85, 0x49, 0x85, 0x5e, 0x48, 0x22, 0xc4, 0x91, 0xd5, 0x20, + 0x55, 0x2e, 0xa9, 0xe0, 0x7f, 0xe7, 0x2e, 0xc1, 0x64, 0xcf, 0xed, 0x47, 0x05, 0x16, 0xbe, 0x38, + 0x0e, 0xb3, 0xc3, 0x72, 0x6e, 0x68, 0xfa, 0x9f, 0x81, 0x71, 0xab, 0xdb, 0x3e, 0x40, 0x8e, 0x1c, + 0x27, 0x0c, 0xec, 0x4a, 0x2a, 0x41, 0xd2, 0xd4, 0x0e, 0x90, 0x29, 0x27, 0xe6, 0x85, 0x85, 0xdc, + 0xf2, 0xd3, 0x23, 0x65, 0xf5, 0xe2, 0x16, 0x86, 0x28, 0x14, 0x29, 0x7d, 0x0a, 0x12, 0xac, 0xc4, + 0x61, 0x86, 0xa7, 0x46, 0x63, 0xc0, 0xb9, 0xa8, 0x10, 0x9c, 0xf4, 0x30, 0xa4, 0xf1, 0x5f, 0x1a, + 0xdb, 0x71, 0xe2, 0x73, 0x0a, 0x0b, 0x70, 0x5c, 0xa5, 0x39, 0x48, 0x91, 0x34, 0x6b, 0x20, 0xde, + 0x1a, 0xfc, 0x6b, 0xbc, 0x30, 0x0d, 0xd4, 0xd4, 0xba, 0xa6, 0xa7, 0xde, 0xd1, 0xcc, 0x2e, 0x22, + 0x09, 0x93, 0x56, 0xb2, 0x4c, 0xf8, 0x19, 0x2c, 0x93, 0xce, 0x43, 0x86, 0x66, 0xa5, 0x61, 0x35, + 0xd0, 0x4b, 0xa4, 0xfa, 0x24, 0x15, 0x9a, 0xa8, 0x9b, 0x58, 0x82, 0x6f, 0x7f, 0xcb, 0xb5, 0x2d, + 0xbe, 0xb4, 0xe4, 0x16, 0x58, 0x40, 0x6e, 0x7f, 0xa9, 0xbf, 0xf0, 0x3d, 0x32, 0xfc, 0xf1, 0xfa, + 0x73, 0xb1, 0xf0, 0xad, 0x18, 0x24, 0xc8, 0x7e, 0x9b, 0x82, 0xcc, 0xde, 0x8b, 0xbb, 0x55, 0x75, + 0xbd, 0xb6, 0x5f, 0xde, 0xaa, 0x8a, 0x82, 0x94, 0x03, 0x20, 0x82, 0x6b, 0x5b, 0xb5, 0xd2, 0x9e, + 0x18, 0xf3, 0xaf, 0x37, 0x77, 0xf6, 0x2e, 0xae, 0x8a, 0x71, 0x1f, 0xb0, 0x4f, 0x05, 0x89, 0xb0, + 0xc1, 0xca, 0xb2, 0x98, 0x94, 0x44, 0xc8, 0x52, 0x82, 0xcd, 0x9b, 0xd5, 0xf5, 0x8b, 0xab, 0xe2, + 0x78, 0xaf, 0x64, 0x65, 0x59, 0x9c, 0x90, 0x26, 0x21, 0x4d, 0x24, 0xe5, 0x5a, 0x6d, 0x4b, 0x4c, + 0xf9, 0x9c, 0xf5, 0x3d, 0x65, 0x73, 0x67, 0x43, 0x4c, 0xfb, 0x9c, 0x1b, 0x4a, 0x6d, 0x7f, 0x57, + 0x04, 0x9f, 0x61, 0xbb, 0x5a, 0xaf, 0x97, 0x36, 0xaa, 0x62, 0xc6, 0xb7, 0x28, 0xbf, 0xb8, 0x57, + 0xad, 0x8b, 0xd9, 0x1e, 0xb7, 0x56, 0x96, 0xc5, 0x49, 0xff, 0x16, 0xd5, 0x9d, 0xfd, 0x6d, 0x31, + 0x27, 0x4d, 0xc3, 0x24, 0xbd, 0x05, 0x77, 0x62, 0xaa, 0x4f, 0x74, 0x71, 0x55, 0x14, 0x03, 0x47, + 0x28, 0xcb, 0x74, 0x8f, 0xe0, 0xe2, 0xaa, 0x28, 0x15, 0x2a, 0x90, 0x24, 0xd9, 0x25, 0x49, 0x90, + 0xdb, 0x2a, 0x95, 0xab, 0x5b, 0x6a, 0x6d, 0x77, 0x6f, 0xb3, 0xb6, 0x53, 0xda, 0x12, 0x85, 0x40, + 0xa6, 0x54, 0x3f, 0xbd, 0xbf, 0xa9, 0x54, 0xd7, 0xc5, 0x58, 0x58, 0xb6, 0x5b, 0x2d, 0xed, 0x55, + 0xd7, 0xc5, 0x78, 0x41, 0x87, 0xd9, 0x61, 0x75, 0x66, 0xe8, 0xce, 0x08, 0x2d, 0x71, 0xec, 0x84, + 0x25, 0x26, 0x5c, 0x03, 0x4b, 0xfc, 0x15, 0x01, 0x66, 0x86, 0xd4, 0xda, 0xa1, 0x37, 0x79, 0x1e, + 0x92, 0x34, 0x45, 0x69, 0xf7, 0x79, 0x72, 0x68, 0xd1, 0x26, 0x09, 0x3b, 0xd0, 0x81, 0x08, 0x2e, + 0xdc, 0x81, 0xe3, 0x27, 0x74, 0x60, 0x4c, 0x31, 0xe0, 0xe4, 0x2b, 0x02, 0xc8, 0x27, 0x71, 0x47, + 0x14, 0x8a, 0x58, 0x4f, 0xa1, 0xb8, 0xda, 0xef, 0xc0, 0x85, 0x93, 0x9f, 0x61, 0xc0, 0x8b, 0x37, + 0x04, 0x38, 0x33, 0x7c, 0x50, 0x19, 0xea, 0xc3, 0xa7, 0x60, 0xbc, 0x8d, 0xbc, 0x43, 0x9b, 0x37, + 0xeb, 0x8f, 0x0f, 0x69, 0x01, 0x58, 0xdd, 0x1f, 0x2b, 0x86, 0x0a, 0xf7, 0x90, 0xf8, 0x49, 0xd3, + 0x06, 0xf5, 0x66, 0xc0, 0xd3, 0xcf, 0xc7, 0xe0, 0xa1, 0xa1, 0xe4, 0x43, 0x1d, 0x7d, 0x04, 0xc0, + 0xb0, 0x3a, 0x5d, 0x8f, 0x36, 0x64, 0x5a, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0xae, 0x3d, 0x5d, + 0xcf, 0xd7, 0xc7, 0x89, 0x1e, 0xa8, 0x88, 0x18, 0x5c, 0x0e, 0x1c, 0x4d, 0x10, 0x47, 0xf3, 0x27, + 0x3c, 0xe9, 0x40, 0xaf, 0x7b, 0x16, 0x44, 0xdd, 0x34, 0x90, 0xe5, 0xa9, 0xae, 0xe7, 0x20, 0xad, + 0x6d, 0x58, 0x2d, 0x52, 0x80, 0x53, 0xc5, 0x64, 0x53, 0x33, 0x5d, 0xa4, 0x4c, 0x51, 0x75, 0x9d, + 0x6b, 0x31, 0x82, 0x74, 0x19, 0x27, 0x84, 0x18, 0xef, 0x41, 0x50, 0xb5, 0x8f, 0x28, 0x7c, 0x7d, + 0x02, 0x32, 0xa1, 0xb1, 0x4e, 0xba, 0x00, 0xd9, 0x5b, 0xda, 0x1d, 0x4d, 0xe5, 0xa3, 0x3a, 0x8d, + 0x44, 0x06, 0xcb, 0x76, 0xd9, 0xb8, 0xfe, 0x2c, 0xcc, 0x12, 0x13, 0xbb, 0xeb, 0x21, 0x47, 0xd5, + 0x4d, 0xcd, 0x75, 0x49, 0xd0, 0x52, 0xc4, 0x54, 0xc2, 0xba, 0x1a, 0x56, 0x55, 0xb8, 0x46, 0x5a, + 0x83, 0x19, 0x82, 0x68, 0x77, 0x4d, 0xcf, 0xe8, 0x98, 0x48, 0xc5, 0x2f, 0x0f, 0x2e, 0x29, 0xc4, + 0xbe, 0x67, 0xd3, 0xd8, 0x62, 0x9b, 0x19, 0x60, 0x8f, 0x5c, 0x69, 0x1d, 0x1e, 0x21, 0xb0, 0x16, + 0xb2, 0x90, 0xa3, 0x79, 0x48, 0x45, 0x9f, 0xeb, 0x6a, 0xa6, 0xab, 0x6a, 0x56, 0x43, 0x3d, 0xd4, + 0xdc, 0x43, 0x79, 0x16, 0x13, 0x94, 0x63, 0xb2, 0xa0, 0x9c, 0xc3, 0x86, 0x1b, 0xcc, 0xae, 0x4a, + 0xcc, 0x4a, 0x56, 0xe3, 0xba, 0xe6, 0x1e, 0x4a, 0x45, 0x38, 0x43, 0x58, 0x5c, 0xcf, 0x31, 0xac, + 0x96, 0xaa, 0x1f, 0x22, 0xfd, 0xb6, 0xda, 0xf5, 0x9a, 0x97, 0xe5, 0x87, 0xc3, 0xf7, 0x27, 0x1e, + 0xd6, 0x89, 0x4d, 0x05, 0x9b, 0xec, 0x7b, 0xcd, 0xcb, 0x52, 0x1d, 0xb2, 0x78, 0x31, 0xda, 0xc6, + 0xcb, 0x48, 0x6d, 0xda, 0x0e, 0xe9, 0x2c, 0xb9, 0x21, 0x3b, 0x3b, 0x14, 0xc1, 0xc5, 0x1a, 0x03, + 0x6c, 0xdb, 0x0d, 0x54, 0x4c, 0xd6, 0x77, 0xab, 0xd5, 0x75, 0x25, 0xc3, 0x59, 0xae, 0xd9, 0x0e, + 0x4e, 0xa8, 0x96, 0xed, 0x07, 0x38, 0x43, 0x13, 0xaa, 0x65, 0xf3, 0xf0, 0xae, 0xc1, 0x8c, 0xae, + 0xd3, 0x67, 0x36, 0x74, 0x95, 0x8d, 0xf8, 0xae, 0x2c, 0xf6, 0x04, 0x4b, 0xd7, 0x37, 0xa8, 0x01, + 0xcb, 0x71, 0x57, 0xba, 0x02, 0x0f, 0x05, 0xc1, 0x0a, 0x03, 0xa7, 0x07, 0x9e, 0xb2, 0x1f, 0xba, + 0x06, 0x33, 0x9d, 0xa3, 0x41, 0xa0, 0xd4, 0x73, 0xc7, 0xce, 0x51, 0x3f, 0xec, 0x71, 0xf2, 0xda, + 0xe6, 0x20, 0x5d, 0xf3, 0x50, 0x43, 0x3e, 0x1b, 0xb6, 0x0e, 0x29, 0xa4, 0x25, 0x10, 0x75, 0x5d, + 0x45, 0x96, 0x76, 0x60, 0x22, 0x55, 0x73, 0x90, 0xa5, 0xb9, 0xf2, 0xf9, 0xb0, 0x71, 0x4e, 0xd7, + 0xab, 0x44, 0x5b, 0x22, 0x4a, 0xe9, 0x29, 0x98, 0xb6, 0x0f, 0x6e, 0xe9, 0x34, 0xb3, 0xd4, 0x8e, + 0x83, 0x9a, 0xc6, 0x4b, 0xf2, 0x63, 0x24, 0x4c, 0x53, 0x58, 0x41, 0xf2, 0x6a, 0x97, 0x88, 0xa5, + 0x27, 0x41, 0xd4, 0xdd, 0x43, 0xcd, 0xe9, 0x90, 0xd6, 0xee, 0x76, 0x34, 0x1d, 0xc9, 0x8f, 0x53, + 0x53, 0x2a, 0xdf, 0xe1, 0x62, 0x9c, 0xd9, 0xee, 0x5d, 0xa3, 0xe9, 0x71, 0xc6, 0x27, 0x68, 0x66, + 0x13, 0x19, 0x63, 0xbb, 0x09, 0xb3, 0x5d, 0xcb, 0xb0, 0x3c, 0xe4, 0x74, 0x1c, 0x84, 0x87, 0x78, + 0xba, 0x13, 0xe5, 0x7f, 0x9e, 0x38, 0x61, 0x0c, 0xdf, 0x0f, 0x5b, 0xd3, 0x04, 0x50, 0x66, 0xba, + 0x83, 0xc2, 0x42, 0x11, 0xb2, 0xe1, 0xbc, 0x90, 0xd2, 0x40, 0x33, 0x43, 0x14, 0x70, 0x8f, 0xad, + 0xd4, 0xd6, 0x71, 0x77, 0xfc, 0x6c, 0x55, 0x8c, 0xe1, 0x2e, 0xbd, 0xb5, 0xb9, 0x57, 0x55, 0x95, + 0xfd, 0x9d, 0xbd, 0xcd, 0xed, 0xaa, 0x18, 0x7f, 0x2a, 0x9d, 0xfa, 0xfe, 0x84, 0x78, 0xef, 0xde, + 0xbd, 0x7b, 0xb1, 0xc2, 0x77, 0x62, 0x90, 0xeb, 0x9d, 0x8c, 0xa5, 0xff, 0x07, 0x67, 0xf9, 0x6b, + 0xac, 0x8b, 0x3c, 0xf5, 0xae, 0xe1, 0x90, 0x54, 0x6d, 0x6b, 0x74, 0xb6, 0xf4, 0xa3, 0x3c, 0xcb, + 0xac, 0xea, 0xc8, 0x7b, 0xc1, 0x70, 0x70, 0x22, 0xb6, 0x35, 0x4f, 0xda, 0x82, 0xf3, 0x96, 0xad, + 0xba, 0x9e, 0x66, 0x35, 0x34, 0xa7, 0xa1, 0x06, 0x07, 0x08, 0xaa, 0xa6, 0xeb, 0xc8, 0x75, 0x6d, + 0xda, 0x22, 0x7c, 0x96, 0x8f, 0x59, 0x76, 0x9d, 0x19, 0x07, 0xb5, 0xb3, 0xc4, 0x4c, 0xfb, 0x32, + 0x22, 0x7e, 0x52, 0x46, 0x3c, 0x0c, 0xe9, 0xb6, 0xd6, 0x51, 0x91, 0xe5, 0x39, 0x47, 0x64, 0x9e, + 0x4b, 0x29, 0xa9, 0xb6, 0xd6, 0xa9, 0xe2, 0xeb, 0x8f, 0x6e, 0x0d, 0xc2, 0x71, 0xfc, 0xa7, 0x38, + 0x64, 0xc3, 0x33, 0x1d, 0x1e, 0x91, 0x75, 0x52, 0xbf, 0x05, 0xb2, 0xc3, 0x1f, 0x7d, 0xe0, 0x04, + 0xb8, 0x58, 0xc1, 0x85, 0xbd, 0x38, 0x4e, 0x27, 0x2d, 0x85, 0x22, 0x71, 0x53, 0xc5, 0x7b, 0x1a, + 0xd1, 0xf9, 0x3d, 0xa5, 0xb0, 0x2b, 0x69, 0x03, 0xc6, 0x6f, 0xb9, 0x84, 0x7b, 0x9c, 0x70, 0x3f, + 0xf6, 0x60, 0xee, 0x1b, 0x75, 0x42, 0x9e, 0xbe, 0x51, 0x57, 0x77, 0x6a, 0xca, 0x76, 0x69, 0x4b, + 0x61, 0x70, 0xe9, 0x1c, 0x24, 0x4c, 0xed, 0xe5, 0xa3, 0xde, 0x16, 0x40, 0x44, 0xa3, 0x06, 0xfe, + 0x1c, 0x24, 0xee, 0x22, 0xed, 0x76, 0x6f, 0xe1, 0x25, 0xa2, 0x8f, 0x30, 0xf5, 0x97, 0x20, 0x49, + 0xe2, 0x25, 0x01, 0xb0, 0x88, 0x89, 0x63, 0x52, 0x0a, 0x12, 0x95, 0x9a, 0x82, 0xd3, 0x5f, 0x84, + 0x2c, 0x95, 0xaa, 0xbb, 0x9b, 0xd5, 0x4a, 0x55, 0x8c, 0x15, 0xd6, 0x60, 0x9c, 0x06, 0x01, 0x6f, + 0x0d, 0x3f, 0x0c, 0xe2, 0x18, 0xbb, 0x64, 0x1c, 0x02, 0xd7, 0xee, 0x6f, 0x97, 0xab, 0x8a, 0x18, + 0x0b, 0x2f, 0xaf, 0x0b, 0xd9, 0xf0, 0x38, 0xf7, 0x93, 0xc9, 0xa9, 0xbf, 0x16, 0x20, 0x13, 0x1a, + 0xcf, 0xf0, 0x60, 0xa0, 0x99, 0xa6, 0x7d, 0x57, 0xd5, 0x4c, 0x43, 0x73, 0x59, 0x52, 0x00, 0x11, + 0x95, 0xb0, 0x64, 0xd4, 0x45, 0xfb, 0x89, 0x38, 0xff, 0xba, 0x00, 0x62, 0xff, 0x68, 0xd7, 0xe7, + 0xa0, 0xf0, 0x53, 0x75, 0xf0, 0x35, 0x01, 0x72, 0xbd, 0xf3, 0x5c, 0x9f, 0x7b, 0x17, 0x7e, 0xaa, + 0xee, 0xbd, 0x13, 0x83, 0xc9, 0x9e, 0x29, 0x6e, 0x54, 0xef, 0x3e, 0x07, 0xd3, 0x46, 0x03, 0xb5, + 0x3b, 0xb6, 0x87, 0x2c, 0xfd, 0x48, 0x35, 0xd1, 0x1d, 0x64, 0xca, 0x05, 0x52, 0x28, 0x96, 0x1e, + 0x3c, 0x27, 0x2e, 0x6e, 0x06, 0xb8, 0x2d, 0x0c, 0x2b, 0xce, 0x6c, 0xae, 0x57, 0xb7, 0x77, 0x6b, + 0x7b, 0xd5, 0x9d, 0xca, 0x8b, 0xea, 0xfe, 0xce, 0xff, 0xdf, 0xa9, 0xbd, 0xb0, 0xa3, 0x88, 0x46, + 0x9f, 0xd9, 0x47, 0xb8, 0xd5, 0x77, 0x41, 0xec, 0x77, 0x4a, 0x3a, 0x0b, 0xc3, 0xdc, 0x12, 0xc7, + 0xa4, 0x19, 0x98, 0xda, 0xa9, 0xa9, 0xf5, 0xcd, 0xf5, 0xaa, 0x5a, 0xbd, 0x76, 0xad, 0x5a, 0xd9, + 0xab, 0xd3, 0x17, 0x67, 0xdf, 0x7a, 0xaf, 0x77, 0x53, 0xbf, 0x1a, 0x87, 0x99, 0x21, 0x9e, 0x48, + 0x25, 0x36, 0xb3, 0xd3, 0xd7, 0x88, 0x67, 0x46, 0xf1, 0x7e, 0x11, 0x4f, 0x05, 0xbb, 0x9a, 0xe3, + 0xb1, 0x11, 0xff, 0x49, 0xc0, 0x51, 0xb2, 0x3c, 0xa3, 0x69, 0x20, 0x87, 0x9d, 0x33, 0xd0, 0x41, + 0x7e, 0x2a, 0x90, 0xd3, 0xa3, 0x86, 0x4f, 0x80, 0xd4, 0xb1, 0x5d, 0xc3, 0x33, 0xee, 0x20, 0xd5, + 0xb0, 0xf8, 0xa1, 0x04, 0x1e, 0xec, 0x13, 0x8a, 0xc8, 0x35, 0x9b, 0x96, 0xe7, 0x5b, 0x5b, 0xa8, + 0xa5, 0xf5, 0x59, 0xe3, 0x02, 0x1e, 0x57, 0x44, 0xae, 0xf1, 0xad, 0x2f, 0x40, 0xb6, 0x61, 0x77, + 0xf1, 0x98, 0x44, 0xed, 0x70, 0xbf, 0x10, 0x94, 0x0c, 0x95, 0xf9, 0x26, 0x6c, 0x8e, 0x0d, 0x4e, + 0x43, 0xb2, 0x4a, 0x86, 0xca, 0xa8, 0xc9, 0x13, 0x30, 0xa5, 0xb5, 0x5a, 0x0e, 0x26, 0xe7, 0x44, + 0x74, 0x32, 0xcf, 0xf9, 0x62, 0x62, 0x38, 0x77, 0x03, 0x52, 0x3c, 0x0e, 0xb8, 0x25, 0xe3, 0x48, + 0xa8, 0x1d, 0x7a, 0x26, 0x15, 0x5b, 0x48, 0x2b, 0x29, 0x8b, 0x2b, 0x2f, 0x40, 0xd6, 0x70, 0xd5, + 0xe0, 0x70, 0x34, 0x36, 0x1f, 0x5b, 0x48, 0x29, 0x19, 0xc3, 0xf5, 0x4f, 0xc3, 0x0a, 0x6f, 0xc4, + 0x20, 0xd7, 0x7b, 0xb8, 0x2b, 0xad, 0x43, 0xca, 0xb4, 0x75, 0x8d, 0xa4, 0x16, 0xfd, 0x65, 0x61, + 0x21, 0xe2, 0x3c, 0x78, 0x71, 0x8b, 0xd9, 0x2b, 0x3e, 0x72, 0xee, 0xef, 0x05, 0x48, 0x71, 0xb1, + 0x74, 0x06, 0x12, 0x1d, 0xcd, 0x3b, 0x24, 0x74, 0xc9, 0x72, 0x4c, 0x14, 0x14, 0x72, 0x8d, 0xe5, + 0x6e, 0x47, 0xb3, 0x48, 0x0a, 0x30, 0x39, 0xbe, 0xc6, 0xeb, 0x6a, 0x22, 0xad, 0x41, 0xc6, 0x7e, + 0xbb, 0xdd, 0x46, 0x96, 0xe7, 0xf2, 0x75, 0x65, 0xf2, 0x0a, 0x13, 0x4b, 0x4f, 0xc3, 0xb4, 0xe7, + 0x68, 0x86, 0xd9, 0x63, 0x9b, 0x20, 0xb6, 0x22, 0x57, 0xf8, 0xc6, 0x45, 0x38, 0xc7, 0x79, 0x1b, + 0xc8, 0xd3, 0xf4, 0x43, 0xd4, 0x08, 0x40, 0xe3, 0xe4, 0xe4, 0xf0, 0x2c, 0x33, 0x58, 0x67, 0x7a, + 0x8e, 0x2d, 0x7c, 0x57, 0x80, 0x69, 0xfe, 0xa2, 0xd2, 0xf0, 0x83, 0xb5, 0x0d, 0xa0, 0x59, 0x96, + 0xed, 0x85, 0xc3, 0x35, 0x98, 0xca, 0x03, 0xb8, 0xc5, 0x92, 0x0f, 0x52, 0x42, 0x04, 0x73, 0x6d, + 0x80, 0x40, 0x73, 0x62, 0xd8, 0xce, 0x43, 0x86, 0x9d, 0xdc, 0x93, 0x9f, 0x7f, 0xe8, 0xab, 0x2d, + 0x50, 0x11, 0x7e, 0xa3, 0x91, 0x66, 0x21, 0x79, 0x80, 0x5a, 0x86, 0xc5, 0xce, 0x13, 0xe9, 0x05, + 0x3f, 0xa5, 0x4c, 0xf8, 0xa7, 0x94, 0xe5, 0x9b, 0x30, 0xa3, 0xdb, 0xed, 0x7e, 0x77, 0xcb, 0x62, + 0xdf, 0xeb, 0xb5, 0x7b, 0x5d, 0xf8, 0x2c, 0x04, 0x23, 0xe6, 0x57, 0x62, 0xf1, 0x8d, 0xdd, 0xf2, + 0xd7, 0x62, 0x73, 0x1b, 0x14, 0xb7, 0xcb, 0x1f, 0x53, 0x41, 0x4d, 0x13, 0xe9, 0xd8, 0x75, 0xf8, + 0xc1, 0xc7, 0xe1, 0x99, 0x96, 0xe1, 0x1d, 0x76, 0x0f, 0x16, 0x75, 0xbb, 0xbd, 0xd4, 0xb2, 0x5b, + 0x76, 0xf0, 0x73, 0x17, 0xbe, 0x22, 0x17, 0xe4, 0x3f, 0xf6, 0x93, 0x57, 0xda, 0x97, 0xce, 0x45, + 0xfe, 0x3e, 0x56, 0xdc, 0x81, 0x19, 0x66, 0xac, 0x92, 0x33, 0x77, 0xfa, 0x6a, 0x20, 0x3d, 0xf0, + 0xdc, 0x45, 0xfe, 0xe6, 0xbb, 0xa4, 0x57, 0x2b, 0xd3, 0x0c, 0x8a, 0x75, 0xf4, 0x05, 0xa2, 0xa8, + 0xc0, 0x43, 0x3d, 0x7c, 0x74, 0x5f, 0x22, 0x27, 0x82, 0xf1, 0x3b, 0x8c, 0x71, 0x26, 0xc4, 0x58, + 0x67, 0xd0, 0x62, 0x05, 0x26, 0x4f, 0xc3, 0xf5, 0xb7, 0x8c, 0x2b, 0x8b, 0xc2, 0x24, 0x1b, 0x30, + 0x45, 0x48, 0xf4, 0xae, 0xeb, 0xd9, 0x6d, 0x52, 0xf4, 0x1e, 0x4c, 0xf3, 0x77, 0xef, 0xd2, 0x8d, + 0x92, 0xc3, 0xb0, 0x8a, 0x8f, 0x2a, 0x16, 0x81, 0xfc, 0xcc, 0xd0, 0x40, 0xba, 0x19, 0xc1, 0xf0, + 0x26, 0x73, 0xc4, 0xb7, 0x2f, 0x7e, 0x06, 0x66, 0xf1, 0xff, 0xa4, 0x26, 0x85, 0x3d, 0x89, 0x3e, + 0x65, 0x92, 0xbf, 0xfb, 0x0a, 0xdd, 0x8b, 0x33, 0x3e, 0x41, 0xc8, 0xa7, 0xd0, 0x2a, 0xb6, 0x90, + 0xe7, 0x21, 0xc7, 0x55, 0x35, 0x73, 0x98, 0x7b, 0xa1, 0xd7, 0x74, 0xf9, 0x4b, 0xef, 0xf5, 0xae, + 0xe2, 0x06, 0x45, 0x96, 0x4c, 0xb3, 0xb8, 0x0f, 0x67, 0x87, 0x64, 0xc5, 0x08, 0x9c, 0xaf, 0x32, + 0xce, 0xd9, 0x81, 0xcc, 0xc0, 0xb4, 0xbb, 0xc0, 0xe5, 0xfe, 0x5a, 0x8e, 0xc0, 0xf9, 0xdb, 0x8c, + 0x53, 0x62, 0x58, 0xbe, 0xa4, 0x98, 0xf1, 0x06, 0x4c, 0xdf, 0x41, 0xce, 0x81, 0xed, 0xb2, 0xa3, + 0x91, 0x11, 0xe8, 0x5e, 0x63, 0x74, 0x53, 0x0c, 0x48, 0xce, 0x4a, 0x30, 0xd7, 0x15, 0x48, 0x35, + 0x35, 0x1d, 0x8d, 0x40, 0xf1, 0x65, 0x46, 0x31, 0x81, 0xed, 0x31, 0xb4, 0x04, 0xd9, 0x96, 0xcd, + 0xda, 0x52, 0x34, 0xfc, 0x75, 0x06, 0xcf, 0x70, 0x0c, 0xa3, 0xe8, 0xd8, 0x9d, 0xae, 0x89, 0x7b, + 0x56, 0x34, 0xc5, 0xef, 0x70, 0x0a, 0x8e, 0x61, 0x14, 0xa7, 0x08, 0xeb, 0xef, 0x72, 0x0a, 0x37, + 0x14, 0xcf, 0xe7, 0x21, 0x63, 0x5b, 0xe6, 0x91, 0x6d, 0x8d, 0xe2, 0xc4, 0xef, 0x31, 0x06, 0x60, + 0x10, 0x4c, 0x70, 0x15, 0xd2, 0xa3, 0x2e, 0xc4, 0xef, 0xbf, 0xc7, 0xb7, 0x07, 0x5f, 0x81, 0x0d, + 0x98, 0xe2, 0x05, 0xca, 0xb0, 0xad, 0x11, 0x28, 0xfe, 0x80, 0x51, 0xe4, 0x42, 0x30, 0xf6, 0x18, + 0x1e, 0x72, 0xbd, 0x16, 0x1a, 0x85, 0xe4, 0x0d, 0xfe, 0x18, 0x0c, 0xc2, 0x42, 0x79, 0x80, 0x2c, + 0xfd, 0x70, 0x34, 0x86, 0xaf, 0xf2, 0x50, 0x72, 0x0c, 0xa6, 0xa8, 0xc0, 0x64, 0x5b, 0x73, 0xdc, + 0x43, 0xcd, 0x1c, 0x69, 0x39, 0xfe, 0x90, 0x71, 0x64, 0x7d, 0x10, 0x8b, 0x48, 0xd7, 0x3a, 0x0d, + 0xcd, 0xd7, 0x78, 0x44, 0x42, 0x30, 0xb6, 0xf5, 0x5c, 0x8f, 0x1c, 0x40, 0x9d, 0x86, 0xed, 0xeb, + 0x7c, 0xeb, 0x51, 0xec, 0x76, 0x98, 0xf1, 0x2a, 0xa4, 0x5d, 0xe3, 0xe5, 0x91, 0x68, 0xfe, 0x88, + 0xaf, 0x34, 0x01, 0x60, 0xf0, 0x8b, 0x70, 0x6e, 0x68, 0x9b, 0x18, 0x81, 0xec, 0x8f, 0x19, 0xd9, + 0x99, 0x21, 0xad, 0x82, 0x95, 0x84, 0xd3, 0x52, 0xfe, 0x09, 0x2f, 0x09, 0xa8, 0x8f, 0x6b, 0x17, + 0xbf, 0x28, 0xb8, 0x5a, 0xf3, 0x74, 0x51, 0xfb, 0x53, 0x1e, 0x35, 0x8a, 0xed, 0x89, 0xda, 0x1e, + 0x9c, 0x61, 0x8c, 0xa7, 0x5b, 0xd7, 0x6f, 0xf0, 0xc2, 0x4a, 0xd1, 0xfb, 0xbd, 0xab, 0xfb, 0x33, + 0x30, 0xe7, 0x87, 0x93, 0x4f, 0xa4, 0xae, 0xda, 0xd6, 0x3a, 0x23, 0x30, 0x7f, 0x93, 0x31, 0xf3, + 0x8a, 0xef, 0x8f, 0xb4, 0xee, 0xb6, 0xd6, 0xc1, 0xe4, 0x37, 0x41, 0xe6, 0xe4, 0x5d, 0xcb, 0x41, + 0xba, 0xdd, 0xb2, 0x8c, 0x97, 0x51, 0x63, 0x04, 0xea, 0x3f, 0xeb, 0x5b, 0xaa, 0xfd, 0x10, 0x1c, + 0x33, 0x6f, 0x82, 0xe8, 0xcf, 0x2a, 0xaa, 0xd1, 0xee, 0xd8, 0x8e, 0x17, 0xc1, 0xf8, 0xe7, 0x7c, + 0xa5, 0x7c, 0xdc, 0x26, 0x81, 0x15, 0xab, 0x90, 0x23, 0x97, 0xa3, 0xa6, 0xe4, 0x5f, 0x30, 0xa2, + 0xc9, 0x00, 0xc5, 0x0a, 0x87, 0x6e, 0xb7, 0x3b, 0x9a, 0x33, 0x4a, 0xfd, 0xfb, 0x4b, 0x5e, 0x38, + 0x18, 0x84, 0x15, 0x0e, 0xef, 0xa8, 0x83, 0x70, 0xb7, 0x1f, 0x81, 0xe1, 0x5b, 0xbc, 0x70, 0x70, + 0x0c, 0xa3, 0xe0, 0x03, 0xc3, 0x08, 0x14, 0x7f, 0xc5, 0x29, 0x38, 0x06, 0x53, 0x7c, 0x3a, 0x68, + 0xb4, 0x0e, 0x6a, 0x19, 0xae, 0xe7, 0xd0, 0x39, 0xf8, 0xc1, 0x54, 0xdf, 0x7e, 0xaf, 0x77, 0x08, + 0x53, 0x42, 0xd0, 0xe2, 0x0d, 0x98, 0xea, 0x1b, 0x31, 0xa4, 0xa8, 0x6f, 0x16, 0xe4, 0x9f, 0xfd, + 0x80, 0x15, 0xa3, 0xde, 0x09, 0xa3, 0xb8, 0x85, 0xd7, 0xbd, 0x77, 0x0e, 0x88, 0x26, 0x7b, 0xe5, + 0x03, 0x7f, 0xe9, 0x7b, 0xc6, 0x80, 0xe2, 0x35, 0x98, 0xec, 0x99, 0x01, 0xa2, 0xa9, 0x7e, 0x8e, + 0x51, 0x65, 0xc3, 0x23, 0x40, 0x71, 0x0d, 0x12, 0xb8, 0x9f, 0x47, 0xc3, 0x7f, 0x9e, 0xc1, 0x89, + 0x79, 0xf1, 0x93, 0x90, 0xe2, 0x7d, 0x3c, 0x1a, 0xfa, 0x0b, 0x0c, 0xea, 0x43, 0x30, 0x9c, 0xf7, + 0xf0, 0x68, 0xf8, 0x2f, 0x72, 0x38, 0x87, 0x60, 0xf8, 0xe8, 0x21, 0xfc, 0x9b, 0x5f, 0x4a, 0xb0, + 0x3a, 0xcc, 0x63, 0x77, 0x15, 0x26, 0x58, 0xf3, 0x8e, 0x46, 0x7f, 0x9e, 0xdd, 0x9c, 0x23, 0x8a, + 0x97, 0x20, 0x39, 0x62, 0xc0, 0x7f, 0x99, 0x41, 0xa9, 0x7d, 0xb1, 0x02, 0x99, 0x50, 0xc3, 0x8e, + 0x86, 0xff, 0x0a, 0x83, 0x87, 0x51, 0xd8, 0x75, 0xd6, 0xb0, 0xa3, 0x09, 0x7e, 0x95, 0xbb, 0xce, + 0x10, 0x38, 0x6c, 0xbc, 0x57, 0x47, 0xa3, 0x7f, 0x8d, 0x47, 0x9d, 0x43, 0x8a, 0xcf, 0x43, 0xda, + 0xaf, 0xbf, 0xd1, 0xf8, 0x5f, 0x67, 0xf8, 0x00, 0x83, 0x23, 0x10, 0xaa, 0xff, 0xd1, 0x14, 0x5f, + 0xe0, 0x11, 0x08, 0xa1, 0xf0, 0x36, 0xea, 0xef, 0xe9, 0xd1, 0x4c, 0xbf, 0xc1, 0xb7, 0x51, 0x5f, + 0x4b, 0xc7, 0xab, 0x49, 0xca, 0x60, 0x34, 0xc5, 0x6f, 0xf2, 0xd5, 0x24, 0xf6, 0xd8, 0x8d, 0xfe, + 0x26, 0x19, 0xcd, 0xf1, 0x5b, 0xdc, 0x8d, 0xbe, 0x1e, 0x59, 0xdc, 0x05, 0x69, 0xb0, 0x41, 0x46, + 0xf3, 0x7d, 0x91, 0xf1, 0x4d, 0x0f, 0xf4, 0xc7, 0xe2, 0x0b, 0x70, 0x66, 0x78, 0x73, 0x8c, 0x66, + 0xfd, 0xd2, 0x07, 0x7d, 0xaf, 0x33, 0xe1, 0xde, 0x58, 0xdc, 0x0b, 0xaa, 0x6c, 0xb8, 0x31, 0x46, + 0xd3, 0xbe, 0xfa, 0x41, 0x6f, 0xa1, 0x0d, 0xf7, 0xc5, 0x62, 0x09, 0x20, 0xe8, 0x49, 0xd1, 0x5c, + 0xaf, 0x31, 0xae, 0x10, 0x08, 0x6f, 0x0d, 0xd6, 0x92, 0xa2, 0xf1, 0x5f, 0xe6, 0x5b, 0x83, 0x21, + 0xf0, 0xd6, 0xe0, 0xdd, 0x28, 0x1a, 0xfd, 0x3a, 0xdf, 0x1a, 0x1c, 0x52, 0xbc, 0x0a, 0x29, 0xab, + 0x6b, 0x9a, 0x38, 0xb7, 0xa4, 0x07, 0x7f, 0x46, 0x24, 0xff, 0xcb, 0x87, 0x0c, 0xcc, 0x01, 0xc5, + 0x35, 0x48, 0xa2, 0xf6, 0x01, 0x6a, 0x44, 0x21, 0xff, 0xf5, 0x43, 0x5e, 0x4f, 0xb0, 0x75, 0xf1, + 0x79, 0x00, 0xfa, 0x32, 0x4d, 0x7e, 0x25, 0x8a, 0xc0, 0xfe, 0xdb, 0x87, 0xec, 0x0b, 0x85, 0x00, + 0x12, 0x10, 0xd0, 0xef, 0x1d, 0x1e, 0x4c, 0xf0, 0x5e, 0x2f, 0x01, 0x79, 0x01, 0xbf, 0x02, 0x13, + 0xb7, 0x5c, 0xdb, 0xf2, 0xb4, 0x56, 0x14, 0xfa, 0xdf, 0x19, 0x9a, 0xdb, 0xe3, 0x80, 0xb5, 0x6d, + 0x07, 0x79, 0x5a, 0xcb, 0x8d, 0xc2, 0xfe, 0x07, 0xc3, 0xfa, 0x00, 0x0c, 0xd6, 0x35, 0xd7, 0x1b, + 0xe5, 0xb9, 0xff, 0x93, 0x83, 0x39, 0x00, 0x3b, 0x8d, 0xff, 0xbf, 0x8d, 0x8e, 0xa2, 0xb0, 0xef, + 0x73, 0xa7, 0x99, 0x7d, 0xf1, 0x93, 0x90, 0xc6, 0xff, 0xd2, 0xaf, 0x76, 0x22, 0xc0, 0xff, 0xc5, + 0xc0, 0x01, 0x02, 0xdf, 0xd9, 0xf5, 0x1a, 0x9e, 0x11, 0x1d, 0xec, 0xff, 0x66, 0x2b, 0xcd, 0xed, + 0x8b, 0x25, 0xc8, 0xb8, 0x5e, 0xa3, 0xd1, 0x65, 0x13, 0x4d, 0x04, 0xfc, 0x07, 0x1f, 0xfa, 0x2f, + 0xb9, 0x3e, 0xa6, 0x7c, 0x61, 0xf8, 0x61, 0x1d, 0x6c, 0xd8, 0x1b, 0x36, 0x3d, 0xa6, 0x83, 0x1f, + 0xa5, 0x60, 0x4e, 0xb7, 0xdb, 0x07, 0xb6, 0xbb, 0xe4, 0x17, 0x92, 0x25, 0xdb, 0x62, 0xd6, 0x52, + 0xdc, 0xb6, 0xd0, 0xdc, 0xe9, 0x8e, 0xe5, 0x0a, 0xe7, 0x20, 0x59, 0xef, 0x1e, 0x1c, 0x1c, 0x49, + 0x22, 0xc4, 0xdd, 0xee, 0x01, 0xfb, 0xae, 0x04, 0xff, 0x5b, 0x78, 0x3b, 0x0e, 0x93, 0x25, 0xd3, + 0xdc, 0x3b, 0xea, 0x20, 0xb7, 0x66, 0xa1, 0x5a, 0x53, 0x92, 0x61, 0x9c, 0x3c, 0xc7, 0x73, 0xc4, + 0x4c, 0xb8, 0x3e, 0xa6, 0xb0, 0x6b, 0x5f, 0xb3, 0x4c, 0x4e, 0x2b, 0x63, 0xbe, 0x66, 0xd9, 0xd7, + 0xac, 0xd0, 0xc3, 0x4a, 0x5f, 0xb3, 0xe2, 0x6b, 0x56, 0xc9, 0x91, 0x65, 0xdc, 0xd7, 0xac, 0xfa, + 0x9a, 0x35, 0x72, 0x24, 0x3f, 0xe9, 0x6b, 0xd6, 0x7c, 0xcd, 0x45, 0x72, 0x08, 0x9f, 0xf0, 0x35, + 0x17, 0x7d, 0xcd, 0x25, 0x72, 0xf6, 0x3e, 0xed, 0x6b, 0x2e, 0xf9, 0x9a, 0xcb, 0xe4, 0xbc, 0x5d, + 0xf2, 0x35, 0x97, 0x7d, 0xcd, 0x15, 0xf2, 0x01, 0xc9, 0x84, 0xaf, 0xb9, 0x22, 0xcd, 0xc1, 0x04, + 0x7d, 0xb2, 0x67, 0xc9, 0x8f, 0xb2, 0x53, 0xd7, 0xc7, 0x14, 0x2e, 0x08, 0x74, 0xcf, 0x91, 0x8f, + 0x44, 0xc6, 0x03, 0xdd, 0x73, 0x81, 0x6e, 0x99, 0x7c, 0x2a, 0x2d, 0x06, 0xba, 0xe5, 0x40, 0xb7, + 0x22, 0x4f, 0xe2, 0xe5, 0x0f, 0x74, 0x2b, 0x81, 0x6e, 0x55, 0xce, 0xe1, 0x15, 0x08, 0x74, 0xab, + 0x81, 0x6e, 0x4d, 0x9e, 0x9a, 0x17, 0x16, 0xb2, 0x81, 0x6e, 0x4d, 0x7a, 0x06, 0x32, 0x6e, 0xf7, + 0x40, 0x65, 0xdf, 0x10, 0x90, 0x8f, 0x51, 0x32, 0xcb, 0xb0, 0x88, 0x73, 0x82, 0x2c, 0xeb, 0xf5, + 0x31, 0x05, 0xdc, 0xee, 0x01, 0xab, 0x8f, 0xe5, 0x2c, 0x90, 0xe3, 0x04, 0x95, 0x7c, 0x82, 0x59, + 0x78, 0x4b, 0x80, 0xf4, 0xde, 0x5d, 0x9b, 0xfc, 0x24, 0xeb, 0xfe, 0x1f, 0x2f, 0x2e, 0x77, 0x7a, + 0x65, 0x95, 0xfc, 0x6a, 0x96, 0xbe, 0x2e, 0x28, 0x5c, 0x10, 0xe8, 0xd6, 0xe4, 0x47, 0xc9, 0x03, + 0xf9, 0xba, 0x35, 0x69, 0x09, 0xb2, 0xa1, 0x07, 0x5a, 0x26, 0xdf, 0x97, 0xf4, 0x3e, 0x91, 0xa0, + 0x64, 0x82, 0x27, 0x5a, 0x2e, 0x27, 0x01, 0xa7, 0x3d, 0xfe, 0xe3, 0xdd, 0xb5, 0x0b, 0x5f, 0x88, + 0x41, 0x86, 0x9e, 0x40, 0x92, 0xa7, 0xc2, 0xb7, 0xa2, 0x13, 0xf9, 0x11, 0x73, 0x63, 0x4c, 0xe1, + 0x02, 0x49, 0x01, 0xa0, 0xa6, 0x38, 0xc3, 0xa9, 0x27, 0xe5, 0x67, 0xff, 0xf1, 0xed, 0xf3, 0x9f, + 0x38, 0x71, 0x07, 0xe1, 0xd8, 0x2d, 0xd1, 0xfa, 0xba, 0xb8, 0x6f, 0x58, 0xde, 0x73, 0xcb, 0x97, + 0x71, 0x80, 0x03, 0x16, 0x69, 0x1f, 0x52, 0x15, 0xcd, 0x25, 0x1f, 0x98, 0x11, 0xd7, 0x13, 0xe5, + 0x4b, 0x3f, 0x7a, 0xfb, 0xfc, 0x4a, 0x04, 0x23, 0x2b, 0x7d, 0x8b, 0xdb, 0x47, 0x98, 0xf5, 0xe2, + 0x2a, 0x86, 0x5f, 0x1f, 0x53, 0x7c, 0x2a, 0x69, 0x99, 0xbb, 0xba, 0xa3, 0xb5, 0xe9, 0x87, 0x34, + 0xf1, 0xb2, 0x78, 0xfc, 0xf6, 0xf9, 0xec, 0xf6, 0x51, 0x20, 0x0f, 0x5c, 0xc1, 0x57, 0xe5, 0x14, + 0x8c, 0x53, 0x57, 0xcb, 0xeb, 0x6f, 0xde, 0xcf, 0x8f, 0xbd, 0x75, 0x3f, 0x3f, 0xf6, 0x0f, 0xf7, + 0xf3, 0x63, 0xef, 0xdc, 0xcf, 0x0b, 0xef, 0xdf, 0xcf, 0x0b, 0x3f, 0xbc, 0x9f, 0x17, 0xee, 0x1d, + 0xe7, 0x85, 0xaf, 0x1e, 0xe7, 0x85, 0x6f, 0x1c, 0xe7, 0x85, 0x6f, 0x1f, 0xe7, 0x85, 0x37, 0x8f, + 0xf3, 0xc2, 0x5b, 0xc7, 0xf9, 0xb1, 0x77, 0x8e, 0xf3, 0xc2, 0xf7, 0x8f, 0xf3, 0x63, 0xef, 0x1f, + 0xe7, 0x85, 0x1f, 0x1e, 0xe7, 0xc7, 0xee, 0x7d, 0x2f, 0x3f, 0xf6, 0xbf, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x91, 0x3b, 0x4f, 0xd7, 0xd9, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/neither/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/neither/one.pb.go index 82f666c83..04d34106f 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/neither/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/neither/one.pb.go @@ -985,253 +985,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3929 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0x22, 0xcd, 0x9c, 0x19, 0x8d, 0xa8, 0x5f, 0xca, 0x9a, 0x2b, 0xc7, 0xb3, 0xda, - 0xb1, 0x1d, 0xcb, 0x76, 0x2c, 0xd9, 0xba, 0xec, 0x65, 0xb6, 0x89, 0x31, 0x92, 0xc6, 0x5a, 0x2d, - 0x74, 0x0b, 0x25, 0x25, 0x76, 0xf2, 0x40, 0x70, 0x38, 0xff, 0x8c, 0xb8, 0xcb, 0x21, 0xa7, 0x24, - 0x67, 0xd7, 0xf2, 0xd3, 0x06, 0xee, 0x05, 0x41, 0xd0, 0x5b, 0x5a, 0xa0, 0x89, 0xe3, 0xb8, 0x69, - 0x80, 0xd6, 0x69, 0x7a, 0x4b, 0x7a, 0x49, 0x83, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x0a, 0xe7, 0xad, - 0x28, 0x0a, 0x23, 0xab, 0x1a, 0x68, 0xda, 0xba, 0xad, 0xdb, 0x18, 0xa8, 0x51, 0xbf, 0x14, 0xff, - 0x8d, 0xe4, 0x5c, 0xb4, 0x1c, 0x05, 0x4d, 0xd2, 0x27, 0x89, 0xe7, 0x9c, 0xef, 0xe3, 0xf9, 0xcf, - 0x7f, 0x78, 0xce, 0xe1, 0x3f, 0x84, 0xcf, 0x2e, 0xc3, 0x6c, 0xd3, 0x71, 0x9a, 0x16, 0x5e, 0x68, - 0xbb, 0x8e, 0xef, 0xd4, 0x3a, 0x8d, 0x85, 0x3a, 0xf6, 0x0c, 0xd7, 0x6c, 0xfb, 0x8e, 0x3b, 0x4f, - 0x65, 0x68, 0x82, 0x59, 0xcc, 0x0b, 0x8b, 0xd2, 0x36, 0x4c, 0x3e, 0x67, 0x5a, 0x78, 0x3d, 0x30, - 0xdc, 0xc7, 0x3e, 0xba, 0x02, 0xa9, 0x86, 0x69, 0x61, 0x45, 0x9a, 0x4d, 0xce, 0xe5, 0x16, 0x1f, - 0x99, 0xef, 0x01, 0xcd, 0x77, 0x23, 0xf6, 0x88, 0x58, 0xa5, 0x88, 0xd2, 0xdb, 0x29, 0x98, 0x1a, - 0xa0, 0x45, 0x08, 0x52, 0xb6, 0xde, 0x22, 0x8c, 0xd2, 0x5c, 0x56, 0xa5, 0xff, 0x23, 0x05, 0xc6, - 0xda, 0xba, 0x71, 0x4b, 0x6f, 0x62, 0x25, 0x41, 0xc5, 0xe2, 0x12, 0x15, 0x01, 0xea, 0xb8, 0x8d, - 0xed, 0x3a, 0xb6, 0x8d, 0x63, 0x25, 0x39, 0x9b, 0x9c, 0xcb, 0xaa, 0x11, 0x09, 0x7a, 0x12, 0x26, - 0xdb, 0x9d, 0x9a, 0x65, 0x1a, 0x5a, 0xc4, 0x0c, 0x66, 0x93, 0x73, 0x69, 0x55, 0x66, 0x8a, 0xf5, - 0xd0, 0xf8, 0x31, 0x98, 0xb8, 0x83, 0xf5, 0x5b, 0x51, 0xd3, 0x1c, 0x35, 0x2d, 0x10, 0x71, 0xc4, - 0x70, 0x0d, 0xf2, 0x2d, 0xec, 0x79, 0x7a, 0x13, 0x6b, 0xfe, 0x71, 0x1b, 0x2b, 0x29, 0xba, 0xfa, - 0xd9, 0xbe, 0xd5, 0xf7, 0xae, 0x3c, 0xc7, 0x51, 0x07, 0xc7, 0x6d, 0x8c, 0x2a, 0x90, 0xc5, 0x76, - 0xa7, 0xc5, 0x18, 0xd2, 0xa7, 0xc4, 0xaf, 0x6a, 0x77, 0x5a, 0xbd, 0x2c, 0x19, 0x02, 0xe3, 0x14, - 0x63, 0x1e, 0x76, 0x6f, 0x9b, 0x06, 0x56, 0x46, 0x29, 0xc1, 0x63, 0x7d, 0x04, 0xfb, 0x4c, 0xdf, - 0xcb, 0x21, 0x70, 0x68, 0x0d, 0xb2, 0xf8, 0x45, 0x1f, 0xdb, 0x9e, 0xe9, 0xd8, 0xca, 0x18, 0x25, - 0x79, 0x74, 0xc0, 0x2e, 0x62, 0xab, 0xde, 0x4b, 0x11, 0xe2, 0xd0, 0x25, 0x18, 0x73, 0xda, 0xbe, - 0xe9, 0xd8, 0x9e, 0x92, 0x99, 0x95, 0xe6, 0x72, 0x8b, 0x1f, 0x1e, 0x98, 0x08, 0xbb, 0xcc, 0x46, - 0x15, 0xc6, 0x68, 0x13, 0x64, 0xcf, 0xe9, 0xb8, 0x06, 0xd6, 0x0c, 0xa7, 0x8e, 0x35, 0xd3, 0x6e, - 0x38, 0x4a, 0x96, 0x12, 0x5c, 0xe8, 0x5f, 0x08, 0x35, 0x5c, 0x73, 0xea, 0x78, 0xd3, 0x6e, 0x38, - 0x6a, 0xc1, 0xeb, 0xba, 0x46, 0xe7, 0x60, 0xd4, 0x3b, 0xb6, 0x7d, 0xfd, 0x45, 0x25, 0x4f, 0x33, - 0x84, 0x5f, 0x95, 0xfe, 0x3b, 0x0d, 0x13, 0xc3, 0xa4, 0xd8, 0x35, 0x48, 0x37, 0xc8, 0x2a, 0x95, - 0xc4, 0x59, 0x62, 0xc0, 0x30, 0xdd, 0x41, 0x1c, 0xfd, 0x11, 0x83, 0x58, 0x81, 0x9c, 0x8d, 0x3d, - 0x1f, 0xd7, 0x59, 0x46, 0x24, 0x87, 0xcc, 0x29, 0x60, 0xa0, 0xfe, 0x94, 0x4a, 0xfd, 0x48, 0x29, - 0xf5, 0x3c, 0x4c, 0x04, 0x2e, 0x69, 0xae, 0x6e, 0x37, 0x45, 0x6e, 0x2e, 0xc4, 0x79, 0x32, 0x5f, - 0x15, 0x38, 0x95, 0xc0, 0xd4, 0x02, 0xee, 0xba, 0x46, 0xeb, 0x00, 0x8e, 0x8d, 0x9d, 0x86, 0x56, - 0xc7, 0x86, 0xa5, 0x64, 0x4e, 0x89, 0xd2, 0x2e, 0x31, 0xe9, 0x8b, 0x92, 0xc3, 0xa4, 0x86, 0x85, - 0xae, 0x86, 0xa9, 0x36, 0x76, 0x4a, 0xa6, 0x6c, 0xb3, 0x87, 0xac, 0x2f, 0xdb, 0x0e, 0xa1, 0xe0, - 0x62, 0x92, 0xf7, 0xb8, 0xce, 0x57, 0x96, 0xa5, 0x4e, 0xcc, 0xc7, 0xae, 0x4c, 0xe5, 0x30, 0xb6, - 0xb0, 0x71, 0x37, 0x7a, 0x89, 0x1e, 0x86, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0xf2, 0x42, - 0xb8, 0xa3, 0xb7, 0xf0, 0xcc, 0x15, 0x28, 0x74, 0x87, 0x07, 0x4d, 0x43, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x3a, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x73, 0x19, 0xc6, 0xbb, 0x6e, 0x3f, 0x2c, 0xb0, 0xf4, 0xc5, 0x51, 0x98, 0x1e, 0x94, 0x73, - 0x03, 0xd3, 0xff, 0x1c, 0x8c, 0xda, 0x9d, 0x56, 0x0d, 0xbb, 0x4a, 0x92, 0x32, 0xf0, 0x2b, 0x54, - 0x81, 0xb4, 0xa5, 0xd7, 0xb0, 0xa5, 0xa4, 0x66, 0xa5, 0xb9, 0xc2, 0xe2, 0x93, 0x43, 0x65, 0xf5, - 0xfc, 0x16, 0x81, 0xa8, 0x0c, 0x89, 0x3e, 0x0e, 0x29, 0x5e, 0xe2, 0x08, 0xc3, 0x13, 0xc3, 0x31, - 0x90, 0x5c, 0x54, 0x29, 0x0e, 0x3d, 0x08, 0x59, 0xf2, 0x97, 0xc5, 0x76, 0x94, 0xfa, 0x9c, 0x21, - 0x02, 0x12, 0x57, 0x34, 0x03, 0x19, 0x9a, 0x66, 0x75, 0x2c, 0x5a, 0x43, 0x70, 0x4d, 0x36, 0xa6, - 0x8e, 0x1b, 0x7a, 0xc7, 0xf2, 0xb5, 0xdb, 0xba, 0xd5, 0xc1, 0x34, 0x61, 0xb2, 0x6a, 0x9e, 0x0b, - 0x3f, 0x49, 0x64, 0xe8, 0x02, 0xe4, 0x58, 0x56, 0x9a, 0x76, 0x1d, 0xbf, 0x48, 0xab, 0x4f, 0x5a, - 0x65, 0x89, 0xba, 0x49, 0x24, 0xe4, 0xf6, 0x37, 0x3d, 0xc7, 0x16, 0x5b, 0x4b, 0x6f, 0x41, 0x04, - 0xf4, 0xf6, 0x97, 0x7b, 0x0b, 0xdf, 0x43, 0x83, 0x97, 0xd7, 0x9b, 0x8b, 0xa5, 0x6f, 0x27, 0x20, - 0x45, 0x9f, 0xb7, 0x09, 0xc8, 0x1d, 0xbc, 0xb0, 0x57, 0xd5, 0xd6, 0x77, 0x0f, 0x57, 0xb7, 0xaa, - 0xb2, 0x84, 0x0a, 0x00, 0x54, 0xf0, 0xdc, 0xd6, 0x6e, 0xe5, 0x40, 0x4e, 0x04, 0xd7, 0x9b, 0x3b, - 0x07, 0x97, 0x96, 0xe5, 0x64, 0x00, 0x38, 0x64, 0x82, 0x54, 0xd4, 0x60, 0x69, 0x51, 0x4e, 0x23, - 0x19, 0xf2, 0x8c, 0x60, 0xf3, 0xf9, 0xea, 0xfa, 0xa5, 0x65, 0x79, 0xb4, 0x5b, 0xb2, 0xb4, 0x28, - 0x8f, 0xa1, 0x71, 0xc8, 0x52, 0xc9, 0xea, 0xee, 0xee, 0x96, 0x9c, 0x09, 0x38, 0xf7, 0x0f, 0xd4, - 0xcd, 0x9d, 0x0d, 0x39, 0x1b, 0x70, 0x6e, 0xa8, 0xbb, 0x87, 0x7b, 0x32, 0x04, 0x0c, 0xdb, 0xd5, - 0xfd, 0xfd, 0xca, 0x46, 0x55, 0xce, 0x05, 0x16, 0xab, 0x2f, 0x1c, 0x54, 0xf7, 0xe5, 0x7c, 0x97, - 0x5b, 0x4b, 0x8b, 0xf2, 0x78, 0x70, 0x8b, 0xea, 0xce, 0xe1, 0xb6, 0x5c, 0x40, 0x93, 0x30, 0xce, - 0x6e, 0x21, 0x9c, 0x98, 0xe8, 0x11, 0x5d, 0x5a, 0x96, 0xe5, 0xd0, 0x11, 0xc6, 0x32, 0xd9, 0x25, - 0xb8, 0xb4, 0x2c, 0xa3, 0xd2, 0x1a, 0xa4, 0x69, 0x76, 0x21, 0x04, 0x85, 0xad, 0xca, 0x6a, 0x75, - 0x4b, 0xdb, 0xdd, 0x3b, 0xd8, 0xdc, 0xdd, 0xa9, 0x6c, 0xc9, 0x52, 0x28, 0x53, 0xab, 0x9f, 0x38, - 0xdc, 0x54, 0xab, 0xeb, 0x72, 0x22, 0x2a, 0xdb, 0xab, 0x56, 0x0e, 0xaa, 0xeb, 0x72, 0xb2, 0x64, - 0xc0, 0xf4, 0xa0, 0x3a, 0x33, 0xf0, 0xc9, 0x88, 0x6c, 0x71, 0xe2, 0x94, 0x2d, 0xa6, 0x5c, 0x7d, - 0x5b, 0xfc, 0x35, 0x09, 0xa6, 0x06, 0xd4, 0xda, 0x81, 0x37, 0x79, 0x16, 0xd2, 0x2c, 0x45, 0x59, - 0xf7, 0x79, 0x7c, 0x60, 0xd1, 0xa6, 0x09, 0xdb, 0xd7, 0x81, 0x28, 0x2e, 0xda, 0x81, 0x93, 0xa7, - 0x74, 0x60, 0x42, 0xd1, 0xe7, 0xe4, 0xcb, 0x12, 0x28, 0xa7, 0x71, 0xc7, 0x14, 0x8a, 0x44, 0x57, - 0xa1, 0xb8, 0xd6, 0xeb, 0xc0, 0xc5, 0xd3, 0xd7, 0xd0, 0xe7, 0xc5, 0xeb, 0x12, 0x9c, 0x1b, 0x3c, - 0xa8, 0x0c, 0xf4, 0xe1, 0xe3, 0x30, 0xda, 0xc2, 0xfe, 0x91, 0x23, 0x9a, 0xf5, 0x47, 0x06, 0xb4, - 0x00, 0xa2, 0xee, 0x8d, 0x15, 0x47, 0x45, 0x7b, 0x48, 0xf2, 0xb4, 0x69, 0x83, 0x79, 0xd3, 0xe7, - 0xe9, 0xe7, 0x12, 0xf0, 0xa1, 0x81, 0xe4, 0x03, 0x1d, 0x7d, 0x08, 0xc0, 0xb4, 0xdb, 0x1d, 0x9f, - 0x35, 0x64, 0x56, 0x9f, 0xb2, 0x54, 0x42, 0x9f, 0x7d, 0x52, 0x7b, 0x3a, 0x7e, 0xa0, 0x4f, 0x52, - 0x3d, 0x30, 0x11, 0x35, 0xb8, 0x12, 0x3a, 0x9a, 0xa2, 0x8e, 0x16, 0x4f, 0x59, 0x69, 0x5f, 0xaf, - 0x7b, 0x1a, 0x64, 0xc3, 0x32, 0xb1, 0xed, 0x6b, 0x9e, 0xef, 0x62, 0xbd, 0x65, 0xda, 0x4d, 0x5a, - 0x80, 0x33, 0xe5, 0x74, 0x43, 0xb7, 0x3c, 0xac, 0x4e, 0x30, 0xf5, 0xbe, 0xd0, 0x12, 0x04, 0xed, - 0x32, 0x6e, 0x04, 0x31, 0xda, 0x85, 0x60, 0xea, 0x00, 0x51, 0xfa, 0xfc, 0x18, 0xe4, 0x22, 0x63, - 0x1d, 0xba, 0x08, 0xf9, 0x9b, 0xfa, 0x6d, 0x5d, 0x13, 0xa3, 0x3a, 0x8b, 0x44, 0x8e, 0xc8, 0xf6, - 0xf8, 0xb8, 0xfe, 0x34, 0x4c, 0x53, 0x13, 0xa7, 0xe3, 0x63, 0x57, 0x33, 0x2c, 0xdd, 0xf3, 0x68, - 0xd0, 0x32, 0xd4, 0x14, 0x11, 0xdd, 0x2e, 0x51, 0xad, 0x09, 0x0d, 0x5a, 0x81, 0x29, 0x8a, 0x68, - 0x75, 0x2c, 0xdf, 0x6c, 0x5b, 0x58, 0x23, 0x2f, 0x0f, 0x1e, 0x2d, 0xc4, 0x81, 0x67, 0x93, 0xc4, - 0x62, 0x9b, 0x1b, 0x10, 0x8f, 0x3c, 0xb4, 0x01, 0x0f, 0x51, 0x58, 0x13, 0xdb, 0xd8, 0xd5, 0x7d, - 0xac, 0xe1, 0x9f, 0xed, 0xe8, 0x96, 0xa7, 0xe9, 0x76, 0x5d, 0x3b, 0xd2, 0xbd, 0x23, 0x65, 0x3a, - 0x4a, 0x70, 0x9e, 0xd8, 0x6e, 0x70, 0xd3, 0x2a, 0xb5, 0xac, 0xd8, 0xf5, 0xeb, 0xba, 0x77, 0x84, - 0xca, 0x70, 0x8e, 0x12, 0x79, 0xbe, 0x6b, 0xda, 0x4d, 0xcd, 0x38, 0xc2, 0xc6, 0x2d, 0xad, 0xe3, - 0x37, 0xae, 0x28, 0x0f, 0x46, 0x19, 0xa8, 0x93, 0xfb, 0xd4, 0x66, 0x8d, 0x98, 0x1c, 0xfa, 0x8d, - 0x2b, 0x68, 0x1f, 0xf2, 0x64, 0x3f, 0x5a, 0xe6, 0x4b, 0x58, 0x6b, 0x38, 0x2e, 0x6d, 0x2e, 0x85, - 0x01, 0x0f, 0x77, 0x24, 0x88, 0xf3, 0xbb, 0x1c, 0xb0, 0xed, 0xd4, 0x71, 0x39, 0xbd, 0xbf, 0x57, - 0xad, 0xae, 0xab, 0x39, 0xc1, 0xf2, 0x9c, 0xe3, 0x92, 0x9c, 0x6a, 0x3a, 0x41, 0x8c, 0x73, 0x2c, - 0xa7, 0x9a, 0x8e, 0x88, 0xf0, 0x0a, 0x4c, 0x19, 0x06, 0x5b, 0xb6, 0x69, 0x68, 0x7c, 0xca, 0xf7, - 0x14, 0xb9, 0x2b, 0x5e, 0x86, 0xb1, 0xc1, 0x0c, 0x78, 0x9a, 0x7b, 0xe8, 0x2a, 0x7c, 0x28, 0x8c, - 0x57, 0x14, 0x38, 0xd9, 0xb7, 0xca, 0x5e, 0xe8, 0x0a, 0x4c, 0xb5, 0x8f, 0xfb, 0x81, 0xa8, 0xeb, - 0x8e, 0xed, 0xe3, 0x5e, 0xd8, 0xa3, 0xf4, 0xcd, 0xcd, 0xc5, 0x86, 0xee, 0xe3, 0xba, 0xf2, 0x40, - 0xd4, 0x3a, 0xa2, 0x40, 0x0b, 0x20, 0x1b, 0x86, 0x86, 0x6d, 0xbd, 0x66, 0x61, 0x4d, 0x77, 0xb1, - 0xad, 0x7b, 0xca, 0x85, 0xa8, 0x71, 0xc1, 0x30, 0xaa, 0x54, 0x5b, 0xa1, 0x4a, 0xf4, 0x04, 0x4c, - 0x3a, 0xb5, 0x9b, 0x06, 0x4b, 0x2e, 0xad, 0xed, 0xe2, 0x86, 0xf9, 0xa2, 0xf2, 0x08, 0x0d, 0xd3, - 0x04, 0x51, 0xd0, 0xd4, 0xda, 0xa3, 0x62, 0xf4, 0x38, 0xc8, 0x86, 0x77, 0xa4, 0xbb, 0x6d, 0xda, - 0xdd, 0xbd, 0xb6, 0x6e, 0x60, 0xe5, 0x51, 0x66, 0xca, 0xe4, 0x3b, 0x42, 0x8c, 0x9e, 0x87, 0xe9, - 0x8e, 0x6d, 0xda, 0x3e, 0x76, 0xdb, 0x2e, 0x26, 0x43, 0x3a, 0x7b, 0xd2, 0x94, 0x7f, 0x1a, 0x3b, - 0x65, 0xcc, 0x3e, 0x8c, 0x5a, 0xb3, 0xdd, 0x55, 0xa7, 0x3a, 0xfd, 0xc2, 0x52, 0x19, 0xf2, 0xd1, - 0x4d, 0x47, 0x59, 0x60, 0xdb, 0x2e, 0x4b, 0xa4, 0x87, 0xae, 0xed, 0xae, 0x93, 0xee, 0xf7, 0xe9, - 0xaa, 0x9c, 0x20, 0x5d, 0x78, 0x6b, 0xf3, 0xa0, 0xaa, 0xa9, 0x87, 0x3b, 0x07, 0x9b, 0xdb, 0x55, - 0x39, 0xf9, 0x44, 0x36, 0xf3, 0x83, 0x31, 0xf9, 0xee, 0xdd, 0xbb, 0x77, 0x13, 0xa5, 0xef, 0x26, - 0xa0, 0xd0, 0x3d, 0xf9, 0xa2, 0x9f, 0x81, 0x07, 0xc4, 0x6b, 0xaa, 0x87, 0x7d, 0xed, 0x8e, 0xe9, - 0xd2, 0x3c, 0x6c, 0xe9, 0x6c, 0x76, 0x0c, 0x42, 0x38, 0xcd, 0xad, 0xf6, 0xb1, 0xff, 0x29, 0xd3, - 0x25, 0x59, 0xd6, 0xd2, 0x7d, 0xb4, 0x05, 0x17, 0x6c, 0x47, 0xf3, 0x7c, 0xdd, 0xae, 0xeb, 0x6e, - 0x5d, 0x0b, 0x0f, 0x08, 0x34, 0xdd, 0x30, 0xb0, 0xe7, 0x39, 0xac, 0x05, 0x04, 0x2c, 0x1f, 0xb6, - 0x9d, 0x7d, 0x6e, 0x1c, 0xd6, 0xc6, 0x0a, 0x37, 0xed, 0xd9, 0xee, 0xe4, 0x69, 0xdb, 0xfd, 0x20, - 0x64, 0x5b, 0x7a, 0x5b, 0xc3, 0xb6, 0xef, 0x1e, 0xd3, 0x79, 0x2d, 0xa3, 0x66, 0x5a, 0x7a, 0xbb, - 0x4a, 0xae, 0x7f, 0x7c, 0x7b, 0x10, 0x8d, 0xe3, 0x3f, 0x24, 0x21, 0x1f, 0x9d, 0xd9, 0xc8, 0x08, - 0x6c, 0xd0, 0xfa, 0x2c, 0xd1, 0xc7, 0xf7, 0xe1, 0xfb, 0x4e, 0x78, 0xf3, 0x6b, 0xa4, 0x70, 0x97, - 0x47, 0xd9, 0x24, 0xa5, 0x32, 0x24, 0x69, 0x9a, 0xe4, 0x81, 0xc5, 0x6c, 0x3e, 0xcf, 0xa8, 0xfc, - 0x0a, 0x6d, 0xc0, 0xe8, 0x4d, 0x8f, 0x72, 0x8f, 0x52, 0xee, 0x47, 0xee, 0xcf, 0x7d, 0x63, 0x9f, - 0x92, 0x67, 0x6f, 0xec, 0x6b, 0x3b, 0xbb, 0xea, 0x76, 0x65, 0x4b, 0xe5, 0x70, 0x74, 0x1e, 0x52, - 0x96, 0xfe, 0xd2, 0x71, 0x77, 0x89, 0xa7, 0xa2, 0x61, 0x03, 0x7f, 0x1e, 0x52, 0x77, 0xb0, 0x7e, - 0xab, 0xbb, 0xb0, 0x52, 0xd1, 0x8f, 0x31, 0xf5, 0x17, 0x20, 0x4d, 0xe3, 0x85, 0x00, 0x78, 0xc4, - 0xe4, 0x11, 0x94, 0x81, 0xd4, 0xda, 0xae, 0x4a, 0xd2, 0x5f, 0x86, 0x3c, 0x93, 0x6a, 0x7b, 0x9b, - 0xd5, 0xb5, 0xaa, 0x9c, 0x28, 0xad, 0xc0, 0x28, 0x0b, 0x02, 0x79, 0x34, 0x82, 0x30, 0xc8, 0x23, - 0xfc, 0x92, 0x73, 0x48, 0x42, 0x7b, 0xb8, 0xbd, 0x5a, 0x55, 0xe5, 0x44, 0x74, 0x7b, 0x3d, 0xc8, - 0x47, 0xc7, 0xb5, 0x9f, 0x4c, 0x4e, 0xfd, 0xa5, 0x04, 0xb9, 0xc8, 0xf8, 0x45, 0x1a, 0xbf, 0x6e, - 0x59, 0xce, 0x1d, 0x4d, 0xb7, 0x4c, 0xdd, 0xe3, 0x49, 0x01, 0x54, 0x54, 0x21, 0x92, 0x61, 0x37, - 0xed, 0x27, 0xe2, 0xfc, 0x6b, 0x12, 0xc8, 0xbd, 0xa3, 0x5b, 0x8f, 0x83, 0xd2, 0x4f, 0xd5, 0xc1, - 0x57, 0x25, 0x28, 0x74, 0xcf, 0x6b, 0x3d, 0xee, 0x5d, 0xfc, 0xa9, 0xba, 0xf7, 0x65, 0x09, 0xc6, - 0xbb, 0xa6, 0xb4, 0xff, 0x57, 0xde, 0xbd, 0x92, 0x84, 0xa9, 0x01, 0x38, 0x54, 0xe1, 0xe3, 0x2c, - 0x9b, 0xb0, 0x9f, 0x1a, 0xe6, 0x5e, 0xf3, 0xa4, 0x5b, 0xee, 0xe9, 0xae, 0xcf, 0xa7, 0xdf, 0xc7, - 0x41, 0x36, 0xeb, 0xd8, 0xf6, 0xcd, 0x86, 0x89, 0x5d, 0xfe, 0x0a, 0xce, 0x66, 0xdc, 0x89, 0x50, - 0xce, 0xde, 0xc2, 0x3f, 0x0a, 0xa8, 0xed, 0x78, 0xa6, 0x6f, 0xde, 0xc6, 0x9a, 0x69, 0x8b, 0xf7, - 0x75, 0x32, 0xf3, 0xa6, 0x54, 0x59, 0x68, 0x36, 0x6d, 0x3f, 0xb0, 0xb6, 0x71, 0x53, 0xef, 0xb1, - 0x26, 0xb5, 0x2f, 0xa9, 0xca, 0x42, 0x13, 0x58, 0x5f, 0x84, 0x7c, 0xdd, 0xe9, 0x90, 0xf1, 0x81, - 0xd9, 0x91, 0x52, 0x2b, 0xa9, 0x39, 0x26, 0x0b, 0x4c, 0xf8, 0x7c, 0x17, 0x1e, 0x14, 0xe4, 0xd5, - 0x1c, 0x93, 0x31, 0x93, 0xc7, 0x60, 0x42, 0x6f, 0x36, 0x5d, 0x42, 0x2e, 0x88, 0xd8, 0xd0, 0x5a, - 0x08, 0xc4, 0xd4, 0x70, 0xe6, 0x06, 0x64, 0x44, 0x1c, 0x48, 0x37, 0x23, 0x91, 0xd0, 0xda, 0xec, - 0xb8, 0x26, 0x31, 0x97, 0x55, 0x33, 0xb6, 0x50, 0x5e, 0x84, 0xbc, 0xe9, 0x69, 0xe1, 0xb9, 0x61, - 0x62, 0x36, 0x31, 0x97, 0x51, 0x73, 0xa6, 0x17, 0x1c, 0x14, 0x95, 0x5e, 0x4f, 0x40, 0xa1, 0xfb, - 0xdc, 0x13, 0xad, 0x43, 0xc6, 0x72, 0x0c, 0x9d, 0x26, 0x02, 0x3b, 0x74, 0x9f, 0x8b, 0x39, 0x2a, - 0x9d, 0xdf, 0xe2, 0xf6, 0x6a, 0x80, 0x9c, 0xf9, 0x5b, 0x09, 0x32, 0x42, 0x8c, 0xce, 0x41, 0xaa, - 0xad, 0xfb, 0x47, 0x94, 0x2e, 0xbd, 0x9a, 0x90, 0x25, 0x95, 0x5e, 0x13, 0xb9, 0xd7, 0xd6, 0x6d, - 0x9a, 0x02, 0x5c, 0x4e, 0xae, 0xc9, 0xbe, 0x5a, 0x58, 0xaf, 0xd3, 0x71, 0xd8, 0x69, 0xb5, 0xb0, - 0xed, 0x7b, 0x62, 0x5f, 0xb9, 0x7c, 0x8d, 0x8b, 0xd1, 0x93, 0x30, 0xe9, 0xbb, 0xba, 0x69, 0x75, - 0xd9, 0xa6, 0xa8, 0xad, 0x2c, 0x14, 0x81, 0x71, 0x19, 0xce, 0x0b, 0xde, 0x3a, 0xf6, 0x75, 0xe3, - 0x08, 0xd7, 0x43, 0xd0, 0x28, 0x3d, 0x54, 0x7b, 0x80, 0x1b, 0xac, 0x73, 0xbd, 0xc0, 0x96, 0xbe, - 0x27, 0xc1, 0xa4, 0x18, 0xe0, 0xeb, 0x41, 0xb0, 0xb6, 0x01, 0x74, 0xdb, 0x76, 0xfc, 0x68, 0xb8, - 0xfa, 0x53, 0xb9, 0x0f, 0x37, 0x5f, 0x09, 0x40, 0x6a, 0x84, 0x60, 0xa6, 0x05, 0x10, 0x6a, 0x4e, - 0x0d, 0xdb, 0x05, 0xc8, 0xf1, 0x43, 0x6d, 0xfa, 0xcb, 0x08, 0x7b, 0xeb, 0x03, 0x26, 0x22, 0x93, - 0x3e, 0x9a, 0x86, 0x74, 0x0d, 0x37, 0x4d, 0x9b, 0x1f, 0xb5, 0xb1, 0x0b, 0x71, 0x80, 0x97, 0x0a, - 0x0e, 0xf0, 0x56, 0x3f, 0x03, 0x53, 0x86, 0xd3, 0xea, 0x75, 0x77, 0x55, 0xee, 0x79, 0xf3, 0xf4, - 0xae, 0x4b, 0x9f, 0x86, 0x70, 0x3a, 0xfb, 0xaa, 0x24, 0x7d, 0x2d, 0x91, 0xdc, 0xd8, 0x5b, 0xfd, - 0x46, 0x62, 0x66, 0x83, 0x41, 0xf7, 0xc4, 0x4a, 0x55, 0xdc, 0xb0, 0xb0, 0x41, 0xbc, 0x87, 0x1f, - 0x7e, 0x04, 0x9e, 0x6a, 0x9a, 0xfe, 0x51, 0xa7, 0x36, 0x6f, 0x38, 0xad, 0x85, 0xa6, 0xd3, 0x74, - 0xc2, 0x1f, 0x83, 0xc8, 0x15, 0xbd, 0xa0, 0xff, 0xf1, 0x1f, 0x84, 0xb2, 0x81, 0x74, 0x26, 0xf6, - 0xd7, 0xa3, 0xf2, 0x0e, 0x4c, 0x71, 0x63, 0x8d, 0x9e, 0x48, 0xb3, 0x39, 0x1c, 0xdd, 0xf7, 0x54, - 0x42, 0xf9, 0xd6, 0xdb, 0xb4, 0xd3, 0xa9, 0x93, 0x1c, 0x4a, 0x74, 0x6c, 0x52, 0x2f, 0xab, 0xf0, - 0xa1, 0x2e, 0x3e, 0xf6, 0x68, 0x62, 0x37, 0x86, 0xf1, 0xbb, 0x9c, 0x71, 0x2a, 0xc2, 0xb8, 0xcf, - 0xa1, 0xe5, 0x35, 0x18, 0x3f, 0x0b, 0xd7, 0x5f, 0x73, 0xae, 0x3c, 0x8e, 0x92, 0x6c, 0xc0, 0x04, - 0x25, 0x31, 0x3a, 0x9e, 0xef, 0xb4, 0x68, 0xdd, 0xbb, 0x3f, 0xcd, 0xdf, 0xbc, 0xcd, 0x9e, 0x95, - 0x02, 0x81, 0xad, 0x05, 0xa8, 0x72, 0x19, 0xe8, 0x21, 0x7c, 0x1d, 0x1b, 0x56, 0x0c, 0xc3, 0x1b, - 0xdc, 0x91, 0xc0, 0xbe, 0xfc, 0x49, 0x98, 0x26, 0xff, 0xd3, 0xb2, 0x14, 0xf5, 0x24, 0xfe, 0x0c, - 0x46, 0xf9, 0xde, 0xcb, 0xec, 0x71, 0x9c, 0x0a, 0x08, 0x22, 0x3e, 0x45, 0x76, 0xb1, 0x89, 0x7d, - 0x1f, 0xbb, 0x9e, 0xa6, 0x5b, 0x83, 0xdc, 0x8b, 0xbc, 0xc1, 0x2a, 0x5f, 0x7a, 0xa7, 0x7b, 0x17, - 0x37, 0x18, 0xb2, 0x62, 0x59, 0xe5, 0x43, 0x78, 0x60, 0x40, 0x56, 0x0c, 0xc1, 0xf9, 0x0a, 0xe7, - 0x9c, 0xee, 0xcb, 0x0c, 0x42, 0xbb, 0x07, 0x42, 0x1e, 0xec, 0xe5, 0x10, 0x9c, 0x5f, 0xe6, 0x9c, - 0x88, 0x63, 0xc5, 0x96, 0x12, 0xc6, 0x1b, 0x30, 0x79, 0x1b, 0xbb, 0x35, 0xc7, 0xe3, 0x07, 0x07, - 0x43, 0xd0, 0xbd, 0xca, 0xe9, 0x26, 0x38, 0x90, 0x1e, 0x23, 0x10, 0xae, 0xab, 0x90, 0x69, 0xe8, - 0x06, 0x1e, 0x82, 0xe2, 0x2b, 0x9c, 0x62, 0x8c, 0xd8, 0x13, 0x68, 0x05, 0xf2, 0x4d, 0x87, 0x77, - 0xa6, 0x78, 0xf8, 0x6b, 0x1c, 0x9e, 0x13, 0x18, 0x4e, 0xd1, 0x76, 0xda, 0x1d, 0x8b, 0xb4, 0xad, - 0x78, 0x8a, 0xdf, 0x12, 0x14, 0x02, 0xc3, 0x29, 0xce, 0x10, 0xd6, 0xaf, 0x0a, 0x0a, 0x2f, 0x12, - 0xcf, 0x67, 0x21, 0xe7, 0xd8, 0xd6, 0xb1, 0x63, 0x0f, 0xe3, 0xc4, 0x6f, 0x73, 0x06, 0xe0, 0x10, - 0x42, 0x70, 0x0d, 0xb2, 0xc3, 0x6e, 0xc4, 0xef, 0xbc, 0x23, 0x1e, 0x0f, 0xb1, 0x03, 0x1b, 0x30, - 0x21, 0x0a, 0x94, 0xe9, 0xd8, 0x43, 0x50, 0xfc, 0x2e, 0xa7, 0x28, 0x44, 0x60, 0x7c, 0x19, 0x3e, - 0xf6, 0xfc, 0x26, 0x1e, 0x86, 0xe4, 0x75, 0xb1, 0x0c, 0x0e, 0xe1, 0xa1, 0xac, 0x61, 0xdb, 0x38, - 0x1a, 0x8e, 0xe1, 0xeb, 0x22, 0x94, 0x02, 0x43, 0x28, 0xd6, 0x60, 0xbc, 0xa5, 0xbb, 0xde, 0x91, - 0x6e, 0x0d, 0xb5, 0x1d, 0xbf, 0xc7, 0x39, 0xf2, 0x01, 0x88, 0x47, 0xa4, 0x63, 0x9f, 0x85, 0xe6, - 0x1b, 0x22, 0x22, 0x11, 0x18, 0x7f, 0xf4, 0x3c, 0x9f, 0x9e, 0xcd, 0x9c, 0x85, 0xed, 0xf7, 0xc5, - 0xa3, 0xc7, 0xb0, 0xdb, 0x51, 0xc6, 0x6b, 0x90, 0xf5, 0xcc, 0x97, 0x86, 0xa2, 0xf9, 0x03, 0xb1, - 0xd3, 0x14, 0x40, 0xc0, 0x2f, 0xc0, 0xf9, 0x81, 0x6d, 0x62, 0x08, 0xb2, 0x3f, 0xe4, 0x64, 0xe7, - 0x06, 0xb4, 0x0a, 0x5e, 0x12, 0xce, 0x4a, 0xf9, 0x47, 0xa2, 0x24, 0xe0, 0x1e, 0xae, 0x3d, 0x32, - 0xd9, 0x7b, 0x7a, 0xe3, 0x6c, 0x51, 0xfb, 0x63, 0x11, 0x35, 0x86, 0xed, 0x8a, 0xda, 0x01, 0x9c, - 0xe3, 0x8c, 0x67, 0xdb, 0xd7, 0x6f, 0x8a, 0xc2, 0xca, 0xd0, 0x87, 0xdd, 0xbb, 0xfb, 0x19, 0x98, - 0x09, 0xc2, 0x29, 0x86, 0x52, 0x4f, 0x6b, 0xe9, 0xed, 0x21, 0x98, 0xbf, 0xc5, 0x99, 0x45, 0xc5, - 0x0f, 0xa6, 0x5a, 0x6f, 0x5b, 0x6f, 0x13, 0xf2, 0xe7, 0x41, 0x11, 0xe4, 0x1d, 0xdb, 0xc5, 0x86, - 0xd3, 0xb4, 0xcd, 0x97, 0x70, 0x7d, 0x08, 0xea, 0x3f, 0xe9, 0xd9, 0xaa, 0xc3, 0x08, 0x9c, 0x30, - 0x6f, 0x82, 0x1c, 0xcc, 0x2a, 0x9a, 0xd9, 0x6a, 0x3b, 0xae, 0x1f, 0xc3, 0xf8, 0xa7, 0x62, 0xa7, - 0x02, 0xdc, 0x26, 0x85, 0x95, 0xab, 0x50, 0xa0, 0x97, 0xc3, 0xa6, 0xe4, 0x9f, 0x71, 0xa2, 0xf1, - 0x10, 0xc5, 0x0b, 0x87, 0xe1, 0xb4, 0xda, 0xba, 0x3b, 0x4c, 0xfd, 0xfb, 0x73, 0x51, 0x38, 0x38, - 0x84, 0x17, 0x0e, 0xff, 0xb8, 0x8d, 0x49, 0xb7, 0x1f, 0x82, 0xe1, 0xdb, 0xa2, 0x70, 0x08, 0x0c, - 0xa7, 0x10, 0x03, 0xc3, 0x10, 0x14, 0x7f, 0x21, 0x28, 0x04, 0x86, 0x50, 0x7c, 0x22, 0x6c, 0xb4, - 0x2e, 0x6e, 0x9a, 0x9e, 0xef, 0xb2, 0x51, 0xf8, 0xfe, 0x54, 0xdf, 0x79, 0xa7, 0x7b, 0x08, 0x53, - 0x23, 0xd0, 0xf2, 0x0d, 0x98, 0xe8, 0x19, 0x31, 0x50, 0xdc, 0x2f, 0xfa, 0xca, 0x67, 0xdf, 0xe3, - 0xc5, 0xa8, 0x7b, 0xc2, 0x28, 0x6f, 0x91, 0x7d, 0xef, 0x9e, 0x03, 0xe2, 0xc9, 0x5e, 0x7e, 0x2f, - 0xd8, 0xfa, 0xae, 0x31, 0xa0, 0xfc, 0x1c, 0x8c, 0x77, 0xcd, 0x00, 0xf1, 0x54, 0x3f, 0xc7, 0xa9, - 0xf2, 0xd1, 0x11, 0xa0, 0xbc, 0x02, 0x29, 0xd2, 0xcf, 0xe3, 0xe1, 0x3f, 0xcf, 0xe1, 0xd4, 0xbc, - 0xfc, 0x31, 0xc8, 0x88, 0x3e, 0x1e, 0x0f, 0xfd, 0x05, 0x0e, 0x0d, 0x20, 0x04, 0x2e, 0x7a, 0x78, - 0x3c, 0xfc, 0x17, 0x05, 0x5c, 0x40, 0x08, 0x7c, 0xf8, 0x10, 0xfe, 0xd5, 0xe7, 0x53, 0xbc, 0x0e, - 0x8b, 0xd8, 0x5d, 0x83, 0x31, 0xde, 0xbc, 0xe3, 0xd1, 0x9f, 0xe3, 0x37, 0x17, 0x88, 0xf2, 0x65, - 0x48, 0x0f, 0x19, 0xf0, 0x5f, 0xe2, 0x50, 0x66, 0x5f, 0x5e, 0x83, 0x5c, 0xa4, 0x61, 0xc7, 0xc3, - 0x7f, 0x99, 0xc3, 0xa3, 0x28, 0xe2, 0x3a, 0x6f, 0xd8, 0xf1, 0x04, 0xbf, 0x22, 0x5c, 0xe7, 0x08, - 0x12, 0x36, 0xd1, 0xab, 0xe3, 0xd1, 0xbf, 0x2a, 0xa2, 0x2e, 0x20, 0xe5, 0x67, 0x21, 0x1b, 0xd4, - 0xdf, 0x78, 0xfc, 0xaf, 0x71, 0x7c, 0x88, 0x21, 0x11, 0x88, 0xd4, 0xff, 0x78, 0x8a, 0x2f, 0x88, - 0x08, 0x44, 0x50, 0xe4, 0x31, 0xea, 0xed, 0xe9, 0xf1, 0x4c, 0xbf, 0x2e, 0x1e, 0xa3, 0x9e, 0x96, - 0x4e, 0x76, 0x93, 0x96, 0xc1, 0x78, 0x8a, 0xdf, 0x10, 0xbb, 0x49, 0xed, 0x89, 0x1b, 0xbd, 0x4d, - 0x32, 0x9e, 0xe3, 0x37, 0x85, 0x1b, 0x3d, 0x3d, 0xb2, 0xbc, 0x07, 0xa8, 0xbf, 0x41, 0xc6, 0xf3, - 0x7d, 0x91, 0xf3, 0x4d, 0xf6, 0xf5, 0xc7, 0xf2, 0xa7, 0xe0, 0xdc, 0xe0, 0xe6, 0x18, 0xcf, 0xfa, - 0xa5, 0xf7, 0x7a, 0x5e, 0x67, 0xa2, 0xbd, 0xb1, 0x7c, 0x10, 0x56, 0xd9, 0x68, 0x63, 0x8c, 0xa7, - 0x7d, 0xe5, 0xbd, 0xee, 0x42, 0x1b, 0xed, 0x8b, 0xe5, 0x0a, 0x40, 0xd8, 0x93, 0xe2, 0xb9, 0x5e, - 0xe5, 0x5c, 0x11, 0x10, 0x79, 0x34, 0x78, 0x4b, 0x8a, 0xc7, 0x7f, 0x45, 0x3c, 0x1a, 0x1c, 0x41, - 0x1e, 0x0d, 0xd1, 0x8d, 0xe2, 0xd1, 0xaf, 0x89, 0x47, 0x43, 0x40, 0xca, 0xd7, 0x20, 0x63, 0x77, - 0x2c, 0x8b, 0xe4, 0x16, 0xba, 0xff, 0x47, 0x36, 0xca, 0x3f, 0x7f, 0xc0, 0xc1, 0x02, 0x50, 0x5e, - 0x81, 0x34, 0x6e, 0xd5, 0x70, 0x3d, 0x0e, 0xf9, 0x2f, 0x1f, 0x88, 0x7a, 0x42, 0xac, 0xcb, 0xcf, - 0x02, 0xb0, 0x97, 0x69, 0xfa, 0x1b, 0x4b, 0x0c, 0xf6, 0x5f, 0x3f, 0xe0, 0xbf, 0xdf, 0x87, 0x90, - 0x90, 0x80, 0x7d, 0x0d, 0x70, 0x7f, 0x82, 0x77, 0xba, 0x09, 0xe8, 0x0b, 0xf8, 0x55, 0x18, 0xbb, - 0xe9, 0x39, 0xb6, 0xaf, 0x37, 0xe3, 0xd0, 0xff, 0xc6, 0xd1, 0xc2, 0x9e, 0x04, 0xac, 0xe5, 0xb8, - 0xd8, 0xd7, 0x9b, 0x5e, 0x1c, 0xf6, 0xdf, 0x39, 0x36, 0x00, 0x10, 0xb0, 0xa1, 0x7b, 0xfe, 0x30, - 0xeb, 0xfe, 0x0f, 0x01, 0x16, 0x00, 0xe2, 0x34, 0xf9, 0xff, 0x16, 0x3e, 0x8e, 0xc3, 0xbe, 0x2b, - 0x9c, 0xe6, 0xf6, 0xe5, 0x8f, 0x41, 0x96, 0xfc, 0xcb, 0xbe, 0x69, 0x89, 0x01, 0xff, 0x27, 0x07, - 0x87, 0x08, 0x72, 0x67, 0xcf, 0xaf, 0xfb, 0x66, 0x7c, 0xb0, 0xff, 0x8b, 0xef, 0xb4, 0xb0, 0x2f, - 0x57, 0x20, 0xe7, 0xf9, 0xf5, 0x7a, 0x87, 0x4f, 0x34, 0x31, 0xf0, 0x1f, 0x7e, 0x10, 0xbc, 0xe4, - 0x06, 0x98, 0xd5, 0x8b, 0x83, 0xcf, 0xeb, 0x60, 0xc3, 0xd9, 0x70, 0xd8, 0x49, 0x1d, 0xbc, 0x9f, - 0x01, 0xc5, 0x70, 0x5a, 0x35, 0xc7, 0x5b, 0xb0, 0xb1, 0xe9, 0x1f, 0x61, 0x77, 0xc1, 0xb1, 0xb9, - 0x2d, 0x4a, 0x3a, 0x36, 0x9e, 0x39, 0xdb, 0xa1, 0x5c, 0xe9, 0x3c, 0xa4, 0xf7, 0x3b, 0xb5, 0xda, - 0x31, 0x92, 0x21, 0xe9, 0x75, 0x6a, 0xfc, 0x9b, 0x0b, 0xf2, 0x6f, 0xe9, 0xad, 0x24, 0x8c, 0x57, - 0x2c, 0xeb, 0xe0, 0xb8, 0x8d, 0xbd, 0x5d, 0x1b, 0xef, 0x36, 0x90, 0x02, 0xa3, 0x74, 0x15, 0xcf, - 0x50, 0x33, 0xe9, 0xfa, 0x88, 0xca, 0xaf, 0x03, 0xcd, 0x22, 0x3d, 0xae, 0x4c, 0x04, 0x9a, 0xc5, - 0x40, 0xb3, 0xc4, 0x4e, 0x2b, 0x03, 0xcd, 0x52, 0xa0, 0x59, 0xa6, 0x67, 0x96, 0xc9, 0x40, 0xb3, - 0x1c, 0x68, 0x56, 0xe8, 0x99, 0xfc, 0x78, 0xa0, 0x59, 0x09, 0x34, 0x97, 0xe8, 0x29, 0x7c, 0x2a, - 0xd0, 0x5c, 0x0a, 0x34, 0x97, 0xe9, 0xe1, 0xfb, 0x64, 0xa0, 0xb9, 0x1c, 0x68, 0xae, 0xd0, 0x03, - 0x77, 0x14, 0x68, 0xae, 0x04, 0x9a, 0xab, 0xf4, 0xcb, 0x8a, 0xb1, 0x40, 0x73, 0x15, 0xcd, 0xc0, - 0x18, 0x5b, 0xd9, 0xd3, 0xf4, 0x07, 0xcd, 0x89, 0xeb, 0x23, 0xaa, 0x10, 0x84, 0xba, 0x67, 0xe8, - 0xd7, 0x13, 0xa3, 0xa1, 0xee, 0x99, 0x50, 0xb7, 0x48, 0x3f, 0x23, 0x96, 0x43, 0xdd, 0x62, 0xa8, - 0x5b, 0x52, 0xc6, 0xc9, 0xe6, 0x87, 0xba, 0xa5, 0x50, 0xb7, 0xac, 0x14, 0xc8, 0x0e, 0x84, 0xba, - 0xe5, 0x50, 0xb7, 0xa2, 0x4c, 0xcc, 0x4a, 0x73, 0xf9, 0x50, 0xb7, 0x82, 0x9e, 0x82, 0x9c, 0xd7, - 0xa9, 0x69, 0xfc, 0xf7, 0x77, 0xfa, 0x95, 0x46, 0x6e, 0x11, 0xe6, 0x49, 0x4e, 0xd0, 0x6d, 0xbd, - 0x3e, 0xa2, 0x82, 0xd7, 0xa9, 0xf1, 0xea, 0xb8, 0x9a, 0x07, 0x7a, 0x98, 0xa0, 0xd1, 0xcf, 0x13, - 0x4b, 0x6f, 0x4a, 0x90, 0x3d, 0xb8, 0xe3, 0xd0, 0x9f, 0x33, 0xbd, 0xff, 0xe3, 0xcd, 0x15, 0x4e, - 0x2f, 0x2d, 0x2b, 0x25, 0xba, 0x20, 0x49, 0x15, 0x82, 0x50, 0xb7, 0xa2, 0x3c, 0x4c, 0x17, 0x14, - 0xe8, 0x56, 0xd0, 0x02, 0xe4, 0x23, 0x0b, 0x5a, 0xa4, 0x1f, 0x5e, 0x74, 0xaf, 0x48, 0x52, 0x73, - 0xe1, 0x8a, 0x16, 0x57, 0xd3, 0x40, 0xd2, 0x9e, 0xfc, 0xf1, 0xef, 0x38, 0xa5, 0x2f, 0x24, 0x20, - 0xc7, 0xce, 0x1f, 0xe9, 0xaa, 0xc8, 0xad, 0xd8, 0x3c, 0x7e, 0xcc, 0xdd, 0x18, 0x51, 0x85, 0x00, - 0xa9, 0x00, 0xcc, 0x94, 0x64, 0x38, 0xf3, 0x64, 0xf5, 0xe9, 0xbf, 0x7f, 0xeb, 0xc2, 0x47, 0x4f, - 0x7d, 0x82, 0x48, 0xec, 0x16, 0x58, 0x75, 0x9d, 0x3f, 0x34, 0x6d, 0xff, 0x99, 0xc5, 0x2b, 0x24, - 0xc0, 0x21, 0x0b, 0x3a, 0x84, 0xcc, 0x9a, 0xee, 0xd1, 0x8f, 0xaf, 0xa8, 0xeb, 0xa9, 0xd5, 0xcb, - 0xff, 0xf3, 0xd6, 0x85, 0xa5, 0x18, 0x46, 0x5e, 0xf8, 0xe6, 0xb7, 0x8f, 0x09, 0xeb, 0xa5, 0x65, - 0x02, 0xbf, 0x3e, 0xa2, 0x06, 0x54, 0x68, 0x51, 0xb8, 0xba, 0xa3, 0xb7, 0xd8, 0x17, 0x26, 0xc9, - 0x55, 0xf9, 0xe4, 0xad, 0x0b, 0xf9, 0xed, 0xe3, 0x50, 0x1e, 0xba, 0x42, 0xae, 0x56, 0x33, 0x30, - 0xca, 0x5c, 0x5d, 0x5d, 0x7f, 0xe3, 0x5e, 0x71, 0xe4, 0xcd, 0x7b, 0xc5, 0x91, 0xbf, 0xbb, 0x57, - 0x1c, 0xf9, 0xfe, 0xbd, 0xa2, 0xf4, 0xee, 0xbd, 0xa2, 0xf4, 0xfe, 0xbd, 0xa2, 0x74, 0xf7, 0xa4, - 0x28, 0x7d, 0xfd, 0xa4, 0x28, 0x7d, 0xf3, 0xa4, 0x28, 0x7d, 0xe7, 0xa4, 0x28, 0xbd, 0x71, 0x52, - 0x1c, 0x79, 0xf3, 0xa4, 0x38, 0xf2, 0xfd, 0x93, 0xa2, 0xf4, 0x83, 0x93, 0xe2, 0xc8, 0xbb, 0x27, - 0x45, 0xe9, 0xfd, 0x93, 0xe2, 0xc8, 0xdd, 0x7f, 0x2c, 0x8e, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x33, 0x43, 0x22, 0x5c, 0xf5, 0x31, 0x00, 0x00, + // 4043 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x6c, 0x23, 0xe7, + 0x75, 0xd6, 0xf0, 0x22, 0x91, 0x87, 0x14, 0x35, 0x1a, 0x29, 0xbb, 0xb3, 0x72, 0xcc, 0xd5, 0xd2, + 0x76, 0x2c, 0xdb, 0xb1, 0x64, 0xeb, 0xb2, 0x17, 0x6e, 0x13, 0x83, 0xa4, 0xb8, 0x5a, 0x6d, 0x25, + 0x51, 0x19, 0x4a, 0xf1, 0x3a, 0x7d, 0x18, 0x8c, 0x86, 0x3f, 0xa9, 0xd9, 0x1d, 0xce, 0x30, 0x33, + 0xc3, 0x5d, 0xcb, 0x4f, 0x5b, 0xb8, 0x17, 0x04, 0x45, 0x6f, 0x69, 0x81, 0x26, 0xae, 0xe3, 0xb6, + 0x01, 0x5a, 0xa7, 0x49, 0x2f, 0x49, 0x2f, 0x69, 0xd0, 0xa7, 0xbe, 0xa4, 0xf5, 0x53, 0xe1, 0xbc, + 0x15, 0x45, 0x61, 0x78, 0x15, 0x03, 0x4d, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x35, 0xea, 0x97, 0xe2, + 0xbf, 0xcd, 0x0c, 0x2f, 0xda, 0xa1, 0x82, 0x3a, 0x79, 0x92, 0xfe, 0x73, 0xce, 0xf7, 0xcd, 0xf9, + 0xcf, 0x7f, 0xfe, 0xff, 0x9c, 0xf9, 0x39, 0xf0, 0xfd, 0x35, 0x98, 0x6f, 0xd9, 0x76, 0xcb, 0x44, + 0x4b, 0x1d, 0xc7, 0xf6, 0xec, 0x83, 0x6e, 0x73, 0xa9, 0x81, 0x5c, 0xdd, 0x31, 0x3a, 0x9e, 0xed, + 0x2c, 0x12, 0x99, 0x34, 0x45, 0x2d, 0x16, 0xb9, 0x45, 0x61, 0x1b, 0xa6, 0xaf, 0x19, 0x26, 0x5a, + 0xf7, 0x0d, 0xeb, 0xc8, 0x93, 0x2e, 0x43, 0xa2, 0x69, 0x98, 0x48, 0x16, 0xe6, 0xe3, 0x0b, 0x99, + 0xe5, 0x47, 0x17, 0xfb, 0x40, 0x8b, 0xbd, 0x88, 0x5d, 0x2c, 0x56, 0x08, 0xa2, 0xf0, 0x4e, 0x02, + 0x66, 0x86, 0x68, 0x25, 0x09, 0x12, 0x96, 0xd6, 0xc6, 0x8c, 0xc2, 0x42, 0x5a, 0x21, 0xff, 0x4b, + 0x32, 0x4c, 0x74, 0x34, 0xfd, 0xb6, 0xd6, 0x42, 0x72, 0x8c, 0x88, 0xf9, 0x50, 0xca, 0x03, 0x34, + 0x50, 0x07, 0x59, 0x0d, 0x64, 0xe9, 0x47, 0x72, 0x7c, 0x3e, 0xbe, 0x90, 0x56, 0x42, 0x12, 0xe9, + 0x29, 0x98, 0xee, 0x74, 0x0f, 0x4c, 0x43, 0x57, 0x43, 0x66, 0x30, 0x1f, 0x5f, 0x48, 0x2a, 0x22, + 0x55, 0xac, 0x07, 0xc6, 0x8f, 0xc3, 0xd4, 0x5d, 0xa4, 0xdd, 0x0e, 0x9b, 0x66, 0x88, 0x69, 0x0e, + 0x8b, 0x43, 0x86, 0x15, 0xc8, 0xb6, 0x91, 0xeb, 0x6a, 0x2d, 0xa4, 0x7a, 0x47, 0x1d, 0x24, 0x27, + 0xc8, 0xec, 0xe7, 0x07, 0x66, 0xdf, 0x3f, 0xf3, 0x0c, 0x43, 0xed, 0x1d, 0x75, 0x90, 0x54, 0x82, + 0x34, 0xb2, 0xba, 0x6d, 0xca, 0x90, 0x3c, 0x21, 0x7e, 0x55, 0xab, 0xdb, 0xee, 0x67, 0x49, 0x61, + 0x18, 0xa3, 0x98, 0x70, 0x91, 0x73, 0xc7, 0xd0, 0x91, 0x3c, 0x4e, 0x08, 0x1e, 0x1f, 0x20, 0xa8, + 0x53, 0x7d, 0x3f, 0x07, 0xc7, 0x49, 0x15, 0x48, 0xa3, 0x17, 0x3d, 0x64, 0xb9, 0x86, 0x6d, 0xc9, + 0x13, 0x84, 0xe4, 0xb1, 0x21, 0xab, 0x88, 0xcc, 0x46, 0x3f, 0x45, 0x80, 0x93, 0x2e, 0xc2, 0x84, + 0xdd, 0xf1, 0x0c, 0xdb, 0x72, 0xe5, 0xd4, 0xbc, 0xb0, 0x90, 0x59, 0xfe, 0xf8, 0xd0, 0x44, 0xa8, + 0x51, 0x1b, 0x85, 0x1b, 0x4b, 0x9b, 0x20, 0xba, 0x76, 0xd7, 0xd1, 0x91, 0xaa, 0xdb, 0x0d, 0xa4, + 0x1a, 0x56, 0xd3, 0x96, 0xd3, 0x84, 0xe0, 0xfc, 0xe0, 0x44, 0x88, 0x61, 0xc5, 0x6e, 0xa0, 0x4d, + 0xab, 0x69, 0x2b, 0x39, 0xb7, 0x67, 0x2c, 0x9d, 0x81, 0x71, 0xf7, 0xc8, 0xf2, 0xb4, 0x17, 0xe5, + 0x2c, 0xc9, 0x10, 0x36, 0x2a, 0xfc, 0x4f, 0x12, 0xa6, 0x46, 0x49, 0xb1, 0xab, 0x90, 0x6c, 0xe2, + 0x59, 0xca, 0xb1, 0xd3, 0xc4, 0x80, 0x62, 0x7a, 0x83, 0x38, 0xfe, 0x23, 0x06, 0xb1, 0x04, 0x19, + 0x0b, 0xb9, 0x1e, 0x6a, 0xd0, 0x8c, 0x88, 0x8f, 0x98, 0x53, 0x40, 0x41, 0x83, 0x29, 0x95, 0xf8, + 0x91, 0x52, 0xea, 0x26, 0x4c, 0xf9, 0x2e, 0xa9, 0x8e, 0x66, 0xb5, 0x78, 0x6e, 0x2e, 0x45, 0x79, + 0xb2, 0x58, 0xe5, 0x38, 0x05, 0xc3, 0x94, 0x1c, 0xea, 0x19, 0x4b, 0xeb, 0x00, 0xb6, 0x85, 0xec, + 0xa6, 0xda, 0x40, 0xba, 0x29, 0xa7, 0x4e, 0x88, 0x52, 0x0d, 0x9b, 0x0c, 0x44, 0xc9, 0xa6, 0x52, + 0xdd, 0x94, 0xae, 0x04, 0xa9, 0x36, 0x71, 0x42, 0xa6, 0x6c, 0xd3, 0x4d, 0x36, 0x90, 0x6d, 0xfb, + 0x90, 0x73, 0x10, 0xce, 0x7b, 0xd4, 0x60, 0x33, 0x4b, 0x13, 0x27, 0x16, 0x23, 0x67, 0xa6, 0x30, + 0x18, 0x9d, 0xd8, 0xa4, 0x13, 0x1e, 0x4a, 0x8f, 0x80, 0x2f, 0x50, 0x49, 0x5a, 0x01, 0x39, 0x85, + 0xb2, 0x5c, 0xb8, 0xa3, 0xb5, 0xd1, 0xdc, 0x65, 0xc8, 0xf5, 0x86, 0x47, 0x9a, 0x85, 0xa4, 0xeb, + 0x69, 0x8e, 0x47, 0xb2, 0x30, 0xa9, 0xd0, 0x81, 0x24, 0x42, 0x1c, 0x59, 0x0d, 0x72, 0xca, 0x25, + 0x15, 0xfc, 0xef, 0xdc, 0x25, 0x98, 0xec, 0x79, 0xfc, 0xa8, 0xc0, 0xc2, 0x97, 0xc6, 0x61, 0x76, + 0x58, 0xce, 0x0d, 0x4d, 0xff, 0x33, 0x30, 0x6e, 0x75, 0xdb, 0x07, 0xc8, 0x91, 0xe3, 0x84, 0x81, + 0x8d, 0xa4, 0x12, 0x24, 0x4d, 0xed, 0x00, 0x99, 0x72, 0x62, 0x5e, 0x58, 0xc8, 0x2d, 0x3f, 0x35, + 0x52, 0x56, 0x2f, 0x6e, 0x61, 0x88, 0x42, 0x91, 0xd2, 0xa7, 0x21, 0xc1, 0x8e, 0x38, 0xcc, 0xf0, + 0xe4, 0x68, 0x0c, 0x38, 0x17, 0x15, 0x82, 0x93, 0x1e, 0x82, 0x34, 0xfe, 0x4b, 0x63, 0x3b, 0x4e, + 0x7c, 0x4e, 0x61, 0x01, 0x8e, 0xab, 0x34, 0x07, 0x29, 0x92, 0x66, 0x0d, 0xc4, 0x4b, 0x83, 0x3f, + 0xc6, 0x0b, 0xd3, 0x40, 0x4d, 0xad, 0x6b, 0x7a, 0xea, 0x1d, 0xcd, 0xec, 0x22, 0x92, 0x30, 0x69, + 0x25, 0xcb, 0x84, 0x9f, 0xc5, 0x32, 0xe9, 0x3c, 0x64, 0x68, 0x56, 0x1a, 0x56, 0x03, 0xbd, 0x48, + 0x4e, 0x9f, 0xa4, 0x42, 0x13, 0x75, 0x13, 0x4b, 0xf0, 0xe3, 0x6f, 0xb9, 0xb6, 0xc5, 0x97, 0x96, + 0x3c, 0x02, 0x0b, 0xc8, 0xe3, 0x2f, 0xf5, 0x1f, 0x7c, 0x0f, 0x0f, 0x9f, 0x5e, 0x7f, 0x2e, 0x16, + 0xbe, 0x1d, 0x83, 0x04, 0xd9, 0x6f, 0x53, 0x90, 0xd9, 0x7b, 0x61, 0xb7, 0xaa, 0xae, 0xd7, 0xf6, + 0xcb, 0x5b, 0x55, 0x51, 0x90, 0x72, 0x00, 0x44, 0x70, 0x6d, 0xab, 0x56, 0xda, 0x13, 0x63, 0xfe, + 0x78, 0x73, 0x67, 0xef, 0xe2, 0xaa, 0x18, 0xf7, 0x01, 0xfb, 0x54, 0x90, 0x08, 0x1b, 0xac, 0x2c, + 0x8b, 0x49, 0x49, 0x84, 0x2c, 0x25, 0xd8, 0xbc, 0x59, 0x5d, 0xbf, 0xb8, 0x2a, 0x8e, 0xf7, 0x4a, + 0x56, 0x96, 0xc5, 0x09, 0x69, 0x12, 0xd2, 0x44, 0x52, 0xae, 0xd5, 0xb6, 0xc4, 0x94, 0xcf, 0x59, + 0xdf, 0x53, 0x36, 0x77, 0x36, 0xc4, 0xb4, 0xcf, 0xb9, 0xa1, 0xd4, 0xf6, 0x77, 0x45, 0xf0, 0x19, + 0xb6, 0xab, 0xf5, 0x7a, 0x69, 0xa3, 0x2a, 0x66, 0x7c, 0x8b, 0xf2, 0x0b, 0x7b, 0xd5, 0xba, 0x98, + 0xed, 0x71, 0x6b, 0x65, 0x59, 0x9c, 0xf4, 0x1f, 0x51, 0xdd, 0xd9, 0xdf, 0x16, 0x73, 0xd2, 0x34, + 0x4c, 0xd2, 0x47, 0x70, 0x27, 0xa6, 0xfa, 0x44, 0x17, 0x57, 0x45, 0x31, 0x70, 0x84, 0xb2, 0x4c, + 0xf7, 0x08, 0x2e, 0xae, 0x8a, 0x52, 0xa1, 0x02, 0x49, 0x92, 0x5d, 0x92, 0x04, 0xb9, 0xad, 0x52, + 0xb9, 0xba, 0xa5, 0xd6, 0x76, 0xf7, 0x36, 0x6b, 0x3b, 0xa5, 0x2d, 0x51, 0x08, 0x64, 0x4a, 0xf5, + 0x33, 0xfb, 0x9b, 0x4a, 0x75, 0x5d, 0x8c, 0x85, 0x65, 0xbb, 0xd5, 0xd2, 0x5e, 0x75, 0x5d, 0x8c, + 0x17, 0x74, 0x98, 0x1d, 0x76, 0xce, 0x0c, 0xdd, 0x19, 0xa1, 0x25, 0x8e, 0x9d, 0xb0, 0xc4, 0x84, + 0x6b, 0x60, 0x89, 0xbf, 0x2a, 0xc0, 0xcc, 0x90, 0xb3, 0x76, 0xe8, 0x43, 0x9e, 0x83, 0x24, 0x4d, + 0x51, 0x5a, 0x7d, 0x9e, 0x18, 0x7a, 0x68, 0x93, 0x84, 0x1d, 0xa8, 0x40, 0x04, 0x17, 0xae, 0xc0, + 0xf1, 0x13, 0x2a, 0x30, 0xa6, 0x18, 0x70, 0xf2, 0x65, 0x01, 0xe4, 0x93, 0xb8, 0x23, 0x0e, 0x8a, + 0x58, 0xcf, 0x41, 0x71, 0xb5, 0xdf, 0x81, 0x0b, 0x27, 0xcf, 0x61, 0xc0, 0x8b, 0xd7, 0x05, 0x38, + 0x33, 0xbc, 0x51, 0x19, 0xea, 0xc3, 0xa7, 0x61, 0xbc, 0x8d, 0xbc, 0x43, 0x9b, 0x17, 0xeb, 0x4f, + 0x0c, 0x29, 0x01, 0x58, 0xdd, 0x1f, 0x2b, 0x86, 0x0a, 0xd7, 0x90, 0xf8, 0x49, 0xdd, 0x06, 0xf5, + 0x66, 0xc0, 0xd3, 0x2f, 0xc4, 0xe0, 0x63, 0x43, 0xc9, 0x87, 0x3a, 0xfa, 0x30, 0x80, 0x61, 0x75, + 0xba, 0x1e, 0x2d, 0xc8, 0xf4, 0x7c, 0x4a, 0x13, 0x09, 0xd9, 0xfb, 0xf8, 0xec, 0xe9, 0x7a, 0xbe, + 0x3e, 0x4e, 0xf4, 0x40, 0x45, 0xc4, 0xe0, 0x72, 0xe0, 0x68, 0x82, 0x38, 0x9a, 0x3f, 0x61, 0xa6, + 0x03, 0xb5, 0xee, 0x19, 0x10, 0x75, 0xd3, 0x40, 0x96, 0xa7, 0xba, 0x9e, 0x83, 0xb4, 0xb6, 0x61, + 0xb5, 0xc8, 0x01, 0x9c, 0x2a, 0x26, 0x9b, 0x9a, 0xe9, 0x22, 0x65, 0x8a, 0xaa, 0xeb, 0x5c, 0x8b, + 0x11, 0xa4, 0xca, 0x38, 0x21, 0xc4, 0x78, 0x0f, 0x82, 0xaa, 0x7d, 0x44, 0xe1, 0x1b, 0x13, 0x90, + 0x09, 0xb5, 0x75, 0xd2, 0x05, 0xc8, 0xde, 0xd2, 0xee, 0x68, 0x2a, 0x6f, 0xd5, 0x69, 0x24, 0x32, + 0x58, 0xb6, 0xcb, 0xda, 0xf5, 0x67, 0x60, 0x96, 0x98, 0xd8, 0x5d, 0x0f, 0x39, 0xaa, 0x6e, 0x6a, + 0xae, 0x4b, 0x82, 0x96, 0x22, 0xa6, 0x12, 0xd6, 0xd5, 0xb0, 0xaa, 0xc2, 0x35, 0xd2, 0x1a, 0xcc, + 0x10, 0x44, 0xbb, 0x6b, 0x7a, 0x46, 0xc7, 0x44, 0x2a, 0x7e, 0x79, 0x70, 0xc9, 0x41, 0xec, 0x7b, + 0x36, 0x8d, 0x2d, 0xb6, 0x99, 0x01, 0xf6, 0xc8, 0x95, 0xd6, 0xe1, 0x61, 0x02, 0x6b, 0x21, 0x0b, + 0x39, 0x9a, 0x87, 0x54, 0xf4, 0xf9, 0xae, 0x66, 0xba, 0xaa, 0x66, 0x35, 0xd4, 0x43, 0xcd, 0x3d, + 0x94, 0x67, 0x31, 0x41, 0x39, 0x26, 0x0b, 0xca, 0x39, 0x6c, 0xb8, 0xc1, 0xec, 0xaa, 0xc4, 0xac, + 0x64, 0x35, 0xae, 0x6b, 0xee, 0xa1, 0x54, 0x84, 0x33, 0x84, 0xc5, 0xf5, 0x1c, 0xc3, 0x6a, 0xa9, + 0xfa, 0x21, 0xd2, 0x6f, 0xab, 0x5d, 0xaf, 0x79, 0x59, 0x7e, 0x28, 0xfc, 0x7c, 0xe2, 0x61, 0x9d, + 0xd8, 0x54, 0xb0, 0xc9, 0xbe, 0xd7, 0xbc, 0x2c, 0xd5, 0x21, 0x8b, 0x17, 0xa3, 0x6d, 0xbc, 0x84, + 0xd4, 0xa6, 0xed, 0x90, 0xca, 0x92, 0x1b, 0xb2, 0xb3, 0x43, 0x11, 0x5c, 0xac, 0x31, 0xc0, 0xb6, + 0xdd, 0x40, 0xc5, 0x64, 0x7d, 0xb7, 0x5a, 0x5d, 0x57, 0x32, 0x9c, 0xe5, 0x9a, 0xed, 0xe0, 0x84, + 0x6a, 0xd9, 0x7e, 0x80, 0x33, 0x34, 0xa1, 0x5a, 0x36, 0x0f, 0xef, 0x1a, 0xcc, 0xe8, 0x3a, 0x9d, + 0xb3, 0xa1, 0xab, 0xac, 0xc5, 0x77, 0x65, 0xb1, 0x27, 0x58, 0xba, 0xbe, 0x41, 0x0d, 0x58, 0x8e, + 0xbb, 0xd2, 0x15, 0xf8, 0x58, 0x10, 0xac, 0x30, 0x70, 0x7a, 0x60, 0x96, 0xfd, 0xd0, 0x35, 0x98, + 0xe9, 0x1c, 0x0d, 0x02, 0xa5, 0x9e, 0x27, 0x76, 0x8e, 0xfa, 0x61, 0x8f, 0x91, 0xd7, 0x36, 0x07, + 0xe9, 0x9a, 0x87, 0x1a, 0xf2, 0xd9, 0xb0, 0x75, 0x48, 0x21, 0x2d, 0x81, 0xa8, 0xeb, 0x2a, 0xb2, + 0xb4, 0x03, 0x13, 0xa9, 0x9a, 0x83, 0x2c, 0xcd, 0x95, 0xcf, 0x87, 0x8d, 0x73, 0xba, 0x5e, 0x25, + 0xda, 0x12, 0x51, 0x4a, 0x4f, 0xc2, 0xb4, 0x7d, 0x70, 0x4b, 0xa7, 0x99, 0xa5, 0x76, 0x1c, 0xd4, + 0x34, 0x5e, 0x94, 0x1f, 0x25, 0x61, 0x9a, 0xc2, 0x0a, 0x92, 0x57, 0xbb, 0x44, 0x2c, 0x3d, 0x01, + 0xa2, 0xee, 0x1e, 0x6a, 0x4e, 0x87, 0x94, 0x76, 0xb7, 0xa3, 0xe9, 0x48, 0x7e, 0x8c, 0x9a, 0x52, + 0xf9, 0x0e, 0x17, 0xe3, 0xcc, 0x76, 0xef, 0x1a, 0x4d, 0x8f, 0x33, 0x3e, 0x4e, 0x33, 0x9b, 0xc8, + 0x18, 0xdb, 0x4d, 0x98, 0xed, 0x5a, 0x86, 0xe5, 0x21, 0xa7, 0xe3, 0x20, 0xdc, 0xc4, 0xd3, 0x9d, + 0x28, 0xff, 0xf3, 0xc4, 0x09, 0x6d, 0xf8, 0x7e, 0xd8, 0x9a, 0x26, 0x80, 0x32, 0xd3, 0x1d, 0x14, + 0x16, 0x8a, 0x90, 0x0d, 0xe7, 0x85, 0x94, 0x06, 0x9a, 0x19, 0xa2, 0x80, 0x6b, 0x6c, 0xa5, 0xb6, + 0x8e, 0xab, 0xe3, 0xe7, 0xaa, 0x62, 0x0c, 0x57, 0xe9, 0xad, 0xcd, 0xbd, 0xaa, 0xaa, 0xec, 0xef, + 0xec, 0x6d, 0x6e, 0x57, 0xc5, 0xf8, 0x93, 0xe9, 0xd4, 0x0f, 0x26, 0xc4, 0x7b, 0xf7, 0xee, 0xdd, + 0x8b, 0x15, 0xbe, 0x1b, 0x83, 0x5c, 0x6f, 0x67, 0x2c, 0xfd, 0x14, 0x9c, 0xe5, 0xaf, 0xb1, 0x2e, + 0xf2, 0xd4, 0xbb, 0x86, 0x43, 0x52, 0xb5, 0xad, 0xd1, 0xde, 0xd2, 0x8f, 0xf2, 0x2c, 0xb3, 0xaa, + 0x23, 0xef, 0x79, 0xc3, 0xc1, 0x89, 0xd8, 0xd6, 0x3c, 0x69, 0x0b, 0xce, 0x5b, 0xb6, 0xea, 0x7a, + 0x9a, 0xd5, 0xd0, 0x9c, 0x86, 0x1a, 0x5c, 0x20, 0xa8, 0x9a, 0xae, 0x23, 0xd7, 0xb5, 0x69, 0x89, + 0xf0, 0x59, 0x3e, 0x6e, 0xd9, 0x75, 0x66, 0x1c, 0x9c, 0x9d, 0x25, 0x66, 0xda, 0x97, 0x11, 0xf1, + 0x93, 0x32, 0xe2, 0x21, 0x48, 0xb7, 0xb5, 0x8e, 0x8a, 0x2c, 0xcf, 0x39, 0x22, 0xfd, 0x5c, 0x4a, + 0x49, 0xb5, 0xb5, 0x4e, 0x15, 0x8f, 0x3f, 0xba, 0x35, 0x08, 0xc7, 0xf1, 0x9f, 0xe2, 0x90, 0x0d, + 0xf7, 0x74, 0xb8, 0x45, 0xd6, 0xc9, 0xf9, 0x2d, 0x90, 0x1d, 0xfe, 0xc8, 0x03, 0x3b, 0xc0, 0xc5, + 0x0a, 0x3e, 0xd8, 0x8b, 0xe3, 0xb4, 0xd3, 0x52, 0x28, 0x12, 0x17, 0x55, 0xbc, 0xa7, 0x11, 0xed, + 0xdf, 0x53, 0x0a, 0x1b, 0x49, 0x1b, 0x30, 0x7e, 0xcb, 0x25, 0xdc, 0xe3, 0x84, 0xfb, 0xd1, 0x07, + 0x73, 0xdf, 0xa8, 0x13, 0xf2, 0xf4, 0x8d, 0xba, 0xba, 0x53, 0x53, 0xb6, 0x4b, 0x5b, 0x0a, 0x83, + 0x4b, 0xe7, 0x20, 0x61, 0x6a, 0x2f, 0x1d, 0xf5, 0x96, 0x00, 0x22, 0x1a, 0x35, 0xf0, 0xe7, 0x20, + 0x71, 0x17, 0x69, 0xb7, 0x7b, 0x0f, 0x5e, 0x22, 0xfa, 0x08, 0x53, 0x7f, 0x09, 0x92, 0x24, 0x5e, + 0x12, 0x00, 0x8b, 0x98, 0x38, 0x26, 0xa5, 0x20, 0x51, 0xa9, 0x29, 0x38, 0xfd, 0x45, 0xc8, 0x52, + 0xa9, 0xba, 0xbb, 0x59, 0xad, 0x54, 0xc5, 0x58, 0x61, 0x0d, 0xc6, 0x69, 0x10, 0xf0, 0xd6, 0xf0, + 0xc3, 0x20, 0x8e, 0xb1, 0x21, 0xe3, 0x10, 0xb8, 0x76, 0x7f, 0xbb, 0x5c, 0x55, 0xc4, 0x58, 0x78, + 0x79, 0x5d, 0xc8, 0x86, 0xdb, 0xb9, 0x1f, 0x4f, 0x4e, 0xfd, 0xb5, 0x00, 0x99, 0x50, 0x7b, 0x86, + 0x1b, 0x03, 0xcd, 0x34, 0xed, 0xbb, 0xaa, 0x66, 0x1a, 0x9a, 0xcb, 0x92, 0x02, 0x88, 0xa8, 0x84, + 0x25, 0xa3, 0x2e, 0xda, 0x8f, 0xc5, 0xf9, 0xd7, 0x04, 0x10, 0xfb, 0x5b, 0xbb, 0x3e, 0x07, 0x85, + 0x9f, 0xa8, 0x83, 0xaf, 0x0a, 0x90, 0xeb, 0xed, 0xe7, 0xfa, 0xdc, 0xbb, 0xf0, 0x13, 0x75, 0xef, + 0xed, 0x18, 0x4c, 0xf6, 0x74, 0x71, 0xa3, 0x7a, 0xf7, 0x79, 0x98, 0x36, 0x1a, 0xa8, 0xdd, 0xb1, + 0x3d, 0x64, 0xe9, 0x47, 0xaa, 0x89, 0xee, 0x20, 0x53, 0x2e, 0x90, 0x83, 0x62, 0xe9, 0xc1, 0x7d, + 0xe2, 0xe2, 0x66, 0x80, 0xdb, 0xc2, 0xb0, 0xe2, 0xcc, 0xe6, 0x7a, 0x75, 0x7b, 0xb7, 0xb6, 0x57, + 0xdd, 0xa9, 0xbc, 0xa0, 0xee, 0xef, 0xfc, 0xf4, 0x4e, 0xed, 0xf9, 0x1d, 0x45, 0x34, 0xfa, 0xcc, + 0x3e, 0xc2, 0xad, 0xbe, 0x0b, 0x62, 0xbf, 0x53, 0xd2, 0x59, 0x18, 0xe6, 0x96, 0x38, 0x26, 0xcd, + 0xc0, 0xd4, 0x4e, 0x4d, 0xad, 0x6f, 0xae, 0x57, 0xd5, 0xea, 0xb5, 0x6b, 0xd5, 0xca, 0x5e, 0x9d, + 0xbe, 0x38, 0xfb, 0xd6, 0x7b, 0xbd, 0x9b, 0xfa, 0x95, 0x38, 0xcc, 0x0c, 0xf1, 0x44, 0x2a, 0xb1, + 0x9e, 0x9d, 0xbe, 0x46, 0x3c, 0x3d, 0x8a, 0xf7, 0x8b, 0xb8, 0x2b, 0xd8, 0xd5, 0x1c, 0x8f, 0xb5, + 0xf8, 0x4f, 0x00, 0x8e, 0x92, 0xe5, 0x19, 0x4d, 0x03, 0x39, 0xec, 0x9e, 0x81, 0x36, 0xf2, 0x53, + 0x81, 0x9c, 0x5e, 0x35, 0x7c, 0x12, 0xa4, 0x8e, 0xed, 0x1a, 0x9e, 0x71, 0x07, 0xa9, 0x86, 0xc5, + 0x2f, 0x25, 0x70, 0x63, 0x9f, 0x50, 0x44, 0xae, 0xd9, 0xb4, 0x3c, 0xdf, 0xda, 0x42, 0x2d, 0xad, + 0xcf, 0x1a, 0x1f, 0xe0, 0x71, 0x45, 0xe4, 0x1a, 0xdf, 0xfa, 0x02, 0x64, 0x1b, 0x76, 0x17, 0xb7, + 0x49, 0xd4, 0x0e, 0xd7, 0x0b, 0x41, 0xc9, 0x50, 0x99, 0x6f, 0xc2, 0xfa, 0xd8, 0xe0, 0x36, 0x24, + 0xab, 0x64, 0xa8, 0x8c, 0x9a, 0x3c, 0x0e, 0x53, 0x5a, 0xab, 0xe5, 0x60, 0x72, 0x4e, 0x44, 0x3b, + 0xf3, 0x9c, 0x2f, 0x26, 0x86, 0x73, 0x37, 0x20, 0xc5, 0xe3, 0x80, 0x4b, 0x32, 0x8e, 0x84, 0xda, + 0xa1, 0x77, 0x52, 0xb1, 0x85, 0xb4, 0x92, 0xb2, 0xb8, 0xf2, 0x02, 0x64, 0x0d, 0x57, 0x0d, 0x2e, + 0x47, 0x63, 0xf3, 0xb1, 0x85, 0x94, 0x92, 0x31, 0x5c, 0xff, 0x36, 0xac, 0xf0, 0x7a, 0x0c, 0x72, + 0xbd, 0x97, 0xbb, 0xd2, 0x3a, 0xa4, 0x4c, 0x5b, 0xd7, 0x48, 0x6a, 0xd1, 0x5f, 0x16, 0x16, 0x22, + 0xee, 0x83, 0x17, 0xb7, 0x98, 0xbd, 0xe2, 0x23, 0xe7, 0xfe, 0x5e, 0x80, 0x14, 0x17, 0x4b, 0x67, + 0x20, 0xd1, 0xd1, 0xbc, 0x43, 0x42, 0x97, 0x2c, 0xc7, 0x44, 0x41, 0x21, 0x63, 0x2c, 0x77, 0x3b, + 0x9a, 0x45, 0x52, 0x80, 0xc9, 0xf1, 0x18, 0xaf, 0xab, 0x89, 0xb4, 0x06, 0x69, 0xfb, 0xed, 0x76, + 0x1b, 0x59, 0x9e, 0xcb, 0xd7, 0x95, 0xc9, 0x2b, 0x4c, 0x2c, 0x3d, 0x05, 0xd3, 0x9e, 0xa3, 0x19, + 0x66, 0x8f, 0x6d, 0x82, 0xd8, 0x8a, 0x5c, 0xe1, 0x1b, 0x17, 0xe1, 0x1c, 0xe7, 0x6d, 0x20, 0x4f, + 0xd3, 0x0f, 0x51, 0x23, 0x00, 0x8d, 0x93, 0x9b, 0xc3, 0xb3, 0xcc, 0x60, 0x9d, 0xe9, 0x39, 0xb6, + 0xf0, 0x3d, 0x01, 0xa6, 0xf9, 0x8b, 0x4a, 0xc3, 0x0f, 0xd6, 0x36, 0x80, 0x66, 0x59, 0xb6, 0x17, + 0x0e, 0xd7, 0x60, 0x2a, 0x0f, 0xe0, 0x16, 0x4b, 0x3e, 0x48, 0x09, 0x11, 0xcc, 0xb5, 0x01, 0x02, + 0xcd, 0x89, 0x61, 0x3b, 0x0f, 0x19, 0x76, 0x73, 0x4f, 0x7e, 0xfe, 0xa1, 0xaf, 0xb6, 0x40, 0x45, + 0xf8, 0x8d, 0x46, 0x9a, 0x85, 0xe4, 0x01, 0x6a, 0x19, 0x16, 0xbb, 0x4f, 0xa4, 0x03, 0x7e, 0x4b, + 0x99, 0xf0, 0x6f, 0x29, 0xcb, 0x37, 0x61, 0x46, 0xb7, 0xdb, 0xfd, 0xee, 0x96, 0xc5, 0xbe, 0xd7, + 0x6b, 0xf7, 0xba, 0xf0, 0x39, 0x08, 0x5a, 0xcc, 0xaf, 0xc6, 0xe2, 0x1b, 0xbb, 0xe5, 0xaf, 0xc7, + 0xe6, 0x36, 0x28, 0x6e, 0x97, 0x4f, 0x53, 0x41, 0x4d, 0x13, 0xe9, 0xd8, 0x75, 0xf8, 0xe1, 0x27, + 0xe0, 0xe9, 0x96, 0xe1, 0x1d, 0x76, 0x0f, 0x16, 0x75, 0xbb, 0xbd, 0xd4, 0xb2, 0x5b, 0x76, 0xf0, + 0x73, 0x17, 0x1e, 0x91, 0x01, 0xf9, 0x8f, 0xfd, 0xe4, 0x95, 0xf6, 0xa5, 0x73, 0x91, 0xbf, 0x8f, + 0x15, 0x77, 0x60, 0x86, 0x19, 0xab, 0xe4, 0xce, 0x9d, 0xbe, 0x1a, 0x48, 0x0f, 0xbc, 0x77, 0x91, + 0xbf, 0xf5, 0x0e, 0xa9, 0xd5, 0xca, 0x34, 0x83, 0x62, 0x1d, 0x7d, 0x81, 0x28, 0x2a, 0xf0, 0xb1, + 0x1e, 0x3e, 0xba, 0x2f, 0x91, 0x13, 0xc1, 0xf8, 0x5d, 0xc6, 0x38, 0x13, 0x62, 0xac, 0x33, 0x68, + 0xb1, 0x02, 0x93, 0xa7, 0xe1, 0xfa, 0x5b, 0xc6, 0x95, 0x45, 0x61, 0x92, 0x0d, 0x98, 0x22, 0x24, + 0x7a, 0xd7, 0xf5, 0xec, 0x36, 0x39, 0xf4, 0x1e, 0x4c, 0xf3, 0x77, 0xef, 0xd0, 0x8d, 0x92, 0xc3, + 0xb0, 0x8a, 0x8f, 0x2a, 0x16, 0x81, 0xfc, 0xcc, 0xd0, 0x40, 0xba, 0x19, 0xc1, 0xf0, 0x06, 0x73, + 0xc4, 0xb7, 0x2f, 0x7e, 0x16, 0x66, 0xf1, 0xff, 0xe4, 0x4c, 0x0a, 0x7b, 0x12, 0x7d, 0xcb, 0x24, + 0x7f, 0xef, 0x65, 0xba, 0x17, 0x67, 0x7c, 0x82, 0x90, 0x4f, 0xa1, 0x55, 0x6c, 0x21, 0xcf, 0x43, + 0x8e, 0xab, 0x6a, 0xe6, 0x30, 0xf7, 0x42, 0xaf, 0xe9, 0xf2, 0x97, 0xdf, 0xed, 0x5d, 0xc5, 0x0d, + 0x8a, 0x2c, 0x99, 0x66, 0x71, 0x1f, 0xce, 0x0e, 0xc9, 0x8a, 0x11, 0x38, 0x5f, 0x61, 0x9c, 0xb3, + 0x03, 0x99, 0x81, 0x69, 0x77, 0x81, 0xcb, 0xfd, 0xb5, 0x1c, 0x81, 0xf3, 0xb7, 0x19, 0xa7, 0xc4, + 0xb0, 0x7c, 0x49, 0x31, 0xe3, 0x0d, 0x98, 0xbe, 0x83, 0x9c, 0x03, 0xdb, 0x65, 0x57, 0x23, 0x23, + 0xd0, 0xbd, 0xca, 0xe8, 0xa6, 0x18, 0x90, 0xdc, 0x95, 0x60, 0xae, 0x2b, 0x90, 0x6a, 0x6a, 0x3a, + 0x1a, 0x81, 0xe2, 0x2b, 0x8c, 0x62, 0x02, 0xdb, 0x63, 0x68, 0x09, 0xb2, 0x2d, 0x9b, 0x95, 0xa5, + 0x68, 0xf8, 0x6b, 0x0c, 0x9e, 0xe1, 0x18, 0x46, 0xd1, 0xb1, 0x3b, 0x5d, 0x13, 0xd7, 0xac, 0x68, + 0x8a, 0xdf, 0xe1, 0x14, 0x1c, 0xc3, 0x28, 0x4e, 0x11, 0xd6, 0xdf, 0xe5, 0x14, 0x6e, 0x28, 0x9e, + 0xcf, 0x41, 0xc6, 0xb6, 0xcc, 0x23, 0xdb, 0x1a, 0xc5, 0x89, 0xdf, 0x63, 0x0c, 0xc0, 0x20, 0x98, + 0xe0, 0x2a, 0xa4, 0x47, 0x5d, 0x88, 0xdf, 0x7f, 0x97, 0x6f, 0x0f, 0xbe, 0x02, 0x1b, 0x30, 0xc5, + 0x0f, 0x28, 0xc3, 0xb6, 0x46, 0xa0, 0xf8, 0x03, 0x46, 0x91, 0x0b, 0xc1, 0xd8, 0x34, 0x3c, 0xe4, + 0x7a, 0x2d, 0x34, 0x0a, 0xc9, 0xeb, 0x7c, 0x1a, 0x0c, 0xc2, 0x42, 0x79, 0x80, 0x2c, 0xfd, 0x70, + 0x34, 0x86, 0xaf, 0xf1, 0x50, 0x72, 0x0c, 0xa6, 0xa8, 0xc0, 0x64, 0x5b, 0x73, 0xdc, 0x43, 0xcd, + 0x1c, 0x69, 0x39, 0xfe, 0x90, 0x71, 0x64, 0x7d, 0x10, 0x8b, 0x48, 0xd7, 0x3a, 0x0d, 0xcd, 0xd7, + 0x79, 0x44, 0x42, 0x30, 0xb6, 0xf5, 0x5c, 0x8f, 0x5c, 0x40, 0x9d, 0x86, 0xed, 0x1b, 0x7c, 0xeb, + 0x51, 0xec, 0x76, 0x98, 0xf1, 0x2a, 0xa4, 0x5d, 0xe3, 0xa5, 0x91, 0x68, 0xfe, 0x88, 0xaf, 0x34, + 0x01, 0x60, 0xf0, 0x0b, 0x70, 0x6e, 0x68, 0x99, 0x18, 0x81, 0xec, 0x8f, 0x19, 0xd9, 0x99, 0x21, + 0xa5, 0x82, 0x1d, 0x09, 0xa7, 0xa5, 0xfc, 0x13, 0x7e, 0x24, 0xa0, 0x3e, 0xae, 0x5d, 0xfc, 0xa2, + 0xe0, 0x6a, 0xcd, 0xd3, 0x45, 0xed, 0x4f, 0x79, 0xd4, 0x28, 0xb6, 0x27, 0x6a, 0x7b, 0x70, 0x86, + 0x31, 0x9e, 0x6e, 0x5d, 0xbf, 0xc9, 0x0f, 0x56, 0x8a, 0xde, 0xef, 0x5d, 0xdd, 0x9f, 0x81, 0x39, + 0x3f, 0x9c, 0xbc, 0x23, 0x75, 0xd5, 0xb6, 0xd6, 0x19, 0x81, 0xf9, 0x5b, 0x8c, 0x99, 0x9f, 0xf8, + 0x7e, 0x4b, 0xeb, 0x6e, 0x6b, 0x1d, 0x4c, 0x7e, 0x13, 0x64, 0x4e, 0xde, 0xb5, 0x1c, 0xa4, 0xdb, + 0x2d, 0xcb, 0x78, 0x09, 0x35, 0x46, 0xa0, 0xfe, 0xb3, 0xbe, 0xa5, 0xda, 0x0f, 0xc1, 0x31, 0xf3, + 0x26, 0x88, 0x7e, 0xaf, 0xa2, 0x1a, 0xed, 0x8e, 0xed, 0x78, 0x11, 0x8c, 0x7f, 0xce, 0x57, 0xca, + 0xc7, 0x6d, 0x12, 0x58, 0xb1, 0x0a, 0x39, 0x32, 0x1c, 0x35, 0x25, 0xff, 0x82, 0x11, 0x4d, 0x06, + 0x28, 0x76, 0x70, 0xe8, 0x76, 0xbb, 0xa3, 0x39, 0xa3, 0x9c, 0x7f, 0x7f, 0xc9, 0x0f, 0x0e, 0x06, + 0x61, 0x07, 0x87, 0x77, 0xd4, 0x41, 0xb8, 0xda, 0x8f, 0xc0, 0xf0, 0x6d, 0x7e, 0x70, 0x70, 0x0c, + 0xa3, 0xe0, 0x0d, 0xc3, 0x08, 0x14, 0x7f, 0xc5, 0x29, 0x38, 0x06, 0x53, 0x7c, 0x26, 0x28, 0xb4, + 0x0e, 0x6a, 0x19, 0xae, 0xe7, 0xd0, 0x3e, 0xf8, 0xc1, 0x54, 0xdf, 0x79, 0xb7, 0xb7, 0x09, 0x53, + 0x42, 0xd0, 0xe2, 0x0d, 0x98, 0xea, 0x6b, 0x31, 0xa4, 0xa8, 0x6f, 0x16, 0xe4, 0x9f, 0x7d, 0x9f, + 0x1d, 0x46, 0xbd, 0x1d, 0x46, 0x71, 0x0b, 0xaf, 0x7b, 0x6f, 0x1f, 0x10, 0x4d, 0xf6, 0xf2, 0xfb, + 0xfe, 0xd2, 0xf7, 0xb4, 0x01, 0xc5, 0x6b, 0x30, 0xd9, 0xd3, 0x03, 0x44, 0x53, 0xfd, 0x1c, 0xa3, + 0xca, 0x86, 0x5b, 0x80, 0xe2, 0x1a, 0x24, 0x70, 0x3d, 0x8f, 0x86, 0xff, 0x3c, 0x83, 0x13, 0xf3, + 0xe2, 0xa7, 0x20, 0xc5, 0xeb, 0x78, 0x34, 0xf4, 0x17, 0x18, 0xd4, 0x87, 0x60, 0x38, 0xaf, 0xe1, + 0xd1, 0xf0, 0x5f, 0xe4, 0x70, 0x0e, 0xc1, 0xf0, 0xd1, 0x43, 0xf8, 0x37, 0xbf, 0x94, 0x60, 0xe7, + 0x30, 0x8f, 0xdd, 0x55, 0x98, 0x60, 0xc5, 0x3b, 0x1a, 0xfd, 0x05, 0xf6, 0x70, 0x8e, 0x28, 0x5e, + 0x82, 0xe4, 0x88, 0x01, 0xff, 0x65, 0x06, 0xa5, 0xf6, 0xc5, 0x0a, 0x64, 0x42, 0x05, 0x3b, 0x1a, + 0xfe, 0x2b, 0x0c, 0x1e, 0x46, 0x61, 0xd7, 0x59, 0xc1, 0x8e, 0x26, 0xf8, 0x55, 0xee, 0x3a, 0x43, + 0xe0, 0xb0, 0xf1, 0x5a, 0x1d, 0x8d, 0xfe, 0x35, 0x1e, 0x75, 0x0e, 0x29, 0x3e, 0x07, 0x69, 0xff, + 0xfc, 0x8d, 0xc6, 0xff, 0x3a, 0xc3, 0x07, 0x18, 0x1c, 0x81, 0xd0, 0xf9, 0x1f, 0x4d, 0xf1, 0x45, + 0x1e, 0x81, 0x10, 0x0a, 0x6f, 0xa3, 0xfe, 0x9a, 0x1e, 0xcd, 0xf4, 0x1b, 0x7c, 0x1b, 0xf5, 0x95, + 0x74, 0xbc, 0x9a, 0xe4, 0x18, 0x8c, 0xa6, 0xf8, 0x4d, 0xbe, 0x9a, 0xc4, 0x1e, 0xbb, 0xd1, 0x5f, + 0x24, 0xa3, 0x39, 0x7e, 0x8b, 0xbb, 0xd1, 0x57, 0x23, 0x8b, 0xbb, 0x20, 0x0d, 0x16, 0xc8, 0x68, + 0xbe, 0x2f, 0x31, 0xbe, 0xe9, 0x81, 0xfa, 0x58, 0x7c, 0x1e, 0xce, 0x0c, 0x2f, 0x8e, 0xd1, 0xac, + 0x5f, 0x7e, 0xbf, 0xef, 0x75, 0x26, 0x5c, 0x1b, 0x8b, 0x7b, 0xc1, 0x29, 0x1b, 0x2e, 0x8c, 0xd1, + 0xb4, 0xaf, 0xbc, 0xdf, 0x7b, 0xd0, 0x86, 0xeb, 0x62, 0xb1, 0x04, 0x10, 0xd4, 0xa4, 0x68, 0xae, + 0x57, 0x19, 0x57, 0x08, 0x84, 0xb7, 0x06, 0x2b, 0x49, 0xd1, 0xf8, 0xaf, 0xf0, 0xad, 0xc1, 0x10, + 0x78, 0x6b, 0xf0, 0x6a, 0x14, 0x8d, 0x7e, 0x8d, 0x6f, 0x0d, 0x0e, 0x29, 0x5e, 0x85, 0x94, 0xd5, + 0x35, 0x4d, 0x9c, 0x5b, 0xd2, 0x83, 0x3f, 0x23, 0x92, 0xff, 0xe5, 0x43, 0x06, 0xe6, 0x80, 0xe2, + 0x1a, 0x24, 0x51, 0xfb, 0x00, 0x35, 0xa2, 0x90, 0xff, 0xfa, 0x21, 0x3f, 0x4f, 0xb0, 0x75, 0xf1, + 0x39, 0x00, 0xfa, 0x32, 0x4d, 0x7e, 0x25, 0x8a, 0xc0, 0xfe, 0xdb, 0x87, 0xec, 0x0b, 0x85, 0x00, + 0x12, 0x10, 0xd0, 0xef, 0x1d, 0x1e, 0x4c, 0xf0, 0x6e, 0x2f, 0x01, 0x79, 0x01, 0xbf, 0x02, 0x13, + 0xb7, 0x5c, 0xdb, 0xf2, 0xb4, 0x56, 0x14, 0xfa, 0xdf, 0x19, 0x9a, 0xdb, 0xe3, 0x80, 0xb5, 0x6d, + 0x07, 0x79, 0x5a, 0xcb, 0x8d, 0xc2, 0xfe, 0x07, 0xc3, 0xfa, 0x00, 0x0c, 0xd6, 0x35, 0xd7, 0x1b, + 0x65, 0xde, 0xff, 0xc9, 0xc1, 0x1c, 0x80, 0x9d, 0xc6, 0xff, 0xdf, 0x46, 0x47, 0x51, 0xd8, 0xf7, + 0xb8, 0xd3, 0xcc, 0xbe, 0xf8, 0x29, 0x48, 0xe3, 0x7f, 0xe9, 0x57, 0x3b, 0x11, 0xe0, 0xff, 0x62, + 0xe0, 0x00, 0x81, 0x9f, 0xec, 0x7a, 0x0d, 0xcf, 0x88, 0x0e, 0xf6, 0x7f, 0xb3, 0x95, 0xe6, 0xf6, + 0xc5, 0x12, 0x64, 0x5c, 0xaf, 0xd1, 0xe8, 0xb2, 0x8e, 0x26, 0x02, 0xfe, 0xc3, 0x0f, 0xfd, 0x97, + 0x5c, 0x1f, 0x53, 0xbe, 0x30, 0xfc, 0xb2, 0x0e, 0x36, 0xec, 0x0d, 0x9b, 0x5e, 0xd3, 0xc1, 0x07, + 0x29, 0x90, 0x75, 0xbb, 0x7d, 0x60, 0xbb, 0x4b, 0x16, 0x32, 0xbc, 0x43, 0xe4, 0x2c, 0xd9, 0x16, + 0xb3, 0x95, 0xe2, 0xb6, 0x85, 0xe6, 0x4e, 0x77, 0x29, 0x57, 0x38, 0x07, 0xc9, 0x7a, 0xf7, 0xe0, + 0xe0, 0x48, 0x12, 0x21, 0xee, 0x76, 0x0f, 0xd8, 0x57, 0x25, 0xf8, 0xdf, 0xc2, 0x5b, 0x71, 0x98, + 0x2c, 0x99, 0xe6, 0xde, 0x51, 0x07, 0xb9, 0x35, 0x0b, 0xd5, 0x9a, 0x92, 0x0c, 0xe3, 0x64, 0x16, + 0xcf, 0x12, 0x33, 0xe1, 0xfa, 0x98, 0xc2, 0xc6, 0xbe, 0x66, 0x99, 0xdc, 0x55, 0xc6, 0x7c, 0xcd, + 0xb2, 0xaf, 0x59, 0xa1, 0x57, 0x95, 0xbe, 0x66, 0xc5, 0xd7, 0xac, 0x92, 0x0b, 0xcb, 0xb8, 0xaf, + 0x59, 0xf5, 0x35, 0x6b, 0xe4, 0x42, 0x7e, 0xd2, 0xd7, 0xac, 0xf9, 0x9a, 0x8b, 0xe4, 0x0a, 0x3e, + 0xe1, 0x6b, 0x2e, 0xfa, 0x9a, 0x4b, 0xe4, 0xe6, 0x7d, 0xda, 0xd7, 0x5c, 0xf2, 0x35, 0x97, 0xc9, + 0x6d, 0xbb, 0xe4, 0x6b, 0x2e, 0xfb, 0x9a, 0x2b, 0xe4, 0xf3, 0x91, 0x09, 0x5f, 0x73, 0x45, 0x9a, + 0x83, 0x09, 0x3a, 0xb3, 0x67, 0xc8, 0x4f, 0xb2, 0x53, 0xd7, 0xc7, 0x14, 0x2e, 0x08, 0x74, 0xcf, + 0x92, 0x4f, 0x44, 0xc6, 0x03, 0xdd, 0xb3, 0x81, 0x6e, 0x99, 0x7c, 0x28, 0x2d, 0x06, 0xba, 0xe5, + 0x40, 0xb7, 0x22, 0x4f, 0xe2, 0xc5, 0x0f, 0x74, 0x2b, 0x81, 0x6e, 0x55, 0xce, 0xe1, 0x15, 0x08, + 0x74, 0xab, 0x81, 0x6e, 0x4d, 0x9e, 0x9a, 0x17, 0x16, 0xb2, 0x81, 0x6e, 0x4d, 0x7a, 0x1a, 0x32, + 0x6e, 0xf7, 0x40, 0x65, 0x5f, 0x10, 0x90, 0x4f, 0x51, 0x32, 0xcb, 0xb0, 0x88, 0x73, 0x82, 0x2c, + 0xeb, 0xf5, 0x31, 0x05, 0xdc, 0xee, 0x01, 0x3b, 0x1d, 0xcb, 0x59, 0x20, 0x97, 0x09, 0x2a, 0xf9, + 0x00, 0xb3, 0xf0, 0xa6, 0x00, 0xe9, 0xbd, 0xbb, 0x36, 0xf9, 0x41, 0xd6, 0xfd, 0x7f, 0x5e, 0x5c, + 0xee, 0xf4, 0xca, 0x2a, 0xf9, 0xcd, 0x2c, 0x7d, 0x5d, 0x50, 0xb8, 0x20, 0xd0, 0xad, 0xc9, 0x8f, + 0x90, 0x09, 0xf9, 0xba, 0x35, 0x69, 0x09, 0xb2, 0xa1, 0x09, 0x2d, 0x93, 0xaf, 0x4b, 0x7a, 0x67, + 0x24, 0x28, 0x99, 0x60, 0x46, 0xcb, 0xe5, 0x24, 0xe0, 0xb4, 0xc7, 0x7f, 0xbc, 0xbb, 0x76, 0xe1, + 0x8b, 0x31, 0xc8, 0xd0, 0xfb, 0x47, 0x32, 0x2b, 0xfc, 0x28, 0xda, 0x8f, 0x1f, 0x31, 0x37, 0xc6, + 0x14, 0x2e, 0x90, 0x14, 0x00, 0x6a, 0x8a, 0x33, 0x9c, 0x7a, 0x52, 0x7e, 0xe6, 0x1f, 0xdf, 0x3a, + 0xff, 0xc9, 0x13, 0x77, 0x10, 0x8e, 0xdd, 0x12, 0x3d, 0x5d, 0x17, 0xf7, 0x0d, 0xcb, 0x7b, 0x76, + 0xf9, 0x32, 0x0e, 0x70, 0xc0, 0x22, 0xed, 0x43, 0xaa, 0xa2, 0xb9, 0xe4, 0xf3, 0x32, 0xe2, 0x7a, + 0xa2, 0x7c, 0xe9, 0x7f, 0xdf, 0x3a, 0xbf, 0x12, 0xc1, 0xc8, 0x0e, 0xbe, 0xc5, 0xed, 0x23, 0xcc, + 0x7a, 0x71, 0x15, 0xc3, 0xaf, 0x8f, 0x29, 0x3e, 0x95, 0xb4, 0xcc, 0x5d, 0xdd, 0xd1, 0xda, 0xf4, + 0x33, 0x9a, 0x78, 0x59, 0x3c, 0x7e, 0xeb, 0x7c, 0x76, 0xfb, 0x28, 0x90, 0x07, 0xae, 0xe0, 0x51, + 0x39, 0x05, 0xe3, 0xd4, 0xd5, 0xf2, 0xfa, 0x1b, 0xf7, 0xf3, 0x63, 0x6f, 0xde, 0xcf, 0x8f, 0xfd, + 0xc3, 0xfd, 0xfc, 0xd8, 0xdb, 0xf7, 0xf3, 0xc2, 0x7b, 0xf7, 0xf3, 0xc2, 0x07, 0xf7, 0xf3, 0xc2, + 0xbd, 0xe3, 0xbc, 0xf0, 0xb5, 0xe3, 0xbc, 0xf0, 0xcd, 0xe3, 0xbc, 0xf0, 0x9d, 0xe3, 0xbc, 0xf0, + 0xc6, 0x71, 0x7e, 0xec, 0xcd, 0xe3, 0xfc, 0xd8, 0xdb, 0xc7, 0x79, 0xe1, 0x07, 0xc7, 0xf9, 0xb1, + 0xf7, 0x8e, 0xf3, 0xc2, 0x07, 0xc7, 0xf9, 0xb1, 0x7b, 0xdf, 0xcf, 0x8f, 0xfd, 0x5f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x62, 0x75, 0xc3, 0x94, 0xd7, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/unmarshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/unmarshaler/one.pb.go index 8899039a7..63958ee3a 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/unmarshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/unmarshaler/one.pb.go @@ -987,253 +987,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3926 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0x22, 0xcd, 0x9c, 0x19, 0x8d, 0xa8, 0x5f, 0xf2, 0x9a, 0x2b, 0xdb, 0xb3, 0xda, - 0xb1, 0x1d, 0xcb, 0x76, 0x2c, 0xd9, 0xba, 0xec, 0x65, 0xb6, 0x89, 0x31, 0x92, 0xc6, 0x5a, 0x19, - 0xba, 0x85, 0x92, 0x12, 0x3b, 0x79, 0x20, 0x38, 0x9c, 0x7f, 0x46, 0xdc, 0xe5, 0x90, 0x53, 0x92, - 0xb3, 0x6b, 0xf9, 0x69, 0x03, 0xf7, 0x82, 0x20, 0xe8, 0x2d, 0x2d, 0xd0, 0xc4, 0x71, 0xdc, 0x34, - 0x40, 0xeb, 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x41, 0x9f, 0xfa, 0x92, 0xd6, 0x4f, 0x85, 0xf3, 0x56, - 0x14, 0x85, 0x91, 0x55, 0x0d, 0x34, 0x6d, 0xdd, 0xd6, 0x6d, 0x0c, 0x34, 0xa8, 0xfb, 0x50, 0xfc, - 0x37, 0x92, 0x73, 0xd1, 0x72, 0x14, 0x34, 0x97, 0x27, 0x89, 0xe7, 0x9c, 0xef, 0xe3, 0xf9, 0xcf, - 0x7f, 0x78, 0xce, 0xe1, 0x3f, 0x84, 0x4f, 0x2f, 0xc3, 0x6c, 0xd3, 0x71, 0x9a, 0x16, 0x5e, 0x68, - 0xbb, 0x8e, 0xef, 0xd4, 0x3a, 0x8d, 0x85, 0x3a, 0xf6, 0x0c, 0xd7, 0x6c, 0xfb, 0x8e, 0x3b, 0x4f, - 0x65, 0x68, 0x82, 0x59, 0xcc, 0x0b, 0x8b, 0xd2, 0x36, 0x4c, 0x3e, 0x67, 0x5a, 0x78, 0x3d, 0x30, - 0xdc, 0xc7, 0x3e, 0xba, 0x02, 0xa9, 0x86, 0x69, 0x61, 0x45, 0x9a, 0x4d, 0xce, 0xe5, 0x16, 0x1f, - 0x99, 0xef, 0x01, 0xcd, 0x77, 0x23, 0xf6, 0x88, 0x58, 0xa5, 0x88, 0xd2, 0x3b, 0x29, 0x98, 0x1a, - 0xa0, 0x45, 0x08, 0x52, 0xb6, 0xde, 0x22, 0x8c, 0xd2, 0x5c, 0x56, 0xa5, 0xff, 0x23, 0x05, 0xc6, - 0xda, 0xba, 0x71, 0x53, 0x6f, 0x62, 0x25, 0x41, 0xc5, 0xe2, 0x12, 0x15, 0x01, 0xea, 0xb8, 0x8d, - 0xed, 0x3a, 0xb6, 0x8d, 0x63, 0x25, 0x39, 0x9b, 0x9c, 0xcb, 0xaa, 0x11, 0x09, 0x7a, 0x12, 0x26, - 0xdb, 0x9d, 0x9a, 0x65, 0x1a, 0x5a, 0xc4, 0x0c, 0x66, 0x93, 0x73, 0x69, 0x55, 0x66, 0x8a, 0xf5, - 0xd0, 0xf8, 0x31, 0x98, 0xb8, 0x8d, 0xf5, 0x9b, 0x51, 0xd3, 0x1c, 0x35, 0x2d, 0x10, 0x71, 0xc4, - 0x70, 0x0d, 0xf2, 0x2d, 0xec, 0x79, 0x7a, 0x13, 0x6b, 0xfe, 0x71, 0x1b, 0x2b, 0x29, 0xba, 0xfa, - 0xd9, 0xbe, 0xd5, 0xf7, 0xae, 0x3c, 0xc7, 0x51, 0x07, 0xc7, 0x6d, 0x8c, 0x2a, 0x90, 0xc5, 0x76, - 0xa7, 0xc5, 0x18, 0xd2, 0xa7, 0xc4, 0xaf, 0x6a, 0x77, 0x5a, 0xbd, 0x2c, 0x19, 0x02, 0xe3, 0x14, - 0x63, 0x1e, 0x76, 0x6f, 0x99, 0x06, 0x56, 0x46, 0x29, 0xc1, 0x63, 0x7d, 0x04, 0xfb, 0x4c, 0xdf, - 0xcb, 0x21, 0x70, 0x68, 0x0d, 0xb2, 0xf8, 0x25, 0x1f, 0xdb, 0x9e, 0xe9, 0xd8, 0xca, 0x18, 0x25, - 0x79, 0x74, 0xc0, 0x2e, 0x62, 0xab, 0xde, 0x4b, 0x11, 0xe2, 0xd0, 0x25, 0x18, 0x73, 0xda, 0xbe, - 0xe9, 0xd8, 0x9e, 0x92, 0x99, 0x95, 0xe6, 0x72, 0x8b, 0x0f, 0x0e, 0x4c, 0x84, 0x5d, 0x66, 0xa3, - 0x0a, 0x63, 0xb4, 0x09, 0xb2, 0xe7, 0x74, 0x5c, 0x03, 0x6b, 0x86, 0x53, 0xc7, 0x9a, 0x69, 0x37, - 0x1c, 0x25, 0x4b, 0x09, 0x2e, 0xf4, 0x2f, 0x84, 0x1a, 0xae, 0x39, 0x75, 0xbc, 0x69, 0x37, 0x1c, - 0xb5, 0xe0, 0x75, 0x5d, 0xa3, 0x73, 0x30, 0xea, 0x1d, 0xdb, 0xbe, 0xfe, 0x92, 0x92, 0xa7, 0x19, - 0xc2, 0xaf, 0x4a, 0xff, 0x9d, 0x86, 0x89, 0x61, 0x52, 0xec, 0x1a, 0xa4, 0x1b, 0x64, 0x95, 0x4a, - 0xe2, 0x2c, 0x31, 0x60, 0x98, 0xee, 0x20, 0x8e, 0xfe, 0x90, 0x41, 0xac, 0x40, 0xce, 0xc6, 0x9e, - 0x8f, 0xeb, 0x2c, 0x23, 0x92, 0x43, 0xe6, 0x14, 0x30, 0x50, 0x7f, 0x4a, 0xa5, 0x7e, 0xa8, 0x94, - 0x7a, 0x01, 0x26, 0x02, 0x97, 0x34, 0x57, 0xb7, 0x9b, 0x22, 0x37, 0x17, 0xe2, 0x3c, 0x99, 0xaf, - 0x0a, 0x9c, 0x4a, 0x60, 0x6a, 0x01, 0x77, 0x5d, 0xa3, 0x75, 0x00, 0xc7, 0xc6, 0x4e, 0x43, 0xab, - 0x63, 0xc3, 0x52, 0x32, 0xa7, 0x44, 0x69, 0x97, 0x98, 0xf4, 0x45, 0xc9, 0x61, 0x52, 0xc3, 0x42, - 0x57, 0xc3, 0x54, 0x1b, 0x3b, 0x25, 0x53, 0xb6, 0xd9, 0x43, 0xd6, 0x97, 0x6d, 0x87, 0x50, 0x70, - 0x31, 0xc9, 0x7b, 0x5c, 0xe7, 0x2b, 0xcb, 0x52, 0x27, 0xe6, 0x63, 0x57, 0xa6, 0x72, 0x18, 0x5b, - 0xd8, 0xb8, 0x1b, 0xbd, 0x44, 0x0f, 0x43, 0x20, 0xd0, 0x68, 0x5a, 0x01, 0xad, 0x42, 0x79, 0x21, - 0xdc, 0xd1, 0x5b, 0x78, 0xe6, 0x0a, 0x14, 0xba, 0xc3, 0x83, 0xa6, 0x21, 0xed, 0xf9, 0xba, 0xeb, - 0xd3, 0x2c, 0x4c, 0xab, 0xec, 0x02, 0xc9, 0x90, 0xc4, 0x76, 0x9d, 0x56, 0xb9, 0xb4, 0x4a, 0xfe, - 0x9d, 0xb9, 0x0c, 0xe3, 0x5d, 0xb7, 0x1f, 0x16, 0x58, 0xfa, 0xfc, 0x28, 0x4c, 0x0f, 0xca, 0xb9, - 0x81, 0xe9, 0x7f, 0x0e, 0x46, 0xed, 0x4e, 0xab, 0x86, 0x5d, 0x25, 0x49, 0x19, 0xf8, 0x15, 0xaa, - 0x40, 0xda, 0xd2, 0x6b, 0xd8, 0x52, 0x52, 0xb3, 0xd2, 0x5c, 0x61, 0xf1, 0xc9, 0xa1, 0xb2, 0x7a, - 0x7e, 0x8b, 0x40, 0x54, 0x86, 0x44, 0x1f, 0x85, 0x14, 0x2f, 0x71, 0x84, 0xe1, 0x89, 0xe1, 0x18, - 0x48, 0x2e, 0xaa, 0x14, 0x87, 0x1e, 0x80, 0x2c, 0xf9, 0xcb, 0x62, 0x3b, 0x4a, 0x7d, 0xce, 0x10, - 0x01, 0x89, 0x2b, 0x9a, 0x81, 0x0c, 0x4d, 0xb3, 0x3a, 0x16, 0xad, 0x21, 0xb8, 0x26, 0x1b, 0x53, - 0xc7, 0x0d, 0xbd, 0x63, 0xf9, 0xda, 0x2d, 0xdd, 0xea, 0x60, 0x9a, 0x30, 0x59, 0x35, 0xcf, 0x85, - 0x1f, 0x27, 0x32, 0x74, 0x01, 0x72, 0x2c, 0x2b, 0x4d, 0xbb, 0x8e, 0x5f, 0xa2, 0xd5, 0x27, 0xad, - 0xb2, 0x44, 0xdd, 0x24, 0x12, 0x72, 0xfb, 0x1b, 0x9e, 0x63, 0x8b, 0xad, 0xa5, 0xb7, 0x20, 0x02, - 0x7a, 0xfb, 0xcb, 0xbd, 0x85, 0xef, 0xa1, 0xc1, 0xcb, 0xeb, 0xcd, 0xc5, 0xd2, 0x37, 0x13, 0x90, - 0xa2, 0xcf, 0xdb, 0x04, 0xe4, 0x0e, 0x5e, 0xdc, 0xab, 0x6a, 0xeb, 0xbb, 0x87, 0xab, 0x5b, 0x55, - 0x59, 0x42, 0x05, 0x00, 0x2a, 0x78, 0x6e, 0x6b, 0xb7, 0x72, 0x20, 0x27, 0x82, 0xeb, 0xcd, 0x9d, - 0x83, 0x4b, 0xcb, 0x72, 0x32, 0x00, 0x1c, 0x32, 0x41, 0x2a, 0x6a, 0xb0, 0xb4, 0x28, 0xa7, 0x91, - 0x0c, 0x79, 0x46, 0xb0, 0xf9, 0x42, 0x75, 0xfd, 0xd2, 0xb2, 0x3c, 0xda, 0x2d, 0x59, 0x5a, 0x94, - 0xc7, 0xd0, 0x38, 0x64, 0xa9, 0x64, 0x75, 0x77, 0x77, 0x4b, 0xce, 0x04, 0x9c, 0xfb, 0x07, 0xea, - 0xe6, 0xce, 0x86, 0x9c, 0x0d, 0x38, 0x37, 0xd4, 0xdd, 0xc3, 0x3d, 0x19, 0x02, 0x86, 0xed, 0xea, - 0xfe, 0x7e, 0x65, 0xa3, 0x2a, 0xe7, 0x02, 0x8b, 0xd5, 0x17, 0x0f, 0xaa, 0xfb, 0x72, 0xbe, 0xcb, - 0xad, 0xa5, 0x45, 0x79, 0x3c, 0xb8, 0x45, 0x75, 0xe7, 0x70, 0x5b, 0x2e, 0xa0, 0x49, 0x18, 0x67, - 0xb7, 0x10, 0x4e, 0x4c, 0xf4, 0x88, 0x2e, 0x2d, 0xcb, 0x72, 0xe8, 0x08, 0x63, 0x99, 0xec, 0x12, - 0x5c, 0x5a, 0x96, 0x51, 0x69, 0x0d, 0xd2, 0x34, 0xbb, 0x10, 0x82, 0xc2, 0x56, 0x65, 0xb5, 0xba, - 0xa5, 0xed, 0xee, 0x1d, 0x6c, 0xee, 0xee, 0x54, 0xb6, 0x64, 0x29, 0x94, 0xa9, 0xd5, 0x8f, 0x1d, - 0x6e, 0xaa, 0xd5, 0x75, 0x39, 0x11, 0x95, 0xed, 0x55, 0x2b, 0x07, 0xd5, 0x75, 0x39, 0x59, 0x32, - 0x60, 0x7a, 0x50, 0x9d, 0x19, 0xf8, 0x64, 0x44, 0xb6, 0x38, 0x71, 0xca, 0x16, 0x53, 0xae, 0xbe, - 0x2d, 0xfe, 0x8a, 0x04, 0x53, 0x03, 0x6a, 0xed, 0xc0, 0x9b, 0x3c, 0x0b, 0x69, 0x96, 0xa2, 0xac, - 0xfb, 0x3c, 0x3e, 0xb0, 0x68, 0xd3, 0x84, 0xed, 0xeb, 0x40, 0x14, 0x17, 0xed, 0xc0, 0xc9, 0x53, - 0x3a, 0x30, 0xa1, 0xe8, 0x73, 0xf2, 0x15, 0x09, 0x94, 0xd3, 0xb8, 0x63, 0x0a, 0x45, 0xa2, 0xab, - 0x50, 0x5c, 0xeb, 0x75, 0xe0, 0xe2, 0xe9, 0x6b, 0xe8, 0xf3, 0xe2, 0x0d, 0x09, 0xce, 0x0d, 0x1e, - 0x54, 0x06, 0xfa, 0xf0, 0x51, 0x18, 0x6d, 0x61, 0xff, 0xc8, 0x11, 0xcd, 0xfa, 0x43, 0x03, 0x5a, - 0x00, 0x51, 0xf7, 0xc6, 0x8a, 0xa3, 0xa2, 0x3d, 0x24, 0x79, 0xda, 0xb4, 0xc1, 0xbc, 0xe9, 0xf3, - 0xf4, 0x33, 0x09, 0xb8, 0x6f, 0x20, 0xf9, 0x40, 0x47, 0x1f, 0x02, 0x30, 0xed, 0x76, 0xc7, 0x67, - 0x0d, 0x99, 0xd5, 0xa7, 0x2c, 0x95, 0xd0, 0x67, 0x9f, 0xd4, 0x9e, 0x8e, 0x1f, 0xe8, 0x93, 0x54, - 0x0f, 0x4c, 0x44, 0x0d, 0xae, 0x84, 0x8e, 0xa6, 0xa8, 0xa3, 0xc5, 0x53, 0x56, 0xda, 0xd7, 0xeb, - 0x9e, 0x06, 0xd9, 0xb0, 0x4c, 0x6c, 0xfb, 0x9a, 0xe7, 0xbb, 0x58, 0x6f, 0x99, 0x76, 0x93, 0x16, - 0xe0, 0x4c, 0x39, 0xdd, 0xd0, 0x2d, 0x0f, 0xab, 0x13, 0x4c, 0xbd, 0x2f, 0xb4, 0x04, 0x41, 0xbb, - 0x8c, 0x1b, 0x41, 0x8c, 0x76, 0x21, 0x98, 0x3a, 0x40, 0x94, 0x3e, 0x3b, 0x06, 0xb9, 0xc8, 0x58, - 0x87, 0x2e, 0x42, 0xfe, 0x86, 0x7e, 0x4b, 0xd7, 0xc4, 0xa8, 0xce, 0x22, 0x91, 0x23, 0xb2, 0x3d, - 0x3e, 0xae, 0x3f, 0x0d, 0xd3, 0xd4, 0xc4, 0xe9, 0xf8, 0xd8, 0xd5, 0x0c, 0x4b, 0xf7, 0x3c, 0x1a, - 0xb4, 0x0c, 0x35, 0x45, 0x44, 0xb7, 0x4b, 0x54, 0x6b, 0x42, 0x83, 0x56, 0x60, 0x8a, 0x22, 0x5a, - 0x1d, 0xcb, 0x37, 0xdb, 0x16, 0xd6, 0xc8, 0xcb, 0x83, 0x47, 0x0b, 0x71, 0xe0, 0xd9, 0x24, 0xb1, - 0xd8, 0xe6, 0x06, 0xc4, 0x23, 0x0f, 0x6d, 0xc0, 0x43, 0x14, 0xd6, 0xc4, 0x36, 0x76, 0x75, 0x1f, - 0x6b, 0xf8, 0x67, 0x3b, 0xba, 0xe5, 0x69, 0xba, 0x5d, 0xd7, 0x8e, 0x74, 0xef, 0x48, 0x99, 0x8e, - 0x12, 0x9c, 0x27, 0xb6, 0x1b, 0xdc, 0xb4, 0x4a, 0x2d, 0x2b, 0x76, 0xfd, 0xba, 0xee, 0x1d, 0xa1, - 0x32, 0x9c, 0xa3, 0x44, 0x9e, 0xef, 0x9a, 0x76, 0x53, 0x33, 0x8e, 0xb0, 0x71, 0x53, 0xeb, 0xf8, - 0x8d, 0x2b, 0xca, 0x03, 0x51, 0x06, 0xea, 0xe4, 0x3e, 0xb5, 0x59, 0x23, 0x26, 0x87, 0x7e, 0xe3, - 0x0a, 0xda, 0x87, 0x3c, 0xd9, 0x8f, 0x96, 0xf9, 0x32, 0xd6, 0x1a, 0x8e, 0x4b, 0x9b, 0x4b, 0x61, - 0xc0, 0xc3, 0x1d, 0x09, 0xe2, 0xfc, 0x2e, 0x07, 0x6c, 0x3b, 0x75, 0x5c, 0x4e, 0xef, 0xef, 0x55, - 0xab, 0xeb, 0x6a, 0x4e, 0xb0, 0x3c, 0xe7, 0xb8, 0x24, 0xa7, 0x9a, 0x4e, 0x10, 0xe3, 0x1c, 0xcb, - 0xa9, 0xa6, 0x23, 0x22, 0xbc, 0x02, 0x53, 0x86, 0xc1, 0x96, 0x6d, 0x1a, 0x1a, 0x9f, 0xf2, 0x3d, - 0x45, 0xee, 0x8a, 0x97, 0x61, 0x6c, 0x30, 0x03, 0x9e, 0xe6, 0x1e, 0xba, 0x0a, 0xf7, 0x85, 0xf1, - 0x8a, 0x02, 0x27, 0xfb, 0x56, 0xd9, 0x0b, 0x5d, 0x81, 0xa9, 0xf6, 0x71, 0x3f, 0x10, 0x75, 0xdd, - 0xb1, 0x7d, 0xdc, 0x0b, 0x7b, 0x94, 0xbe, 0xb9, 0xb9, 0xd8, 0xd0, 0x7d, 0x5c, 0x57, 0xee, 0x8f, - 0x5a, 0x47, 0x14, 0x68, 0x01, 0x64, 0xc3, 0xd0, 0xb0, 0xad, 0xd7, 0x2c, 0xac, 0xe9, 0x2e, 0xb6, - 0x75, 0x4f, 0xb9, 0x10, 0x35, 0x2e, 0x18, 0x46, 0x95, 0x6a, 0x2b, 0x54, 0x89, 0x9e, 0x80, 0x49, - 0xa7, 0x76, 0xc3, 0x60, 0xc9, 0xa5, 0xb5, 0x5d, 0xdc, 0x30, 0x5f, 0x52, 0x1e, 0xa1, 0x61, 0x9a, - 0x20, 0x0a, 0x9a, 0x5a, 0x7b, 0x54, 0x8c, 0x1e, 0x07, 0xd9, 0xf0, 0x8e, 0x74, 0xb7, 0x4d, 0xbb, - 0xbb, 0xd7, 0xd6, 0x0d, 0xac, 0x3c, 0xca, 0x4c, 0x99, 0x7c, 0x47, 0x88, 0xd1, 0x0b, 0x30, 0xdd, - 0xb1, 0x4d, 0xdb, 0xc7, 0x6e, 0xdb, 0xc5, 0x64, 0x48, 0x67, 0x4f, 0x9a, 0xf2, 0x4f, 0x63, 0xa7, - 0x8c, 0xd9, 0x87, 0x51, 0x6b, 0xb6, 0xbb, 0xea, 0x54, 0xa7, 0x5f, 0x58, 0x2a, 0x43, 0x3e, 0xba, - 0xe9, 0x28, 0x0b, 0x6c, 0xdb, 0x65, 0x89, 0xf4, 0xd0, 0xb5, 0xdd, 0x75, 0xd2, 0xfd, 0x3e, 0x59, - 0x95, 0x13, 0xa4, 0x0b, 0x6f, 0x6d, 0x1e, 0x54, 0x35, 0xf5, 0x70, 0xe7, 0x60, 0x73, 0xbb, 0x2a, - 0x27, 0x9f, 0xc8, 0x66, 0xbe, 0x37, 0x26, 0xdf, 0xb9, 0x73, 0xe7, 0x4e, 0xa2, 0xf4, 0xed, 0x04, - 0x14, 0xba, 0x27, 0x5f, 0xf4, 0x33, 0x70, 0xbf, 0x78, 0x4d, 0xf5, 0xb0, 0xaf, 0xdd, 0x36, 0x5d, - 0x9a, 0x87, 0x2d, 0x9d, 0xcd, 0x8e, 0x41, 0x08, 0xa7, 0xb9, 0xd5, 0x3e, 0xf6, 0x3f, 0x61, 0xba, - 0x24, 0xcb, 0x5a, 0xba, 0x8f, 0xb6, 0xe0, 0x82, 0xed, 0x68, 0x9e, 0xaf, 0xdb, 0x75, 0xdd, 0xad, - 0x6b, 0xe1, 0x01, 0x81, 0xa6, 0x1b, 0x06, 0xf6, 0x3c, 0x87, 0xb5, 0x80, 0x80, 0xe5, 0x41, 0xdb, - 0xd9, 0xe7, 0xc6, 0x61, 0x6d, 0xac, 0x70, 0xd3, 0x9e, 0xed, 0x4e, 0x9e, 0xb6, 0xdd, 0x0f, 0x40, - 0xb6, 0xa5, 0xb7, 0x35, 0x6c, 0xfb, 0xee, 0x31, 0x9d, 0xd7, 0x32, 0x6a, 0xa6, 0xa5, 0xb7, 0xab, - 0xe4, 0xfa, 0x47, 0xb7, 0x07, 0xd1, 0x38, 0xfe, 0x43, 0x12, 0xf2, 0xd1, 0x99, 0x8d, 0x8c, 0xc0, - 0x06, 0xad, 0xcf, 0x12, 0x7d, 0x7c, 0x1f, 0xbe, 0xe7, 0x84, 0x37, 0xbf, 0x46, 0x0a, 0x77, 0x79, - 0x94, 0x4d, 0x52, 0x2a, 0x43, 0x92, 0xa6, 0x49, 0x1e, 0x58, 0xcc, 0xe6, 0xf3, 0x8c, 0xca, 0xaf, - 0xd0, 0x06, 0x8c, 0xde, 0xf0, 0x28, 0xf7, 0x28, 0xe5, 0x7e, 0xe4, 0xde, 0xdc, 0xcf, 0xef, 0x53, - 0xf2, 0xec, 0xf3, 0xfb, 0xda, 0xce, 0xae, 0xba, 0x5d, 0xd9, 0x52, 0x39, 0x1c, 0x9d, 0x87, 0x94, - 0xa5, 0xbf, 0x7c, 0xdc, 0x5d, 0xe2, 0xa9, 0x68, 0xd8, 0xc0, 0x9f, 0x87, 0xd4, 0x6d, 0xac, 0xdf, - 0xec, 0x2e, 0xac, 0x54, 0xf4, 0x23, 0x4c, 0xfd, 0x05, 0x48, 0xd3, 0x78, 0x21, 0x00, 0x1e, 0x31, - 0x79, 0x04, 0x65, 0x20, 0xb5, 0xb6, 0xab, 0x92, 0xf4, 0x97, 0x21, 0xcf, 0xa4, 0xda, 0xde, 0x66, - 0x75, 0xad, 0x2a, 0x27, 0x4a, 0x2b, 0x30, 0xca, 0x82, 0x40, 0x1e, 0x8d, 0x20, 0x0c, 0xf2, 0x08, - 0xbf, 0xe4, 0x1c, 0x92, 0xd0, 0x1e, 0x6e, 0xaf, 0x56, 0x55, 0x39, 0x11, 0xdd, 0x5e, 0x0f, 0xf2, - 0xd1, 0x71, 0xed, 0xc7, 0x93, 0x53, 0x7f, 0x29, 0x41, 0x2e, 0x32, 0x7e, 0x91, 0xc6, 0xaf, 0x5b, - 0x96, 0x73, 0x5b, 0xd3, 0x2d, 0x53, 0xf7, 0x78, 0x52, 0x00, 0x15, 0x55, 0x88, 0x64, 0xd8, 0x4d, - 0xfb, 0xb1, 0x38, 0xff, 0xba, 0x04, 0x72, 0xef, 0xe8, 0xd6, 0xe3, 0xa0, 0xf4, 0x13, 0x75, 0xf0, - 0x35, 0x09, 0x0a, 0xdd, 0xf3, 0x5a, 0x8f, 0x7b, 0x17, 0x7f, 0xa2, 0xee, 0x7d, 0x51, 0x82, 0xf1, - 0xae, 0x29, 0xed, 0xa7, 0xca, 0xbb, 0x57, 0x93, 0x30, 0x35, 0x00, 0x87, 0x2a, 0x7c, 0x9c, 0x65, - 0x13, 0xf6, 0x53, 0xc3, 0xdc, 0x6b, 0x9e, 0x74, 0xcb, 0x3d, 0xdd, 0xf5, 0xf9, 0xf4, 0xfb, 0x38, - 0xc8, 0x66, 0x1d, 0xdb, 0xbe, 0xd9, 0x30, 0xb1, 0xcb, 0x5f, 0xc1, 0xd9, 0x8c, 0x3b, 0x11, 0xca, - 0xd9, 0x5b, 0xf8, 0x87, 0x01, 0xb5, 0x1d, 0xcf, 0xf4, 0xcd, 0x5b, 0x58, 0x33, 0x6d, 0xf1, 0xbe, - 0x4e, 0x66, 0xde, 0x94, 0x2a, 0x0b, 0xcd, 0xa6, 0xed, 0x07, 0xd6, 0x36, 0x6e, 0xea, 0x3d, 0xd6, - 0xa4, 0xf6, 0x25, 0x55, 0x59, 0x68, 0x02, 0xeb, 0x8b, 0x90, 0xaf, 0x3b, 0x1d, 0x32, 0x3e, 0x30, - 0x3b, 0x52, 0x6a, 0x25, 0x35, 0xc7, 0x64, 0x81, 0x09, 0x9f, 0xef, 0xc2, 0x83, 0x82, 0xbc, 0x9a, - 0x63, 0x32, 0x66, 0xf2, 0x18, 0x4c, 0xe8, 0xcd, 0xa6, 0x4b, 0xc8, 0x05, 0x11, 0x1b, 0x5a, 0x0b, - 0x81, 0x98, 0x1a, 0xce, 0x3c, 0x0f, 0x19, 0x11, 0x07, 0xd2, 0xcd, 0x48, 0x24, 0xb4, 0x36, 0x3b, - 0xae, 0x49, 0xcc, 0x65, 0xd5, 0x8c, 0x2d, 0x94, 0x17, 0x21, 0x6f, 0x7a, 0x5a, 0x78, 0x6e, 0x98, - 0x98, 0x4d, 0xcc, 0x65, 0xd4, 0x9c, 0xe9, 0x05, 0x07, 0x45, 0xa5, 0x37, 0x12, 0x50, 0xe8, 0x3e, - 0xf7, 0x44, 0xeb, 0x90, 0xb1, 0x1c, 0x43, 0xa7, 0x89, 0xc0, 0x0e, 0xdd, 0xe7, 0x62, 0x8e, 0x4a, - 0xe7, 0xb7, 0xb8, 0xbd, 0x1a, 0x20, 0x67, 0xfe, 0x56, 0x82, 0x8c, 0x10, 0xa3, 0x73, 0x90, 0x6a, - 0xeb, 0xfe, 0x11, 0xa5, 0x4b, 0xaf, 0x26, 0x64, 0x49, 0xa5, 0xd7, 0x44, 0xee, 0xb5, 0x75, 0x9b, - 0xa6, 0x00, 0x97, 0x93, 0x6b, 0xb2, 0xaf, 0x16, 0xd6, 0xeb, 0x74, 0x1c, 0x76, 0x5a, 0x2d, 0x6c, - 0xfb, 0x9e, 0xd8, 0x57, 0x2e, 0x5f, 0xe3, 0x62, 0xf4, 0x24, 0x4c, 0xfa, 0xae, 0x6e, 0x5a, 0x5d, - 0xb6, 0x29, 0x6a, 0x2b, 0x0b, 0x45, 0x60, 0x5c, 0x86, 0xf3, 0x82, 0xb7, 0x8e, 0x7d, 0xdd, 0x38, - 0xc2, 0xf5, 0x10, 0x34, 0x4a, 0x0f, 0xd5, 0xee, 0xe7, 0x06, 0xeb, 0x5c, 0x2f, 0xb0, 0xa5, 0xef, - 0x48, 0x30, 0x29, 0x06, 0xf8, 0x7a, 0x10, 0xac, 0x6d, 0x00, 0xdd, 0xb6, 0x1d, 0x3f, 0x1a, 0xae, - 0xfe, 0x54, 0xee, 0xc3, 0xcd, 0x57, 0x02, 0x90, 0x1a, 0x21, 0x98, 0x69, 0x01, 0x84, 0x9a, 0x53, - 0xc3, 0x76, 0x01, 0x72, 0xfc, 0x50, 0x9b, 0xfe, 0x32, 0xc2, 0xde, 0xfa, 0x80, 0x89, 0xc8, 0xa4, - 0x8f, 0xa6, 0x21, 0x5d, 0xc3, 0x4d, 0xd3, 0xe6, 0x47, 0x6d, 0xec, 0x42, 0x1c, 0xe0, 0xa5, 0x82, - 0x03, 0xbc, 0xd5, 0x4f, 0xc1, 0x94, 0xe1, 0xb4, 0x7a, 0xdd, 0x5d, 0x95, 0x7b, 0xde, 0x3c, 0xbd, - 0xeb, 0xd2, 0x27, 0x21, 0x9c, 0xce, 0xbe, 0x2c, 0x49, 0x5f, 0x49, 0x24, 0x37, 0xf6, 0x56, 0xbf, - 0x96, 0x98, 0xd9, 0x60, 0xd0, 0x3d, 0xb1, 0x52, 0x15, 0x37, 0x2c, 0x6c, 0x10, 0xef, 0xe1, 0xfb, - 0x1f, 0x82, 0xa7, 0x9a, 0xa6, 0x7f, 0xd4, 0xa9, 0xcd, 0x1b, 0x4e, 0x6b, 0xa1, 0xe9, 0x34, 0x9d, - 0xf0, 0xc7, 0x20, 0x72, 0x45, 0x2f, 0xe8, 0x7f, 0xfc, 0x07, 0xa1, 0x6c, 0x20, 0x9d, 0x89, 0xfd, - 0xf5, 0xa8, 0xbc, 0x03, 0x53, 0xdc, 0x58, 0xa3, 0x27, 0xd2, 0x6c, 0x0e, 0x47, 0xf7, 0x3c, 0x95, - 0x50, 0xbe, 0xf1, 0x0e, 0xed, 0x74, 0xea, 0x24, 0x87, 0x12, 0x1d, 0x9b, 0xd4, 0xcb, 0x2a, 0xdc, - 0xd7, 0xc5, 0xc7, 0x1e, 0x4d, 0xec, 0xc6, 0x30, 0x7e, 0x9b, 0x33, 0x4e, 0x45, 0x18, 0xf7, 0x39, - 0xb4, 0xbc, 0x06, 0xe3, 0x67, 0xe1, 0xfa, 0x6b, 0xce, 0x95, 0xc7, 0x51, 0x92, 0x0d, 0x98, 0xa0, - 0x24, 0x46, 0xc7, 0xf3, 0x9d, 0x16, 0xad, 0x7b, 0xf7, 0xa6, 0xf9, 0x9b, 0x77, 0xd8, 0xb3, 0x52, - 0x20, 0xb0, 0xb5, 0x00, 0x55, 0x2e, 0x03, 0x3d, 0x84, 0xaf, 0x63, 0xc3, 0x8a, 0x61, 0x78, 0x93, - 0x3b, 0x12, 0xd8, 0x97, 0x3f, 0x0e, 0xd3, 0xe4, 0x7f, 0x5a, 0x96, 0xa2, 0x9e, 0xc4, 0x9f, 0xc1, - 0x28, 0xdf, 0x79, 0x85, 0x3d, 0x8e, 0x53, 0x01, 0x41, 0xc4, 0xa7, 0xc8, 0x2e, 0x36, 0xb1, 0xef, - 0x63, 0xd7, 0xd3, 0x74, 0x6b, 0x90, 0x7b, 0x91, 0x37, 0x58, 0xe5, 0x0b, 0xef, 0x76, 0xef, 0xe2, - 0x06, 0x43, 0x56, 0x2c, 0xab, 0x7c, 0x08, 0xf7, 0x0f, 0xc8, 0x8a, 0x21, 0x38, 0x5f, 0xe5, 0x9c, - 0xd3, 0x7d, 0x99, 0x41, 0x68, 0xf7, 0x40, 0xc8, 0x83, 0xbd, 0x1c, 0x82, 0xf3, 0x8b, 0x9c, 0x13, - 0x71, 0xac, 0xd8, 0x52, 0xc2, 0xf8, 0x3c, 0x4c, 0xde, 0xc2, 0x6e, 0xcd, 0xf1, 0xf8, 0xc1, 0xc1, - 0x10, 0x74, 0xaf, 0x71, 0xba, 0x09, 0x0e, 0xa4, 0xc7, 0x08, 0x84, 0xeb, 0x2a, 0x64, 0x1a, 0xba, - 0x81, 0x87, 0xa0, 0xf8, 0x12, 0xa7, 0x18, 0x23, 0xf6, 0x04, 0x5a, 0x81, 0x7c, 0xd3, 0xe1, 0x9d, - 0x29, 0x1e, 0xfe, 0x3a, 0x87, 0xe7, 0x04, 0x86, 0x53, 0xb4, 0x9d, 0x76, 0xc7, 0x22, 0x6d, 0x2b, - 0x9e, 0xe2, 0xb7, 0x04, 0x85, 0xc0, 0x70, 0x8a, 0x33, 0x84, 0xf5, 0xcb, 0x82, 0xc2, 0x8b, 0xc4, - 0xf3, 0x59, 0xc8, 0x39, 0xb6, 0x75, 0xec, 0xd8, 0xc3, 0x38, 0xf1, 0xdb, 0x9c, 0x01, 0x38, 0x84, - 0x10, 0x5c, 0x83, 0xec, 0xb0, 0x1b, 0xf1, 0x3b, 0xef, 0x8a, 0xc7, 0x43, 0xec, 0xc0, 0x06, 0x4c, - 0x88, 0x02, 0x65, 0x3a, 0xf6, 0x10, 0x14, 0xbf, 0xcb, 0x29, 0x0a, 0x11, 0x18, 0x5f, 0x86, 0x8f, - 0x3d, 0xbf, 0x89, 0x87, 0x21, 0x79, 0x43, 0x2c, 0x83, 0x43, 0x78, 0x28, 0x6b, 0xd8, 0x36, 0x8e, - 0x86, 0x63, 0xf8, 0xaa, 0x08, 0xa5, 0xc0, 0x10, 0x8a, 0x35, 0x18, 0x6f, 0xe9, 0xae, 0x77, 0xa4, - 0x5b, 0x43, 0x6d, 0xc7, 0xef, 0x71, 0x8e, 0x7c, 0x00, 0xe2, 0x11, 0xe9, 0xd8, 0x67, 0xa1, 0xf9, - 0x9a, 0x88, 0x48, 0x04, 0xc6, 0x1f, 0x3d, 0xcf, 0xa7, 0x67, 0x33, 0x67, 0x61, 0xfb, 0x7d, 0xf1, - 0xe8, 0x31, 0xec, 0x76, 0x94, 0xf1, 0x1a, 0x64, 0x3d, 0xf3, 0xe5, 0xa1, 0x68, 0xfe, 0x40, 0xec, - 0x34, 0x05, 0x10, 0xf0, 0x8b, 0x70, 0x7e, 0x60, 0x9b, 0x18, 0x82, 0xec, 0x0f, 0x39, 0xd9, 0xb9, - 0x01, 0xad, 0x82, 0x97, 0x84, 0xb3, 0x52, 0xfe, 0x91, 0x28, 0x09, 0xb8, 0x87, 0x6b, 0x8f, 0x4c, - 0xf6, 0x9e, 0xde, 0x38, 0x5b, 0xd4, 0xfe, 0x58, 0x44, 0x8d, 0x61, 0xbb, 0xa2, 0x76, 0x00, 0xe7, - 0x38, 0xe3, 0xd9, 0xf6, 0xf5, 0xeb, 0xa2, 0xb0, 0x32, 0xf4, 0x61, 0xf7, 0xee, 0x7e, 0x0a, 0x66, - 0x82, 0x70, 0x8a, 0xa1, 0xd4, 0xd3, 0x5a, 0x7a, 0x7b, 0x08, 0xe6, 0x6f, 0x70, 0x66, 0x51, 0xf1, - 0x83, 0xa9, 0xd6, 0xdb, 0xd6, 0xdb, 0x84, 0xfc, 0x05, 0x50, 0x04, 0x79, 0xc7, 0x76, 0xb1, 0xe1, - 0x34, 0x6d, 0xf3, 0x65, 0x5c, 0x1f, 0x82, 0xfa, 0x4f, 0x7a, 0xb6, 0xea, 0x30, 0x02, 0x27, 0xcc, - 0x9b, 0x20, 0x07, 0xb3, 0x8a, 0x66, 0xb6, 0xda, 0x8e, 0xeb, 0xc7, 0x30, 0xfe, 0xa9, 0xd8, 0xa9, - 0x00, 0xb7, 0x49, 0x61, 0xe5, 0x2a, 0x14, 0xe8, 0xe5, 0xb0, 0x29, 0xf9, 0x67, 0x9c, 0x68, 0x3c, - 0x44, 0xf1, 0xc2, 0x61, 0x38, 0xad, 0xb6, 0xee, 0x0e, 0x53, 0xff, 0xfe, 0x5c, 0x14, 0x0e, 0x0e, - 0xe1, 0x85, 0xc3, 0x3f, 0x6e, 0x63, 0xd2, 0xed, 0x87, 0x60, 0xf8, 0xa6, 0x28, 0x1c, 0x02, 0xc3, - 0x29, 0xc4, 0xc0, 0x30, 0x04, 0xc5, 0x5f, 0x08, 0x0a, 0x81, 0x21, 0x14, 0x1f, 0x0b, 0x1b, 0xad, - 0x8b, 0x9b, 0xa6, 0xe7, 0xbb, 0x6c, 0x14, 0xbe, 0x37, 0xd5, 0xb7, 0xde, 0xed, 0x1e, 0xc2, 0xd4, - 0x08, 0xb4, 0xfc, 0x3c, 0x4c, 0xf4, 0x8c, 0x18, 0x28, 0xee, 0x17, 0x7d, 0xe5, 0xd3, 0xef, 0xf3, - 0x62, 0xd4, 0x3d, 0x61, 0x94, 0xb7, 0xc8, 0xbe, 0x77, 0xcf, 0x01, 0xf1, 0x64, 0xaf, 0xbc, 0x1f, - 0x6c, 0x7d, 0xd7, 0x18, 0x50, 0x7e, 0x0e, 0xc6, 0xbb, 0x66, 0x80, 0x78, 0xaa, 0x9f, 0xe3, 0x54, - 0xf9, 0xe8, 0x08, 0x50, 0x5e, 0x81, 0x14, 0xe9, 0xe7, 0xf1, 0xf0, 0x9f, 0xe7, 0x70, 0x6a, 0x5e, - 0xfe, 0x08, 0x64, 0x44, 0x1f, 0x8f, 0x87, 0xfe, 0x02, 0x87, 0x06, 0x10, 0x02, 0x17, 0x3d, 0x3c, - 0x1e, 0xfe, 0x8b, 0x02, 0x2e, 0x20, 0x04, 0x3e, 0x7c, 0x08, 0xff, 0xea, 0xb3, 0x29, 0x5e, 0x87, - 0x45, 0xec, 0xae, 0xc1, 0x18, 0x6f, 0xde, 0xf1, 0xe8, 0xcf, 0xf0, 0x9b, 0x0b, 0x44, 0xf9, 0x32, - 0xa4, 0x87, 0x0c, 0xf8, 0x2f, 0x71, 0x28, 0xb3, 0x2f, 0xaf, 0x41, 0x2e, 0xd2, 0xb0, 0xe3, 0xe1, - 0xbf, 0xcc, 0xe1, 0x51, 0x14, 0x71, 0x9d, 0x37, 0xec, 0x78, 0x82, 0x5f, 0x11, 0xae, 0x73, 0x04, - 0x09, 0x9b, 0xe8, 0xd5, 0xf1, 0xe8, 0x5f, 0x15, 0x51, 0x17, 0x90, 0xf2, 0xb3, 0x90, 0x0d, 0xea, - 0x6f, 0x3c, 0xfe, 0xd7, 0x38, 0x3e, 0xc4, 0x90, 0x08, 0x44, 0xea, 0x7f, 0x3c, 0xc5, 0xe7, 0x44, - 0x04, 0x22, 0x28, 0xf2, 0x18, 0xf5, 0xf6, 0xf4, 0x78, 0xa6, 0x5f, 0x17, 0x8f, 0x51, 0x4f, 0x4b, - 0x27, 0xbb, 0x49, 0xcb, 0x60, 0x3c, 0xc5, 0x6f, 0x88, 0xdd, 0xa4, 0xf6, 0xc4, 0x8d, 0xde, 0x26, - 0x19, 0xcf, 0xf1, 0x9b, 0xc2, 0x8d, 0x9e, 0x1e, 0x59, 0xde, 0x03, 0xd4, 0xdf, 0x20, 0xe3, 0xf9, - 0x3e, 0xcf, 0xf9, 0x26, 0xfb, 0xfa, 0x63, 0xf9, 0x13, 0x70, 0x6e, 0x70, 0x73, 0x8c, 0x67, 0xfd, - 0xc2, 0xfb, 0x3d, 0xaf, 0x33, 0xd1, 0xde, 0x58, 0x3e, 0x08, 0xab, 0x6c, 0xb4, 0x31, 0xc6, 0xd3, - 0xbe, 0xfa, 0x7e, 0x77, 0xa1, 0x8d, 0xf6, 0xc5, 0x72, 0x05, 0x20, 0xec, 0x49, 0xf1, 0x5c, 0xaf, - 0x71, 0xae, 0x08, 0x88, 0x3c, 0x1a, 0xbc, 0x25, 0xc5, 0xe3, 0xbf, 0x24, 0x1e, 0x0d, 0x8e, 0x20, - 0x8f, 0x86, 0xe8, 0x46, 0xf1, 0xe8, 0xd7, 0xc5, 0xa3, 0x21, 0x20, 0xe5, 0x6b, 0x90, 0xb1, 0x3b, - 0x96, 0x45, 0x72, 0x0b, 0xdd, 0xfb, 0x23, 0x1b, 0xe5, 0x9f, 0x3f, 0xe0, 0x60, 0x01, 0x28, 0xaf, - 0x40, 0x1a, 0xb7, 0x6a, 0xb8, 0x1e, 0x87, 0xfc, 0x97, 0x0f, 0x44, 0x3d, 0x21, 0xd6, 0xe5, 0x67, - 0x01, 0xd8, 0xcb, 0x34, 0xfd, 0x8d, 0x25, 0x06, 0xfb, 0xaf, 0x1f, 0xf0, 0xdf, 0xef, 0x43, 0x48, - 0x48, 0xc0, 0xbe, 0x06, 0xb8, 0x37, 0xc1, 0xbb, 0xdd, 0x04, 0xf4, 0x05, 0xfc, 0x2a, 0x8c, 0xdd, - 0xf0, 0x1c, 0xdb, 0xd7, 0x9b, 0x71, 0xe8, 0x7f, 0xe3, 0x68, 0x61, 0x4f, 0x02, 0xd6, 0x72, 0x5c, - 0xec, 0xeb, 0x4d, 0x2f, 0x0e, 0xfb, 0xef, 0x1c, 0x1b, 0x00, 0x08, 0xd8, 0xd0, 0x3d, 0x7f, 0x98, - 0x75, 0xff, 0x87, 0x00, 0x0b, 0x00, 0x71, 0x9a, 0xfc, 0x7f, 0x13, 0x1f, 0xc7, 0x61, 0xdf, 0x13, - 0x4e, 0x73, 0xfb, 0xf2, 0x47, 0x20, 0x4b, 0xfe, 0x65, 0xdf, 0xb4, 0xc4, 0x80, 0xff, 0x93, 0x83, - 0x43, 0x04, 0xb9, 0xb3, 0xe7, 0xd7, 0x7d, 0x33, 0x3e, 0xd8, 0xff, 0xc5, 0x77, 0x5a, 0xd8, 0x97, - 0x2b, 0x90, 0xf3, 0xfc, 0x7a, 0xbd, 0xc3, 0x27, 0x9a, 0x18, 0xf8, 0xf7, 0x3f, 0x08, 0x5e, 0x72, - 0x03, 0xcc, 0xea, 0xc5, 0xc1, 0xe7, 0x75, 0xb0, 0xe1, 0x6c, 0x38, 0xec, 0xa4, 0x0e, 0xfe, 0x37, - 0x03, 0x0f, 0x1a, 0x4e, 0xab, 0xe6, 0x78, 0x0b, 0x91, 0x32, 0xb4, 0xe0, 0xd8, 0xdc, 0x1e, 0x25, - 0x1d, 0x1b, 0xcf, 0x9c, 0xed, 0x60, 0xae, 0x74, 0x1e, 0xd2, 0xfb, 0x9d, 0x5a, 0xed, 0x18, 0xc9, - 0x90, 0xf4, 0x3a, 0x35, 0xfe, 0xdd, 0x05, 0xf9, 0xb7, 0xf4, 0x76, 0x12, 0xc6, 0x2b, 0x96, 0x75, - 0x70, 0xdc, 0xc6, 0xde, 0xae, 0x8d, 0x77, 0x1b, 0x48, 0x81, 0x51, 0xba, 0x92, 0x67, 0xa8, 0x99, - 0x74, 0x7d, 0x44, 0xe5, 0xd7, 0x81, 0x66, 0x91, 0x1e, 0x59, 0x26, 0x02, 0xcd, 0x62, 0xa0, 0x59, - 0x62, 0x27, 0x96, 0x81, 0x66, 0x29, 0xd0, 0x2c, 0xd3, 0x73, 0xcb, 0x64, 0xa0, 0x59, 0x0e, 0x34, - 0x2b, 0xf4, 0x5c, 0x7e, 0x3c, 0xd0, 0xac, 0x04, 0x9a, 0x4b, 0xf4, 0x24, 0x3e, 0x15, 0x68, 0x2e, - 0x05, 0x9a, 0xcb, 0xf4, 0x00, 0x7e, 0x32, 0xd0, 0x5c, 0x0e, 0x34, 0x57, 0xe8, 0xa1, 0x3b, 0x0a, - 0x34, 0x57, 0x02, 0xcd, 0x55, 0xfa, 0x75, 0xc5, 0x58, 0xa0, 0xb9, 0x8a, 0x66, 0x60, 0x8c, 0xad, - 0xec, 0x69, 0xfa, 0xa3, 0xe6, 0xc4, 0xf5, 0x11, 0x55, 0x08, 0x42, 0xdd, 0x33, 0xf4, 0x0b, 0x8a, - 0xd1, 0x50, 0xf7, 0x4c, 0xa8, 0x5b, 0xa4, 0x9f, 0x12, 0xcb, 0xa1, 0x6e, 0x31, 0xd4, 0x2d, 0x29, - 0xe3, 0x24, 0x01, 0x42, 0xdd, 0x52, 0xa8, 0x5b, 0x56, 0x0a, 0x64, 0x07, 0x42, 0xdd, 0x72, 0xa8, - 0x5b, 0x51, 0x26, 0x66, 0xa5, 0xb9, 0x7c, 0xa8, 0x5b, 0x41, 0x4f, 0x41, 0xce, 0xeb, 0xd4, 0x34, - 0xfe, 0x1b, 0x3c, 0xfd, 0x52, 0x23, 0xb7, 0x08, 0xf3, 0x24, 0x27, 0xe8, 0xb6, 0x5e, 0x1f, 0x51, - 0xc1, 0xeb, 0xd4, 0x78, 0x85, 0x5c, 0xcd, 0x03, 0x3d, 0x50, 0xd0, 0xe8, 0x27, 0x8a, 0xa5, 0xb7, - 0x24, 0xc8, 0x1e, 0xdc, 0x76, 0xe8, 0x4f, 0x9a, 0xde, 0xff, 0xf3, 0xe6, 0x0a, 0xa7, 0x97, 0x96, - 0x95, 0x12, 0x5d, 0x90, 0xa4, 0x0a, 0x41, 0xa8, 0x5b, 0x51, 0x1e, 0xa6, 0x0b, 0x0a, 0x74, 0x2b, - 0x68, 0x01, 0xf2, 0x91, 0x05, 0x2d, 0xd2, 0x8f, 0x2f, 0xba, 0x57, 0x24, 0xa9, 0xb9, 0x70, 0x45, - 0x8b, 0xab, 0x69, 0x20, 0x69, 0x4f, 0xfe, 0xf8, 0xb7, 0x9d, 0xd2, 0xe7, 0x12, 0x90, 0x63, 0x67, - 0x90, 0x74, 0x55, 0xe4, 0x56, 0x6c, 0x26, 0x3f, 0xe6, 0x6e, 0x8c, 0xa8, 0x42, 0x80, 0x54, 0x00, - 0x66, 0x4a, 0x32, 0x9c, 0x79, 0xb2, 0xfa, 0xf4, 0xdf, 0xbf, 0x7d, 0xe1, 0xc3, 0xa7, 0x3e, 0x41, - 0x24, 0x76, 0x0b, 0xac, 0xc2, 0xce, 0x1f, 0x9a, 0xb6, 0xff, 0xcc, 0xe2, 0x15, 0x12, 0xe0, 0x90, - 0x05, 0x1d, 0x42, 0x66, 0x4d, 0xf7, 0xe8, 0x07, 0x58, 0xd4, 0xf5, 0xd4, 0xea, 0xe5, 0xff, 0x79, - 0xfb, 0xc2, 0x52, 0x0c, 0x23, 0x2f, 0x7e, 0xf3, 0xdb, 0xc7, 0x84, 0xf5, 0xd2, 0x32, 0x81, 0x5f, - 0x1f, 0x51, 0x03, 0x2a, 0xb4, 0x28, 0x5c, 0xdd, 0xd1, 0x5b, 0xec, 0x2b, 0x93, 0xe4, 0xaa, 0x7c, - 0xf2, 0xf6, 0x85, 0xfc, 0xf6, 0x71, 0x28, 0x0f, 0x5d, 0x21, 0x57, 0xab, 0x19, 0x18, 0x65, 0xae, - 0xae, 0xae, 0xbf, 0x79, 0xb7, 0x38, 0xf2, 0xd6, 0xdd, 0xe2, 0xc8, 0xdf, 0xdd, 0x2d, 0x8e, 0x7c, - 0xf7, 0x6e, 0x51, 0x7a, 0xef, 0x6e, 0x51, 0xfa, 0xc1, 0xdd, 0xa2, 0x74, 0xe7, 0xa4, 0x28, 0x7d, - 0xf5, 0xa4, 0x28, 0x7d, 0xfd, 0xa4, 0x28, 0x7d, 0xeb, 0xa4, 0x28, 0xbd, 0x79, 0x52, 0x1c, 0x79, - 0xeb, 0xa4, 0x28, 0x7d, 0xf7, 0xa4, 0x28, 0x7d, 0xef, 0xa4, 0x38, 0xf2, 0xde, 0x49, 0x51, 0xfa, - 0xc1, 0x49, 0x71, 0xe4, 0xce, 0x3f, 0x16, 0x47, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x7d, 0xdb, - 0x83, 0x53, 0xf9, 0x31, 0x00, 0x00, + // 4040 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x82, 0x20, 0x79, 0x8d, 0x95, 0x6d, 0xae, 0x96, 0xb6, + 0x63, 0xd9, 0x8e, 0x25, 0x5b, 0x97, 0xbd, 0x70, 0x9b, 0x78, 0x48, 0x8a, 0xab, 0xd5, 0x56, 0x12, + 0x15, 0x50, 0x8a, 0xd7, 0xe9, 0x03, 0x06, 0x02, 0x7f, 0x52, 0xd8, 0x05, 0x01, 0x06, 0x00, 0x77, + 0x2d, 0x3f, 0x6d, 0xc7, 0xbd, 0x4c, 0xa6, 0xd3, 0x5b, 0xda, 0x99, 0x26, 0xae, 0xe3, 0xb6, 0x99, + 0x69, 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xce, 0x5b, + 0xa7, 0xd3, 0xf1, 0x78, 0x15, 0xcf, 0x34, 0x6d, 0xdd, 0xd6, 0x6d, 0x3c, 0xd3, 0x4c, 0xdd, 0x87, + 0xce, 0x7f, 0x03, 0xc0, 0x8b, 0x16, 0x54, 0x26, 0x4e, 0x9e, 0x24, 0x9c, 0x73, 0xbe, 0x0f, 0x07, + 0xe7, 0x3f, 0xff, 0x39, 0x07, 0x3f, 0x01, 0xdf, 0x5d, 0x83, 0xf9, 0x96, 0x6d, 0xb7, 0x4c, 0xb4, + 0xd4, 0x71, 0x6c, 0xcf, 0x3e, 0xe8, 0x36, 0x97, 0x1a, 0xc8, 0xd5, 0x1d, 0xa3, 0xe3, 0xd9, 0xce, + 0x22, 0x91, 0x49, 0x53, 0xd4, 0x62, 0x91, 0x5b, 0x14, 0xb6, 0x61, 0xfa, 0xaa, 0x61, 0xa2, 0x75, + 0xdf, 0xb0, 0x8e, 0x3c, 0xe9, 0x12, 0x24, 0x9a, 0x86, 0x89, 0x64, 0x61, 0x3e, 0xbe, 0x90, 0x59, + 0x7e, 0x6c, 0xb1, 0x0f, 0xb4, 0xd8, 0x8b, 0xd8, 0xc5, 0x62, 0x85, 0x20, 0x0a, 0xef, 0x26, 0x60, + 0x66, 0x88, 0x56, 0x92, 0x20, 0x61, 0x69, 0x6d, 0xcc, 0x28, 0x2c, 0xa4, 0x15, 0xf2, 0xbf, 0x24, + 0xc3, 0x44, 0x47, 0xd3, 0x6f, 0x69, 0x2d, 0x24, 0xc7, 0x88, 0x98, 0x5f, 0x4a, 0x79, 0x80, 0x06, + 0xea, 0x20, 0xab, 0x81, 0x2c, 0xfd, 0x48, 0x8e, 0xcf, 0xc7, 0x17, 0xd2, 0x4a, 0x48, 0x22, 0x3d, + 0x0d, 0xd3, 0x9d, 0xee, 0x81, 0x69, 0xe8, 0x6a, 0xc8, 0x0c, 0xe6, 0xe3, 0x0b, 0x49, 0x45, 0xa4, + 0x8a, 0xf5, 0xc0, 0xf8, 0x09, 0x98, 0xba, 0x83, 0xb4, 0x5b, 0x61, 0xd3, 0x0c, 0x31, 0xcd, 0x61, + 0x71, 0xc8, 0xb0, 0x02, 0xd9, 0x36, 0x72, 0x5d, 0xad, 0x85, 0x54, 0xef, 0xa8, 0x83, 0xe4, 0x04, + 0x79, 0xfa, 0xf9, 0x81, 0xa7, 0xef, 0x7f, 0xf2, 0x0c, 0x43, 0xed, 0x1d, 0x75, 0x90, 0x54, 0x82, + 0x34, 0xb2, 0xba, 0x6d, 0xca, 0x90, 0x3c, 0x21, 0x7e, 0x55, 0xab, 0xdb, 0xee, 0x67, 0x49, 0x61, + 0x18, 0xa3, 0x98, 0x70, 0x91, 0x73, 0xdb, 0xd0, 0x91, 0x3c, 0x4e, 0x08, 0x9e, 0x18, 0x20, 0xa8, + 0x53, 0x7d, 0x3f, 0x07, 0xc7, 0x49, 0x15, 0x48, 0xa3, 0x97, 0x3c, 0x64, 0xb9, 0x86, 0x6d, 0xc9, + 0x13, 0x84, 0xe4, 0xf1, 0x21, 0xab, 0x88, 0xcc, 0x46, 0x3f, 0x45, 0x80, 0x93, 0x2e, 0xc0, 0x84, + 0xdd, 0xf1, 0x0c, 0xdb, 0x72, 0xe5, 0xd4, 0xbc, 0xb0, 0x90, 0x59, 0x7e, 0x78, 0x68, 0x22, 0xd4, + 0xa8, 0x8d, 0xc2, 0x8d, 0xa5, 0x4d, 0x10, 0x5d, 0xbb, 0xeb, 0xe8, 0x48, 0xd5, 0xed, 0x06, 0x52, + 0x0d, 0xab, 0x69, 0xcb, 0x69, 0x42, 0x70, 0x6e, 0xf0, 0x41, 0x88, 0x61, 0xc5, 0x6e, 0xa0, 0x4d, + 0xab, 0x69, 0x2b, 0x39, 0xb7, 0xe7, 0x5a, 0x3a, 0x03, 0xe3, 0xee, 0x91, 0xe5, 0x69, 0x2f, 0xc9, + 0x59, 0x92, 0x21, 0xec, 0xaa, 0xf0, 0x3f, 0x49, 0x98, 0x1a, 0x25, 0xc5, 0xae, 0x40, 0xb2, 0x89, + 0x9f, 0x52, 0x8e, 0x9d, 0x26, 0x06, 0x14, 0xd3, 0x1b, 0xc4, 0xf1, 0x1f, 0x32, 0x88, 0x25, 0xc8, + 0x58, 0xc8, 0xf5, 0x50, 0x83, 0x66, 0x44, 0x7c, 0xc4, 0x9c, 0x02, 0x0a, 0x1a, 0x4c, 0xa9, 0xc4, + 0x0f, 0x95, 0x52, 0x37, 0x60, 0xca, 0x77, 0x49, 0x75, 0x34, 0xab, 0xc5, 0x73, 0x73, 0x29, 0xca, + 0x93, 0xc5, 0x2a, 0xc7, 0x29, 0x18, 0xa6, 0xe4, 0x50, 0xcf, 0xb5, 0xb4, 0x0e, 0x60, 0x5b, 0xc8, + 0x6e, 0xaa, 0x0d, 0xa4, 0x9b, 0x72, 0xea, 0x84, 0x28, 0xd5, 0xb0, 0xc9, 0x40, 0x94, 0x6c, 0x2a, + 0xd5, 0x4d, 0xe9, 0x72, 0x90, 0x6a, 0x13, 0x27, 0x64, 0xca, 0x36, 0xdd, 0x64, 0x03, 0xd9, 0xb6, + 0x0f, 0x39, 0x07, 0xe1, 0xbc, 0x47, 0x0d, 0xf6, 0x64, 0x69, 0xe2, 0xc4, 0x62, 0xe4, 0x93, 0x29, + 0x0c, 0x46, 0x1f, 0x6c, 0xd2, 0x09, 0x5f, 0x4a, 0x8f, 0x82, 0x2f, 0x50, 0x49, 0x5a, 0x01, 0xa9, + 0x42, 0x59, 0x2e, 0xdc, 0xd1, 0xda, 0x68, 0xee, 0x12, 0xe4, 0x7a, 0xc3, 0x23, 0xcd, 0x42, 0xd2, + 0xf5, 0x34, 0xc7, 0x23, 0x59, 0x98, 0x54, 0xe8, 0x85, 0x24, 0x42, 0x1c, 0x59, 0x0d, 0x52, 0xe5, + 0x92, 0x0a, 0xfe, 0x77, 0xee, 0x22, 0x4c, 0xf6, 0xdc, 0x7e, 0x54, 0x60, 0xe1, 0x0b, 0xe3, 0x30, + 0x3b, 0x2c, 0xe7, 0x86, 0xa6, 0xff, 0x19, 0x18, 0xb7, 0xba, 0xed, 0x03, 0xe4, 0xc8, 0x71, 0xc2, + 0xc0, 0xae, 0xa4, 0x12, 0x24, 0x4d, 0xed, 0x00, 0x99, 0x72, 0x62, 0x5e, 0x58, 0xc8, 0x2d, 0x3f, + 0x3d, 0x52, 0x56, 0x2f, 0x6e, 0x61, 0x88, 0x42, 0x91, 0xd2, 0x27, 0x21, 0xc1, 0x4a, 0x1c, 0x66, + 0x78, 0x6a, 0x34, 0x06, 0x9c, 0x8b, 0x0a, 0xc1, 0x49, 0x0f, 0x41, 0x1a, 0xff, 0xa5, 0xb1, 0x1d, + 0x27, 0x3e, 0xa7, 0xb0, 0x00, 0xc7, 0x55, 0x9a, 0x83, 0x14, 0x49, 0xb3, 0x06, 0xe2, 0xad, 0xc1, + 0xbf, 0xc6, 0x0b, 0xd3, 0x40, 0x4d, 0xad, 0x6b, 0x7a, 0xea, 0x6d, 0xcd, 0xec, 0x22, 0x92, 0x30, + 0x69, 0x25, 0xcb, 0x84, 0x9f, 0xc6, 0x32, 0xe9, 0x1c, 0x64, 0x68, 0x56, 0x1a, 0x56, 0x03, 0xbd, + 0x44, 0xaa, 0x4f, 0x52, 0xa1, 0x89, 0xba, 0x89, 0x25, 0xf8, 0xf6, 0x37, 0x5d, 0xdb, 0xe2, 0x4b, + 0x4b, 0x6e, 0x81, 0x05, 0xe4, 0xf6, 0x17, 0xfb, 0x0b, 0xdf, 0x23, 0xc3, 0x1f, 0xaf, 0x3f, 0x17, + 0x0b, 0xdf, 0x8c, 0x41, 0x82, 0xec, 0xb7, 0x29, 0xc8, 0xec, 0xbd, 0xb8, 0x5b, 0x55, 0xd7, 0x6b, + 0xfb, 0xe5, 0xad, 0xaa, 0x28, 0x48, 0x39, 0x00, 0x22, 0xb8, 0xba, 0x55, 0x2b, 0xed, 0x89, 0x31, + 0xff, 0x7a, 0x73, 0x67, 0xef, 0xc2, 0xaa, 0x18, 0xf7, 0x01, 0xfb, 0x54, 0x90, 0x08, 0x1b, 0xac, + 0x2c, 0x8b, 0x49, 0x49, 0x84, 0x2c, 0x25, 0xd8, 0xbc, 0x51, 0x5d, 0xbf, 0xb0, 0x2a, 0x8e, 0xf7, + 0x4a, 0x56, 0x96, 0xc5, 0x09, 0x69, 0x12, 0xd2, 0x44, 0x52, 0xae, 0xd5, 0xb6, 0xc4, 0x94, 0xcf, + 0x59, 0xdf, 0x53, 0x36, 0x77, 0x36, 0xc4, 0xb4, 0xcf, 0xb9, 0xa1, 0xd4, 0xf6, 0x77, 0x45, 0xf0, + 0x19, 0xb6, 0xab, 0xf5, 0x7a, 0x69, 0xa3, 0x2a, 0x66, 0x7c, 0x8b, 0xf2, 0x8b, 0x7b, 0xd5, 0xba, + 0x98, 0xed, 0x71, 0x6b, 0x65, 0x59, 0x9c, 0xf4, 0x6f, 0x51, 0xdd, 0xd9, 0xdf, 0x16, 0x73, 0xd2, + 0x34, 0x4c, 0xd2, 0x5b, 0x70, 0x27, 0xa6, 0xfa, 0x44, 0x17, 0x56, 0x45, 0x31, 0x70, 0x84, 0xb2, + 0x4c, 0xf7, 0x08, 0x2e, 0xac, 0x8a, 0x52, 0xa1, 0x02, 0x49, 0x92, 0x5d, 0x92, 0x04, 0xb9, 0xad, + 0x52, 0xb9, 0xba, 0xa5, 0xd6, 0x76, 0xf7, 0x36, 0x6b, 0x3b, 0xa5, 0x2d, 0x51, 0x08, 0x64, 0x4a, + 0xf5, 0x53, 0xfb, 0x9b, 0x4a, 0x75, 0x5d, 0x8c, 0x85, 0x65, 0xbb, 0xd5, 0xd2, 0x5e, 0x75, 0x5d, + 0x8c, 0x17, 0x74, 0x98, 0x1d, 0x56, 0x67, 0x86, 0xee, 0x8c, 0xd0, 0x12, 0xc7, 0x4e, 0x58, 0x62, + 0xc2, 0x35, 0xb0, 0xc4, 0x5f, 0x16, 0x60, 0x66, 0x48, 0xad, 0x1d, 0x7a, 0x93, 0xe7, 0x21, 0x49, + 0x53, 0x94, 0x76, 0x9f, 0x27, 0x87, 0x16, 0x6d, 0x92, 0xb0, 0x03, 0x1d, 0x88, 0xe0, 0xc2, 0x1d, + 0x38, 0x7e, 0x42, 0x07, 0xc6, 0x14, 0x03, 0x4e, 0xbe, 0x22, 0x80, 0x7c, 0x12, 0x77, 0x44, 0xa1, + 0x88, 0xf5, 0x14, 0x8a, 0x2b, 0xfd, 0x0e, 0x9c, 0x3f, 0xf9, 0x19, 0x06, 0xbc, 0x78, 0x43, 0x80, + 0x33, 0xc3, 0x07, 0x95, 0xa1, 0x3e, 0x7c, 0x12, 0xc6, 0xdb, 0xc8, 0x3b, 0xb4, 0x79, 0xb3, 0xfe, + 0xd8, 0x90, 0x16, 0x80, 0xd5, 0xfd, 0xb1, 0x62, 0xa8, 0x70, 0x0f, 0x89, 0x9f, 0x34, 0x6d, 0x50, + 0x6f, 0x06, 0x3c, 0xfd, 0x5c, 0x0c, 0x1e, 0x18, 0x4a, 0x3e, 0xd4, 0xd1, 0x47, 0x00, 0x0c, 0xab, + 0xd3, 0xf5, 0x68, 0x43, 0xa6, 0xf5, 0x29, 0x4d, 0x24, 0x64, 0xef, 0xe3, 0xda, 0xd3, 0xf5, 0x7c, + 0x7d, 0x9c, 0xe8, 0x81, 0x8a, 0x88, 0xc1, 0xa5, 0xc0, 0xd1, 0x04, 0x71, 0x34, 0x7f, 0xc2, 0x93, + 0x0e, 0xf4, 0xba, 0x67, 0x41, 0xd4, 0x4d, 0x03, 0x59, 0x9e, 0xea, 0x7a, 0x0e, 0xd2, 0xda, 0x86, + 0xd5, 0x22, 0x05, 0x38, 0x55, 0x4c, 0x36, 0x35, 0xd3, 0x45, 0xca, 0x14, 0x55, 0xd7, 0xb9, 0x16, + 0x23, 0x48, 0x97, 0x71, 0x42, 0x88, 0xf1, 0x1e, 0x04, 0x55, 0xfb, 0x88, 0xc2, 0xd7, 0x26, 0x20, + 0x13, 0x1a, 0xeb, 0xa4, 0xf3, 0x90, 0xbd, 0xa9, 0xdd, 0xd6, 0x54, 0x3e, 0xaa, 0xd3, 0x48, 0x64, + 0xb0, 0x6c, 0x97, 0x8d, 0xeb, 0xcf, 0xc2, 0x2c, 0x31, 0xb1, 0xbb, 0x1e, 0x72, 0x54, 0xdd, 0xd4, + 0x5c, 0x97, 0x04, 0x2d, 0x45, 0x4c, 0x25, 0xac, 0xab, 0x61, 0x55, 0x85, 0x6b, 0xa4, 0x35, 0x98, + 0x21, 0x88, 0x76, 0xd7, 0xf4, 0x8c, 0x8e, 0x89, 0x54, 0xfc, 0xf2, 0xe0, 0x92, 0x42, 0xec, 0x7b, + 0x36, 0x8d, 0x2d, 0xb6, 0x99, 0x01, 0xf6, 0xc8, 0x95, 0xd6, 0xe1, 0x11, 0x02, 0x6b, 0x21, 0x0b, + 0x39, 0x9a, 0x87, 0x54, 0xf4, 0xd9, 0xae, 0x66, 0xba, 0xaa, 0x66, 0x35, 0xd4, 0x43, 0xcd, 0x3d, + 0x94, 0x67, 0x31, 0x41, 0x39, 0x26, 0x0b, 0xca, 0x59, 0x6c, 0xb8, 0xc1, 0xec, 0xaa, 0xc4, 0xac, + 0x64, 0x35, 0xae, 0x69, 0xee, 0xa1, 0x54, 0x84, 0x33, 0x84, 0xc5, 0xf5, 0x1c, 0xc3, 0x6a, 0xa9, + 0xfa, 0x21, 0xd2, 0x6f, 0xa9, 0x5d, 0xaf, 0x79, 0x49, 0x7e, 0x28, 0x7c, 0x7f, 0xe2, 0x61, 0x9d, + 0xd8, 0x54, 0xb0, 0xc9, 0xbe, 0xd7, 0xbc, 0x24, 0xd5, 0x21, 0x8b, 0x17, 0xa3, 0x6d, 0xbc, 0x8c, + 0xd4, 0xa6, 0xed, 0x90, 0xce, 0x92, 0x1b, 0xb2, 0xb3, 0x43, 0x11, 0x5c, 0xac, 0x31, 0xc0, 0xb6, + 0xdd, 0x40, 0xc5, 0x64, 0x7d, 0xb7, 0x5a, 0x5d, 0x57, 0x32, 0x9c, 0xe5, 0xaa, 0xed, 0xe0, 0x84, + 0x6a, 0xd9, 0x7e, 0x80, 0x33, 0x34, 0xa1, 0x5a, 0x36, 0x0f, 0xef, 0x1a, 0xcc, 0xe8, 0x3a, 0x7d, + 0x66, 0x43, 0x57, 0xd9, 0x88, 0xef, 0xca, 0x62, 0x4f, 0xb0, 0x74, 0x7d, 0x83, 0x1a, 0xb0, 0x1c, + 0x77, 0xa5, 0xcb, 0xf0, 0x40, 0x10, 0xac, 0x30, 0x70, 0x7a, 0xe0, 0x29, 0xfb, 0xa1, 0x6b, 0x30, + 0xd3, 0x39, 0x1a, 0x04, 0x4a, 0x3d, 0x77, 0xec, 0x1c, 0xf5, 0xc3, 0x1e, 0x27, 0xaf, 0x6d, 0x0e, + 0xd2, 0x35, 0x0f, 0x35, 0xe4, 0x07, 0xc3, 0xd6, 0x21, 0x85, 0xb4, 0x04, 0xa2, 0xae, 0xab, 0xc8, + 0xd2, 0x0e, 0x4c, 0xa4, 0x6a, 0x0e, 0xb2, 0x34, 0x57, 0x3e, 0x17, 0x36, 0xce, 0xe9, 0x7a, 0x95, + 0x68, 0x4b, 0x44, 0x29, 0x3d, 0x05, 0xd3, 0xf6, 0xc1, 0x4d, 0x9d, 0x66, 0x96, 0xda, 0x71, 0x50, + 0xd3, 0x78, 0x49, 0x7e, 0x8c, 0x84, 0x69, 0x0a, 0x2b, 0x48, 0x5e, 0xed, 0x12, 0xb1, 0xf4, 0x24, + 0x88, 0xba, 0x7b, 0xa8, 0x39, 0x1d, 0xd2, 0xda, 0xdd, 0x8e, 0xa6, 0x23, 0xf9, 0x71, 0x6a, 0x4a, + 0xe5, 0x3b, 0x5c, 0x8c, 0x33, 0xdb, 0xbd, 0x63, 0x34, 0x3d, 0xce, 0xf8, 0x04, 0xcd, 0x6c, 0x22, + 0x63, 0x6c, 0x37, 0x60, 0xb6, 0x6b, 0x19, 0x96, 0x87, 0x9c, 0x8e, 0x83, 0xf0, 0x10, 0x4f, 0x77, + 0xa2, 0xfc, 0xcf, 0x13, 0x27, 0x8c, 0xe1, 0xfb, 0x61, 0x6b, 0x9a, 0x00, 0xca, 0x4c, 0x77, 0x50, + 0x58, 0x28, 0x42, 0x36, 0x9c, 0x17, 0x52, 0x1a, 0x68, 0x66, 0x88, 0x02, 0xee, 0xb1, 0x95, 0xda, + 0x3a, 0xee, 0x8e, 0x9f, 0xa9, 0x8a, 0x31, 0xdc, 0xa5, 0xb7, 0x36, 0xf7, 0xaa, 0xaa, 0xb2, 0xbf, + 0xb3, 0xb7, 0xb9, 0x5d, 0x15, 0xe3, 0x4f, 0xa5, 0x53, 0xdf, 0x9b, 0x10, 0xef, 0xde, 0xbd, 0x7b, + 0x37, 0x56, 0xf8, 0x76, 0x0c, 0x72, 0xbd, 0x93, 0xb1, 0xf4, 0x53, 0xf0, 0x20, 0x7f, 0x8d, 0x75, + 0x91, 0xa7, 0xde, 0x31, 0x1c, 0x92, 0xaa, 0x6d, 0x8d, 0xce, 0x96, 0x7e, 0x94, 0x67, 0x99, 0x55, + 0x1d, 0x79, 0x2f, 0x18, 0x0e, 0x4e, 0xc4, 0xb6, 0xe6, 0x49, 0x5b, 0x70, 0xce, 0xb2, 0x55, 0xd7, + 0xd3, 0xac, 0x86, 0xe6, 0x34, 0xd4, 0xe0, 0x00, 0x41, 0xd5, 0x74, 0x1d, 0xb9, 0xae, 0x4d, 0x5b, + 0x84, 0xcf, 0xf2, 0xb0, 0x65, 0xd7, 0x99, 0x71, 0x50, 0x3b, 0x4b, 0xcc, 0xb4, 0x2f, 0x23, 0xe2, + 0x27, 0x65, 0xc4, 0x43, 0x90, 0x6e, 0x6b, 0x1d, 0x15, 0x59, 0x9e, 0x73, 0x44, 0xe6, 0xb9, 0x94, + 0x92, 0x6a, 0x6b, 0x9d, 0x2a, 0xbe, 0xfe, 0xe8, 0xd6, 0x20, 0x1c, 0xc7, 0x7f, 0x8a, 0x43, 0x36, + 0x3c, 0xd3, 0xe1, 0x11, 0x59, 0x27, 0xf5, 0x5b, 0x20, 0x3b, 0xfc, 0xd1, 0xfb, 0x4e, 0x80, 0x8b, + 0x15, 0x5c, 0xd8, 0x8b, 0xe3, 0x74, 0xd2, 0x52, 0x28, 0x12, 0x37, 0x55, 0xbc, 0xa7, 0x11, 0x9d, + 0xdf, 0x53, 0x0a, 0xbb, 0x92, 0x36, 0x60, 0xfc, 0xa6, 0x4b, 0xb8, 0xc7, 0x09, 0xf7, 0x63, 0xf7, + 0xe7, 0xbe, 0x5e, 0x27, 0xe4, 0xe9, 0xeb, 0x75, 0x75, 0xa7, 0xa6, 0x6c, 0x97, 0xb6, 0x14, 0x06, + 0x97, 0xce, 0x42, 0xc2, 0xd4, 0x5e, 0x3e, 0xea, 0x6d, 0x01, 0x44, 0x34, 0x6a, 0xe0, 0xcf, 0x42, + 0xe2, 0x0e, 0xd2, 0x6e, 0xf5, 0x16, 0x5e, 0x22, 0xfa, 0x08, 0x53, 0x7f, 0x09, 0x92, 0x24, 0x5e, + 0x12, 0x00, 0x8b, 0x98, 0x38, 0x26, 0xa5, 0x20, 0x51, 0xa9, 0x29, 0x38, 0xfd, 0x45, 0xc8, 0x52, + 0xa9, 0xba, 0xbb, 0x59, 0xad, 0x54, 0xc5, 0x58, 0x61, 0x0d, 0xc6, 0x69, 0x10, 0xf0, 0xd6, 0xf0, + 0xc3, 0x20, 0x8e, 0xb1, 0x4b, 0xc6, 0x21, 0x70, 0xed, 0xfe, 0x76, 0xb9, 0xaa, 0x88, 0xb1, 0xf0, + 0xf2, 0xba, 0x90, 0x0d, 0x8f, 0x73, 0x3f, 0x9e, 0x9c, 0xfa, 0x6b, 0x01, 0x32, 0xa1, 0xf1, 0x0c, + 0x0f, 0x06, 0x9a, 0x69, 0xda, 0x77, 0x54, 0xcd, 0x34, 0x34, 0x97, 0x25, 0x05, 0x10, 0x51, 0x09, + 0x4b, 0x46, 0x5d, 0xb4, 0x1f, 0x8b, 0xf3, 0xaf, 0x0b, 0x20, 0xf6, 0x8f, 0x76, 0x7d, 0x0e, 0x0a, + 0x3f, 0x51, 0x07, 0x5f, 0x13, 0x20, 0xd7, 0x3b, 0xcf, 0xf5, 0xb9, 0x77, 0xfe, 0x27, 0xea, 0xde, + 0x3b, 0x31, 0x98, 0xec, 0x99, 0xe2, 0x46, 0xf5, 0xee, 0xb3, 0x30, 0x6d, 0x34, 0x50, 0xbb, 0x63, + 0x7b, 0xc8, 0xd2, 0x8f, 0x54, 0x13, 0xdd, 0x46, 0xa6, 0x5c, 0x20, 0x85, 0x62, 0xe9, 0xfe, 0x73, + 0xe2, 0xe2, 0x66, 0x80, 0xdb, 0xc2, 0xb0, 0xe2, 0xcc, 0xe6, 0x7a, 0x75, 0x7b, 0xb7, 0xb6, 0x57, + 0xdd, 0xa9, 0xbc, 0xa8, 0xee, 0xef, 0xfc, 0xf4, 0x4e, 0xed, 0x85, 0x1d, 0x45, 0x34, 0xfa, 0xcc, + 0x3e, 0xc2, 0xad, 0xbe, 0x0b, 0x62, 0xbf, 0x53, 0xd2, 0x83, 0x30, 0xcc, 0x2d, 0x71, 0x4c, 0x9a, + 0x81, 0xa9, 0x9d, 0x9a, 0x5a, 0xdf, 0x5c, 0xaf, 0xaa, 0xd5, 0xab, 0x57, 0xab, 0x95, 0xbd, 0x3a, + 0x7d, 0x71, 0xf6, 0xad, 0xf7, 0x7a, 0x37, 0xf5, 0xab, 0x71, 0x98, 0x19, 0xe2, 0x89, 0x54, 0x62, + 0x33, 0x3b, 0x7d, 0x8d, 0x78, 0x66, 0x14, 0xef, 0x17, 0xf1, 0x54, 0xb0, 0xab, 0x39, 0x1e, 0x1b, + 0xf1, 0x9f, 0x04, 0x1c, 0x25, 0xcb, 0x33, 0x9a, 0x06, 0x72, 0xd8, 0x39, 0x03, 0x1d, 0xe4, 0xa7, + 0x02, 0x39, 0x3d, 0x6a, 0xf8, 0x38, 0x48, 0x1d, 0xdb, 0x35, 0x3c, 0xe3, 0x36, 0x52, 0x0d, 0x8b, + 0x1f, 0x4a, 0xe0, 0xc1, 0x3e, 0xa1, 0x88, 0x5c, 0xb3, 0x69, 0x79, 0xbe, 0xb5, 0x85, 0x5a, 0x5a, + 0x9f, 0x35, 0x2e, 0xe0, 0x71, 0x45, 0xe4, 0x1a, 0xdf, 0xfa, 0x3c, 0x64, 0x1b, 0x76, 0x17, 0x8f, + 0x49, 0xd4, 0x0e, 0xf7, 0x0b, 0x41, 0xc9, 0x50, 0x99, 0x6f, 0xc2, 0xe6, 0xd8, 0xe0, 0x34, 0x24, + 0xab, 0x64, 0xa8, 0x8c, 0x9a, 0x3c, 0x01, 0x53, 0x5a, 0xab, 0xe5, 0x60, 0x72, 0x4e, 0x44, 0x27, + 0xf3, 0x9c, 0x2f, 0x26, 0x86, 0x73, 0xd7, 0x21, 0xc5, 0xe3, 0x80, 0x5b, 0x32, 0x8e, 0x84, 0xda, + 0xa1, 0x67, 0x52, 0xb1, 0x85, 0xb4, 0x92, 0xb2, 0xb8, 0xf2, 0x3c, 0x64, 0x0d, 0x57, 0x0d, 0x0e, + 0x47, 0x63, 0xf3, 0xb1, 0x85, 0x94, 0x92, 0x31, 0x5c, 0xff, 0x34, 0xac, 0xf0, 0x46, 0x0c, 0x72, + 0xbd, 0x87, 0xbb, 0xd2, 0x3a, 0xa4, 0x4c, 0x5b, 0xd7, 0x48, 0x6a, 0xd1, 0x5f, 0x16, 0x16, 0x22, + 0xce, 0x83, 0x17, 0xb7, 0x98, 0xbd, 0xe2, 0x23, 0xe7, 0xfe, 0x5e, 0x80, 0x14, 0x17, 0x4b, 0x67, + 0x20, 0xd1, 0xd1, 0xbc, 0x43, 0x42, 0x97, 0x2c, 0xc7, 0x44, 0x41, 0x21, 0xd7, 0x58, 0xee, 0x76, + 0x34, 0x8b, 0xa4, 0x00, 0x93, 0xe3, 0x6b, 0xbc, 0xae, 0x26, 0xd2, 0x1a, 0x64, 0xec, 0xb7, 0xdb, + 0x6d, 0x64, 0x79, 0x2e, 0x5f, 0x57, 0x26, 0xaf, 0x30, 0xb1, 0xf4, 0x34, 0x4c, 0x7b, 0x8e, 0x66, + 0x98, 0x3d, 0xb6, 0x09, 0x62, 0x2b, 0x72, 0x85, 0x6f, 0x5c, 0x84, 0xb3, 0x9c, 0xb7, 0x81, 0x3c, + 0x4d, 0x3f, 0x44, 0x8d, 0x00, 0x34, 0x4e, 0x4e, 0x0e, 0x1f, 0x64, 0x06, 0xeb, 0x4c, 0xcf, 0xb1, + 0x85, 0xef, 0x08, 0x30, 0xcd, 0x5f, 0x54, 0x1a, 0x7e, 0xb0, 0xb6, 0x01, 0x34, 0xcb, 0xb2, 0xbd, + 0x70, 0xb8, 0x06, 0x53, 0x79, 0x00, 0xb7, 0x58, 0xf2, 0x41, 0x4a, 0x88, 0x60, 0xae, 0x0d, 0x10, + 0x68, 0x4e, 0x0c, 0xdb, 0x39, 0xc8, 0xb0, 0x93, 0x7b, 0xf2, 0xf3, 0x0f, 0x7d, 0xb5, 0x05, 0x2a, + 0xc2, 0x6f, 0x34, 0xd2, 0x2c, 0x24, 0x0f, 0x50, 0xcb, 0xb0, 0xd8, 0x79, 0x22, 0xbd, 0xe0, 0xa7, + 0x94, 0x09, 0xff, 0x94, 0xb2, 0x7c, 0x03, 0x66, 0x74, 0xbb, 0xdd, 0xef, 0x6e, 0x59, 0xec, 0x7b, + 0xbd, 0x76, 0xaf, 0x09, 0x9f, 0x81, 0x60, 0xc4, 0xfc, 0x72, 0x2c, 0xbe, 0xb1, 0x5b, 0xfe, 0x6a, + 0x6c, 0x6e, 0x83, 0xe2, 0x76, 0xf9, 0x63, 0x2a, 0xa8, 0x69, 0x22, 0x1d, 0xbb, 0x0e, 0xdf, 0xff, + 0x18, 0x3c, 0xd3, 0x32, 0xbc, 0xc3, 0xee, 0xc1, 0xa2, 0x6e, 0xb7, 0x97, 0x5a, 0x76, 0xcb, 0x0e, + 0x7e, 0xee, 0xc2, 0x57, 0xe4, 0x82, 0xfc, 0xc7, 0x7e, 0xf2, 0x4a, 0xfb, 0xd2, 0xb9, 0xc8, 0xdf, + 0xc7, 0x8a, 0x3b, 0x30, 0xc3, 0x8c, 0x55, 0x72, 0xe6, 0x4e, 0x5f, 0x0d, 0xa4, 0xfb, 0x9e, 0xbb, + 0xc8, 0xdf, 0x78, 0x97, 0xf4, 0x6a, 0x65, 0x9a, 0x41, 0xb1, 0x8e, 0xbe, 0x40, 0x14, 0x15, 0x78, + 0xa0, 0x87, 0x8f, 0xee, 0x4b, 0xe4, 0x44, 0x30, 0x7e, 0x9b, 0x31, 0xce, 0x84, 0x18, 0xeb, 0x0c, + 0x5a, 0xac, 0xc0, 0xe4, 0x69, 0xb8, 0xfe, 0x96, 0x71, 0x65, 0x51, 0x98, 0x64, 0x03, 0xa6, 0x08, + 0x89, 0xde, 0x75, 0x3d, 0xbb, 0x4d, 0x8a, 0xde, 0xfd, 0x69, 0xfe, 0xee, 0x5d, 0xba, 0x51, 0x72, + 0x18, 0x56, 0xf1, 0x51, 0xc5, 0x22, 0x90, 0x9f, 0x19, 0x1a, 0x48, 0x37, 0x23, 0x18, 0xde, 0x64, + 0x8e, 0xf8, 0xf6, 0xc5, 0x4f, 0xc3, 0x2c, 0xfe, 0x9f, 0xd4, 0xa4, 0xb0, 0x27, 0xd1, 0xa7, 0x4c, + 0xf2, 0x77, 0x5e, 0xa1, 0x7b, 0x71, 0xc6, 0x27, 0x08, 0xf9, 0x14, 0x5a, 0xc5, 0x16, 0xf2, 0x3c, + 0xe4, 0xb8, 0xaa, 0x66, 0x0e, 0x73, 0x2f, 0xf4, 0x9a, 0x2e, 0x7f, 0xf1, 0xbd, 0xde, 0x55, 0xdc, + 0xa0, 0xc8, 0x92, 0x69, 0x16, 0xf7, 0xe1, 0xc1, 0x21, 0x59, 0x31, 0x02, 0xe7, 0xab, 0x8c, 0x73, + 0x76, 0x20, 0x33, 0x30, 0xed, 0x2e, 0x70, 0xb9, 0xbf, 0x96, 0x23, 0x70, 0xfe, 0x36, 0xe3, 0x94, + 0x18, 0x96, 0x2f, 0x29, 0x66, 0xbc, 0x0e, 0xd3, 0xb7, 0x91, 0x73, 0x60, 0xbb, 0xec, 0x68, 0x64, + 0x04, 0xba, 0xd7, 0x18, 0xdd, 0x14, 0x03, 0x92, 0xb3, 0x12, 0xcc, 0x75, 0x19, 0x52, 0x4d, 0x4d, + 0x47, 0x23, 0x50, 0x7c, 0x89, 0x51, 0x4c, 0x60, 0x7b, 0x0c, 0x2d, 0x41, 0xb6, 0x65, 0xb3, 0xb6, + 0x14, 0x0d, 0x7f, 0x9d, 0xc1, 0x33, 0x1c, 0xc3, 0x28, 0x3a, 0x76, 0xa7, 0x6b, 0xe2, 0x9e, 0x15, + 0x4d, 0xf1, 0x3b, 0x9c, 0x82, 0x63, 0x18, 0xc5, 0x29, 0xc2, 0xfa, 0xbb, 0x9c, 0xc2, 0x0d, 0xc5, + 0xf3, 0x79, 0xc8, 0xd8, 0x96, 0x79, 0x64, 0x5b, 0xa3, 0x38, 0xf1, 0x7b, 0x8c, 0x01, 0x18, 0x04, + 0x13, 0x5c, 0x81, 0xf4, 0xa8, 0x0b, 0xf1, 0xfb, 0xef, 0xf1, 0xed, 0xc1, 0x57, 0x60, 0x03, 0xa6, + 0x78, 0x81, 0x32, 0x6c, 0x6b, 0x04, 0x8a, 0x3f, 0x60, 0x14, 0xb9, 0x10, 0x8c, 0x3d, 0x86, 0x87, + 0x5c, 0xaf, 0x85, 0x46, 0x21, 0x79, 0x83, 0x3f, 0x06, 0x83, 0xb0, 0x50, 0x1e, 0x20, 0x4b, 0x3f, + 0x1c, 0x8d, 0xe1, 0x2b, 0x3c, 0x94, 0x1c, 0x83, 0x29, 0x2a, 0x30, 0xd9, 0xd6, 0x1c, 0xf7, 0x50, + 0x33, 0x47, 0x5a, 0x8e, 0x3f, 0x64, 0x1c, 0x59, 0x1f, 0xc4, 0x22, 0xd2, 0xb5, 0x4e, 0x43, 0xf3, + 0x55, 0x1e, 0x91, 0x10, 0x8c, 0x6d, 0x3d, 0xd7, 0x23, 0x07, 0x50, 0xa7, 0x61, 0xfb, 0x1a, 0xdf, + 0x7a, 0x14, 0xbb, 0x1d, 0x66, 0xbc, 0x02, 0x69, 0xd7, 0x78, 0x79, 0x24, 0x9a, 0x3f, 0xe2, 0x2b, + 0x4d, 0x00, 0x18, 0xfc, 0x22, 0x9c, 0x1d, 0xda, 0x26, 0x46, 0x20, 0xfb, 0x63, 0x46, 0x76, 0x66, + 0x48, 0xab, 0x60, 0x25, 0xe1, 0xb4, 0x94, 0x7f, 0xc2, 0x4b, 0x02, 0xea, 0xe3, 0xda, 0xc5, 0x2f, + 0x0a, 0xae, 0xd6, 0x3c, 0x5d, 0xd4, 0xfe, 0x94, 0x47, 0x8d, 0x62, 0x7b, 0xa2, 0xb6, 0x07, 0x67, + 0x18, 0xe3, 0xe9, 0xd6, 0xf5, 0xeb, 0xbc, 0xb0, 0x52, 0xf4, 0x7e, 0xef, 0xea, 0xfe, 0x0c, 0xcc, + 0xf9, 0xe1, 0xe4, 0x13, 0xa9, 0xab, 0xb6, 0xb5, 0xce, 0x08, 0xcc, 0xdf, 0x60, 0xcc, 0xbc, 0xe2, + 0xfb, 0x23, 0xad, 0xbb, 0xad, 0x75, 0x30, 0xf9, 0x0d, 0x90, 0x39, 0x79, 0xd7, 0x72, 0x90, 0x6e, + 0xb7, 0x2c, 0xe3, 0x65, 0xd4, 0x18, 0x81, 0xfa, 0xcf, 0xfa, 0x96, 0x6a, 0x3f, 0x04, 0xc7, 0xcc, + 0x9b, 0x20, 0xfa, 0xb3, 0x8a, 0x6a, 0xb4, 0x3b, 0xb6, 0xe3, 0x45, 0x30, 0xfe, 0x39, 0x5f, 0x29, + 0x1f, 0xb7, 0x49, 0x60, 0xc5, 0x2a, 0xe4, 0xc8, 0xe5, 0xa8, 0x29, 0xf9, 0x17, 0x8c, 0x68, 0x32, + 0x40, 0xb1, 0xc2, 0xa1, 0xdb, 0xed, 0x8e, 0xe6, 0x8c, 0x52, 0xff, 0xfe, 0x92, 0x17, 0x0e, 0x06, + 0x61, 0x85, 0xc3, 0x3b, 0xea, 0x20, 0xdc, 0xed, 0x47, 0x60, 0xf8, 0x26, 0x2f, 0x1c, 0x1c, 0xc3, + 0x28, 0xf8, 0xc0, 0x30, 0x02, 0xc5, 0x5f, 0x71, 0x0a, 0x8e, 0xc1, 0x14, 0x9f, 0x0a, 0x1a, 0xad, + 0x83, 0x5a, 0x86, 0xeb, 0x39, 0x74, 0x0e, 0xbe, 0x3f, 0xd5, 0xb7, 0xde, 0xeb, 0x1d, 0xc2, 0x94, + 0x10, 0xb4, 0x78, 0x1d, 0xa6, 0xfa, 0x46, 0x0c, 0x29, 0xea, 0x9b, 0x05, 0xf9, 0x67, 0x3f, 0x60, + 0xc5, 0xa8, 0x77, 0xc2, 0x28, 0x6e, 0xe1, 0x75, 0xef, 0x9d, 0x03, 0xa2, 0xc9, 0x5e, 0xf9, 0xc0, + 0x5f, 0xfa, 0x9e, 0x31, 0xa0, 0x78, 0x15, 0x26, 0x7b, 0x66, 0x80, 0x68, 0xaa, 0x9f, 0x63, 0x54, + 0xd9, 0xf0, 0x08, 0x50, 0x5c, 0x83, 0x04, 0xee, 0xe7, 0xd1, 0xf0, 0x9f, 0x67, 0x70, 0x62, 0x5e, + 0xfc, 0x04, 0xa4, 0x78, 0x1f, 0x8f, 0x86, 0xfe, 0x02, 0x83, 0xfa, 0x10, 0x0c, 0xe7, 0x3d, 0x3c, + 0x1a, 0xfe, 0x8b, 0x1c, 0xce, 0x21, 0x18, 0x3e, 0x7a, 0x08, 0xff, 0xe6, 0x97, 0x12, 0xac, 0x0e, + 0xf3, 0xd8, 0x5d, 0x81, 0x09, 0xd6, 0xbc, 0xa3, 0xd1, 0x9f, 0x63, 0x37, 0xe7, 0x88, 0xe2, 0x45, + 0x48, 0x8e, 0x18, 0xf0, 0x5f, 0x66, 0x50, 0x6a, 0x5f, 0xac, 0x40, 0x26, 0xd4, 0xb0, 0xa3, 0xe1, + 0xbf, 0xc2, 0xe0, 0x61, 0x14, 0x76, 0x9d, 0x35, 0xec, 0x68, 0x82, 0x5f, 0xe5, 0xae, 0x33, 0x04, + 0x0e, 0x1b, 0xef, 0xd5, 0xd1, 0xe8, 0x5f, 0xe3, 0x51, 0xe7, 0x90, 0xe2, 0xf3, 0x90, 0xf6, 0xeb, + 0x6f, 0x34, 0xfe, 0xd7, 0x19, 0x3e, 0xc0, 0xe0, 0x08, 0x84, 0xea, 0x7f, 0x34, 0xc5, 0xe7, 0x79, + 0x04, 0x42, 0x28, 0xbc, 0x8d, 0xfa, 0x7b, 0x7a, 0x34, 0xd3, 0x6f, 0xf0, 0x6d, 0xd4, 0xd7, 0xd2, + 0xf1, 0x6a, 0x92, 0x32, 0x18, 0x4d, 0xf1, 0x9b, 0x7c, 0x35, 0x89, 0x3d, 0x76, 0xa3, 0xbf, 0x49, + 0x46, 0x73, 0xfc, 0x16, 0x77, 0xa3, 0xaf, 0x47, 0x16, 0x77, 0x41, 0x1a, 0x6c, 0x90, 0xd1, 0x7c, + 0x5f, 0x60, 0x7c, 0xd3, 0x03, 0xfd, 0xb1, 0xf8, 0x02, 0x9c, 0x19, 0xde, 0x1c, 0xa3, 0x59, 0xbf, + 0xf8, 0x41, 0xdf, 0xeb, 0x4c, 0xb8, 0x37, 0x16, 0xf7, 0x82, 0x2a, 0x1b, 0x6e, 0x8c, 0xd1, 0xb4, + 0xaf, 0x7e, 0xd0, 0x5b, 0x68, 0xc3, 0x7d, 0xb1, 0x58, 0x02, 0x08, 0x7a, 0x52, 0x34, 0xd7, 0x6b, + 0x8c, 0x2b, 0x04, 0xc2, 0x5b, 0x83, 0xb5, 0xa4, 0x68, 0xfc, 0x97, 0xf8, 0xd6, 0x60, 0x08, 0xbc, + 0x35, 0x78, 0x37, 0x8a, 0x46, 0xbf, 0xce, 0xb7, 0x06, 0x87, 0x14, 0xaf, 0x40, 0xca, 0xea, 0x9a, + 0x26, 0xce, 0x2d, 0xe9, 0xfe, 0x9f, 0x11, 0xc9, 0xff, 0xf2, 0x21, 0x03, 0x73, 0x40, 0x71, 0x0d, + 0x92, 0xa8, 0x7d, 0x80, 0x1a, 0x51, 0xc8, 0x7f, 0xfd, 0x90, 0xd7, 0x13, 0x6c, 0x5d, 0x7c, 0x1e, + 0x80, 0xbe, 0x4c, 0x93, 0x5f, 0x89, 0x22, 0xb0, 0xff, 0xf6, 0x21, 0xfb, 0x42, 0x21, 0x80, 0x04, + 0x04, 0xf4, 0x7b, 0x87, 0xfb, 0x13, 0xbc, 0xd7, 0x4b, 0x40, 0x5e, 0xc0, 0x2f, 0xc3, 0xc4, 0x4d, + 0xd7, 0xb6, 0x3c, 0xad, 0x15, 0x85, 0xfe, 0x77, 0x86, 0xe6, 0xf6, 0x38, 0x60, 0x6d, 0xdb, 0x41, + 0x9e, 0xd6, 0x72, 0xa3, 0xb0, 0xff, 0xc1, 0xb0, 0x3e, 0x00, 0x83, 0x75, 0xcd, 0xf5, 0x46, 0x79, + 0xee, 0xff, 0xe4, 0x60, 0x0e, 0xc0, 0x4e, 0xe3, 0xff, 0x6f, 0xa1, 0xa3, 0x28, 0xec, 0xfb, 0xdc, + 0x69, 0x66, 0x5f, 0xfc, 0x04, 0xa4, 0xf1, 0xbf, 0xf4, 0xab, 0x9d, 0x08, 0xf0, 0x7f, 0x31, 0x70, + 0x80, 0xc0, 0x77, 0x76, 0xbd, 0x86, 0x67, 0x44, 0x07, 0xfb, 0xbf, 0xd9, 0x4a, 0x73, 0xfb, 0x62, + 0x09, 0x32, 0xae, 0xd7, 0x68, 0x74, 0xd9, 0x44, 0x13, 0x01, 0xff, 0xfe, 0x87, 0xfe, 0x4b, 0xae, + 0x8f, 0x29, 0x9f, 0x1f, 0x7e, 0x58, 0x07, 0x1b, 0xf6, 0x86, 0x4d, 0x8f, 0xe9, 0xe0, 0xff, 0x52, + 0xf0, 0xb0, 0x6e, 0xb7, 0x0f, 0x6c, 0x77, 0x29, 0x54, 0x86, 0x96, 0x6c, 0x8b, 0xd9, 0x4b, 0x71, + 0xdb, 0x42, 0x73, 0xa7, 0x3b, 0x98, 0x2b, 0x9c, 0x85, 0x64, 0xbd, 0x7b, 0x70, 0x70, 0x24, 0x89, + 0x10, 0x77, 0xbb, 0x07, 0xec, 0xcb, 0x12, 0xfc, 0x6f, 0xe1, 0xed, 0x38, 0x4c, 0x96, 0x4c, 0x73, + 0xef, 0xa8, 0x83, 0xdc, 0x9a, 0x85, 0x6a, 0x4d, 0x49, 0x86, 0x71, 0xf2, 0x24, 0xcf, 0x11, 0x33, + 0xe1, 0xda, 0x98, 0xc2, 0xae, 0x7d, 0xcd, 0x32, 0x39, 0xaf, 0x8c, 0xf9, 0x9a, 0x65, 0x5f, 0xb3, + 0x42, 0x8f, 0x2b, 0x7d, 0xcd, 0x8a, 0xaf, 0x59, 0x25, 0x87, 0x96, 0x71, 0x5f, 0xb3, 0xea, 0x6b, + 0xd6, 0xc8, 0xa1, 0xfc, 0xa4, 0xaf, 0x59, 0xf3, 0x35, 0x17, 0xc8, 0x31, 0x7c, 0xc2, 0xd7, 0x5c, + 0xf0, 0x35, 0x17, 0xc9, 0xe9, 0xfb, 0xb4, 0xaf, 0xb9, 0xe8, 0x6b, 0x2e, 0x91, 0x13, 0x77, 0xc9, + 0xd7, 0x5c, 0xf2, 0x35, 0x97, 0xc9, 0x27, 0x24, 0x13, 0xbe, 0xe6, 0xb2, 0x34, 0x07, 0x13, 0xf4, + 0xc9, 0x9e, 0x25, 0x3f, 0xcb, 0x4e, 0x5d, 0x1b, 0x53, 0xb8, 0x20, 0xd0, 0x3d, 0x47, 0x3e, 0x13, + 0x19, 0x0f, 0x74, 0xcf, 0x05, 0xba, 0x65, 0xf2, 0xb1, 0xb4, 0x18, 0xe8, 0x96, 0x03, 0xdd, 0x8a, + 0x3c, 0x89, 0x13, 0x20, 0xd0, 0xad, 0x04, 0xba, 0x55, 0x39, 0x87, 0x57, 0x20, 0xd0, 0xad, 0x06, + 0xba, 0x35, 0x79, 0x6a, 0x5e, 0x58, 0xc8, 0x06, 0xba, 0x35, 0xe9, 0x19, 0xc8, 0xb8, 0xdd, 0x03, + 0x95, 0x7d, 0x45, 0x40, 0x3e, 0x47, 0xc9, 0x2c, 0xc3, 0x22, 0xce, 0x09, 0xb2, 0xac, 0xd7, 0xc6, + 0x14, 0x70, 0xbb, 0x07, 0xac, 0x42, 0x96, 0xb3, 0x40, 0x0e, 0x14, 0x54, 0xf2, 0x11, 0x66, 0xe1, + 0x2d, 0x01, 0xd2, 0x7b, 0x77, 0x6c, 0xf2, 0xa3, 0xac, 0xfb, 0x23, 0x5e, 0x5c, 0xee, 0xf4, 0xca, + 0x2a, 0xf9, 0xdd, 0x2c, 0x7d, 0x4d, 0x50, 0xb8, 0x20, 0xd0, 0xad, 0xc9, 0x8f, 0x92, 0x07, 0xf2, + 0x75, 0x6b, 0xd2, 0x12, 0x64, 0x43, 0x0f, 0xb4, 0x4c, 0xbe, 0x30, 0xe9, 0x7d, 0x22, 0x41, 0xc9, + 0x04, 0x4f, 0xb4, 0x5c, 0x4e, 0x02, 0x4e, 0x7b, 0xfc, 0xc7, 0xbb, 0x63, 0x17, 0x3e, 0x1f, 0x83, + 0x0c, 0x3d, 0x83, 0x24, 0x4f, 0x85, 0x6f, 0x45, 0x67, 0xf2, 0x23, 0xe6, 0xc6, 0x98, 0xc2, 0x05, + 0x92, 0x02, 0x40, 0x4d, 0x71, 0x86, 0x53, 0x4f, 0xca, 0xcf, 0xfe, 0xe3, 0xdb, 0xe7, 0x3e, 0x7e, + 0xe2, 0x0e, 0xc2, 0xb1, 0x5b, 0xa2, 0x15, 0x76, 0x71, 0xdf, 0xb0, 0xbc, 0xe7, 0x96, 0x2f, 0xe1, + 0x00, 0x07, 0x2c, 0xd2, 0x3e, 0xa4, 0x2a, 0x9a, 0x4b, 0x3e, 0x31, 0x23, 0xae, 0x27, 0xca, 0x17, + 0xff, 0xf7, 0xed, 0x73, 0x2b, 0x11, 0x8c, 0xac, 0xf8, 0x2d, 0x6e, 0x1f, 0x61, 0xd6, 0x0b, 0xab, + 0x18, 0x7e, 0x6d, 0x4c, 0xf1, 0xa9, 0xa4, 0x65, 0xee, 0xea, 0x8e, 0xd6, 0xa6, 0x9f, 0xd2, 0xc4, + 0xcb, 0xe2, 0xf1, 0xdb, 0xe7, 0xb2, 0xdb, 0x47, 0x81, 0x3c, 0x70, 0x05, 0x5f, 0x95, 0x53, 0x30, + 0x4e, 0x5d, 0x2d, 0xaf, 0xbf, 0x79, 0x2f, 0x3f, 0xf6, 0xd6, 0xbd, 0xfc, 0xd8, 0x3f, 0xdc, 0xcb, + 0x8f, 0xbd, 0x73, 0x2f, 0x2f, 0xbc, 0x7f, 0x2f, 0x2f, 0xfc, 0xe0, 0x5e, 0x5e, 0xb8, 0x7b, 0x9c, + 0x17, 0xbe, 0x72, 0x9c, 0x17, 0xbe, 0x7e, 0x9c, 0x17, 0xbe, 0x75, 0x9c, 0x17, 0xde, 0x3c, 0xce, + 0x8f, 0xbd, 0x75, 0x9c, 0x17, 0xde, 0x39, 0xce, 0x0b, 0xdf, 0x3b, 0xce, 0x8f, 0xbd, 0x7f, 0x9c, + 0x17, 0x7e, 0x70, 0x9c, 0x1f, 0xbb, 0xfb, 0xdd, 0xfc, 0xd8, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, + 0xb7, 0xa2, 0x0e, 0xd2, 0xdb, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeboth/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeboth/one.pb.go index 20e3e185f..ab5afc6a2 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeboth/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeboth/one.pb.go @@ -993,253 +993,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3929 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0x22, 0xcd, 0x9c, 0x19, 0x8d, 0xa8, 0x5f, 0xf2, 0x9a, 0x2b, 0xc7, 0xb3, 0xda, - 0xb1, 0x1d, 0xcb, 0x76, 0x2c, 0xd9, 0xba, 0xec, 0x65, 0xb6, 0x89, 0x31, 0x92, 0xc6, 0x5a, 0x19, - 0xba, 0x85, 0x92, 0x12, 0x3b, 0x79, 0x20, 0x38, 0x9c, 0x7f, 0x46, 0xdc, 0xe5, 0x90, 0x53, 0x92, - 0xb3, 0x6b, 0xf9, 0x69, 0x03, 0xf7, 0x82, 0x20, 0xe8, 0x2d, 0x2d, 0xd0, 0xc4, 0x71, 0xdc, 0x34, - 0x40, 0xeb, 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x41, 0x9f, 0xfa, 0x92, 0xd6, 0x4f, 0x85, 0xf3, 0x56, - 0x14, 0x85, 0x91, 0x55, 0x0d, 0x34, 0x6d, 0xdd, 0xd6, 0x6d, 0x0c, 0x34, 0xe8, 0xbe, 0x14, 0xff, - 0x8d, 0xe4, 0x5c, 0xb4, 0x1c, 0x05, 0x4d, 0xd2, 0x27, 0x89, 0xe7, 0x9c, 0xef, 0xe3, 0xf9, 0xcf, - 0x7f, 0x78, 0xce, 0xe1, 0x3f, 0x84, 0xcf, 0x2c, 0xc3, 0x6c, 0xd3, 0x71, 0x9a, 0x16, 0x5e, 0x68, - 0xbb, 0x8e, 0xef, 0xd4, 0x3a, 0x8d, 0x85, 0x3a, 0xf6, 0x0c, 0xd7, 0x6c, 0xfb, 0x8e, 0x3b, 0x4f, - 0x65, 0x68, 0x82, 0x59, 0xcc, 0x0b, 0x8b, 0xd2, 0x36, 0x4c, 0x3e, 0x6f, 0x5a, 0x78, 0x3d, 0x30, - 0xdc, 0xc7, 0x3e, 0xba, 0x02, 0xa9, 0x86, 0x69, 0x61, 0x45, 0x9a, 0x4d, 0xce, 0xe5, 0x16, 0x1f, - 0x9d, 0xef, 0x01, 0xcd, 0x77, 0x23, 0xf6, 0x88, 0x58, 0xa5, 0x88, 0xd2, 0xbb, 0x29, 0x98, 0x1a, - 0xa0, 0x45, 0x08, 0x52, 0xb6, 0xde, 0x22, 0x8c, 0xd2, 0x5c, 0x56, 0xa5, 0xff, 0x23, 0x05, 0xc6, - 0xda, 0xba, 0x71, 0x53, 0x6f, 0x62, 0x25, 0x41, 0xc5, 0xe2, 0x12, 0x15, 0x01, 0xea, 0xb8, 0x8d, - 0xed, 0x3a, 0xb6, 0x8d, 0x63, 0x25, 0x39, 0x9b, 0x9c, 0xcb, 0xaa, 0x11, 0x09, 0x7a, 0x0a, 0x26, - 0xdb, 0x9d, 0x9a, 0x65, 0x1a, 0x5a, 0xc4, 0x0c, 0x66, 0x93, 0x73, 0x69, 0x55, 0x66, 0x8a, 0xf5, - 0xd0, 0xf8, 0x71, 0x98, 0xb8, 0x8d, 0xf5, 0x9b, 0x51, 0xd3, 0x1c, 0x35, 0x2d, 0x10, 0x71, 0xc4, - 0x70, 0x0d, 0xf2, 0x2d, 0xec, 0x79, 0x7a, 0x13, 0x6b, 0xfe, 0x71, 0x1b, 0x2b, 0x29, 0xba, 0xfa, - 0xd9, 0xbe, 0xd5, 0xf7, 0xae, 0x3c, 0xc7, 0x51, 0x07, 0xc7, 0x6d, 0x8c, 0x2a, 0x90, 0xc5, 0x76, - 0xa7, 0xc5, 0x18, 0xd2, 0xa7, 0xc4, 0xaf, 0x6a, 0x77, 0x5a, 0xbd, 0x2c, 0x19, 0x02, 0xe3, 0x14, - 0x63, 0x1e, 0x76, 0x6f, 0x99, 0x06, 0x56, 0x46, 0x29, 0xc1, 0xe3, 0x7d, 0x04, 0xfb, 0x4c, 0xdf, - 0xcb, 0x21, 0x70, 0x68, 0x0d, 0xb2, 0xf8, 0x65, 0x1f, 0xdb, 0x9e, 0xe9, 0xd8, 0xca, 0x18, 0x25, - 0x79, 0x6c, 0xc0, 0x2e, 0x62, 0xab, 0xde, 0x4b, 0x11, 0xe2, 0xd0, 0x25, 0x18, 0x73, 0xda, 0xbe, - 0xe9, 0xd8, 0x9e, 0x92, 0x99, 0x95, 0xe6, 0x72, 0x8b, 0x1f, 0x1a, 0x98, 0x08, 0xbb, 0xcc, 0x46, - 0x15, 0xc6, 0x68, 0x13, 0x64, 0xcf, 0xe9, 0xb8, 0x06, 0xd6, 0x0c, 0xa7, 0x8e, 0x35, 0xd3, 0x6e, - 0x38, 0x4a, 0x96, 0x12, 0x5c, 0xe8, 0x5f, 0x08, 0x35, 0x5c, 0x73, 0xea, 0x78, 0xd3, 0x6e, 0x38, - 0x6a, 0xc1, 0xeb, 0xba, 0x46, 0xe7, 0x60, 0xd4, 0x3b, 0xb6, 0x7d, 0xfd, 0x65, 0x25, 0x4f, 0x33, - 0x84, 0x5f, 0x95, 0xfe, 0x3b, 0x0d, 0x13, 0xc3, 0xa4, 0xd8, 0x35, 0x48, 0x37, 0xc8, 0x2a, 0x95, - 0xc4, 0x59, 0x62, 0xc0, 0x30, 0xdd, 0x41, 0x1c, 0xfd, 0x11, 0x83, 0x58, 0x81, 0x9c, 0x8d, 0x3d, - 0x1f, 0xd7, 0x59, 0x46, 0x24, 0x87, 0xcc, 0x29, 0x60, 0xa0, 0xfe, 0x94, 0x4a, 0xfd, 0x48, 0x29, - 0xf5, 0x22, 0x4c, 0x04, 0x2e, 0x69, 0xae, 0x6e, 0x37, 0x45, 0x6e, 0x2e, 0xc4, 0x79, 0x32, 0x5f, - 0x15, 0x38, 0x95, 0xc0, 0xd4, 0x02, 0xee, 0xba, 0x46, 0xeb, 0x00, 0x8e, 0x8d, 0x9d, 0x86, 0x56, - 0xc7, 0x86, 0xa5, 0x64, 0x4e, 0x89, 0xd2, 0x2e, 0x31, 0xe9, 0x8b, 0x92, 0xc3, 0xa4, 0x86, 0x85, - 0xae, 0x86, 0xa9, 0x36, 0x76, 0x4a, 0xa6, 0x6c, 0xb3, 0x87, 0xac, 0x2f, 0xdb, 0x0e, 0xa1, 0xe0, - 0x62, 0x92, 0xf7, 0xb8, 0xce, 0x57, 0x96, 0xa5, 0x4e, 0xcc, 0xc7, 0xae, 0x4c, 0xe5, 0x30, 0xb6, - 0xb0, 0x71, 0x37, 0x7a, 0x89, 0x1e, 0x81, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0xf2, 0x42, - 0xb8, 0xa3, 0xb7, 0xf0, 0xcc, 0x15, 0x28, 0x74, 0x87, 0x07, 0x4d, 0x43, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x3a, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x73, 0x19, 0xc6, 0xbb, 0x6e, 0x3f, 0x2c, 0xb0, 0xf4, 0x85, 0x51, 0x98, 0x1e, 0x94, 0x73, - 0x03, 0xd3, 0xff, 0x1c, 0x8c, 0xda, 0x9d, 0x56, 0x0d, 0xbb, 0x4a, 0x92, 0x32, 0xf0, 0x2b, 0x54, - 0x81, 0xb4, 0xa5, 0xd7, 0xb0, 0xa5, 0xa4, 0x66, 0xa5, 0xb9, 0xc2, 0xe2, 0x53, 0x43, 0x65, 0xf5, - 0xfc, 0x16, 0x81, 0xa8, 0x0c, 0x89, 0x3e, 0x06, 0x29, 0x5e, 0xe2, 0x08, 0xc3, 0x93, 0xc3, 0x31, - 0x90, 0x5c, 0x54, 0x29, 0x0e, 0x3d, 0x04, 0x59, 0xf2, 0x97, 0xc5, 0x76, 0x94, 0xfa, 0x9c, 0x21, - 0x02, 0x12, 0x57, 0x34, 0x03, 0x19, 0x9a, 0x66, 0x75, 0x2c, 0x5a, 0x43, 0x70, 0x4d, 0x36, 0xa6, - 0x8e, 0x1b, 0x7a, 0xc7, 0xf2, 0xb5, 0x5b, 0xba, 0xd5, 0xc1, 0x34, 0x61, 0xb2, 0x6a, 0x9e, 0x0b, - 0x3f, 0x41, 0x64, 0xe8, 0x02, 0xe4, 0x58, 0x56, 0x9a, 0x76, 0x1d, 0xbf, 0x4c, 0xab, 0x4f, 0x5a, - 0x65, 0x89, 0xba, 0x49, 0x24, 0xe4, 0xf6, 0x37, 0x3c, 0xc7, 0x16, 0x5b, 0x4b, 0x6f, 0x41, 0x04, - 0xf4, 0xf6, 0x97, 0x7b, 0x0b, 0xdf, 0xc3, 0x83, 0x97, 0xd7, 0x9b, 0x8b, 0xa5, 0x6f, 0x25, 0x20, - 0x45, 0x9f, 0xb7, 0x09, 0xc8, 0x1d, 0xbc, 0xb4, 0x57, 0xd5, 0xd6, 0x77, 0x0f, 0x57, 0xb7, 0xaa, - 0xb2, 0x84, 0x0a, 0x00, 0x54, 0xf0, 0xfc, 0xd6, 0x6e, 0xe5, 0x40, 0x4e, 0x04, 0xd7, 0x9b, 0x3b, - 0x07, 0x97, 0x96, 0xe5, 0x64, 0x00, 0x38, 0x64, 0x82, 0x54, 0xd4, 0x60, 0x69, 0x51, 0x4e, 0x23, - 0x19, 0xf2, 0x8c, 0x60, 0xf3, 0xc5, 0xea, 0xfa, 0xa5, 0x65, 0x79, 0xb4, 0x5b, 0xb2, 0xb4, 0x28, - 0x8f, 0xa1, 0x71, 0xc8, 0x52, 0xc9, 0xea, 0xee, 0xee, 0x96, 0x9c, 0x09, 0x38, 0xf7, 0x0f, 0xd4, - 0xcd, 0x9d, 0x0d, 0x39, 0x1b, 0x70, 0x6e, 0xa8, 0xbb, 0x87, 0x7b, 0x32, 0x04, 0x0c, 0xdb, 0xd5, - 0xfd, 0xfd, 0xca, 0x46, 0x55, 0xce, 0x05, 0x16, 0xab, 0x2f, 0x1d, 0x54, 0xf7, 0xe5, 0x7c, 0x97, - 0x5b, 0x4b, 0x8b, 0xf2, 0x78, 0x70, 0x8b, 0xea, 0xce, 0xe1, 0xb6, 0x5c, 0x40, 0x93, 0x30, 0xce, - 0x6e, 0x21, 0x9c, 0x98, 0xe8, 0x11, 0x5d, 0x5a, 0x96, 0xe5, 0xd0, 0x11, 0xc6, 0x32, 0xd9, 0x25, - 0xb8, 0xb4, 0x2c, 0xa3, 0xd2, 0x1a, 0xa4, 0x69, 0x76, 0x21, 0x04, 0x85, 0xad, 0xca, 0x6a, 0x75, - 0x4b, 0xdb, 0xdd, 0x3b, 0xd8, 0xdc, 0xdd, 0xa9, 0x6c, 0xc9, 0x52, 0x28, 0x53, 0xab, 0x1f, 0x3f, - 0xdc, 0x54, 0xab, 0xeb, 0x72, 0x22, 0x2a, 0xdb, 0xab, 0x56, 0x0e, 0xaa, 0xeb, 0x72, 0xb2, 0x64, - 0xc0, 0xf4, 0xa0, 0x3a, 0x33, 0xf0, 0xc9, 0x88, 0x6c, 0x71, 0xe2, 0x94, 0x2d, 0xa6, 0x5c, 0x7d, - 0x5b, 0xfc, 0x55, 0x09, 0xa6, 0x06, 0xd4, 0xda, 0x81, 0x37, 0x79, 0x0e, 0xd2, 0x2c, 0x45, 0x59, - 0xf7, 0x79, 0x62, 0x60, 0xd1, 0xa6, 0x09, 0xdb, 0xd7, 0x81, 0x28, 0x2e, 0xda, 0x81, 0x93, 0xa7, - 0x74, 0x60, 0x42, 0xd1, 0xe7, 0xe4, 0xab, 0x12, 0x28, 0xa7, 0x71, 0xc7, 0x14, 0x8a, 0x44, 0x57, - 0xa1, 0xb8, 0xd6, 0xeb, 0xc0, 0xc5, 0xd3, 0xd7, 0xd0, 0xe7, 0xc5, 0x9b, 0x12, 0x9c, 0x1b, 0x3c, - 0xa8, 0x0c, 0xf4, 0xe1, 0x63, 0x30, 0xda, 0xc2, 0xfe, 0x91, 0x23, 0x9a, 0xf5, 0x87, 0x07, 0xb4, - 0x00, 0xa2, 0xee, 0x8d, 0x15, 0x47, 0x45, 0x7b, 0x48, 0xf2, 0xb4, 0x69, 0x83, 0x79, 0xd3, 0xe7, - 0xe9, 0x67, 0x13, 0xf0, 0xc0, 0x40, 0xf2, 0x81, 0x8e, 0x3e, 0x0c, 0x60, 0xda, 0xed, 0x8e, 0xcf, - 0x1a, 0x32, 0xab, 0x4f, 0x59, 0x2a, 0xa1, 0xcf, 0x3e, 0xa9, 0x3d, 0x1d, 0x3f, 0xd0, 0x27, 0xa9, - 0x1e, 0x98, 0x88, 0x1a, 0x5c, 0x09, 0x1d, 0x4d, 0x51, 0x47, 0x8b, 0xa7, 0xac, 0xb4, 0xaf, 0xd7, - 0x3d, 0x03, 0xb2, 0x61, 0x99, 0xd8, 0xf6, 0x35, 0xcf, 0x77, 0xb1, 0xde, 0x32, 0xed, 0x26, 0x2d, - 0xc0, 0x99, 0x72, 0xba, 0xa1, 0x5b, 0x1e, 0x56, 0x27, 0x98, 0x7a, 0x5f, 0x68, 0x09, 0x82, 0x76, - 0x19, 0x37, 0x82, 0x18, 0xed, 0x42, 0x30, 0x75, 0x80, 0x28, 0x7d, 0x6e, 0x0c, 0x72, 0x91, 0xb1, - 0x0e, 0x5d, 0x84, 0xfc, 0x0d, 0xfd, 0x96, 0xae, 0x89, 0x51, 0x9d, 0x45, 0x22, 0x47, 0x64, 0x7b, - 0x7c, 0x5c, 0x7f, 0x06, 0xa6, 0xa9, 0x89, 0xd3, 0xf1, 0xb1, 0xab, 0x19, 0x96, 0xee, 0x79, 0x34, - 0x68, 0x19, 0x6a, 0x8a, 0x88, 0x6e, 0x97, 0xa8, 0xd6, 0x84, 0x06, 0xad, 0xc0, 0x14, 0x45, 0xb4, - 0x3a, 0x96, 0x6f, 0xb6, 0x2d, 0xac, 0x91, 0x97, 0x07, 0x8f, 0x16, 0xe2, 0xc0, 0xb3, 0x49, 0x62, - 0xb1, 0xcd, 0x0d, 0x88, 0x47, 0x1e, 0xda, 0x80, 0x87, 0x29, 0xac, 0x89, 0x6d, 0xec, 0xea, 0x3e, - 0xd6, 0xf0, 0xcf, 0x76, 0x74, 0xcb, 0xd3, 0x74, 0xbb, 0xae, 0x1d, 0xe9, 0xde, 0x91, 0x32, 0x1d, - 0x25, 0x38, 0x4f, 0x6c, 0x37, 0xb8, 0x69, 0x95, 0x5a, 0x56, 0xec, 0xfa, 0x75, 0xdd, 0x3b, 0x42, - 0x65, 0x38, 0x47, 0x89, 0x3c, 0xdf, 0x35, 0xed, 0xa6, 0x66, 0x1c, 0x61, 0xe3, 0xa6, 0xd6, 0xf1, - 0x1b, 0x57, 0x94, 0x87, 0xa2, 0x0c, 0xd4, 0xc9, 0x7d, 0x6a, 0xb3, 0x46, 0x4c, 0x0e, 0xfd, 0xc6, - 0x15, 0xb4, 0x0f, 0x79, 0xb2, 0x1f, 0x2d, 0xf3, 0x15, 0xac, 0x35, 0x1c, 0x97, 0x36, 0x97, 0xc2, - 0x80, 0x87, 0x3b, 0x12, 0xc4, 0xf9, 0x5d, 0x0e, 0xd8, 0x76, 0xea, 0xb8, 0x9c, 0xde, 0xdf, 0xab, - 0x56, 0xd7, 0xd5, 0x9c, 0x60, 0x79, 0xde, 0x71, 0x49, 0x4e, 0x35, 0x9d, 0x20, 0xc6, 0x39, 0x96, - 0x53, 0x4d, 0x47, 0x44, 0x78, 0x05, 0xa6, 0x0c, 0x83, 0x2d, 0xdb, 0x34, 0x34, 0x3e, 0xe5, 0x7b, - 0x8a, 0xdc, 0x15, 0x2f, 0xc3, 0xd8, 0x60, 0x06, 0x3c, 0xcd, 0x3d, 0x74, 0x15, 0x1e, 0x08, 0xe3, - 0x15, 0x05, 0x4e, 0xf6, 0xad, 0xb2, 0x17, 0xba, 0x02, 0x53, 0xed, 0xe3, 0x7e, 0x20, 0xea, 0xba, - 0x63, 0xfb, 0xb8, 0x17, 0xf6, 0x18, 0x7d, 0x73, 0x73, 0xb1, 0xa1, 0xfb, 0xb8, 0xae, 0x3c, 0x18, - 0xb5, 0x8e, 0x28, 0xd0, 0x02, 0xc8, 0x86, 0xa1, 0x61, 0x5b, 0xaf, 0x59, 0x58, 0xd3, 0x5d, 0x6c, - 0xeb, 0x9e, 0x72, 0x21, 0x6a, 0x5c, 0x30, 0x8c, 0x2a, 0xd5, 0x56, 0xa8, 0x12, 0x3d, 0x09, 0x93, - 0x4e, 0xed, 0x86, 0xc1, 0x92, 0x4b, 0x6b, 0xbb, 0xb8, 0x61, 0xbe, 0xac, 0x3c, 0x4a, 0xc3, 0x34, - 0x41, 0x14, 0x34, 0xb5, 0xf6, 0xa8, 0x18, 0x3d, 0x01, 0xb2, 0xe1, 0x1d, 0xe9, 0x6e, 0x9b, 0x76, - 0x77, 0xaf, 0xad, 0x1b, 0x58, 0x79, 0x8c, 0x99, 0x32, 0xf9, 0x8e, 0x10, 0xa3, 0x17, 0x61, 0xba, - 0x63, 0x9b, 0xb6, 0x8f, 0xdd, 0xb6, 0x8b, 0xc9, 0x90, 0xce, 0x9e, 0x34, 0xe5, 0x9f, 0xc6, 0x4e, - 0x19, 0xb3, 0x0f, 0xa3, 0xd6, 0x6c, 0x77, 0xd5, 0xa9, 0x4e, 0xbf, 0xb0, 0x54, 0x86, 0x7c, 0x74, - 0xd3, 0x51, 0x16, 0xd8, 0xb6, 0xcb, 0x12, 0xe9, 0xa1, 0x6b, 0xbb, 0xeb, 0xa4, 0xfb, 0x7d, 0xaa, - 0x2a, 0x27, 0x48, 0x17, 0xde, 0xda, 0x3c, 0xa8, 0x6a, 0xea, 0xe1, 0xce, 0xc1, 0xe6, 0x76, 0x55, - 0x4e, 0x3e, 0x99, 0xcd, 0x7c, 0x7f, 0x4c, 0xbe, 0x73, 0xe7, 0xce, 0x9d, 0x44, 0xe9, 0x3b, 0x09, - 0x28, 0x74, 0x4f, 0xbe, 0xe8, 0x67, 0xe0, 0x41, 0xf1, 0x9a, 0xea, 0x61, 0x5f, 0xbb, 0x6d, 0xba, - 0x34, 0x0f, 0x5b, 0x3a, 0x9b, 0x1d, 0x83, 0x10, 0x4e, 0x73, 0xab, 0x7d, 0xec, 0x7f, 0xd2, 0x74, - 0x49, 0x96, 0xb5, 0x74, 0x1f, 0x6d, 0xc1, 0x05, 0xdb, 0xd1, 0x3c, 0x5f, 0xb7, 0xeb, 0xba, 0x5b, - 0xd7, 0xc2, 0x03, 0x02, 0x4d, 0x37, 0x0c, 0xec, 0x79, 0x0e, 0x6b, 0x01, 0x01, 0xcb, 0x87, 0x6c, - 0x67, 0x9f, 0x1b, 0x87, 0xb5, 0xb1, 0xc2, 0x4d, 0x7b, 0xb6, 0x3b, 0x79, 0xda, 0x76, 0x3f, 0x04, - 0xd9, 0x96, 0xde, 0xd6, 0xb0, 0xed, 0xbb, 0xc7, 0x74, 0x5e, 0xcb, 0xa8, 0x99, 0x96, 0xde, 0xae, - 0x92, 0xeb, 0x1f, 0xdf, 0x1e, 0x44, 0xe3, 0xf8, 0x0f, 0x49, 0xc8, 0x47, 0x67, 0x36, 0x32, 0x02, - 0x1b, 0xb4, 0x3e, 0x4b, 0xf4, 0xf1, 0x7d, 0xe4, 0xbe, 0x13, 0xde, 0xfc, 0x1a, 0x29, 0xdc, 0xe5, - 0x51, 0x36, 0x49, 0xa9, 0x0c, 0x49, 0x9a, 0x26, 0x79, 0x60, 0x31, 0x9b, 0xcf, 0x33, 0x2a, 0xbf, - 0x42, 0x1b, 0x30, 0x7a, 0xc3, 0xa3, 0xdc, 0xa3, 0x94, 0xfb, 0xd1, 0xfb, 0x73, 0xbf, 0xb0, 0x4f, - 0xc9, 0xb3, 0x2f, 0xec, 0x6b, 0x3b, 0xbb, 0xea, 0x76, 0x65, 0x4b, 0xe5, 0x70, 0x74, 0x1e, 0x52, - 0x96, 0xfe, 0xca, 0x71, 0x77, 0x89, 0xa7, 0xa2, 0x61, 0x03, 0x7f, 0x1e, 0x52, 0xb7, 0xb1, 0x7e, - 0xb3, 0xbb, 0xb0, 0x52, 0xd1, 0x8f, 0x31, 0xf5, 0x17, 0x20, 0x4d, 0xe3, 0x85, 0x00, 0x78, 0xc4, - 0xe4, 0x11, 0x94, 0x81, 0xd4, 0xda, 0xae, 0x4a, 0xd2, 0x5f, 0x86, 0x3c, 0x93, 0x6a, 0x7b, 0x9b, - 0xd5, 0xb5, 0xaa, 0x9c, 0x28, 0xad, 0xc0, 0x28, 0x0b, 0x02, 0x79, 0x34, 0x82, 0x30, 0xc8, 0x23, - 0xfc, 0x92, 0x73, 0x48, 0x42, 0x7b, 0xb8, 0xbd, 0x5a, 0x55, 0xe5, 0x44, 0x74, 0x7b, 0x3d, 0xc8, - 0x47, 0xc7, 0xb5, 0x9f, 0x4c, 0x4e, 0xfd, 0xa5, 0x04, 0xb9, 0xc8, 0xf8, 0x45, 0x1a, 0xbf, 0x6e, - 0x59, 0xce, 0x6d, 0x4d, 0xb7, 0x4c, 0xdd, 0xe3, 0x49, 0x01, 0x54, 0x54, 0x21, 0x92, 0x61, 0x37, - 0xed, 0x27, 0xe2, 0xfc, 0x1b, 0x12, 0xc8, 0xbd, 0xa3, 0x5b, 0x8f, 0x83, 0xd2, 0x4f, 0xd5, 0xc1, - 0xd7, 0x25, 0x28, 0x74, 0xcf, 0x6b, 0x3d, 0xee, 0x5d, 0xfc, 0xa9, 0xba, 0xf7, 0x25, 0x09, 0xc6, - 0xbb, 0xa6, 0xb4, 0xff, 0x57, 0xde, 0xbd, 0x96, 0x84, 0xa9, 0x01, 0x38, 0x54, 0xe1, 0xe3, 0x2c, - 0x9b, 0xb0, 0x9f, 0x1e, 0xe6, 0x5e, 0xf3, 0xa4, 0x5b, 0xee, 0xe9, 0xae, 0xcf, 0xa7, 0xdf, 0x27, - 0x40, 0x36, 0xeb, 0xd8, 0xf6, 0xcd, 0x86, 0x89, 0x5d, 0xfe, 0x0a, 0xce, 0x66, 0xdc, 0x89, 0x50, - 0xce, 0xde, 0xc2, 0x3f, 0x02, 0xa8, 0xed, 0x78, 0xa6, 0x6f, 0xde, 0xc2, 0x9a, 0x69, 0x8b, 0xf7, - 0x75, 0x32, 0xf3, 0xa6, 0x54, 0x59, 0x68, 0x36, 0x6d, 0x3f, 0xb0, 0xb6, 0x71, 0x53, 0xef, 0xb1, - 0x26, 0xb5, 0x2f, 0xa9, 0xca, 0x42, 0x13, 0x58, 0x5f, 0x84, 0x7c, 0xdd, 0xe9, 0x90, 0xf1, 0x81, - 0xd9, 0x91, 0x52, 0x2b, 0xa9, 0x39, 0x26, 0x0b, 0x4c, 0xf8, 0x7c, 0x17, 0x1e, 0x14, 0xe4, 0xd5, - 0x1c, 0x93, 0x31, 0x93, 0xc7, 0x61, 0x42, 0x6f, 0x36, 0x5d, 0x42, 0x2e, 0x88, 0xd8, 0xd0, 0x5a, - 0x08, 0xc4, 0xd4, 0x70, 0xe6, 0x05, 0xc8, 0x88, 0x38, 0x90, 0x6e, 0x46, 0x22, 0xa1, 0xb5, 0xd9, - 0x71, 0x4d, 0x62, 0x2e, 0xab, 0x66, 0x6c, 0xa1, 0xbc, 0x08, 0x79, 0xd3, 0xd3, 0xc2, 0x73, 0xc3, - 0xc4, 0x6c, 0x62, 0x2e, 0xa3, 0xe6, 0x4c, 0x2f, 0x38, 0x28, 0x2a, 0xbd, 0x99, 0x80, 0x42, 0xf7, - 0xb9, 0x27, 0x5a, 0x87, 0x8c, 0xe5, 0x18, 0x3a, 0x4d, 0x04, 0x76, 0xe8, 0x3e, 0x17, 0x73, 0x54, - 0x3a, 0xbf, 0xc5, 0xed, 0xd5, 0x00, 0x39, 0xf3, 0xb7, 0x12, 0x64, 0x84, 0x18, 0x9d, 0x83, 0x54, - 0x5b, 0xf7, 0x8f, 0x28, 0x5d, 0x7a, 0x35, 0x21, 0x4b, 0x2a, 0xbd, 0x26, 0x72, 0xaf, 0xad, 0xdb, - 0x34, 0x05, 0xb8, 0x9c, 0x5c, 0x93, 0x7d, 0xb5, 0xb0, 0x5e, 0xa7, 0xe3, 0xb0, 0xd3, 0x6a, 0x61, - 0xdb, 0xf7, 0xc4, 0xbe, 0x72, 0xf9, 0x1a, 0x17, 0xa3, 0xa7, 0x60, 0xd2, 0x77, 0x75, 0xd3, 0xea, - 0xb2, 0x4d, 0x51, 0x5b, 0x59, 0x28, 0x02, 0xe3, 0x32, 0x9c, 0x17, 0xbc, 0x75, 0xec, 0xeb, 0xc6, - 0x11, 0xae, 0x87, 0xa0, 0x51, 0x7a, 0xa8, 0xf6, 0x20, 0x37, 0x58, 0xe7, 0x7a, 0x81, 0x2d, 0x7d, - 0x57, 0x82, 0x49, 0x31, 0xc0, 0xd7, 0x83, 0x60, 0x6d, 0x03, 0xe8, 0xb6, 0xed, 0xf8, 0xd1, 0x70, - 0xf5, 0xa7, 0x72, 0x1f, 0x6e, 0xbe, 0x12, 0x80, 0xd4, 0x08, 0xc1, 0x4c, 0x0b, 0x20, 0xd4, 0x9c, - 0x1a, 0xb6, 0x0b, 0x90, 0xe3, 0x87, 0xda, 0xf4, 0x97, 0x11, 0xf6, 0xd6, 0x07, 0x4c, 0x44, 0x26, - 0x7d, 0x34, 0x0d, 0xe9, 0x1a, 0x6e, 0x9a, 0x36, 0x3f, 0x6a, 0x63, 0x17, 0xe2, 0x00, 0x2f, 0x15, - 0x1c, 0xe0, 0xad, 0x7e, 0x1a, 0xa6, 0x0c, 0xa7, 0xd5, 0xeb, 0xee, 0xaa, 0xdc, 0xf3, 0xe6, 0xe9, - 0x5d, 0x97, 0x3e, 0x05, 0xe1, 0x74, 0xf6, 0x15, 0x49, 0xfa, 0x6a, 0x22, 0xb9, 0xb1, 0xb7, 0xfa, - 0xf5, 0xc4, 0xcc, 0x06, 0x83, 0xee, 0x89, 0x95, 0xaa, 0xb8, 0x61, 0x61, 0x83, 0x78, 0x0f, 0x3f, - 0xf8, 0x30, 0x3c, 0xdd, 0x34, 0xfd, 0xa3, 0x4e, 0x6d, 0xde, 0x70, 0x5a, 0x0b, 0x4d, 0xa7, 0xe9, - 0x84, 0x3f, 0x06, 0x91, 0x2b, 0x7a, 0x41, 0xff, 0xe3, 0x3f, 0x08, 0x65, 0x03, 0xe9, 0x4c, 0xec, - 0xaf, 0x47, 0xe5, 0x1d, 0x98, 0xe2, 0xc6, 0x1a, 0x3d, 0x91, 0x66, 0x73, 0x38, 0xba, 0xef, 0xa9, - 0x84, 0xf2, 0xcd, 0x77, 0x69, 0xa7, 0x53, 0x27, 0x39, 0x94, 0xe8, 0xd8, 0xa4, 0x5e, 0x56, 0xe1, - 0x81, 0x2e, 0x3e, 0xf6, 0x68, 0x62, 0x37, 0x86, 0xf1, 0x3b, 0x9c, 0x71, 0x2a, 0xc2, 0xb8, 0xcf, - 0xa1, 0xe5, 0x35, 0x18, 0x3f, 0x0b, 0xd7, 0x5f, 0x73, 0xae, 0x3c, 0x8e, 0x92, 0x6c, 0xc0, 0x04, - 0x25, 0x31, 0x3a, 0x9e, 0xef, 0xb4, 0x68, 0xdd, 0xbb, 0x3f, 0xcd, 0xdf, 0xbc, 0xcb, 0x9e, 0x95, - 0x02, 0x81, 0xad, 0x05, 0xa8, 0x72, 0x19, 0xe8, 0x21, 0x7c, 0x1d, 0x1b, 0x56, 0x0c, 0xc3, 0x5b, - 0xdc, 0x91, 0xc0, 0xbe, 0xfc, 0x09, 0x98, 0x26, 0xff, 0xd3, 0xb2, 0x14, 0xf5, 0x24, 0xfe, 0x0c, - 0x46, 0xf9, 0xee, 0xab, 0xec, 0x71, 0x9c, 0x0a, 0x08, 0x22, 0x3e, 0x45, 0x76, 0xb1, 0x89, 0x7d, - 0x1f, 0xbb, 0x9e, 0xa6, 0x5b, 0x83, 0xdc, 0x8b, 0xbc, 0xc1, 0x2a, 0x5f, 0x7c, 0xaf, 0x7b, 0x17, - 0x37, 0x18, 0xb2, 0x62, 0x59, 0xe5, 0x43, 0x78, 0x70, 0x40, 0x56, 0x0c, 0xc1, 0xf9, 0x1a, 0xe7, - 0x9c, 0xee, 0xcb, 0x0c, 0x42, 0xbb, 0x07, 0x42, 0x1e, 0xec, 0xe5, 0x10, 0x9c, 0x5f, 0xe2, 0x9c, - 0x88, 0x63, 0xc5, 0x96, 0x12, 0xc6, 0x17, 0x60, 0xf2, 0x16, 0x76, 0x6b, 0x8e, 0xc7, 0x0f, 0x0e, - 0x86, 0xa0, 0x7b, 0x9d, 0xd3, 0x4d, 0x70, 0x20, 0x3d, 0x46, 0x20, 0x5c, 0x57, 0x21, 0xd3, 0xd0, - 0x0d, 0x3c, 0x04, 0xc5, 0x97, 0x39, 0xc5, 0x18, 0xb1, 0x27, 0xd0, 0x0a, 0xe4, 0x9b, 0x0e, 0xef, - 0x4c, 0xf1, 0xf0, 0x37, 0x38, 0x3c, 0x27, 0x30, 0x9c, 0xa2, 0xed, 0xb4, 0x3b, 0x16, 0x69, 0x5b, - 0xf1, 0x14, 0xbf, 0x25, 0x28, 0x04, 0x86, 0x53, 0x9c, 0x21, 0xac, 0x5f, 0x11, 0x14, 0x5e, 0x24, - 0x9e, 0xcf, 0x41, 0xce, 0xb1, 0xad, 0x63, 0xc7, 0x1e, 0xc6, 0x89, 0xdf, 0xe6, 0x0c, 0xc0, 0x21, - 0x84, 0xe0, 0x1a, 0x64, 0x87, 0xdd, 0x88, 0xdf, 0x79, 0x4f, 0x3c, 0x1e, 0x62, 0x07, 0x36, 0x60, - 0x42, 0x14, 0x28, 0xd3, 0xb1, 0x87, 0xa0, 0xf8, 0x5d, 0x4e, 0x51, 0x88, 0xc0, 0xf8, 0x32, 0x7c, - 0xec, 0xf9, 0x4d, 0x3c, 0x0c, 0xc9, 0x9b, 0x62, 0x19, 0x1c, 0xc2, 0x43, 0x59, 0xc3, 0xb6, 0x71, - 0x34, 0x1c, 0xc3, 0xd7, 0x44, 0x28, 0x05, 0x86, 0x50, 0xac, 0xc1, 0x78, 0x4b, 0x77, 0xbd, 0x23, - 0xdd, 0x1a, 0x6a, 0x3b, 0x7e, 0x8f, 0x73, 0xe4, 0x03, 0x10, 0x8f, 0x48, 0xc7, 0x3e, 0x0b, 0xcd, - 0xd7, 0x45, 0x44, 0x22, 0x30, 0xfe, 0xe8, 0x79, 0x3e, 0x3d, 0x9b, 0x39, 0x0b, 0xdb, 0xef, 0x8b, - 0x47, 0x8f, 0x61, 0xb7, 0xa3, 0x8c, 0xd7, 0x20, 0xeb, 0x99, 0xaf, 0x0c, 0x45, 0xf3, 0x07, 0x62, - 0xa7, 0x29, 0x80, 0x80, 0x5f, 0x82, 0xf3, 0x03, 0xdb, 0xc4, 0x10, 0x64, 0x7f, 0xc8, 0xc9, 0xce, - 0x0d, 0x68, 0x15, 0xbc, 0x24, 0x9c, 0x95, 0xf2, 0x8f, 0x44, 0x49, 0xc0, 0x3d, 0x5c, 0x7b, 0x64, - 0xb2, 0xf7, 0xf4, 0xc6, 0xd9, 0xa2, 0xf6, 0xc7, 0x22, 0x6a, 0x0c, 0xdb, 0x15, 0xb5, 0x03, 0x38, - 0xc7, 0x19, 0xcf, 0xb6, 0xaf, 0xdf, 0x10, 0x85, 0x95, 0xa1, 0x0f, 0xbb, 0x77, 0xf7, 0xd3, 0x30, - 0x13, 0x84, 0x53, 0x0c, 0xa5, 0x9e, 0xd6, 0xd2, 0xdb, 0x43, 0x30, 0x7f, 0x93, 0x33, 0x8b, 0x8a, - 0x1f, 0x4c, 0xb5, 0xde, 0xb6, 0xde, 0x26, 0xe4, 0x2f, 0x82, 0x22, 0xc8, 0x3b, 0xb6, 0x8b, 0x0d, - 0xa7, 0x69, 0x9b, 0xaf, 0xe0, 0xfa, 0x10, 0xd4, 0x7f, 0xd2, 0xb3, 0x55, 0x87, 0x11, 0x38, 0x61, - 0xde, 0x04, 0x39, 0x98, 0x55, 0x34, 0xb3, 0xd5, 0x76, 0x5c, 0x3f, 0x86, 0xf1, 0x4f, 0xc5, 0x4e, - 0x05, 0xb8, 0x4d, 0x0a, 0x2b, 0x57, 0xa1, 0x40, 0x2f, 0x87, 0x4d, 0xc9, 0x3f, 0xe3, 0x44, 0xe3, - 0x21, 0x8a, 0x17, 0x0e, 0xc3, 0x69, 0xb5, 0x75, 0x77, 0x98, 0xfa, 0xf7, 0xe7, 0xa2, 0x70, 0x70, - 0x08, 0x2f, 0x1c, 0xfe, 0x71, 0x1b, 0x93, 0x6e, 0x3f, 0x04, 0xc3, 0xb7, 0x44, 0xe1, 0x10, 0x18, - 0x4e, 0x21, 0x06, 0x86, 0x21, 0x28, 0xfe, 0x42, 0x50, 0x08, 0x0c, 0xa1, 0xf8, 0x78, 0xd8, 0x68, - 0x5d, 0xdc, 0x34, 0x3d, 0xdf, 0x65, 0xa3, 0xf0, 0xfd, 0xa9, 0xbe, 0xfd, 0x5e, 0xf7, 0x10, 0xa6, - 0x46, 0xa0, 0xe5, 0x17, 0x60, 0xa2, 0x67, 0xc4, 0x40, 0x71, 0xbf, 0xe8, 0x2b, 0x9f, 0xf9, 0x80, - 0x17, 0xa3, 0xee, 0x09, 0xa3, 0xbc, 0x45, 0xf6, 0xbd, 0x7b, 0x0e, 0x88, 0x27, 0x7b, 0xf5, 0x83, - 0x60, 0xeb, 0xbb, 0xc6, 0x80, 0xf2, 0xf3, 0x30, 0xde, 0x35, 0x03, 0xc4, 0x53, 0xfd, 0x1c, 0xa7, - 0xca, 0x47, 0x47, 0x80, 0xf2, 0x0a, 0xa4, 0x48, 0x3f, 0x8f, 0x87, 0xff, 0x3c, 0x87, 0x53, 0xf3, - 0xf2, 0x47, 0x21, 0x23, 0xfa, 0x78, 0x3c, 0xf4, 0x17, 0x38, 0x34, 0x80, 0x10, 0xb8, 0xe8, 0xe1, - 0xf1, 0xf0, 0x5f, 0x14, 0x70, 0x01, 0x21, 0xf0, 0xe1, 0x43, 0xf8, 0x57, 0x9f, 0x4b, 0xf1, 0x3a, - 0x2c, 0x62, 0x77, 0x0d, 0xc6, 0x78, 0xf3, 0x8e, 0x47, 0x7f, 0x96, 0xdf, 0x5c, 0x20, 0xca, 0x97, - 0x21, 0x3d, 0x64, 0xc0, 0x7f, 0x89, 0x43, 0x99, 0x7d, 0x79, 0x0d, 0x72, 0x91, 0x86, 0x1d, 0x0f, - 0xff, 0x65, 0x0e, 0x8f, 0xa2, 0x88, 0xeb, 0xbc, 0x61, 0xc7, 0x13, 0xfc, 0x8a, 0x70, 0x9d, 0x23, - 0x48, 0xd8, 0x44, 0xaf, 0x8e, 0x47, 0xff, 0xaa, 0x88, 0xba, 0x80, 0x94, 0x9f, 0x83, 0x6c, 0x50, - 0x7f, 0xe3, 0xf1, 0xbf, 0xc6, 0xf1, 0x21, 0x86, 0x44, 0x20, 0x52, 0xff, 0xe3, 0x29, 0x3e, 0x2f, - 0x22, 0x10, 0x41, 0x91, 0xc7, 0xa8, 0xb7, 0xa7, 0xc7, 0x33, 0xfd, 0xba, 0x78, 0x8c, 0x7a, 0x5a, - 0x3a, 0xd9, 0x4d, 0x5a, 0x06, 0xe3, 0x29, 0x7e, 0x43, 0xec, 0x26, 0xb5, 0x27, 0x6e, 0xf4, 0x36, - 0xc9, 0x78, 0x8e, 0xdf, 0x14, 0x6e, 0xf4, 0xf4, 0xc8, 0xf2, 0x1e, 0xa0, 0xfe, 0x06, 0x19, 0xcf, - 0xf7, 0x05, 0xce, 0x37, 0xd9, 0xd7, 0x1f, 0xcb, 0x9f, 0x84, 0x73, 0x83, 0x9b, 0x63, 0x3c, 0xeb, - 0x17, 0x3f, 0xe8, 0x79, 0x9d, 0x89, 0xf6, 0xc6, 0xf2, 0x41, 0x58, 0x65, 0xa3, 0x8d, 0x31, 0x9e, - 0xf6, 0xb5, 0x0f, 0xba, 0x0b, 0x6d, 0xb4, 0x2f, 0x96, 0x2b, 0x00, 0x61, 0x4f, 0x8a, 0xe7, 0x7a, - 0x9d, 0x73, 0x45, 0x40, 0xe4, 0xd1, 0xe0, 0x2d, 0x29, 0x1e, 0xff, 0x65, 0xf1, 0x68, 0x70, 0x04, - 0x79, 0x34, 0x44, 0x37, 0x8a, 0x47, 0xbf, 0x21, 0x1e, 0x0d, 0x01, 0x29, 0x5f, 0x83, 0x8c, 0xdd, - 0xb1, 0x2c, 0x92, 0x5b, 0xe8, 0xfe, 0x1f, 0xd9, 0x28, 0xff, 0x7c, 0x8f, 0x83, 0x05, 0xa0, 0xbc, - 0x02, 0x69, 0xdc, 0xaa, 0xe1, 0x7a, 0x1c, 0xf2, 0x5f, 0xee, 0x89, 0x7a, 0x42, 0xac, 0xcb, 0xcf, - 0x01, 0xb0, 0x97, 0x69, 0xfa, 0x1b, 0x4b, 0x0c, 0xf6, 0x5f, 0xef, 0xf1, 0xdf, 0xef, 0x43, 0x48, - 0x48, 0xc0, 0xbe, 0x06, 0xb8, 0x3f, 0xc1, 0x7b, 0xdd, 0x04, 0xf4, 0x05, 0xfc, 0x2a, 0x8c, 0xdd, - 0xf0, 0x1c, 0xdb, 0xd7, 0x9b, 0x71, 0xe8, 0x7f, 0xe3, 0x68, 0x61, 0x4f, 0x02, 0xd6, 0x72, 0x5c, - 0xec, 0xeb, 0x4d, 0x2f, 0x0e, 0xfb, 0xef, 0x1c, 0x1b, 0x00, 0x08, 0xd8, 0xd0, 0x3d, 0x7f, 0x98, - 0x75, 0xff, 0x87, 0x00, 0x0b, 0x00, 0x71, 0x9a, 0xfc, 0x7f, 0x13, 0x1f, 0xc7, 0x61, 0xdf, 0x17, - 0x4e, 0x73, 0xfb, 0xf2, 0x47, 0x21, 0x4b, 0xfe, 0x65, 0xdf, 0xb4, 0xc4, 0x80, 0xff, 0x93, 0x83, - 0x43, 0x04, 0xb9, 0xb3, 0xe7, 0xd7, 0x7d, 0x33, 0x3e, 0xd8, 0xff, 0xc5, 0x77, 0x5a, 0xd8, 0x97, - 0x2b, 0x90, 0xf3, 0xfc, 0x7a, 0xbd, 0xc3, 0x27, 0x9a, 0x18, 0xf8, 0x0f, 0xee, 0x05, 0x2f, 0xb9, - 0x01, 0x66, 0xf5, 0xe2, 0xe0, 0xf3, 0x3a, 0xd8, 0x70, 0x36, 0x1c, 0x76, 0x52, 0x07, 0xf7, 0x32, - 0xf0, 0x90, 0xe1, 0xb4, 0x6a, 0x8e, 0xb7, 0xc0, 0x0a, 0x4a, 0xcd, 0xf1, 0x8f, 0x16, 0x1c, 0x9b, - 0x9b, 0xa3, 0xa4, 0x63, 0xe3, 0x99, 0xb3, 0x9d, 0xcb, 0x95, 0xce, 0x43, 0x7a, 0xbf, 0x53, 0xab, - 0x1d, 0x23, 0x19, 0x92, 0x5e, 0xa7, 0xc6, 0x3f, 0xbb, 0x20, 0xff, 0x96, 0xde, 0x49, 0xc2, 0x78, - 0xc5, 0xb2, 0x0e, 0x8e, 0xdb, 0xd8, 0xdb, 0xb5, 0xf1, 0x6e, 0x03, 0x29, 0x30, 0x4a, 0x17, 0xf2, - 0x2c, 0x35, 0x93, 0xae, 0x8f, 0xa8, 0xfc, 0x3a, 0xd0, 0x2c, 0xd2, 0x13, 0xcb, 0x44, 0xa0, 0x59, - 0x0c, 0x34, 0x4b, 0xec, 0xc0, 0x32, 0xd0, 0x2c, 0x05, 0x9a, 0x65, 0x7a, 0x6c, 0x99, 0x0c, 0x34, - 0xcb, 0x81, 0x66, 0x85, 0x1e, 0xcb, 0x8f, 0x07, 0x9a, 0x95, 0x40, 0x73, 0x89, 0x1e, 0xc4, 0xa7, - 0x02, 0xcd, 0xa5, 0x40, 0x73, 0x99, 0x9e, 0xbf, 0x4f, 0x06, 0x9a, 0xcb, 0x81, 0xe6, 0x0a, 0x3d, - 0x73, 0x47, 0x81, 0xe6, 0x4a, 0xa0, 0xb9, 0x4a, 0x3f, 0xae, 0x18, 0x0b, 0x34, 0x57, 0xd1, 0x0c, - 0x8c, 0xb1, 0x95, 0x3d, 0x43, 0x7f, 0xd3, 0x9c, 0xb8, 0x3e, 0xa2, 0x0a, 0x41, 0xa8, 0x7b, 0x96, - 0x7e, 0x40, 0x31, 0x1a, 0xea, 0x9e, 0x0d, 0x75, 0x8b, 0xf4, 0x4b, 0x62, 0x39, 0xd4, 0x2d, 0x86, - 0xba, 0x25, 0x65, 0x9c, 0xec, 0x7f, 0xa8, 0x5b, 0x0a, 0x75, 0xcb, 0x4a, 0x81, 0xec, 0x40, 0xa8, - 0x5b, 0x0e, 0x75, 0x2b, 0xca, 0xc4, 0xac, 0x34, 0x97, 0x0f, 0x75, 0x2b, 0xe8, 0x69, 0xc8, 0x79, - 0x9d, 0x9a, 0xc6, 0x7f, 0x82, 0xa7, 0x1f, 0x6a, 0xe4, 0x16, 0x61, 0x9e, 0xe4, 0x04, 0xdd, 0xd6, - 0xeb, 0x23, 0x2a, 0x78, 0x9d, 0x1a, 0x2f, 0x90, 0xab, 0x79, 0xa0, 0xe7, 0x09, 0x1a, 0xfd, 0x42, - 0xb1, 0xf4, 0xb6, 0x04, 0xd9, 0x83, 0xdb, 0x0e, 0xfd, 0x45, 0xd3, 0xfb, 0x3f, 0xde, 0x5c, 0xe1, - 0xf4, 0xd2, 0xb2, 0x52, 0xa2, 0x0b, 0x92, 0x54, 0x21, 0x08, 0x75, 0x2b, 0xca, 0x23, 0x74, 0x41, - 0x81, 0x6e, 0x05, 0x2d, 0x40, 0x3e, 0xb2, 0xa0, 0x45, 0xfa, 0xed, 0x45, 0xf7, 0x8a, 0x24, 0x35, - 0x17, 0xae, 0x68, 0x71, 0x35, 0x0d, 0x24, 0xed, 0xc9, 0x1f, 0xff, 0xb6, 0x53, 0xfa, 0x7c, 0x02, - 0x72, 0xec, 0x08, 0x92, 0xae, 0x8a, 0xdc, 0x8a, 0x8d, 0xe4, 0xc7, 0xdc, 0x8d, 0x11, 0x55, 0x08, - 0x90, 0x0a, 0xc0, 0x4c, 0x49, 0x86, 0x33, 0x4f, 0x56, 0x9f, 0xf9, 0xfb, 0x77, 0x2e, 0x7c, 0xe4, - 0xd4, 0x27, 0x88, 0xc4, 0x6e, 0x81, 0x15, 0xd8, 0xf9, 0x43, 0xd3, 0xf6, 0x9f, 0x5d, 0xbc, 0x42, - 0x02, 0x1c, 0xb2, 0xa0, 0x43, 0xc8, 0xac, 0xe9, 0x1e, 0xfd, 0xfe, 0x8a, 0xba, 0x9e, 0x5a, 0xbd, - 0xfc, 0x3f, 0xef, 0x5c, 0x58, 0x8a, 0x61, 0xe4, 0xb5, 0x6f, 0x7e, 0xfb, 0x98, 0xb0, 0x5e, 0x5a, - 0x26, 0xf0, 0xeb, 0x23, 0x6a, 0x40, 0x85, 0x16, 0x85, 0xab, 0x3b, 0x7a, 0x8b, 0x7d, 0x64, 0x92, - 0x5c, 0x95, 0x4f, 0xde, 0xb9, 0x90, 0xdf, 0x3e, 0x0e, 0xe5, 0xa1, 0x2b, 0xe4, 0x6a, 0x35, 0x03, - 0xa3, 0xcc, 0xd5, 0xd5, 0xf5, 0xb7, 0xee, 0x16, 0x47, 0xde, 0xbe, 0x5b, 0x1c, 0xf9, 0xbb, 0xbb, - 0xc5, 0x91, 0xef, 0xdd, 0x2d, 0x4a, 0xef, 0xdf, 0x2d, 0x4a, 0x3f, 0xbc, 0x5b, 0x94, 0xee, 0x9c, - 0x14, 0xa5, 0xaf, 0x9d, 0x14, 0xa5, 0x6f, 0x9c, 0x14, 0xa5, 0x6f, 0x9f, 0x14, 0xa5, 0xb7, 0x4e, - 0x8a, 0x23, 0x6f, 0x9f, 0x14, 0x47, 0xbe, 0x77, 0x52, 0x94, 0xbe, 0x7f, 0x52, 0x1c, 0x79, 0xff, - 0xa4, 0x28, 0xfd, 0xf0, 0xa4, 0x28, 0xdd, 0xf9, 0xc7, 0xa2, 0xf4, 0xbf, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x46, 0x0e, 0xf2, 0x0b, 0xf8, 0x31, 0x00, 0x00, + // 4043 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x82, 0x20, 0x79, 0x8d, 0x95, 0x63, 0xee, 0x2e, 0x6d, + 0xc7, 0xb2, 0x1d, 0x4b, 0xb6, 0x56, 0xda, 0x0b, 0xb7, 0x89, 0x87, 0xa4, 0xb8, 0x5a, 0x6d, 0x25, + 0x51, 0x01, 0xa5, 0x78, 0x9d, 0x3e, 0x60, 0x40, 0xf0, 0x27, 0x85, 0x5d, 0x10, 0x60, 0x00, 0x70, + 0xd7, 0xf2, 0xd3, 0x76, 0xdc, 0xcb, 0x64, 0x3a, 0xbd, 0xa5, 0x9d, 0x69, 0xe2, 0x3a, 0x6e, 0x9b, + 0x99, 0xd6, 0x69, 0xd2, 0x4b, 0xd2, 0x4b, 0x9a, 0xe9, 0x53, 0x5f, 0xd2, 0xfa, 0xa9, 0xe3, 0xbc, + 0x75, 0x3a, 0x1d, 0x8f, 0x57, 0xf1, 0x4c, 0xd3, 0xd6, 0x6d, 0xdd, 0xc6, 0x33, 0xcd, 0x74, 0x5f, + 0x3a, 0xff, 0x0d, 0x00, 0x2f, 0x5a, 0x50, 0x99, 0x3a, 0x79, 0x92, 0x70, 0xce, 0xf9, 0x3e, 0x1c, + 0x9c, 0xff, 0xfc, 0xe7, 0x1c, 0xfc, 0x04, 0x7c, 0x6f, 0x0d, 0xce, 0xb6, 0x6d, 0xbb, 0x6d, 0xa2, + 0xe5, 0xae, 0x63, 0x7b, 0x76, 0xa3, 0xd7, 0x5a, 0x6e, 0x22, 0x57, 0x77, 0x8c, 0xae, 0x67, 0x3b, + 0x4b, 0x44, 0x26, 0xcd, 0x50, 0x8b, 0x25, 0x6e, 0x51, 0xd8, 0x86, 0xd9, 0xab, 0x86, 0x89, 0xd6, + 0x7d, 0xc3, 0x3a, 0xf2, 0xa4, 0x4b, 0x90, 0x68, 0x19, 0x26, 0x92, 0x85, 0xb3, 0xf1, 0xc5, 0xcc, + 0xca, 0xe3, 0x4b, 0x03, 0xa0, 0xa5, 0x7e, 0xc4, 0x2e, 0x16, 0x2b, 0x04, 0x51, 0x78, 0x2f, 0x01, + 0x73, 0x23, 0xb4, 0x92, 0x04, 0x09, 0x4b, 0xeb, 0x60, 0x46, 0x61, 0x31, 0xad, 0x90, 0xff, 0x25, + 0x19, 0xa6, 0xba, 0x9a, 0x7e, 0x4b, 0x6b, 0x23, 0x39, 0x46, 0xc4, 0xfc, 0x52, 0xca, 0x03, 0x34, + 0x51, 0x17, 0x59, 0x4d, 0x64, 0xe9, 0x87, 0x72, 0xfc, 0x6c, 0x7c, 0x31, 0xad, 0x84, 0x24, 0xd2, + 0x33, 0x30, 0xdb, 0xed, 0x35, 0x4c, 0x43, 0x57, 0x43, 0x66, 0x70, 0x36, 0xbe, 0x98, 0x54, 0x44, + 0xaa, 0x58, 0x0f, 0x8c, 0x9f, 0x84, 0x99, 0x3b, 0x48, 0xbb, 0x15, 0x36, 0xcd, 0x10, 0xd3, 0x1c, + 0x16, 0x87, 0x0c, 0x2b, 0x90, 0xed, 0x20, 0xd7, 0xd5, 0xda, 0x48, 0xf5, 0x0e, 0xbb, 0x48, 0x4e, + 0x90, 0xa7, 0x3f, 0x3b, 0xf4, 0xf4, 0x83, 0x4f, 0x9e, 0x61, 0xa8, 0xbd, 0xc3, 0x2e, 0x92, 0x4a, + 0x90, 0x46, 0x56, 0xaf, 0x43, 0x19, 0x92, 0xc7, 0xc4, 0xaf, 0x6a, 0xf5, 0x3a, 0x83, 0x2c, 0x29, + 0x0c, 0x63, 0x14, 0x53, 0x2e, 0x72, 0x6e, 0x1b, 0x3a, 0x92, 0x27, 0x09, 0xc1, 0x93, 0x43, 0x04, + 0x75, 0xaa, 0x1f, 0xe4, 0xe0, 0x38, 0xa9, 0x02, 0x69, 0xf4, 0xb2, 0x87, 0x2c, 0xd7, 0xb0, 0x2d, + 0x79, 0x8a, 0x90, 0x3c, 0x31, 0x62, 0x15, 0x91, 0xd9, 0x1c, 0xa4, 0x08, 0x70, 0xd2, 0x05, 0x98, + 0xb2, 0xbb, 0x9e, 0x61, 0x5b, 0xae, 0x9c, 0x3a, 0x2b, 0x2c, 0x66, 0x56, 0x3e, 0x36, 0x32, 0x11, + 0x6a, 0xd4, 0x46, 0xe1, 0xc6, 0xd2, 0x26, 0x88, 0xae, 0xdd, 0x73, 0x74, 0xa4, 0xea, 0x76, 0x13, + 0xa9, 0x86, 0xd5, 0xb2, 0xe5, 0x34, 0x21, 0x38, 0x33, 0xfc, 0x20, 0xc4, 0xb0, 0x62, 0x37, 0xd1, + 0xa6, 0xd5, 0xb2, 0x95, 0x9c, 0xdb, 0x77, 0x2d, 0x9d, 0x82, 0x49, 0xf7, 0xd0, 0xf2, 0xb4, 0x97, + 0xe5, 0x2c, 0xc9, 0x10, 0x76, 0x55, 0xf8, 0x9f, 0x24, 0xcc, 0x8c, 0x93, 0x62, 0x57, 0x20, 0xd9, + 0xc2, 0x4f, 0x29, 0xc7, 0x4e, 0x12, 0x03, 0x8a, 0xe9, 0x0f, 0xe2, 0xe4, 0x8f, 0x18, 0xc4, 0x12, + 0x64, 0x2c, 0xe4, 0x7a, 0xa8, 0x49, 0x33, 0x22, 0x3e, 0x66, 0x4e, 0x01, 0x05, 0x0d, 0xa7, 0x54, + 0xe2, 0x47, 0x4a, 0xa9, 0x1b, 0x30, 0xe3, 0xbb, 0xa4, 0x3a, 0x9a, 0xd5, 0xe6, 0xb9, 0xb9, 0x1c, + 0xe5, 0xc9, 0x52, 0x95, 0xe3, 0x14, 0x0c, 0x53, 0x72, 0xa8, 0xef, 0x5a, 0x5a, 0x07, 0xb0, 0x2d, + 0x64, 0xb7, 0xd4, 0x26, 0xd2, 0x4d, 0x39, 0x75, 0x4c, 0x94, 0x6a, 0xd8, 0x64, 0x28, 0x4a, 0x36, + 0x95, 0xea, 0xa6, 0x74, 0x39, 0x48, 0xb5, 0xa9, 0x63, 0x32, 0x65, 0x9b, 0x6e, 0xb2, 0xa1, 0x6c, + 0xdb, 0x87, 0x9c, 0x83, 0x70, 0xde, 0xa3, 0x26, 0x7b, 0xb2, 0x34, 0x71, 0x62, 0x29, 0xf2, 0xc9, + 0x14, 0x06, 0xa3, 0x0f, 0x36, 0xed, 0x84, 0x2f, 0xa5, 0xc7, 0xc0, 0x17, 0xa8, 0x24, 0xad, 0x80, + 0x54, 0xa1, 0x2c, 0x17, 0xee, 0x68, 0x1d, 0xb4, 0x70, 0x09, 0x72, 0xfd, 0xe1, 0x91, 0xe6, 0x21, + 0xe9, 0x7a, 0x9a, 0xe3, 0x91, 0x2c, 0x4c, 0x2a, 0xf4, 0x42, 0x12, 0x21, 0x8e, 0xac, 0x26, 0xa9, + 0x72, 0x49, 0x05, 0xff, 0xbb, 0x70, 0x11, 0xa6, 0xfb, 0x6e, 0x3f, 0x2e, 0xb0, 0xf0, 0xc5, 0x49, + 0x98, 0x1f, 0x95, 0x73, 0x23, 0xd3, 0xff, 0x14, 0x4c, 0x5a, 0xbd, 0x4e, 0x03, 0x39, 0x72, 0x9c, + 0x30, 0xb0, 0x2b, 0xa9, 0x04, 0x49, 0x53, 0x6b, 0x20, 0x53, 0x4e, 0x9c, 0x15, 0x16, 0x73, 0x2b, + 0xcf, 0x8c, 0x95, 0xd5, 0x4b, 0x5b, 0x18, 0xa2, 0x50, 0xa4, 0xf4, 0x29, 0x48, 0xb0, 0x12, 0x87, + 0x19, 0x9e, 0x1e, 0x8f, 0x01, 0xe7, 0xa2, 0x42, 0x70, 0xd2, 0x23, 0x90, 0xc6, 0x7f, 0x69, 0x6c, + 0x27, 0x89, 0xcf, 0x29, 0x2c, 0xc0, 0x71, 0x95, 0x16, 0x20, 0x45, 0xd2, 0xac, 0x89, 0x78, 0x6b, + 0xf0, 0xaf, 0xf1, 0xc2, 0x34, 0x51, 0x4b, 0xeb, 0x99, 0x9e, 0x7a, 0x5b, 0x33, 0x7b, 0x88, 0x24, + 0x4c, 0x5a, 0xc9, 0x32, 0xe1, 0x67, 0xb0, 0x4c, 0x3a, 0x03, 0x19, 0x9a, 0x95, 0x86, 0xd5, 0x44, + 0x2f, 0x93, 0xea, 0x93, 0x54, 0x68, 0xa2, 0x6e, 0x62, 0x09, 0xbe, 0xfd, 0x4d, 0xd7, 0xb6, 0xf8, + 0xd2, 0x92, 0x5b, 0x60, 0x01, 0xb9, 0xfd, 0xc5, 0xc1, 0xc2, 0xf7, 0xe8, 0xe8, 0xc7, 0x1b, 0xcc, + 0xc5, 0xc2, 0xb7, 0x62, 0x90, 0x20, 0xfb, 0x6d, 0x06, 0x32, 0x7b, 0x2f, 0xed, 0x56, 0xd5, 0xf5, + 0xda, 0x7e, 0x79, 0xab, 0x2a, 0x0a, 0x52, 0x0e, 0x80, 0x08, 0xae, 0x6e, 0xd5, 0x4a, 0x7b, 0x62, + 0xcc, 0xbf, 0xde, 0xdc, 0xd9, 0xbb, 0xb0, 0x2a, 0xc6, 0x7d, 0xc0, 0x3e, 0x15, 0x24, 0xc2, 0x06, + 0xe7, 0x57, 0xc4, 0xa4, 0x24, 0x42, 0x96, 0x12, 0x6c, 0xde, 0xa8, 0xae, 0x5f, 0x58, 0x15, 0x27, + 0xfb, 0x25, 0xe7, 0x57, 0xc4, 0x29, 0x69, 0x1a, 0xd2, 0x44, 0x52, 0xae, 0xd5, 0xb6, 0xc4, 0x94, + 0xcf, 0x59, 0xdf, 0x53, 0x36, 0x77, 0x36, 0xc4, 0xb4, 0xcf, 0xb9, 0xa1, 0xd4, 0xf6, 0x77, 0x45, + 0xf0, 0x19, 0xb6, 0xab, 0xf5, 0x7a, 0x69, 0xa3, 0x2a, 0x66, 0x7c, 0x8b, 0xf2, 0x4b, 0x7b, 0xd5, + 0xba, 0x98, 0xed, 0x73, 0xeb, 0xfc, 0x8a, 0x38, 0xed, 0xdf, 0xa2, 0xba, 0xb3, 0xbf, 0x2d, 0xe6, + 0xa4, 0x59, 0x98, 0xa6, 0xb7, 0xe0, 0x4e, 0xcc, 0x0c, 0x88, 0x2e, 0xac, 0x8a, 0x62, 0xe0, 0x08, + 0x65, 0x99, 0xed, 0x13, 0x5c, 0x58, 0x15, 0xa5, 0x42, 0x05, 0x92, 0x24, 0xbb, 0x24, 0x09, 0x72, + 0x5b, 0xa5, 0x72, 0x75, 0x4b, 0xad, 0xed, 0xee, 0x6d, 0xd6, 0x76, 0x4a, 0x5b, 0xa2, 0x10, 0xc8, + 0x94, 0xea, 0xa7, 0xf7, 0x37, 0x95, 0xea, 0xba, 0x18, 0x0b, 0xcb, 0x76, 0xab, 0xa5, 0xbd, 0xea, + 0xba, 0x18, 0x2f, 0xe8, 0x30, 0x3f, 0xaa, 0xce, 0x8c, 0xdc, 0x19, 0xa1, 0x25, 0x8e, 0x1d, 0xb3, + 0xc4, 0x84, 0x6b, 0x68, 0x89, 0xbf, 0x22, 0xc0, 0xdc, 0x88, 0x5a, 0x3b, 0xf2, 0x26, 0x2f, 0x40, + 0x92, 0xa6, 0x28, 0xed, 0x3e, 0x4f, 0x8d, 0x2c, 0xda, 0x24, 0x61, 0x87, 0x3a, 0x10, 0xc1, 0x85, + 0x3b, 0x70, 0xfc, 0x98, 0x0e, 0x8c, 0x29, 0x86, 0x9c, 0x7c, 0x55, 0x00, 0xf9, 0x38, 0xee, 0x88, + 0x42, 0x11, 0xeb, 0x2b, 0x14, 0x57, 0x06, 0x1d, 0x38, 0x77, 0xfc, 0x33, 0x0c, 0x79, 0xf1, 0xa6, + 0x00, 0xa7, 0x46, 0x0f, 0x2a, 0x23, 0x7d, 0xf8, 0x14, 0x4c, 0x76, 0x90, 0x77, 0x60, 0xf3, 0x66, + 0xfd, 0xf1, 0x11, 0x2d, 0x00, 0xab, 0x07, 0x63, 0xc5, 0x50, 0xe1, 0x1e, 0x12, 0x3f, 0x6e, 0xda, + 0xa0, 0xde, 0x0c, 0x79, 0xfa, 0xf9, 0x18, 0x3c, 0x34, 0x92, 0x7c, 0xa4, 0xa3, 0x8f, 0x02, 0x18, + 0x56, 0xb7, 0xe7, 0xd1, 0x86, 0x4c, 0xeb, 0x53, 0x9a, 0x48, 0xc8, 0xde, 0xc7, 0xb5, 0xa7, 0xe7, + 0xf9, 0xfa, 0x38, 0xd1, 0x03, 0x15, 0x11, 0x83, 0x4b, 0x81, 0xa3, 0x09, 0xe2, 0x68, 0xfe, 0x98, + 0x27, 0x1d, 0xea, 0x75, 0xcf, 0x81, 0xa8, 0x9b, 0x06, 0xb2, 0x3c, 0xd5, 0xf5, 0x1c, 0xa4, 0x75, + 0x0c, 0xab, 0x4d, 0x0a, 0x70, 0xaa, 0x98, 0x6c, 0x69, 0xa6, 0x8b, 0x94, 0x19, 0xaa, 0xae, 0x73, + 0x2d, 0x46, 0x90, 0x2e, 0xe3, 0x84, 0x10, 0x93, 0x7d, 0x08, 0xaa, 0xf6, 0x11, 0x85, 0xaf, 0x4f, + 0x41, 0x26, 0x34, 0xd6, 0x49, 0xe7, 0x20, 0x7b, 0x53, 0xbb, 0xad, 0xa9, 0x7c, 0x54, 0xa7, 0x91, + 0xc8, 0x60, 0xd9, 0x2e, 0x1b, 0xd7, 0x9f, 0x83, 0x79, 0x62, 0x62, 0xf7, 0x3c, 0xe4, 0xa8, 0xba, + 0xa9, 0xb9, 0x2e, 0x09, 0x5a, 0x8a, 0x98, 0x4a, 0x58, 0x57, 0xc3, 0xaa, 0x0a, 0xd7, 0x48, 0x6b, + 0x30, 0x47, 0x10, 0x9d, 0x9e, 0xe9, 0x19, 0x5d, 0x13, 0xa9, 0xf8, 0xe5, 0xc1, 0x25, 0x85, 0xd8, + 0xf7, 0x6c, 0x16, 0x5b, 0x6c, 0x33, 0x03, 0xec, 0x91, 0x2b, 0xad, 0xc3, 0xa3, 0x04, 0xd6, 0x46, + 0x16, 0x72, 0x34, 0x0f, 0xa9, 0xe8, 0x73, 0x3d, 0xcd, 0x74, 0x55, 0xcd, 0x6a, 0xaa, 0x07, 0x9a, + 0x7b, 0x20, 0xcf, 0x63, 0x82, 0x72, 0x4c, 0x16, 0x94, 0xd3, 0xd8, 0x70, 0x83, 0xd9, 0x55, 0x89, + 0x59, 0xc9, 0x6a, 0x5e, 0xd3, 0xdc, 0x03, 0xa9, 0x08, 0xa7, 0x08, 0x8b, 0xeb, 0x39, 0x86, 0xd5, + 0x56, 0xf5, 0x03, 0xa4, 0xdf, 0x52, 0x7b, 0x5e, 0xeb, 0x92, 0xfc, 0x48, 0xf8, 0xfe, 0xc4, 0xc3, + 0x3a, 0xb1, 0xa9, 0x60, 0x93, 0x7d, 0xaf, 0x75, 0x49, 0xaa, 0x43, 0x16, 0x2f, 0x46, 0xc7, 0x78, + 0x05, 0xa9, 0x2d, 0xdb, 0x21, 0x9d, 0x25, 0x37, 0x62, 0x67, 0x87, 0x22, 0xb8, 0x54, 0x63, 0x80, + 0x6d, 0xbb, 0x89, 0x8a, 0xc9, 0xfa, 0x6e, 0xb5, 0xba, 0xae, 0x64, 0x38, 0xcb, 0x55, 0xdb, 0xc1, + 0x09, 0xd5, 0xb6, 0xfd, 0x00, 0x67, 0x68, 0x42, 0xb5, 0x6d, 0x1e, 0xde, 0x35, 0x98, 0xd3, 0x75, + 0xfa, 0xcc, 0x86, 0xae, 0xb2, 0x11, 0xdf, 0x95, 0xc5, 0xbe, 0x60, 0xe9, 0xfa, 0x06, 0x35, 0x60, + 0x39, 0xee, 0x4a, 0x97, 0xe1, 0xa1, 0x20, 0x58, 0x61, 0xe0, 0xec, 0xd0, 0x53, 0x0e, 0x42, 0xd7, + 0x60, 0xae, 0x7b, 0x38, 0x0c, 0x94, 0xfa, 0xee, 0xd8, 0x3d, 0x1c, 0x84, 0x3d, 0x41, 0x5e, 0xdb, + 0x1c, 0xa4, 0x6b, 0x1e, 0x6a, 0xca, 0x0f, 0x87, 0xad, 0x43, 0x0a, 0x69, 0x19, 0x44, 0x5d, 0x57, + 0x91, 0xa5, 0x35, 0x4c, 0xa4, 0x6a, 0x0e, 0xb2, 0x34, 0x57, 0x3e, 0x13, 0x36, 0xce, 0xe9, 0x7a, + 0x95, 0x68, 0x4b, 0x44, 0x29, 0x3d, 0x0d, 0xb3, 0x76, 0xe3, 0xa6, 0x4e, 0x33, 0x4b, 0xed, 0x3a, + 0xa8, 0x65, 0xbc, 0x2c, 0x3f, 0x4e, 0xc2, 0x34, 0x83, 0x15, 0x24, 0xaf, 0x76, 0x89, 0x58, 0x7a, + 0x0a, 0x44, 0xdd, 0x3d, 0xd0, 0x9c, 0x2e, 0x69, 0xed, 0x6e, 0x57, 0xd3, 0x91, 0xfc, 0x04, 0x35, + 0xa5, 0xf2, 0x1d, 0x2e, 0xc6, 0x99, 0xed, 0xde, 0x31, 0x5a, 0x1e, 0x67, 0x7c, 0x92, 0x66, 0x36, + 0x91, 0x31, 0xb6, 0x1b, 0x30, 0xdf, 0xb3, 0x0c, 0xcb, 0x43, 0x4e, 0xd7, 0x41, 0x78, 0x88, 0xa7, + 0x3b, 0x51, 0xfe, 0xe7, 0xa9, 0x63, 0xc6, 0xf0, 0xfd, 0xb0, 0x35, 0x4d, 0x00, 0x65, 0xae, 0x37, + 0x2c, 0x2c, 0x14, 0x21, 0x1b, 0xce, 0x0b, 0x29, 0x0d, 0x34, 0x33, 0x44, 0x01, 0xf7, 0xd8, 0x4a, + 0x6d, 0x1d, 0x77, 0xc7, 0xcf, 0x56, 0xc5, 0x18, 0xee, 0xd2, 0x5b, 0x9b, 0x7b, 0x55, 0x55, 0xd9, + 0xdf, 0xd9, 0xdb, 0xdc, 0xae, 0x8a, 0xf1, 0xa7, 0xd3, 0xa9, 0xef, 0x4f, 0x89, 0x77, 0xef, 0xde, + 0xbd, 0x1b, 0x2b, 0x7c, 0x27, 0x06, 0xb9, 0xfe, 0xc9, 0x58, 0xfa, 0x29, 0x78, 0x98, 0xbf, 0xc6, + 0xba, 0xc8, 0x53, 0xef, 0x18, 0x0e, 0x49, 0xd5, 0x8e, 0x46, 0x67, 0x4b, 0x3f, 0xca, 0xf3, 0xcc, + 0xaa, 0x8e, 0xbc, 0x17, 0x0d, 0x07, 0x27, 0x62, 0x47, 0xf3, 0xa4, 0x2d, 0x38, 0x63, 0xd9, 0xaa, + 0xeb, 0x69, 0x56, 0x53, 0x73, 0x9a, 0x6a, 0x70, 0x80, 0xa0, 0x6a, 0xba, 0x8e, 0x5c, 0xd7, 0xa6, + 0x2d, 0xc2, 0x67, 0xf9, 0x98, 0x65, 0xd7, 0x99, 0x71, 0x50, 0x3b, 0x4b, 0xcc, 0x74, 0x20, 0x23, + 0xe2, 0xc7, 0x65, 0xc4, 0x23, 0x90, 0xee, 0x68, 0x5d, 0x15, 0x59, 0x9e, 0x73, 0x48, 0xe6, 0xb9, + 0x94, 0x92, 0xea, 0x68, 0xdd, 0x2a, 0xbe, 0xfe, 0xe8, 0xd6, 0x20, 0x1c, 0xc7, 0x7f, 0x8a, 0x43, + 0x36, 0x3c, 0xd3, 0xe1, 0x11, 0x59, 0x27, 0xf5, 0x5b, 0x20, 0x3b, 0xfc, 0xb1, 0x07, 0x4e, 0x80, + 0x4b, 0x15, 0x5c, 0xd8, 0x8b, 0x93, 0x74, 0xd2, 0x52, 0x28, 0x12, 0x37, 0x55, 0xbc, 0xa7, 0x11, + 0x9d, 0xdf, 0x53, 0x0a, 0xbb, 0x92, 0x36, 0x60, 0xf2, 0xa6, 0x4b, 0xb8, 0x27, 0x09, 0xf7, 0xe3, + 0x0f, 0xe6, 0xbe, 0x5e, 0x27, 0xe4, 0xe9, 0xeb, 0x75, 0x75, 0xa7, 0xa6, 0x6c, 0x97, 0xb6, 0x14, + 0x06, 0x97, 0x4e, 0x43, 0xc2, 0xd4, 0x5e, 0x39, 0xec, 0x6f, 0x01, 0x44, 0x34, 0x6e, 0xe0, 0x4f, + 0x43, 0xe2, 0x0e, 0xd2, 0x6e, 0xf5, 0x17, 0x5e, 0x22, 0xfa, 0x08, 0x53, 0x7f, 0x19, 0x92, 0x24, + 0x5e, 0x12, 0x00, 0x8b, 0x98, 0x38, 0x21, 0xa5, 0x20, 0x51, 0xa9, 0x29, 0x38, 0xfd, 0x45, 0xc8, + 0x52, 0xa9, 0xba, 0xbb, 0x59, 0xad, 0x54, 0xc5, 0x58, 0x61, 0x0d, 0x26, 0x69, 0x10, 0xf0, 0xd6, + 0xf0, 0xc3, 0x20, 0x4e, 0xb0, 0x4b, 0xc6, 0x21, 0x70, 0xed, 0xfe, 0x76, 0xb9, 0xaa, 0x88, 0xb1, + 0xf0, 0xf2, 0xba, 0x90, 0x0d, 0x8f, 0x73, 0x3f, 0x9e, 0x9c, 0xfa, 0x6b, 0x01, 0x32, 0xa1, 0xf1, + 0x0c, 0x0f, 0x06, 0x9a, 0x69, 0xda, 0x77, 0x54, 0xcd, 0x34, 0x34, 0x97, 0x25, 0x05, 0x10, 0x51, + 0x09, 0x4b, 0xc6, 0x5d, 0xb4, 0x1f, 0x8b, 0xf3, 0x6f, 0x08, 0x20, 0x0e, 0x8e, 0x76, 0x03, 0x0e, + 0x0a, 0x3f, 0x51, 0x07, 0x5f, 0x17, 0x20, 0xd7, 0x3f, 0xcf, 0x0d, 0xb8, 0x77, 0xee, 0x27, 0xea, + 0xde, 0xbb, 0x31, 0x98, 0xee, 0x9b, 0xe2, 0xc6, 0xf5, 0xee, 0x73, 0x30, 0x6b, 0x34, 0x51, 0xa7, + 0x6b, 0x7b, 0xc8, 0xd2, 0x0f, 0x55, 0x13, 0xdd, 0x46, 0xa6, 0x5c, 0x20, 0x85, 0x62, 0xf9, 0xc1, + 0x73, 0xe2, 0xd2, 0x66, 0x80, 0xdb, 0xc2, 0xb0, 0xe2, 0xdc, 0xe6, 0x7a, 0x75, 0x7b, 0xb7, 0xb6, + 0x57, 0xdd, 0xa9, 0xbc, 0xa4, 0xee, 0xef, 0xfc, 0xf4, 0x4e, 0xed, 0xc5, 0x1d, 0x45, 0x34, 0x06, + 0xcc, 0x3e, 0xc2, 0xad, 0xbe, 0x0b, 0xe2, 0xa0, 0x53, 0xd2, 0xc3, 0x30, 0xca, 0x2d, 0x71, 0x42, + 0x9a, 0x83, 0x99, 0x9d, 0x9a, 0x5a, 0xdf, 0x5c, 0xaf, 0xaa, 0xd5, 0xab, 0x57, 0xab, 0x95, 0xbd, + 0x3a, 0x7d, 0x71, 0xf6, 0xad, 0xf7, 0xfa, 0x37, 0xf5, 0x6b, 0x71, 0x98, 0x1b, 0xe1, 0x89, 0x54, + 0x62, 0x33, 0x3b, 0x7d, 0x8d, 0x78, 0x76, 0x1c, 0xef, 0x97, 0xf0, 0x54, 0xb0, 0xab, 0x39, 0x1e, + 0x1b, 0xf1, 0x9f, 0x02, 0x1c, 0x25, 0xcb, 0x33, 0x5a, 0x06, 0x72, 0xd8, 0x39, 0x03, 0x1d, 0xe4, + 0x67, 0x02, 0x39, 0x3d, 0x6a, 0xf8, 0x04, 0x48, 0x5d, 0xdb, 0x35, 0x3c, 0xe3, 0x36, 0x52, 0x0d, + 0x8b, 0x1f, 0x4a, 0xe0, 0xc1, 0x3e, 0xa1, 0x88, 0x5c, 0xb3, 0x69, 0x79, 0xbe, 0xb5, 0x85, 0xda, + 0xda, 0x80, 0x35, 0x2e, 0xe0, 0x71, 0x45, 0xe4, 0x1a, 0xdf, 0xfa, 0x1c, 0x64, 0x9b, 0x76, 0x0f, + 0x8f, 0x49, 0xd4, 0x0e, 0xf7, 0x0b, 0x41, 0xc9, 0x50, 0x99, 0x6f, 0xc2, 0xe6, 0xd8, 0xe0, 0x34, + 0x24, 0xab, 0x64, 0xa8, 0x8c, 0x9a, 0x3c, 0x09, 0x33, 0x5a, 0xbb, 0xed, 0x60, 0x72, 0x4e, 0x44, + 0x27, 0xf3, 0x9c, 0x2f, 0x26, 0x86, 0x0b, 0xd7, 0x21, 0xc5, 0xe3, 0x80, 0x5b, 0x32, 0x8e, 0x84, + 0xda, 0xa5, 0x67, 0x52, 0xb1, 0xc5, 0xb4, 0x92, 0xb2, 0xb8, 0xf2, 0x1c, 0x64, 0x0d, 0x57, 0x0d, + 0x0e, 0x47, 0x63, 0x67, 0x63, 0x8b, 0x29, 0x25, 0x63, 0xb8, 0xfe, 0x69, 0x58, 0xe1, 0xcd, 0x18, + 0xe4, 0xfa, 0x0f, 0x77, 0xa5, 0x75, 0x48, 0x99, 0xb6, 0xae, 0x91, 0xd4, 0xa2, 0xbf, 0x2c, 0x2c, + 0x46, 0x9c, 0x07, 0x2f, 0x6d, 0x31, 0x7b, 0xc5, 0x47, 0x2e, 0xfc, 0xbd, 0x00, 0x29, 0x2e, 0x96, + 0x4e, 0x41, 0xa2, 0xab, 0x79, 0x07, 0x84, 0x2e, 0x59, 0x8e, 0x89, 0x82, 0x42, 0xae, 0xb1, 0xdc, + 0xed, 0x6a, 0x16, 0x49, 0x01, 0x26, 0xc7, 0xd7, 0x78, 0x5d, 0x4d, 0xa4, 0x35, 0xc9, 0xd8, 0x6f, + 0x77, 0x3a, 0xc8, 0xf2, 0x5c, 0xbe, 0xae, 0x4c, 0x5e, 0x61, 0x62, 0xe9, 0x19, 0x98, 0xf5, 0x1c, + 0xcd, 0x30, 0xfb, 0x6c, 0x13, 0xc4, 0x56, 0xe4, 0x0a, 0xdf, 0xb8, 0x08, 0xa7, 0x39, 0x6f, 0x13, + 0x79, 0x9a, 0x7e, 0x80, 0x9a, 0x01, 0x68, 0x92, 0x9c, 0x1c, 0x3e, 0xcc, 0x0c, 0xd6, 0x99, 0x9e, + 0x63, 0x0b, 0xdf, 0x15, 0x60, 0x96, 0xbf, 0xa8, 0x34, 0xfd, 0x60, 0x6d, 0x03, 0x68, 0x96, 0x65, + 0x7b, 0xe1, 0x70, 0x0d, 0xa7, 0xf2, 0x10, 0x6e, 0xa9, 0xe4, 0x83, 0x94, 0x10, 0xc1, 0x42, 0x07, + 0x20, 0xd0, 0x1c, 0x1b, 0xb6, 0x33, 0x90, 0x61, 0x27, 0xf7, 0xe4, 0xe7, 0x1f, 0xfa, 0x6a, 0x0b, + 0x54, 0x84, 0xdf, 0x68, 0xa4, 0x79, 0x48, 0x36, 0x50, 0xdb, 0xb0, 0xd8, 0x79, 0x22, 0xbd, 0xe0, + 0xa7, 0x94, 0x09, 0xff, 0x94, 0xb2, 0x7c, 0x03, 0xe6, 0x74, 0xbb, 0x33, 0xe8, 0x6e, 0x59, 0x1c, + 0x78, 0xbd, 0x76, 0xaf, 0x09, 0x9f, 0x85, 0x60, 0xc4, 0xfc, 0x4a, 0x2c, 0xbe, 0xb1, 0x5b, 0xfe, + 0x5a, 0x6c, 0x61, 0x83, 0xe2, 0x76, 0xf9, 0x63, 0x2a, 0xa8, 0x65, 0x22, 0x1d, 0xbb, 0x0e, 0x3f, + 0xf8, 0x38, 0x3c, 0xdb, 0x36, 0xbc, 0x83, 0x5e, 0x63, 0x49, 0xb7, 0x3b, 0xcb, 0x6d, 0xbb, 0x6d, + 0x07, 0x3f, 0x77, 0xe1, 0x2b, 0x72, 0x41, 0xfe, 0x63, 0x3f, 0x79, 0xa5, 0x7d, 0xe9, 0x42, 0xe4, + 0xef, 0x63, 0xc5, 0x1d, 0x98, 0x63, 0xc6, 0x2a, 0x39, 0x73, 0xa7, 0xaf, 0x06, 0xd2, 0x03, 0xcf, + 0x5d, 0xe4, 0x6f, 0xbe, 0x47, 0x7a, 0xb5, 0x32, 0xcb, 0xa0, 0x58, 0x47, 0x5f, 0x20, 0x8a, 0x0a, + 0x3c, 0xd4, 0xc7, 0x47, 0xf7, 0x25, 0x72, 0x22, 0x18, 0xbf, 0xc3, 0x18, 0xe7, 0x42, 0x8c, 0x75, + 0x06, 0x2d, 0x56, 0x60, 0xfa, 0x24, 0x5c, 0x7f, 0xcb, 0xb8, 0xb2, 0x28, 0x4c, 0xb2, 0x01, 0x33, + 0x84, 0x44, 0xef, 0xb9, 0x9e, 0xdd, 0x21, 0x45, 0xef, 0xc1, 0x34, 0x7f, 0xf7, 0x1e, 0xdd, 0x28, + 0x39, 0x0c, 0xab, 0xf8, 0xa8, 0x62, 0x11, 0xc8, 0xcf, 0x0c, 0x4d, 0xa4, 0x9b, 0x11, 0x0c, 0x6f, + 0x31, 0x47, 0x7c, 0xfb, 0xe2, 0x67, 0x60, 0x1e, 0xff, 0x4f, 0x6a, 0x52, 0xd8, 0x93, 0xe8, 0x53, + 0x26, 0xf9, 0xbb, 0xaf, 0xd2, 0xbd, 0x38, 0xe7, 0x13, 0x84, 0x7c, 0x0a, 0xad, 0x62, 0x1b, 0x79, + 0x1e, 0x72, 0x5c, 0x55, 0x33, 0x47, 0xb9, 0x17, 0x7a, 0x4d, 0x97, 0xbf, 0xf4, 0x7e, 0xff, 0x2a, + 0x6e, 0x50, 0x64, 0xc9, 0x34, 0x8b, 0xfb, 0xf0, 0xf0, 0x88, 0xac, 0x18, 0x83, 0xf3, 0x35, 0xc6, + 0x39, 0x3f, 0x94, 0x19, 0x98, 0x76, 0x17, 0xb8, 0xdc, 0x5f, 0xcb, 0x31, 0x38, 0x7f, 0x9b, 0x71, + 0x4a, 0x0c, 0xcb, 0x97, 0x14, 0x33, 0x5e, 0x87, 0xd9, 0xdb, 0xc8, 0x69, 0xd8, 0x2e, 0x3b, 0x1a, + 0x19, 0x83, 0xee, 0x75, 0x46, 0x37, 0xc3, 0x80, 0xe4, 0xac, 0x04, 0x73, 0x5d, 0x86, 0x54, 0x4b, + 0xd3, 0xd1, 0x18, 0x14, 0x5f, 0x66, 0x14, 0x53, 0xd8, 0x1e, 0x43, 0x4b, 0x90, 0x6d, 0xdb, 0xac, + 0x2d, 0x45, 0xc3, 0xdf, 0x60, 0xf0, 0x0c, 0xc7, 0x30, 0x8a, 0xae, 0xdd, 0xed, 0x99, 0xb8, 0x67, + 0x45, 0x53, 0xfc, 0x0e, 0xa7, 0xe0, 0x18, 0x46, 0x71, 0x82, 0xb0, 0xfe, 0x2e, 0xa7, 0x70, 0x43, + 0xf1, 0x7c, 0x01, 0x32, 0xb6, 0x65, 0x1e, 0xda, 0xd6, 0x38, 0x4e, 0xfc, 0x1e, 0x63, 0x00, 0x06, + 0xc1, 0x04, 0x57, 0x20, 0x3d, 0xee, 0x42, 0xfc, 0xfe, 0xfb, 0x7c, 0x7b, 0xf0, 0x15, 0xd8, 0x80, + 0x19, 0x5e, 0xa0, 0x0c, 0xdb, 0x1a, 0x83, 0xe2, 0x0f, 0x18, 0x45, 0x2e, 0x04, 0x63, 0x8f, 0xe1, + 0x21, 0xd7, 0x6b, 0xa3, 0x71, 0x48, 0xde, 0xe4, 0x8f, 0xc1, 0x20, 0x2c, 0x94, 0x0d, 0x64, 0xe9, + 0x07, 0xe3, 0x31, 0x7c, 0x95, 0x87, 0x92, 0x63, 0x30, 0x45, 0x05, 0xa6, 0x3b, 0x9a, 0xe3, 0x1e, + 0x68, 0xe6, 0x58, 0xcb, 0xf1, 0x87, 0x8c, 0x23, 0xeb, 0x83, 0x58, 0x44, 0x7a, 0xd6, 0x49, 0x68, + 0xbe, 0xc6, 0x23, 0x12, 0x82, 0xb1, 0xad, 0xe7, 0x7a, 0xe4, 0x00, 0xea, 0x24, 0x6c, 0x5f, 0xe7, + 0x5b, 0x8f, 0x62, 0xb7, 0xc3, 0x8c, 0x57, 0x20, 0xed, 0x1a, 0xaf, 0x8c, 0x45, 0xf3, 0x47, 0x7c, + 0xa5, 0x09, 0x00, 0x83, 0x5f, 0x82, 0xd3, 0x23, 0xdb, 0xc4, 0x18, 0x64, 0x7f, 0xcc, 0xc8, 0x4e, + 0x8d, 0x68, 0x15, 0xac, 0x24, 0x9c, 0x94, 0xf2, 0x4f, 0x78, 0x49, 0x40, 0x03, 0x5c, 0xbb, 0xf8, + 0x45, 0xc1, 0xd5, 0x5a, 0x27, 0x8b, 0xda, 0x9f, 0xf2, 0xa8, 0x51, 0x6c, 0x5f, 0xd4, 0xf6, 0xe0, + 0x14, 0x63, 0x3c, 0xd9, 0xba, 0x7e, 0x83, 0x17, 0x56, 0x8a, 0xde, 0xef, 0x5f, 0xdd, 0x9f, 0x81, + 0x05, 0x3f, 0x9c, 0x7c, 0x22, 0x75, 0xd5, 0x8e, 0xd6, 0x1d, 0x83, 0xf9, 0x9b, 0x8c, 0x99, 0x57, + 0x7c, 0x7f, 0xa4, 0x75, 0xb7, 0xb5, 0x2e, 0x26, 0xbf, 0x01, 0x32, 0x27, 0xef, 0x59, 0x0e, 0xd2, + 0xed, 0xb6, 0x65, 0xbc, 0x82, 0x9a, 0x63, 0x50, 0xff, 0xd9, 0xc0, 0x52, 0xed, 0x87, 0xe0, 0x98, + 0x79, 0x13, 0x44, 0x7f, 0x56, 0x51, 0x8d, 0x4e, 0xd7, 0x76, 0xbc, 0x08, 0xc6, 0x3f, 0xe7, 0x2b, + 0xe5, 0xe3, 0x36, 0x09, 0xac, 0x58, 0x85, 0x1c, 0xb9, 0x1c, 0x37, 0x25, 0xff, 0x82, 0x11, 0x4d, + 0x07, 0x28, 0x56, 0x38, 0x74, 0xbb, 0xd3, 0xd5, 0x9c, 0x71, 0xea, 0xdf, 0x5f, 0xf2, 0xc2, 0xc1, + 0x20, 0xac, 0x70, 0x78, 0x87, 0x5d, 0x84, 0xbb, 0xfd, 0x18, 0x0c, 0xdf, 0xe2, 0x85, 0x83, 0x63, + 0x18, 0x05, 0x1f, 0x18, 0xc6, 0xa0, 0xf8, 0x2b, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0xd3, 0x41, 0xa3, + 0x75, 0x50, 0xdb, 0x70, 0x3d, 0x87, 0xce, 0xc1, 0x0f, 0xa6, 0xfa, 0xf6, 0xfb, 0xfd, 0x43, 0x98, + 0x12, 0x82, 0x16, 0xaf, 0xc3, 0xcc, 0xc0, 0x88, 0x21, 0x45, 0x7d, 0xb3, 0x20, 0xff, 0xec, 0x87, + 0xac, 0x18, 0xf5, 0x4f, 0x18, 0xc5, 0x2d, 0xbc, 0xee, 0xfd, 0x73, 0x40, 0x34, 0xd9, 0xab, 0x1f, + 0xfa, 0x4b, 0xdf, 0x37, 0x06, 0x14, 0xaf, 0xc2, 0x74, 0xdf, 0x0c, 0x10, 0x4d, 0xf5, 0x73, 0x8c, + 0x2a, 0x1b, 0x1e, 0x01, 0x8a, 0x6b, 0x90, 0xc0, 0xfd, 0x3c, 0x1a, 0xfe, 0xf3, 0x0c, 0x4e, 0xcc, + 0x8b, 0x9f, 0x84, 0x14, 0xef, 0xe3, 0xd1, 0xd0, 0x5f, 0x60, 0x50, 0x1f, 0x82, 0xe1, 0xbc, 0x87, + 0x47, 0xc3, 0x7f, 0x91, 0xc3, 0x39, 0x04, 0xc3, 0xc7, 0x0f, 0xe1, 0xdf, 0xfc, 0x52, 0x82, 0xd5, + 0x61, 0x1e, 0xbb, 0x2b, 0x30, 0xc5, 0x9a, 0x77, 0x34, 0xfa, 0xf3, 0xec, 0xe6, 0x1c, 0x51, 0xbc, + 0x08, 0xc9, 0x31, 0x03, 0xfe, 0xcb, 0x0c, 0x4a, 0xed, 0x8b, 0x15, 0xc8, 0x84, 0x1a, 0x76, 0x34, + 0xfc, 0x57, 0x18, 0x3c, 0x8c, 0xc2, 0xae, 0xb3, 0x86, 0x1d, 0x4d, 0xf0, 0xab, 0xdc, 0x75, 0x86, + 0xc0, 0x61, 0xe3, 0xbd, 0x3a, 0x1a, 0xfd, 0x6b, 0x3c, 0xea, 0x1c, 0x52, 0x7c, 0x01, 0xd2, 0x7e, + 0xfd, 0x8d, 0xc6, 0xff, 0x3a, 0xc3, 0x07, 0x18, 0x1c, 0x81, 0x50, 0xfd, 0x8f, 0xa6, 0xf8, 0x02, + 0x8f, 0x40, 0x08, 0x85, 0xb7, 0xd1, 0x60, 0x4f, 0x8f, 0x66, 0xfa, 0x0d, 0xbe, 0x8d, 0x06, 0x5a, + 0x3a, 0x5e, 0x4d, 0x52, 0x06, 0xa3, 0x29, 0x7e, 0x93, 0xaf, 0x26, 0xb1, 0xc7, 0x6e, 0x0c, 0x36, + 0xc9, 0x68, 0x8e, 0xdf, 0xe2, 0x6e, 0x0c, 0xf4, 0xc8, 0xe2, 0x2e, 0x48, 0xc3, 0x0d, 0x32, 0x9a, + 0xef, 0x8b, 0x8c, 0x6f, 0x76, 0xa8, 0x3f, 0x16, 0x5f, 0x84, 0x53, 0xa3, 0x9b, 0x63, 0x34, 0xeb, + 0x97, 0x3e, 0x1c, 0x78, 0x9d, 0x09, 0xf7, 0xc6, 0xe2, 0x5e, 0x50, 0x65, 0xc3, 0x8d, 0x31, 0x9a, + 0xf6, 0xb5, 0x0f, 0xfb, 0x0b, 0x6d, 0xb8, 0x2f, 0x16, 0x4b, 0x00, 0x41, 0x4f, 0x8a, 0xe6, 0x7a, + 0x9d, 0x71, 0x85, 0x40, 0x78, 0x6b, 0xb0, 0x96, 0x14, 0x8d, 0xff, 0x32, 0xdf, 0x1a, 0x0c, 0x81, + 0xb7, 0x06, 0xef, 0x46, 0xd1, 0xe8, 0x37, 0xf8, 0xd6, 0xe0, 0x90, 0xe2, 0x15, 0x48, 0x59, 0x3d, + 0xd3, 0xc4, 0xb9, 0x25, 0x3d, 0xf8, 0x33, 0x22, 0xf9, 0x5f, 0xee, 0x33, 0x30, 0x07, 0x14, 0xd7, + 0x20, 0x89, 0x3a, 0x0d, 0xd4, 0x8c, 0x42, 0xfe, 0xeb, 0x7d, 0x5e, 0x4f, 0xb0, 0x75, 0xf1, 0x05, + 0x00, 0xfa, 0x32, 0x4d, 0x7e, 0x25, 0x8a, 0xc0, 0xfe, 0xdb, 0x7d, 0xf6, 0x85, 0x42, 0x00, 0x09, + 0x08, 0xe8, 0xf7, 0x0e, 0x0f, 0x26, 0x78, 0xbf, 0x9f, 0x80, 0xbc, 0x80, 0x5f, 0x86, 0xa9, 0x9b, + 0xae, 0x6d, 0x79, 0x5a, 0x3b, 0x0a, 0xfd, 0xef, 0x0c, 0xcd, 0xed, 0x71, 0xc0, 0x3a, 0xb6, 0x83, + 0x3c, 0xad, 0xed, 0x46, 0x61, 0xff, 0x83, 0x61, 0x7d, 0x00, 0x06, 0xeb, 0x9a, 0xeb, 0x8d, 0xf3, + 0xdc, 0xff, 0xc9, 0xc1, 0x1c, 0x80, 0x9d, 0xc6, 0xff, 0xdf, 0x42, 0x87, 0x51, 0xd8, 0x0f, 0xb8, + 0xd3, 0xcc, 0xbe, 0xf8, 0x49, 0x48, 0xe3, 0x7f, 0xe9, 0x57, 0x3b, 0x11, 0xe0, 0xff, 0x62, 0xe0, + 0x00, 0x81, 0xef, 0xec, 0x7a, 0x4d, 0xcf, 0x88, 0x0e, 0xf6, 0x7f, 0xb3, 0x95, 0xe6, 0xf6, 0xc5, + 0x12, 0x64, 0x5c, 0xaf, 0xd9, 0xec, 0xb1, 0x89, 0x26, 0x02, 0xfe, 0x83, 0xfb, 0xfe, 0x4b, 0xae, + 0x8f, 0x29, 0x9f, 0x1b, 0x7d, 0x58, 0x07, 0x1b, 0xf6, 0x86, 0x4d, 0x8f, 0xe9, 0xe0, 0x7e, 0x0a, + 0x1e, 0xd1, 0xed, 0x4e, 0xc3, 0x76, 0x97, 0x69, 0x41, 0x69, 0xd8, 0xde, 0xc1, 0xb2, 0x6d, 0x31, + 0x73, 0x29, 0x6e, 0x5b, 0x68, 0xe1, 0x64, 0xe7, 0x72, 0x85, 0xd3, 0x90, 0xac, 0xf7, 0x1a, 0x8d, + 0x43, 0x49, 0x84, 0xb8, 0xdb, 0x6b, 0xb0, 0x0f, 0x4b, 0xf0, 0xbf, 0x85, 0x77, 0xe2, 0x30, 0x5d, + 0x32, 0xcd, 0xbd, 0xc3, 0x2e, 0x72, 0x6b, 0x16, 0xaa, 0xb5, 0x24, 0x19, 0x26, 0xc9, 0x83, 0x3c, + 0x4f, 0xcc, 0x84, 0x6b, 0x13, 0x0a, 0xbb, 0xf6, 0x35, 0x2b, 0xe4, 0xb8, 0x32, 0xe6, 0x6b, 0x56, + 0x7c, 0xcd, 0x79, 0x7a, 0x5a, 0xe9, 0x6b, 0xce, 0xfb, 0x9a, 0x55, 0x72, 0x66, 0x19, 0xf7, 0x35, + 0xab, 0xbe, 0x66, 0x8d, 0x9c, 0xc9, 0x4f, 0xfb, 0x9a, 0x35, 0x5f, 0x73, 0x81, 0x9c, 0xc2, 0x27, + 0x7c, 0xcd, 0x05, 0x5f, 0x73, 0x91, 0x1c, 0xbe, 0xcf, 0xfa, 0x9a, 0x8b, 0xbe, 0xe6, 0x12, 0x39, + 0x70, 0x97, 0x7c, 0xcd, 0x25, 0x5f, 0x73, 0x99, 0x7c, 0x41, 0x32, 0xe5, 0x6b, 0x2e, 0x4b, 0x0b, + 0x30, 0x45, 0x9f, 0xec, 0x39, 0xf2, 0xab, 0xec, 0xcc, 0xb5, 0x09, 0x85, 0x0b, 0x02, 0xdd, 0xf3, + 0xe4, 0x2b, 0x91, 0xc9, 0x40, 0xf7, 0x7c, 0xa0, 0x5b, 0x21, 0xdf, 0x4a, 0x8b, 0x81, 0x6e, 0x25, + 0xd0, 0x9d, 0x97, 0xa7, 0xf1, 0xfa, 0x07, 0xba, 0xf3, 0x81, 0x6e, 0x55, 0xce, 0xe1, 0x15, 0x08, + 0x74, 0xab, 0x81, 0x6e, 0x4d, 0x9e, 0x39, 0x2b, 0x2c, 0x66, 0x03, 0xdd, 0x9a, 0xf4, 0x2c, 0x64, + 0xdc, 0x5e, 0x43, 0x65, 0x1f, 0x11, 0x90, 0xaf, 0x51, 0x32, 0x2b, 0xb0, 0x84, 0x73, 0x82, 0x2c, + 0xeb, 0xb5, 0x09, 0x05, 0xdc, 0x5e, 0x83, 0x15, 0xc8, 0x72, 0x16, 0xc8, 0x79, 0x82, 0x4a, 0xbe, + 0xc1, 0x2c, 0xbc, 0x2d, 0x40, 0x7a, 0xef, 0x8e, 0x4d, 0x7e, 0x93, 0x75, 0xff, 0x9f, 0x17, 0x97, + 0x3b, 0x7d, 0x7e, 0x95, 0xfc, 0x6c, 0x96, 0xbe, 0x26, 0x28, 0x5c, 0x10, 0xe8, 0xd6, 0xe4, 0xc7, + 0xc8, 0x03, 0xf9, 0xba, 0x35, 0x69, 0x19, 0xb2, 0xa1, 0x07, 0x5a, 0x21, 0x1f, 0x98, 0xf4, 0x3f, + 0x91, 0xa0, 0x64, 0x82, 0x27, 0x5a, 0x29, 0x27, 0x01, 0xa7, 0x3d, 0xfe, 0xe3, 0xdd, 0xb1, 0x0b, + 0x5f, 0x88, 0x41, 0x86, 0x1e, 0x41, 0x92, 0xa7, 0xc2, 0xb7, 0xa2, 0x23, 0xf9, 0x21, 0x73, 0x63, + 0x42, 0xe1, 0x02, 0x49, 0x01, 0xa0, 0xa6, 0x38, 0xc3, 0xa9, 0x27, 0xe5, 0xe7, 0xfe, 0xf1, 0x9d, + 0x33, 0x9f, 0x38, 0x76, 0x07, 0xe1, 0xd8, 0x2d, 0xd3, 0x02, 0xbb, 0xb4, 0x6f, 0x58, 0xde, 0xf3, + 0x2b, 0x97, 0x70, 0x80, 0x03, 0x16, 0x69, 0x1f, 0x52, 0x15, 0xcd, 0x25, 0x5f, 0x98, 0x11, 0xd7, + 0x13, 0xe5, 0x8b, 0xff, 0xfb, 0xce, 0x99, 0xf3, 0x11, 0x8c, 0xac, 0xf6, 0x2d, 0x6d, 0x1f, 0x62, + 0xd6, 0x0b, 0xab, 0x18, 0x7e, 0x6d, 0x42, 0xf1, 0xa9, 0xa4, 0x15, 0xee, 0xea, 0x8e, 0xd6, 0xa1, + 0x5f, 0xd2, 0xc4, 0xcb, 0xe2, 0xd1, 0x3b, 0x67, 0xb2, 0xdb, 0x87, 0x81, 0x3c, 0x70, 0x05, 0x5f, + 0x95, 0x53, 0x30, 0x49, 0x5d, 0x2d, 0xaf, 0xbf, 0x75, 0x2f, 0x3f, 0xf1, 0xf6, 0xbd, 0xfc, 0xc4, + 0x3f, 0xdc, 0xcb, 0x4f, 0xbc, 0x7b, 0x2f, 0x2f, 0x7c, 0x70, 0x2f, 0x2f, 0xfc, 0xf0, 0x5e, 0x5e, + 0xb8, 0x7b, 0x94, 0x17, 0xbe, 0x7a, 0x94, 0x17, 0xbe, 0x71, 0x94, 0x17, 0xbe, 0x7d, 0x94, 0x17, + 0xde, 0x3a, 0xca, 0x4f, 0xbc, 0x7d, 0x94, 0x9f, 0x78, 0xf7, 0x28, 0x2f, 0x7c, 0xff, 0x28, 0x3f, + 0xf1, 0xc1, 0x51, 0x5e, 0xf8, 0xe1, 0x51, 0x5e, 0xb8, 0xfb, 0xbd, 0xbc, 0xf0, 0x7f, 0x01, 0x00, + 0x00, 0xff, 0xff, 0x92, 0x09, 0x9d, 0x38, 0xda, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafemarshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafemarshaler/one.pb.go index 9ceefb659..5b10110ba 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafemarshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafemarshaler/one.pb.go @@ -991,253 +991,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3928 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0x22, 0xcd, 0x9c, 0x19, 0x8d, 0xa8, 0x5f, 0xf2, 0x9a, 0x2b, 0xc7, 0xb3, 0xda, - 0xb1, 0x1d, 0xcb, 0x76, 0x2c, 0xd9, 0xba, 0xec, 0x65, 0xb6, 0x89, 0x31, 0x92, 0xc6, 0x5a, 0x2d, - 0x74, 0x0b, 0x25, 0x25, 0x76, 0xf2, 0x40, 0x70, 0x38, 0xff, 0x8c, 0xb8, 0xcb, 0x21, 0xa7, 0x24, - 0x67, 0xd7, 0xf2, 0xd3, 0x06, 0xee, 0x05, 0x41, 0xd0, 0x5b, 0x5a, 0xa0, 0x89, 0xe3, 0xb8, 0x69, - 0x80, 0xd6, 0x69, 0x7a, 0x4b, 0x7a, 0x49, 0x83, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x0a, 0xe7, 0xad, - 0x28, 0x0a, 0x23, 0xab, 0x1a, 0x68, 0xda, 0xba, 0xad, 0xdb, 0x18, 0x68, 0x50, 0xbf, 0x14, 0xff, - 0x8d, 0xe4, 0x5c, 0xb4, 0x1c, 0x05, 0x4d, 0xd2, 0x27, 0x89, 0xe7, 0x9c, 0xef, 0xe3, 0xf9, 0xcf, - 0x7f, 0x78, 0xce, 0xe1, 0x3f, 0x84, 0xcf, 0x2c, 0xc3, 0x6c, 0xd3, 0x71, 0x9a, 0x16, 0x5e, 0x68, - 0xbb, 0x8e, 0xef, 0xd4, 0x3a, 0x8d, 0x85, 0x3a, 0xf6, 0x0c, 0xd7, 0x6c, 0xfb, 0x8e, 0x3b, 0x4f, - 0x65, 0x68, 0x82, 0x59, 0xcc, 0x0b, 0x8b, 0xd2, 0x36, 0x4c, 0x3e, 0x6f, 0x5a, 0x78, 0x3d, 0x30, - 0xdc, 0xc7, 0x3e, 0xba, 0x02, 0xa9, 0x86, 0x69, 0x61, 0x45, 0x9a, 0x4d, 0xce, 0xe5, 0x16, 0x1f, - 0x9d, 0xef, 0x01, 0xcd, 0x77, 0x23, 0xf6, 0x88, 0x58, 0xa5, 0x88, 0xd2, 0x3b, 0x29, 0x98, 0x1a, - 0xa0, 0x45, 0x08, 0x52, 0xb6, 0xde, 0x22, 0x8c, 0xd2, 0x5c, 0x56, 0xa5, 0xff, 0x23, 0x05, 0xc6, - 0xda, 0xba, 0x71, 0x4b, 0x6f, 0x62, 0x25, 0x41, 0xc5, 0xe2, 0x12, 0x15, 0x01, 0xea, 0xb8, 0x8d, - 0xed, 0x3a, 0xb6, 0x8d, 0x63, 0x25, 0x39, 0x9b, 0x9c, 0xcb, 0xaa, 0x11, 0x09, 0x7a, 0x0a, 0x26, - 0xdb, 0x9d, 0x9a, 0x65, 0x1a, 0x5a, 0xc4, 0x0c, 0x66, 0x93, 0x73, 0x69, 0x55, 0x66, 0x8a, 0xf5, - 0xd0, 0xf8, 0x71, 0x98, 0xb8, 0x83, 0xf5, 0x5b, 0x51, 0xd3, 0x1c, 0x35, 0x2d, 0x10, 0x71, 0xc4, - 0x70, 0x0d, 0xf2, 0x2d, 0xec, 0x79, 0x7a, 0x13, 0x6b, 0xfe, 0x71, 0x1b, 0x2b, 0x29, 0xba, 0xfa, - 0xd9, 0xbe, 0xd5, 0xf7, 0xae, 0x3c, 0xc7, 0x51, 0x07, 0xc7, 0x6d, 0x8c, 0x2a, 0x90, 0xc5, 0x76, - 0xa7, 0xc5, 0x18, 0xd2, 0xa7, 0xc4, 0xaf, 0x6a, 0x77, 0x5a, 0xbd, 0x2c, 0x19, 0x02, 0xe3, 0x14, - 0x63, 0x1e, 0x76, 0x6f, 0x9b, 0x06, 0x56, 0x46, 0x29, 0xc1, 0xe3, 0x7d, 0x04, 0xfb, 0x4c, 0xdf, - 0xcb, 0x21, 0x70, 0x68, 0x0d, 0xb2, 0xf8, 0x25, 0x1f, 0xdb, 0x9e, 0xe9, 0xd8, 0xca, 0x18, 0x25, - 0x79, 0x6c, 0xc0, 0x2e, 0x62, 0xab, 0xde, 0x4b, 0x11, 0xe2, 0xd0, 0x25, 0x18, 0x73, 0xda, 0xbe, - 0xe9, 0xd8, 0x9e, 0x92, 0x99, 0x95, 0xe6, 0x72, 0x8b, 0x1f, 0x1a, 0x98, 0x08, 0xbb, 0xcc, 0x46, - 0x15, 0xc6, 0x68, 0x13, 0x64, 0xcf, 0xe9, 0xb8, 0x06, 0xd6, 0x0c, 0xa7, 0x8e, 0x35, 0xd3, 0x6e, - 0x38, 0x4a, 0x96, 0x12, 0x5c, 0xe8, 0x5f, 0x08, 0x35, 0x5c, 0x73, 0xea, 0x78, 0xd3, 0x6e, 0x38, - 0x6a, 0xc1, 0xeb, 0xba, 0x46, 0xe7, 0x60, 0xd4, 0x3b, 0xb6, 0x7d, 0xfd, 0x25, 0x25, 0x4f, 0x33, - 0x84, 0x5f, 0x95, 0xfe, 0x3b, 0x0d, 0x13, 0xc3, 0xa4, 0xd8, 0x35, 0x48, 0x37, 0xc8, 0x2a, 0x95, - 0xc4, 0x59, 0x62, 0xc0, 0x30, 0xdd, 0x41, 0x1c, 0xfd, 0x11, 0x83, 0x58, 0x81, 0x9c, 0x8d, 0x3d, - 0x1f, 0xd7, 0x59, 0x46, 0x24, 0x87, 0xcc, 0x29, 0x60, 0xa0, 0xfe, 0x94, 0x4a, 0xfd, 0x48, 0x29, - 0xf5, 0x02, 0x4c, 0x04, 0x2e, 0x69, 0xae, 0x6e, 0x37, 0x45, 0x6e, 0x2e, 0xc4, 0x79, 0x32, 0x5f, - 0x15, 0x38, 0x95, 0xc0, 0xd4, 0x02, 0xee, 0xba, 0x46, 0xeb, 0x00, 0x8e, 0x8d, 0x9d, 0x86, 0x56, - 0xc7, 0x86, 0xa5, 0x64, 0x4e, 0x89, 0xd2, 0x2e, 0x31, 0xe9, 0x8b, 0x92, 0xc3, 0xa4, 0x86, 0x85, - 0xae, 0x86, 0xa9, 0x36, 0x76, 0x4a, 0xa6, 0x6c, 0xb3, 0x87, 0xac, 0x2f, 0xdb, 0x0e, 0xa1, 0xe0, - 0x62, 0x92, 0xf7, 0xb8, 0xce, 0x57, 0x96, 0xa5, 0x4e, 0xcc, 0xc7, 0xae, 0x4c, 0xe5, 0x30, 0xb6, - 0xb0, 0x71, 0x37, 0x7a, 0x89, 0x1e, 0x81, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0xf2, 0x42, - 0xb8, 0xa3, 0xb7, 0xf0, 0xcc, 0x15, 0x28, 0x74, 0x87, 0x07, 0x4d, 0x43, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x3a, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x73, 0x19, 0xc6, 0xbb, 0x6e, 0x3f, 0x2c, 0xb0, 0xf4, 0x85, 0x51, 0x98, 0x1e, 0x94, 0x73, - 0x03, 0xd3, 0xff, 0x1c, 0x8c, 0xda, 0x9d, 0x56, 0x0d, 0xbb, 0x4a, 0x92, 0x32, 0xf0, 0x2b, 0x54, - 0x81, 0xb4, 0xa5, 0xd7, 0xb0, 0xa5, 0xa4, 0x66, 0xa5, 0xb9, 0xc2, 0xe2, 0x53, 0x43, 0x65, 0xf5, - 0xfc, 0x16, 0x81, 0xa8, 0x0c, 0x89, 0x3e, 0x06, 0x29, 0x5e, 0xe2, 0x08, 0xc3, 0x93, 0xc3, 0x31, - 0x90, 0x5c, 0x54, 0x29, 0x0e, 0x3d, 0x04, 0x59, 0xf2, 0x97, 0xc5, 0x76, 0x94, 0xfa, 0x9c, 0x21, - 0x02, 0x12, 0x57, 0x34, 0x03, 0x19, 0x9a, 0x66, 0x75, 0x2c, 0x5a, 0x43, 0x70, 0x4d, 0x36, 0xa6, - 0x8e, 0x1b, 0x7a, 0xc7, 0xf2, 0xb5, 0xdb, 0xba, 0xd5, 0xc1, 0x34, 0x61, 0xb2, 0x6a, 0x9e, 0x0b, - 0x3f, 0x41, 0x64, 0xe8, 0x02, 0xe4, 0x58, 0x56, 0x9a, 0x76, 0x1d, 0xbf, 0x44, 0xab, 0x4f, 0x5a, - 0x65, 0x89, 0xba, 0x49, 0x24, 0xe4, 0xf6, 0x37, 0x3d, 0xc7, 0x16, 0x5b, 0x4b, 0x6f, 0x41, 0x04, - 0xf4, 0xf6, 0x97, 0x7b, 0x0b, 0xdf, 0xc3, 0x83, 0x97, 0xd7, 0x9b, 0x8b, 0xa5, 0x6f, 0x25, 0x20, - 0x45, 0x9f, 0xb7, 0x09, 0xc8, 0x1d, 0xbc, 0xb8, 0x57, 0xd5, 0xd6, 0x77, 0x0f, 0x57, 0xb7, 0xaa, - 0xb2, 0x84, 0x0a, 0x00, 0x54, 0xf0, 0xfc, 0xd6, 0x6e, 0xe5, 0x40, 0x4e, 0x04, 0xd7, 0x9b, 0x3b, - 0x07, 0x97, 0x96, 0xe5, 0x64, 0x00, 0x38, 0x64, 0x82, 0x54, 0xd4, 0x60, 0x69, 0x51, 0x4e, 0x23, - 0x19, 0xf2, 0x8c, 0x60, 0xf3, 0x85, 0xea, 0xfa, 0xa5, 0x65, 0x79, 0xb4, 0x5b, 0xb2, 0xb4, 0x28, - 0x8f, 0xa1, 0x71, 0xc8, 0x52, 0xc9, 0xea, 0xee, 0xee, 0x96, 0x9c, 0x09, 0x38, 0xf7, 0x0f, 0xd4, - 0xcd, 0x9d, 0x0d, 0x39, 0x1b, 0x70, 0x6e, 0xa8, 0xbb, 0x87, 0x7b, 0x32, 0x04, 0x0c, 0xdb, 0xd5, - 0xfd, 0xfd, 0xca, 0x46, 0x55, 0xce, 0x05, 0x16, 0xab, 0x2f, 0x1e, 0x54, 0xf7, 0xe5, 0x7c, 0x97, - 0x5b, 0x4b, 0x8b, 0xf2, 0x78, 0x70, 0x8b, 0xea, 0xce, 0xe1, 0xb6, 0x5c, 0x40, 0x93, 0x30, 0xce, - 0x6e, 0x21, 0x9c, 0x98, 0xe8, 0x11, 0x5d, 0x5a, 0x96, 0xe5, 0xd0, 0x11, 0xc6, 0x32, 0xd9, 0x25, - 0xb8, 0xb4, 0x2c, 0xa3, 0xd2, 0x1a, 0xa4, 0x69, 0x76, 0x21, 0x04, 0x85, 0xad, 0xca, 0x6a, 0x75, - 0x4b, 0xdb, 0xdd, 0x3b, 0xd8, 0xdc, 0xdd, 0xa9, 0x6c, 0xc9, 0x52, 0x28, 0x53, 0xab, 0x1f, 0x3f, - 0xdc, 0x54, 0xab, 0xeb, 0x72, 0x22, 0x2a, 0xdb, 0xab, 0x56, 0x0e, 0xaa, 0xeb, 0x72, 0xb2, 0x64, - 0xc0, 0xf4, 0xa0, 0x3a, 0x33, 0xf0, 0xc9, 0x88, 0x6c, 0x71, 0xe2, 0x94, 0x2d, 0xa6, 0x5c, 0x7d, - 0x5b, 0xfc, 0x55, 0x09, 0xa6, 0x06, 0xd4, 0xda, 0x81, 0x37, 0x79, 0x0e, 0xd2, 0x2c, 0x45, 0x59, - 0xf7, 0x79, 0x62, 0x60, 0xd1, 0xa6, 0x09, 0xdb, 0xd7, 0x81, 0x28, 0x2e, 0xda, 0x81, 0x93, 0xa7, - 0x74, 0x60, 0x42, 0xd1, 0xe7, 0xe4, 0x2b, 0x12, 0x28, 0xa7, 0x71, 0xc7, 0x14, 0x8a, 0x44, 0x57, - 0xa1, 0xb8, 0xd6, 0xeb, 0xc0, 0xc5, 0xd3, 0xd7, 0xd0, 0xe7, 0xc5, 0x1b, 0x12, 0x9c, 0x1b, 0x3c, - 0xa8, 0x0c, 0xf4, 0xe1, 0x63, 0x30, 0xda, 0xc2, 0xfe, 0x91, 0x23, 0x9a, 0xf5, 0x87, 0x07, 0xb4, - 0x00, 0xa2, 0xee, 0x8d, 0x15, 0x47, 0x45, 0x7b, 0x48, 0xf2, 0xb4, 0x69, 0x83, 0x79, 0xd3, 0xe7, - 0xe9, 0x67, 0x13, 0xf0, 0xc0, 0x40, 0xf2, 0x81, 0x8e, 0x3e, 0x0c, 0x60, 0xda, 0xed, 0x8e, 0xcf, - 0x1a, 0x32, 0xab, 0x4f, 0x59, 0x2a, 0xa1, 0xcf, 0x3e, 0xa9, 0x3d, 0x1d, 0x3f, 0xd0, 0x27, 0xa9, - 0x1e, 0x98, 0x88, 0x1a, 0x5c, 0x09, 0x1d, 0x4d, 0x51, 0x47, 0x8b, 0xa7, 0xac, 0xb4, 0xaf, 0xd7, - 0x3d, 0x03, 0xb2, 0x61, 0x99, 0xd8, 0xf6, 0x35, 0xcf, 0x77, 0xb1, 0xde, 0x32, 0xed, 0x26, 0x2d, - 0xc0, 0x99, 0x72, 0xba, 0xa1, 0x5b, 0x1e, 0x56, 0x27, 0x98, 0x7a, 0x5f, 0x68, 0x09, 0x82, 0x76, - 0x19, 0x37, 0x82, 0x18, 0xed, 0x42, 0x30, 0x75, 0x80, 0x28, 0x7d, 0x6e, 0x0c, 0x72, 0x91, 0xb1, - 0x0e, 0x5d, 0x84, 0xfc, 0x4d, 0xfd, 0xb6, 0xae, 0x89, 0x51, 0x9d, 0x45, 0x22, 0x47, 0x64, 0x7b, - 0x7c, 0x5c, 0x7f, 0x06, 0xa6, 0xa9, 0x89, 0xd3, 0xf1, 0xb1, 0xab, 0x19, 0x96, 0xee, 0x79, 0x34, - 0x68, 0x19, 0x6a, 0x8a, 0x88, 0x6e, 0x97, 0xa8, 0xd6, 0x84, 0x06, 0xad, 0xc0, 0x14, 0x45, 0xb4, - 0x3a, 0x96, 0x6f, 0xb6, 0x2d, 0xac, 0x91, 0x97, 0x07, 0x8f, 0x16, 0xe2, 0xc0, 0xb3, 0x49, 0x62, - 0xb1, 0xcd, 0x0d, 0x88, 0x47, 0x1e, 0xda, 0x80, 0x87, 0x29, 0xac, 0x89, 0x6d, 0xec, 0xea, 0x3e, - 0xd6, 0xf0, 0xcf, 0x76, 0x74, 0xcb, 0xd3, 0x74, 0xbb, 0xae, 0x1d, 0xe9, 0xde, 0x91, 0x32, 0x1d, - 0x25, 0x38, 0x4f, 0x6c, 0x37, 0xb8, 0x69, 0x95, 0x5a, 0x56, 0xec, 0xfa, 0x75, 0xdd, 0x3b, 0x42, - 0x65, 0x38, 0x47, 0x89, 0x3c, 0xdf, 0x35, 0xed, 0xa6, 0x66, 0x1c, 0x61, 0xe3, 0x96, 0xd6, 0xf1, - 0x1b, 0x57, 0x94, 0x87, 0xa2, 0x0c, 0xd4, 0xc9, 0x7d, 0x6a, 0xb3, 0x46, 0x4c, 0x0e, 0xfd, 0xc6, - 0x15, 0xb4, 0x0f, 0x79, 0xb2, 0x1f, 0x2d, 0xf3, 0x65, 0xac, 0x35, 0x1c, 0x97, 0x36, 0x97, 0xc2, - 0x80, 0x87, 0x3b, 0x12, 0xc4, 0xf9, 0x5d, 0x0e, 0xd8, 0x76, 0xea, 0xb8, 0x9c, 0xde, 0xdf, 0xab, - 0x56, 0xd7, 0xd5, 0x9c, 0x60, 0x79, 0xde, 0x71, 0x49, 0x4e, 0x35, 0x9d, 0x20, 0xc6, 0x39, 0x96, - 0x53, 0x4d, 0x47, 0x44, 0x78, 0x05, 0xa6, 0x0c, 0x83, 0x2d, 0xdb, 0x34, 0x34, 0x3e, 0xe5, 0x7b, - 0x8a, 0xdc, 0x15, 0x2f, 0xc3, 0xd8, 0x60, 0x06, 0x3c, 0xcd, 0x3d, 0x74, 0x15, 0x1e, 0x08, 0xe3, - 0x15, 0x05, 0x4e, 0xf6, 0xad, 0xb2, 0x17, 0xba, 0x02, 0x53, 0xed, 0xe3, 0x7e, 0x20, 0xea, 0xba, - 0x63, 0xfb, 0xb8, 0x17, 0xf6, 0x18, 0x7d, 0x73, 0x73, 0xb1, 0xa1, 0xfb, 0xb8, 0xae, 0x3c, 0x18, - 0xb5, 0x8e, 0x28, 0xd0, 0x02, 0xc8, 0x86, 0xa1, 0x61, 0x5b, 0xaf, 0x59, 0x58, 0xd3, 0x5d, 0x6c, - 0xeb, 0x9e, 0x72, 0x21, 0x6a, 0x5c, 0x30, 0x8c, 0x2a, 0xd5, 0x56, 0xa8, 0x12, 0x3d, 0x09, 0x93, - 0x4e, 0xed, 0xa6, 0xc1, 0x92, 0x4b, 0x6b, 0xbb, 0xb8, 0x61, 0xbe, 0xa4, 0x3c, 0x4a, 0xc3, 0x34, - 0x41, 0x14, 0x34, 0xb5, 0xf6, 0xa8, 0x18, 0x3d, 0x01, 0xb2, 0xe1, 0x1d, 0xe9, 0x6e, 0x9b, 0x76, - 0x77, 0xaf, 0xad, 0x1b, 0x58, 0x79, 0x8c, 0x99, 0x32, 0xf9, 0x8e, 0x10, 0xa3, 0x17, 0x60, 0xba, - 0x63, 0x9b, 0xb6, 0x8f, 0xdd, 0xb6, 0x8b, 0xc9, 0x90, 0xce, 0x9e, 0x34, 0xe5, 0x9f, 0xc6, 0x4e, - 0x19, 0xb3, 0x0f, 0xa3, 0xd6, 0x6c, 0x77, 0xd5, 0xa9, 0x4e, 0xbf, 0xb0, 0x54, 0x86, 0x7c, 0x74, - 0xd3, 0x51, 0x16, 0xd8, 0xb6, 0xcb, 0x12, 0xe9, 0xa1, 0x6b, 0xbb, 0xeb, 0xa4, 0xfb, 0x7d, 0xaa, - 0x2a, 0x27, 0x48, 0x17, 0xde, 0xda, 0x3c, 0xa8, 0x6a, 0xea, 0xe1, 0xce, 0xc1, 0xe6, 0x76, 0x55, - 0x4e, 0x3e, 0x99, 0xcd, 0x7c, 0x7f, 0x4c, 0xbe, 0x7b, 0xf7, 0xee, 0xdd, 0x44, 0xe9, 0x3b, 0x09, - 0x28, 0x74, 0x4f, 0xbe, 0xe8, 0x67, 0xe0, 0x41, 0xf1, 0x9a, 0xea, 0x61, 0x5f, 0xbb, 0x63, 0xba, - 0x34, 0x0f, 0x5b, 0x3a, 0x9b, 0x1d, 0x83, 0x10, 0x4e, 0x73, 0xab, 0x7d, 0xec, 0x7f, 0xd2, 0x74, - 0x49, 0x96, 0xb5, 0x74, 0x1f, 0x6d, 0xc1, 0x05, 0xdb, 0xd1, 0x3c, 0x5f, 0xb7, 0xeb, 0xba, 0x5b, - 0xd7, 0xc2, 0x03, 0x02, 0x4d, 0x37, 0x0c, 0xec, 0x79, 0x0e, 0x6b, 0x01, 0x01, 0xcb, 0x87, 0x6c, - 0x67, 0x9f, 0x1b, 0x87, 0xb5, 0xb1, 0xc2, 0x4d, 0x7b, 0xb6, 0x3b, 0x79, 0xda, 0x76, 0x3f, 0x04, - 0xd9, 0x96, 0xde, 0xd6, 0xb0, 0xed, 0xbb, 0xc7, 0x74, 0x5e, 0xcb, 0xa8, 0x99, 0x96, 0xde, 0xae, - 0x92, 0xeb, 0x1f, 0xdf, 0x1e, 0x44, 0xe3, 0xf8, 0x0f, 0x49, 0xc8, 0x47, 0x67, 0x36, 0x32, 0x02, - 0x1b, 0xb4, 0x3e, 0x4b, 0xf4, 0xf1, 0x7d, 0xe4, 0xbe, 0x13, 0xde, 0xfc, 0x1a, 0x29, 0xdc, 0xe5, - 0x51, 0x36, 0x49, 0xa9, 0x0c, 0x49, 0x9a, 0x26, 0x79, 0x60, 0x31, 0x9b, 0xcf, 0x33, 0x2a, 0xbf, - 0x42, 0x1b, 0x30, 0x7a, 0xd3, 0xa3, 0xdc, 0xa3, 0x94, 0xfb, 0xd1, 0xfb, 0x73, 0xdf, 0xd8, 0xa7, - 0xe4, 0xd9, 0x1b, 0xfb, 0xda, 0xce, 0xae, 0xba, 0x5d, 0xd9, 0x52, 0x39, 0x1c, 0x9d, 0x87, 0x94, - 0xa5, 0xbf, 0x7c, 0xdc, 0x5d, 0xe2, 0xa9, 0x68, 0xd8, 0xc0, 0x9f, 0x87, 0xd4, 0x1d, 0xac, 0xdf, - 0xea, 0x2e, 0xac, 0x54, 0xf4, 0x63, 0x4c, 0xfd, 0x05, 0x48, 0xd3, 0x78, 0x21, 0x00, 0x1e, 0x31, - 0x79, 0x04, 0x65, 0x20, 0xb5, 0xb6, 0xab, 0x92, 0xf4, 0x97, 0x21, 0xcf, 0xa4, 0xda, 0xde, 0x66, - 0x75, 0xad, 0x2a, 0x27, 0x4a, 0x2b, 0x30, 0xca, 0x82, 0x40, 0x1e, 0x8d, 0x20, 0x0c, 0xf2, 0x08, - 0xbf, 0xe4, 0x1c, 0x92, 0xd0, 0x1e, 0x6e, 0xaf, 0x56, 0x55, 0x39, 0x11, 0xdd, 0x5e, 0x0f, 0xf2, - 0xd1, 0x71, 0xed, 0x27, 0x93, 0x53, 0x7f, 0x29, 0x41, 0x2e, 0x32, 0x7e, 0x91, 0xc6, 0xaf, 0x5b, - 0x96, 0x73, 0x47, 0xd3, 0x2d, 0x53, 0xf7, 0x78, 0x52, 0x00, 0x15, 0x55, 0x88, 0x64, 0xd8, 0x4d, - 0xfb, 0x89, 0x38, 0xff, 0xba, 0x04, 0x72, 0xef, 0xe8, 0xd6, 0xe3, 0xa0, 0xf4, 0x53, 0x75, 0xf0, - 0x35, 0x09, 0x0a, 0xdd, 0xf3, 0x5a, 0x8f, 0x7b, 0x17, 0x7f, 0xaa, 0xee, 0x7d, 0x49, 0x82, 0xf1, - 0xae, 0x29, 0xed, 0xff, 0x95, 0x77, 0xaf, 0x26, 0x61, 0x6a, 0x00, 0x0e, 0x55, 0xf8, 0x38, 0xcb, - 0x26, 0xec, 0xa7, 0x87, 0xb9, 0xd7, 0x3c, 0xe9, 0x96, 0x7b, 0xba, 0xeb, 0xf3, 0xe9, 0xf7, 0x09, - 0x90, 0xcd, 0x3a, 0xb6, 0x7d, 0xb3, 0x61, 0x62, 0x97, 0xbf, 0x82, 0xb3, 0x19, 0x77, 0x22, 0x94, - 0xb3, 0xb7, 0xf0, 0x8f, 0x00, 0x6a, 0x3b, 0x9e, 0xe9, 0x9b, 0xb7, 0xb1, 0x66, 0xda, 0xe2, 0x7d, - 0x9d, 0xcc, 0xbc, 0x29, 0x55, 0x16, 0x9a, 0x4d, 0xdb, 0x0f, 0xac, 0x6d, 0xdc, 0xd4, 0x7b, 0xac, - 0x49, 0xed, 0x4b, 0xaa, 0xb2, 0xd0, 0x04, 0xd6, 0x17, 0x21, 0x5f, 0x77, 0x3a, 0x64, 0x7c, 0x60, - 0x76, 0xa4, 0xd4, 0x4a, 0x6a, 0x8e, 0xc9, 0x02, 0x13, 0x3e, 0xdf, 0x85, 0x07, 0x05, 0x79, 0x35, - 0xc7, 0x64, 0xcc, 0xe4, 0x71, 0x98, 0xd0, 0x9b, 0x4d, 0x97, 0x90, 0x0b, 0x22, 0x36, 0xb4, 0x16, - 0x02, 0x31, 0x35, 0x9c, 0xb9, 0x01, 0x19, 0x11, 0x07, 0xd2, 0xcd, 0x48, 0x24, 0xb4, 0x36, 0x3b, - 0xae, 0x49, 0xcc, 0x65, 0xd5, 0x8c, 0x2d, 0x94, 0x17, 0x21, 0x6f, 0x7a, 0x5a, 0x78, 0x6e, 0x98, - 0x98, 0x4d, 0xcc, 0x65, 0xd4, 0x9c, 0xe9, 0x05, 0x07, 0x45, 0xa5, 0x37, 0x12, 0x50, 0xe8, 0x3e, - 0xf7, 0x44, 0xeb, 0x90, 0xb1, 0x1c, 0x43, 0xa7, 0x89, 0xc0, 0x0e, 0xdd, 0xe7, 0x62, 0x8e, 0x4a, - 0xe7, 0xb7, 0xb8, 0xbd, 0x1a, 0x20, 0x67, 0xfe, 0x56, 0x82, 0x8c, 0x10, 0xa3, 0x73, 0x90, 0x6a, - 0xeb, 0xfe, 0x11, 0xa5, 0x4b, 0xaf, 0x26, 0x64, 0x49, 0xa5, 0xd7, 0x44, 0xee, 0xb5, 0x75, 0x9b, - 0xa6, 0x00, 0x97, 0x93, 0x6b, 0xb2, 0xaf, 0x16, 0xd6, 0xeb, 0x74, 0x1c, 0x76, 0x5a, 0x2d, 0x6c, - 0xfb, 0x9e, 0xd8, 0x57, 0x2e, 0x5f, 0xe3, 0x62, 0xf4, 0x14, 0x4c, 0xfa, 0xae, 0x6e, 0x5a, 0x5d, - 0xb6, 0x29, 0x6a, 0x2b, 0x0b, 0x45, 0x60, 0x5c, 0x86, 0xf3, 0x82, 0xb7, 0x8e, 0x7d, 0xdd, 0x38, - 0xc2, 0xf5, 0x10, 0x34, 0x4a, 0x0f, 0xd5, 0x1e, 0xe4, 0x06, 0xeb, 0x5c, 0x2f, 0xb0, 0xa5, 0xef, - 0x4a, 0x30, 0x29, 0x06, 0xf8, 0x7a, 0x10, 0xac, 0x6d, 0x00, 0xdd, 0xb6, 0x1d, 0x3f, 0x1a, 0xae, - 0xfe, 0x54, 0xee, 0xc3, 0xcd, 0x57, 0x02, 0x90, 0x1a, 0x21, 0x98, 0x69, 0x01, 0x84, 0x9a, 0x53, - 0xc3, 0x76, 0x01, 0x72, 0xfc, 0x50, 0x9b, 0xfe, 0x32, 0xc2, 0xde, 0xfa, 0x80, 0x89, 0xc8, 0xa4, - 0x8f, 0xa6, 0x21, 0x5d, 0xc3, 0x4d, 0xd3, 0xe6, 0x47, 0x6d, 0xec, 0x42, 0x1c, 0xe0, 0xa5, 0x82, - 0x03, 0xbc, 0xd5, 0x4f, 0xc3, 0x94, 0xe1, 0xb4, 0x7a, 0xdd, 0x5d, 0x95, 0x7b, 0xde, 0x3c, 0xbd, - 0xeb, 0xd2, 0xa7, 0x20, 0x9c, 0xce, 0xbe, 0x22, 0x49, 0x5f, 0x4d, 0x24, 0x37, 0xf6, 0x56, 0xbf, - 0x9e, 0x98, 0xd9, 0x60, 0xd0, 0x3d, 0xb1, 0x52, 0x15, 0x37, 0x2c, 0x6c, 0x10, 0xef, 0xe1, 0x07, - 0x1f, 0x86, 0xa7, 0x9b, 0xa6, 0x7f, 0xd4, 0xa9, 0xcd, 0x1b, 0x4e, 0x6b, 0xa1, 0xe9, 0x34, 0x9d, - 0xf0, 0xc7, 0x20, 0x72, 0x45, 0x2f, 0xe8, 0x7f, 0xfc, 0x07, 0xa1, 0x6c, 0x20, 0x9d, 0x89, 0xfd, - 0xf5, 0xa8, 0xbc, 0x03, 0x53, 0xdc, 0x58, 0xa3, 0x27, 0xd2, 0x6c, 0x0e, 0x47, 0xf7, 0x3d, 0x95, - 0x50, 0xbe, 0xf9, 0x0e, 0xed, 0x74, 0xea, 0x24, 0x87, 0x12, 0x1d, 0x9b, 0xd4, 0xcb, 0x2a, 0x3c, - 0xd0, 0xc5, 0xc7, 0x1e, 0x4d, 0xec, 0xc6, 0x30, 0x7e, 0x87, 0x33, 0x4e, 0x45, 0x18, 0xf7, 0x39, - 0xb4, 0xbc, 0x06, 0xe3, 0x67, 0xe1, 0xfa, 0x6b, 0xce, 0x95, 0xc7, 0x51, 0x92, 0x0d, 0x98, 0xa0, - 0x24, 0x46, 0xc7, 0xf3, 0x9d, 0x16, 0xad, 0x7b, 0xf7, 0xa7, 0xf9, 0x9b, 0x77, 0xd8, 0xb3, 0x52, - 0x20, 0xb0, 0xb5, 0x00, 0x55, 0x2e, 0x03, 0x3d, 0x84, 0xaf, 0x63, 0xc3, 0x8a, 0x61, 0x78, 0x93, - 0x3b, 0x12, 0xd8, 0x97, 0x3f, 0x01, 0xd3, 0xe4, 0x7f, 0x5a, 0x96, 0xa2, 0x9e, 0xc4, 0x9f, 0xc1, - 0x28, 0xdf, 0x7d, 0x85, 0x3d, 0x8e, 0x53, 0x01, 0x41, 0xc4, 0xa7, 0xc8, 0x2e, 0x36, 0xb1, 0xef, - 0x63, 0xd7, 0xd3, 0x74, 0x6b, 0x90, 0x7b, 0x91, 0x37, 0x58, 0xe5, 0x8b, 0xef, 0x76, 0xef, 0xe2, - 0x06, 0x43, 0x56, 0x2c, 0xab, 0x7c, 0x08, 0x0f, 0x0e, 0xc8, 0x8a, 0x21, 0x38, 0x5f, 0xe5, 0x9c, - 0xd3, 0x7d, 0x99, 0x41, 0x68, 0xf7, 0x40, 0xc8, 0x83, 0xbd, 0x1c, 0x82, 0xf3, 0x4b, 0x9c, 0x13, - 0x71, 0xac, 0xd8, 0x52, 0xc2, 0x78, 0x03, 0x26, 0x6f, 0x63, 0xb7, 0xe6, 0x78, 0xfc, 0xe0, 0x60, - 0x08, 0xba, 0xd7, 0x38, 0xdd, 0x04, 0x07, 0xd2, 0x63, 0x04, 0xc2, 0x75, 0x15, 0x32, 0x0d, 0xdd, - 0xc0, 0x43, 0x50, 0x7c, 0x99, 0x53, 0x8c, 0x11, 0x7b, 0x02, 0xad, 0x40, 0xbe, 0xe9, 0xf0, 0xce, - 0x14, 0x0f, 0x7f, 0x9d, 0xc3, 0x73, 0x02, 0xc3, 0x29, 0xda, 0x4e, 0xbb, 0x63, 0x91, 0xb6, 0x15, - 0x4f, 0xf1, 0x5b, 0x82, 0x42, 0x60, 0x38, 0xc5, 0x19, 0xc2, 0xfa, 0x15, 0x41, 0xe1, 0x45, 0xe2, - 0xf9, 0x1c, 0xe4, 0x1c, 0xdb, 0x3a, 0x76, 0xec, 0x61, 0x9c, 0xf8, 0x6d, 0xce, 0x00, 0x1c, 0x42, - 0x08, 0xae, 0x41, 0x76, 0xd8, 0x8d, 0xf8, 0x9d, 0x77, 0xc5, 0xe3, 0x21, 0x76, 0x60, 0x03, 0x26, - 0x44, 0x81, 0x32, 0x1d, 0x7b, 0x08, 0x8a, 0xdf, 0xe5, 0x14, 0x85, 0x08, 0x8c, 0x2f, 0xc3, 0xc7, - 0x9e, 0xdf, 0xc4, 0xc3, 0x90, 0xbc, 0x21, 0x96, 0xc1, 0x21, 0x3c, 0x94, 0x35, 0x6c, 0x1b, 0x47, - 0xc3, 0x31, 0x7c, 0x4d, 0x84, 0x52, 0x60, 0x08, 0xc5, 0x1a, 0x8c, 0xb7, 0x74, 0xd7, 0x3b, 0xd2, - 0xad, 0xa1, 0xb6, 0xe3, 0xf7, 0x38, 0x47, 0x3e, 0x00, 0xf1, 0x88, 0x74, 0xec, 0xb3, 0xd0, 0x7c, - 0x5d, 0x44, 0x24, 0x02, 0xe3, 0x8f, 0x9e, 0xe7, 0xd3, 0xb3, 0x99, 0xb3, 0xb0, 0xfd, 0xbe, 0x78, - 0xf4, 0x18, 0x76, 0x3b, 0xca, 0x78, 0x0d, 0xb2, 0x9e, 0xf9, 0xf2, 0x50, 0x34, 0x7f, 0x20, 0x76, - 0x9a, 0x02, 0x08, 0xf8, 0x45, 0x38, 0x3f, 0xb0, 0x4d, 0x0c, 0x41, 0xf6, 0x87, 0x9c, 0xec, 0xdc, - 0x80, 0x56, 0xc1, 0x4b, 0xc2, 0x59, 0x29, 0xff, 0x48, 0x94, 0x04, 0xdc, 0xc3, 0xb5, 0x47, 0x26, - 0x7b, 0x4f, 0x6f, 0x9c, 0x2d, 0x6a, 0x7f, 0x2c, 0xa2, 0xc6, 0xb0, 0x5d, 0x51, 0x3b, 0x80, 0x73, - 0x9c, 0xf1, 0x6c, 0xfb, 0xfa, 0x0d, 0x51, 0x58, 0x19, 0xfa, 0xb0, 0x7b, 0x77, 0x3f, 0x0d, 0x33, - 0x41, 0x38, 0xc5, 0x50, 0xea, 0x69, 0x2d, 0xbd, 0x3d, 0x04, 0xf3, 0x37, 0x39, 0xb3, 0xa8, 0xf8, - 0xc1, 0x54, 0xeb, 0x6d, 0xeb, 0x6d, 0x42, 0xfe, 0x02, 0x28, 0x82, 0xbc, 0x63, 0xbb, 0xd8, 0x70, - 0x9a, 0xb6, 0xf9, 0x32, 0xae, 0x0f, 0x41, 0xfd, 0x27, 0x3d, 0x5b, 0x75, 0x18, 0x81, 0x13, 0xe6, - 0x4d, 0x90, 0x83, 0x59, 0x45, 0x33, 0x5b, 0x6d, 0xc7, 0xf5, 0x63, 0x18, 0xff, 0x54, 0xec, 0x54, - 0x80, 0xdb, 0xa4, 0xb0, 0x72, 0x15, 0x0a, 0xf4, 0x72, 0xd8, 0x94, 0xfc, 0x33, 0x4e, 0x34, 0x1e, - 0xa2, 0x78, 0xe1, 0x30, 0x9c, 0x56, 0x5b, 0x77, 0x87, 0xa9, 0x7f, 0x7f, 0x2e, 0x0a, 0x07, 0x87, - 0xf0, 0xc2, 0xe1, 0x1f, 0xb7, 0x31, 0xe9, 0xf6, 0x43, 0x30, 0x7c, 0x4b, 0x14, 0x0e, 0x81, 0xe1, - 0x14, 0x62, 0x60, 0x18, 0x82, 0xe2, 0x2f, 0x04, 0x85, 0xc0, 0x10, 0x8a, 0x8f, 0x87, 0x8d, 0xd6, - 0xc5, 0x4d, 0xd3, 0xf3, 0x5d, 0x36, 0x0a, 0xdf, 0x9f, 0xea, 0xdb, 0xef, 0x76, 0x0f, 0x61, 0x6a, - 0x04, 0x5a, 0xbe, 0x01, 0x13, 0x3d, 0x23, 0x06, 0x8a, 0xfb, 0x45, 0x5f, 0xf9, 0xcc, 0xfb, 0xbc, - 0x18, 0x75, 0x4f, 0x18, 0xe5, 0x2d, 0xb2, 0xef, 0xdd, 0x73, 0x40, 0x3c, 0xd9, 0x2b, 0xef, 0x07, - 0x5b, 0xdf, 0x35, 0x06, 0x94, 0x9f, 0x87, 0xf1, 0xae, 0x19, 0x20, 0x9e, 0xea, 0xe7, 0x38, 0x55, - 0x3e, 0x3a, 0x02, 0x94, 0x57, 0x20, 0x45, 0xfa, 0x79, 0x3c, 0xfc, 0xe7, 0x39, 0x9c, 0x9a, 0x97, - 0x3f, 0x0a, 0x19, 0xd1, 0xc7, 0xe3, 0xa1, 0xbf, 0xc0, 0xa1, 0x01, 0x84, 0xc0, 0x45, 0x0f, 0x8f, - 0x87, 0xff, 0xa2, 0x80, 0x0b, 0x08, 0x81, 0x0f, 0x1f, 0xc2, 0xbf, 0xfa, 0x5c, 0x8a, 0xd7, 0x61, - 0x11, 0xbb, 0x6b, 0x30, 0xc6, 0x9b, 0x77, 0x3c, 0xfa, 0xb3, 0xfc, 0xe6, 0x02, 0x51, 0xbe, 0x0c, - 0xe9, 0x21, 0x03, 0xfe, 0x4b, 0x1c, 0xca, 0xec, 0xcb, 0x6b, 0x90, 0x8b, 0x34, 0xec, 0x78, 0xf8, - 0x2f, 0x73, 0x78, 0x14, 0x45, 0x5c, 0xe7, 0x0d, 0x3b, 0x9e, 0xe0, 0x57, 0x84, 0xeb, 0x1c, 0x41, - 0xc2, 0x26, 0x7a, 0x75, 0x3c, 0xfa, 0x57, 0x45, 0xd4, 0x05, 0xa4, 0xfc, 0x1c, 0x64, 0x83, 0xfa, - 0x1b, 0x8f, 0xff, 0x35, 0x8e, 0x0f, 0x31, 0x24, 0x02, 0x91, 0xfa, 0x1f, 0x4f, 0xf1, 0x79, 0x11, - 0x81, 0x08, 0x8a, 0x3c, 0x46, 0xbd, 0x3d, 0x3d, 0x9e, 0xe9, 0xd7, 0xc5, 0x63, 0xd4, 0xd3, 0xd2, - 0xc9, 0x6e, 0xd2, 0x32, 0x18, 0x4f, 0xf1, 0x1b, 0x62, 0x37, 0xa9, 0x3d, 0x71, 0xa3, 0xb7, 0x49, - 0xc6, 0x73, 0xfc, 0xa6, 0x70, 0xa3, 0xa7, 0x47, 0x96, 0xf7, 0x00, 0xf5, 0x37, 0xc8, 0x78, 0xbe, - 0x2f, 0x70, 0xbe, 0xc9, 0xbe, 0xfe, 0x58, 0xfe, 0x24, 0x9c, 0x1b, 0xdc, 0x1c, 0xe3, 0x59, 0xbf, - 0xf8, 0x7e, 0xcf, 0xeb, 0x4c, 0xb4, 0x37, 0x96, 0x0f, 0xc2, 0x2a, 0x1b, 0x6d, 0x8c, 0xf1, 0xb4, - 0xaf, 0xbe, 0xdf, 0x5d, 0x68, 0xa3, 0x7d, 0xb1, 0x5c, 0x01, 0x08, 0x7b, 0x52, 0x3c, 0xd7, 0x6b, - 0x9c, 0x2b, 0x02, 0x22, 0x8f, 0x06, 0x6f, 0x49, 0xf1, 0xf8, 0x2f, 0x8b, 0x47, 0x83, 0x23, 0xc8, - 0xa3, 0x21, 0xba, 0x51, 0x3c, 0xfa, 0x75, 0xf1, 0x68, 0x08, 0x48, 0xf9, 0x1a, 0x64, 0xec, 0x8e, - 0x65, 0x91, 0xdc, 0x42, 0xf7, 0xff, 0xc8, 0x46, 0xf9, 0xe7, 0x0f, 0x38, 0x58, 0x00, 0xca, 0x2b, - 0x90, 0xc6, 0xad, 0x1a, 0xae, 0xc7, 0x21, 0xff, 0xe5, 0x03, 0x51, 0x4f, 0x88, 0x75, 0xf9, 0x39, - 0x00, 0xf6, 0x32, 0x4d, 0x7f, 0x63, 0x89, 0xc1, 0xfe, 0xeb, 0x07, 0xfc, 0xf7, 0xfb, 0x10, 0x12, - 0x12, 0xb0, 0xaf, 0x01, 0xee, 0x4f, 0xf0, 0x6e, 0x37, 0x01, 0x7d, 0x01, 0xbf, 0x0a, 0x63, 0x37, - 0x3d, 0xc7, 0xf6, 0xf5, 0x66, 0x1c, 0xfa, 0xdf, 0x38, 0x5a, 0xd8, 0x93, 0x80, 0xb5, 0x1c, 0x17, - 0xfb, 0x7a, 0xd3, 0x8b, 0xc3, 0xfe, 0x3b, 0xc7, 0x06, 0x00, 0x02, 0x36, 0x74, 0xcf, 0x1f, 0x66, - 0xdd, 0xff, 0x21, 0xc0, 0x02, 0x40, 0x9c, 0x26, 0xff, 0xdf, 0xc2, 0xc7, 0x71, 0xd8, 0xf7, 0x84, - 0xd3, 0xdc, 0xbe, 0xfc, 0x51, 0xc8, 0x92, 0x7f, 0xd9, 0x37, 0x2d, 0x31, 0xe0, 0xff, 0xe4, 0xe0, - 0x10, 0x41, 0xee, 0xec, 0xf9, 0x75, 0xdf, 0x8c, 0x0f, 0xf6, 0x7f, 0xf1, 0x9d, 0x16, 0xf6, 0xe5, - 0x0a, 0xe4, 0x3c, 0xbf, 0x5e, 0xef, 0xf0, 0x89, 0x26, 0x06, 0xfe, 0x83, 0x0f, 0x82, 0x97, 0xdc, - 0x00, 0xb3, 0x7a, 0x71, 0xf0, 0x79, 0x1d, 0x6c, 0x38, 0x1b, 0x0e, 0x3b, 0xa9, 0x83, 0xbb, 0x59, - 0x98, 0x35, 0x9c, 0x56, 0xcd, 0xf1, 0x16, 0x58, 0x41, 0x09, 0xca, 0xc9, 0x82, 0x63, 0x73, 0x0c, - 0x4a, 0x3a, 0x36, 0x9e, 0x39, 0xdb, 0xe1, 0x5c, 0xe9, 0x3c, 0xa4, 0xf7, 0x3b, 0xb5, 0xda, 0x31, - 0x92, 0x21, 0xe9, 0x75, 0x6a, 0xfc, 0xdb, 0x0b, 0xf2, 0x6f, 0xe9, 0xed, 0x24, 0x8c, 0x57, 0x2c, - 0xeb, 0xe0, 0xb8, 0x8d, 0xbd, 0x5d, 0x1b, 0xef, 0x36, 0x90, 0x02, 0xa3, 0x74, 0x35, 0xcf, 0x52, - 0x33, 0xe9, 0xfa, 0x88, 0xca, 0xaf, 0x03, 0xcd, 0x22, 0x3d, 0xb6, 0x4c, 0x04, 0x9a, 0xc5, 0x40, - 0xb3, 0xc4, 0x4e, 0x2d, 0x03, 0xcd, 0x52, 0xa0, 0x59, 0xa6, 0x67, 0x97, 0xc9, 0x40, 0xb3, 0x1c, - 0x68, 0x56, 0xe8, 0xd9, 0xfc, 0x78, 0xa0, 0x59, 0x09, 0x34, 0x97, 0xe8, 0x69, 0x7c, 0x2a, 0xd0, - 0x5c, 0x0a, 0x34, 0x97, 0xe9, 0x21, 0xfc, 0x64, 0xa0, 0xb9, 0x1c, 0x68, 0xae, 0xd0, 0x83, 0x77, - 0x14, 0x68, 0xae, 0x04, 0x9a, 0xab, 0xf4, 0x0b, 0x8b, 0xb1, 0x40, 0x73, 0x15, 0xcd, 0xc0, 0x18, - 0x5b, 0xd9, 0x33, 0xf4, 0x87, 0xcd, 0x89, 0xeb, 0x23, 0xaa, 0x10, 0x84, 0xba, 0x67, 0xe9, 0x57, - 0x14, 0xa3, 0xa1, 0xee, 0xd9, 0x50, 0xb7, 0x48, 0x3f, 0x27, 0x96, 0x43, 0xdd, 0x62, 0xa8, 0x5b, - 0x52, 0xc6, 0x49, 0x12, 0x84, 0xba, 0xa5, 0x50, 0xb7, 0xac, 0x14, 0xc8, 0x0e, 0x84, 0xba, 0xe5, - 0x50, 0xb7, 0xa2, 0x4c, 0xcc, 0x4a, 0x73, 0xf9, 0x50, 0xb7, 0x82, 0x9e, 0x86, 0x9c, 0xd7, 0xa9, - 0x69, 0xfc, 0x77, 0x78, 0xfa, 0xb5, 0x46, 0x6e, 0x11, 0xe6, 0x49, 0x4e, 0xd0, 0x6d, 0xbd, 0x3e, - 0xa2, 0x82, 0xd7, 0xa9, 0xf1, 0x2a, 0xb9, 0x9a, 0x07, 0x7a, 0xa8, 0xa0, 0xd1, 0xcf, 0x14, 0x4b, - 0x6f, 0x49, 0x90, 0x3d, 0xb8, 0xe3, 0xd0, 0x9f, 0x35, 0xbd, 0xff, 0xe3, 0xcd, 0x15, 0x4e, 0x2f, - 0x2d, 0x2b, 0x25, 0xba, 0x20, 0x49, 0x15, 0x82, 0x50, 0xb7, 0xa2, 0x3c, 0x42, 0x17, 0x14, 0xe8, - 0x56, 0xd0, 0x02, 0xe4, 0x23, 0x0b, 0x5a, 0xa4, 0x1f, 0x60, 0x74, 0xaf, 0x48, 0x52, 0x73, 0xe1, - 0x8a, 0x16, 0x57, 0xd3, 0x40, 0xd2, 0x9e, 0xfc, 0xf1, 0xef, 0x38, 0xa5, 0xcf, 0x27, 0x20, 0xc7, - 0xce, 0x21, 0xe9, 0xaa, 0xc8, 0xad, 0xd8, 0x5c, 0x7e, 0xcc, 0xdd, 0x18, 0x51, 0x85, 0x00, 0xa9, - 0x00, 0xcc, 0x94, 0x64, 0x38, 0xf3, 0x64, 0xf5, 0x99, 0xbf, 0x7f, 0xfb, 0xc2, 0x47, 0x4e, 0x7d, - 0x82, 0x48, 0xec, 0x16, 0x58, 0x95, 0x9d, 0x3f, 0x34, 0x6d, 0xff, 0xd9, 0xc5, 0x2b, 0x24, 0xc0, - 0x21, 0x0b, 0x3a, 0x84, 0xcc, 0x9a, 0xee, 0xd1, 0x8f, 0xb0, 0xa8, 0xeb, 0xa9, 0xd5, 0xcb, 0xff, - 0xf3, 0xf6, 0x85, 0xa5, 0x18, 0x46, 0x5e, 0x00, 0xe7, 0xb7, 0x8f, 0x09, 0xeb, 0xa5, 0x65, 0x02, - 0xbf, 0x3e, 0xa2, 0x06, 0x54, 0x68, 0x51, 0xb8, 0xba, 0xa3, 0xb7, 0xd8, 0x97, 0x26, 0xc9, 0x55, - 0xf9, 0xe4, 0xed, 0x0b, 0xf9, 0xed, 0xe3, 0x50, 0x1e, 0xba, 0x42, 0xae, 0x56, 0x33, 0x30, 0xca, - 0x5c, 0x5d, 0x5d, 0x7f, 0xf3, 0x5e, 0x71, 0xe4, 0xad, 0x7b, 0xc5, 0x91, 0xbf, 0xbb, 0x57, 0x1c, - 0xf9, 0xde, 0xbd, 0xa2, 0xf4, 0xde, 0xbd, 0xa2, 0xf4, 0xc3, 0x7b, 0x45, 0xe9, 0xee, 0x49, 0x51, - 0xfa, 0xda, 0x49, 0x51, 0xfa, 0xc6, 0x49, 0x51, 0xfa, 0xf6, 0x49, 0x51, 0x7a, 0xf3, 0xa4, 0x38, - 0xf2, 0xd6, 0x49, 0x71, 0xe4, 0x7b, 0x27, 0x45, 0xe9, 0xfb, 0x27, 0xc5, 0x91, 0xf7, 0x4e, 0x8a, - 0xd2, 0x0f, 0x4f, 0x8a, 0xd2, 0xdd, 0x7f, 0x2c, 0x8e, 0xfc, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x8d, 0x06, 0x7f, 0x2b, 0xfd, 0x31, 0x00, 0x00, + // 4041 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x82, 0x20, 0x79, 0x17, 0x2b, 0xc7, 0x5c, 0x2d, 0x6d, + 0xc7, 0xb2, 0x1d, 0x4b, 0xb6, 0x2e, 0x7b, 0xe1, 0x36, 0xf1, 0x90, 0x14, 0x57, 0xab, 0xad, 0x24, + 0x2a, 0xa0, 0x14, 0xaf, 0xd3, 0x07, 0x0c, 0x04, 0xfe, 0xa4, 0xb0, 0x0b, 0x02, 0x0c, 0x00, 0xee, + 0x5a, 0x7e, 0xda, 0x8e, 0x7b, 0x99, 0x4c, 0xa7, 0xb7, 0xb4, 0x33, 0x4d, 0x5c, 0xc7, 0x6d, 0x33, + 0xd3, 0x3a, 0x4d, 0x7a, 0x49, 0x7a, 0x49, 0x33, 0x7d, 0xea, 0x4b, 0x5a, 0x3f, 0x75, 0x9c, 0xb7, + 0x4e, 0xa7, 0xe3, 0xf1, 0x2a, 0x9e, 0x69, 0xda, 0xba, 0xad, 0xdb, 0x78, 0xa6, 0x99, 0xfa, 0xa5, + 0xf3, 0xdf, 0x00, 0xf0, 0xa2, 0x05, 0x95, 0xa9, 0x93, 0x27, 0x09, 0xe7, 0x9c, 0xef, 0xc3, 0xc1, + 0xf9, 0xcf, 0x7f, 0xce, 0xc1, 0x4f, 0xc0, 0xf7, 0xd6, 0x60, 0xbe, 0x65, 0xdb, 0x2d, 0x13, 0x2d, + 0x75, 0x1c, 0xdb, 0xb3, 0x0f, 0xba, 0xcd, 0xa5, 0x06, 0x72, 0x75, 0xc7, 0xe8, 0x78, 0xb6, 0xb3, + 0x48, 0x64, 0xd2, 0x14, 0xb5, 0x58, 0xe4, 0x16, 0x85, 0x6d, 0x98, 0xbe, 0x66, 0x98, 0x68, 0xdd, + 0x37, 0xac, 0x23, 0x4f, 0xba, 0x0c, 0x89, 0xa6, 0x61, 0x22, 0x59, 0x98, 0x8f, 0x2f, 0x64, 0x96, + 0x1f, 0x5b, 0xec, 0x03, 0x2d, 0xf6, 0x22, 0x76, 0xb1, 0x58, 0x21, 0x88, 0xc2, 0xbb, 0x09, 0x98, + 0x19, 0xa2, 0x95, 0x24, 0x48, 0x58, 0x5a, 0x1b, 0x33, 0x0a, 0x0b, 0x69, 0x85, 0xfc, 0x2f, 0xc9, + 0x30, 0xd1, 0xd1, 0xf4, 0xdb, 0x5a, 0x0b, 0xc9, 0x31, 0x22, 0xe6, 0x97, 0x52, 0x1e, 0xa0, 0x81, + 0x3a, 0xc8, 0x6a, 0x20, 0x4b, 0x3f, 0x92, 0xe3, 0xf3, 0xf1, 0x85, 0xb4, 0x12, 0x92, 0x48, 0x4f, + 0xc3, 0x74, 0xa7, 0x7b, 0x60, 0x1a, 0xba, 0x1a, 0x32, 0x83, 0xf9, 0xf8, 0x42, 0x52, 0x11, 0xa9, + 0x62, 0x3d, 0x30, 0x7e, 0x02, 0xa6, 0xee, 0x22, 0xed, 0x76, 0xd8, 0x34, 0x43, 0x4c, 0x73, 0x58, + 0x1c, 0x32, 0xac, 0x40, 0xb6, 0x8d, 0x5c, 0x57, 0x6b, 0x21, 0xd5, 0x3b, 0xea, 0x20, 0x39, 0x41, + 0x9e, 0x7e, 0x7e, 0xe0, 0xe9, 0xfb, 0x9f, 0x3c, 0xc3, 0x50, 0x7b, 0x47, 0x1d, 0x24, 0x95, 0x20, + 0x8d, 0xac, 0x6e, 0x9b, 0x32, 0x24, 0x4f, 0x88, 0x5f, 0xd5, 0xea, 0xb6, 0xfb, 0x59, 0x52, 0x18, + 0xc6, 0x28, 0x26, 0x5c, 0xe4, 0xdc, 0x31, 0x74, 0x24, 0x8f, 0x13, 0x82, 0x27, 0x06, 0x08, 0xea, + 0x54, 0xdf, 0xcf, 0xc1, 0x71, 0x52, 0x05, 0xd2, 0xe8, 0x25, 0x0f, 0x59, 0xae, 0x61, 0x5b, 0xf2, + 0x04, 0x21, 0x79, 0x7c, 0xc8, 0x2a, 0x22, 0xb3, 0xd1, 0x4f, 0x11, 0xe0, 0xa4, 0x8b, 0x30, 0x61, + 0x77, 0x3c, 0xc3, 0xb6, 0x5c, 0x39, 0x35, 0x2f, 0x2c, 0x64, 0x96, 0x3f, 0x36, 0x34, 0x11, 0x6a, + 0xd4, 0x46, 0xe1, 0xc6, 0xd2, 0x26, 0x88, 0xae, 0xdd, 0x75, 0x74, 0xa4, 0xea, 0x76, 0x03, 0xa9, + 0x86, 0xd5, 0xb4, 0xe5, 0x34, 0x21, 0x38, 0x3f, 0xf8, 0x20, 0xc4, 0xb0, 0x62, 0x37, 0xd0, 0xa6, + 0xd5, 0xb4, 0x95, 0x9c, 0xdb, 0x73, 0x2d, 0x9d, 0x81, 0x71, 0xf7, 0xc8, 0xf2, 0xb4, 0x97, 0xe4, + 0x2c, 0xc9, 0x10, 0x76, 0x55, 0xf8, 0x9f, 0x24, 0x4c, 0x8d, 0x92, 0x62, 0x57, 0x21, 0xd9, 0xc4, + 0x4f, 0x29, 0xc7, 0x4e, 0x13, 0x03, 0x8a, 0xe9, 0x0d, 0xe2, 0xf8, 0x8f, 0x18, 0xc4, 0x12, 0x64, + 0x2c, 0xe4, 0x7a, 0xa8, 0x41, 0x33, 0x22, 0x3e, 0x62, 0x4e, 0x01, 0x05, 0x0d, 0xa6, 0x54, 0xe2, + 0x47, 0x4a, 0xa9, 0x9b, 0x30, 0xe5, 0xbb, 0xa4, 0x3a, 0x9a, 0xd5, 0xe2, 0xb9, 0xb9, 0x14, 0xe5, + 0xc9, 0x62, 0x95, 0xe3, 0x14, 0x0c, 0x53, 0x72, 0xa8, 0xe7, 0x5a, 0x5a, 0x07, 0xb0, 0x2d, 0x64, + 0x37, 0xd5, 0x06, 0xd2, 0x4d, 0x39, 0x75, 0x42, 0x94, 0x6a, 0xd8, 0x64, 0x20, 0x4a, 0x36, 0x95, + 0xea, 0xa6, 0x74, 0x25, 0x48, 0xb5, 0x89, 0x13, 0x32, 0x65, 0x9b, 0x6e, 0xb2, 0x81, 0x6c, 0xdb, + 0x87, 0x9c, 0x83, 0x70, 0xde, 0xa3, 0x06, 0x7b, 0xb2, 0x34, 0x71, 0x62, 0x31, 0xf2, 0xc9, 0x14, + 0x06, 0xa3, 0x0f, 0x36, 0xe9, 0x84, 0x2f, 0xa5, 0x47, 0xc1, 0x17, 0xa8, 0x24, 0xad, 0x80, 0x54, + 0xa1, 0x2c, 0x17, 0xee, 0x68, 0x6d, 0x34, 0x77, 0x19, 0x72, 0xbd, 0xe1, 0x91, 0x66, 0x21, 0xe9, + 0x7a, 0x9a, 0xe3, 0x91, 0x2c, 0x4c, 0x2a, 0xf4, 0x42, 0x12, 0x21, 0x8e, 0xac, 0x06, 0xa9, 0x72, + 0x49, 0x05, 0xff, 0x3b, 0x77, 0x09, 0x26, 0x7b, 0x6e, 0x3f, 0x2a, 0xb0, 0xf0, 0xc5, 0x71, 0x98, + 0x1d, 0x96, 0x73, 0x43, 0xd3, 0xff, 0x0c, 0x8c, 0x5b, 0xdd, 0xf6, 0x01, 0x72, 0xe4, 0x38, 0x61, + 0x60, 0x57, 0x52, 0x09, 0x92, 0xa6, 0x76, 0x80, 0x4c, 0x39, 0x31, 0x2f, 0x2c, 0xe4, 0x96, 0x9f, + 0x1e, 0x29, 0xab, 0x17, 0xb7, 0x30, 0x44, 0xa1, 0x48, 0xe9, 0x53, 0x90, 0x60, 0x25, 0x0e, 0x33, + 0x3c, 0x35, 0x1a, 0x03, 0xce, 0x45, 0x85, 0xe0, 0xa4, 0x87, 0x21, 0x8d, 0xff, 0xd2, 0xd8, 0x8e, + 0x13, 0x9f, 0x53, 0x58, 0x80, 0xe3, 0x2a, 0xcd, 0x41, 0x8a, 0xa4, 0x59, 0x03, 0xf1, 0xd6, 0xe0, + 0x5f, 0xe3, 0x85, 0x69, 0xa0, 0xa6, 0xd6, 0x35, 0x3d, 0xf5, 0x8e, 0x66, 0x76, 0x11, 0x49, 0x98, + 0xb4, 0x92, 0x65, 0xc2, 0xcf, 0x60, 0x99, 0x74, 0x1e, 0x32, 0x34, 0x2b, 0x0d, 0xab, 0x81, 0x5e, + 0x22, 0xd5, 0x27, 0xa9, 0xd0, 0x44, 0xdd, 0xc4, 0x12, 0x7c, 0xfb, 0x5b, 0xae, 0x6d, 0xf1, 0xa5, + 0x25, 0xb7, 0xc0, 0x02, 0x72, 0xfb, 0x4b, 0xfd, 0x85, 0xef, 0x91, 0xe1, 0x8f, 0xd7, 0x9f, 0x8b, + 0x85, 0x6f, 0xc5, 0x20, 0x41, 0xf6, 0xdb, 0x14, 0x64, 0xf6, 0x5e, 0xdc, 0xad, 0xaa, 0xeb, 0xb5, + 0xfd, 0xf2, 0x56, 0x55, 0x14, 0xa4, 0x1c, 0x00, 0x11, 0x5c, 0xdb, 0xaa, 0x95, 0xf6, 0xc4, 0x98, + 0x7f, 0xbd, 0xb9, 0xb3, 0x77, 0x71, 0x55, 0x8c, 0xfb, 0x80, 0x7d, 0x2a, 0x48, 0x84, 0x0d, 0x56, + 0x96, 0xc5, 0xa4, 0x24, 0x42, 0x96, 0x12, 0x6c, 0xde, 0xac, 0xae, 0x5f, 0x5c, 0x15, 0xc7, 0x7b, + 0x25, 0x2b, 0xcb, 0xe2, 0x84, 0x34, 0x09, 0x69, 0x22, 0x29, 0xd7, 0x6a, 0x5b, 0x62, 0xca, 0xe7, + 0xac, 0xef, 0x29, 0x9b, 0x3b, 0x1b, 0x62, 0xda, 0xe7, 0xdc, 0x50, 0x6a, 0xfb, 0xbb, 0x22, 0xf8, + 0x0c, 0xdb, 0xd5, 0x7a, 0xbd, 0xb4, 0x51, 0x15, 0x33, 0xbe, 0x45, 0xf9, 0xc5, 0xbd, 0x6a, 0x5d, + 0xcc, 0xf6, 0xb8, 0xb5, 0xb2, 0x2c, 0x4e, 0xfa, 0xb7, 0xa8, 0xee, 0xec, 0x6f, 0x8b, 0x39, 0x69, + 0x1a, 0x26, 0xe9, 0x2d, 0xb8, 0x13, 0x53, 0x7d, 0xa2, 0x8b, 0xab, 0xa2, 0x18, 0x38, 0x42, 0x59, + 0xa6, 0x7b, 0x04, 0x17, 0x57, 0x45, 0xa9, 0x50, 0x81, 0x24, 0xc9, 0x2e, 0x49, 0x82, 0xdc, 0x56, + 0xa9, 0x5c, 0xdd, 0x52, 0x6b, 0xbb, 0x7b, 0x9b, 0xb5, 0x9d, 0xd2, 0x96, 0x28, 0x04, 0x32, 0xa5, + 0xfa, 0xe9, 0xfd, 0x4d, 0xa5, 0xba, 0x2e, 0xc6, 0xc2, 0xb2, 0xdd, 0x6a, 0x69, 0xaf, 0xba, 0x2e, + 0xc6, 0x0b, 0x3a, 0xcc, 0x0e, 0xab, 0x33, 0x43, 0x77, 0x46, 0x68, 0x89, 0x63, 0x27, 0x2c, 0x31, + 0xe1, 0x1a, 0x58, 0xe2, 0xaf, 0x08, 0x30, 0x33, 0xa4, 0xd6, 0x0e, 0xbd, 0xc9, 0xf3, 0x90, 0xa4, + 0x29, 0x4a, 0xbb, 0xcf, 0x93, 0x43, 0x8b, 0x36, 0x49, 0xd8, 0x81, 0x0e, 0x44, 0x70, 0xe1, 0x0e, + 0x1c, 0x3f, 0xa1, 0x03, 0x63, 0x8a, 0x01, 0x27, 0x5f, 0x11, 0x40, 0x3e, 0x89, 0x3b, 0xa2, 0x50, + 0xc4, 0x7a, 0x0a, 0xc5, 0xd5, 0x7e, 0x07, 0x2e, 0x9c, 0xfc, 0x0c, 0x03, 0x5e, 0xbc, 0x21, 0xc0, + 0x99, 0xe1, 0x83, 0xca, 0x50, 0x1f, 0x3e, 0x05, 0xe3, 0x6d, 0xe4, 0x1d, 0xda, 0xbc, 0x59, 0x7f, + 0x7c, 0x48, 0x0b, 0xc0, 0xea, 0xfe, 0x58, 0x31, 0x54, 0xb8, 0x87, 0xc4, 0x4f, 0x9a, 0x36, 0xa8, + 0x37, 0x03, 0x9e, 0x7e, 0x3e, 0x06, 0x0f, 0x0d, 0x25, 0x1f, 0xea, 0xe8, 0x23, 0x00, 0x86, 0xd5, + 0xe9, 0x7a, 0xb4, 0x21, 0xd3, 0xfa, 0x94, 0x26, 0x12, 0xb2, 0xf7, 0x71, 0xed, 0xe9, 0x7a, 0xbe, + 0x3e, 0x4e, 0xf4, 0x40, 0x45, 0xc4, 0xe0, 0x72, 0xe0, 0x68, 0x82, 0x38, 0x9a, 0x3f, 0xe1, 0x49, + 0x07, 0x7a, 0xdd, 0xb3, 0x20, 0xea, 0xa6, 0x81, 0x2c, 0x4f, 0x75, 0x3d, 0x07, 0x69, 0x6d, 0xc3, + 0x6a, 0x91, 0x02, 0x9c, 0x2a, 0x26, 0x9b, 0x9a, 0xe9, 0x22, 0x65, 0x8a, 0xaa, 0xeb, 0x5c, 0x8b, + 0x11, 0xa4, 0xcb, 0x38, 0x21, 0xc4, 0x78, 0x0f, 0x82, 0xaa, 0x7d, 0x44, 0xe1, 0xeb, 0x13, 0x90, + 0x09, 0x8d, 0x75, 0xd2, 0x05, 0xc8, 0xde, 0xd2, 0xee, 0x68, 0x2a, 0x1f, 0xd5, 0x69, 0x24, 0x32, + 0x58, 0xb6, 0xcb, 0xc6, 0xf5, 0x67, 0x61, 0x96, 0x98, 0xd8, 0x5d, 0x0f, 0x39, 0xaa, 0x6e, 0x6a, + 0xae, 0x4b, 0x82, 0x96, 0x22, 0xa6, 0x12, 0xd6, 0xd5, 0xb0, 0xaa, 0xc2, 0x35, 0xd2, 0x1a, 0xcc, + 0x10, 0x44, 0xbb, 0x6b, 0x7a, 0x46, 0xc7, 0x44, 0x2a, 0x7e, 0x79, 0x70, 0x49, 0x21, 0xf6, 0x3d, + 0x9b, 0xc6, 0x16, 0xdb, 0xcc, 0x00, 0x7b, 0xe4, 0x4a, 0xeb, 0xf0, 0x08, 0x81, 0xb5, 0x90, 0x85, + 0x1c, 0xcd, 0x43, 0x2a, 0xfa, 0x5c, 0x57, 0x33, 0x5d, 0x55, 0xb3, 0x1a, 0xea, 0xa1, 0xe6, 0x1e, + 0xca, 0xb3, 0x98, 0xa0, 0x1c, 0x93, 0x05, 0xe5, 0x1c, 0x36, 0xdc, 0x60, 0x76, 0x55, 0x62, 0x56, + 0xb2, 0x1a, 0xd7, 0x35, 0xf7, 0x50, 0x2a, 0xc2, 0x19, 0xc2, 0xe2, 0x7a, 0x8e, 0x61, 0xb5, 0x54, + 0xfd, 0x10, 0xe9, 0xb7, 0xd5, 0xae, 0xd7, 0xbc, 0x2c, 0x3f, 0x1c, 0xbe, 0x3f, 0xf1, 0xb0, 0x4e, + 0x6c, 0x2a, 0xd8, 0x64, 0xdf, 0x6b, 0x5e, 0x96, 0xea, 0x90, 0xc5, 0x8b, 0xd1, 0x36, 0x5e, 0x46, + 0x6a, 0xd3, 0x76, 0x48, 0x67, 0xc9, 0x0d, 0xd9, 0xd9, 0xa1, 0x08, 0x2e, 0xd6, 0x18, 0x60, 0xdb, + 0x6e, 0xa0, 0x62, 0xb2, 0xbe, 0x5b, 0xad, 0xae, 0x2b, 0x19, 0xce, 0x72, 0xcd, 0x76, 0x70, 0x42, + 0xb5, 0x6c, 0x3f, 0xc0, 0x19, 0x9a, 0x50, 0x2d, 0x9b, 0x87, 0x77, 0x0d, 0x66, 0x74, 0x9d, 0x3e, + 0xb3, 0xa1, 0xab, 0x6c, 0xc4, 0x77, 0x65, 0xb1, 0x27, 0x58, 0xba, 0xbe, 0x41, 0x0d, 0x58, 0x8e, + 0xbb, 0xd2, 0x15, 0x78, 0x28, 0x08, 0x56, 0x18, 0x38, 0x3d, 0xf0, 0x94, 0xfd, 0xd0, 0x35, 0x98, + 0xe9, 0x1c, 0x0d, 0x02, 0xa5, 0x9e, 0x3b, 0x76, 0x8e, 0xfa, 0x61, 0x8f, 0x93, 0xd7, 0x36, 0x07, + 0xe9, 0x9a, 0x87, 0x1a, 0xf2, 0xd9, 0xb0, 0x75, 0x48, 0x21, 0x2d, 0x81, 0xa8, 0xeb, 0x2a, 0xb2, + 0xb4, 0x03, 0x13, 0xa9, 0x9a, 0x83, 0x2c, 0xcd, 0x95, 0xcf, 0x87, 0x8d, 0x73, 0xba, 0x5e, 0x25, + 0xda, 0x12, 0x51, 0x4a, 0x4f, 0xc1, 0xb4, 0x7d, 0x70, 0x4b, 0xa7, 0x99, 0xa5, 0x76, 0x1c, 0xd4, + 0x34, 0x5e, 0x92, 0x1f, 0x23, 0x61, 0x9a, 0xc2, 0x0a, 0x92, 0x57, 0xbb, 0x44, 0x2c, 0x3d, 0x09, + 0xa2, 0xee, 0x1e, 0x6a, 0x4e, 0x87, 0xb4, 0x76, 0xb7, 0xa3, 0xe9, 0x48, 0x7e, 0x9c, 0x9a, 0x52, + 0xf9, 0x0e, 0x17, 0xe3, 0xcc, 0x76, 0xef, 0x1a, 0x4d, 0x8f, 0x33, 0x3e, 0x41, 0x33, 0x9b, 0xc8, + 0x18, 0xdb, 0x4d, 0x98, 0xed, 0x5a, 0x86, 0xe5, 0x21, 0xa7, 0xe3, 0x20, 0x3c, 0xc4, 0xd3, 0x9d, + 0x28, 0xff, 0xf3, 0xc4, 0x09, 0x63, 0xf8, 0x7e, 0xd8, 0x9a, 0x26, 0x80, 0x32, 0xd3, 0x1d, 0x14, + 0x16, 0x8a, 0x90, 0x0d, 0xe7, 0x85, 0x94, 0x06, 0x9a, 0x19, 0xa2, 0x80, 0x7b, 0x6c, 0xa5, 0xb6, + 0x8e, 0xbb, 0xe3, 0x67, 0xab, 0x62, 0x0c, 0x77, 0xe9, 0xad, 0xcd, 0xbd, 0xaa, 0xaa, 0xec, 0xef, + 0xec, 0x6d, 0x6e, 0x57, 0xc5, 0xf8, 0x53, 0xe9, 0xd4, 0xf7, 0x27, 0xc4, 0x7b, 0xf7, 0xee, 0xdd, + 0x8b, 0x15, 0xbe, 0x13, 0x83, 0x5c, 0xef, 0x64, 0x2c, 0xfd, 0x14, 0x9c, 0xe5, 0xaf, 0xb1, 0x2e, + 0xf2, 0xd4, 0xbb, 0x86, 0x43, 0x52, 0xb5, 0xad, 0xd1, 0xd9, 0xd2, 0x8f, 0xf2, 0x2c, 0xb3, 0xaa, + 0x23, 0xef, 0x05, 0xc3, 0xc1, 0x89, 0xd8, 0xd6, 0x3c, 0x69, 0x0b, 0xce, 0x5b, 0xb6, 0xea, 0x7a, + 0x9a, 0xd5, 0xd0, 0x9c, 0x86, 0x1a, 0x1c, 0x20, 0xa8, 0x9a, 0xae, 0x23, 0xd7, 0xb5, 0x69, 0x8b, + 0xf0, 0x59, 0x3e, 0x66, 0xd9, 0x75, 0x66, 0x1c, 0xd4, 0xce, 0x12, 0x33, 0xed, 0xcb, 0x88, 0xf8, + 0x49, 0x19, 0xf1, 0x30, 0xa4, 0xdb, 0x5a, 0x47, 0x45, 0x96, 0xe7, 0x1c, 0x91, 0x79, 0x2e, 0xa5, + 0xa4, 0xda, 0x5a, 0xa7, 0x8a, 0xaf, 0x3f, 0xba, 0x35, 0x08, 0xc7, 0xf1, 0x9f, 0xe2, 0x90, 0x0d, + 0xcf, 0x74, 0x78, 0x44, 0xd6, 0x49, 0xfd, 0x16, 0xc8, 0x0e, 0x7f, 0xf4, 0x81, 0x13, 0xe0, 0x62, + 0x05, 0x17, 0xf6, 0xe2, 0x38, 0x9d, 0xb4, 0x14, 0x8a, 0xc4, 0x4d, 0x15, 0xef, 0x69, 0x44, 0xe7, + 0xf7, 0x94, 0xc2, 0xae, 0xa4, 0x0d, 0x18, 0xbf, 0xe5, 0x12, 0xee, 0x71, 0xc2, 0xfd, 0xd8, 0x83, + 0xb9, 0x6f, 0xd4, 0x09, 0x79, 0xfa, 0x46, 0x5d, 0xdd, 0xa9, 0x29, 0xdb, 0xa5, 0x2d, 0x85, 0xc1, + 0xa5, 0x73, 0x90, 0x30, 0xb5, 0x97, 0x8f, 0x7a, 0x5b, 0x00, 0x11, 0x8d, 0x1a, 0xf8, 0x73, 0x90, + 0xb8, 0x8b, 0xb4, 0xdb, 0xbd, 0x85, 0x97, 0x88, 0x3e, 0xc2, 0xd4, 0x5f, 0x82, 0x24, 0x89, 0x97, + 0x04, 0xc0, 0x22, 0x26, 0x8e, 0x49, 0x29, 0x48, 0x54, 0x6a, 0x0a, 0x4e, 0x7f, 0x11, 0xb2, 0x54, + 0xaa, 0xee, 0x6e, 0x56, 0x2b, 0x55, 0x31, 0x56, 0x58, 0x83, 0x71, 0x1a, 0x04, 0xbc, 0x35, 0xfc, + 0x30, 0x88, 0x63, 0xec, 0x92, 0x71, 0x08, 0x5c, 0xbb, 0xbf, 0x5d, 0xae, 0x2a, 0x62, 0x2c, 0xbc, + 0xbc, 0x2e, 0x64, 0xc3, 0xe3, 0xdc, 0x8f, 0x27, 0xa7, 0xfe, 0x5a, 0x80, 0x4c, 0x68, 0x3c, 0xc3, + 0x83, 0x81, 0x66, 0x9a, 0xf6, 0x5d, 0x55, 0x33, 0x0d, 0xcd, 0x65, 0x49, 0x01, 0x44, 0x54, 0xc2, + 0x92, 0x51, 0x17, 0xed, 0xc7, 0xe2, 0xfc, 0xeb, 0x02, 0x88, 0xfd, 0xa3, 0x5d, 0x9f, 0x83, 0xc2, + 0x4f, 0xd4, 0xc1, 0xd7, 0x04, 0xc8, 0xf5, 0xce, 0x73, 0x7d, 0xee, 0x5d, 0xf8, 0x89, 0xba, 0xf7, + 0x4e, 0x0c, 0x26, 0x7b, 0xa6, 0xb8, 0x51, 0xbd, 0xfb, 0x1c, 0x4c, 0x1b, 0x0d, 0xd4, 0xee, 0xd8, + 0x1e, 0xb2, 0xf4, 0x23, 0xd5, 0x44, 0x77, 0x90, 0x29, 0x17, 0x48, 0xa1, 0x58, 0x7a, 0xf0, 0x9c, + 0xb8, 0xb8, 0x19, 0xe0, 0xb6, 0x30, 0xac, 0x38, 0xb3, 0xb9, 0x5e, 0xdd, 0xde, 0xad, 0xed, 0x55, + 0x77, 0x2a, 0x2f, 0xaa, 0xfb, 0x3b, 0x3f, 0xbd, 0x53, 0x7b, 0x61, 0x47, 0x11, 0x8d, 0x3e, 0xb3, + 0x8f, 0x70, 0xab, 0xef, 0x82, 0xd8, 0xef, 0x94, 0x74, 0x16, 0x86, 0xb9, 0x25, 0x8e, 0x49, 0x33, + 0x30, 0xb5, 0x53, 0x53, 0xeb, 0x9b, 0xeb, 0x55, 0xb5, 0x7a, 0xed, 0x5a, 0xb5, 0xb2, 0x57, 0xa7, + 0x2f, 0xce, 0xbe, 0xf5, 0x5e, 0xef, 0xa6, 0x7e, 0x35, 0x0e, 0x33, 0x43, 0x3c, 0x91, 0x4a, 0x6c, + 0x66, 0xa7, 0xaf, 0x11, 0xcf, 0x8c, 0xe2, 0xfd, 0x22, 0x9e, 0x0a, 0x76, 0x35, 0xc7, 0x63, 0x23, + 0xfe, 0x93, 0x80, 0xa3, 0x64, 0x79, 0x46, 0xd3, 0x40, 0x0e, 0x3b, 0x67, 0xa0, 0x83, 0xfc, 0x54, + 0x20, 0xa7, 0x47, 0x0d, 0x9f, 0x00, 0xa9, 0x63, 0xbb, 0x86, 0x67, 0xdc, 0x41, 0xaa, 0x61, 0xf1, + 0x43, 0x09, 0x3c, 0xd8, 0x27, 0x14, 0x91, 0x6b, 0x36, 0x2d, 0xcf, 0xb7, 0xb6, 0x50, 0x4b, 0xeb, + 0xb3, 0xc6, 0x05, 0x3c, 0xae, 0x88, 0x5c, 0xe3, 0x5b, 0x5f, 0x80, 0x6c, 0xc3, 0xee, 0xe2, 0x31, + 0x89, 0xda, 0xe1, 0x7e, 0x21, 0x28, 0x19, 0x2a, 0xf3, 0x4d, 0xd8, 0x1c, 0x1b, 0x9c, 0x86, 0x64, + 0x95, 0x0c, 0x95, 0x51, 0x93, 0x27, 0x60, 0x4a, 0x6b, 0xb5, 0x1c, 0x4c, 0xce, 0x89, 0xe8, 0x64, + 0x9e, 0xf3, 0xc5, 0xc4, 0x70, 0xee, 0x06, 0xa4, 0x78, 0x1c, 0x70, 0x4b, 0xc6, 0x91, 0x50, 0x3b, + 0xf4, 0x4c, 0x2a, 0xb6, 0x90, 0x56, 0x52, 0x16, 0x57, 0x5e, 0x80, 0xac, 0xe1, 0xaa, 0xc1, 0xe1, + 0x68, 0x6c, 0x3e, 0xb6, 0x90, 0x52, 0x32, 0x86, 0xeb, 0x9f, 0x86, 0x15, 0xde, 0x88, 0x41, 0xae, + 0xf7, 0x70, 0x57, 0x5a, 0x87, 0x94, 0x69, 0xeb, 0x1a, 0x49, 0x2d, 0xfa, 0xcb, 0xc2, 0x42, 0xc4, + 0x79, 0xf0, 0xe2, 0x16, 0xb3, 0x57, 0x7c, 0xe4, 0xdc, 0xdf, 0x0b, 0x90, 0xe2, 0x62, 0xe9, 0x0c, + 0x24, 0x3a, 0x9a, 0x77, 0x48, 0xe8, 0x92, 0xe5, 0x98, 0x28, 0x28, 0xe4, 0x1a, 0xcb, 0xdd, 0x8e, + 0x66, 0x91, 0x14, 0x60, 0x72, 0x7c, 0x8d, 0xd7, 0xd5, 0x44, 0x5a, 0x83, 0x8c, 0xfd, 0x76, 0xbb, + 0x8d, 0x2c, 0xcf, 0xe5, 0xeb, 0xca, 0xe4, 0x15, 0x26, 0x96, 0x9e, 0x86, 0x69, 0xcf, 0xd1, 0x0c, + 0xb3, 0xc7, 0x36, 0x41, 0x6c, 0x45, 0xae, 0xf0, 0x8d, 0x8b, 0x70, 0x8e, 0xf3, 0x36, 0x90, 0xa7, + 0xe9, 0x87, 0xa8, 0x11, 0x80, 0xc6, 0xc9, 0xc9, 0xe1, 0x59, 0x66, 0xb0, 0xce, 0xf4, 0x1c, 0x5b, + 0xf8, 0xae, 0x00, 0xd3, 0xfc, 0x45, 0xa5, 0xe1, 0x07, 0x6b, 0x1b, 0x40, 0xb3, 0x2c, 0xdb, 0x0b, + 0x87, 0x6b, 0x30, 0x95, 0x07, 0x70, 0x8b, 0x25, 0x1f, 0xa4, 0x84, 0x08, 0xe6, 0xda, 0x00, 0x81, + 0xe6, 0xc4, 0xb0, 0x9d, 0x87, 0x0c, 0x3b, 0xb9, 0x27, 0x3f, 0xff, 0xd0, 0x57, 0x5b, 0xa0, 0x22, + 0xfc, 0x46, 0x23, 0xcd, 0x42, 0xf2, 0x00, 0xb5, 0x0c, 0x8b, 0x9d, 0x27, 0xd2, 0x0b, 0x7e, 0x4a, + 0x99, 0xf0, 0x4f, 0x29, 0xcb, 0x37, 0x61, 0x46, 0xb7, 0xdb, 0xfd, 0xee, 0x96, 0xc5, 0xbe, 0xd7, + 0x6b, 0xf7, 0xba, 0xf0, 0x59, 0x08, 0x46, 0xcc, 0xaf, 0xc4, 0xe2, 0x1b, 0xbb, 0xe5, 0xaf, 0xc5, + 0xe6, 0x36, 0x28, 0x6e, 0x97, 0x3f, 0xa6, 0x82, 0x9a, 0x26, 0xd2, 0xb1, 0xeb, 0xf0, 0x83, 0x8f, + 0xc3, 0x33, 0x2d, 0xc3, 0x3b, 0xec, 0x1e, 0x2c, 0xea, 0x76, 0x7b, 0xa9, 0x65, 0xb7, 0xec, 0xe0, + 0xe7, 0x2e, 0x7c, 0x45, 0x2e, 0xc8, 0x7f, 0xec, 0x27, 0xaf, 0xb4, 0x2f, 0x9d, 0x8b, 0xfc, 0x7d, + 0xac, 0xb8, 0x03, 0x33, 0xcc, 0x58, 0x25, 0x67, 0xee, 0xf4, 0xd5, 0x40, 0x7a, 0xe0, 0xb9, 0x8b, + 0xfc, 0xcd, 0x77, 0x49, 0xaf, 0x56, 0xa6, 0x19, 0x14, 0xeb, 0xe8, 0x0b, 0x44, 0x51, 0x81, 0x87, + 0x7a, 0xf8, 0xe8, 0xbe, 0x44, 0x4e, 0x04, 0xe3, 0x77, 0x18, 0xe3, 0x4c, 0x88, 0xb1, 0xce, 0xa0, + 0xc5, 0x0a, 0x4c, 0x9e, 0x86, 0xeb, 0x6f, 0x19, 0x57, 0x16, 0x85, 0x49, 0x36, 0x60, 0x8a, 0x90, + 0xe8, 0x5d, 0xd7, 0xb3, 0xdb, 0xa4, 0xe8, 0x3d, 0x98, 0xe6, 0xef, 0xde, 0xa5, 0x1b, 0x25, 0x87, + 0x61, 0x15, 0x1f, 0x55, 0x2c, 0x02, 0xf9, 0x99, 0xa1, 0x81, 0x74, 0x33, 0x82, 0xe1, 0x4d, 0xe6, + 0x88, 0x6f, 0x5f, 0xfc, 0x0c, 0xcc, 0xe2, 0xff, 0x49, 0x4d, 0x0a, 0x7b, 0x12, 0x7d, 0xca, 0x24, + 0x7f, 0xf7, 0x15, 0xba, 0x17, 0x67, 0x7c, 0x82, 0x90, 0x4f, 0xa1, 0x55, 0x6c, 0x21, 0xcf, 0x43, + 0x8e, 0xab, 0x6a, 0xe6, 0x30, 0xf7, 0x42, 0xaf, 0xe9, 0xf2, 0x97, 0xde, 0xeb, 0x5d, 0xc5, 0x0d, + 0x8a, 0x2c, 0x99, 0x66, 0x71, 0x1f, 0xce, 0x0e, 0xc9, 0x8a, 0x11, 0x38, 0x5f, 0x65, 0x9c, 0xb3, + 0x03, 0x99, 0x81, 0x69, 0x77, 0x81, 0xcb, 0xfd, 0xb5, 0x1c, 0x81, 0xf3, 0xb7, 0x19, 0xa7, 0xc4, + 0xb0, 0x7c, 0x49, 0x31, 0xe3, 0x0d, 0x98, 0xbe, 0x83, 0x9c, 0x03, 0xdb, 0x65, 0x47, 0x23, 0x23, + 0xd0, 0xbd, 0xc6, 0xe8, 0xa6, 0x18, 0x90, 0x9c, 0x95, 0x60, 0xae, 0x2b, 0x90, 0x6a, 0x6a, 0x3a, + 0x1a, 0x81, 0xe2, 0xcb, 0x8c, 0x62, 0x02, 0xdb, 0x63, 0x68, 0x09, 0xb2, 0x2d, 0x9b, 0xb5, 0xa5, + 0x68, 0xf8, 0xeb, 0x0c, 0x9e, 0xe1, 0x18, 0x46, 0xd1, 0xb1, 0x3b, 0x5d, 0x13, 0xf7, 0xac, 0x68, + 0x8a, 0xdf, 0xe1, 0x14, 0x1c, 0xc3, 0x28, 0x4e, 0x11, 0xd6, 0xdf, 0xe5, 0x14, 0x6e, 0x28, 0x9e, + 0xcf, 0x43, 0xc6, 0xb6, 0xcc, 0x23, 0xdb, 0x1a, 0xc5, 0x89, 0xdf, 0x63, 0x0c, 0xc0, 0x20, 0x98, + 0xe0, 0x2a, 0xa4, 0x47, 0x5d, 0x88, 0xdf, 0x7f, 0x8f, 0x6f, 0x0f, 0xbe, 0x02, 0x1b, 0x30, 0xc5, + 0x0b, 0x94, 0x61, 0x5b, 0x23, 0x50, 0xfc, 0x01, 0xa3, 0xc8, 0x85, 0x60, 0xec, 0x31, 0x3c, 0xe4, + 0x7a, 0x2d, 0x34, 0x0a, 0xc9, 0x1b, 0xfc, 0x31, 0x18, 0x84, 0x85, 0xf2, 0x00, 0x59, 0xfa, 0xe1, + 0x68, 0x0c, 0x5f, 0xe5, 0xa1, 0xe4, 0x18, 0x4c, 0x51, 0x81, 0xc9, 0xb6, 0xe6, 0xb8, 0x87, 0x9a, + 0x39, 0xd2, 0x72, 0xfc, 0x21, 0xe3, 0xc8, 0xfa, 0x20, 0x16, 0x91, 0xae, 0x75, 0x1a, 0x9a, 0xaf, + 0xf1, 0x88, 0x84, 0x60, 0x6c, 0xeb, 0xb9, 0x1e, 0x39, 0x80, 0x3a, 0x0d, 0xdb, 0xd7, 0xf9, 0xd6, + 0xa3, 0xd8, 0xed, 0x30, 0xe3, 0x55, 0x48, 0xbb, 0xc6, 0xcb, 0x23, 0xd1, 0xfc, 0x11, 0x5f, 0x69, + 0x02, 0xc0, 0xe0, 0x17, 0xe1, 0xdc, 0xd0, 0x36, 0x31, 0x02, 0xd9, 0x1f, 0x33, 0xb2, 0x33, 0x43, + 0x5a, 0x05, 0x2b, 0x09, 0xa7, 0xa5, 0xfc, 0x13, 0x5e, 0x12, 0x50, 0x1f, 0xd7, 0x2e, 0x7e, 0x51, + 0x70, 0xb5, 0xe6, 0xe9, 0xa2, 0xf6, 0xa7, 0x3c, 0x6a, 0x14, 0xdb, 0x13, 0xb5, 0x3d, 0x38, 0xc3, + 0x18, 0x4f, 0xb7, 0xae, 0xdf, 0xe0, 0x85, 0x95, 0xa2, 0xf7, 0x7b, 0x57, 0xf7, 0x67, 0x60, 0xce, + 0x0f, 0x27, 0x9f, 0x48, 0x5d, 0xb5, 0xad, 0x75, 0x46, 0x60, 0xfe, 0x26, 0x63, 0xe6, 0x15, 0xdf, + 0x1f, 0x69, 0xdd, 0x6d, 0xad, 0x83, 0xc9, 0x6f, 0x82, 0xcc, 0xc9, 0xbb, 0x96, 0x83, 0x74, 0xbb, + 0x65, 0x19, 0x2f, 0xa3, 0xc6, 0x08, 0xd4, 0x7f, 0xd6, 0xb7, 0x54, 0xfb, 0x21, 0x38, 0x66, 0xde, + 0x04, 0xd1, 0x9f, 0x55, 0x54, 0xa3, 0xdd, 0xb1, 0x1d, 0x2f, 0x82, 0xf1, 0xcf, 0xf9, 0x4a, 0xf9, + 0xb8, 0x4d, 0x02, 0x2b, 0x56, 0x21, 0x47, 0x2e, 0x47, 0x4d, 0xc9, 0xbf, 0x60, 0x44, 0x93, 0x01, + 0x8a, 0x15, 0x0e, 0xdd, 0x6e, 0x77, 0x34, 0x67, 0x94, 0xfa, 0xf7, 0x97, 0xbc, 0x70, 0x30, 0x08, + 0x2b, 0x1c, 0xde, 0x51, 0x07, 0xe1, 0x6e, 0x3f, 0x02, 0xc3, 0xb7, 0x78, 0xe1, 0xe0, 0x18, 0x46, + 0xc1, 0x07, 0x86, 0x11, 0x28, 0xfe, 0x8a, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x74, 0xd0, 0x68, 0x1d, + 0xd4, 0x32, 0x5c, 0xcf, 0xa1, 0x73, 0xf0, 0x83, 0xa9, 0xbe, 0xfd, 0x5e, 0xef, 0x10, 0xa6, 0x84, + 0xa0, 0xc5, 0x1b, 0x30, 0xd5, 0x37, 0x62, 0x48, 0x51, 0xdf, 0x2c, 0xc8, 0x3f, 0xfb, 0x01, 0x2b, + 0x46, 0xbd, 0x13, 0x46, 0x71, 0x0b, 0xaf, 0x7b, 0xef, 0x1c, 0x10, 0x4d, 0xf6, 0xca, 0x07, 0xfe, + 0xd2, 0xf7, 0x8c, 0x01, 0xc5, 0x6b, 0x30, 0xd9, 0x33, 0x03, 0x44, 0x53, 0xfd, 0x1c, 0xa3, 0xca, + 0x86, 0x47, 0x80, 0xe2, 0x1a, 0x24, 0x70, 0x3f, 0x8f, 0x86, 0xff, 0x3c, 0x83, 0x13, 0xf3, 0xe2, + 0x27, 0x21, 0xc5, 0xfb, 0x78, 0x34, 0xf4, 0x17, 0x18, 0xd4, 0x87, 0x60, 0x38, 0xef, 0xe1, 0xd1, + 0xf0, 0x5f, 0xe4, 0x70, 0x0e, 0xc1, 0xf0, 0xd1, 0x43, 0xf8, 0x37, 0xbf, 0x94, 0x60, 0x75, 0x98, + 0xc7, 0xee, 0x2a, 0x4c, 0xb0, 0xe6, 0x1d, 0x8d, 0xfe, 0x3c, 0xbb, 0x39, 0x47, 0x14, 0x2f, 0x41, + 0x72, 0xc4, 0x80, 0xff, 0x32, 0x83, 0x52, 0xfb, 0x62, 0x05, 0x32, 0xa1, 0x86, 0x1d, 0x0d, 0xff, + 0x15, 0x06, 0x0f, 0xa3, 0xb0, 0xeb, 0xac, 0x61, 0x47, 0x13, 0xfc, 0x2a, 0x77, 0x9d, 0x21, 0x70, + 0xd8, 0x78, 0xaf, 0x8e, 0x46, 0xff, 0x1a, 0x8f, 0x3a, 0x87, 0x14, 0x9f, 0x87, 0xb4, 0x5f, 0x7f, + 0xa3, 0xf1, 0xbf, 0xce, 0xf0, 0x01, 0x06, 0x47, 0x20, 0x54, 0xff, 0xa3, 0x29, 0xbe, 0xc0, 0x23, + 0x10, 0x42, 0xe1, 0x6d, 0xd4, 0xdf, 0xd3, 0xa3, 0x99, 0x7e, 0x83, 0x6f, 0xa3, 0xbe, 0x96, 0x8e, + 0x57, 0x93, 0x94, 0xc1, 0x68, 0x8a, 0xdf, 0xe4, 0xab, 0x49, 0xec, 0xb1, 0x1b, 0xfd, 0x4d, 0x32, + 0x9a, 0xe3, 0xb7, 0xb8, 0x1b, 0x7d, 0x3d, 0xb2, 0xb8, 0x0b, 0xd2, 0x60, 0x83, 0x8c, 0xe6, 0xfb, + 0x22, 0xe3, 0x9b, 0x1e, 0xe8, 0x8f, 0xc5, 0x17, 0xe0, 0xcc, 0xf0, 0xe6, 0x18, 0xcd, 0xfa, 0xa5, + 0x0f, 0xfa, 0x5e, 0x67, 0xc2, 0xbd, 0xb1, 0xb8, 0x17, 0x54, 0xd9, 0x70, 0x63, 0x8c, 0xa6, 0x7d, + 0xf5, 0x83, 0xde, 0x42, 0x1b, 0xee, 0x8b, 0xc5, 0x12, 0x40, 0xd0, 0x93, 0xa2, 0xb9, 0x5e, 0x63, + 0x5c, 0x21, 0x10, 0xde, 0x1a, 0xac, 0x25, 0x45, 0xe3, 0xbf, 0xcc, 0xb7, 0x06, 0x43, 0xe0, 0xad, + 0xc1, 0xbb, 0x51, 0x34, 0xfa, 0x75, 0xbe, 0x35, 0x38, 0xa4, 0x78, 0x15, 0x52, 0x56, 0xd7, 0x34, + 0x71, 0x6e, 0x49, 0x0f, 0xfe, 0x8c, 0x48, 0xfe, 0x97, 0x0f, 0x19, 0x98, 0x03, 0x8a, 0x6b, 0x90, + 0x44, 0xed, 0x03, 0xd4, 0x88, 0x42, 0xfe, 0xeb, 0x87, 0xbc, 0x9e, 0x60, 0xeb, 0xe2, 0xf3, 0x00, + 0xf4, 0x65, 0x9a, 0xfc, 0x4a, 0x14, 0x81, 0xfd, 0xb7, 0x0f, 0xd9, 0x17, 0x0a, 0x01, 0x24, 0x20, + 0xa0, 0xdf, 0x3b, 0x3c, 0x98, 0xe0, 0xbd, 0x5e, 0x02, 0xf2, 0x02, 0x7e, 0x05, 0x26, 0x6e, 0xb9, + 0xb6, 0xe5, 0x69, 0xad, 0x28, 0xf4, 0xbf, 0x33, 0x34, 0xb7, 0xc7, 0x01, 0x6b, 0xdb, 0x0e, 0xf2, + 0xb4, 0x96, 0x1b, 0x85, 0xfd, 0x0f, 0x86, 0xf5, 0x01, 0x18, 0xac, 0x6b, 0xae, 0x37, 0xca, 0x73, + 0xff, 0x27, 0x07, 0x73, 0x00, 0x76, 0x1a, 0xff, 0x7f, 0x1b, 0x1d, 0x45, 0x61, 0xdf, 0xe7, 0x4e, + 0x33, 0xfb, 0xe2, 0x27, 0x21, 0x8d, 0xff, 0xa5, 0x5f, 0xed, 0x44, 0x80, 0xff, 0x8b, 0x81, 0x03, + 0x04, 0xbe, 0xb3, 0xeb, 0x35, 0x3c, 0x23, 0x3a, 0xd8, 0xff, 0xcd, 0x56, 0x9a, 0xdb, 0x17, 0x4b, + 0x90, 0x71, 0xbd, 0x46, 0xa3, 0xcb, 0x26, 0x9a, 0x08, 0xf8, 0x0f, 0x3e, 0xf4, 0x5f, 0x72, 0x7d, + 0x4c, 0xf9, 0xc2, 0xf0, 0xc3, 0x3a, 0xd8, 0xb0, 0x37, 0x6c, 0x7a, 0x4c, 0x07, 0xf7, 0xd2, 0x30, + 0xaf, 0xdb, 0xed, 0x03, 0xdb, 0x5d, 0xa2, 0x05, 0xc5, 0x2f, 0x27, 0x4b, 0xb6, 0xc5, 0x30, 0x52, + 0xdc, 0xb6, 0xd0, 0xdc, 0xe9, 0x0e, 0xe7, 0x0a, 0xe7, 0x20, 0x59, 0xef, 0x1e, 0x1c, 0x1c, 0x49, + 0x22, 0xc4, 0xdd, 0xee, 0x01, 0xfb, 0xba, 0x04, 0xff, 0x5b, 0x78, 0x3b, 0x0e, 0x93, 0x25, 0xd3, + 0xdc, 0x3b, 0xea, 0x20, 0xb7, 0x66, 0xa1, 0x5a, 0x53, 0x92, 0x61, 0x9c, 0x3c, 0xcd, 0x73, 0xc4, + 0x4c, 0xb8, 0x3e, 0xa6, 0xb0, 0x6b, 0x5f, 0xb3, 0x4c, 0xce, 0x2c, 0x63, 0xbe, 0x66, 0xd9, 0xd7, + 0xac, 0xd0, 0x23, 0x4b, 0x5f, 0xb3, 0xe2, 0x6b, 0x56, 0xc9, 0xc1, 0x65, 0xdc, 0xd7, 0xac, 0xfa, + 0x9a, 0x35, 0x72, 0x30, 0x3f, 0xe9, 0x6b, 0xd6, 0x7c, 0xcd, 0x45, 0x72, 0x14, 0x9f, 0xf0, 0x35, + 0x17, 0x7d, 0xcd, 0x25, 0x72, 0x02, 0x3f, 0xed, 0x6b, 0x2e, 0xf9, 0x9a, 0xcb, 0xe4, 0xd4, 0x5d, + 0xf2, 0x35, 0x97, 0x7d, 0xcd, 0x15, 0xf2, 0x19, 0xc9, 0x84, 0xaf, 0xb9, 0x22, 0xcd, 0xc1, 0x04, + 0x7d, 0xb2, 0x67, 0xc9, 0x4f, 0xb3, 0x53, 0xd7, 0xc7, 0x14, 0x2e, 0x08, 0x74, 0xcf, 0x91, 0x4f, + 0x45, 0xc6, 0x03, 0xdd, 0x73, 0x81, 0x6e, 0x99, 0x7c, 0x30, 0x2d, 0x06, 0xba, 0xe5, 0x40, 0xb7, + 0x22, 0x4f, 0xe2, 0x24, 0x08, 0x74, 0x2b, 0x81, 0x6e, 0x55, 0xce, 0xe1, 0x15, 0x08, 0x74, 0xab, + 0x81, 0x6e, 0x4d, 0x9e, 0x9a, 0x17, 0x16, 0xb2, 0x81, 0x6e, 0x4d, 0x7a, 0x06, 0x32, 0x6e, 0xf7, + 0x40, 0x65, 0x5f, 0x12, 0x90, 0x4f, 0x52, 0x32, 0xcb, 0xb0, 0x88, 0x73, 0x82, 0x2c, 0xeb, 0xf5, + 0x31, 0x05, 0xdc, 0xee, 0x01, 0xab, 0x92, 0xe5, 0x2c, 0x90, 0x43, 0x05, 0x95, 0x7c, 0x88, 0x59, + 0x78, 0x4b, 0x80, 0xf4, 0xde, 0x5d, 0x9b, 0xfc, 0x30, 0xeb, 0xfe, 0x3f, 0x2f, 0x2e, 0x77, 0x7a, + 0x65, 0x95, 0xfc, 0x76, 0x96, 0xbe, 0x2e, 0x28, 0x5c, 0x10, 0xe8, 0xd6, 0xe4, 0x47, 0xc9, 0x03, + 0xf9, 0xba, 0x35, 0x69, 0x09, 0xb2, 0xa1, 0x07, 0x5a, 0x26, 0x5f, 0x99, 0xf4, 0x3e, 0x91, 0xa0, + 0x64, 0x82, 0x27, 0x5a, 0x2e, 0x27, 0x01, 0xa7, 0x3d, 0xfe, 0xe3, 0xdd, 0xb5, 0x0b, 0x5f, 0x88, + 0x41, 0x86, 0x9e, 0x43, 0x92, 0xa7, 0xc2, 0xb7, 0xa2, 0x73, 0xf9, 0x11, 0x73, 0x63, 0x4c, 0xe1, + 0x02, 0x49, 0x01, 0xa0, 0xa6, 0x38, 0xc3, 0xa9, 0x27, 0xe5, 0x67, 0xff, 0xf1, 0xed, 0xf3, 0x9f, + 0x38, 0x71, 0x07, 0xe1, 0xd8, 0x2d, 0xd1, 0x2a, 0xbb, 0xb8, 0x6f, 0x58, 0xde, 0x73, 0xcb, 0x97, + 0x71, 0x80, 0x03, 0x16, 0x69, 0x1f, 0x52, 0x15, 0xcd, 0x25, 0x9f, 0x99, 0x11, 0xd7, 0x13, 0xe5, + 0x4b, 0xff, 0xfb, 0xf6, 0xf9, 0x95, 0x08, 0x46, 0x56, 0x00, 0x17, 0xb7, 0x8f, 0x30, 0xeb, 0xc5, + 0x55, 0x0c, 0xbf, 0x3e, 0xa6, 0xf8, 0x54, 0xd2, 0x32, 0x77, 0x75, 0x47, 0x6b, 0xd3, 0xcf, 0x69, + 0xe2, 0x65, 0xf1, 0xf8, 0xed, 0xf3, 0xd9, 0xed, 0xa3, 0x40, 0x1e, 0xb8, 0x82, 0xaf, 0xca, 0x29, + 0x18, 0xa7, 0xae, 0x96, 0xd7, 0xdf, 0xbc, 0x9f, 0x1f, 0x7b, 0xeb, 0x7e, 0x7e, 0xec, 0x1f, 0xee, + 0xe7, 0xc7, 0xde, 0xb9, 0x9f, 0x17, 0xde, 0xbf, 0x9f, 0x17, 0x7e, 0x78, 0x3f, 0x2f, 0xdc, 0x3b, + 0xce, 0x0b, 0x5f, 0x3d, 0xce, 0x0b, 0xdf, 0x38, 0xce, 0x0b, 0xdf, 0x3e, 0xce, 0x0b, 0x6f, 0x1e, + 0xe7, 0xc7, 0xde, 0x3a, 0xce, 0x8f, 0xbd, 0x73, 0x9c, 0x17, 0xbe, 0x7f, 0x9c, 0x1f, 0x7b, 0xff, + 0x38, 0x2f, 0xfc, 0xf0, 0x38, 0x2f, 0xdc, 0xfb, 0x5e, 0x7e, 0xec, 0xff, 0x02, 0x00, 0x00, 0xff, + 0xff, 0x80, 0x0e, 0x3d, 0x7d, 0xdf, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeunmarshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeunmarshaler/one.pb.go index c9919b0bf..b853264c1 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeunmarshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof/combos/unsafeunmarshaler/one.pb.go @@ -988,253 +988,260 @@ func (this *CustomOneof) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3930 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0xbf, 0x38, 0x17, 0x69, 0xe6, 0xcc, 0x68, 0x44, 0x7d, 0x92, 0xd7, 0x5c, 0x39, 0x9e, 0xd5, - 0x8e, 0xed, 0x58, 0xb6, 0x63, 0xc9, 0xd6, 0x65, 0x2f, 0xb3, 0xff, 0xc4, 0x18, 0x49, 0x63, 0xad, - 0x16, 0xba, 0x85, 0x92, 0x12, 0x3b, 0x79, 0x20, 0x38, 0x9c, 0x6f, 0x46, 0xdc, 0xe5, 0x90, 0xf3, - 0x27, 0x39, 0xbb, 0x96, 0x9f, 0x36, 0x75, 0x2f, 0x08, 0x82, 0xde, 0xd2, 0x02, 0x4d, 0x1c, 0xc7, - 0x4d, 0x03, 0xb4, 0x4e, 0xd3, 0x5b, 0xd2, 0x4b, 0x1a, 0xf4, 0xa9, 0x2f, 0x69, 0xfd, 0x54, 0x38, - 0x6f, 0x45, 0x51, 0x18, 0x59, 0xd5, 0x40, 0xd3, 0xd6, 0x6d, 0xdd, 0xc6, 0x40, 0x83, 0xfa, 0xa5, - 0xf8, 0x6e, 0x24, 0xe7, 0xa2, 0xe5, 0x28, 0x68, 0x92, 0x3e, 0x49, 0x3c, 0xe7, 0xfc, 0x7e, 0x3c, - 0xdf, 0xf9, 0x0e, 0xcf, 0x39, 0xfc, 0x86, 0xf0, 0x99, 0x65, 0x98, 0x6d, 0x3a, 0x4e, 0xd3, 0xc2, - 0x0b, 0x6d, 0xd7, 0xf1, 0x9d, 0x5a, 0xa7, 0xb1, 0x50, 0xc7, 0x9e, 0xe1, 0x9a, 0x6d, 0xdf, 0x71, - 0xe7, 0xa9, 0x0c, 0x4d, 0x30, 0x8b, 0x79, 0x61, 0x51, 0xda, 0x86, 0xc9, 0xe7, 0x4d, 0x0b, 0xaf, - 0x07, 0x86, 0xfb, 0xd8, 0x47, 0x57, 0x20, 0xd5, 0x30, 0x2d, 0xac, 0x48, 0xb3, 0xc9, 0xb9, 0xdc, - 0xe2, 0xa3, 0xf3, 0x3d, 0xa0, 0xf9, 0x6e, 0xc4, 0x1e, 0x11, 0xab, 0x14, 0x51, 0x7a, 0x27, 0x05, - 0x53, 0x03, 0xb4, 0x08, 0x41, 0xca, 0xd6, 0x5b, 0x84, 0x51, 0x9a, 0xcb, 0xaa, 0xf4, 0x7f, 0xa4, - 0xc0, 0x58, 0x5b, 0x37, 0x6e, 0xe9, 0x4d, 0xac, 0x24, 0xa8, 0x58, 0x5c, 0xa2, 0x22, 0x40, 0x1d, - 0xb7, 0xb1, 0x5d, 0xc7, 0xb6, 0x71, 0xac, 0x24, 0x67, 0x93, 0x73, 0x59, 0x35, 0x22, 0x41, 0x4f, - 0xc1, 0x64, 0xbb, 0x53, 0xb3, 0x4c, 0x43, 0x8b, 0x98, 0xc1, 0x6c, 0x72, 0x2e, 0xad, 0xca, 0x4c, - 0xb1, 0x1e, 0x1a, 0x3f, 0x0e, 0x13, 0x77, 0xb0, 0x7e, 0x2b, 0x6a, 0x9a, 0xa3, 0xa6, 0x05, 0x22, - 0x8e, 0x18, 0xae, 0x41, 0xbe, 0x85, 0x3d, 0x4f, 0x6f, 0x62, 0xcd, 0x3f, 0x6e, 0x63, 0x25, 0x45, - 0x57, 0x3f, 0xdb, 0xb7, 0xfa, 0xde, 0x95, 0xe7, 0x38, 0xea, 0xe0, 0xb8, 0x8d, 0x51, 0x05, 0xb2, - 0xd8, 0xee, 0xb4, 0x18, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x4e, 0xab, 0x97, 0x25, 0x43, 0x60, - 0x9c, 0x62, 0xcc, 0xc3, 0xee, 0x6d, 0xd3, 0xc0, 0xca, 0x28, 0x25, 0x78, 0xbc, 0x8f, 0x60, 0x9f, - 0xe9, 0x7b, 0x39, 0x04, 0x0e, 0xad, 0x41, 0x16, 0xbf, 0xe4, 0x63, 0xdb, 0x33, 0x1d, 0x5b, 0x19, - 0xa3, 0x24, 0x8f, 0x0d, 0xd8, 0x45, 0x6c, 0xd5, 0x7b, 0x29, 0x42, 0x1c, 0xba, 0x04, 0x63, 0x4e, - 0xdb, 0x37, 0x1d, 0xdb, 0x53, 0x32, 0xb3, 0xd2, 0x5c, 0x6e, 0xf1, 0x43, 0x03, 0x13, 0x61, 0x97, - 0xd9, 0xa8, 0xc2, 0x18, 0x6d, 0x82, 0xec, 0x39, 0x1d, 0xd7, 0xc0, 0x9a, 0xe1, 0xd4, 0xb1, 0x66, - 0xda, 0x0d, 0x47, 0xc9, 0x52, 0x82, 0x0b, 0xfd, 0x0b, 0xa1, 0x86, 0x6b, 0x4e, 0x1d, 0x6f, 0xda, - 0x0d, 0x47, 0x2d, 0x78, 0x5d, 0xd7, 0xe8, 0x1c, 0x8c, 0x7a, 0xc7, 0xb6, 0xaf, 0xbf, 0xa4, 0xe4, - 0x69, 0x86, 0xf0, 0xab, 0xd2, 0x7f, 0xa5, 0x61, 0x62, 0x98, 0x14, 0xbb, 0x06, 0xe9, 0x06, 0x59, - 0xa5, 0x92, 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x3b, 0x88, 0xa3, 0x3f, 0x62, 0x10, 0x2b, 0x90, 0xb3, - 0xb1, 0xe7, 0xe3, 0x3a, 0xcb, 0x88, 0xe4, 0x90, 0x39, 0x05, 0x0c, 0xd4, 0x9f, 0x52, 0xa9, 0x1f, - 0x29, 0xa5, 0x5e, 0x80, 0x89, 0xc0, 0x25, 0xcd, 0xd5, 0xed, 0xa6, 0xc8, 0xcd, 0x85, 0x38, 0x4f, - 0xe6, 0xab, 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc0, 0x5d, 0xd7, 0x68, 0x1d, 0xc0, 0xb1, 0xb1, 0xd3, - 0xd0, 0xea, 0xd8, 0xb0, 0x94, 0xcc, 0x29, 0x51, 0xda, 0x25, 0x26, 0x7d, 0x51, 0x72, 0x98, 0xd4, - 0xb0, 0xd0, 0xd5, 0x30, 0xd5, 0xc6, 0x4e, 0xc9, 0x94, 0x6d, 0xf6, 0x90, 0xf5, 0x65, 0xdb, 0x21, - 0x14, 0x5c, 0x4c, 0xf2, 0x1e, 0xd7, 0xf9, 0xca, 0xb2, 0xd4, 0x89, 0xf9, 0xd8, 0x95, 0xa9, 0x1c, - 0xc6, 0x16, 0x36, 0xee, 0x46, 0x2f, 0xd1, 0x23, 0x10, 0x08, 0x34, 0x9a, 0x56, 0x40, 0xab, 0x50, - 0x5e, 0x08, 0x77, 0xf4, 0x16, 0x9e, 0xb9, 0x02, 0x85, 0xee, 0xf0, 0xa0, 0x69, 0x48, 0x7b, 0xbe, - 0xee, 0xfa, 0x34, 0x0b, 0xd3, 0x2a, 0xbb, 0x40, 0x32, 0x24, 0xb1, 0x5d, 0xa7, 0x55, 0x2e, 0xad, - 0x92, 0x7f, 0x67, 0x2e, 0xc3, 0x78, 0xd7, 0xed, 0x87, 0x05, 0x96, 0xbe, 0x30, 0x0a, 0xd3, 0x83, - 0x72, 0x6e, 0x60, 0xfa, 0x9f, 0x83, 0x51, 0xbb, 0xd3, 0xaa, 0x61, 0x57, 0x49, 0x52, 0x06, 0x7e, - 0x85, 0x2a, 0x90, 0xb6, 0xf4, 0x1a, 0xb6, 0x94, 0xd4, 0xac, 0x34, 0x57, 0x58, 0x7c, 0x6a, 0xa8, - 0xac, 0x9e, 0xdf, 0x22, 0x10, 0x95, 0x21, 0xd1, 0xc7, 0x20, 0xc5, 0x4b, 0x1c, 0x61, 0x78, 0x72, - 0x38, 0x06, 0x92, 0x8b, 0x2a, 0xc5, 0xa1, 0x87, 0x20, 0x4b, 0xfe, 0xb2, 0xd8, 0x8e, 0x52, 0x9f, - 0x33, 0x44, 0x40, 0xe2, 0x8a, 0x66, 0x20, 0x43, 0xd3, 0xac, 0x8e, 0x45, 0x6b, 0x08, 0xae, 0xc9, - 0xc6, 0xd4, 0x71, 0x43, 0xef, 0x58, 0xbe, 0x76, 0x5b, 0xb7, 0x3a, 0x98, 0x26, 0x4c, 0x56, 0xcd, - 0x73, 0xe1, 0x27, 0x88, 0x0c, 0x5d, 0x80, 0x1c, 0xcb, 0x4a, 0xd3, 0xae, 0xe3, 0x97, 0x68, 0xf5, - 0x49, 0xab, 0x2c, 0x51, 0x37, 0x89, 0x84, 0xdc, 0xfe, 0xa6, 0xe7, 0xd8, 0x62, 0x6b, 0xe9, 0x2d, - 0x88, 0x80, 0xde, 0xfe, 0x72, 0x6f, 0xe1, 0x7b, 0x78, 0xf0, 0xf2, 0x7a, 0x73, 0xb1, 0xf4, 0xad, - 0x04, 0xa4, 0xe8, 0xf3, 0x36, 0x01, 0xb9, 0x83, 0x17, 0xf7, 0xaa, 0xda, 0xfa, 0xee, 0xe1, 0xea, - 0x56, 0x55, 0x96, 0x50, 0x01, 0x80, 0x0a, 0x9e, 0xdf, 0xda, 0xad, 0x1c, 0xc8, 0x89, 0xe0, 0x7a, - 0x73, 0xe7, 0xe0, 0xd2, 0xb2, 0x9c, 0x0c, 0x00, 0x87, 0x4c, 0x90, 0x8a, 0x1a, 0x2c, 0x2d, 0xca, - 0x69, 0x24, 0x43, 0x9e, 0x11, 0x6c, 0xbe, 0x50, 0x5d, 0xbf, 0xb4, 0x2c, 0x8f, 0x76, 0x4b, 0x96, - 0x16, 0xe5, 0x31, 0x34, 0x0e, 0x59, 0x2a, 0x59, 0xdd, 0xdd, 0xdd, 0x92, 0x33, 0x01, 0xe7, 0xfe, - 0x81, 0xba, 0xb9, 0xb3, 0x21, 0x67, 0x03, 0xce, 0x0d, 0x75, 0xf7, 0x70, 0x4f, 0x86, 0x80, 0x61, - 0xbb, 0xba, 0xbf, 0x5f, 0xd9, 0xa8, 0xca, 0xb9, 0xc0, 0x62, 0xf5, 0xc5, 0x83, 0xea, 0xbe, 0x9c, - 0xef, 0x72, 0x6b, 0x69, 0x51, 0x1e, 0x0f, 0x6e, 0x51, 0xdd, 0x39, 0xdc, 0x96, 0x0b, 0x68, 0x12, - 0xc6, 0xd9, 0x2d, 0x84, 0x13, 0x13, 0x3d, 0xa2, 0x4b, 0xcb, 0xb2, 0x1c, 0x3a, 0xc2, 0x58, 0x26, - 0xbb, 0x04, 0x97, 0x96, 0x65, 0x54, 0x5a, 0x83, 0x34, 0xcd, 0x2e, 0x84, 0xa0, 0xb0, 0x55, 0x59, - 0xad, 0x6e, 0x69, 0xbb, 0x7b, 0x07, 0x9b, 0xbb, 0x3b, 0x95, 0x2d, 0x59, 0x0a, 0x65, 0x6a, 0xf5, - 0xe3, 0x87, 0x9b, 0x6a, 0x75, 0x5d, 0x4e, 0x44, 0x65, 0x7b, 0xd5, 0xca, 0x41, 0x75, 0x5d, 0x4e, - 0x96, 0x0c, 0x98, 0x1e, 0x54, 0x67, 0x06, 0x3e, 0x19, 0x91, 0x2d, 0x4e, 0x9c, 0xb2, 0xc5, 0x94, - 0xab, 0x6f, 0x8b, 0xbf, 0x2a, 0xc1, 0xd4, 0x80, 0x5a, 0x3b, 0xf0, 0x26, 0xcf, 0x41, 0x9a, 0xa5, - 0x28, 0xeb, 0x3e, 0x4f, 0x0c, 0x2c, 0xda, 0x34, 0x61, 0xfb, 0x3a, 0x10, 0xc5, 0x45, 0x3b, 0x70, - 0xf2, 0x94, 0x0e, 0x4c, 0x28, 0xfa, 0x9c, 0x7c, 0x45, 0x02, 0xe5, 0x34, 0xee, 0x98, 0x42, 0x91, - 0xe8, 0x2a, 0x14, 0xd7, 0x7a, 0x1d, 0xb8, 0x78, 0xfa, 0x1a, 0xfa, 0xbc, 0x78, 0x43, 0x82, 0x73, - 0x83, 0x07, 0x95, 0x81, 0x3e, 0x7c, 0x0c, 0x46, 0x5b, 0xd8, 0x3f, 0x72, 0x44, 0xb3, 0xfe, 0xf0, - 0x80, 0x16, 0x40, 0xd4, 0xbd, 0xb1, 0xe2, 0xa8, 0x68, 0x0f, 0x49, 0x9e, 0x36, 0x6d, 0x30, 0x6f, - 0xfa, 0x3c, 0xfd, 0x6c, 0x02, 0x1e, 0x18, 0x48, 0x3e, 0xd0, 0xd1, 0x87, 0x01, 0x4c, 0xbb, 0xdd, - 0xf1, 0x59, 0x43, 0x66, 0xf5, 0x29, 0x4b, 0x25, 0xf4, 0xd9, 0x27, 0xb5, 0xa7, 0xe3, 0x07, 0xfa, - 0x24, 0xd5, 0x03, 0x13, 0x51, 0x83, 0x2b, 0xa1, 0xa3, 0x29, 0xea, 0x68, 0xf1, 0x94, 0x95, 0xf6, - 0xf5, 0xba, 0x67, 0x40, 0x36, 0x2c, 0x13, 0xdb, 0xbe, 0xe6, 0xf9, 0x2e, 0xd6, 0x5b, 0xa6, 0xdd, - 0xa4, 0x05, 0x38, 0x53, 0x4e, 0x37, 0x74, 0xcb, 0xc3, 0xea, 0x04, 0x53, 0xef, 0x0b, 0x2d, 0x41, - 0xd0, 0x2e, 0xe3, 0x46, 0x10, 0xa3, 0x5d, 0x08, 0xa6, 0x0e, 0x10, 0xa5, 0xcf, 0x8d, 0x41, 0x2e, - 0x32, 0xd6, 0xa1, 0x8b, 0x90, 0xbf, 0xa9, 0xdf, 0xd6, 0x35, 0x31, 0xaa, 0xb3, 0x48, 0xe4, 0x88, - 0x6c, 0x8f, 0x8f, 0xeb, 0xcf, 0xc0, 0x34, 0x35, 0x71, 0x3a, 0x3e, 0x76, 0x35, 0xc3, 0xd2, 0x3d, - 0x8f, 0x06, 0x2d, 0x43, 0x4d, 0x11, 0xd1, 0xed, 0x12, 0xd5, 0x9a, 0xd0, 0xa0, 0x15, 0x98, 0xa2, - 0x88, 0x56, 0xc7, 0xf2, 0xcd, 0xb6, 0x85, 0x35, 0xf2, 0xf2, 0xe0, 0xd1, 0x42, 0x1c, 0x78, 0x36, - 0x49, 0x2c, 0xb6, 0xb9, 0x01, 0xf1, 0xc8, 0x43, 0x1b, 0xf0, 0x30, 0x85, 0x35, 0xb1, 0x8d, 0x5d, - 0xdd, 0xc7, 0x1a, 0xfe, 0xff, 0x1d, 0xdd, 0xf2, 0x34, 0xdd, 0xae, 0x6b, 0x47, 0xba, 0x77, 0xa4, - 0x4c, 0x47, 0x09, 0xce, 0x13, 0xdb, 0x0d, 0x6e, 0x5a, 0xa5, 0x96, 0x15, 0xbb, 0x7e, 0x5d, 0xf7, - 0x8e, 0x50, 0x19, 0xce, 0x51, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xa9, 0x19, 0x47, 0xd8, 0xb8, 0xa5, - 0x75, 0xfc, 0xc6, 0x15, 0xe5, 0xa1, 0x28, 0x03, 0x75, 0x72, 0x9f, 0xda, 0xac, 0x11, 0x93, 0x43, - 0xbf, 0x71, 0x05, 0xed, 0x43, 0x9e, 0xec, 0x47, 0xcb, 0x7c, 0x19, 0x6b, 0x0d, 0xc7, 0xa5, 0xcd, - 0xa5, 0x30, 0xe0, 0xe1, 0x8e, 0x04, 0x71, 0x7e, 0x97, 0x03, 0xb6, 0x9d, 0x3a, 0x2e, 0xa7, 0xf7, - 0xf7, 0xaa, 0xd5, 0x75, 0x35, 0x27, 0x58, 0x9e, 0x77, 0x5c, 0x92, 0x53, 0x4d, 0x27, 0x88, 0x71, - 0x8e, 0xe5, 0x54, 0xd3, 0x11, 0x11, 0x5e, 0x81, 0x29, 0xc3, 0x60, 0xcb, 0x36, 0x0d, 0x8d, 0x4f, - 0xf9, 0x9e, 0x22, 0x77, 0xc5, 0xcb, 0x30, 0x36, 0x98, 0x01, 0x4f, 0x73, 0x0f, 0x5d, 0x85, 0x07, - 0xc2, 0x78, 0x45, 0x81, 0x93, 0x7d, 0xab, 0xec, 0x85, 0xae, 0xc0, 0x54, 0xfb, 0xb8, 0x1f, 0x88, - 0xba, 0xee, 0xd8, 0x3e, 0xee, 0x85, 0x3d, 0x46, 0xdf, 0xdc, 0x5c, 0x6c, 0xe8, 0x3e, 0xae, 0x2b, - 0x0f, 0x46, 0xad, 0x23, 0x0a, 0xb4, 0x00, 0xb2, 0x61, 0x68, 0xd8, 0xd6, 0x6b, 0x16, 0xd6, 0x74, - 0x17, 0xdb, 0xba, 0xa7, 0x5c, 0x88, 0x1a, 0x17, 0x0c, 0xa3, 0x4a, 0xb5, 0x15, 0xaa, 0x44, 0x4f, - 0xc2, 0xa4, 0x53, 0xbb, 0x69, 0xb0, 0xe4, 0xd2, 0xda, 0x2e, 0x6e, 0x98, 0x2f, 0x29, 0x8f, 0xd2, - 0x30, 0x4d, 0x10, 0x05, 0x4d, 0xad, 0x3d, 0x2a, 0x46, 0x4f, 0x80, 0x6c, 0x78, 0x47, 0xba, 0xdb, - 0xa6, 0xdd, 0xdd, 0x6b, 0xeb, 0x06, 0x56, 0x1e, 0x63, 0xa6, 0x4c, 0xbe, 0x23, 0xc4, 0xe8, 0x05, - 0x98, 0xee, 0xd8, 0xa6, 0xed, 0x63, 0xb7, 0xed, 0x62, 0x32, 0xa4, 0xb3, 0x27, 0x4d, 0xf9, 0xc7, - 0xb1, 0x53, 0xc6, 0xec, 0xc3, 0xa8, 0x35, 0xdb, 0x5d, 0x75, 0xaa, 0xd3, 0x2f, 0x2c, 0x95, 0x21, - 0x1f, 0xdd, 0x74, 0x94, 0x05, 0xb6, 0xed, 0xb2, 0x44, 0x7a, 0xe8, 0xda, 0xee, 0x3a, 0xe9, 0x7e, - 0x9f, 0xaa, 0xca, 0x09, 0xd2, 0x85, 0xb7, 0x36, 0x0f, 0xaa, 0x9a, 0x7a, 0xb8, 0x73, 0xb0, 0xb9, - 0x5d, 0x95, 0x93, 0x4f, 0x66, 0x33, 0xdf, 0x1f, 0x93, 0xef, 0xde, 0xbd, 0x7b, 0x37, 0x51, 0xfa, - 0x4e, 0x02, 0x0a, 0xdd, 0x93, 0x2f, 0xfa, 0x7f, 0xf0, 0xa0, 0x78, 0x4d, 0xf5, 0xb0, 0xaf, 0xdd, - 0x31, 0x5d, 0x9a, 0x87, 0x2d, 0x9d, 0xcd, 0x8e, 0x41, 0x08, 0xa7, 0xb9, 0xd5, 0x3e, 0xf6, 0x3f, - 0x69, 0xba, 0x24, 0xcb, 0x5a, 0xba, 0x8f, 0xb6, 0xe0, 0x82, 0xed, 0x68, 0x9e, 0xaf, 0xdb, 0x75, - 0xdd, 0xad, 0x6b, 0xe1, 0x01, 0x81, 0xa6, 0x1b, 0x06, 0xf6, 0x3c, 0x87, 0xb5, 0x80, 0x80, 0xe5, - 0x43, 0xb6, 0xb3, 0xcf, 0x8d, 0xc3, 0xda, 0x58, 0xe1, 0xa6, 0x3d, 0xdb, 0x9d, 0x3c, 0x6d, 0xbb, - 0x1f, 0x82, 0x6c, 0x4b, 0x6f, 0x6b, 0xd8, 0xf6, 0xdd, 0x63, 0x3a, 0xaf, 0x65, 0xd4, 0x4c, 0x4b, - 0x6f, 0x57, 0xc9, 0xf5, 0x8f, 0x6f, 0x0f, 0xa2, 0x71, 0xfc, 0xfb, 0x24, 0xe4, 0xa3, 0x33, 0x1b, - 0x19, 0x81, 0x0d, 0x5a, 0x9f, 0x25, 0xfa, 0xf8, 0x3e, 0x72, 0xdf, 0x09, 0x6f, 0x7e, 0x8d, 0x14, - 0xee, 0xf2, 0x28, 0x9b, 0xa4, 0x54, 0x86, 0x24, 0x4d, 0x93, 0x3c, 0xb0, 0x98, 0xcd, 0xe7, 0x19, - 0x95, 0x5f, 0xa1, 0x0d, 0x18, 0xbd, 0xe9, 0x51, 0xee, 0x51, 0xca, 0xfd, 0xe8, 0xfd, 0xb9, 0x6f, - 0xec, 0x53, 0xf2, 0xec, 0x8d, 0x7d, 0x6d, 0x67, 0x57, 0xdd, 0xae, 0x6c, 0xa9, 0x1c, 0x8e, 0xce, - 0x43, 0xca, 0xd2, 0x5f, 0x3e, 0xee, 0x2e, 0xf1, 0x54, 0x34, 0x6c, 0xe0, 0xcf, 0x43, 0xea, 0x0e, - 0xd6, 0x6f, 0x75, 0x17, 0x56, 0x2a, 0xfa, 0x31, 0xa6, 0xfe, 0x02, 0xa4, 0x69, 0xbc, 0x10, 0x00, - 0x8f, 0x98, 0x3c, 0x82, 0x32, 0x90, 0x5a, 0xdb, 0x55, 0x49, 0xfa, 0xcb, 0x90, 0x67, 0x52, 0x6d, - 0x6f, 0xb3, 0xba, 0x56, 0x95, 0x13, 0xa5, 0x15, 0x18, 0x65, 0x41, 0x20, 0x8f, 0x46, 0x10, 0x06, - 0x79, 0x84, 0x5f, 0x72, 0x0e, 0x49, 0x68, 0x0f, 0xb7, 0x57, 0xab, 0xaa, 0x9c, 0x88, 0x6e, 0xaf, - 0x07, 0xf9, 0xe8, 0xb8, 0xf6, 0x93, 0xc9, 0xa9, 0xbf, 0x90, 0x20, 0x17, 0x19, 0xbf, 0x48, 0xe3, - 0xd7, 0x2d, 0xcb, 0xb9, 0xa3, 0xe9, 0x96, 0xa9, 0x7b, 0x3c, 0x29, 0x80, 0x8a, 0x2a, 0x44, 0x32, - 0xec, 0xa6, 0xfd, 0x44, 0x9c, 0x7f, 0x5d, 0x02, 0xb9, 0x77, 0x74, 0xeb, 0x71, 0x50, 0xfa, 0xa9, - 0x3a, 0xf8, 0x9a, 0x04, 0x85, 0xee, 0x79, 0xad, 0xc7, 0xbd, 0x8b, 0x3f, 0x55, 0xf7, 0xbe, 0x24, - 0xc1, 0x78, 0xd7, 0x94, 0xf6, 0x7f, 0xca, 0xbb, 0x57, 0x93, 0x30, 0x35, 0x00, 0x87, 0x2a, 0x7c, - 0x9c, 0x65, 0x13, 0xf6, 0xd3, 0xc3, 0xdc, 0x6b, 0x9e, 0x74, 0xcb, 0x3d, 0xdd, 0xf5, 0xf9, 0xf4, - 0xfb, 0x04, 0xc8, 0x66, 0x1d, 0xdb, 0xbe, 0xd9, 0x30, 0xb1, 0xcb, 0x5f, 0xc1, 0xd9, 0x8c, 0x3b, - 0x11, 0xca, 0xd9, 0x5b, 0xf8, 0x47, 0x00, 0xb5, 0x1d, 0xcf, 0xf4, 0xcd, 0xdb, 0x58, 0x33, 0x6d, - 0xf1, 0xbe, 0x4e, 0x66, 0xde, 0x94, 0x2a, 0x0b, 0xcd, 0xa6, 0xed, 0x07, 0xd6, 0x36, 0x6e, 0xea, - 0x3d, 0xd6, 0xa4, 0xf6, 0x25, 0x55, 0x59, 0x68, 0x02, 0xeb, 0x8b, 0x90, 0xaf, 0x3b, 0x1d, 0x32, - 0x3e, 0x30, 0x3b, 0x52, 0x6a, 0x25, 0x35, 0xc7, 0x64, 0x81, 0x09, 0x9f, 0xef, 0xc2, 0x83, 0x82, - 0xbc, 0x9a, 0x63, 0x32, 0x66, 0xf2, 0x38, 0x4c, 0xe8, 0xcd, 0xa6, 0x4b, 0xc8, 0x05, 0x11, 0x1b, - 0x5a, 0x0b, 0x81, 0x98, 0x1a, 0xce, 0xdc, 0x80, 0x8c, 0x88, 0x03, 0xe9, 0x66, 0x24, 0x12, 0x5a, - 0x9b, 0x1d, 0xd7, 0x24, 0xe6, 0xb2, 0x6a, 0xc6, 0x16, 0xca, 0x8b, 0x90, 0x37, 0x3d, 0x2d, 0x3c, - 0x37, 0x4c, 0xcc, 0x26, 0xe6, 0x32, 0x6a, 0xce, 0xf4, 0x82, 0x83, 0xa2, 0xd2, 0x1b, 0x09, 0x28, - 0x74, 0x9f, 0x7b, 0xa2, 0x75, 0xc8, 0x58, 0x8e, 0xa1, 0xd3, 0x44, 0x60, 0x87, 0xee, 0x73, 0x31, - 0x47, 0xa5, 0xf3, 0x5b, 0xdc, 0x5e, 0x0d, 0x90, 0x33, 0x7f, 0x23, 0x41, 0x46, 0x88, 0xd1, 0x39, - 0x48, 0xb5, 0x75, 0xff, 0x88, 0xd2, 0xa5, 0x57, 0x13, 0xb2, 0xa4, 0xd2, 0x6b, 0x22, 0xf7, 0xda, - 0xba, 0x4d, 0x53, 0x80, 0xcb, 0xc9, 0x35, 0xd9, 0x57, 0x0b, 0xeb, 0x75, 0x3a, 0x0e, 0x3b, 0xad, - 0x16, 0xb6, 0x7d, 0x4f, 0xec, 0x2b, 0x97, 0xaf, 0x71, 0x31, 0x7a, 0x0a, 0x26, 0x7d, 0x57, 0x37, - 0xad, 0x2e, 0xdb, 0x14, 0xb5, 0x95, 0x85, 0x22, 0x30, 0x2e, 0xc3, 0x79, 0xc1, 0x5b, 0xc7, 0xbe, - 0x6e, 0x1c, 0xe1, 0x7a, 0x08, 0x1a, 0xa5, 0x87, 0x6a, 0x0f, 0x72, 0x83, 0x75, 0xae, 0x17, 0xd8, - 0xd2, 0x77, 0x25, 0x98, 0x14, 0x03, 0x7c, 0x3d, 0x08, 0xd6, 0x36, 0x80, 0x6e, 0xdb, 0x8e, 0x1f, - 0x0d, 0x57, 0x7f, 0x2a, 0xf7, 0xe1, 0xe6, 0x2b, 0x01, 0x48, 0x8d, 0x10, 0xcc, 0xb4, 0x00, 0x42, - 0xcd, 0xa9, 0x61, 0xbb, 0x00, 0x39, 0x7e, 0xa8, 0x4d, 0x7f, 0x19, 0x61, 0x6f, 0x7d, 0xc0, 0x44, - 0x64, 0xd2, 0x47, 0xd3, 0x90, 0xae, 0xe1, 0xa6, 0x69, 0xf3, 0xa3, 0x36, 0x76, 0x21, 0x0e, 0xf0, - 0x52, 0xc1, 0x01, 0xde, 0xea, 0xa7, 0x61, 0xca, 0x70, 0x5a, 0xbd, 0xee, 0xae, 0xca, 0x3d, 0x6f, - 0x9e, 0xde, 0x75, 0xe9, 0x53, 0x10, 0x4e, 0x67, 0x5f, 0x91, 0xa4, 0xaf, 0x26, 0x92, 0x1b, 0x7b, - 0xab, 0x5f, 0x4f, 0xcc, 0x6c, 0x30, 0xe8, 0x9e, 0x58, 0xa9, 0x8a, 0x1b, 0x16, 0x36, 0x88, 0xf7, - 0xf0, 0x83, 0x0f, 0xc3, 0xd3, 0x4d, 0xd3, 0x3f, 0xea, 0xd4, 0xe6, 0x0d, 0xa7, 0xb5, 0xd0, 0x74, - 0x9a, 0x4e, 0xf8, 0x63, 0x10, 0xb9, 0xa2, 0x17, 0xf4, 0x3f, 0xfe, 0x83, 0x50, 0x36, 0x90, 0xce, - 0xc4, 0xfe, 0x7a, 0x54, 0xde, 0x81, 0x29, 0x6e, 0xac, 0xd1, 0x13, 0x69, 0x36, 0x87, 0xa3, 0xfb, - 0x9e, 0x4a, 0x28, 0xdf, 0x7c, 0x87, 0x76, 0x3a, 0x75, 0x92, 0x43, 0x89, 0x8e, 0x4d, 0xea, 0x65, - 0x15, 0x1e, 0xe8, 0xe2, 0x63, 0x8f, 0x26, 0x76, 0x63, 0x18, 0xbf, 0xc3, 0x19, 0xa7, 0x22, 0x8c, - 0xfb, 0x1c, 0x5a, 0x5e, 0x83, 0xf1, 0xb3, 0x70, 0xfd, 0x15, 0xe7, 0xca, 0xe3, 0x28, 0xc9, 0x06, - 0x4c, 0x50, 0x12, 0xa3, 0xe3, 0xf9, 0x4e, 0x8b, 0xd6, 0xbd, 0xfb, 0xd3, 0xfc, 0xf5, 0x3b, 0xec, - 0x59, 0x29, 0x10, 0xd8, 0x5a, 0x80, 0x2a, 0x97, 0x81, 0x1e, 0xc2, 0xd7, 0xb1, 0x61, 0xc5, 0x30, - 0xbc, 0xc9, 0x1d, 0x09, 0xec, 0xcb, 0x9f, 0x80, 0x69, 0xf2, 0x3f, 0x2d, 0x4b, 0x51, 0x4f, 0xe2, - 0xcf, 0x60, 0x94, 0xef, 0xbe, 0xc2, 0x1e, 0xc7, 0xa9, 0x80, 0x20, 0xe2, 0x53, 0x64, 0x17, 0x9b, - 0xd8, 0xf7, 0xb1, 0xeb, 0x69, 0xba, 0x35, 0xc8, 0xbd, 0xc8, 0x1b, 0xac, 0xf2, 0xc5, 0x77, 0xbb, - 0x77, 0x71, 0x83, 0x21, 0x2b, 0x96, 0x55, 0x3e, 0x84, 0x07, 0x07, 0x64, 0xc5, 0x10, 0x9c, 0xaf, - 0x72, 0xce, 0xe9, 0xbe, 0xcc, 0x20, 0xb4, 0x7b, 0x20, 0xe4, 0xc1, 0x5e, 0x0e, 0xc1, 0xf9, 0x25, - 0xce, 0x89, 0x38, 0x56, 0x6c, 0x29, 0x61, 0xbc, 0x01, 0x93, 0xb7, 0xb1, 0x5b, 0x73, 0x3c, 0x7e, - 0x70, 0x30, 0x04, 0xdd, 0x6b, 0x9c, 0x6e, 0x82, 0x03, 0xe9, 0x31, 0x02, 0xe1, 0xba, 0x0a, 0x99, - 0x86, 0x6e, 0xe0, 0x21, 0x28, 0xbe, 0xcc, 0x29, 0xc6, 0x88, 0x3d, 0x81, 0x56, 0x20, 0xdf, 0x74, - 0x78, 0x67, 0x8a, 0x87, 0xbf, 0xce, 0xe1, 0x39, 0x81, 0xe1, 0x14, 0x6d, 0xa7, 0xdd, 0xb1, 0x48, - 0xdb, 0x8a, 0xa7, 0xf8, 0x4d, 0x41, 0x21, 0x30, 0x9c, 0xe2, 0x0c, 0x61, 0xfd, 0x8a, 0xa0, 0xf0, - 0x22, 0xf1, 0x7c, 0x0e, 0x72, 0x8e, 0x6d, 0x1d, 0x3b, 0xf6, 0x30, 0x4e, 0xfc, 0x16, 0x67, 0x00, - 0x0e, 0x21, 0x04, 0xd7, 0x20, 0x3b, 0xec, 0x46, 0xfc, 0xf6, 0xbb, 0xe2, 0xf1, 0x10, 0x3b, 0xb0, - 0x01, 0x13, 0xa2, 0x40, 0x99, 0x8e, 0x3d, 0x04, 0xc5, 0xef, 0x70, 0x8a, 0x42, 0x04, 0xc6, 0x97, - 0xe1, 0x63, 0xcf, 0x6f, 0xe2, 0x61, 0x48, 0xde, 0x10, 0xcb, 0xe0, 0x10, 0x1e, 0xca, 0x1a, 0xb6, - 0x8d, 0xa3, 0xe1, 0x18, 0xbe, 0x26, 0x42, 0x29, 0x30, 0x84, 0x62, 0x0d, 0xc6, 0x5b, 0xba, 0xeb, - 0x1d, 0xe9, 0xd6, 0x50, 0xdb, 0xf1, 0xbb, 0x9c, 0x23, 0x1f, 0x80, 0x78, 0x44, 0x3a, 0xf6, 0x59, - 0x68, 0xbe, 0x2e, 0x22, 0x12, 0x81, 0xf1, 0x47, 0xcf, 0xf3, 0xe9, 0xd9, 0xcc, 0x59, 0xd8, 0x7e, - 0x4f, 0x3c, 0x7a, 0x0c, 0xbb, 0x1d, 0x65, 0xbc, 0x06, 0x59, 0xcf, 0x7c, 0x79, 0x28, 0x9a, 0xdf, - 0x17, 0x3b, 0x4d, 0x01, 0x04, 0xfc, 0x22, 0x9c, 0x1f, 0xd8, 0x26, 0x86, 0x20, 0xfb, 0x03, 0x4e, - 0x76, 0x6e, 0x40, 0xab, 0xe0, 0x25, 0xe1, 0xac, 0x94, 0x7f, 0x28, 0x4a, 0x02, 0xee, 0xe1, 0xda, - 0x23, 0x93, 0xbd, 0xa7, 0x37, 0xce, 0x16, 0xb5, 0x3f, 0x12, 0x51, 0x63, 0xd8, 0xae, 0xa8, 0x1d, - 0xc0, 0x39, 0xce, 0x78, 0xb6, 0x7d, 0xfd, 0x86, 0x28, 0xac, 0x0c, 0x7d, 0xd8, 0xbd, 0xbb, 0x9f, - 0x86, 0x99, 0x20, 0x9c, 0x62, 0x28, 0xf5, 0xb4, 0x96, 0xde, 0x1e, 0x82, 0xf9, 0x9b, 0x9c, 0x59, - 0x54, 0xfc, 0x60, 0xaa, 0xf5, 0xb6, 0xf5, 0x36, 0x21, 0x7f, 0x01, 0x14, 0x41, 0xde, 0xb1, 0x5d, - 0x6c, 0x38, 0x4d, 0xdb, 0x7c, 0x19, 0xd7, 0x87, 0xa0, 0xfe, 0xe3, 0x9e, 0xad, 0x3a, 0x8c, 0xc0, - 0x09, 0xf3, 0x26, 0xc8, 0xc1, 0xac, 0xa2, 0x99, 0xad, 0xb6, 0xe3, 0xfa, 0x31, 0x8c, 0x7f, 0x22, - 0x76, 0x2a, 0xc0, 0x6d, 0x52, 0x58, 0xb9, 0x0a, 0x05, 0x7a, 0x39, 0x6c, 0x4a, 0xfe, 0x29, 0x27, - 0x1a, 0x0f, 0x51, 0xbc, 0x70, 0x18, 0x4e, 0xab, 0xad, 0xbb, 0xc3, 0xd4, 0xbf, 0x3f, 0x13, 0x85, - 0x83, 0x43, 0x78, 0xe1, 0xf0, 0x8f, 0xdb, 0x98, 0x74, 0xfb, 0x21, 0x18, 0xbe, 0x25, 0x0a, 0x87, - 0xc0, 0x70, 0x0a, 0x31, 0x30, 0x0c, 0x41, 0xf1, 0xe7, 0x82, 0x42, 0x60, 0x08, 0xc5, 0xc7, 0xc3, - 0x46, 0xeb, 0xe2, 0xa6, 0xe9, 0xf9, 0x2e, 0x1b, 0x85, 0xef, 0x4f, 0xf5, 0xed, 0x77, 0xbb, 0x87, - 0x30, 0x35, 0x02, 0x2d, 0xdf, 0x80, 0x89, 0x9e, 0x11, 0x03, 0xc5, 0xfd, 0xa2, 0xaf, 0x7c, 0xe6, - 0x7d, 0x5e, 0x8c, 0xba, 0x27, 0x8c, 0xf2, 0x16, 0xd9, 0xf7, 0xee, 0x39, 0x20, 0x9e, 0xec, 0x95, - 0xf7, 0x83, 0xad, 0xef, 0x1a, 0x03, 0xca, 0xcf, 0xc3, 0x78, 0xd7, 0x0c, 0x10, 0x4f, 0xf5, 0xb3, - 0x9c, 0x2a, 0x1f, 0x1d, 0x01, 0xca, 0x2b, 0x90, 0x22, 0xfd, 0x3c, 0x1e, 0xfe, 0x73, 0x1c, 0x4e, - 0xcd, 0xcb, 0x1f, 0x85, 0x8c, 0xe8, 0xe3, 0xf1, 0xd0, 0x9f, 0xe7, 0xd0, 0x00, 0x42, 0xe0, 0xa2, - 0x87, 0xc7, 0xc3, 0x7f, 0x41, 0xc0, 0x05, 0x84, 0xc0, 0x87, 0x0f, 0xe1, 0x5f, 0x7e, 0x2e, 0xc5, - 0xeb, 0xb0, 0x88, 0xdd, 0x35, 0x18, 0xe3, 0xcd, 0x3b, 0x1e, 0xfd, 0x59, 0x7e, 0x73, 0x81, 0x28, - 0x5f, 0x86, 0xf4, 0x90, 0x01, 0xff, 0x45, 0x0e, 0x65, 0xf6, 0xe5, 0x35, 0xc8, 0x45, 0x1a, 0x76, - 0x3c, 0xfc, 0x97, 0x38, 0x3c, 0x8a, 0x22, 0xae, 0xf3, 0x86, 0x1d, 0x4f, 0xf0, 0xcb, 0xc2, 0x75, - 0x8e, 0x20, 0x61, 0x13, 0xbd, 0x3a, 0x1e, 0xfd, 0x2b, 0x22, 0xea, 0x02, 0x52, 0x7e, 0x0e, 0xb2, - 0x41, 0xfd, 0x8d, 0xc7, 0xff, 0x2a, 0xc7, 0x87, 0x18, 0x12, 0x81, 0x48, 0xfd, 0x8f, 0xa7, 0xf8, - 0xbc, 0x88, 0x40, 0x04, 0x45, 0x1e, 0xa3, 0xde, 0x9e, 0x1e, 0xcf, 0xf4, 0x6b, 0xe2, 0x31, 0xea, - 0x69, 0xe9, 0x64, 0x37, 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x75, 0xb1, 0x9b, 0xd4, 0x9e, 0xb8, 0xd1, - 0xdb, 0x24, 0xe3, 0x39, 0x7e, 0x43, 0xb8, 0xd1, 0xd3, 0x23, 0xcb, 0x7b, 0x80, 0xfa, 0x1b, 0x64, - 0x3c, 0xdf, 0x17, 0x38, 0xdf, 0x64, 0x5f, 0x7f, 0x2c, 0x7f, 0x12, 0xce, 0x0d, 0x6e, 0x8e, 0xf1, - 0xac, 0x5f, 0x7c, 0xbf, 0xe7, 0x75, 0x26, 0xda, 0x1b, 0xcb, 0x07, 0x61, 0x95, 0x8d, 0x36, 0xc6, - 0x78, 0xda, 0x57, 0xdf, 0xef, 0x2e, 0xb4, 0xd1, 0xbe, 0x58, 0xae, 0x00, 0x84, 0x3d, 0x29, 0x9e, - 0xeb, 0x35, 0xce, 0x15, 0x01, 0x91, 0x47, 0x83, 0xb7, 0xa4, 0x78, 0xfc, 0x97, 0xc5, 0xa3, 0xc1, - 0x11, 0xe4, 0xd1, 0x10, 0xdd, 0x28, 0x1e, 0xfd, 0xba, 0x78, 0x34, 0x04, 0xa4, 0x7c, 0x0d, 0x32, - 0x76, 0xc7, 0xb2, 0x48, 0x6e, 0xa1, 0xfb, 0x7f, 0x64, 0xa3, 0xfc, 0xd3, 0x07, 0x1c, 0x2c, 0x00, - 0xe5, 0x15, 0x48, 0xe3, 0x56, 0x0d, 0xd7, 0xe3, 0x90, 0xff, 0xfc, 0x81, 0xa8, 0x27, 0xc4, 0xba, - 0xfc, 0x1c, 0x00, 0x7b, 0x99, 0xa6, 0xbf, 0xb1, 0xc4, 0x60, 0xff, 0xe5, 0x03, 0xfe, 0xfb, 0x7d, - 0x08, 0x09, 0x09, 0xd8, 0xd7, 0x00, 0xf7, 0x27, 0x78, 0xb7, 0x9b, 0x80, 0xbe, 0x80, 0x5f, 0x85, - 0xb1, 0x9b, 0x9e, 0x63, 0xfb, 0x7a, 0x33, 0x0e, 0xfd, 0xaf, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0x5a, - 0x8e, 0x8b, 0x7d, 0xbd, 0xe9, 0xc5, 0x61, 0xff, 0x8d, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, - 0x0f, 0xb3, 0xee, 0x7f, 0x17, 0x60, 0x01, 0x20, 0x4e, 0x93, 0xff, 0x6f, 0xe1, 0xe3, 0x38, 0xec, - 0x7b, 0xc2, 0x69, 0x6e, 0x5f, 0xfe, 0x28, 0x64, 0xc9, 0xbf, 0xec, 0x9b, 0x96, 0x18, 0xf0, 0x7f, - 0x70, 0x70, 0x88, 0x20, 0x77, 0xf6, 0xfc, 0xba, 0x6f, 0xc6, 0x07, 0xfb, 0x3f, 0xf9, 0x4e, 0x0b, - 0xfb, 0x72, 0x05, 0x72, 0x9e, 0x5f, 0xaf, 0x77, 0xf8, 0x44, 0x13, 0x03, 0xff, 0xc1, 0x07, 0xc1, - 0x4b, 0x6e, 0x80, 0x59, 0xbd, 0x38, 0xf8, 0xbc, 0x0e, 0x36, 0x9c, 0x0d, 0x87, 0x9d, 0xd4, 0xc1, - 0xcf, 0x64, 0xa1, 0x64, 0x38, 0xad, 0x9a, 0xe3, 0x2d, 0xb0, 0x82, 0x12, 0x29, 0x46, 0x0b, 0x8e, - 0xcd, 0x51, 0x28, 0xe9, 0xd8, 0x78, 0xe6, 0x6c, 0xc7, 0x73, 0xa5, 0xf3, 0x90, 0xde, 0xef, 0xd4, - 0x6a, 0xc7, 0x48, 0x86, 0xa4, 0xd7, 0xa9, 0xf1, 0xaf, 0x2f, 0xc8, 0xbf, 0xa5, 0xb7, 0x93, 0x30, - 0x5e, 0xb1, 0xac, 0x83, 0xe3, 0x36, 0xf6, 0x76, 0x6d, 0xbc, 0xdb, 0x40, 0x0a, 0x8c, 0xd2, 0xf5, - 0x3c, 0x4b, 0xcd, 0xa4, 0xeb, 0x23, 0x2a, 0xbf, 0x0e, 0x34, 0x8b, 0xf4, 0xe0, 0x32, 0x11, 0x68, - 0x16, 0x03, 0xcd, 0x12, 0x3b, 0xb7, 0x0c, 0x34, 0x4b, 0x81, 0x66, 0x99, 0x9e, 0x5e, 0x26, 0x03, - 0xcd, 0x72, 0xa0, 0x59, 0xa1, 0xa7, 0xf3, 0xe3, 0x81, 0x66, 0x25, 0xd0, 0x5c, 0xa2, 0xe7, 0xf1, - 0xa9, 0x40, 0x73, 0x29, 0xd0, 0x5c, 0xa6, 0xc7, 0xf0, 0x93, 0x81, 0xe6, 0x72, 0xa0, 0xb9, 0x42, - 0x8f, 0xde, 0x51, 0xa0, 0xb9, 0x12, 0x68, 0xae, 0xd2, 0x6f, 0x2c, 0xc6, 0x02, 0xcd, 0x55, 0x34, - 0x03, 0x63, 0x6c, 0x65, 0xcf, 0xd0, 0x9f, 0x36, 0x27, 0xae, 0x8f, 0xa8, 0x42, 0x10, 0xea, 0x9e, - 0xa5, 0xdf, 0x51, 0x8c, 0x86, 0xba, 0x67, 0x43, 0xdd, 0x22, 0xfd, 0xa0, 0x58, 0x0e, 0x75, 0x8b, - 0xa1, 0x6e, 0x49, 0x19, 0x27, 0x69, 0x10, 0xea, 0x96, 0x42, 0xdd, 0xb2, 0x52, 0x20, 0x3b, 0x10, - 0xea, 0x96, 0x43, 0xdd, 0x8a, 0x32, 0x31, 0x2b, 0xcd, 0xe5, 0x43, 0xdd, 0x0a, 0x7a, 0x1a, 0x72, - 0x5e, 0xa7, 0xa6, 0xf1, 0x5f, 0xe2, 0xe9, 0xf7, 0x1a, 0xb9, 0x45, 0x98, 0x27, 0x39, 0x41, 0xb7, - 0xf5, 0xfa, 0x88, 0x0a, 0x5e, 0xa7, 0xc6, 0xeb, 0xe4, 0x6a, 0x1e, 0xe8, 0xb1, 0x82, 0x46, 0x3f, - 0x54, 0x2c, 0xbd, 0x25, 0x41, 0xf6, 0xe0, 0x8e, 0x43, 0x7f, 0xd8, 0xf4, 0xfe, 0x97, 0x37, 0x57, - 0x38, 0xbd, 0xb4, 0xac, 0x94, 0xe8, 0x82, 0x24, 0x55, 0x08, 0x42, 0xdd, 0x8a, 0xf2, 0x08, 0x5d, - 0x50, 0xa0, 0x5b, 0x41, 0x0b, 0x90, 0x8f, 0x2c, 0x68, 0x91, 0x7e, 0x82, 0xd1, 0xbd, 0x22, 0x49, - 0xcd, 0x85, 0x2b, 0x5a, 0x5c, 0x4d, 0x03, 0x49, 0x7b, 0xf2, 0xc7, 0xbf, 0xe3, 0x94, 0x3e, 0x9f, - 0x80, 0x1c, 0x3b, 0x89, 0xa4, 0xab, 0x22, 0xb7, 0x62, 0x93, 0xf9, 0x31, 0x77, 0x63, 0x44, 0x15, - 0x02, 0xa4, 0x02, 0x30, 0x53, 0x92, 0xe1, 0xcc, 0x93, 0xd5, 0x67, 0xfe, 0xee, 0xed, 0x0b, 0x1f, - 0x39, 0xf5, 0x09, 0x22, 0xb1, 0x5b, 0x60, 0x75, 0x76, 0xfe, 0xd0, 0xb4, 0xfd, 0x67, 0x17, 0xaf, - 0x90, 0x00, 0x87, 0x2c, 0xe8, 0x10, 0x32, 0x6b, 0xba, 0x47, 0x3f, 0xc3, 0xa2, 0xae, 0xa7, 0x56, - 0x2f, 0xff, 0xf7, 0xdb, 0x17, 0x96, 0x62, 0x18, 0x79, 0x09, 0x9c, 0xdf, 0x3e, 0x26, 0xac, 0x97, - 0x96, 0x09, 0xfc, 0xfa, 0x88, 0x1a, 0x50, 0xa1, 0x45, 0xe1, 0xea, 0x8e, 0xde, 0x62, 0xdf, 0x9a, - 0x24, 0x57, 0xe5, 0x93, 0xb7, 0x2f, 0xe4, 0xb7, 0x8f, 0x43, 0x79, 0xe8, 0x0a, 0xb9, 0x5a, 0xcd, - 0xc0, 0x28, 0x73, 0x75, 0x75, 0xfd, 0xcd, 0x7b, 0xc5, 0x91, 0xb7, 0xee, 0x15, 0x47, 0xfe, 0xf6, - 0x5e, 0x71, 0xe4, 0x7b, 0xf7, 0x8a, 0xd2, 0x7b, 0xf7, 0x8a, 0xd2, 0x0f, 0xef, 0x15, 0xa5, 0xbb, - 0x27, 0x45, 0xe9, 0x6b, 0x27, 0x45, 0xe9, 0x1b, 0x27, 0x45, 0xe9, 0xdb, 0x27, 0x45, 0xe9, 0xcd, - 0x93, 0xe2, 0xc8, 0x5b, 0x27, 0xc5, 0x91, 0xef, 0x9d, 0x14, 0xa5, 0xef, 0x9f, 0x14, 0x47, 0xde, - 0x3b, 0x29, 0x4a, 0x3f, 0x3c, 0x29, 0x8e, 0xdc, 0xfd, 0x87, 0xa2, 0xf4, 0x3f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0xca, 0xac, 0x8b, 0xa6, 0xff, 0x31, 0x00, 0x00, + // 4043 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0xbf, 0xc0, 0x8b, 0x44, 0x1e, 0x52, 0x14, 0x04, 0xc9, 0xbb, 0x58, 0x39, 0xe6, 0x6a, 0x69, + 0x3b, 0x96, 0xed, 0x58, 0xb2, 0x75, 0xd9, 0x0b, 0xf7, 0x9f, 0x78, 0x48, 0x8a, 0xab, 0xd5, 0xfe, + 0x25, 0x51, 0x01, 0xa5, 0x78, 0x9d, 0x3e, 0x60, 0x20, 0xf0, 0x23, 0x85, 0x5d, 0x10, 0x60, 0x00, + 0x70, 0xd7, 0xf2, 0xd3, 0xb6, 0xee, 0x65, 0x32, 0x9d, 0xde, 0xd2, 0xce, 0x34, 0x71, 0x1d, 0xb7, + 0xcd, 0x4c, 0xeb, 0x34, 0xe9, 0x25, 0xe9, 0x25, 0xcd, 0xf4, 0xa9, 0x2f, 0x69, 0xfd, 0xd4, 0x71, + 0xde, 0x3a, 0x9d, 0x8e, 0xc7, 0xab, 0x78, 0xa6, 0x69, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xea, + 0x97, 0xce, 0x77, 0x03, 0xc0, 0x8b, 0x16, 0x54, 0xa6, 0x4e, 0x9e, 0x24, 0x9c, 0x73, 0x7e, 0x3f, + 0x1c, 0x9c, 0xef, 0x7c, 0xe7, 0x1c, 0x7c, 0x04, 0x7c, 0x6f, 0x0d, 0xe6, 0x5b, 0xb6, 0xdd, 0x32, + 0xd1, 0x52, 0xc7, 0xb1, 0x3d, 0xfb, 0xa0, 0xdb, 0x5c, 0x6a, 0x20, 0x57, 0x77, 0x8c, 0x8e, 0x67, + 0x3b, 0x8b, 0x44, 0x26, 0x4d, 0x51, 0x8b, 0x45, 0x6e, 0x51, 0xd8, 0x86, 0xe9, 0x6b, 0x86, 0x89, + 0xd6, 0x7d, 0xc3, 0x3a, 0xf2, 0xa4, 0xcb, 0x90, 0x68, 0x1a, 0x26, 0x92, 0x85, 0xf9, 0xf8, 0x42, + 0x66, 0xf9, 0xb1, 0xc5, 0x3e, 0xd0, 0x62, 0x2f, 0x62, 0x17, 0x8b, 0x15, 0x82, 0x28, 0xbc, 0x9b, + 0x80, 0x99, 0x21, 0x5a, 0x49, 0x82, 0x84, 0xa5, 0xb5, 0x31, 0xa3, 0xb0, 0x90, 0x56, 0xc8, 0xff, + 0x92, 0x0c, 0x13, 0x1d, 0x4d, 0xbf, 0xad, 0xb5, 0x90, 0x1c, 0x23, 0x62, 0x7e, 0x29, 0xe5, 0x01, + 0x1a, 0xa8, 0x83, 0xac, 0x06, 0xb2, 0xf4, 0x23, 0x39, 0x3e, 0x1f, 0x5f, 0x48, 0x2b, 0x21, 0x89, + 0xf4, 0x34, 0x4c, 0x77, 0xba, 0x07, 0xa6, 0xa1, 0xab, 0x21, 0x33, 0x98, 0x8f, 0x2f, 0x24, 0x15, + 0x91, 0x2a, 0xd6, 0x03, 0xe3, 0x27, 0x60, 0xea, 0x2e, 0xd2, 0x6e, 0x87, 0x4d, 0x33, 0xc4, 0x34, + 0x87, 0xc5, 0x21, 0xc3, 0x0a, 0x64, 0xdb, 0xc8, 0x75, 0xb5, 0x16, 0x52, 0xbd, 0xa3, 0x0e, 0x92, + 0x13, 0xe4, 0xe9, 0xe7, 0x07, 0x9e, 0xbe, 0xff, 0xc9, 0x33, 0x0c, 0xb5, 0x77, 0xd4, 0x41, 0x52, + 0x09, 0xd2, 0xc8, 0xea, 0xb6, 0x29, 0x43, 0xf2, 0x84, 0xf8, 0x55, 0xad, 0x6e, 0xbb, 0x9f, 0x25, + 0x85, 0x61, 0x8c, 0x62, 0xc2, 0x45, 0xce, 0x1d, 0x43, 0x47, 0xf2, 0x38, 0x21, 0x78, 0x62, 0x80, + 0xa0, 0x4e, 0xf5, 0xfd, 0x1c, 0x1c, 0x27, 0x55, 0x20, 0x8d, 0x5e, 0xf2, 0x90, 0xe5, 0x1a, 0xb6, + 0x25, 0x4f, 0x10, 0x92, 0xc7, 0x87, 0xac, 0x22, 0x32, 0x1b, 0xfd, 0x14, 0x01, 0x4e, 0xba, 0x08, + 0x13, 0x76, 0xc7, 0x33, 0x6c, 0xcb, 0x95, 0x53, 0xf3, 0xc2, 0x42, 0x66, 0xf9, 0x63, 0x43, 0x13, + 0xa1, 0x46, 0x6d, 0x14, 0x6e, 0x2c, 0x6d, 0x82, 0xe8, 0xda, 0x5d, 0x47, 0x47, 0xaa, 0x6e, 0x37, + 0x90, 0x6a, 0x58, 0x4d, 0x5b, 0x4e, 0x13, 0x82, 0xf3, 0x83, 0x0f, 0x42, 0x0c, 0x2b, 0x76, 0x03, + 0x6d, 0x5a, 0x4d, 0x5b, 0xc9, 0xb9, 0x3d, 0xd7, 0xd2, 0x19, 0x18, 0x77, 0x8f, 0x2c, 0x4f, 0x7b, + 0x49, 0xce, 0x92, 0x0c, 0x61, 0x57, 0x85, 0xff, 0x4e, 0xc2, 0xd4, 0x28, 0x29, 0x76, 0x15, 0x92, + 0x4d, 0xfc, 0x94, 0x72, 0xec, 0x34, 0x31, 0xa0, 0x98, 0xde, 0x20, 0x8e, 0xff, 0x88, 0x41, 0x2c, + 0x41, 0xc6, 0x42, 0xae, 0x87, 0x1a, 0x34, 0x23, 0xe2, 0x23, 0xe6, 0x14, 0x50, 0xd0, 0x60, 0x4a, + 0x25, 0x7e, 0xa4, 0x94, 0xba, 0x09, 0x53, 0xbe, 0x4b, 0xaa, 0xa3, 0x59, 0x2d, 0x9e, 0x9b, 0x4b, + 0x51, 0x9e, 0x2c, 0x56, 0x39, 0x4e, 0xc1, 0x30, 0x25, 0x87, 0x7a, 0xae, 0xa5, 0x75, 0x00, 0xdb, + 0x42, 0x76, 0x53, 0x6d, 0x20, 0xdd, 0x94, 0x53, 0x27, 0x44, 0xa9, 0x86, 0x4d, 0x06, 0xa2, 0x64, + 0x53, 0xa9, 0x6e, 0x4a, 0x57, 0x82, 0x54, 0x9b, 0x38, 0x21, 0x53, 0xb6, 0xe9, 0x26, 0x1b, 0xc8, + 0xb6, 0x7d, 0xc8, 0x39, 0x08, 0xe7, 0x3d, 0x6a, 0xb0, 0x27, 0x4b, 0x13, 0x27, 0x16, 0x23, 0x9f, + 0x4c, 0x61, 0x30, 0xfa, 0x60, 0x93, 0x4e, 0xf8, 0x52, 0x7a, 0x14, 0x7c, 0x81, 0x4a, 0xd2, 0x0a, + 0x48, 0x15, 0xca, 0x72, 0xe1, 0x8e, 0xd6, 0x46, 0x73, 0x97, 0x21, 0xd7, 0x1b, 0x1e, 0x69, 0x16, + 0x92, 0xae, 0xa7, 0x39, 0x1e, 0xc9, 0xc2, 0xa4, 0x42, 0x2f, 0x24, 0x11, 0xe2, 0xc8, 0x6a, 0x90, + 0x2a, 0x97, 0x54, 0xf0, 0xbf, 0x73, 0x97, 0x60, 0xb2, 0xe7, 0xf6, 0xa3, 0x02, 0x0b, 0x5f, 0x1c, + 0x87, 0xd9, 0x61, 0x39, 0x37, 0x34, 0xfd, 0xcf, 0xc0, 0xb8, 0xd5, 0x6d, 0x1f, 0x20, 0x47, 0x8e, + 0x13, 0x06, 0x76, 0x25, 0x95, 0x20, 0x69, 0x6a, 0x07, 0xc8, 0x94, 0x13, 0xf3, 0xc2, 0x42, 0x6e, + 0xf9, 0xe9, 0x91, 0xb2, 0x7a, 0x71, 0x0b, 0x43, 0x14, 0x8a, 0x94, 0x3e, 0x05, 0x09, 0x56, 0xe2, + 0x30, 0xc3, 0x53, 0xa3, 0x31, 0xe0, 0x5c, 0x54, 0x08, 0x4e, 0x7a, 0x18, 0xd2, 0xf8, 0x2f, 0x8d, + 0xed, 0x38, 0xf1, 0x39, 0x85, 0x05, 0x38, 0xae, 0xd2, 0x1c, 0xa4, 0x48, 0x9a, 0x35, 0x10, 0x6f, + 0x0d, 0xfe, 0x35, 0x5e, 0x98, 0x06, 0x6a, 0x6a, 0x5d, 0xd3, 0x53, 0xef, 0x68, 0x66, 0x17, 0x91, + 0x84, 0x49, 0x2b, 0x59, 0x26, 0xfc, 0x0c, 0x96, 0x49, 0xe7, 0x21, 0x43, 0xb3, 0xd2, 0xb0, 0x1a, + 0xe8, 0x25, 0x52, 0x7d, 0x92, 0x0a, 0x4d, 0xd4, 0x4d, 0x2c, 0xc1, 0xb7, 0xbf, 0xe5, 0xda, 0x16, + 0x5f, 0x5a, 0x72, 0x0b, 0x2c, 0x20, 0xb7, 0xbf, 0xd4, 0x5f, 0xf8, 0x1e, 0x19, 0xfe, 0x78, 0xfd, + 0xb9, 0x58, 0xf8, 0x56, 0x0c, 0x12, 0x64, 0xbf, 0x4d, 0x41, 0x66, 0xef, 0xc5, 0xdd, 0xaa, 0xba, + 0x5e, 0xdb, 0x2f, 0x6f, 0x55, 0x45, 0x41, 0xca, 0x01, 0x10, 0xc1, 0xb5, 0xad, 0x5a, 0x69, 0x4f, + 0x8c, 0xf9, 0xd7, 0x9b, 0x3b, 0x7b, 0x17, 0x57, 0xc5, 0xb8, 0x0f, 0xd8, 0xa7, 0x82, 0x44, 0xd8, + 0x60, 0x65, 0x59, 0x4c, 0x4a, 0x22, 0x64, 0x29, 0xc1, 0xe6, 0xcd, 0xea, 0xfa, 0xc5, 0x55, 0x71, + 0xbc, 0x57, 0xb2, 0xb2, 0x2c, 0x4e, 0x48, 0x93, 0x90, 0x26, 0x92, 0x72, 0xad, 0xb6, 0x25, 0xa6, + 0x7c, 0xce, 0xfa, 0x9e, 0xb2, 0xb9, 0xb3, 0x21, 0xa6, 0x7d, 0xce, 0x0d, 0xa5, 0xb6, 0xbf, 0x2b, + 0x82, 0xcf, 0xb0, 0x5d, 0xad, 0xd7, 0x4b, 0x1b, 0x55, 0x31, 0xe3, 0x5b, 0x94, 0x5f, 0xdc, 0xab, + 0xd6, 0xc5, 0x6c, 0x8f, 0x5b, 0x2b, 0xcb, 0xe2, 0xa4, 0x7f, 0x8b, 0xea, 0xce, 0xfe, 0xb6, 0x98, + 0x93, 0xa6, 0x61, 0x92, 0xde, 0x82, 0x3b, 0x31, 0xd5, 0x27, 0xba, 0xb8, 0x2a, 0x8a, 0x81, 0x23, + 0x94, 0x65, 0xba, 0x47, 0x70, 0x71, 0x55, 0x94, 0x0a, 0x15, 0x48, 0x92, 0xec, 0x92, 0x24, 0xc8, + 0x6d, 0x95, 0xca, 0xd5, 0x2d, 0xb5, 0xb6, 0xbb, 0xb7, 0x59, 0xdb, 0x29, 0x6d, 0x89, 0x42, 0x20, + 0x53, 0xaa, 0x9f, 0xde, 0xdf, 0x54, 0xaa, 0xeb, 0x62, 0x2c, 0x2c, 0xdb, 0xad, 0x96, 0xf6, 0xaa, + 0xeb, 0x62, 0xbc, 0xa0, 0xc3, 0xec, 0xb0, 0x3a, 0x33, 0x74, 0x67, 0x84, 0x96, 0x38, 0x76, 0xc2, + 0x12, 0x13, 0xae, 0x81, 0x25, 0xfe, 0x8a, 0x00, 0x33, 0x43, 0x6a, 0xed, 0xd0, 0x9b, 0x3c, 0x0f, + 0x49, 0x9a, 0xa2, 0xb4, 0xfb, 0x3c, 0x39, 0xb4, 0x68, 0x93, 0x84, 0x1d, 0xe8, 0x40, 0x04, 0x17, + 0xee, 0xc0, 0xf1, 0x13, 0x3a, 0x30, 0xa6, 0x18, 0x70, 0xf2, 0x15, 0x01, 0xe4, 0x93, 0xb8, 0x23, + 0x0a, 0x45, 0xac, 0xa7, 0x50, 0x5c, 0xed, 0x77, 0xe0, 0xc2, 0xc9, 0xcf, 0x30, 0xe0, 0xc5, 0x1b, + 0x02, 0x9c, 0x19, 0x3e, 0xa8, 0x0c, 0xf5, 0xe1, 0x53, 0x30, 0xde, 0x46, 0xde, 0xa1, 0xcd, 0x9b, + 0xf5, 0xc7, 0x87, 0xb4, 0x00, 0xac, 0xee, 0x8f, 0x15, 0x43, 0x85, 0x7b, 0x48, 0xfc, 0xa4, 0x69, + 0x83, 0x7a, 0x33, 0xe0, 0xe9, 0xe7, 0x63, 0xf0, 0xd0, 0x50, 0xf2, 0xa1, 0x8e, 0x3e, 0x02, 0x60, + 0x58, 0x9d, 0xae, 0x47, 0x1b, 0x32, 0xad, 0x4f, 0x69, 0x22, 0x21, 0x7b, 0x1f, 0xd7, 0x9e, 0xae, + 0xe7, 0xeb, 0xe3, 0x44, 0x0f, 0x54, 0x44, 0x0c, 0x2e, 0x07, 0x8e, 0x26, 0x88, 0xa3, 0xf9, 0x13, + 0x9e, 0x74, 0xa0, 0xd7, 0x3d, 0x0b, 0xa2, 0x6e, 0x1a, 0xc8, 0xf2, 0x54, 0xd7, 0x73, 0x90, 0xd6, + 0x36, 0xac, 0x16, 0x29, 0xc0, 0xa9, 0x62, 0xb2, 0xa9, 0x99, 0x2e, 0x52, 0xa6, 0xa8, 0xba, 0xce, + 0xb5, 0x18, 0x41, 0xba, 0x8c, 0x13, 0x42, 0x8c, 0xf7, 0x20, 0xa8, 0xda, 0x47, 0x14, 0xbe, 0x3e, + 0x01, 0x99, 0xd0, 0x58, 0x27, 0x5d, 0x80, 0xec, 0x2d, 0xed, 0x8e, 0xa6, 0xf2, 0x51, 0x9d, 0x46, + 0x22, 0x83, 0x65, 0xbb, 0x6c, 0x5c, 0x7f, 0x16, 0x66, 0x89, 0x89, 0xdd, 0xf5, 0x90, 0xa3, 0xea, + 0xa6, 0xe6, 0xba, 0x24, 0x68, 0x29, 0x62, 0x2a, 0x61, 0x5d, 0x0d, 0xab, 0x2a, 0x5c, 0x23, 0xad, + 0xc1, 0x0c, 0x41, 0xb4, 0xbb, 0xa6, 0x67, 0x74, 0x4c, 0xa4, 0xe2, 0x97, 0x07, 0x97, 0x14, 0x62, + 0xdf, 0xb3, 0x69, 0x6c, 0xb1, 0xcd, 0x0c, 0xb0, 0x47, 0xae, 0xb4, 0x0e, 0x8f, 0x10, 0x58, 0x0b, + 0x59, 0xc8, 0xd1, 0x3c, 0xa4, 0xa2, 0xcf, 0x75, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xa1, 0x1e, 0x6a, + 0xee, 0xa1, 0x3c, 0x8b, 0x09, 0xca, 0x31, 0x59, 0x50, 0xce, 0x61, 0xc3, 0x0d, 0x66, 0x57, 0x25, + 0x66, 0x25, 0xab, 0x71, 0x5d, 0x73, 0x0f, 0xa5, 0x22, 0x9c, 0x21, 0x2c, 0xae, 0xe7, 0x18, 0x56, + 0x4b, 0xd5, 0x0f, 0x91, 0x7e, 0x5b, 0xed, 0x7a, 0xcd, 0xcb, 0xf2, 0xc3, 0xe1, 0xfb, 0x13, 0x0f, + 0xeb, 0xc4, 0xa6, 0x82, 0x4d, 0xf6, 0xbd, 0xe6, 0x65, 0xa9, 0x0e, 0x59, 0xbc, 0x18, 0x6d, 0xe3, + 0x65, 0xa4, 0x36, 0x6d, 0x87, 0x74, 0x96, 0xdc, 0x90, 0x9d, 0x1d, 0x8a, 0xe0, 0x62, 0x8d, 0x01, + 0xb6, 0xed, 0x06, 0x2a, 0x26, 0xeb, 0xbb, 0xd5, 0xea, 0xba, 0x92, 0xe1, 0x2c, 0xd7, 0x6c, 0x07, + 0x27, 0x54, 0xcb, 0xf6, 0x03, 0x9c, 0xa1, 0x09, 0xd5, 0xb2, 0x79, 0x78, 0xd7, 0x60, 0x46, 0xd7, + 0xe9, 0x33, 0x1b, 0xba, 0xca, 0x46, 0x7c, 0x57, 0x16, 0x7b, 0x82, 0xa5, 0xeb, 0x1b, 0xd4, 0x80, + 0xe5, 0xb8, 0x2b, 0x5d, 0x81, 0x87, 0x82, 0x60, 0x85, 0x81, 0xd3, 0x03, 0x4f, 0xd9, 0x0f, 0x5d, + 0x83, 0x99, 0xce, 0xd1, 0x20, 0x50, 0xea, 0xb9, 0x63, 0xe7, 0xa8, 0x1f, 0xf6, 0x38, 0x79, 0x6d, + 0x73, 0x90, 0xae, 0x79, 0xa8, 0x21, 0x9f, 0x0d, 0x5b, 0x87, 0x14, 0xd2, 0x12, 0x88, 0xba, 0xae, + 0x22, 0x4b, 0x3b, 0x30, 0x91, 0xaa, 0x39, 0xc8, 0xd2, 0x5c, 0xf9, 0x7c, 0xd8, 0x38, 0xa7, 0xeb, + 0x55, 0xa2, 0x2d, 0x11, 0xa5, 0xf4, 0x14, 0x4c, 0xdb, 0x07, 0xb7, 0x74, 0x9a, 0x59, 0x6a, 0xc7, + 0x41, 0x4d, 0xe3, 0x25, 0xf9, 0x31, 0x12, 0xa6, 0x29, 0xac, 0x20, 0x79, 0xb5, 0x4b, 0xc4, 0xd2, + 0x93, 0x20, 0xea, 0xee, 0xa1, 0xe6, 0x74, 0x48, 0x6b, 0x77, 0x3b, 0x9a, 0x8e, 0xe4, 0xc7, 0xa9, + 0x29, 0x95, 0xef, 0x70, 0x31, 0xce, 0x6c, 0xf7, 0xae, 0xd1, 0xf4, 0x38, 0xe3, 0x13, 0x34, 0xb3, + 0x89, 0x8c, 0xb1, 0xdd, 0x84, 0xd9, 0xae, 0x65, 0x58, 0x1e, 0x72, 0x3a, 0x0e, 0xc2, 0x43, 0x3c, + 0xdd, 0x89, 0xf2, 0x3f, 0x4d, 0x9c, 0x30, 0x86, 0xef, 0x87, 0xad, 0x69, 0x02, 0x28, 0x33, 0xdd, + 0x41, 0x61, 0xa1, 0x08, 0xd9, 0x70, 0x5e, 0x48, 0x69, 0xa0, 0x99, 0x21, 0x0a, 0xb8, 0xc7, 0x56, + 0x6a, 0xeb, 0xb8, 0x3b, 0x7e, 0xb6, 0x2a, 0xc6, 0x70, 0x97, 0xde, 0xda, 0xdc, 0xab, 0xaa, 0xca, + 0xfe, 0xce, 0xde, 0xe6, 0x76, 0x55, 0x8c, 0x3f, 0x95, 0x4e, 0x7d, 0x7f, 0x42, 0xbc, 0x77, 0xef, + 0xde, 0xbd, 0x58, 0xe1, 0x3b, 0x31, 0xc8, 0xf5, 0x4e, 0xc6, 0xd2, 0xff, 0x83, 0xb3, 0xfc, 0x35, + 0xd6, 0x45, 0x9e, 0x7a, 0xd7, 0x70, 0x48, 0xaa, 0xb6, 0x35, 0x3a, 0x5b, 0xfa, 0x51, 0x9e, 0x65, + 0x56, 0x75, 0xe4, 0xbd, 0x60, 0x38, 0x38, 0x11, 0xdb, 0x9a, 0x27, 0x6d, 0xc1, 0x79, 0xcb, 0x56, + 0x5d, 0x4f, 0xb3, 0x1a, 0x9a, 0xd3, 0x50, 0x83, 0x03, 0x04, 0x55, 0xd3, 0x75, 0xe4, 0xba, 0x36, + 0x6d, 0x11, 0x3e, 0xcb, 0xc7, 0x2c, 0xbb, 0xce, 0x8c, 0x83, 0xda, 0x59, 0x62, 0xa6, 0x7d, 0x19, + 0x11, 0x3f, 0x29, 0x23, 0x1e, 0x86, 0x74, 0x5b, 0xeb, 0xa8, 0xc8, 0xf2, 0x9c, 0x23, 0x32, 0xcf, + 0xa5, 0x94, 0x54, 0x5b, 0xeb, 0x54, 0xf1, 0xf5, 0x47, 0xb7, 0x06, 0xe1, 0x38, 0xfe, 0x63, 0x1c, + 0xb2, 0xe1, 0x99, 0x0e, 0x8f, 0xc8, 0x3a, 0xa9, 0xdf, 0x02, 0xd9, 0xe1, 0x8f, 0x3e, 0x70, 0x02, + 0x5c, 0xac, 0xe0, 0xc2, 0x5e, 0x1c, 0xa7, 0x93, 0x96, 0x42, 0x91, 0xb8, 0xa9, 0xe2, 0x3d, 0x8d, + 0xe8, 0xfc, 0x9e, 0x52, 0xd8, 0x95, 0xb4, 0x01, 0xe3, 0xb7, 0x5c, 0xc2, 0x3d, 0x4e, 0xb8, 0x1f, + 0x7b, 0x30, 0xf7, 0x8d, 0x3a, 0x21, 0x4f, 0xdf, 0xa8, 0xab, 0x3b, 0x35, 0x65, 0xbb, 0xb4, 0xa5, + 0x30, 0xb8, 0x74, 0x0e, 0x12, 0xa6, 0xf6, 0xf2, 0x51, 0x6f, 0x0b, 0x20, 0xa2, 0x51, 0x03, 0x7f, + 0x0e, 0x12, 0x77, 0x91, 0x76, 0xbb, 0xb7, 0xf0, 0x12, 0xd1, 0x47, 0x98, 0xfa, 0x4b, 0x90, 0x24, + 0xf1, 0x92, 0x00, 0x58, 0xc4, 0xc4, 0x31, 0x29, 0x05, 0x89, 0x4a, 0x4d, 0xc1, 0xe9, 0x2f, 0x42, + 0x96, 0x4a, 0xd5, 0xdd, 0xcd, 0x6a, 0xa5, 0x2a, 0xc6, 0x0a, 0x6b, 0x30, 0x4e, 0x83, 0x80, 0xb7, + 0x86, 0x1f, 0x06, 0x71, 0x8c, 0x5d, 0x32, 0x0e, 0x81, 0x6b, 0xf7, 0xb7, 0xcb, 0x55, 0x45, 0x8c, + 0x85, 0x97, 0xd7, 0x85, 0x6c, 0x78, 0x9c, 0xfb, 0xf1, 0xe4, 0xd4, 0x5f, 0x09, 0x90, 0x09, 0x8d, + 0x67, 0x78, 0x30, 0xd0, 0x4c, 0xd3, 0xbe, 0xab, 0x6a, 0xa6, 0xa1, 0xb9, 0x2c, 0x29, 0x80, 0x88, + 0x4a, 0x58, 0x32, 0xea, 0xa2, 0xfd, 0x58, 0x9c, 0x7f, 0x5d, 0x00, 0xb1, 0x7f, 0xb4, 0xeb, 0x73, + 0x50, 0xf8, 0x89, 0x3a, 0xf8, 0x9a, 0x00, 0xb9, 0xde, 0x79, 0xae, 0xcf, 0xbd, 0x0b, 0x3f, 0x51, + 0xf7, 0xde, 0x89, 0xc1, 0x64, 0xcf, 0x14, 0x37, 0xaa, 0x77, 0x9f, 0x83, 0x69, 0xa3, 0x81, 0xda, + 0x1d, 0xdb, 0x43, 0x96, 0x7e, 0xa4, 0x9a, 0xe8, 0x0e, 0x32, 0xe5, 0x02, 0x29, 0x14, 0x4b, 0x0f, + 0x9e, 0x13, 0x17, 0x37, 0x03, 0xdc, 0x16, 0x86, 0x15, 0x67, 0x36, 0xd7, 0xab, 0xdb, 0xbb, 0xb5, + 0xbd, 0xea, 0x4e, 0xe5, 0x45, 0x75, 0x7f, 0xe7, 0xff, 0xef, 0xd4, 0x5e, 0xd8, 0x51, 0x44, 0xa3, + 0xcf, 0xec, 0x23, 0xdc, 0xea, 0xbb, 0x20, 0xf6, 0x3b, 0x25, 0x9d, 0x85, 0x61, 0x6e, 0x89, 0x63, + 0xd2, 0x0c, 0x4c, 0xed, 0xd4, 0xd4, 0xfa, 0xe6, 0x7a, 0x55, 0xad, 0x5e, 0xbb, 0x56, 0xad, 0xec, + 0xd5, 0xe9, 0x8b, 0xb3, 0x6f, 0xbd, 0xd7, 0xbb, 0xa9, 0x5f, 0x8d, 0xc3, 0xcc, 0x10, 0x4f, 0xa4, + 0x12, 0x9b, 0xd9, 0xe9, 0x6b, 0xc4, 0x33, 0xa3, 0x78, 0xbf, 0x88, 0xa7, 0x82, 0x5d, 0xcd, 0xf1, + 0xd8, 0x88, 0xff, 0x24, 0xe0, 0x28, 0x59, 0x9e, 0xd1, 0x34, 0x90, 0xc3, 0xce, 0x19, 0xe8, 0x20, + 0x3f, 0x15, 0xc8, 0xe9, 0x51, 0xc3, 0x27, 0x40, 0xea, 0xd8, 0xae, 0xe1, 0x19, 0x77, 0x90, 0x6a, + 0x58, 0xfc, 0x50, 0x02, 0x0f, 0xf6, 0x09, 0x45, 0xe4, 0x9a, 0x4d, 0xcb, 0xf3, 0xad, 0x2d, 0xd4, + 0xd2, 0xfa, 0xac, 0x71, 0x01, 0x8f, 0x2b, 0x22, 0xd7, 0xf8, 0xd6, 0x17, 0x20, 0xdb, 0xb0, 0xbb, + 0x78, 0x4c, 0xa2, 0x76, 0xb8, 0x5f, 0x08, 0x4a, 0x86, 0xca, 0x7c, 0x13, 0x36, 0xc7, 0x06, 0xa7, + 0x21, 0x59, 0x25, 0x43, 0x65, 0xd4, 0xe4, 0x09, 0x98, 0xd2, 0x5a, 0x2d, 0x07, 0x93, 0x73, 0x22, + 0x3a, 0x99, 0xe7, 0x7c, 0x31, 0x31, 0x9c, 0xbb, 0x01, 0x29, 0x1e, 0x07, 0xdc, 0x92, 0x71, 0x24, + 0xd4, 0x0e, 0x3d, 0x93, 0x8a, 0x2d, 0xa4, 0x95, 0x94, 0xc5, 0x95, 0x17, 0x20, 0x6b, 0xb8, 0x6a, + 0x70, 0x38, 0x1a, 0x9b, 0x8f, 0x2d, 0xa4, 0x94, 0x8c, 0xe1, 0xfa, 0xa7, 0x61, 0x85, 0x37, 0x62, + 0x90, 0xeb, 0x3d, 0xdc, 0x95, 0xd6, 0x21, 0x65, 0xda, 0xba, 0x46, 0x52, 0x8b, 0xfe, 0xb2, 0xb0, + 0x10, 0x71, 0x1e, 0xbc, 0xb8, 0xc5, 0xec, 0x15, 0x1f, 0x39, 0xf7, 0x77, 0x02, 0xa4, 0xb8, 0x58, + 0x3a, 0x03, 0x89, 0x8e, 0xe6, 0x1d, 0x12, 0xba, 0x64, 0x39, 0x26, 0x0a, 0x0a, 0xb9, 0xc6, 0x72, + 0xb7, 0xa3, 0x59, 0x24, 0x05, 0x98, 0x1c, 0x5f, 0xe3, 0x75, 0x35, 0x91, 0xd6, 0x20, 0x63, 0xbf, + 0xdd, 0x6e, 0x23, 0xcb, 0x73, 0xf9, 0xba, 0x32, 0x79, 0x85, 0x89, 0xa5, 0xa7, 0x61, 0xda, 0x73, + 0x34, 0xc3, 0xec, 0xb1, 0x4d, 0x10, 0x5b, 0x91, 0x2b, 0x7c, 0xe3, 0x22, 0x9c, 0xe3, 0xbc, 0x0d, + 0xe4, 0x69, 0xfa, 0x21, 0x6a, 0x04, 0xa0, 0x71, 0x72, 0x72, 0x78, 0x96, 0x19, 0xac, 0x33, 0x3d, + 0xc7, 0x16, 0xbe, 0x2b, 0xc0, 0x34, 0x7f, 0x51, 0x69, 0xf8, 0xc1, 0xda, 0x06, 0xd0, 0x2c, 0xcb, + 0xf6, 0xc2, 0xe1, 0x1a, 0x4c, 0xe5, 0x01, 0xdc, 0x62, 0xc9, 0x07, 0x29, 0x21, 0x82, 0xb9, 0x36, + 0x40, 0xa0, 0x39, 0x31, 0x6c, 0xe7, 0x21, 0xc3, 0x4e, 0xee, 0xc9, 0xcf, 0x3f, 0xf4, 0xd5, 0x16, + 0xa8, 0x08, 0xbf, 0xd1, 0x48, 0xb3, 0x90, 0x3c, 0x40, 0x2d, 0xc3, 0x62, 0xe7, 0x89, 0xf4, 0x82, + 0x9f, 0x52, 0x26, 0xfc, 0x53, 0xca, 0xf2, 0x4d, 0x98, 0xd1, 0xed, 0x76, 0xbf, 0xbb, 0x65, 0xb1, + 0xef, 0xf5, 0xda, 0xbd, 0x2e, 0x7c, 0x16, 0x82, 0x11, 0xf3, 0x2b, 0xb1, 0xf8, 0xc6, 0x6e, 0xf9, + 0x6b, 0xb1, 0xb9, 0x0d, 0x8a, 0xdb, 0xe5, 0x8f, 0xa9, 0xa0, 0xa6, 0x89, 0x74, 0xec, 0x3a, 0xfc, + 0xe0, 0xe3, 0xf0, 0x4c, 0xcb, 0xf0, 0x0e, 0xbb, 0x07, 0x8b, 0xba, 0xdd, 0x5e, 0x6a, 0xd9, 0x2d, + 0x3b, 0xf8, 0xb9, 0x0b, 0x5f, 0x91, 0x0b, 0xf2, 0x1f, 0xfb, 0xc9, 0x2b, 0xed, 0x4b, 0xe7, 0x22, + 0x7f, 0x1f, 0x2b, 0xee, 0xc0, 0x0c, 0x33, 0x56, 0xc9, 0x99, 0x3b, 0x7d, 0x35, 0x90, 0x1e, 0x78, + 0xee, 0x22, 0x7f, 0xf3, 0x5d, 0xd2, 0xab, 0x95, 0x69, 0x06, 0xc5, 0x3a, 0xfa, 0x02, 0x51, 0x54, + 0xe0, 0xa1, 0x1e, 0x3e, 0xba, 0x2f, 0x91, 0x13, 0xc1, 0xf8, 0x1d, 0xc6, 0x38, 0x13, 0x62, 0xac, + 0x33, 0x68, 0xb1, 0x02, 0x93, 0xa7, 0xe1, 0xfa, 0x1b, 0xc6, 0x95, 0x45, 0x61, 0x92, 0x0d, 0x98, + 0x22, 0x24, 0x7a, 0xd7, 0xf5, 0xec, 0x36, 0x29, 0x7a, 0x0f, 0xa6, 0xf9, 0xdb, 0x77, 0xe9, 0x46, + 0xc9, 0x61, 0x58, 0xc5, 0x47, 0x15, 0x8b, 0x40, 0x7e, 0x66, 0x68, 0x20, 0xdd, 0x8c, 0x60, 0x78, + 0x93, 0x39, 0xe2, 0xdb, 0x17, 0x3f, 0x03, 0xb3, 0xf8, 0x7f, 0x52, 0x93, 0xc2, 0x9e, 0x44, 0x9f, + 0x32, 0xc9, 0xdf, 0x7d, 0x85, 0xee, 0xc5, 0x19, 0x9f, 0x20, 0xe4, 0x53, 0x68, 0x15, 0x5b, 0xc8, + 0xf3, 0x90, 0xe3, 0xaa, 0x9a, 0x39, 0xcc, 0xbd, 0xd0, 0x6b, 0xba, 0xfc, 0xa5, 0xf7, 0x7a, 0x57, + 0x71, 0x83, 0x22, 0x4b, 0xa6, 0x59, 0xdc, 0x87, 0xb3, 0x43, 0xb2, 0x62, 0x04, 0xce, 0x57, 0x19, + 0xe7, 0xec, 0x40, 0x66, 0x60, 0xda, 0x5d, 0xe0, 0x72, 0x7f, 0x2d, 0x47, 0xe0, 0xfc, 0x2d, 0xc6, + 0x29, 0x31, 0x2c, 0x5f, 0x52, 0xcc, 0x78, 0x03, 0xa6, 0xef, 0x20, 0xe7, 0xc0, 0x76, 0xd9, 0xd1, + 0xc8, 0x08, 0x74, 0xaf, 0x31, 0xba, 0x29, 0x06, 0x24, 0x67, 0x25, 0x98, 0xeb, 0x0a, 0xa4, 0x9a, + 0x9a, 0x8e, 0x46, 0xa0, 0xf8, 0x32, 0xa3, 0x98, 0xc0, 0xf6, 0x18, 0x5a, 0x82, 0x6c, 0xcb, 0x66, + 0x6d, 0x29, 0x1a, 0xfe, 0x3a, 0x83, 0x67, 0x38, 0x86, 0x51, 0x74, 0xec, 0x4e, 0xd7, 0xc4, 0x3d, + 0x2b, 0x9a, 0xe2, 0xb7, 0x39, 0x05, 0xc7, 0x30, 0x8a, 0x53, 0x84, 0xf5, 0x77, 0x38, 0x85, 0x1b, + 0x8a, 0xe7, 0xf3, 0x90, 0xb1, 0x2d, 0xf3, 0xc8, 0xb6, 0x46, 0x71, 0xe2, 0x77, 0x19, 0x03, 0x30, + 0x08, 0x26, 0xb8, 0x0a, 0xe9, 0x51, 0x17, 0xe2, 0xf7, 0xde, 0xe3, 0xdb, 0x83, 0xaf, 0xc0, 0x06, + 0x4c, 0xf1, 0x02, 0x65, 0xd8, 0xd6, 0x08, 0x14, 0xbf, 0xcf, 0x28, 0x72, 0x21, 0x18, 0x7b, 0x0c, + 0x0f, 0xb9, 0x5e, 0x0b, 0x8d, 0x42, 0xf2, 0x06, 0x7f, 0x0c, 0x06, 0x61, 0xa1, 0x3c, 0x40, 0x96, + 0x7e, 0x38, 0x1a, 0xc3, 0x57, 0x79, 0x28, 0x39, 0x06, 0x53, 0x54, 0x60, 0xb2, 0xad, 0x39, 0xee, + 0xa1, 0x66, 0x8e, 0xb4, 0x1c, 0x7f, 0xc0, 0x38, 0xb2, 0x3e, 0x88, 0x45, 0xa4, 0x6b, 0x9d, 0x86, + 0xe6, 0x6b, 0x3c, 0x22, 0x21, 0x18, 0xdb, 0x7a, 0xae, 0x47, 0x0e, 0xa0, 0x4e, 0xc3, 0xf6, 0x75, + 0xbe, 0xf5, 0x28, 0x76, 0x3b, 0xcc, 0x78, 0x15, 0xd2, 0xae, 0xf1, 0xf2, 0x48, 0x34, 0x7f, 0xc8, + 0x57, 0x9a, 0x00, 0x30, 0xf8, 0x45, 0x38, 0x37, 0xb4, 0x4d, 0x8c, 0x40, 0xf6, 0x47, 0x8c, 0xec, + 0xcc, 0x90, 0x56, 0xc1, 0x4a, 0xc2, 0x69, 0x29, 0xff, 0x98, 0x97, 0x04, 0xd4, 0xc7, 0xb5, 0x8b, + 0x5f, 0x14, 0x5c, 0xad, 0x79, 0xba, 0xa8, 0xfd, 0x09, 0x8f, 0x1a, 0xc5, 0xf6, 0x44, 0x6d, 0x0f, + 0xce, 0x30, 0xc6, 0xd3, 0xad, 0xeb, 0x37, 0x78, 0x61, 0xa5, 0xe8, 0xfd, 0xde, 0xd5, 0xfd, 0x29, + 0x98, 0xf3, 0xc3, 0xc9, 0x27, 0x52, 0x57, 0x6d, 0x6b, 0x9d, 0x11, 0x98, 0xbf, 0xc9, 0x98, 0x79, + 0xc5, 0xf7, 0x47, 0x5a, 0x77, 0x5b, 0xeb, 0x60, 0xf2, 0x9b, 0x20, 0x73, 0xf2, 0xae, 0xe5, 0x20, + 0xdd, 0x6e, 0x59, 0xc6, 0xcb, 0xa8, 0x31, 0x02, 0xf5, 0x9f, 0xf6, 0x2d, 0xd5, 0x7e, 0x08, 0x8e, + 0x99, 0x37, 0x41, 0xf4, 0x67, 0x15, 0xd5, 0x68, 0x77, 0x6c, 0xc7, 0x8b, 0x60, 0xfc, 0x33, 0xbe, + 0x52, 0x3e, 0x6e, 0x93, 0xc0, 0x8a, 0x55, 0xc8, 0x91, 0xcb, 0x51, 0x53, 0xf2, 0xcf, 0x19, 0xd1, + 0x64, 0x80, 0x62, 0x85, 0x43, 0xb7, 0xdb, 0x1d, 0xcd, 0x19, 0xa5, 0xfe, 0xfd, 0x05, 0x2f, 0x1c, + 0x0c, 0xc2, 0x0a, 0x87, 0x77, 0xd4, 0x41, 0xb8, 0xdb, 0x8f, 0xc0, 0xf0, 0x2d, 0x5e, 0x38, 0x38, + 0x86, 0x51, 0xf0, 0x81, 0x61, 0x04, 0x8a, 0xbf, 0xe4, 0x14, 0x1c, 0x83, 0x29, 0x3e, 0x1d, 0x34, + 0x5a, 0x07, 0xb5, 0x0c, 0xd7, 0x73, 0xe8, 0x1c, 0xfc, 0x60, 0xaa, 0x6f, 0xbf, 0xd7, 0x3b, 0x84, + 0x29, 0x21, 0x68, 0xf1, 0x06, 0x4c, 0xf5, 0x8d, 0x18, 0x52, 0xd4, 0x37, 0x0b, 0xf2, 0x4f, 0x7f, + 0xc0, 0x8a, 0x51, 0xef, 0x84, 0x51, 0xdc, 0xc2, 0xeb, 0xde, 0x3b, 0x07, 0x44, 0x93, 0xbd, 0xf2, + 0x81, 0xbf, 0xf4, 0x3d, 0x63, 0x40, 0xf1, 0x1a, 0x4c, 0xf6, 0xcc, 0x00, 0xd1, 0x54, 0x3f, 0xcb, + 0xa8, 0xb2, 0xe1, 0x11, 0xa0, 0xb8, 0x06, 0x09, 0xdc, 0xcf, 0xa3, 0xe1, 0x3f, 0xc7, 0xe0, 0xc4, + 0xbc, 0xf8, 0x49, 0x48, 0xf1, 0x3e, 0x1e, 0x0d, 0xfd, 0x79, 0x06, 0xf5, 0x21, 0x18, 0xce, 0x7b, + 0x78, 0x34, 0xfc, 0x17, 0x38, 0x9c, 0x43, 0x30, 0x7c, 0xf4, 0x10, 0xfe, 0xf5, 0x2f, 0x26, 0x58, + 0x1d, 0xe6, 0xb1, 0xbb, 0x0a, 0x13, 0xac, 0x79, 0x47, 0xa3, 0x3f, 0xcf, 0x6e, 0xce, 0x11, 0xc5, + 0x4b, 0x90, 0x1c, 0x31, 0xe0, 0xbf, 0xc4, 0xa0, 0xd4, 0xbe, 0x58, 0x81, 0x4c, 0xa8, 0x61, 0x47, + 0xc3, 0x7f, 0x99, 0xc1, 0xc3, 0x28, 0xec, 0x3a, 0x6b, 0xd8, 0xd1, 0x04, 0xbf, 0xc2, 0x5d, 0x67, + 0x08, 0x1c, 0x36, 0xde, 0xab, 0xa3, 0xd1, 0xbf, 0xca, 0xa3, 0xce, 0x21, 0xc5, 0xe7, 0x21, 0xed, + 0xd7, 0xdf, 0x68, 0xfc, 0xaf, 0x31, 0x7c, 0x80, 0xc1, 0x11, 0x08, 0xd5, 0xff, 0x68, 0x8a, 0x2f, + 0xf0, 0x08, 0x84, 0x50, 0x78, 0x1b, 0xf5, 0xf7, 0xf4, 0x68, 0xa6, 0x5f, 0xe7, 0xdb, 0xa8, 0xaf, + 0xa5, 0xe3, 0xd5, 0x24, 0x65, 0x30, 0x9a, 0xe2, 0x37, 0xf8, 0x6a, 0x12, 0x7b, 0xec, 0x46, 0x7f, + 0x93, 0x8c, 0xe6, 0xf8, 0x4d, 0xee, 0x46, 0x5f, 0x8f, 0x2c, 0xee, 0x82, 0x34, 0xd8, 0x20, 0xa3, + 0xf9, 0xbe, 0xc8, 0xf8, 0xa6, 0x07, 0xfa, 0x63, 0xf1, 0x05, 0x38, 0x33, 0xbc, 0x39, 0x46, 0xb3, + 0x7e, 0xe9, 0x83, 0xbe, 0xd7, 0x99, 0x70, 0x6f, 0x2c, 0xee, 0x05, 0x55, 0x36, 0xdc, 0x18, 0xa3, + 0x69, 0x5f, 0xfd, 0xa0, 0xb7, 0xd0, 0x86, 0xfb, 0x62, 0xb1, 0x04, 0x10, 0xf4, 0xa4, 0x68, 0xae, + 0xd7, 0x18, 0x57, 0x08, 0x84, 0xb7, 0x06, 0x6b, 0x49, 0xd1, 0xf8, 0x2f, 0xf3, 0xad, 0xc1, 0x10, + 0x78, 0x6b, 0xf0, 0x6e, 0x14, 0x8d, 0x7e, 0x9d, 0x6f, 0x0d, 0x0e, 0x29, 0x5e, 0x85, 0x94, 0xd5, + 0x35, 0x4d, 0x9c, 0x5b, 0xd2, 0x83, 0x3f, 0x23, 0x92, 0xff, 0xf9, 0x43, 0x06, 0xe6, 0x80, 0xe2, + 0x1a, 0x24, 0x51, 0xfb, 0x00, 0x35, 0xa2, 0x90, 0xff, 0xf2, 0x21, 0xaf, 0x27, 0xd8, 0xba, 0xf8, + 0x3c, 0x00, 0x7d, 0x99, 0x26, 0xbf, 0x12, 0x45, 0x60, 0xff, 0xf5, 0x43, 0xf6, 0x85, 0x42, 0x00, + 0x09, 0x08, 0xe8, 0xf7, 0x0e, 0x0f, 0x26, 0x78, 0xaf, 0x97, 0x80, 0xbc, 0x80, 0x5f, 0x81, 0x89, + 0x5b, 0xae, 0x6d, 0x79, 0x5a, 0x2b, 0x0a, 0xfd, 0x6f, 0x0c, 0xcd, 0xed, 0x71, 0xc0, 0xda, 0xb6, + 0x83, 0x3c, 0xad, 0xe5, 0x46, 0x61, 0xff, 0x9d, 0x61, 0x7d, 0x00, 0x06, 0xeb, 0x9a, 0xeb, 0x8d, + 0xf2, 0xdc, 0xff, 0xc1, 0xc1, 0x1c, 0x80, 0x9d, 0xc6, 0xff, 0xdf, 0x46, 0x47, 0x51, 0xd8, 0xf7, + 0xb9, 0xd3, 0xcc, 0xbe, 0xf8, 0x49, 0x48, 0xe3, 0x7f, 0xe9, 0x57, 0x3b, 0x11, 0xe0, 0xff, 0x64, + 0xe0, 0x00, 0x81, 0xef, 0xec, 0x7a, 0x0d, 0xcf, 0x88, 0x0e, 0xf6, 0x7f, 0xb1, 0x95, 0xe6, 0xf6, + 0xc5, 0x12, 0x64, 0x5c, 0xaf, 0xd1, 0xe8, 0xb2, 0x89, 0x26, 0x02, 0xfe, 0x83, 0x0f, 0xfd, 0x97, + 0x5c, 0x1f, 0x53, 0xbe, 0x30, 0xfc, 0xb0, 0x0e, 0x36, 0xec, 0x0d, 0x9b, 0x1e, 0xd3, 0xc1, 0xcf, + 0xa4, 0xa1, 0xa0, 0xdb, 0xed, 0x03, 0xdb, 0x5d, 0xa2, 0x05, 0x25, 0x54, 0x8c, 0x96, 0x6c, 0x8b, + 0xa1, 0xa4, 0xb8, 0x6d, 0xa1, 0xb9, 0xd3, 0x1d, 0xcf, 0x15, 0xce, 0x41, 0xb2, 0xde, 0x3d, 0x38, + 0x38, 0x92, 0x44, 0x88, 0xbb, 0xdd, 0x03, 0xf6, 0x7d, 0x09, 0xfe, 0xb7, 0xf0, 0x76, 0x1c, 0x26, + 0x4b, 0xa6, 0xb9, 0x77, 0xd4, 0x41, 0x6e, 0xcd, 0x42, 0xb5, 0xa6, 0x24, 0xc3, 0x38, 0x79, 0x9e, + 0xe7, 0x88, 0x99, 0x70, 0x7d, 0x4c, 0x61, 0xd7, 0xbe, 0x66, 0x99, 0x9c, 0x5a, 0xc6, 0x7c, 0xcd, + 0xb2, 0xaf, 0x59, 0xa1, 0x87, 0x96, 0xbe, 0x66, 0xc5, 0xd7, 0xac, 0x92, 0xa3, 0xcb, 0xb8, 0xaf, + 0x59, 0xf5, 0x35, 0x6b, 0xe4, 0x68, 0x7e, 0xd2, 0xd7, 0xac, 0xf9, 0x9a, 0x8b, 0xe4, 0x30, 0x3e, + 0xe1, 0x6b, 0x2e, 0xfa, 0x9a, 0x4b, 0xe4, 0x0c, 0x7e, 0xda, 0xd7, 0x5c, 0xf2, 0x35, 0x97, 0xc9, + 0xb9, 0xbb, 0xe4, 0x6b, 0x2e, 0xfb, 0x9a, 0x2b, 0xe4, 0x43, 0x92, 0x09, 0x5f, 0x73, 0x45, 0x9a, + 0x83, 0x09, 0xfa, 0x64, 0xcf, 0x92, 0x1f, 0x67, 0xa7, 0xae, 0x8f, 0x29, 0x5c, 0x10, 0xe8, 0x9e, + 0x23, 0x1f, 0x8b, 0x8c, 0x07, 0xba, 0xe7, 0x02, 0xdd, 0x32, 0xf9, 0x64, 0x5a, 0x0c, 0x74, 0xcb, + 0x81, 0x6e, 0x45, 0x9e, 0xc4, 0x69, 0x10, 0xe8, 0x56, 0x02, 0xdd, 0xaa, 0x9c, 0xc3, 0x2b, 0x10, + 0xe8, 0x56, 0x03, 0xdd, 0x9a, 0x3c, 0x35, 0x2f, 0x2c, 0x64, 0x03, 0xdd, 0x9a, 0xf4, 0x0c, 0x64, + 0xdc, 0xee, 0x81, 0xca, 0xbe, 0x25, 0x20, 0x1f, 0xa5, 0x64, 0x96, 0x61, 0x11, 0xe7, 0x04, 0x59, + 0xd6, 0xeb, 0x63, 0x0a, 0xb8, 0xdd, 0x03, 0x56, 0x27, 0xcb, 0x59, 0x20, 0xc7, 0x0a, 0x2a, 0xf9, + 0x14, 0xb3, 0xf0, 0x96, 0x00, 0xe9, 0xbd, 0xbb, 0x36, 0xf9, 0x69, 0xd6, 0xfd, 0x3f, 0x5e, 0x5c, + 0xee, 0xf4, 0xca, 0x2a, 0xf9, 0xf5, 0x2c, 0x7d, 0x5d, 0x50, 0xb8, 0x20, 0xd0, 0xad, 0xc9, 0x8f, + 0x92, 0x07, 0xf2, 0x75, 0x6b, 0xd2, 0x12, 0x64, 0x43, 0x0f, 0xb4, 0x4c, 0xbe, 0x33, 0xe9, 0x7d, + 0x22, 0x41, 0xc9, 0x04, 0x4f, 0xb4, 0x5c, 0x4e, 0x02, 0x4e, 0x7b, 0xfc, 0xc7, 0xbb, 0x6b, 0x17, + 0xbe, 0x10, 0x83, 0x0c, 0x3d, 0x89, 0x24, 0x4f, 0x85, 0x6f, 0x45, 0x27, 0xf3, 0x23, 0xe6, 0xc6, + 0x98, 0xc2, 0x05, 0x92, 0x02, 0x40, 0x4d, 0x71, 0x86, 0x53, 0x4f, 0xca, 0xcf, 0xfe, 0xc3, 0xdb, + 0xe7, 0x3f, 0x71, 0xe2, 0x0e, 0xc2, 0xb1, 0x5b, 0xa2, 0x75, 0x76, 0x71, 0xdf, 0xb0, 0xbc, 0xe7, + 0x96, 0x2f, 0xe3, 0x00, 0x07, 0x2c, 0xd2, 0x3e, 0xa4, 0x2a, 0x9a, 0x4b, 0x3e, 0x34, 0x23, 0xae, + 0x27, 0xca, 0x97, 0xfe, 0xe7, 0xed, 0xf3, 0x2b, 0x11, 0x8c, 0xac, 0x04, 0x2e, 0x6e, 0x1f, 0x61, + 0xd6, 0x8b, 0xab, 0x18, 0x7e, 0x7d, 0x4c, 0xf1, 0xa9, 0xa4, 0x65, 0xee, 0xea, 0x8e, 0xd6, 0xa6, + 0x1f, 0xd4, 0xc4, 0xcb, 0xe2, 0xf1, 0xdb, 0xe7, 0xb3, 0xdb, 0x47, 0x81, 0x3c, 0x70, 0x05, 0x5f, + 0x95, 0x53, 0x30, 0x4e, 0x5d, 0x2d, 0xaf, 0xbf, 0x79, 0x3f, 0x3f, 0xf6, 0xd6, 0xfd, 0xfc, 0xd8, + 0xdf, 0xdf, 0xcf, 0x8f, 0xbd, 0x73, 0x3f, 0x2f, 0xbc, 0x7f, 0x3f, 0x2f, 0xfc, 0xf0, 0x7e, 0x5e, + 0xb8, 0x77, 0x9c, 0x17, 0xbe, 0x7a, 0x9c, 0x17, 0xbe, 0x71, 0x9c, 0x17, 0xbe, 0x7d, 0x9c, 0x17, + 0xde, 0x3c, 0xce, 0x8f, 0xbd, 0x75, 0x9c, 0x1f, 0x7b, 0xe7, 0x38, 0x2f, 0x7c, 0xff, 0x38, 0x3f, + 0xf6, 0xfe, 0x71, 0x5e, 0xf8, 0xe1, 0x71, 0x7e, 0xec, 0xde, 0xf7, 0xf2, 0xc2, 0xff, 0x06, 0x00, + 0x00, 0xff, 0xff, 0xf7, 0x0c, 0xfe, 0x1d, 0xe1, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/both/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/both/one.pb.go index 22e344034..1d870cbab 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/both/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/both/one.pb.go @@ -551,242 +551,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3749 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0xa6, 0x99, 0x33, 0xa3, 0x11, 0xf5, 0x4b, 0x5e, 0x73, 0xe5, 0x78, 0x56, 0xab, - 0xd8, 0xb1, 0x6c, 0xd7, 0x5a, 0x5b, 0x97, 0xbd, 0xcc, 0x36, 0x31, 0x46, 0xd2, 0x58, 0xab, 0x85, - 0x6e, 0xe1, 0x48, 0x89, 0x9d, 0x3c, 0x10, 0x1c, 0xce, 0x3f, 0x23, 0xee, 0x72, 0xc8, 0x29, 0xc9, - 0x59, 0x5b, 0x7e, 0xda, 0xc0, 0xbd, 0x20, 0x08, 0x7a, 0x4d, 0x81, 0x26, 0x8e, 0xe3, 0xa6, 0x01, - 0x5a, 0xa7, 0xe9, 0x2d, 0xe9, 0x25, 0x0d, 0xfa, 0xd4, 0x97, 0xb4, 0x7e, 0x2a, 0x92, 0xb7, 0x3e, - 0xe4, 0x21, 0xab, 0x1a, 0x68, 0xda, 0xba, 0xad, 0xdb, 0x18, 0x68, 0x80, 0x7d, 0x29, 0xfe, 0x1b, - 0xc9, 0xb9, 0x68, 0x39, 0x0a, 0x90, 0x38, 0x4f, 0x12, 0xcf, 0x39, 0xdf, 0xc7, 0xc3, 0xf3, 0x9f, - 0xff, 0x9c, 0xc3, 0x7f, 0x08, 0x9f, 0x59, 0x81, 0xb9, 0x96, 0xe3, 0xb4, 0x2c, 0x7c, 0xa9, 0xe3, - 0x3a, 0xbe, 0x53, 0xef, 0x36, 0x2f, 0x35, 0xb0, 0x67, 0xb8, 0x66, 0xc7, 0x77, 0xdc, 0x45, 0x2a, - 0x43, 0x93, 0xcc, 0x62, 0x51, 0x58, 0xcc, 0xef, 0xc0, 0xd4, 0x0b, 0xa6, 0x85, 0x37, 0x02, 0xc3, - 0x1a, 0xf6, 0xd1, 0x55, 0x48, 0x35, 0x4d, 0x0b, 0x2b, 0xd2, 0x5c, 0x72, 0x21, 0xbf, 0xf4, 0xd8, - 0x62, 0x1f, 0x68, 0xb1, 0x17, 0xb1, 0x4f, 0xc4, 0x2a, 0x45, 0xcc, 0xbf, 0x93, 0x82, 0xe9, 0x21, - 0x5a, 0x84, 0x20, 0x65, 0xeb, 0x6d, 0xc2, 0x28, 0x2d, 0xe4, 0x54, 0xfa, 0x3f, 0x52, 0x60, 0xbc, - 0xa3, 0x1b, 0xb7, 0xf5, 0x16, 0x56, 0x12, 0x54, 0x2c, 0x2e, 0x51, 0x09, 0xa0, 0x81, 0x3b, 0xd8, - 0x6e, 0x60, 0xdb, 0x38, 0x56, 0x92, 0x73, 0xc9, 0x85, 0x9c, 0x1a, 0x91, 0xa0, 0xa7, 0x61, 0xaa, - 0xd3, 0xad, 0x5b, 0xa6, 0xa1, 0x45, 0xcc, 0x60, 0x2e, 0xb9, 0x90, 0x56, 0x65, 0xa6, 0xd8, 0x08, - 0x8d, 0x9f, 0x80, 0xc9, 0x97, 0xb1, 0x7e, 0x3b, 0x6a, 0x9a, 0xa7, 0xa6, 0x45, 0x22, 0x8e, 0x18, - 0xae, 0x43, 0xa1, 0x8d, 0x3d, 0x4f, 0x6f, 0x61, 0xcd, 0x3f, 0xee, 0x60, 0x25, 0x45, 0x9f, 0x7e, - 0x6e, 0xe0, 0xe9, 0xfb, 0x9f, 0x3c, 0xcf, 0x51, 0x07, 0xc7, 0x1d, 0x8c, 0x2a, 0x90, 0xc3, 0x76, - 0xb7, 0xcd, 0x18, 0xd2, 0xa7, 0xc4, 0xaf, 0x6a, 0x77, 0xdb, 0xfd, 0x2c, 0x59, 0x02, 0xe3, 0x14, - 0xe3, 0x1e, 0x76, 0xef, 0x98, 0x06, 0x56, 0x32, 0x94, 0xe0, 0x89, 0x01, 0x82, 0x1a, 0xd3, 0xf7, - 0x73, 0x08, 0x1c, 0x5a, 0x87, 0x1c, 0x7e, 0xc5, 0xc7, 0xb6, 0x67, 0x3a, 0xb6, 0x32, 0x4e, 0x49, - 0x1e, 0x1f, 0xb2, 0x8a, 0xd8, 0x6a, 0xf4, 0x53, 0x84, 0x38, 0x74, 0x19, 0xc6, 0x9d, 0x8e, 0x6f, - 0x3a, 0xb6, 0xa7, 0x64, 0xe7, 0xa4, 0x85, 0xfc, 0xd2, 0x87, 0x86, 0x26, 0xc2, 0x1e, 0xb3, 0x51, - 0x85, 0x31, 0xda, 0x02, 0xd9, 0x73, 0xba, 0xae, 0x81, 0x35, 0xc3, 0x69, 0x60, 0xcd, 0xb4, 0x9b, - 0x8e, 0x92, 0xa3, 0x04, 0x17, 0x06, 0x1f, 0x84, 0x1a, 0xae, 0x3b, 0x0d, 0xbc, 0x65, 0x37, 0x1d, - 0xb5, 0xe8, 0xf5, 0x5c, 0xa3, 0x73, 0x90, 0xf1, 0x8e, 0x6d, 0x5f, 0x7f, 0x45, 0x29, 0xd0, 0x0c, - 0xe1, 0x57, 0xf3, 0xff, 0x97, 0x86, 0xc9, 0x51, 0x52, 0xec, 0x3a, 0xa4, 0x9b, 0xe4, 0x29, 0x95, - 0xc4, 0x59, 0x62, 0xc0, 0x30, 0xbd, 0x41, 0xcc, 0xfc, 0x84, 0x41, 0xac, 0x40, 0xde, 0xc6, 0x9e, - 0x8f, 0x1b, 0x2c, 0x23, 0x92, 0x23, 0xe6, 0x14, 0x30, 0xd0, 0x60, 0x4a, 0xa5, 0x7e, 0xa2, 0x94, - 0x7a, 0x11, 0x26, 0x03, 0x97, 0x34, 0x57, 0xb7, 0x5b, 0x22, 0x37, 0x2f, 0xc5, 0x79, 0xb2, 0x58, - 0x15, 0x38, 0x95, 0xc0, 0xd4, 0x22, 0xee, 0xb9, 0x46, 0x1b, 0x00, 0x8e, 0x8d, 0x9d, 0xa6, 0xd6, - 0xc0, 0x86, 0xa5, 0x64, 0x4f, 0x89, 0xd2, 0x1e, 0x31, 0x19, 0x88, 0x92, 0xc3, 0xa4, 0x86, 0x85, - 0xae, 0x85, 0xa9, 0x36, 0x7e, 0x4a, 0xa6, 0xec, 0xb0, 0x4d, 0x36, 0x90, 0x6d, 0x87, 0x50, 0x74, - 0x31, 0xc9, 0x7b, 0xdc, 0xe0, 0x4f, 0x96, 0xa3, 0x4e, 0x2c, 0xc6, 0x3e, 0x99, 0xca, 0x61, 0xec, - 0xc1, 0x26, 0xdc, 0xe8, 0x25, 0xfa, 0x30, 0x04, 0x02, 0x8d, 0xa6, 0x15, 0xd0, 0x2a, 0x54, 0x10, - 0xc2, 0x5d, 0xbd, 0x8d, 0x67, 0xaf, 0x42, 0xb1, 0x37, 0x3c, 0x68, 0x06, 0xd2, 0x9e, 0xaf, 0xbb, - 0x3e, 0xcd, 0xc2, 0xb4, 0xca, 0x2e, 0x90, 0x0c, 0x49, 0x6c, 0x37, 0x68, 0x95, 0x4b, 0xab, 0xe4, - 0xdf, 0xd9, 0x2b, 0x30, 0xd1, 0x73, 0xfb, 0x51, 0x81, 0xf3, 0x5f, 0xc8, 0xc0, 0xcc, 0xb0, 0x9c, - 0x1b, 0x9a, 0xfe, 0xe7, 0x20, 0x63, 0x77, 0xdb, 0x75, 0xec, 0x2a, 0x49, 0xca, 0xc0, 0xaf, 0x50, - 0x05, 0xd2, 0x96, 0x5e, 0xc7, 0x96, 0x92, 0x9a, 0x93, 0x16, 0x8a, 0x4b, 0x4f, 0x8f, 0x94, 0xd5, - 0x8b, 0xdb, 0x04, 0xa2, 0x32, 0x24, 0xfa, 0x18, 0xa4, 0x78, 0x89, 0x23, 0x0c, 0x4f, 0x8d, 0xc6, - 0x40, 0x72, 0x51, 0xa5, 0x38, 0xf4, 0x08, 0xe4, 0xc8, 0x5f, 0x16, 0xdb, 0x0c, 0xf5, 0x39, 0x4b, - 0x04, 0x24, 0xae, 0x68, 0x16, 0xb2, 0x34, 0xcd, 0x1a, 0x58, 0xb4, 0x86, 0xe0, 0x9a, 0x2c, 0x4c, - 0x03, 0x37, 0xf5, 0xae, 0xe5, 0x6b, 0x77, 0x74, 0xab, 0x8b, 0x69, 0xc2, 0xe4, 0xd4, 0x02, 0x17, - 0x7e, 0x82, 0xc8, 0xd0, 0x05, 0xc8, 0xb3, 0xac, 0x34, 0xed, 0x06, 0x7e, 0x85, 0x56, 0x9f, 0xb4, - 0xca, 0x12, 0x75, 0x8b, 0x48, 0xc8, 0xed, 0x6f, 0x79, 0x8e, 0x2d, 0x96, 0x96, 0xde, 0x82, 0x08, - 0xe8, 0xed, 0xaf, 0xf4, 0x17, 0xbe, 0x47, 0x87, 0x3f, 0x5e, 0x7f, 0x2e, 0xce, 0x7f, 0x2b, 0x01, - 0x29, 0xba, 0xdf, 0x26, 0x21, 0x7f, 0xf0, 0xd2, 0x7e, 0x55, 0xdb, 0xd8, 0x3b, 0x5c, 0xdb, 0xae, - 0xca, 0x12, 0x2a, 0x02, 0x50, 0xc1, 0x0b, 0xdb, 0x7b, 0x95, 0x03, 0x39, 0x11, 0x5c, 0x6f, 0xed, - 0x1e, 0x5c, 0x5e, 0x91, 0x93, 0x01, 0xe0, 0x90, 0x09, 0x52, 0x51, 0x83, 0xe5, 0x25, 0x39, 0x8d, - 0x64, 0x28, 0x30, 0x82, 0xad, 0x17, 0xab, 0x1b, 0x97, 0x57, 0xe4, 0x4c, 0xaf, 0x64, 0x79, 0x49, - 0x1e, 0x47, 0x13, 0x90, 0xa3, 0x92, 0xb5, 0xbd, 0xbd, 0x6d, 0x39, 0x1b, 0x70, 0xd6, 0x0e, 0xd4, - 0xad, 0xdd, 0x4d, 0x39, 0x17, 0x70, 0x6e, 0xaa, 0x7b, 0x87, 0xfb, 0x32, 0x04, 0x0c, 0x3b, 0xd5, - 0x5a, 0xad, 0xb2, 0x59, 0x95, 0xf3, 0x81, 0xc5, 0xda, 0x4b, 0x07, 0xd5, 0x9a, 0x5c, 0xe8, 0x71, - 0x6b, 0x79, 0x49, 0x9e, 0x08, 0x6e, 0x51, 0xdd, 0x3d, 0xdc, 0x91, 0x8b, 0x68, 0x0a, 0x26, 0xd8, - 0x2d, 0x84, 0x13, 0x93, 0x7d, 0xa2, 0xcb, 0x2b, 0xb2, 0x1c, 0x3a, 0xc2, 0x58, 0xa6, 0x7a, 0x04, - 0x97, 0x57, 0x64, 0x34, 0xbf, 0x0e, 0x69, 0x9a, 0x5d, 0x08, 0x41, 0x71, 0xbb, 0xb2, 0x56, 0xdd, - 0xd6, 0xf6, 0xf6, 0x0f, 0xb6, 0xf6, 0x76, 0x2b, 0xdb, 0xb2, 0x14, 0xca, 0xd4, 0xea, 0xc7, 0x0f, - 0xb7, 0xd4, 0xea, 0x86, 0x9c, 0x88, 0xca, 0xf6, 0xab, 0x95, 0x83, 0xea, 0x86, 0x9c, 0x9c, 0x37, - 0x60, 0x66, 0x58, 0x9d, 0x19, 0xba, 0x33, 0x22, 0x4b, 0x9c, 0x38, 0x65, 0x89, 0x29, 0xd7, 0xc0, - 0x12, 0x7f, 0x55, 0x82, 0xe9, 0x21, 0xb5, 0x76, 0xe8, 0x4d, 0x9e, 0x87, 0x34, 0x4b, 0x51, 0xd6, - 0x7d, 0x9e, 0x1c, 0x5a, 0xb4, 0x69, 0xc2, 0x0e, 0x74, 0x20, 0x8a, 0x8b, 0x76, 0xe0, 0xe4, 0x29, - 0x1d, 0x98, 0x50, 0x0c, 0x38, 0xf9, 0x9a, 0x04, 0xca, 0x69, 0xdc, 0x31, 0x85, 0x22, 0xd1, 0x53, - 0x28, 0xae, 0xf7, 0x3b, 0x70, 0xf1, 0xf4, 0x67, 0x18, 0xf0, 0xe2, 0x2d, 0x09, 0xce, 0x0d, 0x1f, - 0x54, 0x86, 0xfa, 0xf0, 0x31, 0xc8, 0xb4, 0xb1, 0x7f, 0xe4, 0x88, 0x66, 0xfd, 0x91, 0x21, 0x2d, - 0x80, 0xa8, 0xfb, 0x63, 0xc5, 0x51, 0xd1, 0x1e, 0x92, 0x3c, 0x6d, 0xda, 0x60, 0xde, 0x0c, 0x78, - 0xfa, 0xd9, 0x04, 0x3c, 0x34, 0x94, 0x7c, 0xa8, 0xa3, 0x8f, 0x02, 0x98, 0x76, 0xa7, 0xeb, 0xb3, - 0x86, 0xcc, 0xea, 0x53, 0x8e, 0x4a, 0xe8, 0xde, 0x27, 0xb5, 0xa7, 0xeb, 0x07, 0xfa, 0x24, 0xd5, - 0x03, 0x13, 0x51, 0x83, 0xab, 0xa1, 0xa3, 0x29, 0xea, 0x68, 0xe9, 0x94, 0x27, 0x1d, 0xe8, 0x75, - 0xcf, 0x82, 0x6c, 0x58, 0x26, 0xb6, 0x7d, 0xcd, 0xf3, 0x5d, 0xac, 0xb7, 0x4d, 0xbb, 0x45, 0x0b, - 0x70, 0xb6, 0x9c, 0x6e, 0xea, 0x96, 0x87, 0xd5, 0x49, 0xa6, 0xae, 0x09, 0x2d, 0x41, 0xd0, 0x2e, - 0xe3, 0x46, 0x10, 0x99, 0x1e, 0x04, 0x53, 0x07, 0x88, 0xf9, 0xcf, 0x8d, 0x43, 0x3e, 0x32, 0xd6, - 0xa1, 0x8b, 0x50, 0xb8, 0xa5, 0xdf, 0xd1, 0x35, 0x31, 0xaa, 0xb3, 0x48, 0xe4, 0x89, 0x6c, 0x9f, - 0x8f, 0xeb, 0xcf, 0xc2, 0x0c, 0x35, 0x71, 0xba, 0x3e, 0x76, 0x35, 0xc3, 0xd2, 0x3d, 0x8f, 0x06, - 0x2d, 0x4b, 0x4d, 0x11, 0xd1, 0xed, 0x11, 0xd5, 0xba, 0xd0, 0xa0, 0x55, 0x98, 0xa6, 0x88, 0x76, - 0xd7, 0xf2, 0xcd, 0x8e, 0x85, 0x35, 0xf2, 0xf2, 0xe0, 0xd1, 0x42, 0x1c, 0x78, 0x36, 0x45, 0x2c, - 0x76, 0xb8, 0x01, 0xf1, 0xc8, 0x43, 0x9b, 0xf0, 0x28, 0x85, 0xb5, 0xb0, 0x8d, 0x5d, 0xdd, 0xc7, - 0x1a, 0xfe, 0xa5, 0xae, 0x6e, 0x79, 0x9a, 0x6e, 0x37, 0xb4, 0x23, 0xdd, 0x3b, 0x52, 0x66, 0xa2, - 0x04, 0xe7, 0x89, 0xed, 0x26, 0x37, 0xad, 0x52, 0xcb, 0x8a, 0xdd, 0xb8, 0xa1, 0x7b, 0x47, 0xa8, - 0x0c, 0xe7, 0x28, 0x91, 0xe7, 0xbb, 0xa6, 0xdd, 0xd2, 0x8c, 0x23, 0x6c, 0xdc, 0xd6, 0xba, 0x7e, - 0xf3, 0xaa, 0xf2, 0x48, 0x94, 0x81, 0x3a, 0x59, 0xa3, 0x36, 0xeb, 0xc4, 0xe4, 0xd0, 0x6f, 0x5e, - 0x45, 0x35, 0x28, 0x90, 0xf5, 0x68, 0x9b, 0xaf, 0x62, 0xad, 0xe9, 0xb8, 0xb4, 0xb9, 0x14, 0x87, - 0x6c, 0xee, 0x48, 0x10, 0x17, 0xf7, 0x38, 0x60, 0xc7, 0x69, 0xe0, 0x72, 0xba, 0xb6, 0x5f, 0xad, - 0x6e, 0xa8, 0x79, 0xc1, 0xf2, 0x82, 0xe3, 0x92, 0x9c, 0x6a, 0x39, 0x41, 0x8c, 0xf3, 0x2c, 0xa7, - 0x5a, 0x8e, 0x88, 0xf0, 0x2a, 0x4c, 0x1b, 0x06, 0x7b, 0x6c, 0xd3, 0xd0, 0xf8, 0x94, 0xef, 0x29, - 0x72, 0x4f, 0xbc, 0x0c, 0x63, 0x93, 0x19, 0xf0, 0x34, 0xf7, 0xd0, 0x35, 0x78, 0x28, 0x8c, 0x57, - 0x14, 0x38, 0x35, 0xf0, 0x94, 0xfd, 0xd0, 0x55, 0x98, 0xee, 0x1c, 0x0f, 0x02, 0x51, 0xcf, 0x1d, - 0x3b, 0xc7, 0xfd, 0xb0, 0xc7, 0xe9, 0x9b, 0x9b, 0x8b, 0x0d, 0xdd, 0xc7, 0x0d, 0xe5, 0xe1, 0xa8, - 0x75, 0x44, 0x81, 0x2e, 0x81, 0x6c, 0x18, 0x1a, 0xb6, 0xf5, 0xba, 0x85, 0x35, 0xdd, 0xc5, 0xb6, - 0xee, 0x29, 0x17, 0xa2, 0xc6, 0x45, 0xc3, 0xa8, 0x52, 0x6d, 0x85, 0x2a, 0xd1, 0x53, 0x30, 0xe5, - 0xd4, 0x6f, 0x19, 0x2c, 0xb9, 0xb4, 0x8e, 0x8b, 0x9b, 0xe6, 0x2b, 0xca, 0x63, 0x34, 0x4c, 0x93, - 0x44, 0x41, 0x53, 0x6b, 0x9f, 0x8a, 0xd1, 0x93, 0x20, 0x1b, 0xde, 0x91, 0xee, 0x76, 0x68, 0x77, - 0xf7, 0x3a, 0xba, 0x81, 0x95, 0xc7, 0x99, 0x29, 0x93, 0xef, 0x0a, 0x31, 0x7a, 0x11, 0x66, 0xba, - 0xb6, 0x69, 0xfb, 0xd8, 0xed, 0xb8, 0x98, 0x0c, 0xe9, 0x6c, 0xa7, 0x29, 0xff, 0x3a, 0x7e, 0xca, - 0x98, 0x7d, 0x18, 0xb5, 0x66, 0xab, 0xab, 0x4e, 0x77, 0x07, 0x85, 0xf3, 0x65, 0x28, 0x44, 0x17, - 0x1d, 0xe5, 0x80, 0x2d, 0xbb, 0x2c, 0x91, 0x1e, 0xba, 0xbe, 0xb7, 0x41, 0xba, 0xdf, 0xa7, 0xaa, - 0x72, 0x82, 0x74, 0xe1, 0xed, 0xad, 0x83, 0xaa, 0xa6, 0x1e, 0xee, 0x1e, 0x6c, 0xed, 0x54, 0xe5, - 0xe4, 0x53, 0xb9, 0xec, 0x0f, 0xc7, 0xe5, 0xbb, 0x77, 0xef, 0xde, 0x4d, 0xcc, 0x7f, 0x27, 0x01, - 0xc5, 0xde, 0xc9, 0x17, 0xfd, 0x22, 0x3c, 0x2c, 0x5e, 0x53, 0x3d, 0xec, 0x6b, 0x2f, 0x9b, 0x2e, - 0xcd, 0xc3, 0xb6, 0xce, 0x66, 0xc7, 0x20, 0x84, 0x33, 0xdc, 0xaa, 0x86, 0xfd, 0x4f, 0x9a, 0x2e, - 0xc9, 0xb2, 0xb6, 0xee, 0xa3, 0x6d, 0xb8, 0x60, 0x3b, 0x9a, 0xe7, 0xeb, 0x76, 0x43, 0x77, 0x1b, - 0x5a, 0x78, 0x40, 0xa0, 0xe9, 0x86, 0x81, 0x3d, 0xcf, 0x61, 0x2d, 0x20, 0x60, 0xf9, 0x90, 0xed, - 0xd4, 0xb8, 0x71, 0x58, 0x1b, 0x2b, 0xdc, 0xb4, 0x6f, 0xb9, 0x93, 0xa7, 0x2d, 0xf7, 0x23, 0x90, - 0x6b, 0xeb, 0x1d, 0x0d, 0xdb, 0xbe, 0x7b, 0x4c, 0xe7, 0xb5, 0xac, 0x9a, 0x6d, 0xeb, 0x9d, 0x2a, - 0xb9, 0xfe, 0xe9, 0xad, 0x41, 0x34, 0x8e, 0xdf, 0x4f, 0x42, 0x21, 0x3a, 0xb3, 0x91, 0x11, 0xd8, - 0xa0, 0xf5, 0x59, 0xa2, 0xdb, 0xf7, 0xc3, 0x0f, 0x9c, 0xf0, 0x16, 0xd7, 0x49, 0xe1, 0x2e, 0x67, - 0xd8, 0x24, 0xa5, 0x32, 0x24, 0x69, 0x9a, 0x64, 0xc3, 0x62, 0x36, 0x9f, 0x67, 0x55, 0x7e, 0x85, - 0x36, 0x21, 0x73, 0xcb, 0xa3, 0xdc, 0x19, 0xca, 0xfd, 0xd8, 0x83, 0xb9, 0x6f, 0xd6, 0x28, 0x79, - 0xee, 0x66, 0x4d, 0xdb, 0xdd, 0x53, 0x77, 0x2a, 0xdb, 0x2a, 0x87, 0xa3, 0xf3, 0x90, 0xb2, 0xf4, - 0x57, 0x8f, 0x7b, 0x4b, 0x3c, 0x15, 0x8d, 0x1a, 0xf8, 0xf3, 0x90, 0x7a, 0x19, 0xeb, 0xb7, 0x7b, - 0x0b, 0x2b, 0x15, 0xfd, 0x14, 0x53, 0xff, 0x12, 0xa4, 0x69, 0xbc, 0x10, 0x00, 0x8f, 0x98, 0x3c, - 0x86, 0xb2, 0x90, 0x5a, 0xdf, 0x53, 0x49, 0xfa, 0xcb, 0x50, 0x60, 0x52, 0x6d, 0x7f, 0xab, 0xba, - 0x5e, 0x95, 0x13, 0xf3, 0xab, 0x90, 0x61, 0x41, 0x20, 0x5b, 0x23, 0x08, 0x83, 0x3c, 0xc6, 0x2f, - 0x39, 0x87, 0x24, 0xb4, 0x87, 0x3b, 0x6b, 0x55, 0x55, 0x4e, 0x44, 0x97, 0xd7, 0x83, 0x42, 0x74, - 0x5c, 0xfb, 0xd9, 0xe4, 0xd4, 0xdf, 0x49, 0x90, 0x8f, 0x8c, 0x5f, 0xa4, 0xf1, 0xeb, 0x96, 0xe5, - 0xbc, 0xac, 0xe9, 0x96, 0xa9, 0x7b, 0x3c, 0x29, 0x80, 0x8a, 0x2a, 0x44, 0x32, 0xea, 0xa2, 0xfd, - 0x4c, 0x9c, 0x7f, 0x53, 0x02, 0xb9, 0x7f, 0x74, 0xeb, 0x73, 0x50, 0xfa, 0x40, 0x1d, 0x7c, 0x43, - 0x82, 0x62, 0xef, 0xbc, 0xd6, 0xe7, 0xde, 0xc5, 0x0f, 0xd4, 0xbd, 0x2f, 0x49, 0x30, 0xd1, 0x33, - 0xa5, 0xfd, 0x5c, 0x79, 0xf7, 0x7a, 0x12, 0xa6, 0x87, 0xe0, 0x50, 0x85, 0x8f, 0xb3, 0x6c, 0xc2, - 0x7e, 0x66, 0x94, 0x7b, 0x2d, 0x92, 0x6e, 0xb9, 0xaf, 0xbb, 0x3e, 0x9f, 0x7e, 0x9f, 0x04, 0xd9, - 0x6c, 0x60, 0xdb, 0x37, 0x9b, 0x26, 0x76, 0xf9, 0x2b, 0x38, 0x9b, 0x71, 0x27, 0x43, 0x39, 0x7b, - 0x0b, 0xff, 0x05, 0x40, 0x1d, 0xc7, 0x33, 0x7d, 0xf3, 0x0e, 0xd6, 0x4c, 0x5b, 0xbc, 0xaf, 0x93, - 0x99, 0x37, 0xa5, 0xca, 0x42, 0xb3, 0x65, 0xfb, 0x81, 0xb5, 0x8d, 0x5b, 0x7a, 0x9f, 0x35, 0xa9, - 0x7d, 0x49, 0x55, 0x16, 0x9a, 0xc0, 0xfa, 0x22, 0x14, 0x1a, 0x4e, 0x97, 0x8c, 0x0f, 0xcc, 0x8e, - 0x94, 0x5a, 0x49, 0xcd, 0x33, 0x59, 0x60, 0xc2, 0xe7, 0xbb, 0xf0, 0xa0, 0xa0, 0xa0, 0xe6, 0x99, - 0x8c, 0x99, 0x3c, 0x01, 0x93, 0x7a, 0xab, 0xe5, 0x12, 0x72, 0x41, 0xc4, 0x86, 0xd6, 0x62, 0x20, - 0xa6, 0x86, 0xb3, 0x37, 0x21, 0x2b, 0xe2, 0x40, 0xba, 0x19, 0x89, 0x84, 0xd6, 0x61, 0xc7, 0x35, - 0x89, 0x85, 0x9c, 0x9a, 0xb5, 0x85, 0xf2, 0x22, 0x14, 0x4c, 0x4f, 0x0b, 0xcf, 0x0d, 0x13, 0x73, - 0x89, 0x85, 0xac, 0x9a, 0x37, 0xbd, 0xe0, 0xa0, 0x68, 0xfe, 0xad, 0x04, 0x14, 0x7b, 0xcf, 0x3d, - 0xd1, 0x06, 0x64, 0x2d, 0xc7, 0xd0, 0x69, 0x22, 0xb0, 0x43, 0xf7, 0x85, 0x98, 0xa3, 0xd2, 0xc5, - 0x6d, 0x6e, 0xaf, 0x06, 0xc8, 0xd9, 0x7f, 0x92, 0x20, 0x2b, 0xc4, 0xe8, 0x1c, 0xa4, 0x3a, 0xba, - 0x7f, 0x44, 0xe9, 0xd2, 0x6b, 0x09, 0x59, 0x52, 0xe9, 0x35, 0x91, 0x7b, 0x1d, 0xdd, 0xa6, 0x29, - 0xc0, 0xe5, 0xe4, 0x9a, 0xac, 0xab, 0x85, 0xf5, 0x06, 0x1d, 0x87, 0x9d, 0x76, 0x1b, 0xdb, 0xbe, - 0x27, 0xd6, 0x95, 0xcb, 0xd7, 0xb9, 0x18, 0x3d, 0x0d, 0x53, 0xbe, 0xab, 0x9b, 0x56, 0x8f, 0x6d, - 0x8a, 0xda, 0xca, 0x42, 0x11, 0x18, 0x97, 0xe1, 0xbc, 0xe0, 0x6d, 0x60, 0x5f, 0x37, 0x8e, 0x70, - 0x23, 0x04, 0x65, 0xe8, 0xa1, 0xda, 0xc3, 0xdc, 0x60, 0x83, 0xeb, 0x05, 0x76, 0xfe, 0x7b, 0x12, - 0x4c, 0x89, 0x01, 0xbe, 0x11, 0x04, 0x6b, 0x07, 0x40, 0xb7, 0x6d, 0xc7, 0x8f, 0x86, 0x6b, 0x30, - 0x95, 0x07, 0x70, 0x8b, 0x95, 0x00, 0xa4, 0x46, 0x08, 0x66, 0xdb, 0x00, 0xa1, 0xe6, 0xd4, 0xb0, - 0x5d, 0x80, 0x3c, 0x3f, 0xd4, 0xa6, 0xbf, 0x8c, 0xb0, 0xb7, 0x3e, 0x60, 0x22, 0x32, 0xe9, 0xa3, - 0x19, 0x48, 0xd7, 0x71, 0xcb, 0xb4, 0xf9, 0x51, 0x1b, 0xbb, 0x10, 0x07, 0x78, 0xa9, 0xe0, 0x00, - 0x6f, 0xed, 0xd3, 0x30, 0x6d, 0x38, 0xed, 0x7e, 0x77, 0xd7, 0xe4, 0xbe, 0x37, 0x4f, 0xef, 0x86, - 0xf4, 0x29, 0x08, 0xa7, 0xb3, 0xaf, 0x48, 0xd2, 0x57, 0x13, 0xc9, 0xcd, 0xfd, 0xb5, 0xaf, 0x27, - 0x66, 0x37, 0x19, 0x74, 0x5f, 0x3c, 0xa9, 0x8a, 0x9b, 0x16, 0x36, 0x88, 0xf7, 0xf0, 0xa3, 0x8f, - 0xc0, 0x33, 0x2d, 0xd3, 0x3f, 0xea, 0xd6, 0x17, 0x0d, 0xa7, 0x7d, 0xa9, 0xe5, 0xb4, 0x9c, 0xf0, - 0xc7, 0x20, 0x72, 0x45, 0x2f, 0xe8, 0x7f, 0xfc, 0x07, 0xa1, 0x5c, 0x20, 0x9d, 0x8d, 0xfd, 0xf5, - 0xa8, 0xbc, 0x0b, 0xd3, 0xdc, 0x58, 0xa3, 0x27, 0xd2, 0x6c, 0x0e, 0x47, 0x0f, 0x3c, 0x95, 0x50, - 0xbe, 0xf9, 0x0e, 0xed, 0x74, 0xea, 0x14, 0x87, 0x12, 0x1d, 0x9b, 0xd4, 0xcb, 0x2a, 0x3c, 0xd4, - 0xc3, 0xc7, 0xb6, 0x26, 0x76, 0x63, 0x18, 0xbf, 0xc3, 0x19, 0xa7, 0x23, 0x8c, 0x35, 0x0e, 0x2d, - 0xaf, 0xc3, 0xc4, 0x59, 0xb8, 0xfe, 0x81, 0x73, 0x15, 0x70, 0x94, 0x64, 0x13, 0x26, 0x29, 0x89, - 0xd1, 0xf5, 0x7c, 0xa7, 0x4d, 0xeb, 0xde, 0x83, 0x69, 0xfe, 0xf1, 0x1d, 0xb6, 0x57, 0x8a, 0x04, - 0xb6, 0x1e, 0xa0, 0xca, 0x65, 0xa0, 0x87, 0xf0, 0x0d, 0x6c, 0x58, 0x31, 0x0c, 0x6f, 0x73, 0x47, - 0x02, 0xfb, 0xf2, 0x27, 0x60, 0x86, 0xfc, 0x4f, 0xcb, 0x52, 0xd4, 0x93, 0xf8, 0x33, 0x18, 0xe5, - 0x7b, 0xaf, 0xb1, 0xed, 0x38, 0x1d, 0x10, 0x44, 0x7c, 0x8a, 0xac, 0x62, 0x0b, 0xfb, 0x3e, 0x76, - 0x3d, 0x4d, 0xb7, 0x86, 0xb9, 0x17, 0x79, 0x83, 0x55, 0xbe, 0xf8, 0x6e, 0xef, 0x2a, 0x6e, 0x32, - 0x64, 0xc5, 0xb2, 0xca, 0x87, 0xf0, 0xf0, 0x90, 0xac, 0x18, 0x81, 0xf3, 0x75, 0xce, 0x39, 0x33, - 0x90, 0x19, 0x84, 0x76, 0x1f, 0x84, 0x3c, 0x58, 0xcb, 0x11, 0x38, 0xbf, 0xc4, 0x39, 0x11, 0xc7, - 0x8a, 0x25, 0x25, 0x8c, 0x37, 0x61, 0xea, 0x0e, 0x76, 0xeb, 0x8e, 0xc7, 0x0f, 0x0e, 0x46, 0xa0, - 0x7b, 0x83, 0xd3, 0x4d, 0x72, 0x20, 0x3d, 0x46, 0x20, 0x5c, 0xd7, 0x20, 0xdb, 0xd4, 0x0d, 0x3c, - 0x02, 0xc5, 0x97, 0x39, 0xc5, 0x38, 0xb1, 0x27, 0xd0, 0x0a, 0x14, 0x5a, 0x0e, 0xef, 0x4c, 0xf1, - 0xf0, 0x37, 0x39, 0x3c, 0x2f, 0x30, 0x9c, 0xa2, 0xe3, 0x74, 0xba, 0x16, 0x69, 0x5b, 0xf1, 0x14, - 0xbf, 0x2f, 0x28, 0x04, 0x86, 0x53, 0x9c, 0x21, 0xac, 0x5f, 0x11, 0x14, 0x5e, 0x24, 0x9e, 0xcf, - 0x43, 0xde, 0xb1, 0xad, 0x63, 0xc7, 0x1e, 0xc5, 0x89, 0x3f, 0xe0, 0x0c, 0xc0, 0x21, 0x84, 0xe0, - 0x3a, 0xe4, 0x46, 0x5d, 0x88, 0x3f, 0x7c, 0x57, 0x6c, 0x0f, 0xb1, 0x02, 0x9b, 0x30, 0x29, 0x0a, - 0x94, 0xe9, 0xd8, 0x23, 0x50, 0xfc, 0x11, 0xa7, 0x28, 0x46, 0x60, 0xfc, 0x31, 0x7c, 0xec, 0xf9, - 0x2d, 0x3c, 0x0a, 0xc9, 0x5b, 0xe2, 0x31, 0x38, 0x84, 0x87, 0xb2, 0x8e, 0x6d, 0xe3, 0x68, 0x34, - 0x86, 0xaf, 0x89, 0x50, 0x0a, 0x0c, 0xa1, 0x58, 0x87, 0x89, 0xb6, 0xee, 0x7a, 0x47, 0xba, 0x35, - 0xd2, 0x72, 0xfc, 0x31, 0xe7, 0x28, 0x04, 0x20, 0x1e, 0x91, 0xae, 0x7d, 0x16, 0x9a, 0xaf, 0x8b, - 0x88, 0x44, 0x60, 0x7c, 0xeb, 0x79, 0x3e, 0x3d, 0x9b, 0x39, 0x0b, 0xdb, 0x9f, 0x88, 0xad, 0xc7, - 0xb0, 0x3b, 0x51, 0xc6, 0xeb, 0x90, 0xf3, 0xcc, 0x57, 0x47, 0xa2, 0xf9, 0x53, 0xb1, 0xd2, 0x14, - 0x40, 0xc0, 0x2f, 0xc1, 0xf9, 0xa1, 0x6d, 0x62, 0x04, 0xb2, 0x3f, 0xe3, 0x64, 0xe7, 0x86, 0xb4, - 0x0a, 0x5e, 0x12, 0xce, 0x4a, 0xf9, 0xe7, 0xa2, 0x24, 0xe0, 0x3e, 0xae, 0x7d, 0x32, 0xd9, 0x7b, - 0x7a, 0xf3, 0x6c, 0x51, 0xfb, 0x0b, 0x11, 0x35, 0x86, 0xed, 0x89, 0xda, 0x01, 0x9c, 0xe3, 0x8c, - 0x67, 0x5b, 0xd7, 0x6f, 0x88, 0xc2, 0xca, 0xd0, 0x87, 0xbd, 0xab, 0xfb, 0x69, 0x98, 0x0d, 0xc2, - 0x29, 0x86, 0x52, 0x4f, 0x6b, 0xeb, 0x9d, 0x11, 0x98, 0xbf, 0xc9, 0x99, 0x45, 0xc5, 0x0f, 0xa6, - 0x5a, 0x6f, 0x47, 0xef, 0x10, 0xf2, 0x17, 0x41, 0x11, 0xe4, 0x5d, 0xdb, 0xc5, 0x86, 0xd3, 0xb2, - 0xcd, 0x57, 0x71, 0x63, 0x04, 0xea, 0xbf, 0xec, 0x5b, 0xaa, 0xc3, 0x08, 0x9c, 0x30, 0x6f, 0x81, - 0x1c, 0xcc, 0x2a, 0x9a, 0xd9, 0xee, 0x38, 0xae, 0x1f, 0xc3, 0xf8, 0x57, 0x62, 0xa5, 0x02, 0xdc, - 0x16, 0x85, 0x95, 0xab, 0x50, 0xa4, 0x97, 0xa3, 0xa6, 0xe4, 0x5f, 0x73, 0xa2, 0x89, 0x10, 0xc5, - 0x0b, 0x87, 0xe1, 0xb4, 0x3b, 0xba, 0x3b, 0x4a, 0xfd, 0xfb, 0x1b, 0x51, 0x38, 0x38, 0x84, 0x17, - 0x0e, 0xff, 0xb8, 0x83, 0x49, 0xb7, 0x1f, 0x81, 0xe1, 0x5b, 0xa2, 0x70, 0x08, 0x0c, 0xa7, 0x10, - 0x03, 0xc3, 0x08, 0x14, 0x7f, 0x2b, 0x28, 0x04, 0x86, 0x50, 0x7c, 0x3c, 0x6c, 0xb4, 0x2e, 0x6e, - 0x99, 0x9e, 0xef, 0xb2, 0x51, 0xf8, 0xc1, 0x54, 0xdf, 0x7e, 0xb7, 0x77, 0x08, 0x53, 0x23, 0xd0, - 0xf2, 0x4d, 0x98, 0xec, 0x1b, 0x31, 0x50, 0xdc, 0x2f, 0xfa, 0xca, 0x67, 0xde, 0xe7, 0xc5, 0xa8, - 0x77, 0xc2, 0x28, 0x6f, 0x93, 0x75, 0xef, 0x9d, 0x03, 0xe2, 0xc9, 0x5e, 0x7b, 0x3f, 0x58, 0xfa, - 0x9e, 0x31, 0xa0, 0xfc, 0x02, 0x4c, 0xf4, 0xcc, 0x00, 0xf1, 0x54, 0xbf, 0xcc, 0xa9, 0x0a, 0xd1, - 0x11, 0xa0, 0xbc, 0x0a, 0x29, 0xd2, 0xcf, 0xe3, 0xe1, 0xbf, 0xc2, 0xe1, 0xd4, 0xbc, 0xfc, 0x51, - 0xc8, 0x8a, 0x3e, 0x1e, 0x0f, 0xfd, 0x55, 0x0e, 0x0d, 0x20, 0x04, 0x2e, 0x7a, 0x78, 0x3c, 0xfc, - 0xd7, 0x04, 0x5c, 0x40, 0x08, 0x7c, 0xf4, 0x10, 0xfe, 0xfd, 0xe7, 0x52, 0xbc, 0x0e, 0x8b, 0xd8, - 0x5d, 0x87, 0x71, 0xde, 0xbc, 0xe3, 0xd1, 0x9f, 0xe5, 0x37, 0x17, 0x88, 0xf2, 0x15, 0x48, 0x8f, - 0x18, 0xf0, 0x5f, 0xe7, 0x50, 0x66, 0x5f, 0x5e, 0x87, 0x7c, 0xa4, 0x61, 0xc7, 0xc3, 0x7f, 0x83, - 0xc3, 0xa3, 0x28, 0xe2, 0x3a, 0x6f, 0xd8, 0xf1, 0x04, 0xbf, 0x29, 0x5c, 0xe7, 0x08, 0x12, 0x36, - 0xd1, 0xab, 0xe3, 0xd1, 0xbf, 0x25, 0xa2, 0x2e, 0x20, 0xe5, 0xe7, 0x21, 0x17, 0xd4, 0xdf, 0x78, - 0xfc, 0x6f, 0x73, 0x7c, 0x88, 0x21, 0x11, 0x88, 0xd4, 0xff, 0x78, 0x8a, 0xdf, 0x11, 0x11, 0x88, - 0xa0, 0xc8, 0x36, 0xea, 0xef, 0xe9, 0xf1, 0x4c, 0x9f, 0x17, 0xdb, 0xa8, 0xaf, 0xa5, 0x93, 0xd5, - 0xa4, 0x65, 0x30, 0x9e, 0xe2, 0x77, 0xc5, 0x6a, 0x52, 0x7b, 0xe2, 0x46, 0x7f, 0x93, 0x8c, 0xe7, - 0xf8, 0x3d, 0xe1, 0x46, 0x5f, 0x8f, 0x2c, 0xef, 0x03, 0x1a, 0x6c, 0x90, 0xf1, 0x7c, 0x5f, 0xe0, - 0x7c, 0x53, 0x03, 0xfd, 0xb1, 0xfc, 0x49, 0x38, 0x37, 0xbc, 0x39, 0xc6, 0xb3, 0x7e, 0xf1, 0xfd, - 0xbe, 0xd7, 0x99, 0x68, 0x6f, 0x2c, 0x1f, 0x84, 0x55, 0x36, 0xda, 0x18, 0xe3, 0x69, 0x5f, 0x7f, - 0xbf, 0xb7, 0xd0, 0x46, 0xfb, 0x62, 0xb9, 0x02, 0x10, 0xf6, 0xa4, 0x78, 0xae, 0x37, 0x38, 0x57, - 0x04, 0x44, 0xb6, 0x06, 0x6f, 0x49, 0xf1, 0xf8, 0x2f, 0x8b, 0xad, 0xc1, 0x11, 0x64, 0x6b, 0x88, - 0x6e, 0x14, 0x8f, 0x7e, 0x53, 0x6c, 0x0d, 0x01, 0x29, 0x5f, 0x87, 0xac, 0xdd, 0xb5, 0x2c, 0x92, - 0x5b, 0xe8, 0xc1, 0x1f, 0xd9, 0x28, 0xff, 0x76, 0x9f, 0x83, 0x05, 0xa0, 0xbc, 0x0a, 0x69, 0xdc, - 0xae, 0xe3, 0x46, 0x1c, 0xf2, 0xdf, 0xef, 0x8b, 0x7a, 0x42, 0xac, 0xcb, 0xcf, 0x03, 0xb0, 0x97, - 0x69, 0xfa, 0x1b, 0x4b, 0x0c, 0xf6, 0x3f, 0xee, 0xf3, 0xdf, 0xef, 0x43, 0x48, 0x48, 0xc0, 0xbe, - 0x06, 0x78, 0x30, 0xc1, 0xbb, 0xbd, 0x04, 0xf4, 0x05, 0xfc, 0x1a, 0x8c, 0xdf, 0xf2, 0x1c, 0xdb, - 0xd7, 0x5b, 0x71, 0xe8, 0xff, 0xe4, 0x68, 0x61, 0x4f, 0x02, 0xd6, 0x76, 0x5c, 0xec, 0xeb, 0x2d, - 0x2f, 0x0e, 0xfb, 0x5f, 0x1c, 0x1b, 0x00, 0x08, 0xd8, 0xd0, 0x3d, 0x7f, 0x94, 0xe7, 0xfe, 0x6f, - 0x01, 0x16, 0x00, 0xe2, 0x34, 0xf9, 0xff, 0x36, 0x3e, 0x8e, 0xc3, 0xbe, 0x27, 0x9c, 0xe6, 0xf6, - 0xe5, 0x8f, 0x42, 0x8e, 0xfc, 0xcb, 0xbe, 0x69, 0x89, 0x01, 0xff, 0x0f, 0x07, 0x87, 0x08, 0x72, - 0x67, 0xcf, 0x6f, 0xf8, 0x66, 0x7c, 0xb0, 0xff, 0x97, 0xaf, 0xb4, 0xb0, 0x2f, 0x57, 0x20, 0xef, - 0xf9, 0x8d, 0x46, 0x97, 0x4f, 0x34, 0x31, 0xf0, 0x1f, 0xdd, 0x0f, 0x5e, 0x72, 0x03, 0xcc, 0xda, - 0xc5, 0xe1, 0xe7, 0x75, 0xb0, 0xe9, 0x6c, 0x3a, 0xec, 0xa4, 0x0e, 0x3e, 0x9f, 0x86, 0x87, 0x0c, - 0xa7, 0x5d, 0x77, 0xbc, 0x4b, 0x75, 0xc7, 0x3f, 0xba, 0xe4, 0xd8, 0xdc, 0x10, 0x25, 0x1d, 0x1b, - 0xcf, 0x9e, 0xed, 0x44, 0x6e, 0xfe, 0x3c, 0xa4, 0x6b, 0xdd, 0x7a, 0xfd, 0x18, 0xc9, 0x90, 0xf4, - 0xba, 0x75, 0xfe, 0xc1, 0x05, 0xf9, 0x77, 0xfe, 0xfb, 0x49, 0xc8, 0xd7, 0xf4, 0x76, 0xc7, 0xc2, - 0x7b, 0x36, 0xde, 0x6b, 0x22, 0x05, 0x32, 0xf4, 0x01, 0x9e, 0xa3, 0x46, 0xd2, 0x8d, 0x31, 0x95, - 0x5f, 0x07, 0x9a, 0x25, 0x7a, 0x52, 0x99, 0x08, 0x34, 0x4b, 0x81, 0x66, 0x99, 0x1d, 0x54, 0x06, - 0x9a, 0xe5, 0x40, 0xb3, 0x42, 0x8f, 0x2b, 0x93, 0x81, 0x66, 0x25, 0xd0, 0xac, 0xd2, 0xe3, 0xf8, - 0x89, 0x40, 0xb3, 0x1a, 0x68, 0x2e, 0xd3, 0x03, 0xf8, 0x54, 0xa0, 0xb9, 0x1c, 0x68, 0xae, 0xd0, - 0x73, 0xf7, 0xa9, 0x40, 0x73, 0x25, 0xd0, 0x5c, 0xa5, 0x67, 0xed, 0x28, 0xd0, 0x5c, 0x0d, 0x34, - 0xd7, 0xe8, 0x47, 0x15, 0xe3, 0x81, 0xe6, 0x1a, 0x9a, 0x85, 0x71, 0xf6, 0x64, 0xcf, 0xd2, 0xdf, - 0x32, 0x27, 0x6f, 0x8c, 0xa9, 0x42, 0x10, 0xea, 0x9e, 0xa3, 0x1f, 0x4e, 0x64, 0x42, 0xdd, 0x73, - 0xa1, 0x6e, 0x89, 0x7e, 0x41, 0x2c, 0x87, 0xba, 0xa5, 0x50, 0xb7, 0xac, 0x4c, 0x90, 0x75, 0x0f, - 0x75, 0xcb, 0xa1, 0x6e, 0x45, 0x29, 0x92, 0xf8, 0x87, 0xba, 0x95, 0x50, 0xb7, 0xaa, 0x4c, 0xce, - 0x49, 0x0b, 0x85, 0x50, 0xb7, 0x8a, 0x9e, 0x81, 0xbc, 0xd7, 0xad, 0x6b, 0xfc, 0xa7, 0x77, 0xfa, - 0x81, 0x46, 0x7e, 0x09, 0x16, 0x49, 0x46, 0xd0, 0x45, 0xbd, 0x31, 0xa6, 0x82, 0xd7, 0xad, 0xf3, - 0xc2, 0xb8, 0x56, 0x00, 0x7a, 0x8e, 0xa0, 0xd1, 0x2f, 0x13, 0xd7, 0x36, 0xde, 0xbe, 0x57, 0x1a, - 0xfb, 0xee, 0xbd, 0xd2, 0xd8, 0x3f, 0xdf, 0x2b, 0x8d, 0xfd, 0xe0, 0x5e, 0x49, 0x7a, 0xef, 0x5e, - 0x49, 0xfa, 0xf1, 0xbd, 0x92, 0x74, 0xf7, 0xa4, 0x24, 0x7d, 0xed, 0xa4, 0x24, 0x7d, 0xe3, 0xa4, - 0x24, 0x7d, 0xfb, 0xa4, 0x24, 0xbd, 0x7d, 0x52, 0x92, 0xbe, 0x7b, 0x52, 0x92, 0x7e, 0x70, 0x52, - 0x92, 0x7e, 0x78, 0x52, 0x1a, 0x7b, 0xef, 0xa4, 0x24, 0xfd, 0xf8, 0xa4, 0x34, 0x76, 0xf7, 0x5f, - 0x4a, 0x63, 0xf5, 0x0c, 0x4d, 0xa3, 0xe5, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x34, 0x19, 0xac, - 0x3a, 0x10, 0x30, 0x00, 0x00, + // 3861 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x84, 0x20, 0x79, 0x17, 0x2b, 0xc7, 0xdc, 0x5d, 0xc5, + 0x8e, 0x65, 0xbb, 0x96, 0x6c, 0xed, 0x6a, 0x2f, 0xdc, 0x26, 0x1e, 0x8a, 0xe2, 0x6a, 0xb9, 0x95, + 0x44, 0x06, 0x94, 0xe2, 0x75, 0xfa, 0x80, 0x01, 0xc1, 0x9f, 0x14, 0x76, 0x41, 0x80, 0x01, 0xc0, + 0x5d, 0xcb, 0x4f, 0xdb, 0x71, 0x2f, 0x93, 0xe9, 0xf4, 0x9a, 0xce, 0x34, 0x71, 0x1d, 0xb7, 0xcd, + 0x4c, 0xeb, 0x34, 0xe9, 0x25, 0xe9, 0x25, 0xcd, 0xf4, 0xa9, 0x2f, 0x69, 0xfd, 0xd4, 0x49, 0xde, + 0xfa, 0x90, 0x07, 0xaf, 0xe2, 0x99, 0xa6, 0xad, 0xdb, 0xba, 0x8d, 0x67, 0x9a, 0x19, 0xbf, 0x64, + 0xfe, 0x1b, 0x00, 0x5e, 0xb4, 0xa0, 0x32, 0xe3, 0xf8, 0x49, 0xc2, 0x39, 0xe7, 0xfb, 0x70, 0x70, + 0xfe, 0xf3, 0x9f, 0x73, 0xf0, 0x13, 0xf0, 0x83, 0x75, 0x38, 0xd7, 0xb1, 0xed, 0x8e, 0x89, 0x56, + 0x7b, 0x8e, 0xed, 0xd9, 0xcd, 0x7e, 0x7b, 0xb5, 0x85, 0x5c, 0xdd, 0x31, 0x7a, 0x9e, 0xed, 0xac, + 0x10, 0x99, 0x94, 0xa7, 0x16, 0x2b, 0xdc, 0x62, 0x69, 0x07, 0xe6, 0xae, 0x1b, 0x26, 0xda, 0xf4, + 0x0d, 0x1b, 0xc8, 0x93, 0xae, 0x40, 0xa2, 0x6d, 0x98, 0x48, 0x16, 0xce, 0xc5, 0x97, 0x33, 0x6b, + 0x8f, 0xaf, 0x0c, 0x81, 0x56, 0x06, 0x11, 0x75, 0x2c, 0x56, 0x08, 0x62, 0xe9, 0x9d, 0x04, 0xcc, + 0x8f, 0xd1, 0x4a, 0x12, 0x24, 0x2c, 0xad, 0x8b, 0x19, 0x85, 0xe5, 0xb4, 0x42, 0xfe, 0x97, 0x64, + 0x98, 0xe9, 0x69, 0xfa, 0x1d, 0xad, 0x83, 0xe4, 0x18, 0x11, 0xf3, 0x4b, 0xa9, 0x00, 0xd0, 0x42, + 0x3d, 0x64, 0xb5, 0x90, 0xa5, 0x1f, 0xca, 0xf1, 0x73, 0xf1, 0xe5, 0xb4, 0x12, 0x92, 0x48, 0xcf, + 0xc0, 0x5c, 0xaf, 0xdf, 0x34, 0x0d, 0x5d, 0x0d, 0x99, 0xc1, 0xb9, 0xf8, 0x72, 0x52, 0x11, 0xa9, + 0x62, 0x33, 0x30, 0x7e, 0x12, 0xf2, 0xf7, 0x90, 0x76, 0x27, 0x6c, 0x9a, 0x21, 0xa6, 0x39, 0x2c, + 0x0e, 0x19, 0x96, 0x21, 0xdb, 0x45, 0xae, 0xab, 0x75, 0x90, 0xea, 0x1d, 0xf6, 0x90, 0x9c, 0x20, + 0x4f, 0x7f, 0x6e, 0xe4, 0xe9, 0x87, 0x9f, 0x3c, 0xc3, 0x50, 0x7b, 0x87, 0x3d, 0x24, 0x95, 0x20, + 0x8d, 0xac, 0x7e, 0x97, 0x32, 0x24, 0x8f, 0x89, 0x5f, 0xc5, 0xea, 0x77, 0x87, 0x59, 0x52, 0x18, + 0xc6, 0x28, 0x66, 0x5c, 0xe4, 0xdc, 0x35, 0x74, 0x24, 0x4f, 0x13, 0x82, 0x27, 0x47, 0x08, 0x1a, + 0x54, 0x3f, 0xcc, 0xc1, 0x71, 0x52, 0x19, 0xd2, 0xe8, 0x65, 0x0f, 0x59, 0xae, 0x61, 0x5b, 0xf2, + 0x0c, 0x21, 0x79, 0x62, 0xcc, 0x2a, 0x22, 0xb3, 0x35, 0x4c, 0x11, 0xe0, 0xa4, 0x4b, 0x30, 0x63, + 0xf7, 0x3c, 0xc3, 0xb6, 0x5c, 0x39, 0x75, 0x4e, 0x58, 0xce, 0xac, 0x7d, 0x6c, 0x6c, 0x22, 0xd4, + 0xa8, 0x8d, 0xc2, 0x8d, 0xa5, 0x2a, 0x88, 0xae, 0xdd, 0x77, 0x74, 0xa4, 0xea, 0x76, 0x0b, 0xa9, + 0x86, 0xd5, 0xb6, 0xe5, 0x34, 0x21, 0x38, 0x3b, 0xfa, 0x20, 0xc4, 0xb0, 0x6c, 0xb7, 0x50, 0xd5, + 0x6a, 0xdb, 0x4a, 0xce, 0x1d, 0xb8, 0x96, 0x4e, 0xc1, 0xb4, 0x7b, 0x68, 0x79, 0xda, 0xcb, 0x72, + 0x96, 0x64, 0x08, 0xbb, 0x5a, 0xfa, 0xff, 0x24, 0xe4, 0x27, 0x49, 0xb1, 0x6b, 0x90, 0x6c, 0xe3, + 0xa7, 0x94, 0x63, 0x27, 0x89, 0x01, 0xc5, 0x0c, 0x06, 0x71, 0xfa, 0xa7, 0x0c, 0x62, 0x09, 0x32, + 0x16, 0x72, 0x3d, 0xd4, 0xa2, 0x19, 0x11, 0x9f, 0x30, 0xa7, 0x80, 0x82, 0x46, 0x53, 0x2a, 0xf1, + 0x53, 0xa5, 0xd4, 0x2d, 0xc8, 0xfb, 0x2e, 0xa9, 0x8e, 0x66, 0x75, 0x78, 0x6e, 0xae, 0x46, 0x79, + 0xb2, 0x52, 0xe1, 0x38, 0x05, 0xc3, 0x94, 0x1c, 0x1a, 0xb8, 0x96, 0x36, 0x01, 0x6c, 0x0b, 0xd9, + 0x6d, 0xb5, 0x85, 0x74, 0x53, 0x4e, 0x1d, 0x13, 0xa5, 0x1a, 0x36, 0x19, 0x89, 0x92, 0x4d, 0xa5, + 0xba, 0x29, 0x5d, 0x0d, 0x52, 0x6d, 0xe6, 0x98, 0x4c, 0xd9, 0xa1, 0x9b, 0x6c, 0x24, 0xdb, 0xf6, + 0x21, 0xe7, 0x20, 0x9c, 0xf7, 0xa8, 0xc5, 0x9e, 0x2c, 0x4d, 0x9c, 0x58, 0x89, 0x7c, 0x32, 0x85, + 0xc1, 0xe8, 0x83, 0xcd, 0x3a, 0xe1, 0x4b, 0xe9, 0xe3, 0xe0, 0x0b, 0x54, 0x92, 0x56, 0x40, 0xaa, + 0x50, 0x96, 0x0b, 0x77, 0xb5, 0x2e, 0x5a, 0xbc, 0x02, 0xb9, 0xc1, 0xf0, 0x48, 0x0b, 0x90, 0x74, + 0x3d, 0xcd, 0xf1, 0x48, 0x16, 0x26, 0x15, 0x7a, 0x21, 0x89, 0x10, 0x47, 0x56, 0x8b, 0x54, 0xb9, + 0xa4, 0x82, 0xff, 0x5d, 0xbc, 0x0c, 0xb3, 0x03, 0xb7, 0x9f, 0x14, 0xb8, 0xf4, 0xc5, 0x69, 0x58, + 0x18, 0x97, 0x73, 0x63, 0xd3, 0xff, 0x14, 0x4c, 0x5b, 0xfd, 0x6e, 0x13, 0x39, 0x72, 0x9c, 0x30, + 0xb0, 0x2b, 0xa9, 0x04, 0x49, 0x53, 0x6b, 0x22, 0x53, 0x4e, 0x9c, 0x13, 0x96, 0x73, 0x6b, 0xcf, + 0x4c, 0x94, 0xd5, 0x2b, 0xdb, 0x18, 0xa2, 0x50, 0xa4, 0xf4, 0x29, 0x48, 0xb0, 0x12, 0x87, 0x19, + 0x9e, 0x9e, 0x8c, 0x01, 0xe7, 0xa2, 0x42, 0x70, 0xd2, 0xa3, 0x90, 0xc6, 0x7f, 0x69, 0x6c, 0xa7, + 0x89, 0xcf, 0x29, 0x2c, 0xc0, 0x71, 0x95, 0x16, 0x21, 0x45, 0xd2, 0xac, 0x85, 0x78, 0x6b, 0xf0, + 0xaf, 0xf1, 0xc2, 0xb4, 0x50, 0x5b, 0xeb, 0x9b, 0x9e, 0x7a, 0x57, 0x33, 0xfb, 0x88, 0x24, 0x4c, + 0x5a, 0xc9, 0x32, 0xe1, 0x67, 0xb0, 0x4c, 0x3a, 0x0b, 0x19, 0x9a, 0x95, 0x86, 0xd5, 0x42, 0x2f, + 0x93, 0xea, 0x93, 0x54, 0x68, 0xa2, 0x56, 0xb1, 0x04, 0xdf, 0xfe, 0xb6, 0x6b, 0x5b, 0x7c, 0x69, + 0xc9, 0x2d, 0xb0, 0x80, 0xdc, 0xfe, 0xf2, 0x70, 0xe1, 0x7b, 0x6c, 0xfc, 0xe3, 0x0d, 0xe7, 0xe2, + 0xd2, 0xb7, 0x62, 0x90, 0x20, 0xfb, 0x2d, 0x0f, 0x99, 0xbd, 0x97, 0xea, 0x15, 0x75, 0xb3, 0xb6, + 0xbf, 0xb1, 0x5d, 0x11, 0x05, 0x29, 0x07, 0x40, 0x04, 0xd7, 0xb7, 0x6b, 0xa5, 0x3d, 0x31, 0xe6, + 0x5f, 0x57, 0x77, 0xf7, 0x2e, 0x5d, 0x14, 0xe3, 0x3e, 0x60, 0x9f, 0x0a, 0x12, 0x61, 0x83, 0x0b, + 0x6b, 0x62, 0x52, 0x12, 0x21, 0x4b, 0x09, 0xaa, 0xb7, 0x2a, 0x9b, 0x97, 0x2e, 0x8a, 0xd3, 0x83, + 0x92, 0x0b, 0x6b, 0xe2, 0x8c, 0x34, 0x0b, 0x69, 0x22, 0xd9, 0xa8, 0xd5, 0xb6, 0xc5, 0x94, 0xcf, + 0xd9, 0xd8, 0x53, 0xaa, 0xbb, 0x5b, 0x62, 0xda, 0xe7, 0xdc, 0x52, 0x6a, 0xfb, 0x75, 0x11, 0x7c, + 0x86, 0x9d, 0x4a, 0xa3, 0x51, 0xda, 0xaa, 0x88, 0x19, 0xdf, 0x62, 0xe3, 0xa5, 0xbd, 0x4a, 0x43, + 0xcc, 0x0e, 0xb8, 0x75, 0x61, 0x4d, 0x9c, 0xf5, 0x6f, 0x51, 0xd9, 0xdd, 0xdf, 0x11, 0x73, 0xd2, + 0x1c, 0xcc, 0xd2, 0x5b, 0x70, 0x27, 0xf2, 0x43, 0xa2, 0x4b, 0x17, 0x45, 0x31, 0x70, 0x84, 0xb2, + 0xcc, 0x0d, 0x08, 0x2e, 0x5d, 0x14, 0xa5, 0xa5, 0x32, 0x24, 0x49, 0x76, 0x49, 0x12, 0xe4, 0xb6, + 0x4b, 0x1b, 0x95, 0x6d, 0xb5, 0x56, 0xdf, 0xab, 0xd6, 0x76, 0x4b, 0xdb, 0xa2, 0x10, 0xc8, 0x94, + 0xca, 0xa7, 0xf7, 0xab, 0x4a, 0x65, 0x53, 0x8c, 0x85, 0x65, 0xf5, 0x4a, 0x69, 0xaf, 0xb2, 0x29, + 0xc6, 0x97, 0x74, 0x58, 0x18, 0x57, 0x67, 0xc6, 0xee, 0x8c, 0xd0, 0x12, 0xc7, 0x8e, 0x59, 0x62, + 0xc2, 0x35, 0xb2, 0xc4, 0x5f, 0x11, 0x60, 0x7e, 0x4c, 0xad, 0x1d, 0x7b, 0x93, 0x17, 0x20, 0x49, + 0x53, 0x94, 0x76, 0x9f, 0xa7, 0xc6, 0x16, 0x6d, 0x92, 0xb0, 0x23, 0x1d, 0x88, 0xe0, 0xc2, 0x1d, + 0x38, 0x7e, 0x4c, 0x07, 0xc6, 0x14, 0x23, 0x4e, 0xbe, 0x2a, 0x80, 0x7c, 0x1c, 0x77, 0x44, 0xa1, + 0x88, 0x0d, 0x14, 0x8a, 0x6b, 0xc3, 0x0e, 0x9c, 0x3f, 0xfe, 0x19, 0x46, 0xbc, 0x78, 0x53, 0x80, + 0x53, 0xe3, 0x07, 0x95, 0xb1, 0x3e, 0x7c, 0x0a, 0xa6, 0xbb, 0xc8, 0x3b, 0xb0, 0x79, 0xb3, 0xfe, + 0xc4, 0x98, 0x16, 0x80, 0xd5, 0xc3, 0xb1, 0x62, 0xa8, 0x70, 0x0f, 0x89, 0x1f, 0x37, 0x6d, 0x50, + 0x6f, 0x46, 0x3c, 0xfd, 0x7c, 0x0c, 0x1e, 0x19, 0x4b, 0x3e, 0xd6, 0xd1, 0xc7, 0x00, 0x0c, 0xab, + 0xd7, 0xf7, 0x68, 0x43, 0xa6, 0xf5, 0x29, 0x4d, 0x24, 0x64, 0xef, 0xe3, 0xda, 0xd3, 0xf7, 0x7c, + 0x7d, 0x9c, 0xe8, 0x81, 0x8a, 0x88, 0xc1, 0x95, 0xc0, 0xd1, 0x04, 0x71, 0xb4, 0x70, 0xcc, 0x93, + 0x8e, 0xf4, 0xba, 0xe7, 0x40, 0xd4, 0x4d, 0x03, 0x59, 0x9e, 0xea, 0x7a, 0x0e, 0xd2, 0xba, 0x86, + 0xd5, 0x21, 0x05, 0x38, 0x55, 0x4c, 0xb6, 0x35, 0xd3, 0x45, 0x4a, 0x9e, 0xaa, 0x1b, 0x5c, 0x8b, + 0x11, 0xa4, 0xcb, 0x38, 0x21, 0xc4, 0xf4, 0x00, 0x82, 0xaa, 0x7d, 0xc4, 0xd2, 0xd7, 0x67, 0x20, + 0x13, 0x1a, 0xeb, 0xa4, 0xf3, 0x90, 0xbd, 0xad, 0xdd, 0xd5, 0x54, 0x3e, 0xaa, 0xd3, 0x48, 0x64, + 0xb0, 0xac, 0xce, 0xc6, 0xf5, 0xe7, 0x60, 0x81, 0x98, 0xd8, 0x7d, 0x0f, 0x39, 0xaa, 0x6e, 0x6a, + 0xae, 0x4b, 0x82, 0x96, 0x22, 0xa6, 0x12, 0xd6, 0xd5, 0xb0, 0xaa, 0xcc, 0x35, 0xd2, 0x3a, 0xcc, + 0x13, 0x44, 0xb7, 0x6f, 0x7a, 0x46, 0xcf, 0x44, 0x2a, 0x7e, 0x79, 0x70, 0x49, 0x21, 0xf6, 0x3d, + 0x9b, 0xc3, 0x16, 0x3b, 0xcc, 0x00, 0x7b, 0xe4, 0x4a, 0x9b, 0xf0, 0x18, 0x81, 0x75, 0x90, 0x85, + 0x1c, 0xcd, 0x43, 0x2a, 0xfa, 0x5c, 0x5f, 0x33, 0x5d, 0x55, 0xb3, 0x5a, 0xea, 0x81, 0xe6, 0x1e, + 0xc8, 0x0b, 0x98, 0x60, 0x23, 0x26, 0x0b, 0xca, 0x19, 0x6c, 0xb8, 0xc5, 0xec, 0x2a, 0xc4, 0xac, + 0x64, 0xb5, 0x6e, 0x68, 0xee, 0x81, 0x54, 0x84, 0x53, 0x84, 0xc5, 0xf5, 0x1c, 0xc3, 0xea, 0xa8, + 0xfa, 0x01, 0xd2, 0xef, 0xa8, 0x7d, 0xaf, 0x7d, 0x45, 0x7e, 0x34, 0x7c, 0x7f, 0xe2, 0x61, 0x83, + 0xd8, 0x94, 0xb1, 0xc9, 0xbe, 0xd7, 0xbe, 0x22, 0x35, 0x20, 0x8b, 0x17, 0xa3, 0x6b, 0xbc, 0x82, + 0xd4, 0xb6, 0xed, 0x90, 0xce, 0x92, 0x1b, 0xb3, 0xb3, 0x43, 0x11, 0x5c, 0xa9, 0x31, 0xc0, 0x8e, + 0xdd, 0x42, 0xc5, 0x64, 0xa3, 0x5e, 0xa9, 0x6c, 0x2a, 0x19, 0xce, 0x72, 0xdd, 0x76, 0x70, 0x42, + 0x75, 0x6c, 0x3f, 0xc0, 0x19, 0x9a, 0x50, 0x1d, 0x9b, 0x87, 0x77, 0x1d, 0xe6, 0x75, 0x9d, 0x3e, + 0xb3, 0xa1, 0xab, 0x6c, 0xc4, 0x77, 0x65, 0x71, 0x20, 0x58, 0xba, 0xbe, 0x45, 0x0d, 0x58, 0x8e, + 0xbb, 0xd2, 0x55, 0x78, 0x24, 0x08, 0x56, 0x18, 0x38, 0x37, 0xf2, 0x94, 0xc3, 0xd0, 0x75, 0x98, + 0xef, 0x1d, 0x8e, 0x02, 0xa5, 0x81, 0x3b, 0xf6, 0x0e, 0x87, 0x61, 0x4f, 0x90, 0xd7, 0x36, 0x07, + 0xe9, 0x9a, 0x87, 0x5a, 0xf2, 0xe9, 0xb0, 0x75, 0x48, 0x21, 0xad, 0x82, 0xa8, 0xeb, 0x2a, 0xb2, + 0xb4, 0xa6, 0x89, 0x54, 0xcd, 0x41, 0x96, 0xe6, 0xca, 0x67, 0xc3, 0xc6, 0x39, 0x5d, 0xaf, 0x10, + 0x6d, 0x89, 0x28, 0xa5, 0xa7, 0x61, 0xce, 0x6e, 0xde, 0xd6, 0x69, 0x66, 0xa9, 0x3d, 0x07, 0xb5, + 0x8d, 0x97, 0xe5, 0xc7, 0x49, 0x98, 0xf2, 0x58, 0x41, 0xf2, 0xaa, 0x4e, 0xc4, 0xd2, 0x53, 0x20, + 0xea, 0xee, 0x81, 0xe6, 0xf4, 0x48, 0x6b, 0x77, 0x7b, 0x9a, 0x8e, 0xe4, 0x27, 0xa8, 0x29, 0x95, + 0xef, 0x72, 0x31, 0xce, 0x6c, 0xf7, 0x9e, 0xd1, 0xf6, 0x38, 0xe3, 0x93, 0x34, 0xb3, 0x89, 0x8c, + 0xb1, 0xdd, 0x82, 0x85, 0xbe, 0x65, 0x58, 0x1e, 0x72, 0x7a, 0x0e, 0xc2, 0x43, 0x3c, 0xdd, 0x89, + 0xf2, 0xbf, 0xcd, 0x1c, 0x33, 0x86, 0xef, 0x87, 0xad, 0x69, 0x02, 0x28, 0xf3, 0xfd, 0x51, 0xe1, + 0x52, 0x11, 0xb2, 0xe1, 0xbc, 0x90, 0xd2, 0x40, 0x33, 0x43, 0x14, 0x70, 0x8f, 0x2d, 0xd7, 0x36, + 0x71, 0x77, 0xfc, 0x6c, 0x45, 0x8c, 0xe1, 0x2e, 0xbd, 0x5d, 0xdd, 0xab, 0xa8, 0xca, 0xfe, 0xee, + 0x5e, 0x75, 0xa7, 0x22, 0xc6, 0x9f, 0x4e, 0xa7, 0x7e, 0x38, 0x23, 0xde, 0xbf, 0x7f, 0xff, 0x7e, + 0x6c, 0xe9, 0x3b, 0x31, 0xc8, 0x0d, 0x4e, 0xc6, 0xd2, 0xcf, 0xc3, 0x69, 0xfe, 0x1a, 0xeb, 0x22, + 0x4f, 0xbd, 0x67, 0x38, 0x24, 0x55, 0xbb, 0x1a, 0x9d, 0x2d, 0xfd, 0x28, 0x2f, 0x30, 0xab, 0x06, + 0xf2, 0x5e, 0x34, 0x1c, 0x9c, 0x88, 0x5d, 0xcd, 0x93, 0xb6, 0xe1, 0xac, 0x65, 0xab, 0xae, 0xa7, + 0x59, 0x2d, 0xcd, 0x69, 0xa9, 0xc1, 0x01, 0x82, 0xaa, 0xe9, 0x3a, 0x72, 0x5d, 0x9b, 0xb6, 0x08, + 0x9f, 0xe5, 0x63, 0x96, 0xdd, 0x60, 0xc6, 0x41, 0xed, 0x2c, 0x31, 0xd3, 0xa1, 0x8c, 0x88, 0x1f, + 0x97, 0x11, 0x8f, 0x42, 0xba, 0xab, 0xf5, 0x54, 0x64, 0x79, 0xce, 0x21, 0x99, 0xe7, 0x52, 0x4a, + 0xaa, 0xab, 0xf5, 0x2a, 0xf8, 0xfa, 0xc3, 0x5b, 0x83, 0x70, 0x1c, 0xbf, 0x1f, 0x87, 0x6c, 0x78, + 0xa6, 0xc3, 0x23, 0xb2, 0x4e, 0xea, 0xb7, 0x40, 0x76, 0xf8, 0xc7, 0x1f, 0x3a, 0x01, 0xae, 0x94, + 0x71, 0x61, 0x2f, 0x4e, 0xd3, 0x49, 0x4b, 0xa1, 0x48, 0xdc, 0x54, 0xf1, 0x9e, 0x46, 0x74, 0x7e, + 0x4f, 0x29, 0xec, 0x4a, 0xda, 0x82, 0xe9, 0xdb, 0x2e, 0xe1, 0x9e, 0x26, 0xdc, 0x8f, 0x3f, 0x9c, + 0xfb, 0x66, 0x83, 0x90, 0xa7, 0x6f, 0x36, 0xd4, 0xdd, 0x9a, 0xb2, 0x53, 0xda, 0x56, 0x18, 0x5c, + 0x3a, 0x03, 0x09, 0x53, 0x7b, 0xe5, 0x70, 0xb0, 0x05, 0x10, 0xd1, 0xa4, 0x81, 0x3f, 0x03, 0x89, + 0x7b, 0x48, 0xbb, 0x33, 0x58, 0x78, 0x89, 0xe8, 0x43, 0x4c, 0xfd, 0x55, 0x48, 0x92, 0x78, 0x49, + 0x00, 0x2c, 0x62, 0xe2, 0x94, 0x94, 0x82, 0x44, 0xb9, 0xa6, 0xe0, 0xf4, 0x17, 0x21, 0x4b, 0xa5, + 0x6a, 0xbd, 0x5a, 0x29, 0x57, 0xc4, 0xd8, 0xd2, 0x3a, 0x4c, 0xd3, 0x20, 0xe0, 0xad, 0xe1, 0x87, + 0x41, 0x9c, 0x62, 0x97, 0x8c, 0x43, 0xe0, 0xda, 0xfd, 0x9d, 0x8d, 0x8a, 0x22, 0xc6, 0xc2, 0xcb, + 0xeb, 0x42, 0x36, 0x3c, 0xce, 0xfd, 0x6c, 0x72, 0xea, 0x1f, 0x04, 0xc8, 0x84, 0xc6, 0x33, 0x3c, + 0x18, 0x68, 0xa6, 0x69, 0xdf, 0x53, 0x35, 0xd3, 0xd0, 0x5c, 0x96, 0x14, 0x40, 0x44, 0x25, 0x2c, + 0x99, 0x74, 0xd1, 0x7e, 0x26, 0xce, 0xbf, 0x21, 0x80, 0x38, 0x3c, 0xda, 0x0d, 0x39, 0x28, 0x7c, + 0xa4, 0x0e, 0xbe, 0x2e, 0x40, 0x6e, 0x70, 0x9e, 0x1b, 0x72, 0xef, 0xfc, 0x47, 0xea, 0xde, 0xdb, + 0x31, 0x98, 0x1d, 0x98, 0xe2, 0x26, 0xf5, 0xee, 0x73, 0x30, 0x67, 0xb4, 0x50, 0xb7, 0x67, 0x7b, + 0xc8, 0xd2, 0x0f, 0x55, 0x13, 0xdd, 0x45, 0xa6, 0xbc, 0x44, 0x0a, 0xc5, 0xea, 0xc3, 0xe7, 0xc4, + 0x95, 0x6a, 0x80, 0xdb, 0xc6, 0xb0, 0xe2, 0x7c, 0x75, 0xb3, 0xb2, 0x53, 0xaf, 0xed, 0x55, 0x76, + 0xcb, 0x2f, 0xa9, 0xfb, 0xbb, 0xbf, 0xb0, 0x5b, 0x7b, 0x71, 0x57, 0x11, 0x8d, 0x21, 0xb3, 0x0f, + 0x71, 0xab, 0xd7, 0x41, 0x1c, 0x76, 0x4a, 0x3a, 0x0d, 0xe3, 0xdc, 0x12, 0xa7, 0xa4, 0x79, 0xc8, + 0xef, 0xd6, 0xd4, 0x46, 0x75, 0xb3, 0xa2, 0x56, 0xae, 0x5f, 0xaf, 0x94, 0xf7, 0x1a, 0xf4, 0xc5, + 0xd9, 0xb7, 0xde, 0x1b, 0xdc, 0xd4, 0xaf, 0xc5, 0x61, 0x7e, 0x8c, 0x27, 0x52, 0x89, 0xcd, 0xec, + 0xf4, 0x35, 0xe2, 0xd9, 0x49, 0xbc, 0x5f, 0xc1, 0x53, 0x41, 0x5d, 0x73, 0x3c, 0x36, 0xe2, 0x3f, + 0x05, 0x38, 0x4a, 0x96, 0x67, 0xb4, 0x0d, 0xe4, 0xb0, 0x73, 0x06, 0x3a, 0xc8, 0xe7, 0x03, 0x39, + 0x3d, 0x6a, 0xf8, 0x39, 0x90, 0x7a, 0xb6, 0x6b, 0x78, 0xc6, 0x5d, 0xa4, 0x1a, 0x16, 0x3f, 0x94, + 0xc0, 0x83, 0x7d, 0x42, 0x11, 0xb9, 0xa6, 0x6a, 0x79, 0xbe, 0xb5, 0x85, 0x3a, 0xda, 0x90, 0x35, + 0x2e, 0xe0, 0x71, 0x45, 0xe4, 0x1a, 0xdf, 0xfa, 0x3c, 0x64, 0x5b, 0x76, 0x1f, 0x8f, 0x49, 0xd4, + 0x0e, 0xf7, 0x0b, 0x41, 0xc9, 0x50, 0x99, 0x6f, 0xc2, 0xe6, 0xd8, 0xe0, 0x34, 0x24, 0xab, 0x64, + 0xa8, 0x8c, 0x9a, 0x3c, 0x09, 0x79, 0xad, 0xd3, 0x71, 0x30, 0x39, 0x27, 0xa2, 0x93, 0x79, 0xce, + 0x17, 0x13, 0xc3, 0xc5, 0x9b, 0x90, 0xe2, 0x71, 0xc0, 0x2d, 0x19, 0x47, 0x42, 0xed, 0xd1, 0x33, + 0xa9, 0xd8, 0x72, 0x5a, 0x49, 0x59, 0x5c, 0x79, 0x1e, 0xb2, 0x86, 0xab, 0x06, 0x87, 0xa3, 0xb1, + 0x73, 0xb1, 0xe5, 0x94, 0x92, 0x31, 0x5c, 0xff, 0x34, 0x6c, 0xe9, 0xcd, 0x18, 0xe4, 0x06, 0x0f, + 0x77, 0xa5, 0x4d, 0x48, 0x99, 0xb6, 0xae, 0x91, 0xd4, 0xa2, 0xbf, 0x2c, 0x2c, 0x47, 0x9c, 0x07, + 0xaf, 0x6c, 0x33, 0x7b, 0xc5, 0x47, 0x2e, 0xfe, 0x8b, 0x00, 0x29, 0x2e, 0x96, 0x4e, 0x41, 0xa2, + 0xa7, 0x79, 0x07, 0x84, 0x2e, 0xb9, 0x11, 0x13, 0x05, 0x85, 0x5c, 0x63, 0xb9, 0xdb, 0xd3, 0x2c, + 0x92, 0x02, 0x4c, 0x8e, 0xaf, 0xf1, 0xba, 0x9a, 0x48, 0x6b, 0x91, 0xb1, 0xdf, 0xee, 0x76, 0x91, + 0xe5, 0xb9, 0x7c, 0x5d, 0x99, 0xbc, 0xcc, 0xc4, 0xd2, 0x33, 0x30, 0xe7, 0x39, 0x9a, 0x61, 0x0e, + 0xd8, 0x26, 0x88, 0xad, 0xc8, 0x15, 0xbe, 0x71, 0x11, 0xce, 0x70, 0xde, 0x16, 0xf2, 0x34, 0xfd, + 0x00, 0xb5, 0x02, 0xd0, 0x34, 0x39, 0x39, 0x3c, 0xcd, 0x0c, 0x36, 0x99, 0x9e, 0x63, 0x97, 0xbe, + 0x27, 0xc0, 0x1c, 0x7f, 0x51, 0x69, 0xf9, 0xc1, 0xda, 0x01, 0xd0, 0x2c, 0xcb, 0xf6, 0xc2, 0xe1, + 0x1a, 0x4d, 0xe5, 0x11, 0xdc, 0x4a, 0xc9, 0x07, 0x29, 0x21, 0x82, 0xc5, 0x2e, 0x40, 0xa0, 0x39, + 0x36, 0x6c, 0x67, 0x21, 0xc3, 0x4e, 0xee, 0xc9, 0xcf, 0x3f, 0xf4, 0xd5, 0x16, 0xa8, 0x08, 0xbf, + 0xd1, 0x48, 0x0b, 0x90, 0x6c, 0xa2, 0x8e, 0x61, 0xb1, 0xf3, 0x44, 0x7a, 0xc1, 0x4f, 0x29, 0x13, + 0xfe, 0x29, 0xe5, 0xc6, 0x2d, 0x98, 0xd7, 0xed, 0xee, 0xb0, 0xbb, 0x1b, 0xe2, 0xd0, 0xeb, 0xb5, + 0x7b, 0x43, 0xf8, 0x2c, 0x04, 0x23, 0xe6, 0x57, 0x62, 0xf1, 0xad, 0xfa, 0xc6, 0xd7, 0x62, 0x8b, + 0x5b, 0x14, 0x57, 0xe7, 0x8f, 0xa9, 0xa0, 0xb6, 0x89, 0x74, 0xec, 0x3a, 0xfc, 0xe8, 0x13, 0xf0, + 0x6c, 0xc7, 0xf0, 0x0e, 0xfa, 0xcd, 0x15, 0xdd, 0xee, 0xae, 0x76, 0xec, 0x8e, 0x1d, 0xfc, 0xdc, + 0x85, 0xaf, 0xc8, 0x05, 0xf9, 0x8f, 0xfd, 0xe4, 0x95, 0xf6, 0xa5, 0x8b, 0x91, 0xbf, 0x8f, 0x15, + 0x77, 0x61, 0x9e, 0x19, 0xab, 0xe4, 0xcc, 0x9d, 0xbe, 0x1a, 0x48, 0x0f, 0x3d, 0x77, 0x91, 0xbf, + 0xf9, 0x0e, 0xe9, 0xd5, 0xca, 0x1c, 0x83, 0x62, 0x1d, 0x7d, 0x81, 0x28, 0x2a, 0xf0, 0xc8, 0x00, + 0x1f, 0xdd, 0x97, 0xc8, 0x89, 0x60, 0xfc, 0x0e, 0x63, 0x9c, 0x0f, 0x31, 0x36, 0x18, 0xb4, 0x58, + 0x86, 0xd9, 0x93, 0x70, 0xfd, 0x13, 0xe3, 0xca, 0xa2, 0x30, 0xc9, 0x16, 0xe4, 0x09, 0x89, 0xde, + 0x77, 0x3d, 0xbb, 0x4b, 0x8a, 0xde, 0xc3, 0x69, 0xfe, 0xf9, 0x1d, 0xba, 0x51, 0x72, 0x18, 0x56, + 0xf6, 0x51, 0xc5, 0x22, 0x90, 0x9f, 0x19, 0x5a, 0x48, 0x37, 0x23, 0x18, 0xde, 0x62, 0x8e, 0xf8, + 0xf6, 0xc5, 0xcf, 0xc0, 0x02, 0xfe, 0x9f, 0xd4, 0xa4, 0xb0, 0x27, 0xd1, 0xa7, 0x4c, 0xf2, 0xf7, + 0x5e, 0xa5, 0x7b, 0x71, 0xde, 0x27, 0x08, 0xf9, 0x14, 0x5a, 0xc5, 0x0e, 0xf2, 0x3c, 0xe4, 0xb8, + 0xaa, 0x66, 0x8e, 0x73, 0x2f, 0xf4, 0x9a, 0x2e, 0x7f, 0xe9, 0xdd, 0xc1, 0x55, 0xdc, 0xa2, 0xc8, + 0x92, 0x69, 0x16, 0xf7, 0xe1, 0xf4, 0x98, 0xac, 0x98, 0x80, 0xf3, 0x35, 0xc6, 0xb9, 0x30, 0x92, + 0x19, 0x98, 0xb6, 0x0e, 0x5c, 0xee, 0xaf, 0xe5, 0x04, 0x9c, 0x7f, 0xc0, 0x38, 0x25, 0x86, 0xe5, + 0x4b, 0x8a, 0x19, 0x6f, 0xc2, 0xdc, 0x5d, 0xe4, 0x34, 0x6d, 0x97, 0x1d, 0x8d, 0x4c, 0x40, 0xf7, + 0x3a, 0xa3, 0xcb, 0x33, 0x20, 0x39, 0x2b, 0xc1, 0x5c, 0x57, 0x21, 0xd5, 0xd6, 0x74, 0x34, 0x01, + 0xc5, 0x97, 0x19, 0xc5, 0x0c, 0xb6, 0xc7, 0xd0, 0x12, 0x64, 0x3b, 0x36, 0x6b, 0x4b, 0xd1, 0xf0, + 0x37, 0x18, 0x3c, 0xc3, 0x31, 0x8c, 0xa2, 0x67, 0xf7, 0xfa, 0x26, 0xee, 0x59, 0xd1, 0x14, 0x7f, + 0xc8, 0x29, 0x38, 0x86, 0x51, 0x9c, 0x20, 0xac, 0x7f, 0xc4, 0x29, 0xdc, 0x50, 0x3c, 0x5f, 0x80, + 0x8c, 0x6d, 0x99, 0x87, 0xb6, 0x35, 0x89, 0x13, 0x7f, 0xcc, 0x18, 0x80, 0x41, 0x30, 0xc1, 0x35, + 0x48, 0x4f, 0xba, 0x10, 0x7f, 0xf2, 0x2e, 0xdf, 0x1e, 0x7c, 0x05, 0xb6, 0x20, 0xcf, 0x0b, 0x94, + 0x61, 0x5b, 0x13, 0x50, 0xfc, 0x29, 0xa3, 0xc8, 0x85, 0x60, 0xec, 0x31, 0x3c, 0xe4, 0x7a, 0x1d, + 0x34, 0x09, 0xc9, 0x9b, 0xfc, 0x31, 0x18, 0x84, 0x85, 0xb2, 0x89, 0x2c, 0xfd, 0x60, 0x32, 0x86, + 0xaf, 0xf2, 0x50, 0x72, 0x0c, 0xa6, 0x28, 0xc3, 0x6c, 0x57, 0x73, 0xdc, 0x03, 0xcd, 0x9c, 0x68, + 0x39, 0xfe, 0x8c, 0x71, 0x64, 0x7d, 0x10, 0x8b, 0x48, 0xdf, 0x3a, 0x09, 0xcd, 0xd7, 0x78, 0x44, + 0x42, 0x30, 0xb6, 0xf5, 0x5c, 0x8f, 0x1c, 0x40, 0x9d, 0x84, 0xed, 0xeb, 0x7c, 0xeb, 0x51, 0xec, + 0x4e, 0x98, 0xf1, 0x1a, 0xa4, 0x5d, 0xe3, 0x95, 0x89, 0x68, 0xfe, 0x9c, 0xaf, 0x34, 0x01, 0x60, + 0xf0, 0x4b, 0x70, 0x66, 0x6c, 0x9b, 0x98, 0x80, 0xec, 0x2f, 0x18, 0xd9, 0xa9, 0x31, 0xad, 0x82, + 0x95, 0x84, 0x93, 0x52, 0xfe, 0x25, 0x2f, 0x09, 0x68, 0x88, 0xab, 0x8e, 0x5f, 0x14, 0x5c, 0xad, + 0x7d, 0xb2, 0xa8, 0xfd, 0x15, 0x8f, 0x1a, 0xc5, 0x0e, 0x44, 0x6d, 0x0f, 0x4e, 0x31, 0xc6, 0x93, + 0xad, 0xeb, 0x37, 0x78, 0x61, 0xa5, 0xe8, 0xfd, 0xc1, 0xd5, 0xfd, 0x45, 0x58, 0xf4, 0xc3, 0xc9, + 0x27, 0x52, 0x57, 0xed, 0x6a, 0xbd, 0x09, 0x98, 0xbf, 0xc9, 0x98, 0x79, 0xc5, 0xf7, 0x47, 0x5a, + 0x77, 0x47, 0xeb, 0x61, 0xf2, 0x5b, 0x20, 0x73, 0xf2, 0xbe, 0xe5, 0x20, 0xdd, 0xee, 0x58, 0xc6, + 0x2b, 0xa8, 0x35, 0x01, 0xf5, 0x5f, 0x0f, 0x2d, 0xd5, 0x7e, 0x08, 0x8e, 0x99, 0xab, 0x20, 0xfa, + 0xb3, 0x8a, 0x6a, 0x74, 0x7b, 0xb6, 0xe3, 0x45, 0x30, 0xfe, 0x0d, 0x5f, 0x29, 0x1f, 0x57, 0x25, + 0xb0, 0x62, 0x05, 0x72, 0xe4, 0x72, 0xd2, 0x94, 0xfc, 0x5b, 0x46, 0x34, 0x1b, 0xa0, 0x58, 0xe1, + 0xd0, 0xed, 0x6e, 0x4f, 0x73, 0x26, 0xa9, 0x7f, 0x7f, 0xc7, 0x0b, 0x07, 0x83, 0xb0, 0xc2, 0xe1, + 0x1d, 0xf6, 0x10, 0xee, 0xf6, 0x13, 0x30, 0x7c, 0x8b, 0x17, 0x0e, 0x8e, 0x61, 0x14, 0x7c, 0x60, + 0x98, 0x80, 0xe2, 0xef, 0x39, 0x05, 0xc7, 0x60, 0x8a, 0x4f, 0x07, 0x8d, 0xd6, 0x41, 0x1d, 0xc3, + 0xf5, 0x1c, 0x3a, 0x07, 0x3f, 0x9c, 0xea, 0xdb, 0xef, 0x0e, 0x0e, 0x61, 0x4a, 0x08, 0x5a, 0xbc, + 0x09, 0xf9, 0xa1, 0x11, 0x43, 0x8a, 0xfa, 0x66, 0x41, 0xfe, 0xa5, 0xf7, 0x59, 0x31, 0x1a, 0x9c, + 0x30, 0x8a, 0xdb, 0x78, 0xdd, 0x07, 0xe7, 0x80, 0x68, 0xb2, 0x57, 0xdf, 0xf7, 0x97, 0x7e, 0x60, + 0x0c, 0x28, 0x5e, 0x87, 0xd9, 0x81, 0x19, 0x20, 0x9a, 0xea, 0x97, 0x19, 0x55, 0x36, 0x3c, 0x02, + 0x14, 0xd7, 0x21, 0x81, 0xfb, 0x79, 0x34, 0xfc, 0x57, 0x18, 0x9c, 0x98, 0x17, 0x3f, 0x09, 0x29, + 0xde, 0xc7, 0xa3, 0xa1, 0xbf, 0xca, 0xa0, 0x3e, 0x04, 0xc3, 0x79, 0x0f, 0x8f, 0x86, 0xff, 0x1a, + 0x87, 0x73, 0x08, 0x86, 0x4f, 0x1e, 0xc2, 0x7f, 0xfc, 0xf5, 0x04, 0xab, 0xc3, 0x3c, 0x76, 0xd7, + 0x60, 0x86, 0x35, 0xef, 0x68, 0xf4, 0xe7, 0xd9, 0xcd, 0x39, 0xa2, 0x78, 0x19, 0x92, 0x13, 0x06, + 0xfc, 0x37, 0x18, 0x94, 0xda, 0x17, 0xcb, 0x90, 0x09, 0x35, 0xec, 0x68, 0xf8, 0x6f, 0x32, 0x78, + 0x18, 0x85, 0x5d, 0x67, 0x0d, 0x3b, 0x9a, 0xe0, 0xb7, 0xb8, 0xeb, 0x0c, 0x81, 0xc3, 0xc6, 0x7b, + 0x75, 0x34, 0xfa, 0xb7, 0x79, 0xd4, 0x39, 0xa4, 0xf8, 0x02, 0xa4, 0xfd, 0xfa, 0x1b, 0x8d, 0xff, + 0x1d, 0x86, 0x0f, 0x30, 0x38, 0x02, 0xa1, 0xfa, 0x1f, 0x4d, 0xf1, 0xbb, 0x3c, 0x02, 0x21, 0x14, + 0xde, 0x46, 0xc3, 0x3d, 0x3d, 0x9a, 0xe9, 0x0b, 0x7c, 0x1b, 0x0d, 0xb5, 0x74, 0xbc, 0x9a, 0xa4, + 0x0c, 0x46, 0x53, 0xfc, 0x1e, 0x5f, 0x4d, 0x62, 0x8f, 0xdd, 0x18, 0x6e, 0x92, 0xd1, 0x1c, 0xbf, + 0xcf, 0xdd, 0x18, 0xea, 0x91, 0xc5, 0x3a, 0x48, 0xa3, 0x0d, 0x32, 0x9a, 0xef, 0x8b, 0x8c, 0x6f, + 0x6e, 0xa4, 0x3f, 0x16, 0x5f, 0x84, 0x53, 0xe3, 0x9b, 0x63, 0x34, 0xeb, 0x97, 0xde, 0x1f, 0x7a, + 0x9d, 0x09, 0xf7, 0xc6, 0xe2, 0x5e, 0x50, 0x65, 0xc3, 0x8d, 0x31, 0x9a, 0xf6, 0xb5, 0xf7, 0x07, + 0x0b, 0x6d, 0xb8, 0x2f, 0x16, 0x4b, 0x00, 0x41, 0x4f, 0x8a, 0xe6, 0x7a, 0x9d, 0x71, 0x85, 0x40, + 0x78, 0x6b, 0xb0, 0x96, 0x14, 0x8d, 0xff, 0x32, 0xdf, 0x1a, 0x0c, 0x81, 0xb7, 0x06, 0xef, 0x46, + 0xd1, 0xe8, 0x37, 0xf8, 0xd6, 0xe0, 0x90, 0xe2, 0x35, 0x48, 0x59, 0x7d, 0xd3, 0xc4, 0xb9, 0x25, + 0x3d, 0xfc, 0x33, 0x22, 0xf9, 0xdf, 0x3f, 0x60, 0x60, 0x0e, 0x28, 0xae, 0x43, 0x12, 0x75, 0x9b, + 0xa8, 0x15, 0x85, 0xfc, 0x8f, 0x0f, 0x78, 0x3d, 0xc1, 0xd6, 0xc5, 0x17, 0x00, 0xe8, 0xcb, 0x34, + 0xf9, 0x95, 0x28, 0x02, 0xfb, 0x9f, 0x1f, 0xb0, 0x2f, 0x14, 0x02, 0x48, 0x40, 0x40, 0xbf, 0x77, + 0x78, 0x38, 0xc1, 0xbb, 0x83, 0x04, 0xe4, 0x05, 0xfc, 0x2a, 0xcc, 0xdc, 0x76, 0x6d, 0xcb, 0xd3, + 0x3a, 0x51, 0xe8, 0xff, 0x62, 0x68, 0x6e, 0x8f, 0x03, 0xd6, 0xb5, 0x1d, 0xe4, 0x69, 0x1d, 0x37, + 0x0a, 0xfb, 0xdf, 0x0c, 0xeb, 0x03, 0x30, 0x58, 0xd7, 0x5c, 0x6f, 0x92, 0xe7, 0xfe, 0x1f, 0x0e, + 0xe6, 0x00, 0xec, 0x34, 0xfe, 0xff, 0x0e, 0x3a, 0x8c, 0xc2, 0xbe, 0xc7, 0x9d, 0x66, 0xf6, 0xc5, + 0x4f, 0x42, 0x1a, 0xff, 0x4b, 0xbf, 0xda, 0x89, 0x00, 0xff, 0x2f, 0x03, 0x07, 0x08, 0x7c, 0x67, + 0xd7, 0x6b, 0x79, 0x46, 0x74, 0xb0, 0xff, 0x8f, 0xad, 0x34, 0xb7, 0x2f, 0x96, 0x20, 0xe3, 0x7a, + 0xad, 0x56, 0x9f, 0x4d, 0x34, 0x11, 0xf0, 0x1f, 0x7d, 0xe0, 0xbf, 0xe4, 0xfa, 0x98, 0x8d, 0xf3, + 0xe3, 0x0f, 0xeb, 0x60, 0xcb, 0xde, 0xb2, 0xe9, 0x31, 0x1d, 0x7c, 0x21, 0x09, 0x8f, 0xe8, 0x76, + 0xb7, 0x69, 0xbb, 0xab, 0x4d, 0xdb, 0x3b, 0x58, 0xb5, 0x2d, 0x66, 0x28, 0xc5, 0x6d, 0x0b, 0x2d, + 0x9e, 0xec, 0x44, 0x6e, 0xe9, 0x0c, 0x24, 0x1b, 0xfd, 0x66, 0xf3, 0x50, 0x12, 0x21, 0xee, 0xf6, + 0x9b, 0xec, 0x93, 0x12, 0xfc, 0xef, 0xd2, 0xf7, 0xe3, 0x90, 0x69, 0x68, 0xdd, 0x9e, 0x89, 0x6a, + 0x16, 0xaa, 0xb5, 0x25, 0x19, 0xa6, 0xc9, 0x03, 0x3c, 0x4f, 0x8c, 0x84, 0x1b, 0x53, 0x0a, 0xbb, + 0xf6, 0x35, 0x6b, 0xe4, 0x98, 0x32, 0xe6, 0x6b, 0xd6, 0x7c, 0xcd, 0x05, 0x7a, 0x4a, 0xe9, 0x6b, + 0x2e, 0xf8, 0x9a, 0x8b, 0xe4, 0xac, 0x32, 0xee, 0x6b, 0x2e, 0xfa, 0x9a, 0x75, 0x72, 0x16, 0x3f, + 0xeb, 0x6b, 0xd6, 0x7d, 0xcd, 0x25, 0x72, 0xfa, 0x9e, 0xf0, 0x35, 0x97, 0x7c, 0xcd, 0x65, 0x72, + 0xe8, 0x3e, 0xe7, 0x6b, 0x2e, 0xfb, 0x9a, 0x2b, 0xe4, 0xa0, 0x5d, 0xf2, 0x35, 0x57, 0x7c, 0xcd, + 0x55, 0xf2, 0xe5, 0xc8, 0x8c, 0xaf, 0xb9, 0x2a, 0x2d, 0xc2, 0x0c, 0x7d, 0xb2, 0xe7, 0xc8, 0xaf, + 0xb1, 0xf9, 0x1b, 0x53, 0x0a, 0x17, 0x04, 0xba, 0xe7, 0xc9, 0xd7, 0x21, 0xd3, 0x81, 0xee, 0xf9, + 0x40, 0xb7, 0x46, 0xbe, 0x91, 0x16, 0x03, 0xdd, 0x5a, 0xa0, 0xbb, 0x20, 0xcf, 0xe2, 0x75, 0x0f, + 0x74, 0x17, 0x02, 0xdd, 0x45, 0x39, 0x87, 0xe3, 0x1f, 0xe8, 0x2e, 0x06, 0xba, 0x75, 0x39, 0x7f, + 0x4e, 0x58, 0xce, 0x06, 0xba, 0x75, 0xe9, 0x59, 0xc8, 0xb8, 0xfd, 0xa6, 0xca, 0x3e, 0x1e, 0x20, + 0x5f, 0xa1, 0x64, 0xd6, 0x60, 0x05, 0x67, 0x04, 0x59, 0xd4, 0x1b, 0x53, 0x0a, 0xb8, 0xfd, 0x26, + 0x2b, 0x8c, 0x1b, 0x59, 0x20, 0xe7, 0x08, 0x2a, 0xf9, 0xf6, 0x72, 0x63, 0xf3, 0xad, 0x07, 0x85, + 0xa9, 0xef, 0x3e, 0x28, 0x4c, 0xfd, 0xeb, 0x83, 0xc2, 0xd4, 0xdb, 0x0f, 0x0a, 0xc2, 0x7b, 0x0f, + 0x0a, 0xc2, 0x8f, 0x1f, 0x14, 0x84, 0xfb, 0x47, 0x05, 0xe1, 0xab, 0x47, 0x05, 0xe1, 0x1b, 0x47, + 0x05, 0xe1, 0xdb, 0x47, 0x05, 0xe1, 0xad, 0xa3, 0x82, 0xf0, 0xdd, 0xa3, 0x82, 0xf0, 0xf6, 0x51, + 0x41, 0xf8, 0xe1, 0x51, 0x61, 0xea, 0xbd, 0xa3, 0x82, 0xf0, 0xe3, 0xa3, 0xc2, 0xd4, 0xfd, 0x1f, + 0x14, 0xa6, 0x9a, 0xd3, 0x24, 0x8d, 0x2e, 0xfc, 0x24, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xd1, 0x4a, + 0x50, 0xf2, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/marshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/marshaler/one.pb.go index 700007ed0..7d9877f31 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/marshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/marshaler/one.pb.go @@ -549,242 +549,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3748 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0xa6, 0x99, 0x33, 0xa3, 0x11, 0xf5, 0x4b, 0x5e, 0x73, 0xe5, 0x78, 0x56, 0xab, - 0xd8, 0xb1, 0x6c, 0xd7, 0x5a, 0x5b, 0x97, 0xbd, 0xcc, 0x36, 0x31, 0x46, 0xd2, 0x58, 0xab, 0x85, - 0x6e, 0xe1, 0x48, 0x89, 0x9d, 0x3c, 0x10, 0x1c, 0xce, 0x3f, 0x23, 0xee, 0x72, 0xc8, 0x29, 0xc9, - 0x59, 0x5b, 0x7e, 0xda, 0xc0, 0xbd, 0x20, 0x08, 0x7a, 0x2f, 0x50, 0xc7, 0x71, 0xdc, 0x34, 0x40, - 0xeb, 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x41, 0x9f, 0xfa, 0x92, 0xd6, 0x4f, 0x45, 0xf2, 0xd6, 0x87, - 0x3c, 0x64, 0x55, 0x03, 0x4d, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x0d, 0xb0, 0x2f, 0xc5, 0x7f, 0x23, - 0x39, 0x17, 0x2d, 0x47, 0x01, 0x12, 0xf7, 0x49, 0xe2, 0x39, 0xe7, 0xfb, 0x78, 0x78, 0xfe, 0xf3, - 0x9f, 0x73, 0xf8, 0x0f, 0xe1, 0x73, 0x2b, 0x30, 0xd7, 0x72, 0x9c, 0x96, 0x85, 0x2f, 0x75, 0x5c, - 0xc7, 0x77, 0xea, 0xdd, 0xe6, 0xa5, 0x06, 0xf6, 0x0c, 0xd7, 0xec, 0xf8, 0x8e, 0xbb, 0x48, 0x65, - 0x68, 0x92, 0x59, 0x2c, 0x0a, 0x8b, 0xf9, 0x1d, 0x98, 0x7a, 0xc1, 0xb4, 0xf0, 0x46, 0x60, 0x58, - 0xc3, 0x3e, 0xba, 0x0a, 0xa9, 0xa6, 0x69, 0x61, 0x45, 0x9a, 0x4b, 0x2e, 0xe4, 0x97, 0x1e, 0x5b, - 0xec, 0x03, 0x2d, 0xf6, 0x22, 0xf6, 0x89, 0x58, 0xa5, 0x88, 0xf9, 0x77, 0x53, 0x30, 0x3d, 0x44, - 0x8b, 0x10, 0xa4, 0x6c, 0xbd, 0x4d, 0x18, 0xa5, 0x85, 0x9c, 0x4a, 0xff, 0x47, 0x0a, 0x8c, 0x77, - 0x74, 0xe3, 0xb6, 0xde, 0xc2, 0x4a, 0x82, 0x8a, 0xc5, 0x25, 0x2a, 0x01, 0x34, 0x70, 0x07, 0xdb, - 0x0d, 0x6c, 0x1b, 0xc7, 0x4a, 0x72, 0x2e, 0xb9, 0x90, 0x53, 0x23, 0x12, 0xf4, 0x34, 0x4c, 0x75, - 0xba, 0x75, 0xcb, 0x34, 0xb4, 0x88, 0x19, 0xcc, 0x25, 0x17, 0xd2, 0xaa, 0xcc, 0x14, 0x1b, 0xa1, - 0xf1, 0x13, 0x30, 0xf9, 0x32, 0xd6, 0x6f, 0x47, 0x4d, 0xf3, 0xd4, 0xb4, 0x48, 0xc4, 0x11, 0xc3, - 0x75, 0x28, 0xb4, 0xb1, 0xe7, 0xe9, 0x2d, 0xac, 0xf9, 0xc7, 0x1d, 0xac, 0xa4, 0xe8, 0xd3, 0xcf, - 0x0d, 0x3c, 0x7d, 0xff, 0x93, 0xe7, 0x39, 0xea, 0xe0, 0xb8, 0x83, 0x51, 0x05, 0x72, 0xd8, 0xee, - 0xb6, 0x19, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x6e, 0xbb, 0x9f, 0x25, 0x4b, 0x60, 0x9c, 0x62, - 0xdc, 0xc3, 0xee, 0x1d, 0xd3, 0xc0, 0x4a, 0x86, 0x12, 0x3c, 0x31, 0x40, 0x50, 0x63, 0xfa, 0x7e, - 0x0e, 0x81, 0x43, 0xeb, 0x90, 0xc3, 0xaf, 0xf8, 0xd8, 0xf6, 0x4c, 0xc7, 0x56, 0xc6, 0x29, 0xc9, - 0xe3, 0x43, 0x56, 0x11, 0x5b, 0x8d, 0x7e, 0x8a, 0x10, 0x87, 0x2e, 0xc3, 0xb8, 0xd3, 0xf1, 0x4d, - 0xc7, 0xf6, 0x94, 0xec, 0x9c, 0xb4, 0x90, 0x5f, 0xfa, 0xc8, 0xd0, 0x44, 0xd8, 0x63, 0x36, 0xaa, - 0x30, 0x46, 0x5b, 0x20, 0x7b, 0x4e, 0xd7, 0x35, 0xb0, 0x66, 0x38, 0x0d, 0xac, 0x99, 0x76, 0xd3, - 0x51, 0x72, 0x94, 0xe0, 0xc2, 0xe0, 0x83, 0x50, 0xc3, 0x75, 0xa7, 0x81, 0xb7, 0xec, 0xa6, 0xa3, - 0x16, 0xbd, 0x9e, 0x6b, 0x74, 0x0e, 0x32, 0xde, 0xb1, 0xed, 0xeb, 0xaf, 0x28, 0x05, 0x9a, 0x21, - 0xfc, 0x6a, 0xfe, 0x7f, 0xd3, 0x30, 0x39, 0x4a, 0x8a, 0x5d, 0x87, 0x74, 0x93, 0x3c, 0xa5, 0x92, - 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x37, 0x88, 0x99, 0x9f, 0x30, 0x88, 0x15, 0xc8, 0xdb, 0xd8, 0xf3, - 0x71, 0x83, 0x65, 0x44, 0x72, 0xc4, 0x9c, 0x02, 0x06, 0x1a, 0x4c, 0xa9, 0xd4, 0x4f, 0x94, 0x52, - 0x2f, 0xc2, 0x64, 0xe0, 0x92, 0xe6, 0xea, 0x76, 0x4b, 0xe4, 0xe6, 0xa5, 0x38, 0x4f, 0x16, 0xab, - 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc4, 0x3d, 0xd7, 0x68, 0x03, 0xc0, 0xb1, 0xb1, 0xd3, 0xd4, 0x1a, - 0xd8, 0xb0, 0x94, 0xec, 0x29, 0x51, 0xda, 0x23, 0x26, 0x03, 0x51, 0x72, 0x98, 0xd4, 0xb0, 0xd0, - 0xb5, 0x30, 0xd5, 0xc6, 0x4f, 0xc9, 0x94, 0x1d, 0xb6, 0xc9, 0x06, 0xb2, 0xed, 0x10, 0x8a, 0x2e, - 0x26, 0x79, 0x8f, 0x1b, 0xfc, 0xc9, 0x72, 0xd4, 0x89, 0xc5, 0xd8, 0x27, 0x53, 0x39, 0x8c, 0x3d, - 0xd8, 0x84, 0x1b, 0xbd, 0x44, 0x1f, 0x85, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0x0a, 0x42, - 0xb8, 0xab, 0xb7, 0xf1, 0xec, 0x55, 0x28, 0xf6, 0x86, 0x07, 0xcd, 0x40, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x06, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x7b, 0x05, 0x26, 0x7a, 0x6e, 0x3f, 0x2a, 0x70, 0xfe, 0xf5, 0x0c, 0xcc, 0x0c, 0xcb, 0xb9, - 0xa1, 0xe9, 0x7f, 0x0e, 0x32, 0x76, 0xb7, 0x5d, 0xc7, 0xae, 0x92, 0xa4, 0x0c, 0xfc, 0x0a, 0x55, - 0x20, 0x6d, 0xe9, 0x75, 0x6c, 0x29, 0xa9, 0x39, 0x69, 0xa1, 0xb8, 0xf4, 0xf4, 0x48, 0x59, 0xbd, - 0xb8, 0x4d, 0x20, 0x2a, 0x43, 0xa2, 0x4f, 0x40, 0x8a, 0x97, 0x38, 0xc2, 0xf0, 0xd4, 0x68, 0x0c, - 0x24, 0x17, 0x55, 0x8a, 0x43, 0x8f, 0x40, 0x8e, 0xfc, 0x65, 0xb1, 0xcd, 0x50, 0x9f, 0xb3, 0x44, - 0x40, 0xe2, 0x8a, 0x66, 0x21, 0x4b, 0xd3, 0xac, 0x81, 0x45, 0x6b, 0x08, 0xae, 0xc9, 0xc2, 0x34, - 0x70, 0x53, 0xef, 0x5a, 0xbe, 0x76, 0x47, 0xb7, 0xba, 0x98, 0x26, 0x4c, 0x4e, 0x2d, 0x70, 0xe1, - 0xa7, 0x88, 0x0c, 0x5d, 0x80, 0x3c, 0xcb, 0x4a, 0xd3, 0x6e, 0xe0, 0x57, 0x68, 0xf5, 0x49, 0xab, - 0x2c, 0x51, 0xb7, 0x88, 0x84, 0xdc, 0xfe, 0x96, 0xe7, 0xd8, 0x62, 0x69, 0xe9, 0x2d, 0x88, 0x80, - 0xde, 0xfe, 0x4a, 0x7f, 0xe1, 0x7b, 0x74, 0xf8, 0xe3, 0xf5, 0xe7, 0xe2, 0xfc, 0xb7, 0x12, 0x90, - 0xa2, 0xfb, 0x6d, 0x12, 0xf2, 0x07, 0x2f, 0xed, 0x57, 0xb5, 0x8d, 0xbd, 0xc3, 0xb5, 0xed, 0xaa, - 0x2c, 0xa1, 0x22, 0x00, 0x15, 0xbc, 0xb0, 0xbd, 0x57, 0x39, 0x90, 0x13, 0xc1, 0xf5, 0xd6, 0xee, - 0xc1, 0xe5, 0x15, 0x39, 0x19, 0x00, 0x0e, 0x99, 0x20, 0x15, 0x35, 0x58, 0x5e, 0x92, 0xd3, 0x48, - 0x86, 0x02, 0x23, 0xd8, 0x7a, 0xb1, 0xba, 0x71, 0x79, 0x45, 0xce, 0xf4, 0x4a, 0x96, 0x97, 0xe4, - 0x71, 0x34, 0x01, 0x39, 0x2a, 0x59, 0xdb, 0xdb, 0xdb, 0x96, 0xb3, 0x01, 0x67, 0xed, 0x40, 0xdd, - 0xda, 0xdd, 0x94, 0x73, 0x01, 0xe7, 0xa6, 0xba, 0x77, 0xb8, 0x2f, 0x43, 0xc0, 0xb0, 0x53, 0xad, - 0xd5, 0x2a, 0x9b, 0x55, 0x39, 0x1f, 0x58, 0xac, 0xbd, 0x74, 0x50, 0xad, 0xc9, 0x85, 0x1e, 0xb7, - 0x96, 0x97, 0xe4, 0x89, 0xe0, 0x16, 0xd5, 0xdd, 0xc3, 0x1d, 0xb9, 0x88, 0xa6, 0x60, 0x82, 0xdd, - 0x42, 0x38, 0x31, 0xd9, 0x27, 0xba, 0xbc, 0x22, 0xcb, 0xa1, 0x23, 0x8c, 0x65, 0xaa, 0x47, 0x70, - 0x79, 0x45, 0x46, 0xf3, 0xeb, 0x90, 0xa6, 0xd9, 0x85, 0x10, 0x14, 0xb7, 0x2b, 0x6b, 0xd5, 0x6d, - 0x6d, 0x6f, 0xff, 0x60, 0x6b, 0x6f, 0xb7, 0xb2, 0x2d, 0x4b, 0xa1, 0x4c, 0xad, 0x7e, 0xf2, 0x70, - 0x4b, 0xad, 0x6e, 0xc8, 0x89, 0xa8, 0x6c, 0xbf, 0x5a, 0x39, 0xa8, 0x6e, 0xc8, 0xc9, 0x79, 0x03, - 0x66, 0x86, 0xd5, 0x99, 0xa1, 0x3b, 0x23, 0xb2, 0xc4, 0x89, 0x53, 0x96, 0x98, 0x72, 0x0d, 0x2c, - 0xf1, 0x57, 0x25, 0x98, 0x1e, 0x52, 0x6b, 0x87, 0xde, 0xe4, 0x79, 0x48, 0xb3, 0x14, 0x65, 0xdd, - 0xe7, 0xc9, 0xa1, 0x45, 0x9b, 0x26, 0xec, 0x40, 0x07, 0xa2, 0xb8, 0x68, 0x07, 0x4e, 0x9e, 0xd2, - 0x81, 0x09, 0xc5, 0x80, 0x93, 0xaf, 0x49, 0xa0, 0x9c, 0xc6, 0x1d, 0x53, 0x28, 0x12, 0x3d, 0x85, - 0xe2, 0x7a, 0xbf, 0x03, 0x17, 0x4f, 0x7f, 0x86, 0x01, 0x2f, 0xde, 0x96, 0xe0, 0xdc, 0xf0, 0x41, - 0x65, 0xa8, 0x0f, 0x9f, 0x80, 0x4c, 0x1b, 0xfb, 0x47, 0x8e, 0x68, 0xd6, 0x1f, 0x1b, 0xd2, 0x02, - 0x88, 0xba, 0x3f, 0x56, 0x1c, 0x15, 0xed, 0x21, 0xc9, 0xd3, 0xa6, 0x0d, 0xe6, 0xcd, 0x80, 0xa7, - 0x9f, 0x4f, 0xc0, 0x43, 0x43, 0xc9, 0x87, 0x3a, 0xfa, 0x28, 0x80, 0x69, 0x77, 0xba, 0x3e, 0x6b, - 0xc8, 0xac, 0x3e, 0xe5, 0xa8, 0x84, 0xee, 0x7d, 0x52, 0x7b, 0xba, 0x7e, 0xa0, 0x4f, 0x52, 0x3d, - 0x30, 0x11, 0x35, 0xb8, 0x1a, 0x3a, 0x9a, 0xa2, 0x8e, 0x96, 0x4e, 0x79, 0xd2, 0x81, 0x5e, 0xf7, - 0x2c, 0xc8, 0x86, 0x65, 0x62, 0xdb, 0xd7, 0x3c, 0xdf, 0xc5, 0x7a, 0xdb, 0xb4, 0x5b, 0xb4, 0x00, - 0x67, 0xcb, 0xe9, 0xa6, 0x6e, 0x79, 0x58, 0x9d, 0x64, 0xea, 0x9a, 0xd0, 0x12, 0x04, 0xed, 0x32, - 0x6e, 0x04, 0x91, 0xe9, 0x41, 0x30, 0x75, 0x80, 0x98, 0xff, 0xc2, 0x38, 0xe4, 0x23, 0x63, 0x1d, - 0xba, 0x08, 0x85, 0x5b, 0xfa, 0x1d, 0x5d, 0x13, 0xa3, 0x3a, 0x8b, 0x44, 0x9e, 0xc8, 0xf6, 0xf9, - 0xb8, 0xfe, 0x2c, 0xcc, 0x50, 0x13, 0xa7, 0xeb, 0x63, 0x57, 0x33, 0x2c, 0xdd, 0xf3, 0x68, 0xd0, - 0xb2, 0xd4, 0x14, 0x11, 0xdd, 0x1e, 0x51, 0xad, 0x0b, 0x0d, 0x5a, 0x85, 0x69, 0x8a, 0x68, 0x77, - 0x2d, 0xdf, 0xec, 0x58, 0x58, 0x23, 0x2f, 0x0f, 0x1e, 0x2d, 0xc4, 0x81, 0x67, 0x53, 0xc4, 0x62, - 0x87, 0x1b, 0x10, 0x8f, 0x3c, 0xb4, 0x09, 0x8f, 0x52, 0x58, 0x0b, 0xdb, 0xd8, 0xd5, 0x7d, 0xac, - 0xe1, 0x5f, 0xe8, 0xea, 0x96, 0xa7, 0xe9, 0x76, 0x43, 0x3b, 0xd2, 0xbd, 0x23, 0x65, 0x26, 0x4a, - 0x70, 0x9e, 0xd8, 0x6e, 0x72, 0xd3, 0x2a, 0xb5, 0xac, 0xd8, 0x8d, 0x1b, 0xba, 0x77, 0x84, 0xca, - 0x70, 0x8e, 0x12, 0x79, 0xbe, 0x6b, 0xda, 0x2d, 0xcd, 0x38, 0xc2, 0xc6, 0x6d, 0xad, 0xeb, 0x37, - 0xaf, 0x2a, 0x8f, 0x44, 0x19, 0xa8, 0x93, 0x35, 0x6a, 0xb3, 0x4e, 0x4c, 0x0e, 0xfd, 0xe6, 0x55, - 0x54, 0x83, 0x02, 0x59, 0x8f, 0xb6, 0xf9, 0x2a, 0xd6, 0x9a, 0x8e, 0x4b, 0x9b, 0x4b, 0x71, 0xc8, - 0xe6, 0x8e, 0x04, 0x71, 0x71, 0x8f, 0x03, 0x76, 0x9c, 0x06, 0x2e, 0xa7, 0x6b, 0xfb, 0xd5, 0xea, - 0x86, 0x9a, 0x17, 0x2c, 0x2f, 0x38, 0x2e, 0xc9, 0xa9, 0x96, 0x13, 0xc4, 0x38, 0xcf, 0x72, 0xaa, - 0xe5, 0x88, 0x08, 0xaf, 0xc2, 0xb4, 0x61, 0xb0, 0xc7, 0x36, 0x0d, 0x8d, 0x4f, 0xf9, 0x9e, 0x22, - 0xf7, 0xc4, 0xcb, 0x30, 0x36, 0x99, 0x01, 0x4f, 0x73, 0x0f, 0x5d, 0x83, 0x87, 0xc2, 0x78, 0x45, - 0x81, 0x53, 0x03, 0x4f, 0xd9, 0x0f, 0x5d, 0x85, 0xe9, 0xce, 0xf1, 0x20, 0x10, 0xf5, 0xdc, 0xb1, - 0x73, 0xdc, 0x0f, 0x7b, 0x9c, 0xbe, 0xb9, 0xb9, 0xd8, 0xd0, 0x7d, 0xdc, 0x50, 0x1e, 0x8e, 0x5a, - 0x47, 0x14, 0xe8, 0x12, 0xc8, 0x86, 0xa1, 0x61, 0x5b, 0xaf, 0x5b, 0x58, 0xd3, 0x5d, 0x6c, 0xeb, - 0x9e, 0x72, 0x21, 0x6a, 0x5c, 0x34, 0x8c, 0x2a, 0xd5, 0x56, 0xa8, 0x12, 0x3d, 0x05, 0x53, 0x4e, - 0xfd, 0x96, 0xc1, 0x92, 0x4b, 0xeb, 0xb8, 0xb8, 0x69, 0xbe, 0xa2, 0x3c, 0x46, 0xc3, 0x34, 0x49, - 0x14, 0x34, 0xb5, 0xf6, 0xa9, 0x18, 0x3d, 0x09, 0xb2, 0xe1, 0x1d, 0xe9, 0x6e, 0x87, 0x76, 0x77, - 0xaf, 0xa3, 0x1b, 0x58, 0x79, 0x9c, 0x99, 0x32, 0xf9, 0xae, 0x10, 0xa3, 0x17, 0x61, 0xa6, 0x6b, - 0x9b, 0xb6, 0x8f, 0xdd, 0x8e, 0x8b, 0xc9, 0x90, 0xce, 0x76, 0x9a, 0xf2, 0x2f, 0xe3, 0xa7, 0x8c, - 0xd9, 0x87, 0x51, 0x6b, 0xb6, 0xba, 0xea, 0x74, 0x77, 0x50, 0x38, 0x5f, 0x86, 0x42, 0x74, 0xd1, - 0x51, 0x0e, 0xd8, 0xb2, 0xcb, 0x12, 0xe9, 0xa1, 0xeb, 0x7b, 0x1b, 0xa4, 0xfb, 0x7d, 0xa6, 0x2a, - 0x27, 0x48, 0x17, 0xde, 0xde, 0x3a, 0xa8, 0x6a, 0xea, 0xe1, 0xee, 0xc1, 0xd6, 0x4e, 0x55, 0x4e, - 0x3e, 0x95, 0xcb, 0xfe, 0x70, 0x5c, 0xbe, 0x7b, 0xf7, 0xee, 0xdd, 0xc4, 0xfc, 0x77, 0x12, 0x50, - 0xec, 0x9d, 0x7c, 0xd1, 0xcf, 0xc3, 0xc3, 0xe2, 0x35, 0xd5, 0xc3, 0xbe, 0xf6, 0xb2, 0xe9, 0xd2, - 0x3c, 0x6c, 0xeb, 0x6c, 0x76, 0x0c, 0x42, 0x38, 0xc3, 0xad, 0x6a, 0xd8, 0xff, 0xb4, 0xe9, 0x92, - 0x2c, 0x6b, 0xeb, 0x3e, 0xda, 0x86, 0x0b, 0xb6, 0xa3, 0x79, 0xbe, 0x6e, 0x37, 0x74, 0xb7, 0xa1, - 0x85, 0x07, 0x04, 0x9a, 0x6e, 0x18, 0xd8, 0xf3, 0x1c, 0xd6, 0x02, 0x02, 0x96, 0x8f, 0xd8, 0x4e, - 0x8d, 0x1b, 0x87, 0xb5, 0xb1, 0xc2, 0x4d, 0xfb, 0x96, 0x3b, 0x79, 0xda, 0x72, 0x3f, 0x02, 0xb9, - 0xb6, 0xde, 0xd1, 0xb0, 0xed, 0xbb, 0xc7, 0x74, 0x5e, 0xcb, 0xaa, 0xd9, 0xb6, 0xde, 0xa9, 0x92, - 0xeb, 0x9f, 0xde, 0x1a, 0x44, 0xe3, 0xf8, 0xfd, 0x24, 0x14, 0xa2, 0x33, 0x1b, 0x19, 0x81, 0x0d, - 0x5a, 0x9f, 0x25, 0xba, 0x7d, 0x3f, 0xfa, 0xc0, 0x09, 0x6f, 0x71, 0x9d, 0x14, 0xee, 0x72, 0x86, - 0x4d, 0x52, 0x2a, 0x43, 0x92, 0xa6, 0x49, 0x36, 0x2c, 0x66, 0xf3, 0x79, 0x56, 0xe5, 0x57, 0x68, - 0x13, 0x32, 0xb7, 0x3c, 0xca, 0x9d, 0xa1, 0xdc, 0x8f, 0x3d, 0x98, 0xfb, 0x66, 0x8d, 0x92, 0xe7, - 0x6e, 0xd6, 0xb4, 0xdd, 0x3d, 0x75, 0xa7, 0xb2, 0xad, 0x72, 0x38, 0x3a, 0x0f, 0x29, 0x4b, 0x7f, - 0xf5, 0xb8, 0xb7, 0xc4, 0x53, 0xd1, 0xa8, 0x81, 0x3f, 0x0f, 0xa9, 0x97, 0xb1, 0x7e, 0xbb, 0xb7, - 0xb0, 0x52, 0xd1, 0x4f, 0x31, 0xf5, 0x2f, 0x41, 0x9a, 0xc6, 0x0b, 0x01, 0xf0, 0x88, 0xc9, 0x63, - 0x28, 0x0b, 0xa9, 0xf5, 0x3d, 0x95, 0xa4, 0xbf, 0x0c, 0x05, 0x26, 0xd5, 0xf6, 0xb7, 0xaa, 0xeb, - 0x55, 0x39, 0x31, 0xbf, 0x0a, 0x19, 0x16, 0x04, 0xb2, 0x35, 0x82, 0x30, 0xc8, 0x63, 0xfc, 0x92, - 0x73, 0x48, 0x42, 0x7b, 0xb8, 0xb3, 0x56, 0x55, 0xe5, 0x44, 0x74, 0x79, 0x3d, 0x28, 0x44, 0xc7, - 0xb5, 0x9f, 0x4d, 0x4e, 0xfd, 0xad, 0x04, 0xf9, 0xc8, 0xf8, 0x45, 0x1a, 0xbf, 0x6e, 0x59, 0xce, - 0xcb, 0x9a, 0x6e, 0x99, 0xba, 0xc7, 0x93, 0x02, 0xa8, 0xa8, 0x42, 0x24, 0xa3, 0x2e, 0xda, 0xcf, - 0xc4, 0xf9, 0xb7, 0x24, 0x90, 0xfb, 0x47, 0xb7, 0x3e, 0x07, 0xa5, 0x0f, 0xd5, 0xc1, 0x37, 0x25, - 0x28, 0xf6, 0xce, 0x6b, 0x7d, 0xee, 0x5d, 0xfc, 0x50, 0xdd, 0xfb, 0x92, 0x04, 0x13, 0x3d, 0x53, - 0xda, 0xff, 0x2b, 0xef, 0xde, 0x48, 0xc2, 0xf4, 0x10, 0x1c, 0xaa, 0xf0, 0x71, 0x96, 0x4d, 0xd8, - 0xcf, 0x8c, 0x72, 0xaf, 0x45, 0xd2, 0x2d, 0xf7, 0x75, 0xd7, 0xe7, 0xd3, 0xef, 0x93, 0x20, 0x9b, - 0x0d, 0x6c, 0xfb, 0x66, 0xd3, 0xc4, 0x2e, 0x7f, 0x05, 0x67, 0x33, 0xee, 0x64, 0x28, 0x67, 0x6f, - 0xe1, 0x3f, 0x07, 0xa8, 0xe3, 0x78, 0xa6, 0x6f, 0xde, 0xc1, 0x9a, 0x69, 0x8b, 0xf7, 0x75, 0x32, - 0xf3, 0xa6, 0x54, 0x59, 0x68, 0xb6, 0x6c, 0x3f, 0xb0, 0xb6, 0x71, 0x4b, 0xef, 0xb3, 0x26, 0xb5, - 0x2f, 0xa9, 0xca, 0x42, 0x13, 0x58, 0x5f, 0x84, 0x42, 0xc3, 0xe9, 0x92, 0xf1, 0x81, 0xd9, 0x91, - 0x52, 0x2b, 0xa9, 0x79, 0x26, 0x0b, 0x4c, 0xf8, 0x7c, 0x17, 0x1e, 0x14, 0x14, 0xd4, 0x3c, 0x93, - 0x31, 0x93, 0x27, 0x60, 0x52, 0x6f, 0xb5, 0x5c, 0x42, 0x2e, 0x88, 0xd8, 0xd0, 0x5a, 0x0c, 0xc4, - 0xd4, 0x70, 0xf6, 0x26, 0x64, 0x45, 0x1c, 0x48, 0x37, 0x23, 0x91, 0xd0, 0x3a, 0xec, 0xb8, 0x26, - 0xb1, 0x90, 0x53, 0xb3, 0xb6, 0x50, 0x5e, 0x84, 0x82, 0xe9, 0x69, 0xe1, 0xb9, 0x61, 0x62, 0x2e, - 0xb1, 0x90, 0x55, 0xf3, 0xa6, 0x17, 0x1c, 0x14, 0xcd, 0xbf, 0x9d, 0x80, 0x62, 0xef, 0xb9, 0x27, - 0xda, 0x80, 0xac, 0xe5, 0x18, 0x3a, 0x4d, 0x04, 0x76, 0xe8, 0xbe, 0x10, 0x73, 0x54, 0xba, 0xb8, - 0xcd, 0xed, 0xd5, 0x00, 0x39, 0xfb, 0x8f, 0x12, 0x64, 0x85, 0x18, 0x9d, 0x83, 0x54, 0x47, 0xf7, - 0x8f, 0x28, 0x5d, 0x7a, 0x2d, 0x21, 0x4b, 0x2a, 0xbd, 0x26, 0x72, 0xaf, 0xa3, 0xdb, 0x34, 0x05, - 0xb8, 0x9c, 0x5c, 0x93, 0x75, 0xb5, 0xb0, 0xde, 0xa0, 0xe3, 0xb0, 0xd3, 0x6e, 0x63, 0xdb, 0xf7, - 0xc4, 0xba, 0x72, 0xf9, 0x3a, 0x17, 0xa3, 0xa7, 0x61, 0xca, 0x77, 0x75, 0xd3, 0xea, 0xb1, 0x4d, - 0x51, 0x5b, 0x59, 0x28, 0x02, 0xe3, 0x32, 0x9c, 0x17, 0xbc, 0x0d, 0xec, 0xeb, 0xc6, 0x11, 0x6e, - 0x84, 0xa0, 0x0c, 0x3d, 0x54, 0x7b, 0x98, 0x1b, 0x6c, 0x70, 0xbd, 0xc0, 0xce, 0x7f, 0x4f, 0x82, - 0x29, 0x31, 0xc0, 0x37, 0x82, 0x60, 0xed, 0x00, 0xe8, 0xb6, 0xed, 0xf8, 0xd1, 0x70, 0x0d, 0xa6, - 0xf2, 0x00, 0x6e, 0xb1, 0x12, 0x80, 0xd4, 0x08, 0xc1, 0x6c, 0x1b, 0x20, 0xd4, 0x9c, 0x1a, 0xb6, - 0x0b, 0x90, 0xe7, 0x87, 0xda, 0xf4, 0x97, 0x11, 0xf6, 0xd6, 0x07, 0x4c, 0x44, 0x26, 0x7d, 0x34, - 0x03, 0xe9, 0x3a, 0x6e, 0x99, 0x36, 0x3f, 0x6a, 0x63, 0x17, 0xe2, 0x00, 0x2f, 0x15, 0x1c, 0xe0, - 0xad, 0x7d, 0x16, 0xa6, 0x0d, 0xa7, 0xdd, 0xef, 0xee, 0x9a, 0xdc, 0xf7, 0xe6, 0xe9, 0xdd, 0x90, - 0x3e, 0x03, 0xe1, 0x74, 0xf6, 0x15, 0x49, 0xfa, 0x6a, 0x22, 0xb9, 0xb9, 0xbf, 0xf6, 0xf5, 0xc4, - 0xec, 0x26, 0x83, 0xee, 0x8b, 0x27, 0x55, 0x71, 0xd3, 0xc2, 0x06, 0xf1, 0x1e, 0x7e, 0xf4, 0x31, - 0x78, 0xa6, 0x65, 0xfa, 0x47, 0xdd, 0xfa, 0xa2, 0xe1, 0xb4, 0x2f, 0xb5, 0x9c, 0x96, 0x13, 0xfe, - 0x18, 0x44, 0xae, 0xe8, 0x05, 0xfd, 0x8f, 0xff, 0x20, 0x94, 0x0b, 0xa4, 0xb3, 0xb1, 0xbf, 0x1e, - 0x95, 0x77, 0x61, 0x9a, 0x1b, 0x6b, 0xf4, 0x44, 0x9a, 0xcd, 0xe1, 0xe8, 0x81, 0xa7, 0x12, 0xca, - 0x37, 0xdf, 0xa5, 0x9d, 0x4e, 0x9d, 0xe2, 0x50, 0xa2, 0x63, 0x93, 0x7a, 0x59, 0x85, 0x87, 0x7a, - 0xf8, 0xd8, 0xd6, 0xc4, 0x6e, 0x0c, 0xe3, 0x77, 0x38, 0xe3, 0x74, 0x84, 0xb1, 0xc6, 0xa1, 0xe5, - 0x75, 0x98, 0x38, 0x0b, 0xd7, 0xdf, 0x73, 0xae, 0x02, 0x8e, 0x92, 0x6c, 0xc2, 0x24, 0x25, 0x31, - 0xba, 0x9e, 0xef, 0xb4, 0x69, 0xdd, 0x7b, 0x30, 0xcd, 0x3f, 0xbc, 0xcb, 0xf6, 0x4a, 0x91, 0xc0, - 0xd6, 0x03, 0x54, 0xb9, 0x0c, 0xf4, 0x10, 0xbe, 0x81, 0x0d, 0x2b, 0x86, 0xe1, 0x1d, 0xee, 0x48, - 0x60, 0x5f, 0xfe, 0x14, 0xcc, 0x90, 0xff, 0x69, 0x59, 0x8a, 0x7a, 0x12, 0x7f, 0x06, 0xa3, 0x7c, - 0xef, 0x35, 0xb6, 0x1d, 0xa7, 0x03, 0x82, 0x88, 0x4f, 0x91, 0x55, 0x6c, 0x61, 0xdf, 0xc7, 0xae, - 0xa7, 0xe9, 0xd6, 0x30, 0xf7, 0x22, 0x6f, 0xb0, 0xca, 0x17, 0xdf, 0xeb, 0x5d, 0xc5, 0x4d, 0x86, - 0xac, 0x58, 0x56, 0xf9, 0x10, 0x1e, 0x1e, 0x92, 0x15, 0x23, 0x70, 0xbe, 0xc1, 0x39, 0x67, 0x06, - 0x32, 0x83, 0xd0, 0xee, 0x83, 0x90, 0x07, 0x6b, 0x39, 0x02, 0xe7, 0x97, 0x38, 0x27, 0xe2, 0x58, - 0xb1, 0xa4, 0x84, 0xf1, 0x26, 0x4c, 0xdd, 0xc1, 0x6e, 0xdd, 0xf1, 0xf8, 0xc1, 0xc1, 0x08, 0x74, - 0x6f, 0x72, 0xba, 0x49, 0x0e, 0xa4, 0xc7, 0x08, 0x84, 0xeb, 0x1a, 0x64, 0x9b, 0xba, 0x81, 0x47, - 0xa0, 0xf8, 0x32, 0xa7, 0x18, 0x27, 0xf6, 0x04, 0x5a, 0x81, 0x42, 0xcb, 0xe1, 0x9d, 0x29, 0x1e, - 0xfe, 0x16, 0x87, 0xe7, 0x05, 0x86, 0x53, 0x74, 0x9c, 0x4e, 0xd7, 0x22, 0x6d, 0x2b, 0x9e, 0xe2, - 0xf7, 0x04, 0x85, 0xc0, 0x70, 0x8a, 0x33, 0x84, 0xf5, 0x2b, 0x82, 0xc2, 0x8b, 0xc4, 0xf3, 0x79, - 0xc8, 0x3b, 0xb6, 0x75, 0xec, 0xd8, 0xa3, 0x38, 0xf1, 0xfb, 0x9c, 0x01, 0x38, 0x84, 0x10, 0x5c, - 0x87, 0xdc, 0xa8, 0x0b, 0xf1, 0x07, 0xef, 0x89, 0xed, 0x21, 0x56, 0x60, 0x13, 0x26, 0x45, 0x81, - 0x32, 0x1d, 0x7b, 0x04, 0x8a, 0x3f, 0xe4, 0x14, 0xc5, 0x08, 0x8c, 0x3f, 0x86, 0x8f, 0x3d, 0xbf, - 0x85, 0x47, 0x21, 0x79, 0x5b, 0x3c, 0x06, 0x87, 0xf0, 0x50, 0xd6, 0xb1, 0x6d, 0x1c, 0x8d, 0xc6, - 0xf0, 0x35, 0x11, 0x4a, 0x81, 0x21, 0x14, 0xeb, 0x30, 0xd1, 0xd6, 0x5d, 0xef, 0x48, 0xb7, 0x46, - 0x5a, 0x8e, 0x3f, 0xe2, 0x1c, 0x85, 0x00, 0xc4, 0x23, 0xd2, 0xb5, 0xcf, 0x42, 0xf3, 0x75, 0x11, - 0x91, 0x08, 0x8c, 0x6f, 0x3d, 0xcf, 0xa7, 0x67, 0x33, 0x67, 0x61, 0xfb, 0x63, 0xb1, 0xf5, 0x18, - 0x76, 0x27, 0xca, 0x78, 0x1d, 0x72, 0x9e, 0xf9, 0xea, 0x48, 0x34, 0x7f, 0x22, 0x56, 0x9a, 0x02, - 0x08, 0xf8, 0x25, 0x38, 0x3f, 0xb4, 0x4d, 0x8c, 0x40, 0xf6, 0xa7, 0x9c, 0xec, 0xdc, 0x90, 0x56, - 0xc1, 0x4b, 0xc2, 0x59, 0x29, 0xff, 0x4c, 0x94, 0x04, 0xdc, 0xc7, 0xb5, 0x4f, 0x26, 0x7b, 0x4f, - 0x6f, 0x9e, 0x2d, 0x6a, 0x7f, 0x2e, 0xa2, 0xc6, 0xb0, 0x3d, 0x51, 0x3b, 0x80, 0x73, 0x9c, 0xf1, - 0x6c, 0xeb, 0xfa, 0x0d, 0x51, 0x58, 0x19, 0xfa, 0xb0, 0x77, 0x75, 0x3f, 0x0b, 0xb3, 0x41, 0x38, - 0xc5, 0x50, 0xea, 0x69, 0x6d, 0xbd, 0x33, 0x02, 0xf3, 0x37, 0x39, 0xb3, 0xa8, 0xf8, 0xc1, 0x54, - 0xeb, 0xed, 0xe8, 0x1d, 0x42, 0xfe, 0x22, 0x28, 0x82, 0xbc, 0x6b, 0xbb, 0xd8, 0x70, 0x5a, 0xb6, - 0xf9, 0x2a, 0x6e, 0x8c, 0x40, 0xfd, 0x17, 0x7d, 0x4b, 0x75, 0x18, 0x81, 0x13, 0xe6, 0x2d, 0x90, - 0x83, 0x59, 0x45, 0x33, 0xdb, 0x1d, 0xc7, 0xf5, 0x63, 0x18, 0xff, 0x52, 0xac, 0x54, 0x80, 0xdb, - 0xa2, 0xb0, 0x72, 0x15, 0x8a, 0xf4, 0x72, 0xd4, 0x94, 0xfc, 0x2b, 0x4e, 0x34, 0x11, 0xa2, 0x78, - 0xe1, 0x30, 0x9c, 0x76, 0x47, 0x77, 0x47, 0xa9, 0x7f, 0x7f, 0x2d, 0x0a, 0x07, 0x87, 0xf0, 0xc2, - 0xe1, 0x1f, 0x77, 0x30, 0xe9, 0xf6, 0x23, 0x30, 0x7c, 0x4b, 0x14, 0x0e, 0x81, 0xe1, 0x14, 0x62, - 0x60, 0x18, 0x81, 0xe2, 0x6f, 0x04, 0x85, 0xc0, 0x10, 0x8a, 0x4f, 0x86, 0x8d, 0xd6, 0xc5, 0x2d, - 0xd3, 0xf3, 0x5d, 0x36, 0x0a, 0x3f, 0x98, 0xea, 0xdb, 0xef, 0xf5, 0x0e, 0x61, 0x6a, 0x04, 0x5a, - 0xbe, 0x09, 0x93, 0x7d, 0x23, 0x06, 0x8a, 0xfb, 0x45, 0x5f, 0xf9, 0xdc, 0x07, 0xbc, 0x18, 0xf5, - 0x4e, 0x18, 0xe5, 0x6d, 0xb2, 0xee, 0xbd, 0x73, 0x40, 0x3c, 0xd9, 0x6b, 0x1f, 0x04, 0x4b, 0xdf, - 0x33, 0x06, 0x94, 0x5f, 0x80, 0x89, 0x9e, 0x19, 0x20, 0x9e, 0xea, 0x17, 0x39, 0x55, 0x21, 0x3a, - 0x02, 0x94, 0x57, 0x21, 0x45, 0xfa, 0x79, 0x3c, 0xfc, 0x97, 0x38, 0x9c, 0x9a, 0x97, 0x3f, 0x0e, - 0x59, 0xd1, 0xc7, 0xe3, 0xa1, 0xbf, 0xcc, 0xa1, 0x01, 0x84, 0xc0, 0x45, 0x0f, 0x8f, 0x87, 0xff, - 0x8a, 0x80, 0x0b, 0x08, 0x81, 0x8f, 0x1e, 0xc2, 0xbf, 0xfb, 0x42, 0x8a, 0xd7, 0x61, 0x11, 0xbb, - 0xeb, 0x30, 0xce, 0x9b, 0x77, 0x3c, 0xfa, 0xf3, 0xfc, 0xe6, 0x02, 0x51, 0xbe, 0x02, 0xe9, 0x11, - 0x03, 0xfe, 0xab, 0x1c, 0xca, 0xec, 0xcb, 0xeb, 0x90, 0x8f, 0x34, 0xec, 0x78, 0xf8, 0xaf, 0x71, - 0x78, 0x14, 0x45, 0x5c, 0xe7, 0x0d, 0x3b, 0x9e, 0xe0, 0xd7, 0x85, 0xeb, 0x1c, 0x41, 0xc2, 0x26, - 0x7a, 0x75, 0x3c, 0xfa, 0x37, 0x44, 0xd4, 0x05, 0xa4, 0xfc, 0x3c, 0xe4, 0x82, 0xfa, 0x1b, 0x8f, - 0xff, 0x4d, 0x8e, 0x0f, 0x31, 0x24, 0x02, 0x91, 0xfa, 0x1f, 0x4f, 0xf1, 0x5b, 0x22, 0x02, 0x11, - 0x14, 0xd9, 0x46, 0xfd, 0x3d, 0x3d, 0x9e, 0xe9, 0xb7, 0xc5, 0x36, 0xea, 0x6b, 0xe9, 0x64, 0x35, - 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x1d, 0xb1, 0x9a, 0xd4, 0x9e, 0xb8, 0xd1, 0xdf, 0x24, 0xe3, 0x39, - 0x7e, 0x57, 0xb8, 0xd1, 0xd7, 0x23, 0xcb, 0xfb, 0x80, 0x06, 0x1b, 0x64, 0x3c, 0xdf, 0xeb, 0x9c, - 0x6f, 0x6a, 0xa0, 0x3f, 0x96, 0x3f, 0x0d, 0xe7, 0x86, 0x37, 0xc7, 0x78, 0xd6, 0x2f, 0x7e, 0xd0, - 0xf7, 0x3a, 0x13, 0xed, 0x8d, 0xe5, 0x83, 0xb0, 0xca, 0x46, 0x1b, 0x63, 0x3c, 0xed, 0x1b, 0x1f, - 0xf4, 0x16, 0xda, 0x68, 0x5f, 0x2c, 0x57, 0x00, 0xc2, 0x9e, 0x14, 0xcf, 0xf5, 0x26, 0xe7, 0x8a, - 0x80, 0xc8, 0xd6, 0xe0, 0x2d, 0x29, 0x1e, 0xff, 0x65, 0xb1, 0x35, 0x38, 0x82, 0x6c, 0x0d, 0xd1, - 0x8d, 0xe2, 0xd1, 0x6f, 0x89, 0xad, 0x21, 0x20, 0xe5, 0xeb, 0x90, 0xb5, 0xbb, 0x96, 0x45, 0x72, - 0x0b, 0x3d, 0xf8, 0x23, 0x1b, 0xe5, 0x5f, 0xef, 0x73, 0xb0, 0x00, 0x94, 0x57, 0x21, 0x8d, 0xdb, - 0x75, 0xdc, 0x88, 0x43, 0xfe, 0xdb, 0x7d, 0x51, 0x4f, 0x88, 0x75, 0xf9, 0x79, 0x00, 0xf6, 0x32, - 0x4d, 0x7f, 0x63, 0x89, 0xc1, 0xfe, 0xfb, 0x7d, 0xfe, 0xfb, 0x7d, 0x08, 0x09, 0x09, 0xd8, 0xd7, - 0x00, 0x0f, 0x26, 0x78, 0xaf, 0x97, 0x80, 0xbe, 0x80, 0x5f, 0x83, 0xf1, 0x5b, 0x9e, 0x63, 0xfb, - 0x7a, 0x2b, 0x0e, 0xfd, 0x1f, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0xda, 0x8e, 0x8b, 0x7d, 0xbd, 0xe5, - 0xc5, 0x61, 0xff, 0x93, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, 0x8f, 0xf2, 0xdc, 0xff, 0x25, - 0xc0, 0x02, 0x40, 0x9c, 0x26, 0xff, 0xdf, 0xc6, 0xc7, 0x71, 0xd8, 0xf7, 0x85, 0xd3, 0xdc, 0xbe, - 0xfc, 0x71, 0xc8, 0x91, 0x7f, 0xd9, 0x37, 0x2d, 0x31, 0xe0, 0xff, 0xe6, 0xe0, 0x10, 0x41, 0xee, - 0xec, 0xf9, 0x0d, 0xdf, 0x8c, 0x0f, 0xf6, 0xff, 0xf0, 0x95, 0x16, 0xf6, 0xe5, 0x0a, 0xe4, 0x3d, - 0xbf, 0xd1, 0xe8, 0xf2, 0x89, 0x26, 0x06, 0xfe, 0xa3, 0xfb, 0xc1, 0x4b, 0x6e, 0x80, 0x59, 0xbb, - 0x38, 0xfc, 0xbc, 0x0e, 0x36, 0x9d, 0x4d, 0x87, 0x9d, 0xd4, 0xc1, 0xeb, 0x69, 0x98, 0x35, 0x9c, - 0x76, 0xdd, 0xf1, 0x2e, 0x05, 0x85, 0xe4, 0x92, 0x63, 0x73, 0x6b, 0x94, 0x74, 0x6c, 0x3c, 0x7b, - 0xb6, 0x63, 0xb9, 0xf9, 0xf3, 0x90, 0xae, 0x75, 0xeb, 0xf5, 0x63, 0x24, 0x43, 0xd2, 0xeb, 0xd6, - 0xf9, 0x57, 0x17, 0xe4, 0xdf, 0xf9, 0xef, 0x27, 0x21, 0x5f, 0xd3, 0xdb, 0x1d, 0x0b, 0xef, 0xd9, - 0x78, 0xaf, 0x89, 0x14, 0xc8, 0xd0, 0xa7, 0x78, 0x8e, 0x1a, 0x49, 0x37, 0xc6, 0x54, 0x7e, 0x1d, - 0x68, 0x96, 0xe8, 0x71, 0x65, 0x22, 0xd0, 0x2c, 0x05, 0x9a, 0x65, 0x76, 0x5a, 0x19, 0x68, 0x96, - 0x03, 0xcd, 0x0a, 0x3d, 0xb3, 0x4c, 0x06, 0x9a, 0x95, 0x40, 0xb3, 0x4a, 0xcf, 0xe4, 0x27, 0x02, - 0xcd, 0x6a, 0xa0, 0xb9, 0x4c, 0x4f, 0xe1, 0x53, 0x81, 0xe6, 0x72, 0xa0, 0xb9, 0x42, 0x0f, 0xdf, - 0xa7, 0x02, 0xcd, 0x95, 0x40, 0x73, 0x95, 0x1e, 0xb8, 0xa3, 0x40, 0x73, 0x35, 0xd0, 0x5c, 0xa3, - 0x5f, 0x56, 0x8c, 0x07, 0x9a, 0x6b, 0x68, 0x16, 0xc6, 0xd9, 0x93, 0x3d, 0x4b, 0x7f, 0xd0, 0x9c, - 0xbc, 0x31, 0xa6, 0x0a, 0x41, 0xa8, 0x7b, 0x8e, 0x7e, 0x3d, 0x91, 0x09, 0x75, 0xcf, 0x85, 0xba, - 0x25, 0xfa, 0x19, 0xb1, 0x1c, 0xea, 0x96, 0x42, 0xdd, 0xb2, 0x32, 0x41, 0x16, 0x3f, 0xd4, 0x2d, - 0x87, 0xba, 0x15, 0xa5, 0x48, 0xe2, 0x1f, 0xea, 0x56, 0x42, 0xdd, 0xaa, 0x32, 0x39, 0x27, 0x2d, - 0x14, 0x42, 0xdd, 0x2a, 0x7a, 0x06, 0xf2, 0x5e, 0xb7, 0xae, 0xf1, 0xdf, 0xdf, 0xe9, 0x57, 0x1a, - 0xf9, 0x25, 0x58, 0x24, 0x19, 0x41, 0x17, 0xf5, 0xc6, 0x98, 0x0a, 0x5e, 0xb7, 0xce, 0xab, 0xe3, - 0x5a, 0x01, 0xe8, 0x61, 0x82, 0x46, 0x3f, 0x4f, 0x5c, 0xdb, 0x78, 0xe7, 0x5e, 0x69, 0xec, 0xbb, - 0xf7, 0x4a, 0x63, 0xff, 0x74, 0xaf, 0x34, 0xf6, 0x83, 0x7b, 0x25, 0xe9, 0xfd, 0x7b, 0x25, 0xe9, - 0xc7, 0xf7, 0x4a, 0xd2, 0xdd, 0x93, 0x92, 0xf4, 0xb5, 0x93, 0x92, 0xf4, 0x8d, 0x93, 0x92, 0xf4, - 0xed, 0x93, 0x92, 0xf4, 0xce, 0x49, 0x49, 0xfa, 0xee, 0x49, 0x69, 0xec, 0x07, 0x27, 0x25, 0xe9, - 0x87, 0x27, 0xa5, 0xb1, 0xf7, 0x4f, 0x4a, 0xd2, 0x8f, 0x4f, 0x4a, 0x63, 0x77, 0xff, 0xb9, 0x34, - 0x56, 0xcf, 0xd0, 0x34, 0x5a, 0xfe, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x4c, 0x5c, 0x7c, - 0x15, 0x30, 0x00, 0x00, + // 3860 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x84, 0x20, 0x79, 0x17, 0x2b, 0xc7, 0xdc, 0x5d, 0xc5, + 0x8e, 0x65, 0xbb, 0x96, 0x6c, 0xed, 0x6a, 0x2f, 0xdc, 0x26, 0x1e, 0x8a, 0xe2, 0x6a, 0xb9, 0x95, + 0x44, 0x06, 0x94, 0xe2, 0x75, 0xfa, 0x80, 0x01, 0xc1, 0x9f, 0x14, 0x76, 0x41, 0x80, 0x01, 0xc0, + 0x5d, 0xcb, 0x4f, 0xdb, 0x71, 0x2f, 0x93, 0xe9, 0xf4, 0xde, 0x99, 0x3a, 0xae, 0xe3, 0xb6, 0x99, + 0x69, 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, + 0x1f, 0xf2, 0xe0, 0x55, 0x3c, 0xd3, 0xb4, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xe3, 0x97, 0xce, + 0x7f, 0x03, 0xc0, 0x8b, 0x16, 0x54, 0x66, 0x1c, 0x3f, 0x49, 0x38, 0xe7, 0x7c, 0x1f, 0x0e, 0xce, + 0x7f, 0xfe, 0x73, 0x0e, 0x7e, 0x02, 0x7e, 0xb0, 0x0e, 0xe7, 0x3a, 0xb6, 0xdd, 0x31, 0xd1, 0x6a, + 0xcf, 0xb1, 0x3d, 0xbb, 0xd9, 0x6f, 0xaf, 0xb6, 0x90, 0xab, 0x3b, 0x46, 0xcf, 0xb3, 0x9d, 0x15, + 0x22, 0x93, 0xf2, 0xd4, 0x62, 0x85, 0x5b, 0x2c, 0xed, 0xc0, 0xdc, 0x75, 0xc3, 0x44, 0x9b, 0xbe, + 0x61, 0x03, 0x79, 0xd2, 0x15, 0x48, 0xb4, 0x0d, 0x13, 0xc9, 0xc2, 0xb9, 0xf8, 0x72, 0x66, 0xed, + 0xf1, 0x95, 0x21, 0xd0, 0xca, 0x20, 0xa2, 0x8e, 0xc5, 0x0a, 0x41, 0x2c, 0xbd, 0x9b, 0x80, 0xf9, + 0x31, 0x5a, 0x49, 0x82, 0x84, 0xa5, 0x75, 0x31, 0xa3, 0xb0, 0x9c, 0x56, 0xc8, 0xff, 0x92, 0x0c, + 0x33, 0x3d, 0x4d, 0xbf, 0xa3, 0x75, 0x90, 0x1c, 0x23, 0x62, 0x7e, 0x29, 0x15, 0x00, 0x5a, 0xa8, + 0x87, 0xac, 0x16, 0xb2, 0xf4, 0x43, 0x39, 0x7e, 0x2e, 0xbe, 0x9c, 0x56, 0x42, 0x12, 0xe9, 0x19, + 0x98, 0xeb, 0xf5, 0x9b, 0xa6, 0xa1, 0xab, 0x21, 0x33, 0x38, 0x17, 0x5f, 0x4e, 0x2a, 0x22, 0x55, + 0x6c, 0x06, 0xc6, 0x4f, 0x42, 0xfe, 0x1e, 0xd2, 0xee, 0x84, 0x4d, 0x33, 0xc4, 0x34, 0x87, 0xc5, + 0x21, 0xc3, 0x32, 0x64, 0xbb, 0xc8, 0x75, 0xb5, 0x0e, 0x52, 0xbd, 0xc3, 0x1e, 0x92, 0x13, 0xe4, + 0xe9, 0xcf, 0x8d, 0x3c, 0xfd, 0xf0, 0x93, 0x67, 0x18, 0x6a, 0xef, 0xb0, 0x87, 0xa4, 0x12, 0xa4, + 0x91, 0xd5, 0xef, 0x52, 0x86, 0xe4, 0x31, 0xf1, 0xab, 0x58, 0xfd, 0xee, 0x30, 0x4b, 0x0a, 0xc3, + 0x18, 0xc5, 0x8c, 0x8b, 0x9c, 0xbb, 0x86, 0x8e, 0xe4, 0x69, 0x42, 0xf0, 0xe4, 0x08, 0x41, 0x83, + 0xea, 0x87, 0x39, 0x38, 0x4e, 0x2a, 0x43, 0x1a, 0xbd, 0xec, 0x21, 0xcb, 0x35, 0x6c, 0x4b, 0x9e, + 0x21, 0x24, 0x4f, 0x8c, 0x59, 0x45, 0x64, 0xb6, 0x86, 0x29, 0x02, 0x9c, 0x74, 0x09, 0x66, 0xec, + 0x9e, 0x67, 0xd8, 0x96, 0x2b, 0xa7, 0xce, 0x09, 0xcb, 0x99, 0xb5, 0x4f, 0x8c, 0x4d, 0x84, 0x1a, + 0xb5, 0x51, 0xb8, 0xb1, 0x54, 0x05, 0xd1, 0xb5, 0xfb, 0x8e, 0x8e, 0x54, 0xdd, 0x6e, 0x21, 0xd5, + 0xb0, 0xda, 0xb6, 0x9c, 0x26, 0x04, 0x67, 0x47, 0x1f, 0x84, 0x18, 0x96, 0xed, 0x16, 0xaa, 0x5a, + 0x6d, 0x5b, 0xc9, 0xb9, 0x03, 0xd7, 0xd2, 0x29, 0x98, 0x76, 0x0f, 0x2d, 0x4f, 0x7b, 0x59, 0xce, + 0x92, 0x0c, 0x61, 0x57, 0x4b, 0xff, 0x97, 0x84, 0xfc, 0x24, 0x29, 0x76, 0x0d, 0x92, 0x6d, 0xfc, + 0x94, 0x72, 0xec, 0x24, 0x31, 0xa0, 0x98, 0xc1, 0x20, 0x4e, 0xff, 0x84, 0x41, 0x2c, 0x41, 0xc6, + 0x42, 0xae, 0x87, 0x5a, 0x34, 0x23, 0xe2, 0x13, 0xe6, 0x14, 0x50, 0xd0, 0x68, 0x4a, 0x25, 0x7e, + 0xa2, 0x94, 0xba, 0x05, 0x79, 0xdf, 0x25, 0xd5, 0xd1, 0xac, 0x0e, 0xcf, 0xcd, 0xd5, 0x28, 0x4f, + 0x56, 0x2a, 0x1c, 0xa7, 0x60, 0x98, 0x92, 0x43, 0x03, 0xd7, 0xd2, 0x26, 0x80, 0x6d, 0x21, 0xbb, + 0xad, 0xb6, 0x90, 0x6e, 0xca, 0xa9, 0x63, 0xa2, 0x54, 0xc3, 0x26, 0x23, 0x51, 0xb2, 0xa9, 0x54, + 0x37, 0xa5, 0xab, 0x41, 0xaa, 0xcd, 0x1c, 0x93, 0x29, 0x3b, 0x74, 0x93, 0x8d, 0x64, 0xdb, 0x3e, + 0xe4, 0x1c, 0x84, 0xf3, 0x1e, 0xb5, 0xd8, 0x93, 0xa5, 0x89, 0x13, 0x2b, 0x91, 0x4f, 0xa6, 0x30, + 0x18, 0x7d, 0xb0, 0x59, 0x27, 0x7c, 0x29, 0x7d, 0x12, 0x7c, 0x81, 0x4a, 0xd2, 0x0a, 0x48, 0x15, + 0xca, 0x72, 0xe1, 0xae, 0xd6, 0x45, 0x8b, 0x57, 0x20, 0x37, 0x18, 0x1e, 0x69, 0x01, 0x92, 0xae, + 0xa7, 0x39, 0x1e, 0xc9, 0xc2, 0xa4, 0x42, 0x2f, 0x24, 0x11, 0xe2, 0xc8, 0x6a, 0x91, 0x2a, 0x97, + 0x54, 0xf0, 0xbf, 0x8b, 0x97, 0x61, 0x76, 0xe0, 0xf6, 0x93, 0x02, 0x97, 0x5e, 0x9b, 0x86, 0x85, + 0x71, 0x39, 0x37, 0x36, 0xfd, 0x4f, 0xc1, 0xb4, 0xd5, 0xef, 0x36, 0x91, 0x23, 0xc7, 0x09, 0x03, + 0xbb, 0x92, 0x4a, 0x90, 0x34, 0xb5, 0x26, 0x32, 0xe5, 0xc4, 0x39, 0x61, 0x39, 0xb7, 0xf6, 0xcc, + 0x44, 0x59, 0xbd, 0xb2, 0x8d, 0x21, 0x0a, 0x45, 0x4a, 0x9f, 0x81, 0x04, 0x2b, 0x71, 0x98, 0xe1, + 0xe9, 0xc9, 0x18, 0x70, 0x2e, 0x2a, 0x04, 0x27, 0x3d, 0x0a, 0x69, 0xfc, 0x97, 0xc6, 0x76, 0x9a, + 0xf8, 0x9c, 0xc2, 0x02, 0x1c, 0x57, 0x69, 0x11, 0x52, 0x24, 0xcd, 0x5a, 0x88, 0xb7, 0x06, 0xff, + 0x1a, 0x2f, 0x4c, 0x0b, 0xb5, 0xb5, 0xbe, 0xe9, 0xa9, 0x77, 0x35, 0xb3, 0x8f, 0x48, 0xc2, 0xa4, + 0x95, 0x2c, 0x13, 0x7e, 0x0e, 0xcb, 0xa4, 0xb3, 0x90, 0xa1, 0x59, 0x69, 0x58, 0x2d, 0xf4, 0x32, + 0xa9, 0x3e, 0x49, 0x85, 0x26, 0x6a, 0x15, 0x4b, 0xf0, 0xed, 0x6f, 0xbb, 0xb6, 0xc5, 0x97, 0x96, + 0xdc, 0x02, 0x0b, 0xc8, 0xed, 0x2f, 0x0f, 0x17, 0xbe, 0xc7, 0xc6, 0x3f, 0xde, 0x70, 0x2e, 0x2e, + 0x7d, 0x2b, 0x06, 0x09, 0xb2, 0xdf, 0xf2, 0x90, 0xd9, 0x7b, 0xa9, 0x5e, 0x51, 0x37, 0x6b, 0xfb, + 0x1b, 0xdb, 0x15, 0x51, 0x90, 0x72, 0x00, 0x44, 0x70, 0x7d, 0xbb, 0x56, 0xda, 0x13, 0x63, 0xfe, + 0x75, 0x75, 0x77, 0xef, 0xd2, 0x45, 0x31, 0xee, 0x03, 0xf6, 0xa9, 0x20, 0x11, 0x36, 0xb8, 0xb0, + 0x26, 0x26, 0x25, 0x11, 0xb2, 0x94, 0xa0, 0x7a, 0xab, 0xb2, 0x79, 0xe9, 0xa2, 0x38, 0x3d, 0x28, + 0xb9, 0xb0, 0x26, 0xce, 0x48, 0xb3, 0x90, 0x26, 0x92, 0x8d, 0x5a, 0x6d, 0x5b, 0x4c, 0xf9, 0x9c, + 0x8d, 0x3d, 0xa5, 0xba, 0xbb, 0x25, 0xa6, 0x7d, 0xce, 0x2d, 0xa5, 0xb6, 0x5f, 0x17, 0xc1, 0x67, + 0xd8, 0xa9, 0x34, 0x1a, 0xa5, 0xad, 0x8a, 0x98, 0xf1, 0x2d, 0x36, 0x5e, 0xda, 0xab, 0x34, 0xc4, + 0xec, 0x80, 0x5b, 0x17, 0xd6, 0xc4, 0x59, 0xff, 0x16, 0x95, 0xdd, 0xfd, 0x1d, 0x31, 0x27, 0xcd, + 0xc1, 0x2c, 0xbd, 0x05, 0x77, 0x22, 0x3f, 0x24, 0xba, 0x74, 0x51, 0x14, 0x03, 0x47, 0x28, 0xcb, + 0xdc, 0x80, 0xe0, 0xd2, 0x45, 0x51, 0x5a, 0x2a, 0x43, 0x92, 0x64, 0x97, 0x24, 0x41, 0x6e, 0xbb, + 0xb4, 0x51, 0xd9, 0x56, 0x6b, 0xf5, 0xbd, 0x6a, 0x6d, 0xb7, 0xb4, 0x2d, 0x0a, 0x81, 0x4c, 0xa9, + 0x7c, 0x76, 0xbf, 0xaa, 0x54, 0x36, 0xc5, 0x58, 0x58, 0x56, 0xaf, 0x94, 0xf6, 0x2a, 0x9b, 0x62, + 0x7c, 0x49, 0x87, 0x85, 0x71, 0x75, 0x66, 0xec, 0xce, 0x08, 0x2d, 0x71, 0xec, 0x98, 0x25, 0x26, + 0x5c, 0x23, 0x4b, 0xfc, 0x15, 0x01, 0xe6, 0xc7, 0xd4, 0xda, 0xb1, 0x37, 0x79, 0x01, 0x92, 0x34, + 0x45, 0x69, 0xf7, 0x79, 0x6a, 0x6c, 0xd1, 0x26, 0x09, 0x3b, 0xd2, 0x81, 0x08, 0x2e, 0xdc, 0x81, + 0xe3, 0xc7, 0x74, 0x60, 0x4c, 0x31, 0xe2, 0xe4, 0xab, 0x02, 0xc8, 0xc7, 0x71, 0x47, 0x14, 0x8a, + 0xd8, 0x40, 0xa1, 0xb8, 0x36, 0xec, 0xc0, 0xf9, 0xe3, 0x9f, 0x61, 0xc4, 0x8b, 0xb7, 0x04, 0x38, + 0x35, 0x7e, 0x50, 0x19, 0xeb, 0xc3, 0x67, 0x60, 0xba, 0x8b, 0xbc, 0x03, 0x9b, 0x37, 0xeb, 0x4f, + 0x8d, 0x69, 0x01, 0x58, 0x3d, 0x1c, 0x2b, 0x86, 0x0a, 0xf7, 0x90, 0xf8, 0x71, 0xd3, 0x06, 0xf5, + 0x66, 0xc4, 0xd3, 0x2f, 0xc6, 0xe0, 0x91, 0xb1, 0xe4, 0x63, 0x1d, 0x7d, 0x0c, 0xc0, 0xb0, 0x7a, + 0x7d, 0x8f, 0x36, 0x64, 0x5a, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0xae, 0x3d, 0x7d, 0xcf, 0xd7, + 0xc7, 0x89, 0x1e, 0xa8, 0x88, 0x18, 0x5c, 0x09, 0x1c, 0x4d, 0x10, 0x47, 0x0b, 0xc7, 0x3c, 0xe9, + 0x48, 0xaf, 0x7b, 0x0e, 0x44, 0xdd, 0x34, 0x90, 0xe5, 0xa9, 0xae, 0xe7, 0x20, 0xad, 0x6b, 0x58, + 0x1d, 0x52, 0x80, 0x53, 0xc5, 0x64, 0x5b, 0x33, 0x5d, 0xa4, 0xe4, 0xa9, 0xba, 0xc1, 0xb5, 0x18, + 0x41, 0xba, 0x8c, 0x13, 0x42, 0x4c, 0x0f, 0x20, 0xa8, 0xda, 0x47, 0x2c, 0x7d, 0x7d, 0x06, 0x32, + 0xa1, 0xb1, 0x4e, 0x3a, 0x0f, 0xd9, 0xdb, 0xda, 0x5d, 0x4d, 0xe5, 0xa3, 0x3a, 0x8d, 0x44, 0x06, + 0xcb, 0xea, 0x6c, 0x5c, 0x7f, 0x0e, 0x16, 0x88, 0x89, 0xdd, 0xf7, 0x90, 0xa3, 0xea, 0xa6, 0xe6, + 0xba, 0x24, 0x68, 0x29, 0x62, 0x2a, 0x61, 0x5d, 0x0d, 0xab, 0xca, 0x5c, 0x23, 0xad, 0xc3, 0x3c, + 0x41, 0x74, 0xfb, 0xa6, 0x67, 0xf4, 0x4c, 0xa4, 0xe2, 0x97, 0x07, 0x97, 0x14, 0x62, 0xdf, 0xb3, + 0x39, 0x6c, 0xb1, 0xc3, 0x0c, 0xb0, 0x47, 0xae, 0xb4, 0x09, 0x8f, 0x11, 0x58, 0x07, 0x59, 0xc8, + 0xd1, 0x3c, 0xa4, 0xa2, 0x2f, 0xf4, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xa5, 0x1e, 0x68, 0xee, 0x81, + 0xbc, 0x80, 0x09, 0x36, 0x62, 0xb2, 0xa0, 0x9c, 0xc1, 0x86, 0x5b, 0xcc, 0xae, 0x42, 0xcc, 0x4a, + 0x56, 0xeb, 0x86, 0xe6, 0x1e, 0x48, 0x45, 0x38, 0x45, 0x58, 0x5c, 0xcf, 0x31, 0xac, 0x8e, 0xaa, + 0x1f, 0x20, 0xfd, 0x8e, 0xda, 0xf7, 0xda, 0x57, 0xe4, 0x47, 0xc3, 0xf7, 0x27, 0x1e, 0x36, 0x88, + 0x4d, 0x19, 0x9b, 0xec, 0x7b, 0xed, 0x2b, 0x52, 0x03, 0xb2, 0x78, 0x31, 0xba, 0xc6, 0x2b, 0x48, + 0x6d, 0xdb, 0x0e, 0xe9, 0x2c, 0xb9, 0x31, 0x3b, 0x3b, 0x14, 0xc1, 0x95, 0x1a, 0x03, 0xec, 0xd8, + 0x2d, 0x54, 0x4c, 0x36, 0xea, 0x95, 0xca, 0xa6, 0x92, 0xe1, 0x2c, 0xd7, 0x6d, 0x07, 0x27, 0x54, + 0xc7, 0xf6, 0x03, 0x9c, 0xa1, 0x09, 0xd5, 0xb1, 0x79, 0x78, 0xd7, 0x61, 0x5e, 0xd7, 0xe9, 0x33, + 0x1b, 0xba, 0xca, 0x46, 0x7c, 0x57, 0x16, 0x07, 0x82, 0xa5, 0xeb, 0x5b, 0xd4, 0x80, 0xe5, 0xb8, + 0x2b, 0x5d, 0x85, 0x47, 0x82, 0x60, 0x85, 0x81, 0x73, 0x23, 0x4f, 0x39, 0x0c, 0x5d, 0x87, 0xf9, + 0xde, 0xe1, 0x28, 0x50, 0x1a, 0xb8, 0x63, 0xef, 0x70, 0x18, 0xf6, 0x04, 0x79, 0x6d, 0x73, 0x90, + 0xae, 0x79, 0xa8, 0x25, 0x9f, 0x0e, 0x5b, 0x87, 0x14, 0xd2, 0x2a, 0x88, 0xba, 0xae, 0x22, 0x4b, + 0x6b, 0x9a, 0x48, 0xd5, 0x1c, 0x64, 0x69, 0xae, 0x7c, 0x36, 0x6c, 0x9c, 0xd3, 0xf5, 0x0a, 0xd1, + 0x96, 0x88, 0x52, 0x7a, 0x1a, 0xe6, 0xec, 0xe6, 0x6d, 0x9d, 0x66, 0x96, 0xda, 0x73, 0x50, 0xdb, + 0x78, 0x59, 0x7e, 0x9c, 0x84, 0x29, 0x8f, 0x15, 0x24, 0xaf, 0xea, 0x44, 0x2c, 0x3d, 0x05, 0xa2, + 0xee, 0x1e, 0x68, 0x4e, 0x8f, 0xb4, 0x76, 0xb7, 0xa7, 0xe9, 0x48, 0x7e, 0x82, 0x9a, 0x52, 0xf9, + 0x2e, 0x17, 0xe3, 0xcc, 0x76, 0xef, 0x19, 0x6d, 0x8f, 0x33, 0x3e, 0x49, 0x33, 0x9b, 0xc8, 0x18, + 0xdb, 0x2d, 0x58, 0xe8, 0x5b, 0x86, 0xe5, 0x21, 0xa7, 0xe7, 0x20, 0x3c, 0xc4, 0xd3, 0x9d, 0x28, + 0xff, 0xeb, 0xcc, 0x31, 0x63, 0xf8, 0x7e, 0xd8, 0x9a, 0x26, 0x80, 0x32, 0xdf, 0x1f, 0x15, 0x2e, + 0x15, 0x21, 0x1b, 0xce, 0x0b, 0x29, 0x0d, 0x34, 0x33, 0x44, 0x01, 0xf7, 0xd8, 0x72, 0x6d, 0x13, + 0x77, 0xc7, 0xcf, 0x57, 0xc4, 0x18, 0xee, 0xd2, 0xdb, 0xd5, 0xbd, 0x8a, 0xaa, 0xec, 0xef, 0xee, + 0x55, 0x77, 0x2a, 0x62, 0xfc, 0xe9, 0x74, 0xea, 0x87, 0x33, 0xe2, 0xfd, 0xfb, 0xf7, 0xef, 0xc7, + 0x96, 0xbe, 0x13, 0x83, 0xdc, 0xe0, 0x64, 0x2c, 0xfd, 0x2c, 0x9c, 0xe6, 0xaf, 0xb1, 0x2e, 0xf2, + 0xd4, 0x7b, 0x86, 0x43, 0x52, 0xb5, 0xab, 0xd1, 0xd9, 0xd2, 0x8f, 0xf2, 0x02, 0xb3, 0x6a, 0x20, + 0xef, 0x45, 0xc3, 0xc1, 0x89, 0xd8, 0xd5, 0x3c, 0x69, 0x1b, 0xce, 0x5a, 0xb6, 0xea, 0x7a, 0x9a, + 0xd5, 0xd2, 0x9c, 0x96, 0x1a, 0x1c, 0x20, 0xa8, 0x9a, 0xae, 0x23, 0xd7, 0xb5, 0x69, 0x8b, 0xf0, + 0x59, 0x3e, 0x61, 0xd9, 0x0d, 0x66, 0x1c, 0xd4, 0xce, 0x12, 0x33, 0x1d, 0xca, 0x88, 0xf8, 0x71, + 0x19, 0xf1, 0x28, 0xa4, 0xbb, 0x5a, 0x4f, 0x45, 0x96, 0xe7, 0x1c, 0x92, 0x79, 0x2e, 0xa5, 0xa4, + 0xba, 0x5a, 0xaf, 0x82, 0xaf, 0x3f, 0xba, 0x35, 0x08, 0xc7, 0xf1, 0xfb, 0x71, 0xc8, 0x86, 0x67, + 0x3a, 0x3c, 0x22, 0xeb, 0xa4, 0x7e, 0x0b, 0x64, 0x87, 0x7f, 0xf2, 0xa1, 0x13, 0xe0, 0x4a, 0x19, + 0x17, 0xf6, 0xe2, 0x34, 0x9d, 0xb4, 0x14, 0x8a, 0xc4, 0x4d, 0x15, 0xef, 0x69, 0x44, 0xe7, 0xf7, + 0x94, 0xc2, 0xae, 0xa4, 0x2d, 0x98, 0xbe, 0xed, 0x12, 0xee, 0x69, 0xc2, 0xfd, 0xf8, 0xc3, 0xb9, + 0x6f, 0x36, 0x08, 0x79, 0xfa, 0x66, 0x43, 0xdd, 0xad, 0x29, 0x3b, 0xa5, 0x6d, 0x85, 0xc1, 0xa5, + 0x33, 0x90, 0x30, 0xb5, 0x57, 0x0e, 0x07, 0x5b, 0x00, 0x11, 0x4d, 0x1a, 0xf8, 0x33, 0x90, 0xb8, + 0x87, 0xb4, 0x3b, 0x83, 0x85, 0x97, 0x88, 0x3e, 0xc2, 0xd4, 0x5f, 0x85, 0x24, 0x89, 0x97, 0x04, + 0xc0, 0x22, 0x26, 0x4e, 0x49, 0x29, 0x48, 0x94, 0x6b, 0x0a, 0x4e, 0x7f, 0x11, 0xb2, 0x54, 0xaa, + 0xd6, 0xab, 0x95, 0x72, 0x45, 0x8c, 0x2d, 0xad, 0xc3, 0x34, 0x0d, 0x02, 0xde, 0x1a, 0x7e, 0x18, + 0xc4, 0x29, 0x76, 0xc9, 0x38, 0x04, 0xae, 0xdd, 0xdf, 0xd9, 0xa8, 0x28, 0x62, 0x2c, 0xbc, 0xbc, + 0x2e, 0x64, 0xc3, 0xe3, 0xdc, 0x4f, 0x27, 0xa7, 0xfe, 0x5e, 0x80, 0x4c, 0x68, 0x3c, 0xc3, 0x83, + 0x81, 0x66, 0x9a, 0xf6, 0x3d, 0x55, 0x33, 0x0d, 0xcd, 0x65, 0x49, 0x01, 0x44, 0x54, 0xc2, 0x92, + 0x49, 0x17, 0xed, 0xa7, 0xe2, 0xfc, 0x9b, 0x02, 0x88, 0xc3, 0xa3, 0xdd, 0x90, 0x83, 0xc2, 0xc7, + 0xea, 0xe0, 0x1b, 0x02, 0xe4, 0x06, 0xe7, 0xb9, 0x21, 0xf7, 0xce, 0x7f, 0xac, 0xee, 0xbd, 0x13, + 0x83, 0xd9, 0x81, 0x29, 0x6e, 0x52, 0xef, 0xbe, 0x00, 0x73, 0x46, 0x0b, 0x75, 0x7b, 0xb6, 0x87, + 0x2c, 0xfd, 0x50, 0x35, 0xd1, 0x5d, 0x64, 0xca, 0x4b, 0xa4, 0x50, 0xac, 0x3e, 0x7c, 0x4e, 0x5c, + 0xa9, 0x06, 0xb8, 0x6d, 0x0c, 0x2b, 0xce, 0x57, 0x37, 0x2b, 0x3b, 0xf5, 0xda, 0x5e, 0x65, 0xb7, + 0xfc, 0x92, 0xba, 0xbf, 0xfb, 0x73, 0xbb, 0xb5, 0x17, 0x77, 0x15, 0xd1, 0x18, 0x32, 0xfb, 0x08, + 0xb7, 0x7a, 0x1d, 0xc4, 0x61, 0xa7, 0xa4, 0xd3, 0x30, 0xce, 0x2d, 0x71, 0x4a, 0x9a, 0x87, 0xfc, + 0x6e, 0x4d, 0x6d, 0x54, 0x37, 0x2b, 0x6a, 0xe5, 0xfa, 0xf5, 0x4a, 0x79, 0xaf, 0x41, 0x5f, 0x9c, + 0x7d, 0xeb, 0xbd, 0xc1, 0x4d, 0xfd, 0x7a, 0x1c, 0xe6, 0xc7, 0x78, 0x22, 0x95, 0xd8, 0xcc, 0x4e, + 0x5f, 0x23, 0x9e, 0x9d, 0xc4, 0xfb, 0x15, 0x3c, 0x15, 0xd4, 0x35, 0xc7, 0x63, 0x23, 0xfe, 0x53, + 0x80, 0xa3, 0x64, 0x79, 0x46, 0xdb, 0x40, 0x0e, 0x3b, 0x67, 0xa0, 0x83, 0x7c, 0x3e, 0x90, 0xd3, + 0xa3, 0x86, 0x9f, 0x01, 0xa9, 0x67, 0xbb, 0x86, 0x67, 0xdc, 0x45, 0xaa, 0x61, 0xf1, 0x43, 0x09, + 0x3c, 0xd8, 0x27, 0x14, 0x91, 0x6b, 0xaa, 0x96, 0xe7, 0x5b, 0x5b, 0xa8, 0xa3, 0x0d, 0x59, 0xe3, + 0x02, 0x1e, 0x57, 0x44, 0xae, 0xf1, 0xad, 0xcf, 0x43, 0xb6, 0x65, 0xf7, 0xf1, 0x98, 0x44, 0xed, + 0x70, 0xbf, 0x10, 0x94, 0x0c, 0x95, 0xf9, 0x26, 0x6c, 0x8e, 0x0d, 0x4e, 0x43, 0xb2, 0x4a, 0x86, + 0xca, 0xa8, 0xc9, 0x93, 0x90, 0xd7, 0x3a, 0x1d, 0x07, 0x93, 0x73, 0x22, 0x3a, 0x99, 0xe7, 0x7c, + 0x31, 0x31, 0x5c, 0xbc, 0x09, 0x29, 0x1e, 0x07, 0xdc, 0x92, 0x71, 0x24, 0xd4, 0x1e, 0x3d, 0x93, + 0x8a, 0x2d, 0xa7, 0x95, 0x94, 0xc5, 0x95, 0xe7, 0x21, 0x6b, 0xb8, 0x6a, 0x70, 0x38, 0x1a, 0x3b, + 0x17, 0x5b, 0x4e, 0x29, 0x19, 0xc3, 0xf5, 0x4f, 0xc3, 0x96, 0xde, 0x8a, 0x41, 0x6e, 0xf0, 0x70, + 0x57, 0xda, 0x84, 0x94, 0x69, 0xeb, 0x1a, 0x49, 0x2d, 0xfa, 0xcb, 0xc2, 0x72, 0xc4, 0x79, 0xf0, + 0xca, 0x36, 0xb3, 0x57, 0x7c, 0xe4, 0xe2, 0x3f, 0x0b, 0x90, 0xe2, 0x62, 0xe9, 0x14, 0x24, 0x7a, + 0x9a, 0x77, 0x40, 0xe8, 0x92, 0x1b, 0x31, 0x51, 0x50, 0xc8, 0x35, 0x96, 0xbb, 0x3d, 0xcd, 0x22, + 0x29, 0xc0, 0xe4, 0xf8, 0x1a, 0xaf, 0xab, 0x89, 0xb4, 0x16, 0x19, 0xfb, 0xed, 0x6e, 0x17, 0x59, + 0x9e, 0xcb, 0xd7, 0x95, 0xc9, 0xcb, 0x4c, 0x2c, 0x3d, 0x03, 0x73, 0x9e, 0xa3, 0x19, 0xe6, 0x80, + 0x6d, 0x82, 0xd8, 0x8a, 0x5c, 0xe1, 0x1b, 0x17, 0xe1, 0x0c, 0xe7, 0x6d, 0x21, 0x4f, 0xd3, 0x0f, + 0x50, 0x2b, 0x00, 0x4d, 0x93, 0x93, 0xc3, 0xd3, 0xcc, 0x60, 0x93, 0xe9, 0x39, 0x76, 0xe9, 0x7b, + 0x02, 0xcc, 0xf1, 0x17, 0x95, 0x96, 0x1f, 0xac, 0x1d, 0x00, 0xcd, 0xb2, 0x6c, 0x2f, 0x1c, 0xae, + 0xd1, 0x54, 0x1e, 0xc1, 0xad, 0x94, 0x7c, 0x90, 0x12, 0x22, 0x58, 0xec, 0x02, 0x04, 0x9a, 0x63, + 0xc3, 0x76, 0x16, 0x32, 0xec, 0xe4, 0x9e, 0xfc, 0xfc, 0x43, 0x5f, 0x6d, 0x81, 0x8a, 0xf0, 0x1b, + 0x8d, 0xb4, 0x00, 0xc9, 0x26, 0xea, 0x18, 0x16, 0x3b, 0x4f, 0xa4, 0x17, 0xfc, 0x94, 0x32, 0xe1, + 0x9f, 0x52, 0x6e, 0xdc, 0x82, 0x79, 0xdd, 0xee, 0x0e, 0xbb, 0xbb, 0x21, 0x0e, 0xbd, 0x5e, 0xbb, + 0x37, 0x84, 0xcf, 0x43, 0x30, 0x62, 0x7e, 0x25, 0x16, 0xdf, 0xaa, 0x6f, 0x7c, 0x2d, 0xb6, 0xb8, + 0x45, 0x71, 0x75, 0xfe, 0x98, 0x0a, 0x6a, 0x9b, 0x48, 0xc7, 0xae, 0xc3, 0x8f, 0x3e, 0x05, 0xcf, + 0x76, 0x0c, 0xef, 0xa0, 0xdf, 0x5c, 0xd1, 0xed, 0xee, 0x6a, 0xc7, 0xee, 0xd8, 0xc1, 0xcf, 0x5d, + 0xf8, 0x8a, 0x5c, 0x90, 0xff, 0xd8, 0x4f, 0x5e, 0x69, 0x5f, 0xba, 0x18, 0xf9, 0xfb, 0x58, 0x71, + 0x17, 0xe6, 0x99, 0xb1, 0x4a, 0xce, 0xdc, 0xe9, 0xab, 0x81, 0xf4, 0xd0, 0x73, 0x17, 0xf9, 0x9b, + 0xef, 0x92, 0x5e, 0xad, 0xcc, 0x31, 0x28, 0xd6, 0xd1, 0x17, 0x88, 0xa2, 0x02, 0x8f, 0x0c, 0xf0, + 0xd1, 0x7d, 0x89, 0x9c, 0x08, 0xc6, 0xef, 0x30, 0xc6, 0xf9, 0x10, 0x63, 0x83, 0x41, 0x8b, 0x65, + 0x98, 0x3d, 0x09, 0xd7, 0x3f, 0x32, 0xae, 0x2c, 0x0a, 0x93, 0x6c, 0x41, 0x9e, 0x90, 0xe8, 0x7d, + 0xd7, 0xb3, 0xbb, 0xa4, 0xe8, 0x3d, 0x9c, 0xe6, 0x9f, 0xde, 0xa5, 0x1b, 0x25, 0x87, 0x61, 0x65, + 0x1f, 0x55, 0x2c, 0x02, 0xf9, 0x99, 0xa1, 0x85, 0x74, 0x33, 0x82, 0xe1, 0x6d, 0xe6, 0x88, 0x6f, + 0x5f, 0xfc, 0x1c, 0x2c, 0xe0, 0xff, 0x49, 0x4d, 0x0a, 0x7b, 0x12, 0x7d, 0xca, 0x24, 0x7f, 0xef, + 0x55, 0xba, 0x17, 0xe7, 0x7d, 0x82, 0x90, 0x4f, 0xa1, 0x55, 0xec, 0x20, 0xcf, 0x43, 0x8e, 0xab, + 0x6a, 0xe6, 0x38, 0xf7, 0x42, 0xaf, 0xe9, 0xf2, 0x97, 0xde, 0x1b, 0x5c, 0xc5, 0x2d, 0x8a, 0x2c, + 0x99, 0x66, 0x71, 0x1f, 0x4e, 0x8f, 0xc9, 0x8a, 0x09, 0x38, 0x5f, 0x67, 0x9c, 0x0b, 0x23, 0x99, + 0x81, 0x69, 0xeb, 0xc0, 0xe5, 0xfe, 0x5a, 0x4e, 0xc0, 0xf9, 0xfb, 0x8c, 0x53, 0x62, 0x58, 0xbe, + 0xa4, 0x98, 0xf1, 0x26, 0xcc, 0xdd, 0x45, 0x4e, 0xd3, 0x76, 0xd9, 0xd1, 0xc8, 0x04, 0x74, 0x6f, + 0x30, 0xba, 0x3c, 0x03, 0x92, 0xb3, 0x12, 0xcc, 0x75, 0x15, 0x52, 0x6d, 0x4d, 0x47, 0x13, 0x50, + 0x7c, 0x99, 0x51, 0xcc, 0x60, 0x7b, 0x0c, 0x2d, 0x41, 0xb6, 0x63, 0xb3, 0xb6, 0x14, 0x0d, 0x7f, + 0x93, 0xc1, 0x33, 0x1c, 0xc3, 0x28, 0x7a, 0x76, 0xaf, 0x6f, 0xe2, 0x9e, 0x15, 0x4d, 0xf1, 0x07, + 0x9c, 0x82, 0x63, 0x18, 0xc5, 0x09, 0xc2, 0xfa, 0x87, 0x9c, 0xc2, 0x0d, 0xc5, 0xf3, 0x05, 0xc8, + 0xd8, 0x96, 0x79, 0x68, 0x5b, 0x93, 0x38, 0xf1, 0x47, 0x8c, 0x01, 0x18, 0x04, 0x13, 0x5c, 0x83, + 0xf4, 0xa4, 0x0b, 0xf1, 0xc7, 0xef, 0xf1, 0xed, 0xc1, 0x57, 0x60, 0x0b, 0xf2, 0xbc, 0x40, 0x19, + 0xb6, 0x35, 0x01, 0xc5, 0x9f, 0x30, 0x8a, 0x5c, 0x08, 0xc6, 0x1e, 0xc3, 0x43, 0xae, 0xd7, 0x41, + 0x93, 0x90, 0xbc, 0xc5, 0x1f, 0x83, 0x41, 0x58, 0x28, 0x9b, 0xc8, 0xd2, 0x0f, 0x26, 0x63, 0xf8, + 0x2a, 0x0f, 0x25, 0xc7, 0x60, 0x8a, 0x32, 0xcc, 0x76, 0x35, 0xc7, 0x3d, 0xd0, 0xcc, 0x89, 0x96, + 0xe3, 0x4f, 0x19, 0x47, 0xd6, 0x07, 0xb1, 0x88, 0xf4, 0xad, 0x93, 0xd0, 0x7c, 0x8d, 0x47, 0x24, + 0x04, 0x63, 0x5b, 0xcf, 0xf5, 0xc8, 0x01, 0xd4, 0x49, 0xd8, 0xbe, 0xce, 0xb7, 0x1e, 0xc5, 0xee, + 0x84, 0x19, 0xaf, 0x41, 0xda, 0x35, 0x5e, 0x99, 0x88, 0xe6, 0xcf, 0xf8, 0x4a, 0x13, 0x00, 0x06, + 0xbf, 0x04, 0x67, 0xc6, 0xb6, 0x89, 0x09, 0xc8, 0xfe, 0x9c, 0x91, 0x9d, 0x1a, 0xd3, 0x2a, 0x58, + 0x49, 0x38, 0x29, 0xe5, 0x5f, 0xf0, 0x92, 0x80, 0x86, 0xb8, 0xea, 0xf8, 0x45, 0xc1, 0xd5, 0xda, + 0x27, 0x8b, 0xda, 0x5f, 0xf2, 0xa8, 0x51, 0xec, 0x40, 0xd4, 0xf6, 0xe0, 0x14, 0x63, 0x3c, 0xd9, + 0xba, 0x7e, 0x83, 0x17, 0x56, 0x8a, 0xde, 0x1f, 0x5c, 0xdd, 0x9f, 0x87, 0x45, 0x3f, 0x9c, 0x7c, + 0x22, 0x75, 0xd5, 0xae, 0xd6, 0x9b, 0x80, 0xf9, 0x9b, 0x8c, 0x99, 0x57, 0x7c, 0x7f, 0xa4, 0x75, + 0x77, 0xb4, 0x1e, 0x26, 0xbf, 0x05, 0x32, 0x27, 0xef, 0x5b, 0x0e, 0xd2, 0xed, 0x8e, 0x65, 0xbc, + 0x82, 0x5a, 0x13, 0x50, 0xff, 0xd5, 0xd0, 0x52, 0xed, 0x87, 0xe0, 0x98, 0xb9, 0x0a, 0xa2, 0x3f, + 0xab, 0xa8, 0x46, 0xb7, 0x67, 0x3b, 0x5e, 0x04, 0xe3, 0x5f, 0xf3, 0x95, 0xf2, 0x71, 0x55, 0x02, + 0x2b, 0x56, 0x20, 0x47, 0x2e, 0x27, 0x4d, 0xc9, 0xbf, 0x61, 0x44, 0xb3, 0x01, 0x8a, 0x15, 0x0e, + 0xdd, 0xee, 0xf6, 0x34, 0x67, 0x92, 0xfa, 0xf7, 0xb7, 0xbc, 0x70, 0x30, 0x08, 0x2b, 0x1c, 0xde, + 0x61, 0x0f, 0xe1, 0x6e, 0x3f, 0x01, 0xc3, 0xb7, 0x78, 0xe1, 0xe0, 0x18, 0x46, 0xc1, 0x07, 0x86, + 0x09, 0x28, 0xfe, 0x8e, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x6c, 0xd0, 0x68, 0x1d, 0xd4, 0x31, 0x5c, + 0xcf, 0xa1, 0x73, 0xf0, 0xc3, 0xa9, 0xbe, 0xfd, 0xde, 0xe0, 0x10, 0xa6, 0x84, 0xa0, 0xc5, 0x9b, + 0x90, 0x1f, 0x1a, 0x31, 0xa4, 0xa8, 0x6f, 0x16, 0xe4, 0x5f, 0xf8, 0x80, 0x15, 0xa3, 0xc1, 0x09, + 0xa3, 0xb8, 0x8d, 0xd7, 0x7d, 0x70, 0x0e, 0x88, 0x26, 0x7b, 0xf5, 0x03, 0x7f, 0xe9, 0x07, 0xc6, + 0x80, 0xe2, 0x75, 0x98, 0x1d, 0x98, 0x01, 0xa2, 0xa9, 0x7e, 0x91, 0x51, 0x65, 0xc3, 0x23, 0x40, + 0x71, 0x1d, 0x12, 0xb8, 0x9f, 0x47, 0xc3, 0x7f, 0x89, 0xc1, 0x89, 0x79, 0xf1, 0xd3, 0x90, 0xe2, + 0x7d, 0x3c, 0x1a, 0xfa, 0xcb, 0x0c, 0xea, 0x43, 0x30, 0x9c, 0xf7, 0xf0, 0x68, 0xf8, 0xaf, 0x70, + 0x38, 0x87, 0x60, 0xf8, 0xe4, 0x21, 0xfc, 0x87, 0x5f, 0x4d, 0xb0, 0x3a, 0xcc, 0x63, 0x77, 0x0d, + 0x66, 0x58, 0xf3, 0x8e, 0x46, 0x7f, 0x91, 0xdd, 0x9c, 0x23, 0x8a, 0x97, 0x21, 0x39, 0x61, 0xc0, + 0x7f, 0x8d, 0x41, 0xa9, 0x7d, 0xb1, 0x0c, 0x99, 0x50, 0xc3, 0x8e, 0x86, 0xff, 0x3a, 0x83, 0x87, + 0x51, 0xd8, 0x75, 0xd6, 0xb0, 0xa3, 0x09, 0x7e, 0x83, 0xbb, 0xce, 0x10, 0x38, 0x6c, 0xbc, 0x57, + 0x47, 0xa3, 0x7f, 0x93, 0x47, 0x9d, 0x43, 0x8a, 0x2f, 0x40, 0xda, 0xaf, 0xbf, 0xd1, 0xf8, 0xdf, + 0x62, 0xf8, 0x00, 0x83, 0x23, 0x10, 0xaa, 0xff, 0xd1, 0x14, 0xbf, 0xcd, 0x23, 0x10, 0x42, 0xe1, + 0x6d, 0x34, 0xdc, 0xd3, 0xa3, 0x99, 0x7e, 0x87, 0x6f, 0xa3, 0xa1, 0x96, 0x8e, 0x57, 0x93, 0x94, + 0xc1, 0x68, 0x8a, 0xdf, 0xe5, 0xab, 0x49, 0xec, 0xb1, 0x1b, 0xc3, 0x4d, 0x32, 0x9a, 0xe3, 0xf7, + 0xb8, 0x1b, 0x43, 0x3d, 0xb2, 0x58, 0x07, 0x69, 0xb4, 0x41, 0x46, 0xf3, 0xbd, 0xc6, 0xf8, 0xe6, + 0x46, 0xfa, 0x63, 0xf1, 0x45, 0x38, 0x35, 0xbe, 0x39, 0x46, 0xb3, 0x7e, 0xe9, 0x83, 0xa1, 0xd7, + 0x99, 0x70, 0x6f, 0x2c, 0xee, 0x05, 0x55, 0x36, 0xdc, 0x18, 0xa3, 0x69, 0x5f, 0xff, 0x60, 0xb0, + 0xd0, 0x86, 0xfb, 0x62, 0xb1, 0x04, 0x10, 0xf4, 0xa4, 0x68, 0xae, 0x37, 0x18, 0x57, 0x08, 0x84, + 0xb7, 0x06, 0x6b, 0x49, 0xd1, 0xf8, 0x2f, 0xf3, 0xad, 0xc1, 0x10, 0x78, 0x6b, 0xf0, 0x6e, 0x14, + 0x8d, 0x7e, 0x93, 0x6f, 0x0d, 0x0e, 0x29, 0x5e, 0x83, 0x94, 0xd5, 0x37, 0x4d, 0x9c, 0x5b, 0xd2, + 0xc3, 0x3f, 0x23, 0x92, 0xff, 0xed, 0x43, 0x06, 0xe6, 0x80, 0xe2, 0x3a, 0x24, 0x51, 0xb7, 0x89, + 0x5a, 0x51, 0xc8, 0x7f, 0xff, 0x90, 0xd7, 0x13, 0x6c, 0x5d, 0x7c, 0x01, 0x80, 0xbe, 0x4c, 0x93, + 0x5f, 0x89, 0x22, 0xb0, 0xff, 0xf1, 0x21, 0xfb, 0x42, 0x21, 0x80, 0x04, 0x04, 0xf4, 0x7b, 0x87, + 0x87, 0x13, 0xbc, 0x37, 0x48, 0x40, 0x5e, 0xc0, 0xaf, 0xc2, 0xcc, 0x6d, 0xd7, 0xb6, 0x3c, 0xad, + 0x13, 0x85, 0xfe, 0x4f, 0x86, 0xe6, 0xf6, 0x38, 0x60, 0x5d, 0xdb, 0x41, 0x9e, 0xd6, 0x71, 0xa3, + 0xb0, 0xff, 0xc5, 0xb0, 0x3e, 0x00, 0x83, 0x75, 0xcd, 0xf5, 0x26, 0x79, 0xee, 0xff, 0xe6, 0x60, + 0x0e, 0xc0, 0x4e, 0xe3, 0xff, 0xef, 0xa0, 0xc3, 0x28, 0xec, 0xfb, 0xdc, 0x69, 0x66, 0x5f, 0xfc, + 0x34, 0xa4, 0xf1, 0xbf, 0xf4, 0xab, 0x9d, 0x08, 0xf0, 0xff, 0x30, 0x70, 0x80, 0xc0, 0x77, 0x76, + 0xbd, 0x96, 0x67, 0x44, 0x07, 0xfb, 0x7f, 0xd9, 0x4a, 0x73, 0xfb, 0x62, 0x09, 0x32, 0xae, 0xd7, + 0x6a, 0xf5, 0xd9, 0x44, 0x13, 0x01, 0xff, 0xd1, 0x87, 0xfe, 0x4b, 0xae, 0x8f, 0xd9, 0x38, 0x3f, + 0xfe, 0xb0, 0x0e, 0xb6, 0xec, 0x2d, 0x9b, 0x1e, 0xd3, 0xc1, 0x6b, 0x49, 0x58, 0xd4, 0xed, 0x6e, + 0xd3, 0x76, 0x57, 0xfd, 0x42, 0xb2, 0x6a, 0x5b, 0xcc, 0x5a, 0x8a, 0xdb, 0x16, 0x5a, 0x3c, 0xd9, + 0xb1, 0xdc, 0xd2, 0x19, 0x48, 0x36, 0xfa, 0xcd, 0xe6, 0xa1, 0x24, 0x42, 0xdc, 0xed, 0x37, 0xd9, + 0x77, 0x25, 0xf8, 0xdf, 0xa5, 0xef, 0xc7, 0x21, 0xd3, 0xd0, 0xba, 0x3d, 0x13, 0xd5, 0x2c, 0x54, + 0x6b, 0x4b, 0x32, 0x4c, 0x93, 0xa7, 0x78, 0x9e, 0x18, 0x09, 0x37, 0xa6, 0x14, 0x76, 0xed, 0x6b, + 0xd6, 0xc8, 0x59, 0x65, 0xcc, 0xd7, 0xac, 0xf9, 0x9a, 0x0b, 0xf4, 0xa8, 0xd2, 0xd7, 0x5c, 0xf0, + 0x35, 0x17, 0xc9, 0x81, 0x65, 0xdc, 0xd7, 0x5c, 0xf4, 0x35, 0xeb, 0xe4, 0x40, 0x7e, 0xd6, 0xd7, + 0xac, 0xfb, 0x9a, 0x4b, 0xe4, 0x08, 0x3e, 0xe1, 0x6b, 0x2e, 0xf9, 0x9a, 0xcb, 0xe4, 0xe4, 0x7d, + 0xce, 0xd7, 0x5c, 0xf6, 0x35, 0x57, 0xc8, 0x69, 0xbb, 0xe4, 0x6b, 0xae, 0xf8, 0x9a, 0xab, 0xe4, + 0xf3, 0x91, 0x19, 0x5f, 0x73, 0x55, 0x5a, 0x84, 0x19, 0xfa, 0x64, 0xcf, 0x91, 0x9f, 0x64, 0xf3, + 0x37, 0xa6, 0x14, 0x2e, 0x08, 0x74, 0xcf, 0x93, 0x4f, 0x44, 0xa6, 0x03, 0xdd, 0xf3, 0x81, 0x6e, + 0x8d, 0x7c, 0x28, 0x2d, 0x06, 0xba, 0xb5, 0x40, 0x77, 0x41, 0x9e, 0xc5, 0x8b, 0x1f, 0xe8, 0x2e, + 0x04, 0xba, 0x8b, 0x72, 0x0e, 0xc7, 0x3f, 0xd0, 0x5d, 0x0c, 0x74, 0xeb, 0x72, 0xfe, 0x9c, 0xb0, + 0x9c, 0x0d, 0x74, 0xeb, 0xd2, 0xb3, 0x90, 0x71, 0xfb, 0x4d, 0x95, 0x7d, 0x41, 0x40, 0x3e, 0x45, + 0xc9, 0xac, 0xc1, 0x0a, 0xce, 0x08, 0xb2, 0xa8, 0x37, 0xa6, 0x14, 0x70, 0xfb, 0x4d, 0x56, 0x1d, + 0x37, 0xb2, 0x40, 0x0e, 0x13, 0x54, 0xf2, 0x01, 0xe6, 0xc6, 0xe6, 0xdb, 0x0f, 0x0a, 0x53, 0xdf, + 0x7d, 0x50, 0x98, 0xfa, 0x97, 0x07, 0x85, 0xa9, 0x77, 0x1e, 0x14, 0x84, 0xf7, 0x1f, 0x14, 0x84, + 0x1f, 0x3f, 0x28, 0x08, 0xf7, 0x8f, 0x0a, 0xc2, 0x57, 0x8f, 0x0a, 0xc2, 0x37, 0x8e, 0x0a, 0xc2, + 0xb7, 0x8f, 0x0a, 0xc2, 0xdb, 0x47, 0x05, 0xe1, 0xbb, 0x47, 0x85, 0xa9, 0x77, 0x8e, 0x0a, 0xc2, + 0x0f, 0x8f, 0x0a, 0x53, 0xef, 0x1f, 0x15, 0x84, 0x1f, 0x1f, 0x15, 0xa6, 0xee, 0xff, 0xa0, 0x30, + 0xd5, 0x9c, 0x26, 0x69, 0x74, 0xe1, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x6c, 0xda, 0xdb, + 0xf7, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/neither/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/neither/one.pb.go index ebb7ef191..b45017847 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/neither/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/neither/one.pb.go @@ -548,242 +548,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3751 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, - 0x75, 0x16, 0x78, 0x13, 0x79, 0x48, 0x51, 0xd0, 0x2f, 0x79, 0x8d, 0x95, 0x63, 0xae, 0x56, 0xb1, - 0x63, 0xd9, 0xae, 0xb5, 0xb6, 0x2e, 0x7b, 0xe1, 0x36, 0xf1, 0x50, 0x12, 0xad, 0xd5, 0x8e, 0x6e, - 0x01, 0xa5, 0xc4, 0x4e, 0x1e, 0x30, 0x20, 0xf8, 0x93, 0xc2, 0x2e, 0x08, 0xb0, 0x00, 0xb8, 0xb6, - 0xfc, 0xb4, 0x19, 0xf7, 0x32, 0x99, 0x4c, 0xef, 0x9d, 0x36, 0x71, 0x1c, 0x37, 0xcd, 0x4c, 0xeb, - 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, 0x1f, 0xf2, - 0x90, 0x55, 0x3d, 0xd3, 0xb4, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xb3, 0x2f, 0x9d, 0xff, 0x06, - 0x80, 0x17, 0x2d, 0xa8, 0xcc, 0x24, 0xce, 0x93, 0x84, 0x73, 0xce, 0xf7, 0xe1, 0xe0, 0xfc, 0xe7, - 0x3f, 0xe7, 0xe0, 0x27, 0xe0, 0x33, 0x2b, 0x30, 0xd7, 0x72, 0x9c, 0x96, 0x85, 0x2f, 0x75, 0x5c, - 0xc7, 0x77, 0xea, 0xdd, 0xe6, 0xa5, 0x06, 0xf6, 0x0c, 0xd7, 0xec, 0xf8, 0x8e, 0xbb, 0x48, 0x65, - 0x68, 0x92, 0x59, 0x2c, 0x0a, 0x8b, 0xf9, 0x1d, 0x98, 0x7a, 0xc1, 0xb4, 0xf0, 0x46, 0x60, 0x58, - 0xc3, 0x3e, 0xba, 0x0a, 0xa9, 0xa6, 0x69, 0x61, 0x45, 0x9a, 0x4b, 0x2e, 0xe4, 0x97, 0x1e, 0x5b, - 0xec, 0x03, 0x2d, 0xf6, 0x22, 0xf6, 0x89, 0x58, 0xa5, 0x88, 0xf9, 0x77, 0x52, 0x30, 0x3d, 0x44, - 0x8b, 0x10, 0xa4, 0x6c, 0xbd, 0x4d, 0x18, 0xa5, 0x85, 0x9c, 0x4a, 0xff, 0x47, 0x0a, 0x8c, 0x77, - 0x74, 0xe3, 0xb6, 0xde, 0xc2, 0x4a, 0x82, 0x8a, 0xc5, 0x25, 0x2a, 0x01, 0x34, 0x70, 0x07, 0xdb, - 0x0d, 0x6c, 0x1b, 0xc7, 0x4a, 0x72, 0x2e, 0xb9, 0x90, 0x53, 0x23, 0x12, 0xf4, 0x34, 0x4c, 0x75, - 0xba, 0x75, 0xcb, 0x34, 0xb4, 0x88, 0x19, 0xcc, 0x25, 0x17, 0xd2, 0xaa, 0xcc, 0x14, 0x1b, 0xa1, - 0xf1, 0x13, 0x30, 0xf9, 0x32, 0xd6, 0x6f, 0x47, 0x4d, 0xf3, 0xd4, 0xb4, 0x48, 0xc4, 0x11, 0xc3, - 0x75, 0x28, 0xb4, 0xb1, 0xe7, 0xe9, 0x2d, 0xac, 0xf9, 0xc7, 0x1d, 0xac, 0xa4, 0xe8, 0xd3, 0xcf, - 0x0d, 0x3c, 0x7d, 0xff, 0x93, 0xe7, 0x39, 0xea, 0xe0, 0xb8, 0x83, 0x51, 0x05, 0x72, 0xd8, 0xee, - 0xb6, 0x19, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x6e, 0xbb, 0x9f, 0x25, 0x4b, 0x60, 0x9c, 0x62, - 0xdc, 0xc3, 0xee, 0x1d, 0xd3, 0xc0, 0x4a, 0x86, 0x12, 0x3c, 0x31, 0x40, 0x50, 0x63, 0xfa, 0x7e, - 0x0e, 0x81, 0x43, 0xeb, 0x90, 0xc3, 0xaf, 0xf8, 0xd8, 0xf6, 0x4c, 0xc7, 0x56, 0xc6, 0x29, 0xc9, - 0xe3, 0x43, 0x56, 0x11, 0x5b, 0x8d, 0x7e, 0x8a, 0x10, 0x87, 0x2e, 0xc3, 0xb8, 0xd3, 0xf1, 0x4d, - 0xc7, 0xf6, 0x94, 0xec, 0x9c, 0xb4, 0x90, 0x5f, 0xfa, 0xd0, 0xd0, 0x44, 0xd8, 0x63, 0x36, 0xaa, - 0x30, 0x46, 0x5b, 0x20, 0x7b, 0x4e, 0xd7, 0x35, 0xb0, 0x66, 0x38, 0x0d, 0xac, 0x99, 0x76, 0xd3, - 0x51, 0x72, 0x94, 0xe0, 0xc2, 0xe0, 0x83, 0x50, 0xc3, 0x75, 0xa7, 0x81, 0xb7, 0xec, 0xa6, 0xa3, - 0x16, 0xbd, 0x9e, 0x6b, 0x74, 0x0e, 0x32, 0xde, 0xb1, 0xed, 0xeb, 0xaf, 0x28, 0x05, 0x9a, 0x21, - 0xfc, 0x6a, 0xfe, 0xff, 0xd2, 0x30, 0x39, 0x4a, 0x8a, 0x5d, 0x87, 0x74, 0x93, 0x3c, 0xa5, 0x92, - 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x37, 0x88, 0x99, 0x1f, 0x33, 0x88, 0x15, 0xc8, 0xdb, 0xd8, 0xf3, - 0x71, 0x83, 0x65, 0x44, 0x72, 0xc4, 0x9c, 0x02, 0x06, 0x1a, 0x4c, 0xa9, 0xd4, 0x8f, 0x95, 0x52, - 0x2f, 0xc2, 0x64, 0xe0, 0x92, 0xe6, 0xea, 0x76, 0x4b, 0xe4, 0xe6, 0xa5, 0x38, 0x4f, 0x16, 0xab, - 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc4, 0x3d, 0xd7, 0x68, 0x03, 0xc0, 0xb1, 0xb1, 0xd3, 0xd4, 0x1a, - 0xd8, 0xb0, 0x94, 0xec, 0x29, 0x51, 0xda, 0x23, 0x26, 0x03, 0x51, 0x72, 0x98, 0xd4, 0xb0, 0xd0, - 0xb5, 0x30, 0xd5, 0xc6, 0x4f, 0xc9, 0x94, 0x1d, 0xb6, 0xc9, 0x06, 0xb2, 0xed, 0x10, 0x8a, 0x2e, - 0x26, 0x79, 0x8f, 0x1b, 0xfc, 0xc9, 0x72, 0xd4, 0x89, 0xc5, 0xd8, 0x27, 0x53, 0x39, 0x8c, 0x3d, - 0xd8, 0x84, 0x1b, 0xbd, 0x44, 0x1f, 0x86, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0x0a, 0x42, - 0xb8, 0xab, 0xb7, 0xf1, 0xec, 0x55, 0x28, 0xf6, 0x86, 0x07, 0xcd, 0x40, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x06, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x7b, 0x05, 0x26, 0x7a, 0x6e, 0x3f, 0x2a, 0x70, 0xfe, 0xf3, 0x19, 0x98, 0x19, 0x96, 0x73, - 0x43, 0xd3, 0xff, 0x1c, 0x64, 0xec, 0x6e, 0xbb, 0x8e, 0x5d, 0x25, 0x49, 0x19, 0xf8, 0x15, 0xaa, - 0x40, 0xda, 0xd2, 0xeb, 0xd8, 0x52, 0x52, 0x73, 0xd2, 0x42, 0x71, 0xe9, 0xe9, 0x91, 0xb2, 0x7a, - 0x71, 0x9b, 0x40, 0x54, 0x86, 0x44, 0x1f, 0x83, 0x14, 0x2f, 0x71, 0x84, 0xe1, 0xa9, 0xd1, 0x18, - 0x48, 0x2e, 0xaa, 0x14, 0x87, 0x1e, 0x81, 0x1c, 0xf9, 0xcb, 0x62, 0x9b, 0xa1, 0x3e, 0x67, 0x89, - 0x80, 0xc4, 0x15, 0xcd, 0x42, 0x96, 0xa6, 0x59, 0x03, 0x8b, 0xd6, 0x10, 0x5c, 0x93, 0x85, 0x69, - 0xe0, 0xa6, 0xde, 0xb5, 0x7c, 0xed, 0x8e, 0x6e, 0x75, 0x31, 0x4d, 0x98, 0x9c, 0x5a, 0xe0, 0xc2, - 0x4f, 0x10, 0x19, 0xba, 0x00, 0x79, 0x96, 0x95, 0xa6, 0xdd, 0xc0, 0xaf, 0xd0, 0xea, 0x93, 0x56, - 0x59, 0xa2, 0x6e, 0x11, 0x09, 0xb9, 0xfd, 0x2d, 0xcf, 0xb1, 0xc5, 0xd2, 0xd2, 0x5b, 0x10, 0x01, - 0xbd, 0xfd, 0x95, 0xfe, 0xc2, 0xf7, 0xe8, 0xf0, 0xc7, 0xeb, 0xcf, 0xc5, 0xf9, 0x6f, 0x26, 0x20, - 0x45, 0xf7, 0xdb, 0x24, 0xe4, 0x0f, 0x5e, 0xda, 0xaf, 0x6a, 0x1b, 0x7b, 0x87, 0x6b, 0xdb, 0x55, - 0x59, 0x42, 0x45, 0x00, 0x2a, 0x78, 0x61, 0x7b, 0xaf, 0x72, 0x20, 0x27, 0x82, 0xeb, 0xad, 0xdd, - 0x83, 0xcb, 0x2b, 0x72, 0x32, 0x00, 0x1c, 0x32, 0x41, 0x2a, 0x6a, 0xb0, 0xbc, 0x24, 0xa7, 0x91, - 0x0c, 0x05, 0x46, 0xb0, 0xf5, 0x62, 0x75, 0xe3, 0xf2, 0x8a, 0x9c, 0xe9, 0x95, 0x2c, 0x2f, 0xc9, - 0xe3, 0x68, 0x02, 0x72, 0x54, 0xb2, 0xb6, 0xb7, 0xb7, 0x2d, 0x67, 0x03, 0xce, 0xda, 0x81, 0xba, - 0xb5, 0xbb, 0x29, 0xe7, 0x02, 0xce, 0x4d, 0x75, 0xef, 0x70, 0x5f, 0x86, 0x80, 0x61, 0xa7, 0x5a, - 0xab, 0x55, 0x36, 0xab, 0x72, 0x3e, 0xb0, 0x58, 0x7b, 0xe9, 0xa0, 0x5a, 0x93, 0x0b, 0x3d, 0x6e, - 0x2d, 0x2f, 0xc9, 0x13, 0xc1, 0x2d, 0xaa, 0xbb, 0x87, 0x3b, 0x72, 0x11, 0x4d, 0xc1, 0x04, 0xbb, - 0x85, 0x70, 0x62, 0xb2, 0x4f, 0x74, 0x79, 0x45, 0x96, 0x43, 0x47, 0x18, 0xcb, 0x54, 0x8f, 0xe0, - 0xf2, 0x8a, 0x8c, 0xe6, 0xd7, 0x21, 0x4d, 0xb3, 0x0b, 0x21, 0x28, 0x6e, 0x57, 0xd6, 0xaa, 0xdb, - 0xda, 0xde, 0xfe, 0xc1, 0xd6, 0xde, 0x6e, 0x65, 0x5b, 0x96, 0x42, 0x99, 0x5a, 0xfd, 0xf8, 0xe1, - 0x96, 0x5a, 0xdd, 0x90, 0x13, 0x51, 0xd9, 0x7e, 0xb5, 0x72, 0x50, 0xdd, 0x90, 0x93, 0xf3, 0x06, - 0xcc, 0x0c, 0xab, 0x33, 0x43, 0x77, 0x46, 0x64, 0x89, 0x13, 0xa7, 0x2c, 0x31, 0xe5, 0x1a, 0x58, - 0xe2, 0xaf, 0x48, 0x30, 0x3d, 0xa4, 0xd6, 0x0e, 0xbd, 0xc9, 0xf3, 0x90, 0x66, 0x29, 0xca, 0xba, - 0xcf, 0x93, 0x43, 0x8b, 0x36, 0x4d, 0xd8, 0x81, 0x0e, 0x44, 0x71, 0xd1, 0x0e, 0x9c, 0x3c, 0xa5, - 0x03, 0x13, 0x8a, 0x01, 0x27, 0x5f, 0x93, 0x40, 0x39, 0x8d, 0x3b, 0xa6, 0x50, 0x24, 0x7a, 0x0a, - 0xc5, 0xf5, 0x7e, 0x07, 0x2e, 0x9e, 0xfe, 0x0c, 0x03, 0x5e, 0xbc, 0x25, 0xc1, 0xb9, 0xe1, 0x83, - 0xca, 0x50, 0x1f, 0x3e, 0x06, 0x99, 0x36, 0xf6, 0x8f, 0x1c, 0xd1, 0xac, 0x3f, 0x32, 0xa4, 0x05, - 0x10, 0x75, 0x7f, 0xac, 0x38, 0x2a, 0xda, 0x43, 0x92, 0xa7, 0x4d, 0x1b, 0xcc, 0x9b, 0x01, 0x4f, - 0x3f, 0x9b, 0x80, 0x87, 0x86, 0x92, 0x0f, 0x75, 0xf4, 0x51, 0x00, 0xd3, 0xee, 0x74, 0x7d, 0xd6, - 0x90, 0x59, 0x7d, 0xca, 0x51, 0x09, 0xdd, 0xfb, 0xa4, 0xf6, 0x74, 0xfd, 0x40, 0x9f, 0xa4, 0x7a, - 0x60, 0x22, 0x6a, 0x70, 0x35, 0x74, 0x34, 0x45, 0x1d, 0x2d, 0x9d, 0xf2, 0xa4, 0x03, 0xbd, 0xee, - 0x59, 0x90, 0x0d, 0xcb, 0xc4, 0xb6, 0xaf, 0x79, 0xbe, 0x8b, 0xf5, 0xb6, 0x69, 0xb7, 0x68, 0x01, - 0xce, 0x96, 0xd3, 0x4d, 0xdd, 0xf2, 0xb0, 0x3a, 0xc9, 0xd4, 0x35, 0xa1, 0x25, 0x08, 0xda, 0x65, - 0xdc, 0x08, 0x22, 0xd3, 0x83, 0x60, 0xea, 0x00, 0x31, 0xff, 0xb9, 0x71, 0xc8, 0x47, 0xc6, 0x3a, - 0x74, 0x11, 0x0a, 0xb7, 0xf4, 0x3b, 0xba, 0x26, 0x46, 0x75, 0x16, 0x89, 0x3c, 0x91, 0xed, 0xf3, - 0x71, 0xfd, 0x59, 0x98, 0xa1, 0x26, 0x4e, 0xd7, 0xc7, 0xae, 0x66, 0x58, 0xba, 0xe7, 0xd1, 0xa0, - 0x65, 0xa9, 0x29, 0x22, 0xba, 0x3d, 0xa2, 0x5a, 0x17, 0x1a, 0xb4, 0x0a, 0xd3, 0x14, 0xd1, 0xee, - 0x5a, 0xbe, 0xd9, 0xb1, 0xb0, 0x46, 0x5e, 0x1e, 0x3c, 0x5a, 0x88, 0x03, 0xcf, 0xa6, 0x88, 0xc5, - 0x0e, 0x37, 0x20, 0x1e, 0x79, 0x68, 0x13, 0x1e, 0xa5, 0xb0, 0x16, 0xb6, 0xb1, 0xab, 0xfb, 0x58, - 0xc3, 0xbf, 0xd0, 0xd5, 0x2d, 0x4f, 0xd3, 0xed, 0x86, 0x76, 0xa4, 0x7b, 0x47, 0xca, 0x4c, 0x94, - 0xe0, 0x3c, 0xb1, 0xdd, 0xe4, 0xa6, 0x55, 0x6a, 0x59, 0xb1, 0x1b, 0x37, 0x74, 0xef, 0x08, 0x95, - 0xe1, 0x1c, 0x25, 0xf2, 0x7c, 0xd7, 0xb4, 0x5b, 0x9a, 0x71, 0x84, 0x8d, 0xdb, 0x5a, 0xd7, 0x6f, - 0x5e, 0x55, 0x1e, 0x89, 0x32, 0x50, 0x27, 0x6b, 0xd4, 0x66, 0x9d, 0x98, 0x1c, 0xfa, 0xcd, 0xab, - 0xa8, 0x06, 0x05, 0xb2, 0x1e, 0x6d, 0xf3, 0x55, 0xac, 0x35, 0x1d, 0x97, 0x36, 0x97, 0xe2, 0x90, - 0xcd, 0x1d, 0x09, 0xe2, 0xe2, 0x1e, 0x07, 0xec, 0x38, 0x0d, 0x5c, 0x4e, 0xd7, 0xf6, 0xab, 0xd5, - 0x0d, 0x35, 0x2f, 0x58, 0x5e, 0x70, 0x5c, 0x92, 0x53, 0x2d, 0x27, 0x88, 0x71, 0x9e, 0xe5, 0x54, - 0xcb, 0x11, 0x11, 0x5e, 0x85, 0x69, 0xc3, 0x60, 0x8f, 0x6d, 0x1a, 0x1a, 0x9f, 0xf2, 0x3d, 0x45, - 0xee, 0x89, 0x97, 0x61, 0x6c, 0x32, 0x03, 0x9e, 0xe6, 0x1e, 0xba, 0x06, 0x0f, 0x85, 0xf1, 0x8a, - 0x02, 0xa7, 0x06, 0x9e, 0xb2, 0x1f, 0xba, 0x0a, 0xd3, 0x9d, 0xe3, 0x41, 0x20, 0xea, 0xb9, 0x63, - 0xe7, 0xb8, 0x1f, 0xf6, 0x38, 0x7d, 0x73, 0x73, 0xb1, 0xa1, 0xfb, 0xb8, 0xa1, 0x3c, 0x1c, 0xb5, - 0x8e, 0x28, 0xd0, 0x25, 0x90, 0x0d, 0x43, 0xc3, 0xb6, 0x5e, 0xb7, 0xb0, 0xa6, 0xbb, 0xd8, 0xd6, - 0x3d, 0xe5, 0x42, 0xd4, 0xb8, 0x68, 0x18, 0x55, 0xaa, 0xad, 0x50, 0x25, 0x7a, 0x0a, 0xa6, 0x9c, - 0xfa, 0x2d, 0x83, 0x25, 0x97, 0xd6, 0x71, 0x71, 0xd3, 0x7c, 0x45, 0x79, 0x8c, 0x86, 0x69, 0x92, - 0x28, 0x68, 0x6a, 0xed, 0x53, 0x31, 0x7a, 0x12, 0x64, 0xc3, 0x3b, 0xd2, 0xdd, 0x0e, 0xed, 0xee, - 0x5e, 0x47, 0x37, 0xb0, 0xf2, 0x38, 0x33, 0x65, 0xf2, 0x5d, 0x21, 0x46, 0x2f, 0xc2, 0x4c, 0xd7, - 0x36, 0x6d, 0x1f, 0xbb, 0x1d, 0x17, 0x93, 0x21, 0x9d, 0xed, 0x34, 0xe5, 0x5f, 0xc7, 0x4f, 0x19, - 0xb3, 0x0f, 0xa3, 0xd6, 0x6c, 0x75, 0xd5, 0xe9, 0xee, 0xa0, 0x70, 0xbe, 0x0c, 0x85, 0xe8, 0xa2, - 0xa3, 0x1c, 0xb0, 0x65, 0x97, 0x25, 0xd2, 0x43, 0xd7, 0xf7, 0x36, 0x48, 0xf7, 0xfb, 0x54, 0x55, - 0x4e, 0x90, 0x2e, 0xbc, 0xbd, 0x75, 0x50, 0xd5, 0xd4, 0xc3, 0xdd, 0x83, 0xad, 0x9d, 0xaa, 0x9c, - 0x7c, 0x2a, 0x97, 0xfd, 0xc1, 0xb8, 0x7c, 0xf7, 0xee, 0xdd, 0xbb, 0x89, 0xf9, 0x6f, 0x27, 0xa0, - 0xd8, 0x3b, 0xf9, 0xa2, 0x9f, 0x87, 0x87, 0xc5, 0x6b, 0xaa, 0x87, 0x7d, 0xed, 0x65, 0xd3, 0xa5, - 0x79, 0xd8, 0xd6, 0xd9, 0xec, 0x18, 0x84, 0x70, 0x86, 0x5b, 0xd5, 0xb0, 0xff, 0x49, 0xd3, 0x25, - 0x59, 0xd6, 0xd6, 0x7d, 0xb4, 0x0d, 0x17, 0x6c, 0x47, 0xf3, 0x7c, 0xdd, 0x6e, 0xe8, 0x6e, 0x43, - 0x0b, 0x0f, 0x08, 0x34, 0xdd, 0x30, 0xb0, 0xe7, 0x39, 0xac, 0x05, 0x04, 0x2c, 0x1f, 0xb2, 0x9d, - 0x1a, 0x37, 0x0e, 0x6b, 0x63, 0x85, 0x9b, 0xf6, 0x2d, 0x77, 0xf2, 0xb4, 0xe5, 0x7e, 0x04, 0x72, - 0x6d, 0xbd, 0xa3, 0x61, 0xdb, 0x77, 0x8f, 0xe9, 0xbc, 0x96, 0x55, 0xb3, 0x6d, 0xbd, 0x53, 0x25, - 0xd7, 0x3f, 0xb9, 0x35, 0x88, 0xc6, 0xf1, 0x7b, 0x49, 0x28, 0x44, 0x67, 0x36, 0x32, 0x02, 0x1b, - 0xb4, 0x3e, 0x4b, 0x74, 0xfb, 0x7e, 0xf8, 0x81, 0x13, 0xde, 0xe2, 0x3a, 0x29, 0xdc, 0xe5, 0x0c, - 0x9b, 0xa4, 0x54, 0x86, 0x24, 0x4d, 0x93, 0x6c, 0x58, 0xcc, 0xe6, 0xf3, 0xac, 0xca, 0xaf, 0xd0, - 0x26, 0x64, 0x6e, 0x79, 0x94, 0x3b, 0x43, 0xb9, 0x1f, 0x7b, 0x30, 0xf7, 0xcd, 0x1a, 0x25, 0xcf, - 0xdd, 0xac, 0x69, 0xbb, 0x7b, 0xea, 0x4e, 0x65, 0x5b, 0xe5, 0x70, 0x74, 0x1e, 0x52, 0x96, 0xfe, - 0xea, 0x71, 0x6f, 0x89, 0xa7, 0xa2, 0x51, 0x03, 0x7f, 0x1e, 0x52, 0x2f, 0x63, 0xfd, 0x76, 0x6f, - 0x61, 0xa5, 0xa2, 0x9f, 0x60, 0xea, 0x5f, 0x82, 0x34, 0x8d, 0x17, 0x02, 0xe0, 0x11, 0x93, 0xc7, - 0x50, 0x16, 0x52, 0xeb, 0x7b, 0x2a, 0x49, 0x7f, 0x19, 0x0a, 0x4c, 0xaa, 0xed, 0x6f, 0x55, 0xd7, - 0xab, 0x72, 0x62, 0x7e, 0x15, 0x32, 0x2c, 0x08, 0x64, 0x6b, 0x04, 0x61, 0x90, 0xc7, 0xf8, 0x25, - 0xe7, 0x90, 0x84, 0xf6, 0x70, 0x67, 0xad, 0xaa, 0xca, 0x89, 0xe8, 0xf2, 0x7a, 0x50, 0x88, 0x8e, - 0x6b, 0x3f, 0x9d, 0x9c, 0xfa, 0x3b, 0x09, 0xf2, 0x91, 0xf1, 0x8b, 0x34, 0x7e, 0xdd, 0xb2, 0x9c, - 0x97, 0x35, 0xdd, 0x32, 0x75, 0x8f, 0x27, 0x05, 0x50, 0x51, 0x85, 0x48, 0x46, 0x5d, 0xb4, 0x9f, - 0x8a, 0xf3, 0x6f, 0x4a, 0x20, 0xf7, 0x8f, 0x6e, 0x7d, 0x0e, 0x4a, 0x1f, 0xa8, 0x83, 0x6f, 0x48, - 0x50, 0xec, 0x9d, 0xd7, 0xfa, 0xdc, 0xbb, 0xf8, 0x81, 0xba, 0xf7, 0x45, 0x09, 0x26, 0x7a, 0xa6, - 0xb4, 0x9f, 0x29, 0xef, 0x5e, 0x4f, 0xc2, 0xf4, 0x10, 0x1c, 0xaa, 0xf0, 0x71, 0x96, 0x4d, 0xd8, - 0xcf, 0x8c, 0x72, 0xaf, 0x45, 0xd2, 0x2d, 0xf7, 0x75, 0xd7, 0xe7, 0xd3, 0xef, 0x93, 0x20, 0x9b, - 0x0d, 0x6c, 0xfb, 0x66, 0xd3, 0xc4, 0x2e, 0x7f, 0x05, 0x67, 0x33, 0xee, 0x64, 0x28, 0x67, 0x6f, - 0xe1, 0x3f, 0x07, 0xa8, 0xe3, 0x78, 0xa6, 0x6f, 0xde, 0xc1, 0x9a, 0x69, 0x8b, 0xf7, 0x75, 0x32, - 0xf3, 0xa6, 0x54, 0x59, 0x68, 0xb6, 0x6c, 0x3f, 0xb0, 0xb6, 0x71, 0x4b, 0xef, 0xb3, 0x26, 0xb5, - 0x2f, 0xa9, 0xca, 0x42, 0x13, 0x58, 0x5f, 0x84, 0x42, 0xc3, 0xe9, 0x92, 0xf1, 0x81, 0xd9, 0x91, - 0x52, 0x2b, 0xa9, 0x79, 0x26, 0x0b, 0x4c, 0xf8, 0x7c, 0x17, 0x1e, 0x14, 0x14, 0xd4, 0x3c, 0x93, - 0x31, 0x93, 0x27, 0x60, 0x52, 0x6f, 0xb5, 0x5c, 0x42, 0x2e, 0x88, 0xd8, 0xd0, 0x5a, 0x0c, 0xc4, - 0xd4, 0x70, 0xf6, 0x26, 0x64, 0x45, 0x1c, 0x48, 0x37, 0x23, 0x91, 0xd0, 0x3a, 0xec, 0xb8, 0x26, - 0xb1, 0x90, 0x53, 0xb3, 0xb6, 0x50, 0x5e, 0x84, 0x82, 0xe9, 0x69, 0xe1, 0xb9, 0x61, 0x62, 0x2e, - 0xb1, 0x90, 0x55, 0xf3, 0xa6, 0x17, 0x1c, 0x14, 0xcd, 0xbf, 0x95, 0x80, 0x62, 0xef, 0xb9, 0x27, - 0xda, 0x80, 0xac, 0xe5, 0x18, 0x3a, 0x4d, 0x04, 0x76, 0xe8, 0xbe, 0x10, 0x73, 0x54, 0xba, 0xb8, - 0xcd, 0xed, 0xd5, 0x00, 0x39, 0xfb, 0x4f, 0x12, 0x64, 0x85, 0x18, 0x9d, 0x83, 0x54, 0x47, 0xf7, - 0x8f, 0x28, 0x5d, 0x7a, 0x2d, 0x21, 0x4b, 0x2a, 0xbd, 0x26, 0x72, 0xaf, 0xa3, 0xdb, 0x34, 0x05, - 0xb8, 0x9c, 0x5c, 0x93, 0x75, 0xb5, 0xb0, 0xde, 0xa0, 0xe3, 0xb0, 0xd3, 0x6e, 0x63, 0xdb, 0xf7, - 0xc4, 0xba, 0x72, 0xf9, 0x3a, 0x17, 0xa3, 0xa7, 0x61, 0xca, 0x77, 0x75, 0xd3, 0xea, 0xb1, 0x4d, - 0x51, 0x5b, 0x59, 0x28, 0x02, 0xe3, 0x32, 0x9c, 0x17, 0xbc, 0x0d, 0xec, 0xeb, 0xc6, 0x11, 0x6e, - 0x84, 0xa0, 0x0c, 0x3d, 0x54, 0x7b, 0x98, 0x1b, 0x6c, 0x70, 0xbd, 0xc0, 0xce, 0x7f, 0x57, 0x82, - 0x29, 0x31, 0xc0, 0x37, 0x82, 0x60, 0xed, 0x00, 0xe8, 0xb6, 0xed, 0xf8, 0xd1, 0x70, 0x0d, 0xa6, - 0xf2, 0x00, 0x6e, 0xb1, 0x12, 0x80, 0xd4, 0x08, 0xc1, 0x6c, 0x1b, 0x20, 0xd4, 0x9c, 0x1a, 0xb6, - 0x0b, 0x90, 0xe7, 0x87, 0xda, 0xf4, 0x97, 0x11, 0xf6, 0xd6, 0x07, 0x4c, 0x44, 0x26, 0x7d, 0x34, - 0x03, 0xe9, 0x3a, 0x6e, 0x99, 0x36, 0x3f, 0x6a, 0x63, 0x17, 0xe2, 0x00, 0x2f, 0x15, 0x1c, 0xe0, - 0xad, 0x7d, 0x1a, 0xa6, 0x0d, 0xa7, 0xdd, 0xef, 0xee, 0x9a, 0xdc, 0xf7, 0xe6, 0xe9, 0xdd, 0x90, - 0x3e, 0x05, 0xe1, 0x74, 0xf6, 0x65, 0x49, 0xfa, 0x4a, 0x22, 0xb9, 0xb9, 0xbf, 0xf6, 0xb5, 0xc4, - 0xec, 0x26, 0x83, 0xee, 0x8b, 0x27, 0x55, 0x71, 0xd3, 0xc2, 0x06, 0xf1, 0x1e, 0x7e, 0xf8, 0x11, - 0x78, 0xa6, 0x65, 0xfa, 0x47, 0xdd, 0xfa, 0xa2, 0xe1, 0xb4, 0x2f, 0xb5, 0x9c, 0x96, 0x13, 0xfe, - 0x18, 0x44, 0xae, 0xe8, 0x05, 0xfd, 0x8f, 0xff, 0x20, 0x94, 0x0b, 0xa4, 0xb3, 0xb1, 0xbf, 0x1e, - 0x95, 0x77, 0x61, 0x9a, 0x1b, 0x6b, 0xf4, 0x44, 0x9a, 0xcd, 0xe1, 0xe8, 0x81, 0xa7, 0x12, 0xca, - 0x37, 0xde, 0xa1, 0x9d, 0x4e, 0x9d, 0xe2, 0x50, 0xa2, 0x63, 0x93, 0x7a, 0x59, 0x85, 0x87, 0x7a, - 0xf8, 0xd8, 0xd6, 0xc4, 0x6e, 0x0c, 0xe3, 0xb7, 0x39, 0xe3, 0x74, 0x84, 0xb1, 0xc6, 0xa1, 0xe5, - 0x75, 0x98, 0x38, 0x0b, 0xd7, 0x3f, 0x70, 0xae, 0x02, 0x8e, 0x92, 0x6c, 0xc2, 0x24, 0x25, 0x31, - 0xba, 0x9e, 0xef, 0xb4, 0x69, 0xdd, 0x7b, 0x30, 0xcd, 0x3f, 0xbe, 0xc3, 0xf6, 0x4a, 0x91, 0xc0, - 0xd6, 0x03, 0x54, 0xb9, 0x0c, 0xf4, 0x10, 0xbe, 0x81, 0x0d, 0x2b, 0x86, 0xe1, 0x6d, 0xee, 0x48, - 0x60, 0x5f, 0xfe, 0x04, 0xcc, 0x90, 0xff, 0x69, 0x59, 0x8a, 0x7a, 0x12, 0x7f, 0x06, 0xa3, 0x7c, - 0xf7, 0x35, 0xb6, 0x1d, 0xa7, 0x03, 0x82, 0x88, 0x4f, 0x91, 0x55, 0x6c, 0x61, 0xdf, 0xc7, 0xae, - 0xa7, 0xe9, 0xd6, 0x30, 0xf7, 0x22, 0x6f, 0xb0, 0xca, 0x17, 0xde, 0xed, 0x5d, 0xc5, 0x4d, 0x86, - 0xac, 0x58, 0x56, 0xf9, 0x10, 0x1e, 0x1e, 0x92, 0x15, 0x23, 0x70, 0xbe, 0xce, 0x39, 0x67, 0x06, - 0x32, 0x83, 0xd0, 0xee, 0x83, 0x90, 0x07, 0x6b, 0x39, 0x02, 0xe7, 0x17, 0x39, 0x27, 0xe2, 0x58, - 0xb1, 0xa4, 0x84, 0xf1, 0x26, 0x4c, 0xdd, 0xc1, 0x6e, 0xdd, 0xf1, 0xf8, 0xc1, 0xc1, 0x08, 0x74, - 0x6f, 0x70, 0xba, 0x49, 0x0e, 0xa4, 0xc7, 0x08, 0x84, 0xeb, 0x1a, 0x64, 0x9b, 0xba, 0x81, 0x47, - 0xa0, 0xf8, 0x12, 0xa7, 0x18, 0x27, 0xf6, 0x04, 0x5a, 0x81, 0x42, 0xcb, 0xe1, 0x9d, 0x29, 0x1e, - 0xfe, 0x26, 0x87, 0xe7, 0x05, 0x86, 0x53, 0x74, 0x9c, 0x4e, 0xd7, 0x22, 0x6d, 0x2b, 0x9e, 0xe2, - 0xf7, 0x05, 0x85, 0xc0, 0x70, 0x8a, 0x33, 0x84, 0xf5, 0xcb, 0x82, 0xc2, 0x8b, 0xc4, 0xf3, 0x79, - 0xc8, 0x3b, 0xb6, 0x75, 0xec, 0xd8, 0xa3, 0x38, 0xf1, 0x07, 0x9c, 0x01, 0x38, 0x84, 0x10, 0x5c, - 0x87, 0xdc, 0xa8, 0x0b, 0xf1, 0x87, 0xef, 0x8a, 0xed, 0x21, 0x56, 0x60, 0x13, 0x26, 0x45, 0x81, - 0x32, 0x1d, 0x7b, 0x04, 0x8a, 0x3f, 0xe2, 0x14, 0xc5, 0x08, 0x8c, 0x3f, 0x86, 0x8f, 0x3d, 0xbf, - 0x85, 0x47, 0x21, 0x79, 0x4b, 0x3c, 0x06, 0x87, 0xf0, 0x50, 0xd6, 0xb1, 0x6d, 0x1c, 0x8d, 0xc6, - 0xf0, 0x55, 0x11, 0x4a, 0x81, 0x21, 0x14, 0xeb, 0x30, 0xd1, 0xd6, 0x5d, 0xef, 0x48, 0xb7, 0x46, - 0x5a, 0x8e, 0x3f, 0xe6, 0x1c, 0x85, 0x00, 0xc4, 0x23, 0xd2, 0xb5, 0xcf, 0x42, 0xf3, 0x35, 0x11, - 0x91, 0x08, 0x8c, 0x6f, 0x3d, 0xcf, 0xa7, 0x67, 0x33, 0x67, 0x61, 0xfb, 0x13, 0xb1, 0xf5, 0x18, - 0x76, 0x27, 0xca, 0x78, 0x1d, 0x72, 0x9e, 0xf9, 0xea, 0x48, 0x34, 0x7f, 0x2a, 0x56, 0x9a, 0x02, - 0x08, 0xf8, 0x25, 0x38, 0x3f, 0xb4, 0x4d, 0x8c, 0x40, 0xf6, 0x67, 0x9c, 0xec, 0xdc, 0x90, 0x56, - 0xc1, 0x4b, 0xc2, 0x59, 0x29, 0xff, 0x5c, 0x94, 0x04, 0xdc, 0xc7, 0xb5, 0x4f, 0x26, 0x7b, 0x4f, - 0x6f, 0x9e, 0x2d, 0x6a, 0x7f, 0x21, 0xa2, 0xc6, 0xb0, 0x3d, 0x51, 0x3b, 0x80, 0x73, 0x9c, 0xf1, - 0x6c, 0xeb, 0xfa, 0x75, 0x51, 0x58, 0x19, 0xfa, 0xb0, 0x77, 0x75, 0x3f, 0x0d, 0xb3, 0x41, 0x38, - 0xc5, 0x50, 0xea, 0x69, 0x6d, 0xbd, 0x33, 0x02, 0xf3, 0x37, 0x38, 0xb3, 0xa8, 0xf8, 0xc1, 0x54, - 0xeb, 0xed, 0xe8, 0x1d, 0x42, 0xfe, 0x22, 0x28, 0x82, 0xbc, 0x6b, 0xbb, 0xd8, 0x70, 0x5a, 0xb6, - 0xf9, 0x2a, 0x6e, 0x8c, 0x40, 0xfd, 0x97, 0x7d, 0x4b, 0x75, 0x18, 0x81, 0x13, 0xe6, 0x2d, 0x90, - 0x83, 0x59, 0x45, 0x33, 0xdb, 0x1d, 0xc7, 0xf5, 0x63, 0x18, 0xff, 0x4a, 0xac, 0x54, 0x80, 0xdb, - 0xa2, 0xb0, 0x72, 0x15, 0x8a, 0xf4, 0x72, 0xd4, 0x94, 0xfc, 0x6b, 0x4e, 0x34, 0x11, 0xa2, 0x78, - 0xe1, 0x30, 0x9c, 0x76, 0x47, 0x77, 0x47, 0xa9, 0x7f, 0x7f, 0x23, 0x0a, 0x07, 0x87, 0xf0, 0xc2, - 0xe1, 0x1f, 0x77, 0x30, 0xe9, 0xf6, 0x23, 0x30, 0x7c, 0x53, 0x14, 0x0e, 0x81, 0xe1, 0x14, 0x62, - 0x60, 0x18, 0x81, 0xe2, 0x6f, 0x05, 0x85, 0xc0, 0x10, 0x8a, 0x8f, 0x87, 0x8d, 0xd6, 0xc5, 0x2d, - 0xd3, 0xf3, 0x5d, 0x36, 0x0a, 0x3f, 0x98, 0xea, 0x5b, 0xef, 0xf6, 0x0e, 0x61, 0x6a, 0x04, 0x5a, - 0xbe, 0x09, 0x93, 0x7d, 0x23, 0x06, 0x8a, 0xfb, 0x45, 0x5f, 0xf9, 0xcc, 0xfb, 0xbc, 0x18, 0xf5, - 0x4e, 0x18, 0xe5, 0x6d, 0xb2, 0xee, 0xbd, 0x73, 0x40, 0x3c, 0xd9, 0x6b, 0xef, 0x07, 0x4b, 0xdf, - 0x33, 0x06, 0x94, 0x5f, 0x80, 0x89, 0x9e, 0x19, 0x20, 0x9e, 0xea, 0x17, 0x39, 0x55, 0x21, 0x3a, - 0x02, 0x94, 0x57, 0x21, 0x45, 0xfa, 0x79, 0x3c, 0xfc, 0x97, 0x38, 0x9c, 0x9a, 0x97, 0x3f, 0x0a, - 0x59, 0xd1, 0xc7, 0xe3, 0xa1, 0xbf, 0xcc, 0xa1, 0x01, 0x84, 0xc0, 0x45, 0x0f, 0x8f, 0x87, 0xff, - 0x8a, 0x80, 0x0b, 0x08, 0x81, 0x8f, 0x1e, 0xc2, 0xbf, 0xff, 0x5c, 0x8a, 0xd7, 0x61, 0x11, 0xbb, - 0xeb, 0x30, 0xce, 0x9b, 0x77, 0x3c, 0xfa, 0xb3, 0xfc, 0xe6, 0x02, 0x51, 0xbe, 0x02, 0xe9, 0x11, - 0x03, 0xfe, 0xab, 0x1c, 0xca, 0xec, 0xcb, 0xeb, 0x90, 0x8f, 0x34, 0xec, 0x78, 0xf8, 0xaf, 0x71, - 0x78, 0x14, 0x45, 0x5c, 0xe7, 0x0d, 0x3b, 0x9e, 0xe0, 0xd7, 0x85, 0xeb, 0x1c, 0x41, 0xc2, 0x26, - 0x7a, 0x75, 0x3c, 0xfa, 0x37, 0x44, 0xd4, 0x05, 0xa4, 0xfc, 0x3c, 0xe4, 0x82, 0xfa, 0x1b, 0x8f, - 0xff, 0x4d, 0x8e, 0x0f, 0x31, 0x24, 0x02, 0x91, 0xfa, 0x1f, 0x4f, 0xf1, 0x5b, 0x22, 0x02, 0x11, - 0x14, 0xd9, 0x46, 0xfd, 0x3d, 0x3d, 0x9e, 0xe9, 0xb7, 0xc5, 0x36, 0xea, 0x6b, 0xe9, 0x64, 0x35, - 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x1d, 0xb1, 0x9a, 0xd4, 0x9e, 0xb8, 0xd1, 0xdf, 0x24, 0xe3, 0x39, - 0x7e, 0x4f, 0xb8, 0xd1, 0xd7, 0x23, 0xcb, 0xfb, 0x80, 0x06, 0x1b, 0x64, 0x3c, 0xdf, 0xe7, 0x39, - 0xdf, 0xd4, 0x40, 0x7f, 0x2c, 0x7f, 0x12, 0xce, 0x0d, 0x6f, 0x8e, 0xf1, 0xac, 0x5f, 0x78, 0xbf, - 0xef, 0x75, 0x26, 0xda, 0x1b, 0xcb, 0x07, 0x61, 0x95, 0x8d, 0x36, 0xc6, 0x78, 0xda, 0xd7, 0xdf, - 0xef, 0x2d, 0xb4, 0xd1, 0xbe, 0x58, 0xae, 0x00, 0x84, 0x3d, 0x29, 0x9e, 0xeb, 0x0d, 0xce, 0x15, - 0x01, 0x91, 0xad, 0xc1, 0x5b, 0x52, 0x3c, 0xfe, 0x4b, 0x62, 0x6b, 0x70, 0x04, 0xd9, 0x1a, 0xa2, - 0x1b, 0xc5, 0xa3, 0xdf, 0x14, 0x5b, 0x43, 0x40, 0xca, 0xd7, 0x21, 0x6b, 0x77, 0x2d, 0x8b, 0xe4, - 0x16, 0x7a, 0xf0, 0x47, 0x36, 0xca, 0xbf, 0xdd, 0xe7, 0x60, 0x01, 0x28, 0xaf, 0x42, 0x1a, 0xb7, - 0xeb, 0xb8, 0x11, 0x87, 0xfc, 0xf7, 0xfb, 0xa2, 0x9e, 0x10, 0xeb, 0xf2, 0xf3, 0x00, 0xec, 0x65, - 0x9a, 0xfe, 0xc6, 0x12, 0x83, 0xfd, 0x8f, 0xfb, 0xfc, 0xf7, 0xfb, 0x10, 0x12, 0x12, 0xb0, 0xaf, - 0x01, 0x1e, 0x4c, 0xf0, 0x6e, 0x2f, 0x01, 0x7d, 0x01, 0xbf, 0x06, 0xe3, 0xb7, 0x3c, 0xc7, 0xf6, - 0xf5, 0x56, 0x1c, 0xfa, 0x3f, 0x39, 0x5a, 0xd8, 0x93, 0x80, 0xb5, 0x1d, 0x17, 0xfb, 0x7a, 0xcb, - 0x8b, 0xc3, 0xfe, 0x17, 0xc7, 0x06, 0x00, 0x02, 0x36, 0x74, 0xcf, 0x1f, 0xe5, 0xb9, 0xff, 0x5b, - 0x80, 0x05, 0x80, 0x38, 0x4d, 0xfe, 0xbf, 0x8d, 0x8f, 0xe3, 0xb0, 0xef, 0x09, 0xa7, 0xb9, 0x7d, - 0xf9, 0xa3, 0x90, 0x23, 0xff, 0xb2, 0x6f, 0x5a, 0x62, 0xc0, 0xff, 0xc3, 0xc1, 0x21, 0x82, 0xdc, - 0xd9, 0xf3, 0x1b, 0xbe, 0x19, 0x1f, 0xec, 0xff, 0xe5, 0x2b, 0x2d, 0xec, 0xcb, 0x15, 0xc8, 0x7b, - 0x7e, 0xa3, 0xd1, 0xe5, 0x13, 0x4d, 0x0c, 0xfc, 0x87, 0xf7, 0x83, 0x97, 0xdc, 0x00, 0xb3, 0x76, - 0x71, 0xf8, 0x79, 0x1d, 0x6c, 0x3a, 0x9b, 0x0e, 0x3b, 0xa9, 0x83, 0xdf, 0x4d, 0x83, 0x62, 0x38, - 0xed, 0xba, 0xe3, 0x5d, 0xb2, 0xb1, 0xe9, 0x1f, 0x61, 0xf7, 0x92, 0x63, 0x73, 0x5b, 0x94, 0x74, - 0x6c, 0x3c, 0x7b, 0xb6, 0x43, 0xb9, 0xf9, 0xf3, 0x90, 0xae, 0x75, 0xeb, 0xf5, 0x63, 0x24, 0x43, - 0xd2, 0xeb, 0xd6, 0xf9, 0x37, 0x17, 0xe4, 0xdf, 0xf9, 0xef, 0x25, 0x21, 0x5f, 0xd3, 0xdb, 0x1d, - 0x0b, 0xef, 0xd9, 0x78, 0xaf, 0x89, 0x14, 0xc8, 0xd0, 0x67, 0x78, 0x8e, 0x1a, 0x49, 0x37, 0xc6, - 0x54, 0x7e, 0x1d, 0x68, 0x96, 0xe8, 0x61, 0x65, 0x22, 0xd0, 0x2c, 0x05, 0x9a, 0x65, 0x76, 0x56, - 0x19, 0x68, 0x96, 0x03, 0xcd, 0x0a, 0x3d, 0xb1, 0x4c, 0x06, 0x9a, 0x95, 0x40, 0xb3, 0x4a, 0x4f, - 0xe4, 0x27, 0x02, 0xcd, 0x6a, 0xa0, 0xb9, 0x4c, 0xcf, 0xe0, 0x53, 0x81, 0xe6, 0x72, 0xa0, 0xb9, - 0x42, 0x8f, 0xde, 0xa7, 0x02, 0xcd, 0x95, 0x40, 0x73, 0x95, 0x1e, 0xb7, 0xa3, 0x40, 0x73, 0x35, - 0xd0, 0x5c, 0xa3, 0xdf, 0x55, 0x8c, 0x07, 0x9a, 0x6b, 0x68, 0x16, 0xc6, 0xd9, 0x93, 0x3d, 0x4b, - 0x7f, 0xce, 0x9c, 0xbc, 0x31, 0xa6, 0x0a, 0x41, 0xa8, 0x7b, 0x8e, 0x7e, 0x3b, 0x91, 0x09, 0x75, - 0xcf, 0x85, 0xba, 0x25, 0xfa, 0x11, 0xb1, 0x1c, 0xea, 0x96, 0x42, 0xdd, 0xb2, 0x32, 0x41, 0x96, - 0x3e, 0xd4, 0x2d, 0x87, 0xba, 0x15, 0xa5, 0x48, 0xe2, 0x1f, 0xea, 0x56, 0x42, 0xdd, 0xaa, 0x32, - 0x39, 0x27, 0x2d, 0x14, 0x42, 0xdd, 0x2a, 0x7a, 0x06, 0xf2, 0x5e, 0xb7, 0xae, 0xf1, 0x5f, 0xdf, - 0xe9, 0x37, 0x1a, 0xf9, 0x25, 0x58, 0x24, 0x19, 0x41, 0x17, 0xf5, 0xc6, 0x98, 0x0a, 0x5e, 0xb7, - 0xce, 0x6b, 0xe3, 0x5a, 0x01, 0xe8, 0x51, 0x82, 0x46, 0x3f, 0x4e, 0x5c, 0xdb, 0x78, 0xfb, 0x5e, - 0x69, 0xec, 0x3b, 0xf7, 0x4a, 0x63, 0xff, 0x7c, 0xaf, 0x34, 0xf6, 0xfd, 0x7b, 0x25, 0xe9, 0xbd, - 0x7b, 0x25, 0xe9, 0x47, 0xf7, 0x4a, 0xd2, 0xdd, 0x93, 0x92, 0xf4, 0xd5, 0x93, 0x92, 0xf4, 0xf5, - 0x93, 0x92, 0xf4, 0xad, 0x93, 0x92, 0xf4, 0xf6, 0x49, 0x69, 0xec, 0x3b, 0x27, 0xa5, 0xb1, 0xef, - 0x9f, 0x94, 0xa4, 0x1f, 0x9c, 0x94, 0xc6, 0xde, 0x3b, 0x29, 0x49, 0x3f, 0x3a, 0x29, 0x8d, 0xdd, - 0xfd, 0x97, 0xd2, 0x58, 0x3d, 0x43, 0xd3, 0x68, 0xf9, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x5f, - 0xe7, 0x20, 0x4a, 0x13, 0x30, 0x00, 0x00, + // 3862 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0xaf, 0x22, 0x0f, 0x29, 0x12, 0x82, 0xe4, 0x5d, 0xac, 0x1c, 0x73, 0xb5, 0x8a, 0x1d, + 0xcb, 0x76, 0x2d, 0xd9, 0xda, 0xd5, 0x5e, 0xb8, 0x4d, 0x3c, 0x14, 0xc5, 0xd5, 0x72, 0x2b, 0x89, + 0x0c, 0x28, 0xc5, 0xeb, 0xf4, 0x01, 0x03, 0x82, 0x3f, 0x29, 0xec, 0x82, 0x00, 0x03, 0x80, 0xbb, + 0x96, 0x9f, 0xb6, 0xe3, 0x5e, 0x26, 0xd3, 0xe9, 0xbd, 0xd3, 0x26, 0xae, 0xe3, 0xb6, 0x99, 0x69, + 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, 0x1f, + 0xf2, 0xe0, 0x55, 0x3c, 0xd3, 0xb4, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xe3, 0x97, 0xcc, 0x7f, + 0x03, 0xc0, 0x8b, 0x04, 0x2a, 0x33, 0x8e, 0x9f, 0x24, 0x9c, 0x73, 0xbe, 0x0f, 0x07, 0xe7, 0x3f, + 0xff, 0x39, 0x07, 0x3f, 0x01, 0xdf, 0x5f, 0x87, 0xc5, 0x8e, 0x65, 0x75, 0x0c, 0xb4, 0xda, 0xb3, + 0x2d, 0xd7, 0x6a, 0xf6, 0xdb, 0xab, 0x2d, 0xe4, 0x68, 0xb6, 0xde, 0x73, 0x2d, 0x7b, 0x85, 0xc8, + 0xc4, 0x3c, 0xb5, 0x58, 0xe1, 0x16, 0x4b, 0x3b, 0x30, 0x7b, 0x43, 0x37, 0xd0, 0xa6, 0x67, 0xd8, + 0x40, 0xae, 0x78, 0x15, 0xe2, 0x6d, 0xdd, 0x40, 0x52, 0x64, 0x31, 0xb6, 0x9c, 0x59, 0x7b, 0x7c, + 0x65, 0x08, 0xb4, 0x32, 0x88, 0xa8, 0x63, 0xb1, 0x4c, 0x10, 0x4b, 0xef, 0xc4, 0x61, 0x6e, 0x8c, + 0x56, 0x14, 0x21, 0x6e, 0xaa, 0x5d, 0xcc, 0x18, 0x59, 0x4e, 0xcb, 0xe4, 0x7f, 0x51, 0x82, 0xe9, + 0x9e, 0xaa, 0xdd, 0x55, 0x3b, 0x48, 0x8a, 0x12, 0x31, 0xbf, 0x14, 0x0b, 0x00, 0x2d, 0xd4, 0x43, + 0x66, 0x0b, 0x99, 0xda, 0xa1, 0x14, 0x5b, 0x8c, 0x2d, 0xa7, 0xe5, 0x80, 0x44, 0x7c, 0x06, 0x66, + 0x7b, 0xfd, 0xa6, 0xa1, 0x6b, 0x4a, 0xc0, 0x0c, 0x16, 0x63, 0xcb, 0x09, 0x59, 0xa0, 0x8a, 0x4d, + 0xdf, 0xf8, 0x49, 0xc8, 0xdf, 0x47, 0xea, 0xdd, 0xa0, 0x69, 0x86, 0x98, 0xe6, 0xb0, 0x38, 0x60, + 0x58, 0x86, 0x6c, 0x17, 0x39, 0x8e, 0xda, 0x41, 0x8a, 0x7b, 0xd8, 0x43, 0x52, 0x9c, 0x3c, 0xfd, + 0xe2, 0xc8, 0xd3, 0x0f, 0x3f, 0x79, 0x86, 0xa1, 0xf6, 0x0e, 0x7b, 0x48, 0x2c, 0x41, 0x1a, 0x99, + 0xfd, 0x2e, 0x65, 0x48, 0x1c, 0x13, 0xbf, 0x8a, 0xd9, 0xef, 0x0e, 0xb3, 0xa4, 0x30, 0x8c, 0x51, + 0x4c, 0x3b, 0xc8, 0xbe, 0xa7, 0x6b, 0x48, 0x4a, 0x12, 0x82, 0x27, 0x47, 0x08, 0x1a, 0x54, 0x3f, + 0xcc, 0xc1, 0x71, 0x62, 0x19, 0xd2, 0xe8, 0x65, 0x17, 0x99, 0x8e, 0x6e, 0x99, 0xd2, 0x34, 0x21, + 0x79, 0x62, 0xcc, 0x2a, 0x22, 0xa3, 0x35, 0x4c, 0xe1, 0xe3, 0xc4, 0xcb, 0x30, 0x6d, 0xf5, 0x5c, + 0xdd, 0x32, 0x1d, 0x29, 0xb5, 0x18, 0x59, 0xce, 0xac, 0x7d, 0x6c, 0x6c, 0x22, 0xd4, 0xa8, 0x8d, + 0xcc, 0x8d, 0xc5, 0x2a, 0x08, 0x8e, 0xd5, 0xb7, 0x35, 0xa4, 0x68, 0x56, 0x0b, 0x29, 0xba, 0xd9, + 0xb6, 0xa4, 0x34, 0x21, 0x38, 0x3f, 0xfa, 0x20, 0xc4, 0xb0, 0x6c, 0xb5, 0x50, 0xd5, 0x6c, 0x5b, + 0x72, 0xce, 0x19, 0xb8, 0x16, 0xcf, 0x40, 0xd2, 0x39, 0x34, 0x5d, 0xf5, 0x65, 0x29, 0x4b, 0x32, + 0x84, 0x5d, 0x2d, 0xfd, 0x7f, 0x02, 0xf2, 0x93, 0xa4, 0xd8, 0x75, 0x48, 0xb4, 0xf1, 0x53, 0x4a, + 0xd1, 0xd3, 0xc4, 0x80, 0x62, 0x06, 0x83, 0x98, 0xfc, 0x09, 0x83, 0x58, 0x82, 0x8c, 0x89, 0x1c, + 0x17, 0xb5, 0x68, 0x46, 0xc4, 0x26, 0xcc, 0x29, 0xa0, 0xa0, 0xd1, 0x94, 0x8a, 0xff, 0x44, 0x29, + 0x75, 0x1b, 0xf2, 0x9e, 0x4b, 0x8a, 0xad, 0x9a, 0x1d, 0x9e, 0x9b, 0xab, 0x61, 0x9e, 0xac, 0x54, + 0x38, 0x4e, 0xc6, 0x30, 0x39, 0x87, 0x06, 0xae, 0xc5, 0x4d, 0x00, 0xcb, 0x44, 0x56, 0x5b, 0x69, + 0x21, 0xcd, 0x90, 0x52, 0xc7, 0x44, 0xa9, 0x86, 0x4d, 0x46, 0xa2, 0x64, 0x51, 0xa9, 0x66, 0x88, + 0xd7, 0xfc, 0x54, 0x9b, 0x3e, 0x26, 0x53, 0x76, 0xe8, 0x26, 0x1b, 0xc9, 0xb6, 0x7d, 0xc8, 0xd9, + 0x08, 0xe7, 0x3d, 0x6a, 0xb1, 0x27, 0x4b, 0x13, 0x27, 0x56, 0x42, 0x9f, 0x4c, 0x66, 0x30, 0xfa, + 0x60, 0x33, 0x76, 0xf0, 0x52, 0xfc, 0x38, 0x78, 0x02, 0x85, 0xa4, 0x15, 0x90, 0x2a, 0x94, 0xe5, + 0xc2, 0x5d, 0xb5, 0x8b, 0x16, 0xae, 0x42, 0x6e, 0x30, 0x3c, 0xe2, 0x3c, 0x24, 0x1c, 0x57, 0xb5, + 0x5d, 0x92, 0x85, 0x09, 0x99, 0x5e, 0x88, 0x02, 0xc4, 0x90, 0xd9, 0x22, 0x55, 0x2e, 0x21, 0xe3, + 0x7f, 0x17, 0xae, 0xc0, 0xcc, 0xc0, 0xed, 0x27, 0x05, 0x2e, 0x7d, 0x21, 0x09, 0xf3, 0xe3, 0x72, + 0x6e, 0x6c, 0xfa, 0x9f, 0x81, 0xa4, 0xd9, 0xef, 0x36, 0x91, 0x2d, 0xc5, 0x08, 0x03, 0xbb, 0x12, + 0x4b, 0x90, 0x30, 0xd4, 0x26, 0x32, 0xa4, 0xf8, 0x62, 0x64, 0x39, 0xb7, 0xf6, 0xcc, 0x44, 0x59, + 0xbd, 0xb2, 0x8d, 0x21, 0x32, 0x45, 0x8a, 0x9f, 0x82, 0x38, 0x2b, 0x71, 0x98, 0xe1, 0xe9, 0xc9, + 0x18, 0x70, 0x2e, 0xca, 0x04, 0x27, 0x3e, 0x0a, 0x69, 0xfc, 0x97, 0xc6, 0x36, 0x49, 0x7c, 0x4e, + 0x61, 0x01, 0x8e, 0xab, 0xb8, 0x00, 0x29, 0x92, 0x66, 0x2d, 0xc4, 0x5b, 0x83, 0x77, 0x8d, 0x17, + 0xa6, 0x85, 0xda, 0x6a, 0xdf, 0x70, 0x95, 0x7b, 0xaa, 0xd1, 0x47, 0x24, 0x61, 0xd2, 0x72, 0x96, + 0x09, 0x3f, 0x83, 0x65, 0xe2, 0x79, 0xc8, 0xd0, 0xac, 0xd4, 0xcd, 0x16, 0x7a, 0x99, 0x54, 0x9f, + 0x84, 0x4c, 0x13, 0xb5, 0x8a, 0x25, 0xf8, 0xf6, 0x77, 0x1c, 0xcb, 0xe4, 0x4b, 0x4b, 0x6e, 0x81, + 0x05, 0xe4, 0xf6, 0x57, 0x86, 0x0b, 0xdf, 0x63, 0xe3, 0x1f, 0x6f, 0x38, 0x17, 0x97, 0xbe, 0x19, + 0x85, 0x38, 0xd9, 0x6f, 0x79, 0xc8, 0xec, 0xbd, 0x54, 0xaf, 0x28, 0x9b, 0xb5, 0xfd, 0x8d, 0xed, + 0x8a, 0x10, 0x11, 0x73, 0x00, 0x44, 0x70, 0x63, 0xbb, 0x56, 0xda, 0x13, 0xa2, 0xde, 0x75, 0x75, + 0x77, 0xef, 0xf2, 0x25, 0x21, 0xe6, 0x01, 0xf6, 0xa9, 0x20, 0x1e, 0x34, 0xb8, 0xb8, 0x26, 0x24, + 0x44, 0x01, 0xb2, 0x94, 0xa0, 0x7a, 0xbb, 0xb2, 0x79, 0xf9, 0x92, 0x90, 0x1c, 0x94, 0x5c, 0x5c, + 0x13, 0xa6, 0xc5, 0x19, 0x48, 0x13, 0xc9, 0x46, 0xad, 0xb6, 0x2d, 0xa4, 0x3c, 0xce, 0xc6, 0x9e, + 0x5c, 0xdd, 0xdd, 0x12, 0xd2, 0x1e, 0xe7, 0x96, 0x5c, 0xdb, 0xaf, 0x0b, 0xe0, 0x31, 0xec, 0x54, + 0x1a, 0x8d, 0xd2, 0x56, 0x45, 0xc8, 0x78, 0x16, 0x1b, 0x2f, 0xed, 0x55, 0x1a, 0x42, 0x76, 0xc0, + 0xad, 0x8b, 0x6b, 0xc2, 0x8c, 0x77, 0x8b, 0xca, 0xee, 0xfe, 0x8e, 0x90, 0x13, 0x67, 0x61, 0x86, + 0xde, 0x82, 0x3b, 0x91, 0x1f, 0x12, 0x5d, 0xbe, 0x24, 0x08, 0xbe, 0x23, 0x94, 0x65, 0x76, 0x40, + 0x70, 0xf9, 0x92, 0x20, 0x2e, 0x95, 0x21, 0x41, 0xb2, 0x4b, 0x14, 0x21, 0xb7, 0x5d, 0xda, 0xa8, + 0x6c, 0x2b, 0xb5, 0xfa, 0x5e, 0xb5, 0xb6, 0x5b, 0xda, 0x16, 0x22, 0xbe, 0x4c, 0xae, 0x7c, 0x7a, + 0xbf, 0x2a, 0x57, 0x36, 0x85, 0x68, 0x50, 0x56, 0xaf, 0x94, 0xf6, 0x2a, 0x9b, 0x42, 0x6c, 0x49, + 0x83, 0xf9, 0x71, 0x75, 0x66, 0xec, 0xce, 0x08, 0x2c, 0x71, 0xf4, 0x98, 0x25, 0x26, 0x5c, 0x23, + 0x4b, 0xfc, 0xe5, 0x08, 0xcc, 0x8d, 0xa9, 0xb5, 0x63, 0x6f, 0xf2, 0x02, 0x24, 0x68, 0x8a, 0xd2, + 0xee, 0xf3, 0xd4, 0xd8, 0xa2, 0x4d, 0x12, 0x76, 0xa4, 0x03, 0x11, 0x5c, 0xb0, 0x03, 0xc7, 0x8e, + 0xe9, 0xc0, 0x98, 0x62, 0xc4, 0xc9, 0x57, 0x23, 0x20, 0x1d, 0xc7, 0x1d, 0x52, 0x28, 0xa2, 0x03, + 0x85, 0xe2, 0xfa, 0xb0, 0x03, 0x17, 0x8e, 0x7f, 0x86, 0x11, 0x2f, 0xde, 0x8c, 0xc0, 0x99, 0xf1, + 0x83, 0xca, 0x58, 0x1f, 0x3e, 0x05, 0xc9, 0x2e, 0x72, 0x0f, 0x2c, 0xde, 0xac, 0x3f, 0x31, 0xa6, + 0x05, 0x60, 0xf5, 0x70, 0xac, 0x18, 0x2a, 0xd8, 0x43, 0x62, 0xc7, 0x4d, 0x1b, 0xd4, 0x9b, 0x11, + 0x4f, 0x3f, 0x1f, 0x85, 0x47, 0xc6, 0x92, 0x8f, 0x75, 0xf4, 0x31, 0x00, 0xdd, 0xec, 0xf5, 0x5d, + 0xda, 0x90, 0x69, 0x7d, 0x4a, 0x13, 0x09, 0xd9, 0xfb, 0xb8, 0xf6, 0xf4, 0x5d, 0x4f, 0x1f, 0x23, + 0x7a, 0xa0, 0x22, 0x62, 0x70, 0xd5, 0x77, 0x34, 0x4e, 0x1c, 0x2d, 0x1c, 0xf3, 0xa4, 0x23, 0xbd, + 0xee, 0x39, 0x10, 0x34, 0x43, 0x47, 0xa6, 0xab, 0x38, 0xae, 0x8d, 0xd4, 0xae, 0x6e, 0x76, 0x48, + 0x01, 0x4e, 0x15, 0x13, 0x6d, 0xd5, 0x70, 0x90, 0x9c, 0xa7, 0xea, 0x06, 0xd7, 0x62, 0x04, 0xe9, + 0x32, 0x76, 0x00, 0x91, 0x1c, 0x40, 0x50, 0xb5, 0x87, 0x58, 0xfa, 0xda, 0x34, 0x64, 0x02, 0x63, + 0x9d, 0x78, 0x01, 0xb2, 0x77, 0xd4, 0x7b, 0xaa, 0xc2, 0x47, 0x75, 0x1a, 0x89, 0x0c, 0x96, 0xd5, + 0xd9, 0xb8, 0xfe, 0x1c, 0xcc, 0x13, 0x13, 0xab, 0xef, 0x22, 0x5b, 0xd1, 0x0c, 0xd5, 0x71, 0x48, + 0xd0, 0x52, 0xc4, 0x54, 0xc4, 0xba, 0x1a, 0x56, 0x95, 0xb9, 0x46, 0x5c, 0x87, 0x39, 0x82, 0xe8, + 0xf6, 0x0d, 0x57, 0xef, 0x19, 0x48, 0xc1, 0x2f, 0x0f, 0x0e, 0x29, 0xc4, 0x9e, 0x67, 0xb3, 0xd8, + 0x62, 0x87, 0x19, 0x60, 0x8f, 0x1c, 0x71, 0x13, 0x1e, 0x23, 0xb0, 0x0e, 0x32, 0x91, 0xad, 0xba, + 0x48, 0x41, 0x9f, 0xeb, 0xab, 0x86, 0xa3, 0xa8, 0x66, 0x4b, 0x39, 0x50, 0x9d, 0x03, 0x69, 0x1e, + 0x13, 0x6c, 0x44, 0xa5, 0x88, 0x7c, 0x0e, 0x1b, 0x6e, 0x31, 0xbb, 0x0a, 0x31, 0x2b, 0x99, 0xad, + 0x9b, 0xaa, 0x73, 0x20, 0x16, 0xe1, 0x0c, 0x61, 0x71, 0x5c, 0x5b, 0x37, 0x3b, 0x8a, 0x76, 0x80, + 0xb4, 0xbb, 0x4a, 0xdf, 0x6d, 0x5f, 0x95, 0x1e, 0x0d, 0xde, 0x9f, 0x78, 0xd8, 0x20, 0x36, 0x65, + 0x6c, 0xb2, 0xef, 0xb6, 0xaf, 0x8a, 0x0d, 0xc8, 0xe2, 0xc5, 0xe8, 0xea, 0xaf, 0x20, 0xa5, 0x6d, + 0xd9, 0xa4, 0xb3, 0xe4, 0xc6, 0xec, 0xec, 0x40, 0x04, 0x57, 0x6a, 0x0c, 0xb0, 0x63, 0xb5, 0x50, + 0x31, 0xd1, 0xa8, 0x57, 0x2a, 0x9b, 0x72, 0x86, 0xb3, 0xdc, 0xb0, 0x6c, 0x9c, 0x50, 0x1d, 0xcb, + 0x0b, 0x70, 0x86, 0x26, 0x54, 0xc7, 0xe2, 0xe1, 0x5d, 0x87, 0x39, 0x4d, 0xa3, 0xcf, 0xac, 0x6b, + 0x0a, 0x1b, 0xf1, 0x1d, 0x49, 0x18, 0x08, 0x96, 0xa6, 0x6d, 0x51, 0x03, 0x96, 0xe3, 0x8e, 0x78, + 0x0d, 0x1e, 0xf1, 0x83, 0x15, 0x04, 0xce, 0x8e, 0x3c, 0xe5, 0x30, 0x74, 0x1d, 0xe6, 0x7a, 0x87, + 0xa3, 0x40, 0x71, 0xe0, 0x8e, 0xbd, 0xc3, 0x61, 0xd8, 0x13, 0xe4, 0xb5, 0xcd, 0x46, 0x9a, 0xea, + 0xa2, 0x96, 0x74, 0x36, 0x68, 0x1d, 0x50, 0x88, 0xab, 0x20, 0x68, 0x9a, 0x82, 0x4c, 0xb5, 0x69, + 0x20, 0x45, 0xb5, 0x91, 0xa9, 0x3a, 0xd2, 0xf9, 0xa0, 0x71, 0x4e, 0xd3, 0x2a, 0x44, 0x5b, 0x22, + 0x4a, 0xf1, 0x69, 0x98, 0xb5, 0x9a, 0x77, 0x34, 0x9a, 0x59, 0x4a, 0xcf, 0x46, 0x6d, 0xfd, 0x65, + 0xe9, 0x71, 0x12, 0xa6, 0x3c, 0x56, 0x90, 0xbc, 0xaa, 0x13, 0xb1, 0xf8, 0x14, 0x08, 0x9a, 0x73, + 0xa0, 0xda, 0x3d, 0xd2, 0xda, 0x9d, 0x9e, 0xaa, 0x21, 0xe9, 0x09, 0x6a, 0x4a, 0xe5, 0xbb, 0x5c, + 0x8c, 0x33, 0xdb, 0xb9, 0xaf, 0xb7, 0x5d, 0xce, 0xf8, 0x24, 0xcd, 0x6c, 0x22, 0x63, 0x6c, 0xb7, + 0x61, 0xbe, 0x6f, 0xea, 0xa6, 0x8b, 0xec, 0x9e, 0x8d, 0xf0, 0x10, 0x4f, 0x77, 0xa2, 0xf4, 0x6f, + 0xd3, 0xc7, 0x8c, 0xe1, 0xfb, 0x41, 0x6b, 0x9a, 0x00, 0xf2, 0x5c, 0x7f, 0x54, 0xb8, 0x54, 0x84, + 0x6c, 0x30, 0x2f, 0xc4, 0x34, 0xd0, 0xcc, 0x10, 0x22, 0xb8, 0xc7, 0x96, 0x6b, 0x9b, 0xb8, 0x3b, + 0x7e, 0xb6, 0x22, 0x44, 0x71, 0x97, 0xde, 0xae, 0xee, 0x55, 0x14, 0x79, 0x7f, 0x77, 0xaf, 0xba, + 0x53, 0x11, 0x62, 0x4f, 0xa7, 0x53, 0x3f, 0x98, 0x16, 0x1e, 0x3c, 0x78, 0xf0, 0x20, 0xba, 0xf4, + 0xed, 0x28, 0xe4, 0x06, 0x27, 0x63, 0xf1, 0x67, 0xe1, 0x2c, 0x7f, 0x8d, 0x75, 0x90, 0xab, 0xdc, + 0xd7, 0x6d, 0x92, 0xaa, 0x5d, 0x95, 0xce, 0x96, 0x5e, 0x94, 0xe7, 0x99, 0x55, 0x03, 0xb9, 0x2f, + 0xea, 0x36, 0x4e, 0xc4, 0xae, 0xea, 0x8a, 0xdb, 0x70, 0xde, 0xb4, 0x14, 0xc7, 0x55, 0xcd, 0x96, + 0x6a, 0xb7, 0x14, 0xff, 0x00, 0x41, 0x51, 0x35, 0x0d, 0x39, 0x8e, 0x45, 0x5b, 0x84, 0xc7, 0xf2, + 0x31, 0xd3, 0x6a, 0x30, 0x63, 0xbf, 0x76, 0x96, 0x98, 0xe9, 0x50, 0x46, 0xc4, 0x8e, 0xcb, 0x88, + 0x47, 0x21, 0xdd, 0x55, 0x7b, 0x0a, 0x32, 0x5d, 0xfb, 0x90, 0xcc, 0x73, 0x29, 0x39, 0xd5, 0x55, + 0x7b, 0x15, 0x7c, 0xfd, 0xe1, 0xad, 0x41, 0x30, 0x8e, 0xdf, 0x8b, 0x41, 0x36, 0x38, 0xd3, 0xe1, + 0x11, 0x59, 0x23, 0xf5, 0x3b, 0x42, 0x76, 0xf8, 0xc7, 0x4f, 0x9c, 0x00, 0x57, 0xca, 0xb8, 0xb0, + 0x17, 0x93, 0x74, 0xd2, 0x92, 0x29, 0x12, 0x37, 0x55, 0xbc, 0xa7, 0x11, 0x9d, 0xdf, 0x53, 0x32, + 0xbb, 0x12, 0xb7, 0x20, 0x79, 0xc7, 0x21, 0xdc, 0x49, 0xc2, 0xfd, 0xf8, 0xc9, 0xdc, 0xb7, 0x1a, + 0x84, 0x3c, 0x7d, 0xab, 0xa1, 0xec, 0xd6, 0xe4, 0x9d, 0xd2, 0xb6, 0xcc, 0xe0, 0xe2, 0x39, 0x88, + 0x1b, 0xea, 0x2b, 0x87, 0x83, 0x2d, 0x80, 0x88, 0x26, 0x0d, 0xfc, 0x39, 0x88, 0xdf, 0x47, 0xea, + 0xdd, 0xc1, 0xc2, 0x4b, 0x44, 0x1f, 0x62, 0xea, 0xaf, 0x42, 0x82, 0xc4, 0x4b, 0x04, 0x60, 0x11, + 0x13, 0xa6, 0xc4, 0x14, 0xc4, 0xcb, 0x35, 0x19, 0xa7, 0xbf, 0x00, 0x59, 0x2a, 0x55, 0xea, 0xd5, + 0x4a, 0xb9, 0x22, 0x44, 0x97, 0xd6, 0x21, 0x49, 0x83, 0x80, 0xb7, 0x86, 0x17, 0x06, 0x61, 0x8a, + 0x5d, 0x32, 0x8e, 0x08, 0xd7, 0xee, 0xef, 0x6c, 0x54, 0x64, 0x21, 0x1a, 0x5c, 0x5e, 0x07, 0xb2, + 0xc1, 0x71, 0xee, 0xa7, 0x93, 0x53, 0xff, 0x10, 0x81, 0x4c, 0x60, 0x3c, 0xc3, 0x83, 0x81, 0x6a, + 0x18, 0xd6, 0x7d, 0x45, 0x35, 0x74, 0xd5, 0x61, 0x49, 0x01, 0x44, 0x54, 0xc2, 0x92, 0x49, 0x17, + 0xed, 0xa7, 0xe2, 0xfc, 0x1b, 0x11, 0x10, 0x86, 0x47, 0xbb, 0x21, 0x07, 0x23, 0x1f, 0xa9, 0x83, + 0xaf, 0x47, 0x20, 0x37, 0x38, 0xcf, 0x0d, 0xb9, 0x77, 0xe1, 0x23, 0x75, 0xef, 0xed, 0x28, 0xcc, + 0x0c, 0x4c, 0x71, 0x93, 0x7a, 0xf7, 0x39, 0x98, 0xd5, 0x5b, 0xa8, 0xdb, 0xb3, 0x5c, 0x64, 0x6a, + 0x87, 0x8a, 0x81, 0xee, 0x21, 0x43, 0x5a, 0x22, 0x85, 0x62, 0xf5, 0xe4, 0x39, 0x71, 0xa5, 0xea, + 0xe3, 0xb6, 0x31, 0xac, 0x38, 0x57, 0xdd, 0xac, 0xec, 0xd4, 0x6b, 0x7b, 0x95, 0xdd, 0xf2, 0x4b, + 0xca, 0xfe, 0xee, 0xcf, 0xed, 0xd6, 0x5e, 0xdc, 0x95, 0x05, 0x7d, 0xc8, 0xec, 0x43, 0xdc, 0xea, + 0x75, 0x10, 0x86, 0x9d, 0x12, 0xcf, 0xc2, 0x38, 0xb7, 0x84, 0x29, 0x71, 0x0e, 0xf2, 0xbb, 0x35, + 0xa5, 0x51, 0xdd, 0xac, 0x28, 0x95, 0x1b, 0x37, 0x2a, 0xe5, 0xbd, 0x06, 0x7d, 0x71, 0xf6, 0xac, + 0xf7, 0x06, 0x37, 0xf5, 0x6b, 0x31, 0x98, 0x1b, 0xe3, 0x89, 0x58, 0x62, 0x33, 0x3b, 0x7d, 0x8d, + 0x78, 0x76, 0x12, 0xef, 0x57, 0xf0, 0x54, 0x50, 0x57, 0x6d, 0x97, 0x8d, 0xf8, 0x4f, 0x01, 0x8e, + 0x92, 0xe9, 0xea, 0x6d, 0x1d, 0xd9, 0xec, 0x9c, 0x81, 0x0e, 0xf2, 0x79, 0x5f, 0x4e, 0x8f, 0x1a, + 0x7e, 0x06, 0xc4, 0x9e, 0xe5, 0xe8, 0xae, 0x7e, 0x0f, 0x29, 0xba, 0xc9, 0x0f, 0x25, 0xf0, 0x60, + 0x1f, 0x97, 0x05, 0xae, 0xa9, 0x9a, 0xae, 0x67, 0x6d, 0xa2, 0x8e, 0x3a, 0x64, 0x8d, 0x0b, 0x78, + 0x4c, 0x16, 0xb8, 0xc6, 0xb3, 0xbe, 0x00, 0xd9, 0x96, 0xd5, 0xc7, 0x63, 0x12, 0xb5, 0xc3, 0xfd, + 0x22, 0x22, 0x67, 0xa8, 0xcc, 0x33, 0x61, 0x73, 0xac, 0x7f, 0x1a, 0x92, 0x95, 0x33, 0x54, 0x46, + 0x4d, 0x9e, 0x84, 0xbc, 0xda, 0xe9, 0xd8, 0x98, 0x9c, 0x13, 0xd1, 0xc9, 0x3c, 0xe7, 0x89, 0x89, + 0xe1, 0xc2, 0x2d, 0x48, 0xf1, 0x38, 0xe0, 0x96, 0x8c, 0x23, 0xa1, 0xf4, 0xe8, 0x99, 0x54, 0x74, + 0x39, 0x2d, 0xa7, 0x4c, 0xae, 0xbc, 0x00, 0x59, 0xdd, 0x51, 0xfc, 0xc3, 0xd1, 0xe8, 0x62, 0x74, + 0x39, 0x25, 0x67, 0x74, 0xc7, 0x3b, 0x0d, 0x5b, 0x7a, 0x33, 0x0a, 0xb9, 0xc1, 0xc3, 0x5d, 0x71, + 0x13, 0x52, 0x86, 0xa5, 0xa9, 0x24, 0xb5, 0xe8, 0x2f, 0x0b, 0xcb, 0x21, 0xe7, 0xc1, 0x2b, 0xdb, + 0xcc, 0x5e, 0xf6, 0x90, 0x0b, 0xff, 0x12, 0x81, 0x14, 0x17, 0x8b, 0x67, 0x20, 0xde, 0x53, 0xdd, + 0x03, 0x42, 0x97, 0xd8, 0x88, 0x0a, 0x11, 0x99, 0x5c, 0x63, 0xb9, 0xd3, 0x53, 0x4d, 0x92, 0x02, + 0x4c, 0x8e, 0xaf, 0xf1, 0xba, 0x1a, 0x48, 0x6d, 0x91, 0xb1, 0xdf, 0xea, 0x76, 0x91, 0xe9, 0x3a, + 0x7c, 0x5d, 0x99, 0xbc, 0xcc, 0xc4, 0xe2, 0x33, 0x30, 0xeb, 0xda, 0xaa, 0x6e, 0x0c, 0xd8, 0xc6, + 0x89, 0xad, 0xc0, 0x15, 0x9e, 0x71, 0x11, 0xce, 0x71, 0xde, 0x16, 0x72, 0x55, 0xed, 0x00, 0xb5, + 0x7c, 0x50, 0x92, 0x9c, 0x1c, 0x9e, 0x65, 0x06, 0x9b, 0x4c, 0xcf, 0xb1, 0x4b, 0xdf, 0x8d, 0xc0, + 0x2c, 0x7f, 0x51, 0x69, 0x79, 0xc1, 0xda, 0x01, 0x50, 0x4d, 0xd3, 0x72, 0x83, 0xe1, 0x1a, 0x4d, + 0xe5, 0x11, 0xdc, 0x4a, 0xc9, 0x03, 0xc9, 0x01, 0x82, 0x85, 0x2e, 0x80, 0xaf, 0x39, 0x36, 0x6c, + 0xe7, 0x21, 0xc3, 0x4e, 0xee, 0xc9, 0xcf, 0x3f, 0xf4, 0xd5, 0x16, 0xa8, 0x08, 0xbf, 0xd1, 0x88, + 0xf3, 0x90, 0x68, 0xa2, 0x8e, 0x6e, 0xb2, 0xf3, 0x44, 0x7a, 0xc1, 0x4f, 0x29, 0xe3, 0xde, 0x29, + 0xe5, 0xc6, 0x6d, 0x98, 0xd3, 0xac, 0xee, 0xb0, 0xbb, 0x1b, 0xc2, 0xd0, 0xeb, 0xb5, 0x73, 0x33, + 0xf2, 0x59, 0xf0, 0x47, 0xcc, 0x2f, 0x47, 0x63, 0x5b, 0xf5, 0x8d, 0xaf, 0x46, 0x17, 0xb6, 0x28, + 0xae, 0xce, 0x1f, 0x53, 0x46, 0x6d, 0x03, 0x69, 0xd8, 0x75, 0xf8, 0xe1, 0x27, 0xe0, 0xd9, 0x8e, + 0xee, 0x1e, 0xf4, 0x9b, 0x2b, 0x9a, 0xd5, 0x5d, 0xed, 0x58, 0x1d, 0xcb, 0xff, 0xb9, 0x0b, 0x5f, + 0x91, 0x0b, 0xf2, 0x1f, 0xfb, 0xc9, 0x2b, 0xed, 0x49, 0x17, 0x42, 0x7f, 0x1f, 0x2b, 0xee, 0xc2, + 0x1c, 0x33, 0x56, 0xc8, 0x99, 0x3b, 0x7d, 0x35, 0x10, 0x4f, 0x3c, 0x77, 0x91, 0xbe, 0xf1, 0x0e, + 0xe9, 0xd5, 0xf2, 0x2c, 0x83, 0x62, 0x1d, 0x7d, 0x81, 0x28, 0xca, 0xf0, 0xc8, 0x00, 0x1f, 0xdd, + 0x97, 0xc8, 0x0e, 0x61, 0xfc, 0x36, 0x63, 0x9c, 0x0b, 0x30, 0x36, 0x18, 0xb4, 0x58, 0x86, 0x99, + 0xd3, 0x70, 0xfd, 0x13, 0xe3, 0xca, 0xa2, 0x20, 0xc9, 0x16, 0xe4, 0x09, 0x89, 0xd6, 0x77, 0x5c, + 0xab, 0x4b, 0x8a, 0xde, 0xc9, 0x34, 0xff, 0xfc, 0x0e, 0xdd, 0x28, 0x39, 0x0c, 0x2b, 0x7b, 0xa8, + 0x62, 0x11, 0xc8, 0xcf, 0x0c, 0x2d, 0xa4, 0x19, 0x21, 0x0c, 0x6f, 0x31, 0x47, 0x3c, 0xfb, 0xe2, + 0x67, 0x60, 0x1e, 0xff, 0x4f, 0x6a, 0x52, 0xd0, 0x93, 0xf0, 0x53, 0x26, 0xe9, 0xbb, 0xaf, 0xd2, + 0xbd, 0x38, 0xe7, 0x11, 0x04, 0x7c, 0x0a, 0xac, 0x62, 0x07, 0xb9, 0x2e, 0xb2, 0x1d, 0x45, 0x35, + 0xc6, 0xb9, 0x17, 0x78, 0x4d, 0x97, 0xbe, 0xf8, 0xee, 0xe0, 0x2a, 0x6e, 0x51, 0x64, 0xc9, 0x30, + 0x8a, 0xfb, 0x70, 0x76, 0x4c, 0x56, 0x4c, 0xc0, 0xf9, 0x1a, 0xe3, 0x9c, 0x1f, 0xc9, 0x0c, 0x4c, + 0x5b, 0x07, 0x2e, 0xf7, 0xd6, 0x72, 0x02, 0xce, 0x3f, 0x60, 0x9c, 0x22, 0xc3, 0xf2, 0x25, 0xc5, + 0x8c, 0xb7, 0x60, 0xf6, 0x1e, 0xb2, 0x9b, 0x96, 0xc3, 0x8e, 0x46, 0x26, 0xa0, 0x7b, 0x9d, 0xd1, + 0xe5, 0x19, 0x90, 0x9c, 0x95, 0x60, 0xae, 0x6b, 0x90, 0x6a, 0xab, 0x1a, 0x9a, 0x80, 0xe2, 0x4b, + 0x8c, 0x62, 0x1a, 0xdb, 0x63, 0x68, 0x09, 0xb2, 0x1d, 0x8b, 0xb5, 0xa5, 0x70, 0xf8, 0x1b, 0x0c, + 0x9e, 0xe1, 0x18, 0x46, 0xd1, 0xb3, 0x7a, 0x7d, 0x03, 0xf7, 0xac, 0x70, 0x8a, 0x3f, 0xe4, 0x14, + 0x1c, 0xc3, 0x28, 0x4e, 0x11, 0xd6, 0x3f, 0xe2, 0x14, 0x4e, 0x20, 0x9e, 0x2f, 0x40, 0xc6, 0x32, + 0x8d, 0x43, 0xcb, 0x9c, 0xc4, 0x89, 0x3f, 0x66, 0x0c, 0xc0, 0x20, 0x98, 0xe0, 0x3a, 0xa4, 0x27, + 0x5d, 0x88, 0x3f, 0x79, 0x97, 0x6f, 0x0f, 0xbe, 0x02, 0x5b, 0x90, 0xe7, 0x05, 0x4a, 0xb7, 0xcc, + 0x09, 0x28, 0xfe, 0x94, 0x51, 0xe4, 0x02, 0x30, 0xf6, 0x18, 0x2e, 0x72, 0xdc, 0x0e, 0x9a, 0x84, + 0xe4, 0x4d, 0xfe, 0x18, 0x0c, 0xc2, 0x42, 0xd9, 0x44, 0xa6, 0x76, 0x30, 0x19, 0xc3, 0x57, 0x78, + 0x28, 0x39, 0x06, 0x53, 0x94, 0x61, 0xa6, 0xab, 0xda, 0xce, 0x81, 0x6a, 0x4c, 0xb4, 0x1c, 0x7f, + 0xc6, 0x38, 0xb2, 0x1e, 0x88, 0x45, 0xa4, 0x6f, 0x9e, 0x86, 0xe6, 0xab, 0x3c, 0x22, 0x01, 0x18, + 0xdb, 0x7a, 0x8e, 0x4b, 0x0e, 0xa0, 0x4e, 0xc3, 0xf6, 0x35, 0xbe, 0xf5, 0x28, 0x76, 0x27, 0xc8, + 0x78, 0x1d, 0xd2, 0x8e, 0xfe, 0xca, 0x44, 0x34, 0x7f, 0xce, 0x57, 0x9a, 0x00, 0x30, 0xf8, 0x25, + 0x38, 0x37, 0xb6, 0x4d, 0x4c, 0x40, 0xf6, 0x17, 0x8c, 0xec, 0xcc, 0x98, 0x56, 0xc1, 0x4a, 0xc2, + 0x69, 0x29, 0xff, 0x92, 0x97, 0x04, 0x34, 0xc4, 0x55, 0xc7, 0x2f, 0x0a, 0x8e, 0xda, 0x3e, 0x5d, + 0xd4, 0xfe, 0x8a, 0x47, 0x8d, 0x62, 0x07, 0xa2, 0xb6, 0x07, 0x67, 0x18, 0xe3, 0xe9, 0xd6, 0xf5, + 0xeb, 0xbc, 0xb0, 0x52, 0xf4, 0xfe, 0xe0, 0xea, 0xfe, 0x3c, 0x2c, 0x78, 0xe1, 0xe4, 0x13, 0xa9, + 0xa3, 0x74, 0xd5, 0xde, 0x04, 0xcc, 0xdf, 0x60, 0xcc, 0xbc, 0xe2, 0x7b, 0x23, 0xad, 0xb3, 0xa3, + 0xf6, 0x30, 0xf9, 0x6d, 0x90, 0x38, 0x79, 0xdf, 0xb4, 0x91, 0x66, 0x75, 0x4c, 0xfd, 0x15, 0xd4, + 0x9a, 0x80, 0xfa, 0xaf, 0x87, 0x96, 0x6a, 0x3f, 0x00, 0xc7, 0xcc, 0x55, 0x10, 0xbc, 0x59, 0x45, + 0xd1, 0xbb, 0x3d, 0xcb, 0x76, 0x43, 0x18, 0xff, 0x86, 0xaf, 0x94, 0x87, 0xab, 0x12, 0x58, 0xb1, + 0x02, 0x39, 0x72, 0x39, 0x69, 0x4a, 0xfe, 0x2d, 0x23, 0x9a, 0xf1, 0x51, 0xac, 0x70, 0x68, 0x56, + 0xb7, 0xa7, 0xda, 0x93, 0xd4, 0xbf, 0xbf, 0xe3, 0x85, 0x83, 0x41, 0x58, 0xe1, 0x70, 0x0f, 0x7b, + 0x08, 0x77, 0xfb, 0x09, 0x18, 0xbe, 0xc9, 0x0b, 0x07, 0xc7, 0x30, 0x0a, 0x3e, 0x30, 0x4c, 0x40, + 0xf1, 0xf7, 0x9c, 0x82, 0x63, 0x30, 0xc5, 0xa7, 0xfd, 0x46, 0x6b, 0xa3, 0x8e, 0xee, 0xb8, 0x36, + 0x9d, 0x83, 0x4f, 0xa6, 0xfa, 0xd6, 0xbb, 0x83, 0x43, 0x98, 0x1c, 0x80, 0x16, 0x6f, 0x41, 0x7e, + 0x68, 0xc4, 0x10, 0xc3, 0xbe, 0x59, 0x90, 0x7e, 0xe1, 0x7d, 0x56, 0x8c, 0x06, 0x27, 0x8c, 0xe2, + 0x36, 0x5e, 0xf7, 0xc1, 0x39, 0x20, 0x9c, 0xec, 0xd5, 0xf7, 0xbd, 0xa5, 0x1f, 0x18, 0x03, 0x8a, + 0x37, 0x60, 0x66, 0x60, 0x06, 0x08, 0xa7, 0xfa, 0x45, 0x46, 0x95, 0x0d, 0x8e, 0x00, 0xc5, 0x75, + 0x88, 0xe3, 0x7e, 0x1e, 0x0e, 0xff, 0x25, 0x06, 0x27, 0xe6, 0xc5, 0x4f, 0x42, 0x8a, 0xf7, 0xf1, + 0x70, 0xe8, 0x2f, 0x33, 0xa8, 0x07, 0xc1, 0x70, 0xde, 0xc3, 0xc3, 0xe1, 0xbf, 0xc2, 0xe1, 0x1c, + 0x82, 0xe1, 0x93, 0x87, 0xf0, 0x1f, 0x7f, 0x35, 0xce, 0xea, 0x30, 0x8f, 0xdd, 0x75, 0x98, 0x66, + 0xcd, 0x3b, 0x1c, 0xfd, 0x79, 0x76, 0x73, 0x8e, 0x28, 0x5e, 0x81, 0xc4, 0x84, 0x01, 0xff, 0x35, + 0x06, 0xa5, 0xf6, 0xc5, 0x32, 0x64, 0x02, 0x0d, 0x3b, 0x1c, 0xfe, 0xeb, 0x0c, 0x1e, 0x44, 0x61, + 0xd7, 0x59, 0xc3, 0x0e, 0x27, 0xf8, 0x0d, 0xee, 0x3a, 0x43, 0xe0, 0xb0, 0xf1, 0x5e, 0x1d, 0x8e, + 0xfe, 0x4d, 0x1e, 0x75, 0x0e, 0x29, 0xbe, 0x00, 0x69, 0xaf, 0xfe, 0x86, 0xe3, 0x7f, 0x8b, 0xe1, + 0x7d, 0x0c, 0x8e, 0x40, 0xa0, 0xfe, 0x87, 0x53, 0xfc, 0x36, 0x8f, 0x40, 0x00, 0x85, 0xb7, 0xd1, + 0x70, 0x4f, 0x0f, 0x67, 0xfa, 0x1d, 0xbe, 0x8d, 0x86, 0x5a, 0x3a, 0x5e, 0x4d, 0x52, 0x06, 0xc3, + 0x29, 0x7e, 0x97, 0xaf, 0x26, 0xb1, 0xc7, 0x6e, 0x0c, 0x37, 0xc9, 0x70, 0x8e, 0xdf, 0xe7, 0x6e, + 0x0c, 0xf5, 0xc8, 0x62, 0x1d, 0xc4, 0xd1, 0x06, 0x19, 0xce, 0xf7, 0x05, 0xc6, 0x37, 0x3b, 0xd2, + 0x1f, 0x8b, 0x2f, 0xc2, 0x99, 0xf1, 0xcd, 0x31, 0x9c, 0xf5, 0x8b, 0xef, 0x0f, 0xbd, 0xce, 0x04, + 0x7b, 0x63, 0x71, 0xcf, 0xaf, 0xb2, 0xc1, 0xc6, 0x18, 0x4e, 0xfb, 0xda, 0xfb, 0x83, 0x85, 0x36, + 0xd8, 0x17, 0x8b, 0x25, 0x00, 0xbf, 0x27, 0x85, 0x73, 0xbd, 0xce, 0xb8, 0x02, 0x20, 0xbc, 0x35, + 0x58, 0x4b, 0x0a, 0xc7, 0x7f, 0x89, 0x6f, 0x0d, 0x86, 0xc0, 0x5b, 0x83, 0x77, 0xa3, 0x70, 0xf4, + 0x1b, 0x7c, 0x6b, 0x70, 0x48, 0xf1, 0x3a, 0xa4, 0xcc, 0xbe, 0x61, 0xe0, 0xdc, 0x12, 0x4f, 0xfe, + 0x8c, 0x48, 0xfa, 0xf7, 0x0f, 0x18, 0x98, 0x03, 0x8a, 0xeb, 0x90, 0x40, 0xdd, 0x26, 0x6a, 0x85, + 0x21, 0xff, 0xe3, 0x03, 0x5e, 0x4f, 0xb0, 0x75, 0xf1, 0x05, 0x00, 0xfa, 0x32, 0x4d, 0x7e, 0x25, + 0x0a, 0xc1, 0xfe, 0xe7, 0x07, 0xec, 0x0b, 0x05, 0x1f, 0xe2, 0x13, 0xd0, 0xef, 0x1d, 0x4e, 0x26, + 0x78, 0x77, 0x90, 0x80, 0xbc, 0x80, 0x5f, 0x83, 0xe9, 0x3b, 0x8e, 0x65, 0xba, 0x6a, 0x27, 0x0c, + 0xfd, 0x5f, 0x0c, 0xcd, 0xed, 0x71, 0xc0, 0xba, 0x96, 0x8d, 0x5c, 0xb5, 0xe3, 0x84, 0x61, 0xff, + 0x9b, 0x61, 0x3d, 0x00, 0x06, 0x6b, 0xaa, 0xe3, 0x4e, 0xf2, 0xdc, 0xff, 0xc3, 0xc1, 0x1c, 0x80, + 0x9d, 0xc6, 0xff, 0xdf, 0x45, 0x87, 0x61, 0xd8, 0xf7, 0xb8, 0xd3, 0xcc, 0xbe, 0xf8, 0x49, 0x48, + 0xe3, 0x7f, 0xe9, 0x57, 0x3b, 0x21, 0xe0, 0xff, 0x65, 0x60, 0x1f, 0x81, 0xef, 0xec, 0xb8, 0x2d, + 0x57, 0x0f, 0x0f, 0xf6, 0xff, 0xb1, 0x95, 0xe6, 0xf6, 0xc5, 0x12, 0x64, 0x1c, 0xb7, 0xd5, 0xea, + 0xb3, 0x89, 0x26, 0x04, 0xfe, 0xc3, 0x0f, 0xbc, 0x97, 0x5c, 0x0f, 0xb3, 0x71, 0x61, 0xfc, 0x61, + 0x1d, 0x6c, 0x59, 0x5b, 0x16, 0x3d, 0xa6, 0x83, 0xdf, 0x4b, 0x80, 0xa4, 0x59, 0xdd, 0xa6, 0xe5, + 0xac, 0x9a, 0x48, 0x77, 0x0f, 0x90, 0xbd, 0x6a, 0x99, 0xcc, 0x56, 0x8c, 0x59, 0x26, 0x5a, 0x38, + 0xdd, 0xa1, 0xdc, 0xd2, 0x39, 0x48, 0x34, 0xfa, 0xcd, 0xe6, 0xa1, 0x28, 0x40, 0xcc, 0xe9, 0x37, + 0xd9, 0x57, 0x25, 0xf8, 0xdf, 0xa5, 0xef, 0xc5, 0x20, 0xd3, 0x50, 0xbb, 0x3d, 0x03, 0xd5, 0x4c, + 0x54, 0x6b, 0x8b, 0x12, 0x24, 0xc9, 0x33, 0x3c, 0x4f, 0x8c, 0x22, 0x37, 0xa7, 0x64, 0x76, 0xed, + 0x69, 0xd6, 0xc8, 0x49, 0x65, 0xd4, 0xd3, 0xac, 0x79, 0x9a, 0x8b, 0xf4, 0xa0, 0xd2, 0xd3, 0x5c, + 0xf4, 0x34, 0x97, 0xc8, 0x71, 0x65, 0xcc, 0xd3, 0x5c, 0xf2, 0x34, 0xeb, 0xe4, 0x38, 0x7e, 0xc6, + 0xd3, 0xac, 0x7b, 0x9a, 0xcb, 0xe4, 0x00, 0x3e, 0xee, 0x69, 0x2e, 0x7b, 0x9a, 0x2b, 0xe4, 0xdc, + 0x7d, 0xd6, 0xd3, 0x5c, 0xf1, 0x34, 0x57, 0xc9, 0x59, 0xbb, 0xe8, 0x69, 0xae, 0x7a, 0x9a, 0x6b, + 0xe4, 0xe3, 0x91, 0x69, 0x4f, 0x73, 0x4d, 0x5c, 0x80, 0x69, 0xfa, 0x64, 0xcf, 0x91, 0x1f, 0x64, + 0xf3, 0x37, 0xa7, 0x64, 0x2e, 0xf0, 0x75, 0xcf, 0x93, 0x0f, 0x44, 0x92, 0xbe, 0xee, 0x79, 0x5f, + 0xb7, 0x46, 0x3e, 0x93, 0x16, 0x7c, 0xdd, 0x9a, 0xaf, 0xbb, 0x28, 0xcd, 0xe0, 0xa5, 0xf7, 0x75, + 0x17, 0x7d, 0xdd, 0x25, 0x29, 0x87, 0xe3, 0xef, 0xeb, 0x2e, 0xf9, 0xba, 0x75, 0x29, 0xbf, 0x18, + 0x59, 0xce, 0xfa, 0xba, 0x75, 0xf1, 0x59, 0xc8, 0x38, 0xfd, 0xa6, 0xc2, 0xbe, 0x1f, 0x20, 0x1f, + 0xa2, 0x64, 0xd6, 0x60, 0x05, 0x67, 0x04, 0x59, 0xd4, 0x9b, 0x53, 0x32, 0x38, 0xfd, 0x26, 0xab, + 0x8d, 0x1b, 0x59, 0x20, 0x47, 0x09, 0x0a, 0xf9, 0xfc, 0x72, 0x63, 0xf3, 0xad, 0x87, 0x85, 0xa9, + 0xef, 0x3c, 0x2c, 0x4c, 0xfd, 0xeb, 0xc3, 0xc2, 0xd4, 0xdb, 0x0f, 0x0b, 0x91, 0xf7, 0x1e, 0x16, + 0x22, 0x3f, 0x7a, 0x58, 0x88, 0x3c, 0x38, 0x2a, 0x44, 0xbe, 0x72, 0x54, 0x88, 0x7c, 0xfd, 0xa8, + 0x10, 0xf9, 0xd6, 0x51, 0x21, 0xf2, 0xd6, 0x51, 0x61, 0xea, 0x3b, 0x47, 0x85, 0xa9, 0xb7, 0x8f, + 0x0a, 0x91, 0x1f, 0x1c, 0x15, 0xa6, 0xde, 0x3b, 0x2a, 0x44, 0x7e, 0x74, 0x54, 0x98, 0x7a, 0xf0, + 0xfd, 0xc2, 0x54, 0x33, 0x49, 0xd2, 0xe8, 0xe2, 0x8f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x14, 0x1b, + 0x23, 0x42, 0xf5, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unmarshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unmarshaler/one.pb.go index 33ca595fd..706092be0 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unmarshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unmarshaler/one.pb.go @@ -550,242 +550,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3748 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0xa6, 0x99, 0x33, 0xa3, 0x11, 0xf5, 0x4b, 0x5e, 0x73, 0x65, 0x7b, 0x56, 0xab, - 0xd8, 0xb1, 0x6c, 0xd7, 0x5a, 0x5b, 0x97, 0xbd, 0xcc, 0x36, 0x31, 0x46, 0xd2, 0x58, 0xab, 0x85, - 0x6e, 0xe1, 0x48, 0x89, 0x9d, 0x3c, 0x10, 0x1c, 0xce, 0x3f, 0x23, 0xee, 0x72, 0xc8, 0x29, 0xc9, - 0x59, 0x5b, 0x7e, 0xda, 0xc0, 0xbd, 0x20, 0x08, 0x7a, 0x2f, 0xd0, 0xc4, 0x71, 0xdc, 0x34, 0x40, - 0xeb, 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x41, 0x9f, 0xfa, 0x92, 0xd6, 0x4f, 0x45, 0xf2, 0xd6, 0x87, - 0x3c, 0x64, 0x55, 0x03, 0x4d, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x0d, 0xb0, 0x2f, 0xc5, 0x7f, 0x23, - 0x39, 0x17, 0x2d, 0x47, 0x01, 0x12, 0xf7, 0x49, 0xe2, 0x39, 0xe7, 0xfb, 0x78, 0x78, 0xfe, 0xf3, - 0x9f, 0x73, 0xf8, 0x0f, 0xe1, 0xb3, 0x2b, 0x30, 0xd7, 0x72, 0x9c, 0x96, 0x85, 0x2f, 0x75, 0x5c, - 0xc7, 0x77, 0xea, 0xdd, 0xe6, 0xa5, 0x06, 0xf6, 0x0c, 0xd7, 0xec, 0xf8, 0x8e, 0xbb, 0x48, 0x65, - 0x68, 0x92, 0x59, 0x2c, 0x0a, 0x8b, 0xf9, 0x1d, 0x98, 0x7a, 0xd1, 0xb4, 0xf0, 0x46, 0x60, 0x58, - 0xc3, 0x3e, 0xba, 0x0a, 0xa9, 0xa6, 0x69, 0x61, 0x45, 0x9a, 0x4b, 0x2e, 0xe4, 0x97, 0x1e, 0x5f, - 0xec, 0x03, 0x2d, 0xf6, 0x22, 0xf6, 0x89, 0x58, 0xa5, 0x88, 0xf9, 0x77, 0x53, 0x30, 0x3d, 0x44, - 0x8b, 0x10, 0xa4, 0x6c, 0xbd, 0x4d, 0x18, 0xa5, 0x85, 0x9c, 0x4a, 0xff, 0x47, 0x0a, 0x8c, 0x77, - 0x74, 0xe3, 0xb6, 0xde, 0xc2, 0x4a, 0x82, 0x8a, 0xc5, 0x25, 0x2a, 0x01, 0x34, 0x70, 0x07, 0xdb, - 0x0d, 0x6c, 0x1b, 0xc7, 0x4a, 0x72, 0x2e, 0xb9, 0x90, 0x53, 0x23, 0x12, 0xf4, 0x0c, 0x4c, 0x75, - 0xba, 0x75, 0xcb, 0x34, 0xb4, 0x88, 0x19, 0xcc, 0x25, 0x17, 0xd2, 0xaa, 0xcc, 0x14, 0x1b, 0xa1, - 0xf1, 0x93, 0x30, 0xf9, 0x0a, 0xd6, 0x6f, 0x47, 0x4d, 0xf3, 0xd4, 0xb4, 0x48, 0xc4, 0x11, 0xc3, - 0x75, 0x28, 0xb4, 0xb1, 0xe7, 0xe9, 0x2d, 0xac, 0xf9, 0xc7, 0x1d, 0xac, 0xa4, 0xe8, 0xd3, 0xcf, - 0x0d, 0x3c, 0x7d, 0xff, 0x93, 0xe7, 0x39, 0xea, 0xe0, 0xb8, 0x83, 0x51, 0x05, 0x72, 0xd8, 0xee, - 0xb6, 0x19, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x6e, 0xbb, 0x9f, 0x25, 0x4b, 0x60, 0x9c, 0x62, - 0xdc, 0xc3, 0xee, 0x1d, 0xd3, 0xc0, 0x4a, 0x86, 0x12, 0x3c, 0x39, 0x40, 0x50, 0x63, 0xfa, 0x7e, - 0x0e, 0x81, 0x43, 0xeb, 0x90, 0xc3, 0xaf, 0xfa, 0xd8, 0xf6, 0x4c, 0xc7, 0x56, 0xc6, 0x29, 0xc9, - 0x13, 0x43, 0x56, 0x11, 0x5b, 0x8d, 0x7e, 0x8a, 0x10, 0x87, 0x2e, 0xc3, 0xb8, 0xd3, 0xf1, 0x4d, - 0xc7, 0xf6, 0x94, 0xec, 0x9c, 0xb4, 0x90, 0x5f, 0x7a, 0x74, 0x68, 0x22, 0xec, 0x31, 0x1b, 0x55, - 0x18, 0xa3, 0x2d, 0x90, 0x3d, 0xa7, 0xeb, 0x1a, 0x58, 0x33, 0x9c, 0x06, 0xd6, 0x4c, 0xbb, 0xe9, - 0x28, 0x39, 0x4a, 0x70, 0x61, 0xf0, 0x41, 0xa8, 0xe1, 0xba, 0xd3, 0xc0, 0x5b, 0x76, 0xd3, 0x51, - 0x8b, 0x5e, 0xcf, 0x35, 0x3a, 0x07, 0x19, 0xef, 0xd8, 0xf6, 0xf5, 0x57, 0x95, 0x02, 0xcd, 0x10, - 0x7e, 0x35, 0xff, 0xbf, 0x69, 0x98, 0x1c, 0x25, 0xc5, 0xae, 0x43, 0xba, 0x49, 0x9e, 0x52, 0x49, - 0x9c, 0x25, 0x06, 0x0c, 0xd3, 0x1b, 0xc4, 0xcc, 0x4f, 0x18, 0xc4, 0x0a, 0xe4, 0x6d, 0xec, 0xf9, - 0xb8, 0xc1, 0x32, 0x22, 0x39, 0x62, 0x4e, 0x01, 0x03, 0x0d, 0xa6, 0x54, 0xea, 0x27, 0x4a, 0xa9, - 0x97, 0x60, 0x32, 0x70, 0x49, 0x73, 0x75, 0xbb, 0x25, 0x72, 0xf3, 0x52, 0x9c, 0x27, 0x8b, 0x55, - 0x81, 0x53, 0x09, 0x4c, 0x2d, 0xe2, 0x9e, 0x6b, 0xb4, 0x01, 0xe0, 0xd8, 0xd8, 0x69, 0x6a, 0x0d, - 0x6c, 0x58, 0x4a, 0xf6, 0x94, 0x28, 0xed, 0x11, 0x93, 0x81, 0x28, 0x39, 0x4c, 0x6a, 0x58, 0xe8, - 0x5a, 0x98, 0x6a, 0xe3, 0xa7, 0x64, 0xca, 0x0e, 0xdb, 0x64, 0x03, 0xd9, 0x76, 0x08, 0x45, 0x17, - 0x93, 0xbc, 0xc7, 0x0d, 0xfe, 0x64, 0x39, 0xea, 0xc4, 0x62, 0xec, 0x93, 0xa9, 0x1c, 0xc6, 0x1e, - 0x6c, 0xc2, 0x8d, 0x5e, 0xa2, 0x8f, 0x40, 0x20, 0xd0, 0x68, 0x5a, 0x01, 0xad, 0x42, 0x05, 0x21, - 0xdc, 0xd5, 0xdb, 0x78, 0xf6, 0x2a, 0x14, 0x7b, 0xc3, 0x83, 0x66, 0x20, 0xed, 0xf9, 0xba, 0xeb, - 0xd3, 0x2c, 0x4c, 0xab, 0xec, 0x02, 0xc9, 0x90, 0xc4, 0x76, 0x83, 0x56, 0xb9, 0xb4, 0x4a, 0xfe, - 0x9d, 0xbd, 0x02, 0x13, 0x3d, 0xb7, 0x1f, 0x15, 0x38, 0xff, 0x85, 0x0c, 0xcc, 0x0c, 0xcb, 0xb9, - 0xa1, 0xe9, 0x7f, 0x0e, 0x32, 0x76, 0xb7, 0x5d, 0xc7, 0xae, 0x92, 0xa4, 0x0c, 0xfc, 0x0a, 0x55, - 0x20, 0x6d, 0xe9, 0x75, 0x6c, 0x29, 0xa9, 0x39, 0x69, 0xa1, 0xb8, 0xf4, 0xcc, 0x48, 0x59, 0xbd, - 0xb8, 0x4d, 0x20, 0x2a, 0x43, 0xa2, 0x8f, 0x43, 0x8a, 0x97, 0x38, 0xc2, 0xf0, 0xf4, 0x68, 0x0c, - 0x24, 0x17, 0x55, 0x8a, 0x43, 0x8f, 0x40, 0x8e, 0xfc, 0x65, 0xb1, 0xcd, 0x50, 0x9f, 0xb3, 0x44, - 0x40, 0xe2, 0x8a, 0x66, 0x21, 0x4b, 0xd3, 0xac, 0x81, 0x45, 0x6b, 0x08, 0xae, 0xc9, 0xc2, 0x34, - 0x70, 0x53, 0xef, 0x5a, 0xbe, 0x76, 0x47, 0xb7, 0xba, 0x98, 0x26, 0x4c, 0x4e, 0x2d, 0x70, 0xe1, - 0x27, 0x89, 0x0c, 0x5d, 0x80, 0x3c, 0xcb, 0x4a, 0xd3, 0x6e, 0xe0, 0x57, 0x69, 0xf5, 0x49, 0xab, - 0x2c, 0x51, 0xb7, 0x88, 0x84, 0xdc, 0xfe, 0x96, 0xe7, 0xd8, 0x62, 0x69, 0xe9, 0x2d, 0x88, 0x80, - 0xde, 0xfe, 0x4a, 0x7f, 0xe1, 0x7b, 0x6c, 0xf8, 0xe3, 0xf5, 0xe7, 0xe2, 0xfc, 0xb7, 0x12, 0x90, - 0xa2, 0xfb, 0x6d, 0x12, 0xf2, 0x07, 0x2f, 0xef, 0x57, 0xb5, 0x8d, 0xbd, 0xc3, 0xb5, 0xed, 0xaa, - 0x2c, 0xa1, 0x22, 0x00, 0x15, 0xbc, 0xb8, 0xbd, 0x57, 0x39, 0x90, 0x13, 0xc1, 0xf5, 0xd6, 0xee, - 0xc1, 0xe5, 0x15, 0x39, 0x19, 0x00, 0x0e, 0x99, 0x20, 0x15, 0x35, 0x58, 0x5e, 0x92, 0xd3, 0x48, - 0x86, 0x02, 0x23, 0xd8, 0x7a, 0xa9, 0xba, 0x71, 0x79, 0x45, 0xce, 0xf4, 0x4a, 0x96, 0x97, 0xe4, - 0x71, 0x34, 0x01, 0x39, 0x2a, 0x59, 0xdb, 0xdb, 0xdb, 0x96, 0xb3, 0x01, 0x67, 0xed, 0x40, 0xdd, - 0xda, 0xdd, 0x94, 0x73, 0x01, 0xe7, 0xa6, 0xba, 0x77, 0xb8, 0x2f, 0x43, 0xc0, 0xb0, 0x53, 0xad, - 0xd5, 0x2a, 0x9b, 0x55, 0x39, 0x1f, 0x58, 0xac, 0xbd, 0x7c, 0x50, 0xad, 0xc9, 0x85, 0x1e, 0xb7, - 0x96, 0x97, 0xe4, 0x89, 0xe0, 0x16, 0xd5, 0xdd, 0xc3, 0x1d, 0xb9, 0x88, 0xa6, 0x60, 0x82, 0xdd, - 0x42, 0x38, 0x31, 0xd9, 0x27, 0xba, 0xbc, 0x22, 0xcb, 0xa1, 0x23, 0x8c, 0x65, 0xaa, 0x47, 0x70, - 0x79, 0x45, 0x46, 0xf3, 0xeb, 0x90, 0xa6, 0xd9, 0x85, 0x10, 0x14, 0xb7, 0x2b, 0x6b, 0xd5, 0x6d, - 0x6d, 0x6f, 0xff, 0x60, 0x6b, 0x6f, 0xb7, 0xb2, 0x2d, 0x4b, 0xa1, 0x4c, 0xad, 0x7e, 0xe2, 0x70, - 0x4b, 0xad, 0x6e, 0xc8, 0x89, 0xa8, 0x6c, 0xbf, 0x5a, 0x39, 0xa8, 0x6e, 0xc8, 0xc9, 0x79, 0x03, - 0x66, 0x86, 0xd5, 0x99, 0xa1, 0x3b, 0x23, 0xb2, 0xc4, 0x89, 0x53, 0x96, 0x98, 0x72, 0x0d, 0x2c, - 0xf1, 0x57, 0x25, 0x98, 0x1e, 0x52, 0x6b, 0x87, 0xde, 0xe4, 0x05, 0x48, 0xb3, 0x14, 0x65, 0xdd, - 0xe7, 0xa9, 0xa1, 0x45, 0x9b, 0x26, 0xec, 0x40, 0x07, 0xa2, 0xb8, 0x68, 0x07, 0x4e, 0x9e, 0xd2, - 0x81, 0x09, 0xc5, 0x80, 0x93, 0xaf, 0x4b, 0xa0, 0x9c, 0xc6, 0x1d, 0x53, 0x28, 0x12, 0x3d, 0x85, - 0xe2, 0x7a, 0xbf, 0x03, 0x17, 0x4f, 0x7f, 0x86, 0x01, 0x2f, 0xde, 0x96, 0xe0, 0xdc, 0xf0, 0x41, - 0x65, 0xa8, 0x0f, 0x1f, 0x87, 0x4c, 0x1b, 0xfb, 0x47, 0x8e, 0x68, 0xd6, 0x1f, 0x1d, 0xd2, 0x02, - 0x88, 0xba, 0x3f, 0x56, 0x1c, 0x15, 0xed, 0x21, 0xc9, 0xd3, 0xa6, 0x0d, 0xe6, 0xcd, 0x80, 0xa7, - 0x9f, 0x4b, 0xc0, 0x43, 0x43, 0xc9, 0x87, 0x3a, 0xfa, 0x18, 0x80, 0x69, 0x77, 0xba, 0x3e, 0x6b, - 0xc8, 0xac, 0x3e, 0xe5, 0xa8, 0x84, 0xee, 0x7d, 0x52, 0x7b, 0xba, 0x7e, 0xa0, 0x4f, 0x52, 0x3d, - 0x30, 0x11, 0x35, 0xb8, 0x1a, 0x3a, 0x9a, 0xa2, 0x8e, 0x96, 0x4e, 0x79, 0xd2, 0x81, 0x5e, 0xf7, - 0x1c, 0xc8, 0x86, 0x65, 0x62, 0xdb, 0xd7, 0x3c, 0xdf, 0xc5, 0x7a, 0xdb, 0xb4, 0x5b, 0xb4, 0x00, - 0x67, 0xcb, 0xe9, 0xa6, 0x6e, 0x79, 0x58, 0x9d, 0x64, 0xea, 0x9a, 0xd0, 0x12, 0x04, 0xed, 0x32, - 0x6e, 0x04, 0x91, 0xe9, 0x41, 0x30, 0x75, 0x80, 0x98, 0xff, 0xfc, 0x38, 0xe4, 0x23, 0x63, 0x1d, - 0xba, 0x08, 0x85, 0x5b, 0xfa, 0x1d, 0x5d, 0x13, 0xa3, 0x3a, 0x8b, 0x44, 0x9e, 0xc8, 0xf6, 0xf9, - 0xb8, 0xfe, 0x1c, 0xcc, 0x50, 0x13, 0xa7, 0xeb, 0x63, 0x57, 0x33, 0x2c, 0xdd, 0xf3, 0x68, 0xd0, - 0xb2, 0xd4, 0x14, 0x11, 0xdd, 0x1e, 0x51, 0xad, 0x0b, 0x0d, 0x5a, 0x85, 0x69, 0x8a, 0x68, 0x77, - 0x2d, 0xdf, 0xec, 0x58, 0x58, 0x23, 0x2f, 0x0f, 0x1e, 0x2d, 0xc4, 0x81, 0x67, 0x53, 0xc4, 0x62, - 0x87, 0x1b, 0x10, 0x8f, 0x3c, 0xb4, 0x09, 0x8f, 0x51, 0x58, 0x0b, 0xdb, 0xd8, 0xd5, 0x7d, 0xac, - 0xe1, 0x5f, 0xe8, 0xea, 0x96, 0xa7, 0xe9, 0x76, 0x43, 0x3b, 0xd2, 0xbd, 0x23, 0x65, 0x26, 0x4a, - 0x70, 0x9e, 0xd8, 0x6e, 0x72, 0xd3, 0x2a, 0xb5, 0xac, 0xd8, 0x8d, 0x1b, 0xba, 0x77, 0x84, 0xca, - 0x70, 0x8e, 0x12, 0x79, 0xbe, 0x6b, 0xda, 0x2d, 0xcd, 0x38, 0xc2, 0xc6, 0x6d, 0xad, 0xeb, 0x37, - 0xaf, 0x2a, 0x8f, 0x44, 0x19, 0xa8, 0x93, 0x35, 0x6a, 0xb3, 0x4e, 0x4c, 0x0e, 0xfd, 0xe6, 0x55, - 0x54, 0x83, 0x02, 0x59, 0x8f, 0xb6, 0xf9, 0x1a, 0xd6, 0x9a, 0x8e, 0x4b, 0x9b, 0x4b, 0x71, 0xc8, - 0xe6, 0x8e, 0x04, 0x71, 0x71, 0x8f, 0x03, 0x76, 0x9c, 0x06, 0x2e, 0xa7, 0x6b, 0xfb, 0xd5, 0xea, - 0x86, 0x9a, 0x17, 0x2c, 0x2f, 0x3a, 0x2e, 0xc9, 0xa9, 0x96, 0x13, 0xc4, 0x38, 0xcf, 0x72, 0xaa, - 0xe5, 0x88, 0x08, 0xaf, 0xc2, 0xb4, 0x61, 0xb0, 0xc7, 0x36, 0x0d, 0x8d, 0x4f, 0xf9, 0x9e, 0x22, - 0xf7, 0xc4, 0xcb, 0x30, 0x36, 0x99, 0x01, 0x4f, 0x73, 0x0f, 0x5d, 0x83, 0x87, 0xc2, 0x78, 0x45, - 0x81, 0x53, 0x03, 0x4f, 0xd9, 0x0f, 0x5d, 0x85, 0xe9, 0xce, 0xf1, 0x20, 0x10, 0xf5, 0xdc, 0xb1, - 0x73, 0xdc, 0x0f, 0x7b, 0x82, 0xbe, 0xb9, 0xb9, 0xd8, 0xd0, 0x7d, 0xdc, 0x50, 0x1e, 0x8e, 0x5a, - 0x47, 0x14, 0xe8, 0x12, 0xc8, 0x86, 0xa1, 0x61, 0x5b, 0xaf, 0x5b, 0x58, 0xd3, 0x5d, 0x6c, 0xeb, - 0x9e, 0x72, 0x21, 0x6a, 0x5c, 0x34, 0x8c, 0x2a, 0xd5, 0x56, 0xa8, 0x12, 0x3d, 0x0d, 0x53, 0x4e, - 0xfd, 0x96, 0xc1, 0x92, 0x4b, 0xeb, 0xb8, 0xb8, 0x69, 0xbe, 0xaa, 0x3c, 0x4e, 0xc3, 0x34, 0x49, - 0x14, 0x34, 0xb5, 0xf6, 0xa9, 0x18, 0x3d, 0x05, 0xb2, 0xe1, 0x1d, 0xe9, 0x6e, 0x87, 0x76, 0x77, - 0xaf, 0xa3, 0x1b, 0x58, 0x79, 0x82, 0x99, 0x32, 0xf9, 0xae, 0x10, 0xa3, 0x97, 0x60, 0xa6, 0x6b, - 0x9b, 0xb6, 0x8f, 0xdd, 0x8e, 0x8b, 0xc9, 0x90, 0xce, 0x76, 0x9a, 0xf2, 0x2f, 0xe3, 0xa7, 0x8c, - 0xd9, 0x87, 0x51, 0x6b, 0xb6, 0xba, 0xea, 0x74, 0x77, 0x50, 0x38, 0x5f, 0x86, 0x42, 0x74, 0xd1, - 0x51, 0x0e, 0xd8, 0xb2, 0xcb, 0x12, 0xe9, 0xa1, 0xeb, 0x7b, 0x1b, 0xa4, 0xfb, 0x7d, 0xba, 0x2a, - 0x27, 0x48, 0x17, 0xde, 0xde, 0x3a, 0xa8, 0x6a, 0xea, 0xe1, 0xee, 0xc1, 0xd6, 0x4e, 0x55, 0x4e, - 0x3e, 0x9d, 0xcb, 0xfe, 0x70, 0x5c, 0xbe, 0x7b, 0xf7, 0xee, 0xdd, 0xc4, 0xfc, 0x77, 0x12, 0x50, - 0xec, 0x9d, 0x7c, 0xd1, 0xcf, 0xc3, 0xc3, 0xe2, 0x35, 0xd5, 0xc3, 0xbe, 0xf6, 0x8a, 0xe9, 0xd2, - 0x3c, 0x6c, 0xeb, 0x6c, 0x76, 0x0c, 0x42, 0x38, 0xc3, 0xad, 0x6a, 0xd8, 0xff, 0x94, 0xe9, 0x92, - 0x2c, 0x6b, 0xeb, 0x3e, 0xda, 0x86, 0x0b, 0xb6, 0xa3, 0x79, 0xbe, 0x6e, 0x37, 0x74, 0xb7, 0xa1, - 0x85, 0x07, 0x04, 0x9a, 0x6e, 0x18, 0xd8, 0xf3, 0x1c, 0xd6, 0x02, 0x02, 0x96, 0x47, 0x6d, 0xa7, - 0xc6, 0x8d, 0xc3, 0xda, 0x58, 0xe1, 0xa6, 0x7d, 0xcb, 0x9d, 0x3c, 0x6d, 0xb9, 0x1f, 0x81, 0x5c, - 0x5b, 0xef, 0x68, 0xd8, 0xf6, 0xdd, 0x63, 0x3a, 0xaf, 0x65, 0xd5, 0x6c, 0x5b, 0xef, 0x54, 0xc9, - 0xf5, 0x4f, 0x6f, 0x0d, 0xa2, 0x71, 0xfc, 0x7e, 0x12, 0x0a, 0xd1, 0x99, 0x8d, 0x8c, 0xc0, 0x06, - 0xad, 0xcf, 0x12, 0xdd, 0xbe, 0x1f, 0x79, 0xe0, 0x84, 0xb7, 0xb8, 0x4e, 0x0a, 0x77, 0x39, 0xc3, - 0x26, 0x29, 0x95, 0x21, 0x49, 0xd3, 0x24, 0x1b, 0x16, 0xb3, 0xf9, 0x3c, 0xab, 0xf2, 0x2b, 0xb4, - 0x09, 0x99, 0x5b, 0x1e, 0xe5, 0xce, 0x50, 0xee, 0xc7, 0x1f, 0xcc, 0x7d, 0xb3, 0x46, 0xc9, 0x73, - 0x37, 0x6b, 0xda, 0xee, 0x9e, 0xba, 0x53, 0xd9, 0x56, 0x39, 0x1c, 0x9d, 0x87, 0x94, 0xa5, 0xbf, - 0x76, 0xdc, 0x5b, 0xe2, 0xa9, 0x68, 0xd4, 0xc0, 0x9f, 0x87, 0xd4, 0x2b, 0x58, 0xbf, 0xdd, 0x5b, - 0x58, 0xa9, 0xe8, 0xa7, 0x98, 0xfa, 0x97, 0x20, 0x4d, 0xe3, 0x85, 0x00, 0x78, 0xc4, 0xe4, 0x31, - 0x94, 0x85, 0xd4, 0xfa, 0x9e, 0x4a, 0xd2, 0x5f, 0x86, 0x02, 0x93, 0x6a, 0xfb, 0x5b, 0xd5, 0xf5, - 0xaa, 0x9c, 0x98, 0x5f, 0x85, 0x0c, 0x0b, 0x02, 0xd9, 0x1a, 0x41, 0x18, 0xe4, 0x31, 0x7e, 0xc9, - 0x39, 0x24, 0xa1, 0x3d, 0xdc, 0x59, 0xab, 0xaa, 0x72, 0x22, 0xba, 0xbc, 0x1e, 0x14, 0xa2, 0xe3, - 0xda, 0xcf, 0x26, 0xa7, 0xfe, 0x56, 0x82, 0x7c, 0x64, 0xfc, 0x22, 0x8d, 0x5f, 0xb7, 0x2c, 0xe7, - 0x15, 0x4d, 0xb7, 0x4c, 0xdd, 0xe3, 0x49, 0x01, 0x54, 0x54, 0x21, 0x92, 0x51, 0x17, 0xed, 0x67, - 0xe2, 0xfc, 0x5b, 0x12, 0xc8, 0xfd, 0xa3, 0x5b, 0x9f, 0x83, 0xd2, 0x87, 0xea, 0xe0, 0x9b, 0x12, - 0x14, 0x7b, 0xe7, 0xb5, 0x3e, 0xf7, 0x2e, 0x7e, 0xa8, 0xee, 0x7d, 0x49, 0x82, 0x89, 0x9e, 0x29, - 0xed, 0xff, 0x95, 0x77, 0x6f, 0x24, 0x61, 0x7a, 0x08, 0x0e, 0x55, 0xf8, 0x38, 0xcb, 0x26, 0xec, - 0x67, 0x47, 0xb9, 0xd7, 0x22, 0xe9, 0x96, 0xfb, 0xba, 0xeb, 0xf3, 0xe9, 0xf7, 0x29, 0x90, 0xcd, - 0x06, 0xb6, 0x7d, 0xb3, 0x69, 0x62, 0x97, 0xbf, 0x82, 0xb3, 0x19, 0x77, 0x32, 0x94, 0xb3, 0xb7, - 0xf0, 0x9f, 0x03, 0xd4, 0x71, 0x3c, 0xd3, 0x37, 0xef, 0x60, 0xcd, 0xb4, 0xc5, 0xfb, 0x3a, 0x99, - 0x79, 0x53, 0xaa, 0x2c, 0x34, 0x5b, 0xb6, 0x1f, 0x58, 0xdb, 0xb8, 0xa5, 0xf7, 0x59, 0x93, 0xda, - 0x97, 0x54, 0x65, 0xa1, 0x09, 0xac, 0x2f, 0x42, 0xa1, 0xe1, 0x74, 0xc9, 0xf8, 0xc0, 0xec, 0x48, - 0xa9, 0x95, 0xd4, 0x3c, 0x93, 0x05, 0x26, 0x7c, 0xbe, 0x0b, 0x0f, 0x0a, 0x0a, 0x6a, 0x9e, 0xc9, - 0x98, 0xc9, 0x93, 0x30, 0xa9, 0xb7, 0x5a, 0x2e, 0x21, 0x17, 0x44, 0x6c, 0x68, 0x2d, 0x06, 0x62, - 0x6a, 0x38, 0x7b, 0x13, 0xb2, 0x22, 0x0e, 0xa4, 0x9b, 0x91, 0x48, 0x68, 0x1d, 0x76, 0x5c, 0x93, - 0x58, 0xc8, 0xa9, 0x59, 0x5b, 0x28, 0x2f, 0x42, 0xc1, 0xf4, 0xb4, 0xf0, 0xdc, 0x30, 0x31, 0x97, - 0x58, 0xc8, 0xaa, 0x79, 0xd3, 0x0b, 0x0e, 0x8a, 0xe6, 0xdf, 0x4e, 0x40, 0xb1, 0xf7, 0xdc, 0x13, - 0x6d, 0x40, 0xd6, 0x72, 0x0c, 0x9d, 0x26, 0x02, 0x3b, 0x74, 0x5f, 0x88, 0x39, 0x2a, 0x5d, 0xdc, - 0xe6, 0xf6, 0x6a, 0x80, 0x9c, 0xfd, 0x47, 0x09, 0xb2, 0x42, 0x8c, 0xce, 0x41, 0xaa, 0xa3, 0xfb, - 0x47, 0x94, 0x2e, 0xbd, 0x96, 0x90, 0x25, 0x95, 0x5e, 0x13, 0xb9, 0xd7, 0xd1, 0x6d, 0x9a, 0x02, - 0x5c, 0x4e, 0xae, 0xc9, 0xba, 0x5a, 0x58, 0x6f, 0xd0, 0x71, 0xd8, 0x69, 0xb7, 0xb1, 0xed, 0x7b, - 0x62, 0x5d, 0xb9, 0x7c, 0x9d, 0x8b, 0xd1, 0x33, 0x30, 0xe5, 0xbb, 0xba, 0x69, 0xf5, 0xd8, 0xa6, - 0xa8, 0xad, 0x2c, 0x14, 0x81, 0x71, 0x19, 0xce, 0x0b, 0xde, 0x06, 0xf6, 0x75, 0xe3, 0x08, 0x37, - 0x42, 0x50, 0x86, 0x1e, 0xaa, 0x3d, 0xcc, 0x0d, 0x36, 0xb8, 0x5e, 0x60, 0xe7, 0xbf, 0x27, 0xc1, - 0x94, 0x18, 0xe0, 0x1b, 0x41, 0xb0, 0x76, 0x00, 0x74, 0xdb, 0x76, 0xfc, 0x68, 0xb8, 0x06, 0x53, - 0x79, 0x00, 0xb7, 0x58, 0x09, 0x40, 0x6a, 0x84, 0x60, 0xb6, 0x0d, 0x10, 0x6a, 0x4e, 0x0d, 0xdb, - 0x05, 0xc8, 0xf3, 0x43, 0x6d, 0xfa, 0xcb, 0x08, 0x7b, 0xeb, 0x03, 0x26, 0x22, 0x93, 0x3e, 0x9a, - 0x81, 0x74, 0x1d, 0xb7, 0x4c, 0x9b, 0x1f, 0xb5, 0xb1, 0x0b, 0x71, 0x80, 0x97, 0x0a, 0x0e, 0xf0, - 0xd6, 0x3e, 0x03, 0xd3, 0x86, 0xd3, 0xee, 0x77, 0x77, 0x4d, 0xee, 0x7b, 0xf3, 0xf4, 0x6e, 0x48, - 0x9f, 0x86, 0x70, 0x3a, 0xfb, 0x8a, 0x24, 0x7d, 0x35, 0x91, 0xdc, 0xdc, 0x5f, 0xfb, 0x7a, 0x62, - 0x76, 0x93, 0x41, 0xf7, 0xc5, 0x93, 0xaa, 0xb8, 0x69, 0x61, 0x83, 0x78, 0x0f, 0x3f, 0xfa, 0x28, - 0x3c, 0xdb, 0x32, 0xfd, 0xa3, 0x6e, 0x7d, 0xd1, 0x70, 0xda, 0x97, 0x5a, 0x4e, 0xcb, 0x09, 0x7f, - 0x0c, 0x22, 0x57, 0xf4, 0x82, 0xfe, 0xc7, 0x7f, 0x10, 0xca, 0x05, 0xd2, 0xd9, 0xd8, 0x5f, 0x8f, - 0xca, 0xbb, 0x30, 0xcd, 0x8d, 0x35, 0x7a, 0x22, 0xcd, 0xe6, 0x70, 0xf4, 0xc0, 0x53, 0x09, 0xe5, - 0x9b, 0xef, 0xd2, 0x4e, 0xa7, 0x4e, 0x71, 0x28, 0xd1, 0xb1, 0x49, 0xbd, 0xac, 0xc2, 0x43, 0x3d, - 0x7c, 0x6c, 0x6b, 0x62, 0x37, 0x86, 0xf1, 0x3b, 0x9c, 0x71, 0x3a, 0xc2, 0x58, 0xe3, 0xd0, 0xf2, - 0x3a, 0x4c, 0x9c, 0x85, 0xeb, 0xef, 0x39, 0x57, 0x01, 0x47, 0x49, 0x36, 0x61, 0x92, 0x92, 0x18, - 0x5d, 0xcf, 0x77, 0xda, 0xb4, 0xee, 0x3d, 0x98, 0xe6, 0x1f, 0xde, 0x65, 0x7b, 0xa5, 0x48, 0x60, - 0xeb, 0x01, 0xaa, 0x5c, 0x06, 0x7a, 0x08, 0xdf, 0xc0, 0x86, 0x15, 0xc3, 0xf0, 0x0e, 0x77, 0x24, - 0xb0, 0x2f, 0x7f, 0x12, 0x66, 0xc8, 0xff, 0xb4, 0x2c, 0x45, 0x3d, 0x89, 0x3f, 0x83, 0x51, 0xbe, - 0xf7, 0x3a, 0xdb, 0x8e, 0xd3, 0x01, 0x41, 0xc4, 0xa7, 0xc8, 0x2a, 0xb6, 0xb0, 0xef, 0x63, 0xd7, - 0xd3, 0x74, 0x6b, 0x98, 0x7b, 0x91, 0x37, 0x58, 0xe5, 0x8b, 0xef, 0xf5, 0xae, 0xe2, 0x26, 0x43, - 0x56, 0x2c, 0xab, 0x7c, 0x08, 0x0f, 0x0f, 0xc9, 0x8a, 0x11, 0x38, 0xdf, 0xe0, 0x9c, 0x33, 0x03, - 0x99, 0x41, 0x68, 0xf7, 0x41, 0xc8, 0x83, 0xb5, 0x1c, 0x81, 0xf3, 0x4b, 0x9c, 0x13, 0x71, 0xac, - 0x58, 0x52, 0xc2, 0x78, 0x13, 0xa6, 0xee, 0x60, 0xb7, 0xee, 0x78, 0xfc, 0xe0, 0x60, 0x04, 0xba, - 0x37, 0x39, 0xdd, 0x24, 0x07, 0xd2, 0x63, 0x04, 0xc2, 0x75, 0x0d, 0xb2, 0x4d, 0xdd, 0xc0, 0x23, - 0x50, 0x7c, 0x99, 0x53, 0x8c, 0x13, 0x7b, 0x02, 0xad, 0x40, 0xa1, 0xe5, 0xf0, 0xce, 0x14, 0x0f, - 0x7f, 0x8b, 0xc3, 0xf3, 0x02, 0xc3, 0x29, 0x3a, 0x4e, 0xa7, 0x6b, 0x91, 0xb6, 0x15, 0x4f, 0xf1, - 0x7b, 0x82, 0x42, 0x60, 0x38, 0xc5, 0x19, 0xc2, 0xfa, 0x15, 0x41, 0xe1, 0x45, 0xe2, 0xf9, 0x02, - 0xe4, 0x1d, 0xdb, 0x3a, 0x76, 0xec, 0x51, 0x9c, 0xf8, 0x7d, 0xce, 0x00, 0x1c, 0x42, 0x08, 0xae, - 0x43, 0x6e, 0xd4, 0x85, 0xf8, 0x83, 0xf7, 0xc4, 0xf6, 0x10, 0x2b, 0xb0, 0x09, 0x93, 0xa2, 0x40, - 0x99, 0x8e, 0x3d, 0x02, 0xc5, 0x1f, 0x72, 0x8a, 0x62, 0x04, 0xc6, 0x1f, 0xc3, 0xc7, 0x9e, 0xdf, - 0xc2, 0xa3, 0x90, 0xbc, 0x2d, 0x1e, 0x83, 0x43, 0x78, 0x28, 0xeb, 0xd8, 0x36, 0x8e, 0x46, 0x63, - 0xf8, 0x9a, 0x08, 0xa5, 0xc0, 0x10, 0x8a, 0x75, 0x98, 0x68, 0xeb, 0xae, 0x77, 0xa4, 0x5b, 0x23, - 0x2d, 0xc7, 0x1f, 0x71, 0x8e, 0x42, 0x00, 0xe2, 0x11, 0xe9, 0xda, 0x67, 0xa1, 0xf9, 0xba, 0x88, - 0x48, 0x04, 0xc6, 0xb7, 0x9e, 0xe7, 0xd3, 0xb3, 0x99, 0xb3, 0xb0, 0xfd, 0xb1, 0xd8, 0x7a, 0x0c, - 0xbb, 0x13, 0x65, 0xbc, 0x0e, 0x39, 0xcf, 0x7c, 0x6d, 0x24, 0x9a, 0x3f, 0x11, 0x2b, 0x4d, 0x01, - 0x04, 0xfc, 0x32, 0x9c, 0x1f, 0xda, 0x26, 0x46, 0x20, 0xfb, 0x53, 0x4e, 0x76, 0x6e, 0x48, 0xab, - 0xe0, 0x25, 0xe1, 0xac, 0x94, 0x7f, 0x26, 0x4a, 0x02, 0xee, 0xe3, 0xda, 0x27, 0x93, 0xbd, 0xa7, - 0x37, 0xcf, 0x16, 0xb5, 0x3f, 0x17, 0x51, 0x63, 0xd8, 0x9e, 0xa8, 0x1d, 0xc0, 0x39, 0xce, 0x78, - 0xb6, 0x75, 0xfd, 0x86, 0x28, 0xac, 0x0c, 0x7d, 0xd8, 0xbb, 0xba, 0x9f, 0x81, 0xd9, 0x20, 0x9c, - 0x62, 0x28, 0xf5, 0xb4, 0xb6, 0xde, 0x19, 0x81, 0xf9, 0x9b, 0x9c, 0x59, 0x54, 0xfc, 0x60, 0xaa, - 0xf5, 0x76, 0xf4, 0x0e, 0x21, 0x7f, 0x09, 0x14, 0x41, 0xde, 0xb5, 0x5d, 0x6c, 0x38, 0x2d, 0xdb, - 0x7c, 0x0d, 0x37, 0x46, 0xa0, 0xfe, 0x8b, 0xbe, 0xa5, 0x3a, 0x8c, 0xc0, 0x09, 0xf3, 0x16, 0xc8, - 0xc1, 0xac, 0xa2, 0x99, 0xed, 0x8e, 0xe3, 0xfa, 0x31, 0x8c, 0x7f, 0x29, 0x56, 0x2a, 0xc0, 0x6d, - 0x51, 0x58, 0xb9, 0x0a, 0x45, 0x7a, 0x39, 0x6a, 0x4a, 0xfe, 0x15, 0x27, 0x9a, 0x08, 0x51, 0xbc, - 0x70, 0x18, 0x4e, 0xbb, 0xa3, 0xbb, 0xa3, 0xd4, 0xbf, 0xbf, 0x16, 0x85, 0x83, 0x43, 0x78, 0xe1, - 0xf0, 0x8f, 0x3b, 0x98, 0x74, 0xfb, 0x11, 0x18, 0xbe, 0x25, 0x0a, 0x87, 0xc0, 0x70, 0x0a, 0x31, - 0x30, 0x8c, 0x40, 0xf1, 0x37, 0x82, 0x42, 0x60, 0x08, 0xc5, 0x27, 0xc2, 0x46, 0xeb, 0xe2, 0x96, - 0xe9, 0xf9, 0x2e, 0x1b, 0x85, 0x1f, 0x4c, 0xf5, 0xed, 0xf7, 0x7a, 0x87, 0x30, 0x35, 0x02, 0x2d, - 0xdf, 0x84, 0xc9, 0xbe, 0x11, 0x03, 0xc5, 0xfd, 0xa2, 0xaf, 0x7c, 0xf6, 0x03, 0x5e, 0x8c, 0x7a, - 0x27, 0x8c, 0xf2, 0x36, 0x59, 0xf7, 0xde, 0x39, 0x20, 0x9e, 0xec, 0xf5, 0x0f, 0x82, 0xa5, 0xef, - 0x19, 0x03, 0xca, 0x2f, 0xc2, 0x44, 0xcf, 0x0c, 0x10, 0x4f, 0xf5, 0x8b, 0x9c, 0xaa, 0x10, 0x1d, - 0x01, 0xca, 0xab, 0x90, 0x22, 0xfd, 0x3c, 0x1e, 0xfe, 0x4b, 0x1c, 0x4e, 0xcd, 0xcb, 0x1f, 0x83, - 0xac, 0xe8, 0xe3, 0xf1, 0xd0, 0x5f, 0xe6, 0xd0, 0x00, 0x42, 0xe0, 0xa2, 0x87, 0xc7, 0xc3, 0x7f, - 0x45, 0xc0, 0x05, 0x84, 0xc0, 0x47, 0x0f, 0xe1, 0xdf, 0x7d, 0x3e, 0xc5, 0xeb, 0xb0, 0x88, 0xdd, - 0x75, 0x18, 0xe7, 0xcd, 0x3b, 0x1e, 0xfd, 0x39, 0x7e, 0x73, 0x81, 0x28, 0x5f, 0x81, 0xf4, 0x88, - 0x01, 0xff, 0x55, 0x0e, 0x65, 0xf6, 0xe5, 0x75, 0xc8, 0x47, 0x1a, 0x76, 0x3c, 0xfc, 0xd7, 0x38, - 0x3c, 0x8a, 0x22, 0xae, 0xf3, 0x86, 0x1d, 0x4f, 0xf0, 0xeb, 0xc2, 0x75, 0x8e, 0x20, 0x61, 0x13, - 0xbd, 0x3a, 0x1e, 0xfd, 0x1b, 0x22, 0xea, 0x02, 0x52, 0x7e, 0x01, 0x72, 0x41, 0xfd, 0x8d, 0xc7, - 0xff, 0x26, 0xc7, 0x87, 0x18, 0x12, 0x81, 0x48, 0xfd, 0x8f, 0xa7, 0xf8, 0x2d, 0x11, 0x81, 0x08, - 0x8a, 0x6c, 0xa3, 0xfe, 0x9e, 0x1e, 0xcf, 0xf4, 0xdb, 0x62, 0x1b, 0xf5, 0xb5, 0x74, 0xb2, 0x9a, - 0xb4, 0x0c, 0xc6, 0x53, 0xfc, 0x8e, 0x58, 0x4d, 0x6a, 0x4f, 0xdc, 0xe8, 0x6f, 0x92, 0xf1, 0x1c, - 0xbf, 0x2b, 0xdc, 0xe8, 0xeb, 0x91, 0xe5, 0x7d, 0x40, 0x83, 0x0d, 0x32, 0x9e, 0xef, 0x0b, 0x9c, - 0x6f, 0x6a, 0xa0, 0x3f, 0x96, 0x3f, 0x05, 0xe7, 0x86, 0x37, 0xc7, 0x78, 0xd6, 0x2f, 0x7e, 0xd0, - 0xf7, 0x3a, 0x13, 0xed, 0x8d, 0xe5, 0x83, 0xb0, 0xca, 0x46, 0x1b, 0x63, 0x3c, 0xed, 0x1b, 0x1f, - 0xf4, 0x16, 0xda, 0x68, 0x5f, 0x2c, 0x57, 0x00, 0xc2, 0x9e, 0x14, 0xcf, 0xf5, 0x26, 0xe7, 0x8a, - 0x80, 0xc8, 0xd6, 0xe0, 0x2d, 0x29, 0x1e, 0xff, 0x65, 0xb1, 0x35, 0x38, 0x82, 0x6c, 0x0d, 0xd1, - 0x8d, 0xe2, 0xd1, 0x6f, 0x89, 0xad, 0x21, 0x20, 0xe5, 0xeb, 0x90, 0xb5, 0xbb, 0x96, 0x45, 0x72, - 0x0b, 0x3d, 0xf8, 0x23, 0x1b, 0xe5, 0x5f, 0xef, 0x73, 0xb0, 0x00, 0x94, 0x57, 0x21, 0x8d, 0xdb, - 0x75, 0xdc, 0x88, 0x43, 0xfe, 0xdb, 0x7d, 0x51, 0x4f, 0x88, 0x75, 0xf9, 0x05, 0x00, 0xf6, 0x32, - 0x4d, 0x7f, 0x63, 0x89, 0xc1, 0xfe, 0xfb, 0x7d, 0xfe, 0xfb, 0x7d, 0x08, 0x09, 0x09, 0xd8, 0xd7, - 0x00, 0x0f, 0x26, 0x78, 0xaf, 0x97, 0x80, 0xbe, 0x80, 0x5f, 0x83, 0xf1, 0x5b, 0x9e, 0x63, 0xfb, - 0x7a, 0x2b, 0x0e, 0xfd, 0x1f, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0xda, 0x8e, 0x8b, 0x7d, 0xbd, 0xe5, - 0xc5, 0x61, 0xff, 0x93, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, 0x8f, 0xf2, 0xdc, 0xff, 0x25, - 0xc0, 0x02, 0x40, 0x9c, 0x26, 0xff, 0xdf, 0xc6, 0xc7, 0x71, 0xd8, 0xf7, 0x85, 0xd3, 0xdc, 0xbe, - 0xfc, 0x31, 0xc8, 0x91, 0x7f, 0xd9, 0x37, 0x2d, 0x31, 0xe0, 0xff, 0xe6, 0xe0, 0x10, 0x41, 0xee, - 0xec, 0xf9, 0x0d, 0xdf, 0x8c, 0x0f, 0xf6, 0xff, 0xf0, 0x95, 0x16, 0xf6, 0xe5, 0x0a, 0xe4, 0x3d, - 0xbf, 0xd1, 0xe8, 0xf2, 0x89, 0x26, 0x06, 0xfe, 0xa3, 0xfb, 0xc1, 0x4b, 0x6e, 0x80, 0x59, 0xbb, - 0x38, 0xfc, 0xbc, 0x0e, 0x36, 0x9d, 0x4d, 0x87, 0x9d, 0xd4, 0xc1, 0x1b, 0x69, 0x78, 0xd4, 0x70, - 0xda, 0x75, 0xc7, 0xbb, 0x14, 0x29, 0x43, 0x97, 0x1c, 0x9b, 0xdb, 0xa3, 0xa4, 0x63, 0xe3, 0xd9, - 0xb3, 0x1d, 0xcc, 0xcd, 0x9f, 0x87, 0x74, 0xad, 0x5b, 0xaf, 0x1f, 0x23, 0x19, 0x92, 0x5e, 0xb7, - 0xce, 0xbf, 0xbb, 0x20, 0xff, 0xce, 0x7f, 0x3f, 0x09, 0xf9, 0x9a, 0xde, 0xee, 0x58, 0x78, 0xcf, - 0xc6, 0x7b, 0x4d, 0xa4, 0x40, 0x86, 0x3e, 0xc7, 0xf3, 0xd4, 0x48, 0xba, 0x31, 0xa6, 0xf2, 0xeb, - 0x40, 0xb3, 0x44, 0x0f, 0x2c, 0x13, 0x81, 0x66, 0x29, 0xd0, 0x2c, 0xb3, 0xf3, 0xca, 0x40, 0xb3, - 0x1c, 0x68, 0x56, 0xe8, 0xa9, 0x65, 0x32, 0xd0, 0xac, 0x04, 0x9a, 0x55, 0x7a, 0x2a, 0x3f, 0x11, - 0x68, 0x56, 0x03, 0xcd, 0x65, 0x7a, 0x0e, 0x9f, 0x0a, 0x34, 0x97, 0x03, 0xcd, 0x15, 0x7a, 0xfc, - 0x3e, 0x15, 0x68, 0xae, 0x04, 0x9a, 0xab, 0xf4, 0xc8, 0x1d, 0x05, 0x9a, 0xab, 0x81, 0xe6, 0x1a, - 0xfd, 0xb6, 0x62, 0x3c, 0xd0, 0x5c, 0x43, 0xb3, 0x30, 0xce, 0x9e, 0xec, 0x39, 0xfa, 0x93, 0xe6, - 0xe4, 0x8d, 0x31, 0x55, 0x08, 0x42, 0xdd, 0xf3, 0xf4, 0xfb, 0x89, 0x4c, 0xa8, 0x7b, 0x3e, 0xd4, - 0x2d, 0xd1, 0x0f, 0x89, 0xe5, 0x50, 0xb7, 0x14, 0xea, 0x96, 0x95, 0x09, 0xb2, 0xfc, 0xa1, 0x6e, - 0x39, 0xd4, 0xad, 0x28, 0x45, 0x12, 0xff, 0x50, 0xb7, 0x12, 0xea, 0x56, 0x95, 0xc9, 0x39, 0x69, - 0xa1, 0x10, 0xea, 0x56, 0xd1, 0xb3, 0x90, 0xf7, 0xba, 0x75, 0x8d, 0xff, 0x02, 0x4f, 0xbf, 0xd3, - 0xc8, 0x2f, 0xc1, 0x22, 0xc9, 0x08, 0xba, 0xa8, 0x37, 0xc6, 0x54, 0xf0, 0xba, 0x75, 0x5e, 0x1f, - 0xd7, 0x0a, 0x40, 0x8f, 0x13, 0x34, 0xfa, 0x81, 0xe2, 0xda, 0xc6, 0x3b, 0xf7, 0x4a, 0x63, 0xdf, - 0xbd, 0x57, 0x1a, 0xfb, 0xa7, 0x7b, 0xa5, 0xb1, 0x1f, 0xdc, 0x2b, 0x49, 0xef, 0xdf, 0x2b, 0x49, - 0x3f, 0xbe, 0x57, 0x92, 0xee, 0x9e, 0x94, 0xa4, 0xaf, 0x9d, 0x94, 0xa4, 0x6f, 0x9c, 0x94, 0xa4, - 0x6f, 0x9f, 0x94, 0xa4, 0x77, 0x4e, 0x4a, 0x63, 0xdf, 0x3d, 0x29, 0x49, 0x3f, 0x38, 0x29, 0x49, - 0x3f, 0x3c, 0x29, 0x8d, 0xbd, 0x7f, 0x52, 0x92, 0x7e, 0x7c, 0x52, 0x1a, 0xbb, 0xfb, 0xcf, 0xa5, - 0xb1, 0x7a, 0x86, 0xa6, 0xd1, 0xf2, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x35, 0x67, 0x61, - 0x17, 0x30, 0x00, 0x00, + // 3860 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x84, 0x20, 0x79, 0x17, 0x2b, 0xdb, 0xdc, 0x5d, 0xc5, + 0x8e, 0x65, 0xbb, 0x96, 0x6c, 0xed, 0x6a, 0x2f, 0xdc, 0x26, 0x1e, 0x8a, 0xe2, 0x6a, 0xb9, 0x95, + 0x44, 0x06, 0x94, 0xe2, 0x75, 0xfa, 0x80, 0x01, 0xc1, 0x9f, 0x14, 0x76, 0x41, 0x80, 0x01, 0xc0, + 0x5d, 0xcb, 0x4f, 0xdb, 0x71, 0x2f, 0x93, 0xe9, 0xf4, 0xde, 0x99, 0x26, 0xae, 0xe3, 0xb6, 0x99, + 0x69, 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, + 0x1f, 0xf2, 0xe0, 0x55, 0x3c, 0xd3, 0xb4, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xe3, 0x97, 0xce, + 0x7f, 0x03, 0xc0, 0x8b, 0x16, 0x54, 0x66, 0x1c, 0x3f, 0x49, 0x38, 0xe7, 0x7c, 0x1f, 0x0e, 0xce, + 0x7f, 0xfe, 0x73, 0x0e, 0x7e, 0x02, 0x7e, 0xb0, 0x0e, 0xe7, 0x3a, 0xb6, 0xdd, 0x31, 0xd1, 0x6a, + 0xcf, 0xb1, 0x3d, 0xbb, 0xd9, 0x6f, 0xaf, 0xb6, 0x90, 0xab, 0x3b, 0x46, 0xcf, 0xb3, 0x9d, 0x15, + 0x22, 0x93, 0xf2, 0xd4, 0x62, 0x85, 0x5b, 0x2c, 0xed, 0xc0, 0xdc, 0x75, 0xc3, 0x44, 0x9b, 0xbe, + 0x61, 0x03, 0x79, 0xd2, 0x15, 0x48, 0xb4, 0x0d, 0x13, 0xc9, 0xc2, 0xb9, 0xf8, 0x72, 0x66, 0xed, + 0x89, 0x95, 0x21, 0xd0, 0xca, 0x20, 0xa2, 0x8e, 0xc5, 0x0a, 0x41, 0x2c, 0xbd, 0x9b, 0x80, 0xf9, + 0x31, 0x5a, 0x49, 0x82, 0x84, 0xa5, 0x75, 0x31, 0xa3, 0xb0, 0x9c, 0x56, 0xc8, 0xff, 0x92, 0x0c, + 0x33, 0x3d, 0x4d, 0xbf, 0xa3, 0x75, 0x90, 0x1c, 0x23, 0x62, 0x7e, 0x29, 0x15, 0x00, 0x5a, 0xa8, + 0x87, 0xac, 0x16, 0xb2, 0xf4, 0x43, 0x39, 0x7e, 0x2e, 0xbe, 0x9c, 0x56, 0x42, 0x12, 0xe9, 0x59, + 0x98, 0xeb, 0xf5, 0x9b, 0xa6, 0xa1, 0xab, 0x21, 0x33, 0x38, 0x17, 0x5f, 0x4e, 0x2a, 0x22, 0x55, + 0x6c, 0x06, 0xc6, 0x4f, 0x41, 0xfe, 0x1e, 0xd2, 0xee, 0x84, 0x4d, 0x33, 0xc4, 0x34, 0x87, 0xc5, + 0x21, 0xc3, 0x32, 0x64, 0xbb, 0xc8, 0x75, 0xb5, 0x0e, 0x52, 0xbd, 0xc3, 0x1e, 0x92, 0x13, 0xe4, + 0xe9, 0xcf, 0x8d, 0x3c, 0xfd, 0xf0, 0x93, 0x67, 0x18, 0x6a, 0xef, 0xb0, 0x87, 0xa4, 0x12, 0xa4, + 0x91, 0xd5, 0xef, 0x52, 0x86, 0xe4, 0x31, 0xf1, 0xab, 0x58, 0xfd, 0xee, 0x30, 0x4b, 0x0a, 0xc3, + 0x18, 0xc5, 0x8c, 0x8b, 0x9c, 0xbb, 0x86, 0x8e, 0xe4, 0x69, 0x42, 0xf0, 0xd4, 0x08, 0x41, 0x83, + 0xea, 0x87, 0x39, 0x38, 0x4e, 0x2a, 0x43, 0x1a, 0xbd, 0xe2, 0x21, 0xcb, 0x35, 0x6c, 0x4b, 0x9e, + 0x21, 0x24, 0x4f, 0x8e, 0x59, 0x45, 0x64, 0xb6, 0x86, 0x29, 0x02, 0x9c, 0x74, 0x09, 0x66, 0xec, + 0x9e, 0x67, 0xd8, 0x96, 0x2b, 0xa7, 0xce, 0x09, 0xcb, 0x99, 0xb5, 0xc7, 0xc6, 0x26, 0x42, 0x8d, + 0xda, 0x28, 0xdc, 0x58, 0xaa, 0x82, 0xe8, 0xda, 0x7d, 0x47, 0x47, 0xaa, 0x6e, 0xb7, 0x90, 0x6a, + 0x58, 0x6d, 0x5b, 0x4e, 0x13, 0x82, 0xb3, 0xa3, 0x0f, 0x42, 0x0c, 0xcb, 0x76, 0x0b, 0x55, 0xad, + 0xb6, 0xad, 0xe4, 0xdc, 0x81, 0x6b, 0xe9, 0x14, 0x4c, 0xbb, 0x87, 0x96, 0xa7, 0xbd, 0x22, 0x67, + 0x49, 0x86, 0xb0, 0xab, 0xa5, 0xff, 0x4b, 0x42, 0x7e, 0x92, 0x14, 0xbb, 0x06, 0xc9, 0x36, 0x7e, + 0x4a, 0x39, 0x76, 0x92, 0x18, 0x50, 0xcc, 0x60, 0x10, 0xa7, 0x7f, 0xc2, 0x20, 0x96, 0x20, 0x63, + 0x21, 0xd7, 0x43, 0x2d, 0x9a, 0x11, 0xf1, 0x09, 0x73, 0x0a, 0x28, 0x68, 0x34, 0xa5, 0x12, 0x3f, + 0x51, 0x4a, 0xdd, 0x82, 0xbc, 0xef, 0x92, 0xea, 0x68, 0x56, 0x87, 0xe7, 0xe6, 0x6a, 0x94, 0x27, + 0x2b, 0x15, 0x8e, 0x53, 0x30, 0x4c, 0xc9, 0xa1, 0x81, 0x6b, 0x69, 0x13, 0xc0, 0xb6, 0x90, 0xdd, + 0x56, 0x5b, 0x48, 0x37, 0xe5, 0xd4, 0x31, 0x51, 0xaa, 0x61, 0x93, 0x91, 0x28, 0xd9, 0x54, 0xaa, + 0x9b, 0xd2, 0xd5, 0x20, 0xd5, 0x66, 0x8e, 0xc9, 0x94, 0x1d, 0xba, 0xc9, 0x46, 0xb2, 0x6d, 0x1f, + 0x72, 0x0e, 0xc2, 0x79, 0x8f, 0x5a, 0xec, 0xc9, 0xd2, 0xc4, 0x89, 0x95, 0xc8, 0x27, 0x53, 0x18, + 0x8c, 0x3e, 0xd8, 0xac, 0x13, 0xbe, 0x94, 0x3e, 0x01, 0xbe, 0x40, 0x25, 0x69, 0x05, 0xa4, 0x0a, + 0x65, 0xb9, 0x70, 0x57, 0xeb, 0xa2, 0xc5, 0x2b, 0x90, 0x1b, 0x0c, 0x8f, 0xb4, 0x00, 0x49, 0xd7, + 0xd3, 0x1c, 0x8f, 0x64, 0x61, 0x52, 0xa1, 0x17, 0x92, 0x08, 0x71, 0x64, 0xb5, 0x48, 0x95, 0x4b, + 0x2a, 0xf8, 0xdf, 0xc5, 0xcb, 0x30, 0x3b, 0x70, 0xfb, 0x49, 0x81, 0x4b, 0x5f, 0x9c, 0x86, 0x85, + 0x71, 0x39, 0x37, 0x36, 0xfd, 0x4f, 0xc1, 0xb4, 0xd5, 0xef, 0x36, 0x91, 0x23, 0xc7, 0x09, 0x03, + 0xbb, 0x92, 0x4a, 0x90, 0x34, 0xb5, 0x26, 0x32, 0xe5, 0xc4, 0x39, 0x61, 0x39, 0xb7, 0xf6, 0xec, + 0x44, 0x59, 0xbd, 0xb2, 0x8d, 0x21, 0x0a, 0x45, 0x4a, 0x9f, 0x86, 0x04, 0x2b, 0x71, 0x98, 0xe1, + 0x99, 0xc9, 0x18, 0x70, 0x2e, 0x2a, 0x04, 0x27, 0x3d, 0x0a, 0x69, 0xfc, 0x97, 0xc6, 0x76, 0x9a, + 0xf8, 0x9c, 0xc2, 0x02, 0x1c, 0x57, 0x69, 0x11, 0x52, 0x24, 0xcd, 0x5a, 0x88, 0xb7, 0x06, 0xff, + 0x1a, 0x2f, 0x4c, 0x0b, 0xb5, 0xb5, 0xbe, 0xe9, 0xa9, 0x77, 0x35, 0xb3, 0x8f, 0x48, 0xc2, 0xa4, + 0x95, 0x2c, 0x13, 0x7e, 0x16, 0xcb, 0xa4, 0xb3, 0x90, 0xa1, 0x59, 0x69, 0x58, 0x2d, 0xf4, 0x0a, + 0xa9, 0x3e, 0x49, 0x85, 0x26, 0x6a, 0x15, 0x4b, 0xf0, 0xed, 0x6f, 0xbb, 0xb6, 0xc5, 0x97, 0x96, + 0xdc, 0x02, 0x0b, 0xc8, 0xed, 0x2f, 0x0f, 0x17, 0xbe, 0xc7, 0xc7, 0x3f, 0xde, 0x70, 0x2e, 0x2e, + 0x7d, 0x2b, 0x06, 0x09, 0xb2, 0xdf, 0xf2, 0x90, 0xd9, 0x7b, 0xb9, 0x5e, 0x51, 0x37, 0x6b, 0xfb, + 0x1b, 0xdb, 0x15, 0x51, 0x90, 0x72, 0x00, 0x44, 0x70, 0x7d, 0xbb, 0x56, 0xda, 0x13, 0x63, 0xfe, + 0x75, 0x75, 0x77, 0xef, 0xd2, 0x45, 0x31, 0xee, 0x03, 0xf6, 0xa9, 0x20, 0x11, 0x36, 0xb8, 0xb0, + 0x26, 0x26, 0x25, 0x11, 0xb2, 0x94, 0xa0, 0x7a, 0xab, 0xb2, 0x79, 0xe9, 0xa2, 0x38, 0x3d, 0x28, + 0xb9, 0xb0, 0x26, 0xce, 0x48, 0xb3, 0x90, 0x26, 0x92, 0x8d, 0x5a, 0x6d, 0x5b, 0x4c, 0xf9, 0x9c, + 0x8d, 0x3d, 0xa5, 0xba, 0xbb, 0x25, 0xa6, 0x7d, 0xce, 0x2d, 0xa5, 0xb6, 0x5f, 0x17, 0xc1, 0x67, + 0xd8, 0xa9, 0x34, 0x1a, 0xa5, 0xad, 0x8a, 0x98, 0xf1, 0x2d, 0x36, 0x5e, 0xde, 0xab, 0x34, 0xc4, + 0xec, 0x80, 0x5b, 0x17, 0xd6, 0xc4, 0x59, 0xff, 0x16, 0x95, 0xdd, 0xfd, 0x1d, 0x31, 0x27, 0xcd, + 0xc1, 0x2c, 0xbd, 0x05, 0x77, 0x22, 0x3f, 0x24, 0xba, 0x74, 0x51, 0x14, 0x03, 0x47, 0x28, 0xcb, + 0xdc, 0x80, 0xe0, 0xd2, 0x45, 0x51, 0x5a, 0x2a, 0x43, 0x92, 0x64, 0x97, 0x24, 0x41, 0x6e, 0xbb, + 0xb4, 0x51, 0xd9, 0x56, 0x6b, 0xf5, 0xbd, 0x6a, 0x6d, 0xb7, 0xb4, 0x2d, 0x0a, 0x81, 0x4c, 0xa9, + 0x7c, 0x66, 0xbf, 0xaa, 0x54, 0x36, 0xc5, 0x58, 0x58, 0x56, 0xaf, 0x94, 0xf6, 0x2a, 0x9b, 0x62, + 0x7c, 0x49, 0x87, 0x85, 0x71, 0x75, 0x66, 0xec, 0xce, 0x08, 0x2d, 0x71, 0xec, 0x98, 0x25, 0x26, + 0x5c, 0x23, 0x4b, 0xfc, 0x15, 0x01, 0xe6, 0xc7, 0xd4, 0xda, 0xb1, 0x37, 0x79, 0x11, 0x92, 0x34, + 0x45, 0x69, 0xf7, 0x79, 0x7a, 0x6c, 0xd1, 0x26, 0x09, 0x3b, 0xd2, 0x81, 0x08, 0x2e, 0xdc, 0x81, + 0xe3, 0xc7, 0x74, 0x60, 0x4c, 0x31, 0xe2, 0xe4, 0x6b, 0x02, 0xc8, 0xc7, 0x71, 0x47, 0x14, 0x8a, + 0xd8, 0x40, 0xa1, 0xb8, 0x36, 0xec, 0xc0, 0xf9, 0xe3, 0x9f, 0x61, 0xc4, 0x8b, 0xb7, 0x04, 0x38, + 0x35, 0x7e, 0x50, 0x19, 0xeb, 0xc3, 0xa7, 0x61, 0xba, 0x8b, 0xbc, 0x03, 0x9b, 0x37, 0xeb, 0x4f, + 0x8e, 0x69, 0x01, 0x58, 0x3d, 0x1c, 0x2b, 0x86, 0x0a, 0xf7, 0x90, 0xf8, 0x71, 0xd3, 0x06, 0xf5, + 0x66, 0xc4, 0xd3, 0x2f, 0xc4, 0xe0, 0x91, 0xb1, 0xe4, 0x63, 0x1d, 0x7d, 0x1c, 0xc0, 0xb0, 0x7a, + 0x7d, 0x8f, 0x36, 0x64, 0x5a, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0xae, 0x3d, 0x7d, 0xcf, 0xd7, + 0xc7, 0x89, 0x1e, 0xa8, 0x88, 0x18, 0x5c, 0x09, 0x1c, 0x4d, 0x10, 0x47, 0x0b, 0xc7, 0x3c, 0xe9, + 0x48, 0xaf, 0x7b, 0x1e, 0x44, 0xdd, 0x34, 0x90, 0xe5, 0xa9, 0xae, 0xe7, 0x20, 0xad, 0x6b, 0x58, + 0x1d, 0x52, 0x80, 0x53, 0xc5, 0x64, 0x5b, 0x33, 0x5d, 0xa4, 0xe4, 0xa9, 0xba, 0xc1, 0xb5, 0x18, + 0x41, 0xba, 0x8c, 0x13, 0x42, 0x4c, 0x0f, 0x20, 0xa8, 0xda, 0x47, 0x2c, 0x7d, 0x7d, 0x06, 0x32, + 0xa1, 0xb1, 0x4e, 0x3a, 0x0f, 0xd9, 0xdb, 0xda, 0x5d, 0x4d, 0xe5, 0xa3, 0x3a, 0x8d, 0x44, 0x06, + 0xcb, 0xea, 0x6c, 0x5c, 0x7f, 0x1e, 0x16, 0x88, 0x89, 0xdd, 0xf7, 0x90, 0xa3, 0xea, 0xa6, 0xe6, + 0xba, 0x24, 0x68, 0x29, 0x62, 0x2a, 0x61, 0x5d, 0x0d, 0xab, 0xca, 0x5c, 0x23, 0xad, 0xc3, 0x3c, + 0x41, 0x74, 0xfb, 0xa6, 0x67, 0xf4, 0x4c, 0xa4, 0xe2, 0x97, 0x07, 0x97, 0x14, 0x62, 0xdf, 0xb3, + 0x39, 0x6c, 0xb1, 0xc3, 0x0c, 0xb0, 0x47, 0xae, 0xb4, 0x09, 0x8f, 0x13, 0x58, 0x07, 0x59, 0xc8, + 0xd1, 0x3c, 0xa4, 0xa2, 0xcf, 0xf7, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xa5, 0x1e, 0x68, 0xee, 0x81, + 0xbc, 0x80, 0x09, 0x36, 0x62, 0xb2, 0xa0, 0x9c, 0xc1, 0x86, 0x5b, 0xcc, 0xae, 0x42, 0xcc, 0x4a, + 0x56, 0xeb, 0x86, 0xe6, 0x1e, 0x48, 0x45, 0x38, 0x45, 0x58, 0x5c, 0xcf, 0x31, 0xac, 0x8e, 0xaa, + 0x1f, 0x20, 0xfd, 0x8e, 0xda, 0xf7, 0xda, 0x57, 0xe4, 0x47, 0xc3, 0xf7, 0x27, 0x1e, 0x36, 0x88, + 0x4d, 0x19, 0x9b, 0xec, 0x7b, 0xed, 0x2b, 0x52, 0x03, 0xb2, 0x78, 0x31, 0xba, 0xc6, 0xab, 0x48, + 0x6d, 0xdb, 0x0e, 0xe9, 0x2c, 0xb9, 0x31, 0x3b, 0x3b, 0x14, 0xc1, 0x95, 0x1a, 0x03, 0xec, 0xd8, + 0x2d, 0x54, 0x4c, 0x36, 0xea, 0x95, 0xca, 0xa6, 0x92, 0xe1, 0x2c, 0xd7, 0x6d, 0x07, 0x27, 0x54, + 0xc7, 0xf6, 0x03, 0x9c, 0xa1, 0x09, 0xd5, 0xb1, 0x79, 0x78, 0xd7, 0x61, 0x5e, 0xd7, 0xe9, 0x33, + 0x1b, 0xba, 0xca, 0x46, 0x7c, 0x57, 0x16, 0x07, 0x82, 0xa5, 0xeb, 0x5b, 0xd4, 0x80, 0xe5, 0xb8, + 0x2b, 0x5d, 0x85, 0x47, 0x82, 0x60, 0x85, 0x81, 0x73, 0x23, 0x4f, 0x39, 0x0c, 0x5d, 0x87, 0xf9, + 0xde, 0xe1, 0x28, 0x50, 0x1a, 0xb8, 0x63, 0xef, 0x70, 0x18, 0xf6, 0x24, 0x79, 0x6d, 0x73, 0x90, + 0xae, 0x79, 0xa8, 0x25, 0x9f, 0x0e, 0x5b, 0x87, 0x14, 0xd2, 0x2a, 0x88, 0xba, 0xae, 0x22, 0x4b, + 0x6b, 0x9a, 0x48, 0xd5, 0x1c, 0x64, 0x69, 0xae, 0x7c, 0x36, 0x6c, 0x9c, 0xd3, 0xf5, 0x0a, 0xd1, + 0x96, 0x88, 0x52, 0x7a, 0x06, 0xe6, 0xec, 0xe6, 0x6d, 0x9d, 0x66, 0x96, 0xda, 0x73, 0x50, 0xdb, + 0x78, 0x45, 0x7e, 0x82, 0x84, 0x29, 0x8f, 0x15, 0x24, 0xaf, 0xea, 0x44, 0x2c, 0x3d, 0x0d, 0xa2, + 0xee, 0x1e, 0x68, 0x4e, 0x8f, 0xb4, 0x76, 0xb7, 0xa7, 0xe9, 0x48, 0x7e, 0x92, 0x9a, 0x52, 0xf9, + 0x2e, 0x17, 0xe3, 0xcc, 0x76, 0xef, 0x19, 0x6d, 0x8f, 0x33, 0x3e, 0x45, 0x33, 0x9b, 0xc8, 0x18, + 0xdb, 0x2d, 0x58, 0xe8, 0x5b, 0x86, 0xe5, 0x21, 0xa7, 0xe7, 0x20, 0x3c, 0xc4, 0xd3, 0x9d, 0x28, + 0xff, 0xeb, 0xcc, 0x31, 0x63, 0xf8, 0x7e, 0xd8, 0x9a, 0x26, 0x80, 0x32, 0xdf, 0x1f, 0x15, 0x2e, + 0x15, 0x21, 0x1b, 0xce, 0x0b, 0x29, 0x0d, 0x34, 0x33, 0x44, 0x01, 0xf7, 0xd8, 0x72, 0x6d, 0x13, + 0x77, 0xc7, 0xcf, 0x55, 0xc4, 0x18, 0xee, 0xd2, 0xdb, 0xd5, 0xbd, 0x8a, 0xaa, 0xec, 0xef, 0xee, + 0x55, 0x77, 0x2a, 0x62, 0xfc, 0x99, 0x74, 0xea, 0x87, 0x33, 0xe2, 0xfd, 0xfb, 0xf7, 0xef, 0xc7, + 0x96, 0xbe, 0x13, 0x83, 0xdc, 0xe0, 0x64, 0x2c, 0xfd, 0x2c, 0x9c, 0xe6, 0xaf, 0xb1, 0x2e, 0xf2, + 0xd4, 0x7b, 0x86, 0x43, 0x52, 0xb5, 0xab, 0xd1, 0xd9, 0xd2, 0x8f, 0xf2, 0x02, 0xb3, 0x6a, 0x20, + 0xef, 0x25, 0xc3, 0xc1, 0x89, 0xd8, 0xd5, 0x3c, 0x69, 0x1b, 0xce, 0x5a, 0xb6, 0xea, 0x7a, 0x9a, + 0xd5, 0xd2, 0x9c, 0x96, 0x1a, 0x1c, 0x20, 0xa8, 0x9a, 0xae, 0x23, 0xd7, 0xb5, 0x69, 0x8b, 0xf0, + 0x59, 0x1e, 0xb3, 0xec, 0x06, 0x33, 0x0e, 0x6a, 0x67, 0x89, 0x99, 0x0e, 0x65, 0x44, 0xfc, 0xb8, + 0x8c, 0x78, 0x14, 0xd2, 0x5d, 0xad, 0xa7, 0x22, 0xcb, 0x73, 0x0e, 0xc9, 0x3c, 0x97, 0x52, 0x52, + 0x5d, 0xad, 0x57, 0xc1, 0xd7, 0x1f, 0xdd, 0x1a, 0x84, 0xe3, 0xf8, 0xfd, 0x38, 0x64, 0xc3, 0x33, + 0x1d, 0x1e, 0x91, 0x75, 0x52, 0xbf, 0x05, 0xb2, 0xc3, 0x3f, 0xf1, 0xd0, 0x09, 0x70, 0xa5, 0x8c, + 0x0b, 0x7b, 0x71, 0x9a, 0x4e, 0x5a, 0x0a, 0x45, 0xe2, 0xa6, 0x8a, 0xf7, 0x34, 0xa2, 0xf3, 0x7b, + 0x4a, 0x61, 0x57, 0xd2, 0x16, 0x4c, 0xdf, 0x76, 0x09, 0xf7, 0x34, 0xe1, 0x7e, 0xe2, 0xe1, 0xdc, + 0x37, 0x1b, 0x84, 0x3c, 0x7d, 0xb3, 0xa1, 0xee, 0xd6, 0x94, 0x9d, 0xd2, 0xb6, 0xc2, 0xe0, 0xd2, + 0x19, 0x48, 0x98, 0xda, 0xab, 0x87, 0x83, 0x2d, 0x80, 0x88, 0x26, 0x0d, 0xfc, 0x19, 0x48, 0xdc, + 0x43, 0xda, 0x9d, 0xc1, 0xc2, 0x4b, 0x44, 0x1f, 0x61, 0xea, 0xaf, 0x42, 0x92, 0xc4, 0x4b, 0x02, + 0x60, 0x11, 0x13, 0xa7, 0xa4, 0x14, 0x24, 0xca, 0x35, 0x05, 0xa7, 0xbf, 0x08, 0x59, 0x2a, 0x55, + 0xeb, 0xd5, 0x4a, 0xb9, 0x22, 0xc6, 0x96, 0xd6, 0x61, 0x9a, 0x06, 0x01, 0x6f, 0x0d, 0x3f, 0x0c, + 0xe2, 0x14, 0xbb, 0x64, 0x1c, 0x02, 0xd7, 0xee, 0xef, 0x6c, 0x54, 0x14, 0x31, 0x16, 0x5e, 0x5e, + 0x17, 0xb2, 0xe1, 0x71, 0xee, 0xa7, 0x93, 0x53, 0x7f, 0x2f, 0x40, 0x26, 0x34, 0x9e, 0xe1, 0xc1, + 0x40, 0x33, 0x4d, 0xfb, 0x9e, 0xaa, 0x99, 0x86, 0xe6, 0xb2, 0xa4, 0x00, 0x22, 0x2a, 0x61, 0xc9, + 0xa4, 0x8b, 0xf6, 0x53, 0x71, 0xfe, 0x4d, 0x01, 0xc4, 0xe1, 0xd1, 0x6e, 0xc8, 0x41, 0xe1, 0x63, + 0x75, 0xf0, 0x0d, 0x01, 0x72, 0x83, 0xf3, 0xdc, 0x90, 0x7b, 0xe7, 0x3f, 0x56, 0xf7, 0xde, 0x89, + 0xc1, 0xec, 0xc0, 0x14, 0x37, 0xa9, 0x77, 0x9f, 0x87, 0x39, 0xa3, 0x85, 0xba, 0x3d, 0xdb, 0x43, + 0x96, 0x7e, 0xa8, 0x9a, 0xe8, 0x2e, 0x32, 0xe5, 0x25, 0x52, 0x28, 0x56, 0x1f, 0x3e, 0x27, 0xae, + 0x54, 0x03, 0xdc, 0x36, 0x86, 0x15, 0xe7, 0xab, 0x9b, 0x95, 0x9d, 0x7a, 0x6d, 0xaf, 0xb2, 0x5b, + 0x7e, 0x59, 0xdd, 0xdf, 0xfd, 0xb9, 0xdd, 0xda, 0x4b, 0xbb, 0x8a, 0x68, 0x0c, 0x99, 0x7d, 0x84, + 0x5b, 0xbd, 0x0e, 0xe2, 0xb0, 0x53, 0xd2, 0x69, 0x18, 0xe7, 0x96, 0x38, 0x25, 0xcd, 0x43, 0x7e, + 0xb7, 0xa6, 0x36, 0xaa, 0x9b, 0x15, 0xb5, 0x72, 0xfd, 0x7a, 0xa5, 0xbc, 0xd7, 0xa0, 0x2f, 0xce, + 0xbe, 0xf5, 0xde, 0xe0, 0xa6, 0x7e, 0x3d, 0x0e, 0xf3, 0x63, 0x3c, 0x91, 0x4a, 0x6c, 0x66, 0xa7, + 0xaf, 0x11, 0xcf, 0x4d, 0xe2, 0xfd, 0x0a, 0x9e, 0x0a, 0xea, 0x9a, 0xe3, 0xb1, 0x11, 0xff, 0x69, + 0xc0, 0x51, 0xb2, 0x3c, 0xa3, 0x6d, 0x20, 0x87, 0x9d, 0x33, 0xd0, 0x41, 0x3e, 0x1f, 0xc8, 0xe9, + 0x51, 0xc3, 0xcf, 0x80, 0xd4, 0xb3, 0x5d, 0xc3, 0x33, 0xee, 0x22, 0xd5, 0xb0, 0xf8, 0xa1, 0x04, + 0x1e, 0xec, 0x13, 0x8a, 0xc8, 0x35, 0x55, 0xcb, 0xf3, 0xad, 0x2d, 0xd4, 0xd1, 0x86, 0xac, 0x71, + 0x01, 0x8f, 0x2b, 0x22, 0xd7, 0xf8, 0xd6, 0xe7, 0x21, 0xdb, 0xb2, 0xfb, 0x78, 0x4c, 0xa2, 0x76, + 0xb8, 0x5f, 0x08, 0x4a, 0x86, 0xca, 0x7c, 0x13, 0x36, 0xc7, 0x06, 0xa7, 0x21, 0x59, 0x25, 0x43, + 0x65, 0xd4, 0xe4, 0x29, 0xc8, 0x6b, 0x9d, 0x8e, 0x83, 0xc9, 0x39, 0x11, 0x9d, 0xcc, 0x73, 0xbe, + 0x98, 0x18, 0x2e, 0xde, 0x84, 0x14, 0x8f, 0x03, 0x6e, 0xc9, 0x38, 0x12, 0x6a, 0x8f, 0x9e, 0x49, + 0xc5, 0x96, 0xd3, 0x4a, 0xca, 0xe2, 0xca, 0xf3, 0x90, 0x35, 0x5c, 0x35, 0x38, 0x1c, 0x8d, 0x9d, + 0x8b, 0x2d, 0xa7, 0x94, 0x8c, 0xe1, 0xfa, 0xa7, 0x61, 0x4b, 0x6f, 0xc5, 0x20, 0x37, 0x78, 0xb8, + 0x2b, 0x6d, 0x42, 0xca, 0xb4, 0x75, 0x8d, 0xa4, 0x16, 0xfd, 0x65, 0x61, 0x39, 0xe2, 0x3c, 0x78, + 0x65, 0x9b, 0xd9, 0x2b, 0x3e, 0x72, 0xf1, 0x9f, 0x05, 0x48, 0x71, 0xb1, 0x74, 0x0a, 0x12, 0x3d, + 0xcd, 0x3b, 0x20, 0x74, 0xc9, 0x8d, 0x98, 0x28, 0x28, 0xe4, 0x1a, 0xcb, 0xdd, 0x9e, 0x66, 0x91, + 0x14, 0x60, 0x72, 0x7c, 0x8d, 0xd7, 0xd5, 0x44, 0x5a, 0x8b, 0x8c, 0xfd, 0x76, 0xb7, 0x8b, 0x2c, + 0xcf, 0xe5, 0xeb, 0xca, 0xe4, 0x65, 0x26, 0x96, 0x9e, 0x85, 0x39, 0xcf, 0xd1, 0x0c, 0x73, 0xc0, + 0x36, 0x41, 0x6c, 0x45, 0xae, 0xf0, 0x8d, 0x8b, 0x70, 0x86, 0xf3, 0xb6, 0x90, 0xa7, 0xe9, 0x07, + 0xa8, 0x15, 0x80, 0xa6, 0xc9, 0xc9, 0xe1, 0x69, 0x66, 0xb0, 0xc9, 0xf4, 0x1c, 0xbb, 0xf4, 0x3d, + 0x01, 0xe6, 0xf8, 0x8b, 0x4a, 0xcb, 0x0f, 0xd6, 0x0e, 0x80, 0x66, 0x59, 0xb6, 0x17, 0x0e, 0xd7, + 0x68, 0x2a, 0x8f, 0xe0, 0x56, 0x4a, 0x3e, 0x48, 0x09, 0x11, 0x2c, 0x76, 0x01, 0x02, 0xcd, 0xb1, + 0x61, 0x3b, 0x0b, 0x19, 0x76, 0x72, 0x4f, 0x7e, 0xfe, 0xa1, 0xaf, 0xb6, 0x40, 0x45, 0xf8, 0x8d, + 0x46, 0x5a, 0x80, 0x64, 0x13, 0x75, 0x0c, 0x8b, 0x9d, 0x27, 0xd2, 0x0b, 0x7e, 0x4a, 0x99, 0xf0, + 0x4f, 0x29, 0x37, 0x6e, 0xc1, 0xbc, 0x6e, 0x77, 0x87, 0xdd, 0xdd, 0x10, 0x87, 0x5e, 0xaf, 0xdd, + 0x1b, 0xc2, 0xe7, 0x20, 0x18, 0x31, 0xbf, 0x12, 0x8b, 0x6f, 0xd5, 0x37, 0xbe, 0x16, 0x5b, 0xdc, + 0xa2, 0xb8, 0x3a, 0x7f, 0x4c, 0x05, 0xb5, 0x4d, 0xa4, 0x63, 0xd7, 0xe1, 0x47, 0x9f, 0x84, 0xe7, + 0x3a, 0x86, 0x77, 0xd0, 0x6f, 0xae, 0xe8, 0x76, 0x77, 0xb5, 0x63, 0x77, 0xec, 0xe0, 0xe7, 0x2e, + 0x7c, 0x45, 0x2e, 0xc8, 0x7f, 0xec, 0x27, 0xaf, 0xb4, 0x2f, 0x5d, 0x8c, 0xfc, 0x7d, 0xac, 0xb8, + 0x0b, 0xf3, 0xcc, 0x58, 0x25, 0x67, 0xee, 0xf4, 0xd5, 0x40, 0x7a, 0xe8, 0xb9, 0x8b, 0xfc, 0xcd, + 0x77, 0x49, 0xaf, 0x56, 0xe6, 0x18, 0x14, 0xeb, 0xe8, 0x0b, 0x44, 0x51, 0x81, 0x47, 0x06, 0xf8, + 0xe8, 0xbe, 0x44, 0x4e, 0x04, 0xe3, 0x77, 0x18, 0xe3, 0x7c, 0x88, 0xb1, 0xc1, 0xa0, 0xc5, 0x32, + 0xcc, 0x9e, 0x84, 0xeb, 0x1f, 0x19, 0x57, 0x16, 0x85, 0x49, 0xb6, 0x20, 0x4f, 0x48, 0xf4, 0xbe, + 0xeb, 0xd9, 0x5d, 0x52, 0xf4, 0x1e, 0x4e, 0xf3, 0x4f, 0xef, 0xd2, 0x8d, 0x92, 0xc3, 0xb0, 0xb2, + 0x8f, 0x2a, 0x16, 0x81, 0xfc, 0xcc, 0xd0, 0x42, 0xba, 0x19, 0xc1, 0xf0, 0x36, 0x73, 0xc4, 0xb7, + 0x2f, 0x7e, 0x16, 0x16, 0xf0, 0xff, 0xa4, 0x26, 0x85, 0x3d, 0x89, 0x3e, 0x65, 0x92, 0xbf, 0xf7, + 0x1a, 0xdd, 0x8b, 0xf3, 0x3e, 0x41, 0xc8, 0xa7, 0xd0, 0x2a, 0x76, 0x90, 0xe7, 0x21, 0xc7, 0x55, + 0x35, 0x73, 0x9c, 0x7b, 0xa1, 0xd7, 0x74, 0xf9, 0x4b, 0xef, 0x0d, 0xae, 0xe2, 0x16, 0x45, 0x96, + 0x4c, 0xb3, 0xb8, 0x0f, 0xa7, 0xc7, 0x64, 0xc5, 0x04, 0x9c, 0xaf, 0x33, 0xce, 0x85, 0x91, 0xcc, + 0xc0, 0xb4, 0x75, 0xe0, 0x72, 0x7f, 0x2d, 0x27, 0xe0, 0xfc, 0x7d, 0xc6, 0x29, 0x31, 0x2c, 0x5f, + 0x52, 0xcc, 0x78, 0x13, 0xe6, 0xee, 0x22, 0xa7, 0x69, 0xbb, 0xec, 0x68, 0x64, 0x02, 0xba, 0x37, + 0x18, 0x5d, 0x9e, 0x01, 0xc9, 0x59, 0x09, 0xe6, 0xba, 0x0a, 0xa9, 0xb6, 0xa6, 0xa3, 0x09, 0x28, + 0xbe, 0xcc, 0x28, 0x66, 0xb0, 0x3d, 0x86, 0x96, 0x20, 0xdb, 0xb1, 0x59, 0x5b, 0x8a, 0x86, 0xbf, + 0xc9, 0xe0, 0x19, 0x8e, 0x61, 0x14, 0x3d, 0xbb, 0xd7, 0x37, 0x71, 0xcf, 0x8a, 0xa6, 0xf8, 0x03, + 0x4e, 0xc1, 0x31, 0x8c, 0xe2, 0x04, 0x61, 0xfd, 0x43, 0x4e, 0xe1, 0x86, 0xe2, 0xf9, 0x22, 0x64, + 0x6c, 0xcb, 0x3c, 0xb4, 0xad, 0x49, 0x9c, 0xf8, 0x23, 0xc6, 0x00, 0x0c, 0x82, 0x09, 0xae, 0x41, + 0x7a, 0xd2, 0x85, 0xf8, 0xe3, 0xf7, 0xf8, 0xf6, 0xe0, 0x2b, 0xb0, 0x05, 0x79, 0x5e, 0xa0, 0x0c, + 0xdb, 0x9a, 0x80, 0xe2, 0x4f, 0x18, 0x45, 0x2e, 0x04, 0x63, 0x8f, 0xe1, 0x21, 0xd7, 0xeb, 0xa0, + 0x49, 0x48, 0xde, 0xe2, 0x8f, 0xc1, 0x20, 0x2c, 0x94, 0x4d, 0x64, 0xe9, 0x07, 0x93, 0x31, 0x7c, + 0x95, 0x87, 0x92, 0x63, 0x30, 0x45, 0x19, 0x66, 0xbb, 0x9a, 0xe3, 0x1e, 0x68, 0xe6, 0x44, 0xcb, + 0xf1, 0xa7, 0x8c, 0x23, 0xeb, 0x83, 0x58, 0x44, 0xfa, 0xd6, 0x49, 0x68, 0xbe, 0xc6, 0x23, 0x12, + 0x82, 0xb1, 0xad, 0xe7, 0x7a, 0xe4, 0x00, 0xea, 0x24, 0x6c, 0x5f, 0xe7, 0x5b, 0x8f, 0x62, 0x77, + 0xc2, 0x8c, 0xd7, 0x20, 0xed, 0x1a, 0xaf, 0x4e, 0x44, 0xf3, 0x67, 0x7c, 0xa5, 0x09, 0x00, 0x83, + 0x5f, 0x86, 0x33, 0x63, 0xdb, 0xc4, 0x04, 0x64, 0x7f, 0xce, 0xc8, 0x4e, 0x8d, 0x69, 0x15, 0xac, + 0x24, 0x9c, 0x94, 0xf2, 0x2f, 0x78, 0x49, 0x40, 0x43, 0x5c, 0x75, 0xfc, 0xa2, 0xe0, 0x6a, 0xed, + 0x93, 0x45, 0xed, 0x2f, 0x79, 0xd4, 0x28, 0x76, 0x20, 0x6a, 0x7b, 0x70, 0x8a, 0x31, 0x9e, 0x6c, + 0x5d, 0xbf, 0xc1, 0x0b, 0x2b, 0x45, 0xef, 0x0f, 0xae, 0xee, 0xcf, 0xc3, 0xa2, 0x1f, 0x4e, 0x3e, + 0x91, 0xba, 0x6a, 0x57, 0xeb, 0x4d, 0xc0, 0xfc, 0x4d, 0xc6, 0xcc, 0x2b, 0xbe, 0x3f, 0xd2, 0xba, + 0x3b, 0x5a, 0x0f, 0x93, 0xdf, 0x02, 0x99, 0x93, 0xf7, 0x2d, 0x07, 0xe9, 0x76, 0xc7, 0x32, 0x5e, + 0x45, 0xad, 0x09, 0xa8, 0xff, 0x6a, 0x68, 0xa9, 0xf6, 0x43, 0x70, 0xcc, 0x5c, 0x05, 0xd1, 0x9f, + 0x55, 0x54, 0xa3, 0xdb, 0xb3, 0x1d, 0x2f, 0x82, 0xf1, 0xaf, 0xf9, 0x4a, 0xf9, 0xb8, 0x2a, 0x81, + 0x15, 0x2b, 0x90, 0x23, 0x97, 0x93, 0xa6, 0xe4, 0xdf, 0x30, 0xa2, 0xd9, 0x00, 0xc5, 0x0a, 0x87, + 0x6e, 0x77, 0x7b, 0x9a, 0x33, 0x49, 0xfd, 0xfb, 0x5b, 0x5e, 0x38, 0x18, 0x84, 0x15, 0x0e, 0xef, + 0xb0, 0x87, 0x70, 0xb7, 0x9f, 0x80, 0xe1, 0x5b, 0xbc, 0x70, 0x70, 0x0c, 0xa3, 0xe0, 0x03, 0xc3, + 0x04, 0x14, 0x7f, 0xc7, 0x29, 0x38, 0x06, 0x53, 0x7c, 0x26, 0x68, 0xb4, 0x0e, 0xea, 0x18, 0xae, + 0xe7, 0xd0, 0x39, 0xf8, 0xe1, 0x54, 0xdf, 0x7e, 0x6f, 0x70, 0x08, 0x53, 0x42, 0xd0, 0xe2, 0x4d, + 0xc8, 0x0f, 0x8d, 0x18, 0x52, 0xd4, 0x37, 0x0b, 0xf2, 0x2f, 0x7c, 0xc0, 0x8a, 0xd1, 0xe0, 0x84, + 0x51, 0xdc, 0xc6, 0xeb, 0x3e, 0x38, 0x07, 0x44, 0x93, 0xbd, 0xf6, 0x81, 0xbf, 0xf4, 0x03, 0x63, + 0x40, 0xf1, 0x3a, 0xcc, 0x0e, 0xcc, 0x00, 0xd1, 0x54, 0xbf, 0xc8, 0xa8, 0xb2, 0xe1, 0x11, 0xa0, + 0xb8, 0x0e, 0x09, 0xdc, 0xcf, 0xa3, 0xe1, 0xbf, 0xc4, 0xe0, 0xc4, 0xbc, 0xf8, 0x29, 0x48, 0xf1, + 0x3e, 0x1e, 0x0d, 0xfd, 0x65, 0x06, 0xf5, 0x21, 0x18, 0xce, 0x7b, 0x78, 0x34, 0xfc, 0x57, 0x38, + 0x9c, 0x43, 0x30, 0x7c, 0xf2, 0x10, 0xfe, 0xc3, 0xaf, 0x26, 0x58, 0x1d, 0xe6, 0xb1, 0xbb, 0x06, + 0x33, 0xac, 0x79, 0x47, 0xa3, 0xbf, 0xc0, 0x6e, 0xce, 0x11, 0xc5, 0xcb, 0x90, 0x9c, 0x30, 0xe0, + 0xbf, 0xc6, 0xa0, 0xd4, 0xbe, 0x58, 0x86, 0x4c, 0xa8, 0x61, 0x47, 0xc3, 0x7f, 0x9d, 0xc1, 0xc3, + 0x28, 0xec, 0x3a, 0x6b, 0xd8, 0xd1, 0x04, 0xbf, 0xc1, 0x5d, 0x67, 0x08, 0x1c, 0x36, 0xde, 0xab, + 0xa3, 0xd1, 0xbf, 0xc9, 0xa3, 0xce, 0x21, 0xc5, 0x17, 0x21, 0xed, 0xd7, 0xdf, 0x68, 0xfc, 0x6f, + 0x31, 0x7c, 0x80, 0xc1, 0x11, 0x08, 0xd5, 0xff, 0x68, 0x8a, 0xdf, 0xe6, 0x11, 0x08, 0xa1, 0xf0, + 0x36, 0x1a, 0xee, 0xe9, 0xd1, 0x4c, 0xbf, 0xc3, 0xb7, 0xd1, 0x50, 0x4b, 0xc7, 0xab, 0x49, 0xca, + 0x60, 0x34, 0xc5, 0xef, 0xf2, 0xd5, 0x24, 0xf6, 0xd8, 0x8d, 0xe1, 0x26, 0x19, 0xcd, 0xf1, 0x7b, + 0xdc, 0x8d, 0xa1, 0x1e, 0x59, 0xac, 0x83, 0x34, 0xda, 0x20, 0xa3, 0xf9, 0xbe, 0xc8, 0xf8, 0xe6, + 0x46, 0xfa, 0x63, 0xf1, 0x25, 0x38, 0x35, 0xbe, 0x39, 0x46, 0xb3, 0x7e, 0xe9, 0x83, 0xa1, 0xd7, + 0x99, 0x70, 0x6f, 0x2c, 0xee, 0x05, 0x55, 0x36, 0xdc, 0x18, 0xa3, 0x69, 0x5f, 0xff, 0x60, 0xb0, + 0xd0, 0x86, 0xfb, 0x62, 0xb1, 0x04, 0x10, 0xf4, 0xa4, 0x68, 0xae, 0x37, 0x18, 0x57, 0x08, 0x84, + 0xb7, 0x06, 0x6b, 0x49, 0xd1, 0xf8, 0x2f, 0xf3, 0xad, 0xc1, 0x10, 0x78, 0x6b, 0xf0, 0x6e, 0x14, + 0x8d, 0x7e, 0x93, 0x6f, 0x0d, 0x0e, 0x29, 0x5e, 0x83, 0x94, 0xd5, 0x37, 0x4d, 0x9c, 0x5b, 0xd2, + 0xc3, 0x3f, 0x23, 0x92, 0xff, 0xed, 0x43, 0x06, 0xe6, 0x80, 0xe2, 0x3a, 0x24, 0x51, 0xb7, 0x89, + 0x5a, 0x51, 0xc8, 0x7f, 0xff, 0x90, 0xd7, 0x13, 0x6c, 0x5d, 0x7c, 0x11, 0x80, 0xbe, 0x4c, 0x93, + 0x5f, 0x89, 0x22, 0xb0, 0xff, 0xf1, 0x21, 0xfb, 0x42, 0x21, 0x80, 0x04, 0x04, 0xf4, 0x7b, 0x87, + 0x87, 0x13, 0xbc, 0x37, 0x48, 0x40, 0x5e, 0xc0, 0xaf, 0xc2, 0xcc, 0x6d, 0xd7, 0xb6, 0x3c, 0xad, + 0x13, 0x85, 0xfe, 0x4f, 0x86, 0xe6, 0xf6, 0x38, 0x60, 0x5d, 0xdb, 0x41, 0x9e, 0xd6, 0x71, 0xa3, + 0xb0, 0xff, 0xc5, 0xb0, 0x3e, 0x00, 0x83, 0x75, 0xcd, 0xf5, 0x26, 0x79, 0xee, 0xff, 0xe6, 0x60, + 0x0e, 0xc0, 0x4e, 0xe3, 0xff, 0xef, 0xa0, 0xc3, 0x28, 0xec, 0xfb, 0xdc, 0x69, 0x66, 0x5f, 0xfc, + 0x14, 0xa4, 0xf1, 0xbf, 0xf4, 0xab, 0x9d, 0x08, 0xf0, 0xff, 0x30, 0x70, 0x80, 0xc0, 0x77, 0x76, + 0xbd, 0x96, 0x67, 0x44, 0x07, 0xfb, 0x7f, 0xd9, 0x4a, 0x73, 0xfb, 0x62, 0x09, 0x32, 0xae, 0xd7, + 0x6a, 0xf5, 0xd9, 0x44, 0x13, 0x01, 0xff, 0xd1, 0x87, 0xfe, 0x4b, 0xae, 0x8f, 0xd9, 0x38, 0x3f, + 0xfe, 0xb0, 0x0e, 0xb6, 0xec, 0x2d, 0x9b, 0x1e, 0xd3, 0xc1, 0xeb, 0x49, 0x78, 0x4c, 0xb7, 0xbb, + 0x4d, 0xdb, 0x5d, 0x0d, 0x95, 0xa1, 0x55, 0xdb, 0x62, 0xf6, 0x52, 0xdc, 0xb6, 0xd0, 0xe2, 0xc9, + 0x0e, 0xe6, 0x96, 0xce, 0x40, 0xb2, 0xd1, 0x6f, 0x36, 0x0f, 0x25, 0x11, 0xe2, 0x6e, 0xbf, 0xc9, + 0xbe, 0x2c, 0xc1, 0xff, 0x2e, 0x7d, 0x3f, 0x0e, 0x99, 0x86, 0xd6, 0xed, 0x99, 0xa8, 0x66, 0xa1, + 0x5a, 0x5b, 0x92, 0x61, 0x9a, 0x3c, 0xc7, 0x0b, 0xc4, 0x48, 0xb8, 0x31, 0xa5, 0xb0, 0x6b, 0x5f, + 0xb3, 0x46, 0x4e, 0x2b, 0x63, 0xbe, 0x66, 0xcd, 0xd7, 0x5c, 0xa0, 0x87, 0x95, 0xbe, 0xe6, 0x82, + 0xaf, 0xb9, 0x48, 0x8e, 0x2c, 0xe3, 0xbe, 0xe6, 0xa2, 0xaf, 0x59, 0x27, 0x47, 0xf2, 0xb3, 0xbe, + 0x66, 0xdd, 0xd7, 0x5c, 0x22, 0x87, 0xf0, 0x09, 0x5f, 0x73, 0xc9, 0xd7, 0x5c, 0x26, 0x67, 0xef, + 0x73, 0xbe, 0xe6, 0xb2, 0xaf, 0xb9, 0x42, 0xce, 0xdb, 0x25, 0x5f, 0x73, 0xc5, 0xd7, 0x5c, 0x25, + 0x1f, 0x90, 0xcc, 0xf8, 0x9a, 0xab, 0xd2, 0x22, 0xcc, 0xd0, 0x27, 0x7b, 0x9e, 0xfc, 0x28, 0x9b, + 0xbf, 0x31, 0xa5, 0x70, 0x41, 0xa0, 0x7b, 0x81, 0x7c, 0x24, 0x32, 0x1d, 0xe8, 0x5e, 0x08, 0x74, + 0x6b, 0xe4, 0x53, 0x69, 0x31, 0xd0, 0xad, 0x05, 0xba, 0x0b, 0xf2, 0x2c, 0x5e, 0xfe, 0x40, 0x77, + 0x21, 0xd0, 0x5d, 0x94, 0x73, 0x38, 0xfe, 0x81, 0xee, 0x62, 0xa0, 0x5b, 0x97, 0xf3, 0xe7, 0x84, + 0xe5, 0x6c, 0xa0, 0x5b, 0x97, 0x9e, 0x83, 0x8c, 0xdb, 0x6f, 0xaa, 0xec, 0x1b, 0x02, 0xf2, 0x31, + 0x4a, 0x66, 0x0d, 0x56, 0x70, 0x46, 0x90, 0x45, 0xbd, 0x31, 0xa5, 0x80, 0xdb, 0x6f, 0xb2, 0xfa, + 0xb8, 0x91, 0x05, 0x72, 0x9c, 0xa0, 0x92, 0x4f, 0x30, 0x37, 0x36, 0xdf, 0x7e, 0x50, 0x98, 0xfa, + 0xee, 0x83, 0xc2, 0xd4, 0xbf, 0x3c, 0x28, 0x4c, 0xbd, 0xf3, 0xa0, 0x20, 0xbc, 0xff, 0xa0, 0x20, + 0xfc, 0xf8, 0x41, 0x41, 0xb8, 0x7f, 0x54, 0x10, 0xbe, 0x7a, 0x54, 0x10, 0xbe, 0x71, 0x54, 0x10, + 0xbe, 0x7d, 0x54, 0x10, 0xde, 0x3e, 0x2a, 0x4c, 0x7d, 0xf7, 0xa8, 0x20, 0xbc, 0x73, 0x54, 0x10, + 0x7e, 0x78, 0x54, 0x98, 0x7a, 0xff, 0xa8, 0x20, 0xfc, 0xf8, 0xa8, 0x30, 0x75, 0xff, 0x07, 0x85, + 0xa9, 0xe6, 0x34, 0x49, 0xa3, 0x0b, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xbb, 0x5a, 0xb4, + 0xf9, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeboth/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeboth/one.pb.go index ff3ce4d5c..3fe98be98 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeboth/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeboth/one.pb.go @@ -553,242 +553,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3751 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0xa6, 0x99, 0x33, 0xa3, 0x11, 0xf5, 0x4b, 0x5e, 0x73, 0xe5, 0x78, 0x56, 0xab, - 0xd8, 0xb1, 0x6c, 0xd7, 0x5a, 0x5b, 0x97, 0xbd, 0xcc, 0x36, 0x31, 0x46, 0xd2, 0x58, 0xab, 0x85, - 0x6e, 0xe1, 0x48, 0x89, 0x9d, 0x3c, 0x10, 0x1c, 0xce, 0x3f, 0x23, 0xee, 0x72, 0xc8, 0x29, 0xc9, - 0x59, 0x5b, 0x7e, 0xda, 0xc0, 0xbd, 0x20, 0x08, 0x7a, 0x2f, 0xd0, 0xd8, 0x71, 0xdc, 0x34, 0x40, - 0xeb, 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x41, 0x9f, 0xfa, 0x92, 0xd6, 0x4f, 0x45, 0xf2, 0xd6, 0x87, - 0x3c, 0x64, 0x55, 0x03, 0x4d, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x0d, 0xb0, 0x2f, 0xc5, 0x7f, 0x23, - 0x39, 0x17, 0x2d, 0x47, 0x01, 0x12, 0xf7, 0x49, 0xe2, 0x39, 0xe7, 0xfb, 0x78, 0x78, 0xfe, 0xf3, - 0x9f, 0x73, 0xf8, 0x0f, 0xe1, 0x73, 0x2b, 0x30, 0xd7, 0x72, 0x9c, 0x96, 0x85, 0x2f, 0x75, 0x5c, - 0xc7, 0x77, 0xea, 0xdd, 0xe6, 0xa5, 0x06, 0xf6, 0x0c, 0xd7, 0xec, 0xf8, 0x8e, 0xbb, 0x48, 0x65, - 0x68, 0x92, 0x59, 0x2c, 0x0a, 0x8b, 0xf9, 0x1d, 0x98, 0x7a, 0xc1, 0xb4, 0xf0, 0x46, 0x60, 0x58, - 0xc3, 0x3e, 0xba, 0x0a, 0xa9, 0xa6, 0x69, 0x61, 0x45, 0x9a, 0x4b, 0x2e, 0xe4, 0x97, 0x1e, 0x5b, - 0xec, 0x03, 0x2d, 0xf6, 0x22, 0xf6, 0x89, 0x58, 0xa5, 0x88, 0xf9, 0x77, 0x53, 0x30, 0x3d, 0x44, - 0x8b, 0x10, 0xa4, 0x6c, 0xbd, 0x4d, 0x18, 0xa5, 0x85, 0x9c, 0x4a, 0xff, 0x47, 0x0a, 0x8c, 0x77, - 0x74, 0xe3, 0xb6, 0xde, 0xc2, 0x4a, 0x82, 0x8a, 0xc5, 0x25, 0x2a, 0x01, 0x34, 0x70, 0x07, 0xdb, - 0x0d, 0x6c, 0x1b, 0xc7, 0x4a, 0x72, 0x2e, 0xb9, 0x90, 0x53, 0x23, 0x12, 0xf4, 0x34, 0x4c, 0x75, - 0xba, 0x75, 0xcb, 0x34, 0xb4, 0x88, 0x19, 0xcc, 0x25, 0x17, 0xd2, 0xaa, 0xcc, 0x14, 0x1b, 0xa1, - 0xf1, 0x13, 0x30, 0xf9, 0x32, 0xd6, 0x6f, 0x47, 0x4d, 0xf3, 0xd4, 0xb4, 0x48, 0xc4, 0x11, 0xc3, - 0x75, 0x28, 0xb4, 0xb1, 0xe7, 0xe9, 0x2d, 0xac, 0xf9, 0xc7, 0x1d, 0xac, 0xa4, 0xe8, 0xd3, 0xcf, - 0x0d, 0x3c, 0x7d, 0xff, 0x93, 0xe7, 0x39, 0xea, 0xe0, 0xb8, 0x83, 0x51, 0x05, 0x72, 0xd8, 0xee, - 0xb6, 0x19, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x6e, 0xbb, 0x9f, 0x25, 0x4b, 0x60, 0x9c, 0x62, - 0xdc, 0xc3, 0xee, 0x1d, 0xd3, 0xc0, 0x4a, 0x86, 0x12, 0x3c, 0x31, 0x40, 0x50, 0x63, 0xfa, 0x7e, - 0x0e, 0x81, 0x43, 0xeb, 0x90, 0xc3, 0xaf, 0xf8, 0xd8, 0xf6, 0x4c, 0xc7, 0x56, 0xc6, 0x29, 0xc9, - 0xe3, 0x43, 0x56, 0x11, 0x5b, 0x8d, 0x7e, 0x8a, 0x10, 0x87, 0x2e, 0xc3, 0xb8, 0xd3, 0xf1, 0x4d, - 0xc7, 0xf6, 0x94, 0xec, 0x9c, 0xb4, 0x90, 0x5f, 0xfa, 0xc8, 0xd0, 0x44, 0xd8, 0x63, 0x36, 0xaa, - 0x30, 0x46, 0x5b, 0x20, 0x7b, 0x4e, 0xd7, 0x35, 0xb0, 0x66, 0x38, 0x0d, 0xac, 0x99, 0x76, 0xd3, - 0x51, 0x72, 0x94, 0xe0, 0xc2, 0xe0, 0x83, 0x50, 0xc3, 0x75, 0xa7, 0x81, 0xb7, 0xec, 0xa6, 0xa3, - 0x16, 0xbd, 0x9e, 0x6b, 0x74, 0x0e, 0x32, 0xde, 0xb1, 0xed, 0xeb, 0xaf, 0x28, 0x05, 0x9a, 0x21, - 0xfc, 0x6a, 0xfe, 0x7f, 0xd3, 0x30, 0x39, 0x4a, 0x8a, 0x5d, 0x87, 0x74, 0x93, 0x3c, 0xa5, 0x92, - 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x37, 0x88, 0x99, 0x9f, 0x30, 0x88, 0x15, 0xc8, 0xdb, 0xd8, 0xf3, - 0x71, 0x83, 0x65, 0x44, 0x72, 0xc4, 0x9c, 0x02, 0x06, 0x1a, 0x4c, 0xa9, 0xd4, 0x4f, 0x94, 0x52, - 0x2f, 0xc2, 0x64, 0xe0, 0x92, 0xe6, 0xea, 0x76, 0x4b, 0xe4, 0xe6, 0xa5, 0x38, 0x4f, 0x16, 0xab, - 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc4, 0x3d, 0xd7, 0x68, 0x03, 0xc0, 0xb1, 0xb1, 0xd3, 0xd4, 0x1a, - 0xd8, 0xb0, 0x94, 0xec, 0x29, 0x51, 0xda, 0x23, 0x26, 0x03, 0x51, 0x72, 0x98, 0xd4, 0xb0, 0xd0, - 0xb5, 0x30, 0xd5, 0xc6, 0x4f, 0xc9, 0x94, 0x1d, 0xb6, 0xc9, 0x06, 0xb2, 0xed, 0x10, 0x8a, 0x2e, - 0x26, 0x79, 0x8f, 0x1b, 0xfc, 0xc9, 0x72, 0xd4, 0x89, 0xc5, 0xd8, 0x27, 0x53, 0x39, 0x8c, 0x3d, - 0xd8, 0x84, 0x1b, 0xbd, 0x44, 0x1f, 0x85, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0x0a, 0x42, - 0xb8, 0xab, 0xb7, 0xf1, 0xec, 0x55, 0x28, 0xf6, 0x86, 0x07, 0xcd, 0x40, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x06, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x7b, 0x05, 0x26, 0x7a, 0x6e, 0x3f, 0x2a, 0x70, 0xfe, 0x8b, 0x19, 0x98, 0x19, 0x96, 0x73, - 0x43, 0xd3, 0xff, 0x1c, 0x64, 0xec, 0x6e, 0xbb, 0x8e, 0x5d, 0x25, 0x49, 0x19, 0xf8, 0x15, 0xaa, - 0x40, 0xda, 0xd2, 0xeb, 0xd8, 0x52, 0x52, 0x73, 0xd2, 0x42, 0x71, 0xe9, 0xe9, 0x91, 0xb2, 0x7a, - 0x71, 0x9b, 0x40, 0x54, 0x86, 0x44, 0x9f, 0x80, 0x14, 0x2f, 0x71, 0x84, 0xe1, 0xa9, 0xd1, 0x18, - 0x48, 0x2e, 0xaa, 0x14, 0x87, 0x1e, 0x81, 0x1c, 0xf9, 0xcb, 0x62, 0x9b, 0xa1, 0x3e, 0x67, 0x89, - 0x80, 0xc4, 0x15, 0xcd, 0x42, 0x96, 0xa6, 0x59, 0x03, 0x8b, 0xd6, 0x10, 0x5c, 0x93, 0x85, 0x69, - 0xe0, 0xa6, 0xde, 0xb5, 0x7c, 0xed, 0x8e, 0x6e, 0x75, 0x31, 0x4d, 0x98, 0x9c, 0x5a, 0xe0, 0xc2, - 0x4f, 0x11, 0x19, 0xba, 0x00, 0x79, 0x96, 0x95, 0xa6, 0xdd, 0xc0, 0xaf, 0xd0, 0xea, 0x93, 0x56, - 0x59, 0xa2, 0x6e, 0x11, 0x09, 0xb9, 0xfd, 0x2d, 0xcf, 0xb1, 0xc5, 0xd2, 0xd2, 0x5b, 0x10, 0x01, - 0xbd, 0xfd, 0x95, 0xfe, 0xc2, 0xf7, 0xe8, 0xf0, 0xc7, 0xeb, 0xcf, 0xc5, 0xf9, 0x6f, 0x25, 0x20, - 0x45, 0xf7, 0xdb, 0x24, 0xe4, 0x0f, 0x5e, 0xda, 0xaf, 0x6a, 0x1b, 0x7b, 0x87, 0x6b, 0xdb, 0x55, - 0x59, 0x42, 0x45, 0x00, 0x2a, 0x78, 0x61, 0x7b, 0xaf, 0x72, 0x20, 0x27, 0x82, 0xeb, 0xad, 0xdd, - 0x83, 0xcb, 0x2b, 0x72, 0x32, 0x00, 0x1c, 0x32, 0x41, 0x2a, 0x6a, 0xb0, 0xbc, 0x24, 0xa7, 0x91, - 0x0c, 0x05, 0x46, 0xb0, 0xf5, 0x62, 0x75, 0xe3, 0xf2, 0x8a, 0x9c, 0xe9, 0x95, 0x2c, 0x2f, 0xc9, - 0xe3, 0x68, 0x02, 0x72, 0x54, 0xb2, 0xb6, 0xb7, 0xb7, 0x2d, 0x67, 0x03, 0xce, 0xda, 0x81, 0xba, - 0xb5, 0xbb, 0x29, 0xe7, 0x02, 0xce, 0x4d, 0x75, 0xef, 0x70, 0x5f, 0x86, 0x80, 0x61, 0xa7, 0x5a, - 0xab, 0x55, 0x36, 0xab, 0x72, 0x3e, 0xb0, 0x58, 0x7b, 0xe9, 0xa0, 0x5a, 0x93, 0x0b, 0x3d, 0x6e, - 0x2d, 0x2f, 0xc9, 0x13, 0xc1, 0x2d, 0xaa, 0xbb, 0x87, 0x3b, 0x72, 0x11, 0x4d, 0xc1, 0x04, 0xbb, - 0x85, 0x70, 0x62, 0xb2, 0x4f, 0x74, 0x79, 0x45, 0x96, 0x43, 0x47, 0x18, 0xcb, 0x54, 0x8f, 0xe0, - 0xf2, 0x8a, 0x8c, 0xe6, 0xd7, 0x21, 0x4d, 0xb3, 0x0b, 0x21, 0x28, 0x6e, 0x57, 0xd6, 0xaa, 0xdb, - 0xda, 0xde, 0xfe, 0xc1, 0xd6, 0xde, 0x6e, 0x65, 0x5b, 0x96, 0x42, 0x99, 0x5a, 0xfd, 0xe4, 0xe1, - 0x96, 0x5a, 0xdd, 0x90, 0x13, 0x51, 0xd9, 0x7e, 0xb5, 0x72, 0x50, 0xdd, 0x90, 0x93, 0xf3, 0x06, - 0xcc, 0x0c, 0xab, 0x33, 0x43, 0x77, 0x46, 0x64, 0x89, 0x13, 0xa7, 0x2c, 0x31, 0xe5, 0x1a, 0x58, - 0xe2, 0xaf, 0x4a, 0x30, 0x3d, 0xa4, 0xd6, 0x0e, 0xbd, 0xc9, 0xf3, 0x90, 0x66, 0x29, 0xca, 0xba, - 0xcf, 0x93, 0x43, 0x8b, 0x36, 0x4d, 0xd8, 0x81, 0x0e, 0x44, 0x71, 0xd1, 0x0e, 0x9c, 0x3c, 0xa5, - 0x03, 0x13, 0x8a, 0x01, 0x27, 0x5f, 0x93, 0x40, 0x39, 0x8d, 0x3b, 0xa6, 0x50, 0x24, 0x7a, 0x0a, - 0xc5, 0xf5, 0x7e, 0x07, 0x2e, 0x9e, 0xfe, 0x0c, 0x03, 0x5e, 0xbc, 0x2d, 0xc1, 0xb9, 0xe1, 0x83, - 0xca, 0x50, 0x1f, 0x3e, 0x01, 0x99, 0x36, 0xf6, 0x8f, 0x1c, 0xd1, 0xac, 0x3f, 0x36, 0xa4, 0x05, - 0x10, 0x75, 0x7f, 0xac, 0x38, 0x2a, 0xda, 0x43, 0x92, 0xa7, 0x4d, 0x1b, 0xcc, 0x9b, 0x01, 0x4f, - 0x3f, 0x9f, 0x80, 0x87, 0x86, 0x92, 0x0f, 0x75, 0xf4, 0x51, 0x00, 0xd3, 0xee, 0x74, 0x7d, 0xd6, - 0x90, 0x59, 0x7d, 0xca, 0x51, 0x09, 0xdd, 0xfb, 0xa4, 0xf6, 0x74, 0xfd, 0x40, 0x9f, 0xa4, 0x7a, - 0x60, 0x22, 0x6a, 0x70, 0x35, 0x74, 0x34, 0x45, 0x1d, 0x2d, 0x9d, 0xf2, 0xa4, 0x03, 0xbd, 0xee, - 0x59, 0x90, 0x0d, 0xcb, 0xc4, 0xb6, 0xaf, 0x79, 0xbe, 0x8b, 0xf5, 0xb6, 0x69, 0xb7, 0x68, 0x01, - 0xce, 0x96, 0xd3, 0x4d, 0xdd, 0xf2, 0xb0, 0x3a, 0xc9, 0xd4, 0x35, 0xa1, 0x25, 0x08, 0xda, 0x65, - 0xdc, 0x08, 0x22, 0xd3, 0x83, 0x60, 0xea, 0x00, 0x31, 0xff, 0x85, 0x71, 0xc8, 0x47, 0xc6, 0x3a, - 0x74, 0x11, 0x0a, 0xb7, 0xf4, 0x3b, 0xba, 0x26, 0x46, 0x75, 0x16, 0x89, 0x3c, 0x91, 0xed, 0xf3, - 0x71, 0xfd, 0x59, 0x98, 0xa1, 0x26, 0x4e, 0xd7, 0xc7, 0xae, 0x66, 0x58, 0xba, 0xe7, 0xd1, 0xa0, - 0x65, 0xa9, 0x29, 0x22, 0xba, 0x3d, 0xa2, 0x5a, 0x17, 0x1a, 0xb4, 0x0a, 0xd3, 0x14, 0xd1, 0xee, - 0x5a, 0xbe, 0xd9, 0xb1, 0xb0, 0x46, 0x5e, 0x1e, 0x3c, 0x5a, 0x88, 0x03, 0xcf, 0xa6, 0x88, 0xc5, - 0x0e, 0x37, 0x20, 0x1e, 0x79, 0x68, 0x13, 0x1e, 0xa5, 0xb0, 0x16, 0xb6, 0xb1, 0xab, 0xfb, 0x58, - 0xc3, 0xbf, 0xd0, 0xd5, 0x2d, 0x4f, 0xd3, 0xed, 0x86, 0x76, 0xa4, 0x7b, 0x47, 0xca, 0x4c, 0x94, - 0xe0, 0x3c, 0xb1, 0xdd, 0xe4, 0xa6, 0x55, 0x6a, 0x59, 0xb1, 0x1b, 0x37, 0x74, 0xef, 0x08, 0x95, - 0xe1, 0x1c, 0x25, 0xf2, 0x7c, 0xd7, 0xb4, 0x5b, 0x9a, 0x71, 0x84, 0x8d, 0xdb, 0x5a, 0xd7, 0x6f, - 0x5e, 0x55, 0x1e, 0x89, 0x32, 0x50, 0x27, 0x6b, 0xd4, 0x66, 0x9d, 0x98, 0x1c, 0xfa, 0xcd, 0xab, - 0xa8, 0x06, 0x05, 0xb2, 0x1e, 0x6d, 0xf3, 0x55, 0xac, 0x35, 0x1d, 0x97, 0x36, 0x97, 0xe2, 0x90, - 0xcd, 0x1d, 0x09, 0xe2, 0xe2, 0x1e, 0x07, 0xec, 0x38, 0x0d, 0x5c, 0x4e, 0xd7, 0xf6, 0xab, 0xd5, - 0x0d, 0x35, 0x2f, 0x58, 0x5e, 0x70, 0x5c, 0x92, 0x53, 0x2d, 0x27, 0x88, 0x71, 0x9e, 0xe5, 0x54, - 0xcb, 0x11, 0x11, 0x5e, 0x85, 0x69, 0xc3, 0x60, 0x8f, 0x6d, 0x1a, 0x1a, 0x9f, 0xf2, 0x3d, 0x45, - 0xee, 0x89, 0x97, 0x61, 0x6c, 0x32, 0x03, 0x9e, 0xe6, 0x1e, 0xba, 0x06, 0x0f, 0x85, 0xf1, 0x8a, - 0x02, 0xa7, 0x06, 0x9e, 0xb2, 0x1f, 0xba, 0x0a, 0xd3, 0x9d, 0xe3, 0x41, 0x20, 0xea, 0xb9, 0x63, - 0xe7, 0xb8, 0x1f, 0xf6, 0x38, 0x7d, 0x73, 0x73, 0xb1, 0xa1, 0xfb, 0xb8, 0xa1, 0x3c, 0x1c, 0xb5, - 0x8e, 0x28, 0xd0, 0x25, 0x90, 0x0d, 0x43, 0xc3, 0xb6, 0x5e, 0xb7, 0xb0, 0xa6, 0xbb, 0xd8, 0xd6, - 0x3d, 0xe5, 0x42, 0xd4, 0xb8, 0x68, 0x18, 0x55, 0xaa, 0xad, 0x50, 0x25, 0x7a, 0x0a, 0xa6, 0x9c, - 0xfa, 0x2d, 0x83, 0x25, 0x97, 0xd6, 0x71, 0x71, 0xd3, 0x7c, 0x45, 0x79, 0x8c, 0x86, 0x69, 0x92, - 0x28, 0x68, 0x6a, 0xed, 0x53, 0x31, 0x7a, 0x12, 0x64, 0xc3, 0x3b, 0xd2, 0xdd, 0x0e, 0xed, 0xee, - 0x5e, 0x47, 0x37, 0xb0, 0xf2, 0x38, 0x33, 0x65, 0xf2, 0x5d, 0x21, 0x46, 0x2f, 0xc2, 0x4c, 0xd7, - 0x36, 0x6d, 0x1f, 0xbb, 0x1d, 0x17, 0x93, 0x21, 0x9d, 0xed, 0x34, 0xe5, 0x5f, 0xc6, 0x4f, 0x19, - 0xb3, 0x0f, 0xa3, 0xd6, 0x6c, 0x75, 0xd5, 0xe9, 0xee, 0xa0, 0x70, 0xbe, 0x0c, 0x85, 0xe8, 0xa2, - 0xa3, 0x1c, 0xb0, 0x65, 0x97, 0x25, 0xd2, 0x43, 0xd7, 0xf7, 0x36, 0x48, 0xf7, 0xfb, 0x4c, 0x55, - 0x4e, 0x90, 0x2e, 0xbc, 0xbd, 0x75, 0x50, 0xd5, 0xd4, 0xc3, 0xdd, 0x83, 0xad, 0x9d, 0xaa, 0x9c, - 0x7c, 0x2a, 0x97, 0xfd, 0xe1, 0xb8, 0x7c, 0xf7, 0xee, 0xdd, 0xbb, 0x89, 0xf9, 0xef, 0x24, 0xa0, - 0xd8, 0x3b, 0xf9, 0xa2, 0x9f, 0x87, 0x87, 0xc5, 0x6b, 0xaa, 0x87, 0x7d, 0xed, 0x65, 0xd3, 0xa5, - 0x79, 0xd8, 0xd6, 0xd9, 0xec, 0x18, 0x84, 0x70, 0x86, 0x5b, 0xd5, 0xb0, 0xff, 0x69, 0xd3, 0x25, - 0x59, 0xd6, 0xd6, 0x7d, 0xb4, 0x0d, 0x17, 0x6c, 0x47, 0xf3, 0x7c, 0xdd, 0x6e, 0xe8, 0x6e, 0x43, - 0x0b, 0x0f, 0x08, 0x34, 0xdd, 0x30, 0xb0, 0xe7, 0x39, 0xac, 0x05, 0x04, 0x2c, 0x1f, 0xb1, 0x9d, - 0x1a, 0x37, 0x0e, 0x6b, 0x63, 0x85, 0x9b, 0xf6, 0x2d, 0x77, 0xf2, 0xb4, 0xe5, 0x7e, 0x04, 0x72, - 0x6d, 0xbd, 0xa3, 0x61, 0xdb, 0x77, 0x8f, 0xe9, 0xbc, 0x96, 0x55, 0xb3, 0x6d, 0xbd, 0x53, 0x25, - 0xd7, 0x3f, 0xbd, 0x35, 0x88, 0xc6, 0xf1, 0xfb, 0x49, 0x28, 0x44, 0x67, 0x36, 0x32, 0x02, 0x1b, - 0xb4, 0x3e, 0x4b, 0x74, 0xfb, 0x7e, 0xf4, 0x81, 0x13, 0xde, 0xe2, 0x3a, 0x29, 0xdc, 0xe5, 0x0c, - 0x9b, 0xa4, 0x54, 0x86, 0x24, 0x4d, 0x93, 0x6c, 0x58, 0xcc, 0xe6, 0xf3, 0xac, 0xca, 0xaf, 0xd0, - 0x26, 0x64, 0x6e, 0x79, 0x94, 0x3b, 0x43, 0xb9, 0x1f, 0x7b, 0x30, 0xf7, 0xcd, 0x1a, 0x25, 0xcf, - 0xdd, 0xac, 0x69, 0xbb, 0x7b, 0xea, 0x4e, 0x65, 0x5b, 0xe5, 0x70, 0x74, 0x1e, 0x52, 0x96, 0xfe, - 0xea, 0x71, 0x6f, 0x89, 0xa7, 0xa2, 0x51, 0x03, 0x7f, 0x1e, 0x52, 0x2f, 0x63, 0xfd, 0x76, 0x6f, - 0x61, 0xa5, 0xa2, 0x9f, 0x62, 0xea, 0x5f, 0x82, 0x34, 0x8d, 0x17, 0x02, 0xe0, 0x11, 0x93, 0xc7, - 0x50, 0x16, 0x52, 0xeb, 0x7b, 0x2a, 0x49, 0x7f, 0x19, 0x0a, 0x4c, 0xaa, 0xed, 0x6f, 0x55, 0xd7, - 0xab, 0x72, 0x62, 0x7e, 0x15, 0x32, 0x2c, 0x08, 0x64, 0x6b, 0x04, 0x61, 0x90, 0xc7, 0xf8, 0x25, - 0xe7, 0x90, 0x84, 0xf6, 0x70, 0x67, 0xad, 0xaa, 0xca, 0x89, 0xe8, 0xf2, 0x7a, 0x50, 0x88, 0x8e, - 0x6b, 0x3f, 0x9b, 0x9c, 0xfa, 0x5b, 0x09, 0xf2, 0x91, 0xf1, 0x8b, 0x34, 0x7e, 0xdd, 0xb2, 0x9c, - 0x97, 0x35, 0xdd, 0x32, 0x75, 0x8f, 0x27, 0x05, 0x50, 0x51, 0x85, 0x48, 0x46, 0x5d, 0xb4, 0x9f, - 0x89, 0xf3, 0x6f, 0x49, 0x20, 0xf7, 0x8f, 0x6e, 0x7d, 0x0e, 0x4a, 0x1f, 0xaa, 0x83, 0x6f, 0x4a, - 0x50, 0xec, 0x9d, 0xd7, 0xfa, 0xdc, 0xbb, 0xf8, 0xa1, 0xba, 0xf7, 0x25, 0x09, 0x26, 0x7a, 0xa6, - 0xb4, 0xff, 0x57, 0xde, 0xbd, 0x91, 0x84, 0xe9, 0x21, 0x38, 0x54, 0xe1, 0xe3, 0x2c, 0x9b, 0xb0, - 0x9f, 0x19, 0xe5, 0x5e, 0x8b, 0xa4, 0x5b, 0xee, 0xeb, 0xae, 0xcf, 0xa7, 0xdf, 0x27, 0x41, 0x36, - 0x1b, 0xd8, 0xf6, 0xcd, 0xa6, 0x89, 0x5d, 0xfe, 0x0a, 0xce, 0x66, 0xdc, 0xc9, 0x50, 0xce, 0xde, - 0xc2, 0x7f, 0x0e, 0x50, 0xc7, 0xf1, 0x4c, 0xdf, 0xbc, 0x83, 0x35, 0xd3, 0x16, 0xef, 0xeb, 0x64, - 0xe6, 0x4d, 0xa9, 0xb2, 0xd0, 0x6c, 0xd9, 0x7e, 0x60, 0x6d, 0xe3, 0x96, 0xde, 0x67, 0x4d, 0x6a, - 0x5f, 0x52, 0x95, 0x85, 0x26, 0xb0, 0xbe, 0x08, 0x85, 0x86, 0xd3, 0x25, 0xe3, 0x03, 0xb3, 0x23, - 0xa5, 0x56, 0x52, 0xf3, 0x4c, 0x16, 0x98, 0xf0, 0xf9, 0x2e, 0x3c, 0x28, 0x28, 0xa8, 0x79, 0x26, - 0x63, 0x26, 0x4f, 0xc0, 0xa4, 0xde, 0x6a, 0xb9, 0x84, 0x5c, 0x10, 0xb1, 0xa1, 0xb5, 0x18, 0x88, - 0xa9, 0xe1, 0xec, 0x4d, 0xc8, 0x8a, 0x38, 0x90, 0x6e, 0x46, 0x22, 0xa1, 0x75, 0xd8, 0x71, 0x4d, - 0x62, 0x21, 0xa7, 0x66, 0x6d, 0xa1, 0xbc, 0x08, 0x05, 0xd3, 0xd3, 0xc2, 0x73, 0xc3, 0xc4, 0x5c, - 0x62, 0x21, 0xab, 0xe6, 0x4d, 0x2f, 0x38, 0x28, 0x9a, 0x7f, 0x3b, 0x01, 0xc5, 0xde, 0x73, 0x4f, - 0xb4, 0x01, 0x59, 0xcb, 0x31, 0x74, 0x9a, 0x08, 0xec, 0xd0, 0x7d, 0x21, 0xe6, 0xa8, 0x74, 0x71, - 0x9b, 0xdb, 0xab, 0x01, 0x72, 0xf6, 0x1f, 0x25, 0xc8, 0x0a, 0x31, 0x3a, 0x07, 0xa9, 0x8e, 0xee, - 0x1f, 0x51, 0xba, 0xf4, 0x5a, 0x42, 0x96, 0x54, 0x7a, 0x4d, 0xe4, 0x5e, 0x47, 0xb7, 0x69, 0x0a, - 0x70, 0x39, 0xb9, 0x26, 0xeb, 0x6a, 0x61, 0xbd, 0x41, 0xc7, 0x61, 0xa7, 0xdd, 0xc6, 0xb6, 0xef, - 0x89, 0x75, 0xe5, 0xf2, 0x75, 0x2e, 0x46, 0x4f, 0xc3, 0x94, 0xef, 0xea, 0xa6, 0xd5, 0x63, 0x9b, - 0xa2, 0xb6, 0xb2, 0x50, 0x04, 0xc6, 0x65, 0x38, 0x2f, 0x78, 0x1b, 0xd8, 0xd7, 0x8d, 0x23, 0xdc, - 0x08, 0x41, 0x19, 0x7a, 0xa8, 0xf6, 0x30, 0x37, 0xd8, 0xe0, 0x7a, 0x81, 0x9d, 0xff, 0x9e, 0x04, - 0x53, 0x62, 0x80, 0x6f, 0x04, 0xc1, 0xda, 0x01, 0xd0, 0x6d, 0xdb, 0xf1, 0xa3, 0xe1, 0x1a, 0x4c, - 0xe5, 0x01, 0xdc, 0x62, 0x25, 0x00, 0xa9, 0x11, 0x82, 0xd9, 0x36, 0x40, 0xa8, 0x39, 0x35, 0x6c, - 0x17, 0x20, 0xcf, 0x0f, 0xb5, 0xe9, 0x2f, 0x23, 0xec, 0xad, 0x0f, 0x98, 0x88, 0x4c, 0xfa, 0x68, - 0x06, 0xd2, 0x75, 0xdc, 0x32, 0x6d, 0x7e, 0xd4, 0xc6, 0x2e, 0xc4, 0x01, 0x5e, 0x2a, 0x38, 0xc0, - 0x5b, 0xfb, 0x2c, 0x4c, 0x1b, 0x4e, 0xbb, 0xdf, 0xdd, 0x35, 0xb9, 0xef, 0xcd, 0xd3, 0xbb, 0x21, - 0x7d, 0x06, 0xc2, 0xe9, 0xec, 0x2b, 0x92, 0xf4, 0xd5, 0x44, 0x72, 0x73, 0x7f, 0xed, 0xeb, 0x89, - 0xd9, 0x4d, 0x06, 0xdd, 0x17, 0x4f, 0xaa, 0xe2, 0xa6, 0x85, 0x0d, 0xe2, 0x3d, 0xfc, 0xe8, 0x63, - 0xf0, 0x4c, 0xcb, 0xf4, 0x8f, 0xba, 0xf5, 0x45, 0xc3, 0x69, 0x5f, 0x6a, 0x39, 0x2d, 0x27, 0xfc, - 0x31, 0x88, 0x5c, 0xd1, 0x0b, 0xfa, 0x1f, 0xff, 0x41, 0x28, 0x17, 0x48, 0x67, 0x63, 0x7f, 0x3d, - 0x2a, 0xef, 0xc2, 0x34, 0x37, 0xd6, 0xe8, 0x89, 0x34, 0x9b, 0xc3, 0xd1, 0x03, 0x4f, 0x25, 0x94, - 0x6f, 0xbe, 0x4b, 0x3b, 0x9d, 0x3a, 0xc5, 0xa1, 0x44, 0xc7, 0x26, 0xf5, 0xb2, 0x0a, 0x0f, 0xf5, - 0xf0, 0xb1, 0xad, 0x89, 0xdd, 0x18, 0xc6, 0xef, 0x70, 0xc6, 0xe9, 0x08, 0x63, 0x8d, 0x43, 0xcb, - 0xeb, 0x30, 0x71, 0x16, 0xae, 0xbf, 0xe7, 0x5c, 0x05, 0x1c, 0x25, 0xd9, 0x84, 0x49, 0x4a, 0x62, - 0x74, 0x3d, 0xdf, 0x69, 0xd3, 0xba, 0xf7, 0x60, 0x9a, 0x7f, 0x78, 0x97, 0xed, 0x95, 0x22, 0x81, - 0xad, 0x07, 0xa8, 0x72, 0x19, 0xe8, 0x21, 0x7c, 0x03, 0x1b, 0x56, 0x0c, 0xc3, 0x3b, 0xdc, 0x91, - 0xc0, 0xbe, 0xfc, 0x29, 0x98, 0x21, 0xff, 0xd3, 0xb2, 0x14, 0xf5, 0x24, 0xfe, 0x0c, 0x46, 0xf9, - 0xde, 0x6b, 0x6c, 0x3b, 0x4e, 0x07, 0x04, 0x11, 0x9f, 0x22, 0xab, 0xd8, 0xc2, 0xbe, 0x8f, 0x5d, - 0x4f, 0xd3, 0xad, 0x61, 0xee, 0x45, 0xde, 0x60, 0x95, 0xd7, 0xdf, 0xeb, 0x5d, 0xc5, 0x4d, 0x86, - 0xac, 0x58, 0x56, 0xf9, 0x10, 0x1e, 0x1e, 0x92, 0x15, 0x23, 0x70, 0xbe, 0xc1, 0x39, 0x67, 0x06, - 0x32, 0x83, 0xd0, 0xee, 0x83, 0x90, 0x07, 0x6b, 0x39, 0x02, 0xe7, 0x97, 0x38, 0x27, 0xe2, 0x58, - 0xb1, 0xa4, 0x84, 0xf1, 0x26, 0x4c, 0xdd, 0xc1, 0x6e, 0xdd, 0xf1, 0xf8, 0xc1, 0xc1, 0x08, 0x74, - 0x6f, 0x72, 0xba, 0x49, 0x0e, 0xa4, 0xc7, 0x08, 0x84, 0xeb, 0x1a, 0x64, 0x9b, 0xba, 0x81, 0x47, - 0xa0, 0xf8, 0x32, 0xa7, 0x18, 0x27, 0xf6, 0x04, 0x5a, 0x81, 0x42, 0xcb, 0xe1, 0x9d, 0x29, 0x1e, - 0xfe, 0x16, 0x87, 0xe7, 0x05, 0x86, 0x53, 0x74, 0x9c, 0x4e, 0xd7, 0x22, 0x6d, 0x2b, 0x9e, 0xe2, - 0xf7, 0x04, 0x85, 0xc0, 0x70, 0x8a, 0x33, 0x84, 0xf5, 0x2b, 0x82, 0xc2, 0x8b, 0xc4, 0xf3, 0x79, - 0xc8, 0x3b, 0xb6, 0x75, 0xec, 0xd8, 0xa3, 0x38, 0xf1, 0xfb, 0x9c, 0x01, 0x38, 0x84, 0x10, 0x5c, - 0x87, 0xdc, 0xa8, 0x0b, 0xf1, 0x07, 0xef, 0x89, 0xed, 0x21, 0x56, 0x60, 0x13, 0x26, 0x45, 0x81, - 0x32, 0x1d, 0x7b, 0x04, 0x8a, 0x3f, 0xe4, 0x14, 0xc5, 0x08, 0x8c, 0x3f, 0x86, 0x8f, 0x3d, 0xbf, - 0x85, 0x47, 0x21, 0x79, 0x5b, 0x3c, 0x06, 0x87, 0xf0, 0x50, 0xd6, 0xb1, 0x6d, 0x1c, 0x8d, 0xc6, - 0xf0, 0x35, 0x11, 0x4a, 0x81, 0x21, 0x14, 0xeb, 0x30, 0xd1, 0xd6, 0x5d, 0xef, 0x48, 0xb7, 0x46, - 0x5a, 0x8e, 0x3f, 0xe2, 0x1c, 0x85, 0x00, 0xc4, 0x23, 0xd2, 0xb5, 0xcf, 0x42, 0xf3, 0x75, 0x11, - 0x91, 0x08, 0x8c, 0x6f, 0x3d, 0xcf, 0xa7, 0x67, 0x33, 0x67, 0x61, 0xfb, 0x63, 0xb1, 0xf5, 0x18, - 0x76, 0x27, 0xca, 0x78, 0x1d, 0x72, 0x9e, 0xf9, 0xea, 0x48, 0x34, 0x7f, 0x22, 0x56, 0x9a, 0x02, - 0x08, 0xf8, 0x25, 0x38, 0x3f, 0xb4, 0x4d, 0x8c, 0x40, 0xf6, 0xa7, 0x9c, 0xec, 0xdc, 0x90, 0x56, - 0xc1, 0x4b, 0xc2, 0x59, 0x29, 0xff, 0x4c, 0x94, 0x04, 0xdc, 0xc7, 0xb5, 0x4f, 0x26, 0x7b, 0x4f, - 0x6f, 0x9e, 0x2d, 0x6a, 0x7f, 0x2e, 0xa2, 0xc6, 0xb0, 0x3d, 0x51, 0x3b, 0x80, 0x73, 0x9c, 0xf1, - 0x6c, 0xeb, 0xfa, 0x0d, 0x51, 0x58, 0x19, 0xfa, 0xb0, 0x77, 0x75, 0x3f, 0x0b, 0xb3, 0x41, 0x38, - 0xc5, 0x50, 0xea, 0x69, 0x6d, 0xbd, 0x33, 0x02, 0xf3, 0x37, 0x39, 0xb3, 0xa8, 0xf8, 0xc1, 0x54, - 0xeb, 0xed, 0xe8, 0x1d, 0x42, 0xfe, 0x22, 0x28, 0x82, 0xbc, 0x6b, 0xbb, 0xd8, 0x70, 0x5a, 0xb6, - 0xf9, 0x2a, 0x6e, 0x8c, 0x40, 0xfd, 0x17, 0x7d, 0x4b, 0x75, 0x18, 0x81, 0x13, 0xe6, 0x2d, 0x90, - 0x83, 0x59, 0x45, 0x33, 0xdb, 0x1d, 0xc7, 0xf5, 0x63, 0x18, 0xff, 0x52, 0xac, 0x54, 0x80, 0xdb, - 0xa2, 0xb0, 0x72, 0x15, 0x8a, 0xf4, 0x72, 0xd4, 0x94, 0xfc, 0x2b, 0x4e, 0x34, 0x11, 0xa2, 0x78, - 0xe1, 0x30, 0x9c, 0x76, 0x47, 0x77, 0x47, 0xa9, 0x7f, 0x7f, 0x2d, 0x0a, 0x07, 0x87, 0xf0, 0xc2, - 0xe1, 0x1f, 0x77, 0x30, 0xe9, 0xf6, 0x23, 0x30, 0x7c, 0x4b, 0x14, 0x0e, 0x81, 0xe1, 0x14, 0x62, - 0x60, 0x18, 0x81, 0xe2, 0x6f, 0x04, 0x85, 0xc0, 0x10, 0x8a, 0x4f, 0x86, 0x8d, 0xd6, 0xc5, 0x2d, - 0xd3, 0xf3, 0x5d, 0x36, 0x0a, 0x3f, 0x98, 0xea, 0xdb, 0xef, 0xf5, 0x0e, 0x61, 0x6a, 0x04, 0x5a, - 0xbe, 0x09, 0x93, 0x7d, 0x23, 0x06, 0x8a, 0xfb, 0x45, 0x5f, 0xf9, 0xdc, 0x07, 0xbc, 0x18, 0xf5, - 0x4e, 0x18, 0xe5, 0x6d, 0xb2, 0xee, 0xbd, 0x73, 0x40, 0x3c, 0xd9, 0x6b, 0x1f, 0x04, 0x4b, 0xdf, - 0x33, 0x06, 0x94, 0x5f, 0x80, 0x89, 0x9e, 0x19, 0x20, 0x9e, 0xea, 0x17, 0x39, 0x55, 0x21, 0x3a, - 0x02, 0x94, 0x57, 0x21, 0x45, 0xfa, 0x79, 0x3c, 0xfc, 0x97, 0x38, 0x9c, 0x9a, 0x97, 0x3f, 0x0e, - 0x59, 0xd1, 0xc7, 0xe3, 0xa1, 0xbf, 0xcc, 0xa1, 0x01, 0x84, 0xc0, 0x45, 0x0f, 0x8f, 0x87, 0xff, - 0x8a, 0x80, 0x0b, 0x08, 0x81, 0x8f, 0x1e, 0xc2, 0xbf, 0xfb, 0x42, 0x8a, 0xd7, 0x61, 0x11, 0xbb, - 0xeb, 0x30, 0xce, 0x9b, 0x77, 0x3c, 0xfa, 0xf3, 0xfc, 0xe6, 0x02, 0x51, 0xbe, 0x02, 0xe9, 0x11, - 0x03, 0xfe, 0xab, 0x1c, 0xca, 0xec, 0xcb, 0xeb, 0x90, 0x8f, 0x34, 0xec, 0x78, 0xf8, 0xaf, 0x71, - 0x78, 0x14, 0x45, 0x5c, 0xe7, 0x0d, 0x3b, 0x9e, 0xe0, 0xd7, 0x85, 0xeb, 0x1c, 0x41, 0xc2, 0x26, - 0x7a, 0x75, 0x3c, 0xfa, 0x37, 0x44, 0xd4, 0x05, 0xa4, 0xfc, 0x3c, 0xe4, 0x82, 0xfa, 0x1b, 0x8f, - 0xff, 0x4d, 0x8e, 0x0f, 0x31, 0x24, 0x02, 0x91, 0xfa, 0x1f, 0x4f, 0xf1, 0x5b, 0x22, 0x02, 0x11, - 0x14, 0xd9, 0x46, 0xfd, 0x3d, 0x3d, 0x9e, 0xe9, 0xb7, 0xc5, 0x36, 0xea, 0x6b, 0xe9, 0x64, 0x35, - 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x1d, 0xb1, 0x9a, 0xd4, 0x9e, 0xb8, 0xd1, 0xdf, 0x24, 0xe3, 0x39, - 0x7e, 0x57, 0xb8, 0xd1, 0xd7, 0x23, 0xcb, 0xfb, 0x80, 0x06, 0x1b, 0x64, 0x3c, 0xdf, 0x17, 0x39, - 0xdf, 0xd4, 0x40, 0x7f, 0x2c, 0x7f, 0x1a, 0xce, 0x0d, 0x6f, 0x8e, 0xf1, 0xac, 0xaf, 0x7f, 0xd0, - 0xf7, 0x3a, 0x13, 0xed, 0x8d, 0xe5, 0x83, 0xb0, 0xca, 0x46, 0x1b, 0x63, 0x3c, 0xed, 0x1b, 0x1f, - 0xf4, 0x16, 0xda, 0x68, 0x5f, 0x2c, 0x57, 0x00, 0xc2, 0x9e, 0x14, 0xcf, 0xf5, 0x26, 0xe7, 0x8a, - 0x80, 0xc8, 0xd6, 0xe0, 0x2d, 0x29, 0x1e, 0xff, 0x65, 0xb1, 0x35, 0x38, 0x82, 0x6c, 0x0d, 0xd1, - 0x8d, 0xe2, 0xd1, 0x6f, 0x89, 0xad, 0x21, 0x20, 0xe5, 0xeb, 0x90, 0xb5, 0xbb, 0x96, 0x45, 0x72, - 0x0b, 0x3d, 0xf8, 0x23, 0x1b, 0xe5, 0x5f, 0xef, 0x73, 0xb0, 0x00, 0x94, 0x57, 0x21, 0x8d, 0xdb, - 0x75, 0xdc, 0x88, 0x43, 0xfe, 0xdb, 0x7d, 0x51, 0x4f, 0x88, 0x75, 0xf9, 0x79, 0x00, 0xf6, 0x32, - 0x4d, 0x7f, 0x63, 0x89, 0xc1, 0xfe, 0xfb, 0x7d, 0xfe, 0xfb, 0x7d, 0x08, 0x09, 0x09, 0xd8, 0xd7, - 0x00, 0x0f, 0x26, 0x78, 0xaf, 0x97, 0x80, 0xbe, 0x80, 0x5f, 0x83, 0xf1, 0x5b, 0x9e, 0x63, 0xfb, - 0x7a, 0x2b, 0x0e, 0xfd, 0x1f, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0xda, 0x8e, 0x8b, 0x7d, 0xbd, 0xe5, - 0xc5, 0x61, 0xff, 0x93, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, 0x8f, 0xf2, 0xdc, 0xff, 0x25, - 0xc0, 0x02, 0x40, 0x9c, 0x26, 0xff, 0xdf, 0xc6, 0xc7, 0x71, 0xd8, 0xf7, 0x85, 0xd3, 0xdc, 0xbe, - 0xfc, 0x71, 0xc8, 0x91, 0x7f, 0xd9, 0x37, 0x2d, 0x31, 0xe0, 0xff, 0xe6, 0xe0, 0x10, 0x41, 0xee, - 0xec, 0xf9, 0x0d, 0xdf, 0x8c, 0x0f, 0xf6, 0xff, 0xf0, 0x95, 0x16, 0xf6, 0xe5, 0x0a, 0xe4, 0x3d, - 0xbf, 0xd1, 0xe8, 0xf2, 0x89, 0x26, 0x06, 0xfe, 0xa3, 0xfb, 0xc1, 0x4b, 0x6e, 0x80, 0x59, 0xbb, - 0x38, 0xfc, 0xbc, 0x0e, 0x36, 0x9d, 0x4d, 0x87, 0x9d, 0xd4, 0xc1, 0xeb, 0x69, 0x78, 0xc4, 0x70, - 0xda, 0x75, 0xc7, 0xbb, 0xc4, 0x0a, 0x4a, 0xdd, 0xf1, 0x8f, 0x2e, 0x39, 0x36, 0x37, 0x47, 0x49, - 0xc7, 0xc6, 0xb3, 0x67, 0x3b, 0x97, 0x9b, 0x3f, 0x0f, 0xe9, 0x5a, 0xb7, 0x5e, 0x3f, 0x46, 0x32, - 0x24, 0xbd, 0x6e, 0x9d, 0x7f, 0x76, 0x41, 0xfe, 0x9d, 0xff, 0x7e, 0x12, 0xf2, 0x35, 0xbd, 0xdd, - 0xb1, 0xf0, 0x9e, 0x8d, 0xf7, 0x9a, 0x48, 0x81, 0x0c, 0x7d, 0x8c, 0xe7, 0xa8, 0x91, 0x74, 0x63, - 0x4c, 0xe5, 0xd7, 0x81, 0x66, 0x89, 0x9e, 0x57, 0x26, 0x02, 0xcd, 0x52, 0xa0, 0x59, 0x66, 0xc7, - 0x95, 0x81, 0x66, 0x39, 0xd0, 0xac, 0xd0, 0x43, 0xcb, 0x64, 0xa0, 0x59, 0x09, 0x34, 0xab, 0xf4, - 0x50, 0x7e, 0x22, 0xd0, 0xac, 0x06, 0x9a, 0xcb, 0xf4, 0x18, 0x3e, 0x15, 0x68, 0x2e, 0x07, 0x9a, - 0x2b, 0xf4, 0xf4, 0x7d, 0x2a, 0xd0, 0x5c, 0x09, 0x34, 0x57, 0xe9, 0x89, 0x3b, 0x0a, 0x34, 0x57, - 0x03, 0xcd, 0x35, 0xfa, 0x69, 0xc5, 0x78, 0xa0, 0xb9, 0x86, 0x66, 0x61, 0x9c, 0x3d, 0xd9, 0xb3, - 0xf4, 0x17, 0xcd, 0xc9, 0x1b, 0x63, 0xaa, 0x10, 0x84, 0xba, 0xe7, 0xe8, 0xe7, 0x13, 0x99, 0x50, - 0xf7, 0x5c, 0xa8, 0x5b, 0xa2, 0xdf, 0x11, 0xcb, 0xa1, 0x6e, 0x29, 0xd4, 0x2d, 0x2b, 0x13, 0x64, - 0xf5, 0x43, 0xdd, 0x72, 0xa8, 0x5b, 0x51, 0x8a, 0x24, 0xfe, 0xa1, 0x6e, 0x25, 0xd4, 0xad, 0x2a, - 0x93, 0x73, 0xd2, 0x42, 0x21, 0xd4, 0xad, 0xa2, 0x67, 0x20, 0xef, 0x75, 0xeb, 0x1a, 0xff, 0x01, - 0x9e, 0x7e, 0xa6, 0x91, 0x5f, 0x82, 0x45, 0x92, 0x11, 0x74, 0x51, 0x6f, 0x8c, 0xa9, 0xe0, 0x75, - 0xeb, 0xbc, 0x3c, 0xae, 0x15, 0x80, 0x9e, 0x26, 0x68, 0xf4, 0xfb, 0xc4, 0xb5, 0x8d, 0x77, 0xee, - 0x95, 0xc6, 0xbe, 0x7b, 0xaf, 0x34, 0xf6, 0x4f, 0xf7, 0x4a, 0x63, 0x3f, 0xb8, 0x57, 0x92, 0xde, - 0xbf, 0x57, 0x92, 0x7e, 0x7c, 0xaf, 0x24, 0xdd, 0x3d, 0x29, 0x49, 0x5f, 0x3b, 0x29, 0x49, 0xdf, - 0x38, 0x29, 0x49, 0xdf, 0x3e, 0x29, 0x49, 0xef, 0x9c, 0x94, 0xc6, 0xbe, 0x7b, 0x52, 0x1a, 0xfb, - 0xc1, 0x49, 0x49, 0xfa, 0xe1, 0x49, 0x69, 0xec, 0xfd, 0x93, 0x92, 0xf4, 0xe3, 0x93, 0x92, 0x74, - 0xf7, 0x9f, 0x4b, 0x52, 0x3d, 0x43, 0xd3, 0x68, 0xf9, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x92, - 0xcb, 0x40, 0x36, 0x16, 0x30, 0x00, 0x00, + // 3863 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x84, 0x20, 0x79, 0x17, 0x2b, 0xc7, 0xdc, 0x5d, 0xc5, + 0x8e, 0x65, 0xbb, 0x96, 0x6c, 0xed, 0x6a, 0x2f, 0xdc, 0x26, 0x1e, 0x8a, 0xe2, 0x6a, 0xb9, 0x95, + 0x44, 0x06, 0x94, 0xe2, 0x75, 0xfa, 0x80, 0x01, 0xc1, 0x9f, 0x14, 0x76, 0x41, 0x80, 0x01, 0xc0, + 0x5d, 0xcb, 0x4f, 0xdb, 0x71, 0x2f, 0x93, 0xe9, 0xf4, 0xde, 0x99, 0xc6, 0xae, 0xe3, 0xb6, 0x99, + 0x69, 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, + 0x1f, 0xf2, 0xe0, 0x55, 0x3c, 0xd3, 0xb4, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xe3, 0x97, 0xce, + 0x7f, 0x03, 0xc0, 0x8b, 0x16, 0x54, 0x66, 0x1c, 0x3f, 0x49, 0x38, 0xe7, 0x7c, 0x1f, 0x0e, 0xce, + 0x7f, 0xfe, 0x73, 0x0e, 0x7e, 0x02, 0x7e, 0xb0, 0x0e, 0xe7, 0x3a, 0xb6, 0xdd, 0x31, 0xd1, 0x6a, + 0xcf, 0xb1, 0x3d, 0xbb, 0xd9, 0x6f, 0xaf, 0xb6, 0x90, 0xab, 0x3b, 0x46, 0xcf, 0xb3, 0x9d, 0x15, + 0x22, 0x93, 0xf2, 0xd4, 0x62, 0x85, 0x5b, 0x2c, 0xed, 0xc0, 0xdc, 0x75, 0xc3, 0x44, 0x9b, 0xbe, + 0x61, 0x03, 0x79, 0xd2, 0x15, 0x48, 0xb4, 0x0d, 0x13, 0xc9, 0xc2, 0xb9, 0xf8, 0x72, 0x66, 0xed, + 0xf1, 0x95, 0x21, 0xd0, 0xca, 0x20, 0xa2, 0x8e, 0xc5, 0x0a, 0x41, 0x2c, 0xbd, 0x9b, 0x80, 0xf9, + 0x31, 0x5a, 0x49, 0x82, 0x84, 0xa5, 0x75, 0x31, 0xa3, 0xb0, 0x9c, 0x56, 0xc8, 0xff, 0x92, 0x0c, + 0x33, 0x3d, 0x4d, 0xbf, 0xa3, 0x75, 0x90, 0x1c, 0x23, 0x62, 0x7e, 0x29, 0x15, 0x00, 0x5a, 0xa8, + 0x87, 0xac, 0x16, 0xb2, 0xf4, 0x43, 0x39, 0x7e, 0x2e, 0xbe, 0x9c, 0x56, 0x42, 0x12, 0xe9, 0x19, + 0x98, 0xeb, 0xf5, 0x9b, 0xa6, 0xa1, 0xab, 0x21, 0x33, 0x38, 0x17, 0x5f, 0x4e, 0x2a, 0x22, 0x55, + 0x6c, 0x06, 0xc6, 0x4f, 0x42, 0xfe, 0x1e, 0xd2, 0xee, 0x84, 0x4d, 0x33, 0xc4, 0x34, 0x87, 0xc5, + 0x21, 0xc3, 0x32, 0x64, 0xbb, 0xc8, 0x75, 0xb5, 0x0e, 0x52, 0xbd, 0xc3, 0x1e, 0x92, 0x13, 0xe4, + 0xe9, 0xcf, 0x8d, 0x3c, 0xfd, 0xf0, 0x93, 0x67, 0x18, 0x6a, 0xef, 0xb0, 0x87, 0xa4, 0x12, 0xa4, + 0x91, 0xd5, 0xef, 0x52, 0x86, 0xe4, 0x31, 0xf1, 0xab, 0x58, 0xfd, 0xee, 0x30, 0x4b, 0x0a, 0xc3, + 0x18, 0xc5, 0x8c, 0x8b, 0x9c, 0xbb, 0x86, 0x8e, 0xe4, 0x69, 0x42, 0xf0, 0xe4, 0x08, 0x41, 0x83, + 0xea, 0x87, 0x39, 0x38, 0x4e, 0x2a, 0x43, 0x1a, 0xbd, 0xec, 0x21, 0xcb, 0x35, 0x6c, 0x4b, 0x9e, + 0x21, 0x24, 0x4f, 0x8c, 0x59, 0x45, 0x64, 0xb6, 0x86, 0x29, 0x02, 0x9c, 0x74, 0x09, 0x66, 0xec, + 0x9e, 0x67, 0xd8, 0x96, 0x2b, 0xa7, 0xce, 0x09, 0xcb, 0x99, 0xb5, 0x4f, 0x8c, 0x4d, 0x84, 0x1a, + 0xb5, 0x51, 0xb8, 0xb1, 0x54, 0x05, 0xd1, 0xb5, 0xfb, 0x8e, 0x8e, 0x54, 0xdd, 0x6e, 0x21, 0xd5, + 0xb0, 0xda, 0xb6, 0x9c, 0x26, 0x04, 0x67, 0x47, 0x1f, 0x84, 0x18, 0x96, 0xed, 0x16, 0xaa, 0x5a, + 0x6d, 0x5b, 0xc9, 0xb9, 0x03, 0xd7, 0xd2, 0x29, 0x98, 0x76, 0x0f, 0x2d, 0x4f, 0x7b, 0x59, 0xce, + 0x92, 0x0c, 0x61, 0x57, 0x4b, 0xff, 0x97, 0x84, 0xfc, 0x24, 0x29, 0x76, 0x0d, 0x92, 0x6d, 0xfc, + 0x94, 0x72, 0xec, 0x24, 0x31, 0xa0, 0x98, 0xc1, 0x20, 0x4e, 0xff, 0x84, 0x41, 0x2c, 0x41, 0xc6, + 0x42, 0xae, 0x87, 0x5a, 0x34, 0x23, 0xe2, 0x13, 0xe6, 0x14, 0x50, 0xd0, 0x68, 0x4a, 0x25, 0x7e, + 0xa2, 0x94, 0xba, 0x05, 0x79, 0xdf, 0x25, 0xd5, 0xd1, 0xac, 0x0e, 0xcf, 0xcd, 0xd5, 0x28, 0x4f, + 0x56, 0x2a, 0x1c, 0xa7, 0x60, 0x98, 0x92, 0x43, 0x03, 0xd7, 0xd2, 0x26, 0x80, 0x6d, 0x21, 0xbb, + 0xad, 0xb6, 0x90, 0x6e, 0xca, 0xa9, 0x63, 0xa2, 0x54, 0xc3, 0x26, 0x23, 0x51, 0xb2, 0xa9, 0x54, + 0x37, 0xa5, 0xab, 0x41, 0xaa, 0xcd, 0x1c, 0x93, 0x29, 0x3b, 0x74, 0x93, 0x8d, 0x64, 0xdb, 0x3e, + 0xe4, 0x1c, 0x84, 0xf3, 0x1e, 0xb5, 0xd8, 0x93, 0xa5, 0x89, 0x13, 0x2b, 0x91, 0x4f, 0xa6, 0x30, + 0x18, 0x7d, 0xb0, 0x59, 0x27, 0x7c, 0x29, 0x7d, 0x12, 0x7c, 0x81, 0x4a, 0xd2, 0x0a, 0x48, 0x15, + 0xca, 0x72, 0xe1, 0xae, 0xd6, 0x45, 0x8b, 0x57, 0x20, 0x37, 0x18, 0x1e, 0x69, 0x01, 0x92, 0xae, + 0xa7, 0x39, 0x1e, 0xc9, 0xc2, 0xa4, 0x42, 0x2f, 0x24, 0x11, 0xe2, 0xc8, 0x6a, 0x91, 0x2a, 0x97, + 0x54, 0xf0, 0xbf, 0x8b, 0x97, 0x61, 0x76, 0xe0, 0xf6, 0x93, 0x02, 0x97, 0xbe, 0x34, 0x0d, 0x0b, + 0xe3, 0x72, 0x6e, 0x6c, 0xfa, 0x9f, 0x82, 0x69, 0xab, 0xdf, 0x6d, 0x22, 0x47, 0x8e, 0x13, 0x06, + 0x76, 0x25, 0x95, 0x20, 0x69, 0x6a, 0x4d, 0x64, 0xca, 0x89, 0x73, 0xc2, 0x72, 0x6e, 0xed, 0x99, + 0x89, 0xb2, 0x7a, 0x65, 0x1b, 0x43, 0x14, 0x8a, 0x94, 0x3e, 0x03, 0x09, 0x56, 0xe2, 0x30, 0xc3, + 0xd3, 0x93, 0x31, 0xe0, 0x5c, 0x54, 0x08, 0x4e, 0x7a, 0x14, 0xd2, 0xf8, 0x2f, 0x8d, 0xed, 0x34, + 0xf1, 0x39, 0x85, 0x05, 0x38, 0xae, 0xd2, 0x22, 0xa4, 0x48, 0x9a, 0xb5, 0x10, 0x6f, 0x0d, 0xfe, + 0x35, 0x5e, 0x98, 0x16, 0x6a, 0x6b, 0x7d, 0xd3, 0x53, 0xef, 0x6a, 0x66, 0x1f, 0x91, 0x84, 0x49, + 0x2b, 0x59, 0x26, 0xfc, 0x1c, 0x96, 0x49, 0x67, 0x21, 0x43, 0xb3, 0xd2, 0xb0, 0x5a, 0xe8, 0x65, + 0x52, 0x7d, 0x92, 0x0a, 0x4d, 0xd4, 0x2a, 0x96, 0xe0, 0xdb, 0xdf, 0x76, 0x6d, 0x8b, 0x2f, 0x2d, + 0xb9, 0x05, 0x16, 0x90, 0xdb, 0x5f, 0x1e, 0x2e, 0x7c, 0x8f, 0x8d, 0x7f, 0xbc, 0xe1, 0x5c, 0x5c, + 0xfa, 0x56, 0x0c, 0x12, 0x64, 0xbf, 0xe5, 0x21, 0xb3, 0xf7, 0x52, 0xbd, 0xa2, 0x6e, 0xd6, 0xf6, + 0x37, 0xb6, 0x2b, 0xa2, 0x20, 0xe5, 0x00, 0x88, 0xe0, 0xfa, 0x76, 0xad, 0xb4, 0x27, 0xc6, 0xfc, + 0xeb, 0xea, 0xee, 0xde, 0xa5, 0x8b, 0x62, 0xdc, 0x07, 0xec, 0x53, 0x41, 0x22, 0x6c, 0x70, 0x61, + 0x4d, 0x4c, 0x4a, 0x22, 0x64, 0x29, 0x41, 0xf5, 0x56, 0x65, 0xf3, 0xd2, 0x45, 0x71, 0x7a, 0x50, + 0x72, 0x61, 0x4d, 0x9c, 0x91, 0x66, 0x21, 0x4d, 0x24, 0x1b, 0xb5, 0xda, 0xb6, 0x98, 0xf2, 0x39, + 0x1b, 0x7b, 0x4a, 0x75, 0x77, 0x4b, 0x4c, 0xfb, 0x9c, 0x5b, 0x4a, 0x6d, 0xbf, 0x2e, 0x82, 0xcf, + 0xb0, 0x53, 0x69, 0x34, 0x4a, 0x5b, 0x15, 0x31, 0xe3, 0x5b, 0x6c, 0xbc, 0xb4, 0x57, 0x69, 0x88, + 0xd9, 0x01, 0xb7, 0x2e, 0xac, 0x89, 0xb3, 0xfe, 0x2d, 0x2a, 0xbb, 0xfb, 0x3b, 0x62, 0x4e, 0x9a, + 0x83, 0x59, 0x7a, 0x0b, 0xee, 0x44, 0x7e, 0x48, 0x74, 0xe9, 0xa2, 0x28, 0x06, 0x8e, 0x50, 0x96, + 0xb9, 0x01, 0xc1, 0xa5, 0x8b, 0xa2, 0xb4, 0x54, 0x86, 0x24, 0xc9, 0x2e, 0x49, 0x82, 0xdc, 0x76, + 0x69, 0xa3, 0xb2, 0xad, 0xd6, 0xea, 0x7b, 0xd5, 0xda, 0x6e, 0x69, 0x5b, 0x14, 0x02, 0x99, 0x52, + 0xf9, 0xec, 0x7e, 0x55, 0xa9, 0x6c, 0x8a, 0xb1, 0xb0, 0xac, 0x5e, 0x29, 0xed, 0x55, 0x36, 0xc5, + 0xf8, 0x92, 0x0e, 0x0b, 0xe3, 0xea, 0xcc, 0xd8, 0x9d, 0x11, 0x5a, 0xe2, 0xd8, 0x31, 0x4b, 0x4c, + 0xb8, 0x46, 0x96, 0xf8, 0x2b, 0x02, 0xcc, 0x8f, 0xa9, 0xb5, 0x63, 0x6f, 0xf2, 0x02, 0x24, 0x69, + 0x8a, 0xd2, 0xee, 0xf3, 0xd4, 0xd8, 0xa2, 0x4d, 0x12, 0x76, 0xa4, 0x03, 0x11, 0x5c, 0xb8, 0x03, + 0xc7, 0x8f, 0xe9, 0xc0, 0x98, 0x62, 0xc4, 0xc9, 0x57, 0x05, 0x90, 0x8f, 0xe3, 0x8e, 0x28, 0x14, + 0xb1, 0x81, 0x42, 0x71, 0x6d, 0xd8, 0x81, 0xf3, 0xc7, 0x3f, 0xc3, 0x88, 0x17, 0x6f, 0x09, 0x70, + 0x6a, 0xfc, 0xa0, 0x32, 0xd6, 0x87, 0xcf, 0xc0, 0x74, 0x17, 0x79, 0x07, 0x36, 0x6f, 0xd6, 0x9f, + 0x1a, 0xd3, 0x02, 0xb0, 0x7a, 0x38, 0x56, 0x0c, 0x15, 0xee, 0x21, 0xf1, 0xe3, 0xa6, 0x0d, 0xea, + 0xcd, 0x88, 0xa7, 0x5f, 0x8c, 0xc1, 0x23, 0x63, 0xc9, 0xc7, 0x3a, 0xfa, 0x18, 0x80, 0x61, 0xf5, + 0xfa, 0x1e, 0x6d, 0xc8, 0xb4, 0x3e, 0xa5, 0x89, 0x84, 0xec, 0x7d, 0x5c, 0x7b, 0xfa, 0x9e, 0xaf, + 0x8f, 0x13, 0x3d, 0x50, 0x11, 0x31, 0xb8, 0x12, 0x38, 0x9a, 0x20, 0x8e, 0x16, 0x8e, 0x79, 0xd2, + 0x91, 0x5e, 0xf7, 0x1c, 0x88, 0xba, 0x69, 0x20, 0xcb, 0x53, 0x5d, 0xcf, 0x41, 0x5a, 0xd7, 0xb0, + 0x3a, 0xa4, 0x00, 0xa7, 0x8a, 0xc9, 0xb6, 0x66, 0xba, 0x48, 0xc9, 0x53, 0x75, 0x83, 0x6b, 0x31, + 0x82, 0x74, 0x19, 0x27, 0x84, 0x98, 0x1e, 0x40, 0x50, 0xb5, 0x8f, 0x58, 0xfa, 0xfa, 0x0c, 0x64, + 0x42, 0x63, 0x9d, 0x74, 0x1e, 0xb2, 0xb7, 0xb5, 0xbb, 0x9a, 0xca, 0x47, 0x75, 0x1a, 0x89, 0x0c, + 0x96, 0xd5, 0xd9, 0xb8, 0xfe, 0x1c, 0x2c, 0x10, 0x13, 0xbb, 0xef, 0x21, 0x47, 0xd5, 0x4d, 0xcd, + 0x75, 0x49, 0xd0, 0x52, 0xc4, 0x54, 0xc2, 0xba, 0x1a, 0x56, 0x95, 0xb9, 0x46, 0x5a, 0x87, 0x79, + 0x82, 0xe8, 0xf6, 0x4d, 0xcf, 0xe8, 0x99, 0x48, 0xc5, 0x2f, 0x0f, 0x2e, 0x29, 0xc4, 0xbe, 0x67, + 0x73, 0xd8, 0x62, 0x87, 0x19, 0x60, 0x8f, 0x5c, 0x69, 0x13, 0x1e, 0x23, 0xb0, 0x0e, 0xb2, 0x90, + 0xa3, 0x79, 0x48, 0x45, 0x5f, 0xe8, 0x6b, 0xa6, 0xab, 0x6a, 0x56, 0x4b, 0x3d, 0xd0, 0xdc, 0x03, + 0x79, 0x01, 0x13, 0x6c, 0xc4, 0x64, 0x41, 0x39, 0x83, 0x0d, 0xb7, 0x98, 0x5d, 0x85, 0x98, 0x95, + 0xac, 0xd6, 0x0d, 0xcd, 0x3d, 0x90, 0x8a, 0x70, 0x8a, 0xb0, 0xb8, 0x9e, 0x63, 0x58, 0x1d, 0x55, + 0x3f, 0x40, 0xfa, 0x1d, 0xb5, 0xef, 0xb5, 0xaf, 0xc8, 0x8f, 0x86, 0xef, 0x4f, 0x3c, 0x6c, 0x10, + 0x9b, 0x32, 0x36, 0xd9, 0xf7, 0xda, 0x57, 0xa4, 0x06, 0x64, 0xf1, 0x62, 0x74, 0x8d, 0x57, 0x90, + 0xda, 0xb6, 0x1d, 0xd2, 0x59, 0x72, 0x63, 0x76, 0x76, 0x28, 0x82, 0x2b, 0x35, 0x06, 0xd8, 0xb1, + 0x5b, 0xa8, 0x98, 0x6c, 0xd4, 0x2b, 0x95, 0x4d, 0x25, 0xc3, 0x59, 0xae, 0xdb, 0x0e, 0x4e, 0xa8, + 0x8e, 0xed, 0x07, 0x38, 0x43, 0x13, 0xaa, 0x63, 0xf3, 0xf0, 0xae, 0xc3, 0xbc, 0xae, 0xd3, 0x67, + 0x36, 0x74, 0x95, 0x8d, 0xf8, 0xae, 0x2c, 0x0e, 0x04, 0x4b, 0xd7, 0xb7, 0xa8, 0x01, 0xcb, 0x71, + 0x57, 0xba, 0x0a, 0x8f, 0x04, 0xc1, 0x0a, 0x03, 0xe7, 0x46, 0x9e, 0x72, 0x18, 0xba, 0x0e, 0xf3, + 0xbd, 0xc3, 0x51, 0xa0, 0x34, 0x70, 0xc7, 0xde, 0xe1, 0x30, 0xec, 0x09, 0xf2, 0xda, 0xe6, 0x20, + 0x5d, 0xf3, 0x50, 0x4b, 0x3e, 0x1d, 0xb6, 0x0e, 0x29, 0xa4, 0x55, 0x10, 0x75, 0x5d, 0x45, 0x96, + 0xd6, 0x34, 0x91, 0xaa, 0x39, 0xc8, 0xd2, 0x5c, 0xf9, 0x6c, 0xd8, 0x38, 0xa7, 0xeb, 0x15, 0xa2, + 0x2d, 0x11, 0xa5, 0xf4, 0x34, 0xcc, 0xd9, 0xcd, 0xdb, 0x3a, 0xcd, 0x2c, 0xb5, 0xe7, 0xa0, 0xb6, + 0xf1, 0xb2, 0xfc, 0x38, 0x09, 0x53, 0x1e, 0x2b, 0x48, 0x5e, 0xd5, 0x89, 0x58, 0x7a, 0x0a, 0x44, + 0xdd, 0x3d, 0xd0, 0x9c, 0x1e, 0x69, 0xed, 0x6e, 0x4f, 0xd3, 0x91, 0xfc, 0x04, 0x35, 0xa5, 0xf2, + 0x5d, 0x2e, 0xc6, 0x99, 0xed, 0xde, 0x33, 0xda, 0x1e, 0x67, 0x7c, 0x92, 0x66, 0x36, 0x91, 0x31, + 0xb6, 0x5b, 0xb0, 0xd0, 0xb7, 0x0c, 0xcb, 0x43, 0x4e, 0xcf, 0x41, 0x78, 0x88, 0xa7, 0x3b, 0x51, + 0xfe, 0xd7, 0x99, 0x63, 0xc6, 0xf0, 0xfd, 0xb0, 0x35, 0x4d, 0x00, 0x65, 0xbe, 0x3f, 0x2a, 0x5c, + 0x2a, 0x42, 0x36, 0x9c, 0x17, 0x52, 0x1a, 0x68, 0x66, 0x88, 0x02, 0xee, 0xb1, 0xe5, 0xda, 0x26, + 0xee, 0x8e, 0x9f, 0xaf, 0x88, 0x31, 0xdc, 0xa5, 0xb7, 0xab, 0x7b, 0x15, 0x55, 0xd9, 0xdf, 0xdd, + 0xab, 0xee, 0x54, 0xc4, 0xf8, 0xd3, 0xe9, 0xd4, 0x0f, 0x67, 0xc4, 0xfb, 0xf7, 0xef, 0xdf, 0x8f, + 0x2d, 0x7d, 0x27, 0x06, 0xb9, 0xc1, 0xc9, 0x58, 0xfa, 0x59, 0x38, 0xcd, 0x5f, 0x63, 0x5d, 0xe4, + 0xa9, 0xf7, 0x0c, 0x87, 0xa4, 0x6a, 0x57, 0xa3, 0xb3, 0xa5, 0x1f, 0xe5, 0x05, 0x66, 0xd5, 0x40, + 0xde, 0x8b, 0x86, 0x83, 0x13, 0xb1, 0xab, 0x79, 0xd2, 0x36, 0x9c, 0xb5, 0x6c, 0xd5, 0xf5, 0x34, + 0xab, 0xa5, 0x39, 0x2d, 0x35, 0x38, 0x40, 0x50, 0x35, 0x5d, 0x47, 0xae, 0x6b, 0xd3, 0x16, 0xe1, + 0xb3, 0x7c, 0xc2, 0xb2, 0x1b, 0xcc, 0x38, 0xa8, 0x9d, 0x25, 0x66, 0x3a, 0x94, 0x11, 0xf1, 0xe3, + 0x32, 0xe2, 0x51, 0x48, 0x77, 0xb5, 0x9e, 0x8a, 0x2c, 0xcf, 0x39, 0x24, 0xf3, 0x5c, 0x4a, 0x49, + 0x75, 0xb5, 0x5e, 0x05, 0x5f, 0x7f, 0x74, 0x6b, 0x10, 0x8e, 0xe3, 0xf7, 0xe3, 0x90, 0x0d, 0xcf, + 0x74, 0x78, 0x44, 0xd6, 0x49, 0xfd, 0x16, 0xc8, 0x0e, 0xff, 0xe4, 0x43, 0x27, 0xc0, 0x95, 0x32, + 0x2e, 0xec, 0xc5, 0x69, 0x3a, 0x69, 0x29, 0x14, 0x89, 0x9b, 0x2a, 0xde, 0xd3, 0x88, 0xce, 0xef, + 0x29, 0x85, 0x5d, 0x49, 0x5b, 0x30, 0x7d, 0xdb, 0x25, 0xdc, 0xd3, 0x84, 0xfb, 0xf1, 0x87, 0x73, + 0xdf, 0x6c, 0x10, 0xf2, 0xf4, 0xcd, 0x86, 0xba, 0x5b, 0x53, 0x76, 0x4a, 0xdb, 0x0a, 0x83, 0x4b, + 0x67, 0x20, 0x61, 0x6a, 0xaf, 0x1c, 0x0e, 0xb6, 0x00, 0x22, 0x9a, 0x34, 0xf0, 0x67, 0x20, 0x71, + 0x0f, 0x69, 0x77, 0x06, 0x0b, 0x2f, 0x11, 0x7d, 0x84, 0xa9, 0xbf, 0x0a, 0x49, 0x12, 0x2f, 0x09, + 0x80, 0x45, 0x4c, 0x9c, 0x92, 0x52, 0x90, 0x28, 0xd7, 0x14, 0x9c, 0xfe, 0x22, 0x64, 0xa9, 0x54, + 0xad, 0x57, 0x2b, 0xe5, 0x8a, 0x18, 0x5b, 0x5a, 0x87, 0x69, 0x1a, 0x04, 0xbc, 0x35, 0xfc, 0x30, + 0x88, 0x53, 0xec, 0x92, 0x71, 0x08, 0x5c, 0xbb, 0xbf, 0xb3, 0x51, 0x51, 0xc4, 0x58, 0x78, 0x79, + 0x5d, 0xc8, 0x86, 0xc7, 0xb9, 0x9f, 0x4e, 0x4e, 0xfd, 0xbd, 0x00, 0x99, 0xd0, 0x78, 0x86, 0x07, + 0x03, 0xcd, 0x34, 0xed, 0x7b, 0xaa, 0x66, 0x1a, 0x9a, 0xcb, 0x92, 0x02, 0x88, 0xa8, 0x84, 0x25, + 0x93, 0x2e, 0xda, 0x4f, 0xc5, 0xf9, 0x37, 0x05, 0x10, 0x87, 0x47, 0xbb, 0x21, 0x07, 0x85, 0x8f, + 0xd5, 0xc1, 0x37, 0x04, 0xc8, 0x0d, 0xce, 0x73, 0x43, 0xee, 0x9d, 0xff, 0x58, 0xdd, 0x7b, 0x27, + 0x06, 0xb3, 0x03, 0x53, 0xdc, 0xa4, 0xde, 0x7d, 0x01, 0xe6, 0x8c, 0x16, 0xea, 0xf6, 0x6c, 0x0f, + 0x59, 0xfa, 0xa1, 0x6a, 0xa2, 0xbb, 0xc8, 0x94, 0x97, 0x48, 0xa1, 0x58, 0x7d, 0xf8, 0x9c, 0xb8, + 0x52, 0x0d, 0x70, 0xdb, 0x18, 0x56, 0x9c, 0xaf, 0x6e, 0x56, 0x76, 0xea, 0xb5, 0xbd, 0xca, 0x6e, + 0xf9, 0x25, 0x75, 0x7f, 0xf7, 0xe7, 0x76, 0x6b, 0x2f, 0xee, 0x2a, 0xa2, 0x31, 0x64, 0xf6, 0x11, + 0x6e, 0xf5, 0x3a, 0x88, 0xc3, 0x4e, 0x49, 0xa7, 0x61, 0x9c, 0x5b, 0xe2, 0x94, 0x34, 0x0f, 0xf9, + 0xdd, 0x9a, 0xda, 0xa8, 0x6e, 0x56, 0xd4, 0xca, 0xf5, 0xeb, 0x95, 0xf2, 0x5e, 0x83, 0xbe, 0x38, + 0xfb, 0xd6, 0x7b, 0x83, 0x9b, 0xfa, 0xf5, 0x38, 0xcc, 0x8f, 0xf1, 0x44, 0x2a, 0xb1, 0x99, 0x9d, + 0xbe, 0x46, 0x3c, 0x3b, 0x89, 0xf7, 0x2b, 0x78, 0x2a, 0xa8, 0x6b, 0x8e, 0xc7, 0x46, 0xfc, 0xa7, + 0x00, 0x47, 0xc9, 0xf2, 0x8c, 0xb6, 0x81, 0x1c, 0x76, 0xce, 0x40, 0x07, 0xf9, 0x7c, 0x20, 0xa7, + 0x47, 0x0d, 0x3f, 0x03, 0x52, 0xcf, 0x76, 0x0d, 0xcf, 0xb8, 0x8b, 0x54, 0xc3, 0xe2, 0x87, 0x12, + 0x78, 0xb0, 0x4f, 0x28, 0x22, 0xd7, 0x54, 0x2d, 0xcf, 0xb7, 0xb6, 0x50, 0x47, 0x1b, 0xb2, 0xc6, + 0x05, 0x3c, 0xae, 0x88, 0x5c, 0xe3, 0x5b, 0x9f, 0x87, 0x6c, 0xcb, 0xee, 0xe3, 0x31, 0x89, 0xda, + 0xe1, 0x7e, 0x21, 0x28, 0x19, 0x2a, 0xf3, 0x4d, 0xd8, 0x1c, 0x1b, 0x9c, 0x86, 0x64, 0x95, 0x0c, + 0x95, 0x51, 0x93, 0x27, 0x21, 0xaf, 0x75, 0x3a, 0x0e, 0x26, 0xe7, 0x44, 0x74, 0x32, 0xcf, 0xf9, + 0x62, 0x62, 0xb8, 0x78, 0x13, 0x52, 0x3c, 0x0e, 0xb8, 0x25, 0xe3, 0x48, 0xa8, 0x3d, 0x7a, 0x26, + 0x15, 0x5b, 0x4e, 0x2b, 0x29, 0x8b, 0x2b, 0xcf, 0x43, 0xd6, 0x70, 0xd5, 0xe0, 0x70, 0x34, 0x76, + 0x2e, 0xb6, 0x9c, 0x52, 0x32, 0x86, 0xeb, 0x9f, 0x86, 0x2d, 0xbd, 0x15, 0x83, 0xdc, 0xe0, 0xe1, + 0xae, 0xb4, 0x09, 0x29, 0xd3, 0xd6, 0x35, 0x92, 0x5a, 0xf4, 0x97, 0x85, 0xe5, 0x88, 0xf3, 0xe0, + 0x95, 0x6d, 0x66, 0xaf, 0xf8, 0xc8, 0xc5, 0x7f, 0x16, 0x20, 0xc5, 0xc5, 0xd2, 0x29, 0x48, 0xf4, + 0x34, 0xef, 0x80, 0xd0, 0x25, 0x37, 0x62, 0xa2, 0xa0, 0x90, 0x6b, 0x2c, 0x77, 0x7b, 0x9a, 0x45, + 0x52, 0x80, 0xc9, 0xf1, 0x35, 0x5e, 0x57, 0x13, 0x69, 0x2d, 0x32, 0xf6, 0xdb, 0xdd, 0x2e, 0xb2, + 0x3c, 0x97, 0xaf, 0x2b, 0x93, 0x97, 0x99, 0x58, 0x7a, 0x06, 0xe6, 0x3c, 0x47, 0x33, 0xcc, 0x01, + 0xdb, 0x04, 0xb1, 0x15, 0xb9, 0xc2, 0x37, 0x2e, 0xc2, 0x19, 0xce, 0xdb, 0x42, 0x9e, 0xa6, 0x1f, + 0xa0, 0x56, 0x00, 0x9a, 0x26, 0x27, 0x87, 0xa7, 0x99, 0xc1, 0x26, 0xd3, 0x73, 0xec, 0xd2, 0xf7, + 0x04, 0x98, 0xe3, 0x2f, 0x2a, 0x2d, 0x3f, 0x58, 0x3b, 0x00, 0x9a, 0x65, 0xd9, 0x5e, 0x38, 0x5c, + 0xa3, 0xa9, 0x3c, 0x82, 0x5b, 0x29, 0xf9, 0x20, 0x25, 0x44, 0xb0, 0xd8, 0x05, 0x08, 0x34, 0xc7, + 0x86, 0xed, 0x2c, 0x64, 0xd8, 0xc9, 0x3d, 0xf9, 0xf9, 0x87, 0xbe, 0xda, 0x02, 0x15, 0xe1, 0x37, + 0x1a, 0x69, 0x01, 0x92, 0x4d, 0xd4, 0x31, 0x2c, 0x76, 0x9e, 0x48, 0x2f, 0xf8, 0x29, 0x65, 0xc2, + 0x3f, 0xa5, 0xdc, 0xb8, 0x05, 0xf3, 0xba, 0xdd, 0x1d, 0x76, 0x77, 0x43, 0x1c, 0x7a, 0xbd, 0x76, + 0x6f, 0x08, 0x9f, 0x87, 0x60, 0xc4, 0xfc, 0x4a, 0x2c, 0xbe, 0x55, 0xdf, 0xf8, 0x5a, 0x6c, 0x71, + 0x8b, 0xe2, 0xea, 0xfc, 0x31, 0x15, 0xd4, 0x36, 0x91, 0x8e, 0x5d, 0x87, 0x1f, 0x7d, 0x0a, 0x9e, + 0xed, 0x18, 0xde, 0x41, 0xbf, 0xb9, 0xa2, 0xdb, 0xdd, 0xd5, 0x8e, 0xdd, 0xb1, 0x83, 0x9f, 0xbb, + 0xf0, 0x15, 0xb9, 0x20, 0xff, 0xb1, 0x9f, 0xbc, 0xd2, 0xbe, 0x74, 0x31, 0xf2, 0xf7, 0xb1, 0xe2, + 0x2e, 0xcc, 0x33, 0x63, 0x95, 0x9c, 0xb9, 0xd3, 0x57, 0x03, 0xe9, 0xa1, 0xe7, 0x2e, 0xf2, 0x37, + 0xdf, 0x25, 0xbd, 0x5a, 0x99, 0x63, 0x50, 0xac, 0xa3, 0x2f, 0x10, 0x45, 0x05, 0x1e, 0x19, 0xe0, + 0xa3, 0xfb, 0x12, 0x39, 0x11, 0x8c, 0xdf, 0x61, 0x8c, 0xf3, 0x21, 0xc6, 0x06, 0x83, 0x16, 0xcb, + 0x30, 0x7b, 0x12, 0xae, 0x7f, 0x64, 0x5c, 0x59, 0x14, 0x26, 0xd9, 0x82, 0x3c, 0x21, 0xd1, 0xfb, + 0xae, 0x67, 0x77, 0x49, 0xd1, 0x7b, 0x38, 0xcd, 0x3f, 0xbd, 0x4b, 0x37, 0x4a, 0x0e, 0xc3, 0xca, + 0x3e, 0xaa, 0x58, 0x04, 0xf2, 0x33, 0x43, 0x0b, 0xe9, 0x66, 0x04, 0xc3, 0xdb, 0xcc, 0x11, 0xdf, + 0xbe, 0xf8, 0x39, 0x58, 0xc0, 0xff, 0x93, 0x9a, 0x14, 0xf6, 0x24, 0xfa, 0x94, 0x49, 0xfe, 0xde, + 0xab, 0x74, 0x2f, 0xce, 0xfb, 0x04, 0x21, 0x9f, 0x42, 0xab, 0xd8, 0x41, 0x9e, 0x87, 0x1c, 0x57, + 0xd5, 0xcc, 0x71, 0xee, 0x85, 0x5e, 0xd3, 0xe5, 0xd7, 0xde, 0x1b, 0x5c, 0xc5, 0x2d, 0x8a, 0x2c, + 0x99, 0x66, 0x71, 0x1f, 0x4e, 0x8f, 0xc9, 0x8a, 0x09, 0x38, 0x5f, 0x67, 0x9c, 0x0b, 0x23, 0x99, + 0x81, 0x69, 0xeb, 0xc0, 0xe5, 0xfe, 0x5a, 0x4e, 0xc0, 0xf9, 0xfb, 0x8c, 0x53, 0x62, 0x58, 0xbe, + 0xa4, 0x98, 0xf1, 0x26, 0xcc, 0xdd, 0x45, 0x4e, 0xd3, 0x76, 0xd9, 0xd1, 0xc8, 0x04, 0x74, 0x6f, + 0x30, 0xba, 0x3c, 0x03, 0x92, 0xb3, 0x12, 0xcc, 0x75, 0x15, 0x52, 0x6d, 0x4d, 0x47, 0x13, 0x50, + 0x7c, 0x99, 0x51, 0xcc, 0x60, 0x7b, 0x0c, 0x2d, 0x41, 0xb6, 0x63, 0xb3, 0xb6, 0x14, 0x0d, 0x7f, + 0x93, 0xc1, 0x33, 0x1c, 0xc3, 0x28, 0x7a, 0x76, 0xaf, 0x6f, 0xe2, 0x9e, 0x15, 0x4d, 0xf1, 0x07, + 0x9c, 0x82, 0x63, 0x18, 0xc5, 0x09, 0xc2, 0xfa, 0x87, 0x9c, 0xc2, 0x0d, 0xc5, 0xf3, 0x05, 0xc8, + 0xd8, 0x96, 0x79, 0x68, 0x5b, 0x93, 0x38, 0xf1, 0x47, 0x8c, 0x01, 0x18, 0x04, 0x13, 0x5c, 0x83, + 0xf4, 0xa4, 0x0b, 0xf1, 0xc7, 0xef, 0xf1, 0xed, 0xc1, 0x57, 0x60, 0x0b, 0xf2, 0xbc, 0x40, 0x19, + 0xb6, 0x35, 0x01, 0xc5, 0x9f, 0x30, 0x8a, 0x5c, 0x08, 0xc6, 0x1e, 0xc3, 0x43, 0xae, 0xd7, 0x41, + 0x93, 0x90, 0xbc, 0xc5, 0x1f, 0x83, 0x41, 0x58, 0x28, 0x9b, 0xc8, 0xd2, 0x0f, 0x26, 0x63, 0xf8, + 0x2a, 0x0f, 0x25, 0xc7, 0x60, 0x8a, 0x32, 0xcc, 0x76, 0x35, 0xc7, 0x3d, 0xd0, 0xcc, 0x89, 0x96, + 0xe3, 0x4f, 0x19, 0x47, 0xd6, 0x07, 0xb1, 0x88, 0xf4, 0xad, 0x93, 0xd0, 0x7c, 0x8d, 0x47, 0x24, + 0x04, 0x63, 0x5b, 0xcf, 0xf5, 0xc8, 0x01, 0xd4, 0x49, 0xd8, 0xbe, 0xce, 0xb7, 0x1e, 0xc5, 0xee, + 0x84, 0x19, 0xaf, 0x41, 0xda, 0x35, 0x5e, 0x99, 0x88, 0xe6, 0xcf, 0xf8, 0x4a, 0x13, 0x00, 0x06, + 0xbf, 0x04, 0x67, 0xc6, 0xb6, 0x89, 0x09, 0xc8, 0xfe, 0x9c, 0x91, 0x9d, 0x1a, 0xd3, 0x2a, 0x58, + 0x49, 0x38, 0x29, 0xe5, 0x5f, 0xf0, 0x92, 0x80, 0x86, 0xb8, 0xea, 0xf8, 0x45, 0xc1, 0xd5, 0xda, + 0x27, 0x8b, 0xda, 0x5f, 0xf2, 0xa8, 0x51, 0xec, 0x40, 0xd4, 0xf6, 0xe0, 0x14, 0x63, 0x3c, 0xd9, + 0xba, 0x7e, 0x83, 0x17, 0x56, 0x8a, 0xde, 0x1f, 0x5c, 0xdd, 0x9f, 0x87, 0x45, 0x3f, 0x9c, 0x7c, + 0x22, 0x75, 0xd5, 0xae, 0xd6, 0x9b, 0x80, 0xf9, 0x9b, 0x8c, 0x99, 0x57, 0x7c, 0x7f, 0xa4, 0x75, + 0x77, 0xb4, 0x1e, 0x26, 0xbf, 0x05, 0x32, 0x27, 0xef, 0x5b, 0x0e, 0xd2, 0xed, 0x8e, 0x65, 0xbc, + 0x82, 0x5a, 0x13, 0x50, 0xff, 0xd5, 0xd0, 0x52, 0xed, 0x87, 0xe0, 0x98, 0xb9, 0x0a, 0xa2, 0x3f, + 0xab, 0xa8, 0x46, 0xb7, 0x67, 0x3b, 0x5e, 0x04, 0xe3, 0x5f, 0xf3, 0x95, 0xf2, 0x71, 0x55, 0x02, + 0x2b, 0x56, 0x20, 0x47, 0x2e, 0x27, 0x4d, 0xc9, 0xbf, 0x61, 0x44, 0xb3, 0x01, 0x8a, 0x15, 0x0e, + 0xdd, 0xee, 0xf6, 0x34, 0x67, 0x92, 0xfa, 0xf7, 0xb7, 0xbc, 0x70, 0x30, 0x08, 0x2b, 0x1c, 0xde, + 0x61, 0x0f, 0xe1, 0x6e, 0x3f, 0x01, 0xc3, 0xb7, 0x78, 0xe1, 0xe0, 0x18, 0x46, 0xc1, 0x07, 0x86, + 0x09, 0x28, 0xfe, 0x8e, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x6c, 0xd0, 0x68, 0x1d, 0xd4, 0x31, 0x5c, + 0xcf, 0xa1, 0x73, 0xf0, 0xc3, 0xa9, 0xbe, 0xfd, 0xde, 0xe0, 0x10, 0xa6, 0x84, 0xa0, 0xc5, 0x9b, + 0x90, 0x1f, 0x1a, 0x31, 0xa4, 0xa8, 0x6f, 0x16, 0xe4, 0x5f, 0xf8, 0x80, 0x15, 0xa3, 0xc1, 0x09, + 0xa3, 0xb8, 0x8d, 0xd7, 0x7d, 0x70, 0x0e, 0x88, 0x26, 0x7b, 0xf5, 0x03, 0x7f, 0xe9, 0x07, 0xc6, + 0x80, 0xe2, 0x75, 0x98, 0x1d, 0x98, 0x01, 0xa2, 0xa9, 0x7e, 0x91, 0x51, 0x65, 0xc3, 0x23, 0x40, + 0x71, 0x1d, 0x12, 0xb8, 0x9f, 0x47, 0xc3, 0x7f, 0x89, 0xc1, 0x89, 0x79, 0xf1, 0xd3, 0x90, 0xe2, + 0x7d, 0x3c, 0x1a, 0xfa, 0xcb, 0x0c, 0xea, 0x43, 0x30, 0x9c, 0xf7, 0xf0, 0x68, 0xf8, 0xaf, 0x70, + 0x38, 0x87, 0x60, 0xf8, 0xe4, 0x21, 0xfc, 0x87, 0x5f, 0x4d, 0xb0, 0x3a, 0xcc, 0x63, 0x77, 0x0d, + 0x66, 0x58, 0xf3, 0x8e, 0x46, 0x7f, 0x91, 0xdd, 0x9c, 0x23, 0x8a, 0x97, 0x21, 0x39, 0x61, 0xc0, + 0x7f, 0x8d, 0x41, 0xa9, 0x7d, 0xb1, 0x0c, 0x99, 0x50, 0xc3, 0x8e, 0x86, 0xff, 0x3a, 0x83, 0x87, + 0x51, 0xd8, 0x75, 0xd6, 0xb0, 0xa3, 0x09, 0x7e, 0x83, 0xbb, 0xce, 0x10, 0x38, 0x6c, 0xbc, 0x57, + 0x47, 0xa3, 0x7f, 0x93, 0x47, 0x9d, 0x43, 0x8a, 0x2f, 0x40, 0xda, 0xaf, 0xbf, 0xd1, 0xf8, 0xdf, + 0x62, 0xf8, 0x00, 0x83, 0x23, 0x10, 0xaa, 0xff, 0xd1, 0x14, 0xbf, 0xcd, 0x23, 0x10, 0x42, 0xe1, + 0x6d, 0x34, 0xdc, 0xd3, 0xa3, 0x99, 0x7e, 0x87, 0x6f, 0xa3, 0xa1, 0x96, 0x8e, 0x57, 0x93, 0x94, + 0xc1, 0x68, 0x8a, 0xdf, 0xe5, 0xab, 0x49, 0xec, 0xb1, 0x1b, 0xc3, 0x4d, 0x32, 0x9a, 0xe3, 0xf7, + 0xb8, 0x1b, 0x43, 0x3d, 0xb2, 0x58, 0x07, 0x69, 0xb4, 0x41, 0x46, 0xf3, 0x7d, 0x89, 0xf1, 0xcd, + 0x8d, 0xf4, 0xc7, 0xe2, 0x8b, 0x70, 0x6a, 0x7c, 0x73, 0x8c, 0x66, 0x7d, 0xed, 0x83, 0xa1, 0xd7, + 0x99, 0x70, 0x6f, 0x2c, 0xee, 0x05, 0x55, 0x36, 0xdc, 0x18, 0xa3, 0x69, 0x5f, 0xff, 0x60, 0xb0, + 0xd0, 0x86, 0xfb, 0x62, 0xb1, 0x04, 0x10, 0xf4, 0xa4, 0x68, 0xae, 0x37, 0x18, 0x57, 0x08, 0x84, + 0xb7, 0x06, 0x6b, 0x49, 0xd1, 0xf8, 0x2f, 0xf3, 0xad, 0xc1, 0x10, 0x78, 0x6b, 0xf0, 0x6e, 0x14, + 0x8d, 0x7e, 0x93, 0x6f, 0x0d, 0x0e, 0x29, 0x5e, 0x83, 0x94, 0xd5, 0x37, 0x4d, 0x9c, 0x5b, 0xd2, + 0xc3, 0x3f, 0x23, 0x92, 0xff, 0xed, 0x43, 0x06, 0xe6, 0x80, 0xe2, 0x3a, 0x24, 0x51, 0xb7, 0x89, + 0x5a, 0x51, 0xc8, 0x7f, 0xff, 0x90, 0xd7, 0x13, 0x6c, 0x5d, 0x7c, 0x01, 0x80, 0xbe, 0x4c, 0x93, + 0x5f, 0x89, 0x22, 0xb0, 0xff, 0xf1, 0x21, 0xfb, 0x42, 0x21, 0x80, 0x04, 0x04, 0xf4, 0x7b, 0x87, + 0x87, 0x13, 0xbc, 0x37, 0x48, 0x40, 0x5e, 0xc0, 0xaf, 0xc2, 0xcc, 0x6d, 0xd7, 0xb6, 0x3c, 0xad, + 0x13, 0x85, 0xfe, 0x4f, 0x86, 0xe6, 0xf6, 0x38, 0x60, 0x5d, 0xdb, 0x41, 0x9e, 0xd6, 0x71, 0xa3, + 0xb0, 0xff, 0xc5, 0xb0, 0x3e, 0x00, 0x83, 0x75, 0xcd, 0xf5, 0x26, 0x79, 0xee, 0xff, 0xe6, 0x60, + 0x0e, 0xc0, 0x4e, 0xe3, 0xff, 0xef, 0xa0, 0xc3, 0x28, 0xec, 0xfb, 0xdc, 0x69, 0x66, 0x5f, 0xfc, + 0x34, 0xa4, 0xf1, 0xbf, 0xf4, 0xab, 0x9d, 0x08, 0xf0, 0xff, 0x30, 0x70, 0x80, 0xc0, 0x77, 0x76, + 0xbd, 0x96, 0x67, 0x44, 0x07, 0xfb, 0x7f, 0xd9, 0x4a, 0x73, 0xfb, 0x62, 0x09, 0x32, 0xae, 0xd7, + 0x6a, 0xf5, 0xd9, 0x44, 0x13, 0x01, 0xff, 0xd1, 0x87, 0xfe, 0x4b, 0xae, 0x8f, 0xd9, 0x38, 0x3f, + 0xfe, 0xb0, 0x0e, 0xb6, 0xec, 0x2d, 0x9b, 0x1e, 0xd3, 0xc1, 0x6b, 0x49, 0x78, 0x54, 0xb7, 0xbb, + 0x4d, 0xdb, 0x5d, 0xa5, 0x05, 0xa5, 0x69, 0x7b, 0x07, 0xab, 0xb6, 0xc5, 0xcc, 0xa5, 0xb8, 0x6d, + 0xa1, 0xc5, 0x93, 0x9d, 0xcb, 0x2d, 0x9d, 0x81, 0x64, 0xa3, 0xdf, 0x6c, 0x1e, 0x4a, 0x22, 0xc4, + 0xdd, 0x7e, 0x93, 0x7d, 0x58, 0x82, 0xff, 0x5d, 0xfa, 0x7e, 0x1c, 0x32, 0x0d, 0xad, 0xdb, 0x33, + 0x51, 0xcd, 0x42, 0xb5, 0xb6, 0x24, 0xc3, 0x34, 0x79, 0x8c, 0xe7, 0x89, 0x91, 0x70, 0x63, 0x4a, + 0x61, 0xd7, 0xbe, 0x66, 0x8d, 0x1c, 0x56, 0xc6, 0x7c, 0xcd, 0x9a, 0xaf, 0xb9, 0x40, 0xcf, 0x2a, + 0x7d, 0xcd, 0x05, 0x5f, 0x73, 0x91, 0x9c, 0x58, 0xc6, 0x7d, 0xcd, 0x45, 0x5f, 0xb3, 0x4e, 0x4e, + 0xe4, 0x67, 0x7d, 0xcd, 0xba, 0xaf, 0xb9, 0x44, 0xce, 0xe0, 0x13, 0xbe, 0xe6, 0x92, 0xaf, 0xb9, + 0x4c, 0x8e, 0xde, 0xe7, 0x7c, 0xcd, 0x65, 0x5f, 0x73, 0x85, 0x1c, 0xb7, 0x4b, 0xbe, 0xe6, 0x8a, + 0xaf, 0xb9, 0x4a, 0xbe, 0x1f, 0x99, 0xf1, 0x35, 0x57, 0xa5, 0x45, 0x98, 0xa1, 0x4f, 0xf6, 0x1c, + 0xf9, 0x4d, 0x36, 0x7f, 0x63, 0x4a, 0xe1, 0x82, 0x40, 0xf7, 0x3c, 0xf9, 0x46, 0x64, 0x3a, 0xd0, + 0x3d, 0x1f, 0xe8, 0xd6, 0xc8, 0x97, 0xd2, 0x62, 0xa0, 0x5b, 0x0b, 0x74, 0x17, 0xe4, 0x59, 0xbc, + 0xfa, 0x81, 0xee, 0x42, 0xa0, 0xbb, 0x28, 0xe7, 0x70, 0xfc, 0x03, 0xdd, 0xc5, 0x40, 0xb7, 0x2e, + 0xe7, 0xcf, 0x09, 0xcb, 0xd9, 0x40, 0xb7, 0x2e, 0x3d, 0x0b, 0x19, 0xb7, 0xdf, 0x54, 0xd9, 0x27, + 0x04, 0xe4, 0x5b, 0x94, 0xcc, 0x1a, 0xac, 0xe0, 0x8c, 0x20, 0x8b, 0x7a, 0x63, 0x4a, 0x01, 0xb7, + 0xdf, 0x64, 0xe5, 0x71, 0x23, 0x0b, 0xe4, 0x34, 0x41, 0x25, 0x5f, 0x60, 0x6e, 0x6c, 0xbe, 0xfd, + 0xa0, 0x30, 0xf5, 0xdd, 0x07, 0x85, 0xa9, 0x7f, 0x79, 0x50, 0x98, 0x7a, 0xe7, 0x41, 0x41, 0x78, + 0xff, 0x41, 0x41, 0xf8, 0xf1, 0x83, 0x82, 0x70, 0xff, 0xa8, 0x20, 0x7c, 0xf5, 0xa8, 0x20, 0x7c, + 0xe3, 0xa8, 0x20, 0x7c, 0xfb, 0xa8, 0x20, 0xbc, 0x7d, 0x54, 0x98, 0xfa, 0xee, 0x51, 0x61, 0xea, + 0x9d, 0xa3, 0x82, 0xf0, 0xc3, 0xa3, 0xc2, 0xd4, 0xfb, 0x47, 0x05, 0xe1, 0xc7, 0x47, 0x05, 0xe1, + 0xfe, 0x0f, 0x0a, 0x42, 0x73, 0x9a, 0xa4, 0xd1, 0x85, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xb0, + 0x56, 0x8f, 0x6b, 0xf8, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafemarshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafemarshaler/one.pb.go index 6996e3cf1..79eb41fa7 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafemarshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafemarshaler/one.pb.go @@ -551,242 +551,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3751 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, - 0x75, 0x16, 0x78, 0x13, 0x79, 0x48, 0x51, 0xd0, 0x2f, 0x79, 0x8d, 0x95, 0x63, 0xae, 0x56, 0xb1, - 0x63, 0xd9, 0xae, 0xb5, 0xb6, 0x56, 0xda, 0x0b, 0xb7, 0x89, 0x87, 0x92, 0x68, 0xad, 0x76, 0x24, - 0x51, 0x01, 0xa5, 0xc4, 0x4e, 0x1e, 0x30, 0x20, 0xf8, 0x93, 0xc2, 0x2e, 0x08, 0xb0, 0x00, 0xb8, - 0xb6, 0xfc, 0xb4, 0x19, 0xf7, 0x32, 0x99, 0x4c, 0xef, 0x9d, 0x69, 0xe2, 0x38, 0x6e, 0x9a, 0x99, - 0xd6, 0x69, 0x7a, 0x4b, 0x7a, 0x49, 0x33, 0x7d, 0xea, 0x4b, 0x5a, 0x3f, 0x75, 0x92, 0xb7, 0x3e, - 0xe4, 0x21, 0xab, 0x7a, 0xa6, 0x69, 0xeb, 0xb6, 0x6e, 0xe3, 0x99, 0x66, 0xc6, 0x2f, 0x9d, 0xff, - 0x06, 0x80, 0x17, 0x2d, 0xa8, 0xcc, 0x24, 0xe9, 0x93, 0x84, 0x73, 0xce, 0xf7, 0xe1, 0xe0, 0xfc, - 0xe7, 0x3f, 0xe7, 0xe0, 0x27, 0xe0, 0x33, 0xab, 0xb0, 0xd0, 0x76, 0x9c, 0xb6, 0x85, 0x2f, 0x75, - 0x5d, 0xc7, 0x77, 0x1a, 0xbd, 0xd6, 0xa5, 0x26, 0xf6, 0x0c, 0xd7, 0xec, 0xfa, 0x8e, 0xbb, 0x4c, - 0x65, 0x68, 0x9a, 0x59, 0x2c, 0x0b, 0x8b, 0xc5, 0x5d, 0x98, 0x79, 0xc1, 0xb4, 0xf0, 0x66, 0x60, - 0x58, 0xc7, 0x3e, 0xba, 0x06, 0xa9, 0x96, 0x69, 0x61, 0x45, 0x5a, 0x48, 0x2e, 0xe5, 0x57, 0x1e, - 0x5b, 0x1e, 0x00, 0x2d, 0xf7, 0x23, 0xf6, 0x89, 0x58, 0xa5, 0x88, 0xc5, 0x77, 0x52, 0x30, 0x3b, - 0x42, 0x8b, 0x10, 0xa4, 0x6c, 0xbd, 0x43, 0x18, 0xa5, 0xa5, 0x9c, 0x4a, 0xff, 0x47, 0x0a, 0x4c, - 0x76, 0x75, 0xe3, 0x8e, 0xde, 0xc6, 0x4a, 0x82, 0x8a, 0xc5, 0x25, 0x2a, 0x01, 0x34, 0x71, 0x17, - 0xdb, 0x4d, 0x6c, 0x1b, 0xc7, 0x4a, 0x72, 0x21, 0xb9, 0x94, 0x53, 0x23, 0x12, 0xf4, 0x34, 0xcc, - 0x74, 0x7b, 0x0d, 0xcb, 0x34, 0xb4, 0x88, 0x19, 0x2c, 0x24, 0x97, 0xd2, 0xaa, 0xcc, 0x14, 0x9b, - 0xa1, 0xf1, 0x13, 0x30, 0xfd, 0x32, 0xd6, 0xef, 0x44, 0x4d, 0xf3, 0xd4, 0xb4, 0x48, 0xc4, 0x11, - 0xc3, 0x0d, 0x28, 0x74, 0xb0, 0xe7, 0xe9, 0x6d, 0xac, 0xf9, 0xc7, 0x5d, 0xac, 0xa4, 0xe8, 0xd3, - 0x2f, 0x0c, 0x3d, 0xfd, 0xe0, 0x93, 0xe7, 0x39, 0xea, 0xe0, 0xb8, 0x8b, 0x51, 0x05, 0x72, 0xd8, - 0xee, 0x75, 0x18, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x5e, 0x67, 0x90, 0x25, 0x4b, 0x60, 0x9c, - 0x62, 0xd2, 0xc3, 0xee, 0x5d, 0xd3, 0xc0, 0x4a, 0x86, 0x12, 0x3c, 0x31, 0x44, 0x50, 0x67, 0xfa, - 0x41, 0x0e, 0x81, 0x43, 0x1b, 0x90, 0xc3, 0xaf, 0xf8, 0xd8, 0xf6, 0x4c, 0xc7, 0x56, 0x26, 0x29, - 0xc9, 0xe3, 0x23, 0x56, 0x11, 0x5b, 0xcd, 0x41, 0x8a, 0x10, 0x87, 0xae, 0xc0, 0xa4, 0xd3, 0xf5, - 0x4d, 0xc7, 0xf6, 0x94, 0xec, 0x82, 0xb4, 0x94, 0x5f, 0xf9, 0xd0, 0xc8, 0x44, 0xa8, 0x31, 0x1b, - 0x55, 0x18, 0xa3, 0x6d, 0x90, 0x3d, 0xa7, 0xe7, 0x1a, 0x58, 0x33, 0x9c, 0x26, 0xd6, 0x4c, 0xbb, - 0xe5, 0x28, 0x39, 0x4a, 0x70, 0x61, 0xf8, 0x41, 0xa8, 0xe1, 0x86, 0xd3, 0xc4, 0xdb, 0x76, 0xcb, - 0x51, 0x8b, 0x5e, 0xdf, 0x35, 0x3a, 0x07, 0x19, 0xef, 0xd8, 0xf6, 0xf5, 0x57, 0x94, 0x02, 0xcd, - 0x10, 0x7e, 0xb5, 0xf8, 0xbf, 0x69, 0x98, 0x1e, 0x27, 0xc5, 0x6e, 0x40, 0xba, 0x45, 0x9e, 0x52, - 0x49, 0x9c, 0x25, 0x06, 0x0c, 0xd3, 0x1f, 0xc4, 0xcc, 0x8f, 0x19, 0xc4, 0x0a, 0xe4, 0x6d, 0xec, - 0xf9, 0xb8, 0xc9, 0x32, 0x22, 0x39, 0x66, 0x4e, 0x01, 0x03, 0x0d, 0xa7, 0x54, 0xea, 0xc7, 0x4a, - 0xa9, 0x17, 0x61, 0x3a, 0x70, 0x49, 0x73, 0x75, 0xbb, 0x2d, 0x72, 0xf3, 0x52, 0x9c, 0x27, 0xcb, - 0x55, 0x81, 0x53, 0x09, 0x4c, 0x2d, 0xe2, 0xbe, 0x6b, 0xb4, 0x09, 0xe0, 0xd8, 0xd8, 0x69, 0x69, - 0x4d, 0x6c, 0x58, 0x4a, 0xf6, 0x94, 0x28, 0xd5, 0x88, 0xc9, 0x50, 0x94, 0x1c, 0x26, 0x35, 0x2c, - 0x74, 0x3d, 0x4c, 0xb5, 0xc9, 0x53, 0x32, 0x65, 0x97, 0x6d, 0xb2, 0xa1, 0x6c, 0x3b, 0x84, 0xa2, - 0x8b, 0x49, 0xde, 0xe3, 0x26, 0x7f, 0xb2, 0x1c, 0x75, 0x62, 0x39, 0xf6, 0xc9, 0x54, 0x0e, 0x63, - 0x0f, 0x36, 0xe5, 0x46, 0x2f, 0xd1, 0x87, 0x21, 0x10, 0x68, 0x34, 0xad, 0x80, 0x56, 0xa1, 0x82, - 0x10, 0xee, 0xe9, 0x1d, 0x3c, 0x7f, 0x0d, 0x8a, 0xfd, 0xe1, 0x41, 0x73, 0x90, 0xf6, 0x7c, 0xdd, - 0xf5, 0x69, 0x16, 0xa6, 0x55, 0x76, 0x81, 0x64, 0x48, 0x62, 0xbb, 0x49, 0xab, 0x5c, 0x5a, 0x25, - 0xff, 0xce, 0x5f, 0x85, 0xa9, 0xbe, 0xdb, 0x8f, 0x0b, 0x5c, 0xfc, 0x7c, 0x06, 0xe6, 0x46, 0xe5, - 0xdc, 0xc8, 0xf4, 0x3f, 0x07, 0x19, 0xbb, 0xd7, 0x69, 0x60, 0x57, 0x49, 0x52, 0x06, 0x7e, 0x85, - 0x2a, 0x90, 0xb6, 0xf4, 0x06, 0xb6, 0x94, 0xd4, 0x82, 0xb4, 0x54, 0x5c, 0x79, 0x7a, 0xac, 0xac, - 0x5e, 0xde, 0x21, 0x10, 0x95, 0x21, 0xd1, 0xc7, 0x20, 0xc5, 0x4b, 0x1c, 0x61, 0x78, 0x6a, 0x3c, - 0x06, 0x92, 0x8b, 0x2a, 0xc5, 0xa1, 0x47, 0x20, 0x47, 0xfe, 0xb2, 0xd8, 0x66, 0xa8, 0xcf, 0x59, - 0x22, 0x20, 0x71, 0x45, 0xf3, 0x90, 0xa5, 0x69, 0xd6, 0xc4, 0xa2, 0x35, 0x04, 0xd7, 0x64, 0x61, - 0x9a, 0xb8, 0xa5, 0xf7, 0x2c, 0x5f, 0xbb, 0xab, 0x5b, 0x3d, 0x4c, 0x13, 0x26, 0xa7, 0x16, 0xb8, - 0xf0, 0x13, 0x44, 0x86, 0x2e, 0x40, 0x9e, 0x65, 0xa5, 0x69, 0x37, 0xf1, 0x2b, 0xb4, 0xfa, 0xa4, - 0x55, 0x96, 0xa8, 0xdb, 0x44, 0x42, 0x6e, 0x7f, 0xdb, 0x73, 0x6c, 0xb1, 0xb4, 0xf4, 0x16, 0x44, - 0x40, 0x6f, 0x7f, 0x75, 0xb0, 0xf0, 0x3d, 0x3a, 0xfa, 0xf1, 0x06, 0x73, 0x71, 0xf1, 0x9b, 0x09, - 0x48, 0xd1, 0xfd, 0x36, 0x0d, 0xf9, 0x83, 0x97, 0xf6, 0xab, 0xda, 0x66, 0xed, 0x70, 0x7d, 0xa7, - 0x2a, 0x4b, 0xa8, 0x08, 0x40, 0x05, 0x2f, 0xec, 0xd4, 0x2a, 0x07, 0x72, 0x22, 0xb8, 0xde, 0xde, - 0x3b, 0xb8, 0xb2, 0x2a, 0x27, 0x03, 0xc0, 0x21, 0x13, 0xa4, 0xa2, 0x06, 0x97, 0x57, 0xe4, 0x34, - 0x92, 0xa1, 0xc0, 0x08, 0xb6, 0x5f, 0xac, 0x6e, 0x5e, 0x59, 0x95, 0x33, 0xfd, 0x92, 0xcb, 0x2b, - 0xf2, 0x24, 0x9a, 0x82, 0x1c, 0x95, 0xac, 0xd7, 0x6a, 0x3b, 0x72, 0x36, 0xe0, 0xac, 0x1f, 0xa8, - 0xdb, 0x7b, 0x5b, 0x72, 0x2e, 0xe0, 0xdc, 0x52, 0x6b, 0x87, 0xfb, 0x32, 0x04, 0x0c, 0xbb, 0xd5, - 0x7a, 0xbd, 0xb2, 0x55, 0x95, 0xf3, 0x81, 0xc5, 0xfa, 0x4b, 0x07, 0xd5, 0xba, 0x5c, 0xe8, 0x73, - 0xeb, 0xf2, 0x8a, 0x3c, 0x15, 0xdc, 0xa2, 0xba, 0x77, 0xb8, 0x2b, 0x17, 0xd1, 0x0c, 0x4c, 0xb1, - 0x5b, 0x08, 0x27, 0xa6, 0x07, 0x44, 0x57, 0x56, 0x65, 0x39, 0x74, 0x84, 0xb1, 0xcc, 0xf4, 0x09, - 0xae, 0xac, 0xca, 0x68, 0x71, 0x03, 0xd2, 0x34, 0xbb, 0x10, 0x82, 0xe2, 0x4e, 0x65, 0xbd, 0xba, - 0xa3, 0xd5, 0xf6, 0x0f, 0xb6, 0x6b, 0x7b, 0x95, 0x1d, 0x59, 0x0a, 0x65, 0x6a, 0xf5, 0xe3, 0x87, - 0xdb, 0x6a, 0x75, 0x53, 0x4e, 0x44, 0x65, 0xfb, 0xd5, 0xca, 0x41, 0x75, 0x53, 0x4e, 0x2e, 0x1a, - 0x30, 0x37, 0xaa, 0xce, 0x8c, 0xdc, 0x19, 0x91, 0x25, 0x4e, 0x9c, 0xb2, 0xc4, 0x94, 0x6b, 0x68, - 0x89, 0xbf, 0x22, 0xc1, 0xec, 0x88, 0x5a, 0x3b, 0xf2, 0x26, 0xcf, 0x43, 0x9a, 0xa5, 0x28, 0xeb, - 0x3e, 0x4f, 0x8e, 0x2c, 0xda, 0x34, 0x61, 0x87, 0x3a, 0x10, 0xc5, 0x45, 0x3b, 0x70, 0xf2, 0x94, - 0x0e, 0x4c, 0x28, 0x86, 0x9c, 0x7c, 0x4d, 0x02, 0xe5, 0x34, 0xee, 0x98, 0x42, 0x91, 0xe8, 0x2b, - 0x14, 0x37, 0x06, 0x1d, 0xb8, 0x78, 0xfa, 0x33, 0x0c, 0x79, 0xf1, 0x96, 0x04, 0xe7, 0x46, 0x0f, - 0x2a, 0x23, 0x7d, 0xf8, 0x18, 0x64, 0x3a, 0xd8, 0x3f, 0x72, 0x44, 0xb3, 0xfe, 0xc8, 0x88, 0x16, - 0x40, 0xd4, 0x83, 0xb1, 0xe2, 0xa8, 0x68, 0x0f, 0x49, 0x9e, 0x36, 0x6d, 0x30, 0x6f, 0x86, 0x3c, - 0xfd, 0x6c, 0x02, 0x1e, 0x1a, 0x49, 0x3e, 0xd2, 0xd1, 0x47, 0x01, 0x4c, 0xbb, 0xdb, 0xf3, 0x59, - 0x43, 0x66, 0xf5, 0x29, 0x47, 0x25, 0x74, 0xef, 0x93, 0xda, 0xd3, 0xf3, 0x03, 0x7d, 0x92, 0xea, - 0x81, 0x89, 0xa8, 0xc1, 0xb5, 0xd0, 0xd1, 0x14, 0x75, 0xb4, 0x74, 0xca, 0x93, 0x0e, 0xf5, 0xba, - 0x67, 0x41, 0x36, 0x2c, 0x13, 0xdb, 0xbe, 0xe6, 0xf9, 0x2e, 0xd6, 0x3b, 0xa6, 0xdd, 0xa6, 0x05, - 0x38, 0x5b, 0x4e, 0xb7, 0x74, 0xcb, 0xc3, 0xea, 0x34, 0x53, 0xd7, 0x85, 0x96, 0x20, 0x68, 0x97, - 0x71, 0x23, 0x88, 0x4c, 0x1f, 0x82, 0xa9, 0x03, 0xc4, 0xe2, 0xe7, 0x26, 0x21, 0x1f, 0x19, 0xeb, - 0xd0, 0x45, 0x28, 0xdc, 0xd6, 0xef, 0xea, 0x9a, 0x18, 0xd5, 0x59, 0x24, 0xf2, 0x44, 0xb6, 0xcf, - 0xc7, 0xf5, 0x67, 0x61, 0x8e, 0x9a, 0x38, 0x3d, 0x1f, 0xbb, 0x9a, 0x61, 0xe9, 0x9e, 0x47, 0x83, - 0x96, 0xa5, 0xa6, 0x88, 0xe8, 0x6a, 0x44, 0xb5, 0x21, 0x34, 0x68, 0x0d, 0x66, 0x29, 0xa2, 0xd3, - 0xb3, 0x7c, 0xb3, 0x6b, 0x61, 0x8d, 0xbc, 0x3c, 0x78, 0xb4, 0x10, 0x07, 0x9e, 0xcd, 0x10, 0x8b, - 0x5d, 0x6e, 0x40, 0x3c, 0xf2, 0xd0, 0x16, 0x3c, 0x4a, 0x61, 0x6d, 0x6c, 0x63, 0x57, 0xf7, 0xb1, - 0x86, 0x7f, 0xa1, 0xa7, 0x5b, 0x9e, 0xa6, 0xdb, 0x4d, 0xed, 0x48, 0xf7, 0x8e, 0x94, 0xb9, 0x28, - 0xc1, 0x79, 0x62, 0xbb, 0xc5, 0x4d, 0xab, 0xd4, 0xb2, 0x62, 0x37, 0x6f, 0xea, 0xde, 0x11, 0x2a, - 0xc3, 0x39, 0x4a, 0xe4, 0xf9, 0xae, 0x69, 0xb7, 0x35, 0xe3, 0x08, 0x1b, 0x77, 0xb4, 0x9e, 0xdf, - 0xba, 0xa6, 0x3c, 0x12, 0x65, 0xa0, 0x4e, 0xd6, 0xa9, 0xcd, 0x06, 0x31, 0x39, 0xf4, 0x5b, 0xd7, - 0x50, 0x1d, 0x0a, 0x64, 0x3d, 0x3a, 0xe6, 0xab, 0x58, 0x6b, 0x39, 0x2e, 0x6d, 0x2e, 0xc5, 0x11, - 0x9b, 0x3b, 0x12, 0xc4, 0xe5, 0x1a, 0x07, 0xec, 0x3a, 0x4d, 0x5c, 0x4e, 0xd7, 0xf7, 0xab, 0xd5, - 0x4d, 0x35, 0x2f, 0x58, 0x5e, 0x70, 0x5c, 0x92, 0x53, 0x6d, 0x27, 0x88, 0x71, 0x9e, 0xe5, 0x54, - 0xdb, 0x11, 0x11, 0x5e, 0x83, 0x59, 0xc3, 0x60, 0x8f, 0x6d, 0x1a, 0x1a, 0x9f, 0xf2, 0x3d, 0x45, - 0xee, 0x8b, 0x97, 0x61, 0x6c, 0x31, 0x03, 0x9e, 0xe6, 0x1e, 0xba, 0x0e, 0x0f, 0x85, 0xf1, 0x8a, - 0x02, 0x67, 0x86, 0x9e, 0x72, 0x10, 0xba, 0x06, 0xb3, 0xdd, 0xe3, 0x61, 0x20, 0xea, 0xbb, 0x63, - 0xf7, 0x78, 0x10, 0xf6, 0x38, 0x7d, 0x73, 0x73, 0xb1, 0xa1, 0xfb, 0xb8, 0xa9, 0x3c, 0x1c, 0xb5, - 0x8e, 0x28, 0xd0, 0x25, 0x90, 0x0d, 0x43, 0xc3, 0xb6, 0xde, 0xb0, 0xb0, 0xa6, 0xbb, 0xd8, 0xd6, - 0x3d, 0xe5, 0x42, 0xd4, 0xb8, 0x68, 0x18, 0x55, 0xaa, 0xad, 0x50, 0x25, 0x7a, 0x0a, 0x66, 0x9c, - 0xc6, 0x6d, 0x83, 0x25, 0x97, 0xd6, 0x75, 0x71, 0xcb, 0x7c, 0x45, 0x79, 0x8c, 0x86, 0x69, 0x9a, - 0x28, 0x68, 0x6a, 0xed, 0x53, 0x31, 0x7a, 0x12, 0x64, 0xc3, 0x3b, 0xd2, 0xdd, 0x2e, 0xed, 0xee, - 0x5e, 0x57, 0x37, 0xb0, 0xf2, 0x38, 0x33, 0x65, 0xf2, 0x3d, 0x21, 0x46, 0x2f, 0xc2, 0x5c, 0xcf, - 0x36, 0x6d, 0x1f, 0xbb, 0x5d, 0x17, 0x93, 0x21, 0x9d, 0xed, 0x34, 0xe5, 0x5f, 0x26, 0x4f, 0x19, - 0xb3, 0x0f, 0xa3, 0xd6, 0x6c, 0x75, 0xd5, 0xd9, 0xde, 0xb0, 0x70, 0xb1, 0x0c, 0x85, 0xe8, 0xa2, - 0xa3, 0x1c, 0xb0, 0x65, 0x97, 0x25, 0xd2, 0x43, 0x37, 0x6a, 0x9b, 0xa4, 0xfb, 0x7d, 0xaa, 0x2a, - 0x27, 0x48, 0x17, 0xde, 0xd9, 0x3e, 0xa8, 0x6a, 0xea, 0xe1, 0xde, 0xc1, 0xf6, 0x6e, 0x55, 0x4e, - 0x3e, 0x95, 0xcb, 0xfe, 0x60, 0x52, 0xbe, 0x77, 0xef, 0xde, 0xbd, 0xc4, 0xe2, 0xb7, 0x13, 0x50, - 0xec, 0x9f, 0x7c, 0xd1, 0xcf, 0xc3, 0xc3, 0xe2, 0x35, 0xd5, 0xc3, 0xbe, 0xf6, 0xb2, 0xe9, 0xd2, - 0x3c, 0xec, 0xe8, 0x6c, 0x76, 0x0c, 0x42, 0x38, 0xc7, 0xad, 0xea, 0xd8, 0xff, 0xa4, 0xe9, 0x92, - 0x2c, 0xeb, 0xe8, 0x3e, 0xda, 0x81, 0x0b, 0xb6, 0xa3, 0x79, 0xbe, 0x6e, 0x37, 0x75, 0xb7, 0xa9, - 0x85, 0x07, 0x04, 0x9a, 0x6e, 0x18, 0xd8, 0xf3, 0x1c, 0xd6, 0x02, 0x02, 0x96, 0x0f, 0xd9, 0x4e, - 0x9d, 0x1b, 0x87, 0xb5, 0xb1, 0xc2, 0x4d, 0x07, 0x96, 0x3b, 0x79, 0xda, 0x72, 0x3f, 0x02, 0xb9, - 0x8e, 0xde, 0xd5, 0xb0, 0xed, 0xbb, 0xc7, 0x74, 0x5e, 0xcb, 0xaa, 0xd9, 0x8e, 0xde, 0xad, 0x92, - 0xeb, 0x9f, 0xdc, 0x1a, 0x44, 0xe3, 0xf8, 0xbd, 0x24, 0x14, 0xa2, 0x33, 0x1b, 0x19, 0x81, 0x0d, - 0x5a, 0x9f, 0x25, 0xba, 0x7d, 0x3f, 0xfc, 0xc0, 0x09, 0x6f, 0x79, 0x83, 0x14, 0xee, 0x72, 0x86, - 0x4d, 0x52, 0x2a, 0x43, 0x92, 0xa6, 0x49, 0x36, 0x2c, 0x66, 0xf3, 0x79, 0x56, 0xe5, 0x57, 0x68, - 0x0b, 0x32, 0xb7, 0x3d, 0xca, 0x9d, 0xa1, 0xdc, 0x8f, 0x3d, 0x98, 0xfb, 0x56, 0x9d, 0x92, 0xe7, - 0x6e, 0xd5, 0xb5, 0xbd, 0x9a, 0xba, 0x5b, 0xd9, 0x51, 0x39, 0x1c, 0x9d, 0x87, 0x94, 0xa5, 0xbf, - 0x7a, 0xdc, 0x5f, 0xe2, 0xa9, 0x68, 0xdc, 0xc0, 0x9f, 0x87, 0xd4, 0xcb, 0x58, 0xbf, 0xd3, 0x5f, - 0x58, 0xa9, 0xe8, 0x27, 0x98, 0xfa, 0x97, 0x20, 0x4d, 0xe3, 0x85, 0x00, 0x78, 0xc4, 0xe4, 0x09, - 0x94, 0x85, 0xd4, 0x46, 0x4d, 0x25, 0xe9, 0x2f, 0x43, 0x81, 0x49, 0xb5, 0xfd, 0xed, 0xea, 0x46, - 0x55, 0x4e, 0x2c, 0xae, 0x41, 0x86, 0x05, 0x81, 0x6c, 0x8d, 0x20, 0x0c, 0xf2, 0x04, 0xbf, 0xe4, - 0x1c, 0x92, 0xd0, 0x1e, 0xee, 0xae, 0x57, 0x55, 0x39, 0x11, 0x5d, 0x5e, 0x0f, 0x0a, 0xd1, 0x71, - 0xed, 0xa7, 0x93, 0x53, 0x7f, 0x2b, 0x41, 0x3e, 0x32, 0x7e, 0x91, 0xc6, 0xaf, 0x5b, 0x96, 0xf3, - 0xb2, 0xa6, 0x5b, 0xa6, 0xee, 0xf1, 0xa4, 0x00, 0x2a, 0xaa, 0x10, 0xc9, 0xb8, 0x8b, 0xf6, 0x53, - 0x71, 0xfe, 0x4d, 0x09, 0xe4, 0xc1, 0xd1, 0x6d, 0xc0, 0x41, 0xe9, 0x67, 0xea, 0xe0, 0x1b, 0x12, - 0x14, 0xfb, 0xe7, 0xb5, 0x01, 0xf7, 0x2e, 0xfe, 0x4c, 0xdd, 0xfb, 0xa2, 0x04, 0x53, 0x7d, 0x53, - 0xda, 0xff, 0x2b, 0xef, 0x5e, 0x4f, 0xc2, 0xec, 0x08, 0x1c, 0xaa, 0xf0, 0x71, 0x96, 0x4d, 0xd8, - 0xcf, 0x8c, 0x73, 0xaf, 0x65, 0xd2, 0x2d, 0xf7, 0x75, 0xd7, 0xe7, 0xd3, 0xef, 0x93, 0x20, 0x9b, - 0x4d, 0x6c, 0xfb, 0x66, 0xcb, 0xc4, 0x2e, 0x7f, 0x05, 0x67, 0x33, 0xee, 0x74, 0x28, 0x67, 0x6f, - 0xe1, 0x3f, 0x07, 0xa8, 0xeb, 0x78, 0xa6, 0x6f, 0xde, 0xc5, 0x9a, 0x69, 0x8b, 0xf7, 0x75, 0x32, - 0xf3, 0xa6, 0x54, 0x59, 0x68, 0xb6, 0x6d, 0x3f, 0xb0, 0xb6, 0x71, 0x5b, 0x1f, 0xb0, 0x26, 0xb5, - 0x2f, 0xa9, 0xca, 0x42, 0x13, 0x58, 0x5f, 0x84, 0x42, 0xd3, 0xe9, 0x91, 0xf1, 0x81, 0xd9, 0x91, - 0x52, 0x2b, 0xa9, 0x79, 0x26, 0x0b, 0x4c, 0xf8, 0x7c, 0x17, 0x1e, 0x14, 0x14, 0xd4, 0x3c, 0x93, - 0x31, 0x93, 0x27, 0x60, 0x5a, 0x6f, 0xb7, 0x5d, 0x42, 0x2e, 0x88, 0xd8, 0xd0, 0x5a, 0x0c, 0xc4, - 0xd4, 0x70, 0xfe, 0x16, 0x64, 0x45, 0x1c, 0x48, 0x37, 0x23, 0x91, 0xd0, 0xba, 0xec, 0xb8, 0x26, - 0xb1, 0x94, 0x53, 0xb3, 0xb6, 0x50, 0x5e, 0x84, 0x82, 0xe9, 0x69, 0xe1, 0xb9, 0x61, 0x62, 0x21, - 0xb1, 0x94, 0x55, 0xf3, 0xa6, 0x17, 0x1c, 0x14, 0x2d, 0xbe, 0x95, 0x80, 0x62, 0xff, 0xb9, 0x27, - 0xda, 0x84, 0xac, 0xe5, 0x18, 0x3a, 0x4d, 0x04, 0x76, 0xe8, 0xbe, 0x14, 0x73, 0x54, 0xba, 0xbc, - 0xc3, 0xed, 0xd5, 0x00, 0x39, 0xff, 0x8f, 0x12, 0x64, 0x85, 0x18, 0x9d, 0x83, 0x54, 0x57, 0xf7, - 0x8f, 0x28, 0x5d, 0x7a, 0x3d, 0x21, 0x4b, 0x2a, 0xbd, 0x26, 0x72, 0xaf, 0xab, 0xdb, 0x34, 0x05, - 0xb8, 0x9c, 0x5c, 0x93, 0x75, 0xb5, 0xb0, 0xde, 0xa4, 0xe3, 0xb0, 0xd3, 0xe9, 0x60, 0xdb, 0xf7, - 0xc4, 0xba, 0x72, 0xf9, 0x06, 0x17, 0xa3, 0xa7, 0x61, 0xc6, 0x77, 0x75, 0xd3, 0xea, 0xb3, 0x4d, - 0x51, 0x5b, 0x59, 0x28, 0x02, 0xe3, 0x32, 0x9c, 0x17, 0xbc, 0x4d, 0xec, 0xeb, 0xc6, 0x11, 0x6e, - 0x86, 0xa0, 0x0c, 0x3d, 0x54, 0x7b, 0x98, 0x1b, 0x6c, 0x72, 0xbd, 0xc0, 0x2e, 0x7e, 0x57, 0x82, - 0x19, 0x31, 0xc0, 0x37, 0x83, 0x60, 0xed, 0x02, 0xe8, 0xb6, 0xed, 0xf8, 0xd1, 0x70, 0x0d, 0xa7, - 0xf2, 0x10, 0x6e, 0xb9, 0x12, 0x80, 0xd4, 0x08, 0xc1, 0x7c, 0x07, 0x20, 0xd4, 0x9c, 0x1a, 0xb6, - 0x0b, 0x90, 0xe7, 0x87, 0xda, 0xf4, 0x97, 0x11, 0xf6, 0xd6, 0x07, 0x4c, 0x44, 0x26, 0x7d, 0x34, - 0x07, 0xe9, 0x06, 0x6e, 0x9b, 0x36, 0x3f, 0x6a, 0x63, 0x17, 0xe2, 0x00, 0x2f, 0x15, 0x1c, 0xe0, - 0xad, 0x7f, 0x1a, 0x66, 0x0d, 0xa7, 0x33, 0xe8, 0xee, 0xba, 0x3c, 0xf0, 0xe6, 0xe9, 0xdd, 0x94, - 0x3e, 0x05, 0xe1, 0x74, 0xf6, 0x65, 0x49, 0xfa, 0x4a, 0x22, 0xb9, 0xb5, 0xbf, 0xfe, 0xb5, 0xc4, - 0xfc, 0x16, 0x83, 0xee, 0x8b, 0x27, 0x55, 0x71, 0xcb, 0xc2, 0x06, 0xf1, 0x1e, 0x7e, 0xf8, 0x11, - 0x78, 0xa6, 0x6d, 0xfa, 0x47, 0xbd, 0xc6, 0xb2, 0xe1, 0x74, 0x2e, 0xb5, 0x9d, 0xb6, 0x13, 0xfe, - 0x18, 0x44, 0xae, 0xe8, 0x05, 0xfd, 0x8f, 0xff, 0x20, 0x94, 0x0b, 0xa4, 0xf3, 0xb1, 0xbf, 0x1e, - 0x95, 0xf7, 0x60, 0x96, 0x1b, 0x6b, 0xf4, 0x44, 0x9a, 0xcd, 0xe1, 0xe8, 0x81, 0xa7, 0x12, 0xca, - 0x37, 0xde, 0xa1, 0x9d, 0x4e, 0x9d, 0xe1, 0x50, 0xa2, 0x63, 0x93, 0x7a, 0x59, 0x85, 0x87, 0xfa, - 0xf8, 0xd8, 0xd6, 0xc4, 0x6e, 0x0c, 0xe3, 0xb7, 0x39, 0xe3, 0x6c, 0x84, 0xb1, 0xce, 0xa1, 0xe5, - 0x0d, 0x98, 0x3a, 0x0b, 0xd7, 0xdf, 0x73, 0xae, 0x02, 0x8e, 0x92, 0x6c, 0xc1, 0x34, 0x25, 0x31, - 0x7a, 0x9e, 0xef, 0x74, 0x68, 0xdd, 0x7b, 0x30, 0xcd, 0x3f, 0xbc, 0xc3, 0xf6, 0x4a, 0x91, 0xc0, - 0x36, 0x02, 0x54, 0xb9, 0x0c, 0xf4, 0x10, 0xbe, 0x89, 0x0d, 0x2b, 0x86, 0xe1, 0x6d, 0xee, 0x48, - 0x60, 0x5f, 0xfe, 0x04, 0xcc, 0x91, 0xff, 0x69, 0x59, 0x8a, 0x7a, 0x12, 0x7f, 0x06, 0xa3, 0x7c, - 0xf7, 0x35, 0xb6, 0x1d, 0x67, 0x03, 0x82, 0x88, 0x4f, 0x91, 0x55, 0x6c, 0x63, 0xdf, 0xc7, 0xae, - 0xa7, 0xe9, 0xd6, 0x28, 0xf7, 0x22, 0x6f, 0xb0, 0xca, 0x17, 0xde, 0xed, 0x5f, 0xc5, 0x2d, 0x86, - 0xac, 0x58, 0x56, 0xf9, 0x10, 0x1e, 0x1e, 0x91, 0x15, 0x63, 0x70, 0xbe, 0xce, 0x39, 0xe7, 0x86, - 0x32, 0x83, 0xd0, 0xee, 0x83, 0x90, 0x07, 0x6b, 0x39, 0x06, 0xe7, 0x17, 0x39, 0x27, 0xe2, 0x58, - 0xb1, 0xa4, 0x84, 0xf1, 0x16, 0xcc, 0xdc, 0xc5, 0x6e, 0xc3, 0xf1, 0xf8, 0xc1, 0xc1, 0x18, 0x74, - 0x6f, 0x70, 0xba, 0x69, 0x0e, 0xa4, 0xc7, 0x08, 0x84, 0xeb, 0x3a, 0x64, 0x5b, 0xba, 0x81, 0xc7, - 0xa0, 0xf8, 0x12, 0xa7, 0x98, 0x24, 0xf6, 0x04, 0x5a, 0x81, 0x42, 0xdb, 0xe1, 0x9d, 0x29, 0x1e, - 0xfe, 0x26, 0x87, 0xe7, 0x05, 0x86, 0x53, 0x74, 0x9d, 0x6e, 0xcf, 0x22, 0x6d, 0x2b, 0x9e, 0xe2, - 0xf7, 0x04, 0x85, 0xc0, 0x70, 0x8a, 0x33, 0x84, 0xf5, 0xcb, 0x82, 0xc2, 0x8b, 0xc4, 0xf3, 0x79, - 0xc8, 0x3b, 0xb6, 0x75, 0xec, 0xd8, 0xe3, 0x38, 0xf1, 0xfb, 0x9c, 0x01, 0x38, 0x84, 0x10, 0xdc, - 0x80, 0xdc, 0xb8, 0x0b, 0xf1, 0x07, 0xef, 0x8a, 0xed, 0x21, 0x56, 0x60, 0x0b, 0xa6, 0x45, 0x81, - 0x32, 0x1d, 0x7b, 0x0c, 0x8a, 0x3f, 0xe4, 0x14, 0xc5, 0x08, 0x8c, 0x3f, 0x86, 0x8f, 0x3d, 0xbf, - 0x8d, 0xc7, 0x21, 0x79, 0x4b, 0x3c, 0x06, 0x87, 0xf0, 0x50, 0x36, 0xb0, 0x6d, 0x1c, 0x8d, 0xc7, - 0xf0, 0x55, 0x11, 0x4a, 0x81, 0x21, 0x14, 0x1b, 0x30, 0xd5, 0xd1, 0x5d, 0xef, 0x48, 0xb7, 0xc6, - 0x5a, 0x8e, 0x3f, 0xe2, 0x1c, 0x85, 0x00, 0xc4, 0x23, 0xd2, 0xb3, 0xcf, 0x42, 0xf3, 0x35, 0x11, - 0x91, 0x08, 0x8c, 0x6f, 0x3d, 0xcf, 0xa7, 0x67, 0x33, 0x67, 0x61, 0xfb, 0x63, 0xb1, 0xf5, 0x18, - 0x76, 0x37, 0xca, 0x78, 0x03, 0x72, 0x9e, 0xf9, 0xea, 0x58, 0x34, 0x7f, 0x22, 0x56, 0x9a, 0x02, - 0x08, 0xf8, 0x25, 0x38, 0x3f, 0xb2, 0x4d, 0x8c, 0x41, 0xf6, 0xa7, 0x9c, 0xec, 0xdc, 0x88, 0x56, - 0xc1, 0x4b, 0xc2, 0x59, 0x29, 0xff, 0x4c, 0x94, 0x04, 0x3c, 0xc0, 0xb5, 0x4f, 0x26, 0x7b, 0x4f, - 0x6f, 0x9d, 0x2d, 0x6a, 0x7f, 0x2e, 0xa2, 0xc6, 0xb0, 0x7d, 0x51, 0x3b, 0x80, 0x73, 0x9c, 0xf1, - 0x6c, 0xeb, 0xfa, 0x75, 0x51, 0x58, 0x19, 0xfa, 0xb0, 0x7f, 0x75, 0x3f, 0x0d, 0xf3, 0x41, 0x38, - 0xc5, 0x50, 0xea, 0x69, 0x1d, 0xbd, 0x3b, 0x06, 0xf3, 0x37, 0x38, 0xb3, 0xa8, 0xf8, 0xc1, 0x54, - 0xeb, 0xed, 0xea, 0x5d, 0x42, 0xfe, 0x22, 0x28, 0x82, 0xbc, 0x67, 0xbb, 0xd8, 0x70, 0xda, 0xb6, - 0xf9, 0x2a, 0x6e, 0x8e, 0x41, 0xfd, 0x17, 0x03, 0x4b, 0x75, 0x18, 0x81, 0x13, 0xe6, 0x6d, 0x90, - 0x83, 0x59, 0x45, 0x33, 0x3b, 0x5d, 0xc7, 0xf5, 0x63, 0x18, 0xff, 0x52, 0xac, 0x54, 0x80, 0xdb, - 0xa6, 0xb0, 0x72, 0x15, 0x8a, 0xf4, 0x72, 0xdc, 0x94, 0xfc, 0x2b, 0x4e, 0x34, 0x15, 0xa2, 0x78, - 0xe1, 0x30, 0x9c, 0x4e, 0x57, 0x77, 0xc7, 0xa9, 0x7f, 0x7f, 0x2d, 0x0a, 0x07, 0x87, 0xf0, 0xc2, - 0xe1, 0x1f, 0x77, 0x31, 0xe9, 0xf6, 0x63, 0x30, 0x7c, 0x53, 0x14, 0x0e, 0x81, 0xe1, 0x14, 0x62, - 0x60, 0x18, 0x83, 0xe2, 0x6f, 0x04, 0x85, 0xc0, 0x10, 0x8a, 0x8f, 0x87, 0x8d, 0xd6, 0xc5, 0x6d, - 0xd3, 0xf3, 0x5d, 0x36, 0x0a, 0x3f, 0x98, 0xea, 0x5b, 0xef, 0xf6, 0x0f, 0x61, 0x6a, 0x04, 0x5a, - 0xbe, 0x05, 0xd3, 0x03, 0x23, 0x06, 0x8a, 0xfb, 0x45, 0x5f, 0xf9, 0xcc, 0xfb, 0xbc, 0x18, 0xf5, - 0x4f, 0x18, 0xe5, 0x1d, 0xb2, 0xee, 0xfd, 0x73, 0x40, 0x3c, 0xd9, 0x6b, 0xef, 0x07, 0x4b, 0xdf, - 0x37, 0x06, 0x94, 0x5f, 0x80, 0xa9, 0xbe, 0x19, 0x20, 0x9e, 0xea, 0x17, 0x39, 0x55, 0x21, 0x3a, - 0x02, 0x94, 0xd7, 0x20, 0x45, 0xfa, 0x79, 0x3c, 0xfc, 0x97, 0x38, 0x9c, 0x9a, 0x97, 0x3f, 0x0a, - 0x59, 0xd1, 0xc7, 0xe3, 0xa1, 0xbf, 0xcc, 0xa1, 0x01, 0x84, 0xc0, 0x45, 0x0f, 0x8f, 0x87, 0xff, - 0x8a, 0x80, 0x0b, 0x08, 0x81, 0x8f, 0x1f, 0xc2, 0xbf, 0xfb, 0x5c, 0x8a, 0xd7, 0x61, 0x11, 0xbb, - 0x1b, 0x30, 0xc9, 0x9b, 0x77, 0x3c, 0xfa, 0xb3, 0xfc, 0xe6, 0x02, 0x51, 0xbe, 0x0a, 0xe9, 0x31, - 0x03, 0xfe, 0xab, 0x1c, 0xca, 0xec, 0xcb, 0x1b, 0x90, 0x8f, 0x34, 0xec, 0x78, 0xf8, 0xaf, 0x71, - 0x78, 0x14, 0x45, 0x5c, 0xe7, 0x0d, 0x3b, 0x9e, 0xe0, 0xd7, 0x85, 0xeb, 0x1c, 0x41, 0xc2, 0x26, - 0x7a, 0x75, 0x3c, 0xfa, 0x37, 0x44, 0xd4, 0x05, 0xa4, 0xfc, 0x3c, 0xe4, 0x82, 0xfa, 0x1b, 0x8f, - 0xff, 0x4d, 0x8e, 0x0f, 0x31, 0x24, 0x02, 0x91, 0xfa, 0x1f, 0x4f, 0xf1, 0x5b, 0x22, 0x02, 0x11, - 0x14, 0xd9, 0x46, 0x83, 0x3d, 0x3d, 0x9e, 0xe9, 0xb7, 0xc5, 0x36, 0x1a, 0x68, 0xe9, 0x64, 0x35, - 0x69, 0x19, 0x8c, 0xa7, 0xf8, 0x1d, 0xb1, 0x9a, 0xd4, 0x9e, 0xb8, 0x31, 0xd8, 0x24, 0xe3, 0x39, - 0x7e, 0x57, 0xb8, 0x31, 0xd0, 0x23, 0xcb, 0xfb, 0x80, 0x86, 0x1b, 0x64, 0x3c, 0xdf, 0xe7, 0x39, - 0xdf, 0xcc, 0x50, 0x7f, 0x2c, 0x7f, 0x12, 0xce, 0x8d, 0x6e, 0x8e, 0xf1, 0xac, 0x5f, 0x78, 0x7f, - 0xe0, 0x75, 0x26, 0xda, 0x1b, 0xcb, 0x07, 0x61, 0x95, 0x8d, 0x36, 0xc6, 0x78, 0xda, 0xd7, 0xdf, - 0xef, 0x2f, 0xb4, 0xd1, 0xbe, 0x58, 0xae, 0x00, 0x84, 0x3d, 0x29, 0x9e, 0xeb, 0x0d, 0xce, 0x15, - 0x01, 0x91, 0xad, 0xc1, 0x5b, 0x52, 0x3c, 0xfe, 0x4b, 0x62, 0x6b, 0x70, 0x04, 0xd9, 0x1a, 0xa2, - 0x1b, 0xc5, 0xa3, 0xdf, 0x14, 0x5b, 0x43, 0x40, 0xca, 0x37, 0x20, 0x6b, 0xf7, 0x2c, 0x8b, 0xe4, - 0x16, 0x7a, 0xf0, 0x47, 0x36, 0xca, 0xbf, 0x7e, 0xc0, 0xc1, 0x02, 0x50, 0x5e, 0x83, 0x34, 0xee, - 0x34, 0x70, 0x33, 0x0e, 0xf9, 0x6f, 0x1f, 0x88, 0x7a, 0x42, 0xac, 0xcb, 0xcf, 0x03, 0xb0, 0x97, - 0x69, 0xfa, 0x1b, 0x4b, 0x0c, 0xf6, 0xdf, 0x3f, 0xe0, 0xbf, 0xdf, 0x87, 0x90, 0x90, 0x80, 0x7d, - 0x0d, 0xf0, 0x60, 0x82, 0x77, 0xfb, 0x09, 0xe8, 0x0b, 0xf8, 0x75, 0x98, 0xbc, 0xed, 0x39, 0xb6, - 0xaf, 0xb7, 0xe3, 0xd0, 0xff, 0xc1, 0xd1, 0xc2, 0x9e, 0x04, 0xac, 0xe3, 0xb8, 0xd8, 0xd7, 0xdb, - 0x5e, 0x1c, 0xf6, 0x3f, 0x39, 0x36, 0x00, 0x10, 0xb0, 0xa1, 0x7b, 0xfe, 0x38, 0xcf, 0xfd, 0x5f, - 0x02, 0x2c, 0x00, 0xc4, 0x69, 0xf2, 0xff, 0x1d, 0x7c, 0x1c, 0x87, 0x7d, 0x4f, 0x38, 0xcd, 0xed, - 0xcb, 0x1f, 0x85, 0x1c, 0xf9, 0x97, 0x7d, 0xd3, 0x12, 0x03, 0xfe, 0x6f, 0x0e, 0x0e, 0x11, 0xe4, - 0xce, 0x9e, 0xdf, 0xf4, 0xcd, 0xf8, 0x60, 0xff, 0x0f, 0x5f, 0x69, 0x61, 0x5f, 0xae, 0x40, 0xde, - 0xf3, 0x9b, 0xcd, 0x1e, 0x9f, 0x68, 0x62, 0xe0, 0x3f, 0xfc, 0x20, 0x78, 0xc9, 0x0d, 0x30, 0xeb, - 0x17, 0x47, 0x9f, 0xd7, 0xc1, 0x96, 0xb3, 0xe5, 0xb0, 0x93, 0x3a, 0x78, 0x33, 0x0d, 0x0b, 0x86, - 0xd3, 0x69, 0x38, 0xde, 0x25, 0x56, 0x50, 0x82, 0x72, 0x72, 0xc9, 0xb1, 0x39, 0x06, 0x25, 0x1d, - 0x1b, 0xcf, 0x9f, 0xed, 0x70, 0x6e, 0xf1, 0x3c, 0xa4, 0xeb, 0xbd, 0x46, 0xe3, 0x18, 0xc9, 0x90, - 0xf4, 0x7a, 0x0d, 0xfe, 0xed, 0x05, 0xf9, 0x77, 0xf1, 0x7b, 0x49, 0xc8, 0xd7, 0xf5, 0x4e, 0xd7, - 0xc2, 0x35, 0x1b, 0xd7, 0x5a, 0x48, 0x81, 0x0c, 0x7d, 0x96, 0xe7, 0xa8, 0x91, 0x74, 0x73, 0x42, - 0xe5, 0xd7, 0x81, 0x66, 0x85, 0x1e, 0x5a, 0x26, 0x02, 0xcd, 0x4a, 0xa0, 0xb9, 0xcc, 0xce, 0x2c, - 0x03, 0xcd, 0xe5, 0x40, 0xb3, 0x4a, 0x4f, 0x2e, 0x93, 0x81, 0x66, 0x35, 0xd0, 0xac, 0xd1, 0x93, - 0xf9, 0xa9, 0x40, 0xb3, 0x16, 0x68, 0xae, 0xd0, 0xb3, 0xf8, 0x54, 0xa0, 0xb9, 0x12, 0x68, 0xae, - 0xd2, 0x23, 0xf8, 0x99, 0x40, 0x73, 0x35, 0xd0, 0x5c, 0xa3, 0xc7, 0xee, 0x28, 0xd0, 0x5c, 0x0b, - 0x34, 0xd7, 0xe9, 0xf7, 0x15, 0x93, 0x81, 0xe6, 0x3a, 0x9a, 0x87, 0x49, 0xf6, 0x64, 0xcf, 0xd2, - 0x9f, 0x35, 0xa7, 0x6f, 0x4e, 0xa8, 0x42, 0x10, 0xea, 0x9e, 0xa3, 0xdf, 0x50, 0x64, 0x42, 0xdd, - 0x73, 0xa1, 0x6e, 0x85, 0x7e, 0x4c, 0x2c, 0x87, 0xba, 0x95, 0x50, 0x77, 0x59, 0x99, 0x22, 0x29, - 0x10, 0xea, 0x2e, 0x87, 0xba, 0x55, 0xa5, 0x48, 0xe2, 0x1f, 0xea, 0x56, 0x43, 0xdd, 0x9a, 0x32, - 0xbd, 0x20, 0x2d, 0x15, 0x42, 0xdd, 0x1a, 0x7a, 0x06, 0xf2, 0x5e, 0xaf, 0xa1, 0xf1, 0x5f, 0xe1, - 0xe9, 0xb7, 0x1a, 0xf9, 0x15, 0x58, 0x26, 0x19, 0x41, 0x17, 0xf5, 0xe6, 0x84, 0x0a, 0x5e, 0xaf, - 0xc1, 0x6b, 0xe4, 0x7a, 0x01, 0xe8, 0x91, 0x82, 0x46, 0x3f, 0x52, 0x5c, 0xdf, 0x7c, 0xfb, 0x7e, - 0x69, 0xe2, 0x3b, 0xf7, 0x4b, 0x13, 0xff, 0x74, 0xbf, 0x34, 0xf1, 0xfd, 0xfb, 0x25, 0xe9, 0xbd, - 0xfb, 0x25, 0xe9, 0x47, 0xf7, 0x4b, 0xd2, 0xbd, 0x93, 0x92, 0xf4, 0xd5, 0x93, 0x92, 0xf4, 0xf5, - 0x93, 0x92, 0xf4, 0xad, 0x93, 0x92, 0xf4, 0xf6, 0x49, 0x69, 0xe2, 0x3b, 0x27, 0xa5, 0x89, 0xef, - 0x9f, 0x94, 0xa4, 0x1f, 0x9c, 0x94, 0x26, 0xde, 0x3b, 0x29, 0x49, 0x3f, 0x3a, 0x29, 0x49, 0xf7, - 0xfe, 0xb9, 0x34, 0xd1, 0xc8, 0xd0, 0x34, 0xba, 0xfc, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x76, - 0x6e, 0x65, 0x5c, 0x1b, 0x30, 0x00, 0x00, + // 3862 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x84, 0x20, 0x79, 0x8d, 0x95, 0x63, 0xae, 0x56, 0xb1, + 0x63, 0xd9, 0xae, 0x25, 0x5b, 0xbb, 0xda, 0x0b, 0xb7, 0x89, 0x87, 0xa2, 0xb8, 0x5a, 0x6e, 0x25, + 0x91, 0x01, 0xa5, 0x78, 0x9d, 0x3e, 0x60, 0x40, 0xf0, 0x27, 0x85, 0x5d, 0x10, 0x60, 0x00, 0x70, + 0xd7, 0xf2, 0xd3, 0x76, 0xdc, 0xcb, 0x64, 0x3a, 0xbd, 0x77, 0xa6, 0x89, 0xeb, 0xb8, 0x6d, 0x66, + 0x5a, 0xa7, 0x49, 0x2f, 0x49, 0x2f, 0x69, 0xa6, 0x4f, 0x7d, 0x49, 0xeb, 0xa7, 0x4e, 0xf2, 0xd6, + 0x87, 0x3c, 0x78, 0x15, 0xcf, 0x34, 0x6d, 0xdd, 0xd6, 0x6d, 0x3c, 0xd3, 0xcc, 0xf8, 0xa5, 0xf3, + 0xdf, 0x00, 0xf0, 0xa2, 0x05, 0x95, 0x19, 0x27, 0x4f, 0x12, 0xce, 0x39, 0xdf, 0x87, 0x83, 0xf3, + 0x9f, 0xff, 0x9c, 0x83, 0x9f, 0x80, 0xef, 0x6f, 0xc0, 0x52, 0xc7, 0xb6, 0x3b, 0x26, 0x5a, 0xeb, + 0x39, 0xb6, 0x67, 0x37, 0xfb, 0xed, 0xb5, 0x16, 0x72, 0x75, 0xc7, 0xe8, 0x79, 0xb6, 0xb3, 0x4a, + 0x64, 0x52, 0x9e, 0x5a, 0xac, 0x72, 0x8b, 0xe5, 0x5d, 0x98, 0xbb, 0x6e, 0x98, 0x68, 0xcb, 0x37, + 0x6c, 0x20, 0x4f, 0xba, 0x02, 0x89, 0xb6, 0x61, 0x22, 0x59, 0x58, 0x8a, 0xaf, 0x64, 0xd6, 0x9f, + 0x58, 0x1d, 0x02, 0xad, 0x0e, 0x22, 0xea, 0x58, 0xac, 0x10, 0xc4, 0xf2, 0xbb, 0x09, 0x98, 0x1f, + 0xa3, 0x95, 0x24, 0x48, 0x58, 0x5a, 0x17, 0x33, 0x0a, 0x2b, 0x69, 0x85, 0xfc, 0x2f, 0xc9, 0x30, + 0xd3, 0xd3, 0xf4, 0x3b, 0x5a, 0x07, 0xc9, 0x31, 0x22, 0xe6, 0x97, 0x52, 0x01, 0xa0, 0x85, 0x7a, + 0xc8, 0x6a, 0x21, 0x4b, 0x3f, 0x92, 0xe3, 0x4b, 0xf1, 0x95, 0xb4, 0x12, 0x92, 0x48, 0xcf, 0xc2, + 0x5c, 0xaf, 0xdf, 0x34, 0x0d, 0x5d, 0x0d, 0x99, 0xc1, 0x52, 0x7c, 0x25, 0xa9, 0x88, 0x54, 0xb1, + 0x15, 0x18, 0x3f, 0x05, 0xf9, 0x7b, 0x48, 0xbb, 0x13, 0x36, 0xcd, 0x10, 0xd3, 0x1c, 0x16, 0x87, + 0x0c, 0xcb, 0x90, 0xed, 0x22, 0xd7, 0xd5, 0x3a, 0x48, 0xf5, 0x8e, 0x7a, 0x48, 0x4e, 0x90, 0xa7, + 0x5f, 0x1a, 0x79, 0xfa, 0xe1, 0x27, 0xcf, 0x30, 0xd4, 0xfe, 0x51, 0x0f, 0x49, 0x25, 0x48, 0x23, + 0xab, 0xdf, 0xa5, 0x0c, 0xc9, 0x13, 0xe2, 0x57, 0xb1, 0xfa, 0xdd, 0x61, 0x96, 0x14, 0x86, 0x31, + 0x8a, 0x19, 0x17, 0x39, 0x77, 0x0d, 0x1d, 0xc9, 0xd3, 0x84, 0xe0, 0xa9, 0x11, 0x82, 0x06, 0xd5, + 0x0f, 0x73, 0x70, 0x9c, 0x54, 0x86, 0x34, 0x7a, 0xc5, 0x43, 0x96, 0x6b, 0xd8, 0x96, 0x3c, 0x43, + 0x48, 0x9e, 0x1c, 0xb3, 0x8a, 0xc8, 0x6c, 0x0d, 0x53, 0x04, 0x38, 0xe9, 0x12, 0xcc, 0xd8, 0x3d, + 0xcf, 0xb0, 0x2d, 0x57, 0x4e, 0x2d, 0x09, 0x2b, 0x99, 0xf5, 0x8f, 0x8d, 0x4d, 0x84, 0x1a, 0xb5, + 0x51, 0xb8, 0xb1, 0x54, 0x05, 0xd1, 0xb5, 0xfb, 0x8e, 0x8e, 0x54, 0xdd, 0x6e, 0x21, 0xd5, 0xb0, + 0xda, 0xb6, 0x9c, 0x26, 0x04, 0xe7, 0x46, 0x1f, 0x84, 0x18, 0x96, 0xed, 0x16, 0xaa, 0x5a, 0x6d, + 0x5b, 0xc9, 0xb9, 0x03, 0xd7, 0xd2, 0x19, 0x98, 0x76, 0x8f, 0x2c, 0x4f, 0x7b, 0x45, 0xce, 0x92, + 0x0c, 0x61, 0x57, 0xcb, 0xff, 0x97, 0x84, 0xfc, 0x24, 0x29, 0x76, 0x0d, 0x92, 0x6d, 0xfc, 0x94, + 0x72, 0xec, 0x34, 0x31, 0xa0, 0x98, 0xc1, 0x20, 0x4e, 0xff, 0x98, 0x41, 0x2c, 0x41, 0xc6, 0x42, + 0xae, 0x87, 0x5a, 0x34, 0x23, 0xe2, 0x13, 0xe6, 0x14, 0x50, 0xd0, 0x68, 0x4a, 0x25, 0x7e, 0xac, + 0x94, 0xba, 0x05, 0x79, 0xdf, 0x25, 0xd5, 0xd1, 0xac, 0x0e, 0xcf, 0xcd, 0xb5, 0x28, 0x4f, 0x56, + 0x2b, 0x1c, 0xa7, 0x60, 0x98, 0x92, 0x43, 0x03, 0xd7, 0xd2, 0x16, 0x80, 0x6d, 0x21, 0xbb, 0xad, + 0xb6, 0x90, 0x6e, 0xca, 0xa9, 0x13, 0xa2, 0x54, 0xc3, 0x26, 0x23, 0x51, 0xb2, 0xa9, 0x54, 0x37, + 0xa5, 0xab, 0x41, 0xaa, 0xcd, 0x9c, 0x90, 0x29, 0xbb, 0x74, 0x93, 0x8d, 0x64, 0xdb, 0x01, 0xe4, + 0x1c, 0x84, 0xf3, 0x1e, 0xb5, 0xd8, 0x93, 0xa5, 0x89, 0x13, 0xab, 0x91, 0x4f, 0xa6, 0x30, 0x18, + 0x7d, 0xb0, 0x59, 0x27, 0x7c, 0x29, 0x7d, 0x1c, 0x7c, 0x81, 0x4a, 0xd2, 0x0a, 0x48, 0x15, 0xca, + 0x72, 0xe1, 0x9e, 0xd6, 0x45, 0x8b, 0x57, 0x20, 0x37, 0x18, 0x1e, 0x69, 0x01, 0x92, 0xae, 0xa7, + 0x39, 0x1e, 0xc9, 0xc2, 0xa4, 0x42, 0x2f, 0x24, 0x11, 0xe2, 0xc8, 0x6a, 0x91, 0x2a, 0x97, 0x54, + 0xf0, 0xbf, 0x8b, 0x97, 0x61, 0x76, 0xe0, 0xf6, 0x93, 0x02, 0x97, 0xbf, 0x30, 0x0d, 0x0b, 0xe3, + 0x72, 0x6e, 0x6c, 0xfa, 0x9f, 0x81, 0x69, 0xab, 0xdf, 0x6d, 0x22, 0x47, 0x8e, 0x13, 0x06, 0x76, + 0x25, 0x95, 0x20, 0x69, 0x6a, 0x4d, 0x64, 0xca, 0x89, 0x25, 0x61, 0x25, 0xb7, 0xfe, 0xec, 0x44, + 0x59, 0xbd, 0xba, 0x83, 0x21, 0x0a, 0x45, 0x4a, 0x9f, 0x82, 0x04, 0x2b, 0x71, 0x98, 0xe1, 0x99, + 0xc9, 0x18, 0x70, 0x2e, 0x2a, 0x04, 0x27, 0x3d, 0x06, 0x69, 0xfc, 0x97, 0xc6, 0x76, 0x9a, 0xf8, + 0x9c, 0xc2, 0x02, 0x1c, 0x57, 0x69, 0x11, 0x52, 0x24, 0xcd, 0x5a, 0x88, 0xb7, 0x06, 0xff, 0x1a, + 0x2f, 0x4c, 0x0b, 0xb5, 0xb5, 0xbe, 0xe9, 0xa9, 0x77, 0x35, 0xb3, 0x8f, 0x48, 0xc2, 0xa4, 0x95, + 0x2c, 0x13, 0x7e, 0x06, 0xcb, 0xa4, 0x73, 0x90, 0xa1, 0x59, 0x69, 0x58, 0x2d, 0xf4, 0x0a, 0xa9, + 0x3e, 0x49, 0x85, 0x26, 0x6a, 0x15, 0x4b, 0xf0, 0xed, 0x6f, 0xbb, 0xb6, 0xc5, 0x97, 0x96, 0xdc, + 0x02, 0x0b, 0xc8, 0xed, 0x2f, 0x0f, 0x17, 0xbe, 0xc7, 0xc7, 0x3f, 0xde, 0x70, 0x2e, 0x2e, 0x7f, + 0x33, 0x06, 0x09, 0xb2, 0xdf, 0xf2, 0x90, 0xd9, 0x7f, 0xb9, 0x5e, 0x51, 0xb7, 0x6a, 0x07, 0x9b, + 0x3b, 0x15, 0x51, 0x90, 0x72, 0x00, 0x44, 0x70, 0x7d, 0xa7, 0x56, 0xda, 0x17, 0x63, 0xfe, 0x75, + 0x75, 0x6f, 0xff, 0xd2, 0x45, 0x31, 0xee, 0x03, 0x0e, 0xa8, 0x20, 0x11, 0x36, 0xb8, 0xb0, 0x2e, + 0x26, 0x25, 0x11, 0xb2, 0x94, 0xa0, 0x7a, 0xab, 0xb2, 0x75, 0xe9, 0xa2, 0x38, 0x3d, 0x28, 0xb9, + 0xb0, 0x2e, 0xce, 0x48, 0xb3, 0x90, 0x26, 0x92, 0xcd, 0x5a, 0x6d, 0x47, 0x4c, 0xf9, 0x9c, 0x8d, + 0x7d, 0xa5, 0xba, 0xb7, 0x2d, 0xa6, 0x7d, 0xce, 0x6d, 0xa5, 0x76, 0x50, 0x17, 0xc1, 0x67, 0xd8, + 0xad, 0x34, 0x1a, 0xa5, 0xed, 0x8a, 0x98, 0xf1, 0x2d, 0x36, 0x5f, 0xde, 0xaf, 0x34, 0xc4, 0xec, + 0x80, 0x5b, 0x17, 0xd6, 0xc5, 0x59, 0xff, 0x16, 0x95, 0xbd, 0x83, 0x5d, 0x31, 0x27, 0xcd, 0xc1, + 0x2c, 0xbd, 0x05, 0x77, 0x22, 0x3f, 0x24, 0xba, 0x74, 0x51, 0x14, 0x03, 0x47, 0x28, 0xcb, 0xdc, + 0x80, 0xe0, 0xd2, 0x45, 0x51, 0x5a, 0x2e, 0x43, 0x92, 0x64, 0x97, 0x24, 0x41, 0x6e, 0xa7, 0xb4, + 0x59, 0xd9, 0x51, 0x6b, 0xf5, 0xfd, 0x6a, 0x6d, 0xaf, 0xb4, 0x23, 0x0a, 0x81, 0x4c, 0xa9, 0x7c, + 0xfa, 0xa0, 0xaa, 0x54, 0xb6, 0xc4, 0x58, 0x58, 0x56, 0xaf, 0x94, 0xf6, 0x2b, 0x5b, 0x62, 0x7c, + 0x59, 0x87, 0x85, 0x71, 0x75, 0x66, 0xec, 0xce, 0x08, 0x2d, 0x71, 0xec, 0x84, 0x25, 0x26, 0x5c, + 0x23, 0x4b, 0xfc, 0x65, 0x01, 0xe6, 0xc7, 0xd4, 0xda, 0xb1, 0x37, 0x79, 0x11, 0x92, 0x34, 0x45, + 0x69, 0xf7, 0x79, 0x7a, 0x6c, 0xd1, 0x26, 0x09, 0x3b, 0xd2, 0x81, 0x08, 0x2e, 0xdc, 0x81, 0xe3, + 0x27, 0x74, 0x60, 0x4c, 0x31, 0xe2, 0xe4, 0x6b, 0x02, 0xc8, 0x27, 0x71, 0x47, 0x14, 0x8a, 0xd8, + 0x40, 0xa1, 0xb8, 0x36, 0xec, 0xc0, 0xf9, 0x93, 0x9f, 0x61, 0xc4, 0x8b, 0xb7, 0x04, 0x38, 0x33, + 0x7e, 0x50, 0x19, 0xeb, 0xc3, 0xa7, 0x60, 0xba, 0x8b, 0xbc, 0x43, 0x9b, 0x37, 0xeb, 0x4f, 0x8c, + 0x69, 0x01, 0x58, 0x3d, 0x1c, 0x2b, 0x86, 0x0a, 0xf7, 0x90, 0xf8, 0x49, 0xd3, 0x06, 0xf5, 0x66, + 0xc4, 0xd3, 0xcf, 0xc7, 0xe0, 0x91, 0xb1, 0xe4, 0x63, 0x1d, 0x7d, 0x1c, 0xc0, 0xb0, 0x7a, 0x7d, + 0x8f, 0x36, 0x64, 0x5a, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0xae, 0x3d, 0x7d, 0xcf, 0xd7, 0xc7, + 0x89, 0x1e, 0xa8, 0x88, 0x18, 0x5c, 0x09, 0x1c, 0x4d, 0x10, 0x47, 0x0b, 0x27, 0x3c, 0xe9, 0x48, + 0xaf, 0x7b, 0x1e, 0x44, 0xdd, 0x34, 0x90, 0xe5, 0xa9, 0xae, 0xe7, 0x20, 0xad, 0x6b, 0x58, 0x1d, + 0x52, 0x80, 0x53, 0xc5, 0x64, 0x5b, 0x33, 0x5d, 0xa4, 0xe4, 0xa9, 0xba, 0xc1, 0xb5, 0x18, 0x41, + 0xba, 0x8c, 0x13, 0x42, 0x4c, 0x0f, 0x20, 0xa8, 0xda, 0x47, 0x2c, 0x7f, 0x6d, 0x06, 0x32, 0xa1, + 0xb1, 0x4e, 0x3a, 0x0f, 0xd9, 0xdb, 0xda, 0x5d, 0x4d, 0xe5, 0xa3, 0x3a, 0x8d, 0x44, 0x06, 0xcb, + 0xea, 0x6c, 0x5c, 0x7f, 0x1e, 0x16, 0x88, 0x89, 0xdd, 0xf7, 0x90, 0xa3, 0xea, 0xa6, 0xe6, 0xba, + 0x24, 0x68, 0x29, 0x62, 0x2a, 0x61, 0x5d, 0x0d, 0xab, 0xca, 0x5c, 0x23, 0x6d, 0xc0, 0x3c, 0x41, + 0x74, 0xfb, 0xa6, 0x67, 0xf4, 0x4c, 0xa4, 0xe2, 0x97, 0x07, 0x97, 0x14, 0x62, 0xdf, 0xb3, 0x39, + 0x6c, 0xb1, 0xcb, 0x0c, 0xb0, 0x47, 0xae, 0xb4, 0x05, 0x8f, 0x13, 0x58, 0x07, 0x59, 0xc8, 0xd1, + 0x3c, 0xa4, 0xa2, 0xcf, 0xf5, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xa5, 0x1e, 0x6a, 0xee, 0xa1, 0xbc, + 0x80, 0x09, 0x36, 0x63, 0xb2, 0xa0, 0x9c, 0xc5, 0x86, 0xdb, 0xcc, 0xae, 0x42, 0xcc, 0x4a, 0x56, + 0xeb, 0x86, 0xe6, 0x1e, 0x4a, 0x45, 0x38, 0x43, 0x58, 0x5c, 0xcf, 0x31, 0xac, 0x8e, 0xaa, 0x1f, + 0x22, 0xfd, 0x8e, 0xda, 0xf7, 0xda, 0x57, 0xe4, 0xc7, 0xc2, 0xf7, 0x27, 0x1e, 0x36, 0x88, 0x4d, + 0x19, 0x9b, 0x1c, 0x78, 0xed, 0x2b, 0x52, 0x03, 0xb2, 0x78, 0x31, 0xba, 0xc6, 0xab, 0x48, 0x6d, + 0xdb, 0x0e, 0xe9, 0x2c, 0xb9, 0x31, 0x3b, 0x3b, 0x14, 0xc1, 0xd5, 0x1a, 0x03, 0xec, 0xda, 0x2d, + 0x54, 0x4c, 0x36, 0xea, 0x95, 0xca, 0x96, 0x92, 0xe1, 0x2c, 0xd7, 0x6d, 0x07, 0x27, 0x54, 0xc7, + 0xf6, 0x03, 0x9c, 0xa1, 0x09, 0xd5, 0xb1, 0x79, 0x78, 0x37, 0x60, 0x5e, 0xd7, 0xe9, 0x33, 0x1b, + 0xba, 0xca, 0x46, 0x7c, 0x57, 0x16, 0x07, 0x82, 0xa5, 0xeb, 0xdb, 0xd4, 0x80, 0xe5, 0xb8, 0x2b, + 0x5d, 0x85, 0x47, 0x82, 0x60, 0x85, 0x81, 0x73, 0x23, 0x4f, 0x39, 0x0c, 0xdd, 0x80, 0xf9, 0xde, + 0xd1, 0x28, 0x50, 0x1a, 0xb8, 0x63, 0xef, 0x68, 0x18, 0xf6, 0x24, 0x79, 0x6d, 0x73, 0x90, 0xae, + 0x79, 0xa8, 0x25, 0x3f, 0x1a, 0xb6, 0x0e, 0x29, 0xa4, 0x35, 0x10, 0x75, 0x5d, 0x45, 0x96, 0xd6, + 0x34, 0x91, 0xaa, 0x39, 0xc8, 0xd2, 0x5c, 0xf9, 0x5c, 0xd8, 0x38, 0xa7, 0xeb, 0x15, 0xa2, 0x2d, + 0x11, 0xa5, 0xf4, 0x0c, 0xcc, 0xd9, 0xcd, 0xdb, 0x3a, 0xcd, 0x2c, 0xb5, 0xe7, 0xa0, 0xb6, 0xf1, + 0x8a, 0xfc, 0x04, 0x09, 0x53, 0x1e, 0x2b, 0x48, 0x5e, 0xd5, 0x89, 0x58, 0x7a, 0x1a, 0x44, 0xdd, + 0x3d, 0xd4, 0x9c, 0x1e, 0x69, 0xed, 0x6e, 0x4f, 0xd3, 0x91, 0xfc, 0x24, 0x35, 0xa5, 0xf2, 0x3d, + 0x2e, 0xc6, 0x99, 0xed, 0xde, 0x33, 0xda, 0x1e, 0x67, 0x7c, 0x8a, 0x66, 0x36, 0x91, 0x31, 0xb6, + 0x5b, 0xb0, 0xd0, 0xb7, 0x0c, 0xcb, 0x43, 0x4e, 0xcf, 0x41, 0x78, 0x88, 0xa7, 0x3b, 0x51, 0xfe, + 0xd7, 0x99, 0x13, 0xc6, 0xf0, 0x83, 0xb0, 0x35, 0x4d, 0x00, 0x65, 0xbe, 0x3f, 0x2a, 0x5c, 0x2e, + 0x42, 0x36, 0x9c, 0x17, 0x52, 0x1a, 0x68, 0x66, 0x88, 0x02, 0xee, 0xb1, 0xe5, 0xda, 0x16, 0xee, + 0x8e, 0x9f, 0xad, 0x88, 0x31, 0xdc, 0xa5, 0x77, 0xaa, 0xfb, 0x15, 0x55, 0x39, 0xd8, 0xdb, 0xaf, + 0xee, 0x56, 0xc4, 0xf8, 0x33, 0xe9, 0xd4, 0x0f, 0x66, 0xc4, 0xfb, 0xf7, 0xef, 0xdf, 0x8f, 0x2d, + 0x7f, 0x3b, 0x06, 0xb9, 0xc1, 0xc9, 0x58, 0xfa, 0x59, 0x78, 0x94, 0xbf, 0xc6, 0xba, 0xc8, 0x53, + 0xef, 0x19, 0x0e, 0x49, 0xd5, 0xae, 0x46, 0x67, 0x4b, 0x3f, 0xca, 0x0b, 0xcc, 0xaa, 0x81, 0xbc, + 0x97, 0x0c, 0x07, 0x27, 0x62, 0x57, 0xf3, 0xa4, 0x1d, 0x38, 0x67, 0xd9, 0xaa, 0xeb, 0x69, 0x56, + 0x4b, 0x73, 0x5a, 0x6a, 0x70, 0x80, 0xa0, 0x6a, 0xba, 0x8e, 0x5c, 0xd7, 0xa6, 0x2d, 0xc2, 0x67, + 0xf9, 0x98, 0x65, 0x37, 0x98, 0x71, 0x50, 0x3b, 0x4b, 0xcc, 0x74, 0x28, 0x23, 0xe2, 0x27, 0x65, + 0xc4, 0x63, 0x90, 0xee, 0x6a, 0x3d, 0x15, 0x59, 0x9e, 0x73, 0x44, 0xe6, 0xb9, 0x94, 0x92, 0xea, + 0x6a, 0xbd, 0x0a, 0xbe, 0xfe, 0xe8, 0xd6, 0x20, 0x1c, 0xc7, 0xef, 0xc5, 0x21, 0x1b, 0x9e, 0xe9, + 0xf0, 0x88, 0xac, 0x93, 0xfa, 0x2d, 0x90, 0x1d, 0xfe, 0xf1, 0x87, 0x4e, 0x80, 0xab, 0x65, 0x5c, + 0xd8, 0x8b, 0xd3, 0x74, 0xd2, 0x52, 0x28, 0x12, 0x37, 0x55, 0xbc, 0xa7, 0x11, 0x9d, 0xdf, 0x53, + 0x0a, 0xbb, 0x92, 0xb6, 0x61, 0xfa, 0xb6, 0x4b, 0xb8, 0xa7, 0x09, 0xf7, 0x13, 0x0f, 0xe7, 0xbe, + 0xd9, 0x20, 0xe4, 0xe9, 0x9b, 0x0d, 0x75, 0xaf, 0xa6, 0xec, 0x96, 0x76, 0x14, 0x06, 0x97, 0xce, + 0x42, 0xc2, 0xd4, 0x5e, 0x3d, 0x1a, 0x6c, 0x01, 0x44, 0x34, 0x69, 0xe0, 0xcf, 0x42, 0xe2, 0x1e, + 0xd2, 0xee, 0x0c, 0x16, 0x5e, 0x22, 0xfa, 0x08, 0x53, 0x7f, 0x0d, 0x92, 0x24, 0x5e, 0x12, 0x00, + 0x8b, 0x98, 0x38, 0x25, 0xa5, 0x20, 0x51, 0xae, 0x29, 0x38, 0xfd, 0x45, 0xc8, 0x52, 0xa9, 0x5a, + 0xaf, 0x56, 0xca, 0x15, 0x31, 0xb6, 0xbc, 0x01, 0xd3, 0x34, 0x08, 0x78, 0x6b, 0xf8, 0x61, 0x10, + 0xa7, 0xd8, 0x25, 0xe3, 0x10, 0xb8, 0xf6, 0x60, 0x77, 0xb3, 0xa2, 0x88, 0xb1, 0xf0, 0xf2, 0xba, + 0x90, 0x0d, 0x8f, 0x73, 0x3f, 0x99, 0x9c, 0xfa, 0x7b, 0x01, 0x32, 0xa1, 0xf1, 0x0c, 0x0f, 0x06, + 0x9a, 0x69, 0xda, 0xf7, 0x54, 0xcd, 0x34, 0x34, 0x97, 0x25, 0x05, 0x10, 0x51, 0x09, 0x4b, 0x26, + 0x5d, 0xb4, 0x9f, 0x88, 0xf3, 0x6f, 0x0a, 0x20, 0x0e, 0x8f, 0x76, 0x43, 0x0e, 0x0a, 0x3f, 0x55, + 0x07, 0xdf, 0x10, 0x20, 0x37, 0x38, 0xcf, 0x0d, 0xb9, 0x77, 0xfe, 0xa7, 0xea, 0xde, 0x3b, 0x31, + 0x98, 0x1d, 0x98, 0xe2, 0x26, 0xf5, 0xee, 0x73, 0x30, 0x67, 0xb4, 0x50, 0xb7, 0x67, 0x7b, 0xc8, + 0xd2, 0x8f, 0x54, 0x13, 0xdd, 0x45, 0xa6, 0xbc, 0x4c, 0x0a, 0xc5, 0xda, 0xc3, 0xe7, 0xc4, 0xd5, + 0x6a, 0x80, 0xdb, 0xc1, 0xb0, 0xe2, 0x7c, 0x75, 0xab, 0xb2, 0x5b, 0xaf, 0xed, 0x57, 0xf6, 0xca, + 0x2f, 0xab, 0x07, 0x7b, 0x3f, 0xb7, 0x57, 0x7b, 0x69, 0x4f, 0x11, 0x8d, 0x21, 0xb3, 0x8f, 0x70, + 0xab, 0xd7, 0x41, 0x1c, 0x76, 0x4a, 0x7a, 0x14, 0xc6, 0xb9, 0x25, 0x4e, 0x49, 0xf3, 0x90, 0xdf, + 0xab, 0xa9, 0x8d, 0xea, 0x56, 0x45, 0xad, 0x5c, 0xbf, 0x5e, 0x29, 0xef, 0x37, 0xe8, 0x8b, 0xb3, + 0x6f, 0xbd, 0x3f, 0xb8, 0xa9, 0x5f, 0x8f, 0xc3, 0xfc, 0x18, 0x4f, 0xa4, 0x12, 0x9b, 0xd9, 0xe9, + 0x6b, 0xc4, 0x73, 0x93, 0x78, 0xbf, 0x8a, 0xa7, 0x82, 0xba, 0xe6, 0x78, 0x6c, 0xc4, 0x7f, 0x1a, + 0x70, 0x94, 0x2c, 0xcf, 0x68, 0x1b, 0xc8, 0x61, 0xe7, 0x0c, 0x74, 0x90, 0xcf, 0x07, 0x72, 0x7a, + 0xd4, 0xf0, 0x33, 0x20, 0xf5, 0x6c, 0xd7, 0xf0, 0x8c, 0xbb, 0x48, 0x35, 0x2c, 0x7e, 0x28, 0x81, + 0x07, 0xfb, 0x84, 0x22, 0x72, 0x4d, 0xd5, 0xf2, 0x7c, 0x6b, 0x0b, 0x75, 0xb4, 0x21, 0x6b, 0x5c, + 0xc0, 0xe3, 0x8a, 0xc8, 0x35, 0xbe, 0xf5, 0x79, 0xc8, 0xb6, 0xec, 0x3e, 0x1e, 0x93, 0xa8, 0x1d, + 0xee, 0x17, 0x82, 0x92, 0xa1, 0x32, 0xdf, 0x84, 0xcd, 0xb1, 0xc1, 0x69, 0x48, 0x56, 0xc9, 0x50, + 0x19, 0x35, 0x79, 0x0a, 0xf2, 0x5a, 0xa7, 0xe3, 0x60, 0x72, 0x4e, 0x44, 0x27, 0xf3, 0x9c, 0x2f, + 0x26, 0x86, 0x8b, 0x37, 0x21, 0xc5, 0xe3, 0x80, 0x5b, 0x32, 0x8e, 0x84, 0xda, 0xa3, 0x67, 0x52, + 0xb1, 0x95, 0xb4, 0x92, 0xb2, 0xb8, 0xf2, 0x3c, 0x64, 0x0d, 0x57, 0x0d, 0x0e, 0x47, 0x63, 0x4b, + 0xb1, 0x95, 0x94, 0x92, 0x31, 0x5c, 0xff, 0x34, 0x6c, 0xf9, 0xad, 0x18, 0xe4, 0x06, 0x0f, 0x77, + 0xa5, 0x2d, 0x48, 0x99, 0xb6, 0xae, 0x91, 0xd4, 0xa2, 0xbf, 0x2c, 0xac, 0x44, 0x9c, 0x07, 0xaf, + 0xee, 0x30, 0x7b, 0xc5, 0x47, 0x2e, 0xfe, 0xb3, 0x00, 0x29, 0x2e, 0x96, 0xce, 0x40, 0xa2, 0xa7, + 0x79, 0x87, 0x84, 0x2e, 0xb9, 0x19, 0x13, 0x05, 0x85, 0x5c, 0x63, 0xb9, 0xdb, 0xd3, 0x2c, 0x92, + 0x02, 0x4c, 0x8e, 0xaf, 0xf1, 0xba, 0x9a, 0x48, 0x6b, 0x91, 0xb1, 0xdf, 0xee, 0x76, 0x91, 0xe5, + 0xb9, 0x7c, 0x5d, 0x99, 0xbc, 0xcc, 0xc4, 0xd2, 0xb3, 0x30, 0xe7, 0x39, 0x9a, 0x61, 0x0e, 0xd8, + 0x26, 0x88, 0xad, 0xc8, 0x15, 0xbe, 0x71, 0x11, 0xce, 0x72, 0xde, 0x16, 0xf2, 0x34, 0xfd, 0x10, + 0xb5, 0x02, 0xd0, 0x34, 0x39, 0x39, 0x7c, 0x94, 0x19, 0x6c, 0x31, 0x3d, 0xc7, 0x2e, 0x7f, 0x57, + 0x80, 0x39, 0xfe, 0xa2, 0xd2, 0xf2, 0x83, 0xb5, 0x0b, 0xa0, 0x59, 0x96, 0xed, 0x85, 0xc3, 0x35, + 0x9a, 0xca, 0x23, 0xb8, 0xd5, 0x92, 0x0f, 0x52, 0x42, 0x04, 0x8b, 0x5d, 0x80, 0x40, 0x73, 0x62, + 0xd8, 0xce, 0x41, 0x86, 0x9d, 0xdc, 0x93, 0x9f, 0x7f, 0xe8, 0xab, 0x2d, 0x50, 0x11, 0x7e, 0xa3, + 0x91, 0x16, 0x20, 0xd9, 0x44, 0x1d, 0xc3, 0x62, 0xe7, 0x89, 0xf4, 0x82, 0x9f, 0x52, 0x26, 0xfc, + 0x53, 0xca, 0xcd, 0x5b, 0x30, 0xaf, 0xdb, 0xdd, 0x61, 0x77, 0x37, 0xc5, 0xa1, 0xd7, 0x6b, 0xf7, + 0x86, 0xf0, 0x59, 0x08, 0x46, 0xcc, 0x2f, 0xc7, 0xe2, 0xdb, 0xf5, 0xcd, 0xaf, 0xc6, 0x16, 0xb7, + 0x29, 0xae, 0xce, 0x1f, 0x53, 0x41, 0x6d, 0x13, 0xe9, 0xd8, 0x75, 0xf8, 0xe1, 0x27, 0xe0, 0xb9, + 0x8e, 0xe1, 0x1d, 0xf6, 0x9b, 0xab, 0xba, 0xdd, 0x5d, 0xeb, 0xd8, 0x1d, 0x3b, 0xf8, 0xb9, 0x0b, + 0x5f, 0x91, 0x0b, 0xf2, 0x1f, 0xfb, 0xc9, 0x2b, 0xed, 0x4b, 0x17, 0x23, 0x7f, 0x1f, 0x2b, 0xee, + 0xc1, 0x3c, 0x33, 0x56, 0xc9, 0x99, 0x3b, 0x7d, 0x35, 0x90, 0x1e, 0x7a, 0xee, 0x22, 0x7f, 0xe3, + 0x5d, 0xd2, 0xab, 0x95, 0x39, 0x06, 0xc5, 0x3a, 0xfa, 0x02, 0x51, 0x54, 0xe0, 0x91, 0x01, 0x3e, + 0xba, 0x2f, 0x91, 0x13, 0xc1, 0xf8, 0x6d, 0xc6, 0x38, 0x1f, 0x62, 0x6c, 0x30, 0x68, 0xb1, 0x0c, + 0xb3, 0xa7, 0xe1, 0xfa, 0x47, 0xc6, 0x95, 0x45, 0x61, 0x92, 0x6d, 0xc8, 0x13, 0x12, 0xbd, 0xef, + 0x7a, 0x76, 0x97, 0x14, 0xbd, 0x87, 0xd3, 0xfc, 0xd3, 0xbb, 0x74, 0xa3, 0xe4, 0x30, 0xac, 0xec, + 0xa3, 0x8a, 0x45, 0x20, 0x3f, 0x33, 0xb4, 0x90, 0x6e, 0x46, 0x30, 0xbc, 0xcd, 0x1c, 0xf1, 0xed, + 0x8b, 0x9f, 0x81, 0x05, 0xfc, 0x3f, 0xa9, 0x49, 0x61, 0x4f, 0xa2, 0x4f, 0x99, 0xe4, 0xef, 0xbe, + 0x46, 0xf7, 0xe2, 0xbc, 0x4f, 0x10, 0xf2, 0x29, 0xb4, 0x8a, 0x1d, 0xe4, 0x79, 0xc8, 0x71, 0x55, + 0xcd, 0x1c, 0xe7, 0x5e, 0xe8, 0x35, 0x5d, 0xfe, 0xe2, 0x7b, 0x83, 0xab, 0xb8, 0x4d, 0x91, 0x25, + 0xd3, 0x2c, 0x1e, 0xc0, 0xa3, 0x63, 0xb2, 0x62, 0x02, 0xce, 0xd7, 0x19, 0xe7, 0xc2, 0x48, 0x66, + 0x60, 0xda, 0x3a, 0x70, 0xb9, 0xbf, 0x96, 0x13, 0x70, 0xfe, 0x3e, 0xe3, 0x94, 0x18, 0x96, 0x2f, + 0x29, 0x66, 0xbc, 0x09, 0x73, 0x77, 0x91, 0xd3, 0xb4, 0x5d, 0x76, 0x34, 0x32, 0x01, 0xdd, 0x1b, + 0x8c, 0x2e, 0xcf, 0x80, 0xe4, 0xac, 0x04, 0x73, 0x5d, 0x85, 0x54, 0x5b, 0xd3, 0xd1, 0x04, 0x14, + 0x5f, 0x62, 0x14, 0x33, 0xd8, 0x1e, 0x43, 0x4b, 0x90, 0xed, 0xd8, 0xac, 0x2d, 0x45, 0xc3, 0xdf, + 0x64, 0xf0, 0x0c, 0xc7, 0x30, 0x8a, 0x9e, 0xdd, 0xeb, 0x9b, 0xb8, 0x67, 0x45, 0x53, 0xfc, 0x01, + 0xa7, 0xe0, 0x18, 0x46, 0x71, 0x8a, 0xb0, 0xfe, 0x21, 0xa7, 0x70, 0x43, 0xf1, 0x7c, 0x11, 0x32, + 0xb6, 0x65, 0x1e, 0xd9, 0xd6, 0x24, 0x4e, 0xfc, 0x11, 0x63, 0x00, 0x06, 0xc1, 0x04, 0xd7, 0x20, + 0x3d, 0xe9, 0x42, 0xfc, 0xf1, 0x7b, 0x7c, 0x7b, 0xf0, 0x15, 0xd8, 0x86, 0x3c, 0x2f, 0x50, 0x86, + 0x6d, 0x4d, 0x40, 0xf1, 0x27, 0x8c, 0x22, 0x17, 0x82, 0xb1, 0xc7, 0xf0, 0x90, 0xeb, 0x75, 0xd0, + 0x24, 0x24, 0x6f, 0xf1, 0xc7, 0x60, 0x10, 0x16, 0xca, 0x26, 0xb2, 0xf4, 0xc3, 0xc9, 0x18, 0xbe, + 0xc2, 0x43, 0xc9, 0x31, 0x98, 0xa2, 0x0c, 0xb3, 0x5d, 0xcd, 0x71, 0x0f, 0x35, 0x73, 0xa2, 0xe5, + 0xf8, 0x53, 0xc6, 0x91, 0xf5, 0x41, 0x2c, 0x22, 0x7d, 0xeb, 0x34, 0x34, 0x5f, 0xe5, 0x11, 0x09, + 0xc1, 0xd8, 0xd6, 0x73, 0x3d, 0x72, 0x00, 0x75, 0x1a, 0xb6, 0xaf, 0xf1, 0xad, 0x47, 0xb1, 0xbb, + 0x61, 0xc6, 0x6b, 0x90, 0x76, 0x8d, 0x57, 0x27, 0xa2, 0xf9, 0x33, 0xbe, 0xd2, 0x04, 0x80, 0xc1, + 0x2f, 0xc3, 0xd9, 0xb1, 0x6d, 0x62, 0x02, 0xb2, 0x3f, 0x67, 0x64, 0x67, 0xc6, 0xb4, 0x0a, 0x56, + 0x12, 0x4e, 0x4b, 0xf9, 0x17, 0xbc, 0x24, 0xa0, 0x21, 0xae, 0x3a, 0x7e, 0x51, 0x70, 0xb5, 0xf6, + 0xe9, 0xa2, 0xf6, 0x97, 0x3c, 0x6a, 0x14, 0x3b, 0x10, 0xb5, 0x7d, 0x38, 0xc3, 0x18, 0x4f, 0xb7, + 0xae, 0x5f, 0xe7, 0x85, 0x95, 0xa2, 0x0f, 0x06, 0x57, 0xf7, 0xe7, 0x61, 0xd1, 0x0f, 0x27, 0x9f, + 0x48, 0x5d, 0xb5, 0xab, 0xf5, 0x26, 0x60, 0xfe, 0x06, 0x63, 0xe6, 0x15, 0xdf, 0x1f, 0x69, 0xdd, + 0x5d, 0xad, 0x87, 0xc9, 0x6f, 0x81, 0xcc, 0xc9, 0xfb, 0x96, 0x83, 0x74, 0xbb, 0x63, 0x19, 0xaf, + 0xa2, 0xd6, 0x04, 0xd4, 0x7f, 0x35, 0xb4, 0x54, 0x07, 0x21, 0x38, 0x66, 0xae, 0x82, 0xe8, 0xcf, + 0x2a, 0xaa, 0xd1, 0xed, 0xd9, 0x8e, 0x17, 0xc1, 0xf8, 0xd7, 0x7c, 0xa5, 0x7c, 0x5c, 0x95, 0xc0, + 0x8a, 0x15, 0xc8, 0x91, 0xcb, 0x49, 0x53, 0xf2, 0x6f, 0x18, 0xd1, 0x6c, 0x80, 0x62, 0x85, 0x43, + 0xb7, 0xbb, 0x3d, 0xcd, 0x99, 0xa4, 0xfe, 0xfd, 0x2d, 0x2f, 0x1c, 0x0c, 0xc2, 0x0a, 0x87, 0x77, + 0xd4, 0x43, 0xb8, 0xdb, 0x4f, 0xc0, 0xf0, 0x4d, 0x5e, 0x38, 0x38, 0x86, 0x51, 0xf0, 0x81, 0x61, + 0x02, 0x8a, 0xbf, 0xe3, 0x14, 0x1c, 0x83, 0x29, 0x3e, 0x1d, 0x34, 0x5a, 0x07, 0x75, 0x0c, 0xd7, + 0x73, 0xe8, 0x1c, 0xfc, 0x70, 0xaa, 0x6f, 0xbd, 0x37, 0x38, 0x84, 0x29, 0x21, 0x68, 0xf1, 0x26, + 0xe4, 0x87, 0x46, 0x0c, 0x29, 0xea, 0x9b, 0x05, 0xf9, 0x17, 0x3e, 0x60, 0xc5, 0x68, 0x70, 0xc2, + 0x28, 0xee, 0xe0, 0x75, 0x1f, 0x9c, 0x03, 0xa2, 0xc9, 0x5e, 0xfb, 0xc0, 0x5f, 0xfa, 0x81, 0x31, + 0xa0, 0x78, 0x1d, 0x66, 0x07, 0x66, 0x80, 0x68, 0xaa, 0x5f, 0x64, 0x54, 0xd9, 0xf0, 0x08, 0x50, + 0xdc, 0x80, 0x04, 0xee, 0xe7, 0xd1, 0xf0, 0x5f, 0x62, 0x70, 0x62, 0x5e, 0xfc, 0x24, 0xa4, 0x78, + 0x1f, 0x8f, 0x86, 0xfe, 0x32, 0x83, 0xfa, 0x10, 0x0c, 0xe7, 0x3d, 0x3c, 0x1a, 0xfe, 0x2b, 0x1c, + 0xce, 0x21, 0x18, 0x3e, 0x79, 0x08, 0xff, 0xe1, 0x57, 0x13, 0xac, 0x0e, 0xf3, 0xd8, 0x5d, 0x83, + 0x19, 0xd6, 0xbc, 0xa3, 0xd1, 0x9f, 0x67, 0x37, 0xe7, 0x88, 0xe2, 0x65, 0x48, 0x4e, 0x18, 0xf0, + 0x5f, 0x63, 0x50, 0x6a, 0x5f, 0x2c, 0x43, 0x26, 0xd4, 0xb0, 0xa3, 0xe1, 0xbf, 0xce, 0xe0, 0x61, + 0x14, 0x76, 0x9d, 0x35, 0xec, 0x68, 0x82, 0xdf, 0xe0, 0xae, 0x33, 0x04, 0x0e, 0x1b, 0xef, 0xd5, + 0xd1, 0xe8, 0xdf, 0xe4, 0x51, 0xe7, 0x90, 0xe2, 0x8b, 0x90, 0xf6, 0xeb, 0x6f, 0x34, 0xfe, 0xb7, + 0x18, 0x3e, 0xc0, 0xe0, 0x08, 0x84, 0xea, 0x7f, 0x34, 0xc5, 0x6f, 0xf3, 0x08, 0x84, 0x50, 0x78, + 0x1b, 0x0d, 0xf7, 0xf4, 0x68, 0xa6, 0xdf, 0xe1, 0xdb, 0x68, 0xa8, 0xa5, 0xe3, 0xd5, 0x24, 0x65, + 0x30, 0x9a, 0xe2, 0x77, 0xf9, 0x6a, 0x12, 0x7b, 0xec, 0xc6, 0x70, 0x93, 0x8c, 0xe6, 0xf8, 0x3d, + 0xee, 0xc6, 0x50, 0x8f, 0x2c, 0xd6, 0x41, 0x1a, 0x6d, 0x90, 0xd1, 0x7c, 0x5f, 0x60, 0x7c, 0x73, + 0x23, 0xfd, 0xb1, 0xf8, 0x12, 0x9c, 0x19, 0xdf, 0x1c, 0xa3, 0x59, 0xbf, 0xf8, 0xc1, 0xd0, 0xeb, + 0x4c, 0xb8, 0x37, 0x16, 0xf7, 0x83, 0x2a, 0x1b, 0x6e, 0x8c, 0xd1, 0xb4, 0xaf, 0x7f, 0x30, 0x58, + 0x68, 0xc3, 0x7d, 0xb1, 0x58, 0x02, 0x08, 0x7a, 0x52, 0x34, 0xd7, 0x1b, 0x8c, 0x2b, 0x04, 0xc2, + 0x5b, 0x83, 0xb5, 0xa4, 0x68, 0xfc, 0x97, 0xf8, 0xd6, 0x60, 0x08, 0xbc, 0x35, 0x78, 0x37, 0x8a, + 0x46, 0xbf, 0xc9, 0xb7, 0x06, 0x87, 0x14, 0xaf, 0x41, 0xca, 0xea, 0x9b, 0x26, 0xce, 0x2d, 0xe9, + 0xe1, 0x9f, 0x11, 0xc9, 0xff, 0xf6, 0x21, 0x03, 0x73, 0x40, 0x71, 0x03, 0x92, 0xa8, 0xdb, 0x44, + 0xad, 0x28, 0xe4, 0xbf, 0x7f, 0xc8, 0xeb, 0x09, 0xb6, 0x2e, 0xbe, 0x08, 0x40, 0x5f, 0xa6, 0xc9, + 0xaf, 0x44, 0x11, 0xd8, 0xff, 0xf8, 0x90, 0x7d, 0xa1, 0x10, 0x40, 0x02, 0x02, 0xfa, 0xbd, 0xc3, + 0xc3, 0x09, 0xde, 0x1b, 0x24, 0x20, 0x2f, 0xe0, 0x57, 0x61, 0xe6, 0xb6, 0x6b, 0x5b, 0x9e, 0xd6, + 0x89, 0x42, 0xff, 0x27, 0x43, 0x73, 0x7b, 0x1c, 0xb0, 0xae, 0xed, 0x20, 0x4f, 0xeb, 0xb8, 0x51, + 0xd8, 0xff, 0x62, 0x58, 0x1f, 0x80, 0xc1, 0xba, 0xe6, 0x7a, 0x93, 0x3c, 0xf7, 0x7f, 0x73, 0x30, + 0x07, 0x60, 0xa7, 0xf1, 0xff, 0x77, 0xd0, 0x51, 0x14, 0xf6, 0x7d, 0xee, 0x34, 0xb3, 0x2f, 0x7e, + 0x12, 0xd2, 0xf8, 0x5f, 0xfa, 0xd5, 0x4e, 0x04, 0xf8, 0x7f, 0x18, 0x38, 0x40, 0xe0, 0x3b, 0xbb, + 0x5e, 0xcb, 0x33, 0xa2, 0x83, 0xfd, 0xbf, 0x6c, 0xa5, 0xb9, 0x7d, 0xb1, 0x04, 0x19, 0xd7, 0x6b, + 0xb5, 0xfa, 0x6c, 0xa2, 0x89, 0x80, 0xff, 0xf0, 0x43, 0xff, 0x25, 0xd7, 0xc7, 0x6c, 0x9e, 0x1f, + 0x7f, 0x58, 0x07, 0xdb, 0xf6, 0xb6, 0x4d, 0x8f, 0xe9, 0xe0, 0xcd, 0x24, 0x2c, 0xe9, 0x76, 0xb7, + 0x69, 0xbb, 0x6b, 0xb4, 0xa0, 0xf8, 0xe5, 0x64, 0xcd, 0xb6, 0x18, 0x46, 0x8a, 0xdb, 0x16, 0x5a, + 0x3c, 0xdd, 0xe1, 0xdc, 0xf2, 0x59, 0x48, 0x36, 0xfa, 0xcd, 0xe6, 0x91, 0x24, 0x42, 0xdc, 0xed, + 0x37, 0xd9, 0xd7, 0x25, 0xf8, 0xdf, 0xe5, 0xef, 0xc5, 0x21, 0xd3, 0xd0, 0xba, 0x3d, 0x13, 0xd5, + 0x2c, 0x54, 0x6b, 0x4b, 0x32, 0x4c, 0x93, 0x67, 0x79, 0x81, 0x18, 0x09, 0x37, 0xa6, 0x14, 0x76, + 0xed, 0x6b, 0xd6, 0xc9, 0x89, 0x65, 0xcc, 0xd7, 0xac, 0xfb, 0x9a, 0x0b, 0xf4, 0xc0, 0xd2, 0xd7, + 0x5c, 0xf0, 0x35, 0x17, 0xc9, 0xb1, 0x65, 0xdc, 0xd7, 0x5c, 0xf4, 0x35, 0x1b, 0xe4, 0x58, 0x7e, + 0xd6, 0xd7, 0x6c, 0xf8, 0x9a, 0x4b, 0xe4, 0x20, 0x3e, 0xe1, 0x6b, 0x2e, 0xf9, 0x9a, 0xcb, 0xe4, + 0xfc, 0x7d, 0xce, 0xd7, 0x5c, 0xf6, 0x35, 0x57, 0xc8, 0x99, 0xbb, 0xe4, 0x6b, 0xae, 0xf8, 0x9a, + 0xab, 0xe4, 0x23, 0x92, 0x19, 0x5f, 0x73, 0x55, 0x5a, 0x84, 0x19, 0xfa, 0x64, 0xcf, 0x93, 0x1f, + 0x66, 0xf3, 0x37, 0xa6, 0x14, 0x2e, 0x08, 0x74, 0x2f, 0x90, 0x0f, 0x45, 0xa6, 0x03, 0xdd, 0x0b, + 0x81, 0x6e, 0x9d, 0x7c, 0x2e, 0x2d, 0x06, 0xba, 0xf5, 0x40, 0x77, 0x41, 0x9e, 0xc5, 0x29, 0x10, + 0xe8, 0x2e, 0x04, 0xba, 0x8b, 0x72, 0x0e, 0xc7, 0x3f, 0xd0, 0x5d, 0x0c, 0x74, 0x1b, 0x72, 0x7e, + 0x49, 0x58, 0xc9, 0x06, 0xba, 0x0d, 0xe9, 0x39, 0xc8, 0xb8, 0xfd, 0xa6, 0xca, 0xbe, 0x23, 0x20, + 0x1f, 0xa4, 0x64, 0xd6, 0x61, 0x15, 0x67, 0x04, 0x59, 0xd4, 0x1b, 0x53, 0x0a, 0xb8, 0xfd, 0x26, + 0xab, 0x91, 0x9b, 0x59, 0x20, 0x47, 0x0a, 0x2a, 0xf9, 0x0c, 0x73, 0x73, 0xeb, 0xed, 0x07, 0x85, + 0xa9, 0xef, 0x3c, 0x28, 0x4c, 0xfd, 0xcb, 0x83, 0xc2, 0xd4, 0x3b, 0x0f, 0x0a, 0xc2, 0xfb, 0x0f, + 0x0a, 0xc2, 0x8f, 0x1e, 0x14, 0x84, 0xfb, 0xc7, 0x05, 0xe1, 0x2b, 0xc7, 0x05, 0xe1, 0xeb, 0xc7, + 0x05, 0xe1, 0x5b, 0xc7, 0x05, 0xe1, 0xed, 0xe3, 0xc2, 0xd4, 0x77, 0x8e, 0x0b, 0x53, 0xef, 0x1c, + 0x17, 0x84, 0x1f, 0x1c, 0x17, 0xa6, 0xde, 0x3f, 0x2e, 0x08, 0x3f, 0x3a, 0x2e, 0x08, 0xf7, 0xbf, + 0x5f, 0x98, 0x6a, 0x4e, 0x93, 0x34, 0xba, 0xf0, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0f, 0xd9, + 0xa8, 0x3d, 0xfd, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeunmarshaler/one.pb.go b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeunmarshaler/one.pb.go index 305d5787e..fc75b6660 100644 --- a/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeunmarshaler/one.pb.go +++ b/vendor/github.com/gogo/protobuf/test/oneof3/combos/unsafeunmarshaler/one.pb.go @@ -551,242 +551,249 @@ func (this *SampleOneOf) Description() (desc *github_com_gogo_protobuf_protoc_ge func OneDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3750 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x6c, 0xe4, 0xe6, - 0x75, 0x16, 0xe7, 0xa6, 0x99, 0x33, 0xa3, 0x11, 0xf5, 0x4b, 0x5e, 0x73, 0xe5, 0x78, 0x56, 0xab, - 0xd8, 0xb1, 0x6c, 0xd7, 0x5a, 0x5b, 0x97, 0xbd, 0xcc, 0x36, 0x31, 0x46, 0xd2, 0x58, 0xab, 0x85, - 0x6e, 0xe1, 0x48, 0x89, 0x9d, 0x3c, 0x10, 0x1c, 0xce, 0x3f, 0x23, 0xee, 0x72, 0xc8, 0x29, 0xc9, - 0x59, 0x5b, 0x7e, 0xda, 0xc0, 0xbd, 0x20, 0x08, 0x7a, 0x2f, 0xd0, 0xc4, 0x71, 0x5c, 0x37, 0x40, - 0xeb, 0x34, 0xbd, 0x25, 0xbd, 0xa4, 0x41, 0x9f, 0xfa, 0x92, 0xd6, 0x4f, 0x45, 0xf2, 0xd6, 0x87, - 0x3c, 0x64, 0x55, 0x03, 0x4d, 0x5b, 0xb7, 0x75, 0x1b, 0x03, 0x0d, 0xb0, 0x2f, 0xc5, 0x7f, 0x23, - 0x39, 0x17, 0x2d, 0x47, 0x01, 0x12, 0xf7, 0x49, 0xe2, 0x39, 0xe7, 0xfb, 0x78, 0x78, 0xfe, 0xf3, - 0x9f, 0x73, 0xf8, 0x0f, 0xe1, 0x73, 0x2b, 0x30, 0xd7, 0x72, 0x9c, 0x96, 0x85, 0x2f, 0x75, 0x5c, - 0xc7, 0x77, 0xea, 0xdd, 0xe6, 0xa5, 0x06, 0xf6, 0x0c, 0xd7, 0xec, 0xf8, 0x8e, 0xbb, 0x48, 0x65, - 0x68, 0x92, 0x59, 0x2c, 0x0a, 0x8b, 0xf9, 0x1d, 0x98, 0x7a, 0xc1, 0xb4, 0xf0, 0x46, 0x60, 0x58, - 0xc3, 0x3e, 0xba, 0x0a, 0xa9, 0xa6, 0x69, 0x61, 0x45, 0x9a, 0x4b, 0x2e, 0xe4, 0x97, 0x1e, 0x5b, - 0xec, 0x03, 0x2d, 0xf6, 0x22, 0xf6, 0x89, 0x58, 0xa5, 0x88, 0xf9, 0x77, 0x53, 0x30, 0x3d, 0x44, - 0x8b, 0x10, 0xa4, 0x6c, 0xbd, 0x4d, 0x18, 0xa5, 0x85, 0x9c, 0x4a, 0xff, 0x47, 0x0a, 0x8c, 0x77, - 0x74, 0xe3, 0xb6, 0xde, 0xc2, 0x4a, 0x82, 0x8a, 0xc5, 0x25, 0x2a, 0x01, 0x34, 0x70, 0x07, 0xdb, - 0x0d, 0x6c, 0x1b, 0xc7, 0x4a, 0x72, 0x2e, 0xb9, 0x90, 0x53, 0x23, 0x12, 0xf4, 0x34, 0x4c, 0x75, - 0xba, 0x75, 0xcb, 0x34, 0xb4, 0x88, 0x19, 0xcc, 0x25, 0x17, 0xd2, 0xaa, 0xcc, 0x14, 0x1b, 0xa1, - 0xf1, 0x13, 0x30, 0xf9, 0x32, 0xd6, 0x6f, 0x47, 0x4d, 0xf3, 0xd4, 0xb4, 0x48, 0xc4, 0x11, 0xc3, - 0x75, 0x28, 0xb4, 0xb1, 0xe7, 0xe9, 0x2d, 0xac, 0xf9, 0xc7, 0x1d, 0xac, 0xa4, 0xe8, 0xd3, 0xcf, - 0x0d, 0x3c, 0x7d, 0xff, 0x93, 0xe7, 0x39, 0xea, 0xe0, 0xb8, 0x83, 0x51, 0x05, 0x72, 0xd8, 0xee, - 0xb6, 0x19, 0x43, 0xfa, 0x94, 0xf8, 0x55, 0xed, 0x6e, 0xbb, 0x9f, 0x25, 0x4b, 0x60, 0x9c, 0x62, - 0xdc, 0xc3, 0xee, 0x1d, 0xd3, 0xc0, 0x4a, 0x86, 0x12, 0x3c, 0x31, 0x40, 0x50, 0x63, 0xfa, 0x7e, - 0x0e, 0x81, 0x43, 0xeb, 0x90, 0xc3, 0xaf, 0xf8, 0xd8, 0xf6, 0x4c, 0xc7, 0x56, 0xc6, 0x29, 0xc9, - 0xe3, 0x43, 0x56, 0x11, 0x5b, 0x8d, 0x7e, 0x8a, 0x10, 0x87, 0x2e, 0xc3, 0xb8, 0xd3, 0xf1, 0x4d, - 0xc7, 0xf6, 0x94, 0xec, 0x9c, 0xb4, 0x90, 0x5f, 0xfa, 0xc8, 0xd0, 0x44, 0xd8, 0x63, 0x36, 0xaa, - 0x30, 0x46, 0x5b, 0x20, 0x7b, 0x4e, 0xd7, 0x35, 0xb0, 0x66, 0x38, 0x0d, 0xac, 0x99, 0x76, 0xd3, - 0x51, 0x72, 0x94, 0xe0, 0xc2, 0xe0, 0x83, 0x50, 0xc3, 0x75, 0xa7, 0x81, 0xb7, 0xec, 0xa6, 0xa3, - 0x16, 0xbd, 0x9e, 0x6b, 0x74, 0x0e, 0x32, 0xde, 0xb1, 0xed, 0xeb, 0xaf, 0x28, 0x05, 0x9a, 0x21, - 0xfc, 0x6a, 0xfe, 0x7f, 0xd3, 0x30, 0x39, 0x4a, 0x8a, 0x5d, 0x87, 0x74, 0x93, 0x3c, 0xa5, 0x92, - 0x38, 0x4b, 0x0c, 0x18, 0xa6, 0x37, 0x88, 0x99, 0x9f, 0x30, 0x88, 0x15, 0xc8, 0xdb, 0xd8, 0xf3, - 0x71, 0x83, 0x65, 0x44, 0x72, 0xc4, 0x9c, 0x02, 0x06, 0x1a, 0x4c, 0xa9, 0xd4, 0x4f, 0x94, 0x52, - 0x2f, 0xc2, 0x64, 0xe0, 0x92, 0xe6, 0xea, 0x76, 0x4b, 0xe4, 0xe6, 0xa5, 0x38, 0x4f, 0x16, 0xab, - 0x02, 0xa7, 0x12, 0x98, 0x5a, 0xc4, 0x3d, 0xd7, 0x68, 0x03, 0xc0, 0xb1, 0xb1, 0xd3, 0xd4, 0x1a, - 0xd8, 0xb0, 0x94, 0xec, 0x29, 0x51, 0xda, 0x23, 0x26, 0x03, 0x51, 0x72, 0x98, 0xd4, 0xb0, 0xd0, - 0xb5, 0x30, 0xd5, 0xc6, 0x4f, 0xc9, 0x94, 0x1d, 0xb6, 0xc9, 0x06, 0xb2, 0xed, 0x10, 0x8a, 0x2e, - 0x26, 0x79, 0x8f, 0x1b, 0xfc, 0xc9, 0x72, 0xd4, 0x89, 0xc5, 0xd8, 0x27, 0x53, 0x39, 0x8c, 0x3d, - 0xd8, 0x84, 0x1b, 0xbd, 0x44, 0x1f, 0x85, 0x40, 0xa0, 0xd1, 0xb4, 0x02, 0x5a, 0x85, 0x0a, 0x42, - 0xb8, 0xab, 0xb7, 0xf1, 0xec, 0x55, 0x28, 0xf6, 0x86, 0x07, 0xcd, 0x40, 0xda, 0xf3, 0x75, 0xd7, - 0xa7, 0x59, 0x98, 0x56, 0xd9, 0x05, 0x92, 0x21, 0x89, 0xed, 0x06, 0xad, 0x72, 0x69, 0x95, 0xfc, - 0x3b, 0x7b, 0x05, 0x26, 0x7a, 0x6e, 0x3f, 0x2a, 0x70, 0xfe, 0x8b, 0x19, 0x98, 0x19, 0x96, 0x73, - 0x43, 0xd3, 0xff, 0x1c, 0x64, 0xec, 0x6e, 0xbb, 0x8e, 0x5d, 0x25, 0x49, 0x19, 0xf8, 0x15, 0xaa, - 0x40, 0xda, 0xd2, 0xeb, 0xd8, 0x52, 0x52, 0x73, 0xd2, 0x42, 0x71, 0xe9, 0xe9, 0x91, 0xb2, 0x7a, - 0x71, 0x9b, 0x40, 0x54, 0x86, 0x44, 0x9f, 0x80, 0x14, 0x2f, 0x71, 0x84, 0xe1, 0xa9, 0xd1, 0x18, - 0x48, 0x2e, 0xaa, 0x14, 0x87, 0x1e, 0x81, 0x1c, 0xf9, 0xcb, 0x62, 0x9b, 0xa1, 0x3e, 0x67, 0x89, - 0x80, 0xc4, 0x15, 0xcd, 0x42, 0x96, 0xa6, 0x59, 0x03, 0x8b, 0xd6, 0x10, 0x5c, 0x93, 0x85, 0x69, - 0xe0, 0xa6, 0xde, 0xb5, 0x7c, 0xed, 0x8e, 0x6e, 0x75, 0x31, 0x4d, 0x98, 0x9c, 0x5a, 0xe0, 0xc2, - 0x4f, 0x11, 0x19, 0xba, 0x00, 0x79, 0x96, 0x95, 0xa6, 0xdd, 0xc0, 0xaf, 0xd0, 0xea, 0x93, 0x56, - 0x59, 0xa2, 0x6e, 0x11, 0x09, 0xb9, 0xfd, 0x2d, 0xcf, 0xb1, 0xc5, 0xd2, 0xd2, 0x5b, 0x10, 0x01, - 0xbd, 0xfd, 0x95, 0xfe, 0xc2, 0xf7, 0xe8, 0xf0, 0xc7, 0xeb, 0xcf, 0xc5, 0xf9, 0x6f, 0x25, 0x20, - 0x45, 0xf7, 0xdb, 0x24, 0xe4, 0x0f, 0x5e, 0xda, 0xaf, 0x6a, 0x1b, 0x7b, 0x87, 0x6b, 0xdb, 0x55, - 0x59, 0x42, 0x45, 0x00, 0x2a, 0x78, 0x61, 0x7b, 0xaf, 0x72, 0x20, 0x27, 0x82, 0xeb, 0xad, 0xdd, - 0x83, 0xcb, 0x2b, 0x72, 0x32, 0x00, 0x1c, 0x32, 0x41, 0x2a, 0x6a, 0xb0, 0xbc, 0x24, 0xa7, 0x91, - 0x0c, 0x05, 0x46, 0xb0, 0xf5, 0x62, 0x75, 0xe3, 0xf2, 0x8a, 0x9c, 0xe9, 0x95, 0x2c, 0x2f, 0xc9, - 0xe3, 0x68, 0x02, 0x72, 0x54, 0xb2, 0xb6, 0xb7, 0xb7, 0x2d, 0x67, 0x03, 0xce, 0xda, 0x81, 0xba, - 0xb5, 0xbb, 0x29, 0xe7, 0x02, 0xce, 0x4d, 0x75, 0xef, 0x70, 0x5f, 0x86, 0x80, 0x61, 0xa7, 0x5a, - 0xab, 0x55, 0x36, 0xab, 0x72, 0x3e, 0xb0, 0x58, 0x7b, 0xe9, 0xa0, 0x5a, 0x93, 0x0b, 0x3d, 0x6e, - 0x2d, 0x2f, 0xc9, 0x13, 0xc1, 0x2d, 0xaa, 0xbb, 0x87, 0x3b, 0x72, 0x11, 0x4d, 0xc1, 0x04, 0xbb, - 0x85, 0x70, 0x62, 0xb2, 0x4f, 0x74, 0x79, 0x45, 0x96, 0x43, 0x47, 0x18, 0xcb, 0x54, 0x8f, 0xe0, - 0xf2, 0x8a, 0x8c, 0xe6, 0xd7, 0x21, 0x4d, 0xb3, 0x0b, 0x21, 0x28, 0x6e, 0x57, 0xd6, 0xaa, 0xdb, - 0xda, 0xde, 0xfe, 0xc1, 0xd6, 0xde, 0x6e, 0x65, 0x5b, 0x96, 0x42, 0x99, 0x5a, 0xfd, 0xe4, 0xe1, - 0x96, 0x5a, 0xdd, 0x90, 0x13, 0x51, 0xd9, 0x7e, 0xb5, 0x72, 0x50, 0xdd, 0x90, 0x93, 0xf3, 0x06, - 0xcc, 0x0c, 0xab, 0x33, 0x43, 0x77, 0x46, 0x64, 0x89, 0x13, 0xa7, 0x2c, 0x31, 0xe5, 0x1a, 0x58, - 0xe2, 0xaf, 0x4a, 0x30, 0x3d, 0xa4, 0xd6, 0x0e, 0xbd, 0xc9, 0xf3, 0x90, 0x66, 0x29, 0xca, 0xba, - 0xcf, 0x93, 0x43, 0x8b, 0x36, 0x4d, 0xd8, 0x81, 0x0e, 0x44, 0x71, 0xd1, 0x0e, 0x9c, 0x3c, 0xa5, - 0x03, 0x13, 0x8a, 0x01, 0x27, 0x5f, 0x93, 0x40, 0x39, 0x8d, 0x3b, 0xa6, 0x50, 0x24, 0x7a, 0x0a, - 0xc5, 0xf5, 0x7e, 0x07, 0x2e, 0x9e, 0xfe, 0x0c, 0x03, 0x5e, 0xbc, 0x2d, 0xc1, 0xb9, 0xe1, 0x83, - 0xca, 0x50, 0x1f, 0x3e, 0x01, 0x99, 0x36, 0xf6, 0x8f, 0x1c, 0xd1, 0xac, 0x3f, 0x36, 0xa4, 0x05, - 0x10, 0x75, 0x7f, 0xac, 0x38, 0x2a, 0xda, 0x43, 0x92, 0xa7, 0x4d, 0x1b, 0xcc, 0x9b, 0x01, 0x4f, - 0x3f, 0x9f, 0x80, 0x87, 0x86, 0x92, 0x0f, 0x75, 0xf4, 0x51, 0x00, 0xd3, 0xee, 0x74, 0x7d, 0xd6, - 0x90, 0x59, 0x7d, 0xca, 0x51, 0x09, 0xdd, 0xfb, 0xa4, 0xf6, 0x74, 0xfd, 0x40, 0x9f, 0xa4, 0x7a, - 0x60, 0x22, 0x6a, 0x70, 0x35, 0x74, 0x34, 0x45, 0x1d, 0x2d, 0x9d, 0xf2, 0xa4, 0x03, 0xbd, 0xee, - 0x59, 0x90, 0x0d, 0xcb, 0xc4, 0xb6, 0xaf, 0x79, 0xbe, 0x8b, 0xf5, 0xb6, 0x69, 0xb7, 0x68, 0x01, - 0xce, 0x96, 0xd3, 0x4d, 0xdd, 0xf2, 0xb0, 0x3a, 0xc9, 0xd4, 0x35, 0xa1, 0x25, 0x08, 0xda, 0x65, - 0xdc, 0x08, 0x22, 0xd3, 0x83, 0x60, 0xea, 0x00, 0x31, 0xff, 0x85, 0x71, 0xc8, 0x47, 0xc6, 0x3a, - 0x74, 0x11, 0x0a, 0xb7, 0xf4, 0x3b, 0xba, 0x26, 0x46, 0x75, 0x16, 0x89, 0x3c, 0x91, 0xed, 0xf3, - 0x71, 0xfd, 0x59, 0x98, 0xa1, 0x26, 0x4e, 0xd7, 0xc7, 0xae, 0x66, 0x58, 0xba, 0xe7, 0xd1, 0xa0, - 0x65, 0xa9, 0x29, 0x22, 0xba, 0x3d, 0xa2, 0x5a, 0x17, 0x1a, 0xb4, 0x0a, 0xd3, 0x14, 0xd1, 0xee, - 0x5a, 0xbe, 0xd9, 0xb1, 0xb0, 0x46, 0x5e, 0x1e, 0x3c, 0x5a, 0x88, 0x03, 0xcf, 0xa6, 0x88, 0xc5, - 0x0e, 0x37, 0x20, 0x1e, 0x79, 0x68, 0x13, 0x1e, 0xa5, 0xb0, 0x16, 0xb6, 0xb1, 0xab, 0xfb, 0x58, - 0xc3, 0xbf, 0xd0, 0xd5, 0x2d, 0x4f, 0xd3, 0xed, 0x86, 0x76, 0xa4, 0x7b, 0x47, 0xca, 0x4c, 0x94, - 0xe0, 0x3c, 0xb1, 0xdd, 0xe4, 0xa6, 0x55, 0x6a, 0x59, 0xb1, 0x1b, 0x37, 0x74, 0xef, 0x08, 0x95, - 0xe1, 0x1c, 0x25, 0xf2, 0x7c, 0xd7, 0xb4, 0x5b, 0x9a, 0x71, 0x84, 0x8d, 0xdb, 0x5a, 0xd7, 0x6f, - 0x5e, 0x55, 0x1e, 0x89, 0x32, 0x50, 0x27, 0x6b, 0xd4, 0x66, 0x9d, 0x98, 0x1c, 0xfa, 0xcd, 0xab, - 0xa8, 0x06, 0x05, 0xb2, 0x1e, 0x6d, 0xf3, 0x55, 0xac, 0x35, 0x1d, 0x97, 0x36, 0x97, 0xe2, 0x90, - 0xcd, 0x1d, 0x09, 0xe2, 0xe2, 0x1e, 0x07, 0xec, 0x38, 0x0d, 0x5c, 0x4e, 0xd7, 0xf6, 0xab, 0xd5, - 0x0d, 0x35, 0x2f, 0x58, 0x5e, 0x70, 0x5c, 0x92, 0x53, 0x2d, 0x27, 0x88, 0x71, 0x9e, 0xe5, 0x54, - 0xcb, 0x11, 0x11, 0x5e, 0x85, 0x69, 0xc3, 0x60, 0x8f, 0x6d, 0x1a, 0x1a, 0x9f, 0xf2, 0x3d, 0x45, - 0xee, 0x89, 0x97, 0x61, 0x6c, 0x32, 0x03, 0x9e, 0xe6, 0x1e, 0xba, 0x06, 0x0f, 0x85, 0xf1, 0x8a, - 0x02, 0xa7, 0x06, 0x9e, 0xb2, 0x1f, 0xba, 0x0a, 0xd3, 0x9d, 0xe3, 0x41, 0x20, 0xea, 0xb9, 0x63, - 0xe7, 0xb8, 0x1f, 0xf6, 0x38, 0x7d, 0x73, 0x73, 0xb1, 0xa1, 0xfb, 0xb8, 0xa1, 0x3c, 0x1c, 0xb5, - 0x8e, 0x28, 0xd0, 0x25, 0x90, 0x0d, 0x43, 0xc3, 0xb6, 0x5e, 0xb7, 0xb0, 0xa6, 0xbb, 0xd8, 0xd6, - 0x3d, 0xe5, 0x42, 0xd4, 0xb8, 0x68, 0x18, 0x55, 0xaa, 0xad, 0x50, 0x25, 0x7a, 0x0a, 0xa6, 0x9c, - 0xfa, 0x2d, 0x83, 0x25, 0x97, 0xd6, 0x71, 0x71, 0xd3, 0x7c, 0x45, 0x79, 0x8c, 0x86, 0x69, 0x92, - 0x28, 0x68, 0x6a, 0xed, 0x53, 0x31, 0x7a, 0x12, 0x64, 0xc3, 0x3b, 0xd2, 0xdd, 0x0e, 0xed, 0xee, - 0x5e, 0x47, 0x37, 0xb0, 0xf2, 0x38, 0x33, 0x65, 0xf2, 0x5d, 0x21, 0x46, 0x2f, 0xc2, 0x4c, 0xd7, - 0x36, 0x6d, 0x1f, 0xbb, 0x1d, 0x17, 0x93, 0x21, 0x9d, 0xed, 0x34, 0xe5, 0x5f, 0xc6, 0x4f, 0x19, - 0xb3, 0x0f, 0xa3, 0xd6, 0x6c, 0x75, 0xd5, 0xe9, 0xee, 0xa0, 0x70, 0xbe, 0x0c, 0x85, 0xe8, 0xa2, - 0xa3, 0x1c, 0xb0, 0x65, 0x97, 0x25, 0xd2, 0x43, 0xd7, 0xf7, 0x36, 0x48, 0xf7, 0xfb, 0x4c, 0x55, - 0x4e, 0x90, 0x2e, 0xbc, 0xbd, 0x75, 0x50, 0xd5, 0xd4, 0xc3, 0xdd, 0x83, 0xad, 0x9d, 0xaa, 0x9c, - 0x7c, 0x2a, 0x97, 0xfd, 0xe1, 0xb8, 0x7c, 0xf7, 0xee, 0xdd, 0xbb, 0x89, 0xf9, 0xef, 0x24, 0xa0, - 0xd8, 0x3b, 0xf9, 0xa2, 0x9f, 0x87, 0x87, 0xc5, 0x6b, 0xaa, 0x87, 0x7d, 0xed, 0x65, 0xd3, 0xa5, - 0x79, 0xd8, 0xd6, 0xd9, 0xec, 0x18, 0x84, 0x70, 0x86, 0x5b, 0xd5, 0xb0, 0xff, 0x69, 0xd3, 0x25, - 0x59, 0xd6, 0xd6, 0x7d, 0xb4, 0x0d, 0x17, 0x6c, 0x47, 0xf3, 0x7c, 0xdd, 0x6e, 0xe8, 0x6e, 0x43, - 0x0b, 0x0f, 0x08, 0x34, 0xdd, 0x30, 0xb0, 0xe7, 0x39, 0xac, 0x05, 0x04, 0x2c, 0x1f, 0xb1, 0x9d, - 0x1a, 0x37, 0x0e, 0x6b, 0x63, 0x85, 0x9b, 0xf6, 0x2d, 0x77, 0xf2, 0xb4, 0xe5, 0x7e, 0x04, 0x72, - 0x6d, 0xbd, 0xa3, 0x61, 0xdb, 0x77, 0x8f, 0xe9, 0xbc, 0x96, 0x55, 0xb3, 0x6d, 0xbd, 0x53, 0x25, - 0xd7, 0x3f, 0xbd, 0x35, 0x88, 0xc6, 0xf1, 0xfb, 0x49, 0x28, 0x44, 0x67, 0x36, 0x32, 0x02, 0x1b, - 0xb4, 0x3e, 0x4b, 0x74, 0xfb, 0x7e, 0xf4, 0x81, 0x13, 0xde, 0xe2, 0x3a, 0x29, 0xdc, 0xe5, 0x0c, - 0x9b, 0xa4, 0x54, 0x86, 0x24, 0x4d, 0x93, 0x6c, 0x58, 0xcc, 0xe6, 0xf3, 0xac, 0xca, 0xaf, 0xd0, - 0x26, 0x64, 0x6e, 0x79, 0x94, 0x3b, 0x43, 0xb9, 0x1f, 0x7b, 0x30, 0xf7, 0xcd, 0x1a, 0x25, 0xcf, - 0xdd, 0xac, 0x69, 0xbb, 0x7b, 0xea, 0x4e, 0x65, 0x5b, 0xe5, 0x70, 0x74, 0x1e, 0x52, 0x96, 0xfe, - 0xea, 0x71, 0x6f, 0x89, 0xa7, 0xa2, 0x51, 0x03, 0x7f, 0x1e, 0x52, 0x2f, 0x63, 0xfd, 0x76, 0x6f, - 0x61, 0xa5, 0xa2, 0x9f, 0x62, 0xea, 0x5f, 0x82, 0x34, 0x8d, 0x17, 0x02, 0xe0, 0x11, 0x93, 0xc7, - 0x50, 0x16, 0x52, 0xeb, 0x7b, 0x2a, 0x49, 0x7f, 0x19, 0x0a, 0x4c, 0xaa, 0xed, 0x6f, 0x55, 0xd7, - 0xab, 0x72, 0x62, 0x7e, 0x15, 0x32, 0x2c, 0x08, 0x64, 0x6b, 0x04, 0x61, 0x90, 0xc7, 0xf8, 0x25, - 0xe7, 0x90, 0x84, 0xf6, 0x70, 0x67, 0xad, 0xaa, 0xca, 0x89, 0xe8, 0xf2, 0x7a, 0x50, 0x88, 0x8e, - 0x6b, 0x3f, 0x9b, 0x9c, 0xfa, 0x5b, 0x09, 0xf2, 0x91, 0xf1, 0x8b, 0x34, 0x7e, 0xdd, 0xb2, 0x9c, - 0x97, 0x35, 0xdd, 0x32, 0x75, 0x8f, 0x27, 0x05, 0x50, 0x51, 0x85, 0x48, 0x46, 0x5d, 0xb4, 0x9f, - 0x89, 0xf3, 0x6f, 0x4a, 0x20, 0xf7, 0x8f, 0x6e, 0x7d, 0x0e, 0x4a, 0x1f, 0xaa, 0x83, 0x6f, 0x48, - 0x50, 0xec, 0x9d, 0xd7, 0xfa, 0xdc, 0xbb, 0xf8, 0xa1, 0xba, 0xf7, 0x65, 0x09, 0x26, 0x7a, 0xa6, - 0xb4, 0xff, 0x57, 0xde, 0xbd, 0x9e, 0x84, 0xe9, 0x21, 0x38, 0x54, 0xe1, 0xe3, 0x2c, 0x9b, 0xb0, - 0x9f, 0x19, 0xe5, 0x5e, 0x8b, 0xa4, 0x5b, 0xee, 0xeb, 0xae, 0xcf, 0xa7, 0xdf, 0x27, 0x41, 0x36, - 0x1b, 0xd8, 0xf6, 0xcd, 0xa6, 0x89, 0x5d, 0xfe, 0x0a, 0xce, 0x66, 0xdc, 0xc9, 0x50, 0xce, 0xde, - 0xc2, 0x7f, 0x0e, 0x50, 0xc7, 0xf1, 0x4c, 0xdf, 0xbc, 0x83, 0x35, 0xd3, 0x16, 0xef, 0xeb, 0x64, - 0xe6, 0x4d, 0xa9, 0xb2, 0xd0, 0x6c, 0xd9, 0x7e, 0x60, 0x6d, 0xe3, 0x96, 0xde, 0x67, 0x4d, 0x6a, - 0x5f, 0x52, 0x95, 0x85, 0x26, 0xb0, 0xbe, 0x08, 0x85, 0x86, 0xd3, 0x25, 0xe3, 0x03, 0xb3, 0x23, - 0xa5, 0x56, 0x52, 0xf3, 0x4c, 0x16, 0x98, 0xf0, 0xf9, 0x2e, 0x3c, 0x28, 0x28, 0xa8, 0x79, 0x26, - 0x63, 0x26, 0x4f, 0xc0, 0xa4, 0xde, 0x6a, 0xb9, 0x84, 0x5c, 0x10, 0xb1, 0xa1, 0xb5, 0x18, 0x88, - 0xa9, 0xe1, 0xec, 0x4d, 0xc8, 0x8a, 0x38, 0x90, 0x6e, 0x46, 0x22, 0xa1, 0x75, 0xd8, 0x71, 0x4d, - 0x62, 0x21, 0xa7, 0x66, 0x6d, 0xa1, 0xbc, 0x08, 0x05, 0xd3, 0xd3, 0xc2, 0x73, 0xc3, 0xc4, 0x5c, - 0x62, 0x21, 0xab, 0xe6, 0x4d, 0x2f, 0x38, 0x28, 0x9a, 0x7f, 0x3b, 0x01, 0xc5, 0xde, 0x73, 0x4f, - 0xb4, 0x01, 0x59, 0xcb, 0x31, 0x74, 0x9a, 0x08, 0xec, 0xd0, 0x7d, 0x21, 0xe6, 0xa8, 0x74, 0x71, - 0x9b, 0xdb, 0xab, 0x01, 0x72, 0xf6, 0x1f, 0x25, 0xc8, 0x0a, 0x31, 0x3a, 0x07, 0xa9, 0x8e, 0xee, - 0x1f, 0x51, 0xba, 0xf4, 0x5a, 0x42, 0x96, 0x54, 0x7a, 0x4d, 0xe4, 0x5e, 0x47, 0xb7, 0x69, 0x0a, - 0x70, 0x39, 0xb9, 0x26, 0xeb, 0x6a, 0x61, 0xbd, 0x41, 0xc7, 0x61, 0xa7, 0xdd, 0xc6, 0xb6, 0xef, - 0x89, 0x75, 0xe5, 0xf2, 0x75, 0x2e, 0x46, 0x4f, 0xc3, 0x94, 0xef, 0xea, 0xa6, 0xd5, 0x63, 0x9b, - 0xa2, 0xb6, 0xb2, 0x50, 0x04, 0xc6, 0x65, 0x38, 0x2f, 0x78, 0x1b, 0xd8, 0xd7, 0x8d, 0x23, 0xdc, - 0x08, 0x41, 0x19, 0x7a, 0xa8, 0xf6, 0x30, 0x37, 0xd8, 0xe0, 0x7a, 0x81, 0x9d, 0xff, 0x9e, 0x04, - 0x53, 0x62, 0x80, 0x6f, 0x04, 0xc1, 0xda, 0x01, 0xd0, 0x6d, 0xdb, 0xf1, 0xa3, 0xe1, 0x1a, 0x4c, - 0xe5, 0x01, 0xdc, 0x62, 0x25, 0x00, 0xa9, 0x11, 0x82, 0xd9, 0x36, 0x40, 0xa8, 0x39, 0x35, 0x6c, - 0x17, 0x20, 0xcf, 0x0f, 0xb5, 0xe9, 0x2f, 0x23, 0xec, 0xad, 0x0f, 0x98, 0x88, 0x4c, 0xfa, 0x68, - 0x06, 0xd2, 0x75, 0xdc, 0x32, 0x6d, 0x7e, 0xd4, 0xc6, 0x2e, 0xc4, 0x01, 0x5e, 0x2a, 0x38, 0xc0, - 0x5b, 0xfb, 0x2c, 0x4c, 0x1b, 0x4e, 0xbb, 0xdf, 0xdd, 0x35, 0xb9, 0xef, 0xcd, 0xd3, 0xbb, 0x21, - 0x7d, 0x06, 0xc2, 0xe9, 0xec, 0x2d, 0x49, 0xfa, 0x6a, 0x22, 0xb9, 0xb9, 0xbf, 0xf6, 0xf5, 0xc4, - 0xec, 0x26, 0x83, 0xee, 0x8b, 0x27, 0x55, 0x71, 0xd3, 0xc2, 0x06, 0xf1, 0x1e, 0x7e, 0xf4, 0x31, - 0x78, 0xa6, 0x65, 0xfa, 0x47, 0xdd, 0xfa, 0xa2, 0xe1, 0xb4, 0x2f, 0xb5, 0x9c, 0x96, 0x13, 0xfe, - 0x18, 0x44, 0xae, 0xe8, 0x05, 0xfd, 0x8f, 0xff, 0x20, 0x94, 0x0b, 0xa4, 0xb3, 0xb1, 0xbf, 0x1e, - 0x95, 0x77, 0x61, 0x9a, 0x1b, 0x6b, 0xf4, 0x44, 0x9a, 0xcd, 0xe1, 0xe8, 0x81, 0xa7, 0x12, 0xca, - 0x37, 0xdf, 0xa5, 0x9d, 0x4e, 0x9d, 0xe2, 0x50, 0xa2, 0x63, 0x93, 0x7a, 0x59, 0x85, 0x87, 0x7a, - 0xf8, 0xd8, 0xd6, 0xc4, 0x6e, 0x0c, 0xe3, 0x77, 0x38, 0xe3, 0x74, 0x84, 0xb1, 0xc6, 0xa1, 0xe5, - 0x75, 0x98, 0x38, 0x0b, 0xd7, 0xdf, 0x73, 0xae, 0x02, 0x8e, 0x92, 0x6c, 0xc2, 0x24, 0x25, 0x31, - 0xba, 0x9e, 0xef, 0xb4, 0x69, 0xdd, 0x7b, 0x30, 0xcd, 0x3f, 0xbc, 0xcb, 0xf6, 0x4a, 0x91, 0xc0, - 0xd6, 0x03, 0x54, 0xb9, 0x0c, 0xf4, 0x10, 0xbe, 0x81, 0x0d, 0x2b, 0x86, 0xe1, 0x1d, 0xee, 0x48, - 0x60, 0x5f, 0xfe, 0x14, 0xcc, 0x90, 0xff, 0x69, 0x59, 0x8a, 0x7a, 0x12, 0x7f, 0x06, 0xa3, 0x7c, - 0xef, 0x35, 0xb6, 0x1d, 0xa7, 0x03, 0x82, 0x88, 0x4f, 0x91, 0x55, 0x6c, 0x61, 0xdf, 0xc7, 0xae, - 0xa7, 0xe9, 0xd6, 0x30, 0xf7, 0x22, 0x6f, 0xb0, 0xca, 0x97, 0xde, 0xeb, 0x5d, 0xc5, 0x4d, 0x86, - 0xac, 0x58, 0x56, 0xf9, 0x10, 0x1e, 0x1e, 0x92, 0x15, 0x23, 0x70, 0xbe, 0xce, 0x39, 0x67, 0x06, - 0x32, 0x83, 0xd0, 0xee, 0x83, 0x90, 0x07, 0x6b, 0x39, 0x02, 0xe7, 0x97, 0x39, 0x27, 0xe2, 0x58, - 0xb1, 0xa4, 0x84, 0xf1, 0x26, 0x4c, 0xdd, 0xc1, 0x6e, 0xdd, 0xf1, 0xf8, 0xc1, 0xc1, 0x08, 0x74, - 0x6f, 0x70, 0xba, 0x49, 0x0e, 0xa4, 0xc7, 0x08, 0x84, 0xeb, 0x1a, 0x64, 0x9b, 0xba, 0x81, 0x47, - 0xa0, 0xf8, 0x0a, 0xa7, 0x18, 0x27, 0xf6, 0x04, 0x5a, 0x81, 0x42, 0xcb, 0xe1, 0x9d, 0x29, 0x1e, - 0xfe, 0x26, 0x87, 0xe7, 0x05, 0x86, 0x53, 0x74, 0x9c, 0x4e, 0xd7, 0x22, 0x6d, 0x2b, 0x9e, 0xe2, - 0xf7, 0x04, 0x85, 0xc0, 0x70, 0x8a, 0x33, 0x84, 0xf5, 0x2d, 0x41, 0xe1, 0x45, 0xe2, 0xf9, 0x3c, - 0xe4, 0x1d, 0xdb, 0x3a, 0x76, 0xec, 0x51, 0x9c, 0xf8, 0x7d, 0xce, 0x00, 0x1c, 0x42, 0x08, 0xae, - 0x43, 0x6e, 0xd4, 0x85, 0xf8, 0x83, 0xf7, 0xc4, 0xf6, 0x10, 0x2b, 0xb0, 0x09, 0x93, 0xa2, 0x40, - 0x99, 0x8e, 0x3d, 0x02, 0xc5, 0x1f, 0x72, 0x8a, 0x62, 0x04, 0xc6, 0x1f, 0xc3, 0xc7, 0x9e, 0xdf, - 0xc2, 0xa3, 0x90, 0xbc, 0x2d, 0x1e, 0x83, 0x43, 0x78, 0x28, 0xeb, 0xd8, 0x36, 0x8e, 0x46, 0x63, - 0xf8, 0x9a, 0x08, 0xa5, 0xc0, 0x10, 0x8a, 0x75, 0x98, 0x68, 0xeb, 0xae, 0x77, 0xa4, 0x5b, 0x23, - 0x2d, 0xc7, 0x1f, 0x71, 0x8e, 0x42, 0x00, 0xe2, 0x11, 0xe9, 0xda, 0x67, 0xa1, 0xf9, 0xba, 0x88, - 0x48, 0x04, 0xc6, 0xb7, 0x9e, 0xe7, 0xd3, 0xb3, 0x99, 0xb3, 0xb0, 0xfd, 0xb1, 0xd8, 0x7a, 0x0c, - 0xbb, 0x13, 0x65, 0xbc, 0x0e, 0x39, 0xcf, 0x7c, 0x75, 0x24, 0x9a, 0x3f, 0x11, 0x2b, 0x4d, 0x01, - 0x04, 0xfc, 0x12, 0x9c, 0x1f, 0xda, 0x26, 0x46, 0x20, 0xfb, 0x53, 0x4e, 0x76, 0x6e, 0x48, 0xab, - 0xe0, 0x25, 0xe1, 0xac, 0x94, 0x7f, 0x26, 0x4a, 0x02, 0xee, 0xe3, 0xda, 0x27, 0x93, 0xbd, 0xa7, - 0x37, 0xcf, 0x16, 0xb5, 0x3f, 0x17, 0x51, 0x63, 0xd8, 0x9e, 0xa8, 0x1d, 0xc0, 0x39, 0xce, 0x78, - 0xb6, 0x75, 0xfd, 0x86, 0x28, 0xac, 0x0c, 0x7d, 0xd8, 0xbb, 0xba, 0x9f, 0x85, 0xd9, 0x20, 0x9c, - 0x62, 0x28, 0xf5, 0xb4, 0xb6, 0xde, 0x19, 0x81, 0xf9, 0x9b, 0x9c, 0x59, 0x54, 0xfc, 0x60, 0xaa, - 0xf5, 0x76, 0xf4, 0x0e, 0x21, 0x7f, 0x11, 0x14, 0x41, 0xde, 0xb5, 0x5d, 0x6c, 0x38, 0x2d, 0xdb, - 0x7c, 0x15, 0x37, 0x46, 0xa0, 0xfe, 0x8b, 0xbe, 0xa5, 0x3a, 0x8c, 0xc0, 0x09, 0xf3, 0x16, 0xc8, - 0xc1, 0xac, 0xa2, 0x99, 0xed, 0x8e, 0xe3, 0xfa, 0x31, 0x8c, 0x7f, 0x29, 0x56, 0x2a, 0xc0, 0x6d, - 0x51, 0x58, 0xb9, 0x0a, 0x45, 0x7a, 0x39, 0x6a, 0x4a, 0xfe, 0x15, 0x27, 0x9a, 0x08, 0x51, 0xbc, - 0x70, 0x18, 0x4e, 0xbb, 0xa3, 0xbb, 0xa3, 0xd4, 0xbf, 0xbf, 0x16, 0x85, 0x83, 0x43, 0x78, 0xe1, - 0xf0, 0x8f, 0x3b, 0x98, 0x74, 0xfb, 0x11, 0x18, 0xbe, 0x25, 0x0a, 0x87, 0xc0, 0x70, 0x0a, 0x31, - 0x30, 0x8c, 0x40, 0xf1, 0x37, 0x82, 0x42, 0x60, 0x08, 0xc5, 0x27, 0xc3, 0x46, 0xeb, 0xe2, 0x96, - 0xe9, 0xf9, 0x2e, 0x1b, 0x85, 0x1f, 0x4c, 0xf5, 0xed, 0xf7, 0x7a, 0x87, 0x30, 0x35, 0x02, 0x2d, - 0xdf, 0x84, 0xc9, 0xbe, 0x11, 0x03, 0xc5, 0xfd, 0xa2, 0xaf, 0x7c, 0xee, 0x03, 0x5e, 0x8c, 0x7a, - 0x27, 0x8c, 0xf2, 0x36, 0x59, 0xf7, 0xde, 0x39, 0x20, 0x9e, 0xec, 0xb5, 0x0f, 0x82, 0xa5, 0xef, - 0x19, 0x03, 0xca, 0x2f, 0xc0, 0x44, 0xcf, 0x0c, 0x10, 0x4f, 0xf5, 0x8b, 0x9c, 0xaa, 0x10, 0x1d, - 0x01, 0xca, 0xab, 0x90, 0x22, 0xfd, 0x3c, 0x1e, 0xfe, 0x4b, 0x1c, 0x4e, 0xcd, 0xcb, 0x1f, 0x87, - 0xac, 0xe8, 0xe3, 0xf1, 0xd0, 0x5f, 0xe6, 0xd0, 0x00, 0x42, 0xe0, 0xa2, 0x87, 0xc7, 0xc3, 0x7f, - 0x45, 0xc0, 0x05, 0x84, 0xc0, 0x47, 0x0f, 0xe1, 0xdf, 0x7d, 0x21, 0xc5, 0xeb, 0xb0, 0x88, 0xdd, - 0x75, 0x18, 0xe7, 0xcd, 0x3b, 0x1e, 0xfd, 0x79, 0x7e, 0x73, 0x81, 0x28, 0x5f, 0x81, 0xf4, 0x88, - 0x01, 0xff, 0x55, 0x0e, 0x65, 0xf6, 0xe5, 0x75, 0xc8, 0x47, 0x1a, 0x76, 0x3c, 0xfc, 0xd7, 0x38, - 0x3c, 0x8a, 0x22, 0xae, 0xf3, 0x86, 0x1d, 0x4f, 0xf0, 0xeb, 0xc2, 0x75, 0x8e, 0x20, 0x61, 0x13, - 0xbd, 0x3a, 0x1e, 0xfd, 0x1b, 0x22, 0xea, 0x02, 0x52, 0x7e, 0x1e, 0x72, 0x41, 0xfd, 0x8d, 0xc7, - 0xff, 0x26, 0xc7, 0x87, 0x18, 0x12, 0x81, 0x48, 0xfd, 0x8f, 0xa7, 0xf8, 0x2d, 0x11, 0x81, 0x08, - 0x8a, 0x6c, 0xa3, 0xfe, 0x9e, 0x1e, 0xcf, 0xf4, 0xdb, 0x62, 0x1b, 0xf5, 0xb5, 0x74, 0xb2, 0x9a, - 0xb4, 0x0c, 0xc6, 0x53, 0xfc, 0x8e, 0x58, 0x4d, 0x6a, 0x4f, 0xdc, 0xe8, 0x6f, 0x92, 0xf1, 0x1c, - 0xbf, 0x2b, 0xdc, 0xe8, 0xeb, 0x91, 0xe5, 0x7d, 0x40, 0x83, 0x0d, 0x32, 0x9e, 0xef, 0x8b, 0x9c, - 0x6f, 0x6a, 0xa0, 0x3f, 0x96, 0x3f, 0x0d, 0xe7, 0x86, 0x37, 0xc7, 0x78, 0xd6, 0x2f, 0x7d, 0xd0, - 0xf7, 0x3a, 0x13, 0xed, 0x8d, 0xe5, 0x83, 0xb0, 0xca, 0x46, 0x1b, 0x63, 0x3c, 0xed, 0xeb, 0x1f, - 0xf4, 0x16, 0xda, 0x68, 0x5f, 0x2c, 0x57, 0x00, 0xc2, 0x9e, 0x14, 0xcf, 0xf5, 0x06, 0xe7, 0x8a, - 0x80, 0xc8, 0xd6, 0xe0, 0x2d, 0x29, 0x1e, 0xff, 0x15, 0xb1, 0x35, 0x38, 0x82, 0x6c, 0x0d, 0xd1, - 0x8d, 0xe2, 0xd1, 0x6f, 0x8a, 0xad, 0x21, 0x20, 0xe5, 0xeb, 0x90, 0xb5, 0xbb, 0x96, 0x45, 0x72, - 0x0b, 0x3d, 0xf8, 0x23, 0x1b, 0xe5, 0x5f, 0xef, 0x73, 0xb0, 0x00, 0x94, 0x57, 0x21, 0x8d, 0xdb, - 0x75, 0xdc, 0x88, 0x43, 0xfe, 0xdb, 0x7d, 0x51, 0x4f, 0x88, 0x75, 0xf9, 0x79, 0x00, 0xf6, 0x32, - 0x4d, 0x7f, 0x63, 0x89, 0xc1, 0xfe, 0xfb, 0x7d, 0xfe, 0xfb, 0x7d, 0x08, 0x09, 0x09, 0xd8, 0xd7, - 0x00, 0x0f, 0x26, 0x78, 0xaf, 0x97, 0x80, 0xbe, 0x80, 0x5f, 0x83, 0xf1, 0x5b, 0x9e, 0x63, 0xfb, - 0x7a, 0x2b, 0x0e, 0xfd, 0x1f, 0x1c, 0x2d, 0xec, 0x49, 0xc0, 0xda, 0x8e, 0x8b, 0x7d, 0xbd, 0xe5, - 0xc5, 0x61, 0xff, 0x93, 0x63, 0x03, 0x00, 0x01, 0x1b, 0xba, 0xe7, 0x8f, 0xf2, 0xdc, 0xff, 0x25, - 0xc0, 0x02, 0x40, 0x9c, 0x26, 0xff, 0xdf, 0xc6, 0xc7, 0x71, 0xd8, 0xf7, 0x85, 0xd3, 0xdc, 0xbe, - 0xfc, 0x71, 0xc8, 0x91, 0x7f, 0xd9, 0x37, 0x2d, 0x31, 0xe0, 0xff, 0xe6, 0xe0, 0x10, 0x41, 0xee, - 0xec, 0xf9, 0x0d, 0xdf, 0x8c, 0x0f, 0xf6, 0xff, 0xf0, 0x95, 0x16, 0xf6, 0xe5, 0x0a, 0xe4, 0x3d, - 0xbf, 0xd1, 0xe8, 0xf2, 0x89, 0x26, 0x06, 0xfe, 0xa3, 0xfb, 0xc1, 0x4b, 0x6e, 0x80, 0x59, 0xbb, - 0x38, 0xfc, 0xbc, 0x0e, 0x36, 0x9d, 0x4d, 0x87, 0x9d, 0xd4, 0xc1, 0x5b, 0x69, 0x98, 0x37, 0x9c, - 0x76, 0xdd, 0xf1, 0x2e, 0xb1, 0x82, 0x12, 0x29, 0x46, 0x97, 0x1c, 0x9b, 0xa3, 0x50, 0xd2, 0xb1, - 0xf1, 0xec, 0xd9, 0x8e, 0xe7, 0xe6, 0xcf, 0x43, 0xba, 0xd6, 0xad, 0xd7, 0x8f, 0x91, 0x0c, 0x49, - 0xaf, 0x5b, 0xe7, 0x5f, 0x5f, 0x90, 0x7f, 0xe7, 0xbf, 0x9f, 0x84, 0x7c, 0x4d, 0x6f, 0x77, 0x2c, - 0xbc, 0x67, 0xe3, 0xbd, 0x26, 0x52, 0x20, 0x43, 0x9f, 0xe6, 0x39, 0x6a, 0x24, 0xdd, 0x18, 0x53, - 0xf9, 0x75, 0xa0, 0x59, 0xa2, 0xc7, 0x96, 0x89, 0x40, 0xb3, 0x14, 0x68, 0x96, 0xd9, 0xa9, 0x65, - 0xa0, 0x59, 0x0e, 0x34, 0x2b, 0xf4, 0xec, 0x32, 0x19, 0x68, 0x56, 0x02, 0xcd, 0x2a, 0x3d, 0x9b, - 0x9f, 0x08, 0x34, 0xab, 0x81, 0xe6, 0x32, 0x3d, 0x8d, 0x4f, 0x05, 0x9a, 0xcb, 0x81, 0xe6, 0x0a, - 0x3d, 0x84, 0x9f, 0x0a, 0x34, 0x57, 0x02, 0xcd, 0x55, 0x7a, 0xf0, 0x8e, 0x02, 0xcd, 0xd5, 0x40, - 0x73, 0x8d, 0x7e, 0x61, 0x31, 0x1e, 0x68, 0xae, 0xa1, 0x59, 0x18, 0x67, 0x4f, 0xf6, 0x2c, 0xfd, - 0x61, 0x73, 0xf2, 0xc6, 0x98, 0x2a, 0x04, 0xa1, 0xee, 0x39, 0xfa, 0x15, 0x45, 0x26, 0xd4, 0x3d, - 0x17, 0xea, 0x96, 0xe8, 0xe7, 0xc4, 0x72, 0xa8, 0x5b, 0x0a, 0x75, 0xcb, 0xca, 0x04, 0x49, 0x82, - 0x50, 0xb7, 0x1c, 0xea, 0x56, 0x94, 0x22, 0x89, 0x7f, 0xa8, 0x5b, 0x09, 0x75, 0xab, 0xca, 0xe4, - 0x9c, 0xb4, 0x50, 0x08, 0x75, 0xab, 0xe8, 0x19, 0xc8, 0x7b, 0xdd, 0xba, 0xc6, 0x7f, 0x87, 0xa7, - 0x5f, 0x6b, 0xe4, 0x97, 0x60, 0x91, 0x64, 0x04, 0x5d, 0xd4, 0x1b, 0x63, 0x2a, 0x78, 0xdd, 0x3a, - 0xaf, 0x92, 0x6b, 0x05, 0xa0, 0x87, 0x0a, 0x1a, 0xfd, 0x4c, 0x71, 0x6d, 0xe3, 0x9d, 0x7b, 0xa5, - 0xb1, 0xef, 0xde, 0x2b, 0x8d, 0xfd, 0xd3, 0xbd, 0xd2, 0xd8, 0x0f, 0xee, 0x95, 0xa4, 0xf7, 0xef, - 0x95, 0xa4, 0x1f, 0xdf, 0x2b, 0x49, 0x77, 0x4f, 0x4a, 0xd2, 0xd7, 0x4e, 0x4a, 0xd2, 0x37, 0x4e, - 0x4a, 0xd2, 0xb7, 0x4f, 0x4a, 0xd2, 0x3b, 0x27, 0xa5, 0xb1, 0xef, 0x9e, 0x94, 0xc6, 0x7e, 0x70, - 0x52, 0x92, 0x7e, 0x78, 0x52, 0x1a, 0x7b, 0xff, 0xa4, 0x24, 0xfd, 0xf8, 0xa4, 0x34, 0x76, 0xf7, - 0x9f, 0x4b, 0x52, 0x3d, 0x43, 0xd3, 0x68, 0xf9, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xea, 0x7c, - 0xac, 0xd3, 0x1d, 0x30, 0x00, 0x00, + // 3862 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x82, 0x20, 0x79, 0x17, 0x2b, 0xc7, 0xdc, 0x5d, 0xc6, + 0x8e, 0x65, 0xbb, 0x96, 0x6c, 0xed, 0x6a, 0x2f, 0xdc, 0x26, 0x1e, 0x8a, 0xe2, 0x6a, 0xb9, 0x95, + 0x44, 0x06, 0x94, 0xe2, 0x75, 0xfa, 0x80, 0x01, 0xc1, 0x9f, 0x14, 0x76, 0x41, 0x80, 0x01, 0xc0, + 0x5d, 0xcb, 0x4f, 0xdb, 0x71, 0x2f, 0x93, 0xe9, 0xf4, 0xde, 0x99, 0x26, 0xae, 0xe3, 0xa6, 0x99, + 0x69, 0x9d, 0x26, 0xbd, 0x24, 0xbd, 0xa4, 0x99, 0x3e, 0xf5, 0x25, 0xad, 0x9f, 0x3a, 0xc9, 0x5b, + 0x1f, 0xf2, 0xe0, 0x55, 0x3c, 0xd3, 0xb4, 0x75, 0x5b, 0xb7, 0xf1, 0x4c, 0x33, 0xe3, 0x97, 0xcc, + 0x7f, 0x03, 0xc0, 0x8b, 0x16, 0x54, 0x66, 0x1c, 0x3f, 0x49, 0x38, 0xe7, 0x7c, 0x1f, 0x0e, 0xce, + 0x7f, 0xfe, 0x73, 0x0e, 0x7e, 0x02, 0x7e, 0xb0, 0x0e, 0xe7, 0x3a, 0xb6, 0xdd, 0x31, 0xd1, 0x6a, + 0xcf, 0xb1, 0x3d, 0xbb, 0xd9, 0x6f, 0xaf, 0xb6, 0x90, 0xab, 0x3b, 0x46, 0xcf, 0xb3, 0x9d, 0x15, + 0x22, 0x93, 0xe6, 0xa8, 0xc5, 0x0a, 0xb7, 0x28, 0xec, 0xc0, 0xfc, 0x75, 0xc3, 0x44, 0x9b, 0xbe, + 0x61, 0x03, 0x79, 0xd2, 0x15, 0x48, 0xb4, 0x0d, 0x13, 0xc9, 0xc2, 0xb9, 0xf8, 0x72, 0x66, 0xed, + 0xf1, 0x95, 0x21, 0xd0, 0xca, 0x20, 0xa2, 0x8e, 0xc5, 0x0a, 0x41, 0x14, 0xde, 0x49, 0xc0, 0xc2, + 0x18, 0xad, 0x24, 0x41, 0xc2, 0xd2, 0xba, 0x98, 0x51, 0x58, 0x4e, 0x2b, 0xe4, 0x7f, 0x49, 0x86, + 0x99, 0x9e, 0xa6, 0xdf, 0xd1, 0x3a, 0x48, 0x8e, 0x11, 0x31, 0xbf, 0x94, 0xf2, 0x00, 0x2d, 0xd4, + 0x43, 0x56, 0x0b, 0x59, 0xfa, 0xa1, 0x1c, 0x3f, 0x17, 0x5f, 0x4e, 0x2b, 0x21, 0x89, 0xf4, 0x0c, + 0xcc, 0xf7, 0xfa, 0x4d, 0xd3, 0xd0, 0xd5, 0x90, 0x19, 0x9c, 0x8b, 0x2f, 0x27, 0x15, 0x91, 0x2a, + 0x36, 0x03, 0xe3, 0x27, 0x61, 0xee, 0x1e, 0xd2, 0xee, 0x84, 0x4d, 0x33, 0xc4, 0x34, 0x87, 0xc5, + 0x21, 0xc3, 0x32, 0x64, 0xbb, 0xc8, 0x75, 0xb5, 0x0e, 0x52, 0xbd, 0xc3, 0x1e, 0x92, 0x13, 0xe4, + 0xe9, 0xcf, 0x8d, 0x3c, 0xfd, 0xf0, 0x93, 0x67, 0x18, 0x6a, 0xef, 0xb0, 0x87, 0xa4, 0x12, 0xa4, + 0x91, 0xd5, 0xef, 0x52, 0x86, 0xe4, 0x31, 0xf1, 0xab, 0x58, 0xfd, 0xee, 0x30, 0x4b, 0x0a, 0xc3, + 0x18, 0xc5, 0x8c, 0x8b, 0x9c, 0xbb, 0x86, 0x8e, 0xe4, 0x69, 0x42, 0xf0, 0xe4, 0x08, 0x41, 0x83, + 0xea, 0x87, 0x39, 0x38, 0x4e, 0x2a, 0x43, 0x1a, 0xbd, 0xec, 0x21, 0xcb, 0x35, 0x6c, 0x4b, 0x9e, + 0x21, 0x24, 0x4f, 0x8c, 0x59, 0x45, 0x64, 0xb6, 0x86, 0x29, 0x02, 0x9c, 0x74, 0x09, 0x66, 0xec, + 0x9e, 0x67, 0xd8, 0x96, 0x2b, 0xa7, 0xce, 0x09, 0xcb, 0x99, 0xb5, 0x8f, 0x8d, 0x4d, 0x84, 0x1a, + 0xb5, 0x51, 0xb8, 0xb1, 0x54, 0x05, 0xd1, 0xb5, 0xfb, 0x8e, 0x8e, 0x54, 0xdd, 0x6e, 0x21, 0xd5, + 0xb0, 0xda, 0xb6, 0x9c, 0x26, 0x04, 0x67, 0x47, 0x1f, 0x84, 0x18, 0x96, 0xed, 0x16, 0xaa, 0x5a, + 0x6d, 0x5b, 0xc9, 0xb9, 0x03, 0xd7, 0xd2, 0x29, 0x98, 0x76, 0x0f, 0x2d, 0x4f, 0x7b, 0x59, 0xce, + 0x92, 0x0c, 0x61, 0x57, 0x85, 0xff, 0x4f, 0xc2, 0xdc, 0x24, 0x29, 0x76, 0x0d, 0x92, 0x6d, 0xfc, + 0x94, 0x72, 0xec, 0x24, 0x31, 0xa0, 0x98, 0xc1, 0x20, 0x4e, 0xff, 0x94, 0x41, 0x2c, 0x41, 0xc6, + 0x42, 0xae, 0x87, 0x5a, 0x34, 0x23, 0xe2, 0x13, 0xe6, 0x14, 0x50, 0xd0, 0x68, 0x4a, 0x25, 0x7e, + 0xaa, 0x94, 0xba, 0x05, 0x73, 0xbe, 0x4b, 0xaa, 0xa3, 0x59, 0x1d, 0x9e, 0x9b, 0xab, 0x51, 0x9e, + 0xac, 0x54, 0x38, 0x4e, 0xc1, 0x30, 0x25, 0x87, 0x06, 0xae, 0xa5, 0x4d, 0x00, 0xdb, 0x42, 0x76, + 0x5b, 0x6d, 0x21, 0xdd, 0x94, 0x53, 0xc7, 0x44, 0xa9, 0x86, 0x4d, 0x46, 0xa2, 0x64, 0x53, 0xa9, + 0x6e, 0x4a, 0x57, 0x83, 0x54, 0x9b, 0x39, 0x26, 0x53, 0x76, 0xe8, 0x26, 0x1b, 0xc9, 0xb6, 0x7d, + 0xc8, 0x39, 0x08, 0xe7, 0x3d, 0x6a, 0xb1, 0x27, 0x4b, 0x13, 0x27, 0x56, 0x22, 0x9f, 0x4c, 0x61, + 0x30, 0xfa, 0x60, 0xb3, 0x4e, 0xf8, 0x52, 0xfa, 0x38, 0xf8, 0x02, 0x95, 0xa4, 0x15, 0x90, 0x2a, + 0x94, 0xe5, 0xc2, 0x5d, 0xad, 0x8b, 0x96, 0xae, 0x40, 0x6e, 0x30, 0x3c, 0xd2, 0x22, 0x24, 0x5d, + 0x4f, 0x73, 0x3c, 0x92, 0x85, 0x49, 0x85, 0x5e, 0x48, 0x22, 0xc4, 0x91, 0xd5, 0x22, 0x55, 0x2e, + 0xa9, 0xe0, 0x7f, 0x97, 0x2e, 0xc3, 0xec, 0xc0, 0xed, 0x27, 0x05, 0x16, 0xbe, 0x30, 0x0d, 0x8b, + 0xe3, 0x72, 0x6e, 0x6c, 0xfa, 0x9f, 0x82, 0x69, 0xab, 0xdf, 0x6d, 0x22, 0x47, 0x8e, 0x13, 0x06, + 0x76, 0x25, 0x95, 0x20, 0x69, 0x6a, 0x4d, 0x64, 0xca, 0x89, 0x73, 0xc2, 0x72, 0x6e, 0xed, 0x99, + 0x89, 0xb2, 0x7a, 0x65, 0x1b, 0x43, 0x14, 0x8a, 0x94, 0x3e, 0x05, 0x09, 0x56, 0xe2, 0x30, 0xc3, + 0xd3, 0x93, 0x31, 0xe0, 0x5c, 0x54, 0x08, 0x4e, 0x7a, 0x14, 0xd2, 0xf8, 0x2f, 0x8d, 0xed, 0x34, + 0xf1, 0x39, 0x85, 0x05, 0x38, 0xae, 0xd2, 0x12, 0xa4, 0x48, 0x9a, 0xb5, 0x10, 0x6f, 0x0d, 0xfe, + 0x35, 0x5e, 0x98, 0x16, 0x6a, 0x6b, 0x7d, 0xd3, 0x53, 0xef, 0x6a, 0x66, 0x1f, 0x91, 0x84, 0x49, + 0x2b, 0x59, 0x26, 0xfc, 0x0c, 0x96, 0x49, 0x67, 0x21, 0x43, 0xb3, 0xd2, 0xb0, 0x5a, 0xe8, 0x65, + 0x52, 0x7d, 0x92, 0x0a, 0x4d, 0xd4, 0x2a, 0x96, 0xe0, 0xdb, 0xdf, 0x76, 0x6d, 0x8b, 0x2f, 0x2d, + 0xb9, 0x05, 0x16, 0x90, 0xdb, 0x5f, 0x1e, 0x2e, 0x7c, 0x8f, 0x8d, 0x7f, 0xbc, 0xe1, 0x5c, 0x2c, + 0x7c, 0x2b, 0x06, 0x09, 0xb2, 0xdf, 0xe6, 0x20, 0xb3, 0xf7, 0x52, 0xbd, 0xa2, 0x6e, 0xd6, 0xf6, + 0x37, 0xb6, 0x2b, 0xa2, 0x20, 0xe5, 0x00, 0x88, 0xe0, 0xfa, 0x76, 0xad, 0xb4, 0x27, 0xc6, 0xfc, + 0xeb, 0xea, 0xee, 0xde, 0xa5, 0x8b, 0x62, 0xdc, 0x07, 0xec, 0x53, 0x41, 0x22, 0x6c, 0x70, 0x61, + 0x4d, 0x4c, 0x4a, 0x22, 0x64, 0x29, 0x41, 0xf5, 0x56, 0x65, 0xf3, 0xd2, 0x45, 0x71, 0x7a, 0x50, + 0x72, 0x61, 0x4d, 0x9c, 0x91, 0x66, 0x21, 0x4d, 0x24, 0x1b, 0xb5, 0xda, 0xb6, 0x98, 0xf2, 0x39, + 0x1b, 0x7b, 0x4a, 0x75, 0x77, 0x4b, 0x4c, 0xfb, 0x9c, 0x5b, 0x4a, 0x6d, 0xbf, 0x2e, 0x82, 0xcf, + 0xb0, 0x53, 0x69, 0x34, 0x4a, 0x5b, 0x15, 0x31, 0xe3, 0x5b, 0x6c, 0xbc, 0xb4, 0x57, 0x69, 0x88, + 0xd9, 0x01, 0xb7, 0x2e, 0xac, 0x89, 0xb3, 0xfe, 0x2d, 0x2a, 0xbb, 0xfb, 0x3b, 0x62, 0x4e, 0x9a, + 0x87, 0x59, 0x7a, 0x0b, 0xee, 0xc4, 0xdc, 0x90, 0xe8, 0xd2, 0x45, 0x51, 0x0c, 0x1c, 0xa1, 0x2c, + 0xf3, 0x03, 0x82, 0x4b, 0x17, 0x45, 0xa9, 0x50, 0x86, 0x24, 0xc9, 0x2e, 0x49, 0x82, 0xdc, 0x76, + 0x69, 0xa3, 0xb2, 0xad, 0xd6, 0xea, 0x7b, 0xd5, 0xda, 0x6e, 0x69, 0x5b, 0x14, 0x02, 0x99, 0x52, + 0xf9, 0xf4, 0x7e, 0x55, 0xa9, 0x6c, 0x8a, 0xb1, 0xb0, 0xac, 0x5e, 0x29, 0xed, 0x55, 0x36, 0xc5, + 0x78, 0x41, 0x87, 0xc5, 0x71, 0x75, 0x66, 0xec, 0xce, 0x08, 0x2d, 0x71, 0xec, 0x98, 0x25, 0x26, + 0x5c, 0x23, 0x4b, 0xfc, 0x15, 0x01, 0x16, 0xc6, 0xd4, 0xda, 0xb1, 0x37, 0x79, 0x01, 0x92, 0x34, + 0x45, 0x69, 0xf7, 0x79, 0x6a, 0x6c, 0xd1, 0x26, 0x09, 0x3b, 0xd2, 0x81, 0x08, 0x2e, 0xdc, 0x81, + 0xe3, 0xc7, 0x74, 0x60, 0x4c, 0x31, 0xe2, 0xe4, 0xab, 0x02, 0xc8, 0xc7, 0x71, 0x47, 0x14, 0x8a, + 0xd8, 0x40, 0xa1, 0xb8, 0x36, 0xec, 0xc0, 0xf9, 0xe3, 0x9f, 0x61, 0xc4, 0x8b, 0x37, 0x05, 0x38, + 0x35, 0x7e, 0x50, 0x19, 0xeb, 0xc3, 0xa7, 0x60, 0xba, 0x8b, 0xbc, 0x03, 0x9b, 0x37, 0xeb, 0x4f, + 0x8c, 0x69, 0x01, 0x58, 0x3d, 0x1c, 0x2b, 0x86, 0x0a, 0xf7, 0x90, 0xf8, 0x71, 0xd3, 0x06, 0xf5, + 0x66, 0xc4, 0xd3, 0xcf, 0xc7, 0xe0, 0x91, 0xb1, 0xe4, 0x63, 0x1d, 0x7d, 0x0c, 0xc0, 0xb0, 0x7a, + 0x7d, 0x8f, 0x36, 0x64, 0x5a, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0xae, 0x3d, 0x7d, 0xcf, 0xd7, + 0xc7, 0x89, 0x1e, 0xa8, 0x88, 0x18, 0x5c, 0x09, 0x1c, 0x4d, 0x10, 0x47, 0xf3, 0xc7, 0x3c, 0xe9, + 0x48, 0xaf, 0x7b, 0x0e, 0x44, 0xdd, 0x34, 0x90, 0xe5, 0xa9, 0xae, 0xe7, 0x20, 0xad, 0x6b, 0x58, + 0x1d, 0x52, 0x80, 0x53, 0xc5, 0x64, 0x5b, 0x33, 0x5d, 0xa4, 0xcc, 0x51, 0x75, 0x83, 0x6b, 0x31, + 0x82, 0x74, 0x19, 0x27, 0x84, 0x98, 0x1e, 0x40, 0x50, 0xb5, 0x8f, 0x28, 0x7c, 0x7d, 0x06, 0x32, + 0xa1, 0xb1, 0x4e, 0x3a, 0x0f, 0xd9, 0xdb, 0xda, 0x5d, 0x4d, 0xe5, 0xa3, 0x3a, 0x8d, 0x44, 0x06, + 0xcb, 0xea, 0x6c, 0x5c, 0x7f, 0x0e, 0x16, 0x89, 0x89, 0xdd, 0xf7, 0x90, 0xa3, 0xea, 0xa6, 0xe6, + 0xba, 0x24, 0x68, 0x29, 0x62, 0x2a, 0x61, 0x5d, 0x0d, 0xab, 0xca, 0x5c, 0x23, 0xad, 0xc3, 0x02, + 0x41, 0x74, 0xfb, 0xa6, 0x67, 0xf4, 0x4c, 0xa4, 0xe2, 0x97, 0x07, 0x97, 0x14, 0x62, 0xdf, 0xb3, + 0x79, 0x6c, 0xb1, 0xc3, 0x0c, 0xb0, 0x47, 0xae, 0xb4, 0x09, 0x8f, 0x11, 0x58, 0x07, 0x59, 0xc8, + 0xd1, 0x3c, 0xa4, 0xa2, 0xcf, 0xf5, 0x35, 0xd3, 0x55, 0x35, 0xab, 0xa5, 0x1e, 0x68, 0xee, 0x81, + 0xbc, 0x88, 0x09, 0x36, 0x62, 0xb2, 0xa0, 0x9c, 0xc1, 0x86, 0x5b, 0xcc, 0xae, 0x42, 0xcc, 0x4a, + 0x56, 0xeb, 0x86, 0xe6, 0x1e, 0x48, 0x45, 0x38, 0x45, 0x58, 0x5c, 0xcf, 0x31, 0xac, 0x8e, 0xaa, + 0x1f, 0x20, 0xfd, 0x8e, 0xda, 0xf7, 0xda, 0x57, 0xe4, 0x47, 0xc3, 0xf7, 0x27, 0x1e, 0x36, 0x88, + 0x4d, 0x19, 0x9b, 0xec, 0x7b, 0xed, 0x2b, 0x52, 0x03, 0xb2, 0x78, 0x31, 0xba, 0xc6, 0x2b, 0x48, + 0x6d, 0xdb, 0x0e, 0xe9, 0x2c, 0xb9, 0x31, 0x3b, 0x3b, 0x14, 0xc1, 0x95, 0x1a, 0x03, 0xec, 0xd8, + 0x2d, 0x54, 0x4c, 0x36, 0xea, 0x95, 0xca, 0xa6, 0x92, 0xe1, 0x2c, 0xd7, 0x6d, 0x07, 0x27, 0x54, + 0xc7, 0xf6, 0x03, 0x9c, 0xa1, 0x09, 0xd5, 0xb1, 0x79, 0x78, 0xd7, 0x61, 0x41, 0xd7, 0xe9, 0x33, + 0x1b, 0xba, 0xca, 0x46, 0x7c, 0x57, 0x16, 0x07, 0x82, 0xa5, 0xeb, 0x5b, 0xd4, 0x80, 0xe5, 0xb8, + 0x2b, 0x5d, 0x85, 0x47, 0x82, 0x60, 0x85, 0x81, 0xf3, 0x23, 0x4f, 0x39, 0x0c, 0x5d, 0x87, 0x85, + 0xde, 0xe1, 0x28, 0x50, 0x1a, 0xb8, 0x63, 0xef, 0x70, 0x18, 0xf6, 0x04, 0x79, 0x6d, 0x73, 0x90, + 0xae, 0x79, 0xa8, 0x25, 0x9f, 0x0e, 0x5b, 0x87, 0x14, 0xd2, 0x2a, 0x88, 0xba, 0xae, 0x22, 0x4b, + 0x6b, 0x9a, 0x48, 0xd5, 0x1c, 0x64, 0x69, 0xae, 0x7c, 0x36, 0x6c, 0x9c, 0xd3, 0xf5, 0x0a, 0xd1, + 0x96, 0x88, 0x52, 0x7a, 0x1a, 0xe6, 0xed, 0xe6, 0x6d, 0x9d, 0x66, 0x96, 0xda, 0x73, 0x50, 0xdb, + 0x78, 0x59, 0x7e, 0x9c, 0x84, 0x69, 0x0e, 0x2b, 0x48, 0x5e, 0xd5, 0x89, 0x58, 0x7a, 0x0a, 0x44, + 0xdd, 0x3d, 0xd0, 0x9c, 0x1e, 0x69, 0xed, 0x6e, 0x4f, 0xd3, 0x91, 0xfc, 0x04, 0x35, 0xa5, 0xf2, + 0x5d, 0x2e, 0xc6, 0x99, 0xed, 0xde, 0x33, 0xda, 0x1e, 0x67, 0x7c, 0x92, 0x66, 0x36, 0x91, 0x31, + 0xb6, 0x5b, 0xb0, 0xd8, 0xb7, 0x0c, 0xcb, 0x43, 0x4e, 0xcf, 0x41, 0x78, 0x88, 0xa7, 0x3b, 0x51, + 0xfe, 0xb7, 0x99, 0x63, 0xc6, 0xf0, 0xfd, 0xb0, 0x35, 0x4d, 0x00, 0x65, 0xa1, 0x3f, 0x2a, 0x2c, + 0x14, 0x21, 0x1b, 0xce, 0x0b, 0x29, 0x0d, 0x34, 0x33, 0x44, 0x01, 0xf7, 0xd8, 0x72, 0x6d, 0x13, + 0x77, 0xc7, 0xcf, 0x56, 0xc4, 0x18, 0xee, 0xd2, 0xdb, 0xd5, 0xbd, 0x8a, 0xaa, 0xec, 0xef, 0xee, + 0x55, 0x77, 0x2a, 0x62, 0xfc, 0xe9, 0x74, 0xea, 0x87, 0x33, 0xe2, 0xfd, 0xfb, 0xf7, 0xef, 0xc7, + 0x0a, 0xdf, 0x89, 0x41, 0x6e, 0x70, 0x32, 0x96, 0x7e, 0x1e, 0x4e, 0xf3, 0xd7, 0x58, 0x17, 0x79, + 0xea, 0x3d, 0xc3, 0x21, 0xa9, 0xda, 0xd5, 0xe8, 0x6c, 0xe9, 0x47, 0x79, 0x91, 0x59, 0x35, 0x90, + 0xf7, 0xa2, 0xe1, 0xe0, 0x44, 0xec, 0x6a, 0x9e, 0xb4, 0x0d, 0x67, 0x2d, 0x5b, 0x75, 0x3d, 0xcd, + 0x6a, 0x69, 0x4e, 0x4b, 0x0d, 0x0e, 0x10, 0x54, 0x4d, 0xd7, 0x91, 0xeb, 0xda, 0xb4, 0x45, 0xf8, + 0x2c, 0x1f, 0xb3, 0xec, 0x06, 0x33, 0x0e, 0x6a, 0x67, 0x89, 0x99, 0x0e, 0x65, 0x44, 0xfc, 0xb8, + 0x8c, 0x78, 0x14, 0xd2, 0x5d, 0xad, 0xa7, 0x22, 0xcb, 0x73, 0x0e, 0xc9, 0x3c, 0x97, 0x52, 0x52, + 0x5d, 0xad, 0x57, 0xc1, 0xd7, 0x1f, 0xde, 0x1a, 0x84, 0xe3, 0xf8, 0xfd, 0x38, 0x64, 0xc3, 0x33, + 0x1d, 0x1e, 0x91, 0x75, 0x52, 0xbf, 0x05, 0xb2, 0xc3, 0x3f, 0xfe, 0xd0, 0x09, 0x70, 0xa5, 0x8c, + 0x0b, 0x7b, 0x71, 0x9a, 0x4e, 0x5a, 0x0a, 0x45, 0xe2, 0xa6, 0x8a, 0xf7, 0x34, 0xa2, 0xf3, 0x7b, + 0x4a, 0x61, 0x57, 0xd2, 0x16, 0x4c, 0xdf, 0x76, 0x09, 0xf7, 0x34, 0xe1, 0x7e, 0xfc, 0xe1, 0xdc, + 0x37, 0x1b, 0x84, 0x3c, 0x7d, 0xb3, 0xa1, 0xee, 0xd6, 0x94, 0x9d, 0xd2, 0xb6, 0xc2, 0xe0, 0xd2, + 0x19, 0x48, 0x98, 0xda, 0x2b, 0x87, 0x83, 0x2d, 0x80, 0x88, 0x26, 0x0d, 0xfc, 0x19, 0x48, 0xdc, + 0x43, 0xda, 0x9d, 0xc1, 0xc2, 0x4b, 0x44, 0x1f, 0x62, 0xea, 0xaf, 0x42, 0x92, 0xc4, 0x4b, 0x02, + 0x60, 0x11, 0x13, 0xa7, 0xa4, 0x14, 0x24, 0xca, 0x35, 0x05, 0xa7, 0xbf, 0x08, 0x59, 0x2a, 0x55, + 0xeb, 0xd5, 0x4a, 0xb9, 0x22, 0xc6, 0x0a, 0xeb, 0x30, 0x4d, 0x83, 0x80, 0xb7, 0x86, 0x1f, 0x06, + 0x71, 0x8a, 0x5d, 0x32, 0x0e, 0x81, 0x6b, 0xf7, 0x77, 0x36, 0x2a, 0x8a, 0x18, 0x0b, 0x2f, 0xaf, + 0x0b, 0xd9, 0xf0, 0x38, 0xf7, 0xb3, 0xc9, 0xa9, 0x7f, 0x10, 0x20, 0x13, 0x1a, 0xcf, 0xf0, 0x60, + 0xa0, 0x99, 0xa6, 0x7d, 0x4f, 0xd5, 0x4c, 0x43, 0x73, 0x59, 0x52, 0x00, 0x11, 0x95, 0xb0, 0x64, + 0xd2, 0x45, 0xfb, 0x99, 0x38, 0xff, 0x86, 0x00, 0xe2, 0xf0, 0x68, 0x37, 0xe4, 0xa0, 0xf0, 0x91, + 0x3a, 0xf8, 0xba, 0x00, 0xb9, 0xc1, 0x79, 0x6e, 0xc8, 0xbd, 0xf3, 0x1f, 0xa9, 0x7b, 0x6f, 0xc7, + 0x60, 0x76, 0x60, 0x8a, 0x9b, 0xd4, 0xbb, 0xcf, 0xc1, 0xbc, 0xd1, 0x42, 0xdd, 0x9e, 0xed, 0x21, + 0x4b, 0x3f, 0x54, 0x4d, 0x74, 0x17, 0x99, 0x72, 0x81, 0x14, 0x8a, 0xd5, 0x87, 0xcf, 0x89, 0x2b, + 0xd5, 0x00, 0xb7, 0x8d, 0x61, 0xc5, 0x85, 0xea, 0x66, 0x65, 0xa7, 0x5e, 0xdb, 0xab, 0xec, 0x96, + 0x5f, 0x52, 0xf7, 0x77, 0x7f, 0x61, 0xb7, 0xf6, 0xe2, 0xae, 0x22, 0x1a, 0x43, 0x66, 0x1f, 0xe2, + 0x56, 0xaf, 0x83, 0x38, 0xec, 0x94, 0x74, 0x1a, 0xc6, 0xb9, 0x25, 0x4e, 0x49, 0x0b, 0x30, 0xb7, + 0x5b, 0x53, 0x1b, 0xd5, 0xcd, 0x8a, 0x5a, 0xb9, 0x7e, 0xbd, 0x52, 0xde, 0x6b, 0xd0, 0x17, 0x67, + 0xdf, 0x7a, 0x6f, 0x70, 0x53, 0xbf, 0x16, 0x87, 0x85, 0x31, 0x9e, 0x48, 0x25, 0x36, 0xb3, 0xd3, + 0xd7, 0x88, 0x67, 0x27, 0xf1, 0x7e, 0x05, 0x4f, 0x05, 0x75, 0xcd, 0xf1, 0xd8, 0x88, 0xff, 0x14, + 0xe0, 0x28, 0x59, 0x9e, 0xd1, 0x36, 0x90, 0xc3, 0xce, 0x19, 0xe8, 0x20, 0x3f, 0x17, 0xc8, 0xe9, + 0x51, 0xc3, 0xcf, 0x81, 0xd4, 0xb3, 0x5d, 0xc3, 0x33, 0xee, 0x22, 0xd5, 0xb0, 0xf8, 0xa1, 0x04, + 0x1e, 0xec, 0x13, 0x8a, 0xc8, 0x35, 0x55, 0xcb, 0xf3, 0xad, 0x2d, 0xd4, 0xd1, 0x86, 0xac, 0x71, + 0x01, 0x8f, 0x2b, 0x22, 0xd7, 0xf8, 0xd6, 0xe7, 0x21, 0xdb, 0xb2, 0xfb, 0x78, 0x4c, 0xa2, 0x76, + 0xb8, 0x5f, 0x08, 0x4a, 0x86, 0xca, 0x7c, 0x13, 0x36, 0xc7, 0x06, 0xa7, 0x21, 0x59, 0x25, 0x43, + 0x65, 0xd4, 0xe4, 0x49, 0x98, 0xd3, 0x3a, 0x1d, 0x07, 0x93, 0x73, 0x22, 0x3a, 0x99, 0xe7, 0x7c, + 0x31, 0x31, 0x5c, 0xba, 0x09, 0x29, 0x1e, 0x07, 0xdc, 0x92, 0x71, 0x24, 0xd4, 0x1e, 0x3d, 0x93, + 0x8a, 0x2d, 0xa7, 0x95, 0x94, 0xc5, 0x95, 0xe7, 0x21, 0x6b, 0xb8, 0x6a, 0x70, 0x38, 0x1a, 0x3b, + 0x17, 0x5b, 0x4e, 0x29, 0x19, 0xc3, 0xf5, 0x4f, 0xc3, 0x0a, 0x6f, 0xc6, 0x20, 0x37, 0x78, 0xb8, + 0x2b, 0x6d, 0x42, 0xca, 0xb4, 0x75, 0x8d, 0xa4, 0x16, 0xfd, 0x65, 0x61, 0x39, 0xe2, 0x3c, 0x78, + 0x65, 0x9b, 0xd9, 0x2b, 0x3e, 0x72, 0xe9, 0x5f, 0x04, 0x48, 0x71, 0xb1, 0x74, 0x0a, 0x12, 0x3d, + 0xcd, 0x3b, 0x20, 0x74, 0xc9, 0x8d, 0x98, 0x28, 0x28, 0xe4, 0x1a, 0xcb, 0xdd, 0x9e, 0x66, 0x91, + 0x14, 0x60, 0x72, 0x7c, 0x8d, 0xd7, 0xd5, 0x44, 0x5a, 0x8b, 0x8c, 0xfd, 0x76, 0xb7, 0x8b, 0x2c, + 0xcf, 0xe5, 0xeb, 0xca, 0xe4, 0x65, 0x26, 0x96, 0x9e, 0x81, 0x79, 0xcf, 0xd1, 0x0c, 0x73, 0xc0, + 0x36, 0x41, 0x6c, 0x45, 0xae, 0xf0, 0x8d, 0x8b, 0x70, 0x86, 0xf3, 0xb6, 0x90, 0xa7, 0xe9, 0x07, + 0xa8, 0x15, 0x80, 0xa6, 0xc9, 0xc9, 0xe1, 0x69, 0x66, 0xb0, 0xc9, 0xf4, 0x1c, 0x5b, 0xf8, 0x9e, + 0x00, 0xf3, 0xfc, 0x45, 0xa5, 0xe5, 0x07, 0x6b, 0x07, 0x40, 0xb3, 0x2c, 0xdb, 0x0b, 0x87, 0x6b, + 0x34, 0x95, 0x47, 0x70, 0x2b, 0x25, 0x1f, 0xa4, 0x84, 0x08, 0x96, 0xba, 0x00, 0x81, 0xe6, 0xd8, + 0xb0, 0x9d, 0x85, 0x0c, 0x3b, 0xb9, 0x27, 0x3f, 0xff, 0xd0, 0x57, 0x5b, 0xa0, 0x22, 0xfc, 0x46, + 0x23, 0x2d, 0x42, 0xb2, 0x89, 0x3a, 0x86, 0xc5, 0xce, 0x13, 0xe9, 0x05, 0x3f, 0xa5, 0x4c, 0xf8, + 0xa7, 0x94, 0x1b, 0xb7, 0x60, 0x41, 0xb7, 0xbb, 0xc3, 0xee, 0x6e, 0x88, 0x43, 0xaf, 0xd7, 0xee, + 0x0d, 0xe1, 0xb3, 0x10, 0x8c, 0x98, 0x5f, 0x89, 0xc5, 0xb7, 0xea, 0x1b, 0x5f, 0x8b, 0x2d, 0x6d, + 0x51, 0x5c, 0x9d, 0x3f, 0xa6, 0x82, 0xda, 0x26, 0xd2, 0xb1, 0xeb, 0xf0, 0xa3, 0x4f, 0xc0, 0xb3, + 0x1d, 0xc3, 0x3b, 0xe8, 0x37, 0x57, 0x74, 0xbb, 0xbb, 0xda, 0xb1, 0x3b, 0x76, 0xf0, 0x73, 0x17, + 0xbe, 0x22, 0x17, 0xe4, 0x3f, 0xf6, 0x93, 0x57, 0xda, 0x97, 0x2e, 0x45, 0xfe, 0x3e, 0x56, 0xdc, + 0x85, 0x05, 0x66, 0xac, 0x92, 0x33, 0x77, 0xfa, 0x6a, 0x20, 0x3d, 0xf4, 0xdc, 0x45, 0xfe, 0xe6, + 0x3b, 0xa4, 0x57, 0x2b, 0xf3, 0x0c, 0x8a, 0x75, 0xf4, 0x05, 0xa2, 0xa8, 0xc0, 0x23, 0x03, 0x7c, + 0x74, 0x5f, 0x22, 0x27, 0x82, 0xf1, 0x3b, 0x8c, 0x71, 0x21, 0xc4, 0xd8, 0x60, 0xd0, 0x62, 0x19, + 0x66, 0x4f, 0xc2, 0xf5, 0x4f, 0x8c, 0x2b, 0x8b, 0xc2, 0x24, 0x5b, 0x30, 0x47, 0x48, 0xf4, 0xbe, + 0xeb, 0xd9, 0x5d, 0x52, 0xf4, 0x1e, 0x4e, 0xf3, 0xcf, 0xef, 0xd0, 0x8d, 0x92, 0xc3, 0xb0, 0xb2, + 0x8f, 0x2a, 0x16, 0x81, 0xfc, 0xcc, 0xd0, 0x42, 0xba, 0x19, 0xc1, 0xf0, 0x16, 0x73, 0xc4, 0xb7, + 0x2f, 0x7e, 0x06, 0x16, 0xf1, 0xff, 0xa4, 0x26, 0x85, 0x3d, 0x89, 0x3e, 0x65, 0x92, 0xbf, 0xf7, + 0x2a, 0xdd, 0x8b, 0x0b, 0x3e, 0x41, 0xc8, 0xa7, 0xd0, 0x2a, 0x76, 0x90, 0xe7, 0x21, 0xc7, 0x55, + 0x35, 0x73, 0x9c, 0x7b, 0xa1, 0xd7, 0x74, 0xf9, 0x8b, 0xef, 0x0e, 0xae, 0xe2, 0x16, 0x45, 0x96, + 0x4c, 0xb3, 0xb8, 0x0f, 0xa7, 0xc7, 0x64, 0xc5, 0x04, 0x9c, 0xaf, 0x31, 0xce, 0xc5, 0x91, 0xcc, + 0xc0, 0xb4, 0x75, 0xe0, 0x72, 0x7f, 0x2d, 0x27, 0xe0, 0xfc, 0x43, 0xc6, 0x29, 0x31, 0x2c, 0x5f, + 0x52, 0xcc, 0x78, 0x13, 0xe6, 0xef, 0x22, 0xa7, 0x69, 0xbb, 0xec, 0x68, 0x64, 0x02, 0xba, 0xd7, + 0x19, 0xdd, 0x1c, 0x03, 0x92, 0xb3, 0x12, 0xcc, 0x75, 0x15, 0x52, 0x6d, 0x4d, 0x47, 0x13, 0x50, + 0x7c, 0x89, 0x51, 0xcc, 0x60, 0x7b, 0x0c, 0x2d, 0x41, 0xb6, 0x63, 0xb3, 0xb6, 0x14, 0x0d, 0x7f, + 0x83, 0xc1, 0x33, 0x1c, 0xc3, 0x28, 0x7a, 0x76, 0xaf, 0x6f, 0xe2, 0x9e, 0x15, 0x4d, 0xf1, 0x47, + 0x9c, 0x82, 0x63, 0x18, 0xc5, 0x09, 0xc2, 0xfa, 0x65, 0x4e, 0xe1, 0x86, 0xe2, 0xf9, 0x02, 0x64, + 0x6c, 0xcb, 0x3c, 0xb4, 0xad, 0x49, 0x9c, 0xf8, 0x63, 0xc6, 0x00, 0x0c, 0x82, 0x09, 0xae, 0x41, + 0x7a, 0xd2, 0x85, 0xf8, 0x93, 0x77, 0xf9, 0xf6, 0xe0, 0x2b, 0xb0, 0x05, 0x73, 0xbc, 0x40, 0x19, + 0xb6, 0x35, 0x01, 0xc5, 0x9f, 0x32, 0x8a, 0x5c, 0x08, 0xc6, 0x1e, 0xc3, 0x43, 0xae, 0xd7, 0x41, + 0x93, 0x90, 0xbc, 0xc9, 0x1f, 0x83, 0x41, 0x58, 0x28, 0x9b, 0xc8, 0xd2, 0x0f, 0x26, 0x63, 0xf8, + 0x2a, 0x0f, 0x25, 0xc7, 0x60, 0x8a, 0x32, 0xcc, 0x76, 0x35, 0xc7, 0x3d, 0xd0, 0xcc, 0x89, 0x96, + 0xe3, 0xcf, 0x18, 0x47, 0xd6, 0x07, 0xb1, 0x88, 0xf4, 0xad, 0x93, 0xd0, 0x7c, 0x8d, 0x47, 0x24, + 0x04, 0x63, 0x5b, 0xcf, 0xf5, 0xc8, 0x01, 0xd4, 0x49, 0xd8, 0xbe, 0xce, 0xb7, 0x1e, 0xc5, 0xee, + 0x84, 0x19, 0xaf, 0x41, 0xda, 0x35, 0x5e, 0x99, 0x88, 0xe6, 0xcf, 0xf9, 0x4a, 0x13, 0x00, 0x06, + 0xbf, 0x04, 0x67, 0xc6, 0xb6, 0x89, 0x09, 0xc8, 0xfe, 0x82, 0x91, 0x9d, 0x1a, 0xd3, 0x2a, 0x58, + 0x49, 0x38, 0x29, 0xe5, 0x5f, 0xf2, 0x92, 0x80, 0x86, 0xb8, 0xea, 0xf8, 0x45, 0xc1, 0xd5, 0xda, + 0x27, 0x8b, 0xda, 0x5f, 0xf1, 0xa8, 0x51, 0xec, 0x40, 0xd4, 0xf6, 0xe0, 0x14, 0x63, 0x3c, 0xd9, + 0xba, 0x7e, 0x83, 0x17, 0x56, 0x8a, 0xde, 0x1f, 0x5c, 0xdd, 0x5f, 0x84, 0x25, 0x3f, 0x9c, 0x7c, + 0x22, 0x75, 0xd5, 0xae, 0xd6, 0x9b, 0x80, 0xf9, 0x9b, 0x8c, 0x99, 0x57, 0x7c, 0x7f, 0xa4, 0x75, + 0x77, 0xb4, 0x1e, 0x26, 0xbf, 0x05, 0x32, 0x27, 0xef, 0x5b, 0x0e, 0xd2, 0xed, 0x8e, 0x65, 0xbc, + 0x82, 0x5a, 0x13, 0x50, 0xff, 0xf5, 0xd0, 0x52, 0xed, 0x87, 0xe0, 0x98, 0xb9, 0x0a, 0xa2, 0x3f, + 0xab, 0xa8, 0x46, 0xb7, 0x67, 0x3b, 0x5e, 0x04, 0xe3, 0xdf, 0xf0, 0x95, 0xf2, 0x71, 0x55, 0x02, + 0x2b, 0x56, 0x20, 0x47, 0x2e, 0x27, 0x4d, 0xc9, 0xbf, 0x65, 0x44, 0xb3, 0x01, 0x8a, 0x15, 0x0e, + 0xdd, 0xee, 0xf6, 0x34, 0x67, 0x92, 0xfa, 0xf7, 0x77, 0xbc, 0x70, 0x30, 0x08, 0x2b, 0x1c, 0xde, + 0x61, 0x0f, 0xe1, 0x6e, 0x3f, 0x01, 0xc3, 0xb7, 0x78, 0xe1, 0xe0, 0x18, 0x46, 0xc1, 0x07, 0x86, + 0x09, 0x28, 0xfe, 0x9e, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x74, 0xd0, 0x68, 0x1d, 0xd4, 0x31, 0x5c, + 0xcf, 0xa1, 0x73, 0xf0, 0xc3, 0xa9, 0xbe, 0xfd, 0xee, 0xe0, 0x10, 0xa6, 0x84, 0xa0, 0xc5, 0x9b, + 0x30, 0x37, 0x34, 0x62, 0x48, 0x51, 0xdf, 0x2c, 0xc8, 0xbf, 0xf4, 0x3e, 0x2b, 0x46, 0x83, 0x13, + 0x46, 0x71, 0x1b, 0xaf, 0xfb, 0xe0, 0x1c, 0x10, 0x4d, 0xf6, 0xea, 0xfb, 0xfe, 0xd2, 0x0f, 0x8c, + 0x01, 0xc5, 0xeb, 0x30, 0x3b, 0x30, 0x03, 0x44, 0x53, 0xfd, 0x32, 0xa3, 0xca, 0x86, 0x47, 0x80, + 0xe2, 0x3a, 0x24, 0x70, 0x3f, 0x8f, 0x86, 0xff, 0x0a, 0x83, 0x13, 0xf3, 0xe2, 0x27, 0x21, 0xc5, + 0xfb, 0x78, 0x34, 0xf4, 0x57, 0x19, 0xd4, 0x87, 0x60, 0x38, 0xef, 0xe1, 0xd1, 0xf0, 0x5f, 0xe3, + 0x70, 0x0e, 0xc1, 0xf0, 0xc9, 0x43, 0xf8, 0x8f, 0xbf, 0x9e, 0x60, 0x75, 0x98, 0xc7, 0xee, 0x1a, + 0xcc, 0xb0, 0xe6, 0x1d, 0x8d, 0xfe, 0x3c, 0xbb, 0x39, 0x47, 0x14, 0x2f, 0x43, 0x72, 0xc2, 0x80, + 0xff, 0x06, 0x83, 0x52, 0xfb, 0x62, 0x19, 0x32, 0xa1, 0x86, 0x1d, 0x0d, 0xff, 0x4d, 0x06, 0x0f, + 0xa3, 0xb0, 0xeb, 0xac, 0x61, 0x47, 0x13, 0xfc, 0x16, 0x77, 0x9d, 0x21, 0x70, 0xd8, 0x78, 0xaf, + 0x8e, 0x46, 0xff, 0x36, 0x8f, 0x3a, 0x87, 0x14, 0x5f, 0x80, 0xb4, 0x5f, 0x7f, 0xa3, 0xf1, 0xbf, + 0xc3, 0xf0, 0x01, 0x06, 0x47, 0x20, 0x54, 0xff, 0xa3, 0x29, 0x7e, 0x97, 0x47, 0x20, 0x84, 0xc2, + 0xdb, 0x68, 0xb8, 0xa7, 0x47, 0x33, 0xfd, 0x1e, 0xdf, 0x46, 0x43, 0x2d, 0x1d, 0xaf, 0x26, 0x29, + 0x83, 0xd1, 0x14, 0xbf, 0xcf, 0x57, 0x93, 0xd8, 0x63, 0x37, 0x86, 0x9b, 0x64, 0x34, 0xc7, 0x1f, + 0x70, 0x37, 0x86, 0x7a, 0x64, 0xb1, 0x0e, 0xd2, 0x68, 0x83, 0x8c, 0xe6, 0xfb, 0x02, 0xe3, 0x9b, + 0x1f, 0xe9, 0x8f, 0xc5, 0x17, 0xe1, 0xd4, 0xf8, 0xe6, 0x18, 0xcd, 0xfa, 0xc5, 0xf7, 0x87, 0x5e, + 0x67, 0xc2, 0xbd, 0xb1, 0xb8, 0x17, 0x54, 0xd9, 0x70, 0x63, 0x8c, 0xa6, 0x7d, 0xed, 0xfd, 0xc1, + 0x42, 0x1b, 0xee, 0x8b, 0xc5, 0x12, 0x40, 0xd0, 0x93, 0xa2, 0xb9, 0x5e, 0x67, 0x5c, 0x21, 0x10, + 0xde, 0x1a, 0xac, 0x25, 0x45, 0xe3, 0xbf, 0xc4, 0xb7, 0x06, 0x43, 0xe0, 0xad, 0xc1, 0xbb, 0x51, + 0x34, 0xfa, 0x0d, 0xbe, 0x35, 0x38, 0xa4, 0x78, 0x0d, 0x52, 0x56, 0xdf, 0x34, 0x71, 0x6e, 0x49, + 0x0f, 0xff, 0x8c, 0x48, 0xfe, 0xf7, 0x0f, 0x18, 0x98, 0x03, 0x8a, 0xeb, 0x90, 0x44, 0xdd, 0x26, + 0x6a, 0x45, 0x21, 0xff, 0xe3, 0x03, 0x5e, 0x4f, 0xb0, 0x75, 0xf1, 0x05, 0x00, 0xfa, 0x32, 0x4d, + 0x7e, 0x25, 0x8a, 0xc0, 0xfe, 0xe7, 0x07, 0xec, 0x0b, 0x85, 0x00, 0x12, 0x10, 0xd0, 0xef, 0x1d, + 0x1e, 0x4e, 0xf0, 0xee, 0x20, 0x01, 0x79, 0x01, 0xbf, 0x0a, 0x33, 0xb7, 0x5d, 0xdb, 0xf2, 0xb4, + 0x4e, 0x14, 0xfa, 0xbf, 0x18, 0x9a, 0xdb, 0xe3, 0x80, 0x75, 0x6d, 0x07, 0x79, 0x5a, 0xc7, 0x8d, + 0xc2, 0xfe, 0x37, 0xc3, 0xfa, 0x00, 0x0c, 0xd6, 0x35, 0xd7, 0x9b, 0xe4, 0xb9, 0xff, 0x87, 0x83, + 0x39, 0x00, 0x3b, 0x8d, 0xff, 0xbf, 0x83, 0x0e, 0xa3, 0xb0, 0xef, 0x71, 0xa7, 0x99, 0x7d, 0xf1, + 0x93, 0x90, 0xc6, 0xff, 0xd2, 0xaf, 0x76, 0x22, 0xc0, 0xff, 0xcb, 0xc0, 0x01, 0x02, 0xdf, 0xd9, + 0xf5, 0x5a, 0x9e, 0x11, 0x1d, 0xec, 0xff, 0x63, 0x2b, 0xcd, 0xed, 0x8b, 0x25, 0xc8, 0xb8, 0x5e, + 0xab, 0xd5, 0x67, 0x13, 0x4d, 0x04, 0xfc, 0x47, 0x1f, 0xf8, 0x2f, 0xb9, 0x3e, 0x66, 0xe3, 0xfc, + 0xf8, 0xc3, 0x3a, 0xd8, 0xb2, 0xb7, 0x6c, 0x7a, 0x4c, 0x07, 0x5f, 0x4e, 0x42, 0x41, 0xb7, 0xbb, + 0x4d, 0xdb, 0x5d, 0xa5, 0x05, 0x25, 0x54, 0x8c, 0x56, 0x6d, 0x8b, 0xa1, 0xa4, 0xb8, 0x6d, 0xa1, + 0xa5, 0x93, 0x1d, 0xcf, 0x15, 0xce, 0x40, 0xb2, 0xd1, 0x6f, 0x36, 0x0f, 0x25, 0x11, 0xe2, 0x6e, + 0xbf, 0xc9, 0xbe, 0x2f, 0xc1, 0xff, 0x16, 0xbe, 0x1f, 0x87, 0x4c, 0x43, 0xeb, 0xf6, 0x4c, 0x54, + 0xb3, 0x50, 0xad, 0x2d, 0xc9, 0x30, 0x4d, 0x9e, 0xe6, 0x79, 0x62, 0x24, 0xdc, 0x98, 0x52, 0xd8, + 0xb5, 0xaf, 0x59, 0x23, 0x67, 0x96, 0x31, 0x5f, 0xb3, 0xe6, 0x6b, 0x2e, 0xd0, 0x23, 0x4b, 0x5f, + 0x73, 0xc1, 0xd7, 0x5c, 0x24, 0x07, 0x97, 0x71, 0x5f, 0x73, 0xd1, 0xd7, 0xac, 0x93, 0x83, 0xf9, + 0x59, 0x5f, 0xb3, 0xee, 0x6b, 0x2e, 0x91, 0xa3, 0xf8, 0x84, 0xaf, 0xb9, 0xe4, 0x6b, 0x2e, 0x93, + 0x13, 0xf8, 0x79, 0x5f, 0x73, 0xd9, 0xd7, 0x5c, 0x21, 0xa7, 0xee, 0x92, 0xaf, 0xb9, 0xe2, 0x6b, + 0xae, 0x92, 0xcf, 0x48, 0x66, 0x7c, 0xcd, 0x55, 0x69, 0x09, 0x66, 0xe8, 0x93, 0x3d, 0x47, 0x7e, + 0x9a, 0x9d, 0xbb, 0x31, 0xa5, 0x70, 0x41, 0xa0, 0x7b, 0x9e, 0x7c, 0x2a, 0x32, 0x1d, 0xe8, 0x9e, + 0x0f, 0x74, 0x6b, 0xe4, 0x83, 0x69, 0x31, 0xd0, 0xad, 0x05, 0xba, 0x0b, 0xf2, 0x2c, 0x4e, 0x82, + 0x40, 0x77, 0x21, 0xd0, 0x5d, 0x94, 0x73, 0x38, 0xfe, 0x81, 0xee, 0x62, 0xa0, 0x5b, 0x97, 0xe7, + 0xce, 0x09, 0xcb, 0xd9, 0x40, 0xb7, 0x2e, 0x3d, 0x0b, 0x19, 0xb7, 0xdf, 0x54, 0xd9, 0x97, 0x04, + 0xe4, 0x93, 0x94, 0xcc, 0x1a, 0xac, 0xe0, 0x8c, 0x20, 0x8b, 0x7a, 0x63, 0x4a, 0x01, 0xb7, 0xdf, + 0x64, 0x55, 0x72, 0x23, 0x0b, 0xe4, 0x50, 0x41, 0x25, 0x1f, 0x62, 0x6e, 0x6c, 0xbe, 0xf5, 0x20, + 0x3f, 0xf5, 0xdd, 0x07, 0xf9, 0xa9, 0x7f, 0x7d, 0x90, 0x9f, 0x7a, 0xfb, 0x41, 0x5e, 0x78, 0xef, + 0x41, 0x5e, 0xf8, 0xf1, 0x83, 0xbc, 0x70, 0xff, 0x28, 0x2f, 0x7c, 0xf5, 0x28, 0x2f, 0x7c, 0xe3, + 0x28, 0x2f, 0x7c, 0xfb, 0x28, 0x2f, 0xbc, 0x75, 0x94, 0x9f, 0xfa, 0xee, 0x51, 0x7e, 0xea, 0xed, + 0xa3, 0xbc, 0xf0, 0xc3, 0xa3, 0xfc, 0xd4, 0x7b, 0x47, 0x79, 0xe1, 0xc7, 0x47, 0xf9, 0xa9, 0xfb, + 0x3f, 0xc8, 0x0b, 0xcd, 0x69, 0x92, 0x46, 0x17, 0x7e, 0x12, 0x00, 0x00, 0xff, 0xff, 0xb7, 0xf9, + 0x54, 0x78, 0xff, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/both/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/both/theproto3.pb.go index c378569ff..84a32bd4a 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/both/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/both/theproto3.pb.go @@ -273,490 +273,497 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7724 bytes of a gzipped FileDescriptorSet + // 7833 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0xde, 0x34, 0x1a, 0x24, 0xc1, 0x1f, 0x20, 0xd9, 0x6c, 0x8e, 0x28, 0x88, 0x1a, 0x91, 0x33, - 0xd0, 0x68, 0x44, 0xd1, 0x16, 0x87, 0xc3, 0xe1, 0xdc, 0x30, 0x96, 0x14, 0x00, 0x04, 0x47, 0x1c, - 0xf3, 0xe6, 0x26, 0x69, 0x49, 0xab, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x84, 0x04, 0x74, 0x23, 0xe8, - 0x86, 0x24, 0xfa, 0x21, 0xa5, 0x5d, 0x27, 0x1b, 0x6f, 0xb6, 0x72, 0xdd, 0xa4, 0xe2, 0xf5, 0xfa, - 0x22, 0x6f, 0x6a, 0x63, 0xef, 0xe6, 0xe6, 0x75, 0x36, 0xce, 0xd6, 0x56, 0x2a, 0xab, 0x3c, 0x38, - 0x99, 0xbc, 0xa4, 0xbc, 0xc9, 0x4b, 0xca, 0x95, 0x52, 0x59, 0x63, 0x57, 0xc5, 0x49, 0x9c, 0xc4, - 0x9b, 0x75, 0xd5, 0x6e, 0x95, 0xf7, 0x21, 0x75, 0x6e, 0xdd, 0xe7, 0x1c, 0x34, 0xd0, 0xe0, 0x8c, - 0x64, 0xfb, 0xc1, 0x2f, 0x33, 0xe8, 0x73, 0xfe, 0xef, 0xeb, 0xbf, 0xff, 0xdb, 0xf9, 0xfb, 0x74, - 0x03, 0x84, 0x5f, 0x5c, 0x81, 0xf3, 0x47, 0xae, 0x7b, 0xd4, 0x40, 0x97, 0x5b, 0x6d, 0xd7, 0x77, - 0x0f, 0x3a, 0x87, 0x97, 0x6b, 0xc8, 0xab, 0xb6, 0xeb, 0x2d, 0xdf, 0x6d, 0x2f, 0x92, 0x31, 0x73, - 0x82, 0x4a, 0x2c, 0x72, 0x89, 0xdc, 0x26, 0x4c, 0xae, 0xd5, 0x1b, 0x68, 0x35, 0x10, 0xdc, 0x45, - 0xbe, 0x79, 0x13, 0x92, 0x87, 0xf5, 0x06, 0xca, 0x6a, 0xe7, 0xf5, 0xf9, 0xf4, 0xf2, 0xc5, 0x45, - 0x05, 0xb4, 0x28, 0x23, 0x76, 0xf0, 0xb0, 0x45, 0x10, 0xb9, 0xef, 0x25, 0x61, 0x2a, 0x62, 0xd6, - 0x34, 0x21, 0xe9, 0xd8, 0x4d, 0xcc, 0xa8, 0xcd, 0x8f, 0x5a, 0xe4, 0xb3, 0x99, 0x85, 0x91, 0x96, - 0x5d, 0x7d, 0xdd, 0x3e, 0x42, 0xd9, 0x04, 0x19, 0xe6, 0x87, 0xe6, 0x2c, 0x40, 0x0d, 0xb5, 0x90, - 0x53, 0x43, 0x4e, 0xf5, 0x24, 0xab, 0x9f, 0xd7, 0xe7, 0x47, 0x2d, 0x61, 0xc4, 0xfc, 0x08, 0x4c, - 0xb6, 0x3a, 0x07, 0x8d, 0x7a, 0xb5, 0x22, 0x88, 0xc1, 0x79, 0x7d, 0x7e, 0xc8, 0x32, 0xe8, 0xc4, - 0x6a, 0x28, 0xfc, 0x34, 0x4c, 0xbc, 0x89, 0xec, 0xd7, 0x45, 0xd1, 0x34, 0x11, 0x1d, 0xc7, 0xc3, - 0x82, 0x60, 0x09, 0x32, 0x4d, 0xe4, 0x79, 0xf6, 0x11, 0xaa, 0xf8, 0x27, 0x2d, 0x94, 0x4d, 0x92, - 0xab, 0x3f, 0xdf, 0x75, 0xf5, 0xea, 0x95, 0xa7, 0x19, 0x6a, 0xef, 0xa4, 0x85, 0xcc, 0x02, 0x8c, - 0x22, 0xa7, 0xd3, 0xa4, 0x0c, 0x43, 0x3d, 0xec, 0x57, 0x76, 0x3a, 0x4d, 0x95, 0x25, 0x85, 0x61, - 0x8c, 0x62, 0xc4, 0x43, 0xed, 0x37, 0xea, 0x55, 0x94, 0x1d, 0x26, 0x04, 0x4f, 0x77, 0x11, 0xec, - 0xd2, 0x79, 0x95, 0x83, 0xe3, 0xcc, 0x12, 0x8c, 0xa2, 0xb7, 0x7c, 0xe4, 0x78, 0x75, 0xd7, 0xc9, - 0x8e, 0x10, 0x92, 0xa7, 0x22, 0xbc, 0x88, 0x1a, 0x35, 0x95, 0x22, 0xc4, 0x99, 0xd7, 0x61, 0xc4, - 0x6d, 0xf9, 0x75, 0xd7, 0xf1, 0xb2, 0xa9, 0xf3, 0xda, 0x7c, 0x7a, 0xf9, 0x5c, 0x64, 0x20, 0x6c, - 0x53, 0x19, 0x8b, 0x0b, 0x9b, 0xeb, 0x60, 0x78, 0x6e, 0xa7, 0x5d, 0x45, 0x95, 0xaa, 0x5b, 0x43, - 0x95, 0xba, 0x73, 0xe8, 0x66, 0x47, 0x09, 0xc1, 0x5c, 0xf7, 0x85, 0x10, 0xc1, 0x92, 0x5b, 0x43, - 0xeb, 0xce, 0xa1, 0x6b, 0x8d, 0x7b, 0xd2, 0xb1, 0x39, 0x0d, 0xc3, 0xde, 0x89, 0xe3, 0xdb, 0x6f, - 0x65, 0x33, 0x24, 0x42, 0xd8, 0x51, 0xee, 0x4f, 0x87, 0x60, 0x62, 0x90, 0x10, 0xbb, 0x0d, 0x43, - 0x87, 0xf8, 0x2a, 0xb3, 0x89, 0xd3, 0xd8, 0x80, 0x62, 0x64, 0x23, 0x0e, 0x3f, 0xa0, 0x11, 0x0b, - 0x90, 0x76, 0x90, 0xe7, 0xa3, 0x1a, 0x8d, 0x08, 0x7d, 0xc0, 0x98, 0x02, 0x0a, 0xea, 0x0e, 0xa9, - 0xe4, 0x03, 0x85, 0xd4, 0xcb, 0x30, 0x11, 0xa8, 0x54, 0x69, 0xdb, 0xce, 0x11, 0x8f, 0xcd, 0xcb, - 0x71, 0x9a, 0x2c, 0x96, 0x39, 0xce, 0xc2, 0x30, 0x6b, 0x1c, 0x49, 0xc7, 0xe6, 0x2a, 0x80, 0xeb, - 0x20, 0xf7, 0xb0, 0x52, 0x43, 0xd5, 0x46, 0x36, 0xd5, 0xc3, 0x4a, 0xdb, 0x58, 0xa4, 0xcb, 0x4a, - 0x2e, 0x1d, 0xad, 0x36, 0xcc, 0x5b, 0x61, 0xa8, 0x8d, 0xf4, 0x88, 0x94, 0x4d, 0x9a, 0x64, 0x5d, - 0xd1, 0xb6, 0x0f, 0xe3, 0x6d, 0x84, 0xe3, 0x1e, 0xd5, 0xd8, 0x95, 0x8d, 0x12, 0x25, 0x16, 0x63, - 0xaf, 0xcc, 0x62, 0x30, 0x7a, 0x61, 0x63, 0x6d, 0xf1, 0xd0, 0x7c, 0x12, 0x82, 0x81, 0x0a, 0x09, - 0x2b, 0x20, 0x55, 0x28, 0xc3, 0x07, 0xb7, 0xec, 0x26, 0x9a, 0xb9, 0x09, 0xe3, 0xb2, 0x79, 0xcc, - 0xb3, 0x30, 0xe4, 0xf9, 0x76, 0xdb, 0x27, 0x51, 0x38, 0x64, 0xd1, 0x03, 0xd3, 0x00, 0x1d, 0x39, - 0x35, 0x52, 0xe5, 0x86, 0x2c, 0xfc, 0x71, 0xe6, 0x06, 0x8c, 0x49, 0xa7, 0x1f, 0x14, 0x98, 0xfb, - 0xec, 0x30, 0x9c, 0x8d, 0x8a, 0xb9, 0xc8, 0xf0, 0x9f, 0x86, 0x61, 0xa7, 0xd3, 0x3c, 0x40, 0xed, - 0xac, 0x4e, 0x18, 0xd8, 0x91, 0x59, 0x80, 0xa1, 0x86, 0x7d, 0x80, 0x1a, 0xd9, 0xe4, 0x79, 0x6d, - 0x7e, 0x7c, 0xf9, 0x23, 0x03, 0x45, 0xf5, 0xe2, 0x06, 0x86, 0x58, 0x14, 0x69, 0x3e, 0x0f, 0x49, - 0x56, 0xe2, 0x30, 0xc3, 0xc2, 0x60, 0x0c, 0x38, 0x16, 0x2d, 0x82, 0x33, 0x1f, 0x87, 0x51, 0xfc, - 0x3f, 0xb5, 0xed, 0x30, 0xd1, 0x39, 0x85, 0x07, 0xb0, 0x5d, 0xcd, 0x19, 0x48, 0x91, 0x30, 0xab, - 0x21, 0xbe, 0x34, 0x04, 0xc7, 0xd8, 0x31, 0x35, 0x74, 0x68, 0x77, 0x1a, 0x7e, 0xe5, 0x0d, 0xbb, - 0xd1, 0x41, 0x24, 0x60, 0x46, 0xad, 0x0c, 0x1b, 0xfc, 0x24, 0x1e, 0x33, 0xe7, 0x20, 0x4d, 0xa3, - 0xb2, 0xee, 0xd4, 0xd0, 0x5b, 0xa4, 0xfa, 0x0c, 0x59, 0x34, 0x50, 0xd7, 0xf1, 0x08, 0x3e, 0xfd, - 0x6b, 0x9e, 0xeb, 0x70, 0xd7, 0x92, 0x53, 0xe0, 0x01, 0x72, 0xfa, 0x1b, 0x6a, 0xe1, 0x7b, 0x22, - 0xfa, 0xf2, 0xd4, 0x58, 0xcc, 0x7d, 0x23, 0x01, 0x49, 0x92, 0x6f, 0x13, 0x90, 0xde, 0x7b, 0x65, - 0xa7, 0x5c, 0x59, 0xdd, 0xde, 0x2f, 0x6e, 0x94, 0x0d, 0xcd, 0x1c, 0x07, 0x20, 0x03, 0x6b, 0x1b, - 0xdb, 0x85, 0x3d, 0x23, 0x11, 0x1c, 0xaf, 0x6f, 0xed, 0x5d, 0x5f, 0x31, 0xf4, 0x00, 0xb0, 0x4f, - 0x07, 0x92, 0xa2, 0xc0, 0xd5, 0x65, 0x63, 0xc8, 0x34, 0x20, 0x43, 0x09, 0xd6, 0x5f, 0x2e, 0xaf, - 0x5e, 0x5f, 0x31, 0x86, 0xe5, 0x91, 0xab, 0xcb, 0xc6, 0x88, 0x39, 0x06, 0xa3, 0x64, 0xa4, 0xb8, - 0xbd, 0xbd, 0x61, 0xa4, 0x02, 0xce, 0xdd, 0x3d, 0x6b, 0x7d, 0xeb, 0x8e, 0x31, 0x1a, 0x70, 0xde, - 0xb1, 0xb6, 0xf7, 0x77, 0x0c, 0x08, 0x18, 0x36, 0xcb, 0xbb, 0xbb, 0x85, 0x3b, 0x65, 0x23, 0x1d, - 0x48, 0x14, 0x5f, 0xd9, 0x2b, 0xef, 0x1a, 0x19, 0x49, 0xad, 0xab, 0xcb, 0xc6, 0x58, 0x70, 0x8a, - 0xf2, 0xd6, 0xfe, 0xa6, 0x31, 0x6e, 0x4e, 0xc2, 0x18, 0x3d, 0x05, 0x57, 0x62, 0x42, 0x19, 0xba, - 0xbe, 0x62, 0x18, 0xa1, 0x22, 0x94, 0x65, 0x52, 0x1a, 0xb8, 0xbe, 0x62, 0x98, 0xb9, 0x12, 0x0c, - 0x91, 0xe8, 0x32, 0x4d, 0x18, 0xdf, 0x28, 0x14, 0xcb, 0x1b, 0x95, 0xed, 0x9d, 0xbd, 0xf5, 0xed, - 0xad, 0xc2, 0x86, 0xa1, 0x85, 0x63, 0x56, 0xf9, 0x13, 0xfb, 0xeb, 0x56, 0x79, 0xd5, 0x48, 0x88, - 0x63, 0x3b, 0xe5, 0xc2, 0x5e, 0x79, 0xd5, 0xd0, 0x73, 0x55, 0x38, 0x1b, 0x55, 0x67, 0x22, 0x33, - 0x43, 0x70, 0x71, 0xa2, 0x87, 0x8b, 0x09, 0x57, 0x97, 0x8b, 0x7f, 0x53, 0x83, 0xa9, 0x88, 0x5a, - 0x1b, 0x79, 0x92, 0x17, 0x60, 0x88, 0x86, 0x28, 0x5d, 0x7d, 0x9e, 0x89, 0x2c, 0xda, 0x24, 0x60, - 0xbb, 0x56, 0x20, 0x82, 0x13, 0x57, 0x60, 0xbd, 0xc7, 0x0a, 0x8c, 0x29, 0xba, 0x94, 0xfc, 0xb4, - 0x06, 0xd9, 0x5e, 0xdc, 0x31, 0x85, 0x22, 0x21, 0x15, 0x8a, 0xdb, 0xaa, 0x02, 0x17, 0x7a, 0x5f, - 0x43, 0x97, 0x16, 0x5f, 0xd1, 0x60, 0x3a, 0xba, 0x51, 0x89, 0xd4, 0xe1, 0x79, 0x18, 0x6e, 0x22, - 0xff, 0xd8, 0xe5, 0x8b, 0xf5, 0xa5, 0x88, 0x25, 0x00, 0x4f, 0xab, 0xb6, 0x62, 0x28, 0x71, 0x0d, - 0xd1, 0x7b, 0x75, 0x1b, 0x54, 0x9b, 0x2e, 0x4d, 0x7f, 0x25, 0x01, 0x8f, 0x44, 0x92, 0x47, 0x2a, - 0xfa, 0x04, 0x40, 0xdd, 0x69, 0x75, 0x7c, 0xba, 0x20, 0xd3, 0xfa, 0x34, 0x4a, 0x46, 0x48, 0xee, - 0xe3, 0xda, 0xd3, 0xf1, 0x83, 0x79, 0x9d, 0xcc, 0x03, 0x1d, 0x22, 0x02, 0x37, 0x43, 0x45, 0x93, - 0x44, 0xd1, 0xd9, 0x1e, 0x57, 0xda, 0xb5, 0xd6, 0x2d, 0x81, 0x51, 0x6d, 0xd4, 0x91, 0xe3, 0x57, - 0x3c, 0xbf, 0x8d, 0xec, 0x66, 0xdd, 0x39, 0x22, 0x05, 0x38, 0x95, 0x1f, 0x3a, 0xb4, 0x1b, 0x1e, - 0xb2, 0x26, 0xe8, 0xf4, 0x2e, 0x9f, 0xc5, 0x08, 0xb2, 0xca, 0xb4, 0x05, 0xc4, 0xb0, 0x84, 0xa0, - 0xd3, 0x01, 0x22, 0xf7, 0xab, 0x23, 0x90, 0x16, 0xda, 0x3a, 0xf3, 0x02, 0x64, 0x5e, 0xb3, 0xdf, - 0xb0, 0x2b, 0xbc, 0x55, 0xa7, 0x96, 0x48, 0xe3, 0xb1, 0x1d, 0xd6, 0xae, 0x2f, 0xc1, 0x59, 0x22, - 0xe2, 0x76, 0x7c, 0xd4, 0xae, 0x54, 0x1b, 0xb6, 0xe7, 0x11, 0xa3, 0xa5, 0x88, 0xa8, 0x89, 0xe7, - 0xb6, 0xf1, 0x54, 0x89, 0xcf, 0x98, 0xd7, 0x60, 0x8a, 0x20, 0x9a, 0x9d, 0x86, 0x5f, 0x6f, 0x35, - 0x50, 0x05, 0xdf, 0x3c, 0x78, 0xa4, 0x10, 0x07, 0x9a, 0x4d, 0x62, 0x89, 0x4d, 0x26, 0x80, 0x35, - 0xf2, 0xcc, 0x3b, 0xf0, 0x04, 0x81, 0x1d, 0x21, 0x07, 0xb5, 0x6d, 0x1f, 0x55, 0xd0, 0x5f, 0xee, - 0xd8, 0x0d, 0xaf, 0x62, 0x3b, 0xb5, 0xca, 0xb1, 0xed, 0x1d, 0x67, 0xcf, 0x8a, 0x04, 0x8f, 0x61, - 0xd9, 0x3b, 0x4c, 0xb4, 0x4c, 0x24, 0x0b, 0x4e, 0xed, 0x45, 0xdb, 0x3b, 0x36, 0xf3, 0x30, 0x4d, - 0x88, 0x3c, 0xbf, 0x5d, 0x77, 0x8e, 0x2a, 0xd5, 0x63, 0x54, 0x7d, 0xbd, 0xd2, 0xf1, 0x0f, 0x6f, - 0x66, 0x1f, 0x17, 0x19, 0x88, 0x92, 0xbb, 0x44, 0xa6, 0x84, 0x45, 0xf6, 0xfd, 0xc3, 0x9b, 0xe6, - 0x2e, 0x64, 0xb0, 0x3f, 0x9a, 0xf5, 0x4f, 0xa1, 0xca, 0xa1, 0xdb, 0x26, 0x8b, 0xcb, 0x78, 0x44, - 0x72, 0x0b, 0x46, 0x5c, 0xdc, 0x66, 0x80, 0x4d, 0xb7, 0x86, 0xf2, 0x43, 0xbb, 0x3b, 0xe5, 0xf2, - 0xaa, 0x95, 0xe6, 0x2c, 0x6b, 0x6e, 0x1b, 0xc7, 0xd4, 0x91, 0x1b, 0xd8, 0x38, 0x4d, 0x63, 0xea, - 0xc8, 0xe5, 0x16, 0xbe, 0x06, 0x53, 0xd5, 0x2a, 0xbd, 0xec, 0x7a, 0xb5, 0xc2, 0xba, 0x7c, 0x2f, - 0x6b, 0x48, 0xf6, 0xaa, 0x56, 0xef, 0x50, 0x01, 0x16, 0xe6, 0x9e, 0x79, 0x0b, 0x1e, 0x09, 0xed, - 0x25, 0x02, 0x27, 0xbb, 0xae, 0x52, 0x85, 0x5e, 0x83, 0xa9, 0xd6, 0x49, 0x37, 0xd0, 0x94, 0xce, - 0xd8, 0x3a, 0x51, 0x61, 0x4f, 0x91, 0x3b, 0xb7, 0x36, 0xaa, 0xda, 0x3e, 0xaa, 0x65, 0x1f, 0x15, - 0xa5, 0x85, 0x09, 0xf3, 0x32, 0x18, 0xd5, 0x6a, 0x05, 0x39, 0xf6, 0x41, 0x03, 0x55, 0xec, 0x36, - 0x72, 0x6c, 0x2f, 0x3b, 0x27, 0x0a, 0x8f, 0x57, 0xab, 0x65, 0x32, 0x5b, 0x20, 0x93, 0xe6, 0x02, - 0x4c, 0xba, 0x07, 0xaf, 0x55, 0x69, 0x70, 0x55, 0x5a, 0x6d, 0x74, 0x58, 0x7f, 0x2b, 0x7b, 0x91, - 0x98, 0x69, 0x02, 0x4f, 0x90, 0xd0, 0xda, 0x21, 0xc3, 0xe6, 0x33, 0x60, 0x54, 0xbd, 0x63, 0xbb, - 0xdd, 0x22, 0xab, 0xbb, 0xd7, 0xb2, 0xab, 0x28, 0xfb, 0x14, 0x15, 0xa5, 0xe3, 0x5b, 0x7c, 0xd8, - 0x7c, 0x19, 0xce, 0x76, 0x9c, 0xba, 0xe3, 0xa3, 0x76, 0xab, 0x8d, 0x70, 0x93, 0x4e, 0x33, 0x2d, - 0xfb, 0xdf, 0x47, 0x7a, 0xb4, 0xd9, 0xfb, 0xa2, 0x34, 0xf5, 0xae, 0x35, 0xd5, 0xe9, 0x1e, 0xcc, - 0xe5, 0x21, 0x23, 0x3a, 0xdd, 0x1c, 0x05, 0xea, 0x76, 0x43, 0xc3, 0x6b, 0x68, 0x69, 0x7b, 0x15, - 0xaf, 0x7e, 0xbf, 0x50, 0x36, 0x12, 0x78, 0x15, 0xde, 0x58, 0xdf, 0x2b, 0x57, 0xac, 0xfd, 0xad, - 0xbd, 0xf5, 0xcd, 0xb2, 0xa1, 0x2f, 0x8c, 0xa6, 0xbe, 0x3f, 0x62, 0xbc, 0xfd, 0xf6, 0xdb, 0x6f, - 0x27, 0x72, 0xdf, 0x4c, 0xc0, 0xb8, 0xdc, 0xf9, 0x9a, 0x1f, 0x83, 0x47, 0xf9, 0x6d, 0xaa, 0x87, - 0xfc, 0xca, 0x9b, 0xf5, 0x36, 0x89, 0xc3, 0xa6, 0x4d, 0x7b, 0xc7, 0xc0, 0x84, 0x67, 0x99, 0xd4, - 0x2e, 0xf2, 0x5f, 0xaa, 0xb7, 0x71, 0x94, 0x35, 0x6d, 0xdf, 0xdc, 0x80, 0x39, 0xc7, 0xad, 0x78, - 0xbe, 0xed, 0xd4, 0xec, 0x76, 0xad, 0x12, 0x6e, 0x10, 0x54, 0xec, 0x6a, 0x15, 0x79, 0x9e, 0x4b, - 0x97, 0x80, 0x80, 0xe5, 0x9c, 0xe3, 0xee, 0x32, 0xe1, 0xb0, 0x36, 0x16, 0x98, 0xa8, 0xe2, 0x6e, - 0xbd, 0x97, 0xbb, 0x1f, 0x87, 0xd1, 0xa6, 0xdd, 0xaa, 0x20, 0xc7, 0x6f, 0x9f, 0x90, 0x7e, 0x2d, - 0x65, 0xa5, 0x9a, 0x76, 0xab, 0x8c, 0x8f, 0x3f, 0x3c, 0x1f, 0x88, 0x76, 0xfc, 0x6f, 0x3a, 0x64, - 0xc4, 0x9e, 0x0d, 0xb7, 0xc0, 0x55, 0x52, 0x9f, 0x35, 0x92, 0xbe, 0x4f, 0xf6, 0xed, 0xf0, 0x16, - 0x4b, 0xb8, 0x70, 0xe7, 0x87, 0x69, 0x27, 0x65, 0x51, 0x24, 0x5e, 0x34, 0x71, 0xc2, 0x22, 0xda, - 0x9f, 0xa7, 0x2c, 0x76, 0x64, 0xde, 0x81, 0xe1, 0xd7, 0x3c, 0xc2, 0x3d, 0x4c, 0xb8, 0x2f, 0xf6, - 0xe7, 0xbe, 0xbb, 0x4b, 0xc8, 0x47, 0xef, 0xee, 0x56, 0xb6, 0xb6, 0xad, 0xcd, 0xc2, 0x86, 0xc5, - 0xe0, 0xe6, 0x63, 0x90, 0x6c, 0xd8, 0x9f, 0x3a, 0x91, 0x4b, 0x3c, 0x19, 0x1a, 0xd4, 0xf0, 0x8f, - 0x41, 0xf2, 0x4d, 0x64, 0xbf, 0x2e, 0x17, 0x56, 0x32, 0xf4, 0x21, 0x86, 0xfe, 0x65, 0x18, 0x22, - 0xf6, 0x32, 0x01, 0x98, 0xc5, 0x8c, 0x33, 0x66, 0x0a, 0x92, 0xa5, 0x6d, 0x0b, 0x87, 0xbf, 0x01, - 0x19, 0x3a, 0x5a, 0xd9, 0x59, 0x2f, 0x97, 0xca, 0x46, 0x22, 0x77, 0x0d, 0x86, 0xa9, 0x11, 0x70, - 0x6a, 0x04, 0x66, 0x30, 0xce, 0xb0, 0x43, 0xc6, 0xa1, 0xf1, 0xd9, 0xfd, 0xcd, 0x62, 0xd9, 0x32, - 0x12, 0xa2, 0x7b, 0x3d, 0xc8, 0x88, 0xed, 0xda, 0x4f, 0x26, 0xa6, 0xfe, 0x40, 0x83, 0xb4, 0xd0, - 0x7e, 0xe1, 0x85, 0xdf, 0x6e, 0x34, 0xdc, 0x37, 0x2b, 0x76, 0xa3, 0x6e, 0x7b, 0x2c, 0x28, 0x80, - 0x0c, 0x15, 0xf0, 0xc8, 0xa0, 0x4e, 0xfb, 0x89, 0x28, 0xff, 0x45, 0x0d, 0x0c, 0xb5, 0x75, 0x53, - 0x14, 0xd4, 0x7e, 0xaa, 0x0a, 0x7e, 0x5e, 0x83, 0x71, 0xb9, 0x5f, 0x53, 0xd4, 0xbb, 0xf0, 0x53, - 0x55, 0xef, 0x37, 0x34, 0x18, 0x93, 0xba, 0xb4, 0x9f, 0x29, 0xed, 0x3e, 0xa7, 0xc3, 0x54, 0x04, - 0xce, 0x2c, 0xb0, 0x76, 0x96, 0x76, 0xd8, 0xcf, 0x0e, 0x72, 0xae, 0x45, 0xbc, 0x5a, 0xee, 0xd8, - 0x6d, 0x9f, 0x75, 0xbf, 0xcf, 0x80, 0x51, 0xaf, 0x21, 0xc7, 0xaf, 0x1f, 0xd6, 0x51, 0x9b, 0xdd, - 0x82, 0xd3, 0x1e, 0x77, 0x22, 0x1c, 0xa7, 0x77, 0xe1, 0x1f, 0x05, 0xb3, 0xe5, 0x7a, 0x75, 0xbf, - 0xfe, 0x06, 0xaa, 0xd4, 0x1d, 0x7e, 0xbf, 0x8e, 0x7b, 0xde, 0xa4, 0x65, 0xf0, 0x99, 0x75, 0xc7, - 0x0f, 0xa4, 0x1d, 0x74, 0x64, 0x2b, 0xd2, 0xb8, 0xf6, 0xe9, 0x96, 0xc1, 0x67, 0x02, 0xe9, 0x0b, - 0x90, 0xa9, 0xb9, 0x1d, 0xdc, 0x3e, 0x50, 0x39, 0x5c, 0x6a, 0x35, 0x2b, 0x4d, 0xc7, 0x02, 0x11, - 0xd6, 0xdf, 0x85, 0x1b, 0x05, 0x19, 0x2b, 0x4d, 0xc7, 0xa8, 0xc8, 0xd3, 0x30, 0x61, 0x1f, 0x1d, - 0xb5, 0x31, 0x39, 0x27, 0xa2, 0x4d, 0xeb, 0x78, 0x30, 0x4c, 0x04, 0x67, 0xee, 0x42, 0x8a, 0xdb, - 0x01, 0xaf, 0x66, 0xd8, 0x12, 0x95, 0x16, 0xdd, 0xae, 0x49, 0xcc, 0x8f, 0x5a, 0x29, 0x87, 0x4f, - 0x5e, 0x80, 0x4c, 0xdd, 0xab, 0x84, 0xfb, 0x86, 0x89, 0xf3, 0x89, 0xf9, 0x94, 0x95, 0xae, 0x7b, - 0xc1, 0x46, 0x51, 0xee, 0x2b, 0x09, 0x18, 0x97, 0xf7, 0x3d, 0xcd, 0x55, 0x48, 0x35, 0xdc, 0xaa, - 0x4d, 0x02, 0x81, 0x6e, 0xba, 0xcf, 0xc7, 0x6c, 0x95, 0x2e, 0x6e, 0x30, 0x79, 0x2b, 0x40, 0xce, - 0xfc, 0x27, 0x0d, 0x52, 0x7c, 0xd8, 0x9c, 0x86, 0x64, 0xcb, 0xf6, 0x8f, 0x09, 0xdd, 0x50, 0x31, - 0x61, 0x68, 0x16, 0x39, 0xc6, 0xe3, 0x5e, 0xcb, 0x76, 0x48, 0x08, 0xb0, 0x71, 0x7c, 0x8c, 0xfd, - 0xda, 0x40, 0x76, 0x8d, 0xb4, 0xc3, 0x6e, 0xb3, 0x89, 0x1c, 0xdf, 0xe3, 0x7e, 0x65, 0xe3, 0x25, - 0x36, 0x6c, 0x7e, 0x04, 0x26, 0xfd, 0xb6, 0x5d, 0x6f, 0x48, 0xb2, 0x49, 0x22, 0x6b, 0xf0, 0x89, - 0x40, 0x38, 0x0f, 0x8f, 0x71, 0xde, 0x1a, 0xf2, 0xed, 0xea, 0x31, 0xaa, 0x85, 0xa0, 0x61, 0xb2, - 0xa9, 0xf6, 0x28, 0x13, 0x58, 0x65, 0xf3, 0x1c, 0x9b, 0xfb, 0x23, 0x0d, 0x26, 0x79, 0x03, 0x5f, - 0x0b, 0x8c, 0xb5, 0x09, 0x60, 0x3b, 0x8e, 0xeb, 0x8b, 0xe6, 0xea, 0x0e, 0xe5, 0x2e, 0xdc, 0x62, - 0x21, 0x00, 0x59, 0x02, 0xc1, 0x4c, 0x13, 0x20, 0x9c, 0xe9, 0x69, 0xb6, 0x39, 0x48, 0xb3, 0x4d, - 0x6d, 0xf2, 0x64, 0x84, 0xde, 0xf5, 0x01, 0x1d, 0xc2, 0x9d, 0xbe, 0x79, 0x16, 0x86, 0x0e, 0xd0, - 0x51, 0xdd, 0x61, 0x5b, 0x6d, 0xf4, 0x80, 0x6f, 0xe0, 0x25, 0x83, 0x0d, 0xbc, 0xe2, 0xab, 0x30, - 0x55, 0x75, 0x9b, 0xaa, 0xba, 0x45, 0x43, 0xb9, 0xf3, 0xf4, 0x5e, 0xd4, 0x7e, 0x01, 0xc2, 0xee, - 0xec, 0x1d, 0x4d, 0xfb, 0xcd, 0x84, 0x7e, 0x67, 0xa7, 0xf8, 0x3b, 0x89, 0x99, 0x3b, 0x14, 0xba, - 0xc3, 0xaf, 0xd4, 0x42, 0x87, 0x0d, 0x54, 0xc5, 0xda, 0xc3, 0x9f, 0x5c, 0x82, 0x67, 0x8f, 0xea, - 0xfe, 0x71, 0xe7, 0x60, 0xb1, 0xea, 0x36, 0x2f, 0x1f, 0xb9, 0x47, 0x6e, 0xf8, 0x30, 0x08, 0x1f, - 0x91, 0x03, 0xf2, 0x89, 0x3d, 0x10, 0x1a, 0x0d, 0x46, 0x67, 0x62, 0x9f, 0x1e, 0xe5, 0xb7, 0x60, - 0x8a, 0x09, 0x57, 0xc8, 0x8e, 0x34, 0xed, 0xc3, 0xcd, 0xbe, 0xbb, 0x12, 0xd9, 0xdf, 0xfd, 0x1e, - 0x59, 0xe9, 0xac, 0x49, 0x06, 0xc5, 0x73, 0xb4, 0x53, 0xcf, 0x5b, 0xf0, 0x88, 0xc4, 0x47, 0x53, - 0x13, 0xb5, 0x63, 0x18, 0xbf, 0xc9, 0x18, 0xa7, 0x04, 0xc6, 0x5d, 0x06, 0xcd, 0x97, 0x60, 0xec, - 0x34, 0x5c, 0xff, 0x9e, 0x71, 0x65, 0x90, 0x48, 0x72, 0x07, 0x26, 0x08, 0x49, 0xb5, 0xe3, 0xf9, - 0x6e, 0x93, 0xd4, 0xbd, 0xfe, 0x34, 0xff, 0xe1, 0x7b, 0x34, 0x57, 0xc6, 0x31, 0xac, 0x14, 0xa0, - 0xf2, 0x79, 0x20, 0x9b, 0xf0, 0x35, 0x54, 0x6d, 0xc4, 0x30, 0xdc, 0x63, 0x8a, 0x04, 0xf2, 0xf9, - 0x4f, 0xc2, 0x59, 0xfc, 0x99, 0x94, 0x25, 0x51, 0x93, 0xf8, 0x3d, 0x98, 0xec, 0x1f, 0x7d, 0x9a, - 0xa6, 0xe3, 0x54, 0x40, 0x20, 0xe8, 0x24, 0x78, 0xf1, 0x08, 0xf9, 0x3e, 0x6a, 0x7b, 0x15, 0xbb, - 0x11, 0xa5, 0x9e, 0x70, 0x07, 0x9b, 0xfd, 0xf5, 0x1f, 0xc8, 0x5e, 0xbc, 0x43, 0x91, 0x85, 0x46, - 0x23, 0xbf, 0x0f, 0x8f, 0x46, 0x44, 0xc5, 0x00, 0x9c, 0x9f, 0x63, 0x9c, 0x67, 0xbb, 0x22, 0x03, - 0xd3, 0xee, 0x00, 0x1f, 0x0f, 0x7c, 0x39, 0x00, 0xe7, 0x6f, 0x30, 0x4e, 0x93, 0x61, 0xb9, 0x4b, - 0x31, 0xe3, 0x5d, 0x98, 0x7c, 0x03, 0xb5, 0x0f, 0x5c, 0x8f, 0x6d, 0x1c, 0x0c, 0x40, 0xf7, 0x79, - 0x46, 0x37, 0xc1, 0x80, 0x64, 0x1b, 0x01, 0x73, 0xdd, 0x82, 0xd4, 0xa1, 0x5d, 0x45, 0x03, 0x50, - 0x7c, 0x81, 0x51, 0x8c, 0x60, 0x79, 0x0c, 0x2d, 0x40, 0xe6, 0xc8, 0x65, 0x2b, 0x53, 0x3c, 0xfc, - 0x8b, 0x0c, 0x9e, 0xe6, 0x18, 0x46, 0xd1, 0x72, 0x5b, 0x9d, 0x06, 0x5e, 0xb6, 0xe2, 0x29, 0xbe, - 0xc4, 0x29, 0x38, 0x86, 0x51, 0x9c, 0xc2, 0xac, 0xef, 0x70, 0x0a, 0x4f, 0xb0, 0xe7, 0x0b, 0x90, - 0x76, 0x9d, 0xc6, 0x89, 0xeb, 0x0c, 0xa2, 0xc4, 0x97, 0x19, 0x03, 0x30, 0x08, 0x26, 0xb8, 0x0d, - 0xa3, 0x83, 0x3a, 0xe2, 0xb7, 0x7e, 0xc0, 0xd3, 0x83, 0x7b, 0xe0, 0x0e, 0x4c, 0xf0, 0x02, 0x55, - 0x77, 0x9d, 0x01, 0x28, 0xfe, 0x31, 0xa3, 0x18, 0x17, 0x60, 0xec, 0x32, 0x7c, 0xe4, 0xf9, 0x47, - 0x68, 0x10, 0x92, 0xaf, 0xf0, 0xcb, 0x60, 0x10, 0x66, 0xca, 0x03, 0xe4, 0x54, 0x8f, 0x07, 0x63, - 0xf8, 0x2a, 0x37, 0x25, 0xc7, 0x60, 0x8a, 0x12, 0x8c, 0x35, 0xed, 0xb6, 0x77, 0x6c, 0x37, 0x06, - 0x72, 0xc7, 0x6f, 0x33, 0x8e, 0x4c, 0x00, 0x62, 0x16, 0xe9, 0x38, 0xa7, 0xa1, 0xf9, 0x1d, 0x6e, - 0x11, 0x01, 0xc6, 0x52, 0xcf, 0xf3, 0xc9, 0xde, 0xcc, 0x69, 0xd8, 0xfe, 0x09, 0x4f, 0x3d, 0x8a, - 0xdd, 0x14, 0x19, 0x6f, 0xc3, 0xa8, 0x57, 0xff, 0xd4, 0x40, 0x34, 0xff, 0x94, 0x7b, 0x9a, 0x00, - 0x30, 0xf8, 0x15, 0x78, 0x2c, 0x72, 0x99, 0x18, 0x80, 0xec, 0x9f, 0x31, 0xb2, 0xe9, 0x88, 0xa5, - 0x82, 0x95, 0x84, 0xd3, 0x52, 0xfe, 0x73, 0x5e, 0x12, 0x90, 0xc2, 0xb5, 0x83, 0x3b, 0x7b, 0xcf, - 0x3e, 0x3c, 0x9d, 0xd5, 0xfe, 0x05, 0xb7, 0x1a, 0xc5, 0x4a, 0x56, 0xdb, 0x83, 0x69, 0xc6, 0x78, - 0x3a, 0xbf, 0x7e, 0x8d, 0x17, 0x56, 0x8a, 0xde, 0x97, 0xbd, 0xfb, 0x2a, 0xcc, 0x04, 0xe6, 0xe4, - 0x4d, 0xa9, 0x57, 0x69, 0xda, 0xad, 0x01, 0x98, 0x7f, 0x97, 0x31, 0xf3, 0x8a, 0x1f, 0x74, 0xb5, - 0xde, 0xa6, 0xdd, 0xc2, 0xe4, 0x2f, 0x43, 0x96, 0x93, 0x77, 0x9c, 0x36, 0xaa, 0xba, 0x47, 0x4e, - 0xfd, 0x53, 0xa8, 0x36, 0x00, 0xf5, 0xd7, 0x15, 0x57, 0xed, 0x0b, 0x70, 0xcc, 0xbc, 0x0e, 0x46, - 0xd0, 0xab, 0x54, 0xea, 0xcd, 0x96, 0xdb, 0xf6, 0x63, 0x18, 0xff, 0x25, 0xf7, 0x54, 0x80, 0x5b, - 0x27, 0xb0, 0x7c, 0x19, 0xc6, 0xc9, 0xe1, 0xa0, 0x21, 0xf9, 0x7b, 0x8c, 0x68, 0x2c, 0x44, 0xb1, - 0xc2, 0x51, 0x75, 0x9b, 0x2d, 0xbb, 0x3d, 0x48, 0xfd, 0xfb, 0x57, 0xbc, 0x70, 0x30, 0x08, 0x2b, - 0x1c, 0xfe, 0x49, 0x0b, 0xe1, 0xd5, 0x7e, 0x00, 0x86, 0x6f, 0xf0, 0xc2, 0xc1, 0x31, 0x8c, 0x82, - 0x37, 0x0c, 0x03, 0x50, 0xfc, 0x6b, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0x13, 0xe1, 0x42, 0xdb, 0x46, - 0x47, 0x75, 0xcf, 0x6f, 0xd3, 0x56, 0xb8, 0x3f, 0xd5, 0xef, 0xff, 0x40, 0x6e, 0xc2, 0x2c, 0x01, - 0x9a, 0xbf, 0x0b, 0x13, 0x4a, 0x8b, 0x61, 0xc6, 0x3d, 0xd1, 0xcf, 0xfe, 0xe2, 0x8f, 0x58, 0x31, - 0x92, 0x3b, 0x8c, 0xfc, 0x06, 0xf6, 0xbb, 0xdc, 0x07, 0xc4, 0x93, 0x7d, 0xfa, 0x47, 0x81, 0xeb, - 0xa5, 0x36, 0x20, 0xbf, 0x06, 0x63, 0x52, 0x0f, 0x10, 0x4f, 0xf5, 0x57, 0x19, 0x55, 0x46, 0x6c, - 0x01, 0xf2, 0xd7, 0x20, 0x89, 0xd7, 0xf3, 0x78, 0xf8, 0x5f, 0x63, 0x70, 0x22, 0x9e, 0x7f, 0x0e, - 0x52, 0x7c, 0x1d, 0x8f, 0x87, 0xfe, 0x32, 0x83, 0x06, 0x10, 0x0c, 0xe7, 0x6b, 0x78, 0x3c, 0xfc, - 0xaf, 0x73, 0x38, 0x87, 0x60, 0xf8, 0xe0, 0x26, 0x7c, 0xf7, 0x57, 0x93, 0xac, 0x0e, 0x73, 0xdb, - 0xdd, 0x86, 0x11, 0xb6, 0x78, 0xc7, 0xa3, 0x7f, 0x85, 0x9d, 0x9c, 0x23, 0xf2, 0x37, 0x60, 0x68, - 0x40, 0x83, 0xff, 0x4d, 0x06, 0xa5, 0xf2, 0xf9, 0x12, 0xa4, 0x85, 0x05, 0x3b, 0x1e, 0xfe, 0xb7, - 0x18, 0x5c, 0x44, 0x61, 0xd5, 0xd9, 0x82, 0x1d, 0x4f, 0xf0, 0xb7, 0xb9, 0xea, 0x0c, 0x81, 0xcd, - 0xc6, 0xd7, 0xea, 0x78, 0xf4, 0xdf, 0xe1, 0x56, 0xe7, 0x90, 0xfc, 0x0b, 0x30, 0x1a, 0xd4, 0xdf, - 0x78, 0xfc, 0xdf, 0x65, 0xf8, 0x10, 0x83, 0x2d, 0x20, 0xd4, 0xff, 0x78, 0x8a, 0xbf, 0xc7, 0x2d, - 0x20, 0xa0, 0x70, 0x1a, 0xa9, 0x6b, 0x7a, 0x3c, 0xd3, 0xaf, 0xf1, 0x34, 0x52, 0x96, 0x74, 0xec, - 0x4d, 0x52, 0x06, 0xe3, 0x29, 0xfe, 0x3e, 0xf7, 0x26, 0x91, 0xc7, 0x6a, 0xa8, 0x8b, 0x64, 0x3c, - 0xc7, 0x3f, 0xe4, 0x6a, 0x28, 0x6b, 0x64, 0x7e, 0x07, 0xcc, 0xee, 0x05, 0x32, 0x9e, 0xef, 0xb3, - 0x8c, 0x6f, 0xb2, 0x6b, 0x7d, 0xcc, 0xbf, 0x04, 0xd3, 0xd1, 0x8b, 0x63, 0x3c, 0xeb, 0xaf, 0xff, - 0x48, 0xb9, 0x9d, 0x11, 0xd7, 0xc6, 0xfc, 0x5e, 0x58, 0x65, 0xc5, 0x85, 0x31, 0x9e, 0xf6, 0x73, - 0x3f, 0x92, 0x0b, 0xad, 0xb8, 0x2e, 0xe6, 0x0b, 0x00, 0xe1, 0x9a, 0x14, 0xcf, 0xf5, 0x79, 0xc6, - 0x25, 0x80, 0x70, 0x6a, 0xb0, 0x25, 0x29, 0x1e, 0xff, 0x05, 0x9e, 0x1a, 0x0c, 0x81, 0x53, 0x83, - 0xaf, 0x46, 0xf1, 0xe8, 0x2f, 0xf2, 0xd4, 0xe0, 0x90, 0xfc, 0x6d, 0x48, 0x39, 0x9d, 0x46, 0x03, - 0xc7, 0x96, 0xd9, 0xff, 0x25, 0x9b, 0xec, 0xff, 0xf8, 0x31, 0x03, 0x73, 0x40, 0xfe, 0x1a, 0x0c, - 0xa1, 0xe6, 0x01, 0xaa, 0xc5, 0x21, 0xff, 0xe7, 0x8f, 0x79, 0x3d, 0xc1, 0xd2, 0xf9, 0x17, 0x00, - 0xe8, 0xcd, 0x34, 0x79, 0xc6, 0x12, 0x83, 0xfd, 0x5f, 0x3f, 0x66, 0xcf, 0xef, 0x43, 0x48, 0x48, - 0x40, 0xdf, 0x06, 0xe8, 0x4f, 0xf0, 0x03, 0x99, 0x80, 0xdc, 0x80, 0xdf, 0x82, 0x91, 0xd7, 0x3c, - 0xd7, 0xf1, 0xed, 0xa3, 0x38, 0xf4, 0xff, 0x66, 0x68, 0x2e, 0x8f, 0x0d, 0xd6, 0x74, 0xdb, 0xc8, - 0xb7, 0x8f, 0xbc, 0x38, 0xec, 0xff, 0x61, 0xd8, 0x00, 0x80, 0xc1, 0x55, 0xdb, 0xf3, 0x07, 0xb9, - 0xee, 0xff, 0xcb, 0xc1, 0x1c, 0x80, 0x95, 0xc6, 0x9f, 0x5f, 0x47, 0x27, 0x71, 0xd8, 0x1f, 0x72, - 0xa5, 0x99, 0x7c, 0xfe, 0x39, 0x18, 0xc5, 0x1f, 0xe9, 0x3b, 0x2d, 0x31, 0xe0, 0x3f, 0x66, 0xe0, - 0x10, 0x81, 0xcf, 0xec, 0xf9, 0x35, 0xbf, 0x1e, 0x6f, 0xec, 0xff, 0xc7, 0x3c, 0xcd, 0xe5, 0xf3, - 0x05, 0x48, 0x7b, 0x7e, 0xad, 0xd6, 0x61, 0x1d, 0x4d, 0x0c, 0xfc, 0x4f, 0x7e, 0x1c, 0xdc, 0xe4, - 0x06, 0x98, 0xe2, 0x85, 0xe8, 0xfd, 0x3a, 0xb8, 0xe3, 0xde, 0x71, 0xe9, 0x4e, 0x1d, 0x7c, 0xaf, - 0x01, 0x37, 0x7a, 0xee, 0xba, 0xe1, 0x45, 0xe4, 0x72, 0xd5, 0x6d, 0x1e, 0xb8, 0xde, 0xe5, 0x03, - 0xd7, 0x3f, 0xbe, 0xec, 0x1f, 0x23, 0x3c, 0xc6, 0xf6, 0xdf, 0x92, 0xf8, 0xf3, 0xcc, 0xe9, 0x36, - 0xed, 0xc8, 0xd3, 0xcc, 0xad, 0x3a, 0xd6, 0x7b, 0x8b, 0xec, 0x8a, 0x9b, 0xe7, 0x60, 0x98, 0x5c, - 0xc9, 0x15, 0xf2, 0xd0, 0x46, 0x2b, 0x26, 0xef, 0xbd, 0x37, 0x77, 0xc6, 0x62, 0x63, 0xc1, 0xec, - 0x32, 0xd9, 0xb6, 0x4c, 0x48, 0xb3, 0xcb, 0xc1, 0xec, 0x55, 0xba, 0x73, 0x29, 0xcd, 0x5e, 0x0d, - 0x66, 0x57, 0xc8, 0x1e, 0xa6, 0x2e, 0xcd, 0xae, 0x04, 0xb3, 0xd7, 0xc8, 0x3e, 0xfd, 0x98, 0x34, - 0x7b, 0x2d, 0x98, 0xbd, 0x4e, 0x76, 0xe7, 0x93, 0xd2, 0xec, 0xf5, 0x60, 0xf6, 0x06, 0xd9, 0x98, - 0x9f, 0x94, 0x66, 0x6f, 0x04, 0xb3, 0x37, 0xc9, 0x86, 0xbc, 0x29, 0xcd, 0xde, 0x0c, 0x66, 0x6f, - 0x91, 0xb7, 0x2f, 0x46, 0xa4, 0xd9, 0x5b, 0xe6, 0x2c, 0x8c, 0xd0, 0x2b, 0x5f, 0x22, 0x0f, 0x3e, - 0x27, 0xd8, 0x34, 0x1f, 0x0c, 0xe7, 0xaf, 0x90, 0x37, 0x2d, 0x86, 0xe5, 0xf9, 0x2b, 0xe1, 0xfc, - 0x32, 0x79, 0xed, 0xd8, 0x90, 0xe7, 0x97, 0xc3, 0xf9, 0xab, 0xd9, 0x31, 0x1c, 0x30, 0xf2, 0xfc, - 0xd5, 0x70, 0x7e, 0x25, 0x3b, 0x8e, 0x83, 0x59, 0x9e, 0x5f, 0x09, 0xe7, 0xaf, 0x65, 0x27, 0xce, - 0x6b, 0xf3, 0x19, 0x79, 0xfe, 0x5a, 0xee, 0x97, 0x88, 0x7b, 0x9d, 0xd0, 0xbd, 0xd3, 0xb2, 0x7b, - 0x03, 0xc7, 0x4e, 0xcb, 0x8e, 0x0d, 0x5c, 0x3a, 0x2d, 0xbb, 0x34, 0x70, 0xe6, 0xb4, 0xec, 0xcc, - 0xc0, 0x8d, 0xd3, 0xb2, 0x1b, 0x03, 0x07, 0x4e, 0xcb, 0x0e, 0x0c, 0x5c, 0x37, 0x2d, 0xbb, 0x2e, - 0x70, 0xda, 0xb4, 0xec, 0xb4, 0xc0, 0x5d, 0xd3, 0xb2, 0xbb, 0x02, 0x47, 0x65, 0x15, 0x47, 0x85, - 0x2e, 0xca, 0x2a, 0x2e, 0x0a, 0x9d, 0x93, 0x55, 0x9c, 0x13, 0xba, 0x25, 0xab, 0xb8, 0x25, 0x74, - 0x48, 0x56, 0x71, 0x48, 0xe8, 0x8a, 0xac, 0xe2, 0x8a, 0xd0, 0x09, 0x2c, 0xc7, 0x2c, 0xd4, 0x8a, - 0xc8, 0x31, 0xbd, 0x6f, 0x8e, 0xe9, 0x7d, 0x73, 0x4c, 0xef, 0x9b, 0x63, 0x7a, 0xdf, 0x1c, 0xd3, - 0xfb, 0xe6, 0x98, 0xde, 0x37, 0xc7, 0xf4, 0xbe, 0x39, 0xa6, 0xf7, 0xcd, 0x31, 0xbd, 0x7f, 0x8e, - 0xe9, 0x31, 0x39, 0xa6, 0xc7, 0xe4, 0x98, 0x1e, 0x93, 0x63, 0x7a, 0x4c, 0x8e, 0xe9, 0x31, 0x39, - 0xa6, 0xf7, 0xcc, 0xb1, 0xd0, 0xbd, 0xd3, 0xb2, 0x7b, 0x23, 0x73, 0x4c, 0xef, 0x91, 0x63, 0x7a, - 0x8f, 0x1c, 0xd3, 0x7b, 0xe4, 0x98, 0xde, 0x23, 0xc7, 0xf4, 0x1e, 0x39, 0xa6, 0xf7, 0xc8, 0x31, - 0xbd, 0x47, 0x8e, 0xe9, 0xbd, 0x72, 0x4c, 0xef, 0x99, 0x63, 0x7a, 0xcf, 0x1c, 0xd3, 0x7b, 0xe6, - 0x98, 0xde, 0x33, 0xc7, 0xf4, 0x9e, 0x39, 0xa6, 0x8b, 0x39, 0xf6, 0x6f, 0x74, 0x30, 0x69, 0x8e, - 0xed, 0x90, 0x57, 0x67, 0x98, 0x2b, 0x66, 0x95, 0x4c, 0x1b, 0xc6, 0xae, 0x33, 0x42, 0x97, 0xcc, - 0x2a, 0xb9, 0x26, 0xcf, 0x2f, 0x07, 0xf3, 0x3c, 0xdb, 0xe4, 0xf9, 0xab, 0xc1, 0x3c, 0xcf, 0x37, - 0x79, 0x7e, 0x25, 0x98, 0xe7, 0x19, 0x27, 0xcf, 0x5f, 0x0b, 0xe6, 0x79, 0xce, 0xc9, 0xf3, 0xd7, - 0x83, 0x79, 0x9e, 0x75, 0xf2, 0xfc, 0x8d, 0x60, 0x9e, 0xe7, 0x9d, 0x3c, 0x7f, 0x33, 0x98, 0xe7, - 0x99, 0x27, 0xcf, 0xdf, 0x32, 0xcf, 0xab, 0xb9, 0xc7, 0x05, 0x02, 0xd7, 0x9e, 0x57, 0xb3, 0x4f, - 0x91, 0xb8, 0x12, 0x4a, 0xf0, 0xfc, 0x53, 0x24, 0x96, 0x43, 0x09, 0x9e, 0x81, 0x8a, 0xc4, 0xd5, - 0xdc, 0x67, 0x88, 0xfb, 0x1c, 0xd5, 0x7d, 0x33, 0x8a, 0xfb, 0x12, 0x82, 0xeb, 0x66, 0x14, 0xd7, - 0x25, 0x04, 0xb7, 0xcd, 0x28, 0x6e, 0x4b, 0x08, 0x2e, 0x9b, 0x51, 0x5c, 0x96, 0x10, 0xdc, 0x35, - 0xa3, 0xb8, 0x2b, 0x21, 0xb8, 0x6a, 0x46, 0x71, 0x55, 0x42, 0x70, 0xd3, 0x8c, 0xe2, 0xa6, 0x84, - 0xe0, 0xa2, 0x19, 0xc5, 0x45, 0x09, 0xc1, 0x3d, 0x33, 0x8a, 0x7b, 0x12, 0x82, 0x6b, 0xce, 0xa9, - 0xae, 0x49, 0x88, 0x6e, 0x39, 0xa7, 0xba, 0x25, 0x21, 0xba, 0xe4, 0x9c, 0xea, 0x92, 0x84, 0xe8, - 0x8e, 0x73, 0xaa, 0x3b, 0x12, 0xa2, 0x2b, 0xfe, 0x3c, 0xc1, 0x3b, 0xc2, 0x5d, 0xbf, 0xdd, 0xa9, - 0xfa, 0x0f, 0xd5, 0x11, 0x2e, 0x49, 0xed, 0x43, 0x7a, 0xd9, 0x5c, 0x24, 0x0d, 0xab, 0xd8, 0x71, - 0x2a, 0x2b, 0xd8, 0x92, 0xd4, 0x58, 0x08, 0x08, 0x27, 0x1a, 0xb1, 0xf2, 0x50, 0xbd, 0xe1, 0x92, - 0xd4, 0x66, 0xc4, 0xeb, 0x77, 0xf3, 0x43, 0xef, 0xd8, 0xde, 0x4d, 0xf0, 0x8e, 0x8d, 0x99, 0xff, - 0xb4, 0x1d, 0xdb, 0x42, 0xbc, 0xc9, 0x03, 0x63, 0x2f, 0xc4, 0x1b, 0xbb, 0x6b, 0xd5, 0x19, 0xb4, - 0x83, 0x5b, 0x88, 0x37, 0x6d, 0x60, 0xd4, 0x0f, 0xb6, 0xdf, 0x62, 0x11, 0x6c, 0xa1, 0x56, 0x44, - 0x04, 0x9f, 0xb6, 0xdf, 0x5a, 0x92, 0x4a, 0xc9, 0x69, 0x23, 0x58, 0x3f, 0x75, 0x04, 0x9f, 0xb6, - 0xf3, 0x5a, 0x92, 0xca, 0xcb, 0xa9, 0x23, 0xf8, 0x43, 0xe8, 0x87, 0x58, 0x04, 0x87, 0xe6, 0x3f, - 0x6d, 0x3f, 0xb4, 0x10, 0x6f, 0xf2, 0xc8, 0x08, 0xd6, 0x4f, 0x11, 0xc1, 0x83, 0xf4, 0x47, 0x0b, - 0xf1, 0xa6, 0x8d, 0x8e, 0xe0, 0x87, 0xee, 0x66, 0xbe, 0xa4, 0xc1, 0xe4, 0x56, 0xbd, 0x56, 0x6e, - 0x1e, 0xa0, 0x5a, 0x0d, 0xd5, 0x98, 0x1d, 0x97, 0xa4, 0x4a, 0xd0, 0xc3, 0xd5, 0xdf, 0x7a, 0x6f, - 0x2e, 0xb4, 0xf0, 0x35, 0x48, 0x51, 0x9b, 0x2e, 0x2d, 0x65, 0xef, 0x69, 0x31, 0x15, 0x2e, 0x10, - 0x35, 0x2f, 0x70, 0xd8, 0x95, 0xa5, 0xec, 0x7f, 0xd6, 0x84, 0x2a, 0x17, 0x0c, 0xe7, 0x7e, 0x8d, - 0x68, 0xe8, 0x3c, 0xb4, 0x86, 0x97, 0x07, 0xd2, 0x50, 0xd0, 0xed, 0xf1, 0x2e, 0xdd, 0x04, 0xad, - 0x3a, 0x30, 0xb1, 0x55, 0xaf, 0x6d, 0x91, 0x2f, 0xbc, 0x0e, 0xa2, 0x12, 0x95, 0x51, 0xea, 0xc1, - 0x92, 0x14, 0x96, 0x22, 0x22, 0x08, 0x69, 0xb9, 0x46, 0xe4, 0xea, 0xf8, 0xb4, 0x8e, 0x74, 0xda, - 0x85, 0x5e, 0xa7, 0x0d, 0x2b, 0x7b, 0x70, 0xc2, 0x85, 0x5e, 0x27, 0x0c, 0x73, 0x28, 0x38, 0xd5, - 0x5b, 0x7c, 0x71, 0xa6, 0x6f, 0xe1, 0x98, 0xe7, 0x20, 0xb1, 0x4e, 0xdf, 0xaf, 0xcd, 0x14, 0x33, - 0x58, 0xa9, 0x6f, 0xbf, 0x37, 0x97, 0xdc, 0xef, 0xd4, 0x6b, 0x56, 0x62, 0xbd, 0x66, 0xde, 0x85, - 0xa1, 0x4f, 0xb2, 0xaf, 0x8d, 0x61, 0x81, 0x15, 0x26, 0xf0, 0xd1, 0x98, 0x2d, 0x26, 0x42, 0xbd, - 0xb8, 0x5f, 0x77, 0xfc, 0x2b, 0xcb, 0x37, 0x2d, 0x4a, 0x91, 0xfb, 0x8b, 0x00, 0xf4, 0x9c, 0xab, - 0xb6, 0x77, 0x6c, 0x6e, 0x71, 0x66, 0x7a, 0xea, 0x9b, 0xdf, 0x7e, 0x6f, 0x6e, 0x65, 0x10, 0xd6, - 0x67, 0x6b, 0xb6, 0x77, 0xfc, 0xac, 0x7f, 0xd2, 0x42, 0x8b, 0xc5, 0x13, 0x1f, 0x79, 0x9c, 0xbd, - 0xc5, 0x57, 0x3d, 0x76, 0x5d, 0x59, 0xe1, 0xba, 0x52, 0xd2, 0x35, 0xad, 0xc9, 0xd7, 0xb4, 0xf4, - 0xa0, 0xd7, 0xf3, 0x16, 0x5f, 0x24, 0x14, 0x4b, 0xea, 0x71, 0x96, 0xd4, 0x1f, 0xd6, 0x92, 0x2d, - 0x5e, 0x1f, 0x95, 0x6b, 0xd5, 0xfb, 0x5d, 0xab, 0xfe, 0x30, 0xd7, 0xfa, 0xa7, 0x34, 0x5b, 0x83, - 0x7c, 0xda, 0x77, 0xe8, 0x0b, 0x8a, 0x3f, 0x5b, 0x7b, 0x41, 0x1f, 0x68, 0x17, 0x90, 0x4f, 0xde, - 0x7b, 0x67, 0x4e, 0xcb, 0x7d, 0x29, 0xc1, 0xaf, 0x9c, 0x26, 0xd2, 0x83, 0x5d, 0xf9, 0xcf, 0x4a, - 0x4f, 0xf5, 0x61, 0x58, 0xe8, 0x8b, 0x1a, 0x4c, 0x77, 0x55, 0x72, 0x6a, 0xa6, 0x0f, 0xb6, 0x9c, - 0x3b, 0xa7, 0x2d, 0xe7, 0x4c, 0xc1, 0xdf, 0xd3, 0xe0, 0xac, 0x52, 0x5e, 0xa9, 0x7a, 0x97, 0x15, - 0xf5, 0x1e, 0xed, 0x3e, 0x13, 0x11, 0x14, 0xb4, 0x13, 0xdd, 0xab, 0x00, 0x04, 0xe6, 0xc0, 0xef, - 0x2b, 0x8a, 0xdf, 0xcf, 0x05, 0x80, 0x08, 0x73, 0xf1, 0x08, 0x60, 0x6a, 0xbb, 0x90, 0xdc, 0x6b, - 0x23, 0x64, 0xce, 0x42, 0x62, 0xbb, 0xcd, 0x34, 0x1c, 0xa7, 0xf8, 0xed, 0x76, 0xb1, 0x6d, 0x3b, - 0xd5, 0x63, 0x2b, 0xb1, 0xdd, 0x36, 0x2f, 0x80, 0x5e, 0x60, 0x5f, 0xcc, 0x4f, 0x2f, 0x4f, 0x50, - 0x81, 0x82, 0x53, 0x63, 0x12, 0x78, 0xce, 0x9c, 0x85, 0xe4, 0x06, 0xb2, 0x0f, 0x99, 0x12, 0x40, - 0x65, 0xf0, 0x88, 0x45, 0xc6, 0xd9, 0x09, 0x5f, 0x86, 0x14, 0x27, 0x36, 0x2f, 0x62, 0xc4, 0xa1, - 0xcf, 0x4e, 0xcb, 0x10, 0x58, 0x1d, 0xb6, 0x72, 0x91, 0x59, 0xf3, 0x12, 0x0c, 0x59, 0xf5, 0xa3, - 0x63, 0x9f, 0x9d, 0xbc, 0x5b, 0x8c, 0x4e, 0xe7, 0x5e, 0x81, 0xd1, 0x40, 0xa3, 0x0f, 0x98, 0x7a, - 0x95, 0x5e, 0x9a, 0x39, 0x23, 0xae, 0x27, 0x7c, 0xdf, 0x92, 0x0e, 0x99, 0xe7, 0x21, 0xb5, 0xeb, - 0xb7, 0xc3, 0xa2, 0xcf, 0x3b, 0xd2, 0x60, 0x34, 0xf7, 0x4b, 0x1a, 0xa4, 0x56, 0x11, 0x6a, 0x11, - 0x83, 0x3f, 0x05, 0xc9, 0x55, 0xf7, 0x4d, 0x87, 0x29, 0x38, 0xc9, 0x2c, 0x8a, 0xa7, 0x99, 0x4d, - 0xc9, 0xb4, 0xf9, 0x94, 0x68, 0xf7, 0xa9, 0xc0, 0xee, 0x82, 0x1c, 0xb1, 0x7d, 0x4e, 0xb2, 0x3d, - 0x73, 0x20, 0x16, 0xea, 0xb2, 0xff, 0x0d, 0x48, 0x0b, 0x67, 0x31, 0xe7, 0x99, 0x1a, 0x09, 0x15, - 0x28, 0xda, 0x0a, 0x4b, 0xe4, 0x10, 0x8c, 0x49, 0x27, 0xc6, 0x50, 0xc1, 0xc4, 0x3d, 0xa0, 0xc4, - 0xcc, 0x0b, 0xb2, 0x99, 0xa3, 0x45, 0x99, 0xa9, 0x97, 0xa8, 0x8d, 0x88, 0xb9, 0x2f, 0xd2, 0xe0, - 0xec, 0xed, 0x44, 0xfc, 0x39, 0x37, 0x04, 0xfa, 0x56, 0xbd, 0x91, 0x7b, 0x0e, 0x80, 0xa6, 0x7c, - 0xd9, 0xe9, 0x34, 0x95, 0xac, 0x1b, 0xe7, 0x06, 0xde, 0x3b, 0x46, 0x7b, 0xc8, 0x23, 0x22, 0x72, - 0x3f, 0x85, 0x0b, 0x0c, 0xd0, 0x14, 0x23, 0xf8, 0x67, 0x62, 0xf1, 0x91, 0x9d, 0x18, 0x16, 0xcd, - 0x52, 0xd1, 0x57, 0x90, 0x5f, 0x70, 0x5c, 0xff, 0x18, 0xb5, 0x15, 0xc4, 0xb2, 0x79, 0x55, 0x4a, - 0xd8, 0xf1, 0xe5, 0xc7, 0x03, 0x44, 0x4f, 0xd0, 0xd5, 0xdc, 0xd7, 0x88, 0x82, 0xb8, 0x15, 0xe8, - 0xba, 0x40, 0x7d, 0x80, 0x0b, 0x34, 0xaf, 0x4b, 0xfd, 0x5b, 0x1f, 0x35, 0x95, 0x5b, 0xcb, 0x5b, - 0xd2, 0x7d, 0x4e, 0x7f, 0x65, 0xe5, 0x7b, 0x4c, 0x6e, 0x53, 0xae, 0xf2, 0x33, 0xb1, 0x2a, 0xf7, - 0xe8, 0x6e, 0x4f, 0x6b, 0x53, 0x7d, 0x50, 0x9b, 0xfe, 0x41, 0xd0, 0x71, 0xd0, 0x9f, 0x38, 0x20, - 0xbf, 0xa8, 0x61, 0x7e, 0x34, 0xd6, 0xf7, 0x79, 0xad, 0x14, 0xa8, 0xba, 0x32, 0xa8, 0xfb, 0xf3, - 0x89, 0x62, 0x31, 0x50, 0xf7, 0xc6, 0x29, 0x42, 0x20, 0x9f, 0x28, 0x95, 0x82, 0xb2, 0x9d, 0xfa, - 0xcc, 0x3b, 0x73, 0xda, 0x57, 0xdf, 0x99, 0x3b, 0x93, 0xfb, 0x6d, 0x0d, 0x26, 0x99, 0xa4, 0x10, - 0xb8, 0xcf, 0x2a, 0xca, 0x3f, 0xc2, 0x6b, 0x46, 0x94, 0x05, 0x7e, 0x62, 0xc1, 0xfb, 0x4d, 0x0d, - 0xb2, 0x5d, 0xba, 0x72, 0x7b, 0x2f, 0x0d, 0xa4, 0x72, 0x5e, 0x2b, 0xff, 0xf4, 0x6d, 0xfe, 0x0a, - 0x0c, 0xed, 0xd5, 0x9b, 0xa8, 0x8d, 0x57, 0x02, 0xfc, 0x81, 0xaa, 0xcc, 0x1f, 0xe6, 0xd0, 0x21, - 0x3e, 0x47, 0x95, 0x93, 0xe6, 0x96, 0xcd, 0x2c, 0x24, 0x57, 0x6d, 0xdf, 0x26, 0x1a, 0x64, 0x82, - 0xfa, 0x6a, 0xfb, 0x76, 0xee, 0x2a, 0x64, 0x36, 0x4f, 0xc8, 0x2b, 0x34, 0x35, 0xf2, 0x7a, 0x88, - 0xdc, 0xfd, 0xf1, 0x7e, 0xf5, 0xca, 0xc2, 0x50, 0xaa, 0x66, 0xdc, 0xd3, 0xf2, 0x49, 0xa2, 0xcf, - 0x1b, 0x30, 0xbe, 0x8d, 0xd5, 0x26, 0x38, 0x02, 0x3b, 0x0f, 0xda, 0xa6, 0xdc, 0x08, 0x89, 0xac, - 0x96, 0xb6, 0xa9, 0xb4, 0x8f, 0x7a, 0x60, 0x1e, 0xa5, 0x6d, 0xd3, 0x83, 0xb6, 0x6d, 0x21, 0x99, - 0x1a, 0x37, 0x26, 0x17, 0x92, 0x29, 0x30, 0xc6, 0xd8, 0x79, 0xff, 0xa3, 0x0e, 0x06, 0x6d, 0x75, - 0x56, 0xd1, 0x61, 0xdd, 0xa9, 0xfb, 0xdd, 0xfd, 0x6a, 0xa0, 0xb1, 0xf9, 0x02, 0x8c, 0x62, 0x93, - 0xae, 0xb1, 0x1f, 0xa6, 0xc2, 0xa6, 0xbf, 0xc0, 0x5a, 0x14, 0x85, 0x82, 0x0d, 0x90, 0xd0, 0x09, - 0x31, 0xe6, 0x1a, 0xe8, 0x5b, 0x5b, 0x9b, 0x6c, 0x71, 0x5b, 0xe9, 0x0b, 0x65, 0x6f, 0xe0, 0xb0, - 0x23, 0x36, 0xe6, 0x1d, 0x59, 0x98, 0xc0, 0x5c, 0x81, 0xc4, 0xd6, 0x26, 0x6b, 0x78, 0x2f, 0x0e, - 0x42, 0x63, 0x25, 0xb6, 0x36, 0x67, 0xfe, 0xad, 0x06, 0x63, 0xd2, 0xa8, 0x99, 0x83, 0x0c, 0x1d, - 0x10, 0x2e, 0x77, 0xd8, 0x92, 0xc6, 0xb8, 0xce, 0x89, 0x87, 0xd4, 0x79, 0xa6, 0x00, 0x13, 0xca, - 0xb8, 0xb9, 0x08, 0xa6, 0x38, 0xc4, 0x94, 0xa0, 0x3f, 0xea, 0x13, 0x31, 0x93, 0x7b, 0x02, 0x20, - 0xb4, 0x6b, 0xf0, 0x5b, 0x34, 0x5b, 0xe5, 0xdd, 0xbd, 0xf2, 0xaa, 0xa1, 0xe5, 0xbe, 0xa1, 0x41, - 0x9a, 0xb5, 0xad, 0x55, 0xb7, 0x85, 0xcc, 0x22, 0x68, 0x05, 0x16, 0x41, 0x0f, 0xa6, 0xb7, 0x56, - 0x30, 0x2f, 0x83, 0x56, 0x1c, 0xdc, 0xd5, 0x5a, 0xd1, 0x5c, 0x06, 0xad, 0xc4, 0x1c, 0x3c, 0x98, - 0x67, 0xb4, 0x52, 0xee, 0x8f, 0x75, 0x98, 0x12, 0xdb, 0x68, 0x5e, 0x4f, 0x2e, 0xc8, 0xf7, 0x4d, - 0xf9, 0xd1, 0x2b, 0xcb, 0x57, 0x57, 0x16, 0xf1, 0x3f, 0x41, 0x48, 0x5e, 0x90, 0x6f, 0xa1, 0xba, - 0x45, 0xba, 0x5e, 0x13, 0xc9, 0x27, 0x85, 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xae, 0xd7, 0x44, - 0xa4, 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xae, 0x47, 0x01, 0xd2, 0x6c, 0xd7, 0x6b, 0x22, 0xd2, - 0x6c, 0xd7, 0x6b, 0x22, 0xd2, 0x6c, 0xf7, 0x6b, 0x22, 0x6c, 0xba, 0xe7, 0x6b, 0x22, 0xf2, 0x7c, - 0xf7, 0x6b, 0x22, 0xf2, 0x7c, 0xf7, 0x6b, 0x22, 0xf9, 0xa4, 0xdf, 0xee, 0xa0, 0xde, 0x0f, 0x1d, - 0x64, 0x7c, 0xbf, 0x7b, 0xc0, 0xb0, 0x00, 0x6f, 0xc3, 0x04, 0xdd, 0x8f, 0x28, 0xb9, 0x8e, 0x6f, - 0xd7, 0x1d, 0xd4, 0x36, 0x3f, 0x06, 0x19, 0x3a, 0x44, 0xef, 0x72, 0xa2, 0xee, 0x02, 0xe9, 0x3c, - 0x2b, 0xb7, 0x92, 0x74, 0xee, 0xcf, 0x93, 0x30, 0x4d, 0x07, 0xb6, 0xec, 0x26, 0x92, 0x5e, 0x32, - 0xba, 0xa4, 0x3c, 0x52, 0x1a, 0xc7, 0xf0, 0xfb, 0xef, 0xcd, 0xd1, 0xd1, 0x42, 0x10, 0x4c, 0x97, - 0x94, 0x87, 0x4b, 0xb2, 0x5c, 0xb8, 0xfe, 0x5c, 0x52, 0x5e, 0x3c, 0x92, 0xe5, 0x82, 0xe5, 0x26, - 0x90, 0xe3, 0xaf, 0x20, 0xc9, 0x72, 0xab, 0x41, 0x94, 0x5d, 0x52, 0x5e, 0x46, 0x92, 0xe5, 0xca, - 0x41, 0xbc, 0x5d, 0x52, 0x1e, 0x3d, 0xc9, 0x72, 0x6b, 0x41, 0xe4, 0x5d, 0x52, 0x1e, 0x42, 0xc9, - 0x72, 0x77, 0x82, 0x18, 0xbc, 0xa4, 0xbc, 0xaa, 0x24, 0xcb, 0xbd, 0x18, 0x44, 0xe3, 0x25, 0xe5, - 0xa5, 0x25, 0x59, 0x6e, 0x3d, 0x88, 0xcb, 0x79, 0xf5, 0xf5, 0x25, 0x59, 0xf0, 0x6e, 0x18, 0xa1, - 0xf3, 0xea, 0x8b, 0x4c, 0xb2, 0xe4, 0xc7, 0xc3, 0x58, 0x9d, 0x57, 0x5f, 0x69, 0x92, 0x25, 0x37, - 0xc2, 0xa8, 0x9d, 0x57, 0x1f, 0x95, 0xc9, 0x92, 0x9b, 0x61, 0xfc, 0xce, 0xab, 0x0f, 0xcd, 0x64, - 0xc9, 0xad, 0x30, 0x92, 0xe7, 0xd5, 0xc7, 0x67, 0xb2, 0xe4, 0x76, 0xb8, 0x87, 0xfe, 0x87, 0x4a, - 0xf8, 0x09, 0x2f, 0x41, 0xe5, 0x94, 0xf0, 0x83, 0x88, 0xd0, 0xcb, 0x29, 0xa1, 0x07, 0x11, 0x61, - 0x97, 0x53, 0xc2, 0x0e, 0x22, 0x42, 0x2e, 0xa7, 0x84, 0x1c, 0x44, 0x84, 0x5b, 0x4e, 0x09, 0x37, - 0x88, 0x08, 0xb5, 0x9c, 0x12, 0x6a, 0x10, 0x11, 0x66, 0x39, 0x25, 0xcc, 0x20, 0x22, 0xc4, 0x72, - 0x4a, 0x88, 0x41, 0x44, 0x78, 0xe5, 0x94, 0xf0, 0x82, 0x88, 0xd0, 0xba, 0xa8, 0x86, 0x16, 0x44, - 0x85, 0xd5, 0x45, 0x35, 0xac, 0x20, 0x2a, 0xa4, 0x9e, 0x54, 0x43, 0x6a, 0xf4, 0xfe, 0x7b, 0x73, - 0x43, 0x78, 0x48, 0x88, 0xa6, 0x8b, 0x6a, 0x34, 0x41, 0x54, 0x24, 0x5d, 0x54, 0x23, 0x09, 0xa2, - 0xa2, 0xe8, 0xa2, 0x1a, 0x45, 0x10, 0x15, 0x41, 0xef, 0xaa, 0x11, 0x14, 0xbe, 0xe2, 0x93, 0x53, - 0x9e, 0x28, 0xc6, 0x45, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, - 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x83, 0x44, - 0x90, 0x3e, 0x50, 0x04, 0xe9, 0xbd, 0x22, 0xe8, 0xa2, 0xfa, 0xc2, 0x03, 0x44, 0x15, 0xa4, 0x8b, - 0xea, 0x93, 0xcf, 0xf8, 0x10, 0xd2, 0x07, 0x0a, 0x21, 0xbd, 0x57, 0x08, 0xfd, 0xa1, 0x0e, 0x53, - 0x52, 0x08, 0xb1, 0xc7, 0x43, 0x1f, 0x54, 0x05, 0xba, 0x3e, 0xc0, 0xfb, 0x15, 0x51, 0x31, 0x75, - 0x7d, 0x80, 0x67, 0xd4, 0xfd, 0xe2, 0xac, 0xbb, 0x0a, 0x95, 0x07, 0xa8, 0x42, 0x6b, 0x41, 0x0c, - 0x5d, 0x1f, 0xe0, 0xbd, 0x8b, 0xee, 0xd8, 0xbb, 0xd9, 0xaf, 0x08, 0xbc, 0x38, 0x50, 0x11, 0x58, - 0x1f, 0xa8, 0x08, 0xdc, 0x0d, 0x3d, 0xf8, 0xcb, 0x09, 0x38, 0x1b, 0x7a, 0x90, 0x7e, 0x22, 0x3f, - 0x30, 0x94, 0x13, 0x9e, 0x50, 0x99, 0xfc, 0xa9, 0x8d, 0xe0, 0xc6, 0xc4, 0x7a, 0xcd, 0xdc, 0x91, - 0x9f, 0x55, 0xe5, 0x4f, 0xfb, 0xfc, 0x46, 0xf0, 0x38, 0xdb, 0x0b, 0xbd, 0x08, 0xfa, 0x7a, 0xcd, - 0x23, 0xd5, 0x22, 0xea, 0xb4, 0x25, 0x0b, 0x4f, 0x9b, 0x16, 0x0c, 0x13, 0x71, 0x8f, 0xb8, 0xf7, - 0x61, 0x4e, 0xbc, 0x6a, 0x31, 0xa6, 0xdc, 0xbb, 0x1a, 0x9c, 0x97, 0x42, 0xf9, 0x83, 0x79, 0x62, - 0x70, 0x7b, 0xa0, 0x27, 0x06, 0x52, 0x82, 0x84, 0x4f, 0x0f, 0x9e, 0xee, 0x7e, 0x50, 0x2d, 0x66, - 0x89, 0xfa, 0x24, 0xe1, 0xaf, 0xc0, 0x78, 0x78, 0x05, 0xe4, 0x96, 0xed, 0x5a, 0xfc, 0x66, 0x66, - 0x54, 0x6a, 0x5e, 0x53, 0x36, 0xd1, 0xfa, 0xc2, 0x82, 0x6c, 0xcd, 0xe5, 0x61, 0x62, 0x4b, 0xfe, - 0x2e, 0x4f, 0xdc, 0x5e, 0x44, 0x0a, 0xb7, 0xe6, 0xf7, 0xbe, 0x3c, 0x77, 0x26, 0xf7, 0x51, 0xc8, - 0x88, 0x5f, 0xd7, 0x51, 0x80, 0xa3, 0x1c, 0x98, 0x4f, 0x7e, 0x0b, 0x4b, 0xff, 0x03, 0x0d, 0x1e, - 0x11, 0xc5, 0x5f, 0xaa, 0xfb, 0xc7, 0xeb, 0x0e, 0xee, 0xe9, 0x9f, 0x83, 0x14, 0x62, 0x8e, 0x63, - 0x3f, 0x78, 0xc2, 0x6e, 0x23, 0x23, 0xc5, 0x17, 0xc9, 0xbf, 0x56, 0x00, 0x51, 0xb6, 0x38, 0xf8, - 0x69, 0x97, 0x67, 0x9e, 0x82, 0x21, 0xca, 0x2f, 0xeb, 0x35, 0xa6, 0xe8, 0xf5, 0x5b, 0x11, 0x7a, - 0x91, 0x38, 0x32, 0xef, 0x4a, 0x7a, 0x09, 0x77, 0xab, 0x91, 0xe2, 0x8b, 0x3c, 0xf8, 0x8a, 0x29, - 0xdc, 0xff, 0x91, 0x88, 0x8a, 0x57, 0x72, 0x1e, 0x52, 0x65, 0x55, 0x26, 0x5a, 0xcf, 0x55, 0x48, - 0x6e, 0xb9, 0x35, 0xf2, 0x53, 0x2c, 0xe4, 0xd7, 0x64, 0x99, 0x91, 0xd9, 0x4f, 0xcb, 0x5e, 0x82, - 0x54, 0xe9, 0xb8, 0xde, 0xa8, 0xb5, 0x91, 0xc3, 0x1e, 0xd9, 0xb3, 0x1d, 0x74, 0x8c, 0xb1, 0x82, - 0xb9, 0x5c, 0x09, 0x26, 0xb7, 0x5c, 0xa7, 0x78, 0xe2, 0x8b, 0x75, 0x63, 0x51, 0x49, 0x11, 0xf6, - 0xc8, 0x87, 0x7c, 0x01, 0x04, 0x0b, 0x14, 0x87, 0xbe, 0xfd, 0xde, 0x9c, 0xb6, 0x17, 0x6c, 0x9f, - 0x6f, 0xc2, 0xa3, 0x2c, 0x7d, 0xba, 0xa8, 0x96, 0xe3, 0xa8, 0x46, 0xd9, 0x63, 0x6a, 0x81, 0x6e, - 0x1d, 0xd3, 0x39, 0x91, 0x74, 0x0f, 0xa6, 0x19, 0x6e, 0x8a, 0xfa, 0x6a, 0xa6, 0x9f, 0x4a, 0xb3, - 0x48, 0xba, 0xc5, 0x38, 0x3a, 0x45, 0xb3, 0x27, 0x61, 0x34, 0x98, 0x13, 0xa2, 0x41, 0xcc, 0x94, - 0xe5, 0x85, 0x1c, 0xa4, 0x85, 0x84, 0x35, 0x87, 0x40, 0x2b, 0x18, 0x67, 0xf0, 0x7f, 0x45, 0x43, - 0xc3, 0xff, 0x95, 0x8c, 0xc4, 0xc2, 0x53, 0x30, 0xa1, 0x6c, 0x5f, 0xe2, 0x99, 0x55, 0x03, 0xf0, - 0x7f, 0x65, 0x23, 0x3d, 0x93, 0xfc, 0xcc, 0x3f, 0x9a, 0x3d, 0xb3, 0x70, 0x1b, 0xcc, 0xee, 0x8d, - 0x4e, 0x73, 0x18, 0x12, 0x05, 0x4c, 0xf9, 0x28, 0x24, 0x8a, 0x45, 0x43, 0x9b, 0x99, 0xf8, 0x1b, - 0x5f, 0x38, 0x9f, 0x2e, 0x92, 0xef, 0x22, 0xbf, 0x82, 0xfc, 0x62, 0x91, 0x81, 0x9f, 0x87, 0x47, - 0x22, 0x37, 0x4a, 0x31, 0xbe, 0x54, 0xa2, 0xf8, 0xd5, 0xd5, 0x2e, 0xfc, 0xea, 0x2a, 0xc1, 0x6b, - 0x79, 0xfe, 0xc0, 0xb9, 0x60, 0x46, 0x6c, 0x4b, 0x66, 0x6b, 0xc2, 0x03, 0xee, 0x42, 0xfe, 0x79, - 0x26, 0x5b, 0x8c, 0x94, 0x45, 0x31, 0x0f, 0xac, 0x8b, 0xf9, 0x12, 0xc3, 0x97, 0x22, 0xf1, 0x87, - 0xca, 0x53, 0x55, 0x79, 0x85, 0x60, 0x24, 0xa5, 0x40, 0xe1, 0xd5, 0x48, 0x92, 0x63, 0xe1, 0x5d, - 0xf7, 0xd5, 0x40, 0xe1, 0x72, 0xa4, 0x6c, 0x3d, 0xe6, 0x9d, 0xaf, 0x72, 0xfe, 0x32, 0x5b, 0xe4, - 0x0b, 0x57, 0xcc, 0x47, 0x78, 0x8e, 0x4a, 0x15, 0x98, 0x19, 0x88, 0x4b, 0xe5, 0x4b, 0x0c, 0x50, - 0xec, 0x09, 0xe8, 0x6d, 0x25, 0x8e, 0xcc, 0xbf, 0xc8, 0x48, 0x4a, 0x3d, 0x49, 0x62, 0x4c, 0xc5, - 0xe1, 0xc5, 0xbd, 0x7b, 0xef, 0xcf, 0x9e, 0xf9, 0xd6, 0xfb, 0xb3, 0x67, 0xfe, 0xeb, 0xfb, 0xb3, - 0x67, 0xbe, 0xf3, 0xfe, 0xac, 0xf6, 0xfd, 0xf7, 0x67, 0xb5, 0x1f, 0xbe, 0x3f, 0xab, 0xfd, 0xd9, - 0xfb, 0xb3, 0xda, 0xdb, 0xf7, 0x67, 0xb5, 0xaf, 0xde, 0x9f, 0xd5, 0xbe, 0x76, 0x7f, 0x56, 0xfb, - 0xfd, 0xfb, 0xb3, 0xda, 0xbb, 0xf7, 0x67, 0xb5, 0x7b, 0xf7, 0x67, 0xb5, 0x6f, 0xdd, 0x9f, 0xd5, - 0xbe, 0x73, 0x7f, 0x56, 0xfb, 0xfe, 0xfd, 0xd9, 0x33, 0x3f, 0xbc, 0x3f, 0xab, 0xfd, 0xd9, 0xfd, - 0xd9, 0x33, 0x6f, 0x7f, 0x77, 0xf6, 0xcc, 0x3b, 0xdf, 0x9d, 0x3d, 0xf3, 0xd5, 0xef, 0xce, 0x6a, - 0xf0, 0x9d, 0x15, 0x78, 0x5c, 0xf9, 0x22, 0x19, 0xe9, 0x06, 0xae, 0xf2, 0x9f, 0x72, 0x0a, 0x06, - 0x4e, 0xf9, 0x7d, 0xb2, 0x99, 0x07, 0xfd, 0xf6, 0x5a, 0xee, 0xdf, 0x0d, 0xc1, 0x08, 0xdf, 0x05, - 0x8e, 0xfa, 0xa9, 0xe4, 0x6b, 0x90, 0x3a, 0xae, 0x37, 0xec, 0x76, 0xdd, 0x3f, 0x61, 0xdb, 0x9f, - 0x8f, 0x2d, 0x86, 0x6a, 0xf3, 0x0d, 0xd3, 0x17, 0x3b, 0x4d, 0xb7, 0xd3, 0xb6, 0x02, 0x51, 0xf3, - 0x3c, 0x64, 0x8e, 0x51, 0xfd, 0xe8, 0xd8, 0xaf, 0xd4, 0x9d, 0x4a, 0xb5, 0x49, 0xda, 0xe4, 0x31, - 0x0b, 0xe8, 0xd8, 0xba, 0x53, 0x6a, 0xe2, 0x93, 0xd5, 0x6c, 0xdf, 0x26, 0xb7, 0xe7, 0x19, 0x8b, - 0x7c, 0x36, 0x2f, 0x40, 0xa6, 0x8d, 0xbc, 0x4e, 0xc3, 0xaf, 0x54, 0xdd, 0x8e, 0xe3, 0x93, 0x46, - 0x56, 0xb7, 0xd2, 0x74, 0xac, 0x84, 0x87, 0xcc, 0x27, 0x61, 0xcc, 0x6f, 0x77, 0x50, 0xc5, 0xab, - 0xba, 0xbe, 0xd7, 0xb4, 0x1d, 0xd2, 0xc8, 0xa6, 0xac, 0x0c, 0x1e, 0xdc, 0x65, 0x63, 0xe4, 0xa7, - 0xf8, 0xab, 0x6e, 0x1b, 0x91, 0xfb, 0xe8, 0x84, 0x45, 0x0f, 0x4c, 0x03, 0xf4, 0xd7, 0xd1, 0x09, - 0xb9, 0x53, 0x4b, 0x5a, 0xf8, 0xa3, 0xf9, 0x0c, 0x0c, 0xd3, 0xbf, 0xd2, 0x40, 0xda, 0x6a, 0xf2, - 0xd0, 0x3a, 0xb8, 0x34, 0xba, 0x39, 0x6b, 0x31, 0x01, 0xf3, 0x16, 0x8c, 0xf8, 0xa8, 0xdd, 0xb6, - 0xeb, 0x0e, 0xb9, 0x6b, 0x4a, 0x2f, 0xcf, 0x45, 0x98, 0x61, 0x8f, 0x4a, 0x90, 0x5f, 0x45, 0xb5, - 0xb8, 0xbc, 0x79, 0x0d, 0x32, 0x44, 0x6e, 0xb9, 0x42, 0xff, 0x92, 0x45, 0xba, 0x67, 0x20, 0xa7, - 0xa9, 0x1c, 0x7f, 0x46, 0xc0, 0x61, 0xf4, 0x67, 0xed, 0xc6, 0xc8, 0x69, 0x9f, 0x8c, 0x38, 0x2d, - 0xa9, 0xb9, 0xcb, 0xa4, 0x5f, 0xa4, 0xa7, 0x66, 0x3c, 0xf4, 0x87, 0xef, 0x36, 0x21, 0x23, 0xea, - 0xc5, 0xcd, 0x40, 0xfb, 0x1e, 0x62, 0x86, 0xa7, 0xc3, 0x5f, 0x39, 0xef, 0x61, 0x05, 0x3a, 0x9f, - 0x4f, 0xdc, 0xd4, 0x66, 0x76, 0xc0, 0x50, 0xcf, 0x17, 0x41, 0x79, 0x49, 0xa6, 0x34, 0xc4, 0x8b, - 0x25, 0x3b, 0xe4, 0x21, 0x63, 0xee, 0x05, 0x18, 0xa6, 0xf1, 0x63, 0xa6, 0x61, 0x64, 0x7f, 0xeb, - 0xe3, 0x5b, 0xdb, 0x2f, 0x6d, 0xd1, 0xdf, 0x1b, 0xdd, 0xd9, 0xdf, 0xda, 0xa5, 0xbf, 0x1a, 0xba, - 0xbb, 0x51, 0xd8, 0xd9, 0xdd, 0x5b, 0x2f, 0x7d, 0xdc, 0x48, 0x98, 0x13, 0x90, 0x2e, 0xae, 0x6f, - 0x6c, 0x54, 0x8a, 0x85, 0xf5, 0x8d, 0xf2, 0x2b, 0x86, 0x9e, 0x9b, 0x85, 0x61, 0xaa, 0x27, 0xf9, - 0x09, 0xb7, 0x8e, 0xe3, 0x9c, 0xf0, 0xbe, 0x81, 0x1c, 0xe4, 0xbe, 0x6e, 0xc2, 0x48, 0xa1, 0xd1, - 0xd8, 0xb4, 0x5b, 0x9e, 0xf9, 0x12, 0x4c, 0xd2, 0x5f, 0x92, 0xd8, 0x73, 0x57, 0xc9, 0x2f, 0x0d, - 0xe2, 0xaa, 0xa0, 0xb1, 0x5f, 0x77, 0x0f, 0xaf, 0x9b, 0x89, 0x2f, 0x76, 0xc9, 0x52, 0x03, 0x77, - 0x73, 0x98, 0x7b, 0x60, 0xf0, 0xc1, 0xb5, 0x86, 0x6b, 0xfb, 0x98, 0x37, 0xc1, 0x7e, 0x08, 0xb0, - 0x37, 0x2f, 0x17, 0xa5, 0xb4, 0x5d, 0x0c, 0xe6, 0xc7, 0x20, 0xb5, 0xee, 0xf8, 0x57, 0x97, 0x31, - 0x1b, 0xff, 0xcb, 0x23, 0xdd, 0x6c, 0x5c, 0x84, 0xb2, 0x04, 0x08, 0x86, 0xbe, 0xbe, 0x82, 0xd1, - 0xc9, 0x7e, 0x68, 0x22, 0x12, 0xa2, 0xc9, 0xa1, 0xf9, 0x02, 0x8c, 0xe2, 0xdb, 0x12, 0x7a, 0xf2, - 0x21, 0xde, 0xb3, 0x76, 0xc1, 0x03, 0x19, 0x8a, 0x0f, 0x31, 0x9c, 0x80, 0x9e, 0x7f, 0xb8, 0x2f, - 0x81, 0xa0, 0x40, 0x88, 0xc1, 0x04, 0xbb, 0x81, 0x06, 0x23, 0x3d, 0x09, 0x76, 0x15, 0x0d, 0x76, - 0x45, 0x0d, 0x76, 0x03, 0x0d, 0x52, 0x7d, 0x09, 0x44, 0x0d, 0x82, 0x63, 0xb3, 0x08, 0xb0, 0x56, - 0x7f, 0x0b, 0xd5, 0xa8, 0x0a, 0xf4, 0xef, 0x92, 0xe4, 0x22, 0x18, 0x42, 0x21, 0x4a, 0x21, 0xa0, - 0xcc, 0x32, 0xa4, 0x77, 0x0f, 0x43, 0x12, 0xe8, 0xca, 0xe3, 0x40, 0x8d, 0x43, 0x85, 0x45, 0xc4, - 0x05, 0xaa, 0xd0, 0x8b, 0x49, 0xf7, 0x57, 0x45, 0xb8, 0x1a, 0x01, 0x15, 0xaa, 0x42, 0x49, 0x32, - 0x31, 0xaa, 0x08, 0x2c, 0x22, 0x0e, 0x17, 0xc3, 0xa2, 0xeb, 0x62, 0x49, 0x56, 0x95, 0xe6, 0x22, - 0x28, 0x98, 0x04, 0x2b, 0x86, 0xec, 0x88, 0x78, 0x84, 0x04, 0x39, 0x06, 0x8f, 0xf7, 0xf6, 0x08, - 0x97, 0xe1, 0x1e, 0xe1, 0xc7, 0x62, 0x9e, 0x91, 0x37, 0x59, 0x31, 0xcf, 0x44, 0x6c, 0x9e, 0x71, - 0x51, 0x25, 0xcf, 0xf8, 0xb0, 0xf9, 0x09, 0x98, 0xe0, 0x63, 0xb8, 0x3c, 0x61, 0x52, 0x83, 0xfd, - 0xe5, 0xa6, 0xde, 0xa4, 0x4c, 0x92, 0x72, 0xaa, 0x78, 0x73, 0x0b, 0xc6, 0xf9, 0xd0, 0xa6, 0x47, - 0x2e, 0x77, 0x92, 0xfd, 0x55, 0x84, 0xde, 0x8c, 0x54, 0x90, 0x12, 0x2a, 0xe8, 0x99, 0x55, 0x98, - 0x8e, 0xae, 0x46, 0x62, 0xf9, 0x1d, 0xa5, 0xe5, 0xf7, 0xac, 0x58, 0x7e, 0x35, 0xb1, 0x7c, 0x97, - 0xe0, 0x91, 0xc8, 0xda, 0x13, 0x47, 0x92, 0x10, 0x49, 0x6e, 0xc3, 0x98, 0x54, 0x72, 0x44, 0xf0, - 0x50, 0x04, 0x78, 0xa8, 0x1b, 0x1c, 0x86, 0x56, 0xc4, 0xea, 0x21, 0x81, 0x75, 0x11, 0xfc, 0x31, - 0x18, 0x97, 0xeb, 0x8d, 0x88, 0x1e, 0x8b, 0x40, 0x8f, 0x45, 0xa0, 0xa3, 0xcf, 0x9d, 0x8c, 0x40, - 0x27, 0x15, 0xf4, 0x6e, 0xcf, 0x73, 0x4f, 0x46, 0xa0, 0x27, 0x23, 0xd0, 0xd1, 0xe7, 0x36, 0x23, - 0xd0, 0xa6, 0x88, 0x7e, 0x0e, 0x26, 0x94, 0x12, 0x23, 0xc2, 0x47, 0x22, 0xe0, 0x23, 0x22, 0xfc, - 0x79, 0x30, 0xd4, 0xe2, 0x22, 0xe2, 0x27, 0x22, 0xf0, 0x13, 0x51, 0xa7, 0x8f, 0xd6, 0x7e, 0x38, - 0x02, 0x3e, 0x1c, 0x79, 0xfa, 0x68, 0xbc, 0x11, 0x81, 0x37, 0x44, 0x7c, 0x1e, 0x32, 0x62, 0x35, - 0x11, 0xb1, 0xa9, 0x08, 0x6c, 0x4a, 0xb5, 0xbb, 0x54, 0x4c, 0xe2, 0x22, 0x7d, 0xb4, 0x47, 0xba, - 0x48, 0x25, 0x24, 0x8e, 0x24, 0x23, 0x92, 0x7c, 0x12, 0xce, 0x46, 0x95, 0x8c, 0x08, 0x8e, 0x79, - 0x91, 0x63, 0x1c, 0xf7, 0x88, 0x61, 0xb3, 0x67, 0xb7, 0x94, 0xc6, 0x69, 0xe6, 0x55, 0x98, 0x8a, - 0x28, 0x1c, 0x11, 0xb4, 0x8b, 0x72, 0x37, 0x96, 0x15, 0x68, 0x49, 0x11, 0xa8, 0x3b, 0x47, 0x3b, - 0x6e, 0xdd, 0xf1, 0xc5, 0xae, 0xec, 0x1b, 0x53, 0x30, 0xce, 0xca, 0xd3, 0x76, 0xbb, 0x86, 0xda, - 0xa8, 0x66, 0xfe, 0xa5, 0xde, 0xbd, 0xd3, 0x52, 0x77, 0x51, 0x63, 0xa8, 0x53, 0xb4, 0x50, 0xaf, - 0xf6, 0x6c, 0xa1, 0x2e, 0xc7, 0xd3, 0xc7, 0x75, 0x52, 0xa5, 0xae, 0x4e, 0xea, 0xe9, 0xde, 0xa4, - 0xbd, 0x1a, 0xaa, 0x52, 0x57, 0x43, 0xd5, 0x9f, 0x24, 0xb2, 0xaf, 0x5a, 0xeb, 0xee, 0xab, 0xe6, - 0x7b, 0xb3, 0xf4, 0x6e, 0xaf, 0xd6, 0xba, 0xdb, 0xab, 0x18, 0x9e, 0xe8, 0x2e, 0x6b, 0xad, 0xbb, - 0xcb, 0xea, 0xc3, 0xd3, 0xbb, 0xd9, 0x5a, 0xeb, 0x6e, 0xb6, 0x62, 0x78, 0xa2, 0x7b, 0xae, 0xf5, - 0x88, 0x9e, 0xeb, 0x99, 0xde, 0x44, 0xfd, 0x5a, 0xaf, 0x8d, 0xa8, 0xd6, 0x6b, 0xa1, 0x8f, 0x52, - 0x7d, 0x3b, 0xb0, 0xf5, 0x88, 0x0e, 0x2c, 0x4e, 0xb1, 0x1e, 0x8d, 0xd8, 0x46, 0x54, 0x23, 0x16, - 0xab, 0x58, 0xaf, 0x7e, 0xec, 0x2f, 0xa8, 0xfd, 0xd8, 0xa5, 0xde, 0x4c, 0xd1, 0x6d, 0xd9, 0x5a, - 0x77, 0x5b, 0x36, 0x1f, 0x97, 0x73, 0x51, 0xdd, 0xd9, 0xab, 0x3d, 0xbb, 0xb3, 0x01, 0x52, 0x38, - 0xae, 0x49, 0x7b, 0xb9, 0x57, 0x93, 0xb6, 0x18, 0xcf, 0xdd, 0xbf, 0x57, 0xdb, 0xef, 0xd1, 0xab, - 0x3d, 0x1b, 0x4f, 0xfc, 0xf3, 0x96, 0xed, 0xe7, 0x2d, 0xdb, 0xcf, 0x5b, 0xb6, 0x9f, 0xb7, 0x6c, - 0x3f, 0xfd, 0x96, 0x2d, 0x9f, 0xfc, 0xec, 0x97, 0xe7, 0xb4, 0xdc, 0x7f, 0xd1, 0x83, 0x3f, 0x38, - 0xf5, 0x52, 0xdd, 0x3f, 0xc6, 0xe5, 0x6d, 0x13, 0x32, 0xe4, 0xef, 0x5d, 0x34, 0xed, 0x56, 0xab, - 0xee, 0x1c, 0xb1, 0x9e, 0x6d, 0xa1, 0x7b, 0x2b, 0x91, 0x01, 0xc8, 0x5f, 0x0c, 0xd9, 0xa4, 0xc2, - 0x6c, 0xb9, 0x71, 0xc2, 0x11, 0xf3, 0x2e, 0xa4, 0x9b, 0xde, 0x51, 0xc0, 0x96, 0xe8, 0x5a, 0x08, - 0x15, 0x36, 0x7a, 0xa5, 0x21, 0x19, 0x34, 0x83, 0x01, 0xac, 0xda, 0xc1, 0x89, 0x1f, 0xaa, 0xa6, - 0xc7, 0xa9, 0x86, 0x7d, 0x2a, 0xab, 0x76, 0x10, 0x8e, 0xe0, 0xb0, 0x55, 0x75, 0x8f, 0xab, 0x74, - 0x52, 0xf0, 0xbc, 0x04, 0x13, 0x8a, 0xb6, 0x11, 0x39, 0xff, 0x00, 0xbe, 0xc1, 0x8a, 0xa9, 0x9a, - 0xc7, 0xe5, 0x84, 0x18, 0x90, 0xb9, 0x27, 0x60, 0x4c, 0xe2, 0x36, 0x33, 0xa0, 0x1d, 0xb2, 0xaf, - 0x51, 0x6a, 0x87, 0xb9, 0x2f, 0x69, 0x90, 0x66, 0xef, 0x10, 0xec, 0xd8, 0xf5, 0xb6, 0xf9, 0x22, - 0x24, 0x1b, 0xfc, 0xab, 0x4c, 0x0f, 0xfa, 0xb5, 0x59, 0xc2, 0x60, 0xae, 0xc1, 0x50, 0x3b, 0xf8, - 0xaa, 0xd3, 0x03, 0x7d, 0x17, 0x96, 0xc0, 0x73, 0xf7, 0x34, 0x98, 0x64, 0xaf, 0xb8, 0x7a, 0xec, - 0xc5, 0x67, 0xbb, 0x35, 0xf3, 0x75, 0x0d, 0x46, 0x83, 0x23, 0xf3, 0x00, 0xc6, 0x83, 0x03, 0xfa, - 0x72, 0x3d, 0x8d, 0xd4, 0xbc, 0x60, 0xe1, 0x2e, 0x8e, 0xc5, 0x88, 0x4f, 0xf4, 0x29, 0x14, 0x5d, - 0x93, 0xe5, 0xc1, 0x99, 0x02, 0x4c, 0x45, 0x88, 0x9d, 0x66, 0x41, 0xce, 0x5d, 0x80, 0xd1, 0x2d, - 0xd7, 0xa7, 0xbf, 0x98, 0x63, 0x9e, 0x15, 0x9e, 0x2a, 0x14, 0x13, 0xc6, 0x19, 0x02, 0x5e, 0xb8, - 0x00, 0x23, 0x2c, 0xfb, 0xcd, 0x61, 0x48, 0x6c, 0x16, 0x8c, 0x33, 0xe4, 0xff, 0xa2, 0xa1, 0x91, - 0xff, 0x4b, 0x46, 0xa2, 0xb8, 0xf1, 0x41, 0x3e, 0x62, 0x3a, 0x18, 0xa6, 0xe6, 0xf9, 0xff, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x2a, 0xa2, 0xd2, 0x2d, 0x44, 0x7e, 0x00, 0x00, + 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0xc8, 0x19, + 0x68, 0x34, 0xa2, 0x68, 0x8b, 0xc3, 0xe1, 0x90, 0x73, 0xc1, 0x58, 0x52, 0x00, 0x10, 0x1c, 0x71, + 0x4c, 0x82, 0x74, 0x93, 0xb4, 0x34, 0xeb, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x6c, 0x09, 0xe8, 0xc6, + 0xa2, 0x1b, 0x92, 0xe8, 0x87, 0x94, 0xb2, 0x4e, 0x36, 0xde, 0xa4, 0x72, 0xdd, 0xa4, 0xe2, 0x75, + 0x7c, 0x91, 0x37, 0xb5, 0xb1, 0x77, 0x37, 0x17, 0xaf, 0xb3, 0x71, 0xb6, 0xb6, 0x52, 0x59, 0xe5, + 0xc1, 0xc9, 0xe4, 0x25, 0xe5, 0x4d, 0x5e, 0x52, 0xae, 0x94, 0xca, 0x1a, 0xbb, 0x2a, 0x4e, 0xe2, + 0x24, 0xde, 0xac, 0xab, 0x76, 0xab, 0xbc, 0x0f, 0x5b, 0xe7, 0xd6, 0xdd, 0xe7, 0xa0, 0x81, 0x06, + 0x47, 0x92, 0xed, 0x07, 0xbd, 0xcc, 0xa0, 0xcf, 0xf9, 0xbf, 0xaf, 0xff, 0xfe, 0x6f, 0xe7, 0xef, + 0xd3, 0x0d, 0x10, 0xbe, 0xb7, 0x06, 0x17, 0x8e, 0x1d, 0xe7, 0xb8, 0x81, 0xae, 0xb4, 0xda, 0x8e, + 0xe7, 0x1c, 0x76, 0x8e, 0xae, 0xd4, 0x91, 0x5b, 0x6b, 0x5b, 0x2d, 0xcf, 0x69, 0x2f, 0x91, 0x31, + 0x7d, 0x92, 0x4a, 0x2c, 0x71, 0x89, 0xdc, 0x36, 0x4c, 0x6d, 0x58, 0x0d, 0xb4, 0xee, 0x0b, 0xee, + 0x21, 0x4f, 0xbf, 0x09, 0xc9, 0x23, 0xab, 0x81, 0xb2, 0xca, 0x05, 0x75, 0x21, 0xbd, 0x72, 0x69, + 0x49, 0x02, 0x2d, 0x89, 0x88, 0x5d, 0x3c, 0x6c, 0x10, 0x44, 0xee, 0xfb, 0x49, 0x98, 0x8e, 0x98, + 0xd5, 0x75, 0x48, 0xda, 0x66, 0x13, 0x33, 0x2a, 0x0b, 0x63, 0x06, 0xf9, 0xac, 0x67, 0x61, 0xb4, + 0x65, 0xd6, 0x5e, 0x35, 0x8f, 0x51, 0x36, 0x41, 0x86, 0xf9, 0xa1, 0x3e, 0x07, 0x50, 0x47, 0x2d, + 0x64, 0xd7, 0x91, 0x5d, 0x3b, 0xcd, 0xaa, 0x17, 0xd4, 0x85, 0x31, 0x23, 0x34, 0xa2, 0x7f, 0x04, + 0xa6, 0x5a, 0x9d, 0xc3, 0x86, 0x55, 0xab, 0x86, 0xc4, 0xe0, 0x82, 0xba, 0x30, 0x6c, 0x68, 0x74, + 0x62, 0x3d, 0x10, 0x7e, 0x1a, 0x26, 0x5f, 0x47, 0xe6, 0xab, 0x61, 0xd1, 0x34, 0x11, 0x9d, 0xc0, + 0xc3, 0x21, 0xc1, 0x12, 0x64, 0x9a, 0xc8, 0x75, 0xcd, 0x63, 0x54, 0xf5, 0x4e, 0x5b, 0x28, 0x9b, + 0x24, 0x57, 0x7f, 0xa1, 0xeb, 0xea, 0xe5, 0x2b, 0x4f, 0x33, 0xd4, 0xfe, 0x69, 0x0b, 0xe9, 0x05, + 0x18, 0x43, 0x76, 0xa7, 0x49, 0x19, 0x86, 0x7b, 0xd8, 0xaf, 0x6c, 0x77, 0x9a, 0x32, 0x4b, 0x0a, + 0xc3, 0x18, 0xc5, 0xa8, 0x8b, 0xda, 0xaf, 0x59, 0x35, 0x94, 0x1d, 0x21, 0x04, 0x4f, 0x77, 0x11, + 0xec, 0xd1, 0x79, 0x99, 0x83, 0xe3, 0xf4, 0x12, 0x8c, 0xa1, 0x37, 0x3c, 0x64, 0xbb, 0x96, 0x63, + 0x67, 0x47, 0x09, 0xc9, 0x53, 0x11, 0x5e, 0x44, 0x8d, 0xba, 0x4c, 0x11, 0xe0, 0xf4, 0xeb, 0x30, + 0xea, 0xb4, 0x3c, 0xcb, 0xb1, 0xdd, 0x6c, 0xea, 0x82, 0xb2, 0x90, 0x5e, 0x39, 0x1f, 0x19, 0x08, + 0x3b, 0x54, 0xc6, 0xe0, 0xc2, 0xfa, 0x26, 0x68, 0xae, 0xd3, 0x69, 0xd7, 0x50, 0xb5, 0xe6, 0xd4, + 0x51, 0xd5, 0xb2, 0x8f, 0x9c, 0xec, 0x18, 0x21, 0x98, 0xef, 0xbe, 0x10, 0x22, 0x58, 0x72, 0xea, + 0x68, 0xd3, 0x3e, 0x72, 0x8c, 0x09, 0x57, 0x38, 0xd6, 0x67, 0x60, 0xc4, 0x3d, 0xb5, 0x3d, 0xf3, + 0x8d, 0x6c, 0x86, 0x44, 0x08, 0x3b, 0xca, 0xfd, 0xc9, 0x30, 0x4c, 0x0e, 0x12, 0x62, 0xb7, 0x61, + 0xf8, 0x08, 0x5f, 0x65, 0x36, 0x71, 0x16, 0x1b, 0x50, 0x8c, 0x68, 0xc4, 0x91, 0x87, 0x34, 0x62, + 0x01, 0xd2, 0x36, 0x72, 0x3d, 0x54, 0xa7, 0x11, 0xa1, 0x0e, 0x18, 0x53, 0x40, 0x41, 0xdd, 0x21, + 0x95, 0x7c, 0xa8, 0x90, 0x7a, 0x19, 0x26, 0x7d, 0x95, 0xaa, 0x6d, 0xd3, 0x3e, 0xe6, 0xb1, 0x79, + 0x25, 0x4e, 0x93, 0xa5, 0x32, 0xc7, 0x19, 0x18, 0x66, 0x4c, 0x20, 0xe1, 0x58, 0x5f, 0x07, 0x70, + 0x6c, 0xe4, 0x1c, 0x55, 0xeb, 0xa8, 0xd6, 0xc8, 0xa6, 0x7a, 0x58, 0x69, 0x07, 0x8b, 0x74, 0x59, + 0xc9, 0xa1, 0xa3, 0xb5, 0x86, 0x7e, 0x2b, 0x08, 0xb5, 0xd1, 0x1e, 0x91, 0xb2, 0x4d, 0x93, 0xac, + 0x2b, 0xda, 0x0e, 0x60, 0xa2, 0x8d, 0x70, 0xdc, 0xa3, 0x3a, 0xbb, 0xb2, 0x31, 0xa2, 0xc4, 0x52, + 0xec, 0x95, 0x19, 0x0c, 0x46, 0x2f, 0x6c, 0xbc, 0x1d, 0x3e, 0xd4, 0x9f, 0x04, 0x7f, 0xa0, 0x4a, + 0xc2, 0x0a, 0x48, 0x15, 0xca, 0xf0, 0xc1, 0x8a, 0xd9, 0x44, 0xb3, 0x37, 0x61, 0x42, 0x34, 0x8f, + 0x7e, 0x0e, 0x86, 0x5d, 0xcf, 0x6c, 0x7b, 0x24, 0x0a, 0x87, 0x0d, 0x7a, 0xa0, 0x6b, 0xa0, 0x22, + 0xbb, 0x4e, 0xaa, 0xdc, 0xb0, 0x81, 0x3f, 0xce, 0xde, 0x80, 0x71, 0xe1, 0xf4, 0x83, 0x02, 0x73, + 0x9f, 0x1b, 0x81, 0x73, 0x51, 0x31, 0x17, 0x19, 0xfe, 0x33, 0x30, 0x62, 0x77, 0x9a, 0x87, 0xa8, + 0x9d, 0x55, 0x09, 0x03, 0x3b, 0xd2, 0x0b, 0x30, 0xdc, 0x30, 0x0f, 0x51, 0x23, 0x9b, 0xbc, 0xa0, + 0x2c, 0x4c, 0xac, 0x7c, 0x64, 0xa0, 0xa8, 0x5e, 0xda, 0xc2, 0x10, 0x83, 0x22, 0xf5, 0xe7, 0x21, + 0xc9, 0x4a, 0x1c, 0x66, 0x58, 0x1c, 0x8c, 0x01, 0xc7, 0xa2, 0x41, 0x70, 0xfa, 0xe3, 0x30, 0x86, + 0xff, 0xa7, 0xb6, 0x1d, 0x21, 0x3a, 0xa7, 0xf0, 0x00, 0xb6, 0xab, 0x3e, 0x0b, 0x29, 0x12, 0x66, + 0x75, 0xc4, 0x97, 0x06, 0xff, 0x18, 0x3b, 0xa6, 0x8e, 0x8e, 0xcc, 0x4e, 0xc3, 0xab, 0xbe, 0x66, + 0x36, 0x3a, 0x88, 0x04, 0xcc, 0x98, 0x91, 0x61, 0x83, 0x9f, 0xc4, 0x63, 0xfa, 0x3c, 0xa4, 0x69, + 0x54, 0x5a, 0x76, 0x1d, 0xbd, 0x41, 0xaa, 0xcf, 0xb0, 0x41, 0x03, 0x75, 0x13, 0x8f, 0xe0, 0xd3, + 0xbf, 0xe2, 0x3a, 0x36, 0x77, 0x2d, 0x39, 0x05, 0x1e, 0x20, 0xa7, 0xbf, 0x21, 0x17, 0xbe, 0x27, + 0xa2, 0x2f, 0x4f, 0x8e, 0xc5, 0xdc, 0x37, 0x13, 0x90, 0x24, 0xf9, 0x36, 0x09, 0xe9, 0xfd, 0x7b, + 0xbb, 0xe5, 0xea, 0xfa, 0xce, 0x41, 0x71, 0xab, 0xac, 0x29, 0xfa, 0x04, 0x00, 0x19, 0xd8, 0xd8, + 0xda, 0x29, 0xec, 0x6b, 0x09, 0xff, 0x78, 0xb3, 0xb2, 0x7f, 0x7d, 0x55, 0x53, 0x7d, 0xc0, 0x01, + 0x1d, 0x48, 0x86, 0x05, 0xae, 0xad, 0x68, 0xc3, 0xba, 0x06, 0x19, 0x4a, 0xb0, 0xf9, 0x72, 0x79, + 0xfd, 0xfa, 0xaa, 0x36, 0x22, 0x8e, 0x5c, 0x5b, 0xd1, 0x46, 0xf5, 0x71, 0x18, 0x23, 0x23, 0xc5, + 0x9d, 0x9d, 0x2d, 0x2d, 0xe5, 0x73, 0xee, 0xed, 0x1b, 0x9b, 0x95, 0x3b, 0xda, 0x98, 0xcf, 0x79, + 0xc7, 0xd8, 0x39, 0xd8, 0xd5, 0xc0, 0x67, 0xd8, 0x2e, 0xef, 0xed, 0x15, 0xee, 0x94, 0xb5, 0xb4, + 0x2f, 0x51, 0xbc, 0xb7, 0x5f, 0xde, 0xd3, 0x32, 0x82, 0x5a, 0xd7, 0x56, 0xb4, 0x71, 0xff, 0x14, + 0xe5, 0xca, 0xc1, 0xb6, 0x36, 0xa1, 0x4f, 0xc1, 0x38, 0x3d, 0x05, 0x57, 0x62, 0x52, 0x1a, 0xba, + 0xbe, 0xaa, 0x69, 0x81, 0x22, 0x94, 0x65, 0x4a, 0x18, 0xb8, 0xbe, 0xaa, 0xe9, 0xb9, 0x12, 0x0c, + 0x93, 0xe8, 0xd2, 0x75, 0x98, 0xd8, 0x2a, 0x14, 0xcb, 0x5b, 0xd5, 0x9d, 0xdd, 0xfd, 0xcd, 0x9d, + 0x4a, 0x61, 0x4b, 0x53, 0x82, 0x31, 0xa3, 0xfc, 0x89, 0x83, 0x4d, 0xa3, 0xbc, 0xae, 0x25, 0xc2, + 0x63, 0xbb, 0xe5, 0xc2, 0x7e, 0x79, 0x5d, 0x53, 0x73, 0x35, 0x38, 0x17, 0x55, 0x67, 0x22, 0x33, + 0x23, 0xe4, 0xe2, 0x44, 0x0f, 0x17, 0x13, 0xae, 0x2e, 0x17, 0xff, 0xba, 0x02, 0xd3, 0x11, 0xb5, + 0x36, 0xf2, 0x24, 0x2f, 0xc0, 0x30, 0x0d, 0x51, 0xba, 0xfa, 0x3c, 0x13, 0x59, 0xb4, 0x49, 0xc0, + 0x76, 0xad, 0x40, 0x04, 0x17, 0x5e, 0x81, 0xd5, 0x1e, 0x2b, 0x30, 0xa6, 0xe8, 0x52, 0xf2, 0x33, + 0x0a, 0x64, 0x7b, 0x71, 0xc7, 0x14, 0x8a, 0x84, 0x50, 0x28, 0x6e, 0xcb, 0x0a, 0x5c, 0xec, 0x7d, + 0x0d, 0x5d, 0x5a, 0x7c, 0x55, 0x81, 0x99, 0xe8, 0x46, 0x25, 0x52, 0x87, 0xe7, 0x61, 0xa4, 0x89, + 0xbc, 0x13, 0x87, 0x2f, 0xd6, 0x97, 0x23, 0x96, 0x00, 0x3c, 0x2d, 0xdb, 0x8a, 0xa1, 0xc2, 0x6b, + 0x88, 0xda, 0xab, 0xdb, 0xa0, 0xda, 0x74, 0x69, 0xfa, 0x2b, 0x09, 0x78, 0x24, 0x92, 0x3c, 0x52, + 0xd1, 0x27, 0x00, 0x2c, 0xbb, 0xd5, 0xf1, 0xe8, 0x82, 0x4c, 0xeb, 0xd3, 0x18, 0x19, 0x21, 0xb9, + 0x8f, 0x6b, 0x4f, 0xc7, 0xf3, 0xe7, 0x55, 0x32, 0x0f, 0x74, 0x88, 0x08, 0xdc, 0x0c, 0x14, 0x4d, + 0x12, 0x45, 0xe7, 0x7a, 0x5c, 0x69, 0xd7, 0x5a, 0xb7, 0x0c, 0x5a, 0xad, 0x61, 0x21, 0xdb, 0xab, + 0xba, 0x5e, 0x1b, 0x99, 0x4d, 0xcb, 0x3e, 0x26, 0x05, 0x38, 0x95, 0x1f, 0x3e, 0x32, 0x1b, 0x2e, + 0x32, 0x26, 0xe9, 0xf4, 0x1e, 0x9f, 0xc5, 0x08, 0xb2, 0xca, 0xb4, 0x43, 0x88, 0x11, 0x01, 0x41, + 0xa7, 0x7d, 0x44, 0xee, 0xb7, 0x47, 0x21, 0x1d, 0x6a, 0xeb, 0xf4, 0x8b, 0x90, 0x79, 0xc5, 0x7c, + 0xcd, 0xac, 0xf2, 0x56, 0x9d, 0x5a, 0x22, 0x8d, 0xc7, 0x76, 0x59, 0xbb, 0xbe, 0x0c, 0xe7, 0x88, + 0x88, 0xd3, 0xf1, 0x50, 0xbb, 0x5a, 0x6b, 0x98, 0xae, 0x4b, 0x8c, 0x96, 0x22, 0xa2, 0x3a, 0x9e, + 0xdb, 0xc1, 0x53, 0x25, 0x3e, 0xa3, 0xaf, 0xc1, 0x34, 0x41, 0x34, 0x3b, 0x0d, 0xcf, 0x6a, 0x35, + 0x50, 0x15, 0xdf, 0x3c, 0xb8, 0xa4, 0x10, 0xfb, 0x9a, 0x4d, 0x61, 0x89, 0x6d, 0x26, 0x80, 0x35, + 0x72, 0xf5, 0x75, 0x78, 0x82, 0xc0, 0x8e, 0x91, 0x8d, 0xda, 0xa6, 0x87, 0xaa, 0xe8, 0x17, 0x3b, + 0x66, 0xc3, 0xad, 0x9a, 0x76, 0xbd, 0x7a, 0x62, 0xba, 0x27, 0xd9, 0x73, 0x98, 0xa0, 0x98, 0xc8, + 0x2a, 0xc6, 0x63, 0x58, 0xf0, 0x0e, 0x93, 0x2b, 0x13, 0xb1, 0x82, 0x5d, 0x7f, 0xd1, 0x74, 0x4f, + 0xf4, 0x3c, 0xcc, 0x10, 0x16, 0xd7, 0x6b, 0x5b, 0xf6, 0x71, 0xb5, 0x76, 0x82, 0x6a, 0xaf, 0x56, + 0x3b, 0xde, 0xd1, 0xcd, 0xec, 0xe3, 0xe1, 0xf3, 0x13, 0x0d, 0xf7, 0x88, 0x4c, 0x09, 0x8b, 0x1c, + 0x78, 0x47, 0x37, 0xf5, 0x3d, 0xc8, 0x60, 0x67, 0x34, 0xad, 0x4f, 0xa3, 0xea, 0x91, 0xd3, 0x26, + 0x2b, 0xcb, 0x44, 0x44, 0x66, 0x87, 0x2c, 0xb8, 0xb4, 0xc3, 0x00, 0xdb, 0x4e, 0x1d, 0xe5, 0x87, + 0xf7, 0x76, 0xcb, 0xe5, 0x75, 0x23, 0xcd, 0x59, 0x36, 0x9c, 0x36, 0x0e, 0xa8, 0x63, 0xc7, 0x37, + 0x70, 0x9a, 0x06, 0xd4, 0xb1, 0xc3, 0xcd, 0xbb, 0x06, 0xd3, 0xb5, 0x1a, 0xbd, 0x66, 0xab, 0x56, + 0x65, 0x2d, 0xbe, 0x9b, 0xd5, 0x04, 0x63, 0xd5, 0x6a, 0x77, 0xa8, 0x00, 0x8b, 0x71, 0x57, 0xbf, + 0x05, 0x8f, 0x04, 0xc6, 0x0a, 0x03, 0xa7, 0xba, 0xae, 0x52, 0x86, 0xae, 0xc1, 0x74, 0xeb, 0xb4, + 0x1b, 0xa8, 0x0b, 0x67, 0x6c, 0x9d, 0xca, 0xb0, 0xa7, 0xc8, 0x6d, 0x5b, 0x1b, 0xd5, 0x4c, 0x0f, + 0xd5, 0xb3, 0x8f, 0x86, 0xa5, 0x43, 0x13, 0xfa, 0x15, 0xd0, 0x6a, 0xb5, 0x2a, 0xb2, 0xcd, 0xc3, + 0x06, 0xaa, 0x9a, 0x6d, 0x64, 0x9b, 0x6e, 0x76, 0x3e, 0x2c, 0x3c, 0x51, 0xab, 0x95, 0xc9, 0x6c, + 0x81, 0x4c, 0xea, 0x8b, 0x30, 0xe5, 0x1c, 0xbe, 0x52, 0xa3, 0x91, 0x55, 0x6d, 0xb5, 0xd1, 0x91, + 0xf5, 0x46, 0xf6, 0x12, 0x31, 0xd3, 0x24, 0x9e, 0x20, 0x71, 0xb5, 0x4b, 0x86, 0xf5, 0x67, 0x40, + 0xab, 0xb9, 0x27, 0x66, 0xbb, 0x45, 0x96, 0x76, 0xb7, 0x65, 0xd6, 0x50, 0xf6, 0x29, 0x2a, 0x4a, + 0xc7, 0x2b, 0x7c, 0x18, 0x47, 0xb6, 0xfb, 0xba, 0x75, 0xe4, 0x71, 0xc6, 0xa7, 0x69, 0x64, 0x93, + 0x31, 0xc6, 0xf6, 0x32, 0x9c, 0xeb, 0xd8, 0x96, 0xed, 0xa1, 0x76, 0xab, 0x8d, 0x70, 0x13, 0x4f, + 0x33, 0x31, 0xfb, 0x3f, 0x46, 0x7b, 0xb4, 0xe1, 0x07, 0x61, 0x69, 0x1a, 0x00, 0xc6, 0x74, 0xa7, + 0x7b, 0x30, 0x97, 0x87, 0x4c, 0x38, 0x2e, 0xf4, 0x31, 0xa0, 0x91, 0xa1, 0x29, 0x78, 0x8d, 0x2d, + 0xed, 0xac, 0xe3, 0xd5, 0xf1, 0x17, 0xca, 0x5a, 0x02, 0xaf, 0xd2, 0x5b, 0x9b, 0xfb, 0xe5, 0xaa, + 0x71, 0x50, 0xd9, 0xdf, 0xdc, 0x2e, 0x6b, 0xea, 0xe2, 0x58, 0xea, 0x07, 0xa3, 0xda, 0x9b, 0x6f, + 0xbe, 0xf9, 0x66, 0x22, 0xf7, 0xad, 0x04, 0x4c, 0x88, 0x9d, 0xb1, 0xfe, 0x31, 0x78, 0x94, 0xdf, + 0xc6, 0xba, 0xc8, 0xab, 0xbe, 0x6e, 0xb5, 0x49, 0xa8, 0x36, 0x4d, 0xda, 0x5b, 0xfa, 0x56, 0x3e, + 0xc7, 0xa4, 0xf6, 0x90, 0xf7, 0x92, 0xd5, 0xc6, 0x81, 0xd8, 0x34, 0x3d, 0x7d, 0x0b, 0xe6, 0x6d, + 0xa7, 0xea, 0x7a, 0xa6, 0x5d, 0x37, 0xdb, 0xf5, 0x6a, 0xb0, 0x81, 0x50, 0x35, 0x6b, 0x35, 0xe4, + 0xba, 0x0e, 0x5d, 0x22, 0x7c, 0x96, 0xf3, 0xb6, 0xb3, 0xc7, 0x84, 0x83, 0xda, 0x59, 0x60, 0xa2, + 0x52, 0x44, 0xa8, 0xbd, 0x22, 0xe2, 0x71, 0x18, 0x6b, 0x9a, 0xad, 0x2a, 0xb2, 0xbd, 0xf6, 0x29, + 0xe9, 0xe7, 0x52, 0x46, 0xaa, 0x69, 0xb6, 0xca, 0xf8, 0xf8, 0x83, 0xf3, 0x41, 0xd8, 0x8e, 0xff, + 0x5d, 0x85, 0x4c, 0xb8, 0xa7, 0xc3, 0x2d, 0x72, 0x8d, 0xd4, 0x6f, 0x85, 0x64, 0xf8, 0x93, 0x7d, + 0x3b, 0xc0, 0xa5, 0x12, 0x2e, 0xec, 0xf9, 0x11, 0xda, 0x69, 0x19, 0x14, 0x89, 0x17, 0x55, 0x9c, + 0xd3, 0x88, 0xf6, 0xef, 0x29, 0x83, 0x1d, 0xe9, 0x77, 0x60, 0xe4, 0x15, 0x97, 0x70, 0x8f, 0x10, + 0xee, 0x4b, 0xfd, 0xb9, 0xef, 0xee, 0x11, 0xf2, 0xb1, 0xbb, 0x7b, 0xd5, 0xca, 0x8e, 0xb1, 0x5d, + 0xd8, 0x32, 0x18, 0x5c, 0x7f, 0x0c, 0x92, 0x0d, 0xf3, 0xd3, 0xa7, 0xe2, 0x12, 0x40, 0x86, 0x06, + 0x35, 0xfc, 0x63, 0x90, 0x7c, 0x1d, 0x99, 0xaf, 0x8a, 0x85, 0x97, 0x0c, 0x7d, 0x80, 0xa1, 0x7f, + 0x05, 0x86, 0x89, 0xbd, 0x74, 0x00, 0x66, 0x31, 0x6d, 0x48, 0x4f, 0x41, 0xb2, 0xb4, 0x63, 0xe0, + 0xf0, 0xd7, 0x20, 0x43, 0x47, 0xab, 0xbb, 0x9b, 0xe5, 0x52, 0x59, 0x4b, 0xe4, 0xd6, 0x60, 0x84, + 0x1a, 0x01, 0xa7, 0x86, 0x6f, 0x06, 0x6d, 0x88, 0x1d, 0x32, 0x0e, 0x85, 0xcf, 0x1e, 0x6c, 0x17, + 0xcb, 0x86, 0x96, 0x08, 0xbb, 0xd7, 0x85, 0x4c, 0xb8, 0x9d, 0xfb, 0xe9, 0xc4, 0xd4, 0xef, 0x2b, + 0x90, 0x0e, 0xb5, 0x67, 0xb8, 0x31, 0x30, 0x1b, 0x0d, 0xe7, 0xf5, 0xaa, 0xd9, 0xb0, 0x4c, 0x97, + 0x05, 0x05, 0x90, 0xa1, 0x02, 0x1e, 0x19, 0xd4, 0x69, 0x3f, 0x15, 0xe5, 0xbf, 0xa4, 0x80, 0x26, + 0xb7, 0x76, 0x92, 0x82, 0xca, 0xcf, 0x54, 0xc1, 0x2f, 0x28, 0x30, 0x21, 0xf6, 0x73, 0x92, 0x7a, + 0x17, 0x7f, 0xa6, 0xea, 0x7d, 0x37, 0x01, 0xe3, 0x42, 0x17, 0x37, 0xa8, 0x76, 0xbf, 0x08, 0x53, + 0x56, 0x1d, 0x35, 0x5b, 0x8e, 0x87, 0xec, 0xda, 0x69, 0xb5, 0x81, 0x5e, 0x43, 0x8d, 0x6c, 0x8e, + 0x14, 0x8a, 0x2b, 0xfd, 0xfb, 0xc4, 0xa5, 0xcd, 0x00, 0xb7, 0x85, 0x61, 0xf9, 0xe9, 0xcd, 0xf5, + 0xf2, 0xf6, 0xee, 0xce, 0x7e, 0xb9, 0x52, 0xba, 0x57, 0x3d, 0xa8, 0x7c, 0xbc, 0xb2, 0xf3, 0x52, + 0xc5, 0xd0, 0x2c, 0x49, 0xec, 0x03, 0x4c, 0xf5, 0x5d, 0xd0, 0x64, 0xa5, 0xf4, 0x47, 0x21, 0x4a, + 0x2d, 0x6d, 0x48, 0x9f, 0x86, 0xc9, 0xca, 0x4e, 0x75, 0x6f, 0x73, 0xbd, 0x5c, 0x2d, 0x6f, 0x6c, + 0x94, 0x4b, 0xfb, 0x7b, 0xf4, 0xc6, 0xd9, 0x97, 0xde, 0x17, 0x93, 0xfa, 0xf3, 0x2a, 0x4c, 0x47, + 0x68, 0xa2, 0x17, 0x58, 0xcf, 0x4e, 0x6f, 0x23, 0x9e, 0x1d, 0x44, 0xfb, 0x25, 0xdc, 0x15, 0xec, + 0x9a, 0x6d, 0x8f, 0xb5, 0xf8, 0xcf, 0x00, 0xb6, 0x92, 0xed, 0x59, 0x47, 0x16, 0x6a, 0xb3, 0x7d, + 0x06, 0xda, 0xc8, 0x4f, 0x06, 0xe3, 0x74, 0xab, 0xe1, 0xa3, 0xa0, 0xb7, 0x1c, 0xd7, 0xf2, 0xac, + 0xd7, 0x50, 0xd5, 0xb2, 0xf9, 0xa6, 0x04, 0x6e, 0xec, 0x93, 0x86, 0xc6, 0x67, 0x36, 0x6d, 0xcf, + 0x97, 0xb6, 0xd1, 0xb1, 0x29, 0x49, 0xe3, 0x02, 0xae, 0x1a, 0x1a, 0x9f, 0xf1, 0xa5, 0x2f, 0x42, + 0xa6, 0xee, 0x74, 0x70, 0x9b, 0x44, 0xe5, 0xf0, 0x7a, 0xa1, 0x18, 0x69, 0x3a, 0xe6, 0x8b, 0xb0, + 0x3e, 0x36, 0xd8, 0x0d, 0xc9, 0x18, 0x69, 0x3a, 0x46, 0x45, 0x9e, 0x86, 0x49, 0xf3, 0xf8, 0xb8, + 0x8d, 0xc9, 0x39, 0x11, 0xed, 0xcc, 0x27, 0xfc, 0x61, 0x22, 0x38, 0x7b, 0x17, 0x52, 0xdc, 0x0e, + 0x78, 0x49, 0xc6, 0x96, 0xa8, 0xb6, 0xe8, 0x9e, 0x54, 0x62, 0x61, 0xcc, 0x48, 0xd9, 0x7c, 0xf2, + 0x22, 0x64, 0x2c, 0xb7, 0x1a, 0x6c, 0x8e, 0x26, 0x2e, 0x24, 0x16, 0x52, 0x46, 0xda, 0x72, 0xfd, + 0xdd, 0xb0, 0xdc, 0x57, 0x13, 0x30, 0x21, 0x6e, 0xee, 0xea, 0xeb, 0x90, 0x6a, 0x38, 0x35, 0x93, + 0x84, 0x16, 0x7d, 0xb2, 0xb0, 0x10, 0xb3, 0x1f, 0xbc, 0xb4, 0xc5, 0xe4, 0x0d, 0x1f, 0x39, 0xfb, + 0x9f, 0x15, 0x48, 0xf1, 0x61, 0x7d, 0x06, 0x92, 0x2d, 0xd3, 0x3b, 0x21, 0x74, 0xc3, 0xc5, 0x84, + 0xa6, 0x18, 0xe4, 0x18, 0x8f, 0xbb, 0x2d, 0xd3, 0x26, 0x21, 0xc0, 0xc6, 0xf1, 0x31, 0xf6, 0x6b, + 0x03, 0x99, 0x75, 0xd2, 0xf6, 0x3b, 0xcd, 0x26, 0xb2, 0x3d, 0x97, 0xfb, 0x95, 0x8d, 0x97, 0xd8, + 0xb0, 0xfe, 0x11, 0x98, 0xf2, 0xda, 0xa6, 0xd5, 0x10, 0x64, 0x93, 0x44, 0x56, 0xe3, 0x13, 0xbe, + 0x70, 0x1e, 0x1e, 0xe3, 0xbc, 0x75, 0xe4, 0x99, 0xb5, 0x13, 0x54, 0x0f, 0x40, 0x23, 0x64, 0xe7, + 0xf0, 0x51, 0x26, 0xb0, 0xce, 0xe6, 0x39, 0x36, 0xf7, 0x87, 0x0a, 0x4c, 0xf1, 0x1b, 0x95, 0xba, + 0x6f, 0xac, 0x6d, 0x00, 0xd3, 0xb6, 0x1d, 0x2f, 0x6c, 0xae, 0xee, 0x50, 0xee, 0xc2, 0x2d, 0x15, + 0x7c, 0x90, 0x11, 0x22, 0x98, 0x6d, 0x02, 0x04, 0x33, 0x3d, 0xcd, 0x36, 0x0f, 0x69, 0xb6, 0x73, + 0x4f, 0x1e, 0xff, 0xd0, 0x5b, 0x5b, 0xa0, 0x43, 0xf8, 0x8e, 0x46, 0x3f, 0x07, 0xc3, 0x87, 0xe8, + 0xd8, 0xb2, 0xd9, 0x7e, 0x22, 0x3d, 0xe0, 0xbb, 0x94, 0x49, 0x7f, 0x97, 0xb2, 0xf8, 0x32, 0x4c, + 0xd7, 0x9c, 0xa6, 0xac, 0x6e, 0x51, 0x93, 0x6e, 0xaf, 0xdd, 0x17, 0x95, 0x5f, 0x80, 0xa0, 0xc5, + 0xfc, 0xf5, 0x84, 0x7a, 0x67, 0xb7, 0xf8, 0x5b, 0x89, 0xd9, 0x3b, 0x14, 0xb7, 0xcb, 0x2f, 0xd3, + 0x40, 0x47, 0x0d, 0x54, 0xc3, 0xaa, 0xc3, 0x1f, 0x5f, 0x86, 0x67, 0x8f, 0x2d, 0xef, 0xa4, 0x73, + 0xb8, 0x54, 0x73, 0x9a, 0x57, 0x8e, 0x9d, 0x63, 0x27, 0x78, 0xdc, 0x85, 0x8f, 0xc8, 0x01, 0xf9, + 0xc4, 0x1e, 0x79, 0x8d, 0xf9, 0xa3, 0xb3, 0xb1, 0xcf, 0xc7, 0xf2, 0x15, 0x98, 0x66, 0xc2, 0x55, + 0xb2, 0xe7, 0x4e, 0x6f, 0x0d, 0xf4, 0xbe, 0xfb, 0x2e, 0xd9, 0xdf, 0xf9, 0x3e, 0x59, 0xab, 0x8d, + 0x29, 0x06, 0xc5, 0x73, 0xf4, 0x06, 0x22, 0x6f, 0xc0, 0x23, 0x02, 0x1f, 0xcd, 0x4b, 0xd4, 0x8e, + 0x61, 0xfc, 0x16, 0x63, 0x9c, 0x0e, 0x31, 0xee, 0x31, 0x68, 0xbe, 0x04, 0xe3, 0x67, 0xe1, 0xfa, + 0x0f, 0x8c, 0x2b, 0x83, 0xc2, 0x24, 0x77, 0x60, 0x92, 0x90, 0xd4, 0x3a, 0xae, 0xe7, 0x34, 0x49, + 0xd1, 0xeb, 0x4f, 0xf3, 0x1f, 0xbf, 0x4f, 0x13, 0x65, 0x02, 0xc3, 0x4a, 0x3e, 0x2a, 0x9f, 0x07, + 0xf2, 0x98, 0xa1, 0x8e, 0x6a, 0x8d, 0x18, 0x86, 0xfb, 0x4c, 0x11, 0x5f, 0x3e, 0xff, 0x49, 0x38, + 0x87, 0x3f, 0x93, 0x9a, 0x14, 0xd6, 0x24, 0x7e, 0x97, 0x29, 0xfb, 0x87, 0x9f, 0xa1, 0xb9, 0x38, + 0xed, 0x13, 0x84, 0x74, 0x0a, 0x79, 0xf1, 0x18, 0x79, 0x1e, 0x6a, 0xbb, 0x55, 0xb3, 0x11, 0xa5, + 0x5e, 0xe8, 0x36, 0x3d, 0xfb, 0x6b, 0x3f, 0x14, 0xbd, 0x78, 0x87, 0x22, 0x0b, 0x8d, 0x46, 0xfe, + 0x00, 0x1e, 0x8d, 0x88, 0x8a, 0x01, 0x38, 0x3f, 0xcf, 0x38, 0xcf, 0x75, 0x45, 0x06, 0xa6, 0xdd, + 0x05, 0x3e, 0xee, 0xfb, 0x72, 0x00, 0xce, 0x7f, 0xcc, 0x38, 0x75, 0x86, 0xe5, 0x2e, 0xc5, 0x8c, + 0x77, 0x61, 0xea, 0x35, 0xd4, 0x3e, 0x74, 0x5c, 0xb6, 0x35, 0x32, 0x00, 0xdd, 0x17, 0x18, 0xdd, + 0x24, 0x03, 0x92, 0xbd, 0x12, 0xcc, 0x75, 0x0b, 0x52, 0x47, 0x66, 0x0d, 0x0d, 0x40, 0xf1, 0x45, + 0x46, 0x31, 0x8a, 0xe5, 0x31, 0xb4, 0x00, 0x99, 0x63, 0x87, 0x2d, 0x4b, 0xf1, 0xf0, 0x2f, 0x31, + 0x78, 0x9a, 0x63, 0x18, 0x45, 0xcb, 0x69, 0x75, 0x1a, 0x78, 0xcd, 0x8a, 0xa7, 0xf8, 0x32, 0xa7, + 0xe0, 0x18, 0x46, 0x71, 0x06, 0xb3, 0xbe, 0xc5, 0x29, 0xdc, 0x90, 0x3d, 0x5f, 0x80, 0xb4, 0x63, + 0x37, 0x4e, 0x1d, 0x7b, 0x10, 0x25, 0xbe, 0xc2, 0x18, 0x80, 0x41, 0x30, 0xc1, 0x6d, 0x18, 0x1b, + 0xd4, 0x11, 0xbf, 0xf1, 0x43, 0x9e, 0x1e, 0xdc, 0x03, 0x77, 0x60, 0x92, 0x17, 0x28, 0xcb, 0xb1, + 0x07, 0xa0, 0xf8, 0xa7, 0x8c, 0x62, 0x22, 0x04, 0x63, 0x97, 0xe1, 0x21, 0xd7, 0x3b, 0x46, 0x83, + 0x90, 0x7c, 0x95, 0x5f, 0x06, 0x83, 0x30, 0x53, 0x1e, 0x22, 0xbb, 0x76, 0x32, 0x18, 0xc3, 0xd7, + 0xb8, 0x29, 0x39, 0x06, 0x53, 0x94, 0x60, 0xbc, 0x69, 0xb6, 0xdd, 0x13, 0xb3, 0x31, 0x90, 0x3b, + 0x7e, 0x93, 0x71, 0x64, 0x7c, 0x10, 0xb3, 0x48, 0xc7, 0x3e, 0x0b, 0xcd, 0x6f, 0x71, 0x8b, 0x84, + 0x60, 0x2c, 0xf5, 0x5c, 0x8f, 0x6c, 0x40, 0x9d, 0x85, 0xed, 0xb7, 0x79, 0xea, 0x51, 0xec, 0x76, + 0x98, 0xf1, 0x36, 0x8c, 0xb9, 0xd6, 0xa7, 0x07, 0xa2, 0xf9, 0x67, 0xdc, 0xd3, 0x04, 0x80, 0xc1, + 0xf7, 0xe0, 0xb1, 0xc8, 0x65, 0x62, 0x00, 0xb2, 0x7f, 0xce, 0xc8, 0x66, 0x22, 0x96, 0x0a, 0x56, + 0x12, 0xce, 0x4a, 0xf9, 0x2f, 0x78, 0x49, 0x40, 0x12, 0xd7, 0x2e, 0xbe, 0x51, 0x70, 0xcd, 0xa3, + 0xb3, 0x59, 0xed, 0x5f, 0x72, 0xab, 0x51, 0xac, 0x60, 0xb5, 0x7d, 0x98, 0x61, 0x8c, 0x67, 0xf3, + 0xeb, 0xd7, 0x79, 0x61, 0xa5, 0xe8, 0x03, 0xd1, 0xbb, 0x9f, 0x82, 0x59, 0xdf, 0x9c, 0xbc, 0x23, + 0x75, 0xab, 0x4d, 0xb3, 0x35, 0x00, 0xf3, 0xef, 0x30, 0x66, 0x5e, 0xf1, 0xfd, 0x96, 0xd6, 0xdd, + 0x36, 0x5b, 0x98, 0xfc, 0x65, 0xc8, 0x72, 0xf2, 0x8e, 0xdd, 0x46, 0x35, 0xe7, 0xd8, 0xb6, 0x3e, + 0x8d, 0xea, 0x03, 0x50, 0x7f, 0x43, 0x72, 0xd5, 0x41, 0x08, 0x8e, 0x99, 0x37, 0x41, 0xf3, 0x7b, + 0x95, 0xaa, 0xd5, 0x6c, 0x39, 0x6d, 0x2f, 0x86, 0xf1, 0x5f, 0x71, 0x4f, 0xf9, 0xb8, 0x4d, 0x02, + 0xcb, 0x97, 0x61, 0x82, 0x1c, 0x0e, 0x1a, 0x92, 0xbf, 0xcb, 0x88, 0xc6, 0x03, 0x14, 0x2b, 0x1c, + 0x35, 0xa7, 0xd9, 0x32, 0xdb, 0x83, 0xd4, 0xbf, 0x7f, 0xcd, 0x0b, 0x07, 0x83, 0xb0, 0xc2, 0xe1, + 0x9d, 0xb6, 0x10, 0x5e, 0xed, 0x07, 0x60, 0xf8, 0x26, 0x2f, 0x1c, 0x1c, 0xc3, 0x28, 0x78, 0xc3, + 0x30, 0x00, 0xc5, 0xbf, 0xe1, 0x14, 0x1c, 0x83, 0x29, 0x3e, 0x11, 0x2c, 0xb4, 0x6d, 0x74, 0x6c, + 0xb9, 0x5e, 0x9b, 0xf6, 0xc1, 0xfd, 0xa9, 0x7e, 0xef, 0x87, 0x62, 0x13, 0x66, 0x84, 0xa0, 0xf9, + 0xbb, 0x30, 0x29, 0xb5, 0x18, 0x7a, 0xdc, 0x3b, 0x0b, 0xd9, 0xbf, 0xf2, 0x63, 0x56, 0x8c, 0xc4, + 0x0e, 0x23, 0xbf, 0x85, 0xfd, 0x2e, 0xf6, 0x01, 0xf1, 0x64, 0x9f, 0xf9, 0xb1, 0xef, 0x7a, 0xa1, + 0x0d, 0xc8, 0x6f, 0xc0, 0xb8, 0xd0, 0x03, 0xc4, 0x53, 0xfd, 0x55, 0x46, 0x95, 0x09, 0xb7, 0x00, + 0xf9, 0x35, 0x48, 0xe2, 0xf5, 0x3c, 0x1e, 0xfe, 0xd7, 0x18, 0x9c, 0x88, 0xe7, 0x9f, 0x83, 0x14, + 0x5f, 0xc7, 0xe3, 0xa1, 0xbf, 0xcc, 0xa0, 0x3e, 0x04, 0xc3, 0xf9, 0x1a, 0x1e, 0x0f, 0xff, 0xeb, + 0x1c, 0xce, 0x21, 0x18, 0x3e, 0xb8, 0x09, 0xdf, 0xfe, 0x9b, 0x49, 0x56, 0x87, 0xb9, 0xed, 0x6e, + 0xc3, 0x28, 0x5b, 0xbc, 0xe3, 0xd1, 0xbf, 0xc2, 0x4e, 0xce, 0x11, 0xf9, 0x1b, 0x30, 0x3c, 0xa0, + 0xc1, 0xff, 0x16, 0x83, 0x52, 0xf9, 0x7c, 0x09, 0xd2, 0xa1, 0x05, 0x3b, 0x1e, 0xfe, 0xb7, 0x19, + 0x3c, 0x8c, 0xc2, 0xaa, 0xb3, 0x05, 0x3b, 0x9e, 0xe0, 0xef, 0x70, 0xd5, 0x19, 0x02, 0x9b, 0x8d, + 0xaf, 0xd5, 0xf1, 0xe8, 0xbf, 0xcb, 0xad, 0xce, 0x21, 0xf9, 0x17, 0x60, 0xcc, 0xaf, 0xbf, 0xf1, + 0xf8, 0xbf, 0xc7, 0xf0, 0x01, 0x06, 0x5b, 0x20, 0x54, 0xff, 0xe3, 0x29, 0xfe, 0x3e, 0xb7, 0x40, + 0x08, 0x85, 0xd3, 0x48, 0x5e, 0xd3, 0xe3, 0x99, 0x7e, 0x95, 0xa7, 0x91, 0xb4, 0xa4, 0x63, 0x6f, + 0x92, 0x32, 0x18, 0x4f, 0xf1, 0x0f, 0xb8, 0x37, 0x89, 0x3c, 0x56, 0x43, 0x5e, 0x24, 0xe3, 0x39, + 0xfe, 0x11, 0x57, 0x43, 0x5a, 0x23, 0xf3, 0xbb, 0xa0, 0x77, 0x2f, 0x90, 0xf1, 0x7c, 0x9f, 0x63, + 0x7c, 0x53, 0x5d, 0xeb, 0x63, 0xfe, 0x25, 0x98, 0x89, 0x5e, 0x1c, 0xe3, 0x59, 0x7f, 0xed, 0xc7, + 0xd2, 0xed, 0x4c, 0x78, 0x6d, 0xcc, 0xef, 0x07, 0x55, 0x36, 0xbc, 0x30, 0xc6, 0xd3, 0x7e, 0xfe, + 0xc7, 0x62, 0xa1, 0x0d, 0xaf, 0x8b, 0xf9, 0x02, 0x40, 0xb0, 0x26, 0xc5, 0x73, 0x7d, 0x81, 0x71, + 0x85, 0x40, 0x38, 0x35, 0xd8, 0x92, 0x14, 0x8f, 0xff, 0x22, 0x4f, 0x0d, 0x86, 0xc0, 0xa9, 0xc1, + 0x57, 0xa3, 0x78, 0xf4, 0x97, 0x78, 0x6a, 0x70, 0x48, 0xfe, 0x36, 0xa4, 0xec, 0x4e, 0xa3, 0x81, + 0x63, 0x4b, 0xef, 0xff, 0x1a, 0x51, 0xf6, 0x7f, 0xfe, 0x84, 0x81, 0x39, 0x20, 0xbf, 0x06, 0xc3, + 0xa8, 0x79, 0x88, 0xea, 0x71, 0xc8, 0xff, 0xf5, 0x13, 0x5e, 0x4f, 0xb0, 0x74, 0xfe, 0x05, 0x00, + 0x7a, 0x33, 0x4d, 0x9e, 0x12, 0xc5, 0x60, 0xff, 0xf7, 0x4f, 0xd8, 0x1b, 0x0a, 0x01, 0x24, 0x20, + 0xa0, 0xef, 0x3b, 0xf4, 0x27, 0xf8, 0xa1, 0x48, 0x40, 0x6e, 0xc0, 0x6f, 0xc1, 0xe8, 0x2b, 0xae, + 0x63, 0x7b, 0xe6, 0x71, 0x1c, 0xfa, 0xff, 0x30, 0x34, 0x97, 0xc7, 0x06, 0x6b, 0x3a, 0x6d, 0xe4, + 0x99, 0xc7, 0x6e, 0x1c, 0xf6, 0xff, 0x32, 0xac, 0x0f, 0xc0, 0xe0, 0x9a, 0xe9, 0x7a, 0x83, 0x5c, + 0xf7, 0xff, 0xe3, 0x60, 0x0e, 0xc0, 0x4a, 0xe3, 0xcf, 0xaf, 0xa2, 0xd3, 0x38, 0xec, 0x8f, 0xb8, + 0xd2, 0x4c, 0x3e, 0xff, 0x1c, 0x8c, 0xe1, 0x8f, 0xf4, 0xad, 0x9d, 0x18, 0xf0, 0x1f, 0x31, 0x70, + 0x80, 0xc0, 0x67, 0x76, 0xbd, 0xba, 0x67, 0xc5, 0x1b, 0xfb, 0xff, 0x33, 0x4f, 0x73, 0xf9, 0x7c, + 0x01, 0xd2, 0xae, 0x57, 0xaf, 0x77, 0x58, 0x47, 0x13, 0x03, 0xff, 0xe3, 0x9f, 0xf8, 0x37, 0xb9, + 0x3e, 0xa6, 0x78, 0x31, 0x7a, 0xb3, 0x0e, 0xee, 0x38, 0x77, 0x1c, 0xba, 0x4d, 0x07, 0xdf, 0x6f, + 0xc0, 0x8d, 0x9e, 0xbb, 0x6e, 0x78, 0x11, 0xb9, 0x52, 0x73, 0x9a, 0x87, 0x8e, 0x7b, 0xe5, 0xd0, + 0xf1, 0x4e, 0xae, 0x78, 0x27, 0x08, 0x8f, 0xb1, 0xfd, 0xb7, 0x24, 0xfe, 0x3c, 0x7b, 0xb6, 0x4d, + 0x3b, 0xf2, 0x3c, 0xb6, 0x62, 0x61, 0xbd, 0x2b, 0x64, 0x4b, 0x5c, 0x3f, 0x0f, 0x23, 0xe4, 0x4a, + 0xae, 0x92, 0xc7, 0x4e, 0x4a, 0x31, 0x79, 0xff, 0x9d, 0xf9, 0x21, 0x83, 0x8d, 0xf9, 0xb3, 0x2b, + 0x64, 0xcf, 0x32, 0x21, 0xcc, 0xae, 0xf8, 0xb3, 0xd7, 0xe8, 0xb6, 0xa5, 0x30, 0x7b, 0xcd, 0x9f, + 0x5d, 0x25, 0x1b, 0x98, 0xaa, 0x30, 0xbb, 0xea, 0xcf, 0xae, 0x91, 0x4d, 0xfa, 0x71, 0x61, 0x76, + 0xcd, 0x9f, 0xbd, 0x4e, 0xb6, 0xe6, 0x93, 0xc2, 0xec, 0x75, 0x7f, 0xf6, 0x06, 0xd9, 0x95, 0x9f, + 0x12, 0x66, 0x6f, 0xf8, 0xb3, 0x37, 0xc9, 0x6e, 0xbc, 0x2e, 0xcc, 0xde, 0xf4, 0x67, 0x6f, 0x91, + 0x57, 0x4c, 0x46, 0x85, 0xd9, 0x5b, 0xfa, 0x1c, 0x8c, 0xd2, 0x2b, 0x5f, 0x26, 0x8f, 0x6e, 0x27, + 0xd9, 0x34, 0x1f, 0x0c, 0xe6, 0xaf, 0x92, 0xd7, 0x49, 0x46, 0xc4, 0xf9, 0xab, 0xc1, 0xfc, 0x0a, + 0x79, 0xb1, 0x5a, 0x13, 0xe7, 0x57, 0x82, 0xf9, 0x6b, 0xd9, 0x71, 0xf2, 0x4a, 0x8d, 0x30, 0x7f, + 0x2d, 0x98, 0x5f, 0xcd, 0x4e, 0xe0, 0x60, 0x16, 0xe7, 0x57, 0x83, 0xf9, 0xb5, 0xec, 0xe4, 0x05, + 0x65, 0x21, 0x23, 0xce, 0xaf, 0xe5, 0x7e, 0x89, 0xb8, 0xd7, 0x0e, 0xdc, 0x3b, 0x23, 0xba, 0xd7, + 0x77, 0xec, 0x8c, 0xe8, 0x58, 0xdf, 0xa5, 0x33, 0xa2, 0x4b, 0x7d, 0x67, 0xce, 0x88, 0xce, 0xf4, + 0xdd, 0x38, 0x23, 0xba, 0xd1, 0x77, 0xe0, 0x8c, 0xe8, 0x40, 0xdf, 0x75, 0x33, 0xa2, 0xeb, 0x7c, + 0xa7, 0xcd, 0x88, 0x4e, 0xf3, 0xdd, 0x35, 0x23, 0xba, 0xcb, 0x77, 0x54, 0x56, 0x72, 0x54, 0xe0, + 0xa2, 0xac, 0xe4, 0xa2, 0xc0, 0x39, 0x59, 0xc9, 0x39, 0x81, 0x5b, 0xb2, 0x92, 0x5b, 0x02, 0x87, + 0x64, 0x25, 0x87, 0x04, 0xae, 0xc8, 0x4a, 0xae, 0x08, 0x9c, 0xc0, 0x72, 0xcc, 0x40, 0xad, 0x88, + 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xda, 0x37, 0xc7, 0xd4, 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, + 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe7, 0x98, + 0x1a, 0x93, 0x63, 0x6a, 0x4c, 0x8e, 0xa9, 0x31, 0x39, 0xa6, 0xc6, 0xe4, 0x98, 0x1a, 0x93, 0x63, + 0x6a, 0xcf, 0x1c, 0x0b, 0xdc, 0x3b, 0x23, 0xba, 0x37, 0x32, 0xc7, 0xd4, 0x1e, 0x39, 0xa6, 0xf6, + 0xc8, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, 0x91, 0x63, 0x6a, 0x8f, 0x1c, 0x53, + 0x7b, 0xe4, 0x98, 0xda, 0x2b, 0xc7, 0xd4, 0x9e, 0x39, 0xa6, 0xf6, 0xcc, 0x31, 0xb5, 0x67, 0x8e, + 0xa9, 0x3d, 0x73, 0x4c, 0xed, 0x99, 0x63, 0x6a, 0x38, 0xc7, 0xfe, 0xad, 0x0a, 0x3a, 0xcd, 0xb1, + 0x5d, 0xf2, 0xf2, 0x0f, 0x73, 0xc5, 0x9c, 0x94, 0x69, 0x23, 0xd8, 0x75, 0x5a, 0xe0, 0x92, 0x39, + 0x29, 0xd7, 0xc4, 0xf9, 0x15, 0x7f, 0x9e, 0x67, 0x9b, 0x38, 0x7f, 0xcd, 0x9f, 0xe7, 0xf9, 0x26, + 0xce, 0xaf, 0xfa, 0xf3, 0x3c, 0xe3, 0xc4, 0xf9, 0x35, 0x7f, 0x9e, 0xe7, 0x9c, 0x38, 0x7f, 0xdd, + 0x9f, 0xe7, 0x59, 0x27, 0xce, 0xdf, 0xf0, 0xe7, 0x79, 0xde, 0x89, 0xf3, 0x37, 0xfd, 0x79, 0x9e, + 0x79, 0xe2, 0xfc, 0x2d, 0xfd, 0x82, 0x9c, 0x7b, 0x5c, 0xc0, 0x77, 0xed, 0x05, 0x39, 0xfb, 0x24, + 0x89, 0xab, 0x81, 0x04, 0xcf, 0x3f, 0x49, 0x62, 0x25, 0x90, 0xe0, 0x19, 0x28, 0x49, 0x5c, 0xcb, + 0x7d, 0x96, 0xb8, 0xcf, 0x96, 0xdd, 0x37, 0x2b, 0xb9, 0x2f, 0x11, 0x72, 0xdd, 0xac, 0xe4, 0xba, + 0x44, 0xc8, 0x6d, 0xb3, 0x92, 0xdb, 0x12, 0x21, 0x97, 0xcd, 0x4a, 0x2e, 0x4b, 0x84, 0xdc, 0x35, + 0x2b, 0xb9, 0x2b, 0x11, 0x72, 0xd5, 0xac, 0xe4, 0xaa, 0x44, 0xc8, 0x4d, 0xb3, 0x92, 0x9b, 0x12, + 0x21, 0x17, 0xcd, 0x4a, 0x2e, 0x4a, 0x84, 0xdc, 0x33, 0x2b, 0xb9, 0x27, 0x11, 0x72, 0xcd, 0x79, + 0xd9, 0x35, 0x89, 0xb0, 0x5b, 0xce, 0xcb, 0x6e, 0x49, 0x84, 0x5d, 0x72, 0x5e, 0x76, 0x49, 0x22, + 0xec, 0x8e, 0xf3, 0xb2, 0x3b, 0x12, 0x61, 0x57, 0xfc, 0x59, 0x82, 0x77, 0x84, 0x7b, 0x5e, 0xbb, + 0x53, 0xf3, 0xde, 0x53, 0x47, 0xb8, 0x2c, 0xb4, 0x0f, 0xe9, 0x15, 0x7d, 0x89, 0x34, 0xac, 0xe1, + 0x8e, 0x53, 0x5a, 0xc1, 0x96, 0x85, 0xc6, 0x22, 0x84, 0xb0, 0xa3, 0x11, 0xab, 0xef, 0xa9, 0x37, + 0x5c, 0x16, 0xda, 0x8c, 0x78, 0xfd, 0x6e, 0x7e, 0xe0, 0x1d, 0xdb, 0xdb, 0x09, 0xde, 0xb1, 0x31, + 0xf3, 0x9f, 0xb5, 0x63, 0x5b, 0x8c, 0x37, 0xb9, 0x6f, 0xec, 0xc5, 0x78, 0x63, 0x77, 0xad, 0x3a, + 0x83, 0x76, 0x70, 0x8b, 0xf1, 0xa6, 0xf5, 0x8d, 0xfa, 0xfe, 0xf6, 0x5b, 0x2c, 0x82, 0x0d, 0xd4, + 0x8a, 0x88, 0xe0, 0xb3, 0xf6, 0x5b, 0xcb, 0x42, 0x29, 0x39, 0x6b, 0x04, 0xab, 0x67, 0x8e, 0xe0, + 0xb3, 0x76, 0x5e, 0xcb, 0x42, 0x79, 0x39, 0x73, 0x04, 0x7f, 0x00, 0xfd, 0x10, 0x8b, 0xe0, 0xc0, + 0xfc, 0x67, 0xed, 0x87, 0x16, 0xe3, 0x4d, 0x1e, 0x19, 0xc1, 0xea, 0x19, 0x22, 0x78, 0x90, 0xfe, + 0x68, 0x31, 0xde, 0xb4, 0xd1, 0x11, 0xfc, 0x9e, 0xbb, 0x99, 0x2f, 0x2b, 0x30, 0x55, 0xb1, 0xea, + 0xe5, 0xe6, 0x21, 0xaa, 0xd7, 0x51, 0x9d, 0xd9, 0x71, 0x59, 0xa8, 0x04, 0x3d, 0x5c, 0xfd, 0xed, + 0x77, 0xe6, 0x03, 0x0b, 0xaf, 0x41, 0x8a, 0xda, 0x74, 0x79, 0x39, 0x7b, 0x5f, 0x89, 0xa9, 0x70, + 0xbe, 0xa8, 0x7e, 0x91, 0xc3, 0xae, 0x2e, 0x67, 0xff, 0x8b, 0x12, 0xaa, 0x72, 0xfe, 0x70, 0xee, + 0x57, 0x89, 0x86, 0xf6, 0x7b, 0xd6, 0xf0, 0xca, 0x40, 0x1a, 0x86, 0x74, 0x7b, 0xbc, 0x4b, 0xb7, + 0x90, 0x56, 0x1d, 0x98, 0xac, 0x58, 0xf5, 0x0a, 0xf9, 0x4a, 0xef, 0x20, 0x2a, 0x51, 0x19, 0xa9, + 0x1e, 0x2c, 0x0b, 0x61, 0x19, 0x46, 0xf8, 0x21, 0x2d, 0xd6, 0x88, 0x9c, 0x85, 0x4f, 0x6b, 0x0b, + 0xa7, 0x5d, 0xec, 0x75, 0xda, 0xa0, 0xb2, 0xfb, 0x27, 0x5c, 0xec, 0x75, 0xc2, 0x20, 0x87, 0xfc, + 0x53, 0xbd, 0xc1, 0x17, 0x67, 0xfa, 0x16, 0x8e, 0x7e, 0x1e, 0x12, 0x9b, 0xf4, 0x0d, 0xe1, 0x4c, + 0x31, 0x83, 0x95, 0xfa, 0xce, 0x3b, 0xf3, 0xc9, 0x83, 0x8e, 0x55, 0x37, 0x12, 0x9b, 0x75, 0xfd, + 0x2e, 0x0c, 0x7f, 0x92, 0x7d, 0x31, 0x0e, 0x0b, 0xac, 0x32, 0x81, 0x8f, 0xc6, 0x6c, 0x31, 0x11, + 0xea, 0xa5, 0x03, 0xcb, 0xf6, 0xae, 0xae, 0xdc, 0x34, 0x28, 0x45, 0xee, 0x2f, 0x02, 0xd0, 0x73, + 0xae, 0x9b, 0xee, 0x89, 0x5e, 0xe1, 0xcc, 0xf4, 0xd4, 0x37, 0xbf, 0xf3, 0xce, 0xfc, 0xea, 0x20, + 0xac, 0xcf, 0xd6, 0x4d, 0xf7, 0xe4, 0x59, 0xef, 0xb4, 0x85, 0x96, 0x8a, 0xa7, 0x1e, 0x72, 0x39, + 0x7b, 0x8b, 0xaf, 0x7a, 0xec, 0xba, 0xb2, 0xa1, 0xeb, 0x4a, 0x09, 0xd7, 0xb4, 0x21, 0x5e, 0xd3, + 0xf2, 0xc3, 0x5e, 0xcf, 0x1b, 0x7c, 0x91, 0x90, 0x2c, 0xa9, 0xc6, 0x59, 0x52, 0x7d, 0xaf, 0x96, + 0x6c, 0xf1, 0xfa, 0x28, 0x5d, 0xab, 0xda, 0xef, 0x5a, 0xd5, 0xf7, 0x72, 0xad, 0x7f, 0x42, 0xb3, + 0xd5, 0xcf, 0xa7, 0x03, 0x9b, 0xbe, 0x9d, 0xf8, 0xf3, 0xb5, 0x17, 0xf4, 0xbe, 0x76, 0x01, 0xf9, + 0xe4, 0xfd, 0xb7, 0xe6, 0x95, 0xdc, 0x97, 0x13, 0xfc, 0xca, 0x69, 0x22, 0x3d, 0xdc, 0x95, 0xff, + 0xbc, 0xf4, 0x54, 0x1f, 0x84, 0x85, 0xbe, 0xa4, 0xc0, 0x4c, 0x57, 0x25, 0xa7, 0x66, 0x7a, 0x7f, + 0xcb, 0xb9, 0x7d, 0xd6, 0x72, 0xce, 0x14, 0xfc, 0x5d, 0x05, 0xce, 0x49, 0xe5, 0x95, 0xaa, 0x77, + 0x45, 0x52, 0xef, 0xd1, 0xee, 0x33, 0x11, 0xc1, 0x90, 0x76, 0x61, 0xf7, 0x4a, 0x80, 0x10, 0xb3, + 0xef, 0xf7, 0x55, 0xc9, 0xef, 0xe7, 0x7d, 0x40, 0x84, 0xb9, 0x78, 0x04, 0x30, 0xb5, 0x1d, 0x48, + 0xee, 0xb7, 0x11, 0xd2, 0xe7, 0x20, 0xb1, 0xd3, 0x66, 0x1a, 0x4e, 0x50, 0xfc, 0x4e, 0xbb, 0xd8, + 0x36, 0xed, 0xda, 0x89, 0x91, 0xd8, 0x69, 0xeb, 0x17, 0x41, 0x2d, 0xb0, 0x9f, 0x1e, 0x48, 0xaf, + 0x4c, 0x52, 0x81, 0x82, 0x5d, 0x67, 0x12, 0x78, 0x4e, 0x9f, 0x83, 0xe4, 0x16, 0x32, 0x8f, 0x98, + 0x12, 0x40, 0x65, 0xf0, 0x88, 0x41, 0xc6, 0xd9, 0x09, 0x5f, 0x86, 0x14, 0x27, 0xd6, 0x2f, 0x61, + 0xc4, 0x91, 0xc7, 0x4e, 0xcb, 0x10, 0x58, 0x1d, 0xb6, 0x72, 0x91, 0x59, 0xfd, 0x32, 0x0c, 0x1b, + 0xd6, 0xf1, 0x89, 0xc7, 0x4e, 0xde, 0x2d, 0x46, 0xa7, 0x73, 0xf7, 0x60, 0xcc, 0xd7, 0xe8, 0x7d, + 0xa6, 0x5e, 0xa7, 0x97, 0xa6, 0xcf, 0x86, 0xd7, 0x13, 0xbe, 0x6f, 0x49, 0x87, 0xf4, 0x0b, 0x90, + 0xda, 0xf3, 0xda, 0x41, 0xd1, 0xe7, 0x1d, 0xa9, 0x3f, 0x9a, 0xfb, 0x25, 0x05, 0x52, 0xeb, 0x08, + 0xb5, 0x88, 0xc1, 0x9f, 0x82, 0xe4, 0xba, 0xf3, 0xba, 0xcd, 0x14, 0x9c, 0x62, 0x16, 0xc5, 0xd3, + 0xcc, 0xa6, 0x64, 0x5a, 0x7f, 0x2a, 0x6c, 0xf7, 0x69, 0xdf, 0xee, 0x21, 0x39, 0x62, 0xfb, 0x9c, + 0x60, 0x7b, 0xe6, 0x40, 0x2c, 0xd4, 0x65, 0xff, 0x1b, 0x90, 0x0e, 0x9d, 0x45, 0x5f, 0x60, 0x6a, + 0x24, 0x64, 0x60, 0xd8, 0x56, 0x58, 0x22, 0x87, 0x60, 0x5c, 0x38, 0x31, 0x86, 0x86, 0x4c, 0xdc, + 0x03, 0x4a, 0xcc, 0xbc, 0x28, 0x9a, 0x39, 0x5a, 0x94, 0x99, 0x7a, 0x99, 0xda, 0x88, 0x98, 0xfb, + 0x12, 0x0d, 0xce, 0xde, 0x4e, 0xc4, 0x9f, 0x73, 0xc3, 0xa0, 0x56, 0xac, 0x46, 0xee, 0x39, 0x00, + 0x9a, 0xf2, 0x65, 0xbb, 0xd3, 0x94, 0xb2, 0x6e, 0x82, 0x1b, 0x78, 0xff, 0x04, 0xed, 0x23, 0x97, + 0x88, 0x88, 0xfd, 0x14, 0x2e, 0x30, 0x40, 0x53, 0x8c, 0xe0, 0x9f, 0x89, 0xc5, 0x47, 0x76, 0x62, + 0x58, 0x34, 0x4b, 0x45, 0xef, 0x21, 0xaf, 0x60, 0x3b, 0xde, 0x09, 0x6a, 0x4b, 0x88, 0x15, 0xfd, + 0x9a, 0x90, 0xb0, 0x13, 0x2b, 0x8f, 0xfb, 0x88, 0x9e, 0xa0, 0x6b, 0xb9, 0xaf, 0x13, 0x05, 0x71, + 0x2b, 0xd0, 0x75, 0x81, 0xea, 0x00, 0x17, 0xa8, 0x5f, 0x17, 0xfa, 0xb7, 0x3e, 0x6a, 0x4a, 0xb7, + 0x96, 0xb7, 0x84, 0xfb, 0x9c, 0xfe, 0xca, 0x8a, 0xf7, 0x98, 0xdc, 0xa6, 0x5c, 0xe5, 0x67, 0x62, + 0x55, 0xee, 0xd1, 0xdd, 0x9e, 0xd5, 0xa6, 0xea, 0xa0, 0x36, 0xfd, 0x7d, 0xbf, 0xe3, 0xa0, 0x3f, + 0xe2, 0x40, 0x7e, 0x33, 0x44, 0xff, 0x68, 0xac, 0xef, 0xf3, 0x4a, 0xc9, 0x57, 0x75, 0x75, 0x50, + 0xf7, 0xe7, 0x13, 0xc5, 0xa2, 0xaf, 0xee, 0x8d, 0x33, 0x84, 0x40, 0x3e, 0x51, 0x2a, 0xf9, 0x65, + 0x3b, 0xf5, 0xd9, 0xb7, 0xe6, 0x95, 0xaf, 0xbd, 0x35, 0x3f, 0x94, 0xfb, 0x4d, 0x05, 0xa6, 0x98, + 0x64, 0x28, 0x70, 0x9f, 0x95, 0x94, 0x7f, 0x84, 0xd7, 0x8c, 0x28, 0x0b, 0xfc, 0xd4, 0x82, 0xf7, + 0x5b, 0x0a, 0x64, 0xbb, 0x74, 0xe5, 0xf6, 0x5e, 0x1e, 0x48, 0xe5, 0xbc, 0x52, 0xfe, 0xd9, 0xdb, + 0xfc, 0x1e, 0x0c, 0xef, 0x5b, 0x4d, 0xd4, 0xc6, 0x2b, 0x01, 0xfe, 0x40, 0x55, 0xe6, 0x0f, 0x73, + 0xe8, 0x10, 0x9f, 0xa3, 0xca, 0x09, 0x73, 0x2b, 0x7a, 0x16, 0x92, 0xeb, 0xa6, 0x67, 0x12, 0x0d, + 0x32, 0x7e, 0x7d, 0x35, 0x3d, 0x33, 0x77, 0x0d, 0x32, 0xdb, 0xa7, 0xe4, 0x15, 0x9a, 0x3a, 0x79, + 0x3d, 0x44, 0xec, 0xfe, 0x78, 0xbf, 0x7a, 0x75, 0x71, 0x38, 0x55, 0xd7, 0xee, 0x2b, 0xf9, 0x24, + 0xd1, 0xe7, 0x35, 0x98, 0xd8, 0xc1, 0x6a, 0x13, 0x1c, 0x81, 0x5d, 0x00, 0x65, 0x5b, 0x6c, 0x84, + 0xc2, 0xac, 0x86, 0xb2, 0x2d, 0xb5, 0x8f, 0xaa, 0x6f, 0x1e, 0xa9, 0x6d, 0x53, 0xfd, 0xb6, 0x6d, + 0x31, 0x99, 0x9a, 0xd0, 0xa6, 0x16, 0x93, 0x29, 0xd0, 0xc6, 0xd9, 0x79, 0xff, 0x93, 0x0a, 0x1a, + 0x6d, 0x75, 0xd6, 0xd1, 0x91, 0x65, 0x5b, 0x5e, 0x77, 0xbf, 0xea, 0x6b, 0xac, 0xbf, 0x00, 0x63, + 0xd8, 0xa4, 0x1b, 0xec, 0xa7, 0xb7, 0xb0, 0xe9, 0x2f, 0xb2, 0x16, 0x45, 0xa2, 0x60, 0x03, 0x24, + 0x74, 0x02, 0x8c, 0xbe, 0x01, 0x6a, 0xa5, 0xb2, 0xcd, 0x16, 0xb7, 0xd5, 0xbe, 0x50, 0xf6, 0x06, + 0x0e, 0x3b, 0x62, 0x63, 0xee, 0xb1, 0x81, 0x09, 0xf4, 0x55, 0x48, 0x54, 0xb6, 0x59, 0xc3, 0x7b, + 0x69, 0x10, 0x1a, 0x23, 0x51, 0xd9, 0x9e, 0xfd, 0x77, 0x0a, 0x8c, 0x0b, 0xa3, 0x7a, 0x0e, 0x32, + 0x74, 0x20, 0x74, 0xb9, 0x23, 0x86, 0x30, 0xc6, 0x75, 0x4e, 0xbc, 0x47, 0x9d, 0x67, 0x0b, 0x30, + 0x29, 0x8d, 0xeb, 0x4b, 0xa0, 0x87, 0x87, 0x98, 0x12, 0xf4, 0x67, 0x8b, 0x22, 0x66, 0x72, 0x4f, + 0x00, 0x04, 0x76, 0xf5, 0x7f, 0x6d, 0xa7, 0x52, 0xde, 0xdb, 0x2f, 0xaf, 0x6b, 0x4a, 0xee, 0x9b, + 0x0a, 0xa4, 0x59, 0xdb, 0x5a, 0x73, 0x5a, 0x48, 0x2f, 0x82, 0x52, 0x60, 0x11, 0xf4, 0x70, 0x7a, + 0x2b, 0x05, 0xfd, 0x0a, 0x28, 0xc5, 0xc1, 0x5d, 0xad, 0x14, 0xf5, 0x15, 0x50, 0x4a, 0xcc, 0xc1, + 0x83, 0x79, 0x46, 0x29, 0xe5, 0xfe, 0x48, 0x85, 0xe9, 0x70, 0x1b, 0xcd, 0xeb, 0xc9, 0x45, 0xf1, + 0xbe, 0x29, 0x3f, 0x76, 0x75, 0xe5, 0xda, 0xea, 0x12, 0xfe, 0xc7, 0x0f, 0xc9, 0x8b, 0xe2, 0x2d, + 0x54, 0xb7, 0x48, 0xd7, 0x6b, 0x22, 0xf9, 0x64, 0x68, 0xb6, 0xeb, 0x35, 0x11, 0x61, 0xb6, 0xeb, + 0x35, 0x11, 0x61, 0xb6, 0xeb, 0x35, 0x11, 0x61, 0xb6, 0xeb, 0x51, 0x80, 0x30, 0xdb, 0xf5, 0x9a, + 0x88, 0x30, 0xdb, 0xf5, 0x9a, 0x88, 0x30, 0xdb, 0xfd, 0x9a, 0x08, 0x9b, 0xee, 0xf9, 0x9a, 0x88, + 0x38, 0xdf, 0xfd, 0x9a, 0x88, 0x38, 0xdf, 0xfd, 0x9a, 0x48, 0x3e, 0xe9, 0xb5, 0x3b, 0xa8, 0xf7, + 0x43, 0x07, 0x11, 0xdf, 0xef, 0x1e, 0x30, 0x28, 0xc0, 0x3b, 0x30, 0x49, 0xf7, 0x23, 0x4a, 0x8e, + 0xed, 0x99, 0x96, 0x8d, 0xda, 0xfa, 0xc7, 0x20, 0x43, 0x87, 0xe8, 0x5d, 0x4e, 0xd4, 0x5d, 0x20, + 0x9d, 0x67, 0xe5, 0x56, 0x90, 0xce, 0xfd, 0x59, 0x12, 0x66, 0xe8, 0x40, 0xc5, 0x6c, 0x22, 0xe1, + 0x25, 0xa3, 0xcb, 0xd2, 0x23, 0xa5, 0x09, 0x0c, 0x7f, 0xf0, 0xce, 0x3c, 0x1d, 0x2d, 0xf8, 0xc1, + 0x74, 0x59, 0x7a, 0xb8, 0x24, 0xca, 0x05, 0xeb, 0xcf, 0x65, 0xe9, 0xc5, 0x23, 0x51, 0xce, 0x5f, + 0x6e, 0x7c, 0x39, 0xfe, 0x0a, 0x92, 0x28, 0xb7, 0xee, 0x47, 0xd9, 0x65, 0xe9, 0x65, 0x24, 0x51, + 0xae, 0xec, 0xc7, 0xdb, 0x65, 0xe9, 0xd1, 0x93, 0x28, 0xb7, 0xe1, 0x47, 0xde, 0x65, 0xe9, 0x21, + 0x94, 0x28, 0x77, 0xc7, 0x8f, 0xc1, 0xcb, 0xd2, 0xab, 0x4a, 0xa2, 0xdc, 0x8b, 0x7e, 0x34, 0x5e, + 0x96, 0x5e, 0x5a, 0x12, 0xe5, 0x36, 0xfd, 0xb8, 0x5c, 0x90, 0x5f, 0x5f, 0x12, 0x05, 0xef, 0x06, + 0x11, 0xba, 0x20, 0xbf, 0xc8, 0x24, 0x4a, 0x7e, 0x3c, 0x88, 0xd5, 0x05, 0xf9, 0x95, 0x26, 0x51, + 0x72, 0x2b, 0x88, 0xda, 0x05, 0xf9, 0x51, 0x99, 0x28, 0xb9, 0x1d, 0xc4, 0xef, 0x82, 0xfc, 0xd0, + 0x4c, 0x94, 0xac, 0x04, 0x91, 0xbc, 0x20, 0x3f, 0x3e, 0x13, 0x25, 0x77, 0x82, 0x3d, 0xf4, 0x3f, + 0x90, 0xc2, 0x2f, 0xf4, 0x12, 0x54, 0x4e, 0x0a, 0x3f, 0x88, 0x08, 0xbd, 0x9c, 0x14, 0x7a, 0x10, + 0x11, 0x76, 0x39, 0x29, 0xec, 0x20, 0x22, 0xe4, 0x72, 0x52, 0xc8, 0x41, 0x44, 0xb8, 0xe5, 0xa4, + 0x70, 0x83, 0x88, 0x50, 0xcb, 0x49, 0xa1, 0x06, 0x11, 0x61, 0x96, 0x93, 0xc2, 0x0c, 0x22, 0x42, + 0x2c, 0x27, 0x85, 0x18, 0x44, 0x84, 0x57, 0x4e, 0x0a, 0x2f, 0x88, 0x08, 0xad, 0x4b, 0x72, 0x68, + 0x41, 0x54, 0x58, 0x5d, 0x92, 0xc3, 0x0a, 0xa2, 0x42, 0xea, 0x49, 0x39, 0xa4, 0xc6, 0x1e, 0xbc, + 0x33, 0x3f, 0x8c, 0x87, 0x42, 0xd1, 0x74, 0x49, 0x8e, 0x26, 0x88, 0x8a, 0xa4, 0x4b, 0x72, 0x24, + 0x41, 0x54, 0x14, 0x5d, 0x92, 0xa3, 0x08, 0xa2, 0x22, 0xe8, 0x6d, 0x39, 0x82, 0x82, 0x57, 0x7c, + 0x72, 0xd2, 0x13, 0xc5, 0xb8, 0x08, 0x52, 0x07, 0x88, 0x20, 0x75, 0x80, 0x08, 0x52, 0x07, 0x88, + 0x20, 0x75, 0x80, 0x08, 0x52, 0x07, 0x88, 0x20, 0x75, 0x80, 0x08, 0x52, 0x07, 0x88, 0x20, 0x75, + 0x90, 0x08, 0x52, 0x07, 0x8a, 0x20, 0xb5, 0x57, 0x04, 0x5d, 0x92, 0x5f, 0x78, 0x80, 0xa8, 0x82, + 0x74, 0x49, 0x7e, 0xf2, 0x19, 0x1f, 0x42, 0xea, 0x40, 0x21, 0xa4, 0xf6, 0x0a, 0xa1, 0x3f, 0x50, + 0x61, 0x5a, 0x08, 0x21, 0xf6, 0x78, 0xe8, 0xfd, 0xaa, 0x40, 0xd7, 0x07, 0x78, 0xbf, 0x22, 0x2a, + 0xa6, 0xae, 0x0f, 0xf0, 0x8c, 0xba, 0x5f, 0x9c, 0x75, 0x57, 0xa1, 0xf2, 0x00, 0x55, 0x68, 0xc3, + 0x8f, 0xa1, 0xeb, 0x03, 0xbc, 0x77, 0xd1, 0x1d, 0x7b, 0x37, 0xfb, 0x15, 0x81, 0x17, 0x07, 0x2a, + 0x02, 0x9b, 0x03, 0x15, 0x81, 0xbb, 0x81, 0x07, 0x7f, 0x39, 0x01, 0xe7, 0x02, 0x0f, 0xd2, 0x4f, + 0xe4, 0x27, 0x92, 0x72, 0xa1, 0x27, 0x54, 0x3a, 0x7f, 0x6a, 0x13, 0x72, 0x63, 0x62, 0xb3, 0xae, + 0xef, 0x8a, 0xcf, 0xaa, 0xf2, 0x67, 0x7d, 0x7e, 0x13, 0xf2, 0x38, 0xdb, 0x0b, 0xbd, 0x04, 0xea, + 0x66, 0xdd, 0x25, 0xd5, 0x22, 0xea, 0xb4, 0x25, 0x03, 0x4f, 0xeb, 0x06, 0x8c, 0x10, 0x71, 0x97, + 0xb8, 0xf7, 0xbd, 0x9c, 0x78, 0xdd, 0x60, 0x4c, 0xb9, 0xb7, 0x15, 0xb8, 0x20, 0x84, 0xf2, 0xfb, + 0xf3, 0xc4, 0xe0, 0xf6, 0x40, 0x4f, 0x0c, 0x84, 0x04, 0x09, 0x9e, 0x1e, 0x3c, 0xdd, 0xfd, 0xa0, + 0x3a, 0x9c, 0x25, 0xf2, 0x93, 0x84, 0xbf, 0x0c, 0x13, 0xc1, 0x15, 0x90, 0x5b, 0xb6, 0xb5, 0xf8, + 0xcd, 0xcc, 0xa8, 0xd4, 0x5c, 0x93, 0x36, 0xd1, 0xfa, 0xc2, 0xfc, 0x6c, 0xcd, 0xe5, 0x61, 0xb2, + 0x22, 0x7e, 0x97, 0x27, 0x6e, 0x2f, 0x22, 0x85, 0x5b, 0xf3, 0xfb, 0x5f, 0x99, 0x1f, 0xca, 0x7d, + 0x14, 0x32, 0xe1, 0xaf, 0xeb, 0x48, 0xc0, 0x31, 0x0e, 0xcc, 0x27, 0xbf, 0x8d, 0xa5, 0xff, 0xa1, + 0x02, 0x8f, 0x84, 0xc5, 0x5f, 0xb2, 0xbc, 0x93, 0x4d, 0x1b, 0xf7, 0xf4, 0xcf, 0x41, 0x0a, 0x31, + 0xc7, 0xb1, 0x5f, 0x3b, 0x61, 0xb7, 0x91, 0x91, 0xe2, 0x4b, 0xe4, 0x5f, 0xc3, 0x87, 0x48, 0x5b, + 0x1c, 0xfc, 0xb4, 0x2b, 0xb3, 0x4f, 0xc1, 0x30, 0xe5, 0x17, 0xf5, 0x1a, 0x97, 0xf4, 0xfa, 0x8d, + 0x08, 0xbd, 0x48, 0x1c, 0xe9, 0x77, 0x05, 0xbd, 0x42, 0x77, 0xab, 0x91, 0xe2, 0x4b, 0x3c, 0xf8, + 0x8a, 0x29, 0xdc, 0xff, 0x91, 0x88, 0x8a, 0x57, 0x72, 0x01, 0x52, 0x65, 0x59, 0x26, 0x5a, 0xcf, + 0x75, 0x48, 0x56, 0x9c, 0x3a, 0xf9, 0x1d, 0x16, 0xf2, 0x7b, 0xb9, 0xcc, 0xc8, 0xec, 0xc7, 0x73, + 0x2f, 0x43, 0xaa, 0x74, 0x62, 0x35, 0xea, 0x6d, 0x64, 0xb3, 0x47, 0xf6, 0x6c, 0x07, 0x1d, 0x63, + 0x0c, 0x7f, 0x2e, 0x57, 0x82, 0xa9, 0x8a, 0x63, 0x17, 0x4f, 0xbd, 0x70, 0xdd, 0x58, 0x92, 0x52, + 0x84, 0x3d, 0xf2, 0x21, 0x5f, 0x00, 0xc1, 0x02, 0xc5, 0xe1, 0xef, 0xbc, 0x33, 0xaf, 0xec, 0xfb, + 0xdb, 0xe7, 0xdb, 0xf0, 0x28, 0x4b, 0x9f, 0x2e, 0xaa, 0x95, 0x38, 0xaa, 0x31, 0xf6, 0x98, 0x3a, + 0x44, 0xb7, 0x89, 0xe9, 0xec, 0x48, 0xba, 0x87, 0xd3, 0x0c, 0x37, 0x45, 0x7d, 0x35, 0x53, 0xcf, + 0xa4, 0x59, 0x24, 0xdd, 0x52, 0x1c, 0x9d, 0xa4, 0xd9, 0x93, 0x30, 0xe6, 0xcf, 0x85, 0xa2, 0x21, + 0x9c, 0x29, 0x2b, 0x8b, 0x39, 0x48, 0x87, 0x12, 0x56, 0x1f, 0x06, 0xa5, 0xa0, 0x0d, 0xe1, 0xff, + 0x8a, 0x9a, 0x82, 0xff, 0x2b, 0x69, 0x89, 0xc5, 0xa7, 0x60, 0x52, 0xda, 0xbe, 0xc4, 0x33, 0xeb, + 0x1a, 0xe0, 0xff, 0xca, 0x5a, 0x7a, 0x36, 0xf9, 0xd9, 0x7f, 0x32, 0x37, 0xb4, 0x78, 0x1b, 0xf4, + 0xee, 0x8d, 0x4e, 0x7d, 0x04, 0x12, 0x05, 0x4c, 0xf9, 0x28, 0x24, 0x8a, 0x45, 0x4d, 0x99, 0x9d, + 0xfc, 0x1b, 0x5f, 0xbc, 0x90, 0x2e, 0x92, 0xef, 0x22, 0xdf, 0x43, 0x5e, 0xb1, 0xc8, 0xc0, 0xcf, + 0xc3, 0x23, 0x91, 0x1b, 0xa5, 0x18, 0x5f, 0x2a, 0x51, 0xfc, 0xfa, 0x7a, 0x17, 0x7e, 0x7d, 0x9d, + 0xe0, 0x95, 0x3c, 0x7f, 0xe0, 0x5c, 0xd0, 0x23, 0xb6, 0x25, 0xb3, 0xf5, 0xd0, 0x03, 0xee, 0x42, + 0xfe, 0x79, 0x26, 0x5b, 0x8c, 0x94, 0x45, 0x31, 0x0f, 0xac, 0x8b, 0xf9, 0x12, 0xc3, 0x97, 0x22, + 0xf1, 0x47, 0xd2, 0x53, 0x55, 0x71, 0x85, 0x60, 0x24, 0x25, 0x5f, 0xe1, 0xf5, 0x48, 0x92, 0x93, + 0xd0, 0xbb, 0xee, 0xeb, 0xbe, 0xc2, 0xe5, 0x48, 0x59, 0x2b, 0xe6, 0x9d, 0xaf, 0x72, 0xfe, 0x0a, + 0x5b, 0xe4, 0x0b, 0x57, 0xf5, 0x47, 0x78, 0x8e, 0x0a, 0x15, 0x98, 0x19, 0x88, 0x4b, 0xe5, 0x4b, + 0x0c, 0x50, 0xec, 0x09, 0xe8, 0x6d, 0x25, 0x8e, 0xcc, 0xbf, 0xc8, 0x48, 0x4a, 0x3d, 0x49, 0x62, + 0x4c, 0xc5, 0xe1, 0xc5, 0xfd, 0xfb, 0xef, 0xce, 0x0d, 0x7d, 0xfb, 0xdd, 0xb9, 0xa1, 0xff, 0xf6, + 0xee, 0xdc, 0xd0, 0x77, 0xdf, 0x9d, 0x53, 0x7e, 0xf0, 0xee, 0x9c, 0xf2, 0xa3, 0x77, 0xe7, 0x94, + 0x3f, 0x7d, 0x77, 0x4e, 0x79, 0xf3, 0xc1, 0x9c, 0xf2, 0xb5, 0x07, 0x73, 0xca, 0xd7, 0x1f, 0xcc, + 0x29, 0xbf, 0xf7, 0x60, 0x4e, 0x79, 0xfb, 0xc1, 0x9c, 0x72, 0xff, 0xc1, 0x9c, 0xf2, 0xed, 0x07, + 0x73, 0xca, 0x77, 0x1f, 0xcc, 0x29, 0x3f, 0x78, 0x30, 0x37, 0xf4, 0xa3, 0x07, 0x73, 0xca, 0x9f, + 0x3e, 0x98, 0x1b, 0x7a, 0xf3, 0x7b, 0x73, 0x43, 0x6f, 0x7d, 0x6f, 0x6e, 0xe8, 0x6b, 0xdf, 0x9b, + 0x53, 0xe0, 0xbb, 0xab, 0xf0, 0xb8, 0xf4, 0x45, 0x32, 0xd2, 0x0d, 0x5c, 0xe3, 0x3f, 0xe5, 0xe4, + 0x0f, 0x9c, 0xf1, 0xfb, 0x64, 0xb3, 0x0f, 0xfb, 0xed, 0xb5, 0xdc, 0xbf, 0x1f, 0x86, 0x51, 0xbe, + 0x0b, 0x1c, 0xf5, 0x63, 0xd0, 0x6b, 0x90, 0x3a, 0xb1, 0x1a, 0x66, 0xdb, 0xf2, 0x4e, 0xd9, 0xf6, + 0xe7, 0x63, 0x4b, 0x81, 0xda, 0x7c, 0xc3, 0xf4, 0xc5, 0x4e, 0xd3, 0xe9, 0xb4, 0x0d, 0x5f, 0x54, + 0xbf, 0x00, 0x99, 0x13, 0x64, 0x1d, 0x9f, 0x78, 0x55, 0xcb, 0xae, 0xd6, 0x9a, 0xa4, 0x4d, 0x1e, + 0x37, 0x80, 0x8e, 0x6d, 0xda, 0xa5, 0x26, 0x3e, 0x59, 0xdd, 0xf4, 0x4c, 0x72, 0x7b, 0x9e, 0x31, + 0xc8, 0x67, 0xfd, 0x22, 0x64, 0xda, 0xc8, 0xed, 0x34, 0xbc, 0x6a, 0xcd, 0xe9, 0xd8, 0x1e, 0x69, + 0x64, 0x55, 0x23, 0x4d, 0xc7, 0x4a, 0x78, 0x48, 0x7f, 0x12, 0xc6, 0xbd, 0x76, 0x07, 0x55, 0xdd, + 0x9a, 0xe3, 0xb9, 0x4d, 0xd3, 0x26, 0x8d, 0x6c, 0xca, 0xc8, 0xe0, 0xc1, 0x3d, 0x36, 0x46, 0xfe, + 0xd8, 0x40, 0xcd, 0x69, 0x23, 0x72, 0x1f, 0x9d, 0x30, 0xe8, 0x81, 0xae, 0x81, 0xfa, 0x2a, 0x3a, + 0x25, 0x77, 0x6a, 0x49, 0x03, 0x7f, 0xd4, 0x9f, 0x81, 0x11, 0xfa, 0x77, 0x28, 0x48, 0x5b, 0x4d, + 0x1e, 0x5a, 0xfb, 0x97, 0x46, 0x37, 0x67, 0x0d, 0x26, 0xa0, 0xdf, 0x82, 0x51, 0x0f, 0xb5, 0xdb, + 0xa6, 0x65, 0x93, 0xbb, 0xa6, 0xf4, 0xca, 0x7c, 0x84, 0x19, 0xf6, 0xa9, 0x04, 0xf9, 0x5d, 0x57, + 0x83, 0xcb, 0xeb, 0x6b, 0x90, 0x21, 0x72, 0x2b, 0x55, 0xfa, 0xb7, 0x3a, 0xd2, 0x3d, 0x03, 0x39, + 0x4d, 0xe5, 0xf8, 0x33, 0x02, 0x0e, 0xa3, 0xbf, 0x69, 0x37, 0x4e, 0x4e, 0xfb, 0x64, 0xc4, 0x69, + 0x49, 0xcd, 0x5d, 0x21, 0xfd, 0x22, 0x3d, 0x35, 0xe3, 0xa1, 0xbf, 0x7a, 0xb7, 0x0d, 0x99, 0xb0, + 0x5e, 0xdc, 0x0c, 0xb4, 0xef, 0x21, 0x66, 0x78, 0x3a, 0xf8, 0x1d, 0xf7, 0x1e, 0x56, 0xa0, 0xf3, + 0xf9, 0xc4, 0x4d, 0x65, 0x76, 0x17, 0x34, 0xf9, 0x7c, 0x11, 0x94, 0x97, 0x45, 0x4a, 0x2d, 0x7c, + 0xb1, 0x64, 0x87, 0x3c, 0x60, 0xcc, 0xbd, 0x00, 0x23, 0x34, 0x7e, 0xf4, 0x34, 0x8c, 0x06, 0x3f, + 0x97, 0x98, 0x82, 0xe4, 0xee, 0x41, 0x65, 0x8f, 0xfe, 0xee, 0xe9, 0xde, 0x56, 0x61, 0x77, 0x6f, + 0x7f, 0xb3, 0xf4, 0x71, 0x2d, 0xa1, 0x4f, 0x42, 0xba, 0xb8, 0xb9, 0xb5, 0x55, 0x2d, 0x16, 0x36, + 0xb7, 0xca, 0xf7, 0x34, 0x35, 0x37, 0x07, 0x23, 0x54, 0x4f, 0xf2, 0xfb, 0x6d, 0x1d, 0xdb, 0x3e, + 0xe5, 0x7d, 0x03, 0x39, 0xc8, 0x7d, 0x43, 0x87, 0xd1, 0x42, 0xa3, 0xb1, 0x6d, 0xb6, 0x5c, 0xfd, + 0x25, 0x98, 0xa2, 0xbf, 0x24, 0xb1, 0xef, 0xac, 0x93, 0x9f, 0x19, 0xc4, 0x55, 0x41, 0x61, 0xbf, + 0x5f, 0x1f, 0x5c, 0x37, 0x13, 0x5f, 0xea, 0x92, 0xa5, 0x06, 0xee, 0xe6, 0xd0, 0xf7, 0x41, 0xe3, + 0x83, 0x1b, 0x0d, 0xc7, 0xf4, 0x30, 0x6f, 0x82, 0xfd, 0x0a, 0x60, 0x6f, 0x5e, 0x2e, 0x4a, 0x69, + 0xbb, 0x18, 0xf4, 0x8f, 0x41, 0x6a, 0xd3, 0xf6, 0xae, 0xad, 0x60, 0x36, 0xfe, 0xb7, 0x55, 0xba, + 0xd9, 0xb8, 0x08, 0x65, 0xf1, 0x11, 0x0c, 0x7d, 0x7d, 0x15, 0xa3, 0x93, 0xfd, 0xd0, 0x44, 0x24, + 0x40, 0x93, 0x43, 0xfd, 0x05, 0x18, 0xc3, 0xb7, 0x25, 0xf4, 0xe4, 0xc3, 0xbc, 0x67, 0xed, 0x82, + 0xfb, 0x32, 0x14, 0x1f, 0x60, 0x38, 0x01, 0x3d, 0xff, 0x48, 0x5f, 0x82, 0x90, 0x02, 0x01, 0x06, + 0x13, 0xec, 0xf9, 0x1a, 0x8c, 0xf6, 0x24, 0xd8, 0x93, 0x34, 0xd8, 0x0b, 0x6b, 0xb0, 0xe7, 0x6b, + 0x90, 0xea, 0x4b, 0x10, 0xd6, 0xc0, 0x3f, 0xd6, 0x8b, 0x00, 0x1b, 0xd6, 0x1b, 0xa8, 0x4e, 0x55, + 0xa0, 0x7f, 0x79, 0x25, 0x17, 0xc1, 0x10, 0x08, 0x51, 0x8a, 0x10, 0x4a, 0x2f, 0x43, 0x7a, 0xef, + 0x28, 0x20, 0x81, 0xae, 0x3c, 0xf6, 0xd5, 0x38, 0x92, 0x58, 0xc2, 0x38, 0x5f, 0x15, 0x7a, 0x31, + 0xe9, 0xfe, 0xaa, 0x84, 0xae, 0x26, 0x84, 0x0a, 0x54, 0xa1, 0x24, 0x99, 0x18, 0x55, 0x42, 0x2c, + 0x61, 0x1c, 0x2e, 0x86, 0x45, 0xc7, 0xc1, 0x92, 0xac, 0x2a, 0xcd, 0x47, 0x50, 0x30, 0x09, 0x56, + 0x0c, 0xd9, 0x11, 0xf1, 0x08, 0x09, 0x72, 0x0c, 0x9e, 0xe8, 0xed, 0x11, 0x2e, 0xc3, 0x3d, 0xc2, + 0x8f, 0xc3, 0x79, 0x46, 0xde, 0x64, 0xc5, 0x3c, 0x93, 0xb1, 0x79, 0xc6, 0x45, 0xa5, 0x3c, 0xe3, + 0xc3, 0xfa, 0x27, 0x60, 0x92, 0x8f, 0xe1, 0xf2, 0x84, 0x49, 0x35, 0xf6, 0xb7, 0xa9, 0x7a, 0x93, + 0x32, 0x49, 0xca, 0x29, 0xe3, 0xf5, 0x0a, 0x4c, 0xf0, 0xa1, 0x6d, 0x97, 0x5c, 0xee, 0x14, 0xfb, + 0xbb, 0x0f, 0xbd, 0x19, 0xa9, 0x20, 0x25, 0x94, 0xd0, 0xb3, 0xeb, 0x30, 0x13, 0x5d, 0x8d, 0xc2, + 0xe5, 0x77, 0x8c, 0x96, 0xdf, 0x73, 0xe1, 0xf2, 0xab, 0x84, 0xcb, 0x77, 0x09, 0x1e, 0x89, 0xac, + 0x3d, 0x71, 0x24, 0x89, 0x30, 0xc9, 0x6d, 0x18, 0x17, 0x4a, 0x4e, 0x18, 0x3c, 0x1c, 0x01, 0x1e, + 0xee, 0x06, 0x07, 0xa1, 0x15, 0xb1, 0x7a, 0x08, 0x60, 0x35, 0x0c, 0xfe, 0x18, 0x4c, 0x88, 0xf5, + 0x26, 0x8c, 0x1e, 0x8f, 0x40, 0x8f, 0x47, 0xa0, 0xa3, 0xcf, 0x9d, 0x8c, 0x40, 0x27, 0x25, 0xf4, + 0x5e, 0xcf, 0x73, 0x4f, 0x45, 0xa0, 0xa7, 0x22, 0xd0, 0xd1, 0xe7, 0xd6, 0x23, 0xd0, 0x7a, 0x18, + 0xfd, 0x1c, 0x4c, 0x4a, 0x25, 0x26, 0x0c, 0x1f, 0x8d, 0x80, 0x8f, 0x86, 0xe1, 0xcf, 0x83, 0x26, + 0x17, 0x97, 0x30, 0x7e, 0x32, 0x02, 0x3f, 0x19, 0x75, 0xfa, 0x68, 0xed, 0x47, 0x22, 0xe0, 0x23, + 0x91, 0xa7, 0x8f, 0xc6, 0x6b, 0x11, 0x78, 0x2d, 0x8c, 0xcf, 0x43, 0x26, 0x5c, 0x4d, 0xc2, 0xd8, + 0x54, 0x04, 0x36, 0x25, 0xdb, 0x5d, 0x28, 0x26, 0x71, 0x91, 0x3e, 0xd6, 0x23, 0x5d, 0x84, 0x12, + 0x12, 0x47, 0x92, 0x09, 0x93, 0x7c, 0x12, 0xce, 0x45, 0x95, 0x8c, 0x08, 0x8e, 0x85, 0x30, 0xc7, + 0x04, 0xee, 0x11, 0x83, 0x66, 0xcf, 0x6c, 0x49, 0x8d, 0xd3, 0xec, 0xa7, 0x60, 0x3a, 0xa2, 0x70, + 0x44, 0xd0, 0x2e, 0x89, 0xdd, 0x58, 0x36, 0x44, 0x4b, 0x8a, 0x80, 0x65, 0x1f, 0xef, 0x3a, 0x96, + 0xed, 0x85, 0xbb, 0xb2, 0x6f, 0x4e, 0xc3, 0x04, 0x2b, 0x4f, 0x3b, 0xed, 0x3a, 0x6a, 0xa3, 0xba, + 0xfe, 0x97, 0x7a, 0xf7, 0x4e, 0xcb, 0xdd, 0x45, 0x8d, 0xa1, 0xce, 0xd0, 0x42, 0x7d, 0xaa, 0x67, + 0x0b, 0x75, 0x25, 0x9e, 0x3e, 0xae, 0x93, 0x2a, 0x75, 0x75, 0x52, 0x4f, 0xf7, 0x26, 0xed, 0xd5, + 0x50, 0x95, 0xba, 0x1a, 0xaa, 0xfe, 0x24, 0x91, 0x7d, 0xd5, 0x46, 0x77, 0x5f, 0xb5, 0xd0, 0x9b, + 0xa5, 0x77, 0x7b, 0xb5, 0xd1, 0xdd, 0x5e, 0xc5, 0xf0, 0x44, 0x77, 0x59, 0x1b, 0xdd, 0x5d, 0x56, + 0x1f, 0x9e, 0xde, 0xcd, 0xd6, 0x46, 0x77, 0xb3, 0x15, 0xc3, 0x13, 0xdd, 0x73, 0x6d, 0x46, 0xf4, + 0x5c, 0xcf, 0xf4, 0x26, 0xea, 0xd7, 0x7a, 0x6d, 0x45, 0xb5, 0x5e, 0x8b, 0x7d, 0x94, 0xea, 0xdb, + 0x81, 0x6d, 0x46, 0x74, 0x60, 0x71, 0x8a, 0xf5, 0x68, 0xc4, 0xb6, 0xa2, 0x1a, 0xb1, 0x58, 0xc5, + 0x7a, 0xf5, 0x63, 0x7f, 0x41, 0xee, 0xc7, 0x2e, 0xf7, 0x66, 0x8a, 0x6e, 0xcb, 0x36, 0xba, 0xdb, + 0xb2, 0x85, 0xb8, 0x9c, 0x8b, 0xea, 0xce, 0x3e, 0xd5, 0xb3, 0x3b, 0x1b, 0x20, 0x85, 0xe3, 0x9a, + 0xb4, 0x97, 0x7b, 0x35, 0x69, 0x4b, 0xf1, 0xdc, 0xfd, 0x7b, 0xb5, 0x83, 0x1e, 0xbd, 0xda, 0xb3, + 0xf1, 0xc4, 0x1f, 0xb6, 0x6c, 0x1f, 0xb6, 0x6c, 0x1f, 0xb6, 0x6c, 0x1f, 0xb6, 0x6c, 0x3f, 0xfb, + 0x96, 0x2d, 0x9f, 0xfc, 0xdc, 0x57, 0xe6, 0x95, 0xdc, 0x7f, 0x55, 0xfd, 0x3f, 0x99, 0xf5, 0x92, + 0xe5, 0x9d, 0xe0, 0xf2, 0xb6, 0x0d, 0x19, 0xf2, 0xc7, 0x2e, 0x9a, 0x66, 0xab, 0x65, 0xd9, 0xc7, + 0xac, 0x67, 0x5b, 0xec, 0xde, 0x4a, 0x64, 0x00, 0xf2, 0xe7, 0x42, 0xb6, 0xa9, 0x30, 0x5b, 0x6e, + 0xec, 0x60, 0x44, 0xbf, 0x0b, 0xe9, 0xa6, 0x7b, 0xec, 0xb3, 0x25, 0xba, 0x16, 0x42, 0x89, 0x8d, + 0x5e, 0x69, 0x40, 0x06, 0x4d, 0x7f, 0x00, 0xab, 0x76, 0x78, 0xea, 0x05, 0xaa, 0xa9, 0x71, 0xaa, + 0x61, 0x9f, 0x8a, 0xaa, 0x1d, 0x06, 0x23, 0x38, 0x6c, 0x65, 0xdd, 0xe3, 0x2a, 0x9d, 0x10, 0x3c, + 0x2f, 0xc1, 0xa4, 0xa4, 0x6d, 0x44, 0xce, 0x3f, 0x84, 0x6f, 0xb0, 0x62, 0xb2, 0xe6, 0x71, 0x39, + 0x11, 0x0e, 0xc8, 0xdc, 0x13, 0x30, 0x2e, 0x70, 0xeb, 0x19, 0x50, 0x8e, 0xd8, 0xd7, 0x28, 0x95, + 0xa3, 0xdc, 0x97, 0x15, 0x48, 0xb3, 0x77, 0x08, 0x76, 0x4d, 0xab, 0xad, 0xbf, 0x08, 0xc9, 0x06, + 0xff, 0x2a, 0xd3, 0xc3, 0x7e, 0x6d, 0x96, 0x30, 0xe8, 0x1b, 0x30, 0xdc, 0xf6, 0xbf, 0xea, 0xf4, + 0x50, 0xdf, 0x85, 0x25, 0xf0, 0xdc, 0x7d, 0x05, 0xa6, 0xd8, 0x2b, 0xae, 0x2e, 0x7b, 0xf1, 0xd9, + 0x6c, 0xcd, 0x7e, 0x43, 0x81, 0x31, 0xff, 0x48, 0x3f, 0x84, 0x09, 0xff, 0x80, 0xbe, 0x5c, 0x4f, + 0x23, 0x35, 0x1f, 0xb2, 0x70, 0x17, 0xc7, 0x52, 0xc4, 0x27, 0xfa, 0x14, 0x8a, 0xae, 0xc9, 0xe2, + 0xe0, 0x6c, 0x01, 0xa6, 0x23, 0xc4, 0xce, 0xb2, 0x20, 0xe7, 0x2e, 0xc2, 0x58, 0xc5, 0xf1, 0xe8, + 0x2f, 0xe6, 0xe8, 0xe7, 0x42, 0x4f, 0x15, 0x8a, 0x09, 0x6d, 0x88, 0x80, 0x17, 0x2f, 0xc2, 0x28, + 0xcb, 0x7e, 0x7d, 0x04, 0x12, 0xdb, 0x05, 0x6d, 0x88, 0xfc, 0x5f, 0xd4, 0x14, 0xf2, 0x7f, 0x49, + 0x4b, 0x14, 0xb7, 0xde, 0xcf, 0x47, 0x4c, 0x87, 0x23, 0xd4, 0x3c, 0x7f, 0x1e, 0x00, 0x00, 0xff, + 0xff, 0x71, 0x6f, 0x41, 0x4f, 0x26, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/marshaler/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/marshaler/theproto3.pb.go index 10310e802..18f9996c4 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/marshaler/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/marshaler/theproto3.pb.go @@ -271,491 +271,498 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7735 bytes of a gzipped FileDescriptorSet + // 7844 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0x1e, 0x1b, 0x0d, 0x90, 0xc0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0x48, 0x0e, - 0x34, 0x1a, 0x51, 0xb4, 0xc5, 0xe1, 0x70, 0x38, 0x37, 0x8c, 0x25, 0x05, 0x00, 0xc1, 0x11, 0xc7, - 0x24, 0x48, 0x37, 0x49, 0x4b, 0x5a, 0xa5, 0x82, 0x6a, 0x02, 0x87, 0x24, 0x24, 0xa0, 0x1b, 0x41, - 0x37, 0x24, 0xd1, 0x0f, 0x29, 0xed, 0x3a, 0xd9, 0x78, 0xb3, 0x95, 0xeb, 0x26, 0x15, 0xaf, 0xd7, - 0x17, 0x79, 0x53, 0x1b, 0x7b, 0x37, 0x37, 0xaf, 0xb3, 0x71, 0xb6, 0xb6, 0x52, 0x59, 0xe5, 0xc1, - 0xc9, 0xe4, 0x25, 0xe5, 0x4d, 0x5e, 0x52, 0xae, 0x94, 0x6a, 0x35, 0x76, 0x2a, 0x4e, 0xe2, 0x24, - 0xde, 0xac, 0xab, 0x76, 0xab, 0xbc, 0x0f, 0x5b, 0xe7, 0xd6, 0x7d, 0x4e, 0xa3, 0x81, 0x06, 0x67, - 0x24, 0xdb, 0x0f, 0x7e, 0x99, 0x41, 0x9f, 0xf3, 0x7f, 0x5f, 0xff, 0xfd, 0xdf, 0xce, 0xdf, 0xa7, - 0x1b, 0x20, 0xfc, 0xfc, 0x1a, 0x2c, 0x1c, 0xdb, 0xf6, 0x71, 0x13, 0x5d, 0x6e, 0x77, 0x6c, 0xd7, - 0x3e, 0xec, 0x1e, 0x5d, 0xae, 0x23, 0xa7, 0xd6, 0x69, 0xb4, 0x5d, 0xbb, 0xb3, 0x4c, 0xc6, 0xf4, - 0x49, 0x2a, 0xb1, 0xcc, 0x25, 0x72, 0xdb, 0x30, 0xb5, 0xd1, 0x68, 0xa2, 0x75, 0x4f, 0x70, 0x0f, - 0xb9, 0xfa, 0x4d, 0x88, 0x1f, 0x35, 0x9a, 0x28, 0xab, 0x2c, 0xa8, 0x8b, 0xe9, 0xd5, 0x8b, 0xcb, - 0x01, 0xd0, 0xb2, 0x8c, 0xd8, 0xc5, 0xc3, 0x06, 0x41, 0xe4, 0xbe, 0x1b, 0x87, 0xe9, 0x90, 0x59, - 0x5d, 0x87, 0xb8, 0x65, 0xb6, 0x30, 0xa3, 0xb2, 0x98, 0x32, 0xc8, 0x67, 0x3d, 0x0b, 0x63, 0x6d, - 0xb3, 0xf6, 0xba, 0x79, 0x8c, 0xb2, 0x31, 0x32, 0xcc, 0x0f, 0xf5, 0x39, 0x80, 0x3a, 0x6a, 0x23, - 0xab, 0x8e, 0xac, 0xda, 0x69, 0x56, 0x5d, 0x50, 0x17, 0x53, 0x86, 0x30, 0xa2, 0x7f, 0x04, 0xa6, - 0xda, 0xdd, 0xc3, 0x66, 0xa3, 0x56, 0x15, 0xc4, 0x60, 0x41, 0x5d, 0x4c, 0x18, 0x1a, 0x9d, 0x58, - 0xf7, 0x85, 0x9f, 0x86, 0xc9, 0x37, 0x91, 0xf9, 0xba, 0x28, 0x9a, 0x26, 0xa2, 0x13, 0x78, 0x58, - 0x10, 0x2c, 0x41, 0xa6, 0x85, 0x1c, 0xc7, 0x3c, 0x46, 0x55, 0xf7, 0xb4, 0x8d, 0xb2, 0x71, 0x72, - 0xf5, 0x0b, 0x3d, 0x57, 0x1f, 0xbc, 0xf2, 0x34, 0x43, 0xed, 0x9f, 0xb6, 0x91, 0x5e, 0x80, 0x14, - 0xb2, 0xba, 0x2d, 0xca, 0x90, 0xe8, 0x63, 0xbf, 0xb2, 0xd5, 0x6d, 0x05, 0x59, 0x92, 0x18, 0xc6, - 0x28, 0xc6, 0x1c, 0xd4, 0x79, 0xa3, 0x51, 0x43, 0xd9, 0x51, 0x42, 0xf0, 0x74, 0x0f, 0xc1, 0x1e, - 0x9d, 0x0f, 0x72, 0x70, 0x9c, 0x5e, 0x82, 0x14, 0x7a, 0xcb, 0x45, 0x96, 0xd3, 0xb0, 0xad, 0xec, - 0x18, 0x21, 0x79, 0x2a, 0xc4, 0x8b, 0xa8, 0x59, 0x0f, 0x52, 0xf8, 0x38, 0xfd, 0x3a, 0x8c, 0xd9, - 0x6d, 0xb7, 0x61, 0x5b, 0x4e, 0x36, 0xb9, 0xa0, 0x2c, 0xa6, 0x57, 0xcf, 0x87, 0x06, 0xc2, 0x0e, - 0x95, 0x31, 0xb8, 0xb0, 0xbe, 0x09, 0x9a, 0x63, 0x77, 0x3b, 0x35, 0x54, 0xad, 0xd9, 0x75, 0x54, - 0x6d, 0x58, 0x47, 0x76, 0x36, 0x45, 0x08, 0xe6, 0x7b, 0x2f, 0x84, 0x08, 0x96, 0xec, 0x3a, 0xda, - 0xb4, 0x8e, 0x6c, 0x63, 0xc2, 0x91, 0x8e, 0xf5, 0x19, 0x18, 0x75, 0x4e, 0x2d, 0xd7, 0x7c, 0x2b, - 0x9b, 0x21, 0x11, 0xc2, 0x8e, 0x72, 0x7f, 0x92, 0x80, 0xc9, 0x61, 0x42, 0xec, 0x36, 0x24, 0x8e, - 0xf0, 0x55, 0x66, 0x63, 0x67, 0xb1, 0x01, 0xc5, 0xc8, 0x46, 0x1c, 0x7d, 0x40, 0x23, 0x16, 0x20, - 0x6d, 0x21, 0xc7, 0x45, 0x75, 0x1a, 0x11, 0xea, 0x90, 0x31, 0x05, 0x14, 0xd4, 0x1b, 0x52, 0xf1, - 0x07, 0x0a, 0xa9, 0x97, 0x61, 0xd2, 0x53, 0xa9, 0xda, 0x31, 0xad, 0x63, 0x1e, 0x9b, 0x97, 0xa3, - 0x34, 0x59, 0x2e, 0x73, 0x9c, 0x81, 0x61, 0xc6, 0x04, 0x92, 0x8e, 0xf5, 0x75, 0x00, 0xdb, 0x42, - 0xf6, 0x51, 0xb5, 0x8e, 0x6a, 0xcd, 0x6c, 0xb2, 0x8f, 0x95, 0x76, 0xb0, 0x48, 0x8f, 0x95, 0x6c, - 0x3a, 0x5a, 0x6b, 0xea, 0xb7, 0xfc, 0x50, 0x1b, 0xeb, 0x13, 0x29, 0xdb, 0x34, 0xc9, 0x7a, 0xa2, - 0xed, 0x00, 0x26, 0x3a, 0x08, 0xc7, 0x3d, 0xaa, 0xb3, 0x2b, 0x4b, 0x11, 0x25, 0x96, 0x23, 0xaf, - 0xcc, 0x60, 0x30, 0x7a, 0x61, 0xe3, 0x1d, 0xf1, 0x50, 0x7f, 0x12, 0xbc, 0x81, 0x2a, 0x09, 0x2b, - 0x20, 0x55, 0x28, 0xc3, 0x07, 0x2b, 0x66, 0x0b, 0xcd, 0xde, 0x84, 0x09, 0xd9, 0x3c, 0xfa, 0x39, - 0x48, 0x38, 0xae, 0xd9, 0x71, 0x49, 0x14, 0x26, 0x0c, 0x7a, 0xa0, 0x6b, 0xa0, 0x22, 0xab, 0x4e, - 0xaa, 0x5c, 0xc2, 0xc0, 0x1f, 0x67, 0x6f, 0xc0, 0xb8, 0x74, 0xfa, 0x61, 0x81, 0xb9, 0xcf, 0x8e, - 0xc2, 0xb9, 0xb0, 0x98, 0x0b, 0x0d, 0xff, 0x19, 0x18, 0xb5, 0xba, 0xad, 0x43, 0xd4, 0xc9, 0xaa, - 0x84, 0x81, 0x1d, 0xe9, 0x05, 0x48, 0x34, 0xcd, 0x43, 0xd4, 0xcc, 0xc6, 0x17, 0x94, 0xc5, 0x89, - 0xd5, 0x8f, 0x0c, 0x15, 0xd5, 0xcb, 0x5b, 0x18, 0x62, 0x50, 0xa4, 0xfe, 0x3c, 0xc4, 0x59, 0x89, - 0xc3, 0x0c, 0x4b, 0xc3, 0x31, 0xe0, 0x58, 0x34, 0x08, 0x4e, 0x7f, 0x1c, 0x52, 0xf8, 0x7f, 0x6a, - 0xdb, 0x51, 0xa2, 0x73, 0x12, 0x0f, 0x60, 0xbb, 0xea, 0xb3, 0x90, 0x24, 0x61, 0x56, 0x47, 0x7c, - 0x69, 0xf0, 0x8e, 0xb1, 0x63, 0xea, 0xe8, 0xc8, 0xec, 0x36, 0xdd, 0xea, 0x1b, 0x66, 0xb3, 0x8b, - 0x48, 0xc0, 0xa4, 0x8c, 0x0c, 0x1b, 0xfc, 0x24, 0x1e, 0xd3, 0xe7, 0x21, 0x4d, 0xa3, 0xb2, 0x61, - 0xd5, 0xd1, 0x5b, 0xa4, 0xfa, 0x24, 0x0c, 0x1a, 0xa8, 0x9b, 0x78, 0x04, 0x9f, 0xfe, 0x35, 0xc7, - 0xb6, 0xb8, 0x6b, 0xc9, 0x29, 0xf0, 0x00, 0x39, 0xfd, 0x8d, 0x60, 0xe1, 0x7b, 0x22, 0xfc, 0xf2, - 0x82, 0xb1, 0x98, 0xfb, 0x46, 0x0c, 0xe2, 0x24, 0xdf, 0x26, 0x21, 0xbd, 0xff, 0xca, 0x6e, 0xb9, - 0xba, 0xbe, 0x73, 0x50, 0xdc, 0x2a, 0x6b, 0x8a, 0x3e, 0x01, 0x40, 0x06, 0x36, 0xb6, 0x76, 0x0a, - 0xfb, 0x5a, 0xcc, 0x3b, 0xde, 0xac, 0xec, 0x5f, 0x5f, 0xd3, 0x54, 0x0f, 0x70, 0x40, 0x07, 0xe2, - 0xa2, 0xc0, 0xd5, 0x55, 0x2d, 0xa1, 0x6b, 0x90, 0xa1, 0x04, 0x9b, 0x2f, 0x97, 0xd7, 0xaf, 0xaf, - 0x69, 0xa3, 0xf2, 0xc8, 0xd5, 0x55, 0x6d, 0x4c, 0x1f, 0x87, 0x14, 0x19, 0x29, 0xee, 0xec, 0x6c, - 0x69, 0x49, 0x8f, 0x73, 0x6f, 0xdf, 0xd8, 0xac, 0xdc, 0xd1, 0x52, 0x1e, 0xe7, 0x1d, 0x63, 0xe7, - 0x60, 0x57, 0x03, 0x8f, 0x61, 0xbb, 0xbc, 0xb7, 0x57, 0xb8, 0x53, 0xd6, 0xd2, 0x9e, 0x44, 0xf1, - 0x95, 0xfd, 0xf2, 0x9e, 0x96, 0x91, 0xd4, 0xba, 0xba, 0xaa, 0x8d, 0x7b, 0xa7, 0x28, 0x57, 0x0e, - 0xb6, 0xb5, 0x09, 0x7d, 0x0a, 0xc6, 0xe9, 0x29, 0xb8, 0x12, 0x93, 0x81, 0xa1, 0xeb, 0x6b, 0x9a, - 0xe6, 0x2b, 0x42, 0x59, 0xa6, 0xa4, 0x81, 0xeb, 0x6b, 0x9a, 0x9e, 0x2b, 0x41, 0x82, 0x44, 0x97, - 0xae, 0xc3, 0xc4, 0x56, 0xa1, 0x58, 0xde, 0xaa, 0xee, 0xec, 0xee, 0x6f, 0xee, 0x54, 0x0a, 0x5b, - 0x9a, 0xe2, 0x8f, 0x19, 0xe5, 0x4f, 0x1c, 0x6c, 0x1a, 0xe5, 0x75, 0x2d, 0x26, 0x8e, 0xed, 0x96, - 0x0b, 0xfb, 0xe5, 0x75, 0x4d, 0xcd, 0xd5, 0xe0, 0x5c, 0x58, 0x9d, 0x09, 0xcd, 0x0c, 0xc1, 0xc5, - 0xb1, 0x3e, 0x2e, 0x26, 0x5c, 0x3d, 0x2e, 0xfe, 0x75, 0x05, 0xa6, 0x43, 0x6a, 0x6d, 0xe8, 0x49, - 0x5e, 0x80, 0x04, 0x0d, 0x51, 0xba, 0xfa, 0x3c, 0x13, 0x5a, 0xb4, 0x49, 0xc0, 0xf6, 0xac, 0x40, - 0x04, 0x27, 0xae, 0xc0, 0x6a, 0x9f, 0x15, 0x18, 0x53, 0xf4, 0x28, 0xf9, 0x69, 0x05, 0xb2, 0xfd, - 0xb8, 0x23, 0x0a, 0x45, 0x4c, 0x2a, 0x14, 0xb7, 0x83, 0x0a, 0x5c, 0xe8, 0x7f, 0x0d, 0x3d, 0x5a, - 0x7c, 0x45, 0x81, 0x99, 0xf0, 0x46, 0x25, 0x54, 0x87, 0xe7, 0x61, 0xb4, 0x85, 0xdc, 0x13, 0x9b, - 0x2f, 0xd6, 0x97, 0x42, 0x96, 0x00, 0x3c, 0x1d, 0xb4, 0x15, 0x43, 0x89, 0x6b, 0x88, 0xda, 0xaf, - 0xdb, 0xa0, 0xda, 0xf4, 0x68, 0xfa, 0x4b, 0x31, 0x78, 0x24, 0x94, 0x3c, 0x54, 0xd1, 0x27, 0x00, - 0x1a, 0x56, 0xbb, 0xeb, 0xd2, 0x05, 0x99, 0xd6, 0xa7, 0x14, 0x19, 0x21, 0xb9, 0x8f, 0x6b, 0x4f, - 0xd7, 0xf5, 0xe6, 0x55, 0x32, 0x0f, 0x74, 0x88, 0x08, 0xdc, 0xf4, 0x15, 0x8d, 0x13, 0x45, 0xe7, - 0xfa, 0x5c, 0x69, 0xcf, 0x5a, 0xb7, 0x02, 0x5a, 0xad, 0xd9, 0x40, 0x96, 0x5b, 0x75, 0xdc, 0x0e, - 0x32, 0x5b, 0x0d, 0xeb, 0x98, 0x14, 0xe0, 0x64, 0x3e, 0x71, 0x64, 0x36, 0x1d, 0x64, 0x4c, 0xd2, - 0xe9, 0x3d, 0x3e, 0x8b, 0x11, 0x64, 0x95, 0xe9, 0x08, 0x88, 0x51, 0x09, 0x41, 0xa7, 0x3d, 0x44, - 0xee, 0x97, 0xc7, 0x20, 0x2d, 0xb4, 0x75, 0xfa, 0x05, 0xc8, 0xbc, 0x66, 0xbe, 0x61, 0x56, 0x79, - 0xab, 0x4e, 0x2d, 0x91, 0xc6, 0x63, 0xbb, 0xac, 0x5d, 0x5f, 0x81, 0x73, 0x44, 0xc4, 0xee, 0xba, - 0xa8, 0x53, 0xad, 0x35, 0x4d, 0xc7, 0x21, 0x46, 0x4b, 0x12, 0x51, 0x1d, 0xcf, 0xed, 0xe0, 0xa9, - 0x12, 0x9f, 0xd1, 0xaf, 0xc1, 0x34, 0x41, 0xb4, 0xba, 0x4d, 0xb7, 0xd1, 0x6e, 0xa2, 0x2a, 0xbe, - 0x79, 0x70, 0x48, 0x21, 0xf6, 0x34, 0x9b, 0xc2, 0x12, 0xdb, 0x4c, 0x00, 0x6b, 0xe4, 0xe8, 0x77, - 0xe0, 0x09, 0x02, 0x3b, 0x46, 0x16, 0xea, 0x98, 0x2e, 0xaa, 0xa2, 0xbf, 0xdc, 0x35, 0x9b, 0x4e, - 0xd5, 0xb4, 0xea, 0xd5, 0x13, 0xd3, 0x39, 0xc9, 0x9e, 0x13, 0x09, 0x1e, 0xc3, 0xb2, 0x77, 0x98, - 0x68, 0x99, 0x48, 0x16, 0xac, 0xfa, 0x8b, 0xa6, 0x73, 0xa2, 0xe7, 0x61, 0x86, 0x10, 0x39, 0x6e, - 0xa7, 0x61, 0x1d, 0x57, 0x6b, 0x27, 0xa8, 0xf6, 0x7a, 0xb5, 0xeb, 0x1e, 0xdd, 0xcc, 0x3e, 0x2e, - 0x32, 0x10, 0x25, 0xf7, 0x88, 0x4c, 0x09, 0x8b, 0x1c, 0xb8, 0x47, 0x37, 0xf5, 0x3d, 0xc8, 0x60, - 0x7f, 0xb4, 0x1a, 0x9f, 0x42, 0xd5, 0x23, 0xbb, 0x43, 0x16, 0x97, 0x89, 0x90, 0xe4, 0x16, 0x8c, - 0xb8, 0xbc, 0xc3, 0x00, 0xdb, 0x76, 0x1d, 0xe5, 0x13, 0x7b, 0xbb, 0xe5, 0xf2, 0xba, 0x91, 0xe6, - 0x2c, 0x1b, 0x76, 0x07, 0xc7, 0xd4, 0xb1, 0xed, 0xd9, 0x38, 0x4d, 0x63, 0xea, 0xd8, 0xe6, 0x16, - 0xbe, 0x06, 0xd3, 0xb5, 0x1a, 0xbd, 0xec, 0x46, 0xad, 0xca, 0xba, 0x7c, 0x27, 0xab, 0x49, 0xf6, - 0xaa, 0xd5, 0xee, 0x50, 0x01, 0x16, 0xe6, 0x8e, 0x7e, 0x0b, 0x1e, 0xf1, 0xed, 0x25, 0x02, 0xa7, - 0x7a, 0xae, 0x32, 0x08, 0xbd, 0x06, 0xd3, 0xed, 0xd3, 0x5e, 0xa0, 0x2e, 0x9d, 0xb1, 0x7d, 0x1a, - 0x84, 0x3d, 0x45, 0xee, 0xdc, 0x3a, 0xa8, 0x66, 0xba, 0xa8, 0x9e, 0x7d, 0x54, 0x94, 0x16, 0x26, - 0xf4, 0xcb, 0xa0, 0xd5, 0x6a, 0x55, 0x64, 0x99, 0x87, 0x4d, 0x54, 0x35, 0x3b, 0xc8, 0x32, 0x9d, - 0xec, 0xbc, 0x28, 0x3c, 0x51, 0xab, 0x95, 0xc9, 0x6c, 0x81, 0x4c, 0xea, 0x4b, 0x30, 0x65, 0x1f, - 0xbe, 0x56, 0xa3, 0xc1, 0x55, 0x6d, 0x77, 0xd0, 0x51, 0xe3, 0xad, 0xec, 0x45, 0x62, 0xa6, 0x49, - 0x3c, 0x41, 0x42, 0x6b, 0x97, 0x0c, 0xeb, 0xcf, 0x80, 0x56, 0x73, 0x4e, 0xcc, 0x4e, 0x9b, 0xac, - 0xee, 0x4e, 0xdb, 0xac, 0xa1, 0xec, 0x53, 0x54, 0x94, 0x8e, 0x57, 0xf8, 0xb0, 0xfe, 0x32, 0x9c, - 0xeb, 0x5a, 0x0d, 0xcb, 0x45, 0x9d, 0x76, 0x07, 0xe1, 0x26, 0x9d, 0x66, 0x5a, 0xf6, 0x7f, 0x8c, - 0xf5, 0x69, 0xb3, 0x0f, 0x44, 0x69, 0xea, 0x5d, 0x63, 0xba, 0xdb, 0x3b, 0x98, 0xcb, 0x43, 0x46, - 0x74, 0xba, 0x9e, 0x02, 0xea, 0x76, 0x4d, 0xc1, 0x6b, 0x68, 0x69, 0x67, 0x1d, 0xaf, 0x7e, 0x3f, - 0x57, 0xd6, 0x62, 0x78, 0x15, 0xde, 0xda, 0xdc, 0x2f, 0x57, 0x8d, 0x83, 0xca, 0xfe, 0xe6, 0x76, - 0x59, 0x53, 0x97, 0x52, 0xc9, 0xef, 0x8d, 0x69, 0x6f, 0xbf, 0xfd, 0xf6, 0xdb, 0xb1, 0xdc, 0x37, - 0x63, 0x30, 0x21, 0x77, 0xbe, 0xfa, 0xc7, 0xe0, 0x51, 0x7e, 0x9b, 0xea, 0x20, 0xb7, 0xfa, 0x66, - 0xa3, 0x43, 0xe2, 0xb0, 0x65, 0xd2, 0xde, 0xd1, 0x33, 0xe1, 0x39, 0x26, 0xb5, 0x87, 0xdc, 0x97, - 0x1a, 0x1d, 0x1c, 0x65, 0x2d, 0xd3, 0xd5, 0xb7, 0x60, 0xde, 0xb2, 0xab, 0x8e, 0x6b, 0x5a, 0x75, - 0xb3, 0x53, 0xaf, 0xfa, 0x1b, 0x04, 0x55, 0xb3, 0x56, 0x43, 0x8e, 0x63, 0xd3, 0x25, 0xc0, 0x63, - 0x39, 0x6f, 0xd9, 0x7b, 0x4c, 0xd8, 0xaf, 0x8d, 0x05, 0x26, 0x1a, 0x70, 0xb7, 0xda, 0xcf, 0xdd, - 0x8f, 0x43, 0xaa, 0x65, 0xb6, 0xab, 0xc8, 0x72, 0x3b, 0xa7, 0xa4, 0x5f, 0x4b, 0x1a, 0xc9, 0x96, - 0xd9, 0x2e, 0xe3, 0xe3, 0x0f, 0xcf, 0x07, 0xa2, 0x1d, 0xff, 0x9b, 0x0a, 0x19, 0xb1, 0x67, 0xc3, - 0x2d, 0x70, 0x8d, 0xd4, 0x67, 0x85, 0xa4, 0xef, 0x93, 0x03, 0x3b, 0xbc, 0xe5, 0x12, 0x2e, 0xdc, - 0xf9, 0x51, 0xda, 0x49, 0x19, 0x14, 0x89, 0x17, 0x4d, 0x9c, 0xb0, 0x88, 0xf6, 0xe7, 0x49, 0x83, - 0x1d, 0xe9, 0x77, 0x60, 0xf4, 0x35, 0x87, 0x70, 0x8f, 0x12, 0xee, 0x8b, 0x83, 0xb9, 0xef, 0xee, - 0x11, 0xf2, 0xd4, 0xdd, 0xbd, 0x6a, 0x65, 0xc7, 0xd8, 0x2e, 0x6c, 0x19, 0x0c, 0xae, 0x3f, 0x06, - 0xf1, 0xa6, 0xf9, 0xa9, 0x53, 0xb9, 0xc4, 0x93, 0xa1, 0x61, 0x0d, 0xff, 0x18, 0xc4, 0xdf, 0x44, - 0xe6, 0xeb, 0x72, 0x61, 0x25, 0x43, 0x1f, 0x62, 0xe8, 0x5f, 0x86, 0x04, 0xb1, 0x97, 0x0e, 0xc0, - 0x2c, 0xa6, 0x8d, 0xe8, 0x49, 0x88, 0x97, 0x76, 0x0c, 0x1c, 0xfe, 0x1a, 0x64, 0xe8, 0x68, 0x75, - 0x77, 0xb3, 0x5c, 0x2a, 0x6b, 0xb1, 0xdc, 0x35, 0x18, 0xa5, 0x46, 0xc0, 0xa9, 0xe1, 0x99, 0x41, - 0x1b, 0x61, 0x87, 0x8c, 0x43, 0xe1, 0xb3, 0x07, 0xdb, 0xc5, 0xb2, 0xa1, 0xc5, 0x44, 0xf7, 0x3a, - 0x90, 0x11, 0xdb, 0xb5, 0x1f, 0x4f, 0x4c, 0xfd, 0x9e, 0x02, 0x69, 0xa1, 0xfd, 0xc2, 0x0b, 0xbf, - 0xd9, 0x6c, 0xda, 0x6f, 0x56, 0xcd, 0x66, 0xc3, 0x74, 0x58, 0x50, 0x00, 0x19, 0x2a, 0xe0, 0x91, - 0x61, 0x9d, 0xf6, 0x63, 0x51, 0xfe, 0x8b, 0x0a, 0x68, 0xc1, 0xd6, 0x2d, 0xa0, 0xa0, 0xf2, 0x13, - 0x55, 0xf0, 0xf3, 0x0a, 0x4c, 0xc8, 0xfd, 0x5a, 0x40, 0xbd, 0x0b, 0x3f, 0x51, 0xf5, 0x7e, 0x4d, - 0x81, 0x71, 0xa9, 0x4b, 0xfb, 0xa9, 0xd2, 0xee, 0x73, 0x2a, 0x4c, 0x87, 0xe0, 0xf4, 0x02, 0x6b, - 0x67, 0x69, 0x87, 0xfd, 0xec, 0x30, 0xe7, 0x5a, 0xc6, 0xab, 0xe5, 0xae, 0xd9, 0x71, 0x59, 0xf7, - 0xfb, 0x0c, 0x68, 0x8d, 0x3a, 0xb2, 0xdc, 0xc6, 0x51, 0x03, 0x75, 0xd8, 0x2d, 0x38, 0xed, 0x71, - 0x27, 0xfd, 0x71, 0x7a, 0x17, 0xfe, 0x51, 0xd0, 0xdb, 0xb6, 0xd3, 0x70, 0x1b, 0x6f, 0xa0, 0x6a, - 0xc3, 0xe2, 0xf7, 0xeb, 0xb8, 0xe7, 0x8d, 0x1b, 0x1a, 0x9f, 0xd9, 0xb4, 0x5c, 0x4f, 0xda, 0x42, - 0xc7, 0x66, 0x40, 0x1a, 0xd7, 0x3e, 0xd5, 0xd0, 0xf8, 0x8c, 0x27, 0x7d, 0x01, 0x32, 0x75, 0xbb, - 0x8b, 0xdb, 0x07, 0x2a, 0x87, 0x4b, 0xad, 0x62, 0xa4, 0xe9, 0x98, 0x27, 0xc2, 0xfa, 0x3b, 0x7f, - 0xa3, 0x20, 0x63, 0xa4, 0xe9, 0x18, 0x15, 0x79, 0x1a, 0x26, 0xcd, 0xe3, 0xe3, 0x0e, 0x26, 0xe7, - 0x44, 0xb4, 0x69, 0x9d, 0xf0, 0x86, 0x89, 0xe0, 0xec, 0x5d, 0x48, 0x72, 0x3b, 0xe0, 0xd5, 0x0c, - 0x5b, 0xa2, 0xda, 0xa6, 0xdb, 0x35, 0xb1, 0xc5, 0x94, 0x91, 0xb4, 0xf8, 0xe4, 0x05, 0xc8, 0x34, - 0x9c, 0xaa, 0xbf, 0x6f, 0x18, 0x5b, 0x88, 0x2d, 0x26, 0x8d, 0x74, 0xc3, 0xf1, 0x36, 0x8a, 0x72, - 0x5f, 0x89, 0xc1, 0x84, 0xbc, 0xef, 0xa9, 0xaf, 0x43, 0xb2, 0x69, 0xd7, 0x4c, 0x12, 0x08, 0x74, - 0xd3, 0x7d, 0x31, 0x62, 0xab, 0x74, 0x79, 0x8b, 0xc9, 0x1b, 0x1e, 0x72, 0xf6, 0x3f, 0x29, 0x90, - 0xe4, 0xc3, 0xfa, 0x0c, 0xc4, 0xdb, 0xa6, 0x7b, 0x42, 0xe8, 0x12, 0xc5, 0x98, 0xa6, 0x18, 0xe4, - 0x18, 0x8f, 0x3b, 0x6d, 0xd3, 0x22, 0x21, 0xc0, 0xc6, 0xf1, 0x31, 0xf6, 0x6b, 0x13, 0x99, 0x75, - 0xd2, 0x0e, 0xdb, 0xad, 0x16, 0xb2, 0x5c, 0x87, 0xfb, 0x95, 0x8d, 0x97, 0xd8, 0xb0, 0xfe, 0x11, - 0x98, 0x72, 0x3b, 0x66, 0xa3, 0x29, 0xc9, 0xc6, 0x89, 0xac, 0xc6, 0x27, 0x3c, 0xe1, 0x3c, 0x3c, - 0xc6, 0x79, 0xeb, 0xc8, 0x35, 0x6b, 0x27, 0xa8, 0xee, 0x83, 0x46, 0xc9, 0xa6, 0xda, 0xa3, 0x4c, - 0x60, 0x9d, 0xcd, 0x73, 0x6c, 0xee, 0x0f, 0x14, 0x98, 0xe2, 0x0d, 0x7c, 0xdd, 0x33, 0xd6, 0x36, - 0x80, 0x69, 0x59, 0xb6, 0x2b, 0x9a, 0xab, 0x37, 0x94, 0x7b, 0x70, 0xcb, 0x05, 0x0f, 0x64, 0x08, - 0x04, 0xb3, 0x2d, 0x00, 0x7f, 0xa6, 0xaf, 0xd9, 0xe6, 0x21, 0xcd, 0x36, 0xb5, 0xc9, 0x93, 0x11, - 0x7a, 0xd7, 0x07, 0x74, 0x08, 0x77, 0xfa, 0xfa, 0x39, 0x48, 0x1c, 0xa2, 0xe3, 0x86, 0xc5, 0xb6, - 0xda, 0xe8, 0x01, 0xdf, 0xc0, 0x8b, 0x7b, 0x1b, 0x78, 0xc5, 0x57, 0x61, 0xba, 0x66, 0xb7, 0x82, - 0xea, 0x16, 0xb5, 0xc0, 0x9d, 0xa7, 0xf3, 0xa2, 0xf2, 0x73, 0xe0, 0x77, 0x67, 0xef, 0x28, 0xca, - 0xaf, 0xc7, 0xd4, 0x3b, 0xbb, 0xc5, 0xdf, 0x8a, 0xcd, 0xde, 0xa1, 0xd0, 0x5d, 0x7e, 0xa5, 0x06, - 0x3a, 0x6a, 0xa2, 0x1a, 0xd6, 0x1e, 0xfe, 0xf8, 0x12, 0x3c, 0x7b, 0xdc, 0x70, 0x4f, 0xba, 0x87, - 0xcb, 0x35, 0xbb, 0x75, 0xf9, 0xd8, 0x3e, 0xb6, 0xfd, 0x87, 0x41, 0xf8, 0x88, 0x1c, 0x90, 0x4f, - 0xec, 0x81, 0x50, 0xca, 0x1b, 0x9d, 0x8d, 0x7c, 0x7a, 0x94, 0xaf, 0xc0, 0x34, 0x13, 0xae, 0x92, - 0x1d, 0x69, 0xda, 0x87, 0xeb, 0x03, 0x77, 0x25, 0xb2, 0xbf, 0xfd, 0x5d, 0xb2, 0xd2, 0x19, 0x53, - 0x0c, 0x8a, 0xe7, 0x68, 0xa7, 0x9e, 0x37, 0xe0, 0x11, 0x89, 0x8f, 0xa6, 0x26, 0xea, 0x44, 0x30, - 0x7e, 0x93, 0x31, 0x4e, 0x0b, 0x8c, 0x7b, 0x0c, 0x9a, 0x2f, 0xc1, 0xf8, 0x59, 0xb8, 0xfe, 0x3d, - 0xe3, 0xca, 0x20, 0x91, 0xe4, 0x0e, 0x4c, 0x12, 0x92, 0x5a, 0xd7, 0x71, 0xed, 0x16, 0xa9, 0x7b, - 0x83, 0x69, 0xfe, 0xc3, 0x77, 0x69, 0xae, 0x4c, 0x60, 0x58, 0xc9, 0x43, 0xe5, 0xf3, 0x40, 0x36, - 0xe1, 0xeb, 0xa8, 0xd6, 0x8c, 0x60, 0xb8, 0xc7, 0x14, 0xf1, 0xe4, 0xf3, 0x9f, 0x84, 0x73, 0xf8, - 0x33, 0x29, 0x4b, 0xa2, 0x26, 0xd1, 0x7b, 0x30, 0xd9, 0x3f, 0xf8, 0x34, 0x4d, 0xc7, 0x69, 0x8f, - 0x40, 0xd0, 0x49, 0xf0, 0xe2, 0x31, 0x72, 0x5d, 0xd4, 0x71, 0xaa, 0x66, 0x33, 0x4c, 0x3d, 0xe1, - 0x0e, 0x36, 0xfb, 0xab, 0xdf, 0x97, 0xbd, 0x78, 0x87, 0x22, 0x0b, 0xcd, 0x66, 0xfe, 0x00, 0x1e, - 0x0d, 0x89, 0x8a, 0x21, 0x38, 0x3f, 0xc7, 0x38, 0xcf, 0xf5, 0x44, 0x06, 0xa6, 0xdd, 0x05, 0x3e, - 0xee, 0xf9, 0x72, 0x08, 0xce, 0x5f, 0x63, 0x9c, 0x3a, 0xc3, 0x72, 0x97, 0x62, 0xc6, 0xbb, 0x30, - 0xf5, 0x06, 0xea, 0x1c, 0xda, 0x0e, 0xdb, 0x38, 0x18, 0x82, 0xee, 0xf3, 0x8c, 0x6e, 0x92, 0x01, - 0xc9, 0x36, 0x02, 0xe6, 0xba, 0x05, 0xc9, 0x23, 0xb3, 0x86, 0x86, 0xa0, 0xf8, 0x02, 0xa3, 0x18, - 0xc3, 0xf2, 0x18, 0x5a, 0x80, 0xcc, 0xb1, 0xcd, 0x56, 0xa6, 0x68, 0xf8, 0x17, 0x19, 0x3c, 0xcd, - 0x31, 0x8c, 0xa2, 0x6d, 0xb7, 0xbb, 0x4d, 0xbc, 0x6c, 0x45, 0x53, 0x7c, 0x89, 0x53, 0x70, 0x0c, - 0xa3, 0x38, 0x83, 0x59, 0xdf, 0xe1, 0x14, 0x8e, 0x60, 0xcf, 0x17, 0x20, 0x6d, 0x5b, 0xcd, 0x53, - 0xdb, 0x1a, 0x46, 0x89, 0x2f, 0x33, 0x06, 0x60, 0x10, 0x4c, 0x70, 0x1b, 0x52, 0xc3, 0x3a, 0xe2, - 0x37, 0xbe, 0xcf, 0xd3, 0x83, 0x7b, 0xe0, 0x0e, 0x4c, 0xf2, 0x02, 0xd5, 0xb0, 0xad, 0x21, 0x28, - 0xfe, 0x31, 0xa3, 0x98, 0x10, 0x60, 0xec, 0x32, 0x5c, 0xe4, 0xb8, 0xc7, 0x68, 0x18, 0x92, 0xaf, - 0xf0, 0xcb, 0x60, 0x10, 0x66, 0xca, 0x43, 0x64, 0xd5, 0x4e, 0x86, 0x63, 0xf8, 0x2a, 0x37, 0x25, - 0xc7, 0x60, 0x8a, 0x12, 0x8c, 0xb7, 0xcc, 0x8e, 0x73, 0x62, 0x36, 0x87, 0x72, 0xc7, 0x6f, 0x32, - 0x8e, 0x8c, 0x07, 0x62, 0x16, 0xe9, 0x5a, 0x67, 0xa1, 0xf9, 0x2d, 0x6e, 0x11, 0x01, 0xc6, 0x52, - 0xcf, 0x71, 0xc9, 0xde, 0xcc, 0x59, 0xd8, 0xfe, 0x09, 0x4f, 0x3d, 0x8a, 0xdd, 0x16, 0x19, 0x6f, - 0x43, 0xca, 0x69, 0x7c, 0x6a, 0x28, 0x9a, 0x7f, 0xca, 0x3d, 0x4d, 0x00, 0x18, 0xfc, 0x0a, 0x3c, - 0x16, 0xba, 0x4c, 0x0c, 0x41, 0xf6, 0xcf, 0x18, 0xd9, 0x4c, 0xc8, 0x52, 0xc1, 0x4a, 0xc2, 0x59, - 0x29, 0xff, 0x39, 0x2f, 0x09, 0x28, 0xc0, 0xb5, 0x8b, 0x3b, 0x7b, 0xc7, 0x3c, 0x3a, 0x9b, 0xd5, - 0xfe, 0x05, 0xb7, 0x1a, 0xc5, 0x4a, 0x56, 0xdb, 0x87, 0x19, 0xc6, 0x78, 0x36, 0xbf, 0x7e, 0x8d, - 0x17, 0x56, 0x8a, 0x3e, 0x90, 0xbd, 0xfb, 0x2a, 0xcc, 0x7a, 0xe6, 0xe4, 0x4d, 0xa9, 0x53, 0x6d, - 0x99, 0xed, 0x21, 0x98, 0x7f, 0x9b, 0x31, 0xf3, 0x8a, 0xef, 0x75, 0xb5, 0xce, 0xb6, 0xd9, 0xc6, - 0xe4, 0x2f, 0x43, 0x96, 0x93, 0x77, 0xad, 0x0e, 0xaa, 0xd9, 0xc7, 0x56, 0xe3, 0x53, 0xa8, 0x3e, - 0x04, 0xf5, 0xd7, 0x03, 0xae, 0x3a, 0x10, 0xe0, 0x98, 0x79, 0x13, 0x34, 0xaf, 0x57, 0xa9, 0x36, - 0x5a, 0x6d, 0xbb, 0xe3, 0x46, 0x30, 0xfe, 0x4b, 0xee, 0x29, 0x0f, 0xb7, 0x49, 0x60, 0xf9, 0x32, - 0x4c, 0x90, 0xc3, 0x61, 0x43, 0xf2, 0x77, 0x18, 0xd1, 0xb8, 0x8f, 0x62, 0x85, 0xa3, 0x66, 0xb7, - 0xda, 0x66, 0x67, 0x98, 0xfa, 0xf7, 0xaf, 0x78, 0xe1, 0x60, 0x10, 0x56, 0x38, 0xdc, 0xd3, 0x36, - 0xc2, 0xab, 0xfd, 0x10, 0x0c, 0xdf, 0xe0, 0x85, 0x83, 0x63, 0x18, 0x05, 0x6f, 0x18, 0x86, 0xa0, - 0xf8, 0xd7, 0x9c, 0x82, 0x63, 0x30, 0xc5, 0x27, 0xfc, 0x85, 0xb6, 0x83, 0x8e, 0x1b, 0x8e, 0xdb, - 0xa1, 0xad, 0xf0, 0x60, 0xaa, 0xdf, 0xfd, 0xbe, 0xdc, 0x84, 0x19, 0x02, 0x34, 0x7f, 0x17, 0x26, - 0x03, 0x2d, 0x86, 0x1e, 0xf5, 0x44, 0x3f, 0xfb, 0xf3, 0x3f, 0x64, 0xc5, 0x48, 0xee, 0x30, 0xf2, - 0x5b, 0xd8, 0xef, 0x72, 0x1f, 0x10, 0x4d, 0xf6, 0xe9, 0x1f, 0x7a, 0xae, 0x97, 0xda, 0x80, 0xfc, - 0x06, 0x8c, 0x4b, 0x3d, 0x40, 0x34, 0xd5, 0x5f, 0x65, 0x54, 0x19, 0xb1, 0x05, 0xc8, 0x5f, 0x83, - 0x38, 0x5e, 0xcf, 0xa3, 0xe1, 0x7f, 0x8d, 0xc1, 0x89, 0x78, 0xfe, 0x39, 0x48, 0xf2, 0x75, 0x3c, - 0x1a, 0xfa, 0x8b, 0x0c, 0xea, 0x41, 0x30, 0x9c, 0xaf, 0xe1, 0xd1, 0xf0, 0xbf, 0xce, 0xe1, 0x1c, - 0x82, 0xe1, 0xc3, 0x9b, 0xf0, 0xdd, 0x5f, 0x8e, 0xb3, 0x3a, 0xcc, 0x6d, 0x77, 0x1b, 0xc6, 0xd8, - 0xe2, 0x1d, 0x8d, 0xfe, 0x25, 0x76, 0x72, 0x8e, 0xc8, 0xdf, 0x80, 0xc4, 0x90, 0x06, 0xff, 0x9b, - 0x0c, 0x4a, 0xe5, 0xf3, 0x25, 0x48, 0x0b, 0x0b, 0x76, 0x34, 0xfc, 0x6f, 0x31, 0xb8, 0x88, 0xc2, - 0xaa, 0xb3, 0x05, 0x3b, 0x9a, 0xe0, 0x6f, 0x73, 0xd5, 0x19, 0x02, 0x9b, 0x8d, 0xaf, 0xd5, 0xd1, - 0xe8, 0xbf, 0xc3, 0xad, 0xce, 0x21, 0xf9, 0x17, 0x20, 0xe5, 0xd5, 0xdf, 0x68, 0xfc, 0xdf, 0x65, - 0x78, 0x1f, 0x83, 0x2d, 0x20, 0xd4, 0xff, 0x68, 0x8a, 0xbf, 0xc7, 0x2d, 0x20, 0xa0, 0x70, 0x1a, - 0x05, 0xd7, 0xf4, 0x68, 0xa6, 0x5f, 0xe1, 0x69, 0x14, 0x58, 0xd2, 0xb1, 0x37, 0x49, 0x19, 0x8c, - 0xa6, 0xf8, 0xfb, 0xdc, 0x9b, 0x44, 0x1e, 0xab, 0x11, 0x5c, 0x24, 0xa3, 0x39, 0xfe, 0x21, 0x57, - 0x23, 0xb0, 0x46, 0xe6, 0x77, 0x41, 0xef, 0x5d, 0x20, 0xa3, 0xf9, 0x3e, 0xcb, 0xf8, 0xa6, 0x7a, - 0xd6, 0xc7, 0xfc, 0x4b, 0x30, 0x13, 0xbe, 0x38, 0x46, 0xb3, 0xfe, 0xea, 0x0f, 0x03, 0xb7, 0x33, - 0xe2, 0xda, 0x98, 0xdf, 0xf7, 0xab, 0xac, 0xb8, 0x30, 0x46, 0xd3, 0x7e, 0xee, 0x87, 0x72, 0xa1, - 0x15, 0xd7, 0xc5, 0x7c, 0x01, 0xc0, 0x5f, 0x93, 0xa2, 0xb9, 0x3e, 0xcf, 0xb8, 0x04, 0x10, 0x4e, - 0x0d, 0xb6, 0x24, 0x45, 0xe3, 0xbf, 0xc0, 0x53, 0x83, 0x21, 0x70, 0x6a, 0xf0, 0xd5, 0x28, 0x1a, - 0xfd, 0x45, 0x9e, 0x1a, 0x1c, 0x92, 0xbf, 0x0d, 0x49, 0xab, 0xdb, 0x6c, 0xe2, 0xd8, 0xd2, 0x07, - 0xbf, 0x64, 0x93, 0xfd, 0x9f, 0x3f, 0x62, 0x60, 0x0e, 0xc8, 0x5f, 0x83, 0x04, 0x6a, 0x1d, 0xa2, - 0x7a, 0x14, 0xf2, 0x7f, 0xfd, 0x88, 0xd7, 0x13, 0x2c, 0x9d, 0x7f, 0x01, 0x80, 0xde, 0x4c, 0x93, - 0x67, 0x2c, 0x11, 0xd8, 0xff, 0xfd, 0x23, 0xf6, 0xfc, 0xde, 0x87, 0xf8, 0x04, 0xf4, 0x6d, 0x80, - 0xc1, 0x04, 0xdf, 0x97, 0x09, 0xc8, 0x0d, 0xf8, 0x2d, 0x18, 0x7b, 0xcd, 0xb1, 0x2d, 0xd7, 0x3c, - 0x8e, 0x42, 0xff, 0x1f, 0x86, 0xe6, 0xf2, 0xd8, 0x60, 0x2d, 0xbb, 0x83, 0x5c, 0xf3, 0xd8, 0x89, - 0xc2, 0xfe, 0x5f, 0x86, 0xf5, 0x00, 0x18, 0x5c, 0x33, 0x1d, 0x77, 0x98, 0xeb, 0xfe, 0x7f, 0x1c, - 0xcc, 0x01, 0x58, 0x69, 0xfc, 0xf9, 0x75, 0x74, 0x1a, 0x85, 0xfd, 0x01, 0x57, 0x9a, 0xc9, 0xe7, - 0x9f, 0x83, 0x14, 0xfe, 0x48, 0xdf, 0x69, 0x89, 0x00, 0xff, 0x11, 0x03, 0xfb, 0x08, 0x7c, 0x66, - 0xc7, 0xad, 0xbb, 0x8d, 0x68, 0x63, 0xff, 0x7f, 0xe6, 0x69, 0x2e, 0x9f, 0x2f, 0x40, 0xda, 0x71, - 0xeb, 0xf5, 0x2e, 0xeb, 0x68, 0x22, 0xe0, 0x7f, 0xfc, 0x23, 0xef, 0x26, 0xd7, 0xc3, 0x14, 0x2f, - 0x84, 0xef, 0xd7, 0xc1, 0x1d, 0xfb, 0x8e, 0x4d, 0x77, 0xea, 0xe0, 0xbb, 0x4d, 0xb8, 0xd1, 0x77, - 0xd7, 0x0d, 0x2f, 0x22, 0x97, 0x6b, 0x76, 0xeb, 0xd0, 0x76, 0x2e, 0x1f, 0xda, 0xee, 0xc9, 0x65, - 0xf7, 0x04, 0xe1, 0x31, 0xb6, 0xff, 0x16, 0xc7, 0x9f, 0x67, 0xcf, 0xb6, 0x69, 0x47, 0x9e, 0x66, - 0x56, 0x1a, 0x58, 0xef, 0x0a, 0xd9, 0x15, 0xd7, 0xcf, 0xc3, 0x28, 0xb9, 0x92, 0x2b, 0xe4, 0xa1, - 0x8d, 0x52, 0x8c, 0xdf, 0x7b, 0x6f, 0x7e, 0xc4, 0x60, 0x63, 0xde, 0xec, 0x2a, 0xd9, 0xb6, 0x8c, - 0x49, 0xb3, 0xab, 0xde, 0xec, 0x55, 0xba, 0x73, 0x29, 0xcd, 0x5e, 0xf5, 0x66, 0xd7, 0xc8, 0x1e, - 0xa6, 0x2a, 0xcd, 0xae, 0x79, 0xb3, 0xd7, 0xc8, 0x3e, 0xfd, 0xb8, 0x34, 0x7b, 0xcd, 0x9b, 0xbd, - 0x4e, 0x76, 0xe7, 0xe3, 0xd2, 0xec, 0x75, 0x6f, 0xf6, 0x06, 0xd9, 0x98, 0x9f, 0x92, 0x66, 0x6f, - 0x78, 0xb3, 0x37, 0xc9, 0x86, 0xbc, 0x2e, 0xcd, 0xde, 0xf4, 0x66, 0x6f, 0x91, 0xb7, 0x2f, 0xc6, - 0xa4, 0xd9, 0x5b, 0xfa, 0x1c, 0x8c, 0xd1, 0x2b, 0x5f, 0x21, 0x0f, 0x3e, 0x27, 0xd9, 0x34, 0x1f, - 0xf4, 0xe7, 0xaf, 0x90, 0x37, 0x2d, 0x46, 0xe5, 0xf9, 0x2b, 0xfe, 0xfc, 0x2a, 0x79, 0xed, 0x58, - 0x93, 0xe7, 0x57, 0xfd, 0xf9, 0xab, 0xd9, 0x71, 0x1c, 0x30, 0xf2, 0xfc, 0x55, 0x7f, 0x7e, 0x2d, - 0x3b, 0x81, 0x83, 0x59, 0x9e, 0x5f, 0xf3, 0xe7, 0xaf, 0x65, 0x27, 0x17, 0x94, 0xc5, 0x8c, 0x3c, - 0x7f, 0x2d, 0xf7, 0x0b, 0xc4, 0xbd, 0x96, 0xef, 0xde, 0x19, 0xd9, 0xbd, 0x9e, 0x63, 0x67, 0x64, - 0xc7, 0x7a, 0x2e, 0x9d, 0x91, 0x5d, 0xea, 0x39, 0x73, 0x46, 0x76, 0xa6, 0xe7, 0xc6, 0x19, 0xd9, - 0x8d, 0x9e, 0x03, 0x67, 0x64, 0x07, 0x7a, 0xae, 0x9b, 0x91, 0x5d, 0xe7, 0x39, 0x6d, 0x46, 0x76, - 0x9a, 0xe7, 0xae, 0x19, 0xd9, 0x5d, 0x9e, 0xa3, 0xb2, 0x01, 0x47, 0xf9, 0x2e, 0xca, 0x06, 0x5c, - 0xe4, 0x3b, 0x27, 0x1b, 0x70, 0x8e, 0xef, 0x96, 0x6c, 0xc0, 0x2d, 0xbe, 0x43, 0xb2, 0x01, 0x87, - 0xf8, 0xae, 0xc8, 0x06, 0x5c, 0xe1, 0x3b, 0x81, 0xe5, 0x98, 0x81, 0xda, 0x21, 0x39, 0xa6, 0x0e, - 0xcc, 0x31, 0x75, 0x60, 0x8e, 0xa9, 0x03, 0x73, 0x4c, 0x1d, 0x98, 0x63, 0xea, 0xc0, 0x1c, 0x53, - 0x07, 0xe6, 0x98, 0x3a, 0x30, 0xc7, 0xd4, 0x81, 0x39, 0xa6, 0x0e, 0xce, 0x31, 0x35, 0x22, 0xc7, - 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, 0x35, 0x22, 0xc7, 0xd4, 0xbe, 0x39, - 0xe6, 0xbb, 0x77, 0x46, 0x76, 0x6f, 0x68, 0x8e, 0xa9, 0x7d, 0x72, 0x4c, 0xed, 0x93, 0x63, 0x6a, - 0x9f, 0x1c, 0x53, 0xfb, 0xe4, 0x98, 0xda, 0x27, 0xc7, 0xd4, 0x3e, 0x39, 0xa6, 0xf6, 0xc9, 0x31, - 0xb5, 0x5f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, - 0x98, 0xda, 0x37, 0xc7, 0x54, 0x31, 0xc7, 0xfe, 0x8d, 0x0a, 0x3a, 0xcd, 0xb1, 0x5d, 0xf2, 0xea, - 0x0c, 0x73, 0xc5, 0x5c, 0x20, 0xd3, 0x46, 0xb1, 0xeb, 0x34, 0xdf, 0x25, 0x73, 0x81, 0x5c, 0x93, - 0xe7, 0x57, 0xbd, 0x79, 0x9e, 0x6d, 0xf2, 0xfc, 0x55, 0x6f, 0x9e, 0xe7, 0x9b, 0x3c, 0xbf, 0xe6, - 0xcd, 0xf3, 0x8c, 0x93, 0xe7, 0xaf, 0x79, 0xf3, 0x3c, 0xe7, 0xe4, 0xf9, 0xeb, 0xde, 0x3c, 0xcf, - 0x3a, 0x79, 0xfe, 0x86, 0x37, 0xcf, 0xf3, 0x4e, 0x9e, 0xbf, 0xe9, 0xcd, 0xf3, 0xcc, 0x93, 0xe7, - 0x6f, 0xe9, 0x0b, 0xc1, 0xdc, 0xe3, 0x02, 0x9e, 0x6b, 0x17, 0x82, 0xd9, 0x17, 0x90, 0xb8, 0xe2, - 0x4b, 0xf0, 0xfc, 0x0b, 0x48, 0xac, 0xfa, 0x12, 0x3c, 0x03, 0x03, 0x12, 0x57, 0x73, 0x9f, 0x21, - 0xee, 0xb3, 0x82, 0xee, 0x9b, 0x0d, 0xb8, 0x2f, 0x26, 0xb8, 0x6e, 0x36, 0xe0, 0xba, 0x98, 0xe0, - 0xb6, 0xd9, 0x80, 0xdb, 0x62, 0x82, 0xcb, 0x66, 0x03, 0x2e, 0x8b, 0x09, 0xee, 0x9a, 0x0d, 0xb8, - 0x2b, 0x26, 0xb8, 0x6a, 0x36, 0xe0, 0xaa, 0x98, 0xe0, 0xa6, 0xd9, 0x80, 0x9b, 0x62, 0x82, 0x8b, - 0x66, 0x03, 0x2e, 0x8a, 0x09, 0xee, 0x99, 0x0d, 0xb8, 0x27, 0x26, 0xb8, 0xe6, 0x7c, 0xd0, 0x35, - 0x31, 0xd1, 0x2d, 0xe7, 0x83, 0x6e, 0x89, 0x89, 0x2e, 0x39, 0x1f, 0x74, 0x49, 0x4c, 0x74, 0xc7, - 0xf9, 0xa0, 0x3b, 0x62, 0xa2, 0x2b, 0xfe, 0x2c, 0xc6, 0x3b, 0xc2, 0x3d, 0xb7, 0xd3, 0xad, 0xb9, - 0x0f, 0xd5, 0x11, 0xae, 0x48, 0xed, 0x43, 0x7a, 0x55, 0x5f, 0x26, 0x0d, 0xab, 0xd8, 0x71, 0x06, - 0x56, 0xb0, 0x15, 0xa9, 0xb1, 0x10, 0x10, 0x56, 0x38, 0x62, 0xed, 0xa1, 0x7a, 0xc3, 0x15, 0xa9, - 0xcd, 0x88, 0xd6, 0xef, 0xe6, 0x87, 0xde, 0xb1, 0xbd, 0x1b, 0xe3, 0x1d, 0x1b, 0x33, 0xff, 0x59, - 0x3b, 0xb6, 0xa5, 0x68, 0x93, 0x7b, 0xc6, 0x5e, 0x8a, 0x36, 0x76, 0xcf, 0xaa, 0x33, 0x6c, 0x07, - 0xb7, 0x14, 0x6d, 0x5a, 0xcf, 0xa8, 0x1f, 0x6c, 0xbf, 0xc5, 0x22, 0xd8, 0x40, 0xed, 0x90, 0x08, - 0x3e, 0x6b, 0xbf, 0xb5, 0x22, 0x95, 0x92, 0xb3, 0x46, 0xb0, 0x7a, 0xe6, 0x08, 0x3e, 0x6b, 0xe7, - 0xb5, 0x22, 0x95, 0x97, 0x33, 0x47, 0xf0, 0x87, 0xd0, 0x0f, 0xb1, 0x08, 0xf6, 0xcd, 0x7f, 0xd6, - 0x7e, 0x68, 0x29, 0xda, 0xe4, 0xa1, 0x11, 0xac, 0x9e, 0x21, 0x82, 0x87, 0xe9, 0x8f, 0x96, 0xa2, - 0x4d, 0x1b, 0x1e, 0xc1, 0x0f, 0xdd, 0xcd, 0x7c, 0x49, 0x81, 0xa9, 0x4a, 0xa3, 0x5e, 0x6e, 0x1d, - 0xa2, 0x7a, 0x1d, 0xd5, 0x99, 0x1d, 0x57, 0xa4, 0x4a, 0xd0, 0xc7, 0xd5, 0xdf, 0x7a, 0x6f, 0xde, - 0xb7, 0xf0, 0x35, 0x48, 0x52, 0x9b, 0xae, 0xac, 0x64, 0xef, 0x29, 0x11, 0x15, 0xce, 0x13, 0xd5, - 0x2f, 0x70, 0xd8, 0x95, 0x95, 0xec, 0x7f, 0x56, 0x84, 0x2a, 0xe7, 0x0d, 0xe7, 0x7e, 0x85, 0x68, - 0x68, 0x3d, 0xb4, 0x86, 0x97, 0x87, 0xd2, 0x50, 0xd0, 0xed, 0xf1, 0x1e, 0xdd, 0x04, 0xad, 0xba, - 0x30, 0x59, 0x69, 0xd4, 0x2b, 0xe4, 0x0b, 0xaf, 0xc3, 0xa8, 0x44, 0x65, 0x02, 0xf5, 0x60, 0x45, - 0x0a, 0x4b, 0x11, 0xe1, 0x85, 0xb4, 0x5c, 0x23, 0x72, 0x0d, 0x7c, 0x5a, 0x4b, 0x3a, 0xed, 0x52, - 0xbf, 0xd3, 0xfa, 0x95, 0xdd, 0x3b, 0xe1, 0x52, 0xbf, 0x13, 0xfa, 0x39, 0xe4, 0x9d, 0xea, 0x2d, - 0xbe, 0x38, 0xd3, 0xb7, 0x70, 0xf4, 0xf3, 0x10, 0xdb, 0xa4, 0xef, 0xd7, 0x66, 0x8a, 0x19, 0xac, - 0xd4, 0xb7, 0xdf, 0x9b, 0x8f, 0x1f, 0x74, 0x1b, 0x75, 0x23, 0xb6, 0x59, 0xd7, 0xef, 0x42, 0xe2, - 0x93, 0xec, 0x6b, 0x63, 0x58, 0x60, 0x8d, 0x09, 0x7c, 0x34, 0x62, 0x8b, 0x89, 0x50, 0x2f, 0x1f, - 0x34, 0x2c, 0xf7, 0xca, 0xea, 0x4d, 0x83, 0x52, 0xe4, 0xfe, 0x22, 0x00, 0x3d, 0xe7, 0xba, 0xe9, - 0x9c, 0xe8, 0x15, 0xce, 0x4c, 0x4f, 0x7d, 0xf3, 0xdb, 0xef, 0xcd, 0xaf, 0x0d, 0xc3, 0xfa, 0x6c, - 0xdd, 0x74, 0x4e, 0x9e, 0x75, 0x4f, 0xdb, 0x68, 0xb9, 0x78, 0xea, 0x22, 0x87, 0xb3, 0xb7, 0xf9, - 0xaa, 0xc7, 0xae, 0x2b, 0x2b, 0x5c, 0x57, 0x52, 0xba, 0xa6, 0x0d, 0xf9, 0x9a, 0x56, 0x1e, 0xf4, - 0x7a, 0xde, 0xe2, 0x8b, 0x44, 0xc0, 0x92, 0x6a, 0x94, 0x25, 0xd5, 0x87, 0xb5, 0x64, 0x9b, 0xd7, - 0xc7, 0xc0, 0xb5, 0xaa, 0x83, 0xae, 0x55, 0x7d, 0x98, 0x6b, 0xfd, 0x13, 0x9a, 0xad, 0x5e, 0x3e, - 0x1d, 0x58, 0xf4, 0x05, 0xc5, 0x9f, 0xae, 0xbd, 0xa0, 0x0f, 0xb4, 0x0b, 0xc8, 0xc7, 0xef, 0xbd, - 0x33, 0xaf, 0xe4, 0xbe, 0x14, 0xe3, 0x57, 0x4e, 0x13, 0xe9, 0xc1, 0xae, 0xfc, 0xa7, 0xa5, 0xa7, - 0xfa, 0x30, 0x2c, 0xf4, 0x45, 0x05, 0x66, 0x7a, 0x2a, 0x39, 0x35, 0xd3, 0x07, 0x5b, 0xce, 0xad, - 0xb3, 0x96, 0x73, 0xa6, 0xe0, 0xef, 0x28, 0x70, 0x2e, 0x50, 0x5e, 0xa9, 0x7a, 0x97, 0x03, 0xea, - 0x3d, 0xda, 0x7b, 0x26, 0x22, 0x28, 0x68, 0x27, 0xba, 0x37, 0x00, 0x10, 0x98, 0x3d, 0xbf, 0xaf, - 0x05, 0xfc, 0x7e, 0xde, 0x03, 0x84, 0x98, 0x8b, 0x47, 0x00, 0x53, 0xdb, 0x86, 0xf8, 0x7e, 0x07, - 0x21, 0x7d, 0x0e, 0x62, 0x3b, 0x1d, 0xa6, 0xe1, 0x04, 0xc5, 0xef, 0x74, 0x8a, 0x1d, 0xd3, 0xaa, - 0x9d, 0x18, 0xb1, 0x9d, 0x8e, 0x7e, 0x01, 0xd4, 0x02, 0xfb, 0x62, 0x7e, 0x7a, 0x75, 0x92, 0x0a, - 0x14, 0xac, 0x3a, 0x93, 0xc0, 0x73, 0xfa, 0x1c, 0xc4, 0xb7, 0x90, 0x79, 0xc4, 0x94, 0x00, 0x2a, - 0x83, 0x47, 0x0c, 0x32, 0xce, 0x4e, 0xf8, 0x32, 0x24, 0x39, 0xb1, 0x7e, 0x11, 0x23, 0x8e, 0x5c, - 0x76, 0x5a, 0x86, 0xc0, 0xea, 0xb0, 0x95, 0x8b, 0xcc, 0xea, 0x97, 0x20, 0x61, 0x34, 0x8e, 0x4f, - 0x5c, 0x76, 0xf2, 0x5e, 0x31, 0x3a, 0x9d, 0x7b, 0x05, 0x52, 0x9e, 0x46, 0x1f, 0x30, 0xf5, 0x3a, - 0xbd, 0x34, 0x7d, 0x56, 0x5c, 0x4f, 0xf8, 0xbe, 0x25, 0x1d, 0xd2, 0x17, 0x20, 0xb9, 0xe7, 0x76, - 0xfc, 0xa2, 0xcf, 0x3b, 0x52, 0x6f, 0x34, 0xf7, 0x0b, 0x0a, 0x24, 0xd7, 0x11, 0x6a, 0x13, 0x83, - 0x3f, 0x05, 0xf1, 0x75, 0xfb, 0x4d, 0x8b, 0x29, 0x38, 0xc5, 0x2c, 0x8a, 0xa7, 0x99, 0x4d, 0xc9, - 0xb4, 0xfe, 0x94, 0x68, 0xf7, 0x69, 0xcf, 0xee, 0x82, 0x1c, 0xb1, 0x7d, 0x4e, 0xb2, 0x3d, 0x73, - 0x20, 0x16, 0xea, 0xb1, 0xff, 0x0d, 0x48, 0x0b, 0x67, 0xd1, 0x17, 0x99, 0x1a, 0xb1, 0x20, 0x50, - 0xb4, 0x15, 0x96, 0xc8, 0x21, 0x18, 0x97, 0x4e, 0x8c, 0xa1, 0x82, 0x89, 0xfb, 0x40, 0x89, 0x99, - 0x97, 0x64, 0x33, 0x87, 0x8b, 0x32, 0x53, 0xaf, 0x50, 0x1b, 0x11, 0x73, 0x5f, 0xa4, 0xc1, 0xd9, - 0xdf, 0x89, 0xf8, 0x73, 0x2e, 0x01, 0x6a, 0xa5, 0xd1, 0xcc, 0x3d, 0x07, 0x40, 0x53, 0xbe, 0x6c, - 0x75, 0x5b, 0x81, 0xac, 0x9b, 0xe0, 0x06, 0xde, 0x3f, 0x41, 0xfb, 0xc8, 0x21, 0x22, 0x72, 0x3f, - 0x85, 0x0b, 0x0c, 0xd0, 0x14, 0x23, 0xf8, 0x67, 0x22, 0xf1, 0xa1, 0x9d, 0x18, 0x16, 0xcd, 0x52, - 0xd1, 0x57, 0x90, 0x5b, 0xb0, 0x6c, 0xf7, 0x04, 0x75, 0x02, 0x88, 0x55, 0xfd, 0xaa, 0x94, 0xb0, - 0x13, 0xab, 0x8f, 0x7b, 0x88, 0xbe, 0xa0, 0xab, 0xb9, 0xaf, 0x11, 0x05, 0x71, 0x2b, 0xd0, 0x73, - 0x81, 0xea, 0x10, 0x17, 0xa8, 0x5f, 0x97, 0xfa, 0xb7, 0x01, 0x6a, 0x06, 0x6e, 0x2d, 0x6f, 0x49, - 0xf7, 0x39, 0x83, 0x95, 0x95, 0xef, 0x31, 0xb9, 0x4d, 0xb9, 0xca, 0xcf, 0x44, 0xaa, 0xdc, 0xa7, - 0xbb, 0x3d, 0xab, 0x4d, 0xd5, 0x61, 0x6d, 0xfa, 0x7b, 0x5e, 0xc7, 0x41, 0x7f, 0xe2, 0x80, 0xfc, - 0xa2, 0x86, 0xfe, 0xd1, 0x48, 0xdf, 0xe7, 0x95, 0x92, 0xa7, 0xea, 0xda, 0xb0, 0xee, 0xcf, 0xc7, - 0x8a, 0x45, 0x4f, 0xdd, 0x1b, 0x67, 0x08, 0x81, 0x7c, 0xac, 0x54, 0xf2, 0xca, 0x76, 0xf2, 0x33, - 0xef, 0xcc, 0x2b, 0x5f, 0x7d, 0x67, 0x7e, 0x24, 0xf7, 0x9b, 0x0a, 0x4c, 0x31, 0x49, 0x21, 0x70, - 0x9f, 0x0d, 0x28, 0xff, 0x08, 0xaf, 0x19, 0x61, 0x16, 0xf8, 0xb1, 0x05, 0xef, 0x37, 0x15, 0xc8, - 0xf6, 0xe8, 0xca, 0xed, 0xbd, 0x32, 0x94, 0xca, 0x79, 0xa5, 0xfc, 0x93, 0xb7, 0xf9, 0x2b, 0x90, - 0xd8, 0x6f, 0xb4, 0x50, 0x07, 0xaf, 0x04, 0xf8, 0x03, 0x55, 0x99, 0x3f, 0xcc, 0xa1, 0x43, 0x7c, - 0x8e, 0x2a, 0x27, 0xcd, 0xad, 0xea, 0x59, 0x88, 0xaf, 0x9b, 0xae, 0x49, 0x34, 0xc8, 0x78, 0xf5, - 0xd5, 0x74, 0xcd, 0xdc, 0x55, 0xc8, 0x6c, 0x9f, 0x92, 0x57, 0x68, 0xea, 0xe4, 0xf5, 0x10, 0xb9, - 0xfb, 0xe3, 0xfd, 0xea, 0x95, 0xa5, 0x44, 0xb2, 0xae, 0xdd, 0x53, 0xf2, 0x71, 0xa2, 0xcf, 0x1b, - 0x30, 0xb1, 0x83, 0xd5, 0x26, 0x38, 0x02, 0x5b, 0x00, 0x65, 0x5b, 0x6e, 0x84, 0x44, 0x56, 0x43, - 0xd9, 0x0e, 0xb4, 0x8f, 0xaa, 0x67, 0x9e, 0x40, 0xdb, 0xa6, 0x7a, 0x6d, 0xdb, 0x52, 0x3c, 0x39, - 0xa1, 0x4d, 0x2d, 0xc5, 0x93, 0xa0, 0x8d, 0xb3, 0xf3, 0xfe, 0x47, 0x15, 0x34, 0xda, 0xea, 0xac, - 0xa3, 0xa3, 0x86, 0xd5, 0x70, 0x7b, 0xfb, 0x55, 0x4f, 0x63, 0xfd, 0x05, 0x48, 0x61, 0x93, 0x6e, - 0xb0, 0x1f, 0xa6, 0xc2, 0xa6, 0xbf, 0xc0, 0x5a, 0x94, 0x00, 0x05, 0x1b, 0x20, 0xa1, 0xe3, 0x63, - 0xf4, 0x0d, 0x50, 0x2b, 0x95, 0x6d, 0xb6, 0xb8, 0xad, 0x0d, 0x84, 0xb2, 0x37, 0x70, 0xd8, 0x11, - 0x1b, 0x73, 0x8e, 0x0d, 0x4c, 0xa0, 0xaf, 0x41, 0xac, 0xb2, 0xcd, 0x1a, 0xde, 0x8b, 0xc3, 0xd0, - 0x18, 0xb1, 0xca, 0xf6, 0xec, 0xbf, 0x55, 0x60, 0x5c, 0x1a, 0xd5, 0x73, 0x90, 0xa1, 0x03, 0xc2, - 0xe5, 0x8e, 0x1a, 0xd2, 0x18, 0xd7, 0x39, 0xf6, 0x90, 0x3a, 0xcf, 0x16, 0x60, 0x32, 0x30, 0xae, - 0x2f, 0x83, 0x2e, 0x0e, 0x31, 0x25, 0xe8, 0x8f, 0xfa, 0x84, 0xcc, 0xe4, 0x9e, 0x00, 0xf0, 0xed, - 0xea, 0xfd, 0x16, 0x4d, 0xa5, 0xbc, 0xb7, 0x5f, 0x5e, 0xd7, 0x94, 0xdc, 0x37, 0x14, 0x48, 0xb3, - 0xb6, 0xb5, 0x66, 0xb7, 0x91, 0x5e, 0x04, 0xa5, 0xc0, 0x22, 0xe8, 0xc1, 0xf4, 0x56, 0x0a, 0xfa, - 0x65, 0x50, 0x8a, 0xc3, 0xbb, 0x5a, 0x29, 0xea, 0xab, 0xa0, 0x94, 0x98, 0x83, 0x87, 0xf3, 0x8c, - 0x52, 0xca, 0xfd, 0x91, 0x0a, 0xd3, 0x62, 0x1b, 0xcd, 0xeb, 0xc9, 0x05, 0xf9, 0xbe, 0x29, 0x9f, - 0xba, 0xb2, 0x7a, 0x75, 0x6d, 0x19, 0xff, 0xe3, 0x85, 0xe4, 0x05, 0xf9, 0x16, 0xaa, 0x57, 0xa4, - 0xe7, 0x35, 0x91, 0x7c, 0x5c, 0x98, 0xed, 0x79, 0x4d, 0x44, 0x9a, 0xed, 0x79, 0x4d, 0x44, 0x9a, - 0xed, 0x79, 0x4d, 0x44, 0x9a, 0xed, 0x79, 0x14, 0x20, 0xcd, 0xf6, 0xbc, 0x26, 0x22, 0xcd, 0xf6, - 0xbc, 0x26, 0x22, 0xcd, 0xf6, 0xbe, 0x26, 0xc2, 0xa6, 0xfb, 0xbe, 0x26, 0x22, 0xcf, 0xf7, 0xbe, - 0x26, 0x22, 0xcf, 0xf7, 0xbe, 0x26, 0x92, 0x8f, 0xbb, 0x9d, 0x2e, 0xea, 0xff, 0xd0, 0x41, 0xc6, - 0x0f, 0xba, 0x07, 0xf4, 0x0b, 0xf0, 0x0e, 0x4c, 0xd2, 0xfd, 0x88, 0x92, 0x6d, 0xb9, 0x66, 0xc3, - 0x42, 0x1d, 0xfd, 0x63, 0x90, 0xa1, 0x43, 0xf4, 0x2e, 0x27, 0xec, 0x2e, 0x90, 0xce, 0xb3, 0x72, - 0x2b, 0x49, 0xe7, 0xfe, 0x2c, 0x0e, 0x33, 0x74, 0xa0, 0x62, 0xb6, 0x90, 0xf4, 0x92, 0xd1, 0xa5, - 0xc0, 0x23, 0xa5, 0x09, 0x0c, 0xbf, 0xff, 0xde, 0x3c, 0x1d, 0x2d, 0x78, 0xc1, 0x74, 0x29, 0xf0, - 0x70, 0x49, 0x96, 0xf3, 0xd7, 0x9f, 0x4b, 0x81, 0x17, 0x8f, 0x64, 0x39, 0x6f, 0xb9, 0xf1, 0xe4, - 0xf8, 0x2b, 0x48, 0xb2, 0xdc, 0xba, 0x17, 0x65, 0x97, 0x02, 0x2f, 0x23, 0xc9, 0x72, 0x65, 0x2f, - 0xde, 0x2e, 0x05, 0x1e, 0x3d, 0xc9, 0x72, 0x1b, 0x5e, 0xe4, 0x5d, 0x0a, 0x3c, 0x84, 0x92, 0xe5, - 0xee, 0x78, 0x31, 0x78, 0x29, 0xf0, 0xaa, 0x92, 0x2c, 0xf7, 0xa2, 0x17, 0x8d, 0x97, 0x02, 0x2f, - 0x2d, 0xc9, 0x72, 0x9b, 0x5e, 0x5c, 0x2e, 0x06, 0x5f, 0x5f, 0x92, 0x05, 0xef, 0xfa, 0x11, 0xba, - 0x18, 0x7c, 0x91, 0x49, 0x96, 0xfc, 0xb8, 0x1f, 0xab, 0x8b, 0xc1, 0x57, 0x9a, 0x64, 0xc9, 0x2d, - 0x3f, 0x6a, 0x17, 0x83, 0x8f, 0xca, 0x64, 0xc9, 0x6d, 0x3f, 0x7e, 0x17, 0x83, 0x0f, 0xcd, 0x64, - 0xc9, 0x8a, 0x1f, 0xc9, 0x8b, 0xc1, 0xc7, 0x67, 0xb2, 0xe4, 0x8e, 0xbf, 0x87, 0xfe, 0xfb, 0x81, - 0xf0, 0x13, 0x5e, 0x82, 0xca, 0x05, 0xc2, 0x0f, 0x42, 0x42, 0x2f, 0x17, 0x08, 0x3d, 0x08, 0x09, - 0xbb, 0x5c, 0x20, 0xec, 0x20, 0x24, 0xe4, 0x72, 0x81, 0x90, 0x83, 0x90, 0x70, 0xcb, 0x05, 0xc2, - 0x0d, 0x42, 0x42, 0x2d, 0x17, 0x08, 0x35, 0x08, 0x09, 0xb3, 0x5c, 0x20, 0xcc, 0x20, 0x24, 0xc4, - 0x72, 0x81, 0x10, 0x83, 0x90, 0xf0, 0xca, 0x05, 0xc2, 0x0b, 0x42, 0x42, 0xeb, 0x62, 0x30, 0xb4, - 0x20, 0x2c, 0xac, 0x2e, 0x06, 0xc3, 0x0a, 0xc2, 0x42, 0xea, 0xc9, 0x60, 0x48, 0xa5, 0xee, 0xbf, - 0x37, 0x9f, 0xc0, 0x43, 0x42, 0x34, 0x5d, 0x0c, 0x46, 0x13, 0x84, 0x45, 0xd2, 0xc5, 0x60, 0x24, - 0x41, 0x58, 0x14, 0x5d, 0x0c, 0x46, 0x11, 0x84, 0x45, 0xd0, 0xbb, 0xc1, 0x08, 0xf2, 0x5f, 0xf1, - 0xc9, 0x05, 0x9e, 0x28, 0x46, 0x45, 0x90, 0x3a, 0x44, 0x04, 0xa9, 0x43, 0x44, 0x90, 0x3a, 0x44, - 0x04, 0xa9, 0x43, 0x44, 0x90, 0x3a, 0x44, 0x04, 0xa9, 0x43, 0x44, 0x90, 0x3a, 0x44, 0x04, 0xa9, - 0xc3, 0x44, 0x90, 0x3a, 0x54, 0x04, 0xa9, 0xfd, 0x22, 0xe8, 0x62, 0xf0, 0x85, 0x07, 0x08, 0x2b, - 0x48, 0x17, 0x83, 0x4f, 0x3e, 0xa3, 0x43, 0x48, 0x1d, 0x2a, 0x84, 0xd4, 0x7e, 0x21, 0xf4, 0xfb, - 0x2a, 0x4c, 0x4b, 0x21, 0xc4, 0x1e, 0x0f, 0x7d, 0x50, 0x15, 0xe8, 0xfa, 0x10, 0xef, 0x57, 0x84, - 0xc5, 0xd4, 0xf5, 0x21, 0x9e, 0x51, 0x0f, 0x8a, 0xb3, 0xde, 0x2a, 0x54, 0x1e, 0xa2, 0x0a, 0x6d, - 0x78, 0x31, 0x74, 0x7d, 0x88, 0xf7, 0x2e, 0x7a, 0x63, 0xef, 0xe6, 0xa0, 0x22, 0xf0, 0xe2, 0x50, - 0x45, 0x60, 0x73, 0xa8, 0x22, 0x70, 0xd7, 0xf7, 0xe0, 0x2f, 0xc6, 0xe0, 0x9c, 0xef, 0x41, 0xfa, - 0x89, 0xfc, 0xc0, 0x50, 0x4e, 0x78, 0x42, 0xa5, 0xf3, 0xa7, 0x36, 0x82, 0x1b, 0x63, 0x9b, 0x75, - 0x7d, 0x57, 0x7e, 0x56, 0x95, 0x3f, 0xeb, 0xf3, 0x1b, 0xc1, 0xe3, 0x6c, 0x2f, 0xf4, 0x22, 0xa8, - 0x9b, 0x75, 0x87, 0x54, 0x8b, 0xb0, 0xd3, 0x96, 0x0c, 0x3c, 0xad, 0x1b, 0x30, 0x4a, 0xc4, 0x1d, - 0xe2, 0xde, 0x87, 0x39, 0xf1, 0xba, 0xc1, 0x98, 0x72, 0xef, 0x2a, 0xb0, 0x20, 0x85, 0xf2, 0x07, - 0xf3, 0xc4, 0xe0, 0xf6, 0x50, 0x4f, 0x0c, 0xa4, 0x04, 0xf1, 0x9f, 0x1e, 0x3c, 0xdd, 0xfb, 0xa0, - 0x5a, 0xcc, 0x92, 0xe0, 0x93, 0x84, 0xbf, 0x02, 0x13, 0xfe, 0x15, 0x90, 0x5b, 0xb6, 0x6b, 0xd1, - 0x9b, 0x99, 0x61, 0xa9, 0x79, 0x2d, 0xb0, 0x89, 0x36, 0x10, 0xe6, 0x65, 0x6b, 0x2e, 0x0f, 0x93, - 0x15, 0xf9, 0xbb, 0x3c, 0x51, 0x7b, 0x11, 0x49, 0xdc, 0x9a, 0xdf, 0xfb, 0xf2, 0xfc, 0x48, 0xee, - 0xa3, 0x90, 0x11, 0xbf, 0xae, 0x13, 0x00, 0xa6, 0x38, 0x30, 0x1f, 0xff, 0x16, 0x96, 0xfe, 0x07, - 0x0a, 0x3c, 0x22, 0x8a, 0xbf, 0xd4, 0x70, 0x4f, 0x36, 0x2d, 0xdc, 0xd3, 0x3f, 0x07, 0x49, 0xc4, - 0x1c, 0xc7, 0x7e, 0xf0, 0x84, 0xdd, 0x46, 0x86, 0x8a, 0x2f, 0x93, 0x7f, 0x0d, 0x0f, 0x12, 0xd8, - 0xe2, 0xe0, 0xa7, 0x5d, 0x9d, 0x7d, 0x0a, 0x12, 0x94, 0x5f, 0xd6, 0x6b, 0x3c, 0xa0, 0xd7, 0x6f, - 0x84, 0xe8, 0x45, 0xe2, 0x48, 0xbf, 0x2b, 0xe9, 0x25, 0xdc, 0xad, 0x86, 0x8a, 0x2f, 0xf3, 0xe0, - 0x2b, 0x26, 0x71, 0xff, 0x47, 0x22, 0x2a, 0x5a, 0xc9, 0x45, 0x48, 0x96, 0x83, 0x32, 0xe1, 0x7a, - 0xae, 0x43, 0xbc, 0x62, 0xd7, 0xc9, 0x4f, 0xb1, 0x90, 0x5f, 0x93, 0x65, 0x46, 0x66, 0x3f, 0x2d, - 0x7b, 0x09, 0x92, 0xa5, 0x93, 0x46, 0xb3, 0xde, 0x41, 0x16, 0x7b, 0x64, 0xcf, 0x76, 0xd0, 0x31, - 0xc6, 0xf0, 0xe6, 0x72, 0x25, 0x98, 0xaa, 0xd8, 0x56, 0xf1, 0xd4, 0x15, 0xeb, 0xc6, 0x72, 0x20, - 0x45, 0xd8, 0x23, 0x1f, 0xf2, 0x05, 0x10, 0x2c, 0x50, 0x4c, 0x7c, 0xfb, 0xbd, 0x79, 0x65, 0xdf, - 0xdb, 0x3e, 0xdf, 0x86, 0x47, 0x59, 0xfa, 0xf4, 0x50, 0xad, 0x46, 0x51, 0xa5, 0xd8, 0x63, 0x6a, - 0x81, 0x6e, 0x13, 0xd3, 0x59, 0xa1, 0x74, 0x0f, 0xa6, 0x19, 0x6e, 0x8a, 0x06, 0x6a, 0xa6, 0x9e, - 0x49, 0xb3, 0x50, 0xba, 0xe5, 0x28, 0xba, 0x80, 0x66, 0x4f, 0x42, 0xca, 0x9b, 0x13, 0xa2, 0x41, - 0xcc, 0x94, 0xd5, 0xa5, 0x1c, 0xa4, 0x85, 0x84, 0xd5, 0x13, 0xa0, 0x14, 0xb4, 0x11, 0xfc, 0x5f, - 0x51, 0x53, 0xf0, 0x7f, 0x25, 0x2d, 0xb6, 0xf4, 0x14, 0x4c, 0x06, 0xb6, 0x2f, 0xf1, 0xcc, 0xba, - 0x06, 0xf8, 0xbf, 0xb2, 0x96, 0x9e, 0x8d, 0x7f, 0xe6, 0x1f, 0xcd, 0x8d, 0x2c, 0xdd, 0x06, 0xbd, - 0x77, 0xa3, 0x53, 0x1f, 0x85, 0x58, 0x01, 0x53, 0x3e, 0x0a, 0xb1, 0x62, 0x51, 0x53, 0x66, 0x27, - 0xff, 0xc6, 0x17, 0x16, 0xd2, 0x45, 0xf2, 0x5d, 0xe4, 0x57, 0x90, 0x5b, 0x2c, 0x32, 0xf0, 0xf3, - 0xf0, 0x48, 0xe8, 0x46, 0x29, 0xc6, 0x97, 0x4a, 0x14, 0xbf, 0xbe, 0xde, 0x83, 0x5f, 0x5f, 0x27, - 0x78, 0x25, 0xcf, 0x1f, 0x38, 0x17, 0xf4, 0x90, 0x6d, 0xc9, 0x6c, 0x5d, 0x78, 0xc0, 0x5d, 0xc8, - 0x3f, 0xcf, 0x64, 0x8b, 0xa1, 0xb2, 0x28, 0xe2, 0x81, 0x75, 0x31, 0x5f, 0x62, 0xf8, 0x52, 0x28, - 0xfe, 0x28, 0xf0, 0x54, 0x55, 0x5e, 0x21, 0x18, 0x49, 0xc9, 0x53, 0x78, 0x3d, 0x94, 0xe4, 0x44, - 0x78, 0xd7, 0x7d, 0xdd, 0x53, 0xb8, 0x1c, 0x2a, 0xdb, 0x88, 0x78, 0xe7, 0xab, 0x9c, 0xbf, 0xcc, - 0x16, 0xf9, 0xc2, 0x15, 0xfd, 0x11, 0x9e, 0xa3, 0x52, 0x05, 0x66, 0x06, 0xe2, 0x52, 0xf9, 0x12, - 0x03, 0x14, 0xfb, 0x02, 0xfa, 0x5b, 0x89, 0x23, 0xf3, 0x2f, 0x32, 0x92, 0x52, 0x5f, 0x92, 0x08, - 0x53, 0x71, 0x78, 0x71, 0xff, 0xde, 0xfb, 0x73, 0x23, 0xdf, 0x7a, 0x7f, 0x6e, 0xe4, 0xbf, 0xbe, - 0x3f, 0x37, 0xf2, 0x87, 0xef, 0xcf, 0x29, 0xdf, 0x7b, 0x7f, 0x4e, 0xf9, 0xc1, 0xfb, 0x73, 0xca, - 0x9f, 0xbe, 0x3f, 0xa7, 0xbc, 0x7d, 0x7f, 0x4e, 0xf9, 0xea, 0xfd, 0x39, 0xe5, 0x6b, 0xf7, 0xe7, - 0x94, 0xdf, 0xbd, 0x3f, 0xa7, 0xbc, 0x7b, 0x7f, 0x4e, 0xb9, 0x77, 0x7f, 0x4e, 0xf9, 0xd6, 0xfd, - 0x39, 0xe5, 0x0f, 0xef, 0xcf, 0x29, 0xdf, 0xbb, 0x3f, 0x37, 0xf2, 0x83, 0xfb, 0x73, 0xca, 0x9f, - 0xde, 0x9f, 0x1b, 0x79, 0xfb, 0x3b, 0x73, 0x23, 0xef, 0x7c, 0x67, 0x6e, 0xe4, 0xab, 0xdf, 0x99, - 0x53, 0xe0, 0xbf, 0xaf, 0xc1, 0x02, 0xfb, 0x22, 0x99, 0xf7, 0x7d, 0xd5, 0xcb, 0xee, 0x09, 0x22, - 0x2d, 0xc1, 0x55, 0xfe, 0x7b, 0x4e, 0xde, 0xc0, 0x19, 0xbf, 0x54, 0x36, 0xfb, 0xa0, 0x5f, 0x61, - 0xcb, 0xfd, 0xbb, 0x04, 0x8c, 0xf1, 0xad, 0xe0, 0xb0, 0xdf, 0x4b, 0xbe, 0x06, 0xc9, 0x93, 0x46, - 0xd3, 0xec, 0x34, 0xdc, 0x53, 0xb6, 0x07, 0xfa, 0xd8, 0xb2, 0xaf, 0x36, 0xdf, 0x35, 0x7d, 0xb1, - 0xdb, 0xb2, 0xbb, 0x1d, 0xc3, 0x13, 0xd5, 0x17, 0x20, 0x73, 0x82, 0x1a, 0xc7, 0x27, 0x6e, 0xb5, - 0x61, 0x55, 0x6b, 0x2d, 0xd2, 0x2b, 0x8f, 0x1b, 0x40, 0xc7, 0x36, 0xad, 0x52, 0x0b, 0x9f, 0xac, - 0x6e, 0xba, 0x26, 0xb9, 0x47, 0xcf, 0x18, 0xe4, 0xb3, 0x7e, 0x01, 0x32, 0x1d, 0xe4, 0x74, 0x9b, - 0x6e, 0xb5, 0x66, 0x77, 0x2d, 0x97, 0x74, 0xb3, 0xaa, 0x91, 0xa6, 0x63, 0x25, 0x3c, 0xa4, 0x3f, - 0x09, 0xe3, 0x6e, 0xa7, 0x8b, 0xaa, 0x4e, 0xcd, 0x76, 0x9d, 0x96, 0x69, 0x91, 0x6e, 0x36, 0x69, - 0x64, 0xf0, 0xe0, 0x1e, 0x1b, 0x23, 0xbf, 0xc7, 0x5f, 0xb3, 0x3b, 0x88, 0xdc, 0x4c, 0xc7, 0x0c, - 0x7a, 0xa0, 0x6b, 0xa0, 0xbe, 0x8e, 0x4e, 0xc9, 0xed, 0x5a, 0xdc, 0xc0, 0x1f, 0xf5, 0x67, 0x60, - 0x94, 0xfe, 0xa9, 0x06, 0xd2, 0x5b, 0x93, 0x27, 0xd7, 0xde, 0xa5, 0xd1, 0x1d, 0x5a, 0x83, 0x09, - 0xe8, 0xb7, 0x60, 0xcc, 0x45, 0x9d, 0x8e, 0xd9, 0xb0, 0xc8, 0xad, 0x53, 0x7a, 0x75, 0x3e, 0xc4, - 0x0c, 0xfb, 0x54, 0x82, 0xfc, 0x34, 0xaa, 0xc1, 0xe5, 0xf5, 0x6b, 0x90, 0x21, 0x72, 0xab, 0x55, - 0xfa, 0xe7, 0x2c, 0xd2, 0x7d, 0xa3, 0x39, 0x4d, 0xe5, 0xf8, 0x83, 0x02, 0x0e, 0xa3, 0xbf, 0x6d, - 0x37, 0x4e, 0x4e, 0xfb, 0x64, 0xc8, 0x69, 0x49, 0xe1, 0x5d, 0x25, 0x4d, 0x23, 0x3d, 0x35, 0xe3, - 0xa1, 0xbf, 0x7e, 0xb7, 0x0d, 0x19, 0x51, 0x2f, 0x6e, 0x06, 0xda, 0xfc, 0x10, 0x33, 0x3c, 0xed, - 0xff, 0xd4, 0x79, 0x1f, 0x2b, 0xd0, 0xf9, 0x7c, 0xec, 0xa6, 0x32, 0xbb, 0x0b, 0x5a, 0xf0, 0x7c, - 0x21, 0x94, 0x97, 0x64, 0x4a, 0x4d, 0xbc, 0x58, 0xb2, 0x4d, 0xee, 0x33, 0xe6, 0x5e, 0x80, 0x51, - 0x1a, 0x3f, 0x7a, 0x1a, 0xc6, 0x0e, 0x2a, 0x1f, 0xaf, 0xec, 0xbc, 0x54, 0xa1, 0x3f, 0x3a, 0xba, - 0x7b, 0x50, 0xd9, 0xa3, 0x3f, 0x1d, 0xba, 0xb7, 0x55, 0xd8, 0xdd, 0xdb, 0xdf, 0x2c, 0x7d, 0x5c, - 0x8b, 0xe9, 0x93, 0x90, 0x2e, 0x6e, 0x6e, 0x6d, 0x55, 0x8b, 0x85, 0xcd, 0xad, 0xf2, 0x2b, 0x9a, - 0x9a, 0x9b, 0x83, 0x51, 0xaa, 0x27, 0xf9, 0x1d, 0xb7, 0xae, 0x65, 0x9d, 0xf2, 0xe6, 0x81, 0x1c, - 0xe4, 0xbe, 0xae, 0xc3, 0x58, 0xa1, 0xd9, 0xdc, 0x36, 0xdb, 0x8e, 0xfe, 0x12, 0x4c, 0xd1, 0x9f, - 0x93, 0xd8, 0xb7, 0xd7, 0xc9, 0xcf, 0x0d, 0xe2, 0xd2, 0xa0, 0xb0, 0x9f, 0x78, 0xf7, 0xaf, 0x9b, - 0x89, 0x2f, 0xf7, 0xc8, 0x52, 0x03, 0xf7, 0x72, 0xe8, 0xfb, 0xa0, 0xf1, 0xc1, 0x8d, 0xa6, 0x6d, - 0xba, 0x98, 0x37, 0xc6, 0x7e, 0x0d, 0xb0, 0x3f, 0x2f, 0x17, 0xa5, 0xb4, 0x3d, 0x0c, 0xfa, 0xc7, - 0x20, 0xb9, 0x69, 0xb9, 0x57, 0x57, 0x31, 0x1b, 0xff, 0xf3, 0x23, 0xbd, 0x6c, 0x5c, 0x84, 0xb2, - 0x78, 0x08, 0x86, 0xbe, 0xbe, 0x86, 0xd1, 0xf1, 0x41, 0x68, 0x22, 0xe2, 0xa3, 0xc9, 0xa1, 0xfe, - 0x02, 0xa4, 0xf0, 0xbd, 0x09, 0x3d, 0x79, 0x82, 0x37, 0xae, 0x3d, 0x70, 0x4f, 0x86, 0xe2, 0x7d, - 0x0c, 0x27, 0xa0, 0xe7, 0x1f, 0x1d, 0x48, 0x20, 0x28, 0xe0, 0x63, 0x30, 0xc1, 0x9e, 0xa7, 0xc1, - 0x58, 0x5f, 0x82, 0xbd, 0x80, 0x06, 0x7b, 0xa2, 0x06, 0x7b, 0x9e, 0x06, 0xc9, 0x81, 0x04, 0xa2, - 0x06, 0xde, 0xb1, 0x5e, 0x04, 0xd8, 0x68, 0xbc, 0x85, 0xea, 0x54, 0x05, 0xfa, 0xc7, 0x49, 0x72, - 0x21, 0x0c, 0xbe, 0x10, 0xa5, 0x10, 0x50, 0x7a, 0x19, 0xd2, 0x7b, 0x47, 0x3e, 0x09, 0xf4, 0xe4, - 0xb1, 0xa7, 0xc6, 0x51, 0x80, 0x45, 0xc4, 0x79, 0xaa, 0xd0, 0x8b, 0x49, 0x0f, 0x56, 0x45, 0xb8, - 0x1a, 0x01, 0xe5, 0xab, 0x42, 0x49, 0x32, 0x11, 0xaa, 0x08, 0x2c, 0x22, 0x0e, 0x17, 0xc3, 0xa2, - 0x6d, 0x63, 0x49, 0x56, 0x95, 0xe6, 0x43, 0x28, 0x98, 0x04, 0x2b, 0x86, 0xec, 0x88, 0x78, 0x84, - 0x04, 0x39, 0x06, 0x4f, 0xf4, 0xf7, 0x08, 0x97, 0xe1, 0x1e, 0xe1, 0xc7, 0x62, 0x9e, 0x91, 0xd7, - 0x59, 0x31, 0xcf, 0x64, 0x64, 0x9e, 0x71, 0xd1, 0x40, 0x9e, 0xf1, 0x61, 0xfd, 0x13, 0x30, 0xc9, - 0xc7, 0x70, 0x79, 0xc2, 0xa4, 0x1a, 0xfb, 0xf3, 0x4d, 0xfd, 0x49, 0x99, 0x24, 0xe5, 0x0c, 0xe2, - 0xf5, 0x0a, 0x4c, 0xf0, 0xa1, 0x6d, 0x87, 0x5c, 0xee, 0x14, 0xfb, 0xd3, 0x08, 0xfd, 0x19, 0xa9, - 0x20, 0x25, 0x0c, 0xa0, 0x67, 0xd7, 0x61, 0x26, 0xbc, 0x1a, 0x89, 0xe5, 0x37, 0x45, 0xcb, 0xef, - 0x39, 0xb1, 0xfc, 0x2a, 0x62, 0xf9, 0x2e, 0xc1, 0x23, 0xa1, 0xb5, 0x27, 0x8a, 0x24, 0x26, 0x92, - 0xdc, 0x86, 0x71, 0xa9, 0xe4, 0x88, 0xe0, 0x44, 0x08, 0x38, 0xd1, 0x0b, 0xf6, 0x43, 0x2b, 0x64, - 0xf5, 0x90, 0xc0, 0xaa, 0x08, 0xfe, 0x18, 0x4c, 0xc8, 0xf5, 0x46, 0x44, 0x8f, 0x87, 0xa0, 0xc7, - 0x43, 0xd0, 0xe1, 0xe7, 0x8e, 0x87, 0xa0, 0xe3, 0x01, 0xf4, 0x5e, 0xdf, 0x73, 0x4f, 0x85, 0xa0, - 0xa7, 0x42, 0xd0, 0xe1, 0xe7, 0xd6, 0x43, 0xd0, 0xba, 0x88, 0x7e, 0x0e, 0x26, 0x03, 0x25, 0x46, - 0x84, 0x8f, 0x85, 0xc0, 0xc7, 0x44, 0xf8, 0xf3, 0xa0, 0x05, 0x8b, 0x8b, 0x88, 0x9f, 0x0c, 0xc1, - 0x4f, 0x86, 0x9d, 0x3e, 0x5c, 0xfb, 0xd1, 0x10, 0xf8, 0x68, 0xe8, 0xe9, 0xc3, 0xf1, 0x5a, 0x08, - 0x5e, 0x13, 0xf1, 0x79, 0xc8, 0x88, 0xd5, 0x44, 0xc4, 0x26, 0x43, 0xb0, 0xc9, 0xa0, 0xdd, 0xa5, - 0x62, 0x12, 0x15, 0xe9, 0xa9, 0x3e, 0xe9, 0x22, 0x95, 0x90, 0x28, 0x92, 0x8c, 0x48, 0xf2, 0x49, - 0x38, 0x17, 0x56, 0x32, 0x42, 0x38, 0x16, 0x45, 0x8e, 0x09, 0xdc, 0x23, 0xfa, 0xcd, 0x9e, 0xd9, - 0x0e, 0x34, 0x4e, 0xb3, 0xaf, 0xc2, 0x74, 0x48, 0xe1, 0x08, 0xa1, 0x5d, 0x96, 0xbb, 0xb1, 0xac, - 0x40, 0x4b, 0x8a, 0x40, 0xc3, 0x3a, 0xde, 0xb5, 0x1b, 0x96, 0x2b, 0x76, 0x65, 0xdf, 0x98, 0x86, - 0x09, 0x56, 0x9e, 0x76, 0x3a, 0x75, 0xd4, 0x41, 0x75, 0xfd, 0x2f, 0xf5, 0xef, 0x9d, 0x56, 0x7a, - 0x8b, 0x1a, 0x43, 0x9d, 0xa1, 0x85, 0x7a, 0xb5, 0x6f, 0x0b, 0x75, 0x39, 0x9a, 0x3e, 0xaa, 0x93, - 0x2a, 0xf5, 0x74, 0x52, 0x4f, 0xf7, 0x27, 0xed, 0xd7, 0x50, 0x95, 0x7a, 0x1a, 0xaa, 0xc1, 0x24, - 0xa1, 0x7d, 0xd5, 0x46, 0x6f, 0x5f, 0xb5, 0xd8, 0x9f, 0xa5, 0x7f, 0x7b, 0xb5, 0xd1, 0xdb, 0x5e, - 0x45, 0xf0, 0x84, 0x77, 0x59, 0x1b, 0xbd, 0x5d, 0xd6, 0x00, 0x9e, 0xfe, 0xcd, 0xd6, 0x46, 0x6f, - 0xb3, 0x15, 0xc1, 0x13, 0xde, 0x73, 0x6d, 0x86, 0xf4, 0x5c, 0xcf, 0xf4, 0x27, 0x1a, 0xd4, 0x7a, - 0x6d, 0x85, 0xb5, 0x5e, 0x4b, 0x03, 0x94, 0x1a, 0xd8, 0x81, 0x6d, 0x86, 0x74, 0x60, 0x51, 0x8a, - 0xf5, 0x69, 0xc4, 0xb6, 0xc2, 0x1a, 0xb1, 0x48, 0xc5, 0xfa, 0xf5, 0x63, 0x7f, 0x21, 0xd8, 0x8f, - 0x5d, 0xea, 0xcf, 0x14, 0xde, 0x96, 0x6d, 0xf4, 0xb6, 0x65, 0x8b, 0x51, 0x39, 0x17, 0xd6, 0x9d, - 0xbd, 0xda, 0xb7, 0x3b, 0x1b, 0x22, 0x85, 0xa3, 0x9a, 0xb4, 0x97, 0xfb, 0x35, 0x69, 0xcb, 0xd1, - 0xdc, 0x83, 0x7b, 0xb5, 0x83, 0x3e, 0xbd, 0xda, 0xb3, 0xd1, 0xc4, 0x3f, 0x6b, 0xd9, 0x7e, 0xd6, - 0xb2, 0xfd, 0xac, 0x65, 0xfb, 0x59, 0xcb, 0xf6, 0x93, 0x6f, 0xd9, 0xf2, 0xf1, 0xcf, 0x7e, 0x79, - 0x5e, 0xc9, 0xfd, 0x17, 0xd5, 0xfb, 0xab, 0x53, 0x2f, 0x35, 0xdc, 0x13, 0x5c, 0xde, 0xb6, 0x21, - 0x43, 0xfe, 0xe8, 0x45, 0xcb, 0x6c, 0xb7, 0x1b, 0xd6, 0x31, 0xeb, 0xd9, 0x96, 0x7a, 0xb7, 0x12, - 0x19, 0x80, 0xfc, 0xd9, 0x90, 0x6d, 0x2a, 0xcc, 0x96, 0x1b, 0xcb, 0x1f, 0xd1, 0xef, 0x42, 0xba, - 0xe5, 0x1c, 0x7b, 0x6c, 0xb1, 0x9e, 0x85, 0x30, 0xc0, 0x46, 0xaf, 0xd4, 0x27, 0x83, 0x96, 0x37, - 0x80, 0x55, 0x3b, 0x3c, 0x75, 0x7d, 0xd5, 0xd4, 0x28, 0xd5, 0xb0, 0x4f, 0x65, 0xd5, 0x0e, 0xfd, - 0x11, 0x1c, 0xb6, 0x41, 0xdd, 0xa3, 0x2a, 0x9d, 0x14, 0x3c, 0x2f, 0xc1, 0x64, 0x40, 0xdb, 0x90, - 0x9c, 0x7f, 0x00, 0xdf, 0x60, 0xc5, 0x82, 0x9a, 0x47, 0xe5, 0x84, 0x18, 0x90, 0xb9, 0x27, 0x60, - 0x5c, 0xe2, 0xd6, 0x33, 0xa0, 0x1c, 0xb1, 0xef, 0x52, 0x2a, 0x47, 0xb9, 0x2f, 0x29, 0x90, 0x66, - 0x2f, 0x12, 0xec, 0x9a, 0x8d, 0x8e, 0xfe, 0x22, 0xc4, 0x9b, 0xfc, 0xfb, 0x4c, 0x0f, 0xfa, 0xdd, - 0x59, 0xc2, 0xa0, 0x6f, 0x40, 0xa2, 0xe3, 0x7d, 0xdf, 0xe9, 0x81, 0xbe, 0x10, 0x4b, 0xe0, 0xb9, - 0x7b, 0x0a, 0x4c, 0xb1, 0xf7, 0x5c, 0x1d, 0xf6, 0xf6, 0xb3, 0xd9, 0x9e, 0xfd, 0xba, 0x02, 0x29, - 0xef, 0x48, 0x3f, 0x84, 0x09, 0xef, 0x80, 0xbe, 0x61, 0x4f, 0x23, 0x35, 0x2f, 0x58, 0xb8, 0x87, - 0x63, 0x39, 0xe4, 0x13, 0x7d, 0x14, 0x45, 0xd7, 0x64, 0x79, 0x70, 0xb6, 0x00, 0xd3, 0x21, 0x62, - 0x67, 0x59, 0x90, 0x73, 0x17, 0x20, 0x55, 0xb1, 0x5d, 0xfa, 0xb3, 0x39, 0xfa, 0x39, 0xe1, 0xa9, - 0x42, 0x31, 0xa6, 0x8d, 0x10, 0xf0, 0xd2, 0x05, 0x18, 0x63, 0xd9, 0xaf, 0x8f, 0x42, 0x6c, 0xbb, - 0xa0, 0x8d, 0x90, 0xff, 0x8b, 0x9a, 0x42, 0xfe, 0x2f, 0x69, 0xb1, 0xe2, 0xd6, 0x03, 0x3e, 0x67, - 0x1a, 0x09, 0x7b, 0xce, 0x74, 0x38, 0x4a, 0xcd, 0xf3, 0xe7, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdf, - 0x26, 0xf9, 0x41, 0x49, 0x7e, 0x00, 0x00, + 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0xc8, 0x19, + 0x68, 0x34, 0xa2, 0x68, 0x8b, 0xc3, 0xe1, 0x90, 0x73, 0xc1, 0x58, 0x52, 0x00, 0x10, 0x1c, 0x71, + 0x4c, 0x82, 0x74, 0x93, 0xb4, 0x34, 0xeb, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x6c, 0x09, 0xe8, 0xc6, + 0xa2, 0x1b, 0x92, 0xe8, 0x87, 0x94, 0xb2, 0x4e, 0x36, 0xde, 0xa4, 0x72, 0xdd, 0xa4, 0xe2, 0x75, + 0x7c, 0x91, 0x37, 0xb5, 0xb1, 0x77, 0x37, 0x17, 0xaf, 0xb3, 0x71, 0xb6, 0xb6, 0x52, 0x59, 0xe5, + 0xc1, 0xc9, 0xe4, 0x25, 0xe5, 0x4d, 0x5e, 0x52, 0xae, 0x94, 0xca, 0x1a, 0x3b, 0x15, 0x27, 0x71, + 0x12, 0x6f, 0xd6, 0x55, 0xbb, 0x55, 0xde, 0x87, 0xd4, 0xb9, 0x75, 0xf7, 0x39, 0x68, 0xa0, 0xc1, + 0x91, 0x64, 0xfb, 0x41, 0x2f, 0x33, 0xe8, 0x73, 0xfe, 0xef, 0xeb, 0xbf, 0xff, 0xdb, 0xf9, 0xfb, + 0x74, 0x03, 0x84, 0xef, 0xad, 0xc1, 0x85, 0x63, 0xc7, 0x39, 0x6e, 0xa0, 0x2b, 0xad, 0xb6, 0xe3, + 0x39, 0x87, 0x9d, 0xa3, 0x2b, 0x75, 0xe4, 0xd6, 0xda, 0x56, 0xcb, 0x73, 0xda, 0x4b, 0x64, 0x4c, + 0x9f, 0xa4, 0x12, 0x4b, 0x5c, 0x22, 0xb7, 0x0d, 0x53, 0x1b, 0x56, 0x03, 0xad, 0xfb, 0x82, 0x7b, + 0xc8, 0xd3, 0x6f, 0x42, 0xf2, 0xc8, 0x6a, 0xa0, 0xac, 0x72, 0x41, 0x5d, 0x48, 0xaf, 0x5c, 0x5a, + 0x92, 0x40, 0x4b, 0x22, 0x62, 0x17, 0x0f, 0x1b, 0x04, 0x91, 0xfb, 0x7e, 0x12, 0xa6, 0x23, 0x66, + 0x75, 0x1d, 0x92, 0xb6, 0xd9, 0xc4, 0x8c, 0xca, 0xc2, 0x98, 0x41, 0x3e, 0xeb, 0x59, 0x18, 0x6d, + 0x99, 0xb5, 0x57, 0xcd, 0x63, 0x94, 0x4d, 0x90, 0x61, 0x7e, 0xa8, 0xcf, 0x01, 0xd4, 0x51, 0x0b, + 0xd9, 0x75, 0x64, 0xd7, 0x4e, 0xb3, 0xea, 0x05, 0x75, 0x61, 0xcc, 0x08, 0x8d, 0xe8, 0x1f, 0x81, + 0xa9, 0x56, 0xe7, 0xb0, 0x61, 0xd5, 0xaa, 0x21, 0x31, 0xb8, 0xa0, 0x2e, 0x0c, 0x1b, 0x1a, 0x9d, + 0x58, 0x0f, 0x84, 0x9f, 0x86, 0xc9, 0xd7, 0x91, 0xf9, 0x6a, 0x58, 0x34, 0x4d, 0x44, 0x27, 0xf0, + 0x70, 0x48, 0xb0, 0x04, 0x99, 0x26, 0x72, 0x5d, 0xf3, 0x18, 0x55, 0xbd, 0xd3, 0x16, 0xca, 0x26, + 0xc9, 0xd5, 0x5f, 0xe8, 0xba, 0x7a, 0xf9, 0xca, 0xd3, 0x0c, 0xb5, 0x7f, 0xda, 0x42, 0x7a, 0x01, + 0xc6, 0x90, 0xdd, 0x69, 0x52, 0x86, 0xe1, 0x1e, 0xf6, 0x2b, 0xdb, 0x9d, 0xa6, 0xcc, 0x92, 0xc2, + 0x30, 0x46, 0x31, 0xea, 0xa2, 0xf6, 0x6b, 0x56, 0x0d, 0x65, 0x47, 0x08, 0xc1, 0xd3, 0x5d, 0x04, + 0x7b, 0x74, 0x5e, 0xe6, 0xe0, 0x38, 0xbd, 0x04, 0x63, 0xe8, 0x0d, 0x0f, 0xd9, 0xae, 0xe5, 0xd8, + 0xd9, 0x51, 0x42, 0xf2, 0x54, 0x84, 0x17, 0x51, 0xa3, 0x2e, 0x53, 0x04, 0x38, 0xfd, 0x3a, 0x8c, + 0x3a, 0x2d, 0xcf, 0x72, 0x6c, 0x37, 0x9b, 0xba, 0xa0, 0x2c, 0xa4, 0x57, 0xce, 0x47, 0x06, 0xc2, + 0x0e, 0x95, 0x31, 0xb8, 0xb0, 0xbe, 0x09, 0x9a, 0xeb, 0x74, 0xda, 0x35, 0x54, 0xad, 0x39, 0x75, + 0x54, 0xb5, 0xec, 0x23, 0x27, 0x3b, 0x46, 0x08, 0xe6, 0xbb, 0x2f, 0x84, 0x08, 0x96, 0x9c, 0x3a, + 0xda, 0xb4, 0x8f, 0x1c, 0x63, 0xc2, 0x15, 0x8e, 0xf5, 0x19, 0x18, 0x71, 0x4f, 0x6d, 0xcf, 0x7c, + 0x23, 0x9b, 0x21, 0x11, 0xc2, 0x8e, 0x72, 0x7f, 0x32, 0x0c, 0x93, 0x83, 0x84, 0xd8, 0x6d, 0x18, + 0x3e, 0xc2, 0x57, 0x99, 0x4d, 0x9c, 0xc5, 0x06, 0x14, 0x23, 0x1a, 0x71, 0xe4, 0x21, 0x8d, 0x58, + 0x80, 0xb4, 0x8d, 0x5c, 0x0f, 0xd5, 0x69, 0x44, 0xa8, 0x03, 0xc6, 0x14, 0x50, 0x50, 0x77, 0x48, + 0x25, 0x1f, 0x2a, 0xa4, 0x5e, 0x86, 0x49, 0x5f, 0xa5, 0x6a, 0xdb, 0xb4, 0x8f, 0x79, 0x6c, 0x5e, + 0x89, 0xd3, 0x64, 0xa9, 0xcc, 0x71, 0x06, 0x86, 0x19, 0x13, 0x48, 0x38, 0xd6, 0xd7, 0x01, 0x1c, + 0x1b, 0x39, 0x47, 0xd5, 0x3a, 0xaa, 0x35, 0xb2, 0xa9, 0x1e, 0x56, 0xda, 0xc1, 0x22, 0x5d, 0x56, + 0x72, 0xe8, 0x68, 0xad, 0xa1, 0xdf, 0x0a, 0x42, 0x6d, 0xb4, 0x47, 0xa4, 0x6c, 0xd3, 0x24, 0xeb, + 0x8a, 0xb6, 0x03, 0x98, 0x68, 0x23, 0x1c, 0xf7, 0xa8, 0xce, 0xae, 0x6c, 0x8c, 0x28, 0xb1, 0x14, + 0x7b, 0x65, 0x06, 0x83, 0xd1, 0x0b, 0x1b, 0x6f, 0x87, 0x0f, 0xf5, 0x27, 0xc1, 0x1f, 0xa8, 0x92, + 0xb0, 0x02, 0x52, 0x85, 0x32, 0x7c, 0xb0, 0x62, 0x36, 0xd1, 0xec, 0x4d, 0x98, 0x10, 0xcd, 0xa3, + 0x9f, 0x83, 0x61, 0xd7, 0x33, 0xdb, 0x1e, 0x89, 0xc2, 0x61, 0x83, 0x1e, 0xe8, 0x1a, 0xa8, 0xc8, + 0xae, 0x93, 0x2a, 0x37, 0x6c, 0xe0, 0x8f, 0xb3, 0x37, 0x60, 0x5c, 0x38, 0xfd, 0xa0, 0xc0, 0xdc, + 0xe7, 0x46, 0xe0, 0x5c, 0x54, 0xcc, 0x45, 0x86, 0xff, 0x0c, 0x8c, 0xd8, 0x9d, 0xe6, 0x21, 0x6a, + 0x67, 0x55, 0xc2, 0xc0, 0x8e, 0xf4, 0x02, 0x0c, 0x37, 0xcc, 0x43, 0xd4, 0xc8, 0x26, 0x2f, 0x28, + 0x0b, 0x13, 0x2b, 0x1f, 0x19, 0x28, 0xaa, 0x97, 0xb6, 0x30, 0xc4, 0xa0, 0x48, 0xfd, 0x79, 0x48, + 0xb2, 0x12, 0x87, 0x19, 0x16, 0x07, 0x63, 0xc0, 0xb1, 0x68, 0x10, 0x9c, 0xfe, 0x38, 0x8c, 0xe1, + 0xff, 0xa9, 0x6d, 0x47, 0x88, 0xce, 0x29, 0x3c, 0x80, 0xed, 0xaa, 0xcf, 0x42, 0x8a, 0x84, 0x59, + 0x1d, 0xf1, 0xa5, 0xc1, 0x3f, 0xc6, 0x8e, 0xa9, 0xa3, 0x23, 0xb3, 0xd3, 0xf0, 0xaa, 0xaf, 0x99, + 0x8d, 0x0e, 0x22, 0x01, 0x33, 0x66, 0x64, 0xd8, 0xe0, 0x27, 0xf1, 0x98, 0x3e, 0x0f, 0x69, 0x1a, + 0x95, 0x96, 0x5d, 0x47, 0x6f, 0x90, 0xea, 0x33, 0x6c, 0xd0, 0x40, 0xdd, 0xc4, 0x23, 0xf8, 0xf4, + 0xaf, 0xb8, 0x8e, 0xcd, 0x5d, 0x4b, 0x4e, 0x81, 0x07, 0xc8, 0xe9, 0x6f, 0xc8, 0x85, 0xef, 0x89, + 0xe8, 0xcb, 0x93, 0x63, 0x31, 0xf7, 0xcd, 0x04, 0x24, 0x49, 0xbe, 0x4d, 0x42, 0x7a, 0xff, 0xde, + 0x6e, 0xb9, 0xba, 0xbe, 0x73, 0x50, 0xdc, 0x2a, 0x6b, 0x8a, 0x3e, 0x01, 0x40, 0x06, 0x36, 0xb6, + 0x76, 0x0a, 0xfb, 0x5a, 0xc2, 0x3f, 0xde, 0xac, 0xec, 0x5f, 0x5f, 0xd5, 0x54, 0x1f, 0x70, 0x40, + 0x07, 0x92, 0x61, 0x81, 0x6b, 0x2b, 0xda, 0xb0, 0xae, 0x41, 0x86, 0x12, 0x6c, 0xbe, 0x5c, 0x5e, + 0xbf, 0xbe, 0xaa, 0x8d, 0x88, 0x23, 0xd7, 0x56, 0xb4, 0x51, 0x7d, 0x1c, 0xc6, 0xc8, 0x48, 0x71, + 0x67, 0x67, 0x4b, 0x4b, 0xf9, 0x9c, 0x7b, 0xfb, 0xc6, 0x66, 0xe5, 0x8e, 0x36, 0xe6, 0x73, 0xde, + 0x31, 0x76, 0x0e, 0x76, 0x35, 0xf0, 0x19, 0xb6, 0xcb, 0x7b, 0x7b, 0x85, 0x3b, 0x65, 0x2d, 0xed, + 0x4b, 0x14, 0xef, 0xed, 0x97, 0xf7, 0xb4, 0x8c, 0xa0, 0xd6, 0xb5, 0x15, 0x6d, 0xdc, 0x3f, 0x45, + 0xb9, 0x72, 0xb0, 0xad, 0x4d, 0xe8, 0x53, 0x30, 0x4e, 0x4f, 0xc1, 0x95, 0x98, 0x94, 0x86, 0xae, + 0xaf, 0x6a, 0x5a, 0xa0, 0x08, 0x65, 0x99, 0x12, 0x06, 0xae, 0xaf, 0x6a, 0x7a, 0xae, 0x04, 0xc3, + 0x24, 0xba, 0x74, 0x1d, 0x26, 0xb6, 0x0a, 0xc5, 0xf2, 0x56, 0x75, 0x67, 0x77, 0x7f, 0x73, 0xa7, + 0x52, 0xd8, 0xd2, 0x94, 0x60, 0xcc, 0x28, 0x7f, 0xe2, 0x60, 0xd3, 0x28, 0xaf, 0x6b, 0x89, 0xf0, + 0xd8, 0x6e, 0xb9, 0xb0, 0x5f, 0x5e, 0xd7, 0xd4, 0x5c, 0x0d, 0xce, 0x45, 0xd5, 0x99, 0xc8, 0xcc, + 0x08, 0xb9, 0x38, 0xd1, 0xc3, 0xc5, 0x84, 0xab, 0xcb, 0xc5, 0xbf, 0xae, 0xc0, 0x74, 0x44, 0xad, + 0x8d, 0x3c, 0xc9, 0x0b, 0x30, 0x4c, 0x43, 0x94, 0xae, 0x3e, 0xcf, 0x44, 0x16, 0x6d, 0x12, 0xb0, + 0x5d, 0x2b, 0x10, 0xc1, 0x85, 0x57, 0x60, 0xb5, 0xc7, 0x0a, 0x8c, 0x29, 0xba, 0x94, 0xfc, 0x8c, + 0x02, 0xd9, 0x5e, 0xdc, 0x31, 0x85, 0x22, 0x21, 0x14, 0x8a, 0xdb, 0xb2, 0x02, 0x17, 0x7b, 0x5f, + 0x43, 0x97, 0x16, 0x5f, 0x55, 0x60, 0x26, 0xba, 0x51, 0x89, 0xd4, 0xe1, 0x79, 0x18, 0x69, 0x22, + 0xef, 0xc4, 0xe1, 0x8b, 0xf5, 0xe5, 0x88, 0x25, 0x00, 0x4f, 0xcb, 0xb6, 0x62, 0xa8, 0xf0, 0x1a, + 0xa2, 0xf6, 0xea, 0x36, 0xa8, 0x36, 0x5d, 0x9a, 0xfe, 0x4a, 0x02, 0x1e, 0x89, 0x24, 0x8f, 0x54, + 0xf4, 0x09, 0x00, 0xcb, 0x6e, 0x75, 0x3c, 0xba, 0x20, 0xd3, 0xfa, 0x34, 0x46, 0x46, 0x48, 0xee, + 0xe3, 0xda, 0xd3, 0xf1, 0xfc, 0x79, 0x95, 0xcc, 0x03, 0x1d, 0x22, 0x02, 0x37, 0x03, 0x45, 0x93, + 0x44, 0xd1, 0xb9, 0x1e, 0x57, 0xda, 0xb5, 0xd6, 0x2d, 0x83, 0x56, 0x6b, 0x58, 0xc8, 0xf6, 0xaa, + 0xae, 0xd7, 0x46, 0x66, 0xd3, 0xb2, 0x8f, 0x49, 0x01, 0x4e, 0xe5, 0x87, 0x8f, 0xcc, 0x86, 0x8b, + 0x8c, 0x49, 0x3a, 0xbd, 0xc7, 0x67, 0x31, 0x82, 0xac, 0x32, 0xed, 0x10, 0x62, 0x44, 0x40, 0xd0, + 0x69, 0x1f, 0x91, 0xfb, 0xed, 0x51, 0x48, 0x87, 0xda, 0x3a, 0xfd, 0x22, 0x64, 0x5e, 0x31, 0x5f, + 0x33, 0xab, 0xbc, 0x55, 0xa7, 0x96, 0x48, 0xe3, 0xb1, 0x5d, 0xd6, 0xae, 0x2f, 0xc3, 0x39, 0x22, + 0xe2, 0x74, 0x3c, 0xd4, 0xae, 0xd6, 0x1a, 0xa6, 0xeb, 0x12, 0xa3, 0xa5, 0x88, 0xa8, 0x8e, 0xe7, + 0x76, 0xf0, 0x54, 0x89, 0xcf, 0xe8, 0x6b, 0x30, 0x4d, 0x10, 0xcd, 0x4e, 0xc3, 0xb3, 0x5a, 0x0d, + 0x54, 0xc5, 0x37, 0x0f, 0x2e, 0x29, 0xc4, 0xbe, 0x66, 0x53, 0x58, 0x62, 0x9b, 0x09, 0x60, 0x8d, + 0x5c, 0x7d, 0x1d, 0x9e, 0x20, 0xb0, 0x63, 0x64, 0xa3, 0xb6, 0xe9, 0xa1, 0x2a, 0xfa, 0xc5, 0x8e, + 0xd9, 0x70, 0xab, 0xa6, 0x5d, 0xaf, 0x9e, 0x98, 0xee, 0x49, 0xf6, 0x1c, 0x26, 0x28, 0x26, 0xb2, + 0x8a, 0xf1, 0x18, 0x16, 0xbc, 0xc3, 0xe4, 0xca, 0x44, 0xac, 0x60, 0xd7, 0x5f, 0x34, 0xdd, 0x13, + 0x3d, 0x0f, 0x33, 0x84, 0xc5, 0xf5, 0xda, 0x96, 0x7d, 0x5c, 0xad, 0x9d, 0xa0, 0xda, 0xab, 0xd5, + 0x8e, 0x77, 0x74, 0x33, 0xfb, 0x78, 0xf8, 0xfc, 0x44, 0xc3, 0x3d, 0x22, 0x53, 0xc2, 0x22, 0x07, + 0xde, 0xd1, 0x4d, 0x7d, 0x0f, 0x32, 0xd8, 0x19, 0x4d, 0xeb, 0xd3, 0xa8, 0x7a, 0xe4, 0xb4, 0xc9, + 0xca, 0x32, 0x11, 0x91, 0xd9, 0x21, 0x0b, 0x2e, 0xed, 0x30, 0xc0, 0xb6, 0x53, 0x47, 0xf9, 0xe1, + 0xbd, 0xdd, 0x72, 0x79, 0xdd, 0x48, 0x73, 0x96, 0x0d, 0xa7, 0x8d, 0x03, 0xea, 0xd8, 0xf1, 0x0d, + 0x9c, 0xa6, 0x01, 0x75, 0xec, 0x70, 0xf3, 0xae, 0xc1, 0x74, 0xad, 0x46, 0xaf, 0xd9, 0xaa, 0x55, + 0x59, 0x8b, 0xef, 0x66, 0x35, 0xc1, 0x58, 0xb5, 0xda, 0x1d, 0x2a, 0xc0, 0x62, 0xdc, 0xd5, 0x6f, + 0xc1, 0x23, 0x81, 0xb1, 0xc2, 0xc0, 0xa9, 0xae, 0xab, 0x94, 0xa1, 0x6b, 0x30, 0xdd, 0x3a, 0xed, + 0x06, 0xea, 0xc2, 0x19, 0x5b, 0xa7, 0x32, 0xec, 0x29, 0x72, 0xdb, 0xd6, 0x46, 0x35, 0xd3, 0x43, + 0xf5, 0xec, 0xa3, 0x61, 0xe9, 0xd0, 0x84, 0x7e, 0x05, 0xb4, 0x5a, 0xad, 0x8a, 0x6c, 0xf3, 0xb0, + 0x81, 0xaa, 0x66, 0x1b, 0xd9, 0xa6, 0x9b, 0x9d, 0x0f, 0x0b, 0x4f, 0xd4, 0x6a, 0x65, 0x32, 0x5b, + 0x20, 0x93, 0xfa, 0x22, 0x4c, 0x39, 0x87, 0xaf, 0xd4, 0x68, 0x64, 0x55, 0x5b, 0x6d, 0x74, 0x64, + 0xbd, 0x91, 0xbd, 0x44, 0xcc, 0x34, 0x89, 0x27, 0x48, 0x5c, 0xed, 0x92, 0x61, 0xfd, 0x19, 0xd0, + 0x6a, 0xee, 0x89, 0xd9, 0x6e, 0x91, 0xa5, 0xdd, 0x6d, 0x99, 0x35, 0x94, 0x7d, 0x8a, 0x8a, 0xd2, + 0xf1, 0x0a, 0x1f, 0xc6, 0x91, 0xed, 0xbe, 0x6e, 0x1d, 0x79, 0x9c, 0xf1, 0x69, 0x1a, 0xd9, 0x64, + 0x8c, 0xb1, 0xbd, 0x0c, 0xe7, 0x3a, 0xb6, 0x65, 0x7b, 0xa8, 0xdd, 0x6a, 0x23, 0xdc, 0xc4, 0xd3, + 0x4c, 0xcc, 0xfe, 0xf7, 0xd1, 0x1e, 0x6d, 0xf8, 0x41, 0x58, 0x9a, 0x06, 0x80, 0x31, 0xdd, 0xe9, + 0x1e, 0xcc, 0xe5, 0x21, 0x13, 0x8e, 0x0b, 0x7d, 0x0c, 0x68, 0x64, 0x68, 0x0a, 0x5e, 0x63, 0x4b, + 0x3b, 0xeb, 0x78, 0x75, 0xfc, 0x85, 0xb2, 0x96, 0xc0, 0xab, 0xf4, 0xd6, 0xe6, 0x7e, 0xb9, 0x6a, + 0x1c, 0x54, 0xf6, 0x37, 0xb7, 0xcb, 0x9a, 0xba, 0x38, 0x96, 0xfa, 0xc1, 0xa8, 0xf6, 0xe6, 0x9b, + 0x6f, 0xbe, 0x99, 0xc8, 0x7d, 0x2b, 0x01, 0x13, 0x62, 0x67, 0xac, 0x7f, 0x0c, 0x1e, 0xe5, 0xb7, + 0xb1, 0x2e, 0xf2, 0xaa, 0xaf, 0x5b, 0x6d, 0x12, 0xaa, 0x4d, 0x93, 0xf6, 0x96, 0xbe, 0x95, 0xcf, + 0x31, 0xa9, 0x3d, 0xe4, 0xbd, 0x64, 0xb5, 0x71, 0x20, 0x36, 0x4d, 0x4f, 0xdf, 0x82, 0x79, 0xdb, + 0xa9, 0xba, 0x9e, 0x69, 0xd7, 0xcd, 0x76, 0xbd, 0x1a, 0x6c, 0x20, 0x54, 0xcd, 0x5a, 0x0d, 0xb9, + 0xae, 0x43, 0x97, 0x08, 0x9f, 0xe5, 0xbc, 0xed, 0xec, 0x31, 0xe1, 0xa0, 0x76, 0x16, 0x98, 0xa8, + 0x14, 0x11, 0x6a, 0xaf, 0x88, 0x78, 0x1c, 0xc6, 0x9a, 0x66, 0xab, 0x8a, 0x6c, 0xaf, 0x7d, 0x4a, + 0xfa, 0xb9, 0x94, 0x91, 0x6a, 0x9a, 0xad, 0x32, 0x3e, 0xfe, 0xe0, 0x7c, 0x10, 0xb6, 0xe3, 0x7f, + 0x55, 0x21, 0x13, 0xee, 0xe9, 0x70, 0x8b, 0x5c, 0x23, 0xf5, 0x5b, 0x21, 0x19, 0xfe, 0x64, 0xdf, + 0x0e, 0x70, 0xa9, 0x84, 0x0b, 0x7b, 0x7e, 0x84, 0x76, 0x5a, 0x06, 0x45, 0xe2, 0x45, 0x15, 0xe7, + 0x34, 0xa2, 0xfd, 0x7b, 0xca, 0x60, 0x47, 0xfa, 0x1d, 0x18, 0x79, 0xc5, 0x25, 0xdc, 0x23, 0x84, + 0xfb, 0x52, 0x7f, 0xee, 0xbb, 0x7b, 0x84, 0x7c, 0xec, 0xee, 0x5e, 0xb5, 0xb2, 0x63, 0x6c, 0x17, + 0xb6, 0x0c, 0x06, 0xd7, 0x1f, 0x83, 0x64, 0xc3, 0xfc, 0xf4, 0xa9, 0xb8, 0x04, 0x90, 0xa1, 0x41, + 0x0d, 0xff, 0x18, 0x24, 0x5f, 0x47, 0xe6, 0xab, 0x62, 0xe1, 0x25, 0x43, 0x1f, 0x60, 0xe8, 0x5f, + 0x81, 0x61, 0x62, 0x2f, 0x1d, 0x80, 0x59, 0x4c, 0x1b, 0xd2, 0x53, 0x90, 0x2c, 0xed, 0x18, 0x38, + 0xfc, 0x35, 0xc8, 0xd0, 0xd1, 0xea, 0xee, 0x66, 0xb9, 0x54, 0xd6, 0x12, 0xb9, 0x35, 0x18, 0xa1, + 0x46, 0xc0, 0xa9, 0xe1, 0x9b, 0x41, 0x1b, 0x62, 0x87, 0x8c, 0x43, 0xe1, 0xb3, 0x07, 0xdb, 0xc5, + 0xb2, 0xa1, 0x25, 0xc2, 0xee, 0x75, 0x21, 0x13, 0x6e, 0xe7, 0x7e, 0x3a, 0x31, 0xf5, 0xfb, 0x0a, + 0xa4, 0x43, 0xed, 0x19, 0x6e, 0x0c, 0xcc, 0x46, 0xc3, 0x79, 0xbd, 0x6a, 0x36, 0x2c, 0xd3, 0x65, + 0x41, 0x01, 0x64, 0xa8, 0x80, 0x47, 0x06, 0x75, 0xda, 0x4f, 0x45, 0xf9, 0x2f, 0x29, 0xa0, 0xc9, + 0xad, 0x9d, 0xa4, 0xa0, 0xf2, 0x33, 0x55, 0xf0, 0x0b, 0x0a, 0x4c, 0x88, 0xfd, 0x9c, 0xa4, 0xde, + 0xc5, 0x9f, 0xa9, 0x7a, 0xdf, 0x4d, 0xc0, 0xb8, 0xd0, 0xc5, 0x0d, 0xaa, 0xdd, 0x2f, 0xc2, 0x94, + 0x55, 0x47, 0xcd, 0x96, 0xe3, 0x21, 0xbb, 0x76, 0x5a, 0x6d, 0xa0, 0xd7, 0x50, 0x23, 0x9b, 0x23, + 0x85, 0xe2, 0x4a, 0xff, 0x3e, 0x71, 0x69, 0x33, 0xc0, 0x6d, 0x61, 0x58, 0x7e, 0x7a, 0x73, 0xbd, + 0xbc, 0xbd, 0xbb, 0xb3, 0x5f, 0xae, 0x94, 0xee, 0x55, 0x0f, 0x2a, 0x1f, 0xaf, 0xec, 0xbc, 0x54, + 0x31, 0x34, 0x4b, 0x12, 0xfb, 0x00, 0x53, 0x7d, 0x17, 0x34, 0x59, 0x29, 0xfd, 0x51, 0x88, 0x52, + 0x4b, 0x1b, 0xd2, 0xa7, 0x61, 0xb2, 0xb2, 0x53, 0xdd, 0xdb, 0x5c, 0x2f, 0x57, 0xcb, 0x1b, 0x1b, + 0xe5, 0xd2, 0xfe, 0x1e, 0xbd, 0x71, 0xf6, 0xa5, 0xf7, 0xc5, 0xa4, 0xfe, 0xbc, 0x0a, 0xd3, 0x11, + 0x9a, 0xe8, 0x05, 0xd6, 0xb3, 0xd3, 0xdb, 0x88, 0x67, 0x07, 0xd1, 0x7e, 0x09, 0x77, 0x05, 0xbb, + 0x66, 0xdb, 0x63, 0x2d, 0xfe, 0x33, 0x80, 0xad, 0x64, 0x7b, 0xd6, 0x91, 0x85, 0xda, 0x6c, 0x9f, + 0x81, 0x36, 0xf2, 0x93, 0xc1, 0x38, 0xdd, 0x6a, 0xf8, 0x28, 0xe8, 0x2d, 0xc7, 0xb5, 0x3c, 0xeb, + 0x35, 0x54, 0xb5, 0x6c, 0xbe, 0x29, 0x81, 0x1b, 0xfb, 0xa4, 0xa1, 0xf1, 0x99, 0x4d, 0xdb, 0xf3, + 0xa5, 0x6d, 0x74, 0x6c, 0x4a, 0xd2, 0xb8, 0x80, 0xab, 0x86, 0xc6, 0x67, 0x7c, 0xe9, 0x8b, 0x90, + 0xa9, 0x3b, 0x1d, 0xdc, 0x26, 0x51, 0x39, 0xbc, 0x5e, 0x28, 0x46, 0x9a, 0x8e, 0xf9, 0x22, 0xac, + 0x8f, 0x0d, 0x76, 0x43, 0x32, 0x46, 0x9a, 0x8e, 0x51, 0x91, 0xa7, 0x61, 0xd2, 0x3c, 0x3e, 0x6e, + 0x63, 0x72, 0x4e, 0x44, 0x3b, 0xf3, 0x09, 0x7f, 0x98, 0x08, 0xce, 0xde, 0x85, 0x14, 0xb7, 0x03, + 0x5e, 0x92, 0xb1, 0x25, 0xaa, 0x2d, 0xba, 0x27, 0x95, 0x58, 0x18, 0x33, 0x52, 0x36, 0x9f, 0xbc, + 0x08, 0x19, 0xcb, 0xad, 0x06, 0x9b, 0xa3, 0x89, 0x0b, 0x89, 0x85, 0x94, 0x91, 0xb6, 0x5c, 0x7f, + 0x37, 0x2c, 0xf7, 0xd5, 0x04, 0x4c, 0x88, 0x9b, 0xbb, 0xfa, 0x3a, 0xa4, 0x1a, 0x4e, 0xcd, 0x24, + 0xa1, 0x45, 0x9f, 0x2c, 0x2c, 0xc4, 0xec, 0x07, 0x2f, 0x6d, 0x31, 0x79, 0xc3, 0x47, 0xce, 0xfe, + 0x47, 0x05, 0x52, 0x7c, 0x58, 0x9f, 0x81, 0x64, 0xcb, 0xf4, 0x4e, 0x08, 0xdd, 0x70, 0x31, 0xa1, + 0x29, 0x06, 0x39, 0xc6, 0xe3, 0x6e, 0xcb, 0xb4, 0x49, 0x08, 0xb0, 0x71, 0x7c, 0x8c, 0xfd, 0xda, + 0x40, 0x66, 0x9d, 0xb4, 0xfd, 0x4e, 0xb3, 0x89, 0x6c, 0xcf, 0xe5, 0x7e, 0x65, 0xe3, 0x25, 0x36, + 0xac, 0x7f, 0x04, 0xa6, 0xbc, 0xb6, 0x69, 0x35, 0x04, 0xd9, 0x24, 0x91, 0xd5, 0xf8, 0x84, 0x2f, + 0x9c, 0x87, 0xc7, 0x38, 0x6f, 0x1d, 0x79, 0x66, 0xed, 0x04, 0xd5, 0x03, 0xd0, 0x08, 0xd9, 0x39, + 0x7c, 0x94, 0x09, 0xac, 0xb3, 0x79, 0x8e, 0xcd, 0xfd, 0xa1, 0x02, 0x53, 0xfc, 0x46, 0xa5, 0xee, + 0x1b, 0x6b, 0x1b, 0xc0, 0xb4, 0x6d, 0xc7, 0x0b, 0x9b, 0xab, 0x3b, 0x94, 0xbb, 0x70, 0x4b, 0x05, + 0x1f, 0x64, 0x84, 0x08, 0x66, 0x9b, 0x00, 0xc1, 0x4c, 0x4f, 0xb3, 0xcd, 0x43, 0x9a, 0xed, 0xdc, + 0x93, 0xc7, 0x3f, 0xf4, 0xd6, 0x16, 0xe8, 0x10, 0xbe, 0xa3, 0xd1, 0xcf, 0xc1, 0xf0, 0x21, 0x3a, + 0xb6, 0x6c, 0xb6, 0x9f, 0x48, 0x0f, 0xf8, 0x2e, 0x65, 0xd2, 0xdf, 0xa5, 0x2c, 0xbe, 0x0c, 0xd3, + 0x35, 0xa7, 0x29, 0xab, 0x5b, 0xd4, 0xa4, 0xdb, 0x6b, 0xf7, 0x45, 0xe5, 0x17, 0x20, 0x68, 0x31, + 0x7f, 0x3d, 0xa1, 0xde, 0xd9, 0x2d, 0xfe, 0x56, 0x62, 0xf6, 0x0e, 0xc5, 0xed, 0xf2, 0xcb, 0x34, + 0xd0, 0x51, 0x03, 0xd5, 0xb0, 0xea, 0xf0, 0xc7, 0x97, 0xe1, 0xd9, 0x63, 0xcb, 0x3b, 0xe9, 0x1c, + 0x2e, 0xd5, 0x9c, 0xe6, 0x95, 0x63, 0xe7, 0xd8, 0x09, 0x1e, 0x77, 0xe1, 0x23, 0x72, 0x40, 0x3e, + 0xb1, 0x47, 0x5e, 0x63, 0xfe, 0xe8, 0x6c, 0xec, 0xf3, 0xb1, 0x7c, 0x05, 0xa6, 0x99, 0x70, 0x95, + 0xec, 0xb9, 0xd3, 0x5b, 0x03, 0xbd, 0xef, 0xbe, 0x4b, 0xf6, 0x77, 0xbe, 0x4f, 0xd6, 0x6a, 0x63, + 0x8a, 0x41, 0xf1, 0x1c, 0xbd, 0x81, 0xc8, 0x1b, 0xf0, 0x88, 0xc0, 0x47, 0xf3, 0x12, 0xb5, 0x63, + 0x18, 0xbf, 0xc5, 0x18, 0xa7, 0x43, 0x8c, 0x7b, 0x0c, 0x9a, 0x2f, 0xc1, 0xf8, 0x59, 0xb8, 0xfe, + 0x1d, 0xe3, 0xca, 0xa0, 0x30, 0xc9, 0x1d, 0x98, 0x24, 0x24, 0xb5, 0x8e, 0xeb, 0x39, 0x4d, 0x52, + 0xf4, 0xfa, 0xd3, 0xfc, 0xfb, 0xef, 0xd3, 0x44, 0x99, 0xc0, 0xb0, 0x92, 0x8f, 0xca, 0xe7, 0x81, + 0x3c, 0x66, 0xa8, 0xa3, 0x5a, 0x23, 0x86, 0xe1, 0x3e, 0x53, 0xc4, 0x97, 0xcf, 0x7f, 0x12, 0xce, + 0xe1, 0xcf, 0xa4, 0x26, 0x85, 0x35, 0x89, 0xdf, 0x65, 0xca, 0xfe, 0xe1, 0x67, 0x68, 0x2e, 0x4e, + 0xfb, 0x04, 0x21, 0x9d, 0x42, 0x5e, 0x3c, 0x46, 0x9e, 0x87, 0xda, 0x6e, 0xd5, 0x6c, 0x44, 0xa9, + 0x17, 0xba, 0x4d, 0xcf, 0xfe, 0xda, 0x0f, 0x45, 0x2f, 0xde, 0xa1, 0xc8, 0x42, 0xa3, 0x91, 0x3f, + 0x80, 0x47, 0x23, 0xa2, 0x62, 0x00, 0xce, 0xcf, 0x33, 0xce, 0x73, 0x5d, 0x91, 0x81, 0x69, 0x77, + 0x81, 0x8f, 0xfb, 0xbe, 0x1c, 0x80, 0xf3, 0x1f, 0x32, 0x4e, 0x9d, 0x61, 0xb9, 0x4b, 0x31, 0xe3, + 0x5d, 0x98, 0x7a, 0x0d, 0xb5, 0x0f, 0x1d, 0x97, 0x6d, 0x8d, 0x0c, 0x40, 0xf7, 0x05, 0x46, 0x37, + 0xc9, 0x80, 0x64, 0xaf, 0x04, 0x73, 0xdd, 0x82, 0xd4, 0x91, 0x59, 0x43, 0x03, 0x50, 0x7c, 0x91, + 0x51, 0x8c, 0x62, 0x79, 0x0c, 0x2d, 0x40, 0xe6, 0xd8, 0x61, 0xcb, 0x52, 0x3c, 0xfc, 0x4b, 0x0c, + 0x9e, 0xe6, 0x18, 0x46, 0xd1, 0x72, 0x5a, 0x9d, 0x06, 0x5e, 0xb3, 0xe2, 0x29, 0xbe, 0xcc, 0x29, + 0x38, 0x86, 0x51, 0x9c, 0xc1, 0xac, 0x6f, 0x71, 0x0a, 0x37, 0x64, 0xcf, 0x17, 0x20, 0xed, 0xd8, + 0x8d, 0x53, 0xc7, 0x1e, 0x44, 0x89, 0xaf, 0x30, 0x06, 0x60, 0x10, 0x4c, 0x70, 0x1b, 0xc6, 0x06, + 0x75, 0xc4, 0x6f, 0xfc, 0x90, 0xa7, 0x07, 0xf7, 0xc0, 0x1d, 0x98, 0xe4, 0x05, 0xca, 0x72, 0xec, + 0x01, 0x28, 0xfe, 0x31, 0xa3, 0x98, 0x08, 0xc1, 0xd8, 0x65, 0x78, 0xc8, 0xf5, 0x8e, 0xd1, 0x20, + 0x24, 0x5f, 0xe5, 0x97, 0xc1, 0x20, 0xcc, 0x94, 0x87, 0xc8, 0xae, 0x9d, 0x0c, 0xc6, 0xf0, 0x35, + 0x6e, 0x4a, 0x8e, 0xc1, 0x14, 0x25, 0x18, 0x6f, 0x9a, 0x6d, 0xf7, 0xc4, 0x6c, 0x0c, 0xe4, 0x8e, + 0xdf, 0x64, 0x1c, 0x19, 0x1f, 0xc4, 0x2c, 0xd2, 0xb1, 0xcf, 0x42, 0xf3, 0x5b, 0xdc, 0x22, 0x21, + 0x18, 0x4b, 0x3d, 0xd7, 0x23, 0x1b, 0x50, 0x67, 0x61, 0xfb, 0x6d, 0x9e, 0x7a, 0x14, 0xbb, 0x1d, + 0x66, 0xbc, 0x0d, 0x63, 0xae, 0xf5, 0xe9, 0x81, 0x68, 0xfe, 0x09, 0xf7, 0x34, 0x01, 0x60, 0xf0, + 0x3d, 0x78, 0x2c, 0x72, 0x99, 0x18, 0x80, 0xec, 0x9f, 0x32, 0xb2, 0x99, 0x88, 0xa5, 0x82, 0x95, + 0x84, 0xb3, 0x52, 0xfe, 0x33, 0x5e, 0x12, 0x90, 0xc4, 0xb5, 0x8b, 0x6f, 0x14, 0x5c, 0xf3, 0xe8, + 0x6c, 0x56, 0xfb, 0xe7, 0xdc, 0x6a, 0x14, 0x2b, 0x58, 0x6d, 0x1f, 0x66, 0x18, 0xe3, 0xd9, 0xfc, + 0xfa, 0x75, 0x5e, 0x58, 0x29, 0xfa, 0x40, 0xf4, 0xee, 0xa7, 0x60, 0xd6, 0x37, 0x27, 0xef, 0x48, + 0xdd, 0x6a, 0xd3, 0x6c, 0x0d, 0xc0, 0xfc, 0x3b, 0x8c, 0x99, 0x57, 0x7c, 0xbf, 0xa5, 0x75, 0xb7, + 0xcd, 0x16, 0x26, 0x7f, 0x19, 0xb2, 0x9c, 0xbc, 0x63, 0xb7, 0x51, 0xcd, 0x39, 0xb6, 0xad, 0x4f, + 0xa3, 0xfa, 0x00, 0xd4, 0xdf, 0x90, 0x5c, 0x75, 0x10, 0x82, 0x63, 0xe6, 0x4d, 0xd0, 0xfc, 0x5e, + 0xa5, 0x6a, 0x35, 0x5b, 0x4e, 0xdb, 0x8b, 0x61, 0xfc, 0x17, 0xdc, 0x53, 0x3e, 0x6e, 0x93, 0xc0, + 0xf2, 0x65, 0x98, 0x20, 0x87, 0x83, 0x86, 0xe4, 0xef, 0x32, 0xa2, 0xf1, 0x00, 0xc5, 0x0a, 0x47, + 0xcd, 0x69, 0xb6, 0xcc, 0xf6, 0x20, 0xf5, 0xef, 0x5f, 0xf2, 0xc2, 0xc1, 0x20, 0xac, 0x70, 0x78, + 0xa7, 0x2d, 0x84, 0x57, 0xfb, 0x01, 0x18, 0xbe, 0xc9, 0x0b, 0x07, 0xc7, 0x30, 0x0a, 0xde, 0x30, + 0x0c, 0x40, 0xf1, 0xaf, 0x38, 0x05, 0xc7, 0x60, 0x8a, 0x4f, 0x04, 0x0b, 0x6d, 0x1b, 0x1d, 0x5b, + 0xae, 0xd7, 0xa6, 0x7d, 0x70, 0x7f, 0xaa, 0xdf, 0xfb, 0xa1, 0xd8, 0x84, 0x19, 0x21, 0x68, 0xfe, + 0x2e, 0x4c, 0x4a, 0x2d, 0x86, 0x1e, 0xf7, 0xce, 0x42, 0xf6, 0x2f, 0xfd, 0x98, 0x15, 0x23, 0xb1, + 0xc3, 0xc8, 0x6f, 0x61, 0xbf, 0x8b, 0x7d, 0x40, 0x3c, 0xd9, 0x67, 0x7e, 0xec, 0xbb, 0x5e, 0x68, + 0x03, 0xf2, 0x1b, 0x30, 0x2e, 0xf4, 0x00, 0xf1, 0x54, 0x7f, 0x99, 0x51, 0x65, 0xc2, 0x2d, 0x40, + 0x7e, 0x0d, 0x92, 0x78, 0x3d, 0x8f, 0x87, 0xff, 0x15, 0x06, 0x27, 0xe2, 0xf9, 0xe7, 0x20, 0xc5, + 0xd7, 0xf1, 0x78, 0xe8, 0x2f, 0x33, 0xa8, 0x0f, 0xc1, 0x70, 0xbe, 0x86, 0xc7, 0xc3, 0xff, 0x2a, + 0x87, 0x73, 0x08, 0x86, 0x0f, 0x6e, 0xc2, 0xb7, 0xff, 0x7a, 0x92, 0xd5, 0x61, 0x6e, 0xbb, 0xdb, + 0x30, 0xca, 0x16, 0xef, 0x78, 0xf4, 0xaf, 0xb0, 0x93, 0x73, 0x44, 0xfe, 0x06, 0x0c, 0x0f, 0x68, + 0xf0, 0xbf, 0xc1, 0xa0, 0x54, 0x3e, 0x5f, 0x82, 0x74, 0x68, 0xc1, 0x8e, 0x87, 0xff, 0x4d, 0x06, + 0x0f, 0xa3, 0xb0, 0xea, 0x6c, 0xc1, 0x8e, 0x27, 0xf8, 0x5b, 0x5c, 0x75, 0x86, 0xc0, 0x66, 0xe3, + 0x6b, 0x75, 0x3c, 0xfa, 0x6f, 0x73, 0xab, 0x73, 0x48, 0xfe, 0x05, 0x18, 0xf3, 0xeb, 0x6f, 0x3c, + 0xfe, 0xef, 0x30, 0x7c, 0x80, 0xc1, 0x16, 0x08, 0xd5, 0xff, 0x78, 0x8a, 0xbf, 0xcb, 0x2d, 0x10, + 0x42, 0xe1, 0x34, 0x92, 0xd7, 0xf4, 0x78, 0xa6, 0x5f, 0xe5, 0x69, 0x24, 0x2d, 0xe9, 0xd8, 0x9b, + 0xa4, 0x0c, 0xc6, 0x53, 0xfc, 0x3d, 0xee, 0x4d, 0x22, 0x8f, 0xd5, 0x90, 0x17, 0xc9, 0x78, 0x8e, + 0x7f, 0xc0, 0xd5, 0x90, 0xd6, 0xc8, 0xfc, 0x2e, 0xe8, 0xdd, 0x0b, 0x64, 0x3c, 0xdf, 0xe7, 0x18, + 0xdf, 0x54, 0xd7, 0xfa, 0x98, 0x7f, 0x09, 0x66, 0xa2, 0x17, 0xc7, 0x78, 0xd6, 0x5f, 0xfb, 0xb1, + 0x74, 0x3b, 0x13, 0x5e, 0x1b, 0xf3, 0xfb, 0x41, 0x95, 0x0d, 0x2f, 0x8c, 0xf1, 0xb4, 0x9f, 0xff, + 0xb1, 0x58, 0x68, 0xc3, 0xeb, 0x62, 0xbe, 0x00, 0x10, 0xac, 0x49, 0xf1, 0x5c, 0x5f, 0x60, 0x5c, + 0x21, 0x10, 0x4e, 0x0d, 0xb6, 0x24, 0xc5, 0xe3, 0xbf, 0xc8, 0x53, 0x83, 0x21, 0x70, 0x6a, 0xf0, + 0xd5, 0x28, 0x1e, 0xfd, 0x25, 0x9e, 0x1a, 0x1c, 0x92, 0xbf, 0x0d, 0x29, 0xbb, 0xd3, 0x68, 0xe0, + 0xd8, 0xd2, 0xfb, 0xbf, 0x46, 0x94, 0xfd, 0x1f, 0x3f, 0x61, 0x60, 0x0e, 0xc8, 0xaf, 0xc1, 0x30, + 0x6a, 0x1e, 0xa2, 0x7a, 0x1c, 0xf2, 0x7f, 0xfe, 0x84, 0xd7, 0x13, 0x2c, 0x9d, 0x7f, 0x01, 0x80, + 0xde, 0x4c, 0x93, 0xa7, 0x44, 0x31, 0xd8, 0xff, 0xf5, 0x13, 0xf6, 0x86, 0x42, 0x00, 0x09, 0x08, + 0xe8, 0xfb, 0x0e, 0xfd, 0x09, 0x7e, 0x28, 0x12, 0x90, 0x1b, 0xf0, 0x5b, 0x30, 0xfa, 0x8a, 0xeb, + 0xd8, 0x9e, 0x79, 0x1c, 0x87, 0xfe, 0xdf, 0x0c, 0xcd, 0xe5, 0xb1, 0xc1, 0x9a, 0x4e, 0x1b, 0x79, + 0xe6, 0xb1, 0x1b, 0x87, 0xfd, 0x3f, 0x0c, 0xeb, 0x03, 0x30, 0xb8, 0x66, 0xba, 0xde, 0x20, 0xd7, + 0xfd, 0x7f, 0x39, 0x98, 0x03, 0xb0, 0xd2, 0xf8, 0xf3, 0xab, 0xe8, 0x34, 0x0e, 0xfb, 0x23, 0xae, + 0x34, 0x93, 0xcf, 0x3f, 0x07, 0x63, 0xf8, 0x23, 0x7d, 0x6b, 0x27, 0x06, 0xfc, 0x47, 0x0c, 0x1c, + 0x20, 0xf0, 0x99, 0x5d, 0xaf, 0xee, 0x59, 0xf1, 0xc6, 0xfe, 0x7f, 0xcc, 0xd3, 0x5c, 0x3e, 0x5f, + 0x80, 0xb4, 0xeb, 0xd5, 0xeb, 0x1d, 0xd6, 0xd1, 0xc4, 0xc0, 0xff, 0xf8, 0x27, 0xfe, 0x4d, 0xae, + 0x8f, 0x29, 0x5e, 0x8c, 0xde, 0xac, 0x83, 0x3b, 0xce, 0x1d, 0x87, 0x6e, 0xd3, 0xc1, 0xf7, 0x1b, + 0x70, 0xa3, 0xe7, 0xae, 0x1b, 0x5e, 0x44, 0xae, 0xd4, 0x9c, 0xe6, 0xa1, 0xe3, 0x5e, 0x39, 0x74, + 0xbc, 0x93, 0x2b, 0xde, 0x09, 0xc2, 0x63, 0x6c, 0xff, 0x2d, 0x89, 0x3f, 0xcf, 0x9e, 0x6d, 0xd3, + 0x8e, 0x3c, 0x8f, 0xad, 0x58, 0x58, 0xef, 0x0a, 0xd9, 0x12, 0xd7, 0xcf, 0xc3, 0x08, 0xb9, 0x92, + 0xab, 0xe4, 0xb1, 0x93, 0x52, 0x4c, 0xde, 0x7f, 0x67, 0x7e, 0xc8, 0x60, 0x63, 0xfe, 0xec, 0x0a, + 0xd9, 0xb3, 0x4c, 0x08, 0xb3, 0x2b, 0xfe, 0xec, 0x35, 0xba, 0x6d, 0x29, 0xcc, 0x5e, 0xf3, 0x67, + 0x57, 0xc9, 0x06, 0xa6, 0x2a, 0xcc, 0xae, 0xfa, 0xb3, 0x6b, 0x64, 0x93, 0x7e, 0x5c, 0x98, 0x5d, + 0xf3, 0x67, 0xaf, 0x93, 0xad, 0xf9, 0xa4, 0x30, 0x7b, 0xdd, 0x9f, 0xbd, 0x41, 0x76, 0xe5, 0xa7, + 0x84, 0xd9, 0x1b, 0xfe, 0xec, 0x4d, 0xb2, 0x1b, 0xaf, 0x0b, 0xb3, 0x37, 0xfd, 0xd9, 0x5b, 0xe4, + 0x15, 0x93, 0x51, 0x61, 0xf6, 0x96, 0x3e, 0x07, 0xa3, 0xf4, 0xca, 0x97, 0xc9, 0xa3, 0xdb, 0x49, + 0x36, 0xcd, 0x07, 0x83, 0xf9, 0xab, 0xe4, 0x75, 0x92, 0x11, 0x71, 0xfe, 0x6a, 0x30, 0xbf, 0x42, + 0x5e, 0xac, 0xd6, 0xc4, 0xf9, 0x95, 0x60, 0xfe, 0x5a, 0x76, 0x9c, 0xbc, 0x52, 0x23, 0xcc, 0x5f, + 0x0b, 0xe6, 0x57, 0xb3, 0x13, 0x38, 0x98, 0xc5, 0xf9, 0xd5, 0x60, 0x7e, 0x2d, 0x3b, 0x79, 0x41, + 0x59, 0xc8, 0x88, 0xf3, 0x6b, 0xb9, 0x5f, 0x22, 0xee, 0xb5, 0x03, 0xf7, 0xce, 0x88, 0xee, 0xf5, + 0x1d, 0x3b, 0x23, 0x3a, 0xd6, 0x77, 0xe9, 0x8c, 0xe8, 0x52, 0xdf, 0x99, 0x33, 0xa2, 0x33, 0x7d, + 0x37, 0xce, 0x88, 0x6e, 0xf4, 0x1d, 0x38, 0x23, 0x3a, 0xd0, 0x77, 0xdd, 0x8c, 0xe8, 0x3a, 0xdf, + 0x69, 0x33, 0xa2, 0xd3, 0x7c, 0x77, 0xcd, 0x88, 0xee, 0xf2, 0x1d, 0x95, 0x95, 0x1c, 0x15, 0xb8, + 0x28, 0x2b, 0xb9, 0x28, 0x70, 0x4e, 0x56, 0x72, 0x4e, 0xe0, 0x96, 0xac, 0xe4, 0x96, 0xc0, 0x21, + 0x59, 0xc9, 0x21, 0x81, 0x2b, 0xb2, 0x92, 0x2b, 0x02, 0x27, 0xb0, 0x1c, 0x33, 0x50, 0x2b, 0x22, + 0xc7, 0xd4, 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, + 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xda, 0x37, 0xc7, 0xd4, 0xfe, 0x39, 0xa6, + 0xc6, 0xe4, 0x98, 0x1a, 0x93, 0x63, 0x6a, 0x4c, 0x8e, 0xa9, 0x31, 0x39, 0xa6, 0xc6, 0xe4, 0x98, + 0xda, 0x33, 0xc7, 0x02, 0xf7, 0xce, 0x88, 0xee, 0x8d, 0xcc, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, + 0x72, 0x4c, 0xed, 0x91, 0x63, 0x6a, 0x8f, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x23, 0xc7, 0xd4, + 0x1e, 0x39, 0xa6, 0xf6, 0xca, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0x3d, 0x73, 0x4c, 0xed, 0x99, 0x63, + 0x6a, 0xcf, 0x1c, 0x53, 0x7b, 0xe6, 0x98, 0x1a, 0xce, 0xb1, 0x7f, 0xad, 0x82, 0x4e, 0x73, 0x6c, + 0x97, 0xbc, 0xfc, 0xc3, 0x5c, 0x31, 0x27, 0x65, 0xda, 0x08, 0x76, 0x9d, 0x16, 0xb8, 0x64, 0x4e, + 0xca, 0x35, 0x71, 0x7e, 0xc5, 0x9f, 0xe7, 0xd9, 0x26, 0xce, 0x5f, 0xf3, 0xe7, 0x79, 0xbe, 0x89, + 0xf3, 0xab, 0xfe, 0x3c, 0xcf, 0x38, 0x71, 0x7e, 0xcd, 0x9f, 0xe7, 0x39, 0x27, 0xce, 0x5f, 0xf7, + 0xe7, 0x79, 0xd6, 0x89, 0xf3, 0x37, 0xfc, 0x79, 0x9e, 0x77, 0xe2, 0xfc, 0x4d, 0x7f, 0x9e, 0x67, + 0x9e, 0x38, 0x7f, 0x4b, 0xbf, 0x20, 0xe7, 0x1e, 0x17, 0xf0, 0x5d, 0x7b, 0x41, 0xce, 0x3e, 0x49, + 0xe2, 0x6a, 0x20, 0xc1, 0xf3, 0x4f, 0x92, 0x58, 0x09, 0x24, 0x78, 0x06, 0x4a, 0x12, 0xd7, 0x72, + 0x9f, 0x25, 0xee, 0xb3, 0x65, 0xf7, 0xcd, 0x4a, 0xee, 0x4b, 0x84, 0x5c, 0x37, 0x2b, 0xb9, 0x2e, + 0x11, 0x72, 0xdb, 0xac, 0xe4, 0xb6, 0x44, 0xc8, 0x65, 0xb3, 0x92, 0xcb, 0x12, 0x21, 0x77, 0xcd, + 0x4a, 0xee, 0x4a, 0x84, 0x5c, 0x35, 0x2b, 0xb9, 0x2a, 0x11, 0x72, 0xd3, 0xac, 0xe4, 0xa6, 0x44, + 0xc8, 0x45, 0xb3, 0x92, 0x8b, 0x12, 0x21, 0xf7, 0xcc, 0x4a, 0xee, 0x49, 0x84, 0x5c, 0x73, 0x5e, + 0x76, 0x4d, 0x22, 0xec, 0x96, 0xf3, 0xb2, 0x5b, 0x12, 0x61, 0x97, 0x9c, 0x97, 0x5d, 0x92, 0x08, + 0xbb, 0xe3, 0xbc, 0xec, 0x8e, 0x44, 0xd8, 0x15, 0x7f, 0x96, 0xe0, 0x1d, 0xe1, 0x9e, 0xd7, 0xee, + 0xd4, 0xbc, 0xf7, 0xd4, 0x11, 0x2e, 0x0b, 0xed, 0x43, 0x7a, 0x45, 0x5f, 0x22, 0x0d, 0x6b, 0xb8, + 0xe3, 0x94, 0x56, 0xb0, 0x65, 0xa1, 0xb1, 0x08, 0x21, 0xec, 0x68, 0xc4, 0xea, 0x7b, 0xea, 0x0d, + 0x97, 0x85, 0x36, 0x23, 0x5e, 0xbf, 0x9b, 0x1f, 0x78, 0xc7, 0xf6, 0x76, 0x82, 0x77, 0x6c, 0xcc, + 0xfc, 0x67, 0xed, 0xd8, 0x16, 0xe3, 0x4d, 0xee, 0x1b, 0x7b, 0x31, 0xde, 0xd8, 0x5d, 0xab, 0xce, + 0xa0, 0x1d, 0xdc, 0x62, 0xbc, 0x69, 0x7d, 0xa3, 0xbe, 0xbf, 0xfd, 0x16, 0x8b, 0x60, 0x03, 0xb5, + 0x22, 0x22, 0xf8, 0xac, 0xfd, 0xd6, 0xb2, 0x50, 0x4a, 0xce, 0x1a, 0xc1, 0xea, 0x99, 0x23, 0xf8, + 0xac, 0x9d, 0xd7, 0xb2, 0x50, 0x5e, 0xce, 0x1c, 0xc1, 0x1f, 0x40, 0x3f, 0xc4, 0x22, 0x38, 0x30, + 0xff, 0x59, 0xfb, 0xa1, 0xc5, 0x78, 0x93, 0x47, 0x46, 0xb0, 0x7a, 0x86, 0x08, 0x1e, 0xa4, 0x3f, + 0x5a, 0x8c, 0x37, 0x6d, 0x74, 0x04, 0xbf, 0xe7, 0x6e, 0xe6, 0xcb, 0x0a, 0x4c, 0x55, 0xac, 0x7a, + 0xb9, 0x79, 0x88, 0xea, 0x75, 0x54, 0x67, 0x76, 0x5c, 0x16, 0x2a, 0x41, 0x0f, 0x57, 0x7f, 0xfb, + 0x9d, 0xf9, 0xc0, 0xc2, 0x6b, 0x90, 0xa2, 0x36, 0x5d, 0x5e, 0xce, 0xde, 0x57, 0x62, 0x2a, 0x9c, + 0x2f, 0xaa, 0x5f, 0xe4, 0xb0, 0xab, 0xcb, 0xd9, 0xff, 0xa4, 0x84, 0xaa, 0x9c, 0x3f, 0x9c, 0xfb, + 0x55, 0xa2, 0xa1, 0xfd, 0x9e, 0x35, 0xbc, 0x32, 0x90, 0x86, 0x21, 0xdd, 0x1e, 0xef, 0xd2, 0x2d, + 0xa4, 0x55, 0x07, 0x26, 0x2b, 0x56, 0xbd, 0x42, 0xbe, 0xd2, 0x3b, 0x88, 0x4a, 0x54, 0x46, 0xaa, + 0x07, 0xcb, 0x42, 0x58, 0x86, 0x11, 0x7e, 0x48, 0x8b, 0x35, 0x22, 0x67, 0xe1, 0xd3, 0xda, 0xc2, + 0x69, 0x17, 0x7b, 0x9d, 0x36, 0xa8, 0xec, 0xfe, 0x09, 0x17, 0x7b, 0x9d, 0x30, 0xc8, 0x21, 0xff, + 0x54, 0x6f, 0xf0, 0xc5, 0x99, 0xbe, 0x85, 0xa3, 0x9f, 0x87, 0xc4, 0x26, 0x7d, 0x43, 0x38, 0x53, + 0xcc, 0x60, 0xa5, 0xbe, 0xf3, 0xce, 0x7c, 0xf2, 0xa0, 0x63, 0xd5, 0x8d, 0xc4, 0x66, 0x5d, 0xbf, + 0x0b, 0xc3, 0x9f, 0x64, 0x5f, 0x8c, 0xc3, 0x02, 0xab, 0x4c, 0xe0, 0xa3, 0x31, 0x5b, 0x4c, 0x84, + 0x7a, 0xe9, 0xc0, 0xb2, 0xbd, 0xab, 0x2b, 0x37, 0x0d, 0x4a, 0x91, 0xfb, 0xf3, 0x00, 0xf4, 0x9c, + 0xeb, 0xa6, 0x7b, 0xa2, 0x57, 0x38, 0x33, 0x3d, 0xf5, 0xcd, 0xef, 0xbc, 0x33, 0xbf, 0x3a, 0x08, + 0xeb, 0xb3, 0x75, 0xd3, 0x3d, 0x79, 0xd6, 0x3b, 0x6d, 0xa1, 0xa5, 0xe2, 0xa9, 0x87, 0x5c, 0xce, + 0xde, 0xe2, 0xab, 0x1e, 0xbb, 0xae, 0x6c, 0xe8, 0xba, 0x52, 0xc2, 0x35, 0x6d, 0x88, 0xd7, 0xb4, + 0xfc, 0xb0, 0xd7, 0xf3, 0x06, 0x5f, 0x24, 0x24, 0x4b, 0xaa, 0x71, 0x96, 0x54, 0xdf, 0xab, 0x25, + 0x5b, 0xbc, 0x3e, 0x4a, 0xd7, 0xaa, 0xf6, 0xbb, 0x56, 0xf5, 0xbd, 0x5c, 0xeb, 0x9f, 0xd0, 0x6c, + 0xf5, 0xf3, 0xe9, 0xc0, 0xa6, 0x6f, 0x27, 0xfe, 0x7c, 0xed, 0x05, 0xbd, 0xaf, 0x5d, 0x40, 0x3e, + 0x79, 0xff, 0xad, 0x79, 0x25, 0xf7, 0xe5, 0x04, 0xbf, 0x72, 0x9a, 0x48, 0x0f, 0x77, 0xe5, 0x3f, + 0x2f, 0x3d, 0xd5, 0x07, 0x61, 0xa1, 0x2f, 0x29, 0x30, 0xd3, 0x55, 0xc9, 0xa9, 0x99, 0xde, 0xdf, + 0x72, 0x6e, 0x9f, 0xb5, 0x9c, 0x33, 0x05, 0x7f, 0x57, 0x81, 0x73, 0x52, 0x79, 0xa5, 0xea, 0x5d, + 0x91, 0xd4, 0x7b, 0xb4, 0xfb, 0x4c, 0x44, 0x30, 0xa4, 0x5d, 0xd8, 0xbd, 0x12, 0x20, 0xc4, 0xec, + 0xfb, 0x7d, 0x55, 0xf2, 0xfb, 0x79, 0x1f, 0x10, 0x61, 0x2e, 0x1e, 0x01, 0x4c, 0x6d, 0x07, 0x92, + 0xfb, 0x6d, 0x84, 0xf4, 0x39, 0x48, 0xec, 0xb4, 0x99, 0x86, 0x13, 0x14, 0xbf, 0xd3, 0x2e, 0xb6, + 0x4d, 0xbb, 0x76, 0x62, 0x24, 0x76, 0xda, 0xfa, 0x45, 0x50, 0x0b, 0xec, 0xa7, 0x07, 0xd2, 0x2b, + 0x93, 0x54, 0xa0, 0x60, 0xd7, 0x99, 0x04, 0x9e, 0xd3, 0xe7, 0x20, 0xb9, 0x85, 0xcc, 0x23, 0xa6, + 0x04, 0x50, 0x19, 0x3c, 0x62, 0x90, 0x71, 0x76, 0xc2, 0x97, 0x21, 0xc5, 0x89, 0xf5, 0x4b, 0x18, + 0x71, 0xe4, 0xb1, 0xd3, 0x32, 0x04, 0x56, 0x87, 0xad, 0x5c, 0x64, 0x56, 0xbf, 0x0c, 0xc3, 0x86, + 0x75, 0x7c, 0xe2, 0xb1, 0x93, 0x77, 0x8b, 0xd1, 0xe9, 0xdc, 0x3d, 0x18, 0xf3, 0x35, 0x7a, 0x9f, + 0xa9, 0xd7, 0xe9, 0xa5, 0xe9, 0xb3, 0xe1, 0xf5, 0x84, 0xef, 0x5b, 0xd2, 0x21, 0xfd, 0x02, 0xa4, + 0xf6, 0xbc, 0x76, 0x50, 0xf4, 0x79, 0x47, 0xea, 0x8f, 0xe6, 0x7e, 0x49, 0x81, 0xd4, 0x3a, 0x42, + 0x2d, 0x62, 0xf0, 0xa7, 0x20, 0xb9, 0xee, 0xbc, 0x6e, 0x33, 0x05, 0xa7, 0x98, 0x45, 0xf1, 0x34, + 0xb3, 0x29, 0x99, 0xd6, 0x9f, 0x0a, 0xdb, 0x7d, 0xda, 0xb7, 0x7b, 0x48, 0x8e, 0xd8, 0x3e, 0x27, + 0xd8, 0x9e, 0x39, 0x10, 0x0b, 0x75, 0xd9, 0xff, 0x06, 0xa4, 0x43, 0x67, 0xd1, 0x17, 0x98, 0x1a, + 0x09, 0x19, 0x18, 0xb6, 0x15, 0x96, 0xc8, 0x21, 0x18, 0x17, 0x4e, 0x8c, 0xa1, 0x21, 0x13, 0xf7, + 0x80, 0x12, 0x33, 0x2f, 0x8a, 0x66, 0x8e, 0x16, 0x65, 0xa6, 0x5e, 0xa6, 0x36, 0x22, 0xe6, 0xbe, + 0x44, 0x83, 0xb3, 0xb7, 0x13, 0xf1, 0xe7, 0xdc, 0x30, 0xa8, 0x15, 0xab, 0x91, 0x7b, 0x0e, 0x80, + 0xa6, 0x7c, 0xd9, 0xee, 0x34, 0xa5, 0xac, 0x9b, 0xe0, 0x06, 0xde, 0x3f, 0x41, 0xfb, 0xc8, 0x25, + 0x22, 0x62, 0x3f, 0x85, 0x0b, 0x0c, 0xd0, 0x14, 0x23, 0xf8, 0x67, 0x62, 0xf1, 0x91, 0x9d, 0x18, + 0x16, 0xcd, 0x52, 0xd1, 0x7b, 0xc8, 0x2b, 0xd8, 0x8e, 0x77, 0x82, 0xda, 0x12, 0x62, 0x45, 0xbf, + 0x26, 0x24, 0xec, 0xc4, 0xca, 0xe3, 0x3e, 0xa2, 0x27, 0xe8, 0x5a, 0xee, 0xeb, 0x44, 0x41, 0xdc, + 0x0a, 0x74, 0x5d, 0xa0, 0x3a, 0xc0, 0x05, 0xea, 0xd7, 0x85, 0xfe, 0xad, 0x8f, 0x9a, 0xd2, 0xad, + 0xe5, 0x2d, 0xe1, 0x3e, 0xa7, 0xbf, 0xb2, 0xe2, 0x3d, 0x26, 0xb7, 0x29, 0x57, 0xf9, 0x99, 0x58, + 0x95, 0x7b, 0x74, 0xb7, 0x67, 0xb5, 0xa9, 0x3a, 0xa8, 0x4d, 0x7f, 0xdf, 0xef, 0x38, 0xe8, 0x8f, + 0x38, 0x90, 0xdf, 0x0c, 0xd1, 0x3f, 0x1a, 0xeb, 0xfb, 0xbc, 0x52, 0xf2, 0x55, 0x5d, 0x1d, 0xd4, + 0xfd, 0xf9, 0x44, 0xb1, 0xe8, 0xab, 0x7b, 0xe3, 0x0c, 0x21, 0x90, 0x4f, 0x94, 0x4a, 0x7e, 0xd9, + 0x4e, 0x7d, 0xf6, 0xad, 0x79, 0xe5, 0x6b, 0x6f, 0xcd, 0x0f, 0xe5, 0x7e, 0x53, 0x81, 0x29, 0x26, + 0x19, 0x0a, 0xdc, 0x67, 0x25, 0xe5, 0x1f, 0xe1, 0x35, 0x23, 0xca, 0x02, 0x3f, 0xb5, 0xe0, 0xfd, + 0x96, 0x02, 0xd9, 0x2e, 0x5d, 0xb9, 0xbd, 0x97, 0x07, 0x52, 0x39, 0xaf, 0x94, 0x7f, 0xf6, 0x36, + 0xbf, 0x07, 0xc3, 0xfb, 0x56, 0x13, 0xb5, 0xf1, 0x4a, 0x80, 0x3f, 0x50, 0x95, 0xf9, 0xc3, 0x1c, + 0x3a, 0xc4, 0xe7, 0xa8, 0x72, 0xc2, 0xdc, 0x8a, 0x9e, 0x85, 0xe4, 0xba, 0xe9, 0x99, 0x44, 0x83, + 0x8c, 0x5f, 0x5f, 0x4d, 0xcf, 0xcc, 0x5d, 0x83, 0xcc, 0xf6, 0x29, 0x79, 0x85, 0xa6, 0x4e, 0x5e, + 0x0f, 0x11, 0xbb, 0x3f, 0xde, 0xaf, 0x5e, 0x5d, 0x1c, 0x4e, 0xd5, 0xb5, 0xfb, 0x4a, 0x3e, 0x49, + 0xf4, 0x79, 0x0d, 0x26, 0x76, 0xb0, 0xda, 0x04, 0x47, 0x60, 0x17, 0x40, 0xd9, 0x16, 0x1b, 0xa1, + 0x30, 0xab, 0xa1, 0x6c, 0x4b, 0xed, 0xa3, 0xea, 0x9b, 0x47, 0x6a, 0xdb, 0x54, 0xbf, 0x6d, 0x5b, + 0x4c, 0xa6, 0x26, 0xb4, 0xa9, 0xc5, 0x64, 0x0a, 0xb4, 0x71, 0x76, 0xde, 0xff, 0xa0, 0x82, 0x46, + 0x5b, 0x9d, 0x75, 0x74, 0x64, 0xd9, 0x96, 0xd7, 0xdd, 0xaf, 0xfa, 0x1a, 0xeb, 0x2f, 0xc0, 0x18, + 0x36, 0xe9, 0x06, 0xfb, 0xe9, 0x2d, 0x6c, 0xfa, 0x8b, 0xac, 0x45, 0x91, 0x28, 0xd8, 0x00, 0x09, + 0x9d, 0x00, 0xa3, 0x6f, 0x80, 0x5a, 0xa9, 0x6c, 0xb3, 0xc5, 0x6d, 0xb5, 0x2f, 0x94, 0xbd, 0x81, + 0xc3, 0x8e, 0xd8, 0x98, 0x7b, 0x6c, 0x60, 0x02, 0x7d, 0x15, 0x12, 0x95, 0x6d, 0xd6, 0xf0, 0x5e, + 0x1a, 0x84, 0xc6, 0x48, 0x54, 0xb6, 0x67, 0xff, 0x8d, 0x02, 0xe3, 0xc2, 0xa8, 0x9e, 0x83, 0x0c, + 0x1d, 0x08, 0x5d, 0xee, 0x88, 0x21, 0x8c, 0x71, 0x9d, 0x13, 0xef, 0x51, 0xe7, 0xd9, 0x02, 0x4c, + 0x4a, 0xe3, 0xfa, 0x12, 0xe8, 0xe1, 0x21, 0xa6, 0x04, 0xfd, 0xd9, 0xa2, 0x88, 0x99, 0xdc, 0x13, + 0x00, 0x81, 0x5d, 0xfd, 0x5f, 0xdb, 0xa9, 0x94, 0xf7, 0xf6, 0xcb, 0xeb, 0x9a, 0x92, 0xfb, 0xa6, + 0x02, 0x69, 0xd6, 0xb6, 0xd6, 0x9c, 0x16, 0xd2, 0x8b, 0xa0, 0x14, 0x58, 0x04, 0x3d, 0x9c, 0xde, + 0x4a, 0x41, 0xbf, 0x02, 0x4a, 0x71, 0x70, 0x57, 0x2b, 0x45, 0x7d, 0x05, 0x94, 0x12, 0x73, 0xf0, + 0x60, 0x9e, 0x51, 0x4a, 0xb9, 0x3f, 0x52, 0x61, 0x3a, 0xdc, 0x46, 0xf3, 0x7a, 0x72, 0x51, 0xbc, + 0x6f, 0xca, 0x8f, 0x5d, 0x5d, 0xb9, 0xb6, 0xba, 0x84, 0xff, 0xf1, 0x43, 0xf2, 0xa2, 0x78, 0x0b, + 0xd5, 0x2d, 0xd2, 0xf5, 0x9a, 0x48, 0x3e, 0x19, 0x9a, 0xed, 0x7a, 0x4d, 0x44, 0x98, 0xed, 0x7a, + 0x4d, 0x44, 0x98, 0xed, 0x7a, 0x4d, 0x44, 0x98, 0xed, 0x7a, 0x14, 0x20, 0xcc, 0x76, 0xbd, 0x26, + 0x22, 0xcc, 0x76, 0xbd, 0x26, 0x22, 0xcc, 0x76, 0xbf, 0x26, 0xc2, 0xa6, 0x7b, 0xbe, 0x26, 0x22, + 0xce, 0x77, 0xbf, 0x26, 0x22, 0xce, 0x77, 0xbf, 0x26, 0x92, 0x4f, 0x7a, 0xed, 0x0e, 0xea, 0xfd, + 0xd0, 0x41, 0xc4, 0xf7, 0xbb, 0x07, 0x0c, 0x0a, 0xf0, 0x0e, 0x4c, 0xd2, 0xfd, 0x88, 0x92, 0x63, + 0x7b, 0xa6, 0x65, 0xa3, 0xb6, 0xfe, 0x31, 0xc8, 0xd0, 0x21, 0x7a, 0x97, 0x13, 0x75, 0x17, 0x48, + 0xe7, 0x59, 0xb9, 0x15, 0xa4, 0x73, 0x7f, 0x96, 0x84, 0x19, 0x3a, 0x50, 0x31, 0x9b, 0x48, 0x78, + 0xc9, 0xe8, 0xb2, 0xf4, 0x48, 0x69, 0x02, 0xc3, 0x1f, 0xbc, 0x33, 0x4f, 0x47, 0x0b, 0x7e, 0x30, + 0x5d, 0x96, 0x1e, 0x2e, 0x89, 0x72, 0xc1, 0xfa, 0x73, 0x59, 0x7a, 0xf1, 0x48, 0x94, 0xf3, 0x97, + 0x1b, 0x5f, 0x8e, 0xbf, 0x82, 0x24, 0xca, 0xad, 0xfb, 0x51, 0x76, 0x59, 0x7a, 0x19, 0x49, 0x94, + 0x2b, 0xfb, 0xf1, 0x76, 0x59, 0x7a, 0xf4, 0x24, 0xca, 0x6d, 0xf8, 0x91, 0x77, 0x59, 0x7a, 0x08, + 0x25, 0xca, 0xdd, 0xf1, 0x63, 0xf0, 0xb2, 0xf4, 0xaa, 0x92, 0x28, 0xf7, 0xa2, 0x1f, 0x8d, 0x97, + 0xa5, 0x97, 0x96, 0x44, 0xb9, 0x4d, 0x3f, 0x2e, 0x17, 0xe4, 0xd7, 0x97, 0x44, 0xc1, 0xbb, 0x41, + 0x84, 0x2e, 0xc8, 0x2f, 0x32, 0x89, 0x92, 0x1f, 0x0f, 0x62, 0x75, 0x41, 0x7e, 0xa5, 0x49, 0x94, + 0xdc, 0x0a, 0xa2, 0x76, 0x41, 0x7e, 0x54, 0x26, 0x4a, 0x6e, 0x07, 0xf1, 0xbb, 0x20, 0x3f, 0x34, + 0x13, 0x25, 0x2b, 0x41, 0x24, 0x2f, 0xc8, 0x8f, 0xcf, 0x44, 0xc9, 0x9d, 0x60, 0x0f, 0xfd, 0x0f, + 0xa4, 0xf0, 0x0b, 0xbd, 0x04, 0x95, 0x93, 0xc2, 0x0f, 0x22, 0x42, 0x2f, 0x27, 0x85, 0x1e, 0x44, + 0x84, 0x5d, 0x4e, 0x0a, 0x3b, 0x88, 0x08, 0xb9, 0x9c, 0x14, 0x72, 0x10, 0x11, 0x6e, 0x39, 0x29, + 0xdc, 0x20, 0x22, 0xd4, 0x72, 0x52, 0xa8, 0x41, 0x44, 0x98, 0xe5, 0xa4, 0x30, 0x83, 0x88, 0x10, + 0xcb, 0x49, 0x21, 0x06, 0x11, 0xe1, 0x95, 0x93, 0xc2, 0x0b, 0x22, 0x42, 0xeb, 0x92, 0x1c, 0x5a, + 0x10, 0x15, 0x56, 0x97, 0xe4, 0xb0, 0x82, 0xa8, 0x90, 0x7a, 0x52, 0x0e, 0xa9, 0xb1, 0x07, 0xef, + 0xcc, 0x0f, 0xe3, 0xa1, 0x50, 0x34, 0x5d, 0x92, 0xa3, 0x09, 0xa2, 0x22, 0xe9, 0x92, 0x1c, 0x49, + 0x10, 0x15, 0x45, 0x97, 0xe4, 0x28, 0x82, 0xa8, 0x08, 0x7a, 0x5b, 0x8e, 0xa0, 0xe0, 0x15, 0x9f, + 0x9c, 0xf4, 0x44, 0x31, 0x2e, 0x82, 0xd4, 0x01, 0x22, 0x48, 0x1d, 0x20, 0x82, 0xd4, 0x01, 0x22, + 0x48, 0x1d, 0x20, 0x82, 0xd4, 0x01, 0x22, 0x48, 0x1d, 0x20, 0x82, 0xd4, 0x01, 0x22, 0x48, 0x1d, + 0x24, 0x82, 0xd4, 0x81, 0x22, 0x48, 0xed, 0x15, 0x41, 0x97, 0xe4, 0x17, 0x1e, 0x20, 0xaa, 0x20, + 0x5d, 0x92, 0x9f, 0x7c, 0xc6, 0x87, 0x90, 0x3a, 0x50, 0x08, 0xa9, 0xbd, 0x42, 0xe8, 0x0f, 0x54, + 0x98, 0x16, 0x42, 0x88, 0x3d, 0x1e, 0x7a, 0xbf, 0x2a, 0xd0, 0xf5, 0x01, 0xde, 0xaf, 0x88, 0x8a, + 0xa9, 0xeb, 0x03, 0x3c, 0xa3, 0xee, 0x17, 0x67, 0xdd, 0x55, 0xa8, 0x3c, 0x40, 0x15, 0xda, 0xf0, + 0x63, 0xe8, 0xfa, 0x00, 0xef, 0x5d, 0x74, 0xc7, 0xde, 0xcd, 0x7e, 0x45, 0xe0, 0xc5, 0x81, 0x8a, + 0xc0, 0xe6, 0x40, 0x45, 0xe0, 0x6e, 0xe0, 0xc1, 0x5f, 0x4e, 0xc0, 0xb9, 0xc0, 0x83, 0xf4, 0x13, + 0xf9, 0x89, 0xa4, 0x5c, 0xe8, 0x09, 0x95, 0xce, 0x9f, 0xda, 0x84, 0xdc, 0x98, 0xd8, 0xac, 0xeb, + 0xbb, 0xe2, 0xb3, 0xaa, 0xfc, 0x59, 0x9f, 0xdf, 0x84, 0x3c, 0xce, 0xf6, 0x42, 0x2f, 0x81, 0xba, + 0x59, 0x77, 0x49, 0xb5, 0x88, 0x3a, 0x6d, 0xc9, 0xc0, 0xd3, 0xba, 0x01, 0x23, 0x44, 0xdc, 0x25, + 0xee, 0x7d, 0x2f, 0x27, 0x5e, 0x37, 0x18, 0x53, 0xee, 0x6d, 0x05, 0x2e, 0x08, 0xa1, 0xfc, 0xfe, + 0x3c, 0x31, 0xb8, 0x3d, 0xd0, 0x13, 0x03, 0x21, 0x41, 0x82, 0xa7, 0x07, 0x4f, 0x77, 0x3f, 0xa8, + 0x0e, 0x67, 0x89, 0xfc, 0x24, 0xe1, 0x2f, 0xc2, 0x44, 0x70, 0x05, 0xe4, 0x96, 0x6d, 0x2d, 0x7e, + 0x33, 0x33, 0x2a, 0x35, 0xd7, 0xa4, 0x4d, 0xb4, 0xbe, 0x30, 0x3f, 0x5b, 0x73, 0x79, 0x98, 0xac, + 0x88, 0xdf, 0xe5, 0x89, 0xdb, 0x8b, 0x48, 0xe1, 0xd6, 0xfc, 0xfe, 0x57, 0xe6, 0x87, 0x72, 0x1f, + 0x85, 0x4c, 0xf8, 0xeb, 0x3a, 0x12, 0x70, 0x8c, 0x03, 0xf3, 0xc9, 0x6f, 0x63, 0xe9, 0xbf, 0xaf, + 0xc0, 0x23, 0x61, 0xf1, 0x97, 0x2c, 0xef, 0x64, 0xd3, 0xc6, 0x3d, 0xfd, 0x73, 0x90, 0x42, 0xcc, + 0x71, 0xec, 0xd7, 0x4e, 0xd8, 0x6d, 0x64, 0xa4, 0xf8, 0x12, 0xf9, 0xd7, 0xf0, 0x21, 0xd2, 0x16, + 0x07, 0x3f, 0xed, 0xca, 0xec, 0x53, 0x30, 0x4c, 0xf9, 0x45, 0xbd, 0xc6, 0x25, 0xbd, 0x7e, 0x23, + 0x42, 0x2f, 0x12, 0x47, 0xfa, 0x5d, 0x41, 0xaf, 0xd0, 0xdd, 0x6a, 0xa4, 0xf8, 0x12, 0x0f, 0xbe, + 0x62, 0x0a, 0xf7, 0x7f, 0x24, 0xa2, 0xe2, 0x95, 0x5c, 0x80, 0x54, 0x59, 0x96, 0x89, 0xd6, 0x73, + 0x1d, 0x92, 0x15, 0xa7, 0x4e, 0x7e, 0x87, 0x85, 0xfc, 0x5e, 0x2e, 0x33, 0x32, 0xfb, 0xf1, 0xdc, + 0xcb, 0x90, 0x2a, 0x9d, 0x58, 0x8d, 0x7a, 0x1b, 0xd9, 0xec, 0x91, 0x3d, 0xdb, 0x41, 0xc7, 0x18, + 0xc3, 0x9f, 0xcb, 0x95, 0x60, 0xaa, 0xe2, 0xd8, 0xc5, 0x53, 0x2f, 0x5c, 0x37, 0x96, 0xa4, 0x14, + 0x61, 0x8f, 0x7c, 0xc8, 0x17, 0x40, 0xb0, 0x40, 0x71, 0xf8, 0x3b, 0xef, 0xcc, 0x2b, 0xfb, 0xfe, + 0xf6, 0xf9, 0x36, 0x3c, 0xca, 0xd2, 0xa7, 0x8b, 0x6a, 0x25, 0x8e, 0x6a, 0x8c, 0x3d, 0xa6, 0x0e, + 0xd1, 0x6d, 0x62, 0x3a, 0x3b, 0x92, 0xee, 0xe1, 0x34, 0xc3, 0x4d, 0x51, 0x5f, 0xcd, 0xd4, 0x33, + 0x69, 0x16, 0x49, 0xb7, 0x14, 0x47, 0x27, 0x69, 0xf6, 0x24, 0x8c, 0xf9, 0x73, 0xa1, 0x68, 0x08, + 0x67, 0xca, 0xca, 0x62, 0x0e, 0xd2, 0xa1, 0x84, 0xd5, 0x87, 0x41, 0x29, 0x68, 0x43, 0xf8, 0xbf, + 0xa2, 0xa6, 0xe0, 0xff, 0x4a, 0x5a, 0x62, 0xf1, 0x29, 0x98, 0x94, 0xb6, 0x2f, 0xf1, 0xcc, 0xba, + 0x06, 0xf8, 0xbf, 0xb2, 0x96, 0x9e, 0x4d, 0x7e, 0xf6, 0x1f, 0xcd, 0x0d, 0x2d, 0xde, 0x06, 0xbd, + 0x7b, 0xa3, 0x53, 0x1f, 0x81, 0x44, 0x01, 0x53, 0x3e, 0x0a, 0x89, 0x62, 0x51, 0x53, 0x66, 0x27, + 0xff, 0xda, 0x17, 0x2f, 0xa4, 0x8b, 0xe4, 0xbb, 0xc8, 0xf7, 0x90, 0x57, 0x2c, 0x32, 0xf0, 0xf3, + 0xf0, 0x48, 0xe4, 0x46, 0x29, 0xc6, 0x97, 0x4a, 0x14, 0xbf, 0xbe, 0xde, 0x85, 0x5f, 0x5f, 0x27, + 0x78, 0x25, 0xcf, 0x1f, 0x38, 0x17, 0xf4, 0x88, 0x6d, 0xc9, 0x6c, 0x3d, 0xf4, 0x80, 0xbb, 0x90, + 0x7f, 0x9e, 0xc9, 0x16, 0x23, 0x65, 0x51, 0xcc, 0x03, 0xeb, 0x62, 0xbe, 0xc4, 0xf0, 0xa5, 0x48, + 0xfc, 0x91, 0xf4, 0x54, 0x55, 0x5c, 0x21, 0x18, 0x49, 0xc9, 0x57, 0x78, 0x3d, 0x92, 0xe4, 0x24, + 0xf4, 0xae, 0xfb, 0xba, 0xaf, 0x70, 0x39, 0x52, 0xd6, 0x8a, 0x79, 0xe7, 0xab, 0x9c, 0xbf, 0xc2, + 0x16, 0xf9, 0xc2, 0x55, 0xfd, 0x11, 0x9e, 0xa3, 0x42, 0x05, 0x66, 0x06, 0xe2, 0x52, 0xf9, 0x12, + 0x03, 0x14, 0x7b, 0x02, 0x7a, 0x5b, 0x89, 0x23, 0xf3, 0x2f, 0x32, 0x92, 0x52, 0x4f, 0x92, 0x18, + 0x53, 0x71, 0x78, 0x71, 0xff, 0xfe, 0xbb, 0x73, 0x43, 0xdf, 0x7e, 0x77, 0x6e, 0xe8, 0xbf, 0xbc, + 0x3b, 0x37, 0xf4, 0xdd, 0x77, 0xe7, 0x94, 0x1f, 0xbc, 0x3b, 0xa7, 0xfc, 0xe8, 0xdd, 0x39, 0xe5, + 0x4f, 0xdf, 0x9d, 0x53, 0xde, 0x7c, 0x30, 0xa7, 0x7c, 0xed, 0xc1, 0x9c, 0xf2, 0xf5, 0x07, 0x73, + 0xca, 0xef, 0x3d, 0x98, 0x53, 0xde, 0x7e, 0x30, 0xa7, 0xdc, 0x7f, 0x30, 0xa7, 0x7c, 0xfb, 0xc1, + 0x9c, 0xf2, 0xdd, 0x07, 0x73, 0xca, 0x0f, 0x1e, 0xcc, 0x0d, 0xfd, 0xe8, 0xc1, 0x9c, 0xf2, 0xa7, + 0x0f, 0xe6, 0x86, 0xde, 0xfc, 0xde, 0xdc, 0xd0, 0x5b, 0xdf, 0x9b, 0x1b, 0xfa, 0xda, 0xf7, 0xe6, + 0x14, 0xf8, 0x6f, 0xab, 0x70, 0x81, 0x7d, 0x91, 0xcc, 0xff, 0xbe, 0xea, 0x15, 0xef, 0x04, 0x91, + 0x96, 0xe0, 0x1a, 0xff, 0x3d, 0x27, 0x7f, 0xe0, 0x8c, 0x5f, 0x2a, 0x9b, 0x7d, 0xd8, 0xaf, 0xb0, + 0xe5, 0xfe, 0xed, 0x30, 0x8c, 0xf2, 0xad, 0xe0, 0xa8, 0x5f, 0x84, 0x5e, 0x83, 0xd4, 0x89, 0xd5, + 0x30, 0xdb, 0x96, 0x77, 0xca, 0xf6, 0x40, 0x1f, 0x5b, 0x0a, 0xd4, 0xe6, 0xbb, 0xa6, 0x2f, 0x76, + 0x9a, 0x4e, 0xa7, 0x6d, 0xf8, 0xa2, 0xfa, 0x05, 0xc8, 0x9c, 0x20, 0xeb, 0xf8, 0xc4, 0xab, 0x5a, + 0x76, 0xb5, 0xd6, 0x24, 0xbd, 0xf2, 0xb8, 0x01, 0x74, 0x6c, 0xd3, 0x2e, 0x35, 0xf1, 0xc9, 0xea, + 0xa6, 0x67, 0x92, 0x7b, 0xf4, 0x8c, 0x41, 0x3e, 0xeb, 0x17, 0x21, 0xd3, 0x46, 0x6e, 0xa7, 0xe1, + 0x55, 0x6b, 0x4e, 0xc7, 0xf6, 0x48, 0x37, 0xab, 0x1a, 0x69, 0x3a, 0x56, 0xc2, 0x43, 0xfa, 0x93, + 0x30, 0xee, 0xb5, 0x3b, 0xa8, 0xea, 0xd6, 0x1c, 0xcf, 0x6d, 0x9a, 0x36, 0xe9, 0x66, 0x53, 0x46, + 0x06, 0x0f, 0xee, 0xb1, 0x31, 0xf2, 0x17, 0x07, 0x6a, 0x4e, 0x1b, 0x91, 0x9b, 0xe9, 0x84, 0x41, + 0x0f, 0x74, 0x0d, 0xd4, 0x57, 0xd1, 0x29, 0xb9, 0x5d, 0x4b, 0x1a, 0xf8, 0xa3, 0xfe, 0x0c, 0x8c, + 0xd0, 0x3f, 0x46, 0x41, 0x7a, 0x6b, 0xf2, 0xe4, 0xda, 0xbf, 0x34, 0xba, 0x43, 0x6b, 0x30, 0x01, + 0xfd, 0x16, 0x8c, 0x7a, 0xa8, 0xdd, 0x36, 0x2d, 0x9b, 0xdc, 0x3a, 0xa5, 0x57, 0xe6, 0x23, 0xcc, + 0xb0, 0x4f, 0x25, 0xc8, 0x8f, 0xbb, 0x1a, 0x5c, 0x5e, 0x5f, 0x83, 0x0c, 0x91, 0x5b, 0xa9, 0xd2, + 0x3f, 0xd8, 0x91, 0xee, 0x19, 0xcd, 0x69, 0x2a, 0xc7, 0x1f, 0x14, 0x70, 0x18, 0xfd, 0x61, 0xbb, + 0x71, 0x72, 0xda, 0x27, 0x23, 0x4e, 0x4b, 0x0a, 0xef, 0x0a, 0x69, 0x1a, 0xe9, 0xa9, 0x19, 0x0f, + 0xfd, 0xe9, 0xbb, 0x6d, 0xc8, 0x84, 0xf5, 0xe2, 0x66, 0xa0, 0xcd, 0x0f, 0x31, 0xc3, 0xd3, 0xc1, + 0x8f, 0xb9, 0xf7, 0xb0, 0x02, 0x9d, 0xcf, 0x27, 0x6e, 0x2a, 0xb3, 0xbb, 0xa0, 0xc9, 0xe7, 0x8b, + 0xa0, 0xbc, 0x2c, 0x52, 0x6a, 0xe1, 0x8b, 0x25, 0xdb, 0xe4, 0x01, 0x63, 0xee, 0x05, 0x18, 0xa1, + 0xf1, 0xa3, 0xa7, 0x61, 0x34, 0xf8, 0xcd, 0xc4, 0x14, 0x24, 0x77, 0x0f, 0x2a, 0x7b, 0xf4, 0xc7, + 0x4f, 0xf7, 0xb6, 0x0a, 0xbb, 0x7b, 0xfb, 0x9b, 0xa5, 0x8f, 0x6b, 0x09, 0x7d, 0x12, 0xd2, 0xc5, + 0xcd, 0xad, 0xad, 0x6a, 0xb1, 0xb0, 0xb9, 0x55, 0xbe, 0xa7, 0xa9, 0xb9, 0x39, 0x18, 0xa1, 0x7a, + 0x92, 0x1f, 0x71, 0xeb, 0xd8, 0xf6, 0x29, 0x6f, 0x1e, 0xc8, 0x41, 0xee, 0x1b, 0x3a, 0x8c, 0x16, + 0x1a, 0x8d, 0x6d, 0xb3, 0xe5, 0xea, 0x2f, 0xc1, 0x14, 0xfd, 0x39, 0x89, 0x7d, 0x67, 0x9d, 0xfc, + 0xd6, 0x20, 0x2e, 0x0d, 0x0a, 0xfb, 0x11, 0xfb, 0xe0, 0xba, 0x99, 0xf8, 0x52, 0x97, 0x2c, 0x35, + 0x70, 0x37, 0x87, 0xbe, 0x0f, 0x1a, 0x1f, 0xdc, 0x68, 0x38, 0xa6, 0x87, 0x79, 0x13, 0xec, 0xa7, + 0x00, 0x7b, 0xf3, 0x72, 0x51, 0x4a, 0xdb, 0xc5, 0xa0, 0x7f, 0x0c, 0x52, 0x9b, 0xb6, 0x77, 0x6d, + 0x05, 0xb3, 0xf1, 0x3f, 0xb0, 0xd2, 0xcd, 0xc6, 0x45, 0x28, 0x8b, 0x8f, 0x60, 0xe8, 0xeb, 0xab, + 0x18, 0x9d, 0xec, 0x87, 0x26, 0x22, 0x01, 0x9a, 0x1c, 0xea, 0x2f, 0xc0, 0x18, 0xbe, 0x37, 0xa1, + 0x27, 0x1f, 0xe6, 0x8d, 0x6b, 0x17, 0xdc, 0x97, 0xa1, 0xf8, 0x00, 0xc3, 0x09, 0xe8, 0xf9, 0x47, + 0xfa, 0x12, 0x84, 0x14, 0x08, 0x30, 0x98, 0x60, 0xcf, 0xd7, 0x60, 0xb4, 0x27, 0xc1, 0x9e, 0xa4, + 0xc1, 0x5e, 0x58, 0x83, 0x3d, 0x5f, 0x83, 0x54, 0x5f, 0x82, 0xb0, 0x06, 0xfe, 0xb1, 0x5e, 0x04, + 0xd8, 0xb0, 0xde, 0x40, 0x75, 0xaa, 0x02, 0xfd, 0xf3, 0x2b, 0xb9, 0x08, 0x86, 0x40, 0x88, 0x52, + 0x84, 0x50, 0x7a, 0x19, 0xd2, 0x7b, 0x47, 0x01, 0x09, 0x74, 0xe5, 0xb1, 0xaf, 0xc6, 0x91, 0xc4, + 0x12, 0xc6, 0xf9, 0xaa, 0xd0, 0x8b, 0x49, 0xf7, 0x57, 0x25, 0x74, 0x35, 0x21, 0x54, 0xa0, 0x0a, + 0x25, 0xc9, 0xc4, 0xa8, 0x12, 0x62, 0x09, 0xe3, 0x70, 0x31, 0x2c, 0x3a, 0x0e, 0x96, 0x64, 0x55, + 0x69, 0x3e, 0x82, 0x82, 0x49, 0xb0, 0x62, 0xc8, 0x8e, 0x88, 0x47, 0x48, 0x90, 0x63, 0xf0, 0x44, + 0x6f, 0x8f, 0x70, 0x19, 0xee, 0x11, 0x7e, 0x1c, 0xce, 0x33, 0xf2, 0x3a, 0x2b, 0xe6, 0x99, 0x8c, + 0xcd, 0x33, 0x2e, 0x2a, 0xe5, 0x19, 0x1f, 0xd6, 0x3f, 0x01, 0x93, 0x7c, 0x0c, 0x97, 0x27, 0x4c, + 0xaa, 0xb1, 0x3f, 0x50, 0xd5, 0x9b, 0x94, 0x49, 0x52, 0x4e, 0x19, 0xaf, 0x57, 0x60, 0x82, 0x0f, + 0x6d, 0xbb, 0xe4, 0x72, 0xa7, 0xd8, 0x1f, 0x7f, 0xe8, 0xcd, 0x48, 0x05, 0x29, 0xa1, 0x84, 0x9e, + 0x5d, 0x87, 0x99, 0xe8, 0x6a, 0x14, 0x2e, 0xbf, 0x63, 0xb4, 0xfc, 0x9e, 0x0b, 0x97, 0x5f, 0x25, + 0x5c, 0xbe, 0x4b, 0xf0, 0x48, 0x64, 0xed, 0x89, 0x23, 0x49, 0x84, 0x49, 0x6e, 0xc3, 0xb8, 0x50, + 0x72, 0xc2, 0xe0, 0xe1, 0x08, 0xf0, 0x70, 0x37, 0x38, 0x08, 0xad, 0x88, 0xd5, 0x43, 0x00, 0xab, + 0x61, 0xf0, 0xc7, 0x60, 0x42, 0xac, 0x37, 0x61, 0xf4, 0x78, 0x04, 0x7a, 0x3c, 0x02, 0x1d, 0x7d, + 0xee, 0x64, 0x04, 0x3a, 0x29, 0xa1, 0xf7, 0x7a, 0x9e, 0x7b, 0x2a, 0x02, 0x3d, 0x15, 0x81, 0x8e, + 0x3e, 0xb7, 0x1e, 0x81, 0xd6, 0xc3, 0xe8, 0xe7, 0x60, 0x52, 0x2a, 0x31, 0x61, 0xf8, 0x68, 0x04, + 0x7c, 0x34, 0x0c, 0x7f, 0x1e, 0x34, 0xb9, 0xb8, 0x84, 0xf1, 0x93, 0x11, 0xf8, 0xc9, 0xa8, 0xd3, + 0x47, 0x6b, 0x3f, 0x12, 0x01, 0x1f, 0x89, 0x3c, 0x7d, 0x34, 0x5e, 0x8b, 0xc0, 0x6b, 0x61, 0x7c, + 0x1e, 0x32, 0xe1, 0x6a, 0x12, 0xc6, 0xa6, 0x22, 0xb0, 0x29, 0xd9, 0xee, 0x42, 0x31, 0x89, 0x8b, + 0xf4, 0xb1, 0x1e, 0xe9, 0x22, 0x94, 0x90, 0x38, 0x92, 0x4c, 0x98, 0xe4, 0x93, 0x70, 0x2e, 0xaa, + 0x64, 0x44, 0x70, 0x2c, 0x84, 0x39, 0x26, 0x70, 0x8f, 0x18, 0x34, 0x7b, 0x66, 0x4b, 0x6a, 0x9c, + 0x66, 0x3f, 0x05, 0xd3, 0x11, 0x85, 0x23, 0x82, 0x76, 0x49, 0xec, 0xc6, 0xb2, 0x21, 0x5a, 0x52, + 0x04, 0x2c, 0xfb, 0x78, 0xd7, 0xb1, 0x6c, 0x2f, 0xdc, 0x95, 0x7d, 0x73, 0x1a, 0x26, 0x58, 0x79, + 0xda, 0x69, 0xd7, 0x51, 0x1b, 0xd5, 0xf5, 0xbf, 0xd0, 0xbb, 0x77, 0x5a, 0xee, 0x2e, 0x6a, 0x0c, + 0x75, 0x86, 0x16, 0xea, 0x53, 0x3d, 0x5b, 0xa8, 0x2b, 0xf1, 0xf4, 0x71, 0x9d, 0x54, 0xa9, 0xab, + 0x93, 0x7a, 0xba, 0x37, 0x69, 0xaf, 0x86, 0xaa, 0xd4, 0xd5, 0x50, 0xf5, 0x27, 0x89, 0xec, 0xab, + 0x36, 0xba, 0xfb, 0xaa, 0x85, 0xde, 0x2c, 0xbd, 0xdb, 0xab, 0x8d, 0xee, 0xf6, 0x2a, 0x86, 0x27, + 0xba, 0xcb, 0xda, 0xe8, 0xee, 0xb2, 0xfa, 0xf0, 0xf4, 0x6e, 0xb6, 0x36, 0xba, 0x9b, 0xad, 0x18, + 0x9e, 0xe8, 0x9e, 0x6b, 0x33, 0xa2, 0xe7, 0x7a, 0xa6, 0x37, 0x51, 0xbf, 0xd6, 0x6b, 0x2b, 0xaa, + 0xf5, 0x5a, 0xec, 0xa3, 0x54, 0xdf, 0x0e, 0x6c, 0x33, 0xa2, 0x03, 0x8b, 0x53, 0xac, 0x47, 0x23, + 0xb6, 0x15, 0xd5, 0x88, 0xc5, 0x2a, 0xd6, 0xab, 0x1f, 0xfb, 0x73, 0x72, 0x3f, 0x76, 0xb9, 0x37, + 0x53, 0x74, 0x5b, 0xb6, 0xd1, 0xdd, 0x96, 0x2d, 0xc4, 0xe5, 0x5c, 0x54, 0x77, 0xf6, 0xa9, 0x9e, + 0xdd, 0xd9, 0x00, 0x29, 0x1c, 0xd7, 0xa4, 0xbd, 0xdc, 0xab, 0x49, 0x5b, 0x8a, 0xe7, 0xee, 0xdf, + 0xab, 0x1d, 0xf4, 0xe8, 0xd5, 0x9e, 0x8d, 0x27, 0xfe, 0xb0, 0x65, 0xfb, 0xb0, 0x65, 0xfb, 0xb0, + 0x65, 0xfb, 0xb0, 0x65, 0xfb, 0xd9, 0xb7, 0x6c, 0xf9, 0xe4, 0xe7, 0xbe, 0x32, 0xaf, 0xe4, 0xfe, + 0xb3, 0xea, 0xff, 0xdd, 0xac, 0x97, 0x2c, 0xef, 0x04, 0x97, 0xb7, 0x6d, 0xc8, 0x90, 0xbf, 0x78, + 0xd1, 0x34, 0x5b, 0x2d, 0xcb, 0x3e, 0x66, 0x3d, 0xdb, 0x62, 0xf7, 0x56, 0x22, 0x03, 0x90, 0xbf, + 0x19, 0xb2, 0x4d, 0x85, 0xd9, 0x72, 0x63, 0x07, 0x23, 0xfa, 0x5d, 0x48, 0x37, 0xdd, 0x63, 0x9f, + 0x2d, 0xd1, 0xb5, 0x10, 0x4a, 0x6c, 0xf4, 0x4a, 0x03, 0x32, 0x68, 0xfa, 0x03, 0x58, 0xb5, 0xc3, + 0x53, 0x2f, 0x50, 0x4d, 0x8d, 0x53, 0x0d, 0xfb, 0x54, 0x54, 0xed, 0x30, 0x18, 0xc1, 0x61, 0x2b, + 0xeb, 0x1e, 0x57, 0xe9, 0x84, 0xe0, 0x79, 0x09, 0x26, 0x25, 0x6d, 0x23, 0x72, 0xfe, 0x21, 0x7c, + 0x83, 0x15, 0x93, 0x35, 0x8f, 0xcb, 0x89, 0x70, 0x40, 0xe6, 0x9e, 0x80, 0x71, 0x81, 0x5b, 0xcf, + 0x80, 0x72, 0xc4, 0xbe, 0x4b, 0xa9, 0x1c, 0xe5, 0xbe, 0xac, 0x40, 0x9a, 0xbd, 0x48, 0xb0, 0x6b, + 0x5a, 0x6d, 0xfd, 0x45, 0x48, 0x36, 0xf8, 0xf7, 0x99, 0x1e, 0xf6, 0xbb, 0xb3, 0x84, 0x41, 0xdf, + 0x80, 0xe1, 0xb6, 0xff, 0x7d, 0xa7, 0x87, 0xfa, 0x42, 0x2c, 0x81, 0xe7, 0xee, 0x2b, 0x30, 0xc5, + 0xde, 0x73, 0x75, 0xd9, 0xdb, 0xcf, 0x66, 0x6b, 0xf6, 0x1b, 0x0a, 0x8c, 0xf9, 0x47, 0xfa, 0x21, + 0x4c, 0xf8, 0x07, 0xf4, 0x0d, 0x7b, 0x1a, 0xa9, 0xf9, 0x90, 0x85, 0xbb, 0x38, 0x96, 0x22, 0x3e, + 0xd1, 0x47, 0x51, 0x74, 0x4d, 0x16, 0x07, 0x67, 0x0b, 0x30, 0x1d, 0x21, 0x76, 0x96, 0x05, 0x39, + 0x77, 0x11, 0xc6, 0x2a, 0x8e, 0x47, 0x7f, 0x36, 0x47, 0x3f, 0x17, 0x7a, 0xaa, 0x50, 0x4c, 0x68, + 0x43, 0x04, 0xbc, 0x78, 0x11, 0x46, 0x59, 0xf6, 0xeb, 0x23, 0x90, 0xd8, 0x2e, 0x68, 0x43, 0xe4, + 0xff, 0xa2, 0xa6, 0x90, 0xff, 0x4b, 0x5a, 0xa2, 0xb8, 0xf5, 0x90, 0xcf, 0x99, 0x86, 0xa2, 0x9e, + 0x33, 0x1d, 0x8e, 0x50, 0xf3, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0xe1, 0x83, 0x22, + 0x2b, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/neither/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/neither/theproto3.pb.go index 8c131da1c..55ac30e4a 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/neither/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/neither/theproto3.pb.go @@ -271,491 +271,498 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7740 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0xf6, 0x8c, 0x28, 0x88, 0x1a, 0x91, 0x33, - 0xd0, 0x68, 0x44, 0xd1, 0x16, 0x87, 0xc3, 0xe1, 0xdc, 0x30, 0x96, 0x14, 0x00, 0x04, 0x47, 0x1c, - 0xf3, 0xe6, 0x26, 0x69, 0x49, 0xab, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x84, 0x04, 0x74, 0x23, 0xe8, - 0x86, 0x24, 0xfa, 0x21, 0xa5, 0x5d, 0x27, 0x1b, 0x6f, 0xb6, 0x72, 0xdd, 0xa4, 0xe2, 0xf5, 0xfa, - 0x22, 0x6f, 0x6a, 0x63, 0xef, 0xe6, 0xe6, 0x75, 0x36, 0xce, 0xd6, 0x56, 0x2a, 0xab, 0x3c, 0x38, - 0x99, 0xbc, 0xa4, 0xb4, 0xc9, 0x4b, 0xca, 0x95, 0x52, 0xad, 0xc6, 0xae, 0x8a, 0x93, 0x38, 0x89, - 0x37, 0xeb, 0xaa, 0xdd, 0x2a, 0xfb, 0x21, 0x75, 0x6e, 0xdd, 0xe7, 0x1c, 0x34, 0xd0, 0xe0, 0x48, - 0xb2, 0xfd, 0xa0, 0x97, 0x19, 0xf4, 0x39, 0xff, 0xf7, 0xf5, 0xdf, 0xff, 0xed, 0xfc, 0x7d, 0xba, - 0x01, 0xc2, 0x2f, 0xae, 0xc0, 0xf9, 0x23, 0xd7, 0x3d, 0x6a, 0xa0, 0xcb, 0xad, 0xb6, 0xeb, 0xbb, - 0x07, 0x9d, 0xc3, 0xcb, 0x35, 0xe4, 0x55, 0xdb, 0xf5, 0x96, 0xef, 0xb6, 0x17, 0xc9, 0x98, 0x39, - 0x49, 0x25, 0x16, 0xb9, 0x44, 0x6e, 0x13, 0xa6, 0xd6, 0xea, 0x0d, 0xb4, 0x1a, 0x08, 0xee, 0x22, - 0xdf, 0xbc, 0x09, 0xc9, 0xc3, 0x7a, 0x03, 0x65, 0xb5, 0xf3, 0xfa, 0x7c, 0x7a, 0xf9, 0xe2, 0xa2, - 0x02, 0x5a, 0x94, 0x11, 0x3b, 0x78, 0xd8, 0x22, 0x88, 0xdc, 0xf7, 0x92, 0x70, 0x26, 0x62, 0xd6, - 0x34, 0x21, 0xe9, 0xd8, 0x4d, 0xcc, 0xa8, 0xcd, 0x8f, 0x59, 0xe4, 0xb3, 0x99, 0x85, 0xd1, 0x96, - 0x5d, 0x7d, 0xd5, 0x3e, 0x42, 0xd9, 0x04, 0x19, 0xe6, 0x87, 0xe6, 0x2c, 0x40, 0x0d, 0xb5, 0x90, - 0x53, 0x43, 0x4e, 0xf5, 0x24, 0xab, 0x9f, 0xd7, 0xe7, 0xc7, 0x2c, 0x61, 0xc4, 0xfc, 0x18, 0x4c, - 0xb5, 0x3a, 0x07, 0x8d, 0x7a, 0xb5, 0x22, 0x88, 0xc1, 0x79, 0x7d, 0x7e, 0xd8, 0x32, 0xe8, 0xc4, - 0x6a, 0x28, 0xfc, 0x24, 0x4c, 0xbe, 0x8e, 0xec, 0x57, 0x45, 0xd1, 0x34, 0x11, 0x9d, 0xc0, 0xc3, - 0x82, 0x60, 0x09, 0x32, 0x4d, 0xe4, 0x79, 0xf6, 0x11, 0xaa, 0xf8, 0x27, 0x2d, 0x94, 0x4d, 0x92, - 0xab, 0x3f, 0xdf, 0x75, 0xf5, 0xea, 0x95, 0xa7, 0x19, 0x6a, 0xef, 0xa4, 0x85, 0xcc, 0x02, 0x8c, - 0x21, 0xa7, 0xd3, 0xa4, 0x0c, 0xc3, 0x3d, 0xec, 0x57, 0x76, 0x3a, 0x4d, 0x95, 0x25, 0x85, 0x61, - 0x8c, 0x62, 0xd4, 0x43, 0xed, 0xd7, 0xea, 0x55, 0x94, 0x1d, 0x21, 0x04, 0x4f, 0x76, 0x11, 0xec, - 0xd2, 0x79, 0x95, 0x83, 0xe3, 0xcc, 0x12, 0x8c, 0xa1, 0x37, 0x7c, 0xe4, 0x78, 0x75, 0xd7, 0xc9, - 0x8e, 0x12, 0x92, 0x27, 0x22, 0xbc, 0x88, 0x1a, 0x35, 0x95, 0x22, 0xc4, 0x99, 0xd7, 0x61, 0xd4, - 0x6d, 0xf9, 0x75, 0xd7, 0xf1, 0xb2, 0xa9, 0xf3, 0xda, 0x7c, 0x7a, 0xf9, 0x5c, 0x64, 0x20, 0x6c, - 0x53, 0x19, 0x8b, 0x0b, 0x9b, 0xeb, 0x60, 0x78, 0x6e, 0xa7, 0x5d, 0x45, 0x95, 0xaa, 0x5b, 0x43, - 0x95, 0xba, 0x73, 0xe8, 0x66, 0xc7, 0x08, 0xc1, 0x5c, 0xf7, 0x85, 0x10, 0xc1, 0x92, 0x5b, 0x43, - 0xeb, 0xce, 0xa1, 0x6b, 0x4d, 0x78, 0xd2, 0xb1, 0x39, 0x0d, 0x23, 0xde, 0x89, 0xe3, 0xdb, 0x6f, - 0x64, 0x33, 0x24, 0x42, 0xd8, 0x51, 0xee, 0xcf, 0x86, 0x61, 0x72, 0x90, 0x10, 0xbb, 0x0d, 0xc3, - 0x87, 0xf8, 0x2a, 0xb3, 0x89, 0xd3, 0xd8, 0x80, 0x62, 0x64, 0x23, 0x8e, 0x3c, 0xa0, 0x11, 0x0b, - 0x90, 0x76, 0x90, 0xe7, 0xa3, 0x1a, 0x8d, 0x08, 0x7d, 0xc0, 0x98, 0x02, 0x0a, 0xea, 0x0e, 0xa9, - 0xe4, 0x03, 0x85, 0xd4, 0x8b, 0x30, 0x19, 0xa8, 0x54, 0x69, 0xdb, 0xce, 0x11, 0x8f, 0xcd, 0xcb, - 0x71, 0x9a, 0x2c, 0x96, 0x39, 0xce, 0xc2, 0x30, 0x6b, 0x02, 0x49, 0xc7, 0xe6, 0x2a, 0x80, 0xeb, - 0x20, 0xf7, 0xb0, 0x52, 0x43, 0xd5, 0x46, 0x36, 0xd5, 0xc3, 0x4a, 0xdb, 0x58, 0xa4, 0xcb, 0x4a, - 0x2e, 0x1d, 0xad, 0x36, 0xcc, 0x5b, 0x61, 0xa8, 0x8d, 0xf6, 0x88, 0x94, 0x4d, 0x9a, 0x64, 0x5d, - 0xd1, 0xb6, 0x0f, 0x13, 0x6d, 0x84, 0xe3, 0x1e, 0xd5, 0xd8, 0x95, 0x8d, 0x11, 0x25, 0x16, 0x63, - 0xaf, 0xcc, 0x62, 0x30, 0x7a, 0x61, 0xe3, 0x6d, 0xf1, 0xd0, 0x7c, 0x1c, 0x82, 0x81, 0x0a, 0x09, - 0x2b, 0x20, 0x55, 0x28, 0xc3, 0x07, 0xb7, 0xec, 0x26, 0x9a, 0xb9, 0x09, 0x13, 0xb2, 0x79, 0xcc, - 0xb3, 0x30, 0xec, 0xf9, 0x76, 0xdb, 0x27, 0x51, 0x38, 0x6c, 0xd1, 0x03, 0xd3, 0x00, 0x1d, 0x39, - 0x35, 0x52, 0xe5, 0x86, 0x2d, 0xfc, 0x71, 0xe6, 0x06, 0x8c, 0x4b, 0xa7, 0x1f, 0x14, 0x98, 0xfb, - 0xfc, 0x08, 0x9c, 0x8d, 0x8a, 0xb9, 0xc8, 0xf0, 0x9f, 0x86, 0x11, 0xa7, 0xd3, 0x3c, 0x40, 0xed, - 0xac, 0x4e, 0x18, 0xd8, 0x91, 0x59, 0x80, 0xe1, 0x86, 0x7d, 0x80, 0x1a, 0xd9, 0xe4, 0x79, 0x6d, - 0x7e, 0x62, 0xf9, 0x63, 0x03, 0x45, 0xf5, 0xe2, 0x06, 0x86, 0x58, 0x14, 0x69, 0x3e, 0x0b, 0x49, - 0x56, 0xe2, 0x30, 0xc3, 0xc2, 0x60, 0x0c, 0x38, 0x16, 0x2d, 0x82, 0x33, 0x1f, 0x85, 0x31, 0xfc, - 0x3f, 0xb5, 0xed, 0x08, 0xd1, 0x39, 0x85, 0x07, 0xb0, 0x5d, 0xcd, 0x19, 0x48, 0x91, 0x30, 0xab, - 0x21, 0xbe, 0x34, 0x04, 0xc7, 0xd8, 0x31, 0x35, 0x74, 0x68, 0x77, 0x1a, 0x7e, 0xe5, 0x35, 0xbb, - 0xd1, 0x41, 0x24, 0x60, 0xc6, 0xac, 0x0c, 0x1b, 0xfc, 0x34, 0x1e, 0x33, 0xe7, 0x20, 0x4d, 0xa3, - 0xb2, 0xee, 0xd4, 0xd0, 0x1b, 0xa4, 0xfa, 0x0c, 0x5b, 0x34, 0x50, 0xd7, 0xf1, 0x08, 0x3e, 0xfd, - 0x2b, 0x9e, 0xeb, 0x70, 0xd7, 0x92, 0x53, 0xe0, 0x01, 0x72, 0xfa, 0x1b, 0x6a, 0xe1, 0x7b, 0x2c, - 0xfa, 0xf2, 0xd4, 0x58, 0xcc, 0x7d, 0x2b, 0x01, 0x49, 0x92, 0x6f, 0x93, 0x90, 0xde, 0x7b, 0x69, - 0xa7, 0x5c, 0x59, 0xdd, 0xde, 0x2f, 0x6e, 0x94, 0x0d, 0xcd, 0x9c, 0x00, 0x20, 0x03, 0x6b, 0x1b, - 0xdb, 0x85, 0x3d, 0x23, 0x11, 0x1c, 0xaf, 0x6f, 0xed, 0x5d, 0x5f, 0x31, 0xf4, 0x00, 0xb0, 0x4f, - 0x07, 0x92, 0xa2, 0xc0, 0xd5, 0x65, 0x63, 0xd8, 0x34, 0x20, 0x43, 0x09, 0xd6, 0x5f, 0x2c, 0xaf, - 0x5e, 0x5f, 0x31, 0x46, 0xe4, 0x91, 0xab, 0xcb, 0xc6, 0xa8, 0x39, 0x0e, 0x63, 0x64, 0xa4, 0xb8, - 0xbd, 0xbd, 0x61, 0xa4, 0x02, 0xce, 0xdd, 0x3d, 0x6b, 0x7d, 0xeb, 0x8e, 0x31, 0x16, 0x70, 0xde, - 0xb1, 0xb6, 0xf7, 0x77, 0x0c, 0x08, 0x18, 0x36, 0xcb, 0xbb, 0xbb, 0x85, 0x3b, 0x65, 0x23, 0x1d, - 0x48, 0x14, 0x5f, 0xda, 0x2b, 0xef, 0x1a, 0x19, 0x49, 0xad, 0xab, 0xcb, 0xc6, 0x78, 0x70, 0x8a, - 0xf2, 0xd6, 0xfe, 0xa6, 0x31, 0x61, 0x4e, 0xc1, 0x38, 0x3d, 0x05, 0x57, 0x62, 0x52, 0x19, 0xba, - 0xbe, 0x62, 0x18, 0xa1, 0x22, 0x94, 0x65, 0x4a, 0x1a, 0xb8, 0xbe, 0x62, 0x98, 0xb9, 0x12, 0x0c, - 0x93, 0xe8, 0x32, 0x4d, 0x98, 0xd8, 0x28, 0x14, 0xcb, 0x1b, 0x95, 0xed, 0x9d, 0xbd, 0xf5, 0xed, - 0xad, 0xc2, 0x86, 0xa1, 0x85, 0x63, 0x56, 0xf9, 0x53, 0xfb, 0xeb, 0x56, 0x79, 0xd5, 0x48, 0x88, - 0x63, 0x3b, 0xe5, 0xc2, 0x5e, 0x79, 0xd5, 0xd0, 0x73, 0x55, 0x38, 0x1b, 0x55, 0x67, 0x22, 0x33, - 0x43, 0x70, 0x71, 0xa2, 0x87, 0x8b, 0x09, 0x57, 0x97, 0x8b, 0x7f, 0x53, 0x83, 0x33, 0x11, 0xb5, - 0x36, 0xf2, 0x24, 0xcf, 0xc1, 0x30, 0x0d, 0x51, 0xba, 0xfa, 0x3c, 0x15, 0x59, 0xb4, 0x49, 0xc0, - 0x76, 0xad, 0x40, 0x04, 0x27, 0xae, 0xc0, 0x7a, 0x8f, 0x15, 0x18, 0x53, 0x74, 0x29, 0xf9, 0x59, - 0x0d, 0xb2, 0xbd, 0xb8, 0x63, 0x0a, 0x45, 0x42, 0x2a, 0x14, 0xb7, 0x55, 0x05, 0x2e, 0xf4, 0xbe, - 0x86, 0x2e, 0x2d, 0xbe, 0xa6, 0xc1, 0x74, 0x74, 0xa3, 0x12, 0xa9, 0xc3, 0xb3, 0x30, 0xd2, 0x44, - 0xfe, 0xb1, 0xcb, 0x17, 0xeb, 0x4b, 0x11, 0x4b, 0x00, 0x9e, 0x56, 0x6d, 0xc5, 0x50, 0xe2, 0x1a, - 0xa2, 0xf7, 0xea, 0x36, 0xa8, 0x36, 0x5d, 0x9a, 0xfe, 0x4a, 0x02, 0x1e, 0x8a, 0x24, 0x8f, 0x54, - 0xf4, 0x31, 0x80, 0xba, 0xd3, 0xea, 0xf8, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x8c, 0x8c, 0x90, 0xdc, - 0xc7, 0xb5, 0xa7, 0xe3, 0x07, 0xf3, 0x3a, 0x99, 0x07, 0x3a, 0x44, 0x04, 0x6e, 0x86, 0x8a, 0x26, - 0x89, 0xa2, 0xb3, 0x3d, 0xae, 0xb4, 0x6b, 0xad, 0x5b, 0x02, 0xa3, 0xda, 0xa8, 0x23, 0xc7, 0xaf, - 0x78, 0x7e, 0x1b, 0xd9, 0xcd, 0xba, 0x73, 0x44, 0x0a, 0x70, 0x2a, 0x3f, 0x7c, 0x68, 0x37, 0x3c, - 0x64, 0x4d, 0xd2, 0xe9, 0x5d, 0x3e, 0x8b, 0x11, 0x64, 0x95, 0x69, 0x0b, 0x88, 0x11, 0x09, 0x41, - 0xa7, 0x03, 0x44, 0xee, 0x57, 0x47, 0x21, 0x2d, 0xb4, 0x75, 0xe6, 0x05, 0xc8, 0xbc, 0x62, 0xbf, - 0x66, 0x57, 0x78, 0xab, 0x4e, 0x2d, 0x91, 0xc6, 0x63, 0x3b, 0xac, 0x5d, 0x5f, 0x82, 0xb3, 0x44, - 0xc4, 0xed, 0xf8, 0xa8, 0x5d, 0xa9, 0x36, 0x6c, 0xcf, 0x23, 0x46, 0x4b, 0x11, 0x51, 0x13, 0xcf, - 0x6d, 0xe3, 0xa9, 0x12, 0x9f, 0x31, 0xaf, 0xc1, 0x19, 0x82, 0x68, 0x76, 0x1a, 0x7e, 0xbd, 0xd5, - 0x40, 0x15, 0x7c, 0xf3, 0xe0, 0x91, 0x42, 0x1c, 0x68, 0x36, 0x85, 0x25, 0x36, 0x99, 0x00, 0xd6, - 0xc8, 0x33, 0xef, 0xc0, 0x63, 0x04, 0x76, 0x84, 0x1c, 0xd4, 0xb6, 0x7d, 0x54, 0x41, 0x7f, 0xb9, - 0x63, 0x37, 0xbc, 0x8a, 0xed, 0xd4, 0x2a, 0xc7, 0xb6, 0x77, 0x9c, 0x3d, 0x2b, 0x12, 0x3c, 0x82, - 0x65, 0xef, 0x30, 0xd1, 0x32, 0x91, 0x2c, 0x38, 0xb5, 0xe7, 0x6d, 0xef, 0xd8, 0xcc, 0xc3, 0x34, - 0x21, 0xf2, 0xfc, 0x76, 0xdd, 0x39, 0xaa, 0x54, 0x8f, 0x51, 0xf5, 0xd5, 0x4a, 0xc7, 0x3f, 0xbc, - 0x99, 0x7d, 0x54, 0x64, 0x20, 0x4a, 0xee, 0x12, 0x99, 0x12, 0x16, 0xd9, 0xf7, 0x0f, 0x6f, 0x9a, - 0xbb, 0x90, 0xc1, 0xfe, 0x68, 0xd6, 0x3f, 0x83, 0x2a, 0x87, 0x6e, 0x9b, 0x2c, 0x2e, 0x13, 0x11, - 0xc9, 0x2d, 0x18, 0x71, 0x71, 0x9b, 0x01, 0x36, 0xdd, 0x1a, 0xca, 0x0f, 0xef, 0xee, 0x94, 0xcb, - 0xab, 0x56, 0x9a, 0xb3, 0xac, 0xb9, 0x6d, 0x1c, 0x53, 0x47, 0x6e, 0x60, 0xe3, 0x34, 0x8d, 0xa9, - 0x23, 0x97, 0x5b, 0xf8, 0x1a, 0x9c, 0xa9, 0x56, 0xe9, 0x65, 0xd7, 0xab, 0x15, 0xd6, 0xe5, 0x7b, - 0x59, 0x43, 0xb2, 0x57, 0xb5, 0x7a, 0x87, 0x0a, 0xb0, 0x30, 0xf7, 0xcc, 0x5b, 0xf0, 0x50, 0x68, - 0x2f, 0x11, 0x38, 0xd5, 0x75, 0x95, 0x2a, 0xf4, 0x1a, 0x9c, 0x69, 0x9d, 0x74, 0x03, 0x4d, 0xe9, - 0x8c, 0xad, 0x13, 0x15, 0xf6, 0x04, 0xb9, 0x73, 0x6b, 0xa3, 0xaa, 0xed, 0xa3, 0x5a, 0xf6, 0x61, - 0x51, 0x5a, 0x98, 0x30, 0x2f, 0x83, 0x51, 0xad, 0x56, 0x90, 0x63, 0x1f, 0x34, 0x50, 0xc5, 0x6e, - 0x23, 0xc7, 0xf6, 0xb2, 0x73, 0xa2, 0xf0, 0x44, 0xb5, 0x5a, 0x26, 0xb3, 0x05, 0x32, 0x69, 0x2e, - 0xc0, 0x94, 0x7b, 0xf0, 0x4a, 0x95, 0x06, 0x57, 0xa5, 0xd5, 0x46, 0x87, 0xf5, 0x37, 0xb2, 0x17, - 0x89, 0x99, 0x26, 0xf1, 0x04, 0x09, 0xad, 0x1d, 0x32, 0x6c, 0x3e, 0x05, 0x46, 0xd5, 0x3b, 0xb6, - 0xdb, 0x2d, 0xb2, 0xba, 0x7b, 0x2d, 0xbb, 0x8a, 0xb2, 0x4f, 0x50, 0x51, 0x3a, 0xbe, 0xc5, 0x87, - 0xcd, 0x17, 0xe1, 0x6c, 0xc7, 0xa9, 0x3b, 0x3e, 0x6a, 0xb7, 0xda, 0x08, 0x37, 0xe9, 0x34, 0xd3, - 0xb2, 0xff, 0x7d, 0xb4, 0x47, 0x9b, 0xbd, 0x2f, 0x4a, 0x53, 0xef, 0x5a, 0x67, 0x3a, 0xdd, 0x83, - 0xb9, 0x3c, 0x64, 0x44, 0xa7, 0x9b, 0x63, 0x40, 0xdd, 0x6e, 0x68, 0x78, 0x0d, 0x2d, 0x6d, 0xaf, - 0xe2, 0xd5, 0xef, 0x17, 0xca, 0x46, 0x02, 0xaf, 0xc2, 0x1b, 0xeb, 0x7b, 0xe5, 0x8a, 0xb5, 0xbf, - 0xb5, 0xb7, 0xbe, 0x59, 0x36, 0xf4, 0x85, 0xb1, 0xd4, 0xf7, 0x47, 0x8d, 0x37, 0xdf, 0x7c, 0xf3, - 0xcd, 0x44, 0xee, 0xdb, 0x09, 0x98, 0x90, 0x3b, 0x5f, 0xf3, 0x13, 0xf0, 0x30, 0xbf, 0x4d, 0xf5, - 0x90, 0x5f, 0x79, 0xbd, 0xde, 0x26, 0x71, 0xd8, 0xb4, 0x69, 0xef, 0x18, 0x98, 0xf0, 0x2c, 0x93, - 0xda, 0x45, 0xfe, 0x0b, 0xf5, 0x36, 0x8e, 0xb2, 0xa6, 0xed, 0x9b, 0x1b, 0x30, 0xe7, 0xb8, 0x15, - 0xcf, 0xb7, 0x9d, 0x9a, 0xdd, 0xae, 0x55, 0xc2, 0x0d, 0x82, 0x8a, 0x5d, 0xad, 0x22, 0xcf, 0x73, - 0xe9, 0x12, 0x10, 0xb0, 0x9c, 0x73, 0xdc, 0x5d, 0x26, 0x1c, 0xd6, 0xc6, 0x02, 0x13, 0x55, 0xdc, - 0xad, 0xf7, 0x72, 0xf7, 0xa3, 0x30, 0xd6, 0xb4, 0x5b, 0x15, 0xe4, 0xf8, 0xed, 0x13, 0xd2, 0xaf, - 0xa5, 0xac, 0x54, 0xd3, 0x6e, 0x95, 0xf1, 0xf1, 0x87, 0xe7, 0x03, 0xd1, 0x8e, 0xff, 0x4d, 0x87, - 0x8c, 0xd8, 0xb3, 0xe1, 0x16, 0xb8, 0x4a, 0xea, 0xb3, 0x46, 0xd2, 0xf7, 0xf1, 0xbe, 0x1d, 0xde, - 0x62, 0x09, 0x17, 0xee, 0xfc, 0x08, 0xed, 0xa4, 0x2c, 0x8a, 0xc4, 0x8b, 0x26, 0x4e, 0x58, 0x44, - 0xfb, 0xf3, 0x94, 0xc5, 0x8e, 0xcc, 0x3b, 0x30, 0xf2, 0x8a, 0x47, 0xb8, 0x47, 0x08, 0xf7, 0xc5, - 0xfe, 0xdc, 0x77, 0x77, 0x09, 0xf9, 0xd8, 0xdd, 0xdd, 0xca, 0xd6, 0xb6, 0xb5, 0x59, 0xd8, 0xb0, - 0x18, 0xdc, 0x7c, 0x04, 0x92, 0x0d, 0xfb, 0x33, 0x27, 0x72, 0x89, 0x27, 0x43, 0x83, 0x1a, 0xfe, - 0x11, 0x48, 0xbe, 0x8e, 0xec, 0x57, 0xe5, 0xc2, 0x4a, 0x86, 0x3e, 0xc4, 0xd0, 0xbf, 0x0c, 0xc3, - 0xc4, 0x5e, 0x26, 0x00, 0xb3, 0x98, 0x31, 0x64, 0xa6, 0x20, 0x59, 0xda, 0xb6, 0x70, 0xf8, 0x1b, - 0x90, 0xa1, 0xa3, 0x95, 0x9d, 0xf5, 0x72, 0xa9, 0x6c, 0x24, 0x72, 0xd7, 0x60, 0x84, 0x1a, 0x01, - 0xa7, 0x46, 0x60, 0x06, 0x63, 0x88, 0x1d, 0x32, 0x0e, 0x8d, 0xcf, 0xee, 0x6f, 0x16, 0xcb, 0x96, - 0x91, 0x10, 0xdd, 0xeb, 0x41, 0x46, 0x6c, 0xd7, 0x7e, 0x3a, 0x31, 0xf5, 0x07, 0x1a, 0xa4, 0x85, - 0xf6, 0x0b, 0x2f, 0xfc, 0x76, 0xa3, 0xe1, 0xbe, 0x5e, 0xb1, 0x1b, 0x75, 0xdb, 0x63, 0x41, 0x01, - 0x64, 0xa8, 0x80, 0x47, 0x06, 0x75, 0xda, 0x4f, 0x45, 0xf9, 0x2f, 0x6b, 0x60, 0xa8, 0xad, 0x9b, - 0xa2, 0xa0, 0xf6, 0x33, 0x55, 0xf0, 0x8b, 0x1a, 0x4c, 0xc8, 0xfd, 0x9a, 0xa2, 0xde, 0x85, 0x9f, - 0xa9, 0x7a, 0xbf, 0xa1, 0xc1, 0xb8, 0xd4, 0xa5, 0xfd, 0x5c, 0x69, 0xf7, 0x05, 0x1d, 0xce, 0x44, - 0xe0, 0xcc, 0x02, 0x6b, 0x67, 0x69, 0x87, 0xfd, 0xf4, 0x20, 0xe7, 0x5a, 0xc4, 0xab, 0xe5, 0x8e, - 0xdd, 0xf6, 0x59, 0xf7, 0xfb, 0x14, 0x18, 0xf5, 0x1a, 0x72, 0xfc, 0xfa, 0x61, 0x1d, 0xb5, 0xd9, - 0x2d, 0x38, 0xed, 0x71, 0x27, 0xc3, 0x71, 0x7a, 0x17, 0xfe, 0x71, 0x30, 0x5b, 0xae, 0x57, 0xf7, - 0xeb, 0xaf, 0xa1, 0x4a, 0xdd, 0xe1, 0xf7, 0xeb, 0xb8, 0xe7, 0x4d, 0x5a, 0x06, 0x9f, 0x59, 0x77, - 0xfc, 0x40, 0xda, 0x41, 0x47, 0xb6, 0x22, 0x8d, 0x6b, 0x9f, 0x6e, 0x19, 0x7c, 0x26, 0x90, 0xbe, - 0x00, 0x99, 0x9a, 0xdb, 0xc1, 0xed, 0x03, 0x95, 0xc3, 0xa5, 0x56, 0xb3, 0xd2, 0x74, 0x2c, 0x10, - 0x61, 0xfd, 0x5d, 0xb8, 0x51, 0x90, 0xb1, 0xd2, 0x74, 0x8c, 0x8a, 0x3c, 0x09, 0x93, 0xf6, 0xd1, - 0x51, 0x1b, 0x93, 0x73, 0x22, 0xda, 0xb4, 0x4e, 0x04, 0xc3, 0x44, 0x70, 0xe6, 0x2e, 0xa4, 0xb8, - 0x1d, 0xf0, 0x6a, 0x86, 0x2d, 0x51, 0x69, 0xd1, 0xed, 0x9a, 0xc4, 0xfc, 0x98, 0x95, 0x72, 0xf8, - 0xe4, 0x05, 0xc8, 0xd4, 0xbd, 0x4a, 0xb8, 0x6f, 0x98, 0x38, 0x9f, 0x98, 0x4f, 0x59, 0xe9, 0xba, - 0x17, 0x6c, 0x14, 0xe5, 0xbe, 0x96, 0x80, 0x09, 0x79, 0xdf, 0xd3, 0x5c, 0x85, 0x54, 0xc3, 0xad, - 0xda, 0x24, 0x10, 0xe8, 0xa6, 0xfb, 0x7c, 0xcc, 0x56, 0xe9, 0xe2, 0x06, 0x93, 0xb7, 0x02, 0xe4, - 0xcc, 0x7f, 0xd2, 0x20, 0xc5, 0x87, 0xcd, 0x69, 0x48, 0xb6, 0x6c, 0xff, 0x98, 0xd0, 0x0d, 0x17, - 0x13, 0x86, 0x66, 0x91, 0x63, 0x3c, 0xee, 0xb5, 0x6c, 0x87, 0x84, 0x00, 0x1b, 0xc7, 0xc7, 0xd8, - 0xaf, 0x0d, 0x64, 0xd7, 0x48, 0x3b, 0xec, 0x36, 0x9b, 0xc8, 0xf1, 0x3d, 0xee, 0x57, 0x36, 0x5e, - 0x62, 0xc3, 0xe6, 0xc7, 0x60, 0xca, 0x6f, 0xdb, 0xf5, 0x86, 0x24, 0x9b, 0x24, 0xb2, 0x06, 0x9f, - 0x08, 0x84, 0xf3, 0xf0, 0x08, 0xe7, 0xad, 0x21, 0xdf, 0xae, 0x1e, 0xa3, 0x5a, 0x08, 0x1a, 0x21, - 0x9b, 0x6a, 0x0f, 0x33, 0x81, 0x55, 0x36, 0xcf, 0xb1, 0xb9, 0x3f, 0xd2, 0x60, 0x8a, 0x37, 0xf0, - 0xb5, 0xc0, 0x58, 0x9b, 0x00, 0xb6, 0xe3, 0xb8, 0xbe, 0x68, 0xae, 0xee, 0x50, 0xee, 0xc2, 0x2d, - 0x16, 0x02, 0x90, 0x25, 0x10, 0xcc, 0x34, 0x01, 0xc2, 0x99, 0x9e, 0x66, 0x9b, 0x83, 0x34, 0xdb, - 0xd4, 0x26, 0x4f, 0x46, 0xe8, 0x5d, 0x1f, 0xd0, 0x21, 0xdc, 0xe9, 0x9b, 0x67, 0x61, 0xf8, 0x00, - 0x1d, 0xd5, 0x1d, 0xb6, 0xd5, 0x46, 0x0f, 0xf8, 0x06, 0x5e, 0x32, 0xd8, 0xc0, 0x2b, 0xbe, 0x0c, - 0x67, 0xaa, 0x6e, 0x53, 0x55, 0xb7, 0x68, 0x28, 0x77, 0x9e, 0xde, 0xf3, 0xda, 0x2f, 0x40, 0xd8, - 0x9d, 0xbd, 0xa5, 0x69, 0xbf, 0x99, 0xd0, 0xef, 0xec, 0x14, 0x7f, 0x27, 0x31, 0x73, 0x87, 0x42, - 0x77, 0xf8, 0x95, 0x5a, 0xe8, 0xb0, 0x81, 0xaa, 0x58, 0x7b, 0xf8, 0xd3, 0x4b, 0xf0, 0xf4, 0x51, - 0xdd, 0x3f, 0xee, 0x1c, 0x2c, 0x56, 0xdd, 0xe6, 0xe5, 0x23, 0xf7, 0xc8, 0x0d, 0x1f, 0x06, 0xe1, - 0x23, 0x72, 0x40, 0x3e, 0xb1, 0x07, 0x42, 0x63, 0xc1, 0xe8, 0x4c, 0xec, 0xd3, 0xa3, 0xfc, 0x16, - 0x9c, 0x61, 0xc2, 0x15, 0xb2, 0x23, 0x4d, 0xfb, 0x70, 0xb3, 0xef, 0xae, 0x44, 0xf6, 0x77, 0xbf, - 0x47, 0x56, 0x3a, 0x6b, 0x8a, 0x41, 0xf1, 0x1c, 0xed, 0xd4, 0xf3, 0x16, 0x3c, 0x24, 0xf1, 0xd1, - 0xd4, 0x44, 0xed, 0x18, 0xc6, 0x6f, 0x33, 0xc6, 0x33, 0x02, 0xe3, 0x2e, 0x83, 0xe6, 0x4b, 0x30, - 0x7e, 0x1a, 0xae, 0x7f, 0xcf, 0xb8, 0x32, 0x48, 0x24, 0xb9, 0x03, 0x93, 0x84, 0xa4, 0xda, 0xf1, - 0x7c, 0xb7, 0x49, 0xea, 0x5e, 0x7f, 0x9a, 0xff, 0xf0, 0x3d, 0x9a, 0x2b, 0x13, 0x18, 0x56, 0x0a, - 0x50, 0xf9, 0x3c, 0x90, 0x4d, 0xf8, 0x1a, 0xaa, 0x36, 0x62, 0x18, 0xee, 0x31, 0x45, 0x02, 0xf9, - 0xfc, 0xa7, 0xe1, 0x2c, 0xfe, 0x4c, 0xca, 0x92, 0xa8, 0x49, 0xfc, 0x1e, 0x4c, 0xf6, 0x8f, 0x3e, - 0x4b, 0xd3, 0xf1, 0x4c, 0x40, 0x20, 0xe8, 0x24, 0x78, 0xf1, 0x08, 0xf9, 0x3e, 0x6a, 0x7b, 0x15, - 0xbb, 0x11, 0xa5, 0x9e, 0x70, 0x07, 0x9b, 0xfd, 0xf5, 0x1f, 0xc8, 0x5e, 0xbc, 0x43, 0x91, 0x85, - 0x46, 0x23, 0xbf, 0x0f, 0x0f, 0x47, 0x44, 0xc5, 0x00, 0x9c, 0x5f, 0x60, 0x9c, 0x67, 0xbb, 0x22, - 0x03, 0xd3, 0xee, 0x00, 0x1f, 0x0f, 0x7c, 0x39, 0x00, 0xe7, 0x6f, 0x30, 0x4e, 0x93, 0x61, 0xb9, - 0x4b, 0x31, 0xe3, 0x5d, 0x98, 0x7a, 0x0d, 0xb5, 0x0f, 0x5c, 0x8f, 0x6d, 0x1c, 0x0c, 0x40, 0xf7, - 0x45, 0x46, 0x37, 0xc9, 0x80, 0x64, 0x1b, 0x01, 0x73, 0xdd, 0x82, 0xd4, 0xa1, 0x5d, 0x45, 0x03, - 0x50, 0x7c, 0x89, 0x51, 0x8c, 0x62, 0x79, 0x0c, 0x2d, 0x40, 0xe6, 0xc8, 0x65, 0x2b, 0x53, 0x3c, - 0xfc, 0xcb, 0x0c, 0x9e, 0xe6, 0x18, 0x46, 0xd1, 0x72, 0x5b, 0x9d, 0x06, 0x5e, 0xb6, 0xe2, 0x29, - 0xbe, 0xc2, 0x29, 0x38, 0x86, 0x51, 0x9c, 0xc2, 0xac, 0x6f, 0x71, 0x0a, 0x4f, 0xb0, 0xe7, 0x73, - 0x90, 0x76, 0x9d, 0xc6, 0x89, 0xeb, 0x0c, 0xa2, 0xc4, 0x57, 0x19, 0x03, 0x30, 0x08, 0x26, 0xb8, - 0x0d, 0x63, 0x83, 0x3a, 0xe2, 0xb7, 0x7e, 0xc0, 0xd3, 0x83, 0x7b, 0xe0, 0x0e, 0x4c, 0xf2, 0x02, - 0x55, 0x77, 0x9d, 0x01, 0x28, 0xfe, 0x31, 0xa3, 0x98, 0x10, 0x60, 0xec, 0x32, 0x7c, 0xe4, 0xf9, - 0x47, 0x68, 0x10, 0x92, 0xaf, 0xf1, 0xcb, 0x60, 0x10, 0x66, 0xca, 0x03, 0xe4, 0x54, 0x8f, 0x07, - 0x63, 0xf8, 0x3a, 0x37, 0x25, 0xc7, 0x60, 0x8a, 0x12, 0x8c, 0x37, 0xed, 0xb6, 0x77, 0x6c, 0x37, - 0x06, 0x72, 0xc7, 0x6f, 0x33, 0x8e, 0x4c, 0x00, 0x62, 0x16, 0xe9, 0x38, 0xa7, 0xa1, 0xf9, 0x1d, - 0x6e, 0x11, 0x01, 0xc6, 0x52, 0xcf, 0xf3, 0xc9, 0xde, 0xcc, 0x69, 0xd8, 0xfe, 0x09, 0x4f, 0x3d, - 0x8a, 0xdd, 0x14, 0x19, 0x6f, 0xc3, 0x98, 0x57, 0xff, 0xcc, 0x40, 0x34, 0xff, 0x94, 0x7b, 0x9a, - 0x00, 0x30, 0xf8, 0x25, 0x78, 0x24, 0x72, 0x99, 0x18, 0x80, 0xec, 0x9f, 0x31, 0xb2, 0xe9, 0x88, - 0xa5, 0x82, 0x95, 0x84, 0xd3, 0x52, 0xfe, 0x73, 0x5e, 0x12, 0x90, 0xc2, 0xb5, 0x83, 0x3b, 0x7b, - 0xcf, 0x3e, 0x3c, 0x9d, 0xd5, 0xfe, 0x05, 0xb7, 0x1a, 0xc5, 0x4a, 0x56, 0xdb, 0x83, 0x69, 0xc6, - 0x78, 0x3a, 0xbf, 0x7e, 0x83, 0x17, 0x56, 0x8a, 0xde, 0x97, 0xbd, 0xfb, 0x32, 0xcc, 0x04, 0xe6, - 0xe4, 0x4d, 0xa9, 0x57, 0x69, 0xda, 0xad, 0x01, 0x98, 0x7f, 0x97, 0x31, 0xf3, 0x8a, 0x1f, 0x74, - 0xb5, 0xde, 0xa6, 0xdd, 0xc2, 0xe4, 0x2f, 0x42, 0x96, 0x93, 0x77, 0x9c, 0x36, 0xaa, 0xba, 0x47, - 0x4e, 0xfd, 0x33, 0xa8, 0x36, 0x00, 0xf5, 0x37, 0x15, 0x57, 0xed, 0x0b, 0x70, 0xcc, 0xbc, 0x0e, - 0x46, 0xd0, 0xab, 0x54, 0xea, 0xcd, 0x96, 0xdb, 0xf6, 0x63, 0x18, 0xff, 0x25, 0xf7, 0x54, 0x80, - 0x5b, 0x27, 0xb0, 0x7c, 0x19, 0x26, 0xc8, 0xe1, 0xa0, 0x21, 0xf9, 0x7b, 0x8c, 0x68, 0x3c, 0x44, - 0xb1, 0xc2, 0x51, 0x75, 0x9b, 0x2d, 0xbb, 0x3d, 0x48, 0xfd, 0xfb, 0x57, 0xbc, 0x70, 0x30, 0x08, - 0x2b, 0x1c, 0xfe, 0x49, 0x0b, 0xe1, 0xd5, 0x7e, 0x00, 0x86, 0x6f, 0xf1, 0xc2, 0xc1, 0x31, 0x8c, - 0x82, 0x37, 0x0c, 0x03, 0x50, 0xfc, 0x6b, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0x53, 0xe1, 0x42, 0xdb, - 0x46, 0x47, 0x75, 0xcf, 0x6f, 0xd3, 0x56, 0xb8, 0x3f, 0xd5, 0xef, 0xff, 0x40, 0x6e, 0xc2, 0x2c, - 0x01, 0x9a, 0xbf, 0x0b, 0x93, 0x4a, 0x8b, 0x61, 0xc6, 0x3d, 0xd1, 0xcf, 0xfe, 0xe2, 0x8f, 0x58, - 0x31, 0x92, 0x3b, 0x8c, 0xfc, 0x06, 0xf6, 0xbb, 0xdc, 0x07, 0xc4, 0x93, 0x7d, 0xf6, 0x47, 0x81, - 0xeb, 0xa5, 0x36, 0x20, 0xbf, 0x06, 0xe3, 0x52, 0x0f, 0x10, 0x4f, 0xf5, 0x57, 0x19, 0x55, 0x46, - 0x6c, 0x01, 0xf2, 0xd7, 0x20, 0x89, 0xd7, 0xf3, 0x78, 0xf8, 0x5f, 0x63, 0x70, 0x22, 0x9e, 0x7f, - 0x06, 0x52, 0x7c, 0x1d, 0x8f, 0x87, 0xfe, 0x32, 0x83, 0x06, 0x10, 0x0c, 0xe7, 0x6b, 0x78, 0x3c, - 0xfc, 0xaf, 0x73, 0x38, 0x87, 0x60, 0xf8, 0xe0, 0x26, 0x7c, 0xfb, 0x57, 0x93, 0xac, 0x0e, 0x73, - 0xdb, 0xdd, 0x86, 0x51, 0xb6, 0x78, 0xc7, 0xa3, 0x7f, 0x85, 0x9d, 0x9c, 0x23, 0xf2, 0x37, 0x60, - 0x78, 0x40, 0x83, 0xff, 0x4d, 0x06, 0xa5, 0xf2, 0xf9, 0x12, 0xa4, 0x85, 0x05, 0x3b, 0x1e, 0xfe, - 0xb7, 0x18, 0x5c, 0x44, 0x61, 0xd5, 0xd9, 0x82, 0x1d, 0x4f, 0xf0, 0xb7, 0xb9, 0xea, 0x0c, 0x81, - 0xcd, 0xc6, 0xd7, 0xea, 0x78, 0xf4, 0xdf, 0xe1, 0x56, 0xe7, 0x90, 0xfc, 0x73, 0x30, 0x16, 0xd4, - 0xdf, 0x78, 0xfc, 0xdf, 0x65, 0xf8, 0x10, 0x83, 0x2d, 0x20, 0xd4, 0xff, 0x78, 0x8a, 0xbf, 0xc7, - 0x2d, 0x20, 0xa0, 0x70, 0x1a, 0xa9, 0x6b, 0x7a, 0x3c, 0xd3, 0xaf, 0xf1, 0x34, 0x52, 0x96, 0x74, - 0xec, 0x4d, 0x52, 0x06, 0xe3, 0x29, 0xfe, 0x3e, 0xf7, 0x26, 0x91, 0xc7, 0x6a, 0xa8, 0x8b, 0x64, - 0x3c, 0xc7, 0x3f, 0xe4, 0x6a, 0x28, 0x6b, 0x64, 0x7e, 0x07, 0xcc, 0xee, 0x05, 0x32, 0x9e, 0xef, - 0xf3, 0x8c, 0x6f, 0xaa, 0x6b, 0x7d, 0xcc, 0xbf, 0x00, 0xd3, 0xd1, 0x8b, 0x63, 0x3c, 0xeb, 0xaf, - 0xff, 0x48, 0xb9, 0x9d, 0x11, 0xd7, 0xc6, 0xfc, 0x5e, 0x58, 0x65, 0xc5, 0x85, 0x31, 0x9e, 0xf6, - 0x0b, 0x3f, 0x92, 0x0b, 0xad, 0xb8, 0x2e, 0xe6, 0x0b, 0x00, 0xe1, 0x9a, 0x14, 0xcf, 0xf5, 0x45, - 0xc6, 0x25, 0x80, 0x70, 0x6a, 0xb0, 0x25, 0x29, 0x1e, 0xff, 0x25, 0x9e, 0x1a, 0x0c, 0x81, 0x53, - 0x83, 0xaf, 0x46, 0xf1, 0xe8, 0x2f, 0xf3, 0xd4, 0xe0, 0x90, 0xfc, 0x6d, 0x48, 0x39, 0x9d, 0x46, - 0x03, 0xc7, 0x96, 0xd9, 0xff, 0x25, 0x9b, 0xec, 0xff, 0xf8, 0x31, 0x03, 0x73, 0x40, 0xfe, 0x1a, - 0x0c, 0xa3, 0xe6, 0x01, 0xaa, 0xc5, 0x21, 0xff, 0xe7, 0x8f, 0x79, 0x3d, 0xc1, 0xd2, 0xf9, 0xe7, - 0x00, 0xe8, 0xcd, 0x34, 0x79, 0xc6, 0x12, 0x83, 0xfd, 0x5f, 0x3f, 0x66, 0xcf, 0xef, 0x43, 0x48, - 0x48, 0x40, 0xdf, 0x06, 0xe8, 0x4f, 0xf0, 0x03, 0x99, 0x80, 0xdc, 0x80, 0xdf, 0x82, 0xd1, 0x57, - 0x3c, 0xd7, 0xf1, 0xed, 0xa3, 0x38, 0xf4, 0xff, 0x66, 0x68, 0x2e, 0x8f, 0x0d, 0xd6, 0x74, 0xdb, - 0xc8, 0xb7, 0x8f, 0xbc, 0x38, 0xec, 0xff, 0x61, 0xd8, 0x00, 0x80, 0xc1, 0x55, 0xdb, 0xf3, 0x07, - 0xb9, 0xee, 0xff, 0xcb, 0xc1, 0x1c, 0x80, 0x95, 0xc6, 0x9f, 0x5f, 0x45, 0x27, 0x71, 0xd8, 0x1f, - 0x72, 0xa5, 0x99, 0x7c, 0xfe, 0x19, 0x18, 0xc3, 0x1f, 0xe9, 0x3b, 0x2d, 0x31, 0xe0, 0x3f, 0x61, - 0xe0, 0x10, 0x81, 0xcf, 0xec, 0xf9, 0x35, 0xbf, 0x1e, 0x6f, 0xec, 0xff, 0xc7, 0x3c, 0xcd, 0xe5, - 0xf3, 0x05, 0x48, 0x7b, 0x7e, 0xad, 0xd6, 0x61, 0x1d, 0x4d, 0x0c, 0xfc, 0x4f, 0x7f, 0x1c, 0xdc, - 0xe4, 0x06, 0x98, 0xe2, 0x85, 0xe8, 0xfd, 0x3a, 0xb8, 0xe3, 0xde, 0x71, 0xe9, 0x4e, 0x1d, 0x7c, - 0xaf, 0x01, 0x37, 0x7a, 0xee, 0xba, 0xe1, 0x45, 0xe4, 0x72, 0xd5, 0x6d, 0x1e, 0xb8, 0xde, 0xe5, - 0x03, 0xd7, 0x3f, 0xbe, 0xec, 0x1f, 0x23, 0x3c, 0xc6, 0xf6, 0xdf, 0x92, 0xf8, 0xf3, 0xcc, 0xe9, - 0x36, 0xed, 0xc8, 0xd3, 0xcc, 0xad, 0x3a, 0xd6, 0x7b, 0x8b, 0xec, 0x8a, 0x9b, 0xe7, 0x60, 0x84, - 0x5c, 0xc9, 0x15, 0xf2, 0xd0, 0x46, 0x2b, 0x26, 0xef, 0xbd, 0x3b, 0x37, 0x64, 0xb1, 0xb1, 0x60, - 0x76, 0x99, 0x6c, 0x5b, 0x26, 0xa4, 0xd9, 0xe5, 0x60, 0xf6, 0x2a, 0xdd, 0xb9, 0x94, 0x66, 0xaf, - 0x06, 0xb3, 0x2b, 0x64, 0x0f, 0x53, 0x97, 0x66, 0x57, 0x82, 0xd9, 0x6b, 0x64, 0x9f, 0x7e, 0x5c, - 0x9a, 0xbd, 0x16, 0xcc, 0x5e, 0x27, 0xbb, 0xf3, 0x49, 0x69, 0xf6, 0x7a, 0x30, 0x7b, 0x83, 0x6c, - 0xcc, 0x4f, 0x49, 0xb3, 0x37, 0x82, 0xd9, 0x9b, 0x64, 0x43, 0xde, 0x94, 0x66, 0x6f, 0x06, 0xb3, - 0xb7, 0xc8, 0xdb, 0x17, 0xa3, 0xd2, 0xec, 0x2d, 0x73, 0x16, 0x46, 0xe9, 0x95, 0x2f, 0x91, 0x07, - 0x9f, 0x93, 0x6c, 0x9a, 0x0f, 0x86, 0xf3, 0x57, 0xc8, 0x9b, 0x16, 0x23, 0xf2, 0xfc, 0x95, 0x70, - 0x7e, 0x99, 0xbc, 0x76, 0x6c, 0xc8, 0xf3, 0xcb, 0xe1, 0xfc, 0xd5, 0xec, 0x38, 0x0e, 0x18, 0x79, - 0xfe, 0x6a, 0x38, 0xbf, 0x92, 0x9d, 0xc0, 0xc1, 0x2c, 0xcf, 0xaf, 0x84, 0xf3, 0xd7, 0xb2, 0x93, - 0xe7, 0xb5, 0xf9, 0x8c, 0x3c, 0x7f, 0x2d, 0xf7, 0x4b, 0xc4, 0xbd, 0x4e, 0xe8, 0xde, 0x69, 0xd9, - 0xbd, 0x81, 0x63, 0xa7, 0x65, 0xc7, 0x06, 0x2e, 0x9d, 0x96, 0x5d, 0x1a, 0x38, 0x73, 0x5a, 0x76, - 0x66, 0xe0, 0xc6, 0x69, 0xd9, 0x8d, 0x81, 0x03, 0xa7, 0x65, 0x07, 0x06, 0xae, 0x9b, 0x96, 0x5d, - 0x17, 0x38, 0x6d, 0x5a, 0x76, 0x5a, 0xe0, 0xae, 0x69, 0xd9, 0x5d, 0x81, 0xa3, 0xb2, 0x8a, 0xa3, - 0x42, 0x17, 0x65, 0x15, 0x17, 0x85, 0xce, 0xc9, 0x2a, 0xce, 0x09, 0xdd, 0x92, 0x55, 0xdc, 0x12, - 0x3a, 0x24, 0xab, 0x38, 0x24, 0x74, 0x45, 0x56, 0x71, 0x45, 0xe8, 0x04, 0x96, 0x63, 0x16, 0x6a, - 0x45, 0xe4, 0x98, 0xde, 0x37, 0xc7, 0xf4, 0xbe, 0x39, 0xa6, 0xf7, 0xcd, 0x31, 0xbd, 0x6f, 0x8e, - 0xe9, 0x7d, 0x73, 0x4c, 0xef, 0x9b, 0x63, 0x7a, 0xdf, 0x1c, 0xd3, 0xfb, 0xe6, 0x98, 0xde, 0x3f, - 0xc7, 0xf4, 0x98, 0x1c, 0xd3, 0x63, 0x72, 0x4c, 0x8f, 0xc9, 0x31, 0x3d, 0x26, 0xc7, 0xf4, 0x98, - 0x1c, 0xd3, 0x7b, 0xe6, 0x58, 0xe8, 0xde, 0x69, 0xd9, 0xbd, 0x91, 0x39, 0xa6, 0xf7, 0xc8, 0x31, - 0xbd, 0x47, 0x8e, 0xe9, 0x3d, 0x72, 0x4c, 0xef, 0x91, 0x63, 0x7a, 0x8f, 0x1c, 0xd3, 0x7b, 0xe4, - 0x98, 0xde, 0x23, 0xc7, 0xf4, 0x5e, 0x39, 0xa6, 0xf7, 0xcc, 0x31, 0xbd, 0x67, 0x8e, 0xe9, 0x3d, - 0x73, 0x4c, 0xef, 0x99, 0x63, 0x7a, 0xcf, 0x1c, 0xd3, 0xc5, 0x1c, 0xfb, 0x37, 0x3a, 0x98, 0x34, - 0xc7, 0x76, 0xc8, 0xab, 0x33, 0xcc, 0x15, 0xb3, 0x4a, 0xa6, 0x8d, 0x60, 0xd7, 0x19, 0xa1, 0x4b, - 0x66, 0x95, 0x5c, 0x93, 0xe7, 0x97, 0x83, 0x79, 0x9e, 0x6d, 0xf2, 0xfc, 0xd5, 0x60, 0x9e, 0xe7, - 0x9b, 0x3c, 0xbf, 0x12, 0xcc, 0xf3, 0x8c, 0x93, 0xe7, 0xaf, 0x05, 0xf3, 0x3c, 0xe7, 0xe4, 0xf9, - 0xeb, 0xc1, 0x3c, 0xcf, 0x3a, 0x79, 0xfe, 0x46, 0x30, 0xcf, 0xf3, 0x4e, 0x9e, 0xbf, 0x19, 0xcc, - 0xf3, 0xcc, 0x93, 0xe7, 0x6f, 0x99, 0xe7, 0xd5, 0xdc, 0xe3, 0x02, 0x81, 0x6b, 0xcf, 0xab, 0xd9, - 0xa7, 0x48, 0x5c, 0x09, 0x25, 0x78, 0xfe, 0x29, 0x12, 0xcb, 0xa1, 0x04, 0xcf, 0x40, 0x45, 0xe2, - 0x6a, 0xee, 0x73, 0xc4, 0x7d, 0x8e, 0xea, 0xbe, 0x19, 0xc5, 0x7d, 0x09, 0xc1, 0x75, 0x33, 0x8a, - 0xeb, 0x12, 0x82, 0xdb, 0x66, 0x14, 0xb7, 0x25, 0x04, 0x97, 0xcd, 0x28, 0x2e, 0x4b, 0x08, 0xee, - 0x9a, 0x51, 0xdc, 0x95, 0x10, 0x5c, 0x35, 0xa3, 0xb8, 0x2a, 0x21, 0xb8, 0x69, 0x46, 0x71, 0x53, - 0x42, 0x70, 0xd1, 0x8c, 0xe2, 0xa2, 0x84, 0xe0, 0x9e, 0x19, 0xc5, 0x3d, 0x09, 0xc1, 0x35, 0xe7, - 0x54, 0xd7, 0x24, 0x44, 0xb7, 0x9c, 0x53, 0xdd, 0x92, 0x10, 0x5d, 0x72, 0x4e, 0x75, 0x49, 0x42, - 0x74, 0xc7, 0x39, 0xd5, 0x1d, 0x09, 0xd1, 0x15, 0x3f, 0x49, 0xf0, 0x8e, 0x70, 0xd7, 0x6f, 0x77, - 0xaa, 0xfe, 0xfb, 0xea, 0x08, 0x97, 0xa4, 0xf6, 0x21, 0xbd, 0x6c, 0x2e, 0x92, 0x86, 0x55, 0xec, - 0x38, 0x95, 0x15, 0x6c, 0x49, 0x6a, 0x2c, 0x04, 0x84, 0x13, 0x8d, 0x58, 0x79, 0x5f, 0xbd, 0xe1, - 0x92, 0xd4, 0x66, 0xc4, 0xeb, 0x77, 0xf3, 0x43, 0xef, 0xd8, 0xde, 0x4e, 0xf0, 0x8e, 0x8d, 0x99, - 0xff, 0xb4, 0x1d, 0xdb, 0x42, 0xbc, 0xc9, 0x03, 0x63, 0x2f, 0xc4, 0x1b, 0xbb, 0x6b, 0xd5, 0x19, - 0xb4, 0x83, 0x5b, 0x88, 0x37, 0x6d, 0x60, 0xd4, 0x0f, 0xb6, 0xdf, 0x62, 0x11, 0x6c, 0xa1, 0x56, - 0x44, 0x04, 0x9f, 0xb6, 0xdf, 0x5a, 0x92, 0x4a, 0xc9, 0x69, 0x23, 0x58, 0x3f, 0x75, 0x04, 0x9f, - 0xb6, 0xf3, 0x5a, 0x92, 0xca, 0xcb, 0xa9, 0x23, 0xf8, 0x43, 0xe8, 0x87, 0x58, 0x04, 0x87, 0xe6, - 0x3f, 0x6d, 0x3f, 0xb4, 0x10, 0x6f, 0xf2, 0xc8, 0x08, 0xd6, 0x4f, 0x11, 0xc1, 0x83, 0xf4, 0x47, - 0x0b, 0xf1, 0xa6, 0x8d, 0x8e, 0xe0, 0xf7, 0xdd, 0xcd, 0x7c, 0x45, 0x83, 0xa9, 0xad, 0x7a, 0xad, - 0xdc, 0x3c, 0x40, 0xb5, 0x1a, 0xaa, 0x31, 0x3b, 0x2e, 0x49, 0x95, 0xa0, 0x87, 0xab, 0xdf, 0x79, - 0x77, 0x2e, 0xb4, 0xf0, 0x35, 0x48, 0x51, 0x9b, 0x2e, 0x2d, 0x65, 0xef, 0x69, 0x31, 0x15, 0x2e, - 0x10, 0x35, 0x2f, 0x70, 0xd8, 0x95, 0xa5, 0xec, 0x7f, 0xd6, 0x84, 0x2a, 0x17, 0x0c, 0xe7, 0x7e, - 0x8d, 0x68, 0xe8, 0xbc, 0x6f, 0x0d, 0x2f, 0x0f, 0xa4, 0xa1, 0xa0, 0xdb, 0xa3, 0x5d, 0xba, 0x09, - 0x5a, 0x75, 0x60, 0x72, 0xab, 0x5e, 0xdb, 0x22, 0x5f, 0x78, 0x1d, 0x44, 0x25, 0x2a, 0xa3, 0xd4, - 0x83, 0x25, 0x29, 0x2c, 0x45, 0x44, 0x10, 0xd2, 0x72, 0x8d, 0xc8, 0xd5, 0xf1, 0x69, 0x1d, 0xe9, - 0xb4, 0x0b, 0xbd, 0x4e, 0x1b, 0x56, 0xf6, 0xe0, 0x84, 0x0b, 0xbd, 0x4e, 0x18, 0xe6, 0x50, 0x70, - 0xaa, 0x37, 0xf8, 0xe2, 0x4c, 0xdf, 0xc2, 0x31, 0xcf, 0x41, 0x62, 0x9d, 0xbe, 0x5f, 0x9b, 0x29, - 0x66, 0xb0, 0x52, 0xdf, 0x79, 0x77, 0x2e, 0xb9, 0xdf, 0xa9, 0xd7, 0xac, 0xc4, 0x7a, 0xcd, 0xbc, - 0x0b, 0xc3, 0x9f, 0x66, 0x5f, 0x1b, 0xc3, 0x02, 0x2b, 0x4c, 0xe0, 0xe3, 0x31, 0x5b, 0x4c, 0x84, - 0x7a, 0x71, 0xbf, 0xee, 0xf8, 0x57, 0x96, 0x6f, 0x5a, 0x94, 0x22, 0xf7, 0x17, 0x01, 0xe8, 0x39, - 0x57, 0x6d, 0xef, 0xd8, 0xdc, 0xe2, 0xcc, 0xf4, 0xd4, 0x37, 0xbf, 0xf3, 0xee, 0xdc, 0xca, 0x20, - 0xac, 0x4f, 0xd7, 0x6c, 0xef, 0xf8, 0x69, 0xff, 0xa4, 0x85, 0x16, 0x8b, 0x27, 0x3e, 0xf2, 0x38, - 0x7b, 0x8b, 0xaf, 0x7a, 0xec, 0xba, 0xb2, 0xc2, 0x75, 0xa5, 0xa4, 0x6b, 0x5a, 0x93, 0xaf, 0x69, - 0xe9, 0x41, 0xaf, 0xe7, 0x0d, 0xbe, 0x48, 0x28, 0x96, 0xd4, 0xe3, 0x2c, 0xa9, 0xbf, 0x5f, 0x4b, - 0xb6, 0x78, 0x7d, 0x54, 0xae, 0x55, 0xef, 0x77, 0xad, 0xfa, 0xfb, 0xb9, 0xd6, 0x3f, 0xa3, 0xd9, - 0x1a, 0xe4, 0xd3, 0xbe, 0x43, 0x5f, 0x50, 0xfc, 0xf9, 0xda, 0x0b, 0xfa, 0x40, 0xbb, 0x80, 0x7c, - 0xf2, 0xde, 0x5b, 0x73, 0x5a, 0xee, 0x2b, 0x09, 0x7e, 0xe5, 0x34, 0x91, 0x1e, 0xec, 0xca, 0x7f, - 0x5e, 0x7a, 0xaa, 0x0f, 0xc3, 0x42, 0x5f, 0xd6, 0x60, 0xba, 0xab, 0x92, 0x53, 0x33, 0x7d, 0xb0, - 0xe5, 0xdc, 0x39, 0x6d, 0x39, 0x67, 0x0a, 0xfe, 0x9e, 0x06, 0x67, 0x95, 0xf2, 0x4a, 0xd5, 0xbb, - 0xac, 0xa8, 0xf7, 0x70, 0xf7, 0x99, 0x88, 0xa0, 0xa0, 0x9d, 0xe8, 0x5e, 0x05, 0x20, 0x30, 0x07, - 0x7e, 0x5f, 0x51, 0xfc, 0x7e, 0x2e, 0x00, 0x44, 0x98, 0x8b, 0x47, 0x00, 0x53, 0xdb, 0x85, 0xe4, - 0x5e, 0x1b, 0x21, 0x73, 0x16, 0x12, 0xdb, 0x6d, 0xa6, 0xe1, 0x04, 0xc5, 0x6f, 0xb7, 0x8b, 0x6d, - 0xdb, 0xa9, 0x1e, 0x5b, 0x89, 0xed, 0xb6, 0x79, 0x01, 0xf4, 0x02, 0xfb, 0x62, 0x7e, 0x7a, 0x79, - 0x92, 0x0a, 0x14, 0x9c, 0x1a, 0x93, 0xc0, 0x73, 0xe6, 0x2c, 0x24, 0x37, 0x90, 0x7d, 0xc8, 0x94, - 0x00, 0x2a, 0x83, 0x47, 0x2c, 0x32, 0xce, 0x4e, 0xf8, 0x22, 0xa4, 0x38, 0xb1, 0x79, 0x11, 0x23, - 0x0e, 0x7d, 0x76, 0x5a, 0x86, 0xc0, 0xea, 0xb0, 0x95, 0x8b, 0xcc, 0x9a, 0x97, 0x60, 0xd8, 0xaa, - 0x1f, 0x1d, 0xfb, 0xec, 0xe4, 0xdd, 0x62, 0x74, 0x3a, 0xf7, 0x12, 0x8c, 0x05, 0x1a, 0x7d, 0xc0, - 0xd4, 0xab, 0xf4, 0xd2, 0xcc, 0x19, 0x71, 0x3d, 0xe1, 0xfb, 0x96, 0x74, 0xc8, 0x3c, 0x0f, 0xa9, - 0x5d, 0xbf, 0x1d, 0x16, 0x7d, 0xde, 0x91, 0x06, 0xa3, 0xb9, 0x5f, 0xd2, 0x20, 0xb5, 0x8a, 0x50, - 0x8b, 0x18, 0xfc, 0x09, 0x48, 0xae, 0xba, 0xaf, 0x3b, 0x4c, 0xc1, 0x29, 0x66, 0x51, 0x3c, 0xcd, - 0x6c, 0x4a, 0xa6, 0xcd, 0x27, 0x44, 0xbb, 0x9f, 0x09, 0xec, 0x2e, 0xc8, 0x11, 0xdb, 0xe7, 0x24, - 0xdb, 0x33, 0x07, 0x62, 0xa1, 0x2e, 0xfb, 0xdf, 0x80, 0xb4, 0x70, 0x16, 0x73, 0x9e, 0xa9, 0x91, - 0x50, 0x81, 0xa2, 0xad, 0xb0, 0x44, 0x0e, 0xc1, 0xb8, 0x74, 0x62, 0x0c, 0x15, 0x4c, 0xdc, 0x03, - 0x4a, 0xcc, 0xbc, 0x20, 0x9b, 0x39, 0x5a, 0x94, 0x99, 0x7a, 0x89, 0xda, 0x88, 0x98, 0xfb, 0x22, - 0x0d, 0xce, 0xde, 0x4e, 0xc4, 0x9f, 0x73, 0xc3, 0xa0, 0x6f, 0xd5, 0x1b, 0xb9, 0x67, 0x00, 0x68, - 0xca, 0x97, 0x9d, 0x4e, 0x53, 0xc9, 0xba, 0x09, 0x6e, 0xe0, 0xbd, 0x63, 0xb4, 0x87, 0x3c, 0x22, - 0x22, 0xf7, 0x53, 0xb8, 0xc0, 0x00, 0x4d, 0x31, 0x82, 0x7f, 0x2a, 0x16, 0x1f, 0xd9, 0x89, 0x61, - 0xd1, 0x2c, 0x15, 0x7d, 0x09, 0xf9, 0x05, 0xc7, 0xf5, 0x8f, 0x51, 0x5b, 0x41, 0x2c, 0x9b, 0x57, - 0xa5, 0x84, 0x9d, 0x58, 0x7e, 0x34, 0x40, 0xf4, 0x04, 0x5d, 0xcd, 0x7d, 0x83, 0x28, 0x88, 0x5b, - 0x81, 0xae, 0x0b, 0xd4, 0x07, 0xb8, 0x40, 0xf3, 0xba, 0xd4, 0xbf, 0xf5, 0x51, 0x53, 0xb9, 0xb5, - 0xbc, 0x25, 0xdd, 0xe7, 0xf4, 0x57, 0x56, 0xbe, 0xc7, 0xe4, 0x36, 0xe5, 0x2a, 0x3f, 0x15, 0xab, - 0x72, 0x8f, 0xee, 0xf6, 0xb4, 0x36, 0xd5, 0x07, 0xb5, 0xe9, 0x1f, 0x04, 0x1d, 0x07, 0xfd, 0x89, - 0x03, 0xf2, 0x8b, 0x1a, 0xe6, 0xc7, 0x63, 0x7d, 0x9f, 0xd7, 0x4a, 0x81, 0xaa, 0x2b, 0x83, 0xba, - 0x3f, 0x9f, 0x28, 0x16, 0x03, 0x75, 0x6f, 0x9c, 0x22, 0x04, 0xf2, 0x89, 0x52, 0x29, 0x28, 0xdb, - 0xa9, 0xcf, 0xbd, 0x35, 0xa7, 0x7d, 0xfd, 0xad, 0xb9, 0xa1, 0xdc, 0x6f, 0x6b, 0x30, 0xc5, 0x24, - 0x85, 0xc0, 0x7d, 0x5a, 0x51, 0xfe, 0x21, 0x5e, 0x33, 0xa2, 0x2c, 0xf0, 0x53, 0x0b, 0xde, 0x6f, - 0x6b, 0x90, 0xed, 0xd2, 0x95, 0xdb, 0x7b, 0x69, 0x20, 0x95, 0xf3, 0x5a, 0xf9, 0x67, 0x6f, 0xf3, - 0x97, 0x60, 0x78, 0xaf, 0xde, 0x44, 0x6d, 0xbc, 0x12, 0xe0, 0x0f, 0x54, 0x65, 0xfe, 0x30, 0x87, - 0x0e, 0xf1, 0x39, 0xaa, 0x9c, 0x34, 0xb7, 0x6c, 0x66, 0x21, 0xb9, 0x6a, 0xfb, 0x36, 0xd1, 0x20, - 0x13, 0xd4, 0x57, 0xdb, 0xb7, 0x73, 0x57, 0x21, 0xb3, 0x79, 0x42, 0x5e, 0xa1, 0xa9, 0x91, 0xd7, - 0x43, 0xe4, 0xee, 0x8f, 0xf7, 0xab, 0x57, 0x16, 0x86, 0x53, 0x35, 0xe3, 0x9e, 0x96, 0x4f, 0x12, - 0x7d, 0x5e, 0x83, 0x89, 0x6d, 0xac, 0x36, 0xc1, 0x11, 0xd8, 0x79, 0xd0, 0x36, 0xe5, 0x46, 0x48, - 0x64, 0xb5, 0xb4, 0x4d, 0xa5, 0x7d, 0xd4, 0x03, 0xf3, 0x28, 0x6d, 0x9b, 0x1e, 0xb4, 0x6d, 0x0b, - 0xc9, 0xd4, 0x84, 0x31, 0xb5, 0x90, 0x4c, 0x81, 0x31, 0xce, 0xce, 0xfb, 0x1f, 0x75, 0x30, 0x68, - 0xab, 0xb3, 0x8a, 0x0e, 0xeb, 0x4e, 0xdd, 0xef, 0xee, 0x57, 0x03, 0x8d, 0xcd, 0xe7, 0x60, 0x0c, - 0x9b, 0x74, 0x8d, 0xfd, 0x30, 0x15, 0x36, 0xfd, 0x05, 0xd6, 0xa2, 0x28, 0x14, 0x6c, 0x80, 0x84, - 0x4e, 0x88, 0x31, 0xd7, 0x40, 0xdf, 0xda, 0xda, 0x64, 0x8b, 0xdb, 0x4a, 0x5f, 0x28, 0x7b, 0x03, - 0x87, 0x1d, 0xb1, 0x31, 0xef, 0xc8, 0xc2, 0x04, 0xe6, 0x0a, 0x24, 0xb6, 0x36, 0x59, 0xc3, 0x7b, - 0x71, 0x10, 0x1a, 0x2b, 0xb1, 0xb5, 0x39, 0xf3, 0x6f, 0x35, 0x18, 0x97, 0x46, 0xcd, 0x1c, 0x64, - 0xe8, 0x80, 0x70, 0xb9, 0x23, 0x96, 0x34, 0xc6, 0x75, 0x4e, 0xbc, 0x4f, 0x9d, 0x67, 0x0a, 0x30, - 0xa9, 0x8c, 0x9b, 0x8b, 0x60, 0x8a, 0x43, 0x4c, 0x09, 0xfa, 0xa3, 0x3e, 0x11, 0x33, 0xb9, 0xc7, - 0x00, 0x42, 0xbb, 0x06, 0xbf, 0x45, 0xb3, 0x55, 0xde, 0xdd, 0x2b, 0xaf, 0x1a, 0x5a, 0xee, 0x5b, - 0x1a, 0xa4, 0x59, 0xdb, 0x5a, 0x75, 0x5b, 0xc8, 0x2c, 0x82, 0x56, 0x60, 0x11, 0xf4, 0x60, 0x7a, - 0x6b, 0x05, 0xf3, 0x32, 0x68, 0xc5, 0xc1, 0x5d, 0xad, 0x15, 0xcd, 0x65, 0xd0, 0x4a, 0xcc, 0xc1, - 0x83, 0x79, 0x46, 0x2b, 0xe5, 0xfe, 0x44, 0x87, 0x33, 0x62, 0x1b, 0xcd, 0xeb, 0xc9, 0x05, 0xf9, - 0xbe, 0x29, 0x3f, 0x76, 0x65, 0xf9, 0xea, 0xca, 0x22, 0xfe, 0x27, 0x08, 0xc9, 0x0b, 0xf2, 0x2d, - 0x54, 0xb7, 0x48, 0xd7, 0x6b, 0x22, 0xf9, 0xa4, 0x30, 0xdb, 0xf5, 0x9a, 0x88, 0x34, 0xdb, 0xf5, - 0x9a, 0x88, 0x34, 0xdb, 0xf5, 0x9a, 0x88, 0x34, 0xdb, 0xf5, 0x28, 0x40, 0x9a, 0xed, 0x7a, 0x4d, - 0x44, 0x9a, 0xed, 0x7a, 0x4d, 0x44, 0x9a, 0xed, 0x7e, 0x4d, 0x84, 0x4d, 0xf7, 0x7c, 0x4d, 0x44, - 0x9e, 0xef, 0x7e, 0x4d, 0x44, 0x9e, 0xef, 0x7e, 0x4d, 0x24, 0x9f, 0xf4, 0xdb, 0x1d, 0xd4, 0xfb, - 0xa1, 0x83, 0x8c, 0xef, 0x77, 0x0f, 0x18, 0x16, 0xe0, 0x6d, 0x98, 0xa4, 0xfb, 0x11, 0x25, 0xd7, - 0xf1, 0xed, 0xba, 0x83, 0xda, 0xe6, 0x27, 0x20, 0x43, 0x87, 0xe8, 0x5d, 0x4e, 0xd4, 0x5d, 0x20, - 0x9d, 0x67, 0xe5, 0x56, 0x92, 0xce, 0xfd, 0x24, 0x09, 0xd3, 0x74, 0x60, 0xcb, 0x6e, 0x22, 0xe9, - 0x25, 0xa3, 0x4b, 0xca, 0x23, 0xa5, 0x09, 0x0c, 0xbf, 0xff, 0xee, 0x1c, 0x1d, 0x2d, 0x04, 0xc1, - 0x74, 0x49, 0x79, 0xb8, 0x24, 0xcb, 0x85, 0xeb, 0xcf, 0x25, 0xe5, 0xc5, 0x23, 0x59, 0x2e, 0x58, - 0x6e, 0x02, 0x39, 0xfe, 0x0a, 0x92, 0x2c, 0xb7, 0x1a, 0x44, 0xd9, 0x25, 0xe5, 0x65, 0x24, 0x59, - 0xae, 0x1c, 0xc4, 0xdb, 0x25, 0xe5, 0xd1, 0x93, 0x2c, 0xb7, 0x16, 0x44, 0xde, 0x25, 0xe5, 0x21, - 0x94, 0x2c, 0x77, 0x27, 0x88, 0xc1, 0x4b, 0xca, 0xab, 0x4a, 0xb2, 0xdc, 0xf3, 0x41, 0x34, 0x5e, - 0x52, 0x5e, 0x5a, 0x92, 0xe5, 0xd6, 0x83, 0xb8, 0x9c, 0x57, 0x5f, 0x5f, 0x92, 0x05, 0xef, 0x86, - 0x11, 0x3a, 0xaf, 0xbe, 0xc8, 0x24, 0x4b, 0x7e, 0x32, 0x8c, 0xd5, 0x79, 0xf5, 0x95, 0x26, 0x59, - 0x72, 0x23, 0x8c, 0xda, 0x79, 0xf5, 0x51, 0x99, 0x2c, 0xb9, 0x19, 0xc6, 0xef, 0xbc, 0xfa, 0xd0, - 0x4c, 0x96, 0xdc, 0x0a, 0x23, 0x79, 0x5e, 0x7d, 0x7c, 0x26, 0x4b, 0x6e, 0x87, 0x7b, 0xe8, 0x7f, - 0xa8, 0x84, 0x9f, 0xf0, 0x12, 0x54, 0x4e, 0x09, 0x3f, 0x88, 0x08, 0xbd, 0x9c, 0x12, 0x7a, 0x10, - 0x11, 0x76, 0x39, 0x25, 0xec, 0x20, 0x22, 0xe4, 0x72, 0x4a, 0xc8, 0x41, 0x44, 0xb8, 0xe5, 0x94, - 0x70, 0x83, 0x88, 0x50, 0xcb, 0x29, 0xa1, 0x06, 0x11, 0x61, 0x96, 0x53, 0xc2, 0x0c, 0x22, 0x42, - 0x2c, 0xa7, 0x84, 0x18, 0x44, 0x84, 0x57, 0x4e, 0x09, 0x2f, 0x88, 0x08, 0xad, 0x8b, 0x6a, 0x68, - 0x41, 0x54, 0x58, 0x5d, 0x54, 0xc3, 0x0a, 0xa2, 0x42, 0xea, 0x71, 0x35, 0xa4, 0xc6, 0xee, 0xbf, - 0x3b, 0x37, 0x8c, 0x87, 0x84, 0x68, 0xba, 0xa8, 0x46, 0x13, 0x44, 0x45, 0xd2, 0x45, 0x35, 0x92, - 0x20, 0x2a, 0x8a, 0x2e, 0xaa, 0x51, 0x04, 0x51, 0x11, 0xf4, 0xb6, 0x1a, 0x41, 0xe1, 0x2b, 0x3e, - 0x39, 0xe5, 0x89, 0x62, 0x5c, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, - 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, - 0x48, 0x04, 0xe9, 0x03, 0x45, 0x90, 0xde, 0x2b, 0x82, 0x2e, 0xaa, 0x2f, 0x3c, 0x40, 0x54, 0x41, - 0xba, 0xa8, 0x3e, 0xf9, 0x8c, 0x0f, 0x21, 0x7d, 0xa0, 0x10, 0xd2, 0x7b, 0x85, 0xd0, 0x1f, 0xea, - 0x70, 0x46, 0x0a, 0x21, 0xf6, 0x78, 0xe8, 0x83, 0xaa, 0x40, 0xd7, 0x07, 0x78, 0xbf, 0x22, 0x2a, - 0xa6, 0xae, 0x0f, 0xf0, 0x8c, 0xba, 0x5f, 0x9c, 0x75, 0x57, 0xa1, 0xf2, 0x00, 0x55, 0x68, 0x2d, - 0x88, 0xa1, 0xeb, 0x03, 0xbc, 0x77, 0xd1, 0x1d, 0x7b, 0x37, 0xfb, 0x15, 0x81, 0xe7, 0x07, 0x2a, - 0x02, 0xeb, 0x03, 0x15, 0x81, 0xbb, 0xa1, 0x07, 0x7f, 0x39, 0x01, 0x67, 0x43, 0x0f, 0xd2, 0x4f, - 0xe4, 0x07, 0x86, 0x72, 0xc2, 0x13, 0x2a, 0x93, 0x3f, 0xb5, 0x11, 0xdc, 0x98, 0x58, 0xaf, 0x99, - 0x3b, 0xf2, 0xb3, 0xaa, 0xfc, 0x69, 0x9f, 0xdf, 0x08, 0x1e, 0x67, 0x7b, 0xa1, 0x17, 0x41, 0x5f, - 0xaf, 0x79, 0xa4, 0x5a, 0x44, 0x9d, 0xb6, 0x64, 0xe1, 0x69, 0xd3, 0x82, 0x11, 0x22, 0xee, 0x11, - 0xf7, 0xbe, 0x9f, 0x13, 0xaf, 0x5a, 0x8c, 0x29, 0xf7, 0xb6, 0x06, 0xe7, 0xa5, 0x50, 0xfe, 0x60, - 0x9e, 0x18, 0xdc, 0x1e, 0xe8, 0x89, 0x81, 0x94, 0x20, 0xe1, 0xd3, 0x83, 0x27, 0xbb, 0x1f, 0x54, - 0x8b, 0x59, 0xa2, 0x3e, 0x49, 0xf8, 0x2b, 0x30, 0x11, 0x5e, 0x01, 0xb9, 0x65, 0xbb, 0x16, 0xbf, - 0x99, 0x19, 0x95, 0x9a, 0xd7, 0x94, 0x4d, 0xb4, 0xbe, 0xb0, 0x20, 0x5b, 0x73, 0x79, 0x98, 0xdc, - 0x92, 0xbf, 0xcb, 0x13, 0xb7, 0x17, 0x91, 0xc2, 0xad, 0xf9, 0xbd, 0xaf, 0xce, 0x0d, 0xe5, 0x3e, - 0x0e, 0x19, 0xf1, 0xeb, 0x3a, 0x0a, 0x70, 0x8c, 0x03, 0xf3, 0xc9, 0x77, 0xb0, 0xf4, 0x3f, 0xd0, - 0xe0, 0x21, 0x51, 0xfc, 0x85, 0xba, 0x7f, 0xbc, 0xee, 0xe0, 0x9e, 0xfe, 0x19, 0x48, 0x21, 0xe6, - 0x38, 0xf6, 0x83, 0x27, 0xec, 0x36, 0x32, 0x52, 0x7c, 0x91, 0xfc, 0x6b, 0x05, 0x10, 0x65, 0x8b, - 0x83, 0x9f, 0x76, 0x79, 0xe6, 0x09, 0x18, 0xa6, 0xfc, 0xb2, 0x5e, 0xe3, 0x8a, 0x5e, 0xbf, 0x15, - 0xa1, 0x17, 0x89, 0x23, 0xf3, 0xae, 0xa4, 0x97, 0x70, 0xb7, 0x1a, 0x29, 0xbe, 0xc8, 0x83, 0xaf, - 0x98, 0xc2, 0xfd, 0x1f, 0x89, 0xa8, 0x78, 0x25, 0xe7, 0x21, 0x55, 0x56, 0x65, 0xa2, 0xf5, 0x5c, - 0x85, 0xe4, 0x96, 0x5b, 0x23, 0x3f, 0xc5, 0x42, 0x7e, 0x4d, 0x96, 0x19, 0x99, 0xfd, 0xb4, 0xec, - 0x25, 0x48, 0x95, 0x8e, 0xeb, 0x8d, 0x5a, 0x1b, 0x39, 0xec, 0x91, 0x3d, 0xdb, 0x41, 0xc7, 0x18, - 0x2b, 0x98, 0xcb, 0x95, 0x60, 0x6a, 0xcb, 0x75, 0x8a, 0x27, 0xbe, 0x58, 0x37, 0x16, 0x95, 0x14, - 0x61, 0x8f, 0x7c, 0xc8, 0x17, 0x40, 0xb0, 0x40, 0x71, 0xf8, 0x3b, 0xef, 0xce, 0x69, 0x7b, 0xc1, - 0xf6, 0xf9, 0x26, 0x3c, 0xcc, 0xd2, 0xa7, 0x8b, 0x6a, 0x39, 0x8e, 0x6a, 0x8c, 0x3d, 0xa6, 0x16, - 0xe8, 0xd6, 0x31, 0x9d, 0x13, 0x49, 0xf7, 0x60, 0x9a, 0xe1, 0xa6, 0xa8, 0xaf, 0x66, 0xfa, 0xa9, - 0x34, 0x8b, 0xa4, 0x5b, 0x8c, 0xa3, 0x53, 0x34, 0x7b, 0x1c, 0xc6, 0x82, 0x39, 0x21, 0x1a, 0xc4, - 0x4c, 0x59, 0x5e, 0xc8, 0x41, 0x5a, 0x48, 0x58, 0x73, 0x18, 0xb4, 0x82, 0x31, 0x84, 0xff, 0x2b, - 0x1a, 0x1a, 0xfe, 0xaf, 0x64, 0x24, 0x16, 0x9e, 0x80, 0x49, 0x65, 0xfb, 0x12, 0xcf, 0xac, 0x1a, - 0x80, 0xff, 0x2b, 0x1b, 0xe9, 0x99, 0xe4, 0xe7, 0xfe, 0xd1, 0xec, 0xd0, 0xc2, 0x6d, 0x30, 0xbb, - 0x37, 0x3a, 0xcd, 0x11, 0x48, 0x14, 0x30, 0xe5, 0xc3, 0x90, 0x28, 0x16, 0x0d, 0x6d, 0x66, 0xf2, - 0x6f, 0x7c, 0xe9, 0x7c, 0xba, 0x48, 0xbe, 0x8b, 0xfc, 0x12, 0xf2, 0x8b, 0x45, 0x06, 0x7e, 0x16, - 0x1e, 0x8a, 0xdc, 0x28, 0xc5, 0xf8, 0x52, 0x89, 0xe2, 0x57, 0x57, 0xbb, 0xf0, 0xab, 0xab, 0x04, - 0xaf, 0xe5, 0xf9, 0x03, 0xe7, 0x82, 0x19, 0xb1, 0x2d, 0x99, 0xad, 0x09, 0x0f, 0xb8, 0x0b, 0xf9, - 0x67, 0x99, 0x6c, 0x31, 0x52, 0x16, 0xc5, 0x3c, 0xb0, 0x2e, 0xe6, 0x4b, 0x0c, 0x5f, 0x8a, 0xc4, - 0x1f, 0x2a, 0x4f, 0x55, 0xe5, 0x15, 0x82, 0x91, 0x94, 0x02, 0x85, 0x57, 0x23, 0x49, 0x8e, 0x85, - 0x77, 0xdd, 0x57, 0x03, 0x85, 0xcb, 0x91, 0xb2, 0xf5, 0x98, 0x77, 0xbe, 0xca, 0xf9, 0xcb, 0x6c, - 0x91, 0x2f, 0x5c, 0x31, 0x1f, 0xe2, 0x39, 0x2a, 0x55, 0x60, 0x66, 0x20, 0x2e, 0x95, 0x2f, 0x31, - 0x40, 0xb1, 0x27, 0xa0, 0xb7, 0x95, 0x38, 0x32, 0xff, 0x3c, 0x23, 0x29, 0xf5, 0x24, 0x89, 0x31, - 0x15, 0x87, 0x17, 0xf7, 0xee, 0xbd, 0x37, 0x3b, 0xf4, 0xce, 0x7b, 0xb3, 0x43, 0xff, 0xf5, 0xbd, - 0xd9, 0xa1, 0x3f, 0x7e, 0x6f, 0x56, 0xfb, 0xfe, 0x7b, 0xb3, 0xda, 0x0f, 0xdf, 0x9b, 0xd5, 0xfe, - 0xfc, 0xbd, 0x59, 0xed, 0xcd, 0xfb, 0xb3, 0xda, 0xd7, 0xef, 0xcf, 0x6a, 0xdf, 0xb8, 0x3f, 0xab, - 0xfd, 0xfe, 0xfd, 0x59, 0xed, 0xed, 0xfb, 0xb3, 0xda, 0xbd, 0xfb, 0xb3, 0xda, 0x3b, 0xf7, 0x67, - 0xb5, 0x3f, 0xbe, 0x3f, 0xab, 0x7d, 0xff, 0xfe, 0xec, 0xd0, 0x0f, 0xef, 0xcf, 0x6a, 0x7f, 0x7e, - 0x7f, 0x76, 0xe8, 0xcd, 0xef, 0xce, 0x0e, 0xbd, 0xf5, 0xdd, 0xd9, 0xa1, 0xaf, 0x7f, 0x77, 0x56, - 0x83, 0xef, 0xae, 0xc0, 0x2c, 0xfb, 0x22, 0x99, 0x83, 0xea, 0x38, 0xe8, 0x2e, 0xfb, 0xc7, 0x88, - 0x34, 0x04, 0x57, 0xf9, 0xaf, 0x39, 0x05, 0x03, 0xa7, 0xfc, 0x4a, 0xd9, 0xcc, 0x83, 0x7e, 0x81, - 0x2d, 0xf7, 0xef, 0x86, 0x61, 0x94, 0x6f, 0x04, 0x47, 0xfd, 0x5a, 0xf2, 0x35, 0x48, 0x1d, 0xd7, - 0x1b, 0x76, 0xbb, 0xee, 0x9f, 0xb0, 0x1d, 0xd0, 0x47, 0x16, 0x43, 0xb5, 0xf9, 0x9e, 0xe9, 0xf3, - 0x9d, 0xa6, 0xdb, 0x69, 0x5b, 0x81, 0xa8, 0x79, 0x1e, 0x32, 0xc7, 0xa8, 0x7e, 0x74, 0xec, 0x57, - 0xea, 0x4e, 0xa5, 0xda, 0x24, 0x9d, 0xf2, 0xb8, 0x05, 0x74, 0x6c, 0xdd, 0x29, 0x35, 0xf1, 0xc9, - 0x6a, 0xb6, 0x6f, 0x93, 0x3b, 0xf4, 0x8c, 0x45, 0x3e, 0x9b, 0x17, 0x20, 0xd3, 0x46, 0x5e, 0xa7, - 0xe1, 0x57, 0xaa, 0x6e, 0xc7, 0xf1, 0x49, 0x2f, 0xab, 0x5b, 0x69, 0x3a, 0x56, 0xc2, 0x43, 0xe6, - 0xe3, 0x30, 0xee, 0xb7, 0x3b, 0xa8, 0xe2, 0x55, 0x5d, 0xdf, 0x6b, 0xda, 0x0e, 0xe9, 0x65, 0x53, - 0x56, 0x06, 0x0f, 0xee, 0xb2, 0x31, 0xf2, 0x6b, 0xfc, 0x55, 0xb7, 0x8d, 0xc8, 0xad, 0x74, 0xc2, - 0xa2, 0x07, 0xa6, 0x01, 0xfa, 0xab, 0xe8, 0x84, 0xdc, 0xac, 0x25, 0x2d, 0xfc, 0xd1, 0x7c, 0x0a, - 0x46, 0xe8, 0x1f, 0x6a, 0x20, 0x9d, 0x35, 0x79, 0x6e, 0x1d, 0x5c, 0x1a, 0xdd, 0x9f, 0xb5, 0x98, - 0x80, 0x79, 0x0b, 0x46, 0x7d, 0xd4, 0x6e, 0xdb, 0x75, 0x87, 0xdc, 0x38, 0xa5, 0x97, 0xe7, 0x22, - 0xcc, 0xb0, 0x47, 0x25, 0xc8, 0x0f, 0xa3, 0x5a, 0x5c, 0xde, 0xbc, 0x06, 0x19, 0x22, 0xb7, 0x5c, - 0xa1, 0x7f, 0xcc, 0x22, 0xdd, 0x33, 0x96, 0xd3, 0x54, 0x8e, 0x3f, 0x26, 0xe0, 0x30, 0xfa, 0xcb, - 0x76, 0xe3, 0xe4, 0xb4, 0x8f, 0x47, 0x9c, 0x96, 0x94, 0xdd, 0x65, 0xd2, 0x32, 0xd2, 0x53, 0x33, - 0x1e, 0xfa, 0xdb, 0x77, 0x9b, 0x90, 0x11, 0xf5, 0xe2, 0x66, 0xa0, 0xad, 0x0f, 0x31, 0xc3, 0x93, - 0xe1, 0x0f, 0x9d, 0xf7, 0xb0, 0x02, 0x9d, 0xcf, 0x27, 0x6e, 0x6a, 0x33, 0x3b, 0x60, 0xa8, 0xe7, - 0x8b, 0xa0, 0xbc, 0x24, 0x53, 0x1a, 0xe2, 0xc5, 0x92, 0x4d, 0xf2, 0x90, 0x31, 0xf7, 0x1c, 0x8c, - 0xd0, 0xf8, 0x31, 0xd3, 0x30, 0xba, 0xbf, 0xf5, 0xc9, 0xad, 0xed, 0x17, 0xb6, 0xe8, 0x4f, 0x8e, - 0xee, 0xec, 0x6f, 0xed, 0xd2, 0x1f, 0x0e, 0xdd, 0xdd, 0x28, 0xec, 0xec, 0xee, 0xad, 0x97, 0x3e, - 0x69, 0x24, 0xcc, 0x49, 0x48, 0x17, 0xd7, 0x37, 0x36, 0x2a, 0xc5, 0xc2, 0xfa, 0x46, 0xf9, 0x25, - 0x43, 0xcf, 0xcd, 0xc2, 0x08, 0xd5, 0x93, 0xfc, 0x8a, 0x5b, 0xc7, 0x71, 0x4e, 0x78, 0xeb, 0x40, - 0x0e, 0x72, 0xdf, 0x34, 0x61, 0xb4, 0xd0, 0x68, 0x6c, 0xda, 0x2d, 0xcf, 0x7c, 0x01, 0xa6, 0xe8, - 0x8f, 0x49, 0xec, 0xb9, 0xab, 0xe4, 0xc7, 0x06, 0x71, 0x61, 0xd0, 0xd8, 0x0f, 0xbc, 0x87, 0xd7, - 0xcd, 0xc4, 0x17, 0xbb, 0x64, 0xa9, 0x81, 0xbb, 0x39, 0xcc, 0x3d, 0x30, 0xf8, 0xe0, 0x5a, 0xc3, - 0xb5, 0x7d, 0xcc, 0x9b, 0x60, 0xbf, 0x05, 0xd8, 0x9b, 0x97, 0x8b, 0x52, 0xda, 0x2e, 0x06, 0xf3, - 0x13, 0x90, 0x5a, 0x77, 0xfc, 0xab, 0xcb, 0x98, 0x8d, 0xff, 0xf1, 0x91, 0x6e, 0x36, 0x2e, 0x42, - 0x59, 0x02, 0x04, 0x43, 0x5f, 0x5f, 0xc1, 0xe8, 0x64, 0x3f, 0x34, 0x11, 0x09, 0xd1, 0xe4, 0xd0, - 0x7c, 0x0e, 0xc6, 0xf0, 0x9d, 0x09, 0x3d, 0xf9, 0x30, 0x6f, 0x5b, 0xbb, 0xe0, 0x81, 0x0c, 0xc5, - 0x87, 0x18, 0x4e, 0x40, 0xcf, 0x3f, 0xd2, 0x97, 0x40, 0x50, 0x20, 0xc4, 0x60, 0x82, 0xdd, 0x40, - 0x83, 0xd1, 0x9e, 0x04, 0xbb, 0x8a, 0x06, 0xbb, 0xa2, 0x06, 0xbb, 0x81, 0x06, 0xa9, 0xbe, 0x04, - 0xa2, 0x06, 0xc1, 0xb1, 0x59, 0x04, 0x58, 0xab, 0xbf, 0x81, 0x6a, 0x54, 0x05, 0xfa, 0xa7, 0x49, - 0x72, 0x11, 0x0c, 0xa1, 0x10, 0xa5, 0x10, 0x50, 0x66, 0x19, 0xd2, 0xbb, 0x87, 0x21, 0x09, 0x74, - 0xe5, 0x71, 0xa0, 0xc6, 0xa1, 0xc2, 0x22, 0xe2, 0x02, 0x55, 0xe8, 0xc5, 0xa4, 0xfb, 0xab, 0x22, - 0x5c, 0x8d, 0x80, 0x0a, 0x55, 0xa1, 0x24, 0x99, 0x18, 0x55, 0x04, 0x16, 0x11, 0x87, 0x8b, 0x61, - 0xd1, 0x75, 0xb1, 0x24, 0xab, 0x4a, 0x73, 0x11, 0x14, 0x4c, 0x82, 0x15, 0x43, 0x76, 0x44, 0x3c, - 0x42, 0x82, 0x1c, 0x83, 0x27, 0x7a, 0x7b, 0x84, 0xcb, 0x70, 0x8f, 0xf0, 0x63, 0x31, 0xcf, 0xc8, - 0xcb, 0xac, 0x98, 0x67, 0x32, 0x36, 0xcf, 0xb8, 0xa8, 0x92, 0x67, 0x7c, 0xd8, 0xfc, 0x14, 0x4c, - 0xf2, 0x31, 0x5c, 0x9e, 0x30, 0xa9, 0xc1, 0xfe, 0x78, 0x53, 0x6f, 0x52, 0x26, 0x49, 0x39, 0x55, - 0xbc, 0xb9, 0x05, 0x13, 0x7c, 0x68, 0xd3, 0x23, 0x97, 0x3b, 0xc5, 0xfe, 0x30, 0x42, 0x6f, 0x46, - 0x2a, 0x48, 0x09, 0x15, 0xf4, 0xcc, 0x2a, 0x4c, 0x47, 0x57, 0x23, 0xb1, 0xfc, 0x8e, 0xd1, 0xf2, - 0x7b, 0x56, 0x2c, 0xbf, 0x9a, 0x58, 0xbe, 0x4b, 0xf0, 0x50, 0x64, 0xed, 0x89, 0x23, 0x49, 0x88, - 0x24, 0xb7, 0x61, 0x5c, 0x2a, 0x39, 0x22, 0x78, 0x38, 0x02, 0x3c, 0xdc, 0x0d, 0x0e, 0x43, 0x2b, - 0x62, 0xf5, 0x90, 0xc0, 0xba, 0x08, 0xfe, 0x04, 0x4c, 0xc8, 0xf5, 0x46, 0x44, 0x8f, 0x47, 0xa0, - 0xc7, 0x23, 0xd0, 0xd1, 0xe7, 0x4e, 0x46, 0xa0, 0x93, 0x0a, 0x7a, 0xb7, 0xe7, 0xb9, 0xa7, 0x22, - 0xd0, 0x53, 0x11, 0xe8, 0xe8, 0x73, 0x9b, 0x11, 0x68, 0x53, 0x44, 0x3f, 0x03, 0x93, 0x4a, 0x89, - 0x11, 0xe1, 0xa3, 0x11, 0xf0, 0x51, 0x11, 0xfe, 0x2c, 0x18, 0x6a, 0x71, 0x11, 0xf1, 0x93, 0x11, - 0xf8, 0xc9, 0xa8, 0xd3, 0x47, 0x6b, 0x3f, 0x12, 0x01, 0x1f, 0x89, 0x3c, 0x7d, 0x34, 0xde, 0x88, - 0xc0, 0x1b, 0x22, 0x3e, 0x0f, 0x19, 0xb1, 0x9a, 0x88, 0xd8, 0x54, 0x04, 0x36, 0xa5, 0xda, 0x5d, - 0x2a, 0x26, 0x71, 0x91, 0x3e, 0xd6, 0x23, 0x5d, 0xa4, 0x12, 0x12, 0x47, 0x92, 0x11, 0x49, 0x3e, - 0x0d, 0x67, 0xa3, 0x4a, 0x46, 0x04, 0xc7, 0xbc, 0xc8, 0x31, 0x81, 0x7b, 0xc4, 0xb0, 0xd9, 0xb3, - 0x5b, 0x4a, 0xe3, 0x34, 0xf3, 0x32, 0x9c, 0x89, 0x28, 0x1c, 0x11, 0xb4, 0x8b, 0x72, 0x37, 0x96, - 0x15, 0x68, 0x49, 0x11, 0xa8, 0x3b, 0x47, 0x3b, 0x6e, 0xdd, 0xf1, 0xc5, 0xae, 0xec, 0x5b, 0x67, - 0x60, 0x82, 0x95, 0xa7, 0xed, 0x76, 0x0d, 0xb5, 0x51, 0xcd, 0xfc, 0x4b, 0xbd, 0x7b, 0xa7, 0xa5, - 0xee, 0xa2, 0xc6, 0x50, 0xa7, 0x68, 0xa1, 0x5e, 0xee, 0xd9, 0x42, 0x5d, 0x8e, 0xa7, 0x8f, 0xeb, - 0xa4, 0x4a, 0x5d, 0x9d, 0xd4, 0x93, 0xbd, 0x49, 0x7b, 0x35, 0x54, 0xa5, 0xae, 0x86, 0xaa, 0x3f, - 0x49, 0x64, 0x5f, 0xb5, 0xd6, 0xdd, 0x57, 0xcd, 0xf7, 0x66, 0xe9, 0xdd, 0x5e, 0xad, 0x75, 0xb7, - 0x57, 0x31, 0x3c, 0xd1, 0x5d, 0xd6, 0x5a, 0x77, 0x97, 0xd5, 0x87, 0xa7, 0x77, 0xb3, 0xb5, 0xd6, - 0xdd, 0x6c, 0xc5, 0xf0, 0x44, 0xf7, 0x5c, 0xeb, 0x11, 0x3d, 0xd7, 0x53, 0xbd, 0x89, 0xfa, 0xb5, - 0x5e, 0x1b, 0x51, 0xad, 0xd7, 0x42, 0x1f, 0xa5, 0xfa, 0x76, 0x60, 0xeb, 0x11, 0x1d, 0x58, 0x9c, - 0x62, 0x3d, 0x1a, 0xb1, 0x8d, 0xa8, 0x46, 0x2c, 0x56, 0xb1, 0x5e, 0xfd, 0xd8, 0x5f, 0x50, 0xfb, - 0xb1, 0x4b, 0xbd, 0x99, 0xa2, 0xdb, 0xb2, 0xb5, 0xee, 0xb6, 0x6c, 0x3e, 0x2e, 0xe7, 0xa2, 0xba, - 0xb3, 0x97, 0x7b, 0x76, 0x67, 0x03, 0xa4, 0x70, 0x5c, 0x93, 0xf6, 0x62, 0xaf, 0x26, 0x6d, 0x31, - 0x9e, 0xbb, 0x7f, 0xaf, 0xb6, 0xdf, 0xa3, 0x57, 0x7b, 0x3a, 0x9e, 0xf8, 0xa3, 0x96, 0xed, 0xa3, - 0x96, 0xed, 0xa3, 0x96, 0xed, 0xa3, 0x96, 0xed, 0x67, 0xdf, 0xb2, 0xe5, 0x93, 0x9f, 0xff, 0xea, - 0x9c, 0x96, 0xfb, 0x2f, 0x7a, 0xf0, 0x37, 0xa7, 0x5e, 0xa8, 0xfb, 0xc7, 0xb8, 0xbc, 0x6d, 0x42, - 0x86, 0xfc, 0xc9, 0x8b, 0xa6, 0xdd, 0x6a, 0xd5, 0x9d, 0x23, 0xd6, 0xb3, 0x2d, 0x74, 0x6f, 0x25, - 0x32, 0x00, 0xf9, 0xa3, 0x21, 0x9b, 0x54, 0x98, 0x2d, 0x37, 0x4e, 0x38, 0x62, 0xde, 0x85, 0x74, - 0xd3, 0x3b, 0x0a, 0xd8, 0x12, 0x5d, 0x0b, 0xa1, 0xc2, 0x46, 0xaf, 0x34, 0x24, 0x83, 0x66, 0x30, - 0x80, 0x55, 0x3b, 0x38, 0xf1, 0x43, 0xd5, 0xf4, 0x38, 0xd5, 0xb0, 0x4f, 0x65, 0xd5, 0x0e, 0xc2, - 0x11, 0x1c, 0xb6, 0xaa, 0xee, 0x71, 0x95, 0x4e, 0x0a, 0x9e, 0x17, 0x60, 0x52, 0xd1, 0x36, 0x22, - 0xe7, 0x1f, 0xc0, 0x37, 0x58, 0x31, 0x55, 0xf3, 0xb8, 0x9c, 0x10, 0x03, 0x32, 0xf7, 0x18, 0x8c, - 0x4b, 0xdc, 0x66, 0x06, 0xb4, 0x43, 0xf6, 0x4d, 0x4a, 0xed, 0x30, 0xf7, 0x15, 0x0d, 0xd2, 0xec, - 0x35, 0x82, 0x1d, 0xbb, 0xde, 0x36, 0x9f, 0x87, 0x64, 0x83, 0x7f, 0x9b, 0xe9, 0x41, 0xbf, 0x39, - 0x4b, 0x18, 0xcc, 0x35, 0x18, 0x6e, 0x07, 0xdf, 0x76, 0x7a, 0xa0, 0xaf, 0xc3, 0x12, 0x78, 0xee, - 0x9e, 0x06, 0x53, 0xec, 0x2d, 0x57, 0x8f, 0xbd, 0xfb, 0x6c, 0xb7, 0x66, 0xbe, 0xa9, 0xc1, 0x58, - 0x70, 0x64, 0x1e, 0xc0, 0x44, 0x70, 0x40, 0xdf, 0xaf, 0xa7, 0x91, 0x9a, 0x17, 0x2c, 0xdc, 0xc5, - 0xb1, 0x18, 0xf1, 0x89, 0x3e, 0x88, 0xa2, 0x6b, 0xb2, 0x3c, 0x38, 0x53, 0x80, 0x33, 0x11, 0x62, - 0xa7, 0x59, 0x90, 0x73, 0x17, 0x60, 0x6c, 0xcb, 0xf5, 0xe9, 0x8f, 0xe6, 0x98, 0x67, 0x85, 0xa7, - 0x0a, 0xc5, 0x84, 0x31, 0x44, 0xc0, 0x0b, 0x17, 0x60, 0x94, 0x65, 0xbf, 0x39, 0x02, 0x89, 0xcd, - 0x82, 0x31, 0x44, 0xfe, 0x2f, 0x1a, 0x1a, 0xf9, 0xbf, 0x64, 0x24, 0x8a, 0x1b, 0x0f, 0xf0, 0x94, - 0x69, 0xe8, 0x9d, 0xfb, 0xb3, 0x43, 0x51, 0x4f, 0x99, 0x0e, 0x46, 0xa8, 0x79, 0xfe, 0x7f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x90, 0x1d, 0xc8, 0xb9, 0x47, 0x7e, 0x00, 0x00, + // 7851 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x5b, 0x70, 0x23, 0xd7, + 0x99, 0x1f, 0xce, 0x46, 0x83, 0x24, 0xf8, 0x01, 0x24, 0x9b, 0xcd, 0x11, 0x05, 0x51, 0x23, 0x72, + 0x06, 0x1a, 0x8d, 0x28, 0xda, 0xe2, 0x70, 0x38, 0xe4, 0x5c, 0x30, 0x96, 0xf4, 0x07, 0x40, 0x70, + 0xc4, 0x31, 0x09, 0xd2, 0x4d, 0xd2, 0xd2, 0xac, 0xff, 0x15, 0x54, 0x13, 0x38, 0x24, 0x5b, 0x02, + 0xba, 0xb1, 0xe8, 0x86, 0x24, 0xfa, 0x21, 0xa5, 0xac, 0x93, 0x8d, 0x37, 0xa9, 0x5c, 0x37, 0xa9, + 0x78, 0x1d, 0x5f, 0xe4, 0x4d, 0x6d, 0xec, 0xdd, 0xcd, 0xc5, 0xeb, 0x6c, 0x9c, 0xad, 0xad, 0x54, + 0x56, 0x79, 0x70, 0x32, 0x79, 0x49, 0x69, 0x93, 0x97, 0x94, 0x2b, 0xa5, 0xb2, 0x46, 0xae, 0x8a, + 0x93, 0x38, 0x89, 0x37, 0xeb, 0xaa, 0xdd, 0x2a, 0xef, 0x43, 0xea, 0xdc, 0xba, 0xfb, 0x1c, 0x34, + 0xd0, 0xe0, 0x48, 0xb2, 0xf7, 0xc1, 0x2f, 0x33, 0xe8, 0x73, 0xbe, 0xdf, 0xaf, 0xbf, 0xfe, 0x6e, + 0xe7, 0xeb, 0xd3, 0x0d, 0x10, 0xde, 0x5f, 0x83, 0x0b, 0xc7, 0x8e, 0x73, 0xdc, 0x40, 0x57, 0x5a, + 0x6d, 0xc7, 0x73, 0x0e, 0x3b, 0x47, 0x57, 0xea, 0xc8, 0xad, 0xb5, 0xad, 0x96, 0xe7, 0xb4, 0x97, + 0xc8, 0x98, 0x3e, 0x49, 0x25, 0x96, 0xb8, 0x44, 0x6e, 0x1b, 0xa6, 0x36, 0xac, 0x06, 0x5a, 0xf7, + 0x05, 0xf7, 0x90, 0xa7, 0xdf, 0x84, 0xe4, 0x91, 0xd5, 0x40, 0x59, 0xe5, 0x82, 0xba, 0x90, 0x5e, + 0xb9, 0xb4, 0x24, 0x81, 0x96, 0x44, 0xc4, 0x2e, 0x1e, 0x36, 0x08, 0x22, 0xf7, 0xfd, 0x24, 0x4c, + 0x47, 0xcc, 0xea, 0x3a, 0x24, 0x6d, 0xb3, 0x89, 0x19, 0x95, 0x85, 0x31, 0x83, 0x7c, 0xd6, 0xb3, + 0x30, 0xda, 0x32, 0x6b, 0xaf, 0x9a, 0xc7, 0x28, 0x9b, 0x20, 0xc3, 0xfc, 0x50, 0x9f, 0x03, 0xa8, + 0xa3, 0x16, 0xb2, 0xeb, 0xc8, 0xae, 0x9d, 0x66, 0xd5, 0x0b, 0xea, 0xc2, 0x98, 0x11, 0x1a, 0xd1, + 0x3f, 0x06, 0x53, 0xad, 0xce, 0x61, 0xc3, 0xaa, 0x55, 0x43, 0x62, 0x70, 0x41, 0x5d, 0x18, 0x36, + 0x34, 0x3a, 0xb1, 0x1e, 0x08, 0x3f, 0x0d, 0x93, 0xaf, 0x23, 0xf3, 0xd5, 0xb0, 0x68, 0x9a, 0x88, + 0x4e, 0xe0, 0xe1, 0x90, 0x60, 0x09, 0x32, 0x4d, 0xe4, 0xba, 0xe6, 0x31, 0xaa, 0x7a, 0xa7, 0x2d, + 0x94, 0x4d, 0x92, 0xab, 0xbf, 0xd0, 0x75, 0xf5, 0xf2, 0x95, 0xa7, 0x19, 0x6a, 0xff, 0xb4, 0x85, + 0xf4, 0x02, 0x8c, 0x21, 0xbb, 0xd3, 0xa4, 0x0c, 0xc3, 0x3d, 0xec, 0x57, 0xb6, 0x3b, 0x4d, 0x99, + 0x25, 0x85, 0x61, 0x8c, 0x62, 0xd4, 0x45, 0xed, 0xd7, 0xac, 0x1a, 0xca, 0x8e, 0x10, 0x82, 0xa7, + 0xbb, 0x08, 0xf6, 0xe8, 0xbc, 0xcc, 0xc1, 0x71, 0x7a, 0x09, 0xc6, 0xd0, 0x1b, 0x1e, 0xb2, 0x5d, + 0xcb, 0xb1, 0xb3, 0xa3, 0x84, 0xe4, 0xa9, 0x08, 0x2f, 0xa2, 0x46, 0x5d, 0xa6, 0x08, 0x70, 0xfa, + 0x75, 0x18, 0x75, 0x5a, 0x9e, 0xe5, 0xd8, 0x6e, 0x36, 0x75, 0x41, 0x59, 0x48, 0xaf, 0x9c, 0x8f, + 0x0c, 0x84, 0x1d, 0x2a, 0x63, 0x70, 0x61, 0x7d, 0x13, 0x34, 0xd7, 0xe9, 0xb4, 0x6b, 0xa8, 0x5a, + 0x73, 0xea, 0xa8, 0x6a, 0xd9, 0x47, 0x4e, 0x76, 0x8c, 0x10, 0xcc, 0x77, 0x5f, 0x08, 0x11, 0x2c, + 0x39, 0x75, 0xb4, 0x69, 0x1f, 0x39, 0xc6, 0x84, 0x2b, 0x1c, 0xeb, 0x33, 0x30, 0xe2, 0x9e, 0xda, + 0x9e, 0xf9, 0x46, 0x36, 0x43, 0x22, 0x84, 0x1d, 0xe5, 0xfe, 0x64, 0x18, 0x26, 0x07, 0x09, 0xb1, + 0xdb, 0x30, 0x7c, 0x84, 0xaf, 0x32, 0x9b, 0x38, 0x8b, 0x0d, 0x28, 0x46, 0x34, 0xe2, 0xc8, 0x43, + 0x1a, 0xb1, 0x00, 0x69, 0x1b, 0xb9, 0x1e, 0xaa, 0xd3, 0x88, 0x50, 0x07, 0x8c, 0x29, 0xa0, 0xa0, + 0xee, 0x90, 0x4a, 0x3e, 0x54, 0x48, 0xbd, 0x0c, 0x93, 0xbe, 0x4a, 0xd5, 0xb6, 0x69, 0x1f, 0xf3, + 0xd8, 0xbc, 0x12, 0xa7, 0xc9, 0x52, 0x99, 0xe3, 0x0c, 0x0c, 0x33, 0x26, 0x90, 0x70, 0xac, 0xaf, + 0x03, 0x38, 0x36, 0x72, 0x8e, 0xaa, 0x75, 0x54, 0x6b, 0x64, 0x53, 0x3d, 0xac, 0xb4, 0x83, 0x45, + 0xba, 0xac, 0xe4, 0xd0, 0xd1, 0x5a, 0x43, 0xbf, 0x15, 0x84, 0xda, 0x68, 0x8f, 0x48, 0xd9, 0xa6, + 0x49, 0xd6, 0x15, 0x6d, 0x07, 0x30, 0xd1, 0x46, 0x38, 0xee, 0x51, 0x9d, 0x5d, 0xd9, 0x18, 0x51, + 0x62, 0x29, 0xf6, 0xca, 0x0c, 0x06, 0xa3, 0x17, 0x36, 0xde, 0x0e, 0x1f, 0xea, 0x4f, 0x82, 0x3f, + 0x50, 0x25, 0x61, 0x05, 0xa4, 0x0a, 0x65, 0xf8, 0x60, 0xc5, 0x6c, 0xa2, 0xd9, 0x9b, 0x30, 0x21, + 0x9a, 0x47, 0x3f, 0x07, 0xc3, 0xae, 0x67, 0xb6, 0x3d, 0x12, 0x85, 0xc3, 0x06, 0x3d, 0xd0, 0x35, + 0x50, 0x91, 0x5d, 0x27, 0x55, 0x6e, 0xd8, 0xc0, 0x1f, 0x67, 0x6f, 0xc0, 0xb8, 0x70, 0xfa, 0x41, + 0x81, 0xb9, 0x2f, 0x8c, 0xc0, 0xb9, 0xa8, 0x98, 0x8b, 0x0c, 0xff, 0x19, 0x18, 0xb1, 0x3b, 0xcd, + 0x43, 0xd4, 0xce, 0xaa, 0x84, 0x81, 0x1d, 0xe9, 0x05, 0x18, 0x6e, 0x98, 0x87, 0xa8, 0x91, 0x4d, + 0x5e, 0x50, 0x16, 0x26, 0x56, 0x3e, 0x36, 0x50, 0x54, 0x2f, 0x6d, 0x61, 0x88, 0x41, 0x91, 0xfa, + 0xf3, 0x90, 0x64, 0x25, 0x0e, 0x33, 0x2c, 0x0e, 0xc6, 0x80, 0x63, 0xd1, 0x20, 0x38, 0xfd, 0x71, + 0x18, 0xc3, 0xff, 0x53, 0xdb, 0x8e, 0x10, 0x9d, 0x53, 0x78, 0x00, 0xdb, 0x55, 0x9f, 0x85, 0x14, + 0x09, 0xb3, 0x3a, 0xe2, 0x4b, 0x83, 0x7f, 0x8c, 0x1d, 0x53, 0x47, 0x47, 0x66, 0xa7, 0xe1, 0x55, + 0x5f, 0x33, 0x1b, 0x1d, 0x44, 0x02, 0x66, 0xcc, 0xc8, 0xb0, 0xc1, 0x4f, 0xe3, 0x31, 0x7d, 0x1e, + 0xd2, 0x34, 0x2a, 0x2d, 0xbb, 0x8e, 0xde, 0x20, 0xd5, 0x67, 0xd8, 0xa0, 0x81, 0xba, 0x89, 0x47, + 0xf0, 0xe9, 0x5f, 0x71, 0x1d, 0x9b, 0xbb, 0x96, 0x9c, 0x02, 0x0f, 0x90, 0xd3, 0xdf, 0x90, 0x0b, + 0xdf, 0x13, 0xd1, 0x97, 0x27, 0xc7, 0x62, 0xee, 0xdb, 0x09, 0x48, 0x92, 0x7c, 0x9b, 0x84, 0xf4, + 0xfe, 0xbd, 0xdd, 0x72, 0x75, 0x7d, 0xe7, 0xa0, 0xb8, 0x55, 0xd6, 0x14, 0x7d, 0x02, 0x80, 0x0c, + 0x6c, 0x6c, 0xed, 0x14, 0xf6, 0xb5, 0x84, 0x7f, 0xbc, 0x59, 0xd9, 0xbf, 0xbe, 0xaa, 0xa9, 0x3e, + 0xe0, 0x80, 0x0e, 0x24, 0xc3, 0x02, 0xd7, 0x56, 0xb4, 0x61, 0x5d, 0x83, 0x0c, 0x25, 0xd8, 0x7c, + 0xb9, 0xbc, 0x7e, 0x7d, 0x55, 0x1b, 0x11, 0x47, 0xae, 0xad, 0x68, 0xa3, 0xfa, 0x38, 0x8c, 0x91, + 0x91, 0xe2, 0xce, 0xce, 0x96, 0x96, 0xf2, 0x39, 0xf7, 0xf6, 0x8d, 0xcd, 0xca, 0x1d, 0x6d, 0xcc, + 0xe7, 0xbc, 0x63, 0xec, 0x1c, 0xec, 0x6a, 0xe0, 0x33, 0x6c, 0x97, 0xf7, 0xf6, 0x0a, 0x77, 0xca, + 0x5a, 0xda, 0x97, 0x28, 0xde, 0xdb, 0x2f, 0xef, 0x69, 0x19, 0x41, 0xad, 0x6b, 0x2b, 0xda, 0xb8, + 0x7f, 0x8a, 0x72, 0xe5, 0x60, 0x5b, 0x9b, 0xd0, 0xa7, 0x60, 0x9c, 0x9e, 0x82, 0x2b, 0x31, 0x29, + 0x0d, 0x5d, 0x5f, 0xd5, 0xb4, 0x40, 0x11, 0xca, 0x32, 0x25, 0x0c, 0x5c, 0x5f, 0xd5, 0xf4, 0x5c, + 0x09, 0x86, 0x49, 0x74, 0xe9, 0x3a, 0x4c, 0x6c, 0x15, 0x8a, 0xe5, 0xad, 0xea, 0xce, 0xee, 0xfe, + 0xe6, 0x4e, 0xa5, 0xb0, 0xa5, 0x29, 0xc1, 0x98, 0x51, 0xfe, 0xd4, 0xc1, 0xa6, 0x51, 0x5e, 0xd7, + 0x12, 0xe1, 0xb1, 0xdd, 0x72, 0x61, 0xbf, 0xbc, 0xae, 0xa9, 0xb9, 0x1a, 0x9c, 0x8b, 0xaa, 0x33, + 0x91, 0x99, 0x11, 0x72, 0x71, 0xa2, 0x87, 0x8b, 0x09, 0x57, 0x97, 0x8b, 0x7f, 0x5d, 0x81, 0xe9, + 0x88, 0x5a, 0x1b, 0x79, 0x92, 0x17, 0x60, 0x98, 0x86, 0x28, 0x5d, 0x7d, 0x9e, 0x89, 0x2c, 0xda, + 0x24, 0x60, 0xbb, 0x56, 0x20, 0x82, 0x0b, 0xaf, 0xc0, 0x6a, 0x8f, 0x15, 0x18, 0x53, 0x74, 0x29, + 0xf9, 0x39, 0x05, 0xb2, 0xbd, 0xb8, 0x63, 0x0a, 0x45, 0x42, 0x28, 0x14, 0xb7, 0x65, 0x05, 0x2e, + 0xf6, 0xbe, 0x86, 0x2e, 0x2d, 0xbe, 0xae, 0xc0, 0x4c, 0x74, 0xa3, 0x12, 0xa9, 0xc3, 0xf3, 0x30, + 0xd2, 0x44, 0xde, 0x89, 0xc3, 0x17, 0xeb, 0xcb, 0x11, 0x4b, 0x00, 0x9e, 0x96, 0x6d, 0xc5, 0x50, + 0xe1, 0x35, 0x44, 0xed, 0xd5, 0x6d, 0x50, 0x6d, 0xba, 0x34, 0xfd, 0x95, 0x04, 0x3c, 0x12, 0x49, + 0x1e, 0xa9, 0xe8, 0x13, 0x00, 0x96, 0xdd, 0xea, 0x78, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x8c, 0x8c, + 0x90, 0xdc, 0xc7, 0xb5, 0xa7, 0xe3, 0xf9, 0xf3, 0x2a, 0x99, 0x07, 0x3a, 0x44, 0x04, 0x6e, 0x06, + 0x8a, 0x26, 0x89, 0xa2, 0x73, 0x3d, 0xae, 0xb4, 0x6b, 0xad, 0x5b, 0x06, 0xad, 0xd6, 0xb0, 0x90, + 0xed, 0x55, 0x5d, 0xaf, 0x8d, 0xcc, 0xa6, 0x65, 0x1f, 0x93, 0x02, 0x9c, 0xca, 0x0f, 0x1f, 0x99, + 0x0d, 0x17, 0x19, 0x93, 0x74, 0x7a, 0x8f, 0xcf, 0x62, 0x04, 0x59, 0x65, 0xda, 0x21, 0xc4, 0x88, + 0x80, 0xa0, 0xd3, 0x3e, 0x22, 0xf7, 0xdb, 0xa3, 0x90, 0x0e, 0xb5, 0x75, 0xfa, 0x45, 0xc8, 0xbc, + 0x62, 0xbe, 0x66, 0x56, 0x79, 0xab, 0x4e, 0x2d, 0x91, 0xc6, 0x63, 0xbb, 0xac, 0x5d, 0x5f, 0x86, + 0x73, 0x44, 0xc4, 0xe9, 0x78, 0xa8, 0x5d, 0xad, 0x35, 0x4c, 0xd7, 0x25, 0x46, 0x4b, 0x11, 0x51, + 0x1d, 0xcf, 0xed, 0xe0, 0xa9, 0x12, 0x9f, 0xd1, 0xd7, 0x60, 0x9a, 0x20, 0x9a, 0x9d, 0x86, 0x67, + 0xb5, 0x1a, 0xa8, 0x8a, 0x6f, 0x1e, 0x5c, 0x52, 0x88, 0x7d, 0xcd, 0xa6, 0xb0, 0xc4, 0x36, 0x13, + 0xc0, 0x1a, 0xb9, 0xfa, 0x3a, 0x3c, 0x41, 0x60, 0xc7, 0xc8, 0x46, 0x6d, 0xd3, 0x43, 0x55, 0xf4, + 0x8b, 0x1d, 0xb3, 0xe1, 0x56, 0x4d, 0xbb, 0x5e, 0x3d, 0x31, 0xdd, 0x93, 0xec, 0x39, 0x4c, 0x50, + 0x4c, 0x64, 0x15, 0xe3, 0x31, 0x2c, 0x78, 0x87, 0xc9, 0x95, 0x89, 0x58, 0xc1, 0xae, 0xbf, 0x68, + 0xba, 0x27, 0x7a, 0x1e, 0x66, 0x08, 0x8b, 0xeb, 0xb5, 0x2d, 0xfb, 0xb8, 0x5a, 0x3b, 0x41, 0xb5, + 0x57, 0xab, 0x1d, 0xef, 0xe8, 0x66, 0xf6, 0xf1, 0xf0, 0xf9, 0x89, 0x86, 0x7b, 0x44, 0xa6, 0x84, + 0x45, 0x0e, 0xbc, 0xa3, 0x9b, 0xfa, 0x1e, 0x64, 0xb0, 0x33, 0x9a, 0xd6, 0x67, 0x51, 0xf5, 0xc8, + 0x69, 0x93, 0x95, 0x65, 0x22, 0x22, 0xb3, 0x43, 0x16, 0x5c, 0xda, 0x61, 0x80, 0x6d, 0xa7, 0x8e, + 0xf2, 0xc3, 0x7b, 0xbb, 0xe5, 0xf2, 0xba, 0x91, 0xe6, 0x2c, 0x1b, 0x4e, 0x1b, 0x07, 0xd4, 0xb1, + 0xe3, 0x1b, 0x38, 0x4d, 0x03, 0xea, 0xd8, 0xe1, 0xe6, 0x5d, 0x83, 0xe9, 0x5a, 0x8d, 0x5e, 0xb3, + 0x55, 0xab, 0xb2, 0x16, 0xdf, 0xcd, 0x6a, 0x82, 0xb1, 0x6a, 0xb5, 0x3b, 0x54, 0x80, 0xc5, 0xb8, + 0xab, 0xdf, 0x82, 0x47, 0x02, 0x63, 0x85, 0x81, 0x53, 0x5d, 0x57, 0x29, 0x43, 0xd7, 0x60, 0xba, + 0x75, 0xda, 0x0d, 0xd4, 0x85, 0x33, 0xb6, 0x4e, 0x65, 0xd8, 0x53, 0xe4, 0xb6, 0xad, 0x8d, 0x6a, + 0xa6, 0x87, 0xea, 0xd9, 0x47, 0xc3, 0xd2, 0xa1, 0x09, 0xfd, 0x0a, 0x68, 0xb5, 0x5a, 0x15, 0xd9, + 0xe6, 0x61, 0x03, 0x55, 0xcd, 0x36, 0xb2, 0x4d, 0x37, 0x3b, 0x1f, 0x16, 0x9e, 0xa8, 0xd5, 0xca, + 0x64, 0xb6, 0x40, 0x26, 0xf5, 0x45, 0x98, 0x72, 0x0e, 0x5f, 0xa9, 0xd1, 0xc8, 0xaa, 0xb6, 0xda, + 0xe8, 0xc8, 0x7a, 0x23, 0x7b, 0x89, 0x98, 0x69, 0x12, 0x4f, 0x90, 0xb8, 0xda, 0x25, 0xc3, 0xfa, + 0x33, 0xa0, 0xd5, 0xdc, 0x13, 0xb3, 0xdd, 0x22, 0x4b, 0xbb, 0xdb, 0x32, 0x6b, 0x28, 0xfb, 0x14, + 0x15, 0xa5, 0xe3, 0x15, 0x3e, 0x8c, 0x23, 0xdb, 0x7d, 0xdd, 0x3a, 0xf2, 0x38, 0xe3, 0xd3, 0x34, + 0xb2, 0xc9, 0x18, 0x63, 0x7b, 0x19, 0xce, 0x75, 0x6c, 0xcb, 0xf6, 0x50, 0xbb, 0xd5, 0x46, 0xb8, + 0x89, 0xa7, 0x99, 0x98, 0xfd, 0x6f, 0xa3, 0x3d, 0xda, 0xf0, 0x83, 0xb0, 0x34, 0x0d, 0x00, 0x63, + 0xba, 0xd3, 0x3d, 0x98, 0xcb, 0x43, 0x26, 0x1c, 0x17, 0xfa, 0x18, 0xd0, 0xc8, 0xd0, 0x14, 0xbc, + 0xc6, 0x96, 0x76, 0xd6, 0xf1, 0xea, 0xf8, 0x0b, 0x65, 0x2d, 0x81, 0x57, 0xe9, 0xad, 0xcd, 0xfd, + 0x72, 0xd5, 0x38, 0xa8, 0xec, 0x6f, 0x6e, 0x97, 0x35, 0x75, 0x71, 0x2c, 0xf5, 0x83, 0x51, 0xed, + 0xcd, 0x37, 0xdf, 0x7c, 0x33, 0x91, 0xfb, 0x4e, 0x02, 0x26, 0xc4, 0xce, 0x58, 0xff, 0x04, 0x3c, + 0xca, 0x6f, 0x63, 0x5d, 0xe4, 0x55, 0x5f, 0xb7, 0xda, 0x24, 0x54, 0x9b, 0x26, 0xed, 0x2d, 0x7d, + 0x2b, 0x9f, 0x63, 0x52, 0x7b, 0xc8, 0x7b, 0xc9, 0x6a, 0xe3, 0x40, 0x6c, 0x9a, 0x9e, 0xbe, 0x05, + 0xf3, 0xb6, 0x53, 0x75, 0x3d, 0xd3, 0xae, 0x9b, 0xed, 0x7a, 0x35, 0xd8, 0x40, 0xa8, 0x9a, 0xb5, + 0x1a, 0x72, 0x5d, 0x87, 0x2e, 0x11, 0x3e, 0xcb, 0x79, 0xdb, 0xd9, 0x63, 0xc2, 0x41, 0xed, 0x2c, + 0x30, 0x51, 0x29, 0x22, 0xd4, 0x5e, 0x11, 0xf1, 0x38, 0x8c, 0x35, 0xcd, 0x56, 0x15, 0xd9, 0x5e, + 0xfb, 0x94, 0xf4, 0x73, 0x29, 0x23, 0xd5, 0x34, 0x5b, 0x65, 0x7c, 0xfc, 0xd1, 0xf9, 0x20, 0x6c, + 0xc7, 0xff, 0xaa, 0x42, 0x26, 0xdc, 0xd3, 0xe1, 0x16, 0xb9, 0x46, 0xea, 0xb7, 0x42, 0x32, 0xfc, + 0xc9, 0xbe, 0x1d, 0xe0, 0x52, 0x09, 0x17, 0xf6, 0xfc, 0x08, 0xed, 0xb4, 0x0c, 0x8a, 0xc4, 0x8b, + 0x2a, 0xce, 0x69, 0x44, 0xfb, 0xf7, 0x94, 0xc1, 0x8e, 0xf4, 0x3b, 0x30, 0xf2, 0x8a, 0x4b, 0xb8, + 0x47, 0x08, 0xf7, 0xa5, 0xfe, 0xdc, 0x77, 0xf7, 0x08, 0xf9, 0xd8, 0xdd, 0xbd, 0x6a, 0x65, 0xc7, + 0xd8, 0x2e, 0x6c, 0x19, 0x0c, 0xae, 0x3f, 0x06, 0xc9, 0x86, 0xf9, 0xd9, 0x53, 0x71, 0x09, 0x20, + 0x43, 0x83, 0x1a, 0xfe, 0x31, 0x48, 0xbe, 0x8e, 0xcc, 0x57, 0xc5, 0xc2, 0x4b, 0x86, 0x3e, 0xc2, + 0xd0, 0xbf, 0x02, 0xc3, 0xc4, 0x5e, 0x3a, 0x00, 0xb3, 0x98, 0x36, 0xa4, 0xa7, 0x20, 0x59, 0xda, + 0x31, 0x70, 0xf8, 0x6b, 0x90, 0xa1, 0xa3, 0xd5, 0xdd, 0xcd, 0x72, 0xa9, 0xac, 0x25, 0x72, 0x6b, + 0x30, 0x42, 0x8d, 0x80, 0x53, 0xc3, 0x37, 0x83, 0x36, 0xc4, 0x0e, 0x19, 0x87, 0xc2, 0x67, 0x0f, + 0xb6, 0x8b, 0x65, 0x43, 0x4b, 0x84, 0xdd, 0xeb, 0x42, 0x26, 0xdc, 0xce, 0xfd, 0x74, 0x62, 0xea, + 0xf7, 0x15, 0x48, 0x87, 0xda, 0x33, 0xdc, 0x18, 0x98, 0x8d, 0x86, 0xf3, 0x7a, 0xd5, 0x6c, 0x58, + 0xa6, 0xcb, 0x82, 0x02, 0xc8, 0x50, 0x01, 0x8f, 0x0c, 0xea, 0xb4, 0x9f, 0x8a, 0xf2, 0x5f, 0x51, + 0x40, 0x93, 0x5b, 0x3b, 0x49, 0x41, 0xe5, 0x67, 0xaa, 0xe0, 0x97, 0x14, 0x98, 0x10, 0xfb, 0x39, + 0x49, 0xbd, 0x8b, 0x3f, 0x53, 0xf5, 0xbe, 0x97, 0x80, 0x71, 0xa1, 0x8b, 0x1b, 0x54, 0xbb, 0x5f, + 0x84, 0x29, 0xab, 0x8e, 0x9a, 0x2d, 0xc7, 0x43, 0x76, 0xed, 0xb4, 0xda, 0x40, 0xaf, 0xa1, 0x46, + 0x36, 0x47, 0x0a, 0xc5, 0x95, 0xfe, 0x7d, 0xe2, 0xd2, 0x66, 0x80, 0xdb, 0xc2, 0xb0, 0xfc, 0xf4, + 0xe6, 0x7a, 0x79, 0x7b, 0x77, 0x67, 0xbf, 0x5c, 0x29, 0xdd, 0xab, 0x1e, 0x54, 0x3e, 0x59, 0xd9, + 0x79, 0xa9, 0x62, 0x68, 0x96, 0x24, 0xf6, 0x11, 0xa6, 0xfa, 0x2e, 0x68, 0xb2, 0x52, 0xfa, 0xa3, + 0x10, 0xa5, 0x96, 0x36, 0xa4, 0x4f, 0xc3, 0x64, 0x65, 0xa7, 0xba, 0xb7, 0xb9, 0x5e, 0xae, 0x96, + 0x37, 0x36, 0xca, 0xa5, 0xfd, 0x3d, 0x7a, 0xe3, 0xec, 0x4b, 0xef, 0x8b, 0x49, 0xfd, 0x45, 0x15, + 0xa6, 0x23, 0x34, 0xd1, 0x0b, 0xac, 0x67, 0xa7, 0xb7, 0x11, 0xcf, 0x0e, 0xa2, 0xfd, 0x12, 0xee, + 0x0a, 0x76, 0xcd, 0xb6, 0xc7, 0x5a, 0xfc, 0x67, 0x00, 0x5b, 0xc9, 0xf6, 0xac, 0x23, 0x0b, 0xb5, + 0xd9, 0x3e, 0x03, 0x6d, 0xe4, 0x27, 0x83, 0x71, 0xba, 0xd5, 0xf0, 0x71, 0xd0, 0x5b, 0x8e, 0x6b, + 0x79, 0xd6, 0x6b, 0xa8, 0x6a, 0xd9, 0x7c, 0x53, 0x02, 0x37, 0xf6, 0x49, 0x43, 0xe3, 0x33, 0x9b, + 0xb6, 0xe7, 0x4b, 0xdb, 0xe8, 0xd8, 0x94, 0xa4, 0x71, 0x01, 0x57, 0x0d, 0x8d, 0xcf, 0xf8, 0xd2, + 0x17, 0x21, 0x53, 0x77, 0x3a, 0xb8, 0x4d, 0xa2, 0x72, 0x78, 0xbd, 0x50, 0x8c, 0x34, 0x1d, 0xf3, + 0x45, 0x58, 0x1f, 0x1b, 0xec, 0x86, 0x64, 0x8c, 0x34, 0x1d, 0xa3, 0x22, 0x4f, 0xc3, 0xa4, 0x79, + 0x7c, 0xdc, 0xc6, 0xe4, 0x9c, 0x88, 0x76, 0xe6, 0x13, 0xfe, 0x30, 0x11, 0x9c, 0xbd, 0x0b, 0x29, + 0x6e, 0x07, 0xbc, 0x24, 0x63, 0x4b, 0x54, 0x5b, 0x74, 0x4f, 0x2a, 0xb1, 0x30, 0x66, 0xa4, 0x6c, + 0x3e, 0x79, 0x11, 0x32, 0x96, 0x5b, 0x0d, 0x36, 0x47, 0x13, 0x17, 0x12, 0x0b, 0x29, 0x23, 0x6d, + 0xb9, 0xfe, 0x6e, 0x58, 0xee, 0xeb, 0x09, 0x98, 0x10, 0x37, 0x77, 0xf5, 0x75, 0x48, 0x35, 0x9c, + 0x9a, 0x49, 0x42, 0x8b, 0x3e, 0x59, 0x58, 0x88, 0xd9, 0x0f, 0x5e, 0xda, 0x62, 0xf2, 0x86, 0x8f, + 0x9c, 0xfd, 0x8f, 0x0a, 0xa4, 0xf8, 0xb0, 0x3e, 0x03, 0xc9, 0x96, 0xe9, 0x9d, 0x10, 0xba, 0xe1, + 0x62, 0x42, 0x53, 0x0c, 0x72, 0x8c, 0xc7, 0xdd, 0x96, 0x69, 0x93, 0x10, 0x60, 0xe3, 0xf8, 0x18, + 0xfb, 0xb5, 0x81, 0xcc, 0x3a, 0x69, 0xfb, 0x9d, 0x66, 0x13, 0xd9, 0x9e, 0xcb, 0xfd, 0xca, 0xc6, + 0x4b, 0x6c, 0x58, 0xff, 0x18, 0x4c, 0x79, 0x6d, 0xd3, 0x6a, 0x08, 0xb2, 0x49, 0x22, 0xab, 0xf1, + 0x09, 0x5f, 0x38, 0x0f, 0x8f, 0x71, 0xde, 0x3a, 0xf2, 0xcc, 0xda, 0x09, 0xaa, 0x07, 0xa0, 0x11, + 0xb2, 0x73, 0xf8, 0x28, 0x13, 0x58, 0x67, 0xf3, 0x1c, 0x9b, 0xfb, 0x43, 0x05, 0xa6, 0xf8, 0x8d, + 0x4a, 0xdd, 0x37, 0xd6, 0x36, 0x80, 0x69, 0xdb, 0x8e, 0x17, 0x36, 0x57, 0x77, 0x28, 0x77, 0xe1, + 0x96, 0x0a, 0x3e, 0xc8, 0x08, 0x11, 0xcc, 0x36, 0x01, 0x82, 0x99, 0x9e, 0x66, 0x9b, 0x87, 0x34, + 0xdb, 0xb9, 0x27, 0x8f, 0x7f, 0xe8, 0xad, 0x2d, 0xd0, 0x21, 0x7c, 0x47, 0xa3, 0x9f, 0x83, 0xe1, + 0x43, 0x74, 0x6c, 0xd9, 0x6c, 0x3f, 0x91, 0x1e, 0xf0, 0x5d, 0xca, 0xa4, 0xbf, 0x4b, 0x59, 0x7c, + 0x19, 0xa6, 0x6b, 0x4e, 0x53, 0x56, 0xb7, 0xa8, 0x49, 0xb7, 0xd7, 0xee, 0x8b, 0xca, 0x2f, 0x40, + 0xd0, 0x62, 0xfe, 0x7a, 0x42, 0xbd, 0xb3, 0x5b, 0xfc, 0xad, 0xc4, 0xec, 0x1d, 0x8a, 0xdb, 0xe5, + 0x97, 0x69, 0xa0, 0xa3, 0x06, 0xaa, 0x61, 0xd5, 0xe1, 0x8f, 0x2f, 0xc3, 0xb3, 0xc7, 0x96, 0x77, + 0xd2, 0x39, 0x5c, 0xaa, 0x39, 0xcd, 0x2b, 0xc7, 0xce, 0xb1, 0x13, 0x3c, 0xee, 0xc2, 0x47, 0xe4, + 0x80, 0x7c, 0x62, 0x8f, 0xbc, 0xc6, 0xfc, 0xd1, 0xd9, 0xd8, 0xe7, 0x63, 0xf9, 0x0a, 0x4c, 0x33, + 0xe1, 0x2a, 0xd9, 0x73, 0xa7, 0xb7, 0x06, 0x7a, 0xdf, 0x7d, 0x97, 0xec, 0xef, 0x7c, 0x9f, 0xac, + 0xd5, 0xc6, 0x14, 0x83, 0xe2, 0x39, 0x7a, 0x03, 0x91, 0x37, 0xe0, 0x11, 0x81, 0x8f, 0xe6, 0x25, + 0x6a, 0xc7, 0x30, 0x7e, 0x87, 0x31, 0x4e, 0x87, 0x18, 0xf7, 0x18, 0x34, 0x5f, 0x82, 0xf1, 0xb3, + 0x70, 0xfd, 0x3b, 0xc6, 0x95, 0x41, 0x61, 0x92, 0x3b, 0x30, 0x49, 0x48, 0x6a, 0x1d, 0xd7, 0x73, + 0x9a, 0xa4, 0xe8, 0xf5, 0xa7, 0xf9, 0xf7, 0xdf, 0xa7, 0x89, 0x32, 0x81, 0x61, 0x25, 0x1f, 0x95, + 0xcf, 0x03, 0x79, 0xcc, 0x50, 0x47, 0xb5, 0x46, 0x0c, 0xc3, 0x7d, 0xa6, 0x88, 0x2f, 0x9f, 0xff, + 0x34, 0x9c, 0xc3, 0x9f, 0x49, 0x4d, 0x0a, 0x6b, 0x12, 0xbf, 0xcb, 0x94, 0xfd, 0xc3, 0xcf, 0xd1, + 0x5c, 0x9c, 0xf6, 0x09, 0x42, 0x3a, 0x85, 0xbc, 0x78, 0x8c, 0x3c, 0x0f, 0xb5, 0xdd, 0xaa, 0xd9, + 0x88, 0x52, 0x2f, 0x74, 0x9b, 0x9e, 0xfd, 0xb5, 0x1f, 0x8a, 0x5e, 0xbc, 0x43, 0x91, 0x85, 0x46, + 0x23, 0x7f, 0x00, 0x8f, 0x46, 0x44, 0xc5, 0x00, 0x9c, 0x5f, 0x64, 0x9c, 0xe7, 0xba, 0x22, 0x03, + 0xd3, 0xee, 0x02, 0x1f, 0xf7, 0x7d, 0x39, 0x00, 0xe7, 0x3f, 0x64, 0x9c, 0x3a, 0xc3, 0x72, 0x97, + 0x62, 0xc6, 0xbb, 0x30, 0xf5, 0x1a, 0x6a, 0x1f, 0x3a, 0x2e, 0xdb, 0x1a, 0x19, 0x80, 0xee, 0x4b, + 0x8c, 0x6e, 0x92, 0x01, 0xc9, 0x5e, 0x09, 0xe6, 0xba, 0x05, 0xa9, 0x23, 0xb3, 0x86, 0x06, 0xa0, + 0xf8, 0x32, 0xa3, 0x18, 0xc5, 0xf2, 0x18, 0x5a, 0x80, 0xcc, 0xb1, 0xc3, 0x96, 0xa5, 0x78, 0xf8, + 0x57, 0x18, 0x3c, 0xcd, 0x31, 0x8c, 0xa2, 0xe5, 0xb4, 0x3a, 0x0d, 0xbc, 0x66, 0xc5, 0x53, 0x7c, + 0x95, 0x53, 0x70, 0x0c, 0xa3, 0x38, 0x83, 0x59, 0xdf, 0xe2, 0x14, 0x6e, 0xc8, 0x9e, 0x2f, 0x40, + 0xda, 0xb1, 0x1b, 0xa7, 0x8e, 0x3d, 0x88, 0x12, 0x5f, 0x63, 0x0c, 0xc0, 0x20, 0x98, 0xe0, 0x36, + 0x8c, 0x0d, 0xea, 0x88, 0xdf, 0xf8, 0x21, 0x4f, 0x0f, 0xee, 0x81, 0x3b, 0x30, 0xc9, 0x0b, 0x94, + 0xe5, 0xd8, 0x03, 0x50, 0xfc, 0x63, 0x46, 0x31, 0x11, 0x82, 0xb1, 0xcb, 0xf0, 0x90, 0xeb, 0x1d, + 0xa3, 0x41, 0x48, 0xbe, 0xce, 0x2f, 0x83, 0x41, 0x98, 0x29, 0x0f, 0x91, 0x5d, 0x3b, 0x19, 0x8c, + 0xe1, 0x1b, 0xdc, 0x94, 0x1c, 0x83, 0x29, 0x4a, 0x30, 0xde, 0x34, 0xdb, 0xee, 0x89, 0xd9, 0x18, + 0xc8, 0x1d, 0xbf, 0xc9, 0x38, 0x32, 0x3e, 0x88, 0x59, 0xa4, 0x63, 0x9f, 0x85, 0xe6, 0xb7, 0xb8, + 0x45, 0x42, 0x30, 0x96, 0x7a, 0xae, 0x47, 0x36, 0xa0, 0xce, 0xc2, 0xf6, 0xdb, 0x3c, 0xf5, 0x28, + 0x76, 0x3b, 0xcc, 0x78, 0x1b, 0xc6, 0x5c, 0xeb, 0xb3, 0x03, 0xd1, 0xfc, 0x13, 0xee, 0x69, 0x02, + 0xc0, 0xe0, 0x7b, 0xf0, 0x58, 0xe4, 0x32, 0x31, 0x00, 0xd9, 0x3f, 0x65, 0x64, 0x33, 0x11, 0x4b, + 0x05, 0x2b, 0x09, 0x67, 0xa5, 0xfc, 0x67, 0xbc, 0x24, 0x20, 0x89, 0x6b, 0x17, 0xdf, 0x28, 0xb8, + 0xe6, 0xd1, 0xd9, 0xac, 0xf6, 0xcf, 0xb9, 0xd5, 0x28, 0x56, 0xb0, 0xda, 0x3e, 0xcc, 0x30, 0xc6, + 0xb3, 0xf9, 0xf5, 0x9b, 0xbc, 0xb0, 0x52, 0xf4, 0x81, 0xe8, 0xdd, 0xcf, 0xc0, 0xac, 0x6f, 0x4e, + 0xde, 0x91, 0xba, 0xd5, 0xa6, 0xd9, 0x1a, 0x80, 0xf9, 0x77, 0x18, 0x33, 0xaf, 0xf8, 0x7e, 0x4b, + 0xeb, 0x6e, 0x9b, 0x2d, 0x4c, 0xfe, 0x32, 0x64, 0x39, 0x79, 0xc7, 0x6e, 0xa3, 0x9a, 0x73, 0x6c, + 0x5b, 0x9f, 0x45, 0xf5, 0x01, 0xa8, 0xbf, 0x25, 0xb9, 0xea, 0x20, 0x04, 0xc7, 0xcc, 0x9b, 0xa0, + 0xf9, 0xbd, 0x4a, 0xd5, 0x6a, 0xb6, 0x9c, 0xb6, 0x17, 0xc3, 0xf8, 0x2f, 0xb8, 0xa7, 0x7c, 0xdc, + 0x26, 0x81, 0xe5, 0xcb, 0x30, 0x41, 0x0e, 0x07, 0x0d, 0xc9, 0xdf, 0x65, 0x44, 0xe3, 0x01, 0x8a, + 0x15, 0x8e, 0x9a, 0xd3, 0x6c, 0x99, 0xed, 0x41, 0xea, 0xdf, 0xbf, 0xe4, 0x85, 0x83, 0x41, 0x58, + 0xe1, 0xf0, 0x4e, 0x5b, 0x08, 0xaf, 0xf6, 0x03, 0x30, 0x7c, 0x9b, 0x17, 0x0e, 0x8e, 0x61, 0x14, + 0xbc, 0x61, 0x18, 0x80, 0xe2, 0x5f, 0x71, 0x0a, 0x8e, 0xc1, 0x14, 0x9f, 0x0a, 0x16, 0xda, 0x36, + 0x3a, 0xb6, 0x5c, 0xaf, 0x4d, 0xfb, 0xe0, 0xfe, 0x54, 0xbf, 0xf7, 0x43, 0xb1, 0x09, 0x33, 0x42, + 0xd0, 0xfc, 0x5d, 0x98, 0x94, 0x5a, 0x0c, 0x3d, 0xee, 0x9d, 0x85, 0xec, 0x5f, 0xfa, 0x31, 0x2b, + 0x46, 0x62, 0x87, 0x91, 0xdf, 0xc2, 0x7e, 0x17, 0xfb, 0x80, 0x78, 0xb2, 0xcf, 0xfd, 0xd8, 0x77, + 0xbd, 0xd0, 0x06, 0xe4, 0x37, 0x60, 0x5c, 0xe8, 0x01, 0xe2, 0xa9, 0xfe, 0x32, 0xa3, 0xca, 0x84, + 0x5b, 0x80, 0xfc, 0x1a, 0x24, 0xf1, 0x7a, 0x1e, 0x0f, 0xff, 0x2b, 0x0c, 0x4e, 0xc4, 0xf3, 0xcf, + 0x41, 0x8a, 0xaf, 0xe3, 0xf1, 0xd0, 0x5f, 0x66, 0x50, 0x1f, 0x82, 0xe1, 0x7c, 0x0d, 0x8f, 0x87, + 0xff, 0x55, 0x0e, 0xe7, 0x10, 0x0c, 0x1f, 0xdc, 0x84, 0x6f, 0xff, 0xf5, 0x24, 0xab, 0xc3, 0xdc, + 0x76, 0xb7, 0x61, 0x94, 0x2d, 0xde, 0xf1, 0xe8, 0x5f, 0x61, 0x27, 0xe7, 0x88, 0xfc, 0x0d, 0x18, + 0x1e, 0xd0, 0xe0, 0x7f, 0x83, 0x41, 0xa9, 0x7c, 0xbe, 0x04, 0xe9, 0xd0, 0x82, 0x1d, 0x0f, 0xff, + 0x9b, 0x0c, 0x1e, 0x46, 0x61, 0xd5, 0xd9, 0x82, 0x1d, 0x4f, 0xf0, 0xb7, 0xb8, 0xea, 0x0c, 0x81, + 0xcd, 0xc6, 0xd7, 0xea, 0x78, 0xf4, 0xdf, 0xe6, 0x56, 0xe7, 0x90, 0xfc, 0x0b, 0x30, 0xe6, 0xd7, + 0xdf, 0x78, 0xfc, 0xdf, 0x61, 0xf8, 0x00, 0x83, 0x2d, 0x10, 0xaa, 0xff, 0xf1, 0x14, 0x7f, 0x97, + 0x5b, 0x20, 0x84, 0xc2, 0x69, 0x24, 0xaf, 0xe9, 0xf1, 0x4c, 0xbf, 0xca, 0xd3, 0x48, 0x5a, 0xd2, + 0xb1, 0x37, 0x49, 0x19, 0x8c, 0xa7, 0xf8, 0x7b, 0xdc, 0x9b, 0x44, 0x1e, 0xab, 0x21, 0x2f, 0x92, + 0xf1, 0x1c, 0xff, 0x80, 0xab, 0x21, 0xad, 0x91, 0xf9, 0x5d, 0xd0, 0xbb, 0x17, 0xc8, 0x78, 0xbe, + 0x2f, 0x30, 0xbe, 0xa9, 0xae, 0xf5, 0x31, 0xff, 0x12, 0xcc, 0x44, 0x2f, 0x8e, 0xf1, 0xac, 0xbf, + 0xf6, 0x63, 0xe9, 0x76, 0x26, 0xbc, 0x36, 0xe6, 0xf7, 0x83, 0x2a, 0x1b, 0x5e, 0x18, 0xe3, 0x69, + 0xbf, 0xf8, 0x63, 0xb1, 0xd0, 0x86, 0xd7, 0xc5, 0x7c, 0x01, 0x20, 0x58, 0x93, 0xe2, 0xb9, 0xbe, + 0xc4, 0xb8, 0x42, 0x20, 0x9c, 0x1a, 0x6c, 0x49, 0x8a, 0xc7, 0x7f, 0x99, 0xa7, 0x06, 0x43, 0xe0, + 0xd4, 0xe0, 0xab, 0x51, 0x3c, 0xfa, 0x2b, 0x3c, 0x35, 0x38, 0x24, 0x7f, 0x1b, 0x52, 0x76, 0xa7, + 0xd1, 0xc0, 0xb1, 0xa5, 0xf7, 0x7f, 0x8d, 0x28, 0xfb, 0xdf, 0x7f, 0xc2, 0xc0, 0x1c, 0x90, 0x5f, + 0x83, 0x61, 0xd4, 0x3c, 0x44, 0xf5, 0x38, 0xe4, 0xff, 0xf8, 0x09, 0xaf, 0x27, 0x58, 0x3a, 0xff, + 0x02, 0x00, 0xbd, 0x99, 0x26, 0x4f, 0x89, 0x62, 0xb0, 0xff, 0xf3, 0x27, 0xec, 0x0d, 0x85, 0x00, + 0x12, 0x10, 0xd0, 0xf7, 0x1d, 0xfa, 0x13, 0xfc, 0x50, 0x24, 0x20, 0x37, 0xe0, 0xb7, 0x60, 0xf4, + 0x15, 0xd7, 0xb1, 0x3d, 0xf3, 0x38, 0x0e, 0xfd, 0xbf, 0x18, 0x9a, 0xcb, 0x63, 0x83, 0x35, 0x9d, + 0x36, 0xf2, 0xcc, 0x63, 0x37, 0x0e, 0xfb, 0xbf, 0x19, 0xd6, 0x07, 0x60, 0x70, 0xcd, 0x74, 0xbd, + 0x41, 0xae, 0xfb, 0xff, 0x70, 0x30, 0x07, 0x60, 0xa5, 0xf1, 0xe7, 0x57, 0xd1, 0x69, 0x1c, 0xf6, + 0x47, 0x5c, 0x69, 0x26, 0x9f, 0x7f, 0x0e, 0xc6, 0xf0, 0x47, 0xfa, 0xd6, 0x4e, 0x0c, 0xf8, 0x8f, + 0x18, 0x38, 0x40, 0xe0, 0x33, 0xbb, 0x5e, 0xdd, 0xb3, 0xe2, 0x8d, 0xfd, 0x7f, 0x99, 0xa7, 0xb9, + 0x7c, 0xbe, 0x00, 0x69, 0xd7, 0xab, 0xd7, 0x3b, 0xac, 0xa3, 0x89, 0x81, 0xff, 0xf1, 0x4f, 0xfc, + 0x9b, 0x5c, 0x1f, 0x53, 0xbc, 0x18, 0xbd, 0x59, 0x07, 0x77, 0x9c, 0x3b, 0x0e, 0xdd, 0xa6, 0x83, + 0xef, 0x37, 0xe0, 0x46, 0xcf, 0x5d, 0x37, 0xbc, 0x88, 0x5c, 0xa9, 0x39, 0xcd, 0x43, 0xc7, 0xbd, + 0x72, 0xe8, 0x78, 0x27, 0x57, 0xbc, 0x13, 0x84, 0xc7, 0xd8, 0xfe, 0x5b, 0x12, 0x7f, 0x9e, 0x3d, + 0xdb, 0xa6, 0x1d, 0x79, 0x1e, 0x5b, 0xb1, 0xb0, 0xde, 0x15, 0xb2, 0x25, 0xae, 0x9f, 0x87, 0x11, + 0x72, 0x25, 0x57, 0xc9, 0x63, 0x27, 0xa5, 0x98, 0xbc, 0xff, 0xee, 0xfc, 0x90, 0xc1, 0xc6, 0xfc, + 0xd9, 0x15, 0xb2, 0x67, 0x99, 0x10, 0x66, 0x57, 0xfc, 0xd9, 0x6b, 0x74, 0xdb, 0x52, 0x98, 0xbd, + 0xe6, 0xcf, 0xae, 0x92, 0x0d, 0x4c, 0x55, 0x98, 0x5d, 0xf5, 0x67, 0xd7, 0xc8, 0x26, 0xfd, 0xb8, + 0x30, 0xbb, 0xe6, 0xcf, 0x5e, 0x27, 0x5b, 0xf3, 0x49, 0x61, 0xf6, 0xba, 0x3f, 0x7b, 0x83, 0xec, + 0xca, 0x4f, 0x09, 0xb3, 0x37, 0xfc, 0xd9, 0x9b, 0x64, 0x37, 0x5e, 0x17, 0x66, 0x6f, 0xfa, 0xb3, + 0xb7, 0xc8, 0x2b, 0x26, 0xa3, 0xc2, 0xec, 0x2d, 0x7d, 0x0e, 0x46, 0xe9, 0x95, 0x2f, 0x93, 0x47, + 0xb7, 0x93, 0x6c, 0x9a, 0x0f, 0x06, 0xf3, 0x57, 0xc9, 0xeb, 0x24, 0x23, 0xe2, 0xfc, 0xd5, 0x60, + 0x7e, 0x85, 0xbc, 0x58, 0xad, 0x89, 0xf3, 0x2b, 0xc1, 0xfc, 0xb5, 0xec, 0x38, 0x79, 0xa5, 0x46, + 0x98, 0xbf, 0x16, 0xcc, 0xaf, 0x66, 0x27, 0x70, 0x30, 0x8b, 0xf3, 0xab, 0xc1, 0xfc, 0x5a, 0x76, + 0xf2, 0x82, 0xb2, 0x90, 0x11, 0xe7, 0xd7, 0x72, 0xbf, 0x44, 0xdc, 0x6b, 0x07, 0xee, 0x9d, 0x11, + 0xdd, 0xeb, 0x3b, 0x76, 0x46, 0x74, 0xac, 0xef, 0xd2, 0x19, 0xd1, 0xa5, 0xbe, 0x33, 0x67, 0x44, + 0x67, 0xfa, 0x6e, 0x9c, 0x11, 0xdd, 0xe8, 0x3b, 0x70, 0x46, 0x74, 0xa0, 0xef, 0xba, 0x19, 0xd1, + 0x75, 0xbe, 0xd3, 0x66, 0x44, 0xa7, 0xf9, 0xee, 0x9a, 0x11, 0xdd, 0xe5, 0x3b, 0x2a, 0x2b, 0x39, + 0x2a, 0x70, 0x51, 0x56, 0x72, 0x51, 0xe0, 0x9c, 0xac, 0xe4, 0x9c, 0xc0, 0x2d, 0x59, 0xc9, 0x2d, + 0x81, 0x43, 0xb2, 0x92, 0x43, 0x02, 0x57, 0x64, 0x25, 0x57, 0x04, 0x4e, 0x60, 0x39, 0x66, 0xa0, + 0x56, 0x44, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, + 0x98, 0xda, 0x37, 0xc7, 0xd4, 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0xfd, + 0x73, 0x4c, 0x8d, 0xc9, 0x31, 0x35, 0x26, 0xc7, 0xd4, 0x98, 0x1c, 0x53, 0x63, 0x72, 0x4c, 0x8d, + 0xc9, 0x31, 0xb5, 0x67, 0x8e, 0x05, 0xee, 0x9d, 0x11, 0xdd, 0x1b, 0x99, 0x63, 0x6a, 0x8f, 0x1c, + 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x23, 0xc7, 0xd4, 0x1e, 0x39, 0xa6, 0xf6, 0xc8, 0x31, 0xb5, 0x47, + 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, 0x95, 0x63, 0x6a, 0xcf, 0x1c, 0x53, 0x7b, 0xe6, 0x98, 0xda, + 0x33, 0xc7, 0xd4, 0x9e, 0x39, 0xa6, 0xf6, 0xcc, 0x31, 0x35, 0x9c, 0x63, 0xff, 0x5a, 0x05, 0x9d, + 0xe6, 0xd8, 0x2e, 0x79, 0xf9, 0x87, 0xb9, 0x62, 0x4e, 0xca, 0xb4, 0x11, 0xec, 0x3a, 0x2d, 0x70, + 0xc9, 0x9c, 0x94, 0x6b, 0xe2, 0xfc, 0x8a, 0x3f, 0xcf, 0xb3, 0x4d, 0x9c, 0xbf, 0xe6, 0xcf, 0xf3, + 0x7c, 0x13, 0xe7, 0x57, 0xfd, 0x79, 0x9e, 0x71, 0xe2, 0xfc, 0x9a, 0x3f, 0xcf, 0x73, 0x4e, 0x9c, + 0xbf, 0xee, 0xcf, 0xf3, 0xac, 0x13, 0xe7, 0x6f, 0xf8, 0xf3, 0x3c, 0xef, 0xc4, 0xf9, 0x9b, 0xfe, + 0x3c, 0xcf, 0x3c, 0x71, 0xfe, 0x96, 0x7e, 0x41, 0xce, 0x3d, 0x2e, 0xe0, 0xbb, 0xf6, 0x82, 0x9c, + 0x7d, 0x92, 0xc4, 0xd5, 0x40, 0x82, 0xe7, 0x9f, 0x24, 0xb1, 0x12, 0x48, 0xf0, 0x0c, 0x94, 0x24, + 0xae, 0xe5, 0x3e, 0x4f, 0xdc, 0x67, 0xcb, 0xee, 0x9b, 0x95, 0xdc, 0x97, 0x08, 0xb9, 0x6e, 0x56, + 0x72, 0x5d, 0x22, 0xe4, 0xb6, 0x59, 0xc9, 0x6d, 0x89, 0x90, 0xcb, 0x66, 0x25, 0x97, 0x25, 0x42, + 0xee, 0x9a, 0x95, 0xdc, 0x95, 0x08, 0xb9, 0x6a, 0x56, 0x72, 0x55, 0x22, 0xe4, 0xa6, 0x59, 0xc9, + 0x4d, 0x89, 0x90, 0x8b, 0x66, 0x25, 0x17, 0x25, 0x42, 0xee, 0x99, 0x95, 0xdc, 0x93, 0x08, 0xb9, + 0xe6, 0xbc, 0xec, 0x9a, 0x44, 0xd8, 0x2d, 0xe7, 0x65, 0xb7, 0x24, 0xc2, 0x2e, 0x39, 0x2f, 0xbb, + 0x24, 0x11, 0x76, 0xc7, 0x79, 0xd9, 0x1d, 0x89, 0xb0, 0x2b, 0xfe, 0x2c, 0xc1, 0x3b, 0xc2, 0x3d, + 0xaf, 0xdd, 0xa9, 0x79, 0x1f, 0xa8, 0x23, 0x5c, 0x16, 0xda, 0x87, 0xf4, 0x8a, 0xbe, 0x44, 0x1a, + 0xd6, 0x70, 0xc7, 0x29, 0xad, 0x60, 0xcb, 0x42, 0x63, 0x11, 0x42, 0xd8, 0xd1, 0x88, 0xd5, 0x0f, + 0xd4, 0x1b, 0x2e, 0x0b, 0x6d, 0x46, 0xbc, 0x7e, 0x37, 0x3f, 0xf2, 0x8e, 0xed, 0xed, 0x04, 0xef, + 0xd8, 0x98, 0xf9, 0xcf, 0xda, 0xb1, 0x2d, 0xc6, 0x9b, 0xdc, 0x37, 0xf6, 0x62, 0xbc, 0xb1, 0xbb, + 0x56, 0x9d, 0x41, 0x3b, 0xb8, 0xc5, 0x78, 0xd3, 0xfa, 0x46, 0xfd, 0x70, 0xfb, 0x2d, 0x16, 0xc1, + 0x06, 0x6a, 0x45, 0x44, 0xf0, 0x59, 0xfb, 0xad, 0x65, 0xa1, 0x94, 0x9c, 0x35, 0x82, 0xd5, 0x33, + 0x47, 0xf0, 0x59, 0x3b, 0xaf, 0x65, 0xa1, 0xbc, 0x9c, 0x39, 0x82, 0x3f, 0x82, 0x7e, 0x88, 0x45, + 0x70, 0x60, 0xfe, 0xb3, 0xf6, 0x43, 0x8b, 0xf1, 0x26, 0x8f, 0x8c, 0x60, 0xf5, 0x0c, 0x11, 0x3c, + 0x48, 0x7f, 0xb4, 0x18, 0x6f, 0xda, 0xe8, 0x08, 0xfe, 0xc0, 0xdd, 0xcc, 0x57, 0x15, 0x98, 0xaa, + 0x58, 0xf5, 0x72, 0xf3, 0x10, 0xd5, 0xeb, 0xa8, 0xce, 0xec, 0xb8, 0x2c, 0x54, 0x82, 0x1e, 0xae, + 0x7e, 0xe7, 0xdd, 0xf9, 0xc0, 0xc2, 0x6b, 0x90, 0xa2, 0x36, 0x5d, 0x5e, 0xce, 0xde, 0x57, 0x62, + 0x2a, 0x9c, 0x2f, 0xaa, 0x5f, 0xe4, 0xb0, 0xab, 0xcb, 0xd9, 0xff, 0xa4, 0x84, 0xaa, 0x9c, 0x3f, + 0x9c, 0xfb, 0x55, 0xa2, 0xa1, 0xfd, 0x81, 0x35, 0xbc, 0x32, 0x90, 0x86, 0x21, 0xdd, 0x1e, 0xef, + 0xd2, 0x2d, 0xa4, 0x55, 0x07, 0x26, 0x2b, 0x56, 0xbd, 0x42, 0xbe, 0xd2, 0x3b, 0x88, 0x4a, 0x54, + 0x46, 0xaa, 0x07, 0xcb, 0x42, 0x58, 0x86, 0x11, 0x7e, 0x48, 0x8b, 0x35, 0x22, 0x67, 0xe1, 0xd3, + 0xda, 0xc2, 0x69, 0x17, 0x7b, 0x9d, 0x36, 0xa8, 0xec, 0xfe, 0x09, 0x17, 0x7b, 0x9d, 0x30, 0xc8, + 0x21, 0xff, 0x54, 0x6f, 0xf0, 0xc5, 0x99, 0xbe, 0x85, 0xa3, 0x9f, 0x87, 0xc4, 0x26, 0x7d, 0x43, + 0x38, 0x53, 0xcc, 0x60, 0xa5, 0xbe, 0xfb, 0xee, 0x7c, 0xf2, 0xa0, 0x63, 0xd5, 0x8d, 0xc4, 0x66, + 0x5d, 0xbf, 0x0b, 0xc3, 0x9f, 0x66, 0x5f, 0x8c, 0xc3, 0x02, 0xab, 0x4c, 0xe0, 0xe3, 0x31, 0x5b, + 0x4c, 0x84, 0x7a, 0xe9, 0xc0, 0xb2, 0xbd, 0xab, 0x2b, 0x37, 0x0d, 0x4a, 0x91, 0xfb, 0xff, 0x01, + 0xe8, 0x39, 0xd7, 0x4d, 0xf7, 0x44, 0xaf, 0x70, 0x66, 0x7a, 0xea, 0x9b, 0xdf, 0x7d, 0x77, 0x7e, + 0x75, 0x10, 0xd6, 0x67, 0xeb, 0xa6, 0x7b, 0xf2, 0xac, 0x77, 0xda, 0x42, 0x4b, 0xc5, 0x53, 0x0f, + 0xb9, 0x9c, 0xbd, 0xc5, 0x57, 0x3d, 0x76, 0x5d, 0xd9, 0xd0, 0x75, 0xa5, 0x84, 0x6b, 0xda, 0x10, + 0xaf, 0x69, 0xf9, 0x61, 0xaf, 0xe7, 0x0d, 0xbe, 0x48, 0x48, 0x96, 0x54, 0xe3, 0x2c, 0xa9, 0x7e, + 0x50, 0x4b, 0xb6, 0x78, 0x7d, 0x94, 0xae, 0x55, 0xed, 0x77, 0xad, 0xea, 0x07, 0xb9, 0xd6, 0x3f, + 0xa1, 0xd9, 0xea, 0xe7, 0xd3, 0x81, 0x4d, 0xdf, 0x4e, 0xfc, 0xf3, 0xb5, 0x17, 0xf4, 0xa1, 0x76, + 0x01, 0xf9, 0xe4, 0xfd, 0xb7, 0xe6, 0x95, 0xdc, 0x57, 0x13, 0xfc, 0xca, 0x69, 0x22, 0x3d, 0xdc, + 0x95, 0xff, 0x79, 0xe9, 0xa9, 0x3e, 0x0a, 0x0b, 0x7d, 0x45, 0x81, 0x99, 0xae, 0x4a, 0x4e, 0xcd, + 0xf4, 0xe1, 0x96, 0x73, 0xfb, 0xac, 0xe5, 0x9c, 0x29, 0xf8, 0xbb, 0x0a, 0x9c, 0x93, 0xca, 0x2b, + 0x55, 0xef, 0x8a, 0xa4, 0xde, 0xa3, 0xdd, 0x67, 0x22, 0x82, 0x21, 0xed, 0xc2, 0xee, 0x95, 0x00, + 0x21, 0x66, 0xdf, 0xef, 0xab, 0x92, 0xdf, 0xcf, 0xfb, 0x80, 0x08, 0x73, 0xf1, 0x08, 0x60, 0x6a, + 0x3b, 0x90, 0xdc, 0x6f, 0x23, 0xa4, 0xcf, 0x41, 0x62, 0xa7, 0xcd, 0x34, 0x9c, 0xa0, 0xf8, 0x9d, + 0x76, 0xb1, 0x6d, 0xda, 0xb5, 0x13, 0x23, 0xb1, 0xd3, 0xd6, 0x2f, 0x82, 0x5a, 0x60, 0x3f, 0x3d, + 0x90, 0x5e, 0x99, 0xa4, 0x02, 0x05, 0xbb, 0xce, 0x24, 0xf0, 0x9c, 0x3e, 0x07, 0xc9, 0x2d, 0x64, + 0x1e, 0x31, 0x25, 0x80, 0xca, 0xe0, 0x11, 0x83, 0x8c, 0xb3, 0x13, 0xbe, 0x0c, 0x29, 0x4e, 0xac, + 0x5f, 0xc2, 0x88, 0x23, 0x8f, 0x9d, 0x96, 0x21, 0xb0, 0x3a, 0x6c, 0xe5, 0x22, 0xb3, 0xfa, 0x65, + 0x18, 0x36, 0xac, 0xe3, 0x13, 0x8f, 0x9d, 0xbc, 0x5b, 0x8c, 0x4e, 0xe7, 0xee, 0xc1, 0x98, 0xaf, + 0xd1, 0x87, 0x4c, 0xbd, 0x4e, 0x2f, 0x4d, 0x9f, 0x0d, 0xaf, 0x27, 0x7c, 0xdf, 0x92, 0x0e, 0xe9, + 0x17, 0x20, 0xb5, 0xe7, 0xb5, 0x83, 0xa2, 0xcf, 0x3b, 0x52, 0x7f, 0x34, 0xf7, 0x4b, 0x0a, 0xa4, + 0xd6, 0x11, 0x6a, 0x11, 0x83, 0x3f, 0x05, 0xc9, 0x75, 0xe7, 0x75, 0x9b, 0x29, 0x38, 0xc5, 0x2c, + 0x8a, 0xa7, 0x99, 0x4d, 0xc9, 0xb4, 0xfe, 0x54, 0xd8, 0xee, 0xd3, 0xbe, 0xdd, 0x43, 0x72, 0xc4, + 0xf6, 0x39, 0xc1, 0xf6, 0xcc, 0x81, 0x58, 0xa8, 0xcb, 0xfe, 0x37, 0x20, 0x1d, 0x3a, 0x8b, 0xbe, + 0xc0, 0xd4, 0x48, 0xc8, 0xc0, 0xb0, 0xad, 0xb0, 0x44, 0x0e, 0xc1, 0xb8, 0x70, 0x62, 0x0c, 0x0d, + 0x99, 0xb8, 0x07, 0x94, 0x98, 0x79, 0x51, 0x34, 0x73, 0xb4, 0x28, 0x33, 0xf5, 0x32, 0xb5, 0x11, + 0x31, 0xf7, 0x25, 0x1a, 0x9c, 0xbd, 0x9d, 0x88, 0x3f, 0xe7, 0x86, 0x41, 0xad, 0x58, 0x8d, 0xdc, + 0x73, 0x00, 0x34, 0xe5, 0xcb, 0x76, 0xa7, 0x29, 0x65, 0xdd, 0x04, 0x37, 0xf0, 0xfe, 0x09, 0xda, + 0x47, 0x2e, 0x11, 0x11, 0xfb, 0x29, 0x5c, 0x60, 0x80, 0xa6, 0x18, 0xc1, 0x3f, 0x13, 0x8b, 0x8f, + 0xec, 0xc4, 0xb0, 0x68, 0x96, 0x8a, 0xde, 0x43, 0x5e, 0xc1, 0x76, 0xbc, 0x13, 0xd4, 0x96, 0x10, + 0x2b, 0xfa, 0x35, 0x21, 0x61, 0x27, 0x56, 0x1e, 0xf7, 0x11, 0x3d, 0x41, 0xd7, 0x72, 0xdf, 0x24, + 0x0a, 0xe2, 0x56, 0xa0, 0xeb, 0x02, 0xd5, 0x01, 0x2e, 0x50, 0xbf, 0x2e, 0xf4, 0x6f, 0x7d, 0xd4, + 0x94, 0x6e, 0x2d, 0x6f, 0x09, 0xf7, 0x39, 0xfd, 0x95, 0x15, 0xef, 0x31, 0xb9, 0x4d, 0xb9, 0xca, + 0xcf, 0xc4, 0xaa, 0xdc, 0xa3, 0xbb, 0x3d, 0xab, 0x4d, 0xd5, 0x41, 0x6d, 0xfa, 0xfb, 0x7e, 0xc7, + 0x41, 0x7f, 0xc4, 0x81, 0xfc, 0x66, 0x88, 0xfe, 0xf1, 0x58, 0xdf, 0xe7, 0x95, 0x92, 0xaf, 0xea, + 0xea, 0xa0, 0xee, 0xcf, 0x27, 0x8a, 0x45, 0x5f, 0xdd, 0x1b, 0x67, 0x08, 0x81, 0x7c, 0xa2, 0x54, + 0xf2, 0xcb, 0x76, 0xea, 0xf3, 0x6f, 0xcd, 0x2b, 0xdf, 0x78, 0x6b, 0x7e, 0x28, 0xf7, 0x9b, 0x0a, + 0x4c, 0x31, 0xc9, 0x50, 0xe0, 0x3e, 0x2b, 0x29, 0xff, 0x08, 0xaf, 0x19, 0x51, 0x16, 0xf8, 0xa9, + 0x05, 0xef, 0x77, 0x14, 0xc8, 0x76, 0xe9, 0xca, 0xed, 0xbd, 0x3c, 0x90, 0xca, 0x79, 0xa5, 0xfc, + 0xb3, 0xb7, 0xf9, 0x3d, 0x18, 0xde, 0xb7, 0x9a, 0xa8, 0x8d, 0x57, 0x02, 0xfc, 0x81, 0xaa, 0xcc, + 0x1f, 0xe6, 0xd0, 0x21, 0x3e, 0x47, 0x95, 0x13, 0xe6, 0x56, 0xf4, 0x2c, 0x24, 0xd7, 0x4d, 0xcf, + 0x24, 0x1a, 0x64, 0xfc, 0xfa, 0x6a, 0x7a, 0x66, 0xee, 0x1a, 0x64, 0xb6, 0x4f, 0xc9, 0x2b, 0x34, + 0x75, 0xf2, 0x7a, 0x88, 0xd8, 0xfd, 0xf1, 0x7e, 0xf5, 0xea, 0xe2, 0x70, 0xaa, 0xae, 0xdd, 0x57, + 0xf2, 0x49, 0xa2, 0xcf, 0x6b, 0x30, 0xb1, 0x83, 0xd5, 0x26, 0x38, 0x02, 0xbb, 0x00, 0xca, 0xb6, + 0xd8, 0x08, 0x85, 0x59, 0x0d, 0x65, 0x5b, 0x6a, 0x1f, 0x55, 0xdf, 0x3c, 0x52, 0xdb, 0xa6, 0xfa, + 0x6d, 0xdb, 0x62, 0x32, 0x35, 0xa1, 0x4d, 0x2d, 0x26, 0x53, 0xa0, 0x8d, 0xb3, 0xf3, 0xfe, 0x07, + 0x15, 0x34, 0xda, 0xea, 0xac, 0xa3, 0x23, 0xcb, 0xb6, 0xbc, 0xee, 0x7e, 0xd5, 0xd7, 0x58, 0x7f, + 0x01, 0xc6, 0xb0, 0x49, 0x37, 0xd8, 0x4f, 0x6f, 0x61, 0xd3, 0x5f, 0x64, 0x2d, 0x8a, 0x44, 0xc1, + 0x06, 0x48, 0xe8, 0x04, 0x18, 0x7d, 0x03, 0xd4, 0x4a, 0x65, 0x9b, 0x2d, 0x6e, 0xab, 0x7d, 0xa1, + 0xec, 0x0d, 0x1c, 0x76, 0xc4, 0xc6, 0xdc, 0x63, 0x03, 0x13, 0xe8, 0xab, 0x90, 0xa8, 0x6c, 0xb3, + 0x86, 0xf7, 0xd2, 0x20, 0x34, 0x46, 0xa2, 0xb2, 0x3d, 0xfb, 0x6f, 0x14, 0x18, 0x17, 0x46, 0xf5, + 0x1c, 0x64, 0xe8, 0x40, 0xe8, 0x72, 0x47, 0x0c, 0x61, 0x8c, 0xeb, 0x9c, 0xf8, 0x80, 0x3a, 0xcf, + 0x16, 0x60, 0x52, 0x1a, 0xd7, 0x97, 0x40, 0x0f, 0x0f, 0x31, 0x25, 0xe8, 0xcf, 0x16, 0x45, 0xcc, + 0xe4, 0x9e, 0x00, 0x08, 0xec, 0xea, 0xff, 0xda, 0x4e, 0xa5, 0xbc, 0xb7, 0x5f, 0x5e, 0xd7, 0x94, + 0xdc, 0xb7, 0x15, 0x48, 0xb3, 0xb6, 0xb5, 0xe6, 0xb4, 0x90, 0x5e, 0x04, 0xa5, 0xc0, 0x22, 0xe8, + 0xe1, 0xf4, 0x56, 0x0a, 0xfa, 0x15, 0x50, 0x8a, 0x83, 0xbb, 0x5a, 0x29, 0xea, 0x2b, 0xa0, 0x94, + 0x98, 0x83, 0x07, 0xf3, 0x8c, 0x52, 0xca, 0xfd, 0x91, 0x0a, 0xd3, 0xe1, 0x36, 0x9a, 0xd7, 0x93, + 0x8b, 0xe2, 0x7d, 0x53, 0x7e, 0xec, 0xea, 0xca, 0xb5, 0xd5, 0x25, 0xfc, 0x8f, 0x1f, 0x92, 0x17, + 0xc5, 0x5b, 0xa8, 0x6e, 0x91, 0xae, 0xd7, 0x44, 0xf2, 0xc9, 0xd0, 0x6c, 0xd7, 0x6b, 0x22, 0xc2, + 0x6c, 0xd7, 0x6b, 0x22, 0xc2, 0x6c, 0xd7, 0x6b, 0x22, 0xc2, 0x6c, 0xd7, 0xa3, 0x00, 0x61, 0xb6, + 0xeb, 0x35, 0x11, 0x61, 0xb6, 0xeb, 0x35, 0x11, 0x61, 0xb6, 0xfb, 0x35, 0x11, 0x36, 0xdd, 0xf3, + 0x35, 0x11, 0x71, 0xbe, 0xfb, 0x35, 0x11, 0x71, 0xbe, 0xfb, 0x35, 0x91, 0x7c, 0xd2, 0x6b, 0x77, + 0x50, 0xef, 0x87, 0x0e, 0x22, 0xbe, 0xdf, 0x3d, 0x60, 0x50, 0x80, 0x77, 0x60, 0x92, 0xee, 0x47, + 0x94, 0x1c, 0xdb, 0x33, 0x2d, 0x1b, 0xb5, 0xf5, 0x4f, 0x40, 0x86, 0x0e, 0xd1, 0xbb, 0x9c, 0xa8, + 0xbb, 0x40, 0x3a, 0xcf, 0xca, 0xad, 0x20, 0x9d, 0xfb, 0xb3, 0x24, 0xcc, 0xd0, 0x81, 0x8a, 0xd9, + 0x44, 0xc2, 0x4b, 0x46, 0x97, 0xa5, 0x47, 0x4a, 0x13, 0x18, 0xfe, 0xe0, 0xdd, 0x79, 0x3a, 0x5a, + 0xf0, 0x83, 0xe9, 0xb2, 0xf4, 0x70, 0x49, 0x94, 0x0b, 0xd6, 0x9f, 0xcb, 0xd2, 0x8b, 0x47, 0xa2, + 0x9c, 0xbf, 0xdc, 0xf8, 0x72, 0xfc, 0x15, 0x24, 0x51, 0x6e, 0xdd, 0x8f, 0xb2, 0xcb, 0xd2, 0xcb, + 0x48, 0xa2, 0x5c, 0xd9, 0x8f, 0xb7, 0xcb, 0xd2, 0xa3, 0x27, 0x51, 0x6e, 0xc3, 0x8f, 0xbc, 0xcb, + 0xd2, 0x43, 0x28, 0x51, 0xee, 0x8e, 0x1f, 0x83, 0x97, 0xa5, 0x57, 0x95, 0x44, 0xb9, 0x17, 0xfd, + 0x68, 0xbc, 0x2c, 0xbd, 0xb4, 0x24, 0xca, 0x6d, 0xfa, 0x71, 0xb9, 0x20, 0xbf, 0xbe, 0x24, 0x0a, + 0xde, 0x0d, 0x22, 0x74, 0x41, 0x7e, 0x91, 0x49, 0x94, 0xfc, 0x64, 0x10, 0xab, 0x0b, 0xf2, 0x2b, + 0x4d, 0xa2, 0xe4, 0x56, 0x10, 0xb5, 0x0b, 0xf2, 0xa3, 0x32, 0x51, 0x72, 0x3b, 0x88, 0xdf, 0x05, + 0xf9, 0xa1, 0x99, 0x28, 0x59, 0x09, 0x22, 0x79, 0x41, 0x7e, 0x7c, 0x26, 0x4a, 0xee, 0x04, 0x7b, + 0xe8, 0x7f, 0x20, 0x85, 0x5f, 0xe8, 0x25, 0xa8, 0x9c, 0x14, 0x7e, 0x10, 0x11, 0x7a, 0x39, 0x29, + 0xf4, 0x20, 0x22, 0xec, 0x72, 0x52, 0xd8, 0x41, 0x44, 0xc8, 0xe5, 0xa4, 0x90, 0x83, 0x88, 0x70, + 0xcb, 0x49, 0xe1, 0x06, 0x11, 0xa1, 0x96, 0x93, 0x42, 0x0d, 0x22, 0xc2, 0x2c, 0x27, 0x85, 0x19, + 0x44, 0x84, 0x58, 0x4e, 0x0a, 0x31, 0x88, 0x08, 0xaf, 0x9c, 0x14, 0x5e, 0x10, 0x11, 0x5a, 0x97, + 0xe4, 0xd0, 0x82, 0xa8, 0xb0, 0xba, 0x24, 0x87, 0x15, 0x44, 0x85, 0xd4, 0x93, 0x72, 0x48, 0x8d, + 0x3d, 0x78, 0x77, 0x7e, 0x18, 0x0f, 0x85, 0xa2, 0xe9, 0x92, 0x1c, 0x4d, 0x10, 0x15, 0x49, 0x97, + 0xe4, 0x48, 0x82, 0xa8, 0x28, 0xba, 0x24, 0x47, 0x11, 0x44, 0x45, 0xd0, 0xdb, 0x72, 0x04, 0x05, + 0xaf, 0xf8, 0xe4, 0xa4, 0x27, 0x8a, 0x71, 0x11, 0xa4, 0x0e, 0x10, 0x41, 0xea, 0x00, 0x11, 0xa4, + 0x0e, 0x10, 0x41, 0xea, 0x00, 0x11, 0xa4, 0x0e, 0x10, 0x41, 0xea, 0x00, 0x11, 0xa4, 0x0e, 0x10, + 0x41, 0xea, 0x20, 0x11, 0xa4, 0x0e, 0x14, 0x41, 0x6a, 0xaf, 0x08, 0xba, 0x24, 0xbf, 0xf0, 0x00, + 0x51, 0x05, 0xe9, 0x92, 0xfc, 0xe4, 0x33, 0x3e, 0x84, 0xd4, 0x81, 0x42, 0x48, 0xed, 0x15, 0x42, + 0x7f, 0xa0, 0xc2, 0xb4, 0x10, 0x42, 0xec, 0xf1, 0xd0, 0x87, 0x55, 0x81, 0xae, 0x0f, 0xf0, 0x7e, + 0x45, 0x54, 0x4c, 0x5d, 0x1f, 0xe0, 0x19, 0x75, 0xbf, 0x38, 0xeb, 0xae, 0x42, 0xe5, 0x01, 0xaa, + 0xd0, 0x86, 0x1f, 0x43, 0xd7, 0x07, 0x78, 0xef, 0xa2, 0x3b, 0xf6, 0x6e, 0xf6, 0x2b, 0x02, 0x2f, + 0x0e, 0x54, 0x04, 0x36, 0x07, 0x2a, 0x02, 0x77, 0x03, 0x0f, 0xfe, 0x72, 0x02, 0xce, 0x05, 0x1e, + 0xa4, 0x9f, 0xc8, 0x4f, 0x24, 0xe5, 0x42, 0x4f, 0xa8, 0x74, 0xfe, 0xd4, 0x26, 0xe4, 0xc6, 0xc4, + 0x66, 0x5d, 0xdf, 0x15, 0x9f, 0x55, 0xe5, 0xcf, 0xfa, 0xfc, 0x26, 0xe4, 0x71, 0xb6, 0x17, 0x7a, + 0x09, 0xd4, 0xcd, 0xba, 0x4b, 0xaa, 0x45, 0xd4, 0x69, 0x4b, 0x06, 0x9e, 0xd6, 0x0d, 0x18, 0x21, + 0xe2, 0x2e, 0x71, 0xef, 0x07, 0x39, 0xf1, 0xba, 0xc1, 0x98, 0x72, 0x6f, 0x2b, 0x70, 0x41, 0x08, + 0xe5, 0x0f, 0xe7, 0x89, 0xc1, 0xed, 0x81, 0x9e, 0x18, 0x08, 0x09, 0x12, 0x3c, 0x3d, 0x78, 0xba, + 0xfb, 0x41, 0x75, 0x38, 0x4b, 0xe4, 0x27, 0x09, 0x7f, 0x11, 0x26, 0x82, 0x2b, 0x20, 0xb7, 0x6c, + 0x6b, 0xf1, 0x9b, 0x99, 0x51, 0xa9, 0xb9, 0x26, 0x6d, 0xa2, 0xf5, 0x85, 0xf9, 0xd9, 0x9a, 0xcb, + 0xc3, 0x64, 0x45, 0xfc, 0x2e, 0x4f, 0xdc, 0x5e, 0x44, 0x0a, 0xb7, 0xe6, 0xf7, 0xbf, 0x36, 0x3f, + 0x94, 0xfb, 0x38, 0x64, 0xc2, 0x5f, 0xd7, 0x91, 0x80, 0x63, 0x1c, 0x98, 0x4f, 0xbe, 0x83, 0xa5, + 0xff, 0xbe, 0x02, 0x8f, 0x84, 0xc5, 0x5f, 0xb2, 0xbc, 0x93, 0x4d, 0x1b, 0xf7, 0xf4, 0xcf, 0x41, + 0x0a, 0x31, 0xc7, 0xb1, 0x5f, 0x3b, 0x61, 0xb7, 0x91, 0x91, 0xe2, 0x4b, 0xe4, 0x5f, 0xc3, 0x87, + 0x48, 0x5b, 0x1c, 0xfc, 0xb4, 0x2b, 0xb3, 0x4f, 0xc1, 0x30, 0xe5, 0x17, 0xf5, 0x1a, 0x97, 0xf4, + 0xfa, 0x8d, 0x08, 0xbd, 0x48, 0x1c, 0xe9, 0x77, 0x05, 0xbd, 0x42, 0x77, 0xab, 0x91, 0xe2, 0x4b, + 0x3c, 0xf8, 0x8a, 0x29, 0xdc, 0xff, 0x91, 0x88, 0x8a, 0x57, 0x72, 0x01, 0x52, 0x65, 0x59, 0x26, + 0x5a, 0xcf, 0x75, 0x48, 0x56, 0x9c, 0x3a, 0xf9, 0x1d, 0x16, 0xf2, 0x7b, 0xb9, 0xcc, 0xc8, 0xec, + 0xc7, 0x73, 0x2f, 0x43, 0xaa, 0x74, 0x62, 0x35, 0xea, 0x6d, 0x64, 0xb3, 0x47, 0xf6, 0x6c, 0x07, + 0x1d, 0x63, 0x0c, 0x7f, 0x2e, 0x57, 0x82, 0xa9, 0x8a, 0x63, 0x17, 0x4f, 0xbd, 0x70, 0xdd, 0x58, + 0x92, 0x52, 0x84, 0x3d, 0xf2, 0x21, 0x5f, 0x00, 0xc1, 0x02, 0xc5, 0xe1, 0xef, 0xbe, 0x3b, 0xaf, + 0xec, 0xfb, 0xdb, 0xe7, 0xdb, 0xf0, 0x28, 0x4b, 0x9f, 0x2e, 0xaa, 0x95, 0x38, 0xaa, 0x31, 0xf6, + 0x98, 0x3a, 0x44, 0xb7, 0x89, 0xe9, 0xec, 0x48, 0xba, 0x87, 0xd3, 0x0c, 0x37, 0x45, 0x7d, 0x35, + 0x53, 0xcf, 0xa4, 0x59, 0x24, 0xdd, 0x52, 0x1c, 0x9d, 0xa4, 0xd9, 0x93, 0x30, 0xe6, 0xcf, 0x85, + 0xa2, 0x21, 0x9c, 0x29, 0x2b, 0x8b, 0x39, 0x48, 0x87, 0x12, 0x56, 0x1f, 0x06, 0xa5, 0xa0, 0x0d, + 0xe1, 0xff, 0x8a, 0x9a, 0x82, 0xff, 0x2b, 0x69, 0x89, 0xc5, 0xa7, 0x60, 0x52, 0xda, 0xbe, 0xc4, + 0x33, 0xeb, 0x1a, 0xe0, 0xff, 0xca, 0x5a, 0x7a, 0x36, 0xf9, 0xf9, 0x7f, 0x34, 0x37, 0xb4, 0x78, + 0x1b, 0xf4, 0xee, 0x8d, 0x4e, 0x7d, 0x04, 0x12, 0x05, 0x4c, 0xf9, 0x28, 0x24, 0x8a, 0x45, 0x4d, + 0x99, 0x9d, 0xfc, 0x6b, 0x5f, 0xbe, 0x90, 0x2e, 0x92, 0xef, 0x22, 0xdf, 0x43, 0x5e, 0xb1, 0xc8, + 0xc0, 0xcf, 0xc3, 0x23, 0x91, 0x1b, 0xa5, 0x18, 0x5f, 0x2a, 0x51, 0xfc, 0xfa, 0x7a, 0x17, 0x7e, + 0x7d, 0x9d, 0xe0, 0x95, 0x3c, 0x7f, 0xe0, 0x5c, 0xd0, 0x23, 0xb6, 0x25, 0xb3, 0xf5, 0xd0, 0x03, + 0xee, 0x42, 0xfe, 0x79, 0x26, 0x5b, 0x8c, 0x94, 0x45, 0x31, 0x0f, 0xac, 0x8b, 0xf9, 0x12, 0xc3, + 0x97, 0x22, 0xf1, 0x47, 0xd2, 0x53, 0x55, 0x71, 0x85, 0x60, 0x24, 0x25, 0x5f, 0xe1, 0xf5, 0x48, + 0x92, 0x93, 0xd0, 0xbb, 0xee, 0xeb, 0xbe, 0xc2, 0xe5, 0x48, 0x59, 0x2b, 0xe6, 0x9d, 0xaf, 0x72, + 0xfe, 0x0a, 0x5b, 0xe4, 0x0b, 0x57, 0xf5, 0x47, 0x78, 0x8e, 0x0a, 0x15, 0x98, 0x19, 0x88, 0x4b, + 0xe5, 0x4b, 0x0c, 0x50, 0xec, 0x09, 0xe8, 0x6d, 0x25, 0x8e, 0xcc, 0xbf, 0xc8, 0x48, 0x4a, 0x3d, + 0x49, 0x62, 0x4c, 0xc5, 0xe1, 0xc5, 0xfd, 0xfb, 0xef, 0xcd, 0x0d, 0xbd, 0xf3, 0xde, 0xdc, 0xd0, + 0x7f, 0x79, 0x6f, 0x6e, 0xe8, 0x7b, 0xef, 0xcd, 0x29, 0x3f, 0x78, 0x6f, 0x4e, 0xf9, 0xd1, 0x7b, + 0x73, 0xca, 0x9f, 0xbe, 0x37, 0xa7, 0xbc, 0xf9, 0x60, 0x4e, 0xf9, 0xc6, 0x83, 0x39, 0xe5, 0x9b, + 0x0f, 0xe6, 0x94, 0xdf, 0x7b, 0x30, 0xa7, 0xbc, 0xfd, 0x60, 0x4e, 0xb9, 0xff, 0x60, 0x4e, 0x79, + 0xe7, 0xc1, 0x9c, 0xf2, 0xbd, 0x07, 0x73, 0xca, 0x0f, 0x1e, 0xcc, 0x0d, 0xfd, 0xe8, 0xc1, 0x9c, + 0xf2, 0xa7, 0x0f, 0xe6, 0x86, 0xde, 0x7c, 0x7f, 0x6e, 0xe8, 0xad, 0xf7, 0xe7, 0x86, 0xbe, 0xf1, + 0xfe, 0x9c, 0x02, 0xef, 0xaf, 0xc2, 0x1c, 0xfb, 0x22, 0x99, 0x8d, 0x2c, 0x1c, 0x74, 0x57, 0xbc, + 0x13, 0x44, 0x1a, 0x82, 0x6b, 0xfc, 0xd7, 0x9c, 0xfc, 0x81, 0x33, 0x7e, 0xa5, 0x6c, 0xf6, 0x61, + 0xbf, 0xc0, 0x96, 0xfb, 0xb7, 0xc3, 0x30, 0xca, 0x37, 0x82, 0xa3, 0x7e, 0x0f, 0x7a, 0x0d, 0x52, + 0x27, 0x56, 0xc3, 0x6c, 0x5b, 0xde, 0x29, 0xdb, 0x01, 0x7d, 0x6c, 0x29, 0x50, 0x9b, 0xef, 0x99, + 0xbe, 0xd8, 0x69, 0x3a, 0x9d, 0xb6, 0xe1, 0x8b, 0xea, 0x17, 0x20, 0x73, 0x82, 0xac, 0xe3, 0x13, + 0xaf, 0x6a, 0xd9, 0xd5, 0x5a, 0x93, 0x74, 0xca, 0xe3, 0x06, 0xd0, 0xb1, 0x4d, 0xbb, 0xd4, 0xc4, + 0x27, 0xab, 0x9b, 0x9e, 0x49, 0xee, 0xd0, 0x33, 0x06, 0xf9, 0xac, 0x5f, 0x84, 0x4c, 0x1b, 0xb9, + 0x9d, 0x86, 0x57, 0xad, 0x39, 0x1d, 0xdb, 0x23, 0xbd, 0xac, 0x6a, 0xa4, 0xe9, 0x58, 0x09, 0x0f, + 0xe9, 0x4f, 0xc2, 0xb8, 0xd7, 0xee, 0xa0, 0xaa, 0x5b, 0x73, 0x3c, 0xb7, 0x69, 0xda, 0xa4, 0x97, + 0x4d, 0x19, 0x19, 0x3c, 0xb8, 0xc7, 0xc6, 0xc8, 0xdf, 0x1b, 0xa8, 0x39, 0x6d, 0x44, 0x6e, 0xa5, + 0x13, 0x06, 0x3d, 0xd0, 0x35, 0x50, 0x5f, 0x45, 0xa7, 0xe4, 0x66, 0x2d, 0x69, 0xe0, 0x8f, 0xfa, + 0x33, 0x30, 0x42, 0xff, 0x14, 0x05, 0xe9, 0xac, 0xc9, 0x73, 0x6b, 0xff, 0xd2, 0xe8, 0xfe, 0xac, + 0xc1, 0x04, 0xf4, 0x5b, 0x30, 0xea, 0xa1, 0x76, 0xdb, 0xb4, 0x6c, 0x72, 0xe3, 0x94, 0x5e, 0x99, + 0x8f, 0x30, 0xc3, 0x3e, 0x95, 0x20, 0x3f, 0xed, 0x6a, 0x70, 0x79, 0x7d, 0x0d, 0x32, 0x44, 0x6e, + 0xa5, 0x4a, 0xff, 0x5c, 0x47, 0xba, 0x67, 0x2c, 0xa7, 0xa9, 0x1c, 0x7f, 0x4c, 0xc0, 0x61, 0xf4, + 0x67, 0xed, 0xc6, 0xc9, 0x69, 0x9f, 0x8c, 0x38, 0x2d, 0x29, 0xbb, 0x2b, 0xa4, 0x65, 0xa4, 0xa7, + 0x66, 0x3c, 0xf4, 0x87, 0xef, 0xb6, 0x21, 0x13, 0xd6, 0x8b, 0x9b, 0x81, 0xb6, 0x3e, 0xc4, 0x0c, + 0x4f, 0x07, 0x3f, 0xe5, 0xde, 0xc3, 0x0a, 0x74, 0x3e, 0x9f, 0xb8, 0xa9, 0xcc, 0xee, 0x82, 0x26, + 0x9f, 0x2f, 0x82, 0xf2, 0xb2, 0x48, 0xa9, 0x85, 0x2f, 0x96, 0x6c, 0x92, 0x07, 0x8c, 0xb9, 0x17, + 0x60, 0x84, 0xc6, 0x8f, 0x9e, 0x86, 0xd1, 0xe0, 0x17, 0x13, 0x53, 0x90, 0xdc, 0x3d, 0xa8, 0xec, + 0xd1, 0x9f, 0x3e, 0xdd, 0xdb, 0x2a, 0xec, 0xee, 0xed, 0x6f, 0x96, 0x3e, 0xa9, 0x25, 0xf4, 0x49, + 0x48, 0x17, 0x37, 0xb7, 0xb6, 0xaa, 0xc5, 0xc2, 0xe6, 0x56, 0xf9, 0x9e, 0xa6, 0xe6, 0xe6, 0x60, + 0x84, 0xea, 0x49, 0x7e, 0xc2, 0xad, 0x63, 0xdb, 0xa7, 0xbc, 0x75, 0x20, 0x07, 0xb9, 0x6f, 0xe9, + 0x30, 0x5a, 0x68, 0x34, 0xb6, 0xcd, 0x96, 0xab, 0xbf, 0x04, 0x53, 0xf4, 0xc7, 0x24, 0xf6, 0x9d, + 0x75, 0xf2, 0x4b, 0x83, 0xb8, 0x30, 0x28, 0xec, 0x27, 0xec, 0x83, 0xeb, 0x66, 0xe2, 0x4b, 0x5d, + 0xb2, 0xd4, 0xc0, 0xdd, 0x1c, 0xfa, 0x3e, 0x68, 0x7c, 0x70, 0xa3, 0xe1, 0x98, 0x1e, 0xe6, 0x4d, + 0xb0, 0x1f, 0x02, 0xec, 0xcd, 0xcb, 0x45, 0x29, 0x6d, 0x17, 0x83, 0xfe, 0x09, 0x48, 0x6d, 0xda, + 0xde, 0xb5, 0x15, 0xcc, 0xc6, 0xff, 0xbc, 0x4a, 0x37, 0x1b, 0x17, 0xa1, 0x2c, 0x3e, 0x82, 0xa1, + 0xaf, 0xaf, 0x62, 0x74, 0xb2, 0x1f, 0x9a, 0x88, 0x04, 0x68, 0x72, 0xa8, 0xbf, 0x00, 0x63, 0xf8, + 0xce, 0x84, 0x9e, 0x7c, 0x98, 0xb7, 0xad, 0x5d, 0x70, 0x5f, 0x86, 0xe2, 0x03, 0x0c, 0x27, 0xa0, + 0xe7, 0x1f, 0xe9, 0x4b, 0x10, 0x52, 0x20, 0xc0, 0x60, 0x82, 0x3d, 0x5f, 0x83, 0xd1, 0x9e, 0x04, + 0x7b, 0x92, 0x06, 0x7b, 0x61, 0x0d, 0xf6, 0x7c, 0x0d, 0x52, 0x7d, 0x09, 0xc2, 0x1a, 0xf8, 0xc7, + 0x7a, 0x11, 0x60, 0xc3, 0x7a, 0x03, 0xd5, 0xa9, 0x0a, 0xf4, 0x8f, 0xaf, 0xe4, 0x22, 0x18, 0x02, + 0x21, 0x4a, 0x11, 0x42, 0xe9, 0x65, 0x48, 0xef, 0x1d, 0x05, 0x24, 0xd0, 0x95, 0xc7, 0xbe, 0x1a, + 0x47, 0x12, 0x4b, 0x18, 0xe7, 0xab, 0x42, 0x2f, 0x26, 0xdd, 0x5f, 0x95, 0xd0, 0xd5, 0x84, 0x50, + 0x81, 0x2a, 0x94, 0x24, 0x13, 0xa3, 0x4a, 0x88, 0x25, 0x8c, 0xc3, 0xc5, 0xb0, 0xe8, 0x38, 0x58, + 0x92, 0x55, 0xa5, 0xf9, 0x08, 0x0a, 0x26, 0xc1, 0x8a, 0x21, 0x3b, 0x22, 0x1e, 0x21, 0x41, 0x8e, + 0xc1, 0x13, 0xbd, 0x3d, 0xc2, 0x65, 0xb8, 0x47, 0xf8, 0x71, 0x38, 0xcf, 0xc8, 0xcb, 0xac, 0x98, + 0x67, 0x32, 0x36, 0xcf, 0xb8, 0xa8, 0x94, 0x67, 0x7c, 0x58, 0xff, 0x14, 0x4c, 0xf2, 0x31, 0x5c, + 0x9e, 0x30, 0xa9, 0xc6, 0xfe, 0x3c, 0x55, 0x6f, 0x52, 0x26, 0x49, 0x39, 0x65, 0xbc, 0x5e, 0x81, + 0x09, 0x3e, 0xb4, 0xed, 0x92, 0xcb, 0x9d, 0x62, 0x7f, 0xfa, 0xa1, 0x37, 0x23, 0x15, 0xa4, 0x84, + 0x12, 0x7a, 0x76, 0x1d, 0x66, 0xa2, 0xab, 0x51, 0xb8, 0xfc, 0x8e, 0xd1, 0xf2, 0x7b, 0x2e, 0x5c, + 0x7e, 0x95, 0x70, 0xf9, 0x2e, 0xc1, 0x23, 0x91, 0xb5, 0x27, 0x8e, 0x24, 0x11, 0x26, 0xb9, 0x0d, + 0xe3, 0x42, 0xc9, 0x09, 0x83, 0x87, 0x23, 0xc0, 0xc3, 0xdd, 0xe0, 0x20, 0xb4, 0x22, 0x56, 0x0f, + 0x01, 0xac, 0x86, 0xc1, 0x9f, 0x80, 0x09, 0xb1, 0xde, 0x84, 0xd1, 0xe3, 0x11, 0xe8, 0xf1, 0x08, + 0x74, 0xf4, 0xb9, 0x93, 0x11, 0xe8, 0xa4, 0x84, 0xde, 0xeb, 0x79, 0xee, 0xa9, 0x08, 0xf4, 0x54, + 0x04, 0x3a, 0xfa, 0xdc, 0x7a, 0x04, 0x5a, 0x0f, 0xa3, 0x9f, 0x83, 0x49, 0xa9, 0xc4, 0x84, 0xe1, + 0xa3, 0x11, 0xf0, 0xd1, 0x30, 0xfc, 0x79, 0xd0, 0xe4, 0xe2, 0x12, 0xc6, 0x4f, 0x46, 0xe0, 0x27, + 0xa3, 0x4e, 0x1f, 0xad, 0xfd, 0x48, 0x04, 0x7c, 0x24, 0xf2, 0xf4, 0xd1, 0x78, 0x2d, 0x02, 0xaf, + 0x85, 0xf1, 0x79, 0xc8, 0x84, 0xab, 0x49, 0x18, 0x9b, 0x8a, 0xc0, 0xa6, 0x64, 0xbb, 0x0b, 0xc5, + 0x24, 0x2e, 0xd2, 0xc7, 0x7a, 0xa4, 0x8b, 0x50, 0x42, 0xe2, 0x48, 0x32, 0x61, 0x92, 0x4f, 0xc3, + 0xb9, 0xa8, 0x92, 0x11, 0xc1, 0xb1, 0x10, 0xe6, 0x98, 0xc0, 0x3d, 0x62, 0xd0, 0xec, 0x99, 0x2d, + 0xa9, 0x71, 0x9a, 0xfd, 0x0c, 0x4c, 0x47, 0x14, 0x8e, 0x08, 0xda, 0x25, 0xb1, 0x1b, 0xcb, 0x86, + 0x68, 0x49, 0x11, 0xb0, 0xec, 0xe3, 0x5d, 0xc7, 0xb2, 0xbd, 0x70, 0x57, 0xf6, 0xed, 0x69, 0x98, + 0x60, 0xe5, 0x69, 0xa7, 0x5d, 0x47, 0x6d, 0x54, 0xd7, 0xff, 0x42, 0xef, 0xde, 0x69, 0xb9, 0xbb, + 0xa8, 0x31, 0xd4, 0x19, 0x5a, 0xa8, 0xcf, 0xf4, 0x6c, 0xa1, 0xae, 0xc4, 0xd3, 0xc7, 0x75, 0x52, + 0xa5, 0xae, 0x4e, 0xea, 0xe9, 0xde, 0xa4, 0xbd, 0x1a, 0xaa, 0x52, 0x57, 0x43, 0xd5, 0x9f, 0x24, + 0xb2, 0xaf, 0xda, 0xe8, 0xee, 0xab, 0x16, 0x7a, 0xb3, 0xf4, 0x6e, 0xaf, 0x36, 0xba, 0xdb, 0xab, + 0x18, 0x9e, 0xe8, 0x2e, 0x6b, 0xa3, 0xbb, 0xcb, 0xea, 0xc3, 0xd3, 0xbb, 0xd9, 0xda, 0xe8, 0x6e, + 0xb6, 0x62, 0x78, 0xa2, 0x7b, 0xae, 0xcd, 0x88, 0x9e, 0xeb, 0x99, 0xde, 0x44, 0xfd, 0x5a, 0xaf, + 0xad, 0xa8, 0xd6, 0x6b, 0xb1, 0x8f, 0x52, 0x7d, 0x3b, 0xb0, 0xcd, 0x88, 0x0e, 0x2c, 0x4e, 0xb1, + 0x1e, 0x8d, 0xd8, 0x56, 0x54, 0x23, 0x16, 0xab, 0x58, 0xaf, 0x7e, 0xec, 0xff, 0x93, 0xfb, 0xb1, + 0xcb, 0xbd, 0x99, 0xa2, 0xdb, 0xb2, 0x8d, 0xee, 0xb6, 0x6c, 0x21, 0x2e, 0xe7, 0xa2, 0xba, 0xb3, + 0xcf, 0xf4, 0xec, 0xce, 0x06, 0x48, 0xe1, 0xb8, 0x26, 0xed, 0xe5, 0x5e, 0x4d, 0xda, 0x52, 0x3c, + 0x77, 0xff, 0x5e, 0xed, 0xa0, 0x47, 0xaf, 0xf6, 0x6c, 0x3c, 0xf1, 0xcf, 0x5b, 0xb6, 0x9f, 0xb7, + 0x6c, 0x3f, 0x6f, 0xd9, 0x7e, 0xde, 0xb2, 0xfd, 0xec, 0x5b, 0xb6, 0x7c, 0xf2, 0x0b, 0x5f, 0x9b, + 0x57, 0x72, 0xff, 0x59, 0xf5, 0xff, 0x6a, 0xd6, 0x4b, 0x96, 0x77, 0x82, 0xcb, 0xdb, 0x36, 0x64, + 0xc8, 0xdf, 0xbb, 0x68, 0x9a, 0xad, 0x96, 0x65, 0x1f, 0xb3, 0x9e, 0x6d, 0xb1, 0x7b, 0x2b, 0x91, + 0x01, 0xc8, 0x5f, 0x0c, 0xd9, 0xa6, 0xc2, 0x6c, 0xb9, 0xb1, 0x83, 0x11, 0xfd, 0x2e, 0xa4, 0x9b, + 0xee, 0xb1, 0xcf, 0x96, 0xe8, 0x5a, 0x08, 0x25, 0x36, 0x7a, 0xa5, 0x01, 0x19, 0x34, 0xfd, 0x01, + 0xac, 0xda, 0xe1, 0xa9, 0x17, 0xa8, 0xa6, 0xc6, 0xa9, 0x86, 0x7d, 0x2a, 0xaa, 0x76, 0x18, 0x8c, + 0xe0, 0xb0, 0x95, 0x75, 0x8f, 0xab, 0x74, 0x42, 0xf0, 0xbc, 0x04, 0x93, 0x92, 0xb6, 0x11, 0x39, + 0xff, 0x10, 0xbe, 0xc1, 0x8a, 0xc9, 0x9a, 0xc7, 0xe5, 0x44, 0x38, 0x20, 0x73, 0x4f, 0xc0, 0xb8, + 0xc0, 0xad, 0x67, 0x40, 0x39, 0x62, 0xdf, 0xa4, 0x54, 0x8e, 0x72, 0x5f, 0x55, 0x20, 0xcd, 0x5e, + 0x23, 0xd8, 0x35, 0xad, 0xb6, 0xfe, 0x22, 0x24, 0x1b, 0xfc, 0xdb, 0x4c, 0x0f, 0xfb, 0xcd, 0x59, + 0xc2, 0xa0, 0x6f, 0xc0, 0x70, 0xdb, 0xff, 0xb6, 0xd3, 0x43, 0x7d, 0x1d, 0x96, 0xc0, 0x73, 0xf7, + 0x15, 0x98, 0x62, 0x6f, 0xb9, 0xba, 0xec, 0xdd, 0x67, 0xb3, 0x35, 0xfb, 0x2d, 0x05, 0xc6, 0xfc, + 0x23, 0xfd, 0x10, 0x26, 0xfc, 0x03, 0xfa, 0x7e, 0x3d, 0x8d, 0xd4, 0x7c, 0xc8, 0xc2, 0x5d, 0x1c, + 0x4b, 0x11, 0x9f, 0xe8, 0x83, 0x28, 0xba, 0x26, 0x8b, 0x83, 0xb3, 0x05, 0x98, 0x8e, 0x10, 0x3b, + 0xcb, 0x82, 0x9c, 0xbb, 0x08, 0x63, 0x15, 0xc7, 0xa3, 0x3f, 0x9a, 0xa3, 0x9f, 0x0b, 0x3d, 0x55, + 0x28, 0x26, 0xb4, 0x21, 0x02, 0x5e, 0xbc, 0x08, 0xa3, 0x2c, 0xfb, 0xf5, 0x11, 0x48, 0x6c, 0x17, + 0xb4, 0x21, 0xf2, 0x7f, 0x51, 0x53, 0xc8, 0xff, 0x25, 0x2d, 0x51, 0xdc, 0x7a, 0x88, 0xa7, 0x4c, + 0x43, 0xef, 0x3c, 0x98, 0x1b, 0x8a, 0x7a, 0xca, 0x74, 0x38, 0x42, 0xcd, 0xf3, 0xff, 0x02, 0x00, + 0x00, 0xff, 0xff, 0x5e, 0xb7, 0x73, 0xce, 0x29, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unmarshaler/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unmarshaler/theproto3.pb.go index 613fb1cda..2735ac7b5 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unmarshaler/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unmarshaler/theproto3.pb.go @@ -273,491 +273,498 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7734 bytes of a gzipped FileDescriptorSet + // 7844 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x49, 0xe4, 0x0c, - 0x34, 0x1a, 0x51, 0xb4, 0xc5, 0xe1, 0x70, 0x38, 0x37, 0x8c, 0x25, 0x05, 0x00, 0xc1, 0x11, 0xc7, - 0xbc, 0xb9, 0x49, 0x5a, 0xd2, 0x2a, 0x15, 0x54, 0x13, 0x38, 0x24, 0x21, 0x01, 0xdd, 0x08, 0xba, - 0x21, 0x89, 0x7e, 0x48, 0x69, 0xd7, 0xc9, 0xc6, 0x9b, 0xad, 0x5c, 0x37, 0xa9, 0x78, 0xbd, 0xbe, - 0xc8, 0x9b, 0xda, 0xd8, 0xbb, 0xb9, 0x79, 0x9d, 0x8d, 0xb3, 0xb5, 0x95, 0xca, 0x2a, 0x0f, 0x4e, - 0x26, 0x2f, 0x29, 0x6f, 0xf2, 0x92, 0x72, 0xa5, 0x54, 0xab, 0xb1, 0xab, 0xd6, 0x49, 0x9c, 0xc4, - 0x9b, 0x75, 0xd5, 0x6e, 0x95, 0xf7, 0x61, 0xeb, 0xdc, 0xba, 0xcf, 0x39, 0x68, 0xa0, 0xc1, 0x91, - 0x64, 0xfb, 0xc1, 0x2f, 0x33, 0xe8, 0x73, 0xfe, 0xef, 0xeb, 0xbf, 0xff, 0xdb, 0xf9, 0xfb, 0x74, - 0x03, 0x84, 0x9f, 0x5f, 0x85, 0xf3, 0xc7, 0xae, 0x7b, 0xdc, 0x40, 0x97, 0x5b, 0x6d, 0xd7, 0x77, - 0x0f, 0x3b, 0x47, 0x97, 0x6b, 0xc8, 0xab, 0xb6, 0xeb, 0x2d, 0xdf, 0x6d, 0x2f, 0x91, 0x31, 0x73, - 0x92, 0x4a, 0x2c, 0x71, 0x89, 0xdc, 0x16, 0x4c, 0xad, 0xd7, 0x1b, 0x68, 0x2d, 0x10, 0xdc, 0x43, - 0xbe, 0x79, 0x13, 0x92, 0x47, 0xf5, 0x06, 0xca, 0x6a, 0xe7, 0xf5, 0x85, 0xf4, 0xca, 0xc5, 0x25, - 0x05, 0xb4, 0x24, 0x23, 0x76, 0xf1, 0xb0, 0x45, 0x10, 0xb9, 0xef, 0x26, 0x61, 0x3a, 0x62, 0xd6, - 0x34, 0x21, 0xe9, 0xd8, 0x4d, 0xcc, 0xa8, 0x2d, 0x8c, 0x59, 0xe4, 0xb3, 0x99, 0x85, 0xd1, 0x96, - 0x5d, 0x7d, 0xcd, 0x3e, 0x46, 0xd9, 0x04, 0x19, 0xe6, 0x87, 0xe6, 0x1c, 0x40, 0x0d, 0xb5, 0x90, - 0x53, 0x43, 0x4e, 0xf5, 0x34, 0xab, 0x9f, 0xd7, 0x17, 0xc6, 0x2c, 0x61, 0xc4, 0xfc, 0x08, 0x4c, - 0xb5, 0x3a, 0x87, 0x8d, 0x7a, 0xb5, 0x22, 0x88, 0xc1, 0x79, 0x7d, 0x61, 0xd8, 0x32, 0xe8, 0xc4, - 0x5a, 0x28, 0xfc, 0x14, 0x4c, 0xbe, 0x81, 0xec, 0xd7, 0x44, 0xd1, 0x34, 0x11, 0x9d, 0xc0, 0xc3, - 0x82, 0x60, 0x09, 0x32, 0x4d, 0xe4, 0x79, 0xf6, 0x31, 0xaa, 0xf8, 0xa7, 0x2d, 0x94, 0x4d, 0x92, - 0xab, 0x3f, 0xdf, 0x75, 0xf5, 0xea, 0x95, 0xa7, 0x19, 0x6a, 0xff, 0xb4, 0x85, 0xcc, 0x02, 0x8c, - 0x21, 0xa7, 0xd3, 0xa4, 0x0c, 0xc3, 0x3d, 0xec, 0x57, 0x76, 0x3a, 0x4d, 0x95, 0x25, 0x85, 0x61, - 0x8c, 0x62, 0xd4, 0x43, 0xed, 0xd7, 0xeb, 0x55, 0x94, 0x1d, 0x21, 0x04, 0x4f, 0x75, 0x11, 0xec, - 0xd1, 0x79, 0x95, 0x83, 0xe3, 0xcc, 0x12, 0x8c, 0xa1, 0x37, 0x7d, 0xe4, 0x78, 0x75, 0xd7, 0xc9, - 0x8e, 0x12, 0x92, 0x27, 0x23, 0xbc, 0x88, 0x1a, 0x35, 0x95, 0x22, 0xc4, 0x99, 0xd7, 0x61, 0xd4, - 0x6d, 0xf9, 0x75, 0xd7, 0xf1, 0xb2, 0xa9, 0xf3, 0xda, 0x42, 0x7a, 0xe5, 0xb1, 0xc8, 0x40, 0xd8, - 0xa1, 0x32, 0x16, 0x17, 0x36, 0x37, 0xc0, 0xf0, 0xdc, 0x4e, 0xbb, 0x8a, 0x2a, 0x55, 0xb7, 0x86, - 0x2a, 0x75, 0xe7, 0xc8, 0xcd, 0x8e, 0x11, 0x82, 0xf9, 0xee, 0x0b, 0x21, 0x82, 0x25, 0xb7, 0x86, - 0x36, 0x9c, 0x23, 0xd7, 0x9a, 0xf0, 0xa4, 0x63, 0x73, 0x06, 0x46, 0xbc, 0x53, 0xc7, 0xb7, 0xdf, - 0xcc, 0x66, 0x48, 0x84, 0xb0, 0xa3, 0xdc, 0x9f, 0x0e, 0xc3, 0xe4, 0x20, 0x21, 0x76, 0x1b, 0x86, - 0x8f, 0xf0, 0x55, 0x66, 0x13, 0x67, 0xb1, 0x01, 0xc5, 0xc8, 0x46, 0x1c, 0x79, 0x40, 0x23, 0x16, - 0x20, 0xed, 0x20, 0xcf, 0x47, 0x35, 0x1a, 0x11, 0xfa, 0x80, 0x31, 0x05, 0x14, 0xd4, 0x1d, 0x52, - 0xc9, 0x07, 0x0a, 0xa9, 0x97, 0x60, 0x32, 0x50, 0xa9, 0xd2, 0xb6, 0x9d, 0x63, 0x1e, 0x9b, 0x97, - 0xe3, 0x34, 0x59, 0x2a, 0x73, 0x9c, 0x85, 0x61, 0xd6, 0x04, 0x92, 0x8e, 0xcd, 0x35, 0x00, 0xd7, - 0x41, 0xee, 0x51, 0xa5, 0x86, 0xaa, 0x8d, 0x6c, 0xaa, 0x87, 0x95, 0x76, 0xb0, 0x48, 0x97, 0x95, - 0x5c, 0x3a, 0x5a, 0x6d, 0x98, 0xb7, 0xc2, 0x50, 0x1b, 0xed, 0x11, 0x29, 0x5b, 0x34, 0xc9, 0xba, - 0xa2, 0xed, 0x00, 0x26, 0xda, 0x08, 0xc7, 0x3d, 0xaa, 0xb1, 0x2b, 0x1b, 0x23, 0x4a, 0x2c, 0xc5, - 0x5e, 0x99, 0xc5, 0x60, 0xf4, 0xc2, 0xc6, 0xdb, 0xe2, 0xa1, 0xf9, 0x04, 0x04, 0x03, 0x15, 0x12, - 0x56, 0x40, 0xaa, 0x50, 0x86, 0x0f, 0x6e, 0xdb, 0x4d, 0x34, 0x7b, 0x13, 0x26, 0x64, 0xf3, 0x98, - 0xe7, 0x60, 0xd8, 0xf3, 0xed, 0xb6, 0x4f, 0xa2, 0x70, 0xd8, 0xa2, 0x07, 0xa6, 0x01, 0x3a, 0x72, - 0x6a, 0xa4, 0xca, 0x0d, 0x5b, 0xf8, 0xe3, 0xec, 0x0d, 0x18, 0x97, 0x4e, 0x3f, 0x28, 0x30, 0xf7, - 0xd9, 0x11, 0x38, 0x17, 0x15, 0x73, 0x91, 0xe1, 0x3f, 0x03, 0x23, 0x4e, 0xa7, 0x79, 0x88, 0xda, - 0x59, 0x9d, 0x30, 0xb0, 0x23, 0xb3, 0x00, 0xc3, 0x0d, 0xfb, 0x10, 0x35, 0xb2, 0xc9, 0xf3, 0xda, - 0xc2, 0xc4, 0xca, 0x47, 0x06, 0x8a, 0xea, 0xa5, 0x4d, 0x0c, 0xb1, 0x28, 0xd2, 0x7c, 0x0e, 0x92, - 0xac, 0xc4, 0x61, 0x86, 0xc5, 0xc1, 0x18, 0x70, 0x2c, 0x5a, 0x04, 0x67, 0x3e, 0x0a, 0x63, 0xf8, - 0x7f, 0x6a, 0xdb, 0x11, 0xa2, 0x73, 0x0a, 0x0f, 0x60, 0xbb, 0x9a, 0xb3, 0x90, 0x22, 0x61, 0x56, - 0x43, 0x7c, 0x69, 0x08, 0x8e, 0xb1, 0x63, 0x6a, 0xe8, 0xc8, 0xee, 0x34, 0xfc, 0xca, 0xeb, 0x76, - 0xa3, 0x83, 0x48, 0xc0, 0x8c, 0x59, 0x19, 0x36, 0xf8, 0x49, 0x3c, 0x66, 0xce, 0x43, 0x9a, 0x46, - 0x65, 0xdd, 0xa9, 0xa1, 0x37, 0x49, 0xf5, 0x19, 0xb6, 0x68, 0xa0, 0x6e, 0xe0, 0x11, 0x7c, 0xfa, - 0x57, 0x3d, 0xd7, 0xe1, 0xae, 0x25, 0xa7, 0xc0, 0x03, 0xe4, 0xf4, 0x37, 0xd4, 0xc2, 0xf7, 0x78, - 0xf4, 0xe5, 0xa9, 0xb1, 0x98, 0xfb, 0x46, 0x02, 0x92, 0x24, 0xdf, 0x26, 0x21, 0xbd, 0xff, 0xf2, - 0x6e, 0xb9, 0xb2, 0xb6, 0x73, 0x50, 0xdc, 0x2c, 0x1b, 0x9a, 0x39, 0x01, 0x40, 0x06, 0xd6, 0x37, - 0x77, 0x0a, 0xfb, 0x46, 0x22, 0x38, 0xde, 0xd8, 0xde, 0xbf, 0xbe, 0x6a, 0xe8, 0x01, 0xe0, 0x80, - 0x0e, 0x24, 0x45, 0x81, 0xab, 0x2b, 0xc6, 0xb0, 0x69, 0x40, 0x86, 0x12, 0x6c, 0xbc, 0x54, 0x5e, - 0xbb, 0xbe, 0x6a, 0x8c, 0xc8, 0x23, 0x57, 0x57, 0x8c, 0x51, 0x73, 0x1c, 0xc6, 0xc8, 0x48, 0x71, - 0x67, 0x67, 0xd3, 0x48, 0x05, 0x9c, 0x7b, 0xfb, 0xd6, 0xc6, 0xf6, 0x1d, 0x63, 0x2c, 0xe0, 0xbc, - 0x63, 0xed, 0x1c, 0xec, 0x1a, 0x10, 0x30, 0x6c, 0x95, 0xf7, 0xf6, 0x0a, 0x77, 0xca, 0x46, 0x3a, - 0x90, 0x28, 0xbe, 0xbc, 0x5f, 0xde, 0x33, 0x32, 0x92, 0x5a, 0x57, 0x57, 0x8c, 0xf1, 0xe0, 0x14, - 0xe5, 0xed, 0x83, 0x2d, 0x63, 0xc2, 0x9c, 0x82, 0x71, 0x7a, 0x0a, 0xae, 0xc4, 0xa4, 0x32, 0x74, - 0x7d, 0xd5, 0x30, 0x42, 0x45, 0x28, 0xcb, 0x94, 0x34, 0x70, 0x7d, 0xd5, 0x30, 0x73, 0x25, 0x18, - 0x26, 0xd1, 0x65, 0x9a, 0x30, 0xb1, 0x59, 0x28, 0x96, 0x37, 0x2b, 0x3b, 0xbb, 0xfb, 0x1b, 0x3b, - 0xdb, 0x85, 0x4d, 0x43, 0x0b, 0xc7, 0xac, 0xf2, 0x27, 0x0e, 0x36, 0xac, 0xf2, 0x9a, 0x91, 0x10, - 0xc7, 0x76, 0xcb, 0x85, 0xfd, 0xf2, 0x9a, 0xa1, 0xe7, 0xaa, 0x70, 0x2e, 0xaa, 0xce, 0x44, 0x66, - 0x86, 0xe0, 0xe2, 0x44, 0x0f, 0x17, 0x13, 0xae, 0x2e, 0x17, 0xff, 0xba, 0x06, 0xd3, 0x11, 0xb5, - 0x36, 0xf2, 0x24, 0xcf, 0xc3, 0x30, 0x0d, 0x51, 0xba, 0xfa, 0x3c, 0x1d, 0x59, 0xb4, 0x49, 0xc0, - 0x76, 0xad, 0x40, 0x04, 0x27, 0xae, 0xc0, 0x7a, 0x8f, 0x15, 0x18, 0x53, 0x74, 0x29, 0xf9, 0x69, - 0x0d, 0xb2, 0xbd, 0xb8, 0x63, 0x0a, 0x45, 0x42, 0x2a, 0x14, 0xb7, 0x55, 0x05, 0x2e, 0xf4, 0xbe, - 0x86, 0x2e, 0x2d, 0xbe, 0xa2, 0xc1, 0x4c, 0x74, 0xa3, 0x12, 0xa9, 0xc3, 0x73, 0x30, 0xd2, 0x44, - 0xfe, 0x89, 0xcb, 0x17, 0xeb, 0x4b, 0x11, 0x4b, 0x00, 0x9e, 0x56, 0x6d, 0xc5, 0x50, 0xe2, 0x1a, - 0xa2, 0xf7, 0xea, 0x36, 0xa8, 0x36, 0x5d, 0x9a, 0xfe, 0x52, 0x02, 0x1e, 0x8a, 0x24, 0x8f, 0x54, - 0xf4, 0x71, 0x80, 0xba, 0xd3, 0xea, 0xf8, 0x74, 0x41, 0xa6, 0xf5, 0x69, 0x8c, 0x8c, 0x90, 0xdc, - 0xc7, 0xb5, 0xa7, 0xe3, 0x07, 0xf3, 0x3a, 0x99, 0x07, 0x3a, 0x44, 0x04, 0x6e, 0x86, 0x8a, 0x26, - 0x89, 0xa2, 0x73, 0x3d, 0xae, 0xb4, 0x6b, 0xad, 0x5b, 0x06, 0xa3, 0xda, 0xa8, 0x23, 0xc7, 0xaf, - 0x78, 0x7e, 0x1b, 0xd9, 0xcd, 0xba, 0x73, 0x4c, 0x0a, 0x70, 0x2a, 0x3f, 0x7c, 0x64, 0x37, 0x3c, - 0x64, 0x4d, 0xd2, 0xe9, 0x3d, 0x3e, 0x8b, 0x11, 0x64, 0x95, 0x69, 0x0b, 0x88, 0x11, 0x09, 0x41, - 0xa7, 0x03, 0x44, 0xee, 0x97, 0x47, 0x21, 0x2d, 0xb4, 0x75, 0xe6, 0x05, 0xc8, 0xbc, 0x6a, 0xbf, - 0x6e, 0x57, 0x78, 0xab, 0x4e, 0x2d, 0x91, 0xc6, 0x63, 0xbb, 0xac, 0x5d, 0x5f, 0x86, 0x73, 0x44, - 0xc4, 0xed, 0xf8, 0xa8, 0x5d, 0xa9, 0x36, 0x6c, 0xcf, 0x23, 0x46, 0x4b, 0x11, 0x51, 0x13, 0xcf, - 0xed, 0xe0, 0xa9, 0x12, 0x9f, 0x31, 0xaf, 0xc1, 0x34, 0x41, 0x34, 0x3b, 0x0d, 0xbf, 0xde, 0x6a, - 0xa0, 0x0a, 0xbe, 0x79, 0xf0, 0x48, 0x21, 0x0e, 0x34, 0x9b, 0xc2, 0x12, 0x5b, 0x4c, 0x00, 0x6b, - 0xe4, 0x99, 0x77, 0xe0, 0x71, 0x02, 0x3b, 0x46, 0x0e, 0x6a, 0xdb, 0x3e, 0xaa, 0xa0, 0xbf, 0xda, - 0xb1, 0x1b, 0x5e, 0xc5, 0x76, 0x6a, 0x95, 0x13, 0xdb, 0x3b, 0xc9, 0x9e, 0x13, 0x09, 0x1e, 0xc1, - 0xb2, 0x77, 0x98, 0x68, 0x99, 0x48, 0x16, 0x9c, 0xda, 0x0b, 0xb6, 0x77, 0x62, 0xe6, 0x61, 0x86, - 0x10, 0x79, 0x7e, 0xbb, 0xee, 0x1c, 0x57, 0xaa, 0x27, 0xa8, 0xfa, 0x5a, 0xa5, 0xe3, 0x1f, 0xdd, - 0xcc, 0x3e, 0x2a, 0x32, 0x10, 0x25, 0xf7, 0x88, 0x4c, 0x09, 0x8b, 0x1c, 0xf8, 0x47, 0x37, 0xcd, - 0x3d, 0xc8, 0x60, 0x7f, 0x34, 0xeb, 0x9f, 0x42, 0x95, 0x23, 0xb7, 0x4d, 0x16, 0x97, 0x89, 0x88, - 0xe4, 0x16, 0x8c, 0xb8, 0xb4, 0xc3, 0x00, 0x5b, 0x6e, 0x0d, 0xe5, 0x87, 0xf7, 0x76, 0xcb, 0xe5, - 0x35, 0x2b, 0xcd, 0x59, 0xd6, 0xdd, 0x36, 0x8e, 0xa9, 0x63, 0x37, 0xb0, 0x71, 0x9a, 0xc6, 0xd4, - 0xb1, 0xcb, 0x2d, 0x7c, 0x0d, 0xa6, 0xab, 0x55, 0x7a, 0xd9, 0xf5, 0x6a, 0x85, 0x75, 0xf9, 0x5e, - 0xd6, 0x90, 0xec, 0x55, 0xad, 0xde, 0xa1, 0x02, 0x2c, 0xcc, 0x3d, 0xf3, 0x16, 0x3c, 0x14, 0xda, - 0x4b, 0x04, 0x4e, 0x75, 0x5d, 0xa5, 0x0a, 0xbd, 0x06, 0xd3, 0xad, 0xd3, 0x6e, 0xa0, 0x29, 0x9d, - 0xb1, 0x75, 0xaa, 0xc2, 0x9e, 0x24, 0x77, 0x6e, 0x6d, 0x54, 0xb5, 0x7d, 0x54, 0xcb, 0x3e, 0x2c, - 0x4a, 0x0b, 0x13, 0xe6, 0x65, 0x30, 0xaa, 0xd5, 0x0a, 0x72, 0xec, 0xc3, 0x06, 0xaa, 0xd8, 0x6d, - 0xe4, 0xd8, 0x5e, 0x76, 0x5e, 0x14, 0x9e, 0xa8, 0x56, 0xcb, 0x64, 0xb6, 0x40, 0x26, 0xcd, 0x45, - 0x98, 0x72, 0x0f, 0x5f, 0xad, 0xd2, 0xe0, 0xaa, 0xb4, 0xda, 0xe8, 0xa8, 0xfe, 0x66, 0xf6, 0x22, - 0x31, 0xd3, 0x24, 0x9e, 0x20, 0xa1, 0xb5, 0x4b, 0x86, 0xcd, 0xa7, 0xc1, 0xa8, 0x7a, 0x27, 0x76, - 0xbb, 0x45, 0x56, 0x77, 0xaf, 0x65, 0x57, 0x51, 0xf6, 0x49, 0x2a, 0x4a, 0xc7, 0xb7, 0xf9, 0xb0, - 0xf9, 0x12, 0x9c, 0xeb, 0x38, 0x75, 0xc7, 0x47, 0xed, 0x56, 0x1b, 0xe1, 0x26, 0x9d, 0x66, 0x5a, - 0xf6, 0x8f, 0x46, 0x7b, 0xb4, 0xd9, 0x07, 0xa2, 0x34, 0xf5, 0xae, 0x35, 0xdd, 0xe9, 0x1e, 0xcc, - 0xe5, 0x21, 0x23, 0x3a, 0xdd, 0x1c, 0x03, 0xea, 0x76, 0x43, 0xc3, 0x6b, 0x68, 0x69, 0x67, 0x0d, - 0xaf, 0x7e, 0x3f, 0x57, 0x36, 0x12, 0x78, 0x15, 0xde, 0xdc, 0xd8, 0x2f, 0x57, 0xac, 0x83, 0xed, - 0xfd, 0x8d, 0xad, 0xb2, 0xa1, 0x2f, 0x8e, 0xa5, 0xbe, 0x37, 0x6a, 0xbc, 0xf5, 0xd6, 0x5b, 0x6f, - 0x25, 0x72, 0xdf, 0x4c, 0xc0, 0x84, 0xdc, 0xf9, 0x9a, 0x1f, 0x83, 0x87, 0xf9, 0x6d, 0xaa, 0x87, - 0xfc, 0xca, 0x1b, 0xf5, 0x36, 0x89, 0xc3, 0xa6, 0x4d, 0x7b, 0xc7, 0xc0, 0x84, 0xe7, 0x98, 0xd4, - 0x1e, 0xf2, 0x5f, 0xac, 0xb7, 0x71, 0x94, 0x35, 0x6d, 0xdf, 0xdc, 0x84, 0x79, 0xc7, 0xad, 0x78, - 0xbe, 0xed, 0xd4, 0xec, 0x76, 0xad, 0x12, 0x6e, 0x10, 0x54, 0xec, 0x6a, 0x15, 0x79, 0x9e, 0x4b, - 0x97, 0x80, 0x80, 0xe5, 0x31, 0xc7, 0xdd, 0x63, 0xc2, 0x61, 0x6d, 0x2c, 0x30, 0x51, 0xc5, 0xdd, - 0x7a, 0x2f, 0x77, 0x3f, 0x0a, 0x63, 0x4d, 0xbb, 0x55, 0x41, 0x8e, 0xdf, 0x3e, 0x25, 0xfd, 0x5a, - 0xca, 0x4a, 0x35, 0xed, 0x56, 0x19, 0x1f, 0x7f, 0x78, 0x3e, 0x10, 0xed, 0xf8, 0x3f, 0x74, 0xc8, - 0x88, 0x3d, 0x1b, 0x6e, 0x81, 0xab, 0xa4, 0x3e, 0x6b, 0x24, 0x7d, 0x9f, 0xe8, 0xdb, 0xe1, 0x2d, - 0x95, 0x70, 0xe1, 0xce, 0x8f, 0xd0, 0x4e, 0xca, 0xa2, 0x48, 0xbc, 0x68, 0xe2, 0x84, 0x45, 0xb4, - 0x3f, 0x4f, 0x59, 0xec, 0xc8, 0xbc, 0x03, 0x23, 0xaf, 0x7a, 0x84, 0x7b, 0x84, 0x70, 0x5f, 0xec, - 0xcf, 0x7d, 0x77, 0x8f, 0x90, 0x8f, 0xdd, 0xdd, 0xab, 0x6c, 0xef, 0x58, 0x5b, 0x85, 0x4d, 0x8b, - 0xc1, 0xcd, 0x47, 0x20, 0xd9, 0xb0, 0x3f, 0x75, 0x2a, 0x97, 0x78, 0x32, 0x34, 0xa8, 0xe1, 0x1f, - 0x81, 0xe4, 0x1b, 0xc8, 0x7e, 0x4d, 0x2e, 0xac, 0x64, 0xe8, 0x43, 0x0c, 0xfd, 0xcb, 0x30, 0x4c, - 0xec, 0x65, 0x02, 0x30, 0x8b, 0x19, 0x43, 0x66, 0x0a, 0x92, 0xa5, 0x1d, 0x0b, 0x87, 0xbf, 0x01, - 0x19, 0x3a, 0x5a, 0xd9, 0xdd, 0x28, 0x97, 0xca, 0x46, 0x22, 0x77, 0x0d, 0x46, 0xa8, 0x11, 0x70, - 0x6a, 0x04, 0x66, 0x30, 0x86, 0xd8, 0x21, 0xe3, 0xd0, 0xf8, 0xec, 0xc1, 0x56, 0xb1, 0x6c, 0x19, - 0x09, 0xd1, 0xbd, 0x1e, 0x64, 0xc4, 0x76, 0xed, 0xc7, 0x13, 0x53, 0xbf, 0xa7, 0x41, 0x5a, 0x68, - 0xbf, 0xf0, 0xc2, 0x6f, 0x37, 0x1a, 0xee, 0x1b, 0x15, 0xbb, 0x51, 0xb7, 0x3d, 0x16, 0x14, 0x40, - 0x86, 0x0a, 0x78, 0x64, 0x50, 0xa7, 0xfd, 0x58, 0x94, 0xff, 0xa2, 0x06, 0x86, 0xda, 0xba, 0x29, - 0x0a, 0x6a, 0x3f, 0x51, 0x05, 0x3f, 0xaf, 0xc1, 0x84, 0xdc, 0xaf, 0x29, 0xea, 0x5d, 0xf8, 0x89, - 0xaa, 0xf7, 0x6b, 0x1a, 0x8c, 0x4b, 0x5d, 0xda, 0x4f, 0x95, 0x76, 0x9f, 0xd3, 0x61, 0x3a, 0x02, - 0x67, 0x16, 0x58, 0x3b, 0x4b, 0x3b, 0xec, 0x67, 0x06, 0x39, 0xd7, 0x12, 0x5e, 0x2d, 0x77, 0xed, - 0xb6, 0xcf, 0xba, 0xdf, 0xa7, 0xc1, 0xa8, 0xd7, 0x90, 0xe3, 0xd7, 0x8f, 0xea, 0xa8, 0xcd, 0x6e, - 0xc1, 0x69, 0x8f, 0x3b, 0x19, 0x8e, 0xd3, 0xbb, 0xf0, 0x8f, 0x82, 0xd9, 0x72, 0xbd, 0xba, 0x5f, - 0x7f, 0x1d, 0x55, 0xea, 0x0e, 0xbf, 0x5f, 0xc7, 0x3d, 0x6f, 0xd2, 0x32, 0xf8, 0xcc, 0x86, 0xe3, - 0x07, 0xd2, 0x0e, 0x3a, 0xb6, 0x15, 0x69, 0x5c, 0xfb, 0x74, 0xcb, 0xe0, 0x33, 0x81, 0xf4, 0x05, - 0xc8, 0xd4, 0xdc, 0x0e, 0x6e, 0x1f, 0xa8, 0x1c, 0x2e, 0xb5, 0x9a, 0x95, 0xa6, 0x63, 0x81, 0x08, - 0xeb, 0xef, 0xc2, 0x8d, 0x82, 0x8c, 0x95, 0xa6, 0x63, 0x54, 0xe4, 0x29, 0x98, 0xb4, 0x8f, 0x8f, - 0xdb, 0x98, 0x9c, 0x13, 0xd1, 0xa6, 0x75, 0x22, 0x18, 0x26, 0x82, 0xb3, 0x77, 0x21, 0xc5, 0xed, - 0x80, 0x57, 0x33, 0x6c, 0x89, 0x4a, 0x8b, 0x6e, 0xd7, 0x24, 0x16, 0xc6, 0xac, 0x94, 0xc3, 0x27, - 0x2f, 0x40, 0xa6, 0xee, 0x55, 0xc2, 0x7d, 0xc3, 0xc4, 0xf9, 0xc4, 0x42, 0xca, 0x4a, 0xd7, 0xbd, - 0x60, 0xa3, 0x28, 0xf7, 0x95, 0x04, 0x4c, 0xc8, 0xfb, 0x9e, 0xe6, 0x1a, 0xa4, 0x1a, 0x6e, 0xd5, - 0x26, 0x81, 0x40, 0x37, 0xdd, 0x17, 0x62, 0xb6, 0x4a, 0x97, 0x36, 0x99, 0xbc, 0x15, 0x20, 0x67, - 0xff, 0x8b, 0x06, 0x29, 0x3e, 0x6c, 0xce, 0x40, 0xb2, 0x65, 0xfb, 0x27, 0x84, 0x6e, 0xb8, 0x98, - 0x30, 0x34, 0x8b, 0x1c, 0xe3, 0x71, 0xaf, 0x65, 0x3b, 0x24, 0x04, 0xd8, 0x38, 0x3e, 0xc6, 0x7e, - 0x6d, 0x20, 0xbb, 0x46, 0xda, 0x61, 0xb7, 0xd9, 0x44, 0x8e, 0xef, 0x71, 0xbf, 0xb2, 0xf1, 0x12, - 0x1b, 0x36, 0x3f, 0x02, 0x53, 0x7e, 0xdb, 0xae, 0x37, 0x24, 0xd9, 0x24, 0x91, 0x35, 0xf8, 0x44, - 0x20, 0x9c, 0x87, 0x47, 0x38, 0x6f, 0x0d, 0xf9, 0x76, 0xf5, 0x04, 0xd5, 0x42, 0xd0, 0x08, 0xd9, - 0x54, 0x7b, 0x98, 0x09, 0xac, 0xb1, 0x79, 0x8e, 0xcd, 0xfd, 0x81, 0x06, 0x53, 0xbc, 0x81, 0xaf, - 0x05, 0xc6, 0xda, 0x02, 0xb0, 0x1d, 0xc7, 0xf5, 0x45, 0x73, 0x75, 0x87, 0x72, 0x17, 0x6e, 0xa9, - 0x10, 0x80, 0x2c, 0x81, 0x60, 0xb6, 0x09, 0x10, 0xce, 0xf4, 0x34, 0xdb, 0x3c, 0xa4, 0xd9, 0xa6, - 0x36, 0x79, 0x32, 0x42, 0xef, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0xdf, 0x3c, 0x07, 0xc3, 0x87, 0xe8, - 0xb8, 0xee, 0xb0, 0xad, 0x36, 0x7a, 0xc0, 0x37, 0xf0, 0x92, 0xc1, 0x06, 0x5e, 0xf1, 0x15, 0x98, - 0xae, 0xba, 0x4d, 0x55, 0xdd, 0xa2, 0xa1, 0xdc, 0x79, 0x7a, 0x2f, 0x68, 0x3f, 0x07, 0x61, 0x77, - 0xf6, 0xb6, 0xa6, 0xfd, 0x7a, 0x42, 0xbf, 0xb3, 0x5b, 0xfc, 0xad, 0xc4, 0xec, 0x1d, 0x0a, 0xdd, - 0xe5, 0x57, 0x6a, 0xa1, 0xa3, 0x06, 0xaa, 0x62, 0xed, 0xe1, 0x4f, 0x2e, 0xc1, 0x33, 0xc7, 0x75, - 0xff, 0xa4, 0x73, 0xb8, 0x54, 0x75, 0x9b, 0x97, 0x8f, 0xdd, 0x63, 0x37, 0x7c, 0x18, 0x84, 0x8f, - 0xc8, 0x01, 0xf9, 0xc4, 0x1e, 0x08, 0x8d, 0x05, 0xa3, 0xb3, 0xb1, 0x4f, 0x8f, 0xf2, 0xdb, 0x30, - 0xcd, 0x84, 0x2b, 0x64, 0x47, 0x9a, 0xf6, 0xe1, 0x66, 0xdf, 0x5d, 0x89, 0xec, 0x6f, 0x7f, 0x97, - 0xac, 0x74, 0xd6, 0x14, 0x83, 0xe2, 0x39, 0xda, 0xa9, 0xe7, 0x2d, 0x78, 0x48, 0xe2, 0xa3, 0xa9, - 0x89, 0xda, 0x31, 0x8c, 0xdf, 0x64, 0x8c, 0xd3, 0x02, 0xe3, 0x1e, 0x83, 0xe6, 0x4b, 0x30, 0x7e, - 0x16, 0xae, 0xff, 0xc8, 0xb8, 0x32, 0x48, 0x24, 0xb9, 0x03, 0x93, 0x84, 0xa4, 0xda, 0xf1, 0x7c, - 0xb7, 0x49, 0xea, 0x5e, 0x7f, 0x9a, 0xff, 0xf4, 0x5d, 0x9a, 0x2b, 0x13, 0x18, 0x56, 0x0a, 0x50, - 0xf9, 0x3c, 0x90, 0x4d, 0xf8, 0x1a, 0xaa, 0x36, 0x62, 0x18, 0xee, 0x31, 0x45, 0x02, 0xf9, 0xfc, - 0x27, 0xe1, 0x1c, 0xfe, 0x4c, 0xca, 0x92, 0xa8, 0x49, 0xfc, 0x1e, 0x4c, 0xf6, 0x0f, 0x3e, 0x4d, - 0xd3, 0x71, 0x3a, 0x20, 0x10, 0x74, 0x12, 0xbc, 0x78, 0x8c, 0x7c, 0x1f, 0xb5, 0xbd, 0x8a, 0xdd, - 0x88, 0x52, 0x4f, 0xb8, 0x83, 0xcd, 0xfe, 0xea, 0xf7, 0x65, 0x2f, 0xde, 0xa1, 0xc8, 0x42, 0xa3, - 0x91, 0x3f, 0x80, 0x87, 0x23, 0xa2, 0x62, 0x00, 0xce, 0xcf, 0x31, 0xce, 0x73, 0x5d, 0x91, 0x81, - 0x69, 0x77, 0x81, 0x8f, 0x07, 0xbe, 0x1c, 0x80, 0xf3, 0xd7, 0x18, 0xa7, 0xc9, 0xb0, 0xdc, 0xa5, - 0x98, 0xf1, 0x2e, 0x4c, 0xbd, 0x8e, 0xda, 0x87, 0xae, 0xc7, 0x36, 0x0e, 0x06, 0xa0, 0xfb, 0x3c, - 0xa3, 0x9b, 0x64, 0x40, 0xb2, 0x8d, 0x80, 0xb9, 0x6e, 0x41, 0xea, 0xc8, 0xae, 0xa2, 0x01, 0x28, - 0xbe, 0xc0, 0x28, 0x46, 0xb1, 0x3c, 0x86, 0x16, 0x20, 0x73, 0xec, 0xb2, 0x95, 0x29, 0x1e, 0xfe, - 0x45, 0x06, 0x4f, 0x73, 0x0c, 0xa3, 0x68, 0xb9, 0xad, 0x4e, 0x03, 0x2f, 0x5b, 0xf1, 0x14, 0x5f, - 0xe2, 0x14, 0x1c, 0xc3, 0x28, 0xce, 0x60, 0xd6, 0xb7, 0x39, 0x85, 0x27, 0xd8, 0xf3, 0x79, 0x48, - 0xbb, 0x4e, 0xe3, 0xd4, 0x75, 0x06, 0x51, 0xe2, 0xcb, 0x8c, 0x01, 0x18, 0x04, 0x13, 0xdc, 0x86, - 0xb1, 0x41, 0x1d, 0xf1, 0x1b, 0xdf, 0xe7, 0xe9, 0xc1, 0x3d, 0x70, 0x07, 0x26, 0x79, 0x81, 0xaa, - 0xbb, 0xce, 0x00, 0x14, 0xff, 0x94, 0x51, 0x4c, 0x08, 0x30, 0x76, 0x19, 0x3e, 0xf2, 0xfc, 0x63, - 0x34, 0x08, 0xc9, 0x57, 0xf8, 0x65, 0x30, 0x08, 0x33, 0xe5, 0x21, 0x72, 0xaa, 0x27, 0x83, 0x31, - 0x7c, 0x95, 0x9b, 0x92, 0x63, 0x30, 0x45, 0x09, 0xc6, 0x9b, 0x76, 0xdb, 0x3b, 0xb1, 0x1b, 0x03, - 0xb9, 0xe3, 0x37, 0x19, 0x47, 0x26, 0x00, 0x31, 0x8b, 0x74, 0x9c, 0xb3, 0xd0, 0xfc, 0x16, 0xb7, - 0x88, 0x00, 0x63, 0xa9, 0xe7, 0xf9, 0x64, 0x6f, 0xe6, 0x2c, 0x6c, 0xff, 0x8c, 0xa7, 0x1e, 0xc5, - 0x6e, 0x89, 0x8c, 0xb7, 0x61, 0xcc, 0xab, 0x7f, 0x6a, 0x20, 0x9a, 0x7f, 0xce, 0x3d, 0x4d, 0x00, - 0x18, 0xfc, 0x32, 0x3c, 0x12, 0xb9, 0x4c, 0x0c, 0x40, 0xf6, 0x2f, 0x18, 0xd9, 0x4c, 0xc4, 0x52, - 0xc1, 0x4a, 0xc2, 0x59, 0x29, 0xff, 0x25, 0x2f, 0x09, 0x48, 0xe1, 0xda, 0xc5, 0x9d, 0xbd, 0x67, - 0x1f, 0x9d, 0xcd, 0x6a, 0xff, 0x8a, 0x5b, 0x8d, 0x62, 0x25, 0xab, 0xed, 0xc3, 0x0c, 0x63, 0x3c, - 0x9b, 0x5f, 0xbf, 0xc6, 0x0b, 0x2b, 0x45, 0x1f, 0xc8, 0xde, 0x7d, 0x05, 0x66, 0x03, 0x73, 0xf2, - 0xa6, 0xd4, 0xab, 0x34, 0xed, 0xd6, 0x00, 0xcc, 0xbf, 0xcd, 0x98, 0x79, 0xc5, 0x0f, 0xba, 0x5a, - 0x6f, 0xcb, 0x6e, 0x61, 0xf2, 0x97, 0x20, 0xcb, 0xc9, 0x3b, 0x4e, 0x1b, 0x55, 0xdd, 0x63, 0xa7, - 0xfe, 0x29, 0x54, 0x1b, 0x80, 0xfa, 0xeb, 0x8a, 0xab, 0x0e, 0x04, 0x38, 0x66, 0xde, 0x00, 0x23, - 0xe8, 0x55, 0x2a, 0xf5, 0x66, 0xcb, 0x6d, 0xfb, 0x31, 0x8c, 0xff, 0x9a, 0x7b, 0x2a, 0xc0, 0x6d, - 0x10, 0x58, 0xbe, 0x0c, 0x13, 0xe4, 0x70, 0xd0, 0x90, 0xfc, 0x1d, 0x46, 0x34, 0x1e, 0xa2, 0x58, - 0xe1, 0xa8, 0xba, 0xcd, 0x96, 0xdd, 0x1e, 0xa4, 0xfe, 0xfd, 0x1b, 0x5e, 0x38, 0x18, 0x84, 0x15, - 0x0e, 0xff, 0xb4, 0x85, 0xf0, 0x6a, 0x3f, 0x00, 0xc3, 0x37, 0x78, 0xe1, 0xe0, 0x18, 0x46, 0xc1, - 0x1b, 0x86, 0x01, 0x28, 0xfe, 0x2d, 0xa7, 0xe0, 0x18, 0x4c, 0xf1, 0x89, 0x70, 0xa1, 0x6d, 0xa3, - 0xe3, 0xba, 0xe7, 0xb7, 0x69, 0x2b, 0xdc, 0x9f, 0xea, 0x77, 0xbf, 0x2f, 0x37, 0x61, 0x96, 0x00, - 0xcd, 0xdf, 0x85, 0x49, 0xa5, 0xc5, 0x30, 0xe3, 0x9e, 0xe8, 0x67, 0x7f, 0xfe, 0x87, 0xac, 0x18, - 0xc9, 0x1d, 0x46, 0x7e, 0x13, 0xfb, 0x5d, 0xee, 0x03, 0xe2, 0xc9, 0x3e, 0xfd, 0xc3, 0xc0, 0xf5, - 0x52, 0x1b, 0x90, 0x5f, 0x87, 0x71, 0xa9, 0x07, 0x88, 0xa7, 0xfa, 0xeb, 0x8c, 0x2a, 0x23, 0xb6, - 0x00, 0xf9, 0x6b, 0x90, 0xc4, 0xeb, 0x79, 0x3c, 0xfc, 0x6f, 0x30, 0x38, 0x11, 0xcf, 0x3f, 0x0b, - 0x29, 0xbe, 0x8e, 0xc7, 0x43, 0x7f, 0x91, 0x41, 0x03, 0x08, 0x86, 0xf3, 0x35, 0x3c, 0x1e, 0xfe, - 0x37, 0x39, 0x9c, 0x43, 0x30, 0x7c, 0x70, 0x13, 0xbe, 0xf3, 0xcb, 0x49, 0x56, 0x87, 0xb9, 0xed, - 0x6e, 0xc3, 0x28, 0x5b, 0xbc, 0xe3, 0xd1, 0xbf, 0xc4, 0x4e, 0xce, 0x11, 0xf9, 0x1b, 0x30, 0x3c, - 0xa0, 0xc1, 0xff, 0x36, 0x83, 0x52, 0xf9, 0x7c, 0x09, 0xd2, 0xc2, 0x82, 0x1d, 0x0f, 0xff, 0x3b, - 0x0c, 0x2e, 0xa2, 0xb0, 0xea, 0x6c, 0xc1, 0x8e, 0x27, 0xf8, 0xbb, 0x5c, 0x75, 0x86, 0xc0, 0x66, - 0xe3, 0x6b, 0x75, 0x3c, 0xfa, 0xef, 0x71, 0xab, 0x73, 0x48, 0xfe, 0x79, 0x18, 0x0b, 0xea, 0x6f, - 0x3c, 0xfe, 0xef, 0x33, 0x7c, 0x88, 0xc1, 0x16, 0x10, 0xea, 0x7f, 0x3c, 0xc5, 0x3f, 0xe0, 0x16, - 0x10, 0x50, 0x38, 0x8d, 0xd4, 0x35, 0x3d, 0x9e, 0xe9, 0x57, 0x78, 0x1a, 0x29, 0x4b, 0x3a, 0xf6, - 0x26, 0x29, 0x83, 0xf1, 0x14, 0xff, 0x90, 0x7b, 0x93, 0xc8, 0x63, 0x35, 0xd4, 0x45, 0x32, 0x9e, - 0xe3, 0x1f, 0x73, 0x35, 0x94, 0x35, 0x32, 0xbf, 0x0b, 0x66, 0xf7, 0x02, 0x19, 0xcf, 0xf7, 0x59, - 0xc6, 0x37, 0xd5, 0xb5, 0x3e, 0xe6, 0x5f, 0x84, 0x99, 0xe8, 0xc5, 0x31, 0x9e, 0xf5, 0x57, 0x7f, - 0xa8, 0xdc, 0xce, 0x88, 0x6b, 0x63, 0x7e, 0x3f, 0xac, 0xb2, 0xe2, 0xc2, 0x18, 0x4f, 0xfb, 0xb9, - 0x1f, 0xca, 0x85, 0x56, 0x5c, 0x17, 0xf3, 0x05, 0x80, 0x70, 0x4d, 0x8a, 0xe7, 0xfa, 0x3c, 0xe3, - 0x12, 0x40, 0x38, 0x35, 0xd8, 0x92, 0x14, 0x8f, 0xff, 0x02, 0x4f, 0x0d, 0x86, 0xc0, 0xa9, 0xc1, - 0x57, 0xa3, 0x78, 0xf4, 0x17, 0x79, 0x6a, 0x70, 0x48, 0xfe, 0x36, 0xa4, 0x9c, 0x4e, 0xa3, 0x81, - 0x63, 0xcb, 0xec, 0xff, 0x92, 0x4d, 0xf6, 0x7f, 0xfe, 0x88, 0x81, 0x39, 0x20, 0x7f, 0x0d, 0x86, - 0x51, 0xf3, 0x10, 0xd5, 0xe2, 0x90, 0xff, 0xeb, 0x47, 0xbc, 0x9e, 0x60, 0xe9, 0xfc, 0xf3, 0x00, - 0xf4, 0x66, 0x9a, 0x3c, 0x63, 0x89, 0xc1, 0xfe, 0xef, 0x1f, 0xb1, 0xe7, 0xf7, 0x21, 0x24, 0x24, - 0xa0, 0x6f, 0x03, 0xf4, 0x27, 0xf8, 0xbe, 0x4c, 0x40, 0x6e, 0xc0, 0x6f, 0xc1, 0xe8, 0xab, 0x9e, - 0xeb, 0xf8, 0xf6, 0x71, 0x1c, 0xfa, 0xff, 0x30, 0x34, 0x97, 0xc7, 0x06, 0x6b, 0xba, 0x6d, 0xe4, - 0xdb, 0xc7, 0x5e, 0x1c, 0xf6, 0xff, 0x32, 0x6c, 0x00, 0xc0, 0xe0, 0xaa, 0xed, 0xf9, 0x83, 0x5c, - 0xf7, 0xff, 0xe3, 0x60, 0x0e, 0xc0, 0x4a, 0xe3, 0xcf, 0xaf, 0xa1, 0xd3, 0x38, 0xec, 0x0f, 0xb8, - 0xd2, 0x4c, 0x3e, 0xff, 0x2c, 0x8c, 0xe1, 0x8f, 0xf4, 0x9d, 0x96, 0x18, 0xf0, 0x1f, 0x33, 0x70, - 0x88, 0xc0, 0x67, 0xf6, 0xfc, 0x9a, 0x5f, 0x8f, 0x37, 0xf6, 0xff, 0x67, 0x9e, 0xe6, 0xf2, 0xf9, - 0x02, 0xa4, 0x3d, 0xbf, 0x56, 0xeb, 0xb0, 0x8e, 0x26, 0x06, 0xfe, 0x27, 0x3f, 0x0a, 0x6e, 0x72, - 0x03, 0x4c, 0xf1, 0x42, 0xf4, 0x7e, 0x1d, 0xdc, 0x71, 0xef, 0xb8, 0x74, 0xa7, 0x0e, 0xbe, 0xdb, - 0x80, 0x1b, 0x3d, 0x77, 0xdd, 0xf0, 0x22, 0x72, 0xb9, 0xea, 0x36, 0x0f, 0x5d, 0xef, 0xf2, 0xa1, - 0xeb, 0x9f, 0x5c, 0xf6, 0x4f, 0x10, 0x1e, 0x63, 0xfb, 0x6f, 0x49, 0xfc, 0x79, 0xf6, 0x6c, 0x9b, - 0x76, 0xe4, 0x69, 0xe6, 0x76, 0x1d, 0xeb, 0xbd, 0x4d, 0x76, 0xc5, 0xcd, 0xc7, 0x60, 0x84, 0x5c, - 0xc9, 0x15, 0xf2, 0xd0, 0x46, 0x2b, 0x26, 0xef, 0xbd, 0x3b, 0x3f, 0x64, 0xb1, 0xb1, 0x60, 0x76, - 0x85, 0x6c, 0x5b, 0x26, 0xa4, 0xd9, 0x95, 0x60, 0xf6, 0x2a, 0xdd, 0xb9, 0x94, 0x66, 0xaf, 0x06, - 0xb3, 0xab, 0x64, 0x0f, 0x53, 0x97, 0x66, 0x57, 0x83, 0xd9, 0x6b, 0x64, 0x9f, 0x7e, 0x5c, 0x9a, - 0xbd, 0x16, 0xcc, 0x5e, 0x27, 0xbb, 0xf3, 0x49, 0x69, 0xf6, 0x7a, 0x30, 0x7b, 0x83, 0x6c, 0xcc, - 0x4f, 0x49, 0xb3, 0x37, 0x82, 0xd9, 0x9b, 0x64, 0x43, 0xde, 0x94, 0x66, 0x6f, 0x06, 0xb3, 0xb7, - 0xc8, 0xdb, 0x17, 0xa3, 0xd2, 0xec, 0x2d, 0x73, 0x0e, 0x46, 0xe9, 0x95, 0x2f, 0x93, 0x07, 0x9f, - 0x93, 0x6c, 0x9a, 0x0f, 0x86, 0xf3, 0x57, 0xc8, 0x9b, 0x16, 0x23, 0xf2, 0xfc, 0x95, 0x70, 0x7e, - 0x85, 0xbc, 0x76, 0x6c, 0xc8, 0xf3, 0x2b, 0xe1, 0xfc, 0xd5, 0xec, 0x38, 0x0e, 0x18, 0x79, 0xfe, - 0x6a, 0x38, 0xbf, 0x9a, 0x9d, 0xc0, 0xc1, 0x2c, 0xcf, 0xaf, 0x86, 0xf3, 0xd7, 0xb2, 0x93, 0xe7, - 0xb5, 0x85, 0x8c, 0x3c, 0x7f, 0x2d, 0xf7, 0x0b, 0xc4, 0xbd, 0x4e, 0xe8, 0xde, 0x19, 0xd9, 0xbd, - 0x81, 0x63, 0x67, 0x64, 0xc7, 0x06, 0x2e, 0x9d, 0x91, 0x5d, 0x1a, 0x38, 0x73, 0x46, 0x76, 0x66, - 0xe0, 0xc6, 0x19, 0xd9, 0x8d, 0x81, 0x03, 0x67, 0x64, 0x07, 0x06, 0xae, 0x9b, 0x91, 0x5d, 0x17, - 0x38, 0x6d, 0x46, 0x76, 0x5a, 0xe0, 0xae, 0x19, 0xd9, 0x5d, 0x81, 0xa3, 0xb2, 0x8a, 0xa3, 0x42, - 0x17, 0x65, 0x15, 0x17, 0x85, 0xce, 0xc9, 0x2a, 0xce, 0x09, 0xdd, 0x92, 0x55, 0xdc, 0x12, 0x3a, - 0x24, 0xab, 0x38, 0x24, 0x74, 0x45, 0x56, 0x71, 0x45, 0xe8, 0x04, 0x96, 0x63, 0x16, 0x6a, 0x45, - 0xe4, 0x98, 0xde, 0x37, 0xc7, 0xf4, 0xbe, 0x39, 0xa6, 0xf7, 0xcd, 0x31, 0xbd, 0x6f, 0x8e, 0xe9, - 0x7d, 0x73, 0x4c, 0xef, 0x9b, 0x63, 0x7a, 0xdf, 0x1c, 0xd3, 0xfb, 0xe6, 0x98, 0xde, 0x3f, 0xc7, - 0xf4, 0x98, 0x1c, 0xd3, 0x63, 0x72, 0x4c, 0x8f, 0xc9, 0x31, 0x3d, 0x26, 0xc7, 0xf4, 0x98, 0x1c, - 0xd3, 0x7b, 0xe6, 0x58, 0xe8, 0xde, 0x19, 0xd9, 0xbd, 0x91, 0x39, 0xa6, 0xf7, 0xc8, 0x31, 0xbd, - 0x47, 0x8e, 0xe9, 0x3d, 0x72, 0x4c, 0xef, 0x91, 0x63, 0x7a, 0x8f, 0x1c, 0xd3, 0x7b, 0xe4, 0x98, - 0xde, 0x23, 0xc7, 0xf4, 0x5e, 0x39, 0xa6, 0xf7, 0xcc, 0x31, 0xbd, 0x67, 0x8e, 0xe9, 0x3d, 0x73, - 0x4c, 0xef, 0x99, 0x63, 0x7a, 0xcf, 0x1c, 0xd3, 0xc5, 0x1c, 0xfb, 0x77, 0x3a, 0x98, 0x34, 0xc7, - 0x76, 0xc9, 0xab, 0x33, 0xcc, 0x15, 0x73, 0x4a, 0xa6, 0x8d, 0x60, 0xd7, 0x19, 0xa1, 0x4b, 0xe6, - 0x94, 0x5c, 0x93, 0xe7, 0x57, 0x82, 0x79, 0x9e, 0x6d, 0xf2, 0xfc, 0xd5, 0x60, 0x9e, 0xe7, 0x9b, - 0x3c, 0xbf, 0x1a, 0xcc, 0xf3, 0x8c, 0x93, 0xe7, 0xaf, 0x05, 0xf3, 0x3c, 0xe7, 0xe4, 0xf9, 0xeb, - 0xc1, 0x3c, 0xcf, 0x3a, 0x79, 0xfe, 0x46, 0x30, 0xcf, 0xf3, 0x4e, 0x9e, 0xbf, 0x19, 0xcc, 0xf3, - 0xcc, 0x93, 0xe7, 0x6f, 0x99, 0xe7, 0xd5, 0xdc, 0xe3, 0x02, 0x81, 0x6b, 0xcf, 0xab, 0xd9, 0xa7, - 0x48, 0x5c, 0x09, 0x25, 0x78, 0xfe, 0x29, 0x12, 0x2b, 0xa1, 0x04, 0xcf, 0x40, 0x45, 0xe2, 0x6a, - 0xee, 0x33, 0xc4, 0x7d, 0x8e, 0xea, 0xbe, 0x59, 0xc5, 0x7d, 0x09, 0xc1, 0x75, 0xb3, 0x8a, 0xeb, - 0x12, 0x82, 0xdb, 0x66, 0x15, 0xb7, 0x25, 0x04, 0x97, 0xcd, 0x2a, 0x2e, 0x4b, 0x08, 0xee, 0x9a, - 0x55, 0xdc, 0x95, 0x10, 0x5c, 0x35, 0xab, 0xb8, 0x2a, 0x21, 0xb8, 0x69, 0x56, 0x71, 0x53, 0x42, - 0x70, 0xd1, 0xac, 0xe2, 0xa2, 0x84, 0xe0, 0x9e, 0x59, 0xc5, 0x3d, 0x09, 0xc1, 0x35, 0x8f, 0xa9, - 0xae, 0x49, 0x88, 0x6e, 0x79, 0x4c, 0x75, 0x4b, 0x42, 0x74, 0xc9, 0x63, 0xaa, 0x4b, 0x12, 0xa2, - 0x3b, 0x1e, 0x53, 0xdd, 0x91, 0x10, 0x5d, 0xf1, 0xe7, 0x09, 0xde, 0x11, 0xee, 0xf9, 0xed, 0x4e, - 0xd5, 0x7f, 0x5f, 0x1d, 0xe1, 0xb2, 0xd4, 0x3e, 0xa4, 0x57, 0xcc, 0x25, 0xd2, 0xb0, 0x8a, 0x1d, - 0xa7, 0xb2, 0x82, 0x2d, 0x4b, 0x8d, 0x85, 0x80, 0x70, 0xa2, 0x11, 0xab, 0xef, 0xab, 0x37, 0x5c, - 0x96, 0xda, 0x8c, 0x78, 0xfd, 0x6e, 0x7e, 0xe8, 0x1d, 0xdb, 0x3b, 0x09, 0xde, 0xb1, 0x31, 0xf3, - 0x9f, 0xb5, 0x63, 0x5b, 0x8c, 0x37, 0x79, 0x60, 0xec, 0xc5, 0x78, 0x63, 0x77, 0xad, 0x3a, 0x83, - 0x76, 0x70, 0x8b, 0xf1, 0xa6, 0x0d, 0x8c, 0xfa, 0xc1, 0xf6, 0x5b, 0x2c, 0x82, 0x2d, 0xd4, 0x8a, - 0x88, 0xe0, 0xb3, 0xf6, 0x5b, 0xcb, 0x52, 0x29, 0x39, 0x6b, 0x04, 0xeb, 0x67, 0x8e, 0xe0, 0xb3, - 0x76, 0x5e, 0xcb, 0x52, 0x79, 0x39, 0x73, 0x04, 0x7f, 0x08, 0xfd, 0x10, 0x8b, 0xe0, 0xd0, 0xfc, - 0x67, 0xed, 0x87, 0x16, 0xe3, 0x4d, 0x1e, 0x19, 0xc1, 0xfa, 0x19, 0x22, 0x78, 0x90, 0xfe, 0x68, - 0x31, 0xde, 0xb4, 0xd1, 0x11, 0xfc, 0xbe, 0xbb, 0x99, 0x2f, 0x69, 0x30, 0xb5, 0x5d, 0xaf, 0x95, - 0x9b, 0x87, 0xa8, 0x56, 0x43, 0x35, 0x66, 0xc7, 0x65, 0xa9, 0x12, 0xf4, 0x70, 0xf5, 0xb7, 0xde, - 0x9d, 0x0f, 0x2d, 0x7c, 0x0d, 0x52, 0xd4, 0xa6, 0xcb, 0xcb, 0xd9, 0x7b, 0x5a, 0x4c, 0x85, 0x0b, - 0x44, 0xcd, 0x0b, 0x1c, 0x76, 0x65, 0x39, 0xfb, 0x5f, 0x35, 0xa1, 0xca, 0x05, 0xc3, 0xb9, 0x5f, - 0x21, 0x1a, 0x3a, 0xef, 0x5b, 0xc3, 0xcb, 0x03, 0x69, 0x28, 0xe8, 0xf6, 0x68, 0x97, 0x6e, 0x82, - 0x56, 0x1d, 0x98, 0xdc, 0xae, 0xd7, 0xb6, 0xc9, 0x17, 0x5e, 0x07, 0x51, 0x89, 0xca, 0x28, 0xf5, - 0x60, 0x59, 0x0a, 0x4b, 0x11, 0x11, 0x84, 0xb4, 0x5c, 0x23, 0x72, 0x75, 0x7c, 0x5a, 0x47, 0x3a, - 0xed, 0x62, 0xaf, 0xd3, 0x86, 0x95, 0x3d, 0x38, 0xe1, 0x62, 0xaf, 0x13, 0x86, 0x39, 0x14, 0x9c, - 0xea, 0x4d, 0xbe, 0x38, 0xd3, 0xb7, 0x70, 0xcc, 0xc7, 0x20, 0xb1, 0x41, 0xdf, 0xaf, 0xcd, 0x14, - 0x33, 0x58, 0xa9, 0x6f, 0xbf, 0x3b, 0x9f, 0x3c, 0xe8, 0xd4, 0x6b, 0x56, 0x62, 0xa3, 0x66, 0xde, - 0x85, 0xe1, 0x4f, 0xb2, 0xaf, 0x8d, 0x61, 0x81, 0x55, 0x26, 0xf0, 0xd1, 0x98, 0x2d, 0x26, 0x42, - 0xbd, 0x74, 0x50, 0x77, 0xfc, 0x2b, 0x2b, 0x37, 0x2d, 0x4a, 0x91, 0xfb, 0xcb, 0x00, 0xf4, 0x9c, - 0x6b, 0xb6, 0x77, 0x62, 0x6e, 0x73, 0x66, 0x7a, 0xea, 0x9b, 0xdf, 0x7e, 0x77, 0x7e, 0x75, 0x10, - 0xd6, 0x67, 0x6a, 0xb6, 0x77, 0xf2, 0x8c, 0x7f, 0xda, 0x42, 0x4b, 0xc5, 0x53, 0x1f, 0x79, 0x9c, - 0xbd, 0xc5, 0x57, 0x3d, 0x76, 0x5d, 0x59, 0xe1, 0xba, 0x52, 0xd2, 0x35, 0xad, 0xcb, 0xd7, 0xb4, - 0xfc, 0xa0, 0xd7, 0xf3, 0x26, 0x5f, 0x24, 0x14, 0x4b, 0xea, 0x71, 0x96, 0xd4, 0xdf, 0xaf, 0x25, - 0x5b, 0xbc, 0x3e, 0x2a, 0xd7, 0xaa, 0xf7, 0xbb, 0x56, 0xfd, 0xfd, 0x5c, 0xeb, 0x9f, 0xd2, 0x6c, - 0x0d, 0xf2, 0xe9, 0xc0, 0xa1, 0x2f, 0x28, 0xfe, 0x74, 0xed, 0x05, 0x7d, 0xa0, 0x5d, 0x40, 0x3e, - 0x79, 0xef, 0xed, 0x79, 0x2d, 0xf7, 0xa5, 0x04, 0xbf, 0x72, 0x9a, 0x48, 0x0f, 0x76, 0xe5, 0x3f, - 0x2d, 0x3d, 0xd5, 0x87, 0x61, 0xa1, 0x2f, 0x6a, 0x30, 0xd3, 0x55, 0xc9, 0xa9, 0x99, 0x3e, 0xd8, - 0x72, 0xee, 0x9c, 0xb5, 0x9c, 0x33, 0x05, 0x7f, 0x47, 0x83, 0x73, 0x4a, 0x79, 0xa5, 0xea, 0x5d, - 0x56, 0xd4, 0x7b, 0xb8, 0xfb, 0x4c, 0x44, 0x50, 0xd0, 0x4e, 0x74, 0xaf, 0x02, 0x10, 0x98, 0x03, - 0xbf, 0xaf, 0x2a, 0x7e, 0x7f, 0x2c, 0x00, 0x44, 0x98, 0x8b, 0x47, 0x00, 0x53, 0xdb, 0x85, 0xe4, - 0x7e, 0x1b, 0x21, 0x73, 0x0e, 0x12, 0x3b, 0x6d, 0xa6, 0xe1, 0x04, 0xc5, 0xef, 0xb4, 0x8b, 0x6d, - 0xdb, 0xa9, 0x9e, 0x58, 0x89, 0x9d, 0xb6, 0x79, 0x01, 0xf4, 0x02, 0xfb, 0x62, 0x7e, 0x7a, 0x65, - 0x92, 0x0a, 0x14, 0x9c, 0x1a, 0x93, 0xc0, 0x73, 0xe6, 0x1c, 0x24, 0x37, 0x91, 0x7d, 0xc4, 0x94, - 0x00, 0x2a, 0x83, 0x47, 0x2c, 0x32, 0xce, 0x4e, 0xf8, 0x12, 0xa4, 0x38, 0xb1, 0x79, 0x11, 0x23, - 0x8e, 0x7c, 0x76, 0x5a, 0x86, 0xc0, 0xea, 0xb0, 0x95, 0x8b, 0xcc, 0x9a, 0x97, 0x60, 0xd8, 0xaa, - 0x1f, 0x9f, 0xf8, 0xec, 0xe4, 0xdd, 0x62, 0x74, 0x3a, 0xf7, 0x32, 0x8c, 0x05, 0x1a, 0x7d, 0xc0, - 0xd4, 0x6b, 0xf4, 0xd2, 0xcc, 0x59, 0x71, 0x3d, 0xe1, 0xfb, 0x96, 0x74, 0xc8, 0x3c, 0x0f, 0xa9, - 0x3d, 0xbf, 0x1d, 0x16, 0x7d, 0xde, 0x91, 0x06, 0xa3, 0xb9, 0x5f, 0xd0, 0x20, 0xb5, 0x86, 0x50, - 0x8b, 0x18, 0xfc, 0x49, 0x48, 0xae, 0xb9, 0x6f, 0x38, 0x4c, 0xc1, 0x29, 0x66, 0x51, 0x3c, 0xcd, - 0x6c, 0x4a, 0xa6, 0xcd, 0x27, 0x45, 0xbb, 0x4f, 0x07, 0x76, 0x17, 0xe4, 0x88, 0xed, 0x73, 0x92, - 0xed, 0x99, 0x03, 0xb1, 0x50, 0x97, 0xfd, 0x6f, 0x40, 0x5a, 0x38, 0x8b, 0xb9, 0xc0, 0xd4, 0x48, - 0xa8, 0x40, 0xd1, 0x56, 0x58, 0x22, 0x87, 0x60, 0x5c, 0x3a, 0x31, 0x86, 0x0a, 0x26, 0xee, 0x01, - 0x25, 0x66, 0x5e, 0x94, 0xcd, 0x1c, 0x2d, 0xca, 0x4c, 0xbd, 0x4c, 0x6d, 0x44, 0xcc, 0x7d, 0x91, - 0x06, 0x67, 0x6f, 0x27, 0xe2, 0xcf, 0xb9, 0x61, 0xd0, 0xb7, 0xeb, 0x8d, 0xdc, 0xb3, 0x00, 0x34, - 0xe5, 0xcb, 0x4e, 0xa7, 0xa9, 0x64, 0xdd, 0x04, 0x37, 0xf0, 0xfe, 0x09, 0xda, 0x47, 0x1e, 0x11, - 0x91, 0xfb, 0x29, 0x5c, 0x60, 0x80, 0xa6, 0x18, 0xc1, 0x3f, 0x1d, 0x8b, 0x8f, 0xec, 0xc4, 0xb0, - 0x68, 0x96, 0x8a, 0xbe, 0x8c, 0xfc, 0x82, 0xe3, 0xfa, 0x27, 0xa8, 0xad, 0x20, 0x56, 0xcc, 0xab, - 0x52, 0xc2, 0x4e, 0xac, 0x3c, 0x1a, 0x20, 0x7a, 0x82, 0xae, 0xe6, 0xbe, 0x46, 0x14, 0xc4, 0xad, - 0x40, 0xd7, 0x05, 0xea, 0x03, 0x5c, 0xa0, 0x79, 0x5d, 0xea, 0xdf, 0xfa, 0xa8, 0xa9, 0xdc, 0x5a, - 0xde, 0x92, 0xee, 0x73, 0xfa, 0x2b, 0x2b, 0xdf, 0x63, 0x72, 0x9b, 0x72, 0x95, 0x9f, 0x8e, 0x55, - 0xb9, 0x47, 0x77, 0x7b, 0x56, 0x9b, 0xea, 0x83, 0xda, 0xf4, 0xf7, 0x82, 0x8e, 0x83, 0xfe, 0xc4, - 0x01, 0xf9, 0x45, 0x0d, 0xf3, 0xa3, 0xb1, 0xbe, 0xcf, 0x6b, 0xa5, 0x40, 0xd5, 0xd5, 0x41, 0xdd, - 0x9f, 0x4f, 0x14, 0x8b, 0x81, 0xba, 0x37, 0xce, 0x10, 0x02, 0xf9, 0x44, 0xa9, 0x14, 0x94, 0xed, - 0xd4, 0x67, 0xde, 0x9e, 0xd7, 0xbe, 0xfa, 0xf6, 0xfc, 0x50, 0xee, 0x37, 0x35, 0x98, 0x62, 0x92, - 0x42, 0xe0, 0x3e, 0xa3, 0x28, 0xff, 0x10, 0xaf, 0x19, 0x51, 0x16, 0xf8, 0xb1, 0x05, 0xef, 0x37, - 0x35, 0xc8, 0x76, 0xe9, 0xca, 0xed, 0xbd, 0x3c, 0x90, 0xca, 0x79, 0xad, 0xfc, 0x93, 0xb7, 0xf9, - 0xcb, 0x30, 0xbc, 0x5f, 0x6f, 0xa2, 0x36, 0x5e, 0x09, 0xf0, 0x07, 0xaa, 0x32, 0x7f, 0x98, 0x43, - 0x87, 0xf8, 0x1c, 0x55, 0x4e, 0x9a, 0x5b, 0x31, 0xb3, 0x90, 0x5c, 0xb3, 0x7d, 0x9b, 0x68, 0x90, - 0x09, 0xea, 0xab, 0xed, 0xdb, 0xb9, 0xab, 0x90, 0xd9, 0x3a, 0x25, 0xaf, 0xd0, 0xd4, 0xc8, 0xeb, - 0x21, 0x72, 0xf7, 0xc7, 0xfb, 0xd5, 0x2b, 0x8b, 0xc3, 0xa9, 0x9a, 0x71, 0x4f, 0xcb, 0x27, 0x89, - 0x3e, 0xaf, 0xc3, 0xc4, 0x0e, 0x56, 0x9b, 0xe0, 0x08, 0xec, 0x3c, 0x68, 0x5b, 0x72, 0x23, 0x24, - 0xb2, 0x5a, 0xda, 0x96, 0xd2, 0x3e, 0xea, 0x81, 0x79, 0x94, 0xb6, 0x4d, 0x0f, 0xda, 0xb6, 0xc5, - 0x64, 0x6a, 0xc2, 0x98, 0x5a, 0x4c, 0xa6, 0xc0, 0x18, 0x67, 0xe7, 0xfd, 0xcf, 0x3a, 0x18, 0xb4, - 0xd5, 0x59, 0x43, 0x47, 0x75, 0xa7, 0xee, 0x77, 0xf7, 0xab, 0x81, 0xc6, 0xe6, 0xf3, 0x30, 0x86, - 0x4d, 0xba, 0xce, 0x7e, 0x98, 0x0a, 0x9b, 0xfe, 0x02, 0x6b, 0x51, 0x14, 0x0a, 0x36, 0x40, 0x42, - 0x27, 0xc4, 0x98, 0xeb, 0xa0, 0x6f, 0x6f, 0x6f, 0xb1, 0xc5, 0x6d, 0xb5, 0x2f, 0x94, 0xbd, 0x81, - 0xc3, 0x8e, 0xd8, 0x98, 0x77, 0x6c, 0x61, 0x02, 0x73, 0x15, 0x12, 0xdb, 0x5b, 0xac, 0xe1, 0xbd, - 0x38, 0x08, 0x8d, 0x95, 0xd8, 0xde, 0x9a, 0xfd, 0xf7, 0x1a, 0x8c, 0x4b, 0xa3, 0x66, 0x0e, 0x32, - 0x74, 0x40, 0xb8, 0xdc, 0x11, 0x4b, 0x1a, 0xe3, 0x3a, 0x27, 0xde, 0xa7, 0xce, 0xb3, 0x05, 0x98, - 0x54, 0xc6, 0xcd, 0x25, 0x30, 0xc5, 0x21, 0xa6, 0x04, 0xfd, 0x51, 0x9f, 0x88, 0x99, 0xdc, 0xe3, - 0x00, 0xa1, 0x5d, 0x83, 0xdf, 0xa2, 0xd9, 0x2e, 0xef, 0xed, 0x97, 0xd7, 0x0c, 0x2d, 0xf7, 0x0d, - 0x0d, 0xd2, 0xac, 0x6d, 0xad, 0xba, 0x2d, 0x64, 0x16, 0x41, 0x2b, 0xb0, 0x08, 0x7a, 0x30, 0xbd, - 0xb5, 0x82, 0x79, 0x19, 0xb4, 0xe2, 0xe0, 0xae, 0xd6, 0x8a, 0xe6, 0x0a, 0x68, 0x25, 0xe6, 0xe0, - 0xc1, 0x3c, 0xa3, 0x95, 0x72, 0x7f, 0xac, 0xc3, 0xb4, 0xd8, 0x46, 0xf3, 0x7a, 0x72, 0x41, 0xbe, - 0x6f, 0xca, 0x8f, 0x5d, 0x59, 0xb9, 0xba, 0xba, 0x84, 0xff, 0x09, 0x42, 0xf2, 0x82, 0x7c, 0x0b, - 0xd5, 0x2d, 0xd2, 0xf5, 0x9a, 0x48, 0x3e, 0x29, 0xcc, 0x76, 0xbd, 0x26, 0x22, 0xcd, 0x76, 0xbd, - 0x26, 0x22, 0xcd, 0x76, 0xbd, 0x26, 0x22, 0xcd, 0x76, 0x3d, 0x0a, 0x90, 0x66, 0xbb, 0x5e, 0x13, - 0x91, 0x66, 0xbb, 0x5e, 0x13, 0x91, 0x66, 0xbb, 0x5f, 0x13, 0x61, 0xd3, 0x3d, 0x5f, 0x13, 0x91, - 0xe7, 0xbb, 0x5f, 0x13, 0x91, 0xe7, 0xbb, 0x5f, 0x13, 0xc9, 0x27, 0xfd, 0x76, 0x07, 0xf5, 0x7e, - 0xe8, 0x20, 0xe3, 0xfb, 0xdd, 0x03, 0x86, 0x05, 0x78, 0x07, 0x26, 0xe9, 0x7e, 0x44, 0xc9, 0x75, - 0x7c, 0xbb, 0xee, 0xa0, 0xb6, 0xf9, 0x31, 0xc8, 0xd0, 0x21, 0x7a, 0x97, 0x13, 0x75, 0x17, 0x48, - 0xe7, 0x59, 0xb9, 0x95, 0xa4, 0x73, 0x7f, 0x9e, 0x84, 0x19, 0x3a, 0xb0, 0x6d, 0x37, 0x91, 0xf4, - 0x92, 0xd1, 0x25, 0xe5, 0x91, 0xd2, 0x04, 0x86, 0xdf, 0x7f, 0x77, 0x9e, 0x8e, 0x16, 0x82, 0x60, - 0xba, 0xa4, 0x3c, 0x5c, 0x92, 0xe5, 0xc2, 0xf5, 0xe7, 0x92, 0xf2, 0xe2, 0x91, 0x2c, 0x17, 0x2c, - 0x37, 0x81, 0x1c, 0x7f, 0x05, 0x49, 0x96, 0x5b, 0x0b, 0xa2, 0xec, 0x92, 0xf2, 0x32, 0x92, 0x2c, - 0x57, 0x0e, 0xe2, 0xed, 0x92, 0xf2, 0xe8, 0x49, 0x96, 0x5b, 0x0f, 0x22, 0xef, 0x92, 0xf2, 0x10, - 0x4a, 0x96, 0xbb, 0x13, 0xc4, 0xe0, 0x25, 0xe5, 0x55, 0x25, 0x59, 0xee, 0x85, 0x20, 0x1a, 0x2f, - 0x29, 0x2f, 0x2d, 0xc9, 0x72, 0x1b, 0x41, 0x5c, 0x2e, 0xa8, 0xaf, 0x2f, 0xc9, 0x82, 0x77, 0xc3, - 0x08, 0x5d, 0x50, 0x5f, 0x64, 0x92, 0x25, 0x3f, 0x1e, 0xc6, 0xea, 0x82, 0xfa, 0x4a, 0x93, 0x2c, - 0xb9, 0x19, 0x46, 0xed, 0x82, 0xfa, 0xa8, 0x4c, 0x96, 0xdc, 0x0a, 0xe3, 0x77, 0x41, 0x7d, 0x68, - 0x26, 0x4b, 0x6e, 0x87, 0x91, 0xbc, 0xa0, 0x3e, 0x3e, 0x93, 0x25, 0x77, 0xc2, 0x3d, 0xf4, 0xdf, - 0x57, 0xc2, 0x4f, 0x78, 0x09, 0x2a, 0xa7, 0x84, 0x1f, 0x44, 0x84, 0x5e, 0x4e, 0x09, 0x3d, 0x88, - 0x08, 0xbb, 0x9c, 0x12, 0x76, 0x10, 0x11, 0x72, 0x39, 0x25, 0xe4, 0x20, 0x22, 0xdc, 0x72, 0x4a, - 0xb8, 0x41, 0x44, 0xa8, 0xe5, 0x94, 0x50, 0x83, 0x88, 0x30, 0xcb, 0x29, 0x61, 0x06, 0x11, 0x21, - 0x96, 0x53, 0x42, 0x0c, 0x22, 0xc2, 0x2b, 0xa7, 0x84, 0x17, 0x44, 0x84, 0xd6, 0x45, 0x35, 0xb4, - 0x20, 0x2a, 0xac, 0x2e, 0xaa, 0x61, 0x05, 0x51, 0x21, 0xf5, 0x84, 0x1a, 0x52, 0x63, 0xf7, 0xdf, - 0x9d, 0x1f, 0xc6, 0x43, 0x42, 0x34, 0x5d, 0x54, 0xa3, 0x09, 0xa2, 0x22, 0xe9, 0xa2, 0x1a, 0x49, - 0x10, 0x15, 0x45, 0x17, 0xd5, 0x28, 0x82, 0xa8, 0x08, 0x7a, 0x47, 0x8d, 0xa0, 0xf0, 0x15, 0x9f, - 0x9c, 0xf2, 0x44, 0x31, 0x2e, 0x82, 0xf4, 0x01, 0x22, 0x48, 0x1f, 0x20, 0x82, 0xf4, 0x01, 0x22, - 0x48, 0x1f, 0x20, 0x82, 0xf4, 0x01, 0x22, 0x48, 0x1f, 0x20, 0x82, 0xf4, 0x01, 0x22, 0x48, 0x1f, - 0x24, 0x82, 0xf4, 0x81, 0x22, 0x48, 0xef, 0x15, 0x41, 0x17, 0xd5, 0x17, 0x1e, 0x20, 0xaa, 0x20, - 0x5d, 0x54, 0x9f, 0x7c, 0xc6, 0x87, 0x90, 0x3e, 0x50, 0x08, 0xe9, 0xbd, 0x42, 0xe8, 0xf7, 0x75, - 0x98, 0x96, 0x42, 0x88, 0x3d, 0x1e, 0xfa, 0xa0, 0x2a, 0xd0, 0xf5, 0x01, 0xde, 0xaf, 0x88, 0x8a, - 0xa9, 0xeb, 0x03, 0x3c, 0xa3, 0xee, 0x17, 0x67, 0xdd, 0x55, 0xa8, 0x3c, 0x40, 0x15, 0x5a, 0x0f, - 0x62, 0xe8, 0xfa, 0x00, 0xef, 0x5d, 0x74, 0xc7, 0xde, 0xcd, 0x7e, 0x45, 0xe0, 0x85, 0x81, 0x8a, - 0xc0, 0xc6, 0x40, 0x45, 0xe0, 0x6e, 0xe8, 0xc1, 0x5f, 0x4c, 0xc0, 0xb9, 0xd0, 0x83, 0xf4, 0x13, - 0xf9, 0x81, 0xa1, 0x9c, 0xf0, 0x84, 0xca, 0xe4, 0x4f, 0x6d, 0x04, 0x37, 0x26, 0x36, 0x6a, 0xe6, - 0xae, 0xfc, 0xac, 0x2a, 0x7f, 0xd6, 0xe7, 0x37, 0x82, 0xc7, 0xd9, 0x5e, 0xe8, 0x45, 0xd0, 0x37, - 0x6a, 0x1e, 0xa9, 0x16, 0x51, 0xa7, 0x2d, 0x59, 0x78, 0xda, 0xb4, 0x60, 0x84, 0x88, 0x7b, 0xc4, - 0xbd, 0xef, 0xe7, 0xc4, 0x6b, 0x16, 0x63, 0xca, 0xbd, 0xa3, 0xc1, 0x79, 0x29, 0x94, 0x3f, 0x98, - 0x27, 0x06, 0xb7, 0x07, 0x7a, 0x62, 0x20, 0x25, 0x48, 0xf8, 0xf4, 0xe0, 0xa9, 0xee, 0x07, 0xd5, - 0x62, 0x96, 0xa8, 0x4f, 0x12, 0xfe, 0x1a, 0x4c, 0x84, 0x57, 0x40, 0x6e, 0xd9, 0xae, 0xc5, 0x6f, - 0x66, 0x46, 0xa5, 0xe6, 0x35, 0x65, 0x13, 0xad, 0x2f, 0x2c, 0xc8, 0xd6, 0x5c, 0x1e, 0x26, 0xb7, - 0xe5, 0xef, 0xf2, 0xc4, 0xed, 0x45, 0xa4, 0x70, 0x6b, 0x7e, 0xef, 0xcb, 0xf3, 0x43, 0xb9, 0x8f, - 0x42, 0x46, 0xfc, 0xba, 0x8e, 0x02, 0x1c, 0xe3, 0xc0, 0x7c, 0xf2, 0x5b, 0x58, 0xfa, 0x1f, 0x69, - 0xf0, 0x90, 0x28, 0xfe, 0x62, 0xdd, 0x3f, 0xd9, 0x70, 0x70, 0x4f, 0xff, 0x2c, 0xa4, 0x10, 0x73, - 0x1c, 0xfb, 0xc1, 0x13, 0x76, 0x1b, 0x19, 0x29, 0xbe, 0x44, 0xfe, 0xb5, 0x02, 0x88, 0xb2, 0xc5, - 0xc1, 0x4f, 0xbb, 0x32, 0xfb, 0x24, 0x0c, 0x53, 0x7e, 0x59, 0xaf, 0x71, 0x45, 0xaf, 0xdf, 0x88, - 0xd0, 0x8b, 0xc4, 0x91, 0x79, 0x57, 0xd2, 0x4b, 0xb8, 0x5b, 0x8d, 0x14, 0x5f, 0xe2, 0xc1, 0x57, - 0x4c, 0xe1, 0xfe, 0x8f, 0x44, 0x54, 0xbc, 0x92, 0x0b, 0x90, 0x2a, 0xab, 0x32, 0xd1, 0x7a, 0xae, - 0x41, 0x72, 0xdb, 0xad, 0x91, 0x9f, 0x62, 0x21, 0xbf, 0x26, 0xcb, 0x8c, 0xcc, 0x7e, 0x5a, 0xf6, - 0x12, 0xa4, 0x4a, 0x27, 0xf5, 0x46, 0xad, 0x8d, 0x1c, 0xf6, 0xc8, 0x9e, 0xed, 0xa0, 0x63, 0x8c, - 0x15, 0xcc, 0xe5, 0x4a, 0x30, 0xb5, 0xed, 0x3a, 0xc5, 0x53, 0x5f, 0xac, 0x1b, 0x4b, 0x4a, 0x8a, - 0xb0, 0x47, 0x3e, 0xe4, 0x0b, 0x20, 0x58, 0xa0, 0x38, 0xfc, 0xed, 0x77, 0xe7, 0xb5, 0xfd, 0x60, - 0xfb, 0x7c, 0x0b, 0x1e, 0x66, 0xe9, 0xd3, 0x45, 0xb5, 0x12, 0x47, 0x35, 0xc6, 0x1e, 0x53, 0x0b, - 0x74, 0x1b, 0x98, 0xce, 0x89, 0xa4, 0x7b, 0x30, 0xcd, 0x70, 0x53, 0xd4, 0x57, 0x33, 0xfd, 0x4c, - 0x9a, 0x45, 0xd2, 0x2d, 0xc5, 0xd1, 0x29, 0x9a, 0x3d, 0x01, 0x63, 0xc1, 0x9c, 0x10, 0x0d, 0x62, - 0xa6, 0xac, 0x2c, 0xe6, 0x20, 0x2d, 0x24, 0xac, 0x39, 0x0c, 0x5a, 0xc1, 0x18, 0xc2, 0xff, 0x15, - 0x0d, 0x0d, 0xff, 0x57, 0x32, 0x12, 0x8b, 0x4f, 0xc2, 0xa4, 0xb2, 0x7d, 0x89, 0x67, 0xd6, 0x0c, - 0xc0, 0xff, 0x95, 0x8d, 0xf4, 0x6c, 0xf2, 0x33, 0xff, 0x64, 0x6e, 0x68, 0xf1, 0x36, 0x98, 0xdd, - 0x1b, 0x9d, 0xe6, 0x08, 0x24, 0x0a, 0x98, 0xf2, 0x61, 0x48, 0x14, 0x8b, 0x86, 0x36, 0x3b, 0xf9, - 0xb7, 0xbe, 0x70, 0x3e, 0x5d, 0x24, 0xdf, 0x45, 0x7e, 0x19, 0xf9, 0xc5, 0x22, 0x03, 0x3f, 0x07, - 0x0f, 0x45, 0x6e, 0x94, 0x62, 0x7c, 0xa9, 0x44, 0xf1, 0x6b, 0x6b, 0x5d, 0xf8, 0xb5, 0x35, 0x82, - 0xd7, 0xf2, 0xfc, 0x81, 0x73, 0xc1, 0x8c, 0xd8, 0x96, 0xcc, 0xd6, 0x84, 0x07, 0xdc, 0x85, 0xfc, - 0x73, 0x4c, 0xb6, 0x18, 0x29, 0x8b, 0x62, 0x1e, 0x58, 0x17, 0xf3, 0x25, 0x86, 0x2f, 0x45, 0xe2, - 0x8f, 0x94, 0xa7, 0xaa, 0xf2, 0x0a, 0xc1, 0x48, 0x4a, 0x81, 0xc2, 0x6b, 0x91, 0x24, 0x27, 0xc2, - 0xbb, 0xee, 0x6b, 0x81, 0xc2, 0xe5, 0x48, 0xd9, 0x7a, 0xcc, 0x3b, 0x5f, 0xe5, 0xfc, 0x65, 0xb6, - 0xc8, 0x17, 0xae, 0x98, 0x0f, 0xf1, 0x1c, 0x95, 0x2a, 0x30, 0x33, 0x10, 0x97, 0xca, 0x97, 0x18, - 0xa0, 0xd8, 0x13, 0xd0, 0xdb, 0x4a, 0x1c, 0x99, 0x7f, 0x81, 0x91, 0x94, 0x7a, 0x92, 0xc4, 0x98, - 0x8a, 0xc3, 0x8b, 0xfb, 0xf7, 0xde, 0x9b, 0x1b, 0xfa, 0xd6, 0x7b, 0x73, 0x43, 0xff, 0xfd, 0xbd, - 0xb9, 0xa1, 0x3f, 0x7c, 0x6f, 0x4e, 0xfb, 0xde, 0x7b, 0x73, 0xda, 0x0f, 0xde, 0x9b, 0xd3, 0xfe, - 0xec, 0xbd, 0x39, 0xed, 0xad, 0xfb, 0x73, 0xda, 0x57, 0xef, 0xcf, 0x69, 0x5f, 0xbb, 0x3f, 0xa7, - 0xfd, 0xee, 0xfd, 0x39, 0xed, 0x9d, 0xfb, 0x73, 0xda, 0xbd, 0xfb, 0x73, 0xda, 0xb7, 0xee, 0xcf, - 0x69, 0x7f, 0x78, 0x7f, 0x4e, 0xfb, 0xde, 0xfd, 0xb9, 0xa1, 0x1f, 0xdc, 0x9f, 0xd3, 0xfe, 0xec, - 0xfe, 0xdc, 0xd0, 0x5b, 0xdf, 0x99, 0x1b, 0x7a, 0xfb, 0x3b, 0x73, 0x43, 0x5f, 0xfd, 0xce, 0x9c, - 0x06, 0x7f, 0xb4, 0x0a, 0x39, 0xf6, 0x45, 0x32, 0xe1, 0xdb, 0xae, 0x97, 0xfd, 0x13, 0x44, 0x9a, - 0x82, 0xab, 0xfc, 0x17, 0x9d, 0x82, 0x81, 0x33, 0x7e, 0xad, 0x6c, 0xf6, 0x41, 0xbf, 0xc4, 0x96, - 0xfb, 0x0f, 0xc3, 0x30, 0xca, 0x37, 0x83, 0xa3, 0x7e, 0x31, 0xf9, 0x1a, 0xa4, 0x4e, 0xea, 0x0d, - 0xbb, 0x5d, 0xf7, 0x4f, 0xd9, 0x2e, 0xe8, 0x23, 0x4b, 0xa1, 0xda, 0x7c, 0xdf, 0xf4, 0x85, 0x4e, - 0xd3, 0xed, 0xb4, 0xad, 0x40, 0xd4, 0x3c, 0x0f, 0x99, 0x13, 0x54, 0x3f, 0x3e, 0xf1, 0x2b, 0x75, - 0xa7, 0x52, 0x6d, 0x92, 0x6e, 0x79, 0xdc, 0x02, 0x3a, 0xb6, 0xe1, 0x94, 0x9a, 0xf8, 0x64, 0x35, - 0xdb, 0xb7, 0xc9, 0x5d, 0x7a, 0xc6, 0x22, 0x9f, 0xcd, 0x0b, 0x90, 0x69, 0x23, 0xaf, 0xd3, 0xf0, - 0x2b, 0x55, 0xb7, 0xe3, 0xf8, 0xa4, 0x9f, 0xd5, 0xad, 0x34, 0x1d, 0x2b, 0xe1, 0x21, 0xf3, 0x09, - 0x18, 0xf7, 0xdb, 0x1d, 0x54, 0xf1, 0xaa, 0xae, 0xef, 0x35, 0x6d, 0x87, 0xf4, 0xb3, 0x29, 0x2b, - 0x83, 0x07, 0xf7, 0xd8, 0x18, 0xf9, 0x45, 0xfe, 0xaa, 0xdb, 0x46, 0xe4, 0x76, 0x3a, 0x61, 0xd1, - 0x03, 0xd3, 0x00, 0xfd, 0x35, 0x74, 0x4a, 0x6e, 0xd8, 0x92, 0x16, 0xfe, 0x68, 0x3e, 0x0d, 0x23, - 0xf4, 0x8f, 0x35, 0x90, 0xee, 0x9a, 0x3c, 0xbb, 0x0e, 0x2e, 0x8d, 0xee, 0xd1, 0x5a, 0x4c, 0xc0, - 0xbc, 0x05, 0xa3, 0x3e, 0x6a, 0xb7, 0xed, 0xba, 0x43, 0x6e, 0x9e, 0xd2, 0x2b, 0xf3, 0x11, 0x66, - 0xd8, 0xa7, 0x12, 0xe4, 0xc7, 0x51, 0x2d, 0x2e, 0x6f, 0x5e, 0x83, 0x0c, 0x91, 0x5b, 0xa9, 0xd0, - 0x3f, 0x68, 0x91, 0xee, 0x19, 0xcf, 0x69, 0x2a, 0xc7, 0x1f, 0x15, 0x70, 0x18, 0xfd, 0x75, 0xbb, - 0x71, 0x72, 0xda, 0x27, 0x22, 0x4e, 0x4b, 0x4a, 0xef, 0x0a, 0x69, 0x1b, 0xe9, 0xa9, 0x19, 0x0f, - 0xfd, 0xfd, 0xbb, 0x2d, 0xc8, 0x88, 0x7a, 0x71, 0x33, 0xd0, 0xf6, 0x87, 0x98, 0xe1, 0xa9, 0xf0, - 0xc7, 0xce, 0x7b, 0x58, 0x81, 0xce, 0xe7, 0x13, 0x37, 0xb5, 0xd9, 0x5d, 0x30, 0xd4, 0xf3, 0x45, - 0x50, 0x5e, 0x92, 0x29, 0x0d, 0xf1, 0x62, 0xc9, 0x46, 0x79, 0xc8, 0x98, 0x7b, 0x1e, 0x46, 0x68, - 0xfc, 0x98, 0x69, 0x18, 0x3d, 0xd8, 0xfe, 0xf8, 0xf6, 0xce, 0x8b, 0xdb, 0xf4, 0x67, 0x47, 0x77, - 0x0f, 0xb6, 0xf7, 0xe8, 0x8f, 0x87, 0xee, 0x6d, 0x16, 0x76, 0xf7, 0xf6, 0x37, 0x4a, 0x1f, 0x37, - 0x12, 0xe6, 0x24, 0xa4, 0x8b, 0x1b, 0x9b, 0x9b, 0x95, 0x62, 0x61, 0x63, 0xb3, 0xfc, 0xb2, 0xa1, - 0xe7, 0xe6, 0x60, 0x84, 0xea, 0x49, 0x7e, 0xc9, 0xad, 0xe3, 0x38, 0xa7, 0xbc, 0x7d, 0x20, 0x07, - 0xb9, 0xaf, 0x9b, 0x30, 0x5a, 0x68, 0x34, 0xb6, 0xec, 0x96, 0x67, 0xbe, 0x08, 0x53, 0xf4, 0x07, - 0x25, 0xf6, 0xdd, 0x35, 0xf2, 0x83, 0x83, 0xb8, 0x38, 0x68, 0xec, 0x47, 0xde, 0xc3, 0xeb, 0x66, - 0xe2, 0x4b, 0x5d, 0xb2, 0xd4, 0xc0, 0xdd, 0x1c, 0xe6, 0x3e, 0x18, 0x7c, 0x70, 0xbd, 0xe1, 0xda, - 0x3e, 0xe6, 0x4d, 0xb0, 0xdf, 0x03, 0xec, 0xcd, 0xcb, 0x45, 0x29, 0x6d, 0x17, 0x83, 0xf9, 0x31, - 0x48, 0x6d, 0x38, 0xfe, 0xd5, 0x15, 0xcc, 0xc6, 0xff, 0x00, 0x49, 0x37, 0x1b, 0x17, 0xa1, 0x2c, - 0x01, 0x82, 0xa1, 0xaf, 0xaf, 0x62, 0x74, 0xb2, 0x1f, 0x9a, 0x88, 0x84, 0x68, 0x72, 0x68, 0x3e, - 0x0f, 0x63, 0xf8, 0xee, 0x84, 0x9e, 0x7c, 0x98, 0xb7, 0xae, 0x5d, 0xf0, 0x40, 0x86, 0xe2, 0x43, - 0x0c, 0x27, 0xa0, 0xe7, 0x1f, 0xe9, 0x4b, 0x20, 0x28, 0x10, 0x62, 0x30, 0xc1, 0x5e, 0xa0, 0xc1, - 0x68, 0x4f, 0x82, 0x3d, 0x45, 0x83, 0x3d, 0x51, 0x83, 0xbd, 0x40, 0x83, 0x54, 0x5f, 0x02, 0x51, - 0x83, 0xe0, 0xd8, 0x2c, 0x02, 0xac, 0xd7, 0xdf, 0x44, 0x35, 0xaa, 0x02, 0xfd, 0xf3, 0x24, 0xb9, - 0x08, 0x86, 0x50, 0x88, 0x52, 0x08, 0x28, 0xb3, 0x0c, 0xe9, 0xbd, 0xa3, 0x90, 0x04, 0xba, 0xf2, - 0x38, 0x50, 0xe3, 0x48, 0x61, 0x11, 0x71, 0x81, 0x2a, 0xf4, 0x62, 0xd2, 0xfd, 0x55, 0x11, 0xae, - 0x46, 0x40, 0x85, 0xaa, 0x50, 0x92, 0x4c, 0x8c, 0x2a, 0x02, 0x8b, 0x88, 0xc3, 0xc5, 0xb0, 0xe8, - 0xba, 0x58, 0x92, 0x55, 0xa5, 0xf9, 0x08, 0x0a, 0x26, 0xc1, 0x8a, 0x21, 0x3b, 0x22, 0x1e, 0x21, - 0x41, 0x8e, 0xc1, 0x13, 0xbd, 0x3d, 0xc2, 0x65, 0xb8, 0x47, 0xf8, 0xb1, 0x98, 0x67, 0xe4, 0x85, - 0x56, 0xcc, 0x33, 0x19, 0x9b, 0x67, 0x5c, 0x54, 0xc9, 0x33, 0x3e, 0x6c, 0x7e, 0x02, 0x26, 0xf9, - 0x18, 0x2e, 0x4f, 0x98, 0xd4, 0x60, 0x7f, 0xc0, 0xa9, 0x37, 0x29, 0x93, 0xa4, 0x9c, 0x2a, 0xde, - 0xdc, 0x86, 0x09, 0x3e, 0xb4, 0xe5, 0x91, 0xcb, 0x9d, 0x62, 0x7f, 0x1c, 0xa1, 0x37, 0x23, 0x15, - 0xa4, 0x84, 0x0a, 0x7a, 0x76, 0x0d, 0x66, 0xa2, 0xab, 0x91, 0x58, 0x7e, 0xc7, 0x68, 0xf9, 0x3d, - 0x27, 0x96, 0x5f, 0x4d, 0x2c, 0xdf, 0x25, 0x78, 0x28, 0xb2, 0xf6, 0xc4, 0x91, 0x24, 0x44, 0x92, - 0xdb, 0x30, 0x2e, 0x95, 0x1c, 0x11, 0x3c, 0x1c, 0x01, 0x1e, 0xee, 0x06, 0x87, 0xa1, 0x15, 0xb1, - 0x7a, 0x48, 0x60, 0x5d, 0x04, 0x7f, 0x0c, 0x26, 0xe4, 0x7a, 0x23, 0xa2, 0xc7, 0x23, 0xd0, 0xe3, - 0x11, 0xe8, 0xe8, 0x73, 0x27, 0x23, 0xd0, 0x49, 0x05, 0xbd, 0xd7, 0xf3, 0xdc, 0x53, 0x11, 0xe8, - 0xa9, 0x08, 0x74, 0xf4, 0xb9, 0xcd, 0x08, 0xb4, 0x29, 0xa2, 0x9f, 0x85, 0x49, 0xa5, 0xc4, 0x88, - 0xf0, 0xd1, 0x08, 0xf8, 0xa8, 0x08, 0x7f, 0x0e, 0x0c, 0xb5, 0xb8, 0x88, 0xf8, 0xc9, 0x08, 0xfc, - 0x64, 0xd4, 0xe9, 0xa3, 0xb5, 0x1f, 0x89, 0x80, 0x8f, 0x44, 0x9e, 0x3e, 0x1a, 0x6f, 0x44, 0xe0, - 0x0d, 0x11, 0x9f, 0x87, 0x8c, 0x58, 0x4d, 0x44, 0x6c, 0x2a, 0x02, 0x9b, 0x52, 0xed, 0x2e, 0x15, - 0x93, 0xb8, 0x48, 0x1f, 0xeb, 0x91, 0x2e, 0x52, 0x09, 0x89, 0x23, 0xc9, 0x88, 0x24, 0x9f, 0x84, - 0x73, 0x51, 0x25, 0x23, 0x82, 0x63, 0x41, 0xe4, 0x98, 0xc0, 0x3d, 0x62, 0xd8, 0xec, 0xd9, 0x2d, - 0xa5, 0x71, 0x9a, 0x7d, 0x05, 0xa6, 0x23, 0x0a, 0x47, 0x04, 0xed, 0x92, 0xdc, 0x8d, 0x65, 0x05, - 0x5a, 0x52, 0x04, 0xea, 0xce, 0xf1, 0xae, 0x5b, 0x77, 0x7c, 0xb1, 0x2b, 0xfb, 0xc6, 0x34, 0x4c, - 0xb0, 0xf2, 0xb4, 0xd3, 0xae, 0xa1, 0x36, 0xaa, 0x99, 0x7f, 0xa5, 0x77, 0xef, 0xb4, 0xdc, 0x5d, - 0xd4, 0x18, 0xea, 0x0c, 0x2d, 0xd4, 0x2b, 0x3d, 0x5b, 0xa8, 0xcb, 0xf1, 0xf4, 0x71, 0x9d, 0x54, - 0xa9, 0xab, 0x93, 0x7a, 0xaa, 0x37, 0x69, 0xaf, 0x86, 0xaa, 0xd4, 0xd5, 0x50, 0xf5, 0x27, 0x89, - 0xec, 0xab, 0xd6, 0xbb, 0xfb, 0xaa, 0x85, 0xde, 0x2c, 0xbd, 0xdb, 0xab, 0xf5, 0xee, 0xf6, 0x2a, - 0x86, 0x27, 0xba, 0xcb, 0x5a, 0xef, 0xee, 0xb2, 0xfa, 0xf0, 0xf4, 0x6e, 0xb6, 0xd6, 0xbb, 0x9b, - 0xad, 0x18, 0x9e, 0xe8, 0x9e, 0x6b, 0x23, 0xa2, 0xe7, 0x7a, 0xba, 0x37, 0x51, 0xbf, 0xd6, 0x6b, - 0x33, 0xaa, 0xf5, 0x5a, 0xec, 0xa3, 0x54, 0xdf, 0x0e, 0x6c, 0x23, 0xa2, 0x03, 0x8b, 0x53, 0xac, - 0x47, 0x23, 0xb6, 0x19, 0xd5, 0x88, 0xc5, 0x2a, 0xd6, 0xab, 0x1f, 0xfb, 0x4b, 0x6a, 0x3f, 0x76, - 0xa9, 0x37, 0x53, 0x74, 0x5b, 0xb6, 0xde, 0xdd, 0x96, 0x2d, 0xc4, 0xe5, 0x5c, 0x54, 0x77, 0xf6, - 0x4a, 0xcf, 0xee, 0x6c, 0x80, 0x14, 0x8e, 0x6b, 0xd2, 0x5e, 0xea, 0xd5, 0xa4, 0x2d, 0xc5, 0x73, - 0xf7, 0xef, 0xd5, 0x0e, 0x7a, 0xf4, 0x6a, 0xcf, 0xc4, 0x13, 0xff, 0xac, 0x65, 0xfb, 0x59, 0xcb, - 0xf6, 0xb3, 0x96, 0xed, 0x67, 0x2d, 0xdb, 0x4f, 0xbe, 0x65, 0xcb, 0x27, 0x3f, 0xfb, 0xe5, 0x79, - 0x2d, 0xf7, 0xdf, 0xf4, 0xe0, 0xef, 0x4e, 0xbd, 0x58, 0xf7, 0x4f, 0x70, 0x79, 0xdb, 0x82, 0x0c, - 0xf9, 0xb3, 0x17, 0x4d, 0xbb, 0xd5, 0xaa, 0x3b, 0xc7, 0xac, 0x67, 0x5b, 0xec, 0xde, 0x4a, 0x64, - 0x00, 0xf2, 0x87, 0x43, 0xb6, 0xa8, 0x30, 0x5b, 0x6e, 0x9c, 0x70, 0xc4, 0xbc, 0x0b, 0xe9, 0xa6, - 0x77, 0x1c, 0xb0, 0x25, 0xba, 0x16, 0x42, 0x85, 0x8d, 0x5e, 0x69, 0x48, 0x06, 0xcd, 0x60, 0x00, - 0xab, 0x76, 0x78, 0xea, 0x87, 0xaa, 0xe9, 0x71, 0xaa, 0x61, 0x9f, 0xca, 0xaa, 0x1d, 0x86, 0x23, - 0x38, 0x6c, 0x55, 0xdd, 0xe3, 0x2a, 0x9d, 0x14, 0x3c, 0x2f, 0xc2, 0xa4, 0xa2, 0x6d, 0x44, 0xce, - 0x3f, 0x80, 0x6f, 0xb0, 0x62, 0xaa, 0xe6, 0x71, 0x39, 0x21, 0x06, 0x64, 0xee, 0x71, 0x18, 0x97, - 0xb8, 0xcd, 0x0c, 0x68, 0x47, 0xec, 0xdb, 0x94, 0xda, 0x51, 0xee, 0x4b, 0x1a, 0xa4, 0xd9, 0xab, - 0x04, 0xbb, 0x76, 0xbd, 0x6d, 0xbe, 0x00, 0xc9, 0x06, 0xff, 0x46, 0xd3, 0x83, 0x7e, 0x7b, 0x96, - 0x30, 0x98, 0xeb, 0x30, 0xdc, 0x0e, 0xbe, 0xf1, 0xf4, 0x40, 0x5f, 0x89, 0x25, 0xf0, 0xdc, 0x3d, - 0x0d, 0xa6, 0xd8, 0x9b, 0xae, 0x1e, 0x7b, 0xff, 0xd9, 0x6e, 0xcd, 0x7e, 0x5d, 0x83, 0xb1, 0xe0, - 0xc8, 0x3c, 0x84, 0x89, 0xe0, 0x80, 0xbe, 0x63, 0x4f, 0x23, 0x35, 0x2f, 0x58, 0xb8, 0x8b, 0x63, - 0x29, 0xe2, 0x13, 0x7d, 0x18, 0x45, 0xd7, 0x64, 0x79, 0x70, 0xb6, 0x00, 0xd3, 0x11, 0x62, 0x67, - 0x59, 0x90, 0x73, 0x17, 0x60, 0x6c, 0xdb, 0xf5, 0xe9, 0x0f, 0xe7, 0x98, 0xe7, 0x84, 0xa7, 0x0a, - 0xc5, 0x84, 0x31, 0x44, 0xc0, 0x8b, 0x17, 0x60, 0x94, 0x65, 0xbf, 0x39, 0x02, 0x89, 0xad, 0x82, - 0x31, 0x44, 0xfe, 0x2f, 0x1a, 0x1a, 0xf9, 0xbf, 0x64, 0x24, 0x8a, 0x9b, 0x0f, 0xf0, 0xa4, 0x69, - 0xa8, 0xd7, 0x93, 0xa6, 0xc3, 0x11, 0x6a, 0x9e, 0xbf, 0x08, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x10, - 0x95, 0x9b, 0x4b, 0x7e, 0x00, 0x00, + 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0xc8, 0x19, + 0x68, 0x34, 0xa2, 0x68, 0x8b, 0xc3, 0xe1, 0x90, 0x73, 0xc1, 0x58, 0x52, 0x00, 0x10, 0x1c, 0x71, + 0x4c, 0x82, 0x74, 0x93, 0xb4, 0x34, 0xeb, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x6c, 0x09, 0xe8, 0xc6, + 0xa2, 0x1b, 0x92, 0xe8, 0x87, 0x94, 0xb2, 0x4e, 0x36, 0xde, 0xa4, 0x72, 0xdd, 0xa4, 0xe2, 0x75, + 0x7c, 0x91, 0x37, 0xb5, 0xb1, 0x77, 0x37, 0x17, 0xaf, 0xb3, 0x71, 0xb6, 0xb6, 0x52, 0x59, 0xe5, + 0xc1, 0xc9, 0xe4, 0x25, 0xe5, 0x4d, 0x5e, 0x52, 0xae, 0x94, 0xca, 0x1a, 0xbb, 0x6a, 0x9d, 0xc4, + 0x49, 0xbc, 0x59, 0x57, 0xed, 0x56, 0x79, 0x1f, 0x52, 0xe7, 0xd6, 0x7d, 0x4e, 0xa3, 0x81, 0x06, + 0x47, 0x92, 0xed, 0x07, 0xbd, 0xcc, 0xa0, 0xcf, 0xf9, 0xbf, 0xaf, 0xff, 0xfe, 0x6f, 0xe7, 0xef, + 0xd3, 0x0d, 0x10, 0xbe, 0xb7, 0x06, 0x17, 0x8e, 0x1d, 0xe7, 0xb8, 0x81, 0xae, 0xb4, 0xda, 0x8e, + 0xe7, 0x1c, 0x76, 0x8e, 0xae, 0xd4, 0x91, 0x5b, 0x6b, 0x5b, 0x2d, 0xcf, 0x69, 0x2f, 0x91, 0x31, + 0x7d, 0x92, 0x4a, 0x2c, 0x71, 0x89, 0xdc, 0x36, 0x4c, 0x6d, 0x58, 0x0d, 0xb4, 0xee, 0x0b, 0xee, + 0x21, 0x4f, 0xbf, 0x09, 0xc9, 0x23, 0xab, 0x81, 0xb2, 0xca, 0x05, 0x75, 0x21, 0xbd, 0x72, 0x69, + 0x29, 0x04, 0x5a, 0x92, 0x11, 0xbb, 0x78, 0xd8, 0x20, 0x88, 0xdc, 0xf7, 0x93, 0x30, 0x1d, 0x31, + 0xab, 0xeb, 0x90, 0xb4, 0xcd, 0x26, 0x66, 0x54, 0x16, 0xc6, 0x0c, 0xf2, 0x59, 0xcf, 0xc2, 0x68, + 0xcb, 0xac, 0xbd, 0x6a, 0x1e, 0xa3, 0x6c, 0x82, 0x0c, 0xf3, 0x43, 0x7d, 0x0e, 0xa0, 0x8e, 0x5a, + 0xc8, 0xae, 0x23, 0xbb, 0x76, 0x9a, 0x55, 0x2f, 0xa8, 0x0b, 0x63, 0x86, 0x30, 0xa2, 0x7f, 0x04, + 0xa6, 0x5a, 0x9d, 0xc3, 0x86, 0x55, 0xab, 0x0a, 0x62, 0x70, 0x41, 0x5d, 0x18, 0x36, 0x34, 0x3a, + 0xb1, 0x1e, 0x08, 0x3f, 0x0d, 0x93, 0xaf, 0x23, 0xf3, 0x55, 0x51, 0x34, 0x4d, 0x44, 0x27, 0xf0, + 0xb0, 0x20, 0x58, 0x82, 0x4c, 0x13, 0xb9, 0xae, 0x79, 0x8c, 0xaa, 0xde, 0x69, 0x0b, 0x65, 0x93, + 0xe4, 0xea, 0x2f, 0x74, 0x5d, 0x7d, 0xf8, 0xca, 0xd3, 0x0c, 0xb5, 0x7f, 0xda, 0x42, 0x7a, 0x01, + 0xc6, 0x90, 0xdd, 0x69, 0x52, 0x86, 0xe1, 0x1e, 0xf6, 0x2b, 0xdb, 0x9d, 0x66, 0x98, 0x25, 0x85, + 0x61, 0x8c, 0x62, 0xd4, 0x45, 0xed, 0xd7, 0xac, 0x1a, 0xca, 0x8e, 0x10, 0x82, 0xa7, 0xbb, 0x08, + 0xf6, 0xe8, 0x7c, 0x98, 0x83, 0xe3, 0xf4, 0x12, 0x8c, 0xa1, 0x37, 0x3c, 0x64, 0xbb, 0x96, 0x63, + 0x67, 0x47, 0x09, 0xc9, 0x53, 0x11, 0x5e, 0x44, 0x8d, 0x7a, 0x98, 0x22, 0xc0, 0xe9, 0xd7, 0x61, + 0xd4, 0x69, 0x79, 0x96, 0x63, 0xbb, 0xd9, 0xd4, 0x05, 0x65, 0x21, 0xbd, 0x72, 0x3e, 0x32, 0x10, + 0x76, 0xa8, 0x8c, 0xc1, 0x85, 0xf5, 0x4d, 0xd0, 0x5c, 0xa7, 0xd3, 0xae, 0xa1, 0x6a, 0xcd, 0xa9, + 0xa3, 0xaa, 0x65, 0x1f, 0x39, 0xd9, 0x31, 0x42, 0x30, 0xdf, 0x7d, 0x21, 0x44, 0xb0, 0xe4, 0xd4, + 0xd1, 0xa6, 0x7d, 0xe4, 0x18, 0x13, 0xae, 0x74, 0xac, 0xcf, 0xc0, 0x88, 0x7b, 0x6a, 0x7b, 0xe6, + 0x1b, 0xd9, 0x0c, 0x89, 0x10, 0x76, 0x94, 0xfb, 0xd3, 0x61, 0x98, 0x1c, 0x24, 0xc4, 0x6e, 0xc3, + 0xf0, 0x11, 0xbe, 0xca, 0x6c, 0xe2, 0x2c, 0x36, 0xa0, 0x18, 0xd9, 0x88, 0x23, 0x0f, 0x69, 0xc4, + 0x02, 0xa4, 0x6d, 0xe4, 0x7a, 0xa8, 0x4e, 0x23, 0x42, 0x1d, 0x30, 0xa6, 0x80, 0x82, 0xba, 0x43, + 0x2a, 0xf9, 0x50, 0x21, 0xf5, 0x32, 0x4c, 0xfa, 0x2a, 0x55, 0xdb, 0xa6, 0x7d, 0xcc, 0x63, 0xf3, + 0x4a, 0x9c, 0x26, 0x4b, 0x65, 0x8e, 0x33, 0x30, 0xcc, 0x98, 0x40, 0xd2, 0xb1, 0xbe, 0x0e, 0xe0, + 0xd8, 0xc8, 0x39, 0xaa, 0xd6, 0x51, 0xad, 0x91, 0x4d, 0xf5, 0xb0, 0xd2, 0x0e, 0x16, 0xe9, 0xb2, + 0x92, 0x43, 0x47, 0x6b, 0x0d, 0xfd, 0x56, 0x10, 0x6a, 0xa3, 0x3d, 0x22, 0x65, 0x9b, 0x26, 0x59, + 0x57, 0xb4, 0x1d, 0xc0, 0x44, 0x1b, 0xe1, 0xb8, 0x47, 0x75, 0x76, 0x65, 0x63, 0x44, 0x89, 0xa5, + 0xd8, 0x2b, 0x33, 0x18, 0x8c, 0x5e, 0xd8, 0x78, 0x5b, 0x3c, 0xd4, 0x9f, 0x04, 0x7f, 0xa0, 0x4a, + 0xc2, 0x0a, 0x48, 0x15, 0xca, 0xf0, 0xc1, 0x8a, 0xd9, 0x44, 0xb3, 0x37, 0x61, 0x42, 0x36, 0x8f, + 0x7e, 0x0e, 0x86, 0x5d, 0xcf, 0x6c, 0x7b, 0x24, 0x0a, 0x87, 0x0d, 0x7a, 0xa0, 0x6b, 0xa0, 0x22, + 0xbb, 0x4e, 0xaa, 0xdc, 0xb0, 0x81, 0x3f, 0xce, 0xde, 0x80, 0x71, 0xe9, 0xf4, 0x83, 0x02, 0x73, + 0x9f, 0x1b, 0x81, 0x73, 0x51, 0x31, 0x17, 0x19, 0xfe, 0x33, 0x30, 0x62, 0x77, 0x9a, 0x87, 0xa8, + 0x9d, 0x55, 0x09, 0x03, 0x3b, 0xd2, 0x0b, 0x30, 0xdc, 0x30, 0x0f, 0x51, 0x23, 0x9b, 0xbc, 0xa0, + 0x2c, 0x4c, 0xac, 0x7c, 0x64, 0xa0, 0xa8, 0x5e, 0xda, 0xc2, 0x10, 0x83, 0x22, 0xf5, 0xe7, 0x21, + 0xc9, 0x4a, 0x1c, 0x66, 0x58, 0x1c, 0x8c, 0x01, 0xc7, 0xa2, 0x41, 0x70, 0xfa, 0xe3, 0x30, 0x86, + 0xff, 0xa7, 0xb6, 0x1d, 0x21, 0x3a, 0xa7, 0xf0, 0x00, 0xb6, 0xab, 0x3e, 0x0b, 0x29, 0x12, 0x66, + 0x75, 0xc4, 0x97, 0x06, 0xff, 0x18, 0x3b, 0xa6, 0x8e, 0x8e, 0xcc, 0x4e, 0xc3, 0xab, 0xbe, 0x66, + 0x36, 0x3a, 0x88, 0x04, 0xcc, 0x98, 0x91, 0x61, 0x83, 0x9f, 0xc4, 0x63, 0xfa, 0x3c, 0xa4, 0x69, + 0x54, 0x5a, 0x76, 0x1d, 0xbd, 0x41, 0xaa, 0xcf, 0xb0, 0x41, 0x03, 0x75, 0x13, 0x8f, 0xe0, 0xd3, + 0xbf, 0xe2, 0x3a, 0x36, 0x77, 0x2d, 0x39, 0x05, 0x1e, 0x20, 0xa7, 0xbf, 0x11, 0x2e, 0x7c, 0x4f, + 0x44, 0x5f, 0x5e, 0x38, 0x16, 0x73, 0xdf, 0x4c, 0x40, 0x92, 0xe4, 0xdb, 0x24, 0xa4, 0xf7, 0xef, + 0xed, 0x96, 0xab, 0xeb, 0x3b, 0x07, 0xc5, 0xad, 0xb2, 0xa6, 0xe8, 0x13, 0x00, 0x64, 0x60, 0x63, + 0x6b, 0xa7, 0xb0, 0xaf, 0x25, 0xfc, 0xe3, 0xcd, 0xca, 0xfe, 0xf5, 0x55, 0x4d, 0xf5, 0x01, 0x07, + 0x74, 0x20, 0x29, 0x0a, 0x5c, 0x5b, 0xd1, 0x86, 0x75, 0x0d, 0x32, 0x94, 0x60, 0xf3, 0xe5, 0xf2, + 0xfa, 0xf5, 0x55, 0x6d, 0x44, 0x1e, 0xb9, 0xb6, 0xa2, 0x8d, 0xea, 0xe3, 0x30, 0x46, 0x46, 0x8a, + 0x3b, 0x3b, 0x5b, 0x5a, 0xca, 0xe7, 0xdc, 0xdb, 0x37, 0x36, 0x2b, 0x77, 0xb4, 0x31, 0x9f, 0xf3, + 0x8e, 0xb1, 0x73, 0xb0, 0xab, 0x81, 0xcf, 0xb0, 0x5d, 0xde, 0xdb, 0x2b, 0xdc, 0x29, 0x6b, 0x69, + 0x5f, 0xa2, 0x78, 0x6f, 0xbf, 0xbc, 0xa7, 0x65, 0x24, 0xb5, 0xae, 0xad, 0x68, 0xe3, 0xfe, 0x29, + 0xca, 0x95, 0x83, 0x6d, 0x6d, 0x42, 0x9f, 0x82, 0x71, 0x7a, 0x0a, 0xae, 0xc4, 0x64, 0x68, 0xe8, + 0xfa, 0xaa, 0xa6, 0x05, 0x8a, 0x50, 0x96, 0x29, 0x69, 0xe0, 0xfa, 0xaa, 0xa6, 0xe7, 0x4a, 0x30, + 0x4c, 0xa2, 0x4b, 0xd7, 0x61, 0x62, 0xab, 0x50, 0x2c, 0x6f, 0x55, 0x77, 0x76, 0xf7, 0x37, 0x77, + 0x2a, 0x85, 0x2d, 0x4d, 0x09, 0xc6, 0x8c, 0xf2, 0x27, 0x0e, 0x36, 0x8d, 0xf2, 0xba, 0x96, 0x10, + 0xc7, 0x76, 0xcb, 0x85, 0xfd, 0xf2, 0xba, 0xa6, 0xe6, 0x6a, 0x70, 0x2e, 0xaa, 0xce, 0x44, 0x66, + 0x86, 0xe0, 0xe2, 0x44, 0x0f, 0x17, 0x13, 0xae, 0x2e, 0x17, 0xff, 0xba, 0x02, 0xd3, 0x11, 0xb5, + 0x36, 0xf2, 0x24, 0x2f, 0xc0, 0x30, 0x0d, 0x51, 0xba, 0xfa, 0x3c, 0x13, 0x59, 0xb4, 0x49, 0xc0, + 0x76, 0xad, 0x40, 0x04, 0x27, 0xae, 0xc0, 0x6a, 0x8f, 0x15, 0x18, 0x53, 0x74, 0x29, 0xf9, 0x19, + 0x05, 0xb2, 0xbd, 0xb8, 0x63, 0x0a, 0x45, 0x42, 0x2a, 0x14, 0xb7, 0xc3, 0x0a, 0x5c, 0xec, 0x7d, + 0x0d, 0x5d, 0x5a, 0x7c, 0x55, 0x81, 0x99, 0xe8, 0x46, 0x25, 0x52, 0x87, 0xe7, 0x61, 0xa4, 0x89, + 0xbc, 0x13, 0x87, 0x2f, 0xd6, 0x97, 0x23, 0x96, 0x00, 0x3c, 0x1d, 0xb6, 0x15, 0x43, 0x89, 0x6b, + 0x88, 0xda, 0xab, 0xdb, 0xa0, 0xda, 0x74, 0x69, 0xfa, 0x2b, 0x09, 0x78, 0x24, 0x92, 0x3c, 0x52, + 0xd1, 0x27, 0x00, 0x2c, 0xbb, 0xd5, 0xf1, 0xe8, 0x82, 0x4c, 0xeb, 0xd3, 0x18, 0x19, 0x21, 0xb9, + 0x8f, 0x6b, 0x4f, 0xc7, 0xf3, 0xe7, 0x55, 0x32, 0x0f, 0x74, 0x88, 0x08, 0xdc, 0x0c, 0x14, 0x4d, + 0x12, 0x45, 0xe7, 0x7a, 0x5c, 0x69, 0xd7, 0x5a, 0xb7, 0x0c, 0x5a, 0xad, 0x61, 0x21, 0xdb, 0xab, + 0xba, 0x5e, 0x1b, 0x99, 0x4d, 0xcb, 0x3e, 0x26, 0x05, 0x38, 0x95, 0x1f, 0x3e, 0x32, 0x1b, 0x2e, + 0x32, 0x26, 0xe9, 0xf4, 0x1e, 0x9f, 0xc5, 0x08, 0xb2, 0xca, 0xb4, 0x05, 0xc4, 0x88, 0x84, 0xa0, + 0xd3, 0x3e, 0x22, 0xf7, 0xdb, 0xa3, 0x90, 0x16, 0xda, 0x3a, 0xfd, 0x22, 0x64, 0x5e, 0x31, 0x5f, + 0x33, 0xab, 0xbc, 0x55, 0xa7, 0x96, 0x48, 0xe3, 0xb1, 0x5d, 0xd6, 0xae, 0x2f, 0xc3, 0x39, 0x22, + 0xe2, 0x74, 0x3c, 0xd4, 0xae, 0xd6, 0x1a, 0xa6, 0xeb, 0x12, 0xa3, 0xa5, 0x88, 0xa8, 0x8e, 0xe7, + 0x76, 0xf0, 0x54, 0x89, 0xcf, 0xe8, 0x6b, 0x30, 0x4d, 0x10, 0xcd, 0x4e, 0xc3, 0xb3, 0x5a, 0x0d, + 0x54, 0xc5, 0x37, 0x0f, 0x2e, 0x29, 0xc4, 0xbe, 0x66, 0x53, 0x58, 0x62, 0x9b, 0x09, 0x60, 0x8d, + 0x5c, 0x7d, 0x1d, 0x9e, 0x20, 0xb0, 0x63, 0x64, 0xa3, 0xb6, 0xe9, 0xa1, 0x2a, 0xfa, 0xc5, 0x8e, + 0xd9, 0x70, 0xab, 0xa6, 0x5d, 0xaf, 0x9e, 0x98, 0xee, 0x49, 0xf6, 0x1c, 0x26, 0x28, 0x26, 0xb2, + 0x8a, 0xf1, 0x18, 0x16, 0xbc, 0xc3, 0xe4, 0xca, 0x44, 0xac, 0x60, 0xd7, 0x5f, 0x34, 0xdd, 0x13, + 0x3d, 0x0f, 0x33, 0x84, 0xc5, 0xf5, 0xda, 0x96, 0x7d, 0x5c, 0xad, 0x9d, 0xa0, 0xda, 0xab, 0xd5, + 0x8e, 0x77, 0x74, 0x33, 0xfb, 0xb8, 0x78, 0x7e, 0xa2, 0xe1, 0x1e, 0x91, 0x29, 0x61, 0x91, 0x03, + 0xef, 0xe8, 0xa6, 0xbe, 0x07, 0x19, 0xec, 0x8c, 0xa6, 0xf5, 0x69, 0x54, 0x3d, 0x72, 0xda, 0x64, + 0x65, 0x99, 0x88, 0xc8, 0x6c, 0xc1, 0x82, 0x4b, 0x3b, 0x0c, 0xb0, 0xed, 0xd4, 0x51, 0x7e, 0x78, + 0x6f, 0xb7, 0x5c, 0x5e, 0x37, 0xd2, 0x9c, 0x65, 0xc3, 0x69, 0xe3, 0x80, 0x3a, 0x76, 0x7c, 0x03, + 0xa7, 0x69, 0x40, 0x1d, 0x3b, 0xdc, 0xbc, 0x6b, 0x30, 0x5d, 0xab, 0xd1, 0x6b, 0xb6, 0x6a, 0x55, + 0xd6, 0xe2, 0xbb, 0x59, 0x4d, 0x32, 0x56, 0xad, 0x76, 0x87, 0x0a, 0xb0, 0x18, 0x77, 0xf5, 0x5b, + 0xf0, 0x48, 0x60, 0x2c, 0x11, 0x38, 0xd5, 0x75, 0x95, 0x61, 0xe8, 0x1a, 0x4c, 0xb7, 0x4e, 0xbb, + 0x81, 0xba, 0x74, 0xc6, 0xd6, 0x69, 0x18, 0xf6, 0x14, 0xb9, 0x6d, 0x6b, 0xa3, 0x9a, 0xe9, 0xa1, + 0x7a, 0xf6, 0x51, 0x51, 0x5a, 0x98, 0xd0, 0xaf, 0x80, 0x56, 0xab, 0x55, 0x91, 0x6d, 0x1e, 0x36, + 0x50, 0xd5, 0x6c, 0x23, 0xdb, 0x74, 0xb3, 0xf3, 0xa2, 0xf0, 0x44, 0xad, 0x56, 0x26, 0xb3, 0x05, + 0x32, 0xa9, 0x2f, 0xc2, 0x94, 0x73, 0xf8, 0x4a, 0x8d, 0x46, 0x56, 0xb5, 0xd5, 0x46, 0x47, 0xd6, + 0x1b, 0xd9, 0x4b, 0xc4, 0x4c, 0x93, 0x78, 0x82, 0xc4, 0xd5, 0x2e, 0x19, 0xd6, 0x9f, 0x01, 0xad, + 0xe6, 0x9e, 0x98, 0xed, 0x16, 0x59, 0xda, 0xdd, 0x96, 0x59, 0x43, 0xd9, 0xa7, 0xa8, 0x28, 0x1d, + 0xaf, 0xf0, 0x61, 0x1c, 0xd9, 0xee, 0xeb, 0xd6, 0x91, 0xc7, 0x19, 0x9f, 0xa6, 0x91, 0x4d, 0xc6, + 0x18, 0xdb, 0xcb, 0x70, 0xae, 0x63, 0x5b, 0xb6, 0x87, 0xda, 0xad, 0x36, 0xc2, 0x4d, 0x3c, 0xcd, + 0xc4, 0xec, 0x1f, 0x8d, 0xf6, 0x68, 0xc3, 0x0f, 0x44, 0x69, 0x1a, 0x00, 0xc6, 0x74, 0xa7, 0x7b, + 0x30, 0x97, 0x87, 0x8c, 0x18, 0x17, 0xfa, 0x18, 0xd0, 0xc8, 0xd0, 0x14, 0xbc, 0xc6, 0x96, 0x76, + 0xd6, 0xf1, 0xea, 0xf8, 0x0b, 0x65, 0x2d, 0x81, 0x57, 0xe9, 0xad, 0xcd, 0xfd, 0x72, 0xd5, 0x38, + 0xa8, 0xec, 0x6f, 0x6e, 0x97, 0x35, 0x75, 0x71, 0x2c, 0xf5, 0x83, 0x51, 0xed, 0xcd, 0x37, 0xdf, + 0x7c, 0x33, 0x91, 0xfb, 0x56, 0x02, 0x26, 0xe4, 0xce, 0x58, 0xff, 0x18, 0x3c, 0xca, 0x6f, 0x63, + 0x5d, 0xe4, 0x55, 0x5f, 0xb7, 0xda, 0x24, 0x54, 0x9b, 0x26, 0xed, 0x2d, 0x7d, 0x2b, 0x9f, 0x63, + 0x52, 0x7b, 0xc8, 0x7b, 0xc9, 0x6a, 0xe3, 0x40, 0x6c, 0x9a, 0x9e, 0xbe, 0x05, 0xf3, 0xb6, 0x53, + 0x75, 0x3d, 0xd3, 0xae, 0x9b, 0xed, 0x7a, 0x35, 0xd8, 0x40, 0xa8, 0x9a, 0xb5, 0x1a, 0x72, 0x5d, + 0x87, 0x2e, 0x11, 0x3e, 0xcb, 0x79, 0xdb, 0xd9, 0x63, 0xc2, 0x41, 0xed, 0x2c, 0x30, 0xd1, 0x50, + 0x44, 0xa8, 0xbd, 0x22, 0xe2, 0x71, 0x18, 0x6b, 0x9a, 0xad, 0x2a, 0xb2, 0xbd, 0xf6, 0x29, 0xe9, + 0xe7, 0x52, 0x46, 0xaa, 0x69, 0xb6, 0xca, 0xf8, 0xf8, 0x83, 0xf3, 0x81, 0x68, 0xc7, 0xff, 0xae, + 0x42, 0x46, 0xec, 0xe9, 0x70, 0x8b, 0x5c, 0x23, 0xf5, 0x5b, 0x21, 0x19, 0xfe, 0x64, 0xdf, 0x0e, + 0x70, 0xa9, 0x84, 0x0b, 0x7b, 0x7e, 0x84, 0x76, 0x5a, 0x06, 0x45, 0xe2, 0x45, 0x15, 0xe7, 0x34, + 0xa2, 0xfd, 0x7b, 0xca, 0x60, 0x47, 0xfa, 0x1d, 0x18, 0x79, 0xc5, 0x25, 0xdc, 0x23, 0x84, 0xfb, + 0x52, 0x7f, 0xee, 0xbb, 0x7b, 0x84, 0x7c, 0xec, 0xee, 0x5e, 0xb5, 0xb2, 0x63, 0x6c, 0x17, 0xb6, + 0x0c, 0x06, 0xd7, 0x1f, 0x83, 0x64, 0xc3, 0xfc, 0xf4, 0xa9, 0xbc, 0x04, 0x90, 0xa1, 0x41, 0x0d, + 0xff, 0x18, 0x24, 0x5f, 0x47, 0xe6, 0xab, 0x72, 0xe1, 0x25, 0x43, 0x1f, 0x60, 0xe8, 0x5f, 0x81, + 0x61, 0x62, 0x2f, 0x1d, 0x80, 0x59, 0x4c, 0x1b, 0xd2, 0x53, 0x90, 0x2c, 0xed, 0x18, 0x38, 0xfc, + 0x35, 0xc8, 0xd0, 0xd1, 0xea, 0xee, 0x66, 0xb9, 0x54, 0xd6, 0x12, 0xb9, 0x35, 0x18, 0xa1, 0x46, + 0xc0, 0xa9, 0xe1, 0x9b, 0x41, 0x1b, 0x62, 0x87, 0x8c, 0x43, 0xe1, 0xb3, 0x07, 0xdb, 0xc5, 0xb2, + 0xa1, 0x25, 0x44, 0xf7, 0xba, 0x90, 0x11, 0xdb, 0xb9, 0x9f, 0x4e, 0x4c, 0xfd, 0xbe, 0x02, 0x69, + 0xa1, 0x3d, 0xc3, 0x8d, 0x81, 0xd9, 0x68, 0x38, 0xaf, 0x57, 0xcd, 0x86, 0x65, 0xba, 0x2c, 0x28, + 0x80, 0x0c, 0x15, 0xf0, 0xc8, 0xa0, 0x4e, 0xfb, 0xa9, 0x28, 0xff, 0x25, 0x05, 0xb4, 0x70, 0x6b, + 0x17, 0x52, 0x50, 0xf9, 0x99, 0x2a, 0xf8, 0x05, 0x05, 0x26, 0xe4, 0x7e, 0x2e, 0xa4, 0xde, 0xc5, + 0x9f, 0xa9, 0x7a, 0xdf, 0x4d, 0xc0, 0xb8, 0xd4, 0xc5, 0x0d, 0xaa, 0xdd, 0x2f, 0xc2, 0x94, 0x55, + 0x47, 0xcd, 0x96, 0xe3, 0x21, 0xbb, 0x76, 0x5a, 0x6d, 0xa0, 0xd7, 0x50, 0x23, 0x9b, 0x23, 0x85, + 0xe2, 0x4a, 0xff, 0x3e, 0x71, 0x69, 0x33, 0xc0, 0x6d, 0x61, 0x58, 0x7e, 0x7a, 0x73, 0xbd, 0xbc, + 0xbd, 0xbb, 0xb3, 0x5f, 0xae, 0x94, 0xee, 0x55, 0x0f, 0x2a, 0x1f, 0xaf, 0xec, 0xbc, 0x54, 0x31, + 0x34, 0x2b, 0x24, 0xf6, 0x01, 0xa6, 0xfa, 0x2e, 0x68, 0x61, 0xa5, 0xf4, 0x47, 0x21, 0x4a, 0x2d, + 0x6d, 0x48, 0x9f, 0x86, 0xc9, 0xca, 0x4e, 0x75, 0x6f, 0x73, 0xbd, 0x5c, 0x2d, 0x6f, 0x6c, 0x94, + 0x4b, 0xfb, 0x7b, 0xf4, 0xc6, 0xd9, 0x97, 0xde, 0x97, 0x93, 0xfa, 0xf3, 0x2a, 0x4c, 0x47, 0x68, + 0xa2, 0x17, 0x58, 0xcf, 0x4e, 0x6f, 0x23, 0x9e, 0x1d, 0x44, 0xfb, 0x25, 0xdc, 0x15, 0xec, 0x9a, + 0x6d, 0x8f, 0xb5, 0xf8, 0xcf, 0x00, 0xb6, 0x92, 0xed, 0x59, 0x47, 0x16, 0x6a, 0xb3, 0x7d, 0x06, + 0xda, 0xc8, 0x4f, 0x06, 0xe3, 0x74, 0xab, 0xe1, 0xa3, 0xa0, 0xb7, 0x1c, 0xd7, 0xf2, 0xac, 0xd7, + 0x50, 0xd5, 0xb2, 0xf9, 0xa6, 0x04, 0x6e, 0xec, 0x93, 0x86, 0xc6, 0x67, 0x36, 0x6d, 0xcf, 0x97, + 0xb6, 0xd1, 0xb1, 0x19, 0x92, 0xc6, 0x05, 0x5c, 0x35, 0x34, 0x3e, 0xe3, 0x4b, 0x5f, 0x84, 0x4c, + 0xdd, 0xe9, 0xe0, 0x36, 0x89, 0xca, 0xe1, 0xf5, 0x42, 0x31, 0xd2, 0x74, 0xcc, 0x17, 0x61, 0x7d, + 0x6c, 0xb0, 0x1b, 0x92, 0x31, 0xd2, 0x74, 0x8c, 0x8a, 0x3c, 0x0d, 0x93, 0xe6, 0xf1, 0x71, 0x1b, + 0x93, 0x73, 0x22, 0xda, 0x99, 0x4f, 0xf8, 0xc3, 0x44, 0x70, 0xf6, 0x2e, 0xa4, 0xb8, 0x1d, 0xf0, + 0x92, 0x8c, 0x2d, 0x51, 0x6d, 0xd1, 0x3d, 0xa9, 0xc4, 0xc2, 0x98, 0x91, 0xb2, 0xf9, 0xe4, 0x45, + 0xc8, 0x58, 0x6e, 0x35, 0xd8, 0x1c, 0x4d, 0x5c, 0x48, 0x2c, 0xa4, 0x8c, 0xb4, 0xe5, 0xfa, 0xbb, + 0x61, 0xb9, 0xaf, 0x26, 0x60, 0x42, 0xde, 0xdc, 0xd5, 0xd7, 0x21, 0xd5, 0x70, 0x6a, 0x26, 0x09, + 0x2d, 0xfa, 0x64, 0x61, 0x21, 0x66, 0x3f, 0x78, 0x69, 0x8b, 0xc9, 0x1b, 0x3e, 0x72, 0xf6, 0x3f, + 0x2b, 0x90, 0xe2, 0xc3, 0xfa, 0x0c, 0x24, 0x5b, 0xa6, 0x77, 0x42, 0xe8, 0x86, 0x8b, 0x09, 0x4d, + 0x31, 0xc8, 0x31, 0x1e, 0x77, 0x5b, 0xa6, 0x4d, 0x42, 0x80, 0x8d, 0xe3, 0x63, 0xec, 0xd7, 0x06, + 0x32, 0xeb, 0xa4, 0xed, 0x77, 0x9a, 0x4d, 0x64, 0x7b, 0x2e, 0xf7, 0x2b, 0x1b, 0x2f, 0xb1, 0x61, + 0xfd, 0x23, 0x30, 0xe5, 0xb5, 0x4d, 0xab, 0x21, 0xc9, 0x26, 0x89, 0xac, 0xc6, 0x27, 0x7c, 0xe1, + 0x3c, 0x3c, 0xc6, 0x79, 0xeb, 0xc8, 0x33, 0x6b, 0x27, 0xa8, 0x1e, 0x80, 0x46, 0xc8, 0xce, 0xe1, + 0xa3, 0x4c, 0x60, 0x9d, 0xcd, 0x73, 0x6c, 0xee, 0x0f, 0x15, 0x98, 0xe2, 0x37, 0x2a, 0x75, 0xdf, + 0x58, 0xdb, 0x00, 0xa6, 0x6d, 0x3b, 0x9e, 0x68, 0xae, 0xee, 0x50, 0xee, 0xc2, 0x2d, 0x15, 0x7c, + 0x90, 0x21, 0x10, 0xcc, 0x36, 0x01, 0x82, 0x99, 0x9e, 0x66, 0x9b, 0x87, 0x34, 0xdb, 0xb9, 0x27, + 0x8f, 0x7f, 0xe8, 0xad, 0x2d, 0xd0, 0x21, 0x7c, 0x47, 0xa3, 0x9f, 0x83, 0xe1, 0x43, 0x74, 0x6c, + 0xd9, 0x6c, 0x3f, 0x91, 0x1e, 0xf0, 0x5d, 0xca, 0xa4, 0xbf, 0x4b, 0x59, 0x7c, 0x19, 0xa6, 0x6b, + 0x4e, 0x33, 0xac, 0x6e, 0x51, 0x0b, 0xdd, 0x5e, 0xbb, 0x2f, 0x2a, 0xbf, 0x00, 0x41, 0x8b, 0xf9, + 0xeb, 0x09, 0xf5, 0xce, 0x6e, 0xf1, 0xb7, 0x12, 0xb3, 0x77, 0x28, 0x6e, 0x97, 0x5f, 0xa6, 0x81, + 0x8e, 0x1a, 0xa8, 0x86, 0x55, 0x87, 0x3f, 0xb9, 0x0c, 0xcf, 0x1e, 0x5b, 0xde, 0x49, 0xe7, 0x70, + 0xa9, 0xe6, 0x34, 0xaf, 0x1c, 0x3b, 0xc7, 0x4e, 0xf0, 0xb8, 0x0b, 0x1f, 0x91, 0x03, 0xf2, 0x89, + 0x3d, 0xf2, 0x1a, 0xf3, 0x47, 0x67, 0x63, 0x9f, 0x8f, 0xe5, 0x2b, 0x30, 0xcd, 0x84, 0xab, 0x64, + 0xcf, 0x9d, 0xde, 0x1a, 0xe8, 0x7d, 0xf7, 0x5d, 0xb2, 0xbf, 0xf3, 0x7d, 0xb2, 0x56, 0x1b, 0x53, + 0x0c, 0x8a, 0xe7, 0xe8, 0x0d, 0x44, 0xde, 0x80, 0x47, 0x24, 0x3e, 0x9a, 0x97, 0xa8, 0x1d, 0xc3, + 0xf8, 0x2d, 0xc6, 0x38, 0x2d, 0x30, 0xee, 0x31, 0x68, 0xbe, 0x04, 0xe3, 0x67, 0xe1, 0xfa, 0x0f, + 0x8c, 0x2b, 0x83, 0x44, 0x92, 0x3b, 0x30, 0x49, 0x48, 0x6a, 0x1d, 0xd7, 0x73, 0x9a, 0xa4, 0xe8, + 0xf5, 0xa7, 0xf9, 0x8f, 0xdf, 0xa7, 0x89, 0x32, 0x81, 0x61, 0x25, 0x1f, 0x95, 0xcf, 0x03, 0x79, + 0xcc, 0x50, 0x47, 0xb5, 0x46, 0x0c, 0xc3, 0x7d, 0xa6, 0x88, 0x2f, 0x9f, 0xff, 0x24, 0x9c, 0xc3, + 0x9f, 0x49, 0x4d, 0x12, 0x35, 0x89, 0xdf, 0x65, 0xca, 0xfe, 0xe1, 0x67, 0x68, 0x2e, 0x4e, 0xfb, + 0x04, 0x82, 0x4e, 0x82, 0x17, 0x8f, 0x91, 0xe7, 0xa1, 0xb6, 0x5b, 0x35, 0x1b, 0x51, 0xea, 0x09, + 0xb7, 0xe9, 0xd9, 0x5f, 0xfb, 0xa1, 0xec, 0xc5, 0x3b, 0x14, 0x59, 0x68, 0x34, 0xf2, 0x07, 0xf0, + 0x68, 0x44, 0x54, 0x0c, 0xc0, 0xf9, 0x79, 0xc6, 0x79, 0xae, 0x2b, 0x32, 0x30, 0xed, 0x2e, 0xf0, + 0x71, 0xdf, 0x97, 0x03, 0x70, 0xfe, 0x63, 0xc6, 0xa9, 0x33, 0x2c, 0x77, 0x29, 0x66, 0xbc, 0x0b, + 0x53, 0xaf, 0xa1, 0xf6, 0xa1, 0xe3, 0xb2, 0xad, 0x91, 0x01, 0xe8, 0xbe, 0xc0, 0xe8, 0x26, 0x19, + 0x90, 0xec, 0x95, 0x60, 0xae, 0x5b, 0x90, 0x3a, 0x32, 0x6b, 0x68, 0x00, 0x8a, 0x2f, 0x32, 0x8a, + 0x51, 0x2c, 0x8f, 0xa1, 0x05, 0xc8, 0x1c, 0x3b, 0x6c, 0x59, 0x8a, 0x87, 0x7f, 0x89, 0xc1, 0xd3, + 0x1c, 0xc3, 0x28, 0x5a, 0x4e, 0xab, 0xd3, 0xc0, 0x6b, 0x56, 0x3c, 0xc5, 0x97, 0x39, 0x05, 0xc7, + 0x30, 0x8a, 0x33, 0x98, 0xf5, 0x2d, 0x4e, 0xe1, 0x0a, 0xf6, 0x7c, 0x01, 0xd2, 0x8e, 0xdd, 0x38, + 0x75, 0xec, 0x41, 0x94, 0xf8, 0x0a, 0x63, 0x00, 0x06, 0xc1, 0x04, 0xb7, 0x61, 0x6c, 0x50, 0x47, + 0xfc, 0xc6, 0x0f, 0x79, 0x7a, 0x70, 0x0f, 0xdc, 0x81, 0x49, 0x5e, 0xa0, 0x2c, 0xc7, 0x1e, 0x80, + 0xe2, 0x9f, 0x32, 0x8a, 0x09, 0x01, 0xc6, 0x2e, 0xc3, 0x43, 0xae, 0x77, 0x8c, 0x06, 0x21, 0xf9, + 0x2a, 0xbf, 0x0c, 0x06, 0x61, 0xa6, 0x3c, 0x44, 0x76, 0xed, 0x64, 0x30, 0x86, 0xaf, 0x71, 0x53, + 0x72, 0x0c, 0xa6, 0x28, 0xc1, 0x78, 0xd3, 0x6c, 0xbb, 0x27, 0x66, 0x63, 0x20, 0x77, 0xfc, 0x26, + 0xe3, 0xc8, 0xf8, 0x20, 0x66, 0x91, 0x8e, 0x7d, 0x16, 0x9a, 0xdf, 0xe2, 0x16, 0x11, 0x60, 0x2c, + 0xf5, 0x5c, 0x8f, 0x6c, 0x40, 0x9d, 0x85, 0xed, 0xb7, 0x79, 0xea, 0x51, 0xec, 0xb6, 0xc8, 0x78, + 0x1b, 0xc6, 0x5c, 0xeb, 0xd3, 0x03, 0xd1, 0xfc, 0x33, 0xee, 0x69, 0x02, 0xc0, 0xe0, 0x7b, 0xf0, + 0x58, 0xe4, 0x32, 0x31, 0x00, 0xd9, 0x3f, 0x67, 0x64, 0x33, 0x11, 0x4b, 0x05, 0x2b, 0x09, 0x67, + 0xa5, 0xfc, 0x17, 0xbc, 0x24, 0xa0, 0x10, 0xd7, 0x2e, 0xbe, 0x51, 0x70, 0xcd, 0xa3, 0xb3, 0x59, + 0xed, 0x5f, 0x72, 0xab, 0x51, 0xac, 0x64, 0xb5, 0x7d, 0x98, 0x61, 0x8c, 0x67, 0xf3, 0xeb, 0xd7, + 0x79, 0x61, 0xa5, 0xe8, 0x03, 0xd9, 0xbb, 0x9f, 0x82, 0x59, 0xdf, 0x9c, 0xbc, 0x23, 0x75, 0xab, + 0x4d, 0xb3, 0x35, 0x00, 0xf3, 0xef, 0x30, 0x66, 0x5e, 0xf1, 0xfd, 0x96, 0xd6, 0xdd, 0x36, 0x5b, + 0x98, 0xfc, 0x65, 0xc8, 0x72, 0xf2, 0x8e, 0xdd, 0x46, 0x35, 0xe7, 0xd8, 0xb6, 0x3e, 0x8d, 0xea, + 0x03, 0x50, 0x7f, 0x23, 0xe4, 0xaa, 0x03, 0x01, 0x8e, 0x99, 0x37, 0x41, 0xf3, 0x7b, 0x95, 0xaa, + 0xd5, 0x6c, 0x39, 0x6d, 0x2f, 0x86, 0xf1, 0x5f, 0x71, 0x4f, 0xf9, 0xb8, 0x4d, 0x02, 0xcb, 0x97, + 0x61, 0x82, 0x1c, 0x0e, 0x1a, 0x92, 0xbf, 0xcb, 0x88, 0xc6, 0x03, 0x14, 0x2b, 0x1c, 0x35, 0xa7, + 0xd9, 0x32, 0xdb, 0x83, 0xd4, 0xbf, 0x7f, 0xcd, 0x0b, 0x07, 0x83, 0xb0, 0xc2, 0xe1, 0x9d, 0xb6, + 0x10, 0x5e, 0xed, 0x07, 0x60, 0xf8, 0x26, 0x2f, 0x1c, 0x1c, 0xc3, 0x28, 0x78, 0xc3, 0x30, 0x00, + 0xc5, 0xbf, 0xe1, 0x14, 0x1c, 0x83, 0x29, 0x3e, 0x11, 0x2c, 0xb4, 0x6d, 0x74, 0x6c, 0xb9, 0x5e, + 0x9b, 0xf6, 0xc1, 0xfd, 0xa9, 0x7e, 0xef, 0x87, 0x72, 0x13, 0x66, 0x08, 0xd0, 0xfc, 0x5d, 0x98, + 0x0c, 0xb5, 0x18, 0x7a, 0xdc, 0x3b, 0x0b, 0xd9, 0xbf, 0xf2, 0x63, 0x56, 0x8c, 0xe4, 0x0e, 0x23, + 0xbf, 0x85, 0xfd, 0x2e, 0xf7, 0x01, 0xf1, 0x64, 0x9f, 0xf9, 0xb1, 0xef, 0x7a, 0xa9, 0x0d, 0xc8, + 0x6f, 0xc0, 0xb8, 0xd4, 0x03, 0xc4, 0x53, 0xfd, 0x55, 0x46, 0x95, 0x11, 0x5b, 0x80, 0xfc, 0x1a, + 0x24, 0xf1, 0x7a, 0x1e, 0x0f, 0xff, 0x6b, 0x0c, 0x4e, 0xc4, 0xf3, 0xcf, 0x41, 0x8a, 0xaf, 0xe3, + 0xf1, 0xd0, 0x5f, 0x66, 0x50, 0x1f, 0x82, 0xe1, 0x7c, 0x0d, 0x8f, 0x87, 0xff, 0x75, 0x0e, 0xe7, + 0x10, 0x0c, 0x1f, 0xdc, 0x84, 0x6f, 0xff, 0xcd, 0x24, 0xab, 0xc3, 0xdc, 0x76, 0xb7, 0x61, 0x94, + 0x2d, 0xde, 0xf1, 0xe8, 0x5f, 0x61, 0x27, 0xe7, 0x88, 0xfc, 0x0d, 0x18, 0x1e, 0xd0, 0xe0, 0x7f, + 0x8b, 0x41, 0xa9, 0x7c, 0xbe, 0x04, 0x69, 0x61, 0xc1, 0x8e, 0x87, 0xff, 0x6d, 0x06, 0x17, 0x51, + 0x58, 0x75, 0xb6, 0x60, 0xc7, 0x13, 0xfc, 0x1d, 0xae, 0x3a, 0x43, 0x60, 0xb3, 0xf1, 0xb5, 0x3a, + 0x1e, 0xfd, 0x77, 0xb9, 0xd5, 0x39, 0x24, 0xff, 0x02, 0x8c, 0xf9, 0xf5, 0x37, 0x1e, 0xff, 0xf7, + 0x18, 0x3e, 0xc0, 0x60, 0x0b, 0x08, 0xf5, 0x3f, 0x9e, 0xe2, 0xef, 0x73, 0x0b, 0x08, 0x28, 0x9c, + 0x46, 0xe1, 0x35, 0x3d, 0x9e, 0xe9, 0x57, 0x79, 0x1a, 0x85, 0x96, 0x74, 0xec, 0x4d, 0x52, 0x06, + 0xe3, 0x29, 0xfe, 0x01, 0xf7, 0x26, 0x91, 0xc7, 0x6a, 0x84, 0x17, 0xc9, 0x78, 0x8e, 0x7f, 0xc4, + 0xd5, 0x08, 0xad, 0x91, 0xf9, 0x5d, 0xd0, 0xbb, 0x17, 0xc8, 0x78, 0xbe, 0xcf, 0x31, 0xbe, 0xa9, + 0xae, 0xf5, 0x31, 0xff, 0x12, 0xcc, 0x44, 0x2f, 0x8e, 0xf1, 0xac, 0xbf, 0xf6, 0xe3, 0xd0, 0xed, + 0x8c, 0xb8, 0x36, 0xe6, 0xf7, 0x83, 0x2a, 0x2b, 0x2e, 0x8c, 0xf1, 0xb4, 0x9f, 0xff, 0xb1, 0x5c, + 0x68, 0xc5, 0x75, 0x31, 0x5f, 0x00, 0x08, 0xd6, 0xa4, 0x78, 0xae, 0x2f, 0x30, 0x2e, 0x01, 0x84, + 0x53, 0x83, 0x2d, 0x49, 0xf1, 0xf8, 0x2f, 0xf2, 0xd4, 0x60, 0x08, 0x9c, 0x1a, 0x7c, 0x35, 0x8a, + 0x47, 0x7f, 0x89, 0xa7, 0x06, 0x87, 0xe4, 0x6f, 0x43, 0xca, 0xee, 0x34, 0x1a, 0x38, 0xb6, 0xf4, + 0xfe, 0xaf, 0x11, 0x65, 0xff, 0xc7, 0x4f, 0x18, 0x98, 0x03, 0xf2, 0x6b, 0x30, 0x8c, 0x9a, 0x87, + 0xa8, 0x1e, 0x87, 0xfc, 0x9f, 0x3f, 0xe1, 0xf5, 0x04, 0x4b, 0xe7, 0x5f, 0x00, 0xa0, 0x37, 0xd3, + 0xe4, 0x29, 0x51, 0x0c, 0xf6, 0x7f, 0xfd, 0x84, 0xbd, 0xa1, 0x10, 0x40, 0x02, 0x02, 0xfa, 0xbe, + 0x43, 0x7f, 0x82, 0x1f, 0xca, 0x04, 0xe4, 0x06, 0xfc, 0x16, 0x8c, 0xbe, 0xe2, 0x3a, 0xb6, 0x67, + 0x1e, 0xc7, 0xa1, 0xff, 0x37, 0x43, 0x73, 0x79, 0x6c, 0xb0, 0xa6, 0xd3, 0x46, 0x9e, 0x79, 0xec, + 0xc6, 0x61, 0xff, 0x0f, 0xc3, 0xfa, 0x00, 0x0c, 0xae, 0x99, 0xae, 0x37, 0xc8, 0x75, 0xff, 0x5f, + 0x0e, 0xe6, 0x00, 0xac, 0x34, 0xfe, 0xfc, 0x2a, 0x3a, 0x8d, 0xc3, 0xfe, 0x88, 0x2b, 0xcd, 0xe4, + 0xf3, 0xcf, 0xc1, 0x18, 0xfe, 0x48, 0xdf, 0xda, 0x89, 0x01, 0xff, 0x31, 0x03, 0x07, 0x08, 0x7c, + 0x66, 0xd7, 0xab, 0x7b, 0x56, 0xbc, 0xb1, 0xff, 0x1f, 0xf3, 0x34, 0x97, 0xcf, 0x17, 0x20, 0xed, + 0x7a, 0xf5, 0x7a, 0x87, 0x75, 0x34, 0x31, 0xf0, 0x3f, 0xf9, 0x89, 0x7f, 0x93, 0xeb, 0x63, 0x8a, + 0x17, 0xa3, 0x37, 0xeb, 0xe0, 0x8e, 0x73, 0xc7, 0xa1, 0xdb, 0x74, 0xf0, 0xfd, 0x06, 0xdc, 0xe8, + 0xb9, 0xeb, 0x86, 0x17, 0x91, 0x2b, 0x35, 0xa7, 0x79, 0xe8, 0xb8, 0x57, 0x0e, 0x1d, 0xef, 0xe4, + 0x8a, 0x77, 0x82, 0xf0, 0x18, 0xdb, 0x7f, 0x4b, 0xe2, 0xcf, 0xb3, 0x67, 0xdb, 0xb4, 0x23, 0xcf, + 0x63, 0x2b, 0x16, 0xd6, 0xbb, 0x42, 0xb6, 0xc4, 0xf5, 0xf3, 0x30, 0x42, 0xae, 0xe4, 0x2a, 0x79, + 0xec, 0xa4, 0x14, 0x93, 0xf7, 0xdf, 0x99, 0x1f, 0x32, 0xd8, 0x98, 0x3f, 0xbb, 0x42, 0xf6, 0x2c, + 0x13, 0xd2, 0xec, 0x8a, 0x3f, 0x7b, 0x8d, 0x6e, 0x5b, 0x4a, 0xb3, 0xd7, 0xfc, 0xd9, 0x55, 0xb2, + 0x81, 0xa9, 0x4a, 0xb3, 0xab, 0xfe, 0xec, 0x1a, 0xd9, 0xa4, 0x1f, 0x97, 0x66, 0xd7, 0xfc, 0xd9, + 0xeb, 0x64, 0x6b, 0x3e, 0x29, 0xcd, 0x5e, 0xf7, 0x67, 0x6f, 0x90, 0x5d, 0xf9, 0x29, 0x69, 0xf6, + 0x86, 0x3f, 0x7b, 0x93, 0xec, 0xc6, 0xeb, 0xd2, 0xec, 0x4d, 0x7f, 0xf6, 0x16, 0x79, 0xc5, 0x64, + 0x54, 0x9a, 0xbd, 0xa5, 0xcf, 0xc1, 0x28, 0xbd, 0xf2, 0x65, 0xf2, 0xe8, 0x76, 0x92, 0x4d, 0xf3, + 0xc1, 0x60, 0xfe, 0x2a, 0x79, 0x9d, 0x64, 0x44, 0x9e, 0xbf, 0x1a, 0xcc, 0xaf, 0x90, 0x17, 0xab, + 0x35, 0x79, 0x7e, 0x25, 0x98, 0xbf, 0x96, 0x1d, 0x27, 0xaf, 0xd4, 0x48, 0xf3, 0xd7, 0x82, 0xf9, + 0xd5, 0xec, 0x04, 0x0e, 0x66, 0x79, 0x7e, 0x35, 0x98, 0x5f, 0xcb, 0x4e, 0x5e, 0x50, 0x16, 0x32, + 0xf2, 0xfc, 0x5a, 0xee, 0x97, 0x88, 0x7b, 0xed, 0xc0, 0xbd, 0x33, 0xb2, 0x7b, 0x7d, 0xc7, 0xce, + 0xc8, 0x8e, 0xf5, 0x5d, 0x3a, 0x23, 0xbb, 0xd4, 0x77, 0xe6, 0x8c, 0xec, 0x4c, 0xdf, 0x8d, 0x33, + 0xb2, 0x1b, 0x7d, 0x07, 0xce, 0xc8, 0x0e, 0xf4, 0x5d, 0x37, 0x23, 0xbb, 0xce, 0x77, 0xda, 0x8c, + 0xec, 0x34, 0xdf, 0x5d, 0x33, 0xb2, 0xbb, 0x7c, 0x47, 0x65, 0x43, 0x8e, 0x0a, 0x5c, 0x94, 0x0d, + 0xb9, 0x28, 0x70, 0x4e, 0x36, 0xe4, 0x9c, 0xc0, 0x2d, 0xd9, 0x90, 0x5b, 0x02, 0x87, 0x64, 0x43, + 0x0e, 0x09, 0x5c, 0x91, 0x0d, 0xb9, 0x22, 0x70, 0x02, 0xcb, 0x31, 0x03, 0xb5, 0x22, 0x72, 0x4c, + 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xda, 0x37, 0xc7, 0xd4, 0xbe, 0x39, + 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9f, 0x63, 0x6a, 0x4c, + 0x8e, 0xa9, 0x31, 0x39, 0xa6, 0xc6, 0xe4, 0x98, 0x1a, 0x93, 0x63, 0x6a, 0x4c, 0x8e, 0xa9, 0x3d, + 0x73, 0x2c, 0x70, 0xef, 0x8c, 0xec, 0xde, 0xc8, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x23, 0xc7, + 0xd4, 0x1e, 0x39, 0xa6, 0xf6, 0xc8, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, 0x91, + 0x63, 0x6a, 0xaf, 0x1c, 0x53, 0x7b, 0xe6, 0x98, 0xda, 0x33, 0xc7, 0xd4, 0x9e, 0x39, 0xa6, 0xf6, + 0xcc, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0x62, 0x8e, 0xfd, 0x5b, 0x15, 0x74, 0x9a, 0x63, 0xbb, 0xe4, + 0xe5, 0x1f, 0xe6, 0x8a, 0xb9, 0x50, 0xa6, 0x8d, 0x60, 0xd7, 0x69, 0x81, 0x4b, 0xe6, 0x42, 0xb9, + 0x26, 0xcf, 0xaf, 0xf8, 0xf3, 0x3c, 0xdb, 0xe4, 0xf9, 0x6b, 0xfe, 0x3c, 0xcf, 0x37, 0x79, 0x7e, + 0xd5, 0x9f, 0xe7, 0x19, 0x27, 0xcf, 0xaf, 0xf9, 0xf3, 0x3c, 0xe7, 0xe4, 0xf9, 0xeb, 0xfe, 0x3c, + 0xcf, 0x3a, 0x79, 0xfe, 0x86, 0x3f, 0xcf, 0xf3, 0x4e, 0x9e, 0xbf, 0xe9, 0xcf, 0xf3, 0xcc, 0x93, + 0xe7, 0x6f, 0xe9, 0x17, 0xc2, 0xb9, 0xc7, 0x05, 0x7c, 0xd7, 0x5e, 0x08, 0x67, 0x5f, 0x48, 0xe2, + 0x6a, 0x20, 0xc1, 0xf3, 0x2f, 0x24, 0xb1, 0x12, 0x48, 0xf0, 0x0c, 0x0c, 0x49, 0x5c, 0xcb, 0x7d, + 0x96, 0xb8, 0xcf, 0x0e, 0xbb, 0x6f, 0x36, 0xe4, 0xbe, 0x84, 0xe0, 0xba, 0xd9, 0x90, 0xeb, 0x12, + 0x82, 0xdb, 0x66, 0x43, 0x6e, 0x4b, 0x08, 0x2e, 0x9b, 0x0d, 0xb9, 0x2c, 0x21, 0xb8, 0x6b, 0x36, + 0xe4, 0xae, 0x84, 0xe0, 0xaa, 0xd9, 0x90, 0xab, 0x12, 0x82, 0x9b, 0x66, 0x43, 0x6e, 0x4a, 0x08, + 0x2e, 0x9a, 0x0d, 0xb9, 0x28, 0x21, 0xb8, 0x67, 0x36, 0xe4, 0x9e, 0x84, 0xe0, 0x9a, 0xf3, 0x61, + 0xd7, 0x24, 0x44, 0xb7, 0x9c, 0x0f, 0xbb, 0x25, 0x21, 0xba, 0xe4, 0x7c, 0xd8, 0x25, 0x09, 0xd1, + 0x1d, 0xe7, 0xc3, 0xee, 0x48, 0x88, 0xae, 0xf8, 0xf3, 0x04, 0xef, 0x08, 0xf7, 0xbc, 0x76, 0xa7, + 0xe6, 0xbd, 0xa7, 0x8e, 0x70, 0x59, 0x6a, 0x1f, 0xd2, 0x2b, 0xfa, 0x12, 0x69, 0x58, 0xc5, 0x8e, + 0x33, 0xb4, 0x82, 0x2d, 0x4b, 0x8d, 0x85, 0x80, 0xb0, 0xa3, 0x11, 0xab, 0xef, 0xa9, 0x37, 0x5c, + 0x96, 0xda, 0x8c, 0x78, 0xfd, 0x6e, 0x7e, 0xe0, 0x1d, 0xdb, 0xdb, 0x09, 0xde, 0xb1, 0x31, 0xf3, + 0x9f, 0xb5, 0x63, 0x5b, 0x8c, 0x37, 0xb9, 0x6f, 0xec, 0xc5, 0x78, 0x63, 0x77, 0xad, 0x3a, 0x83, + 0x76, 0x70, 0x8b, 0xf1, 0xa6, 0xf5, 0x8d, 0xfa, 0xfe, 0xf6, 0x5b, 0x2c, 0x82, 0x0d, 0xd4, 0x8a, + 0x88, 0xe0, 0xb3, 0xf6, 0x5b, 0xcb, 0x52, 0x29, 0x39, 0x6b, 0x04, 0xab, 0x67, 0x8e, 0xe0, 0xb3, + 0x76, 0x5e, 0xcb, 0x52, 0x79, 0x39, 0x73, 0x04, 0x7f, 0x00, 0xfd, 0x10, 0x8b, 0xe0, 0xc0, 0xfc, + 0x67, 0xed, 0x87, 0x16, 0xe3, 0x4d, 0x1e, 0x19, 0xc1, 0xea, 0x19, 0x22, 0x78, 0x90, 0xfe, 0x68, + 0x31, 0xde, 0xb4, 0xd1, 0x11, 0xfc, 0x9e, 0xbb, 0x99, 0x2f, 0x2b, 0x30, 0x55, 0xb1, 0xea, 0xe5, + 0xe6, 0x21, 0xaa, 0xd7, 0x51, 0x9d, 0xd9, 0x71, 0x59, 0xaa, 0x04, 0x3d, 0x5c, 0xfd, 0xed, 0x77, + 0xe6, 0x03, 0x0b, 0xaf, 0x41, 0x8a, 0xda, 0x74, 0x79, 0x39, 0x7b, 0x5f, 0x89, 0xa9, 0x70, 0xbe, + 0xa8, 0x7e, 0x91, 0xc3, 0xae, 0x2e, 0x67, 0xff, 0x8b, 0x22, 0x54, 0x39, 0x7f, 0x38, 0xf7, 0xab, + 0x44, 0x43, 0xfb, 0x3d, 0x6b, 0x78, 0x65, 0x20, 0x0d, 0x05, 0xdd, 0x1e, 0xef, 0xd2, 0x4d, 0xd0, + 0xaa, 0x03, 0x93, 0x15, 0xab, 0x5e, 0x21, 0x5f, 0xe9, 0x1d, 0x44, 0x25, 0x2a, 0x13, 0xaa, 0x07, + 0xcb, 0x52, 0x58, 0x8a, 0x08, 0x3f, 0xa4, 0xe5, 0x1a, 0x91, 0xb3, 0xf0, 0x69, 0x6d, 0xe9, 0xb4, + 0x8b, 0xbd, 0x4e, 0x1b, 0x54, 0x76, 0xff, 0x84, 0x8b, 0xbd, 0x4e, 0x18, 0xe4, 0x90, 0x7f, 0xaa, + 0x37, 0xf8, 0xe2, 0x4c, 0xdf, 0xc2, 0xd1, 0xcf, 0x43, 0x62, 0x93, 0xbe, 0x21, 0x9c, 0x29, 0x66, + 0xb0, 0x52, 0xdf, 0x79, 0x67, 0x3e, 0x79, 0xd0, 0xb1, 0xea, 0x46, 0x62, 0xb3, 0xae, 0xdf, 0x85, + 0xe1, 0x4f, 0xb2, 0x2f, 0xc6, 0x61, 0x81, 0x55, 0x26, 0xf0, 0xd1, 0x98, 0x2d, 0x26, 0x42, 0xbd, + 0x74, 0x60, 0xd9, 0xde, 0xd5, 0x95, 0x9b, 0x06, 0xa5, 0xc8, 0xfd, 0x45, 0x00, 0x7a, 0xce, 0x75, + 0xd3, 0x3d, 0xd1, 0x2b, 0x9c, 0x99, 0x9e, 0xfa, 0xe6, 0x77, 0xde, 0x99, 0x5f, 0x1d, 0x84, 0xf5, + 0xd9, 0xba, 0xe9, 0x9e, 0x3c, 0xeb, 0x9d, 0xb6, 0xd0, 0x52, 0xf1, 0xd4, 0x43, 0x2e, 0x67, 0x6f, + 0xf1, 0x55, 0x8f, 0x5d, 0x57, 0x56, 0xb8, 0xae, 0x94, 0x74, 0x4d, 0x1b, 0xf2, 0x35, 0x2d, 0x3f, + 0xec, 0xf5, 0xbc, 0xc1, 0x17, 0x89, 0x90, 0x25, 0xd5, 0x38, 0x4b, 0xaa, 0xef, 0xd5, 0x92, 0x2d, + 0x5e, 0x1f, 0x43, 0xd7, 0xaa, 0xf6, 0xbb, 0x56, 0xf5, 0xbd, 0x5c, 0xeb, 0x9f, 0xd2, 0x6c, 0xf5, + 0xf3, 0xe9, 0xc0, 0xa6, 0x6f, 0x27, 0xfe, 0x7c, 0xed, 0x05, 0xbd, 0xaf, 0x5d, 0x40, 0x3e, 0x79, + 0xff, 0xad, 0x79, 0x25, 0xf7, 0xe5, 0x04, 0xbf, 0x72, 0x9a, 0x48, 0x0f, 0x77, 0xe5, 0x3f, 0x2f, + 0x3d, 0xd5, 0x07, 0x61, 0xa1, 0x2f, 0x29, 0x30, 0xd3, 0x55, 0xc9, 0xa9, 0x99, 0xde, 0xdf, 0x72, + 0x6e, 0x9f, 0xb5, 0x9c, 0x33, 0x05, 0x7f, 0x57, 0x81, 0x73, 0xa1, 0xf2, 0x4a, 0xd5, 0xbb, 0x12, + 0x52, 0xef, 0xd1, 0xee, 0x33, 0x11, 0x41, 0x41, 0x3b, 0xd1, 0xbd, 0x21, 0x80, 0xc0, 0xec, 0xfb, + 0x7d, 0x35, 0xe4, 0xf7, 0xf3, 0x3e, 0x20, 0xc2, 0x5c, 0x3c, 0x02, 0x98, 0xda, 0x0e, 0x24, 0xf7, + 0xdb, 0x08, 0xe9, 0x73, 0x90, 0xd8, 0x69, 0x33, 0x0d, 0x27, 0x28, 0x7e, 0xa7, 0x5d, 0x6c, 0x9b, + 0x76, 0xed, 0xc4, 0x48, 0xec, 0xb4, 0xf5, 0x8b, 0xa0, 0x16, 0xd8, 0x4f, 0x0f, 0xa4, 0x57, 0x26, + 0xa9, 0x40, 0xc1, 0xae, 0x33, 0x09, 0x3c, 0xa7, 0xcf, 0x41, 0x72, 0x0b, 0x99, 0x47, 0x4c, 0x09, + 0xa0, 0x32, 0x78, 0xc4, 0x20, 0xe3, 0xec, 0x84, 0x2f, 0x43, 0x8a, 0x13, 0xeb, 0x97, 0x30, 0xe2, + 0xc8, 0x63, 0xa7, 0x65, 0x08, 0xac, 0x0e, 0x5b, 0xb9, 0xc8, 0xac, 0x7e, 0x19, 0x86, 0x0d, 0xeb, + 0xf8, 0xc4, 0x63, 0x27, 0xef, 0x16, 0xa3, 0xd3, 0xb9, 0x7b, 0x30, 0xe6, 0x6b, 0xf4, 0x3e, 0x53, + 0xaf, 0xd3, 0x4b, 0xd3, 0x67, 0xc5, 0xf5, 0x84, 0xef, 0x5b, 0xd2, 0x21, 0xfd, 0x02, 0xa4, 0xf6, + 0xbc, 0x76, 0x50, 0xf4, 0x79, 0x47, 0xea, 0x8f, 0xe6, 0x7e, 0x49, 0x81, 0xd4, 0x3a, 0x42, 0x2d, + 0x62, 0xf0, 0xa7, 0x20, 0xb9, 0xee, 0xbc, 0x6e, 0x33, 0x05, 0xa7, 0x98, 0x45, 0xf1, 0x34, 0xb3, + 0x29, 0x99, 0xd6, 0x9f, 0x12, 0xed, 0x3e, 0xed, 0xdb, 0x5d, 0x90, 0x23, 0xb6, 0xcf, 0x49, 0xb6, + 0x67, 0x0e, 0xc4, 0x42, 0x5d, 0xf6, 0xbf, 0x01, 0x69, 0xe1, 0x2c, 0xfa, 0x02, 0x53, 0x23, 0x11, + 0x06, 0x8a, 0xb6, 0xc2, 0x12, 0x39, 0x04, 0xe3, 0xd2, 0x89, 0x31, 0x54, 0x30, 0x71, 0x0f, 0x28, + 0x31, 0xf3, 0xa2, 0x6c, 0xe6, 0x68, 0x51, 0x66, 0xea, 0x65, 0x6a, 0x23, 0x62, 0xee, 0x4b, 0x34, + 0x38, 0x7b, 0x3b, 0x11, 0x7f, 0xce, 0x0d, 0x83, 0x5a, 0xb1, 0x1a, 0xb9, 0xe7, 0x00, 0x68, 0xca, + 0x97, 0xed, 0x4e, 0x33, 0x94, 0x75, 0x13, 0xdc, 0xc0, 0xfb, 0x27, 0x68, 0x1f, 0xb9, 0x44, 0x44, + 0xee, 0xa7, 0x70, 0x81, 0x01, 0x9a, 0x62, 0x04, 0xff, 0x4c, 0x2c, 0x3e, 0xb2, 0x13, 0xc3, 0xa2, + 0x59, 0x2a, 0x7a, 0x0f, 0x79, 0x05, 0xdb, 0xf1, 0x4e, 0x50, 0x3b, 0x84, 0x58, 0xd1, 0xaf, 0x49, + 0x09, 0x3b, 0xb1, 0xf2, 0xb8, 0x8f, 0xe8, 0x09, 0xba, 0x96, 0xfb, 0x3a, 0x51, 0x10, 0xb7, 0x02, + 0x5d, 0x17, 0xa8, 0x0e, 0x70, 0x81, 0xfa, 0x75, 0xa9, 0x7f, 0xeb, 0xa3, 0x66, 0xe8, 0xd6, 0xf2, + 0x96, 0x74, 0x9f, 0xd3, 0x5f, 0x59, 0xf9, 0x1e, 0x93, 0xdb, 0x94, 0xab, 0xfc, 0x4c, 0xac, 0xca, + 0x3d, 0xba, 0xdb, 0xb3, 0xda, 0x54, 0x1d, 0xd4, 0xa6, 0xbf, 0xef, 0x77, 0x1c, 0xf4, 0x47, 0x1c, + 0xc8, 0x6f, 0x86, 0xe8, 0x1f, 0x8d, 0xf5, 0x7d, 0x5e, 0x29, 0xf9, 0xaa, 0xae, 0x0e, 0xea, 0xfe, + 0x7c, 0xa2, 0x58, 0xf4, 0xd5, 0xbd, 0x71, 0x86, 0x10, 0xc8, 0x27, 0x4a, 0x25, 0xbf, 0x6c, 0xa7, + 0x3e, 0xfb, 0xd6, 0xbc, 0xf2, 0xb5, 0xb7, 0xe6, 0x87, 0x72, 0xbf, 0xa9, 0xc0, 0x14, 0x93, 0x14, + 0x02, 0xf7, 0xd9, 0x90, 0xf2, 0x8f, 0xf0, 0x9a, 0x11, 0x65, 0x81, 0x9f, 0x5a, 0xf0, 0x7e, 0x4b, + 0x81, 0x6c, 0x97, 0xae, 0xdc, 0xde, 0xcb, 0x03, 0xa9, 0x9c, 0x57, 0xca, 0x3f, 0x7b, 0x9b, 0xdf, + 0x83, 0xe1, 0x7d, 0xab, 0x89, 0xda, 0x78, 0x25, 0xc0, 0x1f, 0xa8, 0xca, 0xfc, 0x61, 0x0e, 0x1d, + 0xe2, 0x73, 0x54, 0x39, 0x69, 0x6e, 0x45, 0xcf, 0x42, 0x72, 0xdd, 0xf4, 0x4c, 0xa2, 0x41, 0xc6, + 0xaf, 0xaf, 0xa6, 0x67, 0xe6, 0xae, 0x41, 0x66, 0xfb, 0x94, 0xbc, 0x42, 0x53, 0x27, 0xaf, 0x87, + 0xc8, 0xdd, 0x1f, 0xef, 0x57, 0xaf, 0x2e, 0x0e, 0xa7, 0xea, 0xda, 0x7d, 0x25, 0x9f, 0x24, 0xfa, + 0xbc, 0x06, 0x13, 0x3b, 0x58, 0x6d, 0x82, 0x23, 0xb0, 0x0b, 0xa0, 0x6c, 0xcb, 0x8d, 0x90, 0xc8, + 0x6a, 0x28, 0xdb, 0xa1, 0xf6, 0x51, 0xf5, 0xcd, 0x13, 0x6a, 0xdb, 0x54, 0xbf, 0x6d, 0x5b, 0x4c, + 0xa6, 0x26, 0xb4, 0xa9, 0xc5, 0x64, 0x0a, 0xb4, 0x71, 0x76, 0xde, 0xff, 0xa4, 0x82, 0x46, 0x5b, + 0x9d, 0x75, 0x74, 0x64, 0xd9, 0x96, 0xd7, 0xdd, 0xaf, 0xfa, 0x1a, 0xeb, 0x2f, 0xc0, 0x18, 0x36, + 0xe9, 0x06, 0xfb, 0xe9, 0x2d, 0x6c, 0xfa, 0x8b, 0xac, 0x45, 0x09, 0x51, 0xb0, 0x01, 0x12, 0x3a, + 0x01, 0x46, 0xdf, 0x00, 0xb5, 0x52, 0xd9, 0x66, 0x8b, 0xdb, 0x6a, 0x5f, 0x28, 0x7b, 0x03, 0x87, + 0x1d, 0xb1, 0x31, 0xf7, 0xd8, 0xc0, 0x04, 0xfa, 0x2a, 0x24, 0x2a, 0xdb, 0xac, 0xe1, 0xbd, 0x34, + 0x08, 0x8d, 0x91, 0xa8, 0x6c, 0xcf, 0xfe, 0x3b, 0x05, 0xc6, 0xa5, 0x51, 0x3d, 0x07, 0x19, 0x3a, + 0x20, 0x5c, 0xee, 0x88, 0x21, 0x8d, 0x71, 0x9d, 0x13, 0xef, 0x51, 0xe7, 0xd9, 0x02, 0x4c, 0x86, + 0xc6, 0xf5, 0x25, 0xd0, 0xc5, 0x21, 0xa6, 0x04, 0xfd, 0xd9, 0xa2, 0x88, 0x99, 0xdc, 0x13, 0x00, + 0x81, 0x5d, 0xfd, 0x5f, 0xdb, 0xa9, 0x94, 0xf7, 0xf6, 0xcb, 0xeb, 0x9a, 0x92, 0xfb, 0xa6, 0x02, + 0x69, 0xd6, 0xb6, 0xd6, 0x9c, 0x16, 0xd2, 0x8b, 0xa0, 0x14, 0x58, 0x04, 0x3d, 0x9c, 0xde, 0x4a, + 0x41, 0xbf, 0x02, 0x4a, 0x71, 0x70, 0x57, 0x2b, 0x45, 0x7d, 0x05, 0x94, 0x12, 0x73, 0xf0, 0x60, + 0x9e, 0x51, 0x4a, 0xb9, 0x3f, 0x56, 0x61, 0x5a, 0x6c, 0xa3, 0x79, 0x3d, 0xb9, 0x28, 0xdf, 0x37, + 0xe5, 0xc7, 0xae, 0xae, 0x5c, 0x5b, 0x5d, 0xc2, 0xff, 0xf8, 0x21, 0x79, 0x51, 0xbe, 0x85, 0xea, + 0x16, 0xe9, 0x7a, 0x4d, 0x24, 0x9f, 0x14, 0x66, 0xbb, 0x5e, 0x13, 0x91, 0x66, 0xbb, 0x5e, 0x13, + 0x91, 0x66, 0xbb, 0x5e, 0x13, 0x91, 0x66, 0xbb, 0x1e, 0x05, 0x48, 0xb3, 0x5d, 0xaf, 0x89, 0x48, + 0xb3, 0x5d, 0xaf, 0x89, 0x48, 0xb3, 0xdd, 0xaf, 0x89, 0xb0, 0xe9, 0x9e, 0xaf, 0x89, 0xc8, 0xf3, + 0xdd, 0xaf, 0x89, 0xc8, 0xf3, 0xdd, 0xaf, 0x89, 0xe4, 0x93, 0x5e, 0xbb, 0x83, 0x7a, 0x3f, 0x74, + 0x90, 0xf1, 0xfd, 0xee, 0x01, 0x83, 0x02, 0xbc, 0x03, 0x93, 0x74, 0x3f, 0xa2, 0xe4, 0xd8, 0x9e, + 0x69, 0xd9, 0xa8, 0xad, 0x7f, 0x0c, 0x32, 0x74, 0x88, 0xde, 0xe5, 0x44, 0xdd, 0x05, 0xd2, 0x79, + 0x56, 0x6e, 0x25, 0xe9, 0xdc, 0x9f, 0x27, 0x61, 0x86, 0x0e, 0x54, 0xcc, 0x26, 0x92, 0x5e, 0x32, + 0xba, 0x1c, 0x7a, 0xa4, 0x34, 0x81, 0xe1, 0x0f, 0xde, 0x99, 0xa7, 0xa3, 0x05, 0x3f, 0x98, 0x2e, + 0x87, 0x1e, 0x2e, 0xc9, 0x72, 0xc1, 0xfa, 0x73, 0x39, 0xf4, 0xe2, 0x91, 0x2c, 0xe7, 0x2f, 0x37, + 0xbe, 0x1c, 0x7f, 0x05, 0x49, 0x96, 0x5b, 0xf7, 0xa3, 0xec, 0x72, 0xe8, 0x65, 0x24, 0x59, 0xae, + 0xec, 0xc7, 0xdb, 0xe5, 0xd0, 0xa3, 0x27, 0x59, 0x6e, 0xc3, 0x8f, 0xbc, 0xcb, 0xa1, 0x87, 0x50, + 0xb2, 0xdc, 0x1d, 0x3f, 0x06, 0x2f, 0x87, 0x5e, 0x55, 0x92, 0xe5, 0x5e, 0xf4, 0xa3, 0xf1, 0x72, + 0xe8, 0xa5, 0x25, 0x59, 0x6e, 0xd3, 0x8f, 0xcb, 0x85, 0xf0, 0xeb, 0x4b, 0xb2, 0xe0, 0xdd, 0x20, + 0x42, 0x17, 0xc2, 0x2f, 0x32, 0xc9, 0x92, 0x1f, 0x0f, 0x62, 0x75, 0x21, 0xfc, 0x4a, 0x93, 0x2c, + 0xb9, 0x15, 0x44, 0xed, 0x42, 0xf8, 0x51, 0x99, 0x2c, 0xb9, 0x1d, 0xc4, 0xef, 0x42, 0xf8, 0xa1, + 0x99, 0x2c, 0x59, 0x09, 0x22, 0x79, 0x21, 0xfc, 0xf8, 0x4c, 0x96, 0xdc, 0x09, 0xf6, 0xd0, 0xff, + 0x20, 0x14, 0x7e, 0xc2, 0x4b, 0x50, 0xb9, 0x50, 0xf8, 0x41, 0x44, 0xe8, 0xe5, 0x42, 0xa1, 0x07, + 0x11, 0x61, 0x97, 0x0b, 0x85, 0x1d, 0x44, 0x84, 0x5c, 0x2e, 0x14, 0x72, 0x10, 0x11, 0x6e, 0xb9, + 0x50, 0xb8, 0x41, 0x44, 0xa8, 0xe5, 0x42, 0xa1, 0x06, 0x11, 0x61, 0x96, 0x0b, 0x85, 0x19, 0x44, + 0x84, 0x58, 0x2e, 0x14, 0x62, 0x10, 0x11, 0x5e, 0xb9, 0x50, 0x78, 0x41, 0x44, 0x68, 0x5d, 0x0a, + 0x87, 0x16, 0x44, 0x85, 0xd5, 0xa5, 0x70, 0x58, 0x41, 0x54, 0x48, 0x3d, 0x19, 0x0e, 0xa9, 0xb1, + 0x07, 0xef, 0xcc, 0x0f, 0xe3, 0x21, 0x21, 0x9a, 0x2e, 0x85, 0xa3, 0x09, 0xa2, 0x22, 0xe9, 0x52, + 0x38, 0x92, 0x20, 0x2a, 0x8a, 0x2e, 0x85, 0xa3, 0x08, 0xa2, 0x22, 0xe8, 0xed, 0x70, 0x04, 0x05, + 0xaf, 0xf8, 0xe4, 0x42, 0x4f, 0x14, 0xe3, 0x22, 0x48, 0x1d, 0x20, 0x82, 0xd4, 0x01, 0x22, 0x48, + 0x1d, 0x20, 0x82, 0xd4, 0x01, 0x22, 0x48, 0x1d, 0x20, 0x82, 0xd4, 0x01, 0x22, 0x48, 0x1d, 0x20, + 0x82, 0xd4, 0x41, 0x22, 0x48, 0x1d, 0x28, 0x82, 0xd4, 0x5e, 0x11, 0x74, 0x29, 0xfc, 0xc2, 0x03, + 0x44, 0x15, 0xa4, 0x4b, 0xe1, 0x27, 0x9f, 0xf1, 0x21, 0xa4, 0x0e, 0x14, 0x42, 0x6a, 0xaf, 0x10, + 0xfa, 0x03, 0x15, 0xa6, 0xa5, 0x10, 0x62, 0x8f, 0x87, 0xde, 0xaf, 0x0a, 0x74, 0x7d, 0x80, 0xf7, + 0x2b, 0xa2, 0x62, 0xea, 0xfa, 0x00, 0xcf, 0xa8, 0xfb, 0xc5, 0x59, 0x77, 0x15, 0x2a, 0x0f, 0x50, + 0x85, 0x36, 0xfc, 0x18, 0xba, 0x3e, 0xc0, 0x7b, 0x17, 0xdd, 0xb1, 0x77, 0xb3, 0x5f, 0x11, 0x78, + 0x71, 0xa0, 0x22, 0xb0, 0x39, 0x50, 0x11, 0xb8, 0x1b, 0x78, 0xf0, 0x97, 0x13, 0x70, 0x2e, 0xf0, + 0x20, 0xfd, 0x44, 0x7e, 0x22, 0x29, 0x27, 0x3c, 0xa1, 0xd2, 0xf9, 0x53, 0x1b, 0xc1, 0x8d, 0x89, + 0xcd, 0xba, 0xbe, 0x2b, 0x3f, 0xab, 0xca, 0x9f, 0xf5, 0xf9, 0x8d, 0xe0, 0x71, 0xb6, 0x17, 0x7a, + 0x09, 0xd4, 0xcd, 0xba, 0x4b, 0xaa, 0x45, 0xd4, 0x69, 0x4b, 0x06, 0x9e, 0xd6, 0x0d, 0x18, 0x21, + 0xe2, 0x2e, 0x71, 0xef, 0x7b, 0x39, 0xf1, 0xba, 0xc1, 0x98, 0x72, 0x6f, 0x2b, 0x70, 0x41, 0x0a, + 0xe5, 0xf7, 0xe7, 0x89, 0xc1, 0xed, 0x81, 0x9e, 0x18, 0x48, 0x09, 0x12, 0x3c, 0x3d, 0x78, 0xba, + 0xfb, 0x41, 0xb5, 0x98, 0x25, 0xe1, 0x27, 0x09, 0x7f, 0x19, 0x26, 0x82, 0x2b, 0x20, 0xb7, 0x6c, + 0x6b, 0xf1, 0x9b, 0x99, 0x51, 0xa9, 0xb9, 0x16, 0xda, 0x44, 0xeb, 0x0b, 0xf3, 0xb3, 0x35, 0x97, + 0x87, 0xc9, 0x8a, 0xfc, 0x5d, 0x9e, 0xb8, 0xbd, 0x88, 0x14, 0x6e, 0xcd, 0xef, 0x7f, 0x65, 0x7e, + 0x28, 0xf7, 0x51, 0xc8, 0x88, 0x5f, 0xd7, 0x09, 0x01, 0xc7, 0x38, 0x30, 0x9f, 0xfc, 0x36, 0x96, + 0xfe, 0x87, 0x0a, 0x3c, 0x22, 0x8a, 0xbf, 0x64, 0x79, 0x27, 0x9b, 0x36, 0xee, 0xe9, 0x9f, 0x83, + 0x14, 0x62, 0x8e, 0x63, 0xbf, 0x76, 0xc2, 0x6e, 0x23, 0x23, 0xc5, 0x97, 0xc8, 0xbf, 0x86, 0x0f, + 0x09, 0x6d, 0x71, 0xf0, 0xd3, 0xae, 0xcc, 0x3e, 0x05, 0xc3, 0x94, 0x5f, 0xd6, 0x6b, 0x3c, 0xa4, + 0xd7, 0x6f, 0x44, 0xe8, 0x45, 0xe2, 0x48, 0xbf, 0x2b, 0xe9, 0x25, 0xdc, 0xad, 0x46, 0x8a, 0x2f, + 0xf1, 0xe0, 0x2b, 0xa6, 0x70, 0xff, 0x47, 0x22, 0x2a, 0x5e, 0xc9, 0x05, 0x48, 0x95, 0xc3, 0x32, + 0xd1, 0x7a, 0xae, 0x43, 0xb2, 0xe2, 0xd4, 0xc9, 0xef, 0xb0, 0x90, 0xdf, 0xcb, 0x65, 0x46, 0x66, + 0x3f, 0x9e, 0x7b, 0x19, 0x52, 0xa5, 0x13, 0xab, 0x51, 0x6f, 0x23, 0x9b, 0x3d, 0xb2, 0x67, 0x3b, + 0xe8, 0x18, 0x63, 0xf8, 0x73, 0xb9, 0x12, 0x4c, 0x55, 0x1c, 0xbb, 0x78, 0xea, 0x89, 0x75, 0x63, + 0x29, 0x94, 0x22, 0xec, 0x91, 0x0f, 0xf9, 0x02, 0x08, 0x16, 0x28, 0x0e, 0x7f, 0xe7, 0x9d, 0x79, + 0x65, 0xdf, 0xdf, 0x3e, 0xdf, 0x86, 0x47, 0x59, 0xfa, 0x74, 0x51, 0xad, 0xc4, 0x51, 0x8d, 0xb1, + 0xc7, 0xd4, 0x02, 0xdd, 0x26, 0xa6, 0xb3, 0x23, 0xe9, 0x1e, 0x4e, 0x33, 0xdc, 0x14, 0xf5, 0xd5, + 0x4c, 0x3d, 0x93, 0x66, 0x91, 0x74, 0x4b, 0x71, 0x74, 0x21, 0xcd, 0x9e, 0x84, 0x31, 0x7f, 0x4e, + 0x88, 0x06, 0x31, 0x53, 0x56, 0x16, 0x73, 0x90, 0x16, 0x12, 0x56, 0x1f, 0x06, 0xa5, 0xa0, 0x0d, + 0xe1, 0xff, 0x8a, 0x9a, 0x82, 0xff, 0x2b, 0x69, 0x89, 0xc5, 0xa7, 0x60, 0x32, 0xb4, 0x7d, 0x89, + 0x67, 0xd6, 0x35, 0xc0, 0xff, 0x95, 0xb5, 0xf4, 0x6c, 0xf2, 0xb3, 0xff, 0x64, 0x6e, 0x68, 0xf1, + 0x36, 0xe8, 0xdd, 0x1b, 0x9d, 0xfa, 0x08, 0x24, 0x0a, 0x98, 0xf2, 0x51, 0x48, 0x14, 0x8b, 0x9a, + 0x32, 0x3b, 0xf9, 0x37, 0xbe, 0x78, 0x21, 0x5d, 0x24, 0xdf, 0x45, 0xbe, 0x87, 0xbc, 0x62, 0x91, + 0x81, 0x9f, 0x87, 0x47, 0x22, 0x37, 0x4a, 0x31, 0xbe, 0x54, 0xa2, 0xf8, 0xf5, 0xf5, 0x2e, 0xfc, + 0xfa, 0x3a, 0xc1, 0x2b, 0x79, 0xfe, 0xc0, 0xb9, 0xa0, 0x47, 0x6c, 0x4b, 0x66, 0xeb, 0xc2, 0x03, + 0xee, 0x42, 0xfe, 0x79, 0x26, 0x5b, 0x8c, 0x94, 0x45, 0x31, 0x0f, 0xac, 0x8b, 0xf9, 0x12, 0xc3, + 0x97, 0x22, 0xf1, 0x47, 0xa1, 0xa7, 0xaa, 0xf2, 0x0a, 0xc1, 0x48, 0x4a, 0xbe, 0xc2, 0xeb, 0x91, + 0x24, 0x27, 0xc2, 0xbb, 0xee, 0xeb, 0xbe, 0xc2, 0xe5, 0x48, 0x59, 0x2b, 0xe6, 0x9d, 0xaf, 0x72, + 0xfe, 0x0a, 0x5b, 0xe4, 0x0b, 0x57, 0xf5, 0x47, 0x78, 0x8e, 0x4a, 0x15, 0x98, 0x19, 0x88, 0x4b, + 0xe5, 0x4b, 0x0c, 0x50, 0xec, 0x09, 0xe8, 0x6d, 0x25, 0x8e, 0xcc, 0xbf, 0xc8, 0x48, 0x4a, 0x3d, + 0x49, 0x62, 0x4c, 0xc5, 0xe1, 0xc5, 0xfd, 0xfb, 0xef, 0xce, 0x0d, 0x7d, 0xfb, 0xdd, 0xb9, 0xa1, + 0xff, 0xf6, 0xee, 0xdc, 0xd0, 0x77, 0xdf, 0x9d, 0x53, 0x7e, 0xf0, 0xee, 0x9c, 0xf2, 0xa3, 0x77, + 0xe7, 0x94, 0x3f, 0x7b, 0x77, 0x4e, 0x79, 0xf3, 0xc1, 0x9c, 0xf2, 0xb5, 0x07, 0x73, 0xca, 0xd7, + 0x1f, 0xcc, 0x29, 0xbf, 0xf7, 0x60, 0x4e, 0x79, 0xfb, 0xc1, 0x9c, 0x72, 0xff, 0xc1, 0x9c, 0xf2, + 0xed, 0x07, 0x73, 0xca, 0x77, 0x1f, 0xcc, 0x29, 0x3f, 0x78, 0x30, 0x37, 0xf4, 0xa3, 0x07, 0x73, + 0xca, 0x9f, 0x3d, 0x98, 0x1b, 0x7a, 0xf3, 0x7b, 0x73, 0x43, 0x6f, 0x7d, 0x6f, 0x6e, 0xe8, 0x6b, + 0xdf, 0x9b, 0x53, 0xe0, 0x8f, 0x56, 0x21, 0xc7, 0xbe, 0x48, 0x26, 0x7c, 0xdb, 0xf5, 0x8a, 0x77, + 0x82, 0x48, 0x53, 0x70, 0x8d, 0xff, 0xa2, 0x93, 0x3f, 0x70, 0xc6, 0xaf, 0x95, 0xcd, 0x3e, 0xec, + 0x97, 0xd8, 0x72, 0xff, 0x7e, 0x18, 0x46, 0xf9, 0x66, 0x70, 0xd4, 0x6f, 0x42, 0xaf, 0x41, 0xea, + 0xc4, 0x6a, 0x98, 0x6d, 0xcb, 0x3b, 0x65, 0xbb, 0xa0, 0x8f, 0x2d, 0x05, 0x6a, 0xf3, 0x7d, 0xd3, + 0x17, 0x3b, 0x4d, 0xa7, 0xd3, 0x36, 0x7c, 0x51, 0xfd, 0x02, 0x64, 0x4e, 0x90, 0x75, 0x7c, 0xe2, + 0x55, 0x2d, 0xbb, 0x5a, 0x6b, 0x92, 0x6e, 0x79, 0xdc, 0x00, 0x3a, 0xb6, 0x69, 0x97, 0x9a, 0xf8, + 0x64, 0x75, 0xd3, 0x33, 0xc9, 0x5d, 0x7a, 0xc6, 0x20, 0x9f, 0xf5, 0x8b, 0x90, 0x69, 0x23, 0xb7, + 0xd3, 0xf0, 0xaa, 0x35, 0xa7, 0x63, 0x7b, 0xa4, 0x9f, 0x55, 0x8d, 0x34, 0x1d, 0x2b, 0xe1, 0x21, + 0xfd, 0x49, 0x18, 0xf7, 0xda, 0x1d, 0x54, 0x75, 0x6b, 0x8e, 0xe7, 0x36, 0x4d, 0x9b, 0xf4, 0xb3, + 0x29, 0x23, 0x83, 0x07, 0xf7, 0xd8, 0x18, 0xf9, 0x9b, 0x03, 0x35, 0xa7, 0x8d, 0xc8, 0xed, 0x74, + 0xc2, 0xa0, 0x07, 0xba, 0x06, 0xea, 0xab, 0xe8, 0x94, 0xdc, 0xb0, 0x25, 0x0d, 0xfc, 0x51, 0x7f, + 0x06, 0x46, 0xe8, 0x9f, 0xa3, 0x20, 0xdd, 0x35, 0x79, 0x76, 0xed, 0x5f, 0x1a, 0xdd, 0xa3, 0x35, + 0x98, 0x80, 0x7e, 0x0b, 0x46, 0x3d, 0xd4, 0x6e, 0x9b, 0x96, 0x4d, 0x6e, 0x9e, 0xd2, 0x2b, 0xf3, + 0x11, 0x66, 0xd8, 0xa7, 0x12, 0xe4, 0xe7, 0x5d, 0x0d, 0x2e, 0xaf, 0xaf, 0x41, 0x86, 0xc8, 0xad, + 0x54, 0xe9, 0x9f, 0xec, 0x48, 0xf7, 0x8c, 0xe7, 0x34, 0x95, 0xe3, 0x8f, 0x0a, 0x38, 0x8c, 0xfe, + 0xb4, 0xdd, 0x38, 0x39, 0xed, 0x93, 0x11, 0xa7, 0x25, 0xa5, 0x77, 0x85, 0xb4, 0x8d, 0xf4, 0xd4, + 0x8c, 0x87, 0xfe, 0xf8, 0xdd, 0x36, 0x64, 0x44, 0xbd, 0xb8, 0x19, 0x68, 0xfb, 0x43, 0xcc, 0xf0, + 0x74, 0xf0, 0x73, 0xee, 0x3d, 0xac, 0x40, 0xe7, 0xf3, 0x89, 0x9b, 0xca, 0xec, 0x2e, 0x68, 0xe1, + 0xf3, 0x45, 0x50, 0x5e, 0x96, 0x29, 0x35, 0xf1, 0x62, 0xc9, 0x46, 0x79, 0xc0, 0x98, 0x7b, 0x01, + 0x46, 0x68, 0xfc, 0xe8, 0x69, 0x18, 0x0d, 0x7e, 0x35, 0x31, 0x05, 0xc9, 0xdd, 0x83, 0xca, 0x1e, + 0xfd, 0xf9, 0xd3, 0xbd, 0xad, 0xc2, 0xee, 0xde, 0xfe, 0x66, 0xe9, 0xe3, 0x5a, 0x42, 0x9f, 0x84, + 0x74, 0x71, 0x73, 0x6b, 0xab, 0x5a, 0x2c, 0x6c, 0x6e, 0x95, 0xef, 0x69, 0x6a, 0x6e, 0x0e, 0x46, + 0xa8, 0x9e, 0xe4, 0x67, 0xdc, 0x3a, 0xb6, 0x7d, 0xca, 0xdb, 0x07, 0x72, 0x90, 0xfb, 0x86, 0x0e, + 0xa3, 0x85, 0x46, 0x63, 0xdb, 0x6c, 0xb9, 0xfa, 0x4b, 0x30, 0x45, 0x7f, 0x50, 0x62, 0xdf, 0x59, + 0x27, 0xbf, 0x36, 0x88, 0x8b, 0x83, 0xc2, 0x7e, 0xc6, 0x3e, 0xb8, 0x6e, 0x26, 0xbe, 0xd4, 0x25, + 0x4b, 0x0d, 0xdc, 0xcd, 0xa1, 0xef, 0x83, 0xc6, 0x07, 0x37, 0x1a, 0x8e, 0xe9, 0x61, 0xde, 0x04, + 0xfb, 0x31, 0xc0, 0xde, 0xbc, 0x5c, 0x94, 0xd2, 0x76, 0x31, 0xe8, 0x1f, 0x83, 0xd4, 0xa6, 0xed, + 0x5d, 0x5b, 0xc1, 0x6c, 0xfc, 0x4f, 0xac, 0x74, 0xb3, 0x71, 0x11, 0xca, 0xe2, 0x23, 0x18, 0xfa, + 0xfa, 0x2a, 0x46, 0x27, 0xfb, 0xa1, 0x89, 0x48, 0x80, 0x26, 0x87, 0xfa, 0x0b, 0x30, 0x86, 0xef, + 0x4e, 0xe8, 0xc9, 0x87, 0x79, 0xeb, 0xda, 0x05, 0xf7, 0x65, 0x28, 0x3e, 0xc0, 0x70, 0x02, 0x7a, + 0xfe, 0x91, 0xbe, 0x04, 0x82, 0x02, 0x01, 0x06, 0x13, 0xec, 0xf9, 0x1a, 0x8c, 0xf6, 0x24, 0xd8, + 0x0b, 0x69, 0xb0, 0x27, 0x6a, 0xb0, 0xe7, 0x6b, 0x90, 0xea, 0x4b, 0x20, 0x6a, 0xe0, 0x1f, 0xeb, + 0x45, 0x80, 0x0d, 0xeb, 0x0d, 0x54, 0xa7, 0x2a, 0xd0, 0x3f, 0xc0, 0x92, 0x8b, 0x60, 0x08, 0x84, + 0x28, 0x85, 0x80, 0xd2, 0xcb, 0x90, 0xde, 0x3b, 0x0a, 0x48, 0xa0, 0x2b, 0x8f, 0x7d, 0x35, 0x8e, + 0x42, 0x2c, 0x22, 0xce, 0x57, 0x85, 0x5e, 0x4c, 0xba, 0xbf, 0x2a, 0xc2, 0xd5, 0x08, 0xa8, 0x40, + 0x15, 0x4a, 0x92, 0x89, 0x51, 0x45, 0x60, 0x11, 0x71, 0xb8, 0x18, 0x16, 0x1d, 0x07, 0x4b, 0xb2, + 0xaa, 0x34, 0x1f, 0x41, 0xc1, 0x24, 0x58, 0x31, 0x64, 0x47, 0xc4, 0x23, 0x24, 0xc8, 0x31, 0x78, + 0xa2, 0xb7, 0x47, 0xb8, 0x0c, 0xf7, 0x08, 0x3f, 0x16, 0xf3, 0x8c, 0xbc, 0xd0, 0x8a, 0x79, 0x26, + 0x63, 0xf3, 0x8c, 0x8b, 0x86, 0xf2, 0x8c, 0x0f, 0xeb, 0x9f, 0x80, 0x49, 0x3e, 0x86, 0xcb, 0x13, + 0x26, 0xd5, 0xd8, 0x9f, 0xa8, 0xea, 0x4d, 0xca, 0x24, 0x29, 0x67, 0x18, 0xaf, 0x57, 0x60, 0x82, + 0x0f, 0x6d, 0xbb, 0xe4, 0x72, 0xa7, 0xd8, 0x9f, 0x7f, 0xe8, 0xcd, 0x48, 0x05, 0x29, 0x61, 0x08, + 0x3d, 0xbb, 0x0e, 0x33, 0xd1, 0xd5, 0x48, 0x2c, 0xbf, 0x63, 0xb4, 0xfc, 0x9e, 0x13, 0xcb, 0xaf, + 0x22, 0x96, 0xef, 0x12, 0x3c, 0x12, 0x59, 0x7b, 0xe2, 0x48, 0x12, 0x22, 0xc9, 0x6d, 0x18, 0x97, + 0x4a, 0x8e, 0x08, 0x1e, 0x8e, 0x00, 0x0f, 0x77, 0x83, 0x83, 0xd0, 0x8a, 0x58, 0x3d, 0x24, 0xb0, + 0x2a, 0x82, 0x3f, 0x06, 0x13, 0x72, 0xbd, 0x11, 0xd1, 0xe3, 0x11, 0xe8, 0xf1, 0x08, 0x74, 0xf4, + 0xb9, 0x93, 0x11, 0xe8, 0x64, 0x08, 0xbd, 0xd7, 0xf3, 0xdc, 0x53, 0x11, 0xe8, 0xa9, 0x08, 0x74, + 0xf4, 0xb9, 0xf5, 0x08, 0xb4, 0x2e, 0xa2, 0x9f, 0x83, 0xc9, 0x50, 0x89, 0x11, 0xe1, 0xa3, 0x11, + 0xf0, 0x51, 0x11, 0xfe, 0x3c, 0x68, 0xe1, 0xe2, 0x22, 0xe2, 0x27, 0x23, 0xf0, 0x93, 0x51, 0xa7, + 0x8f, 0xd6, 0x7e, 0x24, 0x02, 0x3e, 0x12, 0x79, 0xfa, 0x68, 0xbc, 0x16, 0x81, 0xd7, 0x44, 0x7c, + 0x1e, 0x32, 0x62, 0x35, 0x11, 0xb1, 0xa9, 0x08, 0x6c, 0x2a, 0x6c, 0x77, 0xa9, 0x98, 0xc4, 0x45, + 0xfa, 0x58, 0x8f, 0x74, 0x91, 0x4a, 0x48, 0x1c, 0x49, 0x46, 0x24, 0xf9, 0x24, 0x9c, 0x8b, 0x2a, + 0x19, 0x11, 0x1c, 0x0b, 0x22, 0xc7, 0x04, 0xee, 0x11, 0x83, 0x66, 0xcf, 0x6c, 0x85, 0x1a, 0xa7, + 0xd9, 0x4f, 0xc1, 0x74, 0x44, 0xe1, 0x88, 0xa0, 0x5d, 0x92, 0xbb, 0xb1, 0xac, 0x40, 0x4b, 0x8a, + 0x80, 0x65, 0x1f, 0xef, 0x3a, 0x96, 0xed, 0x89, 0x5d, 0xd9, 0x37, 0xa7, 0x61, 0x82, 0x95, 0xa7, + 0x9d, 0x76, 0x1d, 0xb5, 0x51, 0x5d, 0xff, 0x4b, 0xbd, 0x7b, 0xa7, 0xe5, 0xee, 0xa2, 0xc6, 0x50, + 0x67, 0x68, 0xa1, 0x3e, 0xd5, 0xb3, 0x85, 0xba, 0x12, 0x4f, 0x1f, 0xd7, 0x49, 0x95, 0xba, 0x3a, + 0xa9, 0xa7, 0x7b, 0x93, 0xf6, 0x6a, 0xa8, 0x4a, 0x5d, 0x0d, 0x55, 0x7f, 0x92, 0xc8, 0xbe, 0x6a, + 0xa3, 0xbb, 0xaf, 0x5a, 0xe8, 0xcd, 0xd2, 0xbb, 0xbd, 0xda, 0xe8, 0x6e, 0xaf, 0x62, 0x78, 0xa2, + 0xbb, 0xac, 0x8d, 0xee, 0x2e, 0xab, 0x0f, 0x4f, 0xef, 0x66, 0x6b, 0xa3, 0xbb, 0xd9, 0x8a, 0xe1, + 0x89, 0xee, 0xb9, 0x36, 0x23, 0x7a, 0xae, 0x67, 0x7a, 0x13, 0xf5, 0x6b, 0xbd, 0xb6, 0xa2, 0x5a, + 0xaf, 0xc5, 0x3e, 0x4a, 0xf5, 0xed, 0xc0, 0x36, 0x23, 0x3a, 0xb0, 0x38, 0xc5, 0x7a, 0x34, 0x62, + 0x5b, 0x51, 0x8d, 0x58, 0xac, 0x62, 0xbd, 0xfa, 0xb1, 0xbf, 0x10, 0xee, 0xc7, 0x2e, 0xf7, 0x66, + 0x8a, 0x6e, 0xcb, 0x36, 0xba, 0xdb, 0xb2, 0x85, 0xb8, 0x9c, 0x8b, 0xea, 0xce, 0x3e, 0xd5, 0xb3, + 0x3b, 0x1b, 0x20, 0x85, 0xe3, 0x9a, 0xb4, 0x97, 0x7b, 0x35, 0x69, 0x4b, 0xf1, 0xdc, 0xfd, 0x7b, + 0xb5, 0x83, 0x1e, 0xbd, 0xda, 0xb3, 0xf1, 0xc4, 0x1f, 0xb6, 0x6c, 0x1f, 0xb6, 0x6c, 0x1f, 0xb6, + 0x6c, 0x1f, 0xb6, 0x6c, 0x3f, 0xfb, 0x96, 0x2d, 0x9f, 0xfc, 0xdc, 0x57, 0xe6, 0x95, 0xdc, 0x7f, + 0x55, 0xfd, 0xbf, 0x9c, 0xf5, 0x92, 0xe5, 0x9d, 0xe0, 0xf2, 0xb6, 0x0d, 0x19, 0xf2, 0x37, 0x2f, + 0x9a, 0x66, 0xab, 0x65, 0xd9, 0xc7, 0xac, 0x67, 0x5b, 0xec, 0xde, 0x4a, 0x64, 0x00, 0xf2, 0x57, + 0x43, 0xb6, 0xa9, 0x30, 0x5b, 0x6e, 0xec, 0x60, 0x44, 0xbf, 0x0b, 0xe9, 0xa6, 0x7b, 0xec, 0xb3, + 0x25, 0xba, 0x16, 0xc2, 0x10, 0x1b, 0xbd, 0xd2, 0x80, 0x0c, 0x9a, 0xfe, 0x00, 0x56, 0xed, 0xf0, + 0xd4, 0x0b, 0x54, 0x53, 0xe3, 0x54, 0xc3, 0x3e, 0x95, 0x55, 0x3b, 0x0c, 0x46, 0x70, 0xd8, 0x86, + 0x75, 0x8f, 0xab, 0x74, 0x52, 0xf0, 0xbc, 0x04, 0x93, 0x21, 0x6d, 0x23, 0x72, 0xfe, 0x21, 0x7c, + 0x83, 0x15, 0x0b, 0x6b, 0x1e, 0x97, 0x13, 0x62, 0x40, 0xe6, 0x9e, 0x80, 0x71, 0x89, 0x5b, 0xcf, + 0x80, 0x72, 0xc4, 0xbe, 0x4d, 0xa9, 0x1c, 0xe5, 0xbe, 0xac, 0x40, 0x9a, 0xbd, 0x4a, 0xb0, 0x6b, + 0x5a, 0x6d, 0xfd, 0x45, 0x48, 0x36, 0xf8, 0x37, 0x9a, 0x1e, 0xf6, 0xdb, 0xb3, 0x84, 0x41, 0xdf, + 0x80, 0xe1, 0xb6, 0xff, 0x8d, 0xa7, 0x87, 0xfa, 0x4a, 0x2c, 0x81, 0xe7, 0xee, 0x2b, 0x30, 0xc5, + 0xde, 0x74, 0x75, 0xd9, 0xfb, 0xcf, 0x66, 0x6b, 0xf6, 0x1b, 0x0a, 0x8c, 0xf9, 0x47, 0xfa, 0x21, + 0x4c, 0xf8, 0x07, 0xf4, 0x1d, 0x7b, 0x1a, 0xa9, 0x79, 0xc1, 0xc2, 0x5d, 0x1c, 0x4b, 0x11, 0x9f, + 0xe8, 0xc3, 0x28, 0xba, 0x26, 0xcb, 0x83, 0xb3, 0x05, 0x98, 0x8e, 0x10, 0x3b, 0xcb, 0x82, 0x9c, + 0xbb, 0x08, 0x63, 0x15, 0xc7, 0xa3, 0x3f, 0x9c, 0xa3, 0x9f, 0x13, 0x9e, 0x2a, 0x14, 0x13, 0xda, + 0x10, 0x01, 0x2f, 0x5e, 0x84, 0x51, 0x96, 0xfd, 0xfa, 0x08, 0x24, 0xb6, 0x0b, 0xda, 0x10, 0xf9, + 0xbf, 0xa8, 0x29, 0xe4, 0xff, 0x92, 0x96, 0x28, 0x6e, 0x3d, 0xc4, 0x93, 0xa6, 0xa1, 0x5e, 0x4f, + 0x9a, 0x0e, 0x47, 0xa8, 0x79, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xc2, 0xb8, 0x10, + 0x2d, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeboth/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeboth/theproto3.pb.go index 340496e8c..c1bafa25e 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeboth/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeboth/theproto3.pb.go @@ -275,491 +275,498 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7743 bytes of a gzipped FileDescriptorSet + // 7853 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0xf6, 0x8c, 0x28, 0x88, 0x1a, 0x91, 0x33, - 0xd0, 0x68, 0x44, 0xd1, 0x16, 0x87, 0xc3, 0xe1, 0xdc, 0x30, 0x96, 0x14, 0x00, 0x04, 0x47, 0x1c, - 0xf3, 0xe6, 0x26, 0x69, 0x49, 0xab, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x84, 0x04, 0x74, 0x23, 0xe8, - 0x86, 0x24, 0xfa, 0x21, 0xa5, 0x5d, 0x27, 0x1b, 0x6f, 0xb6, 0x72, 0xdd, 0xa4, 0xe2, 0xf5, 0xfa, - 0x22, 0x6f, 0x6a, 0x63, 0xef, 0xe6, 0xe6, 0x75, 0x36, 0xce, 0xd6, 0x56, 0x2a, 0xab, 0x3c, 0x38, - 0x99, 0xbc, 0xa4, 0xb4, 0xc9, 0x4b, 0xca, 0x95, 0x52, 0xad, 0xc6, 0xae, 0xc4, 0x49, 0x9c, 0xc4, - 0x9b, 0x75, 0xd5, 0x6e, 0x95, 0xf7, 0x61, 0xeb, 0xdc, 0xba, 0xcf, 0x39, 0x68, 0xa0, 0xc1, 0x91, - 0x64, 0xfb, 0x41, 0x2f, 0x33, 0xe8, 0x73, 0xfe, 0xef, 0xeb, 0xbf, 0xff, 0xdb, 0xf9, 0xfb, 0x74, - 0x03, 0x84, 0x9f, 0x5f, 0x81, 0xf3, 0x47, 0xae, 0x7b, 0xd4, 0x40, 0x97, 0x5b, 0x6d, 0xd7, 0x77, - 0x0f, 0x3a, 0x87, 0x97, 0x6b, 0xc8, 0xab, 0xb6, 0xeb, 0x2d, 0xdf, 0x6d, 0x2f, 0x92, 0x31, 0x73, - 0x92, 0x4a, 0x2c, 0x72, 0x89, 0xdc, 0x26, 0x4c, 0xad, 0xd5, 0x1b, 0x68, 0x35, 0x10, 0xdc, 0x45, - 0xbe, 0x79, 0x13, 0x92, 0x87, 0xf5, 0x06, 0xca, 0x6a, 0xe7, 0xf5, 0xf9, 0xf4, 0xf2, 0xc5, 0x45, - 0x05, 0xb4, 0x28, 0x23, 0x76, 0xf0, 0xb0, 0x45, 0x10, 0xb9, 0xef, 0x25, 0xe1, 0x4c, 0xc4, 0xac, - 0x69, 0x42, 0xd2, 0xb1, 0x9b, 0x98, 0x51, 0x9b, 0x1f, 0xb3, 0xc8, 0x67, 0x33, 0x0b, 0xa3, 0x2d, - 0xbb, 0xfa, 0xaa, 0x7d, 0x84, 0xb2, 0x09, 0x32, 0xcc, 0x0f, 0xcd, 0x59, 0x80, 0x1a, 0x6a, 0x21, - 0xa7, 0x86, 0x9c, 0xea, 0x49, 0x56, 0x3f, 0xaf, 0xcf, 0x8f, 0x59, 0xc2, 0x88, 0xf9, 0x31, 0x98, - 0x6a, 0x75, 0x0e, 0x1a, 0xf5, 0x6a, 0x45, 0x10, 0x83, 0xf3, 0xfa, 0xfc, 0xb0, 0x65, 0xd0, 0x89, - 0xd5, 0x50, 0xf8, 0x49, 0x98, 0x7c, 0x1d, 0xd9, 0xaf, 0x8a, 0xa2, 0x69, 0x22, 0x3a, 0x81, 0x87, - 0x05, 0xc1, 0x12, 0x64, 0x9a, 0xc8, 0xf3, 0xec, 0x23, 0x54, 0xf1, 0x4f, 0x5a, 0x28, 0x9b, 0x24, - 0x57, 0x7f, 0xbe, 0xeb, 0xea, 0xd5, 0x2b, 0x4f, 0x33, 0xd4, 0xde, 0x49, 0x0b, 0x99, 0x05, 0x18, - 0x43, 0x4e, 0xa7, 0x49, 0x19, 0x86, 0x7b, 0xd8, 0xaf, 0xec, 0x74, 0x9a, 0x2a, 0x4b, 0x0a, 0xc3, - 0x18, 0xc5, 0xa8, 0x87, 0xda, 0xaf, 0xd5, 0xab, 0x28, 0x3b, 0x42, 0x08, 0x9e, 0xec, 0x22, 0xd8, - 0xa5, 0xf3, 0x2a, 0x07, 0xc7, 0x99, 0x25, 0x18, 0x43, 0x6f, 0xf8, 0xc8, 0xf1, 0xea, 0xae, 0x93, - 0x1d, 0x25, 0x24, 0x4f, 0x44, 0x78, 0x11, 0x35, 0x6a, 0x2a, 0x45, 0x88, 0x33, 0xaf, 0xc3, 0xa8, - 0xdb, 0xf2, 0xeb, 0xae, 0xe3, 0x65, 0x53, 0xe7, 0xb5, 0xf9, 0xf4, 0xf2, 0xb9, 0xc8, 0x40, 0xd8, - 0xa6, 0x32, 0x16, 0x17, 0x36, 0xd7, 0xc1, 0xf0, 0xdc, 0x4e, 0xbb, 0x8a, 0x2a, 0x55, 0xb7, 0x86, - 0x2a, 0x75, 0xe7, 0xd0, 0xcd, 0x8e, 0x11, 0x82, 0xb9, 0xee, 0x0b, 0x21, 0x82, 0x25, 0xb7, 0x86, - 0xd6, 0x9d, 0x43, 0xd7, 0x9a, 0xf0, 0xa4, 0x63, 0x73, 0x1a, 0x46, 0xbc, 0x13, 0xc7, 0xb7, 0xdf, - 0xc8, 0x66, 0x48, 0x84, 0xb0, 0xa3, 0xdc, 0x9f, 0x0c, 0xc3, 0xe4, 0x20, 0x21, 0x76, 0x1b, 0x86, - 0x0f, 0xf1, 0x55, 0x66, 0x13, 0xa7, 0xb1, 0x01, 0xc5, 0xc8, 0x46, 0x1c, 0x79, 0x40, 0x23, 0x16, - 0x20, 0xed, 0x20, 0xcf, 0x47, 0x35, 0x1a, 0x11, 0xfa, 0x80, 0x31, 0x05, 0x14, 0xd4, 0x1d, 0x52, - 0xc9, 0x07, 0x0a, 0xa9, 0x17, 0x61, 0x32, 0x50, 0xa9, 0xd2, 0xb6, 0x9d, 0x23, 0x1e, 0x9b, 0x97, - 0xe3, 0x34, 0x59, 0x2c, 0x73, 0x9c, 0x85, 0x61, 0xd6, 0x04, 0x92, 0x8e, 0xcd, 0x55, 0x00, 0xd7, - 0x41, 0xee, 0x61, 0xa5, 0x86, 0xaa, 0x8d, 0x6c, 0xaa, 0x87, 0x95, 0xb6, 0xb1, 0x48, 0x97, 0x95, - 0x5c, 0x3a, 0x5a, 0x6d, 0x98, 0xb7, 0xc2, 0x50, 0x1b, 0xed, 0x11, 0x29, 0x9b, 0x34, 0xc9, 0xba, - 0xa2, 0x6d, 0x1f, 0x26, 0xda, 0x08, 0xc7, 0x3d, 0xaa, 0xb1, 0x2b, 0x1b, 0x23, 0x4a, 0x2c, 0xc6, - 0x5e, 0x99, 0xc5, 0x60, 0xf4, 0xc2, 0xc6, 0xdb, 0xe2, 0xa1, 0xf9, 0x38, 0x04, 0x03, 0x15, 0x12, - 0x56, 0x40, 0xaa, 0x50, 0x86, 0x0f, 0x6e, 0xd9, 0x4d, 0x34, 0x73, 0x13, 0x26, 0x64, 0xf3, 0x98, - 0x67, 0x61, 0xd8, 0xf3, 0xed, 0xb6, 0x4f, 0xa2, 0x70, 0xd8, 0xa2, 0x07, 0xa6, 0x01, 0x3a, 0x72, - 0x6a, 0xa4, 0xca, 0x0d, 0x5b, 0xf8, 0xe3, 0xcc, 0x0d, 0x18, 0x97, 0x4e, 0x3f, 0x28, 0x30, 0xf7, - 0xf9, 0x11, 0x38, 0x1b, 0x15, 0x73, 0x91, 0xe1, 0x3f, 0x0d, 0x23, 0x4e, 0xa7, 0x79, 0x80, 0xda, - 0x59, 0x9d, 0x30, 0xb0, 0x23, 0xb3, 0x00, 0xc3, 0x0d, 0xfb, 0x00, 0x35, 0xb2, 0xc9, 0xf3, 0xda, - 0xfc, 0xc4, 0xf2, 0xc7, 0x06, 0x8a, 0xea, 0xc5, 0x0d, 0x0c, 0xb1, 0x28, 0xd2, 0x7c, 0x16, 0x92, - 0xac, 0xc4, 0x61, 0x86, 0x85, 0xc1, 0x18, 0x70, 0x2c, 0x5a, 0x04, 0x67, 0x3e, 0x0a, 0x63, 0xf8, - 0x7f, 0x6a, 0xdb, 0x11, 0xa2, 0x73, 0x0a, 0x0f, 0x60, 0xbb, 0x9a, 0x33, 0x90, 0x22, 0x61, 0x56, - 0x43, 0x7c, 0x69, 0x08, 0x8e, 0xb1, 0x63, 0x6a, 0xe8, 0xd0, 0xee, 0x34, 0xfc, 0xca, 0x6b, 0x76, - 0xa3, 0x83, 0x48, 0xc0, 0x8c, 0x59, 0x19, 0x36, 0xf8, 0x69, 0x3c, 0x66, 0xce, 0x41, 0x9a, 0x46, - 0x65, 0xdd, 0xa9, 0xa1, 0x37, 0x48, 0xf5, 0x19, 0xb6, 0x68, 0xa0, 0xae, 0xe3, 0x11, 0x7c, 0xfa, - 0x57, 0x3c, 0xd7, 0xe1, 0xae, 0x25, 0xa7, 0xc0, 0x03, 0xe4, 0xf4, 0x37, 0xd4, 0xc2, 0xf7, 0x58, - 0xf4, 0xe5, 0xa9, 0xb1, 0x98, 0xfb, 0x56, 0x02, 0x92, 0x24, 0xdf, 0x26, 0x21, 0xbd, 0xf7, 0xd2, - 0x4e, 0xb9, 0xb2, 0xba, 0xbd, 0x5f, 0xdc, 0x28, 0x1b, 0x9a, 0x39, 0x01, 0x40, 0x06, 0xd6, 0x36, - 0xb6, 0x0b, 0x7b, 0x46, 0x22, 0x38, 0x5e, 0xdf, 0xda, 0xbb, 0xbe, 0x62, 0xe8, 0x01, 0x60, 0x9f, - 0x0e, 0x24, 0x45, 0x81, 0xab, 0xcb, 0xc6, 0xb0, 0x69, 0x40, 0x86, 0x12, 0xac, 0xbf, 0x58, 0x5e, - 0xbd, 0xbe, 0x62, 0x8c, 0xc8, 0x23, 0x57, 0x97, 0x8d, 0x51, 0x73, 0x1c, 0xc6, 0xc8, 0x48, 0x71, - 0x7b, 0x7b, 0xc3, 0x48, 0x05, 0x9c, 0xbb, 0x7b, 0xd6, 0xfa, 0xd6, 0x1d, 0x63, 0x2c, 0xe0, 0xbc, - 0x63, 0x6d, 0xef, 0xef, 0x18, 0x10, 0x30, 0x6c, 0x96, 0x77, 0x77, 0x0b, 0x77, 0xca, 0x46, 0x3a, - 0x90, 0x28, 0xbe, 0xb4, 0x57, 0xde, 0x35, 0x32, 0x92, 0x5a, 0x57, 0x97, 0x8d, 0xf1, 0xe0, 0x14, - 0xe5, 0xad, 0xfd, 0x4d, 0x63, 0xc2, 0x9c, 0x82, 0x71, 0x7a, 0x0a, 0xae, 0xc4, 0xa4, 0x32, 0x74, - 0x7d, 0xc5, 0x30, 0x42, 0x45, 0x28, 0xcb, 0x94, 0x34, 0x70, 0x7d, 0xc5, 0x30, 0x73, 0x25, 0x18, - 0x26, 0xd1, 0x65, 0x9a, 0x30, 0xb1, 0x51, 0x28, 0x96, 0x37, 0x2a, 0xdb, 0x3b, 0x7b, 0xeb, 0xdb, - 0x5b, 0x85, 0x0d, 0x43, 0x0b, 0xc7, 0xac, 0xf2, 0xa7, 0xf6, 0xd7, 0xad, 0xf2, 0xaa, 0x91, 0x10, - 0xc7, 0x76, 0xca, 0x85, 0xbd, 0xf2, 0xaa, 0xa1, 0xe7, 0xaa, 0x70, 0x36, 0xaa, 0xce, 0x44, 0x66, - 0x86, 0xe0, 0xe2, 0x44, 0x0f, 0x17, 0x13, 0xae, 0x2e, 0x17, 0xff, 0xba, 0x06, 0x67, 0x22, 0x6a, - 0x6d, 0xe4, 0x49, 0x9e, 0x83, 0x61, 0x1a, 0xa2, 0x74, 0xf5, 0x79, 0x2a, 0xb2, 0x68, 0x93, 0x80, - 0xed, 0x5a, 0x81, 0x08, 0x4e, 0x5c, 0x81, 0xf5, 0x1e, 0x2b, 0x30, 0xa6, 0xe8, 0x52, 0xf2, 0xb3, - 0x1a, 0x64, 0x7b, 0x71, 0xc7, 0x14, 0x8a, 0x84, 0x54, 0x28, 0x6e, 0xab, 0x0a, 0x5c, 0xe8, 0x7d, - 0x0d, 0x5d, 0x5a, 0x7c, 0x4d, 0x83, 0xe9, 0xe8, 0x46, 0x25, 0x52, 0x87, 0x67, 0x61, 0xa4, 0x89, - 0xfc, 0x63, 0x97, 0x2f, 0xd6, 0x97, 0x22, 0x96, 0x00, 0x3c, 0xad, 0xda, 0x8a, 0xa1, 0xc4, 0x35, - 0x44, 0xef, 0xd5, 0x6d, 0x50, 0x6d, 0xba, 0x34, 0xfd, 0xa5, 0x04, 0x3c, 0x14, 0x49, 0x1e, 0xa9, - 0xe8, 0x63, 0x00, 0x75, 0xa7, 0xd5, 0xf1, 0xe9, 0x82, 0x4c, 0xeb, 0xd3, 0x18, 0x19, 0x21, 0xb9, - 0x8f, 0x6b, 0x4f, 0xc7, 0x0f, 0xe6, 0x75, 0x32, 0x0f, 0x74, 0x88, 0x08, 0xdc, 0x0c, 0x15, 0x4d, - 0x12, 0x45, 0x67, 0x7b, 0x5c, 0x69, 0xd7, 0x5a, 0xb7, 0x04, 0x46, 0xb5, 0x51, 0x47, 0x8e, 0x5f, - 0xf1, 0xfc, 0x36, 0xb2, 0x9b, 0x75, 0xe7, 0x88, 0x14, 0xe0, 0x54, 0x7e, 0xf8, 0xd0, 0x6e, 0x78, - 0xc8, 0x9a, 0xa4, 0xd3, 0xbb, 0x7c, 0x16, 0x23, 0xc8, 0x2a, 0xd3, 0x16, 0x10, 0x23, 0x12, 0x82, - 0x4e, 0x07, 0x88, 0xdc, 0x2f, 0x8f, 0x42, 0x5a, 0x68, 0xeb, 0xcc, 0x0b, 0x90, 0x79, 0xc5, 0x7e, - 0xcd, 0xae, 0xf0, 0x56, 0x9d, 0x5a, 0x22, 0x8d, 0xc7, 0x76, 0x58, 0xbb, 0xbe, 0x04, 0x67, 0x89, - 0x88, 0xdb, 0xf1, 0x51, 0xbb, 0x52, 0x6d, 0xd8, 0x9e, 0x47, 0x8c, 0x96, 0x22, 0xa2, 0x26, 0x9e, - 0xdb, 0xc6, 0x53, 0x25, 0x3e, 0x63, 0x5e, 0x83, 0x33, 0x04, 0xd1, 0xec, 0x34, 0xfc, 0x7a, 0xab, - 0x81, 0x2a, 0xf8, 0xe6, 0xc1, 0x23, 0x85, 0x38, 0xd0, 0x6c, 0x0a, 0x4b, 0x6c, 0x32, 0x01, 0xac, - 0x91, 0x67, 0xde, 0x81, 0xc7, 0x08, 0xec, 0x08, 0x39, 0xa8, 0x6d, 0xfb, 0xa8, 0x82, 0xfe, 0x72, - 0xc7, 0x6e, 0x78, 0x15, 0xdb, 0xa9, 0x55, 0x8e, 0x6d, 0xef, 0x38, 0x7b, 0x56, 0x24, 0x78, 0x04, - 0xcb, 0xde, 0x61, 0xa2, 0x65, 0x22, 0x59, 0x70, 0x6a, 0xcf, 0xdb, 0xde, 0xb1, 0x99, 0x87, 0x69, - 0x42, 0xe4, 0xf9, 0xed, 0xba, 0x73, 0x54, 0xa9, 0x1e, 0xa3, 0xea, 0xab, 0x95, 0x8e, 0x7f, 0x78, - 0x33, 0xfb, 0xa8, 0xc8, 0x40, 0x94, 0xdc, 0x25, 0x32, 0x25, 0x2c, 0xb2, 0xef, 0x1f, 0xde, 0x34, - 0x77, 0x21, 0x83, 0xfd, 0xd1, 0xac, 0x7f, 0x06, 0x55, 0x0e, 0xdd, 0x36, 0x59, 0x5c, 0x26, 0x22, - 0x92, 0x5b, 0x30, 0xe2, 0xe2, 0x36, 0x03, 0x6c, 0xba, 0x35, 0x94, 0x1f, 0xde, 0xdd, 0x29, 0x97, - 0x57, 0xad, 0x34, 0x67, 0x59, 0x73, 0xdb, 0x38, 0xa6, 0x8e, 0xdc, 0xc0, 0xc6, 0x69, 0x1a, 0x53, - 0x47, 0x2e, 0xb7, 0xf0, 0x35, 0x38, 0x53, 0xad, 0xd2, 0xcb, 0xae, 0x57, 0x2b, 0xac, 0xcb, 0xf7, - 0xb2, 0x86, 0x64, 0xaf, 0x6a, 0xf5, 0x0e, 0x15, 0x60, 0x61, 0xee, 0x99, 0xb7, 0xe0, 0xa1, 0xd0, - 0x5e, 0x22, 0x70, 0xaa, 0xeb, 0x2a, 0x55, 0xe8, 0x35, 0x38, 0xd3, 0x3a, 0xe9, 0x06, 0x9a, 0xd2, - 0x19, 0x5b, 0x27, 0x2a, 0xec, 0x09, 0x72, 0xe7, 0xd6, 0x46, 0x55, 0xdb, 0x47, 0xb5, 0xec, 0xc3, - 0xa2, 0xb4, 0x30, 0x61, 0x5e, 0x06, 0xa3, 0x5a, 0xad, 0x20, 0xc7, 0x3e, 0x68, 0xa0, 0x8a, 0xdd, - 0x46, 0x8e, 0xed, 0x65, 0xe7, 0x44, 0xe1, 0x89, 0x6a, 0xb5, 0x4c, 0x66, 0x0b, 0x64, 0xd2, 0x5c, - 0x80, 0x29, 0xf7, 0xe0, 0x95, 0x2a, 0x0d, 0xae, 0x4a, 0xab, 0x8d, 0x0e, 0xeb, 0x6f, 0x64, 0x2f, - 0x12, 0x33, 0x4d, 0xe2, 0x09, 0x12, 0x5a, 0x3b, 0x64, 0xd8, 0x7c, 0x0a, 0x8c, 0xaa, 0x77, 0x6c, - 0xb7, 0x5b, 0x64, 0x75, 0xf7, 0x5a, 0x76, 0x15, 0x65, 0x9f, 0xa0, 0xa2, 0x74, 0x7c, 0x8b, 0x0f, - 0x9b, 0x2f, 0xc2, 0xd9, 0x8e, 0x53, 0x77, 0x7c, 0xd4, 0x6e, 0xb5, 0x11, 0x6e, 0xd2, 0x69, 0xa6, - 0x65, 0xff, 0xc7, 0x68, 0x8f, 0x36, 0x7b, 0x5f, 0x94, 0xa6, 0xde, 0xb5, 0xce, 0x74, 0xba, 0x07, - 0x73, 0x79, 0xc8, 0x88, 0x4e, 0x37, 0xc7, 0x80, 0xba, 0xdd, 0xd0, 0xf0, 0x1a, 0x5a, 0xda, 0x5e, - 0xc5, 0xab, 0xdf, 0xcf, 0x95, 0x8d, 0x04, 0x5e, 0x85, 0x37, 0xd6, 0xf7, 0xca, 0x15, 0x6b, 0x7f, - 0x6b, 0x6f, 0x7d, 0xb3, 0x6c, 0xe8, 0x0b, 0x63, 0xa9, 0xef, 0x8f, 0x1a, 0x6f, 0xbe, 0xf9, 0xe6, - 0x9b, 0x89, 0xdc, 0xb7, 0x13, 0x30, 0x21, 0x77, 0xbe, 0xe6, 0x27, 0xe0, 0x61, 0x7e, 0x9b, 0xea, - 0x21, 0xbf, 0xf2, 0x7a, 0xbd, 0x4d, 0xe2, 0xb0, 0x69, 0xd3, 0xde, 0x31, 0x30, 0xe1, 0x59, 0x26, - 0xb5, 0x8b, 0xfc, 0x17, 0xea, 0x6d, 0x1c, 0x65, 0x4d, 0xdb, 0x37, 0x37, 0x60, 0xce, 0x71, 0x2b, - 0x9e, 0x6f, 0x3b, 0x35, 0xbb, 0x5d, 0xab, 0x84, 0x1b, 0x04, 0x15, 0xbb, 0x5a, 0x45, 0x9e, 0xe7, - 0xd2, 0x25, 0x20, 0x60, 0x39, 0xe7, 0xb8, 0xbb, 0x4c, 0x38, 0xac, 0x8d, 0x05, 0x26, 0xaa, 0xb8, - 0x5b, 0xef, 0xe5, 0xee, 0x47, 0x61, 0xac, 0x69, 0xb7, 0x2a, 0xc8, 0xf1, 0xdb, 0x27, 0xa4, 0x5f, - 0x4b, 0x59, 0xa9, 0xa6, 0xdd, 0x2a, 0xe3, 0xe3, 0x0f, 0xcf, 0x07, 0xa2, 0x1d, 0xff, 0x9b, 0x0e, - 0x19, 0xb1, 0x67, 0xc3, 0x2d, 0x70, 0x95, 0xd4, 0x67, 0x8d, 0xa4, 0xef, 0xe3, 0x7d, 0x3b, 0xbc, - 0xc5, 0x12, 0x2e, 0xdc, 0xf9, 0x11, 0xda, 0x49, 0x59, 0x14, 0x89, 0x17, 0x4d, 0x9c, 0xb0, 0x88, - 0xf6, 0xe7, 0x29, 0x8b, 0x1d, 0x99, 0x77, 0x60, 0xe4, 0x15, 0x8f, 0x70, 0x8f, 0x10, 0xee, 0x8b, - 0xfd, 0xb9, 0xef, 0xee, 0x12, 0xf2, 0xb1, 0xbb, 0xbb, 0x95, 0xad, 0x6d, 0x6b, 0xb3, 0xb0, 0x61, - 0x31, 0xb8, 0xf9, 0x08, 0x24, 0x1b, 0xf6, 0x67, 0x4e, 0xe4, 0x12, 0x4f, 0x86, 0x06, 0x35, 0xfc, - 0x23, 0x90, 0x7c, 0x1d, 0xd9, 0xaf, 0xca, 0x85, 0x95, 0x0c, 0x7d, 0x88, 0xa1, 0x7f, 0x19, 0x86, - 0x89, 0xbd, 0x4c, 0x00, 0x66, 0x31, 0x63, 0xc8, 0x4c, 0x41, 0xb2, 0xb4, 0x6d, 0xe1, 0xf0, 0x37, - 0x20, 0x43, 0x47, 0x2b, 0x3b, 0xeb, 0xe5, 0x52, 0xd9, 0x48, 0xe4, 0xae, 0xc1, 0x08, 0x35, 0x02, - 0x4e, 0x8d, 0xc0, 0x0c, 0xc6, 0x10, 0x3b, 0x64, 0x1c, 0x1a, 0x9f, 0xdd, 0xdf, 0x2c, 0x96, 0x2d, - 0x23, 0x21, 0xba, 0xd7, 0x83, 0x8c, 0xd8, 0xae, 0xfd, 0x64, 0x62, 0xea, 0xf7, 0x34, 0x48, 0x0b, - 0xed, 0x17, 0x5e, 0xf8, 0xed, 0x46, 0xc3, 0x7d, 0xbd, 0x62, 0x37, 0xea, 0xb6, 0xc7, 0x82, 0x02, - 0xc8, 0x50, 0x01, 0x8f, 0x0c, 0xea, 0xb4, 0x9f, 0x88, 0xf2, 0x5f, 0xd6, 0xc0, 0x50, 0x5b, 0x37, - 0x45, 0x41, 0xed, 0xa7, 0xaa, 0xe0, 0x17, 0x35, 0x98, 0x90, 0xfb, 0x35, 0x45, 0xbd, 0x0b, 0x3f, - 0x55, 0xf5, 0x7e, 0x4d, 0x83, 0x71, 0xa9, 0x4b, 0xfb, 0x99, 0xd2, 0xee, 0x0b, 0x3a, 0x9c, 0x89, - 0xc0, 0x99, 0x05, 0xd6, 0xce, 0xd2, 0x0e, 0xfb, 0xe9, 0x41, 0xce, 0xb5, 0x88, 0x57, 0xcb, 0x1d, - 0xbb, 0xed, 0xb3, 0xee, 0xf7, 0x29, 0x30, 0xea, 0x35, 0xe4, 0xf8, 0xf5, 0xc3, 0x3a, 0x6a, 0xb3, - 0x5b, 0x70, 0xda, 0xe3, 0x4e, 0x86, 0xe3, 0xf4, 0x2e, 0xfc, 0xe3, 0x60, 0xb6, 0x5c, 0xaf, 0xee, - 0xd7, 0x5f, 0x43, 0x95, 0xba, 0xc3, 0xef, 0xd7, 0x71, 0xcf, 0x9b, 0xb4, 0x0c, 0x3e, 0xb3, 0xee, - 0xf8, 0x81, 0xb4, 0x83, 0x8e, 0x6c, 0x45, 0x1a, 0xd7, 0x3e, 0xdd, 0x32, 0xf8, 0x4c, 0x20, 0x7d, - 0x01, 0x32, 0x35, 0xb7, 0x83, 0xdb, 0x07, 0x2a, 0x87, 0x4b, 0xad, 0x66, 0xa5, 0xe9, 0x58, 0x20, - 0xc2, 0xfa, 0xbb, 0x70, 0xa3, 0x20, 0x63, 0xa5, 0xe9, 0x18, 0x15, 0x79, 0x12, 0x26, 0xed, 0xa3, - 0xa3, 0x36, 0x26, 0xe7, 0x44, 0xb4, 0x69, 0x9d, 0x08, 0x86, 0x89, 0xe0, 0xcc, 0x5d, 0x48, 0x71, - 0x3b, 0xe0, 0xd5, 0x0c, 0x5b, 0xa2, 0xd2, 0xa2, 0xdb, 0x35, 0x89, 0xf9, 0x31, 0x2b, 0xe5, 0xf0, - 0xc9, 0x0b, 0x90, 0xa9, 0x7b, 0x95, 0x70, 0xdf, 0x30, 0x71, 0x3e, 0x31, 0x9f, 0xb2, 0xd2, 0x75, - 0x2f, 0xd8, 0x28, 0xca, 0x7d, 0x2d, 0x01, 0x13, 0xf2, 0xbe, 0xa7, 0xb9, 0x0a, 0xa9, 0x86, 0x5b, - 0xb5, 0x49, 0x20, 0xd0, 0x4d, 0xf7, 0xf9, 0x98, 0xad, 0xd2, 0xc5, 0x0d, 0x26, 0x6f, 0x05, 0xc8, - 0x99, 0xff, 0xa4, 0x41, 0x8a, 0x0f, 0x9b, 0xd3, 0x90, 0x6c, 0xd9, 0xfe, 0x31, 0xa1, 0x1b, 0x2e, - 0x26, 0x0c, 0xcd, 0x22, 0xc7, 0x78, 0xdc, 0x6b, 0xd9, 0x0e, 0x09, 0x01, 0x36, 0x8e, 0x8f, 0xb1, - 0x5f, 0x1b, 0xc8, 0xae, 0x91, 0x76, 0xd8, 0x6d, 0x36, 0x91, 0xe3, 0x7b, 0xdc, 0xaf, 0x6c, 0xbc, - 0xc4, 0x86, 0xcd, 0x8f, 0xc1, 0x94, 0xdf, 0xb6, 0xeb, 0x0d, 0x49, 0x36, 0x49, 0x64, 0x0d, 0x3e, - 0x11, 0x08, 0xe7, 0xe1, 0x11, 0xce, 0x5b, 0x43, 0xbe, 0x5d, 0x3d, 0x46, 0xb5, 0x10, 0x34, 0x42, - 0x36, 0xd5, 0x1e, 0x66, 0x02, 0xab, 0x6c, 0x9e, 0x63, 0x73, 0x7f, 0xa0, 0xc1, 0x14, 0x6f, 0xe0, - 0x6b, 0x81, 0xb1, 0x36, 0x01, 0x6c, 0xc7, 0x71, 0x7d, 0xd1, 0x5c, 0xdd, 0xa1, 0xdc, 0x85, 0x5b, - 0x2c, 0x04, 0x20, 0x4b, 0x20, 0x98, 0x69, 0x02, 0x84, 0x33, 0x3d, 0xcd, 0x36, 0x07, 0x69, 0xb6, - 0xa9, 0x4d, 0x9e, 0x8c, 0xd0, 0xbb, 0x3e, 0xa0, 0x43, 0xb8, 0xd3, 0x37, 0xcf, 0xc2, 0xf0, 0x01, - 0x3a, 0xaa, 0x3b, 0x6c, 0xab, 0x8d, 0x1e, 0xf0, 0x0d, 0xbc, 0x64, 0xb0, 0x81, 0x57, 0x7c, 0x19, - 0xce, 0x54, 0xdd, 0xa6, 0xaa, 0x6e, 0xd1, 0x50, 0xee, 0x3c, 0xbd, 0xe7, 0xb5, 0x9f, 0x83, 0xb0, - 0x3b, 0x7b, 0x4b, 0xd3, 0x7e, 0x3d, 0xa1, 0xdf, 0xd9, 0x29, 0xfe, 0x56, 0x62, 0xe6, 0x0e, 0x85, - 0xee, 0xf0, 0x2b, 0xb5, 0xd0, 0x61, 0x03, 0x55, 0xb1, 0xf6, 0xf0, 0xc7, 0x97, 0xe0, 0xe9, 0xa3, - 0xba, 0x7f, 0xdc, 0x39, 0x58, 0xac, 0xba, 0xcd, 0xcb, 0x47, 0xee, 0x91, 0x1b, 0x3e, 0x0c, 0xc2, - 0x47, 0xe4, 0x80, 0x7c, 0x62, 0x0f, 0x84, 0xc6, 0x82, 0xd1, 0x99, 0xd8, 0xa7, 0x47, 0xf9, 0x2d, - 0x38, 0xc3, 0x84, 0x2b, 0x64, 0x47, 0x9a, 0xf6, 0xe1, 0x66, 0xdf, 0x5d, 0x89, 0xec, 0x6f, 0x7f, - 0x8f, 0xac, 0x74, 0xd6, 0x14, 0x83, 0xe2, 0x39, 0xda, 0xa9, 0xe7, 0x2d, 0x78, 0x48, 0xe2, 0xa3, - 0xa9, 0x89, 0xda, 0x31, 0x8c, 0xdf, 0x66, 0x8c, 0x67, 0x04, 0xc6, 0x5d, 0x06, 0xcd, 0x97, 0x60, - 0xfc, 0x34, 0x5c, 0xff, 0x9e, 0x71, 0x65, 0x90, 0x48, 0x72, 0x07, 0x26, 0x09, 0x49, 0xb5, 0xe3, - 0xf9, 0x6e, 0x93, 0xd4, 0xbd, 0xfe, 0x34, 0xff, 0xe1, 0x7b, 0x34, 0x57, 0x26, 0x30, 0xac, 0x14, - 0xa0, 0xf2, 0x79, 0x20, 0x9b, 0xf0, 0x35, 0x54, 0x6d, 0xc4, 0x30, 0xdc, 0x63, 0x8a, 0x04, 0xf2, - 0xf9, 0x4f, 0xc3, 0x59, 0xfc, 0x99, 0x94, 0x25, 0x51, 0x93, 0xf8, 0x3d, 0x98, 0xec, 0x1f, 0x7c, - 0x96, 0xa6, 0xe3, 0x99, 0x80, 0x40, 0xd0, 0x49, 0xf0, 0xe2, 0x11, 0xf2, 0x7d, 0xd4, 0xf6, 0x2a, - 0x76, 0x23, 0x4a, 0x3d, 0xe1, 0x0e, 0x36, 0xfb, 0xab, 0x3f, 0x90, 0xbd, 0x78, 0x87, 0x22, 0x0b, - 0x8d, 0x46, 0x7e, 0x1f, 0x1e, 0x8e, 0x88, 0x8a, 0x01, 0x38, 0xbf, 0xc0, 0x38, 0xcf, 0x76, 0x45, - 0x06, 0xa6, 0xdd, 0x01, 0x3e, 0x1e, 0xf8, 0x72, 0x00, 0xce, 0x5f, 0x63, 0x9c, 0x26, 0xc3, 0x72, - 0x97, 0x62, 0xc6, 0xbb, 0x30, 0xf5, 0x1a, 0x6a, 0x1f, 0xb8, 0x1e, 0xdb, 0x38, 0x18, 0x80, 0xee, - 0x8b, 0x8c, 0x6e, 0x92, 0x01, 0xc9, 0x36, 0x02, 0xe6, 0xba, 0x05, 0xa9, 0x43, 0xbb, 0x8a, 0x06, - 0xa0, 0xf8, 0x12, 0xa3, 0x18, 0xc5, 0xf2, 0x18, 0x5a, 0x80, 0xcc, 0x91, 0xcb, 0x56, 0xa6, 0x78, - 0xf8, 0x97, 0x19, 0x3c, 0xcd, 0x31, 0x8c, 0xa2, 0xe5, 0xb6, 0x3a, 0x0d, 0xbc, 0x6c, 0xc5, 0x53, - 0x7c, 0x85, 0x53, 0x70, 0x0c, 0xa3, 0x38, 0x85, 0x59, 0xdf, 0xe2, 0x14, 0x9e, 0x60, 0xcf, 0xe7, - 0x20, 0xed, 0x3a, 0x8d, 0x13, 0xd7, 0x19, 0x44, 0x89, 0xaf, 0x32, 0x06, 0x60, 0x10, 0x4c, 0x70, - 0x1b, 0xc6, 0x06, 0x75, 0xc4, 0x6f, 0xfc, 0x80, 0xa7, 0x07, 0xf7, 0xc0, 0x1d, 0x98, 0xe4, 0x05, - 0xaa, 0xee, 0x3a, 0x03, 0x50, 0xfc, 0x63, 0x46, 0x31, 0x21, 0xc0, 0xd8, 0x65, 0xf8, 0xc8, 0xf3, - 0x8f, 0xd0, 0x20, 0x24, 0x5f, 0xe3, 0x97, 0xc1, 0x20, 0xcc, 0x94, 0x07, 0xc8, 0xa9, 0x1e, 0x0f, - 0xc6, 0xf0, 0x75, 0x6e, 0x4a, 0x8e, 0xc1, 0x14, 0x25, 0x18, 0x6f, 0xda, 0x6d, 0xef, 0xd8, 0x6e, - 0x0c, 0xe4, 0x8e, 0xdf, 0x64, 0x1c, 0x99, 0x00, 0xc4, 0x2c, 0xd2, 0x71, 0x4e, 0x43, 0xf3, 0x5b, - 0xdc, 0x22, 0x02, 0x8c, 0xa5, 0x9e, 0xe7, 0x93, 0xbd, 0x99, 0xd3, 0xb0, 0xfd, 0x13, 0x9e, 0x7a, - 0x14, 0xbb, 0x29, 0x32, 0xde, 0x86, 0x31, 0xaf, 0xfe, 0x99, 0x81, 0x68, 0xfe, 0x29, 0xf7, 0x34, - 0x01, 0x60, 0xf0, 0x4b, 0xf0, 0x48, 0xe4, 0x32, 0x31, 0x00, 0xd9, 0x3f, 0x63, 0x64, 0xd3, 0x11, - 0x4b, 0x05, 0x2b, 0x09, 0xa7, 0xa5, 0xfc, 0xe7, 0xbc, 0x24, 0x20, 0x85, 0x6b, 0x07, 0x77, 0xf6, - 0x9e, 0x7d, 0x78, 0x3a, 0xab, 0xfd, 0x0b, 0x6e, 0x35, 0x8a, 0x95, 0xac, 0xb6, 0x07, 0xd3, 0x8c, - 0xf1, 0x74, 0x7e, 0xfd, 0x06, 0x2f, 0xac, 0x14, 0xbd, 0x2f, 0x7b, 0xf7, 0x65, 0x98, 0x09, 0xcc, - 0xc9, 0x9b, 0x52, 0xaf, 0xd2, 0xb4, 0x5b, 0x03, 0x30, 0xff, 0x36, 0x63, 0xe6, 0x15, 0x3f, 0xe8, - 0x6a, 0xbd, 0x4d, 0xbb, 0x85, 0xc9, 0x5f, 0x84, 0x2c, 0x27, 0xef, 0x38, 0x6d, 0x54, 0x75, 0x8f, - 0x9c, 0xfa, 0x67, 0x50, 0x6d, 0x00, 0xea, 0x6f, 0x2a, 0xae, 0xda, 0x17, 0xe0, 0x98, 0x79, 0x1d, - 0x8c, 0xa0, 0x57, 0xa9, 0xd4, 0x9b, 0x2d, 0xb7, 0xed, 0xc7, 0x30, 0xfe, 0x4b, 0xee, 0xa9, 0x00, - 0xb7, 0x4e, 0x60, 0xf9, 0x32, 0x4c, 0x90, 0xc3, 0x41, 0x43, 0xf2, 0x77, 0x18, 0xd1, 0x78, 0x88, - 0x62, 0x85, 0xa3, 0xea, 0x36, 0x5b, 0x76, 0x7b, 0x90, 0xfa, 0xf7, 0xaf, 0x78, 0xe1, 0x60, 0x10, - 0x56, 0x38, 0xfc, 0x93, 0x16, 0xc2, 0xab, 0xfd, 0x00, 0x0c, 0xdf, 0xe2, 0x85, 0x83, 0x63, 0x18, - 0x05, 0x6f, 0x18, 0x06, 0xa0, 0xf8, 0xd7, 0x9c, 0x82, 0x63, 0x30, 0xc5, 0xa7, 0xc2, 0x85, 0xb6, - 0x8d, 0x8e, 0xea, 0x9e, 0xdf, 0xa6, 0xad, 0x70, 0x7f, 0xaa, 0xdf, 0xfd, 0x81, 0xdc, 0x84, 0x59, - 0x02, 0x34, 0x7f, 0x17, 0x26, 0x95, 0x16, 0xc3, 0x8c, 0x7b, 0xa2, 0x9f, 0xfd, 0xf9, 0x1f, 0xb1, - 0x62, 0x24, 0x77, 0x18, 0xf9, 0x0d, 0xec, 0x77, 0xb9, 0x0f, 0x88, 0x27, 0xfb, 0xec, 0x8f, 0x02, - 0xd7, 0x4b, 0x6d, 0x40, 0x7e, 0x0d, 0xc6, 0xa5, 0x1e, 0x20, 0x9e, 0xea, 0xaf, 0x32, 0xaa, 0x8c, - 0xd8, 0x02, 0xe4, 0xaf, 0x41, 0x12, 0xaf, 0xe7, 0xf1, 0xf0, 0xbf, 0xc6, 0xe0, 0x44, 0x3c, 0xff, - 0x0c, 0xa4, 0xf8, 0x3a, 0x1e, 0x0f, 0xfd, 0x45, 0x06, 0x0d, 0x20, 0x18, 0xce, 0xd7, 0xf0, 0x78, - 0xf8, 0x5f, 0xe7, 0x70, 0x0e, 0xc1, 0xf0, 0xc1, 0x4d, 0xf8, 0xf6, 0x2f, 0x27, 0x59, 0x1d, 0xe6, - 0xb6, 0xbb, 0x0d, 0xa3, 0x6c, 0xf1, 0x8e, 0x47, 0xff, 0x12, 0x3b, 0x39, 0x47, 0xe4, 0x6f, 0xc0, - 0xf0, 0x80, 0x06, 0xff, 0x9b, 0x0c, 0x4a, 0xe5, 0xf3, 0x25, 0x48, 0x0b, 0x0b, 0x76, 0x3c, 0xfc, - 0x6f, 0x31, 0xb8, 0x88, 0xc2, 0xaa, 0xb3, 0x05, 0x3b, 0x9e, 0xe0, 0x6f, 0x73, 0xd5, 0x19, 0x02, - 0x9b, 0x8d, 0xaf, 0xd5, 0xf1, 0xe8, 0xbf, 0xc3, 0xad, 0xce, 0x21, 0xf9, 0xe7, 0x60, 0x2c, 0xa8, - 0xbf, 0xf1, 0xf8, 0xbf, 0xcb, 0xf0, 0x21, 0x06, 0x5b, 0x40, 0xa8, 0xff, 0xf1, 0x14, 0x7f, 0x8f, - 0x5b, 0x40, 0x40, 0xe1, 0x34, 0x52, 0xd7, 0xf4, 0x78, 0xa6, 0x5f, 0xe1, 0x69, 0xa4, 0x2c, 0xe9, - 0xd8, 0x9b, 0xa4, 0x0c, 0xc6, 0x53, 0xfc, 0x7d, 0xee, 0x4d, 0x22, 0x8f, 0xd5, 0x50, 0x17, 0xc9, - 0x78, 0x8e, 0x7f, 0xc8, 0xd5, 0x50, 0xd6, 0xc8, 0xfc, 0x0e, 0x98, 0xdd, 0x0b, 0x64, 0x3c, 0xdf, - 0xe7, 0x19, 0xdf, 0x54, 0xd7, 0xfa, 0x98, 0x7f, 0x01, 0xa6, 0xa3, 0x17, 0xc7, 0x78, 0xd6, 0x5f, - 0xfd, 0x91, 0x72, 0x3b, 0x23, 0xae, 0x8d, 0xf9, 0xbd, 0xb0, 0xca, 0x8a, 0x0b, 0x63, 0x3c, 0xed, - 0x17, 0x7e, 0x24, 0x17, 0x5a, 0x71, 0x5d, 0xcc, 0x17, 0x00, 0xc2, 0x35, 0x29, 0x9e, 0xeb, 0x8b, - 0x8c, 0x4b, 0x00, 0xe1, 0xd4, 0x60, 0x4b, 0x52, 0x3c, 0xfe, 0x4b, 0x3c, 0x35, 0x18, 0x02, 0xa7, - 0x06, 0x5f, 0x8d, 0xe2, 0xd1, 0x5f, 0xe6, 0xa9, 0xc1, 0x21, 0xf9, 0xdb, 0x90, 0x72, 0x3a, 0x8d, - 0x06, 0x8e, 0x2d, 0xb3, 0xff, 0x4b, 0x36, 0xd9, 0xff, 0xf9, 0x63, 0x06, 0xe6, 0x80, 0xfc, 0x35, - 0x18, 0x46, 0xcd, 0x03, 0x54, 0x8b, 0x43, 0xfe, 0xaf, 0x1f, 0xf3, 0x7a, 0x82, 0xa5, 0xf3, 0xcf, - 0x01, 0xd0, 0x9b, 0x69, 0xf2, 0x8c, 0x25, 0x06, 0xfb, 0xbf, 0x7f, 0xcc, 0x9e, 0xdf, 0x87, 0x90, - 0x90, 0x80, 0xbe, 0x0d, 0xd0, 0x9f, 0xe0, 0x07, 0x32, 0x01, 0xb9, 0x01, 0xbf, 0x05, 0xa3, 0xaf, - 0x78, 0xae, 0xe3, 0xdb, 0x47, 0x71, 0xe8, 0xff, 0xc3, 0xd0, 0x5c, 0x1e, 0x1b, 0xac, 0xe9, 0xb6, - 0x91, 0x6f, 0x1f, 0x79, 0x71, 0xd8, 0xff, 0xcb, 0xb0, 0x01, 0x00, 0x83, 0xab, 0xb6, 0xe7, 0x0f, - 0x72, 0xdd, 0xff, 0x8f, 0x83, 0x39, 0x00, 0x2b, 0x8d, 0x3f, 0xbf, 0x8a, 0x4e, 0xe2, 0xb0, 0x3f, - 0xe4, 0x4a, 0x33, 0xf9, 0xfc, 0x33, 0x30, 0x86, 0x3f, 0xd2, 0x77, 0x5a, 0x62, 0xc0, 0x7f, 0xc4, - 0xc0, 0x21, 0x02, 0x9f, 0xd9, 0xf3, 0x6b, 0x7e, 0x3d, 0xde, 0xd8, 0xff, 0x9f, 0x79, 0x9a, 0xcb, - 0xe7, 0x0b, 0x90, 0xf6, 0xfc, 0x5a, 0xad, 0xc3, 0x3a, 0x9a, 0x18, 0xf8, 0x1f, 0xff, 0x38, 0xb8, - 0xc9, 0x0d, 0x30, 0xc5, 0x0b, 0xd1, 0xfb, 0x75, 0x70, 0xc7, 0xbd, 0xe3, 0xd2, 0x9d, 0x3a, 0xf8, - 0x5e, 0x03, 0x6e, 0xf4, 0xdc, 0x75, 0xc3, 0x8b, 0xc8, 0xe5, 0xaa, 0xdb, 0x3c, 0x70, 0xbd, 0xcb, - 0x07, 0xae, 0x7f, 0x7c, 0xd9, 0x3f, 0x46, 0x78, 0x8c, 0xed, 0xbf, 0x25, 0xf1, 0xe7, 0x99, 0xd3, - 0x6d, 0xda, 0x91, 0xa7, 0x99, 0x5b, 0x75, 0xac, 0xf7, 0x16, 0xd9, 0x15, 0x37, 0xcf, 0xc1, 0x08, - 0xb9, 0x92, 0x2b, 0xe4, 0xa1, 0x8d, 0x56, 0x4c, 0xde, 0x7b, 0x77, 0x6e, 0xc8, 0x62, 0x63, 0xc1, - 0xec, 0x32, 0xd9, 0xb6, 0x4c, 0x48, 0xb3, 0xcb, 0xc1, 0xec, 0x55, 0xba, 0x73, 0x29, 0xcd, 0x5e, - 0x0d, 0x66, 0x57, 0xc8, 0x1e, 0xa6, 0x2e, 0xcd, 0xae, 0x04, 0xb3, 0xd7, 0xc8, 0x3e, 0xfd, 0xb8, - 0x34, 0x7b, 0x2d, 0x98, 0xbd, 0x4e, 0x76, 0xe7, 0x93, 0xd2, 0xec, 0xf5, 0x60, 0xf6, 0x06, 0xd9, - 0x98, 0x9f, 0x92, 0x66, 0x6f, 0x04, 0xb3, 0x37, 0xc9, 0x86, 0xbc, 0x29, 0xcd, 0xde, 0x0c, 0x66, - 0x6f, 0x91, 0xb7, 0x2f, 0x46, 0xa5, 0xd9, 0x5b, 0xe6, 0x2c, 0x8c, 0xd2, 0x2b, 0x5f, 0x22, 0x0f, - 0x3e, 0x27, 0xd9, 0x34, 0x1f, 0x0c, 0xe7, 0xaf, 0x90, 0x37, 0x2d, 0x46, 0xe4, 0xf9, 0x2b, 0xe1, - 0xfc, 0x32, 0x79, 0xed, 0xd8, 0x90, 0xe7, 0x97, 0xc3, 0xf9, 0xab, 0xd9, 0x71, 0x1c, 0x30, 0xf2, - 0xfc, 0xd5, 0x70, 0x7e, 0x25, 0x3b, 0x81, 0x83, 0x59, 0x9e, 0x5f, 0x09, 0xe7, 0xaf, 0x65, 0x27, - 0xcf, 0x6b, 0xf3, 0x19, 0x79, 0xfe, 0x5a, 0xee, 0x17, 0x88, 0x7b, 0x9d, 0xd0, 0xbd, 0xd3, 0xb2, - 0x7b, 0x03, 0xc7, 0x4e, 0xcb, 0x8e, 0x0d, 0x5c, 0x3a, 0x2d, 0xbb, 0x34, 0x70, 0xe6, 0xb4, 0xec, - 0xcc, 0xc0, 0x8d, 0xd3, 0xb2, 0x1b, 0x03, 0x07, 0x4e, 0xcb, 0x0e, 0x0c, 0x5c, 0x37, 0x2d, 0xbb, - 0x2e, 0x70, 0xda, 0xb4, 0xec, 0xb4, 0xc0, 0x5d, 0xd3, 0xb2, 0xbb, 0x02, 0x47, 0x65, 0x15, 0x47, - 0x85, 0x2e, 0xca, 0x2a, 0x2e, 0x0a, 0x9d, 0x93, 0x55, 0x9c, 0x13, 0xba, 0x25, 0xab, 0xb8, 0x25, - 0x74, 0x48, 0x56, 0x71, 0x48, 0xe8, 0x8a, 0xac, 0xe2, 0x8a, 0xd0, 0x09, 0x2c, 0xc7, 0x2c, 0xd4, - 0x8a, 0xc8, 0x31, 0xbd, 0x6f, 0x8e, 0xe9, 0x7d, 0x73, 0x4c, 0xef, 0x9b, 0x63, 0x7a, 0xdf, 0x1c, - 0xd3, 0xfb, 0xe6, 0x98, 0xde, 0x37, 0xc7, 0xf4, 0xbe, 0x39, 0xa6, 0xf7, 0xcd, 0x31, 0xbd, 0x7f, - 0x8e, 0xe9, 0x31, 0x39, 0xa6, 0xc7, 0xe4, 0x98, 0x1e, 0x93, 0x63, 0x7a, 0x4c, 0x8e, 0xe9, 0x31, - 0x39, 0xa6, 0xf7, 0xcc, 0xb1, 0xd0, 0xbd, 0xd3, 0xb2, 0x7b, 0x23, 0x73, 0x4c, 0xef, 0x91, 0x63, - 0x7a, 0x8f, 0x1c, 0xd3, 0x7b, 0xe4, 0x98, 0xde, 0x23, 0xc7, 0xf4, 0x1e, 0x39, 0xa6, 0xf7, 0xc8, - 0x31, 0xbd, 0x47, 0x8e, 0xe9, 0xbd, 0x72, 0x4c, 0xef, 0x99, 0x63, 0x7a, 0xcf, 0x1c, 0xd3, 0x7b, - 0xe6, 0x98, 0xde, 0x33, 0xc7, 0xf4, 0x9e, 0x39, 0xa6, 0x8b, 0x39, 0xf6, 0x6f, 0x74, 0x30, 0x69, - 0x8e, 0xed, 0x90, 0x57, 0x67, 0x98, 0x2b, 0x66, 0x95, 0x4c, 0x1b, 0xc1, 0xae, 0x33, 0x42, 0x97, - 0xcc, 0x2a, 0xb9, 0x26, 0xcf, 0x2f, 0x07, 0xf3, 0x3c, 0xdb, 0xe4, 0xf9, 0xab, 0xc1, 0x3c, 0xcf, - 0x37, 0x79, 0x7e, 0x25, 0x98, 0xe7, 0x19, 0x27, 0xcf, 0x5f, 0x0b, 0xe6, 0x79, 0xce, 0xc9, 0xf3, - 0xd7, 0x83, 0x79, 0x9e, 0x75, 0xf2, 0xfc, 0x8d, 0x60, 0x9e, 0xe7, 0x9d, 0x3c, 0x7f, 0x33, 0x98, - 0xe7, 0x99, 0x27, 0xcf, 0xdf, 0x32, 0xcf, 0xab, 0xb9, 0xc7, 0x05, 0x02, 0xd7, 0x9e, 0x57, 0xb3, - 0x4f, 0x91, 0xb8, 0x12, 0x4a, 0xf0, 0xfc, 0x53, 0x24, 0x96, 0x43, 0x09, 0x9e, 0x81, 0x8a, 0xc4, - 0xd5, 0xdc, 0xe7, 0x88, 0xfb, 0x1c, 0xd5, 0x7d, 0x33, 0x8a, 0xfb, 0x12, 0x82, 0xeb, 0x66, 0x14, - 0xd7, 0x25, 0x04, 0xb7, 0xcd, 0x28, 0x6e, 0x4b, 0x08, 0x2e, 0x9b, 0x51, 0x5c, 0x96, 0x10, 0xdc, - 0x35, 0xa3, 0xb8, 0x2b, 0x21, 0xb8, 0x6a, 0x46, 0x71, 0x55, 0x42, 0x70, 0xd3, 0x8c, 0xe2, 0xa6, - 0x84, 0xe0, 0xa2, 0x19, 0xc5, 0x45, 0x09, 0xc1, 0x3d, 0x33, 0x8a, 0x7b, 0x12, 0x82, 0x6b, 0xce, - 0xa9, 0xae, 0x49, 0x88, 0x6e, 0x39, 0xa7, 0xba, 0x25, 0x21, 0xba, 0xe4, 0x9c, 0xea, 0x92, 0x84, - 0xe8, 0x8e, 0x73, 0xaa, 0x3b, 0x12, 0xa2, 0x2b, 0xfe, 0x2c, 0xc1, 0x3b, 0xc2, 0x5d, 0xbf, 0xdd, - 0xa9, 0xfa, 0xef, 0xab, 0x23, 0x5c, 0x92, 0xda, 0x87, 0xf4, 0xb2, 0xb9, 0x48, 0x1a, 0x56, 0xb1, - 0xe3, 0x54, 0x56, 0xb0, 0x25, 0xa9, 0xb1, 0x10, 0x10, 0x4e, 0x34, 0x62, 0xe5, 0x7d, 0xf5, 0x86, - 0x4b, 0x52, 0x9b, 0x11, 0xaf, 0xdf, 0xcd, 0x0f, 0xbd, 0x63, 0x7b, 0x3b, 0xc1, 0x3b, 0x36, 0x66, - 0xfe, 0xd3, 0x76, 0x6c, 0x0b, 0xf1, 0x26, 0x0f, 0x8c, 0xbd, 0x10, 0x6f, 0xec, 0xae, 0x55, 0x67, - 0xd0, 0x0e, 0x6e, 0x21, 0xde, 0xb4, 0x81, 0x51, 0x3f, 0xd8, 0x7e, 0x8b, 0x45, 0xb0, 0x85, 0x5a, - 0x11, 0x11, 0x7c, 0xda, 0x7e, 0x6b, 0x49, 0x2a, 0x25, 0xa7, 0x8d, 0x60, 0xfd, 0xd4, 0x11, 0x7c, - 0xda, 0xce, 0x6b, 0x49, 0x2a, 0x2f, 0xa7, 0x8e, 0xe0, 0x0f, 0xa1, 0x1f, 0x62, 0x11, 0x1c, 0x9a, - 0xff, 0xb4, 0xfd, 0xd0, 0x42, 0xbc, 0xc9, 0x23, 0x23, 0x58, 0x3f, 0x45, 0x04, 0x0f, 0xd2, 0x1f, - 0x2d, 0xc4, 0x9b, 0x36, 0x3a, 0x82, 0xdf, 0x77, 0x37, 0xf3, 0x15, 0x0d, 0xa6, 0xb6, 0xea, 0xb5, - 0x72, 0xf3, 0x00, 0xd5, 0x6a, 0xa8, 0xc6, 0xec, 0xb8, 0x24, 0x55, 0x82, 0x1e, 0xae, 0x7e, 0xe7, - 0xdd, 0xb9, 0xd0, 0xc2, 0xd7, 0x20, 0x45, 0x6d, 0xba, 0xb4, 0x94, 0xbd, 0xa7, 0xc5, 0x54, 0xb8, - 0x40, 0xd4, 0xbc, 0xc0, 0x61, 0x57, 0x96, 0xb2, 0xff, 0x59, 0x13, 0xaa, 0x5c, 0x30, 0x9c, 0xfb, - 0x15, 0xa2, 0xa1, 0xf3, 0xbe, 0x35, 0xbc, 0x3c, 0x90, 0x86, 0x82, 0x6e, 0x8f, 0x76, 0xe9, 0x26, - 0x68, 0xd5, 0x81, 0xc9, 0xad, 0x7a, 0x6d, 0x8b, 0x7c, 0xe1, 0x75, 0x10, 0x95, 0xa8, 0x8c, 0x52, - 0x0f, 0x96, 0xa4, 0xb0, 0x14, 0x11, 0x41, 0x48, 0xcb, 0x35, 0x22, 0x57, 0xc7, 0xa7, 0x75, 0xa4, - 0xd3, 0x2e, 0xf4, 0x3a, 0x6d, 0x58, 0xd9, 0x83, 0x13, 0x2e, 0xf4, 0x3a, 0x61, 0x98, 0x43, 0xc1, - 0xa9, 0xde, 0xe0, 0x8b, 0x33, 0x7d, 0x0b, 0xc7, 0x3c, 0x07, 0x89, 0x75, 0xfa, 0x7e, 0x6d, 0xa6, - 0x98, 0xc1, 0x4a, 0x7d, 0xe7, 0xdd, 0xb9, 0xe4, 0x7e, 0xa7, 0x5e, 0xb3, 0x12, 0xeb, 0x35, 0xf3, - 0x2e, 0x0c, 0x7f, 0x9a, 0x7d, 0x6d, 0x0c, 0x0b, 0xac, 0x30, 0x81, 0x8f, 0xc7, 0x6c, 0x31, 0x11, - 0xea, 0xc5, 0xfd, 0xba, 0xe3, 0x5f, 0x59, 0xbe, 0x69, 0x51, 0x8a, 0xdc, 0x5f, 0x04, 0xa0, 0xe7, - 0x5c, 0xb5, 0xbd, 0x63, 0x73, 0x8b, 0x33, 0xd3, 0x53, 0xdf, 0xfc, 0xce, 0xbb, 0x73, 0x2b, 0x83, - 0xb0, 0x3e, 0x5d, 0xb3, 0xbd, 0xe3, 0xa7, 0xfd, 0x93, 0x16, 0x5a, 0x2c, 0x9e, 0xf8, 0xc8, 0xe3, - 0xec, 0x2d, 0xbe, 0xea, 0xb1, 0xeb, 0xca, 0x0a, 0xd7, 0x95, 0x92, 0xae, 0x69, 0x4d, 0xbe, 0xa6, - 0xa5, 0x07, 0xbd, 0x9e, 0x37, 0xf8, 0x22, 0xa1, 0x58, 0x52, 0x8f, 0xb3, 0xa4, 0xfe, 0x7e, 0x2d, - 0xd9, 0xe2, 0xf5, 0x51, 0xb9, 0x56, 0xbd, 0xdf, 0xb5, 0xea, 0xef, 0xe7, 0x5a, 0xff, 0x84, 0x66, - 0x6b, 0x90, 0x4f, 0xfb, 0x0e, 0x7d, 0x41, 0xf1, 0x67, 0x6b, 0x2f, 0xe8, 0x03, 0xed, 0x02, 0xf2, - 0xc9, 0x7b, 0x6f, 0xcd, 0x69, 0xb9, 0xaf, 0x24, 0xf8, 0x95, 0xd3, 0x44, 0x7a, 0xb0, 0x2b, 0xff, - 0x59, 0xe9, 0xa9, 0x3e, 0x0c, 0x0b, 0x7d, 0x59, 0x83, 0xe9, 0xae, 0x4a, 0x4e, 0xcd, 0xf4, 0xc1, - 0x96, 0x73, 0xe7, 0xb4, 0xe5, 0x9c, 0x29, 0xf8, 0x3b, 0x1a, 0x9c, 0x55, 0xca, 0x2b, 0x55, 0xef, - 0xb2, 0xa2, 0xde, 0xc3, 0xdd, 0x67, 0x22, 0x82, 0x82, 0x76, 0xa2, 0x7b, 0x15, 0x80, 0xc0, 0x1c, - 0xf8, 0x7d, 0x45, 0xf1, 0xfb, 0xb9, 0x00, 0x10, 0x61, 0x2e, 0x1e, 0x01, 0x4c, 0x6d, 0x17, 0x92, - 0x7b, 0x6d, 0x84, 0xcc, 0x59, 0x48, 0x6c, 0xb7, 0x99, 0x86, 0x13, 0x14, 0xbf, 0xdd, 0x2e, 0xb6, - 0x6d, 0xa7, 0x7a, 0x6c, 0x25, 0xb6, 0xdb, 0xe6, 0x05, 0xd0, 0x0b, 0xec, 0x8b, 0xf9, 0xe9, 0xe5, - 0x49, 0x2a, 0x50, 0x70, 0x6a, 0x4c, 0x02, 0xcf, 0x99, 0xb3, 0x90, 0xdc, 0x40, 0xf6, 0x21, 0x53, - 0x02, 0xa8, 0x0c, 0x1e, 0xb1, 0xc8, 0x38, 0x3b, 0xe1, 0x8b, 0x90, 0xe2, 0xc4, 0xe6, 0x45, 0x8c, - 0x38, 0xf4, 0xd9, 0x69, 0x19, 0x02, 0xab, 0xc3, 0x56, 0x2e, 0x32, 0x6b, 0x5e, 0x82, 0x61, 0xab, - 0x7e, 0x74, 0xec, 0xb3, 0x93, 0x77, 0x8b, 0xd1, 0xe9, 0xdc, 0x4b, 0x30, 0x16, 0x68, 0xf4, 0x01, - 0x53, 0xaf, 0xd2, 0x4b, 0x33, 0x67, 0xc4, 0xf5, 0x84, 0xef, 0x5b, 0xd2, 0x21, 0xf3, 0x3c, 0xa4, - 0x76, 0xfd, 0x76, 0x58, 0xf4, 0x79, 0x47, 0x1a, 0x8c, 0xe6, 0x7e, 0x41, 0x83, 0xd4, 0x2a, 0x42, - 0x2d, 0x62, 0xf0, 0x27, 0x20, 0xb9, 0xea, 0xbe, 0xee, 0x30, 0x05, 0xa7, 0x98, 0x45, 0xf1, 0x34, - 0xb3, 0x29, 0x99, 0x36, 0x9f, 0x10, 0xed, 0x7e, 0x26, 0xb0, 0xbb, 0x20, 0x47, 0x6c, 0x9f, 0x93, - 0x6c, 0xcf, 0x1c, 0x88, 0x85, 0xba, 0xec, 0x7f, 0x03, 0xd2, 0xc2, 0x59, 0xcc, 0x79, 0xa6, 0x46, - 0x42, 0x05, 0x8a, 0xb6, 0xc2, 0x12, 0x39, 0x04, 0xe3, 0xd2, 0x89, 0x31, 0x54, 0x30, 0x71, 0x0f, - 0x28, 0x31, 0xf3, 0x82, 0x6c, 0xe6, 0x68, 0x51, 0x66, 0xea, 0x25, 0x6a, 0x23, 0x62, 0xee, 0x8b, - 0x34, 0x38, 0x7b, 0x3b, 0x11, 0x7f, 0xce, 0x0d, 0x83, 0xbe, 0x55, 0x6f, 0xe4, 0x9e, 0x01, 0xa0, - 0x29, 0x5f, 0x76, 0x3a, 0x4d, 0x25, 0xeb, 0x26, 0xb8, 0x81, 0xf7, 0x8e, 0xd1, 0x1e, 0xf2, 0x88, - 0x88, 0xdc, 0x4f, 0xe1, 0x02, 0x03, 0x34, 0xc5, 0x08, 0xfe, 0xa9, 0x58, 0x7c, 0x64, 0x27, 0x86, - 0x45, 0xb3, 0x54, 0xf4, 0x25, 0xe4, 0x17, 0x1c, 0xd7, 0x3f, 0x46, 0x6d, 0x05, 0xb1, 0x6c, 0x5e, - 0x95, 0x12, 0x76, 0x62, 0xf9, 0xd1, 0x00, 0xd1, 0x13, 0x74, 0x35, 0xf7, 0x0d, 0xa2, 0x20, 0x6e, - 0x05, 0xba, 0x2e, 0x50, 0x1f, 0xe0, 0x02, 0xcd, 0xeb, 0x52, 0xff, 0xd6, 0x47, 0x4d, 0xe5, 0xd6, - 0xf2, 0x96, 0x74, 0x9f, 0xd3, 0x5f, 0x59, 0xf9, 0x1e, 0x93, 0xdb, 0x94, 0xab, 0xfc, 0x54, 0xac, - 0xca, 0x3d, 0xba, 0xdb, 0xd3, 0xda, 0x54, 0x1f, 0xd4, 0xa6, 0xbf, 0x17, 0x74, 0x1c, 0xf4, 0x27, - 0x0e, 0xc8, 0x2f, 0x6a, 0x98, 0x1f, 0x8f, 0xf5, 0x7d, 0x5e, 0x2b, 0x05, 0xaa, 0xae, 0x0c, 0xea, - 0xfe, 0x7c, 0xa2, 0x58, 0x0c, 0xd4, 0xbd, 0x71, 0x8a, 0x10, 0xc8, 0x27, 0x4a, 0xa5, 0xa0, 0x6c, - 0xa7, 0x3e, 0xf7, 0xd6, 0x9c, 0xf6, 0xf5, 0xb7, 0xe6, 0x86, 0x72, 0xbf, 0xa9, 0xc1, 0x14, 0x93, - 0x14, 0x02, 0xf7, 0x69, 0x45, 0xf9, 0x87, 0x78, 0xcd, 0x88, 0xb2, 0xc0, 0x4f, 0x2c, 0x78, 0xbf, - 0xad, 0x41, 0xb6, 0x4b, 0x57, 0x6e, 0xef, 0xa5, 0x81, 0x54, 0xce, 0x6b, 0xe5, 0x9f, 0xbe, 0xcd, - 0x5f, 0x82, 0xe1, 0xbd, 0x7a, 0x13, 0xb5, 0xf1, 0x4a, 0x80, 0x3f, 0x50, 0x95, 0xf9, 0xc3, 0x1c, - 0x3a, 0xc4, 0xe7, 0xa8, 0x72, 0xd2, 0xdc, 0xb2, 0x99, 0x85, 0xe4, 0xaa, 0xed, 0xdb, 0x44, 0x83, - 0x4c, 0x50, 0x5f, 0x6d, 0xdf, 0xce, 0x5d, 0x85, 0xcc, 0xe6, 0x09, 0x79, 0x85, 0xa6, 0x46, 0x5e, - 0x0f, 0x91, 0xbb, 0x3f, 0xde, 0xaf, 0x5e, 0x59, 0x18, 0x4e, 0xd5, 0x8c, 0x7b, 0x5a, 0x3e, 0x49, - 0xf4, 0x79, 0x0d, 0x26, 0xb6, 0xb1, 0xda, 0x04, 0x47, 0x60, 0xe7, 0x41, 0xdb, 0x94, 0x1b, 0x21, - 0x91, 0xd5, 0xd2, 0x36, 0x95, 0xf6, 0x51, 0x0f, 0xcc, 0xa3, 0xb4, 0x6d, 0x7a, 0xd0, 0xb6, 0x2d, - 0x24, 0x53, 0x13, 0xc6, 0xd4, 0x42, 0x32, 0x05, 0xc6, 0x38, 0x3b, 0xef, 0x7f, 0xd4, 0xc1, 0xa0, - 0xad, 0xce, 0x2a, 0x3a, 0xac, 0x3b, 0x75, 0xbf, 0xbb, 0x5f, 0x0d, 0x34, 0x36, 0x9f, 0x83, 0x31, - 0x6c, 0xd2, 0x35, 0xf6, 0xc3, 0x54, 0xd8, 0xf4, 0x17, 0x58, 0x8b, 0xa2, 0x50, 0xb0, 0x01, 0x12, - 0x3a, 0x21, 0xc6, 0x5c, 0x03, 0x7d, 0x6b, 0x6b, 0x93, 0x2d, 0x6e, 0x2b, 0x7d, 0xa1, 0xec, 0x0d, - 0x1c, 0x76, 0xc4, 0xc6, 0xbc, 0x23, 0x0b, 0x13, 0x98, 0x2b, 0x90, 0xd8, 0xda, 0x64, 0x0d, 0xef, - 0xc5, 0x41, 0x68, 0xac, 0xc4, 0xd6, 0xe6, 0xcc, 0xbf, 0xd5, 0x60, 0x5c, 0x1a, 0x35, 0x73, 0x90, - 0xa1, 0x03, 0xc2, 0xe5, 0x8e, 0x58, 0xd2, 0x18, 0xd7, 0x39, 0xf1, 0x3e, 0x75, 0x9e, 0x29, 0xc0, - 0xa4, 0x32, 0x6e, 0x2e, 0x82, 0x29, 0x0e, 0x31, 0x25, 0xe8, 0x8f, 0xfa, 0x44, 0xcc, 0xe4, 0x1e, - 0x03, 0x08, 0xed, 0x1a, 0xfc, 0x16, 0xcd, 0x56, 0x79, 0x77, 0xaf, 0xbc, 0x6a, 0x68, 0xb9, 0x6f, - 0x69, 0x90, 0x66, 0x6d, 0x6b, 0xd5, 0x6d, 0x21, 0xb3, 0x08, 0x5a, 0x81, 0x45, 0xd0, 0x83, 0xe9, - 0xad, 0x15, 0xcc, 0xcb, 0xa0, 0x15, 0x07, 0x77, 0xb5, 0x56, 0x34, 0x97, 0x41, 0x2b, 0x31, 0x07, - 0x0f, 0xe6, 0x19, 0xad, 0x94, 0xfb, 0x23, 0x1d, 0xce, 0x88, 0x6d, 0x34, 0xaf, 0x27, 0x17, 0xe4, - 0xfb, 0xa6, 0xfc, 0xd8, 0x95, 0xe5, 0xab, 0x2b, 0x8b, 0xf8, 0x9f, 0x20, 0x24, 0x2f, 0xc8, 0xb7, - 0x50, 0xdd, 0x22, 0x5d, 0xaf, 0x89, 0xe4, 0x93, 0xc2, 0x6c, 0xd7, 0x6b, 0x22, 0xd2, 0x6c, 0xd7, - 0x6b, 0x22, 0xd2, 0x6c, 0xd7, 0x6b, 0x22, 0xd2, 0x6c, 0xd7, 0xa3, 0x00, 0x69, 0xb6, 0xeb, 0x35, - 0x11, 0x69, 0xb6, 0xeb, 0x35, 0x11, 0x69, 0xb6, 0xfb, 0x35, 0x11, 0x36, 0xdd, 0xf3, 0x35, 0x11, - 0x79, 0xbe, 0xfb, 0x35, 0x11, 0x79, 0xbe, 0xfb, 0x35, 0x91, 0x7c, 0xd2, 0x6f, 0x77, 0x50, 0xef, - 0x87, 0x0e, 0x32, 0xbe, 0xdf, 0x3d, 0x60, 0x58, 0x80, 0xb7, 0x61, 0x92, 0xee, 0x47, 0x94, 0x5c, - 0xc7, 0xb7, 0xeb, 0x0e, 0x6a, 0x9b, 0x9f, 0x80, 0x0c, 0x1d, 0xa2, 0x77, 0x39, 0x51, 0x77, 0x81, - 0x74, 0x9e, 0x95, 0x5b, 0x49, 0x3a, 0xf7, 0x67, 0x49, 0x98, 0xa6, 0x03, 0x5b, 0x76, 0x13, 0x49, - 0x2f, 0x19, 0x5d, 0x52, 0x1e, 0x29, 0x4d, 0x60, 0xf8, 0xfd, 0x77, 0xe7, 0xe8, 0x68, 0x21, 0x08, - 0xa6, 0x4b, 0xca, 0xc3, 0x25, 0x59, 0x2e, 0x5c, 0x7f, 0x2e, 0x29, 0x2f, 0x1e, 0xc9, 0x72, 0xc1, - 0x72, 0x13, 0xc8, 0xf1, 0x57, 0x90, 0x64, 0xb9, 0xd5, 0x20, 0xca, 0x2e, 0x29, 0x2f, 0x23, 0xc9, - 0x72, 0xe5, 0x20, 0xde, 0x2e, 0x29, 0x8f, 0x9e, 0x64, 0xb9, 0xb5, 0x20, 0xf2, 0x2e, 0x29, 0x0f, - 0xa1, 0x64, 0xb9, 0x3b, 0x41, 0x0c, 0x5e, 0x52, 0x5e, 0x55, 0x92, 0xe5, 0x9e, 0x0f, 0xa2, 0xf1, - 0x92, 0xf2, 0xd2, 0x92, 0x2c, 0xb7, 0x1e, 0xc4, 0xe5, 0xbc, 0xfa, 0xfa, 0x92, 0x2c, 0x78, 0x37, - 0x8c, 0xd0, 0x79, 0xf5, 0x45, 0x26, 0x59, 0xf2, 0x93, 0x61, 0xac, 0xce, 0xab, 0xaf, 0x34, 0xc9, - 0x92, 0x1b, 0x61, 0xd4, 0xce, 0xab, 0x8f, 0xca, 0x64, 0xc9, 0xcd, 0x30, 0x7e, 0xe7, 0xd5, 0x87, - 0x66, 0xb2, 0xe4, 0x56, 0x18, 0xc9, 0xf3, 0xea, 0xe3, 0x33, 0x59, 0x72, 0x3b, 0xdc, 0x43, 0xff, - 0x7d, 0x25, 0xfc, 0x84, 0x97, 0xa0, 0x72, 0x4a, 0xf8, 0x41, 0x44, 0xe8, 0xe5, 0x94, 0xd0, 0x83, - 0x88, 0xb0, 0xcb, 0x29, 0x61, 0x07, 0x11, 0x21, 0x97, 0x53, 0x42, 0x0e, 0x22, 0xc2, 0x2d, 0xa7, - 0x84, 0x1b, 0x44, 0x84, 0x5a, 0x4e, 0x09, 0x35, 0x88, 0x08, 0xb3, 0x9c, 0x12, 0x66, 0x10, 0x11, - 0x62, 0x39, 0x25, 0xc4, 0x20, 0x22, 0xbc, 0x72, 0x4a, 0x78, 0x41, 0x44, 0x68, 0x5d, 0x54, 0x43, - 0x0b, 0xa2, 0xc2, 0xea, 0xa2, 0x1a, 0x56, 0x10, 0x15, 0x52, 0x8f, 0xab, 0x21, 0x35, 0x76, 0xff, - 0xdd, 0xb9, 0x61, 0x3c, 0x24, 0x44, 0xd3, 0x45, 0x35, 0x9a, 0x20, 0x2a, 0x92, 0x2e, 0xaa, 0x91, - 0x04, 0x51, 0x51, 0x74, 0x51, 0x8d, 0x22, 0x88, 0x8a, 0xa0, 0xb7, 0xd5, 0x08, 0x0a, 0x5f, 0xf1, - 0xc9, 0x29, 0x4f, 0x14, 0xe3, 0x22, 0x48, 0x1f, 0x20, 0x82, 0xf4, 0x01, 0x22, 0x48, 0x1f, 0x20, - 0x82, 0xf4, 0x01, 0x22, 0x48, 0x1f, 0x20, 0x82, 0xf4, 0x01, 0x22, 0x48, 0x1f, 0x20, 0x82, 0xf4, - 0x41, 0x22, 0x48, 0x1f, 0x28, 0x82, 0xf4, 0x5e, 0x11, 0x74, 0x51, 0x7d, 0xe1, 0x01, 0xa2, 0x0a, - 0xd2, 0x45, 0xf5, 0xc9, 0x67, 0x7c, 0x08, 0xe9, 0x03, 0x85, 0x90, 0xde, 0x2b, 0x84, 0x7e, 0x5f, - 0x87, 0x33, 0x52, 0x08, 0xb1, 0xc7, 0x43, 0x1f, 0x54, 0x05, 0xba, 0x3e, 0xc0, 0xfb, 0x15, 0x51, - 0x31, 0x75, 0x7d, 0x80, 0x67, 0xd4, 0xfd, 0xe2, 0xac, 0xbb, 0x0a, 0x95, 0x07, 0xa8, 0x42, 0x6b, - 0x41, 0x0c, 0x5d, 0x1f, 0xe0, 0xbd, 0x8b, 0xee, 0xd8, 0xbb, 0xd9, 0xaf, 0x08, 0x3c, 0x3f, 0x50, - 0x11, 0x58, 0x1f, 0xa8, 0x08, 0xdc, 0x0d, 0x3d, 0xf8, 0x8b, 0x09, 0x38, 0x1b, 0x7a, 0x90, 0x7e, - 0x22, 0x3f, 0x30, 0x94, 0x13, 0x9e, 0x50, 0x99, 0xfc, 0xa9, 0x8d, 0xe0, 0xc6, 0xc4, 0x7a, 0xcd, - 0xdc, 0x91, 0x9f, 0x55, 0xe5, 0x4f, 0xfb, 0xfc, 0x46, 0xf0, 0x38, 0xdb, 0x0b, 0xbd, 0x08, 0xfa, - 0x7a, 0xcd, 0x23, 0xd5, 0x22, 0xea, 0xb4, 0x25, 0x0b, 0x4f, 0x9b, 0x16, 0x8c, 0x10, 0x71, 0x8f, - 0xb8, 0xf7, 0xfd, 0x9c, 0x78, 0xd5, 0x62, 0x4c, 0xb9, 0xb7, 0x35, 0x38, 0x2f, 0x85, 0xf2, 0x07, - 0xf3, 0xc4, 0xe0, 0xf6, 0x40, 0x4f, 0x0c, 0xa4, 0x04, 0x09, 0x9f, 0x1e, 0x3c, 0xd9, 0xfd, 0xa0, - 0x5a, 0xcc, 0x12, 0xf5, 0x49, 0xc2, 0x5f, 0x81, 0x89, 0xf0, 0x0a, 0xc8, 0x2d, 0xdb, 0xb5, 0xf8, - 0xcd, 0xcc, 0xa8, 0xd4, 0xbc, 0xa6, 0x6c, 0xa2, 0xf5, 0x85, 0x05, 0xd9, 0x9a, 0xcb, 0xc3, 0xe4, - 0x96, 0xfc, 0x5d, 0x9e, 0xb8, 0xbd, 0x88, 0x14, 0x6e, 0xcd, 0xef, 0x7d, 0x75, 0x6e, 0x28, 0xf7, - 0x71, 0xc8, 0x88, 0x5f, 0xd7, 0x51, 0x80, 0x63, 0x1c, 0x98, 0x4f, 0xbe, 0x83, 0xa5, 0xff, 0x81, - 0x06, 0x0f, 0x89, 0xe2, 0x2f, 0xd4, 0xfd, 0xe3, 0x75, 0x07, 0xf7, 0xf4, 0xcf, 0x40, 0x0a, 0x31, - 0xc7, 0xb1, 0x1f, 0x3c, 0x61, 0xb7, 0x91, 0x91, 0xe2, 0x8b, 0xe4, 0x5f, 0x2b, 0x80, 0x28, 0x5b, - 0x1c, 0xfc, 0xb4, 0xcb, 0x33, 0x4f, 0xc0, 0x30, 0xe5, 0x97, 0xf5, 0x1a, 0x57, 0xf4, 0xfa, 0x8d, - 0x08, 0xbd, 0x48, 0x1c, 0x99, 0x77, 0x25, 0xbd, 0x84, 0xbb, 0xd5, 0x48, 0xf1, 0x45, 0x1e, 0x7c, - 0xc5, 0x14, 0xee, 0xff, 0x48, 0x44, 0xc5, 0x2b, 0x39, 0x0f, 0xa9, 0xb2, 0x2a, 0x13, 0xad, 0xe7, - 0x2a, 0x24, 0xb7, 0xdc, 0x1a, 0xf9, 0x29, 0x16, 0xf2, 0x6b, 0xb2, 0xcc, 0xc8, 0xec, 0xa7, 0x65, - 0x2f, 0x41, 0xaa, 0x74, 0x5c, 0x6f, 0xd4, 0xda, 0xc8, 0x61, 0x8f, 0xec, 0xd9, 0x0e, 0x3a, 0xc6, - 0x58, 0xc1, 0x5c, 0xae, 0x04, 0x53, 0x5b, 0xae, 0x53, 0x3c, 0xf1, 0xc5, 0xba, 0xb1, 0xa8, 0xa4, - 0x08, 0x7b, 0xe4, 0x43, 0xbe, 0x00, 0x82, 0x05, 0x8a, 0xc3, 0xdf, 0x79, 0x77, 0x4e, 0xdb, 0x0b, - 0xb6, 0xcf, 0x37, 0xe1, 0x61, 0x96, 0x3e, 0x5d, 0x54, 0xcb, 0x71, 0x54, 0x63, 0xec, 0x31, 0xb5, - 0x40, 0xb7, 0x8e, 0xe9, 0x9c, 0x48, 0xba, 0x07, 0xd3, 0x0c, 0x37, 0x45, 0x7d, 0x35, 0xd3, 0x4f, - 0xa5, 0x59, 0x24, 0xdd, 0x62, 0x1c, 0x9d, 0xa2, 0xd9, 0xe3, 0x30, 0x16, 0xcc, 0x09, 0xd1, 0x20, - 0x66, 0xca, 0xf2, 0x42, 0x0e, 0xd2, 0x42, 0xc2, 0x9a, 0xc3, 0xa0, 0x15, 0x8c, 0x21, 0xfc, 0x5f, - 0xd1, 0xd0, 0xf0, 0x7f, 0x25, 0x23, 0xb1, 0xf0, 0x04, 0x4c, 0x2a, 0xdb, 0x97, 0x78, 0x66, 0xd5, - 0x00, 0xfc, 0x5f, 0xd9, 0x48, 0xcf, 0x24, 0x3f, 0xf7, 0x8f, 0x66, 0x87, 0x16, 0x6e, 0x83, 0xd9, - 0xbd, 0xd1, 0x69, 0x8e, 0x40, 0xa2, 0x80, 0x29, 0x1f, 0x86, 0x44, 0xb1, 0x68, 0x68, 0x33, 0x93, - 0x7f, 0xe3, 0x4b, 0xe7, 0xd3, 0x45, 0xf2, 0x5d, 0xe4, 0x97, 0x90, 0x5f, 0x2c, 0x32, 0xf0, 0xb3, - 0xf0, 0x50, 0xe4, 0x46, 0x29, 0xc6, 0x97, 0x4a, 0x14, 0xbf, 0xba, 0xda, 0x85, 0x5f, 0x5d, 0x25, - 0x78, 0x2d, 0xcf, 0x1f, 0x38, 0x17, 0xcc, 0x88, 0x6d, 0xc9, 0x6c, 0x4d, 0x78, 0xc0, 0x5d, 0xc8, - 0x3f, 0xcb, 0x64, 0x8b, 0x91, 0xb2, 0x28, 0xe6, 0x81, 0x75, 0x31, 0x5f, 0x62, 0xf8, 0x52, 0x24, - 0xfe, 0x50, 0x79, 0xaa, 0x2a, 0xaf, 0x10, 0x8c, 0xa4, 0x14, 0x28, 0xbc, 0x1a, 0x49, 0x72, 0x2c, - 0xbc, 0xeb, 0xbe, 0x1a, 0x28, 0x5c, 0x8e, 0x94, 0xad, 0xc7, 0xbc, 0xf3, 0x55, 0xce, 0x5f, 0x66, - 0x8b, 0x7c, 0xe1, 0x8a, 0xf9, 0x10, 0xcf, 0x51, 0xa9, 0x02, 0x33, 0x03, 0x71, 0xa9, 0x7c, 0x89, - 0x01, 0x8a, 0x3d, 0x01, 0xbd, 0xad, 0xc4, 0x91, 0xf9, 0xe7, 0x19, 0x49, 0xa9, 0x27, 0x49, 0x8c, - 0xa9, 0x38, 0xbc, 0xb8, 0x77, 0xef, 0xbd, 0xd9, 0xa1, 0x77, 0xde, 0x9b, 0x1d, 0xfa, 0xaf, 0xef, - 0xcd, 0x0e, 0xfd, 0xe1, 0x7b, 0xb3, 0xda, 0xf7, 0xdf, 0x9b, 0xd5, 0x7e, 0xf8, 0xde, 0xac, 0xf6, - 0xa7, 0xef, 0xcd, 0x6a, 0x6f, 0xde, 0x9f, 0xd5, 0xbe, 0x7e, 0x7f, 0x56, 0xfb, 0xc6, 0xfd, 0x59, - 0xed, 0x77, 0xef, 0xcf, 0x6a, 0x6f, 0xdf, 0x9f, 0xd5, 0xee, 0xdd, 0x9f, 0xd5, 0xde, 0xb9, 0x3f, - 0xab, 0xfd, 0xe1, 0xfd, 0x59, 0xed, 0xfb, 0xf7, 0x67, 0x87, 0x7e, 0x78, 0x7f, 0x56, 0xfb, 0xd3, - 0xfb, 0xb3, 0x43, 0x6f, 0x7e, 0x77, 0x76, 0xe8, 0xad, 0xef, 0xce, 0x0e, 0x7d, 0xfd, 0xbb, 0xb3, - 0x1a, 0xfc, 0xf7, 0x15, 0xb8, 0xc0, 0xbe, 0x48, 0x46, 0xbf, 0xb7, 0xca, 0xbf, 0x4e, 0x46, 0x7a, - 0x82, 0xab, 0xfc, 0x07, 0x9d, 0x82, 0x81, 0x53, 0x7e, 0xab, 0x6c, 0xe6, 0x41, 0xbf, 0xc3, 0x96, - 0xfb, 0x77, 0xc3, 0x30, 0xca, 0xf7, 0x82, 0xa3, 0x7e, 0x30, 0xf9, 0x1a, 0xa4, 0x8e, 0xeb, 0x0d, - 0xbb, 0x5d, 0xf7, 0x4f, 0xd8, 0x26, 0xe8, 0x23, 0x8b, 0xa1, 0xda, 0x7c, 0xdb, 0xf4, 0xf9, 0x4e, - 0xd3, 0xed, 0xb4, 0xad, 0x40, 0xd4, 0x3c, 0x0f, 0x99, 0x63, 0x54, 0x3f, 0x3a, 0xf6, 0x2b, 0x75, - 0xa7, 0x52, 0x6d, 0x92, 0x66, 0x79, 0xdc, 0x02, 0x3a, 0xb6, 0xee, 0x94, 0x9a, 0xf8, 0x64, 0x35, - 0xdb, 0xb7, 0xc9, 0x4d, 0x7a, 0xc6, 0x22, 0x9f, 0xcd, 0x0b, 0x90, 0x69, 0x23, 0xaf, 0xd3, 0xf0, - 0x2b, 0x55, 0xb7, 0xe3, 0xf8, 0xa4, 0x9d, 0xd5, 0xad, 0x34, 0x1d, 0x2b, 0xe1, 0x21, 0xf3, 0x71, - 0x18, 0xf7, 0xdb, 0x1d, 0x54, 0xf1, 0xaa, 0xae, 0xef, 0x35, 0x6d, 0x87, 0xb4, 0xb3, 0x29, 0x2b, - 0x83, 0x07, 0x77, 0xd9, 0x18, 0xf9, 0x41, 0xfe, 0xaa, 0xdb, 0x46, 0xe4, 0x6e, 0x3a, 0x61, 0xd1, - 0x03, 0xd3, 0x00, 0xfd, 0x55, 0x74, 0x42, 0xee, 0xd7, 0x92, 0x16, 0xfe, 0x68, 0x3e, 0x05, 0x23, - 0xf4, 0x6f, 0x35, 0x90, 0xe6, 0x9a, 0x3c, 0xba, 0x0e, 0x2e, 0x8d, 0x6e, 0xd1, 0x5a, 0x4c, 0xc0, - 0xbc, 0x05, 0xa3, 0x3e, 0x6a, 0xb7, 0xed, 0xba, 0x43, 0xee, 0x9d, 0xd2, 0xcb, 0x73, 0x11, 0x66, - 0xd8, 0xa3, 0x12, 0xe4, 0xb7, 0x51, 0x2d, 0x2e, 0x6f, 0x5e, 0x83, 0x0c, 0x91, 0x5b, 0xae, 0xd0, - 0xbf, 0x67, 0x91, 0xee, 0x19, 0xce, 0x69, 0x2a, 0xc7, 0x9f, 0x14, 0x70, 0x18, 0xfd, 0x71, 0xbb, - 0x71, 0x72, 0xda, 0xc7, 0x23, 0x4e, 0x4b, 0x2a, 0xef, 0x32, 0xe9, 0x1a, 0xe9, 0xa9, 0x19, 0x0f, - 0xfd, 0xf9, 0xbb, 0x4d, 0xc8, 0x88, 0x7a, 0x71, 0x33, 0xd0, 0xee, 0x87, 0x98, 0xe1, 0xc9, 0xf0, - 0xb7, 0xce, 0x7b, 0x58, 0x81, 0xce, 0xe7, 0x13, 0x37, 0xb5, 0x99, 0x1d, 0x30, 0xd4, 0xf3, 0x45, - 0x50, 0x5e, 0x92, 0x29, 0x0d, 0xf1, 0x62, 0xc9, 0x3e, 0x79, 0xc8, 0x98, 0x7b, 0x0e, 0x46, 0x68, - 0xfc, 0x98, 0x69, 0x18, 0xdd, 0xdf, 0xfa, 0xe4, 0xd6, 0xf6, 0x0b, 0x5b, 0xf4, 0x57, 0x47, 0x77, - 0xf6, 0xb7, 0x76, 0xe9, 0x6f, 0x87, 0xee, 0x6e, 0x14, 0x76, 0x76, 0xf7, 0xd6, 0x4b, 0x9f, 0x34, - 0x12, 0xe6, 0x24, 0xa4, 0x8b, 0xeb, 0x1b, 0x1b, 0x95, 0x62, 0x61, 0x7d, 0xa3, 0xfc, 0x92, 0xa1, - 0xe7, 0x66, 0x61, 0x84, 0xea, 0x49, 0x7e, 0xc8, 0xad, 0xe3, 0x38, 0x27, 0xbc, 0x7b, 0x20, 0x07, - 0xb9, 0x6f, 0x9a, 0x30, 0x5a, 0x68, 0x34, 0x36, 0xed, 0x96, 0x67, 0xbe, 0x00, 0x53, 0xf4, 0xf7, - 0x24, 0xf6, 0xdc, 0x55, 0xf2, 0x7b, 0x83, 0xb8, 0x36, 0x68, 0xec, 0x37, 0xde, 0xc3, 0xeb, 0x66, - 0xe2, 0x8b, 0x5d, 0xb2, 0xd4, 0xc0, 0xdd, 0x1c, 0xe6, 0x1e, 0x18, 0x7c, 0x70, 0xad, 0xe1, 0xda, - 0x3e, 0xe6, 0x4d, 0xb0, 0x9f, 0x03, 0xec, 0xcd, 0xcb, 0x45, 0x29, 0x6d, 0x17, 0x83, 0xf9, 0x09, - 0x48, 0xad, 0x3b, 0xfe, 0xd5, 0x65, 0xcc, 0xc6, 0xff, 0xfe, 0x48, 0x37, 0x1b, 0x17, 0xa1, 0x2c, - 0x01, 0x82, 0xa1, 0xaf, 0xaf, 0x60, 0x74, 0xb2, 0x1f, 0x9a, 0x88, 0x84, 0x68, 0x72, 0x68, 0x3e, - 0x07, 0x63, 0xf8, 0xe6, 0x84, 0x9e, 0x7c, 0x98, 0x77, 0xae, 0x5d, 0xf0, 0x40, 0x86, 0xe2, 0x43, - 0x0c, 0x27, 0xa0, 0xe7, 0x1f, 0xe9, 0x4b, 0x20, 0x28, 0x10, 0x62, 0x30, 0xc1, 0x6e, 0xa0, 0xc1, - 0x68, 0x4f, 0x82, 0x5d, 0x45, 0x83, 0x5d, 0x51, 0x83, 0xdd, 0x40, 0x83, 0x54, 0x5f, 0x02, 0x51, - 0x83, 0xe0, 0xd8, 0x2c, 0x02, 0xac, 0xd5, 0xdf, 0x40, 0x35, 0xaa, 0x02, 0xfd, 0xeb, 0x24, 0xb9, - 0x08, 0x86, 0x50, 0x88, 0x52, 0x08, 0x28, 0xb3, 0x0c, 0xe9, 0xdd, 0xc3, 0x90, 0x04, 0xba, 0xf2, - 0x38, 0x50, 0xe3, 0x50, 0x61, 0x11, 0x71, 0x81, 0x2a, 0xf4, 0x62, 0xd2, 0xfd, 0x55, 0x11, 0xae, - 0x46, 0x40, 0x85, 0xaa, 0x50, 0x92, 0x4c, 0x8c, 0x2a, 0x02, 0x8b, 0x88, 0xc3, 0xc5, 0xb0, 0xe8, - 0xba, 0x58, 0x92, 0x55, 0xa5, 0xb9, 0x08, 0x0a, 0x26, 0xc1, 0x8a, 0x21, 0x3b, 0x22, 0x1e, 0x21, - 0x41, 0x8e, 0xc1, 0x13, 0xbd, 0x3d, 0xc2, 0x65, 0xb8, 0x47, 0xf8, 0xb1, 0x98, 0x67, 0xe4, 0x7d, - 0x56, 0xcc, 0x33, 0x19, 0x9b, 0x67, 0x5c, 0x54, 0xc9, 0x33, 0x3e, 0x6c, 0x7e, 0x0a, 0x26, 0xf9, - 0x18, 0x2e, 0x4f, 0x98, 0xd4, 0x60, 0x7f, 0xbf, 0xa9, 0x37, 0x29, 0x93, 0xa4, 0x9c, 0x2a, 0xde, - 0xdc, 0x82, 0x09, 0x3e, 0xb4, 0xe9, 0x91, 0xcb, 0x9d, 0x62, 0x7f, 0x1b, 0xa1, 0x37, 0x23, 0x15, - 0xa4, 0x84, 0x0a, 0x7a, 0x66, 0x15, 0xa6, 0xa3, 0xab, 0x91, 0x58, 0x7e, 0xc7, 0x68, 0xf9, 0x3d, - 0x2b, 0x96, 0x5f, 0x4d, 0x2c, 0xdf, 0x25, 0x78, 0x28, 0xb2, 0xf6, 0xc4, 0x91, 0x24, 0x44, 0x92, - 0xdb, 0x30, 0x2e, 0x95, 0x1c, 0x11, 0x3c, 0x1c, 0x01, 0x1e, 0xee, 0x06, 0x87, 0xa1, 0x15, 0xb1, - 0x7a, 0x48, 0x60, 0x5d, 0x04, 0x7f, 0x02, 0x26, 0xe4, 0x7a, 0x23, 0xa2, 0xc7, 0x23, 0xd0, 0xe3, - 0x11, 0xe8, 0xe8, 0x73, 0x27, 0x23, 0xd0, 0x49, 0x05, 0xbd, 0xdb, 0xf3, 0xdc, 0x53, 0x11, 0xe8, - 0xa9, 0x08, 0x74, 0xf4, 0xb9, 0xcd, 0x08, 0xb4, 0x29, 0xa2, 0x9f, 0x81, 0x49, 0xa5, 0xc4, 0x88, - 0xf0, 0xd1, 0x08, 0xf8, 0xa8, 0x08, 0x7f, 0x16, 0x0c, 0xb5, 0xb8, 0x88, 0xf8, 0xc9, 0x08, 0xfc, - 0x64, 0xd4, 0xe9, 0xa3, 0xb5, 0x1f, 0x89, 0x80, 0x8f, 0x44, 0x9e, 0x3e, 0x1a, 0x6f, 0x44, 0xe0, - 0x0d, 0x11, 0x9f, 0x87, 0x8c, 0x58, 0x4d, 0x44, 0x6c, 0x2a, 0x02, 0x9b, 0x52, 0xed, 0x2e, 0x15, - 0x93, 0xb8, 0x48, 0x1f, 0xeb, 0x91, 0x2e, 0x52, 0x09, 0x89, 0x23, 0xc9, 0x88, 0x24, 0x9f, 0x86, - 0xb3, 0x51, 0x25, 0x23, 0x82, 0x63, 0x5e, 0xe4, 0x98, 0xc0, 0x3d, 0x62, 0xd8, 0xec, 0xd9, 0x2d, - 0xa5, 0x71, 0x9a, 0x79, 0x19, 0xce, 0x44, 0x14, 0x8e, 0x08, 0xda, 0x45, 0xb9, 0x1b, 0xcb, 0x0a, - 0xb4, 0xa4, 0x08, 0xd4, 0x9d, 0xa3, 0x1d, 0xb7, 0xee, 0xf8, 0x62, 0x57, 0xf6, 0xad, 0x33, 0x30, - 0xc1, 0xca, 0xd3, 0x76, 0xbb, 0x86, 0xda, 0xa8, 0x66, 0xfe, 0xa5, 0xde, 0xbd, 0xd3, 0x52, 0x77, - 0x51, 0x63, 0xa8, 0x53, 0xb4, 0x50, 0x2f, 0xf7, 0x6c, 0xa1, 0x2e, 0xc7, 0xd3, 0xc7, 0x75, 0x52, - 0xa5, 0xae, 0x4e, 0xea, 0xc9, 0xde, 0xa4, 0xbd, 0x1a, 0xaa, 0x52, 0x57, 0x43, 0xd5, 0x9f, 0x24, - 0xb2, 0xaf, 0x5a, 0xeb, 0xee, 0xab, 0xe6, 0x7b, 0xb3, 0xf4, 0x6e, 0xaf, 0xd6, 0xba, 0xdb, 0xab, - 0x18, 0x9e, 0xe8, 0x2e, 0x6b, 0xad, 0xbb, 0xcb, 0xea, 0xc3, 0xd3, 0xbb, 0xd9, 0x5a, 0xeb, 0x6e, - 0xb6, 0x62, 0x78, 0xa2, 0x7b, 0xae, 0xf5, 0x88, 0x9e, 0xeb, 0xa9, 0xde, 0x44, 0xfd, 0x5a, 0xaf, - 0x8d, 0xa8, 0xd6, 0x6b, 0xa1, 0x8f, 0x52, 0x7d, 0x3b, 0xb0, 0xf5, 0x88, 0x0e, 0x2c, 0x4e, 0xb1, - 0x1e, 0x8d, 0xd8, 0x46, 0x54, 0x23, 0x16, 0xab, 0x58, 0xaf, 0x7e, 0xec, 0x2f, 0xa8, 0xfd, 0xd8, - 0xa5, 0xde, 0x4c, 0xd1, 0x6d, 0xd9, 0x5a, 0x77, 0x5b, 0x36, 0x1f, 0x97, 0x73, 0x51, 0xdd, 0xd9, - 0xcb, 0x3d, 0xbb, 0xb3, 0x01, 0x52, 0x38, 0xae, 0x49, 0x7b, 0xb1, 0x57, 0x93, 0xb6, 0x18, 0xcf, - 0xdd, 0xbf, 0x57, 0xdb, 0xef, 0xd1, 0xab, 0x3d, 0x1d, 0x4f, 0xfc, 0x51, 0xcb, 0xf6, 0x51, 0xcb, - 0xf6, 0x51, 0xcb, 0xf6, 0x51, 0xcb, 0xf6, 0xd3, 0x6f, 0xd9, 0xf2, 0xc9, 0xcf, 0x7f, 0x75, 0x4e, - 0xcb, 0xfd, 0x17, 0x3d, 0xf8, 0xb3, 0x53, 0x2f, 0xd4, 0xfd, 0x63, 0x5c, 0xde, 0x36, 0x21, 0x43, - 0xfe, 0xea, 0x45, 0xd3, 0x6e, 0xb5, 0xea, 0xce, 0x11, 0xeb, 0xd9, 0x16, 0xba, 0xb7, 0x12, 0x19, - 0x80, 0xfc, 0xdd, 0x90, 0x4d, 0x2a, 0xcc, 0x96, 0x1b, 0x27, 0x1c, 0x31, 0xef, 0x42, 0xba, 0xe9, - 0x1d, 0x05, 0x6c, 0x89, 0xae, 0x85, 0x50, 0x61, 0xa3, 0x57, 0x1a, 0x92, 0x41, 0x33, 0x18, 0xc0, - 0xaa, 0x1d, 0x9c, 0xf8, 0xa1, 0x6a, 0x7a, 0x9c, 0x6a, 0xd8, 0xa7, 0xb2, 0x6a, 0x07, 0xe1, 0x08, - 0x0e, 0x5b, 0x55, 0xf7, 0xb8, 0x4a, 0x27, 0x05, 0xcf, 0x0b, 0x30, 0xa9, 0x68, 0x1b, 0x91, 0xf3, - 0x0f, 0xe0, 0x1b, 0xac, 0x98, 0xaa, 0x79, 0x5c, 0x4e, 0x88, 0x01, 0x99, 0x7b, 0x0c, 0xc6, 0x25, - 0x6e, 0x33, 0x03, 0xda, 0x21, 0xfb, 0x32, 0xa5, 0x76, 0x98, 0xfb, 0x8a, 0x06, 0x69, 0xf6, 0x26, - 0xc1, 0x8e, 0x5d, 0x6f, 0x9b, 0xcf, 0x43, 0xb2, 0xc1, 0xbf, 0xd0, 0xf4, 0xa0, 0x5f, 0x9e, 0x25, - 0x0c, 0xe6, 0x1a, 0x0c, 0xb7, 0x83, 0x2f, 0x3c, 0x3d, 0xd0, 0x37, 0x62, 0x09, 0x3c, 0x77, 0x4f, - 0x83, 0x29, 0xf6, 0xa2, 0xab, 0xc7, 0x5e, 0x7f, 0xb6, 0x5b, 0x33, 0xdf, 0xd4, 0x60, 0x2c, 0x38, - 0x32, 0x0f, 0x60, 0x22, 0x38, 0xa0, 0xaf, 0xd8, 0xd3, 0x48, 0xcd, 0x0b, 0x16, 0xee, 0xe2, 0x58, - 0x8c, 0xf8, 0x44, 0x9f, 0x45, 0xd1, 0x35, 0x59, 0x1e, 0x9c, 0x29, 0xc0, 0x99, 0x08, 0xb1, 0xd3, - 0x2c, 0xc8, 0xb9, 0x0b, 0x30, 0xb6, 0xe5, 0xfa, 0xf4, 0x77, 0x73, 0xcc, 0xb3, 0xc2, 0x53, 0x85, - 0x62, 0xc2, 0x18, 0x22, 0xe0, 0x85, 0x0b, 0x30, 0xca, 0xb2, 0xdf, 0x1c, 0x81, 0xc4, 0x66, 0xc1, - 0x18, 0x22, 0xff, 0x17, 0x0d, 0x8d, 0xfc, 0x5f, 0x32, 0x12, 0xc5, 0x8d, 0x07, 0x78, 0xd0, 0x34, - 0xf4, 0xce, 0xfd, 0xd9, 0x21, 0xe5, 0x41, 0x93, 0xf6, 0xe6, 0x77, 0x67, 0xb5, 0x83, 0x11, 0x6a, - 0x9e, 0x3f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x31, 0x8b, 0x62, 0x7c, 0x4a, 0x7e, 0x00, 0x00, + 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0xc8, 0x19, + 0x68, 0x34, 0xa2, 0xb8, 0x16, 0x87, 0xc3, 0x21, 0xe7, 0x82, 0xb1, 0xa4, 0x00, 0x20, 0x38, 0xe2, + 0x98, 0x04, 0xe9, 0x26, 0x69, 0x69, 0xd6, 0xa9, 0xa0, 0x9a, 0xc0, 0x21, 0xd9, 0x12, 0xd0, 0x8d, + 0x45, 0x37, 0x24, 0xd1, 0x0f, 0x29, 0x65, 0x9d, 0x6c, 0xbc, 0x49, 0xe5, 0xba, 0x49, 0xc5, 0xeb, + 0xf8, 0x22, 0x6f, 0x6a, 0x63, 0xef, 0x6e, 0x2e, 0x5e, 0x67, 0xe3, 0x6c, 0x6d, 0xa5, 0xb2, 0xca, + 0x83, 0x93, 0xc9, 0x4b, 0x4a, 0x9b, 0xbc, 0xa4, 0x5c, 0x29, 0x95, 0x35, 0x72, 0x25, 0x4e, 0xe2, + 0x24, 0xde, 0xac, 0xab, 0x76, 0xab, 0xbc, 0x0f, 0xa9, 0x73, 0xeb, 0xee, 0x73, 0xd0, 0x40, 0x83, + 0x23, 0xc9, 0xde, 0x07, 0xbf, 0xcc, 0xa0, 0xcf, 0xf9, 0xbf, 0xaf, 0xff, 0xfe, 0x6f, 0xe7, 0xef, + 0xd3, 0x0d, 0x10, 0xde, 0x5f, 0x83, 0x0b, 0xc7, 0x8e, 0x73, 0xdc, 0x40, 0x57, 0x5a, 0x6d, 0xc7, + 0x73, 0x0e, 0x3b, 0x47, 0x57, 0xea, 0xc8, 0xad, 0xb5, 0xad, 0x96, 0xe7, 0xb4, 0x97, 0xc8, 0x98, + 0x3e, 0x49, 0x25, 0x96, 0xb8, 0x44, 0x6e, 0x1b, 0xa6, 0x36, 0xac, 0x06, 0x5a, 0xf7, 0x05, 0xf7, + 0x90, 0xa7, 0xdf, 0x84, 0xe4, 0x91, 0xd5, 0x40, 0x59, 0xe5, 0x82, 0xba, 0x90, 0x5e, 0xb9, 0xb4, + 0x24, 0x81, 0x96, 0x44, 0xc4, 0x2e, 0x1e, 0x36, 0x08, 0x22, 0xf7, 0xbd, 0x24, 0x4c, 0x47, 0xcc, + 0xea, 0x3a, 0x24, 0x6d, 0xb3, 0x89, 0x19, 0x95, 0x85, 0x31, 0x83, 0x7c, 0xd6, 0xb3, 0x30, 0xda, + 0x32, 0x6b, 0xaf, 0x9a, 0xc7, 0x28, 0x9b, 0x20, 0xc3, 0xfc, 0x50, 0x9f, 0x03, 0xa8, 0xa3, 0x16, + 0xb2, 0xeb, 0xc8, 0xae, 0x9d, 0x66, 0xd5, 0x0b, 0xea, 0xc2, 0x98, 0x11, 0x1a, 0xd1, 0x7f, 0x0e, + 0xa6, 0x5a, 0x9d, 0xc3, 0x86, 0x55, 0xab, 0x86, 0xc4, 0xe0, 0x82, 0xba, 0x30, 0x6c, 0x68, 0x74, + 0x62, 0x3d, 0x10, 0x7e, 0x1a, 0x26, 0x5f, 0x47, 0xe6, 0xab, 0x61, 0xd1, 0x34, 0x11, 0x9d, 0xc0, + 0xc3, 0x21, 0xc1, 0x12, 0x64, 0x9a, 0xc8, 0x75, 0xcd, 0x63, 0x54, 0xf5, 0x4e, 0x5b, 0x28, 0x9b, + 0x24, 0x57, 0x7f, 0xa1, 0xeb, 0xea, 0xe5, 0x2b, 0x4f, 0x33, 0xd4, 0xfe, 0x69, 0x0b, 0xe9, 0x05, + 0x18, 0x43, 0x76, 0xa7, 0x49, 0x19, 0x86, 0x7b, 0xd8, 0xaf, 0x6c, 0x77, 0x9a, 0x32, 0x4b, 0x0a, + 0xc3, 0x18, 0xc5, 0xa8, 0x8b, 0xda, 0xaf, 0x59, 0x35, 0x94, 0x1d, 0x21, 0x04, 0x4f, 0x77, 0x11, + 0xec, 0xd1, 0x79, 0x99, 0x83, 0xe3, 0xf4, 0x12, 0x8c, 0xa1, 0x37, 0x3c, 0x64, 0xbb, 0x96, 0x63, + 0x67, 0x47, 0x09, 0xc9, 0x53, 0x11, 0x5e, 0x44, 0x8d, 0xba, 0x4c, 0x11, 0xe0, 0xf4, 0xeb, 0x30, + 0xea, 0xb4, 0x3c, 0xcb, 0xb1, 0xdd, 0x6c, 0xea, 0x82, 0xb2, 0x90, 0x5e, 0x39, 0x1f, 0x19, 0x08, + 0x3b, 0x54, 0xc6, 0xe0, 0xc2, 0xfa, 0x26, 0x68, 0xae, 0xd3, 0x69, 0xd7, 0x50, 0xb5, 0xe6, 0xd4, + 0x51, 0xd5, 0xb2, 0x8f, 0x9c, 0xec, 0x18, 0x21, 0x98, 0xef, 0xbe, 0x10, 0x22, 0x58, 0x72, 0xea, + 0x68, 0xd3, 0x3e, 0x72, 0x8c, 0x09, 0x57, 0x38, 0xd6, 0x67, 0x60, 0xc4, 0x3d, 0xb5, 0x3d, 0xf3, + 0x8d, 0x6c, 0x86, 0x44, 0x08, 0x3b, 0xca, 0xfd, 0xf1, 0x30, 0x4c, 0x0e, 0x12, 0x62, 0xb7, 0x61, + 0xf8, 0x08, 0x5f, 0x65, 0x36, 0x71, 0x16, 0x1b, 0x50, 0x8c, 0x68, 0xc4, 0x91, 0x87, 0x34, 0x62, + 0x01, 0xd2, 0x36, 0x72, 0x3d, 0x54, 0xa7, 0x11, 0xa1, 0x0e, 0x18, 0x53, 0x40, 0x41, 0xdd, 0x21, + 0x95, 0x7c, 0xa8, 0x90, 0x7a, 0x19, 0x26, 0x7d, 0x95, 0xaa, 0x6d, 0xd3, 0x3e, 0xe6, 0xb1, 0x79, + 0x25, 0x4e, 0x93, 0xa5, 0x32, 0xc7, 0x19, 0x18, 0x66, 0x4c, 0x20, 0xe1, 0x58, 0x5f, 0x07, 0x70, + 0x6c, 0xe4, 0x1c, 0x55, 0xeb, 0xa8, 0xd6, 0xc8, 0xa6, 0x7a, 0x58, 0x69, 0x07, 0x8b, 0x74, 0x59, + 0xc9, 0xa1, 0xa3, 0xb5, 0x86, 0x7e, 0x2b, 0x08, 0xb5, 0xd1, 0x1e, 0x91, 0xb2, 0x4d, 0x93, 0xac, + 0x2b, 0xda, 0x0e, 0x60, 0xa2, 0x8d, 0x70, 0xdc, 0xa3, 0x3a, 0xbb, 0xb2, 0x31, 0xa2, 0xc4, 0x52, + 0xec, 0x95, 0x19, 0x0c, 0x46, 0x2f, 0x6c, 0xbc, 0x1d, 0x3e, 0xd4, 0x9f, 0x04, 0x7f, 0xa0, 0x4a, + 0xc2, 0x0a, 0x48, 0x15, 0xca, 0xf0, 0xc1, 0x8a, 0xd9, 0x44, 0xb3, 0x37, 0x61, 0x42, 0x34, 0x8f, + 0x7e, 0x0e, 0x86, 0x5d, 0xcf, 0x6c, 0x7b, 0x24, 0x0a, 0x87, 0x0d, 0x7a, 0xa0, 0x6b, 0xa0, 0x22, + 0xbb, 0x4e, 0xaa, 0xdc, 0xb0, 0x81, 0x3f, 0xce, 0xde, 0x80, 0x71, 0xe1, 0xf4, 0x83, 0x02, 0x73, + 0x9f, 0x1f, 0x81, 0x73, 0x51, 0x31, 0x17, 0x19, 0xfe, 0x33, 0x30, 0x62, 0x77, 0x9a, 0x87, 0xa8, + 0x9d, 0x55, 0x09, 0x03, 0x3b, 0xd2, 0x0b, 0x30, 0xdc, 0x30, 0x0f, 0x51, 0x23, 0x9b, 0xbc, 0xa0, + 0x2c, 0x4c, 0xac, 0xfc, 0xdc, 0x40, 0x51, 0xbd, 0xb4, 0x85, 0x21, 0x06, 0x45, 0xea, 0xcf, 0x43, + 0x92, 0x95, 0x38, 0xcc, 0xb0, 0x38, 0x18, 0x03, 0x8e, 0x45, 0x83, 0xe0, 0xf4, 0xc7, 0x61, 0x0c, + 0xff, 0x4f, 0x6d, 0x3b, 0x42, 0x74, 0x4e, 0xe1, 0x01, 0x6c, 0x57, 0x7d, 0x16, 0x52, 0x24, 0xcc, + 0xea, 0x88, 0x2f, 0x0d, 0xfe, 0x31, 0x76, 0x4c, 0x1d, 0x1d, 0x99, 0x9d, 0x86, 0x57, 0x7d, 0xcd, + 0x6c, 0x74, 0x10, 0x09, 0x98, 0x31, 0x23, 0xc3, 0x06, 0x3f, 0x85, 0xc7, 0xf4, 0x79, 0x48, 0xd3, + 0xa8, 0xb4, 0xec, 0x3a, 0x7a, 0x83, 0x54, 0x9f, 0x61, 0x83, 0x06, 0xea, 0x26, 0x1e, 0xc1, 0xa7, + 0x7f, 0xc5, 0x75, 0x6c, 0xee, 0x5a, 0x72, 0x0a, 0x3c, 0x40, 0x4e, 0x7f, 0x43, 0x2e, 0x7c, 0x4f, + 0x44, 0x5f, 0x9e, 0x1c, 0x8b, 0xb9, 0x6f, 0x25, 0x20, 0x49, 0xf2, 0x6d, 0x12, 0xd2, 0xfb, 0xf7, + 0x76, 0xcb, 0xd5, 0xf5, 0x9d, 0x83, 0xe2, 0x56, 0x59, 0x53, 0xf4, 0x09, 0x00, 0x32, 0xb0, 0xb1, + 0xb5, 0x53, 0xd8, 0xd7, 0x12, 0xfe, 0xf1, 0x66, 0x65, 0xff, 0xfa, 0xaa, 0xa6, 0xfa, 0x80, 0x03, + 0x3a, 0x90, 0x0c, 0x0b, 0x5c, 0x5b, 0xd1, 0x86, 0x75, 0x0d, 0x32, 0x94, 0x60, 0xf3, 0xe5, 0xf2, + 0xfa, 0xf5, 0x55, 0x6d, 0x44, 0x1c, 0xb9, 0xb6, 0xa2, 0x8d, 0xea, 0xe3, 0x30, 0x46, 0x46, 0x8a, + 0x3b, 0x3b, 0x5b, 0x5a, 0xca, 0xe7, 0xdc, 0xdb, 0x37, 0x36, 0x2b, 0x77, 0xb4, 0x31, 0x9f, 0xf3, + 0x8e, 0xb1, 0x73, 0xb0, 0xab, 0x81, 0xcf, 0xb0, 0x5d, 0xde, 0xdb, 0x2b, 0xdc, 0x29, 0x6b, 0x69, + 0x5f, 0xa2, 0x78, 0x6f, 0xbf, 0xbc, 0xa7, 0x65, 0x04, 0xb5, 0xae, 0xad, 0x68, 0xe3, 0xfe, 0x29, + 0xca, 0x95, 0x83, 0x6d, 0x6d, 0x42, 0x9f, 0x82, 0x71, 0x7a, 0x0a, 0xae, 0xc4, 0xa4, 0x34, 0x74, + 0x7d, 0x55, 0xd3, 0x02, 0x45, 0x28, 0xcb, 0x94, 0x30, 0x70, 0x7d, 0x55, 0xd3, 0x73, 0x25, 0x18, + 0x26, 0xd1, 0xa5, 0xeb, 0x30, 0xb1, 0x55, 0x28, 0x96, 0xb7, 0xaa, 0x3b, 0xbb, 0xfb, 0x9b, 0x3b, + 0x95, 0xc2, 0x96, 0xa6, 0x04, 0x63, 0x46, 0xf9, 0x93, 0x07, 0x9b, 0x46, 0x79, 0x5d, 0x4b, 0x84, + 0xc7, 0x76, 0xcb, 0x85, 0xfd, 0xf2, 0xba, 0xa6, 0xe6, 0x6a, 0x70, 0x2e, 0xaa, 0xce, 0x44, 0x66, + 0x46, 0xc8, 0xc5, 0x89, 0x1e, 0x2e, 0x26, 0x5c, 0x5d, 0x2e, 0xfe, 0x35, 0x05, 0xa6, 0x23, 0x6a, + 0x6d, 0xe4, 0x49, 0x5e, 0x80, 0x61, 0x1a, 0xa2, 0x74, 0xf5, 0x79, 0x26, 0xb2, 0x68, 0x93, 0x80, + 0xed, 0x5a, 0x81, 0x08, 0x2e, 0xbc, 0x02, 0xab, 0x3d, 0x56, 0x60, 0x4c, 0xd1, 0xa5, 0xe4, 0x67, + 0x15, 0xc8, 0xf6, 0xe2, 0x8e, 0x29, 0x14, 0x09, 0xa1, 0x50, 0xdc, 0x96, 0x15, 0xb8, 0xd8, 0xfb, + 0x1a, 0xba, 0xb4, 0xf8, 0x9a, 0x02, 0x33, 0xd1, 0x8d, 0x4a, 0xa4, 0x0e, 0xcf, 0xc3, 0x48, 0x13, + 0x79, 0x27, 0x0e, 0x5f, 0xac, 0x2f, 0x47, 0x2c, 0x01, 0x78, 0x5a, 0xb6, 0x15, 0x43, 0x85, 0xd7, + 0x10, 0xb5, 0x57, 0xb7, 0x41, 0xb5, 0xe9, 0xd2, 0xf4, 0x97, 0x13, 0xf0, 0x48, 0x24, 0x79, 0xa4, + 0xa2, 0x4f, 0x00, 0x58, 0x76, 0xab, 0xe3, 0xd1, 0x05, 0x99, 0xd6, 0xa7, 0x31, 0x32, 0x42, 0x72, + 0x1f, 0xd7, 0x9e, 0x8e, 0xe7, 0xcf, 0xab, 0x64, 0x1e, 0xe8, 0x10, 0x11, 0xb8, 0x19, 0x28, 0x9a, + 0x24, 0x8a, 0xce, 0xf5, 0xb8, 0xd2, 0xae, 0xb5, 0x6e, 0x19, 0xb4, 0x5a, 0xc3, 0x42, 0xb6, 0x57, + 0x75, 0xbd, 0x36, 0x32, 0x9b, 0x96, 0x7d, 0x4c, 0x0a, 0x70, 0x2a, 0x3f, 0x7c, 0x64, 0x36, 0x5c, + 0x64, 0x4c, 0xd2, 0xe9, 0x3d, 0x3e, 0x8b, 0x11, 0x64, 0x95, 0x69, 0x87, 0x10, 0x23, 0x02, 0x82, + 0x4e, 0xfb, 0x88, 0xdc, 0x6f, 0x8d, 0x42, 0x3a, 0xd4, 0xd6, 0xe9, 0x17, 0x21, 0xf3, 0x8a, 0xf9, + 0x9a, 0x59, 0xe5, 0xad, 0x3a, 0xb5, 0x44, 0x1a, 0x8f, 0xed, 0xb2, 0x76, 0x7d, 0x19, 0xce, 0x11, + 0x11, 0xa7, 0xe3, 0xa1, 0x76, 0xb5, 0xd6, 0x30, 0x5d, 0x97, 0x18, 0x2d, 0x45, 0x44, 0x75, 0x3c, + 0xb7, 0x83, 0xa7, 0x4a, 0x7c, 0x46, 0x5f, 0x83, 0x69, 0x82, 0x68, 0x76, 0x1a, 0x9e, 0xd5, 0x6a, + 0xa0, 0x2a, 0xbe, 0x79, 0x70, 0x49, 0x21, 0xf6, 0x35, 0x9b, 0xc2, 0x12, 0xdb, 0x4c, 0x00, 0x6b, + 0xe4, 0xea, 0xeb, 0xf0, 0x04, 0x81, 0x1d, 0x23, 0x1b, 0xb5, 0x4d, 0x0f, 0x55, 0xd1, 0x2f, 0x74, + 0xcc, 0x86, 0x5b, 0x35, 0xed, 0x7a, 0xf5, 0xc4, 0x74, 0x4f, 0xb2, 0xe7, 0x30, 0x41, 0x31, 0x91, + 0x55, 0x8c, 0xc7, 0xb0, 0xe0, 0x1d, 0x26, 0x57, 0x26, 0x62, 0x05, 0xbb, 0xfe, 0xa2, 0xe9, 0x9e, + 0xe8, 0x79, 0x98, 0x21, 0x2c, 0xae, 0xd7, 0xb6, 0xec, 0xe3, 0x6a, 0xed, 0x04, 0xd5, 0x5e, 0xad, + 0x76, 0xbc, 0xa3, 0x9b, 0xd9, 0xc7, 0xc3, 0xe7, 0x27, 0x1a, 0xee, 0x11, 0x99, 0x12, 0x16, 0x39, + 0xf0, 0x8e, 0x6e, 0xea, 0x7b, 0x90, 0xc1, 0xce, 0x68, 0x5a, 0x9f, 0x41, 0xd5, 0x23, 0xa7, 0x4d, + 0x56, 0x96, 0x89, 0x88, 0xcc, 0x0e, 0x59, 0x70, 0x69, 0x87, 0x01, 0xb6, 0x9d, 0x3a, 0xca, 0x0f, + 0xef, 0xed, 0x96, 0xcb, 0xeb, 0x46, 0x9a, 0xb3, 0x6c, 0x38, 0x6d, 0x1c, 0x50, 0xc7, 0x8e, 0x6f, + 0xe0, 0x34, 0x0d, 0xa8, 0x63, 0x87, 0x9b, 0x77, 0x0d, 0xa6, 0x6b, 0x35, 0x7a, 0xcd, 0x56, 0xad, + 0xca, 0x5a, 0x7c, 0x37, 0xab, 0x09, 0xc6, 0xaa, 0xd5, 0xee, 0x50, 0x01, 0x16, 0xe3, 0xae, 0x7e, + 0x0b, 0x1e, 0x09, 0x8c, 0x15, 0x06, 0x4e, 0x75, 0x5d, 0xa5, 0x0c, 0x5d, 0x83, 0xe9, 0xd6, 0x69, + 0x37, 0x50, 0x17, 0xce, 0xd8, 0x3a, 0x95, 0x61, 0x4f, 0x91, 0xdb, 0xb6, 0x36, 0xaa, 0x99, 0x1e, + 0xaa, 0x67, 0x1f, 0x0d, 0x4b, 0x87, 0x26, 0xf4, 0x2b, 0xa0, 0xd5, 0x6a, 0x55, 0x64, 0x9b, 0x87, + 0x0d, 0x54, 0x35, 0xdb, 0xc8, 0x36, 0xdd, 0xec, 0x7c, 0x58, 0x78, 0xa2, 0x56, 0x2b, 0x93, 0xd9, + 0x02, 0x99, 0xd4, 0x17, 0x61, 0xca, 0x39, 0x7c, 0xa5, 0x46, 0x23, 0xab, 0xda, 0x6a, 0xa3, 0x23, + 0xeb, 0x8d, 0xec, 0x25, 0x62, 0xa6, 0x49, 0x3c, 0x41, 0xe2, 0x6a, 0x97, 0x0c, 0xeb, 0xcf, 0x80, + 0x56, 0x73, 0x4f, 0xcc, 0x76, 0x8b, 0x2c, 0xed, 0x6e, 0xcb, 0xac, 0xa1, 0xec, 0x53, 0x54, 0x94, + 0x8e, 0x57, 0xf8, 0x30, 0x8e, 0x6c, 0xf7, 0x75, 0xeb, 0xc8, 0xe3, 0x8c, 0x4f, 0xd3, 0xc8, 0x26, + 0x63, 0x8c, 0xed, 0x65, 0x38, 0xd7, 0xb1, 0x2d, 0xdb, 0x43, 0xed, 0x56, 0x1b, 0xe1, 0x26, 0x9e, + 0x66, 0x62, 0xf6, 0xbf, 0x8f, 0xf6, 0x68, 0xc3, 0x0f, 0xc2, 0xd2, 0x34, 0x00, 0x8c, 0xe9, 0x4e, + 0xf7, 0x60, 0x2e, 0x0f, 0x99, 0x70, 0x5c, 0xe8, 0x63, 0x40, 0x23, 0x43, 0x53, 0xf0, 0x1a, 0x5b, + 0xda, 0x59, 0xc7, 0xab, 0xe3, 0xcf, 0x97, 0xb5, 0x04, 0x5e, 0xa5, 0xb7, 0x36, 0xf7, 0xcb, 0x55, + 0xe3, 0xa0, 0xb2, 0xbf, 0xb9, 0x5d, 0xd6, 0xd4, 0xc5, 0xb1, 0xd4, 0xf7, 0x47, 0xb5, 0x37, 0xdf, + 0x7c, 0xf3, 0xcd, 0x44, 0xee, 0xdb, 0x09, 0x98, 0x10, 0x3b, 0x63, 0xfd, 0xe3, 0xf0, 0x28, 0xbf, + 0x8d, 0x75, 0x91, 0x57, 0x7d, 0xdd, 0x6a, 0x93, 0x50, 0x6d, 0x9a, 0xb4, 0xb7, 0xf4, 0xad, 0x7c, + 0x8e, 0x49, 0xed, 0x21, 0xef, 0x25, 0xab, 0x8d, 0x03, 0xb1, 0x69, 0x7a, 0xfa, 0x16, 0xcc, 0xdb, + 0x4e, 0xd5, 0xf5, 0x4c, 0xbb, 0x6e, 0xb6, 0xeb, 0xd5, 0x60, 0x03, 0xa1, 0x6a, 0xd6, 0x6a, 0xc8, + 0x75, 0x1d, 0xba, 0x44, 0xf8, 0x2c, 0xe7, 0x6d, 0x67, 0x8f, 0x09, 0x07, 0xb5, 0xb3, 0xc0, 0x44, + 0xa5, 0x88, 0x50, 0x7b, 0x45, 0xc4, 0xe3, 0x30, 0xd6, 0x34, 0x5b, 0x55, 0x64, 0x7b, 0xed, 0x53, + 0xd2, 0xcf, 0xa5, 0x8c, 0x54, 0xd3, 0x6c, 0x95, 0xf1, 0xf1, 0x47, 0xe7, 0x83, 0xb0, 0x1d, 0xff, + 0xab, 0x0a, 0x99, 0x70, 0x4f, 0x87, 0x5b, 0xe4, 0x1a, 0xa9, 0xdf, 0x0a, 0xc9, 0xf0, 0x27, 0xfb, + 0x76, 0x80, 0x4b, 0x25, 0x5c, 0xd8, 0xf3, 0x23, 0xb4, 0xd3, 0x32, 0x28, 0x12, 0x2f, 0xaa, 0x38, + 0xa7, 0x11, 0xed, 0xdf, 0x53, 0x06, 0x3b, 0xd2, 0xef, 0xc0, 0xc8, 0x2b, 0x2e, 0xe1, 0x1e, 0x21, + 0xdc, 0x97, 0xfa, 0x73, 0xdf, 0xdd, 0x23, 0xe4, 0x63, 0x77, 0xf7, 0xaa, 0x95, 0x1d, 0x63, 0xbb, + 0xb0, 0x65, 0x30, 0xb8, 0xfe, 0x18, 0x24, 0x1b, 0xe6, 0x67, 0x4e, 0xc5, 0x25, 0x80, 0x0c, 0x0d, + 0x6a, 0xf8, 0xc7, 0x20, 0xf9, 0x3a, 0x32, 0x5f, 0x15, 0x0b, 0x2f, 0x19, 0xfa, 0x08, 0x43, 0xff, + 0x0a, 0x0c, 0x13, 0x7b, 0xe9, 0x00, 0xcc, 0x62, 0xda, 0x90, 0x9e, 0x82, 0x64, 0x69, 0xc7, 0xc0, + 0xe1, 0xaf, 0x41, 0x86, 0x8e, 0x56, 0x77, 0x37, 0xcb, 0xa5, 0xb2, 0x96, 0xc8, 0xad, 0xc1, 0x08, + 0x35, 0x02, 0x4e, 0x0d, 0xdf, 0x0c, 0xda, 0x10, 0x3b, 0x64, 0x1c, 0x0a, 0x9f, 0x3d, 0xd8, 0x2e, + 0x96, 0x0d, 0x2d, 0x11, 0x76, 0xaf, 0x0b, 0x99, 0x70, 0x3b, 0xf7, 0x93, 0x89, 0xa9, 0xdf, 0x53, + 0x20, 0x1d, 0x6a, 0xcf, 0x70, 0x63, 0x60, 0x36, 0x1a, 0xce, 0xeb, 0x55, 0xb3, 0x61, 0x99, 0x2e, + 0x0b, 0x0a, 0x20, 0x43, 0x05, 0x3c, 0x32, 0xa8, 0xd3, 0x7e, 0x22, 0xca, 0x7f, 0x59, 0x01, 0x4d, + 0x6e, 0xed, 0x24, 0x05, 0x95, 0x9f, 0xaa, 0x82, 0x5f, 0x54, 0x60, 0x42, 0xec, 0xe7, 0x24, 0xf5, + 0x2e, 0xfe, 0x54, 0xd5, 0xfb, 0x6e, 0x02, 0xc6, 0x85, 0x2e, 0x6e, 0x50, 0xed, 0x7e, 0x01, 0xa6, + 0xac, 0x3a, 0x6a, 0xb6, 0x1c, 0x0f, 0xd9, 0xb5, 0xd3, 0x6a, 0x03, 0xbd, 0x86, 0x1a, 0xd9, 0x1c, + 0x29, 0x14, 0x57, 0xfa, 0xf7, 0x89, 0x4b, 0x9b, 0x01, 0x6e, 0x0b, 0xc3, 0xf2, 0xd3, 0x9b, 0xeb, + 0xe5, 0xed, 0xdd, 0x9d, 0xfd, 0x72, 0xa5, 0x74, 0xaf, 0x7a, 0x50, 0xf9, 0x44, 0x65, 0xe7, 0xa5, + 0x8a, 0xa1, 0x59, 0x92, 0xd8, 0x47, 0x98, 0xea, 0xbb, 0xa0, 0xc9, 0x4a, 0xe9, 0x8f, 0x42, 0x94, + 0x5a, 0xda, 0x90, 0x3e, 0x0d, 0x93, 0x95, 0x9d, 0xea, 0xde, 0xe6, 0x7a, 0xb9, 0x5a, 0xde, 0xd8, + 0x28, 0x97, 0xf6, 0xf7, 0xe8, 0x8d, 0xb3, 0x2f, 0xbd, 0x2f, 0x26, 0xf5, 0x17, 0x54, 0x98, 0x8e, + 0xd0, 0x44, 0x2f, 0xb0, 0x9e, 0x9d, 0xde, 0x46, 0x3c, 0x3b, 0x88, 0xf6, 0x4b, 0xb8, 0x2b, 0xd8, + 0x35, 0xdb, 0x1e, 0x6b, 0xf1, 0x9f, 0x01, 0x6c, 0x25, 0xdb, 0xb3, 0x8e, 0x2c, 0xd4, 0x66, 0xfb, + 0x0c, 0xb4, 0x91, 0x9f, 0x0c, 0xc6, 0xe9, 0x56, 0xc3, 0xc7, 0x40, 0x6f, 0x39, 0xae, 0xe5, 0x59, + 0xaf, 0xa1, 0xaa, 0x65, 0xf3, 0x4d, 0x09, 0xdc, 0xd8, 0x27, 0x0d, 0x8d, 0xcf, 0x6c, 0xda, 0x9e, + 0x2f, 0x6d, 0xa3, 0x63, 0x53, 0x92, 0xc6, 0x05, 0x5c, 0x35, 0x34, 0x3e, 0xe3, 0x4b, 0x5f, 0x84, + 0x4c, 0xdd, 0xe9, 0xe0, 0x36, 0x89, 0xca, 0xe1, 0xf5, 0x42, 0x31, 0xd2, 0x74, 0xcc, 0x17, 0x61, + 0x7d, 0x6c, 0xb0, 0x1b, 0x92, 0x31, 0xd2, 0x74, 0x8c, 0x8a, 0x3c, 0x0d, 0x93, 0xe6, 0xf1, 0x71, + 0x1b, 0x93, 0x73, 0x22, 0xda, 0x99, 0x4f, 0xf8, 0xc3, 0x44, 0x70, 0xf6, 0x2e, 0xa4, 0xb8, 0x1d, + 0xf0, 0x92, 0x8c, 0x2d, 0x51, 0x6d, 0xd1, 0x3d, 0xa9, 0xc4, 0xc2, 0x98, 0x91, 0xb2, 0xf9, 0xe4, + 0x45, 0xc8, 0x58, 0x6e, 0x35, 0xd8, 0x1c, 0x4d, 0x5c, 0x48, 0x2c, 0xa4, 0x8c, 0xb4, 0xe5, 0xfa, + 0xbb, 0x61, 0xb9, 0xaf, 0x25, 0x60, 0x42, 0xdc, 0xdc, 0xd5, 0xd7, 0x21, 0xd5, 0x70, 0x6a, 0x26, + 0x09, 0x2d, 0xfa, 0x64, 0x61, 0x21, 0x66, 0x3f, 0x78, 0x69, 0x8b, 0xc9, 0x1b, 0x3e, 0x72, 0xf6, + 0x3f, 0x2a, 0x90, 0xe2, 0xc3, 0xfa, 0x0c, 0x24, 0x5b, 0xa6, 0x77, 0x42, 0xe8, 0x86, 0x8b, 0x09, + 0x4d, 0x31, 0xc8, 0x31, 0x1e, 0x77, 0x5b, 0xa6, 0x4d, 0x42, 0x80, 0x8d, 0xe3, 0x63, 0xec, 0xd7, + 0x06, 0x32, 0xeb, 0xa4, 0xed, 0x77, 0x9a, 0x4d, 0x64, 0x7b, 0x2e, 0xf7, 0x2b, 0x1b, 0x2f, 0xb1, + 0x61, 0xfd, 0xe7, 0x60, 0xca, 0x6b, 0x9b, 0x56, 0x43, 0x90, 0x4d, 0x12, 0x59, 0x8d, 0x4f, 0xf8, + 0xc2, 0x79, 0x78, 0x8c, 0xf3, 0xd6, 0x91, 0x67, 0xd6, 0x4e, 0x50, 0x3d, 0x00, 0x8d, 0x90, 0x9d, + 0xc3, 0x47, 0x99, 0xc0, 0x3a, 0x9b, 0xe7, 0xd8, 0xdc, 0x1f, 0x28, 0x30, 0xc5, 0x6f, 0x54, 0xea, + 0xbe, 0xb1, 0xb6, 0x01, 0x4c, 0xdb, 0x76, 0xbc, 0xb0, 0xb9, 0xba, 0x43, 0xb9, 0x0b, 0xb7, 0x54, + 0xf0, 0x41, 0x46, 0x88, 0x60, 0xb6, 0x09, 0x10, 0xcc, 0xf4, 0x34, 0xdb, 0x3c, 0xa4, 0xd9, 0xce, + 0x3d, 0x79, 0xfc, 0x43, 0x6f, 0x6d, 0x81, 0x0e, 0xe1, 0x3b, 0x1a, 0xfd, 0x1c, 0x0c, 0x1f, 0xa2, + 0x63, 0xcb, 0x66, 0xfb, 0x89, 0xf4, 0x80, 0xef, 0x52, 0x26, 0xfd, 0x5d, 0xca, 0xe2, 0xcb, 0x30, + 0x5d, 0x73, 0x9a, 0xb2, 0xba, 0x45, 0x4d, 0xba, 0xbd, 0x76, 0x5f, 0x54, 0x7e, 0x1e, 0x82, 0x16, + 0xf3, 0xd7, 0x12, 0xea, 0x9d, 0xdd, 0xe2, 0x6f, 0x26, 0x66, 0xef, 0x50, 0xdc, 0x2e, 0xbf, 0x4c, + 0x03, 0x1d, 0x35, 0x50, 0x0d, 0xab, 0x0e, 0x7f, 0x74, 0x19, 0x9e, 0x3d, 0xb6, 0xbc, 0x93, 0xce, + 0xe1, 0x52, 0xcd, 0x69, 0x5e, 0x39, 0x76, 0x8e, 0x9d, 0xe0, 0x71, 0x17, 0x3e, 0x22, 0x07, 0xe4, + 0x13, 0x7b, 0xe4, 0x35, 0xe6, 0x8f, 0xce, 0xc6, 0x3e, 0x1f, 0xcb, 0x57, 0x60, 0x9a, 0x09, 0x57, + 0xc9, 0x9e, 0x3b, 0xbd, 0x35, 0xd0, 0xfb, 0xee, 0xbb, 0x64, 0x7f, 0xfb, 0x7b, 0x64, 0xad, 0x36, + 0xa6, 0x18, 0x14, 0xcf, 0xd1, 0x1b, 0x88, 0xbc, 0x01, 0x8f, 0x08, 0x7c, 0x34, 0x2f, 0x51, 0x3b, + 0x86, 0xf1, 0xdb, 0x8c, 0x71, 0x3a, 0xc4, 0xb8, 0xc7, 0xa0, 0xf9, 0x12, 0x8c, 0x9f, 0x85, 0xeb, + 0xdf, 0x31, 0xae, 0x0c, 0x0a, 0x93, 0xdc, 0x81, 0x49, 0x42, 0x52, 0xeb, 0xb8, 0x9e, 0xd3, 0x24, + 0x45, 0xaf, 0x3f, 0xcd, 0xbf, 0xff, 0x1e, 0x4d, 0x94, 0x09, 0x0c, 0x2b, 0xf9, 0xa8, 0x7c, 0x1e, + 0xc8, 0x63, 0x86, 0x3a, 0xaa, 0x35, 0x62, 0x18, 0xee, 0x33, 0x45, 0x7c, 0xf9, 0xfc, 0xa7, 0xe0, + 0x1c, 0xfe, 0x4c, 0x6a, 0x52, 0x58, 0x93, 0xf8, 0x5d, 0xa6, 0xec, 0x1f, 0x7c, 0x96, 0xe6, 0xe2, + 0xb4, 0x4f, 0x10, 0xd2, 0x29, 0xe4, 0xc5, 0x63, 0xe4, 0x79, 0xa8, 0xed, 0x56, 0xcd, 0x46, 0x94, + 0x7a, 0xa1, 0xdb, 0xf4, 0xec, 0xaf, 0xfe, 0x40, 0xf4, 0xe2, 0x1d, 0x8a, 0x2c, 0x34, 0x1a, 0xf9, + 0x03, 0x78, 0x34, 0x22, 0x2a, 0x06, 0xe0, 0xfc, 0x02, 0xe3, 0x3c, 0xd7, 0x15, 0x19, 0x98, 0x76, + 0x17, 0xf8, 0xb8, 0xef, 0xcb, 0x01, 0x38, 0xff, 0x21, 0xe3, 0xd4, 0x19, 0x96, 0xbb, 0x14, 0x33, + 0xde, 0x85, 0xa9, 0xd7, 0x50, 0xfb, 0xd0, 0x71, 0xd9, 0xd6, 0xc8, 0x00, 0x74, 0x5f, 0x64, 0x74, + 0x93, 0x0c, 0x48, 0xf6, 0x4a, 0x30, 0xd7, 0x2d, 0x48, 0x1d, 0x99, 0x35, 0x34, 0x00, 0xc5, 0x97, + 0x18, 0xc5, 0x28, 0x96, 0xc7, 0xd0, 0x02, 0x64, 0x8e, 0x1d, 0xb6, 0x2c, 0xc5, 0xc3, 0xbf, 0xcc, + 0xe0, 0x69, 0x8e, 0x61, 0x14, 0x2d, 0xa7, 0xd5, 0x69, 0xe0, 0x35, 0x2b, 0x9e, 0xe2, 0x2b, 0x9c, + 0x82, 0x63, 0x18, 0xc5, 0x19, 0xcc, 0xfa, 0x16, 0xa7, 0x70, 0x43, 0xf6, 0x7c, 0x01, 0xd2, 0x8e, + 0xdd, 0x38, 0x75, 0xec, 0x41, 0x94, 0xf8, 0x2a, 0x63, 0x00, 0x06, 0xc1, 0x04, 0xb7, 0x61, 0x6c, + 0x50, 0x47, 0xfc, 0xfa, 0x0f, 0x78, 0x7a, 0x70, 0x0f, 0xdc, 0x81, 0x49, 0x5e, 0xa0, 0x2c, 0xc7, + 0x1e, 0x80, 0xe2, 0x1f, 0x33, 0x8a, 0x89, 0x10, 0x8c, 0x5d, 0x86, 0x87, 0x5c, 0xef, 0x18, 0x0d, + 0x42, 0xf2, 0x35, 0x7e, 0x19, 0x0c, 0xc2, 0x4c, 0x79, 0x88, 0xec, 0xda, 0xc9, 0x60, 0x0c, 0x5f, + 0xe7, 0xa6, 0xe4, 0x18, 0x4c, 0x51, 0x82, 0xf1, 0xa6, 0xd9, 0x76, 0x4f, 0xcc, 0xc6, 0x40, 0xee, + 0xf8, 0x0d, 0xc6, 0x91, 0xf1, 0x41, 0xcc, 0x22, 0x1d, 0xfb, 0x2c, 0x34, 0xbf, 0xc9, 0x2d, 0x12, + 0x82, 0xb1, 0xd4, 0x73, 0x3d, 0xb2, 0x01, 0x75, 0x16, 0xb6, 0xdf, 0xe2, 0xa9, 0x47, 0xb1, 0xdb, + 0x61, 0xc6, 0xdb, 0x30, 0xe6, 0x5a, 0x9f, 0x19, 0x88, 0xe6, 0x9f, 0x70, 0x4f, 0x13, 0x00, 0x06, + 0xdf, 0x83, 0xc7, 0x22, 0x97, 0x89, 0x01, 0xc8, 0xfe, 0x29, 0x23, 0x9b, 0x89, 0x58, 0x2a, 0x58, + 0x49, 0x38, 0x2b, 0xe5, 0x3f, 0xe3, 0x25, 0x01, 0x49, 0x5c, 0xbb, 0xf8, 0x46, 0xc1, 0x35, 0x8f, + 0xce, 0x66, 0xb5, 0x7f, 0xce, 0xad, 0x46, 0xb1, 0x82, 0xd5, 0xf6, 0x61, 0x86, 0x31, 0x9e, 0xcd, + 0xaf, 0xdf, 0xe0, 0x85, 0x95, 0xa2, 0x0f, 0x44, 0xef, 0x7e, 0x1a, 0x66, 0x7d, 0x73, 0xf2, 0x8e, + 0xd4, 0xad, 0x36, 0xcd, 0xd6, 0x00, 0xcc, 0xbf, 0xcd, 0x98, 0x79, 0xc5, 0xf7, 0x5b, 0x5a, 0x77, + 0xdb, 0x6c, 0x61, 0xf2, 0x97, 0x21, 0xcb, 0xc9, 0x3b, 0x76, 0x1b, 0xd5, 0x9c, 0x63, 0xdb, 0xfa, + 0x0c, 0xaa, 0x0f, 0x40, 0xfd, 0x4d, 0xc9, 0x55, 0x07, 0x21, 0x38, 0x66, 0xde, 0x04, 0xcd, 0xef, + 0x55, 0xaa, 0x56, 0xb3, 0xe5, 0xb4, 0xbd, 0x18, 0xc6, 0x7f, 0xc1, 0x3d, 0xe5, 0xe3, 0x36, 0x09, + 0x2c, 0x5f, 0x86, 0x09, 0x72, 0x38, 0x68, 0x48, 0xfe, 0x0e, 0x23, 0x1a, 0x0f, 0x50, 0xac, 0x70, + 0xd4, 0x9c, 0x66, 0xcb, 0x6c, 0x0f, 0x52, 0xff, 0xfe, 0x25, 0x2f, 0x1c, 0x0c, 0xc2, 0x0a, 0x87, + 0x77, 0xda, 0x42, 0x78, 0xb5, 0x1f, 0x80, 0xe1, 0x5b, 0xbc, 0x70, 0x70, 0x0c, 0xa3, 0xe0, 0x0d, + 0xc3, 0x00, 0x14, 0xff, 0x8a, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x64, 0xb0, 0xd0, 0xb6, 0xd1, 0xb1, + 0xe5, 0x7a, 0x6d, 0xda, 0x07, 0xf7, 0xa7, 0xfa, 0xdd, 0x1f, 0x88, 0x4d, 0x98, 0x11, 0x82, 0xe6, + 0xef, 0xc2, 0xa4, 0xd4, 0x62, 0xe8, 0x71, 0xef, 0x2c, 0x64, 0xff, 0xd2, 0x8f, 0x58, 0x31, 0x12, + 0x3b, 0x8c, 0xfc, 0x16, 0xf6, 0xbb, 0xd8, 0x07, 0xc4, 0x93, 0x7d, 0xf6, 0x47, 0xbe, 0xeb, 0x85, + 0x36, 0x20, 0xbf, 0x01, 0xe3, 0x42, 0x0f, 0x10, 0x4f, 0xf5, 0x97, 0x19, 0x55, 0x26, 0xdc, 0x02, + 0xe4, 0xd7, 0x20, 0x89, 0xd7, 0xf3, 0x78, 0xf8, 0x5f, 0x61, 0x70, 0x22, 0x9e, 0x7f, 0x0e, 0x52, + 0x7c, 0x1d, 0x8f, 0x87, 0xfe, 0x12, 0x83, 0xfa, 0x10, 0x0c, 0xe7, 0x6b, 0x78, 0x3c, 0xfc, 0xaf, + 0x72, 0x38, 0x87, 0x60, 0xf8, 0xe0, 0x26, 0x7c, 0xfb, 0xaf, 0x27, 0x59, 0x1d, 0xe6, 0xb6, 0xbb, + 0x0d, 0xa3, 0x6c, 0xf1, 0x8e, 0x47, 0xff, 0x32, 0x3b, 0x39, 0x47, 0xe4, 0x6f, 0xc0, 0xf0, 0x80, + 0x06, 0xff, 0x1b, 0x0c, 0x4a, 0xe5, 0xf3, 0x25, 0x48, 0x87, 0x16, 0xec, 0x78, 0xf8, 0xdf, 0x64, + 0xf0, 0x30, 0x0a, 0xab, 0xce, 0x16, 0xec, 0x78, 0x82, 0xbf, 0xc5, 0x55, 0x67, 0x08, 0x6c, 0x36, + 0xbe, 0x56, 0xc7, 0xa3, 0xff, 0x36, 0xb7, 0x3a, 0x87, 0xe4, 0x5f, 0x80, 0x31, 0xbf, 0xfe, 0xc6, + 0xe3, 0xff, 0x0e, 0xc3, 0x07, 0x18, 0x6c, 0x81, 0x50, 0xfd, 0x8f, 0xa7, 0xf8, 0xbb, 0xdc, 0x02, + 0x21, 0x14, 0x4e, 0x23, 0x79, 0x4d, 0x8f, 0x67, 0xfa, 0x15, 0x9e, 0x46, 0xd2, 0x92, 0x8e, 0xbd, + 0x49, 0xca, 0x60, 0x3c, 0xc5, 0xdf, 0xe3, 0xde, 0x24, 0xf2, 0x58, 0x0d, 0x79, 0x91, 0x8c, 0xe7, + 0xf8, 0x07, 0x5c, 0x0d, 0x69, 0x8d, 0xcc, 0xef, 0x82, 0xde, 0xbd, 0x40, 0xc6, 0xf3, 0x7d, 0x9e, + 0xf1, 0x4d, 0x75, 0xad, 0x8f, 0xf9, 0x97, 0x60, 0x26, 0x7a, 0x71, 0x8c, 0x67, 0xfd, 0xd5, 0x1f, + 0x49, 0xb7, 0x33, 0xe1, 0xb5, 0x31, 0xbf, 0x1f, 0x54, 0xd9, 0xf0, 0xc2, 0x18, 0x4f, 0xfb, 0x85, + 0x1f, 0x89, 0x85, 0x36, 0xbc, 0x2e, 0xe6, 0x0b, 0x00, 0xc1, 0x9a, 0x14, 0xcf, 0xf5, 0x45, 0xc6, + 0x15, 0x02, 0xe1, 0xd4, 0x60, 0x4b, 0x52, 0x3c, 0xfe, 0x4b, 0x3c, 0x35, 0x18, 0x02, 0xa7, 0x06, + 0x5f, 0x8d, 0xe2, 0xd1, 0x5f, 0xe6, 0xa9, 0xc1, 0x21, 0xf9, 0xdb, 0x90, 0xb2, 0x3b, 0x8d, 0x06, + 0x8e, 0x2d, 0xbd, 0xff, 0x6b, 0x44, 0xd9, 0xff, 0xf1, 0x63, 0x06, 0xe6, 0x80, 0xfc, 0x1a, 0x0c, + 0xa3, 0xe6, 0x21, 0xaa, 0xc7, 0x21, 0xff, 0xe7, 0x8f, 0x79, 0x3d, 0xc1, 0xd2, 0xf9, 0x17, 0x00, + 0xe8, 0xcd, 0x34, 0x79, 0x4a, 0x14, 0x83, 0xfd, 0x5f, 0x3f, 0x66, 0x6f, 0x28, 0x04, 0x90, 0x80, + 0x80, 0xbe, 0xef, 0xd0, 0x9f, 0xe0, 0x07, 0x22, 0x01, 0xb9, 0x01, 0xbf, 0x05, 0xa3, 0xaf, 0xb8, + 0x8e, 0xed, 0x99, 0xc7, 0x71, 0xe8, 0xff, 0xcd, 0xd0, 0x5c, 0x1e, 0x1b, 0xac, 0xe9, 0xb4, 0x91, + 0x67, 0x1e, 0xbb, 0x71, 0xd8, 0xff, 0xc3, 0xb0, 0x3e, 0x00, 0x83, 0x6b, 0xa6, 0xeb, 0x0d, 0x72, + 0xdd, 0xff, 0x97, 0x83, 0x39, 0x00, 0x2b, 0x8d, 0x3f, 0xbf, 0x8a, 0x4e, 0xe3, 0xb0, 0x3f, 0xe4, + 0x4a, 0x33, 0xf9, 0xfc, 0x73, 0x30, 0x86, 0x3f, 0xd2, 0xb7, 0x76, 0x62, 0xc0, 0x7f, 0xc8, 0xc0, + 0x01, 0x02, 0x9f, 0xd9, 0xf5, 0xea, 0x9e, 0x15, 0x6f, 0xec, 0xff, 0xc7, 0x3c, 0xcd, 0xe5, 0xf3, + 0x05, 0x48, 0xbb, 0x5e, 0xbd, 0xde, 0x61, 0x1d, 0x4d, 0x0c, 0xfc, 0x8f, 0x7e, 0xec, 0xdf, 0xe4, + 0xfa, 0x98, 0xe2, 0xc5, 0xe8, 0xcd, 0x3a, 0xb8, 0xe3, 0xdc, 0x71, 0xe8, 0x36, 0x1d, 0x7c, 0xaf, + 0x01, 0x37, 0x7a, 0xee, 0xba, 0xe1, 0x45, 0xe4, 0x4a, 0xcd, 0x69, 0x1e, 0x3a, 0xee, 0x95, 0x43, + 0xc7, 0x3b, 0xb9, 0xe2, 0x9d, 0x20, 0x3c, 0xc6, 0xf6, 0xdf, 0x92, 0xf8, 0xf3, 0xec, 0xd9, 0x36, + 0xed, 0xc8, 0xf3, 0xd8, 0x8a, 0x85, 0xf5, 0xae, 0x90, 0x2d, 0x71, 0xfd, 0x3c, 0x8c, 0x90, 0x2b, + 0xb9, 0x4a, 0x1e, 0x3b, 0x29, 0xc5, 0xe4, 0xfd, 0x77, 0xe7, 0x87, 0x0c, 0x36, 0xe6, 0xcf, 0xae, + 0x90, 0x3d, 0xcb, 0x84, 0x30, 0xbb, 0xe2, 0xcf, 0x5e, 0xa3, 0xdb, 0x96, 0xc2, 0xec, 0x35, 0x7f, + 0x76, 0x95, 0x6c, 0x60, 0xaa, 0xc2, 0xec, 0xaa, 0x3f, 0xbb, 0x46, 0x36, 0xe9, 0xc7, 0x85, 0xd9, + 0x35, 0x7f, 0xf6, 0x3a, 0xd9, 0x9a, 0x4f, 0x0a, 0xb3, 0xd7, 0xfd, 0xd9, 0x1b, 0x64, 0x57, 0x7e, + 0x4a, 0x98, 0xbd, 0xe1, 0xcf, 0xde, 0x24, 0xbb, 0xf1, 0xba, 0x30, 0x7b, 0xd3, 0x9f, 0xbd, 0x45, + 0x5e, 0x31, 0x19, 0x15, 0x66, 0x6f, 0xe9, 0x73, 0x30, 0x4a, 0xaf, 0x7c, 0x99, 0x3c, 0xba, 0x9d, + 0x64, 0xd3, 0x7c, 0x30, 0x98, 0xbf, 0x4a, 0x5e, 0x27, 0x19, 0x11, 0xe7, 0xaf, 0x06, 0xf3, 0x2b, + 0xe4, 0xc5, 0x6a, 0x4d, 0x9c, 0x5f, 0x09, 0xe6, 0xaf, 0x65, 0xc7, 0xc9, 0x2b, 0x35, 0xc2, 0xfc, + 0xb5, 0x60, 0x7e, 0x35, 0x3b, 0x81, 0x83, 0x59, 0x9c, 0x5f, 0x0d, 0xe6, 0xd7, 0xb2, 0x93, 0x17, + 0x94, 0x85, 0x8c, 0x38, 0xbf, 0x96, 0xfb, 0x45, 0xe2, 0x5e, 0x3b, 0x70, 0xef, 0x8c, 0xe8, 0x5e, + 0xdf, 0xb1, 0x33, 0xa2, 0x63, 0x7d, 0x97, 0xce, 0x88, 0x2e, 0xf5, 0x9d, 0x39, 0x23, 0x3a, 0xd3, + 0x77, 0xe3, 0x8c, 0xe8, 0x46, 0xdf, 0x81, 0x33, 0xa2, 0x03, 0x7d, 0xd7, 0xcd, 0x88, 0xae, 0xf3, + 0x9d, 0x36, 0x23, 0x3a, 0xcd, 0x77, 0xd7, 0x8c, 0xe8, 0x2e, 0xdf, 0x51, 0x59, 0xc9, 0x51, 0x81, + 0x8b, 0xb2, 0x92, 0x8b, 0x02, 0xe7, 0x64, 0x25, 0xe7, 0x04, 0x6e, 0xc9, 0x4a, 0x6e, 0x09, 0x1c, + 0x92, 0x95, 0x1c, 0x12, 0xb8, 0x22, 0x2b, 0xb9, 0x22, 0x70, 0x02, 0xcb, 0x31, 0x03, 0xb5, 0x22, + 0x72, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xda, 0x37, 0xc7, 0xd4, + 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9f, 0x63, + 0x6a, 0x4c, 0x8e, 0xa9, 0x31, 0x39, 0xa6, 0xc6, 0xe4, 0x98, 0x1a, 0x93, 0x63, 0x6a, 0x4c, 0x8e, + 0xa9, 0x3d, 0x73, 0x2c, 0x70, 0xef, 0x8c, 0xe8, 0xde, 0xc8, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, + 0x23, 0xc7, 0xd4, 0x1e, 0x39, 0xa6, 0xf6, 0xc8, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, + 0xed, 0x91, 0x63, 0x6a, 0xaf, 0x1c, 0x53, 0x7b, 0xe6, 0x98, 0xda, 0x33, 0xc7, 0xd4, 0x9e, 0x39, + 0xa6, 0xf6, 0xcc, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0xe1, 0x1c, 0xfb, 0xd7, 0x2a, 0xe8, 0x34, 0xc7, + 0x76, 0xc9, 0xcb, 0x3f, 0xcc, 0x15, 0x73, 0x52, 0xa6, 0x8d, 0x60, 0xd7, 0x69, 0x81, 0x4b, 0xe6, + 0xa4, 0x5c, 0x13, 0xe7, 0x57, 0xfc, 0x79, 0x9e, 0x6d, 0xe2, 0xfc, 0x35, 0x7f, 0x9e, 0xe7, 0x9b, + 0x38, 0xbf, 0xea, 0xcf, 0xf3, 0x8c, 0x13, 0xe7, 0xd7, 0xfc, 0x79, 0x9e, 0x73, 0xe2, 0xfc, 0x75, + 0x7f, 0x9e, 0x67, 0x9d, 0x38, 0x7f, 0xc3, 0x9f, 0xe7, 0x79, 0x27, 0xce, 0xdf, 0xf4, 0xe7, 0x79, + 0xe6, 0x89, 0xf3, 0xb7, 0xf4, 0x0b, 0x72, 0xee, 0x71, 0x01, 0xdf, 0xb5, 0x17, 0xe4, 0xec, 0x93, + 0x24, 0xae, 0x06, 0x12, 0x3c, 0xff, 0x24, 0x89, 0x95, 0x40, 0x82, 0x67, 0xa0, 0x24, 0x71, 0x2d, + 0xf7, 0x39, 0xe2, 0x3e, 0x5b, 0x76, 0xdf, 0xac, 0xe4, 0xbe, 0x44, 0xc8, 0x75, 0xb3, 0x92, 0xeb, + 0x12, 0x21, 0xb7, 0xcd, 0x4a, 0x6e, 0x4b, 0x84, 0x5c, 0x36, 0x2b, 0xb9, 0x2c, 0x11, 0x72, 0xd7, + 0xac, 0xe4, 0xae, 0x44, 0xc8, 0x55, 0xb3, 0x92, 0xab, 0x12, 0x21, 0x37, 0xcd, 0x4a, 0x6e, 0x4a, + 0x84, 0x5c, 0x34, 0x2b, 0xb9, 0x28, 0x11, 0x72, 0xcf, 0xac, 0xe4, 0x9e, 0x44, 0xc8, 0x35, 0xe7, + 0x65, 0xd7, 0x24, 0xc2, 0x6e, 0x39, 0x2f, 0xbb, 0x25, 0x11, 0x76, 0xc9, 0x79, 0xd9, 0x25, 0x89, + 0xb0, 0x3b, 0xce, 0xcb, 0xee, 0x48, 0x84, 0x5d, 0xf1, 0xa7, 0x09, 0xde, 0x11, 0xee, 0x79, 0xed, + 0x4e, 0xcd, 0xfb, 0x40, 0x1d, 0xe1, 0xb2, 0xd0, 0x3e, 0xa4, 0x57, 0xf4, 0x25, 0xd2, 0xb0, 0x86, + 0x3b, 0x4e, 0x69, 0x05, 0x5b, 0x16, 0x1a, 0x8b, 0x10, 0xc2, 0x8e, 0x46, 0xac, 0x7e, 0xa0, 0xde, + 0x70, 0x59, 0x68, 0x33, 0xe2, 0xf5, 0xbb, 0xf9, 0x91, 0x77, 0x6c, 0x6f, 0x27, 0x78, 0xc7, 0xc6, + 0xcc, 0x7f, 0xd6, 0x8e, 0x6d, 0x31, 0xde, 0xe4, 0xbe, 0xb1, 0x17, 0xe3, 0x8d, 0xdd, 0xb5, 0xea, + 0x0c, 0xda, 0xc1, 0x2d, 0xc6, 0x9b, 0xd6, 0x37, 0xea, 0x87, 0xdb, 0x6f, 0xb1, 0x08, 0x36, 0x50, + 0x2b, 0x22, 0x82, 0xcf, 0xda, 0x6f, 0x2d, 0x0b, 0xa5, 0xe4, 0xac, 0x11, 0xac, 0x9e, 0x39, 0x82, + 0xcf, 0xda, 0x79, 0x2d, 0x0b, 0xe5, 0xe5, 0xcc, 0x11, 0xfc, 0x11, 0xf4, 0x43, 0x2c, 0x82, 0x03, + 0xf3, 0x9f, 0xb5, 0x1f, 0x5a, 0x8c, 0x37, 0x79, 0x64, 0x04, 0xab, 0x67, 0x88, 0xe0, 0x41, 0xfa, + 0xa3, 0xc5, 0x78, 0xd3, 0x46, 0x47, 0xf0, 0x07, 0xee, 0x66, 0xbe, 0xa2, 0xc0, 0x54, 0xc5, 0xaa, + 0x97, 0x9b, 0x87, 0xa8, 0x5e, 0x47, 0x75, 0x66, 0xc7, 0x65, 0xa1, 0x12, 0xf4, 0x70, 0xf5, 0x3b, + 0xef, 0xce, 0x07, 0x16, 0x5e, 0x83, 0x14, 0xb5, 0xe9, 0xf2, 0x72, 0xf6, 0xbe, 0x12, 0x53, 0xe1, + 0x7c, 0x51, 0xfd, 0x22, 0x87, 0x5d, 0x5d, 0xce, 0xfe, 0x27, 0x25, 0x54, 0xe5, 0xfc, 0xe1, 0xdc, + 0xaf, 0x10, 0x0d, 0xed, 0x0f, 0xac, 0xe1, 0x95, 0x81, 0x34, 0x0c, 0xe9, 0xf6, 0x78, 0x97, 0x6e, + 0x21, 0xad, 0x3a, 0x30, 0x59, 0xb1, 0xea, 0x15, 0xf2, 0x95, 0xde, 0x41, 0x54, 0xa2, 0x32, 0x52, + 0x3d, 0x58, 0x16, 0xc2, 0x32, 0x8c, 0xf0, 0x43, 0x5a, 0xac, 0x11, 0x39, 0x0b, 0x9f, 0xd6, 0x16, + 0x4e, 0xbb, 0xd8, 0xeb, 0xb4, 0x41, 0x65, 0xf7, 0x4f, 0xb8, 0xd8, 0xeb, 0x84, 0x41, 0x0e, 0xf9, + 0xa7, 0x7a, 0x83, 0x2f, 0xce, 0xf4, 0x2d, 0x1c, 0xfd, 0x3c, 0x24, 0x36, 0xe9, 0x1b, 0xc2, 0x99, + 0x62, 0x06, 0x2b, 0xf5, 0x9d, 0x77, 0xe7, 0x93, 0x07, 0x1d, 0xab, 0x6e, 0x24, 0x36, 0xeb, 0xfa, + 0x5d, 0x18, 0xfe, 0x14, 0xfb, 0x62, 0x1c, 0x16, 0x58, 0x65, 0x02, 0x1f, 0x8b, 0xd9, 0x62, 0x22, + 0xd4, 0x4b, 0x07, 0x96, 0xed, 0x5d, 0x5d, 0xb9, 0x69, 0x50, 0x8a, 0xdc, 0x9f, 0x07, 0xa0, 0xe7, + 0x5c, 0x37, 0xdd, 0x13, 0xbd, 0xc2, 0x99, 0xe9, 0xa9, 0x6f, 0x7e, 0xe7, 0xdd, 0xf9, 0xd5, 0x41, + 0x58, 0x9f, 0xad, 0x9b, 0xee, 0xc9, 0xb3, 0xde, 0x69, 0x0b, 0x2d, 0x15, 0x4f, 0x3d, 0xe4, 0x72, + 0xf6, 0x16, 0x5f, 0xf5, 0xd8, 0x75, 0x65, 0x43, 0xd7, 0x95, 0x12, 0xae, 0x69, 0x43, 0xbc, 0xa6, + 0xe5, 0x87, 0xbd, 0x9e, 0x37, 0xf8, 0x22, 0x21, 0x59, 0x52, 0x8d, 0xb3, 0xa4, 0xfa, 0x41, 0x2d, + 0xd9, 0xe2, 0xf5, 0x51, 0xba, 0x56, 0xb5, 0xdf, 0xb5, 0xaa, 0x1f, 0xe4, 0x5a, 0xff, 0x98, 0x66, + 0xab, 0x9f, 0x4f, 0x07, 0x36, 0x7d, 0x3b, 0xf1, 0xcf, 0xd6, 0x5e, 0xd0, 0x87, 0xda, 0x05, 0xe4, + 0x93, 0xf7, 0xdf, 0x9a, 0x57, 0x72, 0x5f, 0x49, 0xf0, 0x2b, 0xa7, 0x89, 0xf4, 0x70, 0x57, 0xfe, + 0x67, 0xa5, 0xa7, 0xfa, 0x28, 0x2c, 0xf4, 0x65, 0x05, 0x66, 0xba, 0x2a, 0x39, 0x35, 0xd3, 0x87, + 0x5b, 0xce, 0xed, 0xb3, 0x96, 0x73, 0xa6, 0xe0, 0xef, 0x28, 0x70, 0x4e, 0x2a, 0xaf, 0x54, 0xbd, + 0x2b, 0x92, 0x7a, 0x8f, 0x76, 0x9f, 0x89, 0x08, 0x86, 0xb4, 0x0b, 0xbb, 0x57, 0x02, 0x84, 0x98, + 0x7d, 0xbf, 0xaf, 0x4a, 0x7e, 0x3f, 0xef, 0x03, 0x22, 0xcc, 0xc5, 0x23, 0x80, 0xa9, 0xed, 0x40, + 0x72, 0xbf, 0x8d, 0x90, 0x3e, 0x07, 0x89, 0x9d, 0x36, 0xd3, 0x70, 0x82, 0xe2, 0x77, 0xda, 0xc5, + 0xb6, 0x69, 0xd7, 0x4e, 0x8c, 0xc4, 0x4e, 0x5b, 0xbf, 0x08, 0x6a, 0x81, 0xfd, 0xf4, 0x40, 0x7a, + 0x65, 0x92, 0x0a, 0x14, 0xec, 0x3a, 0x93, 0xc0, 0x73, 0xfa, 0x1c, 0x24, 0xb7, 0x90, 0x79, 0xc4, + 0x94, 0x00, 0x2a, 0x83, 0x47, 0x0c, 0x32, 0xce, 0x4e, 0xf8, 0x32, 0xa4, 0x38, 0xb1, 0x7e, 0x09, + 0x23, 0x8e, 0x3c, 0x76, 0x5a, 0x86, 0xc0, 0xea, 0xb0, 0x95, 0x8b, 0xcc, 0xea, 0x97, 0x61, 0xd8, + 0xb0, 0x8e, 0x4f, 0x3c, 0x76, 0xf2, 0x6e, 0x31, 0x3a, 0x9d, 0xbb, 0x07, 0x63, 0xbe, 0x46, 0x1f, + 0x32, 0xf5, 0x3a, 0xbd, 0x34, 0x7d, 0x36, 0xbc, 0x9e, 0xf0, 0x7d, 0x4b, 0x3a, 0xa4, 0x5f, 0x80, + 0xd4, 0x9e, 0xd7, 0x0e, 0x8a, 0x3e, 0xef, 0x48, 0xfd, 0xd1, 0xdc, 0x2f, 0x2a, 0x90, 0x5a, 0x47, + 0xa8, 0x45, 0x0c, 0xfe, 0x14, 0x24, 0xd7, 0x9d, 0xd7, 0x6d, 0xa6, 0xe0, 0x14, 0xb3, 0x28, 0x9e, + 0x66, 0x36, 0x25, 0xd3, 0xfa, 0x53, 0x61, 0xbb, 0x4f, 0xfb, 0x76, 0x0f, 0xc9, 0x11, 0xdb, 0xe7, + 0x04, 0xdb, 0x33, 0x07, 0x62, 0xa1, 0x2e, 0xfb, 0xdf, 0x80, 0x74, 0xe8, 0x2c, 0xfa, 0x02, 0x53, + 0x23, 0x21, 0x03, 0xc3, 0xb6, 0xc2, 0x12, 0x39, 0x04, 0xe3, 0xc2, 0x89, 0x31, 0x34, 0x64, 0xe2, + 0x1e, 0x50, 0x62, 0xe6, 0x45, 0xd1, 0xcc, 0xd1, 0xa2, 0xcc, 0xd4, 0xcb, 0xd4, 0x46, 0xc4, 0xdc, + 0x97, 0x68, 0x70, 0xf6, 0x76, 0x22, 0xfe, 0x9c, 0x1b, 0x06, 0xb5, 0x62, 0x35, 0x72, 0xcf, 0x01, + 0xd0, 0x94, 0x2f, 0xdb, 0x9d, 0xa6, 0x94, 0x75, 0x13, 0xdc, 0xc0, 0xfb, 0x27, 0x68, 0x1f, 0xb9, + 0x44, 0x44, 0xec, 0xa7, 0x70, 0x81, 0x01, 0x9a, 0x62, 0x04, 0xff, 0x4c, 0x2c, 0x3e, 0xb2, 0x13, + 0xc3, 0xa2, 0x59, 0x2a, 0x7a, 0x0f, 0x79, 0x05, 0xdb, 0xf1, 0x4e, 0x50, 0x5b, 0x42, 0xac, 0xe8, + 0xd7, 0x84, 0x84, 0x9d, 0x58, 0x79, 0xdc, 0x47, 0xf4, 0x04, 0x5d, 0xcb, 0x7d, 0x83, 0x28, 0x88, + 0x5b, 0x81, 0xae, 0x0b, 0x54, 0x07, 0xb8, 0x40, 0xfd, 0xba, 0xd0, 0xbf, 0xf5, 0x51, 0x53, 0xba, + 0xb5, 0xbc, 0x25, 0xdc, 0xe7, 0xf4, 0x57, 0x56, 0xbc, 0xc7, 0xe4, 0x36, 0xe5, 0x2a, 0x3f, 0x13, + 0xab, 0x72, 0x8f, 0xee, 0xf6, 0xac, 0x36, 0x55, 0x07, 0xb5, 0xe9, 0xef, 0xf9, 0x1d, 0x07, 0xfd, + 0x11, 0x07, 0xf2, 0x9b, 0x21, 0xfa, 0xc7, 0x62, 0x7d, 0x9f, 0x57, 0x4a, 0xbe, 0xaa, 0xab, 0x83, + 0xba, 0x3f, 0x9f, 0x28, 0x16, 0x7d, 0x75, 0x6f, 0x9c, 0x21, 0x04, 0xf2, 0x89, 0x52, 0xc9, 0x2f, + 0xdb, 0xa9, 0xcf, 0xbd, 0x35, 0xaf, 0x7c, 0xfd, 0xad, 0xf9, 0xa1, 0xdc, 0x6f, 0x28, 0x30, 0xc5, + 0x24, 0x43, 0x81, 0xfb, 0xac, 0xa4, 0xfc, 0x23, 0xbc, 0x66, 0x44, 0x59, 0xe0, 0x27, 0x16, 0xbc, + 0xdf, 0x56, 0x20, 0xdb, 0xa5, 0x2b, 0xb7, 0xf7, 0xf2, 0x40, 0x2a, 0xe7, 0x95, 0xf2, 0x4f, 0xdf, + 0xe6, 0xf7, 0x60, 0x78, 0xdf, 0x6a, 0xa2, 0x36, 0x5e, 0x09, 0xf0, 0x07, 0xaa, 0x32, 0x7f, 0x98, + 0x43, 0x87, 0xf8, 0x1c, 0x55, 0x4e, 0x98, 0x5b, 0xd1, 0xb3, 0x90, 0x5c, 0x37, 0x3d, 0x93, 0x68, + 0x90, 0xf1, 0xeb, 0xab, 0xe9, 0x99, 0xb9, 0x6b, 0x90, 0xd9, 0x3e, 0x25, 0xaf, 0xd0, 0xd4, 0xc9, + 0xeb, 0x21, 0x62, 0xf7, 0xc7, 0xfb, 0xd5, 0xab, 0x8b, 0xc3, 0xa9, 0xba, 0x76, 0x5f, 0xc9, 0x27, + 0x89, 0x3e, 0xaf, 0xc1, 0xc4, 0x0e, 0x56, 0x9b, 0xe0, 0x08, 0xec, 0x02, 0x28, 0xdb, 0x62, 0x23, + 0x14, 0x66, 0x35, 0x94, 0x6d, 0xa9, 0x7d, 0x54, 0x7d, 0xf3, 0x48, 0x6d, 0x9b, 0xea, 0xb7, 0x6d, + 0x8b, 0xc9, 0xd4, 0x84, 0x36, 0xb5, 0x98, 0x4c, 0x81, 0x36, 0xce, 0xce, 0xfb, 0x1f, 0x54, 0xd0, + 0x68, 0xab, 0xb3, 0x8e, 0x8e, 0x2c, 0xdb, 0xf2, 0xba, 0xfb, 0x55, 0x5f, 0x63, 0xfd, 0x05, 0x18, + 0xc3, 0x26, 0xdd, 0x60, 0x3f, 0xbd, 0x85, 0x4d, 0x7f, 0x91, 0xb5, 0x28, 0x12, 0x05, 0x1b, 0x20, + 0xa1, 0x13, 0x60, 0xf4, 0x0d, 0x50, 0x2b, 0x95, 0x6d, 0xb6, 0xb8, 0xad, 0xf6, 0x85, 0xb2, 0x37, + 0x70, 0xd8, 0x11, 0x1b, 0x73, 0x8f, 0x0d, 0x4c, 0xa0, 0xaf, 0x42, 0xa2, 0xb2, 0xcd, 0x1a, 0xde, + 0x4b, 0x83, 0xd0, 0x18, 0x89, 0xca, 0xf6, 0xec, 0xbf, 0x51, 0x60, 0x5c, 0x18, 0xd5, 0x73, 0x90, + 0xa1, 0x03, 0xa1, 0xcb, 0x1d, 0x31, 0x84, 0x31, 0xae, 0x73, 0xe2, 0x03, 0xea, 0x3c, 0x5b, 0x80, + 0x49, 0x69, 0x5c, 0x5f, 0x02, 0x3d, 0x3c, 0xc4, 0x94, 0xa0, 0x3f, 0x5b, 0x14, 0x31, 0x93, 0x7b, + 0x02, 0x20, 0xb0, 0xab, 0xff, 0x6b, 0x3b, 0x95, 0xf2, 0xde, 0x7e, 0x79, 0x5d, 0x53, 0x72, 0xdf, + 0x52, 0x20, 0xcd, 0xda, 0xd6, 0x9a, 0xd3, 0x42, 0x7a, 0x11, 0x94, 0x02, 0x8b, 0xa0, 0x87, 0xd3, + 0x5b, 0x29, 0xe8, 0x57, 0x40, 0x29, 0x0e, 0xee, 0x6a, 0xa5, 0xa8, 0xaf, 0x80, 0x52, 0x62, 0x0e, + 0x1e, 0xcc, 0x33, 0x4a, 0x29, 0xf7, 0x87, 0x2a, 0x4c, 0x87, 0xdb, 0x68, 0x5e, 0x4f, 0x2e, 0x8a, + 0xf7, 0x4d, 0xf9, 0xb1, 0xab, 0x2b, 0xd7, 0x56, 0x97, 0xf0, 0x3f, 0x7e, 0x48, 0x5e, 0x14, 0x6f, + 0xa1, 0xba, 0x45, 0xba, 0x5e, 0x13, 0xc9, 0x27, 0x43, 0xb3, 0x5d, 0xaf, 0x89, 0x08, 0xb3, 0x5d, + 0xaf, 0x89, 0x08, 0xb3, 0x5d, 0xaf, 0x89, 0x08, 0xb3, 0x5d, 0x8f, 0x02, 0x84, 0xd9, 0xae, 0xd7, + 0x44, 0x84, 0xd9, 0xae, 0xd7, 0x44, 0x84, 0xd9, 0xee, 0xd7, 0x44, 0xd8, 0x74, 0xcf, 0xd7, 0x44, + 0xc4, 0xf9, 0xee, 0xd7, 0x44, 0xc4, 0xf9, 0xee, 0xd7, 0x44, 0xf2, 0x49, 0xaf, 0xdd, 0x41, 0xbd, + 0x1f, 0x3a, 0x88, 0xf8, 0x7e, 0xf7, 0x80, 0x41, 0x01, 0xde, 0x81, 0x49, 0xba, 0x1f, 0x51, 0x72, + 0x6c, 0xcf, 0xb4, 0x6c, 0xd4, 0xd6, 0x3f, 0x0e, 0x19, 0x3a, 0x44, 0xef, 0x72, 0xa2, 0xee, 0x02, + 0xe9, 0x3c, 0x2b, 0xb7, 0x82, 0x74, 0xee, 0x4f, 0x93, 0x30, 0x43, 0x07, 0x2a, 0x66, 0x13, 0x09, + 0x2f, 0x19, 0x5d, 0x96, 0x1e, 0x29, 0x4d, 0x60, 0xf8, 0x83, 0x77, 0xe7, 0xe9, 0x68, 0xc1, 0x0f, + 0xa6, 0xcb, 0xd2, 0xc3, 0x25, 0x51, 0x2e, 0x58, 0x7f, 0x2e, 0x4b, 0x2f, 0x1e, 0x89, 0x72, 0xfe, + 0x72, 0xe3, 0xcb, 0xf1, 0x57, 0x90, 0x44, 0xb9, 0x75, 0x3f, 0xca, 0x2e, 0x4b, 0x2f, 0x23, 0x89, + 0x72, 0x65, 0x3f, 0xde, 0x2e, 0x4b, 0x8f, 0x9e, 0x44, 0xb9, 0x0d, 0x3f, 0xf2, 0x2e, 0x4b, 0x0f, + 0xa1, 0x44, 0xb9, 0x3b, 0x7e, 0x0c, 0x5e, 0x96, 0x5e, 0x55, 0x12, 0xe5, 0x5e, 0xf4, 0xa3, 0xf1, + 0xb2, 0xf4, 0xd2, 0x92, 0x28, 0xb7, 0xe9, 0xc7, 0xe5, 0x82, 0xfc, 0xfa, 0x92, 0x28, 0x78, 0x37, + 0x88, 0xd0, 0x05, 0xf9, 0x45, 0x26, 0x51, 0xf2, 0x13, 0x41, 0xac, 0x2e, 0xc8, 0xaf, 0x34, 0x89, + 0x92, 0x5b, 0x41, 0xd4, 0x2e, 0xc8, 0x8f, 0xca, 0x44, 0xc9, 0xed, 0x20, 0x7e, 0x17, 0xe4, 0x87, + 0x66, 0xa2, 0x64, 0x25, 0x88, 0xe4, 0x05, 0xf9, 0xf1, 0x99, 0x28, 0xb9, 0x13, 0xec, 0xa1, 0xff, + 0xbe, 0x14, 0x7e, 0xa1, 0x97, 0xa0, 0x72, 0x52, 0xf8, 0x41, 0x44, 0xe8, 0xe5, 0xa4, 0xd0, 0x83, + 0x88, 0xb0, 0xcb, 0x49, 0x61, 0x07, 0x11, 0x21, 0x97, 0x93, 0x42, 0x0e, 0x22, 0xc2, 0x2d, 0x27, + 0x85, 0x1b, 0x44, 0x84, 0x5a, 0x4e, 0x0a, 0x35, 0x88, 0x08, 0xb3, 0x9c, 0x14, 0x66, 0x10, 0x11, + 0x62, 0x39, 0x29, 0xc4, 0x20, 0x22, 0xbc, 0x72, 0x52, 0x78, 0x41, 0x44, 0x68, 0x5d, 0x92, 0x43, + 0x0b, 0xa2, 0xc2, 0xea, 0x92, 0x1c, 0x56, 0x10, 0x15, 0x52, 0x4f, 0xca, 0x21, 0x35, 0xf6, 0xe0, + 0xdd, 0xf9, 0x61, 0x3c, 0x14, 0x8a, 0xa6, 0x4b, 0x72, 0x34, 0x41, 0x54, 0x24, 0x5d, 0x92, 0x23, + 0x09, 0xa2, 0xa2, 0xe8, 0x92, 0x1c, 0x45, 0x10, 0x15, 0x41, 0x6f, 0xcb, 0x11, 0x14, 0xbc, 0xe2, + 0x93, 0x93, 0x9e, 0x28, 0xc6, 0x45, 0x90, 0x3a, 0x40, 0x04, 0xa9, 0x03, 0x44, 0x90, 0x3a, 0x40, + 0x04, 0xa9, 0x03, 0x44, 0x90, 0x3a, 0x40, 0x04, 0xa9, 0x03, 0x44, 0x90, 0x3a, 0x40, 0x04, 0xa9, + 0x83, 0x44, 0x90, 0x3a, 0x50, 0x04, 0xa9, 0xbd, 0x22, 0xe8, 0x92, 0xfc, 0xc2, 0x03, 0x44, 0x15, + 0xa4, 0x4b, 0xf2, 0x93, 0xcf, 0xf8, 0x10, 0x52, 0x07, 0x0a, 0x21, 0xb5, 0x57, 0x08, 0xfd, 0xbe, + 0x0a, 0xd3, 0x42, 0x08, 0xb1, 0xc7, 0x43, 0x1f, 0x56, 0x05, 0xba, 0x3e, 0xc0, 0xfb, 0x15, 0x51, + 0x31, 0x75, 0x7d, 0x80, 0x67, 0xd4, 0xfd, 0xe2, 0xac, 0xbb, 0x0a, 0x95, 0x07, 0xa8, 0x42, 0x1b, + 0x7e, 0x0c, 0x5d, 0x1f, 0xe0, 0xbd, 0x8b, 0xee, 0xd8, 0xbb, 0xd9, 0xaf, 0x08, 0xbc, 0x38, 0x50, + 0x11, 0xd8, 0x1c, 0xa8, 0x08, 0xdc, 0x0d, 0x3c, 0xf8, 0x4b, 0x09, 0x38, 0x17, 0x78, 0x90, 0x7e, + 0x22, 0x3f, 0x91, 0x94, 0x0b, 0x3d, 0xa1, 0xd2, 0xf9, 0x53, 0x9b, 0x90, 0x1b, 0x13, 0x9b, 0x75, + 0x7d, 0x57, 0x7c, 0x56, 0x95, 0x3f, 0xeb, 0xf3, 0x9b, 0x90, 0xc7, 0xd9, 0x5e, 0xe8, 0x25, 0x50, + 0x37, 0xeb, 0x2e, 0xa9, 0x16, 0x51, 0xa7, 0x2d, 0x19, 0x78, 0x5a, 0x37, 0x60, 0x84, 0x88, 0xbb, + 0xc4, 0xbd, 0x1f, 0xe4, 0xc4, 0xeb, 0x06, 0x63, 0xca, 0xbd, 0xad, 0xc0, 0x05, 0x21, 0x94, 0x3f, + 0x9c, 0x27, 0x06, 0xb7, 0x07, 0x7a, 0x62, 0x20, 0x24, 0x48, 0xf0, 0xf4, 0xe0, 0xe9, 0xee, 0x07, + 0xd5, 0xe1, 0x2c, 0x91, 0x9f, 0x24, 0xfc, 0x45, 0x98, 0x08, 0xae, 0x80, 0xdc, 0xb2, 0xad, 0xc5, + 0x6f, 0x66, 0x46, 0xa5, 0xe6, 0x9a, 0xb4, 0x89, 0xd6, 0x17, 0xe6, 0x67, 0x6b, 0x2e, 0x0f, 0x93, + 0x15, 0xf1, 0xbb, 0x3c, 0x71, 0x7b, 0x11, 0x29, 0xdc, 0x9a, 0xdf, 0xff, 0xea, 0xfc, 0x50, 0xee, + 0x63, 0x90, 0x09, 0x7f, 0x5d, 0x47, 0x02, 0x8e, 0x71, 0x60, 0x3e, 0xf9, 0x0e, 0x96, 0xfe, 0xfb, + 0x0a, 0x3c, 0x12, 0x16, 0x7f, 0xc9, 0xf2, 0x4e, 0x36, 0x6d, 0xdc, 0xd3, 0x3f, 0x07, 0x29, 0xc4, + 0x1c, 0xc7, 0x7e, 0xed, 0x84, 0xdd, 0x46, 0x46, 0x8a, 0x2f, 0x91, 0x7f, 0x0d, 0x1f, 0x22, 0x6d, + 0x71, 0xf0, 0xd3, 0xae, 0xcc, 0x3e, 0x05, 0xc3, 0x94, 0x5f, 0xd4, 0x6b, 0x5c, 0xd2, 0xeb, 0xd7, + 0x23, 0xf4, 0x22, 0x71, 0xa4, 0xdf, 0x15, 0xf4, 0x0a, 0xdd, 0xad, 0x46, 0x8a, 0x2f, 0xf1, 0xe0, + 0x2b, 0xa6, 0x70, 0xff, 0x47, 0x22, 0x2a, 0x5e, 0xc9, 0x05, 0x48, 0x95, 0x65, 0x99, 0x68, 0x3d, + 0xd7, 0x21, 0x59, 0x71, 0xea, 0xe4, 0x77, 0x58, 0xc8, 0xef, 0xe5, 0x32, 0x23, 0xb3, 0x1f, 0xcf, + 0xbd, 0x0c, 0xa9, 0xd2, 0x89, 0xd5, 0xa8, 0xb7, 0x91, 0xcd, 0x1e, 0xd9, 0xb3, 0x1d, 0x74, 0x8c, + 0x31, 0xfc, 0xb9, 0x5c, 0x09, 0xa6, 0x2a, 0x8e, 0x5d, 0x3c, 0xf5, 0xc2, 0x75, 0x63, 0x49, 0x4a, + 0x11, 0xf6, 0xc8, 0x87, 0x7c, 0x01, 0x04, 0x0b, 0x14, 0x87, 0xbf, 0xf3, 0xee, 0xbc, 0xb2, 0xef, + 0x6f, 0x9f, 0x6f, 0xc3, 0xa3, 0x2c, 0x7d, 0xba, 0xa8, 0x56, 0xe2, 0xa8, 0xc6, 0xd8, 0x63, 0xea, + 0x10, 0xdd, 0x26, 0xa6, 0xb3, 0x23, 0xe9, 0x1e, 0x4e, 0x33, 0xdc, 0x14, 0xf5, 0xd5, 0x4c, 0x3d, + 0x93, 0x66, 0x91, 0x74, 0x4b, 0x71, 0x74, 0x92, 0x66, 0x4f, 0xc2, 0x98, 0x3f, 0x17, 0x8a, 0x86, + 0x70, 0xa6, 0xac, 0x2c, 0xe6, 0x20, 0x1d, 0x4a, 0x58, 0x7d, 0x18, 0x94, 0x82, 0x36, 0x84, 0xff, + 0x2b, 0x6a, 0x0a, 0xfe, 0xaf, 0xa4, 0x25, 0x16, 0x9f, 0x82, 0x49, 0x69, 0xfb, 0x12, 0xcf, 0xac, + 0x6b, 0x80, 0xff, 0x2b, 0x6b, 0xe9, 0xd9, 0xe4, 0xe7, 0xfe, 0xd1, 0xdc, 0xd0, 0xe2, 0x6d, 0xd0, + 0xbb, 0x37, 0x3a, 0xf5, 0x11, 0x48, 0x14, 0x30, 0xe5, 0xa3, 0x90, 0x28, 0x16, 0x35, 0x65, 0x76, + 0xf2, 0xaf, 0x7d, 0xe9, 0x42, 0xba, 0x48, 0xbe, 0x8b, 0x7c, 0x0f, 0x79, 0xc5, 0x22, 0x03, 0x3f, + 0x0f, 0x8f, 0x44, 0x6e, 0x94, 0x62, 0x7c, 0xa9, 0x44, 0xf1, 0xeb, 0xeb, 0x5d, 0xf8, 0xf5, 0x75, + 0x82, 0x57, 0xf2, 0xfc, 0x81, 0x73, 0x41, 0x8f, 0xd8, 0x96, 0xcc, 0xd6, 0x43, 0x0f, 0xb8, 0x0b, + 0xf9, 0xe7, 0x99, 0x6c, 0x31, 0x52, 0x16, 0xc5, 0x3c, 0xb0, 0x2e, 0xe6, 0x4b, 0x0c, 0x5f, 0x8a, + 0xc4, 0x1f, 0x49, 0x4f, 0x55, 0xc5, 0x15, 0x82, 0x91, 0x94, 0x7c, 0x85, 0xd7, 0x23, 0x49, 0x4e, + 0x42, 0xef, 0xba, 0xaf, 0xfb, 0x0a, 0x97, 0x23, 0x65, 0xad, 0x98, 0x77, 0xbe, 0xca, 0xf9, 0x2b, + 0x6c, 0x91, 0x2f, 0x5c, 0xd5, 0x1f, 0xe1, 0x39, 0x2a, 0x54, 0x60, 0x66, 0x20, 0x2e, 0x95, 0x2f, + 0x31, 0x40, 0xb1, 0x27, 0xa0, 0xb7, 0x95, 0x38, 0x32, 0xff, 0x22, 0x23, 0x29, 0xf5, 0x24, 0x89, + 0x31, 0x15, 0x87, 0x17, 0xf7, 0xef, 0xbf, 0x37, 0x37, 0xf4, 0xce, 0x7b, 0x73, 0x43, 0xff, 0xe5, + 0xbd, 0xb9, 0xa1, 0xef, 0xbe, 0x37, 0xa7, 0x7c, 0xff, 0xbd, 0x39, 0xe5, 0x87, 0xef, 0xcd, 0x29, + 0x7f, 0xf2, 0xde, 0x9c, 0xf2, 0xe6, 0x83, 0x39, 0xe5, 0xeb, 0x0f, 0xe6, 0x94, 0x6f, 0x3c, 0x98, + 0x53, 0x7e, 0xf7, 0xc1, 0x9c, 0xf2, 0xf6, 0x83, 0x39, 0xe5, 0xfe, 0x83, 0x39, 0xe5, 0x9d, 0x07, + 0x73, 0xca, 0x77, 0x1f, 0xcc, 0x29, 0xdf, 0x7f, 0x30, 0x37, 0xf4, 0xc3, 0x07, 0x73, 0xca, 0x9f, + 0x3c, 0x98, 0x1b, 0x7a, 0xf3, 0xfd, 0xb9, 0xa1, 0xb7, 0xde, 0x9f, 0x1b, 0xfa, 0xfa, 0xfb, 0x73, + 0x0a, 0xfc, 0xb7, 0x55, 0xb8, 0xc8, 0xbe, 0x48, 0x46, 0xbf, 0xb7, 0xca, 0xbf, 0x4e, 0x46, 0x7a, + 0x82, 0x6b, 0xfc, 0x07, 0x9d, 0xfc, 0x81, 0x33, 0x7e, 0xab, 0x6c, 0xf6, 0x61, 0xbf, 0xc3, 0x96, + 0xfb, 0xb7, 0xc3, 0x30, 0xca, 0xf7, 0x82, 0xa3, 0x7e, 0x12, 0x7a, 0x0d, 0x52, 0x27, 0x56, 0xc3, + 0x6c, 0x5b, 0xde, 0x29, 0xdb, 0x04, 0x7d, 0x6c, 0x29, 0x50, 0x9b, 0x6f, 0x9b, 0xbe, 0xd8, 0x69, + 0x3a, 0x9d, 0xb6, 0xe1, 0x8b, 0xea, 0x17, 0x20, 0x73, 0x82, 0xac, 0xe3, 0x13, 0xaf, 0x6a, 0xd9, + 0xd5, 0x5a, 0x93, 0x34, 0xcb, 0xe3, 0x06, 0xd0, 0xb1, 0x4d, 0xbb, 0xd4, 0xc4, 0x27, 0xab, 0x9b, + 0x9e, 0x49, 0x6e, 0xd2, 0x33, 0x06, 0xf9, 0xac, 0x5f, 0x84, 0x4c, 0x1b, 0xb9, 0x9d, 0x86, 0x57, + 0xad, 0x39, 0x1d, 0xdb, 0x23, 0xed, 0xac, 0x6a, 0xa4, 0xe9, 0x58, 0x09, 0x0f, 0xe9, 0x4f, 0xc2, + 0xb8, 0xd7, 0xee, 0xa0, 0xaa, 0x5b, 0x73, 0x3c, 0xb7, 0x69, 0xda, 0xa4, 0x9d, 0x4d, 0x19, 0x19, + 0x3c, 0xb8, 0xc7, 0xc6, 0xc8, 0x9f, 0x1c, 0xa8, 0x39, 0x6d, 0x44, 0xee, 0xa6, 0x13, 0x06, 0x3d, + 0xd0, 0x35, 0x50, 0x5f, 0x45, 0xa7, 0xe4, 0x7e, 0x2d, 0x69, 0xe0, 0x8f, 0xfa, 0x33, 0x30, 0x42, + 0xff, 0x1a, 0x05, 0x69, 0xae, 0xc9, 0xa3, 0x6b, 0xff, 0xd2, 0xe8, 0x16, 0xad, 0xc1, 0x04, 0xf4, + 0x5b, 0x30, 0xea, 0xa1, 0x76, 0xdb, 0xb4, 0x6c, 0x72, 0xef, 0x94, 0x5e, 0x99, 0x8f, 0x30, 0xc3, + 0x3e, 0x95, 0x20, 0xbf, 0xee, 0x6a, 0x70, 0x79, 0x7d, 0x0d, 0x32, 0x44, 0x6e, 0xa5, 0x4a, 0xff, + 0x62, 0x47, 0xba, 0x67, 0x38, 0xa7, 0xa9, 0x1c, 0x7f, 0x52, 0xc0, 0x61, 0xf4, 0x97, 0xed, 0xc6, + 0xc9, 0x69, 0x9f, 0x8c, 0x38, 0x2d, 0xa9, 0xbc, 0x2b, 0xa4, 0x6b, 0xa4, 0xa7, 0x66, 0x3c, 0xf4, + 0xb7, 0xef, 0xb6, 0x21, 0x13, 0xd6, 0x8b, 0x9b, 0x81, 0x76, 0x3f, 0xc4, 0x0c, 0x4f, 0x07, 0xbf, + 0xe6, 0xde, 0xc3, 0x0a, 0x74, 0x3e, 0x9f, 0xb8, 0xa9, 0xcc, 0xee, 0x82, 0x26, 0x9f, 0x2f, 0x82, + 0xf2, 0xb2, 0x48, 0xa9, 0x85, 0x2f, 0x96, 0xec, 0x93, 0x07, 0x8c, 0xb9, 0x17, 0x60, 0x84, 0xc6, + 0x8f, 0x9e, 0x86, 0xd1, 0xe0, 0x47, 0x13, 0x53, 0x90, 0xdc, 0x3d, 0xa8, 0xec, 0xd1, 0x5f, 0x3f, + 0xdd, 0xdb, 0x2a, 0xec, 0xee, 0xed, 0x6f, 0x96, 0x3e, 0xa1, 0x25, 0xf4, 0x49, 0x48, 0x17, 0x37, + 0xb7, 0xb6, 0xaa, 0xc5, 0xc2, 0xe6, 0x56, 0xf9, 0x9e, 0xa6, 0xe6, 0xe6, 0x60, 0x84, 0xea, 0x49, + 0x7e, 0xc5, 0xad, 0x63, 0xdb, 0xa7, 0xbc, 0x7b, 0x20, 0x07, 0xb9, 0x6f, 0xea, 0x30, 0x5a, 0x68, + 0x34, 0xb6, 0xcd, 0x96, 0xab, 0xbf, 0x04, 0x53, 0xf4, 0xf7, 0x24, 0xf6, 0x9d, 0x75, 0xf2, 0x63, + 0x83, 0xb8, 0x36, 0x28, 0xec, 0x57, 0xec, 0x83, 0xeb, 0x66, 0xe2, 0x4b, 0x5d, 0xb2, 0xd4, 0xc0, + 0xdd, 0x1c, 0xfa, 0x3e, 0x68, 0x7c, 0x70, 0xa3, 0xe1, 0x98, 0x1e, 0xe6, 0x4d, 0xb0, 0xdf, 0x02, + 0xec, 0xcd, 0xcb, 0x45, 0x29, 0x6d, 0x17, 0x83, 0xfe, 0x71, 0x48, 0x6d, 0xda, 0xde, 0xb5, 0x15, + 0xcc, 0xc6, 0xff, 0xc2, 0x4a, 0x37, 0x1b, 0x17, 0xa1, 0x2c, 0x3e, 0x82, 0xa1, 0xaf, 0xaf, 0x62, + 0x74, 0xb2, 0x1f, 0x9a, 0x88, 0x04, 0x68, 0x72, 0xa8, 0xbf, 0x00, 0x63, 0xf8, 0xe6, 0x84, 0x9e, + 0x7c, 0x98, 0x77, 0xae, 0x5d, 0x70, 0x5f, 0x86, 0xe2, 0x03, 0x0c, 0x27, 0xa0, 0xe7, 0x1f, 0xe9, + 0x4b, 0x10, 0x52, 0x20, 0xc0, 0x60, 0x82, 0x3d, 0x5f, 0x83, 0xd1, 0x9e, 0x04, 0x7b, 0x92, 0x06, + 0x7b, 0x61, 0x0d, 0xf6, 0x7c, 0x0d, 0x52, 0x7d, 0x09, 0xc2, 0x1a, 0xf8, 0xc7, 0x7a, 0x11, 0x60, + 0xc3, 0x7a, 0x03, 0xd5, 0xa9, 0x0a, 0xf4, 0xef, 0xaf, 0xe4, 0x22, 0x18, 0x02, 0x21, 0x4a, 0x11, + 0x42, 0xe9, 0x65, 0x48, 0xef, 0x1d, 0x05, 0x24, 0xd0, 0x95, 0xc7, 0xbe, 0x1a, 0x47, 0x12, 0x4b, + 0x18, 0xe7, 0xab, 0x42, 0x2f, 0x26, 0xdd, 0x5f, 0x95, 0xd0, 0xd5, 0x84, 0x50, 0x81, 0x2a, 0x94, + 0x24, 0x13, 0xa3, 0x4a, 0x88, 0x25, 0x8c, 0xc3, 0xc5, 0xb0, 0xe8, 0x38, 0x58, 0x92, 0x55, 0xa5, + 0xf9, 0x08, 0x0a, 0x26, 0xc1, 0x8a, 0x21, 0x3b, 0x22, 0x1e, 0x21, 0x41, 0x8e, 0xc1, 0x13, 0xbd, + 0x3d, 0xc2, 0x65, 0xb8, 0x47, 0xf8, 0x71, 0x38, 0xcf, 0xc8, 0xfb, 0xac, 0x98, 0x67, 0x32, 0x36, + 0xcf, 0xb8, 0xa8, 0x94, 0x67, 0x7c, 0x58, 0xff, 0x24, 0x4c, 0xf2, 0x31, 0x5c, 0x9e, 0x30, 0xa9, + 0xc6, 0xfe, 0x42, 0x55, 0x6f, 0x52, 0x26, 0x49, 0x39, 0x65, 0xbc, 0x5e, 0x81, 0x09, 0x3e, 0xb4, + 0xed, 0x92, 0xcb, 0x9d, 0x62, 0x7f, 0xfd, 0xa1, 0x37, 0x23, 0x15, 0xa4, 0x84, 0x12, 0x7a, 0x76, + 0x1d, 0x66, 0xa2, 0xab, 0x51, 0xb8, 0xfc, 0x8e, 0xd1, 0xf2, 0x7b, 0x2e, 0x5c, 0x7e, 0x95, 0x70, + 0xf9, 0x2e, 0xc1, 0x23, 0x91, 0xb5, 0x27, 0x8e, 0x24, 0x11, 0x26, 0xb9, 0x0d, 0xe3, 0x42, 0xc9, + 0x09, 0x83, 0x87, 0x23, 0xc0, 0xc3, 0xdd, 0xe0, 0x20, 0xb4, 0x22, 0x56, 0x0f, 0x01, 0xac, 0x86, + 0xc1, 0x1f, 0x87, 0x09, 0xb1, 0xde, 0x84, 0xd1, 0xe3, 0x11, 0xe8, 0xf1, 0x08, 0x74, 0xf4, 0xb9, + 0x93, 0x11, 0xe8, 0xa4, 0x84, 0xde, 0xeb, 0x79, 0xee, 0xa9, 0x08, 0xf4, 0x54, 0x04, 0x3a, 0xfa, + 0xdc, 0x7a, 0x04, 0x5a, 0x0f, 0xa3, 0x9f, 0x83, 0x49, 0xa9, 0xc4, 0x84, 0xe1, 0xa3, 0x11, 0xf0, + 0xd1, 0x30, 0xfc, 0x79, 0xd0, 0xe4, 0xe2, 0x12, 0xc6, 0x4f, 0x46, 0xe0, 0x27, 0xa3, 0x4e, 0x1f, + 0xad, 0xfd, 0x48, 0x04, 0x7c, 0x24, 0xf2, 0xf4, 0xd1, 0x78, 0x2d, 0x02, 0xaf, 0x85, 0xf1, 0x79, + 0xc8, 0x84, 0xab, 0x49, 0x18, 0x9b, 0x8a, 0xc0, 0xa6, 0x64, 0xbb, 0x0b, 0xc5, 0x24, 0x2e, 0xd2, + 0xc7, 0x7a, 0xa4, 0x8b, 0x50, 0x42, 0xe2, 0x48, 0x32, 0x61, 0x92, 0x4f, 0xc1, 0xb9, 0xa8, 0x92, + 0x11, 0xc1, 0xb1, 0x10, 0xe6, 0x98, 0xc0, 0x3d, 0x62, 0xd0, 0xec, 0x99, 0x2d, 0xa9, 0x71, 0x9a, + 0xfd, 0x34, 0x4c, 0x47, 0x14, 0x8e, 0x08, 0xda, 0x25, 0xb1, 0x1b, 0xcb, 0x86, 0x68, 0x49, 0x11, + 0xb0, 0xec, 0xe3, 0x5d, 0xc7, 0xb2, 0xbd, 0x70, 0x57, 0xf6, 0xad, 0x69, 0x98, 0x60, 0xe5, 0x69, + 0xa7, 0x5d, 0x47, 0x6d, 0x54, 0xd7, 0xff, 0x42, 0xef, 0xde, 0x69, 0xb9, 0xbb, 0xa8, 0x31, 0xd4, + 0x19, 0x5a, 0xa8, 0x4f, 0xf7, 0x6c, 0xa1, 0xae, 0xc4, 0xd3, 0xc7, 0x75, 0x52, 0xa5, 0xae, 0x4e, + 0xea, 0xe9, 0xde, 0xa4, 0xbd, 0x1a, 0xaa, 0x52, 0x57, 0x43, 0xd5, 0x9f, 0x24, 0xb2, 0xaf, 0xda, + 0xe8, 0xee, 0xab, 0x16, 0x7a, 0xb3, 0xf4, 0x6e, 0xaf, 0x36, 0xba, 0xdb, 0xab, 0x18, 0x9e, 0xe8, + 0x2e, 0x6b, 0xa3, 0xbb, 0xcb, 0xea, 0xc3, 0xd3, 0xbb, 0xd9, 0xda, 0xe8, 0x6e, 0xb6, 0x62, 0x78, + 0xa2, 0x7b, 0xae, 0xcd, 0x88, 0x9e, 0xeb, 0x99, 0xde, 0x44, 0xfd, 0x5a, 0xaf, 0xad, 0xa8, 0xd6, + 0x6b, 0xb1, 0x8f, 0x52, 0x7d, 0x3b, 0xb0, 0xcd, 0x88, 0x0e, 0x2c, 0x4e, 0xb1, 0x1e, 0x8d, 0xd8, + 0x56, 0x54, 0x23, 0x16, 0xab, 0x58, 0xaf, 0x7e, 0xec, 0xcf, 0xc9, 0xfd, 0xd8, 0xe5, 0xde, 0x4c, + 0xd1, 0x6d, 0xd9, 0x46, 0x77, 0x5b, 0xb6, 0x10, 0x97, 0x73, 0x51, 0xdd, 0xd9, 0xa7, 0x7b, 0x76, + 0x67, 0x03, 0xa4, 0x70, 0x5c, 0x93, 0xf6, 0x72, 0xaf, 0x26, 0x6d, 0x29, 0x9e, 0xbb, 0x7f, 0xaf, + 0x76, 0xd0, 0xa3, 0x57, 0x7b, 0x36, 0x9e, 0xf8, 0x67, 0x2d, 0xdb, 0xcf, 0x5a, 0xb6, 0x9f, 0xb5, + 0x6c, 0x3f, 0x6b, 0xd9, 0x7e, 0xfa, 0x2d, 0x5b, 0x3e, 0xf9, 0xf9, 0xaf, 0xce, 0x2b, 0xb9, 0xff, + 0xac, 0xfa, 0x7f, 0x38, 0xeb, 0x25, 0xcb, 0x3b, 0xc1, 0xe5, 0x6d, 0x1b, 0x32, 0xe4, 0x4f, 0x5e, + 0x34, 0xcd, 0x56, 0xcb, 0xb2, 0x8f, 0x59, 0xcf, 0xb6, 0xd8, 0xbd, 0x95, 0xc8, 0x00, 0xe4, 0x8f, + 0x86, 0x6c, 0x53, 0x61, 0xb6, 0xdc, 0xd8, 0xc1, 0x88, 0x7e, 0x17, 0xd2, 0x4d, 0xf7, 0xd8, 0x67, + 0x4b, 0x74, 0x2d, 0x84, 0x12, 0x1b, 0xbd, 0xd2, 0x80, 0x0c, 0x9a, 0xfe, 0x00, 0x56, 0xed, 0xf0, + 0xd4, 0x0b, 0x54, 0x53, 0xe3, 0x54, 0xc3, 0x3e, 0x15, 0x55, 0x3b, 0x0c, 0x46, 0x70, 0xd8, 0xca, + 0xba, 0xc7, 0x55, 0x3a, 0x21, 0x78, 0x5e, 0x82, 0x49, 0x49, 0xdb, 0x88, 0x9c, 0x7f, 0x08, 0xdf, + 0x60, 0xc5, 0x64, 0xcd, 0xe3, 0x72, 0x22, 0x1c, 0x90, 0xb9, 0x27, 0x60, 0x5c, 0xe0, 0xd6, 0x33, + 0xa0, 0x1c, 0xb1, 0x2f, 0x53, 0x2a, 0x47, 0xb9, 0xaf, 0x28, 0x90, 0x66, 0x6f, 0x12, 0xec, 0x9a, + 0x56, 0x5b, 0x7f, 0x11, 0x92, 0x0d, 0xfe, 0x85, 0xa6, 0x87, 0xfd, 0xf2, 0x2c, 0x61, 0xd0, 0x37, + 0x60, 0xb8, 0xed, 0x7f, 0xe1, 0xe9, 0xa1, 0xbe, 0x11, 0x4b, 0xe0, 0xb9, 0xfb, 0x0a, 0x4c, 0xb1, + 0x17, 0x5d, 0x5d, 0xf6, 0xfa, 0xb3, 0xd9, 0x9a, 0xfd, 0xa6, 0x02, 0x63, 0xfe, 0x91, 0x7e, 0x08, + 0x13, 0xfe, 0x01, 0x7d, 0xc5, 0x9e, 0x46, 0x6a, 0x3e, 0x64, 0xe1, 0x2e, 0x8e, 0xa5, 0x88, 0x4f, + 0xf4, 0x59, 0x14, 0x5d, 0x93, 0xc5, 0xc1, 0xd9, 0x02, 0x4c, 0x47, 0x88, 0x9d, 0x65, 0x41, 0xce, + 0x5d, 0x84, 0xb1, 0x8a, 0xe3, 0xd1, 0xdf, 0xcd, 0xd1, 0xcf, 0x85, 0x9e, 0x2a, 0x14, 0x13, 0xda, + 0x10, 0x01, 0x2f, 0x5e, 0x84, 0x51, 0x96, 0xfd, 0xfa, 0x08, 0x24, 0xb6, 0x0b, 0xda, 0x10, 0xf9, + 0xbf, 0xa8, 0x29, 0xe4, 0xff, 0x92, 0x96, 0x28, 0x6e, 0x3d, 0xc4, 0x83, 0xa6, 0xa1, 0x77, 0x1e, + 0xcc, 0x0d, 0x49, 0x0f, 0x9a, 0x94, 0x37, 0xdf, 0x9f, 0x53, 0x0e, 0x47, 0xa8, 0x79, 0xfe, 0x7f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x0e, 0x08, 0xef, 0x2c, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafemarshaler/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafemarshaler/theproto3.pb.go index b964c29a8..d1e7c4c40 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafemarshaler/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafemarshaler/theproto3.pb.go @@ -273,492 +273,498 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7747 bytes of a gzipped FileDescriptorSet + // 7856 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0xf6, 0x8c, 0x28, 0x88, 0x1a, 0x91, 0x33, - 0xd0, 0x68, 0x44, 0xd1, 0x16, 0x87, 0xc3, 0xe1, 0xdc, 0x30, 0x96, 0x14, 0x00, 0x04, 0x47, 0x1c, - 0xf3, 0xe6, 0x26, 0x69, 0x49, 0xab, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x84, 0x04, 0x74, 0x23, 0xe8, - 0x86, 0x24, 0xfa, 0x21, 0xa5, 0x5d, 0x27, 0x1b, 0x6f, 0xb6, 0x72, 0xdd, 0xa4, 0xe2, 0xf5, 0xfa, - 0x22, 0x6f, 0x6a, 0x63, 0xef, 0xe6, 0xe6, 0x75, 0x36, 0xce, 0xd6, 0x56, 0x2a, 0xab, 0x3c, 0x38, - 0x99, 0xbc, 0xa4, 0xb4, 0xc9, 0x4b, 0xca, 0x95, 0x52, 0xad, 0xc6, 0xae, 0x8a, 0x93, 0x75, 0x12, - 0x6f, 0xd6, 0x55, 0xbb, 0x55, 0xde, 0x87, 0xad, 0x73, 0xeb, 0x3e, 0xe7, 0xa0, 0x81, 0x06, 0x47, - 0x92, 0xed, 0x07, 0xbd, 0xcc, 0xa0, 0xcf, 0xf9, 0xbf, 0xaf, 0xff, 0xfe, 0x6f, 0xe7, 0xef, 0xd3, - 0x0d, 0x10, 0x7e, 0x7e, 0x05, 0xce, 0x1f, 0xb9, 0xee, 0x51, 0x03, 0x5d, 0x6e, 0xb5, 0x5d, 0xdf, - 0x3d, 0xe8, 0x1c, 0x5e, 0xae, 0x21, 0xaf, 0xda, 0xae, 0xb7, 0x7c, 0xb7, 0xbd, 0x48, 0xc6, 0xcc, - 0x49, 0x2a, 0xb1, 0xc8, 0x25, 0x72, 0x9b, 0x30, 0xb5, 0x56, 0x6f, 0xa0, 0xd5, 0x40, 0x70, 0x17, - 0xf9, 0xe6, 0x4d, 0x48, 0x1e, 0xd6, 0x1b, 0x28, 0xab, 0x9d, 0xd7, 0xe7, 0xd3, 0xcb, 0x17, 0x17, - 0x15, 0xd0, 0xa2, 0x8c, 0xd8, 0xc1, 0xc3, 0x16, 0x41, 0xe4, 0xbe, 0x97, 0x84, 0x33, 0x11, 0xb3, - 0xa6, 0x09, 0x49, 0xc7, 0x6e, 0x62, 0x46, 0x6d, 0x7e, 0xcc, 0x22, 0x9f, 0xcd, 0x2c, 0x8c, 0xb6, - 0xec, 0xea, 0xab, 0xf6, 0x11, 0xca, 0x26, 0xc8, 0x30, 0x3f, 0x34, 0x67, 0x01, 0x6a, 0xa8, 0x85, - 0x9c, 0x1a, 0x72, 0xaa, 0x27, 0x59, 0xfd, 0xbc, 0x3e, 0x3f, 0x66, 0x09, 0x23, 0xe6, 0xc7, 0x60, - 0xaa, 0xd5, 0x39, 0x68, 0xd4, 0xab, 0x15, 0x41, 0x0c, 0xce, 0xeb, 0xf3, 0xc3, 0x96, 0x41, 0x27, - 0x56, 0x43, 0xe1, 0x27, 0x61, 0xf2, 0x75, 0x64, 0xbf, 0x2a, 0x8a, 0xa6, 0x89, 0xe8, 0x04, 0x1e, - 0x16, 0x04, 0x4b, 0x90, 0x69, 0x22, 0xcf, 0xb3, 0x8f, 0x50, 0xc5, 0x3f, 0x69, 0xa1, 0x6c, 0x92, - 0x5c, 0xfd, 0xf9, 0xae, 0xab, 0x57, 0xaf, 0x3c, 0xcd, 0x50, 0x7b, 0x27, 0x2d, 0x64, 0x16, 0x60, - 0x0c, 0x39, 0x9d, 0x26, 0x65, 0x18, 0xee, 0x61, 0xbf, 0xb2, 0xd3, 0x69, 0xaa, 0x2c, 0x29, 0x0c, - 0x63, 0x14, 0xa3, 0x1e, 0x6a, 0xbf, 0x56, 0xaf, 0xa2, 0xec, 0x08, 0x21, 0x78, 0xb2, 0x8b, 0x60, - 0x97, 0xce, 0xab, 0x1c, 0x1c, 0x67, 0x96, 0x60, 0x0c, 0xbd, 0xe1, 0x23, 0xc7, 0xab, 0xbb, 0x4e, - 0x76, 0x94, 0x90, 0x3c, 0x11, 0xe1, 0x45, 0xd4, 0xa8, 0xa9, 0x14, 0x21, 0xce, 0xbc, 0x0e, 0xa3, - 0x6e, 0xcb, 0xaf, 0xbb, 0x8e, 0x97, 0x4d, 0x9d, 0xd7, 0xe6, 0xd3, 0xcb, 0xe7, 0x22, 0x03, 0x61, - 0x9b, 0xca, 0x58, 0x5c, 0xd8, 0x5c, 0x07, 0xc3, 0x73, 0x3b, 0xed, 0x2a, 0xaa, 0x54, 0xdd, 0x1a, - 0xaa, 0xd4, 0x9d, 0x43, 0x37, 0x3b, 0x46, 0x08, 0xe6, 0xba, 0x2f, 0x84, 0x08, 0x96, 0xdc, 0x1a, - 0x5a, 0x77, 0x0e, 0x5d, 0x6b, 0xc2, 0x93, 0x8e, 0xcd, 0x69, 0x18, 0xf1, 0x4e, 0x1c, 0xdf, 0x7e, - 0x23, 0x9b, 0x21, 0x11, 0xc2, 0x8e, 0x72, 0x7f, 0x3a, 0x0c, 0x93, 0x83, 0x84, 0xd8, 0x6d, 0x18, - 0x3e, 0xc4, 0x57, 0x99, 0x4d, 0x9c, 0xc6, 0x06, 0x14, 0x23, 0x1b, 0x71, 0xe4, 0x01, 0x8d, 0x58, - 0x80, 0xb4, 0x83, 0x3c, 0x1f, 0xd5, 0x68, 0x44, 0xe8, 0x03, 0xc6, 0x14, 0x50, 0x50, 0x77, 0x48, - 0x25, 0x1f, 0x28, 0xa4, 0x5e, 0x84, 0xc9, 0x40, 0xa5, 0x4a, 0xdb, 0x76, 0x8e, 0x78, 0x6c, 0x5e, - 0x8e, 0xd3, 0x64, 0xb1, 0xcc, 0x71, 0x16, 0x86, 0x59, 0x13, 0x48, 0x3a, 0x36, 0x57, 0x01, 0x5c, - 0x07, 0xb9, 0x87, 0x95, 0x1a, 0xaa, 0x36, 0xb2, 0xa9, 0x1e, 0x56, 0xda, 0xc6, 0x22, 0x5d, 0x56, - 0x72, 0xe9, 0x68, 0xb5, 0x61, 0xde, 0x0a, 0x43, 0x6d, 0xb4, 0x47, 0xa4, 0x6c, 0xd2, 0x24, 0xeb, - 0x8a, 0xb6, 0x7d, 0x98, 0x68, 0x23, 0x1c, 0xf7, 0xa8, 0xc6, 0xae, 0x6c, 0x8c, 0x28, 0xb1, 0x18, - 0x7b, 0x65, 0x16, 0x83, 0xd1, 0x0b, 0x1b, 0x6f, 0x8b, 0x87, 0xe6, 0xe3, 0x10, 0x0c, 0x54, 0x48, - 0x58, 0x01, 0xa9, 0x42, 0x19, 0x3e, 0xb8, 0x65, 0x37, 0xd1, 0xcc, 0x4d, 0x98, 0x90, 0xcd, 0x63, - 0x9e, 0x85, 0x61, 0xcf, 0xb7, 0xdb, 0x3e, 0x89, 0xc2, 0x61, 0x8b, 0x1e, 0x98, 0x06, 0xe8, 0xc8, - 0xa9, 0x91, 0x2a, 0x37, 0x6c, 0xe1, 0x8f, 0x33, 0x37, 0x60, 0x5c, 0x3a, 0xfd, 0xa0, 0xc0, 0xdc, - 0xe7, 0x47, 0xe0, 0x6c, 0x54, 0xcc, 0x45, 0x86, 0xff, 0x34, 0x8c, 0x38, 0x9d, 0xe6, 0x01, 0x6a, - 0x67, 0x75, 0xc2, 0xc0, 0x8e, 0xcc, 0x02, 0x0c, 0x37, 0xec, 0x03, 0xd4, 0xc8, 0x26, 0xcf, 0x6b, - 0xf3, 0x13, 0xcb, 0x1f, 0x1b, 0x28, 0xaa, 0x17, 0x37, 0x30, 0xc4, 0xa2, 0x48, 0xf3, 0x59, 0x48, - 0xb2, 0x12, 0x87, 0x19, 0x16, 0x06, 0x63, 0xc0, 0xb1, 0x68, 0x11, 0x9c, 0xf9, 0x28, 0x8c, 0xe1, - 0xff, 0xa9, 0x6d, 0x47, 0x88, 0xce, 0x29, 0x3c, 0x80, 0xed, 0x6a, 0xce, 0x40, 0x8a, 0x84, 0x59, - 0x0d, 0xf1, 0xa5, 0x21, 0x38, 0xc6, 0x8e, 0xa9, 0xa1, 0x43, 0xbb, 0xd3, 0xf0, 0x2b, 0xaf, 0xd9, - 0x8d, 0x0e, 0x22, 0x01, 0x33, 0x66, 0x65, 0xd8, 0xe0, 0xa7, 0xf1, 0x98, 0x39, 0x07, 0x69, 0x1a, - 0x95, 0x75, 0xa7, 0x86, 0xde, 0x20, 0xd5, 0x67, 0xd8, 0xa2, 0x81, 0xba, 0x8e, 0x47, 0xf0, 0xe9, - 0x5f, 0xf1, 0x5c, 0x87, 0xbb, 0x96, 0x9c, 0x02, 0x0f, 0x90, 0xd3, 0xdf, 0x50, 0x0b, 0xdf, 0x63, - 0xd1, 0x97, 0xa7, 0xc6, 0x62, 0xee, 0x5b, 0x09, 0x48, 0x92, 0x7c, 0x9b, 0x84, 0xf4, 0xde, 0x4b, - 0x3b, 0xe5, 0xca, 0xea, 0xf6, 0x7e, 0x71, 0xa3, 0x6c, 0x68, 0xe6, 0x04, 0x00, 0x19, 0x58, 0xdb, - 0xd8, 0x2e, 0xec, 0x19, 0x89, 0xe0, 0x78, 0x7d, 0x6b, 0xef, 0xfa, 0x8a, 0xa1, 0x07, 0x80, 0x7d, - 0x3a, 0x90, 0x14, 0x05, 0xae, 0x2e, 0x1b, 0xc3, 0xa6, 0x01, 0x19, 0x4a, 0xb0, 0xfe, 0x62, 0x79, - 0xf5, 0xfa, 0x8a, 0x31, 0x22, 0x8f, 0x5c, 0x5d, 0x36, 0x46, 0xcd, 0x71, 0x18, 0x23, 0x23, 0xc5, - 0xed, 0xed, 0x0d, 0x23, 0x15, 0x70, 0xee, 0xee, 0x59, 0xeb, 0x5b, 0x77, 0x8c, 0xb1, 0x80, 0xf3, - 0x8e, 0xb5, 0xbd, 0xbf, 0x63, 0x40, 0xc0, 0xb0, 0x59, 0xde, 0xdd, 0x2d, 0xdc, 0x29, 0x1b, 0xe9, - 0x40, 0xa2, 0xf8, 0xd2, 0x5e, 0x79, 0xd7, 0xc8, 0x48, 0x6a, 0x5d, 0x5d, 0x36, 0xc6, 0x83, 0x53, - 0x94, 0xb7, 0xf6, 0x37, 0x8d, 0x09, 0x73, 0x0a, 0xc6, 0xe9, 0x29, 0xb8, 0x12, 0x93, 0xca, 0xd0, - 0xf5, 0x15, 0xc3, 0x08, 0x15, 0xa1, 0x2c, 0x53, 0xd2, 0xc0, 0xf5, 0x15, 0xc3, 0xcc, 0x95, 0x60, - 0x98, 0x44, 0x97, 0x69, 0xc2, 0xc4, 0x46, 0xa1, 0x58, 0xde, 0xa8, 0x6c, 0xef, 0xec, 0xad, 0x6f, - 0x6f, 0x15, 0x36, 0x0c, 0x2d, 0x1c, 0xb3, 0xca, 0x9f, 0xda, 0x5f, 0xb7, 0xca, 0xab, 0x46, 0x42, - 0x1c, 0xdb, 0x29, 0x17, 0xf6, 0xca, 0xab, 0x86, 0x9e, 0xab, 0xc2, 0xd9, 0xa8, 0x3a, 0x13, 0x99, - 0x19, 0x82, 0x8b, 0x13, 0x3d, 0x5c, 0x4c, 0xb8, 0xba, 0x5c, 0xfc, 0xeb, 0x1a, 0x9c, 0x89, 0xa8, - 0xb5, 0x91, 0x27, 0x79, 0x0e, 0x86, 0x69, 0x88, 0xd2, 0xd5, 0xe7, 0xa9, 0xc8, 0xa2, 0x4d, 0x02, - 0xb6, 0x6b, 0x05, 0x22, 0x38, 0x71, 0x05, 0xd6, 0x7b, 0xac, 0xc0, 0x98, 0xa2, 0x4b, 0xc9, 0xcf, - 0x6a, 0x90, 0xed, 0xc5, 0x1d, 0x53, 0x28, 0x12, 0x52, 0xa1, 0xb8, 0xad, 0x2a, 0x70, 0xa1, 0xf7, - 0x35, 0x74, 0x69, 0xf1, 0x35, 0x0d, 0xa6, 0xa3, 0x1b, 0x95, 0x48, 0x1d, 0x9e, 0x85, 0x91, 0x26, - 0xf2, 0x8f, 0x5d, 0xbe, 0x58, 0x5f, 0x8a, 0x58, 0x02, 0xf0, 0xb4, 0x6a, 0x2b, 0x86, 0x12, 0xd7, - 0x10, 0xbd, 0x57, 0xb7, 0x41, 0xb5, 0xe9, 0xd2, 0xf4, 0x97, 0x12, 0xf0, 0x50, 0x24, 0x79, 0xa4, - 0xa2, 0x8f, 0x01, 0xd4, 0x9d, 0x56, 0xc7, 0xa7, 0x0b, 0x32, 0xad, 0x4f, 0x63, 0x64, 0x84, 0xe4, - 0x3e, 0xae, 0x3d, 0x1d, 0x3f, 0x98, 0xd7, 0xc9, 0x3c, 0xd0, 0x21, 0x22, 0x70, 0x33, 0x54, 0x34, - 0x49, 0x14, 0x9d, 0xed, 0x71, 0xa5, 0x5d, 0x6b, 0xdd, 0x12, 0x18, 0xd5, 0x46, 0x1d, 0x39, 0x7e, - 0xc5, 0xf3, 0xdb, 0xc8, 0x6e, 0xd6, 0x9d, 0x23, 0x52, 0x80, 0x53, 0xf9, 0xe1, 0x43, 0xbb, 0xe1, - 0x21, 0x6b, 0x92, 0x4e, 0xef, 0xf2, 0x59, 0x8c, 0x20, 0xab, 0x4c, 0x5b, 0x40, 0x8c, 0x48, 0x08, - 0x3a, 0x1d, 0x20, 0x72, 0xbf, 0x3c, 0x0a, 0x69, 0xa1, 0xad, 0x33, 0x2f, 0x40, 0xe6, 0x15, 0xfb, - 0x35, 0xbb, 0xc2, 0x5b, 0x75, 0x6a, 0x89, 0x34, 0x1e, 0xdb, 0x61, 0xed, 0xfa, 0x12, 0x9c, 0x25, - 0x22, 0x6e, 0xc7, 0x47, 0xed, 0x4a, 0xb5, 0x61, 0x7b, 0x1e, 0x31, 0x5a, 0x8a, 0x88, 0x9a, 0x78, - 0x6e, 0x1b, 0x4f, 0x95, 0xf8, 0x8c, 0x79, 0x0d, 0xce, 0x10, 0x44, 0xb3, 0xd3, 0xf0, 0xeb, 0xad, - 0x06, 0xaa, 0xe0, 0x9b, 0x07, 0x8f, 0x14, 0xe2, 0x40, 0xb3, 0x29, 0x2c, 0xb1, 0xc9, 0x04, 0xb0, - 0x46, 0x9e, 0x79, 0x07, 0x1e, 0x23, 0xb0, 0x23, 0xe4, 0xa0, 0xb6, 0xed, 0xa3, 0x0a, 0xfa, 0xab, - 0x1d, 0xbb, 0xe1, 0x55, 0x6c, 0xa7, 0x56, 0x39, 0xb6, 0xbd, 0xe3, 0xec, 0x59, 0x91, 0xe0, 0x11, - 0x2c, 0x7b, 0x87, 0x89, 0x96, 0x89, 0x64, 0xc1, 0xa9, 0x3d, 0x6f, 0x7b, 0xc7, 0x66, 0x1e, 0xa6, - 0x09, 0x91, 0xe7, 0xb7, 0xeb, 0xce, 0x51, 0xa5, 0x7a, 0x8c, 0xaa, 0xaf, 0x56, 0x3a, 0xfe, 0xe1, - 0xcd, 0xec, 0xa3, 0x22, 0x03, 0x51, 0x72, 0x97, 0xc8, 0x94, 0xb0, 0xc8, 0xbe, 0x7f, 0x78, 0xd3, - 0xdc, 0x85, 0x0c, 0xf6, 0x47, 0xb3, 0xfe, 0x19, 0x54, 0x39, 0x74, 0xdb, 0x64, 0x71, 0x99, 0x88, - 0x48, 0x6e, 0xc1, 0x88, 0x8b, 0xdb, 0x0c, 0xb0, 0xe9, 0xd6, 0x50, 0x7e, 0x78, 0x77, 0xa7, 0x5c, - 0x5e, 0xb5, 0xd2, 0x9c, 0x65, 0xcd, 0x6d, 0xe3, 0x98, 0x3a, 0x72, 0x03, 0x1b, 0xa7, 0x69, 0x4c, - 0x1d, 0xb9, 0xdc, 0xc2, 0xd7, 0xe0, 0x4c, 0xb5, 0x4a, 0x2f, 0xbb, 0x5e, 0xad, 0xb0, 0x2e, 0xdf, - 0xcb, 0x1a, 0x92, 0xbd, 0xaa, 0xd5, 0x3b, 0x54, 0x80, 0x85, 0xb9, 0x67, 0xde, 0x82, 0x87, 0x42, - 0x7b, 0x89, 0xc0, 0xa9, 0xae, 0xab, 0x54, 0xa1, 0xd7, 0xe0, 0x4c, 0xeb, 0xa4, 0x1b, 0x68, 0x4a, - 0x67, 0x6c, 0x9d, 0xa8, 0xb0, 0x27, 0xc8, 0x9d, 0x5b, 0x1b, 0x55, 0x6d, 0x1f, 0xd5, 0xb2, 0x0f, - 0x8b, 0xd2, 0xc2, 0x84, 0x79, 0x19, 0x8c, 0x6a, 0xb5, 0x82, 0x1c, 0xfb, 0xa0, 0x81, 0x2a, 0x76, - 0x1b, 0x39, 0xb6, 0x97, 0x9d, 0x13, 0x85, 0x27, 0xaa, 0xd5, 0x32, 0x99, 0x2d, 0x90, 0x49, 0x73, - 0x01, 0xa6, 0xdc, 0x83, 0x57, 0xaa, 0x34, 0xb8, 0x2a, 0xad, 0x36, 0x3a, 0xac, 0xbf, 0x91, 0xbd, - 0x48, 0xcc, 0x34, 0x89, 0x27, 0x48, 0x68, 0xed, 0x90, 0x61, 0xf3, 0x29, 0x30, 0xaa, 0xde, 0xb1, - 0xdd, 0x6e, 0x91, 0xd5, 0xdd, 0x6b, 0xd9, 0x55, 0x94, 0x7d, 0x82, 0x8a, 0xd2, 0xf1, 0x2d, 0x3e, - 0x6c, 0xbe, 0x08, 0x67, 0x3b, 0x4e, 0xdd, 0xf1, 0x51, 0xbb, 0xd5, 0x46, 0xb8, 0x49, 0xa7, 0x99, - 0x96, 0xfd, 0x9f, 0xa3, 0x3d, 0xda, 0xec, 0x7d, 0x51, 0x9a, 0x7a, 0xd7, 0x3a, 0xd3, 0xe9, 0x1e, - 0xcc, 0xe5, 0x21, 0x23, 0x3a, 0xdd, 0x1c, 0x03, 0xea, 0x76, 0x43, 0xc3, 0x6b, 0x68, 0x69, 0x7b, - 0x15, 0xaf, 0x7e, 0x3f, 0x57, 0x36, 0x12, 0x78, 0x15, 0xde, 0x58, 0xdf, 0x2b, 0x57, 0xac, 0xfd, - 0xad, 0xbd, 0xf5, 0xcd, 0xb2, 0xa1, 0x2f, 0x8c, 0xa5, 0xbe, 0x3f, 0x6a, 0xbc, 0xf9, 0xe6, 0x9b, - 0x6f, 0x26, 0x72, 0xdf, 0x4e, 0xc0, 0x84, 0xdc, 0xf9, 0x9a, 0x9f, 0x80, 0x87, 0xf9, 0x6d, 0xaa, - 0x87, 0xfc, 0xca, 0xeb, 0xf5, 0x36, 0x89, 0xc3, 0xa6, 0x4d, 0x7b, 0xc7, 0xc0, 0x84, 0x67, 0x99, - 0xd4, 0x2e, 0xf2, 0x5f, 0xa8, 0xb7, 0x71, 0x94, 0x35, 0x6d, 0xdf, 0xdc, 0x80, 0x39, 0xc7, 0xad, - 0x78, 0xbe, 0xed, 0xd4, 0xec, 0x76, 0xad, 0x12, 0x6e, 0x10, 0x54, 0xec, 0x6a, 0x15, 0x79, 0x9e, - 0x4b, 0x97, 0x80, 0x80, 0xe5, 0x9c, 0xe3, 0xee, 0x32, 0xe1, 0xb0, 0x36, 0x16, 0x98, 0xa8, 0xe2, - 0x6e, 0xbd, 0x97, 0xbb, 0x1f, 0x85, 0xb1, 0xa6, 0xdd, 0xaa, 0x20, 0xc7, 0x6f, 0x9f, 0x90, 0x7e, - 0x2d, 0x65, 0xa5, 0x9a, 0x76, 0xab, 0x8c, 0x8f, 0x3f, 0x3c, 0x1f, 0x88, 0x76, 0xfc, 0x1f, 0x3a, - 0x64, 0xc4, 0x9e, 0x0d, 0xb7, 0xc0, 0x55, 0x52, 0x9f, 0x35, 0x92, 0xbe, 0x8f, 0xf7, 0xed, 0xf0, - 0x16, 0x4b, 0xb8, 0x70, 0xe7, 0x47, 0x68, 0x27, 0x65, 0x51, 0x24, 0x5e, 0x34, 0x71, 0xc2, 0x22, - 0xda, 0x9f, 0xa7, 0x2c, 0x76, 0x64, 0xde, 0x81, 0x91, 0x57, 0x3c, 0xc2, 0x3d, 0x42, 0xb8, 0x2f, - 0xf6, 0xe7, 0xbe, 0xbb, 0x4b, 0xc8, 0xc7, 0xee, 0xee, 0x56, 0xb6, 0xb6, 0xad, 0xcd, 0xc2, 0x86, - 0xc5, 0xe0, 0xe6, 0x23, 0x90, 0x6c, 0xd8, 0x9f, 0x39, 0x91, 0x4b, 0x3c, 0x19, 0x1a, 0xd4, 0xf0, - 0x8f, 0x40, 0xf2, 0x75, 0x64, 0xbf, 0x2a, 0x17, 0x56, 0x32, 0xf4, 0x21, 0x86, 0xfe, 0x65, 0x18, - 0x26, 0xf6, 0x32, 0x01, 0x98, 0xc5, 0x8c, 0x21, 0x33, 0x05, 0xc9, 0xd2, 0xb6, 0x85, 0xc3, 0xdf, - 0x80, 0x0c, 0x1d, 0xad, 0xec, 0xac, 0x97, 0x4b, 0x65, 0x23, 0x91, 0xbb, 0x06, 0x23, 0xd4, 0x08, - 0x38, 0x35, 0x02, 0x33, 0x18, 0x43, 0xec, 0x90, 0x71, 0x68, 0x7c, 0x76, 0x7f, 0xb3, 0x58, 0xb6, - 0x8c, 0x84, 0xe8, 0x5e, 0x0f, 0x32, 0x62, 0xbb, 0xf6, 0x93, 0x89, 0xa9, 0xdf, 0xd3, 0x20, 0x2d, - 0xb4, 0x5f, 0x78, 0xe1, 0xb7, 0x1b, 0x0d, 0xf7, 0xf5, 0x8a, 0xdd, 0xa8, 0xdb, 0x1e, 0x0b, 0x0a, - 0x20, 0x43, 0x05, 0x3c, 0x32, 0xa8, 0xd3, 0x7e, 0x22, 0xca, 0x7f, 0x59, 0x03, 0x43, 0x6d, 0xdd, - 0x14, 0x05, 0xb5, 0x9f, 0xaa, 0x82, 0x5f, 0xd4, 0x60, 0x42, 0xee, 0xd7, 0x14, 0xf5, 0x2e, 0xfc, - 0x54, 0xd5, 0xfb, 0x35, 0x0d, 0xc6, 0xa5, 0x2e, 0xed, 0x67, 0x4a, 0xbb, 0x2f, 0xe8, 0x70, 0x26, - 0x02, 0x67, 0x16, 0x58, 0x3b, 0x4b, 0x3b, 0xec, 0xa7, 0x07, 0x39, 0xd7, 0x22, 0x5e, 0x2d, 0x77, - 0xec, 0xb6, 0xcf, 0xba, 0xdf, 0xa7, 0xc0, 0xa8, 0xd7, 0x90, 0xe3, 0xd7, 0x0f, 0xeb, 0xa8, 0xcd, - 0x6e, 0xc1, 0x69, 0x8f, 0x3b, 0x19, 0x8e, 0xd3, 0xbb, 0xf0, 0x8f, 0x83, 0xd9, 0x72, 0xbd, 0xba, - 0x5f, 0x7f, 0x0d, 0x55, 0xea, 0x0e, 0xbf, 0x5f, 0xc7, 0x3d, 0x6f, 0xd2, 0x32, 0xf8, 0xcc, 0xba, - 0xe3, 0x07, 0xd2, 0x0e, 0x3a, 0xb2, 0x15, 0x69, 0x5c, 0xfb, 0x74, 0xcb, 0xe0, 0x33, 0x81, 0xf4, - 0x05, 0xc8, 0xd4, 0xdc, 0x0e, 0x6e, 0x1f, 0xa8, 0x1c, 0x2e, 0xb5, 0x9a, 0x95, 0xa6, 0x63, 0x81, - 0x08, 0xeb, 0xef, 0xc2, 0x8d, 0x82, 0x8c, 0x95, 0xa6, 0x63, 0x54, 0xe4, 0x49, 0x98, 0xb4, 0x8f, - 0x8e, 0xda, 0x98, 0x9c, 0x13, 0xd1, 0xa6, 0x75, 0x22, 0x18, 0x26, 0x82, 0x33, 0x77, 0x21, 0xc5, - 0xed, 0x80, 0x57, 0x33, 0x6c, 0x89, 0x4a, 0x8b, 0x6e, 0xd7, 0x24, 0xe6, 0xc7, 0xac, 0x94, 0xc3, - 0x27, 0x2f, 0x40, 0xa6, 0xee, 0x55, 0xc2, 0x7d, 0xc3, 0xc4, 0xf9, 0xc4, 0x7c, 0xca, 0x4a, 0xd7, - 0xbd, 0x60, 0xa3, 0x28, 0xf7, 0xb5, 0x04, 0x4c, 0xc8, 0xfb, 0x9e, 0xe6, 0x2a, 0xa4, 0x1a, 0x6e, - 0xd5, 0x26, 0x81, 0x40, 0x37, 0xdd, 0xe7, 0x63, 0xb6, 0x4a, 0x17, 0x37, 0x98, 0xbc, 0x15, 0x20, - 0x67, 0xfe, 0x8b, 0x06, 0x29, 0x3e, 0x6c, 0x4e, 0x43, 0xb2, 0x65, 0xfb, 0xc7, 0x84, 0x6e, 0xb8, - 0x98, 0x30, 0x34, 0x8b, 0x1c, 0xe3, 0x71, 0xaf, 0x65, 0x3b, 0x24, 0x04, 0xd8, 0x38, 0x3e, 0xc6, - 0x7e, 0x6d, 0x20, 0xbb, 0x46, 0xda, 0x61, 0xb7, 0xd9, 0x44, 0x8e, 0xef, 0x71, 0xbf, 0xb2, 0xf1, - 0x12, 0x1b, 0x36, 0x3f, 0x06, 0x53, 0x7e, 0xdb, 0xae, 0x37, 0x24, 0xd9, 0x24, 0x91, 0x35, 0xf8, - 0x44, 0x20, 0x9c, 0x87, 0x47, 0x38, 0x6f, 0x0d, 0xf9, 0x76, 0xf5, 0x18, 0xd5, 0x42, 0xd0, 0x08, - 0xd9, 0x54, 0x7b, 0x98, 0x09, 0xac, 0xb2, 0x79, 0x8e, 0xcd, 0xfd, 0x81, 0x06, 0x53, 0xbc, 0x81, - 0xaf, 0x05, 0xc6, 0xda, 0x04, 0xb0, 0x1d, 0xc7, 0xf5, 0x45, 0x73, 0x75, 0x87, 0x72, 0x17, 0x6e, - 0xb1, 0x10, 0x80, 0x2c, 0x81, 0x60, 0xa6, 0x09, 0x10, 0xce, 0xf4, 0x34, 0xdb, 0x1c, 0xa4, 0xd9, - 0xa6, 0x36, 0x79, 0x32, 0x42, 0xef, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0xdf, 0x3c, 0x0b, 0xc3, 0x07, - 0xe8, 0xa8, 0xee, 0xb0, 0xad, 0x36, 0x7a, 0xc0, 0x37, 0xf0, 0x92, 0xc1, 0x06, 0x5e, 0xf1, 0x65, - 0x38, 0x53, 0x75, 0x9b, 0xaa, 0xba, 0x45, 0x43, 0xb9, 0xf3, 0xf4, 0x9e, 0xd7, 0x7e, 0x0e, 0xc2, - 0xee, 0xec, 0x2d, 0x4d, 0xfb, 0xf5, 0x84, 0x7e, 0x67, 0xa7, 0xf8, 0x5b, 0x89, 0x99, 0x3b, 0x14, - 0xba, 0xc3, 0xaf, 0xd4, 0x42, 0x87, 0x0d, 0x54, 0xc5, 0xda, 0xc3, 0x9f, 0x5c, 0x82, 0xa7, 0x8f, - 0xea, 0xfe, 0x71, 0xe7, 0x60, 0xb1, 0xea, 0x36, 0x2f, 0x1f, 0xb9, 0x47, 0x6e, 0xf8, 0x30, 0x08, - 0x1f, 0x91, 0x03, 0xf2, 0x89, 0x3d, 0x10, 0x1a, 0x0b, 0x46, 0x67, 0x62, 0x9f, 0x1e, 0xe5, 0xb7, - 0xe0, 0x0c, 0x13, 0xae, 0x90, 0x1d, 0x69, 0xda, 0x87, 0x9b, 0x7d, 0x77, 0x25, 0xb2, 0xbf, 0xfd, - 0x3d, 0xb2, 0xd2, 0x59, 0x53, 0x0c, 0x8a, 0xe7, 0x68, 0xa7, 0x9e, 0xb7, 0xe0, 0x21, 0x89, 0x8f, - 0xa6, 0x26, 0x6a, 0xc7, 0x30, 0x7e, 0x9b, 0x31, 0x9e, 0x11, 0x18, 0x77, 0x19, 0x34, 0x5f, 0x82, - 0xf1, 0xd3, 0x70, 0xfd, 0x47, 0xc6, 0x95, 0x41, 0x22, 0xc9, 0x1d, 0x98, 0x24, 0x24, 0xd5, 0x8e, - 0xe7, 0xbb, 0x4d, 0x52, 0xf7, 0xfa, 0xd3, 0xfc, 0xa7, 0xef, 0xd1, 0x5c, 0x99, 0xc0, 0xb0, 0x52, - 0x80, 0xca, 0xe7, 0x81, 0x6c, 0xc2, 0xd7, 0x50, 0xb5, 0x11, 0xc3, 0x70, 0x8f, 0x29, 0x12, 0xc8, - 0xe7, 0x3f, 0x0d, 0x67, 0xf1, 0x67, 0x52, 0x96, 0x44, 0x4d, 0xe2, 0xf7, 0x60, 0xb2, 0x7f, 0xf0, - 0x59, 0x9a, 0x8e, 0x67, 0x02, 0x02, 0x41, 0x27, 0xc1, 0x8b, 0x47, 0xc8, 0xf7, 0x51, 0xdb, 0xab, - 0xd8, 0x8d, 0x28, 0xf5, 0x84, 0x3b, 0xd8, 0xec, 0xaf, 0xfe, 0x40, 0xf6, 0xe2, 0x1d, 0x8a, 0x2c, - 0x34, 0x1a, 0xf9, 0x7d, 0x78, 0x38, 0x22, 0x2a, 0x06, 0xe0, 0xfc, 0x02, 0xe3, 0x3c, 0xdb, 0x15, - 0x19, 0x98, 0x76, 0x07, 0xf8, 0x78, 0xe0, 0xcb, 0x01, 0x38, 0x7f, 0x8d, 0x71, 0x9a, 0x0c, 0xcb, - 0x5d, 0x8a, 0x19, 0xef, 0xc2, 0xd4, 0x6b, 0xa8, 0x7d, 0xe0, 0x7a, 0x6c, 0xe3, 0x60, 0x00, 0xba, - 0x2f, 0x32, 0xba, 0x49, 0x06, 0x24, 0xdb, 0x08, 0x98, 0xeb, 0x16, 0xa4, 0x0e, 0xed, 0x2a, 0x1a, - 0x80, 0xe2, 0x4b, 0x8c, 0x62, 0x14, 0xcb, 0x63, 0x68, 0x01, 0x32, 0x47, 0x2e, 0x5b, 0x99, 0xe2, - 0xe1, 0x5f, 0x66, 0xf0, 0x34, 0xc7, 0x30, 0x8a, 0x96, 0xdb, 0xea, 0x34, 0xf0, 0xb2, 0x15, 0x4f, - 0xf1, 0x15, 0x4e, 0xc1, 0x31, 0x8c, 0xe2, 0x14, 0x66, 0x7d, 0x8b, 0x53, 0x78, 0x82, 0x3d, 0x9f, - 0x83, 0xb4, 0xeb, 0x34, 0x4e, 0x5c, 0x67, 0x10, 0x25, 0xbe, 0xca, 0x18, 0x80, 0x41, 0x30, 0xc1, - 0x6d, 0x18, 0x1b, 0xd4, 0x11, 0xbf, 0xf1, 0x03, 0x9e, 0x1e, 0xdc, 0x03, 0x77, 0x60, 0x92, 0x17, - 0xa8, 0xba, 0xeb, 0x0c, 0x40, 0xf1, 0x4f, 0x19, 0xc5, 0x84, 0x00, 0x63, 0x97, 0xe1, 0x23, 0xcf, - 0x3f, 0x42, 0x83, 0x90, 0x7c, 0x8d, 0x5f, 0x06, 0x83, 0x30, 0x53, 0x1e, 0x20, 0xa7, 0x7a, 0x3c, - 0x18, 0xc3, 0xd7, 0xb9, 0x29, 0x39, 0x06, 0x53, 0x94, 0x60, 0xbc, 0x69, 0xb7, 0xbd, 0x63, 0xbb, - 0x31, 0x90, 0x3b, 0x7e, 0x93, 0x71, 0x64, 0x02, 0x10, 0xb3, 0x48, 0xc7, 0x39, 0x0d, 0xcd, 0x6f, - 0x71, 0x8b, 0x08, 0x30, 0x96, 0x7a, 0x9e, 0x4f, 0xf6, 0x66, 0x4e, 0xc3, 0xf6, 0xcf, 0x78, 0xea, - 0x51, 0xec, 0xa6, 0xc8, 0x78, 0x1b, 0xc6, 0xbc, 0xfa, 0x67, 0x06, 0xa2, 0xf9, 0xe7, 0xdc, 0xd3, - 0x04, 0x80, 0xc1, 0x2f, 0xc1, 0x23, 0x91, 0xcb, 0xc4, 0x00, 0x64, 0xff, 0x82, 0x91, 0x4d, 0x47, - 0x2c, 0x15, 0xac, 0x24, 0x9c, 0x96, 0xf2, 0x5f, 0xf2, 0x92, 0x80, 0x14, 0xae, 0x1d, 0xdc, 0xd9, - 0x7b, 0xf6, 0xe1, 0xe9, 0xac, 0xf6, 0xaf, 0xb8, 0xd5, 0x28, 0x56, 0xb2, 0xda, 0x1e, 0x4c, 0x33, - 0xc6, 0xd3, 0xf9, 0xf5, 0x1b, 0xbc, 0xb0, 0x52, 0xf4, 0xbe, 0xec, 0xdd, 0x97, 0x61, 0x26, 0x30, - 0x27, 0x6f, 0x4a, 0xbd, 0x4a, 0xd3, 0x6e, 0x0d, 0xc0, 0xfc, 0xdb, 0x8c, 0x99, 0x57, 0xfc, 0xa0, - 0xab, 0xf5, 0x36, 0xed, 0x16, 0x26, 0x7f, 0x11, 0xb2, 0x9c, 0xbc, 0xe3, 0xb4, 0x51, 0xd5, 0x3d, - 0x72, 0xea, 0x9f, 0x41, 0xb5, 0x01, 0xa8, 0xbf, 0xa9, 0xb8, 0x6a, 0x5f, 0x80, 0x63, 0xe6, 0x75, - 0x30, 0x82, 0x5e, 0xa5, 0x52, 0x6f, 0xb6, 0xdc, 0xb6, 0x1f, 0xc3, 0xf8, 0xaf, 0xb9, 0xa7, 0x02, - 0xdc, 0x3a, 0x81, 0xe5, 0xcb, 0x30, 0x41, 0x0e, 0x07, 0x0d, 0xc9, 0xdf, 0x61, 0x44, 0xe3, 0x21, - 0x8a, 0x15, 0x8e, 0xaa, 0xdb, 0x6c, 0xd9, 0xed, 0x41, 0xea, 0xdf, 0xbf, 0xe1, 0x85, 0x83, 0x41, - 0x58, 0xe1, 0xf0, 0x4f, 0x5a, 0x08, 0xaf, 0xf6, 0x03, 0x30, 0x7c, 0x8b, 0x17, 0x0e, 0x8e, 0x61, - 0x14, 0xbc, 0x61, 0x18, 0x80, 0xe2, 0xdf, 0x72, 0x0a, 0x8e, 0xc1, 0x14, 0x9f, 0x0a, 0x17, 0xda, - 0x36, 0x3a, 0xaa, 0x7b, 0x7e, 0x9b, 0xb6, 0xc2, 0xfd, 0xa9, 0x7e, 0xf7, 0x07, 0x72, 0x13, 0x66, - 0x09, 0xd0, 0xfc, 0x5d, 0x98, 0x54, 0x5a, 0x0c, 0x33, 0xee, 0x89, 0x7e, 0xf6, 0xe7, 0x7f, 0xc4, - 0x8a, 0x91, 0xdc, 0x61, 0xe4, 0x37, 0xb0, 0xdf, 0xe5, 0x3e, 0x20, 0x9e, 0xec, 0xb3, 0x3f, 0x0a, - 0x5c, 0x2f, 0xb5, 0x01, 0xf9, 0x35, 0x18, 0x97, 0x7a, 0x80, 0x78, 0xaa, 0xbf, 0xce, 0xa8, 0x32, - 0x62, 0x0b, 0x90, 0xbf, 0x06, 0x49, 0xbc, 0x9e, 0xc7, 0xc3, 0xff, 0x06, 0x83, 0x13, 0xf1, 0xfc, - 0x33, 0x90, 0xe2, 0xeb, 0x78, 0x3c, 0xf4, 0x17, 0x19, 0x34, 0x80, 0x60, 0x38, 0x5f, 0xc3, 0xe3, - 0xe1, 0x7f, 0x93, 0xc3, 0x39, 0x04, 0xc3, 0x07, 0x37, 0xe1, 0xdb, 0xbf, 0x9c, 0x64, 0x75, 0x98, - 0xdb, 0xee, 0x36, 0x8c, 0xb2, 0xc5, 0x3b, 0x1e, 0xfd, 0x4b, 0xec, 0xe4, 0x1c, 0x91, 0xbf, 0x01, - 0xc3, 0x03, 0x1a, 0xfc, 0x6f, 0x33, 0x28, 0x95, 0xcf, 0x97, 0x20, 0x2d, 0x2c, 0xd8, 0xf1, 0xf0, - 0xbf, 0xc3, 0xe0, 0x22, 0x0a, 0xab, 0xce, 0x16, 0xec, 0x78, 0x82, 0xbf, 0xcb, 0x55, 0x67, 0x08, - 0x6c, 0x36, 0xbe, 0x56, 0xc7, 0xa3, 0xff, 0x1e, 0xb7, 0x3a, 0x87, 0xe4, 0x9f, 0x83, 0xb1, 0xa0, - 0xfe, 0xc6, 0xe3, 0xff, 0x3e, 0xc3, 0x87, 0x18, 0x6c, 0x01, 0xa1, 0xfe, 0xc7, 0x53, 0xfc, 0x03, - 0x6e, 0x01, 0x01, 0x85, 0xd3, 0x48, 0x5d, 0xd3, 0xe3, 0x99, 0x7e, 0x85, 0xa7, 0x91, 0xb2, 0xa4, - 0x63, 0x6f, 0x92, 0x32, 0x18, 0x4f, 0xf1, 0x0f, 0xb9, 0x37, 0x89, 0x3c, 0x56, 0x43, 0x5d, 0x24, - 0xe3, 0x39, 0xfe, 0x31, 0x57, 0x43, 0x59, 0x23, 0xf3, 0x3b, 0x60, 0x76, 0x2f, 0x90, 0xf1, 0x7c, - 0x9f, 0x67, 0x7c, 0x53, 0x5d, 0xeb, 0x63, 0xfe, 0x05, 0x98, 0x8e, 0x5e, 0x1c, 0xe3, 0x59, 0x7f, - 0xf5, 0x47, 0xca, 0xed, 0x8c, 0xb8, 0x36, 0xe6, 0xf7, 0xc2, 0x2a, 0x2b, 0x2e, 0x8c, 0xf1, 0xb4, - 0x5f, 0xf8, 0x91, 0x5c, 0x68, 0xc5, 0x75, 0x31, 0x5f, 0x00, 0x08, 0xd7, 0xa4, 0x78, 0xae, 0x2f, - 0x32, 0x2e, 0x01, 0x84, 0x53, 0x83, 0x2d, 0x49, 0xf1, 0xf8, 0x2f, 0xf1, 0xd4, 0x60, 0x08, 0x9c, - 0x1a, 0x7c, 0x35, 0x8a, 0x47, 0x7f, 0x99, 0xa7, 0x06, 0x87, 0xe4, 0x6f, 0x43, 0xca, 0xe9, 0x34, - 0x1a, 0x38, 0xb6, 0xcc, 0xfe, 0x2f, 0xd9, 0x64, 0xff, 0xd7, 0x8f, 0x19, 0x98, 0x03, 0xf2, 0xd7, - 0x60, 0x18, 0x35, 0x0f, 0x50, 0x2d, 0x0e, 0xf9, 0xbf, 0x7f, 0xcc, 0xeb, 0x09, 0x96, 0xce, 0x3f, - 0x07, 0x40, 0x6f, 0xa6, 0xc9, 0x33, 0x96, 0x18, 0xec, 0x1f, 0xfd, 0x98, 0x3d, 0xbf, 0x0f, 0x21, - 0x21, 0x01, 0x7d, 0x1b, 0xa0, 0x3f, 0xc1, 0x0f, 0x64, 0x02, 0x72, 0x03, 0x7e, 0x0b, 0x46, 0x5f, - 0xf1, 0x5c, 0xc7, 0xb7, 0x8f, 0xe2, 0xd0, 0xff, 0x87, 0xa1, 0xb9, 0x3c, 0x36, 0x58, 0xd3, 0x6d, - 0x23, 0xdf, 0x3e, 0xf2, 0xe2, 0xb0, 0xff, 0x97, 0x61, 0x03, 0x00, 0x06, 0x57, 0x6d, 0xcf, 0x1f, - 0xe4, 0xba, 0xff, 0x1f, 0x07, 0x73, 0x00, 0x56, 0x1a, 0x7f, 0x7e, 0x15, 0x9d, 0xc4, 0x61, 0x7f, - 0xc8, 0x95, 0x66, 0xf2, 0xf9, 0x67, 0x60, 0x0c, 0x7f, 0xa4, 0xef, 0xb4, 0xc4, 0x80, 0xff, 0x98, - 0x81, 0x43, 0x04, 0x3e, 0xb3, 0xe7, 0xd7, 0xfc, 0x7a, 0xbc, 0xb1, 0xff, 0x3f, 0xf3, 0x34, 0x97, - 0xcf, 0x17, 0x20, 0xed, 0xf9, 0xb5, 0x5a, 0x87, 0x75, 0x34, 0x31, 0xf0, 0x3f, 0xf9, 0x71, 0x70, - 0x93, 0x1b, 0x60, 0x8a, 0x17, 0xa2, 0xf7, 0xeb, 0xe0, 0x8e, 0x7b, 0xc7, 0xa5, 0x3b, 0x75, 0xf0, - 0xbd, 0x06, 0xdc, 0xe8, 0xb9, 0xeb, 0x86, 0x17, 0x91, 0xcb, 0x55, 0xb7, 0x79, 0xe0, 0x7a, 0x97, - 0x0f, 0x5c, 0xff, 0xf8, 0xb2, 0x7f, 0x8c, 0xf0, 0x18, 0xdb, 0x7f, 0x4b, 0xe2, 0xcf, 0x33, 0xa7, - 0xdb, 0xb4, 0x23, 0x4f, 0x33, 0xb7, 0xea, 0x58, 0xef, 0x2d, 0xb2, 0x2b, 0x6e, 0x9e, 0x83, 0x11, - 0x72, 0x25, 0x57, 0xc8, 0x43, 0x1b, 0xad, 0x98, 0xbc, 0xf7, 0xee, 0xdc, 0x90, 0xc5, 0xc6, 0x82, - 0xd9, 0x65, 0xb2, 0x6d, 0x99, 0x90, 0x66, 0x97, 0x83, 0xd9, 0xab, 0x74, 0xe7, 0x52, 0x9a, 0xbd, - 0x1a, 0xcc, 0xae, 0x90, 0x3d, 0x4c, 0x5d, 0x9a, 0x5d, 0x09, 0x66, 0xaf, 0x91, 0x7d, 0xfa, 0x71, - 0x69, 0xf6, 0x5a, 0x30, 0x7b, 0x9d, 0xec, 0xce, 0x27, 0xa5, 0xd9, 0xeb, 0xc1, 0xec, 0x0d, 0xb2, - 0x31, 0x3f, 0x25, 0xcd, 0xde, 0x08, 0x66, 0x6f, 0x92, 0x0d, 0x79, 0x53, 0x9a, 0xbd, 0x19, 0xcc, - 0xde, 0x22, 0x6f, 0x5f, 0x8c, 0x4a, 0xb3, 0xb7, 0xcc, 0x59, 0x18, 0xa5, 0x57, 0xbe, 0x44, 0x1e, - 0x7c, 0x4e, 0xb2, 0x69, 0x3e, 0x18, 0xce, 0x5f, 0x21, 0x6f, 0x5a, 0x8c, 0xc8, 0xf3, 0x57, 0xc2, - 0xf9, 0x65, 0xf2, 0xda, 0xb1, 0x21, 0xcf, 0x2f, 0x87, 0xf3, 0x57, 0xb3, 0xe3, 0x38, 0x60, 0xe4, - 0xf9, 0xab, 0xe1, 0xfc, 0x4a, 0x76, 0x02, 0x07, 0xb3, 0x3c, 0xbf, 0x12, 0xce, 0x5f, 0xcb, 0x4e, - 0x9e, 0xd7, 0xe6, 0x33, 0xf2, 0xfc, 0xb5, 0xdc, 0x2f, 0x10, 0xf7, 0x3a, 0xa1, 0x7b, 0xa7, 0x65, - 0xf7, 0x06, 0x8e, 0x9d, 0x96, 0x1d, 0x1b, 0xb8, 0x74, 0x5a, 0x76, 0x69, 0xe0, 0xcc, 0x69, 0xd9, - 0x99, 0x81, 0x1b, 0xa7, 0x65, 0x37, 0x06, 0x0e, 0x9c, 0x96, 0x1d, 0x18, 0xb8, 0x6e, 0x5a, 0x76, - 0x5d, 0xe0, 0xb4, 0x69, 0xd9, 0x69, 0x81, 0xbb, 0xa6, 0x65, 0x77, 0x05, 0x8e, 0xca, 0x2a, 0x8e, - 0x0a, 0x5d, 0x94, 0x55, 0x5c, 0x14, 0x3a, 0x27, 0xab, 0x38, 0x27, 0x74, 0x4b, 0x56, 0x71, 0x4b, - 0xe8, 0x90, 0xac, 0xe2, 0x90, 0xd0, 0x15, 0x59, 0xc5, 0x15, 0xa1, 0x13, 0x58, 0x8e, 0x59, 0xa8, - 0x15, 0x91, 0x63, 0x7a, 0xdf, 0x1c, 0xd3, 0xfb, 0xe6, 0x98, 0xde, 0x37, 0xc7, 0xf4, 0xbe, 0x39, - 0xa6, 0xf7, 0xcd, 0x31, 0xbd, 0x6f, 0x8e, 0xe9, 0x7d, 0x73, 0x4c, 0xef, 0x9b, 0x63, 0x7a, 0xff, - 0x1c, 0xd3, 0x63, 0x72, 0x4c, 0x8f, 0xc9, 0x31, 0x3d, 0x26, 0xc7, 0xf4, 0x98, 0x1c, 0xd3, 0x63, - 0x72, 0x4c, 0xef, 0x99, 0x63, 0xa1, 0x7b, 0xa7, 0x65, 0xf7, 0x46, 0xe6, 0x98, 0xde, 0x23, 0xc7, - 0xf4, 0x1e, 0x39, 0xa6, 0xf7, 0xc8, 0x31, 0xbd, 0x47, 0x8e, 0xe9, 0x3d, 0x72, 0x4c, 0xef, 0x91, - 0x63, 0x7a, 0x8f, 0x1c, 0xd3, 0x7b, 0xe5, 0x98, 0xde, 0x33, 0xc7, 0xf4, 0x9e, 0x39, 0xa6, 0xf7, - 0xcc, 0x31, 0xbd, 0x67, 0x8e, 0xe9, 0x3d, 0x73, 0x4c, 0x17, 0x73, 0xec, 0xdf, 0xe9, 0x60, 0xd2, - 0x1c, 0xdb, 0x21, 0xaf, 0xce, 0x30, 0x57, 0xcc, 0x2a, 0x99, 0x36, 0x82, 0x5d, 0x67, 0x84, 0x2e, - 0x99, 0x55, 0x72, 0x4d, 0x9e, 0x5f, 0x0e, 0xe6, 0x79, 0xb6, 0xc9, 0xf3, 0x57, 0x83, 0x79, 0x9e, - 0x6f, 0xf2, 0xfc, 0x4a, 0x30, 0xcf, 0x33, 0x4e, 0x9e, 0xbf, 0x16, 0xcc, 0xf3, 0x9c, 0x93, 0xe7, - 0xaf, 0x07, 0xf3, 0x3c, 0xeb, 0xe4, 0xf9, 0x1b, 0xc1, 0x3c, 0xcf, 0x3b, 0x79, 0xfe, 0x66, 0x30, - 0xcf, 0x33, 0x4f, 0x9e, 0xbf, 0x65, 0x9e, 0x57, 0x73, 0x8f, 0x0b, 0x04, 0xae, 0x3d, 0xaf, 0x66, - 0x9f, 0x22, 0x71, 0x25, 0x94, 0xe0, 0xf9, 0xa7, 0x48, 0x2c, 0x87, 0x12, 0x3c, 0x03, 0x15, 0x89, - 0xab, 0xb9, 0xcf, 0x11, 0xf7, 0x39, 0xaa, 0xfb, 0x66, 0x14, 0xf7, 0x25, 0x04, 0xd7, 0xcd, 0x28, - 0xae, 0x4b, 0x08, 0x6e, 0x9b, 0x51, 0xdc, 0x96, 0x10, 0x5c, 0x36, 0xa3, 0xb8, 0x2c, 0x21, 0xb8, - 0x6b, 0x46, 0x71, 0x57, 0x42, 0x70, 0xd5, 0x8c, 0xe2, 0xaa, 0x84, 0xe0, 0xa6, 0x19, 0xc5, 0x4d, - 0x09, 0xc1, 0x45, 0x33, 0x8a, 0x8b, 0x12, 0x82, 0x7b, 0x66, 0x14, 0xf7, 0x24, 0x04, 0xd7, 0x9c, - 0x53, 0x5d, 0x93, 0x10, 0xdd, 0x72, 0x4e, 0x75, 0x4b, 0x42, 0x74, 0xc9, 0x39, 0xd5, 0x25, 0x09, - 0xd1, 0x1d, 0xe7, 0x54, 0x77, 0x24, 0x44, 0x57, 0xfc, 0x79, 0x82, 0x77, 0x84, 0xbb, 0x7e, 0xbb, - 0x53, 0xf5, 0xdf, 0x57, 0x47, 0xb8, 0x24, 0xb5, 0x0f, 0xe9, 0x65, 0x73, 0x91, 0x34, 0xac, 0x62, - 0xc7, 0xa9, 0xac, 0x60, 0x4b, 0x52, 0x63, 0x21, 0x20, 0x9c, 0x68, 0xc4, 0xca, 0xfb, 0xea, 0x0d, - 0x97, 0xa4, 0x36, 0x23, 0x5e, 0xbf, 0x9b, 0x1f, 0x7a, 0xc7, 0xf6, 0x76, 0x82, 0x77, 0x6c, 0xcc, - 0xfc, 0xa7, 0xed, 0xd8, 0x16, 0xe2, 0x4d, 0x1e, 0x18, 0x7b, 0x21, 0xde, 0xd8, 0x5d, 0xab, 0xce, - 0xa0, 0x1d, 0xdc, 0x42, 0xbc, 0x69, 0x03, 0xa3, 0x7e, 0xb0, 0xfd, 0x16, 0x8b, 0x60, 0x0b, 0xb5, - 0x22, 0x22, 0xf8, 0xb4, 0xfd, 0xd6, 0x92, 0x54, 0x4a, 0x4e, 0x1b, 0xc1, 0xfa, 0xa9, 0x23, 0xf8, - 0xb4, 0x9d, 0xd7, 0x92, 0x54, 0x5e, 0x4e, 0x1d, 0xc1, 0x1f, 0x42, 0x3f, 0xc4, 0x22, 0x38, 0x34, - 0xff, 0x69, 0xfb, 0xa1, 0x85, 0x78, 0x93, 0x47, 0x46, 0xb0, 0x7e, 0x8a, 0x08, 0x1e, 0xa4, 0x3f, - 0x5a, 0x88, 0x37, 0x6d, 0x74, 0x04, 0xbf, 0xef, 0x6e, 0xe6, 0x2b, 0x1a, 0x4c, 0x6d, 0xd5, 0x6b, - 0xe5, 0xe6, 0x01, 0xaa, 0xd5, 0x50, 0x8d, 0xd9, 0x71, 0x49, 0xaa, 0x04, 0x3d, 0x5c, 0xfd, 0xce, - 0xbb, 0x73, 0xa1, 0x85, 0xaf, 0x41, 0x8a, 0xda, 0x74, 0x69, 0x29, 0x7b, 0x4f, 0x8b, 0xa9, 0x70, - 0x81, 0xa8, 0x79, 0x81, 0xc3, 0xae, 0x2c, 0x65, 0xff, 0xab, 0x26, 0x54, 0xb9, 0x60, 0x38, 0xf7, - 0x2b, 0x44, 0x43, 0xe7, 0x7d, 0x6b, 0x78, 0x79, 0x20, 0x0d, 0x05, 0xdd, 0x1e, 0xed, 0xd2, 0x4d, - 0xd0, 0xaa, 0x03, 0x93, 0x5b, 0xf5, 0xda, 0x16, 0xf9, 0xc2, 0xeb, 0x20, 0x2a, 0x51, 0x19, 0xa5, - 0x1e, 0x2c, 0x49, 0x61, 0x29, 0x22, 0x82, 0x90, 0x96, 0x6b, 0x44, 0xae, 0x8e, 0x4f, 0xeb, 0x48, - 0xa7, 0x5d, 0xe8, 0x75, 0xda, 0xb0, 0xb2, 0x07, 0x27, 0x5c, 0xe8, 0x75, 0xc2, 0x30, 0x87, 0x82, - 0x53, 0xbd, 0xc1, 0x17, 0x67, 0xfa, 0x16, 0x8e, 0x79, 0x0e, 0x12, 0xeb, 0xf4, 0xfd, 0xda, 0x4c, - 0x31, 0x83, 0x95, 0xfa, 0xce, 0xbb, 0x73, 0xc9, 0xfd, 0x4e, 0xbd, 0x66, 0x25, 0xd6, 0x6b, 0xe6, - 0x5d, 0x18, 0xfe, 0x34, 0xfb, 0xda, 0x18, 0x16, 0x58, 0x61, 0x02, 0x1f, 0x8f, 0xd9, 0x62, 0x22, - 0xd4, 0x8b, 0xfb, 0x75, 0xc7, 0xbf, 0xb2, 0x7c, 0xd3, 0xa2, 0x14, 0xb9, 0xbf, 0x0c, 0x40, 0xcf, - 0xb9, 0x6a, 0x7b, 0xc7, 0xe6, 0x16, 0x67, 0xa6, 0xa7, 0xbe, 0xf9, 0x9d, 0x77, 0xe7, 0x56, 0x06, - 0x61, 0x7d, 0xba, 0x66, 0x7b, 0xc7, 0x4f, 0xfb, 0x27, 0x2d, 0xb4, 0x58, 0x3c, 0xf1, 0x91, 0xc7, - 0xd9, 0x5b, 0x7c, 0xd5, 0x63, 0xd7, 0x95, 0x15, 0xae, 0x2b, 0x25, 0x5d, 0xd3, 0x9a, 0x7c, 0x4d, - 0x4b, 0x0f, 0x7a, 0x3d, 0x6f, 0xf0, 0x45, 0x42, 0xb1, 0xa4, 0x1e, 0x67, 0x49, 0xfd, 0xfd, 0x5a, - 0xb2, 0xc5, 0xeb, 0xa3, 0x72, 0xad, 0x7a, 0xbf, 0x6b, 0xd5, 0xdf, 0xcf, 0xb5, 0xfe, 0x29, 0xcd, - 0xd6, 0x20, 0x9f, 0xf6, 0x1d, 0xfa, 0x82, 0xe2, 0xcf, 0xd6, 0x5e, 0xd0, 0x07, 0xda, 0x05, 0xe4, - 0x93, 0xf7, 0xde, 0x9a, 0xd3, 0x72, 0x5f, 0x49, 0xf0, 0x2b, 0xa7, 0x89, 0xf4, 0x60, 0x57, 0xfe, - 0xb3, 0xd2, 0x53, 0x7d, 0x18, 0x16, 0xfa, 0xb2, 0x06, 0xd3, 0x5d, 0x95, 0x9c, 0x9a, 0xe9, 0x83, - 0x2d, 0xe7, 0xce, 0x69, 0xcb, 0x39, 0x53, 0xf0, 0x77, 0x34, 0x38, 0xab, 0x94, 0x57, 0xaa, 0xde, - 0x65, 0x45, 0xbd, 0x87, 0xbb, 0xcf, 0x44, 0x04, 0x05, 0xed, 0x44, 0xf7, 0x2a, 0x00, 0x81, 0x39, - 0xf0, 0xfb, 0x8a, 0xe2, 0xf7, 0x73, 0x01, 0x20, 0xc2, 0x5c, 0x3c, 0x02, 0x98, 0xda, 0x2e, 0x24, - 0xf7, 0xda, 0x08, 0x99, 0xb3, 0x90, 0xd8, 0x6e, 0x33, 0x0d, 0x27, 0x28, 0x7e, 0xbb, 0x5d, 0x6c, - 0xdb, 0x4e, 0xf5, 0xd8, 0x4a, 0x6c, 0xb7, 0xcd, 0x0b, 0xa0, 0x17, 0xd8, 0x17, 0xf3, 0xd3, 0xcb, - 0x93, 0x54, 0xa0, 0xe0, 0xd4, 0x98, 0x04, 0x9e, 0x33, 0x67, 0x21, 0xb9, 0x81, 0xec, 0x43, 0xa6, - 0x04, 0x50, 0x19, 0x3c, 0x62, 0x91, 0x71, 0x76, 0xc2, 0x17, 0x21, 0xc5, 0x89, 0xcd, 0x8b, 0x18, - 0x71, 0xe8, 0xb3, 0xd3, 0x32, 0x04, 0x56, 0x87, 0xad, 0x5c, 0x64, 0xd6, 0xbc, 0x04, 0xc3, 0x56, - 0xfd, 0xe8, 0xd8, 0x67, 0x27, 0xef, 0x16, 0xa3, 0xd3, 0xb9, 0x97, 0x60, 0x2c, 0xd0, 0xe8, 0x03, - 0xa6, 0x5e, 0xa5, 0x97, 0x66, 0xce, 0x88, 0xeb, 0x09, 0xdf, 0xb7, 0xa4, 0x43, 0xe6, 0x79, 0x48, - 0xed, 0xfa, 0xed, 0xb0, 0xe8, 0xf3, 0x8e, 0x34, 0x18, 0xcd, 0xfd, 0x82, 0x06, 0xa9, 0x55, 0x84, - 0x5a, 0xc4, 0xe0, 0x4f, 0x40, 0x72, 0xd5, 0x7d, 0xdd, 0x61, 0x0a, 0x4e, 0x31, 0x8b, 0xe2, 0x69, - 0x66, 0x53, 0x32, 0x6d, 0x3e, 0x21, 0xda, 0xfd, 0x4c, 0x60, 0x77, 0x41, 0x8e, 0xd8, 0x3e, 0x27, - 0xd9, 0x9e, 0x39, 0x10, 0x0b, 0x75, 0xd9, 0xff, 0x06, 0xa4, 0x85, 0xb3, 0x98, 0xf3, 0x4c, 0x8d, - 0x84, 0x0a, 0x14, 0x6d, 0x85, 0x25, 0x72, 0x08, 0xc6, 0xa5, 0x13, 0x63, 0xa8, 0x60, 0xe2, 0x1e, - 0x50, 0x62, 0xe6, 0x05, 0xd9, 0xcc, 0xd1, 0xa2, 0xcc, 0xd4, 0x4b, 0xd4, 0x46, 0xc4, 0xdc, 0x17, - 0x69, 0x70, 0xf6, 0x76, 0x22, 0xfe, 0x9c, 0x1b, 0x06, 0x7d, 0xab, 0xde, 0xc8, 0x3d, 0x03, 0x40, - 0x53, 0xbe, 0xec, 0x74, 0x9a, 0x4a, 0xd6, 0x4d, 0x70, 0x03, 0xef, 0x1d, 0xa3, 0x3d, 0xe4, 0x11, - 0x11, 0xb9, 0x9f, 0xc2, 0x05, 0x06, 0x68, 0x8a, 0x11, 0xfc, 0x53, 0xb1, 0xf8, 0xc8, 0x4e, 0x0c, - 0x8b, 0x66, 0xa9, 0xe8, 0x4b, 0xc8, 0x2f, 0x38, 0xae, 0x7f, 0x8c, 0xda, 0x0a, 0x62, 0xd9, 0xbc, - 0x2a, 0x25, 0xec, 0xc4, 0xf2, 0xa3, 0x01, 0xa2, 0x27, 0xe8, 0x6a, 0xee, 0x1b, 0x44, 0x41, 0xdc, - 0x0a, 0x74, 0x5d, 0xa0, 0x3e, 0xc0, 0x05, 0x9a, 0xd7, 0xa5, 0xfe, 0xad, 0x8f, 0x9a, 0xca, 0xad, - 0xe5, 0x2d, 0xe9, 0x3e, 0xa7, 0xbf, 0xb2, 0xf2, 0x3d, 0x26, 0xb7, 0x29, 0x57, 0xf9, 0xa9, 0x58, - 0x95, 0x7b, 0x74, 0xb7, 0xa7, 0xb5, 0xa9, 0x3e, 0xa8, 0x4d, 0x7f, 0x2f, 0xe8, 0x38, 0xe8, 0x4f, - 0x1c, 0x90, 0x5f, 0xd4, 0x30, 0x3f, 0x1e, 0xeb, 0xfb, 0xbc, 0x56, 0x0a, 0x54, 0x5d, 0x19, 0xd4, - 0xfd, 0xf9, 0x44, 0xb1, 0x18, 0xa8, 0x7b, 0xe3, 0x14, 0x21, 0x90, 0x4f, 0x94, 0x4a, 0x41, 0xd9, - 0x4e, 0x7d, 0xee, 0xad, 0x39, 0xed, 0xeb, 0x6f, 0xcd, 0x0d, 0xe5, 0x7e, 0x53, 0x83, 0x29, 0x26, - 0x29, 0x04, 0xee, 0xd3, 0x8a, 0xf2, 0x0f, 0xf1, 0x9a, 0x11, 0x65, 0x81, 0x9f, 0x58, 0xf0, 0x7e, - 0x5b, 0x83, 0x6c, 0x97, 0xae, 0xdc, 0xde, 0x4b, 0x03, 0xa9, 0x9c, 0xd7, 0xca, 0x3f, 0x7d, 0x9b, - 0xbf, 0x04, 0xc3, 0x7b, 0xf5, 0x26, 0x6a, 0xe3, 0x95, 0x00, 0x7f, 0xa0, 0x2a, 0xf3, 0x87, 0x39, - 0x74, 0x88, 0xcf, 0x51, 0xe5, 0xa4, 0xb9, 0x65, 0x33, 0x0b, 0xc9, 0x55, 0xdb, 0xb7, 0x89, 0x06, - 0x99, 0xa0, 0xbe, 0xda, 0xbe, 0x9d, 0xbb, 0x0a, 0x99, 0xcd, 0x13, 0xf2, 0x0a, 0x4d, 0x8d, 0xbc, - 0x1e, 0x22, 0x77, 0x7f, 0xbc, 0x5f, 0xbd, 0xb2, 0x30, 0x9c, 0xaa, 0x19, 0xf7, 0xb4, 0x7c, 0x92, - 0xe8, 0xf3, 0x1a, 0x4c, 0x6c, 0x63, 0xb5, 0x09, 0x8e, 0xc0, 0xce, 0x83, 0xb6, 0x29, 0x37, 0x42, - 0x22, 0xab, 0xa5, 0x6d, 0x2a, 0xed, 0xa3, 0x1e, 0x98, 0x47, 0x69, 0xdb, 0xf4, 0xa0, 0x6d, 0x5b, - 0x48, 0xa6, 0x26, 0x8c, 0xa9, 0x85, 0x64, 0x0a, 0x8c, 0x71, 0x76, 0xde, 0xff, 0xac, 0x83, 0x41, - 0x5b, 0x9d, 0x55, 0x74, 0x58, 0x77, 0xea, 0x7e, 0x77, 0xbf, 0x1a, 0x68, 0x6c, 0x3e, 0x07, 0x63, - 0xd8, 0xa4, 0x6b, 0xec, 0x87, 0xa9, 0xb0, 0xe9, 0x2f, 0xb0, 0x16, 0x45, 0xa1, 0x60, 0x03, 0x24, - 0x74, 0x42, 0x8c, 0xb9, 0x06, 0xfa, 0xd6, 0xd6, 0x26, 0x5b, 0xdc, 0x56, 0xfa, 0x42, 0xd9, 0x1b, - 0x38, 0xec, 0x88, 0x8d, 0x79, 0x47, 0x16, 0x26, 0x30, 0x57, 0x20, 0xb1, 0xb5, 0xc9, 0x1a, 0xde, - 0x8b, 0x83, 0xd0, 0x58, 0x89, 0xad, 0xcd, 0x99, 0x7f, 0xaf, 0xc1, 0xb8, 0x34, 0x6a, 0xe6, 0x20, - 0x43, 0x07, 0x84, 0xcb, 0x1d, 0xb1, 0xa4, 0x31, 0xae, 0x73, 0xe2, 0x7d, 0xea, 0x3c, 0x53, 0x80, - 0x49, 0x65, 0xdc, 0x5c, 0x04, 0x53, 0x1c, 0x62, 0x4a, 0xd0, 0x1f, 0xf5, 0x89, 0x98, 0xc9, 0x3d, - 0x06, 0x10, 0xda, 0x35, 0xf8, 0x2d, 0x9a, 0xad, 0xf2, 0xee, 0x5e, 0x79, 0xd5, 0xd0, 0x72, 0xdf, - 0xd2, 0x20, 0xcd, 0xda, 0xd6, 0xaa, 0xdb, 0x42, 0x66, 0x11, 0xb4, 0x02, 0x8b, 0xa0, 0x07, 0xd3, - 0x5b, 0x2b, 0x98, 0x97, 0x41, 0x2b, 0x0e, 0xee, 0x6a, 0xad, 0x68, 0x2e, 0x83, 0x56, 0x62, 0x0e, - 0x1e, 0xcc, 0x33, 0x5a, 0x29, 0xf7, 0xc7, 0x3a, 0x9c, 0x11, 0xdb, 0x68, 0x5e, 0x4f, 0x2e, 0xc8, - 0xf7, 0x4d, 0xf9, 0xb1, 0x2b, 0xcb, 0x57, 0x57, 0x16, 0xf1, 0x3f, 0x41, 0x48, 0x5e, 0x90, 0x6f, - 0xa1, 0xba, 0x45, 0xba, 0x5e, 0x13, 0xc9, 0x27, 0x85, 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xae, - 0xd7, 0x44, 0xa4, 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xae, 0x47, 0x01, 0xd2, 0x6c, 0xd7, 0x6b, - 0x22, 0xd2, 0x6c, 0xd7, 0x6b, 0x22, 0xd2, 0x6c, 0xf7, 0x6b, 0x22, 0x6c, 0xba, 0xe7, 0x6b, 0x22, - 0xf2, 0x7c, 0xf7, 0x6b, 0x22, 0xf2, 0x7c, 0xf7, 0x6b, 0x22, 0xf9, 0xa4, 0xdf, 0xee, 0xa0, 0xde, - 0x0f, 0x1d, 0x64, 0x7c, 0xbf, 0x7b, 0xc0, 0xb0, 0x00, 0x6f, 0xc3, 0x24, 0xdd, 0x8f, 0x28, 0xb9, - 0x8e, 0x6f, 0xd7, 0x1d, 0xd4, 0x36, 0x3f, 0x01, 0x19, 0x3a, 0x44, 0xef, 0x72, 0xa2, 0xee, 0x02, - 0xe9, 0x3c, 0x2b, 0xb7, 0x92, 0x74, 0xee, 0xcf, 0x93, 0x30, 0x4d, 0x07, 0xb6, 0xec, 0x26, 0x92, - 0x5e, 0x32, 0xba, 0xa4, 0x3c, 0x52, 0x9a, 0xc0, 0xf0, 0xfb, 0xef, 0xce, 0xd1, 0xd1, 0x42, 0x10, - 0x4c, 0x97, 0x94, 0x87, 0x4b, 0xb2, 0x5c, 0xb8, 0xfe, 0x5c, 0x52, 0x5e, 0x3c, 0x92, 0xe5, 0x82, - 0xe5, 0x26, 0x90, 0xe3, 0xaf, 0x20, 0xc9, 0x72, 0xab, 0x41, 0x94, 0x5d, 0x52, 0x5e, 0x46, 0x92, - 0xe5, 0xca, 0x41, 0xbc, 0x5d, 0x52, 0x1e, 0x3d, 0xc9, 0x72, 0x6b, 0x41, 0xe4, 0x5d, 0x52, 0x1e, - 0x42, 0xc9, 0x72, 0x77, 0x82, 0x18, 0xbc, 0xa4, 0xbc, 0xaa, 0x24, 0xcb, 0x3d, 0x1f, 0x44, 0xe3, - 0x25, 0xe5, 0xa5, 0x25, 0x59, 0x6e, 0x3d, 0x88, 0xcb, 0x79, 0xf5, 0xf5, 0x25, 0x59, 0xf0, 0x6e, - 0x18, 0xa1, 0xf3, 0xea, 0x8b, 0x4c, 0xb2, 0xe4, 0x27, 0xc3, 0x58, 0x9d, 0x57, 0x5f, 0x69, 0x92, - 0x25, 0x37, 0xc2, 0xa8, 0x9d, 0x57, 0x1f, 0x95, 0xc9, 0x92, 0x9b, 0x61, 0xfc, 0xce, 0xab, 0x0f, - 0xcd, 0x64, 0xc9, 0xad, 0x30, 0x92, 0xe7, 0xd5, 0xc7, 0x67, 0xb2, 0xe4, 0x76, 0xb8, 0x87, 0xfe, - 0xfb, 0x4a, 0xf8, 0x09, 0x2f, 0x41, 0xe5, 0x94, 0xf0, 0x83, 0x88, 0xd0, 0xcb, 0x29, 0xa1, 0x07, - 0x11, 0x61, 0x97, 0x53, 0xc2, 0x0e, 0x22, 0x42, 0x2e, 0xa7, 0x84, 0x1c, 0x44, 0x84, 0x5b, 0x4e, - 0x09, 0x37, 0x88, 0x08, 0xb5, 0x9c, 0x12, 0x6a, 0x10, 0x11, 0x66, 0x39, 0x25, 0xcc, 0x20, 0x22, - 0xc4, 0x72, 0x4a, 0x88, 0x41, 0x44, 0x78, 0xe5, 0x94, 0xf0, 0x82, 0x88, 0xd0, 0xba, 0xa8, 0x86, - 0x16, 0x44, 0x85, 0xd5, 0x45, 0x35, 0xac, 0x20, 0x2a, 0xa4, 0x1e, 0x57, 0x43, 0x6a, 0xec, 0xfe, - 0xbb, 0x73, 0xc3, 0x78, 0x48, 0x88, 0xa6, 0x8b, 0x6a, 0x34, 0x41, 0x54, 0x24, 0x5d, 0x54, 0x23, - 0x09, 0xa2, 0xa2, 0xe8, 0xa2, 0x1a, 0x45, 0x10, 0x15, 0x41, 0x6f, 0xab, 0x11, 0x14, 0xbe, 0xe2, - 0x93, 0x53, 0x9e, 0x28, 0xc6, 0x45, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, - 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, - 0x83, 0x44, 0x90, 0x3e, 0x50, 0x04, 0xe9, 0xbd, 0x22, 0xe8, 0xa2, 0xfa, 0xc2, 0x03, 0x44, 0x15, - 0xa4, 0x8b, 0xea, 0x93, 0xcf, 0xf8, 0x10, 0xd2, 0x07, 0x0a, 0x21, 0xbd, 0x57, 0x08, 0xfd, 0xbe, - 0x0e, 0x67, 0xa4, 0x10, 0x62, 0x8f, 0x87, 0x3e, 0xa8, 0x0a, 0x74, 0x7d, 0x80, 0xf7, 0x2b, 0xa2, - 0x62, 0xea, 0xfa, 0x00, 0xcf, 0xa8, 0xfb, 0xc5, 0x59, 0x77, 0x15, 0x2a, 0x0f, 0x50, 0x85, 0xd6, - 0x82, 0x18, 0xba, 0x3e, 0xc0, 0x7b, 0x17, 0xdd, 0xb1, 0x77, 0xb3, 0x5f, 0x11, 0x78, 0x7e, 0xa0, - 0x22, 0xb0, 0x3e, 0x50, 0x11, 0xb8, 0x1b, 0x7a, 0xf0, 0x17, 0x13, 0x70, 0x36, 0xf4, 0x20, 0xfd, - 0x44, 0x7e, 0x60, 0x28, 0x27, 0x3c, 0xa1, 0x32, 0xf9, 0x53, 0x1b, 0xc1, 0x8d, 0x89, 0xf5, 0x9a, - 0xb9, 0x23, 0x3f, 0xab, 0xca, 0x9f, 0xf6, 0xf9, 0x8d, 0xe0, 0x71, 0xb6, 0x17, 0x7a, 0x11, 0xf4, - 0xf5, 0x9a, 0x47, 0xaa, 0x45, 0xd4, 0x69, 0x4b, 0x16, 0x9e, 0x36, 0x2d, 0x18, 0x21, 0xe2, 0x1e, - 0x71, 0xef, 0xfb, 0x39, 0xf1, 0xaa, 0xc5, 0x98, 0x72, 0x6f, 0x6b, 0x70, 0x5e, 0x0a, 0xe5, 0x0f, - 0xe6, 0x89, 0xc1, 0xed, 0x81, 0x9e, 0x18, 0x48, 0x09, 0x12, 0x3e, 0x3d, 0x78, 0xb2, 0xfb, 0x41, - 0xb5, 0x98, 0x25, 0xea, 0x93, 0x84, 0xbf, 0x06, 0x13, 0xe1, 0x15, 0x90, 0x5b, 0xb6, 0x6b, 0xf1, - 0x9b, 0x99, 0x51, 0xa9, 0x79, 0x4d, 0xd9, 0x44, 0xeb, 0x0b, 0x0b, 0xb2, 0x35, 0x97, 0x87, 0xc9, - 0x2d, 0xf9, 0xbb, 0x3c, 0x71, 0x7b, 0x11, 0x29, 0xdc, 0x9a, 0xdf, 0xfb, 0xea, 0xdc, 0x50, 0xee, - 0xe3, 0x90, 0x11, 0xbf, 0xae, 0xa3, 0x00, 0xc7, 0x38, 0x30, 0x9f, 0x7c, 0x07, 0x4b, 0xff, 0x23, - 0x0d, 0x1e, 0x12, 0xc5, 0x5f, 0xa8, 0xfb, 0xc7, 0xeb, 0x0e, 0xee, 0xe9, 0x9f, 0x81, 0x14, 0x62, - 0x8e, 0x63, 0x3f, 0x78, 0xc2, 0x6e, 0x23, 0x23, 0xc5, 0x17, 0xc9, 0xbf, 0x56, 0x00, 0x51, 0xb6, - 0x38, 0xf8, 0x69, 0x97, 0x67, 0x9e, 0x80, 0x61, 0xca, 0x2f, 0xeb, 0x35, 0xae, 0xe8, 0xf5, 0x1b, - 0x11, 0x7a, 0x91, 0x38, 0x32, 0xef, 0x4a, 0x7a, 0x09, 0x77, 0xab, 0x91, 0xe2, 0x8b, 0x3c, 0xf8, - 0x8a, 0x29, 0xdc, 0xff, 0x91, 0x88, 0x8a, 0x57, 0x72, 0x1e, 0x52, 0x65, 0x55, 0x26, 0x5a, 0xcf, - 0x55, 0x48, 0x6e, 0xb9, 0x35, 0xf2, 0x53, 0x2c, 0xe4, 0xd7, 0x64, 0x99, 0x91, 0xd9, 0x4f, 0xcb, - 0x5e, 0x82, 0x54, 0xe9, 0xb8, 0xde, 0xa8, 0xb5, 0x91, 0xc3, 0x1e, 0xd9, 0xb3, 0x1d, 0x74, 0x8c, - 0xb1, 0x82, 0xb9, 0x5c, 0x09, 0xa6, 0xb6, 0x5c, 0xa7, 0x78, 0xe2, 0x8b, 0x75, 0x63, 0x51, 0x49, - 0x11, 0xf6, 0xc8, 0x87, 0x7c, 0x01, 0x04, 0x0b, 0x14, 0x87, 0xbf, 0xf3, 0xee, 0x9c, 0xb6, 0x17, - 0x6c, 0x9f, 0x6f, 0xc2, 0xc3, 0x2c, 0x7d, 0xba, 0xa8, 0x96, 0xe3, 0xa8, 0xc6, 0xd8, 0x63, 0x6a, - 0x81, 0x6e, 0x1d, 0xd3, 0x39, 0x91, 0x74, 0x0f, 0xa6, 0x19, 0x6e, 0x8a, 0xfa, 0x6a, 0xa6, 0x9f, - 0x4a, 0xb3, 0x48, 0xba, 0xc5, 0x38, 0x3a, 0x45, 0xb3, 0xc7, 0x61, 0x2c, 0x98, 0x13, 0xa2, 0x41, - 0xcc, 0x94, 0xe5, 0x85, 0x1c, 0xa4, 0x85, 0x84, 0x35, 0x87, 0x41, 0x2b, 0x18, 0x43, 0xf8, 0xbf, - 0xa2, 0xa1, 0xe1, 0xff, 0x4a, 0x46, 0x62, 0xe1, 0x09, 0x98, 0x54, 0xb6, 0x2f, 0xf1, 0xcc, 0xaa, - 0x01, 0xf8, 0xbf, 0xb2, 0x91, 0x9e, 0x49, 0x7e, 0xee, 0x9f, 0xcc, 0x0e, 0x2d, 0xdc, 0x06, 0xb3, - 0x7b, 0xa3, 0xd3, 0x1c, 0x81, 0x44, 0x01, 0x53, 0x3e, 0x0c, 0x89, 0x62, 0xd1, 0xd0, 0x66, 0x26, - 0xff, 0xd6, 0x97, 0xce, 0xa7, 0x8b, 0xe4, 0xbb, 0xc8, 0x2f, 0x21, 0xbf, 0x58, 0x64, 0xe0, 0x67, - 0xe1, 0xa1, 0xc8, 0x8d, 0x52, 0x8c, 0x2f, 0x95, 0x28, 0x7e, 0x75, 0xb5, 0x0b, 0xbf, 0xba, 0x4a, - 0xf0, 0x5a, 0x9e, 0x3f, 0x70, 0x2e, 0x98, 0x11, 0xdb, 0x92, 0xd9, 0x9a, 0xf0, 0x80, 0xbb, 0x90, - 0x7f, 0x96, 0xc9, 0x16, 0x23, 0x65, 0x51, 0xcc, 0x03, 0xeb, 0x62, 0xbe, 0xc4, 0xf0, 0xa5, 0x48, - 0xfc, 0xa1, 0xf2, 0x54, 0x55, 0x5e, 0x21, 0x18, 0x49, 0x29, 0x50, 0x78, 0x35, 0x92, 0xe4, 0x58, - 0x78, 0xd7, 0x7d, 0x35, 0x50, 0xb8, 0x1c, 0x29, 0x5b, 0x8f, 0x79, 0xe7, 0xab, 0x9c, 0xbf, 0xcc, - 0x16, 0xf9, 0xc2, 0x15, 0xf3, 0x21, 0x9e, 0xa3, 0x52, 0x05, 0x66, 0x06, 0xe2, 0x52, 0xf9, 0x12, - 0x03, 0x14, 0x7b, 0x02, 0x7a, 0x5b, 0x89, 0x23, 0xf3, 0xcf, 0x33, 0x92, 0x52, 0x4f, 0x92, 0x18, - 0x53, 0x71, 0x78, 0x71, 0xef, 0xde, 0x7b, 0xb3, 0x43, 0xef, 0xbc, 0x37, 0x3b, 0xf4, 0xdf, 0xdf, - 0x9b, 0x1d, 0xfa, 0xc3, 0xf7, 0x66, 0xb5, 0xef, 0xbf, 0x37, 0xab, 0xfd, 0xf0, 0xbd, 0x59, 0xed, - 0xcf, 0xde, 0x9b, 0xd5, 0xde, 0xbc, 0x3f, 0xab, 0x7d, 0xfd, 0xfe, 0xac, 0xf6, 0x8d, 0xfb, 0xb3, - 0xda, 0xef, 0xde, 0x9f, 0xd5, 0xde, 0xbe, 0x3f, 0xab, 0xdd, 0xbb, 0x3f, 0xab, 0xbd, 0x73, 0x7f, - 0x56, 0xfb, 0xc3, 0xfb, 0xb3, 0xda, 0xf7, 0xef, 0xcf, 0x0e, 0xfd, 0xf0, 0xfe, 0xac, 0xf6, 0x67, - 0xf7, 0x67, 0x87, 0xde, 0xfc, 0xee, 0xec, 0xd0, 0x5b, 0xdf, 0x9d, 0x1d, 0xfa, 0xfa, 0x77, 0x67, - 0x35, 0xf8, 0xa3, 0x15, 0xb8, 0xc4, 0xbe, 0x48, 0x46, 0xbf, 0xb7, 0x1a, 0x7c, 0x6b, 0xf5, 0xb2, - 0x7f, 0x8c, 0x48, 0x63, 0x70, 0x95, 0xff, 0xaa, 0x53, 0x30, 0x70, 0xca, 0xaf, 0x96, 0xcd, 0x3c, - 0xe8, 0x17, 0xd9, 0x72, 0xff, 0x61, 0x18, 0x46, 0xf9, 0x86, 0x70, 0xd4, 0xaf, 0x26, 0x5f, 0x83, - 0xd4, 0x71, 0xbd, 0x61, 0xb7, 0xeb, 0xfe, 0x09, 0xdb, 0x09, 0x7d, 0x64, 0x31, 0x54, 0x9b, 0xef, - 0x9d, 0x3e, 0xdf, 0x69, 0xba, 0x9d, 0xb6, 0x15, 0x88, 0x9a, 0xe7, 0x21, 0x73, 0x8c, 0xea, 0x47, - 0xc7, 0x7e, 0xa5, 0xee, 0x54, 0xaa, 0x4d, 0xd2, 0x31, 0x8f, 0x5b, 0x40, 0xc7, 0xd6, 0x9d, 0x52, - 0x13, 0x9f, 0xac, 0x66, 0xfb, 0x36, 0xb9, 0x53, 0xcf, 0x58, 0xe4, 0xb3, 0x79, 0x01, 0x32, 0x6d, - 0xe4, 0x75, 0x1a, 0x7e, 0xa5, 0xea, 0x76, 0x1c, 0x9f, 0xf4, 0xb4, 0xba, 0x95, 0xa6, 0x63, 0x25, - 0x3c, 0x64, 0x3e, 0x0e, 0xe3, 0x7e, 0xbb, 0x83, 0x2a, 0x5e, 0xd5, 0xf5, 0xbd, 0xa6, 0xed, 0x90, - 0x9e, 0x36, 0x65, 0x65, 0xf0, 0xe0, 0x2e, 0x1b, 0x23, 0xbf, 0xca, 0x5f, 0x75, 0xdb, 0x88, 0xdc, - 0x52, 0x27, 0x2c, 0x7a, 0x60, 0x1a, 0xa0, 0xbf, 0x8a, 0x4e, 0xc8, 0x4d, 0x5b, 0xd2, 0xc2, 0x1f, - 0xcd, 0xa7, 0x60, 0x84, 0xfe, 0xc1, 0x06, 0xd2, 0x61, 0x93, 0xe7, 0xd7, 0xc1, 0xa5, 0xd1, 0x7d, - 0x5a, 0x8b, 0x09, 0x98, 0xb7, 0x60, 0xd4, 0x47, 0xed, 0xb6, 0x5d, 0x77, 0xc8, 0x0d, 0x54, 0x7a, - 0x79, 0x2e, 0xc2, 0x0c, 0x7b, 0x54, 0x82, 0xfc, 0x40, 0xaa, 0xc5, 0xe5, 0xcd, 0x6b, 0x90, 0x21, - 0x72, 0xcb, 0x15, 0xfa, 0x47, 0x2d, 0xd2, 0x3d, 0x63, 0x3a, 0x4d, 0xe5, 0xf8, 0xe3, 0x02, 0x0e, - 0xa3, 0xbf, 0x70, 0x37, 0x4e, 0x4e, 0xfb, 0x78, 0xc4, 0x69, 0x49, 0xf9, 0x5d, 0x26, 0xad, 0x23, - 0x3d, 0x35, 0xe3, 0xa1, 0xbf, 0x81, 0xb7, 0x09, 0x19, 0x51, 0x2f, 0x6e, 0x06, 0xda, 0x02, 0x11, - 0x33, 0x3c, 0x19, 0xfe, 0xe0, 0x79, 0x0f, 0x2b, 0xd0, 0xf9, 0x7c, 0xe2, 0xa6, 0x36, 0xb3, 0x03, - 0x86, 0x7a, 0xbe, 0x08, 0xca, 0x4b, 0x32, 0xa5, 0x21, 0x5e, 0x2c, 0xd9, 0x2c, 0x0f, 0x19, 0x73, - 0xcf, 0xc1, 0x08, 0x8d, 0x1f, 0x33, 0x0d, 0xa3, 0xfb, 0x5b, 0x9f, 0xdc, 0xda, 0x7e, 0x61, 0x8b, - 0xfe, 0xf4, 0xe8, 0xce, 0xfe, 0xd6, 0x2e, 0xfd, 0x01, 0xd1, 0xdd, 0x8d, 0xc2, 0xce, 0xee, 0xde, - 0x7a, 0xe9, 0x93, 0x46, 0xc2, 0x9c, 0x84, 0x74, 0x71, 0x7d, 0x63, 0xa3, 0x52, 0x2c, 0xac, 0x6f, - 0x94, 0x5f, 0x32, 0xf4, 0xdc, 0x2c, 0x8c, 0x50, 0x3d, 0xc9, 0xaf, 0xb9, 0x75, 0x1c, 0xe7, 0x84, - 0xb7, 0x10, 0xe4, 0x20, 0xf7, 0x4d, 0x13, 0x46, 0x0b, 0x8d, 0xc6, 0xa6, 0xdd, 0xf2, 0xcc, 0x17, - 0x60, 0x8a, 0xfe, 0xa8, 0xc4, 0x9e, 0xbb, 0x4a, 0x7e, 0x74, 0x10, 0x17, 0x08, 0x8d, 0xfd, 0xd0, - 0x7b, 0x78, 0xdd, 0x4c, 0x7c, 0xb1, 0x4b, 0x96, 0x1a, 0xb8, 0x9b, 0xc3, 0xdc, 0x03, 0x83, 0x0f, - 0xae, 0x35, 0x5c, 0xdb, 0xc7, 0xbc, 0x09, 0xf6, 0x9b, 0x80, 0xbd, 0x79, 0xb9, 0x28, 0xa5, 0xed, - 0x62, 0x30, 0x3f, 0x01, 0xa9, 0x75, 0xc7, 0xbf, 0xba, 0x8c, 0xd9, 0xf8, 0x1f, 0x21, 0xe9, 0x66, - 0xe3, 0x22, 0x94, 0x25, 0x40, 0x30, 0xf4, 0xf5, 0x15, 0x8c, 0x4e, 0xf6, 0x43, 0x13, 0x91, 0x10, - 0x4d, 0x0e, 0xcd, 0xe7, 0x60, 0x0c, 0xdf, 0xa1, 0xd0, 0x93, 0x0f, 0xf3, 0xf6, 0xb5, 0x0b, 0x1e, - 0xc8, 0x50, 0x7c, 0x88, 0xe1, 0x04, 0xf4, 0xfc, 0x23, 0x7d, 0x09, 0x04, 0x05, 0x42, 0x0c, 0x26, - 0xd8, 0x0d, 0x34, 0x18, 0xed, 0x49, 0xb0, 0xab, 0x68, 0xb0, 0x2b, 0x6a, 0xb0, 0x1b, 0x68, 0x90, - 0xea, 0x4b, 0x20, 0x6a, 0x10, 0x1c, 0x9b, 0x45, 0x80, 0xb5, 0xfa, 0x1b, 0xa8, 0x46, 0x55, 0xa0, - 0x7f, 0xa2, 0x24, 0x17, 0xc1, 0x10, 0x0a, 0x51, 0x0a, 0x01, 0x65, 0x96, 0x21, 0xbd, 0x7b, 0x18, - 0x92, 0x40, 0x57, 0x1e, 0x07, 0x6a, 0x1c, 0x2a, 0x2c, 0x22, 0x2e, 0x50, 0x85, 0x5e, 0x4c, 0xba, - 0xbf, 0x2a, 0xc2, 0xd5, 0x08, 0xa8, 0x50, 0x15, 0x4a, 0x92, 0x89, 0x51, 0x45, 0x60, 0x11, 0x71, - 0xb8, 0x18, 0x16, 0x5d, 0x17, 0x4b, 0xb2, 0xaa, 0x34, 0x17, 0x41, 0xc1, 0x24, 0x58, 0x31, 0x64, - 0x47, 0xc4, 0x23, 0x24, 0xc8, 0x31, 0x78, 0xa2, 0xb7, 0x47, 0xb8, 0x0c, 0xf7, 0x08, 0x3f, 0x16, - 0xf3, 0x8c, 0xbc, 0xd4, 0x8a, 0x79, 0x26, 0x63, 0xf3, 0x8c, 0x8b, 0x2a, 0x79, 0xc6, 0x87, 0xcd, - 0x4f, 0xc1, 0x24, 0x1f, 0xc3, 0xe5, 0x09, 0x93, 0x1a, 0xec, 0x8f, 0x38, 0xf5, 0x26, 0x65, 0x92, - 0x94, 0x53, 0xc5, 0x9b, 0x5b, 0x30, 0xc1, 0x87, 0x36, 0x3d, 0x72, 0xb9, 0x53, 0xec, 0x0f, 0x24, - 0xf4, 0x66, 0xa4, 0x82, 0x94, 0x50, 0x41, 0xcf, 0xac, 0xc2, 0x74, 0x74, 0x35, 0x12, 0xcb, 0xef, - 0x18, 0x2d, 0xbf, 0x67, 0xc5, 0xf2, 0xab, 0x89, 0xe5, 0xbb, 0x04, 0x0f, 0x45, 0xd6, 0x9e, 0x38, - 0x92, 0x84, 0x48, 0x72, 0x1b, 0xc6, 0xa5, 0x92, 0x23, 0x82, 0x87, 0x23, 0xc0, 0xc3, 0xdd, 0xe0, - 0x30, 0xb4, 0x22, 0x56, 0x0f, 0x09, 0xac, 0x8b, 0xe0, 0x4f, 0xc0, 0x84, 0x5c, 0x6f, 0x44, 0xf4, - 0x78, 0x04, 0x7a, 0x3c, 0x02, 0x1d, 0x7d, 0xee, 0x64, 0x04, 0x3a, 0xa9, 0xa0, 0x77, 0x7b, 0x9e, - 0x7b, 0x2a, 0x02, 0x3d, 0x15, 0x81, 0x8e, 0x3e, 0xb7, 0x19, 0x81, 0x36, 0x45, 0xf4, 0x33, 0x30, - 0xa9, 0x94, 0x18, 0x11, 0x3e, 0x1a, 0x01, 0x1f, 0x15, 0xe1, 0xcf, 0x82, 0xa1, 0x16, 0x17, 0x11, - 0x3f, 0x19, 0x81, 0x9f, 0x8c, 0x3a, 0x7d, 0xb4, 0xf6, 0x23, 0x11, 0xf0, 0x91, 0xc8, 0xd3, 0x47, - 0xe3, 0x8d, 0x08, 0xbc, 0x21, 0xe2, 0xf3, 0x90, 0x11, 0xab, 0x89, 0x88, 0x4d, 0x45, 0x60, 0x53, - 0xaa, 0xdd, 0xa5, 0x62, 0x12, 0x17, 0xe9, 0x63, 0x3d, 0xd2, 0x45, 0x2a, 0x21, 0x71, 0x24, 0x19, - 0x91, 0xe4, 0xd3, 0x70, 0x36, 0xaa, 0x64, 0x44, 0x70, 0xcc, 0x8b, 0x1c, 0x13, 0xb8, 0x47, 0x0c, - 0x9b, 0x3d, 0xbb, 0xa5, 0x34, 0x4e, 0x33, 0x2f, 0xc3, 0x99, 0x88, 0xc2, 0x11, 0x41, 0xbb, 0x28, - 0x77, 0x63, 0x59, 0x81, 0x96, 0x14, 0x81, 0xba, 0x73, 0xb4, 0xe3, 0xd6, 0x1d, 0x5f, 0xec, 0xca, - 0xbe, 0x75, 0x06, 0x26, 0x58, 0x79, 0xda, 0x6e, 0xd7, 0x50, 0x1b, 0xd5, 0xcc, 0xbf, 0xd2, 0xbb, - 0x77, 0x5a, 0xea, 0x2e, 0x6a, 0x0c, 0x75, 0x8a, 0x16, 0xea, 0xe5, 0x9e, 0x2d, 0xd4, 0xe5, 0x78, - 0xfa, 0xb8, 0x4e, 0xaa, 0xd4, 0xd5, 0x49, 0x3d, 0xd9, 0x9b, 0xb4, 0x57, 0x43, 0x55, 0xea, 0x6a, - 0xa8, 0xfa, 0x93, 0x44, 0xf6, 0x55, 0x6b, 0xdd, 0x7d, 0xd5, 0x7c, 0x6f, 0x96, 0xde, 0xed, 0xd5, - 0x5a, 0x77, 0x7b, 0x15, 0xc3, 0x13, 0xdd, 0x65, 0xad, 0x75, 0x77, 0x59, 0x7d, 0x78, 0x7a, 0x37, - 0x5b, 0x6b, 0xdd, 0xcd, 0x56, 0x0c, 0x4f, 0x74, 0xcf, 0xb5, 0x1e, 0xd1, 0x73, 0x3d, 0xd5, 0x9b, - 0xa8, 0x5f, 0xeb, 0xb5, 0x11, 0xd5, 0x7a, 0x2d, 0xf4, 0x51, 0xaa, 0x6f, 0x07, 0xb6, 0x1e, 0xd1, - 0x81, 0xc5, 0x29, 0xd6, 0xa3, 0x11, 0xdb, 0x88, 0x6a, 0xc4, 0x62, 0x15, 0xeb, 0xd5, 0x8f, 0xfd, - 0x25, 0xb5, 0x1f, 0xbb, 0xd4, 0x9b, 0x29, 0xba, 0x2d, 0x5b, 0xeb, 0x6e, 0xcb, 0xe6, 0xe3, 0x72, - 0x2e, 0xaa, 0x3b, 0x7b, 0xb9, 0x67, 0x77, 0x36, 0x40, 0x0a, 0xc7, 0x35, 0x69, 0x2f, 0xf6, 0x6a, - 0xd2, 0x16, 0xe3, 0xb9, 0xfb, 0xf7, 0x6a, 0xfb, 0x3d, 0x7a, 0xb5, 0xa7, 0xe3, 0x89, 0x3f, 0x6a, - 0xd9, 0x3e, 0x6a, 0xd9, 0x3e, 0x6a, 0xd9, 0x3e, 0x6a, 0xd9, 0x7e, 0xfa, 0x2d, 0x5b, 0x3e, 0xf9, - 0xf9, 0xaf, 0xce, 0x69, 0xb9, 0xff, 0xa6, 0x07, 0x7f, 0x7b, 0xea, 0x85, 0xba, 0x7f, 0x8c, 0xcb, - 0xdb, 0x26, 0x64, 0xc8, 0x9f, 0xbe, 0x68, 0xda, 0xad, 0x56, 0xdd, 0x39, 0x62, 0x3d, 0xdb, 0x42, - 0xf7, 0x56, 0x22, 0x03, 0x90, 0x3f, 0x1e, 0xb2, 0x49, 0x85, 0xd9, 0x72, 0xe3, 0x84, 0x23, 0xe6, - 0x5d, 0x48, 0x37, 0xbd, 0xa3, 0x80, 0x2d, 0xd1, 0xb5, 0x10, 0x2a, 0x6c, 0xf4, 0x4a, 0x43, 0x32, - 0x68, 0x06, 0x03, 0x58, 0xb5, 0x83, 0x13, 0x3f, 0x54, 0x4d, 0x8f, 0x53, 0x0d, 0xfb, 0x54, 0x56, - 0xed, 0x20, 0x1c, 0xc1, 0x61, 0xab, 0xea, 0x1e, 0x57, 0xe9, 0xa4, 0xe0, 0x79, 0x01, 0x26, 0x15, - 0x6d, 0x23, 0x72, 0xfe, 0x01, 0x7c, 0x83, 0x15, 0x53, 0x35, 0x8f, 0xcb, 0x09, 0x31, 0x20, 0x73, - 0x8f, 0xc1, 0xb8, 0xc4, 0x6d, 0x66, 0x40, 0x3b, 0x64, 0xdf, 0xa8, 0xd4, 0x0e, 0x73, 0x5f, 0xd1, - 0x20, 0xcd, 0x5e, 0x27, 0xd8, 0xb1, 0xeb, 0x6d, 0xf3, 0x79, 0x48, 0x36, 0xf8, 0xb7, 0x9a, 0x1e, - 0xf4, 0x1b, 0xb4, 0x84, 0xc1, 0x5c, 0x83, 0xe1, 0x76, 0xf0, 0xad, 0xa7, 0x07, 0xfa, 0x5a, 0x2c, - 0x81, 0xe7, 0xee, 0x69, 0x30, 0xc5, 0xde, 0x76, 0xf5, 0xd8, 0x3b, 0xd0, 0x76, 0x6b, 0xe6, 0x9b, - 0x1a, 0x8c, 0x05, 0x47, 0xe6, 0x01, 0x4c, 0x04, 0x07, 0xf4, 0x3d, 0x7b, 0x1a, 0xa9, 0x79, 0xc1, - 0xc2, 0x5d, 0x1c, 0x8b, 0x11, 0x9f, 0xe8, 0x03, 0x29, 0xba, 0x26, 0xcb, 0x83, 0x33, 0x05, 0x38, - 0x13, 0x21, 0x76, 0x9a, 0x05, 0x39, 0x77, 0x01, 0xc6, 0xb6, 0x5c, 0x9f, 0xfe, 0x78, 0x8e, 0x79, - 0x56, 0x78, 0xaa, 0x50, 0x4c, 0x18, 0x43, 0x04, 0xbc, 0x70, 0x01, 0x46, 0x59, 0xf6, 0x9b, 0x23, - 0x90, 0xd8, 0x2c, 0x18, 0x43, 0xe4, 0xff, 0xa2, 0xa1, 0x91, 0xff, 0x4b, 0x46, 0xa2, 0xb8, 0xf1, - 0x00, 0x4f, 0x9b, 0x86, 0xde, 0xb9, 0x3f, 0x3b, 0xa4, 0x3c, 0x6d, 0xd2, 0xde, 0xfc, 0xee, 0xec, - 0xd0, 0xc1, 0x08, 0x35, 0xcf, 0x5f, 0x04, 0x00, 0x00, 0xff, 0xff, 0x29, 0x93, 0x42, 0xb3, 0x4f, - 0x7e, 0x00, 0x00, + 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0xc8, 0x19, + 0x68, 0x34, 0xa2, 0xb8, 0x16, 0x87, 0xc3, 0x21, 0xe7, 0x82, 0xb1, 0xa4, 0x00, 0x20, 0x38, 0xe2, + 0x98, 0x04, 0xe9, 0x26, 0x69, 0x69, 0xd6, 0xa9, 0xa0, 0x9a, 0xc0, 0x21, 0xd9, 0x12, 0xd0, 0x8d, + 0x45, 0x37, 0x24, 0xd1, 0x0f, 0x29, 0x65, 0x9d, 0x6c, 0xbc, 0x49, 0xe5, 0xba, 0x49, 0xc5, 0xeb, + 0xf8, 0x22, 0x6f, 0x6a, 0x63, 0xef, 0x6e, 0x2e, 0x5e, 0x67, 0xe3, 0x6c, 0x6d, 0xa5, 0xb2, 0xca, + 0x83, 0x93, 0xc9, 0x4b, 0x4a, 0x9b, 0xbc, 0xa4, 0x5c, 0x29, 0x95, 0x35, 0x72, 0x55, 0x9c, 0xac, + 0x93, 0x78, 0xb3, 0xae, 0xda, 0xad, 0xf2, 0x3e, 0xa4, 0xce, 0xad, 0xbb, 0xcf, 0x41, 0x03, 0x0d, + 0x8e, 0x24, 0x7b, 0x1f, 0xfc, 0x32, 0x83, 0x3e, 0xe7, 0xff, 0xbe, 0xfe, 0xfb, 0xbf, 0x9d, 0xbf, + 0x4f, 0x37, 0x40, 0x78, 0x7f, 0x0d, 0x2e, 0x1c, 0x3b, 0xce, 0x71, 0x03, 0x5d, 0x69, 0xb5, 0x1d, + 0xcf, 0x39, 0xec, 0x1c, 0x5d, 0xa9, 0x23, 0xb7, 0xd6, 0xb6, 0x5a, 0x9e, 0xd3, 0x5e, 0x22, 0x63, + 0xfa, 0x24, 0x95, 0x58, 0xe2, 0x12, 0xb9, 0x6d, 0x98, 0xda, 0xb0, 0x1a, 0x68, 0xdd, 0x17, 0xdc, + 0x43, 0x9e, 0x7e, 0x13, 0x92, 0x47, 0x56, 0x03, 0x65, 0x95, 0x0b, 0xea, 0x42, 0x7a, 0xe5, 0xd2, + 0x92, 0x04, 0x5a, 0x12, 0x11, 0xbb, 0x78, 0xd8, 0x20, 0x88, 0xdc, 0xf7, 0x92, 0x30, 0x1d, 0x31, + 0xab, 0xeb, 0x90, 0xb4, 0xcd, 0x26, 0x66, 0x54, 0x16, 0xc6, 0x0c, 0xf2, 0x59, 0xcf, 0xc2, 0x68, + 0xcb, 0xac, 0xbd, 0x6a, 0x1e, 0xa3, 0x6c, 0x82, 0x0c, 0xf3, 0x43, 0x7d, 0x0e, 0xa0, 0x8e, 0x5a, + 0xc8, 0xae, 0x23, 0xbb, 0x76, 0x9a, 0x55, 0x2f, 0xa8, 0x0b, 0x63, 0x46, 0x68, 0x44, 0xff, 0x39, + 0x98, 0x6a, 0x75, 0x0e, 0x1b, 0x56, 0xad, 0x1a, 0x12, 0x83, 0x0b, 0xea, 0xc2, 0xb0, 0xa1, 0xd1, + 0x89, 0xf5, 0x40, 0xf8, 0x69, 0x98, 0x7c, 0x1d, 0x99, 0xaf, 0x86, 0x45, 0xd3, 0x44, 0x74, 0x02, + 0x0f, 0x87, 0x04, 0x4b, 0x90, 0x69, 0x22, 0xd7, 0x35, 0x8f, 0x51, 0xd5, 0x3b, 0x6d, 0xa1, 0x6c, + 0x92, 0x5c, 0xfd, 0x85, 0xae, 0xab, 0x97, 0xaf, 0x3c, 0xcd, 0x50, 0xfb, 0xa7, 0x2d, 0xa4, 0x17, + 0x60, 0x0c, 0xd9, 0x9d, 0x26, 0x65, 0x18, 0xee, 0x61, 0xbf, 0xb2, 0xdd, 0x69, 0xca, 0x2c, 0x29, + 0x0c, 0x63, 0x14, 0xa3, 0x2e, 0x6a, 0xbf, 0x66, 0xd5, 0x50, 0x76, 0x84, 0x10, 0x3c, 0xdd, 0x45, + 0xb0, 0x47, 0xe7, 0x65, 0x0e, 0x8e, 0xd3, 0x4b, 0x30, 0x86, 0xde, 0xf0, 0x90, 0xed, 0x5a, 0x8e, + 0x9d, 0x1d, 0x25, 0x24, 0x4f, 0x45, 0x78, 0x11, 0x35, 0xea, 0x32, 0x45, 0x80, 0xd3, 0xaf, 0xc3, + 0xa8, 0xd3, 0xf2, 0x2c, 0xc7, 0x76, 0xb3, 0xa9, 0x0b, 0xca, 0x42, 0x7a, 0xe5, 0x7c, 0x64, 0x20, + 0xec, 0x50, 0x19, 0x83, 0x0b, 0xeb, 0x9b, 0xa0, 0xb9, 0x4e, 0xa7, 0x5d, 0x43, 0xd5, 0x9a, 0x53, + 0x47, 0x55, 0xcb, 0x3e, 0x72, 0xb2, 0x63, 0x84, 0x60, 0xbe, 0xfb, 0x42, 0x88, 0x60, 0xc9, 0xa9, + 0xa3, 0x4d, 0xfb, 0xc8, 0x31, 0x26, 0x5c, 0xe1, 0x58, 0x9f, 0x81, 0x11, 0xf7, 0xd4, 0xf6, 0xcc, + 0x37, 0xb2, 0x19, 0x12, 0x21, 0xec, 0x28, 0xf7, 0x27, 0xc3, 0x30, 0x39, 0x48, 0x88, 0xdd, 0x86, + 0xe1, 0x23, 0x7c, 0x95, 0xd9, 0xc4, 0x59, 0x6c, 0x40, 0x31, 0xa2, 0x11, 0x47, 0x1e, 0xd2, 0x88, + 0x05, 0x48, 0xdb, 0xc8, 0xf5, 0x50, 0x9d, 0x46, 0x84, 0x3a, 0x60, 0x4c, 0x01, 0x05, 0x75, 0x87, + 0x54, 0xf2, 0xa1, 0x42, 0xea, 0x65, 0x98, 0xf4, 0x55, 0xaa, 0xb6, 0x4d, 0xfb, 0x98, 0xc7, 0xe6, + 0x95, 0x38, 0x4d, 0x96, 0xca, 0x1c, 0x67, 0x60, 0x98, 0x31, 0x81, 0x84, 0x63, 0x7d, 0x1d, 0xc0, + 0xb1, 0x91, 0x73, 0x54, 0xad, 0xa3, 0x5a, 0x23, 0x9b, 0xea, 0x61, 0xa5, 0x1d, 0x2c, 0xd2, 0x65, + 0x25, 0x87, 0x8e, 0xd6, 0x1a, 0xfa, 0xad, 0x20, 0xd4, 0x46, 0x7b, 0x44, 0xca, 0x36, 0x4d, 0xb2, + 0xae, 0x68, 0x3b, 0x80, 0x89, 0x36, 0xc2, 0x71, 0x8f, 0xea, 0xec, 0xca, 0xc6, 0x88, 0x12, 0x4b, + 0xb1, 0x57, 0x66, 0x30, 0x18, 0xbd, 0xb0, 0xf1, 0x76, 0xf8, 0x50, 0x7f, 0x12, 0xfc, 0x81, 0x2a, + 0x09, 0x2b, 0x20, 0x55, 0x28, 0xc3, 0x07, 0x2b, 0x66, 0x13, 0xcd, 0xde, 0x84, 0x09, 0xd1, 0x3c, + 0xfa, 0x39, 0x18, 0x76, 0x3d, 0xb3, 0xed, 0x91, 0x28, 0x1c, 0x36, 0xe8, 0x81, 0xae, 0x81, 0x8a, + 0xec, 0x3a, 0xa9, 0x72, 0xc3, 0x06, 0xfe, 0x38, 0x7b, 0x03, 0xc6, 0x85, 0xd3, 0x0f, 0x0a, 0xcc, + 0x7d, 0x7e, 0x04, 0xce, 0x45, 0xc5, 0x5c, 0x64, 0xf8, 0xcf, 0xc0, 0x88, 0xdd, 0x69, 0x1e, 0xa2, + 0x76, 0x56, 0x25, 0x0c, 0xec, 0x48, 0x2f, 0xc0, 0x70, 0xc3, 0x3c, 0x44, 0x8d, 0x6c, 0xf2, 0x82, + 0xb2, 0x30, 0xb1, 0xf2, 0x73, 0x03, 0x45, 0xf5, 0xd2, 0x16, 0x86, 0x18, 0x14, 0xa9, 0x3f, 0x0f, + 0x49, 0x56, 0xe2, 0x30, 0xc3, 0xe2, 0x60, 0x0c, 0x38, 0x16, 0x0d, 0x82, 0xd3, 0x1f, 0x87, 0x31, + 0xfc, 0x3f, 0xb5, 0xed, 0x08, 0xd1, 0x39, 0x85, 0x07, 0xb0, 0x5d, 0xf5, 0x59, 0x48, 0x91, 0x30, + 0xab, 0x23, 0xbe, 0x34, 0xf8, 0xc7, 0xd8, 0x31, 0x75, 0x74, 0x64, 0x76, 0x1a, 0x5e, 0xf5, 0x35, + 0xb3, 0xd1, 0x41, 0x24, 0x60, 0xc6, 0x8c, 0x0c, 0x1b, 0xfc, 0x14, 0x1e, 0xd3, 0xe7, 0x21, 0x4d, + 0xa3, 0xd2, 0xb2, 0xeb, 0xe8, 0x0d, 0x52, 0x7d, 0x86, 0x0d, 0x1a, 0xa8, 0x9b, 0x78, 0x04, 0x9f, + 0xfe, 0x15, 0xd7, 0xb1, 0xb9, 0x6b, 0xc9, 0x29, 0xf0, 0x00, 0x39, 0xfd, 0x0d, 0xb9, 0xf0, 0x3d, + 0x11, 0x7d, 0x79, 0x72, 0x2c, 0xe6, 0xbe, 0x95, 0x80, 0x24, 0xc9, 0xb7, 0x49, 0x48, 0xef, 0xdf, + 0xdb, 0x2d, 0x57, 0xd7, 0x77, 0x0e, 0x8a, 0x5b, 0x65, 0x4d, 0xd1, 0x27, 0x00, 0xc8, 0xc0, 0xc6, + 0xd6, 0x4e, 0x61, 0x5f, 0x4b, 0xf8, 0xc7, 0x9b, 0x95, 0xfd, 0xeb, 0xab, 0x9a, 0xea, 0x03, 0x0e, + 0xe8, 0x40, 0x32, 0x2c, 0x70, 0x6d, 0x45, 0x1b, 0xd6, 0x35, 0xc8, 0x50, 0x82, 0xcd, 0x97, 0xcb, + 0xeb, 0xd7, 0x57, 0xb5, 0x11, 0x71, 0xe4, 0xda, 0x8a, 0x36, 0xaa, 0x8f, 0xc3, 0x18, 0x19, 0x29, + 0xee, 0xec, 0x6c, 0x69, 0x29, 0x9f, 0x73, 0x6f, 0xdf, 0xd8, 0xac, 0xdc, 0xd1, 0xc6, 0x7c, 0xce, + 0x3b, 0xc6, 0xce, 0xc1, 0xae, 0x06, 0x3e, 0xc3, 0x76, 0x79, 0x6f, 0xaf, 0x70, 0xa7, 0xac, 0xa5, + 0x7d, 0x89, 0xe2, 0xbd, 0xfd, 0xf2, 0x9e, 0x96, 0x11, 0xd4, 0xba, 0xb6, 0xa2, 0x8d, 0xfb, 0xa7, + 0x28, 0x57, 0x0e, 0xb6, 0xb5, 0x09, 0x7d, 0x0a, 0xc6, 0xe9, 0x29, 0xb8, 0x12, 0x93, 0xd2, 0xd0, + 0xf5, 0x55, 0x4d, 0x0b, 0x14, 0xa1, 0x2c, 0x53, 0xc2, 0xc0, 0xf5, 0x55, 0x4d, 0xcf, 0x95, 0x60, + 0x98, 0x44, 0x97, 0xae, 0xc3, 0xc4, 0x56, 0xa1, 0x58, 0xde, 0xaa, 0xee, 0xec, 0xee, 0x6f, 0xee, + 0x54, 0x0a, 0x5b, 0x9a, 0x12, 0x8c, 0x19, 0xe5, 0x4f, 0x1e, 0x6c, 0x1a, 0xe5, 0x75, 0x2d, 0x11, + 0x1e, 0xdb, 0x2d, 0x17, 0xf6, 0xcb, 0xeb, 0x9a, 0x9a, 0xab, 0xc1, 0xb9, 0xa8, 0x3a, 0x13, 0x99, + 0x19, 0x21, 0x17, 0x27, 0x7a, 0xb8, 0x98, 0x70, 0x75, 0xb9, 0xf8, 0xd7, 0x14, 0x98, 0x8e, 0xa8, + 0xb5, 0x91, 0x27, 0x79, 0x01, 0x86, 0x69, 0x88, 0xd2, 0xd5, 0xe7, 0x99, 0xc8, 0xa2, 0x4d, 0x02, + 0xb6, 0x6b, 0x05, 0x22, 0xb8, 0xf0, 0x0a, 0xac, 0xf6, 0x58, 0x81, 0x31, 0x45, 0x97, 0x92, 0x9f, + 0x55, 0x20, 0xdb, 0x8b, 0x3b, 0xa6, 0x50, 0x24, 0x84, 0x42, 0x71, 0x5b, 0x56, 0xe0, 0x62, 0xef, + 0x6b, 0xe8, 0xd2, 0xe2, 0x6b, 0x0a, 0xcc, 0x44, 0x37, 0x2a, 0x91, 0x3a, 0x3c, 0x0f, 0x23, 0x4d, + 0xe4, 0x9d, 0x38, 0x7c, 0xb1, 0xbe, 0x1c, 0xb1, 0x04, 0xe0, 0x69, 0xd9, 0x56, 0x0c, 0x15, 0x5e, + 0x43, 0xd4, 0x5e, 0xdd, 0x06, 0xd5, 0xa6, 0x4b, 0xd3, 0x5f, 0x4e, 0xc0, 0x23, 0x91, 0xe4, 0x91, + 0x8a, 0x3e, 0x01, 0x60, 0xd9, 0xad, 0x8e, 0x47, 0x17, 0x64, 0x5a, 0x9f, 0xc6, 0xc8, 0x08, 0xc9, + 0x7d, 0x5c, 0x7b, 0x3a, 0x9e, 0x3f, 0xaf, 0x92, 0x79, 0xa0, 0x43, 0x44, 0xe0, 0x66, 0xa0, 0x68, + 0x92, 0x28, 0x3a, 0xd7, 0xe3, 0x4a, 0xbb, 0xd6, 0xba, 0x65, 0xd0, 0x6a, 0x0d, 0x0b, 0xd9, 0x5e, + 0xd5, 0xf5, 0xda, 0xc8, 0x6c, 0x5a, 0xf6, 0x31, 0x29, 0xc0, 0xa9, 0xfc, 0xf0, 0x91, 0xd9, 0x70, + 0x91, 0x31, 0x49, 0xa7, 0xf7, 0xf8, 0x2c, 0x46, 0x90, 0x55, 0xa6, 0x1d, 0x42, 0x8c, 0x08, 0x08, + 0x3a, 0xed, 0x23, 0x72, 0xbf, 0x35, 0x0a, 0xe9, 0x50, 0x5b, 0xa7, 0x5f, 0x84, 0xcc, 0x2b, 0xe6, + 0x6b, 0x66, 0x95, 0xb7, 0xea, 0xd4, 0x12, 0x69, 0x3c, 0xb6, 0xcb, 0xda, 0xf5, 0x65, 0x38, 0x47, + 0x44, 0x9c, 0x8e, 0x87, 0xda, 0xd5, 0x5a, 0xc3, 0x74, 0x5d, 0x62, 0xb4, 0x14, 0x11, 0xd5, 0xf1, + 0xdc, 0x0e, 0x9e, 0x2a, 0xf1, 0x19, 0x7d, 0x0d, 0xa6, 0x09, 0xa2, 0xd9, 0x69, 0x78, 0x56, 0xab, + 0x81, 0xaa, 0xf8, 0xe6, 0xc1, 0x25, 0x85, 0xd8, 0xd7, 0x6c, 0x0a, 0x4b, 0x6c, 0x33, 0x01, 0xac, + 0x91, 0xab, 0xaf, 0xc3, 0x13, 0x04, 0x76, 0x8c, 0x6c, 0xd4, 0x36, 0x3d, 0x54, 0x45, 0xbf, 0xd0, + 0x31, 0x1b, 0x6e, 0xd5, 0xb4, 0xeb, 0xd5, 0x13, 0xd3, 0x3d, 0xc9, 0x9e, 0xc3, 0x04, 0xc5, 0x44, + 0x56, 0x31, 0x1e, 0xc3, 0x82, 0x77, 0x98, 0x5c, 0x99, 0x88, 0x15, 0xec, 0xfa, 0x8b, 0xa6, 0x7b, + 0xa2, 0xe7, 0x61, 0x86, 0xb0, 0xb8, 0x5e, 0xdb, 0xb2, 0x8f, 0xab, 0xb5, 0x13, 0x54, 0x7b, 0xb5, + 0xda, 0xf1, 0x8e, 0x6e, 0x66, 0x1f, 0x0f, 0x9f, 0x9f, 0x68, 0xb8, 0x47, 0x64, 0x4a, 0x58, 0xe4, + 0xc0, 0x3b, 0xba, 0xa9, 0xef, 0x41, 0x06, 0x3b, 0xa3, 0x69, 0x7d, 0x06, 0x55, 0x8f, 0x9c, 0x36, + 0x59, 0x59, 0x26, 0x22, 0x32, 0x3b, 0x64, 0xc1, 0xa5, 0x1d, 0x06, 0xd8, 0x76, 0xea, 0x28, 0x3f, + 0xbc, 0xb7, 0x5b, 0x2e, 0xaf, 0x1b, 0x69, 0xce, 0xb2, 0xe1, 0xb4, 0x71, 0x40, 0x1d, 0x3b, 0xbe, + 0x81, 0xd3, 0x34, 0xa0, 0x8e, 0x1d, 0x6e, 0xde, 0x35, 0x98, 0xae, 0xd5, 0xe8, 0x35, 0x5b, 0xb5, + 0x2a, 0x6b, 0xf1, 0xdd, 0xac, 0x26, 0x18, 0xab, 0x56, 0xbb, 0x43, 0x05, 0x58, 0x8c, 0xbb, 0xfa, + 0x2d, 0x78, 0x24, 0x30, 0x56, 0x18, 0x38, 0xd5, 0x75, 0x95, 0x32, 0x74, 0x0d, 0xa6, 0x5b, 0xa7, + 0xdd, 0x40, 0x5d, 0x38, 0x63, 0xeb, 0x54, 0x86, 0x3d, 0x45, 0x6e, 0xdb, 0xda, 0xa8, 0x66, 0x7a, + 0xa8, 0x9e, 0x7d, 0x34, 0x2c, 0x1d, 0x9a, 0xd0, 0xaf, 0x80, 0x56, 0xab, 0x55, 0x91, 0x6d, 0x1e, + 0x36, 0x50, 0xd5, 0x6c, 0x23, 0xdb, 0x74, 0xb3, 0xf3, 0x61, 0xe1, 0x89, 0x5a, 0xad, 0x4c, 0x66, + 0x0b, 0x64, 0x52, 0x5f, 0x84, 0x29, 0xe7, 0xf0, 0x95, 0x1a, 0x8d, 0xac, 0x6a, 0xab, 0x8d, 0x8e, + 0xac, 0x37, 0xb2, 0x97, 0x88, 0x99, 0x26, 0xf1, 0x04, 0x89, 0xab, 0x5d, 0x32, 0xac, 0x3f, 0x03, + 0x5a, 0xcd, 0x3d, 0x31, 0xdb, 0x2d, 0xb2, 0xb4, 0xbb, 0x2d, 0xb3, 0x86, 0xb2, 0x4f, 0x51, 0x51, + 0x3a, 0x5e, 0xe1, 0xc3, 0x38, 0xb2, 0xdd, 0xd7, 0xad, 0x23, 0x8f, 0x33, 0x3e, 0x4d, 0x23, 0x9b, + 0x8c, 0x31, 0xb6, 0x97, 0xe1, 0x5c, 0xc7, 0xb6, 0x6c, 0x0f, 0xb5, 0x5b, 0x6d, 0x84, 0x9b, 0x78, + 0x9a, 0x89, 0xd9, 0xff, 0x31, 0xda, 0xa3, 0x0d, 0x3f, 0x08, 0x4b, 0xd3, 0x00, 0x30, 0xa6, 0x3b, + 0xdd, 0x83, 0xb9, 0x3c, 0x64, 0xc2, 0x71, 0xa1, 0x8f, 0x01, 0x8d, 0x0c, 0x4d, 0xc1, 0x6b, 0x6c, + 0x69, 0x67, 0x1d, 0xaf, 0x8e, 0x3f, 0x5f, 0xd6, 0x12, 0x78, 0x95, 0xde, 0xda, 0xdc, 0x2f, 0x57, + 0x8d, 0x83, 0xca, 0xfe, 0xe6, 0x76, 0x59, 0x53, 0x17, 0xc7, 0x52, 0xdf, 0x1f, 0xd5, 0xde, 0x7c, + 0xf3, 0xcd, 0x37, 0x13, 0xb9, 0x6f, 0x27, 0x60, 0x42, 0xec, 0x8c, 0xf5, 0x8f, 0xc3, 0xa3, 0xfc, + 0x36, 0xd6, 0x45, 0x5e, 0xf5, 0x75, 0xab, 0x4d, 0x42, 0xb5, 0x69, 0xd2, 0xde, 0xd2, 0xb7, 0xf2, + 0x39, 0x26, 0xb5, 0x87, 0xbc, 0x97, 0xac, 0x36, 0x0e, 0xc4, 0xa6, 0xe9, 0xe9, 0x5b, 0x30, 0x6f, + 0x3b, 0x55, 0xd7, 0x33, 0xed, 0xba, 0xd9, 0xae, 0x57, 0x83, 0x0d, 0x84, 0xaa, 0x59, 0xab, 0x21, + 0xd7, 0x75, 0xe8, 0x12, 0xe1, 0xb3, 0x9c, 0xb7, 0x9d, 0x3d, 0x26, 0x1c, 0xd4, 0xce, 0x02, 0x13, + 0x95, 0x22, 0x42, 0xed, 0x15, 0x11, 0x8f, 0xc3, 0x58, 0xd3, 0x6c, 0x55, 0x91, 0xed, 0xb5, 0x4f, + 0x49, 0x3f, 0x97, 0x32, 0x52, 0x4d, 0xb3, 0x55, 0xc6, 0xc7, 0x1f, 0x9d, 0x0f, 0xc2, 0x76, 0xfc, + 0xef, 0x2a, 0x64, 0xc2, 0x3d, 0x1d, 0x6e, 0x91, 0x6b, 0xa4, 0x7e, 0x2b, 0x24, 0xc3, 0x9f, 0xec, + 0xdb, 0x01, 0x2e, 0x95, 0x70, 0x61, 0xcf, 0x8f, 0xd0, 0x4e, 0xcb, 0xa0, 0x48, 0xbc, 0xa8, 0xe2, + 0x9c, 0x46, 0xb4, 0x7f, 0x4f, 0x19, 0xec, 0x48, 0xbf, 0x03, 0x23, 0xaf, 0xb8, 0x84, 0x7b, 0x84, + 0x70, 0x5f, 0xea, 0xcf, 0x7d, 0x77, 0x8f, 0x90, 0x8f, 0xdd, 0xdd, 0xab, 0x56, 0x76, 0x8c, 0xed, + 0xc2, 0x96, 0xc1, 0xe0, 0xfa, 0x63, 0x90, 0x6c, 0x98, 0x9f, 0x39, 0x15, 0x97, 0x00, 0x32, 0x34, + 0xa8, 0xe1, 0x1f, 0x83, 0xe4, 0xeb, 0xc8, 0x7c, 0x55, 0x2c, 0xbc, 0x64, 0xe8, 0x23, 0x0c, 0xfd, + 0x2b, 0x30, 0x4c, 0xec, 0xa5, 0x03, 0x30, 0x8b, 0x69, 0x43, 0x7a, 0x0a, 0x92, 0xa5, 0x1d, 0x03, + 0x87, 0xbf, 0x06, 0x19, 0x3a, 0x5a, 0xdd, 0xdd, 0x2c, 0x97, 0xca, 0x5a, 0x22, 0xb7, 0x06, 0x23, + 0xd4, 0x08, 0x38, 0x35, 0x7c, 0x33, 0x68, 0x43, 0xec, 0x90, 0x71, 0x28, 0x7c, 0xf6, 0x60, 0xbb, + 0x58, 0x36, 0xb4, 0x44, 0xd8, 0xbd, 0x2e, 0x64, 0xc2, 0xed, 0xdc, 0x4f, 0x26, 0xa6, 0x7e, 0x4f, + 0x81, 0x74, 0xa8, 0x3d, 0xc3, 0x8d, 0x81, 0xd9, 0x68, 0x38, 0xaf, 0x57, 0xcd, 0x86, 0x65, 0xba, + 0x2c, 0x28, 0x80, 0x0c, 0x15, 0xf0, 0xc8, 0xa0, 0x4e, 0xfb, 0x89, 0x28, 0xff, 0x65, 0x05, 0x34, + 0xb9, 0xb5, 0x93, 0x14, 0x54, 0x7e, 0xaa, 0x0a, 0x7e, 0x51, 0x81, 0x09, 0xb1, 0x9f, 0x93, 0xd4, + 0xbb, 0xf8, 0x53, 0x55, 0xef, 0xbb, 0x09, 0x18, 0x17, 0xba, 0xb8, 0x41, 0xb5, 0xfb, 0x05, 0x98, + 0xb2, 0xea, 0xa8, 0xd9, 0x72, 0x3c, 0x64, 0xd7, 0x4e, 0xab, 0x0d, 0xf4, 0x1a, 0x6a, 0x64, 0x73, + 0xa4, 0x50, 0x5c, 0xe9, 0xdf, 0x27, 0x2e, 0x6d, 0x06, 0xb8, 0x2d, 0x0c, 0xcb, 0x4f, 0x6f, 0xae, + 0x97, 0xb7, 0x77, 0x77, 0xf6, 0xcb, 0x95, 0xd2, 0xbd, 0xea, 0x41, 0xe5, 0x13, 0x95, 0x9d, 0x97, + 0x2a, 0x86, 0x66, 0x49, 0x62, 0x1f, 0x61, 0xaa, 0xef, 0x82, 0x26, 0x2b, 0xa5, 0x3f, 0x0a, 0x51, + 0x6a, 0x69, 0x43, 0xfa, 0x34, 0x4c, 0x56, 0x76, 0xaa, 0x7b, 0x9b, 0xeb, 0xe5, 0x6a, 0x79, 0x63, + 0xa3, 0x5c, 0xda, 0xdf, 0xa3, 0x37, 0xce, 0xbe, 0xf4, 0xbe, 0x98, 0xd4, 0x5f, 0x50, 0x61, 0x3a, + 0x42, 0x13, 0xbd, 0xc0, 0x7a, 0x76, 0x7a, 0x1b, 0xf1, 0xec, 0x20, 0xda, 0x2f, 0xe1, 0xae, 0x60, + 0xd7, 0x6c, 0x7b, 0xac, 0xc5, 0x7f, 0x06, 0xb0, 0x95, 0x6c, 0xcf, 0x3a, 0xb2, 0x50, 0x9b, 0xed, + 0x33, 0xd0, 0x46, 0x7e, 0x32, 0x18, 0xa7, 0x5b, 0x0d, 0x1f, 0x03, 0xbd, 0xe5, 0xb8, 0x96, 0x67, + 0xbd, 0x86, 0xaa, 0x96, 0xcd, 0x37, 0x25, 0x70, 0x63, 0x9f, 0x34, 0x34, 0x3e, 0xb3, 0x69, 0x7b, + 0xbe, 0xb4, 0x8d, 0x8e, 0x4d, 0x49, 0x1a, 0x17, 0x70, 0xd5, 0xd0, 0xf8, 0x8c, 0x2f, 0x7d, 0x11, + 0x32, 0x75, 0xa7, 0x83, 0xdb, 0x24, 0x2a, 0x87, 0xd7, 0x0b, 0xc5, 0x48, 0xd3, 0x31, 0x5f, 0x84, + 0xf5, 0xb1, 0xc1, 0x6e, 0x48, 0xc6, 0x48, 0xd3, 0x31, 0x2a, 0xf2, 0x34, 0x4c, 0x9a, 0xc7, 0xc7, + 0x6d, 0x4c, 0xce, 0x89, 0x68, 0x67, 0x3e, 0xe1, 0x0f, 0x13, 0xc1, 0xd9, 0xbb, 0x90, 0xe2, 0x76, + 0xc0, 0x4b, 0x32, 0xb6, 0x44, 0xb5, 0x45, 0xf7, 0xa4, 0x12, 0x0b, 0x63, 0x46, 0xca, 0xe6, 0x93, + 0x17, 0x21, 0x63, 0xb9, 0xd5, 0x60, 0x73, 0x34, 0x71, 0x21, 0xb1, 0x90, 0x32, 0xd2, 0x96, 0xeb, + 0xef, 0x86, 0xe5, 0xbe, 0x96, 0x80, 0x09, 0x71, 0x73, 0x57, 0x5f, 0x87, 0x54, 0xc3, 0xa9, 0x99, + 0x24, 0xb4, 0xe8, 0x93, 0x85, 0x85, 0x98, 0xfd, 0xe0, 0xa5, 0x2d, 0x26, 0x6f, 0xf8, 0xc8, 0xd9, + 0xff, 0xac, 0x40, 0x8a, 0x0f, 0xeb, 0x33, 0x90, 0x6c, 0x99, 0xde, 0x09, 0xa1, 0x1b, 0x2e, 0x26, + 0x34, 0xc5, 0x20, 0xc7, 0x78, 0xdc, 0x6d, 0x99, 0x36, 0x09, 0x01, 0x36, 0x8e, 0x8f, 0xb1, 0x5f, + 0x1b, 0xc8, 0xac, 0x93, 0xb6, 0xdf, 0x69, 0x36, 0x91, 0xed, 0xb9, 0xdc, 0xaf, 0x6c, 0xbc, 0xc4, + 0x86, 0xf5, 0x9f, 0x83, 0x29, 0xaf, 0x6d, 0x5a, 0x0d, 0x41, 0x36, 0x49, 0x64, 0x35, 0x3e, 0xe1, + 0x0b, 0xe7, 0xe1, 0x31, 0xce, 0x5b, 0x47, 0x9e, 0x59, 0x3b, 0x41, 0xf5, 0x00, 0x34, 0x42, 0x76, + 0x0e, 0x1f, 0x65, 0x02, 0xeb, 0x6c, 0x9e, 0x63, 0x73, 0x7f, 0xa0, 0xc0, 0x14, 0xbf, 0x51, 0xa9, + 0xfb, 0xc6, 0xda, 0x06, 0x30, 0x6d, 0xdb, 0xf1, 0xc2, 0xe6, 0xea, 0x0e, 0xe5, 0x2e, 0xdc, 0x52, + 0xc1, 0x07, 0x19, 0x21, 0x82, 0xd9, 0x26, 0x40, 0x30, 0xd3, 0xd3, 0x6c, 0xf3, 0x90, 0x66, 0x3b, + 0xf7, 0xe4, 0xf1, 0x0f, 0xbd, 0xb5, 0x05, 0x3a, 0x84, 0xef, 0x68, 0xf4, 0x73, 0x30, 0x7c, 0x88, + 0x8e, 0x2d, 0x9b, 0xed, 0x27, 0xd2, 0x03, 0xbe, 0x4b, 0x99, 0xf4, 0x77, 0x29, 0x8b, 0x2f, 0xc3, + 0x74, 0xcd, 0x69, 0xca, 0xea, 0x16, 0x35, 0xe9, 0xf6, 0xda, 0x7d, 0x51, 0xf9, 0x79, 0x08, 0x5a, + 0xcc, 0x5f, 0x4b, 0xa8, 0x77, 0x76, 0x8b, 0xbf, 0x99, 0x98, 0xbd, 0x43, 0x71, 0xbb, 0xfc, 0x32, + 0x0d, 0x74, 0xd4, 0x40, 0x35, 0xac, 0x3a, 0xfc, 0xf1, 0x65, 0x78, 0xf6, 0xd8, 0xf2, 0x4e, 0x3a, + 0x87, 0x4b, 0x35, 0xa7, 0x79, 0xe5, 0xd8, 0x39, 0x76, 0x82, 0xc7, 0x5d, 0xf8, 0x88, 0x1c, 0x90, + 0x4f, 0xec, 0x91, 0xd7, 0x98, 0x3f, 0x3a, 0x1b, 0xfb, 0x7c, 0x2c, 0x5f, 0x81, 0x69, 0x26, 0x5c, + 0x25, 0x7b, 0xee, 0xf4, 0xd6, 0x40, 0xef, 0xbb, 0xef, 0x92, 0xfd, 0xed, 0xef, 0x91, 0xb5, 0xda, + 0x98, 0x62, 0x50, 0x3c, 0x47, 0x6f, 0x20, 0xf2, 0x06, 0x3c, 0x22, 0xf0, 0xd1, 0xbc, 0x44, 0xed, + 0x18, 0xc6, 0x6f, 0x33, 0xc6, 0xe9, 0x10, 0xe3, 0x1e, 0x83, 0xe6, 0x4b, 0x30, 0x7e, 0x16, 0xae, + 0xff, 0xc0, 0xb8, 0x32, 0x28, 0x4c, 0x72, 0x07, 0x26, 0x09, 0x49, 0xad, 0xe3, 0x7a, 0x4e, 0x93, + 0x14, 0xbd, 0xfe, 0x34, 0xff, 0xf1, 0x7b, 0x34, 0x51, 0x26, 0x30, 0xac, 0xe4, 0xa3, 0xf2, 0x79, + 0x20, 0x8f, 0x19, 0xea, 0xa8, 0xd6, 0x88, 0x61, 0xb8, 0xcf, 0x14, 0xf1, 0xe5, 0xf3, 0x9f, 0x82, + 0x73, 0xf8, 0x33, 0xa9, 0x49, 0x61, 0x4d, 0xe2, 0x77, 0x99, 0xb2, 0x7f, 0xf0, 0x59, 0x9a, 0x8b, + 0xd3, 0x3e, 0x41, 0x48, 0xa7, 0x90, 0x17, 0x8f, 0x91, 0xe7, 0xa1, 0xb6, 0x5b, 0x35, 0x1b, 0x51, + 0xea, 0x85, 0x6e, 0xd3, 0xb3, 0xbf, 0xfa, 0x03, 0xd1, 0x8b, 0x77, 0x28, 0xb2, 0xd0, 0x68, 0xe4, + 0x0f, 0xe0, 0xd1, 0x88, 0xa8, 0x18, 0x80, 0xf3, 0x0b, 0x8c, 0xf3, 0x5c, 0x57, 0x64, 0x60, 0xda, + 0x5d, 0xe0, 0xe3, 0xbe, 0x2f, 0x07, 0xe0, 0xfc, 0xc7, 0x8c, 0x53, 0x67, 0x58, 0xee, 0x52, 0xcc, + 0x78, 0x17, 0xa6, 0x5e, 0x43, 0xed, 0x43, 0xc7, 0x65, 0x5b, 0x23, 0x03, 0xd0, 0x7d, 0x91, 0xd1, + 0x4d, 0x32, 0x20, 0xd9, 0x2b, 0xc1, 0x5c, 0xb7, 0x20, 0x75, 0x64, 0xd6, 0xd0, 0x00, 0x14, 0x5f, + 0x62, 0x14, 0xa3, 0x58, 0x1e, 0x43, 0x0b, 0x90, 0x39, 0x76, 0xd8, 0xb2, 0x14, 0x0f, 0xff, 0x32, + 0x83, 0xa7, 0x39, 0x86, 0x51, 0xb4, 0x9c, 0x56, 0xa7, 0x81, 0xd7, 0xac, 0x78, 0x8a, 0xaf, 0x70, + 0x0a, 0x8e, 0x61, 0x14, 0x67, 0x30, 0xeb, 0x5b, 0x9c, 0xc2, 0x0d, 0xd9, 0xf3, 0x05, 0x48, 0x3b, + 0x76, 0xe3, 0xd4, 0xb1, 0x07, 0x51, 0xe2, 0xab, 0x8c, 0x01, 0x18, 0x04, 0x13, 0xdc, 0x86, 0xb1, + 0x41, 0x1d, 0xf1, 0xeb, 0x3f, 0xe0, 0xe9, 0xc1, 0x3d, 0x70, 0x07, 0x26, 0x79, 0x81, 0xb2, 0x1c, + 0x7b, 0x00, 0x8a, 0x7f, 0xca, 0x28, 0x26, 0x42, 0x30, 0x76, 0x19, 0x1e, 0x72, 0xbd, 0x63, 0x34, + 0x08, 0xc9, 0xd7, 0xf8, 0x65, 0x30, 0x08, 0x33, 0xe5, 0x21, 0xb2, 0x6b, 0x27, 0x83, 0x31, 0x7c, + 0x9d, 0x9b, 0x92, 0x63, 0x30, 0x45, 0x09, 0xc6, 0x9b, 0x66, 0xdb, 0x3d, 0x31, 0x1b, 0x03, 0xb9, + 0xe3, 0x37, 0x18, 0x47, 0xc6, 0x07, 0x31, 0x8b, 0x74, 0xec, 0xb3, 0xd0, 0xfc, 0x26, 0xb7, 0x48, + 0x08, 0xc6, 0x52, 0xcf, 0xf5, 0xc8, 0x06, 0xd4, 0x59, 0xd8, 0x7e, 0x8b, 0xa7, 0x1e, 0xc5, 0x6e, + 0x87, 0x19, 0x6f, 0xc3, 0x98, 0x6b, 0x7d, 0x66, 0x20, 0x9a, 0x7f, 0xc6, 0x3d, 0x4d, 0x00, 0x18, + 0x7c, 0x0f, 0x1e, 0x8b, 0x5c, 0x26, 0x06, 0x20, 0xfb, 0xe7, 0x8c, 0x6c, 0x26, 0x62, 0xa9, 0x60, + 0x25, 0xe1, 0xac, 0x94, 0xff, 0x82, 0x97, 0x04, 0x24, 0x71, 0xed, 0xe2, 0x1b, 0x05, 0xd7, 0x3c, + 0x3a, 0x9b, 0xd5, 0xfe, 0x25, 0xb7, 0x1a, 0xc5, 0x0a, 0x56, 0xdb, 0x87, 0x19, 0xc6, 0x78, 0x36, + 0xbf, 0x7e, 0x83, 0x17, 0x56, 0x8a, 0x3e, 0x10, 0xbd, 0xfb, 0x69, 0x98, 0xf5, 0xcd, 0xc9, 0x3b, + 0x52, 0xb7, 0xda, 0x34, 0x5b, 0x03, 0x30, 0xff, 0x36, 0x63, 0xe6, 0x15, 0xdf, 0x6f, 0x69, 0xdd, + 0x6d, 0xb3, 0x85, 0xc9, 0x5f, 0x86, 0x2c, 0x27, 0xef, 0xd8, 0x6d, 0x54, 0x73, 0x8e, 0x6d, 0xeb, + 0x33, 0xa8, 0x3e, 0x00, 0xf5, 0x37, 0x25, 0x57, 0x1d, 0x84, 0xe0, 0x98, 0x79, 0x13, 0x34, 0xbf, + 0x57, 0xa9, 0x5a, 0xcd, 0x96, 0xd3, 0xf6, 0x62, 0x18, 0xff, 0x15, 0xf7, 0x94, 0x8f, 0xdb, 0x24, + 0xb0, 0x7c, 0x19, 0x26, 0xc8, 0xe1, 0xa0, 0x21, 0xf9, 0x3b, 0x8c, 0x68, 0x3c, 0x40, 0xb1, 0xc2, + 0x51, 0x73, 0x9a, 0x2d, 0xb3, 0x3d, 0x48, 0xfd, 0xfb, 0xd7, 0xbc, 0x70, 0x30, 0x08, 0x2b, 0x1c, + 0xde, 0x69, 0x0b, 0xe1, 0xd5, 0x7e, 0x00, 0x86, 0x6f, 0xf1, 0xc2, 0xc1, 0x31, 0x8c, 0x82, 0x37, + 0x0c, 0x03, 0x50, 0xfc, 0x1b, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0x93, 0xc1, 0x42, 0xdb, 0x46, 0xc7, + 0x96, 0xeb, 0xb5, 0x69, 0x1f, 0xdc, 0x9f, 0xea, 0x77, 0x7f, 0x20, 0x36, 0x61, 0x46, 0x08, 0x9a, + 0xbf, 0x0b, 0x93, 0x52, 0x8b, 0xa1, 0xc7, 0xbd, 0xb3, 0x90, 0xfd, 0x2b, 0x3f, 0x62, 0xc5, 0x48, + 0xec, 0x30, 0xf2, 0x5b, 0xd8, 0xef, 0x62, 0x1f, 0x10, 0x4f, 0xf6, 0xd9, 0x1f, 0xf9, 0xae, 0x17, + 0xda, 0x80, 0xfc, 0x06, 0x8c, 0x0b, 0x3d, 0x40, 0x3c, 0xd5, 0x5f, 0x65, 0x54, 0x99, 0x70, 0x0b, + 0x90, 0x5f, 0x83, 0x24, 0x5e, 0xcf, 0xe3, 0xe1, 0x7f, 0x8d, 0xc1, 0x89, 0x78, 0xfe, 0x39, 0x48, + 0xf1, 0x75, 0x3c, 0x1e, 0xfa, 0x4b, 0x0c, 0xea, 0x43, 0x30, 0x9c, 0xaf, 0xe1, 0xf1, 0xf0, 0xbf, + 0xce, 0xe1, 0x1c, 0x82, 0xe1, 0x83, 0x9b, 0xf0, 0xed, 0xbf, 0x99, 0x64, 0x75, 0x98, 0xdb, 0xee, + 0x36, 0x8c, 0xb2, 0xc5, 0x3b, 0x1e, 0xfd, 0xcb, 0xec, 0xe4, 0x1c, 0x91, 0xbf, 0x01, 0xc3, 0x03, + 0x1a, 0xfc, 0x6f, 0x31, 0x28, 0x95, 0xcf, 0x97, 0x20, 0x1d, 0x5a, 0xb0, 0xe3, 0xe1, 0x7f, 0x9b, + 0xc1, 0xc3, 0x28, 0xac, 0x3a, 0x5b, 0xb0, 0xe3, 0x09, 0xfe, 0x0e, 0x57, 0x9d, 0x21, 0xb0, 0xd9, + 0xf8, 0x5a, 0x1d, 0x8f, 0xfe, 0xbb, 0xdc, 0xea, 0x1c, 0x92, 0x7f, 0x01, 0xc6, 0xfc, 0xfa, 0x1b, + 0x8f, 0xff, 0x7b, 0x0c, 0x1f, 0x60, 0xb0, 0x05, 0x42, 0xf5, 0x3f, 0x9e, 0xe2, 0xef, 0x73, 0x0b, + 0x84, 0x50, 0x38, 0x8d, 0xe4, 0x35, 0x3d, 0x9e, 0xe9, 0x57, 0x78, 0x1a, 0x49, 0x4b, 0x3a, 0xf6, + 0x26, 0x29, 0x83, 0xf1, 0x14, 0xff, 0x80, 0x7b, 0x93, 0xc8, 0x63, 0x35, 0xe4, 0x45, 0x32, 0x9e, + 0xe3, 0x1f, 0x71, 0x35, 0xa4, 0x35, 0x32, 0xbf, 0x0b, 0x7a, 0xf7, 0x02, 0x19, 0xcf, 0xf7, 0x79, + 0xc6, 0x37, 0xd5, 0xb5, 0x3e, 0xe6, 0x5f, 0x82, 0x99, 0xe8, 0xc5, 0x31, 0x9e, 0xf5, 0x57, 0x7f, + 0x24, 0xdd, 0xce, 0x84, 0xd7, 0xc6, 0xfc, 0x7e, 0x50, 0x65, 0xc3, 0x0b, 0x63, 0x3c, 0xed, 0x17, + 0x7e, 0x24, 0x16, 0xda, 0xf0, 0xba, 0x98, 0x2f, 0x00, 0x04, 0x6b, 0x52, 0x3c, 0xd7, 0x17, 0x19, + 0x57, 0x08, 0x84, 0x53, 0x83, 0x2d, 0x49, 0xf1, 0xf8, 0x2f, 0xf1, 0xd4, 0x60, 0x08, 0x9c, 0x1a, + 0x7c, 0x35, 0x8a, 0x47, 0x7f, 0x99, 0xa7, 0x06, 0x87, 0xe4, 0x6f, 0x43, 0xca, 0xee, 0x34, 0x1a, + 0x38, 0xb6, 0xf4, 0xfe, 0xaf, 0x11, 0x65, 0xff, 0xe7, 0x8f, 0x19, 0x98, 0x03, 0xf2, 0x6b, 0x30, + 0x8c, 0x9a, 0x87, 0xa8, 0x1e, 0x87, 0xfc, 0x5f, 0x3f, 0xe6, 0xf5, 0x04, 0x4b, 0xe7, 0x5f, 0x00, + 0xa0, 0x37, 0xd3, 0xe4, 0x29, 0x51, 0x0c, 0xf6, 0x0f, 0x7f, 0xcc, 0xde, 0x50, 0x08, 0x20, 0x01, + 0x01, 0x7d, 0xdf, 0xa1, 0x3f, 0xc1, 0x0f, 0x44, 0x02, 0x72, 0x03, 0x7e, 0x0b, 0x46, 0x5f, 0x71, + 0x1d, 0xdb, 0x33, 0x8f, 0xe3, 0xd0, 0xff, 0x9b, 0xa1, 0xb9, 0x3c, 0x36, 0x58, 0xd3, 0x69, 0x23, + 0xcf, 0x3c, 0x76, 0xe3, 0xb0, 0xff, 0x87, 0x61, 0x7d, 0x00, 0x06, 0xd7, 0x4c, 0xd7, 0x1b, 0xe4, + 0xba, 0xff, 0x2f, 0x07, 0x73, 0x00, 0x56, 0x1a, 0x7f, 0x7e, 0x15, 0x9d, 0xc6, 0x61, 0x7f, 0xc8, + 0x95, 0x66, 0xf2, 0xf9, 0xe7, 0x60, 0x0c, 0x7f, 0xa4, 0x6f, 0xed, 0xc4, 0x80, 0xff, 0x88, 0x81, + 0x03, 0x04, 0x3e, 0xb3, 0xeb, 0xd5, 0x3d, 0x2b, 0xde, 0xd8, 0xff, 0x8f, 0x79, 0x9a, 0xcb, 0xe7, + 0x0b, 0x90, 0x76, 0xbd, 0x7a, 0xbd, 0xc3, 0x3a, 0x9a, 0x18, 0xf8, 0x1f, 0xff, 0xd8, 0xbf, 0xc9, + 0xf5, 0x31, 0xc5, 0x8b, 0xd1, 0x9b, 0x75, 0x70, 0xc7, 0xb9, 0xe3, 0xd0, 0x6d, 0x3a, 0xf8, 0x5e, + 0x03, 0x6e, 0xf4, 0xdc, 0x75, 0xc3, 0x8b, 0xc8, 0x95, 0x9a, 0xd3, 0x3c, 0x74, 0xdc, 0x2b, 0x87, + 0x8e, 0x77, 0x72, 0xc5, 0x3b, 0x41, 0x78, 0x8c, 0xed, 0xbf, 0x25, 0xf1, 0xe7, 0xd9, 0xb3, 0x6d, + 0xda, 0x91, 0xe7, 0xb1, 0x15, 0x0b, 0xeb, 0x5d, 0x21, 0x5b, 0xe2, 0xfa, 0x79, 0x18, 0x21, 0x57, + 0x72, 0x95, 0x3c, 0x76, 0x52, 0x8a, 0xc9, 0xfb, 0xef, 0xce, 0x0f, 0x19, 0x6c, 0xcc, 0x9f, 0x5d, + 0x21, 0x7b, 0x96, 0x09, 0x61, 0x76, 0xc5, 0x9f, 0xbd, 0x46, 0xb7, 0x2d, 0x85, 0xd9, 0x6b, 0xfe, + 0xec, 0x2a, 0xd9, 0xc0, 0x54, 0x85, 0xd9, 0x55, 0x7f, 0x76, 0x8d, 0x6c, 0xd2, 0x8f, 0x0b, 0xb3, + 0x6b, 0xfe, 0xec, 0x75, 0xb2, 0x35, 0x9f, 0x14, 0x66, 0xaf, 0xfb, 0xb3, 0x37, 0xc8, 0xae, 0xfc, + 0x94, 0x30, 0x7b, 0xc3, 0x9f, 0xbd, 0x49, 0x76, 0xe3, 0x75, 0x61, 0xf6, 0xa6, 0x3f, 0x7b, 0x8b, + 0xbc, 0x62, 0x32, 0x2a, 0xcc, 0xde, 0xd2, 0xe7, 0x60, 0x94, 0x5e, 0xf9, 0x32, 0x79, 0x74, 0x3b, + 0xc9, 0xa6, 0xf9, 0x60, 0x30, 0x7f, 0x95, 0xbc, 0x4e, 0x32, 0x22, 0xce, 0x5f, 0x0d, 0xe6, 0x57, + 0xc8, 0x8b, 0xd5, 0x9a, 0x38, 0xbf, 0x12, 0xcc, 0x5f, 0xcb, 0x8e, 0x93, 0x57, 0x6a, 0x84, 0xf9, + 0x6b, 0xc1, 0xfc, 0x6a, 0x76, 0x02, 0x07, 0xb3, 0x38, 0xbf, 0x1a, 0xcc, 0xaf, 0x65, 0x27, 0x2f, + 0x28, 0x0b, 0x19, 0x71, 0x7e, 0x2d, 0xf7, 0x8b, 0xc4, 0xbd, 0x76, 0xe0, 0xde, 0x19, 0xd1, 0xbd, + 0xbe, 0x63, 0x67, 0x44, 0xc7, 0xfa, 0x2e, 0x9d, 0x11, 0x5d, 0xea, 0x3b, 0x73, 0x46, 0x74, 0xa6, + 0xef, 0xc6, 0x19, 0xd1, 0x8d, 0xbe, 0x03, 0x67, 0x44, 0x07, 0xfa, 0xae, 0x9b, 0x11, 0x5d, 0xe7, + 0x3b, 0x6d, 0x46, 0x74, 0x9a, 0xef, 0xae, 0x19, 0xd1, 0x5d, 0xbe, 0xa3, 0xb2, 0x92, 0xa3, 0x02, + 0x17, 0x65, 0x25, 0x17, 0x05, 0xce, 0xc9, 0x4a, 0xce, 0x09, 0xdc, 0x92, 0x95, 0xdc, 0x12, 0x38, + 0x24, 0x2b, 0x39, 0x24, 0x70, 0x45, 0x56, 0x72, 0x45, 0xe0, 0x04, 0x96, 0x63, 0x06, 0x6a, 0x45, + 0xe4, 0x98, 0xda, 0x37, 0xc7, 0xd4, 0xbe, 0x39, 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, + 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xda, 0x3f, 0xc7, + 0xd4, 0x98, 0x1c, 0x53, 0x63, 0x72, 0x4c, 0x8d, 0xc9, 0x31, 0x35, 0x26, 0xc7, 0xd4, 0x98, 0x1c, + 0x53, 0x7b, 0xe6, 0x58, 0xe0, 0xde, 0x19, 0xd1, 0xbd, 0x91, 0x39, 0xa6, 0xf6, 0xc8, 0x31, 0xb5, + 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, 0x91, 0x63, 0x6a, 0x8f, 0x1c, 0x53, 0x7b, 0xe4, 0x98, + 0xda, 0x23, 0xc7, 0xd4, 0x5e, 0x39, 0xa6, 0xf6, 0xcc, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0x3d, 0x73, + 0x4c, 0xed, 0x99, 0x63, 0x6a, 0xcf, 0x1c, 0x53, 0xc3, 0x39, 0xf6, 0x6f, 0x55, 0xd0, 0x69, 0x8e, + 0xed, 0x92, 0x97, 0x7f, 0x98, 0x2b, 0xe6, 0xa4, 0x4c, 0x1b, 0xc1, 0xae, 0xd3, 0x02, 0x97, 0xcc, + 0x49, 0xb9, 0x26, 0xce, 0xaf, 0xf8, 0xf3, 0x3c, 0xdb, 0xc4, 0xf9, 0x6b, 0xfe, 0x3c, 0xcf, 0x37, + 0x71, 0x7e, 0xd5, 0x9f, 0xe7, 0x19, 0x27, 0xce, 0xaf, 0xf9, 0xf3, 0x3c, 0xe7, 0xc4, 0xf9, 0xeb, + 0xfe, 0x3c, 0xcf, 0x3a, 0x71, 0xfe, 0x86, 0x3f, 0xcf, 0xf3, 0x4e, 0x9c, 0xbf, 0xe9, 0xcf, 0xf3, + 0xcc, 0x13, 0xe7, 0x6f, 0xe9, 0x17, 0xe4, 0xdc, 0xe3, 0x02, 0xbe, 0x6b, 0x2f, 0xc8, 0xd9, 0x27, + 0x49, 0x5c, 0x0d, 0x24, 0x78, 0xfe, 0x49, 0x12, 0x2b, 0x81, 0x04, 0xcf, 0x40, 0x49, 0xe2, 0x5a, + 0xee, 0x73, 0xc4, 0x7d, 0xb6, 0xec, 0xbe, 0x59, 0xc9, 0x7d, 0x89, 0x90, 0xeb, 0x66, 0x25, 0xd7, + 0x25, 0x42, 0x6e, 0x9b, 0x95, 0xdc, 0x96, 0x08, 0xb9, 0x6c, 0x56, 0x72, 0x59, 0x22, 0xe4, 0xae, + 0x59, 0xc9, 0x5d, 0x89, 0x90, 0xab, 0x66, 0x25, 0x57, 0x25, 0x42, 0x6e, 0x9a, 0x95, 0xdc, 0x94, + 0x08, 0xb9, 0x68, 0x56, 0x72, 0x51, 0x22, 0xe4, 0x9e, 0x59, 0xc9, 0x3d, 0x89, 0x90, 0x6b, 0xce, + 0xcb, 0xae, 0x49, 0x84, 0xdd, 0x72, 0x5e, 0x76, 0x4b, 0x22, 0xec, 0x92, 0xf3, 0xb2, 0x4b, 0x12, + 0x61, 0x77, 0x9c, 0x97, 0xdd, 0x91, 0x08, 0xbb, 0xe2, 0xcf, 0x12, 0xbc, 0x23, 0xdc, 0xf3, 0xda, + 0x9d, 0x9a, 0xf7, 0x81, 0x3a, 0xc2, 0x65, 0xa1, 0x7d, 0x48, 0xaf, 0xe8, 0x4b, 0xa4, 0x61, 0x0d, + 0x77, 0x9c, 0xd2, 0x0a, 0xb6, 0x2c, 0x34, 0x16, 0x21, 0x84, 0x1d, 0x8d, 0x58, 0xfd, 0x40, 0xbd, + 0xe1, 0xb2, 0xd0, 0x66, 0xc4, 0xeb, 0x77, 0xf3, 0x23, 0xef, 0xd8, 0xde, 0x4e, 0xf0, 0x8e, 0x8d, + 0x99, 0xff, 0xac, 0x1d, 0xdb, 0x62, 0xbc, 0xc9, 0x7d, 0x63, 0x2f, 0xc6, 0x1b, 0xbb, 0x6b, 0xd5, + 0x19, 0xb4, 0x83, 0x5b, 0x8c, 0x37, 0xad, 0x6f, 0xd4, 0x0f, 0xb7, 0xdf, 0x62, 0x11, 0x6c, 0xa0, + 0x56, 0x44, 0x04, 0x9f, 0xb5, 0xdf, 0x5a, 0x16, 0x4a, 0xc9, 0x59, 0x23, 0x58, 0x3d, 0x73, 0x04, + 0x9f, 0xb5, 0xf3, 0x5a, 0x16, 0xca, 0xcb, 0x99, 0x23, 0xf8, 0x23, 0xe8, 0x87, 0x58, 0x04, 0x07, + 0xe6, 0x3f, 0x6b, 0x3f, 0xb4, 0x18, 0x6f, 0xf2, 0xc8, 0x08, 0x56, 0xcf, 0x10, 0xc1, 0x83, 0xf4, + 0x47, 0x8b, 0xf1, 0xa6, 0x8d, 0x8e, 0xe0, 0x0f, 0xdc, 0xcd, 0x7c, 0x45, 0x81, 0xa9, 0x8a, 0x55, + 0x2f, 0x37, 0x0f, 0x51, 0xbd, 0x8e, 0xea, 0xcc, 0x8e, 0xcb, 0x42, 0x25, 0xe8, 0xe1, 0xea, 0x77, + 0xde, 0x9d, 0x0f, 0x2c, 0xbc, 0x06, 0x29, 0x6a, 0xd3, 0xe5, 0xe5, 0xec, 0x7d, 0x25, 0xa6, 0xc2, + 0xf9, 0xa2, 0xfa, 0x45, 0x0e, 0xbb, 0xba, 0x9c, 0xfd, 0x2f, 0x4a, 0xa8, 0xca, 0xf9, 0xc3, 0xb9, + 0x5f, 0x21, 0x1a, 0xda, 0x1f, 0x58, 0xc3, 0x2b, 0x03, 0x69, 0x18, 0xd2, 0xed, 0xf1, 0x2e, 0xdd, + 0x42, 0x5a, 0x75, 0x60, 0xb2, 0x62, 0xd5, 0x2b, 0xe4, 0x2b, 0xbd, 0x83, 0xa8, 0x44, 0x65, 0xa4, + 0x7a, 0xb0, 0x2c, 0x84, 0x65, 0x18, 0xe1, 0x87, 0xb4, 0x58, 0x23, 0x72, 0x16, 0x3e, 0xad, 0x2d, + 0x9c, 0x76, 0xb1, 0xd7, 0x69, 0x83, 0xca, 0xee, 0x9f, 0x70, 0xb1, 0xd7, 0x09, 0x83, 0x1c, 0xf2, + 0x4f, 0xf5, 0x06, 0x5f, 0x9c, 0xe9, 0x5b, 0x38, 0xfa, 0x79, 0x48, 0x6c, 0xd2, 0x37, 0x84, 0x33, + 0xc5, 0x0c, 0x56, 0xea, 0x3b, 0xef, 0xce, 0x27, 0x0f, 0x3a, 0x56, 0xdd, 0x48, 0x6c, 0xd6, 0xf5, + 0xbb, 0x30, 0xfc, 0x29, 0xf6, 0xc5, 0x38, 0x2c, 0xb0, 0xca, 0x04, 0x3e, 0x16, 0xb3, 0xc5, 0x44, + 0xa8, 0x97, 0x0e, 0x2c, 0xdb, 0xbb, 0xba, 0x72, 0xd3, 0xa0, 0x14, 0xb9, 0xbf, 0x08, 0x40, 0xcf, + 0xb9, 0x6e, 0xba, 0x27, 0x7a, 0x85, 0x33, 0xd3, 0x53, 0xdf, 0xfc, 0xce, 0xbb, 0xf3, 0xab, 0x83, + 0xb0, 0x3e, 0x5b, 0x37, 0xdd, 0x93, 0x67, 0xbd, 0xd3, 0x16, 0x5a, 0x2a, 0x9e, 0x7a, 0xc8, 0xe5, + 0xec, 0x2d, 0xbe, 0xea, 0xb1, 0xeb, 0xca, 0x86, 0xae, 0x2b, 0x25, 0x5c, 0xd3, 0x86, 0x78, 0x4d, + 0xcb, 0x0f, 0x7b, 0x3d, 0x6f, 0xf0, 0x45, 0x42, 0xb2, 0xa4, 0x1a, 0x67, 0x49, 0xf5, 0x83, 0x5a, + 0xb2, 0xc5, 0xeb, 0xa3, 0x74, 0xad, 0x6a, 0xbf, 0x6b, 0x55, 0x3f, 0xc8, 0xb5, 0xfe, 0x09, 0xcd, + 0x56, 0x3f, 0x9f, 0x0e, 0x6c, 0xfa, 0x76, 0xe2, 0x9f, 0xaf, 0xbd, 0xa0, 0x0f, 0xb5, 0x0b, 0xc8, + 0x27, 0xef, 0xbf, 0x35, 0xaf, 0xe4, 0xbe, 0x92, 0xe0, 0x57, 0x4e, 0x13, 0xe9, 0xe1, 0xae, 0xfc, + 0xcf, 0x4b, 0x4f, 0xf5, 0x51, 0x58, 0xe8, 0xcb, 0x0a, 0xcc, 0x74, 0x55, 0x72, 0x6a, 0xa6, 0x0f, + 0xb7, 0x9c, 0xdb, 0x67, 0x2d, 0xe7, 0x4c, 0xc1, 0xdf, 0x51, 0xe0, 0x9c, 0x54, 0x5e, 0xa9, 0x7a, + 0x57, 0x24, 0xf5, 0x1e, 0xed, 0x3e, 0x13, 0x11, 0x0c, 0x69, 0x17, 0x76, 0xaf, 0x04, 0x08, 0x31, + 0xfb, 0x7e, 0x5f, 0x95, 0xfc, 0x7e, 0xde, 0x07, 0x44, 0x98, 0x8b, 0x47, 0x00, 0x53, 0xdb, 0x81, + 0xe4, 0x7e, 0x1b, 0x21, 0x7d, 0x0e, 0x12, 0x3b, 0x6d, 0xa6, 0xe1, 0x04, 0xc5, 0xef, 0xb4, 0x8b, + 0x6d, 0xd3, 0xae, 0x9d, 0x18, 0x89, 0x9d, 0xb6, 0x7e, 0x11, 0xd4, 0x02, 0xfb, 0xe9, 0x81, 0xf4, + 0xca, 0x24, 0x15, 0x28, 0xd8, 0x75, 0x26, 0x81, 0xe7, 0xf4, 0x39, 0x48, 0x6e, 0x21, 0xf3, 0x88, + 0x29, 0x01, 0x54, 0x06, 0x8f, 0x18, 0x64, 0x9c, 0x9d, 0xf0, 0x65, 0x48, 0x71, 0x62, 0xfd, 0x12, + 0x46, 0x1c, 0x79, 0xec, 0xb4, 0x0c, 0x81, 0xd5, 0x61, 0x2b, 0x17, 0x99, 0xd5, 0x2f, 0xc3, 0xb0, + 0x61, 0x1d, 0x9f, 0x78, 0xec, 0xe4, 0xdd, 0x62, 0x74, 0x3a, 0x77, 0x0f, 0xc6, 0x7c, 0x8d, 0x3e, + 0x64, 0xea, 0x75, 0x7a, 0x69, 0xfa, 0x6c, 0x78, 0x3d, 0xe1, 0xfb, 0x96, 0x74, 0x48, 0xbf, 0x00, + 0xa9, 0x3d, 0xaf, 0x1d, 0x14, 0x7d, 0xde, 0x91, 0xfa, 0xa3, 0xb9, 0x5f, 0x54, 0x20, 0xb5, 0x8e, + 0x50, 0x8b, 0x18, 0xfc, 0x29, 0x48, 0xae, 0x3b, 0xaf, 0xdb, 0x4c, 0xc1, 0x29, 0x66, 0x51, 0x3c, + 0xcd, 0x6c, 0x4a, 0xa6, 0xf5, 0xa7, 0xc2, 0x76, 0x9f, 0xf6, 0xed, 0x1e, 0x92, 0x23, 0xb6, 0xcf, + 0x09, 0xb6, 0x67, 0x0e, 0xc4, 0x42, 0x5d, 0xf6, 0xbf, 0x01, 0xe9, 0xd0, 0x59, 0xf4, 0x05, 0xa6, + 0x46, 0x42, 0x06, 0x86, 0x6d, 0x85, 0x25, 0x72, 0x08, 0xc6, 0x85, 0x13, 0x63, 0x68, 0xc8, 0xc4, + 0x3d, 0xa0, 0xc4, 0xcc, 0x8b, 0xa2, 0x99, 0xa3, 0x45, 0x99, 0xa9, 0x97, 0xa9, 0x8d, 0x88, 0xb9, + 0x2f, 0xd1, 0xe0, 0xec, 0xed, 0x44, 0xfc, 0x39, 0x37, 0x0c, 0x6a, 0xc5, 0x6a, 0xe4, 0x9e, 0x03, + 0xa0, 0x29, 0x5f, 0xb6, 0x3b, 0x4d, 0x29, 0xeb, 0x26, 0xb8, 0x81, 0xf7, 0x4f, 0xd0, 0x3e, 0x72, + 0x89, 0x88, 0xd8, 0x4f, 0xe1, 0x02, 0x03, 0x34, 0xc5, 0x08, 0xfe, 0x99, 0x58, 0x7c, 0x64, 0x27, + 0x86, 0x45, 0xb3, 0x54, 0xf4, 0x1e, 0xf2, 0x0a, 0xb6, 0xe3, 0x9d, 0xa0, 0xb6, 0x84, 0x58, 0xd1, + 0xaf, 0x09, 0x09, 0x3b, 0xb1, 0xf2, 0xb8, 0x8f, 0xe8, 0x09, 0xba, 0x96, 0xfb, 0x06, 0x51, 0x10, + 0xb7, 0x02, 0x5d, 0x17, 0xa8, 0x0e, 0x70, 0x81, 0xfa, 0x75, 0xa1, 0x7f, 0xeb, 0xa3, 0xa6, 0x74, + 0x6b, 0x79, 0x4b, 0xb8, 0xcf, 0xe9, 0xaf, 0xac, 0x78, 0x8f, 0xc9, 0x6d, 0xca, 0x55, 0x7e, 0x26, + 0x56, 0xe5, 0x1e, 0xdd, 0xed, 0x59, 0x6d, 0xaa, 0x0e, 0x6a, 0xd3, 0xdf, 0xf3, 0x3b, 0x0e, 0xfa, + 0x23, 0x0e, 0xe4, 0x37, 0x43, 0xf4, 0x8f, 0xc5, 0xfa, 0x3e, 0xaf, 0x94, 0x7c, 0x55, 0x57, 0x07, + 0x75, 0x7f, 0x3e, 0x51, 0x2c, 0xfa, 0xea, 0xde, 0x38, 0x43, 0x08, 0xe4, 0x13, 0xa5, 0x92, 0x5f, + 0xb6, 0x53, 0x9f, 0x7b, 0x6b, 0x5e, 0xf9, 0xfa, 0x5b, 0xf3, 0x43, 0xb9, 0xdf, 0x50, 0x60, 0x8a, + 0x49, 0x86, 0x02, 0xf7, 0x59, 0x49, 0xf9, 0x47, 0x78, 0xcd, 0x88, 0xb2, 0xc0, 0x4f, 0x2c, 0x78, + 0xbf, 0xad, 0x40, 0xb6, 0x4b, 0x57, 0x6e, 0xef, 0xe5, 0x81, 0x54, 0xce, 0x2b, 0xe5, 0x9f, 0xbe, + 0xcd, 0xef, 0xc1, 0xf0, 0xbe, 0xd5, 0x44, 0x6d, 0xbc, 0x12, 0xe0, 0x0f, 0x54, 0x65, 0xfe, 0x30, + 0x87, 0x0e, 0xf1, 0x39, 0xaa, 0x9c, 0x30, 0xb7, 0xa2, 0x67, 0x21, 0xb9, 0x6e, 0x7a, 0x26, 0xd1, + 0x20, 0xe3, 0xd7, 0x57, 0xd3, 0x33, 0x73, 0xd7, 0x20, 0xb3, 0x7d, 0x4a, 0x5e, 0xa1, 0xa9, 0x93, + 0xd7, 0x43, 0xc4, 0xee, 0x8f, 0xf7, 0xab, 0x57, 0x17, 0x87, 0x53, 0x75, 0xed, 0xbe, 0x92, 0x4f, + 0x12, 0x7d, 0x5e, 0x83, 0x89, 0x1d, 0xac, 0x36, 0xc1, 0x11, 0xd8, 0x05, 0x50, 0xb6, 0xc5, 0x46, + 0x28, 0xcc, 0x6a, 0x28, 0xdb, 0x52, 0xfb, 0xa8, 0xfa, 0xe6, 0x91, 0xda, 0x36, 0xd5, 0x6f, 0xdb, + 0x16, 0x93, 0xa9, 0x09, 0x6d, 0x6a, 0x31, 0x99, 0x02, 0x6d, 0x9c, 0x9d, 0xf7, 0x3f, 0xa9, 0xa0, + 0xd1, 0x56, 0x67, 0x1d, 0x1d, 0x59, 0xb6, 0xe5, 0x75, 0xf7, 0xab, 0xbe, 0xc6, 0xfa, 0x0b, 0x30, + 0x86, 0x4d, 0xba, 0xc1, 0x7e, 0x7a, 0x0b, 0x9b, 0xfe, 0x22, 0x6b, 0x51, 0x24, 0x0a, 0x36, 0x40, + 0x42, 0x27, 0xc0, 0xe8, 0x1b, 0xa0, 0x56, 0x2a, 0xdb, 0x6c, 0x71, 0x5b, 0xed, 0x0b, 0x65, 0x6f, + 0xe0, 0xb0, 0x23, 0x36, 0xe6, 0x1e, 0x1b, 0x98, 0x40, 0x5f, 0x85, 0x44, 0x65, 0x9b, 0x35, 0xbc, + 0x97, 0x06, 0xa1, 0x31, 0x12, 0x95, 0xed, 0xd9, 0x7f, 0xa7, 0xc0, 0xb8, 0x30, 0xaa, 0xe7, 0x20, + 0x43, 0x07, 0x42, 0x97, 0x3b, 0x62, 0x08, 0x63, 0x5c, 0xe7, 0xc4, 0x07, 0xd4, 0x79, 0xb6, 0x00, + 0x93, 0xd2, 0xb8, 0xbe, 0x04, 0x7a, 0x78, 0x88, 0x29, 0x41, 0x7f, 0xb6, 0x28, 0x62, 0x26, 0xf7, + 0x04, 0x40, 0x60, 0x57, 0xff, 0xd7, 0x76, 0x2a, 0xe5, 0xbd, 0xfd, 0xf2, 0xba, 0xa6, 0xe4, 0xbe, + 0xa5, 0x40, 0x9a, 0xb5, 0xad, 0x35, 0xa7, 0x85, 0xf4, 0x22, 0x28, 0x05, 0x16, 0x41, 0x0f, 0xa7, + 0xb7, 0x52, 0xd0, 0xaf, 0x80, 0x52, 0x1c, 0xdc, 0xd5, 0x4a, 0x51, 0x5f, 0x01, 0xa5, 0xc4, 0x1c, + 0x3c, 0x98, 0x67, 0x94, 0x52, 0xee, 0x8f, 0x54, 0x98, 0x0e, 0xb7, 0xd1, 0xbc, 0x9e, 0x5c, 0x14, + 0xef, 0x9b, 0xf2, 0x63, 0x57, 0x57, 0xae, 0xad, 0x2e, 0xe1, 0x7f, 0xfc, 0x90, 0xbc, 0x28, 0xde, + 0x42, 0x75, 0x8b, 0x74, 0xbd, 0x26, 0x92, 0x4f, 0x86, 0x66, 0xbb, 0x5e, 0x13, 0x11, 0x66, 0xbb, + 0x5e, 0x13, 0x11, 0x66, 0xbb, 0x5e, 0x13, 0x11, 0x66, 0xbb, 0x1e, 0x05, 0x08, 0xb3, 0x5d, 0xaf, + 0x89, 0x08, 0xb3, 0x5d, 0xaf, 0x89, 0x08, 0xb3, 0xdd, 0xaf, 0x89, 0xb0, 0xe9, 0x9e, 0xaf, 0x89, + 0x88, 0xf3, 0xdd, 0xaf, 0x89, 0x88, 0xf3, 0xdd, 0xaf, 0x89, 0xe4, 0x93, 0x5e, 0xbb, 0x83, 0x7a, + 0x3f, 0x74, 0x10, 0xf1, 0xfd, 0xee, 0x01, 0x83, 0x02, 0xbc, 0x03, 0x93, 0x74, 0x3f, 0xa2, 0xe4, + 0xd8, 0x9e, 0x69, 0xd9, 0xa8, 0xad, 0x7f, 0x1c, 0x32, 0x74, 0x88, 0xde, 0xe5, 0x44, 0xdd, 0x05, + 0xd2, 0x79, 0x56, 0x6e, 0x05, 0xe9, 0xdc, 0x9f, 0x25, 0x61, 0x86, 0x0e, 0x54, 0xcc, 0x26, 0x12, + 0x5e, 0x32, 0xba, 0x2c, 0x3d, 0x52, 0x9a, 0xc0, 0xf0, 0x07, 0xef, 0xce, 0xd3, 0xd1, 0x82, 0x1f, + 0x4c, 0x97, 0xa5, 0x87, 0x4b, 0xa2, 0x5c, 0xb0, 0xfe, 0x5c, 0x96, 0x5e, 0x3c, 0x12, 0xe5, 0xfc, + 0xe5, 0xc6, 0x97, 0xe3, 0xaf, 0x20, 0x89, 0x72, 0xeb, 0x7e, 0x94, 0x5d, 0x96, 0x5e, 0x46, 0x12, + 0xe5, 0xca, 0x7e, 0xbc, 0x5d, 0x96, 0x1e, 0x3d, 0x89, 0x72, 0x1b, 0x7e, 0xe4, 0x5d, 0x96, 0x1e, + 0x42, 0x89, 0x72, 0x77, 0xfc, 0x18, 0xbc, 0x2c, 0xbd, 0xaa, 0x24, 0xca, 0xbd, 0xe8, 0x47, 0xe3, + 0x65, 0xe9, 0xa5, 0x25, 0x51, 0x6e, 0xd3, 0x8f, 0xcb, 0x05, 0xf9, 0xf5, 0x25, 0x51, 0xf0, 0x6e, + 0x10, 0xa1, 0x0b, 0xf2, 0x8b, 0x4c, 0xa2, 0xe4, 0x27, 0x82, 0x58, 0x5d, 0x90, 0x5f, 0x69, 0x12, + 0x25, 0xb7, 0x82, 0xa8, 0x5d, 0x90, 0x1f, 0x95, 0x89, 0x92, 0xdb, 0x41, 0xfc, 0x2e, 0xc8, 0x0f, + 0xcd, 0x44, 0xc9, 0x4a, 0x10, 0xc9, 0x0b, 0xf2, 0xe3, 0x33, 0x51, 0x72, 0x27, 0xd8, 0x43, 0xff, + 0x7d, 0x29, 0xfc, 0x42, 0x2f, 0x41, 0xe5, 0xa4, 0xf0, 0x83, 0x88, 0xd0, 0xcb, 0x49, 0xa1, 0x07, + 0x11, 0x61, 0x97, 0x93, 0xc2, 0x0e, 0x22, 0x42, 0x2e, 0x27, 0x85, 0x1c, 0x44, 0x84, 0x5b, 0x4e, + 0x0a, 0x37, 0x88, 0x08, 0xb5, 0x9c, 0x14, 0x6a, 0x10, 0x11, 0x66, 0x39, 0x29, 0xcc, 0x20, 0x22, + 0xc4, 0x72, 0x52, 0x88, 0x41, 0x44, 0x78, 0xe5, 0xa4, 0xf0, 0x82, 0x88, 0xd0, 0xba, 0x24, 0x87, + 0x16, 0x44, 0x85, 0xd5, 0x25, 0x39, 0xac, 0x20, 0x2a, 0xa4, 0x9e, 0x94, 0x43, 0x6a, 0xec, 0xc1, + 0xbb, 0xf3, 0xc3, 0x78, 0x28, 0x14, 0x4d, 0x97, 0xe4, 0x68, 0x82, 0xa8, 0x48, 0xba, 0x24, 0x47, + 0x12, 0x44, 0x45, 0xd1, 0x25, 0x39, 0x8a, 0x20, 0x2a, 0x82, 0xde, 0x96, 0x23, 0x28, 0x78, 0xc5, + 0x27, 0x27, 0x3d, 0x51, 0x8c, 0x8b, 0x20, 0x75, 0x80, 0x08, 0x52, 0x07, 0x88, 0x20, 0x75, 0x80, + 0x08, 0x52, 0x07, 0x88, 0x20, 0x75, 0x80, 0x08, 0x52, 0x07, 0x88, 0x20, 0x75, 0x80, 0x08, 0x52, + 0x07, 0x89, 0x20, 0x75, 0xa0, 0x08, 0x52, 0x7b, 0x45, 0xd0, 0x25, 0xf9, 0x85, 0x07, 0x88, 0x2a, + 0x48, 0x97, 0xe4, 0x27, 0x9f, 0xf1, 0x21, 0xa4, 0x0e, 0x14, 0x42, 0x6a, 0xaf, 0x10, 0xfa, 0x7d, + 0x15, 0xa6, 0x85, 0x10, 0x62, 0x8f, 0x87, 0x3e, 0xac, 0x0a, 0x74, 0x7d, 0x80, 0xf7, 0x2b, 0xa2, + 0x62, 0xea, 0xfa, 0x00, 0xcf, 0xa8, 0xfb, 0xc5, 0x59, 0x77, 0x15, 0x2a, 0x0f, 0x50, 0x85, 0x36, + 0xfc, 0x18, 0xba, 0x3e, 0xc0, 0x7b, 0x17, 0xdd, 0xb1, 0x77, 0xb3, 0x5f, 0x11, 0x78, 0x71, 0xa0, + 0x22, 0xb0, 0x39, 0x50, 0x11, 0xb8, 0x1b, 0x78, 0xf0, 0x97, 0x12, 0x70, 0x2e, 0xf0, 0x20, 0xfd, + 0x44, 0x7e, 0x22, 0x29, 0x17, 0x7a, 0x42, 0xa5, 0xf3, 0xa7, 0x36, 0x21, 0x37, 0x26, 0x36, 0xeb, + 0xfa, 0xae, 0xf8, 0xac, 0x2a, 0x7f, 0xd6, 0xe7, 0x37, 0x21, 0x8f, 0xb3, 0xbd, 0xd0, 0x4b, 0xa0, + 0x6e, 0xd6, 0x5d, 0x52, 0x2d, 0xa2, 0x4e, 0x5b, 0x32, 0xf0, 0xb4, 0x6e, 0xc0, 0x08, 0x11, 0x77, + 0x89, 0x7b, 0x3f, 0xc8, 0x89, 0xd7, 0x0d, 0xc6, 0x94, 0x7b, 0x5b, 0x81, 0x0b, 0x42, 0x28, 0x7f, + 0x38, 0x4f, 0x0c, 0x6e, 0x0f, 0xf4, 0xc4, 0x40, 0x48, 0x90, 0xe0, 0xe9, 0xc1, 0xd3, 0xdd, 0x0f, + 0xaa, 0xc3, 0x59, 0x22, 0x3f, 0x49, 0xf8, 0xcb, 0x30, 0x11, 0x5c, 0x01, 0xb9, 0x65, 0x5b, 0x8b, + 0xdf, 0xcc, 0x8c, 0x4a, 0xcd, 0x35, 0x69, 0x13, 0xad, 0x2f, 0xcc, 0xcf, 0xd6, 0x5c, 0x1e, 0x26, + 0x2b, 0xe2, 0x77, 0x79, 0xe2, 0xf6, 0x22, 0x52, 0xb8, 0x35, 0xbf, 0xff, 0xd5, 0xf9, 0xa1, 0xdc, + 0xc7, 0x20, 0x13, 0xfe, 0xba, 0x8e, 0x04, 0x1c, 0xe3, 0xc0, 0x7c, 0xf2, 0x1d, 0x2c, 0xfd, 0x0f, + 0x15, 0x78, 0x24, 0x2c, 0xfe, 0x92, 0xe5, 0x9d, 0x6c, 0xda, 0xb8, 0xa7, 0x7f, 0x0e, 0x52, 0x88, + 0x39, 0x8e, 0xfd, 0xda, 0x09, 0xbb, 0x8d, 0x8c, 0x14, 0x5f, 0x22, 0xff, 0x1a, 0x3e, 0x44, 0xda, + 0xe2, 0xe0, 0xa7, 0x5d, 0x99, 0x7d, 0x0a, 0x86, 0x29, 0xbf, 0xa8, 0xd7, 0xb8, 0xa4, 0xd7, 0xaf, + 0x47, 0xe8, 0x45, 0xe2, 0x48, 0xbf, 0x2b, 0xe8, 0x15, 0xba, 0x5b, 0x8d, 0x14, 0x5f, 0xe2, 0xc1, + 0x57, 0x4c, 0xe1, 0xfe, 0x8f, 0x44, 0x54, 0xbc, 0x92, 0x0b, 0x90, 0x2a, 0xcb, 0x32, 0xd1, 0x7a, + 0xae, 0x43, 0xb2, 0xe2, 0xd4, 0xc9, 0xef, 0xb0, 0x90, 0xdf, 0xcb, 0x65, 0x46, 0x66, 0x3f, 0x9e, + 0x7b, 0x19, 0x52, 0xa5, 0x13, 0xab, 0x51, 0x6f, 0x23, 0x9b, 0x3d, 0xb2, 0x67, 0x3b, 0xe8, 0x18, + 0x63, 0xf8, 0x73, 0xb9, 0x12, 0x4c, 0x55, 0x1c, 0xbb, 0x78, 0xea, 0x85, 0xeb, 0xc6, 0x92, 0x94, + 0x22, 0xec, 0x91, 0x0f, 0xf9, 0x02, 0x08, 0x16, 0x28, 0x0e, 0x7f, 0xe7, 0xdd, 0x79, 0x65, 0xdf, + 0xdf, 0x3e, 0xdf, 0x86, 0x47, 0x59, 0xfa, 0x74, 0x51, 0xad, 0xc4, 0x51, 0x8d, 0xb1, 0xc7, 0xd4, + 0x21, 0xba, 0x4d, 0x4c, 0x67, 0x47, 0xd2, 0x3d, 0x9c, 0x66, 0xb8, 0x29, 0xea, 0xab, 0x99, 0x7a, + 0x26, 0xcd, 0x22, 0xe9, 0x96, 0xe2, 0xe8, 0x24, 0xcd, 0x9e, 0x84, 0x31, 0x7f, 0x2e, 0x14, 0x0d, + 0xe1, 0x4c, 0x59, 0x59, 0xcc, 0x41, 0x3a, 0x94, 0xb0, 0xfa, 0x30, 0x28, 0x05, 0x6d, 0x08, 0xff, + 0x57, 0xd4, 0x14, 0xfc, 0x5f, 0x49, 0x4b, 0x2c, 0x3e, 0x05, 0x93, 0xd2, 0xf6, 0x25, 0x9e, 0x59, + 0xd7, 0x00, 0xff, 0x57, 0xd6, 0xd2, 0xb3, 0xc9, 0xcf, 0xfd, 0x93, 0xb9, 0xa1, 0xc5, 0xdb, 0xa0, + 0x77, 0x6f, 0x74, 0xea, 0x23, 0x90, 0x28, 0x60, 0xca, 0x47, 0x21, 0x51, 0x2c, 0x6a, 0xca, 0xec, + 0xe4, 0xdf, 0xf8, 0xd2, 0x85, 0x74, 0x91, 0x7c, 0x17, 0xf9, 0x1e, 0xf2, 0x8a, 0x45, 0x06, 0x7e, + 0x1e, 0x1e, 0x89, 0xdc, 0x28, 0xc5, 0xf8, 0x52, 0x89, 0xe2, 0xd7, 0xd7, 0xbb, 0xf0, 0xeb, 0xeb, + 0x04, 0xaf, 0xe4, 0xf9, 0x03, 0xe7, 0x82, 0x1e, 0xb1, 0x2d, 0x99, 0xad, 0x87, 0x1e, 0x70, 0x17, + 0xf2, 0xcf, 0x33, 0xd9, 0x62, 0xa4, 0x2c, 0x8a, 0x79, 0x60, 0x5d, 0xcc, 0x97, 0x18, 0xbe, 0x14, + 0x89, 0x3f, 0x92, 0x9e, 0xaa, 0x8a, 0x2b, 0x04, 0x23, 0x29, 0xf9, 0x0a, 0xaf, 0x47, 0x92, 0x9c, + 0x84, 0xde, 0x75, 0x5f, 0xf7, 0x15, 0x2e, 0x47, 0xca, 0x5a, 0x31, 0xef, 0x7c, 0x95, 0xf3, 0x57, + 0xd8, 0x22, 0x5f, 0xb8, 0xaa, 0x3f, 0xc2, 0x73, 0x54, 0xa8, 0xc0, 0xcc, 0x40, 0x5c, 0x2a, 0x5f, + 0x62, 0x80, 0x62, 0x4f, 0x40, 0x6f, 0x2b, 0x71, 0x64, 0xfe, 0x45, 0x46, 0x52, 0xea, 0x49, 0x12, + 0x63, 0x2a, 0x0e, 0x2f, 0xee, 0xdf, 0x7f, 0x6f, 0x6e, 0xe8, 0x9d, 0xf7, 0xe6, 0x86, 0xfe, 0xdb, + 0x7b, 0x73, 0x43, 0xdf, 0x7d, 0x6f, 0x4e, 0xf9, 0xfe, 0x7b, 0x73, 0xca, 0x0f, 0xdf, 0x9b, 0x53, + 0xfe, 0xf4, 0xbd, 0x39, 0xe5, 0xcd, 0x07, 0x73, 0xca, 0xd7, 0x1f, 0xcc, 0x29, 0xdf, 0x78, 0x30, + 0xa7, 0xfc, 0xee, 0x83, 0x39, 0xe5, 0xed, 0x07, 0x73, 0xca, 0xfd, 0x07, 0x73, 0xca, 0x3b, 0x0f, + 0xe6, 0x94, 0xef, 0x3e, 0x98, 0x53, 0xbe, 0xff, 0x60, 0x6e, 0xe8, 0x87, 0x0f, 0xe6, 0x94, 0x3f, + 0x7d, 0x30, 0x37, 0xf4, 0xe6, 0xfb, 0x73, 0x43, 0x6f, 0xbd, 0x3f, 0x37, 0xf4, 0xf5, 0xf7, 0xe7, + 0x14, 0xf8, 0xc3, 0x55, 0xb8, 0xcc, 0xbe, 0x48, 0x46, 0xbf, 0xb7, 0xea, 0x7f, 0x6b, 0xf5, 0x8a, + 0x77, 0x82, 0x48, 0x63, 0x70, 0x8d, 0xff, 0xaa, 0x93, 0x3f, 0x70, 0xc6, 0xaf, 0x96, 0xcd, 0x3e, + 0xec, 0x17, 0xd9, 0x72, 0xff, 0x7e, 0x18, 0x46, 0xf9, 0x86, 0x70, 0xd4, 0xef, 0x42, 0xaf, 0x41, + 0xea, 0xc4, 0x6a, 0x98, 0x6d, 0xcb, 0x3b, 0x65, 0x3b, 0xa1, 0x8f, 0x2d, 0x05, 0x6a, 0xf3, 0xbd, + 0xd3, 0x17, 0x3b, 0x4d, 0xa7, 0xd3, 0x36, 0x7c, 0x51, 0xfd, 0x02, 0x64, 0x4e, 0x90, 0x75, 0x7c, + 0xe2, 0x55, 0x2d, 0xbb, 0x5a, 0x6b, 0x92, 0x8e, 0x79, 0xdc, 0x00, 0x3a, 0xb6, 0x69, 0x97, 0x9a, + 0xf8, 0x64, 0x75, 0xd3, 0x33, 0xc9, 0x9d, 0x7a, 0xc6, 0x20, 0x9f, 0xf5, 0x8b, 0x90, 0x69, 0x23, + 0xb7, 0xd3, 0xf0, 0xaa, 0x35, 0xa7, 0x63, 0x7b, 0xa4, 0xa7, 0x55, 0x8d, 0x34, 0x1d, 0x2b, 0xe1, + 0x21, 0xfd, 0x49, 0x18, 0xf7, 0xda, 0x1d, 0x54, 0x75, 0x6b, 0x8e, 0xe7, 0x36, 0x4d, 0x9b, 0xf4, + 0xb4, 0x29, 0x23, 0x83, 0x07, 0xf7, 0xd8, 0x18, 0xf9, 0xbb, 0x03, 0x35, 0xa7, 0x8d, 0xc8, 0x2d, + 0x75, 0xc2, 0xa0, 0x07, 0xba, 0x06, 0xea, 0xab, 0xe8, 0x94, 0xdc, 0xb4, 0x25, 0x0d, 0xfc, 0x51, + 0x7f, 0x06, 0x46, 0xe8, 0x9f, 0xa4, 0x20, 0x1d, 0x36, 0x79, 0x7e, 0xed, 0x5f, 0x1a, 0xdd, 0xa7, + 0x35, 0x98, 0x80, 0x7e, 0x0b, 0x46, 0x3d, 0xd4, 0x6e, 0x9b, 0x96, 0x4d, 0x6e, 0xa0, 0xd2, 0x2b, + 0xf3, 0x11, 0x66, 0xd8, 0xa7, 0x12, 0xe4, 0x27, 0x5e, 0x0d, 0x2e, 0xaf, 0xaf, 0x41, 0x86, 0xc8, + 0xad, 0x54, 0xe9, 0x9f, 0xed, 0x48, 0xf7, 0x8c, 0xe9, 0x34, 0x95, 0xe3, 0x8f, 0x0b, 0x38, 0x8c, + 0xfe, 0xbc, 0xdd, 0x38, 0x39, 0xed, 0x93, 0x11, 0xa7, 0x25, 0xe5, 0x77, 0x85, 0xb4, 0x8e, 0xf4, + 0xd4, 0x8c, 0x87, 0xfe, 0x00, 0xde, 0x36, 0x64, 0xc2, 0x7a, 0x71, 0x33, 0xd0, 0x16, 0x88, 0x98, + 0xe1, 0xe9, 0xe0, 0x27, 0xdd, 0x7b, 0x58, 0x81, 0xce, 0xe7, 0x13, 0x37, 0x95, 0xd9, 0x5d, 0xd0, + 0xe4, 0xf3, 0x45, 0x50, 0x5e, 0x16, 0x29, 0xb5, 0xf0, 0xc5, 0x92, 0xcd, 0xf2, 0x80, 0x31, 0xf7, + 0x02, 0x8c, 0xd0, 0xf8, 0xd1, 0xd3, 0x30, 0x1a, 0xfc, 0x72, 0x62, 0x0a, 0x92, 0xbb, 0x07, 0x95, + 0x3d, 0xfa, 0x13, 0xa8, 0x7b, 0x5b, 0x85, 0xdd, 0xbd, 0xfd, 0xcd, 0xd2, 0x27, 0xb4, 0x84, 0x3e, + 0x09, 0xe9, 0xe2, 0xe6, 0xd6, 0x56, 0xb5, 0x58, 0xd8, 0xdc, 0x2a, 0xdf, 0xd3, 0xd4, 0xdc, 0x1c, + 0x8c, 0x50, 0x3d, 0xc9, 0x4f, 0xb9, 0x75, 0x6c, 0xfb, 0x94, 0xb7, 0x10, 0xe4, 0x20, 0xf7, 0x4d, + 0x1d, 0x46, 0x0b, 0x8d, 0xc6, 0xb6, 0xd9, 0x72, 0xf5, 0x97, 0x60, 0x8a, 0xfe, 0xa8, 0xc4, 0xbe, + 0xb3, 0x4e, 0x7e, 0x71, 0x10, 0x17, 0x08, 0x85, 0xfd, 0x94, 0x7d, 0x70, 0xdd, 0x4c, 0x7c, 0xa9, + 0x4b, 0x96, 0x1a, 0xb8, 0x9b, 0x43, 0xdf, 0x07, 0x8d, 0x0f, 0x6e, 0x34, 0x1c, 0xd3, 0xc3, 0xbc, + 0x09, 0xf6, 0x83, 0x80, 0xbd, 0x79, 0xb9, 0x28, 0xa5, 0xed, 0x62, 0xd0, 0x3f, 0x0e, 0xa9, 0x4d, + 0xdb, 0xbb, 0xb6, 0x82, 0xd9, 0xf8, 0x9f, 0x59, 0xe9, 0x66, 0xe3, 0x22, 0x94, 0xc5, 0x47, 0x30, + 0xf4, 0xf5, 0x55, 0x8c, 0x4e, 0xf6, 0x43, 0x13, 0x91, 0x00, 0x4d, 0x0e, 0xf5, 0x17, 0x60, 0x0c, + 0xdf, 0xa1, 0xd0, 0x93, 0x0f, 0xf3, 0xf6, 0xb5, 0x0b, 0xee, 0xcb, 0x50, 0x7c, 0x80, 0xe1, 0x04, + 0xf4, 0xfc, 0x23, 0x7d, 0x09, 0x42, 0x0a, 0x04, 0x18, 0x4c, 0xb0, 0xe7, 0x6b, 0x30, 0xda, 0x93, + 0x60, 0x4f, 0xd2, 0x60, 0x2f, 0xac, 0xc1, 0x9e, 0xaf, 0x41, 0xaa, 0x2f, 0x41, 0x58, 0x03, 0xff, + 0x58, 0x2f, 0x02, 0x6c, 0x58, 0x6f, 0xa0, 0x3a, 0x55, 0x81, 0xfe, 0x11, 0x96, 0x5c, 0x04, 0x43, + 0x20, 0x44, 0x29, 0x42, 0x28, 0xbd, 0x0c, 0xe9, 0xbd, 0xa3, 0x80, 0x04, 0xba, 0xf2, 0xd8, 0x57, + 0xe3, 0x48, 0x62, 0x09, 0xe3, 0x7c, 0x55, 0xe8, 0xc5, 0xa4, 0xfb, 0xab, 0x12, 0xba, 0x9a, 0x10, + 0x2a, 0x50, 0x85, 0x92, 0x64, 0x62, 0x54, 0x09, 0xb1, 0x84, 0x71, 0xb8, 0x18, 0x16, 0x1d, 0x07, + 0x4b, 0xb2, 0xaa, 0x34, 0x1f, 0x41, 0xc1, 0x24, 0x58, 0x31, 0x64, 0x47, 0xc4, 0x23, 0x24, 0xc8, + 0x31, 0x78, 0xa2, 0xb7, 0x47, 0xb8, 0x0c, 0xf7, 0x08, 0x3f, 0x0e, 0xe7, 0x19, 0x79, 0xa9, 0x15, + 0xf3, 0x4c, 0xc6, 0xe6, 0x19, 0x17, 0x95, 0xf2, 0x8c, 0x0f, 0xeb, 0x9f, 0x84, 0x49, 0x3e, 0x86, + 0xcb, 0x13, 0x26, 0xd5, 0xd8, 0x9f, 0xa9, 0xea, 0x4d, 0xca, 0x24, 0x29, 0xa7, 0x8c, 0xd7, 0x2b, + 0x30, 0xc1, 0x87, 0xb6, 0x5d, 0x72, 0xb9, 0x53, 0xec, 0x4f, 0x40, 0xf4, 0x66, 0xa4, 0x82, 0x94, + 0x50, 0x42, 0xcf, 0xae, 0xc3, 0x4c, 0x74, 0x35, 0x0a, 0x97, 0xdf, 0x31, 0x5a, 0x7e, 0xcf, 0x85, + 0xcb, 0xaf, 0x12, 0x2e, 0xdf, 0x25, 0x78, 0x24, 0xb2, 0xf6, 0xc4, 0x91, 0x24, 0xc2, 0x24, 0xb7, + 0x61, 0x5c, 0x28, 0x39, 0x61, 0xf0, 0x70, 0x04, 0x78, 0xb8, 0x1b, 0x1c, 0x84, 0x56, 0xc4, 0xea, + 0x21, 0x80, 0xd5, 0x30, 0xf8, 0xe3, 0x30, 0x21, 0xd6, 0x9b, 0x30, 0x7a, 0x3c, 0x02, 0x3d, 0x1e, + 0x81, 0x8e, 0x3e, 0x77, 0x32, 0x02, 0x9d, 0x94, 0xd0, 0x7b, 0x3d, 0xcf, 0x3d, 0x15, 0x81, 0x9e, + 0x8a, 0x40, 0x47, 0x9f, 0x5b, 0x8f, 0x40, 0xeb, 0x61, 0xf4, 0x73, 0x30, 0x29, 0x95, 0x98, 0x30, + 0x7c, 0x34, 0x02, 0x3e, 0x1a, 0x86, 0x3f, 0x0f, 0x9a, 0x5c, 0x5c, 0xc2, 0xf8, 0xc9, 0x08, 0xfc, + 0x64, 0xd4, 0xe9, 0xa3, 0xb5, 0x1f, 0x89, 0x80, 0x8f, 0x44, 0x9e, 0x3e, 0x1a, 0xaf, 0x45, 0xe0, + 0xb5, 0x30, 0x3e, 0x0f, 0x99, 0x70, 0x35, 0x09, 0x63, 0x53, 0x11, 0xd8, 0x94, 0x6c, 0x77, 0xa1, + 0x98, 0xc4, 0x45, 0xfa, 0x58, 0x8f, 0x74, 0x11, 0x4a, 0x48, 0x1c, 0x49, 0x26, 0x4c, 0xf2, 0x29, + 0x38, 0x17, 0x55, 0x32, 0x22, 0x38, 0x16, 0xc2, 0x1c, 0x13, 0xb8, 0x47, 0x0c, 0x9a, 0x3d, 0xb3, + 0x25, 0x35, 0x4e, 0xb3, 0x9f, 0x86, 0xe9, 0x88, 0xc2, 0x11, 0x41, 0xbb, 0x24, 0x76, 0x63, 0xd9, + 0x10, 0x2d, 0x29, 0x02, 0x96, 0x7d, 0xbc, 0xeb, 0x58, 0xb6, 0x17, 0xee, 0xca, 0xbe, 0x35, 0x0d, + 0x13, 0xac, 0x3c, 0xed, 0xb4, 0xeb, 0xa8, 0x8d, 0xea, 0xfa, 0x5f, 0xea, 0xdd, 0x3b, 0x2d, 0x77, + 0x17, 0x35, 0x86, 0x3a, 0x43, 0x0b, 0xf5, 0xe9, 0x9e, 0x2d, 0xd4, 0x95, 0x78, 0xfa, 0xb8, 0x4e, + 0xaa, 0xd4, 0xd5, 0x49, 0x3d, 0xdd, 0x9b, 0xb4, 0x57, 0x43, 0x55, 0xea, 0x6a, 0xa8, 0xfa, 0x93, + 0x44, 0xf6, 0x55, 0x1b, 0xdd, 0x7d, 0xd5, 0x42, 0x6f, 0x96, 0xde, 0xed, 0xd5, 0x46, 0x77, 0x7b, + 0x15, 0xc3, 0x13, 0xdd, 0x65, 0x6d, 0x74, 0x77, 0x59, 0x7d, 0x78, 0x7a, 0x37, 0x5b, 0x1b, 0xdd, + 0xcd, 0x56, 0x0c, 0x4f, 0x74, 0xcf, 0xb5, 0x19, 0xd1, 0x73, 0x3d, 0xd3, 0x9b, 0xa8, 0x5f, 0xeb, + 0xb5, 0x15, 0xd5, 0x7a, 0x2d, 0xf6, 0x51, 0xaa, 0x6f, 0x07, 0xb6, 0x19, 0xd1, 0x81, 0xc5, 0x29, + 0xd6, 0xa3, 0x11, 0xdb, 0x8a, 0x6a, 0xc4, 0x62, 0x15, 0xeb, 0xd5, 0x8f, 0xfd, 0x05, 0xb9, 0x1f, + 0xbb, 0xdc, 0x9b, 0x29, 0xba, 0x2d, 0xdb, 0xe8, 0x6e, 0xcb, 0x16, 0xe2, 0x72, 0x2e, 0xaa, 0x3b, + 0xfb, 0x74, 0xcf, 0xee, 0x6c, 0x80, 0x14, 0x8e, 0x6b, 0xd2, 0x5e, 0xee, 0xd5, 0xa4, 0x2d, 0xc5, + 0x73, 0xf7, 0xef, 0xd5, 0x0e, 0x7a, 0xf4, 0x6a, 0xcf, 0xc6, 0x13, 0xff, 0xac, 0x65, 0xfb, 0x59, + 0xcb, 0xf6, 0xb3, 0x96, 0xed, 0x67, 0x2d, 0xdb, 0x4f, 0xbf, 0x65, 0xcb, 0x27, 0x3f, 0xff, 0xd5, + 0x79, 0x25, 0xf7, 0x5f, 0x55, 0xff, 0xaf, 0x67, 0xbd, 0x64, 0x79, 0x27, 0xb8, 0xbc, 0x6d, 0x43, + 0x86, 0xfc, 0xdd, 0x8b, 0xa6, 0xd9, 0x6a, 0x59, 0xf6, 0x31, 0xeb, 0xd9, 0x16, 0xbb, 0xb7, 0x12, + 0x19, 0x80, 0xfc, 0xe5, 0x90, 0x6d, 0x2a, 0xcc, 0x96, 0x1b, 0x3b, 0x18, 0xd1, 0xef, 0x42, 0xba, + 0xe9, 0x1e, 0xfb, 0x6c, 0x89, 0xae, 0x85, 0x50, 0x62, 0xa3, 0x57, 0x1a, 0x90, 0x41, 0xd3, 0x1f, + 0xc0, 0xaa, 0x1d, 0x9e, 0x7a, 0x81, 0x6a, 0x6a, 0x9c, 0x6a, 0xd8, 0xa7, 0xa2, 0x6a, 0x87, 0xc1, + 0x08, 0x0e, 0x5b, 0x59, 0xf7, 0xb8, 0x4a, 0x27, 0x04, 0xcf, 0x4b, 0x30, 0x29, 0x69, 0x1b, 0x91, + 0xf3, 0x0f, 0xe1, 0x1b, 0xac, 0x98, 0xac, 0x79, 0x5c, 0x4e, 0x84, 0x03, 0x32, 0xf7, 0x04, 0x8c, + 0x0b, 0xdc, 0x7a, 0x06, 0x94, 0x23, 0xf6, 0x8d, 0x4a, 0xe5, 0x28, 0xf7, 0x15, 0x05, 0xd2, 0xec, + 0x75, 0x82, 0x5d, 0xd3, 0x6a, 0xeb, 0x2f, 0x42, 0xb2, 0xc1, 0xbf, 0xd5, 0xf4, 0xb0, 0xdf, 0xa0, + 0x25, 0x0c, 0xfa, 0x06, 0x0c, 0xb7, 0xfd, 0x6f, 0x3d, 0x3d, 0xd4, 0xd7, 0x62, 0x09, 0x3c, 0x77, + 0x5f, 0x81, 0x29, 0xf6, 0xb6, 0xab, 0xcb, 0xde, 0x81, 0x36, 0x5b, 0xb3, 0xdf, 0x54, 0x60, 0xcc, + 0x3f, 0xd2, 0x0f, 0x61, 0xc2, 0x3f, 0xa0, 0xef, 0xd9, 0xd3, 0x48, 0xcd, 0x87, 0x2c, 0xdc, 0xc5, + 0xb1, 0x14, 0xf1, 0x89, 0x3e, 0x90, 0xa2, 0x6b, 0xb2, 0x38, 0x38, 0x5b, 0x80, 0xe9, 0x08, 0xb1, + 0xb3, 0x2c, 0xc8, 0xb9, 0x8b, 0x30, 0x56, 0x71, 0x3c, 0xfa, 0xe3, 0x39, 0xfa, 0xb9, 0xd0, 0x53, + 0x85, 0x62, 0x42, 0x1b, 0x22, 0xe0, 0xc5, 0x8b, 0x30, 0xca, 0xb2, 0x5f, 0x1f, 0x81, 0xc4, 0x76, + 0x41, 0x1b, 0x22, 0xff, 0x17, 0x35, 0x85, 0xfc, 0x5f, 0xd2, 0x12, 0xc5, 0xad, 0x87, 0x78, 0xda, + 0x34, 0xf4, 0xce, 0x83, 0xb9, 0x21, 0xe9, 0x69, 0x93, 0xf2, 0xe6, 0xfb, 0x73, 0x43, 0x87, 0x23, + 0xd4, 0x3c, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x65, 0x95, 0x4a, 0x04, 0x31, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeunmarshaler/theproto3.pb.go b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeunmarshaler/theproto3.pb.go index fad7090ac..50f19ca93 100644 --- a/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeunmarshaler/theproto3.pb.go +++ b/vendor/github.com/gogo/protobuf/test/theproto3/combos/unsafeunmarshaler/theproto3.pb.go @@ -274,491 +274,498 @@ func (this *NotPacked) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func Theproto3Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 7743 bytes of a gzipped FileDescriptorSet + // 7852 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x70, 0x23, 0xd7, - 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0xf6, 0x8c, 0x28, 0x88, 0x1a, 0x91, 0x33, - 0xd0, 0x68, 0x44, 0xd1, 0x16, 0x87, 0xc3, 0xe1, 0xdc, 0x30, 0x96, 0x14, 0x00, 0x04, 0x47, 0x1c, - 0xf3, 0xe6, 0x26, 0x69, 0x49, 0xab, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x84, 0x04, 0x74, 0x23, 0xe8, - 0x86, 0x24, 0xfa, 0x21, 0xa5, 0x5d, 0x27, 0x1b, 0x6f, 0xb6, 0x72, 0xdd, 0xa4, 0xe2, 0xf5, 0xfa, - 0x22, 0x6f, 0x6a, 0x63, 0xef, 0xe6, 0xe6, 0x75, 0x36, 0xce, 0xd6, 0x56, 0x2a, 0xab, 0x3c, 0x38, - 0x99, 0xbc, 0xa4, 0xb4, 0xc9, 0x4b, 0xca, 0x95, 0x52, 0xad, 0xc6, 0xae, 0x8a, 0x93, 0x78, 0x13, - 0x6f, 0xd6, 0x55, 0xbb, 0x55, 0xde, 0x87, 0xad, 0x73, 0xeb, 0x3e, 0xe7, 0xa0, 0x81, 0x06, 0x47, - 0x92, 0xed, 0x07, 0xbd, 0xcc, 0xa0, 0xcf, 0xf9, 0xbf, 0xaf, 0xff, 0xfe, 0x6f, 0xe7, 0xef, 0xd3, - 0x0d, 0x10, 0x7e, 0x7e, 0x05, 0xce, 0x1f, 0xb9, 0xee, 0x51, 0x03, 0x5d, 0x6e, 0xb5, 0x5d, 0xdf, - 0x3d, 0xe8, 0x1c, 0x5e, 0xae, 0x21, 0xaf, 0xda, 0xae, 0xb7, 0x7c, 0xb7, 0xbd, 0x48, 0xc6, 0xcc, - 0x49, 0x2a, 0xb1, 0xc8, 0x25, 0x72, 0x9b, 0x30, 0xb5, 0x56, 0x6f, 0xa0, 0xd5, 0x40, 0x70, 0x17, - 0xf9, 0xe6, 0x4d, 0x48, 0x1e, 0xd6, 0x1b, 0x28, 0xab, 0x9d, 0xd7, 0xe7, 0xd3, 0xcb, 0x17, 0x17, - 0x15, 0xd0, 0xa2, 0x8c, 0xd8, 0xc1, 0xc3, 0x16, 0x41, 0xe4, 0xbe, 0x97, 0x84, 0x33, 0x11, 0xb3, - 0xa6, 0x09, 0x49, 0xc7, 0x6e, 0x62, 0x46, 0x6d, 0x7e, 0xcc, 0x22, 0x9f, 0xcd, 0x2c, 0x8c, 0xb6, - 0xec, 0xea, 0xab, 0xf6, 0x11, 0xca, 0x26, 0xc8, 0x30, 0x3f, 0x34, 0x67, 0x01, 0x6a, 0xa8, 0x85, - 0x9c, 0x1a, 0x72, 0xaa, 0x27, 0x59, 0xfd, 0xbc, 0x3e, 0x3f, 0x66, 0x09, 0x23, 0xe6, 0xc7, 0x60, - 0xaa, 0xd5, 0x39, 0x68, 0xd4, 0xab, 0x15, 0x41, 0x0c, 0xce, 0xeb, 0xf3, 0xc3, 0x96, 0x41, 0x27, - 0x56, 0x43, 0xe1, 0x27, 0x61, 0xf2, 0x75, 0x64, 0xbf, 0x2a, 0x8a, 0xa6, 0x89, 0xe8, 0x04, 0x1e, - 0x16, 0x04, 0x4b, 0x90, 0x69, 0x22, 0xcf, 0xb3, 0x8f, 0x50, 0xc5, 0x3f, 0x69, 0xa1, 0x6c, 0x92, - 0x5c, 0xfd, 0xf9, 0xae, 0xab, 0x57, 0xaf, 0x3c, 0xcd, 0x50, 0x7b, 0x27, 0x2d, 0x64, 0x16, 0x60, - 0x0c, 0x39, 0x9d, 0x26, 0x65, 0x18, 0xee, 0x61, 0xbf, 0xb2, 0xd3, 0x69, 0xaa, 0x2c, 0x29, 0x0c, - 0x63, 0x14, 0xa3, 0x1e, 0x6a, 0xbf, 0x56, 0xaf, 0xa2, 0xec, 0x08, 0x21, 0x78, 0xb2, 0x8b, 0x60, - 0x97, 0xce, 0xab, 0x1c, 0x1c, 0x67, 0x96, 0x60, 0x0c, 0xbd, 0xe1, 0x23, 0xc7, 0xab, 0xbb, 0x4e, - 0x76, 0x94, 0x90, 0x3c, 0x11, 0xe1, 0x45, 0xd4, 0xa8, 0xa9, 0x14, 0x21, 0xce, 0xbc, 0x0e, 0xa3, - 0x6e, 0xcb, 0xaf, 0xbb, 0x8e, 0x97, 0x4d, 0x9d, 0xd7, 0xe6, 0xd3, 0xcb, 0xe7, 0x22, 0x03, 0x61, - 0x9b, 0xca, 0x58, 0x5c, 0xd8, 0x5c, 0x07, 0xc3, 0x73, 0x3b, 0xed, 0x2a, 0xaa, 0x54, 0xdd, 0x1a, - 0xaa, 0xd4, 0x9d, 0x43, 0x37, 0x3b, 0x46, 0x08, 0xe6, 0xba, 0x2f, 0x84, 0x08, 0x96, 0xdc, 0x1a, - 0x5a, 0x77, 0x0e, 0x5d, 0x6b, 0xc2, 0x93, 0x8e, 0xcd, 0x69, 0x18, 0xf1, 0x4e, 0x1c, 0xdf, 0x7e, - 0x23, 0x9b, 0x21, 0x11, 0xc2, 0x8e, 0x72, 0x7f, 0x3a, 0x0c, 0x93, 0x83, 0x84, 0xd8, 0x6d, 0x18, - 0x3e, 0xc4, 0x57, 0x99, 0x4d, 0x9c, 0xc6, 0x06, 0x14, 0x23, 0x1b, 0x71, 0xe4, 0x01, 0x8d, 0x58, - 0x80, 0xb4, 0x83, 0x3c, 0x1f, 0xd5, 0x68, 0x44, 0xe8, 0x03, 0xc6, 0x14, 0x50, 0x50, 0x77, 0x48, - 0x25, 0x1f, 0x28, 0xa4, 0x5e, 0x84, 0xc9, 0x40, 0xa5, 0x4a, 0xdb, 0x76, 0x8e, 0x78, 0x6c, 0x5e, - 0x8e, 0xd3, 0x64, 0xb1, 0xcc, 0x71, 0x16, 0x86, 0x59, 0x13, 0x48, 0x3a, 0x36, 0x57, 0x01, 0x5c, - 0x07, 0xb9, 0x87, 0x95, 0x1a, 0xaa, 0x36, 0xb2, 0xa9, 0x1e, 0x56, 0xda, 0xc6, 0x22, 0x5d, 0x56, - 0x72, 0xe9, 0x68, 0xb5, 0x61, 0xde, 0x0a, 0x43, 0x6d, 0xb4, 0x47, 0xa4, 0x6c, 0xd2, 0x24, 0xeb, - 0x8a, 0xb6, 0x7d, 0x98, 0x68, 0x23, 0x1c, 0xf7, 0xa8, 0xc6, 0xae, 0x6c, 0x8c, 0x28, 0xb1, 0x18, - 0x7b, 0x65, 0x16, 0x83, 0xd1, 0x0b, 0x1b, 0x6f, 0x8b, 0x87, 0xe6, 0xe3, 0x10, 0x0c, 0x54, 0x48, - 0x58, 0x01, 0xa9, 0x42, 0x19, 0x3e, 0xb8, 0x65, 0x37, 0xd1, 0xcc, 0x4d, 0x98, 0x90, 0xcd, 0x63, - 0x9e, 0x85, 0x61, 0xcf, 0xb7, 0xdb, 0x3e, 0x89, 0xc2, 0x61, 0x8b, 0x1e, 0x98, 0x06, 0xe8, 0xc8, - 0xa9, 0x91, 0x2a, 0x37, 0x6c, 0xe1, 0x8f, 0x33, 0x37, 0x60, 0x5c, 0x3a, 0xfd, 0xa0, 0xc0, 0xdc, - 0xe7, 0x47, 0xe0, 0x6c, 0x54, 0xcc, 0x45, 0x86, 0xff, 0x34, 0x8c, 0x38, 0x9d, 0xe6, 0x01, 0x6a, - 0x67, 0x75, 0xc2, 0xc0, 0x8e, 0xcc, 0x02, 0x0c, 0x37, 0xec, 0x03, 0xd4, 0xc8, 0x26, 0xcf, 0x6b, - 0xf3, 0x13, 0xcb, 0x1f, 0x1b, 0x28, 0xaa, 0x17, 0x37, 0x30, 0xc4, 0xa2, 0x48, 0xf3, 0x59, 0x48, - 0xb2, 0x12, 0x87, 0x19, 0x16, 0x06, 0x63, 0xc0, 0xb1, 0x68, 0x11, 0x9c, 0xf9, 0x28, 0x8c, 0xe1, - 0xff, 0xa9, 0x6d, 0x47, 0x88, 0xce, 0x29, 0x3c, 0x80, 0xed, 0x6a, 0xce, 0x40, 0x8a, 0x84, 0x59, - 0x0d, 0xf1, 0xa5, 0x21, 0x38, 0xc6, 0x8e, 0xa9, 0xa1, 0x43, 0xbb, 0xd3, 0xf0, 0x2b, 0xaf, 0xd9, - 0x8d, 0x0e, 0x22, 0x01, 0x33, 0x66, 0x65, 0xd8, 0xe0, 0xa7, 0xf1, 0x98, 0x39, 0x07, 0x69, 0x1a, - 0x95, 0x75, 0xa7, 0x86, 0xde, 0x20, 0xd5, 0x67, 0xd8, 0xa2, 0x81, 0xba, 0x8e, 0x47, 0xf0, 0xe9, - 0x5f, 0xf1, 0x5c, 0x87, 0xbb, 0x96, 0x9c, 0x02, 0x0f, 0x90, 0xd3, 0xdf, 0x50, 0x0b, 0xdf, 0x63, - 0xd1, 0x97, 0xa7, 0xc6, 0x62, 0xee, 0x5b, 0x09, 0x48, 0x92, 0x7c, 0x9b, 0x84, 0xf4, 0xde, 0x4b, - 0x3b, 0xe5, 0xca, 0xea, 0xf6, 0x7e, 0x71, 0xa3, 0x6c, 0x68, 0xe6, 0x04, 0x00, 0x19, 0x58, 0xdb, - 0xd8, 0x2e, 0xec, 0x19, 0x89, 0xe0, 0x78, 0x7d, 0x6b, 0xef, 0xfa, 0x8a, 0xa1, 0x07, 0x80, 0x7d, - 0x3a, 0x90, 0x14, 0x05, 0xae, 0x2e, 0x1b, 0xc3, 0xa6, 0x01, 0x19, 0x4a, 0xb0, 0xfe, 0x62, 0x79, - 0xf5, 0xfa, 0x8a, 0x31, 0x22, 0x8f, 0x5c, 0x5d, 0x36, 0x46, 0xcd, 0x71, 0x18, 0x23, 0x23, 0xc5, - 0xed, 0xed, 0x0d, 0x23, 0x15, 0x70, 0xee, 0xee, 0x59, 0xeb, 0x5b, 0x77, 0x8c, 0xb1, 0x80, 0xf3, - 0x8e, 0xb5, 0xbd, 0xbf, 0x63, 0x40, 0xc0, 0xb0, 0x59, 0xde, 0xdd, 0x2d, 0xdc, 0x29, 0x1b, 0xe9, - 0x40, 0xa2, 0xf8, 0xd2, 0x5e, 0x79, 0xd7, 0xc8, 0x48, 0x6a, 0x5d, 0x5d, 0x36, 0xc6, 0x83, 0x53, - 0x94, 0xb7, 0xf6, 0x37, 0x8d, 0x09, 0x73, 0x0a, 0xc6, 0xe9, 0x29, 0xb8, 0x12, 0x93, 0xca, 0xd0, - 0xf5, 0x15, 0xc3, 0x08, 0x15, 0xa1, 0x2c, 0x53, 0xd2, 0xc0, 0xf5, 0x15, 0xc3, 0xcc, 0x95, 0x60, - 0x98, 0x44, 0x97, 0x69, 0xc2, 0xc4, 0x46, 0xa1, 0x58, 0xde, 0xa8, 0x6c, 0xef, 0xec, 0xad, 0x6f, - 0x6f, 0x15, 0x36, 0x0c, 0x2d, 0x1c, 0xb3, 0xca, 0x9f, 0xda, 0x5f, 0xb7, 0xca, 0xab, 0x46, 0x42, - 0x1c, 0xdb, 0x29, 0x17, 0xf6, 0xca, 0xab, 0x86, 0x9e, 0xab, 0xc2, 0xd9, 0xa8, 0x3a, 0x13, 0x99, - 0x19, 0x82, 0x8b, 0x13, 0x3d, 0x5c, 0x4c, 0xb8, 0xba, 0x5c, 0xfc, 0xeb, 0x1a, 0x9c, 0x89, 0xa8, - 0xb5, 0x91, 0x27, 0x79, 0x0e, 0x86, 0x69, 0x88, 0xd2, 0xd5, 0xe7, 0xa9, 0xc8, 0xa2, 0x4d, 0x02, - 0xb6, 0x6b, 0x05, 0x22, 0x38, 0x71, 0x05, 0xd6, 0x7b, 0xac, 0xc0, 0x98, 0xa2, 0x4b, 0xc9, 0xcf, - 0x6a, 0x90, 0xed, 0xc5, 0x1d, 0x53, 0x28, 0x12, 0x52, 0xa1, 0xb8, 0xad, 0x2a, 0x70, 0xa1, 0xf7, - 0x35, 0x74, 0x69, 0xf1, 0x35, 0x0d, 0xa6, 0xa3, 0x1b, 0x95, 0x48, 0x1d, 0x9e, 0x85, 0x91, 0x26, - 0xf2, 0x8f, 0x5d, 0xbe, 0x58, 0x5f, 0x8a, 0x58, 0x02, 0xf0, 0xb4, 0x6a, 0x2b, 0x86, 0x12, 0xd7, - 0x10, 0xbd, 0x57, 0xb7, 0x41, 0xb5, 0xe9, 0xd2, 0xf4, 0x97, 0x12, 0xf0, 0x50, 0x24, 0x79, 0xa4, - 0xa2, 0x8f, 0x01, 0xd4, 0x9d, 0x56, 0xc7, 0xa7, 0x0b, 0x32, 0xad, 0x4f, 0x63, 0x64, 0x84, 0xe4, - 0x3e, 0xae, 0x3d, 0x1d, 0x3f, 0x98, 0xd7, 0xc9, 0x3c, 0xd0, 0x21, 0x22, 0x70, 0x33, 0x54, 0x34, - 0x49, 0x14, 0x9d, 0xed, 0x71, 0xa5, 0x5d, 0x6b, 0xdd, 0x12, 0x18, 0xd5, 0x46, 0x1d, 0x39, 0x7e, - 0xc5, 0xf3, 0xdb, 0xc8, 0x6e, 0xd6, 0x9d, 0x23, 0x52, 0x80, 0x53, 0xf9, 0xe1, 0x43, 0xbb, 0xe1, - 0x21, 0x6b, 0x92, 0x4e, 0xef, 0xf2, 0x59, 0x8c, 0x20, 0xab, 0x4c, 0x5b, 0x40, 0x8c, 0x48, 0x08, - 0x3a, 0x1d, 0x20, 0x72, 0xbf, 0x3c, 0x0a, 0x69, 0xa1, 0xad, 0x33, 0x2f, 0x40, 0xe6, 0x15, 0xfb, - 0x35, 0xbb, 0xc2, 0x5b, 0x75, 0x6a, 0x89, 0x34, 0x1e, 0xdb, 0x61, 0xed, 0xfa, 0x12, 0x9c, 0x25, - 0x22, 0x6e, 0xc7, 0x47, 0xed, 0x4a, 0xb5, 0x61, 0x7b, 0x1e, 0x31, 0x5a, 0x8a, 0x88, 0x9a, 0x78, - 0x6e, 0x1b, 0x4f, 0x95, 0xf8, 0x8c, 0x79, 0x0d, 0xce, 0x10, 0x44, 0xb3, 0xd3, 0xf0, 0xeb, 0xad, - 0x06, 0xaa, 0xe0, 0x9b, 0x07, 0x8f, 0x14, 0xe2, 0x40, 0xb3, 0x29, 0x2c, 0xb1, 0xc9, 0x04, 0xb0, - 0x46, 0x9e, 0x79, 0x07, 0x1e, 0x23, 0xb0, 0x23, 0xe4, 0xa0, 0xb6, 0xed, 0xa3, 0x0a, 0xfa, 0xab, - 0x1d, 0xbb, 0xe1, 0x55, 0x6c, 0xa7, 0x56, 0x39, 0xb6, 0xbd, 0xe3, 0xec, 0x59, 0x91, 0xe0, 0x11, - 0x2c, 0x7b, 0x87, 0x89, 0x96, 0x89, 0x64, 0xc1, 0xa9, 0x3d, 0x6f, 0x7b, 0xc7, 0x66, 0x1e, 0xa6, - 0x09, 0x91, 0xe7, 0xb7, 0xeb, 0xce, 0x51, 0xa5, 0x7a, 0x8c, 0xaa, 0xaf, 0x56, 0x3a, 0xfe, 0xe1, - 0xcd, 0xec, 0xa3, 0x22, 0x03, 0x51, 0x72, 0x97, 0xc8, 0x94, 0xb0, 0xc8, 0xbe, 0x7f, 0x78, 0xd3, - 0xdc, 0x85, 0x0c, 0xf6, 0x47, 0xb3, 0xfe, 0x19, 0x54, 0x39, 0x74, 0xdb, 0x64, 0x71, 0x99, 0x88, - 0x48, 0x6e, 0xc1, 0x88, 0x8b, 0xdb, 0x0c, 0xb0, 0xe9, 0xd6, 0x50, 0x7e, 0x78, 0x77, 0xa7, 0x5c, - 0x5e, 0xb5, 0xd2, 0x9c, 0x65, 0xcd, 0x6d, 0xe3, 0x98, 0x3a, 0x72, 0x03, 0x1b, 0xa7, 0x69, 0x4c, - 0x1d, 0xb9, 0xdc, 0xc2, 0xd7, 0xe0, 0x4c, 0xb5, 0x4a, 0x2f, 0xbb, 0x5e, 0xad, 0xb0, 0x2e, 0xdf, - 0xcb, 0x1a, 0x92, 0xbd, 0xaa, 0xd5, 0x3b, 0x54, 0x80, 0x85, 0xb9, 0x67, 0xde, 0x82, 0x87, 0x42, - 0x7b, 0x89, 0xc0, 0xa9, 0xae, 0xab, 0x54, 0xa1, 0xd7, 0xe0, 0x4c, 0xeb, 0xa4, 0x1b, 0x68, 0x4a, - 0x67, 0x6c, 0x9d, 0xa8, 0xb0, 0x27, 0xc8, 0x9d, 0x5b, 0x1b, 0x55, 0x6d, 0x1f, 0xd5, 0xb2, 0x0f, - 0x8b, 0xd2, 0xc2, 0x84, 0x79, 0x19, 0x8c, 0x6a, 0xb5, 0x82, 0x1c, 0xfb, 0xa0, 0x81, 0x2a, 0x76, - 0x1b, 0x39, 0xb6, 0x97, 0x9d, 0x13, 0x85, 0x27, 0xaa, 0xd5, 0x32, 0x99, 0x2d, 0x90, 0x49, 0x73, - 0x01, 0xa6, 0xdc, 0x83, 0x57, 0xaa, 0x34, 0xb8, 0x2a, 0xad, 0x36, 0x3a, 0xac, 0xbf, 0x91, 0xbd, - 0x48, 0xcc, 0x34, 0x89, 0x27, 0x48, 0x68, 0xed, 0x90, 0x61, 0xf3, 0x29, 0x30, 0xaa, 0xde, 0xb1, - 0xdd, 0x6e, 0x91, 0xd5, 0xdd, 0x6b, 0xd9, 0x55, 0x94, 0x7d, 0x82, 0x8a, 0xd2, 0xf1, 0x2d, 0x3e, - 0x6c, 0xbe, 0x08, 0x67, 0x3b, 0x4e, 0xdd, 0xf1, 0x51, 0xbb, 0xd5, 0x46, 0xb8, 0x49, 0xa7, 0x99, - 0x96, 0xfd, 0x9f, 0xa3, 0x3d, 0xda, 0xec, 0x7d, 0x51, 0x9a, 0x7a, 0xd7, 0x3a, 0xd3, 0xe9, 0x1e, - 0xcc, 0xe5, 0x21, 0x23, 0x3a, 0xdd, 0x1c, 0x03, 0xea, 0x76, 0x43, 0xc3, 0x6b, 0x68, 0x69, 0x7b, - 0x15, 0xaf, 0x7e, 0x3f, 0x57, 0x36, 0x12, 0x78, 0x15, 0xde, 0x58, 0xdf, 0x2b, 0x57, 0xac, 0xfd, - 0xad, 0xbd, 0xf5, 0xcd, 0xb2, 0xa1, 0x2f, 0x8c, 0xa5, 0xbe, 0x3f, 0x6a, 0xbc, 0xf9, 0xe6, 0x9b, - 0x6f, 0x26, 0x72, 0xdf, 0x4e, 0xc0, 0x84, 0xdc, 0xf9, 0x9a, 0x9f, 0x80, 0x87, 0xf9, 0x6d, 0xaa, - 0x87, 0xfc, 0xca, 0xeb, 0xf5, 0x36, 0x89, 0xc3, 0xa6, 0x4d, 0x7b, 0xc7, 0xc0, 0x84, 0x67, 0x99, - 0xd4, 0x2e, 0xf2, 0x5f, 0xa8, 0xb7, 0x71, 0x94, 0x35, 0x6d, 0xdf, 0xdc, 0x80, 0x39, 0xc7, 0xad, - 0x78, 0xbe, 0xed, 0xd4, 0xec, 0x76, 0xad, 0x12, 0x6e, 0x10, 0x54, 0xec, 0x6a, 0x15, 0x79, 0x9e, - 0x4b, 0x97, 0x80, 0x80, 0xe5, 0x9c, 0xe3, 0xee, 0x32, 0xe1, 0xb0, 0x36, 0x16, 0x98, 0xa8, 0xe2, - 0x6e, 0xbd, 0x97, 0xbb, 0x1f, 0x85, 0xb1, 0xa6, 0xdd, 0xaa, 0x20, 0xc7, 0x6f, 0x9f, 0x90, 0x7e, - 0x2d, 0x65, 0xa5, 0x9a, 0x76, 0xab, 0x8c, 0x8f, 0x3f, 0x3c, 0x1f, 0x88, 0x76, 0xfc, 0x1f, 0x3a, - 0x64, 0xc4, 0x9e, 0x0d, 0xb7, 0xc0, 0x55, 0x52, 0x9f, 0x35, 0x92, 0xbe, 0x8f, 0xf7, 0xed, 0xf0, - 0x16, 0x4b, 0xb8, 0x70, 0xe7, 0x47, 0x68, 0x27, 0x65, 0x51, 0x24, 0x5e, 0x34, 0x71, 0xc2, 0x22, - 0xda, 0x9f, 0xa7, 0x2c, 0x76, 0x64, 0xde, 0x81, 0x91, 0x57, 0x3c, 0xc2, 0x3d, 0x42, 0xb8, 0x2f, - 0xf6, 0xe7, 0xbe, 0xbb, 0x4b, 0xc8, 0xc7, 0xee, 0xee, 0x56, 0xb6, 0xb6, 0xad, 0xcd, 0xc2, 0x86, - 0xc5, 0xe0, 0xe6, 0x23, 0x90, 0x6c, 0xd8, 0x9f, 0x39, 0x91, 0x4b, 0x3c, 0x19, 0x1a, 0xd4, 0xf0, - 0x8f, 0x40, 0xf2, 0x75, 0x64, 0xbf, 0x2a, 0x17, 0x56, 0x32, 0xf4, 0x21, 0x86, 0xfe, 0x65, 0x18, - 0x26, 0xf6, 0x32, 0x01, 0x98, 0xc5, 0x8c, 0x21, 0x33, 0x05, 0xc9, 0xd2, 0xb6, 0x85, 0xc3, 0xdf, - 0x80, 0x0c, 0x1d, 0xad, 0xec, 0xac, 0x97, 0x4b, 0x65, 0x23, 0x91, 0xbb, 0x06, 0x23, 0xd4, 0x08, - 0x38, 0x35, 0x02, 0x33, 0x18, 0x43, 0xec, 0x90, 0x71, 0x68, 0x7c, 0x76, 0x7f, 0xb3, 0x58, 0xb6, - 0x8c, 0x84, 0xe8, 0x5e, 0x0f, 0x32, 0x62, 0xbb, 0xf6, 0x93, 0x89, 0xa9, 0xdf, 0xd3, 0x20, 0x2d, - 0xb4, 0x5f, 0x78, 0xe1, 0xb7, 0x1b, 0x0d, 0xf7, 0xf5, 0x8a, 0xdd, 0xa8, 0xdb, 0x1e, 0x0b, 0x0a, - 0x20, 0x43, 0x05, 0x3c, 0x32, 0xa8, 0xd3, 0x7e, 0x22, 0xca, 0x7f, 0x59, 0x03, 0x43, 0x6d, 0xdd, - 0x14, 0x05, 0xb5, 0x9f, 0xaa, 0x82, 0x5f, 0xd4, 0x60, 0x42, 0xee, 0xd7, 0x14, 0xf5, 0x2e, 0xfc, - 0x54, 0xd5, 0xfb, 0x35, 0x0d, 0xc6, 0xa5, 0x2e, 0xed, 0x67, 0x4a, 0xbb, 0x2f, 0xe8, 0x70, 0x26, - 0x02, 0x67, 0x16, 0x58, 0x3b, 0x4b, 0x3b, 0xec, 0xa7, 0x07, 0x39, 0xd7, 0x22, 0x5e, 0x2d, 0x77, - 0xec, 0xb6, 0xcf, 0xba, 0xdf, 0xa7, 0xc0, 0xa8, 0xd7, 0x90, 0xe3, 0xd7, 0x0f, 0xeb, 0xa8, 0xcd, - 0x6e, 0xc1, 0x69, 0x8f, 0x3b, 0x19, 0x8e, 0xd3, 0xbb, 0xf0, 0x8f, 0x83, 0xd9, 0x72, 0xbd, 0xba, - 0x5f, 0x7f, 0x0d, 0x55, 0xea, 0x0e, 0xbf, 0x5f, 0xc7, 0x3d, 0x6f, 0xd2, 0x32, 0xf8, 0xcc, 0xba, - 0xe3, 0x07, 0xd2, 0x0e, 0x3a, 0xb2, 0x15, 0x69, 0x5c, 0xfb, 0x74, 0xcb, 0xe0, 0x33, 0x81, 0xf4, - 0x05, 0xc8, 0xd4, 0xdc, 0x0e, 0x6e, 0x1f, 0xa8, 0x1c, 0x2e, 0xb5, 0x9a, 0x95, 0xa6, 0x63, 0x81, - 0x08, 0xeb, 0xef, 0xc2, 0x8d, 0x82, 0x8c, 0x95, 0xa6, 0x63, 0x54, 0xe4, 0x49, 0x98, 0xb4, 0x8f, - 0x8e, 0xda, 0x98, 0x9c, 0x13, 0xd1, 0xa6, 0x75, 0x22, 0x18, 0x26, 0x82, 0x33, 0x77, 0x21, 0xc5, - 0xed, 0x80, 0x57, 0x33, 0x6c, 0x89, 0x4a, 0x8b, 0x6e, 0xd7, 0x24, 0xe6, 0xc7, 0xac, 0x94, 0xc3, - 0x27, 0x2f, 0x40, 0xa6, 0xee, 0x55, 0xc2, 0x7d, 0xc3, 0xc4, 0xf9, 0xc4, 0x7c, 0xca, 0x4a, 0xd7, - 0xbd, 0x60, 0xa3, 0x28, 0xf7, 0xb5, 0x04, 0x4c, 0xc8, 0xfb, 0x9e, 0xe6, 0x2a, 0xa4, 0x1a, 0x6e, - 0xd5, 0x26, 0x81, 0x40, 0x37, 0xdd, 0xe7, 0x63, 0xb6, 0x4a, 0x17, 0x37, 0x98, 0xbc, 0x15, 0x20, - 0x67, 0xfe, 0x8b, 0x06, 0x29, 0x3e, 0x6c, 0x4e, 0x43, 0xb2, 0x65, 0xfb, 0xc7, 0x84, 0x6e, 0xb8, - 0x98, 0x30, 0x34, 0x8b, 0x1c, 0xe3, 0x71, 0xaf, 0x65, 0x3b, 0x24, 0x04, 0xd8, 0x38, 0x3e, 0xc6, - 0x7e, 0x6d, 0x20, 0xbb, 0x46, 0xda, 0x61, 0xb7, 0xd9, 0x44, 0x8e, 0xef, 0x71, 0xbf, 0xb2, 0xf1, - 0x12, 0x1b, 0x36, 0x3f, 0x06, 0x53, 0x7e, 0xdb, 0xae, 0x37, 0x24, 0xd9, 0x24, 0x91, 0x35, 0xf8, - 0x44, 0x20, 0x9c, 0x87, 0x47, 0x38, 0x6f, 0x0d, 0xf9, 0x76, 0xf5, 0x18, 0xd5, 0x42, 0xd0, 0x08, - 0xd9, 0x54, 0x7b, 0x98, 0x09, 0xac, 0xb2, 0x79, 0x8e, 0xcd, 0xfd, 0x81, 0x06, 0x53, 0xbc, 0x81, - 0xaf, 0x05, 0xc6, 0xda, 0x04, 0xb0, 0x1d, 0xc7, 0xf5, 0x45, 0x73, 0x75, 0x87, 0x72, 0x17, 0x6e, - 0xb1, 0x10, 0x80, 0x2c, 0x81, 0x60, 0xa6, 0x09, 0x10, 0xce, 0xf4, 0x34, 0xdb, 0x1c, 0xa4, 0xd9, - 0xa6, 0x36, 0x79, 0x32, 0x42, 0xef, 0xfa, 0x80, 0x0e, 0xe1, 0x4e, 0xdf, 0x3c, 0x0b, 0xc3, 0x07, - 0xe8, 0xa8, 0xee, 0xb0, 0xad, 0x36, 0x7a, 0xc0, 0x37, 0xf0, 0x92, 0xc1, 0x06, 0x5e, 0xf1, 0x65, - 0x38, 0x53, 0x75, 0x9b, 0xaa, 0xba, 0x45, 0x43, 0xb9, 0xf3, 0xf4, 0x9e, 0xd7, 0x7e, 0x0e, 0xc2, - 0xee, 0xec, 0x2d, 0x4d, 0xfb, 0xf5, 0x84, 0x7e, 0x67, 0xa7, 0xf8, 0x5b, 0x89, 0x99, 0x3b, 0x14, - 0xba, 0xc3, 0xaf, 0xd4, 0x42, 0x87, 0x0d, 0x54, 0xc5, 0xda, 0xc3, 0x9f, 0x5c, 0x82, 0xa7, 0x8f, - 0xea, 0xfe, 0x71, 0xe7, 0x60, 0xb1, 0xea, 0x36, 0x2f, 0x1f, 0xb9, 0x47, 0x6e, 0xf8, 0x30, 0x08, - 0x1f, 0x91, 0x03, 0xf2, 0x89, 0x3d, 0x10, 0x1a, 0x0b, 0x46, 0x67, 0x62, 0x9f, 0x1e, 0xe5, 0xb7, - 0xe0, 0x0c, 0x13, 0xae, 0x90, 0x1d, 0x69, 0xda, 0x87, 0x9b, 0x7d, 0x77, 0x25, 0xb2, 0xbf, 0xfd, - 0x3d, 0xb2, 0xd2, 0x59, 0x53, 0x0c, 0x8a, 0xe7, 0x68, 0xa7, 0x9e, 0xb7, 0xe0, 0x21, 0x89, 0x8f, - 0xa6, 0x26, 0x6a, 0xc7, 0x30, 0x7e, 0x9b, 0x31, 0x9e, 0x11, 0x18, 0x77, 0x19, 0x34, 0x5f, 0x82, - 0xf1, 0xd3, 0x70, 0xfd, 0x47, 0xc6, 0x95, 0x41, 0x22, 0xc9, 0x1d, 0x98, 0x24, 0x24, 0xd5, 0x8e, - 0xe7, 0xbb, 0x4d, 0x52, 0xf7, 0xfa, 0xd3, 0xfc, 0xa7, 0xef, 0xd1, 0x5c, 0x99, 0xc0, 0xb0, 0x52, - 0x80, 0xca, 0xe7, 0x81, 0x6c, 0xc2, 0xd7, 0x50, 0xb5, 0x11, 0xc3, 0x70, 0x8f, 0x29, 0x12, 0xc8, - 0xe7, 0x3f, 0x0d, 0x67, 0xf1, 0x67, 0x52, 0x96, 0x44, 0x4d, 0xe2, 0xf7, 0x60, 0xb2, 0x7f, 0xf0, - 0x59, 0x9a, 0x8e, 0x67, 0x02, 0x02, 0x41, 0x27, 0xc1, 0x8b, 0x47, 0xc8, 0xf7, 0x51, 0xdb, 0xab, - 0xd8, 0x8d, 0x28, 0xf5, 0x84, 0x3b, 0xd8, 0xec, 0xaf, 0xfe, 0x40, 0xf6, 0xe2, 0x1d, 0x8a, 0x2c, - 0x34, 0x1a, 0xf9, 0x7d, 0x78, 0x38, 0x22, 0x2a, 0x06, 0xe0, 0xfc, 0x02, 0xe3, 0x3c, 0xdb, 0x15, - 0x19, 0x98, 0x76, 0x07, 0xf8, 0x78, 0xe0, 0xcb, 0x01, 0x38, 0x7f, 0x8d, 0x71, 0x9a, 0x0c, 0xcb, - 0x5d, 0x8a, 0x19, 0xef, 0xc2, 0xd4, 0x6b, 0xa8, 0x7d, 0xe0, 0x7a, 0x6c, 0xe3, 0x60, 0x00, 0xba, - 0x2f, 0x32, 0xba, 0x49, 0x06, 0x24, 0xdb, 0x08, 0x98, 0xeb, 0x16, 0xa4, 0x0e, 0xed, 0x2a, 0x1a, - 0x80, 0xe2, 0x4b, 0x8c, 0x62, 0x14, 0xcb, 0x63, 0x68, 0x01, 0x32, 0x47, 0x2e, 0x5b, 0x99, 0xe2, - 0xe1, 0x5f, 0x66, 0xf0, 0x34, 0xc7, 0x30, 0x8a, 0x96, 0xdb, 0xea, 0x34, 0xf0, 0xb2, 0x15, 0x4f, - 0xf1, 0x15, 0x4e, 0xc1, 0x31, 0x8c, 0xe2, 0x14, 0x66, 0x7d, 0x8b, 0x53, 0x78, 0x82, 0x3d, 0x9f, - 0x83, 0xb4, 0xeb, 0x34, 0x4e, 0x5c, 0x67, 0x10, 0x25, 0xbe, 0xca, 0x18, 0x80, 0x41, 0x30, 0xc1, - 0x6d, 0x18, 0x1b, 0xd4, 0x11, 0xbf, 0xf1, 0x03, 0x9e, 0x1e, 0xdc, 0x03, 0x77, 0x60, 0x92, 0x17, - 0xa8, 0xba, 0xeb, 0x0c, 0x40, 0xf1, 0x4f, 0x19, 0xc5, 0x84, 0x00, 0x63, 0x97, 0xe1, 0x23, 0xcf, - 0x3f, 0x42, 0x83, 0x90, 0x7c, 0x8d, 0x5f, 0x06, 0x83, 0x30, 0x53, 0x1e, 0x20, 0xa7, 0x7a, 0x3c, - 0x18, 0xc3, 0xd7, 0xb9, 0x29, 0x39, 0x06, 0x53, 0x94, 0x60, 0xbc, 0x69, 0xb7, 0xbd, 0x63, 0xbb, - 0x31, 0x90, 0x3b, 0x7e, 0x93, 0x71, 0x64, 0x02, 0x10, 0xb3, 0x48, 0xc7, 0x39, 0x0d, 0xcd, 0x6f, - 0x71, 0x8b, 0x08, 0x30, 0x96, 0x7a, 0x9e, 0x4f, 0xf6, 0x66, 0x4e, 0xc3, 0xf6, 0xcf, 0x78, 0xea, - 0x51, 0xec, 0xa6, 0xc8, 0x78, 0x1b, 0xc6, 0xbc, 0xfa, 0x67, 0x06, 0xa2, 0xf9, 0xe7, 0xdc, 0xd3, - 0x04, 0x80, 0xc1, 0x2f, 0xc1, 0x23, 0x91, 0xcb, 0xc4, 0x00, 0x64, 0xff, 0x82, 0x91, 0x4d, 0x47, - 0x2c, 0x15, 0xac, 0x24, 0x9c, 0x96, 0xf2, 0x5f, 0xf2, 0x92, 0x80, 0x14, 0xae, 0x1d, 0xdc, 0xd9, - 0x7b, 0xf6, 0xe1, 0xe9, 0xac, 0xf6, 0xaf, 0xb8, 0xd5, 0x28, 0x56, 0xb2, 0xda, 0x1e, 0x4c, 0x33, - 0xc6, 0xd3, 0xf9, 0xf5, 0x1b, 0xbc, 0xb0, 0x52, 0xf4, 0xbe, 0xec, 0xdd, 0x97, 0x61, 0x26, 0x30, - 0x27, 0x6f, 0x4a, 0xbd, 0x4a, 0xd3, 0x6e, 0x0d, 0xc0, 0xfc, 0xdb, 0x8c, 0x99, 0x57, 0xfc, 0xa0, - 0xab, 0xf5, 0x36, 0xed, 0x16, 0x26, 0x7f, 0x11, 0xb2, 0x9c, 0xbc, 0xe3, 0xb4, 0x51, 0xd5, 0x3d, - 0x72, 0xea, 0x9f, 0x41, 0xb5, 0x01, 0xa8, 0xbf, 0xa9, 0xb8, 0x6a, 0x5f, 0x80, 0x63, 0xe6, 0x75, - 0x30, 0x82, 0x5e, 0xa5, 0x52, 0x6f, 0xb6, 0xdc, 0xb6, 0x1f, 0xc3, 0xf8, 0xaf, 0xb9, 0xa7, 0x02, - 0xdc, 0x3a, 0x81, 0xe5, 0xcb, 0x30, 0x41, 0x0e, 0x07, 0x0d, 0xc9, 0xdf, 0x61, 0x44, 0xe3, 0x21, - 0x8a, 0x15, 0x8e, 0xaa, 0xdb, 0x6c, 0xd9, 0xed, 0x41, 0xea, 0xdf, 0xbf, 0xe1, 0x85, 0x83, 0x41, - 0x58, 0xe1, 0xf0, 0x4f, 0x5a, 0x08, 0xaf, 0xf6, 0x03, 0x30, 0x7c, 0x8b, 0x17, 0x0e, 0x8e, 0x61, - 0x14, 0xbc, 0x61, 0x18, 0x80, 0xe2, 0xdf, 0x72, 0x0a, 0x8e, 0xc1, 0x14, 0x9f, 0x0a, 0x17, 0xda, - 0x36, 0x3a, 0xaa, 0x7b, 0x7e, 0x9b, 0xb6, 0xc2, 0xfd, 0xa9, 0x7e, 0xf7, 0x07, 0x72, 0x13, 0x66, - 0x09, 0xd0, 0xfc, 0x5d, 0x98, 0x54, 0x5a, 0x0c, 0x33, 0xee, 0x89, 0x7e, 0xf6, 0xe7, 0x7f, 0xc4, - 0x8a, 0x91, 0xdc, 0x61, 0xe4, 0x37, 0xb0, 0xdf, 0xe5, 0x3e, 0x20, 0x9e, 0xec, 0xb3, 0x3f, 0x0a, - 0x5c, 0x2f, 0xb5, 0x01, 0xf9, 0x35, 0x18, 0x97, 0x7a, 0x80, 0x78, 0xaa, 0xbf, 0xce, 0xa8, 0x32, - 0x62, 0x0b, 0x90, 0xbf, 0x06, 0x49, 0xbc, 0x9e, 0xc7, 0xc3, 0xff, 0x06, 0x83, 0x13, 0xf1, 0xfc, - 0x33, 0x90, 0xe2, 0xeb, 0x78, 0x3c, 0xf4, 0x17, 0x19, 0x34, 0x80, 0x60, 0x38, 0x5f, 0xc3, 0xe3, - 0xe1, 0x7f, 0x93, 0xc3, 0x39, 0x04, 0xc3, 0x07, 0x37, 0xe1, 0xdb, 0xbf, 0x9c, 0x64, 0x75, 0x98, - 0xdb, 0xee, 0x36, 0x8c, 0xb2, 0xc5, 0x3b, 0x1e, 0xfd, 0x4b, 0xec, 0xe4, 0x1c, 0x91, 0xbf, 0x01, - 0xc3, 0x03, 0x1a, 0xfc, 0x6f, 0x33, 0x28, 0x95, 0xcf, 0x97, 0x20, 0x2d, 0x2c, 0xd8, 0xf1, 0xf0, - 0xbf, 0xc3, 0xe0, 0x22, 0x0a, 0xab, 0xce, 0x16, 0xec, 0x78, 0x82, 0xbf, 0xcb, 0x55, 0x67, 0x08, - 0x6c, 0x36, 0xbe, 0x56, 0xc7, 0xa3, 0xff, 0x1e, 0xb7, 0x3a, 0x87, 0xe4, 0x9f, 0x83, 0xb1, 0xa0, - 0xfe, 0xc6, 0xe3, 0xff, 0x3e, 0xc3, 0x87, 0x18, 0x6c, 0x01, 0xa1, 0xfe, 0xc7, 0x53, 0xfc, 0x03, - 0x6e, 0x01, 0x01, 0x85, 0xd3, 0x48, 0x5d, 0xd3, 0xe3, 0x99, 0x7e, 0x85, 0xa7, 0x91, 0xb2, 0xa4, - 0x63, 0x6f, 0x92, 0x32, 0x18, 0x4f, 0xf1, 0x0f, 0xb9, 0x37, 0x89, 0x3c, 0x56, 0x43, 0x5d, 0x24, - 0xe3, 0x39, 0xfe, 0x31, 0x57, 0x43, 0x59, 0x23, 0xf3, 0x3b, 0x60, 0x76, 0x2f, 0x90, 0xf1, 0x7c, - 0x9f, 0x67, 0x7c, 0x53, 0x5d, 0xeb, 0x63, 0xfe, 0x05, 0x98, 0x8e, 0x5e, 0x1c, 0xe3, 0x59, 0x7f, - 0xf5, 0x47, 0xca, 0xed, 0x8c, 0xb8, 0x36, 0xe6, 0xf7, 0xc2, 0x2a, 0x2b, 0x2e, 0x8c, 0xf1, 0xb4, - 0x5f, 0xf8, 0x91, 0x5c, 0x68, 0xc5, 0x75, 0x31, 0x5f, 0x00, 0x08, 0xd7, 0xa4, 0x78, 0xae, 0x2f, - 0x32, 0x2e, 0x01, 0x84, 0x53, 0x83, 0x2d, 0x49, 0xf1, 0xf8, 0x2f, 0xf1, 0xd4, 0x60, 0x08, 0x9c, - 0x1a, 0x7c, 0x35, 0x8a, 0x47, 0x7f, 0x99, 0xa7, 0x06, 0x87, 0xe4, 0x6f, 0x43, 0xca, 0xe9, 0x34, - 0x1a, 0x38, 0xb6, 0xcc, 0xfe, 0x2f, 0xd9, 0x64, 0xff, 0xd7, 0x8f, 0x19, 0x98, 0x03, 0xf2, 0xd7, - 0x60, 0x18, 0x35, 0x0f, 0x50, 0x2d, 0x0e, 0xf9, 0xbf, 0x7f, 0xcc, 0xeb, 0x09, 0x96, 0xce, 0x3f, - 0x07, 0x40, 0x6f, 0xa6, 0xc9, 0x33, 0x96, 0x18, 0xec, 0xff, 0xf9, 0x31, 0x7b, 0x7e, 0x1f, 0x42, - 0x42, 0x02, 0xfa, 0x36, 0x40, 0x7f, 0x82, 0x1f, 0xc8, 0x04, 0xe4, 0x06, 0xfc, 0x16, 0x8c, 0xbe, - 0xe2, 0xb9, 0x8e, 0x6f, 0x1f, 0xc5, 0xa1, 0xff, 0x88, 0xa1, 0xb9, 0x3c, 0x36, 0x58, 0xd3, 0x6d, - 0x23, 0xdf, 0x3e, 0xf2, 0xe2, 0xb0, 0xff, 0x97, 0x61, 0x03, 0x00, 0x06, 0x57, 0x6d, 0xcf, 0x1f, - 0xe4, 0xba, 0xff, 0x1f, 0x07, 0x73, 0x00, 0x56, 0x1a, 0x7f, 0x7e, 0x15, 0x9d, 0xc4, 0x61, 0x7f, - 0xc8, 0x95, 0x66, 0xf2, 0xf9, 0x67, 0x60, 0x0c, 0x7f, 0xa4, 0xef, 0xb4, 0xc4, 0x80, 0xff, 0x98, - 0x81, 0x43, 0x04, 0x3e, 0xb3, 0xe7, 0xd7, 0xfc, 0x7a, 0xbc, 0xb1, 0xff, 0x3f, 0xf3, 0x34, 0x97, - 0xcf, 0x17, 0x20, 0xed, 0xf9, 0xb5, 0x5a, 0x87, 0x75, 0x34, 0x31, 0xf0, 0x3f, 0xf9, 0x71, 0x70, - 0x93, 0x1b, 0x60, 0x8a, 0x17, 0xa2, 0xf7, 0xeb, 0xe0, 0x8e, 0x7b, 0xc7, 0xa5, 0x3b, 0x75, 0xf0, - 0xbd, 0x06, 0xdc, 0xe8, 0xb9, 0xeb, 0x86, 0x17, 0x91, 0xcb, 0x55, 0xb7, 0x79, 0xe0, 0x7a, 0x97, - 0x0f, 0x5c, 0xff, 0xf8, 0xb2, 0x7f, 0x8c, 0xf0, 0x18, 0xdb, 0x7f, 0x4b, 0xe2, 0xcf, 0x33, 0xa7, - 0xdb, 0xb4, 0x23, 0x4f, 0x33, 0xb7, 0xea, 0x58, 0xef, 0x2d, 0xb2, 0x2b, 0x6e, 0x9e, 0x83, 0x11, - 0x72, 0x25, 0x57, 0xc8, 0x43, 0x1b, 0xad, 0x98, 0xbc, 0xf7, 0xee, 0xdc, 0x90, 0xc5, 0xc6, 0x82, - 0xd9, 0x65, 0xb2, 0x6d, 0x99, 0x90, 0x66, 0x97, 0x83, 0xd9, 0xab, 0x74, 0xe7, 0x52, 0x9a, 0xbd, - 0x1a, 0xcc, 0xae, 0x90, 0x3d, 0x4c, 0x5d, 0x9a, 0x5d, 0x09, 0x66, 0xaf, 0x91, 0x7d, 0xfa, 0x71, - 0x69, 0xf6, 0x5a, 0x30, 0x7b, 0x9d, 0xec, 0xce, 0x27, 0xa5, 0xd9, 0xeb, 0xc1, 0xec, 0x0d, 0xb2, - 0x31, 0x3f, 0x25, 0xcd, 0xde, 0x08, 0x66, 0x6f, 0x92, 0x0d, 0x79, 0x53, 0x9a, 0xbd, 0x19, 0xcc, - 0xde, 0x22, 0x6f, 0x5f, 0x8c, 0x4a, 0xb3, 0xb7, 0xcc, 0x59, 0x18, 0xa5, 0x57, 0xbe, 0x44, 0x1e, - 0x7c, 0x4e, 0xb2, 0x69, 0x3e, 0x18, 0xce, 0x5f, 0x21, 0x6f, 0x5a, 0x8c, 0xc8, 0xf3, 0x57, 0xc2, - 0xf9, 0x65, 0xf2, 0xda, 0xb1, 0x21, 0xcf, 0x2f, 0x87, 0xf3, 0x57, 0xb3, 0xe3, 0x38, 0x60, 0xe4, - 0xf9, 0xab, 0xe1, 0xfc, 0x4a, 0x76, 0x02, 0x07, 0xb3, 0x3c, 0xbf, 0x12, 0xce, 0x5f, 0xcb, 0x4e, - 0x9e, 0xd7, 0xe6, 0x33, 0xf2, 0xfc, 0xb5, 0xdc, 0x2f, 0x10, 0xf7, 0x3a, 0xa1, 0x7b, 0xa7, 0x65, - 0xf7, 0x06, 0x8e, 0x9d, 0x96, 0x1d, 0x1b, 0xb8, 0x74, 0x5a, 0x76, 0x69, 0xe0, 0xcc, 0x69, 0xd9, - 0x99, 0x81, 0x1b, 0xa7, 0x65, 0x37, 0x06, 0x0e, 0x9c, 0x96, 0x1d, 0x18, 0xb8, 0x6e, 0x5a, 0x76, - 0x5d, 0xe0, 0xb4, 0x69, 0xd9, 0x69, 0x81, 0xbb, 0xa6, 0x65, 0x77, 0x05, 0x8e, 0xca, 0x2a, 0x8e, - 0x0a, 0x5d, 0x94, 0x55, 0x5c, 0x14, 0x3a, 0x27, 0xab, 0x38, 0x27, 0x74, 0x4b, 0x56, 0x71, 0x4b, - 0xe8, 0x90, 0xac, 0xe2, 0x90, 0xd0, 0x15, 0x59, 0xc5, 0x15, 0xa1, 0x13, 0x58, 0x8e, 0x59, 0xa8, - 0x15, 0x91, 0x63, 0x7a, 0xdf, 0x1c, 0xd3, 0xfb, 0xe6, 0x98, 0xde, 0x37, 0xc7, 0xf4, 0xbe, 0x39, - 0xa6, 0xf7, 0xcd, 0x31, 0xbd, 0x6f, 0x8e, 0xe9, 0x7d, 0x73, 0x4c, 0xef, 0x9b, 0x63, 0x7a, 0xff, - 0x1c, 0xd3, 0x63, 0x72, 0x4c, 0x8f, 0xc9, 0x31, 0x3d, 0x26, 0xc7, 0xf4, 0x98, 0x1c, 0xd3, 0x63, - 0x72, 0x4c, 0xef, 0x99, 0x63, 0xa1, 0x7b, 0xa7, 0x65, 0xf7, 0x46, 0xe6, 0x98, 0xde, 0x23, 0xc7, - 0xf4, 0x1e, 0x39, 0xa6, 0xf7, 0xc8, 0x31, 0xbd, 0x47, 0x8e, 0xe9, 0x3d, 0x72, 0x4c, 0xef, 0x91, - 0x63, 0x7a, 0x8f, 0x1c, 0xd3, 0x7b, 0xe5, 0x98, 0xde, 0x33, 0xc7, 0xf4, 0x9e, 0x39, 0xa6, 0xf7, - 0xcc, 0x31, 0xbd, 0x67, 0x8e, 0xe9, 0x3d, 0x73, 0x4c, 0x17, 0x73, 0xec, 0xdf, 0xe9, 0x60, 0xd2, - 0x1c, 0xdb, 0x21, 0xaf, 0xce, 0x30, 0x57, 0xcc, 0x2a, 0x99, 0x36, 0x82, 0x5d, 0x67, 0x84, 0x2e, - 0x99, 0x55, 0x72, 0x4d, 0x9e, 0x5f, 0x0e, 0xe6, 0x79, 0xb6, 0xc9, 0xf3, 0x57, 0x83, 0x79, 0x9e, - 0x6f, 0xf2, 0xfc, 0x4a, 0x30, 0xcf, 0x33, 0x4e, 0x9e, 0xbf, 0x16, 0xcc, 0xf3, 0x9c, 0x93, 0xe7, - 0xaf, 0x07, 0xf3, 0x3c, 0xeb, 0xe4, 0xf9, 0x1b, 0xc1, 0x3c, 0xcf, 0x3b, 0x79, 0xfe, 0x66, 0x30, - 0xcf, 0x33, 0x4f, 0x9e, 0xbf, 0x65, 0x9e, 0x57, 0x73, 0x8f, 0x0b, 0x04, 0xae, 0x3d, 0xaf, 0x66, - 0x9f, 0x22, 0x71, 0x25, 0x94, 0xe0, 0xf9, 0xa7, 0x48, 0x2c, 0x87, 0x12, 0x3c, 0x03, 0x15, 0x89, - 0xab, 0xb9, 0xcf, 0x11, 0xf7, 0x39, 0xaa, 0xfb, 0x66, 0x14, 0xf7, 0x25, 0x04, 0xd7, 0xcd, 0x28, - 0xae, 0x4b, 0x08, 0x6e, 0x9b, 0x51, 0xdc, 0x96, 0x10, 0x5c, 0x36, 0xa3, 0xb8, 0x2c, 0x21, 0xb8, - 0x6b, 0x46, 0x71, 0x57, 0x42, 0x70, 0xd5, 0x8c, 0xe2, 0xaa, 0x84, 0xe0, 0xa6, 0x19, 0xc5, 0x4d, - 0x09, 0xc1, 0x45, 0x33, 0x8a, 0x8b, 0x12, 0x82, 0x7b, 0x66, 0x14, 0xf7, 0x24, 0x04, 0xd7, 0x9c, - 0x53, 0x5d, 0x93, 0x10, 0xdd, 0x72, 0x4e, 0x75, 0x4b, 0x42, 0x74, 0xc9, 0x39, 0xd5, 0x25, 0x09, - 0xd1, 0x1d, 0xe7, 0x54, 0x77, 0x24, 0x44, 0x57, 0xfc, 0x79, 0x82, 0x77, 0x84, 0xbb, 0x7e, 0xbb, - 0x53, 0xf5, 0xdf, 0x57, 0x47, 0xb8, 0x24, 0xb5, 0x0f, 0xe9, 0x65, 0x73, 0x91, 0x34, 0xac, 0x62, - 0xc7, 0xa9, 0xac, 0x60, 0x4b, 0x52, 0x63, 0x21, 0x20, 0x9c, 0x68, 0xc4, 0xca, 0xfb, 0xea, 0x0d, - 0x97, 0xa4, 0x36, 0x23, 0x5e, 0xbf, 0x9b, 0x1f, 0x7a, 0xc7, 0xf6, 0x76, 0x82, 0x77, 0x6c, 0xcc, - 0xfc, 0xa7, 0xed, 0xd8, 0x16, 0xe2, 0x4d, 0x1e, 0x18, 0x7b, 0x21, 0xde, 0xd8, 0x5d, 0xab, 0xce, - 0xa0, 0x1d, 0xdc, 0x42, 0xbc, 0x69, 0x03, 0xa3, 0x7e, 0xb0, 0xfd, 0x16, 0x8b, 0x60, 0x0b, 0xb5, - 0x22, 0x22, 0xf8, 0xb4, 0xfd, 0xd6, 0x92, 0x54, 0x4a, 0x4e, 0x1b, 0xc1, 0xfa, 0xa9, 0x23, 0xf8, - 0xb4, 0x9d, 0xd7, 0x92, 0x54, 0x5e, 0x4e, 0x1d, 0xc1, 0x1f, 0x42, 0x3f, 0xc4, 0x22, 0x38, 0x34, - 0xff, 0x69, 0xfb, 0xa1, 0x85, 0x78, 0x93, 0x47, 0x46, 0xb0, 0x7e, 0x8a, 0x08, 0x1e, 0xa4, 0x3f, - 0x5a, 0x88, 0x37, 0x6d, 0x74, 0x04, 0xbf, 0xef, 0x6e, 0xe6, 0x2b, 0x1a, 0x4c, 0x6d, 0xd5, 0x6b, - 0xe5, 0xe6, 0x01, 0xaa, 0xd5, 0x50, 0x8d, 0xd9, 0x71, 0x49, 0xaa, 0x04, 0x3d, 0x5c, 0xfd, 0xce, - 0xbb, 0x73, 0xa1, 0x85, 0xaf, 0x41, 0x8a, 0xda, 0x74, 0x69, 0x29, 0x7b, 0x4f, 0x8b, 0xa9, 0x70, - 0x81, 0xa8, 0x79, 0x81, 0xc3, 0xae, 0x2c, 0x65, 0xff, 0xab, 0x26, 0x54, 0xb9, 0x60, 0x38, 0xf7, - 0x2b, 0x44, 0x43, 0xe7, 0x7d, 0x6b, 0x78, 0x79, 0x20, 0x0d, 0x05, 0xdd, 0x1e, 0xed, 0xd2, 0x4d, - 0xd0, 0xaa, 0x03, 0x93, 0x5b, 0xf5, 0xda, 0x16, 0xf9, 0xc2, 0xeb, 0x20, 0x2a, 0x51, 0x19, 0xa5, - 0x1e, 0x2c, 0x49, 0x61, 0x29, 0x22, 0x82, 0x90, 0x96, 0x6b, 0x44, 0xae, 0x8e, 0x4f, 0xeb, 0x48, - 0xa7, 0x5d, 0xe8, 0x75, 0xda, 0xb0, 0xb2, 0x07, 0x27, 0x5c, 0xe8, 0x75, 0xc2, 0x30, 0x87, 0x82, - 0x53, 0xbd, 0xc1, 0x17, 0x67, 0xfa, 0x16, 0x8e, 0x79, 0x0e, 0x12, 0xeb, 0xf4, 0xfd, 0xda, 0x4c, - 0x31, 0x83, 0x95, 0xfa, 0xce, 0xbb, 0x73, 0xc9, 0xfd, 0x4e, 0xbd, 0x66, 0x25, 0xd6, 0x6b, 0xe6, - 0x5d, 0x18, 0xfe, 0x34, 0xfb, 0xda, 0x18, 0x16, 0x58, 0x61, 0x02, 0x1f, 0x8f, 0xd9, 0x62, 0x22, - 0xd4, 0x8b, 0xfb, 0x75, 0xc7, 0xbf, 0xb2, 0x7c, 0xd3, 0xa2, 0x14, 0xb9, 0xbf, 0x0c, 0x40, 0xcf, - 0xb9, 0x6a, 0x7b, 0xc7, 0xe6, 0x16, 0x67, 0xa6, 0xa7, 0xbe, 0xf9, 0x9d, 0x77, 0xe7, 0x56, 0x06, - 0x61, 0x7d, 0xba, 0x66, 0x7b, 0xc7, 0x4f, 0xfb, 0x27, 0x2d, 0xb4, 0x58, 0x3c, 0xf1, 0x91, 0xc7, - 0xd9, 0x5b, 0x7c, 0xd5, 0x63, 0xd7, 0x95, 0x15, 0xae, 0x2b, 0x25, 0x5d, 0xd3, 0x9a, 0x7c, 0x4d, - 0x4b, 0x0f, 0x7a, 0x3d, 0x6f, 0xf0, 0x45, 0x42, 0xb1, 0xa4, 0x1e, 0x67, 0x49, 0xfd, 0xfd, 0x5a, - 0xb2, 0xc5, 0xeb, 0xa3, 0x72, 0xad, 0x7a, 0xbf, 0x6b, 0xd5, 0xdf, 0xcf, 0xb5, 0xfe, 0x29, 0xcd, - 0xd6, 0x20, 0x9f, 0xf6, 0x1d, 0xfa, 0x82, 0xe2, 0xcf, 0xd6, 0x5e, 0xd0, 0x07, 0xda, 0x05, 0xe4, - 0x93, 0xf7, 0xde, 0x9a, 0xd3, 0x72, 0x5f, 0x49, 0xf0, 0x2b, 0xa7, 0x89, 0xf4, 0x60, 0x57, 0xfe, - 0xb3, 0xd2, 0x53, 0x7d, 0x18, 0x16, 0xfa, 0xb2, 0x06, 0xd3, 0x5d, 0x95, 0x9c, 0x9a, 0xe9, 0x83, - 0x2d, 0xe7, 0xce, 0x69, 0xcb, 0x39, 0x53, 0xf0, 0x77, 0x34, 0x38, 0xab, 0x94, 0x57, 0xaa, 0xde, - 0x65, 0x45, 0xbd, 0x87, 0xbb, 0xcf, 0x44, 0x04, 0x05, 0xed, 0x44, 0xf7, 0x2a, 0x00, 0x81, 0x39, - 0xf0, 0xfb, 0x8a, 0xe2, 0xf7, 0x73, 0x01, 0x20, 0xc2, 0x5c, 0x3c, 0x02, 0x98, 0xda, 0x2e, 0x24, - 0xf7, 0xda, 0x08, 0x99, 0xb3, 0x90, 0xd8, 0x6e, 0x33, 0x0d, 0x27, 0x28, 0x7e, 0xbb, 0x5d, 0x6c, - 0xdb, 0x4e, 0xf5, 0xd8, 0x4a, 0x6c, 0xb7, 0xcd, 0x0b, 0xa0, 0x17, 0xd8, 0x17, 0xf3, 0xd3, 0xcb, - 0x93, 0x54, 0xa0, 0xe0, 0xd4, 0x98, 0x04, 0x9e, 0x33, 0x67, 0x21, 0xb9, 0x81, 0xec, 0x43, 0xa6, - 0x04, 0x50, 0x19, 0x3c, 0x62, 0x91, 0x71, 0x76, 0xc2, 0x17, 0x21, 0xc5, 0x89, 0xcd, 0x8b, 0x18, - 0x71, 0xe8, 0xb3, 0xd3, 0x32, 0x04, 0x56, 0x87, 0xad, 0x5c, 0x64, 0xd6, 0xbc, 0x04, 0xc3, 0x56, - 0xfd, 0xe8, 0xd8, 0x67, 0x27, 0xef, 0x16, 0xa3, 0xd3, 0xb9, 0x97, 0x60, 0x2c, 0xd0, 0xe8, 0x03, - 0xa6, 0x5e, 0xa5, 0x97, 0x66, 0xce, 0x88, 0xeb, 0x09, 0xdf, 0xb7, 0xa4, 0x43, 0xe6, 0x79, 0x48, - 0xed, 0xfa, 0xed, 0xb0, 0xe8, 0xf3, 0x8e, 0x34, 0x18, 0xcd, 0xfd, 0x82, 0x06, 0xa9, 0x55, 0x84, - 0x5a, 0xc4, 0xe0, 0x4f, 0x40, 0x72, 0xd5, 0x7d, 0xdd, 0x61, 0x0a, 0x4e, 0x31, 0x8b, 0xe2, 0x69, - 0x66, 0x53, 0x32, 0x6d, 0x3e, 0x21, 0xda, 0xfd, 0x4c, 0x60, 0x77, 0x41, 0x8e, 0xd8, 0x3e, 0x27, - 0xd9, 0x9e, 0x39, 0x10, 0x0b, 0x75, 0xd9, 0xff, 0x06, 0xa4, 0x85, 0xb3, 0x98, 0xf3, 0x4c, 0x8d, - 0x84, 0x0a, 0x14, 0x6d, 0x85, 0x25, 0x72, 0x08, 0xc6, 0xa5, 0x13, 0x63, 0xa8, 0x60, 0xe2, 0x1e, - 0x50, 0x62, 0xe6, 0x05, 0xd9, 0xcc, 0xd1, 0xa2, 0xcc, 0xd4, 0x4b, 0xd4, 0x46, 0xc4, 0xdc, 0x17, - 0x69, 0x70, 0xf6, 0x76, 0x22, 0xfe, 0x9c, 0x1b, 0x06, 0x7d, 0xab, 0xde, 0xc8, 0x3d, 0x03, 0x40, - 0x53, 0xbe, 0xec, 0x74, 0x9a, 0x4a, 0xd6, 0x4d, 0x70, 0x03, 0xef, 0x1d, 0xa3, 0x3d, 0xe4, 0x11, - 0x11, 0xb9, 0x9f, 0xc2, 0x05, 0x06, 0x68, 0x8a, 0x11, 0xfc, 0x53, 0xb1, 0xf8, 0xc8, 0x4e, 0x0c, - 0x8b, 0x66, 0xa9, 0xe8, 0x4b, 0xc8, 0x2f, 0x38, 0xae, 0x7f, 0x8c, 0xda, 0x0a, 0x62, 0xd9, 0xbc, - 0x2a, 0x25, 0xec, 0xc4, 0xf2, 0xa3, 0x01, 0xa2, 0x27, 0xe8, 0x6a, 0xee, 0x1b, 0x44, 0x41, 0xdc, - 0x0a, 0x74, 0x5d, 0xa0, 0x3e, 0xc0, 0x05, 0x9a, 0xd7, 0xa5, 0xfe, 0xad, 0x8f, 0x9a, 0xca, 0xad, - 0xe5, 0x2d, 0xe9, 0x3e, 0xa7, 0xbf, 0xb2, 0xf2, 0x3d, 0x26, 0xb7, 0x29, 0x57, 0xf9, 0xa9, 0x58, - 0x95, 0x7b, 0x74, 0xb7, 0xa7, 0xb5, 0xa9, 0x3e, 0xa8, 0x4d, 0x7f, 0x2f, 0xe8, 0x38, 0xe8, 0x4f, - 0x1c, 0x90, 0x5f, 0xd4, 0x30, 0x3f, 0x1e, 0xeb, 0xfb, 0xbc, 0x56, 0x0a, 0x54, 0x5d, 0x19, 0xd4, - 0xfd, 0xf9, 0x44, 0xb1, 0x18, 0xa8, 0x7b, 0xe3, 0x14, 0x21, 0x90, 0x4f, 0x94, 0x4a, 0x41, 0xd9, - 0x4e, 0x7d, 0xee, 0xad, 0x39, 0xed, 0xeb, 0x6f, 0xcd, 0x0d, 0xe5, 0x7e, 0x53, 0x83, 0x29, 0x26, - 0x29, 0x04, 0xee, 0xd3, 0x8a, 0xf2, 0x0f, 0xf1, 0x9a, 0x11, 0x65, 0x81, 0x9f, 0x58, 0xf0, 0x7e, - 0x5b, 0x83, 0x6c, 0x97, 0xae, 0xdc, 0xde, 0x4b, 0x03, 0xa9, 0x9c, 0xd7, 0xca, 0x3f, 0x7d, 0x9b, - 0xbf, 0x04, 0xc3, 0x7b, 0xf5, 0x26, 0x6a, 0xe3, 0x95, 0x00, 0x7f, 0xa0, 0x2a, 0xf3, 0x87, 0x39, - 0x74, 0x88, 0xcf, 0x51, 0xe5, 0xa4, 0xb9, 0x65, 0x33, 0x0b, 0xc9, 0x55, 0xdb, 0xb7, 0x89, 0x06, - 0x99, 0xa0, 0xbe, 0xda, 0xbe, 0x9d, 0xbb, 0x0a, 0x99, 0xcd, 0x13, 0xf2, 0x0a, 0x4d, 0x8d, 0xbc, - 0x1e, 0x22, 0x77, 0x7f, 0xbc, 0x5f, 0xbd, 0xb2, 0x30, 0x9c, 0xaa, 0x19, 0xf7, 0xb4, 0x7c, 0x92, - 0xe8, 0xf3, 0x1a, 0x4c, 0x6c, 0x63, 0xb5, 0x09, 0x8e, 0xc0, 0xce, 0x83, 0xb6, 0x29, 0x37, 0x42, - 0x22, 0xab, 0xa5, 0x6d, 0x2a, 0xed, 0xa3, 0x1e, 0x98, 0x47, 0x69, 0xdb, 0xf4, 0xa0, 0x6d, 0x5b, - 0x48, 0xa6, 0x26, 0x8c, 0xa9, 0x85, 0x64, 0x0a, 0x8c, 0x71, 0x76, 0xde, 0xff, 0xac, 0x83, 0x41, - 0x5b, 0x9d, 0x55, 0x74, 0x58, 0x77, 0xea, 0x7e, 0x77, 0xbf, 0x1a, 0x68, 0x6c, 0x3e, 0x07, 0x63, - 0xd8, 0xa4, 0x6b, 0xec, 0x87, 0xa9, 0xb0, 0xe9, 0x2f, 0xb0, 0x16, 0x45, 0xa1, 0x60, 0x03, 0x24, - 0x74, 0x42, 0x8c, 0xb9, 0x06, 0xfa, 0xd6, 0xd6, 0x26, 0x5b, 0xdc, 0x56, 0xfa, 0x42, 0xd9, 0x1b, - 0x38, 0xec, 0x88, 0x8d, 0x79, 0x47, 0x16, 0x26, 0x30, 0x57, 0x20, 0xb1, 0xb5, 0xc9, 0x1a, 0xde, - 0x8b, 0x83, 0xd0, 0x58, 0x89, 0xad, 0xcd, 0x99, 0x7f, 0xaf, 0xc1, 0xb8, 0x34, 0x6a, 0xe6, 0x20, - 0x43, 0x07, 0x84, 0xcb, 0x1d, 0xb1, 0xa4, 0x31, 0xae, 0x73, 0xe2, 0x7d, 0xea, 0x3c, 0x53, 0x80, - 0x49, 0x65, 0xdc, 0x5c, 0x04, 0x53, 0x1c, 0x62, 0x4a, 0xd0, 0x1f, 0xf5, 0x89, 0x98, 0xc9, 0x3d, - 0x06, 0x10, 0xda, 0x35, 0xf8, 0x2d, 0x9a, 0xad, 0xf2, 0xee, 0x5e, 0x79, 0xd5, 0xd0, 0x72, 0xdf, - 0xd2, 0x20, 0xcd, 0xda, 0xd6, 0xaa, 0xdb, 0x42, 0x66, 0x11, 0xb4, 0x02, 0x8b, 0xa0, 0x07, 0xd3, - 0x5b, 0x2b, 0x98, 0x97, 0x41, 0x2b, 0x0e, 0xee, 0x6a, 0xad, 0x68, 0x2e, 0x83, 0x56, 0x62, 0x0e, - 0x1e, 0xcc, 0x33, 0x5a, 0x29, 0xf7, 0xc7, 0x3a, 0x9c, 0x11, 0xdb, 0x68, 0x5e, 0x4f, 0x2e, 0xc8, - 0xf7, 0x4d, 0xf9, 0xb1, 0x2b, 0xcb, 0x57, 0x57, 0x16, 0xf1, 0x3f, 0x41, 0x48, 0x5e, 0x90, 0x6f, - 0xa1, 0xba, 0x45, 0xba, 0x5e, 0x13, 0xc9, 0x27, 0x85, 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xae, - 0xd7, 0x44, 0xa4, 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xae, 0x47, 0x01, 0xd2, 0x6c, 0xd7, 0x6b, - 0x22, 0xd2, 0x6c, 0xd7, 0x6b, 0x22, 0xd2, 0x6c, 0xf7, 0x6b, 0x22, 0x6c, 0xba, 0xe7, 0x6b, 0x22, - 0xf2, 0x7c, 0xf7, 0x6b, 0x22, 0xf2, 0x7c, 0xf7, 0x6b, 0x22, 0xf9, 0xa4, 0xdf, 0xee, 0xa0, 0xde, - 0x0f, 0x1d, 0x64, 0x7c, 0xbf, 0x7b, 0xc0, 0xb0, 0x00, 0x6f, 0xc3, 0x24, 0xdd, 0x8f, 0x28, 0xb9, - 0x8e, 0x6f, 0xd7, 0x1d, 0xd4, 0x36, 0x3f, 0x01, 0x19, 0x3a, 0x44, 0xef, 0x72, 0xa2, 0xee, 0x02, - 0xe9, 0x3c, 0x2b, 0xb7, 0x92, 0x74, 0xee, 0xcf, 0x93, 0x30, 0x4d, 0x07, 0xb6, 0xec, 0x26, 0x92, - 0x5e, 0x32, 0xba, 0xa4, 0x3c, 0x52, 0x9a, 0xc0, 0xf0, 0xfb, 0xef, 0xce, 0xd1, 0xd1, 0x42, 0x10, - 0x4c, 0x97, 0x94, 0x87, 0x4b, 0xb2, 0x5c, 0xb8, 0xfe, 0x5c, 0x52, 0x5e, 0x3c, 0x92, 0xe5, 0x82, - 0xe5, 0x26, 0x90, 0xe3, 0xaf, 0x20, 0xc9, 0x72, 0xab, 0x41, 0x94, 0x5d, 0x52, 0x5e, 0x46, 0x92, - 0xe5, 0xca, 0x41, 0xbc, 0x5d, 0x52, 0x1e, 0x3d, 0xc9, 0x72, 0x6b, 0x41, 0xe4, 0x5d, 0x52, 0x1e, - 0x42, 0xc9, 0x72, 0x77, 0x82, 0x18, 0xbc, 0xa4, 0xbc, 0xaa, 0x24, 0xcb, 0x3d, 0x1f, 0x44, 0xe3, - 0x25, 0xe5, 0xa5, 0x25, 0x59, 0x6e, 0x3d, 0x88, 0xcb, 0x79, 0xf5, 0xf5, 0x25, 0x59, 0xf0, 0x6e, - 0x18, 0xa1, 0xf3, 0xea, 0x8b, 0x4c, 0xb2, 0xe4, 0x27, 0xc3, 0x58, 0x9d, 0x57, 0x5f, 0x69, 0x92, - 0x25, 0x37, 0xc2, 0xa8, 0x9d, 0x57, 0x1f, 0x95, 0xc9, 0x92, 0x9b, 0x61, 0xfc, 0xce, 0xab, 0x0f, - 0xcd, 0x64, 0xc9, 0xad, 0x30, 0x92, 0xe7, 0xd5, 0xc7, 0x67, 0xb2, 0xe4, 0x76, 0xb8, 0x87, 0xfe, - 0xfb, 0x4a, 0xf8, 0x09, 0x2f, 0x41, 0xe5, 0x94, 0xf0, 0x83, 0x88, 0xd0, 0xcb, 0x29, 0xa1, 0x07, - 0x11, 0x61, 0x97, 0x53, 0xc2, 0x0e, 0x22, 0x42, 0x2e, 0xa7, 0x84, 0x1c, 0x44, 0x84, 0x5b, 0x4e, - 0x09, 0x37, 0x88, 0x08, 0xb5, 0x9c, 0x12, 0x6a, 0x10, 0x11, 0x66, 0x39, 0x25, 0xcc, 0x20, 0x22, - 0xc4, 0x72, 0x4a, 0x88, 0x41, 0x44, 0x78, 0xe5, 0x94, 0xf0, 0x82, 0x88, 0xd0, 0xba, 0xa8, 0x86, - 0x16, 0x44, 0x85, 0xd5, 0x45, 0x35, 0xac, 0x20, 0x2a, 0xa4, 0x1e, 0x57, 0x43, 0x6a, 0xec, 0xfe, - 0xbb, 0x73, 0xc3, 0x78, 0x48, 0x88, 0xa6, 0x8b, 0x6a, 0x34, 0x41, 0x54, 0x24, 0x5d, 0x54, 0x23, - 0x09, 0xa2, 0xa2, 0xe8, 0xa2, 0x1a, 0x45, 0x10, 0x15, 0x41, 0x6f, 0xab, 0x11, 0x14, 0xbe, 0xe2, - 0x93, 0x53, 0x9e, 0x28, 0xc6, 0x45, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, - 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, 0x03, 0x44, 0x90, 0x3e, 0x40, 0x04, 0xe9, - 0x83, 0x44, 0x90, 0x3e, 0x50, 0x04, 0xe9, 0xbd, 0x22, 0xe8, 0xa2, 0xfa, 0xc2, 0x03, 0x44, 0x15, - 0xa4, 0x8b, 0xea, 0x93, 0xcf, 0xf8, 0x10, 0xd2, 0x07, 0x0a, 0x21, 0xbd, 0x57, 0x08, 0xfd, 0xbe, - 0x0e, 0x67, 0xa4, 0x10, 0x62, 0x8f, 0x87, 0x3e, 0xa8, 0x0a, 0x74, 0x7d, 0x80, 0xf7, 0x2b, 0xa2, - 0x62, 0xea, 0xfa, 0x00, 0xcf, 0xa8, 0xfb, 0xc5, 0x59, 0x77, 0x15, 0x2a, 0x0f, 0x50, 0x85, 0xd6, - 0x82, 0x18, 0xba, 0x3e, 0xc0, 0x7b, 0x17, 0xdd, 0xb1, 0x77, 0xb3, 0x5f, 0x11, 0x78, 0x7e, 0xa0, - 0x22, 0xb0, 0x3e, 0x50, 0x11, 0xb8, 0x1b, 0x7a, 0xf0, 0x17, 0x13, 0x70, 0x36, 0xf4, 0x20, 0xfd, - 0x44, 0x7e, 0x60, 0x28, 0x27, 0x3c, 0xa1, 0x32, 0xf9, 0x53, 0x1b, 0xc1, 0x8d, 0x89, 0xf5, 0x9a, - 0xb9, 0x23, 0x3f, 0xab, 0xca, 0x9f, 0xf6, 0xf9, 0x8d, 0xe0, 0x71, 0xb6, 0x17, 0x7a, 0x11, 0xf4, - 0xf5, 0x9a, 0x47, 0xaa, 0x45, 0xd4, 0x69, 0x4b, 0x16, 0x9e, 0x36, 0x2d, 0x18, 0x21, 0xe2, 0x1e, - 0x71, 0xef, 0xfb, 0x39, 0xf1, 0xaa, 0xc5, 0x98, 0x72, 0x6f, 0x6b, 0x70, 0x5e, 0x0a, 0xe5, 0x0f, - 0xe6, 0x89, 0xc1, 0xed, 0x81, 0x9e, 0x18, 0x48, 0x09, 0x12, 0x3e, 0x3d, 0x78, 0xb2, 0xfb, 0x41, - 0xb5, 0x98, 0x25, 0xea, 0x93, 0x84, 0xbf, 0x06, 0x13, 0xe1, 0x15, 0x90, 0x5b, 0xb6, 0x6b, 0xf1, - 0x9b, 0x99, 0x51, 0xa9, 0x79, 0x4d, 0xd9, 0x44, 0xeb, 0x0b, 0x0b, 0xb2, 0x35, 0x97, 0x87, 0xc9, - 0x2d, 0xf9, 0xbb, 0x3c, 0x71, 0x7b, 0x11, 0x29, 0xdc, 0x9a, 0xdf, 0xfb, 0xea, 0xdc, 0x50, 0xee, - 0xe3, 0x90, 0x11, 0xbf, 0xae, 0xa3, 0x00, 0xc7, 0x38, 0x30, 0x9f, 0x7c, 0x07, 0x4b, 0xff, 0x23, - 0x0d, 0x1e, 0x12, 0xc5, 0x5f, 0xa8, 0xfb, 0xc7, 0xeb, 0x0e, 0xee, 0xe9, 0x9f, 0x81, 0x14, 0x62, - 0x8e, 0x63, 0x3f, 0x78, 0xc2, 0x6e, 0x23, 0x23, 0xc5, 0x17, 0xc9, 0xbf, 0x56, 0x00, 0x51, 0xb6, - 0x38, 0xf8, 0x69, 0x97, 0x67, 0x9e, 0x80, 0x61, 0xca, 0x2f, 0xeb, 0x35, 0xae, 0xe8, 0xf5, 0x1b, - 0x11, 0x7a, 0x91, 0x38, 0x32, 0xef, 0x4a, 0x7a, 0x09, 0x77, 0xab, 0x91, 0xe2, 0x8b, 0x3c, 0xf8, - 0x8a, 0x29, 0xdc, 0xff, 0x91, 0x88, 0x8a, 0x57, 0x72, 0x1e, 0x52, 0x65, 0x55, 0x26, 0x5a, 0xcf, - 0x55, 0x48, 0x6e, 0xb9, 0x35, 0xf2, 0x53, 0x2c, 0xe4, 0xd7, 0x64, 0x99, 0x91, 0xd9, 0x4f, 0xcb, - 0x5e, 0x82, 0x54, 0xe9, 0xb8, 0xde, 0xa8, 0xb5, 0x91, 0xc3, 0x1e, 0xd9, 0xb3, 0x1d, 0x74, 0x8c, - 0xb1, 0x82, 0xb9, 0x5c, 0x09, 0xa6, 0xb6, 0x5c, 0xa7, 0x78, 0xe2, 0x8b, 0x75, 0x63, 0x51, 0x49, - 0x11, 0xf6, 0xc8, 0x87, 0x7c, 0x01, 0x04, 0x0b, 0x14, 0x87, 0xbf, 0xf3, 0xee, 0x9c, 0xb6, 0x17, - 0x6c, 0x9f, 0x6f, 0xc2, 0xc3, 0x2c, 0x7d, 0xba, 0xa8, 0x96, 0xe3, 0xa8, 0xc6, 0xd8, 0x63, 0x6a, - 0x81, 0x6e, 0x1d, 0xd3, 0x39, 0x91, 0x74, 0x0f, 0xa6, 0x19, 0x6e, 0x8a, 0xfa, 0x6a, 0xa6, 0x9f, - 0x4a, 0xb3, 0x48, 0xba, 0xc5, 0x38, 0x3a, 0x45, 0xb3, 0xc7, 0x61, 0x2c, 0x98, 0x13, 0xa2, 0x41, - 0xcc, 0x94, 0xe5, 0x85, 0x1c, 0xa4, 0x85, 0x84, 0x35, 0x87, 0x41, 0x2b, 0x18, 0x43, 0xf8, 0xbf, - 0xa2, 0xa1, 0xe1, 0xff, 0x4a, 0x46, 0x62, 0xe1, 0x09, 0x98, 0x54, 0xb6, 0x2f, 0xf1, 0xcc, 0xaa, - 0x01, 0xf8, 0xbf, 0xb2, 0x91, 0x9e, 0x49, 0x7e, 0xee, 0x9f, 0xcc, 0x0e, 0x2d, 0xdc, 0x06, 0xb3, - 0x7b, 0xa3, 0xd3, 0x1c, 0x81, 0x44, 0x01, 0x53, 0x3e, 0x0c, 0x89, 0x62, 0xd1, 0xd0, 0x66, 0x26, - 0xff, 0xd6, 0x97, 0xce, 0xa7, 0x8b, 0xe4, 0xbb, 0xc8, 0x2f, 0x21, 0xbf, 0x58, 0x64, 0xe0, 0x67, - 0xe1, 0xa1, 0xc8, 0x8d, 0x52, 0x8c, 0x2f, 0x95, 0x28, 0x7e, 0x75, 0xb5, 0x0b, 0xbf, 0xba, 0x4a, - 0xf0, 0x5a, 0x9e, 0x3f, 0x70, 0x2e, 0x98, 0x11, 0xdb, 0x92, 0xd9, 0x9a, 0xf0, 0x80, 0xbb, 0x90, - 0x7f, 0x96, 0xc9, 0x16, 0x23, 0x65, 0x51, 0xcc, 0x03, 0xeb, 0x62, 0xbe, 0xc4, 0xf0, 0xa5, 0x48, - 0xfc, 0xa1, 0xf2, 0x54, 0x55, 0x5e, 0x21, 0x18, 0x49, 0x29, 0x50, 0x78, 0x35, 0x92, 0xe4, 0x58, - 0x78, 0xd7, 0x7d, 0x35, 0x50, 0xb8, 0x1c, 0x29, 0x5b, 0x8f, 0x79, 0xe7, 0xab, 0x9c, 0xbf, 0xcc, - 0x16, 0xf9, 0xc2, 0x15, 0xf3, 0x21, 0x9e, 0xa3, 0x52, 0x05, 0x66, 0x06, 0xe2, 0x52, 0xf9, 0x12, - 0x03, 0x14, 0x7b, 0x02, 0x7a, 0x5b, 0x89, 0x23, 0xf3, 0xcf, 0x33, 0x92, 0x52, 0x4f, 0x92, 0x18, - 0x53, 0x71, 0x78, 0x71, 0xef, 0xde, 0x7b, 0xb3, 0x43, 0xef, 0xbc, 0x37, 0x3b, 0xf4, 0xdf, 0xdf, - 0x9b, 0x1d, 0xfa, 0xc3, 0xf7, 0x66, 0xb5, 0xef, 0xbf, 0x37, 0xab, 0xfd, 0xf0, 0xbd, 0x59, 0xed, - 0xcf, 0xde, 0x9b, 0xd5, 0xde, 0xbc, 0x3f, 0xab, 0x7d, 0xfd, 0xfe, 0xac, 0xf6, 0x8d, 0xfb, 0xb3, - 0xda, 0xef, 0xde, 0x9f, 0xd5, 0xde, 0xbe, 0x3f, 0xab, 0xdd, 0xbb, 0x3f, 0xab, 0xbd, 0x73, 0x7f, - 0x56, 0xfb, 0xc3, 0xfb, 0xb3, 0xda, 0xf7, 0xef, 0xcf, 0x0e, 0xfd, 0xf0, 0xfe, 0xac, 0xf6, 0x67, - 0xf7, 0x67, 0x87, 0xde, 0xfc, 0xee, 0xec, 0xd0, 0x5b, 0xdf, 0x9d, 0x1d, 0xfa, 0xfa, 0x77, 0x67, - 0x35, 0xf8, 0xa3, 0x15, 0x98, 0x67, 0x5f, 0x24, 0xa3, 0xdf, 0x5b, 0x15, 0xbe, 0xf3, 0x7a, 0xd9, - 0x3f, 0x46, 0xa4, 0x35, 0xb8, 0xca, 0x7f, 0xd7, 0x29, 0x18, 0x38, 0xe5, 0x97, 0xcb, 0x66, 0x1e, - 0xf4, 0xab, 0x6c, 0xb9, 0xff, 0x30, 0x0c, 0xa3, 0x7c, 0x4b, 0x38, 0xea, 0x77, 0x93, 0xaf, 0x41, - 0xea, 0xb8, 0xde, 0xb0, 0xdb, 0x75, 0xff, 0x84, 0xed, 0x85, 0x3e, 0xb2, 0x18, 0xaa, 0xcd, 0x77, - 0x4f, 0x9f, 0xef, 0x34, 0xdd, 0x4e, 0xdb, 0x0a, 0x44, 0xcd, 0xf3, 0x90, 0x39, 0x46, 0xf5, 0xa3, - 0x63, 0xbf, 0x52, 0x77, 0x2a, 0xd5, 0x26, 0xe9, 0x99, 0xc7, 0x2d, 0xa0, 0x63, 0xeb, 0x4e, 0xa9, - 0x89, 0x4f, 0x56, 0xb3, 0x7d, 0x9b, 0xdc, 0xab, 0x67, 0x2c, 0xf2, 0xd9, 0xbc, 0x00, 0x99, 0x36, - 0xf2, 0x3a, 0x0d, 0xbf, 0x52, 0x75, 0x3b, 0x8e, 0x4f, 0xba, 0x5a, 0xdd, 0x4a, 0xd3, 0xb1, 0x12, - 0x1e, 0x32, 0x1f, 0x87, 0x71, 0xbf, 0xdd, 0x41, 0x15, 0xaf, 0xea, 0xfa, 0x5e, 0xd3, 0x76, 0x48, - 0x57, 0x9b, 0xb2, 0x32, 0x78, 0x70, 0x97, 0x8d, 0x91, 0xdf, 0xe5, 0xaf, 0xba, 0x6d, 0x44, 0x6e, - 0xaa, 0x13, 0x16, 0x3d, 0x30, 0x0d, 0xd0, 0x5f, 0x45, 0x27, 0xe4, 0xb6, 0x2d, 0x69, 0xe1, 0x8f, - 0xe6, 0x53, 0x30, 0x42, 0xff, 0x64, 0x03, 0xe9, 0xb1, 0xc9, 0x13, 0xec, 0xe0, 0xd2, 0xe8, 0x4e, - 0xad, 0xc5, 0x04, 0xcc, 0x5b, 0x30, 0xea, 0xa3, 0x76, 0xdb, 0xae, 0x3b, 0xe4, 0x16, 0x2a, 0xbd, - 0x3c, 0x17, 0x61, 0x86, 0x3d, 0x2a, 0x41, 0x7e, 0x22, 0xd5, 0xe2, 0xf2, 0xe6, 0x35, 0xc8, 0x10, - 0xb9, 0xe5, 0x0a, 0xfd, 0xb3, 0x16, 0xe9, 0x9e, 0x51, 0x9d, 0xa6, 0x72, 0xfc, 0x81, 0x01, 0x87, - 0xd1, 0xdf, 0xb8, 0x1b, 0x27, 0xa7, 0x7d, 0x3c, 0xe2, 0xb4, 0xa4, 0x00, 0x2f, 0x93, 0xe6, 0x91, - 0x9e, 0x9a, 0xf1, 0xd0, 0x5f, 0xc1, 0xdb, 0x84, 0x8c, 0xa8, 0x17, 0x37, 0x03, 0x6d, 0x82, 0x88, - 0x19, 0x9e, 0x0c, 0x7f, 0xf2, 0xbc, 0x87, 0x15, 0xe8, 0x7c, 0x3e, 0x71, 0x53, 0x9b, 0xd9, 0x01, - 0x43, 0x3d, 0x5f, 0x04, 0xe5, 0x25, 0x99, 0xd2, 0x10, 0x2f, 0x96, 0x6c, 0x97, 0x87, 0x8c, 0xb9, - 0xe7, 0x60, 0x84, 0xc6, 0x8f, 0x99, 0x86, 0xd1, 0xfd, 0xad, 0x4f, 0x6e, 0x6d, 0xbf, 0xb0, 0x45, - 0x7f, 0x7c, 0x74, 0x67, 0x7f, 0x6b, 0x97, 0xfe, 0x84, 0xe8, 0xee, 0x46, 0x61, 0x67, 0x77, 0x6f, - 0xbd, 0xf4, 0x49, 0x23, 0x61, 0x4e, 0x42, 0xba, 0xb8, 0xbe, 0xb1, 0x51, 0x29, 0x16, 0xd6, 0x37, - 0xca, 0x2f, 0x19, 0x7a, 0x6e, 0x16, 0x46, 0xa8, 0x9e, 0xe4, 0xf7, 0xdc, 0x3a, 0x8e, 0x73, 0xc2, - 0x9b, 0x08, 0x72, 0x90, 0xfb, 0xa6, 0x09, 0xa3, 0x85, 0x46, 0x63, 0xd3, 0x6e, 0x79, 0xe6, 0x0b, - 0x30, 0x45, 0x7f, 0x56, 0x62, 0xcf, 0x5d, 0x25, 0x3f, 0x3b, 0x88, 0x4b, 0x84, 0xc6, 0x7e, 0xea, - 0x3d, 0xbc, 0x6e, 0x26, 0xbe, 0xd8, 0x25, 0x4b, 0x0d, 0xdc, 0xcd, 0x61, 0xee, 0x81, 0xc1, 0x07, - 0xd7, 0x1a, 0xae, 0xed, 0x63, 0xde, 0x04, 0xfb, 0x55, 0xc0, 0xde, 0xbc, 0x5c, 0x94, 0xd2, 0x76, - 0x31, 0x98, 0x9f, 0x80, 0xd4, 0xba, 0xe3, 0x5f, 0x5d, 0xc6, 0x6c, 0xfc, 0xcf, 0x90, 0x74, 0xb3, - 0x71, 0x11, 0xca, 0x12, 0x20, 0x18, 0xfa, 0xfa, 0x0a, 0x46, 0x27, 0xfb, 0xa1, 0x89, 0x48, 0x88, - 0x26, 0x87, 0xe6, 0x73, 0x30, 0x86, 0xef, 0x51, 0xe8, 0xc9, 0x87, 0x79, 0x03, 0xdb, 0x05, 0x0f, - 0x64, 0x28, 0x3e, 0xc4, 0x70, 0x02, 0x7a, 0xfe, 0x91, 0xbe, 0x04, 0x82, 0x02, 0x21, 0x06, 0x13, - 0xec, 0x06, 0x1a, 0x8c, 0xf6, 0x24, 0xd8, 0x55, 0x34, 0xd8, 0x15, 0x35, 0xd8, 0x0d, 0x34, 0x48, - 0xf5, 0x25, 0x10, 0x35, 0x08, 0x8e, 0xcd, 0x22, 0xc0, 0x5a, 0xfd, 0x0d, 0x54, 0xa3, 0x2a, 0xd0, - 0x3f, 0x52, 0x92, 0x8b, 0x60, 0x08, 0x85, 0x28, 0x85, 0x80, 0x32, 0xcb, 0x90, 0xde, 0x3d, 0x0c, - 0x49, 0xa0, 0x2b, 0x8f, 0x03, 0x35, 0x0e, 0x15, 0x16, 0x11, 0x17, 0xa8, 0x42, 0x2f, 0x26, 0xdd, - 0x5f, 0x15, 0xe1, 0x6a, 0x04, 0x54, 0xa8, 0x0a, 0x25, 0xc9, 0xc4, 0xa8, 0x22, 0xb0, 0x88, 0x38, - 0x5c, 0x0c, 0x8b, 0xae, 0x8b, 0x25, 0x59, 0x55, 0x9a, 0x8b, 0xa0, 0x60, 0x12, 0xac, 0x18, 0xb2, - 0x23, 0xe2, 0x11, 0x12, 0xe4, 0x18, 0x3c, 0xd1, 0xdb, 0x23, 0x5c, 0x86, 0x7b, 0x84, 0x1f, 0x8b, - 0x79, 0x46, 0x5e, 0x6b, 0xc5, 0x3c, 0x93, 0xb1, 0x79, 0xc6, 0x45, 0x95, 0x3c, 0xe3, 0xc3, 0xe6, - 0xa7, 0x60, 0x92, 0x8f, 0xe1, 0xf2, 0x84, 0x49, 0x0d, 0xf6, 0x67, 0x9c, 0x7a, 0x93, 0x32, 0x49, - 0xca, 0xa9, 0xe2, 0xcd, 0x2d, 0x98, 0xe0, 0x43, 0x9b, 0x1e, 0xb9, 0xdc, 0x29, 0xf6, 0x27, 0x12, - 0x7a, 0x33, 0x52, 0x41, 0x4a, 0xa8, 0xa0, 0x67, 0x56, 0x61, 0x3a, 0xba, 0x1a, 0x89, 0xe5, 0x77, - 0x8c, 0x96, 0xdf, 0xb3, 0x62, 0xf9, 0xd5, 0xc4, 0xf2, 0x5d, 0x82, 0x87, 0x22, 0x6b, 0x4f, 0x1c, - 0x49, 0x42, 0x24, 0xb9, 0x0d, 0xe3, 0x52, 0xc9, 0x11, 0xc1, 0xc3, 0x11, 0xe0, 0xe1, 0x6e, 0x70, - 0x18, 0x5a, 0x11, 0xab, 0x87, 0x04, 0xd6, 0x45, 0xf0, 0x27, 0x60, 0x42, 0xae, 0x37, 0x22, 0x7a, - 0x3c, 0x02, 0x3d, 0x1e, 0x81, 0x8e, 0x3e, 0x77, 0x32, 0x02, 0x9d, 0x54, 0xd0, 0xbb, 0x3d, 0xcf, - 0x3d, 0x15, 0x81, 0x9e, 0x8a, 0x40, 0x47, 0x9f, 0xdb, 0x8c, 0x40, 0x9b, 0x22, 0xfa, 0x19, 0x98, - 0x54, 0x4a, 0x8c, 0x08, 0x1f, 0x8d, 0x80, 0x8f, 0x8a, 0xf0, 0x67, 0xc1, 0x50, 0x8b, 0x8b, 0x88, - 0x9f, 0x8c, 0xc0, 0x4f, 0x46, 0x9d, 0x3e, 0x5a, 0xfb, 0x91, 0x08, 0xf8, 0x48, 0xe4, 0xe9, 0xa3, - 0xf1, 0x46, 0x04, 0xde, 0x10, 0xf1, 0x79, 0xc8, 0x88, 0xd5, 0x44, 0xc4, 0xa6, 0x22, 0xb0, 0x29, - 0xd5, 0xee, 0x52, 0x31, 0x89, 0x8b, 0xf4, 0xb1, 0x1e, 0xe9, 0x22, 0x95, 0x90, 0x38, 0x92, 0x8c, - 0x48, 0xf2, 0x69, 0x38, 0x1b, 0x55, 0x32, 0x22, 0x38, 0xe6, 0x45, 0x8e, 0x09, 0xdc, 0x23, 0x86, - 0xcd, 0x9e, 0xdd, 0x52, 0x1a, 0xa7, 0x99, 0x97, 0xe1, 0x4c, 0x44, 0xe1, 0x88, 0xa0, 0x5d, 0x94, - 0xbb, 0xb1, 0xac, 0x40, 0x4b, 0x8a, 0x40, 0xdd, 0x39, 0xda, 0x71, 0xeb, 0x8e, 0x2f, 0x76, 0x65, - 0xdf, 0x3a, 0x03, 0x13, 0xac, 0x3c, 0x6d, 0xb7, 0x6b, 0xa8, 0x8d, 0x6a, 0xe6, 0x5f, 0xe9, 0xdd, - 0x3b, 0x2d, 0x75, 0x17, 0x35, 0x86, 0x3a, 0x45, 0x0b, 0xf5, 0x72, 0xcf, 0x16, 0xea, 0x72, 0x3c, - 0x7d, 0x5c, 0x27, 0x55, 0xea, 0xea, 0xa4, 0x9e, 0xec, 0x4d, 0xda, 0xab, 0xa1, 0x2a, 0x75, 0x35, - 0x54, 0xfd, 0x49, 0x22, 0xfb, 0xaa, 0xb5, 0xee, 0xbe, 0x6a, 0xbe, 0x37, 0x4b, 0xef, 0xf6, 0x6a, - 0xad, 0xbb, 0xbd, 0x8a, 0xe1, 0x89, 0xee, 0xb2, 0xd6, 0xba, 0xbb, 0xac, 0x3e, 0x3c, 0xbd, 0x9b, - 0xad, 0xb5, 0xee, 0x66, 0x2b, 0x86, 0x27, 0xba, 0xe7, 0x5a, 0x8f, 0xe8, 0xb9, 0x9e, 0xea, 0x4d, - 0xd4, 0xaf, 0xf5, 0xda, 0x88, 0x6a, 0xbd, 0x16, 0xfa, 0x28, 0xd5, 0xb7, 0x03, 0x5b, 0x8f, 0xe8, - 0xc0, 0xe2, 0x14, 0xeb, 0xd1, 0x88, 0x6d, 0x44, 0x35, 0x62, 0xb1, 0x8a, 0xf5, 0xea, 0xc7, 0xfe, - 0x92, 0xda, 0x8f, 0x5d, 0xea, 0xcd, 0x14, 0xdd, 0x96, 0xad, 0x75, 0xb7, 0x65, 0xf3, 0x71, 0x39, - 0x17, 0xd5, 0x9d, 0xbd, 0xdc, 0xb3, 0x3b, 0x1b, 0x20, 0x85, 0xe3, 0x9a, 0xb4, 0x17, 0x7b, 0x35, - 0x69, 0x8b, 0xf1, 0xdc, 0xfd, 0x7b, 0xb5, 0xfd, 0x1e, 0xbd, 0xda, 0xd3, 0xf1, 0xc4, 0x1f, 0xb5, - 0x6c, 0x1f, 0xb5, 0x6c, 0x1f, 0xb5, 0x6c, 0x1f, 0xb5, 0x6c, 0x3f, 0xfd, 0x96, 0x2d, 0x9f, 0xfc, - 0xfc, 0x57, 0xe7, 0xb4, 0xdc, 0x7f, 0xd3, 0x83, 0xbf, 0x3e, 0xf5, 0x42, 0xdd, 0x3f, 0xc6, 0xe5, - 0x6d, 0x13, 0x32, 0xe4, 0x8f, 0x5f, 0x34, 0xed, 0x56, 0xab, 0xee, 0x1c, 0xb1, 0x9e, 0x6d, 0xa1, - 0x7b, 0x2b, 0x91, 0x01, 0xc8, 0x9f, 0x0f, 0xd9, 0xa4, 0xc2, 0x6c, 0xb9, 0x71, 0xc2, 0x11, 0xf3, - 0x2e, 0xa4, 0x9b, 0xde, 0x51, 0xc0, 0x96, 0xe8, 0x5a, 0x08, 0x15, 0x36, 0x7a, 0xa5, 0x21, 0x19, - 0x34, 0x83, 0x01, 0xac, 0xda, 0xc1, 0x89, 0x1f, 0xaa, 0xa6, 0xc7, 0xa9, 0x86, 0x7d, 0x2a, 0xab, - 0x76, 0x10, 0x8e, 0xe0, 0xb0, 0x55, 0x75, 0x8f, 0xab, 0x74, 0x52, 0xf0, 0xbc, 0x00, 0x93, 0x8a, - 0xb6, 0x11, 0x39, 0xff, 0x00, 0xbe, 0xc1, 0x8a, 0xa9, 0x9a, 0xc7, 0xe5, 0x84, 0x18, 0x90, 0xb9, - 0xc7, 0x60, 0x5c, 0xe2, 0x36, 0x33, 0xa0, 0x1d, 0xb2, 0xef, 0x54, 0x6a, 0x87, 0xb9, 0xaf, 0x68, - 0x90, 0x66, 0x2f, 0x14, 0xec, 0xd8, 0xf5, 0xb6, 0xf9, 0x3c, 0x24, 0x1b, 0xfc, 0x7b, 0x4d, 0x0f, - 0xfa, 0x1d, 0x5a, 0xc2, 0x60, 0xae, 0xc1, 0x70, 0x3b, 0xf8, 0xde, 0xd3, 0x03, 0x7d, 0x31, 0x96, - 0xc0, 0x73, 0xf7, 0x34, 0x98, 0x62, 0xef, 0xbb, 0x7a, 0xec, 0x2d, 0x68, 0xbb, 0x35, 0xf3, 0x4d, - 0x0d, 0xc6, 0x82, 0x23, 0xf3, 0x00, 0x26, 0x82, 0x03, 0xfa, 0xa6, 0x3d, 0x8d, 0xd4, 0xbc, 0x60, - 0xe1, 0x2e, 0x8e, 0xc5, 0x88, 0x4f, 0xf4, 0x91, 0x14, 0x5d, 0x93, 0xe5, 0xc1, 0x99, 0x02, 0x9c, - 0x89, 0x10, 0x3b, 0xcd, 0x82, 0x9c, 0xbb, 0x00, 0x63, 0x5b, 0xae, 0x4f, 0x7f, 0x3e, 0xc7, 0x3c, - 0x2b, 0x3c, 0x55, 0x28, 0x26, 0x8c, 0x21, 0x02, 0x5e, 0xb8, 0x00, 0xa3, 0x2c, 0xfb, 0xcd, 0x11, - 0x48, 0x6c, 0x16, 0x8c, 0x21, 0xf2, 0x7f, 0xd1, 0xd0, 0xc8, 0xff, 0x25, 0x23, 0x51, 0xdc, 0x78, - 0x80, 0xe7, 0x4d, 0x43, 0xef, 0xdc, 0x9f, 0x1d, 0x8a, 0x78, 0xde, 0xa4, 0x1d, 0x8c, 0x50, 0xf3, - 0xfc, 0x45, 0x00, 0x00, 0x00, 0xff, 0xff, 0xec, 0x28, 0xdb, 0x0e, 0x51, 0x7e, 0x00, 0x00, + 0x99, 0x1e, 0x1b, 0x0d, 0x92, 0xe0, 0x0f, 0x90, 0x6c, 0x36, 0x47, 0x14, 0x44, 0x8d, 0xc8, 0x19, + 0x68, 0x34, 0xa2, 0x68, 0x8b, 0xc3, 0xe1, 0x90, 0x73, 0xc1, 0x58, 0x52, 0x00, 0x10, 0x1c, 0x71, + 0x4c, 0x82, 0x74, 0x93, 0xb4, 0x34, 0xeb, 0x54, 0x50, 0x4d, 0xe0, 0x90, 0x6c, 0x09, 0xe8, 0xc6, + 0xa2, 0x1b, 0x92, 0xe8, 0x87, 0x94, 0xb2, 0x4e, 0x36, 0xde, 0xa4, 0x72, 0xdd, 0xa4, 0xe2, 0x75, + 0x7c, 0x91, 0x37, 0xb5, 0xb1, 0x77, 0x37, 0x17, 0xaf, 0xb3, 0x71, 0xb6, 0xb6, 0x52, 0x59, 0xe5, + 0xc1, 0xc9, 0xe4, 0x25, 0xa5, 0x4d, 0x5e, 0x52, 0xae, 0x94, 0xca, 0x1a, 0xbb, 0x2a, 0x4e, 0xe2, + 0x4d, 0xbc, 0x59, 0x57, 0xed, 0x56, 0x79, 0x1f, 0x52, 0xe7, 0xd6, 0x7d, 0x4e, 0xa3, 0x81, 0x06, + 0x47, 0x92, 0xed, 0x07, 0xbf, 0xcc, 0xa0, 0xcf, 0xf9, 0xbf, 0xaf, 0xff, 0xfe, 0x6f, 0xe7, 0xef, + 0xd3, 0x0d, 0x10, 0xbe, 0xbb, 0x06, 0x17, 0x8e, 0x1d, 0xe7, 0xb8, 0x81, 0xae, 0xb4, 0xda, 0x8e, + 0xe7, 0x1c, 0x76, 0x8e, 0xae, 0xd4, 0x91, 0x5b, 0x6b, 0x5b, 0x2d, 0xcf, 0x69, 0x2f, 0x91, 0x31, + 0x7d, 0x92, 0x4a, 0x2c, 0x71, 0x89, 0xdc, 0x36, 0x4c, 0x6d, 0x58, 0x0d, 0xb4, 0xee, 0x0b, 0xee, + 0x21, 0x4f, 0xbf, 0x09, 0xc9, 0x23, 0xab, 0x81, 0xb2, 0xca, 0x05, 0x75, 0x21, 0xbd, 0x72, 0x69, + 0x29, 0x04, 0x5a, 0x92, 0x11, 0xbb, 0x78, 0xd8, 0x20, 0x88, 0xdc, 0xf7, 0x92, 0x30, 0x1d, 0x31, + 0xab, 0xeb, 0x90, 0xb4, 0xcd, 0x26, 0x66, 0x54, 0x16, 0xc6, 0x0c, 0xf2, 0x59, 0xcf, 0xc2, 0x68, + 0xcb, 0xac, 0xbd, 0x6a, 0x1e, 0xa3, 0x6c, 0x82, 0x0c, 0xf3, 0x43, 0x7d, 0x0e, 0xa0, 0x8e, 0x5a, + 0xc8, 0xae, 0x23, 0xbb, 0x76, 0x9a, 0x55, 0x2f, 0xa8, 0x0b, 0x63, 0x86, 0x30, 0xa2, 0x7f, 0x04, + 0xa6, 0x5a, 0x9d, 0xc3, 0x86, 0x55, 0xab, 0x0a, 0x62, 0x70, 0x41, 0x5d, 0x18, 0x36, 0x34, 0x3a, + 0xb1, 0x1e, 0x08, 0x3f, 0x0d, 0x93, 0xaf, 0x23, 0xf3, 0x55, 0x51, 0x34, 0x4d, 0x44, 0x27, 0xf0, + 0xb0, 0x20, 0x58, 0x82, 0x4c, 0x13, 0xb9, 0xae, 0x79, 0x8c, 0xaa, 0xde, 0x69, 0x0b, 0x65, 0x93, + 0xe4, 0xea, 0x2f, 0x74, 0x5d, 0x7d, 0xf8, 0xca, 0xd3, 0x0c, 0xb5, 0x7f, 0xda, 0x42, 0x7a, 0x01, + 0xc6, 0x90, 0xdd, 0x69, 0x52, 0x86, 0xe1, 0x1e, 0xf6, 0x2b, 0xdb, 0x9d, 0x66, 0x98, 0x25, 0x85, + 0x61, 0x8c, 0x62, 0xd4, 0x45, 0xed, 0xd7, 0xac, 0x1a, 0xca, 0x8e, 0x10, 0x82, 0xa7, 0xbb, 0x08, + 0xf6, 0xe8, 0x7c, 0x98, 0x83, 0xe3, 0xf4, 0x12, 0x8c, 0xa1, 0x37, 0x3c, 0x64, 0xbb, 0x96, 0x63, + 0x67, 0x47, 0x09, 0xc9, 0x53, 0x11, 0x5e, 0x44, 0x8d, 0x7a, 0x98, 0x22, 0xc0, 0xe9, 0xd7, 0x61, + 0xd4, 0x69, 0x79, 0x96, 0x63, 0xbb, 0xd9, 0xd4, 0x05, 0x65, 0x21, 0xbd, 0x72, 0x3e, 0x32, 0x10, + 0x76, 0xa8, 0x8c, 0xc1, 0x85, 0xf5, 0x4d, 0xd0, 0x5c, 0xa7, 0xd3, 0xae, 0xa1, 0x6a, 0xcd, 0xa9, + 0xa3, 0xaa, 0x65, 0x1f, 0x39, 0xd9, 0x31, 0x42, 0x30, 0xdf, 0x7d, 0x21, 0x44, 0xb0, 0xe4, 0xd4, + 0xd1, 0xa6, 0x7d, 0xe4, 0x18, 0x13, 0xae, 0x74, 0xac, 0xcf, 0xc0, 0x88, 0x7b, 0x6a, 0x7b, 0xe6, + 0x1b, 0xd9, 0x0c, 0x89, 0x10, 0x76, 0x94, 0xfb, 0xd3, 0x61, 0x98, 0x1c, 0x24, 0xc4, 0x6e, 0xc3, + 0xf0, 0x11, 0xbe, 0xca, 0x6c, 0xe2, 0x2c, 0x36, 0xa0, 0x18, 0xd9, 0x88, 0x23, 0x0f, 0x69, 0xc4, + 0x02, 0xa4, 0x6d, 0xe4, 0x7a, 0xa8, 0x4e, 0x23, 0x42, 0x1d, 0x30, 0xa6, 0x80, 0x82, 0xba, 0x43, + 0x2a, 0xf9, 0x50, 0x21, 0xf5, 0x32, 0x4c, 0xfa, 0x2a, 0x55, 0xdb, 0xa6, 0x7d, 0xcc, 0x63, 0xf3, + 0x4a, 0x9c, 0x26, 0x4b, 0x65, 0x8e, 0x33, 0x30, 0xcc, 0x98, 0x40, 0xd2, 0xb1, 0xbe, 0x0e, 0xe0, + 0xd8, 0xc8, 0x39, 0xaa, 0xd6, 0x51, 0xad, 0x91, 0x4d, 0xf5, 0xb0, 0xd2, 0x0e, 0x16, 0xe9, 0xb2, + 0x92, 0x43, 0x47, 0x6b, 0x0d, 0xfd, 0x56, 0x10, 0x6a, 0xa3, 0x3d, 0x22, 0x65, 0x9b, 0x26, 0x59, + 0x57, 0xb4, 0x1d, 0xc0, 0x44, 0x1b, 0xe1, 0xb8, 0x47, 0x75, 0x76, 0x65, 0x63, 0x44, 0x89, 0xa5, + 0xd8, 0x2b, 0x33, 0x18, 0x8c, 0x5e, 0xd8, 0x78, 0x5b, 0x3c, 0xd4, 0x9f, 0x04, 0x7f, 0xa0, 0x4a, + 0xc2, 0x0a, 0x48, 0x15, 0xca, 0xf0, 0xc1, 0x8a, 0xd9, 0x44, 0xb3, 0x37, 0x61, 0x42, 0x36, 0x8f, + 0x7e, 0x0e, 0x86, 0x5d, 0xcf, 0x6c, 0x7b, 0x24, 0x0a, 0x87, 0x0d, 0x7a, 0xa0, 0x6b, 0xa0, 0x22, + 0xbb, 0x4e, 0xaa, 0xdc, 0xb0, 0x81, 0x3f, 0xce, 0xde, 0x80, 0x71, 0xe9, 0xf4, 0x83, 0x02, 0x73, + 0x9f, 0x1b, 0x81, 0x73, 0x51, 0x31, 0x17, 0x19, 0xfe, 0x33, 0x30, 0x62, 0x77, 0x9a, 0x87, 0xa8, + 0x9d, 0x55, 0x09, 0x03, 0x3b, 0xd2, 0x0b, 0x30, 0xdc, 0x30, 0x0f, 0x51, 0x23, 0x9b, 0xbc, 0xa0, + 0x2c, 0x4c, 0xac, 0x7c, 0x64, 0xa0, 0xa8, 0x5e, 0xda, 0xc2, 0x10, 0x83, 0x22, 0xf5, 0xe7, 0x21, + 0xc9, 0x4a, 0x1c, 0x66, 0x58, 0x1c, 0x8c, 0x01, 0xc7, 0xa2, 0x41, 0x70, 0xfa, 0xe3, 0x30, 0x86, + 0xff, 0xa7, 0xb6, 0x1d, 0x21, 0x3a, 0xa7, 0xf0, 0x00, 0xb6, 0xab, 0x3e, 0x0b, 0x29, 0x12, 0x66, + 0x75, 0xc4, 0x97, 0x06, 0xff, 0x18, 0x3b, 0xa6, 0x8e, 0x8e, 0xcc, 0x4e, 0xc3, 0xab, 0xbe, 0x66, + 0x36, 0x3a, 0x88, 0x04, 0xcc, 0x98, 0x91, 0x61, 0x83, 0x9f, 0xc4, 0x63, 0xfa, 0x3c, 0xa4, 0x69, + 0x54, 0x5a, 0x76, 0x1d, 0xbd, 0x41, 0xaa, 0xcf, 0xb0, 0x41, 0x03, 0x75, 0x13, 0x8f, 0xe0, 0xd3, + 0xbf, 0xe2, 0x3a, 0x36, 0x77, 0x2d, 0x39, 0x05, 0x1e, 0x20, 0xa7, 0xbf, 0x11, 0x2e, 0x7c, 0x4f, + 0x44, 0x5f, 0x5e, 0x38, 0x16, 0x73, 0xdf, 0x4c, 0x40, 0x92, 0xe4, 0xdb, 0x24, 0xa4, 0xf7, 0xef, + 0xed, 0x96, 0xab, 0xeb, 0x3b, 0x07, 0xc5, 0xad, 0xb2, 0xa6, 0xe8, 0x13, 0x00, 0x64, 0x60, 0x63, + 0x6b, 0xa7, 0xb0, 0xaf, 0x25, 0xfc, 0xe3, 0xcd, 0xca, 0xfe, 0xf5, 0x55, 0x4d, 0xf5, 0x01, 0x07, + 0x74, 0x20, 0x29, 0x0a, 0x5c, 0x5b, 0xd1, 0x86, 0x75, 0x0d, 0x32, 0x94, 0x60, 0xf3, 0xe5, 0xf2, + 0xfa, 0xf5, 0x55, 0x6d, 0x44, 0x1e, 0xb9, 0xb6, 0xa2, 0x8d, 0xea, 0xe3, 0x30, 0x46, 0x46, 0x8a, + 0x3b, 0x3b, 0x5b, 0x5a, 0xca, 0xe7, 0xdc, 0xdb, 0x37, 0x36, 0x2b, 0x77, 0xb4, 0x31, 0x9f, 0xf3, + 0x8e, 0xb1, 0x73, 0xb0, 0xab, 0x81, 0xcf, 0xb0, 0x5d, 0xde, 0xdb, 0x2b, 0xdc, 0x29, 0x6b, 0x69, + 0x5f, 0xa2, 0x78, 0x6f, 0xbf, 0xbc, 0xa7, 0x65, 0x24, 0xb5, 0xae, 0xad, 0x68, 0xe3, 0xfe, 0x29, + 0xca, 0x95, 0x83, 0x6d, 0x6d, 0x42, 0x9f, 0x82, 0x71, 0x7a, 0x0a, 0xae, 0xc4, 0x64, 0x68, 0xe8, + 0xfa, 0xaa, 0xa6, 0x05, 0x8a, 0x50, 0x96, 0x29, 0x69, 0xe0, 0xfa, 0xaa, 0xa6, 0xe7, 0x4a, 0x30, + 0x4c, 0xa2, 0x4b, 0xd7, 0x61, 0x62, 0xab, 0x50, 0x2c, 0x6f, 0x55, 0x77, 0x76, 0xf7, 0x37, 0x77, + 0x2a, 0x85, 0x2d, 0x4d, 0x09, 0xc6, 0x8c, 0xf2, 0x27, 0x0e, 0x36, 0x8d, 0xf2, 0xba, 0x96, 0x10, + 0xc7, 0x76, 0xcb, 0x85, 0xfd, 0xf2, 0xba, 0xa6, 0xe6, 0x6a, 0x70, 0x2e, 0xaa, 0xce, 0x44, 0x66, + 0x86, 0xe0, 0xe2, 0x44, 0x0f, 0x17, 0x13, 0xae, 0x2e, 0x17, 0xff, 0xba, 0x02, 0xd3, 0x11, 0xb5, + 0x36, 0xf2, 0x24, 0x2f, 0xc0, 0x30, 0x0d, 0x51, 0xba, 0xfa, 0x3c, 0x13, 0x59, 0xb4, 0x49, 0xc0, + 0x76, 0xad, 0x40, 0x04, 0x27, 0xae, 0xc0, 0x6a, 0x8f, 0x15, 0x18, 0x53, 0x74, 0x29, 0xf9, 0x19, + 0x05, 0xb2, 0xbd, 0xb8, 0x63, 0x0a, 0x45, 0x42, 0x2a, 0x14, 0xb7, 0xc3, 0x0a, 0x5c, 0xec, 0x7d, + 0x0d, 0x5d, 0x5a, 0x7c, 0x55, 0x81, 0x99, 0xe8, 0x46, 0x25, 0x52, 0x87, 0xe7, 0x61, 0xa4, 0x89, + 0xbc, 0x13, 0x87, 0x2f, 0xd6, 0x97, 0x23, 0x96, 0x00, 0x3c, 0x1d, 0xb6, 0x15, 0x43, 0x89, 0x6b, + 0x88, 0xda, 0xab, 0xdb, 0xa0, 0xda, 0x74, 0x69, 0xfa, 0x2b, 0x09, 0x78, 0x24, 0x92, 0x3c, 0x52, + 0xd1, 0x27, 0x00, 0x2c, 0xbb, 0xd5, 0xf1, 0xe8, 0x82, 0x4c, 0xeb, 0xd3, 0x18, 0x19, 0x21, 0xb9, + 0x8f, 0x6b, 0x4f, 0xc7, 0xf3, 0xe7, 0x55, 0x32, 0x0f, 0x74, 0x88, 0x08, 0xdc, 0x0c, 0x14, 0x4d, + 0x12, 0x45, 0xe7, 0x7a, 0x5c, 0x69, 0xd7, 0x5a, 0xb7, 0x0c, 0x5a, 0xad, 0x61, 0x21, 0xdb, 0xab, + 0xba, 0x5e, 0x1b, 0x99, 0x4d, 0xcb, 0x3e, 0x26, 0x05, 0x38, 0x95, 0x1f, 0x3e, 0x32, 0x1b, 0x2e, + 0x32, 0x26, 0xe9, 0xf4, 0x1e, 0x9f, 0xc5, 0x08, 0xb2, 0xca, 0xb4, 0x05, 0xc4, 0x88, 0x84, 0xa0, + 0xd3, 0x3e, 0x22, 0xf7, 0xdb, 0xa3, 0x90, 0x16, 0xda, 0x3a, 0xfd, 0x22, 0x64, 0x5e, 0x31, 0x5f, + 0x33, 0xab, 0xbc, 0x55, 0xa7, 0x96, 0x48, 0xe3, 0xb1, 0x5d, 0xd6, 0xae, 0x2f, 0xc3, 0x39, 0x22, + 0xe2, 0x74, 0x3c, 0xd4, 0xae, 0xd6, 0x1a, 0xa6, 0xeb, 0x12, 0xa3, 0xa5, 0x88, 0xa8, 0x8e, 0xe7, + 0x76, 0xf0, 0x54, 0x89, 0xcf, 0xe8, 0x6b, 0x30, 0x4d, 0x10, 0xcd, 0x4e, 0xc3, 0xb3, 0x5a, 0x0d, + 0x54, 0xc5, 0x37, 0x0f, 0x2e, 0x29, 0xc4, 0xbe, 0x66, 0x53, 0x58, 0x62, 0x9b, 0x09, 0x60, 0x8d, + 0x5c, 0x7d, 0x1d, 0x9e, 0x20, 0xb0, 0x63, 0x64, 0xa3, 0xb6, 0xe9, 0xa1, 0x2a, 0xfa, 0xc5, 0x8e, + 0xd9, 0x70, 0xab, 0xa6, 0x5d, 0xaf, 0x9e, 0x98, 0xee, 0x49, 0xf6, 0x1c, 0x26, 0x28, 0x26, 0xb2, + 0x8a, 0xf1, 0x18, 0x16, 0xbc, 0xc3, 0xe4, 0xca, 0x44, 0xac, 0x60, 0xd7, 0x5f, 0x34, 0xdd, 0x13, + 0x3d, 0x0f, 0x33, 0x84, 0xc5, 0xf5, 0xda, 0x96, 0x7d, 0x5c, 0xad, 0x9d, 0xa0, 0xda, 0xab, 0xd5, + 0x8e, 0x77, 0x74, 0x33, 0xfb, 0xb8, 0x78, 0x7e, 0xa2, 0xe1, 0x1e, 0x91, 0x29, 0x61, 0x91, 0x03, + 0xef, 0xe8, 0xa6, 0xbe, 0x07, 0x19, 0xec, 0x8c, 0xa6, 0xf5, 0x69, 0x54, 0x3d, 0x72, 0xda, 0x64, + 0x65, 0x99, 0x88, 0xc8, 0x6c, 0xc1, 0x82, 0x4b, 0x3b, 0x0c, 0xb0, 0xed, 0xd4, 0x51, 0x7e, 0x78, + 0x6f, 0xb7, 0x5c, 0x5e, 0x37, 0xd2, 0x9c, 0x65, 0xc3, 0x69, 0xe3, 0x80, 0x3a, 0x76, 0x7c, 0x03, + 0xa7, 0x69, 0x40, 0x1d, 0x3b, 0xdc, 0xbc, 0x6b, 0x30, 0x5d, 0xab, 0xd1, 0x6b, 0xb6, 0x6a, 0x55, + 0xd6, 0xe2, 0xbb, 0x59, 0x4d, 0x32, 0x56, 0xad, 0x76, 0x87, 0x0a, 0xb0, 0x18, 0x77, 0xf5, 0x5b, + 0xf0, 0x48, 0x60, 0x2c, 0x11, 0x38, 0xd5, 0x75, 0x95, 0x61, 0xe8, 0x1a, 0x4c, 0xb7, 0x4e, 0xbb, + 0x81, 0xba, 0x74, 0xc6, 0xd6, 0x69, 0x18, 0xf6, 0x14, 0xb9, 0x6d, 0x6b, 0xa3, 0x9a, 0xe9, 0xa1, + 0x7a, 0xf6, 0x51, 0x51, 0x5a, 0x98, 0xd0, 0xaf, 0x80, 0x56, 0xab, 0x55, 0x91, 0x6d, 0x1e, 0x36, + 0x50, 0xd5, 0x6c, 0x23, 0xdb, 0x74, 0xb3, 0xf3, 0xa2, 0xf0, 0x44, 0xad, 0x56, 0x26, 0xb3, 0x05, + 0x32, 0xa9, 0x2f, 0xc2, 0x94, 0x73, 0xf8, 0x4a, 0x8d, 0x46, 0x56, 0xb5, 0xd5, 0x46, 0x47, 0xd6, + 0x1b, 0xd9, 0x4b, 0xc4, 0x4c, 0x93, 0x78, 0x82, 0xc4, 0xd5, 0x2e, 0x19, 0xd6, 0x9f, 0x01, 0xad, + 0xe6, 0x9e, 0x98, 0xed, 0x16, 0x59, 0xda, 0xdd, 0x96, 0x59, 0x43, 0xd9, 0xa7, 0xa8, 0x28, 0x1d, + 0xaf, 0xf0, 0x61, 0x1c, 0xd9, 0xee, 0xeb, 0xd6, 0x91, 0xc7, 0x19, 0x9f, 0xa6, 0x91, 0x4d, 0xc6, + 0x18, 0xdb, 0xcb, 0x70, 0xae, 0x63, 0x5b, 0xb6, 0x87, 0xda, 0xad, 0x36, 0xc2, 0x4d, 0x3c, 0xcd, + 0xc4, 0xec, 0xff, 0x18, 0xed, 0xd1, 0x86, 0x1f, 0x88, 0xd2, 0x34, 0x00, 0x8c, 0xe9, 0x4e, 0xf7, + 0x60, 0x2e, 0x0f, 0x19, 0x31, 0x2e, 0xf4, 0x31, 0xa0, 0x91, 0xa1, 0x29, 0x78, 0x8d, 0x2d, 0xed, + 0xac, 0xe3, 0xd5, 0xf1, 0x17, 0xca, 0x5a, 0x02, 0xaf, 0xd2, 0x5b, 0x9b, 0xfb, 0xe5, 0xaa, 0x71, + 0x50, 0xd9, 0xdf, 0xdc, 0x2e, 0x6b, 0xea, 0xe2, 0x58, 0xea, 0xfb, 0xa3, 0xda, 0x9b, 0x6f, 0xbe, + 0xf9, 0x66, 0x22, 0xf7, 0xad, 0x04, 0x4c, 0xc8, 0x9d, 0xb1, 0xfe, 0x31, 0x78, 0x94, 0xdf, 0xc6, + 0xba, 0xc8, 0xab, 0xbe, 0x6e, 0xb5, 0x49, 0xa8, 0x36, 0x4d, 0xda, 0x5b, 0xfa, 0x56, 0x3e, 0xc7, + 0xa4, 0xf6, 0x90, 0xf7, 0x92, 0xd5, 0xc6, 0x81, 0xd8, 0x34, 0x3d, 0x7d, 0x0b, 0xe6, 0x6d, 0xa7, + 0xea, 0x7a, 0xa6, 0x5d, 0x37, 0xdb, 0xf5, 0x6a, 0xb0, 0x81, 0x50, 0x35, 0x6b, 0x35, 0xe4, 0xba, + 0x0e, 0x5d, 0x22, 0x7c, 0x96, 0xf3, 0xb6, 0xb3, 0xc7, 0x84, 0x83, 0xda, 0x59, 0x60, 0xa2, 0xa1, + 0x88, 0x50, 0x7b, 0x45, 0xc4, 0xe3, 0x30, 0xd6, 0x34, 0x5b, 0x55, 0x64, 0x7b, 0xed, 0x53, 0xd2, + 0xcf, 0xa5, 0x8c, 0x54, 0xd3, 0x6c, 0x95, 0xf1, 0xf1, 0x87, 0xe7, 0x03, 0xd1, 0x8e, 0xff, 0x5d, + 0x85, 0x8c, 0xd8, 0xd3, 0xe1, 0x16, 0xb9, 0x46, 0xea, 0xb7, 0x42, 0x32, 0xfc, 0xc9, 0xbe, 0x1d, + 0xe0, 0x52, 0x09, 0x17, 0xf6, 0xfc, 0x08, 0xed, 0xb4, 0x0c, 0x8a, 0xc4, 0x8b, 0x2a, 0xce, 0x69, + 0x44, 0xfb, 0xf7, 0x94, 0xc1, 0x8e, 0xf4, 0x3b, 0x30, 0xf2, 0x8a, 0x4b, 0xb8, 0x47, 0x08, 0xf7, + 0xa5, 0xfe, 0xdc, 0x77, 0xf7, 0x08, 0xf9, 0xd8, 0xdd, 0xbd, 0x6a, 0x65, 0xc7, 0xd8, 0x2e, 0x6c, + 0x19, 0x0c, 0xae, 0x3f, 0x06, 0xc9, 0x86, 0xf9, 0xe9, 0x53, 0x79, 0x09, 0x20, 0x43, 0x83, 0x1a, + 0xfe, 0x31, 0x48, 0xbe, 0x8e, 0xcc, 0x57, 0xe5, 0xc2, 0x4b, 0x86, 0x3e, 0xc4, 0xd0, 0xbf, 0x02, + 0xc3, 0xc4, 0x5e, 0x3a, 0x00, 0xb3, 0x98, 0x36, 0xa4, 0xa7, 0x20, 0x59, 0xda, 0x31, 0x70, 0xf8, + 0x6b, 0x90, 0xa1, 0xa3, 0xd5, 0xdd, 0xcd, 0x72, 0xa9, 0xac, 0x25, 0x72, 0x6b, 0x30, 0x42, 0x8d, + 0x80, 0x53, 0xc3, 0x37, 0x83, 0x36, 0xc4, 0x0e, 0x19, 0x87, 0xc2, 0x67, 0x0f, 0xb6, 0x8b, 0x65, + 0x43, 0x4b, 0x88, 0xee, 0x75, 0x21, 0x23, 0xb6, 0x73, 0x3f, 0x99, 0x98, 0xfa, 0x7d, 0x05, 0xd2, + 0x42, 0x7b, 0x86, 0x1b, 0x03, 0xb3, 0xd1, 0x70, 0x5e, 0xaf, 0x9a, 0x0d, 0xcb, 0x74, 0x59, 0x50, + 0x00, 0x19, 0x2a, 0xe0, 0x91, 0x41, 0x9d, 0xf6, 0x13, 0x51, 0xfe, 0x4b, 0x0a, 0x68, 0xe1, 0xd6, + 0x2e, 0xa4, 0xa0, 0xf2, 0x53, 0x55, 0xf0, 0x0b, 0x0a, 0x4c, 0xc8, 0xfd, 0x5c, 0x48, 0xbd, 0x8b, + 0x3f, 0x55, 0xf5, 0xbe, 0x93, 0x80, 0x71, 0xa9, 0x8b, 0x1b, 0x54, 0xbb, 0x5f, 0x84, 0x29, 0xab, + 0x8e, 0x9a, 0x2d, 0xc7, 0x43, 0x76, 0xed, 0xb4, 0xda, 0x40, 0xaf, 0xa1, 0x46, 0x36, 0x47, 0x0a, + 0xc5, 0x95, 0xfe, 0x7d, 0xe2, 0xd2, 0x66, 0x80, 0xdb, 0xc2, 0xb0, 0xfc, 0xf4, 0xe6, 0x7a, 0x79, + 0x7b, 0x77, 0x67, 0xbf, 0x5c, 0x29, 0xdd, 0xab, 0x1e, 0x54, 0x3e, 0x5e, 0xd9, 0x79, 0xa9, 0x62, + 0x68, 0x56, 0x48, 0xec, 0x43, 0x4c, 0xf5, 0x5d, 0xd0, 0xc2, 0x4a, 0xe9, 0x8f, 0x42, 0x94, 0x5a, + 0xda, 0x90, 0x3e, 0x0d, 0x93, 0x95, 0x9d, 0xea, 0xde, 0xe6, 0x7a, 0xb9, 0x5a, 0xde, 0xd8, 0x28, + 0x97, 0xf6, 0xf7, 0xe8, 0x8d, 0xb3, 0x2f, 0xbd, 0x2f, 0x27, 0xf5, 0xe7, 0x55, 0x98, 0x8e, 0xd0, + 0x44, 0x2f, 0xb0, 0x9e, 0x9d, 0xde, 0x46, 0x3c, 0x3b, 0x88, 0xf6, 0x4b, 0xb8, 0x2b, 0xd8, 0x35, + 0xdb, 0x1e, 0x6b, 0xf1, 0x9f, 0x01, 0x6c, 0x25, 0xdb, 0xb3, 0x8e, 0x2c, 0xd4, 0x66, 0xfb, 0x0c, + 0xb4, 0x91, 0x9f, 0x0c, 0xc6, 0xe9, 0x56, 0xc3, 0x47, 0x41, 0x6f, 0x39, 0xae, 0xe5, 0x59, 0xaf, + 0xa1, 0xaa, 0x65, 0xf3, 0x4d, 0x09, 0xdc, 0xd8, 0x27, 0x0d, 0x8d, 0xcf, 0x6c, 0xda, 0x9e, 0x2f, + 0x6d, 0xa3, 0x63, 0x33, 0x24, 0x8d, 0x0b, 0xb8, 0x6a, 0x68, 0x7c, 0xc6, 0x97, 0xbe, 0x08, 0x99, + 0xba, 0xd3, 0xc1, 0x6d, 0x12, 0x95, 0xc3, 0xeb, 0x85, 0x62, 0xa4, 0xe9, 0x98, 0x2f, 0xc2, 0xfa, + 0xd8, 0x60, 0x37, 0x24, 0x63, 0xa4, 0xe9, 0x18, 0x15, 0x79, 0x1a, 0x26, 0xcd, 0xe3, 0xe3, 0x36, + 0x26, 0xe7, 0x44, 0xb4, 0x33, 0x9f, 0xf0, 0x87, 0x89, 0xe0, 0xec, 0x5d, 0x48, 0x71, 0x3b, 0xe0, + 0x25, 0x19, 0x5b, 0xa2, 0xda, 0xa2, 0x7b, 0x52, 0x89, 0x85, 0x31, 0x23, 0x65, 0xf3, 0xc9, 0x8b, + 0x90, 0xb1, 0xdc, 0x6a, 0xb0, 0x39, 0x9a, 0xb8, 0x90, 0x58, 0x48, 0x19, 0x69, 0xcb, 0xf5, 0x77, + 0xc3, 0x72, 0x5f, 0x4d, 0xc0, 0x84, 0xbc, 0xb9, 0xab, 0xaf, 0x43, 0xaa, 0xe1, 0xd4, 0x4c, 0x12, + 0x5a, 0xf4, 0xc9, 0xc2, 0x42, 0xcc, 0x7e, 0xf0, 0xd2, 0x16, 0x93, 0x37, 0x7c, 0xe4, 0xec, 0x7f, + 0x56, 0x20, 0xc5, 0x87, 0xf5, 0x19, 0x48, 0xb6, 0x4c, 0xef, 0x84, 0xd0, 0x0d, 0x17, 0x13, 0x9a, + 0x62, 0x90, 0x63, 0x3c, 0xee, 0xb6, 0x4c, 0x9b, 0x84, 0x00, 0x1b, 0xc7, 0xc7, 0xd8, 0xaf, 0x0d, + 0x64, 0xd6, 0x49, 0xdb, 0xef, 0x34, 0x9b, 0xc8, 0xf6, 0x5c, 0xee, 0x57, 0x36, 0x5e, 0x62, 0xc3, + 0xfa, 0x47, 0x60, 0xca, 0x6b, 0x9b, 0x56, 0x43, 0x92, 0x4d, 0x12, 0x59, 0x8d, 0x4f, 0xf8, 0xc2, + 0x79, 0x78, 0x8c, 0xf3, 0xd6, 0x91, 0x67, 0xd6, 0x4e, 0x50, 0x3d, 0x00, 0x8d, 0x90, 0x9d, 0xc3, + 0x47, 0x99, 0xc0, 0x3a, 0x9b, 0xe7, 0xd8, 0xdc, 0x1f, 0x2a, 0x30, 0xc5, 0x6f, 0x54, 0xea, 0xbe, + 0xb1, 0xb6, 0x01, 0x4c, 0xdb, 0x76, 0x3c, 0xd1, 0x5c, 0xdd, 0xa1, 0xdc, 0x85, 0x5b, 0x2a, 0xf8, + 0x20, 0x43, 0x20, 0x98, 0x6d, 0x02, 0x04, 0x33, 0x3d, 0xcd, 0x36, 0x0f, 0x69, 0xb6, 0x73, 0x4f, + 0x1e, 0xff, 0xd0, 0x5b, 0x5b, 0xa0, 0x43, 0xf8, 0x8e, 0x46, 0x3f, 0x07, 0xc3, 0x87, 0xe8, 0xd8, + 0xb2, 0xd9, 0x7e, 0x22, 0x3d, 0xe0, 0xbb, 0x94, 0x49, 0x7f, 0x97, 0xb2, 0xf8, 0x32, 0x4c, 0xd7, + 0x9c, 0x66, 0x58, 0xdd, 0xa2, 0x16, 0xba, 0xbd, 0x76, 0x5f, 0x54, 0x7e, 0x01, 0x82, 0x16, 0xf3, + 0xd7, 0x13, 0xea, 0x9d, 0xdd, 0xe2, 0x6f, 0x25, 0x66, 0xef, 0x50, 0xdc, 0x2e, 0xbf, 0x4c, 0x03, + 0x1d, 0x35, 0x50, 0x0d, 0xab, 0x0e, 0x7f, 0x72, 0x19, 0x9e, 0x3d, 0xb6, 0xbc, 0x93, 0xce, 0xe1, + 0x52, 0xcd, 0x69, 0x5e, 0x39, 0x76, 0x8e, 0x9d, 0xe0, 0x71, 0x17, 0x3e, 0x22, 0x07, 0xe4, 0x13, + 0x7b, 0xe4, 0x35, 0xe6, 0x8f, 0xce, 0xc6, 0x3e, 0x1f, 0xcb, 0x57, 0x60, 0x9a, 0x09, 0x57, 0xc9, + 0x9e, 0x3b, 0xbd, 0x35, 0xd0, 0xfb, 0xee, 0xbb, 0x64, 0x7f, 0xe7, 0x7b, 0x64, 0xad, 0x36, 0xa6, + 0x18, 0x14, 0xcf, 0xd1, 0x1b, 0x88, 0xbc, 0x01, 0x8f, 0x48, 0x7c, 0x34, 0x2f, 0x51, 0x3b, 0x86, + 0xf1, 0x5b, 0x8c, 0x71, 0x5a, 0x60, 0xdc, 0x63, 0xd0, 0x7c, 0x09, 0xc6, 0xcf, 0xc2, 0xf5, 0x1f, + 0x18, 0x57, 0x06, 0x89, 0x24, 0x77, 0x60, 0x92, 0x90, 0xd4, 0x3a, 0xae, 0xe7, 0x34, 0x49, 0xd1, + 0xeb, 0x4f, 0xf3, 0x1f, 0xbf, 0x47, 0x13, 0x65, 0x02, 0xc3, 0x4a, 0x3e, 0x2a, 0x9f, 0x07, 0xf2, + 0x98, 0xa1, 0x8e, 0x6a, 0x8d, 0x18, 0x86, 0xfb, 0x4c, 0x11, 0x5f, 0x3e, 0xff, 0x49, 0x38, 0x87, + 0x3f, 0x93, 0x9a, 0x24, 0x6a, 0x12, 0xbf, 0xcb, 0x94, 0xfd, 0xc3, 0xcf, 0xd0, 0x5c, 0x9c, 0xf6, + 0x09, 0x04, 0x9d, 0x04, 0x2f, 0x1e, 0x23, 0xcf, 0x43, 0x6d, 0xb7, 0x6a, 0x36, 0xa2, 0xd4, 0x13, + 0x6e, 0xd3, 0xb3, 0xbf, 0xf6, 0x03, 0xd9, 0x8b, 0x77, 0x28, 0xb2, 0xd0, 0x68, 0xe4, 0x0f, 0xe0, + 0xd1, 0x88, 0xa8, 0x18, 0x80, 0xf3, 0xf3, 0x8c, 0xf3, 0x5c, 0x57, 0x64, 0x60, 0xda, 0x5d, 0xe0, + 0xe3, 0xbe, 0x2f, 0x07, 0xe0, 0xfc, 0xc7, 0x8c, 0x53, 0x67, 0x58, 0xee, 0x52, 0xcc, 0x78, 0x17, + 0xa6, 0x5e, 0x43, 0xed, 0x43, 0xc7, 0x65, 0x5b, 0x23, 0x03, 0xd0, 0x7d, 0x81, 0xd1, 0x4d, 0x32, + 0x20, 0xd9, 0x2b, 0xc1, 0x5c, 0xb7, 0x20, 0x75, 0x64, 0xd6, 0xd0, 0x00, 0x14, 0x5f, 0x64, 0x14, + 0xa3, 0x58, 0x1e, 0x43, 0x0b, 0x90, 0x39, 0x76, 0xd8, 0xb2, 0x14, 0x0f, 0xff, 0x12, 0x83, 0xa7, + 0x39, 0x86, 0x51, 0xb4, 0x9c, 0x56, 0xa7, 0x81, 0xd7, 0xac, 0x78, 0x8a, 0x2f, 0x73, 0x0a, 0x8e, + 0x61, 0x14, 0x67, 0x30, 0xeb, 0x5b, 0x9c, 0xc2, 0x15, 0xec, 0xf9, 0x02, 0xa4, 0x1d, 0xbb, 0x71, + 0xea, 0xd8, 0x83, 0x28, 0xf1, 0x15, 0xc6, 0x00, 0x0c, 0x82, 0x09, 0x6e, 0xc3, 0xd8, 0xa0, 0x8e, + 0xf8, 0x8d, 0x1f, 0xf0, 0xf4, 0xe0, 0x1e, 0xb8, 0x03, 0x93, 0xbc, 0x40, 0x59, 0x8e, 0x3d, 0x00, + 0xc5, 0x3f, 0x65, 0x14, 0x13, 0x02, 0x8c, 0x5d, 0x86, 0x87, 0x5c, 0xef, 0x18, 0x0d, 0x42, 0xf2, + 0x55, 0x7e, 0x19, 0x0c, 0xc2, 0x4c, 0x79, 0x88, 0xec, 0xda, 0xc9, 0x60, 0x0c, 0x5f, 0xe3, 0xa6, + 0xe4, 0x18, 0x4c, 0x51, 0x82, 0xf1, 0xa6, 0xd9, 0x76, 0x4f, 0xcc, 0xc6, 0x40, 0xee, 0xf8, 0x4d, + 0xc6, 0x91, 0xf1, 0x41, 0xcc, 0x22, 0x1d, 0xfb, 0x2c, 0x34, 0xbf, 0xc5, 0x2d, 0x22, 0xc0, 0x58, + 0xea, 0xb9, 0x1e, 0xd9, 0x80, 0x3a, 0x0b, 0xdb, 0x6f, 0xf3, 0xd4, 0xa3, 0xd8, 0x6d, 0x91, 0xf1, + 0x36, 0x8c, 0xb9, 0xd6, 0xa7, 0x07, 0xa2, 0xf9, 0x67, 0xdc, 0xd3, 0x04, 0x80, 0xc1, 0xf7, 0xe0, + 0xb1, 0xc8, 0x65, 0x62, 0x00, 0xb2, 0x7f, 0xce, 0xc8, 0x66, 0x22, 0x96, 0x0a, 0x56, 0x12, 0xce, + 0x4a, 0xf9, 0x2f, 0x78, 0x49, 0x40, 0x21, 0xae, 0x5d, 0x7c, 0xa3, 0xe0, 0x9a, 0x47, 0x67, 0xb3, + 0xda, 0xbf, 0xe4, 0x56, 0xa3, 0x58, 0xc9, 0x6a, 0xfb, 0x30, 0xc3, 0x18, 0xcf, 0xe6, 0xd7, 0xaf, + 0xf3, 0xc2, 0x4a, 0xd1, 0x07, 0xb2, 0x77, 0x3f, 0x05, 0xb3, 0xbe, 0x39, 0x79, 0x47, 0xea, 0x56, + 0x9b, 0x66, 0x6b, 0x00, 0xe6, 0xdf, 0x61, 0xcc, 0xbc, 0xe2, 0xfb, 0x2d, 0xad, 0xbb, 0x6d, 0xb6, + 0x30, 0xf9, 0xcb, 0x90, 0xe5, 0xe4, 0x1d, 0xbb, 0x8d, 0x6a, 0xce, 0xb1, 0x6d, 0x7d, 0x1a, 0xd5, + 0x07, 0xa0, 0xfe, 0x46, 0xc8, 0x55, 0x07, 0x02, 0x1c, 0x33, 0x6f, 0x82, 0xe6, 0xf7, 0x2a, 0x55, + 0xab, 0xd9, 0x72, 0xda, 0x5e, 0x0c, 0xe3, 0xbf, 0xe2, 0x9e, 0xf2, 0x71, 0x9b, 0x04, 0x96, 0x2f, + 0xc3, 0x04, 0x39, 0x1c, 0x34, 0x24, 0x7f, 0x97, 0x11, 0x8d, 0x07, 0x28, 0x56, 0x38, 0x6a, 0x4e, + 0xb3, 0x65, 0xb6, 0x07, 0xa9, 0x7f, 0xff, 0x9a, 0x17, 0x0e, 0x06, 0x61, 0x85, 0xc3, 0x3b, 0x6d, + 0x21, 0xbc, 0xda, 0x0f, 0xc0, 0xf0, 0x4d, 0x5e, 0x38, 0x38, 0x86, 0x51, 0xf0, 0x86, 0x61, 0x00, + 0x8a, 0x7f, 0xc3, 0x29, 0x38, 0x06, 0x53, 0x7c, 0x22, 0x58, 0x68, 0xdb, 0xe8, 0xd8, 0x72, 0xbd, + 0x36, 0xed, 0x83, 0xfb, 0x53, 0xfd, 0xde, 0x0f, 0xe4, 0x26, 0xcc, 0x10, 0xa0, 0xf9, 0xbb, 0x30, + 0x19, 0x6a, 0x31, 0xf4, 0xb8, 0x77, 0x16, 0xb2, 0x7f, 0xe5, 0x47, 0xac, 0x18, 0xc9, 0x1d, 0x46, + 0x7e, 0x0b, 0xfb, 0x5d, 0xee, 0x03, 0xe2, 0xc9, 0x3e, 0xf3, 0x23, 0xdf, 0xf5, 0x52, 0x1b, 0x90, + 0xdf, 0x80, 0x71, 0xa9, 0x07, 0x88, 0xa7, 0xfa, 0xab, 0x8c, 0x2a, 0x23, 0xb6, 0x00, 0xf9, 0x35, + 0x48, 0xe2, 0xf5, 0x3c, 0x1e, 0xfe, 0xd7, 0x18, 0x9c, 0x88, 0xe7, 0x9f, 0x83, 0x14, 0x5f, 0xc7, + 0xe3, 0xa1, 0xbf, 0xcc, 0xa0, 0x3e, 0x04, 0xc3, 0xf9, 0x1a, 0x1e, 0x0f, 0xff, 0xeb, 0x1c, 0xce, + 0x21, 0x18, 0x3e, 0xb8, 0x09, 0xdf, 0xfe, 0x9b, 0x49, 0x56, 0x87, 0xb9, 0xed, 0x6e, 0xc3, 0x28, + 0x5b, 0xbc, 0xe3, 0xd1, 0xbf, 0xc2, 0x4e, 0xce, 0x11, 0xf9, 0x1b, 0x30, 0x3c, 0xa0, 0xc1, 0xff, + 0x16, 0x83, 0x52, 0xf9, 0x7c, 0x09, 0xd2, 0xc2, 0x82, 0x1d, 0x0f, 0xff, 0xdb, 0x0c, 0x2e, 0xa2, + 0xb0, 0xea, 0x6c, 0xc1, 0x8e, 0x27, 0xf8, 0x3b, 0x5c, 0x75, 0x86, 0xc0, 0x66, 0xe3, 0x6b, 0x75, + 0x3c, 0xfa, 0xef, 0x72, 0xab, 0x73, 0x48, 0xfe, 0x05, 0x18, 0xf3, 0xeb, 0x6f, 0x3c, 0xfe, 0xef, + 0x31, 0x7c, 0x80, 0xc1, 0x16, 0x10, 0xea, 0x7f, 0x3c, 0xc5, 0xdf, 0xe7, 0x16, 0x10, 0x50, 0x38, + 0x8d, 0xc2, 0x6b, 0x7a, 0x3c, 0xd3, 0xaf, 0xf2, 0x34, 0x0a, 0x2d, 0xe9, 0xd8, 0x9b, 0xa4, 0x0c, + 0xc6, 0x53, 0xfc, 0x03, 0xee, 0x4d, 0x22, 0x8f, 0xd5, 0x08, 0x2f, 0x92, 0xf1, 0x1c, 0xff, 0x88, + 0xab, 0x11, 0x5a, 0x23, 0xf3, 0xbb, 0xa0, 0x77, 0x2f, 0x90, 0xf1, 0x7c, 0x9f, 0x63, 0x7c, 0x53, + 0x5d, 0xeb, 0x63, 0xfe, 0x25, 0x98, 0x89, 0x5e, 0x1c, 0xe3, 0x59, 0x7f, 0xed, 0x47, 0xa1, 0xdb, + 0x19, 0x71, 0x6d, 0xcc, 0xef, 0x07, 0x55, 0x56, 0x5c, 0x18, 0xe3, 0x69, 0x3f, 0xff, 0x23, 0xb9, + 0xd0, 0x8a, 0xeb, 0x62, 0xbe, 0x00, 0x10, 0xac, 0x49, 0xf1, 0x5c, 0x5f, 0x60, 0x5c, 0x02, 0x08, + 0xa7, 0x06, 0x5b, 0x92, 0xe2, 0xf1, 0x5f, 0xe4, 0xa9, 0xc1, 0x10, 0x38, 0x35, 0xf8, 0x6a, 0x14, + 0x8f, 0xfe, 0x12, 0x4f, 0x0d, 0x0e, 0xc9, 0xdf, 0x86, 0x94, 0xdd, 0x69, 0x34, 0x70, 0x6c, 0xe9, + 0xfd, 0x5f, 0x23, 0xca, 0xfe, 0xcf, 0x1f, 0x33, 0x30, 0x07, 0xe4, 0xd7, 0x60, 0x18, 0x35, 0x0f, + 0x51, 0x3d, 0x0e, 0xf9, 0xbf, 0x7e, 0xcc, 0xeb, 0x09, 0x96, 0xce, 0xbf, 0x00, 0x40, 0x6f, 0xa6, + 0xc9, 0x53, 0xa2, 0x18, 0xec, 0xff, 0xfe, 0x31, 0x7b, 0x43, 0x21, 0x80, 0x04, 0x04, 0xf4, 0x7d, + 0x87, 0xfe, 0x04, 0x3f, 0x90, 0x09, 0xc8, 0x0d, 0xf8, 0x2d, 0x18, 0x7d, 0xc5, 0x75, 0x6c, 0xcf, + 0x3c, 0x8e, 0x43, 0xff, 0x11, 0x43, 0x73, 0x79, 0x6c, 0xb0, 0xa6, 0xd3, 0x46, 0x9e, 0x79, 0xec, + 0xc6, 0x61, 0xff, 0x0f, 0xc3, 0xfa, 0x00, 0x0c, 0xae, 0x99, 0xae, 0x37, 0xc8, 0x75, 0xff, 0x5f, + 0x0e, 0xe6, 0x00, 0xac, 0x34, 0xfe, 0xfc, 0x2a, 0x3a, 0x8d, 0xc3, 0xfe, 0x90, 0x2b, 0xcd, 0xe4, + 0xf3, 0xcf, 0xc1, 0x18, 0xfe, 0x48, 0xdf, 0xda, 0x89, 0x01, 0xff, 0x31, 0x03, 0x07, 0x08, 0x7c, + 0x66, 0xd7, 0xab, 0x7b, 0x56, 0xbc, 0xb1, 0xff, 0x1f, 0xf3, 0x34, 0x97, 0xcf, 0x17, 0x20, 0xed, + 0x7a, 0xf5, 0x7a, 0x87, 0x75, 0x34, 0x31, 0xf0, 0x3f, 0xf9, 0xb1, 0x7f, 0x93, 0xeb, 0x63, 0x8a, + 0x17, 0xa3, 0x37, 0xeb, 0xe0, 0x8e, 0x73, 0xc7, 0xa1, 0xdb, 0x74, 0xf0, 0xbd, 0x06, 0xdc, 0xe8, + 0xb9, 0xeb, 0x86, 0x17, 0x91, 0x2b, 0x35, 0xa7, 0x79, 0xe8, 0xb8, 0x57, 0x0e, 0x1d, 0xef, 0xe4, + 0x8a, 0x77, 0x82, 0xf0, 0x18, 0xdb, 0x7f, 0x4b, 0xe2, 0xcf, 0xb3, 0x67, 0xdb, 0xb4, 0x23, 0xcf, + 0x63, 0x2b, 0x16, 0xd6, 0xbb, 0x42, 0xb6, 0xc4, 0xf5, 0xf3, 0x30, 0x42, 0xae, 0xe4, 0x2a, 0x79, + 0xec, 0xa4, 0x14, 0x93, 0xf7, 0xdf, 0x9d, 0x1f, 0x32, 0xd8, 0x98, 0x3f, 0xbb, 0x42, 0xf6, 0x2c, + 0x13, 0xd2, 0xec, 0x8a, 0x3f, 0x7b, 0x8d, 0x6e, 0x5b, 0x4a, 0xb3, 0xd7, 0xfc, 0xd9, 0x55, 0xb2, + 0x81, 0xa9, 0x4a, 0xb3, 0xab, 0xfe, 0xec, 0x1a, 0xd9, 0xa4, 0x1f, 0x97, 0x66, 0xd7, 0xfc, 0xd9, + 0xeb, 0x64, 0x6b, 0x3e, 0x29, 0xcd, 0x5e, 0xf7, 0x67, 0x6f, 0x90, 0x5d, 0xf9, 0x29, 0x69, 0xf6, + 0x86, 0x3f, 0x7b, 0x93, 0xec, 0xc6, 0xeb, 0xd2, 0xec, 0x4d, 0x7f, 0xf6, 0x16, 0x79, 0xc5, 0x64, + 0x54, 0x9a, 0xbd, 0xa5, 0xcf, 0xc1, 0x28, 0xbd, 0xf2, 0x65, 0xf2, 0xe8, 0x76, 0x92, 0x4d, 0xf3, + 0xc1, 0x60, 0xfe, 0x2a, 0x79, 0x9d, 0x64, 0x44, 0x9e, 0xbf, 0x1a, 0xcc, 0xaf, 0x90, 0x17, 0xab, + 0x35, 0x79, 0x7e, 0x25, 0x98, 0xbf, 0x96, 0x1d, 0x27, 0xaf, 0xd4, 0x48, 0xf3, 0xd7, 0x82, 0xf9, + 0xd5, 0xec, 0x04, 0x0e, 0x66, 0x79, 0x7e, 0x35, 0x98, 0x5f, 0xcb, 0x4e, 0x5e, 0x50, 0x16, 0x32, + 0xf2, 0xfc, 0x5a, 0xee, 0x97, 0x88, 0x7b, 0xed, 0xc0, 0xbd, 0x33, 0xb2, 0x7b, 0x7d, 0xc7, 0xce, + 0xc8, 0x8e, 0xf5, 0x5d, 0x3a, 0x23, 0xbb, 0xd4, 0x77, 0xe6, 0x8c, 0xec, 0x4c, 0xdf, 0x8d, 0x33, + 0xb2, 0x1b, 0x7d, 0x07, 0xce, 0xc8, 0x0e, 0xf4, 0x5d, 0x37, 0x23, 0xbb, 0xce, 0x77, 0xda, 0x8c, + 0xec, 0x34, 0xdf, 0x5d, 0x33, 0xb2, 0xbb, 0x7c, 0x47, 0x65, 0x43, 0x8e, 0x0a, 0x5c, 0x94, 0x0d, + 0xb9, 0x28, 0x70, 0x4e, 0x36, 0xe4, 0x9c, 0xc0, 0x2d, 0xd9, 0x90, 0x5b, 0x02, 0x87, 0x64, 0x43, + 0x0e, 0x09, 0x5c, 0x91, 0x0d, 0xb9, 0x22, 0x70, 0x02, 0xcb, 0x31, 0x03, 0xb5, 0x22, 0x72, 0x4c, + 0xed, 0x9b, 0x63, 0x6a, 0xdf, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xda, 0x37, 0xc7, 0xd4, 0xbe, 0x39, + 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9f, 0x63, 0x6a, 0x4c, + 0x8e, 0xa9, 0x31, 0x39, 0xa6, 0xc6, 0xe4, 0x98, 0x1a, 0x93, 0x63, 0x6a, 0x4c, 0x8e, 0xa9, 0x3d, + 0x73, 0x2c, 0x70, 0xef, 0x8c, 0xec, 0xde, 0xc8, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x23, 0xc7, + 0xd4, 0x1e, 0x39, 0xa6, 0xf6, 0xc8, 0x31, 0xb5, 0x47, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, 0x91, + 0x63, 0x6a, 0xaf, 0x1c, 0x53, 0x7b, 0xe6, 0x98, 0xda, 0x33, 0xc7, 0xd4, 0x9e, 0x39, 0xa6, 0xf6, + 0xcc, 0x31, 0xb5, 0x67, 0x8e, 0xa9, 0x62, 0x8e, 0xfd, 0x5b, 0x15, 0x74, 0x9a, 0x63, 0xbb, 0xe4, + 0xe5, 0x1f, 0xe6, 0x8a, 0xb9, 0x50, 0xa6, 0x8d, 0x60, 0xd7, 0x69, 0x81, 0x4b, 0xe6, 0x42, 0xb9, + 0x26, 0xcf, 0xaf, 0xf8, 0xf3, 0x3c, 0xdb, 0xe4, 0xf9, 0x6b, 0xfe, 0x3c, 0xcf, 0x37, 0x79, 0x7e, + 0xd5, 0x9f, 0xe7, 0x19, 0x27, 0xcf, 0xaf, 0xf9, 0xf3, 0x3c, 0xe7, 0xe4, 0xf9, 0xeb, 0xfe, 0x3c, + 0xcf, 0x3a, 0x79, 0xfe, 0x86, 0x3f, 0xcf, 0xf3, 0x4e, 0x9e, 0xbf, 0xe9, 0xcf, 0xf3, 0xcc, 0x93, + 0xe7, 0x6f, 0xe9, 0x17, 0xc2, 0xb9, 0xc7, 0x05, 0x7c, 0xd7, 0x5e, 0x08, 0x67, 0x5f, 0x48, 0xe2, + 0x6a, 0x20, 0xc1, 0xf3, 0x2f, 0x24, 0xb1, 0x12, 0x48, 0xf0, 0x0c, 0x0c, 0x49, 0x5c, 0xcb, 0x7d, + 0x96, 0xb8, 0xcf, 0x0e, 0xbb, 0x6f, 0x36, 0xe4, 0xbe, 0x84, 0xe0, 0xba, 0xd9, 0x90, 0xeb, 0x12, + 0x82, 0xdb, 0x66, 0x43, 0x6e, 0x4b, 0x08, 0x2e, 0x9b, 0x0d, 0xb9, 0x2c, 0x21, 0xb8, 0x6b, 0x36, + 0xe4, 0xae, 0x84, 0xe0, 0xaa, 0xd9, 0x90, 0xab, 0x12, 0x82, 0x9b, 0x66, 0x43, 0x6e, 0x4a, 0x08, + 0x2e, 0x9a, 0x0d, 0xb9, 0x28, 0x21, 0xb8, 0x67, 0x36, 0xe4, 0x9e, 0x84, 0xe0, 0x9a, 0xf3, 0x61, + 0xd7, 0x24, 0x44, 0xb7, 0x9c, 0x0f, 0xbb, 0x25, 0x21, 0xba, 0xe4, 0x7c, 0xd8, 0x25, 0x09, 0xd1, + 0x1d, 0xe7, 0xc3, 0xee, 0x48, 0x88, 0xae, 0xf8, 0xf3, 0x04, 0xef, 0x08, 0xf7, 0xbc, 0x76, 0xa7, + 0xe6, 0xbd, 0xaf, 0x8e, 0x70, 0x59, 0x6a, 0x1f, 0xd2, 0x2b, 0xfa, 0x12, 0x69, 0x58, 0xc5, 0x8e, + 0x33, 0xb4, 0x82, 0x2d, 0x4b, 0x8d, 0x85, 0x80, 0xb0, 0xa3, 0x11, 0xab, 0xef, 0xab, 0x37, 0x5c, + 0x96, 0xda, 0x8c, 0x78, 0xfd, 0x6e, 0x7e, 0xe8, 0x1d, 0xdb, 0xdb, 0x09, 0xde, 0xb1, 0x31, 0xf3, + 0x9f, 0xb5, 0x63, 0x5b, 0x8c, 0x37, 0xb9, 0x6f, 0xec, 0xc5, 0x78, 0x63, 0x77, 0xad, 0x3a, 0x83, + 0x76, 0x70, 0x8b, 0xf1, 0xa6, 0xf5, 0x8d, 0xfa, 0xc1, 0xf6, 0x5b, 0x2c, 0x82, 0x0d, 0xd4, 0x8a, + 0x88, 0xe0, 0xb3, 0xf6, 0x5b, 0xcb, 0x52, 0x29, 0x39, 0x6b, 0x04, 0xab, 0x67, 0x8e, 0xe0, 0xb3, + 0x76, 0x5e, 0xcb, 0x52, 0x79, 0x39, 0x73, 0x04, 0x7f, 0x08, 0xfd, 0x10, 0x8b, 0xe0, 0xc0, 0xfc, + 0x67, 0xed, 0x87, 0x16, 0xe3, 0x4d, 0x1e, 0x19, 0xc1, 0xea, 0x19, 0x22, 0x78, 0x90, 0xfe, 0x68, + 0x31, 0xde, 0xb4, 0xd1, 0x11, 0xfc, 0xbe, 0xbb, 0x99, 0x2f, 0x2b, 0x30, 0x55, 0xb1, 0xea, 0xe5, + 0xe6, 0x21, 0xaa, 0xd7, 0x51, 0x9d, 0xd9, 0x71, 0x59, 0xaa, 0x04, 0x3d, 0x5c, 0xfd, 0xce, 0xbb, + 0xf3, 0x81, 0x85, 0xd7, 0x20, 0x45, 0x6d, 0xba, 0xbc, 0x9c, 0xbd, 0xaf, 0xc4, 0x54, 0x38, 0x5f, + 0x54, 0xbf, 0xc8, 0x61, 0x57, 0x97, 0xb3, 0xff, 0x45, 0x11, 0xaa, 0x9c, 0x3f, 0x9c, 0xfb, 0x55, + 0xa2, 0xa1, 0xfd, 0xbe, 0x35, 0xbc, 0x32, 0x90, 0x86, 0x82, 0x6e, 0x8f, 0x77, 0xe9, 0x26, 0x68, + 0xd5, 0x81, 0xc9, 0x8a, 0x55, 0xaf, 0x90, 0xaf, 0xf4, 0x0e, 0xa2, 0x12, 0x95, 0x09, 0xd5, 0x83, + 0x65, 0x29, 0x2c, 0x45, 0x84, 0x1f, 0xd2, 0x72, 0x8d, 0xc8, 0x59, 0xf8, 0xb4, 0xb6, 0x74, 0xda, + 0xc5, 0x5e, 0xa7, 0x0d, 0x2a, 0xbb, 0x7f, 0xc2, 0xc5, 0x5e, 0x27, 0x0c, 0x72, 0xc8, 0x3f, 0xd5, + 0x1b, 0x7c, 0x71, 0xa6, 0x6f, 0xe1, 0xe8, 0xe7, 0x21, 0xb1, 0x49, 0xdf, 0x10, 0xce, 0x14, 0x33, + 0x58, 0xa9, 0x6f, 0xbf, 0x3b, 0x9f, 0x3c, 0xe8, 0x58, 0x75, 0x23, 0xb1, 0x59, 0xd7, 0xef, 0xc2, + 0xf0, 0x27, 0xd9, 0x17, 0xe3, 0xb0, 0xc0, 0x2a, 0x13, 0xf8, 0x68, 0xcc, 0x16, 0x13, 0xa1, 0x5e, + 0x3a, 0xb0, 0x6c, 0xef, 0xea, 0xca, 0x4d, 0x83, 0x52, 0xe4, 0xfe, 0x22, 0x00, 0x3d, 0xe7, 0xba, + 0xe9, 0x9e, 0xe8, 0x15, 0xce, 0x4c, 0x4f, 0x7d, 0xf3, 0xdb, 0xef, 0xce, 0xaf, 0x0e, 0xc2, 0xfa, + 0x6c, 0xdd, 0x74, 0x4f, 0x9e, 0xf5, 0x4e, 0x5b, 0x68, 0xa9, 0x78, 0xea, 0x21, 0x97, 0xb3, 0xb7, + 0xf8, 0xaa, 0xc7, 0xae, 0x2b, 0x2b, 0x5c, 0x57, 0x4a, 0xba, 0xa6, 0x0d, 0xf9, 0x9a, 0x96, 0x1f, + 0xf6, 0x7a, 0xde, 0xe0, 0x8b, 0x44, 0xc8, 0x92, 0x6a, 0x9c, 0x25, 0xd5, 0xf7, 0x6b, 0xc9, 0x16, + 0xaf, 0x8f, 0xa1, 0x6b, 0x55, 0xfb, 0x5d, 0xab, 0xfa, 0x7e, 0xae, 0xf5, 0x4f, 0x69, 0xb6, 0xfa, + 0xf9, 0x74, 0x60, 0xd3, 0xb7, 0x13, 0x7f, 0xb6, 0xf6, 0x82, 0x3e, 0xd0, 0x2e, 0x20, 0x9f, 0xbc, + 0xff, 0xd6, 0xbc, 0x92, 0xfb, 0x72, 0x82, 0x5f, 0x39, 0x4d, 0xa4, 0x87, 0xbb, 0xf2, 0x9f, 0x95, + 0x9e, 0xea, 0xc3, 0xb0, 0xd0, 0x97, 0x14, 0x98, 0xe9, 0xaa, 0xe4, 0xd4, 0x4c, 0x1f, 0x6c, 0x39, + 0xb7, 0xcf, 0x5a, 0xce, 0x99, 0x82, 0xbf, 0xab, 0xc0, 0xb9, 0x50, 0x79, 0xa5, 0xea, 0x5d, 0x09, + 0xa9, 0xf7, 0x68, 0xf7, 0x99, 0x88, 0xa0, 0xa0, 0x9d, 0xe8, 0xde, 0x10, 0x40, 0x60, 0xf6, 0xfd, + 0xbe, 0x1a, 0xf2, 0xfb, 0x79, 0x1f, 0x10, 0x61, 0x2e, 0x1e, 0x01, 0x4c, 0x6d, 0x07, 0x92, 0xfb, + 0x6d, 0x84, 0xf4, 0x39, 0x48, 0xec, 0xb4, 0x99, 0x86, 0x13, 0x14, 0xbf, 0xd3, 0x2e, 0xb6, 0x4d, + 0xbb, 0x76, 0x62, 0x24, 0x76, 0xda, 0xfa, 0x45, 0x50, 0x0b, 0xec, 0xa7, 0x07, 0xd2, 0x2b, 0x93, + 0x54, 0xa0, 0x60, 0xd7, 0x99, 0x04, 0x9e, 0xd3, 0xe7, 0x20, 0xb9, 0x85, 0xcc, 0x23, 0xa6, 0x04, + 0x50, 0x19, 0x3c, 0x62, 0x90, 0x71, 0x76, 0xc2, 0x97, 0x21, 0xc5, 0x89, 0xf5, 0x4b, 0x18, 0x71, + 0xe4, 0xb1, 0xd3, 0x32, 0x04, 0x56, 0x87, 0xad, 0x5c, 0x64, 0x56, 0xbf, 0x0c, 0xc3, 0x86, 0x75, + 0x7c, 0xe2, 0xb1, 0x93, 0x77, 0x8b, 0xd1, 0xe9, 0xdc, 0x3d, 0x18, 0xf3, 0x35, 0xfa, 0x80, 0xa9, + 0xd7, 0xe9, 0xa5, 0xe9, 0xb3, 0xe2, 0x7a, 0xc2, 0xf7, 0x2d, 0xe9, 0x90, 0x7e, 0x01, 0x52, 0x7b, + 0x5e, 0x3b, 0x28, 0xfa, 0xbc, 0x23, 0xf5, 0x47, 0x73, 0xbf, 0xa4, 0x40, 0x6a, 0x1d, 0xa1, 0x16, + 0x31, 0xf8, 0x53, 0x90, 0x5c, 0x77, 0x5e, 0xb7, 0x99, 0x82, 0x53, 0xcc, 0xa2, 0x78, 0x9a, 0xd9, + 0x94, 0x4c, 0xeb, 0x4f, 0x89, 0x76, 0x9f, 0xf6, 0xed, 0x2e, 0xc8, 0x11, 0xdb, 0xe7, 0x24, 0xdb, + 0x33, 0x07, 0x62, 0xa1, 0x2e, 0xfb, 0xdf, 0x80, 0xb4, 0x70, 0x16, 0x7d, 0x81, 0xa9, 0x91, 0x08, + 0x03, 0x45, 0x5b, 0x61, 0x89, 0x1c, 0x82, 0x71, 0xe9, 0xc4, 0x18, 0x2a, 0x98, 0xb8, 0x07, 0x94, + 0x98, 0x79, 0x51, 0x36, 0x73, 0xb4, 0x28, 0x33, 0xf5, 0x32, 0xb5, 0x11, 0x31, 0xf7, 0x25, 0x1a, + 0x9c, 0xbd, 0x9d, 0x88, 0x3f, 0xe7, 0x86, 0x41, 0xad, 0x58, 0x8d, 0xdc, 0x73, 0x00, 0x34, 0xe5, + 0xcb, 0x76, 0xa7, 0x19, 0xca, 0xba, 0x09, 0x6e, 0xe0, 0xfd, 0x13, 0xb4, 0x8f, 0x5c, 0x22, 0x22, + 0xf7, 0x53, 0xb8, 0xc0, 0x00, 0x4d, 0x31, 0x82, 0x7f, 0x26, 0x16, 0x1f, 0xd9, 0x89, 0x61, 0xd1, + 0x2c, 0x15, 0xbd, 0x87, 0xbc, 0x82, 0xed, 0x78, 0x27, 0xa8, 0x1d, 0x42, 0xac, 0xe8, 0xd7, 0xa4, + 0x84, 0x9d, 0x58, 0x79, 0xdc, 0x47, 0xf4, 0x04, 0x5d, 0xcb, 0x7d, 0x9d, 0x28, 0x88, 0x5b, 0x81, + 0xae, 0x0b, 0x54, 0x07, 0xb8, 0x40, 0xfd, 0xba, 0xd4, 0xbf, 0xf5, 0x51, 0x33, 0x74, 0x6b, 0x79, + 0x4b, 0xba, 0xcf, 0xe9, 0xaf, 0xac, 0x7c, 0x8f, 0xc9, 0x6d, 0xca, 0x55, 0x7e, 0x26, 0x56, 0xe5, + 0x1e, 0xdd, 0xed, 0x59, 0x6d, 0xaa, 0x0e, 0x6a, 0xd3, 0xdf, 0xf7, 0x3b, 0x0e, 0xfa, 0x23, 0x0e, + 0xe4, 0x37, 0x43, 0xf4, 0x8f, 0xc6, 0xfa, 0x3e, 0xaf, 0x94, 0x7c, 0x55, 0x57, 0x07, 0x75, 0x7f, + 0x3e, 0x51, 0x2c, 0xfa, 0xea, 0xde, 0x38, 0x43, 0x08, 0xe4, 0x13, 0xa5, 0x92, 0x5f, 0xb6, 0x53, + 0x9f, 0x7d, 0x6b, 0x5e, 0xf9, 0xda, 0x5b, 0xf3, 0x43, 0xb9, 0xdf, 0x54, 0x60, 0x8a, 0x49, 0x0a, + 0x81, 0xfb, 0x6c, 0x48, 0xf9, 0x47, 0x78, 0xcd, 0x88, 0xb2, 0xc0, 0x4f, 0x2c, 0x78, 0xbf, 0xa5, + 0x40, 0xb6, 0x4b, 0x57, 0x6e, 0xef, 0xe5, 0x81, 0x54, 0xce, 0x2b, 0xe5, 0x9f, 0xbe, 0xcd, 0xef, + 0xc1, 0xf0, 0xbe, 0xd5, 0x44, 0x6d, 0xbc, 0x12, 0xe0, 0x0f, 0x54, 0x65, 0xfe, 0x30, 0x87, 0x0e, + 0xf1, 0x39, 0xaa, 0x9c, 0x34, 0xb7, 0xa2, 0x67, 0x21, 0xb9, 0x6e, 0x7a, 0x26, 0xd1, 0x20, 0xe3, + 0xd7, 0x57, 0xd3, 0x33, 0x73, 0xd7, 0x20, 0xb3, 0x7d, 0x4a, 0x5e, 0xa1, 0xa9, 0x93, 0xd7, 0x43, + 0xe4, 0xee, 0x8f, 0xf7, 0xab, 0x57, 0x17, 0x87, 0x53, 0x75, 0xed, 0xbe, 0x92, 0x4f, 0x12, 0x7d, + 0x5e, 0x83, 0x89, 0x1d, 0xac, 0x36, 0xc1, 0x11, 0xd8, 0x05, 0x50, 0xb6, 0xe5, 0x46, 0x48, 0x64, + 0x35, 0x94, 0xed, 0x50, 0xfb, 0xa8, 0xfa, 0xe6, 0x09, 0xb5, 0x6d, 0xaa, 0xdf, 0xb6, 0x2d, 0x26, + 0x53, 0x13, 0xda, 0xd4, 0x62, 0x32, 0x05, 0xda, 0x38, 0x3b, 0xef, 0x7f, 0x52, 0x41, 0xa3, 0xad, + 0xce, 0x3a, 0x3a, 0xb2, 0x6c, 0xcb, 0xeb, 0xee, 0x57, 0x7d, 0x8d, 0xf5, 0x17, 0x60, 0x0c, 0x9b, + 0x74, 0x83, 0xfd, 0xf4, 0x16, 0x36, 0xfd, 0x45, 0xd6, 0xa2, 0x84, 0x28, 0xd8, 0x00, 0x09, 0x9d, + 0x00, 0xa3, 0x6f, 0x80, 0x5a, 0xa9, 0x6c, 0xb3, 0xc5, 0x6d, 0xb5, 0x2f, 0x94, 0xbd, 0x81, 0xc3, + 0x8e, 0xd8, 0x98, 0x7b, 0x6c, 0x60, 0x02, 0x7d, 0x15, 0x12, 0x95, 0x6d, 0xd6, 0xf0, 0x5e, 0x1a, + 0x84, 0xc6, 0x48, 0x54, 0xb6, 0x67, 0xff, 0x9d, 0x02, 0xe3, 0xd2, 0xa8, 0x9e, 0x83, 0x0c, 0x1d, + 0x10, 0x2e, 0x77, 0xc4, 0x90, 0xc6, 0xb8, 0xce, 0x89, 0xf7, 0xa9, 0xf3, 0x6c, 0x01, 0x26, 0x43, + 0xe3, 0xfa, 0x12, 0xe8, 0xe2, 0x10, 0x53, 0x82, 0xfe, 0x6c, 0x51, 0xc4, 0x4c, 0xee, 0x09, 0x80, + 0xc0, 0xae, 0xfe, 0xaf, 0xed, 0x54, 0xca, 0x7b, 0xfb, 0xe5, 0x75, 0x4d, 0xc9, 0x7d, 0x53, 0x81, + 0x34, 0x6b, 0x5b, 0x6b, 0x4e, 0x0b, 0xe9, 0x45, 0x50, 0x0a, 0x2c, 0x82, 0x1e, 0x4e, 0x6f, 0xa5, + 0xa0, 0x5f, 0x01, 0xa5, 0x38, 0xb8, 0xab, 0x95, 0xa2, 0xbe, 0x02, 0x4a, 0x89, 0x39, 0x78, 0x30, + 0xcf, 0x28, 0xa5, 0xdc, 0x1f, 0xab, 0x30, 0x2d, 0xb6, 0xd1, 0xbc, 0x9e, 0x5c, 0x94, 0xef, 0x9b, + 0xf2, 0x63, 0x57, 0x57, 0xae, 0xad, 0x2e, 0xe1, 0x7f, 0xfc, 0x90, 0xbc, 0x28, 0xdf, 0x42, 0x75, + 0x8b, 0x74, 0xbd, 0x26, 0x92, 0x4f, 0x0a, 0xb3, 0x5d, 0xaf, 0x89, 0x48, 0xb3, 0x5d, 0xaf, 0x89, + 0x48, 0xb3, 0x5d, 0xaf, 0x89, 0x48, 0xb3, 0x5d, 0x8f, 0x02, 0xa4, 0xd9, 0xae, 0xd7, 0x44, 0xa4, + 0xd9, 0xae, 0xd7, 0x44, 0xa4, 0xd9, 0xee, 0xd7, 0x44, 0xd8, 0x74, 0xcf, 0xd7, 0x44, 0xe4, 0xf9, + 0xee, 0xd7, 0x44, 0xe4, 0xf9, 0xee, 0xd7, 0x44, 0xf2, 0x49, 0xaf, 0xdd, 0x41, 0xbd, 0x1f, 0x3a, + 0xc8, 0xf8, 0x7e, 0xf7, 0x80, 0x41, 0x01, 0xde, 0x81, 0x49, 0xba, 0x1f, 0x51, 0x72, 0x6c, 0xcf, + 0xb4, 0x6c, 0xd4, 0xd6, 0x3f, 0x06, 0x19, 0x3a, 0x44, 0xef, 0x72, 0xa2, 0xee, 0x02, 0xe9, 0x3c, + 0x2b, 0xb7, 0x92, 0x74, 0xee, 0xcf, 0x93, 0x30, 0x43, 0x07, 0x2a, 0x66, 0x13, 0x49, 0x2f, 0x19, + 0x5d, 0x0e, 0x3d, 0x52, 0x9a, 0xc0, 0xf0, 0x07, 0xef, 0xce, 0xd3, 0xd1, 0x82, 0x1f, 0x4c, 0x97, + 0x43, 0x0f, 0x97, 0x64, 0xb9, 0x60, 0xfd, 0xb9, 0x1c, 0x7a, 0xf1, 0x48, 0x96, 0xf3, 0x97, 0x1b, + 0x5f, 0x8e, 0xbf, 0x82, 0x24, 0xcb, 0xad, 0xfb, 0x51, 0x76, 0x39, 0xf4, 0x32, 0x92, 0x2c, 0x57, + 0xf6, 0xe3, 0xed, 0x72, 0xe8, 0xd1, 0x93, 0x2c, 0xb7, 0xe1, 0x47, 0xde, 0xe5, 0xd0, 0x43, 0x28, + 0x59, 0xee, 0x8e, 0x1f, 0x83, 0x97, 0x43, 0xaf, 0x2a, 0xc9, 0x72, 0x2f, 0xfa, 0xd1, 0x78, 0x39, + 0xf4, 0xd2, 0x92, 0x2c, 0xb7, 0xe9, 0xc7, 0xe5, 0x42, 0xf8, 0xf5, 0x25, 0x59, 0xf0, 0x6e, 0x10, + 0xa1, 0x0b, 0xe1, 0x17, 0x99, 0x64, 0xc9, 0x8f, 0x07, 0xb1, 0xba, 0x10, 0x7e, 0xa5, 0x49, 0x96, + 0xdc, 0x0a, 0xa2, 0x76, 0x21, 0xfc, 0xa8, 0x4c, 0x96, 0xdc, 0x0e, 0xe2, 0x77, 0x21, 0xfc, 0xd0, + 0x4c, 0x96, 0xac, 0x04, 0x91, 0xbc, 0x10, 0x7e, 0x7c, 0x26, 0x4b, 0xee, 0x04, 0x7b, 0xe8, 0x7f, + 0x10, 0x0a, 0x3f, 0xe1, 0x25, 0xa8, 0x5c, 0x28, 0xfc, 0x20, 0x22, 0xf4, 0x72, 0xa1, 0xd0, 0x83, + 0x88, 0xb0, 0xcb, 0x85, 0xc2, 0x0e, 0x22, 0x42, 0x2e, 0x17, 0x0a, 0x39, 0x88, 0x08, 0xb7, 0x5c, + 0x28, 0xdc, 0x20, 0x22, 0xd4, 0x72, 0xa1, 0x50, 0x83, 0x88, 0x30, 0xcb, 0x85, 0xc2, 0x0c, 0x22, + 0x42, 0x2c, 0x17, 0x0a, 0x31, 0x88, 0x08, 0xaf, 0x5c, 0x28, 0xbc, 0x20, 0x22, 0xb4, 0x2e, 0x85, + 0x43, 0x0b, 0xa2, 0xc2, 0xea, 0x52, 0x38, 0xac, 0x20, 0x2a, 0xa4, 0x9e, 0x0c, 0x87, 0xd4, 0xd8, + 0x83, 0x77, 0xe7, 0x87, 0xf1, 0x90, 0x10, 0x4d, 0x97, 0xc2, 0xd1, 0x04, 0x51, 0x91, 0x74, 0x29, + 0x1c, 0x49, 0x10, 0x15, 0x45, 0x97, 0xc2, 0x51, 0x04, 0x51, 0x11, 0xf4, 0x76, 0x38, 0x82, 0x82, + 0x57, 0x7c, 0x72, 0xa1, 0x27, 0x8a, 0x71, 0x11, 0xa4, 0x0e, 0x10, 0x41, 0xea, 0x00, 0x11, 0xa4, + 0x0e, 0x10, 0x41, 0xea, 0x00, 0x11, 0xa4, 0x0e, 0x10, 0x41, 0xea, 0x00, 0x11, 0xa4, 0x0e, 0x10, + 0x41, 0xea, 0x20, 0x11, 0xa4, 0x0e, 0x14, 0x41, 0x6a, 0xaf, 0x08, 0xba, 0x14, 0x7e, 0xe1, 0x01, + 0xa2, 0x0a, 0xd2, 0xa5, 0xf0, 0x93, 0xcf, 0xf8, 0x10, 0x52, 0x07, 0x0a, 0x21, 0xb5, 0x57, 0x08, + 0xfd, 0x81, 0x0a, 0xd3, 0x52, 0x08, 0xb1, 0xc7, 0x43, 0x1f, 0x54, 0x05, 0xba, 0x3e, 0xc0, 0xfb, + 0x15, 0x51, 0x31, 0x75, 0x7d, 0x80, 0x67, 0xd4, 0xfd, 0xe2, 0xac, 0xbb, 0x0a, 0x95, 0x07, 0xa8, + 0x42, 0x1b, 0x7e, 0x0c, 0x5d, 0x1f, 0xe0, 0xbd, 0x8b, 0xee, 0xd8, 0xbb, 0xd9, 0xaf, 0x08, 0xbc, + 0x38, 0x50, 0x11, 0xd8, 0x1c, 0xa8, 0x08, 0xdc, 0x0d, 0x3c, 0xf8, 0xcb, 0x09, 0x38, 0x17, 0x78, + 0x90, 0x7e, 0x22, 0x3f, 0x91, 0x94, 0x13, 0x9e, 0x50, 0xe9, 0xfc, 0xa9, 0x8d, 0xe0, 0xc6, 0xc4, + 0x66, 0x5d, 0xdf, 0x95, 0x9f, 0x55, 0xe5, 0xcf, 0xfa, 0xfc, 0x46, 0xf0, 0x38, 0xdb, 0x0b, 0xbd, + 0x04, 0xea, 0x66, 0xdd, 0x25, 0xd5, 0x22, 0xea, 0xb4, 0x25, 0x03, 0x4f, 0xeb, 0x06, 0x8c, 0x10, + 0x71, 0x97, 0xb8, 0xf7, 0xfd, 0x9c, 0x78, 0xdd, 0x60, 0x4c, 0xb9, 0xb7, 0x15, 0xb8, 0x20, 0x85, + 0xf2, 0x07, 0xf3, 0xc4, 0xe0, 0xf6, 0x40, 0x4f, 0x0c, 0xa4, 0x04, 0x09, 0x9e, 0x1e, 0x3c, 0xdd, + 0xfd, 0xa0, 0x5a, 0xcc, 0x92, 0xf0, 0x93, 0x84, 0xbf, 0x0c, 0x13, 0xc1, 0x15, 0x90, 0x5b, 0xb6, + 0xb5, 0xf8, 0xcd, 0xcc, 0xa8, 0xd4, 0x5c, 0x0b, 0x6d, 0xa2, 0xf5, 0x85, 0xf9, 0xd9, 0x9a, 0xcb, + 0xc3, 0x64, 0x45, 0xfe, 0x2e, 0x4f, 0xdc, 0x5e, 0x44, 0x0a, 0xb7, 0xe6, 0xf7, 0xbf, 0x32, 0x3f, + 0x94, 0xfb, 0x28, 0x64, 0xc4, 0xaf, 0xeb, 0x84, 0x80, 0x63, 0x1c, 0x98, 0x4f, 0xbe, 0x83, 0xa5, + 0xff, 0xa1, 0x02, 0x8f, 0x88, 0xe2, 0x2f, 0x59, 0xde, 0xc9, 0xa6, 0x8d, 0x7b, 0xfa, 0xe7, 0x20, + 0x85, 0x98, 0xe3, 0xd8, 0xaf, 0x9d, 0xb0, 0xdb, 0xc8, 0x48, 0xf1, 0x25, 0xf2, 0xaf, 0xe1, 0x43, + 0x42, 0x5b, 0x1c, 0xfc, 0xb4, 0x2b, 0xb3, 0x4f, 0xc1, 0x30, 0xe5, 0x97, 0xf5, 0x1a, 0x0f, 0xe9, + 0xf5, 0x1b, 0x11, 0x7a, 0x91, 0x38, 0xd2, 0xef, 0x4a, 0x7a, 0x09, 0x77, 0xab, 0x91, 0xe2, 0x4b, + 0x3c, 0xf8, 0x8a, 0x29, 0xdc, 0xff, 0x91, 0x88, 0x8a, 0x57, 0x72, 0x01, 0x52, 0xe5, 0xb0, 0x4c, + 0xb4, 0x9e, 0xeb, 0x90, 0xac, 0x38, 0x75, 0xf2, 0x3b, 0x2c, 0xe4, 0xf7, 0x72, 0x99, 0x91, 0xd9, + 0x8f, 0xe7, 0x5e, 0x86, 0x54, 0xe9, 0xc4, 0x6a, 0xd4, 0xdb, 0xc8, 0x66, 0x8f, 0xec, 0xd9, 0x0e, + 0x3a, 0xc6, 0x18, 0xfe, 0x5c, 0xae, 0x04, 0x53, 0x15, 0xc7, 0x2e, 0x9e, 0x7a, 0x62, 0xdd, 0x58, + 0x0a, 0xa5, 0x08, 0x7b, 0xe4, 0x43, 0xbe, 0x00, 0x82, 0x05, 0x8a, 0xc3, 0xdf, 0x7e, 0x77, 0x5e, + 0xd9, 0xf7, 0xb7, 0xcf, 0xb7, 0xe1, 0x51, 0x96, 0x3e, 0x5d, 0x54, 0x2b, 0x71, 0x54, 0x63, 0xec, + 0x31, 0xb5, 0x40, 0xb7, 0x89, 0xe9, 0xec, 0x48, 0xba, 0x87, 0xd3, 0x0c, 0x37, 0x45, 0x7d, 0x35, + 0x53, 0xcf, 0xa4, 0x59, 0x24, 0xdd, 0x52, 0x1c, 0x5d, 0x48, 0xb3, 0x27, 0x61, 0xcc, 0x9f, 0x13, + 0xa2, 0x41, 0xcc, 0x94, 0x95, 0xc5, 0x1c, 0xa4, 0x85, 0x84, 0xd5, 0x87, 0x41, 0x29, 0x68, 0x43, + 0xf8, 0xbf, 0xa2, 0xa6, 0xe0, 0xff, 0x4a, 0x5a, 0x62, 0xf1, 0x29, 0x98, 0x0c, 0x6d, 0x5f, 0xe2, + 0x99, 0x75, 0x0d, 0xf0, 0x7f, 0x65, 0x2d, 0x3d, 0x9b, 0xfc, 0xec, 0x3f, 0x99, 0x1b, 0x5a, 0xbc, + 0x0d, 0x7a, 0xf7, 0x46, 0xa7, 0x3e, 0x02, 0x89, 0x02, 0xa6, 0x7c, 0x14, 0x12, 0xc5, 0xa2, 0xa6, + 0xcc, 0x4e, 0xfe, 0x8d, 0x2f, 0x5e, 0x48, 0x17, 0xc9, 0x77, 0x91, 0xef, 0x21, 0xaf, 0x58, 0x64, + 0xe0, 0xe7, 0xe1, 0x91, 0xc8, 0x8d, 0x52, 0x8c, 0x2f, 0x95, 0x28, 0x7e, 0x7d, 0xbd, 0x0b, 0xbf, + 0xbe, 0x4e, 0xf0, 0x4a, 0x9e, 0x3f, 0x70, 0x2e, 0xe8, 0x11, 0xdb, 0x92, 0xd9, 0xba, 0xf0, 0x80, + 0xbb, 0x90, 0x7f, 0x9e, 0xc9, 0x16, 0x23, 0x65, 0x51, 0xcc, 0x03, 0xeb, 0x62, 0xbe, 0xc4, 0xf0, + 0xa5, 0x48, 0xfc, 0x51, 0xe8, 0xa9, 0xaa, 0xbc, 0x42, 0x30, 0x92, 0x92, 0xaf, 0xf0, 0x7a, 0x24, + 0xc9, 0x89, 0xf0, 0xae, 0xfb, 0xba, 0xaf, 0x70, 0x39, 0x52, 0xd6, 0x8a, 0x79, 0xe7, 0xab, 0x9c, + 0xbf, 0xc2, 0x16, 0xf9, 0xc2, 0x55, 0xfd, 0x11, 0x9e, 0xa3, 0x52, 0x05, 0x66, 0x06, 0xe2, 0x52, + 0xf9, 0x12, 0x03, 0x14, 0x7b, 0x02, 0x7a, 0x5b, 0x89, 0x23, 0xf3, 0x2f, 0x32, 0x92, 0x52, 0x4f, + 0x92, 0x18, 0x53, 0x71, 0x78, 0x71, 0xff, 0xfe, 0x7b, 0x73, 0x43, 0xef, 0xbc, 0x37, 0x37, 0xf4, + 0xdf, 0xde, 0x9b, 0x1b, 0xfa, 0xce, 0x7b, 0x73, 0xca, 0xf7, 0xdf, 0x9b, 0x53, 0x7e, 0xf8, 0xde, + 0x9c, 0xf2, 0x67, 0xef, 0xcd, 0x29, 0x6f, 0x3e, 0x98, 0x53, 0xbe, 0xf6, 0x60, 0x4e, 0xf9, 0xfa, + 0x83, 0x39, 0xe5, 0xf7, 0x1e, 0xcc, 0x29, 0x6f, 0x3f, 0x98, 0x53, 0xee, 0x3f, 0x98, 0x53, 0xde, + 0x79, 0x30, 0xa7, 0x7c, 0xe7, 0xc1, 0x9c, 0xf2, 0xfd, 0x07, 0x73, 0x43, 0x3f, 0x7c, 0x30, 0xa7, + 0xfc, 0xd9, 0x83, 0xb9, 0xa1, 0x37, 0xbf, 0x3b, 0x37, 0xf4, 0xd6, 0x77, 0xe7, 0x86, 0xbe, 0xf6, + 0xdd, 0x39, 0x05, 0xfe, 0x68, 0x15, 0x16, 0xd8, 0x17, 0xc9, 0xe8, 0xf7, 0x56, 0x85, 0xef, 0xbc, + 0x5e, 0xf1, 0x4e, 0x10, 0x69, 0x0d, 0xae, 0xf1, 0xdf, 0x75, 0xf2, 0x07, 0xce, 0xf8, 0xe5, 0xb2, + 0xd9, 0x87, 0xfd, 0x2a, 0x5b, 0xee, 0xdf, 0x0f, 0xc3, 0x28, 0xdf, 0x12, 0x8e, 0xfa, 0x65, 0xe8, + 0x35, 0x48, 0x9d, 0x58, 0x0d, 0xb3, 0x6d, 0x79, 0xa7, 0x6c, 0x2f, 0xf4, 0xb1, 0xa5, 0x40, 0x6d, + 0xbe, 0x7b, 0xfa, 0x62, 0xa7, 0xe9, 0x74, 0xda, 0x86, 0x2f, 0xaa, 0x5f, 0x80, 0xcc, 0x09, 0xb2, + 0x8e, 0x4f, 0xbc, 0xaa, 0x65, 0x57, 0x6b, 0x4d, 0xd2, 0x33, 0x8f, 0x1b, 0x40, 0xc7, 0x36, 0xed, + 0x52, 0x13, 0x9f, 0xac, 0x6e, 0x7a, 0x26, 0xb9, 0x57, 0xcf, 0x18, 0xe4, 0xb3, 0x7e, 0x11, 0x32, + 0x6d, 0xe4, 0x76, 0x1a, 0x5e, 0xb5, 0xe6, 0x74, 0x6c, 0x8f, 0x74, 0xb5, 0xaa, 0x91, 0xa6, 0x63, + 0x25, 0x3c, 0xa4, 0x3f, 0x09, 0xe3, 0x5e, 0xbb, 0x83, 0xaa, 0x6e, 0xcd, 0xf1, 0xdc, 0xa6, 0x69, + 0x93, 0xae, 0x36, 0x65, 0x64, 0xf0, 0xe0, 0x1e, 0x1b, 0x23, 0x7f, 0x79, 0xa0, 0xe6, 0xb4, 0x11, + 0xb9, 0xa9, 0x4e, 0x18, 0xf4, 0x40, 0xd7, 0x40, 0x7d, 0x15, 0x9d, 0x92, 0xdb, 0xb6, 0xa4, 0x81, + 0x3f, 0xea, 0xcf, 0xc0, 0x08, 0xfd, 0xa3, 0x14, 0xa4, 0xc7, 0x26, 0x4f, 0xb0, 0xfd, 0x4b, 0xa3, + 0x3b, 0xb5, 0x06, 0x13, 0xd0, 0x6f, 0xc1, 0xa8, 0x87, 0xda, 0x6d, 0xd3, 0xb2, 0xc9, 0x2d, 0x54, + 0x7a, 0x65, 0x3e, 0xc2, 0x0c, 0xfb, 0x54, 0x82, 0xfc, 0xc8, 0xab, 0xc1, 0xe5, 0xf5, 0x35, 0xc8, + 0x10, 0xb9, 0x95, 0x2a, 0xfd, 0xc3, 0x1d, 0xe9, 0x9e, 0x51, 0x9d, 0xa6, 0x72, 0xfc, 0x81, 0x01, + 0x87, 0xd1, 0x1f, 0xb8, 0x1b, 0x27, 0xa7, 0x7d, 0x32, 0xe2, 0xb4, 0xa4, 0x00, 0xaf, 0x90, 0xe6, + 0x91, 0x9e, 0x9a, 0xf1, 0xd0, 0x9f, 0xc0, 0xdb, 0x86, 0x8c, 0xa8, 0x17, 0x37, 0x03, 0x6d, 0x82, + 0x88, 0x19, 0x9e, 0x0e, 0x7e, 0xd4, 0xbd, 0x87, 0x15, 0xe8, 0x7c, 0x3e, 0x71, 0x53, 0x99, 0xdd, + 0x05, 0x2d, 0x7c, 0xbe, 0x08, 0xca, 0xcb, 0x32, 0xa5, 0x26, 0x5e, 0x2c, 0xd9, 0x2e, 0x0f, 0x18, + 0x73, 0x2f, 0xc0, 0x08, 0x8d, 0x1f, 0x3d, 0x0d, 0xa3, 0xc1, 0x6f, 0x27, 0xa6, 0x20, 0xb9, 0x7b, + 0x50, 0xd9, 0xa3, 0x3f, 0x82, 0xba, 0xb7, 0x55, 0xd8, 0xdd, 0xdb, 0xdf, 0x2c, 0x7d, 0x5c, 0x4b, + 0xe8, 0x93, 0x90, 0x2e, 0x6e, 0x6e, 0x6d, 0x55, 0x8b, 0x85, 0xcd, 0xad, 0xf2, 0x3d, 0x4d, 0xcd, + 0xcd, 0xc1, 0x08, 0xd5, 0x93, 0xfc, 0x98, 0x5b, 0xc7, 0xb6, 0x4f, 0x79, 0x13, 0x41, 0x0e, 0x72, + 0xdf, 0xd0, 0x61, 0xb4, 0xd0, 0x68, 0x6c, 0x9b, 0x2d, 0x57, 0x7f, 0x09, 0xa6, 0xe8, 0xcf, 0x4a, + 0xec, 0x3b, 0xeb, 0xe4, 0x37, 0x07, 0x71, 0x89, 0x50, 0xd8, 0x8f, 0xd9, 0x07, 0xd7, 0xcd, 0xc4, + 0x97, 0xba, 0x64, 0xa9, 0x81, 0xbb, 0x39, 0xf4, 0x7d, 0xd0, 0xf8, 0xe0, 0x46, 0xc3, 0x31, 0x3d, + 0xcc, 0x9b, 0x60, 0x3f, 0x09, 0xd8, 0x9b, 0x97, 0x8b, 0x52, 0xda, 0x2e, 0x06, 0xfd, 0x63, 0x90, + 0xda, 0xb4, 0xbd, 0x6b, 0x2b, 0x98, 0x8d, 0xff, 0xa1, 0x95, 0x6e, 0x36, 0x2e, 0x42, 0x59, 0x7c, + 0x04, 0x43, 0x5f, 0x5f, 0xc5, 0xe8, 0x64, 0x3f, 0x34, 0x11, 0x09, 0xd0, 0xe4, 0x50, 0x7f, 0x01, + 0xc6, 0xf0, 0x3d, 0x0a, 0x3d, 0xf9, 0x30, 0x6f, 0x60, 0xbb, 0xe0, 0xbe, 0x0c, 0xc5, 0x07, 0x18, + 0x4e, 0x40, 0xcf, 0x3f, 0xd2, 0x97, 0x40, 0x50, 0x20, 0xc0, 0x60, 0x82, 0x3d, 0x5f, 0x83, 0xd1, + 0x9e, 0x04, 0x7b, 0x21, 0x0d, 0xf6, 0x44, 0x0d, 0xf6, 0x7c, 0x0d, 0x52, 0x7d, 0x09, 0x44, 0x0d, + 0xfc, 0x63, 0xbd, 0x08, 0xb0, 0x61, 0xbd, 0x81, 0xea, 0x54, 0x05, 0xfa, 0x67, 0x58, 0x72, 0x11, + 0x0c, 0x81, 0x10, 0xa5, 0x10, 0x50, 0x7a, 0x19, 0xd2, 0x7b, 0x47, 0x01, 0x09, 0x74, 0xe5, 0xb1, + 0xaf, 0xc6, 0x51, 0x88, 0x45, 0xc4, 0xf9, 0xaa, 0xd0, 0x8b, 0x49, 0xf7, 0x57, 0x45, 0xb8, 0x1a, + 0x01, 0x15, 0xa8, 0x42, 0x49, 0x32, 0x31, 0xaa, 0x08, 0x2c, 0x22, 0x0e, 0x17, 0xc3, 0xa2, 0xe3, + 0x60, 0x49, 0x56, 0x95, 0xe6, 0x23, 0x28, 0x98, 0x04, 0x2b, 0x86, 0xec, 0x88, 0x78, 0x84, 0x04, + 0x39, 0x06, 0x4f, 0xf4, 0xf6, 0x08, 0x97, 0xe1, 0x1e, 0xe1, 0xc7, 0x62, 0x9e, 0x91, 0xd7, 0x5a, + 0x31, 0xcf, 0x64, 0x6c, 0x9e, 0x71, 0xd1, 0x50, 0x9e, 0xf1, 0x61, 0xfd, 0x13, 0x30, 0xc9, 0xc7, + 0x70, 0x79, 0xc2, 0xa4, 0x1a, 0xfb, 0x43, 0x55, 0xbd, 0x49, 0x99, 0x24, 0xe5, 0x0c, 0xe3, 0xf5, + 0x0a, 0x4c, 0xf0, 0xa1, 0x6d, 0x97, 0x5c, 0xee, 0x14, 0xfb, 0x23, 0x10, 0xbd, 0x19, 0xa9, 0x20, + 0x25, 0x0c, 0xa1, 0x67, 0xd7, 0x61, 0x26, 0xba, 0x1a, 0x89, 0xe5, 0x77, 0x8c, 0x96, 0xdf, 0x73, + 0x62, 0xf9, 0x55, 0xc4, 0xf2, 0x5d, 0x82, 0x47, 0x22, 0x6b, 0x4f, 0x1c, 0x49, 0x42, 0x24, 0xb9, + 0x0d, 0xe3, 0x52, 0xc9, 0x11, 0xc1, 0xc3, 0x11, 0xe0, 0xe1, 0x6e, 0x70, 0x10, 0x5a, 0x11, 0xab, + 0x87, 0x04, 0x56, 0x45, 0xf0, 0xc7, 0x60, 0x42, 0xae, 0x37, 0x22, 0x7a, 0x3c, 0x02, 0x3d, 0x1e, + 0x81, 0x8e, 0x3e, 0x77, 0x32, 0x02, 0x9d, 0x0c, 0xa1, 0xf7, 0x7a, 0x9e, 0x7b, 0x2a, 0x02, 0x3d, + 0x15, 0x81, 0x8e, 0x3e, 0xb7, 0x1e, 0x81, 0xd6, 0x45, 0xf4, 0x73, 0x30, 0x19, 0x2a, 0x31, 0x22, + 0x7c, 0x34, 0x02, 0x3e, 0x2a, 0xc2, 0x9f, 0x07, 0x2d, 0x5c, 0x5c, 0x44, 0xfc, 0x64, 0x04, 0x7e, + 0x32, 0xea, 0xf4, 0xd1, 0xda, 0x8f, 0x44, 0xc0, 0x47, 0x22, 0x4f, 0x1f, 0x8d, 0xd7, 0x22, 0xf0, + 0x9a, 0x88, 0xcf, 0x43, 0x46, 0xac, 0x26, 0x22, 0x36, 0x15, 0x81, 0x4d, 0x85, 0xed, 0x2e, 0x15, + 0x93, 0xb8, 0x48, 0x1f, 0xeb, 0x91, 0x2e, 0x52, 0x09, 0x89, 0x23, 0xc9, 0x88, 0x24, 0x9f, 0x84, + 0x73, 0x51, 0x25, 0x23, 0x82, 0x63, 0x41, 0xe4, 0x98, 0xc0, 0x3d, 0x62, 0xd0, 0xec, 0x99, 0xad, + 0x50, 0xe3, 0x34, 0xfb, 0x29, 0x98, 0x8e, 0x28, 0x1c, 0x11, 0xb4, 0x4b, 0x72, 0x37, 0x96, 0x15, + 0x68, 0x49, 0x11, 0xb0, 0xec, 0xe3, 0x5d, 0xc7, 0xb2, 0x3d, 0xb1, 0x2b, 0xfb, 0xe6, 0x34, 0x4c, + 0xb0, 0xf2, 0xb4, 0xd3, 0xae, 0xa3, 0x36, 0xaa, 0xeb, 0x7f, 0xa9, 0x77, 0xef, 0xb4, 0xdc, 0x5d, + 0xd4, 0x18, 0xea, 0x0c, 0x2d, 0xd4, 0xa7, 0x7a, 0xb6, 0x50, 0x57, 0xe2, 0xe9, 0xe3, 0x3a, 0xa9, + 0x52, 0x57, 0x27, 0xf5, 0x74, 0x6f, 0xd2, 0x5e, 0x0d, 0x55, 0xa9, 0xab, 0xa1, 0xea, 0x4f, 0x12, + 0xd9, 0x57, 0x6d, 0x74, 0xf7, 0x55, 0x0b, 0xbd, 0x59, 0x7a, 0xb7, 0x57, 0x1b, 0xdd, 0xed, 0x55, + 0x0c, 0x4f, 0x74, 0x97, 0xb5, 0xd1, 0xdd, 0x65, 0xf5, 0xe1, 0xe9, 0xdd, 0x6c, 0x6d, 0x74, 0x37, + 0x5b, 0x31, 0x3c, 0xd1, 0x3d, 0xd7, 0x66, 0x44, 0xcf, 0xf5, 0x4c, 0x6f, 0xa2, 0x7e, 0xad, 0xd7, + 0x56, 0x54, 0xeb, 0xb5, 0xd8, 0x47, 0xa9, 0xbe, 0x1d, 0xd8, 0x66, 0x44, 0x07, 0x16, 0xa7, 0x58, + 0x8f, 0x46, 0x6c, 0x2b, 0xaa, 0x11, 0x8b, 0x55, 0xac, 0x57, 0x3f, 0xf6, 0x17, 0xc2, 0xfd, 0xd8, + 0xe5, 0xde, 0x4c, 0xd1, 0x6d, 0xd9, 0x46, 0x77, 0x5b, 0xb6, 0x10, 0x97, 0x73, 0x51, 0xdd, 0xd9, + 0xa7, 0x7a, 0x76, 0x67, 0x03, 0xa4, 0x70, 0x5c, 0x93, 0xf6, 0x72, 0xaf, 0x26, 0x6d, 0x29, 0x9e, + 0xbb, 0x7f, 0xaf, 0x76, 0xd0, 0xa3, 0x57, 0x7b, 0x36, 0x9e, 0xf8, 0xe7, 0x2d, 0xdb, 0xcf, 0x5b, + 0xb6, 0x9f, 0xb7, 0x6c, 0x3f, 0x6f, 0xd9, 0x7e, 0xfa, 0x2d, 0x5b, 0x3e, 0xf9, 0xb9, 0xaf, 0xcc, + 0x2b, 0xb9, 0xff, 0xaa, 0xfa, 0x7f, 0x3f, 0xeb, 0x25, 0xcb, 0x3b, 0xc1, 0xe5, 0x6d, 0x1b, 0x32, + 0xe4, 0x2f, 0x5f, 0x34, 0xcd, 0x56, 0xcb, 0xb2, 0x8f, 0x59, 0xcf, 0xb6, 0xd8, 0xbd, 0x95, 0xc8, + 0x00, 0xe4, 0x6f, 0x87, 0x6c, 0x53, 0x61, 0xb6, 0xdc, 0xd8, 0xc1, 0x88, 0x7e, 0x17, 0xd2, 0x4d, + 0xf7, 0xd8, 0x67, 0x4b, 0x74, 0x2d, 0x84, 0x21, 0x36, 0x7a, 0xa5, 0x01, 0x19, 0x34, 0xfd, 0x01, + 0xac, 0xda, 0xe1, 0xa9, 0x17, 0xa8, 0xa6, 0xc6, 0xa9, 0x86, 0x7d, 0x2a, 0xab, 0x76, 0x18, 0x8c, + 0xe0, 0xb0, 0x0d, 0xeb, 0x1e, 0x57, 0xe9, 0xa4, 0xe0, 0x79, 0x09, 0x26, 0x43, 0xda, 0x46, 0xe4, + 0xfc, 0x43, 0xf8, 0x06, 0x2b, 0x16, 0xd6, 0x3c, 0x2e, 0x27, 0xc4, 0x80, 0xcc, 0x3d, 0x01, 0xe3, + 0x12, 0xb7, 0x9e, 0x01, 0xe5, 0x88, 0x7d, 0xa7, 0x52, 0x39, 0xca, 0x7d, 0x59, 0x81, 0x34, 0x7b, + 0xa1, 0x60, 0xd7, 0xb4, 0xda, 0xfa, 0x8b, 0x90, 0x6c, 0xf0, 0xef, 0x35, 0x3d, 0xec, 0x77, 0x68, + 0x09, 0x83, 0xbe, 0x01, 0xc3, 0x6d, 0xff, 0x7b, 0x4f, 0x0f, 0xf5, 0xc5, 0x58, 0x02, 0xcf, 0xdd, + 0x57, 0x60, 0x8a, 0xbd, 0xef, 0xea, 0xb2, 0xb7, 0xa0, 0xcd, 0xd6, 0xec, 0x37, 0x14, 0x18, 0xf3, + 0x8f, 0xf4, 0x43, 0x98, 0xf0, 0x0f, 0xe8, 0x9b, 0xf6, 0x34, 0x52, 0xf3, 0x82, 0x85, 0xbb, 0x38, + 0x96, 0x22, 0x3e, 0xd1, 0x47, 0x52, 0x74, 0x4d, 0x96, 0x07, 0x67, 0x0b, 0x30, 0x1d, 0x21, 0x76, + 0x96, 0x05, 0x39, 0x77, 0x11, 0xc6, 0x2a, 0x8e, 0x47, 0x7f, 0x3e, 0x47, 0x3f, 0x27, 0x3c, 0x55, + 0x28, 0x26, 0xb4, 0x21, 0x02, 0x5e, 0xbc, 0x08, 0xa3, 0x2c, 0xfb, 0xf5, 0x11, 0x48, 0x6c, 0x17, + 0xb4, 0x21, 0xf2, 0x7f, 0x51, 0x53, 0xc8, 0xff, 0x25, 0x2d, 0x51, 0xdc, 0x7a, 0x88, 0xe7, 0x4d, + 0x43, 0xef, 0x3c, 0x98, 0x1b, 0x8a, 0x78, 0xde, 0xa4, 0x1c, 0x8e, 0x50, 0xf3, 0xfc, 0xff, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xd8, 0x3a, 0x74, 0xbb, 0x33, 0x7f, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/thetest.pb.go b/vendor/github.com/gogo/protobuf/test/thetest.pb.go index 7fb1480f7..ebc55861a 100644 --- a/vendor/github.com/gogo/protobuf/test/thetest.pb.go +++ b/vendor/github.com/gogo/protobuf/test/thetest.pb.go @@ -6967,406 +6967,414 @@ func (this *ProtoType) Description() (desc *github_com_gogo_protobuf_protoc_gen_ func ThetestDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 6381 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0x6b, 0x70, 0x24, 0x57, - 0x75, 0x56, 0x4f, 0x8f, 0xb4, 0xa3, 0x33, 0x7a, 0xb4, 0x7a, 0xd7, 0xf2, 0x58, 0x5e, 0x8f, 0xb4, - 0xe3, 0xf5, 0x5a, 0x16, 0xb6, 0x56, 0xab, 0xd5, 0xbe, 0x66, 0xb1, 0x5d, 0xf3, 0x5a, 0x59, 0x9b, - 0xd5, 0x83, 0x96, 0x04, 0x36, 0xa4, 0x6a, 0xaa, 0x77, 0xe6, 0x4a, 0x1a, 0x7b, 0xa6, 0x7b, 0x32, - 0xdd, 0x63, 0x5b, 0xfe, 0x91, 0x32, 0x90, 0x10, 0x08, 0x95, 0x27, 0x49, 0x85, 0xa7, 0x31, 0xa4, - 0x08, 0x86, 0xbc, 0x20, 0x21, 0x84, 0xa2, 0x52, 0xc1, 0x7f, 0x48, 0x36, 0x7f, 0x52, 0x26, 0xbf, - 0x52, 0x54, 0xca, 0x85, 0x17, 0xaa, 0x42, 0x12, 0x27, 0x81, 0xe0, 0x2a, 0xa8, 0x32, 0x3f, 0x52, - 0xf7, 0xd5, 0xdd, 0xf7, 0x4e, 0x8f, 0xba, 0xe5, 0xb5, 0x81, 0x3f, 0xbb, 0x33, 0xf7, 0x9c, 0xef, - 0xf4, 0xb9, 0xe7, 0x75, 0x4f, 0xdf, 0x7b, 0x35, 0xf0, 0xde, 0x25, 0x98, 0xd9, 0xb5, 0xed, 0xdd, - 0x26, 0x3a, 0xdd, 0xee, 0xd8, 0xae, 0x7d, 0xbd, 0xbb, 0x73, 0xba, 0x8e, 0x9c, 0x5a, 0xa7, 0xd1, - 0x76, 0xed, 0xce, 0x3c, 0x19, 0xd3, 0xc7, 0x29, 0xc7, 0x3c, 0xe7, 0xc8, 0xad, 0xc2, 0xc4, 0x95, - 0x46, 0x13, 0x95, 0x3d, 0xc6, 0x4d, 0xe4, 0xea, 0x17, 0x21, 0xb9, 0xd3, 0x68, 0xa2, 0x8c, 0x32, - 0xa3, 0xce, 0xa6, 0x17, 0x4f, 0xce, 0x4b, 0xa0, 0x79, 0x11, 0xb1, 0x81, 0x87, 0x0d, 0x82, 0xc8, - 0x7d, 0x2f, 0x09, 0x47, 0x43, 0xa8, 0xba, 0x0e, 0x49, 0xcb, 0x6c, 0x61, 0x89, 0xca, 0xec, 0xb0, - 0x41, 0x3e, 0xeb, 0x19, 0x38, 0xd2, 0x36, 0x6b, 0x4f, 0x98, 0xbb, 0x28, 0x93, 0x20, 0xc3, 0xfc, - 0xab, 0x9e, 0x05, 0xa8, 0xa3, 0x36, 0xb2, 0xea, 0xc8, 0xaa, 0xed, 0x67, 0xd4, 0x19, 0x75, 0x76, - 0xd8, 0x08, 0x8c, 0xe8, 0x6f, 0x83, 0x89, 0x76, 0xf7, 0x7a, 0xb3, 0x51, 0xab, 0x06, 0xd8, 0x60, - 0x46, 0x9d, 0x1d, 0x34, 0x34, 0x4a, 0x28, 0xfb, 0xcc, 0xf7, 0xc2, 0xf8, 0x53, 0xc8, 0x7c, 0x22, - 0xc8, 0x9a, 0x26, 0xac, 0x63, 0x78, 0x38, 0xc0, 0x58, 0x82, 0x91, 0x16, 0x72, 0x1c, 0x73, 0x17, - 0x55, 0xdd, 0xfd, 0x36, 0xca, 0x24, 0xc9, 0xec, 0x67, 0x7a, 0x66, 0x2f, 0xcf, 0x3c, 0xcd, 0x50, - 0x5b, 0xfb, 0x6d, 0xa4, 0x17, 0x60, 0x18, 0x59, 0xdd, 0x16, 0x95, 0x30, 0xd8, 0xc7, 0x7e, 0x15, - 0xab, 0xdb, 0x92, 0xa5, 0xa4, 0x30, 0x8c, 0x89, 0x38, 0xe2, 0xa0, 0xce, 0x93, 0x8d, 0x1a, 0xca, - 0x0c, 0x11, 0x01, 0xf7, 0xf6, 0x08, 0xd8, 0xa4, 0x74, 0x59, 0x06, 0xc7, 0xe9, 0x25, 0x18, 0x46, - 0x4f, 0xbb, 0xc8, 0x72, 0x1a, 0xb6, 0x95, 0x39, 0x42, 0x84, 0xdc, 0x13, 0xe2, 0x45, 0xd4, 0xac, - 0xcb, 0x22, 0x7c, 0x9c, 0x7e, 0x1e, 0x8e, 0xd8, 0x6d, 0xb7, 0x61, 0x5b, 0x4e, 0x26, 0x35, 0xa3, - 0xcc, 0xa6, 0x17, 0x8f, 0x87, 0x06, 0xc2, 0x3a, 0xe5, 0x31, 0x38, 0xb3, 0xbe, 0x02, 0x9a, 0x63, - 0x77, 0x3b, 0x35, 0x54, 0xad, 0xd9, 0x75, 0x54, 0x6d, 0x58, 0x3b, 0x76, 0x66, 0x98, 0x08, 0x98, - 0xee, 0x9d, 0x08, 0x61, 0x2c, 0xd9, 0x75, 0xb4, 0x62, 0xed, 0xd8, 0xc6, 0x98, 0x23, 0x7c, 0xd7, - 0x27, 0x61, 0xc8, 0xd9, 0xb7, 0x5c, 0xf3, 0xe9, 0xcc, 0x08, 0x89, 0x10, 0xf6, 0x2d, 0xf7, 0xe3, - 0x41, 0x18, 0x8f, 0x13, 0x62, 0x97, 0x61, 0x70, 0x07, 0xcf, 0x32, 0x93, 0x38, 0x8c, 0x0d, 0x28, - 0x46, 0x34, 0xe2, 0xd0, 0x1b, 0x34, 0x62, 0x01, 0xd2, 0x16, 0x72, 0x5c, 0x54, 0xa7, 0x11, 0xa1, - 0xc6, 0x8c, 0x29, 0xa0, 0xa0, 0xde, 0x90, 0x4a, 0xbe, 0xa1, 0x90, 0x7a, 0x14, 0xc6, 0x3d, 0x95, - 0xaa, 0x1d, 0xd3, 0xda, 0xe5, 0xb1, 0x79, 0x3a, 0x4a, 0x93, 0xf9, 0x0a, 0xc7, 0x19, 0x18, 0x66, - 0x8c, 0x21, 0xe1, 0xbb, 0x5e, 0x06, 0xb0, 0x2d, 0x64, 0xef, 0x54, 0xeb, 0xa8, 0xd6, 0xcc, 0xa4, - 0xfa, 0x58, 0x69, 0x1d, 0xb3, 0xf4, 0x58, 0xc9, 0xa6, 0xa3, 0xb5, 0xa6, 0x7e, 0xc9, 0x0f, 0xb5, - 0x23, 0x7d, 0x22, 0x65, 0x95, 0x26, 0x59, 0x4f, 0xb4, 0x6d, 0xc3, 0x58, 0x07, 0xe1, 0xb8, 0x47, - 0x75, 0x36, 0xb3, 0x61, 0xa2, 0xc4, 0x7c, 0xe4, 0xcc, 0x0c, 0x06, 0xa3, 0x13, 0x1b, 0xed, 0x04, - 0xbf, 0xea, 0x77, 0x83, 0x37, 0x50, 0x25, 0x61, 0x05, 0xa4, 0x0a, 0x8d, 0xf0, 0xc1, 0x35, 0xb3, - 0x85, 0xa6, 0x2e, 0xc2, 0x98, 0x68, 0x1e, 0xfd, 0x18, 0x0c, 0x3a, 0xae, 0xd9, 0x71, 0x49, 0x14, - 0x0e, 0x1a, 0xf4, 0x8b, 0xae, 0x81, 0x8a, 0xac, 0x3a, 0xa9, 0x72, 0x83, 0x06, 0xfe, 0x38, 0x75, - 0x01, 0x46, 0x85, 0xc7, 0xc7, 0x05, 0xe6, 0x3e, 0x3a, 0x04, 0xc7, 0xc2, 0x62, 0x2e, 0x34, 0xfc, - 0x27, 0x61, 0xc8, 0xea, 0xb6, 0xae, 0xa3, 0x4e, 0x46, 0x25, 0x12, 0xd8, 0x37, 0xbd, 0x00, 0x83, - 0x4d, 0xf3, 0x3a, 0x6a, 0x66, 0x92, 0x33, 0xca, 0xec, 0xd8, 0xe2, 0xdb, 0x62, 0x45, 0xf5, 0xfc, - 0x35, 0x0c, 0x31, 0x28, 0x52, 0x7f, 0x08, 0x92, 0xac, 0xc4, 0x61, 0x09, 0x73, 0xf1, 0x24, 0xe0, - 0x58, 0x34, 0x08, 0x4e, 0xbf, 0x13, 0x86, 0xf1, 0xff, 0xd4, 0xb6, 0x43, 0x44, 0xe7, 0x14, 0x1e, - 0xc0, 0x76, 0xd5, 0xa7, 0x20, 0x45, 0xc2, 0xac, 0x8e, 0xf8, 0xd2, 0xe0, 0x7d, 0xc7, 0x8e, 0xa9, - 0xa3, 0x1d, 0xb3, 0xdb, 0x74, 0xab, 0x4f, 0x9a, 0xcd, 0x2e, 0x22, 0x01, 0x33, 0x6c, 0x8c, 0xb0, - 0xc1, 0x77, 0xe2, 0x31, 0x7d, 0x1a, 0xd2, 0x34, 0x2a, 0x1b, 0x56, 0x1d, 0x3d, 0x4d, 0xaa, 0xcf, - 0xa0, 0x41, 0x03, 0x75, 0x05, 0x8f, 0xe0, 0xc7, 0x3f, 0xee, 0xd8, 0x16, 0x77, 0x2d, 0x79, 0x04, - 0x1e, 0x20, 0x8f, 0xbf, 0x20, 0x17, 0xbe, 0xbb, 0xc2, 0xa7, 0x27, 0xc7, 0x62, 0xee, 0xab, 0x09, - 0x48, 0x92, 0x7c, 0x1b, 0x87, 0xf4, 0xd6, 0x63, 0x1b, 0x95, 0x6a, 0x79, 0x7d, 0xbb, 0x78, 0xad, - 0xa2, 0x29, 0xfa, 0x18, 0x00, 0x19, 0xb8, 0x72, 0x6d, 0xbd, 0xb0, 0xa5, 0x25, 0xbc, 0xef, 0x2b, - 0x6b, 0x5b, 0xe7, 0x97, 0x34, 0xd5, 0x03, 0x6c, 0xd3, 0x81, 0x64, 0x90, 0xe1, 0xec, 0xa2, 0x36, - 0xa8, 0x6b, 0x30, 0x42, 0x05, 0xac, 0x3c, 0x5a, 0x29, 0x9f, 0x5f, 0xd2, 0x86, 0xc4, 0x91, 0xb3, - 0x8b, 0xda, 0x11, 0x7d, 0x14, 0x86, 0xc9, 0x48, 0x71, 0x7d, 0xfd, 0x9a, 0x96, 0xf2, 0x64, 0x6e, - 0x6e, 0x19, 0x2b, 0x6b, 0xcb, 0xda, 0xb0, 0x27, 0x73, 0xd9, 0x58, 0xdf, 0xde, 0xd0, 0xc0, 0x93, - 0xb0, 0x5a, 0xd9, 0xdc, 0x2c, 0x2c, 0x57, 0xb4, 0xb4, 0xc7, 0x51, 0x7c, 0x6c, 0xab, 0xb2, 0xa9, - 0x8d, 0x08, 0x6a, 0x9d, 0x5d, 0xd4, 0x46, 0xbd, 0x47, 0x54, 0xd6, 0xb6, 0x57, 0xb5, 0x31, 0x7d, - 0x02, 0x46, 0xe9, 0x23, 0xb8, 0x12, 0xe3, 0xd2, 0xd0, 0xf9, 0x25, 0x4d, 0xf3, 0x15, 0xa1, 0x52, - 0x26, 0x84, 0x81, 0xf3, 0x4b, 0x9a, 0x9e, 0x2b, 0xc1, 0x20, 0x89, 0x2e, 0x5d, 0x87, 0xb1, 0x6b, - 0x85, 0x62, 0xe5, 0x5a, 0x75, 0x7d, 0x63, 0x6b, 0x65, 0x7d, 0xad, 0x70, 0x4d, 0x53, 0xfc, 0x31, - 0xa3, 0xf2, 0x8e, 0xed, 0x15, 0xa3, 0x52, 0xd6, 0x12, 0xc1, 0xb1, 0x8d, 0x4a, 0x61, 0xab, 0x52, - 0xd6, 0xd4, 0x5c, 0x0d, 0x8e, 0x85, 0xd5, 0x99, 0xd0, 0xcc, 0x08, 0xb8, 0x38, 0xd1, 0xc7, 0xc5, - 0x44, 0x56, 0x8f, 0x8b, 0x3f, 0xab, 0xc0, 0xd1, 0x90, 0x5a, 0x1b, 0xfa, 0x90, 0x87, 0x61, 0x90, - 0x86, 0x28, 0x5d, 0x7d, 0xee, 0x0b, 0x2d, 0xda, 0x24, 0x60, 0x7b, 0x56, 0x20, 0x82, 0x0b, 0xae, - 0xc0, 0x6a, 0x9f, 0x15, 0x18, 0x8b, 0xe8, 0x51, 0xf2, 0xfd, 0x0a, 0x64, 0xfa, 0xc9, 0x8e, 0x28, - 0x14, 0x09, 0xa1, 0x50, 0x5c, 0x96, 0x15, 0x38, 0xd1, 0x7f, 0x0e, 0x3d, 0x5a, 0x7c, 0x5e, 0x81, - 0xc9, 0xf0, 0x46, 0x25, 0x54, 0x87, 0x87, 0x60, 0xa8, 0x85, 0xdc, 0x3d, 0x9b, 0x2f, 0xd6, 0xa7, - 0x42, 0x96, 0x00, 0x4c, 0x96, 0x6d, 0xc5, 0x50, 0xc1, 0x35, 0x44, 0xed, 0xd7, 0x6d, 0x50, 0x6d, - 0x7a, 0x34, 0xfd, 0x50, 0x02, 0x6e, 0x0b, 0x15, 0x1e, 0xaa, 0xe8, 0x5d, 0x00, 0x0d, 0xab, 0xdd, - 0x75, 0xe9, 0x82, 0x4c, 0xeb, 0xd3, 0x30, 0x19, 0x21, 0xb9, 0x8f, 0x6b, 0x4f, 0xd7, 0xf5, 0xe8, - 0x2a, 0xa1, 0x03, 0x1d, 0x22, 0x0c, 0x17, 0x7d, 0x45, 0x93, 0x44, 0xd1, 0x6c, 0x9f, 0x99, 0xf6, - 0xac, 0x75, 0x0b, 0xa0, 0xd5, 0x9a, 0x0d, 0x64, 0xb9, 0x55, 0xc7, 0xed, 0x20, 0xb3, 0xd5, 0xb0, - 0x76, 0x49, 0x01, 0x4e, 0xe5, 0x07, 0x77, 0xcc, 0xa6, 0x83, 0x8c, 0x71, 0x4a, 0xde, 0xe4, 0x54, - 0x8c, 0x20, 0xab, 0x4c, 0x27, 0x80, 0x18, 0x12, 0x10, 0x94, 0xec, 0x21, 0x72, 0x1f, 0x3e, 0x02, - 0xe9, 0x40, 0x5b, 0xa7, 0x9f, 0x80, 0x91, 0xc7, 0xcd, 0x27, 0xcd, 0x2a, 0x6f, 0xd5, 0xa9, 0x25, - 0xd2, 0x78, 0x6c, 0x83, 0xb5, 0xeb, 0x0b, 0x70, 0x8c, 0xb0, 0xd8, 0x5d, 0x17, 0x75, 0xaa, 0xb5, - 0xa6, 0xe9, 0x38, 0xc4, 0x68, 0x29, 0xc2, 0xaa, 0x63, 0xda, 0x3a, 0x26, 0x95, 0x38, 0x45, 0x3f, - 0x07, 0x47, 0x09, 0xa2, 0xd5, 0x6d, 0xba, 0x8d, 0x76, 0x13, 0x55, 0xf1, 0xcb, 0x83, 0x43, 0x0a, - 0xb1, 0xa7, 0xd9, 0x04, 0xe6, 0x58, 0x65, 0x0c, 0x58, 0x23, 0x47, 0x5f, 0x86, 0xbb, 0x08, 0x6c, - 0x17, 0x59, 0xa8, 0x63, 0xba, 0xa8, 0x8a, 0x7e, 0xa5, 0x6b, 0x36, 0x9d, 0xaa, 0x69, 0xd5, 0xab, - 0x7b, 0xa6, 0xb3, 0x97, 0x39, 0x16, 0x14, 0x70, 0x07, 0xe6, 0x5d, 0x66, 0xac, 0x15, 0xc2, 0x59, - 0xb0, 0xea, 0x8f, 0x98, 0xce, 0x9e, 0x9e, 0x87, 0x49, 0x22, 0xc8, 0x71, 0x3b, 0x0d, 0x6b, 0xb7, - 0x5a, 0xdb, 0x43, 0xb5, 0x27, 0xaa, 0x5d, 0x77, 0xe7, 0x62, 0xe6, 0xce, 0xa0, 0x04, 0xa2, 0xe4, - 0x26, 0xe1, 0x29, 0x61, 0x96, 0x6d, 0x77, 0xe7, 0xa2, 0xbe, 0x09, 0x23, 0xd8, 0x1f, 0xad, 0xc6, - 0x33, 0xa8, 0xba, 0x63, 0x77, 0xc8, 0xe2, 0x32, 0x16, 0x92, 0xdc, 0x01, 0x23, 0xce, 0xaf, 0x33, - 0xc0, 0xaa, 0x5d, 0x47, 0xf9, 0xc1, 0xcd, 0x8d, 0x4a, 0xa5, 0x6c, 0xa4, 0xb9, 0x94, 0x2b, 0x76, - 0x07, 0xc7, 0xd4, 0xae, 0xed, 0xd9, 0x38, 0x4d, 0x63, 0x6a, 0xd7, 0xe6, 0x16, 0x3e, 0x07, 0x47, - 0x6b, 0x35, 0x3a, 0xed, 0x46, 0xad, 0xca, 0xba, 0x7c, 0x27, 0xa3, 0x09, 0xf6, 0xaa, 0xd5, 0x96, - 0x29, 0x03, 0x0b, 0x73, 0x47, 0xbf, 0x04, 0xb7, 0xf9, 0xf6, 0x0a, 0x02, 0x27, 0x7a, 0x66, 0x29, - 0x43, 0xcf, 0xc1, 0xd1, 0xf6, 0x7e, 0x2f, 0x50, 0x17, 0x9e, 0xd8, 0xde, 0x97, 0x61, 0xf7, 0x90, - 0x37, 0xb7, 0x0e, 0xaa, 0x99, 0x2e, 0xaa, 0x67, 0x6e, 0x0f, 0x72, 0x07, 0x08, 0xfa, 0x69, 0xd0, - 0x6a, 0xb5, 0x2a, 0xb2, 0xcc, 0xeb, 0x4d, 0x54, 0x35, 0x3b, 0xc8, 0x32, 0x9d, 0xcc, 0x74, 0x90, - 0x79, 0xac, 0x56, 0xab, 0x10, 0x6a, 0x81, 0x10, 0xf5, 0x39, 0x98, 0xb0, 0xaf, 0x3f, 0x5e, 0xa3, - 0xc1, 0x55, 0x6d, 0x77, 0xd0, 0x4e, 0xe3, 0xe9, 0xcc, 0x49, 0x62, 0xa6, 0x71, 0x4c, 0x20, 0xa1, - 0xb5, 0x41, 0x86, 0xf5, 0xfb, 0x40, 0xab, 0x39, 0x7b, 0x66, 0xa7, 0x4d, 0x56, 0x77, 0xa7, 0x6d, - 0xd6, 0x50, 0xe6, 0x1e, 0xca, 0x4a, 0xc7, 0xd7, 0xf8, 0xb0, 0xfe, 0x28, 0x1c, 0xeb, 0x5a, 0x0d, - 0xcb, 0x45, 0x9d, 0x76, 0x07, 0xe1, 0x26, 0x9d, 0x66, 0x5a, 0xe6, 0xdf, 0x8f, 0xf4, 0x69, 0xb3, - 0xb7, 0x83, 0xdc, 0xd4, 0xbb, 0xc6, 0xd1, 0x6e, 0xef, 0x60, 0x2e, 0x0f, 0x23, 0x41, 0xa7, 0xeb, - 0xc3, 0x40, 0xdd, 0xae, 0x29, 0x78, 0x0d, 0x2d, 0xad, 0x97, 0xf1, 0xea, 0xf7, 0xee, 0x8a, 0x96, - 0xc0, 0xab, 0xf0, 0xb5, 0x95, 0xad, 0x4a, 0xd5, 0xd8, 0x5e, 0xdb, 0x5a, 0x59, 0xad, 0x68, 0xea, - 0xdc, 0x70, 0xea, 0xfb, 0x47, 0xb4, 0x67, 0x9f, 0x7d, 0xf6, 0xd9, 0x44, 0xee, 0x9b, 0x09, 0x18, - 0x13, 0x3b, 0x5f, 0xfd, 0xed, 0x70, 0x3b, 0x7f, 0x4d, 0x75, 0x90, 0x5b, 0x7d, 0xaa, 0xd1, 0x21, - 0x71, 0xd8, 0x32, 0x69, 0xef, 0xe8, 0x99, 0xf0, 0x18, 0xe3, 0xda, 0x44, 0xee, 0xbb, 0x1a, 0x1d, - 0x1c, 0x65, 0x2d, 0xd3, 0xd5, 0xaf, 0xc1, 0xb4, 0x65, 0x57, 0x1d, 0xd7, 0xb4, 0xea, 0x66, 0xa7, - 0x5e, 0xf5, 0x37, 0x08, 0xaa, 0x66, 0xad, 0x86, 0x1c, 0xc7, 0xa6, 0x4b, 0x80, 0x27, 0xe5, 0xb8, - 0x65, 0x6f, 0x32, 0x66, 0xbf, 0x36, 0x16, 0x18, 0xab, 0xe4, 0x6e, 0xb5, 0x9f, 0xbb, 0xef, 0x84, - 0xe1, 0x96, 0xd9, 0xae, 0x22, 0xcb, 0xed, 0xec, 0x93, 0x7e, 0x2d, 0x65, 0xa4, 0x5a, 0x66, 0xbb, - 0x82, 0xbf, 0xbf, 0x75, 0x3e, 0x08, 0xda, 0xf1, 0xdf, 0x54, 0x18, 0x09, 0xf6, 0x6c, 0xb8, 0x05, - 0xae, 0x91, 0xfa, 0xac, 0x90, 0xf4, 0xbd, 0xfb, 0xc0, 0x0e, 0x6f, 0xbe, 0x84, 0x0b, 0x77, 0x7e, - 0x88, 0x76, 0x52, 0x06, 0x45, 0xe2, 0x45, 0x13, 0x27, 0x2c, 0xa2, 0xfd, 0x79, 0xca, 0x60, 0xdf, - 0xf4, 0x65, 0x18, 0x7a, 0xdc, 0x21, 0xb2, 0x87, 0x88, 0xec, 0x93, 0x07, 0xcb, 0xbe, 0xba, 0x49, - 0x84, 0x0f, 0x5f, 0xdd, 0xac, 0xae, 0xad, 0x1b, 0xab, 0x85, 0x6b, 0x06, 0x83, 0xeb, 0x77, 0x40, - 0xb2, 0x69, 0x3e, 0xb3, 0x2f, 0x96, 0x78, 0x32, 0x14, 0xd7, 0xf0, 0x77, 0x40, 0xf2, 0x29, 0x64, - 0x3e, 0x21, 0x16, 0x56, 0x32, 0xf4, 0x16, 0x86, 0xfe, 0x69, 0x18, 0x24, 0xf6, 0xd2, 0x01, 0x98, - 0xc5, 0xb4, 0x01, 0x3d, 0x05, 0xc9, 0xd2, 0xba, 0x81, 0xc3, 0x5f, 0x83, 0x11, 0x3a, 0x5a, 0xdd, - 0x58, 0xa9, 0x94, 0x2a, 0x5a, 0x22, 0x77, 0x0e, 0x86, 0xa8, 0x11, 0x70, 0x6a, 0x78, 0x66, 0xd0, - 0x06, 0xd8, 0x57, 0x26, 0x43, 0xe1, 0xd4, 0xed, 0xd5, 0x62, 0xc5, 0xd0, 0x12, 0x41, 0xf7, 0x3a, - 0x30, 0x12, 0x6c, 0xd7, 0x7e, 0x36, 0x31, 0xf5, 0x75, 0x05, 0xd2, 0x81, 0xf6, 0x0b, 0x2f, 0xfc, - 0x66, 0xb3, 0x69, 0x3f, 0x55, 0x35, 0x9b, 0x0d, 0xd3, 0x61, 0x41, 0x01, 0x64, 0xa8, 0x80, 0x47, - 0xe2, 0x3a, 0xed, 0x67, 0xa2, 0xfc, 0x73, 0x0a, 0x68, 0x72, 0xeb, 0x26, 0x29, 0xa8, 0xfc, 0x5c, - 0x15, 0xfc, 0xa4, 0x02, 0x63, 0x62, 0xbf, 0x26, 0xa9, 0x77, 0xe2, 0xe7, 0xaa, 0xde, 0x27, 0x14, - 0x18, 0x15, 0xba, 0xb4, 0x5f, 0x28, 0xed, 0x3e, 0xae, 0xc2, 0xd1, 0x10, 0x9c, 0x5e, 0x60, 0xed, - 0x2c, 0xed, 0xb0, 0x1f, 0x88, 0xf3, 0xac, 0x79, 0xbc, 0x5a, 0x6e, 0x98, 0x1d, 0x97, 0x75, 0xbf, - 0xf7, 0x81, 0xd6, 0xa8, 0x23, 0xcb, 0x6d, 0xec, 0x34, 0x50, 0x87, 0xbd, 0x82, 0xd3, 0x1e, 0x77, - 0xdc, 0x1f, 0xa7, 0x6f, 0xe1, 0xf7, 0x83, 0xde, 0xb6, 0x9d, 0x86, 0xdb, 0x78, 0x12, 0x55, 0x1b, - 0x16, 0x7f, 0x5f, 0xc7, 0x3d, 0x6f, 0xd2, 0xd0, 0x38, 0x65, 0xc5, 0x72, 0x3d, 0x6e, 0x0b, 0xed, - 0x9a, 0x12, 0x37, 0xae, 0x7d, 0xaa, 0xa1, 0x71, 0x8a, 0xc7, 0x7d, 0x02, 0x46, 0xea, 0x76, 0x17, - 0xb7, 0x0f, 0x94, 0x0f, 0x97, 0x5a, 0xc5, 0x48, 0xd3, 0x31, 0x8f, 0x85, 0xf5, 0x77, 0xfe, 0x46, - 0xc1, 0x88, 0x91, 0xa6, 0x63, 0x94, 0xe5, 0x5e, 0x18, 0x37, 0x77, 0x77, 0x3b, 0x58, 0x38, 0x17, - 0x44, 0x9b, 0xd6, 0x31, 0x6f, 0x98, 0x30, 0x4e, 0x5d, 0x85, 0x14, 0xb7, 0x03, 0x5e, 0xcd, 0xb0, - 0x25, 0xaa, 0x6d, 0xba, 0x5d, 0x93, 0x98, 0x1d, 0x36, 0x52, 0x16, 0x27, 0x9e, 0x80, 0x91, 0x86, - 0x53, 0xf5, 0xf7, 0x0d, 0x13, 0x33, 0x89, 0xd9, 0x94, 0x91, 0x6e, 0x38, 0xde, 0x46, 0x51, 0xee, - 0xf3, 0x09, 0x18, 0x13, 0xf7, 0x3d, 0xf5, 0x32, 0xa4, 0x9a, 0x76, 0xcd, 0x24, 0x81, 0x40, 0x37, - 0xdd, 0x67, 0x23, 0xb6, 0x4a, 0xe7, 0xaf, 0x31, 0x7e, 0xc3, 0x43, 0x4e, 0xfd, 0xb3, 0x02, 0x29, - 0x3e, 0xac, 0x4f, 0x42, 0xb2, 0x6d, 0xba, 0x7b, 0x44, 0xdc, 0x60, 0x31, 0xa1, 0x29, 0x06, 0xf9, - 0x8e, 0xc7, 0x9d, 0xb6, 0x69, 0x91, 0x10, 0x60, 0xe3, 0xf8, 0x3b, 0xf6, 0x6b, 0x13, 0x99, 0x75, - 0xd2, 0x0e, 0xdb, 0xad, 0x16, 0xb2, 0x5c, 0x87, 0xfb, 0x95, 0x8d, 0x97, 0xd8, 0xb0, 0xfe, 0x36, - 0x98, 0x70, 0x3b, 0x66, 0xa3, 0x29, 0xf0, 0x26, 0x09, 0xaf, 0xc6, 0x09, 0x1e, 0x73, 0x1e, 0xee, - 0xe0, 0x72, 0xeb, 0xc8, 0x35, 0x6b, 0x7b, 0xa8, 0xee, 0x83, 0x86, 0xc8, 0xa6, 0xda, 0xed, 0x8c, - 0xa1, 0xcc, 0xe8, 0x1c, 0x9b, 0xfb, 0x96, 0x02, 0x13, 0xbc, 0x81, 0xaf, 0x7b, 0xc6, 0x5a, 0x05, - 0x30, 0x2d, 0xcb, 0x76, 0x83, 0xe6, 0xea, 0x0d, 0xe5, 0x1e, 0xdc, 0x7c, 0xc1, 0x03, 0x19, 0x01, - 0x01, 0x53, 0x2d, 0x00, 0x9f, 0xd2, 0xd7, 0x6c, 0xd3, 0x90, 0x66, 0x9b, 0xda, 0xe4, 0x64, 0x84, - 0xbe, 0xf5, 0x01, 0x1d, 0xc2, 0x9d, 0xbe, 0x7e, 0x0c, 0x06, 0xaf, 0xa3, 0xdd, 0x86, 0xc5, 0xb6, - 0xda, 0xe8, 0x17, 0xbe, 0x81, 0x97, 0xf4, 0x36, 0xf0, 0x8a, 0xef, 0x81, 0xa3, 0x35, 0xbb, 0x25, - 0xab, 0x5b, 0xd4, 0xa4, 0x37, 0x4f, 0xe7, 0x11, 0xe5, 0xdd, 0xe0, 0x77, 0x67, 0xcf, 0x2b, 0xca, - 0x67, 0x13, 0xea, 0xf2, 0x46, 0xf1, 0x8b, 0x89, 0xa9, 0x65, 0x0a, 0xdd, 0xe0, 0x33, 0x35, 0xd0, - 0x4e, 0x13, 0xd5, 0xb0, 0xf6, 0xf0, 0xa3, 0x53, 0xf0, 0xc0, 0x6e, 0xc3, 0xdd, 0xeb, 0x5e, 0x9f, - 0xaf, 0xd9, 0xad, 0xd3, 0xbb, 0xf6, 0xae, 0xed, 0x1f, 0x06, 0xe1, 0x6f, 0xe4, 0x0b, 0xf9, 0xc4, - 0x0e, 0x84, 0x86, 0xbd, 0xd1, 0xa9, 0xc8, 0xd3, 0xa3, 0xfc, 0x1a, 0x1c, 0x65, 0xcc, 0x55, 0xb2, - 0x23, 0x4d, 0xfb, 0x70, 0xfd, 0xc0, 0x5d, 0x89, 0xcc, 0x97, 0xbf, 0x47, 0x56, 0x3a, 0x63, 0x82, - 0x41, 0x31, 0x8d, 0x76, 0xea, 0x79, 0x03, 0x6e, 0x13, 0xe4, 0xd1, 0xd4, 0x44, 0x9d, 0x08, 0x89, - 0xdf, 0x64, 0x12, 0x8f, 0x06, 0x24, 0x6e, 0x32, 0x68, 0xbe, 0x04, 0xa3, 0x87, 0x91, 0xf5, 0x0f, - 0x4c, 0xd6, 0x08, 0x0a, 0x0a, 0x59, 0x86, 0x71, 0x22, 0xa4, 0xd6, 0x75, 0x5c, 0xbb, 0x45, 0xea, - 0xde, 0xc1, 0x62, 0xfe, 0xf1, 0x7b, 0x34, 0x57, 0xc6, 0x30, 0xac, 0xe4, 0xa1, 0xf2, 0x79, 0x20, - 0x9b, 0xf0, 0x75, 0x54, 0x6b, 0x46, 0x48, 0xb8, 0xc1, 0x14, 0xf1, 0xf8, 0xf3, 0xef, 0x84, 0x63, - 0xf8, 0x33, 0x29, 0x4b, 0x41, 0x4d, 0xa2, 0xf7, 0x60, 0x32, 0xdf, 0x7a, 0x3f, 0x4d, 0xc7, 0xa3, - 0x9e, 0x80, 0x80, 0x4e, 0x01, 0x2f, 0xee, 0x22, 0xd7, 0x45, 0x1d, 0xa7, 0x6a, 0x36, 0xc3, 0xd4, - 0x0b, 0xbc, 0xc1, 0x66, 0x3e, 0xf6, 0xaa, 0xe8, 0xc5, 0x65, 0x8a, 0x2c, 0x34, 0x9b, 0xf9, 0x6d, - 0xb8, 0x3d, 0x24, 0x2a, 0x62, 0xc8, 0xfc, 0x38, 0x93, 0x79, 0xac, 0x27, 0x32, 0xb0, 0xd8, 0x0d, - 0xe0, 0xe3, 0x9e, 0x2f, 0x63, 0xc8, 0xfc, 0x04, 0x93, 0xa9, 0x33, 0x2c, 0x77, 0x29, 0x96, 0x78, - 0x15, 0x26, 0x9e, 0x44, 0x9d, 0xeb, 0xb6, 0xc3, 0x36, 0x0e, 0x62, 0x88, 0xfb, 0x24, 0x13, 0x37, - 0xce, 0x80, 0x64, 0x1b, 0x01, 0xcb, 0xba, 0x04, 0xa9, 0x1d, 0xb3, 0x86, 0x62, 0x88, 0xf8, 0x14, - 0x13, 0x71, 0x04, 0xf3, 0x63, 0x68, 0x01, 0x46, 0x76, 0x6d, 0xb6, 0x32, 0x45, 0xc3, 0x9f, 0x63, - 0xf0, 0x34, 0xc7, 0x30, 0x11, 0x6d, 0xbb, 0xdd, 0x6d, 0xe2, 0x65, 0x2b, 0x5a, 0xc4, 0xa7, 0xb9, - 0x08, 0x8e, 0x61, 0x22, 0x0e, 0x61, 0xd6, 0xe7, 0xb9, 0x08, 0x27, 0x60, 0xcf, 0x87, 0x21, 0x6d, - 0x5b, 0xcd, 0x7d, 0xdb, 0x8a, 0xa3, 0xc4, 0x67, 0x98, 0x04, 0x60, 0x10, 0x2c, 0xe0, 0x32, 0x0c, - 0xc7, 0x75, 0xc4, 0xe7, 0x5e, 0xe5, 0xe9, 0xc1, 0x3d, 0xb0, 0x0c, 0xe3, 0xbc, 0x40, 0x35, 0x6c, - 0x2b, 0x86, 0x88, 0x3f, 0x61, 0x22, 0xc6, 0x02, 0x30, 0x36, 0x0d, 0x17, 0x39, 0xee, 0x2e, 0x8a, - 0x23, 0xe4, 0xf3, 0x7c, 0x1a, 0x0c, 0xc2, 0x4c, 0x79, 0x1d, 0x59, 0xb5, 0xbd, 0x78, 0x12, 0x5e, - 0xe0, 0xa6, 0xe4, 0x18, 0x2c, 0xa2, 0x04, 0xa3, 0x2d, 0xb3, 0xe3, 0xec, 0x99, 0xcd, 0x58, 0xee, - 0xf8, 0x02, 0x93, 0x31, 0xe2, 0x81, 0x98, 0x45, 0xba, 0xd6, 0x61, 0xc4, 0x7c, 0x91, 0x5b, 0x24, - 0x00, 0x63, 0xa9, 0xe7, 0xb8, 0x64, 0x6f, 0xe6, 0x30, 0xd2, 0xfe, 0x94, 0xa7, 0x1e, 0xc5, 0xae, - 0x06, 0x25, 0x5e, 0x86, 0x61, 0xa7, 0xf1, 0x4c, 0x2c, 0x31, 0x7f, 0xc6, 0x3d, 0x4d, 0x00, 0x18, - 0xfc, 0x18, 0xdc, 0x11, 0xba, 0x4c, 0xc4, 0x10, 0xf6, 0xe7, 0x4c, 0xd8, 0x64, 0xc8, 0x52, 0xc1, - 0x4a, 0xc2, 0x61, 0x45, 0xfe, 0x05, 0x2f, 0x09, 0x48, 0x92, 0xb5, 0x81, 0x3b, 0x7b, 0xc7, 0xdc, - 0x39, 0x9c, 0xd5, 0xfe, 0x92, 0x5b, 0x8d, 0x62, 0x05, 0xab, 0x6d, 0xc1, 0x24, 0x93, 0x78, 0x38, - 0xbf, 0x7e, 0x89, 0x17, 0x56, 0x8a, 0xde, 0x16, 0xbd, 0xfb, 0x1e, 0x98, 0xf2, 0xcc, 0xc9, 0x9b, - 0x52, 0xa7, 0xda, 0x32, 0xdb, 0x31, 0x24, 0x7f, 0x99, 0x49, 0xe6, 0x15, 0xdf, 0xeb, 0x6a, 0x9d, - 0x55, 0xb3, 0x8d, 0x85, 0x3f, 0x0a, 0x19, 0x2e, 0xbc, 0x6b, 0x75, 0x50, 0xcd, 0xde, 0xb5, 0x1a, - 0xcf, 0xa0, 0x7a, 0x0c, 0xd1, 0x7f, 0x25, 0xb9, 0x6a, 0x3b, 0x00, 0xc7, 0x92, 0x57, 0x40, 0xf3, - 0x7a, 0x95, 0x6a, 0xa3, 0xd5, 0xb6, 0x3b, 0x6e, 0x84, 0xc4, 0xbf, 0xe6, 0x9e, 0xf2, 0x70, 0x2b, - 0x04, 0x96, 0xaf, 0xc0, 0x18, 0xf9, 0x1a, 0x37, 0x24, 0xbf, 0xc2, 0x04, 0x8d, 0xfa, 0x28, 0x56, - 0x38, 0x6a, 0x76, 0xab, 0x6d, 0x76, 0xe2, 0xd4, 0xbf, 0xbf, 0xe1, 0x85, 0x83, 0x41, 0x58, 0xe1, - 0x70, 0xf7, 0xdb, 0x08, 0xaf, 0xf6, 0x31, 0x24, 0x7c, 0x95, 0x17, 0x0e, 0x8e, 0x61, 0x22, 0x78, - 0xc3, 0x10, 0x43, 0xc4, 0xdf, 0x72, 0x11, 0x1c, 0x83, 0x45, 0xbc, 0xc3, 0x5f, 0x68, 0x3b, 0x68, - 0xb7, 0xe1, 0xb8, 0x1d, 0xda, 0x0a, 0x1f, 0x2c, 0xea, 0x6b, 0xaf, 0x8a, 0x4d, 0x98, 0x11, 0x80, - 0xe6, 0xaf, 0xc2, 0xb8, 0xd4, 0x62, 0xe8, 0x51, 0x27, 0xfa, 0x99, 0xf7, 0xbe, 0xc6, 0x8a, 0x91, - 0xd8, 0x61, 0xe4, 0xaf, 0x61, 0xbf, 0x8b, 0x7d, 0x40, 0xb4, 0xb0, 0xf7, 0xbf, 0xe6, 0xb9, 0x5e, - 0x68, 0x03, 0xf2, 0x57, 0x60, 0x54, 0xe8, 0x01, 0xa2, 0x45, 0xfd, 0x1a, 0x13, 0x35, 0x12, 0x6c, - 0x01, 0xf2, 0xe7, 0x20, 0x89, 0xd7, 0xf3, 0x68, 0xf8, 0xaf, 0x33, 0x38, 0x61, 0xcf, 0x3f, 0x08, - 0x29, 0xbe, 0x8e, 0x47, 0x43, 0x3f, 0xc0, 0xa0, 0x1e, 0x04, 0xc3, 0xf9, 0x1a, 0x1e, 0x0d, 0xff, - 0x0d, 0x0e, 0xe7, 0x10, 0x0c, 0x8f, 0x6f, 0xc2, 0x17, 0x3f, 0x9c, 0x64, 0x75, 0x98, 0xdb, 0xee, - 0x32, 0x1c, 0x61, 0x8b, 0x77, 0x34, 0xfa, 0x43, 0xec, 0xe1, 0x1c, 0x91, 0xbf, 0x00, 0x83, 0x31, - 0x0d, 0xfe, 0x5b, 0x0c, 0x4a, 0xf9, 0xf3, 0x25, 0x48, 0x07, 0x16, 0xec, 0x68, 0xf8, 0x6f, 0x33, - 0x78, 0x10, 0x85, 0x55, 0x67, 0x0b, 0x76, 0xb4, 0x80, 0xdf, 0xe1, 0xaa, 0x33, 0x04, 0x36, 0x1b, - 0x5f, 0xab, 0xa3, 0xd1, 0xbf, 0xcb, 0xad, 0xce, 0x21, 0xf9, 0x87, 0x61, 0xd8, 0xab, 0xbf, 0xd1, - 0xf8, 0xdf, 0x63, 0x78, 0x1f, 0x83, 0x2d, 0x10, 0xa8, 0xff, 0xd1, 0x22, 0x7e, 0x9f, 0x5b, 0x20, - 0x80, 0xc2, 0x69, 0x24, 0xaf, 0xe9, 0xd1, 0x92, 0x3e, 0xc2, 0xd3, 0x48, 0x5a, 0xd2, 0xb1, 0x37, - 0x49, 0x19, 0x8c, 0x16, 0xf1, 0x07, 0xdc, 0x9b, 0x84, 0x1f, 0xab, 0x21, 0x2f, 0x92, 0xd1, 0x32, - 0xfe, 0x88, 0xab, 0x21, 0xad, 0x91, 0xf9, 0x0d, 0xd0, 0x7b, 0x17, 0xc8, 0x68, 0x79, 0x1f, 0x65, - 0xf2, 0x26, 0x7a, 0xd6, 0xc7, 0xfc, 0xbb, 0x60, 0x32, 0x7c, 0x71, 0x8c, 0x96, 0xfa, 0xb1, 0xd7, - 0xa4, 0xd7, 0x99, 0xe0, 0xda, 0x98, 0xdf, 0xf2, 0xab, 0x6c, 0x70, 0x61, 0x8c, 0x16, 0xfb, 0xf1, - 0xd7, 0xc4, 0x42, 0x1b, 0x5c, 0x17, 0xf3, 0x05, 0x00, 0x7f, 0x4d, 0x8a, 0x96, 0xf5, 0x49, 0x26, - 0x2b, 0x00, 0xc2, 0xa9, 0xc1, 0x96, 0xa4, 0x68, 0xfc, 0xa7, 0x78, 0x6a, 0x30, 0x04, 0x4e, 0x0d, - 0xbe, 0x1a, 0x45, 0xa3, 0x9f, 0xe3, 0xa9, 0xc1, 0x21, 0xf9, 0xcb, 0x90, 0xb2, 0xba, 0xcd, 0x26, - 0x8e, 0x2d, 0xfd, 0xe0, 0x4b, 0x36, 0x99, 0xff, 0x78, 0x9d, 0x81, 0x39, 0x20, 0x7f, 0x0e, 0x06, - 0x51, 0xeb, 0x3a, 0xaa, 0x47, 0x21, 0xff, 0xf3, 0x75, 0x5e, 0x4f, 0x30, 0x77, 0xfe, 0x61, 0x00, - 0xfa, 0x32, 0x4d, 0xce, 0x58, 0x22, 0xb0, 0xff, 0xf5, 0x3a, 0x3b, 0xbf, 0xf7, 0x21, 0xbe, 0x00, - 0x7a, 0x1b, 0xe0, 0x60, 0x01, 0xaf, 0x8a, 0x02, 0xc8, 0x0b, 0xf8, 0x25, 0x38, 0xf2, 0xb8, 0x63, - 0x5b, 0xae, 0xb9, 0x1b, 0x85, 0xfe, 0x6f, 0x86, 0xe6, 0xfc, 0xd8, 0x60, 0x2d, 0xbb, 0x83, 0x5c, - 0x73, 0xd7, 0x89, 0xc2, 0xfe, 0x0f, 0xc3, 0x7a, 0x00, 0x0c, 0xae, 0x99, 0x8e, 0x1b, 0x67, 0xde, - 0xff, 0xcb, 0xc1, 0x1c, 0x80, 0x95, 0xc6, 0x9f, 0x9f, 0x40, 0xfb, 0x51, 0xd8, 0x1f, 0x70, 0xa5, - 0x19, 0x7f, 0xfe, 0x41, 0x18, 0xc6, 0x1f, 0xe9, 0x9d, 0x96, 0x08, 0xf0, 0x0f, 0x19, 0xd8, 0x47, - 0xe0, 0x27, 0x3b, 0x6e, 0xdd, 0x6d, 0x44, 0x1b, 0xfb, 0xff, 0x98, 0xa7, 0x39, 0x7f, 0xbe, 0x00, - 0x69, 0xc7, 0xad, 0xd7, 0xbb, 0xac, 0xa3, 0x89, 0x80, 0xff, 0xe8, 0x75, 0xef, 0x25, 0xd7, 0xc3, - 0x14, 0x4f, 0x84, 0xef, 0xd7, 0xc1, 0xb2, 0xbd, 0x6c, 0xd3, 0x9d, 0x3a, 0xf8, 0x7a, 0x13, 0x46, - 0xdd, 0x3d, 0x84, 0x97, 0x0b, 0xb6, 0xab, 0x96, 0xc4, 0x9f, 0xa7, 0x0e, 0xb7, 0x15, 0x47, 0xce, - 0x28, 0xd7, 0x1a, 0x58, 0x9b, 0x35, 0xb2, 0xd7, 0xad, 0x1f, 0x87, 0x21, 0xa2, 0xdf, 0x19, 0x72, - 0x14, 0xa3, 0x14, 0x93, 0x37, 0x5e, 0x9e, 0x1e, 0x30, 0xd8, 0x98, 0x47, 0x5d, 0x24, 0x9b, 0x91, - 0x09, 0x81, 0xba, 0xe8, 0x51, 0xcf, 0xd2, 0xfd, 0x48, 0x81, 0x7a, 0xd6, 0xa3, 0x2e, 0x91, 0x9d, - 0x49, 0x55, 0xa0, 0x2e, 0x79, 0xd4, 0x73, 0x64, 0xf7, 0x7d, 0x54, 0xa0, 0x9e, 0xf3, 0xa8, 0xe7, - 0xc9, 0x9e, 0x7b, 0x52, 0xa0, 0x9e, 0xf7, 0xa8, 0x17, 0xc8, 0x76, 0xfb, 0x84, 0x40, 0xbd, 0xe0, - 0x51, 0x2f, 0x92, 0x6d, 0x76, 0x5d, 0xa0, 0x5e, 0xf4, 0xa8, 0x97, 0xc8, 0x9d, 0x8a, 0x23, 0x02, - 0xf5, 0x92, 0x9e, 0x85, 0x23, 0x74, 0xe6, 0x0b, 0xe4, 0x38, 0x73, 0x9c, 0x91, 0xf9, 0xa0, 0x4f, - 0x3f, 0x43, 0xee, 0x4f, 0x0c, 0x89, 0xf4, 0x33, 0x3e, 0x7d, 0x91, 0x5c, 0x26, 0xd6, 0x44, 0xfa, - 0xa2, 0x4f, 0x3f, 0x9b, 0x19, 0xc5, 0x61, 0x20, 0xd2, 0xcf, 0xfa, 0xf4, 0xa5, 0xcc, 0x18, 0x0e, - 0x51, 0x91, 0xbe, 0xe4, 0xd3, 0xcf, 0x65, 0xc6, 0x67, 0x94, 0xd9, 0x11, 0x91, 0x7e, 0x2e, 0xf7, - 0x3e, 0xe2, 0x5e, 0xcb, 0x77, 0xef, 0xa4, 0xe8, 0x5e, 0xcf, 0xb1, 0x93, 0xa2, 0x63, 0x3d, 0x97, - 0x4e, 0x8a, 0x2e, 0xf5, 0x9c, 0x39, 0x29, 0x3a, 0xd3, 0x73, 0xe3, 0xa4, 0xe8, 0x46, 0xcf, 0x81, - 0x93, 0xa2, 0x03, 0x3d, 0xd7, 0x4d, 0x8a, 0xae, 0xf3, 0x9c, 0x36, 0x29, 0x3a, 0xcd, 0x73, 0xd7, - 0xa4, 0xe8, 0x2e, 0xcf, 0x51, 0x19, 0xc9, 0x51, 0xbe, 0x8b, 0x32, 0x92, 0x8b, 0x7c, 0xe7, 0x64, - 0x24, 0xe7, 0xf8, 0x6e, 0xc9, 0x48, 0x6e, 0xf1, 0x1d, 0x92, 0x91, 0x1c, 0xe2, 0xbb, 0x22, 0x23, - 0xb9, 0xc2, 0x77, 0x02, 0xcb, 0x31, 0x03, 0xb5, 0x43, 0x72, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, - 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, - 0x3d, 0x30, 0xc7, 0xd4, 0x03, 0x73, 0x4c, 0x3d, 0x38, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, - 0x4c, 0x8d, 0xc8, 0x31, 0x35, 0x22, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0xfb, 0xe6, 0x98, 0xef, 0xde, - 0x49, 0xd1, 0xbd, 0xa1, 0x39, 0xa6, 0xf6, 0xc9, 0x31, 0xb5, 0x4f, 0x8e, 0xa9, 0x7d, 0x72, 0x4c, - 0xed, 0x93, 0x63, 0x6a, 0x9f, 0x1c, 0x53, 0xfb, 0xe4, 0x98, 0xda, 0x27, 0xc7, 0xd4, 0x7e, 0x39, - 0xa6, 0xf6, 0xcd, 0x31, 0xb5, 0x6f, 0x8e, 0xa9, 0x7d, 0x73, 0x4c, 0xed, 0x9b, 0x63, 0x6a, 0xdf, - 0x1c, 0x53, 0x83, 0x39, 0xf6, 0x77, 0x2a, 0xe8, 0x34, 0xc7, 0x36, 0xc8, 0x85, 0x18, 0xe6, 0x8a, - 0xac, 0x94, 0x69, 0x43, 0xd8, 0x75, 0x9a, 0xef, 0x92, 0xac, 0x94, 0x6b, 0x22, 0x7d, 0xd1, 0xa3, - 0xf3, 0x6c, 0x13, 0xe9, 0x67, 0x3d, 0x3a, 0xcf, 0x37, 0x91, 0xbe, 0xe4, 0xd1, 0x79, 0xc6, 0x89, - 0xf4, 0x73, 0x1e, 0x9d, 0xe7, 0x9c, 0x48, 0x3f, 0xef, 0xd1, 0x79, 0xd6, 0x89, 0xf4, 0x0b, 0x1e, - 0x9d, 0xe7, 0x9d, 0x48, 0xbf, 0xe8, 0xd1, 0x79, 0xe6, 0x89, 0xf4, 0x4b, 0xfa, 0x8c, 0x9c, 0x7b, - 0x9c, 0xc1, 0x73, 0xed, 0x8c, 0x9c, 0x7d, 0x12, 0xc7, 0x19, 0x9f, 0x83, 0xe7, 0x9f, 0xc4, 0xb1, - 0xe8, 0x73, 0xf0, 0x0c, 0x94, 0x38, 0xce, 0xe6, 0x3e, 0x48, 0xdc, 0x67, 0xc9, 0xee, 0x9b, 0x92, - 0xdc, 0x97, 0x08, 0xb8, 0x6e, 0x4a, 0x72, 0x5d, 0x22, 0xe0, 0xb6, 0x29, 0xc9, 0x6d, 0x89, 0x80, - 0xcb, 0xa6, 0x24, 0x97, 0x25, 0x02, 0xee, 0x9a, 0x92, 0xdc, 0x95, 0x08, 0xb8, 0x6a, 0x4a, 0x72, - 0x55, 0x22, 0xe0, 0xa6, 0x29, 0xc9, 0x4d, 0x89, 0x80, 0x8b, 0xa6, 0x24, 0x17, 0x25, 0x02, 0xee, - 0x99, 0x92, 0xdc, 0x93, 0x08, 0xb8, 0xe6, 0xb8, 0xec, 0x9a, 0x44, 0xd0, 0x2d, 0xc7, 0x65, 0xb7, - 0x24, 0x82, 0x2e, 0x39, 0x2e, 0xbb, 0x24, 0x11, 0x74, 0xc7, 0x71, 0xd9, 0x1d, 0x89, 0xa0, 0x2b, - 0x7e, 0x9a, 0xe0, 0x1d, 0xe1, 0xa6, 0xdb, 0xe9, 0xd6, 0xdc, 0x5b, 0xea, 0x08, 0x17, 0x84, 0xf6, - 0x21, 0xbd, 0xa8, 0xcf, 0x93, 0x86, 0x35, 0xd8, 0x71, 0x4a, 0x2b, 0xd8, 0x82, 0xd0, 0x58, 0x04, - 0x10, 0x56, 0x38, 0x62, 0xe9, 0x96, 0x7a, 0xc3, 0x05, 0xa1, 0xcd, 0x88, 0xd6, 0xef, 0xe2, 0x5b, - 0xde, 0xb1, 0xbd, 0x98, 0xe0, 0x1d, 0x1b, 0x33, 0xff, 0x61, 0x3b, 0xb6, 0xb9, 0x68, 0x93, 0x7b, - 0xc6, 0x9e, 0x8b, 0x36, 0x76, 0xcf, 0xaa, 0x13, 0xb7, 0x83, 0x9b, 0x8b, 0x36, 0xad, 0x67, 0xd4, - 0x37, 0xb7, 0xdf, 0x62, 0x11, 0x6c, 0xa0, 0x76, 0x48, 0x04, 0x1f, 0xb6, 0xdf, 0x5a, 0x10, 0x4a, - 0xc9, 0x61, 0x23, 0x58, 0x3d, 0x74, 0x04, 0x1f, 0xb6, 0xf3, 0x5a, 0x10, 0xca, 0xcb, 0xa1, 0x23, - 0xf8, 0x2d, 0xe8, 0x87, 0x58, 0x04, 0xfb, 0xe6, 0x3f, 0x6c, 0x3f, 0x34, 0x17, 0x6d, 0xf2, 0xd0, - 0x08, 0x56, 0x0f, 0x11, 0xc1, 0x71, 0xfa, 0xa3, 0xb9, 0x68, 0xd3, 0x86, 0x47, 0xf0, 0x2d, 0x77, - 0x33, 0x9f, 0x56, 0x60, 0x62, 0xad, 0x51, 0xaf, 0xb4, 0xae, 0xa3, 0x7a, 0x1d, 0xd5, 0x99, 0x1d, - 0x17, 0x84, 0x4a, 0xd0, 0xc7, 0xd5, 0x2f, 0xbd, 0x3c, 0xed, 0x5b, 0xf8, 0x1c, 0xa4, 0xa8, 0x4d, - 0x17, 0x16, 0x32, 0x37, 0x94, 0x88, 0x0a, 0xe7, 0xb1, 0xea, 0x27, 0x38, 0xec, 0xcc, 0x42, 0xe6, - 0x5f, 0x94, 0x40, 0x95, 0xf3, 0x86, 0x73, 0x1f, 0x21, 0x1a, 0x5a, 0xb7, 0xac, 0xe1, 0xe9, 0x58, - 0x1a, 0x06, 0x74, 0xbb, 0xb3, 0x47, 0xb7, 0x80, 0x56, 0x5d, 0x18, 0x5f, 0x6b, 0xd4, 0xd7, 0xc8, - 0x9f, 0xb1, 0xc6, 0x51, 0x89, 0xf2, 0x48, 0xf5, 0x60, 0x41, 0x08, 0xcb, 0x20, 0xc2, 0x0b, 0x69, - 0xb1, 0x46, 0xe4, 0x1a, 0xf8, 0xb1, 0x96, 0xf0, 0xd8, 0xb9, 0x7e, 0x8f, 0xf5, 0x2b, 0xbb, 0xf7, - 0xc0, 0xb9, 0x7e, 0x0f, 0xf4, 0x73, 0xc8, 0x7b, 0xd4, 0xd3, 0x7c, 0x71, 0xa6, 0x77, 0x6b, 0xf4, - 0xe3, 0x90, 0x58, 0xa1, 0xb7, 0x66, 0x47, 0x8a, 0x23, 0x58, 0xa9, 0x6f, 0xbf, 0x3c, 0x9d, 0xdc, - 0xee, 0x36, 0xea, 0x46, 0x62, 0xa5, 0xae, 0x5f, 0x85, 0xc1, 0x77, 0xb2, 0x3f, 0x06, 0xc3, 0x0c, - 0x4b, 0x8c, 0xe1, 0xfe, 0xbe, 0x7b, 0x44, 0xf8, 0xc1, 0xa7, 0xe9, 0xae, 0xe1, 0xfc, 0x76, 0xc3, - 0x72, 0xcf, 0x2c, 0x5e, 0x34, 0xa8, 0x88, 0xdc, 0x2f, 0x03, 0xd0, 0x67, 0x96, 0x4d, 0x67, 0x4f, - 0x5f, 0xe3, 0x92, 0xe9, 0xa3, 0x2f, 0x7e, 0xfb, 0xe5, 0xe9, 0xa5, 0x38, 0x52, 0x1f, 0xa8, 0x9b, - 0xce, 0xde, 0x03, 0xee, 0x7e, 0x1b, 0xcd, 0x17, 0xf7, 0x5d, 0xe4, 0x70, 0xe9, 0x6d, 0xbe, 0xea, - 0xb1, 0x79, 0x65, 0x02, 0xf3, 0x4a, 0x09, 0x73, 0xba, 0x22, 0xce, 0x69, 0xe1, 0x8d, 0xce, 0xe7, - 0x69, 0xbe, 0x48, 0x48, 0x96, 0x54, 0xa3, 0x2c, 0xa9, 0xde, 0xaa, 0x25, 0xdb, 0xbc, 0x3e, 0x4a, - 0x73, 0x55, 0x0f, 0x9a, 0xab, 0x7a, 0x2b, 0x73, 0xfd, 0x31, 0xcd, 0x56, 0x2f, 0x9f, 0xb6, 0x2d, - 0x7a, 0xed, 0xf0, 0x17, 0x6b, 0x2f, 0xe8, 0x4d, 0xed, 0x02, 0xf2, 0xc9, 0x1b, 0xcf, 0x4f, 0x2b, - 0xb9, 0x4f, 0x27, 0xf8, 0xcc, 0x69, 0x22, 0xbd, 0xb1, 0x99, 0xff, 0xa2, 0xf4, 0x54, 0x6f, 0x85, - 0x85, 0x9e, 0x53, 0x60, 0xb2, 0xa7, 0x92, 0x53, 0x33, 0xbd, 0xb9, 0xe5, 0xdc, 0x3a, 0x6c, 0x39, - 0x67, 0x0a, 0x7e, 0x45, 0x81, 0x63, 0x52, 0x79, 0xa5, 0xea, 0x9d, 0x96, 0xd4, 0xbb, 0xbd, 0xf7, - 0x49, 0x84, 0x31, 0xa0, 0x5d, 0xd0, 0xbd, 0x12, 0x20, 0x20, 0xd9, 0xf3, 0xfb, 0x92, 0xe4, 0xf7, - 0xe3, 0x1e, 0x20, 0xc4, 0x5c, 0x3c, 0x02, 0x98, 0xda, 0x36, 0x24, 0xb7, 0x3a, 0x08, 0xe9, 0x59, - 0x48, 0xac, 0x77, 0x98, 0x86, 0x63, 0x14, 0xbf, 0xde, 0x29, 0x76, 0x4c, 0xab, 0xb6, 0x67, 0x24, - 0xd6, 0x3b, 0xfa, 0x09, 0x50, 0x0b, 0xec, 0xcf, 0xed, 0xd3, 0x8b, 0xe3, 0x94, 0xa1, 0x60, 0xd5, - 0x19, 0x07, 0xa6, 0xe9, 0x59, 0x48, 0x5e, 0x43, 0xe6, 0x0e, 0x53, 0x02, 0x28, 0x0f, 0x1e, 0x31, - 0xc8, 0x38, 0x7b, 0xe0, 0xa3, 0x90, 0xe2, 0x82, 0xf5, 0x93, 0x18, 0xb1, 0xe3, 0xb2, 0xc7, 0x32, - 0x04, 0x56, 0x87, 0xad, 0x5c, 0x84, 0xaa, 0x9f, 0x82, 0x41, 0xa3, 0xb1, 0xbb, 0xe7, 0xb2, 0x87, - 0xf7, 0xb2, 0x51, 0x72, 0xee, 0x31, 0x18, 0xf6, 0x34, 0x7a, 0x93, 0x45, 0x97, 0xe9, 0xd4, 0xf4, - 0xa9, 0xe0, 0x7a, 0xc2, 0xf7, 0x2d, 0xe9, 0x90, 0x3e, 0x03, 0xa9, 0x4d, 0xb7, 0xe3, 0x17, 0x7d, - 0xde, 0x91, 0x7a, 0xa3, 0xb9, 0xf7, 0x29, 0x90, 0x2a, 0x23, 0xd4, 0x26, 0x06, 0xbf, 0x07, 0x92, - 0x65, 0xfb, 0x29, 0x8b, 0x29, 0x38, 0xc1, 0x2c, 0x8a, 0xc9, 0xcc, 0xa6, 0x84, 0xac, 0xdf, 0x13, - 0xb4, 0xfb, 0x51, 0xcf, 0xee, 0x01, 0x3e, 0x62, 0xfb, 0x9c, 0x60, 0x7b, 0xe6, 0x40, 0xcc, 0xd4, - 0x63, 0xff, 0x0b, 0x90, 0x0e, 0x3c, 0x45, 0x9f, 0x65, 0x6a, 0x24, 0x64, 0x60, 0xd0, 0x56, 0x98, - 0x23, 0x87, 0x60, 0x54, 0x78, 0x30, 0x86, 0x06, 0x4c, 0xdc, 0x07, 0x4a, 0xcc, 0x3c, 0x27, 0x9a, - 0x39, 0x9c, 0x95, 0x99, 0x7a, 0x81, 0xda, 0x88, 0x98, 0xfb, 0x24, 0x0d, 0xce, 0xfe, 0x4e, 0xc4, - 0x9f, 0x73, 0x83, 0xa0, 0xae, 0x35, 0x9a, 0xb9, 0x07, 0x01, 0x68, 0xca, 0x57, 0xac, 0x6e, 0x4b, - 0xca, 0xba, 0x31, 0x6e, 0xe0, 0xad, 0x3d, 0xb4, 0x85, 0x1c, 0xc2, 0x22, 0xf6, 0x53, 0xb8, 0xc0, - 0x00, 0x4d, 0x31, 0x82, 0xbf, 0x2f, 0x12, 0x1f, 0xda, 0x89, 0x61, 0xd6, 0x0c, 0x65, 0x7d, 0x0c, - 0xb9, 0x05, 0xcb, 0x76, 0xf7, 0x50, 0x47, 0x42, 0x2c, 0xea, 0x67, 0x85, 0x84, 0x1d, 0x5b, 0xbc, - 0xd3, 0x43, 0xf4, 0x05, 0x9d, 0xcd, 0x7d, 0x89, 0x28, 0x88, 0x5b, 0x81, 0x9e, 0x09, 0xaa, 0x31, - 0x26, 0xa8, 0x9f, 0x17, 0xfa, 0xb7, 0x03, 0xd4, 0x94, 0x5e, 0x2d, 0x2f, 0x09, 0xef, 0x39, 0x07, - 0x2b, 0x2b, 0xbe, 0x63, 0x72, 0x9b, 0x72, 0x95, 0xef, 0x8b, 0x54, 0xb9, 0x4f, 0x77, 0x7b, 0x58, - 0x9b, 0xaa, 0x71, 0x6d, 0xfa, 0x75, 0xaf, 0xe3, 0xa0, 0x3f, 0x5c, 0x40, 0x7e, 0x27, 0x43, 0xbf, - 0x3f, 0xd2, 0xf7, 0x79, 0xa5, 0xe4, 0xa9, 0xba, 0x14, 0xd7, 0xfd, 0xf9, 0x44, 0xb1, 0xe8, 0xa9, - 0x7b, 0xe1, 0x10, 0x21, 0x90, 0x4f, 0x94, 0x4a, 0x5e, 0xd9, 0x4e, 0x7d, 0xf0, 0xf9, 0x69, 0xe5, - 0x85, 0xe7, 0xa7, 0x07, 0x72, 0x5f, 0x50, 0x60, 0x82, 0x71, 0x06, 0x02, 0xf7, 0x01, 0x49, 0xf9, - 0xdb, 0x78, 0xcd, 0x08, 0xb3, 0xc0, 0xcf, 0x2c, 0x78, 0xbf, 0xa9, 0x40, 0xa6, 0x47, 0x57, 0x6e, - 0xef, 0x85, 0x58, 0x2a, 0xe7, 0x95, 0xca, 0xcf, 0xdf, 0xe6, 0x8f, 0xc1, 0xe0, 0x56, 0xa3, 0x85, - 0x3a, 0x78, 0x25, 0xc0, 0x1f, 0xa8, 0xca, 0xfc, 0x30, 0x87, 0x0e, 0x71, 0x1a, 0x55, 0x4e, 0xa0, - 0x2d, 0xea, 0x19, 0x48, 0x96, 0x4d, 0xd7, 0x24, 0x1a, 0x8c, 0x78, 0xf5, 0xd5, 0x74, 0xcd, 0xdc, - 0x59, 0x18, 0x59, 0xdd, 0x27, 0x17, 0x63, 0xea, 0xe4, 0xd2, 0x87, 0xd8, 0xfd, 0xf1, 0x7e, 0xf5, - 0xcc, 0xdc, 0x60, 0xaa, 0xae, 0xdd, 0x50, 0xf2, 0x49, 0xa2, 0xcf, 0x93, 0x30, 0xb6, 0x8e, 0xd5, - 0x26, 0x38, 0x01, 0x46, 0x9f, 0xae, 0x7a, 0x93, 0x97, 0x9a, 0x32, 0xd5, 0x6f, 0xca, 0x66, 0x40, - 0x59, 0x15, 0x5b, 0xa7, 0xa0, 0x1e, 0x86, 0xb2, 0x3a, 0x97, 0x4c, 0x8d, 0x69, 0x13, 0x73, 0xc9, - 0x14, 0x68, 0xa3, 0xec, 0xb9, 0xff, 0xa4, 0x82, 0x46, 0x5b, 0x9d, 0x32, 0xda, 0x69, 0x58, 0x0d, - 0xb7, 0xb7, 0x5f, 0xf5, 0x34, 0xd6, 0x1f, 0x86, 0x61, 0x6c, 0xd2, 0x2b, 0xec, 0xe7, 0xa6, 0xb0, - 0xe9, 0x4f, 0xb0, 0x16, 0x45, 0x12, 0xc1, 0x06, 0x48, 0xe8, 0xf8, 0x18, 0xfd, 0x0a, 0xa8, 0x6b, - 0x6b, 0xab, 0x6c, 0x71, 0x5b, 0x3a, 0x10, 0xca, 0xee, 0xd5, 0xb0, 0x6f, 0x6c, 0xcc, 0xd9, 0x35, - 0xb0, 0x00, 0x7d, 0x09, 0x12, 0x6b, 0xab, 0xac, 0xe1, 0x3d, 0x19, 0x47, 0x8c, 0x91, 0x58, 0x5b, - 0x9d, 0xfa, 0x7b, 0x05, 0x46, 0x85, 0x51, 0x3d, 0x07, 0x23, 0x74, 0x20, 0x30, 0xdd, 0x21, 0x43, - 0x18, 0xe3, 0x3a, 0x27, 0x6e, 0x51, 0xe7, 0xa9, 0x02, 0x8c, 0x4b, 0xe3, 0xfa, 0x3c, 0xe8, 0xc1, - 0x21, 0xa6, 0x04, 0xfd, 0xa9, 0x9e, 0x10, 0x4a, 0xee, 0x2e, 0x00, 0xdf, 0xae, 0xde, 0x2f, 0xcc, - 0xac, 0x55, 0x36, 0xb7, 0x2a, 0x65, 0x4d, 0xc9, 0x7d, 0x55, 0x81, 0x34, 0x6b, 0x5b, 0x6b, 0x76, - 0x1b, 0xe9, 0x45, 0x50, 0x0a, 0x2c, 0x1e, 0xde, 0x98, 0xde, 0x4a, 0x41, 0x3f, 0x0d, 0x4a, 0x31, - 0xbe, 0xab, 0x95, 0xa2, 0xbe, 0x08, 0x4a, 0x89, 0x39, 0x38, 0x9e, 0x67, 0x94, 0x52, 0xee, 0x87, - 0x2a, 0x1c, 0x0d, 0xb6, 0xd1, 0xbc, 0x9e, 0x9c, 0x10, 0xdf, 0x9b, 0xf2, 0xc3, 0x67, 0x16, 0xcf, - 0x2e, 0xcd, 0xe3, 0x7f, 0xbc, 0x90, 0x3c, 0x21, 0xbe, 0x42, 0xf5, 0xb2, 0xf4, 0x5c, 0x13, 0xc9, - 0x27, 0x03, 0xd4, 0x9e, 0x6b, 0x22, 0x02, 0xb5, 0xe7, 0x9a, 0x88, 0x40, 0xed, 0xb9, 0x26, 0x22, - 0x50, 0x7b, 0x8e, 0x02, 0x04, 0x6a, 0xcf, 0x35, 0x11, 0x81, 0xda, 0x73, 0x4d, 0x44, 0xa0, 0xf6, - 0x5e, 0x13, 0x61, 0xe4, 0xbe, 0xd7, 0x44, 0x44, 0x7a, 0xef, 0x35, 0x11, 0x91, 0xde, 0x7b, 0x4d, - 0x24, 0x9f, 0x74, 0x3b, 0x5d, 0xd4, 0xff, 0xd0, 0x41, 0xc4, 0x1f, 0xf4, 0x0e, 0xe8, 0x17, 0xe0, - 0x75, 0x18, 0xa7, 0xfb, 0x11, 0x25, 0xdb, 0x72, 0xcd, 0x86, 0x85, 0x3a, 0xfa, 0xdb, 0x61, 0x84, - 0x0e, 0xd1, 0xb7, 0x9c, 0xb0, 0xb7, 0x40, 0x4a, 0x67, 0xe5, 0x56, 0xe0, 0xce, 0xfd, 0x34, 0x09, - 0x93, 0x74, 0x60, 0xcd, 0x6c, 0x21, 0xe1, 0x92, 0xd1, 0x29, 0xe9, 0x48, 0x69, 0x0c, 0xc3, 0x6f, - 0xbe, 0x3c, 0x4d, 0x47, 0x0b, 0x5e, 0x30, 0x9d, 0x92, 0x0e, 0x97, 0x44, 0x3e, 0x7f, 0xfd, 0x39, - 0x25, 0x5d, 0x3c, 0x12, 0xf9, 0xbc, 0xe5, 0xc6, 0xe3, 0xe3, 0x57, 0x90, 0x44, 0xbe, 0xb2, 0x17, - 0x65, 0xa7, 0xa4, 0xcb, 0x48, 0x22, 0x5f, 0xc5, 0x8b, 0xb7, 0x53, 0xd2, 0xd1, 0x93, 0xc8, 0x77, - 0xc5, 0x8b, 0xbc, 0x53, 0xd2, 0x21, 0x94, 0xc8, 0xb7, 0xec, 0xc5, 0xe0, 0x29, 0xe9, 0xaa, 0x92, - 0xc8, 0xf7, 0x88, 0x17, 0x8d, 0xa7, 0xa4, 0x4b, 0x4b, 0x22, 0xdf, 0x8a, 0x17, 0x97, 0xb3, 0xf2, - 0xf5, 0x25, 0x91, 0xf1, 0xaa, 0x1f, 0xa1, 0xb3, 0xf2, 0x45, 0x26, 0x91, 0xf3, 0x97, 0xfc, 0x58, - 0x9d, 0x95, 0xaf, 0x34, 0x89, 0x9c, 0xd7, 0xfc, 0xa8, 0x9d, 0x95, 0x8f, 0xca, 0x44, 0xce, 0x55, - 0x3f, 0x7e, 0x67, 0xe5, 0x43, 0x33, 0x91, 0x73, 0xcd, 0x8f, 0xe4, 0x59, 0xf9, 0xf8, 0x4c, 0xe4, - 0x5c, 0xf7, 0xf7, 0xd0, 0xbf, 0x21, 0x85, 0x5f, 0xe0, 0x12, 0x54, 0x4e, 0x0a, 0x3f, 0x08, 0x09, - 0xbd, 0x9c, 0x14, 0x7a, 0x10, 0x12, 0x76, 0x39, 0x29, 0xec, 0x20, 0x24, 0xe4, 0x72, 0x52, 0xc8, - 0x41, 0x48, 0xb8, 0xe5, 0xa4, 0x70, 0x83, 0x90, 0x50, 0xcb, 0x49, 0xa1, 0x06, 0x21, 0x61, 0x96, - 0x93, 0xc2, 0x0c, 0x42, 0x42, 0x2c, 0x27, 0x85, 0x18, 0x84, 0x84, 0x57, 0x4e, 0x0a, 0x2f, 0x08, - 0x09, 0xad, 0x93, 0x72, 0x68, 0x41, 0x58, 0x58, 0x9d, 0x94, 0xc3, 0x0a, 0xc2, 0x42, 0xea, 0x6e, - 0x39, 0xa4, 0x86, 0x6f, 0xbe, 0x3c, 0x3d, 0x88, 0x87, 0x02, 0xd1, 0x74, 0x52, 0x8e, 0x26, 0x08, - 0x8b, 0xa4, 0x93, 0x72, 0x24, 0x41, 0x58, 0x14, 0x9d, 0x94, 0xa3, 0x08, 0xc2, 0x22, 0xe8, 0x45, - 0x39, 0x82, 0xfc, 0x2b, 0x3e, 0x39, 0xe9, 0x44, 0x31, 0x2a, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, - 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, 0x52, - 0x63, 0x44, 0x90, 0x1a, 0x27, 0x82, 0xd4, 0x58, 0x11, 0xa4, 0xf6, 0x8b, 0xa0, 0x93, 0xf2, 0x85, - 0x07, 0x08, 0x2b, 0x48, 0x27, 0xe5, 0x93, 0xcf, 0xe8, 0x10, 0x52, 0x63, 0x85, 0x90, 0xda, 0x2f, - 0x84, 0xbe, 0xa1, 0xc2, 0x51, 0x21, 0x84, 0xd8, 0xf1, 0xd0, 0x9b, 0x55, 0x81, 0xce, 0xc7, 0xb8, - 0x5f, 0x11, 0x16, 0x53, 0xe7, 0x63, 0x9c, 0x51, 0x1f, 0x14, 0x67, 0xbd, 0x55, 0xa8, 0x12, 0xa3, - 0x0a, 0x5d, 0xf1, 0x62, 0xe8, 0x7c, 0x8c, 0x7b, 0x17, 0xbd, 0xb1, 0x77, 0xf1, 0xa0, 0x22, 0xf0, - 0x48, 0xac, 0x22, 0xb0, 0x12, 0xab, 0x08, 0x5c, 0xf5, 0x3d, 0xf8, 0x81, 0x04, 0x1c, 0xf3, 0x3d, - 0x48, 0x3f, 0x91, 0x9f, 0x0d, 0xca, 0x05, 0x4e, 0xa8, 0x74, 0x7e, 0x6a, 0x13, 0x70, 0x63, 0x62, - 0xa5, 0xae, 0x6f, 0x88, 0x67, 0x55, 0xf9, 0xc3, 0x9e, 0xdf, 0x04, 0x3c, 0xce, 0xf6, 0x42, 0x4f, - 0x82, 0xba, 0x52, 0x77, 0x48, 0xb5, 0x08, 0x7b, 0x6c, 0xc9, 0xc0, 0x64, 0xdd, 0x80, 0x21, 0xc2, - 0xee, 0x10, 0xf7, 0xde, 0xca, 0x83, 0xcb, 0x06, 0x93, 0x94, 0x7b, 0x51, 0x81, 0x19, 0x21, 0x94, - 0xdf, 0x9c, 0x13, 0x83, 0xcb, 0xb1, 0x4e, 0x0c, 0x84, 0x04, 0xf1, 0x4f, 0x0f, 0xee, 0xed, 0x3d, - 0xa8, 0x0e, 0x66, 0x89, 0x7c, 0x92, 0xf0, 0xab, 0x30, 0xe6, 0xcf, 0x80, 0xbc, 0xb2, 0x9d, 0x8b, - 0xde, 0xcc, 0x0c, 0x4b, 0xcd, 0x73, 0xd2, 0x26, 0xda, 0x81, 0x30, 0x2f, 0x5b, 0x73, 0x79, 0x18, - 0x5f, 0x13, 0xff, 0x42, 0x27, 0x6a, 0x2f, 0x22, 0x85, 0x5b, 0xf3, 0x1b, 0x9f, 0x99, 0x1e, 0xc8, - 0xdd, 0x0f, 0x23, 0xc1, 0x3f, 0xc2, 0x91, 0x80, 0xc3, 0x1c, 0x98, 0x4f, 0xbe, 0x84, 0xb9, 0xff, - 0x50, 0x81, 0xdb, 0x82, 0xec, 0xef, 0x6a, 0xb8, 0x7b, 0x2b, 0x16, 0xee, 0xe9, 0x1f, 0x84, 0x14, - 0x62, 0x8e, 0x63, 0x3f, 0x63, 0xc2, 0x5e, 0x23, 0x43, 0xd9, 0xe7, 0xc9, 0xbf, 0x86, 0x07, 0x91, - 0x36, 0x41, 0xf8, 0x63, 0x17, 0xa7, 0xee, 0x81, 0x41, 0x2a, 0x5f, 0xd4, 0x6b, 0x54, 0xd2, 0xeb, - 0x73, 0x21, 0x7a, 0x91, 0x38, 0xd2, 0xaf, 0x0a, 0x7a, 0x05, 0xde, 0x56, 0x43, 0xd9, 0xe7, 0x79, - 0xf0, 0x15, 0x53, 0xb8, 0xff, 0x23, 0x11, 0x15, 0xad, 0xe4, 0x2c, 0xa4, 0x2a, 0x32, 0x4f, 0xb8, - 0x9e, 0x65, 0x48, 0xae, 0xd9, 0x75, 0xf2, 0x03, 0x2b, 0xe4, 0x37, 0x62, 0x99, 0x91, 0xd9, 0x0f, - 0xc6, 0x9e, 0x82, 0x54, 0x69, 0xaf, 0xd1, 0xac, 0x77, 0x90, 0xc5, 0x8e, 0xec, 0xd9, 0x0e, 0x3a, - 0xc6, 0x18, 0x1e, 0x2d, 0x57, 0x82, 0x89, 0x35, 0xdb, 0x2a, 0xee, 0xbb, 0xc1, 0xba, 0x31, 0x2f, - 0xa5, 0x08, 0x3b, 0xf2, 0x21, 0x7f, 0xd6, 0x81, 0x19, 0x8a, 0x83, 0xdf, 0x7e, 0x79, 0x5a, 0xd9, - 0xf2, 0xb6, 0xcf, 0x57, 0xe1, 0x76, 0x96, 0x3e, 0x3d, 0xa2, 0x16, 0xa3, 0x44, 0x0d, 0xb3, 0x63, - 0xea, 0x80, 0xb8, 0x15, 0x2c, 0xce, 0x0a, 0x15, 0xf7, 0xc6, 0x34, 0xc3, 0x4d, 0xd1, 0x81, 0x9a, - 0xa9, 0x87, 0xd2, 0x2c, 0x54, 0xdc, 0x7c, 0x94, 0x38, 0x49, 0xb3, 0xbb, 0x61, 0xd8, 0xa3, 0x05, - 0xa2, 0x21, 0x98, 0x29, 0x8b, 0x73, 0x39, 0x48, 0x07, 0x12, 0x56, 0x1f, 0x04, 0xa5, 0xa0, 0x0d, - 0xe0, 0xff, 0x8a, 0x9a, 0x82, 0xff, 0x2b, 0x69, 0x89, 0xb9, 0x7b, 0x60, 0x5c, 0xda, 0xbe, 0xc4, - 0x94, 0xb2, 0x06, 0xf8, 0xbf, 0x8a, 0x96, 0x9e, 0x4a, 0x7e, 0xf0, 0x8f, 0xb3, 0x03, 0x73, 0x97, - 0x41, 0xef, 0xdd, 0xe8, 0xd4, 0x87, 0x20, 0x51, 0xc0, 0x22, 0x6f, 0x87, 0x44, 0xb1, 0xa8, 0x29, - 0x53, 0xe3, 0xbf, 0xf9, 0xa9, 0x99, 0x74, 0x91, 0xfc, 0x85, 0xf1, 0x63, 0xc8, 0x2d, 0x16, 0x19, - 0xf8, 0x21, 0xb8, 0x2d, 0x74, 0xa3, 0x14, 0xe3, 0x4b, 0x25, 0x8a, 0x2f, 0x97, 0x7b, 0xf0, 0xe5, - 0x32, 0xc1, 0x2b, 0x79, 0x7e, 0xe0, 0x5c, 0xd0, 0x43, 0x36, 0x19, 0x33, 0xf5, 0xc0, 0x01, 0x77, - 0x21, 0xff, 0x10, 0xe3, 0x2d, 0x86, 0xf2, 0xa2, 0x88, 0x03, 0xeb, 0x62, 0xbe, 0xc4, 0xf0, 0xa5, - 0x50, 0xfc, 0x8e, 0x74, 0xaa, 0x2a, 0xae, 0x10, 0x4c, 0x48, 0xc9, 0x53, 0xb8, 0x1c, 0x2a, 0x64, - 0x2f, 0x70, 0xd7, 0xbd, 0xec, 0x29, 0x5c, 0x09, 0xe5, 0x6d, 0x44, 0xdc, 0xf9, 0xaa, 0xe4, 0x4f, - 0xb3, 0x45, 0xbe, 0x70, 0x46, 0xbf, 0x8d, 0xe7, 0xa8, 0x50, 0x81, 0x99, 0x81, 0x38, 0x57, 0xbe, - 0xc4, 0x00, 0xc5, 0xbe, 0x80, 0xfe, 0x56, 0xe2, 0xc8, 0xfc, 0x23, 0x4c, 0x48, 0xa9, 0xaf, 0x90, - 0x08, 0x53, 0x71, 0x78, 0x71, 0xeb, 0xc6, 0x2b, 0xd9, 0x81, 0x97, 0x5e, 0xc9, 0x0e, 0xfc, 0xeb, - 0x2b, 0xd9, 0x81, 0xef, 0xbc, 0x92, 0x55, 0xbe, 0xff, 0x4a, 0x56, 0xf9, 0xc1, 0x2b, 0x59, 0xe5, - 0x27, 0xaf, 0x64, 0x95, 0x67, 0x6f, 0x66, 0x95, 0x17, 0x6e, 0x66, 0x95, 0x2f, 0xdd, 0xcc, 0x2a, - 0x5f, 0xbb, 0x99, 0x55, 0x5e, 0xbc, 0x99, 0x55, 0x6e, 0xdc, 0xcc, 0x0e, 0xbc, 0x74, 0x33, 0x3b, - 0xf0, 0x9d, 0x9b, 0x59, 0xe5, 0xfb, 0x37, 0xb3, 0x03, 0x3f, 0xb8, 0x99, 0x55, 0x7e, 0x72, 0x33, - 0x3b, 0xf0, 0xec, 0x77, 0xb3, 0x03, 0xcf, 0x7f, 0x37, 0x3b, 0xf0, 0xc2, 0x77, 0xb3, 0xca, 0xff, - 0x07, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x4d, 0x76, 0x55, 0xb7, 0x63, 0x00, 0x00, + // 6499 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x6b, 0x70, 0x24, 0x57, + 0x75, 0xbf, 0x7a, 0x7a, 0xa4, 0x1d, 0x1d, 0xbd, 0x5a, 0xad, 0xb5, 0x76, 0x2c, 0xaf, 0xa5, 0xdd, + 0xf1, 0x7a, 0x2d, 0x0b, 0x5b, 0xab, 0xd5, 0x4a, 0xfb, 0x98, 0xc5, 0x76, 0xcd, 0x6b, 0xd7, 0x5a, + 0xa4, 0x91, 0x68, 0x49, 0xd8, 0xcb, 0xff, 0x5f, 0x35, 0xd5, 0x3b, 0x73, 0x25, 0x8d, 0x3d, 0xd3, + 0x3d, 0x4c, 0xf7, 0xd8, 0x96, 0x3f, 0xfc, 0xcb, 0x7f, 0xf8, 0xff, 0x09, 0x24, 0x95, 0x27, 0x49, + 0x05, 0x08, 0x18, 0x43, 0x8a, 0x60, 0x20, 0x0f, 0x48, 0x08, 0xa1, 0xa8, 0x54, 0xf0, 0x17, 0x92, + 0xcd, 0x97, 0x94, 0xc9, 0xa7, 0x14, 0x95, 0x72, 0xe1, 0x35, 0x55, 0x21, 0x89, 0x93, 0x40, 0x70, + 0x15, 0x54, 0x99, 0x0f, 0xa9, 0xfb, 0xea, 0xee, 0x7b, 0xa7, 0x47, 0xdd, 0xf2, 0xda, 0xc0, 0x97, + 0xdd, 0x99, 0x7b, 0xce, 0xef, 0xf4, 0xb9, 0xe7, 0x75, 0x4f, 0xdf, 0x7b, 0x35, 0xf0, 0xda, 0x32, + 0x9c, 0xd8, 0xb5, 0xed, 0xdd, 0x06, 0x3a, 0xd3, 0x6a, 0xdb, 0xae, 0x7d, 0xa3, 0xb3, 0x73, 0xa6, + 0x86, 0x9c, 0x6a, 0xbb, 0xde, 0x72, 0xed, 0xf6, 0x3c, 0x19, 0xd3, 0xc7, 0x28, 0xc7, 0x3c, 0xe7, + 0xc8, 0xac, 0xc1, 0xf8, 0x95, 0x7a, 0x03, 0x15, 0x3d, 0xc6, 0x4d, 0xe4, 0xea, 0x17, 0x21, 0xb9, + 0x53, 0x6f, 0xa0, 0xb4, 0x72, 0x42, 0x9d, 0x1d, 0x5a, 0x3c, 0x35, 0x2f, 0x81, 0xe6, 0x45, 0xc4, + 0x06, 0x1e, 0x36, 0x08, 0x22, 0xf3, 0xfd, 0x24, 0x4c, 0x84, 0x50, 0x75, 0x1d, 0x92, 0x96, 0xd9, + 0xc4, 0x12, 0x95, 0xd9, 0x41, 0x83, 0x7c, 0xd6, 0xd3, 0x70, 0xa4, 0x65, 0x56, 0x9f, 0x34, 0x77, + 0x51, 0x3a, 0x41, 0x86, 0xf9, 0x57, 0x7d, 0x1a, 0xa0, 0x86, 0x5a, 0xc8, 0xaa, 0x21, 0xab, 0xba, + 0x9f, 0x56, 0x4f, 0xa8, 0xb3, 0x83, 0x46, 0x60, 0x44, 0x7f, 0x17, 0x8c, 0xb7, 0x3a, 0x37, 0x1a, + 0xf5, 0x6a, 0x25, 0xc0, 0x06, 0x27, 0xd4, 0xd9, 0x7e, 0x43, 0xa3, 0x84, 0xa2, 0xcf, 0x7c, 0x1f, + 0x8c, 0x3d, 0x8d, 0xcc, 0x27, 0x83, 0xac, 0x43, 0x84, 0x75, 0x14, 0x0f, 0x07, 0x18, 0x0b, 0x30, + 0xdc, 0x44, 0x8e, 0x63, 0xee, 0xa2, 0x8a, 0xbb, 0xdf, 0x42, 0xe9, 0x24, 0x99, 0xfd, 0x89, 0xae, + 0xd9, 0xcb, 0x33, 0x1f, 0x62, 0xa8, 0xad, 0xfd, 0x16, 0xd2, 0x73, 0x30, 0x88, 0xac, 0x4e, 0x93, + 0x4a, 0xe8, 0xef, 0x61, 0xbf, 0x92, 0xd5, 0x69, 0xca, 0x52, 0x52, 0x18, 0xc6, 0x44, 0x1c, 0x71, + 0x50, 0xfb, 0xa9, 0x7a, 0x15, 0xa5, 0x07, 0x88, 0x80, 0xfb, 0xba, 0x04, 0x6c, 0x52, 0xba, 0x2c, + 0x83, 0xe3, 0xf4, 0x02, 0x0c, 0xa2, 0x67, 0x5c, 0x64, 0x39, 0x75, 0xdb, 0x4a, 0x1f, 0x21, 0x42, + 0xee, 0x0d, 0xf1, 0x22, 0x6a, 0xd4, 0x64, 0x11, 0x3e, 0x4e, 0x3f, 0x0f, 0x47, 0xec, 0x96, 0x5b, + 0xb7, 0x2d, 0x27, 0x9d, 0x3a, 0xa1, 0xcc, 0x0e, 0x2d, 0x1e, 0x0f, 0x0d, 0x84, 0x75, 0xca, 0x63, + 0x70, 0x66, 0x7d, 0x05, 0x34, 0xc7, 0xee, 0xb4, 0xab, 0xa8, 0x52, 0xb5, 0x6b, 0xa8, 0x52, 0xb7, + 0x76, 0xec, 0xf4, 0x20, 0x11, 0x30, 0xd3, 0x3d, 0x11, 0xc2, 0x58, 0xb0, 0x6b, 0x68, 0xc5, 0xda, + 0xb1, 0x8d, 0x51, 0x47, 0xf8, 0xae, 0x4f, 0xc2, 0x80, 0xb3, 0x6f, 0xb9, 0xe6, 0x33, 0xe9, 0x61, + 0x12, 0x21, 0xec, 0x5b, 0xe6, 0x27, 0xfd, 0x30, 0x16, 0x27, 0xc4, 0x2e, 0x43, 0xff, 0x0e, 0x9e, + 0x65, 0x3a, 0x71, 0x18, 0x1b, 0x50, 0x8c, 0x68, 0xc4, 0x81, 0xb7, 0x68, 0xc4, 0x1c, 0x0c, 0x59, + 0xc8, 0x71, 0x51, 0x8d, 0x46, 0x84, 0x1a, 0x33, 0xa6, 0x80, 0x82, 0xba, 0x43, 0x2a, 0xf9, 0x96, + 0x42, 0xea, 0x71, 0x18, 0xf3, 0x54, 0xaa, 0xb4, 0x4d, 0x6b, 0x97, 0xc7, 0xe6, 0x99, 0x28, 0x4d, + 0xe6, 0x4b, 0x1c, 0x67, 0x60, 0x98, 0x31, 0x8a, 0x84, 0xef, 0x7a, 0x11, 0xc0, 0xb6, 0x90, 0xbd, + 0x53, 0xa9, 0xa1, 0x6a, 0x23, 0x9d, 0xea, 0x61, 0xa5, 0x75, 0xcc, 0xd2, 0x65, 0x25, 0x9b, 0x8e, + 0x56, 0x1b, 0xfa, 0x25, 0x3f, 0xd4, 0x8e, 0xf4, 0x88, 0x94, 0x35, 0x9a, 0x64, 0x5d, 0xd1, 0xb6, + 0x0d, 0xa3, 0x6d, 0x84, 0xe3, 0x1e, 0xd5, 0xd8, 0xcc, 0x06, 0x89, 0x12, 0xf3, 0x91, 0x33, 0x33, + 0x18, 0x8c, 0x4e, 0x6c, 0xa4, 0x1d, 0xfc, 0xaa, 0xdf, 0x03, 0xde, 0x40, 0x85, 0x84, 0x15, 0x90, + 0x2a, 0x34, 0xcc, 0x07, 0xcb, 0x66, 0x13, 0x4d, 0x5d, 0x84, 0x51, 0xd1, 0x3c, 0xfa, 0x51, 0xe8, + 0x77, 0x5c, 0xb3, 0xed, 0x92, 0x28, 0xec, 0x37, 0xe8, 0x17, 0x5d, 0x03, 0x15, 0x59, 0x35, 0x52, + 0xe5, 0xfa, 0x0d, 0xfc, 0x71, 0xea, 0x02, 0x8c, 0x08, 0x8f, 0x8f, 0x0b, 0xcc, 0x7c, 0x7c, 0x00, + 0x8e, 0x86, 0xc5, 0x5c, 0x68, 0xf8, 0x4f, 0xc2, 0x80, 0xd5, 0x69, 0xde, 0x40, 0xed, 0xb4, 0x4a, + 0x24, 0xb0, 0x6f, 0x7a, 0x0e, 0xfa, 0x1b, 0xe6, 0x0d, 0xd4, 0x48, 0x27, 0x4f, 0x28, 0xb3, 0xa3, + 0x8b, 0xef, 0x8a, 0x15, 0xd5, 0xf3, 0xab, 0x18, 0x62, 0x50, 0xa4, 0xfe, 0x30, 0x24, 0x59, 0x89, + 0xc3, 0x12, 0xe6, 0xe2, 0x49, 0xc0, 0xb1, 0x68, 0x10, 0x9c, 0x7e, 0x17, 0x0c, 0xe2, 0xff, 0xa9, + 0x6d, 0x07, 0x88, 0xce, 0x29, 0x3c, 0x80, 0xed, 0xaa, 0x4f, 0x41, 0x8a, 0x84, 0x59, 0x0d, 0xf1, + 0xa5, 0xc1, 0xfb, 0x8e, 0x1d, 0x53, 0x43, 0x3b, 0x66, 0xa7, 0xe1, 0x56, 0x9e, 0x32, 0x1b, 0x1d, + 0x44, 0x02, 0x66, 0xd0, 0x18, 0x66, 0x83, 0xef, 0xc3, 0x63, 0xfa, 0x0c, 0x0c, 0xd1, 0xa8, 0xac, + 0x5b, 0x35, 0xf4, 0x0c, 0xa9, 0x3e, 0xfd, 0x06, 0x0d, 0xd4, 0x15, 0x3c, 0x82, 0x1f, 0xff, 0x84, + 0x63, 0x5b, 0xdc, 0xb5, 0xe4, 0x11, 0x78, 0x80, 0x3c, 0xfe, 0x82, 0x5c, 0xf8, 0xee, 0x0e, 0x9f, + 0x9e, 0x1c, 0x8b, 0x99, 0xaf, 0x27, 0x20, 0x49, 0xf2, 0x6d, 0x0c, 0x86, 0xb6, 0xae, 0x6f, 0x94, + 0x2a, 0xc5, 0xf5, 0xed, 0xfc, 0x6a, 0x49, 0x53, 0xf4, 0x51, 0x00, 0x32, 0x70, 0x65, 0x75, 0x3d, + 0xb7, 0xa5, 0x25, 0xbc, 0xef, 0x2b, 0xe5, 0xad, 0xf3, 0x4b, 0x9a, 0xea, 0x01, 0xb6, 0xe9, 0x40, + 0x32, 0xc8, 0x70, 0x6e, 0x51, 0xeb, 0xd7, 0x35, 0x18, 0xa6, 0x02, 0x56, 0x1e, 0x2f, 0x15, 0xcf, + 0x2f, 0x69, 0x03, 0xe2, 0xc8, 0xb9, 0x45, 0xed, 0x88, 0x3e, 0x02, 0x83, 0x64, 0x24, 0xbf, 0xbe, + 0xbe, 0xaa, 0xa5, 0x3c, 0x99, 0x9b, 0x5b, 0xc6, 0x4a, 0xf9, 0xaa, 0x36, 0xe8, 0xc9, 0xbc, 0x6a, + 0xac, 0x6f, 0x6f, 0x68, 0xe0, 0x49, 0x58, 0x2b, 0x6d, 0x6e, 0xe6, 0xae, 0x96, 0xb4, 0x21, 0x8f, + 0x23, 0x7f, 0x7d, 0xab, 0xb4, 0xa9, 0x0d, 0x0b, 0x6a, 0x9d, 0x5b, 0xd4, 0x46, 0xbc, 0x47, 0x94, + 0xca, 0xdb, 0x6b, 0xda, 0xa8, 0x3e, 0x0e, 0x23, 0xf4, 0x11, 0x5c, 0x89, 0x31, 0x69, 0xe8, 0xfc, + 0x92, 0xa6, 0xf9, 0x8a, 0x50, 0x29, 0xe3, 0xc2, 0xc0, 0xf9, 0x25, 0x4d, 0xcf, 0x14, 0xa0, 0x9f, + 0x44, 0x97, 0xae, 0xc3, 0xe8, 0x6a, 0x2e, 0x5f, 0x5a, 0xad, 0xac, 0x6f, 0x6c, 0xad, 0xac, 0x97, + 0x73, 0xab, 0x9a, 0xe2, 0x8f, 0x19, 0xa5, 0xf7, 0x6e, 0xaf, 0x18, 0xa5, 0xa2, 0x96, 0x08, 0x8e, + 0x6d, 0x94, 0x72, 0x5b, 0xa5, 0xa2, 0xa6, 0x66, 0xaa, 0x70, 0x34, 0xac, 0xce, 0x84, 0x66, 0x46, + 0xc0, 0xc5, 0x89, 0x1e, 0x2e, 0x26, 0xb2, 0xba, 0x5c, 0xfc, 0x39, 0x05, 0x26, 0x42, 0x6a, 0x6d, + 0xe8, 0x43, 0x1e, 0x81, 0x7e, 0x1a, 0xa2, 0x74, 0xf5, 0xb9, 0x3f, 0xb4, 0x68, 0x93, 0x80, 0xed, + 0x5a, 0x81, 0x08, 0x2e, 0xb8, 0x02, 0xab, 0x3d, 0x56, 0x60, 0x2c, 0xa2, 0x4b, 0xc9, 0x0f, 0x29, + 0x90, 0xee, 0x25, 0x3b, 0xa2, 0x50, 0x24, 0x84, 0x42, 0x71, 0x59, 0x56, 0xe0, 0x64, 0xef, 0x39, + 0x74, 0x69, 0xf1, 0x05, 0x05, 0x26, 0xc3, 0x1b, 0x95, 0x50, 0x1d, 0x1e, 0x86, 0x81, 0x26, 0x72, + 0xf7, 0x6c, 0xbe, 0x58, 0x9f, 0x0e, 0x59, 0x02, 0x30, 0x59, 0xb6, 0x15, 0x43, 0x05, 0xd7, 0x10, + 0xb5, 0x57, 0xb7, 0x41, 0xb5, 0xe9, 0xd2, 0xf4, 0xa3, 0x09, 0xb8, 0x23, 0x54, 0x78, 0xa8, 0xa2, + 0x77, 0x03, 0xd4, 0xad, 0x56, 0xc7, 0xa5, 0x0b, 0x32, 0xad, 0x4f, 0x83, 0x64, 0x84, 0xe4, 0x3e, + 0xae, 0x3d, 0x1d, 0xd7, 0xa3, 0xab, 0x84, 0x0e, 0x74, 0x88, 0x30, 0x5c, 0xf4, 0x15, 0x4d, 0x12, + 0x45, 0xa7, 0x7b, 0xcc, 0xb4, 0x6b, 0xad, 0x5b, 0x00, 0xad, 0xda, 0xa8, 0x23, 0xcb, 0xad, 0x38, + 0x6e, 0x1b, 0x99, 0xcd, 0xba, 0xb5, 0x4b, 0x0a, 0x70, 0x2a, 0xdb, 0xbf, 0x63, 0x36, 0x1c, 0x64, + 0x8c, 0x51, 0xf2, 0x26, 0xa7, 0x62, 0x04, 0x59, 0x65, 0xda, 0x01, 0xc4, 0x80, 0x80, 0xa0, 0x64, + 0x0f, 0x91, 0xf9, 0xf2, 0x11, 0x18, 0x0a, 0xb4, 0x75, 0xfa, 0x49, 0x18, 0x7e, 0xc2, 0x7c, 0xca, + 0xac, 0xf0, 0x56, 0x9d, 0x5a, 0x62, 0x08, 0x8f, 0x6d, 0xb0, 0x76, 0x7d, 0x01, 0x8e, 0x12, 0x16, + 0xbb, 0xe3, 0xa2, 0x76, 0xa5, 0xda, 0x30, 0x1d, 0x87, 0x18, 0x2d, 0x45, 0x58, 0x75, 0x4c, 0x5b, + 0xc7, 0xa4, 0x02, 0xa7, 0xe8, 0xcb, 0x30, 0x41, 0x10, 0xcd, 0x4e, 0xc3, 0xad, 0xb7, 0x1a, 0xa8, + 0x82, 0x5f, 0x1e, 0x1c, 0x52, 0x88, 0x3d, 0xcd, 0xc6, 0x31, 0xc7, 0x1a, 0x63, 0xc0, 0x1a, 0x39, + 0x7a, 0x11, 0xee, 0x26, 0xb0, 0x5d, 0x64, 0xa1, 0xb6, 0xe9, 0xa2, 0x0a, 0xfa, 0x40, 0xc7, 0x6c, + 0x38, 0x15, 0xd3, 0xaa, 0x55, 0xf6, 0x4c, 0x67, 0x2f, 0x7d, 0x14, 0x0b, 0xc8, 0x27, 0xd2, 0x8a, + 0x71, 0x27, 0x66, 0xbc, 0xca, 0xf8, 0x4a, 0x84, 0x2d, 0x67, 0xd5, 0x1e, 0x35, 0x9d, 0x3d, 0x3d, + 0x0b, 0x93, 0x44, 0x8a, 0xe3, 0xb6, 0xeb, 0xd6, 0x6e, 0xa5, 0xba, 0x87, 0xaa, 0x4f, 0x56, 0x3a, + 0xee, 0xce, 0xc5, 0xf4, 0x5d, 0xc1, 0xe7, 0x13, 0x0d, 0x37, 0x09, 0x4f, 0x01, 0xb3, 0x6c, 0xbb, + 0x3b, 0x17, 0xf5, 0x4d, 0x18, 0xc6, 0xce, 0x68, 0xd6, 0x9f, 0x45, 0x95, 0x1d, 0xbb, 0x4d, 0x56, + 0x96, 0xd1, 0x90, 0xcc, 0x0e, 0x58, 0x70, 0x7e, 0x9d, 0x01, 0xd6, 0xec, 0x1a, 0xca, 0xf6, 0x6f, + 0x6e, 0x94, 0x4a, 0x45, 0x63, 0x88, 0x4b, 0xb9, 0x62, 0xb7, 0x71, 0x40, 0xed, 0xda, 0x9e, 0x81, + 0x87, 0x68, 0x40, 0xed, 0xda, 0xdc, 0xbc, 0xcb, 0x30, 0x51, 0xad, 0xd2, 0x39, 0xd7, 0xab, 0x15, + 0xd6, 0xe2, 0x3b, 0x69, 0x4d, 0x30, 0x56, 0xb5, 0x7a, 0x95, 0x32, 0xb0, 0x18, 0x77, 0xf4, 0x4b, + 0x70, 0x87, 0x6f, 0xac, 0x20, 0x70, 0xbc, 0x6b, 0x96, 0x32, 0x74, 0x19, 0x26, 0x5a, 0xfb, 0xdd, + 0x40, 0x5d, 0x78, 0x62, 0x6b, 0x5f, 0x86, 0xdd, 0x4b, 0x5e, 0xdb, 0xda, 0xa8, 0x6a, 0xba, 0xa8, + 0x96, 0x3e, 0x16, 0xe4, 0x0e, 0x10, 0xf4, 0x33, 0xa0, 0x55, 0xab, 0x15, 0x64, 0x99, 0x37, 0x1a, + 0xa8, 0x62, 0xb6, 0x91, 0x65, 0x3a, 0xe9, 0x99, 0x20, 0xf3, 0x68, 0xb5, 0x5a, 0x22, 0xd4, 0x1c, + 0x21, 0xea, 0x73, 0x30, 0x6e, 0xdf, 0x78, 0xa2, 0x4a, 0x23, 0xab, 0xd2, 0x6a, 0xa3, 0x9d, 0xfa, + 0x33, 0xe9, 0x53, 0xc4, 0x4c, 0x63, 0x98, 0x40, 0xe2, 0x6a, 0x83, 0x0c, 0xeb, 0xf7, 0x83, 0x56, + 0x75, 0xf6, 0xcc, 0x76, 0x8b, 0x2c, 0xed, 0x4e, 0xcb, 0xac, 0xa2, 0xf4, 0xbd, 0x94, 0x95, 0x8e, + 0x97, 0xf9, 0x30, 0x8e, 0x6c, 0xe7, 0xe9, 0xfa, 0x8e, 0xcb, 0x25, 0xde, 0x47, 0x23, 0x9b, 0x8c, + 0x31, 0x69, 0x8f, 0xc3, 0xd1, 0x8e, 0x55, 0xb7, 0x5c, 0xd4, 0x6e, 0xb5, 0x11, 0x6e, 0xe2, 0x69, + 0x26, 0xa6, 0xff, 0xe5, 0x48, 0x8f, 0x36, 0x7c, 0x3b, 0xc8, 0x4d, 0x03, 0xc0, 0x98, 0xe8, 0x74, + 0x0f, 0x66, 0xb2, 0x30, 0x1c, 0x8c, 0x0b, 0x7d, 0x10, 0x68, 0x64, 0x68, 0x0a, 0x5e, 0x63, 0x0b, + 0xeb, 0x45, 0xbc, 0x3a, 0xbe, 0xbf, 0xa4, 0x25, 0xf0, 0x2a, 0xbd, 0xba, 0xb2, 0x55, 0xaa, 0x18, + 0xdb, 0xe5, 0xad, 0x95, 0xb5, 0x92, 0xa6, 0xce, 0x0d, 0xa6, 0x7e, 0x70, 0x44, 0x7b, 0xee, 0xb9, + 0xe7, 0x9e, 0x4b, 0x64, 0xbe, 0x9d, 0x80, 0x51, 0xb1, 0x33, 0xd6, 0xdf, 0x0d, 0xc7, 0xf8, 0x6b, + 0xac, 0x83, 0xdc, 0xca, 0xd3, 0xf5, 0x36, 0x09, 0xd5, 0xa6, 0x49, 0x7b, 0x4b, 0xcf, 0xca, 0x47, + 0x19, 0xd7, 0x26, 0x72, 0x1f, 0xab, 0xb7, 0x71, 0x20, 0x36, 0x4d, 0x57, 0x5f, 0x85, 0x19, 0xcb, + 0xae, 0x38, 0xae, 0x69, 0xd5, 0xcc, 0x76, 0xad, 0xe2, 0x6f, 0x20, 0x54, 0xcc, 0x6a, 0x15, 0x39, + 0x8e, 0x4d, 0x97, 0x08, 0x4f, 0xca, 0x71, 0xcb, 0xde, 0x64, 0xcc, 0x7e, 0xed, 0xcc, 0x31, 0x56, + 0x29, 0x22, 0xd4, 0x5e, 0x11, 0x71, 0x17, 0x0c, 0x36, 0xcd, 0x56, 0x05, 0x59, 0x6e, 0x7b, 0x9f, + 0xf4, 0x73, 0x29, 0x23, 0xd5, 0x34, 0x5b, 0x25, 0xfc, 0xfd, 0x9d, 0xf3, 0x41, 0xd0, 0x8e, 0xff, + 0xac, 0xc2, 0x70, 0xb0, 0xa7, 0xc3, 0x2d, 0x72, 0x95, 0xd4, 0x6f, 0x85, 0x64, 0xf8, 0x3d, 0x07, + 0x76, 0x80, 0xf3, 0x05, 0x5c, 0xd8, 0xb3, 0x03, 0xb4, 0xd3, 0x32, 0x28, 0x12, 0x2f, 0xaa, 0x38, + 0xa7, 0x11, 0xed, 0xdf, 0x53, 0x06, 0xfb, 0xa6, 0x5f, 0x85, 0x81, 0x27, 0x1c, 0x22, 0x7b, 0x80, + 0xc8, 0x3e, 0x75, 0xb0, 0xec, 0x6b, 0x9b, 0x44, 0xf8, 0xe0, 0xb5, 0xcd, 0x4a, 0x79, 0xdd, 0x58, + 0xcb, 0xad, 0x1a, 0x0c, 0xae, 0xdf, 0x09, 0xc9, 0x86, 0xf9, 0xec, 0xbe, 0xb8, 0x04, 0x90, 0xa1, + 0xb8, 0x86, 0xbf, 0x13, 0x92, 0x4f, 0x23, 0xf3, 0x49, 0xb1, 0xf0, 0x92, 0xa1, 0x77, 0x30, 0xf4, + 0xcf, 0x40, 0x3f, 0xb1, 0x97, 0x0e, 0xc0, 0x2c, 0xa6, 0xf5, 0xe9, 0x29, 0x48, 0x16, 0xd6, 0x0d, + 0x1c, 0xfe, 0x1a, 0x0c, 0xd3, 0xd1, 0xca, 0xc6, 0x4a, 0xa9, 0x50, 0xd2, 0x12, 0x99, 0x65, 0x18, + 0xa0, 0x46, 0xc0, 0xa9, 0xe1, 0x99, 0x41, 0xeb, 0x63, 0x5f, 0x99, 0x0c, 0x85, 0x53, 0xb7, 0xd7, + 0xf2, 0x25, 0x43, 0x4b, 0x04, 0xdd, 0xeb, 0xc0, 0x70, 0xb0, 0x9d, 0xfb, 0xf9, 0xc4, 0xd4, 0x37, + 0x15, 0x18, 0x0a, 0xb4, 0x67, 0xb8, 0x31, 0x30, 0x1b, 0x0d, 0xfb, 0xe9, 0x8a, 0xd9, 0xa8, 0x9b, + 0x0e, 0x0b, 0x0a, 0x20, 0x43, 0x39, 0x3c, 0x12, 0xd7, 0x69, 0x3f, 0x17, 0xe5, 0x9f, 0x57, 0x40, + 0x93, 0x5b, 0x3b, 0x49, 0x41, 0xe5, 0x17, 0xaa, 0xe0, 0xa7, 0x14, 0x18, 0x15, 0xfb, 0x39, 0x49, + 0xbd, 0x93, 0xbf, 0x50, 0xf5, 0xbe, 0x97, 0x80, 0x11, 0xa1, 0x8b, 0x8b, 0xab, 0xdd, 0x07, 0x60, + 0xbc, 0x5e, 0x43, 0xcd, 0x96, 0xed, 0x22, 0xab, 0xba, 0x5f, 0x69, 0xa0, 0xa7, 0x50, 0x23, 0x9d, + 0x21, 0x85, 0xe2, 0xcc, 0xc1, 0x7d, 0xe2, 0xfc, 0x8a, 0x8f, 0x5b, 0xc5, 0xb0, 0xec, 0xc4, 0x4a, + 0xb1, 0xb4, 0xb6, 0xb1, 0xbe, 0x55, 0x2a, 0x17, 0xae, 0x57, 0xb6, 0xcb, 0xef, 0x29, 0xaf, 0x3f, + 0x56, 0x36, 0xb4, 0xba, 0xc4, 0xf6, 0x0e, 0xa6, 0xfa, 0x06, 0x68, 0xb2, 0x52, 0xfa, 0x31, 0x08, + 0x53, 0x4b, 0xeb, 0xd3, 0x27, 0x60, 0xac, 0xbc, 0x5e, 0xd9, 0x5c, 0x29, 0x96, 0x2a, 0xa5, 0x2b, + 0x57, 0x4a, 0x85, 0xad, 0x4d, 0xfa, 0xe2, 0xec, 0x71, 0x6f, 0x89, 0x49, 0xfd, 0x49, 0x15, 0x26, + 0x42, 0x34, 0xd1, 0x73, 0xac, 0x67, 0xa7, 0xaf, 0x11, 0x0f, 0xc6, 0xd1, 0x7e, 0x1e, 0x77, 0x05, + 0x1b, 0x66, 0xdb, 0x65, 0x2d, 0xfe, 0xfd, 0x80, 0xad, 0x64, 0xb9, 0xf5, 0x9d, 0x3a, 0x6a, 0xb3, + 0x7d, 0x06, 0xda, 0xc8, 0x8f, 0xf9, 0xe3, 0x74, 0xab, 0xe1, 0x01, 0xd0, 0x5b, 0xb6, 0x53, 0x77, + 0xeb, 0x4f, 0xa1, 0x4a, 0xdd, 0xe2, 0x9b, 0x12, 0xb8, 0xb1, 0x4f, 0x1a, 0x1a, 0xa7, 0xac, 0x58, + 0xae, 0xc7, 0x6d, 0xa1, 0x5d, 0x53, 0xe2, 0xc6, 0x05, 0x5c, 0x35, 0x34, 0x4e, 0xf1, 0xb8, 0x4f, + 0xc2, 0x70, 0xcd, 0xee, 0xe0, 0x36, 0x89, 0xf2, 0xe1, 0xf5, 0x42, 0x31, 0x86, 0xe8, 0x98, 0xc7, + 0xc2, 0xfa, 0x58, 0x7f, 0x37, 0x64, 0xd8, 0x18, 0xa2, 0x63, 0x94, 0xe5, 0x3e, 0x18, 0x33, 0x77, + 0x77, 0xdb, 0x58, 0x38, 0x17, 0x44, 0x3b, 0xf3, 0x51, 0x6f, 0x98, 0x30, 0x4e, 0x5d, 0x83, 0x14, + 0xb7, 0x03, 0x5e, 0x92, 0xb1, 0x25, 0x2a, 0x2d, 0xba, 0x27, 0x95, 0x98, 0x1d, 0x34, 0x52, 0x16, + 0x27, 0x9e, 0x84, 0xe1, 0xba, 0x53, 0xf1, 0x37, 0x47, 0x13, 0x27, 0x12, 0xb3, 0x29, 0x63, 0xa8, + 0xee, 0x78, 0xbb, 0x61, 0x99, 0x2f, 0x24, 0x60, 0x54, 0xdc, 0xdc, 0xd5, 0x8b, 0x90, 0x6a, 0xd8, + 0x55, 0x93, 0x84, 0x16, 0x3d, 0x59, 0x98, 0x8d, 0xd8, 0x0f, 0x9e, 0x5f, 0x65, 0xfc, 0x86, 0x87, + 0x9c, 0xfa, 0x07, 0x05, 0x52, 0x7c, 0x58, 0x9f, 0x84, 0x64, 0xcb, 0x74, 0xf7, 0x88, 0xb8, 0xfe, + 0x7c, 0x42, 0x53, 0x0c, 0xf2, 0x1d, 0x8f, 0x3b, 0x2d, 0xd3, 0x22, 0x21, 0xc0, 0xc6, 0xf1, 0x77, + 0xec, 0xd7, 0x06, 0x32, 0x6b, 0xa4, 0xed, 0xb7, 0x9b, 0x4d, 0x64, 0xb9, 0x0e, 0xf7, 0x2b, 0x1b, + 0x2f, 0xb0, 0x61, 0xfd, 0x5d, 0x30, 0xee, 0xb6, 0xcd, 0x7a, 0x43, 0xe0, 0x4d, 0x12, 0x5e, 0x8d, + 0x13, 0x3c, 0xe6, 0x2c, 0xdc, 0xc9, 0xe5, 0xd6, 0x90, 0x6b, 0x56, 0xf7, 0x50, 0xcd, 0x07, 0x0d, + 0x90, 0x9d, 0xc3, 0x63, 0x8c, 0xa1, 0xc8, 0xe8, 0x1c, 0x9b, 0xf9, 0x8e, 0x02, 0xe3, 0xfc, 0x45, + 0xa5, 0xe6, 0x19, 0x6b, 0x0d, 0xc0, 0xb4, 0x2c, 0xdb, 0x0d, 0x9a, 0xab, 0x3b, 0x94, 0xbb, 0x70, + 0xf3, 0x39, 0x0f, 0x64, 0x04, 0x04, 0x4c, 0x35, 0x01, 0x7c, 0x4a, 0x4f, 0xb3, 0xcd, 0xc0, 0x10, + 0xdb, 0xb9, 0x27, 0xc7, 0x3f, 0xf4, 0xd5, 0x16, 0xe8, 0x10, 0x7e, 0xa3, 0xd1, 0x8f, 0x42, 0xff, + 0x0d, 0xb4, 0x5b, 0xb7, 0xd8, 0x7e, 0x22, 0xfd, 0xc2, 0x77, 0x29, 0x93, 0xde, 0x2e, 0x65, 0xfe, + 0x71, 0x98, 0xa8, 0xda, 0x4d, 0x59, 0xdd, 0xbc, 0x26, 0xbd, 0x5e, 0x3b, 0x8f, 0x2a, 0xef, 0x07, + 0xbf, 0xc5, 0xfc, 0x5c, 0x42, 0xbd, 0xba, 0x91, 0xff, 0x52, 0x62, 0xea, 0x2a, 0xc5, 0x6d, 0xf0, + 0x69, 0x1a, 0x68, 0xa7, 0x81, 0xaa, 0x58, 0x75, 0xf8, 0xf1, 0x69, 0x78, 0x70, 0xb7, 0xee, 0xee, + 0x75, 0x6e, 0xcc, 0x57, 0xed, 0xe6, 0x99, 0x5d, 0x7b, 0xd7, 0xf6, 0x8f, 0xbb, 0xf0, 0x37, 0xf2, + 0x85, 0x7c, 0x62, 0x47, 0x5e, 0x83, 0xde, 0xe8, 0x54, 0xe4, 0xf9, 0x58, 0xb6, 0x0c, 0x13, 0x8c, + 0xb9, 0x42, 0xf6, 0xdc, 0xe9, 0xab, 0x81, 0x7e, 0xe0, 0xbe, 0x4b, 0xfa, 0xab, 0xdf, 0x27, 0x6b, + 0xb5, 0x31, 0xce, 0xa0, 0x98, 0x46, 0x5f, 0x20, 0xb2, 0x06, 0xdc, 0x21, 0xc8, 0xa3, 0x79, 0x89, + 0xda, 0x11, 0x12, 0xbf, 0xcd, 0x24, 0x4e, 0x04, 0x24, 0x6e, 0x32, 0x68, 0xb6, 0x00, 0x23, 0x87, + 0x91, 0xf5, 0xb7, 0x4c, 0xd6, 0x30, 0x0a, 0x0a, 0xb9, 0x0a, 0x63, 0x44, 0x48, 0xb5, 0xe3, 0xb8, + 0x76, 0x93, 0x14, 0xbd, 0x83, 0xc5, 0xfc, 0xdd, 0xf7, 0x69, 0xa2, 0x8c, 0x62, 0x58, 0xc1, 0x43, + 0x65, 0xb3, 0x40, 0x8e, 0x19, 0x6a, 0xa8, 0xda, 0x88, 0x90, 0x70, 0x93, 0x29, 0xe2, 0xf1, 0x67, + 0xdf, 0x07, 0x47, 0xf1, 0x67, 0x52, 0x93, 0x82, 0x9a, 0x44, 0xef, 0x32, 0xa5, 0xbf, 0xf3, 0x21, + 0x9a, 0x8b, 0x13, 0x9e, 0x80, 0x80, 0x4e, 0x01, 0x2f, 0xee, 0x22, 0xd7, 0x45, 0x6d, 0xa7, 0x62, + 0x36, 0xc2, 0xd4, 0x0b, 0xbc, 0xa6, 0xa7, 0x3f, 0xf1, 0xba, 0xe8, 0xc5, 0xab, 0x14, 0x99, 0x6b, + 0x34, 0xb2, 0xdb, 0x70, 0x2c, 0x24, 0x2a, 0x62, 0xc8, 0xfc, 0x24, 0x93, 0x79, 0xb4, 0x2b, 0x32, + 0xb0, 0xd8, 0x0d, 0xe0, 0xe3, 0x9e, 0x2f, 0x63, 0xc8, 0xfc, 0x03, 0x26, 0x53, 0x67, 0x58, 0xee, + 0x52, 0x2c, 0xf1, 0x1a, 0x8c, 0x3f, 0x85, 0xda, 0x37, 0x6c, 0x87, 0x6d, 0x8d, 0xc4, 0x10, 0xf7, + 0x29, 0x26, 0x6e, 0x8c, 0x01, 0xc9, 0x5e, 0x09, 0x96, 0x75, 0x09, 0x52, 0x3b, 0x66, 0x15, 0xc5, + 0x10, 0xf1, 0x69, 0x26, 0xe2, 0x08, 0xe6, 0xc7, 0xd0, 0x1c, 0x0c, 0xef, 0xda, 0x6c, 0x59, 0x8a, + 0x86, 0x3f, 0xcf, 0xe0, 0x43, 0x1c, 0xc3, 0x44, 0xb4, 0xec, 0x56, 0xa7, 0x81, 0xd7, 0xac, 0x68, + 0x11, 0x9f, 0xe1, 0x22, 0x38, 0x86, 0x89, 0x38, 0x84, 0x59, 0x5f, 0xe0, 0x22, 0x9c, 0x80, 0x3d, + 0x1f, 0x81, 0x21, 0xdb, 0x6a, 0xec, 0xdb, 0x56, 0x1c, 0x25, 0x3e, 0xcb, 0x24, 0x00, 0x83, 0x60, + 0x01, 0x97, 0x61, 0x30, 0xae, 0x23, 0x3e, 0xff, 0x3a, 0x4f, 0x0f, 0xee, 0x81, 0xab, 0x30, 0xc6, + 0x0b, 0x54, 0xdd, 0xb6, 0x62, 0x88, 0xf8, 0x23, 0x26, 0x62, 0x34, 0x00, 0x63, 0xd3, 0x70, 0x91, + 0xe3, 0xee, 0xa2, 0x38, 0x42, 0xbe, 0xc0, 0xa7, 0xc1, 0x20, 0xcc, 0x94, 0x37, 0x90, 0x55, 0xdd, + 0x8b, 0x27, 0xe1, 0x45, 0x6e, 0x4a, 0x8e, 0xc1, 0x22, 0x0a, 0x30, 0xd2, 0x34, 0xdb, 0xce, 0x9e, + 0xd9, 0x88, 0xe5, 0x8e, 0x2f, 0x32, 0x19, 0xc3, 0x1e, 0x88, 0x59, 0xa4, 0x63, 0x1d, 0x46, 0xcc, + 0x97, 0xb8, 0x45, 0x02, 0x30, 0x96, 0x7a, 0x8e, 0x4b, 0x36, 0xa0, 0x0e, 0x23, 0xed, 0xcb, 0x3c, + 0xf5, 0x28, 0x76, 0x2d, 0x28, 0xf1, 0x32, 0x0c, 0x3a, 0xf5, 0x67, 0x63, 0x89, 0xf9, 0x63, 0xee, + 0x69, 0x02, 0xc0, 0xe0, 0xeb, 0x70, 0x67, 0xe8, 0x32, 0x11, 0x43, 0xd8, 0x9f, 0x30, 0x61, 0x93, + 0x21, 0x4b, 0x05, 0x2b, 0x09, 0x87, 0x15, 0xf9, 0xa7, 0xbc, 0x24, 0x20, 0x49, 0xd6, 0x06, 0x7e, + 0x51, 0x70, 0xcc, 0x9d, 0xc3, 0x59, 0xed, 0xcf, 0xb8, 0xd5, 0x28, 0x56, 0xb0, 0xda, 0x16, 0x4c, + 0x32, 0x89, 0x87, 0xf3, 0xeb, 0x57, 0x78, 0x61, 0xa5, 0xe8, 0x6d, 0xd1, 0xbb, 0xff, 0x0b, 0xa6, + 0x3c, 0x73, 0xf2, 0x8e, 0xd4, 0xa9, 0x34, 0xcd, 0x56, 0x0c, 0xc9, 0x5f, 0x65, 0x92, 0x79, 0xc5, + 0xf7, 0x5a, 0x5a, 0x67, 0xcd, 0x6c, 0x61, 0xe1, 0x8f, 0x43, 0x9a, 0x0b, 0xef, 0x58, 0x6d, 0x54, + 0xb5, 0x77, 0xad, 0xfa, 0xb3, 0xa8, 0x16, 0x43, 0xf4, 0x9f, 0x4b, 0xae, 0xda, 0x0e, 0xc0, 0xb1, + 0xe4, 0x15, 0xd0, 0xbc, 0x5e, 0xa5, 0x52, 0x6f, 0xb6, 0xec, 0xb6, 0x1b, 0x21, 0xf1, 0x2f, 0xb8, + 0xa7, 0x3c, 0xdc, 0x0a, 0x81, 0x65, 0x4b, 0x30, 0x4a, 0xbe, 0xc6, 0x0d, 0xc9, 0xaf, 0x31, 0x41, + 0x23, 0x3e, 0x8a, 0x15, 0x8e, 0xaa, 0xdd, 0x6c, 0x99, 0xed, 0x38, 0xf5, 0xef, 0x2f, 0x79, 0xe1, + 0x60, 0x10, 0x56, 0x38, 0xdc, 0xfd, 0x16, 0xc2, 0xab, 0x7d, 0x0c, 0x09, 0x5f, 0xe7, 0x85, 0x83, + 0x63, 0x98, 0x08, 0xde, 0x30, 0xc4, 0x10, 0xf1, 0x57, 0x5c, 0x04, 0xc7, 0x60, 0x11, 0xef, 0xf5, + 0x17, 0xda, 0x36, 0xda, 0xad, 0x3b, 0x6e, 0x9b, 0xf6, 0xc1, 0x07, 0x8b, 0xfa, 0xc6, 0xeb, 0x62, + 0x13, 0x66, 0x04, 0xa0, 0xd9, 0x6b, 0x30, 0x26, 0xb5, 0x18, 0x7a, 0xd4, 0x9d, 0x85, 0xf4, 0xff, + 0x7d, 0x83, 0x15, 0x23, 0xb1, 0xc3, 0xc8, 0xae, 0x62, 0xbf, 0x8b, 0x7d, 0x40, 0xb4, 0xb0, 0x0f, + 0xbd, 0xe1, 0xb9, 0x5e, 0x68, 0x03, 0xb2, 0x57, 0x60, 0x44, 0xe8, 0x01, 0xa2, 0x45, 0xfd, 0x3f, + 0x26, 0x6a, 0x38, 0xd8, 0x02, 0x64, 0x97, 0x21, 0x89, 0xd7, 0xf3, 0x68, 0xf8, 0xff, 0x67, 0x70, + 0xc2, 0x9e, 0x7d, 0x08, 0x52, 0x7c, 0x1d, 0x8f, 0x86, 0x7e, 0x98, 0x41, 0x3d, 0x08, 0x86, 0xf3, + 0x35, 0x3c, 0x1a, 0xfe, 0x2b, 0x1c, 0xce, 0x21, 0x18, 0x1e, 0xdf, 0x84, 0x2f, 0xfd, 0x5a, 0x92, + 0xd5, 0x61, 0x6e, 0xbb, 0xcb, 0x70, 0x84, 0x2d, 0xde, 0xd1, 0xe8, 0x8f, 0xb2, 0x87, 0x73, 0x44, + 0xf6, 0x02, 0xf4, 0xc7, 0x34, 0xf8, 0xaf, 0x33, 0x28, 0xe5, 0xcf, 0x16, 0x60, 0x28, 0xb0, 0x60, + 0x47, 0xc3, 0x7f, 0x83, 0xc1, 0x83, 0x28, 0xac, 0x3a, 0x5b, 0xb0, 0xa3, 0x05, 0xfc, 0x26, 0x57, + 0x9d, 0x21, 0xb0, 0xd9, 0xf8, 0x5a, 0x1d, 0x8d, 0xfe, 0x2d, 0x6e, 0x75, 0x0e, 0xc9, 0x3e, 0x02, + 0x83, 0x5e, 0xfd, 0x8d, 0xc6, 0xff, 0x36, 0xc3, 0xfb, 0x18, 0x6c, 0x81, 0x40, 0xfd, 0x8f, 0x16, + 0xf1, 0x3b, 0xdc, 0x02, 0x01, 0x14, 0x4e, 0x23, 0x79, 0x4d, 0x8f, 0x96, 0xf4, 0x31, 0x9e, 0x46, + 0xd2, 0x92, 0x8e, 0xbd, 0x49, 0xca, 0x60, 0xb4, 0x88, 0xdf, 0xe5, 0xde, 0x24, 0xfc, 0x58, 0x0d, + 0x79, 0x91, 0x8c, 0x96, 0xf1, 0xfb, 0x5c, 0x0d, 0x69, 0x8d, 0xcc, 0x6e, 0x80, 0xde, 0xbd, 0x40, + 0x46, 0xcb, 0xfb, 0x38, 0x93, 0x37, 0xde, 0xb5, 0x3e, 0x66, 0x1f, 0x83, 0xc9, 0xf0, 0xc5, 0x31, + 0x5a, 0xea, 0x27, 0xde, 0x90, 0x5e, 0x67, 0x82, 0x6b, 0x63, 0x76, 0xcb, 0xaf, 0xb2, 0xc1, 0x85, + 0x31, 0x5a, 0xec, 0x27, 0xdf, 0x10, 0x0b, 0x6d, 0x70, 0x5d, 0xcc, 0xe6, 0x00, 0xfc, 0x35, 0x29, + 0x5a, 0xd6, 0xa7, 0x98, 0xac, 0x00, 0x08, 0xa7, 0x06, 0x5b, 0x92, 0xa2, 0xf1, 0x9f, 0xe6, 0xa9, + 0xc1, 0x10, 0x38, 0x35, 0xf8, 0x6a, 0x14, 0x8d, 0x7e, 0x9e, 0xa7, 0x06, 0x87, 0x64, 0x2f, 0x43, + 0xca, 0xea, 0x34, 0x1a, 0x38, 0xb6, 0xf4, 0x83, 0xaf, 0x11, 0xa5, 0xff, 0xf5, 0x4d, 0x06, 0xe6, + 0x80, 0xec, 0x32, 0xf4, 0xa3, 0xe6, 0x0d, 0x54, 0x8b, 0x42, 0xfe, 0xdb, 0x9b, 0xbc, 0x9e, 0x60, + 0xee, 0xec, 0x23, 0x00, 0xf4, 0x65, 0x9a, 0x9c, 0x12, 0x45, 0x60, 0xff, 0xfd, 0x4d, 0x76, 0x43, + 0xc1, 0x87, 0xf8, 0x02, 0xe8, 0x7d, 0x87, 0x83, 0x05, 0xbc, 0x2e, 0x0a, 0x20, 0x2f, 0xe0, 0x97, + 0xe0, 0xc8, 0x13, 0x8e, 0x6d, 0xb9, 0xe6, 0x6e, 0x14, 0xfa, 0x3f, 0x18, 0x9a, 0xf3, 0x63, 0x83, + 0x35, 0xed, 0x36, 0x72, 0xcd, 0x5d, 0x27, 0x0a, 0xfb, 0x9f, 0x0c, 0xeb, 0x01, 0x30, 0xb8, 0x6a, + 0x3a, 0x6e, 0x9c, 0x79, 0xff, 0x17, 0x07, 0x73, 0x00, 0x56, 0x1a, 0x7f, 0x7e, 0x12, 0xed, 0x47, + 0x61, 0x7f, 0xc8, 0x95, 0x66, 0xfc, 0xd9, 0x87, 0x60, 0x10, 0x7f, 0xa4, 0xb7, 0x76, 0x22, 0xc0, + 0x3f, 0x62, 0x60, 0x1f, 0x81, 0x9f, 0xec, 0xb8, 0x35, 0xb7, 0x1e, 0x6d, 0xec, 0xff, 0x66, 0x9e, + 0xe6, 0xfc, 0xd9, 0x1c, 0x0c, 0x39, 0x6e, 0xad, 0xd6, 0x61, 0x1d, 0x4d, 0x04, 0xfc, 0xc7, 0x6f, + 0x7a, 0x2f, 0xb9, 0x1e, 0x26, 0x7f, 0x32, 0x7c, 0xb3, 0x0e, 0xae, 0xda, 0x57, 0x6d, 0xba, 0x4d, + 0x07, 0xdf, 0x6c, 0xc0, 0x88, 0xbb, 0x87, 0xf0, 0x72, 0xc1, 0x76, 0xd5, 0x92, 0xf8, 0xf3, 0xd4, + 0xe1, 0xb6, 0xe2, 0xc8, 0x29, 0x6b, 0xb9, 0x8e, 0xb5, 0x29, 0x93, 0x8d, 0x6e, 0xfd, 0x38, 0x0c, + 0x10, 0xfd, 0xce, 0x92, 0xc3, 0x24, 0x25, 0x9f, 0xbc, 0xf9, 0xca, 0x4c, 0x9f, 0xc1, 0xc6, 0x3c, + 0xea, 0x22, 0xd9, 0x89, 0x4c, 0x08, 0xd4, 0x45, 0x8f, 0x7a, 0x8e, 0x6e, 0x46, 0x0a, 0xd4, 0x73, + 0x1e, 0x75, 0x89, 0x6c, 0x4b, 0xaa, 0x02, 0x75, 0xc9, 0xa3, 0x2e, 0x93, 0xad, 0xf7, 0x11, 0x81, + 0xba, 0xec, 0x51, 0xcf, 0x93, 0x0d, 0xf7, 0xa4, 0x40, 0x3d, 0xef, 0x51, 0x2f, 0x90, 0xbd, 0xf6, + 0x71, 0x81, 0x7a, 0xc1, 0xa3, 0x5e, 0x24, 0x7b, 0xec, 0xba, 0x40, 0xbd, 0xe8, 0x51, 0x2f, 0x91, + 0x8b, 0x23, 0x47, 0x04, 0xea, 0x25, 0x7d, 0x1a, 0x8e, 0xd0, 0x99, 0x2f, 0x90, 0x03, 0xd9, 0x31, + 0x46, 0xe6, 0x83, 0x3e, 0xfd, 0x2c, 0xb9, 0x24, 0x32, 0x20, 0xd2, 0xcf, 0xfa, 0xf4, 0x45, 0x72, + 0x5d, 0x5a, 0x13, 0xe9, 0x8b, 0x3e, 0xfd, 0x5c, 0x7a, 0x84, 0x5c, 0x94, 0x11, 0xe8, 0xe7, 0x7c, + 0xfa, 0x52, 0x7a, 0x14, 0x87, 0xa8, 0x48, 0x5f, 0xf2, 0xe9, 0xcb, 0xe9, 0xb1, 0x13, 0xca, 0xec, + 0xb0, 0x48, 0x5f, 0xce, 0x7c, 0x90, 0xb8, 0xd7, 0xf2, 0xdd, 0x3b, 0x29, 0xba, 0xd7, 0x73, 0xec, + 0xa4, 0xe8, 0x58, 0xcf, 0xa5, 0x93, 0xa2, 0x4b, 0x3d, 0x67, 0x4e, 0x8a, 0xce, 0xf4, 0xdc, 0x38, + 0x29, 0xba, 0xd1, 0x73, 0xe0, 0xa4, 0xe8, 0x40, 0xcf, 0x75, 0x93, 0xa2, 0xeb, 0x3c, 0xa7, 0x4d, + 0x8a, 0x4e, 0xf3, 0xdc, 0x35, 0x29, 0xba, 0xcb, 0x73, 0x54, 0x5a, 0x72, 0x94, 0xef, 0xa2, 0xb4, + 0xe4, 0x22, 0xdf, 0x39, 0x69, 0xc9, 0x39, 0xbe, 0x5b, 0xd2, 0x92, 0x5b, 0x7c, 0x87, 0xa4, 0x25, + 0x87, 0xf8, 0xae, 0x48, 0x4b, 0xae, 0xf0, 0x9d, 0xc0, 0x72, 0xcc, 0x40, 0xad, 0x90, 0x1c, 0x53, + 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, + 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xcc, 0x31, 0xf5, 0xc0, 0x1c, 0x53, 0x0f, 0xce, 0x31, 0x35, + 0x22, 0xc7, 0xd4, 0x88, 0x1c, 0x53, 0x23, 0x72, 0x4c, 0x8d, 0xc8, 0x31, 0x35, 0x22, 0xc7, 0xd4, + 0x9e, 0x39, 0xe6, 0xbb, 0x77, 0x52, 0x74, 0x6f, 0x68, 0x8e, 0xa9, 0x3d, 0x72, 0x4c, 0xed, 0x91, + 0x63, 0x6a, 0x8f, 0x1c, 0x53, 0x7b, 0xe4, 0x98, 0xda, 0x23, 0xc7, 0xd4, 0x1e, 0x39, 0xa6, 0xf6, + 0xc8, 0x31, 0xb5, 0x57, 0x8e, 0xa9, 0x3d, 0x73, 0x4c, 0xed, 0x99, 0x63, 0x6a, 0xcf, 0x1c, 0x53, + 0x7b, 0xe6, 0x98, 0xda, 0x33, 0xc7, 0xd4, 0x60, 0x8e, 0xfd, 0xb5, 0x0a, 0x3a, 0xcd, 0xb1, 0x0d, + 0x72, 0xa5, 0x87, 0xb9, 0x62, 0x5a, 0xca, 0xb4, 0x01, 0xec, 0x3a, 0xcd, 0x77, 0xc9, 0xb4, 0x94, + 0x6b, 0x22, 0x7d, 0xd1, 0xa3, 0xf3, 0x6c, 0x13, 0xe9, 0xe7, 0x3c, 0x3a, 0xcf, 0x37, 0x91, 0xbe, + 0xe4, 0xd1, 0x79, 0xc6, 0x89, 0xf4, 0x65, 0x8f, 0xce, 0x73, 0x4e, 0xa4, 0x9f, 0xf7, 0xe8, 0x3c, + 0xeb, 0x44, 0xfa, 0x05, 0x8f, 0xce, 0xf3, 0x4e, 0xa4, 0x5f, 0xf4, 0xe8, 0x3c, 0xf3, 0x44, 0xfa, + 0x25, 0xfd, 0x84, 0x9c, 0x7b, 0x9c, 0xc1, 0x73, 0xed, 0x09, 0x39, 0xfb, 0x24, 0x8e, 0xb3, 0x3e, + 0x07, 0xcf, 0x3f, 0x89, 0x63, 0xd1, 0xe7, 0xe0, 0x19, 0x28, 0x71, 0x9c, 0xcb, 0x7c, 0x84, 0xb8, + 0xcf, 0x92, 0xdd, 0x37, 0x25, 0xb9, 0x2f, 0x11, 0x70, 0xdd, 0x94, 0xe4, 0xba, 0x44, 0xc0, 0x6d, + 0x53, 0x92, 0xdb, 0x12, 0x01, 0x97, 0x4d, 0x49, 0x2e, 0x4b, 0x04, 0xdc, 0x35, 0x25, 0xb9, 0x2b, + 0x11, 0x70, 0xd5, 0x94, 0xe4, 0xaa, 0x44, 0xc0, 0x4d, 0x53, 0x92, 0x9b, 0x12, 0x01, 0x17, 0x4d, + 0x49, 0x2e, 0x4a, 0x04, 0xdc, 0x33, 0x25, 0xb9, 0x27, 0x11, 0x70, 0xcd, 0x71, 0xd9, 0x35, 0x89, + 0xa0, 0x5b, 0x8e, 0xcb, 0x6e, 0x49, 0x04, 0x5d, 0x72, 0x5c, 0x76, 0x49, 0x22, 0xe8, 0x8e, 0xe3, + 0xb2, 0x3b, 0x12, 0x41, 0x57, 0xfc, 0x2c, 0xc1, 0x3b, 0xc2, 0x4d, 0xb7, 0xdd, 0xa9, 0xba, 0xb7, + 0xd5, 0x11, 0x2e, 0x08, 0xed, 0xc3, 0xd0, 0xa2, 0x3e, 0x4f, 0x1a, 0xd6, 0x60, 0xc7, 0x29, 0xad, + 0x60, 0x0b, 0x42, 0x63, 0x11, 0x40, 0x58, 0xe1, 0x88, 0xa5, 0xdb, 0xea, 0x0d, 0x17, 0x84, 0x36, + 0x23, 0x5a, 0xbf, 0x8b, 0xef, 0x78, 0xc7, 0xf6, 0x52, 0x82, 0x77, 0x6c, 0xcc, 0xfc, 0x87, 0xed, + 0xd8, 0xe6, 0xa2, 0x4d, 0xee, 0x19, 0x7b, 0x2e, 0xda, 0xd8, 0x5d, 0xab, 0x4e, 0xdc, 0x0e, 0x6e, + 0x2e, 0xda, 0xb4, 0x9e, 0x51, 0xdf, 0xde, 0x7e, 0x8b, 0x45, 0xb0, 0x81, 0x5a, 0x21, 0x11, 0x7c, + 0xd8, 0x7e, 0x6b, 0x41, 0x28, 0x25, 0x87, 0x8d, 0x60, 0xf5, 0xd0, 0x11, 0x7c, 0xd8, 0xce, 0x6b, + 0x41, 0x28, 0x2f, 0x87, 0x8e, 0xe0, 0x77, 0xa0, 0x1f, 0x62, 0x11, 0xec, 0x9b, 0xff, 0xb0, 0xfd, + 0xd0, 0x5c, 0xb4, 0xc9, 0x43, 0x23, 0x58, 0x3d, 0x44, 0x04, 0xc7, 0xe9, 0x8f, 0xe6, 0xa2, 0x4d, + 0x1b, 0x1e, 0xc1, 0xb7, 0xdd, 0xcd, 0x7c, 0x46, 0x81, 0xf1, 0x72, 0xbd, 0x56, 0x6a, 0xde, 0x40, + 0xb5, 0x1a, 0xaa, 0x31, 0x3b, 0x2e, 0x08, 0x95, 0xa0, 0x87, 0xab, 0x5f, 0x7e, 0x65, 0xc6, 0xb7, + 0xf0, 0x32, 0xa4, 0xa8, 0x4d, 0x17, 0x16, 0xd2, 0x37, 0x95, 0x88, 0x0a, 0xe7, 0xb1, 0xea, 0x27, + 0x39, 0xec, 0xec, 0x42, 0xfa, 0x1f, 0x95, 0x40, 0x95, 0xf3, 0x86, 0x33, 0x1f, 0x23, 0x1a, 0x5a, + 0xb7, 0xad, 0xe1, 0x99, 0x58, 0x1a, 0x06, 0x74, 0xbb, 0xab, 0x4b, 0xb7, 0x80, 0x56, 0x1d, 0x18, + 0x2b, 0xd7, 0x6b, 0x65, 0xf2, 0x87, 0xba, 0x71, 0x54, 0xa2, 0x3c, 0x52, 0x3d, 0x58, 0x10, 0xc2, + 0x32, 0x88, 0xf0, 0x42, 0x5a, 0xac, 0x11, 0x99, 0x3a, 0x7e, 0xac, 0x25, 0x3c, 0x76, 0xae, 0xd7, + 0x63, 0xfd, 0xca, 0xee, 0x3d, 0x70, 0xae, 0xd7, 0x03, 0xfd, 0x1c, 0xf2, 0x1e, 0xf5, 0x0c, 0x5f, + 0x9c, 0xe9, 0xdd, 0x1a, 0xfd, 0x38, 0x24, 0x56, 0xe8, 0xbd, 0xdf, 0xe1, 0xfc, 0x30, 0x56, 0xea, + 0xbb, 0xaf, 0xcc, 0x24, 0xb7, 0x3b, 0xf5, 0x9a, 0x91, 0x58, 0xa9, 0xe9, 0xd7, 0xa0, 0xff, 0x7d, + 0xec, 0xcf, 0xdd, 0x30, 0xc3, 0x12, 0x63, 0x78, 0xa0, 0xe7, 0x1e, 0x11, 0x7e, 0xf0, 0x19, 0xba, + 0x6b, 0x38, 0xbf, 0x5d, 0xb7, 0xdc, 0xb3, 0x8b, 0x17, 0x0d, 0x2a, 0x22, 0xf3, 0xbf, 0x01, 0xe8, + 0x33, 0x8b, 0xa6, 0xb3, 0xa7, 0x97, 0xb9, 0x64, 0xfa, 0xe8, 0x8b, 0xdf, 0x7d, 0x65, 0x66, 0x29, + 0x8e, 0xd4, 0x07, 0x6b, 0xa6, 0xb3, 0xf7, 0xa0, 0xbb, 0xdf, 0x42, 0xf3, 0xf9, 0x7d, 0x17, 0x39, + 0x5c, 0x7a, 0x8b, 0xaf, 0x7a, 0x6c, 0x5e, 0xe9, 0xc0, 0xbc, 0x52, 0xc2, 0x9c, 0xae, 0x88, 0x73, + 0x5a, 0x78, 0xab, 0xf3, 0x79, 0x86, 0x2f, 0x12, 0x92, 0x25, 0xd5, 0x28, 0x4b, 0xaa, 0xb7, 0x6b, + 0xc9, 0x16, 0xaf, 0x8f, 0xd2, 0x5c, 0xd5, 0x83, 0xe6, 0xaa, 0xde, 0xce, 0x5c, 0x7f, 0x42, 0xb3, + 0xd5, 0xcb, 0xa7, 0x6d, 0x8b, 0xde, 0x39, 0xfc, 0xe5, 0xda, 0x0b, 0x7a, 0x5b, 0xbb, 0x80, 0x6c, + 0xf2, 0xe6, 0x0b, 0x33, 0x4a, 0xe6, 0x33, 0x09, 0x3e, 0x73, 0x9a, 0x48, 0x6f, 0x6d, 0xe6, 0xbf, + 0x2c, 0x3d, 0xd5, 0x3b, 0x61, 0xa1, 0xe7, 0x15, 0x98, 0xec, 0xaa, 0xe4, 0xd4, 0x4c, 0x6f, 0x6f, + 0x39, 0xb7, 0x0e, 0x5b, 0xce, 0x99, 0x82, 0x5f, 0x53, 0xe0, 0xa8, 0x54, 0x5e, 0xa9, 0x7a, 0x67, + 0x24, 0xf5, 0x8e, 0x75, 0x3f, 0x89, 0x30, 0x06, 0xb4, 0x0b, 0xba, 0x57, 0x02, 0x04, 0x24, 0x7b, + 0x7e, 0x5f, 0x92, 0xfc, 0x7e, 0xdc, 0x03, 0x84, 0x98, 0x8b, 0x47, 0x00, 0x53, 0xdb, 0x86, 0xe4, + 0x56, 0x1b, 0x21, 0x7d, 0x1a, 0x12, 0xeb, 0x6d, 0xa6, 0xe1, 0x28, 0xc5, 0xaf, 0xb7, 0xf3, 0x6d, + 0xd3, 0xaa, 0xee, 0x19, 0x89, 0xf5, 0xb6, 0x7e, 0x12, 0xd4, 0x1c, 0xfb, 0x41, 0x81, 0xa1, 0xc5, + 0x31, 0xca, 0x90, 0xb3, 0x6a, 0x8c, 0x03, 0xd3, 0xf4, 0x69, 0x48, 0xae, 0x22, 0x73, 0x87, 0x29, + 0x01, 0x94, 0x07, 0x8f, 0x18, 0x64, 0x9c, 0x3d, 0xf0, 0x71, 0x48, 0x71, 0xc1, 0xfa, 0x29, 0x8c, + 0xd8, 0x71, 0xd9, 0x63, 0x19, 0x02, 0xab, 0xc3, 0x56, 0x2e, 0x42, 0xd5, 0x4f, 0x43, 0xbf, 0x51, + 0xdf, 0xdd, 0x73, 0xd9, 0xc3, 0xbb, 0xd9, 0x28, 0x39, 0x73, 0x1d, 0x06, 0x3d, 0x8d, 0xde, 0x66, + 0xd1, 0x45, 0x3a, 0x35, 0x7d, 0x2a, 0xb8, 0x9e, 0xf0, 0x7d, 0x4b, 0x3a, 0xa4, 0x9f, 0x80, 0xd4, + 0xa6, 0xdb, 0xf6, 0x8b, 0x3e, 0xef, 0x48, 0xbd, 0xd1, 0xcc, 0x07, 0x15, 0x48, 0x15, 0x11, 0x6a, + 0x11, 0x83, 0xdf, 0x0b, 0xc9, 0xa2, 0xfd, 0xb4, 0xc5, 0x14, 0x1c, 0x67, 0x16, 0xc5, 0x64, 0x66, + 0x53, 0x42, 0xd6, 0xef, 0x0d, 0xda, 0x7d, 0xc2, 0xb3, 0x7b, 0x80, 0x8f, 0xd8, 0x3e, 0x23, 0xd8, + 0x9e, 0x39, 0x10, 0x33, 0x75, 0xd9, 0xff, 0x02, 0x0c, 0x05, 0x9e, 0xa2, 0xcf, 0x32, 0x35, 0x12, + 0x32, 0x30, 0x68, 0x2b, 0xcc, 0x91, 0x41, 0x30, 0x22, 0x3c, 0x18, 0x43, 0x03, 0x26, 0xee, 0x01, + 0x25, 0x66, 0x9e, 0x13, 0xcd, 0x1c, 0xce, 0xca, 0x4c, 0xbd, 0x40, 0x6d, 0x44, 0xcc, 0x7d, 0x8a, + 0x06, 0x67, 0x6f, 0x27, 0xe2, 0xcf, 0x99, 0x7e, 0x50, 0xcb, 0xf5, 0x46, 0xe6, 0x21, 0x00, 0x9a, + 0xf2, 0x25, 0xab, 0xd3, 0x94, 0xb2, 0x6e, 0x94, 0x1b, 0x78, 0x6b, 0x0f, 0x6d, 0x21, 0x87, 0xb0, + 0x88, 0xfd, 0x14, 0x2e, 0x30, 0x40, 0x53, 0x8c, 0xe0, 0xef, 0x8f, 0xc4, 0x87, 0x76, 0x62, 0x98, + 0x35, 0x4d, 0x59, 0xaf, 0x23, 0x37, 0x67, 0xd9, 0xee, 0x1e, 0x6a, 0x4b, 0x88, 0x45, 0xfd, 0x9c, + 0x90, 0xb0, 0xa3, 0x8b, 0x77, 0x79, 0x88, 0x9e, 0xa0, 0x73, 0x99, 0xaf, 0x10, 0x05, 0x71, 0x2b, + 0xd0, 0x35, 0x41, 0x35, 0xc6, 0x04, 0xf5, 0xf3, 0x42, 0xff, 0x76, 0x80, 0x9a, 0xd2, 0xab, 0xe5, + 0x25, 0xe1, 0x3d, 0xe7, 0x60, 0x65, 0xc5, 0x77, 0x4c, 0x6e, 0x53, 0xae, 0xf2, 0xfd, 0x91, 0x2a, + 0xf7, 0xe8, 0x6e, 0x0f, 0x6b, 0x53, 0x35, 0xae, 0x4d, 0xbf, 0xe9, 0x75, 0x1c, 0xf4, 0xa7, 0x19, + 0xc8, 0x2f, 0x81, 0xe8, 0x0f, 0x44, 0xfa, 0x3e, 0xab, 0x14, 0x3c, 0x55, 0x97, 0xe2, 0xba, 0x3f, + 0x9b, 0xc8, 0xe7, 0x3d, 0x75, 0x2f, 0x1c, 0x22, 0x04, 0xb2, 0x89, 0x42, 0xc1, 0x2b, 0xdb, 0xa9, + 0x8f, 0xbc, 0x30, 0xa3, 0xbc, 0xf8, 0xc2, 0x4c, 0x5f, 0xe6, 0x8b, 0x0a, 0x8c, 0x33, 0xce, 0x40, + 0xe0, 0x3e, 0x28, 0x29, 0x7f, 0x07, 0xaf, 0x19, 0x61, 0x16, 0xf8, 0xb9, 0x05, 0xef, 0xb7, 0x15, + 0x48, 0x77, 0xe9, 0xca, 0xed, 0xbd, 0x10, 0x4b, 0xe5, 0xac, 0x52, 0xfa, 0xc5, 0xdb, 0xfc, 0x3a, + 0xf4, 0x6f, 0xd5, 0x9b, 0xa8, 0x8d, 0x57, 0x02, 0xfc, 0x81, 0xaa, 0xcc, 0x0f, 0x73, 0xe8, 0x10, + 0xa7, 0x51, 0xe5, 0x04, 0xda, 0xa2, 0x9e, 0x86, 0x64, 0xd1, 0x74, 0x4d, 0xa2, 0xc1, 0xb0, 0x57, + 0x5f, 0x4d, 0xd7, 0xcc, 0x9c, 0x83, 0xe1, 0xb5, 0x7d, 0x72, 0x31, 0xa6, 0x46, 0x2e, 0x7d, 0x88, + 0xdd, 0x1f, 0xef, 0x57, 0xcf, 0xce, 0xf5, 0xa7, 0x6a, 0xda, 0x4d, 0x25, 0x9b, 0x24, 0xfa, 0x3c, + 0x05, 0xa3, 0xeb, 0x58, 0x6d, 0x82, 0x13, 0x60, 0xf4, 0xe9, 0xaa, 0x37, 0x79, 0xa9, 0x29, 0x53, + 0xfd, 0xa6, 0xec, 0x04, 0x28, 0x6b, 0x62, 0xeb, 0x14, 0xd4, 0xc3, 0x50, 0xd6, 0xe6, 0x92, 0xa9, + 0x51, 0x6d, 0x7c, 0x2e, 0x99, 0x02, 0x6d, 0x84, 0x3d, 0xf7, 0xef, 0x55, 0xd0, 0x68, 0xab, 0x53, + 0x44, 0x3b, 0x75, 0xab, 0xee, 0x76, 0xf7, 0xab, 0x9e, 0xc6, 0xfa, 0x23, 0x30, 0x88, 0x4d, 0x7a, + 0x85, 0xfd, 0xa0, 0x16, 0x36, 0xfd, 0x49, 0xd6, 0xa2, 0x48, 0x22, 0xd8, 0x00, 0x09, 0x1d, 0x1f, + 0xa3, 0x5f, 0x01, 0xb5, 0x5c, 0x5e, 0x63, 0x8b, 0xdb, 0xd2, 0x81, 0x50, 0x76, 0xaf, 0x86, 0x7d, + 0x63, 0x63, 0xce, 0xae, 0x81, 0x05, 0xe8, 0x4b, 0x90, 0x28, 0xaf, 0xb1, 0x86, 0xf7, 0x54, 0x1c, + 0x31, 0x46, 0xa2, 0xbc, 0x36, 0xf5, 0x37, 0x0a, 0x8c, 0x08, 0xa3, 0x7a, 0x06, 0x86, 0xe9, 0x40, + 0x60, 0xba, 0x03, 0x86, 0x30, 0xc6, 0x75, 0x4e, 0xdc, 0xa6, 0xce, 0x53, 0x39, 0x18, 0x93, 0xc6, + 0xf5, 0x79, 0xd0, 0x83, 0x43, 0x4c, 0x09, 0xfa, 0x63, 0x44, 0x21, 0x94, 0xcc, 0xdd, 0x00, 0xbe, + 0x5d, 0xbd, 0xdf, 0xd0, 0x29, 0x97, 0x36, 0xb7, 0x4a, 0x45, 0x4d, 0xc9, 0x7c, 0x5d, 0x81, 0x21, + 0xd6, 0xb6, 0x56, 0xed, 0x16, 0xd2, 0xf3, 0xa0, 0xe4, 0x58, 0x3c, 0xbc, 0x35, 0xbd, 0x95, 0x9c, + 0x7e, 0x06, 0x94, 0x7c, 0x7c, 0x57, 0x2b, 0x79, 0x7d, 0x11, 0x94, 0x02, 0x73, 0x70, 0x3c, 0xcf, + 0x28, 0x85, 0xcc, 0x8f, 0x54, 0x98, 0x08, 0xb6, 0xd1, 0xbc, 0x9e, 0x9c, 0x14, 0xdf, 0x9b, 0xb2, + 0x83, 0x67, 0x17, 0xcf, 0x2d, 0xcd, 0xe3, 0x7f, 0xbc, 0x90, 0x3c, 0x29, 0xbe, 0x42, 0x75, 0xb3, + 0x74, 0x5d, 0x13, 0xc9, 0x26, 0x03, 0xd4, 0xae, 0x6b, 0x22, 0x02, 0xb5, 0xeb, 0x9a, 0x88, 0x40, + 0xed, 0xba, 0x26, 0x22, 0x50, 0xbb, 0x8e, 0x02, 0x04, 0x6a, 0xd7, 0x35, 0x11, 0x81, 0xda, 0x75, + 0x4d, 0x44, 0xa0, 0x76, 0x5f, 0x13, 0x61, 0xe4, 0x9e, 0xd7, 0x44, 0x44, 0x7a, 0xf7, 0x35, 0x11, + 0x91, 0xde, 0x7d, 0x4d, 0x24, 0x9b, 0x74, 0xdb, 0x1d, 0xd4, 0xfb, 0xd0, 0x41, 0xc4, 0x1f, 0xf4, + 0x0e, 0xe8, 0x17, 0xe0, 0x75, 0x18, 0xa3, 0xfb, 0x11, 0x05, 0xdb, 0x72, 0xcd, 0xba, 0x85, 0xda, + 0xfa, 0xbb, 0x61, 0x98, 0x0e, 0xd1, 0xb7, 0x9c, 0xb0, 0xb7, 0x40, 0x4a, 0x67, 0xe5, 0x56, 0xe0, + 0xce, 0xfc, 0x2c, 0x09, 0x93, 0x74, 0xa0, 0x6c, 0x36, 0x91, 0x70, 0xc9, 0xe8, 0xb4, 0x74, 0xa4, + 0x34, 0x8a, 0xe1, 0xb7, 0x5e, 0x99, 0xa1, 0xa3, 0x39, 0x2f, 0x98, 0x4e, 0x4b, 0x87, 0x4b, 0x22, + 0x9f, 0xbf, 0xfe, 0x9c, 0x96, 0x2e, 0x1e, 0x89, 0x7c, 0xde, 0x72, 0xe3, 0xf1, 0xf1, 0x2b, 0x48, + 0x22, 0x5f, 0xd1, 0x8b, 0xb2, 0xd3, 0xd2, 0x65, 0x24, 0x91, 0xaf, 0xe4, 0xc5, 0xdb, 0x69, 0xe9, + 0xe8, 0x49, 0xe4, 0xbb, 0xe2, 0x45, 0xde, 0x69, 0xe9, 0x10, 0x4a, 0xe4, 0xbb, 0xea, 0xc5, 0xe0, + 0x69, 0xe9, 0xaa, 0x92, 0xc8, 0xf7, 0xa8, 0x17, 0x8d, 0xa7, 0xa5, 0x4b, 0x4b, 0x22, 0xdf, 0x8a, + 0x17, 0x97, 0xb3, 0xf2, 0xf5, 0x25, 0x91, 0xf1, 0x9a, 0x1f, 0xa1, 0xb3, 0xf2, 0x45, 0x26, 0x91, + 0xf3, 0x3d, 0x7e, 0xac, 0xce, 0xca, 0x57, 0x9a, 0x44, 0xce, 0x55, 0x3f, 0x6a, 0x67, 0xe5, 0xa3, + 0x32, 0x91, 0x73, 0xcd, 0x8f, 0xdf, 0x59, 0xf9, 0xd0, 0x4c, 0xe4, 0x2c, 0xfb, 0x91, 0x3c, 0x2b, + 0x1f, 0x9f, 0x89, 0x9c, 0xeb, 0xfe, 0x1e, 0xfa, 0xb7, 0xa4, 0xf0, 0x0b, 0x5c, 0x82, 0xca, 0x48, + 0xe1, 0x07, 0x21, 0xa1, 0x97, 0x91, 0x42, 0x0f, 0x42, 0xc2, 0x2e, 0x23, 0x85, 0x1d, 0x84, 0x84, + 0x5c, 0x46, 0x0a, 0x39, 0x08, 0x09, 0xb7, 0x8c, 0x14, 0x6e, 0x10, 0x12, 0x6a, 0x19, 0x29, 0xd4, + 0x20, 0x24, 0xcc, 0x32, 0x52, 0x98, 0x41, 0x48, 0x88, 0x65, 0xa4, 0x10, 0x83, 0x90, 0xf0, 0xca, + 0x48, 0xe1, 0x05, 0x21, 0xa1, 0x75, 0x4a, 0x0e, 0x2d, 0x08, 0x0b, 0xab, 0x53, 0x72, 0x58, 0x41, + 0x58, 0x48, 0xdd, 0x23, 0x87, 0xd4, 0xe0, 0xad, 0x57, 0x66, 0xfa, 0xf1, 0x50, 0x20, 0x9a, 0x4e, + 0xc9, 0xd1, 0x04, 0x61, 0x91, 0x74, 0x4a, 0x8e, 0x24, 0x08, 0x8b, 0xa2, 0x53, 0x72, 0x14, 0x41, + 0x58, 0x04, 0xbd, 0x24, 0x47, 0x90, 0x7f, 0xc5, 0x27, 0x23, 0x9d, 0x28, 0x46, 0x45, 0x90, 0x1a, + 0x23, 0x82, 0xd4, 0x18, 0x11, 0xa4, 0xc6, 0x88, 0x20, 0x35, 0x46, 0x04, 0xa9, 0x31, 0x22, 0x48, + 0x8d, 0x11, 0x41, 0x6a, 0x8c, 0x08, 0x52, 0xe3, 0x44, 0x90, 0x1a, 0x2b, 0x82, 0xd4, 0x5e, 0x11, + 0x74, 0x4a, 0xbe, 0xf0, 0x00, 0x61, 0x05, 0xe9, 0x94, 0x7c, 0xf2, 0x19, 0x1d, 0x42, 0x6a, 0xac, + 0x10, 0x52, 0x7b, 0x85, 0xd0, 0xb7, 0x54, 0x98, 0x10, 0x42, 0x88, 0x1d, 0x0f, 0xbd, 0x5d, 0x15, + 0xe8, 0x7c, 0x8c, 0xfb, 0x15, 0x61, 0x31, 0x75, 0x3e, 0xc6, 0x19, 0xf5, 0x41, 0x71, 0xd6, 0x5d, + 0x85, 0x4a, 0x31, 0xaa, 0xd0, 0x15, 0x2f, 0x86, 0xce, 0xc7, 0xb8, 0x77, 0xd1, 0x1d, 0x7b, 0x17, + 0x0f, 0x2a, 0x02, 0x8f, 0xc6, 0x2a, 0x02, 0x2b, 0xb1, 0x8a, 0xc0, 0x35, 0xdf, 0x83, 0x1f, 0x4e, + 0xc0, 0x51, 0xdf, 0x83, 0xf4, 0x13, 0xf9, 0xe1, 0xa3, 0x4c, 0xe0, 0x84, 0x4a, 0xe7, 0xa7, 0x36, + 0x01, 0x37, 0x26, 0x56, 0x6a, 0xfa, 0x86, 0x78, 0x56, 0x95, 0x3d, 0xec, 0xf9, 0x4d, 0xc0, 0xe3, + 0x6c, 0x2f, 0xf4, 0x14, 0xa8, 0x2b, 0x35, 0x87, 0x54, 0x8b, 0xb0, 0xc7, 0x16, 0x0c, 0x4c, 0xd6, + 0x0d, 0x18, 0x20, 0xec, 0x0e, 0x71, 0xef, 0xed, 0x3c, 0xb8, 0x68, 0x30, 0x49, 0x99, 0x97, 0x14, + 0x38, 0x21, 0x84, 0xf2, 0xdb, 0x73, 0x62, 0x70, 0x39, 0xd6, 0x89, 0x81, 0x90, 0x20, 0xfe, 0xe9, + 0xc1, 0x7d, 0xdd, 0x07, 0xd5, 0xc1, 0x2c, 0x91, 0x4f, 0x12, 0xfe, 0x0f, 0x8c, 0xfa, 0x33, 0x20, + 0xaf, 0x6c, 0xcb, 0xd1, 0x9b, 0x99, 0x61, 0xa9, 0xb9, 0x2c, 0x6d, 0xa2, 0x1d, 0x08, 0xf3, 0xb2, + 0x35, 0x93, 0x85, 0xb1, 0xb2, 0xf8, 0x17, 0x3a, 0x51, 0x7b, 0x11, 0x29, 0xdc, 0x9a, 0xdf, 0xfc, + 0xec, 0x4c, 0x5f, 0xe6, 0x01, 0x18, 0x0e, 0xfe, 0x11, 0x8e, 0x04, 0x1c, 0xe4, 0xc0, 0x6c, 0xf2, + 0x65, 0xcc, 0xfd, 0x7b, 0x0a, 0xdc, 0x11, 0x64, 0x7f, 0xac, 0xee, 0xee, 0xad, 0x58, 0xb8, 0xa7, + 0x7f, 0x08, 0x52, 0x88, 0x39, 0x8e, 0xfd, 0x86, 0x09, 0x7b, 0x8d, 0x0c, 0x65, 0x9f, 0x27, 0xff, + 0x1a, 0x1e, 0x44, 0xda, 0x04, 0xe1, 0x8f, 0x5d, 0x9c, 0xba, 0x17, 0xfa, 0xa9, 0x7c, 0x51, 0xaf, + 0x11, 0x49, 0xaf, 0xcf, 0x87, 0xe8, 0x45, 0xe2, 0x48, 0xbf, 0x26, 0xe8, 0x15, 0x78, 0x5b, 0x0d, + 0x65, 0x9f, 0xe7, 0xc1, 0x97, 0x4f, 0xe1, 0xfe, 0x8f, 0x44, 0x54, 0xb4, 0x92, 0xb3, 0x90, 0x2a, + 0xc9, 0x3c, 0xe1, 0x7a, 0x16, 0x21, 0x59, 0xb6, 0x6b, 0xe4, 0xd7, 0x55, 0xc8, 0xaf, 0xe0, 0x32, + 0x23, 0xb3, 0x9f, 0xc4, 0x3d, 0x0d, 0xa9, 0xc2, 0x5e, 0xbd, 0x51, 0x6b, 0x23, 0x8b, 0x1d, 0xd9, + 0xb3, 0x1d, 0x74, 0x8c, 0x31, 0x3c, 0x5a, 0xa6, 0x00, 0xe3, 0x65, 0xdb, 0xca, 0xef, 0xbb, 0xc1, + 0xba, 0x31, 0x2f, 0xa5, 0x08, 0x3b, 0xf2, 0x21, 0x7f, 0xd6, 0x81, 0x19, 0xf2, 0xfd, 0xdf, 0x7d, + 0x65, 0x46, 0xd9, 0xf2, 0xb6, 0xcf, 0xd7, 0xe0, 0x18, 0x4b, 0x9f, 0x2e, 0x51, 0x8b, 0x51, 0xa2, + 0x06, 0xd9, 0x31, 0x75, 0x40, 0xdc, 0x0a, 0x16, 0x67, 0x85, 0x8a, 0x7b, 0x6b, 0x9a, 0xe1, 0xa6, + 0xe8, 0x40, 0xcd, 0xd4, 0x43, 0x69, 0x16, 0x2a, 0x6e, 0x3e, 0x4a, 0x9c, 0xa4, 0xd9, 0x3d, 0x30, + 0xe8, 0xd1, 0x02, 0xd1, 0x10, 0xcc, 0x94, 0xc5, 0xb9, 0x0c, 0x0c, 0x05, 0x12, 0x56, 0xef, 0x07, + 0x25, 0xa7, 0xf5, 0xe1, 0xff, 0xf2, 0x9a, 0x82, 0xff, 0x2b, 0x68, 0x89, 0xb9, 0x7b, 0x61, 0x4c, + 0xda, 0xbe, 0xc4, 0x94, 0xa2, 0x06, 0xf8, 0xbf, 0x92, 0x36, 0x34, 0x95, 0xfc, 0xc8, 0x1f, 0x4e, + 0xf7, 0xcd, 0x5d, 0x06, 0xbd, 0x7b, 0xa3, 0x53, 0x1f, 0x80, 0x44, 0x0e, 0x8b, 0x3c, 0x06, 0x89, + 0x7c, 0x5e, 0x53, 0xa6, 0xc6, 0x7e, 0xf5, 0xd3, 0x27, 0x86, 0xf2, 0xe4, 0x2f, 0x8c, 0xaf, 0x23, + 0x37, 0x9f, 0x67, 0xe0, 0x87, 0xe1, 0x8e, 0xd0, 0x8d, 0x52, 0x8c, 0x2f, 0x14, 0x28, 0xbe, 0x58, + 0xec, 0xc2, 0x17, 0x8b, 0x04, 0xaf, 0x64, 0xf9, 0x81, 0x73, 0x4e, 0x0f, 0xd9, 0x64, 0x4c, 0xd7, + 0x02, 0x07, 0xdc, 0xb9, 0xec, 0xc3, 0x8c, 0x37, 0x1f, 0xca, 0x8b, 0x22, 0x0e, 0xac, 0xf3, 0xd9, + 0x02, 0xc3, 0x17, 0x42, 0xf1, 0x3b, 0xd2, 0xa9, 0xaa, 0xb8, 0x42, 0x30, 0x21, 0x05, 0x4f, 0xe1, + 0x62, 0xa8, 0x90, 0xbd, 0xc0, 0x5d, 0xf7, 0xa2, 0xa7, 0x70, 0x29, 0x94, 0xb7, 0x1e, 0x71, 0xe7, + 0xab, 0x94, 0x3d, 0xc3, 0x16, 0xf9, 0xdc, 0x59, 0xfd, 0x0e, 0x9e, 0xa3, 0x42, 0x05, 0x66, 0x06, + 0xe2, 0x5c, 0xd9, 0x02, 0x03, 0xe4, 0x7b, 0x02, 0x7a, 0x5b, 0x89, 0x23, 0xb3, 0x8f, 0x32, 0x21, + 0x85, 0x9e, 0x42, 0x22, 0x4c, 0xc5, 0xe1, 0xf9, 0xad, 0x9b, 0xaf, 0x4e, 0xf7, 0xbd, 0xfc, 0xea, + 0x74, 0xdf, 0x3f, 0xbd, 0x3a, 0xdd, 0xf7, 0xbd, 0x57, 0xa7, 0x95, 0x1f, 0xbc, 0x3a, 0xad, 0xfc, + 0xf0, 0xd5, 0x69, 0xe5, 0xa7, 0xaf, 0x4e, 0x2b, 0xcf, 0xdd, 0x9a, 0x56, 0x5e, 0xbc, 0x35, 0xad, + 0x7c, 0xe5, 0xd6, 0xb4, 0xf2, 0x8d, 0x5b, 0xd3, 0xca, 0x4b, 0xb7, 0xa6, 0x95, 0x9b, 0xb7, 0xa6, + 0xfb, 0x5e, 0xbe, 0x35, 0xdd, 0xf7, 0xbd, 0x5b, 0xd3, 0xca, 0x0f, 0x6e, 0x4d, 0xf7, 0xfd, 0xf0, + 0xd6, 0xb4, 0xf2, 0xd3, 0x5b, 0xd3, 0x7d, 0xcf, 0xbd, 0x36, 0xdd, 0xf7, 0xc2, 0x6b, 0xd3, 0x7d, + 0x2f, 0xbe, 0x36, 0xad, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0xc5, 0xea, 0x72, 0x99, + 0x64, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/unrecognized/unrecognized.pb.go b/vendor/github.com/gogo/protobuf/test/unrecognized/unrecognized.pb.go index aeb012705..0b7e9df60 100644 --- a/vendor/github.com/gogo/protobuf/test/unrecognized/unrecognized.pb.go +++ b/vendor/github.com/gogo/protobuf/test/unrecognized/unrecognized.pb.go @@ -212,242 +212,249 @@ func (this *OldUnoM) Description() (desc *github_com_gogo_protobuf_protoc_gen_go func UnrecognizedDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3752 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, - 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x82, 0x20, 0x59, 0xe6, 0xca, 0xb1, 0xa4, 0x65, 0xec, - 0x58, 0xb6, 0x1b, 0x6d, 0x2a, 0xef, 0x15, 0xdb, 0xc4, 0x25, 0x29, 0xae, 0xac, 0x1d, 0x49, 0x54, - 0x20, 0x31, 0xb1, 0x93, 0x07, 0x0c, 0x04, 0xfc, 0xa4, 0xb0, 0x0b, 0x02, 0x2c, 0x00, 0xae, 0x2d, - 0x3f, 0x74, 0x36, 0xe3, 0xde, 0x32, 0x99, 0xb6, 0x69, 0xd3, 0x99, 0x26, 0x8e, 0xe3, 0x7a, 0x33, - 0xd3, 0x3a, 0x4d, 0x6f, 0x49, 0x2f, 0x69, 0xa6, 0x4f, 0x7d, 0x49, 0xeb, 0xa7, 0x8e, 0xf3, 0xd6, - 0x87, 0x3e, 0x64, 0x77, 0x3c, 0xd3, 0x9b, 0xdb, 0xa6, 0x8d, 0x67, 0xda, 0x99, 0x7d, 0xe9, 0xfc, - 0x37, 0x10, 0x20, 0xa9, 0x05, 0xe4, 0x99, 0xc4, 0x79, 0x92, 0x70, 0xfe, 0xf3, 0x7d, 0x38, 0x38, - 0xe7, 0xfc, 0xe7, 0x1c, 0xfc, 0x20, 0x7c, 0xee, 0x3c, 0xac, 0x74, 0x1c, 0xa7, 0x63, 0xa1, 0x73, - 0x3d, 0xd7, 0xf1, 0x9d, 0xc3, 0x7e, 0xfb, 0x9c, 0x81, 0x3c, 0xdd, 0x35, 0x7b, 0xbe, 0xe3, 0xae, - 0x11, 0x99, 0x34, 0x43, 0x35, 0xd6, 0xb8, 0x46, 0x65, 0x07, 0x66, 0xaf, 0x99, 0x16, 0xda, 0x08, - 0x14, 0xf7, 0x91, 0x2f, 0x5d, 0x86, 0x4c, 0xdb, 0xb4, 0x50, 0x59, 0x58, 0x49, 0xaf, 0x16, 0xd6, - 0x1f, 0x5b, 0x1b, 0x02, 0xad, 0x45, 0x11, 0x7b, 0x58, 0xac, 0x10, 0x44, 0xe5, 0x9d, 0x0c, 0xcc, - 0x8d, 0x59, 0x95, 0x24, 0xc8, 0xd8, 0x5a, 0x17, 0x33, 0x0a, 0xab, 0x79, 0x85, 0xfc, 0x2f, 0x95, - 0x61, 0xaa, 0xa7, 0xe9, 0x37, 0xb5, 0x0e, 0x2a, 0xa7, 0x88, 0x98, 0x5f, 0x4a, 0x4b, 0x00, 0x06, - 0xea, 0x21, 0xdb, 0x40, 0xb6, 0x7e, 0x5c, 0x4e, 0xaf, 0xa4, 0x57, 0xf3, 0x4a, 0x48, 0x22, 0x3d, - 0x0d, 0xb3, 0xbd, 0xfe, 0xa1, 0x65, 0xea, 0x6a, 0x48, 0x0d, 0x56, 0xd2, 0xab, 0x59, 0x45, 0xa4, - 0x0b, 0x1b, 0x03, 0xe5, 0x27, 0x60, 0xe6, 0x45, 0xa4, 0xdd, 0x0c, 0xab, 0x16, 0x88, 0x6a, 0x09, - 0x8b, 0x43, 0x8a, 0x75, 0x28, 0x76, 0x91, 0xe7, 0x69, 0x1d, 0xa4, 0xfa, 0xc7, 0x3d, 0x54, 0xce, - 0x90, 0xa7, 0x5f, 0x19, 0x79, 0xfa, 0xe1, 0x27, 0x2f, 0x30, 0xd4, 0xc1, 0x71, 0x0f, 0x49, 0x55, - 0xc8, 0x23, 0xbb, 0xdf, 0xa5, 0x0c, 0xd9, 0x13, 0xfc, 0xd7, 0xb0, 0xfb, 0xdd, 0x61, 0x96, 0x1c, - 0x86, 0x31, 0x8a, 0x29, 0x0f, 0xb9, 0xb7, 0x4c, 0x1d, 0x95, 0x27, 0x09, 0xc1, 0x13, 0x23, 0x04, - 0xfb, 0x74, 0x7d, 0x98, 0x83, 0xe3, 0xa4, 0x3a, 0xe4, 0xd1, 0x4b, 0x3e, 0xb2, 0x3d, 0xd3, 0xb1, - 0xcb, 0x53, 0x84, 0xe4, 0xf1, 0x31, 0x51, 0x44, 0x96, 0x31, 0x4c, 0x31, 0xc0, 0x49, 0x17, 0x61, - 0xca, 0xe9, 0xf9, 0xa6, 0x63, 0x7b, 0xe5, 0xdc, 0x8a, 0xb0, 0x5a, 0x58, 0xff, 0xd0, 0xd8, 0x44, - 0x68, 0x52, 0x1d, 0x85, 0x2b, 0x4b, 0x5b, 0x20, 0x7a, 0x4e, 0xdf, 0xd5, 0x91, 0xaa, 0x3b, 0x06, - 0x52, 0x4d, 0xbb, 0xed, 0x94, 0xf3, 0x84, 0x60, 0x79, 0xf4, 0x41, 0x88, 0x62, 0xdd, 0x31, 0xd0, - 0x96, 0xdd, 0x76, 0x94, 0x92, 0x17, 0xb9, 0x96, 0x16, 0x60, 0xd2, 0x3b, 0xb6, 0x7d, 0xed, 0xa5, - 0x72, 0x91, 0x64, 0x08, 0xbb, 0xaa, 0xfc, 0x6f, 0x16, 0x66, 0x92, 0xa4, 0xd8, 0x55, 0xc8, 0xb6, - 0xf1, 0x53, 0x96, 0x53, 0xa7, 0xf1, 0x01, 0xc5, 0x44, 0x9d, 0x38, 0xf9, 0x3e, 0x9d, 0x58, 0x85, - 0x82, 0x8d, 0x3c, 0x1f, 0x19, 0x34, 0x23, 0xd2, 0x09, 0x73, 0x0a, 0x28, 0x68, 0x34, 0xa5, 0x32, - 0xef, 0x2b, 0xa5, 0x9e, 0x87, 0x99, 0xc0, 0x24, 0xd5, 0xd5, 0xec, 0x0e, 0xcf, 0xcd, 0x73, 0x71, - 0x96, 0xac, 0x35, 0x38, 0x4e, 0xc1, 0x30, 0xa5, 0x84, 0x22, 0xd7, 0xd2, 0x06, 0x80, 0x63, 0x23, - 0xa7, 0xad, 0x1a, 0x48, 0xb7, 0xca, 0xb9, 0x13, 0xbc, 0xd4, 0xc4, 0x2a, 0x23, 0x5e, 0x72, 0xa8, - 0x54, 0xb7, 0xa4, 0x2b, 0x83, 0x54, 0x9b, 0x3a, 0x21, 0x53, 0x76, 0xe8, 0x26, 0x1b, 0xc9, 0xb6, - 0x16, 0x94, 0x5c, 0x84, 0xf3, 0x1e, 0x19, 0xec, 0xc9, 0xf2, 0xc4, 0x88, 0xb5, 0xd8, 0x27, 0x53, - 0x18, 0x8c, 0x3e, 0xd8, 0xb4, 0x1b, 0xbe, 0x94, 0x3e, 0x0c, 0x81, 0x40, 0x25, 0x69, 0x05, 0xa4, - 0x0a, 0x15, 0xb9, 0x70, 0x57, 0xeb, 0xa2, 0xc5, 0xcb, 0x50, 0x8a, 0xba, 0x47, 0x9a, 0x87, 0xac, - 0xe7, 0x6b, 0xae, 0x4f, 0xb2, 0x30, 0xab, 0xd0, 0x0b, 0x49, 0x84, 0x34, 0xb2, 0x0d, 0x52, 0xe5, - 0xb2, 0x0a, 0xfe, 0x77, 0xf1, 0x12, 0x4c, 0x47, 0x6e, 0x9f, 0x14, 0x58, 0xf9, 0xf2, 0x24, 0xcc, - 0x8f, 0xcb, 0xb9, 0xb1, 0xe9, 0xbf, 0x00, 0x93, 0x76, 0xbf, 0x7b, 0x88, 0xdc, 0x72, 0x9a, 0x30, - 0xb0, 0x2b, 0xa9, 0x0a, 0x59, 0x4b, 0x3b, 0x44, 0x56, 0x39, 0xb3, 0x22, 0xac, 0x96, 0xd6, 0x9f, - 0x4e, 0x94, 0xd5, 0x6b, 0xdb, 0x18, 0xa2, 0x50, 0xa4, 0xf4, 0x09, 0xc8, 0xb0, 0x12, 0x87, 0x19, - 0x9e, 0x4a, 0xc6, 0x80, 0x73, 0x51, 0x21, 0x38, 0xe9, 0x11, 0xc8, 0xe3, 0xbf, 0xd4, 0xb7, 0x93, - 0xc4, 0xe6, 0x1c, 0x16, 0x60, 0xbf, 0x4a, 0x8b, 0x90, 0x23, 0x69, 0x66, 0x20, 0xde, 0x1a, 0x82, - 0x6b, 0x1c, 0x18, 0x03, 0xb5, 0xb5, 0xbe, 0xe5, 0xab, 0xb7, 0x34, 0xab, 0x8f, 0x48, 0xc2, 0xe4, - 0x95, 0x22, 0x13, 0x7e, 0x0a, 0xcb, 0xa4, 0x65, 0x28, 0xd0, 0xac, 0x34, 0x6d, 0x03, 0xbd, 0x44, - 0xaa, 0x4f, 0x56, 0xa1, 0x89, 0xba, 0x85, 0x25, 0xf8, 0xf6, 0x37, 0x3c, 0xc7, 0xe6, 0xa1, 0x25, - 0xb7, 0xc0, 0x02, 0x72, 0xfb, 0x4b, 0xc3, 0x85, 0xef, 0xd1, 0xf1, 0x8f, 0x37, 0x9c, 0x8b, 0x95, - 0xef, 0xa4, 0x20, 0x43, 0xf6, 0xdb, 0x0c, 0x14, 0x0e, 0x5e, 0xd8, 0x6b, 0xa8, 0x1b, 0xcd, 0x56, - 0x6d, 0xbb, 0x21, 0x0a, 0x52, 0x09, 0x80, 0x08, 0xae, 0x6d, 0x37, 0xab, 0x07, 0x62, 0x2a, 0xb8, - 0xde, 0xda, 0x3d, 0xb8, 0x78, 0x5e, 0x4c, 0x07, 0x80, 0x16, 0x15, 0x64, 0xc2, 0x0a, 0xcf, 0xac, - 0x8b, 0x59, 0x49, 0x84, 0x22, 0x25, 0xd8, 0x7a, 0xbe, 0xb1, 0x71, 0xf1, 0xbc, 0x38, 0x19, 0x95, - 0x3c, 0xb3, 0x2e, 0x4e, 0x49, 0xd3, 0x90, 0x27, 0x92, 0x5a, 0xb3, 0xb9, 0x2d, 0xe6, 0x02, 0xce, - 0xfd, 0x03, 0x65, 0x6b, 0x77, 0x53, 0xcc, 0x07, 0x9c, 0x9b, 0x4a, 0xb3, 0xb5, 0x27, 0x42, 0xc0, - 0xb0, 0xd3, 0xd8, 0xdf, 0xaf, 0x6e, 0x36, 0xc4, 0x42, 0xa0, 0x51, 0x7b, 0xe1, 0xa0, 0xb1, 0x2f, - 0x16, 0x23, 0x66, 0x3d, 0xb3, 0x2e, 0x4e, 0x07, 0xb7, 0x68, 0xec, 0xb6, 0x76, 0xc4, 0x92, 0x34, - 0x0b, 0xd3, 0xf4, 0x16, 0xdc, 0x88, 0x99, 0x21, 0xd1, 0xc5, 0xf3, 0xa2, 0x38, 0x30, 0x84, 0xb2, - 0xcc, 0x46, 0x04, 0x17, 0xcf, 0x8b, 0x52, 0xa5, 0x0e, 0x59, 0x92, 0x5d, 0x92, 0x04, 0xa5, 0xed, - 0x6a, 0xad, 0xb1, 0xad, 0x36, 0xf7, 0x0e, 0xb6, 0x9a, 0xbb, 0xd5, 0x6d, 0x51, 0x18, 0xc8, 0x94, - 0xc6, 0x27, 0x5b, 0x5b, 0x4a, 0x63, 0x43, 0x4c, 0x85, 0x65, 0x7b, 0x8d, 0xea, 0x41, 0x63, 0x43, - 0x4c, 0x57, 0x74, 0x98, 0x1f, 0x57, 0x67, 0xc6, 0xee, 0x8c, 0x50, 0x88, 0x53, 0x27, 0x84, 0x98, - 0x70, 0x8d, 0x84, 0xf8, 0xeb, 0x02, 0xcc, 0x8d, 0xa9, 0xb5, 0x63, 0x6f, 0xf2, 0x2c, 0x64, 0x69, - 0x8a, 0xd2, 0xee, 0xf3, 0xe4, 0xd8, 0xa2, 0x4d, 0x12, 0x76, 0xa4, 0x03, 0x11, 0x5c, 0xb8, 0x03, - 0xa7, 0x4f, 0xe8, 0xc0, 0x98, 0x62, 0xc4, 0xc8, 0x57, 0x04, 0x28, 0x9f, 0xc4, 0x1d, 0x53, 0x28, - 0x52, 0x91, 0x42, 0x71, 0x75, 0xd8, 0x80, 0xb3, 0x27, 0x3f, 0xc3, 0x88, 0x15, 0x6f, 0x0a, 0xb0, - 0x30, 0x7e, 0x50, 0x19, 0x6b, 0xc3, 0x27, 0x60, 0xb2, 0x8b, 0xfc, 0x23, 0x87, 0x37, 0xeb, 0x8f, - 0x8c, 0x69, 0x01, 0x78, 0x79, 0xd8, 0x57, 0x0c, 0x15, 0xee, 0x21, 0xe9, 0x93, 0xa6, 0x0d, 0x6a, - 0xcd, 0x88, 0xa5, 0x9f, 0x4f, 0xc1, 0x43, 0x63, 0xc9, 0xc7, 0x1a, 0xfa, 0x28, 0x80, 0x69, 0xf7, - 0xfa, 0x3e, 0x6d, 0xc8, 0xb4, 0x3e, 0xe5, 0x89, 0x84, 0xec, 0x7d, 0x5c, 0x7b, 0xfa, 0x7e, 0xb0, - 0x9e, 0x26, 0xeb, 0x40, 0x45, 0x44, 0xe1, 0xf2, 0xc0, 0xd0, 0x0c, 0x31, 0x74, 0xe9, 0x84, 0x27, - 0x1d, 0xe9, 0x75, 0x1f, 0x03, 0x51, 0xb7, 0x4c, 0x64, 0xfb, 0xaa, 0xe7, 0xbb, 0x48, 0xeb, 0x9a, - 0x76, 0x87, 0x14, 0xe0, 0x9c, 0x9c, 0x6d, 0x6b, 0x96, 0x87, 0x94, 0x19, 0xba, 0xbc, 0xcf, 0x57, - 0x31, 0x82, 0x74, 0x19, 0x37, 0x84, 0x98, 0x8c, 0x20, 0xe8, 0x72, 0x80, 0xa8, 0x7c, 0x61, 0x0a, - 0x0a, 0xa1, 0xb1, 0x4e, 0x3a, 0x0b, 0xc5, 0x1b, 0xda, 0x2d, 0x4d, 0xe5, 0xa3, 0x3a, 0xf5, 0x44, - 0x01, 0xcb, 0xf6, 0xd8, 0xb8, 0xfe, 0x31, 0x98, 0x27, 0x2a, 0x4e, 0xdf, 0x47, 0xae, 0xaa, 0x5b, - 0x9a, 0xe7, 0x11, 0xa7, 0xe5, 0x88, 0xaa, 0x84, 0xd7, 0x9a, 0x78, 0xa9, 0xce, 0x57, 0xa4, 0x0b, - 0x30, 0x47, 0x10, 0xdd, 0xbe, 0xe5, 0x9b, 0x3d, 0x0b, 0xa9, 0xf8, 0xe5, 0xc1, 0x23, 0x85, 0x38, - 0xb0, 0x6c, 0x16, 0x6b, 0xec, 0x30, 0x05, 0x6c, 0x91, 0x27, 0x6d, 0xc2, 0xa3, 0x04, 0xd6, 0x41, - 0x36, 0x72, 0x35, 0x1f, 0xa9, 0xe8, 0x17, 0xfa, 0x9a, 0xe5, 0xa9, 0x9a, 0x6d, 0xa8, 0x47, 0x9a, - 0x77, 0x54, 0x9e, 0x0f, 0x13, 0x9c, 0xc1, 0xba, 0x9b, 0x4c, 0xb5, 0x41, 0x34, 0xab, 0xb6, 0xf1, - 0x9c, 0xe6, 0x1d, 0x49, 0x32, 0x2c, 0x10, 0x22, 0xcf, 0x77, 0x4d, 0xbb, 0xa3, 0xea, 0x47, 0x48, - 0xbf, 0xa9, 0xf6, 0xfd, 0xf6, 0xe5, 0xf2, 0x23, 0x61, 0x06, 0x62, 0xe4, 0x3e, 0xd1, 0xa9, 0x63, - 0x95, 0x96, 0xdf, 0xbe, 0x2c, 0xed, 0x43, 0x11, 0xc7, 0xa3, 0x6b, 0xbe, 0x8c, 0xd4, 0xb6, 0xe3, - 0x92, 0xe6, 0x52, 0x1a, 0xb3, 0xb9, 0x43, 0x4e, 0x5c, 0x6b, 0x32, 0xc0, 0x8e, 0x63, 0x20, 0x39, - 0xbb, 0xbf, 0xd7, 0x68, 0x6c, 0x28, 0x05, 0xce, 0x72, 0xcd, 0x71, 0x71, 0x4e, 0x75, 0x9c, 0xc0, - 0xc7, 0x05, 0x9a, 0x53, 0x1d, 0x87, 0x7b, 0xf8, 0x02, 0xcc, 0xe9, 0x3a, 0x7d, 0x6c, 0x53, 0x57, - 0xd9, 0x94, 0xef, 0x95, 0xc5, 0x88, 0xbf, 0x74, 0x7d, 0x93, 0x2a, 0xb0, 0x34, 0xf7, 0xa4, 0x2b, - 0xf0, 0xd0, 0xc0, 0x5f, 0x61, 0xe0, 0xec, 0xc8, 0x53, 0x0e, 0x43, 0x2f, 0xc0, 0x5c, 0xef, 0x78, - 0x14, 0x28, 0x45, 0xee, 0xd8, 0x3b, 0x1e, 0x86, 0x3d, 0x4e, 0xde, 0xdc, 0x5c, 0xa4, 0x6b, 0x3e, - 0x32, 0xca, 0x0f, 0x87, 0xb5, 0x43, 0x0b, 0xd2, 0x39, 0x10, 0x75, 0x5d, 0x45, 0xb6, 0x76, 0x68, - 0x21, 0x55, 0x73, 0x91, 0xad, 0x79, 0xe5, 0xe5, 0xb0, 0x72, 0x49, 0xd7, 0x1b, 0x64, 0xb5, 0x4a, - 0x16, 0xa5, 0xa7, 0x60, 0xd6, 0x39, 0xbc, 0xa1, 0xd3, 0xe4, 0x52, 0x7b, 0x2e, 0x6a, 0x9b, 0x2f, - 0x95, 0x1f, 0x23, 0x6e, 0x9a, 0xc1, 0x0b, 0x24, 0xb5, 0xf6, 0x88, 0x58, 0x7a, 0x12, 0x44, 0xdd, - 0x3b, 0xd2, 0xdc, 0x1e, 0xe9, 0xee, 0x5e, 0x4f, 0xd3, 0x51, 0xf9, 0x71, 0xaa, 0x4a, 0xe5, 0xbb, - 0x5c, 0x2c, 0x3d, 0x0f, 0xf3, 0x7d, 0xdb, 0xb4, 0x7d, 0xe4, 0xf6, 0x5c, 0x84, 0x87, 0x74, 0xba, - 0xd3, 0xca, 0xff, 0x3c, 0x75, 0xc2, 0x98, 0xdd, 0x0a, 0x6b, 0xd3, 0xe8, 0x2a, 0x73, 0xfd, 0x51, - 0x61, 0x45, 0x86, 0x62, 0x38, 0xe8, 0x52, 0x1e, 0x68, 0xd8, 0x45, 0x01, 0xf7, 0xd0, 0x7a, 0x73, - 0x03, 0x77, 0xbf, 0xcf, 0x34, 0xc4, 0x14, 0xee, 0xc2, 0xdb, 0x5b, 0x07, 0x0d, 0x55, 0x69, 0xed, - 0x1e, 0x6c, 0xed, 0x34, 0xc4, 0xf4, 0x53, 0xf9, 0xdc, 0xbf, 0x4c, 0x89, 0xb7, 0x6f, 0xdf, 0xbe, - 0x9d, 0xaa, 0x7c, 0x2f, 0x05, 0xa5, 0xe8, 0xe4, 0x2b, 0xfd, 0x1c, 0x3c, 0xcc, 0x5f, 0x53, 0x3d, - 0xe4, 0xab, 0x2f, 0x9a, 0x2e, 0xc9, 0xc3, 0xae, 0x46, 0x67, 0xc7, 0xc0, 0x85, 0xf3, 0x4c, 0x6b, - 0x1f, 0xf9, 0x9f, 0x36, 0x5d, 0x9c, 0x65, 0x5d, 0xcd, 0x97, 0xb6, 0x61, 0xd9, 0x76, 0x54, 0xcf, - 0xd7, 0x6c, 0x43, 0x73, 0x0d, 0x75, 0x70, 0x40, 0xa0, 0x6a, 0xba, 0x8e, 0x3c, 0xcf, 0xa1, 0x2d, - 0x20, 0x60, 0xf9, 0x90, 0xed, 0xec, 0x33, 0xe5, 0x41, 0x6d, 0xac, 0x32, 0xd5, 0xa1, 0x70, 0xa7, - 0x4f, 0x0a, 0xf7, 0x23, 0x90, 0xef, 0x6a, 0x3d, 0x15, 0xd9, 0xbe, 0x7b, 0x4c, 0xe6, 0xb5, 0x9c, - 0x92, 0xeb, 0x6a, 0xbd, 0x06, 0xbe, 0xfe, 0xf1, 0xc5, 0x20, 0xec, 0xc7, 0x7f, 0x4a, 0x43, 0x31, - 0x3c, 0xb3, 0xe1, 0x11, 0x58, 0x27, 0xf5, 0x59, 0x20, 0xdb, 0xf7, 0xc3, 0x0f, 0x9c, 0xf0, 0xd6, - 0xea, 0xb8, 0x70, 0xcb, 0x93, 0x74, 0x92, 0x52, 0x28, 0x12, 0x37, 0x4d, 0xbc, 0x61, 0x11, 0x9d, - 0xcf, 0x73, 0x0a, 0xbb, 0x92, 0x36, 0x61, 0xf2, 0x86, 0x47, 0xb8, 0x27, 0x09, 0xf7, 0x63, 0x0f, - 0xe6, 0xbe, 0xbe, 0x4f, 0xc8, 0xf3, 0xd7, 0xf7, 0xd5, 0xdd, 0xa6, 0xb2, 0x53, 0xdd, 0x56, 0x18, - 0x5c, 0x3a, 0x03, 0x19, 0x4b, 0x7b, 0xf9, 0x38, 0x5a, 0xe2, 0x89, 0x28, 0xa9, 0xe3, 0xcf, 0x40, - 0xe6, 0x45, 0xa4, 0xdd, 0x8c, 0x16, 0x56, 0x22, 0xfa, 0x31, 0xa6, 0xfe, 0x39, 0xc8, 0x12, 0x7f, - 0x49, 0x00, 0xcc, 0x63, 0xe2, 0x84, 0x94, 0x83, 0x4c, 0xbd, 0xa9, 0xe0, 0xf4, 0x17, 0xa1, 0x48, - 0xa5, 0xea, 0xde, 0x56, 0xa3, 0xde, 0x10, 0x53, 0x95, 0x0b, 0x30, 0x49, 0x9d, 0x80, 0xb7, 0x46, - 0xe0, 0x06, 0x71, 0x82, 0x5d, 0x32, 0x0e, 0x81, 0xaf, 0xb6, 0x76, 0x6a, 0x0d, 0x45, 0x4c, 0x85, - 0xc3, 0xeb, 0x41, 0x31, 0x3c, 0xae, 0xfd, 0x64, 0x72, 0xea, 0x6f, 0x04, 0x28, 0x84, 0xc6, 0x2f, - 0xdc, 0xf8, 0x35, 0xcb, 0x72, 0x5e, 0x54, 0x35, 0xcb, 0xd4, 0x3c, 0x96, 0x14, 0x40, 0x44, 0x55, - 0x2c, 0x49, 0x1a, 0xb4, 0x9f, 0x88, 0xf1, 0xaf, 0x0b, 0x20, 0x0e, 0x8f, 0x6e, 0x43, 0x06, 0x0a, - 0x1f, 0xa8, 0x81, 0xaf, 0x09, 0x50, 0x8a, 0xce, 0x6b, 0x43, 0xe6, 0x9d, 0xfd, 0x40, 0xcd, 0xfb, - 0xaa, 0x00, 0xd3, 0x91, 0x29, 0xed, 0xa7, 0xca, 0xba, 0x57, 0xd3, 0x30, 0x37, 0x06, 0x27, 0x55, - 0xd9, 0x38, 0x4b, 0x27, 0xec, 0x8f, 0x26, 0xb9, 0xd7, 0x1a, 0xee, 0x96, 0x7b, 0x9a, 0xeb, 0xb3, - 0xe9, 0xf7, 0x49, 0x10, 0x4d, 0x03, 0xd9, 0xbe, 0xd9, 0x36, 0x91, 0xcb, 0x5e, 0xc1, 0xe9, 0x8c, - 0x3b, 0x33, 0x90, 0xd3, 0xb7, 0xf0, 0x9f, 0x01, 0xa9, 0xe7, 0x78, 0xa6, 0x6f, 0xde, 0x42, 0xaa, - 0x69, 0xf3, 0xf7, 0x75, 0x3c, 0xf3, 0x66, 0x14, 0x91, 0xaf, 0x6c, 0xd9, 0x7e, 0xa0, 0x6d, 0xa3, - 0x8e, 0x36, 0xa4, 0x8d, 0x6b, 0x5f, 0x5a, 0x11, 0xf9, 0x4a, 0xa0, 0x7d, 0x16, 0x8a, 0x86, 0xd3, - 0xc7, 0xe3, 0x03, 0xd5, 0xc3, 0xa5, 0x56, 0x50, 0x0a, 0x54, 0x16, 0xa8, 0xb0, 0xf9, 0x6e, 0x70, - 0x50, 0x50, 0x54, 0x0a, 0x54, 0x46, 0x55, 0x9e, 0x80, 0x19, 0xad, 0xd3, 0x71, 0x31, 0x39, 0x27, - 0xa2, 0x43, 0x6b, 0x29, 0x10, 0x13, 0xc5, 0xc5, 0xeb, 0x90, 0xe3, 0x7e, 0xc0, 0xdd, 0x0c, 0x7b, - 0x42, 0xed, 0xd1, 0xe3, 0x9a, 0xd4, 0x6a, 0x5e, 0xc9, 0xd9, 0x7c, 0xf1, 0x2c, 0x14, 0x4d, 0x4f, - 0x1d, 0x9c, 0x1b, 0xa6, 0x56, 0x52, 0xab, 0x39, 0xa5, 0x60, 0x7a, 0xc1, 0x41, 0x51, 0xe5, 0xcd, - 0x14, 0x94, 0xa2, 0xe7, 0x9e, 0xd2, 0x06, 0xe4, 0x2c, 0x47, 0xd7, 0x48, 0x22, 0xd0, 0x43, 0xf7, - 0xd5, 0x98, 0xa3, 0xd2, 0xb5, 0x6d, 0xa6, 0xaf, 0x04, 0xc8, 0xc5, 0x7f, 0x10, 0x20, 0xc7, 0xc5, - 0xd2, 0x02, 0x64, 0x7a, 0x9a, 0x7f, 0x44, 0xe8, 0xb2, 0xb5, 0x94, 0x28, 0x28, 0xe4, 0x1a, 0xcb, - 0xbd, 0x9e, 0x66, 0x93, 0x14, 0x60, 0x72, 0x7c, 0x8d, 0xe3, 0x6a, 0x21, 0xcd, 0x20, 0xe3, 0xb0, - 0xd3, 0xed, 0x22, 0xdb, 0xf7, 0x78, 0x5c, 0x99, 0xbc, 0xce, 0xc4, 0xd2, 0xd3, 0x30, 0xeb, 0xbb, - 0x9a, 0x69, 0x45, 0x74, 0x33, 0x44, 0x57, 0xe4, 0x0b, 0x81, 0xb2, 0x0c, 0x67, 0x38, 0xaf, 0x81, - 0x7c, 0x4d, 0x3f, 0x42, 0xc6, 0x00, 0x34, 0x49, 0x0e, 0xd5, 0x1e, 0x66, 0x0a, 0x1b, 0x6c, 0x9d, - 0x63, 0x2b, 0xdf, 0x17, 0x60, 0x96, 0x0f, 0xf0, 0x46, 0xe0, 0xac, 0x1d, 0x00, 0xcd, 0xb6, 0x1d, - 0x3f, 0xec, 0xae, 0xd1, 0x54, 0x1e, 0xc1, 0xad, 0x55, 0x03, 0x90, 0x12, 0x22, 0x58, 0xec, 0x02, - 0x0c, 0x56, 0x4e, 0x74, 0xdb, 0x32, 0x14, 0xd8, 0xa1, 0x36, 0xf9, 0x32, 0x42, 0xdf, 0xfa, 0x80, - 0x8a, 0xf0, 0xa4, 0x2f, 0xcd, 0x43, 0xf6, 0x10, 0x75, 0x4c, 0x9b, 0x1d, 0xb5, 0xd1, 0x0b, 0x7e, - 0x80, 0x97, 0x09, 0x0e, 0xf0, 0x6a, 0x9f, 0x85, 0x39, 0xdd, 0xe9, 0x0e, 0x9b, 0x5b, 0x13, 0x87, - 0xde, 0x3c, 0xbd, 0xe7, 0x84, 0xcf, 0xc0, 0x60, 0x3a, 0x7b, 0x43, 0x10, 0xbe, 0x9e, 0x4a, 0x6f, - 0xee, 0xd5, 0xbe, 0x99, 0x5a, 0xdc, 0xa4, 0xd0, 0x3d, 0xfe, 0xa4, 0x0a, 0x6a, 0x5b, 0x48, 0xc7, - 0xd6, 0xc3, 0x8f, 0x3e, 0x02, 0x1f, 0xed, 0x98, 0xfe, 0x51, 0xff, 0x70, 0x4d, 0x77, 0xba, 0xe7, - 0x3a, 0x4e, 0xc7, 0x19, 0x7c, 0x0c, 0xc2, 0x57, 0xe4, 0x82, 0xfc, 0xc7, 0x3e, 0x08, 0xe5, 0x03, - 0xe9, 0x62, 0xec, 0xd7, 0x23, 0x79, 0x17, 0xe6, 0x98, 0xb2, 0x4a, 0x4e, 0xa4, 0xe9, 0x1c, 0x2e, - 0x3d, 0xf0, 0x54, 0xa2, 0xfc, 0xed, 0x77, 0x48, 0xa7, 0x53, 0x66, 0x19, 0x14, 0xaf, 0xd1, 0x49, - 0x5d, 0x56, 0xe0, 0xa1, 0x08, 0x1f, 0xdd, 0x9a, 0xc8, 0x8d, 0x61, 0xfc, 0x1e, 0x63, 0x9c, 0x0b, - 0x31, 0xee, 0x33, 0xa8, 0x5c, 0x87, 0xe9, 0xd3, 0x70, 0xfd, 0x1d, 0xe3, 0x2a, 0xa2, 0x30, 0xc9, - 0x26, 0xcc, 0x10, 0x12, 0xbd, 0xef, 0xf9, 0x4e, 0x97, 0xd4, 0xbd, 0x07, 0xd3, 0xfc, 0xfd, 0x3b, - 0x74, 0xaf, 0x94, 0x30, 0xac, 0x1e, 0xa0, 0x64, 0x19, 0xc8, 0x21, 0xbc, 0x81, 0x74, 0x2b, 0x86, - 0xe1, 0x2d, 0x66, 0x48, 0xa0, 0x2f, 0x7f, 0x0a, 0xe6, 0xf1, 0xff, 0xa4, 0x2c, 0x85, 0x2d, 0x89, - 0x3f, 0x83, 0x29, 0x7f, 0xff, 0x15, 0xba, 0x1d, 0xe7, 0x02, 0x82, 0x90, 0x4d, 0xa1, 0x28, 0x76, - 0x90, 0xef, 0x23, 0xd7, 0x53, 0x35, 0x6b, 0x9c, 0x79, 0xa1, 0x37, 0xd8, 0xf2, 0x57, 0xde, 0x8d, - 0x46, 0x71, 0x93, 0x22, 0xab, 0x96, 0x25, 0xb7, 0xe0, 0xe1, 0x31, 0x59, 0x91, 0x80, 0xf3, 0x55, - 0xc6, 0x39, 0x3f, 0x92, 0x19, 0x98, 0x76, 0x0f, 0xb8, 0x3c, 0x88, 0x65, 0x02, 0xce, 0xaf, 0x32, - 0x4e, 0x89, 0x61, 0x79, 0x48, 0x31, 0xe3, 0x75, 0x98, 0xbd, 0x85, 0xdc, 0x43, 0xc7, 0x63, 0x07, - 0x07, 0x09, 0xe8, 0x5e, 0x63, 0x74, 0x33, 0x0c, 0x48, 0x8e, 0x11, 0x30, 0xd7, 0x15, 0xc8, 0xb5, - 0x35, 0x1d, 0x25, 0xa0, 0xf8, 0x1a, 0xa3, 0x98, 0xc2, 0xfa, 0x18, 0x5a, 0x85, 0x62, 0xc7, 0x61, - 0x9d, 0x29, 0x1e, 0xfe, 0x3a, 0x83, 0x17, 0x38, 0x86, 0x51, 0xf4, 0x9c, 0x5e, 0xdf, 0xc2, 0x6d, - 0x2b, 0x9e, 0xe2, 0xf7, 0x38, 0x05, 0xc7, 0x30, 0x8a, 0x53, 0xb8, 0xf5, 0x0d, 0x4e, 0xe1, 0x85, - 0xfc, 0xf9, 0x2c, 0x14, 0x1c, 0xdb, 0x3a, 0x76, 0xec, 0x24, 0x46, 0xdc, 0x61, 0x0c, 0xc0, 0x20, - 0x98, 0xe0, 0x2a, 0xe4, 0x93, 0x06, 0xe2, 0xf7, 0xdf, 0xe5, 0xdb, 0x83, 0x47, 0x60, 0x13, 0x66, - 0x78, 0x81, 0x32, 0x1d, 0x3b, 0x01, 0xc5, 0x1f, 0x30, 0x8a, 0x52, 0x08, 0xc6, 0x1e, 0xc3, 0x47, - 0x9e, 0xdf, 0x41, 0x49, 0x48, 0xde, 0xe4, 0x8f, 0xc1, 0x20, 0xcc, 0x95, 0x87, 0xc8, 0xd6, 0x8f, - 0x92, 0x31, 0x7c, 0x83, 0xbb, 0x92, 0x63, 0x30, 0x45, 0x1d, 0xa6, 0xbb, 0x9a, 0xeb, 0x1d, 0x69, - 0x56, 0xa2, 0x70, 0xfc, 0x21, 0xe3, 0x28, 0x06, 0x20, 0xe6, 0x91, 0xbe, 0x7d, 0x1a, 0x9a, 0x6f, - 0x72, 0x8f, 0x84, 0x60, 0x6c, 0xeb, 0x79, 0x3e, 0x39, 0x9b, 0x39, 0x0d, 0xdb, 0x1f, 0xf1, 0xad, - 0x47, 0xb1, 0x3b, 0x61, 0xc6, 0xab, 0x90, 0xf7, 0xcc, 0x97, 0x13, 0xd1, 0xfc, 0x31, 0x8f, 0x34, - 0x01, 0x60, 0xf0, 0x0b, 0x70, 0x66, 0x6c, 0x9b, 0x48, 0x40, 0xf6, 0x27, 0x8c, 0x6c, 0x61, 0x4c, - 0xab, 0x60, 0x25, 0xe1, 0xb4, 0x94, 0x7f, 0xca, 0x4b, 0x02, 0x1a, 0xe2, 0xda, 0xc3, 0x93, 0xbd, - 0xa7, 0xb5, 0x4f, 0xe7, 0xb5, 0x3f, 0xe3, 0x5e, 0xa3, 0xd8, 0x88, 0xd7, 0x0e, 0x60, 0x81, 0x31, - 0x9e, 0x2e, 0xae, 0xdf, 0xe2, 0x85, 0x95, 0xa2, 0x5b, 0xd1, 0xe8, 0x7e, 0x16, 0x16, 0x03, 0x77, - 0xf2, 0xa1, 0xd4, 0x53, 0xbb, 0x5a, 0x2f, 0x01, 0xf3, 0xb7, 0x19, 0x33, 0xaf, 0xf8, 0xc1, 0x54, - 0xeb, 0xed, 0x68, 0x3d, 0x4c, 0xfe, 0x3c, 0x94, 0x39, 0x79, 0xdf, 0x76, 0x91, 0xee, 0x74, 0x6c, - 0xf3, 0x65, 0x64, 0x24, 0xa0, 0xfe, 0xf3, 0xa1, 0x50, 0xb5, 0x42, 0x70, 0xcc, 0xbc, 0x05, 0x62, - 0x30, 0xab, 0xa8, 0x66, 0xb7, 0xe7, 0xb8, 0x7e, 0x0c, 0xe3, 0x5f, 0xf0, 0x48, 0x05, 0xb8, 0x2d, - 0x02, 0x93, 0x1b, 0x50, 0x22, 0x97, 0x49, 0x53, 0xf2, 0x2f, 0x19, 0xd1, 0xf4, 0x00, 0xc5, 0x0a, - 0x87, 0xee, 0x74, 0x7b, 0x9a, 0x9b, 0xa4, 0xfe, 0xfd, 0x15, 0x2f, 0x1c, 0x0c, 0xc2, 0x0a, 0x87, - 0x7f, 0xdc, 0x43, 0xb8, 0xdb, 0x27, 0x60, 0xf8, 0x0e, 0x2f, 0x1c, 0x1c, 0xc3, 0x28, 0xf8, 0xc0, - 0x90, 0x80, 0xe2, 0xaf, 0x39, 0x05, 0xc7, 0x60, 0x8a, 0x4f, 0x0e, 0x1a, 0xad, 0x8b, 0x3a, 0xa6, - 0xe7, 0xbb, 0x74, 0x14, 0x7e, 0x30, 0xd5, 0x77, 0xdf, 0x8d, 0x0e, 0x61, 0x4a, 0x08, 0x2a, 0x5f, - 0x87, 0x99, 0xa1, 0x11, 0x43, 0x8a, 0xfb, 0xa2, 0x5f, 0xfe, 0xdc, 0x7b, 0xac, 0x18, 0x45, 0x27, - 0x0c, 0x79, 0x1b, 0xc7, 0x3d, 0x3a, 0x07, 0xc4, 0x93, 0xbd, 0xf2, 0x5e, 0x10, 0xfa, 0xc8, 0x18, - 0x20, 0x5f, 0x83, 0xe9, 0xc8, 0x0c, 0x10, 0x4f, 0xf5, 0x4b, 0x8c, 0xaa, 0x18, 0x1e, 0x01, 0xe4, - 0x0b, 0x90, 0xc1, 0xfd, 0x3c, 0x1e, 0xfe, 0xcb, 0x0c, 0x4e, 0xd4, 0xe5, 0x8f, 0x43, 0x8e, 0xf7, - 0xf1, 0x78, 0xe8, 0xaf, 0x30, 0x68, 0x00, 0xc1, 0x70, 0xde, 0xc3, 0xe3, 0xe1, 0xbf, 0xca, 0xe1, - 0x1c, 0x82, 0xe1, 0xc9, 0x5d, 0xf8, 0xb7, 0x5f, 0xc8, 0xb0, 0x3a, 0xcc, 0x7d, 0x77, 0x15, 0xa6, - 0x58, 0xf3, 0x8e, 0x47, 0x7f, 0x9e, 0xdd, 0x9c, 0x23, 0xe4, 0x4b, 0x90, 0x4d, 0xe8, 0xf0, 0x5f, - 0x67, 0x50, 0xaa, 0x2f, 0xd7, 0xa1, 0x10, 0x6a, 0xd8, 0xf1, 0xf0, 0xdf, 0x60, 0xf0, 0x30, 0x0a, - 0x9b, 0xce, 0x1a, 0x76, 0x3c, 0xc1, 0x6f, 0x72, 0xd3, 0x19, 0x02, 0xbb, 0x8d, 0xf7, 0xea, 0x78, - 0xf4, 0x17, 0xb9, 0xd7, 0x39, 0x44, 0x7e, 0x16, 0xf2, 0x41, 0xfd, 0x8d, 0xc7, 0xff, 0x16, 0xc3, - 0x0f, 0x30, 0xd8, 0x03, 0xa1, 0xfa, 0x1f, 0x4f, 0xf1, 0xdb, 0xdc, 0x03, 0x21, 0x14, 0xde, 0x46, - 0xc3, 0x3d, 0x3d, 0x9e, 0xe9, 0x4b, 0x7c, 0x1b, 0x0d, 0xb5, 0x74, 0x1c, 0x4d, 0x52, 0x06, 0xe3, - 0x29, 0x7e, 0x87, 0x47, 0x93, 0xe8, 0x63, 0x33, 0x86, 0x9b, 0x64, 0x3c, 0xc7, 0xef, 0x72, 0x33, - 0x86, 0x7a, 0xa4, 0xbc, 0x07, 0xd2, 0x68, 0x83, 0x8c, 0xe7, 0xfb, 0x32, 0xe3, 0x9b, 0x1d, 0xe9, - 0x8f, 0xf2, 0xa7, 0x61, 0x61, 0x7c, 0x73, 0x8c, 0x67, 0xfd, 0xca, 0x7b, 0x43, 0xaf, 0x33, 0xe1, - 0xde, 0x28, 0x1f, 0x0c, 0xaa, 0x6c, 0xb8, 0x31, 0xc6, 0xd3, 0xbe, 0xfa, 0x5e, 0xb4, 0xd0, 0x86, - 0xfb, 0xa2, 0x5c, 0x05, 0x18, 0xf4, 0xa4, 0x78, 0xae, 0xd7, 0x18, 0x57, 0x08, 0x84, 0xb7, 0x06, - 0x6b, 0x49, 0xf1, 0xf8, 0xaf, 0xf1, 0xad, 0xc1, 0x10, 0x78, 0x6b, 0xf0, 0x6e, 0x14, 0x8f, 0x7e, - 0x9d, 0x6f, 0x0d, 0x0e, 0x91, 0xaf, 0x42, 0xce, 0xee, 0x5b, 0x16, 0xce, 0x2d, 0xe9, 0xc1, 0x3f, - 0xb2, 0x29, 0xff, 0xeb, 0x7d, 0x06, 0xe6, 0x00, 0xf9, 0x02, 0x64, 0x51, 0xf7, 0x10, 0x19, 0x71, - 0xc8, 0x7f, 0xbb, 0xcf, 0xeb, 0x09, 0xd6, 0x96, 0x9f, 0x05, 0xa0, 0x2f, 0xd3, 0xe4, 0x1b, 0x4b, - 0x0c, 0xf6, 0xdf, 0xef, 0xb3, 0xef, 0xf7, 0x03, 0xc8, 0x80, 0x80, 0xfe, 0x1a, 0xe0, 0xc1, 0x04, - 0xef, 0x46, 0x09, 0xc8, 0x0b, 0xf8, 0x15, 0x98, 0xba, 0xe1, 0x39, 0xb6, 0xaf, 0x75, 0xe2, 0xd0, - 0xff, 0xc1, 0xd0, 0x5c, 0x1f, 0x3b, 0xac, 0xeb, 0xb8, 0xc8, 0xd7, 0x3a, 0x5e, 0x1c, 0xf6, 0x3f, - 0x19, 0x36, 0x00, 0x60, 0xb0, 0xae, 0x79, 0x7e, 0x92, 0xe7, 0xfe, 0x2f, 0x0e, 0xe6, 0x00, 0x6c, - 0x34, 0xfe, 0xff, 0x26, 0x3a, 0x8e, 0xc3, 0xfe, 0x90, 0x1b, 0xcd, 0xf4, 0xe5, 0x8f, 0x43, 0x1e, - 0xff, 0x4b, 0x7f, 0xd3, 0x12, 0x03, 0xfe, 0x6f, 0x06, 0x1e, 0x20, 0xf0, 0x9d, 0x3d, 0xdf, 0xf0, - 0xcd, 0x78, 0x67, 0xff, 0x0f, 0x8b, 0x34, 0xd7, 0x97, 0xab, 0x50, 0xf0, 0x7c, 0xc3, 0xe8, 0xb3, - 0x89, 0x26, 0x06, 0xfe, 0xa3, 0xfb, 0xc1, 0x4b, 0x6e, 0x80, 0xa9, 0x9d, 0x1d, 0x7f, 0x5e, 0x07, - 0x9b, 0xce, 0xa6, 0x43, 0x4f, 0xea, 0xe0, 0xfe, 0x14, 0x2e, 0x43, 0x83, 0x5d, 0xc9, 0x8e, 0xd6, - 0x8a, 0x61, 0xd9, 0xe2, 0xe9, 0xce, 0xe5, 0x2a, 0x3f, 0x0f, 0x42, 0x55, 0x5a, 0x80, 0x49, 0x62, - 0xe0, 0xcf, 0x92, 0xf3, 0xc6, 0xb4, 0xc2, 0xae, 0xa4, 0x47, 0x41, 0xa8, 0xb1, 0x83, 0xcf, 0x99, - 0xb5, 0xc8, 0x9d, 0x6b, 0x8a, 0x50, 0x93, 0x33, 0x6f, 0xdf, 0x59, 0x9e, 0xa8, 0xe8, 0x20, 0xd4, - 0xb0, 0x66, 0x9d, 0x7c, 0xc8, 0x19, 0xd1, 0xac, 0x2b, 0x42, 0x1d, 0x2f, 0x6f, 0xb0, 0x1f, 0x40, - 0x0d, 0x2d, 0x6f, 0x28, 0xc2, 0x86, 0xb4, 0x02, 0xc2, 0x35, 0x72, 0x02, 0x5f, 0x58, 0x97, 0xa2, - 0xcb, 0x4d, 0xcb, 0xa8, 0x2b, 0xc2, 0xb5, 0xca, 0x23, 0x20, 0x6c, 0x84, 0xcc, 0x14, 0xc2, 0x66, - 0x56, 0xbe, 0x24, 0x80, 0x50, 0x0f, 0x56, 0xd7, 0xc9, 0x8d, 0x04, 0xb6, 0xba, 0x1e, 0xc8, 0x9f, - 0x61, 0xc7, 0xcc, 0xec, 0x2a, 0x90, 0x9f, 0x27, 0xa7, 0xa6, 0x5c, 0xff, 0x7c, 0x20, 0xbf, 0x40, - 0x7e, 0xba, 0x5a, 0x64, 0xf2, 0x0b, 0x81, 0xfc, 0x22, 0xf9, 0x06, 0xc0, 0xef, 0x7e, 0x31, 0x90, - 0x5f, 0x22, 0x3f, 0x80, 0x4e, 0x31, 0xf9, 0xa5, 0xca, 0x15, 0x10, 0x5a, 0x11, 0xa3, 0xd2, 0x27, - 0x1a, 0x35, 0xcd, 0x8d, 0x62, 0x2e, 0x7d, 0x0e, 0x32, 0x2d, 0xdb, 0xd9, 0x39, 0x35, 0x5a, 0xfc, - 0xb5, 0x3b, 0xcb, 0x13, 0x5f, 0xbc, 0xb3, 0x3c, 0xf1, 0xc6, 0x9d, 0xe5, 0x09, 0xc2, 0x74, 0x0d, - 0x32, 0x4d, 0xcb, 0x38, 0x39, 0xc2, 0x2b, 0x83, 0x08, 0x8f, 0x7a, 0x3e, 0x14, 0xe4, 0xeb, 0x84, - 0xa7, 0x86, 0xf5, 0x79, 0x9c, 0xc7, 0x46, 0xaa, 0x9e, 0x20, 0x96, 0xbf, 0x48, 0xb8, 0xea, 0x27, - 0x85, 0xf3, 0x7d, 0x07, 0x32, 0x69, 0x60, 0x2e, 0x92, 0xfb, 0xb7, 0x86, 0xee, 0x9f, 0x1f, 0x7b, - 0xff, 0x90, 0xd7, 0x2b, 0x9b, 0x30, 0x85, 0x71, 0xe1, 0xc0, 0x24, 0x84, 0xca, 0xc5, 0x70, 0x60, - 0x6a, 0xe7, 0xdf, 0xba, 0xbb, 0x34, 0xf1, 0xf6, 0xdd, 0xa5, 0x89, 0x7f, 0xbc, 0xbb, 0x34, 0xf1, - 0x83, 0xbb, 0x4b, 0xc2, 0x0f, 0xef, 0x2e, 0x09, 0xff, 0x77, 0x77, 0x49, 0xb8, 0x7d, 0x6f, 0x49, - 0xf8, 0xc6, 0xbd, 0x25, 0xe1, 0x5b, 0xf7, 0x96, 0x84, 0xef, 0xde, 0x5b, 0x12, 0xde, 0xba, 0xb7, - 0x24, 0xbc, 0x7d, 0x6f, 0x49, 0xf8, 0xc1, 0xbd, 0x25, 0xe1, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, - 0xf7, 0x73, 0x28, 0xc2, 0x78, 0x31, 0x00, 0x00, + // 3864 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0xe3, 0xe6, + 0x75, 0x16, 0x78, 0x91, 0xc8, 0x43, 0x8a, 0x82, 0x20, 0x59, 0xcb, 0x95, 0x63, 0x49, 0xcb, 0xd8, + 0xb1, 0x6c, 0x37, 0xda, 0x54, 0x5e, 0xed, 0x05, 0xdb, 0xc4, 0xa5, 0x48, 0x4a, 0xd6, 0x56, 0x12, + 0x19, 0x50, 0x8c, 0xd7, 0xe9, 0x03, 0x06, 0x02, 0x7f, 0x52, 0xd8, 0x05, 0x01, 0x06, 0x00, 0x77, + 0x2d, 0x3f, 0x74, 0xb6, 0xe3, 0xde, 0x32, 0x9d, 0xb6, 0x69, 0xd3, 0x99, 0x26, 0xae, 0xe3, 0x66, + 0x33, 0xd3, 0x3a, 0x4d, 0x7a, 0x49, 0x7a, 0x49, 0x33, 0x7d, 0xea, 0x4b, 0x5a, 0x3f, 0x75, 0x9c, + 0xb7, 0x3e, 0xf4, 0xc1, 0xbb, 0xf5, 0x4c, 0x6f, 0x6e, 0x9b, 0x36, 0x3b, 0xd3, 0xce, 0xec, 0x4b, + 0xe7, 0xbf, 0x81, 0x00, 0x49, 0x2d, 0x28, 0xcf, 0x38, 0x79, 0x92, 0x70, 0xfe, 0xf3, 0x7d, 0x38, + 0x38, 0xe7, 0xfc, 0xe7, 0x1c, 0xfc, 0x20, 0xfc, 0xd3, 0x06, 0xac, 0xb4, 0x6d, 0xbb, 0x6d, 0xa2, + 0xf3, 0x5d, 0xc7, 0xf6, 0xec, 0xc3, 0x5e, 0xeb, 0x7c, 0x13, 0xb9, 0xba, 0x63, 0x74, 0x3d, 0xdb, + 0x59, 0x23, 0x32, 0x69, 0x86, 0x6a, 0xac, 0x71, 0x8d, 0xc2, 0x1e, 0xcc, 0x6e, 0x19, 0x26, 0x2a, + 0xfb, 0x8a, 0x75, 0xe4, 0x49, 0x97, 0x21, 0xd1, 0x32, 0x4c, 0x94, 0x17, 0x56, 0xe2, 0xab, 0x99, + 0xf5, 0x27, 0xd7, 0x06, 0x40, 0x6b, 0x61, 0x44, 0x0d, 0x8b, 0x15, 0x82, 0x28, 0xbc, 0x97, 0x80, + 0xb9, 0x11, 0xab, 0x92, 0x04, 0x09, 0x4b, 0xeb, 0x60, 0x46, 0x61, 0x35, 0xad, 0x90, 0xff, 0xa5, + 0x3c, 0x4c, 0x75, 0x35, 0xfd, 0xa6, 0xd6, 0x46, 0xf9, 0x18, 0x11, 0xf3, 0x4b, 0x69, 0x09, 0xa0, + 0x89, 0xba, 0xc8, 0x6a, 0x22, 0x4b, 0x3f, 0xce, 0xc7, 0x57, 0xe2, 0xab, 0x69, 0x25, 0x20, 0x91, + 0x9e, 0x83, 0xd9, 0x6e, 0xef, 0xd0, 0x34, 0x74, 0x35, 0xa0, 0x06, 0x2b, 0xf1, 0xd5, 0xa4, 0x22, + 0xd2, 0x85, 0x72, 0x5f, 0xf9, 0x69, 0x98, 0xb9, 0x8d, 0xb4, 0x9b, 0x41, 0xd5, 0x0c, 0x51, 0xcd, + 0x61, 0x71, 0x40, 0xb1, 0x04, 0xd9, 0x0e, 0x72, 0x5d, 0xad, 0x8d, 0x54, 0xef, 0xb8, 0x8b, 0xf2, + 0x09, 0xf2, 0xf4, 0x2b, 0x43, 0x4f, 0x3f, 0xf8, 0xe4, 0x19, 0x86, 0x3a, 0x38, 0xee, 0x22, 0xa9, + 0x08, 0x69, 0x64, 0xf5, 0x3a, 0x94, 0x21, 0x79, 0x82, 0xff, 0x2a, 0x56, 0xaf, 0x33, 0xc8, 0x92, + 0xc2, 0x30, 0x46, 0x31, 0xe5, 0x22, 0xe7, 0x96, 0xa1, 0xa3, 0xfc, 0x24, 0x21, 0x78, 0x7a, 0x88, + 0xa0, 0x4e, 0xd7, 0x07, 0x39, 0x38, 0x4e, 0x2a, 0x41, 0x1a, 0xbd, 0xe2, 0x21, 0xcb, 0x35, 0x6c, + 0x2b, 0x3f, 0x45, 0x48, 0x9e, 0x1a, 0x11, 0x45, 0x64, 0x36, 0x07, 0x29, 0xfa, 0x38, 0xe9, 0x22, + 0x4c, 0xd9, 0x5d, 0xcf, 0xb0, 0x2d, 0x37, 0x9f, 0x5a, 0x11, 0x56, 0x33, 0xeb, 0x1f, 0x19, 0x99, + 0x08, 0x55, 0xaa, 0xa3, 0x70, 0x65, 0x69, 0x07, 0x44, 0xd7, 0xee, 0x39, 0x3a, 0x52, 0x75, 0xbb, + 0x89, 0x54, 0xc3, 0x6a, 0xd9, 0xf9, 0x34, 0x21, 0x58, 0x1e, 0x7e, 0x10, 0xa2, 0x58, 0xb2, 0x9b, + 0x68, 0xc7, 0x6a, 0xd9, 0x4a, 0xce, 0x0d, 0x5d, 0x4b, 0x0b, 0x30, 0xe9, 0x1e, 0x5b, 0x9e, 0xf6, + 0x4a, 0x3e, 0x4b, 0x32, 0x84, 0x5d, 0x15, 0xfe, 0x37, 0x09, 0x33, 0xe3, 0xa4, 0xd8, 0x55, 0x48, + 0xb6, 0xf0, 0x53, 0xe6, 0x63, 0xa7, 0xf1, 0x01, 0xc5, 0x84, 0x9d, 0x38, 0xf9, 0x01, 0x9d, 0x58, + 0x84, 0x8c, 0x85, 0x5c, 0x0f, 0x35, 0x69, 0x46, 0xc4, 0xc7, 0xcc, 0x29, 0xa0, 0xa0, 0xe1, 0x94, + 0x4a, 0x7c, 0xa0, 0x94, 0xba, 0x0e, 0x33, 0xbe, 0x49, 0xaa, 0xa3, 0x59, 0x6d, 0x9e, 0x9b, 0xe7, + 0xa3, 0x2c, 0x59, 0xab, 0x70, 0x9c, 0x82, 0x61, 0x4a, 0x0e, 0x85, 0xae, 0xa5, 0x32, 0x80, 0x6d, + 0x21, 0xbb, 0xa5, 0x36, 0x91, 0x6e, 0xe6, 0x53, 0x27, 0x78, 0xa9, 0x8a, 0x55, 0x86, 0xbc, 0x64, + 0x53, 0xa9, 0x6e, 0x4a, 0x57, 0xfa, 0xa9, 0x36, 0x75, 0x42, 0xa6, 0xec, 0xd1, 0x4d, 0x36, 0x94, + 0x6d, 0x0d, 0xc8, 0x39, 0x08, 0xe7, 0x3d, 0x6a, 0xb2, 0x27, 0x4b, 0x13, 0x23, 0xd6, 0x22, 0x9f, + 0x4c, 0x61, 0x30, 0xfa, 0x60, 0xd3, 0x4e, 0xf0, 0x52, 0xfa, 0x28, 0xf8, 0x02, 0x95, 0xa4, 0x15, + 0x90, 0x2a, 0x94, 0xe5, 0xc2, 0x7d, 0xad, 0x83, 0x16, 0x2f, 0x43, 0x2e, 0xec, 0x1e, 0x69, 0x1e, + 0x92, 0xae, 0xa7, 0x39, 0x1e, 0xc9, 0xc2, 0xa4, 0x42, 0x2f, 0x24, 0x11, 0xe2, 0xc8, 0x6a, 0x92, + 0x2a, 0x97, 0x54, 0xf0, 0xbf, 0x8b, 0x97, 0x60, 0x3a, 0x74, 0xfb, 0x71, 0x81, 0x85, 0x2f, 0x4d, + 0xc2, 0xfc, 0xa8, 0x9c, 0x1b, 0x99, 0xfe, 0x0b, 0x30, 0x69, 0xf5, 0x3a, 0x87, 0xc8, 0xc9, 0xc7, + 0x09, 0x03, 0xbb, 0x92, 0x8a, 0x90, 0x34, 0xb5, 0x43, 0x64, 0xe6, 0x13, 0x2b, 0xc2, 0x6a, 0x6e, + 0xfd, 0xb9, 0xb1, 0xb2, 0x7a, 0x6d, 0x17, 0x43, 0x14, 0x8a, 0x94, 0x3e, 0x05, 0x09, 0x56, 0xe2, + 0x30, 0xc3, 0xb3, 0xe3, 0x31, 0xe0, 0x5c, 0x54, 0x08, 0x4e, 0x7a, 0x1c, 0xd2, 0xf8, 0x2f, 0xf5, + 0xed, 0x24, 0xb1, 0x39, 0x85, 0x05, 0xd8, 0xaf, 0xd2, 0x22, 0xa4, 0x48, 0x9a, 0x35, 0x11, 0x6f, + 0x0d, 0xfe, 0x35, 0x0e, 0x4c, 0x13, 0xb5, 0xb4, 0x9e, 0xe9, 0xa9, 0xb7, 0x34, 0xb3, 0x87, 0x48, + 0xc2, 0xa4, 0x95, 0x2c, 0x13, 0x7e, 0x06, 0xcb, 0xa4, 0x65, 0xc8, 0xd0, 0xac, 0x34, 0xac, 0x26, + 0x7a, 0x85, 0x54, 0x9f, 0xa4, 0x42, 0x13, 0x75, 0x07, 0x4b, 0xf0, 0xed, 0x6f, 0xb8, 0xb6, 0xc5, + 0x43, 0x4b, 0x6e, 0x81, 0x05, 0xe4, 0xf6, 0x97, 0x06, 0x0b, 0xdf, 0x13, 0xa3, 0x1f, 0x6f, 0x30, + 0x17, 0x0b, 0xdf, 0x89, 0x41, 0x82, 0xec, 0xb7, 0x19, 0xc8, 0x1c, 0xbc, 0x5c, 0xab, 0xa8, 0xe5, + 0x6a, 0x63, 0x73, 0xb7, 0x22, 0x0a, 0x52, 0x0e, 0x80, 0x08, 0xb6, 0x76, 0xab, 0xc5, 0x03, 0x31, + 0xe6, 0x5f, 0xef, 0xec, 0x1f, 0x5c, 0xbc, 0x20, 0xc6, 0x7d, 0x40, 0x83, 0x0a, 0x12, 0x41, 0x85, + 0xe7, 0xd7, 0xc5, 0xa4, 0x24, 0x42, 0x96, 0x12, 0xec, 0x5c, 0xaf, 0x94, 0x2f, 0x5e, 0x10, 0x27, + 0xc3, 0x92, 0xe7, 0xd7, 0xc5, 0x29, 0x69, 0x1a, 0xd2, 0x44, 0xb2, 0x59, 0xad, 0xee, 0x8a, 0x29, + 0x9f, 0xb3, 0x7e, 0xa0, 0xec, 0xec, 0x6f, 0x8b, 0x69, 0x9f, 0x73, 0x5b, 0xa9, 0x36, 0x6a, 0x22, + 0xf8, 0x0c, 0x7b, 0x95, 0x7a, 0xbd, 0xb8, 0x5d, 0x11, 0x33, 0xbe, 0xc6, 0xe6, 0xcb, 0x07, 0x95, + 0xba, 0x98, 0x0d, 0x99, 0xf5, 0xfc, 0xba, 0x38, 0xed, 0xdf, 0xa2, 0xb2, 0xdf, 0xd8, 0x13, 0x73, + 0xd2, 0x2c, 0x4c, 0xd3, 0x5b, 0x70, 0x23, 0x66, 0x06, 0x44, 0x17, 0x2f, 0x88, 0x62, 0xdf, 0x10, + 0xca, 0x32, 0x1b, 0x12, 0x5c, 0xbc, 0x20, 0x4a, 0x85, 0x12, 0x24, 0x49, 0x76, 0x49, 0x12, 0xe4, + 0x76, 0x8b, 0x9b, 0x95, 0x5d, 0xb5, 0x5a, 0x3b, 0xd8, 0xa9, 0xee, 0x17, 0x77, 0x45, 0xa1, 0x2f, + 0x53, 0x2a, 0x9f, 0x6e, 0xec, 0x28, 0x95, 0xb2, 0x18, 0x0b, 0xca, 0x6a, 0x95, 0xe2, 0x41, 0xa5, + 0x2c, 0xc6, 0x0b, 0x3a, 0xcc, 0x8f, 0xaa, 0x33, 0x23, 0x77, 0x46, 0x20, 0xc4, 0xb1, 0x13, 0x42, + 0x4c, 0xb8, 0x86, 0x42, 0xfc, 0x35, 0x01, 0xe6, 0x46, 0xd4, 0xda, 0x91, 0x37, 0x79, 0x01, 0x92, + 0x34, 0x45, 0x69, 0xf7, 0x79, 0x66, 0x64, 0xd1, 0x26, 0x09, 0x3b, 0xd4, 0x81, 0x08, 0x2e, 0xd8, + 0x81, 0xe3, 0x27, 0x74, 0x60, 0x4c, 0x31, 0x64, 0xe4, 0x6b, 0x02, 0xe4, 0x4f, 0xe2, 0x8e, 0x28, + 0x14, 0xb1, 0x50, 0xa1, 0xb8, 0x3a, 0x68, 0xc0, 0xb9, 0x93, 0x9f, 0x61, 0xc8, 0x8a, 0xb7, 0x04, + 0x58, 0x18, 0x3d, 0xa8, 0x8c, 0xb4, 0xe1, 0x53, 0x30, 0xd9, 0x41, 0xde, 0x91, 0xcd, 0x9b, 0xf5, + 0xc7, 0x46, 0xb4, 0x00, 0xbc, 0x3c, 0xe8, 0x2b, 0x86, 0x0a, 0xf6, 0x90, 0xf8, 0x49, 0xd3, 0x06, + 0xb5, 0x66, 0xc8, 0xd2, 0xcf, 0xc7, 0xe0, 0xb1, 0x91, 0xe4, 0x23, 0x0d, 0x7d, 0x02, 0xc0, 0xb0, + 0xba, 0x3d, 0x8f, 0x36, 0x64, 0x5a, 0x9f, 0xd2, 0x44, 0x42, 0xf6, 0x3e, 0xae, 0x3d, 0x3d, 0xcf, + 0x5f, 0x8f, 0x93, 0x75, 0xa0, 0x22, 0xa2, 0x70, 0xb9, 0x6f, 0x68, 0x82, 0x18, 0xba, 0x74, 0xc2, + 0x93, 0x0e, 0xf5, 0xba, 0x4f, 0x80, 0xa8, 0x9b, 0x06, 0xb2, 0x3c, 0xd5, 0xf5, 0x1c, 0xa4, 0x75, + 0x0c, 0xab, 0x4d, 0x0a, 0x70, 0x4a, 0x4e, 0xb6, 0x34, 0xd3, 0x45, 0xca, 0x0c, 0x5d, 0xae, 0xf3, + 0x55, 0x8c, 0x20, 0x5d, 0xc6, 0x09, 0x20, 0x26, 0x43, 0x08, 0xba, 0xec, 0x23, 0x0a, 0xdf, 0x9c, + 0x82, 0x4c, 0x60, 0xac, 0x93, 0xce, 0x41, 0xf6, 0x86, 0x76, 0x4b, 0x53, 0xf9, 0xa8, 0x4e, 0x3d, + 0x91, 0xc1, 0xb2, 0x1a, 0x1b, 0xd7, 0x3f, 0x01, 0xf3, 0x44, 0xc5, 0xee, 0x79, 0xc8, 0x51, 0x75, + 0x53, 0x73, 0x5d, 0xe2, 0xb4, 0x14, 0x51, 0x95, 0xf0, 0x5a, 0x15, 0x2f, 0x95, 0xf8, 0x8a, 0xb4, + 0x01, 0x73, 0x04, 0xd1, 0xe9, 0x99, 0x9e, 0xd1, 0x35, 0x91, 0x8a, 0x5f, 0x1e, 0x5c, 0x52, 0x88, + 0x7d, 0xcb, 0x66, 0xb1, 0xc6, 0x1e, 0x53, 0xc0, 0x16, 0xb9, 0x52, 0x19, 0x9e, 0x20, 0xb0, 0x36, + 0xb2, 0x90, 0xa3, 0x79, 0x48, 0x45, 0x9f, 0xeb, 0x69, 0xa6, 0xab, 0x6a, 0x56, 0x53, 0x3d, 0xd2, + 0xdc, 0xa3, 0xfc, 0x3c, 0x26, 0xd8, 0x8c, 0xe5, 0x05, 0xe5, 0x2c, 0x56, 0xdc, 0x66, 0x7a, 0x15, + 0xa2, 0x56, 0xb4, 0x9a, 0x2f, 0x6a, 0xee, 0x91, 0x24, 0xc3, 0x02, 0x61, 0x71, 0x3d, 0xc7, 0xb0, + 0xda, 0xaa, 0x7e, 0x84, 0xf4, 0x9b, 0x6a, 0xcf, 0x6b, 0x5d, 0xce, 0x3f, 0x1e, 0xbc, 0x3f, 0xb1, + 0xb0, 0x4e, 0x74, 0x4a, 0x58, 0xa5, 0xe1, 0xb5, 0x2e, 0x4b, 0x75, 0xc8, 0xe2, 0x60, 0x74, 0x8c, + 0x57, 0x91, 0xda, 0xb2, 0x1d, 0xd2, 0x59, 0x72, 0x23, 0x76, 0x76, 0xc0, 0x83, 0x6b, 0x55, 0x06, + 0xd8, 0xb3, 0x9b, 0x48, 0x4e, 0xd6, 0x6b, 0x95, 0x4a, 0x59, 0xc9, 0x70, 0x96, 0x2d, 0xdb, 0xc1, + 0x09, 0xd5, 0xb6, 0x7d, 0x07, 0x67, 0x68, 0x42, 0xb5, 0x6d, 0xee, 0xde, 0x0d, 0x98, 0xd3, 0x75, + 0xfa, 0xcc, 0x86, 0xae, 0xb2, 0x11, 0xdf, 0xcd, 0x8b, 0x21, 0x67, 0xe9, 0xfa, 0x36, 0x55, 0x60, + 0x39, 0xee, 0x4a, 0x57, 0xe0, 0xb1, 0xbe, 0xb3, 0x82, 0xc0, 0xd9, 0xa1, 0xa7, 0x1c, 0x84, 0x6e, + 0xc0, 0x5c, 0xf7, 0x78, 0x18, 0x28, 0x85, 0xee, 0xd8, 0x3d, 0x1e, 0x84, 0x3d, 0x45, 0x5e, 0xdb, + 0x1c, 0xa4, 0x6b, 0x1e, 0x6a, 0xe6, 0xcf, 0x04, 0xb5, 0x03, 0x0b, 0xd2, 0x79, 0x10, 0x75, 0x5d, + 0x45, 0x96, 0x76, 0x68, 0x22, 0x55, 0x73, 0x90, 0xa5, 0xb9, 0xf9, 0xe5, 0xa0, 0x72, 0x4e, 0xd7, + 0x2b, 0x64, 0xb5, 0x48, 0x16, 0xa5, 0x67, 0x61, 0xd6, 0x3e, 0xbc, 0xa1, 0xd3, 0xcc, 0x52, 0xbb, + 0x0e, 0x6a, 0x19, 0xaf, 0xe4, 0x9f, 0x24, 0x6e, 0x9a, 0xc1, 0x0b, 0x24, 0xaf, 0x6a, 0x44, 0x2c, + 0x3d, 0x03, 0xa2, 0xee, 0x1e, 0x69, 0x4e, 0x97, 0xb4, 0x76, 0xb7, 0xab, 0xe9, 0x28, 0xff, 0x14, + 0x55, 0xa5, 0xf2, 0x7d, 0x2e, 0xc6, 0x99, 0xed, 0xde, 0x36, 0x5a, 0x1e, 0x67, 0x7c, 0x9a, 0x66, + 0x36, 0x91, 0x31, 0xb6, 0xeb, 0x30, 0xdf, 0xb3, 0x0c, 0xcb, 0x43, 0x4e, 0xd7, 0x41, 0x78, 0x88, + 0xa7, 0x3b, 0x31, 0xff, 0xcf, 0x53, 0x27, 0x8c, 0xe1, 0x8d, 0xa0, 0x36, 0x4d, 0x00, 0x65, 0xae, + 0x37, 0x2c, 0x2c, 0xc8, 0x90, 0x0d, 0xe6, 0x85, 0x94, 0x06, 0x9a, 0x19, 0xa2, 0x80, 0x7b, 0x6c, + 0xa9, 0x5a, 0xc6, 0xdd, 0xf1, 0xb3, 0x15, 0x31, 0x86, 0xbb, 0xf4, 0xee, 0xce, 0x41, 0x45, 0x55, + 0x1a, 0xfb, 0x07, 0x3b, 0x7b, 0x15, 0x31, 0xfe, 0x6c, 0x3a, 0xf5, 0x2f, 0x53, 0xe2, 0x9d, 0x3b, + 0x77, 0xee, 0xc4, 0x0a, 0xdf, 0x8b, 0x41, 0x2e, 0x3c, 0x19, 0x4b, 0x3f, 0x05, 0x67, 0xf8, 0x6b, + 0xac, 0x8b, 0x3c, 0xf5, 0xb6, 0xe1, 0x90, 0x54, 0xed, 0x68, 0x74, 0xb6, 0xf4, 0xbd, 0x3c, 0xcf, + 0xb4, 0xea, 0xc8, 0x7b, 0xc9, 0x70, 0x70, 0x22, 0x76, 0x34, 0x4f, 0xda, 0x85, 0x65, 0xcb, 0x56, + 0x5d, 0x4f, 0xb3, 0x9a, 0x9a, 0xd3, 0x54, 0xfb, 0x07, 0x08, 0xaa, 0xa6, 0xeb, 0xc8, 0x75, 0x6d, + 0xda, 0x22, 0x7c, 0x96, 0x8f, 0x58, 0x76, 0x9d, 0x29, 0xf7, 0x6b, 0x67, 0x91, 0xa9, 0x0e, 0x64, + 0x44, 0xfc, 0xa4, 0x8c, 0x78, 0x1c, 0xd2, 0x1d, 0xad, 0xab, 0x22, 0xcb, 0x73, 0x8e, 0xc9, 0x3c, + 0x97, 0x52, 0x52, 0x1d, 0xad, 0x5b, 0xc1, 0xd7, 0x1f, 0x5e, 0x0c, 0x82, 0x7e, 0xfc, 0xc7, 0x38, + 0x64, 0x83, 0x33, 0x1d, 0x1e, 0x91, 0x75, 0x52, 0xbf, 0x05, 0xb2, 0xc3, 0x3f, 0xfa, 0xc8, 0x09, + 0x70, 0xad, 0x84, 0x0b, 0xbb, 0x3c, 0x49, 0x27, 0x2d, 0x85, 0x22, 0x71, 0x53, 0xc5, 0x7b, 0x1a, + 0xd1, 0xf9, 0x3d, 0xa5, 0xb0, 0x2b, 0x69, 0x1b, 0x26, 0x6f, 0xb8, 0x84, 0x7b, 0x92, 0x70, 0x3f, + 0xf9, 0x68, 0xee, 0x6b, 0x75, 0x42, 0x9e, 0xbe, 0x56, 0x57, 0xf7, 0xab, 0xca, 0x5e, 0x71, 0x57, + 0x61, 0x70, 0xe9, 0x2c, 0x24, 0x4c, 0xed, 0xd5, 0xe3, 0x70, 0x0b, 0x20, 0xa2, 0x71, 0x1d, 0x7f, + 0x16, 0x12, 0xb7, 0x91, 0x76, 0x33, 0x5c, 0x78, 0x89, 0xe8, 0x43, 0x4c, 0xfd, 0xf3, 0x90, 0x24, + 0xfe, 0x92, 0x00, 0x98, 0xc7, 0xc4, 0x09, 0x29, 0x05, 0x89, 0x52, 0x55, 0xc1, 0xe9, 0x2f, 0x42, + 0x96, 0x4a, 0xd5, 0xda, 0x4e, 0xa5, 0x54, 0x11, 0x63, 0x85, 0x0d, 0x98, 0xa4, 0x4e, 0xc0, 0x5b, + 0xc3, 0x77, 0x83, 0x38, 0xc1, 0x2e, 0x19, 0x87, 0xc0, 0x57, 0x1b, 0x7b, 0x9b, 0x15, 0x45, 0x8c, + 0x05, 0xc3, 0xeb, 0x42, 0x36, 0x38, 0xce, 0xfd, 0x68, 0x72, 0xea, 0xaf, 0x05, 0xc8, 0x04, 0xc6, + 0x33, 0x3c, 0x18, 0x68, 0xa6, 0x69, 0xdf, 0x56, 0x35, 0xd3, 0xd0, 0x5c, 0x96, 0x14, 0x40, 0x44, + 0x45, 0x2c, 0x19, 0x37, 0x68, 0x3f, 0x12, 0xe3, 0xdf, 0x14, 0x40, 0x1c, 0x1c, 0xed, 0x06, 0x0c, + 0x14, 0x7e, 0xac, 0x06, 0xbe, 0x21, 0x40, 0x2e, 0x3c, 0xcf, 0x0d, 0x98, 0x77, 0xee, 0xc7, 0x6a, + 0xde, 0xbb, 0x31, 0x98, 0x0e, 0x4d, 0x71, 0xe3, 0x5a, 0xf7, 0x39, 0x98, 0x35, 0x9a, 0xa8, 0xd3, + 0xb5, 0x3d, 0x64, 0xe9, 0xc7, 0xaa, 0x89, 0x6e, 0x21, 0x33, 0x5f, 0x20, 0x85, 0xe2, 0xfc, 0xa3, + 0xe7, 0xc4, 0xb5, 0x9d, 0x3e, 0x6e, 0x17, 0xc3, 0xe4, 0xb9, 0x9d, 0x72, 0x65, 0xaf, 0x56, 0x3d, + 0xa8, 0xec, 0x97, 0x5e, 0x56, 0x1b, 0xfb, 0x3f, 0xb3, 0x5f, 0x7d, 0x69, 0x5f, 0x11, 0x8d, 0x01, + 0xb5, 0x0f, 0x71, 0xab, 0xd7, 0x40, 0x1c, 0x34, 0x4a, 0x3a, 0x03, 0xa3, 0xcc, 0x12, 0x27, 0xa4, + 0x39, 0x98, 0xd9, 0xaf, 0xaa, 0xf5, 0x9d, 0x72, 0x45, 0xad, 0x6c, 0x6d, 0x55, 0x4a, 0x07, 0x75, + 0xfa, 0xe2, 0xec, 0x6b, 0x1f, 0x84, 0x37, 0xf5, 0xeb, 0x71, 0x98, 0x1b, 0x61, 0x89, 0x54, 0x64, + 0x33, 0x3b, 0x7d, 0x8d, 0xf8, 0xf8, 0x38, 0xd6, 0xaf, 0xe1, 0xa9, 0xa0, 0xa6, 0x39, 0x1e, 0x1b, + 0xf1, 0x9f, 0x01, 0xec, 0x25, 0xcb, 0x33, 0x5a, 0x06, 0x72, 0xd8, 0x39, 0x03, 0x1d, 0xe4, 0x67, + 0xfa, 0x72, 0x7a, 0xd4, 0xf0, 0x13, 0x20, 0x75, 0x6d, 0xd7, 0xf0, 0x8c, 0x5b, 0x48, 0x35, 0x2c, + 0x7e, 0x28, 0x81, 0x07, 0xfb, 0x84, 0x22, 0xf2, 0x95, 0x1d, 0xcb, 0xf3, 0xb5, 0x2d, 0xd4, 0xd6, + 0x06, 0xb4, 0x71, 0x01, 0x8f, 0x2b, 0x22, 0x5f, 0xf1, 0xb5, 0xcf, 0x41, 0xb6, 0x69, 0xf7, 0xf0, + 0x98, 0x44, 0xf5, 0x70, 0xbf, 0x10, 0x94, 0x0c, 0x95, 0xf9, 0x2a, 0x6c, 0x8e, 0xed, 0x9f, 0x86, + 0x64, 0x95, 0x0c, 0x95, 0x51, 0x95, 0xa7, 0x61, 0x46, 0x6b, 0xb7, 0x1d, 0x4c, 0xce, 0x89, 0xe8, + 0x64, 0x9e, 0xf3, 0xc5, 0x44, 0x71, 0xf1, 0x1a, 0xa4, 0xb8, 0x1f, 0x70, 0x4b, 0xc6, 0x9e, 0x50, + 0xbb, 0xf4, 0x4c, 0x2a, 0xb6, 0x9a, 0x56, 0x52, 0x16, 0x5f, 0x3c, 0x07, 0x59, 0xc3, 0x55, 0xfb, + 0x87, 0xa3, 0xb1, 0x95, 0xd8, 0x6a, 0x4a, 0xc9, 0x18, 0xae, 0x7f, 0x1a, 0x56, 0x78, 0x2b, 0x06, + 0xb9, 0xf0, 0xe1, 0xae, 0x54, 0x86, 0x94, 0x69, 0xeb, 0x1a, 0x49, 0x2d, 0xfa, 0x65, 0x61, 0x35, + 0xe2, 0x3c, 0x78, 0x6d, 0x97, 0xe9, 0x2b, 0x3e, 0x72, 0xf1, 0xef, 0x05, 0x48, 0x71, 0xb1, 0xb4, + 0x00, 0x89, 0xae, 0xe6, 0x1d, 0x11, 0xba, 0xe4, 0x66, 0x4c, 0x14, 0x14, 0x72, 0x8d, 0xe5, 0x6e, + 0x57, 0xb3, 0x48, 0x0a, 0x30, 0x39, 0xbe, 0xc6, 0x71, 0x35, 0x91, 0xd6, 0x24, 0x63, 0xbf, 0xdd, + 0xe9, 0x20, 0xcb, 0x73, 0x79, 0x5c, 0x99, 0xbc, 0xc4, 0xc4, 0xd2, 0x73, 0x30, 0xeb, 0x39, 0x9a, + 0x61, 0x86, 0x74, 0x13, 0x44, 0x57, 0xe4, 0x0b, 0xbe, 0xb2, 0x0c, 0x67, 0x39, 0x6f, 0x13, 0x79, + 0x9a, 0x7e, 0x84, 0x9a, 0x7d, 0xd0, 0x24, 0x39, 0x39, 0x3c, 0xc3, 0x14, 0xca, 0x6c, 0x9d, 0x63, + 0x0b, 0xdf, 0x17, 0x60, 0x96, 0xbf, 0xa8, 0x34, 0x7d, 0x67, 0xed, 0x01, 0x68, 0x96, 0x65, 0x7b, + 0x41, 0x77, 0x0d, 0xa7, 0xf2, 0x10, 0x6e, 0xad, 0xe8, 0x83, 0x94, 0x00, 0xc1, 0x62, 0x07, 0xa0, + 0xbf, 0x72, 0xa2, 0xdb, 0x96, 0x21, 0xc3, 0x4e, 0xee, 0xc9, 0xe7, 0x1f, 0xfa, 0x6a, 0x0b, 0x54, + 0x84, 0xdf, 0x68, 0xa4, 0x79, 0x48, 0x1e, 0xa2, 0xb6, 0x61, 0xb1, 0xf3, 0x44, 0x7a, 0xc1, 0x4f, + 0x29, 0x13, 0xfe, 0x29, 0xe5, 0xe6, 0x75, 0x98, 0xd3, 0xed, 0xce, 0xa0, 0xb9, 0x9b, 0xe2, 0xc0, + 0xeb, 0xb5, 0xfb, 0xa2, 0xf0, 0x59, 0xe8, 0x8f, 0x98, 0x5f, 0x8b, 0xc5, 0xb7, 0x6b, 0x9b, 0xdf, + 0x88, 0x2d, 0x6e, 0x53, 0x5c, 0x8d, 0x3f, 0xa6, 0x82, 0x5a, 0x26, 0xd2, 0xb1, 0xe9, 0xf0, 0xc3, + 0x8f, 0xc1, 0xc7, 0xdb, 0x86, 0x77, 0xd4, 0x3b, 0x5c, 0xd3, 0xed, 0xce, 0xf9, 0xb6, 0xdd, 0xb6, + 0xfb, 0x9f, 0xbb, 0xf0, 0x15, 0xb9, 0x20, 0xff, 0xb1, 0x4f, 0x5e, 0x69, 0x5f, 0xba, 0x18, 0xf9, + 0x7d, 0x4c, 0xde, 0x87, 0x39, 0xa6, 0xac, 0x92, 0x33, 0x77, 0xfa, 0x6a, 0x20, 0x3d, 0xf2, 0xdc, + 0x25, 0xff, 0xed, 0xf7, 0x48, 0xaf, 0x56, 0x66, 0x19, 0x14, 0xaf, 0xd1, 0x17, 0x08, 0x59, 0x81, + 0xc7, 0x42, 0x7c, 0x74, 0x5f, 0x22, 0x27, 0x82, 0xf1, 0x7b, 0x8c, 0x71, 0x2e, 0xc0, 0x58, 0x67, + 0x50, 0xb9, 0x04, 0xd3, 0xa7, 0xe1, 0xfa, 0x5b, 0xc6, 0x95, 0x45, 0x41, 0x92, 0x6d, 0x98, 0x21, + 0x24, 0x7a, 0xcf, 0xf5, 0xec, 0x0e, 0x29, 0x7a, 0x8f, 0xa6, 0xf9, 0xbb, 0xf7, 0xe8, 0x46, 0xc9, + 0x61, 0x58, 0xc9, 0x47, 0xc9, 0x32, 0x90, 0xcf, 0x0c, 0x4d, 0xa4, 0x9b, 0x11, 0x0c, 0x6f, 0x33, + 0x43, 0x7c, 0x7d, 0xf9, 0x33, 0x30, 0x8f, 0xff, 0x27, 0x35, 0x29, 0x68, 0x49, 0xf4, 0x29, 0x53, + 0xfe, 0xfb, 0xaf, 0xd1, 0xbd, 0x38, 0xe7, 0x13, 0x04, 0x6c, 0x0a, 0x44, 0xb1, 0x8d, 0x3c, 0x0f, + 0x39, 0xae, 0xaa, 0x99, 0xa3, 0xcc, 0x0b, 0xbc, 0xa6, 0xe7, 0xbf, 0xfc, 0x7e, 0x38, 0x8a, 0xdb, + 0x14, 0x59, 0x34, 0x4d, 0xb9, 0x01, 0x67, 0x46, 0x64, 0xc5, 0x18, 0x9c, 0xaf, 0x33, 0xce, 0xf9, + 0xa1, 0xcc, 0xc0, 0xb4, 0x35, 0xe0, 0x72, 0x3f, 0x96, 0x63, 0x70, 0xfe, 0x2e, 0xe3, 0x94, 0x18, + 0x96, 0x87, 0x14, 0x33, 0x5e, 0x83, 0xd9, 0x5b, 0xc8, 0x39, 0xb4, 0x5d, 0x76, 0x34, 0x32, 0x06, + 0xdd, 0x1b, 0x8c, 0x6e, 0x86, 0x01, 0xc9, 0x59, 0x09, 0xe6, 0xba, 0x02, 0xa9, 0x96, 0xa6, 0xa3, + 0x31, 0x28, 0xbe, 0xc2, 0x28, 0xa6, 0xb0, 0x3e, 0x86, 0x16, 0x21, 0xdb, 0xb6, 0x59, 0x5b, 0x8a, + 0x86, 0xbf, 0xc9, 0xe0, 0x19, 0x8e, 0x61, 0x14, 0x5d, 0xbb, 0xdb, 0x33, 0x71, 0xcf, 0x8a, 0xa6, + 0xf8, 0x3d, 0x4e, 0xc1, 0x31, 0x8c, 0xe2, 0x14, 0x6e, 0xfd, 0x2a, 0xa7, 0x70, 0x03, 0xfe, 0x7c, + 0x01, 0x32, 0xb6, 0x65, 0x1e, 0xdb, 0xd6, 0x38, 0x46, 0xdc, 0x65, 0x0c, 0xc0, 0x20, 0x98, 0xe0, + 0x2a, 0xa4, 0xc7, 0x0d, 0xc4, 0xef, 0xbf, 0xcf, 0xb7, 0x07, 0x8f, 0xc0, 0x36, 0xcc, 0xf0, 0x02, + 0x65, 0xd8, 0xd6, 0x18, 0x14, 0x7f, 0xc0, 0x28, 0x72, 0x01, 0x18, 0x7b, 0x0c, 0x0f, 0xb9, 0x5e, + 0x1b, 0x8d, 0x43, 0xf2, 0x16, 0x7f, 0x0c, 0x06, 0x61, 0xae, 0x3c, 0x44, 0x96, 0x7e, 0x34, 0x1e, + 0xc3, 0xd7, 0xb9, 0x2b, 0x39, 0x06, 0x53, 0x94, 0x60, 0xba, 0xa3, 0x39, 0xee, 0x91, 0x66, 0x8e, + 0x15, 0x8e, 0x3f, 0x64, 0x1c, 0x59, 0x1f, 0xc4, 0x3c, 0xd2, 0xb3, 0x4e, 0x43, 0xf3, 0x0d, 0xee, + 0x91, 0x00, 0x8c, 0x6d, 0x3d, 0xd7, 0x23, 0x07, 0x50, 0xa7, 0x61, 0xfb, 0x26, 0xdf, 0x7a, 0x14, + 0xbb, 0x17, 0x64, 0xbc, 0x0a, 0x69, 0xd7, 0x78, 0x75, 0x2c, 0x9a, 0x3f, 0xe2, 0x91, 0x26, 0x00, + 0x0c, 0x7e, 0x19, 0xce, 0x8e, 0x6c, 0x13, 0x63, 0x90, 0xfd, 0x31, 0x23, 0x5b, 0x18, 0xd1, 0x2a, + 0x58, 0x49, 0x38, 0x2d, 0xe5, 0x9f, 0xf0, 0x92, 0x80, 0x06, 0xb8, 0x6a, 0xf8, 0x45, 0xc1, 0xd5, + 0x5a, 0xa7, 0xf3, 0xda, 0x9f, 0x72, 0xaf, 0x51, 0x6c, 0xc8, 0x6b, 0x07, 0xb0, 0xc0, 0x18, 0x4f, + 0x17, 0xd7, 0x6f, 0xf1, 0xc2, 0x4a, 0xd1, 0x8d, 0x70, 0x74, 0x7f, 0x16, 0x16, 0x7d, 0x77, 0xf2, + 0x89, 0xd4, 0x55, 0x3b, 0x5a, 0x77, 0x0c, 0xe6, 0x6f, 0x33, 0x66, 0x5e, 0xf1, 0xfd, 0x91, 0xd6, + 0xdd, 0xd3, 0xba, 0x98, 0xfc, 0x3a, 0xe4, 0x39, 0x79, 0xcf, 0x72, 0x90, 0x6e, 0xb7, 0x2d, 0xe3, + 0x55, 0xd4, 0x1c, 0x83, 0xfa, 0xcf, 0x06, 0x42, 0xd5, 0x08, 0xc0, 0x31, 0xf3, 0x0e, 0x88, 0xfe, + 0xac, 0xa2, 0x1a, 0x9d, 0xae, 0xed, 0x78, 0x11, 0x8c, 0x7f, 0xce, 0x23, 0xe5, 0xe3, 0x76, 0x08, + 0x4c, 0xae, 0x40, 0x8e, 0x5c, 0x8e, 0x9b, 0x92, 0x7f, 0xc1, 0x88, 0xa6, 0xfb, 0x28, 0x56, 0x38, + 0x74, 0xbb, 0xd3, 0xd5, 0x9c, 0x71, 0xea, 0xdf, 0x5f, 0xf2, 0xc2, 0xc1, 0x20, 0xac, 0x70, 0x78, + 0xc7, 0x5d, 0x84, 0xbb, 0xfd, 0x18, 0x0c, 0xdf, 0xe1, 0x85, 0x83, 0x63, 0x18, 0x05, 0x1f, 0x18, + 0xc6, 0xa0, 0xf8, 0x2b, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0xd3, 0xfd, 0x46, 0xeb, 0xa0, 0xb6, 0xe1, + 0x7a, 0x0e, 0x9d, 0x83, 0x1f, 0x4d, 0xf5, 0xdd, 0xf7, 0xc3, 0x43, 0x98, 0x12, 0x80, 0xca, 0xd7, + 0x60, 0x66, 0x60, 0xc4, 0x90, 0xa2, 0x7e, 0xb3, 0x90, 0xff, 0xf9, 0x07, 0xac, 0x18, 0x85, 0x27, + 0x0c, 0x79, 0x17, 0xc7, 0x3d, 0x3c, 0x07, 0x44, 0x93, 0xbd, 0xf6, 0xc0, 0x0f, 0x7d, 0x68, 0x0c, + 0x90, 0xb7, 0x60, 0x3a, 0x34, 0x03, 0x44, 0x53, 0xfd, 0x02, 0xa3, 0xca, 0x06, 0x47, 0x00, 0x79, + 0x03, 0x12, 0xb8, 0x9f, 0x47, 0xc3, 0x7f, 0x91, 0xc1, 0x89, 0xba, 0xfc, 0x49, 0x48, 0xf1, 0x3e, + 0x1e, 0x0d, 0xfd, 0x25, 0x06, 0xf5, 0x21, 0x18, 0xce, 0x7b, 0x78, 0x34, 0xfc, 0x97, 0x39, 0x9c, + 0x43, 0x30, 0x7c, 0x7c, 0x17, 0xfe, 0xcd, 0xaf, 0x26, 0x58, 0x1d, 0xe6, 0xbe, 0xbb, 0x0a, 0x53, + 0xac, 0x79, 0x47, 0xa3, 0x3f, 0xcf, 0x6e, 0xce, 0x11, 0xf2, 0x25, 0x48, 0x8e, 0xe9, 0xf0, 0x5f, + 0x63, 0x50, 0xaa, 0x2f, 0x97, 0x20, 0x13, 0x68, 0xd8, 0xd1, 0xf0, 0x5f, 0x67, 0xf0, 0x20, 0x0a, + 0x9b, 0xce, 0x1a, 0x76, 0x34, 0xc1, 0x6f, 0x70, 0xd3, 0x19, 0x02, 0xbb, 0x8d, 0xf7, 0xea, 0x68, + 0xf4, 0x17, 0xb8, 0xd7, 0x39, 0x44, 0x7e, 0x01, 0xd2, 0x7e, 0xfd, 0x8d, 0xc6, 0xff, 0x26, 0xc3, + 0xf7, 0x31, 0xd8, 0x03, 0x81, 0xfa, 0x1f, 0x4d, 0xf1, 0x5b, 0xdc, 0x03, 0x01, 0x14, 0xde, 0x46, + 0x83, 0x3d, 0x3d, 0x9a, 0xe9, 0x8b, 0x7c, 0x1b, 0x0d, 0xb4, 0x74, 0x1c, 0x4d, 0x52, 0x06, 0xa3, + 0x29, 0x7e, 0x9b, 0x47, 0x93, 0xe8, 0x63, 0x33, 0x06, 0x9b, 0x64, 0x34, 0xc7, 0xef, 0x70, 0x33, + 0x06, 0x7a, 0xa4, 0x5c, 0x03, 0x69, 0xb8, 0x41, 0x46, 0xf3, 0x7d, 0x89, 0xf1, 0xcd, 0x0e, 0xf5, + 0x47, 0xf9, 0x25, 0x58, 0x18, 0xdd, 0x1c, 0xa3, 0x59, 0xbf, 0xfc, 0x60, 0xe0, 0x75, 0x26, 0xd8, + 0x1b, 0xe5, 0x83, 0x7e, 0x95, 0x0d, 0x36, 0xc6, 0x68, 0xda, 0xd7, 0x1f, 0x84, 0x0b, 0x6d, 0xb0, + 0x2f, 0xca, 0x45, 0x80, 0x7e, 0x4f, 0x8a, 0xe6, 0x7a, 0x83, 0x71, 0x05, 0x40, 0x78, 0x6b, 0xb0, + 0x96, 0x14, 0x8d, 0xff, 0x0a, 0xdf, 0x1a, 0x0c, 0x81, 0xb7, 0x06, 0xef, 0x46, 0xd1, 0xe8, 0x37, + 0xf9, 0xd6, 0xe0, 0x10, 0xf9, 0x2a, 0xa4, 0xac, 0x9e, 0x69, 0xe2, 0xdc, 0x92, 0x1e, 0xfd, 0x33, + 0xa2, 0xfc, 0xbf, 0x3e, 0x64, 0x60, 0x0e, 0x90, 0x37, 0x20, 0x89, 0x3a, 0x87, 0xa8, 0x19, 0x85, + 0xfc, 0xb7, 0x87, 0xbc, 0x9e, 0x60, 0x6d, 0xf9, 0x05, 0x00, 0xfa, 0x32, 0x4d, 0xbe, 0x12, 0x45, + 0x60, 0xff, 0xfd, 0x21, 0xfb, 0x85, 0x42, 0x1f, 0xd2, 0x27, 0xa0, 0xbf, 0x77, 0x78, 0x34, 0xc1, + 0xfb, 0x61, 0x02, 0xf2, 0x02, 0x7e, 0x05, 0xa6, 0x6e, 0xb8, 0xb6, 0xe5, 0x69, 0xed, 0x28, 0xf4, + 0x7f, 0x30, 0x34, 0xd7, 0xc7, 0x0e, 0xeb, 0xd8, 0x0e, 0xf2, 0xb4, 0xb6, 0x1b, 0x85, 0xfd, 0x4f, + 0x86, 0xf5, 0x01, 0x18, 0xac, 0x6b, 0xae, 0x37, 0xce, 0x73, 0xff, 0x17, 0x07, 0x73, 0x00, 0x36, + 0x1a, 0xff, 0x7f, 0x13, 0x1d, 0x47, 0x61, 0x7f, 0xc0, 0x8d, 0x66, 0xfa, 0xf2, 0x27, 0x21, 0x8d, + 0xff, 0xa5, 0xbf, 0xda, 0x89, 0x00, 0xff, 0x37, 0x03, 0xf7, 0x11, 0xf8, 0xce, 0xae, 0xd7, 0xf4, + 0x8c, 0x68, 0x67, 0xff, 0x0f, 0x8b, 0x34, 0xd7, 0x97, 0x8b, 0x90, 0x71, 0xbd, 0x66, 0xb3, 0xc7, + 0x26, 0x9a, 0x08, 0xf8, 0x0f, 0x1f, 0xfa, 0x2f, 0xb9, 0x3e, 0x66, 0xf3, 0xdc, 0xe8, 0xc3, 0x3a, + 0xd8, 0xb6, 0xb7, 0x6d, 0x7a, 0x4c, 0x07, 0x0f, 0xa7, 0x70, 0x19, 0xea, 0xef, 0x4a, 0x76, 0xb4, + 0x96, 0x0d, 0xca, 0x16, 0x4f, 0x77, 0x2e, 0x57, 0xf8, 0x69, 0x10, 0x8a, 0xd2, 0x02, 0x4c, 0x12, + 0x03, 0x7f, 0x92, 0x1c, 0x36, 0xc6, 0x15, 0x76, 0x25, 0x3d, 0x01, 0xc2, 0x26, 0x3b, 0xf5, 0x9c, + 0x59, 0x0b, 0xdd, 0x79, 0x53, 0x11, 0x36, 0xe5, 0xc4, 0x3b, 0x77, 0x97, 0x27, 0x0a, 0x3a, 0x08, + 0x9b, 0x58, 0xb3, 0x44, 0x3e, 0x45, 0x0d, 0x69, 0x96, 0x14, 0xa1, 0x84, 0x97, 0xcb, 0xec, 0x27, + 0x5e, 0x03, 0xcb, 0x65, 0x45, 0x28, 0x4b, 0x2b, 0x20, 0x6c, 0x91, 0xe3, 0xf7, 0xcc, 0xba, 0x14, + 0x5e, 0xae, 0x9a, 0xcd, 0x92, 0x22, 0x6c, 0x15, 0x1e, 0x07, 0xa1, 0x1c, 0x30, 0x53, 0x08, 0x9a, + 0x59, 0xf8, 0xa2, 0x00, 0x42, 0xc9, 0x5f, 0x5d, 0x27, 0x37, 0x12, 0xd8, 0xea, 0xba, 0x2f, 0x7f, + 0x9e, 0x9d, 0x31, 0xb3, 0x2b, 0x5f, 0x7e, 0x81, 0x1c, 0x99, 0x72, 0xfd, 0x0b, 0xbe, 0x7c, 0x83, + 0xfc, 0x38, 0x37, 0xcb, 0xe4, 0x1b, 0xbe, 0xfc, 0x22, 0xf9, 0x00, 0xc0, 0xef, 0x7e, 0xd1, 0x97, + 0x5f, 0x22, 0x3f, 0xf1, 0x8e, 0x31, 0xf9, 0xa5, 0xc2, 0x15, 0x10, 0x1a, 0x21, 0xa3, 0xe2, 0x27, + 0x1a, 0x35, 0xcd, 0x8d, 0x62, 0x2e, 0x7d, 0x11, 0x12, 0x0d, 0xcb, 0xde, 0x3b, 0x35, 0x5a, 0xfc, + 0x95, 0xbb, 0xcb, 0x13, 0x5f, 0xb8, 0xbb, 0x3c, 0xf1, 0xd5, 0xbb, 0xcb, 0x13, 0x84, 0x69, 0x0b, + 0x12, 0x55, 0xb3, 0x79, 0x72, 0x84, 0x57, 0xfa, 0x11, 0x1e, 0xf6, 0x7c, 0x20, 0xc8, 0xd7, 0x08, + 0xcf, 0x26, 0xd6, 0xe7, 0x71, 0x1e, 0x19, 0xa9, 0xd2, 0x18, 0xb1, 0xfc, 0x39, 0xc2, 0x55, 0x3a, + 0x29, 0x9c, 0x1f, 0x38, 0x90, 0xe3, 0x06, 0xe6, 0x22, 0xb9, 0x7f, 0x63, 0xe0, 0xfe, 0xe9, 0x91, + 0xf7, 0x0f, 0x78, 0xbd, 0xb0, 0x0d, 0x53, 0x18, 0x17, 0x0c, 0xcc, 0x98, 0x50, 0x39, 0x1b, 0x0c, + 0xcc, 0xe6, 0x85, 0xb7, 0xef, 0x2d, 0x4d, 0xbc, 0x73, 0x6f, 0x69, 0xe2, 0x1f, 0xee, 0x2d, 0x4d, + 0xbc, 0x7b, 0x6f, 0x49, 0xf8, 0xc1, 0xbd, 0x25, 0xe1, 0xff, 0xee, 0x2d, 0x09, 0x77, 0xee, 0x2f, + 0x09, 0x5f, 0xbf, 0xbf, 0x24, 0x7c, 0xeb, 0xfe, 0x92, 0xf0, 0xdd, 0xfb, 0x4b, 0xc2, 0xdb, 0xf7, + 0x97, 0x84, 0x77, 0xee, 0x2f, 0x09, 0xef, 0xde, 0x5f, 0x12, 0xfe, 0x3f, 0x00, 0x00, 0xff, 0xff, + 0x11, 0xdc, 0xfd, 0x4d, 0x5a, 0x32, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/test/unrecognizedgroup/unrecognizedgroup.pb.go b/vendor/github.com/gogo/protobuf/test/unrecognizedgroup/unrecognizedgroup.pb.go index 44937a2b8..5932399f8 100644 --- a/vendor/github.com/gogo/protobuf/test/unrecognizedgroup/unrecognizedgroup.pb.go +++ b/vendor/github.com/gogo/protobuf/test/unrecognizedgroup/unrecognizedgroup.pb.go @@ -124,235 +124,242 @@ func (this *OldWithGroup_Group2) Description() (desc *github_com_gogo_protobuf_p func UnrecognizedgroupDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 3644 bytes of a gzipped FileDescriptorSet - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x5b, 0x70, 0x1b, 0xe7, - 0x75, 0xd6, 0xe2, 0x46, 0xe0, 0x00, 0x04, 0x97, 0x4b, 0x9a, 0x82, 0xe8, 0x98, 0xa4, 0x10, 0x5f, - 0x28, 0xbb, 0xa1, 0x62, 0xea, 0x62, 0x69, 0xd5, 0x58, 0x03, 0x92, 0x10, 0x42, 0x0d, 0x2f, 0xc8, - 0x92, 0x8c, 0xe5, 0xe4, 0x61, 0x67, 0xb9, 0xfb, 0x03, 0x5c, 0x69, 0xb1, 0x8b, 0xee, 0x2e, 0x24, - 0x51, 0x4f, 0xca, 0xb8, 0xb7, 0x4c, 0xa6, 0x6d, 0x7a, 0x99, 0x69, 0xe2, 0x38, 0xae, 0x95, 0x99, - 0xd6, 0x69, 0x7a, 0x4b, 0x7a, 0x49, 0x33, 0x7d, 0xea, 0x4b, 0xda, 0x4c, 0x1f, 0x3a, 0xf5, 0x5b, - 0x1f, 0xfa, 0x50, 0x69, 0x3c, 0xd3, 0x9b, 0xdc, 0xba, 0xb5, 0x66, 0xda, 0x19, 0xbd, 0x74, 0xfe, - 0xdb, 0x62, 0x17, 0x00, 0xb9, 0xa0, 0x67, 0x6c, 0xe7, 0x45, 0xc2, 0x7f, 0xfe, 0xf3, 0x7d, 0x7b, - 0xfe, 0xf3, 0x9f, 0xff, 0x9c, 0xb3, 0xff, 0x12, 0xbe, 0x72, 0x16, 0xe6, 0x9a, 0x8e, 0xd3, 0xb4, - 0xd0, 0xe9, 0xb6, 0xeb, 0xf8, 0xce, 0x6e, 0xa7, 0x71, 0xda, 0x40, 0x9e, 0xee, 0x9a, 0x6d, 0xdf, - 0x71, 0x17, 0x88, 0x4c, 0x1a, 0xa3, 0x1a, 0x0b, 0x5c, 0xa3, 0xbc, 0x0e, 0xe3, 0x57, 0x4c, 0x0b, - 0xad, 0x04, 0x8a, 0x5b, 0xc8, 0x97, 0x2e, 0x40, 0xaa, 0x61, 0x5a, 0xa8, 0x24, 0xcc, 0x25, 0xe7, - 0xf3, 0x8b, 0x4f, 0x2f, 0xf4, 0x80, 0x16, 0xa2, 0x88, 0x3a, 0x16, 0x2b, 0x04, 0x51, 0x7e, 0x37, - 0x05, 0x13, 0x03, 0x66, 0x25, 0x09, 0x52, 0xb6, 0xd6, 0xc2, 0x8c, 0xc2, 0x7c, 0x4e, 0x21, 0xbf, - 0xa5, 0x12, 0x8c, 0xb4, 0x35, 0xfd, 0x86, 0xd6, 0x44, 0xa5, 0x04, 0x11, 0xf3, 0xa1, 0x34, 0x03, - 0x60, 0xa0, 0x36, 0xb2, 0x0d, 0x64, 0xeb, 0xfb, 0xa5, 0xe4, 0x5c, 0x72, 0x3e, 0xa7, 0x84, 0x24, - 0xd2, 0x0b, 0x30, 0xde, 0xee, 0xec, 0x5a, 0xa6, 0xae, 0x86, 0xd4, 0x60, 0x2e, 0x39, 0x9f, 0x56, - 0x44, 0x3a, 0xb1, 0xd2, 0x55, 0x7e, 0x0e, 0xc6, 0x6e, 0x21, 0xed, 0x46, 0x58, 0x35, 0x4f, 0x54, - 0x8b, 0x58, 0x1c, 0x52, 0x5c, 0x86, 0x42, 0x0b, 0x79, 0x9e, 0xd6, 0x44, 0xaa, 0xbf, 0xdf, 0x46, - 0xa5, 0x14, 0x59, 0xfd, 0x5c, 0xdf, 0xea, 0x7b, 0x57, 0x9e, 0x67, 0xa8, 0xed, 0xfd, 0x36, 0x92, - 0x2a, 0x90, 0x43, 0x76, 0xa7, 0x45, 0x19, 0xd2, 0x07, 0xf8, 0xaf, 0x6a, 0x77, 0x5a, 0xbd, 0x2c, - 0x59, 0x0c, 0x63, 0x14, 0x23, 0x1e, 0x72, 0x6f, 0x9a, 0x3a, 0x2a, 0x65, 0x08, 0xc1, 0x73, 0x7d, - 0x04, 0x5b, 0x74, 0xbe, 0x97, 0x83, 0xe3, 0xa4, 0x65, 0xc8, 0xa1, 0xdb, 0x3e, 0xb2, 0x3d, 0xd3, - 0xb1, 0x4b, 0x23, 0x84, 0xe4, 0x99, 0x01, 0xbb, 0x88, 0x2c, 0xa3, 0x97, 0xa2, 0x8b, 0x93, 0xce, - 0xc3, 0x88, 0xd3, 0xf6, 0x4d, 0xc7, 0xf6, 0x4a, 0xd9, 0x39, 0x61, 0x3e, 0xbf, 0xf8, 0xa9, 0x81, - 0x81, 0xb0, 0x49, 0x75, 0x14, 0xae, 0x2c, 0xad, 0x82, 0xe8, 0x39, 0x1d, 0x57, 0x47, 0xaa, 0xee, - 0x18, 0x48, 0x35, 0xed, 0x86, 0x53, 0xca, 0x11, 0x82, 0xd9, 0xfe, 0x85, 0x10, 0xc5, 0x65, 0xc7, - 0x40, 0xab, 0x76, 0xc3, 0x51, 0x8a, 0x5e, 0x64, 0x2c, 0x4d, 0x41, 0xc6, 0xdb, 0xb7, 0x7d, 0xed, - 0x76, 0xa9, 0x40, 0x22, 0x84, 0x8d, 0xca, 0xff, 0x9b, 0x86, 0xb1, 0x61, 0x42, 0xec, 0x12, 0xa4, - 0x1b, 0x78, 0x95, 0xa5, 0xc4, 0x51, 0x7c, 0x40, 0x31, 0x51, 0x27, 0x66, 0x3e, 0xa4, 0x13, 0x2b, - 0x90, 0xb7, 0x91, 0xe7, 0x23, 0x83, 0x46, 0x44, 0x72, 0xc8, 0x98, 0x02, 0x0a, 0xea, 0x0f, 0xa9, - 0xd4, 0x87, 0x0a, 0xa9, 0x6b, 0x30, 0x16, 0x98, 0xa4, 0xba, 0x9a, 0xdd, 0xe4, 0xb1, 0x79, 0x3a, - 0xce, 0x92, 0x85, 0x2a, 0xc7, 0x29, 0x18, 0xa6, 0x14, 0x51, 0x64, 0x2c, 0xad, 0x00, 0x38, 0x36, - 0x72, 0x1a, 0xaa, 0x81, 0x74, 0xab, 0x94, 0x3d, 0xc0, 0x4b, 0x9b, 0x58, 0xa5, 0xcf, 0x4b, 0x0e, - 0x95, 0xea, 0x96, 0x74, 0xb1, 0x1b, 0x6a, 0x23, 0x07, 0x44, 0xca, 0x3a, 0x3d, 0x64, 0x7d, 0xd1, - 0xb6, 0x03, 0x45, 0x17, 0xe1, 0xb8, 0x47, 0x06, 0x5b, 0x59, 0x8e, 0x18, 0xb1, 0x10, 0xbb, 0x32, - 0x85, 0xc1, 0xe8, 0xc2, 0x46, 0xdd, 0xf0, 0x50, 0xfa, 0x34, 0x04, 0x02, 0x95, 0x84, 0x15, 0x90, - 0x2c, 0x54, 0xe0, 0xc2, 0x0d, 0xad, 0x85, 0xa6, 0x2f, 0x40, 0x31, 0xea, 0x1e, 0x69, 0x12, 0xd2, - 0x9e, 0xaf, 0xb9, 0x3e, 0x89, 0xc2, 0xb4, 0x42, 0x07, 0x92, 0x08, 0x49, 0x64, 0x1b, 0x24, 0xcb, - 0xa5, 0x15, 0xfc, 0x73, 0xfa, 0x25, 0x18, 0x8d, 0x3c, 0x7e, 0x58, 0x60, 0xf9, 0x1b, 0x19, 0x98, - 0x1c, 0x14, 0x73, 0x03, 0xc3, 0x7f, 0x0a, 0x32, 0x76, 0xa7, 0xb5, 0x8b, 0xdc, 0x52, 0x92, 0x30, - 0xb0, 0x91, 0x54, 0x81, 0xb4, 0xa5, 0xed, 0x22, 0xab, 0x94, 0x9a, 0x13, 0xe6, 0x8b, 0x8b, 0x2f, - 0x0c, 0x15, 0xd5, 0x0b, 0x6b, 0x18, 0xa2, 0x50, 0xa4, 0xf4, 0x32, 0xa4, 0x58, 0x8a, 0xc3, 0x0c, - 0xcf, 0x0f, 0xc7, 0x80, 0x63, 0x51, 0x21, 0x38, 0xe9, 0x49, 0xc8, 0xe1, 0xff, 0xa9, 0x6f, 0x33, - 0xc4, 0xe6, 0x2c, 0x16, 0x60, 0xbf, 0x4a, 0xd3, 0x90, 0x25, 0x61, 0x66, 0x20, 0x5e, 0x1a, 0x82, - 0x31, 0xde, 0x18, 0x03, 0x35, 0xb4, 0x8e, 0xe5, 0xab, 0x37, 0x35, 0xab, 0x83, 0x48, 0xc0, 0xe4, - 0x94, 0x02, 0x13, 0x7e, 0x11, 0xcb, 0xa4, 0x59, 0xc8, 0xd3, 0xa8, 0x34, 0x6d, 0x03, 0xdd, 0x26, - 0xd9, 0x27, 0xad, 0xd0, 0x40, 0x5d, 0xc5, 0x12, 0xfc, 0xf8, 0xeb, 0x9e, 0x63, 0xf3, 0xad, 0x25, - 0x8f, 0xc0, 0x02, 0xf2, 0xf8, 0x97, 0x7a, 0x13, 0xdf, 0x53, 0x83, 0x97, 0xd7, 0x1b, 0x8b, 0xe5, - 0x1f, 0x26, 0x20, 0x45, 0xce, 0xdb, 0x18, 0xe4, 0xb7, 0x5f, 0xad, 0x57, 0xd5, 0x95, 0xcd, 0x9d, - 0xa5, 0xb5, 0xaa, 0x28, 0x48, 0x45, 0x00, 0x22, 0xb8, 0xb2, 0xb6, 0x59, 0xd9, 0x16, 0x13, 0xc1, - 0x78, 0x75, 0x63, 0xfb, 0xfc, 0x59, 0x31, 0x19, 0x00, 0x76, 0xa8, 0x20, 0x15, 0x56, 0x38, 0xb3, - 0x28, 0xa6, 0x25, 0x11, 0x0a, 0x94, 0x60, 0xf5, 0x5a, 0x75, 0xe5, 0xfc, 0x59, 0x31, 0x13, 0x95, - 0x9c, 0x59, 0x14, 0x47, 0xa4, 0x51, 0xc8, 0x11, 0xc9, 0xd2, 0xe6, 0xe6, 0x9a, 0x98, 0x0d, 0x38, - 0xb7, 0xb6, 0x95, 0xd5, 0x8d, 0x9a, 0x98, 0x0b, 0x38, 0x6b, 0xca, 0xe6, 0x4e, 0x5d, 0x84, 0x80, - 0x61, 0xbd, 0xba, 0xb5, 0x55, 0xa9, 0x55, 0xc5, 0x7c, 0xa0, 0xb1, 0xf4, 0xea, 0x76, 0x75, 0x4b, - 0x2c, 0x44, 0xcc, 0x3a, 0xb3, 0x28, 0x8e, 0x06, 0x8f, 0xa8, 0x6e, 0xec, 0xac, 0x8b, 0x45, 0x69, - 0x1c, 0x46, 0xe9, 0x23, 0xb8, 0x11, 0x63, 0x3d, 0xa2, 0xf3, 0x67, 0x45, 0xb1, 0x6b, 0x08, 0x65, - 0x19, 0x8f, 0x08, 0xce, 0x9f, 0x15, 0xa5, 0xf2, 0x32, 0xa4, 0x49, 0x74, 0x49, 0x12, 0x14, 0xd7, - 0x2a, 0x4b, 0xd5, 0x35, 0x75, 0xb3, 0xbe, 0xbd, 0xba, 0xb9, 0x51, 0x59, 0x13, 0x85, 0xae, 0x4c, - 0xa9, 0x7e, 0x61, 0x67, 0x55, 0xa9, 0xae, 0x88, 0x89, 0xb0, 0xac, 0x5e, 0xad, 0x6c, 0x57, 0x57, - 0xc4, 0x64, 0x59, 0x87, 0xc9, 0x41, 0x79, 0x66, 0xe0, 0xc9, 0x08, 0x6d, 0x71, 0xe2, 0x80, 0x2d, - 0x26, 0x5c, 0x7d, 0x5b, 0xfc, 0x1d, 0x01, 0x26, 0x06, 0xe4, 0xda, 0x81, 0x0f, 0xb9, 0x0c, 0x69, - 0x1a, 0xa2, 0xb4, 0xfa, 0x9c, 0x1a, 0x98, 0xb4, 0x49, 0xc0, 0xf6, 0x55, 0x20, 0x82, 0x0b, 0x57, - 0xe0, 0xe4, 0x01, 0x15, 0x18, 0x53, 0xf4, 0x19, 0xf9, 0x9a, 0x00, 0xa5, 0x83, 0xb8, 0x63, 0x12, - 0x45, 0x22, 0x92, 0x28, 0x2e, 0xf5, 0x1a, 0x70, 0xf2, 0xe0, 0x35, 0xf4, 0x59, 0xf1, 0xb6, 0x00, - 0x53, 0x83, 0x1b, 0x95, 0x81, 0x36, 0xbc, 0x0c, 0x99, 0x16, 0xf2, 0xf7, 0x1c, 0x5e, 0xac, 0x9f, - 0x1d, 0x50, 0x02, 0xf0, 0x74, 0xaf, 0xaf, 0x18, 0x2a, 0x5c, 0x43, 0x92, 0x07, 0x75, 0x1b, 0xd4, - 0x9a, 0x3e, 0x4b, 0xbf, 0x9a, 0x80, 0x27, 0x06, 0x92, 0x0f, 0x34, 0xf4, 0x29, 0x00, 0xd3, 0x6e, - 0x77, 0x7c, 0x5a, 0x90, 0x69, 0x7e, 0xca, 0x11, 0x09, 0x39, 0xfb, 0x38, 0xf7, 0x74, 0xfc, 0x60, - 0x3e, 0x49, 0xe6, 0x81, 0x8a, 0x88, 0xc2, 0x85, 0xae, 0xa1, 0x29, 0x62, 0xe8, 0xcc, 0x01, 0x2b, - 0xed, 0xab, 0x75, 0x9f, 0x05, 0x51, 0xb7, 0x4c, 0x64, 0xfb, 0xaa, 0xe7, 0xbb, 0x48, 0x6b, 0x99, - 0x76, 0x93, 0x24, 0xe0, 0xac, 0x9c, 0x6e, 0x68, 0x96, 0x87, 0x94, 0x31, 0x3a, 0xbd, 0xc5, 0x67, - 0x31, 0x82, 0x54, 0x19, 0x37, 0x84, 0xc8, 0x44, 0x10, 0x74, 0x3a, 0x40, 0x94, 0xbf, 0x36, 0x02, - 0xf9, 0x50, 0x5b, 0x27, 0x9d, 0x84, 0xc2, 0x75, 0xed, 0xa6, 0xa6, 0xf2, 0x56, 0x9d, 0x7a, 0x22, - 0x8f, 0x65, 0x75, 0xd6, 0xae, 0x7f, 0x16, 0x26, 0x89, 0x8a, 0xd3, 0xf1, 0x91, 0xab, 0xea, 0x96, - 0xe6, 0x79, 0xc4, 0x69, 0x59, 0xa2, 0x2a, 0xe1, 0xb9, 0x4d, 0x3c, 0xb5, 0xcc, 0x67, 0xa4, 0x73, - 0x30, 0x41, 0x10, 0xad, 0x8e, 0xe5, 0x9b, 0x6d, 0x0b, 0xa9, 0xf8, 0xe5, 0xc1, 0x23, 0x89, 0x38, - 0xb0, 0x6c, 0x1c, 0x6b, 0xac, 0x33, 0x05, 0x6c, 0x91, 0x27, 0xd5, 0xe0, 0x29, 0x02, 0x6b, 0x22, - 0x1b, 0xb9, 0x9a, 0x8f, 0x54, 0xf4, 0x73, 0x1d, 0xcd, 0xf2, 0x54, 0xcd, 0x36, 0xd4, 0x3d, 0xcd, - 0xdb, 0x2b, 0x4d, 0x86, 0x09, 0x4e, 0x60, 0xdd, 0x1a, 0x53, 0xad, 0x12, 0xcd, 0x8a, 0x6d, 0x7c, - 0x5e, 0xf3, 0xf6, 0x24, 0x19, 0xa6, 0x08, 0x91, 0xe7, 0xbb, 0xa6, 0xdd, 0x54, 0xf5, 0x3d, 0xa4, - 0xdf, 0x50, 0x3b, 0x7e, 0xe3, 0x42, 0xe9, 0xc9, 0x30, 0x03, 0x31, 0x72, 0x8b, 0xe8, 0x2c, 0x63, - 0x95, 0x1d, 0xbf, 0x71, 0x41, 0xda, 0x82, 0x02, 0xde, 0x8f, 0x96, 0x79, 0x07, 0xa9, 0x0d, 0xc7, - 0x25, 0xc5, 0xa5, 0x38, 0xe0, 0x70, 0x87, 0x9c, 0xb8, 0xb0, 0xc9, 0x00, 0xeb, 0x8e, 0x81, 0xe4, - 0xf4, 0x56, 0xbd, 0x5a, 0x5d, 0x51, 0xf2, 0x9c, 0xe5, 0x8a, 0xe3, 0xe2, 0x98, 0x6a, 0x3a, 0x81, - 0x8f, 0xf3, 0x34, 0xa6, 0x9a, 0x0e, 0xf7, 0xf0, 0x39, 0x98, 0xd0, 0x75, 0xba, 0x6c, 0x53, 0x57, - 0x59, 0x97, 0xef, 0x95, 0xc4, 0x88, 0xbf, 0x74, 0xbd, 0x46, 0x15, 0x58, 0x98, 0x7b, 0xd2, 0x45, - 0x78, 0xa2, 0xeb, 0xaf, 0x30, 0x70, 0xbc, 0x6f, 0x95, 0xbd, 0xd0, 0x73, 0x30, 0xd1, 0xde, 0xef, - 0x07, 0x4a, 0x91, 0x27, 0xb6, 0xf7, 0x7b, 0x61, 0xcf, 0x90, 0x37, 0x37, 0x17, 0xe9, 0x9a, 0x8f, - 0x8c, 0xd2, 0xf1, 0xb0, 0x76, 0x68, 0x42, 0x3a, 0x0d, 0xa2, 0xae, 0xab, 0xc8, 0xd6, 0x76, 0x2d, - 0xa4, 0x6a, 0x2e, 0xb2, 0x35, 0xaf, 0x34, 0x1b, 0x56, 0x2e, 0xea, 0x7a, 0x95, 0xcc, 0x56, 0xc8, - 0xa4, 0xf4, 0x3c, 0x8c, 0x3b, 0xbb, 0xd7, 0x75, 0x1a, 0x5c, 0x6a, 0xdb, 0x45, 0x0d, 0xf3, 0x76, - 0xe9, 0x69, 0xe2, 0xa6, 0x31, 0x3c, 0x41, 0x42, 0xab, 0x4e, 0xc4, 0xd2, 0x29, 0x10, 0x75, 0x6f, - 0x4f, 0x73, 0xdb, 0xa4, 0xba, 0x7b, 0x6d, 0x4d, 0x47, 0xa5, 0x67, 0xa8, 0x2a, 0x95, 0x6f, 0x70, - 0xb1, 0x74, 0x0d, 0x26, 0x3b, 0xb6, 0x69, 0xfb, 0xc8, 0x6d, 0xbb, 0x08, 0x37, 0xe9, 0xf4, 0xa4, - 0x95, 0xfe, 0x65, 0xe4, 0x80, 0x36, 0x7b, 0x27, 0xac, 0x4d, 0x77, 0x57, 0x99, 0xe8, 0xf4, 0x0b, - 0xcb, 0x32, 0x14, 0xc2, 0x9b, 0x2e, 0xe5, 0x80, 0x6e, 0xbb, 0x28, 0xe0, 0x1a, 0xba, 0xbc, 0xb9, - 0x82, 0xab, 0xdf, 0x97, 0xaa, 0x62, 0x02, 0x57, 0xe1, 0xb5, 0xd5, 0xed, 0xaa, 0xaa, 0xec, 0x6c, - 0x6c, 0xaf, 0xae, 0x57, 0xc5, 0xe4, 0xf3, 0xb9, 0xec, 0xbf, 0x8e, 0x88, 0x77, 0xef, 0xde, 0xbd, - 0x9b, 0x28, 0xff, 0x38, 0x01, 0xc5, 0x68, 0xe7, 0x2b, 0xfd, 0x2c, 0x1c, 0xe7, 0xaf, 0xa9, 0x1e, - 0xf2, 0xd5, 0x5b, 0xa6, 0x4b, 0xe2, 0xb0, 0xa5, 0xd1, 0xde, 0x31, 0x70, 0xe1, 0x24, 0xd3, 0xda, - 0x42, 0xfe, 0x2b, 0xa6, 0x8b, 0xa3, 0xac, 0xa5, 0xf9, 0xd2, 0x1a, 0xcc, 0xda, 0x8e, 0xea, 0xf9, - 0x9a, 0x6d, 0x68, 0xae, 0xa1, 0x76, 0x2f, 0x08, 0x54, 0x4d, 0xd7, 0x91, 0xe7, 0x39, 0xb4, 0x04, - 0x04, 0x2c, 0x9f, 0xb2, 0x9d, 0x2d, 0xa6, 0xdc, 0xcd, 0x8d, 0x15, 0xa6, 0xda, 0xb3, 0xdd, 0xc9, - 0x83, 0xb6, 0xfb, 0x49, 0xc8, 0xb5, 0xb4, 0xb6, 0x8a, 0x6c, 0xdf, 0xdd, 0x27, 0xfd, 0x5a, 0x56, - 0xc9, 0xb6, 0xb4, 0x76, 0x15, 0x8f, 0x3f, 0xba, 0x3d, 0x08, 0xfb, 0xf1, 0x9f, 0x92, 0x50, 0x08, - 0xf7, 0x6c, 0xb8, 0x05, 0xd6, 0x49, 0x7e, 0x16, 0xc8, 0xf1, 0xfd, 0xf4, 0xa1, 0x1d, 0xde, 0xc2, - 0x32, 0x4e, 0xdc, 0x72, 0x86, 0x76, 0x52, 0x0a, 0x45, 0xe2, 0xa2, 0x89, 0x0f, 0x2c, 0xa2, 0xfd, - 0x79, 0x56, 0x61, 0x23, 0xa9, 0x06, 0x99, 0xeb, 0x1e, 0xe1, 0xce, 0x10, 0xee, 0xa7, 0x0f, 0xe7, - 0xbe, 0xba, 0x45, 0xc8, 0x73, 0x57, 0xb7, 0xd4, 0x8d, 0x4d, 0x65, 0xbd, 0xb2, 0xa6, 0x30, 0xb8, - 0x74, 0x02, 0x52, 0x96, 0x76, 0x67, 0x3f, 0x9a, 0xe2, 0x89, 0x68, 0x58, 0xc7, 0x9f, 0x80, 0xd4, - 0x2d, 0xa4, 0xdd, 0x88, 0x26, 0x56, 0x22, 0xfa, 0x08, 0x43, 0xff, 0x34, 0xa4, 0x89, 0xbf, 0x24, - 0x00, 0xe6, 0x31, 0xf1, 0x98, 0x94, 0x85, 0xd4, 0xf2, 0xa6, 0x82, 0xc3, 0x5f, 0x84, 0x02, 0x95, - 0xaa, 0xf5, 0xd5, 0xea, 0x72, 0x55, 0x4c, 0x94, 0xcf, 0x41, 0x86, 0x3a, 0x01, 0x1f, 0x8d, 0xc0, - 0x0d, 0xe2, 0x31, 0x36, 0x64, 0x1c, 0x02, 0x9f, 0xdd, 0x59, 0x5f, 0xaa, 0x2a, 0x62, 0x22, 0xbc, - 0xbd, 0x1e, 0x14, 0xc2, 0xed, 0xda, 0xc7, 0x13, 0x53, 0x7f, 0x25, 0x40, 0x3e, 0xd4, 0x7e, 0xe1, - 0xc2, 0xaf, 0x59, 0x96, 0x73, 0x4b, 0xd5, 0x2c, 0x53, 0xf3, 0x58, 0x50, 0x00, 0x11, 0x55, 0xb0, - 0x64, 0xd8, 0x4d, 0xfb, 0x58, 0x8c, 0x7f, 0x53, 0x00, 0xb1, 0xb7, 0x75, 0xeb, 0x31, 0x50, 0xf8, - 0x44, 0x0d, 0x7c, 0x43, 0x80, 0x62, 0xb4, 0x5f, 0xeb, 0x31, 0xef, 0xe4, 0x27, 0x6a, 0xde, 0xb7, - 0x04, 0x18, 0x8d, 0x74, 0x69, 0x3f, 0x55, 0xd6, 0xbd, 0x9e, 0x84, 0x89, 0x01, 0x38, 0xa9, 0xc2, - 0xda, 0x59, 0xda, 0x61, 0x7f, 0x66, 0x98, 0x67, 0x2d, 0xe0, 0x6a, 0x59, 0xd7, 0x5c, 0x9f, 0x75, - 0xbf, 0xa7, 0x40, 0x34, 0x0d, 0x64, 0xfb, 0x66, 0xc3, 0x44, 0x2e, 0x7b, 0x05, 0xa7, 0x3d, 0xee, - 0x58, 0x57, 0x4e, 0xdf, 0xc2, 0x7f, 0x06, 0xa4, 0xb6, 0xe3, 0x99, 0xbe, 0x79, 0x13, 0xa9, 0xa6, - 0xcd, 0xdf, 0xd7, 0x71, 0xcf, 0x9b, 0x52, 0x44, 0x3e, 0xb3, 0x6a, 0xfb, 0x81, 0xb6, 0x8d, 0x9a, - 0x5a, 0x8f, 0x36, 0xce, 0x7d, 0x49, 0x45, 0xe4, 0x33, 0x81, 0xf6, 0x49, 0x28, 0x18, 0x4e, 0x07, - 0xb7, 0x0f, 0x54, 0x0f, 0xa7, 0x5a, 0x41, 0xc9, 0x53, 0x59, 0xa0, 0xc2, 0xfa, 0xbb, 0xee, 0x45, - 0x41, 0x41, 0xc9, 0x53, 0x19, 0x55, 0x79, 0x0e, 0xc6, 0xb4, 0x66, 0xd3, 0xc5, 0xe4, 0x9c, 0x88, - 0x36, 0xad, 0xc5, 0x40, 0x4c, 0x14, 0xa7, 0xaf, 0x42, 0x96, 0xfb, 0x01, 0x57, 0x33, 0xec, 0x09, - 0xb5, 0x4d, 0xaf, 0x6b, 0x12, 0xf3, 0x39, 0x25, 0x6b, 0xf3, 0xc9, 0x93, 0x50, 0x30, 0x3d, 0xb5, - 0x7b, 0x6f, 0x98, 0x98, 0x4b, 0xcc, 0x67, 0x95, 0xbc, 0xe9, 0x05, 0x17, 0x45, 0xe5, 0xb7, 0x13, - 0x50, 0x8c, 0xde, 0x7b, 0x4a, 0x2b, 0x90, 0xb5, 0x1c, 0x5d, 0x23, 0x81, 0x40, 0x2f, 0xdd, 0xe7, - 0x63, 0xae, 0x4a, 0x17, 0xd6, 0x98, 0xbe, 0x12, 0x20, 0xa7, 0xff, 0x5e, 0x80, 0x2c, 0x17, 0x4b, - 0x53, 0x90, 0x6a, 0x6b, 0xfe, 0x1e, 0xa1, 0x4b, 0x2f, 0x25, 0x44, 0x41, 0x21, 0x63, 0x2c, 0xf7, - 0xda, 0x9a, 0x4d, 0x42, 0x80, 0xc9, 0xf1, 0x18, 0xef, 0xab, 0x85, 0x34, 0x83, 0xb4, 0xc3, 0x4e, - 0xab, 0x85, 0x6c, 0xdf, 0xe3, 0xfb, 0xca, 0xe4, 0xcb, 0x4c, 0x2c, 0xbd, 0x00, 0xe3, 0xbe, 0xab, - 0x99, 0x56, 0x44, 0x37, 0x45, 0x74, 0x45, 0x3e, 0x11, 0x28, 0xcb, 0x70, 0x82, 0xf3, 0x1a, 0xc8, - 0xd7, 0xf4, 0x3d, 0x64, 0x74, 0x41, 0x19, 0x72, 0xa9, 0x76, 0x9c, 0x29, 0xac, 0xb0, 0x79, 0x8e, - 0x2d, 0xbf, 0x23, 0xc0, 0x38, 0x6f, 0xe0, 0x8d, 0xc0, 0x59, 0xeb, 0x00, 0x9a, 0x6d, 0x3b, 0x7e, - 0xd8, 0x5d, 0xfd, 0xa1, 0xdc, 0x87, 0x5b, 0xa8, 0x04, 0x20, 0x25, 0x44, 0x30, 0xdd, 0x02, 0xe8, - 0xce, 0x1c, 0xe8, 0xb6, 0x59, 0xc8, 0xb3, 0x4b, 0x6d, 0xf2, 0x65, 0x84, 0xbe, 0xf5, 0x01, 0x15, - 0xe1, 0x4e, 0x5f, 0x9a, 0x84, 0xf4, 0x2e, 0x6a, 0x9a, 0x36, 0xbb, 0x6a, 0xa3, 0x03, 0x7e, 0x81, - 0x97, 0x0a, 0x2e, 0xf0, 0x96, 0xbe, 0x0c, 0x13, 0xba, 0xd3, 0xea, 0x35, 0x77, 0x49, 0xec, 0x79, - 0xf3, 0xf4, 0x3e, 0x2f, 0x7c, 0x09, 0xba, 0xdd, 0xd9, 0x5b, 0x82, 0xf0, 0x9d, 0x44, 0xb2, 0x56, - 0x5f, 0xfa, 0x5e, 0x62, 0xba, 0x46, 0xa1, 0x75, 0xbe, 0x52, 0x05, 0x35, 0x2c, 0xa4, 0x63, 0xeb, - 0xe1, 0x83, 0x67, 0xe1, 0x33, 0x4d, 0xd3, 0xdf, 0xeb, 0xec, 0x2e, 0xe8, 0x4e, 0xeb, 0x74, 0xd3, - 0x69, 0x3a, 0xdd, 0x8f, 0x41, 0x78, 0x44, 0x06, 0xe4, 0x17, 0xfb, 0x20, 0x94, 0x0b, 0xa4, 0xd3, - 0xb1, 0x5f, 0x8f, 0xe4, 0x0d, 0x98, 0x60, 0xca, 0x2a, 0xb9, 0x91, 0xa6, 0x7d, 0xb8, 0x74, 0xe8, - 0xad, 0x44, 0xe9, 0x07, 0xef, 0x92, 0x4a, 0xa7, 0x8c, 0x33, 0x28, 0x9e, 0xa3, 0x9d, 0xba, 0xac, - 0xc0, 0x13, 0x11, 0x3e, 0x7a, 0x34, 0x91, 0x1b, 0xc3, 0xf8, 0x63, 0xc6, 0x38, 0x11, 0x62, 0xdc, - 0x62, 0x50, 0x79, 0x19, 0x46, 0x8f, 0xc2, 0xf5, 0x37, 0x8c, 0xab, 0x80, 0xc2, 0x24, 0x35, 0x18, - 0x23, 0x24, 0x7a, 0xc7, 0xf3, 0x9d, 0x16, 0xc9, 0x7b, 0x87, 0xd3, 0xfc, 0xed, 0xbb, 0xf4, 0xac, - 0x14, 0x31, 0x6c, 0x39, 0x40, 0xc9, 0x32, 0x90, 0x4b, 0x78, 0x03, 0xe9, 0x56, 0x0c, 0xc3, 0x4f, - 0x98, 0x21, 0x81, 0xbe, 0xfc, 0x45, 0x98, 0xc4, 0xbf, 0x49, 0x5a, 0x0a, 0x5b, 0x12, 0x7f, 0x07, - 0x53, 0x7a, 0xe7, 0x35, 0x7a, 0x1c, 0x27, 0x02, 0x82, 0x90, 0x4d, 0xa1, 0x5d, 0x6c, 0x22, 0xdf, - 0x47, 0xae, 0xa7, 0x6a, 0xd6, 0x20, 0xf3, 0x42, 0x6f, 0xb0, 0xa5, 0x6f, 0x3e, 0x8c, 0xee, 0x62, - 0x8d, 0x22, 0x2b, 0x96, 0x25, 0xef, 0xc0, 0xf1, 0x01, 0x51, 0x31, 0x04, 0xe7, 0xeb, 0x8c, 0x73, - 0xb2, 0x2f, 0x32, 0x30, 0x6d, 0x1d, 0xb8, 0x3c, 0xd8, 0xcb, 0x21, 0x38, 0xbf, 0xc5, 0x38, 0x25, - 0x86, 0xe5, 0x5b, 0x8a, 0x19, 0xaf, 0xc2, 0xf8, 0x4d, 0xe4, 0xee, 0x3a, 0x1e, 0xbb, 0x38, 0x18, - 0x82, 0xee, 0x0d, 0x46, 0x37, 0xc6, 0x80, 0xe4, 0x1a, 0x01, 0x73, 0x5d, 0x84, 0x6c, 0x43, 0xd3, - 0xd1, 0x10, 0x14, 0xdf, 0x66, 0x14, 0x23, 0x58, 0x1f, 0x43, 0x2b, 0x50, 0x68, 0x3a, 0xac, 0x32, - 0xc5, 0xc3, 0xdf, 0x64, 0xf0, 0x3c, 0xc7, 0x30, 0x8a, 0xb6, 0xd3, 0xee, 0x58, 0xb8, 0x6c, 0xc5, - 0x53, 0xfc, 0x0e, 0xa7, 0xe0, 0x18, 0x46, 0x71, 0x04, 0xb7, 0xbe, 0xc5, 0x29, 0xbc, 0x90, 0x3f, - 0x2f, 0x43, 0xde, 0xb1, 0xad, 0x7d, 0xc7, 0x1e, 0xc6, 0x88, 0x7b, 0x8c, 0x01, 0x18, 0x04, 0x13, - 0x5c, 0x82, 0xdc, 0xb0, 0x1b, 0xf1, 0xbb, 0x0f, 0xf9, 0xf1, 0xe0, 0x3b, 0x50, 0x83, 0x31, 0x9e, - 0xa0, 0x4c, 0xc7, 0x1e, 0x82, 0xe2, 0xf7, 0x18, 0x45, 0x31, 0x04, 0x63, 0xcb, 0xf0, 0x91, 0xe7, - 0x37, 0xd1, 0x30, 0x24, 0x6f, 0xf3, 0x65, 0x30, 0x08, 0x73, 0xe5, 0x2e, 0xb2, 0xf5, 0xbd, 0xe1, - 0x18, 0xbe, 0xcb, 0x5d, 0xc9, 0x31, 0x98, 0x62, 0x19, 0x46, 0x5b, 0x9a, 0xeb, 0xed, 0x69, 0xd6, - 0x50, 0xdb, 0xf1, 0xfb, 0x8c, 0xa3, 0x10, 0x80, 0x98, 0x47, 0x3a, 0xf6, 0x51, 0x68, 0xbe, 0xc7, - 0x3d, 0x12, 0x82, 0xb1, 0xa3, 0xe7, 0xf9, 0xe4, 0x6e, 0xe6, 0x28, 0x6c, 0x7f, 0xc0, 0x8f, 0x1e, - 0xc5, 0xae, 0x87, 0x19, 0x2f, 0x41, 0xce, 0x33, 0xef, 0x0c, 0x45, 0xf3, 0x87, 0x7c, 0xa7, 0x09, - 0x00, 0x83, 0x5f, 0x85, 0x13, 0x03, 0xcb, 0xc4, 0x10, 0x64, 0x7f, 0xc4, 0xc8, 0xa6, 0x06, 0x94, - 0x0a, 0x96, 0x12, 0x8e, 0x4a, 0xf9, 0xc7, 0x3c, 0x25, 0xa0, 0x1e, 0xae, 0x3a, 0xee, 0xec, 0x3d, - 0xad, 0x71, 0x34, 0xaf, 0xfd, 0x09, 0xf7, 0x1a, 0xc5, 0x46, 0xbc, 0xb6, 0x0d, 0x53, 0x8c, 0xf1, - 0x68, 0xfb, 0xfa, 0x7d, 0x9e, 0x58, 0x29, 0x7a, 0x27, 0xba, 0xbb, 0x5f, 0x86, 0xe9, 0xc0, 0x9d, - 0xbc, 0x29, 0xf5, 0xd4, 0x96, 0xd6, 0x1e, 0x82, 0xf9, 0x07, 0x8c, 0x99, 0x67, 0xfc, 0xa0, 0xab, - 0xf5, 0xd6, 0xb5, 0x36, 0x26, 0xbf, 0x06, 0x25, 0x4e, 0xde, 0xb1, 0x5d, 0xa4, 0x3b, 0x4d, 0xdb, - 0xbc, 0x83, 0x8c, 0x21, 0xa8, 0xff, 0xb4, 0x67, 0xab, 0x76, 0x42, 0x70, 0xcc, 0xbc, 0x0a, 0x62, - 0xd0, 0xab, 0xa8, 0x66, 0xab, 0xed, 0xb8, 0x7e, 0x0c, 0xe3, 0x9f, 0xf1, 0x9d, 0x0a, 0x70, 0xab, - 0x04, 0x26, 0x57, 0xa1, 0x48, 0x86, 0xc3, 0x86, 0xe4, 0x9f, 0x33, 0xa2, 0xd1, 0x2e, 0x8a, 0x25, - 0x0e, 0xdd, 0x69, 0xb5, 0x35, 0x77, 0x98, 0xfc, 0xf7, 0x17, 0x3c, 0x71, 0x30, 0x08, 0x4b, 0x1c, - 0xfe, 0x7e, 0x1b, 0xe1, 0x6a, 0x3f, 0x04, 0xc3, 0x0f, 0x79, 0xe2, 0xe0, 0x18, 0x46, 0xc1, 0x1b, - 0x86, 0x21, 0x28, 0xfe, 0x92, 0x53, 0x70, 0x0c, 0xa6, 0xf8, 0x42, 0xb7, 0xd0, 0xba, 0xa8, 0x69, - 0x7a, 0xbe, 0x4b, 0x5b, 0xe1, 0xc3, 0xa9, 0x7e, 0xf4, 0x30, 0xda, 0x84, 0x29, 0x21, 0xa8, 0x7c, - 0x15, 0xc6, 0x7a, 0x5a, 0x0c, 0x29, 0xee, 0x8b, 0x7e, 0xe9, 0x2b, 0x8f, 0x58, 0x32, 0x8a, 0x76, - 0x18, 0xf2, 0x1a, 0xde, 0xf7, 0x68, 0x1f, 0x10, 0x4f, 0xf6, 0xda, 0xa3, 0x60, 0xeb, 0x23, 0x6d, - 0x80, 0x7c, 0x05, 0x46, 0x23, 0x3d, 0x40, 0x3c, 0xd5, 0xcf, 0x33, 0xaa, 0x42, 0xb8, 0x05, 0x90, - 0xcf, 0x41, 0x0a, 0xd7, 0xf3, 0x78, 0xf8, 0x2f, 0x30, 0x38, 0x51, 0x97, 0x3f, 0x07, 0x59, 0x5e, - 0xc7, 0xe3, 0xa1, 0xbf, 0xc8, 0xa0, 0x01, 0x04, 0xc3, 0x79, 0x0d, 0x8f, 0x87, 0xff, 0x12, 0x87, - 0x73, 0x08, 0x86, 0x0f, 0xef, 0xc2, 0xbf, 0xfe, 0x5a, 0x8a, 0xe5, 0x61, 0xee, 0xbb, 0x4b, 0x30, - 0xc2, 0x8a, 0x77, 0x3c, 0xfa, 0xab, 0xec, 0xe1, 0x1c, 0x21, 0xbf, 0x04, 0xe9, 0x21, 0x1d, 0xfe, - 0x2b, 0x0c, 0x4a, 0xf5, 0xe5, 0x65, 0xc8, 0x87, 0x0a, 0x76, 0x3c, 0xfc, 0x57, 0x19, 0x3c, 0x8c, - 0xc2, 0xa6, 0xb3, 0x82, 0x1d, 0x4f, 0xf0, 0x6b, 0xdc, 0x74, 0x86, 0xc0, 0x6e, 0xe3, 0xb5, 0x3a, - 0x1e, 0xfd, 0x75, 0xee, 0x75, 0x0e, 0x91, 0x2f, 0x43, 0x2e, 0xc8, 0xbf, 0xf1, 0xf8, 0x5f, 0x67, - 0xf8, 0x2e, 0x06, 0x7b, 0x20, 0x94, 0xff, 0xe3, 0x29, 0x7e, 0x83, 0x7b, 0x20, 0x84, 0xc2, 0xc7, - 0xa8, 0xb7, 0xa6, 0xc7, 0x33, 0xfd, 0x26, 0x3f, 0x46, 0x3d, 0x25, 0x1d, 0xef, 0x26, 0x49, 0x83, - 0xf1, 0x14, 0xbf, 0xc5, 0x77, 0x93, 0xe8, 0x63, 0x33, 0x7a, 0x8b, 0x64, 0x3c, 0xc7, 0x6f, 0x73, - 0x33, 0x7a, 0x6a, 0xa4, 0x5c, 0x07, 0xa9, 0xbf, 0x40, 0xc6, 0xf3, 0x7d, 0x83, 0xf1, 0x8d, 0xf7, - 0xd5, 0x47, 0xf9, 0x15, 0x98, 0x1a, 0x5c, 0x1c, 0xe3, 0x59, 0xbf, 0xf9, 0xa8, 0xe7, 0x75, 0x26, - 0x5c, 0x1b, 0xe5, 0xed, 0x6e, 0x96, 0x0d, 0x17, 0xc6, 0x78, 0xda, 0xd7, 0x1f, 0x45, 0x13, 0x6d, - 0xb8, 0x2e, 0xca, 0x15, 0x80, 0x6e, 0x4d, 0x8a, 0xe7, 0x7a, 0x83, 0x71, 0x85, 0x40, 0xf8, 0x68, - 0xb0, 0x92, 0x14, 0x8f, 0xff, 0x36, 0x3f, 0x1a, 0x0c, 0x81, 0x8f, 0x06, 0xaf, 0x46, 0xf1, 0xe8, - 0x37, 0xf9, 0xd1, 0xe0, 0x10, 0xf9, 0x12, 0x64, 0xed, 0x8e, 0x65, 0xe1, 0xd8, 0x92, 0x0e, 0xff, - 0x23, 0x9b, 0xd2, 0xbf, 0x3d, 0x66, 0x60, 0x0e, 0x90, 0xcf, 0x41, 0x1a, 0xb5, 0x76, 0x91, 0x11, - 0x87, 0xfc, 0xf7, 0xc7, 0x3c, 0x9f, 0x60, 0x6d, 0xf9, 0x32, 0x00, 0x7d, 0x99, 0x26, 0xdf, 0x58, - 0x62, 0xb0, 0xff, 0xf1, 0x98, 0x7d, 0xbf, 0xef, 0x42, 0xba, 0x04, 0xf4, 0xaf, 0x01, 0x0e, 0x27, - 0x78, 0x18, 0x25, 0x20, 0x2f, 0xe0, 0x17, 0x61, 0xe4, 0xba, 0xe7, 0xd8, 0xbe, 0xd6, 0x8c, 0x43, - 0xbf, 0xc7, 0xd0, 0x5c, 0x1f, 0x3b, 0xac, 0xe5, 0xb8, 0xc8, 0xd7, 0x9a, 0x5e, 0x1c, 0xf6, 0x3f, - 0x19, 0x36, 0x00, 0x60, 0xb0, 0xae, 0x79, 0xfe, 0x30, 0xeb, 0xfe, 0x2f, 0x0e, 0xe6, 0x00, 0x6c, - 0x34, 0xfe, 0x7d, 0x03, 0xed, 0xc7, 0x61, 0xdf, 0xe7, 0x46, 0x33, 0x7d, 0xf9, 0x73, 0x90, 0xc3, - 0x3f, 0xe9, 0xdf, 0xb4, 0xc4, 0x80, 0xff, 0x9b, 0x81, 0xbb, 0x08, 0xfc, 0x64, 0xcf, 0x37, 0x7c, - 0x33, 0xde, 0xd9, 0xff, 0xc3, 0x76, 0x9a, 0xeb, 0xcb, 0x15, 0xc8, 0x7b, 0xbe, 0x61, 0x74, 0x58, - 0x47, 0x13, 0x03, 0xff, 0xe0, 0x71, 0xf0, 0x92, 0x1b, 0x60, 0x96, 0x4e, 0x0e, 0xbe, 0xaf, 0x83, - 0x9a, 0x53, 0x73, 0xe8, 0x4d, 0x1d, 0xbc, 0x97, 0x82, 0xe3, 0xe1, 0x33, 0xdd, 0x74, 0x9d, 0x4e, - 0x9b, 0xdd, 0xaf, 0x8d, 0xf7, 0x4d, 0x4c, 0x1f, 0xed, 0x86, 0xae, 0x6c, 0x03, 0x6c, 0xa0, 0x5b, - 0x1b, 0x4e, 0x0d, 0x83, 0xa5, 0x29, 0xc8, 0x10, 0x9b, 0x5f, 0x24, 0x9f, 0x67, 0x92, 0x0a, 0x1b, - 0x05, 0xf2, 0x33, 0xe4, 0x4f, 0x4c, 0x05, 0x26, 0x3f, 0x23, 0x95, 0x41, 0xa8, 0x90, 0x4b, 0xf4, - 0xfc, 0xe2, 0xe4, 0x42, 0xbf, 0x91, 0x15, 0x45, 0xa8, 0xc8, 0x85, 0x5f, 0xbe, 0x37, 0x2b, 0x7c, - 0xfd, 0xde, 0xac, 0xf0, 0xd6, 0xbd, 0x59, 0xa1, 0x7c, 0x0a, 0x84, 0x0a, 0xa6, 0xab, 0x10, 0x06, - 0xfe, 0x18, 0x3a, 0xea, 0x51, 0xfd, 0xbb, 0x04, 0x14, 0x36, 0x2d, 0xe3, 0x15, 0xd3, 0xdf, 0x3b, - 0xdc, 0xba, 0x97, 0x21, 0x43, 0x9e, 0xf7, 0x22, 0xb9, 0x38, 0x85, 0xc5, 0x67, 0x07, 0x98, 0x12, - 0x26, 0x5a, 0x20, 0xff, 0xbe, 0xa8, 0x30, 0xd4, 0x81, 0xab, 0xe3, 0xbc, 0x8b, 0xe4, 0x86, 0x75, - 0x58, 0xde, 0x45, 0xc6, 0xbb, 0x38, 0x5d, 0x87, 0x4c, 0x2d, 0xfa, 0x84, 0x83, 0xfc, 0xba, 0xc8, - 0xff, 0x32, 0x8a, 0x8e, 0x0e, 0xb2, 0x68, 0xfa, 0x02, 0x63, 0x5c, 0x1c, 0x8a, 0xb1, 0x8b, 0x5c, - 0x5c, 0x9a, 0xff, 0xc9, 0xfd, 0x99, 0x63, 0xff, 0x70, 0x7f, 0xe6, 0xd8, 0x3f, 0xde, 0x9f, 0x39, - 0xf6, 0xcf, 0xf7, 0x67, 0x84, 0xf7, 0xef, 0xcf, 0x08, 0xff, 0x77, 0x7f, 0x46, 0xb8, 0xfb, 0x60, - 0x46, 0xf8, 0xee, 0x83, 0x19, 0xe1, 0xfb, 0x0f, 0x66, 0x84, 0x1f, 0x3d, 0x98, 0x11, 0xfe, 0x3f, - 0x00, 0x00, 0xff, 0xff, 0xde, 0x48, 0x31, 0x4a, 0xea, 0x2f, 0x00, 0x00, + // 3756 bytes of a gzipped FileDescriptorSet + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x70, 0x1b, 0xe7, + 0x75, 0xd6, 0xe2, 0x46, 0xe0, 0x00, 0x04, 0x97, 0x4b, 0x9a, 0x82, 0xe8, 0x98, 0xa2, 0x10, 0x5f, + 0x68, 0xbb, 0xa1, 0x62, 0xca, 0x92, 0xe5, 0x55, 0x63, 0x0f, 0x08, 0x42, 0x0c, 0x54, 0x12, 0x40, + 0x16, 0x64, 0x2c, 0xa7, 0x0f, 0x3b, 0xcb, 0xc5, 0x0f, 0x70, 0xa5, 0xc5, 0x2e, 0xb2, 0xbb, 0x90, + 0x4c, 0x3f, 0xa9, 0xe3, 0xde, 0x32, 0x9d, 0xb6, 0xe9, 0x65, 0xa6, 0x89, 0xeb, 0xb8, 0x71, 0x66, + 0x5a, 0xa7, 0x49, 0x2f, 0x49, 0x2f, 0x69, 0xa6, 0x4f, 0x7d, 0x49, 0x9b, 0xe9, 0x43, 0xa7, 0x79, + 0xeb, 0x43, 0x1f, 0x22, 0xd7, 0x33, 0xbd, 0x39, 0x6d, 0xda, 0x78, 0xa6, 0x9d, 0xd1, 0x4b, 0xe6, + 0xbf, 0x2d, 0x76, 0x01, 0x90, 0xbb, 0xcc, 0x8c, 0x93, 0x17, 0x89, 0xff, 0xf9, 0xcf, 0xf7, 0xed, + 0xf9, 0xcf, 0x7f, 0xfe, 0x73, 0xce, 0xfe, 0x0b, 0xf8, 0x97, 0xcb, 0xb0, 0xda, 0xb3, 0xed, 0x9e, + 0x89, 0x2e, 0x0e, 0x1c, 0xdb, 0xb3, 0x0f, 0x86, 0xdd, 0x8b, 0x1d, 0xe4, 0xea, 0x8e, 0x31, 0xf0, + 0x6c, 0x67, 0x9d, 0xc8, 0xa4, 0x39, 0xaa, 0xb1, 0xce, 0x35, 0xca, 0xbb, 0x30, 0x7f, 0xdd, 0x30, + 0xd1, 0x96, 0xaf, 0xd8, 0x46, 0x9e, 0x74, 0x15, 0x52, 0x5d, 0xc3, 0x44, 0x25, 0x61, 0x35, 0xb9, + 0x96, 0xdf, 0x78, 0x74, 0x7d, 0x0c, 0xb4, 0x1e, 0x46, 0xb4, 0xb0, 0x58, 0x21, 0x88, 0xf2, 0xbb, + 0x29, 0x58, 0x98, 0x32, 0x2b, 0x49, 0x90, 0xb2, 0xb4, 0x3e, 0x66, 0x14, 0xd6, 0x72, 0x0a, 0xf9, + 0x5b, 0x2a, 0xc1, 0xcc, 0x40, 0xd3, 0x6f, 0x6b, 0x3d, 0x54, 0x4a, 0x10, 0x31, 0x1f, 0x4a, 0x2b, + 0x00, 0x1d, 0x34, 0x40, 0x56, 0x07, 0x59, 0xfa, 0x51, 0x29, 0xb9, 0x9a, 0x5c, 0xcb, 0x29, 0x01, + 0x89, 0xf4, 0x34, 0xcc, 0x0f, 0x86, 0x07, 0xa6, 0xa1, 0xab, 0x01, 0x35, 0x58, 0x4d, 0xae, 0xa5, + 0x15, 0x91, 0x4e, 0x6c, 0x8d, 0x94, 0x9f, 0x80, 0xb9, 0xbb, 0x48, 0xbb, 0x1d, 0x54, 0xcd, 0x13, + 0xd5, 0x22, 0x16, 0x07, 0x14, 0xab, 0x50, 0xe8, 0x23, 0xd7, 0xd5, 0x7a, 0x48, 0xf5, 0x8e, 0x06, + 0xa8, 0x94, 0x22, 0xab, 0x5f, 0x9d, 0x58, 0xfd, 0xf8, 0xca, 0xf3, 0x0c, 0xb5, 0x77, 0x34, 0x40, + 0x52, 0x05, 0x72, 0xc8, 0x1a, 0xf6, 0x29, 0x43, 0xfa, 0x18, 0xff, 0xd5, 0xac, 0x61, 0x7f, 0x9c, + 0x25, 0x8b, 0x61, 0x8c, 0x62, 0xc6, 0x45, 0xce, 0x1d, 0x43, 0x47, 0xa5, 0x0c, 0x21, 0x78, 0x62, + 0x82, 0xa0, 0x4d, 0xe7, 0xc7, 0x39, 0x38, 0x4e, 0xaa, 0x42, 0x0e, 0xbd, 0xe2, 0x21, 0xcb, 0x35, + 0x6c, 0xab, 0x34, 0x43, 0x48, 0x1e, 0x9b, 0xb2, 0x8b, 0xc8, 0xec, 0x8c, 0x53, 0x8c, 0x70, 0xd2, + 0x15, 0x98, 0xb1, 0x07, 0x9e, 0x61, 0x5b, 0x6e, 0x29, 0xbb, 0x2a, 0xac, 0xe5, 0x37, 0x3e, 0x34, + 0x35, 0x10, 0x9a, 0x54, 0x47, 0xe1, 0xca, 0x52, 0x1d, 0x44, 0xd7, 0x1e, 0x3a, 0x3a, 0x52, 0x75, + 0xbb, 0x83, 0x54, 0xc3, 0xea, 0xda, 0xa5, 0x1c, 0x21, 0x38, 0x3f, 0xb9, 0x10, 0xa2, 0x58, 0xb5, + 0x3b, 0xa8, 0x6e, 0x75, 0x6d, 0xa5, 0xe8, 0x86, 0xc6, 0xd2, 0x12, 0x64, 0xdc, 0x23, 0xcb, 0xd3, + 0x5e, 0x29, 0x15, 0x48, 0x84, 0xb0, 0x51, 0xf9, 0xff, 0xd2, 0x30, 0x17, 0x27, 0xc4, 0xae, 0x41, + 0xba, 0x8b, 0x57, 0x59, 0x4a, 0x9c, 0xc6, 0x07, 0x14, 0x13, 0x76, 0x62, 0xe6, 0x47, 0x74, 0x62, + 0x05, 0xf2, 0x16, 0x72, 0x3d, 0xd4, 0xa1, 0x11, 0x91, 0x8c, 0x19, 0x53, 0x40, 0x41, 0x93, 0x21, + 0x95, 0xfa, 0x91, 0x42, 0xea, 0x26, 0xcc, 0xf9, 0x26, 0xa9, 0x8e, 0x66, 0xf5, 0x78, 0x6c, 0x5e, + 0x8c, 0xb2, 0x64, 0xbd, 0xc6, 0x71, 0x0a, 0x86, 0x29, 0x45, 0x14, 0x1a, 0x4b, 0x5b, 0x00, 0xb6, + 0x85, 0xec, 0xae, 0xda, 0x41, 0xba, 0x59, 0xca, 0x1e, 0xe3, 0xa5, 0x26, 0x56, 0x99, 0xf0, 0x92, + 0x4d, 0xa5, 0xba, 0x29, 0x3d, 0x3f, 0x0a, 0xb5, 0x99, 0x63, 0x22, 0x65, 0x97, 0x1e, 0xb2, 0x89, + 0x68, 0xdb, 0x87, 0xa2, 0x83, 0x70, 0xdc, 0xa3, 0x0e, 0x5b, 0x59, 0x8e, 0x18, 0xb1, 0x1e, 0xb9, + 0x32, 0x85, 0xc1, 0xe8, 0xc2, 0x66, 0x9d, 0xe0, 0x50, 0xfa, 0x30, 0xf8, 0x02, 0x95, 0x84, 0x15, + 0x90, 0x2c, 0x54, 0xe0, 0xc2, 0x86, 0xd6, 0x47, 0xcb, 0x57, 0xa1, 0x18, 0x76, 0x8f, 0xb4, 0x08, + 0x69, 0xd7, 0xd3, 0x1c, 0x8f, 0x44, 0x61, 0x5a, 0xa1, 0x03, 0x49, 0x84, 0x24, 0xb2, 0x3a, 0x24, + 0xcb, 0xa5, 0x15, 0xfc, 0xe7, 0xf2, 0x73, 0x30, 0x1b, 0x7a, 0x7c, 0x5c, 0x60, 0xf9, 0x73, 0x19, + 0x58, 0x9c, 0x16, 0x73, 0x53, 0xc3, 0x7f, 0x09, 0x32, 0xd6, 0xb0, 0x7f, 0x80, 0x9c, 0x52, 0x92, + 0x30, 0xb0, 0x91, 0x54, 0x81, 0xb4, 0xa9, 0x1d, 0x20, 0xb3, 0x94, 0x5a, 0x15, 0xd6, 0x8a, 0x1b, + 0x4f, 0xc7, 0x8a, 0xea, 0xf5, 0x1d, 0x0c, 0x51, 0x28, 0x52, 0x7a, 0x01, 0x52, 0x2c, 0xc5, 0x61, + 0x86, 0xa7, 0xe2, 0x31, 0xe0, 0x58, 0x54, 0x08, 0x4e, 0x7a, 0x18, 0x72, 0xf8, 0x7f, 0xea, 0xdb, + 0x0c, 0xb1, 0x39, 0x8b, 0x05, 0xd8, 0xaf, 0xd2, 0x32, 0x64, 0x49, 0x98, 0x75, 0x10, 0x2f, 0x0d, + 0xfe, 0x18, 0x6f, 0x4c, 0x07, 0x75, 0xb5, 0xa1, 0xe9, 0xa9, 0x77, 0x34, 0x73, 0x88, 0x48, 0xc0, + 0xe4, 0x94, 0x02, 0x13, 0x7e, 0x12, 0xcb, 0xa4, 0xf3, 0x90, 0xa7, 0x51, 0x69, 0x58, 0x1d, 0xf4, + 0x0a, 0xc9, 0x3e, 0x69, 0x85, 0x06, 0x6a, 0x1d, 0x4b, 0xf0, 0xe3, 0x6f, 0xb9, 0xb6, 0xc5, 0xb7, + 0x96, 0x3c, 0x02, 0x0b, 0xc8, 0xe3, 0x9f, 0x1b, 0x4f, 0x7c, 0x8f, 0x4c, 0x5f, 0xde, 0x78, 0x2c, + 0x96, 0xbf, 0x91, 0x80, 0x14, 0x39, 0x6f, 0x73, 0x90, 0xdf, 0x7b, 0xb9, 0x55, 0x53, 0xb7, 0x9a, + 0xfb, 0x9b, 0x3b, 0x35, 0x51, 0x90, 0x8a, 0x00, 0x44, 0x70, 0x7d, 0xa7, 0x59, 0xd9, 0x13, 0x13, + 0xfe, 0xb8, 0xde, 0xd8, 0xbb, 0xf2, 0xac, 0x98, 0xf4, 0x01, 0xfb, 0x54, 0x90, 0x0a, 0x2a, 0x5c, + 0xda, 0x10, 0xd3, 0x92, 0x08, 0x05, 0x4a, 0x50, 0xbf, 0x59, 0xdb, 0xba, 0xf2, 0xac, 0x98, 0x09, + 0x4b, 0x2e, 0x6d, 0x88, 0x33, 0xd2, 0x2c, 0xe4, 0x88, 0x64, 0xb3, 0xd9, 0xdc, 0x11, 0xb3, 0x3e, + 0x67, 0x7b, 0x4f, 0xa9, 0x37, 0xb6, 0xc5, 0x9c, 0xcf, 0xb9, 0xad, 0x34, 0xf7, 0x5b, 0x22, 0xf8, + 0x0c, 0xbb, 0xb5, 0x76, 0xbb, 0xb2, 0x5d, 0x13, 0xf3, 0xbe, 0xc6, 0xe6, 0xcb, 0x7b, 0xb5, 0xb6, + 0x58, 0x08, 0x99, 0x75, 0x69, 0x43, 0x9c, 0xf5, 0x1f, 0x51, 0x6b, 0xec, 0xef, 0x8a, 0x45, 0x69, + 0x1e, 0x66, 0xe9, 0x23, 0xb8, 0x11, 0x73, 0x63, 0xa2, 0x2b, 0xcf, 0x8a, 0xe2, 0xc8, 0x10, 0xca, + 0x32, 0x1f, 0x12, 0x5c, 0x79, 0x56, 0x94, 0xca, 0x55, 0x48, 0x93, 0xe8, 0x92, 0x24, 0x28, 0xee, + 0x54, 0x36, 0x6b, 0x3b, 0x6a, 0xb3, 0xb5, 0x57, 0x6f, 0x36, 0x2a, 0x3b, 0xa2, 0x30, 0x92, 0x29, + 0xb5, 0x4f, 0xec, 0xd7, 0x95, 0xda, 0x96, 0x98, 0x08, 0xca, 0x5a, 0xb5, 0xca, 0x5e, 0x6d, 0x4b, + 0x4c, 0x96, 0x75, 0x58, 0x9c, 0x96, 0x67, 0xa6, 0x9e, 0x8c, 0xc0, 0x16, 0x27, 0x8e, 0xd9, 0x62, + 0xc2, 0x35, 0xb1, 0xc5, 0x5f, 0x12, 0x60, 0x61, 0x4a, 0xae, 0x9d, 0xfa, 0x90, 0x17, 0x21, 0x4d, + 0x43, 0x94, 0x56, 0x9f, 0x27, 0xa7, 0x26, 0x6d, 0x12, 0xb0, 0x13, 0x15, 0x88, 0xe0, 0x82, 0x15, + 0x38, 0x79, 0x4c, 0x05, 0xc6, 0x14, 0x13, 0x46, 0xbe, 0x26, 0x40, 0xe9, 0x38, 0xee, 0x88, 0x44, + 0x91, 0x08, 0x25, 0x8a, 0x6b, 0xe3, 0x06, 0x5c, 0x38, 0x7e, 0x0d, 0x13, 0x56, 0xbc, 0x2d, 0xc0, + 0xd2, 0xf4, 0x46, 0x65, 0xaa, 0x0d, 0x2f, 0x40, 0xa6, 0x8f, 0xbc, 0x43, 0x9b, 0x17, 0xeb, 0xc7, + 0xa7, 0x94, 0x00, 0x3c, 0x3d, 0xee, 0x2b, 0x86, 0x0a, 0xd6, 0x90, 0xe4, 0x71, 0xdd, 0x06, 0xb5, + 0x66, 0xc2, 0xd2, 0xcf, 0x24, 0xe0, 0xa1, 0xa9, 0xe4, 0x53, 0x0d, 0x7d, 0x04, 0xc0, 0xb0, 0x06, + 0x43, 0x8f, 0x16, 0x64, 0x9a, 0x9f, 0x72, 0x44, 0x42, 0xce, 0x3e, 0xce, 0x3d, 0x43, 0xcf, 0x9f, + 0x4f, 0x92, 0x79, 0xa0, 0x22, 0xa2, 0x70, 0x75, 0x64, 0x68, 0x8a, 0x18, 0xba, 0x72, 0xcc, 0x4a, + 0x27, 0x6a, 0xdd, 0x47, 0x41, 0xd4, 0x4d, 0x03, 0x59, 0x9e, 0xea, 0x7a, 0x0e, 0xd2, 0xfa, 0x86, + 0xd5, 0x23, 0x09, 0x38, 0x2b, 0xa7, 0xbb, 0x9a, 0xe9, 0x22, 0x65, 0x8e, 0x4e, 0xb7, 0xf9, 0x2c, + 0x46, 0x90, 0x2a, 0xe3, 0x04, 0x10, 0x99, 0x10, 0x82, 0x4e, 0xfb, 0x88, 0xf2, 0x57, 0x67, 0x20, + 0x1f, 0x68, 0xeb, 0xa4, 0x0b, 0x50, 0xb8, 0xa5, 0xdd, 0xd1, 0x54, 0xde, 0xaa, 0x53, 0x4f, 0xe4, + 0xb1, 0xac, 0xc5, 0xda, 0xf5, 0x8f, 0xc2, 0x22, 0x51, 0xb1, 0x87, 0x1e, 0x72, 0x54, 0xdd, 0xd4, + 0x5c, 0x97, 0x38, 0x2d, 0x4b, 0x54, 0x25, 0x3c, 0xd7, 0xc4, 0x53, 0x55, 0x3e, 0x23, 0x5d, 0x86, + 0x05, 0x82, 0xe8, 0x0f, 0x4d, 0xcf, 0x18, 0x98, 0x48, 0xc5, 0x2f, 0x0f, 0x2e, 0x49, 0xc4, 0xbe, + 0x65, 0xf3, 0x58, 0x63, 0x97, 0x29, 0x60, 0x8b, 0x5c, 0x69, 0x0b, 0x1e, 0x21, 0xb0, 0x1e, 0xb2, + 0x90, 0xa3, 0x79, 0x48, 0x45, 0x9f, 0x1e, 0x6a, 0xa6, 0xab, 0x6a, 0x56, 0x47, 0x3d, 0xd4, 0xdc, + 0xc3, 0xd2, 0x22, 0x26, 0xd8, 0x4c, 0x94, 0x04, 0xe5, 0x1c, 0x56, 0xdc, 0x66, 0x7a, 0x35, 0xa2, + 0x56, 0xb1, 0x3a, 0x1f, 0xd7, 0xdc, 0x43, 0x49, 0x86, 0x25, 0xc2, 0xe2, 0x7a, 0x8e, 0x61, 0xf5, + 0x54, 0xfd, 0x10, 0xe9, 0xb7, 0xd5, 0xa1, 0xd7, 0xbd, 0x5a, 0x7a, 0x38, 0xf8, 0x7c, 0x62, 0x61, + 0x9b, 0xe8, 0x54, 0xb1, 0xca, 0xbe, 0xd7, 0xbd, 0x2a, 0xb5, 0xa1, 0x80, 0x37, 0xa3, 0x6f, 0xbc, + 0x8a, 0xd4, 0xae, 0xed, 0x90, 0xca, 0x52, 0x9c, 0x72, 0xb2, 0x03, 0x1e, 0x5c, 0x6f, 0x32, 0xc0, + 0xae, 0xdd, 0x41, 0x72, 0xba, 0xdd, 0xaa, 0xd5, 0xb6, 0x94, 0x3c, 0x67, 0xb9, 0x6e, 0x3b, 0x38, + 0xa0, 0x7a, 0xb6, 0xef, 0xe0, 0x3c, 0x0d, 0xa8, 0x9e, 0xcd, 0xdd, 0x7b, 0x19, 0x16, 0x74, 0x9d, + 0xae, 0xd9, 0xd0, 0x55, 0xd6, 0xe2, 0xbb, 0x25, 0x31, 0xe4, 0x2c, 0x5d, 0xdf, 0xa6, 0x0a, 0x2c, + 0xc6, 0x5d, 0xe9, 0x79, 0x78, 0x68, 0xe4, 0xac, 0x20, 0x70, 0x7e, 0x62, 0x95, 0xe3, 0xd0, 0xcb, + 0xb0, 0x30, 0x38, 0x9a, 0x04, 0x4a, 0xa1, 0x27, 0x0e, 0x8e, 0xc6, 0x61, 0x8f, 0x91, 0xd7, 0x36, + 0x07, 0xe9, 0x9a, 0x87, 0x3a, 0xa5, 0xb3, 0x41, 0xed, 0xc0, 0x84, 0x74, 0x11, 0x44, 0x5d, 0x57, + 0x91, 0xa5, 0x1d, 0x98, 0x48, 0xd5, 0x1c, 0x64, 0x69, 0x6e, 0xe9, 0x7c, 0x50, 0xb9, 0xa8, 0xeb, + 0x35, 0x32, 0x5b, 0x21, 0x93, 0xd2, 0x53, 0x30, 0x6f, 0x1f, 0xdc, 0xd2, 0x69, 0x64, 0xa9, 0x03, + 0x07, 0x75, 0x8d, 0x57, 0x4a, 0x8f, 0x12, 0x37, 0xcd, 0xe1, 0x09, 0x12, 0x57, 0x2d, 0x22, 0x96, + 0x9e, 0x04, 0x51, 0x77, 0x0f, 0x35, 0x67, 0x40, 0x4a, 0xbb, 0x3b, 0xd0, 0x74, 0x54, 0x7a, 0x8c, + 0xaa, 0x52, 0x79, 0x83, 0x8b, 0x71, 0x64, 0xbb, 0x77, 0x8d, 0xae, 0xc7, 0x19, 0x9f, 0xa0, 0x91, + 0x4d, 0x64, 0x8c, 0xed, 0x26, 0x2c, 0x0e, 0x2d, 0xc3, 0xf2, 0x90, 0x33, 0x70, 0x10, 0x6e, 0xe2, + 0xe9, 0x49, 0x2c, 0xfd, 0xeb, 0xcc, 0x31, 0x6d, 0xf8, 0x7e, 0x50, 0x9b, 0x06, 0x80, 0xb2, 0x30, + 0x9c, 0x14, 0x96, 0x65, 0x28, 0x04, 0xe3, 0x42, 0xca, 0x01, 0x8d, 0x0c, 0x51, 0xc0, 0x35, 0xb6, + 0xda, 0xdc, 0xc2, 0xd5, 0xf1, 0x53, 0x35, 0x31, 0x81, 0xab, 0xf4, 0x4e, 0x7d, 0xaf, 0xa6, 0x2a, + 0xfb, 0x8d, 0xbd, 0xfa, 0x6e, 0x4d, 0x4c, 0x3e, 0x95, 0xcb, 0xfe, 0xdb, 0x8c, 0x78, 0xef, 0xde, + 0xbd, 0x7b, 0x89, 0xf2, 0xb7, 0x12, 0x50, 0x0c, 0x77, 0xc6, 0xd2, 0x4f, 0xc3, 0x59, 0xfe, 0x1a, + 0xeb, 0x22, 0x4f, 0xbd, 0x6b, 0x38, 0x24, 0x54, 0xfb, 0x1a, 0xed, 0x2d, 0x7d, 0x2f, 0x2f, 0x32, + 0xad, 0x36, 0xf2, 0x5e, 0x32, 0x1c, 0x1c, 0x88, 0x7d, 0xcd, 0x93, 0x76, 0xe0, 0xbc, 0x65, 0xab, + 0xae, 0xa7, 0x59, 0x1d, 0xcd, 0xe9, 0xa8, 0xa3, 0x0b, 0x04, 0x55, 0xd3, 0x75, 0xe4, 0xba, 0x36, + 0x2d, 0x11, 0x3e, 0xcb, 0x87, 0x2c, 0xbb, 0xcd, 0x94, 0x47, 0xb9, 0xb3, 0xc2, 0x54, 0xc7, 0x22, + 0x22, 0x79, 0x5c, 0x44, 0x3c, 0x0c, 0xb9, 0xbe, 0x36, 0x50, 0x91, 0xe5, 0x39, 0x47, 0xa4, 0x9f, + 0xcb, 0x2a, 0xd9, 0xbe, 0x36, 0xa8, 0xe1, 0xf1, 0x07, 0xb7, 0x07, 0x41, 0x3f, 0xfe, 0x73, 0x12, + 0x0a, 0xc1, 0x9e, 0x0e, 0xb7, 0xc8, 0x3a, 0xc9, 0xdf, 0x02, 0x39, 0xe1, 0x1f, 0x3e, 0xb1, 0x03, + 0x5c, 0xaf, 0xe2, 0xc4, 0x2e, 0x67, 0x68, 0xa7, 0xa5, 0x50, 0x24, 0x2e, 0xaa, 0xf8, 0x4c, 0x23, + 0xda, 0xbf, 0x67, 0x15, 0x36, 0x92, 0xb6, 0x21, 0x73, 0xcb, 0x25, 0xdc, 0x19, 0xc2, 0xfd, 0xe8, + 0xc9, 0xdc, 0x37, 0xda, 0x84, 0x3c, 0x77, 0xa3, 0xad, 0x36, 0x9a, 0xca, 0x6e, 0x65, 0x47, 0x61, + 0x70, 0xe9, 0x1c, 0xa4, 0x4c, 0xed, 0xd5, 0xa3, 0x70, 0x09, 0x20, 0xa2, 0xb8, 0x8e, 0x3f, 0x07, + 0xa9, 0xbb, 0x48, 0xbb, 0x1d, 0x4e, 0xbc, 0x44, 0xf4, 0x01, 0x86, 0xfe, 0x45, 0x48, 0x13, 0x7f, + 0x49, 0x00, 0xcc, 0x63, 0xe2, 0x19, 0x29, 0x0b, 0xa9, 0x6a, 0x53, 0xc1, 0xe1, 0x2f, 0x42, 0x81, + 0x4a, 0xd5, 0x56, 0xbd, 0x56, 0xad, 0x89, 0x89, 0xf2, 0x65, 0xc8, 0x50, 0x27, 0xe0, 0xa3, 0xe1, + 0xbb, 0x41, 0x3c, 0xc3, 0x86, 0x8c, 0x43, 0xe0, 0xb3, 0xfb, 0xbb, 0x9b, 0x35, 0x45, 0x4c, 0x04, + 0xb7, 0xd7, 0x85, 0x42, 0xb0, 0x9d, 0xfb, 0xf1, 0xc4, 0xd4, 0x5f, 0x0b, 0x90, 0x0f, 0xb4, 0x67, + 0xb8, 0x31, 0xd0, 0x4c, 0xd3, 0xbe, 0xab, 0x6a, 0xa6, 0xa1, 0xb9, 0x2c, 0x28, 0x80, 0x88, 0x2a, + 0x58, 0x12, 0x77, 0xd3, 0x7e, 0x2c, 0xc6, 0xbf, 0x29, 0x80, 0x38, 0xde, 0xda, 0x8d, 0x19, 0x28, + 0xfc, 0x44, 0x0d, 0x7c, 0x43, 0x80, 0x62, 0xb8, 0x9f, 0x1b, 0x33, 0xef, 0xc2, 0x4f, 0xd4, 0xbc, + 0xef, 0x26, 0x60, 0x36, 0xd4, 0xc5, 0xc5, 0xb5, 0xee, 0xd3, 0x30, 0x6f, 0x74, 0x50, 0x7f, 0x60, + 0x7b, 0xc8, 0xd2, 0x8f, 0x54, 0x13, 0xdd, 0x41, 0x66, 0xa9, 0x4c, 0x12, 0xc5, 0xc5, 0x93, 0xfb, + 0xc4, 0xf5, 0xfa, 0x08, 0xb7, 0x83, 0x61, 0xf2, 0x42, 0x7d, 0xab, 0xb6, 0xdb, 0x6a, 0xee, 0xd5, + 0x1a, 0xd5, 0x97, 0xd5, 0xfd, 0xc6, 0xcf, 0x34, 0x9a, 0x2f, 0x35, 0x14, 0xd1, 0x18, 0x53, 0xfb, + 0x00, 0x8f, 0x7a, 0x0b, 0xc4, 0x71, 0xa3, 0xa4, 0xb3, 0x30, 0xcd, 0x2c, 0xf1, 0x8c, 0xb4, 0x00, + 0x73, 0x8d, 0xa6, 0xda, 0xae, 0x6f, 0xd5, 0xd4, 0xda, 0xf5, 0xeb, 0xb5, 0xea, 0x5e, 0x9b, 0xbe, + 0x38, 0xfb, 0xda, 0x7b, 0xe1, 0x43, 0xfd, 0x7a, 0x12, 0x16, 0xa6, 0x58, 0x22, 0x55, 0x58, 0xcf, + 0x4e, 0x5f, 0x23, 0x3e, 0x12, 0xc7, 0xfa, 0x75, 0xdc, 0x15, 0xb4, 0x34, 0xc7, 0x63, 0x2d, 0xfe, + 0x93, 0x80, 0xbd, 0x64, 0x79, 0x46, 0xd7, 0x40, 0x0e, 0xbb, 0x67, 0xa0, 0x8d, 0xfc, 0xdc, 0x48, + 0x4e, 0xaf, 0x1a, 0x7e, 0x0a, 0xa4, 0x81, 0xed, 0x1a, 0x9e, 0x71, 0x07, 0xa9, 0x86, 0xc5, 0x2f, + 0x25, 0x70, 0x63, 0x9f, 0x52, 0x44, 0x3e, 0x53, 0xb7, 0x3c, 0x5f, 0xdb, 0x42, 0x3d, 0x6d, 0x4c, + 0x1b, 0x27, 0xf0, 0xa4, 0x22, 0xf2, 0x19, 0x5f, 0xfb, 0x02, 0x14, 0x3a, 0xf6, 0x10, 0xb7, 0x49, + 0x54, 0x0f, 0xd7, 0x0b, 0x41, 0xc9, 0x53, 0x99, 0xaf, 0xc2, 0xfa, 0xd8, 0xd1, 0x6d, 0x48, 0x41, + 0xc9, 0x53, 0x19, 0x55, 0x79, 0x02, 0xe6, 0xb4, 0x5e, 0xcf, 0xc1, 0xe4, 0x9c, 0x88, 0x76, 0xe6, + 0x45, 0x5f, 0x4c, 0x14, 0x97, 0x6f, 0x40, 0x96, 0xfb, 0x01, 0x97, 0x64, 0xec, 0x09, 0x75, 0x40, + 0xef, 0xa4, 0x12, 0x6b, 0x39, 0x25, 0x6b, 0xf1, 0xc9, 0x0b, 0x50, 0x30, 0x5c, 0x75, 0x74, 0x39, + 0x9a, 0x58, 0x4d, 0xac, 0x65, 0x95, 0xbc, 0xe1, 0xfa, 0xb7, 0x61, 0xe5, 0xb7, 0x13, 0x50, 0x0c, + 0x5f, 0xee, 0x4a, 0x5b, 0x90, 0x35, 0x6d, 0x5d, 0x23, 0xa1, 0x45, 0xbf, 0x2c, 0xac, 0x45, 0xdc, + 0x07, 0xaf, 0xef, 0x30, 0x7d, 0xc5, 0x47, 0x2e, 0xff, 0x83, 0x00, 0x59, 0x2e, 0x96, 0x96, 0x20, + 0x35, 0xd0, 0xbc, 0x43, 0x42, 0x97, 0xde, 0x4c, 0x88, 0x82, 0x42, 0xc6, 0x58, 0xee, 0x0e, 0x34, + 0x8b, 0x84, 0x00, 0x93, 0xe3, 0x31, 0xde, 0x57, 0x13, 0x69, 0x1d, 0xd2, 0xf6, 0xdb, 0xfd, 0x3e, + 0xb2, 0x3c, 0x97, 0xef, 0x2b, 0x93, 0x57, 0x99, 0x58, 0x7a, 0x1a, 0xe6, 0x3d, 0x47, 0x33, 0xcc, + 0x90, 0x6e, 0x8a, 0xe8, 0x8a, 0x7c, 0xc2, 0x57, 0x96, 0xe1, 0x1c, 0xe7, 0xed, 0x20, 0x4f, 0xd3, + 0x0f, 0x51, 0x67, 0x04, 0xca, 0x90, 0x9b, 0xc3, 0xb3, 0x4c, 0x61, 0x8b, 0xcd, 0x73, 0x6c, 0xf9, + 0x3b, 0x02, 0xcc, 0xf3, 0x17, 0x95, 0x8e, 0xef, 0xac, 0x5d, 0x00, 0xcd, 0xb2, 0x6c, 0x2f, 0xe8, + 0xae, 0xc9, 0x50, 0x9e, 0xc0, 0xad, 0x57, 0x7c, 0x90, 0x12, 0x20, 0x58, 0xee, 0x03, 0x8c, 0x66, + 0x8e, 0x75, 0xdb, 0x79, 0xc8, 0xb3, 0x9b, 0x7b, 0xf2, 0xf9, 0x87, 0xbe, 0xda, 0x02, 0x15, 0xe1, + 0x37, 0x1a, 0x69, 0x11, 0xd2, 0x07, 0xa8, 0x67, 0x58, 0xec, 0x3e, 0x91, 0x0e, 0xf8, 0x2d, 0x65, + 0xca, 0xbf, 0xa5, 0xdc, 0xbc, 0x09, 0x0b, 0xba, 0xdd, 0x1f, 0x37, 0x77, 0x53, 0x1c, 0x7b, 0xbd, + 0x76, 0x3f, 0x2e, 0x7c, 0x0a, 0x46, 0x2d, 0xe6, 0x97, 0x12, 0xc9, 0xed, 0xd6, 0xe6, 0x57, 0x12, + 0xcb, 0xdb, 0x14, 0xd7, 0xe2, 0xcb, 0x54, 0x50, 0xd7, 0x44, 0x3a, 0x36, 0x1d, 0x7e, 0xf0, 0x38, + 0x7c, 0xa4, 0x67, 0x78, 0x87, 0xc3, 0x83, 0x75, 0xdd, 0xee, 0x5f, 0xec, 0xd9, 0x3d, 0x7b, 0xf4, + 0xb9, 0x0b, 0x8f, 0xc8, 0x80, 0xfc, 0xc5, 0x3e, 0x79, 0xe5, 0x7c, 0xe9, 0x72, 0xe4, 0xf7, 0x31, + 0xb9, 0x01, 0x0b, 0x4c, 0x59, 0x25, 0x77, 0xee, 0xf4, 0xd5, 0x40, 0x3a, 0xf1, 0xde, 0xa5, 0xf4, + 0xf5, 0x77, 0x49, 0xad, 0x56, 0xe6, 0x19, 0x14, 0xcf, 0xd1, 0x17, 0x08, 0x59, 0x81, 0x87, 0x42, + 0x7c, 0xf4, 0x5c, 0x22, 0x27, 0x82, 0xf1, 0x5b, 0x8c, 0x71, 0x21, 0xc0, 0xd8, 0x66, 0x50, 0xb9, + 0x0a, 0xb3, 0xa7, 0xe1, 0xfa, 0x5b, 0xc6, 0x55, 0x40, 0x41, 0x92, 0x6d, 0x98, 0x23, 0x24, 0xfa, + 0xd0, 0xf5, 0xec, 0x3e, 0x49, 0x7a, 0x27, 0xd3, 0xfc, 0xdd, 0xbb, 0xf4, 0xa0, 0x14, 0x31, 0xac, + 0xea, 0xa3, 0x64, 0x19, 0xc8, 0x67, 0x86, 0x0e, 0xd2, 0xcd, 0x08, 0x86, 0x6f, 0x33, 0x43, 0x7c, + 0x7d, 0xf9, 0x93, 0xb0, 0x88, 0xff, 0x26, 0x39, 0x29, 0x68, 0x49, 0xf4, 0x2d, 0x53, 0xe9, 0x3b, + 0xaf, 0xd1, 0xb3, 0xb8, 0xe0, 0x13, 0x04, 0x6c, 0x0a, 0xec, 0x62, 0x0f, 0x79, 0x1e, 0x72, 0x5c, + 0x55, 0x33, 0xa7, 0x99, 0x17, 0x78, 0x4d, 0x2f, 0x7d, 0xfe, 0xbd, 0xf0, 0x2e, 0x6e, 0x53, 0x64, + 0xc5, 0x34, 0xe5, 0x7d, 0x38, 0x3b, 0x25, 0x2a, 0x62, 0x70, 0xbe, 0xce, 0x38, 0x17, 0x27, 0x22, + 0x03, 0xd3, 0xb6, 0x80, 0xcb, 0xfd, 0xbd, 0x8c, 0xc1, 0xf9, 0xbb, 0x8c, 0x53, 0x62, 0x58, 0xbe, + 0xa5, 0x98, 0xf1, 0x06, 0xcc, 0xdf, 0x41, 0xce, 0x81, 0xed, 0xb2, 0xab, 0x91, 0x18, 0x74, 0x6f, + 0x30, 0xba, 0x39, 0x06, 0x24, 0x77, 0x25, 0x98, 0xeb, 0x79, 0xc8, 0x76, 0x35, 0x1d, 0xc5, 0xa0, + 0xf8, 0x02, 0xa3, 0x98, 0xc1, 0xfa, 0x18, 0x5a, 0x81, 0x42, 0xcf, 0x66, 0x65, 0x29, 0x1a, 0xfe, + 0x26, 0x83, 0xe7, 0x39, 0x86, 0x51, 0x0c, 0xec, 0xc1, 0xd0, 0xc4, 0x35, 0x2b, 0x9a, 0xe2, 0xf7, + 0x38, 0x05, 0xc7, 0x30, 0x8a, 0x53, 0xb8, 0xf5, 0x8b, 0x9c, 0xc2, 0x0d, 0xf8, 0xf3, 0x45, 0xc8, + 0xdb, 0x96, 0x79, 0x64, 0x5b, 0x71, 0x8c, 0x78, 0x8b, 0x31, 0x00, 0x83, 0x60, 0x82, 0x6b, 0x90, + 0x8b, 0xbb, 0x11, 0xbf, 0xff, 0x1e, 0x3f, 0x1e, 0x7c, 0x07, 0xb6, 0x61, 0x8e, 0x27, 0x28, 0xc3, + 0xb6, 0x62, 0x50, 0xfc, 0x01, 0xa3, 0x28, 0x06, 0x60, 0x6c, 0x19, 0x1e, 0x72, 0xbd, 0x1e, 0x8a, + 0x43, 0xf2, 0x36, 0x5f, 0x06, 0x83, 0x30, 0x57, 0x1e, 0x20, 0x4b, 0x3f, 0x8c, 0xc7, 0xf0, 0x65, + 0xee, 0x4a, 0x8e, 0xc1, 0x14, 0x55, 0x98, 0xed, 0x6b, 0x8e, 0x7b, 0xa8, 0x99, 0xb1, 0xb6, 0xe3, + 0x0f, 0x19, 0x47, 0xc1, 0x07, 0x31, 0x8f, 0x0c, 0xad, 0xd3, 0xd0, 0x7c, 0x85, 0x7b, 0x24, 0x00, + 0x63, 0x47, 0xcf, 0xf5, 0xc8, 0x05, 0xd4, 0x69, 0xd8, 0xbe, 0xca, 0x8f, 0x1e, 0xc5, 0xee, 0x06, + 0x19, 0xaf, 0x41, 0xce, 0x35, 0x5e, 0x8d, 0x45, 0xf3, 0x47, 0x7c, 0xa7, 0x09, 0x00, 0x83, 0x5f, + 0x86, 0x73, 0x53, 0xcb, 0x44, 0x0c, 0xb2, 0x3f, 0x66, 0x64, 0x4b, 0x53, 0x4a, 0x05, 0x4b, 0x09, + 0xa7, 0xa5, 0xfc, 0x13, 0x9e, 0x12, 0xd0, 0x18, 0x57, 0x0b, 0xbf, 0x28, 0xb8, 0x5a, 0xf7, 0x74, + 0x5e, 0xfb, 0x53, 0xee, 0x35, 0x8a, 0x0d, 0x79, 0x6d, 0x0f, 0x96, 0x18, 0xe3, 0xe9, 0xf6, 0xf5, + 0x6b, 0x3c, 0xb1, 0x52, 0xf4, 0x7e, 0x78, 0x77, 0x7f, 0x16, 0x96, 0x7d, 0x77, 0xf2, 0x8e, 0xd4, + 0x55, 0xfb, 0xda, 0x20, 0x06, 0xf3, 0xd7, 0x19, 0x33, 0xcf, 0xf8, 0x7e, 0x4b, 0xeb, 0xee, 0x6a, + 0x03, 0x4c, 0x7e, 0x13, 0x4a, 0x9c, 0x7c, 0x68, 0x39, 0x48, 0xb7, 0x7b, 0x96, 0xf1, 0x2a, 0xea, + 0xc4, 0xa0, 0xfe, 0xb3, 0xb1, 0xad, 0xda, 0x0f, 0xc0, 0x31, 0x73, 0x1d, 0x44, 0xbf, 0x57, 0x51, + 0x8d, 0xfe, 0xc0, 0x76, 0xbc, 0x08, 0xc6, 0x3f, 0xe7, 0x3b, 0xe5, 0xe3, 0xea, 0x04, 0x26, 0xd7, + 0xa0, 0x48, 0x86, 0x71, 0x43, 0xf2, 0x2f, 0x18, 0xd1, 0xec, 0x08, 0xc5, 0x12, 0x87, 0x6e, 0xf7, + 0x07, 0x9a, 0x13, 0x27, 0xff, 0xfd, 0x25, 0x4f, 0x1c, 0x0c, 0xc2, 0x12, 0x87, 0x77, 0x34, 0x40, + 0xb8, 0xda, 0xc7, 0x60, 0xf8, 0x06, 0x4f, 0x1c, 0x1c, 0xc3, 0x28, 0x78, 0xc3, 0x10, 0x83, 0xe2, + 0xaf, 0x38, 0x05, 0xc7, 0x60, 0x8a, 0x4f, 0x8c, 0x0a, 0xad, 0x83, 0x7a, 0x86, 0xeb, 0x39, 0xb4, + 0x0f, 0x3e, 0x99, 0xea, 0x9b, 0xef, 0x85, 0x9b, 0x30, 0x25, 0x00, 0x95, 0x6f, 0xc0, 0xdc, 0x58, + 0x8b, 0x21, 0x45, 0xfd, 0x66, 0xa1, 0xf4, 0x73, 0xef, 0xb3, 0x64, 0x14, 0xee, 0x30, 0xe4, 0x1d, + 0xbc, 0xef, 0xe1, 0x3e, 0x20, 0x9a, 0xec, 0xb5, 0xf7, 0xfd, 0xad, 0x0f, 0xb5, 0x01, 0xf2, 0x75, + 0x98, 0x0d, 0xf5, 0x00, 0xd1, 0x54, 0x3f, 0xcf, 0xa8, 0x0a, 0xc1, 0x16, 0x40, 0xbe, 0x0c, 0x29, + 0x5c, 0xcf, 0xa3, 0xe1, 0xbf, 0xc0, 0xe0, 0x44, 0x5d, 0xfe, 0x18, 0x64, 0x79, 0x1d, 0x8f, 0x86, + 0xfe, 0x22, 0x83, 0xfa, 0x10, 0x0c, 0xe7, 0x35, 0x3c, 0x1a, 0xfe, 0x4b, 0x1c, 0xce, 0x21, 0x18, + 0x1e, 0xdf, 0x85, 0x7f, 0xf3, 0x2b, 0x29, 0x96, 0x87, 0xb9, 0xef, 0xae, 0xc1, 0x0c, 0x2b, 0xde, + 0xd1, 0xe8, 0xcf, 0xb0, 0x87, 0x73, 0x84, 0xfc, 0x1c, 0xa4, 0x63, 0x3a, 0xfc, 0x57, 0x19, 0x94, + 0xea, 0xcb, 0x55, 0xc8, 0x07, 0x0a, 0x76, 0x34, 0xfc, 0xd7, 0x18, 0x3c, 0x88, 0xc2, 0xa6, 0xb3, + 0x82, 0x1d, 0x4d, 0xf0, 0xeb, 0xdc, 0x74, 0x86, 0xc0, 0x6e, 0xe3, 0xb5, 0x3a, 0x1a, 0xfd, 0x59, + 0xee, 0x75, 0x0e, 0x91, 0x5f, 0x84, 0x9c, 0x9f, 0x7f, 0xa3, 0xf1, 0xbf, 0xc1, 0xf0, 0x23, 0x0c, + 0xf6, 0x40, 0x20, 0xff, 0x47, 0x53, 0xfc, 0x26, 0xf7, 0x40, 0x00, 0x85, 0x8f, 0xd1, 0x78, 0x4d, + 0x8f, 0x66, 0xfa, 0x2d, 0x7e, 0x8c, 0xc6, 0x4a, 0x3a, 0xde, 0x4d, 0x92, 0x06, 0xa3, 0x29, 0x7e, + 0x9b, 0xef, 0x26, 0xd1, 0xc7, 0x66, 0x8c, 0x17, 0xc9, 0x68, 0x8e, 0xdf, 0xe1, 0x66, 0x8c, 0xd5, + 0x48, 0xb9, 0x05, 0xd2, 0x64, 0x81, 0x8c, 0xe6, 0xfb, 0x1c, 0xe3, 0x9b, 0x9f, 0xa8, 0x8f, 0xf2, + 0x4b, 0xb0, 0x34, 0xbd, 0x38, 0x46, 0xb3, 0x7e, 0xfe, 0xfd, 0xb1, 0xd7, 0x99, 0x60, 0x6d, 0x94, + 0xf7, 0x46, 0x59, 0x36, 0x58, 0x18, 0xa3, 0x69, 0x5f, 0x7f, 0x3f, 0x9c, 0x68, 0x83, 0x75, 0x51, + 0xae, 0x00, 0x8c, 0x6a, 0x52, 0x34, 0xd7, 0x1b, 0x8c, 0x2b, 0x00, 0xc2, 0x47, 0x83, 0x95, 0xa4, + 0x68, 0xfc, 0x17, 0xf8, 0xd1, 0x60, 0x08, 0x7c, 0x34, 0x78, 0x35, 0x8a, 0x46, 0xbf, 0xc9, 0x8f, + 0x06, 0x87, 0xc8, 0xd7, 0x20, 0x6b, 0x0d, 0x4d, 0x13, 0xc7, 0x96, 0x74, 0xf2, 0xcf, 0x88, 0x4a, + 0xff, 0xfe, 0x80, 0x81, 0x39, 0x40, 0xbe, 0x0c, 0x69, 0xd4, 0x3f, 0x40, 0x9d, 0x28, 0xe4, 0x7f, + 0x3c, 0xe0, 0xf9, 0x04, 0x6b, 0xcb, 0x2f, 0x02, 0xd0, 0x97, 0x69, 0xf2, 0x95, 0x28, 0x02, 0xfb, + 0x9f, 0x0f, 0xd8, 0x2f, 0x14, 0x46, 0x90, 0x11, 0x01, 0xfd, 0xbd, 0xc3, 0xc9, 0x04, 0xef, 0x85, + 0x09, 0xc8, 0x0b, 0xf8, 0xf3, 0x30, 0x73, 0xcb, 0xb5, 0x2d, 0x4f, 0xeb, 0x45, 0xa1, 0xbf, 0xc7, + 0xd0, 0x5c, 0x1f, 0x3b, 0xac, 0x6f, 0x3b, 0xc8, 0xd3, 0x7a, 0x6e, 0x14, 0xf6, 0xbf, 0x18, 0xd6, + 0x07, 0x60, 0xb0, 0xae, 0xb9, 0x5e, 0x9c, 0x75, 0xff, 0x37, 0x07, 0x73, 0x00, 0x36, 0x1a, 0xff, + 0x7d, 0x1b, 0x1d, 0x45, 0x61, 0xbf, 0xcf, 0x8d, 0x66, 0xfa, 0xf2, 0xc7, 0x20, 0x87, 0xff, 0xa4, + 0xbf, 0xda, 0x89, 0x00, 0xff, 0x0f, 0x03, 0x8f, 0x10, 0xf8, 0xc9, 0xae, 0xd7, 0xf1, 0x8c, 0x68, + 0x67, 0xff, 0x2f, 0xdb, 0x69, 0xae, 0x2f, 0x57, 0x20, 0xef, 0x7a, 0x9d, 0xce, 0x90, 0x75, 0x34, + 0x11, 0xf0, 0x1f, 0x3c, 0xf0, 0x5f, 0x72, 0x7d, 0xcc, 0xe6, 0x85, 0xe9, 0x97, 0x75, 0xb0, 0x6d, + 0x6f, 0xdb, 0xf4, 0x9a, 0x0e, 0xbe, 0x97, 0x82, 0xb3, 0xc1, 0x33, 0xdd, 0x73, 0xec, 0xe1, 0x80, + 0xdd, 0xaf, 0xcd, 0x4f, 0x4c, 0x2c, 0x9f, 0xee, 0x86, 0xae, 0x6c, 0x01, 0x34, 0xd0, 0xdd, 0x86, + 0xbd, 0x8d, 0xc1, 0xd2, 0x12, 0x64, 0x88, 0xcd, 0xcf, 0x90, 0x0f, 0x4c, 0x49, 0x85, 0x8d, 0x7c, + 0xf9, 0x25, 0xf2, 0x23, 0x5a, 0x81, 0xc9, 0x2f, 0x49, 0x65, 0x10, 0x2a, 0xe4, 0x06, 0x3d, 0xbf, + 0xb1, 0xb8, 0x3e, 0x69, 0x64, 0x45, 0x11, 0x2a, 0x72, 0xe1, 0x97, 0xdf, 0x3a, 0x2f, 0x7c, 0xf6, + 0xad, 0xf3, 0xc2, 0x17, 0xdf, 0x3a, 0x2f, 0x94, 0x9f, 0x04, 0xa1, 0x82, 0xe9, 0x2a, 0x84, 0x81, + 0x3f, 0x86, 0x8e, 0xc6, 0x54, 0xff, 0x3e, 0x01, 0x85, 0xa6, 0xd9, 0x79, 0xc9, 0xf0, 0x0e, 0x4f, + 0xb6, 0xee, 0x05, 0xc8, 0x90, 0xe7, 0x3d, 0x43, 0x6e, 0x4d, 0x61, 0xe3, 0xf1, 0x29, 0xa6, 0x04, + 0x89, 0xd6, 0xc9, 0xbf, 0xcf, 0x28, 0x0c, 0x75, 0xec, 0xea, 0x38, 0xef, 0x06, 0xb9, 0x5e, 0x8d, + 0xcb, 0xbb, 0xc1, 0x78, 0x37, 0x96, 0x5b, 0x90, 0xd9, 0x0e, 0x3f, 0xe1, 0x38, 0xbf, 0x6e, 0xf0, + 0xdf, 0x7e, 0xd1, 0xd1, 0x71, 0x16, 0x2d, 0x5f, 0x65, 0x8c, 0x1b, 0xb1, 0x18, 0x47, 0xc8, 0x8d, + 0xcd, 0xb5, 0x6f, 0xdf, 0x5f, 0x39, 0xf3, 0x8f, 0xf7, 0x57, 0xce, 0xfc, 0xd3, 0xfd, 0x95, 0x33, + 0xdf, 0xbd, 0xbf, 0x22, 0x7c, 0xff, 0xfe, 0x8a, 0xf0, 0xff, 0xf7, 0x57, 0x84, 0x7b, 0xef, 0xac, + 0x08, 0x5f, 0x7e, 0x67, 0x45, 0xf8, 0xda, 0x3b, 0x2b, 0xc2, 0x37, 0xdf, 0x59, 0x11, 0x7e, 0x18, + 0x00, 0x00, 0xff, 0xff, 0xee, 0x64, 0xaf, 0x17, 0xcc, 0x30, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) diff --git a/vendor/github.com/gogo/protobuf/types/any.pb.go b/vendor/github.com/gogo/protobuf/types/any.pb.go index 50e9b364a..902d6d62a 100644 --- a/vendor/github.com/gogo/protobuf/types/any.pb.go +++ b/vendor/github.com/gogo/protobuf/types/any.pb.go @@ -649,18 +649,18 @@ var ( func init() { proto.RegisterFile("any.proto", fileDescriptorAny) } var fileDescriptorAny = []byte{ - // 208 bytes of a gzipped FileDescriptorProto + // 204 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4c, 0xcc, 0xab, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xcc, 0xb8, 0x98, 0x1d, 0xf3, 0x2a, 0x85, 0x24, 0xb9, 0x38, 0x4a, 0x2a, 0x0b, 0x52, 0xe3, 0x4b, 0x8b, 0x72, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xd8, 0x41, 0xfc, 0xd0, 0xa2, 0x1c, 0x21, 0x11, 0x2e, 0xd6, 0xb2, 0xc4, 0x9c, 0xd2, 0x54, 0x09, 0x26, 0x05, 0x46, 0x0d, - 0x9e, 0x20, 0x08, 0xc7, 0xa9, 0x89, 0xf1, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, - 0x3c, 0x94, 0x63, 0xfc, 0xf1, 0x50, 0x8e, 0xb1, 0xe1, 0x91, 0x1c, 0xe3, 0x8a, 0x47, 0x72, 0x8c, - 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8b, 0x47, 0x72, - 0x0c, 0x1f, 0x40, 0xe2, 0x8f, 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0xec, 0x77, - 0xe2, 0x70, 0xcc, 0xab, 0x0c, 0x00, 0x71, 0x02, 0x18, 0xa3, 0x58, 0x41, 0x56, 0x16, 0x2f, 0x60, - 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x3a, 0x00, 0xaa, - 0x5a, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x32, 0x89, 0x0d, - 0x6c, 0x8c, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x63, 0x5d, 0x2d, 0x27, 0xe1, 0x00, 0x00, 0x00, + 0x9e, 0x20, 0x08, 0xc7, 0xa9, 0xfe, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, 0x3c, + 0x94, 0x63, 0xfc, 0xf1, 0x50, 0x8e, 0xb1, 0xe1, 0x91, 0x1c, 0xe3, 0x8a, 0x47, 0x72, 0x8c, 0x27, + 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8b, 0x47, 0x72, 0x0c, + 0x1f, 0x40, 0xe2, 0x8f, 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0xac, 0x77, 0xe2, + 0x70, 0xcc, 0xab, 0x0c, 0x00, 0x71, 0x02, 0x18, 0xa3, 0x58, 0x41, 0x36, 0x16, 0x2f, 0x62, 0x62, + 0x76, 0x0f, 0x70, 0x5a, 0xc5, 0x24, 0xe7, 0x0e, 0x51, 0x1a, 0x00, 0x55, 0xaa, 0x17, 0x9e, 0x9a, + 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e, 0x17, 0x02, 0x52, 0x96, 0xc4, 0x06, 0x36, 0xc3, 0x18, 0x10, + 0x00, 0x00, 0xff, 0xff, 0xb7, 0x39, 0x2f, 0x89, 0xdd, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/types/duration.pb.go b/vendor/github.com/gogo/protobuf/types/duration.pb.go index 06b7aea1b..9d7fa8f31 100644 --- a/vendor/github.com/gogo/protobuf/types/duration.pb.go +++ b/vendor/github.com/gogo/protobuf/types/duration.pb.go @@ -74,6 +74,12 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // end.nanos -= 1000000000; // } // +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// // type Duration struct { // Signed seconds of the span of time. Must be from -315,576,000,000 @@ -487,8 +493,8 @@ var fileDescriptorDuration = []byte{ 0x94, 0x63, 0x5c, 0xf1, 0x48, 0x8e, 0xf1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0xac, 0x76, 0xe2, 0x85, 0x59, 0x1c, 0x00, 0x12, 0x09, - 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x5e, 0xc0, 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, + 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0xfe, 0xc1, 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0x44, 0x4b, 0x00, 0x54, 0x8b, 0x5e, 0x78, 0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x65, 0x12, 0x1b, 0xd8, 0x2c, 0x63, 0x40, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xba, 0xfb, 0x15, 0xc9, 0xe6, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x9d, 0x5a, 0x25, 0xa5, 0xe6, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/types/empty.pb.go b/vendor/github.com/gogo/protobuf/types/empty.pb.go index 33f9bddd1..4cfac1326 100644 --- a/vendor/github.com/gogo/protobuf/types/empty.pb.go +++ b/vendor/github.com/gogo/protobuf/types/empty.pb.go @@ -442,16 +442,16 @@ var ( func init() { proto.RegisterFile("empty.proto", fileDescriptorEmpty) } var fileDescriptorEmpty = []byte{ - // 172 bytes of a gzipped FileDescriptorProto + // 169 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0xcd, 0x2d, 0x28, 0xa9, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, - 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xd8, 0xb9, 0x58, 0x5d, 0x41, 0xf2, 0x4e, 0xed, 0x8c, 0x17, 0x1e, + 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xd8, 0xb9, 0x58, 0x5d, 0x41, 0xf2, 0x4e, 0x2d, 0x8c, 0x17, 0x1e, 0xca, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe1, 0xa1, 0x1c, 0xe3, 0x8f, 0x87, 0x72, 0x8c, 0x0d, 0x8f, 0xe4, 0x18, 0x57, 0x3c, 0x92, 0x63, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x5f, 0x3c, 0x92, 0x63, 0xf8, 0x00, 0x12, 0x7f, 0x2c, 0xc7, 0xc8, 0x25, 0x9c, 0x9c, 0x9f, 0xab, 0x87, 0x66, 0xa0, 0x13, 0x17, 0xd8, 0xb8, 0x00, 0x10, 0x37, 0x80, 0x31, - 0x8a, 0xb5, 0xa4, 0xb2, 0x20, 0xb5, 0x78, 0x01, 0x23, 0xe3, 0x0f, 0x46, 0xc6, 0x45, 0x4c, 0xcc, - 0xee, 0x01, 0x4e, 0xab, 0x98, 0xe4, 0xdc, 0x21, 0x5a, 0x02, 0xa0, 0x5a, 0xf4, 0xc2, 0x53, 0x73, - 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0x8a, 0x93, 0xd8, 0xc0, 0x66, 0x19, 0x03, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x97, 0x6c, 0x95, 0xdd, 0xb9, 0x00, 0x00, 0x00, + 0x8a, 0xb5, 0xa4, 0xb2, 0x20, 0xb5, 0xf8, 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, + 0x55, 0x4c, 0x72, 0xee, 0x10, 0xf5, 0x01, 0x50, 0xf5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, + 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x95, 0x49, 0x6c, 0x60, 0x83, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x7c, 0xa8, 0xf0, 0xc4, 0xb6, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/vendor/github.com/gogo/protobuf/types/field_mask.pb.go index 9ea5bd7ed..3bf0ff369 100644 --- a/vendor/github.com/gogo/protobuf/types/field_mask.pb.go +++ b/vendor/github.com/gogo/protobuf/types/field_mask.pb.go @@ -76,7 +76,7 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // } // // A repeated field is not allowed except at the last position of a -// field mask. +// paths string. // // If a FieldMask object is not present in a get operation, the // operation applies to all fields (as if a FieldMask of all fields @@ -103,8 +103,8 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // // If a repeated field is specified for an update operation, the existing // repeated values in the target resource will be overwritten by the new values. -// Note that a repeated field is only allowed in the last position of a field -// mask. +// Note that a repeated field is only allowed in the last position of a `paths` +// string. // // If a sub-message is specified in the last position of the field mask for an // update operation, then the existing sub-message in the target resource is @@ -721,18 +721,18 @@ var ( func init() { proto.RegisterFile("field_mask.proto", fileDescriptorFieldMask) } var fileDescriptorFieldMask = []byte{ - // 196 bytes of a gzipped FileDescriptorProto + // 193 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x48, 0xcb, 0x4c, 0xcd, 0x49, 0x89, 0xcf, 0x4d, 0x2c, 0xce, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0x14, 0xb9, 0x38, 0xdd, 0x40, 0x8a, 0x7c, 0x13, 0x8b, 0xb3, 0x85, 0x44, 0xb8, 0x58, 0x0b, 0x12, 0x4b, 0x32, 0x8a, 0x25, 0x18, 0x15, - 0x98, 0x35, 0x38, 0x83, 0x20, 0x1c, 0xa7, 0x0e, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, + 0x98, 0x35, 0x38, 0x83, 0x20, 0x1c, 0xa7, 0x56, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, 0x63, 0xf8, 0xf0, 0x50, 0x8e, 0xf1, 0xc7, 0x43, 0x39, 0xc6, 0x86, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, 0x31, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x2f, 0x1e, 0xc9, 0x31, 0x7c, 0x00, 0x89, 0x3f, 0x96, 0x63, 0xe4, 0x12, 0x4e, 0xce, 0xcf, 0xd5, 0x43, 0xb3, 0xca, 0x89, 0x0f, 0x6e, 0x51, 0x00, 0x48, 0x28, 0x80, 0x31, 0x8a, 0xb5, 0xa4, 0xb2, 0x20, - 0xb5, 0x78, 0x01, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, - 0x3d, 0x01, 0x50, 0x3d, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, - 0x95, 0x49, 0x6c, 0x60, 0xc3, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0xb1, 0x3a, 0xd5, - 0xd9, 0x00, 0x00, 0x00, + 0xb5, 0x78, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0x86, 0x00, 0xa8, + 0x06, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0xb2, 0x24, 0x36, + 0xb0, 0x49, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x51, 0x31, 0x89, 0xb5, 0xd6, 0x00, 0x00, + 0x00, } diff --git a/vendor/github.com/gogo/protobuf/types/struct.pb.go b/vendor/github.com/gogo/protobuf/types/struct.pb.go index f81a433b9..366ea48e7 100644 --- a/vendor/github.com/gogo/protobuf/types/struct.pb.go +++ b/vendor/github.com/gogo/protobuf/types/struct.pb.go @@ -1858,31 +1858,31 @@ func init() { proto.RegisterFile("struct.proto", fileDescriptorStruct) } var fileDescriptorStruct = []byte{ // 432 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xc1, 0x6b, 0xd4, 0x40, - 0x14, 0xc6, 0xf3, 0xb2, 0xdd, 0xe0, 0xbe, 0x94, 0x5a, 0x46, 0xd0, 0xa5, 0xc2, 0xb8, 0x6c, 0x2f, - 0x41, 0x24, 0x87, 0xf5, 0x22, 0xae, 0x17, 0x03, 0xb5, 0x05, 0x43, 0x89, 0xd1, 0x56, 0xf0, 0xb2, - 0x98, 0x6d, 0xba, 0x84, 0x4e, 0x67, 0x4a, 0x32, 0x51, 0xf6, 0xa6, 0xff, 0x85, 0x47, 0xf1, 0x24, - 0x1e, 0xfd, 0x2b, 0x3c, 0xf6, 0xe8, 0xd1, 0xe4, 0xe4, 0xb1, 0x47, 0x8f, 0x32, 0x33, 0x49, 0x94, - 0x2e, 0x7b, 0xcb, 0xfb, 0xf2, 0x7b, 0xdf, 0x7b, 0xdf, 0x1b, 0xdc, 0x2c, 0x64, 0x5e, 0xce, 0xa5, - 0x7f, 0x91, 0x0b, 0x29, 0xc8, 0xcd, 0x85, 0x10, 0x0b, 0x96, 0x9a, 0x2a, 0x29, 0x4f, 0xc7, 0x9f, - 0x00, 0x9d, 0x97, 0x9a, 0x20, 0x53, 0x74, 0x4e, 0xb3, 0x94, 0x9d, 0x14, 0x43, 0x18, 0xf5, 0x3c, - 0x77, 0xb2, 0xeb, 0x5f, 0x83, 0x7d, 0x03, 0xfa, 0xcf, 0x34, 0xb5, 0xc7, 0x65, 0xbe, 0x8c, 0x9b, - 0x96, 0x9d, 0x17, 0xe8, 0xfe, 0x27, 0x93, 0x6d, 0xec, 0x9d, 0xa5, 0xcb, 0x21, 0x8c, 0xc0, 0x1b, - 0xc4, 0xea, 0x93, 0x3c, 0xc0, 0xfe, 0xbb, 0xb7, 0xac, 0x4c, 0x87, 0xf6, 0x08, 0x3c, 0x77, 0x72, - 0x7b, 0xc5, 0xfc, 0x58, 0xfd, 0x8d, 0x0d, 0xf4, 0xd8, 0x7e, 0x04, 0xe3, 0xef, 0x36, 0xf6, 0xb5, - 0x48, 0xa6, 0x88, 0xbc, 0x64, 0x6c, 0x66, 0x0c, 0x94, 0xe9, 0xd6, 0x64, 0x67, 0xc5, 0xe0, 0xb0, - 0x64, 0x4c, 0xf3, 0x07, 0x56, 0x3c, 0xe0, 0x6d, 0x41, 0x76, 0x71, 0x93, 0x97, 0xe7, 0x49, 0x9a, - 0xcf, 0xfe, 0xcd, 0x87, 0x03, 0x2b, 0x76, 0x8d, 0xda, 0x41, 0x85, 0xcc, 0x33, 0xbe, 0x68, 0xa0, - 0x9e, 0x5a, 0x5c, 0x41, 0x46, 0x35, 0xd0, 0x3d, 0xc4, 0x44, 0x88, 0x76, 0x8d, 0x8d, 0x11, 0x78, - 0x37, 0xd4, 0x28, 0xa5, 0x19, 0xe0, 0x49, 0x7b, 0xed, 0x06, 0xe9, 0xeb, 0xa8, 0x77, 0xd6, 0xdc, - 0xb1, 0xb1, 0x2f, 0xe7, 0xb2, 0x4b, 0xc9, 0xb2, 0xa2, 0xed, 0x75, 0x74, 0xef, 0x6a, 0xca, 0x30, - 0x2b, 0x64, 0x97, 0x92, 0xb5, 0x45, 0xe0, 0xe0, 0xc6, 0x59, 0xc6, 0x4f, 0xc6, 0x53, 0x1c, 0x74, - 0x04, 0xf1, 0xd1, 0xd1, 0x66, 0xed, 0x8b, 0xae, 0x3b, 0x7a, 0x43, 0xdd, 0xbf, 0x8b, 0x83, 0xee, - 0x88, 0x64, 0x0b, 0xf1, 0xf0, 0x28, 0x0c, 0x67, 0xc7, 0x4f, 0xc3, 0xa3, 0xbd, 0x6d, 0x2b, 0xf8, - 0x08, 0x97, 0x15, 0xb5, 0x7e, 0x56, 0xd4, 0xba, 0xaa, 0x28, 0xfc, 0xa9, 0x28, 0x7c, 0xa8, 0x29, - 0x7c, 0xad, 0x29, 0xfc, 0xa8, 0x29, 0x5c, 0xd6, 0x14, 0x7e, 0xd5, 0x14, 0x7e, 0xd7, 0xd4, 0xba, - 0xaa, 0x29, 0xe0, 0xad, 0xb9, 0x38, 0xbf, 0x3e, 0x2e, 0x70, 0x4d, 0xf2, 0x48, 0xd5, 0x11, 0xbc, - 0xe9, 0xcb, 0xe5, 0x45, 0x5a, 0x7c, 0x06, 0xf8, 0x62, 0xf7, 0xf6, 0xa3, 0xe0, 0x9b, 0x4d, 0xf7, - 0x4d, 0x43, 0xd4, 0xee, 0xf7, 0x3a, 0x65, 0xec, 0x39, 0x17, 0xef, 0xf9, 0x2b, 0x45, 0x26, 0x8e, - 0x76, 0x7a, 0xf8, 0x37, 0x00, 0x00, 0xff, 0xff, 0x52, 0x64, 0x2c, 0x57, 0xd5, 0x02, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xb1, 0x6f, 0xd3, 0x40, + 0x14, 0xc6, 0xfd, 0x9c, 0xc6, 0x22, 0xcf, 0x55, 0xa9, 0x0e, 0x09, 0xa2, 0x22, 0x1d, 0x51, 0xba, + 0x58, 0x08, 0x79, 0x08, 0x0b, 0x22, 0x2c, 0x58, 0x2a, 0xad, 0x84, 0x55, 0x19, 0x43, 0x8b, 0xc4, + 0x12, 0xe1, 0xd4, 0x8d, 0xac, 0x5e, 0xef, 0x2a, 0xfb, 0x0c, 0xca, 0x06, 0xff, 0x05, 0x33, 0x13, + 0x62, 0xe4, 0xaf, 0x60, 0xec, 0xc8, 0x88, 0x3d, 0x31, 0x76, 0xec, 0x88, 0xee, 0xce, 0x36, 0xa8, + 0x51, 0x36, 0xbf, 0xcf, 0xbf, 0xf7, 0xbd, 0xf7, 0xbd, 0xc3, 0xcd, 0x42, 0xe6, 0xe5, 0x5c, 0xfa, + 0x17, 0xb9, 0x90, 0x82, 0xdc, 0x5e, 0x08, 0xb1, 0x60, 0xa9, 0xa9, 0x92, 0xf2, 0x74, 0xfc, 0x05, + 0xd0, 0x79, 0xad, 0x09, 0x32, 0x45, 0xe7, 0x34, 0x4b, 0xd9, 0x49, 0x31, 0x84, 0x51, 0xcf, 0x73, + 0x27, 0xbb, 0xfe, 0x0d, 0xd8, 0x37, 0xa0, 0xff, 0x42, 0x53, 0x7b, 0x5c, 0xe6, 0xcb, 0xb8, 0x69, + 0xd9, 0x79, 0x85, 0xee, 0x7f, 0x32, 0xd9, 0xc6, 0xde, 0x59, 0xba, 0x1c, 0xc2, 0x08, 0xbc, 0x41, + 0xac, 0x3e, 0xc9, 0x23, 0xec, 0x7f, 0x78, 0xcf, 0xca, 0x74, 0x68, 0x8f, 0xc0, 0x73, 0x27, 0x77, + 0x57, 0xcc, 0x8f, 0xd5, 0xdf, 0xd8, 0x40, 0x4f, 0xed, 0x27, 0x30, 0xfe, 0x61, 0x63, 0x5f, 0x8b, + 0x64, 0x8a, 0xc8, 0x4b, 0xc6, 0x66, 0xc6, 0x40, 0x99, 0x6e, 0x4d, 0x76, 0x56, 0x0c, 0x0e, 0x4b, + 0xc6, 0x34, 0x7f, 0x60, 0xc5, 0x03, 0xde, 0x16, 0x64, 0x17, 0x37, 0x79, 0x79, 0x9e, 0xa4, 0xf9, + 0xec, 0xdf, 0x7c, 0x38, 0xb0, 0x62, 0xd7, 0xa8, 0x1d, 0x54, 0xc8, 0x3c, 0xe3, 0x8b, 0x06, 0xea, + 0xa9, 0xc5, 0x15, 0x64, 0x54, 0x03, 0x3d, 0x40, 0x4c, 0x84, 0x68, 0xd7, 0xd8, 0x18, 0x81, 0x77, + 0x4b, 0x8d, 0x52, 0x9a, 0x01, 0x9e, 0xb5, 0xd7, 0x6e, 0x90, 0xbe, 0x8e, 0x7a, 0x6f, 0xcd, 0x1d, + 0x1b, 0xfb, 0x72, 0x2e, 0xbb, 0x94, 0x2c, 0x2b, 0xda, 0x5e, 0x47, 0xf7, 0xae, 0xa6, 0x0c, 0xb3, + 0x42, 0x76, 0x29, 0x59, 0x5b, 0x04, 0x0e, 0x6e, 0x9c, 0x65, 0xfc, 0x64, 0x3c, 0xc5, 0x41, 0x47, + 0x10, 0x1f, 0x1d, 0x6d, 0xd6, 0xbe, 0xe8, 0xba, 0xa3, 0x37, 0xd4, 0xc3, 0xfb, 0x38, 0xe8, 0x8e, + 0x48, 0xb6, 0x10, 0x0f, 0x8f, 0xc2, 0x70, 0x76, 0xfc, 0x3c, 0x3c, 0xda, 0xdb, 0xb6, 0x82, 0xcf, + 0x70, 0x59, 0x51, 0xeb, 0x57, 0x45, 0xad, 0xab, 0x8a, 0xc2, 0x75, 0x45, 0xe1, 0x53, 0x4d, 0xe1, + 0x5b, 0x4d, 0xe1, 0x67, 0x4d, 0xe1, 0xb2, 0xa6, 0xf0, 0xbb, 0xa6, 0xf0, 0xa7, 0xa6, 0xd6, 0x55, + 0x4d, 0x01, 0xef, 0xcc, 0xc5, 0xf9, 0xcd, 0x71, 0x81, 0x6b, 0x92, 0x47, 0xaa, 0x8e, 0xe0, 0x5d, + 0x5f, 0x2e, 0x2f, 0xd2, 0xe2, 0x1a, 0xe0, 0xab, 0xdd, 0xdb, 0x8f, 0x82, 0xef, 0x36, 0xdd, 0x37, + 0x0d, 0x51, 0xbb, 0xdf, 0xdb, 0x94, 0xb1, 0x97, 0x5c, 0x7c, 0xe4, 0x6f, 0x14, 0x99, 0x38, 0xda, + 0xe9, 0xf1, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x75, 0xc5, 0x1c, 0x3b, 0xd5, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/vendor/github.com/gogo/protobuf/types/timestamp.pb.go index 564242155..8c705a3a3 100644 --- a/vendor/github.com/gogo/protobuf/types/timestamp.pb.go +++ b/vendor/github.com/gogo/protobuf/types/timestamp.pb.go @@ -82,15 +82,13 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // // Example 5: Compute Timestamp from current time in Python. // -// now = time.time() -// seconds = int(now) -// nanos = int((now - seconds) * 10**9) -// timestamp = Timestamp(seconds=seconds, nanos=nanos) +// timestamp = Timestamp() +// timestamp.GetCurrentTime() // // type Timestamp struct { // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` // Non-negative fractions of a second at nanosecond resolution. Negative @@ -489,18 +487,18 @@ var ( func init() { proto.RegisterFile("timestamp.proto", fileDescriptorTimestamp) } var fileDescriptorTimestamp = []byte{ - // 208 bytes of a gzipped FileDescriptorProto + // 205 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2f, 0xc9, 0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, - 0x0d, 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x99, 0xf1, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, + 0x0d, 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x81, 0xf1, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, 0x3c, 0x94, 0x63, 0x5c, 0xf1, 0x48, 0x8e, 0xf1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0x2c, 0x77, 0xe2, 0x83, 0x5b, 0x1d, 0x00, - 0x12, 0x0a, 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x5e, 0xc0, 0xc8, 0xf8, 0x83, 0x91, - 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb6, 0x00, 0xa8, 0x36, - 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0xe2, 0x24, 0x36, 0xb0, - 0x79, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x4d, 0xbd, 0x9c, 0xed, 0x00, 0x00, 0x00, + 0x12, 0x0a, 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0xfe, 0xc1, 0xc8, 0xb8, 0x88, 0x89, + 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0x44, 0x4f, 0x00, 0x54, 0x8f, 0x5e, 0x78, 0x6a, + 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x65, 0x12, 0x1b, 0xd8, 0x30, 0x63, 0x40, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0xa2, 0x42, 0xda, 0xea, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/vendor/github.com/gogo/protobuf/types/wrappers.pb.go index bdffe4edd..125e35c8f 100644 --- a/vendor/github.com/gogo/protobuf/types/wrappers.pb.go +++ b/vendor/github.com/gogo/protobuf/types/wrappers.pb.go @@ -2237,7 +2237,7 @@ var ( func init() { proto.RegisterFile("wrappers.proto", fileDescriptorWrappers) } var fileDescriptorWrappers = []byte{ - // 281 bytes of a gzipped FileDescriptorProto + // 278 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x2f, 0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x2a, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0x94, 0xb9, 0xb8, 0x5d, 0xf2, 0x4b, 0x93, 0x72, @@ -2247,13 +2247,13 @@ var fileDescriptorWrappers = []byte{ 0x71, 0x87, 0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4, 0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1, 0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, - 0xb5, 0x18, 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x2e, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, + 0xb5, 0x18, 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x76, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, 0x63, 0xf8, 0xf0, 0x50, 0x8e, 0xf1, 0xc7, 0x43, 0x39, 0xc6, 0x86, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, 0x31, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x2f, 0x1e, 0xc9, 0x31, 0x7c, 0x00, 0x89, 0x3f, 0x96, 0x63, 0xe4, 0x12, 0x4e, 0xce, 0xcf, 0xd5, 0x43, 0x8b, 0x0e, 0x27, 0xde, 0x70, 0x68, 0x7c, 0x05, 0x80, 0x44, 0x02, 0x18, 0xa3, 0x58, 0x4b, - 0x2a, 0x0b, 0x52, 0x8b, 0x17, 0x30, 0x32, 0xfe, 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, - 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x2b, 0x00, 0xaa, 0x4b, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, - 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x38, 0x89, 0x0d, 0x6c, 0x9c, 0x31, 0x20, 0x00, 0x00, 0xff, - 0xff, 0xac, 0x8b, 0x9f, 0x55, 0xfd, 0x01, 0x00, 0x00, + 0x2a, 0x0b, 0x52, 0x8b, 0x7f, 0x30, 0x32, 0x2e, 0x62, 0x62, 0x76, 0x0f, 0x70, 0x5a, 0xc5, 0x24, + 0xe7, 0x0e, 0xd1, 0x12, 0x00, 0xd5, 0xa2, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e, + 0x17, 0x02, 0x52, 0x99, 0xc4, 0x06, 0x36, 0xcb, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x23, 0x27, + 0x6c, 0x5f, 0xfa, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/golang/glog/LICENSE b/vendor/github.com/golang/glog/LICENSE new file mode 100644 index 000000000..37ec93a14 --- /dev/null +++ b/vendor/github.com/golang/glog/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/golang/glog/README b/vendor/github.com/golang/glog/README new file mode 100644 index 000000000..5f9c11485 --- /dev/null +++ b/vendor/github.com/golang/glog/README @@ -0,0 +1,44 @@ +glog +==== + +Leveled execution logs for Go. + +This is an efficient pure Go implementation of leveled logs in the +manner of the open source C++ package + http://code.google.com/p/google-glog + +By binding methods to booleans it is possible to use the log package +without paying the expense of evaluating the arguments to the log. +Through the -vmodule flag, the package also provides fine-grained +control over logging at the file level. + +The comment from glog.go introduces the ideas: + + Package glog implements logging analogous to the Google-internal + C++ INFO/ERROR/V setup. It provides functions Info, Warning, + Error, Fatal, plus formatting variants such as Infof. It + also provides V-style logging controlled by the -v and + -vmodule=file=2 flags. + + Basic examples: + + glog.Info("Prepare to repel boarders") + + glog.Fatalf("Initialization failed: %s", err) + + See the documentation for the V function for an explanation + of these examples: + + if glog.V(2) { + glog.Info("Starting transaction...") + } + + glog.V(2).Infoln("Processed", nItems, "elements") + + +The repository contains an open source version of the log package +used inside Google. The master copy of the source lives inside +Google, not here. The code in this repo is for export only and is not itself +under development. Feature requests will be ignored. + +Send bug reports to golang-nuts@googlegroups.com. diff --git a/vendor/github.com/golang/glog/glog.go b/vendor/github.com/golang/glog/glog.go new file mode 100644 index 000000000..3e63fffd5 --- /dev/null +++ b/vendor/github.com/golang/glog/glog.go @@ -0,0 +1,1177 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. +// It provides functions Info, Warning, Error, Fatal, plus formatting variants such as +// Infof. It also provides V-style logging controlled by the -v and -vmodule=file=2 flags. +// +// Basic examples: +// +// glog.Info("Prepare to repel boarders") +// +// glog.Fatalf("Initialization failed: %s", err) +// +// See the documentation for the V function for an explanation of these examples: +// +// if glog.V(2) { +// glog.Info("Starting transaction...") +// } +// +// glog.V(2).Infoln("Processed", nItems, "elements") +// +// Log output is buffered and written periodically using Flush. Programs +// should call Flush before exiting to guarantee all log output is written. +// +// By default, all log statements write to files in a temporary directory. +// This package provides several flags that modify this behavior. +// As a result, flag.Parse must be called before any logging is done. +// +// -logtostderr=false +// Logs are written to standard error instead of to files. +// -alsologtostderr=false +// Logs are written to standard error as well as to files. +// -stderrthreshold=ERROR +// Log events at or above this severity are logged to standard +// error as well as to files. +// -log_dir="" +// Log files will be written to this directory instead of the +// default temporary directory. +// +// Other flags provide aids to debugging. +// +// -log_backtrace_at="" +// When set to a file and line number holding a logging statement, +// such as +// -log_backtrace_at=gopherflakes.go:234 +// a stack trace will be written to the Info log whenever execution +// hits that statement. (Unlike with -vmodule, the ".go" must be +// present.) +// -v=0 +// Enable V-leveled logging at the specified level. +// -vmodule="" +// The syntax of the argument is a comma-separated list of pattern=N, +// where pattern is a literal file name (minus the ".go" suffix) or +// "glob" pattern and N is a V level. For instance, +// -vmodule=gopher*=3 +// sets the V level to 3 in all Go files whose names begin "gopher". +// +package glog + +import ( + "bufio" + "bytes" + "errors" + "flag" + "fmt" + "io" + stdLog "log" + "os" + "path/filepath" + "runtime" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +// severity identifies the sort of log: info, warning etc. It also implements +// the flag.Value interface. The -stderrthreshold flag is of type severity and +// should be modified only through the flag.Value interface. The values match +// the corresponding constants in C++. +type severity int32 // sync/atomic int32 + +// These constants identify the log levels in order of increasing severity. +// A message written to a high-severity log file is also written to each +// lower-severity log file. +const ( + infoLog severity = iota + warningLog + errorLog + fatalLog + numSeverity = 4 +) + +const severityChar = "IWEF" + +var severityName = []string{ + infoLog: "INFO", + warningLog: "WARNING", + errorLog: "ERROR", + fatalLog: "FATAL", +} + +// get returns the value of the severity. +func (s *severity) get() severity { + return severity(atomic.LoadInt32((*int32)(s))) +} + +// set sets the value of the severity. +func (s *severity) set(val severity) { + atomic.StoreInt32((*int32)(s), int32(val)) +} + +// String is part of the flag.Value interface. +func (s *severity) String() string { + return strconv.FormatInt(int64(*s), 10) +} + +// Get is part of the flag.Value interface. +func (s *severity) Get() interface{} { + return *s +} + +// Set is part of the flag.Value interface. +func (s *severity) Set(value string) error { + var threshold severity + // Is it a known name? + if v, ok := severityByName(value); ok { + threshold = v + } else { + v, err := strconv.Atoi(value) + if err != nil { + return err + } + threshold = severity(v) + } + logging.stderrThreshold.set(threshold) + return nil +} + +func severityByName(s string) (severity, bool) { + s = strings.ToUpper(s) + for i, name := range severityName { + if name == s { + return severity(i), true + } + } + return 0, false +} + +// OutputStats tracks the number of output lines and bytes written. +type OutputStats struct { + lines int64 + bytes int64 +} + +// Lines returns the number of lines written. +func (s *OutputStats) Lines() int64 { + return atomic.LoadInt64(&s.lines) +} + +// Bytes returns the number of bytes written. +func (s *OutputStats) Bytes() int64 { + return atomic.LoadInt64(&s.bytes) +} + +// Stats tracks the number of lines of output and number of bytes +// per severity level. Values must be read with atomic.LoadInt64. +var Stats struct { + Info, Warning, Error OutputStats +} + +var severityStats = [numSeverity]*OutputStats{ + infoLog: &Stats.Info, + warningLog: &Stats.Warning, + errorLog: &Stats.Error, +} + +// Level is exported because it appears in the arguments to V and is +// the type of the v flag, which can be set programmatically. +// It's a distinct type because we want to discriminate it from logType. +// Variables of type level are only changed under logging.mu. +// The -v flag is read only with atomic ops, so the state of the logging +// module is consistent. + +// Level is treated as a sync/atomic int32. + +// Level specifies a level of verbosity for V logs. *Level implements +// flag.Value; the -v flag is of type Level and should be modified +// only through the flag.Value interface. +type Level int32 + +// get returns the value of the Level. +func (l *Level) get() Level { + return Level(atomic.LoadInt32((*int32)(l))) +} + +// set sets the value of the Level. +func (l *Level) set(val Level) { + atomic.StoreInt32((*int32)(l), int32(val)) +} + +// String is part of the flag.Value interface. +func (l *Level) String() string { + return strconv.FormatInt(int64(*l), 10) +} + +// Get is part of the flag.Value interface. +func (l *Level) Get() interface{} { + return *l +} + +// Set is part of the flag.Value interface. +func (l *Level) Set(value string) error { + v, err := strconv.Atoi(value) + if err != nil { + return err + } + logging.mu.Lock() + defer logging.mu.Unlock() + logging.setVState(Level(v), logging.vmodule.filter, false) + return nil +} + +// moduleSpec represents the setting of the -vmodule flag. +type moduleSpec struct { + filter []modulePat +} + +// modulePat contains a filter for the -vmodule flag. +// It holds a verbosity level and a file pattern to match. +type modulePat struct { + pattern string + literal bool // The pattern is a literal string + level Level +} + +// match reports whether the file matches the pattern. It uses a string +// comparison if the pattern contains no metacharacters. +func (m *modulePat) match(file string) bool { + if m.literal { + return file == m.pattern + } + match, _ := filepath.Match(m.pattern, file) + return match +} + +func (m *moduleSpec) String() string { + // Lock because the type is not atomic. TODO: clean this up. + logging.mu.Lock() + defer logging.mu.Unlock() + var b bytes.Buffer + for i, f := range m.filter { + if i > 0 { + b.WriteRune(',') + } + fmt.Fprintf(&b, "%s=%d", f.pattern, f.level) + } + return b.String() +} + +// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the +// struct is not exported. +func (m *moduleSpec) Get() interface{} { + return nil +} + +var errVmoduleSyntax = errors.New("syntax error: expect comma-separated list of filename=N") + +// Syntax: -vmodule=recordio=2,file=1,gfs*=3 +func (m *moduleSpec) Set(value string) error { + var filter []modulePat + for _, pat := range strings.Split(value, ",") { + if len(pat) == 0 { + // Empty strings such as from a trailing comma can be ignored. + continue + } + patLev := strings.Split(pat, "=") + if len(patLev) != 2 || len(patLev[0]) == 0 || len(patLev[1]) == 0 { + return errVmoduleSyntax + } + pattern := patLev[0] + v, err := strconv.Atoi(patLev[1]) + if err != nil { + return errors.New("syntax error: expect comma-separated list of filename=N") + } + if v < 0 { + return errors.New("negative value for vmodule level") + } + if v == 0 { + continue // Ignore. It's harmless but no point in paying the overhead. + } + // TODO: check syntax of filter? + filter = append(filter, modulePat{pattern, isLiteral(pattern), Level(v)}) + } + logging.mu.Lock() + defer logging.mu.Unlock() + logging.setVState(logging.verbosity, filter, true) + return nil +} + +// isLiteral reports whether the pattern is a literal string, that is, has no metacharacters +// that require filepath.Match to be called to match the pattern. +func isLiteral(pattern string) bool { + return !strings.ContainsAny(pattern, `\*?[]`) +} + +// traceLocation represents the setting of the -log_backtrace_at flag. +type traceLocation struct { + file string + line int +} + +// isSet reports whether the trace location has been specified. +// logging.mu is held. +func (t *traceLocation) isSet() bool { + return t.line > 0 +} + +// match reports whether the specified file and line matches the trace location. +// The argument file name is the full path, not the basename specified in the flag. +// logging.mu is held. +func (t *traceLocation) match(file string, line int) bool { + if t.line != line { + return false + } + if i := strings.LastIndex(file, "/"); i >= 0 { + file = file[i+1:] + } + return t.file == file +} + +func (t *traceLocation) String() string { + // Lock because the type is not atomic. TODO: clean this up. + logging.mu.Lock() + defer logging.mu.Unlock() + return fmt.Sprintf("%s:%d", t.file, t.line) +} + +// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the +// struct is not exported +func (t *traceLocation) Get() interface{} { + return nil +} + +var errTraceSyntax = errors.New("syntax error: expect file.go:234") + +// Syntax: -log_backtrace_at=gopherflakes.go:234 +// Note that unlike vmodule the file extension is included here. +func (t *traceLocation) Set(value string) error { + if value == "" { + // Unset. + t.line = 0 + t.file = "" + } + fields := strings.Split(value, ":") + if len(fields) != 2 { + return errTraceSyntax + } + file, line := fields[0], fields[1] + if !strings.Contains(file, ".") { + return errTraceSyntax + } + v, err := strconv.Atoi(line) + if err != nil { + return errTraceSyntax + } + if v <= 0 { + return errors.New("negative or zero value for level") + } + logging.mu.Lock() + defer logging.mu.Unlock() + t.line = v + t.file = file + return nil +} + +// flushSyncWriter is the interface satisfied by logging destinations. +type flushSyncWriter interface { + Flush() error + Sync() error + io.Writer +} + +func init() { + flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files") + flag.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files") + flag.Var(&logging.verbosity, "v", "log level for V logs") + flag.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr") + flag.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging") + flag.Var(&logging.traceLocation, "log_backtrace_at", "when logging hits line file:N, emit a stack trace") + + // Default stderrThreshold is ERROR. + logging.stderrThreshold = errorLog + + logging.setVState(0, nil, false) + go logging.flushDaemon() +} + +// Flush flushes all pending log I/O. +func Flush() { + logging.lockAndFlushAll() +} + +// loggingT collects all the global state of the logging setup. +type loggingT struct { + // Boolean flags. Not handled atomically because the flag.Value interface + // does not let us avoid the =true, and that shorthand is necessary for + // compatibility. TODO: does this matter enough to fix? Seems unlikely. + toStderr bool // The -logtostderr flag. + alsoToStderr bool // The -alsologtostderr flag. + + // Level flag. Handled atomically. + stderrThreshold severity // The -stderrthreshold flag. + + // freeList is a list of byte buffers, maintained under freeListMu. + freeList *buffer + // freeListMu maintains the free list. It is separate from the main mutex + // so buffers can be grabbed and printed to without holding the main lock, + // for better parallelization. + freeListMu sync.Mutex + + // mu protects the remaining elements of this structure and is + // used to synchronize logging. + mu sync.Mutex + // file holds writer for each of the log types. + file [numSeverity]flushSyncWriter + // pcs is used in V to avoid an allocation when computing the caller's PC. + pcs [1]uintptr + // vmap is a cache of the V Level for each V() call site, identified by PC. + // It is wiped whenever the vmodule flag changes state. + vmap map[uintptr]Level + // filterLength stores the length of the vmodule filter chain. If greater + // than zero, it means vmodule is enabled. It may be read safely + // using sync.LoadInt32, but is only modified under mu. + filterLength int32 + // traceLocation is the state of the -log_backtrace_at flag. + traceLocation traceLocation + // These flags are modified only under lock, although verbosity may be fetched + // safely using atomic.LoadInt32. + vmodule moduleSpec // The state of the -vmodule flag. + verbosity Level // V logging level, the value of the -v flag/ +} + +// buffer holds a byte Buffer for reuse. The zero value is ready for use. +type buffer struct { + bytes.Buffer + tmp [64]byte // temporary byte array for creating headers. + next *buffer +} + +var logging loggingT + +// setVState sets a consistent state for V logging. +// l.mu is held. +func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) { + // Turn verbosity off so V will not fire while we are in transition. + logging.verbosity.set(0) + // Ditto for filter length. + atomic.StoreInt32(&logging.filterLength, 0) + + // Set the new filters and wipe the pc->Level map if the filter has changed. + if setFilter { + logging.vmodule.filter = filter + logging.vmap = make(map[uintptr]Level) + } + + // Things are consistent now, so enable filtering and verbosity. + // They are enabled in order opposite to that in V. + atomic.StoreInt32(&logging.filterLength, int32(len(filter))) + logging.verbosity.set(verbosity) +} + +// getBuffer returns a new, ready-to-use buffer. +func (l *loggingT) getBuffer() *buffer { + l.freeListMu.Lock() + b := l.freeList + if b != nil { + l.freeList = b.next + } + l.freeListMu.Unlock() + if b == nil { + b = new(buffer) + } else { + b.next = nil + b.Reset() + } + return b +} + +// putBuffer returns a buffer to the free list. +func (l *loggingT) putBuffer(b *buffer) { + if b.Len() >= 256 { + // Let big buffers die a natural death. + return + } + l.freeListMu.Lock() + b.next = l.freeList + l.freeList = b + l.freeListMu.Unlock() +} + +var timeNow = time.Now // Stubbed out for testing. + +/* +header formats a log header as defined by the C++ implementation. +It returns a buffer containing the formatted header and the user's file and line number. +The depth specifies how many stack frames above lives the source line to be identified in the log message. + +Log lines have this form: + Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... +where the fields are defined as follows: + L A single character, representing the log level (eg 'I' for INFO) + mm The month (zero padded; ie May is '05') + dd The day (zero padded) + hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds + threadid The space-padded thread ID as returned by GetTID() + file The file name + line The line number + msg The user-supplied message +*/ +func (l *loggingT) header(s severity, depth int) (*buffer, string, int) { + _, file, line, ok := runtime.Caller(3 + depth) + if !ok { + file = "???" + line = 1 + } else { + slash := strings.LastIndex(file, "/") + if slash >= 0 { + file = file[slash+1:] + } + } + return l.formatHeader(s, file, line), file, line +} + +// formatHeader formats a log header using the provided file name and line number. +func (l *loggingT) formatHeader(s severity, file string, line int) *buffer { + now := timeNow() + if line < 0 { + line = 0 // not a real line number, but acceptable to someDigits + } + if s > fatalLog { + s = infoLog // for safety. + } + buf := l.getBuffer() + + // Avoid Fprintf, for speed. The format is so simple that we can do it quickly by hand. + // It's worth about 3X. Fprintf is hard. + _, month, day := now.Date() + hour, minute, second := now.Clock() + // Lmmdd hh:mm:ss.uuuuuu threadid file:line] + buf.tmp[0] = severityChar[s] + buf.twoDigits(1, int(month)) + buf.twoDigits(3, day) + buf.tmp[5] = ' ' + buf.twoDigits(6, hour) + buf.tmp[8] = ':' + buf.twoDigits(9, minute) + buf.tmp[11] = ':' + buf.twoDigits(12, second) + buf.tmp[14] = '.' + buf.nDigits(6, 15, now.Nanosecond()/1000, '0') + buf.tmp[21] = ' ' + buf.nDigits(7, 22, pid, ' ') // TODO: should be TID + buf.tmp[29] = ' ' + buf.Write(buf.tmp[:30]) + buf.WriteString(file) + buf.tmp[0] = ':' + n := buf.someDigits(1, line) + buf.tmp[n+1] = ']' + buf.tmp[n+2] = ' ' + buf.Write(buf.tmp[:n+3]) + return buf +} + +// Some custom tiny helper functions to print the log header efficiently. + +const digits = "0123456789" + +// twoDigits formats a zero-prefixed two-digit integer at buf.tmp[i]. +func (buf *buffer) twoDigits(i, d int) { + buf.tmp[i+1] = digits[d%10] + d /= 10 + buf.tmp[i] = digits[d%10] +} + +// nDigits formats an n-digit integer at buf.tmp[i], +// padding with pad on the left. +// It assumes d >= 0. +func (buf *buffer) nDigits(n, i, d int, pad byte) { + j := n - 1 + for ; j >= 0 && d > 0; j-- { + buf.tmp[i+j] = digits[d%10] + d /= 10 + } + for ; j >= 0; j-- { + buf.tmp[i+j] = pad + } +} + +// someDigits formats a zero-prefixed variable-width integer at buf.tmp[i]. +func (buf *buffer) someDigits(i, d int) int { + // Print into the top, then copy down. We know there's space for at least + // a 10-digit number. + j := len(buf.tmp) + for { + j-- + buf.tmp[j] = digits[d%10] + d /= 10 + if d == 0 { + break + } + } + return copy(buf.tmp[i:], buf.tmp[j:]) +} + +func (l *loggingT) println(s severity, args ...interface{}) { + buf, file, line := l.header(s, 0) + fmt.Fprintln(buf, args...) + l.output(s, buf, file, line, false) +} + +func (l *loggingT) print(s severity, args ...interface{}) { + l.printDepth(s, 1, args...) +} + +func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) { + buf, file, line := l.header(s, depth) + fmt.Fprint(buf, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, false) +} + +func (l *loggingT) printf(s severity, format string, args ...interface{}) { + buf, file, line := l.header(s, 0) + fmt.Fprintf(buf, format, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, false) +} + +// printWithFileLine behaves like print but uses the provided file and line number. If +// alsoLogToStderr is true, the log message always appears on standard error; it +// will also appear in the log file unless --logtostderr is set. +func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) { + buf := l.formatHeader(s, file, line) + fmt.Fprint(buf, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, alsoToStderr) +} + +// output writes the data to the log files and releases the buffer. +func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) { + l.mu.Lock() + if l.traceLocation.isSet() { + if l.traceLocation.match(file, line) { + buf.Write(stacks(false)) + } + } + data := buf.Bytes() + if l.toStderr { + os.Stderr.Write(data) + } else { + if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() { + os.Stderr.Write(data) + } + if l.file[s] == nil { + if err := l.createFiles(s); err != nil { + os.Stderr.Write(data) // Make sure the message appears somewhere. + l.exit(err) + } + } + switch s { + case fatalLog: + l.file[fatalLog].Write(data) + fallthrough + case errorLog: + l.file[errorLog].Write(data) + fallthrough + case warningLog: + l.file[warningLog].Write(data) + fallthrough + case infoLog: + l.file[infoLog].Write(data) + } + } + if s == fatalLog { + // If we got here via Exit rather than Fatal, print no stacks. + if atomic.LoadUint32(&fatalNoStacks) > 0 { + l.mu.Unlock() + timeoutFlush(10 * time.Second) + os.Exit(1) + } + // Dump all goroutine stacks before exiting. + // First, make sure we see the trace for the current goroutine on standard error. + // If -logtostderr has been specified, the loop below will do that anyway + // as the first stack in the full dump. + if !l.toStderr { + os.Stderr.Write(stacks(false)) + } + // Write the stack trace for all goroutines to the files. + trace := stacks(true) + logExitFunc = func(error) {} // If we get a write error, we'll still exit below. + for log := fatalLog; log >= infoLog; log-- { + if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. + f.Write(trace) + } + } + l.mu.Unlock() + timeoutFlush(10 * time.Second) + os.Exit(255) // C++ uses -1, which is silly because it's anded with 255 anyway. + } + l.putBuffer(buf) + l.mu.Unlock() + if stats := severityStats[s]; stats != nil { + atomic.AddInt64(&stats.lines, 1) + atomic.AddInt64(&stats.bytes, int64(len(data))) + } +} + +// timeoutFlush calls Flush and returns when it completes or after timeout +// elapses, whichever happens first. This is needed because the hooks invoked +// by Flush may deadlock when glog.Fatal is called from a hook that holds +// a lock. +func timeoutFlush(timeout time.Duration) { + done := make(chan bool, 1) + go func() { + Flush() // calls logging.lockAndFlushAll() + done <- true + }() + select { + case <-done: + case <-time.After(timeout): + fmt.Fprintln(os.Stderr, "glog: Flush took longer than", timeout) + } +} + +// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. +func stacks(all bool) []byte { + // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. + n := 10000 + if all { + n = 100000 + } + var trace []byte + for i := 0; i < 5; i++ { + trace = make([]byte, n) + nbytes := runtime.Stack(trace, all) + if nbytes < len(trace) { + return trace[:nbytes] + } + n *= 2 + } + return trace +} + +// logExitFunc provides a simple mechanism to override the default behavior +// of exiting on error. Used in testing and to guarantee we reach a required exit +// for fatal logs. Instead, exit could be a function rather than a method but that +// would make its use clumsier. +var logExitFunc func(error) + +// exit is called if there is trouble creating or writing log files. +// It flushes the logs and exits the program; there's no point in hanging around. +// l.mu is held. +func (l *loggingT) exit(err error) { + fmt.Fprintf(os.Stderr, "log: exiting because of error: %s\n", err) + // If logExitFunc is set, we do that instead of exiting. + if logExitFunc != nil { + logExitFunc(err) + return + } + l.flushAll() + os.Exit(2) +} + +// syncBuffer joins a bufio.Writer to its underlying file, providing access to the +// file's Sync method and providing a wrapper for the Write method that provides log +// file rotation. There are conflicting methods, so the file cannot be embedded. +// l.mu is held for all its methods. +type syncBuffer struct { + logger *loggingT + *bufio.Writer + file *os.File + sev severity + nbytes uint64 // The number of bytes written to this file +} + +func (sb *syncBuffer) Sync() error { + return sb.file.Sync() +} + +func (sb *syncBuffer) Write(p []byte) (n int, err error) { + if sb.nbytes+uint64(len(p)) >= MaxSize { + if err := sb.rotateFile(time.Now()); err != nil { + sb.logger.exit(err) + } + } + n, err = sb.Writer.Write(p) + sb.nbytes += uint64(n) + if err != nil { + sb.logger.exit(err) + } + return +} + +// rotateFile closes the syncBuffer's file and starts a new one. +func (sb *syncBuffer) rotateFile(now time.Time) error { + if sb.file != nil { + sb.Flush() + sb.file.Close() + } + var err error + sb.file, _, err = create(severityName[sb.sev], now) + sb.nbytes = 0 + if err != nil { + return err + } + + sb.Writer = bufio.NewWriterSize(sb.file, bufferSize) + + // Write header. + var buf bytes.Buffer + fmt.Fprintf(&buf, "Log file created at: %s\n", now.Format("2006/01/02 15:04:05")) + fmt.Fprintf(&buf, "Running on machine: %s\n", host) + fmt.Fprintf(&buf, "Binary: Built with %s %s for %s/%s\n", runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH) + fmt.Fprintf(&buf, "Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg\n") + n, err := sb.file.Write(buf.Bytes()) + sb.nbytes += uint64(n) + return err +} + +// bufferSize sizes the buffer associated with each log file. It's large +// so that log records can accumulate without the logging thread blocking +// on disk I/O. The flushDaemon will block instead. +const bufferSize = 256 * 1024 + +// createFiles creates all the log files for severity from sev down to infoLog. +// l.mu is held. +func (l *loggingT) createFiles(sev severity) error { + now := time.Now() + // Files are created in decreasing severity order, so as soon as we find one + // has already been created, we can stop. + for s := sev; s >= infoLog && l.file[s] == nil; s-- { + sb := &syncBuffer{ + logger: l, + sev: s, + } + if err := sb.rotateFile(now); err != nil { + return err + } + l.file[s] = sb + } + return nil +} + +const flushInterval = 30 * time.Second + +// flushDaemon periodically flushes the log file buffers. +func (l *loggingT) flushDaemon() { + for _ = range time.NewTicker(flushInterval).C { + l.lockAndFlushAll() + } +} + +// lockAndFlushAll is like flushAll but locks l.mu first. +func (l *loggingT) lockAndFlushAll() { + l.mu.Lock() + l.flushAll() + l.mu.Unlock() +} + +// flushAll flushes all the logs and attempts to "sync" their data to disk. +// l.mu is held. +func (l *loggingT) flushAll() { + // Flush from fatal down, in case there's trouble flushing. + for s := fatalLog; s >= infoLog; s-- { + file := l.file[s] + if file != nil { + file.Flush() // ignore error + file.Sync() // ignore error + } + } +} + +// CopyStandardLogTo arranges for messages written to the Go "log" package's +// default logs to also appear in the Google logs for the named and lower +// severities. Subsequent changes to the standard log's default output location +// or format may break this behavior. +// +// Valid names are "INFO", "WARNING", "ERROR", and "FATAL". If the name is not +// recognized, CopyStandardLogTo panics. +func CopyStandardLogTo(name string) { + sev, ok := severityByName(name) + if !ok { + panic(fmt.Sprintf("log.CopyStandardLogTo(%q): unrecognized severity name", name)) + } + // Set a log format that captures the user's file and line: + // d.go:23: message + stdLog.SetFlags(stdLog.Lshortfile) + stdLog.SetOutput(logBridge(sev)) +} + +// logBridge provides the Write method that enables CopyStandardLogTo to connect +// Go's standard logs to the logs provided by this package. +type logBridge severity + +// Write parses the standard logging line and passes its components to the +// logger for severity(lb). +func (lb logBridge) Write(b []byte) (n int, err error) { + var ( + file = "???" + line = 1 + text string + ) + // Split "d.go:23: message" into "d.go", "23", and "message". + if parts := bytes.SplitN(b, []byte{':'}, 3); len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 { + text = fmt.Sprintf("bad log format: %s", b) + } else { + file = string(parts[0]) + text = string(parts[2][1:]) // skip leading space + line, err = strconv.Atoi(string(parts[1])) + if err != nil { + text = fmt.Sprintf("bad line number: %s", b) + line = 1 + } + } + // printWithFileLine with alsoToStderr=true, so standard log messages + // always appear on standard error. + logging.printWithFileLine(severity(lb), file, line, true, text) + return len(b), nil +} + +// setV computes and remembers the V level for a given PC +// when vmodule is enabled. +// File pattern matching takes the basename of the file, stripped +// of its .go suffix, and uses filepath.Match, which is a little more +// general than the *? matching used in C++. +// l.mu is held. +func (l *loggingT) setV(pc uintptr) Level { + fn := runtime.FuncForPC(pc) + file, _ := fn.FileLine(pc) + // The file is something like /a/b/c/d.go. We want just the d. + if strings.HasSuffix(file, ".go") { + file = file[:len(file)-3] + } + if slash := strings.LastIndex(file, "/"); slash >= 0 { + file = file[slash+1:] + } + for _, filter := range l.vmodule.filter { + if filter.match(file) { + l.vmap[pc] = filter.level + return filter.level + } + } + l.vmap[pc] = 0 + return 0 +} + +// Verbose is a boolean type that implements Infof (like Printf) etc. +// See the documentation of V for more information. +type Verbose bool + +// V reports whether verbosity at the call site is at least the requested level. +// The returned value is a boolean of type Verbose, which implements Info, Infoln +// and Infof. These methods will write to the Info log if called. +// Thus, one may write either +// if glog.V(2) { glog.Info("log this") } +// or +// glog.V(2).Info("log this") +// The second form is shorter but the first is cheaper if logging is off because it does +// not evaluate its arguments. +// +// Whether an individual call to V generates a log record depends on the setting of +// the -v and --vmodule flags; both are off by default. If the level in the call to +// V is at least the value of -v, or of -vmodule for the source file containing the +// call, the V call will log. +func V(level Level) Verbose { + // This function tries hard to be cheap unless there's work to do. + // The fast path is two atomic loads and compares. + + // Here is a cheap but safe test to see if V logging is enabled globally. + if logging.verbosity.get() >= level { + return Verbose(true) + } + + // It's off globally but it vmodule may still be set. + // Here is another cheap but safe test to see if vmodule is enabled. + if atomic.LoadInt32(&logging.filterLength) > 0 { + // Now we need a proper lock to use the logging structure. The pcs field + // is shared so we must lock before accessing it. This is fairly expensive, + // but if V logging is enabled we're slow anyway. + logging.mu.Lock() + defer logging.mu.Unlock() + if runtime.Callers(2, logging.pcs[:]) == 0 { + return Verbose(false) + } + v, ok := logging.vmap[logging.pcs[0]] + if !ok { + v = logging.setV(logging.pcs[0]) + } + return Verbose(v >= level) + } + return Verbose(false) +} + +// Info is equivalent to the global Info function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Info(args ...interface{}) { + if v { + logging.print(infoLog, args...) + } +} + +// Infoln is equivalent to the global Infoln function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Infoln(args ...interface{}) { + if v { + logging.println(infoLog, args...) + } +} + +// Infof is equivalent to the global Infof function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Infof(format string, args ...interface{}) { + if v { + logging.printf(infoLog, format, args...) + } +} + +// Info logs to the INFO log. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Info(args ...interface{}) { + logging.print(infoLog, args...) +} + +// InfoDepth acts as Info but uses depth to determine which call frame to log. +// InfoDepth(0, "msg") is the same as Info("msg"). +func InfoDepth(depth int, args ...interface{}) { + logging.printDepth(infoLog, depth, args...) +} + +// Infoln logs to the INFO log. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Infoln(args ...interface{}) { + logging.println(infoLog, args...) +} + +// Infof logs to the INFO log. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Infof(format string, args ...interface{}) { + logging.printf(infoLog, format, args...) +} + +// Warning logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Warning(args ...interface{}) { + logging.print(warningLog, args...) +} + +// WarningDepth acts as Warning but uses depth to determine which call frame to log. +// WarningDepth(0, "msg") is the same as Warning("msg"). +func WarningDepth(depth int, args ...interface{}) { + logging.printDepth(warningLog, depth, args...) +} + +// Warningln logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Warningln(args ...interface{}) { + logging.println(warningLog, args...) +} + +// Warningf logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Warningf(format string, args ...interface{}) { + logging.printf(warningLog, format, args...) +} + +// Error logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Error(args ...interface{}) { + logging.print(errorLog, args...) +} + +// ErrorDepth acts as Error but uses depth to determine which call frame to log. +// ErrorDepth(0, "msg") is the same as Error("msg"). +func ErrorDepth(depth int, args ...interface{}) { + logging.printDepth(errorLog, depth, args...) +} + +// Errorln logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Errorln(args ...interface{}) { + logging.println(errorLog, args...) +} + +// Errorf logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Errorf(format string, args ...interface{}) { + logging.printf(errorLog, format, args...) +} + +// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Fatal(args ...interface{}) { + logging.print(fatalLog, args...) +} + +// FatalDepth acts as Fatal but uses depth to determine which call frame to log. +// FatalDepth(0, "msg") is the same as Fatal("msg"). +func FatalDepth(depth int, args ...interface{}) { + logging.printDepth(fatalLog, depth, args...) +} + +// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Fatalln(args ...interface{}) { + logging.println(fatalLog, args...) +} + +// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Fatalf(format string, args ...interface{}) { + logging.printf(fatalLog, format, args...) +} + +// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks. +// It allows Exit and relatives to use the Fatal logs. +var fatalNoStacks uint32 + +// Exit logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Exit(args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.print(fatalLog, args...) +} + +// ExitDepth acts as Exit but uses depth to determine which call frame to log. +// ExitDepth(0, "msg") is the same as Exit("msg"). +func ExitDepth(depth int, args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.printDepth(fatalLog, depth, args...) +} + +// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +func Exitln(args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.println(fatalLog, args...) +} + +// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Exitf(format string, args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.printf(fatalLog, format, args...) +} diff --git a/vendor/github.com/golang/glog/glog_file.go b/vendor/github.com/golang/glog/glog_file.go new file mode 100644 index 000000000..65075d281 --- /dev/null +++ b/vendor/github.com/golang/glog/glog_file.go @@ -0,0 +1,124 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// File I/O for logs. + +package glog + +import ( + "errors" + "flag" + "fmt" + "os" + "os/user" + "path/filepath" + "strings" + "sync" + "time" +) + +// MaxSize is the maximum size of a log file in bytes. +var MaxSize uint64 = 1024 * 1024 * 1800 + +// logDirs lists the candidate directories for new log files. +var logDirs []string + +// If non-empty, overrides the choice of directory in which to write logs. +// See createLogDirs for the full list of possible destinations. +var logDir = flag.String("log_dir", "", "If non-empty, write log files in this directory") + +func createLogDirs() { + if *logDir != "" { + logDirs = append(logDirs, *logDir) + } + logDirs = append(logDirs, os.TempDir()) +} + +var ( + pid = os.Getpid() + program = filepath.Base(os.Args[0]) + host = "unknownhost" + userName = "unknownuser" +) + +func init() { + h, err := os.Hostname() + if err == nil { + host = shortHostname(h) + } + + current, err := user.Current() + if err == nil { + userName = current.Username + } + + // Sanitize userName since it may contain filepath separators on Windows. + userName = strings.Replace(userName, `\`, "_", -1) +} + +// shortHostname returns its argument, truncating at the first period. +// For instance, given "www.google.com" it returns "www". +func shortHostname(hostname string) string { + if i := strings.Index(hostname, "."); i >= 0 { + return hostname[:i] + } + return hostname +} + +// logName returns a new log file name containing tag, with start time t, and +// the name for the symlink for tag. +func logName(tag string, t time.Time) (name, link string) { + name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d", + program, + host, + userName, + tag, + t.Year(), + t.Month(), + t.Day(), + t.Hour(), + t.Minute(), + t.Second(), + pid) + return name, program + "." + tag +} + +var onceLogDirs sync.Once + +// create creates a new log file and returns the file and its filename, which +// contains tag ("INFO", "FATAL", etc.) and t. If the file is created +// successfully, create also attempts to update the symlink for that tag, ignoring +// errors. +func create(tag string, t time.Time) (f *os.File, filename string, err error) { + onceLogDirs.Do(createLogDirs) + if len(logDirs) == 0 { + return nil, "", errors.New("log: no log dirs") + } + name, link := logName(tag, t) + var lastErr error + for _, dir := range logDirs { + fname := filepath.Join(dir, name) + f, err := os.Create(fname) + if err == nil { + symlink := filepath.Join(dir, link) + os.Remove(symlink) // ignore err + os.Symlink(name, symlink) // ignore err + return f, fname, nil + } + lastErr = err + } + return nil, "", fmt.Errorf("log: cannot create log: %v", lastErr) +} diff --git a/vendor/github.com/golang/glog/glog_test.go b/vendor/github.com/golang/glog/glog_test.go new file mode 100644 index 000000000..0fb376e1f --- /dev/null +++ b/vendor/github.com/golang/glog/glog_test.go @@ -0,0 +1,415 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package glog + +import ( + "bytes" + "fmt" + stdLog "log" + "path/filepath" + "runtime" + "strconv" + "strings" + "testing" + "time" +) + +// Test that shortHostname works as advertised. +func TestShortHostname(t *testing.T) { + for hostname, expect := range map[string]string{ + "": "", + "host": "host", + "host.google.com": "host", + } { + if got := shortHostname(hostname); expect != got { + t.Errorf("shortHostname(%q): expected %q, got %q", hostname, expect, got) + } + } +} + +// flushBuffer wraps a bytes.Buffer to satisfy flushSyncWriter. +type flushBuffer struct { + bytes.Buffer +} + +func (f *flushBuffer) Flush() error { + return nil +} + +func (f *flushBuffer) Sync() error { + return nil +} + +// swap sets the log writers and returns the old array. +func (l *loggingT) swap(writers [numSeverity]flushSyncWriter) (old [numSeverity]flushSyncWriter) { + l.mu.Lock() + defer l.mu.Unlock() + old = l.file + for i, w := range writers { + logging.file[i] = w + } + return +} + +// newBuffers sets the log writers to all new byte buffers and returns the old array. +func (l *loggingT) newBuffers() [numSeverity]flushSyncWriter { + return l.swap([numSeverity]flushSyncWriter{new(flushBuffer), new(flushBuffer), new(flushBuffer), new(flushBuffer)}) +} + +// contents returns the specified log value as a string. +func contents(s severity) string { + return logging.file[s].(*flushBuffer).String() +} + +// contains reports whether the string is contained in the log. +func contains(s severity, str string, t *testing.T) bool { + return strings.Contains(contents(s), str) +} + +// setFlags configures the logging flags how the test expects them. +func setFlags() { + logging.toStderr = false +} + +// Test that Info works as advertised. +func TestInfo(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + Info("test") + if !contains(infoLog, "I", t) { + t.Errorf("Info has wrong character: %q", contents(infoLog)) + } + if !contains(infoLog, "test", t) { + t.Error("Info failed") + } +} + +func TestInfoDepth(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + + f := func() { InfoDepth(1, "depth-test1") } + + // The next three lines must stay together + _, _, wantLine, _ := runtime.Caller(0) + InfoDepth(0, "depth-test0") + f() + + msgs := strings.Split(strings.TrimSuffix(contents(infoLog), "\n"), "\n") + if len(msgs) != 2 { + t.Fatalf("Got %d lines, expected 2", len(msgs)) + } + + for i, m := range msgs { + if !strings.HasPrefix(m, "I") { + t.Errorf("InfoDepth[%d] has wrong character: %q", i, m) + } + w := fmt.Sprintf("depth-test%d", i) + if !strings.Contains(m, w) { + t.Errorf("InfoDepth[%d] missing %q: %q", i, w, m) + } + + // pull out the line number (between : and ]) + msg := m[strings.LastIndex(m, ":")+1:] + x := strings.Index(msg, "]") + if x < 0 { + t.Errorf("InfoDepth[%d]: missing ']': %q", i, m) + continue + } + line, err := strconv.Atoi(msg[:x]) + if err != nil { + t.Errorf("InfoDepth[%d]: bad line number: %q", i, m) + continue + } + wantLine++ + if wantLine != line { + t.Errorf("InfoDepth[%d]: got line %d, want %d", i, line, wantLine) + } + } +} + +func init() { + CopyStandardLogTo("INFO") +} + +// Test that CopyStandardLogTo panics on bad input. +func TestCopyStandardLogToPanic(t *testing.T) { + defer func() { + if s, ok := recover().(string); !ok || !strings.Contains(s, "LOG") { + t.Errorf(`CopyStandardLogTo("LOG") should have panicked: %v`, s) + } + }() + CopyStandardLogTo("LOG") +} + +// Test that using the standard log package logs to INFO. +func TestStandardLog(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + stdLog.Print("test") + if !contains(infoLog, "I", t) { + t.Errorf("Info has wrong character: %q", contents(infoLog)) + } + if !contains(infoLog, "test", t) { + t.Error("Info failed") + } +} + +// Test that the header has the correct format. +func TestHeader(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + defer func(previous func() time.Time) { timeNow = previous }(timeNow) + timeNow = func() time.Time { + return time.Date(2006, 1, 2, 15, 4, 5, .067890e9, time.Local) + } + pid = 1234 + Info("test") + var line int + format := "I0102 15:04:05.067890 1234 glog_test.go:%d] test\n" + n, err := fmt.Sscanf(contents(infoLog), format, &line) + if n != 1 || err != nil { + t.Errorf("log format error: %d elements, error %s:\n%s", n, err, contents(infoLog)) + } + // Scanf treats multiple spaces as equivalent to a single space, + // so check for correct space-padding also. + want := fmt.Sprintf(format, line) + if contents(infoLog) != want { + t.Errorf("log format error: got:\n\t%q\nwant:\t%q", contents(infoLog), want) + } +} + +// Test that an Error log goes to Warning and Info. +// Even in the Info log, the source character will be E, so the data should +// all be identical. +func TestError(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + Error("test") + if !contains(errorLog, "E", t) { + t.Errorf("Error has wrong character: %q", contents(errorLog)) + } + if !contains(errorLog, "test", t) { + t.Error("Error failed") + } + str := contents(errorLog) + if !contains(warningLog, str, t) { + t.Error("Warning failed") + } + if !contains(infoLog, str, t) { + t.Error("Info failed") + } +} + +// Test that a Warning log goes to Info. +// Even in the Info log, the source character will be W, so the data should +// all be identical. +func TestWarning(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + Warning("test") + if !contains(warningLog, "W", t) { + t.Errorf("Warning has wrong character: %q", contents(warningLog)) + } + if !contains(warningLog, "test", t) { + t.Error("Warning failed") + } + str := contents(warningLog) + if !contains(infoLog, str, t) { + t.Error("Info failed") + } +} + +// Test that a V log goes to Info. +func TestV(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + logging.verbosity.Set("2") + defer logging.verbosity.Set("0") + V(2).Info("test") + if !contains(infoLog, "I", t) { + t.Errorf("Info has wrong character: %q", contents(infoLog)) + } + if !contains(infoLog, "test", t) { + t.Error("Info failed") + } +} + +// Test that a vmodule enables a log in this file. +func TestVmoduleOn(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + logging.vmodule.Set("glog_test=2") + defer logging.vmodule.Set("") + if !V(1) { + t.Error("V not enabled for 1") + } + if !V(2) { + t.Error("V not enabled for 2") + } + if V(3) { + t.Error("V enabled for 3") + } + V(2).Info("test") + if !contains(infoLog, "I", t) { + t.Errorf("Info has wrong character: %q", contents(infoLog)) + } + if !contains(infoLog, "test", t) { + t.Error("Info failed") + } +} + +// Test that a vmodule of another file does not enable a log in this file. +func TestVmoduleOff(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + logging.vmodule.Set("notthisfile=2") + defer logging.vmodule.Set("") + for i := 1; i <= 3; i++ { + if V(Level(i)) { + t.Errorf("V enabled for %d", i) + } + } + V(2).Info("test") + if contents(infoLog) != "" { + t.Error("V logged incorrectly") + } +} + +// vGlobs are patterns that match/don't match this file at V=2. +var vGlobs = map[string]bool{ + // Easy to test the numeric match here. + "glog_test=1": false, // If -vmodule sets V to 1, V(2) will fail. + "glog_test=2": true, + "glog_test=3": true, // If -vmodule sets V to 1, V(3) will succeed. + // These all use 2 and check the patterns. All are true. + "*=2": true, + "?l*=2": true, + "????_*=2": true, + "??[mno]?_*t=2": true, + // These all use 2 and check the patterns. All are false. + "*x=2": false, + "m*=2": false, + "??_*=2": false, + "?[abc]?_*t=2": false, +} + +// Test that vmodule globbing works as advertised. +func testVmoduleGlob(pat string, match bool, t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + defer logging.vmodule.Set("") + logging.vmodule.Set(pat) + if V(2) != Verbose(match) { + t.Errorf("incorrect match for %q: got %t expected %t", pat, V(2), match) + } +} + +// Test that a vmodule globbing works as advertised. +func TestVmoduleGlob(t *testing.T) { + for glob, match := range vGlobs { + testVmoduleGlob(glob, match, t) + } +} + +func TestRollover(t *testing.T) { + setFlags() + var err error + defer func(previous func(error)) { logExitFunc = previous }(logExitFunc) + logExitFunc = func(e error) { + err = e + } + defer func(previous uint64) { MaxSize = previous }(MaxSize) + MaxSize = 512 + + Info("x") // Be sure we have a file. + info, ok := logging.file[infoLog].(*syncBuffer) + if !ok { + t.Fatal("info wasn't created") + } + if err != nil { + t.Fatalf("info has initial error: %v", err) + } + fname0 := info.file.Name() + Info(strings.Repeat("x", int(MaxSize))) // force a rollover + if err != nil { + t.Fatalf("info has error after big write: %v", err) + } + + // Make sure the next log file gets a file name with a different + // time stamp. + // + // TODO: determine whether we need to support subsecond log + // rotation. C++ does not appear to handle this case (nor does it + // handle Daylight Savings Time properly). + time.Sleep(1 * time.Second) + + Info("x") // create a new file + if err != nil { + t.Fatalf("error after rotation: %v", err) + } + fname1 := info.file.Name() + if fname0 == fname1 { + t.Errorf("info.f.Name did not change: %v", fname0) + } + if info.nbytes >= MaxSize { + t.Errorf("file size was not reset: %d", info.nbytes) + } +} + +func TestLogBacktraceAt(t *testing.T) { + setFlags() + defer logging.swap(logging.newBuffers()) + // The peculiar style of this code simplifies line counting and maintenance of the + // tracing block below. + var infoLine string + setTraceLocation := func(file string, line int, ok bool, delta int) { + if !ok { + t.Fatal("could not get file:line") + } + _, file = filepath.Split(file) + infoLine = fmt.Sprintf("%s:%d", file, line+delta) + err := logging.traceLocation.Set(infoLine) + if err != nil { + t.Fatal("error setting log_backtrace_at: ", err) + } + } + { + // Start of tracing block. These lines know about each other's relative position. + _, file, line, ok := runtime.Caller(0) + setTraceLocation(file, line, ok, +2) // Two lines between Caller and Info calls. + Info("we want a stack trace here") + } + numAppearances := strings.Count(contents(infoLog), infoLine) + if numAppearances < 2 { + // Need 2 appearances, one in the log header and one in the trace: + // log_test.go:281: I0511 16:36:06.952398 02238 log_test.go:280] we want a stack trace here + // ... + // github.com/glog/glog_test.go:280 (0x41ba91) + // ... + // We could be more precise but that would require knowing the details + // of the traceback format, which may not be dependable. + t.Fatal("got no trace back; log is ", contents(infoLog)) + } +} + +func BenchmarkHeader(b *testing.B) { + for i := 0; i < b.N; i++ { + buf, _, _ := logging.header(infoLog, 0) + logging.putBuffer(buf) + } +} diff --git a/vendor/github.com/golang/protobuf/README.md b/vendor/github.com/golang/protobuf/README.md index e560b7321..037fc7c8e 100644 --- a/vendor/github.com/golang/protobuf/README.md +++ b/vendor/github.com/golang/protobuf/README.md @@ -22,7 +22,7 @@ To use this software, you must: for details or, if you are using gccgo, follow the instructions at https://golang.org/doc/install/gccgo - Grab the code from the repository and install the proto package. - The simplest way is to run `go get -u github.com/golang/protobuf/protoc-gen-go`. + The simplest way is to run `go get -u github.com/golang/protobuf/{proto,protoc-gen-go}`. The compiler plugin, protoc-gen-go, will be installed in $GOBIN, defaulting to $GOPATH/bin. It must be in your $PATH for the protocol compiler, protoc, to find it. @@ -104,6 +104,7 @@ for a protocol buffer variable v: When the .proto file specifies `syntax="proto3"`, there are some differences: - Non-repeated fields of non-message type are values instead of pointers. + - Getters are only generated for message and oneof fields. - Enum types do not get an Enum method. Consider file test.proto, containing diff --git a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go b/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go index ec354eada..2caf992c7 100644 --- a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go +++ b/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: conformance_proto/conformance.proto +// DO NOT EDIT! /* Package conformance is a generated protocol buffer package. @@ -168,13 +169,6 @@ func (m *ConformanceRequest) GetJsonPayload() string { return "" } -func (m *ConformanceRequest) GetRequestedOutputFormat() WireFormat { - if m != nil { - return m.RequestedOutputFormat - } - return WireFormat_UNSPECIFIED -} - // XXX_OneofFuncs is for the internal use of the proto package. func (*ConformanceRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _ConformanceRequest_OneofMarshaler, _ConformanceRequest_OneofUnmarshaler, _ConformanceRequest_OneofSizer, []interface{}{ @@ -577,22 +571,22 @@ type TestAllTypes struct { // (protobuf says names can be any valid C/C++ identifier.) Fieldname1 int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"` FieldName2 int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"` - XFieldName3 int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"` + XFieldName3 int32 `protobuf:"varint,403,opt,name=_field_name3,json=fieldName3" json:"_field_name3,omitempty"` Field_Name4_ int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"` Field0Name5 int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"` Field_0Name6 int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"` FieldName7 int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"` - FieldName8 int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"` + FieldName8 int32 `protobuf:"varint,408,opt,name=FieldName8,json=fieldName8" json:"FieldName8,omitempty"` Field_Name9 int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"` - Field_Name10 int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"` - FIELD_NAME11 int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"` - FIELDName12 int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"` - XFieldName13 int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"` - X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"` + Field_Name10 int32 `protobuf:"varint,410,opt,name=Field_Name10,json=fieldName10" json:"Field_Name10,omitempty"` + FIELD_NAME11 int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=fIELDNAME11" json:"FIELD_NAME11,omitempty"` + FIELDName12 int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=fIELDName12" json:"FIELD_name12,omitempty"` + XFieldName13 int32 `protobuf:"varint,413,opt,name=__field_name13,json=fieldName13" json:"__field_name13,omitempty"` + X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=fieldName14" json:"__Field_name14,omitempty"` Field_Name15 int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"` Field__Name16 int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"` FieldName17__ int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"` - FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"` + FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=fieldName18" json:"Field_name18__,omitempty"` } func (m *TestAllTypes) Reset() { *m = TestAllTypes{} } @@ -649,111 +643,6 @@ func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField { return nil } -func (m *TestAllTypes) GetOptionalInt32() int32 { - if m != nil { - return m.OptionalInt32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalInt64() int64 { - if m != nil { - return m.OptionalInt64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalUint32() uint32 { - if m != nil { - return m.OptionalUint32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalUint64() uint64 { - if m != nil { - return m.OptionalUint64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSint32() int32 { - if m != nil { - return m.OptionalSint32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSint64() int64 { - if m != nil { - return m.OptionalSint64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFixed32() uint32 { - if m != nil { - return m.OptionalFixed32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFixed64() uint64 { - if m != nil { - return m.OptionalFixed64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSfixed32() int32 { - if m != nil { - return m.OptionalSfixed32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSfixed64() int64 { - if m != nil { - return m.OptionalSfixed64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFloat() float32 { - if m != nil { - return m.OptionalFloat - } - return 0 -} - -func (m *TestAllTypes) GetOptionalDouble() float64 { - if m != nil { - return m.OptionalDouble - } - return 0 -} - -func (m *TestAllTypes) GetOptionalBool() bool { - if m != nil { - return m.OptionalBool - } - return false -} - -func (m *TestAllTypes) GetOptionalString() string { - if m != nil { - return m.OptionalString - } - return "" -} - -func (m *TestAllTypes) GetOptionalBytes() []byte { - if m != nil { - return m.OptionalBytes - } - return nil -} - func (m *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage { if m != nil { return m.OptionalNestedMessage @@ -768,34 +657,6 @@ func (m *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage { return nil } -func (m *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum { - if m != nil { - return m.OptionalNestedEnum - } - return TestAllTypes_FOO -} - -func (m *TestAllTypes) GetOptionalForeignEnum() ForeignEnum { - if m != nil { - return m.OptionalForeignEnum - } - return ForeignEnum_FOREIGN_FOO -} - -func (m *TestAllTypes) GetOptionalStringPiece() string { - if m != nil { - return m.OptionalStringPiece - } - return "" -} - -func (m *TestAllTypes) GetOptionalCord() string { - if m != nil { - return m.OptionalCord - } - return "" -} - func (m *TestAllTypes) GetRecursiveMessage() *TestAllTypes { if m != nil { return m.RecursiveMessage @@ -803,111 +664,6 @@ func (m *TestAllTypes) GetRecursiveMessage() *TestAllTypes { return nil } -func (m *TestAllTypes) GetRepeatedInt32() []int32 { - if m != nil { - return m.RepeatedInt32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedInt64() []int64 { - if m != nil { - return m.RepeatedInt64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint32() []uint32 { - if m != nil { - return m.RepeatedUint32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint64() []uint64 { - if m != nil { - return m.RepeatedUint64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSint32() []int32 { - if m != nil { - return m.RepeatedSint32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSint64() []int64 { - if m != nil { - return m.RepeatedSint64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFixed32() []uint32 { - if m != nil { - return m.RepeatedFixed32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFixed64() []uint64 { - if m != nil { - return m.RepeatedFixed64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSfixed32() []int32 { - if m != nil { - return m.RepeatedSfixed32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSfixed64() []int64 { - if m != nil { - return m.RepeatedSfixed64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFloat() []float32 { - if m != nil { - return m.RepeatedFloat - } - return nil -} - -func (m *TestAllTypes) GetRepeatedDouble() []float64 { - if m != nil { - return m.RepeatedDouble - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBool() []bool { - if m != nil { - return m.RepeatedBool - } - return nil -} - -func (m *TestAllTypes) GetRepeatedString() []string { - if m != nil { - return m.RepeatedString - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBytes() [][]byte { - if m != nil { - return m.RepeatedBytes - } - return nil -} - func (m *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage { if m != nil { return m.RepeatedNestedMessage @@ -922,34 +678,6 @@ func (m *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage { return nil } -func (m *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum { - if m != nil { - return m.RepeatedNestedEnum - } - return nil -} - -func (m *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum { - if m != nil { - return m.RepeatedForeignEnum - } - return nil -} - -func (m *TestAllTypes) GetRepeatedStringPiece() []string { - if m != nil { - return m.RepeatedStringPiece - } - return nil -} - -func (m *TestAllTypes) GetRepeatedCord() []string { - if m != nil { - return m.RepeatedCord - } - return nil -} - func (m *TestAllTypes) GetMapInt32Int32() map[int32]int32 { if m != nil { return m.MapInt32Int32 @@ -1356,132 +1084,6 @@ func (m *TestAllTypes) GetRepeatedValue() []*google_protobuf3.Value { return nil } -func (m *TestAllTypes) GetFieldname1() int32 { - if m != nil { - return m.Fieldname1 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName2() int32 { - if m != nil { - return m.FieldName2 - } - return 0 -} - -func (m *TestAllTypes) GetXFieldName3() int32 { - if m != nil { - return m.XFieldName3 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name4_() int32 { - if m != nil { - return m.Field_Name4_ - } - return 0 -} - -func (m *TestAllTypes) GetField0Name5() int32 { - if m != nil { - return m.Field0Name5 - } - return 0 -} - -func (m *TestAllTypes) GetField_0Name6() int32 { - if m != nil { - return m.Field_0Name6 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName7() int32 { - if m != nil { - return m.FieldName7 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName8() int32 { - if m != nil { - return m.FieldName8 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name9() int32 { - if m != nil { - return m.Field_Name9 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name10() int32 { - if m != nil { - return m.Field_Name10 - } - return 0 -} - -func (m *TestAllTypes) GetFIELD_NAME11() int32 { - if m != nil { - return m.FIELD_NAME11 - } - return 0 -} - -func (m *TestAllTypes) GetFIELDName12() int32 { - if m != nil { - return m.FIELDName12 - } - return 0 -} - -func (m *TestAllTypes) GetXFieldName13() int32 { - if m != nil { - return m.XFieldName13 - } - return 0 -} - -func (m *TestAllTypes) GetX_FieldName14() int32 { - if m != nil { - return m.X_FieldName14 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name15() int32 { - if m != nil { - return m.Field_Name15 - } - return 0 -} - -func (m *TestAllTypes) GetField__Name16() int32 { - if m != nil { - return m.Field__Name16 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName17__() int32 { - if m != nil { - return m.FieldName17__ - } - return 0 -} - -func (m *TestAllTypes) GetFieldName18__() int32 { - if m != nil { - return m.FieldName18__ - } - return 0 -} - // XXX_OneofFuncs is for the internal use of the proto package. func (*TestAllTypes) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _TestAllTypes_OneofMarshaler, _TestAllTypes_OneofUnmarshaler, _TestAllTypes_OneofSizer, []interface{}{ @@ -1665,13 +1267,6 @@ func (m *TestAllTypes_NestedMessage) String() string { return proto.C func (*TestAllTypes_NestedMessage) ProtoMessage() {} func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } -func (m *TestAllTypes_NestedMessage) GetA() int32 { - if m != nil { - return m.A - } - return 0 -} - func (m *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes { if m != nil { return m.Corecursive @@ -1688,13 +1283,6 @@ func (m *ForeignMessage) String() string { return proto.CompactTextSt func (*ForeignMessage) ProtoMessage() {} func (*ForeignMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } -func (m *ForeignMessage) GetC() int32 { - if m != nil { - return m.C - } - return 0 -} - func init() { proto.RegisterType((*ConformanceRequest)(nil), "conformance.ConformanceRequest") proto.RegisterType((*ConformanceResponse)(nil), "conformance.ConformanceResponse") @@ -1709,177 +1297,176 @@ func init() { func init() { proto.RegisterFile("conformance_proto/conformance.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2737 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8, + // 2731 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8, 0xd5, 0x16, 0x08, 0x59, 0x4b, 0x93, 0x92, 0xa8, 0xd6, 0xd6, 0x96, 0x5d, 0x63, 0x58, 0xb2, 0x7f, - 0xd3, 0xf6, 0x8c, 0xac, 0x05, 0x86, 0x65, 0xcf, 0x3f, 0x8e, 0x45, 0x9b, 0xb4, 0xe4, 0x8c, 0x25, - 0x17, 0x64, 0x8d, 0xab, 0x9c, 0x0b, 0x06, 0xa6, 0x20, 0x15, 0xc7, 0x24, 0xc1, 0x01, 0x48, 0x4f, - 0x94, 0xcb, 0xbc, 0x41, 0xf6, 0x7d, 0xbd, 0xcf, 0x7a, 0x93, 0xa4, 0x92, 0xab, 0x54, 0x6e, 0xb2, - 0x27, 0x95, 0x3d, 0x79, 0x85, 0xbc, 0x43, 0x52, 0xbd, 0xa2, 0xbb, 0x01, 0x50, 0xf4, 0x54, 0x0d, - 0x25, 0x1e, 0x7c, 0xfd, 0x9d, 0xd3, 0xe7, 0x1c, 0x7c, 0x2d, 0x1c, 0x18, 0x2c, 0xd7, 0x83, 0xf6, - 0x51, 0x10, 0xb6, 0xbc, 0x76, 0xdd, 0xaf, 0x75, 0xc2, 0xa0, 0x1b, 0xdc, 0x90, 0x2c, 0x2b, 0xc4, - 0x02, 0xf3, 0x92, 0x69, 0xf1, 0xec, 0x71, 0x10, 0x1c, 0x37, 0xfd, 0x1b, 0xe4, 0xd2, 0x8b, 0xde, - 0xd1, 0x0d, 0xaf, 0x7d, 0x42, 0x71, 0x8b, 0x6f, 0xe8, 0x97, 0x0e, 0x7b, 0xa1, 0xd7, 0x6d, 0x04, - 0x6d, 0x76, 0xdd, 0xd2, 0xaf, 0x1f, 0x35, 0xfc, 0xe6, 0x61, 0xad, 0xe5, 0x45, 0x2f, 0x19, 0xe2, - 0xbc, 0x8e, 0x88, 0xba, 0x61, 0xaf, 0xde, 0x65, 0x57, 0x2f, 0xe8, 0x57, 0xbb, 0x8d, 0x96, 0x1f, - 0x75, 0xbd, 0x56, 0x27, 0x2b, 0x80, 0x0f, 0x43, 0xaf, 0xd3, 0xf1, 0xc3, 0x88, 0x5e, 0x5f, 0xfa, - 0x85, 0x01, 0xe0, 0xfd, 0x78, 0x2f, 0xae, 0xff, 0x41, 0xcf, 0x8f, 0xba, 0xf0, 0x3a, 0x28, 0xf2, - 0x15, 0xb5, 0x8e, 0x77, 0xd2, 0x0c, 0xbc, 0x43, 0x64, 0x58, 0x46, 0xa9, 0xb0, 0x3d, 0xe4, 0x4e, - 0xf1, 0x2b, 0x4f, 0xe8, 0x05, 0xb8, 0x0c, 0x0a, 0xef, 0x47, 0x41, 0x5b, 0x00, 0x73, 0x96, 0x51, - 0x1a, 0xdf, 0x1e, 0x72, 0xf3, 0xd8, 0xca, 0x41, 0x7b, 0x60, 0x21, 0xa4, 0xe4, 0xfe, 0x61, 0x2d, - 0xe8, 0x75, 0x3b, 0xbd, 0x6e, 0x8d, 0x78, 0xed, 0x22, 0xd3, 0x32, 0x4a, 0x93, 0xeb, 0x0b, 0x2b, - 0x72, 0x9a, 0x9f, 0x35, 0x42, 0xbf, 0x4a, 0x2e, 0xbb, 0x73, 0x62, 0xdd, 0x1e, 0x59, 0x46, 0xcd, - 0xe5, 0x71, 0x30, 0xca, 0x1c, 0x2e, 0x7d, 0x2a, 0x07, 0x66, 0x94, 0x4d, 0x44, 0x9d, 0xa0, 0x1d, - 0xf9, 0xf0, 0x22, 0xc8, 0x77, 0xbc, 0x30, 0xf2, 0x6b, 0x7e, 0x18, 0x06, 0x21, 0xd9, 0x00, 0x8e, - 0x0b, 0x10, 0x63, 0x05, 0xdb, 0xe0, 0x55, 0x30, 0x15, 0xf9, 0x61, 0xc3, 0x6b, 0x36, 0x3e, 0xc9, - 0x61, 0x23, 0x0c, 0x36, 0x29, 0x2e, 0x50, 0xe8, 0x65, 0x30, 0x11, 0xf6, 0xda, 0x38, 0xc1, 0x0c, - 0xc8, 0xf7, 0x59, 0x60, 0x66, 0x0a, 0x4b, 0x4b, 0x9d, 0x39, 0x68, 0xea, 0x86, 0xd3, 0x52, 0xb7, - 0x08, 0x46, 0xa3, 0x97, 0x8d, 0x4e, 0xc7, 0x3f, 0x44, 0x67, 0xd8, 0x75, 0x6e, 0x28, 0x8f, 0x81, - 0x91, 0xd0, 0x8f, 0x7a, 0xcd, 0xee, 0xd2, 0x7f, 0xaa, 0xa0, 0xf0, 0xd4, 0x8f, 0xba, 0x5b, 0xcd, - 0xe6, 0xd3, 0x93, 0x8e, 0x1f, 0xc1, 0xcb, 0x60, 0x32, 0xe8, 0xe0, 0x5e, 0xf3, 0x9a, 0xb5, 0x46, - 0xbb, 0xbb, 0xb1, 0x4e, 0x12, 0x70, 0xc6, 0x9d, 0xe0, 0xd6, 0x1d, 0x6c, 0xd4, 0x61, 0x8e, 0x4d, - 0xf6, 0x65, 0x2a, 0x30, 0xc7, 0x86, 0x57, 0xc0, 0x94, 0x80, 0xf5, 0x28, 0x1d, 0xde, 0xd5, 0x84, - 0x2b, 0x56, 0x1f, 0x10, 0x6b, 0x02, 0xe8, 0xd8, 0x64, 0x57, 0xc3, 0x2a, 0x50, 0x63, 0x8c, 0x28, - 0x23, 0xde, 0xde, 0x74, 0x0c, 0xdc, 0x4f, 0x32, 0x46, 0x94, 0x11, 0xd7, 0x08, 0xaa, 0x40, 0xc7, - 0x86, 0x57, 0x41, 0x51, 0x00, 0x8f, 0x1a, 0x9f, 0xf0, 0x0f, 0x37, 0xd6, 0xd1, 0xa8, 0x65, 0x94, - 0x46, 0x5d, 0x41, 0x50, 0xa5, 0xe6, 0x24, 0xd4, 0xb1, 0xd1, 0x98, 0x65, 0x94, 0x46, 0x34, 0xa8, - 0x63, 0xc3, 0xeb, 0x60, 0x3a, 0x76, 0xcf, 0x69, 0xc7, 0x2d, 0xa3, 0x34, 0xe5, 0x0a, 0x8e, 0x7d, - 0x66, 0x4f, 0x01, 0x3b, 0x36, 0x02, 0x96, 0x51, 0x2a, 0xea, 0x60, 0xc7, 0x56, 0x52, 0x7f, 0xd4, - 0x0c, 0xbc, 0x2e, 0xca, 0x5b, 0x46, 0x29, 0x17, 0xa7, 0xbe, 0x8a, 0x8d, 0xca, 0xfe, 0x0f, 0x83, - 0xde, 0x8b, 0xa6, 0x8f, 0x0a, 0x96, 0x51, 0x32, 0xe2, 0xfd, 0x3f, 0x20, 0x56, 0xb8, 0x0c, 0xc4, - 0xca, 0xda, 0x8b, 0x20, 0x68, 0xa2, 0x09, 0xcb, 0x28, 0x8d, 0xb9, 0x05, 0x6e, 0x2c, 0x07, 0x41, + 0xd3, 0xf6, 0x8c, 0x6c, 0x49, 0x30, 0x2c, 0x7b, 0xfe, 0x71, 0x2c, 0xda, 0xa4, 0x25, 0x67, 0x2c, + 0xb9, 0x20, 0x6b, 0x5c, 0xe5, 0x5c, 0x30, 0x10, 0x05, 0xa9, 0x38, 0x26, 0x09, 0x0e, 0x40, 0x7a, + 0xa2, 0x5c, 0xe6, 0x0d, 0xb2, 0xef, 0xeb, 0x7d, 0xd6, 0x9b, 0x24, 0x95, 0x5c, 0xa5, 0x72, 0x93, + 0x3d, 0xa9, 0xec, 0xc9, 0x2b, 0xe4, 0x1d, 0x92, 0xea, 0x15, 0xdd, 0x0d, 0x80, 0xa2, 0xa7, 0x6a, + 0x28, 0xf1, 0xe0, 0xeb, 0xef, 0x9c, 0x3e, 0xe7, 0xe0, 0x6b, 0xe1, 0xc0, 0x60, 0xb9, 0x1e, 0xb4, + 0x8f, 0x82, 0xb0, 0xe5, 0xb5, 0xeb, 0x7e, 0xad, 0x13, 0x06, 0xdd, 0xe0, 0x86, 0x64, 0x59, 0x21, + 0x16, 0x98, 0x97, 0x4c, 0x8b, 0x67, 0x8f, 0x83, 0xe0, 0xb8, 0xe9, 0xdf, 0x20, 0x97, 0x0e, 0x7a, + 0x47, 0x37, 0xbc, 0xf6, 0x09, 0xc5, 0x2d, 0xbe, 0xa1, 0x5f, 0x3a, 0xec, 0x85, 0x5e, 0xb7, 0x11, + 0xb4, 0xd9, 0x75, 0x4b, 0xbf, 0x7e, 0xd4, 0xf0, 0x9b, 0x87, 0xb5, 0x96, 0x17, 0xbd, 0x64, 0x88, + 0xf3, 0x3a, 0x22, 0xea, 0x86, 0xbd, 0x7a, 0x97, 0x5d, 0xbd, 0xa0, 0x5f, 0xed, 0x36, 0x5a, 0x7e, + 0xd4, 0xf5, 0x5a, 0x9d, 0xac, 0x00, 0x3e, 0x0c, 0xbd, 0x4e, 0xc7, 0x0f, 0x23, 0x7a, 0x7d, 0xe9, + 0x17, 0x06, 0x80, 0x0f, 0xe2, 0xbd, 0xb8, 0xfe, 0x07, 0x3d, 0x3f, 0xea, 0xc2, 0xeb, 0xa0, 0xc8, + 0x57, 0xd4, 0x3a, 0xde, 0x49, 0x33, 0xf0, 0x0e, 0x91, 0x61, 0x19, 0xa5, 0xc2, 0xd6, 0x90, 0x3b, + 0xc5, 0xaf, 0x3c, 0xa5, 0x17, 0xe0, 0x32, 0x28, 0xbc, 0x1f, 0x05, 0x6d, 0x01, 0xcc, 0x59, 0x46, + 0x69, 0x7c, 0x6b, 0xc8, 0xcd, 0x63, 0x2b, 0x07, 0xed, 0x82, 0x85, 0x90, 0x92, 0xfb, 0x87, 0xb5, + 0xa0, 0xd7, 0xed, 0xf4, 0xba, 0x35, 0xe2, 0xb5, 0x8b, 0x4c, 0xcb, 0x28, 0x4d, 0xae, 0x2d, 0xac, + 0xc8, 0x69, 0x7e, 0xde, 0x08, 0xfd, 0x2a, 0xb9, 0xec, 0xce, 0x89, 0x75, 0xbb, 0x64, 0x19, 0x35, + 0x97, 0xc7, 0xc1, 0x28, 0x73, 0xb8, 0xf4, 0xa9, 0x1c, 0x98, 0x51, 0x36, 0x11, 0x75, 0x82, 0x76, + 0xe4, 0xc3, 0x8b, 0x20, 0xdf, 0xf1, 0xc2, 0xc8, 0xaf, 0xf9, 0x61, 0x18, 0x84, 0x64, 0x03, 0x38, + 0x2e, 0x40, 0x8c, 0x15, 0x6c, 0x83, 0x57, 0xc1, 0x54, 0xe4, 0x87, 0x0d, 0xaf, 0xd9, 0xf8, 0x24, + 0x87, 0x8d, 0x30, 0xd8, 0xa4, 0xb8, 0x40, 0xa1, 0x97, 0xc1, 0x44, 0xd8, 0x6b, 0xe3, 0x04, 0x33, + 0x20, 0xdf, 0x67, 0x81, 0x99, 0x29, 0x2c, 0x2d, 0x75, 0xe6, 0xa0, 0xa9, 0x1b, 0x4e, 0x4b, 0xdd, + 0x22, 0x18, 0x8d, 0x5e, 0x36, 0x3a, 0x1d, 0xff, 0x10, 0x9d, 0x61, 0xd7, 0xb9, 0xa1, 0x3c, 0x06, + 0x46, 0x42, 0x3f, 0xea, 0x35, 0xbb, 0x4b, 0xff, 0xa9, 0x82, 0xc2, 0x33, 0x3f, 0xea, 0x6e, 0x36, + 0x9b, 0xcf, 0x4e, 0x3a, 0x7e, 0x04, 0x2f, 0x83, 0xc9, 0xa0, 0x83, 0x7b, 0xcd, 0x6b, 0xd6, 0x1a, + 0xed, 0xee, 0xfa, 0x1a, 0x49, 0xc0, 0x19, 0x77, 0x82, 0x5b, 0xb7, 0xb1, 0x51, 0x87, 0x39, 0x36, + 0xd9, 0x97, 0xa9, 0xc0, 0x1c, 0x1b, 0x5e, 0x01, 0x53, 0x02, 0xd6, 0xa3, 0x74, 0x78, 0x57, 0x13, + 0xae, 0x58, 0xbd, 0x4f, 0xac, 0x09, 0xa0, 0x63, 0x93, 0x5d, 0x0d, 0xab, 0x40, 0x8d, 0x31, 0xa2, + 0x8c, 0x78, 0x7b, 0xd3, 0x31, 0x70, 0x2f, 0xc9, 0x18, 0x51, 0x46, 0x5c, 0x23, 0xa8, 0x02, 0x1d, + 0x1b, 0x5e, 0x05, 0x45, 0x01, 0x3c, 0x6a, 0x7c, 0xc2, 0x3f, 0x5c, 0x5f, 0x43, 0xa3, 0x96, 0x51, + 0x1a, 0x75, 0x05, 0x41, 0x95, 0x9a, 0x93, 0x50, 0xc7, 0x46, 0x63, 0x96, 0x51, 0x1a, 0xd1, 0xa0, + 0x8e, 0x0d, 0xaf, 0x83, 0xe9, 0xd8, 0x3d, 0xa7, 0x1d, 0xb7, 0x8c, 0xd2, 0x94, 0x2b, 0x38, 0xf6, + 0x98, 0x3d, 0x05, 0xec, 0xd8, 0x08, 0x58, 0x46, 0xa9, 0xa8, 0x83, 0x1d, 0x5b, 0x49, 0xfd, 0x51, + 0x33, 0xf0, 0xba, 0x28, 0x6f, 0x19, 0xa5, 0x5c, 0x9c, 0xfa, 0x2a, 0x36, 0x2a, 0xfb, 0x3f, 0x0c, + 0x7a, 0x07, 0x4d, 0x1f, 0x15, 0x2c, 0xa3, 0x64, 0xc4, 0xfb, 0x7f, 0x48, 0xac, 0x70, 0x19, 0x88, + 0x95, 0xb5, 0x83, 0x20, 0x68, 0xa2, 0x09, 0xcb, 0x28, 0x8d, 0xb9, 0x05, 0x6e, 0x2c, 0x07, 0x41, 0x53, 0xcd, 0x66, 0x37, 0x6c, 0xb4, 0x8f, 0xd1, 0x24, 0xee, 0x2a, 0x29, 0x9b, 0xc4, 0xaa, 0x44, - 0xf7, 0xe2, 0xa4, 0xeb, 0x47, 0x68, 0x0a, 0xb7, 0x71, 0x1c, 0x5d, 0x19, 0x1b, 0x61, 0x0d, 0x2c, - 0x08, 0x58, 0x9b, 0xde, 0xde, 0x2d, 0x3f, 0x8a, 0xbc, 0x63, 0x1f, 0x41, 0xcb, 0x28, 0xe5, 0xd7, - 0xaf, 0x28, 0x37, 0xb6, 0xdc, 0xa2, 0x2b, 0xbb, 0x04, 0xff, 0x98, 0xc2, 0xdd, 0x39, 0xce, 0xa3, - 0x98, 0xe1, 0x01, 0x40, 0x71, 0x96, 0x82, 0xd0, 0x6f, 0x1c, 0xb7, 0x85, 0x87, 0x19, 0xe2, 0xe1, - 0x9c, 0xe2, 0xa1, 0x4a, 0x31, 0x9c, 0x75, 0x5e, 0x24, 0x53, 0xb1, 0xc3, 0xf7, 0xc0, 0xac, 0x1e, - 0xb7, 0xdf, 0xee, 0xb5, 0xd0, 0x1c, 0x51, 0xa3, 0x4b, 0xa7, 0x05, 0x5d, 0x69, 0xf7, 0x5a, 0x2e, - 0x54, 0x23, 0xc6, 0x36, 0xf8, 0x2e, 0x98, 0x4b, 0x84, 0x4b, 0x88, 0xe7, 0x09, 0x31, 0x4a, 0x8b, - 0x95, 0x90, 0xcd, 0x68, 0x81, 0x12, 0x36, 0x47, 0x62, 0xa3, 0xd5, 0xaa, 0x75, 0x1a, 0x7e, 0xdd, - 0x47, 0x08, 0xd7, 0xac, 0x9c, 0x1b, 0xcb, 0xc5, 0xeb, 0x68, 0xdd, 0x9e, 0xe0, 0xcb, 0xf0, 0x8a, - 0xd4, 0x0a, 0xf5, 0x20, 0x3c, 0x44, 0x67, 0x19, 0xde, 0x88, 0xdb, 0xe1, 0x7e, 0x10, 0x1e, 0xc2, - 0x2a, 0x98, 0x0e, 0xfd, 0x7a, 0x2f, 0x8c, 0x1a, 0xaf, 0x7c, 0x91, 0xd6, 0x73, 0x24, 0xad, 0x67, - 0x33, 0x73, 0xe0, 0x16, 0xc5, 0x1a, 0x9e, 0xce, 0xcb, 0x60, 0x32, 0xf4, 0x3b, 0xbe, 0x87, 0xf3, - 0x48, 0x6f, 0xe6, 0x0b, 0x96, 0x89, 0xd5, 0x86, 0x5b, 0x85, 0xda, 0xc8, 0x30, 0xc7, 0x46, 0x96, - 0x65, 0x62, 0xb5, 0x91, 0x60, 0x54, 0x1b, 0x04, 0x8c, 0xa9, 0xcd, 0x45, 0xcb, 0xc4, 0x6a, 0xc3, - 0xcd, 0xb1, 0xda, 0x28, 0x40, 0xc7, 0x46, 0x4b, 0x96, 0x89, 0xd5, 0x46, 0x06, 0x6a, 0x8c, 0x4c, - 0x6d, 0x96, 0x2d, 0x13, 0xab, 0x0d, 0x37, 0xef, 0x27, 0x19, 0x99, 0xda, 0x5c, 0xb2, 0x4c, 0xac, - 0x36, 0x32, 0x90, 0xaa, 0x8d, 0x00, 0x72, 0x59, 0xb8, 0x6c, 0x99, 0x58, 0x6d, 0xb8, 0x5d, 0x52, - 0x1b, 0x15, 0xea, 0xd8, 0xe8, 0xff, 0x2c, 0x13, 0xab, 0x8d, 0x02, 0xa5, 0x6a, 0x13, 0xbb, 0xe7, - 0xb4, 0x57, 0x2c, 0x13, 0xab, 0x8d, 0x08, 0x40, 0x52, 0x1b, 0x0d, 0xec, 0xd8, 0xa8, 0x64, 0x99, - 0x58, 0x6d, 0x54, 0x30, 0x55, 0x9b, 0x38, 0x08, 0xa2, 0x36, 0x57, 0x2d, 0x13, 0xab, 0x8d, 0x08, - 0x81, 0xab, 0x8d, 0x80, 0x31, 0xb5, 0xb9, 0x66, 0x99, 0x58, 0x6d, 0xb8, 0x39, 0x56, 0x1b, 0x01, - 0x24, 0x6a, 0x73, 0xdd, 0x32, 0xb1, 0xda, 0x70, 0x23, 0x57, 0x9b, 0x38, 0x42, 0xaa, 0x36, 0x6f, - 0x5a, 0x26, 0x56, 0x1b, 0x11, 0x9f, 0x50, 0x9b, 0x98, 0x8d, 0xa8, 0xcd, 0x5b, 0x96, 0x89, 0xd5, - 0x46, 0xd0, 0x71, 0xb5, 0x11, 0x30, 0x4d, 0x6d, 0x56, 0x2d, 0xf3, 0xb5, 0xd4, 0x86, 0xf3, 0x24, - 0xd4, 0x26, 0xce, 0x92, 0xa6, 0x36, 0x6b, 0xc4, 0x43, 0x7f, 0xb5, 0x11, 0xc9, 0x4c, 0xa8, 0x8d, - 0x1e, 0x37, 0x11, 0x85, 0x0d, 0xcb, 0x1c, 0x5c, 0x6d, 0xd4, 0x88, 0xb9, 0xda, 0x24, 0xc2, 0x25, + 0x77, 0x70, 0xd2, 0xf5, 0x23, 0x34, 0x85, 0xdb, 0x38, 0x8e, 0xae, 0x8c, 0x8d, 0xb0, 0x06, 0x16, + 0x04, 0xac, 0x4d, 0x6f, 0xef, 0x96, 0x1f, 0x45, 0xde, 0xb1, 0x8f, 0xa0, 0x65, 0x94, 0xf2, 0x6b, + 0x57, 0x94, 0x1b, 0x5b, 0x6e, 0xd1, 0x95, 0x1d, 0x82, 0x7f, 0x42, 0xe1, 0xee, 0x1c, 0xe7, 0x51, + 0xcc, 0x70, 0x1f, 0xa0, 0x38, 0x4b, 0x41, 0xe8, 0x37, 0x8e, 0xdb, 0xc2, 0xc3, 0x0c, 0xf1, 0x70, + 0x4e, 0xf1, 0x50, 0xa5, 0x18, 0xce, 0x3a, 0x2f, 0x92, 0xa9, 0xd8, 0xe1, 0x7b, 0x60, 0x56, 0x8f, + 0xdb, 0x6f, 0xf7, 0x5a, 0x68, 0x8e, 0xa8, 0xd1, 0xa5, 0xd3, 0x82, 0xae, 0xb4, 0x7b, 0x2d, 0x17, + 0xaa, 0x11, 0x63, 0x1b, 0x7c, 0x17, 0xcc, 0x25, 0xc2, 0x25, 0xc4, 0xf3, 0x84, 0x18, 0xa5, 0xc5, + 0x4a, 0xc8, 0x66, 0xb4, 0x40, 0x09, 0x9b, 0x23, 0xb1, 0xd1, 0x6a, 0xd5, 0x3a, 0x0d, 0xbf, 0xee, + 0x23, 0x84, 0x6b, 0x56, 0xce, 0x8d, 0xe5, 0xe2, 0x75, 0xb4, 0x6e, 0x4f, 0xf1, 0x65, 0x78, 0x45, + 0x6a, 0x85, 0x7a, 0x10, 0x1e, 0xa2, 0xb3, 0x0c, 0x6f, 0xc4, 0xed, 0xf0, 0x20, 0x08, 0x0f, 0x61, + 0x15, 0x4c, 0x87, 0x7e, 0xbd, 0x17, 0x46, 0x8d, 0x57, 0xbe, 0x48, 0xeb, 0x39, 0x92, 0xd6, 0xb3, + 0x99, 0x39, 0x70, 0x8b, 0x62, 0x0d, 0x4f, 0xe7, 0x65, 0x30, 0x19, 0xfa, 0x1d, 0xdf, 0xc3, 0x79, + 0xa4, 0x37, 0xf3, 0x05, 0xcb, 0xc4, 0x6a, 0xc3, 0xad, 0x42, 0x6d, 0x64, 0x98, 0x63, 0x23, 0xcb, + 0x32, 0xb1, 0xda, 0x48, 0x30, 0xaa, 0x0d, 0x02, 0xc6, 0xd4, 0xe6, 0xa2, 0x65, 0x62, 0xb5, 0xe1, + 0xe6, 0x58, 0x6d, 0x14, 0xa0, 0x63, 0xa3, 0x25, 0xcb, 0xc4, 0x6a, 0x23, 0x03, 0x35, 0x46, 0xa6, + 0x36, 0xcb, 0x96, 0x89, 0xd5, 0x86, 0x9b, 0xf7, 0x92, 0x8c, 0x4c, 0x6d, 0x2e, 0x59, 0x26, 0x56, + 0x1b, 0x19, 0x48, 0xd5, 0x46, 0x00, 0xb9, 0x2c, 0x5c, 0xb6, 0x4c, 0xac, 0x36, 0xdc, 0x2e, 0xa9, + 0x8d, 0x0a, 0x75, 0x6c, 0xf4, 0x7f, 0x96, 0x89, 0xd5, 0x46, 0x81, 0x52, 0xb5, 0x89, 0xdd, 0x73, + 0xda, 0x2b, 0x96, 0x89, 0xd5, 0x46, 0x04, 0x20, 0xa9, 0x8d, 0x06, 0x76, 0x6c, 0x54, 0xb2, 0x4c, + 0xac, 0x36, 0x2a, 0x98, 0xaa, 0x4d, 0x1c, 0x04, 0x51, 0x9b, 0xab, 0x96, 0x89, 0xd5, 0x46, 0x84, + 0xc0, 0xd5, 0x46, 0xc0, 0x98, 0xda, 0x5c, 0xb3, 0x4c, 0xac, 0x36, 0xdc, 0x1c, 0xab, 0x8d, 0x00, + 0x12, 0xb5, 0xb9, 0x6e, 0x99, 0x58, 0x6d, 0xb8, 0x91, 0xab, 0x4d, 0x1c, 0x21, 0x55, 0x9b, 0x37, + 0x2d, 0x13, 0xab, 0x8d, 0x88, 0x4f, 0xa8, 0x4d, 0xcc, 0x46, 0xd4, 0xe6, 0x2d, 0xcb, 0xc4, 0x6a, + 0x23, 0xe8, 0xb8, 0xda, 0x08, 0x98, 0xa6, 0x36, 0x37, 0x2d, 0xf3, 0xb5, 0xd4, 0x86, 0xf3, 0x24, + 0xd4, 0x26, 0xce, 0x92, 0xa6, 0x36, 0xab, 0xc4, 0x43, 0x7f, 0xb5, 0x11, 0xc9, 0x4c, 0xa8, 0x8d, + 0x1e, 0x37, 0x11, 0x85, 0x75, 0xcb, 0x1c, 0x5c, 0x6d, 0xd4, 0x88, 0xb9, 0xda, 0x24, 0xc2, 0x25, 0xc4, 0x36, 0x21, 0xee, 0xa3, 0x36, 0x5a, 0xa0, 0x5c, 0x6d, 0xb4, 0x6a, 0x31, 0xb5, 0x71, 0x70, - 0xcd, 0xa8, 0xda, 0xa8, 0x75, 0x13, 0x6a, 0x23, 0xd6, 0x11, 0xb5, 0xb9, 0xc5, 0xf0, 0x46, 0xdc, - 0x0e, 0x44, 0x6d, 0x9e, 0x82, 0xa9, 0x96, 0xd7, 0xa1, 0x02, 0xc1, 0x64, 0x62, 0x93, 0x24, 0xf5, - 0xcd, 0xec, 0x0c, 0x3c, 0xf6, 0x3a, 0x44, 0x3b, 0xc8, 0x47, 0xa5, 0xdd, 0x0d, 0x4f, 0xdc, 0x89, - 0x96, 0x6c, 0x93, 0x58, 0x1d, 0x9b, 0xa9, 0xca, 0xed, 0xc1, 0x58, 0x1d, 0x9b, 0x7c, 0x28, 0xac, - 0xcc, 0x06, 0x9f, 0x83, 0x69, 0xcc, 0x4a, 0xe5, 0x87, 0xab, 0xd0, 0x1d, 0xc2, 0xbb, 0xd2, 0x97, + 0xcd, 0xa8, 0xda, 0xa8, 0x75, 0x13, 0x6a, 0x23, 0xd6, 0x11, 0xb5, 0xb9, 0xcd, 0xf0, 0x46, 0xdc, + 0x0e, 0x44, 0x6d, 0x9e, 0x81, 0xa9, 0x96, 0xd7, 0xa1, 0x02, 0xc1, 0x64, 0x62, 0x83, 0x24, 0xf5, + 0xcd, 0xec, 0x0c, 0x3c, 0xf1, 0x3a, 0x44, 0x3b, 0xc8, 0x47, 0xa5, 0xdd, 0x0d, 0x4f, 0xdc, 0x89, + 0x96, 0x6c, 0x93, 0x58, 0x1d, 0x9b, 0xa9, 0xca, 0x9d, 0xc1, 0x58, 0x1d, 0x9b, 0x7c, 0x28, 0xac, + 0xcc, 0x06, 0x5f, 0x80, 0x69, 0xcc, 0x4a, 0xe5, 0x87, 0xab, 0xd0, 0x5d, 0xc2, 0xbb, 0xd2, 0x97, 0x97, 0x4a, 0x13, 0xfd, 0xa4, 0xcc, 0x38, 0x3c, 0xd9, 0x2a, 0x73, 0x3b, 0x36, 0x17, 0xae, 0xb7, 0x07, 0xe4, 0x76, 0x6c, 0xfa, 0xa9, 0x72, 0x73, 0x2b, 0xe7, 0xa6, 0x22, 0xc7, 0xb5, 0xee, 0xff, - 0x07, 0xe0, 0xa6, 0x02, 0xb8, 0xaf, 0xc5, 0x2d, 0x5b, 0x65, 0x6e, 0xc7, 0xe6, 0xf2, 0xf8, 0xce, - 0x80, 0xdc, 0x8e, 0xbd, 0xaf, 0xc5, 0x2d, 0x5b, 0xe1, 0xc7, 0xc1, 0x0c, 0xe6, 0x66, 0xda, 0x26, - 0x24, 0xf5, 0x2e, 0x61, 0x5f, 0xed, 0xcb, 0xce, 0x74, 0x96, 0xfd, 0xa0, 0xfc, 0x38, 0x50, 0xd5, - 0xae, 0x78, 0x70, 0x6c, 0xa1, 0xc4, 0x1f, 0x19, 0xd4, 0x83, 0x63, 0xb3, 0x1f, 0x9a, 0x07, 0x61, - 0x87, 0x47, 0x60, 0x8e, 0xe4, 0x87, 0x6f, 0x42, 0x28, 0xf8, 0x3d, 0xe2, 0x63, 0xbd, 0x7f, 0x8e, - 0x18, 0x98, 0xff, 0xa4, 0x5e, 0x70, 0xc8, 0xfa, 0x15, 0xd5, 0x0f, 0xae, 0x04, 0xdf, 0xcb, 0xd6, - 0xc0, 0x7e, 0x1c, 0x9b, 0xff, 0xd4, 0xfd, 0xc4, 0x57, 0xd4, 0xfb, 0x95, 0x1e, 0x1a, 0xe5, 0x41, - 0xef, 0x57, 0x72, 0x9c, 0x68, 0xf7, 0x2b, 0x3d, 0x62, 0x9e, 0x81, 0x62, 0xcc, 0xca, 0xce, 0x98, - 0xfb, 0x84, 0xf6, 0xad, 0xd3, 0x69, 0xe9, 0xe9, 0x43, 0x79, 0x27, 0x5b, 0x8a, 0x11, 0xee, 0x02, - 0xec, 0x89, 0x9c, 0x46, 0xf4, 0x48, 0x7a, 0x40, 0x58, 0xaf, 0xf5, 0x65, 0xc5, 0xe7, 0x14, 0xfe, - 0x9f, 0x52, 0xe6, 0x5b, 0xb1, 0x45, 0xb4, 0x3b, 0x95, 0x42, 0x76, 0x7e, 0x55, 0x06, 0x69, 0x77, - 0x02, 0xa5, 0x9f, 0x52, 0xbb, 0x4b, 0x56, 0x9e, 0x04, 0xc6, 0x4d, 0x8f, 0xbc, 0xea, 0x00, 0x49, - 0xa0, 0xcb, 0xc9, 0x69, 0x18, 0x27, 0x41, 0x32, 0xc2, 0x0e, 0x38, 0x2b, 0x11, 0x6b, 0x87, 0xe4, - 0x43, 0xe2, 0xe1, 0xe6, 0x00, 0x1e, 0x94, 0x63, 0x91, 0x7a, 0x9a, 0x6f, 0xa5, 0x5e, 0x84, 0x11, - 0x58, 0x94, 0x3c, 0xea, 0xa7, 0xe6, 0x36, 0x71, 0xe9, 0x0c, 0xe0, 0x52, 0x3d, 0x33, 0xa9, 0xcf, - 0x85, 0x56, 0xfa, 0x55, 0x78, 0x0c, 0xe6, 0x93, 0xdb, 0x24, 0x47, 0xdf, 0xce, 0x20, 0xf7, 0x80, - 0xb4, 0x0d, 0x7c, 0xf4, 0x49, 0xf7, 0x80, 0x76, 0x05, 0xbe, 0x0f, 0x16, 0x52, 0x76, 0x47, 0x3c, - 0x3d, 0x22, 0x9e, 0x36, 0x06, 0xdf, 0x5a, 0xec, 0x6a, 0xb6, 0x95, 0x72, 0x09, 0x2e, 0x83, 0x42, - 0xd0, 0xf6, 0x83, 0x23, 0x7e, 0xdc, 0x04, 0xf8, 0x11, 0x7b, 0x7b, 0xc8, 0xcd, 0x13, 0x2b, 0x3b, - 0x3c, 0x3e, 0x06, 0x66, 0x29, 0x48, 0xab, 0x6d, 0xe7, 0xb5, 0x1e, 0xb7, 0xb6, 0x87, 0x5c, 0x48, - 0x68, 0xd4, 0x5a, 0x8a, 0x08, 0x58, 0xb7, 0x7f, 0xc0, 0x27, 0x12, 0xc4, 0xca, 0x7a, 0xf7, 0x22, - 0xa0, 0x5f, 0x59, 0xdb, 0x86, 0x6c, 0xbc, 0x01, 0x88, 0x91, 0x76, 0xe1, 0x05, 0x00, 0x18, 0x04, - 0xdf, 0x87, 0x11, 0x7e, 0x10, 0xdd, 0x1e, 0x72, 0xc7, 0x29, 0x02, 0xdf, 0x5b, 0xca, 0x56, 0x1d, - 0x1b, 0x75, 0x2d, 0xa3, 0x34, 0xac, 0x6c, 0xd5, 0xb1, 0x63, 0x47, 0x54, 0x7b, 0x7a, 0xf8, 0xf1, - 0x58, 0x38, 0xa2, 0x62, 0x22, 0x78, 0x98, 0x90, 0xbc, 0xc2, 0x8f, 0xc6, 0x82, 0x87, 0x09, 0x43, - 0x85, 0x47, 0x43, 0xca, 0xf6, 0xe1, 0xe0, 0x8f, 0x78, 0x22, 0x66, 0x52, 0x9e, 0x3d, 0xe9, 0x69, - 0x8c, 0x88, 0x0c, 0x9b, 0xa6, 0xa1, 0x5f, 0x19, 0x24, 0xf7, 0x8b, 0x2b, 0x74, 0xdc, 0xb6, 0xc2, - 0xe7, 0x3c, 0x2b, 0x78, 0xab, 0xef, 0x79, 0xcd, 0x9e, 0x1f, 0x3f, 0xa6, 0x61, 0xd3, 0x33, 0xba, - 0x0e, 0xba, 0x60, 0x5e, 0x9d, 0xd1, 0x08, 0xc6, 0x5f, 0x1b, 0xec, 0xd1, 0x56, 0x67, 0x24, 0x7a, - 0x47, 0x29, 0x67, 0x95, 0x49, 0x4e, 0x06, 0xa7, 0x63, 0x0b, 0xce, 0xdf, 0xf4, 0xe1, 0x74, 0xec, - 0x24, 0xa7, 0x63, 0x73, 0xce, 0x03, 0xe9, 0x21, 0xbf, 0xa7, 0x06, 0xfa, 0x5b, 0x4a, 0x7a, 0x3e, - 0x41, 0x7a, 0x20, 0x45, 0x3a, 0xa7, 0x0e, 0x89, 0xb2, 0x68, 0xa5, 0x58, 0x7f, 0xd7, 0x8f, 0x96, - 0x07, 0x3b, 0xa7, 0x8e, 0x94, 0xd2, 0x32, 0x40, 0x1a, 0x47, 0xb0, 0xfe, 0x3e, 0x2b, 0x03, 0xa4, - 0x97, 0xb4, 0x0c, 0x10, 0x5b, 0x5a, 0xa8, 0xb4, 0xd3, 0x04, 0xe9, 0x1f, 0xb2, 0x42, 0xa5, 0xcd, - 0xa7, 0x85, 0x4a, 0x8d, 0x69, 0xb4, 0x4c, 0x61, 0x38, 0xed, 0x1f, 0xb3, 0x68, 0xe9, 0x4d, 0xa8, - 0xd1, 0x52, 0x63, 0x5a, 0x06, 0xc8, 0x3d, 0x2a, 0x58, 0xff, 0x94, 0x95, 0x01, 0x72, 0xdb, 0x6a, - 0x19, 0x20, 0x36, 0xce, 0xb9, 0x27, 0x3d, 0x1c, 0x28, 0xcd, 0xff, 0x67, 0x83, 0xc8, 0x60, 0xdf, - 0xe6, 0x97, 0x1f, 0x0a, 0xa5, 0x20, 0xd5, 0x91, 0x81, 0x60, 0xfc, 0x8b, 0xc1, 0x9e, 0xb4, 0xfa, - 0x35, 0xbf, 0x32, 0x58, 0xc8, 0xe0, 0x94, 0x1a, 0xea, 0xaf, 0x7d, 0x38, 0x45, 0xf3, 0x2b, 0x53, - 0x08, 0xa9, 0x46, 0xda, 0x30, 0x42, 0x90, 0xfe, 0x8d, 0x92, 0x9e, 0xd2, 0xfc, 0xea, 0xcc, 0x22, - 0x8b, 0x56, 0x8a, 0xf5, 0xef, 0xfd, 0x68, 0x45, 0xf3, 0xab, 0x13, 0x8e, 0xb4, 0x0c, 0xa8, 0xcd, - 0xff, 0x8f, 0xac, 0x0c, 0xc8, 0xcd, 0xaf, 0x0c, 0x03, 0xd2, 0x42, 0xd5, 0x9a, 0xff, 0x9f, 0x59, - 0xa1, 0x2a, 0xcd, 0xaf, 0x8e, 0x0e, 0xd2, 0x68, 0xb5, 0xe6, 0xff, 0x57, 0x16, 0xad, 0xd2, 0xfc, - 0xea, 0xb3, 0x68, 0x5a, 0x06, 0xd4, 0xe6, 0xff, 0x77, 0x56, 0x06, 0xe4, 0xe6, 0x57, 0x06, 0x0e, - 0x9c, 0xf3, 0xa1, 0x34, 0xd7, 0xe5, 0xef, 0x70, 0xd0, 0x77, 0x73, 0x6c, 0x4e, 0x96, 0xd8, 0x3b, - 0x43, 0xc4, 0x33, 0x5f, 0x6e, 0x81, 0x8f, 0x80, 0x18, 0x1a, 0xd6, 0xc4, 0xcb, 0x1a, 0xf4, 0xbd, - 0x5c, 0xc6, 0xf9, 0xf1, 0x94, 0x43, 0x5c, 0xe1, 0x5f, 0x98, 0xe0, 0x47, 0xc1, 0x8c, 0x34, 0xc4, - 0xe6, 0x2f, 0x8e, 0xd0, 0xf7, 0xb3, 0xc8, 0xaa, 0x18, 0xf3, 0xd8, 0x8b, 0x5e, 0xc6, 0x64, 0xc2, - 0x04, 0xb7, 0xd4, 0xb9, 0x70, 0xaf, 0xde, 0x45, 0x3f, 0xa0, 0x44, 0x0b, 0x69, 0x45, 0xe8, 0xd5, - 0xbb, 0xca, 0xc4, 0xb8, 0x57, 0xef, 0xc2, 0x4d, 0x20, 0x66, 0x8b, 0x35, 0xaf, 0x7d, 0x82, 0x7e, - 0x48, 0xd7, 0xcf, 0x26, 0xd6, 0x6f, 0xb5, 0x4f, 0xdc, 0x3c, 0x87, 0x6e, 0xb5, 0x4f, 0xe0, 0x5d, - 0x69, 0xd6, 0xfc, 0x0a, 0x97, 0x01, 0xfd, 0x88, 0xae, 0x9d, 0x4f, 0xac, 0xa5, 0x55, 0x12, 0xd3, - 0x4d, 0xf2, 0x15, 0x97, 0x27, 0x6e, 0x50, 0x5e, 0x9e, 0x1f, 0xe7, 0x48, 0xb5, 0xfb, 0x95, 0x47, - 0xf4, 0xa5, 0x54, 0x1e, 0x41, 0x14, 0x97, 0xe7, 0x27, 0xb9, 0x0c, 0x85, 0x93, 0xca, 0xc3, 0x97, - 0xc5, 0xe5, 0x91, 0xb9, 0x48, 0x79, 0x48, 0x75, 0x7e, 0x9a, 0xc5, 0x25, 0x55, 0x27, 0x1e, 0x0a, - 0xb2, 0x55, 0xb8, 0x3a, 0xf2, 0xad, 0x82, 0xab, 0xf3, 0x4b, 0x4a, 0x94, 0x5d, 0x1d, 0xe9, 0xee, - 0x60, 0xd5, 0x11, 0x14, 0xb8, 0x3a, 0x3f, 0xa3, 0xeb, 0x33, 0xaa, 0xc3, 0xa1, 0xac, 0x3a, 0x62, - 0x25, 0xad, 0xce, 0xcf, 0xe9, 0xda, 0xcc, 0xea, 0x70, 0x38, 0xad, 0xce, 0x05, 0x00, 0xc8, 0xfe, - 0xdb, 0x5e, 0xcb, 0x5f, 0x43, 0x9f, 0x36, 0xc9, 0x6b, 0x28, 0xc9, 0x04, 0x2d, 0x90, 0xa7, 0xfd, - 0x8b, 0xbf, 0xae, 0xa3, 0xcf, 0xc8, 0x88, 0x5d, 0x6c, 0x82, 0x17, 0x41, 0xa1, 0x16, 0x43, 0x36, - 0xd0, 0x67, 0x19, 0xa4, 0xca, 0x21, 0x1b, 0x70, 0x09, 0x4c, 0x50, 0x04, 0x81, 0xd8, 0x35, 0xf4, - 0x39, 0x9d, 0x86, 0xfc, 0x3d, 0x49, 0xbe, 0xad, 0x62, 0xc8, 0x4d, 0xf4, 0x79, 0x8a, 0x90, 0x6d, - 0x70, 0x99, 0xd3, 0xac, 0x12, 0x1e, 0x07, 0x7d, 0x41, 0x01, 0x61, 0x1e, 0x47, 0xec, 0x08, 0x7f, - 0xbb, 0x85, 0xbe, 0xa8, 0x3b, 0xba, 0x85, 0x01, 0x22, 0xb4, 0x4d, 0xf4, 0x25, 0x3d, 0xda, 0xcd, - 0x78, 0xcb, 0xf8, 0xeb, 0x6d, 0xf4, 0x65, 0x9d, 0xe2, 0x36, 0x5c, 0x02, 0x85, 0xaa, 0x40, 0xac, - 0xad, 0xa2, 0xaf, 0xb0, 0x38, 0x04, 0xc9, 0xda, 0x2a, 0xc1, 0xec, 0x54, 0xde, 0x7d, 0x50, 0xdb, - 0xdd, 0x7a, 0x5c, 0x59, 0x5b, 0x43, 0x5f, 0xe5, 0x18, 0x6c, 0xa4, 0xb6, 0x18, 0x43, 0x72, 0xbd, - 0x8e, 0xbe, 0xa6, 0x60, 0x88, 0x0d, 0x5e, 0x02, 0x93, 0x35, 0x29, 0xbf, 0x6b, 0x1b, 0xe8, 0xeb, - 0x09, 0x6f, 0x1b, 0x14, 0x55, 0x8d, 0x51, 0x36, 0xfa, 0x46, 0x02, 0x65, 0xc7, 0x09, 0xa4, 0xa0, - 0x9b, 0xe8, 0x9b, 0x72, 0x02, 0x09, 0x48, 0xca, 0x32, 0xdd, 0x9d, 0x83, 0xbe, 0x95, 0x00, 0x39, - 0xd8, 0x9f, 0x14, 0xd3, 0xad, 0x5a, 0x0d, 0x7d, 0x3b, 0x81, 0xba, 0x85, 0x51, 0x52, 0x4c, 0x9b, - 0xb5, 0x1a, 0xfa, 0x4e, 0x22, 0xaa, 0xcd, 0xc5, 0xe7, 0x60, 0x42, 0x7d, 0xd0, 0x29, 0x00, 0xc3, - 0x63, 0x6f, 0x44, 0x0d, 0x0f, 0xbe, 0x0d, 0xf2, 0xf5, 0x40, 0xbc, 0xd4, 0x40, 0xb9, 0xd3, 0x5e, - 0x80, 0xc8, 0xe8, 0xc5, 0x7b, 0x00, 0x26, 0x87, 0x94, 0xb0, 0x08, 0xcc, 0x97, 0xfe, 0x09, 0x73, - 0x81, 0x7f, 0x85, 0xb3, 0xe0, 0x0c, 0xbd, 0x7d, 0x72, 0xc4, 0x46, 0xbf, 0xdc, 0xc9, 0x6d, 0x1a, - 0x31, 0x83, 0x3c, 0x90, 0x94, 0x19, 0xcc, 0x14, 0x06, 0x53, 0x66, 0x28, 0x83, 0xd9, 0xb4, 0xd1, - 0xa3, 0xcc, 0x31, 0x91, 0xc2, 0x31, 0x91, 0xce, 0xa1, 0x8c, 0x18, 0x65, 0x8e, 0xe1, 0x14, 0x8e, - 0xe1, 0x24, 0x47, 0x62, 0x94, 0x28, 0x73, 0x4c, 0xa7, 0x70, 0x4c, 0xa7, 0x73, 0x28, 0x23, 0x43, - 0x99, 0x03, 0xa6, 0x70, 0x40, 0x99, 0xe3, 0x01, 0x98, 0x4f, 0x1f, 0x0c, 0xca, 0x2c, 0xa3, 0x29, - 0x2c, 0xa3, 0x19, 0x2c, 0xea, 0xf0, 0x4f, 0x66, 0x19, 0x49, 0x61, 0x19, 0x91, 0x59, 0xaa, 0x00, - 0x65, 0x8d, 0xf7, 0x64, 0x9e, 0xa9, 0x14, 0x9e, 0xa9, 0x2c, 0x1e, 0x6d, 0x7c, 0x27, 0xf3, 0x14, - 0x53, 0x78, 0x8a, 0xa9, 0xdd, 0x26, 0x0f, 0xe9, 0x4e, 0xeb, 0xd7, 0x9c, 0xcc, 0xb0, 0x05, 0x66, - 0x52, 0xe6, 0x71, 0xa7, 0x51, 0x18, 0x32, 0xc5, 0x5d, 0x50, 0xd4, 0x87, 0x6f, 0xf2, 0xfa, 0xb1, - 0x94, 0xf5, 0x63, 0x29, 0x4d, 0xa2, 0x0f, 0xda, 0x64, 0x8e, 0xf1, 0x14, 0x8e, 0xf1, 0xe4, 0x36, - 0xf4, 0x89, 0xda, 0x69, 0x14, 0x05, 0x99, 0x22, 0x04, 0xe7, 0xfa, 0x8c, 0xcc, 0x52, 0xa8, 0xde, - 0x91, 0xa9, 0x5e, 0xe3, 0x7d, 0x95, 0xe4, 0xf3, 0x18, 0x9c, 0xef, 0x37, 0x33, 0x4b, 0x71, 0xba, - 0xa6, 0x3a, 0xed, 0xfb, 0x0a, 0x4b, 0x72, 0xd4, 0xa4, 0x0d, 0x97, 0x36, 0x2b, 0x4b, 0x71, 0x72, - 0x47, 0x76, 0x32, 0xe8, 0x4b, 0x2d, 0xc9, 0x9b, 0x07, 0xce, 0x66, 0xce, 0xcb, 0x52, 0xdc, 0xad, - 0xa8, 0xee, 0xb2, 0x5f, 0x75, 0xc5, 0x2e, 0x96, 0x6e, 0x03, 0x20, 0x4d, 0xf6, 0x46, 0x81, 0x59, - 0xdd, 0xdb, 0x2b, 0x0e, 0xe1, 0x5f, 0xca, 0x5b, 0x6e, 0xd1, 0xa0, 0xbf, 0x3c, 0x2f, 0xe6, 0xb0, - 0xbb, 0xdd, 0xca, 0xc3, 0xe2, 0x7f, 0xf9, 0x7f, 0x46, 0x79, 0x42, 0x8c, 0xa2, 0xf0, 0xa9, 0xb2, - 0xf4, 0x06, 0x98, 0xd4, 0x06, 0x92, 0x05, 0x60, 0xd4, 0xf9, 0x81, 0x52, 0xbf, 0x76, 0x13, 0x80, - 0xf8, 0xdf, 0x30, 0xc1, 0x29, 0x90, 0x3f, 0xd8, 0xdd, 0x7f, 0x52, 0xb9, 0xbf, 0x53, 0xdd, 0xa9, - 0x3c, 0x28, 0x0e, 0xc1, 0x02, 0x18, 0x7b, 0xe2, 0xee, 0x3d, 0xdd, 0x2b, 0x1f, 0x54, 0x8b, 0x06, - 0x1c, 0x03, 0xc3, 0x8f, 0xf6, 0xf7, 0x76, 0x8b, 0xb9, 0x6b, 0xf7, 0x40, 0x5e, 0x9e, 0x07, 0x4e, - 0x81, 0x7c, 0x75, 0xcf, 0xad, 0xec, 0x3c, 0xdc, 0xad, 0xd1, 0x48, 0x25, 0x03, 0x8d, 0x58, 0x31, - 0x3c, 0x2f, 0xe6, 0xca, 0x17, 0xc1, 0x85, 0x7a, 0xd0, 0x4a, 0xfc, 0x61, 0x26, 0x25, 0xe7, 0xc5, - 0x08, 0xb1, 0x6e, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xc2, 0x0c, 0xb6, 0xeb, 0x26, 0x00, - 0x00, + 0x07, 0xe0, 0xa6, 0x02, 0xb8, 0xa7, 0xc5, 0x2d, 0x5b, 0x65, 0x6e, 0xc7, 0xe6, 0xf2, 0xf8, 0xce, + 0x80, 0xdc, 0x8e, 0xbd, 0xa7, 0xc5, 0x2d, 0x5b, 0xe1, 0xc7, 0xc1, 0x0c, 0xe6, 0x66, 0xda, 0x26, + 0x24, 0xf5, 0x1e, 0x61, 0xbf, 0xd9, 0x97, 0x9d, 0xe9, 0x2c, 0xfb, 0x41, 0xf9, 0x71, 0xa0, 0xaa, + 0x5d, 0xf1, 0xe0, 0xd8, 0x42, 0x89, 0x3f, 0x32, 0xa8, 0x07, 0xc7, 0x66, 0x3f, 0x34, 0x0f, 0xc2, + 0x0e, 0x8f, 0xc0, 0x1c, 0xc9, 0x0f, 0xdf, 0x84, 0x50, 0xf0, 0xfb, 0xc4, 0xc7, 0x5a, 0xff, 0x1c, + 0x31, 0x30, 0xff, 0x49, 0xbd, 0xe0, 0x90, 0xf5, 0x2b, 0xaa, 0x1f, 0x5c, 0x09, 0xbe, 0x97, 0xcd, + 0x81, 0xfd, 0x38, 0x36, 0xff, 0xa9, 0xfb, 0x89, 0xaf, 0xa8, 0xf7, 0x2b, 0x3d, 0x34, 0xca, 0x83, + 0xde, 0xaf, 0xe4, 0x38, 0xd1, 0xee, 0x57, 0x7a, 0xc4, 0x3c, 0x07, 0xc5, 0x98, 0x95, 0x9d, 0x31, + 0x0f, 0x08, 0xed, 0x5b, 0xa7, 0xd3, 0xd2, 0xd3, 0x87, 0xf2, 0x4e, 0xb6, 0x14, 0x23, 0xdc, 0x01, + 0xd8, 0x13, 0x39, 0x8d, 0xe8, 0x91, 0xf4, 0x90, 0xb0, 0x5e, 0xeb, 0xcb, 0x8a, 0xcf, 0x29, 0xfc, + 0x3f, 0xa5, 0xcc, 0xb7, 0x62, 0x8b, 0x68, 0x77, 0x2a, 0x85, 0xec, 0xfc, 0xaa, 0x0c, 0xd2, 0xee, + 0x04, 0x4a, 0x3f, 0xa5, 0x76, 0x97, 0xac, 0x3c, 0x09, 0x8c, 0x9b, 0x1e, 0x79, 0xd5, 0x01, 0x92, + 0x40, 0x97, 0x93, 0xd3, 0x30, 0x4e, 0x82, 0x64, 0x84, 0x1d, 0x70, 0x56, 0x22, 0xd6, 0x0e, 0xc9, + 0x47, 0xc4, 0xc3, 0xad, 0x01, 0x3c, 0x28, 0xc7, 0x22, 0xf5, 0x34, 0xdf, 0x4a, 0xbd, 0x08, 0x23, + 0xb0, 0x28, 0x79, 0xd4, 0x4f, 0xcd, 0x2d, 0xe2, 0xd2, 0x19, 0xc0, 0xa5, 0x7a, 0x66, 0x52, 0x9f, + 0x0b, 0xad, 0xf4, 0xab, 0xf0, 0x18, 0xcc, 0x27, 0xb7, 0x49, 0x8e, 0xbe, 0xed, 0x41, 0xee, 0x01, + 0x69, 0x1b, 0xf8, 0xe8, 0x93, 0xee, 0x01, 0xed, 0x0a, 0x7c, 0x1f, 0x2c, 0xa4, 0xec, 0x8e, 0x78, + 0x7a, 0x4c, 0x3c, 0xad, 0x0f, 0xbe, 0xb5, 0xd8, 0xd5, 0x6c, 0x2b, 0xe5, 0x12, 0x5c, 0x06, 0x85, + 0xa0, 0xed, 0x07, 0x47, 0xfc, 0xb8, 0x09, 0xf0, 0x23, 0xf6, 0xd6, 0x90, 0x9b, 0x27, 0x56, 0x76, + 0x78, 0x7c, 0x0c, 0xcc, 0x52, 0x90, 0x56, 0xdb, 0xce, 0x6b, 0x3d, 0x6e, 0x6d, 0x0d, 0xb9, 0x90, + 0xd0, 0xa8, 0xb5, 0x14, 0x11, 0xb0, 0x6e, 0xff, 0x80, 0x4f, 0x24, 0x88, 0x95, 0xf5, 0xee, 0x45, + 0x40, 0xbf, 0xb2, 0xb6, 0x0d, 0xd9, 0x78, 0x03, 0x10, 0x23, 0xed, 0xc2, 0x0b, 0x00, 0x30, 0x08, + 0xbe, 0x0f, 0x23, 0xfc, 0x20, 0xba, 0x35, 0xe4, 0x8e, 0x53, 0x04, 0xbe, 0xb7, 0x94, 0xad, 0x3a, + 0x36, 0xea, 0x5a, 0x46, 0x69, 0x58, 0xd9, 0xaa, 0x63, 0xc7, 0x8e, 0xa8, 0xf6, 0xf4, 0xf0, 0xe3, + 0xb1, 0x70, 0x44, 0xc5, 0x44, 0xf0, 0x30, 0x21, 0x79, 0x85, 0x1f, 0x8d, 0x05, 0x0f, 0x13, 0x86, + 0x0a, 0x8f, 0x86, 0x94, 0xed, 0xc3, 0xc1, 0x1f, 0xf1, 0x44, 0xcc, 0xa4, 0x3c, 0xbb, 0xd2, 0xd3, + 0x18, 0x11, 0x19, 0x36, 0x4d, 0x43, 0xbf, 0x32, 0x48, 0xee, 0x17, 0x57, 0xe8, 0xb8, 0x6d, 0x85, + 0xcf, 0x79, 0x56, 0xf0, 0x56, 0xdf, 0xf3, 0x9a, 0x3d, 0x3f, 0x7e, 0x4c, 0xc3, 0xa6, 0xe7, 0x74, + 0x1d, 0x74, 0xc1, 0xbc, 0x3a, 0xa3, 0x11, 0x8c, 0xbf, 0x36, 0xd8, 0xa3, 0xad, 0xce, 0x48, 0xf4, + 0x8e, 0x52, 0xce, 0x2a, 0x93, 0x9c, 0x0c, 0x4e, 0xc7, 0x16, 0x9c, 0xbf, 0xe9, 0xc3, 0xe9, 0xd8, + 0x49, 0x4e, 0xc7, 0xe6, 0x9c, 0xfb, 0xd2, 0x43, 0x7e, 0x4f, 0x0d, 0xf4, 0xb7, 0x94, 0xf4, 0x7c, + 0x82, 0x74, 0x5f, 0x8a, 0x74, 0x4e, 0x1d, 0x12, 0x65, 0xd1, 0x4a, 0xb1, 0xfe, 0xae, 0x1f, 0x2d, + 0x0f, 0x76, 0x4e, 0x1d, 0x29, 0xa5, 0x65, 0x80, 0x34, 0x8e, 0x60, 0xfd, 0x7d, 0x56, 0x06, 0x48, + 0x2f, 0x69, 0x19, 0x20, 0xb6, 0xb4, 0x50, 0x69, 0xa7, 0x09, 0xd2, 0x3f, 0x64, 0x85, 0x4a, 0x9b, + 0x4f, 0x0b, 0x95, 0x1a, 0xd3, 0x68, 0x99, 0xc2, 0x70, 0xda, 0x3f, 0x66, 0xd1, 0xd2, 0x9b, 0x50, + 0xa3, 0xa5, 0xc6, 0xb4, 0x0c, 0x90, 0x7b, 0x54, 0xb0, 0xfe, 0x29, 0x2b, 0x03, 0xe4, 0xb6, 0xd5, + 0x32, 0x40, 0x6c, 0x9c, 0x73, 0x57, 0x7a, 0x38, 0x50, 0x9a, 0xff, 0xcf, 0x06, 0x91, 0xc1, 0xbe, + 0xcd, 0x2f, 0x3f, 0x14, 0x4a, 0x41, 0xaa, 0x23, 0x03, 0xc1, 0xf8, 0x17, 0x83, 0x3d, 0x69, 0xf5, + 0x6b, 0x7e, 0x65, 0xb0, 0x90, 0xc1, 0x29, 0x35, 0xd4, 0x5f, 0xfb, 0x70, 0x8a, 0xe6, 0x57, 0xa6, + 0x10, 0x52, 0x8d, 0xb4, 0x61, 0x84, 0x20, 0xfd, 0x1b, 0x25, 0x3d, 0xa5, 0xf9, 0xd5, 0x99, 0x45, + 0x16, 0xad, 0x14, 0xeb, 0xdf, 0xfb, 0xd1, 0x8a, 0xe6, 0x57, 0x27, 0x1c, 0x69, 0x19, 0x50, 0x9b, + 0xff, 0x1f, 0x59, 0x19, 0x90, 0x9b, 0x5f, 0x19, 0x06, 0xa4, 0x85, 0xaa, 0x35, 0xff, 0x3f, 0xb3, + 0x42, 0x55, 0x9a, 0x5f, 0x1d, 0x1d, 0xa4, 0xd1, 0x6a, 0xcd, 0xff, 0xaf, 0x2c, 0x5a, 0xa5, 0xf9, + 0xd5, 0x67, 0xd1, 0xb4, 0x0c, 0xa8, 0xcd, 0xff, 0xef, 0xac, 0x0c, 0xc8, 0xcd, 0xaf, 0x0c, 0x1c, + 0x38, 0xe7, 0x23, 0x69, 0xae, 0xcb, 0xdf, 0xe1, 0xa0, 0xef, 0xe6, 0xd8, 0x9c, 0x2c, 0xb1, 0x77, + 0x86, 0x88, 0x67, 0xbe, 0xdc, 0x02, 0x1f, 0x03, 0x31, 0x34, 0xac, 0x89, 0x97, 0x35, 0xe8, 0x7b, + 0xb9, 0x8c, 0xf3, 0xe3, 0x19, 0x87, 0xb8, 0xc2, 0xbf, 0x30, 0xc1, 0x8f, 0x82, 0x19, 0x69, 0x88, + 0xcd, 0x5f, 0x1c, 0xa1, 0xef, 0x67, 0x91, 0x55, 0x31, 0xe6, 0x89, 0x17, 0xbd, 0x8c, 0xc9, 0x84, + 0x09, 0x6e, 0xaa, 0x73, 0xe1, 0x5e, 0xbd, 0x8b, 0x7e, 0x40, 0x89, 0x16, 0xd2, 0x8a, 0xd0, 0xab, + 0x77, 0x95, 0x89, 0x71, 0xaf, 0xde, 0x85, 0x1b, 0x40, 0xcc, 0x16, 0x6b, 0x5e, 0xfb, 0x04, 0xfd, + 0x90, 0xae, 0x9f, 0x4d, 0xac, 0xdf, 0x6c, 0x9f, 0xb8, 0x79, 0x0e, 0xdd, 0x6c, 0x9f, 0xc0, 0x7b, + 0xd2, 0xac, 0xf9, 0x15, 0x2e, 0x03, 0xfa, 0x11, 0x5d, 0x3b, 0x9f, 0x58, 0x4b, 0xab, 0x24, 0xa6, + 0x9b, 0xe4, 0x2b, 0x2e, 0x4f, 0xdc, 0xa0, 0xbc, 0x3c, 0x3f, 0xce, 0x91, 0x6a, 0xf7, 0x2b, 0x8f, + 0xe8, 0x4b, 0xa9, 0x3c, 0x82, 0x28, 0x2e, 0xcf, 0x4f, 0x72, 0x19, 0x0a, 0x27, 0x95, 0x87, 0x2f, + 0x8b, 0xcb, 0x23, 0x73, 0x91, 0xf2, 0x90, 0xea, 0xfc, 0x34, 0x8b, 0x4b, 0xaa, 0x4e, 0x3c, 0x14, + 0x64, 0xab, 0x70, 0x75, 0xe4, 0x5b, 0x05, 0x57, 0xe7, 0x97, 0x94, 0x28, 0xbb, 0x3a, 0xd2, 0xdd, + 0xc1, 0xaa, 0x23, 0x28, 0x70, 0x75, 0x7e, 0x46, 0xd7, 0x67, 0x54, 0x87, 0x43, 0x59, 0x75, 0xc4, + 0x4a, 0x5a, 0x9d, 0x9f, 0xd3, 0xb5, 0x99, 0xd5, 0xe1, 0x70, 0x5a, 0x9d, 0x0b, 0x00, 0x90, 0xfd, + 0xb7, 0xbd, 0x96, 0xbf, 0x8a, 0x3e, 0x6d, 0x92, 0xd7, 0x50, 0x92, 0x09, 0x5a, 0x20, 0x4f, 0xfb, + 0x17, 0x7f, 0x5d, 0x43, 0x9f, 0x91, 0x11, 0x3b, 0xd8, 0x04, 0x2f, 0x82, 0x42, 0x2d, 0x86, 0xac, + 0xa3, 0xcf, 0xea, 0x90, 0x75, 0xb8, 0x04, 0x26, 0x28, 0x82, 0x40, 0xec, 0x1a, 0xfa, 0x9c, 0x8e, + 0x21, 0x7f, 0x4f, 0x92, 0x6f, 0x37, 0x31, 0xe4, 0x16, 0xfa, 0x3c, 0x45, 0xc8, 0x36, 0xb8, 0xcc, + 0x69, 0x6e, 0x12, 0x1e, 0x07, 0x7d, 0x41, 0x01, 0x61, 0x1e, 0x47, 0xec, 0x08, 0x7f, 0xbb, 0x8d, + 0xbe, 0xa8, 0x3b, 0xba, 0x8d, 0x01, 0x55, 0xfe, 0x6d, 0x03, 0x7d, 0x49, 0x07, 0x6c, 0xc4, 0x5b, + 0xc6, 0x5f, 0xef, 0xa0, 0x2f, 0xeb, 0x88, 0x3b, 0x70, 0x09, 0x14, 0xaa, 0x02, 0xb1, 0x7a, 0x13, + 0x7d, 0x45, 0x8e, 0x83, 0xda, 0x08, 0x66, 0xbb, 0xf2, 0xee, 0xc3, 0xda, 0xce, 0xe6, 0x93, 0xca, + 0xea, 0x2a, 0xfa, 0x2a, 0xc7, 0x60, 0x23, 0xb5, 0xc5, 0x18, 0x92, 0xeb, 0x35, 0xf4, 0x35, 0x05, + 0x43, 0x6c, 0xf0, 0x12, 0x98, 0xac, 0x49, 0xf9, 0x5d, 0x5d, 0x47, 0x5f, 0x4f, 0x78, 0x5b, 0xa7, + 0xa8, 0x6a, 0x8c, 0xb2, 0xd1, 0x37, 0x12, 0x28, 0x3b, 0x4e, 0x20, 0x05, 0xdd, 0x42, 0xdf, 0x4c, + 0x80, 0xa4, 0x2c, 0xd3, 0xdd, 0x39, 0xe8, 0x5b, 0x09, 0x90, 0x83, 0xfd, 0x49, 0x31, 0xdd, 0xae, + 0xd5, 0xd0, 0xb7, 0x13, 0xa8, 0xdb, 0x18, 0x25, 0xc5, 0xb4, 0x51, 0xab, 0xa1, 0xef, 0x24, 0x50, + 0x1b, 0x8b, 0x2f, 0xc0, 0x84, 0xfa, 0xa0, 0x53, 0x00, 0x86, 0xc7, 0xde, 0x88, 0x1a, 0x1e, 0x7c, + 0x1b, 0xe4, 0xeb, 0x81, 0x78, 0xa9, 0x81, 0x72, 0xa7, 0xbd, 0x00, 0x91, 0xd1, 0x8b, 0xf7, 0x01, + 0x4c, 0x0e, 0x29, 0x61, 0x11, 0x98, 0x2f, 0xfd, 0x13, 0xe6, 0x02, 0xff, 0x0a, 0x67, 0xc1, 0x19, + 0x7a, 0xfb, 0xe4, 0x88, 0x8d, 0x7e, 0xb9, 0x9b, 0xdb, 0x30, 0x62, 0x06, 0x79, 0x20, 0x29, 0x33, + 0x98, 0x29, 0x0c, 0xa6, 0xcc, 0x50, 0x06, 0xb3, 0x69, 0xa3, 0x47, 0x99, 0x63, 0x22, 0x85, 0x63, + 0x22, 0x9d, 0x43, 0x19, 0x31, 0xca, 0x1c, 0xc3, 0x29, 0x1c, 0xc3, 0x49, 0x8e, 0xc4, 0x28, 0x51, + 0xe6, 0x98, 0x4e, 0xe1, 0x98, 0x4e, 0xe7, 0x50, 0x46, 0x86, 0x32, 0x07, 0x4c, 0xe1, 0x80, 0x32, + 0xc7, 0x43, 0x30, 0x9f, 0x3e, 0x18, 0x94, 0x59, 0x46, 0x53, 0x58, 0x46, 0x33, 0x58, 0xd4, 0xe1, + 0x9f, 0xcc, 0x32, 0x92, 0xc2, 0x32, 0x22, 0xb3, 0x54, 0x01, 0xca, 0x1a, 0xef, 0xc9, 0x3c, 0x53, + 0x29, 0x3c, 0x53, 0x59, 0x3c, 0xda, 0xf8, 0x4e, 0xe6, 0x29, 0xa6, 0xf0, 0x14, 0x53, 0xbb, 0x4d, + 0x1e, 0xd2, 0x9d, 0xd6, 0xaf, 0x39, 0x99, 0x61, 0x13, 0xcc, 0xa4, 0xcc, 0xe3, 0x4e, 0xa3, 0x30, + 0x64, 0x8a, 0x7b, 0xa0, 0xa8, 0x0f, 0xdf, 0xe4, 0xf5, 0x63, 0x29, 0xeb, 0xc7, 0x52, 0x9a, 0x44, + 0x1f, 0xb4, 0xc9, 0x1c, 0xe3, 0x29, 0x1c, 0xe3, 0xc9, 0x6d, 0xe8, 0x13, 0xb5, 0xd3, 0x28, 0x0a, + 0x32, 0x45, 0x08, 0xce, 0xf5, 0x19, 0x99, 0xa5, 0x50, 0xbd, 0x23, 0x53, 0xbd, 0xc6, 0xfb, 0x2a, + 0xc9, 0xe7, 0x31, 0x38, 0xdf, 0x6f, 0x66, 0x96, 0xe2, 0x74, 0x55, 0x75, 0xda, 0xf7, 0x15, 0x96, + 0xe4, 0xa8, 0x49, 0x1b, 0x2e, 0x6d, 0x56, 0x96, 0xe2, 0xe4, 0xae, 0xec, 0x64, 0xd0, 0x97, 0x5a, + 0x92, 0x37, 0x0f, 0x9c, 0xcd, 0x9c, 0x97, 0xa5, 0xb8, 0x5b, 0x51, 0xdd, 0x65, 0xbf, 0xea, 0x8a, + 0x5d, 0x2c, 0xdd, 0x01, 0x40, 0x9a, 0xec, 0x8d, 0x02, 0xb3, 0xba, 0xbb, 0x5b, 0x1c, 0xc2, 0xbf, + 0x94, 0x37, 0xdd, 0xa2, 0x41, 0x7f, 0x79, 0x51, 0xcc, 0x61, 0x77, 0x3b, 0x95, 0x47, 0xc5, 0xff, + 0xf2, 0xff, 0x8c, 0xf2, 0x84, 0x18, 0x45, 0xe1, 0x53, 0x65, 0xe9, 0x0d, 0x30, 0xa9, 0x0d, 0x24, + 0x0b, 0xc0, 0xa8, 0xf3, 0x03, 0xa5, 0x7e, 0xed, 0x16, 0x00, 0xf1, 0xbf, 0x61, 0x82, 0x53, 0x20, + 0xbf, 0xbf, 0xb3, 0xf7, 0xb4, 0xf2, 0x60, 0xbb, 0xba, 0x5d, 0x79, 0x58, 0x1c, 0x82, 0x05, 0x30, + 0xf6, 0xd4, 0xdd, 0x7d, 0xb6, 0x5b, 0xde, 0xaf, 0x16, 0x0d, 0x38, 0x06, 0x86, 0x1f, 0xef, 0xed, + 0xee, 0x14, 0x73, 0xd7, 0xee, 0x83, 0xbc, 0x3c, 0x0f, 0x9c, 0x02, 0xf9, 0xea, 0xae, 0x5b, 0xd9, + 0x7e, 0xb4, 0x53, 0xa3, 0x91, 0x4a, 0x06, 0x1a, 0xb1, 0x62, 0x78, 0x51, 0xcc, 0x95, 0x2f, 0x82, + 0x0b, 0xf5, 0xa0, 0x95, 0xf8, 0xc3, 0x4c, 0x4a, 0xce, 0xc1, 0x08, 0xb1, 0xae, 0xff, 0x2f, 0x00, + 0x00, 0xff, 0xff, 0x46, 0x1f, 0xdb, 0xdc, 0xeb, 0x26, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor.go b/vendor/github.com/golang/protobuf/descriptor/descriptor.go deleted file mode 100644 index ac7e51bfb..000000000 --- a/vendor/github.com/golang/protobuf/descriptor/descriptor.go +++ /dev/null @@ -1,93 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Package descriptor provides functions for obtaining protocol buffer -// descriptors for generated Go types. -// -// These functions cannot go in package proto because they depend on the -// generated protobuf descriptor messages, which themselves depend on proto. -package descriptor - -import ( - "bytes" - "compress/gzip" - "fmt" - "io/ioutil" - - "github.com/golang/protobuf/proto" - protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -// extractFile extracts a FileDescriptorProto from a gzip'd buffer. -func extractFile(gz []byte) (*protobuf.FileDescriptorProto, error) { - r, err := gzip.NewReader(bytes.NewReader(gz)) - if err != nil { - return nil, fmt.Errorf("failed to open gzip reader: %v", err) - } - defer r.Close() - - b, err := ioutil.ReadAll(r) - if err != nil { - return nil, fmt.Errorf("failed to uncompress descriptor: %v", err) - } - - fd := new(protobuf.FileDescriptorProto) - if err := proto.Unmarshal(b, fd); err != nil { - return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err) - } - - return fd, nil -} - -// Message is a proto.Message with a method to return its descriptor. -// -// Message types generated by the protocol compiler always satisfy -// the Message interface. -type Message interface { - proto.Message - Descriptor() ([]byte, []int) -} - -// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it -// describing the given message. -func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto) { - gz, path := msg.Descriptor() - fd, err := extractFile(gz) - if err != nil { - panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err)) - } - - md = fd.MessageType[path[0]] - for _, i := range path[1:] { - md = md.NestedType[i] - } - return fd, md -} diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go b/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go deleted file mode 100644 index 27b0729cb..000000000 --- a/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go +++ /dev/null @@ -1,32 +0,0 @@ -package descriptor_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/descriptor" - tpb "github.com/golang/protobuf/proto/testdata" - protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -func TestMessage(t *testing.T) { - var msg *protobuf.DescriptorProto - fd, md := descriptor.ForMessage(msg) - if pkg, want := fd.GetPackage(), "google.protobuf"; pkg != want { - t.Errorf("descriptor.ForMessage(%T).GetPackage() = %q; want %q", msg, pkg, want) - } - if name, want := md.GetName(), "DescriptorProto"; name != want { - t.Fatalf("descriptor.ForMessage(%T).GetName() = %q; want %q", msg, name, want) - } -} - -func Example_Options() { - var msg *tpb.MyMessageSet - _, md := descriptor.ForMessage(msg) - if md.GetOptions().GetMessageSetWireFormat() { - fmt.Printf("%v uses option message_set_wire_format.\n", md.GetName()) - } - - // Output: - // MyMessageSet uses option message_set_wire_format. -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go index c7a45d6f0..1fc8ae8d7 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go @@ -44,7 +44,6 @@ import ( "errors" "fmt" "io" - "math" "reflect" "sort" "strconv" @@ -52,8 +51,6 @@ import ( "time" "github.com/golang/protobuf/proto" - - stpb "github.com/golang/protobuf/ptypes/struct" ) // Marshaler is a configurable object for converting between @@ -75,22 +72,6 @@ type Marshaler struct { OrigName bool } -// JSONPBMarshaler is implemented by protobuf messages that customize the -// way they are marshaled to JSON. Messages that implement this should -// also implement JSONPBUnmarshaler so that the custom format can be -// parsed. -type JSONPBMarshaler interface { - MarshalJSONPB(*Marshaler) ([]byte, error) -} - -// JSONPBUnmarshaler is implemented by protobuf messages that customize -// the way they are unmarshaled from JSON. Messages that implement this -// should also implement JSONPBMarshaler so that the custom format can be -// produced. -type JSONPBUnmarshaler interface { - UnmarshalJSONPB(*Unmarshaler, []byte) error -} - // Marshal marshals a protocol buffer into JSON. func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error { writer := &errWriter{writer: out} @@ -108,12 +89,6 @@ func (m *Marshaler) MarshalToString(pb proto.Message) (string, error) { type int32Slice []int32 -var nonFinite = map[string]float64{ - `"NaN"`: math.NaN(), - `"Infinity"`: math.Inf(1), - `"-Infinity"`: math.Inf(-1), -} - // For sorting extensions ids to ensure stable output. func (s int32Slice) Len() int { return len(s) } func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] } @@ -125,31 +100,6 @@ type wkt interface { // marshalObject writes a struct to the Writer. func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error { - if jsm, ok := v.(JSONPBMarshaler); ok { - b, err := jsm.MarshalJSONPB(m) - if err != nil { - return err - } - if typeURL != "" { - // we are marshaling this object to an Any type - var js map[string]*json.RawMessage - if err = json.Unmarshal(b, &js); err != nil { - return fmt.Errorf("type %T produced invalid JSON: %v", v, err) - } - turl, err := json.Marshal(typeURL) - if err != nil { - return fmt.Errorf("failed to marshal type URL %q to JSON: %v", typeURL, err) - } - js["@type"] = (*json.RawMessage)(&turl) - if b, err = json.Marshal(js); err != nil { - return err - } - } - - out.write(string(b)) - return out.err - } - s := reflect.ValueOf(v).Elem() // Handle well-known types. @@ -176,8 +126,8 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU out.write(x) out.write(`s"`) return out.err - case "Struct", "ListValue": - // Let marshalValue handle the `Struct.fields` map or the `ListValue.values` slice. + case "Struct": + // Let marshalValue handle the `fields` map. // TODO: pass the correct Properties if needed. return m.marshalValue(out, &proto.Properties{}, s.Field(0), indent) case "Timestamp": @@ -230,7 +180,7 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU // IsNil will panic on most value kinds. switch value.Kind() { - case reflect.Chan, reflect.Func, reflect.Interface: + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: if value.IsNil() { continue } @@ -258,10 +208,6 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU if value.Len() == 0 { continue } - case reflect.Map, reflect.Ptr, reflect.Slice: - if value.IsNil() { - continue - } } } @@ -425,15 +371,10 @@ func (m *Marshaler) marshalField(out *errWriter, prop *proto.Properties, v refle // marshalValue writes the value to the Writer. func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error { + var err error v = reflect.Indirect(v) - // Handle nil pointer - if v.Kind() == reflect.Invalid { - out.write("null") - return out.err - } - // Handle repeated elements. if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 { out.write("[") @@ -463,6 +404,9 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle // Handle well-known types. // Most are handled up in marshalObject (because 99% are messages). + type wkt interface { + XXX_WellKnownType() string + } if wkt, ok := v.Interface().(wkt); ok { switch wkt.XXX_WellKnownType() { case "NullValue": @@ -550,24 +494,6 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle return out.err } - // Handle non-finite floats, e.g. NaN, Infinity and -Infinity. - if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 { - f := v.Float() - var sval string - switch { - case math.IsInf(f, 1): - sval = `"Infinity"` - case math.IsInf(f, -1): - sval = `"-Infinity"` - case math.IsNaN(f): - sval = `"NaN"` - } - if sval != "" { - out.write(sval) - return out.err - } - } - // Default handling defers to the encoding/json library. b, err := json.Marshal(v.Interface()) if err != nil { @@ -643,13 +569,12 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe return u.unmarshalValue(target.Elem(), inputValue, prop) } - if jsu, ok := target.Addr().Interface().(JSONPBUnmarshaler); ok { - return jsu.UnmarshalJSONPB(u, []byte(inputValue)) - } - // Handle well-known types. - if w, ok := target.Addr().Interface().(wkt); ok { - switch w.XXX_WellKnownType() { + type wkt interface { + XXX_WellKnownType() string + } + if wkt, ok := target.Addr().Interface().(wkt); ok { + switch wkt.XXX_WellKnownType() { case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value", "Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue": // "Wrappers use the same representation in JSON @@ -658,72 +583,9 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe // so we don't have to do any extra work. return u.unmarshalValue(target.Field(0), inputValue, prop) case "Any": - // Use json.RawMessage pointer type instead of value to support pre-1.8 version. - // 1.8 changed RawMessage.MarshalJSON from pointer type to value type, see - // https://github.com/golang/go/issues/14493 - var jsonFields map[string]*json.RawMessage - if err := json.Unmarshal(inputValue, &jsonFields); err != nil { - return err - } - - val, ok := jsonFields["@type"] - if !ok || val == nil { - return errors.New("Any JSON doesn't have '@type'") - } - - var turl string - if err := json.Unmarshal([]byte(*val), &turl); err != nil { - return fmt.Errorf("can't unmarshal Any's '@type': %q", *val) - } - target.Field(0).SetString(turl) - - mname := turl - if slash := strings.LastIndex(mname, "/"); slash >= 0 { - mname = mname[slash+1:] - } - mt := proto.MessageType(mname) - if mt == nil { - return fmt.Errorf("unknown message type %q", mname) - } - - m := reflect.New(mt.Elem()).Interface().(proto.Message) - if _, ok := m.(wkt); ok { - val, ok := jsonFields["value"] - if !ok { - return errors.New("Any JSON doesn't have 'value'") - } - - if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), *val, nil); err != nil { - return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err) - } - } else { - delete(jsonFields, "@type") - nestedProto, err := json.Marshal(jsonFields) - if err != nil { - return fmt.Errorf("can't generate JSON for Any's nested proto to be unmarshaled: %v", err) - } - - if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil { - return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err) - } - } - - b, err := proto.Marshal(m) - if err != nil { - return fmt.Errorf("can't marshal proto %T into Any.Value: %v", m, err) - } - target.Field(1).SetBytes(b) - - return nil + return fmt.Errorf("unmarshaling Any not supported yet") case "Duration": - ivStr := string(inputValue) - if ivStr == "null" { - target.Field(0).SetInt(0) - target.Field(1).SetInt(0) - return nil - } - - unq, err := strconv.Unquote(ivStr) + unq, err := strconv.Unquote(string(inputValue)) if err != nil { return err } @@ -738,14 +600,7 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe target.Field(1).SetInt(ns) return nil case "Timestamp": - ivStr := string(inputValue) - if ivStr == "null" { - target.Field(0).SetInt(0) - target.Field(1).SetInt(0) - return nil - } - - unq, err := strconv.Unquote(ivStr) + unq, err := strconv.Unquote(string(inputValue)) if err != nil { return err } @@ -756,62 +611,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe target.Field(0).SetInt(int64(t.Unix())) target.Field(1).SetInt(int64(t.Nanosecond())) return nil - case "Struct": - if string(inputValue) == "null" { - // Interpret a null struct as empty. - return nil - } - var m map[string]json.RawMessage - if err := json.Unmarshal(inputValue, &m); err != nil { - return fmt.Errorf("bad StructValue: %v", err) - } - target.Field(0).Set(reflect.ValueOf(map[string]*stpb.Value{})) - for k, jv := range m { - pv := &stpb.Value{} - if err := u.unmarshalValue(reflect.ValueOf(pv).Elem(), jv, prop); err != nil { - return fmt.Errorf("bad value in StructValue for key %q: %v", k, err) - } - target.Field(0).SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(pv)) - } - return nil - case "ListValue": - if string(inputValue) == "null" { - // Interpret a null ListValue as empty. - return nil - } - var s []json.RawMessage - if err := json.Unmarshal(inputValue, &s); err != nil { - return fmt.Errorf("bad ListValue: %v", err) - } - target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s), len(s)))) - for i, sv := range s { - if err := u.unmarshalValue(target.Field(0).Index(i), sv, prop); err != nil { - return err - } - } - return nil - case "Value": - ivStr := string(inputValue) - if ivStr == "null" { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_NullValue{})) - } else if v, err := strconv.ParseFloat(ivStr, 0); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_NumberValue{v})) - } else if v, err := strconv.Unquote(ivStr); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_StringValue{v})) - } else if v, err := strconv.ParseBool(ivStr); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_BoolValue{v})) - } else if err := json.Unmarshal(inputValue, &[]json.RawMessage{}); err == nil { - lv := &stpb.ListValue{} - target.Field(0).Set(reflect.ValueOf(&stpb.Value_ListValue{lv})) - return u.unmarshalValue(reflect.ValueOf(lv).Elem(), inputValue, prop) - } else if err := json.Unmarshal(inputValue, &map[string]json.RawMessage{}); err == nil { - sv := &stpb.Struct{} - target.Field(0).Set(reflect.ValueOf(&stpb.Value_StructValue{sv})) - return u.unmarshalValue(reflect.ValueOf(sv).Elem(), inputValue, prop) - } else { - return fmt.Errorf("unrecognized type for Value %q", ivStr) - } - return nil } } @@ -895,26 +694,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe } } } - // Handle proto2 extensions. - if len(jsonFields) > 0 { - if ep, ok := target.Addr().Interface().(proto.Message); ok { - for _, ext := range proto.RegisteredExtensions(ep) { - name := fmt.Sprintf("[%s]", ext.Name) - raw, ok := jsonFields[name] - if !ok { - continue - } - delete(jsonFields, name) - nv := reflect.New(reflect.TypeOf(ext.ExtensionType).Elem()) - if err := u.unmarshalValue(nv.Elem(), raw, nil); err != nil { - return err - } - if err := proto.SetExtension(ep, ext, nv.Interface()); err != nil { - return err - } - } - } - } if !u.AllowUnknownFields && len(jsonFields) > 0 { // Pick any field to be the scapegoat. var f string @@ -987,15 +766,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe inputValue = inputValue[1 : len(inputValue)-1] } - // Non-finite numbers can be encoded as strings. - isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64 - if isFloat { - if num, ok := nonFinite[string(inputValue)]; ok { - target.SetFloat(num) - return nil - } - } - // Use the encoding/json for parsing other value types. return json.Unmarshal(inputValue, target.Addr().Interface()) } diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go index da93163e6..78f67c4d7 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go @@ -35,7 +35,6 @@ import ( "bytes" "encoding/json" "io" - "math" "reflect" "strings" "testing" @@ -44,7 +43,6 @@ import ( pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto" proto3pb "github.com/golang/protobuf/proto/proto3_proto" - "github.com/golang/protobuf/ptypes" anypb "github.com/golang/protobuf/ptypes/any" durpb "github.com/golang/protobuf/ptypes/duration" stpb "github.com/golang/protobuf/ptypes/struct" @@ -309,23 +307,6 @@ var ( "value": "1.212s" } }` - - nonFinites = &pb.NonFinites{ - FNan: proto.Float32(float32(math.NaN())), - FPinf: proto.Float32(float32(math.Inf(1))), - FNinf: proto.Float32(float32(math.Inf(-1))), - DNan: proto.Float64(float64(math.NaN())), - DPinf: proto.Float64(float64(math.Inf(1))), - DNinf: proto.Float64(float64(math.Inf(-1))), - } - nonFinitesJSON = `{` + - `"fNan":"NaN",` + - `"fPinf":"Infinity",` + - `"fNinf":"-Infinity",` + - `"dNan":"NaN",` + - `"dPinf":"Infinity",` + - `"dNinf":"-Infinity"` + - `}` ) func init() { @@ -345,7 +326,6 @@ var marshalingTests = []struct { }{ {"simple flat object", marshaler, simpleObject, simpleObjectJSON}, {"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectPrettyJSON}, - {"non-finite floats fields object", marshaler, nonFinites, nonFinitesJSON}, {"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON}, {"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON}, {"nested message/enum flat object", marshaler, complexObject, complexObjectJSON}, @@ -370,9 +350,6 @@ var marshalingTests = []struct { `{"rFunny":[1,2]}`}, {"empty value", marshaler, &pb.Simple3{}, `{}`}, {"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`}, - {"empty repeated emitted", Marshaler{EmitDefaults: true}, &pb.SimpleSlice3{}, `{"slices":[]}`}, - {"empty map emitted", Marshaler{EmitDefaults: true}, &pb.SimpleMap3{}, `{"stringy":{}}`}, - {"nested struct null", Marshaler{EmitDefaults: true}, &pb.SimpleNull3{}, `{"simple":null}`}, {"map", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`}, {"map", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON}, {"map", marshaler, @@ -409,36 +386,11 @@ var marshalingTests = []struct { {"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3.000s"}`}, {"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{ Fields: map[string]*stpb.Value{ - "one": {Kind: &stpb.Value_StringValue{"loneliest number"}}, - "two": {Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}, + "one": &stpb.Value{Kind: &stpb.Value_StringValue{"loneliest number"}}, + "two": &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}, }, }}, `{"st":{"one":"loneliest number","two":null}}`}, - {"empty ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{}}, `{"lv":[]}`}, - {"basic ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_NullValue{}}, - {Kind: &stpb.Value_NumberValue{3}}, - {Kind: &stpb.Value_BoolValue{true}}, - }}}, `{"lv":["x",null,3,true]}`}, {"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}, `{"ts":"2014-05-13T16:53:20.021Z"}`}, - {"number Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}, `{"val":1}`}, - {"null Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}, `{"val":null}`}, - {"string number value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}, `{"val":"9223372036854775807"}`}, - {"list of lists Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{ - Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}}, - }}}, - {Kind: &stpb.Value_StringValue{"z"}}, - }, - }}}, - }, - }}, - }}, `{"val":["x",[["y"],"z"]]}`}, {"DoubleValue", marshaler, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}, `{"dbl":1.2}`}, {"FloatValue", marshaler, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}, `{"flt":1.2}`}, @@ -462,36 +414,6 @@ func TestMarshaling(t *testing.T) { } } -func TestMarshalJSONPBMarshaler(t *testing.T) { - rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }` - msg := dynamicMessage{rawJson: rawJson} - str, err := new(Marshaler).MarshalToString(&msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling JSONPBMarshaler: %v", err) - } - if str != rawJson { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, rawJson) - } -} - -func TestMarshalAnyJSONPBMarshaler(t *testing.T) { - msg := dynamicMessage{rawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`} - a, err := ptypes.MarshalAny(&msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling to Any: %v", err) - } - str, err := new(Marshaler).MarshalToString(a) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling Any to JSON: %v", err) - } - // after custom marshaling, it's round-tripped through JSON decoding/encoding already, - // so the keys are sorted, whitespace is compacted, and "@type" key has been added - expected := `{"@type":"type.googleapis.com/` + dynamicMessageName +`","baz":[0,1,2,3],"foo":"bar"}` - if str != expected { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, expected) - } -} - var unmarshalingTests = []struct { desc string unmarshaler Unmarshaler @@ -530,17 +452,9 @@ var unmarshalingTests = []struct { }}}, {"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}}, {"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}}, - {"NaN", Unmarshaler{}, `{"oDouble":"NaN"}`, &pb.Simple{ODouble: proto.Float64(math.NaN())}}, - {"Inf", Unmarshaler{}, `{"oFloat":"Infinity"}`, &pb.Simple{OFloat: proto.Float32(float32(math.Inf(1)))}}, - {"-Inf", Unmarshaler{}, `{"oDouble":"-Infinity"}`, &pb.Simple{ODouble: proto.Float64(math.Inf(-1))}}, {"map", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}}, {"map", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}}, {"map", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}}, - {"proto2 extension", Unmarshaler{}, realNumberJSON, realNumber}, - {"Any with message", Unmarshaler{}, anySimpleJSON, anySimple}, - {"Any with message and indent", Unmarshaler{}, anySimplePrettyJSON, anySimple}, - {"Any with WKT", Unmarshaler{}, anyWellKnownJSON, anyWellKnown}, - {"Any with WKT and indent", Unmarshaler{}, anyWellKnownPrettyJSON, anyWellKnown}, // TODO: This is broken. //{"map", Unmarshaler{}, `{"enumy":{"XIV":"ROMAN"}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}}, {"map", Unmarshaler{}, `{"enumy":{"XIV":2}}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}}, @@ -553,55 +467,9 @@ var unmarshalingTests = []struct { {"camelName input", Unmarshaler{}, `{"oBool":true}`, &pb.Simple{OBool: proto.Bool(true)}}, {"Duration", Unmarshaler{}, `{"dur":"3.000s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}}, - {"null Duration", Unmarshaler{}, `{"dur":null}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 0}}}, {"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20.021Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}}, {"PreEpochTimestamp", Unmarshaler{}, `{"ts":"1969-12-31T23:59:58.999999995Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -2, Nanos: 999999995}}}, {"ZeroTimeTimestamp", Unmarshaler{}, `{"ts":"0001-01-01T00:00:00Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}}}, - {"null Timestamp", Unmarshaler{}, `{"ts":null}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 0, Nanos: 0}}}, - {"null Struct", Unmarshaler{}, `{"st": null}`, &pb.KnownTypes{St: &stpb.Struct{}}}, - {"empty Struct", Unmarshaler{}, `{"st": {}}`, &pb.KnownTypes{St: &stpb.Struct{}}}, - {"basic Struct", Unmarshaler{}, `{"st": {"a": "x", "b": null, "c": 3, "d": true}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{ - "a": {Kind: &stpb.Value_StringValue{"x"}}, - "b": {Kind: &stpb.Value_NullValue{}}, - "c": {Kind: &stpb.Value_NumberValue{3}}, - "d": {Kind: &stpb.Value_BoolValue{true}}, - }}}}, - {"nested Struct", Unmarshaler{}, `{"st": {"a": {"b": 1, "c": [{"d": true}, "f"]}}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{ - "a": {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{ - "b": {Kind: &stpb.Value_NumberValue{1}}, - "c": {Kind: &stpb.Value_ListValue{&stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{"d": {Kind: &stpb.Value_BoolValue{true}}}}}}, - {Kind: &stpb.Value_StringValue{"f"}}, - }}}}, - }}}}, - }}}}, - {"null ListValue", Unmarshaler{}, `{"lv": null}`, &pb.KnownTypes{Lv: &stpb.ListValue{}}}, - {"empty ListValue", Unmarshaler{}, `{"lv": []}`, &pb.KnownTypes{Lv: &stpb.ListValue{}}}, - {"basic ListValue", Unmarshaler{}, `{"lv": ["x", null, 3, true]}`, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_NullValue{}}, - {Kind: &stpb.Value_NumberValue{3}}, - {Kind: &stpb.Value_BoolValue{true}}, - }}}}, - {"number Value", Unmarshaler{}, `{"val":1}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}}, - {"null Value", Unmarshaler{}, `{"val":null}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}}, - {"bool Value", Unmarshaler{}, `{"val":true}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_BoolValue{true}}}}, - {"string Value", Unmarshaler{}, `{"val":"x"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"x"}}}}, - {"string number value", Unmarshaler{}, `{"val":"9223372036854775807"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}}, - {"list of lists Value", Unmarshaler{}, `{"val":["x", [["y"], "z"]]}`, &pb.KnownTypes{Val: &stpb.Value{ - Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}}, - }}}, - {Kind: &stpb.Value_StringValue{"z"}}, - }, - }}}, - }, - }}}}}, {"DoubleValue", Unmarshaler{}, `{"dbl":1.2}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}}, {"FloatValue", Unmarshaler{}, `{"flt":1.2}`, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}}, @@ -691,69 +559,3 @@ func TestUnmarshalingBadInput(t *testing.T) { } } } - -func TestUnmarshalJSONPBUnmarshaler(t *testing.T) { - rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }` - var msg dynamicMessage - if err := Unmarshal(strings.NewReader(rawJson), &msg); err != nil { - t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err) - } - if msg.rawJson != rawJson { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", msg.rawJson, rawJson) - } -} - -func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) { - rawJson := `{ "@type": "blah.com/` + dynamicMessageName + `", "foo": "bar", "baz": [0, 1, 2, 3] }` - var got anypb.Any - if err := Unmarshal(strings.NewReader(rawJson), &got); err != nil { - t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err) - } - - dm := &dynamicMessage{rawJson: `{"baz":[0,1,2,3],"foo":"bar"}`} - var want anypb.Any - if b, err := proto.Marshal(dm); err != nil { - t.Errorf("an unexpected error occurred when marshaling message: %v", err) - } else { - want.TypeUrl = "blah.com/" + dynamicMessageName - want.Value = b - } - - if !proto.Equal(&got, &want) { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", got, want) - } -} - -const ( - dynamicMessageName = "google.protobuf.jsonpb.testing.dynamicMessage" -) -func init() { - // we register the custom type below so that we can use it in Any types - proto.RegisterType((*dynamicMessage)(nil), dynamicMessageName) -} - -// dynamicMessage implements protobuf.Message but is not a normal generated message type. -// It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support. -type dynamicMessage struct { - rawJson string `protobuf:"bytes,1,opt,name=rawJson"` -} - -func (m *dynamicMessage) Reset() { - m.rawJson = "{}" -} - -func (m *dynamicMessage) String() string { - return m.rawJson -} - -func (m *dynamicMessage) ProtoMessage() { -} - -func (m *dynamicMessage) MarshalJSONPB(jm *Marshaler) ([]byte, error) { - return []byte(m.rawJson), nil -} - -func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error { - m.rawJson = string(js) - return nil -} \ No newline at end of file diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go index ebb180e88..cd6ff1cde 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: more_test_objects.proto +// DO NOT EDIT! /* Package jsonpb is a generated protocol buffer package. @@ -10,12 +11,8 @@ It is generated from these files: It has these top-level messages: Simple3 - SimpleSlice3 - SimpleMap3 - SimpleNull3 Mappy Simple - NonFinites Repeats Widget Maps @@ -74,61 +71,6 @@ func (m *Simple3) String() string { return proto.CompactTextString(m) func (*Simple3) ProtoMessage() {} func (*Simple3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (m *Simple3) GetDub() float64 { - if m != nil { - return m.Dub - } - return 0 -} - -type SimpleSlice3 struct { - Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"` -} - -func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} } -func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) } -func (*SimpleSlice3) ProtoMessage() {} -func (*SimpleSlice3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *SimpleSlice3) GetSlices() []string { - if m != nil { - return m.Slices - } - return nil -} - -type SimpleMap3 struct { - Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SimpleMap3) Reset() { *m = SimpleMap3{} } -func (m *SimpleMap3) String() string { return proto.CompactTextString(m) } -func (*SimpleMap3) ProtoMessage() {} -func (*SimpleMap3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SimpleMap3) GetStringy() map[string]string { - if m != nil { - return m.Stringy - } - return nil -} - -type SimpleNull3 struct { - Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"` -} - -func (m *SimpleNull3) Reset() { *m = SimpleNull3{} } -func (m *SimpleNull3) String() string { return proto.CompactTextString(m) } -func (*SimpleNull3) ProtoMessage() {} -func (*SimpleNull3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SimpleNull3) GetSimple() *Simple3 { - if m != nil { - return m.Simple - } - return nil -} - type Mappy struct { Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -145,7 +87,7 @@ type Mappy struct { func (m *Mappy) Reset() { *m = Mappy{} } func (m *Mappy) String() string { return proto.CompactTextString(m) } func (*Mappy) ProtoMessage() {} -func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *Mappy) GetNummy() map[int64]int32 { if m != nil { @@ -219,9 +161,6 @@ func (m *Mappy) GetU64Booly() map[uint64]bool { func init() { proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3") - proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3") - proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3") - proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3") proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy") proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value) } @@ -229,38 +168,33 @@ func init() { func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 526 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c, - 0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0, - 0xad, 0x0c, 0xe6, 0x8b, 0x78, 0x74, 0x5d, 0x77, 0x95, 0x8e, 0x5e, 0x94, 0x11, 0x07, 0x1c, 0xc2, - 0x2e, 0x4b, 0xdc, 0x99, 0x90, 0xcc, 0x5f, 0xd8, 0xd6, 0xc0, 0xd7, 0xfb, 0xbb, 0x07, 0xe3, 0x48, - 0x72, 0x2d, 0x07, 0x85, 0x6c, 0x77, 0x52, 0x7e, 0xcf, 0xe3, 0x73, 0x24, 0x1d, 0x02, 0x2f, 0xd3, - 0xbc, 0x8c, 0x1f, 0xea, 0xb8, 0xaa, 0x1f, 0xf2, 0x68, 0x17, 0x3f, 0xd6, 0x95, 0x57, 0x94, 0x79, - 0x9d, 0x13, 0x63, 0x57, 0xe5, 0x59, 0x11, 0xb9, 0xe7, 0x60, 0x2e, 0xb7, 0x69, 0x91, 0xc4, 0x3e, - 0x19, 0xc3, 0xf0, 0x3b, 0x8d, 0x1c, 0xed, 0x42, 0xbb, 0xd4, 0x42, 0x5c, 0xba, 0x6f, 0xe0, 0x94, - 0x87, 0xcb, 0x64, 0xfb, 0x18, 0xfb, 0xe4, 0x05, 0x18, 0x15, 0xae, 0x2a, 0x47, 0xbb, 0x18, 0x5e, - 0xda, 0xa1, 0xd8, 0xb9, 0xbf, 0x34, 0x00, 0x0e, 0xce, 0xd7, 0x85, 0x4f, 0x3e, 0x81, 0x59, 0xd5, - 0xe5, 0x36, 0xdb, 0x34, 0x8c, 0x1b, 0x4d, 0x5f, 0x79, 0xbc, 0x9a, 0xd7, 0x41, 0xde, 0x92, 0x13, - 0x77, 0x59, 0x5d, 0x36, 0x61, 0xcb, 0x4f, 0x6e, 0xe0, 0x54, 0x0e, 0xb0, 0xa7, 0x1f, 0x71, 0xc3, - 0x7a, 0xb2, 0x43, 0x5c, 0x92, 0xe7, 0xa0, 0xff, 0x5c, 0x27, 0x34, 0x76, 0x06, 0xec, 0x37, 0xbe, - 0xb9, 0x19, 0x5c, 0x6b, 0xee, 0x15, 0x8c, 0xf8, 0xf7, 0x03, 0x9a, 0x24, 0x3e, 0x79, 0x0b, 0x46, - 0xc5, 0xb6, 0xcc, 0x1e, 0x4d, 0x9f, 0xf5, 0x9b, 0xf0, 0x43, 0x11, 0xbb, 0xbf, 0x2d, 0xd0, 0xe7, - 0xeb, 0xa2, 0x68, 0x88, 0x07, 0x7a, 0x46, 0xd3, 0xb4, 0x6d, 0xdb, 0x69, 0x0d, 0x96, 0x7a, 0x01, - 0x46, 0xbc, 0x5f, 0x8e, 0x21, 0x5f, 0xd5, 0x65, 0xd9, 0x38, 0x03, 0x15, 0xbf, 0xc4, 0x48, 0xf0, - 0x0c, 0x43, 0x3e, 0x8f, 0x76, 0xbb, 0xc6, 0x19, 0xaa, 0xf8, 0x05, 0x46, 0x82, 0x67, 0x18, 0xf2, - 0x11, 0xdd, 0x6c, 0x1a, 0xe7, 0x44, 0xc5, 0xdf, 0x62, 0x24, 0x78, 0x86, 0x31, 0x3e, 0xcf, 0x93, - 0xc6, 0xd1, 0x95, 0x3c, 0x46, 0x2d, 0x8f, 0x6b, 0xe4, 0xe3, 0x8c, 0xa6, 0x8d, 0x63, 0xa8, 0xf8, - 0x3b, 0x8c, 0x04, 0xcf, 0x30, 0xf2, 0x11, 0xac, 0xca, 0x9f, 0xf2, 0x12, 0x26, 0x53, 0xce, 0xf7, - 0x8e, 0x2c, 0x52, 0x6e, 0x3d, 0xc1, 0x4c, 0xbc, 0xfa, 0xc0, 0x45, 0x4b, 0x29, 0x8a, 0xb4, 0x15, - 0xc5, 0x16, 0x45, 0xda, 0x56, 0xb4, 0x55, 0xe2, 0xaa, 0x5f, 0x91, 0x4a, 0x15, 0x69, 0x5b, 0x11, - 0x94, 0x62, 0xbf, 0x62, 0x0b, 0x4f, 0xae, 0x01, 0xba, 0x87, 0x96, 0xe7, 0x6f, 0xa8, 0x98, 0x3f, - 0x5d, 0x9a, 0x3f, 0x34, 0xbb, 0x27, 0xff, 0x97, 0xc9, 0x9d, 0xdc, 0x03, 0x74, 0x8f, 0x2f, 0x9b, - 0x3a, 0x37, 0x5f, 0xcb, 0xa6, 0x62, 0x92, 0xfb, 0x4d, 0x74, 0x73, 0x71, 0xac, 0x7d, 0x7b, 0xdf, - 0x7c, 0xba, 0x10, 0xd9, 0xb4, 0x14, 0xa6, 0xb5, 0xd7, 0x7e, 0x37, 0x2b, 0x8a, 0x83, 0xf7, 0xda, - 0xff, 0xbf, 0x6b, 0x3f, 0xa0, 0x69, 0x5c, 0xae, 0x13, 0xf9, 0x53, 0x9f, 0xe1, 0xac, 0x37, 0x43, - 0x8a, 0xcb, 0x38, 0xdc, 0x07, 0xca, 0xf2, 0xab, 0x1e, 0x3b, 0xfe, 0xbe, 0xbc, 0x3a, 0x54, 0xf9, - 0xec, 0x6f, 0xe4, 0x43, 0x95, 0x4f, 0x8e, 0xc8, 0xef, 0xde, 0x83, 0x29, 0x6e, 0x82, 0x8c, 0xc0, - 0x5c, 0x05, 0x5f, 0x83, 0xc5, 0xb7, 0x60, 0xfc, 0x1f, 0x01, 0x30, 0x66, 0xe1, 0xec, 0xf6, 0xfe, - 0xcb, 0x58, 0x23, 0x36, 0xe8, 0xe1, 0x62, 0x3e, 0x0b, 0xc6, 0x83, 0xc8, 0x60, 0x7f, 0xe0, 0xfe, - 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x34, 0xaf, 0xdb, 0x05, 0x00, 0x00, + // 444 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x94, 0xc1, 0x6b, 0xdb, 0x30, + 0x14, 0x87, 0xe7, 0xa4, 0x4e, 0xec, 0x17, 0xba, 0x19, 0x31, 0x98, 0x58, 0x2f, 0xa1, 0x30, 0x08, + 0x83, 0xf9, 0x90, 0x8c, 0xad, 0x6c, 0xa7, 0x74, 0xf4, 0x50, 0x46, 0x1d, 0x70, 0x09, 0x3b, 0x96, + 0x78, 0x13, 0x65, 0x9e, 0x6d, 0x19, 0xdb, 0x1a, 0xe8, 0x8f, 0x1f, 0x8c, 0x27, 0xcb, 0xb5, 0x6c, + 0x14, 0xd2, 0x9b, 0xcc, 0xef, 0xfb, 0xf2, 0x9e, 0xf4, 0x1e, 0x81, 0x37, 0x39, 0xaf, 0xd8, 0x43, + 0xc3, 0xea, 0xe6, 0x81, 0x27, 0x29, 0xfb, 0xd9, 0xd4, 0x61, 0x59, 0xf1, 0x86, 0x93, 0x59, 0x5a, + 0xf3, 0xa2, 0x4c, 0x2e, 0x2f, 0x60, 0x7e, 0xff, 0x3b, 0x2f, 0x33, 0xb6, 0x21, 0x01, 0x4c, 0x7f, + 0x89, 0x84, 0x3a, 0x4b, 0x67, 0xe5, 0xc4, 0x78, 0xbc, 0xfc, 0xe7, 0x81, 0x7b, 0x77, 0x28, 0x4b, + 0x49, 0x42, 0x70, 0x0b, 0x91, 0xe7, 0x92, 0x3a, 0xcb, 0xe9, 0x6a, 0xb1, 0xa6, 0x61, 0xab, 0x87, + 0x2a, 0x0d, 0x23, 0x8c, 0x6e, 0x8a, 0xa6, 0x92, 0x71, 0x8b, 0x21, 0x5f, 0x37, 0x55, 0x25, 0xe9, + 0xc4, 0xc6, 0xdf, 0x63, 0xa4, 0x79, 0x85, 0x21, 0xcf, 0x93, 0x34, 0x95, 0x74, 0x6a, 0xe3, 0x77, + 0x18, 0x69, 0x5e, 0x61, 0xc8, 0x27, 0xe2, 0xf1, 0x51, 0xd2, 0x33, 0x1b, 0x7f, 0x8d, 0x91, 0xe6, + 0x15, 0xa6, 0x78, 0xce, 0x33, 0x49, 0x5d, 0x2b, 0x8f, 0x51, 0xc7, 0xe3, 0x19, 0x79, 0x56, 0x88, + 0x5c, 0xd2, 0x99, 0x8d, 0xbf, 0xc1, 0x48, 0xf3, 0x0a, 0x23, 0x9f, 0xc1, 0xab, 0x37, 0xeb, 0xb6, + 0xc4, 0x5c, 0x29, 0x17, 0xa3, 0x2b, 0xeb, 0xb4, 0xb5, 0x9e, 0x60, 0x25, 0x7e, 0xfa, 0xd8, 0x8a, + 0x9e, 0x55, 0xd4, 0x69, 0x27, 0xea, 0x4f, 0x14, 0x45, 0x57, 0xd1, 0xb7, 0x89, 0xfb, 0x61, 0x45, + 0x61, 0x54, 0x14, 0x5d, 0x45, 0xb0, 0x8a, 0xc3, 0x8a, 0x1d, 0xfc, 0xf6, 0x0a, 0xa0, 0x1f, 0x34, + 0x6e, 0xcb, 0x1f, 0x26, 0xd5, 0xb6, 0x4c, 0x63, 0x3c, 0x92, 0xd7, 0xe0, 0xfe, 0x3d, 0x64, 0x82, + 0xd1, 0xc9, 0xd2, 0x59, 0xb9, 0x71, 0xfb, 0xf1, 0x65, 0x72, 0xe5, 0xa0, 0xd9, 0x8f, 0xdc, 0x34, + 0x7d, 0x8b, 0xe9, 0x9b, 0xe6, 0x2d, 0x40, 0x3f, 0x7c, 0xd3, 0x74, 0x5b, 0xf3, 0x9d, 0x69, 0x2e, + 0xd6, 0xaf, 0xba, 0x9b, 0xe8, 0x9d, 0x1e, 0x35, 0xd1, 0xef, 0xc5, 0xa9, 0xf6, 0xfd, 0xb1, 0xf9, + 0xf4, 0x20, 0xa6, 0xe9, 0x59, 0x4c, 0x6f, 0xd4, 0x7e, 0xbf, 0x2b, 0x96, 0x8b, 0x0f, 0xda, 0x7f, + 0xd9, 0xb7, 0x1f, 0x89, 0x9c, 0x55, 0x87, 0xcc, 0xfc, 0xa9, 0xaf, 0x70, 0x3e, 0xd8, 0x21, 0xcb, + 0x63, 0x1c, 0xef, 0x03, 0x65, 0x73, 0xaa, 0xa7, 0xae, 0x3f, 0x96, 0xf7, 0xc7, 0x2a, 0x9f, 0x3f, + 0x47, 0x3e, 0x56, 0xf9, 0xec, 0x84, 0xfc, 0xfe, 0x03, 0xcc, 0xf5, 0x4b, 0x90, 0x05, 0xcc, 0xf7, + 0xd1, 0xf7, 0x68, 0xf7, 0x23, 0x0a, 0x5e, 0x10, 0x80, 0xd9, 0x36, 0xde, 0x5e, 0xdf, 0x7e, 0x0b, + 0x1c, 0xe2, 0x83, 0x1b, 0xef, 0xee, 0xb6, 0x51, 0x30, 0x49, 0x66, 0xea, 0xaf, 0x6d, 0xf3, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0xa2, 0x4b, 0xe1, 0x77, 0xf5, 0x04, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto index d254fa5fa..43b440e2d 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto @@ -37,18 +37,6 @@ message Simple3 { double dub = 1; } -message SimpleSlice3 { - repeated string slices = 1; -} - -message SimpleMap3 { - map stringy = 1; -} - -message SimpleNull3 { - Simple3 simple = 1; -} - enum Numeral { UNKNOWN = 0; ARABIC = 1; diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go index d413d740d..104a308d8 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: test_objects.proto +// DO NOT EDIT! package jsonpb @@ -52,7 +53,7 @@ func (x *Widget_Color) UnmarshalJSON(data []byte) error { *x = Widget_Color(value) return nil } -func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } +func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} } // Test message for holding primitive types. type Simple struct { @@ -152,64 +153,6 @@ func (m *Simple) GetOBytes() []byte { return nil } -// Test message for holding special non-finites primitives. -type NonFinites struct { - FNan *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"` - FPinf *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"` - FNinf *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"` - DNan *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"` - DPinf *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"` - DNinf *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NonFinites) Reset() { *m = NonFinites{} } -func (m *NonFinites) String() string { return proto.CompactTextString(m) } -func (*NonFinites) ProtoMessage() {} -func (*NonFinites) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *NonFinites) GetFNan() float32 { - if m != nil && m.FNan != nil { - return *m.FNan - } - return 0 -} - -func (m *NonFinites) GetFPinf() float32 { - if m != nil && m.FPinf != nil { - return *m.FPinf - } - return 0 -} - -func (m *NonFinites) GetFNinf() float32 { - if m != nil && m.FNinf != nil { - return *m.FNinf - } - return 0 -} - -func (m *NonFinites) GetDNan() float64 { - if m != nil && m.DNan != nil { - return *m.DNan - } - return 0 -} - -func (m *NonFinites) GetDPinf() float64 { - if m != nil && m.DPinf != nil { - return *m.DPinf - } - return 0 -} - -func (m *NonFinites) GetDNinf() float64 { - if m != nil && m.DNinf != nil { - return *m.DNinf - } - return 0 -} - // Test message for holding repeated primitives. type Repeats struct { RBool []bool `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"` @@ -229,7 +172,7 @@ type Repeats struct { func (m *Repeats) Reset() { *m = Repeats{} } func (m *Repeats) String() string { return proto.CompactTextString(m) } func (*Repeats) ProtoMessage() {} -func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } +func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } func (m *Repeats) GetRBool() []bool { if m != nil { @@ -322,7 +265,7 @@ type Widget struct { func (m *Widget) Reset() { *m = Widget{} } func (m *Widget) String() string { return proto.CompactTextString(m) } func (*Widget) ProtoMessage() {} -func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } +func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } func (m *Widget) GetColor() Widget_Color { if m != nil && m.Color != nil { @@ -375,7 +318,7 @@ type Maps struct { func (m *Maps) Reset() { *m = Maps{} } func (m *Maps) String() string { return proto.CompactTextString(m) } func (*Maps) ProtoMessage() {} -func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } +func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } func (m *Maps) GetMInt64Str() map[int64]string { if m != nil { @@ -404,7 +347,7 @@ type MsgWithOneof struct { func (m *MsgWithOneof) Reset() { *m = MsgWithOneof{} } func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) } func (*MsgWithOneof) ProtoMessage() {} -func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } +func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } type isMsgWithOneof_Union interface { isMsgWithOneof_Union() @@ -417,7 +360,7 @@ type MsgWithOneof_Salary struct { Salary int64 `protobuf:"varint,2,opt,name=salary,oneof"` } type MsgWithOneof_Country struct { - Country string `protobuf:"bytes,3,opt,name=Country,oneof"` + Country string `protobuf:"bytes,3,opt,name=Country,json=country,oneof"` } type MsgWithOneof_HomeAddress struct { HomeAddress string `protobuf:"bytes,4,opt,name=home_address,json=homeAddress,oneof"` @@ -567,7 +510,7 @@ type Real struct { func (m *Real) Reset() { *m = Real{} } func (m *Real) String() string { return proto.CompactTextString(m) } func (*Real) ProtoMessage() {} -func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } +func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } var extRange_Real = []proto.ExtensionRange{ {100, 536870911}, @@ -593,7 +536,7 @@ type Complex struct { func (m *Complex) Reset() { *m = Complex{} } func (m *Complex) String() string { return proto.CompactTextString(m) } func (*Complex) ProtoMessage() {} -func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } +func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } var extRange_Complex = []proto.ExtensionRange{ {100, 536870911}, @@ -616,7 +559,6 @@ var E_Complex_RealExtension = &proto.ExtensionDesc{ Field: 123, Name: "jsonpb.Complex.real_extension", Tag: "bytes,123,opt,name=real_extension,json=realExtension", - Filename: "test_objects.proto", } type KnownTypes struct { @@ -624,8 +566,6 @@ type KnownTypes struct { Dur *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=dur" json:"dur,omitempty"` St *google_protobuf2.Struct `protobuf:"bytes,12,opt,name=st" json:"st,omitempty"` Ts *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=ts" json:"ts,omitempty"` - Lv *google_protobuf2.ListValue `protobuf:"bytes,15,opt,name=lv" json:"lv,omitempty"` - Val *google_protobuf2.Value `protobuf:"bytes,16,opt,name=val" json:"val,omitempty"` Dbl *google_protobuf4.DoubleValue `protobuf:"bytes,3,opt,name=dbl" json:"dbl,omitempty"` Flt *google_protobuf4.FloatValue `protobuf:"bytes,4,opt,name=flt" json:"flt,omitempty"` I64 *google_protobuf4.Int64Value `protobuf:"bytes,5,opt,name=i64" json:"i64,omitempty"` @@ -641,7 +581,7 @@ type KnownTypes struct { func (m *KnownTypes) Reset() { *m = KnownTypes{} } func (m *KnownTypes) String() string { return proto.CompactTextString(m) } func (*KnownTypes) ProtoMessage() {} -func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } +func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } func (m *KnownTypes) GetAn() *google_protobuf.Any { if m != nil { @@ -671,20 +611,6 @@ func (m *KnownTypes) GetTs() *google_protobuf3.Timestamp { return nil } -func (m *KnownTypes) GetLv() *google_protobuf2.ListValue { - if m != nil { - return m.Lv - } - return nil -} - -func (m *KnownTypes) GetVal() *google_protobuf2.Value { - if m != nil { - return m.Val - } - return nil -} - func (m *KnownTypes) GetDbl() *google_protobuf4.DoubleValue { if m != nil { return m.Dbl @@ -754,12 +680,10 @@ var E_Name = &proto.ExtensionDesc{ Field: 124, Name: "jsonpb.name", Tag: "bytes,124,opt,name=name", - Filename: "test_objects.proto", } func init() { proto.RegisterType((*Simple)(nil), "jsonpb.Simple") - proto.RegisterType((*NonFinites)(nil), "jsonpb.NonFinites") proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats") proto.RegisterType((*Widget)(nil), "jsonpb.Widget") proto.RegisterType((*Maps)(nil), "jsonpb.Maps") @@ -775,78 +699,71 @@ func init() { func init() { proto.RegisterFile("test_objects.proto", fileDescriptor1) } var fileDescriptor1 = []byte{ - // 1160 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x41, 0x73, 0xdb, 0x44, - 0x14, 0xc7, 0x23, 0xc9, 0x92, 0xed, 0x75, 0x92, 0x9a, 0x6d, 0xda, 0x2a, 0x26, 0x80, 0xc6, 0x94, - 0x22, 0x0a, 0x75, 0x07, 0xc7, 0xe3, 0x61, 0x0a, 0x97, 0xa4, 0x71, 0x29, 0x43, 0x13, 0x98, 0x4d, - 0x43, 0x8f, 0x1e, 0x39, 0x5a, 0xbb, 0x2a, 0xf2, 0xae, 0x67, 0x77, 0x95, 0xd4, 0x03, 0x87, 0x9c, - 0x39, 0x32, 0x7c, 0x05, 0xf8, 0x08, 0x1c, 0xf8, 0x74, 0xcc, 0xdb, 0x95, 0xac, 0xc4, 0x8e, 0x4f, - 0xf1, 0x7b, 0xef, 0xff, 0xfe, 0x59, 0xed, 0x6f, 0x77, 0x1f, 0xc2, 0x8a, 0x4a, 0x35, 0xe4, 0xa3, - 0x77, 0xf4, 0x5c, 0xc9, 0xce, 0x4c, 0x70, 0xc5, 0xb1, 0xf7, 0x4e, 0x72, 0x36, 0x1b, 0xb5, 0x76, - 0x27, 0x9c, 0x4f, 0x52, 0xfa, 0x54, 0x67, 0x47, 0xd9, 0xf8, 0x69, 0xc4, 0xe6, 0x46, 0xd2, 0xfa, - 0x78, 0xb9, 0x14, 0x67, 0x22, 0x52, 0x09, 0x67, 0x79, 0x7d, 0x6f, 0xb9, 0x2e, 0x95, 0xc8, 0xce, - 0x55, 0x5e, 0xfd, 0x64, 0xb9, 0xaa, 0x92, 0x29, 0x95, 0x2a, 0x9a, 0xce, 0xd6, 0xd9, 0x5f, 0x8a, - 0x68, 0x36, 0xa3, 0x22, 0x5f, 0x61, 0xfb, 0x6f, 0x1b, 0x79, 0xa7, 0xc9, 0x74, 0x96, 0x52, 0x7c, - 0x0f, 0x79, 0x7c, 0x38, 0xe2, 0x3c, 0xf5, 0xad, 0xc0, 0x0a, 0x6b, 0xc4, 0xe5, 0x87, 0x9c, 0xa7, - 0xf8, 0x01, 0xaa, 0xf2, 0x61, 0xc2, 0xd4, 0x7e, 0xd7, 0xb7, 0x03, 0x2b, 0x74, 0x89, 0xc7, 0x7f, - 0x80, 0x68, 0x51, 0xe8, 0xf7, 0x7c, 0x27, 0xb0, 0x42, 0xc7, 0x14, 0xfa, 0x3d, 0xbc, 0x8b, 0x6a, - 0x7c, 0x98, 0x99, 0x96, 0x4a, 0x60, 0x85, 0x5b, 0xa4, 0xca, 0xcf, 0x74, 0x58, 0x96, 0xfa, 0x3d, - 0xdf, 0x0d, 0xac, 0xb0, 0x92, 0x97, 0x8a, 0x2e, 0x69, 0xba, 0xbc, 0xc0, 0x0a, 0x3f, 0x20, 0x55, - 0x7e, 0x7a, 0xad, 0x4b, 0x9a, 0xae, 0x6a, 0x60, 0x85, 0x38, 0x2f, 0xf5, 0x7b, 0x66, 0x11, 0xe3, - 0x94, 0x47, 0xca, 0xaf, 0x05, 0x56, 0x68, 0x13, 0x8f, 0xbf, 0x80, 0xc8, 0xf4, 0xc4, 0x3c, 0x1b, - 0xa5, 0xd4, 0xaf, 0x07, 0x56, 0x68, 0x91, 0x2a, 0x3f, 0xd2, 0x61, 0x6e, 0xa7, 0x44, 0xc2, 0x26, - 0x3e, 0x0a, 0xac, 0xb0, 0x0e, 0x76, 0x3a, 0x34, 0x76, 0xa3, 0xb9, 0xa2, 0xd2, 0x6f, 0x04, 0x56, - 0xb8, 0x49, 0x3c, 0x7e, 0x08, 0x51, 0xfb, 0x4f, 0x0b, 0xa1, 0x13, 0xce, 0x5e, 0x24, 0x2c, 0x51, - 0x54, 0xe2, 0xbb, 0xc8, 0x1d, 0x0f, 0x59, 0xc4, 0xf4, 0x56, 0xd9, 0xa4, 0x32, 0x3e, 0x89, 0x18, - 0x6c, 0xe0, 0x78, 0x38, 0x4b, 0xd8, 0x58, 0x6f, 0x94, 0x4d, 0xdc, 0xf1, 0xcf, 0x09, 0x1b, 0x9b, - 0x34, 0x83, 0xb4, 0x93, 0xa7, 0x4f, 0x20, 0x7d, 0x17, 0xb9, 0xb1, 0xb6, 0xa8, 0xe8, 0xd5, 0x55, - 0xe2, 0xdc, 0x22, 0x36, 0x16, 0xae, 0xce, 0xba, 0x71, 0x61, 0x11, 0x1b, 0x0b, 0x2f, 0x4f, 0x83, - 0x45, 0xfb, 0x1f, 0x1b, 0x55, 0x09, 0x9d, 0xd1, 0x48, 0x49, 0x90, 0x88, 0x82, 0x9e, 0x03, 0xf4, - 0x44, 0x41, 0x4f, 0x2c, 0xe8, 0x39, 0x40, 0x4f, 0x2c, 0xe8, 0x89, 0x05, 0x3d, 0x07, 0xe8, 0x89, - 0x05, 0x3d, 0x51, 0xd2, 0x73, 0x80, 0x9e, 0x28, 0xe9, 0x89, 0x92, 0x9e, 0x03, 0xf4, 0x44, 0x49, - 0x4f, 0x94, 0xf4, 0x1c, 0xa0, 0x27, 0x4e, 0xaf, 0x75, 0x2d, 0xe8, 0x39, 0x40, 0x4f, 0x94, 0xf4, - 0xc4, 0x82, 0x9e, 0x03, 0xf4, 0xc4, 0x82, 0x9e, 0x28, 0xe9, 0x39, 0x40, 0x4f, 0x94, 0xf4, 0x44, - 0x49, 0xcf, 0x01, 0x7a, 0xa2, 0xa4, 0x27, 0x16, 0xf4, 0x1c, 0xa0, 0x27, 0x0c, 0xbd, 0x7f, 0x6d, - 0xe4, 0xbd, 0x49, 0xe2, 0x09, 0x55, 0xf8, 0x31, 0x72, 0xcf, 0x79, 0xca, 0x85, 0x26, 0xb7, 0xdd, - 0xdd, 0xe9, 0x98, 0x2b, 0xda, 0x31, 0xe5, 0xce, 0x73, 0xa8, 0x11, 0x23, 0xc1, 0x4f, 0xc0, 0xcf, - 0xa8, 0x61, 0xf3, 0xd6, 0xa9, 0x3d, 0xa1, 0xff, 0xe2, 0x47, 0xc8, 0x93, 0xfa, 0x2a, 0xe9, 0x53, - 0xd5, 0xe8, 0x6e, 0x17, 0x6a, 0x73, 0xc1, 0x48, 0x5e, 0xc5, 0x5f, 0x98, 0x0d, 0xd1, 0x4a, 0x58, - 0xe7, 0xaa, 0x12, 0x36, 0x28, 0x97, 0x56, 0x85, 0x01, 0xec, 0xef, 0x68, 0xcf, 0x3b, 0x85, 0x32, - 0xe7, 0x4e, 0x8a, 0x3a, 0xfe, 0x0a, 0xd5, 0xc5, 0xb0, 0x10, 0xdf, 0xd3, 0xb6, 0x2b, 0xe2, 0x9a, - 0xc8, 0x7f, 0xb5, 0x3f, 0x43, 0xae, 0x59, 0x74, 0x15, 0x39, 0x64, 0x70, 0xd4, 0xdc, 0xc0, 0x75, - 0xe4, 0x7e, 0x4f, 0x06, 0x83, 0x93, 0xa6, 0x85, 0x6b, 0xa8, 0x72, 0xf8, 0xea, 0x6c, 0xd0, 0xb4, - 0xdb, 0x7f, 0xd9, 0xa8, 0x72, 0x1c, 0xcd, 0x24, 0xfe, 0x16, 0x35, 0xa6, 0xe6, 0xb8, 0xc0, 0xde, - 0xeb, 0x33, 0xd6, 0xe8, 0x7e, 0x58, 0xf8, 0x83, 0xa4, 0x73, 0xac, 0xcf, 0xcf, 0xa9, 0x12, 0x03, - 0xa6, 0xc4, 0x9c, 0xd4, 0xa7, 0x45, 0x8c, 0x0f, 0xd0, 0xd6, 0x54, 0x9f, 0xcd, 0xe2, 0xab, 0x6d, - 0xdd, 0xfe, 0xd1, 0xcd, 0x76, 0x38, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x63, 0x5a, 0x66, 0x5a, 0xdf, - 0xa1, 0xed, 0x9b, 0xfe, 0xb8, 0x89, 0x9c, 0x5f, 0xe9, 0x5c, 0x63, 0x74, 0x08, 0xfc, 0xc4, 0x3b, - 0xc8, 0xbd, 0x88, 0xd2, 0x8c, 0xea, 0xeb, 0x57, 0x27, 0x26, 0x78, 0x66, 0x7f, 0x63, 0xb5, 0x4e, - 0x50, 0x73, 0xd9, 0xfe, 0x7a, 0x7f, 0xcd, 0xf4, 0x3f, 0xbc, 0xde, 0xbf, 0x0a, 0xa5, 0xf4, 0x6b, - 0xff, 0x61, 0xa1, 0xcd, 0x63, 0x39, 0x79, 0x93, 0xa8, 0xb7, 0x3f, 0x31, 0xca, 0xc7, 0xf8, 0x3e, - 0x72, 0x55, 0xa2, 0x52, 0xaa, 0xed, 0xea, 0x2f, 0x37, 0x88, 0x09, 0xb1, 0x8f, 0x3c, 0x19, 0xa5, - 0x91, 0x98, 0x6b, 0x4f, 0xe7, 0xe5, 0x06, 0xc9, 0x63, 0xdc, 0x42, 0xd5, 0xe7, 0x3c, 0x83, 0x95, - 0xe8, 0x67, 0x01, 0x7a, 0x8a, 0x04, 0xfe, 0x14, 0x6d, 0xbe, 0xe5, 0x53, 0x3a, 0x8c, 0xe2, 0x58, - 0x50, 0x29, 0xf5, 0x0b, 0x01, 0x82, 0x06, 0x64, 0x0f, 0x4c, 0xf2, 0xb0, 0x8a, 0xdc, 0x8c, 0x25, - 0x9c, 0xb5, 0x1f, 0xa1, 0x0a, 0xa1, 0x51, 0x5a, 0x7e, 0xbe, 0x65, 0xde, 0x08, 0x1d, 0x3c, 0xae, - 0xd5, 0xe2, 0xe6, 0xd5, 0xd5, 0xd5, 0x95, 0xdd, 0xbe, 0x84, 0xff, 0x08, 0x5f, 0xf2, 0x1e, 0xef, - 0xa1, 0x7a, 0x32, 0x8d, 0x26, 0x09, 0x83, 0x95, 0x19, 0x79, 0x99, 0x28, 0x5b, 0xba, 0x47, 0x68, - 0x5b, 0xd0, 0x28, 0x1d, 0xd2, 0xf7, 0x8a, 0x32, 0x99, 0x70, 0x86, 0x37, 0xcb, 0x23, 0x15, 0xa5, - 0xfe, 0x6f, 0x37, 0xcf, 0x64, 0x6e, 0x4f, 0xb6, 0xa0, 0x69, 0x50, 0xf4, 0xb4, 0xff, 0x73, 0x11, - 0xfa, 0x91, 0xf1, 0x4b, 0xf6, 0x7a, 0x3e, 0xa3, 0x12, 0x3f, 0x44, 0x76, 0xc4, 0xfc, 0x6d, 0xdd, - 0xba, 0xd3, 0x31, 0xf3, 0xa9, 0x53, 0xcc, 0xa7, 0xce, 0x01, 0x9b, 0x13, 0x3b, 0x62, 0xf8, 0x4b, - 0xe4, 0xc4, 0x99, 0xb9, 0xa5, 0x8d, 0xee, 0xee, 0x8a, 0xec, 0x28, 0x9f, 0x92, 0x04, 0x54, 0xf8, - 0x73, 0x64, 0x4b, 0xe5, 0x6f, 0x6a, 0xed, 0x83, 0x15, 0xed, 0xa9, 0x9e, 0x98, 0xc4, 0x96, 0x70, - 0xfb, 0x6d, 0x25, 0x73, 0xbe, 0xad, 0x15, 0xe1, 0xeb, 0x62, 0x78, 0x12, 0x5b, 0x49, 0xd0, 0xa6, - 0x17, 0xfe, 0x9d, 0x35, 0xda, 0x57, 0x89, 0x54, 0xbf, 0xc0, 0x0e, 0x13, 0x3b, 0xbd, 0xc0, 0x21, - 0x72, 0x2e, 0xa2, 0xd4, 0x6f, 0x6a, 0xf1, 0xfd, 0x15, 0xb1, 0x11, 0x82, 0x04, 0x77, 0x90, 0x13, - 0x8f, 0x52, 0xcd, 0xbc, 0xd1, 0xdd, 0x5b, 0xfd, 0x2e, 0xfd, 0xc8, 0xe5, 0xfa, 0x78, 0x94, 0xe2, - 0x27, 0xc8, 0x19, 0xa7, 0x4a, 0x1f, 0x01, 0xb8, 0x70, 0xcb, 0x7a, 0xfd, 0x5c, 0xe6, 0xf2, 0x71, - 0xaa, 0x40, 0x9e, 0xe4, 0xb3, 0xf5, 0x36, 0xb9, 0xbe, 0x42, 0xb9, 0x3c, 0xe9, 0xf7, 0x60, 0x35, - 0x59, 0xbf, 0xa7, 0xa7, 0xca, 0x6d, 0xab, 0x39, 0xbb, 0xae, 0xcf, 0xfa, 0x3d, 0x6d, 0xbf, 0xdf, - 0xd5, 0x43, 0x78, 0x8d, 0xfd, 0x7e, 0xb7, 0xb0, 0xdf, 0xef, 0x6a, 0xfb, 0xfd, 0xae, 0x9e, 0xcc, - 0xeb, 0xec, 0x17, 0xfa, 0x4c, 0xeb, 0x2b, 0x7a, 0x84, 0xd5, 0xd7, 0x6c, 0x3a, 0xdc, 0x61, 0x23, - 0xd7, 0x3a, 0xf0, 0x87, 0xd7, 0x08, 0xad, 0xf1, 0x37, 0x63, 0x21, 0xf7, 0x97, 0x4a, 0xe0, 0xaf, - 0x91, 0x5b, 0x0e, 0xf7, 0xdb, 0x3e, 0x40, 0x8f, 0x0b, 0xd3, 0x60, 0x94, 0xcf, 0x02, 0x54, 0x61, - 0xd1, 0x94, 0x2e, 0x1d, 0xfc, 0xdf, 0xf5, 0x0b, 0xa3, 0x2b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, - 0xd5, 0x39, 0x32, 0x09, 0xf9, 0x09, 0x00, 0x00, + // 1055 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x95, 0x51, 0x73, 0xdb, 0x44, + 0x10, 0xc7, 0x23, 0xc9, 0x96, 0xec, 0x73, 0x12, 0xcc, 0x4d, 0x4a, 0x15, 0x13, 0x40, 0x63, 0x4a, + 0x11, 0x85, 0xba, 0x83, 0xe2, 0xf1, 0x30, 0x85, 0x97, 0xa4, 0x31, 0x94, 0x81, 0x94, 0x99, 0x4b, + 0x43, 0x1f, 0x3d, 0x72, 0x7c, 0x71, 0x55, 0x64, 0x9d, 0xe7, 0xee, 0x44, 0xea, 0x81, 0x87, 0x3c, + 0xf3, 0xcc, 0x57, 0x80, 0x8f, 0xc0, 0x27, 0xe2, 0x83, 0x74, 0x76, 0x4f, 0xb2, 0x12, 0x3b, 0x7e, + 0x8a, 0xf7, 0xf6, 0xbf, 0xff, 0x9c, 0x7e, 0xb7, 0x77, 0x4b, 0xa8, 0xe6, 0x4a, 0x8f, 0xc4, 0xf8, + 0x0d, 0xbf, 0xd0, 0xaa, 0x37, 0x97, 0x42, 0x0b, 0xea, 0xbe, 0x51, 0x22, 0x9b, 0x8f, 0x3b, 0xfb, + 0x53, 0x21, 0xa6, 0x29, 0x7f, 0x82, 0xab, 0xe3, 0xfc, 0xf2, 0x49, 0x9c, 0x2d, 0x8c, 0xa4, 0xf3, + 0xf1, 0x6a, 0x6a, 0x92, 0xcb, 0x58, 0x27, 0x22, 0x2b, 0xf2, 0x07, 0xab, 0x79, 0xa5, 0x65, 0x7e, + 0xa1, 0x8b, 0xec, 0x27, 0xab, 0x59, 0x9d, 0xcc, 0xb8, 0xd2, 0xf1, 0x6c, 0xbe, 0xc9, 0xfe, 0x4a, + 0xc6, 0xf3, 0x39, 0x97, 0xc5, 0x0e, 0xbb, 0xff, 0xd8, 0xc4, 0x3d, 0x4b, 0x66, 0xf3, 0x94, 0xd3, + 0x7b, 0xc4, 0x15, 0xa3, 0xb1, 0x10, 0xa9, 0x6f, 0x05, 0x56, 0xd8, 0x60, 0x75, 0x71, 0x2c, 0x44, + 0x4a, 0xef, 0x13, 0x4f, 0x8c, 0x92, 0x4c, 0x1f, 0x46, 0xbe, 0x1d, 0x58, 0x61, 0x9d, 0xb9, 0xe2, + 0x47, 0x88, 0x96, 0x89, 0x41, 0xdf, 0x77, 0x02, 0x2b, 0x74, 0x4c, 0x62, 0xd0, 0xa7, 0xfb, 0xa4, + 0x21, 0x46, 0xb9, 0x29, 0xa9, 0x05, 0x56, 0xb8, 0xc3, 0x3c, 0x71, 0x8e, 0x61, 0x95, 0x1a, 0xf4, + 0xfd, 0x7a, 0x60, 0x85, 0xb5, 0x22, 0x55, 0x56, 0x29, 0x53, 0xe5, 0x06, 0x56, 0xf8, 0x3e, 0xf3, + 0xc4, 0xd9, 0x8d, 0x2a, 0x65, 0xaa, 0xbc, 0xc0, 0x0a, 0x69, 0x91, 0x1a, 0xf4, 0xcd, 0x26, 0x2e, + 0x53, 0x11, 0x6b, 0xbf, 0x11, 0x58, 0xa1, 0xcd, 0x5c, 0xf1, 0x3d, 0x44, 0xa6, 0x66, 0x22, 0xf2, + 0x71, 0xca, 0xfd, 0x66, 0x60, 0x85, 0x16, 0xf3, 0xc4, 0x09, 0x86, 0x85, 0x9d, 0x96, 0x49, 0x36, + 0xf5, 0x49, 0x60, 0x85, 0x4d, 0xb0, 0xc3, 0xd0, 0xd8, 0x8d, 0x17, 0x9a, 0x2b, 0xbf, 0x15, 0x58, + 0xe1, 0x36, 0x73, 0xc5, 0x31, 0x44, 0xdd, 0x7f, 0x6d, 0xe2, 0x31, 0x3e, 0xe7, 0xb1, 0x56, 0x00, + 0x4a, 0x96, 0xa0, 0x1c, 0x00, 0x25, 0x4b, 0x50, 0x72, 0x09, 0xca, 0x01, 0x50, 0x72, 0x09, 0x4a, + 0x2e, 0x41, 0x39, 0x00, 0x4a, 0x2e, 0x41, 0xc9, 0x0a, 0x94, 0x03, 0xa0, 0x64, 0x05, 0x4a, 0x56, + 0xa0, 0x1c, 0x00, 0x25, 0x2b, 0x50, 0xb2, 0x02, 0xe5, 0x00, 0x28, 0x79, 0x76, 0xa3, 0x6a, 0x09, + 0xca, 0x01, 0x50, 0xb2, 0x02, 0x25, 0x97, 0xa0, 0x1c, 0x00, 0x25, 0x97, 0xa0, 0x64, 0x05, 0xca, + 0x01, 0x50, 0xb2, 0x02, 0x25, 0x2b, 0x50, 0x0e, 0x80, 0x92, 0x15, 0x28, 0xb9, 0x04, 0xe5, 0x00, + 0x28, 0x69, 0x40, 0xfd, 0x67, 0x13, 0xf7, 0x55, 0x32, 0x99, 0x72, 0x4d, 0x1f, 0x91, 0xfa, 0x85, + 0x48, 0x85, 0xc4, 0x7e, 0xda, 0x8d, 0xf6, 0x7a, 0xe6, 0x36, 0xf4, 0x4c, 0xba, 0xf7, 0x0c, 0x72, + 0xcc, 0x48, 0xe8, 0x63, 0xf0, 0x33, 0x6a, 0x80, 0xb7, 0x49, 0xed, 0x4a, 0xfc, 0x4b, 0x1f, 0x12, + 0x57, 0x61, 0xd7, 0xe2, 0x01, 0xb6, 0xa2, 0xdd, 0x52, 0x6d, 0x7a, 0x99, 0x15, 0x59, 0xfa, 0x85, + 0x01, 0x82, 0x4a, 0xd8, 0xe7, 0xba, 0x12, 0x00, 0x15, 0x52, 0x4f, 0x9a, 0x03, 0xf6, 0xf7, 0xd0, + 0xf3, 0xbd, 0x52, 0x59, 0x9c, 0x3b, 0x2b, 0xf3, 0xf4, 0x2b, 0xd2, 0x94, 0xa3, 0x52, 0x7c, 0x0f, + 0x6d, 0xd7, 0xc4, 0x0d, 0x59, 0xfc, 0xea, 0x7e, 0x46, 0xea, 0x66, 0xd3, 0x1e, 0x71, 0xd8, 0xf0, + 0xa4, 0xbd, 0x45, 0x9b, 0xa4, 0xfe, 0x03, 0x1b, 0x0e, 0x5f, 0xb4, 0x2d, 0xda, 0x20, 0xb5, 0xe3, + 0x9f, 0xcf, 0x87, 0x6d, 0xbb, 0xfb, 0xb7, 0x4d, 0x6a, 0xa7, 0xf1, 0x5c, 0xd1, 0x6f, 0x49, 0x6b, + 0x66, 0xda, 0x05, 0xd8, 0x63, 0x8f, 0xb5, 0xa2, 0x0f, 0x4b, 0x7f, 0x90, 0xf4, 0x4e, 0xb1, 0x7f, + 0xce, 0xb4, 0x1c, 0x66, 0x5a, 0x2e, 0x58, 0x73, 0x56, 0xc6, 0xf4, 0x88, 0xec, 0xcc, 0xb0, 0x37, + 0xcb, 0xaf, 0xb6, 0xb1, 0xfc, 0xa3, 0xdb, 0xe5, 0xd0, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x6b, 0x56, + 0xad, 0x74, 0xbe, 0x23, 0xbb, 0xb7, 0xfd, 0x69, 0x9b, 0x38, 0xbf, 0xf1, 0x05, 0x1e, 0xa3, 0xc3, + 0xe0, 0x27, 0xdd, 0x23, 0xf5, 0xdf, 0xe3, 0x34, 0xe7, 0xf8, 0x24, 0x34, 0x99, 0x09, 0x9e, 0xda, + 0xdf, 0x58, 0x9d, 0x17, 0xa4, 0xbd, 0x6a, 0x7f, 0xb3, 0xbe, 0x61, 0xea, 0x1f, 0xdc, 0xac, 0x5f, + 0x3f, 0x94, 0xca, 0xaf, 0xfb, 0x97, 0x45, 0xb6, 0x4f, 0xd5, 0xf4, 0x55, 0xa2, 0x5f, 0xff, 0x92, + 0x71, 0x71, 0x49, 0x3f, 0x20, 0x75, 0x9d, 0xe8, 0x94, 0xa3, 0x5d, 0xf3, 0xf9, 0x16, 0x33, 0x21, + 0xf5, 0x89, 0xab, 0xe2, 0x34, 0x96, 0x0b, 0xf4, 0x74, 0x9e, 0x6f, 0xb1, 0x22, 0xa6, 0x1d, 0xe2, + 0x3d, 0x13, 0x39, 0xec, 0x04, 0x1f, 0x2a, 0xa8, 0xf1, 0x2e, 0xcc, 0x02, 0xfd, 0x94, 0x6c, 0xbf, + 0x16, 0x33, 0x3e, 0x8a, 0x27, 0x13, 0xc9, 0x95, 0xc2, 0xf7, 0x0a, 0x04, 0x2d, 0x58, 0x3d, 0x32, + 0x8b, 0xc7, 0x1e, 0xa9, 0xe7, 0x59, 0x22, 0xb2, 0xee, 0x43, 0x52, 0x63, 0x3c, 0x4e, 0xab, 0xcf, + 0xb7, 0xf0, 0x65, 0x31, 0xc1, 0xa3, 0x46, 0x63, 0xd2, 0xbe, 0xbe, 0xbe, 0xbe, 0xb6, 0xbb, 0x57, + 0xf0, 0x1f, 0xe1, 0x4b, 0xde, 0xd2, 0x03, 0xd2, 0x4c, 0x66, 0xf1, 0x34, 0xc9, 0x60, 0x67, 0x46, + 0x5e, 0x2d, 0x54, 0x25, 0xd1, 0x09, 0xd9, 0x95, 0x3c, 0x4e, 0x47, 0xfc, 0xad, 0xe6, 0x99, 0x4a, + 0x44, 0x46, 0xb7, 0xab, 0x96, 0x8a, 0x53, 0xff, 0x8f, 0xdb, 0x3d, 0x59, 0xd8, 0xb3, 0x1d, 0x28, + 0x1a, 0x96, 0x35, 0xdd, 0xff, 0x6b, 0x84, 0xfc, 0x94, 0x89, 0xab, 0xec, 0xe5, 0x62, 0xce, 0x15, + 0x7d, 0x40, 0xec, 0x38, 0xf3, 0x77, 0xb1, 0x74, 0xaf, 0x67, 0x46, 0x41, 0xaf, 0x1c, 0x05, 0xbd, + 0xa3, 0x6c, 0xc1, 0xec, 0x38, 0xa3, 0x5f, 0x12, 0x67, 0x92, 0x9b, 0x5b, 0xda, 0x8a, 0xf6, 0xd7, + 0x64, 0x27, 0xc5, 0x40, 0x62, 0xa0, 0xa2, 0x9f, 0x13, 0x5b, 0x69, 0x7f, 0x1b, 0xb5, 0xf7, 0xd7, + 0xb4, 0x67, 0x38, 0x9c, 0x98, 0xad, 0xe0, 0xf6, 0xdb, 0x5a, 0x15, 0xe7, 0xdb, 0x59, 0x13, 0xbe, + 0x2c, 0xe7, 0x14, 0xb3, 0xb5, 0xa2, 0x3d, 0xe2, 0x4c, 0xc6, 0x29, 0x9e, 0x4e, 0x2b, 0x3a, 0x58, + 0xdf, 0x01, 0x3e, 0x47, 0xbf, 0x02, 0x64, 0x06, 0x42, 0xfa, 0x98, 0x38, 0x97, 0xa9, 0xc6, 0xc3, + 0x82, 0xab, 0xb1, 0xaa, 0xc7, 0x87, 0xad, 0x90, 0x5f, 0xa6, 0x1a, 0xe4, 0x49, 0x31, 0x70, 0xee, + 0x92, 0x63, 0xb3, 0x17, 0xf2, 0x64, 0xd0, 0x87, 0xdd, 0xe4, 0x83, 0x3e, 0x0e, 0xa1, 0xbb, 0x76, + 0x73, 0x7e, 0x53, 0x9f, 0x0f, 0xfa, 0x68, 0x7f, 0x18, 0xe1, 0x64, 0xda, 0x60, 0x7f, 0x18, 0x95, + 0xf6, 0x87, 0x11, 0xda, 0x1f, 0x46, 0x38, 0xae, 0x36, 0xd9, 0x2f, 0xf5, 0x39, 0xea, 0x6b, 0x38, + 0x6c, 0x9a, 0x1b, 0x50, 0xc2, 0x6d, 0x33, 0x72, 0xd4, 0x81, 0x3f, 0xbc, 0x1b, 0x64, 0x83, 0xbf, + 0x79, 0xc0, 0x0b, 0x7f, 0xa5, 0x25, 0xfd, 0x9a, 0xd4, 0xab, 0x89, 0x77, 0xd7, 0x07, 0xe0, 0xc3, + 0x6e, 0x0a, 0x8c, 0xf2, 0x69, 0x40, 0x6a, 0x59, 0x3c, 0xe3, 0x2b, 0x2d, 0xfa, 0x27, 0xbe, 0x05, + 0x98, 0x79, 0x17, 0x00, 0x00, 0xff, 0xff, 0xda, 0x8b, 0x4a, 0x7a, 0x0e, 0x09, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto index 0d2fc1fad..d1934a074 100644 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto +++ b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto @@ -54,16 +54,6 @@ message Simple { optional bytes o_bytes = 11; } -// Test message for holding special non-finites primitives. -message NonFinites { - optional float f_nan = 1; - optional float f_pinf = 2; - optional float f_ninf = 3; - optional double d_nan = 4; - optional double d_pinf = 5; - optional double d_ninf = 6; -} - // Test message for holding repeated primitives. message Repeats { repeated bool r_bool = 1; @@ -132,8 +122,6 @@ message KnownTypes { optional google.protobuf.Duration dur = 1; optional google.protobuf.Struct st = 12; optional google.protobuf.Timestamp ts = 2; - optional google.protobuf.ListValue lv = 15; - optional google.protobuf.Value val = 16; optional google.protobuf.DoubleValue dbl = 3; optional google.protobuf.FloatValue flt = 4; diff --git a/vendor/github.com/golang/protobuf/proto/decode_test.go b/vendor/github.com/golang/protobuf/proto/decode_test.go index 2c4c31d12..b1f130449 100644 --- a/vendor/github.com/golang/protobuf/proto/decode_test.go +++ b/vendor/github.com/golang/protobuf/proto/decode_test.go @@ -29,8 +29,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +build go1.7 - package proto_test import ( diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go index 2b30f8462..68b9b30cf 100644 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ b/vendor/github.com/golang/protobuf/proto/encode.go @@ -1075,17 +1075,10 @@ func (o *Buffer) enc_map(p *Properties, base structPointer) error { func (o *Buffer) enc_exts(p *Properties, base structPointer) error { exts := structPointer_Extensions(base, p.field) - - v, mu := exts.extensionsRead() - if v == nil { - return nil - } - - mu.Lock() - defer mu.Unlock() - if err := encodeExtensionsMap(v); err != nil { + if err := encodeExtensions(exts); err != nil { return err } + v, _ := exts.extensionsRead() return o.enc_map_body(v) } diff --git a/vendor/github.com/golang/protobuf/proto/encode_test.go b/vendor/github.com/golang/protobuf/proto/encode_test.go index a7209475f..0b36a0e9f 100644 --- a/vendor/github.com/golang/protobuf/proto/encode_test.go +++ b/vendor/github.com/golang/protobuf/proto/encode_test.go @@ -29,8 +29,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +build go1.7 - package proto_test import ( diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go index eaad21831..6b9b36374 100644 --- a/vendor/github.com/golang/protobuf/proto/extensions.go +++ b/vendor/github.com/golang/protobuf/proto/extensions.go @@ -154,7 +154,6 @@ type ExtensionDesc struct { Field int32 // field number Name string // fully-qualified name of extension, for text formatting Tag string // protobuf tag style - Filename string // name of the file in which the extension is defined } func (ed *ExtensionDesc) repeated() bool { diff --git a/vendor/github.com/golang/protobuf/proto/extensions_test.go b/vendor/github.com/golang/protobuf/proto/extensions_test.go index b6d9114c5..403d7c65e 100644 --- a/vendor/github.com/golang/protobuf/proto/extensions_test.go +++ b/vendor/github.com/golang/protobuf/proto/extensions_test.go @@ -40,7 +40,6 @@ import ( "github.com/golang/protobuf/proto" pb "github.com/golang/protobuf/proto/testdata" - "golang.org/x/sync/errgroup" ) func TestGetExtensionsWithMissingExtensions(t *testing.T) { @@ -507,30 +506,3 @@ func TestClearAllExtensions(t *testing.T) { t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m)) } } - -func TestMarshalRace(t *testing.T) { - // unregistered extension - desc := &proto.ExtensionDesc{ - ExtendedType: (*pb.MyMessage)(nil), - ExtensionType: (*bool)(nil), - Field: 101010100, - Name: "emptyextension", - Tag: "varint,0,opt", - } - - m := &pb.MyMessage{Count: proto.Int32(4)} - if err := proto.SetExtension(m, desc, proto.Bool(true)); err != nil { - t.Errorf("proto.SetExtension(m, desc, true): got error %q, want nil", err) - } - - var g errgroup.Group - for n := 3; n > 0; n-- { - g.Go(func() error { - _, err := proto.Marshal(m) - return err - }) - } - if err := g.Wait(); err != nil { - t.Fatal(err) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index 1c225504a..ac4ddbc07 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -73,6 +73,7 @@ for a protocol buffer variable v: When the .proto file specifies `syntax="proto3"`, there are some differences: - Non-repeated fields of non-message type are values instead of pointers. + - Getters are only generated for message and oneof fields. - Enum types do not get an Enum method. The simplest way to describe this is to see an example. diff --git a/vendor/github.com/golang/protobuf/proto/map_test.go b/vendor/github.com/golang/protobuf/proto/map_test.go deleted file mode 100644 index 313e87924..000000000 --- a/vendor/github.com/golang/protobuf/proto/map_test.go +++ /dev/null @@ -1,46 +0,0 @@ -package proto_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/proto" - ppb "github.com/golang/protobuf/proto/proto3_proto" -) - -func marshalled() []byte { - m := &ppb.IntMaps{} - for i := 0; i < 1000; i++ { - m.Maps = append(m.Maps, &ppb.IntMap{ - Rtt: map[int32]int32{1: 2}, - }) - } - b, err := proto.Marshal(m) - if err != nil { - panic(fmt.Sprintf("Can't marshal %+v: %v", m, err)) - } - return b -} - -func BenchmarkConcurrentMapUnmarshal(b *testing.B) { - in := marshalled() - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - var out ppb.IntMaps - if err := proto.Unmarshal(in, &out); err != nil { - b.Errorf("Can't unmarshal ppb.IntMaps: %v", err) - } - } - }) -} - -func BenchmarkSequentialMapUnmarshal(b *testing.B) { - in := marshalled() - b.ResetTimer() - for i := 0; i < b.N; i++ { - var out ppb.IntMaps - if err := proto.Unmarshal(in, &out); err != nil { - b.Errorf("Can't unmarshal ppb.IntMaps: %v", err) - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go index cc4d0489f..19383efc5 100644 --- a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go +++ b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go @@ -12,8 +12,6 @@ It has these top-level messages: Message Nested MessageWithMap - IntMap - IntMaps */ package proto3_proto @@ -30,9 +28,7 @@ var _ = math.Inf // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion1 type Message_Humour int32 @@ -69,10 +65,10 @@ type Message struct { ResultCount int64 `protobuf:"varint,7,opt,name=result_count,json=resultCount" json:"result_count,omitempty"` TrueScotsman bool `protobuf:"varint,8,opt,name=true_scotsman,json=trueScotsman" json:"true_scotsman,omitempty"` Score float32 `protobuf:"fixed32,9,opt,name=score" json:"score,omitempty"` - Key []uint64 `protobuf:"varint,5,rep,packed,name=key" json:"key,omitempty"` - ShortKey []int32 `protobuf:"varint,19,rep,packed,name=short_key,json=shortKey" json:"short_key,omitempty"` + Key []uint64 `protobuf:"varint,5,rep,name=key" json:"key,omitempty"` + ShortKey []int32 `protobuf:"varint,19,rep,name=short_key,json=shortKey" json:"short_key,omitempty"` Nested *Nested `protobuf:"bytes,6,opt,name=nested" json:"nested,omitempty"` - RFunny []Message_Humour `protobuf:"varint,16,rep,packed,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"` + RFunny []Message_Humour `protobuf:"varint,16,rep,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"` Terrain map[string]*Nested `protobuf:"bytes,10,rep,name=terrain" json:"terrain,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Proto2Field *testdata.SubDefaults `protobuf:"bytes,11,opt,name=proto2_field,json=proto2Field" json:"proto2_field,omitempty"` Proto2Value map[string]*testdata.SubDefaults `protobuf:"bytes,13,rep,name=proto2_value,json=proto2Value" json:"proto2_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -87,69 +83,6 @@ func (m *Message) String() string { return proto.CompactTextString(m) func (*Message) ProtoMessage() {} func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (m *Message) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Message) GetHilarity() Message_Humour { - if m != nil { - return m.Hilarity - } - return Message_UNKNOWN -} - -func (m *Message) GetHeightInCm() uint32 { - if m != nil { - return m.HeightInCm - } - return 0 -} - -func (m *Message) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func (m *Message) GetResultCount() int64 { - if m != nil { - return m.ResultCount - } - return 0 -} - -func (m *Message) GetTrueScotsman() bool { - if m != nil { - return m.TrueScotsman - } - return false -} - -func (m *Message) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *Message) GetKey() []uint64 { - if m != nil { - return m.Key - } - return nil -} - -func (m *Message) GetShortKey() []int32 { - if m != nil { - return m.ShortKey - } - return nil -} - func (m *Message) GetNested() *Nested { if m != nil { return m.Nested @@ -157,13 +90,6 @@ func (m *Message) GetNested() *Nested { return nil } -func (m *Message) GetRFunny() []Message_Humour { - if m != nil { - return m.RFunny - } - return nil -} - func (m *Message) GetTerrain() map[string]*Nested { if m != nil { return m.Terrain @@ -223,20 +149,6 @@ func (m *Nested) String() string { return proto.CompactTextString(m) func (*Nested) ProtoMessage() {} func (*Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } -func (m *Nested) GetBunny() string { - if m != nil { - return m.Bunny - } - return "" -} - -func (m *Nested) GetCute() bool { - if m != nil { - return m.Cute - } - return false -} - type MessageWithMap struct { ByteMapping map[bool][]byte `protobuf:"bytes,1,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"` } @@ -253,95 +165,55 @@ func (m *MessageWithMap) GetByteMapping() map[bool][]byte { return nil } -type IntMap struct { - Rtt map[int32]int32 `protobuf:"bytes,1,rep,name=rtt" json:"rtt,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *IntMap) Reset() { *m = IntMap{} } -func (m *IntMap) String() string { return proto.CompactTextString(m) } -func (*IntMap) ProtoMessage() {} -func (*IntMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *IntMap) GetRtt() map[int32]int32 { - if m != nil { - return m.Rtt - } - return nil -} - -type IntMaps struct { - Maps []*IntMap `protobuf:"bytes,1,rep,name=maps" json:"maps,omitempty"` -} - -func (m *IntMaps) Reset() { *m = IntMaps{} } -func (m *IntMaps) String() string { return proto.CompactTextString(m) } -func (*IntMaps) ProtoMessage() {} -func (*IntMaps) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *IntMaps) GetMaps() []*IntMap { - if m != nil { - return m.Maps - } - return nil -} - func init() { proto.RegisterType((*Message)(nil), "proto3_proto.Message") proto.RegisterType((*Nested)(nil), "proto3_proto.Nested") proto.RegisterType((*MessageWithMap)(nil), "proto3_proto.MessageWithMap") - proto.RegisterType((*IntMap)(nil), "proto3_proto.IntMap") - proto.RegisterType((*IntMaps)(nil), "proto3_proto.IntMaps") proto.RegisterEnum("proto3_proto.Message_Humour", Message_Humour_name, Message_Humour_value) } -func init() { proto.RegisterFile("proto3_proto/proto3.proto", fileDescriptor0) } - var fileDescriptor0 = []byte{ - // 733 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x6d, 0x6f, 0xf3, 0x34, - 0x14, 0x25, 0x4d, 0x5f, 0xd2, 0x9b, 0x74, 0x0b, 0x5e, 0x91, 0xbc, 0x02, 0x52, 0x28, 0x12, 0x8a, - 0x78, 0x49, 0xa1, 0xd3, 0xd0, 0x84, 0x10, 0x68, 0x1b, 0x9b, 0xa8, 0xd6, 0x95, 0xca, 0xdd, 0x98, - 0xf8, 0x14, 0xa5, 0xad, 0xdb, 0x46, 0x34, 0x4e, 0x49, 0x1c, 0xa4, 0xfc, 0x1d, 0xfe, 0x28, 0x8f, - 0x6c, 0xa7, 0x5d, 0x36, 0x65, 0xcf, 0xf3, 0x29, 0xf6, 0xf1, 0xb9, 0xf7, 0x9c, 0x1c, 0x5f, 0xc3, - 0xe9, 0x2e, 0x89, 0x79, 0x7c, 0xe6, 0xcb, 0xcf, 0x40, 0x6d, 0x3c, 0xf9, 0x41, 0x56, 0xf9, 0xa8, - 0x77, 0xba, 0x8e, 0xe3, 0xf5, 0x96, 0x2a, 0xca, 0x3c, 0x5b, 0x0d, 0x02, 0x96, 0x2b, 0x62, 0xef, - 0x84, 0xd3, 0x94, 0x2f, 0x03, 0x1e, 0x0c, 0xc4, 0x42, 0x81, 0xfd, 0xff, 0x5b, 0xd0, 0xba, 0xa7, - 0x69, 0x1a, 0xac, 0x29, 0x42, 0x50, 0x67, 0x41, 0x44, 0xb1, 0xe6, 0x68, 0x6e, 0x9b, 0xc8, 0x35, - 0xba, 0x00, 0x63, 0x13, 0x6e, 0x83, 0x24, 0xe4, 0x39, 0xae, 0x39, 0x9a, 0x7b, 0x34, 0xfc, 0xcc, - 0x2b, 0x0b, 0x7a, 0x45, 0xb1, 0xf7, 0x7b, 0x16, 0xc5, 0x59, 0x42, 0x0e, 0x6c, 0xe4, 0x80, 0xb5, - 0xa1, 0xe1, 0x7a, 0xc3, 0xfd, 0x90, 0xf9, 0x8b, 0x08, 0xeb, 0x8e, 0xe6, 0x76, 0x08, 0x28, 0x6c, - 0xc4, 0xae, 0x23, 0xa1, 0x27, 0xec, 0xe0, 0xba, 0xa3, 0xb9, 0x16, 0x91, 0x6b, 0xf4, 0x05, 0x58, - 0x09, 0x4d, 0xb3, 0x2d, 0xf7, 0x17, 0x71, 0xc6, 0x38, 0x6e, 0x39, 0x9a, 0xab, 0x13, 0x53, 0x61, - 0xd7, 0x02, 0x42, 0x5f, 0x42, 0x87, 0x27, 0x19, 0xf5, 0xd3, 0x45, 0xcc, 0xd3, 0x28, 0x60, 0xd8, - 0x70, 0x34, 0xd7, 0x20, 0x96, 0x00, 0x67, 0x05, 0x86, 0xba, 0xd0, 0x48, 0x17, 0x71, 0x42, 0x71, - 0xdb, 0xd1, 0xdc, 0x1a, 0x51, 0x1b, 0x64, 0x83, 0xfe, 0x37, 0xcd, 0x71, 0xc3, 0xd1, 0xdd, 0x3a, - 0x11, 0x4b, 0xf4, 0x29, 0xb4, 0xd3, 0x4d, 0x9c, 0x70, 0x5f, 0xe0, 0x27, 0x8e, 0xee, 0x36, 0x88, - 0x21, 0x81, 0x3b, 0x9a, 0xa3, 0x6f, 0xa1, 0xc9, 0x68, 0xca, 0xe9, 0x12, 0x37, 0x1d, 0xcd, 0x35, - 0x87, 0xdd, 0x97, 0xbf, 0x3e, 0x91, 0x67, 0xa4, 0xe0, 0xa0, 0x73, 0x68, 0x25, 0xfe, 0x2a, 0x63, - 0x2c, 0xc7, 0xb6, 0xa3, 0x7f, 0x30, 0xa9, 0x66, 0x72, 0x2b, 0xb8, 0xe8, 0x67, 0x68, 0x71, 0x9a, - 0x24, 0x41, 0xc8, 0x30, 0x38, 0xba, 0x6b, 0x0e, 0xfb, 0xd5, 0x65, 0x0f, 0x8a, 0x74, 0xc3, 0x78, - 0x92, 0x93, 0x7d, 0x09, 0xba, 0x00, 0x75, 0xff, 0x43, 0x7f, 0x15, 0xd2, 0xed, 0x12, 0x9b, 0xd2, - 0xe8, 0x27, 0xde, 0xfe, 0xae, 0xbd, 0x59, 0x36, 0xff, 0x8d, 0xae, 0x82, 0x6c, 0xcb, 0x53, 0x62, - 0x2a, 0xea, 0xad, 0x60, 0xa2, 0xd1, 0xa1, 0xf2, 0xdf, 0x60, 0x9b, 0x51, 0xdc, 0x91, 0xe2, 0x5f, - 0x55, 0x8b, 0x4f, 0x25, 0xf3, 0x4f, 0x41, 0x54, 0x06, 0x8a, 0x56, 0x12, 0x41, 0xdf, 0x83, 0x11, - 0xb0, 0x9c, 0x6f, 0x42, 0xb6, 0xc6, 0x47, 0x45, 0x52, 0x6a, 0x0e, 0xbd, 0xfd, 0x1c, 0x7a, 0x97, - 0x2c, 0x27, 0x07, 0x16, 0x3a, 0x07, 0x33, 0x0a, 0x58, 0xee, 0xcb, 0x5d, 0x8a, 0x8f, 0xa5, 0x76, - 0x75, 0x11, 0x08, 0xe2, 0x83, 0xe4, 0xa1, 0x73, 0x80, 0x34, 0x9b, 0x47, 0xca, 0x14, 0xfe, 0xb8, - 0xf8, 0xd7, 0x2a, 0xc7, 0xa4, 0x44, 0x44, 0x3f, 0x80, 0xb1, 0xd8, 0x84, 0xdb, 0x65, 0x42, 0x19, - 0x46, 0x52, 0xea, 0x8d, 0xa2, 0x03, 0xad, 0x37, 0x05, 0xab, 0x1c, 0xf8, 0x7e, 0x72, 0xd4, 0xd3, - 0x90, 0x93, 0xf3, 0x35, 0x34, 0x54, 0x70, 0xb5, 0xf7, 0xcc, 0x86, 0xa2, 0xfc, 0x54, 0xbb, 0xd0, - 0x7a, 0x8f, 0x60, 0xbf, 0x4e, 0xb1, 0xa2, 0xeb, 0x37, 0x2f, 0xbb, 0xbe, 0x71, 0x91, 0xcf, 0x6d, - 0xfb, 0xbf, 0x42, 0x53, 0x0d, 0x14, 0x32, 0xa1, 0xf5, 0x38, 0xb9, 0x9b, 0xfc, 0xf1, 0x34, 0xb1, - 0x3f, 0x42, 0x06, 0xd4, 0xa7, 0x8f, 0x93, 0x99, 0xad, 0xa1, 0x0e, 0xb4, 0x67, 0xe3, 0xcb, 0xe9, - 0xec, 0x61, 0x74, 0x7d, 0x67, 0xd7, 0xd0, 0x31, 0x98, 0x57, 0xa3, 0xf1, 0xd8, 0xbf, 0xba, 0x1c, - 0x8d, 0x6f, 0xfe, 0xb2, 0xf5, 0xfe, 0x10, 0x9a, 0xca, 0xac, 0x78, 0x33, 0x73, 0x39, 0xbe, 0xca, - 0x8f, 0xda, 0x88, 0x57, 0xba, 0xc8, 0xb8, 0x32, 0x64, 0x10, 0xb9, 0xee, 0xff, 0xa7, 0xc1, 0x51, - 0x91, 0xd9, 0x53, 0xc8, 0x37, 0xf7, 0xc1, 0x0e, 0x4d, 0xc1, 0x9a, 0xe7, 0x9c, 0xfa, 0x51, 0xb0, - 0xdb, 0x89, 0x39, 0xd0, 0x64, 0xce, 0xdf, 0x55, 0xe6, 0x5c, 0xd4, 0x78, 0x57, 0x39, 0xa7, 0xf7, - 0x8a, 0x5f, 0x4c, 0xd5, 0xfc, 0x19, 0xe9, 0xfd, 0x02, 0xf6, 0x6b, 0x42, 0x39, 0x30, 0x43, 0x05, - 0xd6, 0x2d, 0x07, 0x66, 0x95, 0x93, 0xf9, 0x07, 0x9a, 0x23, 0xc6, 0x85, 0xb7, 0x01, 0xe8, 0x09, - 0xe7, 0x85, 0xa5, 0xcf, 0x5f, 0x5a, 0x52, 0x14, 0x8f, 0x70, 0xae, 0x2c, 0x08, 0x66, 0xef, 0x47, - 0x30, 0xf6, 0x40, 0x59, 0xb2, 0x51, 0x21, 0xd9, 0x28, 0x4b, 0x9e, 0x41, 0x4b, 0xf5, 0x4b, 0x91, - 0x0b, 0xf5, 0x28, 0xd8, 0xa5, 0x85, 0x68, 0xb7, 0x4a, 0x94, 0x48, 0xc6, 0xbc, 0xa9, 0x8e, 0xde, - 0x05, 0x00, 0x00, 0xff, 0xff, 0x75, 0x38, 0xad, 0x84, 0xe4, 0x05, 0x00, 0x00, + // 669 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x6d, 0x6f, 0xd3, 0x3a, + 0x18, 0xbd, 0x7d, 0x4f, 0x9f, 0xa4, 0x5b, 0xae, 0xb7, 0x2b, 0x79, 0xbd, 0x7c, 0x18, 0x45, 0x42, + 0x13, 0x2f, 0x19, 0x14, 0x21, 0x4d, 0x08, 0x81, 0xb6, 0xb1, 0x89, 0x6a, 0x5d, 0xa9, 0xdc, 0x8d, + 0x89, 0x4f, 0x51, 0xd2, 0xba, 0x6d, 0x44, 0xe3, 0x54, 0x89, 0x83, 0x94, 0xbf, 0xc3, 0x1f, 0x05, + 0xbf, 0xa4, 0x5d, 0x36, 0x75, 0xf0, 0x29, 0xf6, 0x79, 0xce, 0xf1, 0xf3, 0xe4, 0xf8, 0x18, 0xf6, + 0x96, 0x71, 0xc4, 0xa3, 0x37, 0xae, 0xfa, 0x1c, 0xea, 0x8d, 0xa3, 0x3e, 0xc8, 0x2a, 0x96, 0xda, + 0x7b, 0xb3, 0x28, 0x9a, 0x2d, 0xa8, 0xa6, 0xf8, 0xe9, 0xf4, 0xd0, 0x63, 0x99, 0x26, 0xb6, 0x77, + 0x38, 0x4d, 0xf8, 0xc4, 0xe3, 0xde, 0xa1, 0x5c, 0x68, 0xb0, 0xf3, 0xab, 0x01, 0x8d, 0x4b, 0x9a, + 0x24, 0xde, 0x8c, 0x22, 0x04, 0x55, 0xe6, 0x85, 0x14, 0x97, 0xf6, 0x4b, 0x07, 0x4d, 0xa2, 0xd6, + 0xe8, 0x08, 0x8c, 0x79, 0xb0, 0xf0, 0xe2, 0x80, 0x67, 0xb8, 0x2c, 0xf0, 0xad, 0xee, 0x23, 0xa7, + 0xd8, 0xd0, 0xc9, 0xc5, 0xce, 0xe7, 0x34, 0x8c, 0xd2, 0x98, 0xac, 0xd9, 0x68, 0x1f, 0xac, 0x39, + 0x0d, 0x66, 0x73, 0xee, 0x06, 0xcc, 0x1d, 0x87, 0xb8, 0x22, 0xd4, 0x2d, 0x02, 0x1a, 0xeb, 0xb1, + 0xd3, 0x50, 0xf6, 0x93, 0xe3, 0xe0, 0xaa, 0xa8, 0x58, 0x44, 0xad, 0xd1, 0x63, 0xb0, 0x62, 0x9a, + 0xa4, 0x0b, 0xee, 0x8e, 0xa3, 0x94, 0x71, 0xdc, 0x10, 0xb5, 0x0a, 0x31, 0x35, 0x76, 0x2a, 0x21, + 0xf4, 0x04, 0x5a, 0x3c, 0x4e, 0xa9, 0x9b, 0x8c, 0x23, 0x9e, 0x84, 0x1e, 0xc3, 0x86, 0xe0, 0x18, + 0xc4, 0x92, 0xe0, 0x28, 0xc7, 0xd0, 0x2e, 0xd4, 0x44, 0x3d, 0xa6, 0xb8, 0x29, 0x8a, 0x65, 0xa2, + 0x37, 0xc8, 0x86, 0xca, 0x77, 0x9a, 0xe1, 0xda, 0x7e, 0xe5, 0xa0, 0x4a, 0xe4, 0x12, 0xfd, 0x0f, + 0xcd, 0x64, 0x1e, 0xc5, 0xdc, 0x95, 0xf8, 0x8e, 0xc0, 0x6b, 0xc4, 0x50, 0xc0, 0x85, 0x28, 0xbe, + 0x80, 0x3a, 0x13, 0x56, 0xd1, 0x09, 0xae, 0x8b, 0x53, 0xcc, 0xee, 0xee, 0xdd, 0x5f, 0x1f, 0xa8, + 0x1a, 0xc9, 0x39, 0xe8, 0x2d, 0x34, 0x62, 0x77, 0x9a, 0x32, 0x96, 0x61, 0x5b, 0x1c, 0xf4, 0x37, + 0xa7, 0xea, 0xf1, 0xb9, 0xe4, 0xa2, 0xf7, 0xd0, 0xe0, 0x34, 0x8e, 0xbd, 0x80, 0x61, 0x10, 0x32, + 0xb3, 0xdb, 0xd9, 0x2c, 0xbb, 0xd2, 0xa4, 0x33, 0xc6, 0xe3, 0x8c, 0xac, 0x24, 0xe2, 0x7e, 0xf4, + 0xfd, 0x77, 0xdd, 0x69, 0x40, 0x17, 0x13, 0x6c, 0xaa, 0x41, 0xff, 0x73, 0x56, 0x77, 0xed, 0x8c, + 0x52, 0xff, 0x13, 0x9d, 0x7a, 0xc2, 0xbd, 0x84, 0x98, 0x9a, 0x7a, 0x2e, 0x99, 0xa8, 0xb7, 0x56, + 0xfe, 0xf0, 0x16, 0x29, 0xc5, 0x2d, 0xd5, 0xfc, 0xe9, 0xe6, 0xe6, 0x43, 0xc5, 0xfc, 0x2a, 0x89, + 0x7a, 0x80, 0xfc, 0x28, 0x85, 0xa0, 0x57, 0x60, 0x88, 0x98, 0xf1, 0x79, 0xc0, 0x66, 0x78, 0x2b, + 0x77, 0x4a, 0xe7, 0xd0, 0x59, 0xe5, 0xd0, 0x39, 0x66, 0x19, 0x59, 0xb3, 0x84, 0x57, 0xa6, 0xb8, + 0xa5, 0xcc, 0x55, 0xbb, 0x04, 0x6f, 0xab, 0xde, 0x9b, 0x45, 0x20, 0x89, 0x57, 0x8a, 0x27, 0x64, + 0x90, 0xa4, 0x7e, 0xa8, 0x87, 0xc2, 0xff, 0xe6, 0xff, 0xba, 0x69, 0x62, 0x52, 0x20, 0xa2, 0xd7, + 0x60, 0x8c, 0x45, 0x2e, 0x27, 0x31, 0x65, 0x18, 0xa9, 0x56, 0x0f, 0x88, 0xd6, 0xb4, 0xf6, 0x10, + 0xac, 0xa2, 0xe1, 0xab, 0xe4, 0xe8, 0xa7, 0xa1, 0x92, 0xf3, 0x0c, 0x6a, 0xda, 0xb8, 0xf2, 0x1f, + 0xb2, 0xa1, 0x29, 0xef, 0xca, 0x47, 0xa5, 0xf6, 0x35, 0xd8, 0xf7, 0x5d, 0xdc, 0x70, 0xea, 0xf3, + 0xbb, 0xa7, 0x3e, 0x70, 0x91, 0xb7, 0xc7, 0x76, 0x3e, 0x42, 0x5d, 0x07, 0x0a, 0x99, 0xd0, 0xb8, + 0x1e, 0x5c, 0x0c, 0xbe, 0xdc, 0x0c, 0xec, 0x7f, 0x90, 0x01, 0xd5, 0xe1, 0xf5, 0x60, 0x64, 0x97, + 0x50, 0x0b, 0x9a, 0xa3, 0xfe, 0xf1, 0x70, 0x74, 0xd5, 0x3b, 0xbd, 0xb0, 0xcb, 0x68, 0x1b, 0xcc, + 0x93, 0x5e, 0xbf, 0xef, 0x9e, 0x1c, 0xf7, 0xfa, 0x67, 0xdf, 0xec, 0x4a, 0xa7, 0x0b, 0x75, 0x3d, + 0xac, 0x7c, 0x33, 0xbe, 0x8a, 0xaf, 0x9e, 0x47, 0x6f, 0xe4, 0x2b, 0x1d, 0xa7, 0x5c, 0x0f, 0x64, + 0x10, 0xb5, 0xee, 0xfc, 0x2c, 0xc1, 0x56, 0xee, 0xd9, 0x4d, 0xc0, 0xe7, 0x97, 0xde, 0x12, 0x09, + 0xc3, 0xfc, 0x8c, 0x53, 0x37, 0xf4, 0x96, 0x4b, 0x99, 0x83, 0x92, 0xf2, 0xf9, 0xe5, 0x46, 0x9f, + 0x73, 0x8d, 0x73, 0x22, 0x04, 0x97, 0x9a, 0x9f, 0xa7, 0xca, 0xbf, 0x45, 0xda, 0x1f, 0xc0, 0xbe, + 0x4f, 0x28, 0x1a, 0x66, 0x68, 0xc3, 0x76, 0x8b, 0x86, 0x59, 0x05, 0x67, 0xfc, 0xba, 0x6e, 0xfd, + 0x3b, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x40, 0x3c, 0xbe, 0x3c, 0x05, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto index 204865571..75d5a0259 100644 --- a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto +++ b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto @@ -76,12 +76,3 @@ message Nested { message MessageWithMap { map byte_mapping = 1; } - - -message IntMap { - map rtt = 1; -} - -message IntMaps { - repeated IntMap maps = 1; -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_test.go b/vendor/github.com/golang/protobuf/proto/proto3_test.go index 735837f2d..462f8055c 100644 --- a/vendor/github.com/golang/protobuf/proto/proto3_test.go +++ b/vendor/github.com/golang/protobuf/proto/proto3_test.go @@ -93,16 +93,6 @@ func TestRoundTripProto3(t *testing.T) { } } -func TestGettersForBasicTypesExist(t *testing.T) { - var m pb.Message - if got := m.GetNested().GetBunny(); got != "" { - t.Errorf("m.GetNested().GetBunny() = %q, want empty string", got) - } - if got := m.GetNested().GetCute(); got { - t.Errorf("m.GetNested().GetCute() = %t, want false", got) - } -} - func TestProto3SetDefaults(t *testing.T) { in := &pb.Message{ Terrain: map[string]*pb.Nested{ diff --git a/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go b/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go index e980d1a03..85b3bdf5f 100644 --- a/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go +++ b/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: test.proto +// DO NOT EDIT! /* Package testdata is a generated protocol buffer package. @@ -322,8 +323,8 @@ func (m *GoEnum) GetFoo() FOO { } type GoTestField struct { - Label *string `protobuf:"bytes,1,req,name=Label" json:"Label,omitempty"` - Type *string `protobuf:"bytes,2,req,name=Type" json:"Type,omitempty"` + Label *string `protobuf:"bytes,1,req,name=Label,json=label" json:"Label,omitempty"` + Type *string `protobuf:"bytes,2,req,name=Type,json=type" json:"Type,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -348,81 +349,81 @@ func (m *GoTestField) GetType() string { type GoTest struct { // Some typical parameters - Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"` - Table *string `protobuf:"bytes,2,opt,name=Table" json:"Table,omitempty"` - Param *int32 `protobuf:"varint,3,opt,name=Param" json:"Param,omitempty"` + Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,json=kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"` + Table *string `protobuf:"bytes,2,opt,name=Table,json=table" json:"Table,omitempty"` + Param *int32 `protobuf:"varint,3,opt,name=Param,json=param" json:"Param,omitempty"` // Required, repeated and optional foreign fields. - RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField" json:"RequiredField,omitempty"` - RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField" json:"RepeatedField,omitempty"` - OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField" json:"OptionalField,omitempty"` + RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` + RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField,json=repeatedField" json:"RepeatedField,omitempty"` + OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField,json=optionalField" json:"OptionalField,omitempty"` // Required fields of all basic types - F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=FBoolRequired" json:"F_Bool_required,omitempty"` - F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=FInt32Required" json:"F_Int32_required,omitempty"` - F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=FInt64Required" json:"F_Int64_required,omitempty"` - F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=FFixed32Required" json:"F_Fixed32_required,omitempty"` - F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=FFixed64Required" json:"F_Fixed64_required,omitempty"` - F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=FUint32Required" json:"F_Uint32_required,omitempty"` - F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=FUint64Required" json:"F_Uint64_required,omitempty"` - F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=FFloatRequired" json:"F_Float_required,omitempty"` - F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=FDoubleRequired" json:"F_Double_required,omitempty"` - F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=FStringRequired" json:"F_String_required,omitempty"` - F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=FBytesRequired" json:"F_Bytes_required,omitempty"` - F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=FSint32Required" json:"F_Sint32_required,omitempty"` - F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=FSint64Required" json:"F_Sint64_required,omitempty"` + F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=fBoolRequired" json:"F_Bool_required,omitempty"` + F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=fInt32Required" json:"F_Int32_required,omitempty"` + F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=fInt64Required" json:"F_Int64_required,omitempty"` + F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=fFixed32Required" json:"F_Fixed32_required,omitempty"` + F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=fFixed64Required" json:"F_Fixed64_required,omitempty"` + F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=fUint32Required" json:"F_Uint32_required,omitempty"` + F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=fUint64Required" json:"F_Uint64_required,omitempty"` + F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=fFloatRequired" json:"F_Float_required,omitempty"` + F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=fDoubleRequired" json:"F_Double_required,omitempty"` + F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=fStringRequired" json:"F_String_required,omitempty"` + F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=fBytesRequired" json:"F_Bytes_required,omitempty"` + F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=fSint32Required" json:"F_Sint32_required,omitempty"` + F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=fSint64Required" json:"F_Sint64_required,omitempty"` // Repeated fields of all basic types - F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=FBoolRepeated" json:"F_Bool_repeated,omitempty"` - F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=FInt32Repeated" json:"F_Int32_repeated,omitempty"` - F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=FInt64Repeated" json:"F_Int64_repeated,omitempty"` - F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=FFixed32Repeated" json:"F_Fixed32_repeated,omitempty"` - F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=FFixed64Repeated" json:"F_Fixed64_repeated,omitempty"` - F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=FUint32Repeated" json:"F_Uint32_repeated,omitempty"` - F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=FUint64Repeated" json:"F_Uint64_repeated,omitempty"` - F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=FFloatRepeated" json:"F_Float_repeated,omitempty"` - F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=FDoubleRepeated" json:"F_Double_repeated,omitempty"` - F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=FStringRepeated" json:"F_String_repeated,omitempty"` - F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=FBytesRepeated" json:"F_Bytes_repeated,omitempty"` - F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=FSint32Repeated" json:"F_Sint32_repeated,omitempty"` - F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=FSint64Repeated" json:"F_Sint64_repeated,omitempty"` + F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=fBoolRepeated" json:"F_Bool_repeated,omitempty"` + F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=fInt32Repeated" json:"F_Int32_repeated,omitempty"` + F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=fInt64Repeated" json:"F_Int64_repeated,omitempty"` + F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=fFixed32Repeated" json:"F_Fixed32_repeated,omitempty"` + F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=fFixed64Repeated" json:"F_Fixed64_repeated,omitempty"` + F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=fUint32Repeated" json:"F_Uint32_repeated,omitempty"` + F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=fUint64Repeated" json:"F_Uint64_repeated,omitempty"` + F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=fFloatRepeated" json:"F_Float_repeated,omitempty"` + F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=fDoubleRepeated" json:"F_Double_repeated,omitempty"` + F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=fStringRepeated" json:"F_String_repeated,omitempty"` + F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=fBytesRepeated" json:"F_Bytes_repeated,omitempty"` + F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=fSint32Repeated" json:"F_Sint32_repeated,omitempty"` + F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=fSint64Repeated" json:"F_Sint64_repeated,omitempty"` // Optional fields of all basic types - F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=FBoolOptional" json:"F_Bool_optional,omitempty"` - F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=FInt32Optional" json:"F_Int32_optional,omitempty"` - F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=FInt64Optional" json:"F_Int64_optional,omitempty"` - F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=FFixed32Optional" json:"F_Fixed32_optional,omitempty"` - F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=FFixed64Optional" json:"F_Fixed64_optional,omitempty"` - F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=FUint32Optional" json:"F_Uint32_optional,omitempty"` - F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=FUint64Optional" json:"F_Uint64_optional,omitempty"` - F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=FFloatOptional" json:"F_Float_optional,omitempty"` - F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=FDoubleOptional" json:"F_Double_optional,omitempty"` - F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=FStringOptional" json:"F_String_optional,omitempty"` - F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=FBytesOptional" json:"F_Bytes_optional,omitempty"` - F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=FSint32Optional" json:"F_Sint32_optional,omitempty"` - F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=FSint64Optional" json:"F_Sint64_optional,omitempty"` + F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=fBoolOptional" json:"F_Bool_optional,omitempty"` + F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=fInt32Optional" json:"F_Int32_optional,omitempty"` + F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=fInt64Optional" json:"F_Int64_optional,omitempty"` + F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=fFixed32Optional" json:"F_Fixed32_optional,omitempty"` + F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=fFixed64Optional" json:"F_Fixed64_optional,omitempty"` + F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=fUint32Optional" json:"F_Uint32_optional,omitempty"` + F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=fUint64Optional" json:"F_Uint64_optional,omitempty"` + F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=fFloatOptional" json:"F_Float_optional,omitempty"` + F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=fDoubleOptional" json:"F_Double_optional,omitempty"` + F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=fStringOptional" json:"F_String_optional,omitempty"` + F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=fBytesOptional" json:"F_Bytes_optional,omitempty"` + F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=fSint32Optional" json:"F_Sint32_optional,omitempty"` + F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=fSint64Optional" json:"F_Sint64_optional,omitempty"` // Default-valued fields of all basic types - F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=FBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"` - F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=FInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"` - F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=FInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"` - F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=FFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"` - F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=FFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"` - F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=FUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"` - F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=FUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"` - F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=FFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"` - F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=FDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"` - F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=FStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"` - F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=FBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"` - F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=FSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"` - F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=FSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"` + F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=fBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"` + F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=fInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"` + F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=fInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"` + F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=fFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"` + F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=fFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"` + F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=fUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"` + F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=fUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"` + F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=fFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"` + F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=fDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"` + F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=fStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"` + F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=fBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"` + F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=fSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"` + F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=fSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"` // Packed repeated fields (no string or bytes). - F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=FBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"` - F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=FInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"` - F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=FInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"` - F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=FFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"` - F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=FFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"` - F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=FUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"` - F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=FUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"` - F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=FFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"` - F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=FDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"` - F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=FSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"` - F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=FSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"` + F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=fBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"` + F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=fInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"` + F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=fInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"` + F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=fFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"` + F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=fFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"` + F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=fUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"` + F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=fUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"` + F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=fFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"` + F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=fDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"` + F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=fSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"` + F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=fSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"` Requiredgroup *GoTest_RequiredGroup `protobuf:"group,70,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"` Repeatedgroup []*GoTest_RepeatedGroup `protobuf:"group,80,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"` Optionalgroup *GoTest_OptionalGroup `protobuf:"group,90,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"` @@ -956,7 +957,7 @@ func (m *GoTest) GetOptionalgroup() *GoTest_OptionalGroup { // Required, repeated, and optional groups. type GoTest_RequiredGroup struct { - RequiredField *string `protobuf:"bytes,71,req,name=RequiredField" json:"RequiredField,omitempty"` + RequiredField *string `protobuf:"bytes,71,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -973,7 +974,7 @@ func (m *GoTest_RequiredGroup) GetRequiredField() string { } type GoTest_RepeatedGroup struct { - RequiredField *string `protobuf:"bytes,81,req,name=RequiredField" json:"RequiredField,omitempty"` + RequiredField *string `protobuf:"bytes,81,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -990,7 +991,7 @@ func (m *GoTest_RepeatedGroup) GetRequiredField() string { } type GoTest_OptionalGroup struct { - RequiredField *string `protobuf:"bytes,91,req,name=RequiredField" json:"RequiredField,omitempty"` + RequiredField *string `protobuf:"bytes,91,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -1025,7 +1026,7 @@ func (m *GoTestRequiredGroupField) GetGroup() *GoTestRequiredGroupField_Group { } type GoTestRequiredGroupField_Group struct { - Field *int32 `protobuf:"varint,2,req,name=Field" json:"Field,omitempty"` + Field *int32 `protobuf:"varint,2,req,name=Field,json=field" json:"Field,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -1526,7 +1527,6 @@ var E_Ext_More = &proto.ExtensionDesc{ Field: 103, Name: "testdata.Ext.more", Tag: "bytes,103,opt,name=more", - Filename: "test.proto", } var E_Ext_Text = &proto.ExtensionDesc{ @@ -1535,7 +1535,6 @@ var E_Ext_Text = &proto.ExtensionDesc{ Field: 104, Name: "testdata.Ext.text", Tag: "bytes,104,opt,name=text", - Filename: "test.proto", } var E_Ext_Number = &proto.ExtensionDesc{ @@ -1544,7 +1543,6 @@ var E_Ext_Number = &proto.ExtensionDesc{ Field: 105, Name: "testdata.Ext.number", Tag: "varint,105,opt,name=number", - Filename: "test.proto", } type ComplexExtension struct { @@ -1712,24 +1710,24 @@ func (m *Strings) GetBytesField() []byte { type Defaults struct { // Default-valued fields of all basic types. // Same as GoTest, but copied here to make testing easier. - F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,def=1" json:"F_Bool,omitempty"` - F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,def=32" json:"F_Int32,omitempty"` - F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,def=64" json:"F_Int64,omitempty"` - F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,def=320" json:"F_Fixed32,omitempty"` - F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,def=640" json:"F_Fixed64,omitempty"` - F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,def=3200" json:"F_Uint32,omitempty"` - F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,def=6400" json:"F_Uint64,omitempty"` - F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,def=314159" json:"F_Float,omitempty"` - F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,def=271828" json:"F_Double,omitempty"` - F_String *string `protobuf:"bytes,10,opt,name=F_String,json=FString,def=hello, \"world!\"\n" json:"F_String,omitempty"` - F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,def=Bignose" json:"F_Bytes,omitempty"` - F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,def=-32" json:"F_Sint32,omitempty"` - F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,def=-64" json:"F_Sint64,omitempty"` - F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"` + F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=fBool,def=1" json:"F_Bool,omitempty"` + F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=fInt32,def=32" json:"F_Int32,omitempty"` + F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=fInt64,def=64" json:"F_Int64,omitempty"` + F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=fFixed32,def=320" json:"F_Fixed32,omitempty"` + F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=fFixed64,def=640" json:"F_Fixed64,omitempty"` + F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=fUint32,def=3200" json:"F_Uint32,omitempty"` + F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=fUint64,def=6400" json:"F_Uint64,omitempty"` + F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=fFloat,def=314159" json:"F_Float,omitempty"` + F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=fDouble,def=271828" json:"F_Double,omitempty"` + F_String *string `protobuf:"bytes,10,opt,name=F_String,json=fString,def=hello, \"world!\"\n" json:"F_String,omitempty"` + F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=fBytes,def=Bignose" json:"F_Bytes,omitempty"` + F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=fSint32,def=-32" json:"F_Sint32,omitempty"` + F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=fSint64,def=-64" json:"F_Sint64,omitempty"` + F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=fEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"` // More fields with crazy defaults. - F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=FPinf,def=inf" json:"F_Pinf,omitempty"` - F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=FNinf,def=-inf" json:"F_Ninf,omitempty"` - F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=FNan,def=nan" json:"F_Nan,omitempty"` + F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=fPinf,def=inf" json:"F_Pinf,omitempty"` + F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=fNinf,def=-inf" json:"F_Ninf,omitempty"` + F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=fNan,def=nan" json:"F_Nan,omitempty"` // Sub-message. Sub *SubDefaults `protobuf:"bytes,18,opt,name=sub" json:"sub,omitempty"` // Redundant but explicit defaults. @@ -2178,55 +2176,55 @@ type isOneof_Tormato interface { } type Oneof_F_Bool struct { - F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,oneof"` + F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=fBool,oneof"` } type Oneof_F_Int32 struct { - F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,oneof"` + F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=fInt32,oneof"` } type Oneof_F_Int64 struct { - F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,oneof"` + F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=fInt64,oneof"` } type Oneof_F_Fixed32 struct { - F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,oneof"` + F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=fFixed32,oneof"` } type Oneof_F_Fixed64 struct { - F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,oneof"` + F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=fFixed64,oneof"` } type Oneof_F_Uint32 struct { - F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,oneof"` + F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=fUint32,oneof"` } type Oneof_F_Uint64 struct { - F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,oneof"` + F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=fUint64,oneof"` } type Oneof_F_Float struct { - F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,oneof"` + F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=fFloat,oneof"` } type Oneof_F_Double struct { - F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,oneof"` + F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=fDouble,oneof"` } type Oneof_F_String struct { - F_String string `protobuf:"bytes,10,opt,name=F_String,json=FString,oneof"` + F_String string `protobuf:"bytes,10,opt,name=F_String,json=fString,oneof"` } type Oneof_F_Bytes struct { - F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,oneof"` + F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=fBytes,oneof"` } type Oneof_F_Sint32 struct { - F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,oneof"` + F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=fSint32,oneof"` } type Oneof_F_Sint64 struct { - F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,oneof"` + F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=fSint64,oneof"` } type Oneof_F_Enum struct { - F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.MyMessage_Color,oneof"` + F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=fEnum,enum=testdata.MyMessage_Color,oneof"` } type Oneof_F_Message struct { - F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=FMessage,oneof"` + F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=fMessage,oneof"` } type Oneof_FGroup struct { FGroup *Oneof_F_Group `protobuf:"group,16,opt,name=F_Group,json=fGroup,oneof"` } type Oneof_F_Largest_Tag struct { - F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=FLargestTag,oneof"` + F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=fLargestTag,oneof"` } type Oneof_Value struct { Value int32 `protobuf:"varint,100,opt,name=value,oneof"` @@ -2962,7 +2960,6 @@ var E_Greeting = &proto.ExtensionDesc{ Field: 106, Name: "testdata.greeting", Tag: "bytes,106,rep,name=greeting", - Filename: "test.proto", } var E_Complex = &proto.ExtensionDesc{ @@ -2971,7 +2968,6 @@ var E_Complex = &proto.ExtensionDesc{ Field: 200, Name: "testdata.complex", Tag: "bytes,200,opt,name=complex", - Filename: "test.proto", } var E_RComplex = &proto.ExtensionDesc{ @@ -2980,7 +2976,6 @@ var E_RComplex = &proto.ExtensionDesc{ Field: 201, Name: "testdata.r_complex", Tag: "bytes,201,rep,name=r_complex,json=rComplex", - Filename: "test.proto", } var E_NoDefaultDouble = &proto.ExtensionDesc{ @@ -2989,7 +2984,6 @@ var E_NoDefaultDouble = &proto.ExtensionDesc{ Field: 101, Name: "testdata.no_default_double", Tag: "fixed64,101,opt,name=no_default_double,json=noDefaultDouble", - Filename: "test.proto", } var E_NoDefaultFloat = &proto.ExtensionDesc{ @@ -2998,7 +2992,6 @@ var E_NoDefaultFloat = &proto.ExtensionDesc{ Field: 102, Name: "testdata.no_default_float", Tag: "fixed32,102,opt,name=no_default_float,json=noDefaultFloat", - Filename: "test.proto", } var E_NoDefaultInt32 = &proto.ExtensionDesc{ @@ -3007,7 +3000,6 @@ var E_NoDefaultInt32 = &proto.ExtensionDesc{ Field: 103, Name: "testdata.no_default_int32", Tag: "varint,103,opt,name=no_default_int32,json=noDefaultInt32", - Filename: "test.proto", } var E_NoDefaultInt64 = &proto.ExtensionDesc{ @@ -3016,7 +3008,6 @@ var E_NoDefaultInt64 = &proto.ExtensionDesc{ Field: 104, Name: "testdata.no_default_int64", Tag: "varint,104,opt,name=no_default_int64,json=noDefaultInt64", - Filename: "test.proto", } var E_NoDefaultUint32 = &proto.ExtensionDesc{ @@ -3025,7 +3016,6 @@ var E_NoDefaultUint32 = &proto.ExtensionDesc{ Field: 105, Name: "testdata.no_default_uint32", Tag: "varint,105,opt,name=no_default_uint32,json=noDefaultUint32", - Filename: "test.proto", } var E_NoDefaultUint64 = &proto.ExtensionDesc{ @@ -3034,7 +3024,6 @@ var E_NoDefaultUint64 = &proto.ExtensionDesc{ Field: 106, Name: "testdata.no_default_uint64", Tag: "varint,106,opt,name=no_default_uint64,json=noDefaultUint64", - Filename: "test.proto", } var E_NoDefaultSint32 = &proto.ExtensionDesc{ @@ -3043,7 +3032,6 @@ var E_NoDefaultSint32 = &proto.ExtensionDesc{ Field: 107, Name: "testdata.no_default_sint32", Tag: "zigzag32,107,opt,name=no_default_sint32,json=noDefaultSint32", - Filename: "test.proto", } var E_NoDefaultSint64 = &proto.ExtensionDesc{ @@ -3052,7 +3040,6 @@ var E_NoDefaultSint64 = &proto.ExtensionDesc{ Field: 108, Name: "testdata.no_default_sint64", Tag: "zigzag64,108,opt,name=no_default_sint64,json=noDefaultSint64", - Filename: "test.proto", } var E_NoDefaultFixed32 = &proto.ExtensionDesc{ @@ -3061,7 +3048,6 @@ var E_NoDefaultFixed32 = &proto.ExtensionDesc{ Field: 109, Name: "testdata.no_default_fixed32", Tag: "fixed32,109,opt,name=no_default_fixed32,json=noDefaultFixed32", - Filename: "test.proto", } var E_NoDefaultFixed64 = &proto.ExtensionDesc{ @@ -3070,7 +3056,6 @@ var E_NoDefaultFixed64 = &proto.ExtensionDesc{ Field: 110, Name: "testdata.no_default_fixed64", Tag: "fixed64,110,opt,name=no_default_fixed64,json=noDefaultFixed64", - Filename: "test.proto", } var E_NoDefaultSfixed32 = &proto.ExtensionDesc{ @@ -3079,7 +3064,6 @@ var E_NoDefaultSfixed32 = &proto.ExtensionDesc{ Field: 111, Name: "testdata.no_default_sfixed32", Tag: "fixed32,111,opt,name=no_default_sfixed32,json=noDefaultSfixed32", - Filename: "test.proto", } var E_NoDefaultSfixed64 = &proto.ExtensionDesc{ @@ -3088,7 +3072,6 @@ var E_NoDefaultSfixed64 = &proto.ExtensionDesc{ Field: 112, Name: "testdata.no_default_sfixed64", Tag: "fixed64,112,opt,name=no_default_sfixed64,json=noDefaultSfixed64", - Filename: "test.proto", } var E_NoDefaultBool = &proto.ExtensionDesc{ @@ -3097,7 +3080,6 @@ var E_NoDefaultBool = &proto.ExtensionDesc{ Field: 113, Name: "testdata.no_default_bool", Tag: "varint,113,opt,name=no_default_bool,json=noDefaultBool", - Filename: "test.proto", } var E_NoDefaultString = &proto.ExtensionDesc{ @@ -3106,7 +3088,6 @@ var E_NoDefaultString = &proto.ExtensionDesc{ Field: 114, Name: "testdata.no_default_string", Tag: "bytes,114,opt,name=no_default_string,json=noDefaultString", - Filename: "test.proto", } var E_NoDefaultBytes = &proto.ExtensionDesc{ @@ -3115,7 +3096,6 @@ var E_NoDefaultBytes = &proto.ExtensionDesc{ Field: 115, Name: "testdata.no_default_bytes", Tag: "bytes,115,opt,name=no_default_bytes,json=noDefaultBytes", - Filename: "test.proto", } var E_NoDefaultEnum = &proto.ExtensionDesc{ @@ -3124,7 +3104,6 @@ var E_NoDefaultEnum = &proto.ExtensionDesc{ Field: 116, Name: "testdata.no_default_enum", Tag: "varint,116,opt,name=no_default_enum,json=noDefaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum", - Filename: "test.proto", } var E_DefaultDouble = &proto.ExtensionDesc{ @@ -3133,7 +3112,6 @@ var E_DefaultDouble = &proto.ExtensionDesc{ Field: 201, Name: "testdata.default_double", Tag: "fixed64,201,opt,name=default_double,json=defaultDouble,def=3.1415", - Filename: "test.proto", } var E_DefaultFloat = &proto.ExtensionDesc{ @@ -3142,7 +3120,6 @@ var E_DefaultFloat = &proto.ExtensionDesc{ Field: 202, Name: "testdata.default_float", Tag: "fixed32,202,opt,name=default_float,json=defaultFloat,def=3.14", - Filename: "test.proto", } var E_DefaultInt32 = &proto.ExtensionDesc{ @@ -3151,7 +3128,6 @@ var E_DefaultInt32 = &proto.ExtensionDesc{ Field: 203, Name: "testdata.default_int32", Tag: "varint,203,opt,name=default_int32,json=defaultInt32,def=42", - Filename: "test.proto", } var E_DefaultInt64 = &proto.ExtensionDesc{ @@ -3160,7 +3136,6 @@ var E_DefaultInt64 = &proto.ExtensionDesc{ Field: 204, Name: "testdata.default_int64", Tag: "varint,204,opt,name=default_int64,json=defaultInt64,def=43", - Filename: "test.proto", } var E_DefaultUint32 = &proto.ExtensionDesc{ @@ -3169,7 +3144,6 @@ var E_DefaultUint32 = &proto.ExtensionDesc{ Field: 205, Name: "testdata.default_uint32", Tag: "varint,205,opt,name=default_uint32,json=defaultUint32,def=44", - Filename: "test.proto", } var E_DefaultUint64 = &proto.ExtensionDesc{ @@ -3178,7 +3152,6 @@ var E_DefaultUint64 = &proto.ExtensionDesc{ Field: 206, Name: "testdata.default_uint64", Tag: "varint,206,opt,name=default_uint64,json=defaultUint64,def=45", - Filename: "test.proto", } var E_DefaultSint32 = &proto.ExtensionDesc{ @@ -3187,7 +3160,6 @@ var E_DefaultSint32 = &proto.ExtensionDesc{ Field: 207, Name: "testdata.default_sint32", Tag: "zigzag32,207,opt,name=default_sint32,json=defaultSint32,def=46", - Filename: "test.proto", } var E_DefaultSint64 = &proto.ExtensionDesc{ @@ -3196,7 +3168,6 @@ var E_DefaultSint64 = &proto.ExtensionDesc{ Field: 208, Name: "testdata.default_sint64", Tag: "zigzag64,208,opt,name=default_sint64,json=defaultSint64,def=47", - Filename: "test.proto", } var E_DefaultFixed32 = &proto.ExtensionDesc{ @@ -3205,7 +3176,6 @@ var E_DefaultFixed32 = &proto.ExtensionDesc{ Field: 209, Name: "testdata.default_fixed32", Tag: "fixed32,209,opt,name=default_fixed32,json=defaultFixed32,def=48", - Filename: "test.proto", } var E_DefaultFixed64 = &proto.ExtensionDesc{ @@ -3214,7 +3184,6 @@ var E_DefaultFixed64 = &proto.ExtensionDesc{ Field: 210, Name: "testdata.default_fixed64", Tag: "fixed64,210,opt,name=default_fixed64,json=defaultFixed64,def=49", - Filename: "test.proto", } var E_DefaultSfixed32 = &proto.ExtensionDesc{ @@ -3223,7 +3192,6 @@ var E_DefaultSfixed32 = &proto.ExtensionDesc{ Field: 211, Name: "testdata.default_sfixed32", Tag: "fixed32,211,opt,name=default_sfixed32,json=defaultSfixed32,def=50", - Filename: "test.proto", } var E_DefaultSfixed64 = &proto.ExtensionDesc{ @@ -3232,7 +3200,6 @@ var E_DefaultSfixed64 = &proto.ExtensionDesc{ Field: 212, Name: "testdata.default_sfixed64", Tag: "fixed64,212,opt,name=default_sfixed64,json=defaultSfixed64,def=51", - Filename: "test.proto", } var E_DefaultBool = &proto.ExtensionDesc{ @@ -3241,7 +3208,6 @@ var E_DefaultBool = &proto.ExtensionDesc{ Field: 213, Name: "testdata.default_bool", Tag: "varint,213,opt,name=default_bool,json=defaultBool,def=1", - Filename: "test.proto", } var E_DefaultString = &proto.ExtensionDesc{ @@ -3250,7 +3216,6 @@ var E_DefaultString = &proto.ExtensionDesc{ Field: 214, Name: "testdata.default_string", Tag: "bytes,214,opt,name=default_string,json=defaultString,def=Hello, string", - Filename: "test.proto", } var E_DefaultBytes = &proto.ExtensionDesc{ @@ -3259,7 +3224,6 @@ var E_DefaultBytes = &proto.ExtensionDesc{ Field: 215, Name: "testdata.default_bytes", Tag: "bytes,215,opt,name=default_bytes,json=defaultBytes,def=Hello, bytes", - Filename: "test.proto", } var E_DefaultEnum = &proto.ExtensionDesc{ @@ -3268,7 +3232,6 @@ var E_DefaultEnum = &proto.ExtensionDesc{ Field: 216, Name: "testdata.default_enum", Tag: "varint,216,opt,name=default_enum,json=defaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum,def=1", - Filename: "test.proto", } var E_X201 = &proto.ExtensionDesc{ @@ -3277,7 +3240,6 @@ var E_X201 = &proto.ExtensionDesc{ Field: 201, Name: "testdata.x201", Tag: "bytes,201,opt,name=x201", - Filename: "test.proto", } var E_X202 = &proto.ExtensionDesc{ @@ -3286,7 +3248,6 @@ var E_X202 = &proto.ExtensionDesc{ Field: 202, Name: "testdata.x202", Tag: "bytes,202,opt,name=x202", - Filename: "test.proto", } var E_X203 = &proto.ExtensionDesc{ @@ -3295,7 +3256,6 @@ var E_X203 = &proto.ExtensionDesc{ Field: 203, Name: "testdata.x203", Tag: "bytes,203,opt,name=x203", - Filename: "test.proto", } var E_X204 = &proto.ExtensionDesc{ @@ -3304,7 +3264,6 @@ var E_X204 = &proto.ExtensionDesc{ Field: 204, Name: "testdata.x204", Tag: "bytes,204,opt,name=x204", - Filename: "test.proto", } var E_X205 = &proto.ExtensionDesc{ @@ -3313,7 +3272,6 @@ var E_X205 = &proto.ExtensionDesc{ Field: 205, Name: "testdata.x205", Tag: "bytes,205,opt,name=x205", - Filename: "test.proto", } var E_X206 = &proto.ExtensionDesc{ @@ -3322,7 +3280,6 @@ var E_X206 = &proto.ExtensionDesc{ Field: 206, Name: "testdata.x206", Tag: "bytes,206,opt,name=x206", - Filename: "test.proto", } var E_X207 = &proto.ExtensionDesc{ @@ -3331,7 +3288,6 @@ var E_X207 = &proto.ExtensionDesc{ Field: 207, Name: "testdata.x207", Tag: "bytes,207,opt,name=x207", - Filename: "test.proto", } var E_X208 = &proto.ExtensionDesc{ @@ -3340,7 +3296,6 @@ var E_X208 = &proto.ExtensionDesc{ Field: 208, Name: "testdata.x208", Tag: "bytes,208,opt,name=x208", - Filename: "test.proto", } var E_X209 = &proto.ExtensionDesc{ @@ -3349,7 +3304,6 @@ var E_X209 = &proto.ExtensionDesc{ Field: 209, Name: "testdata.x209", Tag: "bytes,209,opt,name=x209", - Filename: "test.proto", } var E_X210 = &proto.ExtensionDesc{ @@ -3358,7 +3312,6 @@ var E_X210 = &proto.ExtensionDesc{ Field: 210, Name: "testdata.x210", Tag: "bytes,210,opt,name=x210", - Filename: "test.proto", } var E_X211 = &proto.ExtensionDesc{ @@ -3367,7 +3320,6 @@ var E_X211 = &proto.ExtensionDesc{ Field: 211, Name: "testdata.x211", Tag: "bytes,211,opt,name=x211", - Filename: "test.proto", } var E_X212 = &proto.ExtensionDesc{ @@ -3376,7 +3328,6 @@ var E_X212 = &proto.ExtensionDesc{ Field: 212, Name: "testdata.x212", Tag: "bytes,212,opt,name=x212", - Filename: "test.proto", } var E_X213 = &proto.ExtensionDesc{ @@ -3385,7 +3336,6 @@ var E_X213 = &proto.ExtensionDesc{ Field: 213, Name: "testdata.x213", Tag: "bytes,213,opt,name=x213", - Filename: "test.proto", } var E_X214 = &proto.ExtensionDesc{ @@ -3394,7 +3344,6 @@ var E_X214 = &proto.ExtensionDesc{ Field: 214, Name: "testdata.x214", Tag: "bytes,214,opt,name=x214", - Filename: "test.proto", } var E_X215 = &proto.ExtensionDesc{ @@ -3403,7 +3352,6 @@ var E_X215 = &proto.ExtensionDesc{ Field: 215, Name: "testdata.x215", Tag: "bytes,215,opt,name=x215", - Filename: "test.proto", } var E_X216 = &proto.ExtensionDesc{ @@ -3412,7 +3360,6 @@ var E_X216 = &proto.ExtensionDesc{ Field: 216, Name: "testdata.x216", Tag: "bytes,216,opt,name=x216", - Filename: "test.proto", } var E_X217 = &proto.ExtensionDesc{ @@ -3421,7 +3368,6 @@ var E_X217 = &proto.ExtensionDesc{ Field: 217, Name: "testdata.x217", Tag: "bytes,217,opt,name=x217", - Filename: "test.proto", } var E_X218 = &proto.ExtensionDesc{ @@ -3430,7 +3376,6 @@ var E_X218 = &proto.ExtensionDesc{ Field: 218, Name: "testdata.x218", Tag: "bytes,218,opt,name=x218", - Filename: "test.proto", } var E_X219 = &proto.ExtensionDesc{ @@ -3439,7 +3384,6 @@ var E_X219 = &proto.ExtensionDesc{ Field: 219, Name: "testdata.x219", Tag: "bytes,219,opt,name=x219", - Filename: "test.proto", } var E_X220 = &proto.ExtensionDesc{ @@ -3448,7 +3392,6 @@ var E_X220 = &proto.ExtensionDesc{ Field: 220, Name: "testdata.x220", Tag: "bytes,220,opt,name=x220", - Filename: "test.proto", } var E_X221 = &proto.ExtensionDesc{ @@ -3457,7 +3400,6 @@ var E_X221 = &proto.ExtensionDesc{ Field: 221, Name: "testdata.x221", Tag: "bytes,221,opt,name=x221", - Filename: "test.proto", } var E_X222 = &proto.ExtensionDesc{ @@ -3466,7 +3408,6 @@ var E_X222 = &proto.ExtensionDesc{ Field: 222, Name: "testdata.x222", Tag: "bytes,222,opt,name=x222", - Filename: "test.proto", } var E_X223 = &proto.ExtensionDesc{ @@ -3475,7 +3416,6 @@ var E_X223 = &proto.ExtensionDesc{ Field: 223, Name: "testdata.x223", Tag: "bytes,223,opt,name=x223", - Filename: "test.proto", } var E_X224 = &proto.ExtensionDesc{ @@ -3484,7 +3424,6 @@ var E_X224 = &proto.ExtensionDesc{ Field: 224, Name: "testdata.x224", Tag: "bytes,224,opt,name=x224", - Filename: "test.proto", } var E_X225 = &proto.ExtensionDesc{ @@ -3493,7 +3432,6 @@ var E_X225 = &proto.ExtensionDesc{ Field: 225, Name: "testdata.x225", Tag: "bytes,225,opt,name=x225", - Filename: "test.proto", } var E_X226 = &proto.ExtensionDesc{ @@ -3502,7 +3440,6 @@ var E_X226 = &proto.ExtensionDesc{ Field: 226, Name: "testdata.x226", Tag: "bytes,226,opt,name=x226", - Filename: "test.proto", } var E_X227 = &proto.ExtensionDesc{ @@ -3511,7 +3448,6 @@ var E_X227 = &proto.ExtensionDesc{ Field: 227, Name: "testdata.x227", Tag: "bytes,227,opt,name=x227", - Filename: "test.proto", } var E_X228 = &proto.ExtensionDesc{ @@ -3520,7 +3456,6 @@ var E_X228 = &proto.ExtensionDesc{ Field: 228, Name: "testdata.x228", Tag: "bytes,228,opt,name=x228", - Filename: "test.proto", } var E_X229 = &proto.ExtensionDesc{ @@ -3529,7 +3464,6 @@ var E_X229 = &proto.ExtensionDesc{ Field: 229, Name: "testdata.x229", Tag: "bytes,229,opt,name=x229", - Filename: "test.proto", } var E_X230 = &proto.ExtensionDesc{ @@ -3538,7 +3472,6 @@ var E_X230 = &proto.ExtensionDesc{ Field: 230, Name: "testdata.x230", Tag: "bytes,230,opt,name=x230", - Filename: "test.proto", } var E_X231 = &proto.ExtensionDesc{ @@ -3547,7 +3480,6 @@ var E_X231 = &proto.ExtensionDesc{ Field: 231, Name: "testdata.x231", Tag: "bytes,231,opt,name=x231", - Filename: "test.proto", } var E_X232 = &proto.ExtensionDesc{ @@ -3556,7 +3488,6 @@ var E_X232 = &proto.ExtensionDesc{ Field: 232, Name: "testdata.x232", Tag: "bytes,232,opt,name=x232", - Filename: "test.proto", } var E_X233 = &proto.ExtensionDesc{ @@ -3565,7 +3496,6 @@ var E_X233 = &proto.ExtensionDesc{ Field: 233, Name: "testdata.x233", Tag: "bytes,233,opt,name=x233", - Filename: "test.proto", } var E_X234 = &proto.ExtensionDesc{ @@ -3574,7 +3504,6 @@ var E_X234 = &proto.ExtensionDesc{ Field: 234, Name: "testdata.x234", Tag: "bytes,234,opt,name=x234", - Filename: "test.proto", } var E_X235 = &proto.ExtensionDesc{ @@ -3583,7 +3512,6 @@ var E_X235 = &proto.ExtensionDesc{ Field: 235, Name: "testdata.x235", Tag: "bytes,235,opt,name=x235", - Filename: "test.proto", } var E_X236 = &proto.ExtensionDesc{ @@ -3592,7 +3520,6 @@ var E_X236 = &proto.ExtensionDesc{ Field: 236, Name: "testdata.x236", Tag: "bytes,236,opt,name=x236", - Filename: "test.proto", } var E_X237 = &proto.ExtensionDesc{ @@ -3601,7 +3528,6 @@ var E_X237 = &proto.ExtensionDesc{ Field: 237, Name: "testdata.x237", Tag: "bytes,237,opt,name=x237", - Filename: "test.proto", } var E_X238 = &proto.ExtensionDesc{ @@ -3610,7 +3536,6 @@ var E_X238 = &proto.ExtensionDesc{ Field: 238, Name: "testdata.x238", Tag: "bytes,238,opt,name=x238", - Filename: "test.proto", } var E_X239 = &proto.ExtensionDesc{ @@ -3619,7 +3544,6 @@ var E_X239 = &proto.ExtensionDesc{ Field: 239, Name: "testdata.x239", Tag: "bytes,239,opt,name=x239", - Filename: "test.proto", } var E_X240 = &proto.ExtensionDesc{ @@ -3628,7 +3552,6 @@ var E_X240 = &proto.ExtensionDesc{ Field: 240, Name: "testdata.x240", Tag: "bytes,240,opt,name=x240", - Filename: "test.proto", } var E_X241 = &proto.ExtensionDesc{ @@ -3637,7 +3560,6 @@ var E_X241 = &proto.ExtensionDesc{ Field: 241, Name: "testdata.x241", Tag: "bytes,241,opt,name=x241", - Filename: "test.proto", } var E_X242 = &proto.ExtensionDesc{ @@ -3646,7 +3568,6 @@ var E_X242 = &proto.ExtensionDesc{ Field: 242, Name: "testdata.x242", Tag: "bytes,242,opt,name=x242", - Filename: "test.proto", } var E_X243 = &proto.ExtensionDesc{ @@ -3655,7 +3576,6 @@ var E_X243 = &proto.ExtensionDesc{ Field: 243, Name: "testdata.x243", Tag: "bytes,243,opt,name=x243", - Filename: "test.proto", } var E_X244 = &proto.ExtensionDesc{ @@ -3664,7 +3584,6 @@ var E_X244 = &proto.ExtensionDesc{ Field: 244, Name: "testdata.x244", Tag: "bytes,244,opt,name=x244", - Filename: "test.proto", } var E_X245 = &proto.ExtensionDesc{ @@ -3673,7 +3592,6 @@ var E_X245 = &proto.ExtensionDesc{ Field: 245, Name: "testdata.x245", Tag: "bytes,245,opt,name=x245", - Filename: "test.proto", } var E_X246 = &proto.ExtensionDesc{ @@ -3682,7 +3600,6 @@ var E_X246 = &proto.ExtensionDesc{ Field: 246, Name: "testdata.x246", Tag: "bytes,246,opt,name=x246", - Filename: "test.proto", } var E_X247 = &proto.ExtensionDesc{ @@ -3691,7 +3608,6 @@ var E_X247 = &proto.ExtensionDesc{ Field: 247, Name: "testdata.x247", Tag: "bytes,247,opt,name=x247", - Filename: "test.proto", } var E_X248 = &proto.ExtensionDesc{ @@ -3700,7 +3616,6 @@ var E_X248 = &proto.ExtensionDesc{ Field: 248, Name: "testdata.x248", Tag: "bytes,248,opt,name=x248", - Filename: "test.proto", } var E_X249 = &proto.ExtensionDesc{ @@ -3709,7 +3624,6 @@ var E_X249 = &proto.ExtensionDesc{ Field: 249, Name: "testdata.x249", Tag: "bytes,249,opt,name=x249", - Filename: "test.proto", } var E_X250 = &proto.ExtensionDesc{ @@ -3718,7 +3632,6 @@ var E_X250 = &proto.ExtensionDesc{ Field: 250, Name: "testdata.x250", Tag: "bytes,250,opt,name=x250", - Filename: "test.proto", } func init() { @@ -3864,284 +3777,285 @@ func init() { func init() { proto.RegisterFile("test.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 4453 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48, + // 4465 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48, 0x7a, 0x37, 0xc0, 0xfd, 0x23, 0x25, 0x42, 0x65, 0xb5, 0x9b, 0x96, 0xbc, 0xc0, 0x9c, 0xe9, 0x6e, - 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xca, 0x7a, 0x63, 0x89, 0x0a, - 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x44, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52, + 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xc9, 0x7a, 0x63, 0x89, 0x0a, + 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x48, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52, 0x72, 0xe9, 0x4b, 0x72, 0xcd, 0x76, 0xc9, 0x35, 0xa7, 0x9c, 0x92, 0xbc, 0x97, 0x7f, 0x22, 0xe9, 0xee, 0x59, 0x7b, 0xd6, 0xac, 0x93, 0x7d, 0x99, 0xec, 0xdb, 0x4c, 0x92, 0x4b, 0xcf, 0xab, 0xaf, 0x0a, 0x40, 0x01, 0x24, 0x20, 0xf9, 0x24, 0x56, 0xd5, 0xef, 0xf7, 0xd5, 0xf6, 0xab, 0xef, 0xab, - 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0x3b, - 0x4e, 0xa7, 0x7c, 0x1d, 0xd2, 0x1b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0x38, 0xb4, 0xed, - 0x92, 0xa4, 0xca, 0x95, 0x79, 0x6d, 0x6e, 0xc5, 0x45, 0xac, 0x34, 0x5b, 0x2d, 0x83, 0xb6, 0x94, - 0xef, 0x40, 0x7e, 0xc3, 0xde, 0x33, 0x27, 0x4e, 0xb3, 0x6f, 0x0e, 0xba, 0x64, 0x11, 0x52, 0x4f, - 0x3b, 0xfb, 0xe6, 0x00, 0x19, 0x39, 0x83, 0x15, 0x08, 0x81, 0xe4, 0xde, 0xc9, 0xc8, 0x2c, 0xc9, - 0x58, 0x89, 0xbf, 0xcb, 0xbf, 0x72, 0x85, 0x76, 0x42, 0x99, 0xe4, 0x3a, 0x24, 0xbf, 0xdc, 0xb7, - 0xba, 0xbc, 0x97, 0xd7, 0xfc, 0x5e, 0x58, 0xfb, 0xca, 0x97, 0x37, 0xb7, 0x1f, 0x1b, 0x08, 0xa1, - 0xf6, 0xf7, 0x3a, 0xfb, 0x03, 0x6a, 0x4a, 0xa2, 0xf6, 0xb1, 0x40, 0x6b, 0x77, 0x3a, 0xe3, 0xce, - 0xb0, 0x94, 0x50, 0xa5, 0x4a, 0xca, 0x60, 0x05, 0x72, 0x1f, 0xe6, 0x0c, 0xf3, 0xc5, 0x51, 0x7f, - 0x6c, 0x76, 0x71, 0x70, 0xa5, 0xa4, 0x2a, 0x57, 0xf2, 0xd3, 0xf6, 0xb1, 0xd1, 0x08, 0x62, 0x19, - 0x79, 0x64, 0x76, 0x1c, 0x97, 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xad, 0x91, 0xd3, - 0xb7, 0xad, 0xce, 0x80, 0x91, 0xd3, 0xaa, 0x14, 0x43, 0x0e, 0x60, 0xc9, 0x9b, 0x50, 0x6c, 0xb6, - 0x1f, 0xda, 0xf6, 0xa0, 0x3d, 0xe6, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x93, 0xd6, - 0xba, 0xc3, 0x24, 0x15, 0x50, 0x9a, 0xed, 0x4d, 0xcb, 0xa9, 0x6a, 0x3e, 0x30, 0xaf, 0xca, 0x95, - 0x94, 0x31, 0xdf, 0xc4, 0xea, 0x29, 0x64, 0x4d, 0xf7, 0x91, 0x05, 0x55, 0xae, 0x24, 0x18, 0xb2, - 0xa6, 0x7b, 0xc8, 0x5b, 0x40, 0x9a, 0xed, 0x66, 0xff, 0xd8, 0xec, 0x8a, 0x56, 0xe7, 0x54, 0xb9, - 0x92, 0x31, 0x94, 0x26, 0x6f, 0x98, 0x81, 0x16, 0x2d, 0xcf, 0xab, 0x72, 0x25, 0xed, 0xa2, 0x05, - 0xdb, 0x37, 0x60, 0xa1, 0xd9, 0x7e, 0xb7, 0x1f, 0x1c, 0x70, 0x51, 0x95, 0x2b, 0x73, 0x46, 0xb1, - 0xc9, 0xea, 0xa7, 0xb1, 0xa2, 0x61, 0x45, 0x95, 0x2b, 0x49, 0x8e, 0x15, 0xec, 0xe2, 0xec, 0x9a, - 0x03, 0xbb, 0xe3, 0xf8, 0xd0, 0x05, 0x55, 0xae, 0xc8, 0xc6, 0x7c, 0x13, 0xab, 0x83, 0x56, 0x1f, - 0xdb, 0x47, 0xfb, 0x03, 0xd3, 0x87, 0x12, 0x55, 0xae, 0x48, 0x46, 0xb1, 0xc9, 0xea, 0x83, 0xd8, - 0x5d, 0x67, 0xdc, 0xb7, 0x7a, 0x3e, 0xf6, 0x3c, 0xea, 0xb7, 0xd8, 0x64, 0xf5, 0xc1, 0x11, 0x3c, - 0x3c, 0x71, 0xcc, 0x89, 0x0f, 0x35, 0x55, 0xb9, 0x52, 0x30, 0xe6, 0x9b, 0x58, 0x1d, 0xb2, 0x1a, - 0x5a, 0x83, 0x43, 0x55, 0xae, 0x2c, 0x50, 0xab, 0x33, 0xd6, 0x60, 0x37, 0xb4, 0x06, 0x3d, 0x55, - 0xae, 0x10, 0x8e, 0x15, 0xd6, 0x40, 0xd4, 0x0c, 0x13, 0x62, 0x69, 0x51, 0x4d, 0x08, 0x9a, 0x61, - 0x95, 0x41, 0xcd, 0x70, 0xe0, 0x6b, 0x6a, 0x42, 0xd4, 0x4c, 0x08, 0x89, 0x9d, 0x73, 0xe4, 0x05, - 0x35, 0x21, 0x6a, 0x86, 0x23, 0x43, 0x9a, 0xe1, 0xd8, 0xd7, 0xd5, 0x44, 0x50, 0x33, 0x53, 0x68, - 0xd1, 0x72, 0x49, 0x4d, 0x04, 0x35, 0xc3, 0xd1, 0x41, 0xcd, 0x70, 0xf0, 0x45, 0x35, 0x11, 0xd0, - 0x4c, 0x18, 0x2b, 0x1a, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0xb3, 0x73, 0x35, 0xc3, 0xa1, 0xcb, - 0x6a, 0x42, 0xd4, 0x8c, 0x68, 0xd5, 0xd3, 0x0c, 0x87, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0x58, - 0x4f, 0x33, 0x1c, 0x7b, 0x59, 0x4d, 0x04, 0x34, 0xc3, 0xb1, 0xd7, 0x45, 0xcd, 0x70, 0xe8, 0xc7, - 0x92, 0x9a, 0x10, 0x45, 0xc3, 0xa1, 0x37, 0x03, 0xa2, 0xe1, 0xd8, 0x4f, 0x28, 0x56, 0x54, 0x4d, - 0x18, 0x2c, 0xae, 0xc2, 0xa7, 0x14, 0x2c, 0xca, 0x86, 0x83, 0x7d, 0xd9, 0xd8, 0xdc, 0x05, 0x95, - 0xae, 0xa8, 0x92, 0x27, 0x1b, 0xd7, 0x2f, 0x89, 0xb2, 0xf1, 0x80, 0x57, 0xd1, 0xd5, 0x72, 0xd9, - 0x4c, 0x21, 0x6b, 0xba, 0x8f, 0x54, 0x55, 0xc9, 0x97, 0x8d, 0x87, 0x0c, 0xc8, 0xc6, 0xc3, 0x5e, - 0x53, 0x25, 0x51, 0x36, 0x33, 0xd0, 0xa2, 0xe5, 0xb2, 0x2a, 0x89, 0xb2, 0xf1, 0xd0, 0xa2, 0x6c, - 0x3c, 0xf0, 0x17, 0x54, 0x49, 0x90, 0xcd, 0x34, 0x56, 0x34, 0xfc, 0x45, 0x55, 0x12, 0x64, 0x13, - 0x9c, 0x1d, 0x93, 0x8d, 0x07, 0x7d, 0x43, 0x95, 0x7c, 0xd9, 0x04, 0xad, 0x72, 0xd9, 0x78, 0xd0, - 0x37, 0x55, 0x49, 0x90, 0x4d, 0x10, 0xcb, 0x65, 0xe3, 0x61, 0xdf, 0xc2, 0xf8, 0xe6, 0xca, 0xc6, - 0xc3, 0x0a, 0xb2, 0xf1, 0xa0, 0xbf, 0x43, 0x63, 0xa1, 0x27, 0x1b, 0x0f, 0x2a, 0xca, 0xc6, 0xc3, - 0xfe, 0x2e, 0xc5, 0xfa, 0xb2, 0x99, 0x06, 0x8b, 0xab, 0xf0, 0x7b, 0x14, 0xec, 0xcb, 0xc6, 0x03, - 0xaf, 0xe0, 0x20, 0xa8, 0x6c, 0xba, 0xe6, 0x61, 0xe7, 0x68, 0x40, 0x25, 0x56, 0xa1, 0xba, 0xa9, - 0x27, 0x9d, 0xf1, 0x91, 0x49, 0x47, 0x62, 0xdb, 0x83, 0xc7, 0x6e, 0x1b, 0x59, 0xa1, 0xc6, 0x99, - 0x7c, 0x7c, 0xc2, 0x75, 0xaa, 0x9f, 0xba, 0x5c, 0xd5, 0x8c, 0x22, 0xd3, 0xd0, 0x34, 0xbe, 0xa6, - 0x0b, 0xf8, 0x1b, 0x54, 0x45, 0x75, 0xb9, 0xa6, 0x33, 0x7c, 0x4d, 0xf7, 0xf1, 0x55, 0x38, 0xef, - 0x4b, 0xc9, 0x67, 0xdc, 0xa4, 0x5a, 0xaa, 0x27, 0xaa, 0xda, 0xaa, 0xb1, 0xe0, 0x0a, 0x6a, 0x16, - 0x29, 0xd0, 0xcd, 0x2d, 0x2a, 0xa9, 0x7a, 0xa2, 0xa6, 0x7b, 0x24, 0xb1, 0x27, 0x8d, 0xca, 0x90, - 0x0b, 0xcb, 0xe7, 0xdc, 0xa6, 0xca, 0xaa, 0x27, 0xab, 0xda, 0xea, 0xaa, 0xa1, 0x70, 0x7d, 0xcd, - 0xe0, 0x04, 0xfa, 0x59, 0xa1, 0x0a, 0xab, 0x27, 0x6b, 0xba, 0xc7, 0x09, 0xf6, 0xb3, 0xe0, 0x0a, - 0xcd, 0xa7, 0x7c, 0x89, 0x2a, 0xad, 0x9e, 0xae, 0xae, 0xe9, 0x6b, 0xeb, 0xf7, 0x8c, 0x22, 0x53, - 0x9c, 0xcf, 0xd1, 0x69, 0x3f, 0x5c, 0x72, 0x3e, 0x69, 0x95, 0x6a, 0xae, 0x9e, 0xd6, 0xee, 0xac, - 0xdd, 0xd5, 0xee, 0x1a, 0x0a, 0xd7, 0x9e, 0xcf, 0x7a, 0x87, 0xb2, 0xb8, 0xf8, 0x7c, 0xd6, 0x1a, - 0x55, 0x5f, 0x5d, 0x79, 0x66, 0x0e, 0x06, 0xf6, 0x2d, 0xb5, 0xfc, 0xd2, 0x1e, 0x0f, 0xba, 0xd7, - 0xca, 0x60, 0x28, 0x5c, 0x8f, 0x62, 0xaf, 0x0b, 0xae, 0x20, 0x7d, 0xfa, 0xaf, 0xd1, 0x7b, 0x58, - 0xa1, 0x9e, 0x79, 0xd8, 0xef, 0x59, 0xf6, 0xc4, 0x34, 0x8a, 0x4c, 0x9a, 0xa1, 0x35, 0xd9, 0x0d, - 0xaf, 0xe3, 0xaf, 0x53, 0xda, 0x42, 0x3d, 0x71, 0xbb, 0xaa, 0xd1, 0x9e, 0x66, 0xad, 0xe3, 0x6e, - 0x78, 0x1d, 0x7f, 0x83, 0x72, 0x48, 0x3d, 0x71, 0xbb, 0xa6, 0x73, 0x8e, 0xb8, 0x8e, 0x77, 0xe0, - 0x42, 0x28, 0x2e, 0xb6, 0x47, 0x9d, 0x83, 0xe7, 0x66, 0xb7, 0xa4, 0xd1, 0xf0, 0xf8, 0x50, 0x56, - 0x24, 0xe3, 0x7c, 0x20, 0x44, 0xee, 0x60, 0x33, 0xb9, 0x07, 0xaf, 0x87, 0x03, 0xa5, 0xcb, 0xac, - 0xd2, 0x78, 0x89, 0xcc, 0xc5, 0x60, 0xcc, 0x0c, 0x51, 0x05, 0x07, 0xec, 0x52, 0x75, 0x1a, 0x40, - 0x7d, 0xaa, 0xef, 0x89, 0x39, 0xf5, 0x67, 0xe0, 0xe2, 0x74, 0x28, 0x75, 0xc9, 0xeb, 0x34, 0xa2, - 0x22, 0xf9, 0x42, 0x38, 0xaa, 0x4e, 0xd1, 0x67, 0xf4, 0x5d, 0xa3, 0x21, 0x56, 0xa4, 0x4f, 0xf5, - 0x7e, 0x1f, 0x4a, 0x53, 0xc1, 0xd6, 0x65, 0xdf, 0xa1, 0x31, 0x17, 0xd9, 0xaf, 0x85, 0xe2, 0x6e, - 0x98, 0x3c, 0xa3, 0xeb, 0xbb, 0x34, 0x08, 0x0b, 0xe4, 0xa9, 0x9e, 0x71, 0xc9, 0x82, 0xe1, 0xd8, - 0xe5, 0xde, 0xa3, 0x51, 0x99, 0x2f, 0x59, 0x20, 0x32, 0x8b, 0xfd, 0x86, 0xe2, 0xb3, 0xcb, 0xad, - 0xd3, 0x30, 0xcd, 0xfb, 0x0d, 0x86, 0x6a, 0x4e, 0x7e, 0x9b, 0x92, 0x77, 0x67, 0xcf, 0xf8, 0xc7, - 0x09, 0x1a, 0x60, 0x39, 0x7b, 0x77, 0xd6, 0x94, 0x3d, 0xf6, 0x8c, 0x29, 0xff, 0x84, 0xb2, 0x89, - 0xc0, 0x9e, 0x9a, 0xf3, 0x63, 0x98, 0x73, 0x6f, 0x75, 0xbd, 0xb1, 0x7d, 0x34, 0x2a, 0x35, 0x55, - 0xb9, 0x02, 0xda, 0x95, 0xa9, 0xec, 0xc7, 0xbd, 0xe4, 0x6d, 0x50, 0x94, 0x11, 0x24, 0x31, 0x2b, - 0xcc, 0x2e, 0xb3, 0xb2, 0xa3, 0x26, 0x22, 0xac, 0x30, 0x94, 0x67, 0x45, 0x20, 0x51, 0x2b, 0xae, - 0xd3, 0x67, 0x56, 0x3e, 0x50, 0xa5, 0x99, 0x56, 0xdc, 0x10, 0xc0, 0xad, 0x04, 0x48, 0x4b, 0xeb, - 0x7e, 0xbe, 0x85, 0xed, 0xe4, 0x8b, 0xe1, 0x04, 0x6c, 0x03, 0xef, 0xcf, 0xc1, 0x4a, 0x46, 0x13, - 0x06, 0x37, 0x4d, 0xfb, 0xd9, 0x08, 0x5a, 0x60, 0x34, 0xd3, 0xb4, 0x9f, 0x9b, 0x41, 0x2b, 0xff, - 0xa6, 0x04, 0x49, 0x9a, 0x4f, 0x92, 0x2c, 0x24, 0xdf, 0x6b, 0x6d, 0x3e, 0x56, 0xce, 0xd1, 0x5f, - 0x0f, 0x5b, 0xad, 0xa7, 0x8a, 0x44, 0x72, 0x90, 0x7a, 0xf8, 0x95, 0xbd, 0xc6, 0xae, 0x22, 0x93, - 0x22, 0xe4, 0x9b, 0x9b, 0xdb, 0x1b, 0x0d, 0x63, 0xc7, 0xd8, 0xdc, 0xde, 0x53, 0x12, 0xb4, 0xad, - 0xf9, 0xb4, 0xf5, 0x60, 0x4f, 0x49, 0x92, 0x0c, 0x24, 0x68, 0x5d, 0x8a, 0x00, 0xa4, 0x77, 0xf7, - 0x8c, 0xcd, 0xed, 0x0d, 0x25, 0x4d, 0xad, 0xec, 0x6d, 0x6e, 0x35, 0x94, 0x0c, 0x45, 0xee, 0xbd, - 0xbb, 0xf3, 0xb4, 0xa1, 0x64, 0xe9, 0xcf, 0x07, 0x86, 0xf1, 0xe0, 0x2b, 0x4a, 0x8e, 0x92, 0xb6, - 0x1e, 0xec, 0x28, 0x80, 0xcd, 0x0f, 0x1e, 0x3e, 0x6d, 0x28, 0x79, 0x52, 0x80, 0x6c, 0xf3, 0xdd, - 0xed, 0x47, 0x7b, 0x9b, 0xad, 0x6d, 0xa5, 0x50, 0x3e, 0x81, 0x12, 0x5b, 0xe6, 0xc0, 0x2a, 0xb2, - 0xa4, 0xf0, 0x1d, 0x48, 0xb1, 0x9d, 0x91, 0x50, 0x25, 0x95, 0xf0, 0xce, 0x4c, 0x53, 0x56, 0xd8, - 0x1e, 0x31, 0xda, 0xd2, 0x65, 0x48, 0xb1, 0x55, 0x5a, 0x84, 0x14, 0x5b, 0x1d, 0x19, 0x53, 0x45, - 0x56, 0x28, 0xff, 0x96, 0x0c, 0xb0, 0x61, 0xef, 0x3e, 0xef, 0x8f, 0x30, 0x21, 0xbf, 0x0c, 0x30, - 0x79, 0xde, 0x1f, 0xb5, 0x51, 0xf5, 0x3c, 0xa9, 0xcc, 0xd1, 0x1a, 0xf4, 0x77, 0xe4, 0x1a, 0x14, - 0xb0, 0xf9, 0x90, 0x79, 0x21, 0xcc, 0x25, 0x33, 0x46, 0x9e, 0xd6, 0x71, 0xc7, 0x14, 0x84, 0xd4, - 0x74, 0x4c, 0x21, 0xd3, 0x02, 0xa4, 0xa6, 0x93, 0xab, 0x80, 0xc5, 0xf6, 0x04, 0x23, 0x0a, 0xa6, - 0x8d, 0x39, 0x03, 0xfb, 0x65, 0x31, 0x86, 0xbc, 0x0d, 0xd8, 0x27, 0x9b, 0x77, 0x71, 0xfa, 0x74, - 0xb8, 0xc3, 0x5d, 0xa1, 0x3f, 0xd8, 0x6c, 0x7d, 0xc2, 0x52, 0x0b, 0x72, 0x5e, 0x3d, 0xed, 0x0b, - 0x6b, 0xf9, 0x8c, 0x14, 0x9c, 0x11, 0x60, 0x95, 0x37, 0x25, 0x06, 0xe0, 0xa3, 0x59, 0xc0, 0xd1, - 0x30, 0x12, 0x1b, 0x4e, 0xf9, 0x32, 0xcc, 0x6d, 0xdb, 0x16, 0x3b, 0xbd, 0xb8, 0x4a, 0x05, 0x90, - 0x3a, 0x25, 0x09, 0xb3, 0x27, 0xa9, 0x53, 0xbe, 0x02, 0x20, 0xb4, 0x29, 0x20, 0xed, 0xb3, 0x36, - 0xf4, 0x01, 0xd2, 0x7e, 0xf9, 0x26, 0xa4, 0xb7, 0x3a, 0xc7, 0x7b, 0x9d, 0x1e, 0xb9, 0x06, 0x30, - 0xe8, 0x4c, 0x9c, 0xf6, 0x21, 0xee, 0xc3, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c, - 0xad, 0x65, 0xfb, 0xf1, 0x02, 0xa0, 0x35, 0xe8, 0x6e, 0x99, 0x93, 0x49, 0xa7, 0x67, 0x92, 0x2a, - 0xa4, 0x2d, 0x73, 0x42, 0xa3, 0x9d, 0x84, 0xef, 0x08, 0xcb, 0xfe, 0x2a, 0xf8, 0xa8, 0x95, 0x6d, - 0x84, 0x18, 0x1c, 0x4a, 0x14, 0x48, 0x58, 0x47, 0x43, 0x7c, 0x27, 0x49, 0x19, 0xf4, 0xe7, 0xd2, - 0x25, 0x48, 0x33, 0x0c, 0x21, 0x90, 0xb4, 0x3a, 0x43, 0xb3, 0xc4, 0xfa, 0xc5, 0xdf, 0xe5, 0x5f, - 0x95, 0x00, 0xb6, 0xcd, 0x97, 0x67, 0xe8, 0xd3, 0x47, 0xc5, 0xf4, 0x99, 0x60, 0x7d, 0xde, 0x8f, - 0xeb, 0x93, 0xea, 0xec, 0xd0, 0xb6, 0xbb, 0x6d, 0xb6, 0xc5, 0xec, 0x49, 0x27, 0x47, 0x6b, 0x70, - 0xd7, 0xca, 0x1f, 0x40, 0x61, 0xd3, 0xb2, 0xcc, 0xb1, 0x3b, 0x26, 0x02, 0xc9, 0x67, 0xf6, 0xc4, - 0xe1, 0x6f, 0x4b, 0xf8, 0x9b, 0x94, 0x20, 0x39, 0xb2, 0xc7, 0x0e, 0x9b, 0x67, 0x3d, 0xa9, 0xaf, - 0xae, 0xae, 0x1a, 0x58, 0x43, 0x2e, 0x41, 0xee, 0xc0, 0xb6, 0x2c, 0xf3, 0x80, 0x4e, 0x22, 0x81, - 0x69, 0x8d, 0x5f, 0x51, 0xfe, 0x65, 0x09, 0x0a, 0x2d, 0xe7, 0x99, 0x6f, 0x5c, 0x81, 0xc4, 0x73, - 0xf3, 0x04, 0x87, 0x97, 0x30, 0xe8, 0x4f, 0x7a, 0x54, 0x7e, 0xbe, 0x33, 0x38, 0x62, 0x6f, 0x4d, - 0x05, 0x83, 0x15, 0xc8, 0x05, 0x48, 0xbf, 0x34, 0xfb, 0xbd, 0x67, 0x0e, 0xda, 0x94, 0x0d, 0x5e, - 0x22, 0xb7, 0x20, 0xd5, 0xa7, 0x83, 0x2d, 0x25, 0x71, 0xbd, 0x2e, 0xf8, 0xeb, 0x25, 0xce, 0xc1, - 0x60, 0xa0, 0x1b, 0xd9, 0x6c, 0x57, 0xf9, 0xe8, 0xa3, 0x8f, 0x3e, 0x92, 0xcb, 0x87, 0xb0, 0xe8, - 0x1e, 0xde, 0xc0, 0x64, 0xb7, 0xa1, 0x34, 0x30, 0xed, 0xf6, 0x61, 0xdf, 0xea, 0x0c, 0x06, 0x27, - 0xed, 0x97, 0xb6, 0xd5, 0xee, 0x58, 0x6d, 0x7b, 0x72, 0xd0, 0x19, 0xe3, 0x02, 0x44, 0x77, 0xb1, - 0x38, 0x30, 0xed, 0x26, 0xa3, 0xbd, 0x6f, 0x5b, 0x0f, 0xac, 0x16, 0xe5, 0x94, 0xff, 0x20, 0x09, - 0xb9, 0xad, 0x13, 0xd7, 0xfa, 0x22, 0xa4, 0x0e, 0xec, 0x23, 0x8b, 0xad, 0x65, 0xca, 0x60, 0x05, - 0x6f, 0x8f, 0x64, 0x61, 0x8f, 0x16, 0x21, 0xf5, 0xe2, 0xc8, 0x76, 0x4c, 0x9c, 0x6e, 0xce, 0x60, - 0x05, 0xba, 0x5a, 0x23, 0xd3, 0x29, 0x25, 0x31, 0xb9, 0xa5, 0x3f, 0xfd, 0xf9, 0xa7, 0xce, 0x30, - 0x7f, 0xb2, 0x02, 0x69, 0x9b, 0xae, 0xfe, 0xa4, 0x94, 0xc6, 0x77, 0x35, 0x01, 0x2e, 0xee, 0x8a, - 0xc1, 0x51, 0x64, 0x13, 0x16, 0x5e, 0x9a, 0xed, 0xe1, 0xd1, 0xc4, 0x69, 0xf7, 0xec, 0x76, 0xd7, - 0x34, 0x47, 0xe6, 0xb8, 0x34, 0x87, 0x3d, 0x09, 0x3e, 0x61, 0xd6, 0x42, 0x1a, 0xf3, 0x2f, 0xcd, - 0xad, 0xa3, 0x89, 0xb3, 0x61, 0x3f, 0x46, 0x16, 0xa9, 0x42, 0x6e, 0x6c, 0x52, 0x4f, 0x40, 0x07, - 0x5b, 0x08, 0xf7, 0x1e, 0xa0, 0x66, 0xc7, 0xe6, 0x08, 0x2b, 0xc8, 0x3a, 0x64, 0xf7, 0xfb, 0xcf, - 0xcd, 0xc9, 0x33, 0xb3, 0x5b, 0xca, 0xa8, 0x52, 0x65, 0x5e, 0xbb, 0xe8, 0x73, 0xbc, 0x65, 0x5d, - 0x79, 0x64, 0x0f, 0xec, 0xb1, 0xe1, 0x41, 0xc9, 0x7d, 0xc8, 0x4d, 0xec, 0xa1, 0xc9, 0xf4, 0x9d, - 0xc5, 0xa0, 0x7a, 0x79, 0x16, 0x6f, 0xd7, 0x1e, 0x9a, 0xae, 0x07, 0x73, 0xf1, 0x64, 0x99, 0x0d, - 0x74, 0x9f, 0x5e, 0x9d, 0x4b, 0x80, 0x4f, 0x03, 0x74, 0x40, 0x78, 0x95, 0x26, 0x4b, 0x74, 0x40, - 0xbd, 0x43, 0x7a, 0x23, 0x2a, 0xe5, 0x31, 0xaf, 0xf4, 0xca, 0x4b, 0xb7, 0x20, 0xe7, 0x19, 0xf4, - 0x5d, 0x1f, 0x73, 0x37, 0x39, 0xf4, 0x07, 0xcc, 0xf5, 0x31, 0x5f, 0xf3, 0x06, 0xa4, 0x70, 0xd8, - 0x34, 0x42, 0x19, 0x0d, 0x1a, 0x10, 0x73, 0x90, 0xda, 0x30, 0x1a, 0x8d, 0x6d, 0x45, 0xc2, 0xd8, - 0xf8, 0xf4, 0xdd, 0x86, 0x22, 0x0b, 0x8a, 0xfd, 0x6d, 0x09, 0x12, 0x8d, 0x63, 0x54, 0x0b, 0x9d, - 0x86, 0x7b, 0xa2, 0xe9, 0x6f, 0xad, 0x06, 0xc9, 0xa1, 0x3d, 0x36, 0xc9, 0xf9, 0x19, 0xb3, 0x2c, - 0xf5, 0x70, 0xbf, 0x84, 0x57, 0xe4, 0xc6, 0xb1, 0x63, 0x20, 0x5e, 0x7b, 0x0b, 0x92, 0x8e, 0x79, - 0xec, 0xcc, 0xe6, 0x3d, 0x63, 0x1d, 0x50, 0x80, 0x76, 0x13, 0xd2, 0xd6, 0xd1, 0x70, 0xdf, 0x1c, - 0xcf, 0x86, 0xf6, 0x71, 0x7a, 0x1c, 0x52, 0x7e, 0x0f, 0x94, 0x47, 0xf6, 0x70, 0x34, 0x30, 0x8f, - 0x1b, 0xc7, 0x8e, 0x69, 0x4d, 0xfa, 0xb6, 0x45, 0xf5, 0x7c, 0xd8, 0x1f, 0xa3, 0x17, 0xc1, 0xb7, - 0x62, 0x2c, 0xd0, 0x53, 0x3d, 0x31, 0x0f, 0x6c, 0xab, 0xcb, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3, - 0xac, 0x3f, 0xa6, 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x40, 0x91, 0xe7, 0x18, 0x13, 0xde, - 0x71, 0xf9, 0x06, 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x52, 0xce, - 0xd1, 0x65, 0x6d, 0x6d, 0x37, 0x14, 0x89, 0xfe, 0xd8, 0x7b, 0xbf, 0x15, 0x58, 0xca, 0x4b, 0x50, - 0xf0, 0xc6, 0xbe, 0x6b, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52, - 0x8d, 0xe1, 0xc8, 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90, - 0x19, 0xf2, 0xf9, 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa, - 0x42, 0x46, 0xf0, 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2, - 0x16, 0x64, 0x58, 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab, - 0x63, 0x17, 0x95, 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf, - 0x9f, 0x82, 0xac, 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a, - 0x33, 0x32, 0xb2, 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e, - 0xaf, 0xb1, 0xa6, 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e, - 0x85, 0xfe, 0x98, 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7, - 0xcf, 0x36, 0xfd, 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff, - 0xf1, 0x01, 0x35, 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62, - 0xce, 0x82, 0x47, 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0, - 0xb9, 0xf4, 0xf3, 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4, - 0x3c, 0xc3, 0x93, 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b, - 0xc0, 0xc9, 0x15, 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc, - 0xb2, 0x79, 0x89, 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e, - 0xb0, 0xe4, 0x0b, 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x26, 0x9e, 0x86, - 0x25, 0xca, 0xdb, 0xe9, 0x5b, 0x87, 0xa5, 0x22, 0xae, 0x44, 0xa2, 0x6f, 0x1d, 0x1a, 0xa9, 0x26, - 0xad, 0x61, 0x1a, 0xd8, 0xa6, 0x6d, 0x0a, 0xb6, 0x25, 0x6f, 0xb3, 0x46, 0x5a, 0x45, 0x4a, 0x90, - 0x6a, 0xb6, 0xb7, 0x3b, 0x56, 0x69, 0x81, 0xf1, 0xac, 0x8e, 0x65, 0x24, 0x9b, 0xdb, 0x1d, 0x8b, - 0xbc, 0x05, 0x89, 0xc9, 0xd1, 0x7e, 0x89, 0x84, 0xbf, 0xac, 0xec, 0x1e, 0xed, 0xbb, 0x43, 0x31, - 0x28, 0x82, 0x2c, 0x43, 0x76, 0xe2, 0x8c, 0xdb, 0xbf, 0x60, 0x8e, 0xed, 0xd2, 0x79, 0x5c, 0xc2, - 0x73, 0x46, 0x66, 0xe2, 0x8c, 0x3f, 0x30, 0xc7, 0xf6, 0x19, 0x9d, 0x5f, 0xf9, 0x0a, 0xe4, 0x05, - 0xbb, 0xa4, 0x08, 0x92, 0xc5, 0x6e, 0x0a, 0x75, 0xe9, 0x8e, 0x21, 0x59, 0xe5, 0x3d, 0x28, 0xb8, - 0x39, 0x0c, 0xce, 0x57, 0xa3, 0x27, 0x69, 0x60, 0x8f, 0xf1, 0x7c, 0xce, 0x6b, 0x97, 0xc4, 0x10, - 0xe5, 0xc3, 0x78, 0xb8, 0x60, 0xd0, 0xb2, 0x12, 0x1a, 0x8a, 0x54, 0xfe, 0xa1, 0x04, 0x85, 0x2d, - 0x7b, 0xec, 0x3f, 0x30, 0x2f, 0x42, 0x6a, 0xdf, 0xb6, 0x07, 0x13, 0x34, 0x9b, 0x35, 0x58, 0x81, - 0xbc, 0x01, 0x05, 0xfc, 0xe1, 0xe6, 0x9e, 0xb2, 0xf7, 0xb4, 0x91, 0xc7, 0x7a, 0x9e, 0x70, 0x12, - 0x48, 0xf6, 0x2d, 0x67, 0xc2, 0x3d, 0x19, 0xfe, 0x26, 0x5f, 0x80, 0x3c, 0xfd, 0xeb, 0x32, 0x93, - 0xde, 0x85, 0x15, 0x68, 0x35, 0x27, 0xbe, 0x05, 0x73, 0xb8, 0xfb, 0x1e, 0x2c, 0xe3, 0x3d, 0x63, - 0x14, 0x58, 0x03, 0x07, 0x96, 0x20, 0xc3, 0x5c, 0xc1, 0x04, 0xbf, 0x96, 0xe5, 0x0c, 0xb7, 0x48, - 0xdd, 0x2b, 0x66, 0x02, 0x2c, 0xdc, 0x67, 0x0c, 0x5e, 0x2a, 0x3f, 0x80, 0x2c, 0x46, 0xa9, 0xd6, - 0xa0, 0x4b, 0xca, 0x20, 0xf5, 0x4a, 0x26, 0xc6, 0xc8, 0x45, 0xe1, 0x9a, 0xcf, 0x9b, 0x57, 0x36, - 0x0c, 0xa9, 0xb7, 0xb4, 0x00, 0xd2, 0x06, 0xbd, 0x77, 0x1f, 0x73, 0x37, 0x2d, 0x1d, 0x97, 0x5b, - 0xdc, 0xc4, 0xb6, 0xf9, 0x32, 0xce, 0xc4, 0xb6, 0xf9, 0x92, 0x99, 0xb8, 0x3a, 0x65, 0x82, 0x96, - 0x4e, 0xf8, 0xa7, 0x43, 0xe9, 0xa4, 0x5c, 0x85, 0x39, 0x3c, 0x9e, 0x7d, 0xab, 0xb7, 0x63, 0xf7, - 0x2d, 0xbc, 0xe7, 0x1f, 0xe2, 0x3d, 0x49, 0x32, 0xa4, 0x43, 0xba, 0x07, 0xe6, 0x71, 0xe7, 0x80, - 0xdd, 0x38, 0xb3, 0x06, 0x2b, 0x94, 0x3f, 0x4b, 0xc2, 0x3c, 0x77, 0xad, 0xef, 0xf7, 0x9d, 0x67, - 0x5b, 0x9d, 0x11, 0x79, 0x0a, 0x05, 0xea, 0x55, 0xdb, 0xc3, 0xce, 0x68, 0x44, 0x8f, 0xaf, 0x84, - 0x57, 0x8d, 0xeb, 0x53, 0xae, 0x9a, 0xe3, 0x57, 0xb6, 0x3b, 0x43, 0x73, 0x8b, 0x61, 0x1b, 0x96, - 0x33, 0x3e, 0x31, 0xf2, 0x96, 0x5f, 0x43, 0x36, 0x21, 0x3f, 0x9c, 0xf4, 0x3c, 0x63, 0x32, 0x1a, - 0xab, 0x44, 0x1a, 0xdb, 0x9a, 0xf4, 0x02, 0xb6, 0x60, 0xe8, 0x55, 0xd0, 0x81, 0x51, 0x7f, 0xec, - 0xd9, 0x4a, 0x9c, 0x32, 0x30, 0xea, 0x3a, 0x82, 0x03, 0xdb, 0xf7, 0x6b, 0xc8, 0x63, 0x00, 0x7a, - 0xbc, 0x1c, 0x9b, 0xa6, 0x4e, 0xa8, 0xa0, 0xbc, 0xf6, 0x66, 0xa4, 0xad, 0x5d, 0x67, 0xbc, 0x67, - 0xef, 0x3a, 0x63, 0x66, 0x88, 0x1e, 0x4c, 0x2c, 0x2e, 0xbd, 0x03, 0x4a, 0x78, 0xfe, 0xe2, 0x8d, - 0x3c, 0x35, 0xe3, 0x46, 0x9e, 0xe3, 0x37, 0xf2, 0xba, 0x7c, 0x57, 0x5a, 0x7a, 0x0f, 0x8a, 0xa1, - 0x29, 0x8b, 0x74, 0xc2, 0xe8, 0xb7, 0x45, 0x7a, 0x5e, 0x7b, 0x5d, 0xf8, 0x9c, 0x2d, 0x6e, 0xb8, - 0x68, 0xf7, 0x1d, 0x50, 0xc2, 0xd3, 0x17, 0x0d, 0x67, 0x63, 0x32, 0x05, 0xe4, 0xdf, 0x87, 0xb9, - 0xc0, 0x94, 0x45, 0x72, 0xee, 0x94, 0x49, 0x95, 0x7f, 0x29, 0x05, 0xa9, 0x96, 0x65, 0xda, 0x87, - 0xe4, 0xf5, 0x60, 0x9c, 0x7c, 0x72, 0xce, 0x8d, 0x91, 0x17, 0x43, 0x31, 0xf2, 0xc9, 0x39, 0x2f, - 0x42, 0x5e, 0x0c, 0x45, 0x48, 0xb7, 0xa9, 0xa6, 0x93, 0xcb, 0x53, 0xf1, 0xf1, 0xc9, 0x39, 0x21, - 0x38, 0x5e, 0x9e, 0x0a, 0x8e, 0x7e, 0x73, 0x4d, 0xa7, 0x0e, 0x35, 0x18, 0x19, 0x9f, 0x9c, 0xf3, - 0xa3, 0xe2, 0x72, 0x38, 0x2a, 0x7a, 0x8d, 0x35, 0x9d, 0x0d, 0x49, 0x88, 0x88, 0x38, 0x24, 0x16, - 0x0b, 0x97, 0xc3, 0xb1, 0x10, 0x79, 0x3c, 0x0a, 0x2e, 0x87, 0xa3, 0x20, 0x36, 0xf2, 0xa8, 0x77, - 0x31, 0x14, 0xf5, 0xd0, 0x28, 0x0b, 0x77, 0xcb, 0xe1, 0x70, 0xc7, 0x78, 0xc2, 0x48, 0xc5, 0x58, - 0xe7, 0x35, 0xd6, 0x74, 0xa2, 0x85, 0x02, 0x5d, 0xf4, 0x6d, 0x1f, 0xf7, 0x02, 0x9d, 0xbe, 0x4e, - 0x97, 0xcd, 0xbd, 0x88, 0x16, 0x63, 0xbe, 0xf8, 0xe3, 0x6a, 0xba, 0x17, 0x31, 0x0d, 0x32, 0x87, - 0x3c, 0x01, 0x56, 0xd0, 0x73, 0x09, 0xb2, 0xc4, 0xcd, 0x5f, 0x69, 0xb6, 0xd1, 0x83, 0xd1, 0x79, - 0x1d, 0xb2, 0x3b, 0x7d, 0x05, 0xe6, 0x9a, 0xed, 0xa7, 0x9d, 0x71, 0xcf, 0x9c, 0x38, 0xed, 0xbd, - 0x4e, 0xcf, 0x7b, 0x44, 0xa0, 0xfb, 0x9f, 0x6f, 0xf2, 0x96, 0xbd, 0x4e, 0x8f, 0x5c, 0x70, 0xc5, - 0xd5, 0xc5, 0x56, 0x89, 0xcb, 0x6b, 0xe9, 0x75, 0xba, 0x68, 0xcc, 0x18, 0xfa, 0xc2, 0x05, 0xee, - 0x0b, 0x1f, 0x66, 0x20, 0x75, 0x64, 0xf5, 0x6d, 0xeb, 0x61, 0x0e, 0x32, 0x8e, 0x3d, 0x1e, 0x76, - 0x1c, 0xbb, 0xfc, 0x23, 0x09, 0xe0, 0x91, 0x3d, 0x1c, 0x1e, 0x59, 0xfd, 0x17, 0x47, 0x26, 0xb9, - 0x02, 0xf9, 0x61, 0xe7, 0xb9, 0xd9, 0x1e, 0x9a, 0xed, 0x83, 0xb1, 0x7b, 0x0e, 0x72, 0xb4, 0x6a, - 0xcb, 0x7c, 0x34, 0x3e, 0x21, 0x25, 0xf7, 0x8a, 0x8e, 0xda, 0x41, 0x49, 0xf2, 0x2b, 0xfb, 0x22, - 0xbf, 0x74, 0xa6, 0xf9, 0x1e, 0xba, 0xd7, 0x4e, 0x96, 0x47, 0x64, 0xf8, 0xee, 0x61, 0x89, 0x4a, - 0xde, 0x31, 0x87, 0xa3, 0xf6, 0x01, 0x4a, 0x85, 0xca, 0x21, 0x45, 0xcb, 0x8f, 0xc8, 0x6d, 0x48, - 0x1c, 0xd8, 0x03, 0x14, 0xc9, 0x29, 0xfb, 0x42, 0x71, 0xe4, 0x0d, 0x48, 0x0c, 0x27, 0x4c, 0x36, - 0x79, 0x6d, 0x41, 0xb8, 0x27, 0xb0, 0xd0, 0x44, 0x61, 0xc3, 0x49, 0xcf, 0x9b, 0xf7, 0x8d, 0x22, - 0x24, 0x9a, 0xad, 0x16, 0x8d, 0xfd, 0xcd, 0x56, 0x6b, 0x4d, 0x91, 0xea, 0x5f, 0x82, 0x6c, 0x6f, - 0x6c, 0x9a, 0xd4, 0x3d, 0xcc, 0xce, 0x39, 0x3e, 0xc4, 0x58, 0xe7, 0x81, 0xea, 0x5b, 0x90, 0x39, - 0x60, 0x59, 0x07, 0x89, 0x48, 0x6b, 0x4b, 0x7f, 0xc8, 0x1e, 0x55, 0x96, 0xfc, 0xe6, 0x70, 0x9e, - 0x62, 0xb8, 0x36, 0xea, 0x3b, 0x90, 0x1b, 0xb7, 0x4f, 0x33, 0xf8, 0x31, 0x8b, 0x2e, 0x71, 0x06, - 0xb3, 0x63, 0x5e, 0x55, 0x6f, 0xc0, 0x82, 0x65, 0xbb, 0xdf, 0x50, 0xda, 0x5d, 0x76, 0xc6, 0x2e, - 0x4e, 0x5f, 0xe5, 0x5c, 0xe3, 0x26, 0xfb, 0x6e, 0x69, 0xd9, 0xbc, 0x81, 0x9d, 0xca, 0xfa, 0x23, - 0x50, 0x04, 0x33, 0x98, 0x7a, 0xc6, 0x59, 0x39, 0x64, 0x1f, 0x4a, 0x3d, 0x2b, 0x78, 0xee, 0x43, - 0x46, 0xd8, 0xc9, 0x8c, 0x31, 0xd2, 0x63, 0x5f, 0x9d, 0x3d, 0x23, 0xe8, 0xea, 0xa6, 0x8d, 0x50, - 0x5f, 0x13, 0x6d, 0xe4, 0x19, 0xfb, 0x20, 0x2d, 0x1a, 0xa9, 0xe9, 0xa1, 0x55, 0x39, 0x3a, 0x75, - 0x28, 0x7d, 0xf6, 0x3d, 0xd9, 0xb3, 0xc2, 0x1c, 0xe0, 0x0c, 0x33, 0xf1, 0x83, 0xf9, 0x90, 0x7d, - 0x6a, 0x0e, 0x98, 0x99, 0x1a, 0xcd, 0xe4, 0xd4, 0xd1, 0x3c, 0x67, 0xdf, 0x75, 0x3d, 0x33, 0xbb, - 0xb3, 0x46, 0x33, 0x39, 0x75, 0x34, 0x03, 0xf6, 0xc5, 0x37, 0x60, 0xa6, 0xa6, 0xd7, 0x37, 0x80, - 0x88, 0x5b, 0xcd, 0xe3, 0x44, 0x8c, 0x9d, 0x21, 0xfb, 0x8e, 0xef, 0x6f, 0x36, 0xa3, 0xcc, 0x32, - 0x14, 0x3f, 0x20, 0x8b, 0x7d, 0xe2, 0x0f, 0x1a, 0xaa, 0xe9, 0xf5, 0x4d, 0x38, 0x2f, 0x4e, 0xec, - 0x0c, 0x43, 0xb2, 0x55, 0xa9, 0x52, 0x34, 0x16, 0xfc, 0xa9, 0x71, 0xce, 0x4c, 0x53, 0xf1, 0x83, - 0x1a, 0xa9, 0x52, 0x45, 0x99, 0x32, 0x55, 0xd3, 0xeb, 0x0f, 0xa0, 0x28, 0x98, 0xda, 0xc7, 0x08, - 0x1d, 0x6d, 0xe6, 0x05, 0xfb, 0x5f, 0x0b, 0xcf, 0x0c, 0x8d, 0xe8, 0xe1, 0x1d, 0xe3, 0x31, 0x2e, - 0xda, 0xc8, 0x98, 0xfd, 0xa3, 0x80, 0x3f, 0x16, 0x64, 0x84, 0x8e, 0x04, 0xe6, 0xdf, 0x71, 0x56, - 0x26, 0xec, 0x5f, 0x08, 0xfc, 0xa1, 0x50, 0x42, 0xbd, 0x1f, 0x98, 0x8e, 0x49, 0x83, 0x5c, 0x8c, - 0x0d, 0x07, 0x3d, 0xf2, 0x9b, 0x91, 0x80, 0x15, 0xf1, 0x81, 0x44, 0x98, 0x36, 0x2d, 0xd6, 0x37, - 0x61, 0xfe, 0xec, 0x0e, 0xe9, 0x63, 0x89, 0x65, 0xcb, 0xd5, 0x15, 0x9a, 0x50, 0x1b, 0x73, 0xdd, - 0x80, 0x5f, 0x6a, 0xc0, 0xdc, 0x99, 0x9d, 0xd2, 0x27, 0x12, 0xcb, 0x39, 0xa9, 0x25, 0xa3, 0xd0, - 0x0d, 0x7a, 0xa6, 0xb9, 0x33, 0xbb, 0xa5, 0x4f, 0x25, 0xf6, 0x40, 0xa1, 0x6b, 0x9e, 0x11, 0xd7, - 0x33, 0xcd, 0x9d, 0xd9, 0x2d, 0x7d, 0x95, 0x65, 0x94, 0xb2, 0x5e, 0x15, 0x8d, 0xa0, 0x2f, 0x98, - 0x3f, 0xbb, 0x5b, 0xfa, 0x9a, 0x84, 0x8f, 0x15, 0xb2, 0xae, 0x7b, 0xeb, 0xe2, 0x79, 0xa6, 0xf9, - 0xb3, 0xbb, 0xa5, 0xaf, 0x4b, 0xf8, 0xa4, 0x21, 0xeb, 0xeb, 0x01, 0x33, 0xc1, 0xd1, 0x9c, 0xee, - 0x96, 0xbe, 0x21, 0xe1, 0x2b, 0x83, 0xac, 0xd7, 0x3c, 0x33, 0xbb, 0x53, 0xa3, 0x39, 0xdd, 0x2d, - 0x7d, 0x13, 0x6f, 0xf1, 0x75, 0x59, 0xbf, 0x13, 0x30, 0x83, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9, - 0x5b, 0x12, 0x3e, 0x06, 0xc9, 0xfa, 0x5d, 0xc3, 0xed, 0xdd, 0xf7, 0x4c, 0xc5, 0x57, 0x70, 0x4b, - 0x9f, 0x49, 0xf8, 0x66, 0x24, 0xeb, 0xf7, 0x82, 0x86, 0xd0, 0x33, 0x29, 0xaf, 0xe2, 0x96, 0xbe, - 0x4d, 0x2d, 0x15, 0xeb, 0xf2, 0xfa, 0xaa, 0xe1, 0x0e, 0x40, 0xf0, 0x4c, 0xca, 0xab, 0xb8, 0xa5, - 0xef, 0x50, 0x53, 0x4a, 0x5d, 0x5e, 0x5f, 0x0b, 0x99, 0xaa, 0xe9, 0xf5, 0x47, 0x50, 0x38, 0xab, - 0x5b, 0xfa, 0xae, 0xf8, 0x16, 0x97, 0xef, 0x0a, 0xbe, 0x69, 0x47, 0xd8, 0xb3, 0x53, 0x1d, 0xd3, - 0xf7, 0x30, 0xc7, 0xa9, 0xcf, 0x3d, 0x61, 0xef, 0x55, 0x8c, 0xe0, 0x6f, 0x1f, 0x73, 0x53, 0x5b, - 0xfe, 0xf9, 0x38, 0xd5, 0x47, 0x7d, 0x5f, 0xc2, 0x47, 0xad, 0x02, 0x37, 0x88, 0x78, 0xef, 0xa4, - 0x30, 0x87, 0xf5, 0xa1, 0x3f, 0xcb, 0xd3, 0xbc, 0xd5, 0x0f, 0xa4, 0x57, 0x71, 0x57, 0xf5, 0x44, - 0x6b, 0xbb, 0xe1, 0x2d, 0x06, 0xd6, 0xbc, 0x0d, 0xc9, 0x63, 0x6d, 0x75, 0x4d, 0xbc, 0x92, 0x89, - 0x6f, 0xb9, 0xcc, 0x49, 0xe5, 0xb5, 0xa2, 0xf0, 0xdc, 0x3d, 0x1c, 0x39, 0x27, 0x06, 0xb2, 0x38, - 0x5b, 0x8b, 0x64, 0x7f, 0x12, 0xc3, 0xd6, 0x38, 0xbb, 0x1a, 0xc9, 0xfe, 0x34, 0x86, 0x5d, 0xe5, - 0x6c, 0x3d, 0x92, 0xfd, 0xd5, 0x18, 0xb6, 0xce, 0xd9, 0xeb, 0x91, 0xec, 0xaf, 0xc5, 0xb0, 0xd7, - 0x39, 0xbb, 0x16, 0xc9, 0xfe, 0x7a, 0x0c, 0xbb, 0xc6, 0xd9, 0x77, 0x22, 0xd9, 0xdf, 0x88, 0x61, - 0xdf, 0xe1, 0xec, 0xbb, 0x91, 0xec, 0x6f, 0xc6, 0xb0, 0xef, 0x72, 0xf6, 0xbd, 0x48, 0xf6, 0xb7, - 0x62, 0xd8, 0xf7, 0x18, 0x7b, 0x6d, 0x35, 0x92, 0xfd, 0x59, 0x34, 0x7b, 0x6d, 0x95, 0xb3, 0xa3, - 0xb5, 0xf6, 0xed, 0x18, 0x36, 0xd7, 0xda, 0x5a, 0xb4, 0xd6, 0xbe, 0x13, 0xc3, 0xe6, 0x5a, 0x5b, - 0x8b, 0xd6, 0xda, 0x77, 0x63, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x5e, 0x0c, 0x9b, 0x6b, - 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8f, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x07, 0x31, 0x6c, - 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x51, 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0x7f, 0x1c, - 0xc3, 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x9f, 0xc4, 0xb0, 0xb9, 0xd6, 0xb4, 0x68, 0xad, 0xfd, - 0x69, 0x34, 0x5b, 0xe3, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x67, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, - 0x6b, 0x7f, 0x1e, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0xc3, 0x18, 0x36, 0xd7, 0x9a, 0x16, - 0xad, 0xb5, 0xbf, 0x88, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xcb, 0x18, 0x36, 0xd7, 0x9a, - 0x16, 0xad, 0xb5, 0xbf, 0x8a, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xeb, 0x18, 0x36, 0xd7, - 0x9a, 0x16, 0xad, 0xb5, 0xbf, 0x89, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xdb, 0x18, 0x36, - 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0x7f, 0x17, 0xcd, 0xae, 0x72, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xf7, - 0x31, 0x6c, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x21, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, - 0x3f, 0xc6, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0x51, 0x0c, 0x9b, 0x6b, 0xad, 0x1a, 0xad, - 0xb5, 0x7f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xcf, 0x31, 0x6c, 0xae, 0xb5, 0x6a, - 0xb4, 0xd6, 0xfe, 0x25, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc6, 0xb0, 0xb9, 0xd6, - 0xaa, 0xd1, 0x5a, 0xfb, 0xb7, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0x7f, 0x8f, 0x66, 0xeb, - 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x23, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0x3f, 0x63, - 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x2b, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0xbf, - 0x63, 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x27, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, - 0xc7, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0x3f, 0x89, 0x61, 0x73, 0xad, 0xe9, 0xd1, 0x5a, - 0xfb, 0xdf, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0xff, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x47, - 0x6b, 0xed, 0xff, 0xa3, 0xd9, 0xeb, 0xab, 0x3f, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xcd, - 0x32, 0x57, 0x39, 0x00, 0x00, + 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0xda, + 0x4e, 0xbb, 0x7c, 0x1d, 0xd2, 0x9b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0xe8, 0xda, 0x76, + 0x49, 0x52, 0xe5, 0xca, 0xbc, 0x36, 0xb7, 0xe2, 0x22, 0x56, 0x36, 0x9a, 0x4d, 0x83, 0xb6, 0x94, + 0xef, 0x40, 0x7e, 0xd3, 0xde, 0x37, 0x27, 0xce, 0x46, 0xdf, 0x1c, 0x74, 0xc8, 0x22, 0xa4, 0x9e, + 0xb6, 0x0f, 0xcc, 0x01, 0x32, 0x72, 0x46, 0x6a, 0x40, 0x0b, 0x84, 0x40, 0x72, 0xff, 0x64, 0x64, + 0x96, 0x64, 0xac, 0x4c, 0x3a, 0x27, 0x23, 0xb3, 0xfc, 0x2b, 0x57, 0x68, 0x27, 0x94, 0x49, 0xae, + 0x43, 0xf2, 0xcb, 0x7d, 0xab, 0xc3, 0x7b, 0x79, 0xcd, 0xef, 0x85, 0xb5, 0xaf, 0x7c, 0x79, 0x6b, + 0xe7, 0xb1, 0x91, 0x7c, 0xde, 0xb7, 0xd0, 0xfe, 0x7e, 0xfb, 0x60, 0x40, 0x4d, 0x49, 0xd4, 0xbe, + 0x43, 0x0b, 0xb4, 0x76, 0xb7, 0x3d, 0x6e, 0x0f, 0x4b, 0x09, 0x55, 0xaa, 0xa4, 0x8c, 0xd4, 0x88, + 0x16, 0xc8, 0x7d, 0x98, 0x33, 0xcc, 0x17, 0x47, 0xfd, 0xb1, 0xd9, 0xc1, 0xc1, 0x95, 0x92, 0xaa, + 0x5c, 0xc9, 0x4f, 0xdb, 0xc7, 0x46, 0x63, 0x6e, 0x2c, 0x62, 0x19, 0x79, 0x64, 0xb6, 0x1d, 0x97, + 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xcd, 0x91, 0xd3, 0xb7, 0xad, 0xf6, 0x80, 0x91, + 0xd3, 0xaa, 0x14, 0x43, 0xb6, 0x45, 0x2c, 0x79, 0x13, 0x8a, 0x1b, 0xad, 0x87, 0xb6, 0x3d, 0x68, + 0xb9, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x97, 0xd6, 0xba, 0x53, 0x22, 0x15, 0x50, + 0x36, 0x5a, 0x5b, 0x96, 0x53, 0xd5, 0x7c, 0x60, 0x5e, 0x95, 0x2b, 0x29, 0x63, 0xbe, 0x8b, 0xd5, + 0x53, 0xc8, 0x9a, 0xee, 0x23, 0x0b, 0xaa, 0x5c, 0x49, 0x30, 0x64, 0x4d, 0xf7, 0x90, 0xb7, 0x80, + 0x6c, 0xb4, 0x36, 0xfa, 0xc7, 0x66, 0x47, 0xb4, 0x3a, 0xa7, 0xca, 0x95, 0x8c, 0xa1, 0x74, 0x79, + 0xc3, 0x0c, 0xb4, 0x68, 0x79, 0x5e, 0x95, 0x2b, 0x69, 0x17, 0x2d, 0xd8, 0xbe, 0x01, 0x0b, 0x1b, + 0xad, 0x77, 0xfb, 0xc1, 0x01, 0x17, 0x55, 0xb9, 0x32, 0x67, 0x14, 0xbb, 0xac, 0x7e, 0x1a, 0x2b, + 0x1a, 0x56, 0x54, 0xb9, 0x92, 0xe4, 0x58, 0xc1, 0x2e, 0xce, 0x6e, 0x63, 0x60, 0xb7, 0x1d, 0x1f, + 0xba, 0xa0, 0xca, 0x15, 0xd9, 0x98, 0xef, 0x62, 0x75, 0xd0, 0xea, 0x63, 0xfb, 0xe8, 0x60, 0x60, + 0xfa, 0x50, 0xa2, 0xca, 0x15, 0xc9, 0x28, 0x76, 0x59, 0x7d, 0x10, 0xbb, 0xe7, 0x8c, 0xfb, 0x56, + 0xcf, 0xc7, 0x9e, 0x47, 0xfd, 0x16, 0xbb, 0xac, 0x3e, 0x38, 0x82, 0x87, 0x27, 0x8e, 0x39, 0xf1, + 0xa1, 0xa6, 0x2a, 0x57, 0x0a, 0xc6, 0x7c, 0x17, 0xab, 0x43, 0x56, 0x43, 0x6b, 0xd0, 0x55, 0xe5, + 0xca, 0x02, 0xb5, 0x3a, 0x63, 0x0d, 0xf6, 0x42, 0x6b, 0xd0, 0x53, 0xe5, 0x0a, 0xe1, 0x58, 0x61, + 0x0d, 0x44, 0xcd, 0x30, 0x21, 0x96, 0x16, 0xd5, 0x84, 0xa0, 0x19, 0x56, 0x19, 0xd4, 0x0c, 0x07, + 0xbe, 0xa6, 0x26, 0x44, 0xcd, 0x84, 0x90, 0xd8, 0x39, 0x47, 0x5e, 0x50, 0x13, 0xa2, 0x66, 0x38, + 0x32, 0xa4, 0x19, 0x8e, 0x7d, 0x5d, 0x4d, 0x04, 0x35, 0x33, 0x85, 0x16, 0x2d, 0x97, 0xd4, 0x44, + 0x50, 0x33, 0x1c, 0x1d, 0xd4, 0x0c, 0x07, 0x5f, 0x54, 0x13, 0x01, 0xcd, 0x84, 0xb1, 0xa2, 0xe1, + 0x25, 0x35, 0x11, 0xd0, 0x8c, 0x38, 0x3b, 0x57, 0x33, 0x1c, 0xba, 0xac, 0x26, 0x44, 0xcd, 0x88, + 0x56, 0x3d, 0xcd, 0x70, 0xe8, 0x25, 0x35, 0x11, 0xd0, 0x8c, 0x88, 0xf5, 0x34, 0xc3, 0xb1, 0x97, + 0xd5, 0x44, 0x40, 0x33, 0x1c, 0x7b, 0x5d, 0xd4, 0x0c, 0x87, 0x7e, 0x2c, 0xa9, 0x09, 0x51, 0x34, + 0x1c, 0x7a, 0x33, 0x20, 0x1a, 0x8e, 0xfd, 0x84, 0x62, 0x45, 0xd5, 0x84, 0xc1, 0xe2, 0x2a, 0x7c, + 0x4a, 0xc1, 0xa2, 0x6c, 0x38, 0xd8, 0x97, 0x8d, 0xeb, 0x82, 0x4a, 0x57, 0x54, 0xc9, 0x93, 0x8d, + 0xeb, 0xc3, 0x44, 0xd9, 0x78, 0xc0, 0xab, 0xe8, 0x6a, 0xb9, 0x6c, 0xa6, 0x90, 0x35, 0xdd, 0x47, + 0xaa, 0xaa, 0xe4, 0xcb, 0xc6, 0x43, 0x06, 0x64, 0xe3, 0x61, 0xaf, 0xa9, 0x92, 0x28, 0x9b, 0x19, + 0x68, 0xd1, 0x72, 0x59, 0x95, 0x44, 0xd9, 0x78, 0x68, 0x51, 0x36, 0x1e, 0xf8, 0x0b, 0xaa, 0x24, + 0xc8, 0x66, 0x1a, 0x2b, 0x1a, 0xfe, 0xa2, 0x2a, 0x09, 0xb2, 0x09, 0xce, 0x8e, 0xc9, 0xc6, 0x83, + 0xbe, 0xa1, 0x4a, 0xbe, 0x6c, 0x82, 0x56, 0xb9, 0x6c, 0x3c, 0xe8, 0x9b, 0xaa, 0x24, 0xc8, 0x26, + 0x88, 0xe5, 0xb2, 0xf1, 0xb0, 0x6f, 0x61, 0x7c, 0x73, 0x65, 0xe3, 0x61, 0x05, 0xd9, 0x78, 0xd0, + 0xdf, 0xa1, 0xb1, 0xd0, 0x93, 0x8d, 0x07, 0x15, 0x65, 0xe3, 0x61, 0x7f, 0x97, 0x62, 0x7d, 0xd9, + 0x4c, 0x83, 0xc5, 0x55, 0xf8, 0x3d, 0x0a, 0xf6, 0x65, 0xe3, 0x81, 0x57, 0x70, 0x10, 0x54, 0x36, + 0x1d, 0xb3, 0xdb, 0x3e, 0x1a, 0x50, 0x89, 0x55, 0xa8, 0x6e, 0xea, 0x49, 0x67, 0x7c, 0x64, 0xd2, + 0x91, 0xd8, 0xf6, 0xe0, 0xb1, 0xdb, 0x46, 0x56, 0xa8, 0x71, 0x26, 0x1f, 0x9f, 0x70, 0x9d, 0xea, + 0xa7, 0x2e, 0x57, 0x35, 0xa3, 0xc8, 0x34, 0x34, 0x8d, 0xaf, 0xe9, 0x02, 0xfe, 0x06, 0x55, 0x51, + 0x5d, 0xae, 0xe9, 0x0c, 0x5f, 0xd3, 0x7d, 0x7c, 0x15, 0xce, 0xfb, 0x52, 0xf2, 0x19, 0x37, 0xa9, + 0x96, 0xea, 0x89, 0xaa, 0xb6, 0x6a, 0x2c, 0xb8, 0x82, 0x9a, 0x45, 0x0a, 0x74, 0x73, 0x8b, 0x4a, + 0xaa, 0x9e, 0xa8, 0xe9, 0x1e, 0x49, 0xec, 0x49, 0xa3, 0x32, 0xe4, 0xc2, 0xf2, 0x39, 0xb7, 0xa9, + 0xb2, 0xea, 0xc9, 0xaa, 0xb6, 0xba, 0x6a, 0x28, 0x5c, 0x5f, 0x33, 0x38, 0x81, 0x7e, 0x56, 0xa8, + 0xc2, 0xea, 0xc9, 0x9a, 0xee, 0x71, 0x82, 0xfd, 0x2c, 0xb8, 0x42, 0xf3, 0x29, 0x5f, 0xa2, 0x4a, + 0xab, 0xa7, 0xab, 0x6b, 0xfa, 0xda, 0xfa, 0x3d, 0xa3, 0xc8, 0x14, 0xe7, 0x73, 0x74, 0xda, 0x0f, + 0x97, 0x9c, 0x4f, 0x5a, 0xa5, 0x9a, 0xab, 0xa7, 0xb5, 0x3b, 0x6b, 0x77, 0xb5, 0xbb, 0x86, 0xc2, + 0xb5, 0xe7, 0xb3, 0xde, 0xa1, 0x2c, 0x2e, 0x3e, 0x9f, 0xb5, 0x46, 0xd5, 0x57, 0x57, 0x9e, 0x99, + 0x83, 0x81, 0x7d, 0x4b, 0x2d, 0xbf, 0xb4, 0xc7, 0x83, 0xce, 0xb5, 0x32, 0x18, 0x0a, 0xd7, 0xa3, + 0xd8, 0xeb, 0x82, 0x2b, 0x48, 0x9f, 0xfe, 0x6b, 0xf4, 0x1e, 0x56, 0xa8, 0x67, 0x1e, 0xf6, 0x7b, + 0x96, 0x3d, 0x31, 0x8d, 0x22, 0x93, 0x66, 0x68, 0x4d, 0xf6, 0xc2, 0xeb, 0xf8, 0xeb, 0x94, 0xb6, + 0x50, 0x4f, 0xdc, 0xae, 0x6a, 0xb4, 0xa7, 0x59, 0xeb, 0xb8, 0x17, 0x5e, 0xc7, 0xdf, 0xa0, 0x1c, + 0x52, 0x4f, 0xdc, 0xae, 0xe9, 0x9c, 0x23, 0xae, 0xe3, 0x1d, 0xb8, 0x10, 0x8a, 0x8b, 0xad, 0x51, + 0xfb, 0xf0, 0xb9, 0xd9, 0x29, 0x69, 0x34, 0x3c, 0x3e, 0x94, 0x15, 0xc9, 0x38, 0x1f, 0x08, 0x91, + 0xbb, 0xd8, 0x4c, 0xee, 0xc1, 0xeb, 0xe1, 0x40, 0xe9, 0x32, 0xab, 0x34, 0x5e, 0x22, 0x73, 0x31, + 0x18, 0x33, 0x43, 0x54, 0xc1, 0x01, 0xbb, 0x54, 0x9d, 0x06, 0x50, 0x9f, 0xea, 0x7b, 0x62, 0x4e, + 0xfd, 0x19, 0xb8, 0x38, 0x1d, 0x4a, 0x5d, 0xf2, 0x3a, 0x8d, 0xa8, 0x48, 0xbe, 0x10, 0x8e, 0xaa, + 0x53, 0xf4, 0x19, 0x7d, 0xd7, 0x68, 0x88, 0x15, 0xe9, 0x53, 0xbd, 0xdf, 0x87, 0xd2, 0x54, 0xb0, + 0x75, 0xd9, 0x77, 0x68, 0xcc, 0x45, 0xf6, 0x6b, 0xa1, 0xb8, 0x1b, 0x26, 0xcf, 0xe8, 0xfa, 0x2e, + 0x0d, 0xc2, 0x02, 0x79, 0xaa, 0x67, 0x5c, 0xb2, 0x60, 0x38, 0x76, 0xb9, 0xf7, 0x68, 0x54, 0xe6, + 0x4b, 0x16, 0x88, 0xcc, 0x62, 0xbf, 0xa1, 0xf8, 0xec, 0x72, 0xeb, 0x34, 0x4c, 0xf3, 0x7e, 0x83, + 0xa1, 0x9a, 0x93, 0xdf, 0xa6, 0xe4, 0xbd, 0xd9, 0x33, 0xfe, 0x71, 0x82, 0x06, 0x58, 0xce, 0xde, + 0x9b, 0x35, 0x65, 0x8f, 0x3d, 0x63, 0xca, 0x3f, 0xa1, 0x6c, 0x22, 0xb0, 0xa7, 0xe6, 0xfc, 0x18, + 0xbc, 0x8c, 0xa3, 0x37, 0xb6, 0x8f, 0x46, 0xa5, 0x0d, 0x55, 0xae, 0x80, 0x76, 0x65, 0x2a, 0xfb, + 0x71, 0x2f, 0x79, 0x9b, 0x14, 0x65, 0x04, 0x49, 0xcc, 0x0a, 0xb3, 0xcb, 0xac, 0xec, 0xaa, 0x89, + 0x08, 0x2b, 0x0c, 0xe5, 0x59, 0x11, 0x48, 0xd4, 0x8a, 0xeb, 0xf4, 0x99, 0x95, 0x0f, 0x54, 0x69, + 0xa6, 0x15, 0x37, 0x04, 0x70, 0x2b, 0x01, 0xd2, 0xd2, 0xba, 0x9f, 0x6f, 0x61, 0x3b, 0xf9, 0x62, + 0x38, 0x01, 0xdb, 0xc4, 0xfb, 0x73, 0x30, 0xd3, 0x62, 0x34, 0x61, 0x70, 0xd3, 0xb4, 0x9f, 0x8d, + 0xa0, 0x05, 0x46, 0x33, 0x4d, 0xfb, 0xb9, 0x19, 0xb4, 0xf2, 0x6f, 0x4a, 0x90, 0xa4, 0xf9, 0x24, + 0xc9, 0x42, 0xf2, 0xbd, 0xe6, 0xd6, 0x63, 0xe5, 0x1c, 0xfd, 0xf5, 0xb0, 0xd9, 0x7c, 0xaa, 0x48, + 0x24, 0x07, 0xa9, 0x87, 0x5f, 0xd9, 0x6f, 0xec, 0x29, 0x32, 0x29, 0x42, 0x7e, 0x63, 0x6b, 0x67, + 0xb3, 0x61, 0xec, 0x1a, 0x5b, 0x3b, 0xfb, 0x4a, 0x82, 0xb6, 0x6d, 0x3c, 0x6d, 0x3e, 0xd8, 0x57, + 0x92, 0x24, 0x03, 0x09, 0x5a, 0x97, 0x22, 0x00, 0xe9, 0xbd, 0x7d, 0x63, 0x6b, 0x67, 0x53, 0x49, + 0x53, 0x2b, 0xfb, 0x5b, 0xdb, 0x0d, 0x25, 0x43, 0x91, 0xfb, 0xef, 0xee, 0x3e, 0x6d, 0x28, 0x59, + 0xfa, 0xf3, 0x81, 0x61, 0x3c, 0xf8, 0x8a, 0x92, 0xa3, 0xa4, 0xed, 0x07, 0xbb, 0x0a, 0x60, 0xf3, + 0x83, 0x87, 0x4f, 0x1b, 0x4a, 0x9e, 0x14, 0x20, 0xbb, 0xf1, 0xee, 0xce, 0xa3, 0xfd, 0xad, 0xe6, + 0x8e, 0x52, 0x28, 0x9f, 0x40, 0x89, 0x2d, 0x73, 0x60, 0x15, 0x59, 0x52, 0xf8, 0x0e, 0xa4, 0xd8, + 0xce, 0x48, 0xa8, 0x92, 0x4a, 0x78, 0x67, 0xa6, 0x29, 0x2b, 0x6c, 0x8f, 0x18, 0x6d, 0xe9, 0x32, + 0xa4, 0xd8, 0x2a, 0x2d, 0x42, 0x8a, 0xad, 0x8e, 0x8c, 0xa9, 0x62, 0xaa, 0x8b, 0xab, 0xf2, 0x5b, + 0x32, 0xc0, 0xa6, 0xbd, 0xf7, 0xbc, 0x3f, 0xc2, 0x84, 0xfc, 0x32, 0xc0, 0xe4, 0x79, 0x7f, 0xd4, + 0x42, 0xd5, 0xf3, 0xa4, 0x32, 0x47, 0x6b, 0xd0, 0xdf, 0x91, 0x6b, 0x50, 0xc0, 0xe6, 0x2e, 0xf3, + 0x42, 0x98, 0x4b, 0x66, 0x8c, 0x3c, 0xad, 0xe3, 0x8e, 0x29, 0x08, 0xa9, 0xe9, 0x98, 0x42, 0xa6, + 0x05, 0x48, 0x4d, 0x27, 0x57, 0x01, 0x8b, 0xad, 0x09, 0x46, 0x14, 0x4c, 0x1b, 0x73, 0x06, 0xf6, + 0xcb, 0x62, 0x0c, 0x79, 0x1b, 0xb0, 0x4f, 0x36, 0xef, 0xe2, 0xf4, 0xe9, 0x70, 0x87, 0xbb, 0x42, + 0x7f, 0xb0, 0xd9, 0xfa, 0x84, 0xa5, 0x26, 0xe4, 0xbc, 0x7a, 0xda, 0x17, 0xd6, 0xf2, 0x19, 0x29, + 0x38, 0x23, 0xc0, 0x2a, 0x6f, 0x4a, 0x0c, 0xc0, 0x47, 0xb3, 0x80, 0xa3, 0x61, 0x24, 0x36, 0x9c, + 0xf2, 0x65, 0x98, 0xdb, 0xb1, 0x2d, 0x76, 0x7a, 0x71, 0x95, 0x0a, 0x20, 0xb5, 0x4b, 0x12, 0x66, + 0x4f, 0x52, 0xbb, 0x7c, 0x05, 0x40, 0x68, 0x53, 0x40, 0x3a, 0x60, 0x6d, 0xe8, 0x03, 0xa4, 0x83, + 0xf2, 0x4d, 0x48, 0x6f, 0xb7, 0x8f, 0xf7, 0xdb, 0x3d, 0x72, 0x0d, 0x60, 0xd0, 0x9e, 0x38, 0x2d, + 0x5c, 0xfa, 0xd2, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c, 0xad, 0x65, 0x2a, 0x7d, + 0x01, 0xd0, 0x1c, 0x74, 0xb6, 0xcd, 0xc9, 0xa4, 0xdd, 0x33, 0x49, 0x15, 0xd2, 0x96, 0x39, 0xa1, + 0xd1, 0x4e, 0xc2, 0x77, 0x84, 0x65, 0x7f, 0x15, 0x7c, 0xd4, 0xca, 0x0e, 0x42, 0x0c, 0x0e, 0x25, + 0x0a, 0x24, 0xac, 0xa3, 0x21, 0xbe, 0x93, 0xa4, 0x0c, 0xfa, 0x73, 0xe9, 0x12, 0xa4, 0x19, 0x86, + 0x10, 0x48, 0x5a, 0xed, 0xa1, 0x59, 0x62, 0xfd, 0xe2, 0xef, 0xf2, 0xaf, 0x4a, 0x00, 0x3b, 0xe6, + 0xcb, 0x33, 0xf4, 0xe9, 0xa3, 0x62, 0xfa, 0x4c, 0xb0, 0x3e, 0xef, 0xc7, 0xf5, 0x49, 0x75, 0xd6, + 0xb5, 0xed, 0x4e, 0x8b, 0x6d, 0x31, 0x7b, 0xd2, 0xc9, 0xd1, 0x1a, 0xdc, 0xb5, 0xf2, 0x07, 0x50, + 0xd8, 0xb2, 0x2c, 0x73, 0xec, 0x8e, 0x89, 0x40, 0xf2, 0x99, 0x3d, 0x71, 0xf8, 0xdb, 0x12, 0xfe, + 0x26, 0x25, 0x48, 0x8e, 0xec, 0xb1, 0xc3, 0xe6, 0x59, 0x4f, 0xea, 0xab, 0xab, 0xab, 0x06, 0xd6, + 0x90, 0x4b, 0x90, 0x3b, 0xb4, 0x2d, 0xcb, 0x3c, 0xa4, 0x93, 0x48, 0x60, 0x5a, 0xe3, 0x57, 0x94, + 0x7f, 0x59, 0x82, 0x42, 0xd3, 0x79, 0xe6, 0x1b, 0x57, 0x20, 0xf1, 0xdc, 0x3c, 0xc1, 0xe1, 0x25, + 0x0c, 0xfa, 0x93, 0x1e, 0x95, 0x9f, 0x6f, 0x0f, 0x8e, 0xd8, 0x5b, 0x53, 0xc1, 0x60, 0x05, 0x72, + 0x01, 0xd2, 0x2f, 0xcd, 0x7e, 0xef, 0x99, 0x83, 0x36, 0x65, 0x83, 0x97, 0xc8, 0x2d, 0x48, 0xf5, + 0xe9, 0x60, 0x4b, 0x49, 0x5c, 0xaf, 0x0b, 0xfe, 0x7a, 0x89, 0x73, 0x30, 0x18, 0xe8, 0x46, 0x36, + 0xdb, 0x51, 0x3e, 0xfa, 0xe8, 0xa3, 0x8f, 0xe4, 0x72, 0x17, 0x16, 0xdd, 0xc3, 0x1b, 0x98, 0xec, + 0x0e, 0x94, 0x06, 0xa6, 0xdd, 0xea, 0xf6, 0xad, 0xf6, 0x60, 0x70, 0xd2, 0x7a, 0x69, 0x5b, 0xad, + 0xb6, 0xd5, 0xb2, 0x27, 0x87, 0xed, 0x31, 0x2e, 0x40, 0x74, 0x17, 0x8b, 0x03, 0xd3, 0xde, 0x60, + 0xb4, 0xf7, 0x6d, 0xeb, 0x81, 0xd5, 0xa4, 0x9c, 0xf2, 0x1f, 0x24, 0x21, 0xb7, 0x7d, 0xe2, 0x5a, + 0x5f, 0x84, 0xd4, 0xa1, 0x7d, 0x64, 0xb1, 0xb5, 0x4c, 0x19, 0xac, 0xe0, 0xed, 0x91, 0x2c, 0xec, + 0xd1, 0x22, 0xa4, 0x5e, 0x1c, 0xd9, 0x8e, 0x89, 0xd3, 0xcd, 0x19, 0xac, 0x40, 0x57, 0x6b, 0x64, + 0x3a, 0xa5, 0x24, 0x26, 0xb7, 0xf4, 0xa7, 0x3f, 0xff, 0xd4, 0x19, 0xe6, 0x4f, 0x56, 0x20, 0x6d, + 0xd3, 0xd5, 0x9f, 0x94, 0xd2, 0xf8, 0xae, 0x26, 0xc0, 0xc5, 0x5d, 0x31, 0x38, 0x8a, 0x6c, 0xc1, + 0xc2, 0x4b, 0xb3, 0x35, 0x3c, 0x9a, 0x38, 0xad, 0x9e, 0xdd, 0xea, 0x98, 0xe6, 0xc8, 0x1c, 0x97, + 0xe6, 0xb0, 0x27, 0xc1, 0x27, 0xcc, 0x5a, 0x48, 0x63, 0xfe, 0xa5, 0xb9, 0x7d, 0x34, 0x71, 0x36, + 0xed, 0xc7, 0xc8, 0x22, 0x55, 0xc8, 0x8d, 0x4d, 0xea, 0x09, 0xe8, 0x60, 0x0b, 0xe1, 0xde, 0x03, + 0xd4, 0xec, 0xd8, 0x1c, 0x61, 0x05, 0x59, 0x87, 0xec, 0x41, 0xff, 0xb9, 0x39, 0x79, 0x66, 0x76, + 0x4a, 0x19, 0x55, 0xaa, 0xcc, 0x6b, 0x17, 0x7d, 0x8e, 0xb7, 0xac, 0x2b, 0x8f, 0xec, 0x81, 0x3d, + 0x36, 0x3c, 0x28, 0xb9, 0x0f, 0xb9, 0x89, 0x3d, 0x34, 0x99, 0xbe, 0xb3, 0x18, 0x54, 0x2f, 0xcf, + 0xe2, 0xed, 0xd9, 0x43, 0xd3, 0xf5, 0x60, 0x2e, 0x9e, 0x2c, 0xb3, 0x81, 0x1e, 0xd0, 0xab, 0x73, + 0x09, 0xf0, 0x69, 0x80, 0x0e, 0x08, 0xaf, 0xd2, 0x64, 0x89, 0x0e, 0xa8, 0xd7, 0xa5, 0x37, 0xa2, + 0x52, 0x1e, 0xf3, 0x4a, 0xaf, 0xbc, 0x74, 0x0b, 0x72, 0x9e, 0x41, 0xdf, 0xf5, 0x31, 0x77, 0x93, + 0x43, 0x7f, 0xc0, 0x5c, 0x1f, 0xf3, 0x35, 0x6f, 0x40, 0x0a, 0x87, 0x4d, 0x23, 0x94, 0xd1, 0xa0, + 0x01, 0x31, 0x07, 0xa9, 0x4d, 0xa3, 0xd1, 0xd8, 0x51, 0x24, 0x8c, 0x8d, 0x4f, 0xdf, 0x6d, 0x28, + 0xb2, 0xa0, 0xd8, 0xdf, 0x96, 0x20, 0xd1, 0x38, 0x46, 0xb5, 0xd0, 0x69, 0xb8, 0x27, 0x9a, 0xfe, + 0xd6, 0x6a, 0x90, 0x1c, 0xda, 0x63, 0x93, 0x9c, 0x9f, 0x31, 0xcb, 0x52, 0x0f, 0xf7, 0x4b, 0x78, + 0x45, 0x6e, 0x1c, 0x3b, 0x06, 0xe2, 0xb5, 0xb7, 0x20, 0xe9, 0x98, 0xc7, 0xce, 0x6c, 0xde, 0x33, + 0xd6, 0x01, 0x05, 0x68, 0x37, 0x21, 0x6d, 0x1d, 0x0d, 0x0f, 0xcc, 0xf1, 0x6c, 0x68, 0x1f, 0xa7, + 0xc7, 0x21, 0xe5, 0xf7, 0x40, 0x79, 0x64, 0x0f, 0x47, 0x03, 0xf3, 0xb8, 0x71, 0xec, 0x98, 0xd6, + 0xa4, 0x6f, 0x5b, 0x54, 0xcf, 0xdd, 0xfe, 0x18, 0xbd, 0x88, 0xc4, 0x02, 0xe0, 0x78, 0xe2, 0xd0, + 0x53, 0x3d, 0x31, 0x0f, 0x6d, 0xab, 0xc3, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3, 0xac, 0x3f, 0xa6, + 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x42, 0x91, 0xe7, 0x18, 0x13, 0xde, 0x71, 0xf9, 0x06, + 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x54, 0xce, 0xd1, 0x65, 0x6d, + 0xee, 0x34, 0x14, 0x89, 0xfe, 0xd8, 0x7f, 0xbf, 0x19, 0x58, 0xca, 0x4b, 0x50, 0xf0, 0xc6, 0xbe, + 0x67, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52, 0x8d, 0xe1, 0xc8, + 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90, 0x19, 0xf2, 0xf9, + 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa, 0x42, 0x46, 0xf0, + 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2, 0x36, 0x64, 0x58, + 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab, 0x63, 0x17, 0x95, + 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf, 0x9f, 0x82, 0xac, + 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a, 0x33, 0x32, 0xb2, + 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e, 0xaf, 0xb1, 0xa6, + 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e, 0x85, 0xfe, 0x98, + 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7, 0xcf, 0x76, 0xfd, + 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff, 0xf1, 0x01, 0x35, + 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62, 0xce, 0x82, 0x47, + 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0, 0xb9, 0xf4, 0xf3, + 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4, 0x3c, 0xc3, 0x93, + 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b, 0xc0, 0xc9, 0x15, + 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc, 0xb2, 0x79, 0x89, + 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e, 0xb0, 0xe4, 0x0b, + 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x2e, 0x9e, 0x86, 0x25, 0xca, 0xdb, + 0xed, 0x5b, 0xdd, 0x52, 0x11, 0x57, 0x22, 0xd1, 0xb7, 0xba, 0x46, 0xaa, 0x4b, 0x6b, 0x98, 0x06, + 0x76, 0x68, 0x9b, 0x82, 0x6d, 0xc9, 0xdb, 0xac, 0x91, 0x56, 0x91, 0x12, 0xa4, 0x36, 0x5a, 0x3b, + 0x6d, 0xab, 0xb4, 0xc0, 0x78, 0x56, 0xdb, 0x32, 0x92, 0xdd, 0x9d, 0xb6, 0x45, 0xde, 0x82, 0xc4, + 0xe4, 0xe8, 0xa0, 0x44, 0xc2, 0x5f, 0x56, 0xf6, 0x8e, 0x0e, 0xdc, 0xa1, 0x18, 0x14, 0x41, 0x96, + 0x21, 0x3b, 0x71, 0xc6, 0xad, 0x5f, 0x30, 0xc7, 0x76, 0xe9, 0x3c, 0x2e, 0xe1, 0x39, 0x23, 0x33, + 0x71, 0xc6, 0x1f, 0x98, 0x63, 0xfb, 0x8c, 0xce, 0xaf, 0x7c, 0x05, 0xf2, 0x82, 0x5d, 0x52, 0x04, + 0xc9, 0x62, 0x37, 0x85, 0xba, 0x74, 0xc7, 0x90, 0xac, 0xf2, 0x3e, 0x14, 0xdc, 0x1c, 0x06, 0xe7, + 0xab, 0xd1, 0x93, 0x34, 0xb0, 0xc7, 0x78, 0x3e, 0xe7, 0xb5, 0x4b, 0x62, 0x88, 0xf2, 0x61, 0x3c, + 0x5c, 0x30, 0x68, 0x59, 0x09, 0x0d, 0x45, 0x2a, 0xff, 0x50, 0x82, 0xc2, 0xb6, 0x3d, 0xf6, 0x1f, + 0x98, 0x17, 0x21, 0x75, 0x60, 0xdb, 0x83, 0x09, 0x9a, 0xcd, 0x1a, 0xac, 0x40, 0xde, 0x80, 0x02, + 0xfe, 0x70, 0x73, 0x4f, 0xd9, 0x7b, 0xda, 0xc8, 0x63, 0x3d, 0x4f, 0x38, 0x09, 0x24, 0xfb, 0x96, + 0x33, 0xe1, 0x9e, 0x0c, 0x7f, 0x93, 0x2f, 0x40, 0x9e, 0xfe, 0x75, 0x99, 0x49, 0xef, 0xc2, 0x0a, + 0xb4, 0x9a, 0x13, 0xdf, 0x82, 0x39, 0xdc, 0x7d, 0x0f, 0x96, 0xf1, 0x9e, 0x31, 0x0a, 0xac, 0x81, + 0x03, 0x4b, 0x90, 0x61, 0xae, 0x60, 0x82, 0x5f, 0xcb, 0x72, 0x86, 0x5b, 0xa4, 0xee, 0x15, 0x33, + 0x01, 0x16, 0xee, 0x33, 0x06, 0x2f, 0x95, 0x1f, 0x40, 0x16, 0xa3, 0x54, 0x73, 0xd0, 0x21, 0x65, + 0x90, 0x7a, 0x25, 0x13, 0x63, 0xe4, 0xa2, 0x70, 0xcd, 0xe7, 0xcd, 0x2b, 0x9b, 0x86, 0xd4, 0x5b, + 0x5a, 0x00, 0x69, 0x93, 0xde, 0xbb, 0x8f, 0xb9, 0x9b, 0x96, 0x8e, 0xcb, 0x4d, 0x6e, 0x62, 0xc7, + 0x7c, 0x19, 0x67, 0x62, 0xc7, 0x7c, 0xc9, 0x4c, 0x5c, 0x9d, 0x32, 0x41, 0x4b, 0x27, 0xfc, 0xd3, + 0xa1, 0x74, 0x52, 0xae, 0xc2, 0x1c, 0x1e, 0xcf, 0xbe, 0xd5, 0xdb, 0xb5, 0xfb, 0x16, 0xde, 0xf3, + 0xbb, 0x78, 0x4f, 0x92, 0x0c, 0xa9, 0x4b, 0xf7, 0xc0, 0x3c, 0x6e, 0x1f, 0xb2, 0x1b, 0x67, 0xd6, + 0x60, 0x85, 0xf2, 0x67, 0x49, 0x98, 0xe7, 0xae, 0xf5, 0xfd, 0xbe, 0xf3, 0x6c, 0xbb, 0x3d, 0x22, + 0x4f, 0xa1, 0x40, 0xbd, 0x6a, 0x6b, 0xd8, 0x1e, 0x8d, 0xe8, 0xf1, 0x95, 0xf0, 0xaa, 0x71, 0x7d, + 0xca, 0x55, 0x73, 0xfc, 0xca, 0x4e, 0x7b, 0x68, 0x6e, 0x33, 0x6c, 0xc3, 0x72, 0xc6, 0x27, 0x46, + 0xde, 0xf2, 0x6b, 0xc8, 0x16, 0xe4, 0x87, 0x93, 0x9e, 0x67, 0x4c, 0x46, 0x63, 0x95, 0x48, 0x63, + 0xdb, 0x93, 0x5e, 0xc0, 0x16, 0x0c, 0xbd, 0x0a, 0x3a, 0x30, 0xea, 0x8f, 0x3d, 0x5b, 0x89, 0x53, + 0x06, 0x46, 0x5d, 0x47, 0x70, 0x60, 0x07, 0x7e, 0x0d, 0x79, 0x0c, 0x40, 0x8f, 0x97, 0x63, 0xd3, + 0xd4, 0x09, 0x15, 0x94, 0xd7, 0xde, 0x8c, 0xb4, 0xb5, 0xe7, 0x8c, 0xf7, 0xed, 0x3d, 0x67, 0xcc, + 0x0c, 0xd1, 0x83, 0x89, 0xc5, 0xa5, 0x77, 0x40, 0x09, 0xcf, 0x5f, 0xbc, 0x91, 0xa7, 0x66, 0xdc, + 0xc8, 0x73, 0xfc, 0x46, 0x5e, 0x97, 0xef, 0x4a, 0x4b, 0xef, 0x41, 0x31, 0x34, 0x65, 0x91, 0x4e, + 0x18, 0xfd, 0xb6, 0x48, 0xcf, 0x6b, 0xaf, 0x0b, 0x9f, 0xb3, 0xc5, 0x0d, 0x17, 0xed, 0xbe, 0x03, + 0x4a, 0x78, 0xfa, 0xa2, 0xe1, 0x6c, 0x4c, 0xa6, 0x80, 0xfc, 0xfb, 0x30, 0x17, 0x98, 0xb2, 0x48, + 0xce, 0x9d, 0x32, 0xa9, 0xf2, 0x2f, 0xa5, 0x20, 0xd5, 0xb4, 0x4c, 0xbb, 0x4b, 0x5e, 0x0f, 0xc6, + 0xc9, 0x27, 0xe7, 0xdc, 0x18, 0x79, 0x31, 0x14, 0x23, 0x9f, 0x9c, 0xf3, 0x22, 0xe4, 0xc5, 0x50, + 0x84, 0x74, 0x9b, 0x6a, 0x3a, 0xb9, 0x3c, 0x15, 0x1f, 0x9f, 0x9c, 0x13, 0x82, 0xe3, 0xe5, 0xa9, + 0xe0, 0xe8, 0x37, 0xd7, 0x74, 0xea, 0x50, 0x83, 0x91, 0xf1, 0xc9, 0x39, 0x3f, 0x2a, 0x2e, 0x87, + 0xa3, 0xa2, 0xd7, 0x58, 0xd3, 0xd9, 0x90, 0x84, 0x88, 0x88, 0x43, 0x62, 0xb1, 0x70, 0x39, 0x1c, + 0x0b, 0x91, 0xc7, 0xa3, 0xe0, 0x72, 0x38, 0x0a, 0x62, 0x23, 0x8f, 0x7a, 0x17, 0x43, 0x51, 0x0f, + 0x8d, 0xb2, 0x70, 0xb7, 0x1c, 0x0e, 0x77, 0x8c, 0x27, 0x8c, 0x54, 0x8c, 0x75, 0x5e, 0x63, 0x4d, + 0x27, 0x5a, 0x28, 0xd0, 0x45, 0xdf, 0xf6, 0x71, 0x2f, 0xd0, 0xe9, 0xeb, 0x74, 0xd9, 0xdc, 0x8b, + 0x68, 0x31, 0xe6, 0x8b, 0x3f, 0xae, 0xa6, 0x7b, 0x11, 0xd3, 0x20, 0xd3, 0xe5, 0x09, 0xb0, 0x82, + 0x9e, 0x4b, 0x90, 0x25, 0x6e, 0xfe, 0xca, 0x46, 0x0b, 0x3d, 0x18, 0xce, 0x8b, 0xdd, 0xe9, 0x2b, + 0x30, 0xb7, 0xd1, 0x7a, 0xda, 0x1e, 0xf7, 0xcc, 0x89, 0xd3, 0xda, 0x6f, 0xf7, 0xbc, 0x47, 0x04, + 0xba, 0xff, 0xf9, 0x2e, 0x6f, 0xd9, 0x6f, 0xf7, 0xc8, 0x05, 0x57, 0x5c, 0x1d, 0x6c, 0x95, 0xb8, + 0xbc, 0x96, 0x5e, 0xa7, 0x8b, 0xc6, 0x8c, 0xa1, 0x2f, 0x5c, 0xe0, 0xbe, 0xf0, 0x61, 0x06, 0x52, + 0x47, 0x56, 0xdf, 0xb6, 0x1e, 0xe6, 0x20, 0xe3, 0xd8, 0xe3, 0x61, 0xdb, 0xb1, 0xcb, 0x3f, 0x92, + 0x00, 0x1e, 0xd9, 0xc3, 0xe1, 0x91, 0xd5, 0x7f, 0x71, 0x64, 0x92, 0x2b, 0x90, 0x1f, 0xb6, 0x9f, + 0x9b, 0xad, 0xa1, 0xd9, 0x3a, 0x1c, 0xbb, 0xe7, 0x20, 0x47, 0xab, 0xb6, 0xcd, 0x47, 0xe3, 0x13, + 0x52, 0x72, 0xaf, 0xe8, 0xa8, 0x1d, 0x94, 0x24, 0xbf, 0xb2, 0x2f, 0xf2, 0x4b, 0x67, 0x9a, 0xef, + 0xa1, 0x7b, 0xed, 0x64, 0x79, 0x44, 0x86, 0xef, 0x1e, 0x96, 0xa8, 0xe4, 0x1d, 0x73, 0x38, 0x6a, + 0x1d, 0xa2, 0x54, 0xa8, 0x1c, 0x52, 0xb4, 0xfc, 0x88, 0xdc, 0x86, 0xc4, 0xa1, 0x3d, 0x40, 0x91, + 0x9c, 0xb2, 0x2f, 0x14, 0x47, 0xde, 0x80, 0xc4, 0x70, 0xc2, 0x64, 0x93, 0xd7, 0x16, 0x84, 0x7b, + 0x02, 0x0b, 0x4d, 0x14, 0x36, 0x9c, 0xf4, 0xbc, 0x79, 0xdf, 0x28, 0x42, 0x62, 0xa3, 0xd9, 0xa4, + 0xb1, 0x7f, 0xa3, 0xd9, 0x5c, 0x53, 0xa4, 0xfa, 0x97, 0x20, 0xdb, 0x1b, 0x9b, 0x26, 0x75, 0x0f, + 0xb3, 0x73, 0x8e, 0x0f, 0x31, 0xd6, 0x79, 0xa0, 0xfa, 0x36, 0x64, 0x0e, 0x59, 0xd6, 0x41, 0x22, + 0xd2, 0xda, 0xd2, 0x1f, 0xb2, 0x47, 0x95, 0x25, 0xbf, 0x39, 0x9c, 0xa7, 0x18, 0xae, 0x8d, 0xfa, + 0x2e, 0xe4, 0xc6, 0xad, 0xd3, 0x0c, 0x7e, 0xcc, 0xa2, 0x4b, 0x9c, 0xc1, 0xec, 0x98, 0x57, 0xd5, + 0x1b, 0xb0, 0x60, 0xd9, 0xee, 0x37, 0x94, 0x56, 0x87, 0x9d, 0xb1, 0x8b, 0xd3, 0x57, 0x39, 0xd7, + 0xb8, 0xc9, 0xbe, 0x5b, 0x5a, 0x36, 0x6f, 0x60, 0xa7, 0xb2, 0xfe, 0x08, 0x14, 0xc1, 0x0c, 0xa6, + 0x9e, 0x71, 0x56, 0xba, 0xec, 0x43, 0xa9, 0x67, 0x05, 0xcf, 0x7d, 0xc8, 0x08, 0x3b, 0x99, 0x31, + 0x46, 0x7a, 0xec, 0xab, 0xb3, 0x67, 0x04, 0x5d, 0xdd, 0xb4, 0x11, 0xea, 0x6b, 0xa2, 0x8d, 0x3c, + 0x63, 0x1f, 0xa4, 0x45, 0x23, 0x35, 0x3d, 0xb4, 0x2a, 0x47, 0xa7, 0x0e, 0xa5, 0xcf, 0xbe, 0x27, + 0x7b, 0x56, 0x98, 0x03, 0x9c, 0x61, 0x26, 0x7e, 0x30, 0x1f, 0xb2, 0x4f, 0xcd, 0x01, 0x33, 0x53, + 0xa3, 0x99, 0x9c, 0x3a, 0x9a, 0xe7, 0xec, 0xbb, 0xae, 0x67, 0x66, 0x6f, 0xd6, 0x68, 0x26, 0xa7, + 0x8e, 0x66, 0xc0, 0xbe, 0xf8, 0x06, 0xcc, 0xd4, 0xf4, 0xfa, 0x26, 0x10, 0x71, 0xab, 0x79, 0x9c, + 0x88, 0xb1, 0x33, 0x64, 0xdf, 0xf1, 0xfd, 0xcd, 0x66, 0x94, 0x59, 0x86, 0xe2, 0x07, 0x64, 0xb1, + 0x4f, 0xfc, 0x41, 0x43, 0x35, 0xbd, 0xbe, 0x05, 0xe7, 0xc5, 0x89, 0x9d, 0x61, 0x48, 0xb6, 0x2a, + 0x55, 0x8a, 0xc6, 0x82, 0x3f, 0x35, 0xce, 0x99, 0x69, 0x2a, 0x7e, 0x50, 0x23, 0x55, 0xaa, 0x28, + 0x53, 0xa6, 0x6a, 0x7a, 0xfd, 0x01, 0x14, 0x05, 0x53, 0x07, 0x18, 0xa1, 0xa3, 0xcd, 0xbc, 0x60, + 0xff, 0x6b, 0xe1, 0x99, 0xa1, 0x11, 0x3d, 0xbc, 0x63, 0x3c, 0xc6, 0x45, 0x1b, 0x19, 0xb3, 0x7f, + 0x14, 0xf0, 0xc7, 0x82, 0x8c, 0xd0, 0x91, 0xc0, 0xfc, 0x3b, 0xce, 0xca, 0x84, 0xfd, 0x0b, 0x81, + 0x3f, 0x14, 0x4a, 0xa8, 0xf7, 0x03, 0xd3, 0x31, 0x69, 0x90, 0x8b, 0xb1, 0xe1, 0xa0, 0x47, 0x7e, + 0x33, 0x12, 0xb0, 0x22, 0x3e, 0x90, 0x08, 0xd3, 0xa6, 0xc5, 0xfa, 0x16, 0xcc, 0x9f, 0xdd, 0x21, + 0x7d, 0x2c, 0xb1, 0x6c, 0xb9, 0xba, 0x42, 0x13, 0x6a, 0x63, 0xae, 0x13, 0xf0, 0x4b, 0x0d, 0x98, + 0x3b, 0xb3, 0x53, 0xfa, 0x44, 0x62, 0x39, 0x27, 0xb5, 0x64, 0x14, 0x3a, 0x41, 0xcf, 0x34, 0x77, + 0x66, 0xb7, 0xf4, 0xa9, 0xc4, 0x1e, 0x28, 0x74, 0xcd, 0x33, 0xe2, 0x7a, 0xa6, 0xb9, 0x33, 0xbb, + 0xa5, 0xaf, 0xb2, 0x8c, 0x52, 0xd6, 0xab, 0xa2, 0x11, 0xf4, 0x05, 0xf3, 0x67, 0x77, 0x4b, 0x5f, + 0x93, 0xf0, 0xb1, 0x42, 0xd6, 0x75, 0x6f, 0x5d, 0x3c, 0xcf, 0x34, 0x7f, 0x76, 0xb7, 0xf4, 0x75, + 0x09, 0x9f, 0x34, 0x64, 0x7d, 0x3d, 0x60, 0x26, 0x38, 0x9a, 0xd3, 0xdd, 0xd2, 0x37, 0x24, 0x7c, + 0x65, 0x90, 0xf5, 0x9a, 0x67, 0x66, 0x6f, 0x6a, 0x34, 0xa7, 0xbb, 0xa5, 0x6f, 0xe2, 0x2d, 0xbe, + 0x2e, 0xeb, 0x77, 0x02, 0x66, 0xd0, 0x33, 0x15, 0x5f, 0xc1, 0x2d, 0x7d, 0x4b, 0xc2, 0xc7, 0x20, + 0x59, 0xbf, 0x6b, 0xb8, 0xbd, 0xfb, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9, 0x33, 0x09, 0xdf, 0x8c, + 0x64, 0xfd, 0x5e, 0xd0, 0x10, 0x7a, 0x26, 0xe5, 0x55, 0xdc, 0xd2, 0xb7, 0xa9, 0xa5, 0x62, 0x5d, + 0x5e, 0x5f, 0x35, 0xdc, 0x01, 0x08, 0x9e, 0x49, 0x79, 0x15, 0xb7, 0xf4, 0x1d, 0x6a, 0x4a, 0xa9, + 0xcb, 0xeb, 0x6b, 0x21, 0x53, 0x35, 0xbd, 0xfe, 0x08, 0x0a, 0x67, 0x75, 0x4b, 0xdf, 0x15, 0xdf, + 0xe2, 0xf2, 0x1d, 0xc1, 0x37, 0xed, 0x0a, 0x7b, 0x76, 0xaa, 0x63, 0xfa, 0x1e, 0xe6, 0x38, 0xf5, + 0xb9, 0x27, 0xec, 0xbd, 0x8a, 0x11, 0xfc, 0xed, 0x63, 0x6e, 0x6a, 0xdb, 0x3f, 0x1f, 0xa7, 0xfa, + 0xa8, 0xef, 0x4b, 0xf8, 0xa8, 0x55, 0xe0, 0x06, 0x11, 0xef, 0x9d, 0x14, 0xe6, 0xb0, 0x3e, 0xf4, + 0x67, 0x79, 0x9a, 0xb7, 0xfa, 0x81, 0xf4, 0x2a, 0xee, 0xaa, 0x9e, 0x68, 0xee, 0x34, 0xbc, 0xc5, + 0xc0, 0x9a, 0xb7, 0x21, 0x79, 0xac, 0xad, 0xae, 0x89, 0x57, 0x32, 0xf1, 0x2d, 0x97, 0x39, 0xa9, + 0xbc, 0x56, 0x14, 0x9e, 0xbb, 0x87, 0x23, 0xe7, 0xc4, 0x40, 0x16, 0x67, 0x6b, 0x91, 0xec, 0x4f, + 0x62, 0xd8, 0x1a, 0x67, 0x57, 0x23, 0xd9, 0x9f, 0xc6, 0xb0, 0xab, 0x9c, 0xad, 0x47, 0xb2, 0xbf, + 0x1a, 0xc3, 0xd6, 0x39, 0x7b, 0x3d, 0x92, 0xfd, 0xb5, 0x18, 0xf6, 0x3a, 0x67, 0xd7, 0x22, 0xd9, + 0x5f, 0x8f, 0x61, 0xd7, 0x38, 0xfb, 0x4e, 0x24, 0xfb, 0x1b, 0x31, 0xec, 0x3b, 0x9c, 0x7d, 0x37, + 0x92, 0xfd, 0xcd, 0x18, 0xf6, 0x5d, 0xce, 0xbe, 0x17, 0xc9, 0xfe, 0x56, 0x0c, 0xfb, 0x1e, 0x63, + 0xaf, 0xad, 0x46, 0xb2, 0x3f, 0x8b, 0x66, 0xaf, 0xad, 0x72, 0x76, 0xb4, 0xd6, 0xbe, 0x1d, 0xc3, + 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x77, 0x62, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x6e, + 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, + 0xfb, 0x31, 0x6c, 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x20, 0x86, 0xcd, 0xb5, 0xb6, 0x16, 0xad, + 0xb5, 0x3f, 0x8a, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x8f, 0x63, 0xd8, 0x5c, 0x6b, 0x6b, + 0xd1, 0x5a, 0xfb, 0x93, 0x18, 0x36, 0xd7, 0x9a, 0x16, 0xad, 0xb5, 0x3f, 0x8d, 0x66, 0x6b, 0x5c, + 0x6b, 0x5a, 0xb4, 0xd6, 0xfe, 0x2c, 0x86, 0xcd, 0xb5, 0xa6, 0x45, 0x6b, 0xed, 0xcf, 0x63, 0xd8, + 0x5c, 0x6b, 0x5a, 0xb4, 0xd6, 0x7e, 0x18, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x17, 0x31, + 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x19, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x57, + 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x1d, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, + 0x37, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x1b, 0xc3, 0xe6, 0x5a, 0xab, 0x46, 0x6b, + 0xed, 0xef, 0xa2, 0xd9, 0x55, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x3e, 0x86, 0xcd, 0xb5, 0x56, + 0x8d, 0xd6, 0xda, 0x3f, 0xc4, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0xc7, 0x18, 0x36, 0xd7, + 0x5a, 0x35, 0x5a, 0x6b, 0x3f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0x4f, 0x31, 0x6c, + 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x39, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc4, + 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0xd7, 0x18, 0x36, 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0xff, + 0x16, 0xc3, 0xe6, 0x5a, 0xd3, 0xa3, 0xb5, 0xf6, 0xef, 0xd1, 0x6c, 0x9d, 0x6b, 0x4d, 0x8f, 0xd6, + 0xda, 0x7f, 0xc4, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x67, 0x0c, 0x9b, 0x6b, 0x4d, 0x8f, + 0xd6, 0xda, 0x7f, 0xc5, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x77, 0x0c, 0x9b, 0x6b, 0x4d, + 0x8f, 0xd6, 0xda, 0xff, 0xc4, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x38, 0x86, 0xcd, 0xb5, + 0xa6, 0x47, 0x6b, 0xed, 0x27, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0xff, 0x1b, 0xc3, 0xe6, + 0x5a, 0xd3, 0xa3, 0xb5, 0xf6, 0x7f, 0x31, 0x6c, 0xae, 0xb5, 0xf5, 0x68, 0xad, 0xfd, 0x7f, 0x34, + 0x7b, 0x7d, 0xf5, 0xa7, 0x01, 0x00, 0x00, 0xff, 0xff, 0x40, 0x32, 0xb7, 0xac, 0x57, 0x39, 0x00, + 0x00, } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile index 41a2d04d0..4942418e3 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile @@ -32,5 +32,8 @@ # Not stored here, but descriptor.proto is in https://github.com/google/protobuf/ # at src/google/protobuf/descriptor.proto regenerate: - @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION - protoc --go_out=../../../../.. -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto + echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION + protoc --go_out=. -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/descriptor.proto && \ + sed 's,^package google_protobuf,package descriptor,' google/protobuf/descriptor.pb.go > \ + $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go && \ + rm -f google/protobuf/descriptor.pb.go diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go index 63cf2c80a..2e06cb3a9 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: google/protobuf/descriptor.proto +// DO NOT EDIT! /* Package descriptor is a generated protocol buffer package. @@ -64,10 +65,6 @@ const ( FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7 FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8 FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9 - // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10 FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // New in version 2. @@ -296,48 +293,6 @@ func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { } func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1} } -// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, -// or neither? HTTP based RPC implementation may choose GET verb for safe -// methods, and PUT verb for idempotent methods instead of the default POST. -type MethodOptions_IdempotencyLevel int32 - -const ( - MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0 - MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1 - MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2 -) - -var MethodOptions_IdempotencyLevel_name = map[int32]string{ - 0: "IDEMPOTENCY_UNKNOWN", - 1: "NO_SIDE_EFFECTS", - 2: "IDEMPOTENT", -} -var MethodOptions_IdempotencyLevel_value = map[string]int32{ - "IDEMPOTENCY_UNKNOWN": 0, - "NO_SIDE_EFFECTS": 1, - "IDEMPOTENT": 2, -} - -func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { - p := new(MethodOptions_IdempotencyLevel) - *p = x - return p -} -func (x MethodOptions_IdempotencyLevel) String() string { - return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x)) -} -func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel") - if err != nil { - return err - } - *x = MethodOptions_IdempotencyLevel(value) - return nil -} -func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0} -} - // The protocol compiler can output a FileDescriptorSet containing the .proto // files it parses. type FileDescriptorSet struct { @@ -945,8 +900,19 @@ type FileOptions struct { // generated to contain the file's getDescriptor() method as well as any // top-level extensions defined in the file. JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"` - // This option does nothing. - 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 Java code generator will generate equals() and + // hashCode() methods for all messages defined in the .proto file. + // This increases generated code size, potentially substantially for large + // protos, which may harm a memory-constrained application. + // - In the full runtime this is a speed optimization, as the + // AbstractMessage base class includes reflection-based implementations of + // these methods. + // - In the lite runtime, setting this option changes the semantics of + // equals() and hashCode() to more closely match those of the full runtime; + // the generated methods compute their results based on field values rather + // than object identity. (Implementations should not assume that hashcodes + // will be consistent across runtimes or versions of the protocol compiler.) + JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash,def=0" 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. @@ -987,14 +953,6 @@ type FileOptions struct { ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"` // Namespace for generated classes; defaults to the package. CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"` - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"` - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,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"` proto.XXX_InternalExtensions `json:"-"` @@ -1015,6 +973,7 @@ func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange { } const Default_FileOptions_JavaMultipleFiles bool = false +const Default_FileOptions_JavaGenerateEqualsAndHash bool = false const Default_FileOptions_JavaStringCheckUtf8 bool = false const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED const Default_FileOptions_CcGenericServices bool = false @@ -1048,7 +1007,7 @@ func (m *FileOptions) GetJavaGenerateEqualsAndHash() bool { if m != nil && m.JavaGenerateEqualsAndHash != nil { return *m.JavaGenerateEqualsAndHash } - return false + return Default_FileOptions_JavaGenerateEqualsAndHash } func (m *FileOptions) GetJavaStringCheckUtf8() bool { @@ -1121,20 +1080,6 @@ func (m *FileOptions) GetCsharpNamespace() string { return "" } -func (m *FileOptions) GetSwiftPrefix() string { - if m != nil && m.SwiftPrefix != nil { - return *m.SwiftPrefix - } - return "" -} - -func (m *FileOptions) GetPhpClassPrefix() string { - if m != nil && m.PhpClassPrefix != nil { - return *m.PhpClassPrefix - } - return "" -} - func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1292,7 +1237,7 @@ type FieldOptions struct { // // // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message + // a lazy sub-message. That is, calling IsInitialized() on the outher message // may return true even if the inner message has missing required fields. // This is necessary because otherwise the inner message would have to be // parsed in order to perform the check, defeating the purpose of lazy @@ -1548,8 +1493,7 @@ type MethodOptions struct { // Depending on the target platform, this can emit Deprecated annotations // for the method, or it will be completely ignored; in the very least, // this is a formalization for deprecating methods. - Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"` - IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"` + Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,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"` proto.XXX_InternalExtensions `json:"-"` @@ -1570,7 +1514,6 @@ func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange { } const Default_MethodOptions_Deprecated bool = false -const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN func (m *MethodOptions) GetDeprecated() bool { if m != nil && m.Deprecated != nil { @@ -1579,13 +1522,6 @@ func (m *MethodOptions) GetDeprecated() bool { return Default_MethodOptions_Deprecated } -func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel { - if m != nil && m.IdempotencyLevel != nil { - return *m.IdempotencyLevel - } - return Default_MethodOptions_IdempotencyLevel -} - func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1988,165 +1924,153 @@ func init() { proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) - proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) } func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2460 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x5b, 0x6f, 0xdb, 0xc8, - 0x15, 0x5e, 0x5d, 0x2d, 0x1d, 0xc9, 0xf2, 0x78, 0xec, 0x4d, 0x18, 0xef, 0x25, 0x8e, 0xf6, 0x12, - 0x6f, 0xd2, 0xc8, 0x0b, 0xe7, 0xb2, 0x59, 0xa7, 0x48, 0x21, 0x4b, 0x8c, 0x57, 0xa9, 0x2c, 0xa9, - 0x94, 0xdc, 0x4d, 0xf6, 0x85, 0x18, 0x93, 0x23, 0x99, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89, 0xf7, - 0x29, 0x40, 0x9f, 0x0a, 0xf4, 0x07, 0x14, 0x45, 0xd1, 0x87, 0x7d, 0x59, 0xa0, 0x3f, 0xa0, 0xcf, - 0xfd, 0x05, 0x05, 0xf6, 0xb9, 0x2f, 0x45, 0x51, 0xa0, 0xfd, 0x07, 0x7d, 0x2d, 0x66, 0x86, 0xa4, - 0x48, 0x5d, 0x12, 0x77, 0x81, 0xec, 0x3e, 0xd9, 0x73, 0xce, 0x77, 0x0e, 0xcf, 0x9c, 0xf9, 0x66, - 0xce, 0x99, 0x11, 0x6c, 0x8f, 0x6c, 0x7b, 0x64, 0xd2, 0x5d, 0xc7, 0xb5, 0x7d, 0xfb, 0x64, 0x32, - 0xdc, 0xd5, 0xa9, 0xa7, 0xb9, 0x86, 0xe3, 0xdb, 0x6e, 0x8d, 0xcb, 0xf0, 0x9a, 0x40, 0xd4, 0x42, - 0x44, 0xf5, 0x08, 0xd6, 0x1f, 0x18, 0x26, 0x6d, 0x46, 0xc0, 0x3e, 0xf5, 0xf1, 0x5d, 0xc8, 0x0e, - 0x0d, 0x93, 0x4a, 0xa9, 0xed, 0xcc, 0x4e, 0x69, 0xef, 0xc3, 0xda, 0x8c, 0x51, 0x2d, 0x69, 0xd1, - 0x63, 0x62, 0x85, 0x5b, 0x54, 0xff, 0x95, 0x85, 0x8d, 0x05, 0x5a, 0x8c, 0x21, 0x6b, 0x91, 0x31, - 0xf3, 0x98, 0xda, 0x29, 0x2a, 0xfc, 0x7f, 0x2c, 0xc1, 0x8a, 0x43, 0xb4, 0xa7, 0x64, 0x44, 0xa5, - 0x34, 0x17, 0x87, 0x43, 0xfc, 0x3e, 0x80, 0x4e, 0x1d, 0x6a, 0xe9, 0xd4, 0xd2, 0xce, 0xa4, 0xcc, - 0x76, 0x66, 0xa7, 0xa8, 0xc4, 0x24, 0xf8, 0x3a, 0xac, 0x3b, 0x93, 0x13, 0xd3, 0xd0, 0xd4, 0x18, - 0x0c, 0xb6, 0x33, 0x3b, 0x39, 0x05, 0x09, 0x45, 0x73, 0x0a, 0xbe, 0x0a, 0x6b, 0xcf, 0x29, 0x79, - 0x1a, 0x87, 0x96, 0x38, 0xb4, 0xc2, 0xc4, 0x31, 0x60, 0x03, 0xca, 0x63, 0xea, 0x79, 0x64, 0x44, - 0x55, 0xff, 0xcc, 0xa1, 0x52, 0x96, 0xcf, 0x7e, 0x7b, 0x6e, 0xf6, 0xb3, 0x33, 0x2f, 0x05, 0x56, - 0x83, 0x33, 0x87, 0xe2, 0x3a, 0x14, 0xa9, 0x35, 0x19, 0x0b, 0x0f, 0xb9, 0x25, 0xf9, 0x93, 0xad, - 0xc9, 0x78, 0xd6, 0x4b, 0x81, 0x99, 0x05, 0x2e, 0x56, 0x3c, 0xea, 0x3e, 0x33, 0x34, 0x2a, 0xe5, - 0xb9, 0x83, 0xab, 0x73, 0x0e, 0xfa, 0x42, 0x3f, 0xeb, 0x23, 0xb4, 0xc3, 0x0d, 0x28, 0xd2, 0x17, - 0x3e, 0xb5, 0x3c, 0xc3, 0xb6, 0xa4, 0x15, 0xee, 0xe4, 0xa3, 0x05, 0xab, 0x48, 0x4d, 0x7d, 0xd6, - 0xc5, 0xd4, 0x0e, 0xdf, 0x81, 0x15, 0xdb, 0xf1, 0x0d, 0xdb, 0xf2, 0xa4, 0xc2, 0x76, 0x6a, 0xa7, - 0xb4, 0xf7, 0xee, 0x42, 0x22, 0x74, 0x05, 0x46, 0x09, 0xc1, 0xb8, 0x05, 0xc8, 0xb3, 0x27, 0xae, - 0x46, 0x55, 0xcd, 0xd6, 0xa9, 0x6a, 0x58, 0x43, 0x5b, 0x2a, 0x72, 0x07, 0x97, 0xe7, 0x27, 0xc2, - 0x81, 0x0d, 0x5b, 0xa7, 0x2d, 0x6b, 0x68, 0x2b, 0x15, 0x2f, 0x31, 0xc6, 0x17, 0x20, 0xef, 0x9d, - 0x59, 0x3e, 0x79, 0x21, 0x95, 0x39, 0x43, 0x82, 0x51, 0xf5, 0xbf, 0x39, 0x58, 0x3b, 0x0f, 0xc5, - 0xee, 0x41, 0x6e, 0xc8, 0x66, 0x29, 0xa5, 0xff, 0x9f, 0x1c, 0x08, 0x9b, 0x64, 0x12, 0xf3, 0x3f, - 0x30, 0x89, 0x75, 0x28, 0x59, 0xd4, 0xf3, 0xa9, 0x2e, 0x18, 0x91, 0x39, 0x27, 0xa7, 0x40, 0x18, - 0xcd, 0x53, 0x2a, 0xfb, 0x83, 0x28, 0xf5, 0x08, 0xd6, 0xa2, 0x90, 0x54, 0x97, 0x58, 0xa3, 0x90, - 0x9b, 0xbb, 0xaf, 0x8b, 0xa4, 0x26, 0x87, 0x76, 0x0a, 0x33, 0x53, 0x2a, 0x34, 0x31, 0xc6, 0x4d, - 0x00, 0xdb, 0xa2, 0xf6, 0x50, 0xd5, 0xa9, 0x66, 0x4a, 0x85, 0x25, 0x59, 0xea, 0x32, 0xc8, 0x5c, - 0x96, 0x6c, 0x21, 0xd5, 0x4c, 0xfc, 0xf9, 0x94, 0x6a, 0x2b, 0x4b, 0x98, 0x72, 0x24, 0x36, 0xd9, - 0x1c, 0xdb, 0x8e, 0xa1, 0xe2, 0x52, 0xc6, 0x7b, 0xaa, 0x07, 0x33, 0x2b, 0xf2, 0x20, 0x6a, 0xaf, - 0x9d, 0x99, 0x12, 0x98, 0x89, 0x89, 0xad, 0xba, 0xf1, 0x21, 0xfe, 0x00, 0x22, 0x81, 0xca, 0x69, - 0x05, 0xfc, 0x14, 0x2a, 0x87, 0xc2, 0x0e, 0x19, 0xd3, 0xad, 0xbb, 0x50, 0x49, 0xa6, 0x07, 0x6f, - 0x42, 0xce, 0xf3, 0x89, 0xeb, 0x73, 0x16, 0xe6, 0x14, 0x31, 0xc0, 0x08, 0x32, 0xd4, 0xd2, 0xf9, - 0x29, 0x97, 0x53, 0xd8, 0xbf, 0x5b, 0x9f, 0xc1, 0x6a, 0xe2, 0xf3, 0xe7, 0x35, 0xac, 0xfe, 0x3e, - 0x0f, 0x9b, 0x8b, 0x38, 0xb7, 0x90, 0xfe, 0x17, 0x20, 0x6f, 0x4d, 0xc6, 0x27, 0xd4, 0x95, 0x32, - 0xdc, 0x43, 0x30, 0xc2, 0x75, 0xc8, 0x99, 0xe4, 0x84, 0x9a, 0x52, 0x76, 0x3b, 0xb5, 0x53, 0xd9, - 0xbb, 0x7e, 0x2e, 0x56, 0xd7, 0xda, 0xcc, 0x44, 0x11, 0x96, 0xf8, 0x3e, 0x64, 0x83, 0x23, 0x8e, - 0x79, 0xb8, 0x76, 0x3e, 0x0f, 0x8c, 0x8b, 0x0a, 0xb7, 0xc3, 0xef, 0x40, 0x91, 0xfd, 0x15, 0xb9, - 0xcd, 0xf3, 0x98, 0x0b, 0x4c, 0xc0, 0xf2, 0x8a, 0xb7, 0xa0, 0xc0, 0x69, 0xa6, 0xd3, 0xb0, 0x34, - 0x44, 0x63, 0xb6, 0x30, 0x3a, 0x1d, 0x92, 0x89, 0xe9, 0xab, 0xcf, 0x88, 0x39, 0xa1, 0x9c, 0x30, - 0x45, 0xa5, 0x1c, 0x08, 0x7f, 0xcd, 0x64, 0xf8, 0x32, 0x94, 0x04, 0x2b, 0x0d, 0x4b, 0xa7, 0x2f, - 0xf8, 0xe9, 0x93, 0x53, 0x04, 0x51, 0x5b, 0x4c, 0xc2, 0x3e, 0xff, 0xc4, 0xb3, 0xad, 0x70, 0x69, - 0xf9, 0x27, 0x98, 0x80, 0x7f, 0xfe, 0xb3, 0xd9, 0x83, 0xef, 0xbd, 0xc5, 0xd3, 0x9b, 0xe5, 0x62, - 0xf5, 0x2f, 0x69, 0xc8, 0xf2, 0xfd, 0xb6, 0x06, 0xa5, 0xc1, 0xe3, 0x9e, 0xac, 0x36, 0xbb, 0xc7, - 0x07, 0x6d, 0x19, 0xa5, 0x70, 0x05, 0x80, 0x0b, 0x1e, 0xb4, 0xbb, 0xf5, 0x01, 0x4a, 0x47, 0xe3, - 0x56, 0x67, 0x70, 0xe7, 0x16, 0xca, 0x44, 0x06, 0xc7, 0x42, 0x90, 0x8d, 0x03, 0x6e, 0xee, 0xa1, - 0x1c, 0x46, 0x50, 0x16, 0x0e, 0x5a, 0x8f, 0xe4, 0xe6, 0x9d, 0x5b, 0x28, 0x9f, 0x94, 0xdc, 0xdc, - 0x43, 0x2b, 0x78, 0x15, 0x8a, 0x5c, 0x72, 0xd0, 0xed, 0xb6, 0x51, 0x21, 0xf2, 0xd9, 0x1f, 0x28, - 0xad, 0xce, 0x21, 0x2a, 0x46, 0x3e, 0x0f, 0x95, 0xee, 0x71, 0x0f, 0x41, 0xe4, 0xe1, 0x48, 0xee, - 0xf7, 0xeb, 0x87, 0x32, 0x2a, 0x45, 0x88, 0x83, 0xc7, 0x03, 0xb9, 0x8f, 0xca, 0x89, 0xb0, 0x6e, - 0xee, 0xa1, 0xd5, 0xe8, 0x13, 0x72, 0xe7, 0xf8, 0x08, 0x55, 0xf0, 0x3a, 0xac, 0x8a, 0x4f, 0x84, - 0x41, 0xac, 0xcd, 0x88, 0xee, 0xdc, 0x42, 0x68, 0x1a, 0x88, 0xf0, 0xb2, 0x9e, 0x10, 0xdc, 0xb9, - 0x85, 0x70, 0xb5, 0x01, 0x39, 0xce, 0x2e, 0x8c, 0xa1, 0xd2, 0xae, 0x1f, 0xc8, 0x6d, 0xb5, 0xdb, - 0x1b, 0xb4, 0xba, 0x9d, 0x7a, 0x1b, 0xa5, 0xa6, 0x32, 0x45, 0xfe, 0xd5, 0x71, 0x4b, 0x91, 0x9b, - 0x28, 0x1d, 0x97, 0xf5, 0xe4, 0xfa, 0x40, 0x6e, 0xa2, 0x4c, 0x55, 0x83, 0xcd, 0x45, 0xe7, 0xcc, - 0xc2, 0x9d, 0x11, 0x5b, 0xe2, 0xf4, 0x92, 0x25, 0xe6, 0xbe, 0xe6, 0x96, 0xf8, 0xdb, 0x14, 0x6c, - 0x2c, 0x38, 0x6b, 0x17, 0x7e, 0xe4, 0x17, 0x90, 0x13, 0x14, 0x15, 0xd5, 0xe7, 0x93, 0x85, 0x87, - 0x36, 0x27, 0xec, 0x5c, 0x05, 0xe2, 0x76, 0xf1, 0x0a, 0x9c, 0x59, 0x52, 0x81, 0x99, 0x8b, 0xb9, - 0x20, 0x7f, 0x93, 0x02, 0x69, 0x99, 0xef, 0xd7, 0x1c, 0x14, 0xe9, 0xc4, 0x41, 0x71, 0x6f, 0x36, - 0x80, 0x2b, 0xcb, 0xe7, 0x30, 0x17, 0xc5, 0x77, 0x29, 0xb8, 0xb0, 0xb8, 0x51, 0x59, 0x18, 0xc3, - 0x7d, 0xc8, 0x8f, 0xa9, 0x7f, 0x6a, 0x87, 0xc5, 0xfa, 0xe3, 0x05, 0x25, 0x80, 0xa9, 0x67, 0x73, - 0x15, 0x58, 0xc5, 0x6b, 0x48, 0x66, 0x59, 0xb7, 0x21, 0xa2, 0x99, 0x8b, 0xf4, 0xb7, 0x69, 0x78, - 0x7b, 0xa1, 0xf3, 0x85, 0x81, 0xbe, 0x07, 0x60, 0x58, 0xce, 0xc4, 0x17, 0x05, 0x59, 0x9c, 0x4f, - 0x45, 0x2e, 0xe1, 0x7b, 0x9f, 0x9d, 0x3d, 0x13, 0x3f, 0xd2, 0x67, 0xb8, 0x1e, 0x84, 0x88, 0x03, - 0xee, 0x4e, 0x03, 0xcd, 0xf2, 0x40, 0xdf, 0x5f, 0x32, 0xd3, 0xb9, 0x5a, 0xf7, 0x29, 0x20, 0xcd, - 0x34, 0xa8, 0xe5, 0xab, 0x9e, 0xef, 0x52, 0x32, 0x36, 0xac, 0x11, 0x3f, 0x80, 0x0b, 0xfb, 0xb9, - 0x21, 0x31, 0x3d, 0xaa, 0xac, 0x09, 0x75, 0x3f, 0xd4, 0x32, 0x0b, 0x5e, 0x65, 0xdc, 0x98, 0x45, - 0x3e, 0x61, 0x21, 0xd4, 0x91, 0x45, 0xf5, 0xef, 0x2b, 0x50, 0x8a, 0xb5, 0x75, 0xf8, 0x0a, 0x94, - 0x9f, 0x90, 0x67, 0x44, 0x0d, 0x5b, 0x75, 0x91, 0x89, 0x12, 0x93, 0xf5, 0x82, 0x76, 0xfd, 0x53, - 0xd8, 0xe4, 0x10, 0x7b, 0xe2, 0x53, 0x57, 0xd5, 0x4c, 0xe2, 0x79, 0x3c, 0x69, 0x05, 0x0e, 0xc5, - 0x4c, 0xd7, 0x65, 0xaa, 0x46, 0xa8, 0xc1, 0xb7, 0x61, 0x83, 0x5b, 0x8c, 0x27, 0xa6, 0x6f, 0x38, - 0x26, 0x55, 0xd9, 0xe5, 0xc1, 0xe3, 0x07, 0x71, 0x14, 0xd9, 0x3a, 0x43, 0x1c, 0x05, 0x00, 0x16, - 0x91, 0x87, 0x9b, 0xf0, 0x1e, 0x37, 0x1b, 0x51, 0x8b, 0xba, 0xc4, 0xa7, 0x2a, 0xfd, 0x7a, 0x42, - 0x4c, 0x4f, 0x25, 0x96, 0xae, 0x9e, 0x12, 0xef, 0x54, 0xda, 0x64, 0x0e, 0x0e, 0xd2, 0x52, 0x4a, - 0xb9, 0xc4, 0x80, 0x87, 0x01, 0x4e, 0xe6, 0xb0, 0xba, 0xa5, 0x7f, 0x41, 0xbc, 0x53, 0xbc, 0x0f, - 0x17, 0xb8, 0x17, 0xcf, 0x77, 0x0d, 0x6b, 0xa4, 0x6a, 0xa7, 0x54, 0x7b, 0xaa, 0x4e, 0xfc, 0xe1, - 0x5d, 0xe9, 0x9d, 0xf8, 0xf7, 0x79, 0x84, 0x7d, 0x8e, 0x69, 0x30, 0xc8, 0xb1, 0x3f, 0xbc, 0x8b, - 0xfb, 0x50, 0x66, 0x8b, 0x31, 0x36, 0xbe, 0xa1, 0xea, 0xd0, 0x76, 0x79, 0x65, 0xa9, 0x2c, 0xd8, - 0xd9, 0xb1, 0x0c, 0xd6, 0xba, 0x81, 0xc1, 0x91, 0xad, 0xd3, 0xfd, 0x5c, 0xbf, 0x27, 0xcb, 0x4d, - 0xa5, 0x14, 0x7a, 0x79, 0x60, 0xbb, 0x8c, 0x50, 0x23, 0x3b, 0x4a, 0x70, 0x49, 0x10, 0x6a, 0x64, - 0x87, 0xe9, 0xbd, 0x0d, 0x1b, 0x9a, 0x26, 0xe6, 0x6c, 0x68, 0x6a, 0xd0, 0xe2, 0x7b, 0x12, 0x4a, - 0x24, 0x4b, 0xd3, 0x0e, 0x05, 0x20, 0xe0, 0xb8, 0x87, 0x3f, 0x87, 0xb7, 0xa7, 0xc9, 0x8a, 0x1b, - 0xae, 0xcf, 0xcd, 0x72, 0xd6, 0xf4, 0x36, 0x6c, 0x38, 0x67, 0xf3, 0x86, 0x38, 0xf1, 0x45, 0xe7, - 0x6c, 0xd6, 0xec, 0x23, 0x7e, 0x6d, 0x73, 0xa9, 0x46, 0x7c, 0xaa, 0x4b, 0x17, 0xe3, 0xe8, 0x98, - 0x02, 0xef, 0x02, 0xd2, 0x34, 0x95, 0x5a, 0xe4, 0xc4, 0xa4, 0x2a, 0x71, 0xa9, 0x45, 0x3c, 0xe9, - 0x72, 0x1c, 0x5c, 0xd1, 0x34, 0x99, 0x6b, 0xeb, 0x5c, 0x89, 0xaf, 0xc1, 0xba, 0x7d, 0xf2, 0x44, - 0x13, 0xcc, 0x52, 0x1d, 0x97, 0x0e, 0x8d, 0x17, 0xd2, 0x87, 0x3c, 0x4d, 0x6b, 0x4c, 0xc1, 0x79, - 0xd5, 0xe3, 0x62, 0xfc, 0x09, 0x20, 0xcd, 0x3b, 0x25, 0xae, 0xc3, 0x4b, 0xbb, 0xe7, 0x10, 0x8d, - 0x4a, 0x1f, 0x09, 0xa8, 0x90, 0x77, 0x42, 0x31, 0x63, 0xb6, 0xf7, 0xdc, 0x18, 0xfa, 0xa1, 0xc7, - 0xab, 0x82, 0xd9, 0x5c, 0x16, 0x78, 0xdb, 0x01, 0xe4, 0x9c, 0x3a, 0xc9, 0x0f, 0xef, 0x70, 0x58, - 0xc5, 0x39, 0x75, 0xe2, 0xdf, 0x7d, 0x04, 0x9b, 0x13, 0xcb, 0xb0, 0x7c, 0xea, 0x3a, 0x2e, 0x65, - 0xed, 0xbe, 0xd8, 0xb3, 0xd2, 0xbf, 0x57, 0x96, 0x34, 0xec, 0xc7, 0x71, 0xb4, 0xa0, 0x8a, 0xb2, - 0x31, 0x99, 0x17, 0x56, 0xf7, 0xa1, 0x1c, 0x67, 0x10, 0x2e, 0x82, 0xe0, 0x10, 0x4a, 0xb1, 0x6a, - 0xdc, 0xe8, 0x36, 0x59, 0x1d, 0xfd, 0x4a, 0x46, 0x69, 0x56, 0xcf, 0xdb, 0xad, 0x81, 0xac, 0x2a, - 0xc7, 0x9d, 0x41, 0xeb, 0x48, 0x46, 0x99, 0x6b, 0xc5, 0xc2, 0x7f, 0x56, 0xd0, 0xcb, 0x97, 0x2f, - 0x5f, 0xa6, 0x1f, 0x66, 0x0b, 0x1f, 0xa3, 0xab, 0xd5, 0xef, 0xd3, 0x50, 0x49, 0x76, 0xd2, 0xf8, - 0xe7, 0x70, 0x31, 0xbc, 0xf6, 0x7a, 0xd4, 0x57, 0x9f, 0x1b, 0x2e, 0xa7, 0xf6, 0x98, 0x88, 0x5e, - 0x34, 0x5a, 0x95, 0xcd, 0x00, 0xd5, 0xa7, 0xfe, 0x97, 0x86, 0xcb, 0x88, 0x3b, 0x26, 0x3e, 0x6e, - 0xc3, 0x65, 0xcb, 0x56, 0x3d, 0x9f, 0x58, 0x3a, 0x71, 0x75, 0x75, 0xfa, 0xe0, 0xa0, 0x12, 0x4d, - 0xa3, 0x9e, 0x67, 0x8b, 0x92, 0x12, 0x79, 0x79, 0xd7, 0xb2, 0xfb, 0x01, 0x78, 0x7a, 0xd6, 0xd6, - 0x03, 0xe8, 0x0c, 0x83, 0x32, 0xcb, 0x18, 0xf4, 0x0e, 0x14, 0xc7, 0xc4, 0x51, 0xa9, 0xe5, 0xbb, - 0x67, 0xbc, 0xff, 0x2b, 0x28, 0x85, 0x31, 0x71, 0x64, 0x36, 0x7e, 0x73, 0x2b, 0x91, 0xcc, 0x66, - 0x01, 0x15, 0x1f, 0x66, 0x0b, 0x45, 0x04, 0xd5, 0x7f, 0x66, 0xa0, 0x1c, 0xef, 0x07, 0x59, 0x7b, - 0xad, 0xf1, 0xb3, 0x3f, 0xc5, 0x4f, 0x87, 0x0f, 0x5e, 0xd9, 0x3d, 0xd6, 0x1a, 0xac, 0x28, 0xec, - 0xe7, 0x45, 0x97, 0xa6, 0x08, 0x4b, 0x56, 0x90, 0xd9, 0x79, 0x40, 0x45, 0xef, 0x5f, 0x50, 0x82, - 0x11, 0x3e, 0x84, 0xfc, 0x13, 0x8f, 0xfb, 0xce, 0x73, 0xdf, 0x1f, 0xbe, 0xda, 0xf7, 0xc3, 0x3e, - 0x77, 0x5e, 0x7c, 0xd8, 0x57, 0x3b, 0x5d, 0xe5, 0xa8, 0xde, 0x56, 0x02, 0x73, 0x7c, 0x09, 0xb2, - 0x26, 0xf9, 0xe6, 0x2c, 0x59, 0x3e, 0xb8, 0xe8, 0xbc, 0x8b, 0x70, 0x09, 0xb2, 0xcf, 0x29, 0x79, - 0x9a, 0x3c, 0xb4, 0xb9, 0xe8, 0x0d, 0x6e, 0x86, 0x5d, 0xc8, 0xf1, 0x7c, 0x61, 0x80, 0x20, 0x63, - 0xe8, 0x2d, 0x5c, 0x80, 0x6c, 0xa3, 0xab, 0xb0, 0x0d, 0x81, 0xa0, 0x2c, 0xa4, 0x6a, 0xaf, 0x25, - 0x37, 0x64, 0x94, 0xae, 0xde, 0x86, 0xbc, 0x48, 0x02, 0xdb, 0x2c, 0x51, 0x1a, 0xd0, 0x5b, 0xc1, - 0x30, 0xf0, 0x91, 0x0a, 0xb5, 0xc7, 0x47, 0x07, 0xb2, 0x82, 0xd2, 0xc9, 0xa5, 0xce, 0xa2, 0x5c, - 0xd5, 0x83, 0x72, 0xbc, 0x21, 0xfc, 0x51, 0x58, 0x56, 0xfd, 0x6b, 0x0a, 0x4a, 0xb1, 0x06, 0x8f, - 0xb5, 0x16, 0xc4, 0x34, 0xed, 0xe7, 0x2a, 0x31, 0x0d, 0xe2, 0x05, 0xd4, 0x00, 0x2e, 0xaa, 0x33, - 0xc9, 0x79, 0x97, 0xee, 0x47, 0xda, 0x22, 0x39, 0x94, 0xaf, 0xfe, 0x29, 0x05, 0x68, 0xb6, 0x45, - 0x9c, 0x09, 0x33, 0xf5, 0x53, 0x86, 0x59, 0xfd, 0x63, 0x0a, 0x2a, 0xc9, 0xbe, 0x70, 0x26, 0xbc, - 0x2b, 0x3f, 0x69, 0x78, 0xff, 0x48, 0xc3, 0x6a, 0xa2, 0x1b, 0x3c, 0x6f, 0x74, 0x5f, 0xc3, 0xba, - 0xa1, 0xd3, 0xb1, 0x63, 0xfb, 0xd4, 0xd2, 0xce, 0x54, 0x93, 0x3e, 0xa3, 0xa6, 0x54, 0xe5, 0x87, - 0xc6, 0xee, 0xab, 0xfb, 0xcd, 0x5a, 0x6b, 0x6a, 0xd7, 0x66, 0x66, 0xfb, 0x1b, 0xad, 0xa6, 0x7c, - 0xd4, 0xeb, 0x0e, 0xe4, 0x4e, 0xe3, 0xb1, 0x7a, 0xdc, 0xf9, 0x65, 0xa7, 0xfb, 0x65, 0x47, 0x41, - 0xc6, 0x0c, 0xec, 0x0d, 0x6e, 0xfb, 0x1e, 0xa0, 0xd9, 0xa0, 0xf0, 0x45, 0x58, 0x14, 0x16, 0x7a, - 0x0b, 0x6f, 0xc0, 0x5a, 0xa7, 0xab, 0xf6, 0x5b, 0x4d, 0x59, 0x95, 0x1f, 0x3c, 0x90, 0x1b, 0x83, - 0xbe, 0xb8, 0x80, 0x47, 0xe8, 0x41, 0x62, 0x83, 0x57, 0xff, 0x90, 0x81, 0x8d, 0x05, 0x91, 0xe0, - 0x7a, 0xd0, 0xfb, 0x8b, 0xeb, 0xc8, 0x8d, 0xf3, 0x44, 0x5f, 0x63, 0xdd, 0x45, 0x8f, 0xb8, 0x7e, - 0x70, 0x55, 0xf8, 0x04, 0x58, 0x96, 0x2c, 0xdf, 0x18, 0x1a, 0xd4, 0x0d, 0xde, 0x2b, 0xc4, 0x85, - 0x60, 0x6d, 0x2a, 0x17, 0x4f, 0x16, 0x3f, 0x03, 0xec, 0xd8, 0x9e, 0xe1, 0x1b, 0xcf, 0xa8, 0x6a, - 0x58, 0xe1, 0xe3, 0x06, 0xbb, 0x20, 0x64, 0x15, 0x14, 0x6a, 0x5a, 0x96, 0x1f, 0xa1, 0x2d, 0x3a, - 0x22, 0x33, 0x68, 0x76, 0x98, 0x67, 0x14, 0x14, 0x6a, 0x22, 0xf4, 0x15, 0x28, 0xeb, 0xf6, 0x84, - 0xb5, 0x5b, 0x02, 0xc7, 0x6a, 0x47, 0x4a, 0x29, 0x09, 0x59, 0x04, 0x09, 0xfa, 0xe1, 0xe9, 0xab, - 0x4a, 0x59, 0x29, 0x09, 0x99, 0x80, 0x5c, 0x85, 0x35, 0x32, 0x1a, 0xb9, 0xcc, 0x79, 0xe8, 0x48, - 0x74, 0xf8, 0x95, 0x48, 0xcc, 0x81, 0x5b, 0x0f, 0xa1, 0x10, 0xe6, 0x81, 0x95, 0x6a, 0x96, 0x09, - 0xd5, 0x11, 0x6f, 0x5b, 0xe9, 0x9d, 0xa2, 0x52, 0xb0, 0x42, 0xe5, 0x15, 0x28, 0x1b, 0x9e, 0x3a, - 0x7d, 0x64, 0x4d, 0x6f, 0xa7, 0x77, 0x0a, 0x4a, 0xc9, 0xf0, 0xa2, 0x57, 0xb5, 0xea, 0x77, 0x69, - 0xa8, 0x24, 0x1f, 0x89, 0x71, 0x13, 0x0a, 0xa6, 0xad, 0x11, 0x4e, 0x2d, 0xf1, 0x0b, 0xc5, 0xce, - 0x6b, 0xde, 0x95, 0x6b, 0xed, 0x00, 0xaf, 0x44, 0x96, 0x5b, 0x7f, 0x4b, 0x41, 0x21, 0x14, 0xe3, - 0x0b, 0x90, 0x75, 0x88, 0x7f, 0xca, 0xdd, 0xe5, 0x0e, 0xd2, 0x28, 0xa5, 0xf0, 0x31, 0x93, 0x7b, - 0x0e, 0xb1, 0x38, 0x05, 0x02, 0x39, 0x1b, 0xb3, 0x75, 0x35, 0x29, 0xd1, 0xf9, 0xf5, 0xc1, 0x1e, - 0x8f, 0xa9, 0xe5, 0x7b, 0xe1, 0xba, 0x06, 0xf2, 0x46, 0x20, 0xc6, 0xd7, 0x61, 0xdd, 0x77, 0x89, - 0x61, 0x26, 0xb0, 0x59, 0x8e, 0x45, 0xa1, 0x22, 0x02, 0xef, 0xc3, 0xa5, 0xd0, 0xaf, 0x4e, 0x7d, - 0xa2, 0x9d, 0x52, 0x7d, 0x6a, 0x94, 0xe7, 0x2f, 0x90, 0x17, 0x03, 0x40, 0x33, 0xd0, 0x87, 0xb6, - 0xd5, 0xef, 0x53, 0xb0, 0x1e, 0x5e, 0x78, 0xf4, 0x28, 0x59, 0x47, 0x00, 0xc4, 0xb2, 0x6c, 0x3f, - 0x9e, 0xae, 0x79, 0x2a, 0xcf, 0xd9, 0xd5, 0xea, 0x91, 0x91, 0x12, 0x73, 0xb0, 0x35, 0x06, 0x98, - 0x6a, 0x96, 0xa6, 0xed, 0x32, 0x94, 0x82, 0x5f, 0x00, 0xf8, 0xcf, 0x48, 0xe2, 0x8a, 0x0c, 0x42, - 0xc4, 0x6e, 0x46, 0x78, 0x13, 0x72, 0x27, 0x74, 0x64, 0x58, 0xc1, 0xbb, 0xa4, 0x18, 0x84, 0xaf, - 0x9d, 0xd9, 0xe8, 0xb5, 0xf3, 0xe0, 0x77, 0x29, 0xd8, 0xd0, 0xec, 0xf1, 0x6c, 0xbc, 0x07, 0x68, - 0xe6, 0x9e, 0xee, 0x7d, 0x91, 0xfa, 0xea, 0xfe, 0xc8, 0xf0, 0x4f, 0x27, 0x27, 0x35, 0xcd, 0x1e, - 0xef, 0x8e, 0x6c, 0x93, 0x58, 0xa3, 0xe9, 0xef, 0x60, 0xfc, 0x1f, 0xed, 0xc6, 0x88, 0x5a, 0x37, - 0x46, 0x76, 0xec, 0x57, 0xb1, 0x7b, 0xd3, 0x7f, 0xbf, 0x4d, 0x67, 0x0e, 0x7b, 0x07, 0x7f, 0x4e, - 0x6f, 0x1d, 0x8a, 0x6f, 0xf5, 0xc2, 0xdc, 0x28, 0x74, 0x68, 0x52, 0x8d, 0xcd, 0xf7, 0x7f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x8e, 0x54, 0xe7, 0xef, 0x60, 0x1b, 0x00, 0x00, + // 2287 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x73, 0xdb, 0xc6, + 0x15, 0x0f, 0xf8, 0x25, 0xf2, 0x91, 0xa2, 0x56, 0x2b, 0xc5, 0x86, 0xe5, 0x38, 0x96, 0x19, 0x3b, + 0x96, 0xed, 0x96, 0xce, 0xc8, 0x1f, 0x71, 0x94, 0x4e, 0x3a, 0x94, 0x08, 0x2b, 0xf4, 0x50, 0x22, + 0x0b, 0x4a, 0xad, 0x93, 0x1e, 0x30, 0x2b, 0x60, 0x49, 0xc1, 0x06, 0x17, 0x28, 0x00, 0xda, 0x56, + 0x4e, 0x9e, 0xe9, 0xa9, 0xc7, 0xde, 0x3a, 0x6d, 0xa7, 0xd3, 0xc9, 0x25, 0x33, 0xfd, 0x03, 0x7a, + 0xe8, 0xbd, 0xd7, 0xce, 0xf4, 0xde, 0x63, 0x67, 0xda, 0xff, 0xa0, 0xd7, 0xce, 0xee, 0x02, 0x20, + 0xf8, 0x15, 0xab, 0x99, 0x49, 0xd2, 0x93, 0xb8, 0xbf, 0xf7, 0x7b, 0x0f, 0x6f, 0xdf, 0x3e, 0xbc, + 0xf7, 0xb0, 0x82, 0xcd, 0x81, 0xeb, 0x0e, 0x1c, 0x7a, 0xd7, 0xf3, 0xdd, 0xd0, 0x3d, 0x19, 0xf5, + 0xef, 0x5a, 0x34, 0x30, 0x7d, 0xdb, 0x0b, 0x5d, 0xbf, 0x2e, 0x30, 0xbc, 0x22, 0x19, 0xf5, 0x98, + 0x51, 0x3b, 0x80, 0xd5, 0xc7, 0xb6, 0x43, 0x9b, 0x09, 0xb1, 0x47, 0x43, 0xfc, 0x08, 0x72, 0x7d, + 0xdb, 0xa1, 0xaa, 0xb2, 0x99, 0xdd, 0x2a, 0x6f, 0x5f, 0xaf, 0x4f, 0x29, 0xd5, 0x27, 0x35, 0xba, + 0x1c, 0xd6, 0x85, 0x46, 0xed, 0x9f, 0x39, 0x58, 0x9b, 0x23, 0xc5, 0x18, 0x72, 0x8c, 0x0c, 0xb9, + 0x45, 0x65, 0xab, 0xa4, 0x8b, 0xdf, 0x58, 0x85, 0x25, 0x8f, 0x98, 0xcf, 0xc9, 0x80, 0xaa, 0x19, + 0x01, 0xc7, 0x4b, 0xfc, 0x2e, 0x80, 0x45, 0x3d, 0xca, 0x2c, 0xca, 0xcc, 0x33, 0x35, 0xbb, 0x99, + 0xdd, 0x2a, 0xe9, 0x29, 0x04, 0xdf, 0x81, 0x55, 0x6f, 0x74, 0xe2, 0xd8, 0xa6, 0x91, 0xa2, 0xc1, + 0x66, 0x76, 0x2b, 0xaf, 0x23, 0x29, 0x68, 0x8e, 0xc9, 0x37, 0x61, 0xe5, 0x25, 0x25, 0xcf, 0xd3, + 0xd4, 0xb2, 0xa0, 0x56, 0x39, 0x9c, 0x22, 0xee, 0x41, 0x65, 0x48, 0x83, 0x80, 0x0c, 0xa8, 0x11, + 0x9e, 0x79, 0x54, 0xcd, 0x89, 0xdd, 0x6f, 0xce, 0xec, 0x7e, 0x7a, 0xe7, 0xe5, 0x48, 0xeb, 0xe8, + 0xcc, 0xa3, 0xb8, 0x01, 0x25, 0xca, 0x46, 0x43, 0x69, 0x21, 0xbf, 0x20, 0x7e, 0x1a, 0x1b, 0x0d, + 0xa7, 0xad, 0x14, 0xb9, 0x5a, 0x64, 0x62, 0x29, 0xa0, 0xfe, 0x0b, 0xdb, 0xa4, 0x6a, 0x41, 0x18, + 0xb8, 0x39, 0x63, 0xa0, 0x27, 0xe5, 0xd3, 0x36, 0x62, 0x3d, 0xbc, 0x07, 0x25, 0xfa, 0x2a, 0xa4, + 0x2c, 0xb0, 0x5d, 0xa6, 0x2e, 0x09, 0x23, 0x37, 0xe6, 0x9c, 0x22, 0x75, 0xac, 0x69, 0x13, 0x63, + 0x3d, 0xfc, 0x10, 0x96, 0x5c, 0x2f, 0xb4, 0x5d, 0x16, 0xa8, 0xc5, 0x4d, 0x65, 0xab, 0xbc, 0xfd, + 0xce, 0xdc, 0x44, 0xe8, 0x48, 0x8e, 0x1e, 0x93, 0x71, 0x0b, 0x50, 0xe0, 0x8e, 0x7c, 0x93, 0x1a, + 0xa6, 0x6b, 0x51, 0xc3, 0x66, 0x7d, 0x57, 0x2d, 0x09, 0x03, 0x57, 0x67, 0x37, 0x22, 0x88, 0x7b, + 0xae, 0x45, 0x5b, 0xac, 0xef, 0xea, 0xd5, 0x60, 0x62, 0x8d, 0x2f, 0x40, 0x21, 0x38, 0x63, 0x21, + 0x79, 0xa5, 0x56, 0x44, 0x86, 0x44, 0xab, 0xda, 0x7f, 0xf2, 0xb0, 0x72, 0x9e, 0x14, 0xfb, 0x18, + 0xf2, 0x7d, 0xbe, 0x4b, 0x35, 0xf3, 0xbf, 0xc4, 0x40, 0xea, 0x4c, 0x06, 0xb1, 0xf0, 0x0d, 0x83, + 0xd8, 0x80, 0x32, 0xa3, 0x41, 0x48, 0x2d, 0x99, 0x11, 0xd9, 0x73, 0xe6, 0x14, 0x48, 0xa5, 0xd9, + 0x94, 0xca, 0x7d, 0xa3, 0x94, 0x7a, 0x0a, 0x2b, 0x89, 0x4b, 0x86, 0x4f, 0xd8, 0x20, 0xce, 0xcd, + 0xbb, 0x6f, 0xf2, 0xa4, 0xae, 0xc5, 0x7a, 0x3a, 0x57, 0xd3, 0xab, 0x74, 0x62, 0x8d, 0x9b, 0x00, + 0x2e, 0xa3, 0x6e, 0xdf, 0xb0, 0xa8, 0xe9, 0xa8, 0xc5, 0x05, 0x51, 0xea, 0x70, 0xca, 0x4c, 0x94, + 0x5c, 0x89, 0x9a, 0x0e, 0xfe, 0x68, 0x9c, 0x6a, 0x4b, 0x0b, 0x32, 0xe5, 0x40, 0xbe, 0x64, 0x33, + 0xd9, 0x76, 0x0c, 0x55, 0x9f, 0xf2, 0xbc, 0xa7, 0x56, 0xb4, 0xb3, 0x92, 0x70, 0xa2, 0xfe, 0xc6, + 0x9d, 0xe9, 0x91, 0x9a, 0xdc, 0xd8, 0xb2, 0x9f, 0x5e, 0xe2, 0xf7, 0x20, 0x01, 0x0c, 0x91, 0x56, + 0x20, 0xaa, 0x50, 0x25, 0x06, 0x0f, 0xc9, 0x90, 0x6e, 0x3c, 0x82, 0xea, 0x64, 0x78, 0xf0, 0x3a, + 0xe4, 0x83, 0x90, 0xf8, 0xa1, 0xc8, 0xc2, 0xbc, 0x2e, 0x17, 0x18, 0x41, 0x96, 0x32, 0x4b, 0x54, + 0xb9, 0xbc, 0xce, 0x7f, 0x6e, 0x7c, 0x08, 0xcb, 0x13, 0x8f, 0x3f, 0xaf, 0x62, 0xed, 0x37, 0x05, + 0x58, 0x9f, 0x97, 0x73, 0x73, 0xd3, 0xff, 0x02, 0x14, 0xd8, 0x68, 0x78, 0x42, 0x7d, 0x35, 0x2b, + 0x2c, 0x44, 0x2b, 0xdc, 0x80, 0xbc, 0x43, 0x4e, 0xa8, 0xa3, 0xe6, 0x36, 0x95, 0xad, 0xea, 0xf6, + 0x9d, 0x73, 0x65, 0x75, 0xbd, 0xcd, 0x55, 0x74, 0xa9, 0x89, 0x3f, 0x81, 0x5c, 0x54, 0xe2, 0xb8, + 0x85, 0xdb, 0xe7, 0xb3, 0xc0, 0x73, 0x51, 0x17, 0x7a, 0xf8, 0x32, 0x94, 0xf8, 0x5f, 0x19, 0xdb, + 0x82, 0xf0, 0xb9, 0xc8, 0x01, 0x1e, 0x57, 0xbc, 0x01, 0x45, 0x91, 0x66, 0x16, 0x8d, 0x5b, 0x43, + 0xb2, 0xe6, 0x07, 0x63, 0xd1, 0x3e, 0x19, 0x39, 0xa1, 0xf1, 0x82, 0x38, 0x23, 0x2a, 0x12, 0xa6, + 0xa4, 0x57, 0x22, 0xf0, 0xa7, 0x1c, 0xc3, 0x57, 0xa1, 0x2c, 0xb3, 0xd2, 0x66, 0x16, 0x7d, 0x25, + 0xaa, 0x4f, 0x5e, 0x97, 0x89, 0xda, 0xe2, 0x08, 0x7f, 0xfc, 0xb3, 0xc0, 0x65, 0xf1, 0xd1, 0x8a, + 0x47, 0x70, 0x40, 0x3c, 0xfe, 0xc3, 0xe9, 0xc2, 0x77, 0x65, 0xfe, 0xf6, 0xa6, 0x73, 0xb1, 0xf6, + 0xe7, 0x0c, 0xe4, 0xc4, 0xfb, 0xb6, 0x02, 0xe5, 0xa3, 0xcf, 0xba, 0x9a, 0xd1, 0xec, 0x1c, 0xef, + 0xb6, 0x35, 0xa4, 0xe0, 0x2a, 0x80, 0x00, 0x1e, 0xb7, 0x3b, 0x8d, 0x23, 0x94, 0x49, 0xd6, 0xad, + 0xc3, 0xa3, 0x87, 0xf7, 0x51, 0x36, 0x51, 0x38, 0x96, 0x40, 0x2e, 0x4d, 0xb8, 0xb7, 0x8d, 0xf2, + 0x18, 0x41, 0x45, 0x1a, 0x68, 0x3d, 0xd5, 0x9a, 0x0f, 0xef, 0xa3, 0xc2, 0x24, 0x72, 0x6f, 0x1b, + 0x2d, 0xe1, 0x65, 0x28, 0x09, 0x64, 0xb7, 0xd3, 0x69, 0xa3, 0x62, 0x62, 0xb3, 0x77, 0xa4, 0xb7, + 0x0e, 0xf7, 0x51, 0x29, 0xb1, 0xb9, 0xaf, 0x77, 0x8e, 0xbb, 0x08, 0x12, 0x0b, 0x07, 0x5a, 0xaf, + 0xd7, 0xd8, 0xd7, 0x50, 0x39, 0x61, 0xec, 0x7e, 0x76, 0xa4, 0xf5, 0x50, 0x65, 0xc2, 0xad, 0x7b, + 0xdb, 0x68, 0x39, 0x79, 0x84, 0x76, 0x78, 0x7c, 0x80, 0xaa, 0x78, 0x15, 0x96, 0xe5, 0x23, 0x62, + 0x27, 0x56, 0xa6, 0xa0, 0x87, 0xf7, 0x11, 0x1a, 0x3b, 0x22, 0xad, 0xac, 0x4e, 0x00, 0x0f, 0xef, + 0x23, 0x5c, 0xdb, 0x83, 0xbc, 0xc8, 0x2e, 0x8c, 0xa1, 0xda, 0x6e, 0xec, 0x6a, 0x6d, 0xa3, 0xd3, + 0x3d, 0x6a, 0x75, 0x0e, 0x1b, 0x6d, 0xa4, 0x8c, 0x31, 0x5d, 0xfb, 0xc9, 0x71, 0x4b, 0xd7, 0x9a, + 0x28, 0x93, 0xc6, 0xba, 0x5a, 0xe3, 0x48, 0x6b, 0xa2, 0x6c, 0xcd, 0x84, 0xf5, 0x79, 0x75, 0x66, + 0xee, 0x9b, 0x91, 0x3a, 0xe2, 0xcc, 0x82, 0x23, 0x16, 0xb6, 0x66, 0x8e, 0xf8, 0x4b, 0x05, 0xd6, + 0xe6, 0xd4, 0xda, 0xb9, 0x0f, 0xf9, 0x31, 0xe4, 0x65, 0x8a, 0xca, 0xee, 0x73, 0x6b, 0x6e, 0xd1, + 0x16, 0x09, 0x3b, 0xd3, 0x81, 0x84, 0x5e, 0xba, 0x03, 0x67, 0x17, 0x74, 0x60, 0x6e, 0x62, 0xc6, + 0xc9, 0x5f, 0x2a, 0xa0, 0x2e, 0xb2, 0xfd, 0x86, 0x42, 0x91, 0x99, 0x28, 0x14, 0x1f, 0x4f, 0x3b, + 0x70, 0x6d, 0xf1, 0x1e, 0x66, 0xbc, 0xf8, 0x4a, 0x81, 0x0b, 0xf3, 0x07, 0x95, 0xb9, 0x3e, 0x7c, + 0x02, 0x85, 0x21, 0x0d, 0x4f, 0xdd, 0xb8, 0x59, 0xbf, 0x3f, 0xa7, 0x05, 0x70, 0xf1, 0x74, 0xac, + 0x22, 0xad, 0x74, 0x0f, 0xc9, 0x2e, 0x9a, 0x36, 0xa4, 0x37, 0x33, 0x9e, 0xfe, 0x2a, 0x03, 0x6f, + 0xcf, 0x35, 0x3e, 0xd7, 0xd1, 0x2b, 0x00, 0x36, 0xf3, 0x46, 0xa1, 0x6c, 0xc8, 0xb2, 0x3e, 0x95, + 0x04, 0x22, 0xde, 0x7d, 0x5e, 0x7b, 0x46, 0x61, 0x22, 0xcf, 0x0a, 0x39, 0x48, 0x48, 0x10, 0x1e, + 0x8d, 0x1d, 0xcd, 0x09, 0x47, 0xdf, 0x5d, 0xb0, 0xd3, 0x99, 0x5e, 0xf7, 0x01, 0x20, 0xd3, 0xb1, + 0x29, 0x0b, 0x8d, 0x20, 0xf4, 0x29, 0x19, 0xda, 0x6c, 0x20, 0x0a, 0x70, 0x71, 0x27, 0xdf, 0x27, + 0x4e, 0x40, 0xf5, 0x15, 0x29, 0xee, 0xc5, 0x52, 0xae, 0x21, 0xba, 0x8c, 0x9f, 0xd2, 0x28, 0x4c, + 0x68, 0x48, 0x71, 0xa2, 0x51, 0xfb, 0xf5, 0x12, 0x94, 0x53, 0x63, 0x1d, 0xbe, 0x06, 0x95, 0x67, + 0xe4, 0x05, 0x31, 0xe2, 0x51, 0x5d, 0x46, 0xa2, 0xcc, 0xb1, 0x6e, 0x34, 0xae, 0x7f, 0x00, 0xeb, + 0x82, 0xe2, 0x8e, 0x42, 0xea, 0x1b, 0xa6, 0x43, 0x82, 0x40, 0x04, 0xad, 0x28, 0xa8, 0x98, 0xcb, + 0x3a, 0x5c, 0xb4, 0x17, 0x4b, 0xf0, 0x03, 0x58, 0x13, 0x1a, 0xc3, 0x91, 0x13, 0xda, 0x9e, 0x43, + 0x0d, 0xfe, 0xf1, 0x10, 0x88, 0x42, 0x9c, 0x78, 0xb6, 0xca, 0x19, 0x07, 0x11, 0x81, 0x7b, 0x14, + 0xe0, 0x7d, 0xb8, 0x22, 0xd4, 0x06, 0x94, 0x51, 0x9f, 0x84, 0xd4, 0xa0, 0xbf, 0x18, 0x11, 0x27, + 0x30, 0x08, 0xb3, 0x8c, 0x53, 0x12, 0x9c, 0xaa, 0xeb, 0x69, 0x03, 0x97, 0x38, 0x77, 0x3f, 0xa2, + 0x6a, 0x82, 0xd9, 0x60, 0xd6, 0xa7, 0x24, 0x38, 0xc5, 0x3b, 0x70, 0x41, 0x18, 0x0a, 0x42, 0xdf, + 0x66, 0x03, 0xc3, 0x3c, 0xa5, 0xe6, 0x73, 0x63, 0x14, 0xf6, 0x1f, 0xa9, 0x97, 0xd3, 0x16, 0x84, + 0x93, 0x3d, 0xc1, 0xd9, 0xe3, 0x94, 0xe3, 0xb0, 0xff, 0x08, 0xf7, 0xa0, 0xc2, 0xcf, 0x63, 0x68, + 0x7f, 0x41, 0x8d, 0xbe, 0xeb, 0x8b, 0xe6, 0x52, 0x9d, 0xf3, 0x72, 0xa7, 0x82, 0x58, 0xef, 0x44, + 0x0a, 0x07, 0xae, 0x45, 0x77, 0xf2, 0xbd, 0xae, 0xa6, 0x35, 0xf5, 0x72, 0x6c, 0xe5, 0xb1, 0xeb, + 0xf3, 0x9c, 0x1a, 0xb8, 0x49, 0x8c, 0xcb, 0x32, 0xa7, 0x06, 0x6e, 0x1c, 0xe1, 0x07, 0xb0, 0x66, + 0x9a, 0x72, 0xdb, 0xb6, 0x69, 0x44, 0x53, 0x7e, 0xa0, 0xa2, 0x89, 0x78, 0x99, 0xe6, 0xbe, 0x24, + 0x44, 0x69, 0x1e, 0xe0, 0x8f, 0xe0, 0xed, 0x71, 0xbc, 0xd2, 0x8a, 0xab, 0x33, 0xbb, 0x9c, 0x56, + 0x7d, 0x00, 0x6b, 0xde, 0xd9, 0xac, 0x22, 0x9e, 0x78, 0xa2, 0x77, 0x36, 0xad, 0x76, 0x43, 0x7c, + 0xb9, 0xf9, 0xd4, 0x24, 0x21, 0xb5, 0xd4, 0x8b, 0x69, 0x76, 0x4a, 0x80, 0xef, 0x02, 0x32, 0x4d, + 0x83, 0x32, 0x72, 0xe2, 0x50, 0x83, 0xf8, 0x94, 0x91, 0x40, 0xbd, 0x9a, 0x26, 0x57, 0x4d, 0x53, + 0x13, 0xd2, 0x86, 0x10, 0xe2, 0xdb, 0xb0, 0xea, 0x9e, 0x3c, 0x33, 0x65, 0x72, 0x19, 0x9e, 0x4f, + 0xfb, 0xf6, 0x2b, 0xf5, 0xba, 0x08, 0xd3, 0x0a, 0x17, 0x88, 0xd4, 0xea, 0x0a, 0x18, 0xdf, 0x02, + 0x64, 0x06, 0xa7, 0xc4, 0xf7, 0x44, 0x77, 0x0f, 0x3c, 0x62, 0x52, 0xf5, 0x86, 0xa4, 0x4a, 0xfc, + 0x30, 0x86, 0xf1, 0x53, 0x58, 0x1f, 0x31, 0x9b, 0x85, 0xd4, 0xf7, 0x7c, 0xca, 0x87, 0x74, 0xf9, + 0xa6, 0xa9, 0xff, 0x5a, 0x5a, 0x30, 0x66, 0x1f, 0xa7, 0xd9, 0xf2, 0x74, 0xf5, 0xb5, 0xd1, 0x2c, + 0x58, 0xdb, 0x81, 0x4a, 0xfa, 0xd0, 0x71, 0x09, 0xe4, 0xb1, 0x23, 0x85, 0xf7, 0xd0, 0xbd, 0x4e, + 0x93, 0x77, 0xbf, 0xcf, 0x35, 0x94, 0xe1, 0x5d, 0xb8, 0xdd, 0x3a, 0xd2, 0x0c, 0xfd, 0xf8, 0xf0, + 0xa8, 0x75, 0xa0, 0xa1, 0xec, 0xed, 0x52, 0xf1, 0xdf, 0x4b, 0xe8, 0xf5, 0xeb, 0xd7, 0xaf, 0x33, + 0x4f, 0x72, 0xc5, 0xf7, 0xd1, 0xcd, 0xda, 0x5f, 0x33, 0x50, 0x9d, 0x9c, 0x7f, 0xf1, 0x8f, 0xe0, + 0x62, 0xfc, 0xb1, 0x1a, 0xd0, 0xd0, 0x78, 0x69, 0xfb, 0x22, 0x1b, 0x87, 0x44, 0x4e, 0x90, 0x49, + 0x20, 0xd7, 0x23, 0x56, 0x8f, 0x86, 0x3f, 0xb3, 0x7d, 0x9e, 0x6b, 0x43, 0x12, 0xe2, 0x36, 0x5c, + 0x65, 0xae, 0x11, 0x84, 0x84, 0x59, 0xc4, 0xb7, 0x8c, 0xf1, 0x35, 0x81, 0x41, 0x4c, 0x93, 0x06, + 0x81, 0x2b, 0x1b, 0x41, 0x62, 0xe5, 0x1d, 0xe6, 0xf6, 0x22, 0xf2, 0xb8, 0x42, 0x36, 0x22, 0xea, + 0xd4, 0xa1, 0x67, 0x17, 0x1d, 0xfa, 0x65, 0x28, 0x0d, 0x89, 0x67, 0x50, 0x16, 0xfa, 0x67, 0x62, + 0x6a, 0x2b, 0xea, 0xc5, 0x21, 0xf1, 0x34, 0xbe, 0xfe, 0xf6, 0x4e, 0x22, 0x15, 0xcd, 0xda, 0x3f, + 0xb2, 0x50, 0x49, 0x4f, 0x6e, 0x7c, 0x10, 0x36, 0x45, 0x95, 0x56, 0xc4, 0x4b, 0xfc, 0xde, 0xd7, + 0xce, 0x79, 0xf5, 0x3d, 0x5e, 0xbe, 0x77, 0x0a, 0x72, 0x9e, 0xd2, 0xa5, 0x26, 0x6f, 0x9d, 0xfc, + 0xb5, 0xa5, 0x72, 0x4a, 0x2f, 0xea, 0xd1, 0x0a, 0xef, 0x43, 0xe1, 0x59, 0x20, 0x6c, 0x17, 0x84, + 0xed, 0xeb, 0x5f, 0x6f, 0xfb, 0x49, 0x4f, 0x18, 0x2f, 0x3d, 0xe9, 0x19, 0x87, 0x1d, 0xfd, 0xa0, + 0xd1, 0xd6, 0x23, 0x75, 0x7c, 0x09, 0x72, 0x0e, 0xf9, 0xe2, 0x6c, 0xb2, 0xd0, 0x0b, 0xe8, 0xbc, + 0x81, 0xbf, 0x04, 0xb9, 0x97, 0x94, 0x3c, 0x9f, 0x2c, 0xaf, 0x02, 0xfa, 0x16, 0x5f, 0x80, 0xbb, + 0x90, 0x17, 0xf1, 0xc2, 0x00, 0x51, 0xc4, 0xd0, 0x5b, 0xb8, 0x08, 0xb9, 0xbd, 0x8e, 0xce, 0x5f, + 0x02, 0x04, 0x15, 0x89, 0x1a, 0xdd, 0x96, 0xb6, 0xa7, 0xa1, 0x4c, 0xed, 0x01, 0x14, 0x64, 0x10, + 0xf8, 0x0b, 0x92, 0x84, 0x01, 0xbd, 0x15, 0x2d, 0x23, 0x1b, 0x4a, 0x2c, 0x3d, 0x3e, 0xd8, 0xd5, + 0x74, 0x94, 0x49, 0x1f, 0x6f, 0x00, 0x95, 0xf4, 0xd0, 0xf6, 0xdd, 0xe4, 0xd4, 0x5f, 0x14, 0x28, + 0xa7, 0x86, 0x30, 0xde, 0xfe, 0x89, 0xe3, 0xb8, 0x2f, 0x0d, 0xe2, 0xd8, 0x24, 0x88, 0x92, 0x02, + 0x04, 0xd4, 0xe0, 0xc8, 0x79, 0x0f, 0xed, 0x3b, 0x71, 0xfe, 0x0f, 0x0a, 0xa0, 0xe9, 0x01, 0x6e, + 0xca, 0x41, 0xe5, 0x7b, 0x75, 0xf0, 0xf7, 0x0a, 0x54, 0x27, 0xa7, 0xb6, 0x29, 0xf7, 0xae, 0x7d, + 0xaf, 0xee, 0xfd, 0x4e, 0x81, 0xe5, 0x89, 0x59, 0xed, 0xff, 0xca, 0xbb, 0xdf, 0x66, 0x61, 0x6d, + 0x8e, 0x1e, 0x6e, 0x44, 0x43, 0xad, 0x9c, 0xb3, 0x7f, 0x78, 0x9e, 0x67, 0xd5, 0x79, 0xcf, 0xec, + 0x12, 0x3f, 0x8c, 0x66, 0xe0, 0x5b, 0x80, 0x6c, 0x8b, 0xb2, 0xd0, 0xee, 0xdb, 0xd4, 0x8f, 0x3e, + 0xc4, 0xe5, 0xa4, 0xbb, 0x32, 0xc6, 0xe5, 0xb7, 0xf8, 0x0f, 0x00, 0x7b, 0x6e, 0x60, 0x87, 0xf6, + 0x0b, 0x6a, 0xd8, 0x2c, 0xfe, 0x6a, 0xe7, 0x93, 0x6f, 0x4e, 0x47, 0xb1, 0xa4, 0xc5, 0xc2, 0x84, + 0xcd, 0xe8, 0x80, 0x4c, 0xb1, 0x79, 0xed, 0xcb, 0xea, 0x28, 0x96, 0x24, 0xec, 0x6b, 0x50, 0xb1, + 0xdc, 0x11, 0x1f, 0x22, 0x24, 0x8f, 0x97, 0x5a, 0x45, 0x2f, 0x4b, 0x2c, 0xa1, 0x44, 0x53, 0xde, + 0xf8, 0xba, 0xa0, 0xa2, 0x97, 0x25, 0x26, 0x29, 0x37, 0x61, 0x85, 0x0c, 0x06, 0x3e, 0x37, 0x1e, + 0x1b, 0x92, 0xa3, 0x6b, 0x35, 0x81, 0x05, 0x71, 0xe3, 0x09, 0x14, 0xe3, 0x38, 0xf0, 0x6e, 0xc6, + 0x23, 0x61, 0x78, 0xf2, 0xd2, 0x26, 0xb3, 0x55, 0xd2, 0x8b, 0x2c, 0x16, 0x5e, 0x83, 0x8a, 0x1d, + 0x18, 0xe3, 0xdb, 0xc3, 0xcc, 0x66, 0x66, 0xab, 0xa8, 0x97, 0xed, 0x20, 0xb9, 0x2e, 0xaa, 0x7d, + 0x95, 0x81, 0xea, 0xe4, 0xed, 0x27, 0x6e, 0x42, 0xd1, 0x71, 0x4d, 0x22, 0x12, 0x41, 0x5e, 0xbd, + 0x6f, 0xbd, 0xe1, 0xc2, 0xb4, 0xde, 0x8e, 0xf8, 0x7a, 0xa2, 0xb9, 0xf1, 0x37, 0x05, 0x8a, 0x31, + 0x8c, 0x2f, 0x40, 0xce, 0x23, 0xe1, 0xa9, 0x30, 0x97, 0xdf, 0xcd, 0x20, 0x45, 0x17, 0x6b, 0x8e, + 0x07, 0x1e, 0x61, 0x22, 0x05, 0x22, 0x9c, 0xaf, 0xf9, 0xb9, 0x3a, 0x94, 0x58, 0x62, 0x28, 0x76, + 0x87, 0x43, 0xca, 0xc2, 0x20, 0x3e, 0xd7, 0x08, 0xdf, 0x8b, 0x60, 0x7c, 0x07, 0x56, 0x43, 0x9f, + 0xd8, 0xce, 0x04, 0x37, 0x27, 0xb8, 0x28, 0x16, 0x24, 0xe4, 0x1d, 0xb8, 0x14, 0xdb, 0xb5, 0x68, + 0x48, 0xcc, 0x53, 0x6a, 0x8d, 0x95, 0x0a, 0xe2, 0x6a, 0xed, 0x62, 0x44, 0x68, 0x46, 0xf2, 0x58, + 0xb7, 0xf6, 0x77, 0x05, 0x56, 0xe3, 0x31, 0xde, 0x4a, 0x82, 0x75, 0x00, 0x40, 0x18, 0x73, 0xc3, + 0x74, 0xb8, 0x66, 0x53, 0x79, 0x46, 0xaf, 0xde, 0x48, 0x94, 0xf4, 0x94, 0x81, 0x8d, 0x21, 0xc0, + 0x58, 0xb2, 0x30, 0x6c, 0x57, 0xa1, 0x1c, 0x5d, 0x6d, 0x8b, 0xff, 0x8f, 0xc8, 0x6f, 0x3f, 0x90, + 0x10, 0x9f, 0xf7, 0xf1, 0x3a, 0xe4, 0x4f, 0xe8, 0xc0, 0x66, 0xd1, 0x85, 0x9b, 0x5c, 0xc4, 0xd7, + 0x78, 0xb9, 0xe4, 0x1a, 0x6f, 0xf7, 0xe7, 0xb0, 0x66, 0xba, 0xc3, 0x69, 0x77, 0x77, 0xd1, 0xd4, + 0xf7, 0x67, 0xf0, 0xa9, 0xf2, 0x39, 0x8c, 0xa7, 0xb3, 0x3f, 0x2a, 0xca, 0x97, 0x99, 0xec, 0x7e, + 0x77, 0xf7, 0x4f, 0x99, 0x8d, 0x7d, 0xa9, 0xda, 0x8d, 0x77, 0xaa, 0xd3, 0xbe, 0x43, 0x4d, 0xee, + 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0x54, 0xc8, 0x7d, 0x07, 0x1a, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go index 211ab5d3a..0e5d2b70d 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go @@ -1237,8 +1237,9 @@ func (g *Generator) generate(file *FileDescriptor) { // Generate the header, including package definition func (g *Generator) generateHeader() { - g.P("// Code generated by protoc-gen-go. DO NOT EDIT.") + g.P("// Code generated by protoc-gen-go.") g.P("// source: ", g.file.Name) + g.P("// DO NOT EDIT!") g.P() name := g.file.PackageName() @@ -2075,6 +2076,11 @@ func (g *Generator) generateMessage(message *Descriptor) { star = "*" } + // In proto3, only generate getters for message fields and oneof fields. + if message.proto3() && *field.Type != descriptor.FieldDescriptorProto_TYPE_MESSAGE && !oneof { + continue + } + // Only export getter symbols for basic types, // and for messages and enums in the same package. // Groups are not exported. @@ -2133,11 +2139,7 @@ func (g *Generator) generateMessage(message *Descriptor) { continue } if !oneof { - if message.proto3() { - g.P("if m != nil {") - } else { - g.P("if m != nil && m." + fname + " != nil {") - } + g.P("if m != nil && m." + fname + " != nil {") g.In() g.P("return " + star + "m." + fname) g.Out() @@ -2555,7 +2557,6 @@ func (g *Generator) generateExtension(ext *ExtensionDescriptor) { g.P("Field: ", field.Number, ",") g.P(`Name: "`, extName, `",`) g.P("Tag: ", tag, ",") - g.P(`Filename: "`, g.file.GetName(), `",`) g.Out() g.P("}") diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile index 4095623e0..eb41f20da 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile @@ -33,9 +33,10 @@ # at src/google/protobuf/compiler/plugin.proto # Also we need to fix an import. regenerate: - @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION - protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:../../../../.. \ - -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/compiler/plugin.proto + echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION + protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:. \ + -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/compiler/plugin.proto && \ + mv google/protobuf/compiler/plugin.pb.go $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/plugin restore: cp plugin.pb.golden plugin.pb.go diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go index c608a248b..0ff4e13a8 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: google/protobuf/compiler/plugin.proto +// DO NOT EDIT! /* Package plugin_go is a generated protocol buffer package. @@ -8,7 +9,6 @@ It is generated from these files: google/protobuf/compiler/plugin.proto It has these top-level messages: - Version CodeGeneratorRequest CodeGeneratorResponse */ @@ -30,50 +30,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package -// The version number of protocol compiler. -type Version struct { - Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` - Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` - Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Version) GetMajor() int32 { - if m != nil && m.Major != nil { - return *m.Major - } - return 0 -} - -func (m *Version) GetMinor() int32 { - if m != nil && m.Minor != nil { - return *m.Minor - } - return 0 -} - -func (m *Version) GetPatch() int32 { - if m != nil && m.Patch != nil { - return *m.Patch - } - return 0 -} - -func (m *Version) GetSuffix() string { - if m != nil && m.Suffix != nil { - return *m.Suffix - } - return "" -} - // An encoded CodeGeneratorRequest is written to the plugin's stdin. type CodeGeneratorRequest struct { // The .proto files that were explicitly listed on the command-line. The @@ -93,19 +49,14 @@ type CodeGeneratorRequest struct { // the entire set into memory at once. However, as of this writing, this // is not similarly optimized on protoc's end -- it will store all fields in // memory at once before sending them to the plugin. - // - // Type names of fields and extensions in the FileDescriptorProto are always - // fully qualified. - ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` - // The version number of protocol compiler. - CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` - XXX_unrecognized []byte `json:"-"` + ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` + XXX_unrecognized []byte `json:"-"` } func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} } func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorRequest) ProtoMessage() {} -func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (m *CodeGeneratorRequest) GetFileToGenerate() []string { if m != nil { @@ -128,13 +79,6 @@ func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorP return nil } -func (m *CodeGeneratorRequest) GetCompilerVersion() *Version { - if m != nil { - return m.CompilerVersion - } - return nil -} - // The plugin writes an encoded CodeGeneratorResponse to stdout. type CodeGeneratorResponse struct { // Error message. If non-empty, code generation failed. The plugin process @@ -153,7 +97,7 @@ type CodeGeneratorResponse struct { func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} } func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorResponse) ProtoMessage() {} -func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *CodeGeneratorResponse) GetError() string { if m != nil && m.Error != nil { @@ -229,7 +173,7 @@ type CodeGeneratorResponse_File struct { func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} } func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) } func (*CodeGeneratorResponse_File) ProtoMessage() {} -func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } +func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } func (m *CodeGeneratorResponse_File) GetName() string { if m != nil && m.Name != nil { @@ -253,7 +197,6 @@ func (m *CodeGeneratorResponse_File) GetContent() string { } func init() { - proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version") proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest") proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse") proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File") @@ -262,32 +205,25 @@ func init() { func init() { proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41, - 0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2, - 0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30, - 0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa, - 0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91, - 0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63, - 0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb, - 0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55, - 0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8, - 0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1, - 0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f, - 0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d, - 0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2, - 0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a, - 0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2, - 0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d, - 0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda, - 0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed, - 0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34, - 0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79, - 0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45, - 0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4, - 0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e, - 0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92, - 0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d, - 0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00, - 0x00, + // 310 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x51, 0xc1, 0x4a, 0xc3, 0x40, + 0x10, 0x25, 0xb6, 0x22, 0x19, 0xa5, 0x95, 0xa5, 0xc2, 0x52, 0x7a, 0x08, 0x45, 0x31, 0xa7, 0x14, + 0x44, 0xf0, 0xde, 0x8a, 0x7a, 0x2c, 0xc1, 0x93, 0x20, 0x21, 0xa6, 0xd3, 0xb0, 0x90, 0xec, 0xac, + 0xb3, 0xdb, 0x2f, 0xf2, 0x9f, 0xfc, 0x1e, 0xd9, 0x4d, 0x5b, 0xa5, 0xd8, 0xdb, 0xce, 0x7b, 0x6f, + 0xe6, 0xbd, 0x9d, 0x81, 0x9b, 0x9a, 0xa8, 0x6e, 0x70, 0x66, 0x98, 0x1c, 0x7d, 0x6c, 0xd6, 0xb3, + 0x8a, 0x5a, 0xa3, 0x1a, 0xe4, 0x99, 0x69, 0x36, 0xb5, 0xd2, 0x59, 0x20, 0x84, 0xec, 0x64, 0xd9, + 0x4e, 0x96, 0xed, 0x64, 0xe3, 0xe4, 0x70, 0xc0, 0x0a, 0x6d, 0xc5, 0xca, 0x38, 0xe2, 0x4e, 0x3d, + 0xfd, 0x8a, 0x60, 0xb4, 0xa0, 0x15, 0x3e, 0xa3, 0x46, 0x2e, 0x1d, 0x71, 0x8e, 0x9f, 0x1b, 0xb4, + 0x4e, 0xa4, 0x70, 0xb9, 0x56, 0x0d, 0x16, 0x8e, 0x8a, 0xba, 0xe3, 0x50, 0x46, 0x49, 0x2f, 0x8d, + 0xf3, 0x81, 0xc7, 0x5f, 0x69, 0xdb, 0x81, 0x62, 0x02, 0xb1, 0x29, 0xb9, 0x6c, 0xd1, 0x21, 0xcb, + 0x93, 0x24, 0x4a, 0xe3, 0xfc, 0x17, 0x10, 0x0b, 0x80, 0xe0, 0x54, 0xf8, 0x2e, 0x39, 0x4c, 0x7a, + 0xe9, 0xf9, 0xdd, 0x75, 0x76, 0x98, 0xf8, 0x49, 0x35, 0xf8, 0xb8, 0xcf, 0xb6, 0xf4, 0x70, 0x1e, + 0x07, 0xd6, 0x33, 0xd3, 0xef, 0x08, 0xae, 0x0e, 0x52, 0x5a, 0x43, 0xda, 0xa2, 0x18, 0xc1, 0x29, + 0x32, 0x13, 0xcb, 0x28, 0x18, 0x77, 0x85, 0x78, 0x81, 0xfe, 0x1f, 0xbb, 0xfb, 0xec, 0xd8, 0x82, + 0xb2, 0x7f, 0x87, 0x86, 0x34, 0x79, 0x98, 0x30, 0x7e, 0x87, 0xbe, 0xaf, 0x84, 0x80, 0xbe, 0x2e, + 0x5b, 0xdc, 0xda, 0x84, 0xb7, 0xb8, 0x85, 0xa1, 0xd2, 0x16, 0xd9, 0x29, 0xd2, 0x85, 0x21, 0xa5, + 0xdd, 0xf6, 0xfb, 0x83, 0x3d, 0xbc, 0xf4, 0xa8, 0x90, 0x70, 0x56, 0x91, 0x76, 0xa8, 0x9d, 0x1c, + 0x06, 0xc1, 0xae, 0x9c, 0x3f, 0xc0, 0xa4, 0xa2, 0xf6, 0x68, 0xbe, 0xf9, 0xc5, 0x32, 0x1c, 0x3a, + 0x2c, 0xc4, 0xbe, 0xc5, 0xdd, 0xd9, 0x8b, 0x9a, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x83, 0x7b, + 0x5c, 0x7c, 0x1b, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile index a0bf9fefd..b1ac45c77 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile @@ -45,9 +45,9 @@ my_test/test.pb.go: my_test/test.proto golden: make -B my_test/test.pb.go - sed -i -e '/return.*fileDescriptor/d' my_test/test.pb.go - sed -i -e '/^var fileDescriptor/,/^}/d' my_test/test.pb.go - sed -i -e '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go + sed -i '/return.*fileDescriptor/d' my_test/test.pb.go + sed -i '/^var fileDescriptor/,/^}/d' my_test/test.pb.go + sed -i '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go gofmt -w my_test/test.pb.go diff -w my_test/test.pb.go my_test/test.pb.go.golden diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go index 1954e3fb7..9ec3e1292 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: my_test/test.proto +// DO NOT EDIT! /* Package my_test is a generated protocol buffer package. @@ -318,7 +319,7 @@ func (m *Reply) GetCompactKeys() []int32 { type Reply_Entry struct { KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"` Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"` - XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"` + XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=myFieldName2" json:"_my_field_name_2,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -388,7 +389,6 @@ var E_ReplyExtensions_Time = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.time", Tag: "fixed64,101,opt,name=time", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ @@ -397,7 +397,6 @@ var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ Field: 105, Name: "my.test.ReplyExtensions.carrot", Tag: "bytes,105,opt,name=carrot", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ @@ -406,7 +405,6 @@ var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.donut", Tag: "bytes,101,opt,name=donut", - Filename: "my_test/test.proto", } type OtherReplyExtensions struct { @@ -834,7 +832,6 @@ var E_Tag = &proto.ExtensionDesc{ Field: 103, Name: "my.test.tag", Tag: "bytes,103,opt,name=tag", - Filename: "my_test/test.proto", } var E_Donut = &proto.ExtensionDesc{ @@ -843,7 +840,6 @@ var E_Donut = &proto.ExtensionDesc{ Field: 106, Name: "my.test.donut", Tag: "bytes,106,opt,name=donut", - Filename: "my_test/test.proto", } func init() { diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden index d8717d57d..9ec3e1292 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden @@ -319,7 +319,7 @@ func (m *Reply) GetCompactKeys() []int32 { type Reply_Entry struct { KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"` Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"` - XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"` + XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=myFieldName2" json:"_my_field_name_2,omitempty"` XXX_unrecognized []byte `json:"-"` } @@ -389,7 +389,6 @@ var E_ReplyExtensions_Time = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.time", Tag: "fixed64,101,opt,name=time", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ @@ -398,7 +397,6 @@ var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ Field: 105, Name: "my.test.ReplyExtensions.carrot", Tag: "bytes,105,opt,name=carrot", - Filename: "my_test/test.proto", } var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ @@ -407,7 +405,6 @@ var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ Field: 101, Name: "my.test.ReplyExtensions.donut", Tag: "bytes,101,opt,name=donut", - Filename: "my_test/test.proto", } type OtherReplyExtensions struct { @@ -835,7 +832,6 @@ var E_Tag = &proto.ExtensionDesc{ Field: 103, Name: "my.test.tag", Tag: "bytes,103,opt,name=tag", - Filename: "my_test/test.proto", } var E_Donut = &proto.ExtensionDesc{ @@ -844,7 +840,6 @@ var E_Donut = &proto.ExtensionDesc{ Field: 106, Name: "my.test.donut", Tag: "bytes,106,opt,name=donut", - Filename: "my_test/test.proto", } func init() { diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go index 1fbaa44ca..f2c6906b9 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/any/any.proto +// DO NOT EDIT! /* Package any is a generated protocol buffer package. @@ -131,20 +132,6 @@ func (*Any) ProtoMessage() {} func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*Any) XXX_WellKnownType() string { return "Any" } -func (m *Any) GetTypeUrl() string { - if m != nil { - return m.TypeUrl - } - return "" -} - -func (m *Any) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - func init() { proto.RegisterType((*Any)(nil), "google.protobuf.Any") } @@ -152,17 +139,17 @@ func init() { func init() { proto.RegisterFile("github.com/golang/protobuf/ptypes/any/any.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 184 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9, + // 187 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcc, 0xab, 0x04, 0x61, 0x3d, 0xb0, 0xb8, 0x10, 0x7f, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x1e, 0x4c, 0x95, 0x92, 0x19, 0x17, 0xb3, 0x63, 0x5e, 0xa5, 0x90, 0x24, 0x17, 0x07, 0x48, 0x79, 0x7c, 0x69, 0x51, 0x8e, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x3b, 0x88, 0x1f, 0x5a, 0x94, 0x23, 0x24, 0xc2, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x13, 0x04, 0xe1, - 0x38, 0xe5, 0x73, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19, - 0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x45, 0x4c, 0xcc, 0xee, 0x01, 0x4e, 0xab, - 0x98, 0xe4, 0xdc, 0x21, 0x46, 0x05, 0x40, 0x95, 0xe8, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5, - 0x97, 0xe7, 0x85, 0x80, 0x94, 0x26, 0xb1, 0x81, 0xf5, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, - 0x45, 0x1f, 0x1a, 0xf2, 0xf3, 0x00, 0x00, 0x00, + 0x38, 0x15, 0x71, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19, + 0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x05, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, + 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c, 0x0b, 0x80, 0xaa, 0xd2, 0x0b, 0x4f, 0xcd, 0xc9, + 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, 0x4e, 0x62, 0x03, 0x6b, 0x37, 0x06, 0x04, 0x00, + 0x00, 0xff, 0xff, 0xc6, 0x4d, 0x03, 0x23, 0xf6, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.proto b/vendor/github.com/golang/protobuf/ptypes/any/any.proto index 9bd3f50a4..81dcf46cc 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.proto +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.proto @@ -37,6 +37,7 @@ option go_package = "github.com/golang/protobuf/ptypes/any"; option java_package = "com.google.protobuf"; option java_outer_classname = "AnyProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // `Any` contains an arbitrary serialized protocol buffer message along with a diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go index fe3350bed..569748346 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/duration/duration.proto +// DO NOT EDIT! /* Package duration is a generated protocol buffer package. @@ -34,8 +35,6 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // two Timestamp values is a Duration and it can be added or subtracted // from a Timestamp. Range is approximately +-10,000 years. // -// # Examples -// // Example 1: Compute Duration from two Timestamps in pseudo code. // // Timestamp start = ...; @@ -70,27 +69,10 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // end.nanos -= 1000000000; // } // -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// // type Duration struct { // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + // to +315,576,000,000 inclusive. Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` // Signed fractions of a second at nanosecond resolution of the span // of time. Durations less than one second are represented with a 0 @@ -107,20 +89,6 @@ func (*Duration) ProtoMessage() {} func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*Duration) XXX_WellKnownType() string { return "Duration" } -func (m *Duration) GetSeconds() int64 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *Duration) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - func init() { proto.RegisterType((*Duration)(nil), "google.protobuf.Duration") } @@ -131,7 +99,7 @@ func init() { var fileDescriptor0 = []byte{ // 189 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0x29, 0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0x83, 0x33, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, @@ -139,8 +107,8 @@ var fileDescriptor0 = []byte{ 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x86, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x48, 0x27, 0x5e, 0x98, - 0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xfb, 0x83, 0x91, 0x71, 0x11, 0x13, + 0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xbb, 0x80, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb9, 0x01, 0x50, 0xa5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x2d, 0x49, 0x6c, 0x60, 0x33, 0x8c, 0x01, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x45, 0x5a, 0x81, 0x3d, 0x0e, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0xff, 0xff, 0x62, 0xfb, 0xb1, 0x51, 0x0e, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto index 975fce41a..96c1796d6 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto +++ b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto @@ -33,11 +33,11 @@ syntax = "proto3"; package google.protobuf; option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; option go_package = "github.com/golang/protobuf/ptypes/duration"; option java_package = "com.google.protobuf"; option java_outer_classname = "DurationProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // A Duration represents a signed, fixed-length span of time represented @@ -47,8 +47,6 @@ option objc_class_prefix = "GPB"; // two Timestamp values is a Duration and it can be added or subtracted // from a Timestamp. Range is approximately +-10,000 years. // -// # Examples -// // Example 1: Compute Duration from two Timestamps in pseudo code. // // Timestamp start = ...; @@ -83,28 +81,11 @@ option objc_class_prefix = "GPB"; // end.nanos -= 1000000000; // } // -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// // message Duration { // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + // to +315,576,000,000 inclusive. int64 seconds = 1; // Signed fractions of a second at nanosecond resolution of the span diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go index ae1594144..46c765a96 100644 --- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/empty/empty.proto +// DO NOT EDIT! /* Package empty is a generated protocol buffer package. @@ -54,15 +55,15 @@ func init() { } var fileDescriptor0 = []byte{ - // 147 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, + // 150 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcd, 0x2d, 0x28, 0xa9, 0x84, 0x90, 0x7a, 0x60, 0x39, 0x21, 0xfe, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54, - 0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e, + 0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x25, 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36, 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x27, 0xd2, - 0xce, 0x1f, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c, - 0x0c, 0x80, 0xaa, 0xd3, 0x0b, 0x4f, 0xcd, 0xc9, 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, - 0x4f, 0x62, 0x03, 0x1b, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x8e, 0x0a, 0x06, 0xcf, - 0x00, 0x00, 0x00, + 0xce, 0x05, 0x8c, 0x8c, 0x3f, 0x18, 0x19, 0x17, 0x31, 0x31, 0xbb, 0x07, 0x38, 0xad, 0x62, 0x92, + 0x73, 0x87, 0x18, 0x1a, 0x00, 0x55, 0xaa, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e, + 0x17, 0x02, 0xd2, 0x92, 0xc4, 0x06, 0x36, 0xc3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xbb, + 0xf4, 0x0e, 0xd2, 0x00, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto b/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto index 03cacd233..37f4cd10e 100644 --- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto +++ b/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto @@ -37,6 +37,7 @@ option go_package = "github.com/golang/protobuf/ptypes/empty"; option java_package = "com.google.protobuf"; option java_outer_classname = "EmptyProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; option cc_enable_arenas = true; diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go index 35a8ec599..197042ed5 100644 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/struct/struct.proto +// DO NOT EDIT! /* Package structpb is a generated protocol buffer package. @@ -351,32 +352,31 @@ func init() { } var fileDescriptor0 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40, + // 416 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40, 0x14, 0x80, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa0, 0xa1, 0x7b, 0x09, 0x22, 0x09, 0x56, 0x04, 0x31, 0x5e, 0x0c, 0xac, 0xbb, 0x60, 0x58, 0x62, 0x74, 0x57, 0xf0, 0x52, - 0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x7b, 0xf4, 0xe8, - 0xaf, 0xf3, 0x28, 0x33, 0x93, 0x44, 0x69, 0x29, 0x78, 0x9a, 0xbe, 0x37, 0xdf, 0xfb, 0xe6, 0xbd, - 0xd7, 0xc0, 0xf3, 0xb2, 0xe2, 0x9f, 0x45, 0xe6, 0xe7, 0x6c, 0x13, 0x94, 0x8c, 0x2c, 0x68, 0x19, - 0xd4, 0x0d, 0xe3, 0x2c, 0x13, 0xab, 0xa0, 0xe6, 0xdb, 0xba, 0x68, 0x83, 0x96, 0x37, 0x22, 0xe7, - 0xdd, 0xe1, 0xab, 0x5b, 0x7c, 0xa7, 0x64, 0xac, 0x24, 0x85, 0xdf, 0xb3, 0xd3, 0xef, 0x08, 0xac, - 0xf7, 0x8a, 0xc0, 0x21, 0x58, 0xab, 0xaa, 0x20, 0xcb, 0x76, 0x82, 0x5c, 0xd3, 0x73, 0x66, 0x67, - 0xfe, 0x0e, 0xec, 0x6b, 0xd0, 0x7f, 0xa3, 0xa8, 0x73, 0xca, 0x9b, 0x6d, 0xda, 0x95, 0x9c, 0xbe, - 0x03, 0xe7, 0x9f, 0x34, 0x3e, 0x01, 0x73, 0x5d, 0x6c, 0x27, 0xc8, 0x45, 0x9e, 0x9d, 0xca, 0x9f, - 0xf8, 0x09, 0x8c, 0xbf, 0x2c, 0x88, 0x28, 0x26, 0x86, 0x8b, 0x3c, 0x67, 0x76, 0x6f, 0x4f, 0x7e, - 0x23, 0x6f, 0x53, 0x0d, 0xbd, 0x34, 0x5e, 0xa0, 0xe9, 0x2f, 0x03, 0xc6, 0x2a, 0x89, 0x43, 0x00, - 0x2a, 0x08, 0x99, 0x6b, 0x81, 0x94, 0x1e, 0xcf, 0x4e, 0xf7, 0x04, 0x57, 0x82, 0x10, 0xc5, 0x5f, - 0x8e, 0x52, 0x9b, 0xf6, 0x01, 0x3e, 0x83, 0xdb, 0x54, 0x6c, 0xb2, 0xa2, 0x99, 0xff, 0x7d, 0x1f, - 0x5d, 0x8e, 0x52, 0x47, 0x67, 0x07, 0xa8, 0xe5, 0x4d, 0x45, 0xcb, 0x0e, 0x32, 0x65, 0xe3, 0x12, - 0xd2, 0x59, 0x0d, 0x3d, 0x02, 0xc8, 0x18, 0xeb, 0xdb, 0x38, 0x72, 0x91, 0x77, 0x4b, 0x3e, 0x25, - 0x73, 0x1a, 0x78, 0xa5, 0x2c, 0x22, 0xe7, 0x1d, 0x32, 0x56, 0xa3, 0xde, 0x3f, 0xb0, 0xc7, 0x4e, - 0x2f, 0x72, 0x3e, 0x4c, 0x49, 0xaa, 0xb6, 0xaf, 0xb5, 0x54, 0xed, 0xfe, 0x94, 0x71, 0xd5, 0xf2, - 0x61, 0x4a, 0xd2, 0x07, 0x91, 0x05, 0x47, 0xeb, 0x8a, 0x2e, 0xa7, 0x21, 0xd8, 0x03, 0x81, 0x7d, - 0xb0, 0x94, 0xac, 0xff, 0x47, 0x0f, 0x2d, 0xbd, 0xa3, 0x1e, 0x3f, 0x00, 0x7b, 0x58, 0x22, 0x3e, - 0x06, 0xb8, 0xba, 0x8e, 0xe3, 0xf9, 0xcd, 0xeb, 0xf8, 0xfa, 0xfc, 0x64, 0x14, 0x7d, 0x43, 0x70, - 0x37, 0x67, 0x9b, 0x5d, 0x45, 0xe4, 0xe8, 0x69, 0x12, 0x19, 0x27, 0xe8, 0xd3, 0xd3, 0xff, 0xfd, - 0x30, 0x43, 0x7d, 0xd4, 0xd9, 0x6f, 0x84, 0x7e, 0x18, 0xe6, 0x45, 0x12, 0xfd, 0x34, 0x1e, 0x5e, - 0x68, 0x79, 0xd2, 0xf7, 0xf7, 0xb1, 0x20, 0xe4, 0x2d, 0x65, 0x5f, 0xe9, 0x07, 0x59, 0x99, 0x59, - 0x4a, 0xf5, 0xec, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x6e, 0x5d, 0x3c, 0xfe, 0x02, 0x00, - 0x00, + 0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x8a, 0x47, 0x8f, + 0xfe, 0x42, 0x99, 0x99, 0x24, 0x4a, 0x4b, 0xc1, 0xd3, 0xf4, 0xbd, 0xf9, 0xde, 0x37, 0xef, 0xbd, + 0x06, 0x9e, 0x97, 0x15, 0xff, 0x2c, 0x32, 0x3f, 0x67, 0x9b, 0xa0, 0x64, 0x64, 0x41, 0xcb, 0xa0, + 0x6e, 0x18, 0x67, 0x99, 0x58, 0x05, 0x35, 0xdf, 0xd6, 0x45, 0x1b, 0xb4, 0xbc, 0x11, 0x39, 0xef, + 0x0e, 0x5f, 0xdd, 0xe2, 0x3b, 0x25, 0x63, 0x25, 0x29, 0xfc, 0x9e, 0x9d, 0x7e, 0x47, 0x60, 0xbd, + 0x57, 0x04, 0x0e, 0xc1, 0x5a, 0x55, 0x05, 0x59, 0xb6, 0x13, 0xe4, 0x9a, 0x9e, 0x33, 0x3b, 0xf3, + 0x77, 0x60, 0x5f, 0x83, 0xfe, 0x1b, 0x45, 0x9d, 0x53, 0xde, 0x6c, 0xd3, 0xae, 0xe4, 0xf4, 0x1d, + 0x38, 0xff, 0xa4, 0xf1, 0x09, 0x98, 0xeb, 0x62, 0x3b, 0x41, 0x2e, 0xf2, 0xec, 0x54, 0xfe, 0xc4, + 0x4f, 0x60, 0xfc, 0x65, 0x41, 0x44, 0x31, 0x31, 0x5c, 0xe4, 0x39, 0xb3, 0x7b, 0x7b, 0xf2, 0x1b, + 0x79, 0x9b, 0x6a, 0xe8, 0xa5, 0xf1, 0x02, 0x4d, 0x7f, 0x1b, 0x30, 0x56, 0x49, 0x1c, 0x02, 0x50, + 0x41, 0xc8, 0x5c, 0x0b, 0xa4, 0xf4, 0x78, 0x76, 0xba, 0x27, 0xb8, 0x12, 0x84, 0x28, 0xfe, 0x72, + 0x94, 0xda, 0xb4, 0x0f, 0xf0, 0x19, 0xdc, 0xa6, 0x62, 0x93, 0x15, 0xcd, 0xfc, 0xef, 0xfb, 0xe8, + 0x72, 0x94, 0x3a, 0x3a, 0x3b, 0x40, 0x2d, 0x6f, 0x2a, 0x5a, 0x76, 0x90, 0x29, 0x1b, 0x97, 0x90, + 0xce, 0x6a, 0xe8, 0x11, 0x40, 0xc6, 0x58, 0xdf, 0xc6, 0x91, 0x8b, 0xbc, 0x5b, 0xf2, 0x29, 0x99, + 0xd3, 0xc0, 0x2b, 0x65, 0x11, 0x39, 0xef, 0x90, 0xb1, 0x1a, 0xf5, 0xfe, 0x81, 0x3d, 0x76, 0x7a, + 0x91, 0xf3, 0x61, 0x4a, 0x52, 0xb5, 0x7d, 0xad, 0xa5, 0x6a, 0xf7, 0xa7, 0x8c, 0xab, 0x96, 0x0f, + 0x53, 0x92, 0x3e, 0x88, 0x2c, 0x38, 0x5a, 0x57, 0x74, 0x39, 0x0d, 0xc1, 0x1e, 0x08, 0xec, 0x83, + 0xa5, 0x64, 0xfd, 0x3f, 0x7a, 0x68, 0xe9, 0x1d, 0xf5, 0xf8, 0x01, 0xd8, 0xc3, 0x12, 0xf1, 0x31, + 0xc0, 0xd5, 0x75, 0x1c, 0xcf, 0x6f, 0x5e, 0xc7, 0xd7, 0xe7, 0x27, 0xa3, 0xe8, 0x1b, 0x82, 0xbb, + 0x39, 0xdb, 0xec, 0x2a, 0x22, 0x47, 0x4f, 0x93, 0xc8, 0x38, 0x41, 0x9f, 0x9e, 0xfe, 0xef, 0x87, + 0x19, 0xea, 0xa3, 0xce, 0x7e, 0x20, 0xf4, 0xd3, 0x30, 0x2f, 0x92, 0xe8, 0x97, 0xf1, 0xf0, 0x42, + 0xcb, 0x93, 0xbe, 0xbf, 0x8f, 0x05, 0x21, 0x6f, 0x29, 0xfb, 0x4a, 0x3f, 0xc8, 0xca, 0xcc, 0x52, + 0xaa, 0x67, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xcf, 0x6d, 0x50, 0xfe, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto b/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto index 7d7808e7f..beeba8118 100644 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto +++ b/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto @@ -33,11 +33,11 @@ syntax = "proto3"; package google.protobuf; option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; option java_package = "com.google.protobuf"; option java_outer_classname = "StructProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go index 3b76261ec..ffcc51594 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto +// DO NOT EDIT! /* Package timestamp is a generated protocol buffer package. @@ -39,8 +40,6 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // and from RFC 3339 date strings. // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). // -// # Examples -// // Example 1: Compute Timestamp from POSIX `time()`. // // Timestamp timestamp; @@ -78,36 +77,15 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // // Example 5: Compute Timestamp from current time in Python. // -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. +// now = time.time() +// seconds = int(now) +// nanos = int((now - seconds) * 10**9) +// timestamp = Timestamp(seconds=seconds, nanos=nanos) // // type Timestamp struct { // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` // Non-negative fractions of a second at nanosecond resolution. Negative @@ -123,20 +101,6 @@ func (*Timestamp) ProtoMessage() {} func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" } -func (m *Timestamp) GetSeconds() int64 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *Timestamp) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - func init() { proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp") } @@ -146,17 +110,18 @@ func init() { } var fileDescriptor0 = []byte{ - // 190 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9, + // 194 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0xc9, 0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0x40, 0xb0, 0xf4, 0xc0, 0x6a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x60, 0x3a, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, - 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x8e, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x4c, 0x27, 0x3e, - 0xb8, 0x89, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0xdc, 0xfc, 0x83, 0x91, 0x71, 0x11, - 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xc9, 0x01, 0x50, 0xb5, 0x7a, 0xe1, - 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x3d, 0x49, 0x6c, 0x60, 0x43, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x59, 0x0a, 0x4d, 0x13, 0x01, 0x00, 0x00, + 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x91, 0x91, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x50, 0x27, + 0x3e, 0xb8, 0x91, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0x1c, 0xbd, 0x80, 0x91, 0xf1, + 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, 0xc3, 0x03, + 0xa0, 0xca, 0xf5, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0xda, 0x92, + 0xd8, 0xc0, 0xe6, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x17, 0x5f, 0xb7, 0xdc, 0x17, 0x01, + 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto index b7cbd1750..7992a8588 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto @@ -38,6 +38,7 @@ option go_package = "github.com/golang/protobuf/ptypes/timestamp"; option java_package = "com.google.protobuf"; option java_outer_classname = "TimestampProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // A Timestamp represents a point in time independent of any time zone @@ -52,8 +53,6 @@ option objc_class_prefix = "GPB"; // and from RFC 3339 date strings. // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). // -// # Examples -// // Example 1: Compute Timestamp from POSIX `time()`. // // Timestamp timestamp; @@ -91,37 +90,16 @@ option objc_class_prefix = "GPB"; // // Example 5: Compute Timestamp from current time in Python. // -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. +// now = time.time() +// seconds = int(now) +// nanos = int((now - seconds) * 10**9) +// timestamp = Timestamp(seconds=seconds, nanos=nanos) // // message Timestamp { // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. int64 seconds = 1; diff --git a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go index 1328bd296..5e52a81c7 100644 --- a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go @@ -1,5 +1,6 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. +// Code generated by protoc-gen-go. // source: github.com/golang/protobuf/ptypes/wrappers/wrappers.proto +// DO NOT EDIT! /* Package wrappers is a generated protocol buffer package. @@ -49,13 +50,6 @@ func (*DoubleValue) ProtoMessage() {} func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" } -func (m *DoubleValue) GetValue() float64 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `float`. // // The JSON representation for `FloatValue` is JSON number. @@ -70,13 +64,6 @@ func (*FloatValue) ProtoMessage() {} func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" } -func (m *FloatValue) GetValue() float32 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `int64`. // // The JSON representation for `Int64Value` is JSON string. @@ -91,13 +78,6 @@ func (*Int64Value) ProtoMessage() {} func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" } -func (m *Int64Value) GetValue() int64 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `uint64`. // // The JSON representation for `UInt64Value` is JSON string. @@ -112,13 +92,6 @@ func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" } -func (m *UInt64Value) GetValue() uint64 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `int32`. // // The JSON representation for `Int32Value` is JSON number. @@ -133,13 +106,6 @@ func (*Int32Value) ProtoMessage() {} func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" } -func (m *Int32Value) GetValue() int32 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `uint32`. // // The JSON representation for `UInt32Value` is JSON number. @@ -154,13 +120,6 @@ func (*UInt32Value) ProtoMessage() {} func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" } -func (m *UInt32Value) GetValue() uint32 { - if m != nil { - return m.Value - } - return 0 -} - // Wrapper message for `bool`. // // The JSON representation for `BoolValue` is JSON `true` and `false`. @@ -175,13 +134,6 @@ func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" } -func (m *BoolValue) GetValue() bool { - if m != nil { - return m.Value - } - return false -} - // Wrapper message for `string`. // // The JSON representation for `StringValue` is JSON string. @@ -196,13 +148,6 @@ func (*StringValue) ProtoMessage() {} func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (*StringValue) XXX_WellKnownType() string { return "StringValue" } -func (m *StringValue) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - // Wrapper message for `bytes`. // // The JSON representation for `BytesValue` is JSON string. @@ -217,13 +162,6 @@ func (*BytesValue) ProtoMessage() {} func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" } -func (m *BytesValue) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - func init() { proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue") proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue") @@ -241,8 +179,8 @@ func init() { } var fileDescriptor0 = []byte{ - // 257 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, + // 260 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x2f, 0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x42, 0x30, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3, @@ -253,10 +191,10 @@ var fileDescriptor0 = []byte{ 0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4, 0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1, 0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, 0xb5, 0x18, - 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x1a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75, - 0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0xfb, 0xc1, - 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0xc4, 0xdc, 0x00, 0xa8, - 0x52, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0x96, 0x24, 0x36, - 0xb0, 0x19, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x36, 0x8d, 0xd8, 0x19, 0x02, 0x00, - 0x00, + 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x7a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75, + 0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0x5b, 0xc0, + 0xc8, 0xf8, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, + 0xd1, 0x01, 0x50, 0xd5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, + 0x5d, 0x49, 0x6c, 0x60, 0x63, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa9, 0xdf, 0x64, 0x4b, + 0x1c, 0x02, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto index 01947639a..4828ad9ae 100644 --- a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto +++ b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto @@ -43,6 +43,7 @@ option go_package = "github.com/golang/protobuf/ptypes/wrappers"; option java_package = "com.google.protobuf"; option java_outer_classname = "WrappersProto"; option java_multiple_files = true; +option java_generate_equals_and_hash = true; option objc_class_prefix = "GPB"; // Wrapper message for `double`. diff --git a/vendor/github.com/google/go-querystring/.gitignore b/vendor/github.com/google/go-querystring/.gitignore deleted file mode 100644 index 9ed3b07ce..000000000 --- a/vendor/github.com/google/go-querystring/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.test diff --git a/vendor/github.com/google/go-querystring/README.md b/vendor/github.com/google/go-querystring/README.md deleted file mode 100644 index 03e937034..000000000 --- a/vendor/github.com/google/go-querystring/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# go-querystring # - -go-querystring is Go library for encoding structs into URL query parameters. - - -**Documentation:** -**Build Status:** [![Build Status](https://drone.io/github.com/google/go-querystring/status.png)](https://drone.io/github.com/google/go-querystring/latest) - -## Usage ## - -```go -import "github.com/google/go-querystring/query" -``` - -go-querystring is designed to assist in scenarios where you want to construct a -URL using a struct that represents the URL query parameters. You might do this -to enforce the type safety of your parameters, for example, as is done in the -[go-github][] library. - -The query package exports a single `Values()` function. A simple example: - -```go -type Options struct { - Query string `url:"q"` - ShowAll bool `url:"all"` - Page int `url:"page"` -} - -opt := Options{ "foo", true, 2 } -v, _ := query.Values(opt) -fmt.Print(v.Encode()) // will output: "q=foo&all=true&page=2" -``` - -[go-github]: https://github.com/google/go-github/commit/994f6f8405f052a117d2d0b500054341048fbb08 - -## License ## - -This library is distributed under the BSD-style license found in the [LICENSE](./LICENSE) -file. diff --git a/vendor/github.com/google/go-querystring/query/encode.go b/vendor/github.com/google/go-querystring/query/encode.go deleted file mode 100644 index 37080b19b..000000000 --- a/vendor/github.com/google/go-querystring/query/encode.go +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright 2013 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 query implements encoding of structs into URL query parameters. -// -// As a simple example: -// -// type Options struct { -// Query string `url:"q"` -// ShowAll bool `url:"all"` -// Page int `url:"page"` -// } -// -// opt := Options{ "foo", true, 2 } -// v, _ := query.Values(opt) -// fmt.Print(v.Encode()) // will output: "q=foo&all=true&page=2" -// -// The exact mapping between Go values and url.Values is described in the -// documentation for the Values() function. -package query - -import ( - "bytes" - "fmt" - "net/url" - "reflect" - "strconv" - "strings" - "time" -) - -var timeType = reflect.TypeOf(time.Time{}) - -var encoderType = reflect.TypeOf(new(Encoder)).Elem() - -// Encoder is an interface implemented by any type that wishes to encode -// itself into URL values in a non-standard way. -type Encoder interface { - EncodeValues(key string, v *url.Values) error -} - -// Values returns the url.Values encoding of v. -// -// Values expects to be passed a struct, and traverses it recursively using the -// following encoding rules. -// -// Each exported struct field is encoded as a URL parameter unless -// -// - the field's tag is "-", or -// - the field is empty and its tag specifies the "omitempty" option -// -// The empty values are false, 0, any nil pointer or interface value, any array -// slice, map, or string of length zero, and any time.Time that returns true -// for IsZero(). -// -// The URL parameter name defaults to the struct field name but can be -// specified in the struct field's tag value. The "url" key in the struct -// field's tag value is the key name, followed by an optional comma and -// options. For example: -// -// // Field is ignored by this package. -// Field int `url:"-"` -// -// // Field appears as URL parameter "myName". -// Field int `url:"myName"` -// -// // Field appears as URL parameter "myName" and the field is omitted if -// // its value is empty -// Field int `url:"myName,omitempty"` -// -// // Field appears as URL parameter "Field" (the default), but the field -// // is skipped if empty. Note the leading comma. -// Field int `url:",omitempty"` -// -// For encoding individual field values, the following type-dependent rules -// apply: -// -// Boolean values default to encoding as the strings "true" or "false". -// Including the "int" option signals that the field should be encoded as the -// strings "1" or "0". -// -// time.Time values default to encoding as RFC3339 timestamps. Including the -// "unix" option signals that the field should be encoded as a Unix time (see -// time.Unix()) -// -// Slice and Array values default to encoding as multiple URL values of the -// same name. Including the "comma" option signals that the field should be -// encoded as a single comma-delimited value. Including the "space" option -// similarly encodes the value as a single space-delimited string. Including -// the "semicolon" option will encode the value as a semicolon-delimited string. -// Including the "brackets" option signals that the multiple URL values should -// have "[]" appended to the value name. "numbered" will append a number to -// the end of each incidence of the value name, example: -// name0=value0&name1=value1, etc. -// -// Anonymous struct fields are usually encoded as if their inner exported -// fields were fields in the outer struct, subject to the standard Go -// visibility rules. An anonymous struct field with a name given in its URL -// tag is treated as having that name, rather than being anonymous. -// -// Non-nil pointer values are encoded as the value pointed to. -// -// Nested structs are encoded including parent fields in value names for -// scoping. e.g: -// -// "user[name]=acme&user[addr][postcode]=1234&user[addr][city]=SFO" -// -// All other values are encoded using their default string representation. -// -// Multiple fields that encode to the same URL parameter name will be included -// as multiple URL values of the same name. -func Values(v interface{}) (url.Values, error) { - values := make(url.Values) - val := reflect.ValueOf(v) - for val.Kind() == reflect.Ptr { - if val.IsNil() { - return values, nil - } - val = val.Elem() - } - - if v == nil { - return values, nil - } - - if val.Kind() != reflect.Struct { - return nil, fmt.Errorf("query: Values() expects struct input. Got %v", val.Kind()) - } - - err := reflectValue(values, val, "") - return values, err -} - -// reflectValue populates the values parameter from the struct fields in val. -// Embedded structs are followed recursively (using the rules defined in the -// Values function documentation) breadth-first. -func reflectValue(values url.Values, val reflect.Value, scope string) error { - var embedded []reflect.Value - - typ := val.Type() - for i := 0; i < typ.NumField(); i++ { - sf := typ.Field(i) - if sf.PkgPath != "" && !sf.Anonymous { // unexported - continue - } - - sv := val.Field(i) - tag := sf.Tag.Get("url") - if tag == "-" { - continue - } - name, opts := parseTag(tag) - if name == "" { - if sf.Anonymous && sv.Kind() == reflect.Struct { - // save embedded struct for later processing - embedded = append(embedded, sv) - continue - } - - name = sf.Name - } - - if scope != "" { - name = scope + "[" + name + "]" - } - - if opts.Contains("omitempty") && isEmptyValue(sv) { - continue - } - - if sv.Type().Implements(encoderType) { - if !reflect.Indirect(sv).IsValid() { - sv = reflect.New(sv.Type().Elem()) - } - - m := sv.Interface().(Encoder) - if err := m.EncodeValues(name, &values); err != nil { - return err - } - continue - } - - if sv.Kind() == reflect.Slice || sv.Kind() == reflect.Array { - var del byte - if opts.Contains("comma") { - del = ',' - } else if opts.Contains("space") { - del = ' ' - } else if opts.Contains("semicolon") { - del = ';' - } else if opts.Contains("brackets") { - name = name + "[]" - } - - if del != 0 { - s := new(bytes.Buffer) - first := true - for i := 0; i < sv.Len(); i++ { - if first { - first = false - } else { - s.WriteByte(del) - } - s.WriteString(valueString(sv.Index(i), opts)) - } - values.Add(name, s.String()) - } else { - for i := 0; i < sv.Len(); i++ { - k := name - if opts.Contains("numbered") { - k = fmt.Sprintf("%s%d", name, i) - } - values.Add(k, valueString(sv.Index(i), opts)) - } - } - continue - } - - for sv.Kind() == reflect.Ptr { - if sv.IsNil() { - break - } - sv = sv.Elem() - } - - if sv.Type() == timeType { - values.Add(name, valueString(sv, opts)) - continue - } - - if sv.Kind() == reflect.Struct { - reflectValue(values, sv, name) - continue - } - - values.Add(name, valueString(sv, opts)) - } - - for _, f := range embedded { - if err := reflectValue(values, f, scope); err != nil { - return err - } - } - - return nil -} - -// valueString returns the string representation of a value. -func valueString(v reflect.Value, opts tagOptions) string { - for v.Kind() == reflect.Ptr { - if v.IsNil() { - return "" - } - v = v.Elem() - } - - if v.Kind() == reflect.Bool && opts.Contains("int") { - if v.Bool() { - return "1" - } - return "0" - } - - if v.Type() == timeType { - t := v.Interface().(time.Time) - if opts.Contains("unix") { - return strconv.FormatInt(t.Unix(), 10) - } - return t.Format(time.RFC3339) - } - - return fmt.Sprint(v.Interface()) -} - -// isEmptyValue checks if a value should be considered empty for the purposes -// of omitting fields with the "omitempty" option. -func isEmptyValue(v reflect.Value) bool { - switch v.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: - return v.Len() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - } - - if v.Type() == timeType { - return v.Interface().(time.Time).IsZero() - } - - return false -} - -// tagOptions is the string following a comma in a struct field's "url" tag, or -// the empty string. It does not include the leading comma. -type tagOptions []string - -// parseTag splits a struct field's url tag into its name and comma-separated -// options. -func parseTag(tag string) (string, tagOptions) { - s := strings.Split(tag, ",") - return s[0], s[1:] -} - -// Contains checks whether the tagOptions contains the specified option. -func (o tagOptions) Contains(option string) bool { - for _, s := range o { - if s == option { - return true - } - } - return false -} diff --git a/vendor/github.com/google/go-querystring/query/encode_test.go b/vendor/github.com/google/go-querystring/query/encode_test.go deleted file mode 100644 index 0f26a7750..000000000 --- a/vendor/github.com/google/go-querystring/query/encode_test.go +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2013 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 query - -import ( - "fmt" - "net/url" - "reflect" - "testing" - "time" -) - -type Nested struct { - A SubNested `url:"a"` - B *SubNested `url:"b"` - Ptr *SubNested `url:"ptr,omitempty"` -} - -type SubNested struct { - Value string `url:"value"` -} - -func TestValues_types(t *testing.T) { - str := "string" - strPtr := &str - timeVal := time.Date(2000, 1, 1, 12, 34, 56, 0, time.UTC) - - tests := []struct { - in interface{} - want url.Values - }{ - { - // basic primitives - struct { - A string - B int - C uint - D float32 - E bool - }{}, - url.Values{ - "A": {""}, - "B": {"0"}, - "C": {"0"}, - "D": {"0"}, - "E": {"false"}, - }, - }, - { - // pointers - struct { - A *string - B *int - C **string - D *time.Time - }{ - A: strPtr, - C: &strPtr, - D: &timeVal, - }, - url.Values{ - "A": {str}, - "B": {""}, - "C": {str}, - "D": {"2000-01-01T12:34:56Z"}, - }, - }, - { - // slices and arrays - struct { - A []string - B []string `url:",comma"` - C []string `url:",space"` - D [2]string - E [2]string `url:",comma"` - F [2]string `url:",space"` - G []*string `url:",space"` - H []bool `url:",int,space"` - I []string `url:",brackets"` - J []string `url:",semicolon"` - K []string `url:",numbered"` - }{ - A: []string{"a", "b"}, - B: []string{"a", "b"}, - C: []string{"a", "b"}, - D: [2]string{"a", "b"}, - E: [2]string{"a", "b"}, - F: [2]string{"a", "b"}, - G: []*string{&str, &str}, - H: []bool{true, false}, - I: []string{"a", "b"}, - J: []string{"a", "b"}, - K: []string{"a", "b"}, - }, - url.Values{ - "A": {"a", "b"}, - "B": {"a,b"}, - "C": {"a b"}, - "D": {"a", "b"}, - "E": {"a,b"}, - "F": {"a b"}, - "G": {"string string"}, - "H": {"1 0"}, - "I[]": {"a", "b"}, - "J": {"a;b"}, - "K0": {"a"}, - "K1": {"b"}, - }, - }, - { - // other types - struct { - A time.Time - B time.Time `url:",unix"` - C bool `url:",int"` - D bool `url:",int"` - }{ - A: time.Date(2000, 1, 1, 12, 34, 56, 0, time.UTC), - B: time.Date(2000, 1, 1, 12, 34, 56, 0, time.UTC), - C: true, - D: false, - }, - url.Values{ - "A": {"2000-01-01T12:34:56Z"}, - "B": {"946730096"}, - "C": {"1"}, - "D": {"0"}, - }, - }, - { - struct { - Nest Nested `url:"nest"` - }{ - Nested{ - A: SubNested{ - Value: "that", - }, - }, - }, - url.Values{ - "nest[a][value]": {"that"}, - "nest[b]": {""}, - }, - }, - { - struct { - Nest Nested `url:"nest"` - }{ - Nested{ - Ptr: &SubNested{ - Value: "that", - }, - }, - }, - url.Values{ - "nest[a][value]": {""}, - "nest[b]": {""}, - "nest[ptr][value]": {"that"}, - }, - }, - { - nil, - url.Values{}, - }, - } - - for i, tt := range tests { - v, err := Values(tt.in) - if err != nil { - t.Errorf("%d. Values(%q) returned error: %v", i, tt.in, err) - } - - if !reflect.DeepEqual(tt.want, v) { - t.Errorf("%d. Values(%q) returned %v, want %v", i, tt.in, v, tt.want) - } - } -} - -func TestValues_omitEmpty(t *testing.T) { - str := "" - s := struct { - a string - A string - B string `url:",omitempty"` - C string `url:"-"` - D string `url:"omitempty"` // actually named omitempty, not an option - E *string `url:",omitempty"` - }{E: &str} - - v, err := Values(s) - if err != nil { - t.Errorf("Values(%q) returned error: %v", s, err) - } - - want := url.Values{ - "A": {""}, - "omitempty": {""}, - "E": {""}, // E is included because the pointer is not empty, even though the string being pointed to is - } - if !reflect.DeepEqual(want, v) { - t.Errorf("Values(%q) returned %v, want %v", s, v, want) - } -} - -type A struct { - B -} - -type B struct { - C string -} - -type D struct { - B - C string -} - -type e struct { - B - C string -} - -type F struct { - e -} - -func TestValues_embeddedStructs(t *testing.T) { - tests := []struct { - in interface{} - want url.Values - }{ - { - A{B{C: "foo"}}, - url.Values{"C": {"foo"}}, - }, - { - D{B: B{C: "bar"}, C: "foo"}, - url.Values{"C": {"foo", "bar"}}, - }, - { - F{e{B: B{C: "bar"}, C: "foo"}}, // With unexported embed - url.Values{"C": {"foo", "bar"}}, - }, - } - - for i, tt := range tests { - v, err := Values(tt.in) - if err != nil { - t.Errorf("%d. Values(%q) returned error: %v", i, tt.in, err) - } - - if !reflect.DeepEqual(tt.want, v) { - t.Errorf("%d. Values(%q) returned %v, want %v", i, tt.in, v, tt.want) - } - } -} - -func TestValues_invalidInput(t *testing.T) { - _, err := Values("") - if err == nil { - t.Errorf("expected Values() to return an error on invalid input") - } -} - -type EncodedArgs []string - -func (m EncodedArgs) EncodeValues(key string, v *url.Values) error { - for i, arg := range m { - v.Set(fmt.Sprintf("%s.%d", key, i), arg) - } - return nil -} - -func TestValues_Marshaler(t *testing.T) { - s := struct { - Args EncodedArgs `url:"arg"` - }{[]string{"a", "b", "c"}} - v, err := Values(s) - if err != nil { - t.Errorf("Values(%q) returned error: %v", s, err) - } - - want := url.Values{ - "arg.0": {"a"}, - "arg.1": {"b"}, - "arg.2": {"c"}, - } - if !reflect.DeepEqual(want, v) { - t.Errorf("Values(%q) returned %v, want %v", s, v, want) - } -} - -func TestValues_MarshalerWithNilPointer(t *testing.T) { - s := struct { - Args *EncodedArgs `url:"arg"` - }{} - v, err := Values(s) - if err != nil { - t.Errorf("Values(%q) returned error: %v", s, err) - } - - want := url.Values{} - if !reflect.DeepEqual(want, v) { - t.Errorf("Values(%q) returned %v, want %v", s, v, want) - } -} - -func TestTagParsing(t *testing.T) { - name, opts := parseTag("field,foobar,foo") - if name != "field" { - t.Fatalf("name = %q, want field", name) - } - for _, tt := range []struct { - opt string - want bool - }{ - {"foobar", true}, - {"foo", true}, - {"bar", false}, - {"field", false}, - } { - if opts.Contains(tt.opt) != tt.want { - t.Errorf("Contains(%q) = %v", tt.opt, !tt.want) - } - } -} diff --git a/vendor/github.com/google/gofuzz/.travis.yml b/vendor/github.com/google/gofuzz/.travis.yml new file mode 100644 index 000000000..f8684d99f --- /dev/null +++ b/vendor/github.com/google/gofuzz/.travis.yml @@ -0,0 +1,13 @@ +language: go + +go: + - 1.4 + - 1.3 + - 1.2 + - tip + +install: + - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi + +script: + - go test -cover diff --git a/vendor/github.com/google/go-querystring/CONTRIBUTING.md b/vendor/github.com/google/gofuzz/CONTRIBUTING.md similarity index 100% rename from vendor/github.com/google/go-querystring/CONTRIBUTING.md rename to vendor/github.com/google/gofuzz/CONTRIBUTING.md diff --git a/vendor/github.com/google/gofuzz/LICENSE b/vendor/github.com/google/gofuzz/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/google/gofuzz/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/google/gofuzz/README.md b/vendor/github.com/google/gofuzz/README.md new file mode 100644 index 000000000..64869af34 --- /dev/null +++ b/vendor/github.com/google/gofuzz/README.md @@ -0,0 +1,71 @@ +gofuzz +====== + +gofuzz is a library for populating go objects with random values. + +[![GoDoc](https://godoc.org/github.com/google/gofuzz?status.png)](https://godoc.org/github.com/google/gofuzz) +[![Travis](https://travis-ci.org/google/gofuzz.svg?branch=master)](https://travis-ci.org/google/gofuzz) + +This is useful for testing: + +* Do your project's objects really serialize/unserialize correctly in all cases? +* Is there an incorrectly formatted object that will cause your project to panic? + +Import with ```import "github.com/google/gofuzz"``` + +You can use it on single variables: +```go +f := fuzz.New() +var myInt int +f.Fuzz(&myInt) // myInt gets a random value. +``` + +You can use it on maps: +```go +f := fuzz.New().NilChance(0).NumElements(1, 1) +var myMap map[ComplexKeyType]string +f.Fuzz(&myMap) // myMap will have exactly one element. +``` + +Customize the chance of getting a nil pointer: +```go +f := fuzz.New().NilChance(.5) +var fancyStruct struct { + A, B, C, D *string +} +f.Fuzz(&fancyStruct) // About half the pointers should be set. +``` + +You can even customize the randomization completely if needed: +```go +type MyEnum string +const ( + A MyEnum = "A" + B MyEnum = "B" +) +type MyInfo struct { + Type MyEnum + AInfo *string + BInfo *string +} + +f := fuzz.New().NilChance(0).Funcs( + func(e *MyInfo, c fuzz.Continue) { + switch c.Intn(2) { + case 0: + e.Type = A + c.Fuzz(&e.AInfo) + case 1: + e.Type = B + c.Fuzz(&e.BInfo) + } + }, +) + +var myObject MyInfo +f.Fuzz(&myObject) // Type will correspond to whether A or B info is set. +``` + +See more examples in ```example_test.go```. + +Happy testing! diff --git a/vendor/github.com/google/gofuzz/doc.go b/vendor/github.com/google/gofuzz/doc.go new file mode 100644 index 000000000..9f9956d4a --- /dev/null +++ b/vendor/github.com/google/gofuzz/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package fuzz is a library for populating go objects with random values. +package fuzz diff --git a/vendor/github.com/google/gofuzz/example_test.go b/vendor/github.com/google/gofuzz/example_test.go new file mode 100644 index 000000000..792707a3a --- /dev/null +++ b/vendor/github.com/google/gofuzz/example_test.go @@ -0,0 +1,225 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzz_test + +import ( + "encoding/json" + "fmt" + "math/rand" + + "github.com/google/gofuzz" +) + +func ExampleSimple() { + type MyType struct { + A string + B string + C int + D struct { + E float64 + } + } + + f := fuzz.New() + object := MyType{} + + uniqueObjects := map[MyType]int{} + + for i := 0; i < 1000; i++ { + f.Fuzz(&object) + uniqueObjects[object]++ + } + fmt.Printf("Got %v unique objects.\n", len(uniqueObjects)) + // Output: + // Got 1000 unique objects. +} + +func ExampleCustom() { + type MyType struct { + A int + B string + } + + counter := 0 + f := fuzz.New().Funcs( + func(i *int, c fuzz.Continue) { + *i = counter + counter++ + }, + ) + object := MyType{} + + uniqueObjects := map[MyType]int{} + + for i := 0; i < 100; i++ { + f.Fuzz(&object) + if object.A != i { + fmt.Printf("Unexpected value: %#v\n", object) + } + uniqueObjects[object]++ + } + fmt.Printf("Got %v unique objects.\n", len(uniqueObjects)) + // Output: + // Got 100 unique objects. +} + +func ExampleComplex() { + type OtherType struct { + A string + B string + } + type MyType struct { + Pointer *OtherType + Map map[string]OtherType + PointerMap *map[string]OtherType + Slice []OtherType + SlicePointer []*OtherType + PointerSlicePointer *[]*OtherType + } + + f := fuzz.New().RandSource(rand.NewSource(0)).NilChance(0).NumElements(1, 1).Funcs( + func(o *OtherType, c fuzz.Continue) { + o.A = "Foo" + o.B = "Bar" + }, + func(op **OtherType, c fuzz.Continue) { + *op = &OtherType{"A", "B"} + }, + func(m map[string]OtherType, c fuzz.Continue) { + m["Works Because"] = OtherType{ + "Fuzzer", + "Preallocated", + } + }, + ) + object := MyType{} + f.Fuzz(&object) + bytes, err := json.MarshalIndent(&object, "", " ") + if err != nil { + fmt.Printf("error: %v\n", err) + } + fmt.Printf("%s\n", string(bytes)) + // Output: + // { + // "Pointer": { + // "A": "A", + // "B": "B" + // }, + // "Map": { + // "Works Because": { + // "A": "Fuzzer", + // "B": "Preallocated" + // } + // }, + // "PointerMap": { + // "Works Because": { + // "A": "Fuzzer", + // "B": "Preallocated" + // } + // }, + // "Slice": [ + // { + // "A": "Foo", + // "B": "Bar" + // } + // ], + // "SlicePointer": [ + // { + // "A": "A", + // "B": "B" + // } + // ], + // "PointerSlicePointer": [ + // { + // "A": "A", + // "B": "B" + // } + // ] + // } +} + +func ExampleMap() { + f := fuzz.New().NilChance(0).NumElements(1, 1) + var myMap map[struct{ A, B, C int }]string + f.Fuzz(&myMap) + fmt.Printf("myMap has %v element(s).\n", len(myMap)) + // Output: + // myMap has 1 element(s). +} + +func ExampleSingle() { + f := fuzz.New() + var i int + f.Fuzz(&i) + + // Technically, we'd expect this to fail one out of 2 billion attempts... + fmt.Printf("(i == 0) == %v", i == 0) + // Output: + // (i == 0) == false +} + +func ExampleEnum() { + type MyEnum string + const ( + A MyEnum = "A" + B MyEnum = "B" + ) + type MyInfo struct { + Type MyEnum + AInfo *string + BInfo *string + } + + f := fuzz.New().NilChance(0).Funcs( + func(e *MyInfo, c fuzz.Continue) { + // Note c's embedded Rand allows for direct use. + // We could also use c.RandBool() here. + switch c.Intn(2) { + case 0: + e.Type = A + c.Fuzz(&e.AInfo) + case 1: + e.Type = B + c.Fuzz(&e.BInfo) + } + }, + ) + + for i := 0; i < 100; i++ { + var myObject MyInfo + f.Fuzz(&myObject) + switch myObject.Type { + case A: + if myObject.AInfo == nil { + fmt.Println("AInfo should have been set!") + } + if myObject.BInfo != nil { + fmt.Println("BInfo should NOT have been set!") + } + case B: + if myObject.BInfo == nil { + fmt.Println("BInfo should have been set!") + } + if myObject.AInfo != nil { + fmt.Println("AInfo should NOT have been set!") + } + default: + fmt.Println("Invalid enum value!") + } + } + // Output: +} diff --git a/vendor/github.com/google/gofuzz/fuzz.go b/vendor/github.com/google/gofuzz/fuzz.go new file mode 100644 index 000000000..4f888fbc8 --- /dev/null +++ b/vendor/github.com/google/gofuzz/fuzz.go @@ -0,0 +1,453 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzz + +import ( + "fmt" + "math/rand" + "reflect" + "time" +) + +// fuzzFuncMap is a map from a type to a fuzzFunc that handles that type. +type fuzzFuncMap map[reflect.Type]reflect.Value + +// Fuzzer knows how to fill any object with random fields. +type Fuzzer struct { + fuzzFuncs fuzzFuncMap + defaultFuzzFuncs fuzzFuncMap + r *rand.Rand + nilChance float64 + minElements int + maxElements int +} + +// New returns a new Fuzzer. Customize your Fuzzer further by calling Funcs, +// RandSource, NilChance, or NumElements in any order. +func New() *Fuzzer { + f := &Fuzzer{ + defaultFuzzFuncs: fuzzFuncMap{ + reflect.TypeOf(&time.Time{}): reflect.ValueOf(fuzzTime), + }, + + fuzzFuncs: fuzzFuncMap{}, + r: rand.New(rand.NewSource(time.Now().UnixNano())), + nilChance: .2, + minElements: 1, + maxElements: 10, + } + return f +} + +// Funcs adds each entry in fuzzFuncs as a custom fuzzing function. +// +// Each entry in fuzzFuncs must be a function taking two parameters. +// The first parameter must be a pointer or map. It is the variable that +// function will fill with random data. The second parameter must be a +// fuzz.Continue, which will provide a source of randomness and a way +// to automatically continue fuzzing smaller pieces of the first parameter. +// +// These functions are called sensibly, e.g., if you wanted custom string +// fuzzing, the function `func(s *string, c fuzz.Continue)` would get +// called and passed the address of strings. Maps and pointers will always +// be made/new'd for you, ignoring the NilChange option. For slices, it +// doesn't make much sense to pre-create them--Fuzzer doesn't know how +// long you want your slice--so take a pointer to a slice, and make it +// yourself. (If you don't want your map/pointer type pre-made, take a +// pointer to it, and make it yourself.) See the examples for a range of +// custom functions. +func (f *Fuzzer) Funcs(fuzzFuncs ...interface{}) *Fuzzer { + for i := range fuzzFuncs { + v := reflect.ValueOf(fuzzFuncs[i]) + if v.Kind() != reflect.Func { + panic("Need only funcs!") + } + t := v.Type() + if t.NumIn() != 2 || t.NumOut() != 0 { + panic("Need 2 in and 0 out params!") + } + argT := t.In(0) + switch argT.Kind() { + case reflect.Ptr, reflect.Map: + default: + panic("fuzzFunc must take pointer or map type") + } + if t.In(1) != reflect.TypeOf(Continue{}) { + panic("fuzzFunc's second parameter must be type fuzz.Continue") + } + f.fuzzFuncs[argT] = v + } + return f +} + +// RandSource causes f to get values from the given source of randomness. +// Use if you want deterministic fuzzing. +func (f *Fuzzer) RandSource(s rand.Source) *Fuzzer { + f.r = rand.New(s) + return f +} + +// NilChance sets the probability of creating a nil pointer, map, or slice to +// 'p'. 'p' should be between 0 (no nils) and 1 (all nils), inclusive. +func (f *Fuzzer) NilChance(p float64) *Fuzzer { + if p < 0 || p > 1 { + panic("p should be between 0 and 1, inclusive.") + } + f.nilChance = p + return f +} + +// NumElements sets the minimum and maximum number of elements that will be +// added to a non-nil map or slice. +func (f *Fuzzer) NumElements(atLeast, atMost int) *Fuzzer { + if atLeast > atMost { + panic("atLeast must be <= atMost") + } + if atLeast < 0 { + panic("atLeast must be >= 0") + } + f.minElements = atLeast + f.maxElements = atMost + return f +} + +func (f *Fuzzer) genElementCount() int { + if f.minElements == f.maxElements { + return f.minElements + } + return f.minElements + f.r.Intn(f.maxElements-f.minElements+1) +} + +func (f *Fuzzer) genShouldFill() bool { + return f.r.Float64() > f.nilChance +} + +// Fuzz recursively fills all of obj's fields with something random. First +// this tries to find a custom fuzz function (see Funcs). If there is no +// custom function this tests whether the object implements fuzz.Interface and, +// if so, calls Fuzz on it to fuzz itself. If that fails, this will see if +// there is a default fuzz function provided by this package. If all of that +// fails, this will generate random values for all primitive fields and then +// recurse for all non-primitives. +// +// Not safe for cyclic or tree-like structs! +// +// obj must be a pointer. Only exported (public) fields can be set (thanks, golang :/ ) +// Intended for tests, so will panic on bad input or unimplemented fields. +func (f *Fuzzer) Fuzz(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + f.doFuzz(v, 0) +} + +// FuzzNoCustom is just like Fuzz, except that any custom fuzz function for +// obj's type will not be called and obj will not be tested for fuzz.Interface +// conformance. This applies only to obj and not other instances of obj's +// type. +// Not safe for cyclic or tree-like structs! +// obj must be a pointer. Only exported (public) fields can be set (thanks, golang :/ ) +// Intended for tests, so will panic on bad input or unimplemented fields. +func (f *Fuzzer) FuzzNoCustom(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + f.doFuzz(v, flagNoCustomFuzz) +} + +const ( + // Do not try to find a custom fuzz function. Does not apply recursively. + flagNoCustomFuzz uint64 = 1 << iota +) + +func (f *Fuzzer) doFuzz(v reflect.Value, flags uint64) { + if !v.CanSet() { + return + } + + if flags&flagNoCustomFuzz == 0 { + // Check for both pointer and non-pointer custom functions. + if v.CanAddr() && f.tryCustom(v.Addr()) { + return + } + if f.tryCustom(v) { + return + } + } + + if fn, ok := fillFuncMap[v.Kind()]; ok { + fn(v, f.r) + return + } + switch v.Kind() { + case reflect.Map: + if f.genShouldFill() { + v.Set(reflect.MakeMap(v.Type())) + n := f.genElementCount() + for i := 0; i < n; i++ { + key := reflect.New(v.Type().Key()).Elem() + f.doFuzz(key, 0) + val := reflect.New(v.Type().Elem()).Elem() + f.doFuzz(val, 0) + v.SetMapIndex(key, val) + } + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Ptr: + if f.genShouldFill() { + v.Set(reflect.New(v.Type().Elem())) + f.doFuzz(v.Elem(), 0) + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Slice: + if f.genShouldFill() { + n := f.genElementCount() + v.Set(reflect.MakeSlice(v.Type(), n, n)) + for i := 0; i < n; i++ { + f.doFuzz(v.Index(i), 0) + } + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Array: + if f.genShouldFill() { + n := v.Len() + for i := 0; i < n; i++ { + f.doFuzz(v.Index(i), 0) + } + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + f.doFuzz(v.Field(i), 0) + } + case reflect.Chan: + fallthrough + case reflect.Func: + fallthrough + case reflect.Interface: + fallthrough + default: + panic(fmt.Sprintf("Can't handle %#v", v.Interface())) + } +} + +// tryCustom searches for custom handlers, and returns true iff it finds a match +// and successfully randomizes v. +func (f *Fuzzer) tryCustom(v reflect.Value) bool { + // First: see if we have a fuzz function for it. + doCustom, ok := f.fuzzFuncs[v.Type()] + if !ok { + // Second: see if it can fuzz itself. + if v.CanInterface() { + intf := v.Interface() + if fuzzable, ok := intf.(Interface); ok { + fuzzable.Fuzz(Continue{f: f, Rand: f.r}) + return true + } + } + // Finally: see if there is a default fuzz function. + doCustom, ok = f.defaultFuzzFuncs[v.Type()] + if !ok { + return false + } + } + + switch v.Kind() { + case reflect.Ptr: + if v.IsNil() { + if !v.CanSet() { + return false + } + v.Set(reflect.New(v.Type().Elem())) + } + case reflect.Map: + if v.IsNil() { + if !v.CanSet() { + return false + } + v.Set(reflect.MakeMap(v.Type())) + } + default: + return false + } + + doCustom.Call([]reflect.Value{v, reflect.ValueOf(Continue{ + f: f, + Rand: f.r, + })}) + return true +} + +// Interface represents an object that knows how to fuzz itself. Any time we +// find a type that implements this interface we will delegate the act of +// fuzzing itself. +type Interface interface { + Fuzz(c Continue) +} + +// Continue can be passed to custom fuzzing functions to allow them to use +// the correct source of randomness and to continue fuzzing their members. +type Continue struct { + f *Fuzzer + + // For convenience, Continue implements rand.Rand via embedding. + // Use this for generating any randomness if you want your fuzzing + // to be repeatable for a given seed. + *rand.Rand +} + +// Fuzz continues fuzzing obj. obj must be a pointer. +func (c Continue) Fuzz(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + c.f.doFuzz(v, 0) +} + +// FuzzNoCustom continues fuzzing obj, except that any custom fuzz function for +// obj's type will not be called and obj will not be tested for fuzz.Interface +// conformance. This applies only to obj and not other instances of obj's +// type. +func (c Continue) FuzzNoCustom(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + c.f.doFuzz(v, flagNoCustomFuzz) +} + +// RandString makes a random string up to 20 characters long. The returned string +// may include a variety of (valid) UTF-8 encodings. +func (c Continue) RandString() string { + return randString(c.Rand) +} + +// RandUint64 makes random 64 bit numbers. +// Weirdly, rand doesn't have a function that gives you 64 random bits. +func (c Continue) RandUint64() uint64 { + return randUint64(c.Rand) +} + +// RandBool returns true or false randomly. +func (c Continue) RandBool() bool { + return randBool(c.Rand) +} + +func fuzzInt(v reflect.Value, r *rand.Rand) { + v.SetInt(int64(randUint64(r))) +} + +func fuzzUint(v reflect.Value, r *rand.Rand) { + v.SetUint(randUint64(r)) +} + +func fuzzTime(t *time.Time, c Continue) { + var sec, nsec int64 + // Allow for about 1000 years of random time values, which keeps things + // like JSON parsing reasonably happy. + sec = c.Rand.Int63n(1000 * 365 * 24 * 60 * 60) + c.Fuzz(&nsec) + *t = time.Unix(sec, nsec) +} + +var fillFuncMap = map[reflect.Kind]func(reflect.Value, *rand.Rand){ + reflect.Bool: func(v reflect.Value, r *rand.Rand) { + v.SetBool(randBool(r)) + }, + reflect.Int: fuzzInt, + reflect.Int8: fuzzInt, + reflect.Int16: fuzzInt, + reflect.Int32: fuzzInt, + reflect.Int64: fuzzInt, + reflect.Uint: fuzzUint, + reflect.Uint8: fuzzUint, + reflect.Uint16: fuzzUint, + reflect.Uint32: fuzzUint, + reflect.Uint64: fuzzUint, + reflect.Uintptr: fuzzUint, + reflect.Float32: func(v reflect.Value, r *rand.Rand) { + v.SetFloat(float64(r.Float32())) + }, + reflect.Float64: func(v reflect.Value, r *rand.Rand) { + v.SetFloat(r.Float64()) + }, + reflect.Complex64: func(v reflect.Value, r *rand.Rand) { + panic("unimplemented") + }, + reflect.Complex128: func(v reflect.Value, r *rand.Rand) { + panic("unimplemented") + }, + reflect.String: func(v reflect.Value, r *rand.Rand) { + v.SetString(randString(r)) + }, + reflect.UnsafePointer: func(v reflect.Value, r *rand.Rand) { + panic("unimplemented") + }, +} + +// randBool returns true or false randomly. +func randBool(r *rand.Rand) bool { + if r.Int()&1 == 1 { + return true + } + return false +} + +type charRange struct { + first, last rune +} + +// choose returns a random unicode character from the given range, using the +// given randomness source. +func (r *charRange) choose(rand *rand.Rand) rune { + count := int64(r.last - r.first) + return r.first + rune(rand.Int63n(count)) +} + +var unicodeRanges = []charRange{ + {' ', '~'}, // ASCII characters + {'\u00a0', '\u02af'}, // Multi-byte encoded characters + {'\u4e00', '\u9fff'}, // Common CJK (even longer encodings) +} + +// randString makes a random string up to 20 characters long. The returned string +// may include a variety of (valid) UTF-8 encodings. +func randString(r *rand.Rand) string { + n := r.Intn(20) + runes := make([]rune, n) + for i := range runes { + runes[i] = unicodeRanges[r.Intn(len(unicodeRanges))].choose(r) + } + return string(runes) +} + +// randUint64 makes random 64 bit numbers. +// Weirdly, rand doesn't have a function that gives you 64 random bits. +func randUint64(r *rand.Rand) uint64 { + return uint64(r.Uint32())<<32 | uint64(r.Uint32()) +} diff --git a/vendor/github.com/google/gofuzz/fuzz_test.go b/vendor/github.com/google/gofuzz/fuzz_test.go new file mode 100644 index 000000000..65cbd8223 --- /dev/null +++ b/vendor/github.com/google/gofuzz/fuzz_test.go @@ -0,0 +1,428 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzz + +import ( + "reflect" + "testing" + "time" +) + +func TestFuzz_basic(t *testing.T) { + obj := &struct { + I int + I8 int8 + I16 int16 + I32 int32 + I64 int64 + U uint + U8 uint8 + U16 uint16 + U32 uint32 + U64 uint64 + Uptr uintptr + S string + B bool + T time.Time + }{} + + failed := map[string]int{} + for i := 0; i < 10; i++ { + New().Fuzz(obj) + + if n, v := "i", obj.I; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "i8", obj.I8; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "i16", obj.I16; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "i32", obj.I32; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "i64", obj.I64; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "u", obj.U; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "u8", obj.U8; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "u16", obj.U16; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "u32", obj.U32; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "u64", obj.U64; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "uptr", obj.Uptr; v == 0 { + failed[n] = failed[n] + 1 + } + if n, v := "s", obj.S; v == "" { + failed[n] = failed[n] + 1 + } + if n, v := "b", obj.B; v == false { + failed[n] = failed[n] + 1 + } + if n, v := "t", obj.T; v.IsZero() { + failed[n] = failed[n] + 1 + } + } + checkFailed(t, failed) +} + +func checkFailed(t *testing.T, failed map[string]int) { + for k, v := range failed { + if v > 8 { + t.Errorf("%v seems to not be getting set, was zero value %v times", k, v) + } + } +} + +func TestFuzz_structptr(t *testing.T) { + obj := &struct { + A *struct { + S string + } + }{} + + f := New().NilChance(.5) + failed := map[string]int{} + for i := 0; i < 10; i++ { + f.Fuzz(obj) + + if n, v := "a not nil", obj.A; v == nil { + failed[n] = failed[n] + 1 + } + if n, v := "a nil", obj.A; v != nil { + failed[n] = failed[n] + 1 + } + if n, v := "as", obj.A; v == nil || v.S == "" { + failed[n] = failed[n] + 1 + } + } + checkFailed(t, failed) +} + +// tryFuzz tries fuzzing up to 20 times. Fail if check() never passes, report the highest +// stage it ever got to. +func tryFuzz(t *testing.T, f *Fuzzer, obj interface{}, check func() (stage int, passed bool)) { + maxStage := 0 + for i := 0; i < 20; i++ { + f.Fuzz(obj) + stage, passed := check() + if stage > maxStage { + maxStage = stage + } + if passed { + return + } + } + t.Errorf("Only ever got to stage %v", maxStage) +} + +func TestFuzz_structmap(t *testing.T) { + obj := &struct { + A map[struct { + S string + }]struct { + S2 string + } + B map[string]string + }{} + + tryFuzz(t, New(), obj, func() (int, bool) { + if obj.A == nil { + return 1, false + } + if len(obj.A) == 0 { + return 2, false + } + for k, v := range obj.A { + if k.S == "" { + return 3, false + } + if v.S2 == "" { + return 4, false + } + } + + if obj.B == nil { + return 5, false + } + if len(obj.B) == 0 { + return 6, false + } + for k, v := range obj.B { + if k == "" { + return 7, false + } + if v == "" { + return 8, false + } + } + return 9, true + }) +} + +func TestFuzz_structslice(t *testing.T) { + obj := &struct { + A []struct { + S string + } + B []string + }{} + + tryFuzz(t, New(), obj, func() (int, bool) { + if obj.A == nil { + return 1, false + } + if len(obj.A) == 0 { + return 2, false + } + for _, v := range obj.A { + if v.S == "" { + return 3, false + } + } + + if obj.B == nil { + return 4, false + } + if len(obj.B) == 0 { + return 5, false + } + for _, v := range obj.B { + if v == "" { + return 6, false + } + } + return 7, true + }) +} + +func TestFuzz_structarray(t *testing.T) { + obj := &struct { + A [3]struct { + S string + } + B [2]int + }{} + + tryFuzz(t, New(), obj, func() (int, bool) { + for _, v := range obj.A { + if v.S == "" { + return 1, false + } + } + + for _, v := range obj.B { + if v == 0 { + return 2, false + } + } + return 3, true + }) +} + +func TestFuzz_custom(t *testing.T) { + obj := &struct { + A string + B *string + C map[string]string + D *map[string]string + }{} + + testPhrase := "gotcalled" + testMap := map[string]string{"C": "D"} + f := New().Funcs( + func(s *string, c Continue) { + *s = testPhrase + }, + func(m map[string]string, c Continue) { + m["C"] = "D" + }, + ) + + tryFuzz(t, f, obj, func() (int, bool) { + if obj.A != testPhrase { + return 1, false + } + if obj.B == nil { + return 2, false + } + if *obj.B != testPhrase { + return 3, false + } + if e, a := testMap, obj.C; !reflect.DeepEqual(e, a) { + return 4, false + } + if obj.D == nil { + return 5, false + } + if e, a := testMap, *obj.D; !reflect.DeepEqual(e, a) { + return 6, false + } + return 7, true + }) +} + +type SelfFuzzer string + +// Implement fuzz.Interface. +func (sf *SelfFuzzer) Fuzz(c Continue) { + *sf = selfFuzzerTestPhrase +} + +const selfFuzzerTestPhrase = "was fuzzed" + +func TestFuzz_interface(t *testing.T) { + f := New() + + var obj1 SelfFuzzer + tryFuzz(t, f, &obj1, func() (int, bool) { + if obj1 != selfFuzzerTestPhrase { + return 1, false + } + return 1, true + }) + + var obj2 map[int]SelfFuzzer + tryFuzz(t, f, &obj2, func() (int, bool) { + for _, v := range obj2 { + if v != selfFuzzerTestPhrase { + return 1, false + } + } + return 1, true + }) +} + +func TestFuzz_interfaceAndFunc(t *testing.T) { + const privateTestPhrase = "private phrase" + f := New().Funcs( + // This should take precedence over SelfFuzzer.Fuzz(). + func(s *SelfFuzzer, c Continue) { + *s = privateTestPhrase + }, + ) + + var obj1 SelfFuzzer + tryFuzz(t, f, &obj1, func() (int, bool) { + if obj1 != privateTestPhrase { + return 1, false + } + return 1, true + }) + + var obj2 map[int]SelfFuzzer + tryFuzz(t, f, &obj2, func() (int, bool) { + for _, v := range obj2 { + if v != privateTestPhrase { + return 1, false + } + } + return 1, true + }) +} + +func TestFuzz_noCustom(t *testing.T) { + type Inner struct { + Str string + } + type Outer struct { + Str string + In Inner + } + + testPhrase := "gotcalled" + f := New().Funcs( + func(outer *Outer, c Continue) { + outer.Str = testPhrase + c.Fuzz(&outer.In) + }, + func(inner *Inner, c Continue) { + inner.Str = testPhrase + }, + ) + c := Continue{f: f, Rand: f.r} + + // Fuzzer.Fuzz() + obj1 := Outer{} + f.Fuzz(&obj1) + if obj1.Str != testPhrase { + t.Errorf("expected Outer custom function to have been called") + } + if obj1.In.Str != testPhrase { + t.Errorf("expected Inner custom function to have been called") + } + + // Continue.Fuzz() + obj2 := Outer{} + c.Fuzz(&obj2) + if obj2.Str != testPhrase { + t.Errorf("expected Outer custom function to have been called") + } + if obj2.In.Str != testPhrase { + t.Errorf("expected Inner custom function to have been called") + } + + // Fuzzer.FuzzNoCustom() + obj3 := Outer{} + f.FuzzNoCustom(&obj3) + if obj3.Str == testPhrase { + t.Errorf("expected Outer custom function to not have been called") + } + if obj3.In.Str != testPhrase { + t.Errorf("expected Inner custom function to have been called") + } + + // Continue.FuzzNoCustom() + obj4 := Outer{} + c.FuzzNoCustom(&obj4) + if obj4.Str == testPhrase { + t.Errorf("expected Outer custom function to not have been called") + } + if obj4.In.Str != testPhrase { + t.Errorf("expected Inner custom function to have been called") + } +} + +func TestFuzz_NumElements(t *testing.T) { + f := New().NilChance(0).NumElements(0, 1) + obj := &struct { + A []int + }{} + + tryFuzz(t, f, obj, func() (int, bool) { + if obj.A == nil { + return 1, false + } + return 2, len(obj.A) == 0 + }) + tryFuzz(t, f, obj, func() (int, bool) { + if obj.A == nil { + return 3, false + } + return 4, len(obj.A) == 1 + }) +} diff --git a/vendor/github.com/hashicorp/golang-lru/lru_test.go b/vendor/github.com/hashicorp/golang-lru/lru_test.go index 2b31218b0..215f9c872 100644 --- a/vendor/github.com/hashicorp/golang-lru/lru_test.go +++ b/vendor/github.com/hashicorp/golang-lru/lru_test.go @@ -132,7 +132,7 @@ func TestLRU(t *testing.T) { } } -// test that Add returns true/false if an eviction occurred +// test that Add returns true/false if an eviction occured func TestLRUAdd(t *testing.T) { evictCounter := 0 onEvicted := func(k interface{}, v interface{}) { diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go index cb416b394..68d097a1c 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru.go @@ -47,7 +47,7 @@ func (c *LRU) Purge() { c.evictList.Init() } -// Add adds a value to the cache. Returns true if an eviction occurred. +// Add adds a value to the cache. Returns true if an eviction occured. func (c *LRU) Add(key, value interface{}) bool { // Check for existing item if ent, ok := c.items[key]; ok { diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_test.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_test.go index a958934f6..30658ed12 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_test.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_test.go @@ -108,7 +108,7 @@ func TestLRU_GetOldest_RemoveOldest(t *testing.T) { } } -// Test that Add returns true/false if an eviction occurred +// Test that Add returns true/false if an eviction occured func TestLRU_Add(t *testing.T) { evictCounter := 0 onEvicted := func(k interface{}, v interface{}) { diff --git a/vendor/github.com/hashicorp/hcl/.github/ISSUE_TEMPLATE.md b/vendor/github.com/hashicorp/hcl/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 2d7fc4bf6..000000000 --- a/vendor/github.com/hashicorp/hcl/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,21 +0,0 @@ -### HCL Template -```hcl -# Place your HCL configuration file here -``` - -### Expected behavior -What should have happened? - -### Actual behavior -What actually happened? - -### Steps to reproduce -1. -2. -3. - -### References -Are there any other GitHub issues (open or closed) that should -be linked here? For example: -- GH-1234 -- ... diff --git a/vendor/github.com/hashicorp/hcl/.gitignore b/vendor/github.com/hashicorp/hcl/.gitignore deleted file mode 100644 index 15586a2b5..000000000 --- a/vendor/github.com/hashicorp/hcl/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -y.output - -# ignore intellij files -.idea -*.iml -*.ipr -*.iws - -*.test diff --git a/vendor/github.com/hashicorp/hcl/.travis.yml b/vendor/github.com/hashicorp/hcl/.travis.yml deleted file mode 100644 index 3f83d9023..000000000 --- a/vendor/github.com/hashicorp/hcl/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: - - 1.8 - -branches: - only: - - master - -script: make test diff --git a/vendor/github.com/hashicorp/hcl/LICENSE b/vendor/github.com/hashicorp/hcl/LICENSE deleted file mode 100644 index c33dcc7c9..000000000 --- a/vendor/github.com/hashicorp/hcl/LICENSE +++ /dev/null @@ -1,354 +0,0 @@ -Mozilla Public License, version 2.0 - -1. Definitions - -1.1. “Contributor” - - means each individual or legal entity that creates, contributes to the - creation of, or owns Covered Software. - -1.2. “Contributor Version” - - means the combination of the Contributions of others (if any) used by a - Contributor and that particular Contributor’s Contribution. - -1.3. “Contribution” - - means Covered Software of a particular Contributor. - -1.4. “Covered Software” - - means Source Code Form to which the initial Contributor has attached the - notice in Exhibit A, the Executable Form of such Source Code Form, and - Modifications of such Source Code Form, in each case including portions - thereof. - -1.5. “Incompatible With Secondary Licenses” - means - - a. that the initial Contributor has attached the notice described in - Exhibit B to the Covered Software; or - - b. that the Covered Software was made available under the terms of version - 1.1 or earlier of the License, but not also under the terms of a - Secondary License. - -1.6. “Executable Form” - - means any form of the work other than Source Code Form. - -1.7. “Larger Work” - - means a work that combines Covered Software with other material, in a separate - file or files, that is not Covered Software. - -1.8. “License” - - means this document. - -1.9. “Licensable” - - means having the right to grant, to the maximum extent possible, whether at the - time of the initial grant or subsequently, any and all of the rights conveyed by - this License. - -1.10. “Modifications” - - means any of the following: - - a. any file in Source Code Form that results from an addition to, deletion - from, or modification of the contents of Covered Software; or - - b. any new file in Source Code Form that contains any Covered Software. - -1.11. “Patent Claims” of a Contributor - - means any patent claim(s), including without limitation, method, process, - and apparatus claims, in any patent Licensable by such Contributor that - would be infringed, but for the grant of the License, by the making, - using, selling, offering for sale, having made, import, or transfer of - either its Contributions or its Contributor Version. - -1.12. “Secondary License” - - means either the GNU General Public License, Version 2.0, the GNU Lesser - General Public License, Version 2.1, the GNU Affero General Public - License, Version 3.0, or any later versions of those licenses. - -1.13. “Source Code Form” - - means the form of the work preferred for making modifications. - -1.14. “You” (or “Your”) - - means an individual or a legal entity exercising rights under this - License. For legal entities, “You” includes any entity that controls, is - controlled by, or is under common control with You. For purposes of this - definition, “control” means (a) the power, direct or indirect, to cause - the direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - - -2. License Grants and Conditions - -2.1. Grants - - Each Contributor hereby grants You a world-wide, royalty-free, - non-exclusive license: - - a. under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or as - part of a Larger Work; and - - b. under Patent Claims of such Contributor to make, use, sell, offer for - sale, have made, import, and otherwise transfer either its Contributions - or its Contributor Version. - -2.2. Effective Date - - The licenses granted in Section 2.1 with respect to any Contribution become - effective for each Contribution on the date the Contributor first distributes - such Contribution. - -2.3. Limitations on Grant Scope - - The licenses granted in this Section 2 are the only rights granted under this - License. No additional rights or licenses will be implied from the distribution - or licensing of Covered Software under this License. Notwithstanding Section - 2.1(b) above, no patent license is granted by a Contributor: - - a. for any code that a Contributor has removed from Covered Software; or - - b. for infringements caused by: (i) Your and any other third party’s - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - - c. under Patent Claims infringed by Covered Software in the absence of its - Contributions. - - This License does not grant any rights in the trademarks, service marks, or - logos of any Contributor (except as may be necessary to comply with the - notice requirements in Section 3.4). - -2.4. Subsequent Licenses - - No Contributor makes additional grants as a result of Your choice to - distribute the Covered Software under a subsequent version of this License - (see Section 10.2) or under the terms of a Secondary License (if permitted - under the terms of Section 3.3). - -2.5. Representation - - Each Contributor represents that the Contributor believes its Contributions - are its original creation(s) or it has sufficient rights to grant the - rights to its Contributions conveyed by this License. - -2.6. Fair Use - - This License is not intended to limit any rights You have under applicable - copyright doctrines of fair use, fair dealing, or other equivalents. - -2.7. Conditions - - Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in - Section 2.1. - - -3. Responsibilities - -3.1. Distribution of Source Form - - All distribution of Covered Software in Source Code Form, including any - Modifications that You create or to which You contribute, must be under the - terms of this License. You must inform recipients that the Source Code Form - of the Covered Software is governed by the terms of this License, and how - they can obtain a copy of this License. You may not attempt to alter or - restrict the recipients’ rights in the Source Code Form. - -3.2. Distribution of Executable Form - - If You distribute Covered Software in Executable Form then: - - a. such Covered Software must also be made available in Source Code Form, - as described in Section 3.1, and You must inform recipients of the - Executable Form how they can obtain a copy of such Source Code Form by - reasonable means in a timely manner, at a charge no more than the cost - of distribution to the recipient; and - - b. You may distribute such Executable Form under the terms of this License, - or sublicense it under different terms, provided that the license for - the Executable Form does not attempt to limit or alter the recipients’ - rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - - You may create and distribute a Larger Work under terms of Your choice, - provided that You also comply with the requirements of this License for the - Covered Software. If the Larger Work is a combination of Covered Software - with a work governed by one or more Secondary Licenses, and the Covered - Software is not Incompatible With Secondary Licenses, this License permits - You to additionally distribute such Covered Software under the terms of - such Secondary License(s), so that the recipient of the Larger Work may, at - their option, further distribute the Covered Software under the terms of - either this License or such Secondary License(s). - -3.4. Notices - - You may not remove or alter the substance of any license notices (including - copyright notices, patent notices, disclaimers of warranty, or limitations - of liability) contained within the Source Code Form of the Covered - Software, except that You may alter any license notices to the extent - required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - - You may choose to offer, and to charge a fee for, warranty, support, - indemnity or liability obligations to one or more recipients of Covered - Software. However, You may do so only on Your own behalf, and not on behalf - of any Contributor. You must make it absolutely clear that any such - warranty, support, indemnity, or liability obligation is offered by You - alone, and You hereby agree to indemnify every Contributor for any - liability incurred by such Contributor as a result of warranty, support, - indemnity or liability terms You offer. You may include additional - disclaimers of warranty and limitations of liability specific to any - jurisdiction. - -4. Inability to Comply Due to Statute or Regulation - - If it is impossible for You to comply with any of the terms of this License - with respect to some or all of the Covered Software due to statute, judicial - order, or regulation then You must: (a) comply with the terms of this License - to the maximum extent possible; and (b) describe the limitations and the code - they affect. Such description must be placed in a text file included with all - distributions of the Covered Software under this License. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Termination - -5.1. The rights granted under this License will terminate automatically if You - fail to comply with any of its terms. However, if You become compliant, - then the rights granted under this License from a particular Contributor - are reinstated (a) provisionally, unless and until such Contributor - explicitly and finally terminates Your grants, and (b) on an ongoing basis, - if such Contributor fails to notify You of the non-compliance by some - reasonable means prior to 60 days after You have come back into compliance. - Moreover, Your grants from a particular Contributor are reinstated on an - ongoing basis if such Contributor notifies You of the non-compliance by - some reasonable means, this is the first time You have received notice of - non-compliance with this License from such Contributor, and You become - compliant prior to 30 days after Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent - infringement claim (excluding declaratory judgment actions, counter-claims, - and cross-claims) alleging that a Contributor Version directly or - indirectly infringes any patent, then the rights granted to You by any and - all Contributors for the Covered Software under Section 2.1 of this License - shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user - license agreements (excluding distributors and resellers) which have been - validly granted by You or Your distributors under this License prior to - termination shall survive termination. - -6. Disclaimer of Warranty - - Covered Software is provided under this License on an “as is” basis, without - warranty of any kind, either expressed, implied, or statutory, including, - without limitation, warranties that the Covered Software is free of defects, - merchantable, fit for a particular purpose or non-infringing. The entire - risk as to the quality and performance of the Covered Software is with You. - Should any Covered Software prove defective in any respect, You (not any - Contributor) assume the cost of any necessary servicing, repair, or - correction. This disclaimer of warranty constitutes an essential part of this - License. No use of any Covered Software is authorized under this License - except under this disclaimer. - -7. Limitation of Liability - - Under no circumstances and under no legal theory, whether tort (including - negligence), contract, or otherwise, shall any Contributor, or anyone who - distributes Covered Software as permitted above, be liable to You for any - direct, indirect, special, incidental, or consequential damages of any - character including, without limitation, damages for lost profits, loss of - goodwill, work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses, even if such party shall have been - informed of the possibility of such damages. This limitation of liability - shall not apply to liability for death or personal injury resulting from such - party’s negligence to the extent applicable law prohibits such limitation. - Some jurisdictions do not allow the exclusion or limitation of incidental or - consequential damages, so this exclusion and limitation may not apply to You. - -8. Litigation - - Any litigation relating to this License may be brought only in the courts of - a jurisdiction where the defendant maintains its principal place of business - and such litigation shall be governed by laws of that jurisdiction, without - reference to its conflict-of-law provisions. Nothing in this Section shall - prevent a party’s ability to bring cross-claims or counter-claims. - -9. Miscellaneous - - This License represents the complete agreement concerning the subject matter - hereof. If any provision of this License is held to be unenforceable, such - provision shall be reformed only to the extent necessary to make it - enforceable. Any law or regulation which provides that the language of a - contract shall be construed against the drafter shall not be used to construe - this License against a Contributor. - - -10. Versions of the License - -10.1. New Versions - - Mozilla Foundation is the license steward. Except as provided in Section - 10.3, no one other than the license steward has the right to modify or - publish new versions of this License. Each version will be given a - distinguishing version number. - -10.2. Effect of New Versions - - You may distribute the Covered Software under the terms of the version of - the License under which You originally received the Covered Software, or - under the terms of any subsequent version published by the license - steward. - -10.3. Modified Versions - - If you create software not governed by this License, and you want to - create a new license for such software, you may create and use a modified - version of this License if you rename the license and remove any - references to the name of the license steward (except to note that such - modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses - If You choose to distribute Source Code Form that is Incompatible With - Secondary Licenses under the terms of this version of the License, the - notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the - terms of the Mozilla Public License, v. - 2.0. If a copy of the MPL was not - distributed with this file, You can - obtain one at - http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular file, then -You may include the notice in a location (such as a LICENSE file in a relevant -directory) where a recipient would be likely to look for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - “Incompatible With Secondary Licenses” Notice - - This Source Code Form is “Incompatible - With Secondary Licenses”, as defined by - the Mozilla Public License, v. 2.0. - diff --git a/vendor/github.com/hashicorp/hcl/Makefile b/vendor/github.com/hashicorp/hcl/Makefile deleted file mode 100644 index 84fd743f5..000000000 --- a/vendor/github.com/hashicorp/hcl/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -TEST?=./... - -default: test - -fmt: generate - go fmt ./... - -test: generate - go get -t ./... - go test $(TEST) $(TESTARGS) - -generate: - go generate ./... - -updatedeps: - go get -u golang.org/x/tools/cmd/stringer - -.PHONY: default generate test updatedeps diff --git a/vendor/github.com/hashicorp/hcl/README.md b/vendor/github.com/hashicorp/hcl/README.md deleted file mode 100644 index c8223326d..000000000 --- a/vendor/github.com/hashicorp/hcl/README.md +++ /dev/null @@ -1,125 +0,0 @@ -# HCL - -[![GoDoc](https://godoc.org/github.com/hashicorp/hcl?status.png)](https://godoc.org/github.com/hashicorp/hcl) [![Build Status](https://travis-ci.org/hashicorp/hcl.svg?branch=master)](https://travis-ci.org/hashicorp/hcl) - -HCL (HashiCorp Configuration Language) is a configuration language built -by HashiCorp. The goal of HCL is to build a structured configuration language -that is both human and machine friendly for use with command-line tools, but -specifically targeted towards DevOps tools, servers, etc. - -HCL is also fully JSON compatible. That is, JSON can be used as completely -valid input to a system expecting HCL. This helps makes systems -interoperable with other systems. - -HCL is heavily inspired by -[libucl](https://github.com/vstakhov/libucl), -nginx configuration, and others similar. - -## Why? - -A common question when viewing HCL is to ask the question: why not -JSON, YAML, etc.? - -Prior to HCL, the tools we built at [HashiCorp](http://www.hashicorp.com) -used a variety of configuration languages from full programming languages -such as Ruby to complete data structure languages such as JSON. What we -learned is that some people wanted human-friendly configuration languages -and some people wanted machine-friendly languages. - -JSON fits a nice balance in this, but is fairly verbose and most -importantly doesn't support comments. With YAML, we found that beginners -had a really hard time determining what the actual structure was, and -ended up guessing more often than not whether to use a hyphen, colon, etc. -in order to represent some configuration key. - -Full programming languages such as Ruby enable complex behavior -a configuration language shouldn't usually allow, and also forces -people to learn some set of Ruby. - -Because of this, we decided to create our own configuration language -that is JSON-compatible. Our configuration language (HCL) is designed -to be written and modified by humans. The API for HCL allows JSON -as an input so that it is also machine-friendly (machines can generate -JSON instead of trying to generate HCL). - -Our goal with HCL is not to alienate other configuration languages. -It is instead to provide HCL as a specialized language for our tools, -and JSON as the interoperability layer. - -## Syntax - -For a complete grammar, please see the parser itself. A high-level overview -of the syntax and grammar is listed here. - - * Single line comments start with `#` or `//` - - * Multi-line comments are wrapped in `/*` and `*/`. Nested block comments - are not allowed. A multi-line comment (also known as a block comment) - terminates at the first `*/` found. - - * Values are assigned with the syntax `key = value` (whitespace doesn't - matter). The value can be any primitive: a string, number, boolean, - object, or list. - - * Strings are double-quoted and can contain any UTF-8 characters. - Example: `"Hello, World"` - - * Multi-line strings start with `<- - echo %Path% - - go version - - go env - - go get -t ./... - -build_script: -- cmd: go test -v ./... diff --git a/vendor/github.com/hashicorp/hcl/decoder.go b/vendor/github.com/hashicorp/hcl/decoder.go deleted file mode 100644 index b88f322a8..000000000 --- a/vendor/github.com/hashicorp/hcl/decoder.go +++ /dev/null @@ -1,724 +0,0 @@ -package hcl - -import ( - "errors" - "fmt" - "reflect" - "sort" - "strconv" - "strings" - - "github.com/hashicorp/hcl/hcl/ast" - "github.com/hashicorp/hcl/hcl/parser" - "github.com/hashicorp/hcl/hcl/token" -) - -// This is the tag to use with structures to have settings for HCL -const tagName = "hcl" - -var ( - // nodeType holds a reference to the type of ast.Node - nodeType reflect.Type = findNodeType() -) - -// Unmarshal accepts a byte slice as input and writes the -// data to the value pointed to by v. -func Unmarshal(bs []byte, v interface{}) error { - root, err := parse(bs) - if err != nil { - return err - } - - return DecodeObject(v, root) -} - -// Decode reads the given input and decodes it into the structure -// given by `out`. -func Decode(out interface{}, in string) error { - obj, err := Parse(in) - if err != nil { - return err - } - - return DecodeObject(out, obj) -} - -// DecodeObject is a lower-level version of Decode. It decodes a -// raw Object into the given output. -func DecodeObject(out interface{}, n ast.Node) error { - val := reflect.ValueOf(out) - if val.Kind() != reflect.Ptr { - return errors.New("result must be a pointer") - } - - // If we have the file, we really decode the root node - if f, ok := n.(*ast.File); ok { - n = f.Node - } - - var d decoder - return d.decode("root", n, val.Elem()) -} - -type decoder struct { - stack []reflect.Kind -} - -func (d *decoder) decode(name string, node ast.Node, result reflect.Value) error { - k := result - - // If we have an interface with a valid value, we use that - // for the check. - if result.Kind() == reflect.Interface { - elem := result.Elem() - if elem.IsValid() { - k = elem - } - } - - // Push current onto stack unless it is an interface. - if k.Kind() != reflect.Interface { - d.stack = append(d.stack, k.Kind()) - - // Schedule a pop - defer func() { - d.stack = d.stack[:len(d.stack)-1] - }() - } - - switch k.Kind() { - case reflect.Bool: - return d.decodeBool(name, node, result) - case reflect.Float32, reflect.Float64: - return d.decodeFloat(name, node, result) - case reflect.Int, reflect.Int32, reflect.Int64: - return d.decodeInt(name, node, result) - case reflect.Interface: - // When we see an interface, we make our own thing - return d.decodeInterface(name, node, result) - case reflect.Map: - return d.decodeMap(name, node, result) - case reflect.Ptr: - return d.decodePtr(name, node, result) - case reflect.Slice: - return d.decodeSlice(name, node, result) - case reflect.String: - return d.decodeString(name, node, result) - case reflect.Struct: - return d.decodeStruct(name, node, result) - default: - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: unknown kind to decode into: %s", name, k.Kind()), - } - } -} - -func (d *decoder) decodeBool(name string, node ast.Node, result reflect.Value) error { - switch n := node.(type) { - case *ast.LiteralType: - if n.Token.Type == token.BOOL { - v, err := strconv.ParseBool(n.Token.Text) - if err != nil { - return err - } - - result.Set(reflect.ValueOf(v)) - return nil - } - } - - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: unknown type %T", name, node), - } -} - -func (d *decoder) decodeFloat(name string, node ast.Node, result reflect.Value) error { - switch n := node.(type) { - case *ast.LiteralType: - if n.Token.Type == token.FLOAT || n.Token.Type == token.NUMBER { - v, err := strconv.ParseFloat(n.Token.Text, 64) - if err != nil { - return err - } - - result.Set(reflect.ValueOf(v).Convert(result.Type())) - return nil - } - } - - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: unknown type %T", name, node), - } -} - -func (d *decoder) decodeInt(name string, node ast.Node, result reflect.Value) error { - switch n := node.(type) { - case *ast.LiteralType: - switch n.Token.Type { - case token.NUMBER: - v, err := strconv.ParseInt(n.Token.Text, 0, 0) - if err != nil { - return err - } - - if result.Kind() == reflect.Interface { - result.Set(reflect.ValueOf(int(v))) - } else { - result.SetInt(v) - } - return nil - case token.STRING: - v, err := strconv.ParseInt(n.Token.Value().(string), 0, 0) - if err != nil { - return err - } - - if result.Kind() == reflect.Interface { - result.Set(reflect.ValueOf(int(v))) - } else { - result.SetInt(v) - } - return nil - } - } - - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: unknown type %T", name, node), - } -} - -func (d *decoder) decodeInterface(name string, node ast.Node, result reflect.Value) error { - // When we see an ast.Node, we retain the value to enable deferred decoding. - // Very useful in situations where we want to preserve ast.Node information - // like Pos - if result.Type() == nodeType && result.CanSet() { - result.Set(reflect.ValueOf(node)) - return nil - } - - var set reflect.Value - redecode := true - - // For testing types, ObjectType should just be treated as a list. We - // set this to a temporary var because we want to pass in the real node. - testNode := node - if ot, ok := node.(*ast.ObjectType); ok { - testNode = ot.List - } - - switch n := testNode.(type) { - case *ast.ObjectList: - // If we're at the root or we're directly within a slice, then we - // decode objects into map[string]interface{}, otherwise we decode - // them into lists. - if len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice { - var temp map[string]interface{} - tempVal := reflect.ValueOf(temp) - result := reflect.MakeMap( - reflect.MapOf( - reflect.TypeOf(""), - tempVal.Type().Elem())) - - set = result - } else { - var temp []map[string]interface{} - tempVal := reflect.ValueOf(temp) - result := reflect.MakeSlice( - reflect.SliceOf(tempVal.Type().Elem()), 0, len(n.Items)) - set = result - } - case *ast.ObjectType: - // If we're at the root or we're directly within a slice, then we - // decode objects into map[string]interface{}, otherwise we decode - // them into lists. - if len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice { - var temp map[string]interface{} - tempVal := reflect.ValueOf(temp) - result := reflect.MakeMap( - reflect.MapOf( - reflect.TypeOf(""), - tempVal.Type().Elem())) - - set = result - } else { - var temp []map[string]interface{} - tempVal := reflect.ValueOf(temp) - result := reflect.MakeSlice( - reflect.SliceOf(tempVal.Type().Elem()), 0, 1) - set = result - } - case *ast.ListType: - var temp []interface{} - tempVal := reflect.ValueOf(temp) - result := reflect.MakeSlice( - reflect.SliceOf(tempVal.Type().Elem()), 0, 0) - set = result - case *ast.LiteralType: - switch n.Token.Type { - case token.BOOL: - var result bool - set = reflect.Indirect(reflect.New(reflect.TypeOf(result))) - case token.FLOAT: - var result float64 - set = reflect.Indirect(reflect.New(reflect.TypeOf(result))) - case token.NUMBER: - var result int - set = reflect.Indirect(reflect.New(reflect.TypeOf(result))) - case token.STRING, token.HEREDOC: - set = reflect.Indirect(reflect.New(reflect.TypeOf(""))) - default: - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: cannot decode into interface: %T", name, node), - } - } - default: - return fmt.Errorf( - "%s: cannot decode into interface: %T", - name, node) - } - - // Set the result to what its supposed to be, then reset - // result so we don't reflect into this method anymore. - result.Set(set) - - if redecode { - // Revisit the node so that we can use the newly instantiated - // thing and populate it. - if err := d.decode(name, node, result); err != nil { - return err - } - } - - return nil -} - -func (d *decoder) decodeMap(name string, node ast.Node, result reflect.Value) error { - if item, ok := node.(*ast.ObjectItem); ok { - node = &ast.ObjectList{Items: []*ast.ObjectItem{item}} - } - - if ot, ok := node.(*ast.ObjectType); ok { - node = ot.List - } - - n, ok := node.(*ast.ObjectList) - if !ok { - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: not an object type for map (%T)", name, node), - } - } - - // If we have an interface, then we can address the interface, - // but not the slice itself, so get the element but set the interface - set := result - if result.Kind() == reflect.Interface { - result = result.Elem() - } - - resultType := result.Type() - resultElemType := resultType.Elem() - resultKeyType := resultType.Key() - if resultKeyType.Kind() != reflect.String { - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: map must have string keys", name), - } - } - - // Make a map if it is nil - resultMap := result - if result.IsNil() { - resultMap = reflect.MakeMap( - reflect.MapOf(resultKeyType, resultElemType)) - } - - // Go through each element and decode it. - done := make(map[string]struct{}) - for _, item := range n.Items { - if item.Val == nil { - continue - } - - // github.com/hashicorp/terraform/issue/5740 - if len(item.Keys) == 0 { - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: map must have string keys", name), - } - } - - // Get the key we're dealing with, which is the first item - keyStr := item.Keys[0].Token.Value().(string) - - // If we've already processed this key, then ignore it - if _, ok := done[keyStr]; ok { - continue - } - - // Determine the value. If we have more than one key, then we - // get the objectlist of only these keys. - itemVal := item.Val - if len(item.Keys) > 1 { - itemVal = n.Filter(keyStr) - done[keyStr] = struct{}{} - } - - // Make the field name - fieldName := fmt.Sprintf("%s.%s", name, keyStr) - - // Get the key/value as reflection values - key := reflect.ValueOf(keyStr) - val := reflect.Indirect(reflect.New(resultElemType)) - - // If we have a pre-existing value in the map, use that - oldVal := resultMap.MapIndex(key) - if oldVal.IsValid() { - val.Set(oldVal) - } - - // Decode! - if err := d.decode(fieldName, itemVal, val); err != nil { - return err - } - - // Set the value on the map - resultMap.SetMapIndex(key, val) - } - - // Set the final map if we can - set.Set(resultMap) - return nil -} - -func (d *decoder) decodePtr(name string, node ast.Node, result reflect.Value) error { - // Create an element of the concrete (non pointer) type and decode - // into that. Then set the value of the pointer to this type. - resultType := result.Type() - resultElemType := resultType.Elem() - val := reflect.New(resultElemType) - if err := d.decode(name, node, reflect.Indirect(val)); err != nil { - return err - } - - result.Set(val) - return nil -} - -func (d *decoder) decodeSlice(name string, node ast.Node, result reflect.Value) error { - // If we have an interface, then we can address the interface, - // but not the slice itself, so get the element but set the interface - set := result - if result.Kind() == reflect.Interface { - result = result.Elem() - } - // Create the slice if it isn't nil - resultType := result.Type() - resultElemType := resultType.Elem() - if result.IsNil() { - resultSliceType := reflect.SliceOf(resultElemType) - result = reflect.MakeSlice( - resultSliceType, 0, 0) - } - - // Figure out the items we'll be copying into the slice - var items []ast.Node - switch n := node.(type) { - case *ast.ObjectList: - items = make([]ast.Node, len(n.Items)) - for i, item := range n.Items { - items[i] = item - } - case *ast.ObjectType: - items = []ast.Node{n} - case *ast.ListType: - items = n.List - default: - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("unknown slice type: %T", node), - } - } - - for i, item := range items { - fieldName := fmt.Sprintf("%s[%d]", name, i) - - // Decode - val := reflect.Indirect(reflect.New(resultElemType)) - - // if item is an object that was decoded from ambiguous JSON and - // flattened, make sure it's expanded if it needs to decode into a - // defined structure. - item := expandObject(item, val) - - if err := d.decode(fieldName, item, val); err != nil { - return err - } - - // Append it onto the slice - result = reflect.Append(result, val) - } - - set.Set(result) - return nil -} - -// expandObject detects if an ambiguous JSON object was flattened to a List which -// should be decoded into a struct, and expands the ast to properly deocode. -func expandObject(node ast.Node, result reflect.Value) ast.Node { - item, ok := node.(*ast.ObjectItem) - if !ok { - return node - } - - elemType := result.Type() - - // our target type must be a struct - switch elemType.Kind() { - case reflect.Ptr: - switch elemType.Elem().Kind() { - case reflect.Struct: - //OK - default: - return node - } - case reflect.Struct: - //OK - default: - return node - } - - // A list value will have a key and field name. If it had more fields, - // it wouldn't have been flattened. - if len(item.Keys) != 2 { - return node - } - - keyToken := item.Keys[0].Token - item.Keys = item.Keys[1:] - - // we need to un-flatten the ast enough to decode - newNode := &ast.ObjectItem{ - Keys: []*ast.ObjectKey{ - &ast.ObjectKey{ - Token: keyToken, - }, - }, - Val: &ast.ObjectType{ - List: &ast.ObjectList{ - Items: []*ast.ObjectItem{item}, - }, - }, - } - - return newNode -} - -func (d *decoder) decodeString(name string, node ast.Node, result reflect.Value) error { - switch n := node.(type) { - case *ast.LiteralType: - switch n.Token.Type { - case token.NUMBER: - result.Set(reflect.ValueOf(n.Token.Text).Convert(result.Type())) - return nil - case token.STRING, token.HEREDOC: - result.Set(reflect.ValueOf(n.Token.Value()).Convert(result.Type())) - return nil - } - } - - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: unknown type for string %T", name, node), - } -} - -func (d *decoder) decodeStruct(name string, node ast.Node, result reflect.Value) error { - var item *ast.ObjectItem - if it, ok := node.(*ast.ObjectItem); ok { - item = it - node = it.Val - } - - if ot, ok := node.(*ast.ObjectType); ok { - node = ot.List - } - - // Handle the special case where the object itself is a literal. Previously - // the yacc parser would always ensure top-level elements were arrays. The new - // parser does not make the same guarantees, thus we need to convert any - // top-level literal elements into a list. - if _, ok := node.(*ast.LiteralType); ok && item != nil { - node = &ast.ObjectList{Items: []*ast.ObjectItem{item}} - } - - list, ok := node.(*ast.ObjectList) - if !ok { - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: not an object type for struct (%T)", name, node), - } - } - - // This slice will keep track of all the structs we'll be decoding. - // There can be more than one struct if there are embedded structs - // that are squashed. - structs := make([]reflect.Value, 1, 5) - structs[0] = result - - // Compile the list of all the fields that we're going to be decoding - // from all the structs. - fields := make(map[*reflect.StructField]reflect.Value) - for len(structs) > 0 { - structVal := structs[0] - structs = structs[1:] - - structType := structVal.Type() - for i := 0; i < structType.NumField(); i++ { - fieldType := structType.Field(i) - tagParts := strings.Split(fieldType.Tag.Get(tagName), ",") - - // Ignore fields with tag name "-" - if tagParts[0] == "-" { - continue - } - - if fieldType.Anonymous { - fieldKind := fieldType.Type.Kind() - if fieldKind != reflect.Struct { - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: unsupported type to struct: %s", - fieldType.Name, fieldKind), - } - } - - // We have an embedded field. We "squash" the fields down - // if specified in the tag. - squash := false - for _, tag := range tagParts[1:] { - if tag == "squash" { - squash = true - break - } - } - - if squash { - structs = append( - structs, result.FieldByName(fieldType.Name)) - continue - } - } - - // Normal struct field, store it away - fields[&fieldType] = structVal.Field(i) - } - } - - usedKeys := make(map[string]struct{}) - decodedFields := make([]string, 0, len(fields)) - decodedFieldsVal := make([]reflect.Value, 0) - unusedKeysVal := make([]reflect.Value, 0) - for fieldType, field := range fields { - if !field.IsValid() { - // This should never happen - panic("field is not valid") - } - - // If we can't set the field, then it is unexported or something, - // and we just continue onwards. - if !field.CanSet() { - continue - } - - fieldName := fieldType.Name - - tagValue := fieldType.Tag.Get(tagName) - tagParts := strings.SplitN(tagValue, ",", 2) - if len(tagParts) >= 2 { - switch tagParts[1] { - case "decodedFields": - decodedFieldsVal = append(decodedFieldsVal, field) - continue - case "key": - if item == nil { - return &parser.PosError{ - Pos: node.Pos(), - Err: fmt.Errorf("%s: %s asked for 'key', impossible", - name, fieldName), - } - } - - field.SetString(item.Keys[0].Token.Value().(string)) - continue - case "unusedKeys": - unusedKeysVal = append(unusedKeysVal, field) - continue - } - } - - if tagParts[0] != "" { - fieldName = tagParts[0] - } - - // Determine the element we'll use to decode. If it is a single - // match (only object with the field), then we decode it exactly. - // If it is a prefix match, then we decode the matches. - filter := list.Filter(fieldName) - - prefixMatches := filter.Children() - matches := filter.Elem() - if len(matches.Items) == 0 && len(prefixMatches.Items) == 0 { - continue - } - - // Track the used key - usedKeys[fieldName] = struct{}{} - - // Create the field name and decode. We range over the elements - // because we actually want the value. - fieldName = fmt.Sprintf("%s.%s", name, fieldName) - if len(prefixMatches.Items) > 0 { - if err := d.decode(fieldName, prefixMatches, field); err != nil { - return err - } - } - for _, match := range matches.Items { - var decodeNode ast.Node = match.Val - if ot, ok := decodeNode.(*ast.ObjectType); ok { - decodeNode = &ast.ObjectList{Items: ot.List.Items} - } - - if err := d.decode(fieldName, decodeNode, field); err != nil { - return err - } - } - - decodedFields = append(decodedFields, fieldType.Name) - } - - if len(decodedFieldsVal) > 0 { - // Sort it so that it is deterministic - sort.Strings(decodedFields) - - for _, v := range decodedFieldsVal { - v.Set(reflect.ValueOf(decodedFields)) - } - } - - return nil -} - -// findNodeType returns the type of ast.Node -func findNodeType() reflect.Type { - var nodeContainer struct { - Node ast.Node - } - value := reflect.ValueOf(nodeContainer).FieldByName("Node") - return value.Type() -} diff --git a/vendor/github.com/hashicorp/hcl/decoder_test.go b/vendor/github.com/hashicorp/hcl/decoder_test.go deleted file mode 100644 index 8682f470e..000000000 --- a/vendor/github.com/hashicorp/hcl/decoder_test.go +++ /dev/null @@ -1,1203 +0,0 @@ -package hcl - -import ( - "io/ioutil" - "path/filepath" - "reflect" - "testing" - "time" - - "github.com/davecgh/go-spew/spew" - "github.com/hashicorp/hcl/hcl/ast" -) - -func TestDecode_interface(t *testing.T) { - cases := []struct { - File string - Err bool - Out interface{} - }{ - { - "basic.hcl", - false, - map[string]interface{}{ - "foo": "bar", - "bar": "${file(\"bing/bong.txt\")}", - }, - }, - { - "basic_squish.hcl", - false, - map[string]interface{}{ - "foo": "bar", - "bar": "${file(\"bing/bong.txt\")}", - "foo-bar": "baz", - }, - }, - { - "empty.hcl", - false, - map[string]interface{}{ - "resource": []map[string]interface{}{ - map[string]interface{}{ - "foo": []map[string]interface{}{ - map[string]interface{}{}, - }, - }, - }, - }, - }, - { - "tfvars.hcl", - false, - map[string]interface{}{ - "regularvar": "Should work", - "map.key1": "Value", - "map.key2": "Other value", - }, - }, - { - "escape.hcl", - false, - map[string]interface{}{ - "foo": "bar\"baz\\n", - "qux": "back\\slash", - "bar": "new\nline", - "qax": `slash\:colon`, - "nested": `${HH\\:mm\\:ss}`, - "nestedquotes": `${"\"stringwrappedinquotes\""}`, - }, - }, - { - "float.hcl", - false, - map[string]interface{}{ - "a": 1.02, - "b": 2, - }, - }, - { - "multiline_bad.hcl", - true, - nil, - }, - { - "multiline_literal.hcl", - true, - nil, - }, - { - "multiline_literal_with_hil.hcl", - false, - map[string]interface{}{"multiline_literal_with_hil": "${hello\n world}"}, - }, - { - "multiline_no_marker.hcl", - true, - nil, - }, - { - "multiline.hcl", - false, - map[string]interface{}{"foo": "bar\nbaz\n"}, - }, - { - "multiline_indented.hcl", - false, - map[string]interface{}{"foo": " bar\n baz\n"}, - }, - { - "multiline_no_hanging_indent.hcl", - false, - map[string]interface{}{"foo": " baz\n bar\n foo\n"}, - }, - { - "multiline_no_eof.hcl", - false, - map[string]interface{}{"foo": "bar\nbaz\n", "key": "value"}, - }, - { - "multiline.json", - false, - map[string]interface{}{"foo": "bar\nbaz"}, - }, - { - "null_strings.json", - false, - map[string]interface{}{ - "module": []map[string]interface{}{ - map[string]interface{}{ - "app": []map[string]interface{}{ - map[string]interface{}{"foo": ""}, - }, - }, - }, - }, - }, - { - "scientific.json", - false, - map[string]interface{}{ - "a": 1e-10, - "b": 1e+10, - "c": 1e10, - "d": 1.2e-10, - "e": 1.2e+10, - "f": 1.2e10, - }, - }, - { - "scientific.hcl", - false, - map[string]interface{}{ - "a": 1e-10, - "b": 1e+10, - "c": 1e10, - "d": 1.2e-10, - "e": 1.2e+10, - "f": 1.2e10, - }, - }, - { - "terraform_heroku.hcl", - false, - map[string]interface{}{ - "name": "terraform-test-app", - "config_vars": []map[string]interface{}{ - map[string]interface{}{ - "FOO": "bar", - }, - }, - }, - }, - { - "structure_multi.hcl", - false, - map[string]interface{}{ - "foo": []map[string]interface{}{ - map[string]interface{}{ - "baz": []map[string]interface{}{ - map[string]interface{}{"key": 7}, - }, - }, - map[string]interface{}{ - "bar": []map[string]interface{}{ - map[string]interface{}{"key": 12}, - }, - }, - }, - }, - }, - { - "structure_multi.json", - false, - map[string]interface{}{ - "foo": []map[string]interface{}{ - map[string]interface{}{ - "baz": []map[string]interface{}{ - map[string]interface{}{"key": 7}, - }, - }, - map[string]interface{}{ - "bar": []map[string]interface{}{ - map[string]interface{}{"key": 12}, - }, - }, - }, - }, - }, - { - "list_of_lists.hcl", - false, - map[string]interface{}{ - "foo": []interface{}{ - []interface{}{"foo"}, - []interface{}{"bar"}, - }, - }, - }, - { - "list_of_maps.hcl", - false, - map[string]interface{}{ - "foo": []interface{}{ - map[string]interface{}{"somekey1": "someval1"}, - map[string]interface{}{"somekey2": "someval2", "someextrakey": "someextraval"}, - }, - }, - }, - { - "assign_deep.hcl", - false, - map[string]interface{}{ - "resource": []interface{}{ - map[string]interface{}{ - "foo": []interface{}{ - map[string]interface{}{ - "bar": []map[string]interface{}{ - map[string]interface{}{}}}}}}}, - }, - { - "structure_list.hcl", - false, - map[string]interface{}{ - "foo": []map[string]interface{}{ - map[string]interface{}{ - "key": 7, - }, - map[string]interface{}{ - "key": 12, - }, - }, - }, - }, - { - "structure_list.json", - false, - map[string]interface{}{ - "foo": []map[string]interface{}{ - map[string]interface{}{ - "key": 7, - }, - map[string]interface{}{ - "key": 12, - }, - }, - }, - }, - { - "structure_list_deep.json", - false, - map[string]interface{}{ - "bar": []map[string]interface{}{ - map[string]interface{}{ - "foo": []map[string]interface{}{ - map[string]interface{}{ - "name": "terraform_example", - "ingress": []map[string]interface{}{ - map[string]interface{}{ - "from_port": 22, - }, - map[string]interface{}{ - "from_port": 80, - }, - }, - }, - }, - }, - }, - }, - }, - - { - "structure_list_empty.json", - false, - map[string]interface{}{ - "foo": []interface{}{}, - }, - }, - - { - "nested_block_comment.hcl", - false, - map[string]interface{}{ - "bar": "value", - }, - }, - - { - "unterminated_block_comment.hcl", - true, - nil, - }, - - { - "unterminated_brace.hcl", - true, - nil, - }, - - { - "nested_provider_bad.hcl", - true, - nil, - }, - - { - "object_list.json", - false, - map[string]interface{}{ - "resource": []map[string]interface{}{ - map[string]interface{}{ - "aws_instance": []map[string]interface{}{ - map[string]interface{}{ - "db": []map[string]interface{}{ - map[string]interface{}{ - "vpc": "foo", - "provisioner": []map[string]interface{}{ - map[string]interface{}{ - "file": []map[string]interface{}{ - map[string]interface{}{ - "source": "foo", - "destination": "bar", - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - - // Terraform GH-8295 sanity test that basic decoding into - // interface{} works. - { - "terraform_variable_invalid.json", - false, - map[string]interface{}{ - "variable": []map[string]interface{}{ - map[string]interface{}{ - "whatever": "abc123", - }, - }, - }, - }, - - { - "interpolate.json", - false, - map[string]interface{}{ - "default": `${replace("europe-west", "-", " ")}`, - }, - }, - - { - "block_assign.hcl", - true, - nil, - }, - - { - "escape_backslash.hcl", - false, - map[string]interface{}{ - "output": []map[string]interface{}{ - map[string]interface{}{ - "one": `${replace(var.sub_domain, ".", "\\.")}`, - "two": `${replace(var.sub_domain, ".", "\\\\.")}`, - "many": `${replace(var.sub_domain, ".", "\\\\\\\\.")}`, - }, - }, - }, - }, - - { - "git_crypt.hcl", - true, - nil, - }, - - { - "object_with_bool.hcl", - false, - map[string]interface{}{ - "path": []map[string]interface{}{ - map[string]interface{}{ - "policy": "write", - "permissions": []map[string]interface{}{ - map[string]interface{}{ - "bool": []interface{}{false}, - }, - }, - }, - }, - }, - }, - } - - for _, tc := range cases { - t.Run(tc.File, func(t *testing.T) { - d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.File)) - if err != nil { - t.Fatalf("err: %s", err) - } - - var out interface{} - err = Decode(&out, string(d)) - if (err != nil) != tc.Err { - t.Fatalf("Input: %s\n\nError: %s", tc.File, err) - } - - if !reflect.DeepEqual(out, tc.Out) { - t.Fatalf("Input: %s. Actual, Expected.\n\n%#v\n\n%#v", tc.File, out, tc.Out) - } - - var v interface{} - err = Unmarshal(d, &v) - if (err != nil) != tc.Err { - t.Fatalf("Input: %s\n\nError: %s", tc.File, err) - } - - if !reflect.DeepEqual(v, tc.Out) { - t.Fatalf("Input: %s. Actual, Expected.\n\n%#v\n\n%#v", tc.File, out, tc.Out) - } - }) - } -} - -func TestDecode_interfaceInline(t *testing.T) { - cases := []struct { - Value string - Err bool - Out interface{} - }{ - {"t t e{{}}", true, nil}, - {"t=0t d {}", true, map[string]interface{}{"t": 0}}, - {"v=0E0v d{}", true, map[string]interface{}{"v": float64(0)}}, - } - - for _, tc := range cases { - t.Logf("Testing: %q", tc.Value) - - var out interface{} - err := Decode(&out, tc.Value) - if (err != nil) != tc.Err { - t.Fatalf("Input: %q\n\nError: %s", tc.Value, err) - } - - if !reflect.DeepEqual(out, tc.Out) { - t.Fatalf("Input: %q. Actual, Expected.\n\n%#v\n\n%#v", tc.Value, out, tc.Out) - } - - var v interface{} - err = Unmarshal([]byte(tc.Value), &v) - if (err != nil) != tc.Err { - t.Fatalf("Input: %q\n\nError: %s", tc.Value, err) - } - - if !reflect.DeepEqual(v, tc.Out) { - t.Fatalf("Input: %q. Actual, Expected.\n\n%#v\n\n%#v", tc.Value, out, tc.Out) - } - } -} - -func TestDecode_equal(t *testing.T) { - cases := []struct { - One, Two string - }{ - { - "basic.hcl", - "basic.json", - }, - { - "float.hcl", - "float.json", - }, - /* - { - "structure.hcl", - "structure.json", - }, - */ - { - "structure.hcl", - "structure_flat.json", - }, - { - "terraform_heroku.hcl", - "terraform_heroku.json", - }, - } - - for _, tc := range cases { - p1 := filepath.Join(fixtureDir, tc.One) - p2 := filepath.Join(fixtureDir, tc.Two) - - d1, err := ioutil.ReadFile(p1) - if err != nil { - t.Fatalf("err: %s", err) - } - - d2, err := ioutil.ReadFile(p2) - if err != nil { - t.Fatalf("err: %s", err) - } - - var i1, i2 interface{} - err = Decode(&i1, string(d1)) - if err != nil { - t.Fatalf("err: %s", err) - } - - err = Decode(&i2, string(d2)) - if err != nil { - t.Fatalf("err: %s", err) - } - - if !reflect.DeepEqual(i1, i2) { - t.Fatalf( - "%s != %s\n\n%#v\n\n%#v", - tc.One, tc.Two, - i1, i2) - } - } -} - -func TestDecode_flatMap(t *testing.T) { - var val map[string]map[string]string - - err := Decode(&val, testReadFile(t, "structure_flatmap.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - expected := map[string]map[string]string{ - "foo": map[string]string{ - "foo": "bar", - "key": "7", - }, - } - - if !reflect.DeepEqual(val, expected) { - t.Fatalf("Actual: %#v\n\nExpected: %#v", val, expected) - } -} - -func TestDecode_structure(t *testing.T) { - type Embedded interface{} - - type V struct { - Embedded `hcl:"-"` - Key int - Foo string - } - - var actual V - - err := Decode(&actual, testReadFile(t, "flat.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - expected := V{ - Key: 7, - Foo: "bar", - } - - if !reflect.DeepEqual(actual, expected) { - t.Fatalf("Actual: %#v\n\nExpected: %#v", actual, expected) - } -} - -func TestDecode_structurePtr(t *testing.T) { - type V struct { - Key int - Foo string - } - - var actual *V - - err := Decode(&actual, testReadFile(t, "flat.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - expected := &V{ - Key: 7, - Foo: "bar", - } - - if !reflect.DeepEqual(actual, expected) { - t.Fatalf("Actual: %#v\n\nExpected: %#v", actual, expected) - } -} - -func TestDecode_structureArray(t *testing.T) { - // This test is extracted from a failure in Consul (consul.io), - // hence the interesting structure naming. - - type KeyPolicyType string - - type KeyPolicy struct { - Prefix string `hcl:",key"` - Policy KeyPolicyType - } - - type Policy struct { - Keys []KeyPolicy `hcl:"key,expand"` - } - - expected := Policy{ - Keys: []KeyPolicy{ - KeyPolicy{ - Prefix: "", - Policy: "read", - }, - KeyPolicy{ - Prefix: "foo/", - Policy: "write", - }, - KeyPolicy{ - Prefix: "foo/bar/", - Policy: "read", - }, - KeyPolicy{ - Prefix: "foo/bar/baz", - Policy: "deny", - }, - }, - } - - files := []string{ - "decode_policy.hcl", - "decode_policy.json", - } - - for _, f := range files { - var actual Policy - - err := Decode(&actual, testReadFile(t, f)) - if err != nil { - t.Fatalf("Input: %s\n\nerr: %s", f, err) - } - - if !reflect.DeepEqual(actual, expected) { - t.Fatalf("Input: %s\n\nActual: %#v\n\nExpected: %#v", f, actual, expected) - } - } -} - -func TestDecode_sliceExpand(t *testing.T) { - type testInner struct { - Name string `hcl:",key"` - Key string - } - - type testStruct struct { - Services []testInner `hcl:"service,expand"` - } - - expected := testStruct{ - Services: []testInner{ - testInner{ - Name: "my-service-0", - Key: "value", - }, - testInner{ - Name: "my-service-1", - Key: "value", - }, - }, - } - - files := []string{ - "slice_expand.hcl", - } - - for _, f := range files { - t.Logf("Testing: %s", f) - - var actual testStruct - err := Decode(&actual, testReadFile(t, f)) - if err != nil { - t.Fatalf("Input: %s\n\nerr: %s", f, err) - } - - if !reflect.DeepEqual(actual, expected) { - t.Fatalf("Input: %s\n\nActual: %#v\n\nExpected: %#v", f, actual, expected) - } - } -} - -func TestDecode_structureMap(t *testing.T) { - // This test is extracted from a failure in Terraform (terraform.io), - // hence the interesting structure naming. - - type hclVariable struct { - Default interface{} - Description string - Fields []string `hcl:",decodedFields"` - } - - type rawConfig struct { - Variable map[string]hclVariable - } - - expected := rawConfig{ - Variable: map[string]hclVariable{ - "foo": hclVariable{ - Default: "bar", - Description: "bar", - Fields: []string{"Default", "Description"}, - }, - - "amis": hclVariable{ - Default: []map[string]interface{}{ - map[string]interface{}{ - "east": "foo", - }, - }, - Fields: []string{"Default"}, - }, - }, - } - - files := []string{ - "decode_tf_variable.hcl", - "decode_tf_variable.json", - } - - for _, f := range files { - t.Logf("Testing: %s", f) - - var actual rawConfig - err := Decode(&actual, testReadFile(t, f)) - if err != nil { - t.Fatalf("Input: %s\n\nerr: %s", f, err) - } - - if !reflect.DeepEqual(actual, expected) { - t.Fatalf("Input: %s\n\nActual: %#v\n\nExpected: %#v", f, actual, expected) - } - } -} - -func TestDecode_structureMapInvalid(t *testing.T) { - // Terraform GH-8295 - - type hclVariable struct { - Default interface{} - Description string - Fields []string `hcl:",decodedFields"` - } - - type rawConfig struct { - Variable map[string]*hclVariable - } - - var actual rawConfig - err := Decode(&actual, testReadFile(t, "terraform_variable_invalid.json")) - if err == nil { - t.Fatal("expected error") - } -} - -func TestDecode_interfaceNonPointer(t *testing.T) { - var value interface{} - err := Decode(value, testReadFile(t, "basic_int_string.hcl")) - if err == nil { - t.Fatal("should error") - } -} - -func TestDecode_intString(t *testing.T) { - var value struct { - Count int - } - - err := Decode(&value, testReadFile(t, "basic_int_string.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - if value.Count != 3 { - t.Fatalf("bad: %#v", value.Count) - } -} - -func TestDecode_float32(t *testing.T) { - var value struct { - A float32 `hcl:"a"` - B float32 `hcl:"b"` - } - - err := Decode(&value, testReadFile(t, "float.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - if got, want := value.A, float32(1.02); got != want { - t.Fatalf("wrong result %#v; want %#v", got, want) - } - if got, want := value.B, float32(2); got != want { - t.Fatalf("wrong result %#v; want %#v", got, want) - } -} - -func TestDecode_float64(t *testing.T) { - var value struct { - A float64 `hcl:"a"` - B float64 `hcl:"b"` - } - - err := Decode(&value, testReadFile(t, "float.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - if got, want := value.A, float64(1.02); got != want { - t.Fatalf("wrong result %#v; want %#v", got, want) - } - if got, want := value.B, float64(2); got != want { - t.Fatalf("wrong result %#v; want %#v", got, want) - } -} - -func TestDecode_intStringAliased(t *testing.T) { - var value struct { - Count time.Duration - } - - err := Decode(&value, testReadFile(t, "basic_int_string.hcl")) - if err != nil { - t.Fatalf("err: %s", err) - } - - if value.Count != time.Duration(3) { - t.Fatalf("bad: %#v", value.Count) - } -} - -func TestDecode_Node(t *testing.T) { - // given - var value struct { - Content ast.Node - Nested struct { - Content ast.Node - } - } - - content := ` -content { - hello = "world" -} -` - - // when - err := Decode(&value, content) - - // then - if err != nil { - t.Errorf("unable to decode content, %v", err) - return - } - - // verify ast.Node can be decoded later - var v map[string]interface{} - err = DecodeObject(&v, value.Content) - if err != nil { - t.Errorf("unable to decode content, %v", err) - return - } - - if v["hello"] != "world" { - t.Errorf("expected mapping to be returned") - } -} - -func TestDecode_NestedNode(t *testing.T) { - // given - var value struct { - Nested struct { - Content ast.Node - } - } - - content := ` -nested "content" { - hello = "world" -} -` - - // when - err := Decode(&value, content) - - // then - if err != nil { - t.Errorf("unable to decode content, %v", err) - return - } - - // verify ast.Node can be decoded later - var v map[string]interface{} - err = DecodeObject(&v, value.Nested.Content) - if err != nil { - t.Errorf("unable to decode content, %v", err) - return - } - - if v["hello"] != "world" { - t.Errorf("expected mapping to be returned") - } -} - -// https://github.com/hashicorp/hcl/issues/60 -func TestDecode_topLevelKeys(t *testing.T) { - type Template struct { - Source string - } - - templates := struct { - Templates []*Template `hcl:"template"` - }{} - - err := Decode(&templates, ` - template { - source = "blah" - } - - template { - source = "blahblah" - }`) - - if err != nil { - t.Fatal(err) - } - - if templates.Templates[0].Source != "blah" { - t.Errorf("bad source: %s", templates.Templates[0].Source) - } - - if templates.Templates[1].Source != "blahblah" { - t.Errorf("bad source: %s", templates.Templates[1].Source) - } -} - -func TestDecode_flattenedJSON(t *testing.T) { - // make sure we can also correctly extract a Name key too - type V struct { - Name string `hcl:",key"` - Description string - Default map[string]string - } - type Vars struct { - Variable []*V - } - - cases := []struct { - JSON string - Out interface{} - Expected interface{} - }{ - { // Nested object, no sibling keys - JSON: ` -{ - "var_name": { - "default": { - "key1": "a", - "key2": "b" - } - } -} - `, - Out: &[]*V{}, - Expected: &[]*V{ - &V{ - Name: "var_name", - Default: map[string]string{"key1": "a", "key2": "b"}, - }, - }, - }, - - { // Nested object with a sibling key (this worked previously) - JSON: ` -{ - "var_name": { - "description": "Described", - "default": { - "key1": "a", - "key2": "b" - } - } -} - `, - Out: &[]*V{}, - Expected: &[]*V{ - &V{ - Name: "var_name", - Description: "Described", - Default: map[string]string{"key1": "a", "key2": "b"}, - }, - }, - }, - - { // Multiple nested objects, one with a sibling key - JSON: ` -{ - "variable": { - "var_1": { - "default": { - "key1": "a", - "key2": "b" - } - }, - "var_2": { - "description": "Described", - "default": { - "key1": "a", - "key2": "b" - } - } - } -} - `, - Out: &Vars{}, - Expected: &Vars{ - Variable: []*V{ - &V{ - Name: "var_1", - Default: map[string]string{"key1": "a", "key2": "b"}, - }, - &V{ - Name: "var_2", - Description: "Described", - Default: map[string]string{"key1": "a", "key2": "b"}, - }, - }, - }, - }, - - { // Nested object to maps - JSON: ` -{ - "variable": { - "var_name": { - "description": "Described", - "default": { - "key1": "a", - "key2": "b" - } - } - } -} - `, - Out: &[]map[string]interface{}{}, - Expected: &[]map[string]interface{}{ - { - "variable": []map[string]interface{}{ - { - "var_name": []map[string]interface{}{ - { - "description": "Described", - "default": []map[string]interface{}{ - { - "key1": "a", - "key2": "b", - }, - }, - }, - }, - }, - }, - }, - }, - }, - - { // Nested object to maps without a sibling key should decode the same as above - JSON: ` -{ - "variable": { - "var_name": { - "default": { - "key1": "a", - "key2": "b" - } - } - } -} - `, - Out: &[]map[string]interface{}{}, - Expected: &[]map[string]interface{}{ - { - "variable": []map[string]interface{}{ - { - "var_name": []map[string]interface{}{ - { - "default": []map[string]interface{}{ - { - "key1": "a", - "key2": "b", - }, - }, - }, - }, - }, - }, - }, - }, - }, - - { // Nested objects, one with a sibling key, and one without - JSON: ` -{ - "variable": { - "var_1": { - "default": { - "key1": "a", - "key2": "b" - } - }, - "var_2": { - "description": "Described", - "default": { - "key1": "a", - "key2": "b" - } - } - } -} - `, - Out: &[]map[string]interface{}{}, - Expected: &[]map[string]interface{}{ - { - "variable": []map[string]interface{}{ - { - "var_1": []map[string]interface{}{ - { - "default": []map[string]interface{}{ - { - "key1": "a", - "key2": "b", - }, - }, - }, - }, - }, - }, - }, - { - "variable": []map[string]interface{}{ - { - "var_2": []map[string]interface{}{ - { - "description": "Described", - "default": []map[string]interface{}{ - { - "key1": "a", - "key2": "b", - }, - }, - }, - }, - }, - }, - }, - }, - }, - } - - for i, tc := range cases { - err := Decode(tc.Out, tc.JSON) - if err != nil { - t.Fatalf("[%d] err: %s", i, err) - } - - if !reflect.DeepEqual(tc.Out, tc.Expected) { - t.Fatalf("[%d]\ngot: %s\nexpected: %s\n", i, spew.Sdump(tc.Out), spew.Sdump(tc.Expected)) - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/hcl.go b/vendor/github.com/hashicorp/hcl/hcl.go deleted file mode 100644 index 575a20b50..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl.go +++ /dev/null @@ -1,11 +0,0 @@ -// Package hcl decodes HCL into usable Go structures. -// -// hcl input can come in either pure HCL format or JSON format. -// It can be parsed into an AST, and then decoded into a structure, -// or it can be decoded directly from a string into a structure. -// -// If you choose to parse HCL into a raw AST, the benefit is that you -// can write custom visitor implementations to implement custom -// semantic checks. By default, HCL does not perform any semantic -// checks. -package hcl diff --git a/vendor/github.com/hashicorp/hcl/hcl/ast/ast.go b/vendor/github.com/hashicorp/hcl/hcl/ast/ast.go deleted file mode 100644 index 6e5ef654b..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/ast/ast.go +++ /dev/null @@ -1,219 +0,0 @@ -// Package ast declares the types used to represent syntax trees for HCL -// (HashiCorp Configuration Language) -package ast - -import ( - "fmt" - "strings" - - "github.com/hashicorp/hcl/hcl/token" -) - -// Node is an element in the abstract syntax tree. -type Node interface { - node() - Pos() token.Pos -} - -func (File) node() {} -func (ObjectList) node() {} -func (ObjectKey) node() {} -func (ObjectItem) node() {} -func (Comment) node() {} -func (CommentGroup) node() {} -func (ObjectType) node() {} -func (LiteralType) node() {} -func (ListType) node() {} - -// File represents a single HCL file -type File struct { - Node Node // usually a *ObjectList - Comments []*CommentGroup // list of all comments in the source -} - -func (f *File) Pos() token.Pos { - return f.Node.Pos() -} - -// ObjectList represents a list of ObjectItems. An HCL file itself is an -// ObjectList. -type ObjectList struct { - Items []*ObjectItem -} - -func (o *ObjectList) Add(item *ObjectItem) { - o.Items = append(o.Items, item) -} - -// Filter filters out the objects with the given key list as a prefix. -// -// The returned list of objects contain ObjectItems where the keys have -// this prefix already stripped off. This might result in objects with -// zero-length key lists if they have no children. -// -// If no matches are found, an empty ObjectList (non-nil) is returned. -func (o *ObjectList) Filter(keys ...string) *ObjectList { - var result ObjectList - for _, item := range o.Items { - // If there aren't enough keys, then ignore this - if len(item.Keys) < len(keys) { - continue - } - - match := true - for i, key := range item.Keys[:len(keys)] { - key := key.Token.Value().(string) - if key != keys[i] && !strings.EqualFold(key, keys[i]) { - match = false - break - } - } - if !match { - continue - } - - // Strip off the prefix from the children - newItem := *item - newItem.Keys = newItem.Keys[len(keys):] - result.Add(&newItem) - } - - return &result -} - -// Children returns further nested objects (key length > 0) within this -// ObjectList. This should be used with Filter to get at child items. -func (o *ObjectList) Children() *ObjectList { - var result ObjectList - for _, item := range o.Items { - if len(item.Keys) > 0 { - result.Add(item) - } - } - - return &result -} - -// Elem returns items in the list that are direct element assignments -// (key length == 0). This should be used with Filter to get at elements. -func (o *ObjectList) Elem() *ObjectList { - var result ObjectList - for _, item := range o.Items { - if len(item.Keys) == 0 { - result.Add(item) - } - } - - return &result -} - -func (o *ObjectList) Pos() token.Pos { - // always returns the uninitiliazed position - return o.Items[0].Pos() -} - -// ObjectItem represents a HCL Object Item. An item is represented with a key -// (or keys). It can be an assignment or an object (both normal and nested) -type ObjectItem struct { - // keys is only one length long if it's of type assignment. If it's a - // nested object it can be larger than one. In that case "assign" is - // invalid as there is no assignments for a nested object. - Keys []*ObjectKey - - // assign contains the position of "=", if any - Assign token.Pos - - // val is the item itself. It can be an object,list, number, bool or a - // string. If key length is larger than one, val can be only of type - // Object. - Val Node - - LeadComment *CommentGroup // associated lead comment - LineComment *CommentGroup // associated line comment -} - -func (o *ObjectItem) Pos() token.Pos { - // I'm not entirely sure what causes this, but removing this causes - // a test failure. We should investigate at some point. - if len(o.Keys) == 0 { - return token.Pos{} - } - - return o.Keys[0].Pos() -} - -// ObjectKeys are either an identifier or of type string. -type ObjectKey struct { - Token token.Token -} - -func (o *ObjectKey) Pos() token.Pos { - return o.Token.Pos -} - -// LiteralType represents a literal of basic type. Valid types are: -// token.NUMBER, token.FLOAT, token.BOOL and token.STRING -type LiteralType struct { - Token token.Token - - // comment types, only used when in a list - LeadComment *CommentGroup - LineComment *CommentGroup -} - -func (l *LiteralType) Pos() token.Pos { - return l.Token.Pos -} - -// ListStatement represents a HCL List type -type ListType struct { - Lbrack token.Pos // position of "[" - Rbrack token.Pos // position of "]" - List []Node // the elements in lexical order -} - -func (l *ListType) Pos() token.Pos { - return l.Lbrack -} - -func (l *ListType) Add(node Node) { - l.List = append(l.List, node) -} - -// ObjectType represents a HCL Object Type -type ObjectType struct { - Lbrace token.Pos // position of "{" - Rbrace token.Pos // position of "}" - List *ObjectList // the nodes in lexical order -} - -func (o *ObjectType) Pos() token.Pos { - return o.Lbrace -} - -// Comment node represents a single //, # style or /*- style commment -type Comment struct { - Start token.Pos // position of / or # - Text string -} - -func (c *Comment) Pos() token.Pos { - return c.Start -} - -// CommentGroup node represents a sequence of comments with no other tokens and -// no empty lines between. -type CommentGroup struct { - List []*Comment // len(List) > 0 -} - -func (c *CommentGroup) Pos() token.Pos { - return c.List[0].Pos() -} - -//------------------------------------------------------------------- -// GoStringer -//------------------------------------------------------------------- - -func (o *ObjectKey) GoString() string { return fmt.Sprintf("*%#v", *o) } -func (o *ObjectList) GoString() string { return fmt.Sprintf("*%#v", *o) } diff --git a/vendor/github.com/hashicorp/hcl/hcl/ast/ast_test.go b/vendor/github.com/hashicorp/hcl/hcl/ast/ast_test.go deleted file mode 100644 index 942256cad..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/ast/ast_test.go +++ /dev/null @@ -1,200 +0,0 @@ -package ast - -import ( - "reflect" - "strings" - "testing" - - "github.com/hashicorp/hcl/hcl/token" -) - -func TestObjectListFilter(t *testing.T) { - var cases = []struct { - Filter []string - Input []*ObjectItem - Output []*ObjectItem - }{ - { - []string{"foo"}, - []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{ - Token: token.Token{Type: token.STRING, Text: `"foo"`}, - }, - }, - }, - }, - []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{}, - }, - }, - }, - - { - []string{"foo"}, - []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"foo"`}}, - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"bar"`}}, - }, - }, - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"baz"`}}, - }, - }, - }, - []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"bar"`}}, - }, - }, - }, - }, - } - - for _, tc := range cases { - input := &ObjectList{Items: tc.Input} - expected := &ObjectList{Items: tc.Output} - if actual := input.Filter(tc.Filter...); !reflect.DeepEqual(actual, expected) { - t.Fatalf("in order: input, expected, actual\n\n%#v\n\n%#v\n\n%#v", input, expected, actual) - } - } -} - -func TestWalk(t *testing.T) { - items := []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"foo"`}}, - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"bar"`}}, - }, - Val: &LiteralType{Token: token.Token{Type: token.STRING, Text: `"example"`}}, - }, - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"baz"`}}, - }, - }, - } - - node := &ObjectList{Items: items} - - order := []string{ - "*ast.ObjectList", - "*ast.ObjectItem", - "*ast.ObjectKey", - "*ast.ObjectKey", - "*ast.LiteralType", - "*ast.ObjectItem", - "*ast.ObjectKey", - } - count := 0 - - Walk(node, func(n Node) (Node, bool) { - if n == nil { - return n, false - } - - typeName := reflect.TypeOf(n).String() - if order[count] != typeName { - t.Errorf("expected '%s' got: '%s'", order[count], typeName) - } - count++ - return n, true - }) -} - -func TestWalkEquality(t *testing.T) { - items := []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"foo"`}}, - }, - }, - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"bar"`}}, - }, - }, - } - - node := &ObjectList{Items: items} - - rewritten := Walk(node, func(n Node) (Node, bool) { return n, true }) - - newNode, ok := rewritten.(*ObjectList) - if !ok { - t.Fatalf("expected Objectlist, got %T", rewritten) - } - - if !reflect.DeepEqual(node, newNode) { - t.Fatal("rewritten node is not equal to the given node") - } - - if len(newNode.Items) != 2 { - t.Error("expected newNode length 2, got: %d", len(newNode.Items)) - } - - expected := []string{ - `"foo"`, - `"bar"`, - } - - for i, item := range newNode.Items { - if len(item.Keys) != 1 { - t.Error("expected keys newNode length 1, got: %d", len(item.Keys)) - } - - if item.Keys[0].Token.Text != expected[i] { - t.Errorf("expected key %s, got %s", expected[i], item.Keys[0].Token.Text) - } - - if item.Val != nil { - t.Errorf("expected item value should be nil") - } - } -} - -func TestWalkRewrite(t *testing.T) { - items := []*ObjectItem{ - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"foo"`}}, - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"bar"`}}, - }, - }, - &ObjectItem{ - Keys: []*ObjectKey{ - &ObjectKey{Token: token.Token{Type: token.STRING, Text: `"baz"`}}, - }, - }, - } - - node := &ObjectList{Items: items} - - suffix := "_example" - node = Walk(node, func(n Node) (Node, bool) { - switch i := n.(type) { - case *ObjectKey: - i.Token.Text = i.Token.Text + suffix - n = i - } - return n, true - }).(*ObjectList) - - Walk(node, func(n Node) (Node, bool) { - switch i := n.(type) { - case *ObjectKey: - if !strings.HasSuffix(i.Token.Text, suffix) { - t.Errorf("Token '%s' should have suffix: %s", i.Token.Text, suffix) - } - } - return n, true - }) - -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/ast/walk.go b/vendor/github.com/hashicorp/hcl/hcl/ast/walk.go deleted file mode 100644 index ba07ad42b..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/ast/walk.go +++ /dev/null @@ -1,52 +0,0 @@ -package ast - -import "fmt" - -// WalkFunc describes a function to be called for each node during a Walk. The -// returned node can be used to rewrite the AST. Walking stops the returned -// bool is false. -type WalkFunc func(Node) (Node, bool) - -// Walk traverses an AST in depth-first order: It starts by calling fn(node); -// node must not be nil. If fn returns true, Walk invokes fn recursively for -// each of the non-nil children of node, followed by a call of fn(nil). The -// returned node of fn can be used to rewrite the passed node to fn. -func Walk(node Node, fn WalkFunc) Node { - rewritten, ok := fn(node) - if !ok { - return rewritten - } - - switch n := node.(type) { - case *File: - n.Node = Walk(n.Node, fn) - case *ObjectList: - for i, item := range n.Items { - n.Items[i] = Walk(item, fn).(*ObjectItem) - } - case *ObjectKey: - // nothing to do - case *ObjectItem: - for i, k := range n.Keys { - n.Keys[i] = Walk(k, fn).(*ObjectKey) - } - - if n.Val != nil { - n.Val = Walk(n.Val, fn) - } - case *LiteralType: - // nothing to do - case *ListType: - for i, l := range n.List { - n.List[i] = Walk(l, fn) - } - case *ObjectType: - n.List = Walk(n.List, fn).(*ObjectList) - default: - // should we panic here? - fmt.Printf("unknown type: %T\n", n) - } - - fn(nil) - return rewritten -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd.go b/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd.go deleted file mode 100644 index 2380d71e3..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd.go +++ /dev/null @@ -1,162 +0,0 @@ -// Derivative work from: -// - https://golang.org/src/cmd/gofmt/gofmt.go -// - https://github.com/fatih/hclfmt - -package fmtcmd - -import ( - "bytes" - "errors" - "fmt" - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "strings" - - "github.com/hashicorp/hcl/hcl/printer" -) - -var ( - ErrWriteStdin = errors.New("cannot use write option with standard input") -) - -type Options struct { - List bool // list files whose formatting differs - Write bool // write result to (source) file instead of stdout - Diff bool // display diffs of formatting changes -} - -func isValidFile(f os.FileInfo, extensions []string) bool { - if !f.IsDir() && !strings.HasPrefix(f.Name(), ".") { - for _, ext := range extensions { - if strings.HasSuffix(f.Name(), "."+ext) { - return true - } - } - } - - return false -} - -// If in == nil, the source is the contents of the file with the given filename. -func processFile(filename string, in io.Reader, out io.Writer, stdin bool, opts Options) error { - if in == nil { - f, err := os.Open(filename) - if err != nil { - return err - } - defer f.Close() - in = f - } - - src, err := ioutil.ReadAll(in) - if err != nil { - return err - } - - res, err := printer.Format(src) - if err != nil { - return fmt.Errorf("In %s: %s", filename, err) - } - - if !bytes.Equal(src, res) { - // formatting has changed - if opts.List { - fmt.Fprintln(out, filename) - } - if opts.Write { - err = ioutil.WriteFile(filename, res, 0644) - if err != nil { - return err - } - } - if opts.Diff { - data, err := diff(src, res) - if err != nil { - return fmt.Errorf("computing diff: %s", err) - } - fmt.Fprintf(out, "diff a/%s b/%s\n", filename, filename) - out.Write(data) - } - } - - if !opts.List && !opts.Write && !opts.Diff { - _, err = out.Write(res) - } - - return err -} - -func walkDir(path string, extensions []string, stdout io.Writer, opts Options) error { - visitFile := func(path string, f os.FileInfo, err error) error { - if err == nil && isValidFile(f, extensions) { - err = processFile(path, nil, stdout, false, opts) - } - return err - } - - return filepath.Walk(path, visitFile) -} - -func Run( - paths, extensions []string, - stdin io.Reader, - stdout io.Writer, - opts Options, -) error { - if len(paths) == 0 { - if opts.Write { - return ErrWriteStdin - } - if err := processFile("", stdin, stdout, true, opts); err != nil { - return err - } - return nil - } - - for _, path := range paths { - switch dir, err := os.Stat(path); { - case err != nil: - return err - case dir.IsDir(): - if err := walkDir(path, extensions, stdout, opts); err != nil { - return err - } - default: - if err := processFile(path, nil, stdout, false, opts); err != nil { - return err - } - } - } - - return nil -} - -func diff(b1, b2 []byte) (data []byte, err error) { - f1, err := ioutil.TempFile("", "") - if err != nil { - return - } - defer os.Remove(f1.Name()) - defer f1.Close() - - f2, err := ioutil.TempFile("", "") - if err != nil { - return - } - defer os.Remove(f2.Name()) - defer f2.Close() - - f1.Write(b1) - f2.Write(b2) - - data, err = exec.Command("diff", "-u", f1.Name(), f2.Name()).CombinedOutput() - if len(data) > 0 { - // diff exits with a non-zero status when the files don't match. - // Ignore that failure as long as we get output. - err = nil - } - return -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd_test.go b/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd_test.go deleted file mode 100644 index b952d76d8..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/fmtcmd_test.go +++ /dev/null @@ -1,440 +0,0 @@ -// +build !windows -// TODO(jen20): These need fixing on Windows but fmt is not used right now -// and red CI is making it harder to process other bugs, so ignore until -// we get around to fixing them. - -package fmtcmd - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "reflect" - "regexp" - "sort" - "syscall" - "testing" - - "github.com/hashicorp/hcl/testhelper" -) - -var fixtureExtensions = []string{"hcl"} - -func init() { - sort.Sort(ByFilename(fixtures)) -} - -func TestIsValidFile(t *testing.T) { - const fixtureDir = "./test-fixtures" - - cases := []struct { - Path string - Expected bool - }{ - {"good.hcl", true}, - {".hidden.ignore", false}, - {"file.ignore", false}, - {"dir.ignore", false}, - } - - for _, tc := range cases { - file, err := os.Stat(filepath.Join(fixtureDir, tc.Path)) - if err != nil { - t.Errorf("unexpected error: %s", err) - } - - if res := isValidFile(file, fixtureExtensions); res != tc.Expected { - t.Errorf("want: %b, got: %b", tc.Expected, res) - } - } -} - -func TestRunMultiplePaths(t *testing.T) { - path1, err := renderFixtures("") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path1) - path2, err := renderFixtures("") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path2) - - var expectedOut bytes.Buffer - for _, path := range []string{path1, path2} { - for _, fixture := range fixtures { - if !bytes.Equal(fixture.golden, fixture.input) { - expectedOut.WriteString(filepath.Join(path, fixture.filename) + "\n") - } - } - } - - _, stdout := mockIO() - err = Run( - []string{path1, path2}, - fixtureExtensions, - nil, stdout, - Options{ - List: true, - }, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if stdout.String() != expectedOut.String() { - t.Errorf("stdout want:\n%s\ngot:\n%s", expectedOut, stdout) - } -} - -func TestRunSubDirectories(t *testing.T) { - pathParent, err := ioutil.TempDir("", "") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(pathParent) - - path1, err := renderFixtures(pathParent) - if err != nil { - t.Errorf("unexpected error: %s", err) - } - path2, err := renderFixtures(pathParent) - if err != nil { - t.Errorf("unexpected error: %s", err) - } - - paths := []string{path1, path2} - sort.Strings(paths) - - var expectedOut bytes.Buffer - for _, path := range paths { - for _, fixture := range fixtures { - if !bytes.Equal(fixture.golden, fixture.input) { - expectedOut.WriteString(filepath.Join(path, fixture.filename) + "\n") - } - } - } - - _, stdout := mockIO() - err = Run( - []string{pathParent}, - fixtureExtensions, - nil, stdout, - Options{ - List: true, - }, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if stdout.String() != expectedOut.String() { - t.Errorf("stdout want:\n%s\ngot:\n%s", expectedOut, stdout) - } -} - -func TestRunStdin(t *testing.T) { - var expectedOut bytes.Buffer - for i, fixture := range fixtures { - if i != 0 { - expectedOut.WriteString("\n") - } - expectedOut.Write(fixture.golden) - } - - stdin, stdout := mockIO() - for _, fixture := range fixtures { - stdin.Write(fixture.input) - } - - err := Run( - []string{}, - fixtureExtensions, - stdin, stdout, - Options{}, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if !bytes.Equal(stdout.Bytes(), expectedOut.Bytes()) { - t.Errorf("stdout want:\n%s\ngot:\n%s", expectedOut, stdout) - } -} - -func TestRunStdinAndWrite(t *testing.T) { - var expectedOut = []byte{} - - stdin, stdout := mockIO() - stdin.WriteString("") - err := Run( - []string{}, []string{}, - stdin, stdout, - Options{ - Write: true, - }, - ) - - if err != ErrWriteStdin { - t.Errorf("error want:\n%s\ngot:\n%s", ErrWriteStdin, err) - } - if !bytes.Equal(stdout.Bytes(), expectedOut) { - t.Errorf("stdout want:\n%s\ngot:\n%s", expectedOut, stdout) - } -} - -func TestRunFileError(t *testing.T) { - path, err := ioutil.TempDir("", "") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path) - filename := filepath.Join(path, "unreadable.hcl") - - var expectedError = &os.PathError{ - Op: "open", - Path: filename, - Err: syscall.EACCES, - } - - err = ioutil.WriteFile(filename, []byte{}, 0000) - if err != nil { - t.Errorf("unexpected error: %s", err) - } - - _, stdout := mockIO() - err = Run( - []string{path}, - fixtureExtensions, - nil, stdout, - Options{}, - ) - - if !reflect.DeepEqual(err, expectedError) { - t.Errorf("error want: %#v, got: %#v", expectedError, err) - } -} - -func TestRunNoOptions(t *testing.T) { - path, err := renderFixtures("") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path) - - var expectedOut bytes.Buffer - for _, fixture := range fixtures { - expectedOut.Write(fixture.golden) - } - - _, stdout := mockIO() - err = Run( - []string{path}, - fixtureExtensions, - nil, stdout, - Options{}, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if stdout.String() != expectedOut.String() { - t.Errorf("stdout want:\n%s\ngot:\n%s", expectedOut, stdout) - } -} - -func TestRunList(t *testing.T) { - path, err := renderFixtures("") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path) - - var expectedOut bytes.Buffer - for _, fixture := range fixtures { - if !bytes.Equal(fixture.golden, fixture.input) { - expectedOut.WriteString(fmt.Sprintln(filepath.Join(path, fixture.filename))) - } - } - - _, stdout := mockIO() - err = Run( - []string{path}, - fixtureExtensions, - nil, stdout, - Options{ - List: true, - }, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if stdout.String() != expectedOut.String() { - t.Errorf("stdout want:\n%s\ngot:\n%s", expectedOut, stdout) - } -} - -func TestRunWrite(t *testing.T) { - path, err := renderFixtures("") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path) - - _, stdout := mockIO() - err = Run( - []string{path}, - fixtureExtensions, - nil, stdout, - Options{ - Write: true, - }, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - for _, fixture := range fixtures { - res, err := ioutil.ReadFile(filepath.Join(path, fixture.filename)) - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if !bytes.Equal(res, fixture.golden) { - t.Errorf("file %q contents want:\n%s\ngot:\n%s", fixture.filename, fixture.golden, res) - } - } -} - -func TestRunDiff(t *testing.T) { - path, err := renderFixtures("") - if err != nil { - t.Errorf("unexpected error: %s", err) - } - defer os.RemoveAll(path) - - var expectedOut bytes.Buffer - for _, fixture := range fixtures { - if len(fixture.diff) > 0 { - expectedOut.WriteString( - regexp.QuoteMeta( - fmt.Sprintf("diff a/%s/%s b/%s/%s\n", path, fixture.filename, path, fixture.filename), - ), - ) - // Need to use regex to ignore datetimes in diff. - expectedOut.WriteString(`--- .+?\n`) - expectedOut.WriteString(`\+\+\+ .+?\n`) - expectedOut.WriteString(regexp.QuoteMeta(string(fixture.diff))) - } - } - - expectedOutString := testhelper.Unix2dos(expectedOut.String()) - - _, stdout := mockIO() - err = Run( - []string{path}, - fixtureExtensions, - nil, stdout, - Options{ - Diff: true, - }, - ) - - if err != nil { - t.Errorf("unexpected error: %s", err) - } - if !regexp.MustCompile(expectedOutString).Match(stdout.Bytes()) { - t.Errorf("stdout want match:\n%s\ngot:\n%q", expectedOutString, stdout) - } -} - -func mockIO() (stdin, stdout *bytes.Buffer) { - return new(bytes.Buffer), new(bytes.Buffer) -} - -type fixture struct { - filename string - input, golden, diff []byte -} - -type ByFilename []fixture - -func (s ByFilename) Len() int { return len(s) } -func (s ByFilename) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s ByFilename) Less(i, j int) bool { return len(s[i].filename) > len(s[j].filename) } - -var fixtures = []fixture{ - { - "noop.hcl", - []byte(`resource "aws_security_group" "firewall" { - count = 5 -} -`), - []byte(`resource "aws_security_group" "firewall" { - count = 5 -} -`), - []byte(``), - }, { - "align_equals.hcl", - []byte(`variable "foo" { - default = "bar" - description = "bar" -} -`), - []byte(`variable "foo" { - default = "bar" - description = "bar" -} -`), - []byte(`@@ -1,4 +1,4 @@ - variable "foo" { -- default = "bar" -+ default = "bar" - description = "bar" - } -`), - }, { - "indentation.hcl", - []byte(`provider "aws" { - access_key = "foo" - secret_key = "bar" -} -`), - []byte(`provider "aws" { - access_key = "foo" - secret_key = "bar" -} -`), - []byte(`@@ -1,4 +1,4 @@ - provider "aws" { -- access_key = "foo" -- secret_key = "bar" -+ access_key = "foo" -+ secret_key = "bar" - } -`), - }, -} - -// parent can be an empty string, in which case the system's default -// temporary directory will be used. -func renderFixtures(parent string) (path string, err error) { - path, err = ioutil.TempDir(parent, "") - if err != nil { - return "", err - } - - for _, fixture := range fixtures { - err = ioutil.WriteFile(filepath.Join(path, fixture.filename), []byte(fixture.input), 0644) - if err != nil { - os.RemoveAll(path) - return "", err - } - } - - return path, nil -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/.hidden.ignore b/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/.hidden.ignore deleted file mode 100644 index 9977a2836..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/.hidden.ignore +++ /dev/null @@ -1 +0,0 @@ -invalid diff --git a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/dir.ignore b/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/dir.ignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/file.ignore b/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/file.ignore deleted file mode 100644 index 9977a2836..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/file.ignore +++ /dev/null @@ -1 +0,0 @@ -invalid diff --git a/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/good.hcl b/vendor/github.com/hashicorp/hcl/hcl/fmtcmd/test-fixtures/good.hcl deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/github.com/hashicorp/hcl/hcl/parser/error.go b/vendor/github.com/hashicorp/hcl/hcl/parser/error.go deleted file mode 100644 index 5c99381df..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/parser/error.go +++ /dev/null @@ -1,17 +0,0 @@ -package parser - -import ( - "fmt" - - "github.com/hashicorp/hcl/hcl/token" -) - -// PosError is a parse error that contains a position. -type PosError struct { - Pos token.Pos - Err error -} - -func (e *PosError) Error() string { - return fmt.Sprintf("At %s: %s", e.Pos, e.Err) -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/parser/error_test.go b/vendor/github.com/hashicorp/hcl/hcl/parser/error_test.go deleted file mode 100644 index 32399fec5..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/parser/error_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package parser - -import ( - "testing" -) - -func TestPosError_impl(t *testing.T) { - var _ error = new(PosError) -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go b/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go deleted file mode 100644 index 098e1bc49..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/parser/parser.go +++ /dev/null @@ -1,526 +0,0 @@ -// Package parser implements a parser for HCL (HashiCorp Configuration -// Language) -package parser - -import ( - "bytes" - "errors" - "fmt" - "strings" - - "github.com/hashicorp/hcl/hcl/ast" - "github.com/hashicorp/hcl/hcl/scanner" - "github.com/hashicorp/hcl/hcl/token" -) - -type Parser struct { - sc *scanner.Scanner - - // Last read token - tok token.Token - commaPrev token.Token - - comments []*ast.CommentGroup - leadComment *ast.CommentGroup // last lead comment - lineComment *ast.CommentGroup // last line comment - - enableTrace bool - indent int - n int // buffer size (max = 1) -} - -func newParser(src []byte) *Parser { - return &Parser{ - sc: scanner.New(src), - } -} - -// Parse returns the fully parsed source and returns the abstract syntax tree. -func Parse(src []byte) (*ast.File, error) { - // normalize all line endings - // since the scanner and output only work with "\n" line endings, we may - // end up with dangling "\r" characters in the parsed data. - src = bytes.Replace(src, []byte("\r\n"), []byte("\n"), -1) - - p := newParser(src) - return p.Parse() -} - -var errEofToken = errors.New("EOF token found") - -// Parse returns the fully parsed source and returns the abstract syntax tree. -func (p *Parser) Parse() (*ast.File, error) { - f := &ast.File{} - var err, scerr error - p.sc.Error = func(pos token.Pos, msg string) { - scerr = &PosError{Pos: pos, Err: errors.New(msg)} - } - - f.Node, err = p.objectList(false) - if scerr != nil { - return nil, scerr - } - if err != nil { - return nil, err - } - - f.Comments = p.comments - return f, nil -} - -// objectList parses a list of items within an object (generally k/v pairs). -// The parameter" obj" tells this whether to we are within an object (braces: -// '{', '}') or just at the top level. If we're within an object, we end -// at an RBRACE. -func (p *Parser) objectList(obj bool) (*ast.ObjectList, error) { - defer un(trace(p, "ParseObjectList")) - node := &ast.ObjectList{} - - for { - if obj { - tok := p.scan() - p.unscan() - if tok.Type == token.RBRACE { - break - } - } - - n, err := p.objectItem() - if err == errEofToken { - break // we are finished - } - - // we don't return a nil node, because might want to use already - // collected items. - if err != nil { - return node, err - } - - node.Add(n) - - // object lists can be optionally comma-delimited e.g. when a list of maps - // is being expressed, so a comma is allowed here - it's simply consumed - tok := p.scan() - if tok.Type != token.COMMA { - p.unscan() - } - } - return node, nil -} - -func (p *Parser) consumeComment() (comment *ast.Comment, endline int) { - endline = p.tok.Pos.Line - - // count the endline if it's multiline comment, ie starting with /* - if len(p.tok.Text) > 1 && p.tok.Text[1] == '*' { - // don't use range here - no need to decode Unicode code points - for i := 0; i < len(p.tok.Text); i++ { - if p.tok.Text[i] == '\n' { - endline++ - } - } - } - - comment = &ast.Comment{Start: p.tok.Pos, Text: p.tok.Text} - p.tok = p.sc.Scan() - return -} - -func (p *Parser) consumeCommentGroup(n int) (comments *ast.CommentGroup, endline int) { - var list []*ast.Comment - endline = p.tok.Pos.Line - - for p.tok.Type == token.COMMENT && p.tok.Pos.Line <= endline+n { - var comment *ast.Comment - comment, endline = p.consumeComment() - list = append(list, comment) - } - - // add comment group to the comments list - comments = &ast.CommentGroup{List: list} - p.comments = append(p.comments, comments) - - return -} - -// objectItem parses a single object item -func (p *Parser) objectItem() (*ast.ObjectItem, error) { - defer un(trace(p, "ParseObjectItem")) - - keys, err := p.objectKey() - if len(keys) > 0 && err == errEofToken { - // We ignore eof token here since it is an error if we didn't - // receive a value (but we did receive a key) for the item. - err = nil - } - if len(keys) > 0 && err != nil && p.tok.Type == token.RBRACE { - // This is a strange boolean statement, but what it means is: - // We have keys with no value, and we're likely in an object - // (since RBrace ends an object). For this, we set err to nil so - // we continue and get the error below of having the wrong value - // type. - err = nil - - // Reset the token type so we don't think it completed fine. See - // objectType which uses p.tok.Type to check if we're done with - // the object. - p.tok.Type = token.EOF - } - if err != nil { - return nil, err - } - - o := &ast.ObjectItem{ - Keys: keys, - } - - if p.leadComment != nil { - o.LeadComment = p.leadComment - p.leadComment = nil - } - - switch p.tok.Type { - case token.ASSIGN: - o.Assign = p.tok.Pos - o.Val, err = p.object() - if err != nil { - return nil, err - } - case token.LBRACE: - o.Val, err = p.objectType() - if err != nil { - return nil, err - } - default: - keyStr := make([]string, 0, len(keys)) - for _, k := range keys { - keyStr = append(keyStr, k.Token.Text) - } - - return nil, &PosError{ - Pos: p.tok.Pos, - Err: fmt.Errorf( - "key '%s' expected start of object ('{') or assignment ('=')", - strings.Join(keyStr, " ")), - } - } - - // do a look-ahead for line comment - p.scan() - if len(keys) > 0 && o.Val.Pos().Line == keys[0].Pos().Line && p.lineComment != nil { - o.LineComment = p.lineComment - p.lineComment = nil - } - p.unscan() - return o, nil -} - -// objectKey parses an object key and returns a ObjectKey AST -func (p *Parser) objectKey() ([]*ast.ObjectKey, error) { - keyCount := 0 - keys := make([]*ast.ObjectKey, 0) - - for { - tok := p.scan() - switch tok.Type { - case token.EOF: - // It is very important to also return the keys here as well as - // the error. This is because we need to be able to tell if we - // did parse keys prior to finding the EOF, or if we just found - // a bare EOF. - return keys, errEofToken - case token.ASSIGN: - // assignment or object only, but not nested objects. this is not - // allowed: `foo bar = {}` - if keyCount > 1 { - return nil, &PosError{ - Pos: p.tok.Pos, - Err: fmt.Errorf("nested object expected: LBRACE got: %s", p.tok.Type), - } - } - - if keyCount == 0 { - return nil, &PosError{ - Pos: p.tok.Pos, - Err: errors.New("no object keys found!"), - } - } - - return keys, nil - case token.LBRACE: - var err error - - // If we have no keys, then it is a syntax error. i.e. {{}} is not - // allowed. - if len(keys) == 0 { - err = &PosError{ - Pos: p.tok.Pos, - Err: fmt.Errorf("expected: IDENT | STRING got: %s", p.tok.Type), - } - } - - // object - return keys, err - case token.IDENT, token.STRING: - keyCount++ - keys = append(keys, &ast.ObjectKey{Token: p.tok}) - case token.ILLEGAL: - return keys, &PosError{ - Pos: p.tok.Pos, - Err: fmt.Errorf("illegal character"), - } - default: - return keys, &PosError{ - Pos: p.tok.Pos, - Err: fmt.Errorf("expected: IDENT | STRING | ASSIGN | LBRACE got: %s", p.tok.Type), - } - } - } -} - -// object parses any type of object, such as number, bool, string, object or -// list. -func (p *Parser) object() (ast.Node, error) { - defer un(trace(p, "ParseType")) - tok := p.scan() - - switch tok.Type { - case token.NUMBER, token.FLOAT, token.BOOL, token.STRING, token.HEREDOC: - return p.literalType() - case token.LBRACE: - return p.objectType() - case token.LBRACK: - return p.listType() - case token.COMMENT: - // implement comment - case token.EOF: - return nil, errEofToken - } - - return nil, &PosError{ - Pos: tok.Pos, - Err: fmt.Errorf("Unknown token: %+v", tok), - } -} - -// objectType parses an object type and returns a ObjectType AST -func (p *Parser) objectType() (*ast.ObjectType, error) { - defer un(trace(p, "ParseObjectType")) - - // we assume that the currently scanned token is a LBRACE - o := &ast.ObjectType{ - Lbrace: p.tok.Pos, - } - - l, err := p.objectList(true) - - // if we hit RBRACE, we are good to go (means we parsed all Items), if it's - // not a RBRACE, it's an syntax error and we just return it. - if err != nil && p.tok.Type != token.RBRACE { - return nil, err - } - - // No error, scan and expect the ending to be a brace - if tok := p.scan(); tok.Type != token.RBRACE { - return nil, &PosError{ - Pos: tok.Pos, - Err: fmt.Errorf("object expected closing RBRACE got: %s", tok.Type), - } - } - - o.List = l - o.Rbrace = p.tok.Pos // advanced via parseObjectList - return o, nil -} - -// listType parses a list type and returns a ListType AST -func (p *Parser) listType() (*ast.ListType, error) { - defer un(trace(p, "ParseListType")) - - // we assume that the currently scanned token is a LBRACK - l := &ast.ListType{ - Lbrack: p.tok.Pos, - } - - needComma := false - for { - tok := p.scan() - if needComma { - switch tok.Type { - case token.COMMA, token.RBRACK: - default: - return nil, &PosError{ - Pos: tok.Pos, - Err: fmt.Errorf( - "error parsing list, expected comma or list end, got: %s", - tok.Type), - } - } - } - switch tok.Type { - case token.BOOL, token.NUMBER, token.FLOAT, token.STRING, token.HEREDOC: - node, err := p.literalType() - if err != nil { - return nil, err - } - - // If there is a lead comment, apply it - if p.leadComment != nil { - node.LeadComment = p.leadComment - p.leadComment = nil - } - - l.Add(node) - needComma = true - case token.COMMA: - // get next list item or we are at the end - // do a look-ahead for line comment - p.scan() - if p.lineComment != nil && len(l.List) > 0 { - lit, ok := l.List[len(l.List)-1].(*ast.LiteralType) - if ok { - lit.LineComment = p.lineComment - l.List[len(l.List)-1] = lit - p.lineComment = nil - } - } - p.unscan() - - needComma = false - continue - case token.LBRACE: - // Looks like a nested object, so parse it out - node, err := p.objectType() - if err != nil { - return nil, &PosError{ - Pos: tok.Pos, - Err: fmt.Errorf( - "error while trying to parse object within list: %s", err), - } - } - l.Add(node) - needComma = true - case token.LBRACK: - node, err := p.listType() - if err != nil { - return nil, &PosError{ - Pos: tok.Pos, - Err: fmt.Errorf( - "error while trying to parse list within list: %s", err), - } - } - l.Add(node) - case token.RBRACK: - // finished - l.Rbrack = p.tok.Pos - return l, nil - default: - return nil, &PosError{ - Pos: tok.Pos, - Err: fmt.Errorf("unexpected token while parsing list: %s", tok.Type), - } - } - } -} - -// literalType parses a literal type and returns a LiteralType AST -func (p *Parser) literalType() (*ast.LiteralType, error) { - defer un(trace(p, "ParseLiteral")) - - return &ast.LiteralType{ - Token: p.tok, - }, nil -} - -// scan returns the next token from the underlying scanner. If a token has -// been unscanned then read that instead. In the process, it collects any -// comment groups encountered, and remembers the last lead and line comments. -func (p *Parser) scan() token.Token { - // If we have a token on the buffer, then return it. - if p.n != 0 { - p.n = 0 - return p.tok - } - - // Otherwise read the next token from the scanner and Save it to the buffer - // in case we unscan later. - prev := p.tok - p.tok = p.sc.Scan() - - if p.tok.Type == token.COMMENT { - var comment *ast.CommentGroup - var endline int - - // fmt.Printf("p.tok.Pos.Line = %+v prev: %d endline %d \n", - // p.tok.Pos.Line, prev.Pos.Line, endline) - if p.tok.Pos.Line == prev.Pos.Line { - // The comment is on same line as the previous token; it - // cannot be a lead comment but may be a line comment. - comment, endline = p.consumeCommentGroup(0) - if p.tok.Pos.Line != endline { - // The next token is on a different line, thus - // the last comment group is a line comment. - p.lineComment = comment - } - } - - // consume successor comments, if any - endline = -1 - for p.tok.Type == token.COMMENT { - comment, endline = p.consumeCommentGroup(1) - } - - if endline+1 == p.tok.Pos.Line && p.tok.Type != token.RBRACE { - switch p.tok.Type { - case token.RBRACE, token.RBRACK: - // Do not count for these cases - default: - // The next token is following on the line immediately after the - // comment group, thus the last comment group is a lead comment. - p.leadComment = comment - } - } - - } - - return p.tok -} - -// unscan pushes the previously read token back onto the buffer. -func (p *Parser) unscan() { - p.n = 1 -} - -// ---------------------------------------------------------------------------- -// Parsing support - -func (p *Parser) printTrace(a ...interface{}) { - if !p.enableTrace { - return - } - - const dots = ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " - const n = len(dots) - fmt.Printf("%5d:%3d: ", p.tok.Pos.Line, p.tok.Pos.Column) - - i := 2 * p.indent - for i > n { - fmt.Print(dots) - i -= n - } - // i <= n - fmt.Print(dots[0:i]) - fmt.Println(a...) -} - -func trace(p *Parser, msg string) *Parser { - p.printTrace(msg, "(") - p.indent++ - return p -} - -// Usage pattern: defer un(trace(p, "...")) -func un(p *Parser) { - p.indent-- - p.printTrace(")") -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/parser/parser_test.go b/vendor/github.com/hashicorp/hcl/hcl/parser/parser_test.go deleted file mode 100644 index 270212207..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/parser/parser_test.go +++ /dev/null @@ -1,575 +0,0 @@ -package parser - -import ( - "fmt" - "io/ioutil" - "path/filepath" - "reflect" - "runtime" - "strings" - "testing" - - "github.com/hashicorp/hcl/hcl/ast" - "github.com/hashicorp/hcl/hcl/token" -) - -func TestType(t *testing.T) { - var literals = []struct { - typ token.Type - src string - }{ - {token.STRING, `foo = "foo"`}, - {token.NUMBER, `foo = 123`}, - {token.NUMBER, `foo = -29`}, - {token.FLOAT, `foo = 123.12`}, - {token.FLOAT, `foo = -123.12`}, - {token.BOOL, `foo = true`}, - {token.HEREDOC, "foo = <= 0 { - result = p.heredocIndent(result) - } - } - - return result -} - -// objectItem returns the printable HCL form of an object item. An object type -// starts with one/multiple keys and has a value. The value might be of any -// type. -func (p *printer) objectItem(o *ast.ObjectItem) []byte { - defer un(trace(p, fmt.Sprintf("ObjectItem: %s", o.Keys[0].Token.Text))) - var buf bytes.Buffer - - if o.LeadComment != nil { - for _, comment := range o.LeadComment.List { - buf.WriteString(comment.Text) - buf.WriteByte(newline) - } - } - - for i, k := range o.Keys { - buf.WriteString(k.Token.Text) - buf.WriteByte(blank) - - // reach end of key - if o.Assign.IsValid() && i == len(o.Keys)-1 && len(o.Keys) == 1 { - buf.WriteString("=") - buf.WriteByte(blank) - } - } - - buf.Write(p.output(o.Val)) - - if o.Val.Pos().Line == o.Keys[0].Pos().Line && o.LineComment != nil { - buf.WriteByte(blank) - for _, comment := range o.LineComment.List { - buf.WriteString(comment.Text) - } - } - - return buf.Bytes() -} - -// objectType returns the printable HCL form of an object type. An object type -// begins with a brace and ends with a brace. -func (p *printer) objectType(o *ast.ObjectType) []byte { - defer un(trace(p, "ObjectType")) - var buf bytes.Buffer - buf.WriteString("{") - - var index int - var nextItem token.Pos - var commented, newlinePrinted bool - for { - // Determine the location of the next actual non-comment - // item. If we're at the end, the next item is the closing brace - if index != len(o.List.Items) { - nextItem = o.List.Items[index].Pos() - } else { - nextItem = o.Rbrace - } - - // Go through the standalone comments in the file and print out - // the comments that we should be for this object item. - for _, c := range p.standaloneComments { - printed := false - var lastCommentPos token.Pos - for _, comment := range c.List { - // We only care about comments after the previous item - // we've printed so that comments are printed in the - // correct locations (between two objects for example). - // And before the next item. - if comment.Pos().After(p.prev) && comment.Pos().Before(nextItem) { - // If there are standalone comments and the initial newline has not - // been printed yet, do it now. - if !newlinePrinted { - newlinePrinted = true - buf.WriteByte(newline) - } - - // add newline if it's between other printed nodes - if index > 0 { - commented = true - buf.WriteByte(newline) - } - - // Store this position - lastCommentPos = comment.Pos() - - // output the comment itself - buf.Write(p.indent(p.heredocIndent([]byte(comment.Text)))) - - // Set printed to true to note that we printed something - printed = true - - /* - if index != len(o.List.Items) { - buf.WriteByte(newline) // do not print on the end - } - */ - } - } - - // Stuff to do if we had comments - if printed { - // Always write a newline - buf.WriteByte(newline) - - // If there is another item in the object and our comment - // didn't hug it directly, then make sure there is a blank - // line separating them. - if nextItem != o.Rbrace && nextItem.Line != lastCommentPos.Line+1 { - buf.WriteByte(newline) - } - } - } - - if index == len(o.List.Items) { - p.prev = o.Rbrace - break - } - - // At this point we are sure that it's not a totally empty block: print - // the initial newline if it hasn't been printed yet by the previous - // block about standalone comments. - if !newlinePrinted { - buf.WriteByte(newline) - newlinePrinted = true - } - - // check if we have adjacent one liner items. If yes we'll going to align - // the comments. - var aligned []*ast.ObjectItem - for _, item := range o.List.Items[index:] { - // we don't group one line lists - if len(o.List.Items) == 1 { - break - } - - // one means a oneliner with out any lead comment - // two means a oneliner with lead comment - // anything else might be something else - cur := lines(string(p.objectItem(item))) - if cur > 2 { - break - } - - curPos := item.Pos() - - nextPos := token.Pos{} - if index != len(o.List.Items)-1 { - nextPos = o.List.Items[index+1].Pos() - } - - prevPos := token.Pos{} - if index != 0 { - prevPos = o.List.Items[index-1].Pos() - } - - // fmt.Println("DEBUG ----------------") - // fmt.Printf("prev = %+v prevPos: %s\n", prev, prevPos) - // fmt.Printf("cur = %+v curPos: %s\n", cur, curPos) - // fmt.Printf("next = %+v nextPos: %s\n", next, nextPos) - - if curPos.Line+1 == nextPos.Line { - aligned = append(aligned, item) - index++ - continue - } - - if curPos.Line-1 == prevPos.Line { - aligned = append(aligned, item) - index++ - - // finish if we have a new line or comment next. This happens - // if the next item is not adjacent - if curPos.Line+1 != nextPos.Line { - break - } - continue - } - - break - } - - // put newlines if the items are between other non aligned items. - // newlines are also added if there is a standalone comment already, so - // check it too - if !commented && index != len(aligned) { - buf.WriteByte(newline) - } - - if len(aligned) >= 1 { - p.prev = aligned[len(aligned)-1].Pos() - - items := p.alignedItems(aligned) - buf.Write(p.indent(items)) - } else { - p.prev = o.List.Items[index].Pos() - - buf.Write(p.indent(p.objectItem(o.List.Items[index]))) - index++ - } - - buf.WriteByte(newline) - } - - buf.WriteString("}") - return buf.Bytes() -} - -func (p *printer) alignedItems(items []*ast.ObjectItem) []byte { - var buf bytes.Buffer - - // find the longest key and value length, needed for alignment - var longestKeyLen int // longest key length - var longestValLen int // longest value length - for _, item := range items { - key := len(item.Keys[0].Token.Text) - val := len(p.output(item.Val)) - - if key > longestKeyLen { - longestKeyLen = key - } - - if val > longestValLen { - longestValLen = val - } - } - - for i, item := range items { - if item.LeadComment != nil { - for _, comment := range item.LeadComment.List { - buf.WriteString(comment.Text) - buf.WriteByte(newline) - } - } - - for i, k := range item.Keys { - keyLen := len(k.Token.Text) - buf.WriteString(k.Token.Text) - for i := 0; i < longestKeyLen-keyLen+1; i++ { - buf.WriteByte(blank) - } - - // reach end of key - if i == len(item.Keys)-1 && len(item.Keys) == 1 { - buf.WriteString("=") - buf.WriteByte(blank) - } - } - - val := p.output(item.Val) - valLen := len(val) - buf.Write(val) - - if item.Val.Pos().Line == item.Keys[0].Pos().Line && item.LineComment != nil { - for i := 0; i < longestValLen-valLen+1; i++ { - buf.WriteByte(blank) - } - - for _, comment := range item.LineComment.List { - buf.WriteString(comment.Text) - } - } - - // do not print for the last item - if i != len(items)-1 { - buf.WriteByte(newline) - } - } - - return buf.Bytes() -} - -// list returns the printable HCL form of an list type. -func (p *printer) list(l *ast.ListType) []byte { - var buf bytes.Buffer - buf.WriteString("[") - - var longestLine int - for _, item := range l.List { - // for now we assume that the list only contains literal types - if lit, ok := item.(*ast.LiteralType); ok { - lineLen := len(lit.Token.Text) - if lineLen > longestLine { - longestLine = lineLen - } - } - } - - insertSpaceBeforeItem := false - lastHadLeadComment := false - for i, item := range l.List { - // Keep track of whether this item is a heredoc since that has - // unique behavior. - heredoc := false - if lit, ok := item.(*ast.LiteralType); ok && lit.Token.Type == token.HEREDOC { - heredoc = true - } - - if item.Pos().Line != l.Lbrack.Line { - // multiline list, add newline before we add each item - buf.WriteByte(newline) - insertSpaceBeforeItem = false - - // If we have a lead comment, then we want to write that first - leadComment := false - if lit, ok := item.(*ast.LiteralType); ok && lit.LeadComment != nil { - leadComment = true - - // If this isn't the first item and the previous element - // didn't have a lead comment, then we need to add an extra - // newline to properly space things out. If it did have a - // lead comment previously then this would be done - // automatically. - if i > 0 && !lastHadLeadComment { - buf.WriteByte(newline) - } - - for _, comment := range lit.LeadComment.List { - buf.Write(p.indent([]byte(comment.Text))) - buf.WriteByte(newline) - } - } - - // also indent each line - val := p.output(item) - curLen := len(val) - buf.Write(p.indent(val)) - - // if this item is a heredoc, then we output the comma on - // the next line. This is the only case this happens. - comma := []byte{','} - if heredoc { - buf.WriteByte(newline) - comma = p.indent(comma) - } - - buf.Write(comma) - - if lit, ok := item.(*ast.LiteralType); ok && lit.LineComment != nil { - // if the next item doesn't have any comments, do not align - buf.WriteByte(blank) // align one space - for i := 0; i < longestLine-curLen; i++ { - buf.WriteByte(blank) - } - - for _, comment := range lit.LineComment.List { - buf.WriteString(comment.Text) - } - } - - lastItem := i == len(l.List)-1 - if lastItem { - buf.WriteByte(newline) - } - - if leadComment && !lastItem { - buf.WriteByte(newline) - } - - lastHadLeadComment = leadComment - } else { - if insertSpaceBeforeItem { - buf.WriteByte(blank) - insertSpaceBeforeItem = false - } - - // Output the item itself - // also indent each line - val := p.output(item) - curLen := len(val) - buf.Write(val) - - // If this is a heredoc item we always have to output a newline - // so that it parses properly. - if heredoc { - buf.WriteByte(newline) - } - - // If this isn't the last element, write a comma. - if i != len(l.List)-1 { - buf.WriteString(",") - insertSpaceBeforeItem = true - } - - if lit, ok := item.(*ast.LiteralType); ok && lit.LineComment != nil { - // if the next item doesn't have any comments, do not align - buf.WriteByte(blank) // align one space - for i := 0; i < longestLine-curLen; i++ { - buf.WriteByte(blank) - } - - for _, comment := range lit.LineComment.List { - buf.WriteString(comment.Text) - } - } - } - - } - - buf.WriteString("]") - return buf.Bytes() -} - -// indent indents the lines of the given buffer for each non-empty line -func (p *printer) indent(buf []byte) []byte { - var prefix []byte - if p.cfg.SpacesWidth != 0 { - for i := 0; i < p.cfg.SpacesWidth; i++ { - prefix = append(prefix, blank) - } - } else { - prefix = []byte{tab} - } - - var res []byte - bol := true - for _, c := range buf { - if bol && c != '\n' { - res = append(res, prefix...) - } - - res = append(res, c) - bol = c == '\n' - } - return res -} - -// unindent removes all the indentation from the tombstoned lines -func (p *printer) unindent(buf []byte) []byte { - var res []byte - for i := 0; i < len(buf); i++ { - skip := len(buf)-i <= len(unindent) - if !skip { - skip = !bytes.Equal(unindent, buf[i:i+len(unindent)]) - } - if skip { - res = append(res, buf[i]) - continue - } - - // We have a marker. we have to backtrace here and clean out - // any whitespace ahead of our tombstone up to a \n - for j := len(res) - 1; j >= 0; j-- { - if res[j] == '\n' { - break - } - - res = res[:j] - } - - // Skip the entire unindent marker - i += len(unindent) - 1 - } - - return res -} - -// heredocIndent marks all the 2nd and further lines as unindentable -func (p *printer) heredocIndent(buf []byte) []byte { - var res []byte - bol := false - for _, c := range buf { - if bol && c != '\n' { - res = append(res, unindent...) - } - res = append(res, c) - bol = c == '\n' - } - return res -} - -// isSingleLineObject tells whether the given object item is a single -// line object such as "obj {}". -// -// A single line object: -// -// * has no lead comments (hence multi-line) -// * has no assignment -// * has no values in the stanza (within {}) -// -func (p *printer) isSingleLineObject(val *ast.ObjectItem) bool { - // If there is a lead comment, can't be one line - if val.LeadComment != nil { - return false - } - - // If there is assignment, we always break by line - if val.Assign.IsValid() { - return false - } - - // If it isn't an object type, then its not a single line object - ot, ok := val.Val.(*ast.ObjectType) - if !ok { - return false - } - - // If the object has no items, it is single line! - return len(ot.List.Items) == 0 -} - -func lines(txt string) int { - endline := 1 - for i := 0; i < len(txt); i++ { - if txt[i] == '\n' { - endline++ - } - } - return endline -} - -// ---------------------------------------------------------------------------- -// Tracing support - -func (p *printer) printTrace(a ...interface{}) { - if !p.enableTrace { - return - } - - const dots = ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " - const n = len(dots) - i := 2 * p.indentTrace - for i > n { - fmt.Print(dots) - i -= n - } - // i <= n - fmt.Print(dots[0:i]) - fmt.Println(a...) -} - -func trace(p *printer, msg string) *printer { - p.printTrace(msg, "(") - p.indentTrace++ - return p -} - -// Usage pattern: defer un(trace(p, "...")) -func un(p *printer) { - p.indentTrace-- - p.printTrace(")") -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/printer.go b/vendor/github.com/hashicorp/hcl/hcl/printer/printer.go deleted file mode 100644 index 6617ab8e7..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/printer.go +++ /dev/null @@ -1,66 +0,0 @@ -// Package printer implements printing of AST nodes to HCL format. -package printer - -import ( - "bytes" - "io" - "text/tabwriter" - - "github.com/hashicorp/hcl/hcl/ast" - "github.com/hashicorp/hcl/hcl/parser" -) - -var DefaultConfig = Config{ - SpacesWidth: 2, -} - -// A Config node controls the output of Fprint. -type Config struct { - SpacesWidth int // if set, it will use spaces instead of tabs for alignment -} - -func (c *Config) Fprint(output io.Writer, node ast.Node) error { - p := &printer{ - cfg: *c, - comments: make([]*ast.CommentGroup, 0), - standaloneComments: make([]*ast.CommentGroup, 0), - // enableTrace: true, - } - - p.collectComments(node) - - if _, err := output.Write(p.unindent(p.output(node))); err != nil { - return err - } - - // flush tabwriter, if any - var err error - if tw, _ := output.(*tabwriter.Writer); tw != nil { - err = tw.Flush() - } - - return err -} - -// Fprint "pretty-prints" an HCL node to output -// It calls Config.Fprint with default settings. -func Fprint(output io.Writer, node ast.Node) error { - return DefaultConfig.Fprint(output, node) -} - -// Format formats src HCL and returns the result. -func Format(src []byte) ([]byte, error) { - node, err := parser.Parse(src) - if err != nil { - return nil, err - } - - var buf bytes.Buffer - if err := DefaultConfig.Fprint(&buf, node); err != nil { - return nil, err - } - - // Add trailing newline to result - buf.WriteString("\n") - return buf.Bytes(), nil -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go b/vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go deleted file mode 100644 index 5248259b9..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/printer_test.go +++ /dev/null @@ -1,149 +0,0 @@ -package printer - -import ( - "bytes" - "errors" - "flag" - "fmt" - "io/ioutil" - "path/filepath" - "testing" - - "github.com/hashicorp/hcl/hcl/parser" -) - -var update = flag.Bool("update", false, "update golden files") - -const ( - dataDir = "testdata" -) - -type entry struct { - source, golden string -} - -// Use go test -update to create/update the respective golden files. -var data = []entry{ - {"complexhcl.input", "complexhcl.golden"}, - {"list.input", "list.golden"}, - {"list_comment.input", "list_comment.golden"}, - {"comment.input", "comment.golden"}, - {"comment_crlf.input", "comment.golden"}, - {"comment_aligned.input", "comment_aligned.golden"}, - {"comment_array.input", "comment_array.golden"}, - {"comment_end_file.input", "comment_end_file.golden"}, - {"comment_multiline_indent.input", "comment_multiline_indent.golden"}, - {"comment_multiline_no_stanza.input", "comment_multiline_no_stanza.golden"}, - {"comment_multiline_stanza.input", "comment_multiline_stanza.golden"}, - {"comment_newline.input", "comment_newline.golden"}, - {"comment_object_multi.input", "comment_object_multi.golden"}, - {"comment_standalone.input", "comment_standalone.golden"}, - {"empty_block.input", "empty_block.golden"}, - {"list_of_objects.input", "list_of_objects.golden"}, - {"multiline_string.input", "multiline_string.golden"}, - {"object_singleline.input", "object_singleline.golden"}, - {"object_with_heredoc.input", "object_with_heredoc.golden"}, -} - -func TestFiles(t *testing.T) { - for _, e := range data { - source := filepath.Join(dataDir, e.source) - golden := filepath.Join(dataDir, e.golden) - t.Run(e.source, func(t *testing.T) { - check(t, source, golden) - }) - } -} - -func check(t *testing.T, source, golden string) { - src, err := ioutil.ReadFile(source) - if err != nil { - t.Error(err) - return - } - - res, err := format(src) - if err != nil { - t.Error(err) - return - } - - // update golden files if necessary - if *update { - if err := ioutil.WriteFile(golden, res, 0644); err != nil { - t.Error(err) - } - return - } - - // get golden - gld, err := ioutil.ReadFile(golden) - if err != nil { - t.Error(err) - return - } - - // formatted source and golden must be the same - if err := diff(source, golden, res, gld); err != nil { - t.Error(err) - return - } -} - -// diff compares a and b. -func diff(aname, bname string, a, b []byte) error { - var buf bytes.Buffer // holding long error message - - // compare lengths - if len(a) != len(b) { - fmt.Fprintf(&buf, "\nlength changed: len(%s) = %d, len(%s) = %d", aname, len(a), bname, len(b)) - } - - // compare contents - line := 1 - offs := 1 - for i := 0; i < len(a) && i < len(b); i++ { - ch := a[i] - if ch != b[i] { - fmt.Fprintf(&buf, "\n%s:%d:%d: %q", aname, line, i-offs+1, lineAt(a, offs)) - fmt.Fprintf(&buf, "\n%s:%d:%d: %q", bname, line, i-offs+1, lineAt(b, offs)) - fmt.Fprintf(&buf, "\n\n") - break - } - if ch == '\n' { - line++ - offs = i + 1 - } - } - - if buf.Len() > 0 { - return errors.New(buf.String()) - } - return nil -} - -// format parses src, prints the corresponding AST, verifies the resulting -// src is syntactically correct, and returns the resulting src or an error -// if any. -func format(src []byte) ([]byte, error) { - formatted, err := Format(src) - if err != nil { - return nil, err - } - - // make sure formatted output is syntactically correct - if _, err := parser.Parse(formatted); err != nil { - return nil, fmt.Errorf("parse: %s\n%s", err, formatted) - } - - return formatted, nil -} - -// lineAt returns the line in text starting at offset offs. -func lineAt(text []byte, offs int) []byte { - i := offs - for i < len(text) && text[i] != '\n' { - i++ - } - return text[offs:i] -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.golden b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.golden deleted file mode 100644 index 9d4b072a0..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.golden +++ /dev/null @@ -1,36 +0,0 @@ -// A standalone comment is a comment which is not attached to any kind of node - -// This comes from Terraform, as a test -variable "foo" { - # Standalone comment should be still here - - default = "bar" - description = "bar" # yooo -} - -/* This is a multi line standalone -comment*/ - -// fatih arslan -/* This is a developer test -account and a multine comment */ -developer = ["fatih", "arslan"] // fatih arslan - -# One line here -numbers = [1, 2] // another line here - -# Another comment -variable = { - description = "bar" # another yooo - - foo { - # Nested standalone - - bar = "fatih" - } -} - -// lead comment -foo { - bar = "fatih" // line comment 2 -} // line comment 3 diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.input b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.input deleted file mode 100644 index 57c37ac1d..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment.input +++ /dev/null @@ -1,37 +0,0 @@ -// A standalone comment is a comment which is not attached to any kind of node - - // This comes from Terraform, as a test -variable "foo" { - # Standalone comment should be still here - - default = "bar" - description = "bar" # yooo -} - -/* This is a multi line standalone -comment*/ - - -// fatih arslan -/* This is a developer test -account and a multine comment */ -developer = [ "fatih", "arslan"] // fatih arslan - -# One line here -numbers = [1,2] // another line here - - # Another comment -variable = { - description = "bar" # another yooo - foo { - # Nested standalone - - bar = "fatih" - } -} - - // lead comment -foo { - bar = "fatih" // line comment 2 -} // line comment 3 - diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.golden b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.golden deleted file mode 100644 index 6ff21504c..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.golden +++ /dev/null @@ -1,32 +0,0 @@ -aligned { - # We have some aligned items below - foo = "fatih" # yoo1 - default = "bar" # yoo2 - bar = "bar and foo" # yoo3 - - default = { - bar = "example" - } - - #deneme arslan - fatih = ["fatih"] # yoo4 - - #fatih arslan - fatiharslan = ["arslan"] // yoo5 - - default = { - bar = "example" - } - - security_groups = [ - "foo", # kenya 1 - "${aws_security_group.firewall.foo}", # kenya 2 - ] - - security_groups2 = [ - "foo", # kenya 1 - "bar", # kenya 1.5 - "${aws_security_group.firewall.foo}", # kenya 2 - "foobar", # kenya 3 - ] -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.input b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.input deleted file mode 100644 index bd43ab1ad..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_aligned.input +++ /dev/null @@ -1,28 +0,0 @@ -aligned { -# We have some aligned items below - foo = "fatih" # yoo1 - default = "bar" # yoo2 - bar = "bar and foo" # yoo3 - default = { - bar = "example" - } - #deneme arslan - fatih = ["fatih"] # yoo4 - #fatih arslan - fatiharslan = ["arslan"] // yoo5 - default = { - bar = "example" - } - -security_groups = [ - "foo", # kenya 1 - "${aws_security_group.firewall.foo}", # kenya 2 -] - -security_groups2 = [ - "foo", # kenya 1 - "bar", # kenya 1.5 - "${aws_security_group.firewall.foo}", # kenya 2 - "foobar", # kenya 3 -] -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.golden b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.golden deleted file mode 100644 index e778eafa3..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.golden +++ /dev/null @@ -1,13 +0,0 @@ -banana = [ - # I really want to comment this item in the array. - "a", - - # This as well - "b", - - "c", # And C - "d", - - # And another - "e", -] diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.input b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.input deleted file mode 100644 index e778eafa3..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_array.input +++ /dev/null @@ -1,13 +0,0 @@ -banana = [ - # I really want to comment this item in the array. - "a", - - # This as well - "b", - - "c", # And C - "d", - - # And another - "e", -] diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_crlf.input b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_crlf.input deleted file mode 100644 index 5d2720672..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_crlf.input +++ /dev/null @@ -1,37 +0,0 @@ -// A standalone comment is a comment which is not attached to any kind of node - - // This comes from Terraform, as a test -variable "foo" { - # Standalone comment should be still here - - default = "bar" - description = "bar" # yooo -} - -/* This is a multi line standalone -comment*/ - - -// fatih arslan -/* This is a developer test -account and a multine comment */ -developer = [ "fatih", "arslan"] // fatih arslan - -# One line here -numbers = [1,2] // another line here - - # Another comment -variable = { - description = "bar" # another yooo - foo { - # Nested standalone - - bar = "fatih" - } -} - - // lead comment -foo { - bar = "fatih" // line comment 2 -} // line comment 3 - diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.golden b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.golden deleted file mode 100644 index dbeae36a8..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.golden +++ /dev/null @@ -1,6 +0,0 @@ -resource "blah" "blah" {} - -// -// -// - diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.input b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.input deleted file mode 100644 index 68c4c282e..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_end_file.input +++ /dev/null @@ -1,5 +0,0 @@ -resource "blah" "blah" {} - -// -// -// diff --git a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_indent.golden b/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_indent.golden deleted file mode 100644 index 74c4ccd89..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/printer/testdata/comment_multiline_indent.golden +++ /dev/null @@ -1,12 +0,0 @@ -resource "provider" "resource" { - /* - SPACE_SENSITIVE_CODE = < 0 { - s.err("unexpected null character (0x00)") - return eof - } - - // debug - // fmt.Printf("ch: %q, offset:column: %d:%d\n", ch, s.srcPos.Offset, s.srcPos.Column) - return ch -} - -// unread unreads the previous read Rune and updates the source position -func (s *Scanner) unread() { - if err := s.buf.UnreadRune(); err != nil { - panic(err) // this is user fault, we should catch it - } - s.srcPos = s.prevPos // put back last position -} - -// peek returns the next rune without advancing the reader. -func (s *Scanner) peek() rune { - peek, _, err := s.buf.ReadRune() - if err != nil { - return eof - } - - s.buf.UnreadRune() - return peek -} - -// Scan scans the next token and returns the token. -func (s *Scanner) Scan() token.Token { - ch := s.next() - - // skip white space - for isWhitespace(ch) { - ch = s.next() - } - - var tok token.Type - - // token text markings - s.tokStart = s.srcPos.Offset - s.lastCharLen - - // token position, initial next() is moving the offset by one(size of rune - // actually), though we are interested with the starting point - s.tokPos.Offset = s.srcPos.Offset - s.lastCharLen - if s.srcPos.Column > 0 { - // common case: last character was not a '\n' - s.tokPos.Line = s.srcPos.Line - s.tokPos.Column = s.srcPos.Column - } else { - // last character was a '\n' - // (we cannot be at the beginning of the source - // since we have called next() at least once) - s.tokPos.Line = s.srcPos.Line - 1 - s.tokPos.Column = s.lastLineLen - } - - switch { - case isLetter(ch): - tok = token.IDENT - lit := s.scanIdentifier() - if lit == "true" || lit == "false" { - tok = token.BOOL - } - case isDecimal(ch): - tok = s.scanNumber(ch) - default: - switch ch { - case eof: - tok = token.EOF - case '"': - tok = token.STRING - s.scanString() - case '#', '/': - tok = token.COMMENT - s.scanComment(ch) - case '.': - tok = token.PERIOD - ch = s.peek() - if isDecimal(ch) { - tok = token.FLOAT - ch = s.scanMantissa(ch) - ch = s.scanExponent(ch) - } - case '<': - tok = token.HEREDOC - s.scanHeredoc() - case '[': - tok = token.LBRACK - case ']': - tok = token.RBRACK - case '{': - tok = token.LBRACE - case '}': - tok = token.RBRACE - case ',': - tok = token.COMMA - case '=': - tok = token.ASSIGN - case '+': - tok = token.ADD - case '-': - if isDecimal(s.peek()) { - ch := s.next() - tok = s.scanNumber(ch) - } else { - tok = token.SUB - } - default: - s.err("illegal char") - } - } - - // finish token ending - s.tokEnd = s.srcPos.Offset - - // create token literal - var tokenText string - if s.tokStart >= 0 { - tokenText = string(s.src[s.tokStart:s.tokEnd]) - } - s.tokStart = s.tokEnd // ensure idempotency of tokenText() call - - return token.Token{ - Type: tok, - Pos: s.tokPos, - Text: tokenText, - } -} - -func (s *Scanner) scanComment(ch rune) { - // single line comments - if ch == '#' || (ch == '/' && s.peek() != '*') { - if ch == '/' && s.peek() != '/' { - s.err("expected '/' for comment") - return - } - - ch = s.next() - for ch != '\n' && ch >= 0 && ch != eof { - ch = s.next() - } - if ch != eof && ch >= 0 { - s.unread() - } - return - } - - // be sure we get the character after /* This allows us to find comment's - // that are not erminated - if ch == '/' { - s.next() - ch = s.next() // read character after "/*" - } - - // look for /* - style comments - for { - if ch < 0 || ch == eof { - s.err("comment not terminated") - break - } - - ch0 := ch - ch = s.next() - if ch0 == '*' && ch == '/' { - break - } - } -} - -// scanNumber scans a HCL number definition starting with the given rune -func (s *Scanner) scanNumber(ch rune) token.Type { - if ch == '0' { - // check for hexadecimal, octal or float - ch = s.next() - if ch == 'x' || ch == 'X' { - // hexadecimal - ch = s.next() - found := false - for isHexadecimal(ch) { - ch = s.next() - found = true - } - - if !found { - s.err("illegal hexadecimal number") - } - - if ch != eof { - s.unread() - } - - return token.NUMBER - } - - // now it's either something like: 0421(octal) or 0.1231(float) - illegalOctal := false - for isDecimal(ch) { - ch = s.next() - if ch == '8' || ch == '9' { - // this is just a possibility. For example 0159 is illegal, but - // 0159.23 is valid. So we mark a possible illegal octal. If - // the next character is not a period, we'll print the error. - illegalOctal = true - } - } - - if ch == 'e' || ch == 'E' { - ch = s.scanExponent(ch) - return token.FLOAT - } - - if ch == '.' { - ch = s.scanFraction(ch) - - if ch == 'e' || ch == 'E' { - ch = s.next() - ch = s.scanExponent(ch) - } - return token.FLOAT - } - - if illegalOctal { - s.err("illegal octal number") - } - - if ch != eof { - s.unread() - } - return token.NUMBER - } - - s.scanMantissa(ch) - ch = s.next() // seek forward - if ch == 'e' || ch == 'E' { - ch = s.scanExponent(ch) - return token.FLOAT - } - - if ch == '.' { - ch = s.scanFraction(ch) - if ch == 'e' || ch == 'E' { - ch = s.next() - ch = s.scanExponent(ch) - } - return token.FLOAT - } - - if ch != eof { - s.unread() - } - return token.NUMBER -} - -// scanMantissa scans the mantissa begining from the rune. It returns the next -// non decimal rune. It's used to determine wheter it's a fraction or exponent. -func (s *Scanner) scanMantissa(ch rune) rune { - scanned := false - for isDecimal(ch) { - ch = s.next() - scanned = true - } - - if scanned && ch != eof { - s.unread() - } - return ch -} - -// scanFraction scans the fraction after the '.' rune -func (s *Scanner) scanFraction(ch rune) rune { - if ch == '.' { - ch = s.peek() // we peek just to see if we can move forward - ch = s.scanMantissa(ch) - } - return ch -} - -// scanExponent scans the remaining parts of an exponent after the 'e' or 'E' -// rune. -func (s *Scanner) scanExponent(ch rune) rune { - if ch == 'e' || ch == 'E' { - ch = s.next() - if ch == '-' || ch == '+' { - ch = s.next() - } - ch = s.scanMantissa(ch) - } - return ch -} - -// scanHeredoc scans a heredoc string -func (s *Scanner) scanHeredoc() { - // Scan the second '<' in example: '<= len(identBytes) && identRegexp.Match(s.src[lineStart:s.srcPos.Offset-s.lastCharLen]) { - break - } - - // Not an anchor match, record the start of a new line - lineStart = s.srcPos.Offset - } - - if ch == eof { - s.err("heredoc not terminated") - return - } - } - - return -} - -// scanString scans a quoted string -func (s *Scanner) scanString() { - braces := 0 - for { - // '"' opening already consumed - // read character after quote - ch := s.next() - - if (ch == '\n' && braces == 0) || ch < 0 || ch == eof { - s.err("literal not terminated") - return - } - - if ch == '"' && braces == 0 { - break - } - - // If we're going into a ${} then we can ignore quotes for awhile - if braces == 0 && ch == '$' && s.peek() == '{' { - braces++ - s.next() - } else if braces > 0 && ch == '{' { - braces++ - } - if braces > 0 && ch == '}' { - braces-- - } - - if ch == '\\' { - s.scanEscape() - } - } - - return -} - -// scanEscape scans an escape sequence -func (s *Scanner) scanEscape() rune { - // http://en.cppreference.com/w/cpp/language/escape - ch := s.next() // read character after '/' - switch ch { - case 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\', '"': - // nothing to do - case '0', '1', '2', '3', '4', '5', '6', '7': - // octal notation - ch = s.scanDigits(ch, 8, 3) - case 'x': - // hexademical notation - ch = s.scanDigits(s.next(), 16, 2) - case 'u': - // universal character name - ch = s.scanDigits(s.next(), 16, 4) - case 'U': - // universal character name - ch = s.scanDigits(s.next(), 16, 8) - default: - s.err("illegal char escape") - } - return ch -} - -// scanDigits scans a rune with the given base for n times. For example an -// octal notation \184 would yield in scanDigits(ch, 8, 3) -func (s *Scanner) scanDigits(ch rune, base, n int) rune { - start := n - for n > 0 && digitVal(ch) < base { - ch = s.next() - if ch == eof { - // If we see an EOF, we halt any more scanning of digits - // immediately. - break - } - - n-- - } - if n > 0 { - s.err("illegal char escape") - } - - if n != start { - // we scanned all digits, put the last non digit char back, - // only if we read anything at all - s.unread() - } - - return ch -} - -// scanIdentifier scans an identifier and returns the literal string -func (s *Scanner) scanIdentifier() string { - offs := s.srcPos.Offset - s.lastCharLen - ch := s.next() - for isLetter(ch) || isDigit(ch) || ch == '-' || ch == '.' { - ch = s.next() - } - - if ch != eof { - s.unread() // we got identifier, put back latest char - } - - return string(s.src[offs:s.srcPos.Offset]) -} - -// recentPosition returns the position of the character immediately after the -// character or token returned by the last call to Scan. -func (s *Scanner) recentPosition() (pos token.Pos) { - pos.Offset = s.srcPos.Offset - s.lastCharLen - switch { - case s.srcPos.Column > 0: - // common case: last character was not a '\n' - pos.Line = s.srcPos.Line - pos.Column = s.srcPos.Column - case s.lastLineLen > 0: - // last character was a '\n' - // (we cannot be at the beginning of the source - // since we have called next() at least once) - pos.Line = s.srcPos.Line - 1 - pos.Column = s.lastLineLen - default: - // at the beginning of the source - pos.Line = 1 - pos.Column = 1 - } - return -} - -// err prints the error of any scanning to s.Error function. If the function is -// not defined, by default it prints them to os.Stderr -func (s *Scanner) err(msg string) { - s.ErrorCount++ - pos := s.recentPosition() - - if s.Error != nil { - s.Error(pos, msg) - return - } - - fmt.Fprintf(os.Stderr, "%s: %s\n", pos, msg) -} - -// isHexadecimal returns true if the given rune is a letter -func isLetter(ch rune) bool { - return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch) -} - -// isDigit returns true if the given rune is a decimal digit -func isDigit(ch rune) bool { - return '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch) -} - -// isDecimal returns true if the given rune is a decimal number -func isDecimal(ch rune) bool { - return '0' <= ch && ch <= '9' -} - -// isHexadecimal returns true if the given rune is an hexadecimal number -func isHexadecimal(ch rune) bool { - return '0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F' -} - -// isWhitespace returns true if the rune is a space, tab, newline or carriage return -func isWhitespace(ch rune) bool { - return ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r' -} - -// digitVal returns the integer value of a given octal,decimal or hexadecimal rune -func digitVal(ch rune) int { - switch { - case '0' <= ch && ch <= '9': - return int(ch - '0') - case 'a' <= ch && ch <= 'f': - return int(ch - 'a' + 10) - case 'A' <= ch && ch <= 'F': - return int(ch - 'A' + 10) - } - return 16 // larger than any legal digit val -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner_test.go b/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner_test.go deleted file mode 100644 index 4f2c9cbe0..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/scanner/scanner_test.go +++ /dev/null @@ -1,591 +0,0 @@ -package scanner - -import ( - "bytes" - "fmt" - "testing" - - "strings" - - "github.com/hashicorp/hcl/hcl/token" -) - -var f100 = strings.Repeat("f", 100) - -type tokenPair struct { - tok token.Type - text string -} - -var tokenLists = map[string][]tokenPair{ - "comment": []tokenPair{ - {token.COMMENT, "//"}, - {token.COMMENT, "////"}, - {token.COMMENT, "// comment"}, - {token.COMMENT, "// /* comment */"}, - {token.COMMENT, "// // comment //"}, - {token.COMMENT, "//" + f100}, - {token.COMMENT, "#"}, - {token.COMMENT, "##"}, - {token.COMMENT, "# comment"}, - {token.COMMENT, "# /* comment */"}, - {token.COMMENT, "# # comment #"}, - {token.COMMENT, "#" + f100}, - {token.COMMENT, "/**/"}, - {token.COMMENT, "/***/"}, - {token.COMMENT, "/* comment */"}, - {token.COMMENT, "/* // comment */"}, - {token.COMMENT, "/* /* comment */"}, - {token.COMMENT, "/*\n comment\n*/"}, - {token.COMMENT, "/*" + f100 + "*/"}, - }, - "operator": []tokenPair{ - {token.LBRACK, "["}, - {token.LBRACE, "{"}, - {token.COMMA, ","}, - {token.PERIOD, "."}, - {token.RBRACK, "]"}, - {token.RBRACE, "}"}, - {token.ASSIGN, "="}, - {token.ADD, "+"}, - {token.SUB, "-"}, - }, - "bool": []tokenPair{ - {token.BOOL, "true"}, - {token.BOOL, "false"}, - }, - "ident": []tokenPair{ - {token.IDENT, "a"}, - {token.IDENT, "a0"}, - {token.IDENT, "foobar"}, - {token.IDENT, "foo-bar"}, - {token.IDENT, "abc123"}, - {token.IDENT, "LGTM"}, - {token.IDENT, "_"}, - {token.IDENT, "_abc123"}, - {token.IDENT, "abc123_"}, - {token.IDENT, "_abc_123_"}, - {token.IDENT, "_äöü"}, - {token.IDENT, "_本"}, - {token.IDENT, "äöü"}, - {token.IDENT, "本"}, - {token.IDENT, "a۰۱۸"}, - {token.IDENT, "foo६४"}, - {token.IDENT, "bar9876"}, - }, - "heredoc": []tokenPair{ - {token.HEREDOC, "< 0 for %q", s.ErrorCount, src) - } -} - -func testTokenList(t *testing.T, tokenList []tokenPair) { - // create artifical source code - buf := new(bytes.Buffer) - for _, ident := range tokenList { - fmt.Fprintf(buf, "%s\n", ident.text) - } - - s := New(buf.Bytes()) - for _, ident := range tokenList { - tok := s.Scan() - if tok.Type != ident.tok { - t.Errorf("tok = %q want %q for %q\n", tok, ident.tok, ident.text) - } - - if tok.Text != ident.text { - t.Errorf("text = %q want %q", tok.String(), ident.text) - } - - } -} - -func countNewlines(s string) int { - n := 0 - for _, ch := range s { - if ch == '\n' { - n++ - } - } - return n -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go b/vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go deleted file mode 100644 index 5f981eaa2..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go +++ /dev/null @@ -1,241 +0,0 @@ -package strconv - -import ( - "errors" - "unicode/utf8" -) - -// ErrSyntax indicates that a value does not have the right syntax for the target type. -var ErrSyntax = errors.New("invalid syntax") - -// Unquote interprets s as a single-quoted, double-quoted, -// or backquoted Go string literal, returning the string value -// that s quotes. (If s is single-quoted, it would be a Go -// character literal; Unquote returns the corresponding -// one-character string.) -func Unquote(s string) (t string, err error) { - n := len(s) - if n < 2 { - return "", ErrSyntax - } - quote := s[0] - if quote != s[n-1] { - return "", ErrSyntax - } - s = s[1 : n-1] - - if quote != '"' { - return "", ErrSyntax - } - if !contains(s, '$') && !contains(s, '{') && contains(s, '\n') { - return "", ErrSyntax - } - - // Is it trivial? Avoid allocation. - if !contains(s, '\\') && !contains(s, quote) && !contains(s, '$') { - switch quote { - case '"': - return s, nil - case '\'': - r, size := utf8.DecodeRuneInString(s) - if size == len(s) && (r != utf8.RuneError || size != 1) { - return s, nil - } - } - } - - var runeTmp [utf8.UTFMax]byte - buf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations. - for len(s) > 0 { - // If we're starting a '${}' then let it through un-unquoted. - // Specifically: we don't unquote any characters within the `${}` - // section. - if s[0] == '$' && len(s) > 1 && s[1] == '{' { - buf = append(buf, '$', '{') - s = s[2:] - - // Continue reading until we find the closing brace, copying as-is - braces := 1 - for len(s) > 0 && braces > 0 { - r, size := utf8.DecodeRuneInString(s) - if r == utf8.RuneError { - return "", ErrSyntax - } - - s = s[size:] - - n := utf8.EncodeRune(runeTmp[:], r) - buf = append(buf, runeTmp[:n]...) - - switch r { - case '{': - braces++ - case '}': - braces-- - } - } - if braces != 0 { - return "", ErrSyntax - } - if len(s) == 0 { - // If there's no string left, we're done! - break - } else { - // If there's more left, we need to pop back up to the top of the loop - // in case there's another interpolation in this string. - continue - } - } - - if s[0] == '\n' { - return "", ErrSyntax - } - - c, multibyte, ss, err := unquoteChar(s, quote) - if err != nil { - return "", err - } - s = ss - if c < utf8.RuneSelf || !multibyte { - buf = append(buf, byte(c)) - } else { - n := utf8.EncodeRune(runeTmp[:], c) - buf = append(buf, runeTmp[:n]...) - } - if quote == '\'' && len(s) != 0 { - // single-quoted must be single character - return "", ErrSyntax - } - } - return string(buf), nil -} - -// contains reports whether the string contains the byte c. -func contains(s string, c byte) bool { - for i := 0; i < len(s); i++ { - if s[i] == c { - return true - } - } - return false -} - -func unhex(b byte) (v rune, ok bool) { - c := rune(b) - switch { - case '0' <= c && c <= '9': - return c - '0', true - case 'a' <= c && c <= 'f': - return c - 'a' + 10, true - case 'A' <= c && c <= 'F': - return c - 'A' + 10, true - } - return -} - -func unquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error) { - // easy cases - switch c := s[0]; { - case c == quote && (quote == '\'' || quote == '"'): - err = ErrSyntax - return - case c >= utf8.RuneSelf: - r, size := utf8.DecodeRuneInString(s) - return r, true, s[size:], nil - case c != '\\': - return rune(s[0]), false, s[1:], nil - } - - // hard case: c is backslash - if len(s) <= 1 { - err = ErrSyntax - return - } - c := s[1] - s = s[2:] - - switch c { - case 'a': - value = '\a' - case 'b': - value = '\b' - case 'f': - value = '\f' - case 'n': - value = '\n' - case 'r': - value = '\r' - case 't': - value = '\t' - case 'v': - value = '\v' - case 'x', 'u', 'U': - n := 0 - switch c { - case 'x': - n = 2 - case 'u': - n = 4 - case 'U': - n = 8 - } - var v rune - if len(s) < n { - err = ErrSyntax - return - } - for j := 0; j < n; j++ { - x, ok := unhex(s[j]) - if !ok { - err = ErrSyntax - return - } - v = v<<4 | x - } - s = s[n:] - if c == 'x' { - // single-byte string, possibly not UTF-8 - value = v - break - } - if v > utf8.MaxRune { - err = ErrSyntax - return - } - value = v - multibyte = true - case '0', '1', '2', '3', '4', '5', '6', '7': - v := rune(c) - '0' - if len(s) < 2 { - err = ErrSyntax - return - } - for j := 0; j < 2; j++ { // one digit already; two more - x := rune(s[j]) - '0' - if x < 0 || x > 7 { - err = ErrSyntax - return - } - v = (v << 3) | x - } - s = s[2:] - if v > 255 { - err = ErrSyntax - return - } - value = v - case '\\': - value = '\\' - case '\'', '"': - if c != quote { - err = ErrSyntax - return - } - value = rune(c) - default: - err = ErrSyntax - return - } - tail = s - return -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/strconv/quote_test.go b/vendor/github.com/hashicorp/hcl/hcl/strconv/quote_test.go deleted file mode 100644 index 65be375d9..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/strconv/quote_test.go +++ /dev/null @@ -1,96 +0,0 @@ -package strconv - -import "testing" - -type quoteTest struct { - in string - out string - ascii string -} - -var quotetests = []quoteTest{ - {"\a\b\f\r\n\t\v", `"\a\b\f\r\n\t\v"`, `"\a\b\f\r\n\t\v"`}, - {"\\", `"\\"`, `"\\"`}, - {"abc\xffdef", `"abc\xffdef"`, `"abc\xffdef"`}, - {"\u263a", `"☺"`, `"\u263a"`}, - {"\U0010ffff", `"\U0010ffff"`, `"\U0010ffff"`}, - {"\x04", `"\x04"`, `"\x04"`}, -} - -type unQuoteTest struct { - in string - out string -} - -var unquotetests = []unQuoteTest{ - {`""`, ""}, - {`"a"`, "a"}, - {`"abc"`, "abc"}, - {`"☺"`, "☺"}, - {`"hello world"`, "hello world"}, - {`"\xFF"`, "\xFF"}, - {`"\377"`, "\377"}, - {`"\u1234"`, "\u1234"}, - {`"\U00010111"`, "\U00010111"}, - {`"\U0001011111"`, "\U0001011111"}, - {`"\a\b\f\n\r\t\v\\\""`, "\a\b\f\n\r\t\v\\\""}, - {`"'"`, "'"}, - {`"${file("foo")}"`, `${file("foo")}`}, - {`"${file("\"foo\"")}"`, `${file("\"foo\"")}`}, - {`"echo ${var.region}${element(split(",",var.zones),0)}"`, - `echo ${var.region}${element(split(",",var.zones),0)}`}, - {`"${HH\\:mm\\:ss}"`, `${HH\\:mm\\:ss}`}, - {`"${\n}"`, `${\n}`}, -} - -var misquoted = []string{ - ``, - `"`, - `"a`, - `"'`, - `b"`, - `"\"`, - `"\9"`, - `"\19"`, - `"\129"`, - `'\'`, - `'\9'`, - `'\19'`, - `'\129'`, - `'ab'`, - `"\x1!"`, - `"\U12345678"`, - `"\z"`, - "`", - "`xxx", - "`\"", - `"\'"`, - `'\"'`, - "\"\n\"", - "\"\\n\n\"", - "'\n'", - `"${"`, - `"${foo{}"`, - "\"${foo}\n\"", -} - -func TestUnquote(t *testing.T) { - for _, tt := range unquotetests { - if out, err := Unquote(tt.in); err != nil || out != tt.out { - t.Errorf("Unquote(%#q) = %q, %v want %q, nil", tt.in, out, err, tt.out) - } - } - - // run the quote tests too, backward - for _, tt := range quotetests { - if in, err := Unquote(tt.out); in != tt.in { - t.Errorf("Unquote(%#q) = %q, %v, want %q, nil", tt.out, in, err, tt.in) - } - } - - for _, s := range misquoted { - if out, err := Unquote(s); out != "" || err != ErrSyntax { - t.Errorf("Unquote(%#q) = %q, %v want %q, %v", s, out, err, "", ErrSyntax) - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/array_comment.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/array_comment.hcl deleted file mode 100644 index 78c267582..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/array_comment.hcl +++ /dev/null @@ -1,4 +0,0 @@ -foo = [ - "1", - "2", # comment -] diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/assign_colon.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/assign_colon.hcl deleted file mode 100644 index eb5a99a69..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/assign_colon.hcl +++ /dev/null @@ -1,6 +0,0 @@ -resource = [{ - "foo": { - "bar": {}, - "baz": [1, 2, "foo"], - } -}] diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment.hcl deleted file mode 100644 index 1ff7f29fd..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment.hcl +++ /dev/null @@ -1,15 +0,0 @@ -// Foo - -/* Bar */ - -/* -/* -Baz -*/ - -# Another - -# Multiple -# Lines - -foo = "bar" diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment_single.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment_single.hcl deleted file mode 100644 index fec56017d..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/comment_single.hcl +++ /dev/null @@ -1 +0,0 @@ -# Hello diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex.hcl deleted file mode 100644 index cccb5b06f..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex.hcl +++ /dev/null @@ -1,42 +0,0 @@ -// This comes from Terraform, as a test -variable "foo" { - default = "bar" - description = "bar" -} - -provider "aws" { - access_key = "foo" - secret_key = "bar" -} - -provider "do" { - api_key = "${var.foo}" -} - -resource "aws_security_group" "firewall" { - count = 5 -} - -resource aws_instance "web" { - ami = "${var.foo}" - security_groups = [ - "foo", - "${aws_security_group.firewall.foo}" - ] - - network_interface { - device_index = 0 - description = "Main network interface" - } -} - -resource "aws_instance" "db" { - security_groups = "${aws_security_group.firewall.*.id}" - VPC = "foo" - - depends_on = ["aws_instance.web"] -} - -output "web_ip" { - value = "${aws_instance.web.private_ip}" -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex_key.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex_key.hcl deleted file mode 100644 index 0007aaf5f..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/complex_key.hcl +++ /dev/null @@ -1 +0,0 @@ -foo.bar = "baz" diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/empty.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/empty.hcl deleted file mode 100644 index e69de29bb..000000000 diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list.hcl deleted file mode 100644 index 059d4ce65..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list.hcl +++ /dev/null @@ -1 +0,0 @@ -foo = [1, 2, "foo"] diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list_comma.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list_comma.hcl deleted file mode 100644 index 50f4218ac..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/list_comma.hcl +++ /dev/null @@ -1 +0,0 @@ -foo = [1, 2, "foo",] diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/multiple.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/multiple.hcl deleted file mode 100644 index 029c54b0c..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/multiple.hcl +++ /dev/null @@ -1,2 +0,0 @@ -foo = "bar" -key = 7 diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/old.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/old.hcl deleted file mode 100644 index e9f77cae9..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/old.hcl +++ /dev/null @@ -1,3 +0,0 @@ -default = { - "eu-west-1": "ami-b1cf19c6", -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure.hcl deleted file mode 100644 index 92592fbb3..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure.hcl +++ /dev/null @@ -1,5 +0,0 @@ -// This is a test structure for the lexer -foo bar "baz" { - key = 7 - foo = "bar" -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_basic.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_basic.hcl deleted file mode 100644 index 7229a1f01..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_basic.hcl +++ /dev/null @@ -1,5 +0,0 @@ -foo { - value = 7 - "value" = 8 - "complex::value" = 9 -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_empty.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_empty.hcl deleted file mode 100644 index 4d156ddea..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/structure_empty.hcl +++ /dev/null @@ -1 +0,0 @@ -resource "foo" "bar" {} diff --git a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/types.hcl b/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/types.hcl deleted file mode 100644 index cf2747ea1..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/test-fixtures/types.hcl +++ /dev/null @@ -1,7 +0,0 @@ -foo = "bar" -bar = 7 -baz = [1,2,3] -foo = -12 -bar = 3.14159 -foo = true -bar = false diff --git a/vendor/github.com/hashicorp/hcl/hcl/token/position.go b/vendor/github.com/hashicorp/hcl/hcl/token/position.go deleted file mode 100644 index 59c1bb72d..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/token/position.go +++ /dev/null @@ -1,46 +0,0 @@ -package token - -import "fmt" - -// Pos describes an arbitrary source position -// including the file, line, and column location. -// A Position is valid if the line number is > 0. -type Pos struct { - Filename string // filename, if any - Offset int // offset, starting at 0 - Line int // line number, starting at 1 - Column int // column number, starting at 1 (character count) -} - -// IsValid returns true if the position is valid. -func (p *Pos) IsValid() bool { return p.Line > 0 } - -// String returns a string in one of several forms: -// -// file:line:column valid position with file name -// line:column valid position without file name -// file invalid position with file name -// - invalid position without file name -func (p Pos) String() string { - s := p.Filename - if p.IsValid() { - if s != "" { - s += ":" - } - s += fmt.Sprintf("%d:%d", p.Line, p.Column) - } - if s == "" { - s = "-" - } - return s -} - -// Before reports whether the position p is before u. -func (p Pos) Before(u Pos) bool { - return u.Offset > p.Offset || u.Line > p.Line -} - -// After reports whether the position p is after u. -func (p Pos) After(u Pos) bool { - return u.Offset < p.Offset || u.Line < p.Line -} diff --git a/vendor/github.com/hashicorp/hcl/hcl/token/token.go b/vendor/github.com/hashicorp/hcl/hcl/token/token.go deleted file mode 100644 index e37c0664e..000000000 --- a/vendor/github.com/hashicorp/hcl/hcl/token/token.go +++ /dev/null @@ -1,219 +0,0 @@ -// Package token defines constants representing the lexical tokens for HCL -// (HashiCorp Configuration Language) -package token - -import ( - "fmt" - "strconv" - "strings" - - hclstrconv "github.com/hashicorp/hcl/hcl/strconv" -) - -// Token defines a single HCL token which can be obtained via the Scanner -type Token struct { - Type Type - Pos Pos - Text string - JSON bool -} - -// Type is the set of lexical tokens of the HCL (HashiCorp Configuration Language) -type Type int - -const ( - // Special tokens - ILLEGAL Type = iota - EOF - COMMENT - - identifier_beg - IDENT // literals - literal_beg - NUMBER // 12345 - FLOAT // 123.45 - BOOL // true,false - STRING // "abc" - HEREDOC // < 0 { - // Pop the current item - n := len(frontier) - item := frontier[n-1] - frontier = frontier[:n-1] - - switch v := item.Val.(type) { - case *ast.ObjectType: - items, frontier = flattenObjectType(v, item, items, frontier) - case *ast.ListType: - items, frontier = flattenListType(v, item, items, frontier) - default: - items = append(items, item) - } - } - - // Reverse the list since the frontier model runs things backwards - for i := len(items)/2 - 1; i >= 0; i-- { - opp := len(items) - 1 - i - items[i], items[opp] = items[opp], items[i] - } - - // Done! Set the original items - list.Items = items - return n, true - }) -} - -func flattenListType( - ot *ast.ListType, - item *ast.ObjectItem, - items []*ast.ObjectItem, - frontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) { - // If the list is empty, keep the original list - if len(ot.List) == 0 { - items = append(items, item) - return items, frontier - } - - // All the elements of this object must also be objects! - for _, subitem := range ot.List { - if _, ok := subitem.(*ast.ObjectType); !ok { - items = append(items, item) - return items, frontier - } - } - - // Great! We have a match go through all the items and flatten - for _, elem := range ot.List { - // Add it to the frontier so that we can recurse - frontier = append(frontier, &ast.ObjectItem{ - Keys: item.Keys, - Assign: item.Assign, - Val: elem, - LeadComment: item.LeadComment, - LineComment: item.LineComment, - }) - } - - return items, frontier -} - -func flattenObjectType( - ot *ast.ObjectType, - item *ast.ObjectItem, - items []*ast.ObjectItem, - frontier []*ast.ObjectItem) ([]*ast.ObjectItem, []*ast.ObjectItem) { - // If the list has no items we do not have to flatten anything - if ot.List.Items == nil { - items = append(items, item) - return items, frontier - } - - // All the elements of this object must also be objects! - for _, subitem := range ot.List.Items { - if _, ok := subitem.Val.(*ast.ObjectType); !ok { - items = append(items, item) - return items, frontier - } - } - - // Great! We have a match go through all the items and flatten - for _, subitem := range ot.List.Items { - // Copy the new key - keys := make([]*ast.ObjectKey, len(item.Keys)+len(subitem.Keys)) - copy(keys, item.Keys) - copy(keys[len(item.Keys):], subitem.Keys) - - // Add it to the frontier so that we can recurse - frontier = append(frontier, &ast.ObjectItem{ - Keys: keys, - Assign: item.Assign, - Val: subitem.Val, - LeadComment: item.LeadComment, - LineComment: item.LineComment, - }) - } - - return items, frontier -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/parser.go b/vendor/github.com/hashicorp/hcl/json/parser/parser.go deleted file mode 100644 index 125a5f072..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/parser.go +++ /dev/null @@ -1,313 +0,0 @@ -package parser - -import ( - "errors" - "fmt" - - "github.com/hashicorp/hcl/hcl/ast" - hcltoken "github.com/hashicorp/hcl/hcl/token" - "github.com/hashicorp/hcl/json/scanner" - "github.com/hashicorp/hcl/json/token" -) - -type Parser struct { - sc *scanner.Scanner - - // Last read token - tok token.Token - commaPrev token.Token - - enableTrace bool - indent int - n int // buffer size (max = 1) -} - -func newParser(src []byte) *Parser { - return &Parser{ - sc: scanner.New(src), - } -} - -// Parse returns the fully parsed source and returns the abstract syntax tree. -func Parse(src []byte) (*ast.File, error) { - p := newParser(src) - return p.Parse() -} - -var errEofToken = errors.New("EOF token found") - -// Parse returns the fully parsed source and returns the abstract syntax tree. -func (p *Parser) Parse() (*ast.File, error) { - f := &ast.File{} - var err, scerr error - p.sc.Error = func(pos token.Pos, msg string) { - scerr = fmt.Errorf("%s: %s", pos, msg) - } - - // The root must be an object in JSON - object, err := p.object() - if scerr != nil { - return nil, scerr - } - if err != nil { - return nil, err - } - - // We make our final node an object list so it is more HCL compatible - f.Node = object.List - - // Flatten it, which finds patterns and turns them into more HCL-like - // AST trees. - flattenObjects(f.Node) - - return f, nil -} - -func (p *Parser) objectList() (*ast.ObjectList, error) { - defer un(trace(p, "ParseObjectList")) - node := &ast.ObjectList{} - - for { - n, err := p.objectItem() - if err == errEofToken { - break // we are finished - } - - // we don't return a nil node, because might want to use already - // collected items. - if err != nil { - return node, err - } - - node.Add(n) - - // Check for a followup comma. If it isn't a comma, then we're done - if tok := p.scan(); tok.Type != token.COMMA { - break - } - } - - return node, nil -} - -// objectItem parses a single object item -func (p *Parser) objectItem() (*ast.ObjectItem, error) { - defer un(trace(p, "ParseObjectItem")) - - keys, err := p.objectKey() - if err != nil { - return nil, err - } - - o := &ast.ObjectItem{ - Keys: keys, - } - - switch p.tok.Type { - case token.COLON: - pos := p.tok.Pos - o.Assign = hcltoken.Pos{ - Filename: pos.Filename, - Offset: pos.Offset, - Line: pos.Line, - Column: pos.Column, - } - - o.Val, err = p.objectValue() - if err != nil { - return nil, err - } - } - - return o, nil -} - -// objectKey parses an object key and returns a ObjectKey AST -func (p *Parser) objectKey() ([]*ast.ObjectKey, error) { - keyCount := 0 - keys := make([]*ast.ObjectKey, 0) - - for { - tok := p.scan() - switch tok.Type { - case token.EOF: - return nil, errEofToken - case token.STRING: - keyCount++ - keys = append(keys, &ast.ObjectKey{ - Token: p.tok.HCLToken(), - }) - case token.COLON: - // If we have a zero keycount it means that we never got - // an object key, i.e. `{ :`. This is a syntax error. - if keyCount == 0 { - return nil, fmt.Errorf("expected: STRING got: %s", p.tok.Type) - } - - // Done - return keys, nil - case token.ILLEGAL: - return nil, errors.New("illegal") - default: - return nil, fmt.Errorf("expected: STRING got: %s", p.tok.Type) - } - } -} - -// object parses any type of object, such as number, bool, string, object or -// list. -func (p *Parser) objectValue() (ast.Node, error) { - defer un(trace(p, "ParseObjectValue")) - tok := p.scan() - - switch tok.Type { - case token.NUMBER, token.FLOAT, token.BOOL, token.NULL, token.STRING: - return p.literalType() - case token.LBRACE: - return p.objectType() - case token.LBRACK: - return p.listType() - case token.EOF: - return nil, errEofToken - } - - return nil, fmt.Errorf("Expected object value, got unknown token: %+v", tok) -} - -// object parses any type of object, such as number, bool, string, object or -// list. -func (p *Parser) object() (*ast.ObjectType, error) { - defer un(trace(p, "ParseType")) - tok := p.scan() - - switch tok.Type { - case token.LBRACE: - return p.objectType() - case token.EOF: - return nil, errEofToken - } - - return nil, fmt.Errorf("Expected object, got unknown token: %+v", tok) -} - -// objectType parses an object type and returns a ObjectType AST -func (p *Parser) objectType() (*ast.ObjectType, error) { - defer un(trace(p, "ParseObjectType")) - - // we assume that the currently scanned token is a LBRACE - o := &ast.ObjectType{} - - l, err := p.objectList() - - // if we hit RBRACE, we are good to go (means we parsed all Items), if it's - // not a RBRACE, it's an syntax error and we just return it. - if err != nil && p.tok.Type != token.RBRACE { - return nil, err - } - - o.List = l - return o, nil -} - -// listType parses a list type and returns a ListType AST -func (p *Parser) listType() (*ast.ListType, error) { - defer un(trace(p, "ParseListType")) - - // we assume that the currently scanned token is a LBRACK - l := &ast.ListType{} - - for { - tok := p.scan() - switch tok.Type { - case token.NUMBER, token.FLOAT, token.STRING: - node, err := p.literalType() - if err != nil { - return nil, err - } - - l.Add(node) - case token.COMMA: - continue - case token.LBRACE: - node, err := p.objectType() - if err != nil { - return nil, err - } - - l.Add(node) - case token.BOOL: - // TODO(arslan) should we support? not supported by HCL yet - case token.LBRACK: - // TODO(arslan) should we support nested lists? Even though it's - // written in README of HCL, it's not a part of the grammar - // (not defined in parse.y) - case token.RBRACK: - // finished - return l, nil - default: - return nil, fmt.Errorf("unexpected token while parsing list: %s", tok.Type) - } - - } -} - -// literalType parses a literal type and returns a LiteralType AST -func (p *Parser) literalType() (*ast.LiteralType, error) { - defer un(trace(p, "ParseLiteral")) - - return &ast.LiteralType{ - Token: p.tok.HCLToken(), - }, nil -} - -// scan returns the next token from the underlying scanner. If a token has -// been unscanned then read that instead. -func (p *Parser) scan() token.Token { - // If we have a token on the buffer, then return it. - if p.n != 0 { - p.n = 0 - return p.tok - } - - p.tok = p.sc.Scan() - return p.tok -} - -// unscan pushes the previously read token back onto the buffer. -func (p *Parser) unscan() { - p.n = 1 -} - -// ---------------------------------------------------------------------------- -// Parsing support - -func (p *Parser) printTrace(a ...interface{}) { - if !p.enableTrace { - return - } - - const dots = ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " - const n = len(dots) - fmt.Printf("%5d:%3d: ", p.tok.Pos.Line, p.tok.Pos.Column) - - i := 2 * p.indent - for i > n { - fmt.Print(dots) - i -= n - } - // i <= n - fmt.Print(dots[0:i]) - fmt.Println(a...) -} - -func trace(p *Parser, msg string) *Parser { - p.printTrace(msg, "(") - p.indent++ - return p -} - -// Usage pattern: defer un(trace(p, "...")) -func un(p *Parser) { - p.indent-- - p.printTrace(")") -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/parser_test.go b/vendor/github.com/hashicorp/hcl/json/parser/parser_test.go deleted file mode 100644 index e0cebf50a..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/parser_test.go +++ /dev/null @@ -1,384 +0,0 @@ -package parser - -import ( - "fmt" - "io/ioutil" - "path/filepath" - "reflect" - "runtime" - "testing" - - "github.com/hashicorp/hcl/hcl/ast" - "github.com/hashicorp/hcl/hcl/token" -) - -func TestType(t *testing.T) { - var literals = []struct { - typ token.Type - src string - }{ - {token.STRING, `"foo": "bar"`}, - {token.NUMBER, `"foo": 123`}, - {token.FLOAT, `"foo": 123.12`}, - {token.FLOAT, `"foo": -123.12`}, - {token.BOOL, `"foo": true`}, - {token.STRING, `"foo": null`}, - } - - for _, l := range literals { - t.Logf("Testing: %s", l.src) - - p := newParser([]byte(l.src)) - item, err := p.objectItem() - if err != nil { - t.Error(err) - } - - lit, ok := item.Val.(*ast.LiteralType) - if !ok { - t.Errorf("node should be of type LiteralType, got: %T", item.Val) - } - - if lit.Token.Type != l.typ { - t.Errorf("want: %s, got: %s", l.typ, lit.Token.Type) - } - } -} - -func TestListType(t *testing.T) { - var literals = []struct { - src string - tokens []token.Type - }{ - { - `"foo": ["123", 123]`, - []token.Type{token.STRING, token.NUMBER}, - }, - { - `"foo": [123, "123",]`, - []token.Type{token.NUMBER, token.STRING}, - }, - { - `"foo": []`, - []token.Type{}, - }, - { - `"foo": ["123", 123]`, - []token.Type{token.STRING, token.NUMBER}, - }, - { - `"foo": ["123", {}]`, - []token.Type{token.STRING, token.LBRACE}, - }, - } - - for _, l := range literals { - t.Logf("Testing: %s", l.src) - - p := newParser([]byte(l.src)) - item, err := p.objectItem() - if err != nil { - t.Error(err) - } - - list, ok := item.Val.(*ast.ListType) - if !ok { - t.Errorf("node should be of type LiteralType, got: %T", item.Val) - } - - tokens := []token.Type{} - for _, li := range list.List { - switch v := li.(type) { - case *ast.LiteralType: - tokens = append(tokens, v.Token.Type) - case *ast.ObjectType: - tokens = append(tokens, token.LBRACE) - } - } - - equals(t, l.tokens, tokens) - } -} - -func TestObjectType(t *testing.T) { - var literals = []struct { - src string - nodeType []ast.Node - itemLen int - }{ - { - `"foo": {}`, - nil, - 0, - }, - { - `"foo": { - "bar": "fatih" - }`, - []ast.Node{&ast.LiteralType{}}, - 1, - }, - { - `"foo": { - "bar": "fatih", - "baz": ["arslan"] - }`, - []ast.Node{ - &ast.LiteralType{}, - &ast.ListType{}, - }, - 2, - }, - { - `"foo": { - "bar": {} - }`, - []ast.Node{ - &ast.ObjectType{}, - }, - 1, - }, - { - `"foo": { - "bar": {}, - "foo": true - }`, - []ast.Node{ - &ast.ObjectType{}, - &ast.LiteralType{}, - }, - 2, - }, - } - - for _, l := range literals { - t.Logf("Testing:\n%s\n", l.src) - - p := newParser([]byte(l.src)) - // p.enableTrace = true - item, err := p.objectItem() - if err != nil { - t.Error(err) - } - - // we know that the ObjectKey name is foo for all cases, what matters - // is the object - obj, ok := item.Val.(*ast.ObjectType) - if !ok { - t.Errorf("node should be of type LiteralType, got: %T", item.Val) - } - - // check if the total length of items are correct - equals(t, l.itemLen, len(obj.List.Items)) - - // check if the types are correct - for i, item := range obj.List.Items { - equals(t, reflect.TypeOf(l.nodeType[i]), reflect.TypeOf(item.Val)) - } - } -} - -func TestFlattenObjects(t *testing.T) { - var literals = []struct { - src string - nodeType []ast.Node - itemLen int - }{ - { - `{ - "foo": [ - { - "foo": "svh", - "bar": "fatih" - } - ] - }`, - []ast.Node{ - &ast.ObjectType{}, - &ast.LiteralType{}, - &ast.LiteralType{}, - }, - 3, - }, - { - `{ - "variable": { - "foo": {} - } - }`, - []ast.Node{ - &ast.ObjectType{}, - }, - 1, - }, - { - `{ - "empty": [] - }`, - []ast.Node{ - &ast.ListType{}, - }, - 1, - }, - { - `{ - "basic": [1, 2, 3] - }`, - []ast.Node{ - &ast.ListType{}, - }, - 1, - }, - } - - for _, l := range literals { - t.Logf("Testing:\n%s\n", l.src) - - f, err := Parse([]byte(l.src)) - if err != nil { - t.Error(err) - } - - // the first object is always an ObjectList so just assert that one - // so we can use it as such - obj, ok := f.Node.(*ast.ObjectList) - if !ok { - t.Errorf("node should be *ast.ObjectList, got: %T", f.Node) - } - - // check if the types are correct - var i int - for _, item := range obj.Items { - equals(t, reflect.TypeOf(l.nodeType[i]), reflect.TypeOf(item.Val)) - i++ - - if obj, ok := item.Val.(*ast.ObjectType); ok { - for _, item := range obj.List.Items { - equals(t, reflect.TypeOf(l.nodeType[i]), reflect.TypeOf(item.Val)) - i++ - } - } - } - - // check if the number of items is correct - equals(t, l.itemLen, i) - - } -} - -func TestObjectKey(t *testing.T) { - keys := []struct { - exp []token.Type - src string - }{ - {[]token.Type{token.STRING}, `"foo": {}`}, - } - - for _, k := range keys { - p := newParser([]byte(k.src)) - keys, err := p.objectKey() - if err != nil { - t.Fatal(err) - } - - tokens := []token.Type{} - for _, o := range keys { - tokens = append(tokens, o.Token.Type) - } - - equals(t, k.exp, tokens) - } - - errKeys := []struct { - src string - }{ - {`foo 12 {}`}, - {`foo bar = {}`}, - {`foo []`}, - {`12 {}`}, - } - - for _, k := range errKeys { - p := newParser([]byte(k.src)) - _, err := p.objectKey() - if err == nil { - t.Errorf("case '%s' should give an error", k.src) - } - } -} - -// Official HCL tests -func TestParse(t *testing.T) { - cases := []struct { - Name string - Err bool - }{ - { - "array.json", - false, - }, - { - "basic.json", - false, - }, - { - "object.json", - false, - }, - { - "types.json", - false, - }, - { - "bad_input_128.json", - true, - }, - { - "bad_input_tf_8110.json", - true, - }, - { - "good_input_tf_8110.json", - false, - }, - } - - const fixtureDir = "./test-fixtures" - - for _, tc := range cases { - d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.Name)) - if err != nil { - t.Fatalf("err: %s", err) - } - - _, err = Parse(d) - if (err != nil) != tc.Err { - t.Fatalf("Input: %s\n\nError: %s", tc.Name, err) - } - } -} - -func TestParse_inline(t *testing.T) { - cases := []struct { - Value string - Err bool - }{ - {"{:{", true}, - } - - for _, tc := range cases { - _, err := Parse([]byte(tc.Value)) - if (err != nil) != tc.Err { - t.Fatalf("Input: %q\n\nError: %s", tc.Value, err) - } - } -} - -// equals fails the test if exp is not equal to act. -func equals(tb testing.TB, exp, act interface{}) { - if !reflect.DeepEqual(exp, act) { - _, file, line, _ := runtime.Caller(1) - fmt.Printf("\033[31m%s:%d:\n\n\texp: %s\n\n\tgot: %s\033[39m\n\n", filepath.Base(file), line, exp, act) - tb.FailNow() - } -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/array.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/array.json deleted file mode 100644 index e320f17ab..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/array.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "foo": [1, 2, "bar"], - "bar": "baz" -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_128.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_128.json deleted file mode 100644 index b5f850c96..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_128.json +++ /dev/null @@ -1 +0,0 @@ -{:{ diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_tf_8110.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_tf_8110.json deleted file mode 100644 index a04385833..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/bad_input_tf_8110.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variable": { - "poc": { - "default": "${replace("europe-west", "-", " ")}" - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/basic.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/basic.json deleted file mode 100644 index b54bde96c..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/basic.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "foo": "bar" -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/good_input_tf_8110.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/good_input_tf_8110.json deleted file mode 100644 index f21aa090d..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/good_input_tf_8110.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variable": { - "poc": { - "default": "${replace(\"europe-west\", \"-\", \" \")}" - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/object.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/object.json deleted file mode 100644 index 72168a3cc..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/object.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "foo": { - "bar": [1,2] - } -} diff --git a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/types.json b/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/types.json deleted file mode 100644 index 9a142a6ca..000000000 --- a/vendor/github.com/hashicorp/hcl/json/parser/test-fixtures/types.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "foo": "bar", - "bar": 7, - "baz": [1,2,3], - "foo": -12, - "bar": 3.14159, - "foo": true, - "bar": false, - "foo": null -} diff --git a/vendor/github.com/hashicorp/hcl/json/scanner/scanner.go b/vendor/github.com/hashicorp/hcl/json/scanner/scanner.go deleted file mode 100644 index dd5c72bb3..000000000 --- a/vendor/github.com/hashicorp/hcl/json/scanner/scanner.go +++ /dev/null @@ -1,451 +0,0 @@ -package scanner - -import ( - "bytes" - "fmt" - "os" - "unicode" - "unicode/utf8" - - "github.com/hashicorp/hcl/json/token" -) - -// eof represents a marker rune for the end of the reader. -const eof = rune(0) - -// Scanner defines a lexical scanner -type Scanner struct { - buf *bytes.Buffer // Source buffer for advancing and scanning - src []byte // Source buffer for immutable access - - // Source Position - srcPos token.Pos // current position - prevPos token.Pos // previous position, used for peek() method - - lastCharLen int // length of last character in bytes - lastLineLen int // length of last line in characters (for correct column reporting) - - tokStart int // token text start position - tokEnd int // token text end position - - // Error is called for each error encountered. If no Error - // function is set, the error is reported to os.Stderr. - Error func(pos token.Pos, msg string) - - // ErrorCount is incremented by one for each error encountered. - ErrorCount int - - // tokPos is the start position of most recently scanned token; set by - // Scan. The Filename field is always left untouched by the Scanner. If - // an error is reported (via Error) and Position is invalid, the scanner is - // not inside a token. - tokPos token.Pos -} - -// New creates and initializes a new instance of Scanner using src as -// its source content. -func New(src []byte) *Scanner { - // even though we accept a src, we read from a io.Reader compatible type - // (*bytes.Buffer). So in the future we might easily change it to streaming - // read. - b := bytes.NewBuffer(src) - s := &Scanner{ - buf: b, - src: src, - } - - // srcPosition always starts with 1 - s.srcPos.Line = 1 - return s -} - -// next reads the next rune from the bufferred reader. Returns the rune(0) if -// an error occurs (or io.EOF is returned). -func (s *Scanner) next() rune { - ch, size, err := s.buf.ReadRune() - if err != nil { - // advance for error reporting - s.srcPos.Column++ - s.srcPos.Offset += size - s.lastCharLen = size - return eof - } - - if ch == utf8.RuneError && size == 1 { - s.srcPos.Column++ - s.srcPos.Offset += size - s.lastCharLen = size - s.err("illegal UTF-8 encoding") - return ch - } - - // remember last position - s.prevPos = s.srcPos - - s.srcPos.Column++ - s.lastCharLen = size - s.srcPos.Offset += size - - if ch == '\n' { - s.srcPos.Line++ - s.lastLineLen = s.srcPos.Column - s.srcPos.Column = 0 - } - - // debug - // fmt.Printf("ch: %q, offset:column: %d:%d\n", ch, s.srcPos.Offset, s.srcPos.Column) - return ch -} - -// unread unreads the previous read Rune and updates the source position -func (s *Scanner) unread() { - if err := s.buf.UnreadRune(); err != nil { - panic(err) // this is user fault, we should catch it - } - s.srcPos = s.prevPos // put back last position -} - -// peek returns the next rune without advancing the reader. -func (s *Scanner) peek() rune { - peek, _, err := s.buf.ReadRune() - if err != nil { - return eof - } - - s.buf.UnreadRune() - return peek -} - -// Scan scans the next token and returns the token. -func (s *Scanner) Scan() token.Token { - ch := s.next() - - // skip white space - for isWhitespace(ch) { - ch = s.next() - } - - var tok token.Type - - // token text markings - s.tokStart = s.srcPos.Offset - s.lastCharLen - - // token position, initial next() is moving the offset by one(size of rune - // actually), though we are interested with the starting point - s.tokPos.Offset = s.srcPos.Offset - s.lastCharLen - if s.srcPos.Column > 0 { - // common case: last character was not a '\n' - s.tokPos.Line = s.srcPos.Line - s.tokPos.Column = s.srcPos.Column - } else { - // last character was a '\n' - // (we cannot be at the beginning of the source - // since we have called next() at least once) - s.tokPos.Line = s.srcPos.Line - 1 - s.tokPos.Column = s.lastLineLen - } - - switch { - case isLetter(ch): - lit := s.scanIdentifier() - if lit == "true" || lit == "false" { - tok = token.BOOL - } else if lit == "null" { - tok = token.NULL - } else { - s.err("illegal char") - } - case isDecimal(ch): - tok = s.scanNumber(ch) - default: - switch ch { - case eof: - tok = token.EOF - case '"': - tok = token.STRING - s.scanString() - case '.': - tok = token.PERIOD - ch = s.peek() - if isDecimal(ch) { - tok = token.FLOAT - ch = s.scanMantissa(ch) - ch = s.scanExponent(ch) - } - case '[': - tok = token.LBRACK - case ']': - tok = token.RBRACK - case '{': - tok = token.LBRACE - case '}': - tok = token.RBRACE - case ',': - tok = token.COMMA - case ':': - tok = token.COLON - case '-': - if isDecimal(s.peek()) { - ch := s.next() - tok = s.scanNumber(ch) - } else { - s.err("illegal char") - } - default: - s.err("illegal char: " + string(ch)) - } - } - - // finish token ending - s.tokEnd = s.srcPos.Offset - - // create token literal - var tokenText string - if s.tokStart >= 0 { - tokenText = string(s.src[s.tokStart:s.tokEnd]) - } - s.tokStart = s.tokEnd // ensure idempotency of tokenText() call - - return token.Token{ - Type: tok, - Pos: s.tokPos, - Text: tokenText, - } -} - -// scanNumber scans a HCL number definition starting with the given rune -func (s *Scanner) scanNumber(ch rune) token.Type { - zero := ch == '0' - pos := s.srcPos - - s.scanMantissa(ch) - ch = s.next() // seek forward - if ch == 'e' || ch == 'E' { - ch = s.scanExponent(ch) - return token.FLOAT - } - - if ch == '.' { - ch = s.scanFraction(ch) - if ch == 'e' || ch == 'E' { - ch = s.next() - ch = s.scanExponent(ch) - } - return token.FLOAT - } - - if ch != eof { - s.unread() - } - - // If we have a larger number and this is zero, error - if zero && pos != s.srcPos { - s.err("numbers cannot start with 0") - } - - return token.NUMBER -} - -// scanMantissa scans the mantissa begining from the rune. It returns the next -// non decimal rune. It's used to determine wheter it's a fraction or exponent. -func (s *Scanner) scanMantissa(ch rune) rune { - scanned := false - for isDecimal(ch) { - ch = s.next() - scanned = true - } - - if scanned && ch != eof { - s.unread() - } - return ch -} - -// scanFraction scans the fraction after the '.' rune -func (s *Scanner) scanFraction(ch rune) rune { - if ch == '.' { - ch = s.peek() // we peek just to see if we can move forward - ch = s.scanMantissa(ch) - } - return ch -} - -// scanExponent scans the remaining parts of an exponent after the 'e' or 'E' -// rune. -func (s *Scanner) scanExponent(ch rune) rune { - if ch == 'e' || ch == 'E' { - ch = s.next() - if ch == '-' || ch == '+' { - ch = s.next() - } - ch = s.scanMantissa(ch) - } - return ch -} - -// scanString scans a quoted string -func (s *Scanner) scanString() { - braces := 0 - for { - // '"' opening already consumed - // read character after quote - ch := s.next() - - if ch == '\n' || ch < 0 || ch == eof { - s.err("literal not terminated") - return - } - - if ch == '"' { - break - } - - // If we're going into a ${} then we can ignore quotes for awhile - if braces == 0 && ch == '$' && s.peek() == '{' { - braces++ - s.next() - } else if braces > 0 && ch == '{' { - braces++ - } - if braces > 0 && ch == '}' { - braces-- - } - - if ch == '\\' { - s.scanEscape() - } - } - - return -} - -// scanEscape scans an escape sequence -func (s *Scanner) scanEscape() rune { - // http://en.cppreference.com/w/cpp/language/escape - ch := s.next() // read character after '/' - switch ch { - case 'a', 'b', 'f', 'n', 'r', 't', 'v', '\\', '"': - // nothing to do - case '0', '1', '2', '3', '4', '5', '6', '7': - // octal notation - ch = s.scanDigits(ch, 8, 3) - case 'x': - // hexademical notation - ch = s.scanDigits(s.next(), 16, 2) - case 'u': - // universal character name - ch = s.scanDigits(s.next(), 16, 4) - case 'U': - // universal character name - ch = s.scanDigits(s.next(), 16, 8) - default: - s.err("illegal char escape") - } - return ch -} - -// scanDigits scans a rune with the given base for n times. For example an -// octal notation \184 would yield in scanDigits(ch, 8, 3) -func (s *Scanner) scanDigits(ch rune, base, n int) rune { - for n > 0 && digitVal(ch) < base { - ch = s.next() - n-- - } - if n > 0 { - s.err("illegal char escape") - } - - // we scanned all digits, put the last non digit char back - s.unread() - return ch -} - -// scanIdentifier scans an identifier and returns the literal string -func (s *Scanner) scanIdentifier() string { - offs := s.srcPos.Offset - s.lastCharLen - ch := s.next() - for isLetter(ch) || isDigit(ch) || ch == '-' { - ch = s.next() - } - - if ch != eof { - s.unread() // we got identifier, put back latest char - } - - return string(s.src[offs:s.srcPos.Offset]) -} - -// recentPosition returns the position of the character immediately after the -// character or token returned by the last call to Scan. -func (s *Scanner) recentPosition() (pos token.Pos) { - pos.Offset = s.srcPos.Offset - s.lastCharLen - switch { - case s.srcPos.Column > 0: - // common case: last character was not a '\n' - pos.Line = s.srcPos.Line - pos.Column = s.srcPos.Column - case s.lastLineLen > 0: - // last character was a '\n' - // (we cannot be at the beginning of the source - // since we have called next() at least once) - pos.Line = s.srcPos.Line - 1 - pos.Column = s.lastLineLen - default: - // at the beginning of the source - pos.Line = 1 - pos.Column = 1 - } - return -} - -// err prints the error of any scanning to s.Error function. If the function is -// not defined, by default it prints them to os.Stderr -func (s *Scanner) err(msg string) { - s.ErrorCount++ - pos := s.recentPosition() - - if s.Error != nil { - s.Error(pos, msg) - return - } - - fmt.Fprintf(os.Stderr, "%s: %s\n", pos, msg) -} - -// isHexadecimal returns true if the given rune is a letter -func isLetter(ch rune) bool { - return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= 0x80 && unicode.IsLetter(ch) -} - -// isHexadecimal returns true if the given rune is a decimal digit -func isDigit(ch rune) bool { - return '0' <= ch && ch <= '9' || ch >= 0x80 && unicode.IsDigit(ch) -} - -// isHexadecimal returns true if the given rune is a decimal number -func isDecimal(ch rune) bool { - return '0' <= ch && ch <= '9' -} - -// isHexadecimal returns true if the given rune is an hexadecimal number -func isHexadecimal(ch rune) bool { - return '0' <= ch && ch <= '9' || 'a' <= ch && ch <= 'f' || 'A' <= ch && ch <= 'F' -} - -// isWhitespace returns true if the rune is a space, tab, newline or carriage return -func isWhitespace(ch rune) bool { - return ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r' -} - -// digitVal returns the integer value of a given octal,decimal or hexadecimal rune -func digitVal(ch rune) int { - switch { - case '0' <= ch && ch <= '9': - return int(ch - '0') - case 'a' <= ch && ch <= 'f': - return int(ch - 'a' + 10) - case 'A' <= ch && ch <= 'F': - return int(ch - 'A' + 10) - } - return 16 // larger than any legal digit val -} diff --git a/vendor/github.com/hashicorp/hcl/json/scanner/scanner_test.go b/vendor/github.com/hashicorp/hcl/json/scanner/scanner_test.go deleted file mode 100644 index 3033a5797..000000000 --- a/vendor/github.com/hashicorp/hcl/json/scanner/scanner_test.go +++ /dev/null @@ -1,362 +0,0 @@ -package scanner - -import ( - "bytes" - "fmt" - "testing" - - "github.com/hashicorp/hcl/json/token" -) - -var f100 = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" - -type tokenPair struct { - tok token.Type - text string -} - -var tokenLists = map[string][]tokenPair{ - "operator": []tokenPair{ - {token.LBRACK, "["}, - {token.LBRACE, "{"}, - {token.COMMA, ","}, - {token.PERIOD, "."}, - {token.RBRACK, "]"}, - {token.RBRACE, "}"}, - }, - "bool": []tokenPair{ - {token.BOOL, "true"}, - {token.BOOL, "false"}, - }, - "string": []tokenPair{ - {token.STRING, `" "`}, - {token.STRING, `"a"`}, - {token.STRING, `"本"`}, - {token.STRING, `"${file(\"foo\")}"`}, - {token.STRING, `"\a"`}, - {token.STRING, `"\b"`}, - {token.STRING, `"\f"`}, - {token.STRING, `"\n"`}, - {token.STRING, `"\r"`}, - {token.STRING, `"\t"`}, - {token.STRING, `"\v"`}, - {token.STRING, `"\""`}, - {token.STRING, `"\000"`}, - {token.STRING, `"\777"`}, - {token.STRING, `"\x00"`}, - {token.STRING, `"\xff"`}, - {token.STRING, `"\u0000"`}, - {token.STRING, `"\ufA16"`}, - {token.STRING, `"\U00000000"`}, - {token.STRING, `"\U0000ffAB"`}, - {token.STRING, `"` + f100 + `"`}, - }, - "number": []tokenPair{ - {token.NUMBER, "0"}, - {token.NUMBER, "1"}, - {token.NUMBER, "9"}, - {token.NUMBER, "42"}, - {token.NUMBER, "1234567890"}, - {token.NUMBER, "-0"}, - {token.NUMBER, "-1"}, - {token.NUMBER, "-9"}, - {token.NUMBER, "-42"}, - {token.NUMBER, "-1234567890"}, - }, - "float": []tokenPair{ - {token.FLOAT, "0."}, - {token.FLOAT, "1."}, - {token.FLOAT, "42."}, - {token.FLOAT, "01234567890."}, - {token.FLOAT, ".0"}, - {token.FLOAT, ".1"}, - {token.FLOAT, ".42"}, - {token.FLOAT, ".0123456789"}, - {token.FLOAT, "0.0"}, - {token.FLOAT, "1.0"}, - {token.FLOAT, "42.0"}, - {token.FLOAT, "01234567890.0"}, - {token.FLOAT, "0e0"}, - {token.FLOAT, "1e0"}, - {token.FLOAT, "42e0"}, - {token.FLOAT, "01234567890e0"}, - {token.FLOAT, "0E0"}, - {token.FLOAT, "1E0"}, - {token.FLOAT, "42E0"}, - {token.FLOAT, "01234567890E0"}, - {token.FLOAT, "0e+10"}, - {token.FLOAT, "1e-10"}, - {token.FLOAT, "42e+10"}, - {token.FLOAT, "01234567890e-10"}, - {token.FLOAT, "0E+10"}, - {token.FLOAT, "1E-10"}, - {token.FLOAT, "42E+10"}, - {token.FLOAT, "01234567890E-10"}, - {token.FLOAT, "01.8e0"}, - {token.FLOAT, "1.4e0"}, - {token.FLOAT, "42.2e0"}, - {token.FLOAT, "01234567890.12e0"}, - {token.FLOAT, "0.E0"}, - {token.FLOAT, "1.12E0"}, - {token.FLOAT, "42.123E0"}, - {token.FLOAT, "01234567890.213E0"}, - {token.FLOAT, "0.2e+10"}, - {token.FLOAT, "1.2e-10"}, - {token.FLOAT, "42.54e+10"}, - {token.FLOAT, "01234567890.98e-10"}, - {token.FLOAT, "0.1E+10"}, - {token.FLOAT, "1.1E-10"}, - {token.FLOAT, "42.1E+10"}, - {token.FLOAT, "01234567890.1E-10"}, - {token.FLOAT, "-0.0"}, - {token.FLOAT, "-1.0"}, - {token.FLOAT, "-42.0"}, - {token.FLOAT, "-01234567890.0"}, - {token.FLOAT, "-0e0"}, - {token.FLOAT, "-1e0"}, - {token.FLOAT, "-42e0"}, - {token.FLOAT, "-01234567890e0"}, - {token.FLOAT, "-0E0"}, - {token.FLOAT, "-1E0"}, - {token.FLOAT, "-42E0"}, - {token.FLOAT, "-01234567890E0"}, - {token.FLOAT, "-0e+10"}, - {token.FLOAT, "-1e-10"}, - {token.FLOAT, "-42e+10"}, - {token.FLOAT, "-01234567890e-10"}, - {token.FLOAT, "-0E+10"}, - {token.FLOAT, "-1E-10"}, - {token.FLOAT, "-42E+10"}, - {token.FLOAT, "-01234567890E-10"}, - {token.FLOAT, "-01.8e0"}, - {token.FLOAT, "-1.4e0"}, - {token.FLOAT, "-42.2e0"}, - {token.FLOAT, "-01234567890.12e0"}, - {token.FLOAT, "-0.E0"}, - {token.FLOAT, "-1.12E0"}, - {token.FLOAT, "-42.123E0"}, - {token.FLOAT, "-01234567890.213E0"}, - {token.FLOAT, "-0.2e+10"}, - {token.FLOAT, "-1.2e-10"}, - {token.FLOAT, "-42.54e+10"}, - {token.FLOAT, "-01234567890.98e-10"}, - {token.FLOAT, "-0.1E+10"}, - {token.FLOAT, "-1.1E-10"}, - {token.FLOAT, "-42.1E+10"}, - {token.FLOAT, "-01234567890.1E-10"}, - }, -} - -var orderedTokenLists = []string{ - "comment", - "operator", - "bool", - "string", - "number", - "float", -} - -func TestPosition(t *testing.T) { - // create artifical source code - buf := new(bytes.Buffer) - - for _, listName := range orderedTokenLists { - for _, ident := range tokenLists[listName] { - fmt.Fprintf(buf, "\t\t\t\t%s\n", ident.text) - } - } - - s := New(buf.Bytes()) - - pos := token.Pos{"", 4, 1, 5} - s.Scan() - for _, listName := range orderedTokenLists { - - for _, k := range tokenLists[listName] { - curPos := s.tokPos - // fmt.Printf("[%q] s = %+v:%+v\n", k.text, curPos.Offset, curPos.Column) - - if curPos.Offset != pos.Offset { - t.Fatalf("offset = %d, want %d for %q", curPos.Offset, pos.Offset, k.text) - } - if curPos.Line != pos.Line { - t.Fatalf("line = %d, want %d for %q", curPos.Line, pos.Line, k.text) - } - if curPos.Column != pos.Column { - t.Fatalf("column = %d, want %d for %q", curPos.Column, pos.Column, k.text) - } - pos.Offset += 4 + len(k.text) + 1 // 4 tabs + token bytes + newline - pos.Line += countNewlines(k.text) + 1 // each token is on a new line - - s.Error = func(pos token.Pos, msg string) { - t.Errorf("error %q for %q", msg, k.text) - } - - s.Scan() - } - } - // make sure there were no token-internal errors reported by scanner - if s.ErrorCount != 0 { - t.Errorf("%d errors", s.ErrorCount) - } -} - -func TestComment(t *testing.T) { - testTokenList(t, tokenLists["comment"]) -} - -func TestOperator(t *testing.T) { - testTokenList(t, tokenLists["operator"]) -} - -func TestBool(t *testing.T) { - testTokenList(t, tokenLists["bool"]) -} - -func TestIdent(t *testing.T) { - testTokenList(t, tokenLists["ident"]) -} - -func TestString(t *testing.T) { - testTokenList(t, tokenLists["string"]) -} - -func TestNumber(t *testing.T) { - testTokenList(t, tokenLists["number"]) -} - -func TestFloat(t *testing.T) { - testTokenList(t, tokenLists["float"]) -} - -func TestRealExample(t *testing.T) { - complexReal := ` -{ - "variable": { - "foo": { - "default": "bar", - "description": "bar", - "depends_on": ["something"] - } - } -}` - - literals := []struct { - tokenType token.Type - literal string - }{ - {token.LBRACE, `{`}, - {token.STRING, `"variable"`}, - {token.COLON, `:`}, - {token.LBRACE, `{`}, - {token.STRING, `"foo"`}, - {token.COLON, `:`}, - {token.LBRACE, `{`}, - {token.STRING, `"default"`}, - {token.COLON, `:`}, - {token.STRING, `"bar"`}, - {token.COMMA, `,`}, - {token.STRING, `"description"`}, - {token.COLON, `:`}, - {token.STRING, `"bar"`}, - {token.COMMA, `,`}, - {token.STRING, `"depends_on"`}, - {token.COLON, `:`}, - {token.LBRACK, `[`}, - {token.STRING, `"something"`}, - {token.RBRACK, `]`}, - {token.RBRACE, `}`}, - {token.RBRACE, `}`}, - {token.RBRACE, `}`}, - {token.EOF, ``}, - } - - s := New([]byte(complexReal)) - for _, l := range literals { - tok := s.Scan() - if l.tokenType != tok.Type { - t.Errorf("got: %s want %s for %s\n", tok, l.tokenType, tok.String()) - } - - if l.literal != tok.Text { - t.Errorf("got: %s want %s\n", tok, l.literal) - } - } - -} - -func TestError(t *testing.T) { - testError(t, "\x80", "1:1", "illegal UTF-8 encoding", token.ILLEGAL) - testError(t, "\xff", "1:1", "illegal UTF-8 encoding", token.ILLEGAL) - - testError(t, `"ab`+"\x80", "1:4", "illegal UTF-8 encoding", token.STRING) - testError(t, `"abc`+"\xff", "1:5", "illegal UTF-8 encoding", token.STRING) - - testError(t, `01238`, "1:7", "numbers cannot start with 0", token.NUMBER) - testError(t, `01238123`, "1:10", "numbers cannot start with 0", token.NUMBER) - testError(t, `'aa'`, "1:1", "illegal char: '", token.ILLEGAL) - - testError(t, `"`, "1:2", "literal not terminated", token.STRING) - testError(t, `"abc`, "1:5", "literal not terminated", token.STRING) - testError(t, `"abc`+"\n", "1:5", "literal not terminated", token.STRING) -} - -func testError(t *testing.T, src, pos, msg string, tok token.Type) { - s := New([]byte(src)) - - errorCalled := false - s.Error = func(p token.Pos, m string) { - if !errorCalled { - if pos != p.String() { - t.Errorf("pos = %q, want %q for %q", p, pos, src) - } - - if m != msg { - t.Errorf("msg = %q, want %q for %q", m, msg, src) - } - errorCalled = true - } - } - - tk := s.Scan() - if tk.Type != tok { - t.Errorf("tok = %s, want %s for %q", tk, tok, src) - } - if !errorCalled { - t.Errorf("error handler not called for %q", src) - } - if s.ErrorCount == 0 { - t.Errorf("count = %d, want > 0 for %q", s.ErrorCount, src) - } -} - -func testTokenList(t *testing.T, tokenList []tokenPair) { - // create artifical source code - buf := new(bytes.Buffer) - for _, ident := range tokenList { - fmt.Fprintf(buf, "%s\n", ident.text) - } - - s := New(buf.Bytes()) - for _, ident := range tokenList { - tok := s.Scan() - if tok.Type != ident.tok { - t.Errorf("tok = %q want %q for %q\n", tok, ident.tok, ident.text) - } - - if tok.Text != ident.text { - t.Errorf("text = %q want %q", tok.String(), ident.text) - } - - } -} - -func countNewlines(s string) int { - n := 0 - for _, ch := range s { - if ch == '\n' { - n++ - } - } - return n -} diff --git a/vendor/github.com/hashicorp/hcl/json/test-fixtures/array.json b/vendor/github.com/hashicorp/hcl/json/test-fixtures/array.json deleted file mode 100644 index e320f17ab..000000000 --- a/vendor/github.com/hashicorp/hcl/json/test-fixtures/array.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "foo": [1, 2, "bar"], - "bar": "baz" -} diff --git a/vendor/github.com/hashicorp/hcl/json/test-fixtures/basic.json b/vendor/github.com/hashicorp/hcl/json/test-fixtures/basic.json deleted file mode 100644 index b54bde96c..000000000 --- a/vendor/github.com/hashicorp/hcl/json/test-fixtures/basic.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "foo": "bar" -} diff --git a/vendor/github.com/hashicorp/hcl/json/test-fixtures/object.json b/vendor/github.com/hashicorp/hcl/json/test-fixtures/object.json deleted file mode 100644 index 72168a3cc..000000000 --- a/vendor/github.com/hashicorp/hcl/json/test-fixtures/object.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "foo": { - "bar": [1,2] - } -} diff --git a/vendor/github.com/hashicorp/hcl/json/test-fixtures/types.json b/vendor/github.com/hashicorp/hcl/json/test-fixtures/types.json deleted file mode 100644 index 9a142a6ca..000000000 --- a/vendor/github.com/hashicorp/hcl/json/test-fixtures/types.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "foo": "bar", - "bar": 7, - "baz": [1,2,3], - "foo": -12, - "bar": 3.14159, - "foo": true, - "bar": false, - "foo": null -} diff --git a/vendor/github.com/hashicorp/hcl/json/token/position.go b/vendor/github.com/hashicorp/hcl/json/token/position.go deleted file mode 100644 index 59c1bb72d..000000000 --- a/vendor/github.com/hashicorp/hcl/json/token/position.go +++ /dev/null @@ -1,46 +0,0 @@ -package token - -import "fmt" - -// Pos describes an arbitrary source position -// including the file, line, and column location. -// A Position is valid if the line number is > 0. -type Pos struct { - Filename string // filename, if any - Offset int // offset, starting at 0 - Line int // line number, starting at 1 - Column int // column number, starting at 1 (character count) -} - -// IsValid returns true if the position is valid. -func (p *Pos) IsValid() bool { return p.Line > 0 } - -// String returns a string in one of several forms: -// -// file:line:column valid position with file name -// line:column valid position without file name -// file invalid position with file name -// - invalid position without file name -func (p Pos) String() string { - s := p.Filename - if p.IsValid() { - if s != "" { - s += ":" - } - s += fmt.Sprintf("%d:%d", p.Line, p.Column) - } - if s == "" { - s = "-" - } - return s -} - -// Before reports whether the position p is before u. -func (p Pos) Before(u Pos) bool { - return u.Offset > p.Offset || u.Line > p.Line -} - -// After reports whether the position p is after u. -func (p Pos) After(u Pos) bool { - return u.Offset < p.Offset || u.Line < p.Line -} diff --git a/vendor/github.com/hashicorp/hcl/json/token/token.go b/vendor/github.com/hashicorp/hcl/json/token/token.go deleted file mode 100644 index 95a0c3eee..000000000 --- a/vendor/github.com/hashicorp/hcl/json/token/token.go +++ /dev/null @@ -1,118 +0,0 @@ -package token - -import ( - "fmt" - "strconv" - - hcltoken "github.com/hashicorp/hcl/hcl/token" -) - -// Token defines a single HCL token which can be obtained via the Scanner -type Token struct { - Type Type - Pos Pos - Text string -} - -// Type is the set of lexical tokens of the HCL (HashiCorp Configuration Language) -type Type int - -const ( - // Special tokens - ILLEGAL Type = iota - EOF - - identifier_beg - literal_beg - NUMBER // 12345 - FLOAT // 123.45 - BOOL // true,false - STRING // "abc" - NULL // null - literal_end - identifier_end - - operator_beg - LBRACK // [ - LBRACE // { - COMMA // , - PERIOD // . - COLON // : - - RBRACK // ] - RBRACE // } - - operator_end -) - -var tokens = [...]string{ - ILLEGAL: "ILLEGAL", - - EOF: "EOF", - - NUMBER: "NUMBER", - FLOAT: "FLOAT", - BOOL: "BOOL", - STRING: "STRING", - NULL: "NULL", - - LBRACK: "LBRACK", - LBRACE: "LBRACE", - COMMA: "COMMA", - PERIOD: "PERIOD", - COLON: "COLON", - - RBRACK: "RBRACK", - RBRACE: "RBRACE", -} - -// String returns the string corresponding to the token tok. -func (t Type) String() string { - s := "" - if 0 <= t && t < Type(len(tokens)) { - s = tokens[t] - } - if s == "" { - s = "token(" + strconv.Itoa(int(t)) + ")" - } - return s -} - -// IsIdentifier returns true for tokens corresponding to identifiers and basic -// type literals; it returns false otherwise. -func (t Type) IsIdentifier() bool { return identifier_beg < t && t < identifier_end } - -// IsLiteral returns true for tokens corresponding to basic type literals; it -// returns false otherwise. -func (t Type) IsLiteral() bool { return literal_beg < t && t < literal_end } - -// IsOperator returns true for tokens corresponding to operators and -// delimiters; it returns false otherwise. -func (t Type) IsOperator() bool { return operator_beg < t && t < operator_end } - -// String returns the token's literal text. Note that this is only -// applicable for certain token types, such as token.IDENT, -// token.STRING, etc.. -func (t Token) String() string { - return fmt.Sprintf("%s %s %s", t.Pos.String(), t.Type.String(), t.Text) -} - -// HCLToken converts this token to an HCL token. -// -// The token type must be a literal type or this will panic. -func (t Token) HCLToken() hcltoken.Token { - switch t.Type { - case BOOL: - return hcltoken.Token{Type: hcltoken.BOOL, Text: t.Text} - case FLOAT: - return hcltoken.Token{Type: hcltoken.FLOAT, Text: t.Text} - case NULL: - return hcltoken.Token{Type: hcltoken.STRING, Text: ""} - case NUMBER: - return hcltoken.Token{Type: hcltoken.NUMBER, Text: t.Text} - case STRING: - return hcltoken.Token{Type: hcltoken.STRING, Text: t.Text, JSON: true} - default: - panic(fmt.Sprintf("unimplemented HCLToken for type: %s", t.Type)) - } -} diff --git a/vendor/github.com/hashicorp/hcl/json/token/token_test.go b/vendor/github.com/hashicorp/hcl/json/token/token_test.go deleted file mode 100644 index a83fdd55b..000000000 --- a/vendor/github.com/hashicorp/hcl/json/token/token_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package token - -import ( - "testing" -) - -func TestTypeString(t *testing.T) { - var tokens = []struct { - tt Type - str string - }{ - {ILLEGAL, "ILLEGAL"}, - {EOF, "EOF"}, - {NUMBER, "NUMBER"}, - {FLOAT, "FLOAT"}, - {BOOL, "BOOL"}, - {STRING, "STRING"}, - {NULL, "NULL"}, - {LBRACK, "LBRACK"}, - {LBRACE, "LBRACE"}, - {COMMA, "COMMA"}, - {PERIOD, "PERIOD"}, - {RBRACK, "RBRACK"}, - {RBRACE, "RBRACE"}, - } - - for _, token := range tokens { - if token.tt.String() != token.str { - t.Errorf("want: %q got:%q\n", token.str, token.tt) - - } - } - -} diff --git a/vendor/github.com/hashicorp/hcl/lex.go b/vendor/github.com/hashicorp/hcl/lex.go deleted file mode 100644 index d9993c292..000000000 --- a/vendor/github.com/hashicorp/hcl/lex.go +++ /dev/null @@ -1,38 +0,0 @@ -package hcl - -import ( - "unicode" - "unicode/utf8" -) - -type lexModeValue byte - -const ( - lexModeUnknown lexModeValue = iota - lexModeHcl - lexModeJson -) - -// lexMode returns whether we're going to be parsing in JSON -// mode or HCL mode. -func lexMode(v []byte) lexModeValue { - var ( - r rune - w int - offset int - ) - - for { - r, w = utf8.DecodeRune(v[offset:]) - offset += w - if unicode.IsSpace(r) { - continue - } - if r == '{' { - return lexModeJson - } - break - } - - return lexModeHcl -} diff --git a/vendor/github.com/hashicorp/hcl/lex_test.go b/vendor/github.com/hashicorp/hcl/lex_test.go deleted file mode 100644 index 806276444..000000000 --- a/vendor/github.com/hashicorp/hcl/lex_test.go +++ /dev/null @@ -1,37 +0,0 @@ -package hcl - -import ( - "testing" -) - -func TestLexMode(t *testing.T) { - cases := []struct { - Input string - Mode lexModeValue - }{ - { - "", - lexModeHcl, - }, - { - "foo", - lexModeHcl, - }, - { - "{}", - lexModeJson, - }, - { - " {}", - lexModeJson, - }, - } - - for i, tc := range cases { - actual := lexMode([]byte(tc.Input)) - - if actual != tc.Mode { - t.Fatalf("%d: %#v", i, actual) - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/parse.go b/vendor/github.com/hashicorp/hcl/parse.go deleted file mode 100644 index 1fca53c4c..000000000 --- a/vendor/github.com/hashicorp/hcl/parse.go +++ /dev/null @@ -1,39 +0,0 @@ -package hcl - -import ( - "fmt" - - "github.com/hashicorp/hcl/hcl/ast" - hclParser "github.com/hashicorp/hcl/hcl/parser" - jsonParser "github.com/hashicorp/hcl/json/parser" -) - -// ParseBytes accepts as input byte slice and returns ast tree. -// -// Input can be either JSON or HCL -func ParseBytes(in []byte) (*ast.File, error) { - return parse(in) -} - -// ParseString accepts input as a string and returns ast tree. -func ParseString(input string) (*ast.File, error) { - return parse([]byte(input)) -} - -func parse(in []byte) (*ast.File, error) { - switch lexMode(in) { - case lexModeHcl: - return hclParser.Parse(in) - case lexModeJson: - return jsonParser.Parse(in) - } - - return nil, fmt.Errorf("unknown config format") -} - -// Parse parses the given input and returns the root object. -// -// The input format can be either HCL or JSON. -func Parse(input string) (*ast.File, error) { - return parse([]byte(input)) -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/assign_deep.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/assign_deep.hcl deleted file mode 100644 index dd3151cb7..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/assign_deep.hcl +++ /dev/null @@ -1,5 +0,0 @@ -resource = [{ - foo = [{ - bar = {} - }] -}] diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/basic.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/basic.hcl deleted file mode 100644 index 949994487..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/basic.hcl +++ /dev/null @@ -1,2 +0,0 @@ -foo = "bar" -bar = "${file("bing/bong.txt")}" diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/basic.json b/vendor/github.com/hashicorp/hcl/test-fixtures/basic.json deleted file mode 100644 index 7bdddc84b..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/basic.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "foo": "bar", - "bar": "${file(\"bing/bong.txt\")}" -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/basic_int_string.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/basic_int_string.hcl deleted file mode 100644 index 4e415da20..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/basic_int_string.hcl +++ /dev/null @@ -1 +0,0 @@ -count = "3" diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/basic_squish.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/basic_squish.hcl deleted file mode 100644 index 363697b49..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/basic_squish.hcl +++ /dev/null @@ -1,3 +0,0 @@ -foo="bar" -bar="${file("bing/bong.txt")}" -foo-bar="baz" diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/block_assign.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/block_assign.hcl deleted file mode 100644 index ee8b06fe3..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/block_assign.hcl +++ /dev/null @@ -1,2 +0,0 @@ -environment = "aws" { -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.hcl deleted file mode 100644 index 5b185cc91..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.hcl +++ /dev/null @@ -1,15 +0,0 @@ -key "" { - policy = "read" -} - -key "foo/" { - policy = "write" -} - -key "foo/bar/" { - policy = "read" -} - -key "foo/bar/baz" { - policy = "deny" -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.json b/vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.json deleted file mode 100644 index 151864ee8..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_policy.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "key": { - "": { - "policy": "read" - }, - - "foo/": { - "policy": "write" - }, - - "foo/bar/": { - "policy": "read" - }, - - "foo/bar/baz": { - "policy": "deny" - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.hcl deleted file mode 100644 index 52dcaa1bc..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.hcl +++ /dev/null @@ -1,10 +0,0 @@ -variable "foo" { - default = "bar" - description = "bar" -} - -variable "amis" { - default = { - east = "foo" - } -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.json b/vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.json deleted file mode 100644 index 49f921ed0..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/decode_tf_variable.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "variable": { - "foo": { - "default": "bar", - "description": "bar" - }, - - "amis": { - "default": { - "east": "foo" - } - } - } -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/empty.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/empty.hcl deleted file mode 100644 index 5be1b2315..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/empty.hcl +++ /dev/null @@ -1 +0,0 @@ -resource "foo" {} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/escape.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/escape.hcl deleted file mode 100644 index f818b15e0..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/escape.hcl +++ /dev/null @@ -1,6 +0,0 @@ -foo = "bar\"baz\\n" -bar = "new\nline" -qux = "back\\slash" -qax = "slash\\:colon" -nested = "${HH\\:mm\\:ss}" -nestedquotes = "${"\"stringwrappedinquotes\""}" diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/escape_backslash.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/escape_backslash.hcl deleted file mode 100644 index bc337fb7c..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/escape_backslash.hcl +++ /dev/null @@ -1,5 +0,0 @@ -output { - one = "${replace(var.sub_domain, ".", "\\.")}" - two = "${replace(var.sub_domain, ".", "\\\\.")}" - many = "${replace(var.sub_domain, ".", "\\\\\\\\.")}" -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/flat.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/flat.hcl deleted file mode 100644 index 9bca551f8..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/flat.hcl +++ /dev/null @@ -1,2 +0,0 @@ -foo = "bar" -Key = 7 diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/float.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/float.hcl deleted file mode 100644 index edf355e38..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/float.hcl +++ /dev/null @@ -1,2 +0,0 @@ -a = 1.02 -b = 2 diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/float.json b/vendor/github.com/hashicorp/hcl/test-fixtures/float.json deleted file mode 100644 index 580868043..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/float.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "a": 1.02, - "b": 2 -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/git_crypt.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/git_crypt.hcl deleted file mode 100644 index f691948e1b4238d680e670973bbae039c809e5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10 RcmZQ@_Y83kiVO(h0ssw90)YSk diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/interpolate.json b/vendor/github.com/hashicorp/hcl/test-fixtures/interpolate.json deleted file mode 100644 index cad015198..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/interpolate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "default": "${replace(\"europe-west\", \"-\", \" \")}" -} diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/list_of_lists.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/list_of_lists.hcl deleted file mode 100644 index 8af345849..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/list_of_lists.hcl +++ /dev/null @@ -1,2 +0,0 @@ -foo = [["foo"], ["bar"]] - diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/list_of_maps.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/list_of_maps.hcl deleted file mode 100644 index 985a33bae..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/list_of_maps.hcl +++ /dev/null @@ -1,4 +0,0 @@ -foo = [ - {somekey1 = "someval1"}, - {somekey2 = "someval2", someextrakey = "someextraval"}, -] diff --git a/vendor/github.com/hashicorp/hcl/test-fixtures/multiline.hcl b/vendor/github.com/hashicorp/hcl/test-fixtures/multiline.hcl deleted file mode 100644 index f883bd707..000000000 --- a/vendor/github.com/hashicorp/hcl/test-fixtures/multiline.hcl +++ /dev/null @@ -1,4 +0,0 @@ -foo = < + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/github.com/juju/ratelimit/README.md b/vendor/github.com/juju/ratelimit/README.md new file mode 100644 index 000000000..a0fdfe2b1 --- /dev/null +++ b/vendor/github.com/juju/ratelimit/README.md @@ -0,0 +1,117 @@ +# ratelimit +-- + import "github.com/juju/ratelimit" + +The ratelimit package provides an efficient token bucket implementation. See +http://en.wikipedia.org/wiki/Token_bucket. + +## Usage + +#### func Reader + +```go +func Reader(r io.Reader, bucket *Bucket) io.Reader +``` +Reader returns a reader that is rate limited by the given token bucket. Each +token in the bucket represents one byte. + +#### func Writer + +```go +func Writer(w io.Writer, bucket *Bucket) io.Writer +``` +Writer returns a writer that is rate limited by the given token bucket. Each +token in the bucket represents one byte. + +#### type Bucket + +```go +type Bucket struct { +} +``` + +Bucket represents a token bucket that fills at a predetermined rate. Methods on +Bucket may be called concurrently. + +#### func NewBucket + +```go +func NewBucket(fillInterval time.Duration, capacity int64) *Bucket +``` +NewBucket returns a new token bucket that fills at the rate of one token every +fillInterval, up to the given maximum capacity. Both arguments must be positive. +The bucket is initially full. + +#### func NewBucketWithQuantum + +```go +func NewBucketWithQuantum(fillInterval time.Duration, capacity, quantum int64) *Bucket +``` +NewBucketWithQuantum is similar to NewBucket, but allows the specification of +the quantum size - quantum tokens are added every fillInterval. + +#### func NewBucketWithRate + +```go +func NewBucketWithRate(rate float64, capacity int64) *Bucket +``` +NewBucketWithRate returns a token bucket that fills the bucket at the rate of +rate tokens per second up to the given maximum capacity. Because of limited +clock resolution, at high rates, the actual rate may be up to 1% different from +the specified rate. + +#### func (*Bucket) Rate + +```go +func (tb *Bucket) Rate() float64 +``` +Rate returns the fill rate of the bucket, in tokens per second. + +#### func (*Bucket) Take + +```go +func (tb *Bucket) Take(count int64) time.Duration +``` +Take takes count tokens from the bucket without blocking. It returns the time +that the caller should wait until the tokens are actually available. + +Note that if the request is irrevocable - there is no way to return tokens to +the bucket once this method commits us to taking them. + +#### func (*Bucket) TakeAvailable + +```go +func (tb *Bucket) TakeAvailable(count int64) int64 +``` +TakeAvailable takes up to count immediately available tokens from the bucket. It +returns the number of tokens removed, or zero if there are no available tokens. +It does not block. + +#### func (*Bucket) TakeMaxDuration + +```go +func (tb *Bucket) TakeMaxDuration(count int64, maxWait time.Duration) (time.Duration, bool) +``` +TakeMaxDuration is like Take, except that it will only take tokens from the +bucket if the wait time for the tokens is no greater than maxWait. + +If it would take longer than maxWait for the tokens to become available, it does +nothing and reports false, otherwise it returns the time that the caller should +wait until the tokens are actually available, and reports true. + +#### func (*Bucket) Wait + +```go +func (tb *Bucket) Wait(count int64) +``` +Wait takes count tokens from the bucket, waiting until they are available. + +#### func (*Bucket) WaitMaxDuration + +```go +func (tb *Bucket) WaitMaxDuration(count int64, maxWait time.Duration) bool +``` +WaitMaxDuration is like Wait except that it will only take tokens from the +bucket if it needs to wait for no greater than maxWait. It reports whether any +tokens have been removed from the bucket If no tokens have been removed, it +returns immediately. diff --git a/vendor/github.com/juju/ratelimit/ratelimit.go b/vendor/github.com/juju/ratelimit/ratelimit.go new file mode 100644 index 000000000..1c3f25b2e --- /dev/null +++ b/vendor/github.com/juju/ratelimit/ratelimit.go @@ -0,0 +1,284 @@ +// Copyright 2014 Canonical Ltd. +// Licensed under the LGPLv3 with static-linking exception. +// See LICENCE file for details. + +// Package ratelimit provides an efficient token bucket implementation +// that can be used to limit the rate of arbitrary things. +// See http://en.wikipedia.org/wiki/Token_bucket. +package ratelimit + +import ( + "math" + "strconv" + "sync" + "time" +) + +// Bucket represents a token bucket that fills at a predetermined rate. +// Methods on Bucket may be called concurrently. +type Bucket struct { + startTime time.Time + capacity int64 + quantum int64 + fillInterval time.Duration + clock Clock + + // The mutex guards the fields following it. + mu sync.Mutex + + // avail holds the number of available tokens + // in the bucket, as of availTick ticks from startTime. + // It will be negative when there are consumers + // waiting for tokens. + avail int64 + availTick int64 +} + +// Clock is used to inject testable fakes. +type Clock interface { + Now() time.Time + Sleep(d time.Duration) +} + +// realClock implements Clock in terms of standard time functions. +type realClock struct{} + +// Now is identical to time.Now. +func (realClock) Now() time.Time { + return time.Now() +} + +// Sleep is identical to time.Sleep. +func (realClock) Sleep(d time.Duration) { + time.Sleep(d) +} + +// NewBucket returns a new token bucket that fills at the +// rate of one token every fillInterval, up to the given +// maximum capacity. Both arguments must be +// positive. The bucket is initially full. +func NewBucket(fillInterval time.Duration, capacity int64) *Bucket { + return NewBucketWithClock(fillInterval, capacity, realClock{}) +} + +// NewBucketWithClock is identical to NewBucket but injects a testable clock +// interface. +func NewBucketWithClock(fillInterval time.Duration, capacity int64, clock Clock) *Bucket { + return NewBucketWithQuantumAndClock(fillInterval, capacity, 1, clock) +} + +// rateMargin specifes the allowed variance of actual +// rate from specified rate. 1% seems reasonable. +const rateMargin = 0.01 + +// NewBucketWithRate returns a token bucket that fills the bucket +// at the rate of rate tokens per second up to the given +// maximum capacity. Because of limited clock resolution, +// at high rates, the actual rate may be up to 1% different from the +// specified rate. +func NewBucketWithRate(rate float64, capacity int64) *Bucket { + return NewBucketWithRateAndClock(rate, capacity, realClock{}) +} + +// NewBucketWithRateAndClock is identical to NewBucketWithRate but injects a +// testable clock interface. +func NewBucketWithRateAndClock(rate float64, capacity int64, clock Clock) *Bucket { + for quantum := int64(1); quantum < 1<<50; quantum = nextQuantum(quantum) { + fillInterval := time.Duration(1e9 * float64(quantum) / rate) + if fillInterval <= 0 { + continue + } + tb := NewBucketWithQuantumAndClock(fillInterval, capacity, quantum, clock) + if diff := math.Abs(tb.Rate() - rate); diff/rate <= rateMargin { + return tb + } + } + panic("cannot find suitable quantum for " + strconv.FormatFloat(rate, 'g', -1, 64)) +} + +// nextQuantum returns the next quantum to try after q. +// We grow the quantum exponentially, but slowly, so we +// get a good fit in the lower numbers. +func nextQuantum(q int64) int64 { + q1 := q * 11 / 10 + if q1 == q { + q1++ + } + return q1 +} + +// NewBucketWithQuantum is similar to NewBucket, but allows +// the specification of the quantum size - quantum tokens +// are added every fillInterval. +func NewBucketWithQuantum(fillInterval time.Duration, capacity, quantum int64) *Bucket { + return NewBucketWithQuantumAndClock(fillInterval, capacity, quantum, realClock{}) +} + +// NewBucketWithQuantumAndClock is identical to NewBucketWithQuantum but injects +// a testable clock interface. +func NewBucketWithQuantumAndClock(fillInterval time.Duration, capacity, quantum int64, clock Clock) *Bucket { + if fillInterval <= 0 { + panic("token bucket fill interval is not > 0") + } + if capacity <= 0 { + panic("token bucket capacity is not > 0") + } + if quantum <= 0 { + panic("token bucket quantum is not > 0") + } + return &Bucket{ + clock: clock, + startTime: clock.Now(), + capacity: capacity, + quantum: quantum, + avail: capacity, + fillInterval: fillInterval, + } +} + +// Wait takes count tokens from the bucket, waiting until they are +// available. +func (tb *Bucket) Wait(count int64) { + if d := tb.Take(count); d > 0 { + tb.clock.Sleep(d) + } +} + +// WaitMaxDuration is like Wait except that it will +// only take tokens from the bucket if it needs to wait +// for no greater than maxWait. It reports whether +// any tokens have been removed from the bucket +// If no tokens have been removed, it returns immediately. +func (tb *Bucket) WaitMaxDuration(count int64, maxWait time.Duration) bool { + d, ok := tb.TakeMaxDuration(count, maxWait) + if d > 0 { + tb.clock.Sleep(d) + } + return ok +} + +const infinityDuration time.Duration = 0x7fffffffffffffff + +// Take takes count tokens from the bucket without blocking. It returns +// the time that the caller should wait until the tokens are actually +// available. +// +// Note that if the request is irrevocable - there is no way to return +// tokens to the bucket once this method commits us to taking them. +func (tb *Bucket) Take(count int64) time.Duration { + d, _ := tb.take(tb.clock.Now(), count, infinityDuration) + return d +} + +// TakeMaxDuration is like Take, except that +// it will only take tokens from the bucket if the wait +// time for the tokens is no greater than maxWait. +// +// If it would take longer than maxWait for the tokens +// to become available, it does nothing and reports false, +// otherwise it returns the time that the caller should +// wait until the tokens are actually available, and reports +// true. +func (tb *Bucket) TakeMaxDuration(count int64, maxWait time.Duration) (time.Duration, bool) { + return tb.take(tb.clock.Now(), count, maxWait) +} + +// TakeAvailable takes up to count immediately available tokens from the +// bucket. It returns the number of tokens removed, or zero if there are +// no available tokens. It does not block. +func (tb *Bucket) TakeAvailable(count int64) int64 { + return tb.takeAvailable(tb.clock.Now(), count) +} + +// takeAvailable is the internal version of TakeAvailable - it takes the +// current time as an argument to enable easy testing. +func (tb *Bucket) takeAvailable(now time.Time, count int64) int64 { + if count <= 0 { + return 0 + } + tb.mu.Lock() + defer tb.mu.Unlock() + + tb.adjust(now) + if tb.avail <= 0 { + return 0 + } + if count > tb.avail { + count = tb.avail + } + tb.avail -= count + return count +} + +// Available returns the number of available tokens. It will be negative +// when there are consumers waiting for tokens. Note that if this +// returns greater than zero, it does not guarantee that calls that take +// tokens from the buffer will succeed, as the number of available +// tokens could have changed in the meantime. This method is intended +// primarily for metrics reporting and debugging. +func (tb *Bucket) Available() int64 { + return tb.available(tb.clock.Now()) +} + +// available is the internal version of available - it takes the current time as +// an argument to enable easy testing. +func (tb *Bucket) available(now time.Time) int64 { + tb.mu.Lock() + defer tb.mu.Unlock() + tb.adjust(now) + return tb.avail +} + +// Capacity returns the capacity that the bucket was created with. +func (tb *Bucket) Capacity() int64 { + return tb.capacity +} + +// Rate returns the fill rate of the bucket, in tokens per second. +func (tb *Bucket) Rate() float64 { + return 1e9 * float64(tb.quantum) / float64(tb.fillInterval) +} + +// take is the internal version of Take - it takes the current time as +// an argument to enable easy testing. +func (tb *Bucket) take(now time.Time, count int64, maxWait time.Duration) (time.Duration, bool) { + if count <= 0 { + return 0, true + } + tb.mu.Lock() + defer tb.mu.Unlock() + + currentTick := tb.adjust(now) + avail := tb.avail - count + if avail >= 0 { + tb.avail = avail + return 0, true + } + // Round up the missing tokens to the nearest multiple + // of quantum - the tokens won't be available until + // that tick. + endTick := currentTick + (-avail+tb.quantum-1)/tb.quantum + endTime := tb.startTime.Add(time.Duration(endTick) * tb.fillInterval) + waitTime := endTime.Sub(now) + if waitTime > maxWait { + return 0, false + } + tb.avail = avail + return waitTime, true +} + +// adjust adjusts the current bucket capacity based on the current time. +// It returns the current tick. +func (tb *Bucket) adjust(now time.Time) (currentTick int64) { + currentTick = int64(now.Sub(tb.startTime) / tb.fillInterval) + + if tb.avail >= tb.capacity { + return + } + tb.avail += (currentTick - tb.availTick) * tb.quantum + if tb.avail > tb.capacity { + tb.avail = tb.capacity + } + tb.availTick = currentTick + return +} diff --git a/vendor/github.com/juju/ratelimit/ratelimit_test.go b/vendor/github.com/juju/ratelimit/ratelimit_test.go new file mode 100644 index 000000000..62d88ded0 --- /dev/null +++ b/vendor/github.com/juju/ratelimit/ratelimit_test.go @@ -0,0 +1,389 @@ +// Copyright 2014 Canonical Ltd. +// Licensed under the LGPLv3 with static-linking exception. +// See LICENCE file for details. + +package ratelimit + +import ( + "math" + "testing" + "time" + + gc "gopkg.in/check.v1" +) + +func TestPackage(t *testing.T) { + gc.TestingT(t) +} + +type rateLimitSuite struct{} + +var _ = gc.Suite(rateLimitSuite{}) + +type takeReq struct { + time time.Duration + count int64 + expectWait time.Duration +} + +var takeTests = []struct { + about string + fillInterval time.Duration + capacity int64 + reqs []takeReq +}{{ + about: "serial requests", + fillInterval: 250 * time.Millisecond, + capacity: 10, + reqs: []takeReq{{ + time: 0, + count: 0, + expectWait: 0, + }, { + time: 0, + count: 10, + expectWait: 0, + }, { + time: 0, + count: 1, + expectWait: 250 * time.Millisecond, + }, { + time: 250 * time.Millisecond, + count: 1, + expectWait: 250 * time.Millisecond, + }}, +}, { + about: "concurrent requests", + fillInterval: 250 * time.Millisecond, + capacity: 10, + reqs: []takeReq{{ + time: 0, + count: 10, + expectWait: 0, + }, { + time: 0, + count: 2, + expectWait: 500 * time.Millisecond, + }, { + time: 0, + count: 2, + expectWait: 1000 * time.Millisecond, + }, { + time: 0, + count: 1, + expectWait: 1250 * time.Millisecond, + }}, +}, { + about: "more than capacity", + fillInterval: 1 * time.Millisecond, + capacity: 10, + reqs: []takeReq{{ + time: 0, + count: 10, + expectWait: 0, + }, { + time: 20 * time.Millisecond, + count: 15, + expectWait: 5 * time.Millisecond, + }}, +}, { + about: "sub-quantum time", + fillInterval: 10 * time.Millisecond, + capacity: 10, + reqs: []takeReq{{ + time: 0, + count: 10, + expectWait: 0, + }, { + time: 7 * time.Millisecond, + count: 1, + expectWait: 3 * time.Millisecond, + }, { + time: 8 * time.Millisecond, + count: 1, + expectWait: 12 * time.Millisecond, + }}, +}, { + about: "within capacity", + fillInterval: 10 * time.Millisecond, + capacity: 5, + reqs: []takeReq{{ + time: 0, + count: 5, + expectWait: 0, + }, { + time: 60 * time.Millisecond, + count: 5, + expectWait: 0, + }, { + time: 60 * time.Millisecond, + count: 1, + expectWait: 10 * time.Millisecond, + }, { + time: 80 * time.Millisecond, + count: 2, + expectWait: 10 * time.Millisecond, + }}, +}} + +var availTests = []struct { + about string + capacity int64 + fillInterval time.Duration + take int64 + sleep time.Duration + + expectCountAfterTake int64 + expectCountAfterSleep int64 +}{{ + about: "should fill tokens after interval", + capacity: 5, + fillInterval: time.Second, + take: 5, + sleep: time.Second, + expectCountAfterTake: 0, + expectCountAfterSleep: 1, +}, { + about: "should fill tokens plus existing count", + capacity: 2, + fillInterval: time.Second, + take: 1, + sleep: time.Second, + expectCountAfterTake: 1, + expectCountAfterSleep: 2, +}, { + about: "shouldn't fill before interval", + capacity: 2, + fillInterval: 2 * time.Second, + take: 1, + sleep: time.Second, + expectCountAfterTake: 1, + expectCountAfterSleep: 1, +}, { + about: "should fill only once after 1*interval before 2*interval", + capacity: 2, + fillInterval: 2 * time.Second, + take: 1, + sleep: 3 * time.Second, + expectCountAfterTake: 1, + expectCountAfterSleep: 2, +}} + +func (rateLimitSuite) TestTake(c *gc.C) { + for i, test := range takeTests { + tb := NewBucket(test.fillInterval, test.capacity) + for j, req := range test.reqs { + d, ok := tb.take(tb.startTime.Add(req.time), req.count, infinityDuration) + c.Assert(ok, gc.Equals, true) + if d != req.expectWait { + c.Fatalf("test %d.%d, %s, got %v want %v", i, j, test.about, d, req.expectWait) + } + } + } +} + +func (rateLimitSuite) TestTakeMaxDuration(c *gc.C) { + for i, test := range takeTests { + tb := NewBucket(test.fillInterval, test.capacity) + for j, req := range test.reqs { + if req.expectWait > 0 { + d, ok := tb.take(tb.startTime.Add(req.time), req.count, req.expectWait-1) + c.Assert(ok, gc.Equals, false) + c.Assert(d, gc.Equals, time.Duration(0)) + } + d, ok := tb.take(tb.startTime.Add(req.time), req.count, req.expectWait) + c.Assert(ok, gc.Equals, true) + if d != req.expectWait { + c.Fatalf("test %d.%d, %s, got %v want %v", i, j, test.about, d, req.expectWait) + } + } + } +} + +type takeAvailableReq struct { + time time.Duration + count int64 + expect int64 +} + +var takeAvailableTests = []struct { + about string + fillInterval time.Duration + capacity int64 + reqs []takeAvailableReq +}{{ + about: "serial requests", + fillInterval: 250 * time.Millisecond, + capacity: 10, + reqs: []takeAvailableReq{{ + time: 0, + count: 0, + expect: 0, + }, { + time: 0, + count: 10, + expect: 10, + }, { + time: 0, + count: 1, + expect: 0, + }, { + time: 250 * time.Millisecond, + count: 1, + expect: 1, + }}, +}, { + about: "concurrent requests", + fillInterval: 250 * time.Millisecond, + capacity: 10, + reqs: []takeAvailableReq{{ + time: 0, + count: 5, + expect: 5, + }, { + time: 0, + count: 2, + expect: 2, + }, { + time: 0, + count: 5, + expect: 3, + }, { + time: 0, + count: 1, + expect: 0, + }}, +}, { + about: "more than capacity", + fillInterval: 1 * time.Millisecond, + capacity: 10, + reqs: []takeAvailableReq{{ + time: 0, + count: 10, + expect: 10, + }, { + time: 20 * time.Millisecond, + count: 15, + expect: 10, + }}, +}, { + about: "within capacity", + fillInterval: 10 * time.Millisecond, + capacity: 5, + reqs: []takeAvailableReq{{ + time: 0, + count: 5, + expect: 5, + }, { + time: 60 * time.Millisecond, + count: 5, + expect: 5, + }, { + time: 70 * time.Millisecond, + count: 1, + expect: 1, + }}, +}} + +func (rateLimitSuite) TestTakeAvailable(c *gc.C) { + for i, test := range takeAvailableTests { + tb := NewBucket(test.fillInterval, test.capacity) + for j, req := range test.reqs { + d := tb.takeAvailable(tb.startTime.Add(req.time), req.count) + if d != req.expect { + c.Fatalf("test %d.%d, %s, got %v want %v", i, j, test.about, d, req.expect) + } + } + } +} + +func (rateLimitSuite) TestPanics(c *gc.C) { + c.Assert(func() { NewBucket(0, 1) }, gc.PanicMatches, "token bucket fill interval is not > 0") + c.Assert(func() { NewBucket(-2, 1) }, gc.PanicMatches, "token bucket fill interval is not > 0") + c.Assert(func() { NewBucket(1, 0) }, gc.PanicMatches, "token bucket capacity is not > 0") + c.Assert(func() { NewBucket(1, -2) }, gc.PanicMatches, "token bucket capacity is not > 0") +} + +func isCloseTo(x, y, tolerance float64) bool { + return math.Abs(x-y)/y < tolerance +} + +func (rateLimitSuite) TestRate(c *gc.C) { + tb := NewBucket(1, 1) + if !isCloseTo(tb.Rate(), 1e9, 0.00001) { + c.Fatalf("got %v want 1e9", tb.Rate()) + } + tb = NewBucket(2*time.Second, 1) + if !isCloseTo(tb.Rate(), 0.5, 0.00001) { + c.Fatalf("got %v want 0.5", tb.Rate()) + } + tb = NewBucketWithQuantum(100*time.Millisecond, 1, 5) + if !isCloseTo(tb.Rate(), 50, 0.00001) { + c.Fatalf("got %v want 50", tb.Rate()) + } +} + +func checkRate(c *gc.C, rate float64) { + tb := NewBucketWithRate(rate, 1<<62) + if !isCloseTo(tb.Rate(), rate, rateMargin) { + c.Fatalf("got %g want %v", tb.Rate(), rate) + } + d, ok := tb.take(tb.startTime, 1<<62, infinityDuration) + c.Assert(ok, gc.Equals, true) + c.Assert(d, gc.Equals, time.Duration(0)) + + // Check that the actual rate is as expected by + // asking for a not-quite multiple of the bucket's + // quantum and checking that the wait time + // correct. + d, ok = tb.take(tb.startTime, tb.quantum*2-tb.quantum/2, infinityDuration) + c.Assert(ok, gc.Equals, true) + expectTime := 1e9 * float64(tb.quantum) * 2 / rate + if !isCloseTo(float64(d), expectTime, rateMargin) { + c.Fatalf("rate %g: got %g want %v", rate, float64(d), expectTime) + } +} + +func (rateLimitSuite) TestNewWithRate(c *gc.C) { + for rate := float64(1); rate < 1e6; rate += 7 { + checkRate(c, rate) + } + for _, rate := range []float64{ + 1024 * 1024 * 1024, + 1e-5, + 0.9e-5, + 0.5, + 0.9, + 0.9e8, + 3e12, + 4e18, + } { + checkRate(c, rate) + checkRate(c, rate/3) + checkRate(c, rate*1.3) + } +} + +func TestAvailable(t *testing.T) { + for i, tt := range availTests { + tb := NewBucket(tt.fillInterval, tt.capacity) + if c := tb.takeAvailable(tb.startTime, tt.take); c != tt.take { + t.Fatalf("#%d: %s, take = %d, want = %d", i, tt.about, c, tt.take) + } + if c := tb.available(tb.startTime); c != tt.expectCountAfterTake { + t.Fatalf("#%d: %s, after take, available = %d, want = %d", i, tt.about, c, tt.expectCountAfterTake) + } + if c := tb.available(tb.startTime.Add(tt.sleep)); c != tt.expectCountAfterSleep { + t.Fatalf("#%d: %s, after some time it should fill in new tokens, available = %d, want = %d", + i, tt.about, c, tt.expectCountAfterSleep) + } + } + +} + +func BenchmarkWait(b *testing.B) { + tb := NewBucket(1, 16*1024) + for i := b.N - 1; i >= 0; i-- { + tb.Wait(1) + } +} diff --git a/vendor/github.com/juju/ratelimit/reader.go b/vendor/github.com/juju/ratelimit/reader.go new file mode 100644 index 000000000..6403bf78d --- /dev/null +++ b/vendor/github.com/juju/ratelimit/reader.go @@ -0,0 +1,51 @@ +// Copyright 2014 Canonical Ltd. +// Licensed under the LGPLv3 with static-linking exception. +// See LICENCE file for details. + +package ratelimit + +import "io" + +type reader struct { + r io.Reader + bucket *Bucket +} + +// Reader returns a reader that is rate limited by +// the given token bucket. Each token in the bucket +// represents one byte. +func Reader(r io.Reader, bucket *Bucket) io.Reader { + return &reader{ + r: r, + bucket: bucket, + } +} + +func (r *reader) Read(buf []byte) (int, error) { + n, err := r.r.Read(buf) + if n <= 0 { + return n, err + } + r.bucket.Wait(int64(n)) + return n, err +} + +type writer struct { + w io.Writer + bucket *Bucket +} + +// Writer returns a reader that is rate limited by +// the given token bucket. Each token in the bucket +// represents one byte. +func Writer(w io.Writer, bucket *Bucket) io.Writer { + return &writer{ + w: w, + bucket: bucket, + } +} + +func (w *writer) Write(buf []byte) (int, error) { + w.bucket.Wait(int64(len(buf))) + return w.w.Write(buf) +} diff --git a/vendor/github.com/magiconair/properties/.gitignore b/vendor/github.com/magiconair/properties/.gitignore deleted file mode 100644 index e7081ff52..000000000 --- a/vendor/github.com/magiconair/properties/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -*.sublime-project -*.sublime-workspace -*.un~ -*.swp -.idea/ -*.iml diff --git a/vendor/github.com/magiconair/properties/.travis.yml b/vendor/github.com/magiconair/properties/.travis.yml deleted file mode 100644 index ab9803902..000000000 --- a/vendor/github.com/magiconair/properties/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: - - 1.4.x - - 1.5.x - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x - - tip diff --git a/vendor/github.com/magiconair/properties/CHANGELOG.md b/vendor/github.com/magiconair/properties/CHANGELOG.md deleted file mode 100644 index ebd1bcd32..000000000 --- a/vendor/github.com/magiconair/properties/CHANGELOG.md +++ /dev/null @@ -1,101 +0,0 @@ -## Changelog - -### Unreleased - - * [PR #24](https://github.com/magiconair/properties/pull/24): Update keys when DisableExpansion is enabled - Thanks to @mgurov for the fix. - -### [1.7.3](https://github.com/magiconair/properties/tags/v1.7.3) - 10 Jul 2017 - - * [Issue #17](https://github.com/magiconair/properties/issues/17): Add [SetValue()](http://godoc.org/github.com/magiconair/properties#Properties.SetValue) method to set values generically - * [Issue #22](https://github.com/magiconair/properties/issues/22): Add [LoadMap()](http://godoc.org/github.com/magiconair/properties#LoadMap) function to load properties from a string map - -### [1.7.2](https://github.com/magiconair/properties/tags/v1.7.2) - 20 Mar 2017 - - * [Issue #15](https://github.com/magiconair/properties/issues/15): Drop gocheck dependency - * [PR #21](https://github.com/magiconair/properties/pull/21): Add [Map()](http://godoc.org/github.com/magiconair/properties#Properties.Map) and [FilterFunc()](http://godoc.org/github.com/magiconair/properties#Properties.FilterFunc) - -### [1.7.1](https://github.com/magiconair/properties/tags/v1.7.1) - 13 Jan 2017 - - * [PR #16](https://github.com/magiconair/properties/pull/16): Keep gofmt happy - * [PR #18](https://github.com/magiconair/properties/pull/18): Fix Delete() function - -### [1.7.0](https://github.com/magiconair/properties/tags/v1.7.0) - 20 Mar 2016 - - * [Issue #10](https://github.com/magiconair/properties/issues/10): Add [LoadURL,LoadURLs,MustLoadURL,MustLoadURLs](http://godoc.org/github.com/magiconair/properties#LoadURL) method to load properties from a URL. - * [Issue #11](https://github.com/magiconair/properties/issues/11): Add [LoadString,MustLoadString](http://godoc.org/github.com/magiconair/properties#LoadString) method to load properties from an UTF8 string. - * [PR #8](https://github.com/magiconair/properties/pull/8): Add [MustFlag](http://godoc.org/github.com/magiconair/properties#Properties.MustFlag) method to provide overrides via command line flags. (@pascaldekloe) - -### [1.6.0](https://github.com/magiconair/properties/tags/v1.6.0) - 11 Dec 2015 - - * Add [Decode](http://godoc.org/github.com/magiconair/properties#Properties.Decode) method to populate struct from properties via tags. - -### [1.5.6](https://github.com/magiconair/properties/tags/v1.5.6) - 18 Oct 2015 - - * Vendored in gopkg.in/check.v1 - -### [1.5.5](https://github.com/magiconair/properties/tags/v1.5.5) - 31 Jul 2015 - - * [PR #6](https://github.com/magiconair/properties/pull/6): Add [Delete](http://godoc.org/github.com/magiconair/properties#Properties.Delete) method to remove keys including comments. (@gerbenjacobs) - -### [1.5.4](https://github.com/magiconair/properties/tags/v1.5.4) - 23 Jun 2015 - - * [Issue #5](https://github.com/magiconair/properties/issues/5): Allow disabling of property expansion [DisableExpansion](http://godoc.org/github.com/magiconair/properties#Properties.DisableExpansion). When property expansion is disabled Properties become a simple key/value store and don't check for circular references. - -### [1.5.3](https://github.com/magiconair/properties/tags/v1.5.3) - 02 Jun 2015 - - * [Issue #4](https://github.com/magiconair/properties/issues/4): Maintain key order in [Filter()](http://godoc.org/github.com/magiconair/properties#Properties.Filter), [FilterPrefix()](http://godoc.org/github.com/magiconair/properties#Properties.FilterPrefix) and [FilterRegexp()](http://godoc.org/github.com/magiconair/properties#Properties.FilterRegexp) - -### [1.5.2](https://github.com/magiconair/properties/tags/v1.5.2) - 10 Apr 2015 - - * [Issue #3](https://github.com/magiconair/properties/issues/3): Don't print comments in [WriteComment()](http://godoc.org/github.com/magiconair/properties#Properties.WriteComment) if they are all empty - * Add clickable links to README - -### [1.5.1](https://github.com/magiconair/properties/tags/v1.5.1) - 08 Dec 2014 - - * Added [GetParsedDuration()](http://godoc.org/github.com/magiconair/properties#Properties.GetParsedDuration) and [MustGetParsedDuration()](http://godoc.org/github.com/magiconair/properties#Properties.MustGetParsedDuration) for values specified compatible with - [time.ParseDuration()](http://golang.org/pkg/time/#ParseDuration). - -### [1.5.0](https://github.com/magiconair/properties/tags/v1.5.0) - 18 Nov 2014 - - * Added support for single and multi-line comments (reading, writing and updating) - * The order of keys is now preserved - * Calling [Set()](http://godoc.org/github.com/magiconair/properties#Properties.Set) with an empty key now silently ignores the call and does not create a new entry - * Added a [MustSet()](http://godoc.org/github.com/magiconair/properties#Properties.MustSet) method - * Migrated test library from launchpad.net/gocheck to [gopkg.in/check.v1](http://gopkg.in/check.v1) - -### [1.4.2](https://github.com/magiconair/properties/tags/v1.4.2) - 15 Nov 2014 - - * [Issue #2](https://github.com/magiconair/properties/issues/2): Fixed goroutine leak in parser which created two lexers but cleaned up only one - -### [1.4.1](https://github.com/magiconair/properties/tags/v1.4.1) - 13 Nov 2014 - - * [Issue #1](https://github.com/magiconair/properties/issues/1): Fixed bug in Keys() method which returned an empty string - -### [1.4.0](https://github.com/magiconair/properties/tags/v1.4.0) - 23 Sep 2014 - - * Added [Keys()](http://godoc.org/github.com/magiconair/properties#Properties.Keys) to get the keys - * Added [Filter()](http://godoc.org/github.com/magiconair/properties#Properties.Filter), [FilterRegexp()](http://godoc.org/github.com/magiconair/properties#Properties.FilterRegexp) and [FilterPrefix()](http://godoc.org/github.com/magiconair/properties#Properties.FilterPrefix) to get a subset of the properties - -### [1.3.0](https://github.com/magiconair/properties/tags/v1.3.0) - 18 Mar 2014 - -* Added support for time.Duration -* Made MustXXX() failure beha[ior configurable (log.Fatal, panic](https://github.com/magiconair/properties/tags/vior configurable (log.Fatal, panic) - custom) -* Changed default of MustXXX() failure from panic to log.Fatal - -### [1.2.0](https://github.com/magiconair/properties/tags/v1.2.0) - 05 Mar 2014 - -* Added MustGet... functions -* Added support for int and uint with range checks on 32 bit platforms - -### [1.1.0](https://github.com/magiconair/properties/tags/v1.1.0) - 20 Jan 2014 - -* Renamed from goproperties to properties -* Added support for expansion of environment vars in - filenames and value expressions -* Fixed bug where value expressions were not at the - start of the string - -### [1.0.0](https://github.com/magiconair/properties/tags/v1.0.0) - 7 Jan 2014 - -* Initial release diff --git a/vendor/github.com/magiconair/properties/LICENSE b/vendor/github.com/magiconair/properties/LICENSE deleted file mode 100644 index 7eab43b6b..000000000 --- a/vendor/github.com/magiconair/properties/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -goproperties - properties file decoder for Go - -Copyright (c) 2013-2014 - Frank Schroeder - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/magiconair/properties/README.md b/vendor/github.com/magiconair/properties/README.md deleted file mode 100644 index eb3b8c435..000000000 --- a/vendor/github.com/magiconair/properties/README.md +++ /dev/null @@ -1,100 +0,0 @@ -Overview [![Build Status](https://travis-ci.org/magiconair/properties.svg?branch=master)](https://travis-ci.org/magiconair/properties) -======== - -#### Current version: 1.7.3 - -properties is a Go library for reading and writing properties files. - -It supports reading from multiple files or URLs and Spring style recursive -property expansion of expressions like `${key}` to their corresponding value. -Value expressions can refer to other keys like in `${key}` or to environment -variables like in `${USER}`. Filenames can also contain environment variables -like in `/home/${USER}/myapp.properties`. - -Properties can be decoded into structs, maps, arrays and values through -struct tags. - -Comments and the order of keys are preserved. Comments can be modified -and can be written to the output. - -The properties library supports both ISO-8859-1 and UTF-8 encoded data. - -Starting from version 1.3.0 the behavior of the MustXXX() functions is -configurable by providing a custom `ErrorHandler` function. The default has -changed from `panic` to `log.Fatal` but this is configurable and custom -error handling functions can be provided. See the package documentation for -details. - -Read the full documentation on [GoDoc](https://godoc.org/github.com/magiconair/properties) [![GoDoc](https://godoc.org/github.com/magiconair/properties?status.png)](https://godoc.org/github.com/magiconair/properties) - -Getting Started ---------------- - -```go -import ( - "flag" - "github.com/magiconair/properties" -) - -func main() { - // init from a file - p := properties.MustLoadFile("${HOME}/config.properties", properties.UTF8) - - // or multiple files - p = properties.MustLoadFiles([]string{ - "${HOME}/config.properties", - "${HOME}/config-${USER}.properties", - }, properties.UTF8, true) - - // or from a map - p = properties.LoadMap(map[string]string{"key": "value", "abc": "def"}) - - // or from a string - p = properties.MustLoadString("key=value\nabc=def") - - // or from a URL - p = properties.MustLoadURL("http://host/path") - - // or from multiple URLs - p = properties.MustLoadURL([]string{ - "http://host/config", - "http://host/config-${USER}", - }, true) - - // or from flags - p.MustFlag(flag.CommandLine) - - // get values through getters - host := p.MustGetString("host") - port := p.GetInt("port", 8080) - - // or through Decode - type Config struct { - Host string `properties:"host"` - Port int `properties:"port,default=9000"` - Accept []string `properties:"accept,default=image/png;image;gif"` - Timeout time.Duration `properties:"timeout,default=5s"` - } - var cfg Config - if err := p.Decode(&cfg); err != nil { - log.Fatal(err) - } -} - -``` - -Installation and Upgrade ------------------------- - -``` -$ go get -u github.com/magiconair/properties -``` - -License -------- - -2 clause BSD license. See [LICENSE](https://github.com/magiconair/properties/blob/master/LICENSE) file for details. - -ToDo ----- -* Dump contents with passwords and secrets obscured diff --git a/vendor/github.com/magiconair/properties/assert/assert.go b/vendor/github.com/magiconair/properties/assert/assert.go deleted file mode 100644 index cb1097baa..000000000 --- a/vendor/github.com/magiconair/properties/assert/assert.go +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package assert provides helper functions for testing. -package assert - -import ( - "fmt" - "path/filepath" - "reflect" - "regexp" - "runtime" - "strings" - "testing" -) - -// skip defines the default call depth -const skip = 2 - -// Equal asserts that got and want are equal as defined by -// reflect.DeepEqual. The test fails with msg if they are not equal. -func Equal(t *testing.T, got, want interface{}, msg ...string) { - if x := equal(2, got, want, msg...); x != "" { - fmt.Println(x) - t.Fail() - } -} - -func equal(skip int, got, want interface{}, msg ...string) string { - if !reflect.DeepEqual(got, want) { - return fail(skip, "got %v want %v %s", got, want, strings.Join(msg, " ")) - } - return "" -} - -// Panic asserts that function fn() panics. -// It assumes that recover() either returns a string or -// an error and fails if the message does not match -// the regular expression in 'matches'. -func Panic(t *testing.T, fn func(), matches string) { - if x := doesPanic(2, fn, matches); x != "" { - fmt.Println(x) - t.Fail() - } -} - -func doesPanic(skip int, fn func(), expr string) (err string) { - defer func() { - r := recover() - if r == nil { - err = fail(skip, "did not panic") - return - } - var v string - switch r.(type) { - case error: - v = r.(error).Error() - case string: - v = r.(string) - } - err = matches(skip, v, expr) - }() - fn() - return "" -} - -// Matches asserts that a value matches a given regular expression. -func Matches(t *testing.T, value, expr string) { - if x := matches(2, value, expr); x != "" { - fmt.Println(x) - t.Fail() - } -} - -func matches(skip int, value, expr string) string { - ok, err := regexp.MatchString(expr, value) - if err != nil { - return fail(skip, "invalid pattern %q. %s", expr, err) - } - if !ok { - return fail(skip, "got %s which does not match %s", value, expr) - } - return "" -} - -func fail(skip int, format string, args ...interface{}) string { - _, file, line, _ := runtime.Caller(skip) - return fmt.Sprintf("\t%s:%d: %s\n", filepath.Base(file), line, fmt.Sprintf(format, args...)) -} diff --git a/vendor/github.com/magiconair/properties/assert/assert_test.go b/vendor/github.com/magiconair/properties/assert/assert_test.go deleted file mode 100644 index dcef73dfc..000000000 --- a/vendor/github.com/magiconair/properties/assert/assert_test.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package assert - -import "testing" - -func TestEqualEquals(t *testing.T) { - if got, want := equal(2, "a", "a"), ""; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestEqualFails(t *testing.T) { - if got, want := equal(2, "a", "b"), "\tassert_test.go:16: got a want b \n"; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestPanicPanics(t *testing.T) { - if got, want := doesPanic(2, func() { panic("foo") }, ""), ""; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestPanicPanicsAndMatches(t *testing.T) { - if got, want := doesPanic(2, func() { panic("foo") }, "foo"), ""; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestPanicPanicsAndDoesNotMatch(t *testing.T) { - if got, want := doesPanic(2, func() { panic("foo") }, "bar"), "\tassert.go:62: got foo which does not match bar\n"; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestPanicPanicsAndDoesNotPanic(t *testing.T) { - if got, want := doesPanic(2, func() {}, "bar"), "\tassert.go:65: did not panic\n"; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestMatchesMatches(t *testing.T) { - if got, want := matches(2, "aaa", "a"), ""; got != want { - t.Fatalf("got %q want %q", got, want) - } -} - -func TestMatchesDoesNotMatch(t *testing.T) { - if got, want := matches(2, "aaa", "b"), "\tassert_test.go:52: got aaa which does not match b\n"; got != want { - t.Fatalf("got %q want %q", got, want) - } -} diff --git a/vendor/github.com/magiconair/properties/benchmark_test.go b/vendor/github.com/magiconair/properties/benchmark_test.go deleted file mode 100644 index 62c7cc571..000000000 --- a/vendor/github.com/magiconair/properties/benchmark_test.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2013-2014 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "testing" -) - -// Benchmarks the decoder by creating a property file with 1000 key/value pairs. -func BenchmarkLoad(b *testing.B) { - input := "" - for i := 0; i < 1000; i++ { - input += fmt.Sprintf("key%d=value%d\n", i, i) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err := Load([]byte(input), ISO_8859_1); err != nil { - b.Fatal(err) - } - } -} diff --git a/vendor/github.com/magiconair/properties/decode.go b/vendor/github.com/magiconair/properties/decode.go deleted file mode 100644 index 0a961bb04..000000000 --- a/vendor/github.com/magiconair/properties/decode.go +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "reflect" - "strconv" - "strings" - "time" -) - -// Decode assigns property values to exported fields of a struct. -// -// Decode traverses v recursively and returns an error if a value cannot be -// converted to the field type or a required value is missing for a field. -// -// The following type dependent decodings are used: -// -// String, boolean, numeric fields have the value of the property key assigned. -// The property key name is the name of the field. A different key and a default -// value can be set in the field's tag. Fields without default value are -// required. If the value cannot be converted to the field type an error is -// returned. -// -// time.Duration fields have the result of time.ParseDuration() assigned. -// -// time.Time fields have the vaule of time.Parse() assigned. The default layout -// is time.RFC3339 but can be set in the field's tag. -// -// Arrays and slices of string, boolean, numeric, time.Duration and time.Time -// fields have the value interpreted as a comma separated list of values. The -// individual values are trimmed of whitespace and empty values are ignored. A -// default value can be provided as a semicolon separated list in the field's -// tag. -// -// Struct fields are decoded recursively using the field name plus "." as -// prefix. The prefix (without dot) can be overridden in the field's tag. -// Default values are not supported in the field's tag. Specify them on the -// fields of the inner struct instead. -// -// Map fields must have a key of type string and are decoded recursively by -// using the field's name plus ".' as prefix and the next element of the key -// name as map key. The prefix (without dot) can be overridden in the field's -// tag. Default values are not supported. -// -// Examples: -// -// // Field is ignored. -// Field int `properties:"-"` -// -// // Field is assigned value of 'Field'. -// Field int -// -// // Field is assigned value of 'myName'. -// Field int `properties:"myName"` -// -// // Field is assigned value of key 'myName' and has a default -// // value 15 if the key does not exist. -// Field int `properties:"myName,default=15"` -// -// // Field is assigned value of key 'Field' and has a default -// // value 15 if the key does not exist. -// Field int `properties:",default=15"` -// -// // Field is assigned value of key 'date' and the date -// // is in format 2006-01-02 -// Field time.Time `properties:"date,layout=2006-01-02"` -// -// // Field is assigned the non-empty and whitespace trimmed -// // values of key 'Field' split by commas. -// Field []string -// -// // Field is assigned the non-empty and whitespace trimmed -// // values of key 'Field' split by commas and has a default -// // value ["a", "b", "c"] if the key does not exist. -// Field []string `properties:",default=a;b;c"` -// -// // Field is decoded recursively with "Field." as key prefix. -// Field SomeStruct -// -// // Field is decoded recursively with "myName." as key prefix. -// Field SomeStruct `properties:"myName"` -// -// // Field is decoded recursively with "Field." as key prefix -// // and the next dotted element of the key as map key. -// Field map[string]string -// -// // Field is decoded recursively with "myName." as key prefix -// // and the next dotted element of the key as map key. -// Field map[string]string `properties:"myName"` -func (p *Properties) Decode(x interface{}) error { - t, v := reflect.TypeOf(x), reflect.ValueOf(x) - if t.Kind() != reflect.Ptr || v.Elem().Type().Kind() != reflect.Struct { - return fmt.Errorf("not a pointer to struct: %s", t) - } - if err := dec(p, "", nil, nil, v); err != nil { - return err - } - return nil -} - -func dec(p *Properties, key string, def *string, opts map[string]string, v reflect.Value) error { - t := v.Type() - - // value returns the property value for key or the default if provided. - value := func() (string, error) { - if val, ok := p.Get(key); ok { - return val, nil - } - if def != nil { - return *def, nil - } - return "", fmt.Errorf("missing required key %s", key) - } - - // conv converts a string to a value of the given type. - conv := func(s string, t reflect.Type) (val reflect.Value, err error) { - var v interface{} - - switch { - case isDuration(t): - v, err = time.ParseDuration(s) - - case isTime(t): - layout := opts["layout"] - if layout == "" { - layout = time.RFC3339 - } - v, err = time.Parse(layout, s) - - case isBool(t): - v, err = boolVal(s), nil - - case isString(t): - v, err = s, nil - - case isFloat(t): - v, err = strconv.ParseFloat(s, 64) - - case isInt(t): - v, err = strconv.ParseInt(s, 10, 64) - - case isUint(t): - v, err = strconv.ParseUint(s, 10, 64) - - default: - return reflect.Zero(t), fmt.Errorf("unsupported type %s", t) - } - if err != nil { - return reflect.Zero(t), err - } - return reflect.ValueOf(v).Convert(t), nil - } - - // keydef returns the property key and the default value based on the - // name of the struct field and the options in the tag. - keydef := func(f reflect.StructField) (string, *string, map[string]string) { - _key, _opts := parseTag(f.Tag.Get("properties")) - - var _def *string - if d, ok := _opts["default"]; ok { - _def = &d - } - if _key != "" { - return _key, _def, _opts - } - return f.Name, _def, _opts - } - - switch { - case isDuration(t) || isTime(t) || isBool(t) || isString(t) || isFloat(t) || isInt(t) || isUint(t): - s, err := value() - if err != nil { - return err - } - val, err := conv(s, t) - if err != nil { - return err - } - v.Set(val) - - case isPtr(t): - return dec(p, key, def, opts, v.Elem()) - - case isStruct(t): - for i := 0; i < v.NumField(); i++ { - fv := v.Field(i) - fk, def, opts := keydef(t.Field(i)) - if !fv.CanSet() { - return fmt.Errorf("cannot set %s", t.Field(i).Name) - } - if fk == "-" { - continue - } - if key != "" { - fk = key + "." + fk - } - if err := dec(p, fk, def, opts, fv); err != nil { - return err - } - } - return nil - - case isArray(t): - val, err := value() - if err != nil { - return err - } - vals := split(val, ";") - a := reflect.MakeSlice(t, 0, len(vals)) - for _, s := range vals { - val, err := conv(s, t.Elem()) - if err != nil { - return err - } - a = reflect.Append(a, val) - } - v.Set(a) - - case isMap(t): - valT := t.Elem() - m := reflect.MakeMap(t) - for postfix := range p.FilterStripPrefix(key + ".").m { - pp := strings.SplitN(postfix, ".", 2) - mk, mv := pp[0], reflect.New(valT) - if err := dec(p, key+"."+mk, nil, nil, mv); err != nil { - return err - } - m.SetMapIndex(reflect.ValueOf(mk), mv.Elem()) - } - v.Set(m) - - default: - return fmt.Errorf("unsupported type %s", t) - } - return nil -} - -// split splits a string on sep, trims whitespace of elements -// and omits empty elements -func split(s string, sep string) []string { - var a []string - for _, v := range strings.Split(s, sep) { - if v = strings.TrimSpace(v); v != "" { - a = append(a, v) - } - } - return a -} - -// parseTag parses a "key,k=v,k=v,..." -func parseTag(tag string) (key string, opts map[string]string) { - opts = map[string]string{} - for i, s := range strings.Split(tag, ",") { - if i == 0 { - key = s - continue - } - - pp := strings.SplitN(s, "=", 2) - if len(pp) == 1 { - opts[pp[0]] = "" - } else { - opts[pp[0]] = pp[1] - } - } - return key, opts -} - -func isArray(t reflect.Type) bool { return t.Kind() == reflect.Array || t.Kind() == reflect.Slice } -func isBool(t reflect.Type) bool { return t.Kind() == reflect.Bool } -func isDuration(t reflect.Type) bool { return t == reflect.TypeOf(time.Second) } -func isMap(t reflect.Type) bool { return t.Kind() == reflect.Map } -func isPtr(t reflect.Type) bool { return t.Kind() == reflect.Ptr } -func isString(t reflect.Type) bool { return t.Kind() == reflect.String } -func isStruct(t reflect.Type) bool { return t.Kind() == reflect.Struct } -func isTime(t reflect.Type) bool { return t == reflect.TypeOf(time.Time{}) } -func isFloat(t reflect.Type) bool { - return t.Kind() == reflect.Float32 || t.Kind() == reflect.Float64 -} -func isInt(t reflect.Type) bool { - return t.Kind() == reflect.Int || t.Kind() == reflect.Int8 || t.Kind() == reflect.Int16 || t.Kind() == reflect.Int32 || t.Kind() == reflect.Int64 -} -func isUint(t reflect.Type) bool { - return t.Kind() == reflect.Uint || t.Kind() == reflect.Uint8 || t.Kind() == reflect.Uint16 || t.Kind() == reflect.Uint32 || t.Kind() == reflect.Uint64 -} diff --git a/vendor/github.com/magiconair/properties/decode_test.go b/vendor/github.com/magiconair/properties/decode_test.go deleted file mode 100644 index c82931482..000000000 --- a/vendor/github.com/magiconair/properties/decode_test.go +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "reflect" - "testing" - "time" -) - -func TestDecodeValues(t *testing.T) { - type S struct { - S string - BT bool - BF bool - I int - I8 int8 - I16 int16 - I32 int32 - I64 int64 - U uint - U8 uint8 - U16 uint16 - U32 uint32 - U64 uint64 - F32 float32 - F64 float64 - D time.Duration - TM time.Time - } - in := ` - S=abc - BT=true - BF=false - I=-1 - I8=-8 - I16=-16 - I32=-32 - I64=-64 - U=1 - U8=8 - U16=16 - U32=32 - U64=64 - F32=3.2 - F64=6.4 - D=5s - TM=2015-01-02T12:34:56Z - ` - out := &S{ - S: "abc", - BT: true, - BF: false, - I: -1, - I8: -8, - I16: -16, - I32: -32, - I64: -64, - U: 1, - U8: 8, - U16: 16, - U32: 32, - U64: 64, - F32: 3.2, - F64: 6.4, - D: 5 * time.Second, - TM: tm(t, time.RFC3339, "2015-01-02T12:34:56Z"), - } - testDecode(t, in, &S{}, out) -} - -func TestDecodeValueDefaults(t *testing.T) { - type S struct { - S string `properties:",default=abc"` - BT bool `properties:",default=true"` - BF bool `properties:",default=false"` - I int `properties:",default=-1"` - I8 int8 `properties:",default=-8"` - I16 int16 `properties:",default=-16"` - I32 int32 `properties:",default=-32"` - I64 int64 `properties:",default=-64"` - U uint `properties:",default=1"` - U8 uint8 `properties:",default=8"` - U16 uint16 `properties:",default=16"` - U32 uint32 `properties:",default=32"` - U64 uint64 `properties:",default=64"` - F32 float32 `properties:",default=3.2"` - F64 float64 `properties:",default=6.4"` - D time.Duration `properties:",default=5s"` - TM time.Time `properties:",default=2015-01-02T12:34:56Z"` - } - out := &S{ - S: "abc", - BT: true, - BF: false, - I: -1, - I8: -8, - I16: -16, - I32: -32, - I64: -64, - U: 1, - U8: 8, - U16: 16, - U32: 32, - U64: 64, - F32: 3.2, - F64: 6.4, - D: 5 * time.Second, - TM: tm(t, time.RFC3339, "2015-01-02T12:34:56Z"), - } - testDecode(t, "", &S{}, out) -} - -func TestDecodeArrays(t *testing.T) { - type S struct { - S []string - B []bool - I []int - I8 []int8 - I16 []int16 - I32 []int32 - I64 []int64 - U []uint - U8 []uint8 - U16 []uint16 - U32 []uint32 - U64 []uint64 - F32 []float32 - F64 []float64 - D []time.Duration - TM []time.Time - } - in := ` - S=a;b - B=true;false - I=-1;-2 - I8=-8;-9 - I16=-16;-17 - I32=-32;-33 - I64=-64;-65 - U=1;2 - U8=8;9 - U16=16;17 - U32=32;33 - U64=64;65 - F32=3.2;3.3 - F64=6.4;6.5 - D=4s;5s - TM=2015-01-01T00:00:00Z;2016-01-01T00:00:00Z - ` - out := &S{ - S: []string{"a", "b"}, - B: []bool{true, false}, - I: []int{-1, -2}, - I8: []int8{-8, -9}, - I16: []int16{-16, -17}, - I32: []int32{-32, -33}, - I64: []int64{-64, -65}, - U: []uint{1, 2}, - U8: []uint8{8, 9}, - U16: []uint16{16, 17}, - U32: []uint32{32, 33}, - U64: []uint64{64, 65}, - F32: []float32{3.2, 3.3}, - F64: []float64{6.4, 6.5}, - D: []time.Duration{4 * time.Second, 5 * time.Second}, - TM: []time.Time{tm(t, time.RFC3339, "2015-01-01T00:00:00Z"), tm(t, time.RFC3339, "2016-01-01T00:00:00Z")}, - } - testDecode(t, in, &S{}, out) -} - -func TestDecodeArrayDefaults(t *testing.T) { - type S struct { - S []string `properties:",default=a;b"` - B []bool `properties:",default=true;false"` - I []int `properties:",default=-1;-2"` - I8 []int8 `properties:",default=-8;-9"` - I16 []int16 `properties:",default=-16;-17"` - I32 []int32 `properties:",default=-32;-33"` - I64 []int64 `properties:",default=-64;-65"` - U []uint `properties:",default=1;2"` - U8 []uint8 `properties:",default=8;9"` - U16 []uint16 `properties:",default=16;17"` - U32 []uint32 `properties:",default=32;33"` - U64 []uint64 `properties:",default=64;65"` - F32 []float32 `properties:",default=3.2;3.3"` - F64 []float64 `properties:",default=6.4;6.5"` - D []time.Duration `properties:",default=4s;5s"` - TM []time.Time `properties:",default=2015-01-01T00:00:00Z;2016-01-01T00:00:00Z"` - } - out := &S{ - S: []string{"a", "b"}, - B: []bool{true, false}, - I: []int{-1, -2}, - I8: []int8{-8, -9}, - I16: []int16{-16, -17}, - I32: []int32{-32, -33}, - I64: []int64{-64, -65}, - U: []uint{1, 2}, - U8: []uint8{8, 9}, - U16: []uint16{16, 17}, - U32: []uint32{32, 33}, - U64: []uint64{64, 65}, - F32: []float32{3.2, 3.3}, - F64: []float64{6.4, 6.5}, - D: []time.Duration{4 * time.Second, 5 * time.Second}, - TM: []time.Time{tm(t, time.RFC3339, "2015-01-01T00:00:00Z"), tm(t, time.RFC3339, "2016-01-01T00:00:00Z")}, - } - testDecode(t, "", &S{}, out) -} - -func TestDecodeSkipUndef(t *testing.T) { - type S struct { - X string `properties:"-"` - Undef string `properties:",default=some value"` - } - in := `X=ignore` - out := &S{"", "some value"} - testDecode(t, in, &S{}, out) -} - -func TestDecodeStruct(t *testing.T) { - type A struct { - S string - T string `properties:"t"` - U string `properties:"u,default=uuu"` - } - type S struct { - A A - B A `properties:"b"` - } - in := ` - A.S=sss - A.t=ttt - b.S=SSS - b.t=TTT - ` - out := &S{ - A{S: "sss", T: "ttt", U: "uuu"}, - A{S: "SSS", T: "TTT", U: "uuu"}, - } - testDecode(t, in, &S{}, out) -} - -func TestDecodeMap(t *testing.T) { - type S struct { - A string `properties:"a"` - } - type X struct { - A map[string]string - B map[string][]string - C map[string]map[string]string - D map[string]S - E map[string]int - F map[string]int `properties:"-"` - } - in := ` - A.foo=bar - A.bar=bang - B.foo=a;b;c - B.bar=1;2;3 - C.foo.one=1 - C.foo.two=2 - C.bar.three=3 - C.bar.four=4 - D.foo.a=bar - ` - out := &X{ - A: map[string]string{"foo": "bar", "bar": "bang"}, - B: map[string][]string{"foo": []string{"a", "b", "c"}, "bar": []string{"1", "2", "3"}}, - C: map[string]map[string]string{"foo": map[string]string{"one": "1", "two": "2"}, "bar": map[string]string{"three": "3", "four": "4"}}, - D: map[string]S{"foo": S{"bar"}}, - E: map[string]int{}, - } - testDecode(t, in, &X{}, out) -} - -func testDecode(t *testing.T, in string, v, out interface{}) { - p, err := parse(in) - if err != nil { - t.Fatalf("got %v want nil", err) - } - if err := p.Decode(v); err != nil { - t.Fatalf("got %v want nil", err) - } - if got, want := v, out; !reflect.DeepEqual(got, want) { - t.Fatalf("\ngot %+v\nwant %+v", got, want) - } -} - -func tm(t *testing.T, layout, s string) time.Time { - tm, err := time.Parse(layout, s) - if err != nil { - t.Fatalf("got %v want nil", err) - } - return tm -} diff --git a/vendor/github.com/magiconair/properties/doc.go b/vendor/github.com/magiconair/properties/doc.go deleted file mode 100644 index 36c836808..000000000 --- a/vendor/github.com/magiconair/properties/doc.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package properties provides functions for reading and writing -// ISO-8859-1 and UTF-8 encoded .properties files and has -// support for recursive property expansion. -// -// Java properties files are ISO-8859-1 encoded and use Unicode -// literals for characters outside the ISO character set. Unicode -// literals can be used in UTF-8 encoded properties files but -// aren't necessary. -// -// To load a single properties file use MustLoadFile(): -// -// p := properties.MustLoadFile(filename, properties.UTF8) -// -// To load multiple properties files use MustLoadFiles() -// which loads the files in the given order and merges the -// result. Missing properties files can be ignored if the -// 'ignoreMissing' flag is set to true. -// -// Filenames can contain environment variables which are expanded -// before loading. -// -// f1 := "/etc/myapp/myapp.conf" -// f2 := "/home/${USER}/myapp.conf" -// p := MustLoadFiles([]string{f1, f2}, properties.UTF8, true) -// -// All of the different key/value delimiters ' ', ':' and '=' are -// supported as well as the comment characters '!' and '#' and -// multi-line values. -// -// ! this is a comment -// # and so is this -// -// # the following expressions are equal -// key value -// key=value -// key:value -// key = value -// key : value -// key = val\ -// ue -// -// Properties stores all comments preceding a key and provides -// GetComments() and SetComments() methods to retrieve and -// update them. The convenience functions GetComment() and -// SetComment() allow access to the last comment. The -// WriteComment() method writes properties files including -// the comments and with the keys in the original order. -// This can be used for sanitizing properties files. -// -// Property expansion is recursive and circular references -// and malformed expressions are not allowed and cause an -// error. Expansion of environment variables is supported. -// -// # standard property -// key = value -// -// # property expansion: key2 = value -// key2 = ${key} -// -// # recursive expansion: key3 = value -// key3 = ${key2} -// -// # circular reference (error) -// key = ${key} -// -// # malformed expression (error) -// key = ${ke -// -// # refers to the users' home dir -// home = ${HOME} -// -// # local key takes precendence over env var: u = foo -// USER = foo -// u = ${USER} -// -// The default property expansion format is ${key} but can be -// changed by setting different pre- and postfix values on the -// Properties object. -// -// p := properties.NewProperties() -// p.Prefix = "#[" -// p.Postfix = "]#" -// -// Properties provides convenience functions for getting typed -// values with default values if the key does not exist or the -// type conversion failed. -// -// # Returns true if the value is either "1", "on", "yes" or "true" -// # Returns false for every other value and the default value if -// # the key does not exist. -// v = p.GetBool("key", false) -// -// # Returns the value if the key exists and the format conversion -// # was successful. Otherwise, the default value is returned. -// v = p.GetInt64("key", 999) -// v = p.GetUint64("key", 999) -// v = p.GetFloat64("key", 123.0) -// v = p.GetString("key", "def") -// v = p.GetDuration("key", 999) -// -// As an alterantive properties may be applied with the standard -// library's flag implementation at any time. -// -// # Standard configuration -// v = flag.Int("key", 999, "help message") -// flag.Parse() -// -// # Merge p into the flag set -// p.MustFlag(flag.CommandLine) -// -// Properties provides several MustXXX() convenience functions -// which will terminate the app if an error occurs. The behavior -// of the failure is configurable and the default is to call -// log.Fatal(err). To have the MustXXX() functions panic instead -// of logging the error set a different ErrorHandler before -// you use the Properties package. -// -// properties.ErrorHandler = properties.PanicHandler -// -// # Will panic instead of logging an error -// p := properties.MustLoadFile("config.properties") -// -// You can also provide your own ErrorHandler function. The only requirement -// is that the error handler function must exit after handling the error. -// -// properties.ErrorHandler = func(err error) { -// fmt.Println(err) -// os.Exit(1) -// } -// -// # Will write to stdout and then exit -// p := properties.MustLoadFile("config.properties") -// -// Properties can also be loaded into a struct via the `Decode` -// method, e.g. -// -// type S struct { -// A string `properties:"a,default=foo"` -// D time.Duration `properties:"timeout,default=5s"` -// E time.Time `properties:"expires,layout=2006-01-02,default=2015-01-01"` -// } -// -// See `Decode()` method for the full documentation. -// -// The following documents provide a description of the properties -// file format. -// -// http://en.wikipedia.org/wiki/.properties -// -// http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load%28java.io.Reader%29 -// -package properties diff --git a/vendor/github.com/magiconair/properties/example_test.go b/vendor/github.com/magiconair/properties/example_test.go deleted file mode 100644 index 6f21dfbd8..000000000 --- a/vendor/github.com/magiconair/properties/example_test.go +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "log" -) - -func ExampleLoad_iso88591() { - buf := []byte("key = ISO-8859-1 value with unicode literal \\u2318 and umlaut \xE4") // 0xE4 == ä - p, _ := Load(buf, ISO_8859_1) - v, ok := p.Get("key") - fmt.Println(ok) - fmt.Println(v) - // Output: - // true - // ISO-8859-1 value with unicode literal ⌘ and umlaut ä -} - -func ExampleLoad_utf8() { - p, _ := Load([]byte("key = UTF-8 value with unicode character ⌘ and umlaut ä"), UTF8) - v, ok := p.Get("key") - fmt.Println(ok) - fmt.Println(v) - // Output: - // true - // UTF-8 value with unicode character ⌘ and umlaut ä -} - -func ExampleProperties_GetBool() { - var input = ` - key=1 - key2=On - key3=YES - key4=true` - p, _ := Load([]byte(input), ISO_8859_1) - fmt.Println(p.GetBool("key", false)) - fmt.Println(p.GetBool("key2", false)) - fmt.Println(p.GetBool("key3", false)) - fmt.Println(p.GetBool("key4", false)) - fmt.Println(p.GetBool("keyX", false)) - // Output: - // true - // true - // true - // true - // false -} - -func ExampleProperties_GetString() { - p, _ := Load([]byte("key=value"), ISO_8859_1) - v := p.GetString("another key", "default value") - fmt.Println(v) - // Output: - // default value -} - -func Example() { - // Decode some key/value pairs with expressions - p, err := Load([]byte("key=value\nkey2=${key}"), ISO_8859_1) - if err != nil { - log.Fatal(err) - } - - // Get a valid key - if v, ok := p.Get("key"); ok { - fmt.Println(v) - } - - // Get an invalid key - if _, ok := p.Get("does not exist"); !ok { - fmt.Println("invalid key") - } - - // Get a key with a default value - v := p.GetString("does not exist", "some value") - fmt.Println(v) - - // Dump the expanded key/value pairs of the Properties - fmt.Println("Expanded key/value pairs") - fmt.Println(p) - - // Output: - // value - // invalid key - // some value - // Expanded key/value pairs - // key = value - // key2 = value -} diff --git a/vendor/github.com/magiconair/properties/integrate.go b/vendor/github.com/magiconair/properties/integrate.go deleted file mode 100644 index 0d775e035..000000000 --- a/vendor/github.com/magiconair/properties/integrate.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import "flag" - -// MustFlag sets flags that are skipped by dst.Parse when p contains -// the respective key for flag.Flag.Name. -// -// It's use is recommended with command line arguments as in: -// flag.Parse() -// p.MustFlag(flag.CommandLine) -func (p *Properties) MustFlag(dst *flag.FlagSet) { - m := make(map[string]*flag.Flag) - dst.VisitAll(func(f *flag.Flag) { - m[f.Name] = f - }) - dst.Visit(func(f *flag.Flag) { - delete(m, f.Name) // overridden - }) - - for name, f := range m { - v, ok := p.Get(name) - if !ok { - continue - } - - if err := f.Value.Set(v); err != nil { - ErrorHandler(err) - } - } -} diff --git a/vendor/github.com/magiconair/properties/integrate_test.go b/vendor/github.com/magiconair/properties/integrate_test.go deleted file mode 100644 index cbee181f6..000000000 --- a/vendor/github.com/magiconair/properties/integrate_test.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "flag" - "fmt" - "testing" -) - -// TestFlag verifies Properties.MustFlag without flag.FlagSet.Parse -func TestFlag(t *testing.T) { - f := flag.NewFlagSet("src", flag.PanicOnError) - gotS := f.String("s", "?", "string flag") - gotI := f.Int("i", -1, "int flag") - - p := NewProperties() - p.MustSet("s", "t") - p.MustSet("i", "9") - p.MustFlag(f) - - if want := "t"; *gotS != want { - t.Errorf("Got string s=%q, want %q", *gotS, want) - } - if want := 9; *gotI != want { - t.Errorf("Got int i=%d, want %d", *gotI, want) - } -} - -// TestFlagOverride verifies Properties.MustFlag with flag.FlagSet.Parse. -func TestFlagOverride(t *testing.T) { - f := flag.NewFlagSet("src", flag.PanicOnError) - gotA := f.Int("a", 1, "remain default") - gotB := f.Int("b", 2, "customized") - gotC := f.Int("c", 3, "overridden") - - if err := f.Parse([]string{"-c", "4"}); err != nil { - t.Fatal(err) - } - - p := NewProperties() - p.MustSet("b", "5") - p.MustSet("c", "6") - p.MustFlag(f) - - if want := 1; *gotA != want { - t.Errorf("Got remain default a=%d, want %d", *gotA, want) - } - if want := 5; *gotB != want { - t.Errorf("Got customized b=%d, want %d", *gotB, want) - } - if want := 4; *gotC != want { - t.Errorf("Got overriden c=%d, want %d", *gotC, want) - } -} - -func ExampleProperties_MustFlag() { - x := flag.Int("x", 0, "demo customize") - y := flag.Int("y", 0, "demo override") - - // Demo alternative for flag.Parse(): - flag.CommandLine.Parse([]string{"-y", "10"}) - fmt.Printf("flagged as x=%d, y=%d\n", *x, *y) - - p := NewProperties() - p.MustSet("x", "7") - p.MustSet("y", "42") // note discard - p.MustFlag(flag.CommandLine) - fmt.Printf("configured to x=%d, y=%d\n", *x, *y) - - // Output: - // flagged as x=0, y=10 - // configured to x=7, y=10 -} diff --git a/vendor/github.com/magiconair/properties/lex.go b/vendor/github.com/magiconair/properties/lex.go deleted file mode 100644 index a3cba0319..000000000 --- a/vendor/github.com/magiconair/properties/lex.go +++ /dev/null @@ -1,408 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. -// -// Parts of the lexer are from the template/text/parser package -// For these parts the following applies: -// -// Copyright 2011 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 of the go 1.2 -// distribution. - -package properties - -import ( - "fmt" - "strconv" - "strings" - "unicode/utf8" -) - -// item represents a token or text string returned from the scanner. -type item struct { - typ itemType // The type of this item. - pos int // The starting position, in bytes, of this item in the input string. - val string // The value of this item. -} - -func (i item) String() string { - switch { - case i.typ == itemEOF: - return "EOF" - case i.typ == itemError: - return i.val - case len(i.val) > 10: - return fmt.Sprintf("%.10q...", i.val) - } - return fmt.Sprintf("%q", i.val) -} - -// itemType identifies the type of lex items. -type itemType int - -const ( - itemError itemType = iota // error occurred; value is text of error - itemEOF - itemKey // a key - itemValue // a value - itemComment // a comment -) - -// defines a constant for EOF -const eof = -1 - -// permitted whitespace characters space, FF and TAB -const whitespace = " \f\t" - -// stateFn represents the state of the scanner as a function that returns the next state. -type stateFn func(*lexer) stateFn - -// lexer holds the state of the scanner. -type lexer struct { - input string // the string being scanned - state stateFn // the next lexing function to enter - pos int // current position in the input - start int // start position of this item - width int // width of last rune read from input - lastPos int // position of most recent item returned by nextItem - runes []rune // scanned runes for this item - items chan item // channel of scanned items -} - -// next returns the next rune in the input. -func (l *lexer) next() rune { - if l.pos >= len(l.input) { - l.width = 0 - return eof - } - r, w := utf8.DecodeRuneInString(l.input[l.pos:]) - l.width = w - l.pos += l.width - return r -} - -// peek returns but does not consume the next rune in the input. -func (l *lexer) peek() rune { - r := l.next() - l.backup() - return r -} - -// backup steps back one rune. Can only be called once per call of next. -func (l *lexer) backup() { - l.pos -= l.width -} - -// emit passes an item back to the client. -func (l *lexer) emit(t itemType) { - i := item{t, l.start, string(l.runes)} - l.items <- i - l.start = l.pos - l.runes = l.runes[:0] -} - -// ignore skips over the pending input before this point. -func (l *lexer) ignore() { - l.start = l.pos -} - -// appends the rune to the current value -func (l *lexer) appendRune(r rune) { - l.runes = append(l.runes, r) -} - -// accept consumes the next rune if it's from the valid set. -func (l *lexer) accept(valid string) bool { - if strings.ContainsRune(valid, l.next()) { - return true - } - l.backup() - return false -} - -// acceptRun consumes a run of runes from the valid set. -func (l *lexer) acceptRun(valid string) { - for strings.ContainsRune(valid, l.next()) { - } - l.backup() -} - -// acceptRunUntil consumes a run of runes up to a terminator. -func (l *lexer) acceptRunUntil(term rune) { - for term != l.next() { - } - l.backup() -} - -// hasText returns true if the current parsed text is not empty. -func (l *lexer) isNotEmpty() bool { - return l.pos > l.start -} - -// lineNumber reports which line we're on, based on the position of -// the previous item returned by nextItem. Doing it this way -// means we don't have to worry about peek double counting. -func (l *lexer) lineNumber() int { - return 1 + strings.Count(l.input[:l.lastPos], "\n") -} - -// errorf returns an error token and terminates the scan by passing -// back a nil pointer that will be the next state, terminating l.nextItem. -func (l *lexer) errorf(format string, args ...interface{}) stateFn { - l.items <- item{itemError, l.start, fmt.Sprintf(format, args...)} - return nil -} - -// nextItem returns the next item from the input. -func (l *lexer) nextItem() item { - i := <-l.items - l.lastPos = i.pos - return i -} - -// lex creates a new scanner for the input string. -func lex(input string) *lexer { - l := &lexer{ - input: input, - items: make(chan item), - runes: make([]rune, 0, 32), - } - go l.run() - return l -} - -// run runs the state machine for the lexer. -func (l *lexer) run() { - for l.state = lexBeforeKey(l); l.state != nil; { - l.state = l.state(l) - } -} - -// state functions - -// lexBeforeKey scans until a key begins. -func lexBeforeKey(l *lexer) stateFn { - switch r := l.next(); { - case isEOF(r): - l.emit(itemEOF) - return nil - - case isEOL(r): - l.ignore() - return lexBeforeKey - - case isComment(r): - return lexComment - - case isWhitespace(r): - l.acceptRun(whitespace) - l.ignore() - return lexKey - - default: - l.backup() - return lexKey - } -} - -// lexComment scans a comment line. The comment character has already been scanned. -func lexComment(l *lexer) stateFn { - l.acceptRun(whitespace) - l.ignore() - for { - switch r := l.next(); { - case isEOF(r): - l.ignore() - l.emit(itemEOF) - return nil - case isEOL(r): - l.emit(itemComment) - return lexBeforeKey - default: - l.appendRune(r) - } - } -} - -// lexKey scans the key up to a delimiter -func lexKey(l *lexer) stateFn { - var r rune - -Loop: - for { - switch r = l.next(); { - - case isEscape(r): - err := l.scanEscapeSequence() - if err != nil { - return l.errorf(err.Error()) - } - - case isEndOfKey(r): - l.backup() - break Loop - - case isEOF(r): - break Loop - - default: - l.appendRune(r) - } - } - - if len(l.runes) > 0 { - l.emit(itemKey) - } - - if isEOF(r) { - l.emit(itemEOF) - return nil - } - - return lexBeforeValue -} - -// lexBeforeValue scans the delimiter between key and value. -// Leading and trailing whitespace is ignored. -// We expect to be just after the key. -func lexBeforeValue(l *lexer) stateFn { - l.acceptRun(whitespace) - l.accept(":=") - l.acceptRun(whitespace) - l.ignore() - return lexValue -} - -// lexValue scans text until the end of the line. We expect to be just after the delimiter. -func lexValue(l *lexer) stateFn { - for { - switch r := l.next(); { - case isEscape(r): - if isEOL(l.peek()) { - l.next() - l.acceptRun(whitespace) - } else { - err := l.scanEscapeSequence() - if err != nil { - return l.errorf(err.Error()) - } - } - - case isEOL(r): - l.emit(itemValue) - l.ignore() - return lexBeforeKey - - case isEOF(r): - l.emit(itemValue) - l.emit(itemEOF) - return nil - - default: - l.appendRune(r) - } - } -} - -// scanEscapeSequence scans either one of the escaped characters -// or a unicode literal. We expect to be after the escape character. -func (l *lexer) scanEscapeSequence() error { - switch r := l.next(); { - - case isEscapedCharacter(r): - l.appendRune(decodeEscapedCharacter(r)) - return nil - - case atUnicodeLiteral(r): - return l.scanUnicodeLiteral() - - case isEOF(r): - return fmt.Errorf("premature EOF") - - // silently drop the escape character and append the rune as is - default: - l.appendRune(r) - return nil - } -} - -// scans a unicode literal in the form \uXXXX. We expect to be after the \u. -func (l *lexer) scanUnicodeLiteral() error { - // scan the digits - d := make([]rune, 4) - for i := 0; i < 4; i++ { - d[i] = l.next() - if d[i] == eof || !strings.ContainsRune("0123456789abcdefABCDEF", d[i]) { - return fmt.Errorf("invalid unicode literal") - } - } - - // decode the digits into a rune - r, err := strconv.ParseInt(string(d), 16, 0) - if err != nil { - return err - } - - l.appendRune(rune(r)) - return nil -} - -// decodeEscapedCharacter returns the unescaped rune. We expect to be after the escape character. -func decodeEscapedCharacter(r rune) rune { - switch r { - case 'f': - return '\f' - case 'n': - return '\n' - case 'r': - return '\r' - case 't': - return '\t' - default: - return r - } -} - -// atUnicodeLiteral reports whether we are at a unicode literal. -// The escape character has already been consumed. -func atUnicodeLiteral(r rune) bool { - return r == 'u' -} - -// isComment reports whether we are at the start of a comment. -func isComment(r rune) bool { - return r == '#' || r == '!' -} - -// isEndOfKey reports whether the rune terminates the current key. -func isEndOfKey(r rune) bool { - return strings.ContainsRune(" \f\t\r\n:=", r) -} - -// isEOF reports whether we are at EOF. -func isEOF(r rune) bool { - return r == eof -} - -// isEOL reports whether we are at a new line character. -func isEOL(r rune) bool { - return r == '\n' || r == '\r' -} - -// isEscape reports whether the rune is the escape character which -// prefixes unicode literals and other escaped characters. -func isEscape(r rune) bool { - return r == '\\' -} - -// isEscapedCharacter reports whether we are at one of the characters that need escaping. -// The escape character has already been consumed. -func isEscapedCharacter(r rune) bool { - return strings.ContainsRune(" :=fnrt", r) -} - -// isWhitespace reports whether the rune is a whitespace character. -func isWhitespace(r rune) bool { - return strings.ContainsRune(whitespace, r) -} diff --git a/vendor/github.com/magiconair/properties/load.go b/vendor/github.com/magiconair/properties/load.go deleted file mode 100644 index 278cc2ea0..000000000 --- a/vendor/github.com/magiconair/properties/load.go +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "io/ioutil" - "net/http" - "os" - "strings" -) - -// Encoding specifies encoding of the input data. -type Encoding uint - -const ( - // UTF8 interprets the input data as UTF-8. - UTF8 Encoding = 1 << iota - - // ISO_8859_1 interprets the input data as ISO-8859-1. - ISO_8859_1 -) - -// Load reads a buffer into a Properties struct. -func Load(buf []byte, enc Encoding) (*Properties, error) { - return loadBuf(buf, enc) -} - -// LoadString reads an UTF8 string into a properties struct. -func LoadString(s string) (*Properties, error) { - return loadBuf([]byte(s), UTF8) -} - -// LoadMap creates a new Properties struct from a string map. -func LoadMap(m map[string]string) *Properties { - p := NewProperties() - for k, v := range m { - p.Set(k, v) - } - return p -} - -// LoadFile reads a file into a Properties struct. -func LoadFile(filename string, enc Encoding) (*Properties, error) { - return loadAll([]string{filename}, enc, false) -} - -// LoadFiles reads multiple files in the given order into -// a Properties struct. If 'ignoreMissing' is true then -// non-existent files will not be reported as error. -func LoadFiles(filenames []string, enc Encoding, ignoreMissing bool) (*Properties, error) { - return loadAll(filenames, enc, ignoreMissing) -} - -// LoadURL reads the content of the URL into a Properties struct. -// -// The encoding is determined via the Content-Type header which -// should be set to 'text/plain'. If the 'charset' parameter is -// missing, 'iso-8859-1' or 'latin1' the encoding is set to -// ISO-8859-1. If the 'charset' parameter is set to 'utf-8' the -// encoding is set to UTF-8. A missing content type header is -// interpreted as 'text/plain; charset=utf-8'. -func LoadURL(url string) (*Properties, error) { - return loadAll([]string{url}, UTF8, false) -} - -// LoadURLs reads the content of multiple URLs in the given order into a -// Properties struct. If 'ignoreMissing' is true then a 404 status code will -// not be reported as error. See LoadURL for the Content-Type header -// and the encoding. -func LoadURLs(urls []string, ignoreMissing bool) (*Properties, error) { - return loadAll(urls, UTF8, ignoreMissing) -} - -// LoadAll reads the content of multiple URLs or files in the given order into a -// Properties struct. If 'ignoreMissing' is true then a 404 status code or missing file will -// not be reported as error. Encoding sets the encoding for files. For the URLs please see -// LoadURL for the Content-Type header and the encoding. -func LoadAll(names []string, enc Encoding, ignoreMissing bool) (*Properties, error) { - return loadAll(names, enc, ignoreMissing) -} - -// MustLoadString reads an UTF8 string into a Properties struct and -// panics on error. -func MustLoadString(s string) *Properties { - return must(LoadString(s)) -} - -// MustLoadFile reads a file into a Properties struct and -// panics on error. -func MustLoadFile(filename string, enc Encoding) *Properties { - return must(LoadFile(filename, enc)) -} - -// MustLoadFiles reads multiple files in the given order into -// a Properties struct and panics on error. If 'ignoreMissing' -// is true then non-existent files will not be reported as error. -func MustLoadFiles(filenames []string, enc Encoding, ignoreMissing bool) *Properties { - return must(LoadFiles(filenames, enc, ignoreMissing)) -} - -// MustLoadURL reads the content of a URL into a Properties struct and -// panics on error. -func MustLoadURL(url string) *Properties { - return must(LoadURL(url)) -} - -// MustLoadURLs reads the content of multiple URLs in the given order into a -// Properties struct and panics on error. If 'ignoreMissing' is true then a 404 -// status code will not be reported as error. -func MustLoadURLs(urls []string, ignoreMissing bool) *Properties { - return must(LoadURLs(urls, ignoreMissing)) -} - -// MustLoadAll reads the content of multiple URLs or files in the given order into a -// Properties struct. If 'ignoreMissing' is true then a 404 status code or missing file will -// not be reported as error. Encoding sets the encoding for files. For the URLs please see -// LoadURL for the Content-Type header and the encoding. It panics on error. -func MustLoadAll(names []string, enc Encoding, ignoreMissing bool) *Properties { - return must(LoadAll(names, enc, ignoreMissing)) -} - -func loadBuf(buf []byte, enc Encoding) (*Properties, error) { - p, err := parse(convert(buf, enc)) - if err != nil { - return nil, err - } - return p, p.check() -} - -func loadAll(names []string, enc Encoding, ignoreMissing bool) (*Properties, error) { - result := NewProperties() - for _, name := range names { - n, err := expandName(name) - if err != nil { - return nil, err - } - var p *Properties - if strings.HasPrefix(n, "http://") || strings.HasPrefix(n, "https://") { - p, err = loadURL(n, ignoreMissing) - } else { - p, err = loadFile(n, enc, ignoreMissing) - } - if err != nil { - return nil, err - } - result.Merge(p) - - } - return result, result.check() -} - -func loadFile(filename string, enc Encoding, ignoreMissing bool) (*Properties, error) { - data, err := ioutil.ReadFile(filename) - if err != nil { - if ignoreMissing && os.IsNotExist(err) { - LogPrintf("properties: %s not found. skipping", filename) - return NewProperties(), nil - } - return nil, err - } - p, err := parse(convert(data, enc)) - if err != nil { - return nil, err - } - return p, nil -} - -func loadURL(url string, ignoreMissing bool) (*Properties, error) { - resp, err := http.Get(url) - if err != nil { - return nil, fmt.Errorf("properties: error fetching %q. %s", url, err) - } - if resp.StatusCode == 404 && ignoreMissing { - LogPrintf("properties: %s returned %d. skipping", url, resp.StatusCode) - return NewProperties(), nil - } - if resp.StatusCode != 200 { - return nil, fmt.Errorf("properties: %s returned %d", url, resp.StatusCode) - } - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, fmt.Errorf("properties: %s error reading response. %s", url, err) - } - if err = resp.Body.Close(); err != nil { - return nil, fmt.Errorf("properties: %s error reading response. %s", url, err) - } - - ct := resp.Header.Get("Content-Type") - var enc Encoding - switch strings.ToLower(ct) { - case "text/plain", "text/plain; charset=iso-8859-1", "text/plain; charset=latin1": - enc = ISO_8859_1 - case "", "text/plain; charset=utf-8": - enc = UTF8 - default: - return nil, fmt.Errorf("properties: invalid content type %s", ct) - } - - p, err := parse(convert(body, enc)) - if err != nil { - return nil, err - } - return p, nil -} - -func must(p *Properties, err error) *Properties { - if err != nil { - ErrorHandler(err) - } - return p -} - -// expandName expands ${ENV_VAR} expressions in a name. -// If the environment variable does not exist then it will be replaced -// with an empty string. Malformed expressions like "${ENV_VAR" will -// be reported as error. -func expandName(name string) (string, error) { - return expand(name, make(map[string]bool), "${", "}", make(map[string]string)) -} - -// Interprets a byte buffer either as an ISO-8859-1 or UTF-8 encoded string. -// For ISO-8859-1 we can convert each byte straight into a rune since the -// first 256 unicode code points cover ISO-8859-1. -func convert(buf []byte, enc Encoding) string { - switch enc { - case UTF8: - return string(buf) - case ISO_8859_1: - runes := make([]rune, len(buf)) - for i, b := range buf { - runes[i] = rune(b) - } - return string(runes) - default: - ErrorHandler(fmt.Errorf("unsupported encoding %v", enc)) - } - panic("ErrorHandler should exit") -} diff --git a/vendor/github.com/magiconair/properties/load_test.go b/vendor/github.com/magiconair/properties/load_test.go deleted file mode 100644 index d8770c8a0..000000000 --- a/vendor/github.com/magiconair/properties/load_test.go +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "io/ioutil" - "net/http" - "net/http/httptest" - "os" - "strings" - "testing" - - "github.com/magiconair/properties/assert" -) - -func TestLoadFailsWithNotExistingFile(t *testing.T) { - _, err := LoadFile("doesnotexist.properties", ISO_8859_1) - assert.Equal(t, err != nil, true, "") - assert.Matches(t, err.Error(), "open.*no such file or directory") -} - -func TestLoadFilesFailsOnNotExistingFile(t *testing.T) { - _, err := LoadFile("doesnotexist.properties", ISO_8859_1) - assert.Equal(t, err != nil, true, "") - assert.Matches(t, err.Error(), "open.*no such file or directory") -} - -func TestLoadFilesDoesNotFailOnNotExistingFileAndIgnoreMissing(t *testing.T) { - p, err := LoadFiles([]string{"doesnotexist.properties"}, ISO_8859_1, true) - assert.Equal(t, err, nil) - assert.Equal(t, p.Len(), 0) -} - -func TestLoadString(t *testing.T) { - x := "key=äüö" - p1 := MustLoadString(x) - p2 := must(Load([]byte(x), UTF8)) - assert.Equal(t, p1, p2) -} - -func TestLoadMap(t *testing.T) { - // LoadMap does not guarantee the same import order - // of keys every time since map access is randomized. - // Therefore, we need to compare the generated maps. - m := map[string]string{"key": "value", "abc": "def"} - assert.Equal(t, LoadMap(m).Map(), m) -} - -func TestLoadFile(t *testing.T) { - tf := make(tempFiles, 0) - defer tf.removeAll() - - filename := tf.makeFile("key=value") - p := MustLoadFile(filename, ISO_8859_1) - - assert.Equal(t, p.Len(), 1) - assertKeyValues(t, "", p, "key", "value") -} - -func TestLoadFiles(t *testing.T) { - tf := make(tempFiles, 0) - defer tf.removeAll() - - filename := tf.makeFile("key=value") - filename2 := tf.makeFile("key2=value2") - p := MustLoadFiles([]string{filename, filename2}, ISO_8859_1, false) - assertKeyValues(t, "", p, "key", "value", "key2", "value2") -} - -func TestLoadExpandedFile(t *testing.T) { - tf := make(tempFiles, 0) - defer tf.removeAll() - - if err := os.Setenv("_VARX", "some-value"); err != nil { - t.Fatal(err) - } - filename := tf.makeFilePrefix(os.Getenv("_VARX"), "key=value") - filename = strings.Replace(filename, os.Getenv("_VARX"), "${_VARX}", -1) - p := MustLoadFile(filename, ISO_8859_1) - assertKeyValues(t, "", p, "key", "value") -} - -func TestLoadFilesAndIgnoreMissing(t *testing.T) { - tf := make(tempFiles, 0) - defer tf.removeAll() - - filename := tf.makeFile("key=value") - filename2 := tf.makeFile("key2=value2") - p := MustLoadFiles([]string{filename, filename + "foo", filename2, filename2 + "foo"}, ISO_8859_1, true) - assertKeyValues(t, "", p, "key", "value", "key2", "value2") -} - -func TestLoadURL(t *testing.T) { - srv := testServer() - defer srv.Close() - p := MustLoadURL(srv.URL + "/a") - assertKeyValues(t, "", p, "key", "value") -} - -func TestLoadURLs(t *testing.T) { - srv := testServer() - defer srv.Close() - p := MustLoadURLs([]string{srv.URL + "/a", srv.URL + "/b"}, false) - assertKeyValues(t, "", p, "key", "value", "key2", "value2") -} - -func TestLoadURLsAndFailMissing(t *testing.T) { - srv := testServer() - defer srv.Close() - p, err := LoadURLs([]string{srv.URL + "/a", srv.URL + "/c"}, false) - assert.Equal(t, p, (*Properties)(nil)) - assert.Matches(t, err.Error(), ".*returned 404.*") -} - -func TestLoadURLsAndIgnoreMissing(t *testing.T) { - srv := testServer() - defer srv.Close() - p := MustLoadURLs([]string{srv.URL + "/a", srv.URL + "/b", srv.URL + "/c"}, true) - assertKeyValues(t, "", p, "key", "value", "key2", "value2") -} - -func TestLoadURLEncoding(t *testing.T) { - srv := testServer() - defer srv.Close() - - uris := []string{"/none", "/utf8", "/plain", "/latin1", "/iso88591"} - for i, uri := range uris { - p := MustLoadURL(srv.URL + uri) - assert.Equal(t, p.GetString("key", ""), "äöü", fmt.Sprintf("%d", i)) - } -} - -func TestLoadURLFailInvalidEncoding(t *testing.T) { - srv := testServer() - defer srv.Close() - - p, err := LoadURL(srv.URL + "/json") - assert.Equal(t, p, (*Properties)(nil)) - assert.Matches(t, err.Error(), ".*invalid content type.*") -} - -func TestLoadAll(t *testing.T) { - tf := make(tempFiles, 0) - defer tf.removeAll() - - filename := tf.makeFile("key=value") - filename2 := tf.makeFile("key2=value3") - filename3 := tf.makeFile("key=value4") - srv := testServer() - defer srv.Close() - p := MustLoadAll([]string{filename, filename2, srv.URL + "/a", srv.URL + "/b", filename3}, UTF8, false) - assertKeyValues(t, "", p, "key", "value4", "key2", "value2") -} - -type tempFiles []string - -func (tf *tempFiles) removeAll() { - for _, path := range *tf { - err := os.Remove(path) - if err != nil { - fmt.Printf("os.Remove: %v", err) - } - } -} - -func (tf *tempFiles) makeFile(data string) string { - return tf.makeFilePrefix("properties", data) -} - -func (tf *tempFiles) makeFilePrefix(prefix, data string) string { - f, err := ioutil.TempFile("", prefix) - if err != nil { - panic("ioutil.TempFile: " + err.Error()) - } - - // remember the temp file so that we can remove it later - *tf = append(*tf, f.Name()) - - n, err := fmt.Fprint(f, data) - if err != nil { - panic("fmt.Fprintln: " + err.Error()) - } - if n != len(data) { - panic(fmt.Sprintf("Data size mismatch. expected=%d wrote=%d\n", len(data), n)) - } - - err = f.Close() - if err != nil { - panic("f.Close: " + err.Error()) - } - - return f.Name() -} - -func testServer() *httptest.Server { - return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - send := func(data []byte, contentType string) { - w.Header().Set("Content-Type", contentType) - if _, err := w.Write(data); err != nil { - panic(err) - } - } - - utf8 := []byte("key=äöü") - iso88591 := []byte{0x6b, 0x65, 0x79, 0x3d, 0xe4, 0xf6, 0xfc} // key=äöü - - switch r.RequestURI { - case "/a": - send([]byte("key=value"), "") - case "/b": - send([]byte("key2=value2"), "") - case "/none": - send(utf8, "") - case "/utf8": - send(utf8, "text/plain; charset=utf-8") - case "/json": - send(utf8, "application/json; charset=utf-8") - case "/plain": - send(iso88591, "text/plain") - case "/latin1": - send(iso88591, "text/plain; charset=latin1") - case "/iso88591": - send(iso88591, "text/plain; charset=iso-8859-1") - default: - w.WriteHeader(404) - } - })) -} diff --git a/vendor/github.com/magiconair/properties/parser.go b/vendor/github.com/magiconair/properties/parser.go deleted file mode 100644 index 90f555cb9..000000000 --- a/vendor/github.com/magiconair/properties/parser.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "runtime" -) - -type parser struct { - lex *lexer -} - -func parse(input string) (properties *Properties, err error) { - p := &parser{lex: lex(input)} - defer p.recover(&err) - - properties = NewProperties() - key := "" - comments := []string{} - - for { - token := p.expectOneOf(itemComment, itemKey, itemEOF) - switch token.typ { - case itemEOF: - goto done - case itemComment: - comments = append(comments, token.val) - continue - case itemKey: - key = token.val - if _, ok := properties.m[key]; !ok { - properties.k = append(properties.k, key) - } - } - - token = p.expectOneOf(itemValue, itemEOF) - if len(comments) > 0 { - properties.c[key] = comments - comments = []string{} - } - switch token.typ { - case itemEOF: - properties.m[key] = "" - goto done - case itemValue: - properties.m[key] = token.val - } - } - -done: - return properties, nil -} - -func (p *parser) errorf(format string, args ...interface{}) { - format = fmt.Sprintf("properties: Line %d: %s", p.lex.lineNumber(), format) - panic(fmt.Errorf(format, args...)) -} - -func (p *parser) expect(expected itemType) (token item) { - token = p.lex.nextItem() - if token.typ != expected { - p.unexpected(token) - } - return token -} - -func (p *parser) expectOneOf(expected ...itemType) (token item) { - token = p.lex.nextItem() - for _, v := range expected { - if token.typ == v { - return token - } - } - p.unexpected(token) - panic("unexpected token") -} - -func (p *parser) unexpected(token item) { - p.errorf(token.String()) -} - -// recover is the handler that turns panics into returns from the top level of Parse. -func (p *parser) recover(errp *error) { - e := recover() - if e != nil { - if _, ok := e.(runtime.Error); ok { - panic(e) - } - *errp = e.(error) - } - return -} diff --git a/vendor/github.com/magiconair/properties/properties.go b/vendor/github.com/magiconair/properties/properties.go deleted file mode 100644 index 85bb18618..000000000 --- a/vendor/github.com/magiconair/properties/properties.go +++ /dev/null @@ -1,811 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -// BUG(frank): Set() does not check for invalid unicode literals since this is currently handled by the lexer. -// BUG(frank): Write() does not allow to configure the newline character. Therefore, on Windows LF is used. - -import ( - "fmt" - "io" - "log" - "os" - "regexp" - "strconv" - "strings" - "time" - "unicode/utf8" -) - -// ErrorHandlerFunc defines the type of function which handles failures -// of the MustXXX() functions. An error handler function must exit -// the application after handling the error. -type ErrorHandlerFunc func(error) - -// ErrorHandler is the function which handles failures of the MustXXX() -// functions. The default is LogFatalHandler. -var ErrorHandler ErrorHandlerFunc = LogFatalHandler - -// LogHandlerFunc defines the function prototype for logging errors. -type LogHandlerFunc func(fmt string, args ...interface{}) - -// LogPrintf defines a log handler which uses log.Printf. -var LogPrintf LogHandlerFunc = log.Printf - -// LogFatalHandler handles the error by logging a fatal error and exiting. -func LogFatalHandler(err error) { - log.Fatal(err) -} - -// PanicHandler handles the error by panicking. -func PanicHandler(err error) { - panic(err) -} - -// ----------------------------------------------------------------------------- - -// A Properties contains the key/value pairs from the properties input. -// All values are stored in unexpanded form and are expanded at runtime -type Properties struct { - // Pre-/Postfix for property expansion. - Prefix string - Postfix string - - // DisableExpansion controls the expansion of properties on Get() - // and the check for circular references on Set(). When set to - // true Properties behaves like a simple key/value store and does - // not check for circular references on Get() or on Set(). - DisableExpansion bool - - // Stores the key/value pairs - m map[string]string - - // Stores the comments per key. - c map[string][]string - - // Stores the keys in order of appearance. - k []string -} - -// NewProperties creates a new Properties struct with the default -// configuration for "${key}" expressions. -func NewProperties() *Properties { - return &Properties{ - Prefix: "${", - Postfix: "}", - m: map[string]string{}, - c: map[string][]string{}, - k: []string{}, - } -} - -// Get returns the expanded value for the given key if exists. -// Otherwise, ok is false. -func (p *Properties) Get(key string) (value string, ok bool) { - v, ok := p.m[key] - if p.DisableExpansion { - return v, ok - } - if !ok { - return "", false - } - - expanded, err := p.expand(v) - - // we guarantee that the expanded value is free of - // circular references and malformed expressions - // so we panic if we still get an error here. - if err != nil { - ErrorHandler(fmt.Errorf("%s in %q", err, key+" = "+v)) - } - - return expanded, true -} - -// MustGet returns the expanded value for the given key if exists. -// Otherwise, it panics. -func (p *Properties) MustGet(key string) string { - if v, ok := p.Get(key); ok { - return v - } - ErrorHandler(invalidKeyError(key)) - panic("ErrorHandler should exit") -} - -// ---------------------------------------------------------------------------- - -// ClearComments removes the comments for all keys. -func (p *Properties) ClearComments() { - p.c = map[string][]string{} -} - -// ---------------------------------------------------------------------------- - -// GetComment returns the last comment before the given key or an empty string. -func (p *Properties) GetComment(key string) string { - comments, ok := p.c[key] - if !ok || len(comments) == 0 { - return "" - } - return comments[len(comments)-1] -} - -// ---------------------------------------------------------------------------- - -// GetComments returns all comments that appeared before the given key or nil. -func (p *Properties) GetComments(key string) []string { - if comments, ok := p.c[key]; ok { - return comments - } - return nil -} - -// ---------------------------------------------------------------------------- - -// SetComment sets the comment for the key. -func (p *Properties) SetComment(key, comment string) { - p.c[key] = []string{comment} -} - -// ---------------------------------------------------------------------------- - -// SetComments sets the comments for the key. If the comments are nil then -// all comments for this key are deleted. -func (p *Properties) SetComments(key string, comments []string) { - if comments == nil { - delete(p.c, key) - return - } - p.c[key] = comments -} - -// ---------------------------------------------------------------------------- - -// GetBool checks if the expanded value is one of '1', 'yes', -// 'true' or 'on' if the key exists. The comparison is case-insensitive. -// If the key does not exist the default value is returned. -func (p *Properties) GetBool(key string, def bool) bool { - v, err := p.getBool(key) - if err != nil { - return def - } - return v -} - -// MustGetBool checks if the expanded value is one of '1', 'yes', -// 'true' or 'on' if the key exists. The comparison is case-insensitive. -// If the key does not exist the function panics. -func (p *Properties) MustGetBool(key string) bool { - v, err := p.getBool(key) - if err != nil { - ErrorHandler(err) - } - return v -} - -func (p *Properties) getBool(key string) (value bool, err error) { - if v, ok := p.Get(key); ok { - return boolVal(v), nil - } - return false, invalidKeyError(key) -} - -func boolVal(v string) bool { - v = strings.ToLower(v) - return v == "1" || v == "true" || v == "yes" || v == "on" -} - -// ---------------------------------------------------------------------------- - -// GetDuration parses the expanded value as an time.Duration (in ns) if the -// key exists. If key does not exist or the value cannot be parsed the default -// value is returned. In almost all cases you want to use GetParsedDuration(). -func (p *Properties) GetDuration(key string, def time.Duration) time.Duration { - v, err := p.getInt64(key) - if err != nil { - return def - } - return time.Duration(v) -} - -// MustGetDuration parses the expanded value as an time.Duration (in ns) if -// the key exists. If key does not exist or the value cannot be parsed the -// function panics. In almost all cases you want to use MustGetParsedDuration(). -func (p *Properties) MustGetDuration(key string) time.Duration { - v, err := p.getInt64(key) - if err != nil { - ErrorHandler(err) - } - return time.Duration(v) -} - -// ---------------------------------------------------------------------------- - -// GetParsedDuration parses the expanded value with time.ParseDuration() if the key exists. -// If key does not exist or the value cannot be parsed the default -// value is returned. -func (p *Properties) GetParsedDuration(key string, def time.Duration) time.Duration { - s, ok := p.Get(key) - if !ok { - return def - } - v, err := time.ParseDuration(s) - if err != nil { - return def - } - return v -} - -// MustGetParsedDuration parses the expanded value with time.ParseDuration() if the key exists. -// If key does not exist or the value cannot be parsed the function panics. -func (p *Properties) MustGetParsedDuration(key string) time.Duration { - s, ok := p.Get(key) - if !ok { - ErrorHandler(invalidKeyError(key)) - } - v, err := time.ParseDuration(s) - if err != nil { - ErrorHandler(err) - } - return v -} - -// ---------------------------------------------------------------------------- - -// GetFloat64 parses the expanded value as a float64 if the key exists. -// If key does not exist or the value cannot be parsed the default -// value is returned. -func (p *Properties) GetFloat64(key string, def float64) float64 { - v, err := p.getFloat64(key) - if err != nil { - return def - } - return v -} - -// MustGetFloat64 parses the expanded value as a float64 if the key exists. -// If key does not exist or the value cannot be parsed the function panics. -func (p *Properties) MustGetFloat64(key string) float64 { - v, err := p.getFloat64(key) - if err != nil { - ErrorHandler(err) - } - return v -} - -func (p *Properties) getFloat64(key string) (value float64, err error) { - if v, ok := p.Get(key); ok { - value, err = strconv.ParseFloat(v, 64) - if err != nil { - return 0, err - } - return value, nil - } - return 0, invalidKeyError(key) -} - -// ---------------------------------------------------------------------------- - -// GetInt parses the expanded value as an int if the key exists. -// If key does not exist or the value cannot be parsed the default -// value is returned. If the value does not fit into an int the -// function panics with an out of range error. -func (p *Properties) GetInt(key string, def int) int { - v, err := p.getInt64(key) - if err != nil { - return def - } - return intRangeCheck(key, v) -} - -// MustGetInt parses the expanded value as an int if the key exists. -// If key does not exist or the value cannot be parsed the function panics. -// If the value does not fit into an int the function panics with -// an out of range error. -func (p *Properties) MustGetInt(key string) int { - v, err := p.getInt64(key) - if err != nil { - ErrorHandler(err) - } - return intRangeCheck(key, v) -} - -// ---------------------------------------------------------------------------- - -// GetInt64 parses the expanded value as an int64 if the key exists. -// If key does not exist or the value cannot be parsed the default -// value is returned. -func (p *Properties) GetInt64(key string, def int64) int64 { - v, err := p.getInt64(key) - if err != nil { - return def - } - return v -} - -// MustGetInt64 parses the expanded value as an int if the key exists. -// If key does not exist or the value cannot be parsed the function panics. -func (p *Properties) MustGetInt64(key string) int64 { - v, err := p.getInt64(key) - if err != nil { - ErrorHandler(err) - } - return v -} - -func (p *Properties) getInt64(key string) (value int64, err error) { - if v, ok := p.Get(key); ok { - value, err = strconv.ParseInt(v, 10, 64) - if err != nil { - return 0, err - } - return value, nil - } - return 0, invalidKeyError(key) -} - -// ---------------------------------------------------------------------------- - -// GetUint parses the expanded value as an uint if the key exists. -// If key does not exist or the value cannot be parsed the default -// value is returned. If the value does not fit into an int the -// function panics with an out of range error. -func (p *Properties) GetUint(key string, def uint) uint { - v, err := p.getUint64(key) - if err != nil { - return def - } - return uintRangeCheck(key, v) -} - -// MustGetUint parses the expanded value as an int if the key exists. -// If key does not exist or the value cannot be parsed the function panics. -// If the value does not fit into an int the function panics with -// an out of range error. -func (p *Properties) MustGetUint(key string) uint { - v, err := p.getUint64(key) - if err != nil { - ErrorHandler(err) - } - return uintRangeCheck(key, v) -} - -// ---------------------------------------------------------------------------- - -// GetUint64 parses the expanded value as an uint64 if the key exists. -// If key does not exist or the value cannot be parsed the default -// value is returned. -func (p *Properties) GetUint64(key string, def uint64) uint64 { - v, err := p.getUint64(key) - if err != nil { - return def - } - return v -} - -// MustGetUint64 parses the expanded value as an int if the key exists. -// If key does not exist or the value cannot be parsed the function panics. -func (p *Properties) MustGetUint64(key string) uint64 { - v, err := p.getUint64(key) - if err != nil { - ErrorHandler(err) - } - return v -} - -func (p *Properties) getUint64(key string) (value uint64, err error) { - if v, ok := p.Get(key); ok { - value, err = strconv.ParseUint(v, 10, 64) - if err != nil { - return 0, err - } - return value, nil - } - return 0, invalidKeyError(key) -} - -// ---------------------------------------------------------------------------- - -// GetString returns the expanded value for the given key if exists or -// the default value otherwise. -func (p *Properties) GetString(key, def string) string { - if v, ok := p.Get(key); ok { - return v - } - return def -} - -// MustGetString returns the expanded value for the given key if exists or -// panics otherwise. -func (p *Properties) MustGetString(key string) string { - if v, ok := p.Get(key); ok { - return v - } - ErrorHandler(invalidKeyError(key)) - panic("ErrorHandler should exit") -} - -// ---------------------------------------------------------------------------- - -// Filter returns a new properties object which contains all properties -// for which the key matches the pattern. -func (p *Properties) Filter(pattern string) (*Properties, error) { - re, err := regexp.Compile(pattern) - if err != nil { - return nil, err - } - - return p.FilterRegexp(re), nil -} - -// FilterRegexp returns a new properties object which contains all properties -// for which the key matches the regular expression. -func (p *Properties) FilterRegexp(re *regexp.Regexp) *Properties { - pp := NewProperties() - for _, k := range p.k { - if re.MatchString(k) { - // TODO(fs): we are ignoring the error which flags a circular reference. - // TODO(fs): since we are just copying a subset of keys this cannot happen (fingers crossed) - pp.Set(k, p.m[k]) - } - } - return pp -} - -// FilterPrefix returns a new properties object with a subset of all keys -// with the given prefix. -func (p *Properties) FilterPrefix(prefix string) *Properties { - pp := NewProperties() - for _, k := range p.k { - if strings.HasPrefix(k, prefix) { - // TODO(fs): we are ignoring the error which flags a circular reference. - // TODO(fs): since we are just copying a subset of keys this cannot happen (fingers crossed) - pp.Set(k, p.m[k]) - } - } - return pp -} - -// FilterStripPrefix returns a new properties object with a subset of all keys -// with the given prefix and the prefix removed from the keys. -func (p *Properties) FilterStripPrefix(prefix string) *Properties { - pp := NewProperties() - n := len(prefix) - for _, k := range p.k { - if len(k) > len(prefix) && strings.HasPrefix(k, prefix) { - // TODO(fs): we are ignoring the error which flags a circular reference. - // TODO(fs): since we are modifying keys I am not entirely sure whether we can create a circular reference - // TODO(fs): this function should probably return an error but the signature is fixed - pp.Set(k[n:], p.m[k]) - } - } - return pp -} - -// Len returns the number of keys. -func (p *Properties) Len() int { - return len(p.m) -} - -// Keys returns all keys in the same order as in the input. -func (p *Properties) Keys() []string { - keys := make([]string, len(p.k)) - copy(keys, p.k) - return keys -} - -// Set sets the property key to the corresponding value. -// If a value for key existed before then ok is true and prev -// contains the previous value. If the value contains a -// circular reference or a malformed expression then -// an error is returned. -// An empty key is silently ignored. -func (p *Properties) Set(key, value string) (prev string, ok bool, err error) { - if key == "" { - return "", false, nil - } - - // if expansion is disabled we allow circular references - if p.DisableExpansion { - prev, ok = p.Get(key) - p.m[key] = value - if !ok { - p.k = append(p.k, key) - } - return prev, ok, nil - } - - // to check for a circular reference we temporarily need - // to set the new value. If there is an error then revert - // to the previous state. Only if all tests are successful - // then we add the key to the p.k list. - prev, ok = p.Get(key) - p.m[key] = value - - // now check for a circular reference - _, err = p.expand(value) - if err != nil { - - // revert to the previous state - if ok { - p.m[key] = prev - } else { - delete(p.m, key) - } - - return "", false, err - } - - if !ok { - p.k = append(p.k, key) - } - - return prev, ok, nil -} - -// SetValue sets property key to the default string value -// as defined by fmt.Sprintf("%v"). -func (p *Properties) SetValue(key string, value interface{}) error { - _, _, err := p.Set(key, fmt.Sprintf("%v", value)) - return err -} - -// MustSet sets the property key to the corresponding value. -// If a value for key existed before then ok is true and prev -// contains the previous value. An empty key is silently ignored. -func (p *Properties) MustSet(key, value string) (prev string, ok bool) { - prev, ok, err := p.Set(key, value) - if err != nil { - ErrorHandler(err) - } - return prev, ok -} - -// String returns a string of all expanded 'key = value' pairs. -func (p *Properties) String() string { - var s string - for _, key := range p.k { - value, _ := p.Get(key) - s = fmt.Sprintf("%s%s = %s\n", s, key, value) - } - return s -} - -// Write writes all unexpanded 'key = value' pairs to the given writer. -// Write returns the number of bytes written and any write error encountered. -func (p *Properties) Write(w io.Writer, enc Encoding) (n int, err error) { - return p.WriteComment(w, "", enc) -} - -// WriteComment writes all unexpanced 'key = value' pairs to the given writer. -// If prefix is not empty then comments are written with a blank line and the -// given prefix. The prefix should be either "# " or "! " to be compatible with -// the properties file format. Otherwise, the properties parser will not be -// able to read the file back in. It returns the number of bytes written and -// any write error encountered. -func (p *Properties) WriteComment(w io.Writer, prefix string, enc Encoding) (n int, err error) { - var x int - - for _, key := range p.k { - value := p.m[key] - - if prefix != "" { - if comments, ok := p.c[key]; ok { - // don't print comments if they are all empty - allEmpty := true - for _, c := range comments { - if c != "" { - allEmpty = false - break - } - } - - if !allEmpty { - // add a blank line between entries but not at the top - if len(comments) > 0 && n > 0 { - x, err = fmt.Fprintln(w) - if err != nil { - return - } - n += x - } - - for _, c := range comments { - x, err = fmt.Fprintf(w, "%s%s\n", prefix, encode(c, "", enc)) - if err != nil { - return - } - n += x - } - } - } - } - - x, err = fmt.Fprintf(w, "%s = %s\n", encode(key, " :", enc), encode(value, "", enc)) - if err != nil { - return - } - n += x - } - return -} - -// Map returns a copy of the properties as a map. -func (p *Properties) Map() map[string]string { - m := make(map[string]string) - for k, v := range p.m { - m[k] = v - } - return m -} - -// FilterFunc returns a copy of the properties which includes the values which passed all filters. -func (p *Properties) FilterFunc(filters ...func(k, v string) bool) *Properties { - pp := NewProperties() -outer: - for k, v := range p.m { - for _, f := range filters { - if !f(k, v) { - continue outer - } - pp.Set(k, v) - } - } - return pp -} - -// ---------------------------------------------------------------------------- - -// Delete removes the key and its comments. -func (p *Properties) Delete(key string) { - delete(p.m, key) - delete(p.c, key) - newKeys := []string{} - for _, k := range p.k { - if k != key { - newKeys = append(newKeys, k) - } - } - p.k = newKeys -} - -// Merge merges properties, comments and keys from other *Properties into p -func (p *Properties) Merge(other *Properties) { - for k, v := range other.m { - p.m[k] = v - } - for k, v := range other.c { - p.c[k] = v - } - -outer: - for _, otherKey := range other.k { - for _, key := range p.k { - if otherKey == key { - continue outer - } - } - p.k = append(p.k, otherKey) - } -} - -// ---------------------------------------------------------------------------- - -// check expands all values and returns an error if a circular reference or -// a malformed expression was found. -func (p *Properties) check() error { - for _, value := range p.m { - if _, err := p.expand(value); err != nil { - return err - } - } - return nil -} - -func (p *Properties) expand(input string) (string, error) { - // no pre/postfix -> nothing to expand - if p.Prefix == "" && p.Postfix == "" { - return input, nil - } - - return expand(input, make(map[string]bool), p.Prefix, p.Postfix, p.m) -} - -// expand recursively expands expressions of '(prefix)key(postfix)' to their corresponding values. -// The function keeps track of the keys that were already expanded and stops if it -// detects a circular reference or a malformed expression of the form '(prefix)key'. -func expand(s string, keys map[string]bool, prefix, postfix string, values map[string]string) (string, error) { - start := strings.Index(s, prefix) - if start == -1 { - return s, nil - } - - keyStart := start + len(prefix) - keyLen := strings.Index(s[keyStart:], postfix) - if keyLen == -1 { - return "", fmt.Errorf("malformed expression") - } - - end := keyStart + keyLen + len(postfix) - 1 - key := s[keyStart : keyStart+keyLen] - - // fmt.Printf("s:%q pp:%q start:%d end:%d keyStart:%d keyLen:%d key:%q\n", s, prefix + "..." + postfix, start, end, keyStart, keyLen, key) - - if _, ok := keys[key]; ok { - return "", fmt.Errorf("circular reference") - } - - val, ok := values[key] - if !ok { - val = os.Getenv(key) - } - - // remember that we've seen the key - keys[key] = true - - return expand(s[:start]+val+s[end+1:], keys, prefix, postfix, values) -} - -// encode encodes a UTF-8 string to ISO-8859-1 and escapes some characters. -func encode(s string, special string, enc Encoding) string { - switch enc { - case UTF8: - return encodeUtf8(s, special) - case ISO_8859_1: - return encodeIso(s, special) - default: - panic(fmt.Sprintf("unsupported encoding %v", enc)) - } -} - -func encodeUtf8(s string, special string) string { - v := "" - for pos := 0; pos < len(s); { - r, w := utf8.DecodeRuneInString(s[pos:]) - pos += w - v += escape(r, special) - } - return v -} - -func encodeIso(s string, special string) string { - var r rune - var w int - var v string - for pos := 0; pos < len(s); { - switch r, w = utf8.DecodeRuneInString(s[pos:]); { - case r < 1<<8: // single byte rune -> escape special chars only - v += escape(r, special) - case r < 1<<16: // two byte rune -> unicode literal - v += fmt.Sprintf("\\u%04x", r) - default: // more than two bytes per rune -> can't encode - v += "?" - } - pos += w - } - return v -} - -func escape(r rune, special string) string { - switch r { - case '\f': - return "\\f" - case '\n': - return "\\n" - case '\r': - return "\\r" - case '\t': - return "\\t" - default: - if strings.ContainsRune(special, r) { - return "\\" + string(r) - } - return string(r) - } -} - -func invalidKeyError(key string) error { - return fmt.Errorf("unknown property: %s", key) -} diff --git a/vendor/github.com/magiconair/properties/properties_test.go b/vendor/github.com/magiconair/properties/properties_test.go deleted file mode 100644 index 7e92618e0..000000000 --- a/vendor/github.com/magiconair/properties/properties_test.go +++ /dev/null @@ -1,947 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "bytes" - "flag" - "fmt" - "math" - "os" - "reflect" - "strings" - "testing" - "time" - - "github.com/magiconair/properties/assert" -) - -var verbose = flag.Bool("verbose", false, "Verbose output") - -func init() { - ErrorHandler = PanicHandler -} - -// ---------------------------------------------------------------------------- - -// define test cases in the form of -// {"input", "key1", "value1", "key2", "value2", ...} -var complexTests = [][]string{ - // whitespace prefix - {" key=value", "key", "value"}, // SPACE prefix - {"\fkey=value", "key", "value"}, // FF prefix - {"\tkey=value", "key", "value"}, // TAB prefix - {" \f\tkey=value", "key", "value"}, // mix prefix - - // multiple keys - {"key1=value1\nkey2=value2\n", "key1", "value1", "key2", "value2"}, - {"key1=value1\rkey2=value2\r", "key1", "value1", "key2", "value2"}, - {"key1=value1\r\nkey2=value2\r\n", "key1", "value1", "key2", "value2"}, - - // blank lines - {"\nkey=value\n", "key", "value"}, - {"\rkey=value\r", "key", "value"}, - {"\r\nkey=value\r\n", "key", "value"}, - - // escaped chars in key - {"k\\ ey = value", "k ey", "value"}, - {"k\\:ey = value", "k:ey", "value"}, - {"k\\=ey = value", "k=ey", "value"}, - {"k\\fey = value", "k\fey", "value"}, - {"k\\ney = value", "k\ney", "value"}, - {"k\\rey = value", "k\rey", "value"}, - {"k\\tey = value", "k\tey", "value"}, - - // escaped chars in value - {"key = v\\ alue", "key", "v alue"}, - {"key = v\\:alue", "key", "v:alue"}, - {"key = v\\=alue", "key", "v=alue"}, - {"key = v\\falue", "key", "v\falue"}, - {"key = v\\nalue", "key", "v\nalue"}, - {"key = v\\ralue", "key", "v\ralue"}, - {"key = v\\talue", "key", "v\talue"}, - - // silently dropped escape character - {"k\\zey = value", "kzey", "value"}, - {"key = v\\zalue", "key", "vzalue"}, - - // unicode literals - {"key\\u2318 = value", "key⌘", "value"}, - {"k\\u2318ey = value", "k⌘ey", "value"}, - {"key = value\\u2318", "key", "value⌘"}, - {"key = valu\\u2318e", "key", "valu⌘e"}, - - // multiline values - {"key = valueA,\\\n valueB", "key", "valueA,valueB"}, // SPACE indent - {"key = valueA,\\\n\f\f\fvalueB", "key", "valueA,valueB"}, // FF indent - {"key = valueA,\\\n\t\t\tvalueB", "key", "valueA,valueB"}, // TAB indent - {"key = valueA,\\\n \f\tvalueB", "key", "valueA,valueB"}, // mix indent - - // comments - {"# this is a comment\n! and so is this\nkey1=value1\nkey#2=value#2\n\nkey!3=value!3\n# and another one\n! and the final one", "key1", "value1", "key#2", "value#2", "key!3", "value!3"}, - - // expansion tests - {"key=value\nkey2=${key}", "key", "value", "key2", "value"}, - {"key=value\nkey2=aa${key}", "key", "value", "key2", "aavalue"}, - {"key=value\nkey2=${key}bb", "key", "value", "key2", "valuebb"}, - {"key=value\nkey2=aa${key}bb", "key", "value", "key2", "aavaluebb"}, - {"key=value\nkey2=${key}\nkey3=${key2}", "key", "value", "key2", "value", "key3", "value"}, - {"key=${USER}", "key", os.Getenv("USER")}, - {"key=${USER}\nUSER=value", "key", "value", "USER", "value"}, -} - -// ---------------------------------------------------------------------------- - -var commentTests = []struct { - input, key, value string - comments []string -}{ - {"key=value", "key", "value", nil}, - {"#\nkey=value", "key", "value", []string{""}}, - {"#comment\nkey=value", "key", "value", []string{"comment"}}, - {"# comment\nkey=value", "key", "value", []string{"comment"}}, - {"# comment\nkey=value", "key", "value", []string{"comment"}}, - {"# comment\n\nkey=value", "key", "value", []string{"comment"}}, - {"# comment1\n# comment2\nkey=value", "key", "value", []string{"comment1", "comment2"}}, - {"# comment1\n\n# comment2\n\nkey=value", "key", "value", []string{"comment1", "comment2"}}, - {"!comment\nkey=value", "key", "value", []string{"comment"}}, - {"! comment\nkey=value", "key", "value", []string{"comment"}}, - {"! comment\nkey=value", "key", "value", []string{"comment"}}, - {"! comment\n\nkey=value", "key", "value", []string{"comment"}}, - {"! comment1\n! comment2\nkey=value", "key", "value", []string{"comment1", "comment2"}}, - {"! comment1\n\n! comment2\n\nkey=value", "key", "value", []string{"comment1", "comment2"}}, -} - -// ---------------------------------------------------------------------------- - -var errorTests = []struct { - input, msg string -}{ - // unicode literals - {"key\\u1 = value", "invalid unicode literal"}, - {"key\\u12 = value", "invalid unicode literal"}, - {"key\\u123 = value", "invalid unicode literal"}, - {"key\\u123g = value", "invalid unicode literal"}, - {"key\\u123", "invalid unicode literal"}, - - // circular references - {"key=${key}", "circular reference"}, - {"key1=${key2}\nkey2=${key1}", "circular reference"}, - - // malformed expressions - {"key=${ke", "malformed expression"}, - {"key=valu${ke", "malformed expression"}, -} - -// ---------------------------------------------------------------------------- - -var writeTests = []struct { - input, output, encoding string -}{ - // ISO-8859-1 tests - {"key = value", "key = value\n", "ISO-8859-1"}, - {"key = value \\\n continued", "key = value continued\n", "ISO-8859-1"}, - {"key⌘ = value", "key\\u2318 = value\n", "ISO-8859-1"}, - {"ke\\ \\:y = value", "ke\\ \\:y = value\n", "ISO-8859-1"}, - - // UTF-8 tests - {"key = value", "key = value\n", "UTF-8"}, - {"key = value \\\n continued", "key = value continued\n", "UTF-8"}, - {"key⌘ = value⌘", "key⌘ = value⌘\n", "UTF-8"}, - {"ke\\ \\:y = value", "ke\\ \\:y = value\n", "UTF-8"}, -} - -// ---------------------------------------------------------------------------- - -var writeCommentTests = []struct { - input, output, encoding string -}{ - // ISO-8859-1 tests - {"key = value", "key = value\n", "ISO-8859-1"}, - {"#\nkey = value", "key = value\n", "ISO-8859-1"}, - {"#\n#\n#\nkey = value", "key = value\n", "ISO-8859-1"}, - {"# comment\nkey = value", "# comment\nkey = value\n", "ISO-8859-1"}, - {"\n# comment\nkey = value", "# comment\nkey = value\n", "ISO-8859-1"}, - {"# comment\n\nkey = value", "# comment\nkey = value\n", "ISO-8859-1"}, - {"# comment1\n# comment2\nkey = value", "# comment1\n# comment2\nkey = value\n", "ISO-8859-1"}, - {"#comment1\nkey1 = value1\n#comment2\nkey2 = value2", "# comment1\nkey1 = value1\n\n# comment2\nkey2 = value2\n", "ISO-8859-1"}, - - // UTF-8 tests - {"key = value", "key = value\n", "UTF-8"}, - {"# comment⌘\nkey = value⌘", "# comment⌘\nkey = value⌘\n", "UTF-8"}, - {"\n# comment⌘\nkey = value⌘", "# comment⌘\nkey = value⌘\n", "UTF-8"}, - {"# comment⌘\n\nkey = value⌘", "# comment⌘\nkey = value⌘\n", "UTF-8"}, - {"# comment1⌘\n# comment2⌘\nkey = value⌘", "# comment1⌘\n# comment2⌘\nkey = value⌘\n", "UTF-8"}, - {"#comment1⌘\nkey1 = value1⌘\n#comment2⌘\nkey2 = value2⌘", "# comment1⌘\nkey1 = value1⌘\n\n# comment2⌘\nkey2 = value2⌘\n", "UTF-8"}, -} - -// ---------------------------------------------------------------------------- - -var boolTests = []struct { - input, key string - def, value bool -}{ - // valid values for TRUE - {"key = 1", "key", false, true}, - {"key = on", "key", false, true}, - {"key = On", "key", false, true}, - {"key = ON", "key", false, true}, - {"key = true", "key", false, true}, - {"key = True", "key", false, true}, - {"key = TRUE", "key", false, true}, - {"key = yes", "key", false, true}, - {"key = Yes", "key", false, true}, - {"key = YES", "key", false, true}, - - // valid values for FALSE (all other) - {"key = 0", "key", true, false}, - {"key = off", "key", true, false}, - {"key = false", "key", true, false}, - {"key = no", "key", true, false}, - - // non existent key - {"key = true", "key2", false, false}, -} - -// ---------------------------------------------------------------------------- - -var durationTests = []struct { - input, key string - def, value time.Duration -}{ - // valid values - {"key = 1", "key", 999, 1}, - {"key = 0", "key", 999, 0}, - {"key = -1", "key", 999, -1}, - {"key = 0123", "key", 999, 123}, - - // invalid values - {"key = 0xff", "key", 999, 999}, - {"key = 1.0", "key", 999, 999}, - {"key = a", "key", 999, 999}, - - // non existent key - {"key = 1", "key2", 999, 999}, -} - -// ---------------------------------------------------------------------------- - -var parsedDurationTests = []struct { - input, key string - def, value time.Duration -}{ - // valid values - {"key = -1ns", "key", 999, -1 * time.Nanosecond}, - {"key = 300ms", "key", 999, 300 * time.Millisecond}, - {"key = 5s", "key", 999, 5 * time.Second}, - {"key = 3h", "key", 999, 3 * time.Hour}, - {"key = 2h45m", "key", 999, 2*time.Hour + 45*time.Minute}, - - // invalid values - {"key = 0xff", "key", 999, 999}, - {"key = 1.0", "key", 999, 999}, - {"key = a", "key", 999, 999}, - {"key = 1", "key", 999, 999}, - {"key = 0", "key", 999, 0}, - - // non existent key - {"key = 1", "key2", 999, 999}, -} - -// ---------------------------------------------------------------------------- - -var floatTests = []struct { - input, key string - def, value float64 -}{ - // valid values - {"key = 1.0", "key", 999, 1.0}, - {"key = 0.0", "key", 999, 0.0}, - {"key = -1.0", "key", 999, -1.0}, - {"key = 1", "key", 999, 1}, - {"key = 0", "key", 999, 0}, - {"key = -1", "key", 999, -1}, - {"key = 0123", "key", 999, 123}, - - // invalid values - {"key = 0xff", "key", 999, 999}, - {"key = a", "key", 999, 999}, - - // non existent key - {"key = 1", "key2", 999, 999}, -} - -// ---------------------------------------------------------------------------- - -var int64Tests = []struct { - input, key string - def, value int64 -}{ - // valid values - {"key = 1", "key", 999, 1}, - {"key = 0", "key", 999, 0}, - {"key = -1", "key", 999, -1}, - {"key = 0123", "key", 999, 123}, - - // invalid values - {"key = 0xff", "key", 999, 999}, - {"key = 1.0", "key", 999, 999}, - {"key = a", "key", 999, 999}, - - // non existent key - {"key = 1", "key2", 999, 999}, -} - -// ---------------------------------------------------------------------------- - -var uint64Tests = []struct { - input, key string - def, value uint64 -}{ - // valid values - {"key = 1", "key", 999, 1}, - {"key = 0", "key", 999, 0}, - {"key = 0123", "key", 999, 123}, - - // invalid values - {"key = -1", "key", 999, 999}, - {"key = 0xff", "key", 999, 999}, - {"key = 1.0", "key", 999, 999}, - {"key = a", "key", 999, 999}, - - // non existent key - {"key = 1", "key2", 999, 999}, -} - -// ---------------------------------------------------------------------------- - -var stringTests = []struct { - input, key string - def, value string -}{ - // valid values - {"key = abc", "key", "def", "abc"}, - - // non existent key - {"key = abc", "key2", "def", "def"}, -} - -// ---------------------------------------------------------------------------- - -var keysTests = []struct { - input string - keys []string -}{ - {"", []string{}}, - {"key = abc", []string{"key"}}, - {"key = abc\nkey2=def", []string{"key", "key2"}}, - {"key2 = abc\nkey=def", []string{"key2", "key"}}, - {"key = abc\nkey=def", []string{"key"}}, -} - -// ---------------------------------------------------------------------------- - -var filterTests = []struct { - input string - pattern string - keys []string - err string -}{ - {"", "", []string{}, ""}, - {"", "abc", []string{}, ""}, - {"key=value", "", []string{"key"}, ""}, - {"key=value", "key=", []string{}, ""}, - {"key=value\nfoo=bar", "", []string{"foo", "key"}, ""}, - {"key=value\nfoo=bar", "f", []string{"foo"}, ""}, - {"key=value\nfoo=bar", "fo", []string{"foo"}, ""}, - {"key=value\nfoo=bar", "foo", []string{"foo"}, ""}, - {"key=value\nfoo=bar", "fooo", []string{}, ""}, - {"key=value\nkey2=value2\nfoo=bar", "ey", []string{"key", "key2"}, ""}, - {"key=value\nkey2=value2\nfoo=bar", "key", []string{"key", "key2"}, ""}, - {"key=value\nkey2=value2\nfoo=bar", "^key", []string{"key", "key2"}, ""}, - {"key=value\nkey2=value2\nfoo=bar", "^(key|foo)", []string{"foo", "key", "key2"}, ""}, - {"key=value\nkey2=value2\nfoo=bar", "[ abc", nil, "error parsing regexp.*"}, -} - -// ---------------------------------------------------------------------------- - -var filterPrefixTests = []struct { - input string - prefix string - keys []string -}{ - {"", "", []string{}}, - {"", "abc", []string{}}, - {"key=value", "", []string{"key"}}, - {"key=value", "key=", []string{}}, - {"key=value\nfoo=bar", "", []string{"foo", "key"}}, - {"key=value\nfoo=bar", "f", []string{"foo"}}, - {"key=value\nfoo=bar", "fo", []string{"foo"}}, - {"key=value\nfoo=bar", "foo", []string{"foo"}}, - {"key=value\nfoo=bar", "fooo", []string{}}, - {"key=value\nkey2=value2\nfoo=bar", "key", []string{"key", "key2"}}, -} - -// ---------------------------------------------------------------------------- - -var filterStripPrefixTests = []struct { - input string - prefix string - keys []string -}{ - {"", "", []string{}}, - {"", "abc", []string{}}, - {"key=value", "", []string{"key"}}, - {"key=value", "key=", []string{}}, - {"key=value\nfoo=bar", "", []string{"foo", "key"}}, - {"key=value\nfoo=bar", "f", []string{"foo"}}, - {"key=value\nfoo=bar", "fo", []string{"foo"}}, - {"key=value\nfoo=bar", "foo", []string{"foo"}}, - {"key=value\nfoo=bar", "fooo", []string{}}, - {"key=value\nkey2=value2\nfoo=bar", "key", []string{"key", "key2"}}, -} - -// ---------------------------------------------------------------------------- - -var setTests = []struct { - input string - key, value string - prev string - ok bool - err string - keys []string -}{ - {"", "", "", "", false, "", []string{}}, - {"", "key", "value", "", false, "", []string{"key"}}, - {"key=value", "key2", "value2", "", false, "", []string{"key", "key2"}}, - {"key=value", "abc", "value3", "", false, "", []string{"key", "abc"}}, - {"key=value", "key", "value3", "value", true, "", []string{"key"}}, -} - -// ---------------------------------------------------------------------------- - -// TestBasic tests basic single key/value combinations with all possible -// whitespace, delimiter and newline permutations. -func TestBasic(t *testing.T) { - testWhitespaceAndDelimiterCombinations(t, "key", "") - testWhitespaceAndDelimiterCombinations(t, "key", "value") - testWhitespaceAndDelimiterCombinations(t, "key", "value ") -} - -func TestComplex(t *testing.T) { - for _, test := range complexTests { - testKeyValue(t, test[0], test[1:]...) - } -} - -func TestErrors(t *testing.T) { - for _, test := range errorTests { - _, err := Load([]byte(test.input), ISO_8859_1) - assert.Equal(t, err != nil, true, "want error") - assert.Equal(t, strings.Contains(err.Error(), test.msg), true) - } -} - -func TestDisableExpansion(t *testing.T) { - input := "key=value\nkey2=${key}" - p := mustParse(t, input) - p.DisableExpansion = true - assert.Equal(t, p.MustGet("key"), "value") - assert.Equal(t, p.MustGet("key2"), "${key}") - - // with expansion disabled we can introduce circular references - p.MustSet("keyA", "${keyB}") - p.MustSet("keyB", "${keyA}") - assert.Equal(t, p.MustGet("keyA"), "${keyB}") - assert.Equal(t, p.MustGet("keyB"), "${keyA}") -} - -func TestDisableExpansionStillUpdatesKeys(t *testing.T) { - p := NewProperties() - p.MustSet("p1", "a") - assert.Equal(t, p.Keys(), []string{"p1"}) - assert.Equal(t, p.String(), "p1 = a\n") - - p.DisableExpansion = true - p.MustSet("p2", "b") - - assert.Equal(t, p.Keys(), []string{"p1", "p2"}) - assert.Equal(t, p.String(), "p1 = a\np2 = b\n") -} - -func TestMustGet(t *testing.T) { - input := "key = value\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGet("key"), "value") - assert.Panic(t, func() { p.MustGet("invalid") }, "unknown property: invalid") -} - -func TestGetBool(t *testing.T) { - for _, test := range boolTests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetBool(test.key, test.def), test.value) - } -} - -func TestMustGetBool(t *testing.T) { - input := "key = true\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetBool("key"), true) - assert.Panic(t, func() { p.MustGetBool("invalid") }, "unknown property: invalid") -} - -func TestGetDuration(t *testing.T) { - for _, test := range durationTests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetDuration(test.key, test.def), test.value) - } -} - -func TestMustGetDuration(t *testing.T) { - input := "key = 123\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetDuration("key"), time.Duration(123)) - assert.Panic(t, func() { p.MustGetDuration("key2") }, "strconv.ParseInt: parsing.*") - assert.Panic(t, func() { p.MustGetDuration("invalid") }, "unknown property: invalid") -} - -func TestGetParsedDuration(t *testing.T) { - for _, test := range parsedDurationTests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetParsedDuration(test.key, test.def), test.value) - } -} - -func TestMustGetParsedDuration(t *testing.T) { - input := "key = 123ms\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetParsedDuration("key"), 123*time.Millisecond) - assert.Panic(t, func() { p.MustGetParsedDuration("key2") }, "time: invalid duration ghi") - assert.Panic(t, func() { p.MustGetParsedDuration("invalid") }, "unknown property: invalid") -} - -func TestGetFloat64(t *testing.T) { - for _, test := range floatTests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetFloat64(test.key, test.def), test.value) - } -} - -func TestMustGetFloat64(t *testing.T) { - input := "key = 123\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetFloat64("key"), float64(123)) - assert.Panic(t, func() { p.MustGetFloat64("key2") }, "strconv.ParseFloat: parsing.*") - assert.Panic(t, func() { p.MustGetFloat64("invalid") }, "unknown property: invalid") -} - -func TestGetInt(t *testing.T) { - for _, test := range int64Tests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetInt(test.key, int(test.def)), int(test.value)) - } -} - -func TestMustGetInt(t *testing.T) { - input := "key = 123\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetInt("key"), int(123)) - assert.Panic(t, func() { p.MustGetInt("key2") }, "strconv.ParseInt: parsing.*") - assert.Panic(t, func() { p.MustGetInt("invalid") }, "unknown property: invalid") -} - -func TestGetInt64(t *testing.T) { - for _, test := range int64Tests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetInt64(test.key, test.def), test.value) - } -} - -func TestMustGetInt64(t *testing.T) { - input := "key = 123\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetInt64("key"), int64(123)) - assert.Panic(t, func() { p.MustGetInt64("key2") }, "strconv.ParseInt: parsing.*") - assert.Panic(t, func() { p.MustGetInt64("invalid") }, "unknown property: invalid") -} - -func TestGetUint(t *testing.T) { - for _, test := range uint64Tests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetUint(test.key, uint(test.def)), uint(test.value)) - } -} - -func TestMustGetUint(t *testing.T) { - input := "key = 123\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetUint("key"), uint(123)) - assert.Panic(t, func() { p.MustGetUint64("key2") }, "strconv.ParseUint: parsing.*") - assert.Panic(t, func() { p.MustGetUint64("invalid") }, "unknown property: invalid") -} - -func TestGetUint64(t *testing.T) { - for _, test := range uint64Tests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetUint64(test.key, test.def), test.value) - } -} - -func TestMustGetUint64(t *testing.T) { - input := "key = 123\nkey2 = ghi" - p := mustParse(t, input) - assert.Equal(t, p.MustGetUint64("key"), uint64(123)) - assert.Panic(t, func() { p.MustGetUint64("key2") }, "strconv.ParseUint: parsing.*") - assert.Panic(t, func() { p.MustGetUint64("invalid") }, "unknown property: invalid") -} - -func TestGetString(t *testing.T) { - for _, test := range stringTests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), 1) - assert.Equal(t, p.GetString(test.key, test.def), test.value) - } -} - -func TestMustGetString(t *testing.T) { - input := `key = value` - p := mustParse(t, input) - assert.Equal(t, p.MustGetString("key"), "value") - assert.Panic(t, func() { p.MustGetString("invalid") }, "unknown property: invalid") -} - -func TestComment(t *testing.T) { - for _, test := range commentTests { - p := mustParse(t, test.input) - assert.Equal(t, p.MustGetString(test.key), test.value) - assert.Equal(t, p.GetComments(test.key), test.comments) - if test.comments != nil { - assert.Equal(t, p.GetComment(test.key), test.comments[len(test.comments)-1]) - } else { - assert.Equal(t, p.GetComment(test.key), "") - } - - // test setting comments - if len(test.comments) > 0 { - // set single comment - p.ClearComments() - assert.Equal(t, len(p.c), 0) - p.SetComment(test.key, test.comments[0]) - assert.Equal(t, p.GetComment(test.key), test.comments[0]) - - // set multiple comments - p.ClearComments() - assert.Equal(t, len(p.c), 0) - p.SetComments(test.key, test.comments) - assert.Equal(t, p.GetComments(test.key), test.comments) - - // clear comments for a key - p.SetComments(test.key, nil) - assert.Equal(t, p.GetComment(test.key), "") - assert.Equal(t, p.GetComments(test.key), ([]string)(nil)) - } - } -} - -func TestFilter(t *testing.T) { - for _, test := range filterTests { - p := mustParse(t, test.input) - pp, err := p.Filter(test.pattern) - if err != nil { - assert.Matches(t, err.Error(), test.err) - continue - } - assert.Equal(t, pp != nil, true, "want properties") - assert.Equal(t, pp.Len(), len(test.keys)) - for _, key := range test.keys { - v1, ok1 := p.Get(key) - v2, ok2 := pp.Get(key) - assert.Equal(t, ok1, true) - assert.Equal(t, ok2, true) - assert.Equal(t, v1, v2) - } - } -} - -func TestFilterPrefix(t *testing.T) { - for _, test := range filterPrefixTests { - p := mustParse(t, test.input) - pp := p.FilterPrefix(test.prefix) - assert.Equal(t, pp != nil, true, "want properties") - assert.Equal(t, pp.Len(), len(test.keys)) - for _, key := range test.keys { - v1, ok1 := p.Get(key) - v2, ok2 := pp.Get(key) - assert.Equal(t, ok1, true) - assert.Equal(t, ok2, true) - assert.Equal(t, v1, v2) - } - } -} - -func TestFilterStripPrefix(t *testing.T) { - for _, test := range filterStripPrefixTests { - p := mustParse(t, test.input) - pp := p.FilterPrefix(test.prefix) - assert.Equal(t, pp != nil, true, "want properties") - assert.Equal(t, pp.Len(), len(test.keys)) - for _, key := range test.keys { - v1, ok1 := p.Get(key) - v2, ok2 := pp.Get(key) - assert.Equal(t, ok1, true) - assert.Equal(t, ok2, true) - assert.Equal(t, v1, v2) - } - } -} - -func TestKeys(t *testing.T) { - for _, test := range keysTests { - p := mustParse(t, test.input) - assert.Equal(t, p.Len(), len(test.keys)) - assert.Equal(t, len(p.Keys()), len(test.keys)) - assert.Equal(t, p.Keys(), test.keys) - } -} - -func TestSet(t *testing.T) { - for _, test := range setTests { - p := mustParse(t, test.input) - prev, ok, err := p.Set(test.key, test.value) - if test.err != "" { - assert.Matches(t, err.Error(), test.err) - continue - } - - assert.Equal(t, err, nil) - assert.Equal(t, ok, test.ok) - if ok { - assert.Equal(t, prev, test.prev) - } - assert.Equal(t, p.Keys(), test.keys) - } -} - -func TestSetValue(t *testing.T) { - tests := []interface{}{ - true, false, - int8(123), int16(123), int32(123), int64(123), int(123), - uint8(123), uint16(123), uint32(123), uint64(123), uint(123), - float32(1.23), float64(1.23), - "abc", - } - - for _, v := range tests { - p := NewProperties() - err := p.SetValue("x", v) - assert.Equal(t, err, nil) - assert.Equal(t, p.GetString("x", ""), fmt.Sprintf("%v", v)) - } -} - -func TestMustSet(t *testing.T) { - input := "key=${key}" - p := mustParse(t, input) - assert.Panic(t, func() { p.MustSet("key", "${key}") }, "circular reference .*") -} - -func TestWrite(t *testing.T) { - for _, test := range writeTests { - p, err := parse(test.input) - - buf := new(bytes.Buffer) - var n int - switch test.encoding { - case "UTF-8": - n, err = p.Write(buf, UTF8) - case "ISO-8859-1": - n, err = p.Write(buf, ISO_8859_1) - } - assert.Equal(t, err, nil) - s := string(buf.Bytes()) - assert.Equal(t, n, len(test.output), fmt.Sprintf("input=%q expected=%q obtained=%q", test.input, test.output, s)) - assert.Equal(t, s, test.output, fmt.Sprintf("input=%q expected=%q obtained=%q", test.input, test.output, s)) - } -} - -func TestWriteComment(t *testing.T) { - for _, test := range writeCommentTests { - p, err := parse(test.input) - - buf := new(bytes.Buffer) - var n int - switch test.encoding { - case "UTF-8": - n, err = p.WriteComment(buf, "# ", UTF8) - case "ISO-8859-1": - n, err = p.WriteComment(buf, "# ", ISO_8859_1) - } - assert.Equal(t, err, nil) - s := string(buf.Bytes()) - assert.Equal(t, n, len(test.output), fmt.Sprintf("input=%q expected=%q obtained=%q", test.input, test.output, s)) - assert.Equal(t, s, test.output, fmt.Sprintf("input=%q expected=%q obtained=%q", test.input, test.output, s)) - } -} - -func TestCustomExpansionExpression(t *testing.T) { - testKeyValuePrePostfix(t, "*[", "]*", "key=value\nkey2=*[key]*", "key", "value", "key2", "value") -} - -func TestPanicOn32BitIntOverflow(t *testing.T) { - is32Bit = true - var min, max int64 = math.MinInt32 - 1, math.MaxInt32 + 1 - input := fmt.Sprintf("min=%d\nmax=%d", min, max) - p := mustParse(t, input) - assert.Equal(t, p.MustGetInt64("min"), min) - assert.Equal(t, p.MustGetInt64("max"), max) - assert.Panic(t, func() { p.MustGetInt("min") }, ".* out of range") - assert.Panic(t, func() { p.MustGetInt("max") }, ".* out of range") -} - -func TestPanicOn32BitUintOverflow(t *testing.T) { - is32Bit = true - var max uint64 = math.MaxUint32 + 1 - input := fmt.Sprintf("max=%d", max) - p := mustParse(t, input) - assert.Equal(t, p.MustGetUint64("max"), max) - assert.Panic(t, func() { p.MustGetUint("max") }, ".* out of range") -} - -func TestDeleteKey(t *testing.T) { - input := "#comments should also be gone\nkey=to-be-deleted\nsecond=key" - p := mustParse(t, input) - assert.Equal(t, len(p.m), 2) - assert.Equal(t, len(p.c), 1) - assert.Equal(t, len(p.k), 2) - p.Delete("key") - assert.Equal(t, len(p.m), 1) - assert.Equal(t, len(p.c), 0) - assert.Equal(t, len(p.k), 1) - assert.Equal(t, p.k[0], "second") - assert.Equal(t, p.m["second"], "key") -} - -func TestDeleteUnknownKey(t *testing.T) { - input := "#comments should also be gone\nkey=to-be-deleted" - p := mustParse(t, input) - assert.Equal(t, len(p.m), 1) - assert.Equal(t, len(p.c), 1) - assert.Equal(t, len(p.k), 1) - p.Delete("wrong-key") - assert.Equal(t, len(p.m), 1) - assert.Equal(t, len(p.c), 1) - assert.Equal(t, len(p.k), 1) -} - -func TestMerge(t *testing.T) { - input1 := "#comment\nkey=value\nkey2=value2" - input2 := "#another comment\nkey=another value\nkey3=value3" - p1 := mustParse(t, input1) - p2 := mustParse(t, input2) - p1.Merge(p2) - assert.Equal(t, len(p1.m), 3) - assert.Equal(t, len(p1.c), 1) - assert.Equal(t, len(p1.k), 3) - assert.Equal(t, p1.MustGet("key"), "another value") - assert.Equal(t, p1.GetComment("key"), "another comment") -} - -func TestMap(t *testing.T) { - input := "key=value\nabc=def" - p := mustParse(t, input) - m := map[string]string{"key": "value", "abc": "def"} - assert.Equal(t, p.Map(), m) -} - -func TestFilterFunc(t *testing.T) { - input := "key=value\nabc=def" - p := mustParse(t, input) - pp := p.FilterFunc(func(k, v string) bool { - return k != "abc" - }) - m := map[string]string{"key": "value"} - assert.Equal(t, pp.Map(), m) -} - -// ---------------------------------------------------------------------------- - -// tests all combinations of delimiters, leading and/or trailing whitespace and newlines. -func testWhitespaceAndDelimiterCombinations(t *testing.T, key, value string) { - whitespace := []string{"", " ", "\f", "\t"} - delimiters := []string{"", " ", "=", ":"} - newlines := []string{"", "\r", "\n", "\r\n"} - for _, dl := range delimiters { - for _, ws1 := range whitespace { - for _, ws2 := range whitespace { - for _, nl := range newlines { - // skip the one case where there is nothing between a key and a value - if ws1 == "" && dl == "" && ws2 == "" && value != "" { - continue - } - - input := fmt.Sprintf("%s%s%s%s%s%s", key, ws1, dl, ws2, value, nl) - testKeyValue(t, input, key, value) - } - } - } - } -} - -// tests whether key/value pairs exist for a given input. -// keyvalues is expected to be an even number of strings of "key", "value", ... -func testKeyValue(t *testing.T, input string, keyvalues ...string) { - testKeyValuePrePostfix(t, "${", "}", input, keyvalues...) -} - -// tests whether key/value pairs exist for a given input. -// keyvalues is expected to be an even number of strings of "key", "value", ... -func testKeyValuePrePostfix(t *testing.T, prefix, postfix, input string, keyvalues ...string) { - p, err := Load([]byte(input), ISO_8859_1) - assert.Equal(t, err, nil) - p.Prefix = prefix - p.Postfix = postfix - assertKeyValues(t, input, p, keyvalues...) -} - -// tests whether key/value pairs exist for a given input. -// keyvalues is expected to be an even number of strings of "key", "value", ... -func assertKeyValues(t *testing.T, input string, p *Properties, keyvalues ...string) { - assert.Equal(t, p != nil, true, "want properties") - assert.Equal(t, 2*p.Len(), len(keyvalues), "Odd number of key/value pairs.") - - for i := 0; i < len(keyvalues); i += 2 { - key, value := keyvalues[i], keyvalues[i+1] - v, ok := p.Get(key) - if !ok { - t.Errorf("No key %q found (input=%q)", key, input) - } - if got, want := v, value; !reflect.DeepEqual(got, want) { - t.Errorf("Value %q does not match %q (input=%q)", v, value, input) - } - } -} - -func mustParse(t *testing.T, s string) *Properties { - p, err := parse(s) - if err != nil { - t.Fatalf("parse failed with %s", err) - } - return p -} - -// prints to stderr if the -verbose flag was given. -func printf(format string, args ...interface{}) { - if *verbose { - fmt.Fprintf(os.Stderr, format, args...) - } -} diff --git a/vendor/github.com/magiconair/properties/rangecheck.go b/vendor/github.com/magiconair/properties/rangecheck.go deleted file mode 100644 index 2e907d540..000000000 --- a/vendor/github.com/magiconair/properties/rangecheck.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 Frank Schroeder. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package properties - -import ( - "fmt" - "math" -) - -// make this a var to overwrite it in a test -var is32Bit = ^uint(0) == math.MaxUint32 - -// intRangeCheck checks if the value fits into the int type and -// panics if it does not. -func intRangeCheck(key string, v int64) int { - if is32Bit && (v < math.MinInt32 || v > math.MaxInt32) { - panic(fmt.Sprintf("Value %d for key %s out of range", v, key)) - } - return int(v) -} - -// uintRangeCheck checks if the value fits into the uint type and -// panics if it does not. -func uintRangeCheck(key string, v uint64) uint { - if is32Bit && v > math.MaxUint32 { - panic(fmt.Sprintf("Value %d for key %s out of range", v, key)) - } - return uint(v) -} diff --git a/vendor/github.com/mailru/easyjson/.travis.yml b/vendor/github.com/mailru/easyjson/.travis.yml index 3e5ac1320..884f8bbdf 100644 --- a/vendor/github.com/mailru/easyjson/.travis.yml +++ b/vendor/github.com/mailru/easyjson/.travis.yml @@ -1,8 +1,9 @@ language: go go: - - tip + - tip install: - - go get github.com/ugorji/go/codec - - go get github.com/pquerna/ffjson/fflib/v1 - - go get github.com/golang/lint/golint + - go get github.com/ugorji/go/codec + - go get github.com/pquerna/ffjson/fflib/v1 + - go get github.com/json-iterator/go + - go get github.com/golang/lint/golint diff --git a/vendor/github.com/mailru/easyjson/Makefile b/vendor/github.com/mailru/easyjson/Makefile index 8e720a084..f877ab269 100644 --- a/vendor/github.com/mailru/easyjson/Makefile +++ b/vendor/github.com/mailru/easyjson/Makefile @@ -4,7 +4,7 @@ export GOPATH all: test -.root/src/$(PKG): +.root/src/$(PKG): mkdir -p $@ for i in $$PWD/* ; do ln -s $$i $@/`basename $$i` ; done @@ -12,6 +12,7 @@ root: .root/src/$(PKG) clean: rm -rf .root + rm -rf tests/*_easyjson.go build: go build -i -o .root/bin/easyjson $(PKG)/easyjson @@ -45,6 +46,7 @@ test: generate root bench-other: generate root @go test -benchmem -bench . $(PKG)/benchmark @go test -benchmem -tags use_ffjson -bench . $(PKG)/benchmark + @go test -benchmem -tags use_jsoniter -bench . $(PKG)/benchmark @go test -benchmem -tags use_codec -bench . $(PKG)/benchmark bench-python: diff --git a/vendor/github.com/mailru/easyjson/README.md b/vendor/github.com/mailru/easyjson/README.md index d19751e0e..9366e3f71 100644 --- a/vendor/github.com/mailru/easyjson/README.md +++ b/vendor/github.com/mailru/easyjson/README.md @@ -56,7 +56,7 @@ Usage of easyjson: ``` Using `-all` will generate marshalers/unmarshalers for all Go structs in the -file. If `-all` is not provided, then only those structs whose preceeding +file. If `-all` is not provided, then only those structs whose preceding comment starts with `easyjson:json` will have marshalers/unmarshalers generated. For example: diff --git a/vendor/github.com/mailru/easyjson/benchmark/data.go b/vendor/github.com/mailru/easyjson/benchmark/data.go index d2c689cd6..71eb91a94 100644 --- a/vendor/github.com/mailru/easyjson/benchmark/data.go +++ b/vendor/github.com/mailru/easyjson/benchmark/data.go @@ -25,12 +25,12 @@ var smallStructData = Entities{ type SearchMetadata struct { CompletedIn float64 `json:"completed_in"` Count int `json:"count"` - MaxID int `json:"max_id"` + MaxID int64 `json:"max_id"` MaxIDStr string `json:"max_id_str"` NextResults string `json:"next_results"` Query string `json:"query"` RefreshURL string `json:"refresh_url"` - SinceID int `json:"since_id"` + SinceID int64 `json:"since_id"` SinceIDStr string `json:"since_id_str"` } diff --git a/vendor/github.com/mailru/easyjson/benchmark/default_test.go b/vendor/github.com/mailru/easyjson/benchmark/default_test.go index b647bef23..68b37910d 100644 --- a/vendor/github.com/mailru/easyjson/benchmark/default_test.go +++ b/vendor/github.com/mailru/easyjson/benchmark/default_test.go @@ -1,4 +1,4 @@ -// +build !use_easyjson,!use_ffjson,!use_codec +// +build !use_easyjson,!use_ffjson,!use_codec,!use_jsoniter package benchmark diff --git a/vendor/github.com/mailru/easyjson/benchmark/jsoniter_test.go b/vendor/github.com/mailru/easyjson/benchmark/jsoniter_test.go new file mode 100644 index 000000000..004f891da --- /dev/null +++ b/vendor/github.com/mailru/easyjson/benchmark/jsoniter_test.go @@ -0,0 +1,119 @@ +// +build use_jsoniter + +package benchmark + +import ( + "testing" + + jsoniter "github.com/json-iterator/go" +) + +func BenchmarkJI_Unmarshal_M(b *testing.B) { + b.SetBytes(int64(len(largeStructText))) + for i := 0; i < b.N; i++ { + var s LargeStruct + err := jsoniter.Unmarshal(largeStructText, &s) + if err != nil { + b.Error(err) + } + } +} + +func BenchmarkJI_Unmarshal_S(b *testing.B) { + for i := 0; i < b.N; i++ { + var s Entities + err := jsoniter.Unmarshal(smallStructText, &s) + if err != nil { + b.Error(err) + } + } + b.SetBytes(int64(len(smallStructText))) +} + +func BenchmarkJI_Marshal_M(b *testing.B) { + var l int64 + for i := 0; i < b.N; i++ { + data, err := jsoniter.Marshal(&largeStructData) + if err != nil { + b.Error(err) + } + l = int64(len(data)) + } + b.SetBytes(l) +} + +func BenchmarkJI_Marshal_L(b *testing.B) { + var l int64 + for i := 0; i < b.N; i++ { + data, err := jsoniter.Marshal(&xlStructData) + if err != nil { + b.Error(err) + } + l = int64(len(data)) + } + b.SetBytes(l) +} + +func BenchmarkJI_Marshal_M_Parallel(b *testing.B) { + var l int64 + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + data, err := jsoniter.Marshal(&largeStructData) + if err != nil { + b.Error(err) + } + l = int64(len(data)) + } + }) + b.SetBytes(l) +} + +func BenchmarkJI_Marshal_L_Parallel(b *testing.B) { + var l int64 + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + data, err := jsoniter.Marshal(&xlStructData) + if err != nil { + b.Error(err) + } + l = int64(len(data)) + } + }) + b.SetBytes(l) +} + +func BenchmarkJI_Marshal_S(b *testing.B) { + var l int64 + for i := 0; i < b.N; i++ { + data, err := jsoniter.Marshal(&smallStructData) + if err != nil { + b.Error(err) + } + l = int64(len(data)) + } + b.SetBytes(l) +} + +func BenchmarkJI_Marshal_S_Parallel(b *testing.B) { + var l int64 + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + data, err := jsoniter.Marshal(&smallStructData) + if err != nil { + b.Error(err) + } + l = int64(len(data)) + } + }) + b.SetBytes(l) +} + +func BenchmarkJI_Marshal_M_ToWriter(b *testing.B) { + enc := jsoniter.NewEncoder(&DummyWriter{}) + for i := 0; i < b.N; i++ { + err := enc.Encode(&largeStructData) + if err != nil { + b.Error(err) + } + } +} diff --git a/vendor/github.com/mailru/easyjson/easyjson/main.go b/vendor/github.com/mailru/easyjson/easyjson/main.go index 1c3949757..1cd30bb36 100644 --- a/vendor/github.com/mailru/easyjson/easyjson/main.go +++ b/vendor/github.com/mailru/easyjson/easyjson/main.go @@ -54,8 +54,13 @@ func generate(fname string) (err error) { outName = *specifiedName } + var trimmedBuildTags string + if *buildTags != "" { + trimmedBuildTags = strings.TrimSpace(*buildTags) + } + g := bootstrap.Generator{ - BuildTags: *buildTags, + BuildTags: trimmedBuildTags, PkgPath: p.PkgPath, PkgName: p.PkgName, Types: p.StructNames, diff --git a/vendor/github.com/mailru/easyjson/gen/decoder.go b/vendor/github.com/mailru/easyjson/gen/decoder.go index 2fece5dd0..021933ac8 100644 --- a/vendor/github.com/mailru/easyjson/gen/decoder.go +++ b/vendor/github.com/mailru/easyjson/gen/decoder.go @@ -36,16 +36,22 @@ var primitiveDecoders = map[reflect.Kind]string{ } var primitiveStringDecoders = map[reflect.Kind]string{ - reflect.Int: "in.IntStr()", - reflect.Int8: "in.Int8Str()", - reflect.Int16: "in.Int16Str()", - reflect.Int32: "in.Int32Str()", - reflect.Int64: "in.Int64Str()", - reflect.Uint: "in.UintStr()", - reflect.Uint8: "in.Uint8Str()", - reflect.Uint16: "in.Uint16Str()", - reflect.Uint32: "in.Uint32Str()", - reflect.Uint64: "in.Uint64Str()", + reflect.String: "in.String()", + reflect.Int: "in.IntStr()", + reflect.Int8: "in.Int8Str()", + reflect.Int16: "in.Int16Str()", + reflect.Int32: "in.Int32Str()", + reflect.Int64: "in.Int64Str()", + reflect.Uint: "in.UintStr()", + reflect.Uint8: "in.Uint8Str()", + reflect.Uint16: "in.Uint16Str()", + reflect.Uint32: "in.Uint32Str()", + reflect.Uint64: "in.Uint64Str()", + reflect.Uintptr: "in.UintptrStr()", +} + +var customDecoders = map[string]string{ + "json.Number": "in.JsonNumber()", } // genTypeDecoder generates decoding code for the type t, but uses unmarshaler interface if implemented by t. @@ -82,7 +88,10 @@ func (g *Generator) genTypeDecoder(t reflect.Type, out string, tags fieldTags, i func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags fieldTags, indent int) error { ws := strings.Repeat(" ", indent) // Check whether type is primitive, needs to be done after interface check. - if dec := primitiveStringDecoders[t.Kind()]; dec != "" && tags.asString { + if dec := customDecoders[t.String()]; dec != "" { + fmt.Fprintln(g.out, ws+out+" = "+dec) + return nil + } else if dec := primitiveStringDecoders[t.Kind()]; dec != "" && tags.asString { fmt.Fprintln(g.out, ws+out+" = "+g.getType(t)+"("+dec+")") return nil } else if dec := primitiveDecoders[t.Kind()]; dec != "" { @@ -127,7 +136,9 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" for !in.IsDelim(']') {") fmt.Fprintln(g.out, ws+" var "+tmpVar+" "+g.getType(elem)) - g.genTypeDecoder(elem, tmpVar, tags, indent+2) + if err := g.genTypeDecoder(elem, tmpVar, tags, indent+2); err != nil { + return err + } fmt.Fprintln(g.out, ws+" "+out+" = append("+out+", "+tmpVar+")") fmt.Fprintln(g.out, ws+" in.WantComma()") @@ -159,7 +170,9 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" for !in.IsDelim(']') {") fmt.Fprintln(g.out, ws+" if "+iterVar+" < "+fmt.Sprint(length)+" {") - g.genTypeDecoder(elem, out+"["+iterVar+"]", tags, indent+3) + if err := g.genTypeDecoder(elem, out+"["+iterVar+"]", tags, indent+3); err != nil { + return err + } fmt.Fprintln(g.out, ws+" "+iterVar+"++") fmt.Fprintln(g.out, ws+" } else {") @@ -186,14 +199,17 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" "+out+" = new("+g.getType(t.Elem())+")") fmt.Fprintln(g.out, ws+" }") - g.genTypeDecoder(t.Elem(), "*"+out, tags, indent+1) + if err := g.genTypeDecoder(t.Elem(), "*"+out, tags, indent+1); err != nil { + return err + } fmt.Fprintln(g.out, ws+"}") case reflect.Map: key := t.Key() - if key.Kind() != reflect.String { - return fmt.Errorf("map type %v not supported: only string keys are allowed", key) + keyDec, ok := primitiveStringDecoders[key.Kind()] + if !ok { + return fmt.Errorf("map type %v not supported: only string and integer keys are allowed", key) } elem := t.Elem() tmpVar := g.uniqueVarName() @@ -209,11 +225,13 @@ func (g *Generator) genTypeDecoderNoCheck(t reflect.Type, out string, tags field fmt.Fprintln(g.out, ws+" }") fmt.Fprintln(g.out, ws+" for !in.IsDelim('}') {") - fmt.Fprintln(g.out, ws+" key := "+g.getType(t.Key())+"(in.String())") + fmt.Fprintln(g.out, ws+" key := "+g.getType(key)+"("+keyDec+")") fmt.Fprintln(g.out, ws+" in.WantColon()") fmt.Fprintln(g.out, ws+" var "+tmpVar+" "+g.getType(elem)) - g.genTypeDecoder(elem, tmpVar, tags, indent+2) + if err := g.genTypeDecoder(elem, tmpVar, tags, indent+2); err != nil { + return err + } fmt.Fprintln(g.out, ws+" ("+out+")[key] = "+tmpVar) fmt.Fprintln(g.out, ws+" in.WantComma()") diff --git a/vendor/github.com/mailru/easyjson/gen/encoder.go b/vendor/github.com/mailru/easyjson/gen/encoder.go index a54f6e24b..48cba15d4 100644 --- a/vendor/github.com/mailru/easyjson/gen/encoder.go +++ b/vendor/github.com/mailru/easyjson/gen/encoder.go @@ -33,16 +33,18 @@ var primitiveEncoders = map[reflect.Kind]string{ } var primitiveStringEncoders = map[reflect.Kind]string{ - reflect.Int: "out.IntStr(int(%v))", - reflect.Int8: "out.Int8Str(int8(%v))", - reflect.Int16: "out.Int16Str(int16(%v))", - reflect.Int32: "out.Int32Str(int32(%v))", - reflect.Int64: "out.Int64Str(int64(%v))", - reflect.Uint: "out.UintStr(uint(%v))", - reflect.Uint8: "out.Uint8Str(uint8(%v))", - reflect.Uint16: "out.Uint16Str(uint16(%v))", - reflect.Uint32: "out.Uint32Str(uint32(%v))", - reflect.Uint64: "out.Uint64Str(uint64(%v))", + reflect.String: "out.String(string(%v))", + reflect.Int: "out.IntStr(int(%v))", + reflect.Int8: "out.Int8Str(int8(%v))", + reflect.Int16: "out.Int16Str(int16(%v))", + reflect.Int32: "out.Int32Str(int32(%v))", + reflect.Int64: "out.Int64Str(int64(%v))", + reflect.Uint: "out.UintStr(uint(%v))", + reflect.Uint8: "out.Uint8Str(uint8(%v))", + reflect.Uint16: "out.Uint16Str(uint16(%v))", + reflect.Uint32: "out.Uint32Str(uint32(%v))", + reflect.Uint64: "out.Uint64Str(uint64(%v))", + reflect.Uintptr: "out.UintptrStr(uintptr(%v))", } // fieldTags contains parsed version of json struct field tags. @@ -81,7 +83,7 @@ func parseFieldTags(f reflect.StructField) fieldTags { } // genTypeEncoder generates code that encodes in of type t into the writer, but uses marshaler interface if implemented by t. -func (g *Generator) genTypeEncoder(t reflect.Type, in string, tags fieldTags, indent int) error { +func (g *Generator) genTypeEncoder(t reflect.Type, in string, tags fieldTags, indent int, assumeNonEmpty bool) error { ws := strings.Repeat(" ", indent) marshalerIface := reflect.TypeOf((*easyjson.Marshaler)(nil)).Elem() @@ -102,12 +104,12 @@ func (g *Generator) genTypeEncoder(t reflect.Type, in string, tags fieldTags, in return nil } - err := g.genTypeEncoderNoCheck(t, in, tags, indent) + err := g.genTypeEncoderNoCheck(t, in, tags, indent, assumeNonEmpty) return err } // genTypeEncoderNoCheck generates code that encodes in of type t into the writer. -func (g *Generator) genTypeEncoderNoCheck(t reflect.Type, in string, tags fieldTags, indent int) error { +func (g *Generator) genTypeEncoderNoCheck(t reflect.Type, in string, tags fieldTags, indent int, assumeNonEmpty bool) error { ws := strings.Repeat(" ", indent) // Check whether type is primitive, needs to be done after interface check. @@ -128,16 +130,22 @@ func (g *Generator) genTypeEncoderNoCheck(t reflect.Type, in string, tags fieldT if t.Elem().Kind() == reflect.Uint8 { fmt.Fprintln(g.out, ws+"out.Base64Bytes("+in+")") } else { - fmt.Fprintln(g.out, ws+"if "+in+" == nil && (out.Flags & jwriter.NilSliceAsEmpty) == 0 {") - fmt.Fprintln(g.out, ws+` out.RawString("null")`) - fmt.Fprintln(g.out, ws+"} else {") + if !assumeNonEmpty { + fmt.Fprintln(g.out, ws+"if "+in+" == nil && (out.Flags & jwriter.NilSliceAsEmpty) == 0 {") + fmt.Fprintln(g.out, ws+` out.RawString("null")`) + fmt.Fprintln(g.out, ws+"} else {") + } else { + fmt.Fprintln(g.out, ws+"{") + } fmt.Fprintln(g.out, ws+" out.RawByte('[')") fmt.Fprintln(g.out, ws+" for "+iVar+", "+vVar+" := range "+in+" {") fmt.Fprintln(g.out, ws+" if "+iVar+" > 0 {") fmt.Fprintln(g.out, ws+" out.RawByte(',')") fmt.Fprintln(g.out, ws+" }") - g.genTypeEncoder(elem, vVar, tags, indent+2) + if err := g.genTypeEncoder(elem, vVar, tags, indent+2, false); err != nil { + return err + } fmt.Fprintln(g.out, ws+" }") fmt.Fprintln(g.out, ws+" out.RawByte(']')") @@ -157,7 +165,9 @@ func (g *Generator) genTypeEncoderNoCheck(t reflect.Type, in string, tags fieldT fmt.Fprintln(g.out, ws+" out.RawByte(',')") fmt.Fprintln(g.out, ws+" }") - g.genTypeEncoder(elem, in+"["+iVar+"]", tags, indent+1) + if err := g.genTypeEncoder(elem, in+"["+iVar+"]", tags, indent+1, false); err != nil { + return err + } fmt.Fprintln(g.out, ws+"}") fmt.Fprintln(g.out, ws+"out.RawByte(']')") @@ -170,33 +180,45 @@ func (g *Generator) genTypeEncoderNoCheck(t reflect.Type, in string, tags fieldT fmt.Fprintln(g.out, ws+enc+"(out, "+in+")") case reflect.Ptr: - fmt.Fprintln(g.out, ws+"if "+in+" == nil {") - fmt.Fprintln(g.out, ws+` out.RawString("null")`) - fmt.Fprintln(g.out, ws+"} else {") + if !assumeNonEmpty { + fmt.Fprintln(g.out, ws+"if "+in+" == nil {") + fmt.Fprintln(g.out, ws+` out.RawString("null")`) + fmt.Fprintln(g.out, ws+"} else {") + } - g.genTypeEncoder(t.Elem(), "*"+in, tags, indent+1) + if err := g.genTypeEncoder(t.Elem(), "*"+in, tags, indent+1, false); err != nil { + return err + } - fmt.Fprintln(g.out, ws+"}") + if !assumeNonEmpty { + fmt.Fprintln(g.out, ws+"}") + } case reflect.Map: key := t.Key() - if key.Kind() != reflect.String { - return fmt.Errorf("map type %v not supported: only string keys are allowed", key) + keyEnc, ok := primitiveStringEncoders[key.Kind()] + if !ok { + return fmt.Errorf("map key type %v not supported: only string and integer keys are allowed", key) } tmpVar := g.uniqueVarName() - fmt.Fprintln(g.out, ws+"if "+in+" == nil && (out.Flags & jwriter.NilMapAsEmpty) == 0 {") - fmt.Fprintln(g.out, ws+" out.RawString(`null`)") - fmt.Fprintln(g.out, ws+"} else {") + if !assumeNonEmpty { + fmt.Fprintln(g.out, ws+"if "+in+" == nil && (out.Flags & jwriter.NilMapAsEmpty) == 0 {") + fmt.Fprintln(g.out, ws+" out.RawString(`null`)") + fmt.Fprintln(g.out, ws+"} else {") + } else { + fmt.Fprintln(g.out, ws+"{") + } fmt.Fprintln(g.out, ws+" out.RawByte('{')") fmt.Fprintln(g.out, ws+" "+tmpVar+"First := true") fmt.Fprintln(g.out, ws+" for "+tmpVar+"Name, "+tmpVar+"Value := range "+in+" {") - fmt.Fprintln(g.out, ws+" if !"+tmpVar+"First { out.RawByte(',') }") - fmt.Fprintln(g.out, ws+" "+tmpVar+"First = false") - fmt.Fprintln(g.out, ws+" out.String(string("+tmpVar+"Name))") + fmt.Fprintln(g.out, ws+" if "+tmpVar+"First { "+tmpVar+"First = false } else { out.RawByte(',') }") + fmt.Fprintln(g.out, ws+" "+fmt.Sprintf(keyEnc, tmpVar+"Name")) fmt.Fprintln(g.out, ws+" out.RawByte(':')") - g.genTypeEncoder(t.Elem(), tmpVar+"Value", tags, indent+2) + if err := g.genTypeEncoder(t.Elem(), tmpVar+"Value", tags, indent+2, false); err != nil { + return err + } fmt.Fprintln(g.out, ws+" }") fmt.Fprintln(g.out, ws+" out.RawByte('}')") @@ -254,19 +276,21 @@ func (g *Generator) genStructFieldEncoder(t reflect.Type, f reflect.StructField) if tags.omit { return nil } - if !tags.omitEmpty && !g.omitEmpty || tags.noOmitEmpty { - fmt.Fprintln(g.out, " if !first { out.RawByte(',') }") - fmt.Fprintln(g.out, " first = false") - fmt.Fprintf(g.out, " out.RawString(%q)\n", strconv.Quote(jsonName)+":") - return g.genTypeEncoder(f.Type, "in."+f.Name, tags, 1) + noOmitEmpty := (!tags.omitEmpty && !g.omitEmpty) || tags.noOmitEmpty + if noOmitEmpty { + fmt.Fprintln(g.out, " {") + } else { + fmt.Fprintln(g.out, " if", g.notEmptyCheck(f.Type, "in."+f.Name), "{") } + fmt.Fprintf(g.out, " const prefix string = %q\n", ","+strconv.Quote(jsonName)+":") + fmt.Fprintln(g.out, " if first {") + fmt.Fprintln(g.out, " first = false") + fmt.Fprintln(g.out, " out.RawString(prefix[1:])") + fmt.Fprintln(g.out, " } else {") + fmt.Fprintln(g.out, " out.RawString(prefix)") + fmt.Fprintln(g.out, " }") - fmt.Fprintln(g.out, " if", g.notEmptyCheck(f.Type, "in."+f.Name), "{") - fmt.Fprintln(g.out, " if !first { out.RawByte(',') }") - fmt.Fprintln(g.out, " first = false") - - fmt.Fprintf(g.out, " out.RawString(%q)\n", strconv.Quote(jsonName)+":") - if err := g.genTypeEncoder(f.Type, "in."+f.Name, tags, 2); err != nil { + if err := g.genTypeEncoder(f.Type, "in."+f.Name, tags, 2, !noOmitEmpty); err != nil { return err } fmt.Fprintln(g.out, " }") @@ -293,7 +317,7 @@ func (g *Generator) genSliceArrayMapEncoder(t reflect.Type) error { typ := g.getType(t) fmt.Fprintln(g.out, "func "+fname+"(out *jwriter.Writer, in "+typ+") {") - err := g.genTypeEncoderNoCheck(t, "in", fieldTags{}, 1) + err := g.genTypeEncoderNoCheck(t, "in", fieldTags{}, 1, false) if err != nil { return err } diff --git a/vendor/github.com/mailru/easyjson/gen/generator.go b/vendor/github.com/mailru/easyjson/gen/generator.go index f4312f64e..eb0d70ba2 100644 --- a/vendor/github.com/mailru/easyjson/gen/generator.go +++ b/vendor/github.com/mailru/easyjson/gen/generator.go @@ -224,6 +224,10 @@ func fixAliasName(alias string) string { "_", -1, ) + + if alias[0] == 'v' { // to void conflicting with var names, say v1 + alias = "_" + alias + } return alias } @@ -380,7 +384,7 @@ func (DefaultFieldNamer) GetJSONFieldName(t reflect.Type, f reflect.StructField) } // LowerCamelCaseFieldNamer -type LowerCamelCaseFieldNamer struct {} +type LowerCamelCaseFieldNamer struct{} func isLower(b byte) bool { return b <= 122 && b >= 97 @@ -407,7 +411,7 @@ func lowerFirst(s string) string { If the following char is upper OR numeric, LOWER it If is the end of string, LEAVE it Else lowercase - */ + */ foundLower := false for i := range s { diff --git a/vendor/github.com/mailru/easyjson/jlexer/lexer.go b/vendor/github.com/mailru/easyjson/jlexer/lexer.go index e81f1031b..e5558ae39 100644 --- a/vendor/github.com/mailru/easyjson/jlexer/lexer.go +++ b/vendor/github.com/mailru/easyjson/jlexer/lexer.go @@ -6,6 +6,7 @@ package jlexer import ( "encoding/base64" + "encoding/json" "errors" "fmt" "io" @@ -903,6 +904,10 @@ func (r *Lexer) UintStr() uint { return uint(r.Uint64Str()) } +func (r *Lexer) UintptrStr() uintptr { + return uintptr(r.Uint64Str()) +} + func (r *Lexer) Int8Str() int8 { s, b := r.unsafeString() if !r.Ok() { @@ -1043,6 +1048,28 @@ func (r *Lexer) GetNonFatalErrors() []*LexerError { return r.multipleErrors } +// JsonNumber fetches and json.Number from 'encoding/json' package. +// Both int, float or string, contains them are valid values +func (r *Lexer) JsonNumber() json.Number { + if r.token.kind == tokenUndef && r.Ok() { + r.FetchToken() + } + if !r.Ok() { + r.errInvalidToken("json.Number") + return json.Number("0") + } + + switch r.token.kind { + case tokenString: + return json.Number(r.String()) + case tokenNumber: + return json.Number(r.Raw()) + default: + r.errSyntax() + return json.Number("0") + } +} + // Interface fetches an interface{} analogous to the 'encoding/json' package. func (r *Lexer) Interface() interface{} { if r.token.kind == tokenUndef && r.Ok() { diff --git a/vendor/github.com/mailru/easyjson/jlexer/lexer_test.go b/vendor/github.com/mailru/easyjson/jlexer/lexer_test.go index b8a649898..4ce4abe6a 100644 --- a/vendor/github.com/mailru/easyjson/jlexer/lexer_test.go +++ b/vendor/github.com/mailru/easyjson/jlexer/lexer_test.go @@ -2,6 +2,7 @@ package jlexer import ( "bytes" + "encoding/json" "reflect" "testing" ) @@ -249,3 +250,62 @@ func TestConsumed(t *testing.T) { } } } + +func TestJsonNumber(t *testing.T) { + for i, test := range []struct { + toParse string + want json.Number + wantLexerError bool + wantValue interface{} + wantValueError bool + }{ + {toParse: `10`, want: json.Number("10"), wantValue: int64(10)}, + {toParse: `0`, want: json.Number("0"), wantValue: int64(0)}, + {toParse: `0.12`, want: json.Number("0.12"), wantValue: 0.12}, + {toParse: `25E-4`, want: json.Number("25E-4"), wantValue: 25E-4}, + + {toParse: `"10"`, want: json.Number("10"), wantValue: int64(10)}, + {toParse: `"0"`, want: json.Number("0"), wantValue: int64(0)}, + {toParse: `"0.12"`, want: json.Number("0.12"), wantValue: 0.12}, + {toParse: `"25E-4"`, want: json.Number("25E-4"), wantValue: 25E-4}, + + {toParse: `"a""`, wantValueError: true}, + + {toParse: `[1]`, wantLexerError: true}, + {toParse: `{}`, wantLexerError: true}, + {toParse: `a`, wantLexerError: true}, + } { + l := Lexer{Data: []byte(test.toParse)} + + got := l.JsonNumber() + if got != test.want && !test.wantLexerError && !test.wantValueError { + t.Errorf("[%d, %q] JsonNumber() = %v; want %v", i, test.toParse, got, test.want) + } + + err := l.Error() + if err != nil && !test.wantLexerError { + t.Errorf("[%d, %q] JsonNumber() lexer error: %v", i, test.toParse, err) + } else if err == nil && test.wantLexerError { + t.Errorf("[%d, %q] JsonNumber() ok; want lexer error", i, test.toParse) + } + + var valueErr error + var gotValue interface{} + switch test.wantValue.(type) { + case float64: + gotValue, valueErr = got.Float64() + default: + gotValue, valueErr = got.Int64() + } + + if !reflect.DeepEqual(gotValue, test.wantValue) && !test.wantLexerError && !test.wantValueError { + t.Errorf("[%d, %q] JsonNumber() = %v; want %v", i, test.toParse, gotValue, test.wantValue) + } + + if valueErr != nil && !test.wantValueError { + t.Errorf("[%d, %q] JsonNumber() value error: %v", i, test.toParse, err) + } else if valueErr == nil && test.wantValueError { + t.Errorf("[%d, %q] JsonNumber() ok; want value error", i, test.toParse) + } + } +} diff --git a/vendor/github.com/mailru/easyjson/jwriter/writer.go b/vendor/github.com/mailru/easyjson/jwriter/writer.go index 7b55293a0..e5a5ddfdb 100644 --- a/vendor/github.com/mailru/easyjson/jwriter/writer.go +++ b/vendor/github.com/mailru/easyjson/jwriter/writer.go @@ -2,7 +2,6 @@ package jwriter import ( - "encoding/base64" "io" "strconv" "unicode/utf8" @@ -105,9 +104,7 @@ func (w *Writer) Base64Bytes(data []byte) { return } w.Buffer.AppendByte('"') - dst := make([]byte, base64.StdEncoding.EncodedLen(len(data))) - base64.StdEncoding.Encode(dst, data) - w.Buffer.AppendBytes(dst) + w.base64(data) w.Buffer.AppendByte('"') } @@ -196,6 +193,13 @@ func (w *Writer) Uint64Str(n uint64) { w.Buffer.Buf = append(w.Buffer.Buf, '"') } +func (w *Writer) UintptrStr(n uintptr) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + func (w *Writer) Int8Str(n int8) { w.Buffer.EnsureSpace(4) w.Buffer.Buf = append(w.Buffer.Buf, '"') @@ -326,3 +330,48 @@ func (w *Writer) String(s string) { w.Buffer.AppendString(s[p:]) w.Buffer.AppendByte('"') } + +const encode = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +const padChar = '=' + +func (w *Writer) base64(in []byte) { + + if len(in) == 0 { + return + } + + w.Buffer.EnsureSpace(((len(in) - 1) / 3 + 1) * 4) + + si := 0 + n := (len(in) / 3) * 3 + + + for si < n { + // Convert 3x 8bit source bytes into 4 bytes + val := uint(in[si+0])<<16 | uint(in[si+1])<<8 | uint(in[si+2]) + + w.Buffer.Buf = append(w.Buffer.Buf, encode[val>>18&0x3F], encode[val>>12&0x3F], encode[val>>6&0x3F], encode[val&0x3F]) + + si += 3 + } + + remain := len(in) - si + if remain == 0 { + return + } + + // Add the remaining small block + val := uint(in[si+0]) << 16 + if remain == 2 { + val |= uint(in[si+1]) << 8 + } + + w.Buffer.Buf = append(w.Buffer.Buf, encode[val>>18&0x3F], encode[val>>12&0x3F]) + + switch remain { + case 2: + w.Buffer.Buf = append(w.Buffer.Buf, encode[val>>6&0x3F], byte(padChar)) + case 1: + w.Buffer.Buf = append(w.Buffer.Buf, byte(padChar), byte(padChar)) + } +} diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Bool.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Bool.go index 927d2398a..6978ee971 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Bool.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Bool.go @@ -51,7 +51,7 @@ func (v *Bool) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Bool) MarshalJSON() ([]byte, error) { +func (v Bool) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Bool) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Bool) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Float32.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Float32.go index 3d5f1575c..643cea359 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Float32.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Float32.go @@ -51,7 +51,7 @@ func (v *Float32) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Float32) MarshalJSON() ([]byte, error) { +func (v Float32) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Float32) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Float32) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Float64.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Float64.go index 9719657ea..75ae72757 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Float64.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Float64.go @@ -51,7 +51,7 @@ func (v *Float64) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Float64) MarshalJSON() ([]byte, error) { +func (v Float64) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Float64) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Float64) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int.go index bfe6eff20..469742fee 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int.go @@ -51,7 +51,7 @@ func (v *Int) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Int) MarshalJSON() ([]byte, error) { +func (v Int) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Int) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Int) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int16.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int16.go index e2f5daa3c..b7723e241 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int16.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int16.go @@ -51,7 +51,7 @@ func (v *Int16) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Int16) MarshalJSON() ([]byte, error) { +func (v Int16) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Int16) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Int16) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int32.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int32.go index e0d6975d8..7c7637a38 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int32.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int32.go @@ -51,7 +51,7 @@ func (v *Int32) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Int32) MarshalJSON() ([]byte, error) { +func (v Int32) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Int32) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Int32) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int64.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int64.go index 641fccc9a..e6ea6dc41 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int64.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int64.go @@ -51,7 +51,7 @@ func (v *Int64) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Int64) MarshalJSON() ([]byte, error) { +func (v Int64) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Int64) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Int64) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int8.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int8.go index 9d6745c82..ddc666580 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Int8.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Int8.go @@ -51,7 +51,7 @@ func (v *Int8) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Int8) MarshalJSON() ([]byte, error) { +func (v Int8) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Int8) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Int8) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_String.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_String.go index d2799de93..11c90b4ed 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_String.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_String.go @@ -51,7 +51,7 @@ func (v *String) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *String) MarshalJSON() ([]byte, error) { +func (v String) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *String) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *String) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint.go index b41405bf9..57efd3185 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint.go @@ -51,7 +51,7 @@ func (v *Uint) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Uint) MarshalJSON() ([]byte, error) { +func (v Uint) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Uint) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Uint) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint16.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint16.go index 35c38fd60..f28e1d2ef 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint16.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint16.go @@ -51,7 +51,7 @@ func (v *Uint16) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Uint16) MarshalJSON() ([]byte, error) { +func (v Uint16) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Uint16) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Uint16) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint32.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint32.go index 118b7945c..9fb95c0db 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint32.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint32.go @@ -51,7 +51,7 @@ func (v *Uint32) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Uint32) MarshalJSON() ([]byte, error) { +func (v Uint32) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Uint32) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Uint32) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint64.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint64.go index e540c9da5..0e623c62d 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint64.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint64.go @@ -51,7 +51,7 @@ func (v *Uint64) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Uint64) MarshalJSON() ([]byte, error) { +func (v Uint64) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Uint64) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Uint64) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint8.go b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint8.go index f18456933..c629e4453 100644 --- a/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint8.go +++ b/vendor/github.com/mailru/easyjson/opt/gotemplate_Uint8.go @@ -51,7 +51,7 @@ func (v *Uint8) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Uint8) MarshalJSON() ([]byte, error) { +func (v Uint8) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -59,7 +59,7 @@ func (v *Uint8) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Uint8) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/opt/optional/opt.go b/vendor/github.com/mailru/easyjson/opt/optional/opt.go index 29c4afa55..277dd1a3b 100644 --- a/vendor/github.com/mailru/easyjson/opt/optional/opt.go +++ b/vendor/github.com/mailru/easyjson/opt/optional/opt.go @@ -52,7 +52,7 @@ func (v *Optional) UnmarshalEasyJSON(l *jlexer.Lexer) { } // MarshalJSON implements a standard json marshaler interface. -func (v *Optional) MarshalJSON() ([]byte, error) { +func (v Optional) MarshalJSON() ([]byte, error) { w := jwriter.Writer{} v.MarshalEasyJSON(&w) return w.Buffer.BuildBytes(), w.Error @@ -60,7 +60,7 @@ func (v *Optional) MarshalJSON() ([]byte, error) { // UnmarshalJSON implements a standard json unmarshaler interface. func (v *Optional) UnmarshalJSON(data []byte) error { - l := jlexer.Lexer{} + l := jlexer.Lexer{Data: data} v.UnmarshalEasyJSON(&l) return l.Error() } diff --git a/vendor/github.com/mailru/easyjson/parser/parser.go b/vendor/github.com/mailru/easyjson/parser/parser.go index 1c0b94caa..5bd06e946 100644 --- a/vendor/github.com/mailru/easyjson/parser/parser.go +++ b/vendor/github.com/mailru/easyjson/parser/parser.go @@ -4,6 +4,7 @@ import ( "go/ast" "go/parser" "go/token" + "os/exec" "strings" ) @@ -89,3 +90,8 @@ func (p *Parser) Parse(fname string, isDir bool) error { } return nil } + +func getDefaultGoPath() (string, error) { + output, err := exec.Command("go", "env", "GOPATH").Output() + return string(output), err +} diff --git a/vendor/github.com/mailru/easyjson/parser/parser_unix.go b/vendor/github.com/mailru/easyjson/parser/parser_unix.go index a1b9d84d1..09b20a2e1 100644 --- a/vendor/github.com/mailru/easyjson/parser/parser_unix.go +++ b/vendor/github.com/mailru/easyjson/parser/parser_unix.go @@ -18,6 +18,15 @@ func getPkgPath(fname string, isDir bool) (string, error) { fname = path.Join(pwd, fname) } + gopath := os.Getenv("GOPATH") + if gopath == "" { + var err error + gopath, err = getDefaultGoPath() + if err != nil { + return "", fmt.Errorf("cannot determine GOPATH: %s", err) + } + } + for _, p := range strings.Split(os.Getenv("GOPATH"), ":") { prefix := path.Join(p, "src") + "/" if rel := strings.TrimPrefix(fname, prefix); rel != fname { diff --git a/vendor/github.com/mailru/easyjson/parser/parser_windows.go b/vendor/github.com/mailru/easyjson/parser/parser_windows.go index 64974aa97..90d3a78b5 100644 --- a/vendor/github.com/mailru/easyjson/parser/parser_windows.go +++ b/vendor/github.com/mailru/easyjson/parser/parser_windows.go @@ -4,15 +4,18 @@ import ( "fmt" "os" "path" + "path/filepath" "strings" ) func normalizePath(path string) string { - return strings.Replace(path, "\\", "/", -1) + // use lower case, as Windows file systems will almost always be case insensitive + return strings.ToLower(strings.Replace(path, "\\", "/", -1)) } func getPkgPath(fname string, isDir bool) (string, error) { - if !path.IsAbs(fname) { + // path.IsAbs doesn't work properly on Windows; use filepath.IsAbs instead + if !filepath.IsAbs(fname) { pwd, err := os.Getwd() if err != nil { return "", err @@ -22,6 +25,15 @@ func getPkgPath(fname string, isDir bool) (string, error) { fname = normalizePath(fname) + gopath := os.Getenv("GOPATH") + if gopath == "" { + var err error + gopath, err = getDefaultGoPath() + if err != nil { + return "", fmt.Errorf("cannot determine GOPATH: %s", err) + } + } + for _, p := range strings.Split(os.Getenv("GOPATH"), ";") { prefix := path.Join(normalizePath(p), "src") + "/" if rel := strings.TrimPrefix(fname, prefix); rel != fname { diff --git a/vendor/github.com/mailru/easyjson/tests/basic_test.go b/vendor/github.com/mailru/easyjson/tests/basic_test.go index b727c9e2d..018678402 100644 --- a/vendor/github.com/mailru/easyjson/tests/basic_test.go +++ b/vendor/github.com/mailru/easyjson/tests/basic_test.go @@ -38,6 +38,15 @@ var testCases = []struct { {&IntsValue, IntsString}, {&mapStringStringValue, mapStringStringString}, {&namedTypeValue, namedTypeValueString}, + {&mapMyIntStringValue, mapMyIntStringValueString}, + {&mapIntStringValue, mapIntStringValueString}, + {&mapInt32StringValue, mapInt32StringValueString}, + {&mapInt64StringValue, mapInt64StringValueString}, + {&mapUintStringValue, mapUintStringValueString}, + {&mapUint32StringValue, mapUint32StringValueString}, + {&mapUint64StringValue, mapUint64StringValueString}, + {&mapUintptrStringValue, mapUintptrStringValueString}, + {&intKeyedMapStructValue, intKeyedMapStructValueString}, } func TestMarshal(t *testing.T) { diff --git a/vendor/github.com/mailru/easyjson/tests/data.go b/vendor/github.com/mailru/easyjson/tests/data.go index ca8676eed..145f093d6 100644 --- a/vendor/github.com/mailru/easyjson/tests/data.go +++ b/vendor/github.com/mailru/easyjson/tests/data.go @@ -89,10 +89,10 @@ var primitiveTypesString = "{" + `"Int32":` + fmt.Sprint(math.MinInt32) + `,` + `"Int64":` + fmt.Sprint(int64(math.MinInt64)) + `,` + - `"Uint":` + fmt.Sprint(math.MaxUint32) + `,` + + `"Uint":` + fmt.Sprint(uint32(math.MaxUint32)) + `,` + `"Uint8":` + fmt.Sprint(math.MaxUint8) + `,` + `"Uint16":` + fmt.Sprint(math.MaxUint16) + `,` + - `"Uint32":` + fmt.Sprint(math.MaxUint32) + `,` + + `"Uint32":` + fmt.Sprint(uint32(math.MaxUint32)) + `,` + `"Uint64":` + fmt.Sprint(uint64(math.MaxUint64)) + `,` + `"IntString":"` + fmt.Sprint(math.MinInt32) + `",` + @@ -101,10 +101,10 @@ var primitiveTypesString = "{" + `"Int32String":"` + fmt.Sprint(math.MinInt32) + `",` + `"Int64String":"` + fmt.Sprint(int64(math.MinInt64)) + `",` + - `"UintString":"` + fmt.Sprint(math.MaxUint32) + `",` + + `"UintString":"` + fmt.Sprint(uint32(math.MaxUint32)) + `",` + `"Uint8String":"` + fmt.Sprint(math.MaxUint8) + `",` + `"Uint16String":"` + fmt.Sprint(math.MaxUint16) + `",` + - `"Uint32String":"` + fmt.Sprint(math.MaxUint32) + `",` + + `"Uint32String":"` + fmt.Sprint(uint32(math.MaxUint32)) + `",` + `"Uint64String":"` + fmt.Sprint(uint64(math.MaxUint64)) + `",` + `"Float32":` + fmt.Sprint(1.5) + `,` + @@ -192,10 +192,10 @@ var namedPrimitiveTypesString = "{" + `"Int32":` + fmt.Sprint(math.MinInt32) + `,` + `"Int64":` + fmt.Sprint(int64(math.MinInt64)) + `,` + - `"Uint":` + fmt.Sprint(math.MaxUint32) + `,` + + `"Uint":` + fmt.Sprint(uint32(math.MaxUint32)) + `,` + `"Uint8":` + fmt.Sprint(math.MaxUint8) + `,` + `"Uint16":` + fmt.Sprint(math.MaxUint16) + `,` + - `"Uint32":` + fmt.Sprint(math.MaxUint32) + `,` + + `"Uint32":` + fmt.Sprint(uint32(math.MaxUint32)) + `,` + `"Uint64":` + fmt.Sprint(uint64(math.MaxUint64)) + `,` + `"Float32":` + fmt.Sprint(1.5) + `,` + @@ -692,3 +692,68 @@ type EmbeddedStruct struct { var structWithInterfaceString = `{"f1":1,"f2":{"f1":11,"f2":"22"},"f3":"3"}` var structWithInterfaceValueFilled = StructWithInterface{1, &EmbeddedStruct{11, "22"}, "3"} + +//easyjson:json +type MapIntString map[int]string + +var mapIntStringValue = MapIntString{3: "hi"} +var mapIntStringValueString = `{"3":"hi"}` + +//easyjson:json +type MapInt32String map[int32]string + +var mapInt32StringValue = MapInt32String{-354634382: "life"} +var mapInt32StringValueString = `{"-354634382":"life"}` + +//easyjson:json +type MapInt64String map[int64]string + +var mapInt64StringValue = MapInt64String{-3546343826724305832: "life"} +var mapInt64StringValueString = `{"-3546343826724305832":"life"}` + +//easyjson:json +type MapUintString map[uint]string + +var mapUintStringValue = MapUintString{42: "life"} +var mapUintStringValueString = `{"42":"life"}` + +//easyjson:json +type MapUint32String map[uint32]string + +var mapUint32StringValue = MapUint32String{354634382: "life"} +var mapUint32StringValueString = `{"354634382":"life"}` + +//easyjson:json +type MapUint64String map[uint64]string + +var mapUint64StringValue = MapUint64String{3546343826724305832: "life"} +var mapUint64StringValueString = `{"3546343826724305832":"life"}` + +//easyjson:json +type MapUintptrString map[uintptr]string + +var mapUintptrStringValue = MapUintptrString{272679208: "obj"} +var mapUintptrStringValueString = `{"272679208":"obj"}` + +type MyInt int + +//easyjson:json +type MapMyIntString map[MyInt]string + +var mapMyIntStringValue = MapMyIntString{MyInt(42): "life"} +var mapMyIntStringValueString = `{"42":"life"}` + +//easyjson:json +type IntKeyedMapStruct struct { + Foo MapMyIntString `json:"foo"` + Bar map[int16]MapUint32String `json:"bar"` +} + +var intKeyedMapStructValue = IntKeyedMapStruct{ + Foo: mapMyIntStringValue, + Bar: map[int16]MapUint32String{32: mapUint32StringValue}, +} +var intKeyedMapStructValueString = `{` + + `"foo":{"42":"life"},` + + `"bar":{"32":{"354634382":"life"}}` + + `}` diff --git a/vendor/github.com/mailru/easyjson/tests/errors.go b/vendor/github.com/mailru/easyjson/tests/errors.go index 2ec3299a4..14360fcc2 100644 --- a/vendor/github.com/mailru/easyjson/tests/errors.go +++ b/vendor/github.com/mailru/easyjson/tests/errors.go @@ -21,3 +21,6 @@ type ErrorNestedStruct struct { ErrorStruct ErrorStruct `json:"error_struct"` Int int `json:"int"` } + +//easyjson:json +type ErrorIntMap map[uint32]string diff --git a/vendor/github.com/mailru/easyjson/tests/errors_test.go b/vendor/github.com/mailru/easyjson/tests/errors_test.go index 756f7db69..40fa33544 100644 --- a/vendor/github.com/mailru/easyjson/tests/errors_test.go +++ b/vendor/github.com/mailru/easyjson/tests/errors_test.go @@ -241,3 +241,45 @@ func TestMultipleErrorsNestedStruct(t *testing.T) { } } } + +func TestMultipleErrorsIntMap(t *testing.T) { + for i, test := range []struct { + Data []byte + Offsets []int + }{ + { + Data: []byte(`{"a":"NumErr"}`), + Offsets: []int{1}, + }, + { + Data: []byte(`{"":"ErrSyntax"}`), + Offsets: []int{1}, + }, + { + Data: []byte(`{"a":"NumErr","33147483647":"ErrRange","-1":"ErrRange"}`), + Offsets: []int{1, 14, 39}, + }, + } { + l := jlexer.Lexer{ + Data: test.Data, + UseMultipleErrors: true, + } + + var v ErrorIntMap + + v.UnmarshalEasyJSON(&l) + + errors := l.GetNonFatalErrors() + + if len(errors) != len(test.Offsets) { + t.Errorf("[%d] TestMultipleErrorsInt(): errornum: want: %d, got %d", i, len(test.Offsets), len(errors)) + return + } + + for ii, e := range errors { + if e.Offset != test.Offsets[ii] { + t.Errorf("[%d] TestMultipleErrorsInt(): offset[%d]: want %d, got %d", i, ii, test.Offsets[ii], e.Offset) + } + } + } +} diff --git a/vendor/github.com/mailru/easyjson/tests/opt_test.go b/vendor/github.com/mailru/easyjson/tests/opt_test.go new file mode 100644 index 000000000..bdd32aa4a --- /dev/null +++ b/vendor/github.com/mailru/easyjson/tests/opt_test.go @@ -0,0 +1,70 @@ +package tests + +import ( + "math" + "reflect" + "testing" + + "encoding/json" + + "github.com/mailru/easyjson/opt" +) + +// This struct type must NOT have a generated marshaler +type OptsVanilla struct { + Int opt.Int + Uint opt.Uint + + Int8 opt.Int8 + Int16 opt.Int16 + Int32 opt.Int32 + Int64 opt.Int64 + + Uint8 opt.Uint8 + Uint16 opt.Uint16 + Uint32 opt.Uint32 + Uint64 opt.Uint64 + + Float32 opt.Float32 + Float64 opt.Float64 + + Bool opt.Bool + String opt.String +} + +var optsVanillaValue = OptsVanilla{ + Int: opt.OInt(-123), + Uint: opt.OUint(123), + + Int8: opt.OInt8(math.MaxInt8), + Int16: opt.OInt16(math.MaxInt16), + Int32: opt.OInt32(math.MaxInt32), + Int64: opt.OInt64(math.MaxInt64), + + Uint8: opt.OUint8(math.MaxUint8), + Uint16: opt.OUint16(math.MaxUint16), + Uint32: opt.OUint32(math.MaxUint32), + Uint64: opt.OUint64(math.MaxUint64), + + Float32: opt.OFloat32(math.MaxFloat32), + Float64: opt.OFloat64(math.MaxFloat64), + + Bool: opt.OBool(true), + String: opt.OString("foo"), +} + +func TestOptsVanilla(t *testing.T) { + data, err := json.Marshal(optsVanillaValue) + if err != nil { + t.Errorf("Failed to marshal vanilla opts: %v", err) + } + + var ov OptsVanilla + if err := json.Unmarshal(data, &ov); err != nil { + t.Errorf("Failed to unmarshal vanilla opts: %v", err) + } + + if !reflect.DeepEqual(optsVanillaValue, ov) { + t.Errorf("Vanilla opts unmarshal returned invalid value %+v, want %+v", ov, optsVanillaValue) + } +} diff --git a/vendor/github.com/pelletier/go-toml/.gitignore b/vendor/github.com/pelletier/go-toml/.gitignore deleted file mode 100644 index f1b619018..000000000 --- a/vendor/github.com/pelletier/go-toml/.gitignore +++ /dev/null @@ -1 +0,0 @@ -test_program/test_program_bin diff --git a/vendor/github.com/pelletier/go-toml/.travis.yml b/vendor/github.com/pelletier/go-toml/.travis.yml deleted file mode 100644 index 496691166..000000000 --- a/vendor/github.com/pelletier/go-toml/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -sudo: false -language: go -go: - - 1.7.6 - - 1.8.3 - - 1.9 - - tip -matrix: - allow_failures: - - go: tip - fast_finish: true -script: - - if [ -n "$(go fmt ./...)" ]; then exit 1; fi - - ./test.sh - - ./benchmark.sh $TRAVIS_BRANCH https://github.com/$TRAVIS_REPO_SLUG.git -before_install: - - go get github.com/axw/gocov/gocov - - go get github.com/mattn/goveralls - - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi -branches: - only: [master] -after_success: - - $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=coverage.out -repotoken $COVERALLS_TOKEN diff --git a/vendor/github.com/pelletier/go-toml/LICENSE b/vendor/github.com/pelletier/go-toml/LICENSE deleted file mode 100644 index 583bdae62..000000000 --- a/vendor/github.com/pelletier/go-toml/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 - 2017 Thomas Pelletier, Eric Anderton - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/pelletier/go-toml/README.md b/vendor/github.com/pelletier/go-toml/README.md deleted file mode 100644 index 22da41a81..000000000 --- a/vendor/github.com/pelletier/go-toml/README.md +++ /dev/null @@ -1,118 +0,0 @@ -# go-toml - -Go library for the [TOML](https://github.com/mojombo/toml) format. - -This library supports TOML version -[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md) - -[![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml) -[![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE) -[![Build Status](https://travis-ci.org/pelletier/go-toml.svg?branch=master)](https://travis-ci.org/pelletier/go-toml) -[![Coverage Status](https://coveralls.io/repos/github/pelletier/go-toml/badge.svg?branch=master)](https://coveralls.io/github/pelletier/go-toml?branch=master) -[![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml) - -## Features - -Go-toml provides the following features for using data parsed from TOML documents: - -* Load TOML documents from files and string data -* Easily navigate TOML structure using Tree -* Mashaling and unmarshaling to and from data structures -* Line & column position data for all parsed elements -* [Query support similar to JSON-Path](query/) -* Syntax errors contain line and column numbers - -## Import - -```go -import "github.com/pelletier/go-toml" -``` - -## Usage example - -Read a TOML document: - -```go -config, _ := toml.LoadString(` -[postgres] -user = "pelletier" -password = "mypassword"`) -// retrieve data directly -user := config.Get("postgres.user").(string) - -// or using an intermediate object -postgresConfig := config.Get("postgres").(*toml.Tree) -password = postgresConfig.Get("password").(string) -``` - -Or use Unmarshal: - -```go -type Postgres struct { - User string - Password string -} -type Config struct { - Postgres Postgres -} - -doc := []byte(` -[postgres] -user = "pelletier" -password = "mypassword"`) - -config := Config{} -Unmarshal(doc, &config) -fmt.Println("user=", config.Postgres.User) -``` - -Or use a query: - -```go -// use a query to gather elements without walking the tree -results, _ := config.Query("$..[user,password]") -for ii, item := range results.Values() { - fmt.Println("Query result %d: %v", ii, item) -} -``` - -## Documentation - -The documentation and additional examples are available at -[godoc.org](http://godoc.org/github.com/pelletier/go-toml). - -## Tools - -Go-toml provides two handy command line tools: - -* `tomll`: Reads TOML files and lint them. - - ``` - go install github.com/pelletier/go-toml/cmd/tomll - tomll --help - ``` -* `tomljson`: Reads a TOML file and outputs its JSON representation. - - ``` - go install github.com/pelletier/go-toml/cmd/tomljson - tomljson --help - ``` - -## Contribute - -Feel free to report bugs and patches using GitHub's pull requests system on -[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be -much appreciated! - -### Run tests - -You have to make sure two kind of tests run: - -1. The Go unit tests -2. The TOML examples base - -You can run both of them using `./test.sh`. - -## License - -The MIT License (MIT). Read [LICENSE](LICENSE). diff --git a/vendor/github.com/pelletier/go-toml/benchmark.json b/vendor/github.com/pelletier/go-toml/benchmark.json deleted file mode 100644 index 86f99c6a8..000000000 --- a/vendor/github.com/pelletier/go-toml/benchmark.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "array": { - "key1": [ - 1, - 2, - 3 - ], - "key2": [ - "red", - "yellow", - "green" - ], - "key3": [ - [ - 1, - 2 - ], - [ - 3, - 4, - 5 - ] - ], - "key4": [ - [ - 1, - 2 - ], - [ - "a", - "b", - "c" - ] - ], - "key5": [ - 1, - 2, - 3 - ], - "key6": [ - 1, - 2 - ] - }, - "boolean": { - "False": false, - "True": true - }, - "datetime": { - "key1": "1979-05-27T07:32:00Z", - "key2": "1979-05-27T00:32:00-07:00", - "key3": "1979-05-27T00:32:00.999999-07:00" - }, - "float": { - "both": { - "key": 6.626e-34 - }, - "exponent": { - "key1": 5e+22, - "key2": 1000000, - "key3": -0.02 - }, - "fractional": { - "key1": 1, - "key2": 3.1415, - "key3": -0.01 - }, - "underscores": { - "key1": 9224617.445991227, - "key2": 1e+100 - } - }, - "fruit": [{ - "name": "apple", - "physical": { - "color": "red", - "shape": "round" - }, - "variety": [{ - "name": "red delicious" - }, - { - "name": "granny smith" - } - ] - }, - { - "name": "banana", - "variety": [{ - "name": "plantain" - }] - } - ], - "integer": { - "key1": 99, - "key2": 42, - "key3": 0, - "key4": -17, - "underscores": { - "key1": 1000, - "key2": 5349221, - "key3": 12345 - } - }, - "products": [{ - "name": "Hammer", - "sku": 738594937 - }, - {}, - { - "color": "gray", - "name": "Nail", - "sku": 284758393 - } - ], - "string": { - "basic": { - "basic": "I'm a string. \"You can quote me\". Name\tJosé\nLocation\tSF." - }, - "literal": { - "multiline": { - "lines": "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n", - "regex2": "I [dw]on't need \\d{2} apples" - }, - "quoted": "Tom \"Dubs\" Preston-Werner", - "regex": "\u003c\\i\\c*\\s*\u003e", - "winpath": "C:\\Users\\nodejs\\templates", - "winpath2": "\\\\ServerX\\admin$\\system32\\" - }, - "multiline": { - "continued": { - "key1": "The quick brown fox jumps over the lazy dog.", - "key2": "The quick brown fox jumps over the lazy dog.", - "key3": "The quick brown fox jumps over the lazy dog." - }, - "key1": "One\nTwo", - "key2": "One\nTwo", - "key3": "One\nTwo" - } - }, - "table": { - "inline": { - "name": { - "first": "Tom", - "last": "Preston-Werner" - }, - "point": { - "x": 1, - "y": 2 - } - }, - "key": "value", - "subtable": { - "key": "another value" - } - }, - "x": { - "y": { - "z": { - "w": {} - } - } - } -} diff --git a/vendor/github.com/pelletier/go-toml/benchmark.sh b/vendor/github.com/pelletier/go-toml/benchmark.sh deleted file mode 100755 index 8b8bb528e..000000000 --- a/vendor/github.com/pelletier/go-toml/benchmark.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -set -e - -reference_ref=${1:-master} -reference_git=${2:-.} - -if ! `hash benchstat 2>/dev/null`; then - echo "Installing benchstat" - go get golang.org/x/perf/cmd/benchstat - go install golang.org/x/perf/cmd/benchstat -fi - -tempdir=`mktemp -d /tmp/go-toml-benchmark-XXXXXX` -ref_tempdir="${tempdir}/ref" -ref_benchmark="${ref_tempdir}/benchmark-`echo -n ${reference_ref}|tr -s '/' '-'`.txt" -local_benchmark="`pwd`/benchmark-local.txt" - -echo "=== ${reference_ref} (${ref_tempdir})" -git clone ${reference_git} ${ref_tempdir} >/dev/null 2>/dev/null -pushd ${ref_tempdir} >/dev/null -git checkout ${reference_ref} >/dev/null 2>/dev/null -go test -bench=. -benchmem | tee ${ref_benchmark} -popd >/dev/null - -echo "" -echo "=== local" -go test -bench=. -benchmem | tee ${local_benchmark} - -echo "" -echo "=== diff" -benchstat -delta-test=none ${ref_benchmark} ${local_benchmark} \ No newline at end of file diff --git a/vendor/github.com/pelletier/go-toml/benchmark.toml b/vendor/github.com/pelletier/go-toml/benchmark.toml deleted file mode 100644 index dfd77e096..000000000 --- a/vendor/github.com/pelletier/go-toml/benchmark.toml +++ /dev/null @@ -1,244 +0,0 @@ -################################################################################ -## Comment - -# Speak your mind with the hash symbol. They go from the symbol to the end of -# the line. - - -################################################################################ -## Table - -# Tables (also known as hash tables or dictionaries) are collections of -# key/value pairs. They appear in square brackets on a line by themselves. - -[table] - -key = "value" # Yeah, you can do this. - -# Nested tables are denoted by table names with dots in them. Name your tables -# whatever crap you please, just don't use #, ., [ or ]. - -[table.subtable] - -key = "another value" - -# You don't need to specify all the super-tables if you don't want to. TOML -# knows how to do it for you. - -# [x] you -# [x.y] don't -# [x.y.z] need these -[x.y.z.w] # for this to work - - -################################################################################ -## Inline Table - -# Inline tables provide a more compact syntax for expressing tables. They are -# especially useful for grouped data that can otherwise quickly become verbose. -# Inline tables are enclosed in curly braces `{` and `}`. No newlines are -# allowed between the curly braces unless they are valid within a value. - -[table.inline] - -name = { first = "Tom", last = "Preston-Werner" } -point = { x = 1, y = 2 } - - -################################################################################ -## String - -# There are four ways to express strings: basic, multi-line basic, literal, and -# multi-line literal. All strings must contain only valid UTF-8 characters. - -[string.basic] - -basic = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." - -[string.multiline] - -# The following strings are byte-for-byte equivalent: -key1 = "One\nTwo" -key2 = """One\nTwo""" -key3 = """ -One -Two""" - -[string.multiline.continued] - -# The following strings are byte-for-byte equivalent: -key1 = "The quick brown fox jumps over the lazy dog." - -key2 = """ -The quick brown \ - - - fox jumps over \ - the lazy dog.""" - -key3 = """\ - The quick brown \ - fox jumps over \ - the lazy dog.\ - """ - -[string.literal] - -# What you see is what you get. -winpath = 'C:\Users\nodejs\templates' -winpath2 = '\\ServerX\admin$\system32\' -quoted = 'Tom "Dubs" Preston-Werner' -regex = '<\i\c*\s*>' - - -[string.literal.multiline] - -regex2 = '''I [dw]on't need \d{2} apples''' -lines = ''' -The first newline is -trimmed in raw strings. - All other whitespace - is preserved. -''' - - -################################################################################ -## Integer - -# Integers are whole numbers. Positive numbers may be prefixed with a plus sign. -# Negative numbers are prefixed with a minus sign. - -[integer] - -key1 = +99 -key2 = 42 -key3 = 0 -key4 = -17 - -[integer.underscores] - -# For large numbers, you may use underscores to enhance readability. Each -# underscore must be surrounded by at least one digit. -key1 = 1_000 -key2 = 5_349_221 -key3 = 1_2_3_4_5 # valid but inadvisable - - -################################################################################ -## Float - -# A float consists of an integer part (which may be prefixed with a plus or -# minus sign) followed by a fractional part and/or an exponent part. - -[float.fractional] - -key1 = +1.0 -key2 = 3.1415 -key3 = -0.01 - -[float.exponent] - -key1 = 5e+22 -key2 = 1e6 -key3 = -2E-2 - -[float.both] - -key = 6.626e-34 - -[float.underscores] - -key1 = 9_224_617.445_991_228_313 -key2 = 1e1_00 - - -################################################################################ -## Boolean - -# Booleans are just the tokens you're used to. Always lowercase. - -[boolean] - -True = true -False = false - - -################################################################################ -## Datetime - -# Datetimes are RFC 3339 dates. - -[datetime] - -key1 = 1979-05-27T07:32:00Z -key2 = 1979-05-27T00:32:00-07:00 -key3 = 1979-05-27T00:32:00.999999-07:00 - - -################################################################################ -## Array - -# Arrays are square brackets with other primitives inside. Whitespace is -# ignored. Elements are separated by commas. Data types may not be mixed. - -[array] - -key1 = [ 1, 2, 3 ] -key2 = [ "red", "yellow", "green" ] -key3 = [ [ 1, 2 ], [3, 4, 5] ] -#key4 = [ [ 1, 2 ], ["a", "b", "c"] ] # this is ok - -# Arrays can also be multiline. So in addition to ignoring whitespace, arrays -# also ignore newlines between the brackets. Terminating commas are ok before -# the closing bracket. - -key5 = [ - 1, 2, 3 -] -key6 = [ - 1, - 2, # this is ok -] - - -################################################################################ -## Array of Tables - -# These can be expressed by using a table name in double brackets. Each table -# with the same double bracketed name will be an element in the array. The -# tables are inserted in the order encountered. - -[[products]] - -name = "Hammer" -sku = 738594937 - -[[products]] - -[[products]] - -name = "Nail" -sku = 284758393 -color = "gray" - - -# You can create nested arrays of tables as well. - -[[fruit]] - name = "apple" - - [fruit.physical] - color = "red" - shape = "round" - - [[fruit.variety]] - name = "red delicious" - - [[fruit.variety]] - name = "granny smith" - -[[fruit]] - name = "banana" - - [[fruit.variety]] - name = "plantain" diff --git a/vendor/github.com/pelletier/go-toml/benchmark.yml b/vendor/github.com/pelletier/go-toml/benchmark.yml deleted file mode 100644 index 0bd19f08a..000000000 --- a/vendor/github.com/pelletier/go-toml/benchmark.yml +++ /dev/null @@ -1,121 +0,0 @@ ---- -array: - key1: - - 1 - - 2 - - 3 - key2: - - red - - yellow - - green - key3: - - - 1 - - 2 - - - 3 - - 4 - - 5 - key4: - - - 1 - - 2 - - - a - - b - - c - key5: - - 1 - - 2 - - 3 - key6: - - 1 - - 2 -boolean: - 'False': false - 'True': true -datetime: - key1: '1979-05-27T07:32:00Z' - key2: '1979-05-27T00:32:00-07:00' - key3: '1979-05-27T00:32:00.999999-07:00' -float: - both: - key: 6.626e-34 - exponent: - key1: 5.0e+22 - key2: 1000000 - key3: -0.02 - fractional: - key1: 1 - key2: 3.1415 - key3: -0.01 - underscores: - key1: 9224617.445991227 - key2: 1.0e+100 -fruit: -- name: apple - physical: - color: red - shape: round - variety: - - name: red delicious - - name: granny smith -- name: banana - variety: - - name: plantain -integer: - key1: 99 - key2: 42 - key3: 0 - key4: -17 - underscores: - key1: 1000 - key2: 5349221 - key3: 12345 -products: -- name: Hammer - sku: 738594937 -- {} -- color: gray - name: Nail - sku: 284758393 -string: - basic: - basic: "I'm a string. \"You can quote me\". Name\tJosé\nLocation\tSF." - literal: - multiline: - lines: | - The first newline is - trimmed in raw strings. - All other whitespace - is preserved. - regex2: I [dw]on't need \d{2} apples - quoted: Tom "Dubs" Preston-Werner - regex: "<\\i\\c*\\s*>" - winpath: C:\Users\nodejs\templates - winpath2: "\\\\ServerX\\admin$\\system32\\" - multiline: - continued: - key1: The quick brown fox jumps over the lazy dog. - key2: The quick brown fox jumps over the lazy dog. - key3: The quick brown fox jumps over the lazy dog. - key1: |- - One - Two - key2: |- - One - Two - key3: |- - One - Two -table: - inline: - name: - first: Tom - last: Preston-Werner - point: - x: 1 - y: 2 - key: value - subtable: - key: another value -x: - y: - z: - w: {} diff --git a/vendor/github.com/pelletier/go-toml/benchmark_test.go b/vendor/github.com/pelletier/go-toml/benchmark_test.go deleted file mode 100644 index e1f209dfa..000000000 --- a/vendor/github.com/pelletier/go-toml/benchmark_test.go +++ /dev/null @@ -1,192 +0,0 @@ -package toml - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "testing" - "time" - - burntsushi "github.com/BurntSushi/toml" - yaml "gopkg.in/yaml.v2" -) - -type benchmarkDoc struct { - Table struct { - Key string - Subtable struct { - Key string - } - Inline struct { - Name struct { - First string - Last string - } - Point struct { - X int64 - U int64 - } - } - } - String struct { - Basic struct { - Basic string - } - Multiline struct { - Key1 string - Key2 string - Key3 string - Continued struct { - Key1 string - Key2 string - Key3 string - } - } - Literal struct { - Winpath string - Winpath2 string - Quoted string - Regex string - Multiline struct { - Regex2 string - Lines string - } - } - } - Integer struct { - Key1 int64 - Key2 int64 - Key3 int64 - Key4 int64 - Underscores struct { - Key1 int64 - Key2 int64 - Key3 int64 - } - } - Float struct { - Fractional struct { - Key1 float64 - Key2 float64 - Key3 float64 - } - Exponent struct { - Key1 float64 - Key2 float64 - Key3 float64 - } - Both struct { - Key float64 - } - Underscores struct { - Key1 float64 - Key2 float64 - } - } - Boolean struct { - True bool - False bool - } - Datetime struct { - Key1 time.Time - Key2 time.Time - Key3 time.Time - } - Array struct { - Key1 []int64 - Key2 []string - Key3 [][]int64 - // TODO: Key4 not supported by go-toml's Unmarshal - Key5 []int64 - Key6 []int64 - } - Products []struct { - Name string - Sku int64 - Color string - } - Fruit []struct { - Name string - Physical struct { - Color string - Shape string - Variety []struct { - Name string - } - } - } -} - -func BenchmarkParseToml(b *testing.B) { - fileBytes, err := ioutil.ReadFile("benchmark.toml") - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - _, err := LoadReader(bytes.NewReader(fileBytes)) - if err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUnmarshalToml(b *testing.B) { - bytes, err := ioutil.ReadFile("benchmark.toml") - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - target := benchmarkDoc{} - err := Unmarshal(bytes, &target) - if err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUnmarshalBurntSushiToml(b *testing.B) { - bytes, err := ioutil.ReadFile("benchmark.toml") - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - target := benchmarkDoc{} - err := burntsushi.Unmarshal(bytes, &target) - if err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUnmarshalJson(b *testing.B) { - bytes, err := ioutil.ReadFile("benchmark.json") - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - target := benchmarkDoc{} - err := json.Unmarshal(bytes, &target) - if err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUnmarshalYaml(b *testing.B) { - bytes, err := ioutil.ReadFile("benchmark.yml") - if err != nil { - b.Fatal(err) - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - target := benchmarkDoc{} - err := yaml.Unmarshal(bytes, &target) - if err != nil { - b.Fatal(err) - } - } -} diff --git a/vendor/github.com/pelletier/go-toml/cmd/test_program.go b/vendor/github.com/pelletier/go-toml/cmd/test_program.go deleted file mode 100644 index 73077f614..000000000 --- a/vendor/github.com/pelletier/go-toml/cmd/test_program.go +++ /dev/null @@ -1,91 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "log" - "os" - "time" - - "github.com/pelletier/go-toml" -) - -func main() { - bytes, err := ioutil.ReadAll(os.Stdin) - if err != nil { - log.Fatalf("Error during TOML read: %s", err) - os.Exit(2) - } - tree, err := toml.Load(string(bytes)) - if err != nil { - log.Fatalf("Error during TOML load: %s", err) - os.Exit(1) - } - - typedTree := translate(*tree) - - if err := json.NewEncoder(os.Stdout).Encode(typedTree); err != nil { - log.Fatalf("Error encoding JSON: %s", err) - os.Exit(3) - } - - os.Exit(0) -} - -func translate(tomlData interface{}) interface{} { - switch orig := tomlData.(type) { - case map[string]interface{}: - typed := make(map[string]interface{}, len(orig)) - for k, v := range orig { - typed[k] = translate(v) - } - return typed - case *toml.Tree: - return translate(*orig) - case toml.Tree: - keys := orig.Keys() - typed := make(map[string]interface{}, len(keys)) - for _, k := range keys { - typed[k] = translate(orig.GetPath([]string{k})) - } - return typed - case []*toml.Tree: - typed := make([]map[string]interface{}, len(orig)) - for i, v := range orig { - typed[i] = translate(v).(map[string]interface{}) - } - return typed - case []map[string]interface{}: - typed := make([]map[string]interface{}, len(orig)) - for i, v := range orig { - typed[i] = translate(v).(map[string]interface{}) - } - return typed - case []interface{}: - typed := make([]interface{}, len(orig)) - for i, v := range orig { - typed[i] = translate(v) - } - return tag("array", typed) - case time.Time: - return tag("datetime", orig.Format("2006-01-02T15:04:05Z")) - case bool: - return tag("bool", fmt.Sprintf("%v", orig)) - case int64: - return tag("integer", fmt.Sprintf("%d", orig)) - case float64: - return tag("float", fmt.Sprintf("%v", orig)) - case string: - return tag("string", orig) - } - - panic(fmt.Sprintf("Unknown type: %T", tomlData)) -} - -func tag(typeName string, data interface{}) map[string]interface{} { - return map[string]interface{}{ - "type": typeName, - "value": data, - } -} diff --git a/vendor/github.com/pelletier/go-toml/cmd/tomljson/main.go b/vendor/github.com/pelletier/go-toml/cmd/tomljson/main.go deleted file mode 100644 index b2d6fc673..000000000 --- a/vendor/github.com/pelletier/go-toml/cmd/tomljson/main.go +++ /dev/null @@ -1,72 +0,0 @@ -// Tomljson reads TOML and converts to JSON. -// -// Usage: -// cat file.toml | tomljson > file.json -// tomljson file1.toml > file.json -package main - -import ( - "encoding/json" - "flag" - "fmt" - "io" - "os" - - "github.com/pelletier/go-toml" -) - -func main() { - flag.Usage = func() { - fmt.Fprintln(os.Stderr, `tomljson can be used in two ways: -Writing to STDIN and reading from STDOUT: - cat file.toml | tomljson > file.json - -Reading from a file name: - tomljson file.toml -`) - } - flag.Parse() - os.Exit(processMain(flag.Args(), os.Stdin, os.Stdout, os.Stderr)) -} - -func processMain(files []string, defaultInput io.Reader, output io.Writer, errorOutput io.Writer) int { - // read from stdin and print to stdout - inputReader := defaultInput - - if len(files) > 0 { - var err error - inputReader, err = os.Open(files[0]) - if err != nil { - printError(err, errorOutput) - return -1 - } - } - s, err := reader(inputReader) - if err != nil { - printError(err, errorOutput) - return -1 - } - io.WriteString(output, s+"\n") - return 0 -} - -func printError(err error, output io.Writer) { - io.WriteString(output, err.Error()+"\n") -} - -func reader(r io.Reader) (string, error) { - tree, err := toml.LoadReader(r) - if err != nil { - return "", err - } - return mapToJSON(tree) -} - -func mapToJSON(tree *toml.Tree) (string, error) { - treeMap := tree.ToMap() - bytes, err := json.MarshalIndent(treeMap, "", " ") - if err != nil { - return "", err - } - return string(bytes[:]), nil -} diff --git a/vendor/github.com/pelletier/go-toml/cmd/tomljson/main_test.go b/vendor/github.com/pelletier/go-toml/cmd/tomljson/main_test.go deleted file mode 100644 index 0b4bdbb11..000000000 --- a/vendor/github.com/pelletier/go-toml/cmd/tomljson/main_test.go +++ /dev/null @@ -1,82 +0,0 @@ -package main - -import ( - "bytes" - "io/ioutil" - "os" - "strings" - "testing" -) - -func expectBufferEquality(t *testing.T, name string, buffer *bytes.Buffer, expected string) { - output := buffer.String() - if output != expected { - t.Errorf("incorrect %s:\n%s\n\nexpected %s:\n%s", name, output, name, expected) - t.Log([]rune(output)) - t.Log([]rune(expected)) - } -} - -func expectProcessMainResults(t *testing.T, input string, args []string, exitCode int, expectedOutput string, expectedError string) { - inputReader := strings.NewReader(input) - outputBuffer := new(bytes.Buffer) - errorBuffer := new(bytes.Buffer) - - returnCode := processMain(args, inputReader, outputBuffer, errorBuffer) - - expectBufferEquality(t, "output", outputBuffer, expectedOutput) - expectBufferEquality(t, "error", errorBuffer, expectedError) - - if returnCode != exitCode { - t.Error("incorrect return code:", returnCode, "expected", exitCode) - } -} - -func TestProcessMainReadFromStdin(t *testing.T) { - input := ` - [mytoml] - a = 42` - expectedOutput := `{ - "mytoml": { - "a": 42 - } -} -` - expectedError := `` - expectedExitCode := 0 - - expectProcessMainResults(t, input, []string{}, expectedExitCode, expectedOutput, expectedError) -} - -func TestProcessMainReadFromFile(t *testing.T) { - input := ` - [mytoml] - a = 42` - - tmpfile, err := ioutil.TempFile("", "example.toml") - if err != nil { - t.Fatal(err) - } - if _, err := tmpfile.Write([]byte(input)); err != nil { - t.Fatal(err) - } - - defer os.Remove(tmpfile.Name()) - - expectedOutput := `{ - "mytoml": { - "a": 42 - } -} -` - expectedError := `` - expectedExitCode := 0 - - expectProcessMainResults(t, ``, []string{tmpfile.Name()}, expectedExitCode, expectedOutput, expectedError) -} - -func TestProcessMainReadFromMissingFile(t *testing.T) { - expectedError := `open /this/file/does/not/exist: no such file or directory -` - expectProcessMainResults(t, ``, []string{"/this/file/does/not/exist"}, -1, ``, expectedError) -} diff --git a/vendor/github.com/pelletier/go-toml/cmd/tomll/main.go b/vendor/github.com/pelletier/go-toml/cmd/tomll/main.go deleted file mode 100644 index 36c7e3759..000000000 --- a/vendor/github.com/pelletier/go-toml/cmd/tomll/main.go +++ /dev/null @@ -1,66 +0,0 @@ -// Tomll is a linter for TOML -// -// Usage: -// cat file.toml | tomll > file_linted.toml -// tomll file1.toml file2.toml # lint the two files in place -package main - -import ( - "flag" - "fmt" - "io" - "io/ioutil" - "os" - - "github.com/pelletier/go-toml" -) - -func main() { - flag.Usage = func() { - fmt.Fprintln(os.Stderr, `tomll can be used in two ways: -Writing to STDIN and reading from STDOUT: - cat file.toml | tomll > file.toml - -Reading and updating a list of files: - tomll a.toml b.toml c.toml - -When given a list of files, tomll will modify all files in place without asking. -`) - } - flag.Parse() - // read from stdin and print to stdout - if flag.NArg() == 0 { - s, err := lintReader(os.Stdin) - if err != nil { - io.WriteString(os.Stderr, err.Error()) - os.Exit(-1) - } - io.WriteString(os.Stdout, s) - } else { - // otherwise modify a list of files - for _, filename := range flag.Args() { - s, err := lintFile(filename) - if err != nil { - io.WriteString(os.Stderr, err.Error()) - os.Exit(-1) - } - ioutil.WriteFile(filename, []byte(s), 0644) - } - } -} - -func lintFile(filename string) (string, error) { - tree, err := toml.LoadFile(filename) - if err != nil { - return "", err - } - return tree.String(), nil -} - -func lintReader(r io.Reader) (string, error) { - tree, err := toml.LoadReader(r) - if err != nil { - return "", err - } - return tree.String(), nil -} diff --git a/vendor/github.com/pelletier/go-toml/doc.go b/vendor/github.com/pelletier/go-toml/doc.go deleted file mode 100644 index 3c89619e8..000000000 --- a/vendor/github.com/pelletier/go-toml/doc.go +++ /dev/null @@ -1,23 +0,0 @@ -// Package toml is a TOML parser and manipulation library. -// -// This version supports the specification as described in -// https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md -// -// Marshaling -// -// Go-toml can marshal and unmarshal TOML documents from and to data -// structures. -// -// TOML document as a tree -// -// Go-toml can operate on a TOML document as a tree. Use one of the Load* -// functions to parse TOML data and obtain a Tree instance, then one of its -// methods to manipulate the tree. -// -// JSONPath-like queries -// -// The package github.com/pelletier/go-toml/query implements a system -// similar to JSONPath to quickly retrive elements of a TOML document using a -// single expression. See the package documentation for more information. -// -package toml diff --git a/vendor/github.com/pelletier/go-toml/doc_test.go b/vendor/github.com/pelletier/go-toml/doc_test.go deleted file mode 100644 index a48c04b01..000000000 --- a/vendor/github.com/pelletier/go-toml/doc_test.go +++ /dev/null @@ -1,100 +0,0 @@ -// code examples for godoc - -package toml_test - -import ( - "fmt" - "log" - - toml "github.com/pelletier/go-toml" -) - -func Example_tree() { - config, err := toml.LoadFile("config.toml") - - if err != nil { - fmt.Println("Error ", err.Error()) - } else { - // retrieve data directly - user := config.Get("postgres.user").(string) - password := config.Get("postgres.password").(string) - - // or using an intermediate object - configTree := config.Get("postgres").(*toml.Tree) - user = configTree.Get("user").(string) - password = configTree.Get("password").(string) - fmt.Println("User is", user, " and password is", password) - - // show where elements are in the file - fmt.Printf("User position: %v\n", configTree.GetPosition("user")) - fmt.Printf("Password position: %v\n", configTree.GetPosition("password")) - } -} - -func Example_unmarshal() { - type Employer struct { - Name string - Phone string - } - type Person struct { - Name string - Age int64 - Employer Employer - } - - document := []byte(` - name = "John" - age = 30 - [employer] - name = "Company Inc." - phone = "+1 234 567 89012" - `) - - person := Person{} - toml.Unmarshal(document, &person) - fmt.Println(person.Name, "is", person.Age, "and works at", person.Employer.Name) - // Output: - // John is 30 and works at Company Inc. -} - -func ExampleMarshal() { - type Postgres struct { - User string `toml:"user"` - Password string `toml:"password"` - } - type Config struct { - Postgres Postgres `toml:"postgres"` - } - - config := Config{Postgres{User: "pelletier", Password: "mypassword"}} - b, err := toml.Marshal(config) - if err != nil { - log.Fatal(err) - } - fmt.Println(string(b)) - // Output: - // [postgres] - // password = "mypassword" - // user = "pelletier" -} - -func ExampleUnmarshal() { - type Postgres struct { - User string - Password string - } - type Config struct { - Postgres Postgres - } - - doc := []byte(` - [postgres] - user = "pelletier" - password = "mypassword"`) - - config := Config{} - toml.Unmarshal(doc, &config) - fmt.Println("user=", config.Postgres.User) - // Output: - // user= pelletier -} diff --git a/vendor/github.com/pelletier/go-toml/example-crlf.toml b/vendor/github.com/pelletier/go-toml/example-crlf.toml deleted file mode 100644 index 12950a163..000000000 --- a/vendor/github.com/pelletier/go-toml/example-crlf.toml +++ /dev/null @@ -1,29 +0,0 @@ -# This is a TOML document. Boom. - -title = "TOML Example" - -[owner] -name = "Tom Preston-Werner" -organization = "GitHub" -bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." -dob = 1979-05-27T07:32:00Z # First class dates? Why not? - -[database] -server = "192.168.1.1" -ports = [ 8001, 8001, 8002 ] -connection_max = 5000 -enabled = true - -[servers] - - # You can indent as you please. Tabs or spaces. TOML don't care. - [servers.alpha] - ip = "10.0.0.1" - dc = "eqdc10" - - [servers.beta] - ip = "10.0.0.2" - dc = "eqdc10" - -[clients] -data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it diff --git a/vendor/github.com/pelletier/go-toml/example.toml b/vendor/github.com/pelletier/go-toml/example.toml deleted file mode 100644 index 3d902f282..000000000 --- a/vendor/github.com/pelletier/go-toml/example.toml +++ /dev/null @@ -1,29 +0,0 @@ -# This is a TOML document. Boom. - -title = "TOML Example" - -[owner] -name = "Tom Preston-Werner" -organization = "GitHub" -bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." -dob = 1979-05-27T07:32:00Z # First class dates? Why not? - -[database] -server = "192.168.1.1" -ports = [ 8001, 8001, 8002 ] -connection_max = 5000 -enabled = true - -[servers] - - # You can indent as you please. Tabs or spaces. TOML don't care. - [servers.alpha] - ip = "10.0.0.1" - dc = "eqdc10" - - [servers.beta] - ip = "10.0.0.2" - dc = "eqdc10" - -[clients] -data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it diff --git a/vendor/github.com/pelletier/go-toml/keysparsing.go b/vendor/github.com/pelletier/go-toml/keysparsing.go deleted file mode 100644 index d62ca5fd1..000000000 --- a/vendor/github.com/pelletier/go-toml/keysparsing.go +++ /dev/null @@ -1,94 +0,0 @@ -// Parsing keys handling both bare and quoted keys. - -package toml - -import ( - "bytes" - "errors" - "fmt" - "unicode" -) - -func parseKey(key string) ([]string, error) { - groups := []string{} - var buffer bytes.Buffer - inQuotes := false - wasInQuotes := false - escapeNext := false - ignoreSpace := true - expectDot := false - - for _, char := range key { - if ignoreSpace { - if char == ' ' { - continue - } - ignoreSpace = false - } - if escapeNext { - buffer.WriteRune(char) - escapeNext = false - continue - } - switch char { - case '\\': - escapeNext = true - continue - case '"': - if inQuotes { - groups = append(groups, buffer.String()) - buffer.Reset() - wasInQuotes = true - } - inQuotes = !inQuotes - expectDot = false - case '.': - if inQuotes { - buffer.WriteRune(char) - } else { - if !wasInQuotes { - if buffer.Len() == 0 { - return nil, errors.New("empty table key") - } - groups = append(groups, buffer.String()) - buffer.Reset() - } - ignoreSpace = true - expectDot = false - wasInQuotes = false - } - case ' ': - if inQuotes { - buffer.WriteRune(char) - } else { - expectDot = true - } - default: - if !inQuotes && !isValidBareChar(char) { - return nil, fmt.Errorf("invalid bare character: %c", char) - } - if !inQuotes && expectDot { - return nil, errors.New("what?") - } - buffer.WriteRune(char) - expectDot = false - } - } - if inQuotes { - return nil, errors.New("mismatched quotes") - } - if escapeNext { - return nil, errors.New("unfinished escape sequence") - } - if buffer.Len() > 0 { - groups = append(groups, buffer.String()) - } - if len(groups) == 0 { - return nil, errors.New("empty key") - } - return groups, nil -} - -func isValidBareChar(r rune) bool { - return isAlphanumeric(r) || r == '-' || unicode.IsNumber(r) -} diff --git a/vendor/github.com/pelletier/go-toml/keysparsing_test.go b/vendor/github.com/pelletier/go-toml/keysparsing_test.go deleted file mode 100644 index 1a9ecccaa..000000000 --- a/vendor/github.com/pelletier/go-toml/keysparsing_test.go +++ /dev/null @@ -1,56 +0,0 @@ -package toml - -import ( - "fmt" - "testing" -) - -func testResult(t *testing.T, key string, expected []string) { - parsed, err := parseKey(key) - t.Logf("key=%s expected=%s parsed=%s", key, expected, parsed) - if err != nil { - t.Fatal("Unexpected error:", err) - } - if len(expected) != len(parsed) { - t.Fatal("Expected length", len(expected), "but", len(parsed), "parsed") - } - for index, expectedKey := range expected { - if expectedKey != parsed[index] { - t.Fatal("Expected", expectedKey, "at index", index, "but found", parsed[index]) - } - } -} - -func testError(t *testing.T, key string, expectedError string) { - _, err := parseKey(key) - if fmt.Sprintf("%s", err) != expectedError { - t.Fatalf("Expected error \"%s\", but got \"%s\".", expectedError, err) - } -} - -func TestBareKeyBasic(t *testing.T) { - testResult(t, "test", []string{"test"}) -} - -func TestBareKeyDotted(t *testing.T) { - testResult(t, "this.is.a.key", []string{"this", "is", "a", "key"}) -} - -func TestDottedKeyBasic(t *testing.T) { - testResult(t, "\"a.dotted.key\"", []string{"a.dotted.key"}) -} - -func TestBaseKeyPound(t *testing.T) { - testError(t, "hello#world", "invalid bare character: #") -} - -func TestQuotedKeys(t *testing.T) { - testResult(t, `hello."foo".bar`, []string{"hello", "foo", "bar"}) - testResult(t, `"hello!"`, []string{"hello!"}) -} - -func TestEmptyKey(t *testing.T) { - testError(t, "", "empty key") - testError(t, " ", "empty key") - testResult(t, `""`, []string{""}) -} diff --git a/vendor/github.com/pelletier/go-toml/lexer.go b/vendor/github.com/pelletier/go-toml/lexer.go deleted file mode 100644 index 1b6647d66..000000000 --- a/vendor/github.com/pelletier/go-toml/lexer.go +++ /dev/null @@ -1,651 +0,0 @@ -// TOML lexer. -// -// Written using the principles developed by Rob Pike in -// http://www.youtube.com/watch?v=HxaD_trXwRE - -package toml - -import ( - "bytes" - "errors" - "fmt" - "regexp" - "strconv" - "strings" -) - -var dateRegexp *regexp.Regexp - -// Define state functions -type tomlLexStateFn func() tomlLexStateFn - -// Define lexer -type tomlLexer struct { - inputIdx int - input []rune // Textual source - currentTokenStart int - currentTokenStop int - tokens []token - depth int - line int - col int - endbufferLine int - endbufferCol int -} - -// Basic read operations on input - -func (l *tomlLexer) read() rune { - r := l.peek() - if r == '\n' { - l.endbufferLine++ - l.endbufferCol = 1 - } else { - l.endbufferCol++ - } - l.inputIdx++ - return r -} - -func (l *tomlLexer) next() rune { - r := l.read() - - if r != eof { - l.currentTokenStop++ - } - return r -} - -func (l *tomlLexer) ignore() { - l.currentTokenStart = l.currentTokenStop - l.line = l.endbufferLine - l.col = l.endbufferCol -} - -func (l *tomlLexer) skip() { - l.next() - l.ignore() -} - -func (l *tomlLexer) fastForward(n int) { - for i := 0; i < n; i++ { - l.next() - } -} - -func (l *tomlLexer) emitWithValue(t tokenType, value string) { - l.tokens = append(l.tokens, token{ - Position: Position{l.line, l.col}, - typ: t, - val: value, - }) - l.ignore() -} - -func (l *tomlLexer) emit(t tokenType) { - l.emitWithValue(t, string(l.input[l.currentTokenStart:l.currentTokenStop])) -} - -func (l *tomlLexer) peek() rune { - if l.inputIdx >= len(l.input) { - return eof - } - return l.input[l.inputIdx] -} - -func (l *tomlLexer) peekString(size int) string { - maxIdx := len(l.input) - upperIdx := l.inputIdx + size // FIXME: potential overflow - if upperIdx > maxIdx { - upperIdx = maxIdx - } - return string(l.input[l.inputIdx:upperIdx]) -} - -func (l *tomlLexer) follow(next string) bool { - return next == l.peekString(len(next)) -} - -// Error management - -func (l *tomlLexer) errorf(format string, args ...interface{}) tomlLexStateFn { - l.tokens = append(l.tokens, token{ - Position: Position{l.line, l.col}, - typ: tokenError, - val: fmt.Sprintf(format, args...), - }) - return nil -} - -// State functions - -func (l *tomlLexer) lexVoid() tomlLexStateFn { - for { - next := l.peek() - switch next { - case '[': - return l.lexTableKey - case '#': - return l.lexComment(l.lexVoid) - case '=': - return l.lexEqual - case '\r': - fallthrough - case '\n': - l.skip() - continue - } - - if isSpace(next) { - l.skip() - } - - if l.depth > 0 { - return l.lexRvalue - } - - if isKeyStartChar(next) { - return l.lexKey - } - - if next == eof { - l.next() - break - } - } - - l.emit(tokenEOF) - return nil -} - -func (l *tomlLexer) lexRvalue() tomlLexStateFn { - for { - next := l.peek() - switch next { - case '.': - return l.errorf("cannot start float with a dot") - case '=': - return l.lexEqual - case '[': - l.depth++ - return l.lexLeftBracket - case ']': - l.depth-- - return l.lexRightBracket - case '{': - return l.lexLeftCurlyBrace - case '}': - return l.lexRightCurlyBrace - case '#': - return l.lexComment(l.lexRvalue) - case '"': - return l.lexString - case '\'': - return l.lexLiteralString - case ',': - return l.lexComma - case '\r': - fallthrough - case '\n': - l.skip() - if l.depth == 0 { - return l.lexVoid - } - return l.lexRvalue - case '_': - return l.errorf("cannot start number with underscore") - } - - if l.follow("true") { - return l.lexTrue - } - - if l.follow("false") { - return l.lexFalse - } - - if isSpace(next) { - l.skip() - continue - } - - if next == eof { - l.next() - break - } - - possibleDate := l.peekString(35) - dateMatch := dateRegexp.FindString(possibleDate) - if dateMatch != "" { - l.fastForward(len(dateMatch)) - return l.lexDate - } - - if next == '+' || next == '-' || isDigit(next) { - return l.lexNumber - } - - if isAlphanumeric(next) { - return l.lexKey - } - - return l.errorf("no value can start with %c", next) - } - - l.emit(tokenEOF) - return nil -} - -func (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn { - l.next() - l.emit(tokenLeftCurlyBrace) - return l.lexRvalue -} - -func (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn { - l.next() - l.emit(tokenRightCurlyBrace) - return l.lexRvalue -} - -func (l *tomlLexer) lexDate() tomlLexStateFn { - l.emit(tokenDate) - return l.lexRvalue -} - -func (l *tomlLexer) lexTrue() tomlLexStateFn { - l.fastForward(4) - l.emit(tokenTrue) - return l.lexRvalue -} - -func (l *tomlLexer) lexFalse() tomlLexStateFn { - l.fastForward(5) - l.emit(tokenFalse) - return l.lexRvalue -} - -func (l *tomlLexer) lexEqual() tomlLexStateFn { - l.next() - l.emit(tokenEqual) - return l.lexRvalue -} - -func (l *tomlLexer) lexComma() tomlLexStateFn { - l.next() - l.emit(tokenComma) - return l.lexRvalue -} - -func (l *tomlLexer) lexKey() tomlLexStateFn { - growingString := "" - - for r := l.peek(); isKeyChar(r) || r == '\n' || r == '\r'; r = l.peek() { - if r == '"' { - l.next() - str, err := l.lexStringAsString(`"`, false, true) - if err != nil { - return l.errorf(err.Error()) - } - growingString += `"` + str + `"` - l.next() - continue - } else if r == '\n' { - return l.errorf("keys cannot contain new lines") - } else if isSpace(r) { - break - } else if !isValidBareChar(r) { - return l.errorf("keys cannot contain %c character", r) - } - growingString += string(r) - l.next() - } - l.emitWithValue(tokenKey, growingString) - return l.lexVoid -} - -func (l *tomlLexer) lexComment(previousState tomlLexStateFn) tomlLexStateFn { - return func() tomlLexStateFn { - for next := l.peek(); next != '\n' && next != eof; next = l.peek() { - if next == '\r' && l.follow("\r\n") { - break - } - l.next() - } - l.ignore() - return previousState - } -} - -func (l *tomlLexer) lexLeftBracket() tomlLexStateFn { - l.next() - l.emit(tokenLeftBracket) - return l.lexRvalue -} - -func (l *tomlLexer) lexLiteralStringAsString(terminator string, discardLeadingNewLine bool) (string, error) { - growingString := "" - - if discardLeadingNewLine { - if l.follow("\r\n") { - l.skip() - l.skip() - } else if l.peek() == '\n' { - l.skip() - } - } - - // find end of string - for { - if l.follow(terminator) { - return growingString, nil - } - - next := l.peek() - if next == eof { - break - } - growingString += string(l.next()) - } - - return "", errors.New("unclosed string") -} - -func (l *tomlLexer) lexLiteralString() tomlLexStateFn { - l.skip() - - // handle special case for triple-quote - terminator := "'" - discardLeadingNewLine := false - if l.follow("''") { - l.skip() - l.skip() - terminator = "'''" - discardLeadingNewLine = true - } - - str, err := l.lexLiteralStringAsString(terminator, discardLeadingNewLine) - if err != nil { - return l.errorf(err.Error()) - } - - l.emitWithValue(tokenString, str) - l.fastForward(len(terminator)) - l.ignore() - return l.lexRvalue -} - -// Lex a string and return the results as a string. -// Terminator is the substring indicating the end of the token. -// The resulting string does not include the terminator. -func (l *tomlLexer) lexStringAsString(terminator string, discardLeadingNewLine, acceptNewLines bool) (string, error) { - growingString := "" - - if discardLeadingNewLine { - if l.follow("\r\n") { - l.skip() - l.skip() - } else if l.peek() == '\n' { - l.skip() - } - } - - for { - if l.follow(terminator) { - return growingString, nil - } - - if l.follow("\\") { - l.next() - switch l.peek() { - case '\r': - fallthrough - case '\n': - fallthrough - case '\t': - fallthrough - case ' ': - // skip all whitespace chars following backslash - for strings.ContainsRune("\r\n\t ", l.peek()) { - l.next() - } - case '"': - growingString += "\"" - l.next() - case 'n': - growingString += "\n" - l.next() - case 'b': - growingString += "\b" - l.next() - case 'f': - growingString += "\f" - l.next() - case '/': - growingString += "/" - l.next() - case 't': - growingString += "\t" - l.next() - case 'r': - growingString += "\r" - l.next() - case '\\': - growingString += "\\" - l.next() - case 'u': - l.next() - code := "" - for i := 0; i < 4; i++ { - c := l.peek() - if !isHexDigit(c) { - return "", errors.New("unfinished unicode escape") - } - l.next() - code = code + string(c) - } - intcode, err := strconv.ParseInt(code, 16, 32) - if err != nil { - return "", errors.New("invalid unicode escape: \\u" + code) - } - growingString += string(rune(intcode)) - case 'U': - l.next() - code := "" - for i := 0; i < 8; i++ { - c := l.peek() - if !isHexDigit(c) { - return "", errors.New("unfinished unicode escape") - } - l.next() - code = code + string(c) - } - intcode, err := strconv.ParseInt(code, 16, 64) - if err != nil { - return "", errors.New("invalid unicode escape: \\U" + code) - } - growingString += string(rune(intcode)) - default: - return "", errors.New("invalid escape sequence: \\" + string(l.peek())) - } - } else { - r := l.peek() - - if 0x00 <= r && r <= 0x1F && !(acceptNewLines && (r == '\n' || r == '\r')) { - return "", fmt.Errorf("unescaped control character %U", r) - } - l.next() - growingString += string(r) - } - - if l.peek() == eof { - break - } - } - - return "", errors.New("unclosed string") -} - -func (l *tomlLexer) lexString() tomlLexStateFn { - l.skip() - - // handle special case for triple-quote - terminator := `"` - discardLeadingNewLine := false - acceptNewLines := false - if l.follow(`""`) { - l.skip() - l.skip() - terminator = `"""` - discardLeadingNewLine = true - acceptNewLines = true - } - - str, err := l.lexStringAsString(terminator, discardLeadingNewLine, acceptNewLines) - - if err != nil { - return l.errorf(err.Error()) - } - - l.emitWithValue(tokenString, str) - l.fastForward(len(terminator)) - l.ignore() - return l.lexRvalue -} - -func (l *tomlLexer) lexTableKey() tomlLexStateFn { - l.next() - - if l.peek() == '[' { - // token '[[' signifies an array of tables - l.next() - l.emit(tokenDoubleLeftBracket) - return l.lexInsideTableArrayKey - } - // vanilla table key - l.emit(tokenLeftBracket) - return l.lexInsideTableKey -} - -func (l *tomlLexer) lexInsideTableArrayKey() tomlLexStateFn { - for r := l.peek(); r != eof; r = l.peek() { - switch r { - case ']': - if l.currentTokenStop > l.currentTokenStart { - l.emit(tokenKeyGroupArray) - } - l.next() - if l.peek() != ']' { - break - } - l.next() - l.emit(tokenDoubleRightBracket) - return l.lexVoid - case '[': - return l.errorf("table array key cannot contain ']'") - default: - l.next() - } - } - return l.errorf("unclosed table array key") -} - -func (l *tomlLexer) lexInsideTableKey() tomlLexStateFn { - for r := l.peek(); r != eof; r = l.peek() { - switch r { - case ']': - if l.currentTokenStop > l.currentTokenStart { - l.emit(tokenKeyGroup) - } - l.next() - l.emit(tokenRightBracket) - return l.lexVoid - case '[': - return l.errorf("table key cannot contain ']'") - default: - l.next() - } - } - return l.errorf("unclosed table key") -} - -func (l *tomlLexer) lexRightBracket() tomlLexStateFn { - l.next() - l.emit(tokenRightBracket) - return l.lexRvalue -} - -func (l *tomlLexer) lexNumber() tomlLexStateFn { - r := l.peek() - if r == '+' || r == '-' { - l.next() - } - pointSeen := false - expSeen := false - digitSeen := false - for { - next := l.peek() - if next == '.' { - if pointSeen { - return l.errorf("cannot have two dots in one float") - } - l.next() - if !isDigit(l.peek()) { - return l.errorf("float cannot end with a dot") - } - pointSeen = true - } else if next == 'e' || next == 'E' { - expSeen = true - l.next() - r := l.peek() - if r == '+' || r == '-' { - l.next() - } - } else if isDigit(next) { - digitSeen = true - l.next() - } else if next == '_' { - l.next() - } else { - break - } - if pointSeen && !digitSeen { - return l.errorf("cannot start float with a dot") - } - } - - if !digitSeen { - return l.errorf("no digit in that number") - } - if pointSeen || expSeen { - l.emit(tokenFloat) - } else { - l.emit(tokenInteger) - } - return l.lexRvalue -} - -func (l *tomlLexer) run() { - for state := l.lexVoid; state != nil; { - state = state() - } -} - -func init() { - dateRegexp = regexp.MustCompile(`^\d{1,4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?(Z|[+-]\d{2}:\d{2})`) -} - -// Entry point -func lexToml(inputBytes []byte) []token { - runes := bytes.Runes(inputBytes) - l := &tomlLexer{ - input: runes, - tokens: make([]token, 0, 256), - line: 1, - col: 1, - endbufferLine: 1, - endbufferCol: 1, - } - l.run() - return l.tokens -} diff --git a/vendor/github.com/pelletier/go-toml/lexer_test.go b/vendor/github.com/pelletier/go-toml/lexer_test.go deleted file mode 100644 index 313b83c5d..000000000 --- a/vendor/github.com/pelletier/go-toml/lexer_test.go +++ /dev/null @@ -1,750 +0,0 @@ -package toml - -import ( - "reflect" - "testing" -) - -func testFlow(t *testing.T, input string, expectedFlow []token) { - tokens := lexToml([]byte(input)) - if !reflect.DeepEqual(tokens, expectedFlow) { - t.Fatal("Different flows. Expected\n", expectedFlow, "\nGot:\n", tokens) - } -} - -func TestValidKeyGroup(t *testing.T) { - testFlow(t, "[hello world]", []token{ - {Position{1, 1}, tokenLeftBracket, "["}, - {Position{1, 2}, tokenKeyGroup, "hello world"}, - {Position{1, 13}, tokenRightBracket, "]"}, - {Position{1, 14}, tokenEOF, ""}, - }) -} - -func TestNestedQuotedUnicodeKeyGroup(t *testing.T) { - testFlow(t, `[ j . "ʞ" . l ]`, []token{ - {Position{1, 1}, tokenLeftBracket, "["}, - {Position{1, 2}, tokenKeyGroup, ` j . "ʞ" . l `}, - {Position{1, 15}, tokenRightBracket, "]"}, - {Position{1, 16}, tokenEOF, ""}, - }) -} - -func TestUnclosedKeyGroup(t *testing.T) { - testFlow(t, "[hello world", []token{ - {Position{1, 1}, tokenLeftBracket, "["}, - {Position{1, 2}, tokenError, "unclosed table key"}, - }) -} - -func TestComment(t *testing.T) { - testFlow(t, "# blahblah", []token{ - {Position{1, 11}, tokenEOF, ""}, - }) -} - -func TestKeyGroupComment(t *testing.T) { - testFlow(t, "[hello world] # blahblah", []token{ - {Position{1, 1}, tokenLeftBracket, "["}, - {Position{1, 2}, tokenKeyGroup, "hello world"}, - {Position{1, 13}, tokenRightBracket, "]"}, - {Position{1, 25}, tokenEOF, ""}, - }) -} - -func TestMultipleKeyGroupsComment(t *testing.T) { - testFlow(t, "[hello world] # blahblah\n[test]", []token{ - {Position{1, 1}, tokenLeftBracket, "["}, - {Position{1, 2}, tokenKeyGroup, "hello world"}, - {Position{1, 13}, tokenRightBracket, "]"}, - {Position{2, 1}, tokenLeftBracket, "["}, - {Position{2, 2}, tokenKeyGroup, "test"}, - {Position{2, 6}, tokenRightBracket, "]"}, - {Position{2, 7}, tokenEOF, ""}, - }) -} - -func TestSimpleWindowsCRLF(t *testing.T) { - testFlow(t, "a=4\r\nb=2", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 2}, tokenEqual, "="}, - {Position{1, 3}, tokenInteger, "4"}, - {Position{2, 1}, tokenKey, "b"}, - {Position{2, 2}, tokenEqual, "="}, - {Position{2, 3}, tokenInteger, "2"}, - {Position{2, 4}, tokenEOF, ""}, - }) -} - -func TestBasicKey(t *testing.T) { - testFlow(t, "hello", []token{ - {Position{1, 1}, tokenKey, "hello"}, - {Position{1, 6}, tokenEOF, ""}, - }) -} - -func TestBasicKeyWithUnderscore(t *testing.T) { - testFlow(t, "hello_hello", []token{ - {Position{1, 1}, tokenKey, "hello_hello"}, - {Position{1, 12}, tokenEOF, ""}, - }) -} - -func TestBasicKeyWithDash(t *testing.T) { - testFlow(t, "hello-world", []token{ - {Position{1, 1}, tokenKey, "hello-world"}, - {Position{1, 12}, tokenEOF, ""}, - }) -} - -func TestBasicKeyWithUppercaseMix(t *testing.T) { - testFlow(t, "helloHELLOHello", []token{ - {Position{1, 1}, tokenKey, "helloHELLOHello"}, - {Position{1, 16}, tokenEOF, ""}, - }) -} - -func TestBasicKeyWithInternationalCharacters(t *testing.T) { - testFlow(t, "héllÖ", []token{ - {Position{1, 1}, tokenKey, "héllÖ"}, - {Position{1, 6}, tokenEOF, ""}, - }) -} - -func TestBasicKeyAndEqual(t *testing.T) { - testFlow(t, "hello =", []token{ - {Position{1, 1}, tokenKey, "hello"}, - {Position{1, 7}, tokenEqual, "="}, - {Position{1, 8}, tokenEOF, ""}, - }) -} - -func TestKeyWithSharpAndEqual(t *testing.T) { - testFlow(t, "key#name = 5", []token{ - {Position{1, 1}, tokenError, "keys cannot contain # character"}, - }) -} - -func TestKeyWithSymbolsAndEqual(t *testing.T) { - testFlow(t, "~!@$^&*()_+-`1234567890[]\\|/?><.,;:' = 5", []token{ - {Position{1, 1}, tokenError, "keys cannot contain ~ character"}, - }) -} - -func TestKeyEqualStringEscape(t *testing.T) { - testFlow(t, `foo = "hello\""`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "hello\""}, - {Position{1, 16}, tokenEOF, ""}, - }) -} - -func TestKeyEqualStringUnfinished(t *testing.T) { - testFlow(t, `foo = "bar`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "unclosed string"}, - }) -} - -func TestKeyEqualString(t *testing.T) { - testFlow(t, `foo = "bar"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "bar"}, - {Position{1, 12}, tokenEOF, ""}, - }) -} - -func TestKeyEqualTrue(t *testing.T) { - testFlow(t, "foo = true", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenTrue, "true"}, - {Position{1, 11}, tokenEOF, ""}, - }) -} - -func TestKeyEqualFalse(t *testing.T) { - testFlow(t, "foo = false", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenFalse, "false"}, - {Position{1, 12}, tokenEOF, ""}, - }) -} - -func TestArrayNestedString(t *testing.T) { - testFlow(t, `a = [ ["hello", "world"] ]`, []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenLeftBracket, "["}, - {Position{1, 7}, tokenLeftBracket, "["}, - {Position{1, 9}, tokenString, "hello"}, - {Position{1, 15}, tokenComma, ","}, - {Position{1, 18}, tokenString, "world"}, - {Position{1, 24}, tokenRightBracket, "]"}, - {Position{1, 26}, tokenRightBracket, "]"}, - {Position{1, 27}, tokenEOF, ""}, - }) -} - -func TestArrayNestedInts(t *testing.T) { - testFlow(t, "a = [ [42, 21], [10] ]", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenLeftBracket, "["}, - {Position{1, 7}, tokenLeftBracket, "["}, - {Position{1, 8}, tokenInteger, "42"}, - {Position{1, 10}, tokenComma, ","}, - {Position{1, 12}, tokenInteger, "21"}, - {Position{1, 14}, tokenRightBracket, "]"}, - {Position{1, 15}, tokenComma, ","}, - {Position{1, 17}, tokenLeftBracket, "["}, - {Position{1, 18}, tokenInteger, "10"}, - {Position{1, 20}, tokenRightBracket, "]"}, - {Position{1, 22}, tokenRightBracket, "]"}, - {Position{1, 23}, tokenEOF, ""}, - }) -} - -func TestArrayInts(t *testing.T) { - testFlow(t, "a = [ 42, 21, 10, ]", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenLeftBracket, "["}, - {Position{1, 7}, tokenInteger, "42"}, - {Position{1, 9}, tokenComma, ","}, - {Position{1, 11}, tokenInteger, "21"}, - {Position{1, 13}, tokenComma, ","}, - {Position{1, 15}, tokenInteger, "10"}, - {Position{1, 17}, tokenComma, ","}, - {Position{1, 19}, tokenRightBracket, "]"}, - {Position{1, 20}, tokenEOF, ""}, - }) -} - -func TestMultilineArrayComments(t *testing.T) { - testFlow(t, "a = [1, # wow\n2, # such items\n3, # so array\n]", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenLeftBracket, "["}, - {Position{1, 6}, tokenInteger, "1"}, - {Position{1, 7}, tokenComma, ","}, - {Position{2, 1}, tokenInteger, "2"}, - {Position{2, 2}, tokenComma, ","}, - {Position{3, 1}, tokenInteger, "3"}, - {Position{3, 2}, tokenComma, ","}, - {Position{4, 1}, tokenRightBracket, "]"}, - {Position{4, 2}, tokenEOF, ""}, - }) -} - -func TestNestedArraysComment(t *testing.T) { - toml := ` -someArray = [ -# does not work -["entry1"] -]` - testFlow(t, toml, []token{ - {Position{2, 1}, tokenKey, "someArray"}, - {Position{2, 11}, tokenEqual, "="}, - {Position{2, 13}, tokenLeftBracket, "["}, - {Position{4, 1}, tokenLeftBracket, "["}, - {Position{4, 3}, tokenString, "entry1"}, - {Position{4, 10}, tokenRightBracket, "]"}, - {Position{5, 1}, tokenRightBracket, "]"}, - {Position{5, 2}, tokenEOF, ""}, - }) -} - -func TestKeyEqualArrayBools(t *testing.T) { - testFlow(t, "foo = [true, false, true]", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenLeftBracket, "["}, - {Position{1, 8}, tokenTrue, "true"}, - {Position{1, 12}, tokenComma, ","}, - {Position{1, 14}, tokenFalse, "false"}, - {Position{1, 19}, tokenComma, ","}, - {Position{1, 21}, tokenTrue, "true"}, - {Position{1, 25}, tokenRightBracket, "]"}, - {Position{1, 26}, tokenEOF, ""}, - }) -} - -func TestKeyEqualArrayBoolsWithComments(t *testing.T) { - testFlow(t, "foo = [true, false, true] # YEAH", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenLeftBracket, "["}, - {Position{1, 8}, tokenTrue, "true"}, - {Position{1, 12}, tokenComma, ","}, - {Position{1, 14}, tokenFalse, "false"}, - {Position{1, 19}, tokenComma, ","}, - {Position{1, 21}, tokenTrue, "true"}, - {Position{1, 25}, tokenRightBracket, "]"}, - {Position{1, 33}, tokenEOF, ""}, - }) -} - -func TestDateRegexp(t *testing.T) { - if dateRegexp.FindString("1979-05-27T07:32:00Z") == "" { - t.Error("basic lexing") - } - if dateRegexp.FindString("1979-05-27T00:32:00-07:00") == "" { - t.Error("offset lexing") - } - if dateRegexp.FindString("1979-05-27T00:32:00.999999-07:00") == "" { - t.Error("nano precision lexing") - } -} - -func TestKeyEqualDate(t *testing.T) { - testFlow(t, "foo = 1979-05-27T07:32:00Z", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenDate, "1979-05-27T07:32:00Z"}, - {Position{1, 27}, tokenEOF, ""}, - }) - testFlow(t, "foo = 1979-05-27T00:32:00-07:00", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenDate, "1979-05-27T00:32:00-07:00"}, - {Position{1, 32}, tokenEOF, ""}, - }) - testFlow(t, "foo = 1979-05-27T00:32:00.999999-07:00", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenDate, "1979-05-27T00:32:00.999999-07:00"}, - {Position{1, 39}, tokenEOF, ""}, - }) -} - -func TestFloatEndingWithDot(t *testing.T) { - testFlow(t, "foo = 42.", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenError, "float cannot end with a dot"}, - }) -} - -func TestFloatWithTwoDots(t *testing.T) { - testFlow(t, "foo = 4.2.", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenError, "cannot have two dots in one float"}, - }) -} - -func TestFloatWithExponent1(t *testing.T) { - testFlow(t, "a = 5e+22", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenFloat, "5e+22"}, - {Position{1, 10}, tokenEOF, ""}, - }) -} - -func TestFloatWithExponent2(t *testing.T) { - testFlow(t, "a = 5E+22", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenFloat, "5E+22"}, - {Position{1, 10}, tokenEOF, ""}, - }) -} - -func TestFloatWithExponent3(t *testing.T) { - testFlow(t, "a = -5e+22", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenFloat, "-5e+22"}, - {Position{1, 11}, tokenEOF, ""}, - }) -} - -func TestFloatWithExponent4(t *testing.T) { - testFlow(t, "a = -5e-22", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenFloat, "-5e-22"}, - {Position{1, 11}, tokenEOF, ""}, - }) -} - -func TestFloatWithExponent5(t *testing.T) { - testFlow(t, "a = 6.626e-34", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenFloat, "6.626e-34"}, - {Position{1, 14}, tokenEOF, ""}, - }) -} - -func TestInvalidEsquapeSequence(t *testing.T) { - testFlow(t, `foo = "\x"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "invalid escape sequence: \\x"}, - }) -} - -func TestNestedArrays(t *testing.T) { - testFlow(t, "foo = [[[]]]", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenLeftBracket, "["}, - {Position{1, 8}, tokenLeftBracket, "["}, - {Position{1, 9}, tokenLeftBracket, "["}, - {Position{1, 10}, tokenRightBracket, "]"}, - {Position{1, 11}, tokenRightBracket, "]"}, - {Position{1, 12}, tokenRightBracket, "]"}, - {Position{1, 13}, tokenEOF, ""}, - }) -} - -func TestKeyEqualNumber(t *testing.T) { - testFlow(t, "foo = 42", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "42"}, - {Position{1, 9}, tokenEOF, ""}, - }) - - testFlow(t, "foo = +42", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "+42"}, - {Position{1, 10}, tokenEOF, ""}, - }) - - testFlow(t, "foo = -42", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "-42"}, - {Position{1, 10}, tokenEOF, ""}, - }) - - testFlow(t, "foo = 4.2", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenFloat, "4.2"}, - {Position{1, 10}, tokenEOF, ""}, - }) - - testFlow(t, "foo = +4.2", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenFloat, "+4.2"}, - {Position{1, 11}, tokenEOF, ""}, - }) - - testFlow(t, "foo = -4.2", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenFloat, "-4.2"}, - {Position{1, 11}, tokenEOF, ""}, - }) - - testFlow(t, "foo = 1_000", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "1_000"}, - {Position{1, 12}, tokenEOF, ""}, - }) - - testFlow(t, "foo = 5_349_221", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "5_349_221"}, - {Position{1, 16}, tokenEOF, ""}, - }) - - testFlow(t, "foo = 1_2_3_4_5", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "1_2_3_4_5"}, - {Position{1, 16}, tokenEOF, ""}, - }) - - testFlow(t, "flt8 = 9_224_617.445_991_228_313", []token{ - {Position{1, 1}, tokenKey, "flt8"}, - {Position{1, 6}, tokenEqual, "="}, - {Position{1, 8}, tokenFloat, "9_224_617.445_991_228_313"}, - {Position{1, 33}, tokenEOF, ""}, - }) - - testFlow(t, "foo = +", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenError, "no digit in that number"}, - }) -} - -func TestMultiline(t *testing.T) { - testFlow(t, "foo = 42\nbar=21", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 7}, tokenInteger, "42"}, - {Position{2, 1}, tokenKey, "bar"}, - {Position{2, 4}, tokenEqual, "="}, - {Position{2, 5}, tokenInteger, "21"}, - {Position{2, 7}, tokenEOF, ""}, - }) -} - -func TestKeyEqualStringUnicodeEscape(t *testing.T) { - testFlow(t, `foo = "hello \u2665"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "hello ♥"}, - {Position{1, 21}, tokenEOF, ""}, - }) - testFlow(t, `foo = "hello \U000003B4"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "hello δ"}, - {Position{1, 25}, tokenEOF, ""}, - }) - testFlow(t, `foo = "\uabcd"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "\uabcd"}, - {Position{1, 15}, tokenEOF, ""}, - }) - testFlow(t, `foo = "\uABCD"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "\uABCD"}, - {Position{1, 15}, tokenEOF, ""}, - }) - testFlow(t, `foo = "\U000bcdef"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "\U000bcdef"}, - {Position{1, 19}, tokenEOF, ""}, - }) - testFlow(t, `foo = "\U000BCDEF"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "\U000BCDEF"}, - {Position{1, 19}, tokenEOF, ""}, - }) - testFlow(t, `foo = "\u2"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "unfinished unicode escape"}, - }) - testFlow(t, `foo = "\U2"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "unfinished unicode escape"}, - }) -} - -func TestKeyEqualStringNoEscape(t *testing.T) { - testFlow(t, "foo = \"hello \u0002\"", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "unescaped control character U+0002"}, - }) - testFlow(t, "foo = \"hello \u001F\"", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "unescaped control character U+001F"}, - }) -} - -func TestLiteralString(t *testing.T) { - testFlow(t, `foo = 'C:\Users\nodejs\templates'`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, `C:\Users\nodejs\templates`}, - {Position{1, 34}, tokenEOF, ""}, - }) - testFlow(t, `foo = '\\ServerX\admin$\system32\'`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, `\\ServerX\admin$\system32\`}, - {Position{1, 35}, tokenEOF, ""}, - }) - testFlow(t, `foo = 'Tom "Dubs" Preston-Werner'`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, `Tom "Dubs" Preston-Werner`}, - {Position{1, 34}, tokenEOF, ""}, - }) - testFlow(t, `foo = '<\i\c*\s*>'`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, `<\i\c*\s*>`}, - {Position{1, 19}, tokenEOF, ""}, - }) - testFlow(t, `foo = 'C:\Users\nodejs\unfinis`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenError, "unclosed string"}, - }) -} - -func TestMultilineLiteralString(t *testing.T) { - testFlow(t, `foo = '''hello 'literal' world'''`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 10}, tokenString, `hello 'literal' world`}, - {Position{1, 34}, tokenEOF, ""}, - }) - - testFlow(t, "foo = '''\nhello\n'literal'\nworld'''", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{2, 1}, tokenString, "hello\n'literal'\nworld"}, - {Position{4, 9}, tokenEOF, ""}, - }) - testFlow(t, "foo = '''\r\nhello\r\n'literal'\r\nworld'''", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{2, 1}, tokenString, "hello\r\n'literal'\r\nworld"}, - {Position{4, 9}, tokenEOF, ""}, - }) -} - -func TestMultilineString(t *testing.T) { - testFlow(t, `foo = """hello "literal" world"""`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 10}, tokenString, `hello "literal" world`}, - {Position{1, 34}, tokenEOF, ""}, - }) - - testFlow(t, "foo = \"\"\"\r\nhello\\\r\n\"literal\"\\\nworld\"\"\"", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{2, 1}, tokenString, "hello\"literal\"world"}, - {Position{4, 9}, tokenEOF, ""}, - }) - - testFlow(t, "foo = \"\"\"\\\n \\\n \\\n hello\\\nmultiline\\\nworld\"\"\"", []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 10}, tokenString, "hellomultilineworld"}, - {Position{6, 9}, tokenEOF, ""}, - }) - - testFlow(t, "key2 = \"\"\"\nThe quick brown \\\n\n\n fox jumps over \\\n the lazy dog.\"\"\"", []token{ - {Position{1, 1}, tokenKey, "key2"}, - {Position{1, 6}, tokenEqual, "="}, - {Position{2, 1}, tokenString, "The quick brown fox jumps over the lazy dog."}, - {Position{6, 21}, tokenEOF, ""}, - }) - - testFlow(t, "key2 = \"\"\"\\\n The quick brown \\\n fox jumps over \\\n the lazy dog.\\\n \"\"\"", []token{ - {Position{1, 1}, tokenKey, "key2"}, - {Position{1, 6}, tokenEqual, "="}, - {Position{1, 11}, tokenString, "The quick brown fox jumps over the lazy dog."}, - {Position{5, 11}, tokenEOF, ""}, - }) - - testFlow(t, `key2 = "Roses are red\nViolets are blue"`, []token{ - {Position{1, 1}, tokenKey, "key2"}, - {Position{1, 6}, tokenEqual, "="}, - {Position{1, 9}, tokenString, "Roses are red\nViolets are blue"}, - {Position{1, 41}, tokenEOF, ""}, - }) - - testFlow(t, "key2 = \"\"\"\nRoses are red\nViolets are blue\"\"\"", []token{ - {Position{1, 1}, tokenKey, "key2"}, - {Position{1, 6}, tokenEqual, "="}, - {Position{2, 1}, tokenString, "Roses are red\nViolets are blue"}, - {Position{3, 20}, tokenEOF, ""}, - }) -} - -func TestUnicodeString(t *testing.T) { - testFlow(t, `foo = "hello ♥ world"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "hello ♥ world"}, - {Position{1, 22}, tokenEOF, ""}, - }) -} -func TestEscapeInString(t *testing.T) { - testFlow(t, `foo = "\b\f\/"`, []token{ - {Position{1, 1}, tokenKey, "foo"}, - {Position{1, 5}, tokenEqual, "="}, - {Position{1, 8}, tokenString, "\b\f/"}, - {Position{1, 15}, tokenEOF, ""}, - }) -} - -func TestKeyGroupArray(t *testing.T) { - testFlow(t, "[[foo]]", []token{ - {Position{1, 1}, tokenDoubleLeftBracket, "[["}, - {Position{1, 3}, tokenKeyGroupArray, "foo"}, - {Position{1, 6}, tokenDoubleRightBracket, "]]"}, - {Position{1, 8}, tokenEOF, ""}, - }) -} - -func TestQuotedKey(t *testing.T) { - testFlow(t, "\"a b\" = 42", []token{ - {Position{1, 1}, tokenKey, "\"a b\""}, - {Position{1, 7}, tokenEqual, "="}, - {Position{1, 9}, tokenInteger, "42"}, - {Position{1, 11}, tokenEOF, ""}, - }) -} - -func TestKeyNewline(t *testing.T) { - testFlow(t, "a\n= 4", []token{ - {Position{1, 1}, tokenError, "keys cannot contain new lines"}, - }) -} - -func TestInvalidFloat(t *testing.T) { - testFlow(t, "a=7e1_", []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 2}, tokenEqual, "="}, - {Position{1, 3}, tokenFloat, "7e1_"}, - {Position{1, 7}, tokenEOF, ""}, - }) -} - -func TestLexUnknownRvalue(t *testing.T) { - testFlow(t, `a = !b`, []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenError, "no value can start with !"}, - }) - - testFlow(t, `a = \b`, []token{ - {Position{1, 1}, tokenKey, "a"}, - {Position{1, 3}, tokenEqual, "="}, - {Position{1, 5}, tokenError, `no value can start with \`}, - }) -} - -func BenchmarkLexer(b *testing.B) { - sample := `title = "Hugo: A Fast and Flexible Website Generator" -baseurl = "http://gohugo.io/" -MetaDataFormat = "yaml" -pluralizeListTitles = false - -[params] - description = "Documentation of Hugo, a fast and flexible static site generator built with love by spf13, bep and friends in Go" - author = "Steve Francia (spf13) and friends" - release = "0.22-DEV" - -[[menu.main]] - name = "Download Hugo" - pre = "" - url = "https://github.com/spf13/hugo/releases" - weight = -200 -` - b.ResetTimer() - for i := 0; i < b.N; i++ { - lexToml([]byte(sample)) - } -} diff --git a/vendor/github.com/pelletier/go-toml/marshal.go b/vendor/github.com/pelletier/go-toml/marshal.go deleted file mode 100644 index 1a3176f97..000000000 --- a/vendor/github.com/pelletier/go-toml/marshal.go +++ /dev/null @@ -1,489 +0,0 @@ -package toml - -import ( - "bytes" - "errors" - "fmt" - "reflect" - "strings" - "time" -) - -type tomlOpts struct { - name string - include bool - omitempty bool -} - -var timeType = reflect.TypeOf(time.Time{}) -var marshalerType = reflect.TypeOf(new(Marshaler)).Elem() - -// Check if the given marshall type maps to a Tree primitive -func isPrimitive(mtype reflect.Type) bool { - switch mtype.Kind() { - case reflect.Ptr: - return isPrimitive(mtype.Elem()) - case reflect.Bool: - return true - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return true - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - return true - case reflect.Float32, reflect.Float64: - return true - case reflect.String: - return true - case reflect.Struct: - return mtype == timeType || isCustomMarshaler(mtype) - default: - return false - } -} - -// Check if the given marshall type maps to a Tree slice -func isTreeSlice(mtype reflect.Type) bool { - switch mtype.Kind() { - case reflect.Slice: - return !isOtherSlice(mtype) - default: - return false - } -} - -// Check if the given marshall type maps to a non-Tree slice -func isOtherSlice(mtype reflect.Type) bool { - switch mtype.Kind() { - case reflect.Ptr: - return isOtherSlice(mtype.Elem()) - case reflect.Slice: - return isPrimitive(mtype.Elem()) || isOtherSlice(mtype.Elem()) - default: - return false - } -} - -// Check if the given marshall type maps to a Tree -func isTree(mtype reflect.Type) bool { - switch mtype.Kind() { - case reflect.Map: - return true - case reflect.Struct: - return !isPrimitive(mtype) - default: - return false - } -} - -func isCustomMarshaler(mtype reflect.Type) bool { - return mtype.Implements(marshalerType) -} - -func callCustomMarshaler(mval reflect.Value) ([]byte, error) { - return mval.Interface().(Marshaler).MarshalTOML() -} - -// Marshaler is the interface implemented by types that -// can marshal themselves into valid TOML. -type Marshaler interface { - MarshalTOML() ([]byte, error) -} - -/* -Marshal returns the TOML encoding of v. Behavior is similar to the Go json -encoder, except that there is no concept of a Marshaler interface or MarshalTOML -function for sub-structs, and currently only definite types can be marshaled -(i.e. no `interface{}`). - -Note that pointers are automatically assigned the "omitempty" option, as TOML -explicity does not handle null values (saying instead the label should be -dropped). - -Tree structural types and corresponding marshal types: - - *Tree (*)struct, (*)map[string]interface{} - []*Tree (*)[](*)struct, (*)[](*)map[string]interface{} - []interface{} (as interface{}) (*)[]primitive, (*)[]([]interface{}) - interface{} (*)primitive - -Tree primitive types and corresponding marshal types: - - uint64 uint, uint8-uint64, pointers to same - int64 int, int8-uint64, pointers to same - float64 float32, float64, pointers to same - string string, pointers to same - bool bool, pointers to same - time.Time time.Time{}, pointers to same -*/ -func Marshal(v interface{}) ([]byte, error) { - mtype := reflect.TypeOf(v) - if mtype.Kind() != reflect.Struct { - return []byte{}, errors.New("Only a struct can be marshaled to TOML") - } - sval := reflect.ValueOf(v) - if isCustomMarshaler(mtype) { - return callCustomMarshaler(sval) - } - t, err := valueToTree(mtype, sval) - if err != nil { - return []byte{}, err - } - s, err := t.ToTomlString() - return []byte(s), err -} - -// Convert given marshal struct or map value to toml tree -func valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, error) { - if mtype.Kind() == reflect.Ptr { - return valueToTree(mtype.Elem(), mval.Elem()) - } - tval := newTree() - switch mtype.Kind() { - case reflect.Struct: - for i := 0; i < mtype.NumField(); i++ { - mtypef, mvalf := mtype.Field(i), mval.Field(i) - opts := tomlOptions(mtypef) - if opts.include && (!opts.omitempty || !isZero(mvalf)) { - val, err := valueToToml(mtypef.Type, mvalf) - if err != nil { - return nil, err - } - tval.Set(opts.name, val) - } - } - case reflect.Map: - for _, key := range mval.MapKeys() { - mvalf := mval.MapIndex(key) - val, err := valueToToml(mtype.Elem(), mvalf) - if err != nil { - return nil, err - } - tval.Set(key.String(), val) - } - } - return tval, nil -} - -// Convert given marshal slice to slice of Toml trees -func valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*Tree, error) { - tval := make([]*Tree, mval.Len(), mval.Len()) - for i := 0; i < mval.Len(); i++ { - val, err := valueToTree(mtype.Elem(), mval.Index(i)) - if err != nil { - return nil, err - } - tval[i] = val - } - return tval, nil -} - -// Convert given marshal slice to slice of toml values -func valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) { - tval := make([]interface{}, mval.Len(), mval.Len()) - for i := 0; i < mval.Len(); i++ { - val, err := valueToToml(mtype.Elem(), mval.Index(i)) - if err != nil { - return nil, err - } - tval[i] = val - } - return tval, nil -} - -// Convert given marshal value to toml value -func valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) { - if mtype.Kind() == reflect.Ptr { - return valueToToml(mtype.Elem(), mval.Elem()) - } - switch { - case isCustomMarshaler(mtype): - return callCustomMarshaler(mval) - case isTree(mtype): - return valueToTree(mtype, mval) - case isTreeSlice(mtype): - return valueToTreeSlice(mtype, mval) - case isOtherSlice(mtype): - return valueToOtherSlice(mtype, mval) - default: - switch mtype.Kind() { - case reflect.Bool: - return mval.Bool(), nil - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return mval.Int(), nil - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - return mval.Uint(), nil - case reflect.Float32, reflect.Float64: - return mval.Float(), nil - case reflect.String: - return mval.String(), nil - case reflect.Struct: - return mval.Interface().(time.Time), nil - default: - return nil, fmt.Errorf("Marshal can't handle %v(%v)", mtype, mtype.Kind()) - } - } -} - -// Unmarshal attempts to unmarshal the Tree into a Go struct pointed by v. -// Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for -// sub-structs, and only definite types can be unmarshaled. -func (t *Tree) Unmarshal(v interface{}) error { - mtype := reflect.TypeOf(v) - if mtype.Kind() != reflect.Ptr || mtype.Elem().Kind() != reflect.Struct { - return errors.New("Only a pointer to struct can be unmarshaled from TOML") - } - - sval, err := valueFromTree(mtype.Elem(), t) - if err != nil { - return err - } - reflect.ValueOf(v).Elem().Set(sval) - return nil -} - -// Unmarshal parses the TOML-encoded data and stores the result in the value -// pointed to by v. Behavior is similar to the Go json encoder, except that there -// is no concept of an Unmarshaler interface or UnmarshalTOML function for -// sub-structs, and currently only definite types can be unmarshaled to (i.e. no -// `interface{}`). -// -// See Marshal() documentation for types mapping table. -func Unmarshal(data []byte, v interface{}) error { - t, err := LoadReader(bytes.NewReader(data)) - if err != nil { - return err - } - return t.Unmarshal(v) -} - -// Convert toml tree to marshal struct or map, using marshal type -func valueFromTree(mtype reflect.Type, tval *Tree) (reflect.Value, error) { - if mtype.Kind() == reflect.Ptr { - return unwrapPointer(mtype, tval) - } - var mval reflect.Value - switch mtype.Kind() { - case reflect.Struct: - mval = reflect.New(mtype).Elem() - for i := 0; i < mtype.NumField(); i++ { - mtypef := mtype.Field(i) - opts := tomlOptions(mtypef) - if opts.include { - baseKey := opts.name - keysToTry := []string{baseKey, strings.ToLower(baseKey), strings.ToTitle(baseKey)} - for _, key := range keysToTry { - exists := tval.Has(key) - if !exists { - continue - } - val := tval.Get(key) - mvalf, err := valueFromToml(mtypef.Type, val) - if err != nil { - return mval, formatError(err, tval.GetPosition(key)) - } - mval.Field(i).Set(mvalf) - break - } - } - } - case reflect.Map: - mval = reflect.MakeMap(mtype) - for _, key := range tval.Keys() { - val := tval.Get(key) - mvalf, err := valueFromToml(mtype.Elem(), val) - if err != nil { - return mval, formatError(err, tval.GetPosition(key)) - } - mval.SetMapIndex(reflect.ValueOf(key), mvalf) - } - } - return mval, nil -} - -// Convert toml value to marshal struct/map slice, using marshal type -func valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) { - mval := reflect.MakeSlice(mtype, len(tval), len(tval)) - for i := 0; i < len(tval); i++ { - val, err := valueFromTree(mtype.Elem(), tval[i]) - if err != nil { - return mval, err - } - mval.Index(i).Set(val) - } - return mval, nil -} - -// Convert toml value to marshal primitive slice, using marshal type -func valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) { - mval := reflect.MakeSlice(mtype, len(tval), len(tval)) - for i := 0; i < len(tval); i++ { - val, err := valueFromToml(mtype.Elem(), tval[i]) - if err != nil { - return mval, err - } - mval.Index(i).Set(val) - } - return mval, nil -} - -// Convert toml value to marshal value, using marshal type -func valueFromToml(mtype reflect.Type, tval interface{}) (reflect.Value, error) { - if mtype.Kind() == reflect.Ptr { - return unwrapPointer(mtype, tval) - } - switch { - case isTree(mtype): - return valueFromTree(mtype, tval.(*Tree)) - case isTreeSlice(mtype): - return valueFromTreeSlice(mtype, tval.([]*Tree)) - case isOtherSlice(mtype): - return valueFromOtherSlice(mtype, tval.([]interface{})) - default: - switch mtype.Kind() { - case reflect.Bool: - val, ok := tval.(bool) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to bool", tval, tval) - } - return reflect.ValueOf(val), nil - case reflect.Int: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to int", tval, tval) - } - return reflect.ValueOf(int(val)), nil - case reflect.Int8: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to int", tval, tval) - } - return reflect.ValueOf(int8(val)), nil - case reflect.Int16: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to int", tval, tval) - } - return reflect.ValueOf(int16(val)), nil - case reflect.Int32: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to int", tval, tval) - } - return reflect.ValueOf(int32(val)), nil - case reflect.Int64: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to int", tval, tval) - } - return reflect.ValueOf(val), nil - case reflect.Uint: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to uint", tval, tval) - } - return reflect.ValueOf(uint(val)), nil - case reflect.Uint8: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to uint", tval, tval) - } - return reflect.ValueOf(uint8(val)), nil - case reflect.Uint16: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to uint", tval, tval) - } - return reflect.ValueOf(uint16(val)), nil - case reflect.Uint32: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to uint", tval, tval) - } - return reflect.ValueOf(uint32(val)), nil - case reflect.Uint64: - val, ok := tval.(int64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to uint", tval, tval) - } - return reflect.ValueOf(uint64(val)), nil - case reflect.Float32: - val, ok := tval.(float64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to float", tval, tval) - } - return reflect.ValueOf(float32(val)), nil - case reflect.Float64: - val, ok := tval.(float64) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to float", tval, tval) - } - return reflect.ValueOf(val), nil - case reflect.String: - val, ok := tval.(string) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to string", tval, tval) - } - return reflect.ValueOf(val), nil - case reflect.Struct: - val, ok := tval.(time.Time) - if !ok { - return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to time", tval, tval) - } - return reflect.ValueOf(val), nil - default: - return reflect.ValueOf(nil), fmt.Errorf("Unmarshal can't handle %v(%v)", mtype, mtype.Kind()) - } - } -} - -func unwrapPointer(mtype reflect.Type, tval interface{}) (reflect.Value, error) { - val, err := valueFromToml(mtype.Elem(), tval) - if err != nil { - return reflect.ValueOf(nil), err - } - mval := reflect.New(mtype.Elem()) - mval.Elem().Set(val) - return mval, nil -} - -func tomlOptions(vf reflect.StructField) tomlOpts { - tag := vf.Tag.Get("toml") - parse := strings.Split(tag, ",") - result := tomlOpts{vf.Name, true, false} - if parse[0] != "" { - if parse[0] == "-" && len(parse) == 1 { - result.include = false - } else { - result.name = strings.Trim(parse[0], " ") - } - } - if vf.PkgPath != "" { - result.include = false - } - if len(parse) > 1 && strings.Trim(parse[1], " ") == "omitempty" { - result.omitempty = true - } - if vf.Type.Kind() == reflect.Ptr { - result.omitempty = true - } - return result -} - -func isZero(val reflect.Value) bool { - switch val.Type().Kind() { - case reflect.Map: - fallthrough - case reflect.Array: - fallthrough - case reflect.Slice: - return val.Len() == 0 - default: - return reflect.DeepEqual(val.Interface(), reflect.Zero(val.Type()).Interface()) - } -} - -func formatError(err error, pos Position) error { - if err.Error()[0] == '(' { // Error already contains position information - return err - } - return fmt.Errorf("%s: %s", pos, err) -} diff --git a/vendor/github.com/pelletier/go-toml/marshal_test.go b/vendor/github.com/pelletier/go-toml/marshal_test.go deleted file mode 100644 index dbfc7c1d1..000000000 --- a/vendor/github.com/pelletier/go-toml/marshal_test.go +++ /dev/null @@ -1,600 +0,0 @@ -package toml - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "reflect" - "testing" - "time" -) - -type basicMarshalTestStruct struct { - String string `toml:"string"` - StringList []string `toml:"strlist"` - Sub basicMarshalTestSubStruct `toml:"subdoc"` - SubList []basicMarshalTestSubStruct `toml:"sublist"` -} - -type basicMarshalTestSubStruct struct { - String2 string -} - -var basicTestData = basicMarshalTestStruct{ - String: "Hello", - StringList: []string{"Howdy", "Hey There"}, - Sub: basicMarshalTestSubStruct{"One"}, - SubList: []basicMarshalTestSubStruct{{"Two"}, {"Three"}}, -} - -var basicTestToml = []byte(`string = "Hello" -strlist = ["Howdy","Hey There"] - -[subdoc] - String2 = "One" - -[[sublist]] - String2 = "Two" - -[[sublist]] - String2 = "Three" -`) - -func TestBasicMarshal(t *testing.T) { - result, err := Marshal(basicTestData) - if err != nil { - t.Fatal(err) - } - expected := basicTestToml - if !bytes.Equal(result, expected) { - t.Errorf("Bad marshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestBasicUnmarshal(t *testing.T) { - result := basicMarshalTestStruct{} - err := Unmarshal(basicTestToml, &result) - expected := basicTestData - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - t.Errorf("Bad unmarshal: expected %v, got %v", expected, result) - } -} - -type testDoc struct { - Title string `toml:"title"` - Basics testDocBasics `toml:"basic"` - BasicLists testDocBasicLists `toml:"basic_lists"` - BasicMap map[string]string `toml:"basic_map"` - Subdocs testDocSubs `toml:"subdoc"` - SubDocList []testSubDoc `toml:"subdoclist"` - SubDocPtrs []*testSubDoc `toml:"subdocptrs"` - err int `toml:"shouldntBeHere"` - unexported int `toml:"shouldntBeHere"` - Unexported2 int `toml:"-"` -} - -type testDocBasics struct { - Bool bool `toml:"bool"` - Date time.Time `toml:"date"` - Float float32 `toml:"float"` - Int int `toml:"int"` - Uint uint `toml:"uint"` - String *string `toml:"string"` - unexported int `toml:"shouldntBeHere"` -} - -type testDocBasicLists struct { - Bools []bool `toml:"bools"` - Dates []time.Time `toml:"dates"` - Floats []*float32 `toml:"floats"` - Ints []int `toml:"ints"` - Strings []string `toml:"strings"` - UInts []uint `toml:"uints"` -} - -type testDocSubs struct { - First testSubDoc `toml:"first"` - Second *testSubDoc `toml:"second"` -} - -type testSubDoc struct { - Name string `toml:"name"` - unexported int `toml:"shouldntBeHere"` -} - -var biteMe = "Bite me" -var float1 float32 = 12.3 -var float2 float32 = 45.6 -var float3 float32 = 78.9 -var subdoc = testSubDoc{"Second", 0} - -var docData = testDoc{ - Title: "TOML Marshal Testing", - unexported: 0, - Unexported2: 0, - Basics: testDocBasics{ - Bool: true, - Date: time.Date(1979, 5, 27, 7, 32, 0, 0, time.UTC), - Float: 123.4, - Int: 5000, - Uint: 5001, - String: &biteMe, - unexported: 0, - }, - BasicLists: testDocBasicLists{ - Bools: []bool{true, false, true}, - Dates: []time.Time{ - time.Date(1979, 5, 27, 7, 32, 0, 0, time.UTC), - time.Date(1980, 5, 27, 7, 32, 0, 0, time.UTC), - }, - Floats: []*float32{&float1, &float2, &float3}, - Ints: []int{8001, 8001, 8002}, - Strings: []string{"One", "Two", "Three"}, - UInts: []uint{5002, 5003}, - }, - BasicMap: map[string]string{ - "one": "one", - "two": "two", - }, - Subdocs: testDocSubs{ - First: testSubDoc{"First", 0}, - Second: &subdoc, - }, - SubDocList: []testSubDoc{ - testSubDoc{"List.First", 0}, - testSubDoc{"List.Second", 0}, - }, - SubDocPtrs: []*testSubDoc{&subdoc}, -} - -func TestDocMarshal(t *testing.T) { - result, err := Marshal(docData) - if err != nil { - t.Fatal(err) - } - expected, _ := ioutil.ReadFile("marshal_test.toml") - if !bytes.Equal(result, expected) { - t.Errorf("Bad marshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestDocUnmarshal(t *testing.T) { - result := testDoc{} - tomlData, _ := ioutil.ReadFile("marshal_test.toml") - err := Unmarshal(tomlData, &result) - expected := docData - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - resStr, _ := json.MarshalIndent(result, "", " ") - expStr, _ := json.MarshalIndent(expected, "", " ") - t.Errorf("Bad unmarshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expStr, resStr) - } -} - -func TestDocPartialUnmarshal(t *testing.T) { - result := testDocSubs{} - - tree, _ := LoadFile("marshal_test.toml") - subTree := tree.Get("subdoc").(*Tree) - err := subTree.Unmarshal(&result) - expected := docData.Subdocs - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - resStr, _ := json.MarshalIndent(result, "", " ") - expStr, _ := json.MarshalIndent(expected, "", " ") - t.Errorf("Bad partial unmartial: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expStr, resStr) - } -} - -type tomlTypeCheckTest struct { - name string - item interface{} - typ int //0=primitive, 1=otherslice, 2=treeslice, 3=tree -} - -func TestTypeChecks(t *testing.T) { - tests := []tomlTypeCheckTest{ - {"integer", 2, 0}, - {"time", time.Date(2015, 1, 1, 0, 0, 0, 0, time.UTC), 0}, - {"stringlist", []string{"hello", "hi"}, 1}, - {"timelist", []time.Time{time.Date(2015, 1, 1, 0, 0, 0, 0, time.UTC)}, 1}, - {"objectlist", []tomlTypeCheckTest{}, 2}, - {"object", tomlTypeCheckTest{}, 3}, - } - - for _, test := range tests { - expected := []bool{false, false, false, false} - expected[test.typ] = true - result := []bool{ - isPrimitive(reflect.TypeOf(test.item)), - isOtherSlice(reflect.TypeOf(test.item)), - isTreeSlice(reflect.TypeOf(test.item)), - isTree(reflect.TypeOf(test.item)), - } - if !reflect.DeepEqual(expected, result) { - t.Errorf("Bad type check on %q: expected %v, got %v", test.name, expected, result) - } - } -} - -type unexportedMarshalTestStruct struct { - String string `toml:"string"` - StringList []string `toml:"strlist"` - Sub basicMarshalTestSubStruct `toml:"subdoc"` - SubList []basicMarshalTestSubStruct `toml:"sublist"` - unexported int `toml:"shouldntBeHere"` - Unexported2 int `toml:"-"` -} - -var unexportedTestData = unexportedMarshalTestStruct{ - String: "Hello", - StringList: []string{"Howdy", "Hey There"}, - Sub: basicMarshalTestSubStruct{"One"}, - SubList: []basicMarshalTestSubStruct{{"Two"}, {"Three"}}, - unexported: 0, - Unexported2: 0, -} - -var unexportedTestToml = []byte(`string = "Hello" -strlist = ["Howdy","Hey There"] -unexported = 1 -shouldntBeHere = 2 - -[subdoc] - String2 = "One" - -[[sublist]] - String2 = "Two" - -[[sublist]] - String2 = "Three" -`) - -func TestUnexportedUnmarshal(t *testing.T) { - result := unexportedMarshalTestStruct{} - err := Unmarshal(unexportedTestToml, &result) - expected := unexportedTestData - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - t.Errorf("Bad unexported unmarshal: expected %v, got %v", expected, result) - } -} - -type errStruct struct { - Bool bool `toml:"bool"` - Date time.Time `toml:"date"` - Float float64 `toml:"float"` - Int int16 `toml:"int"` - String *string `toml:"string"` -} - -var errTomls = []string{ - "bool = truly\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = 5000\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:3200Z\nfloat = 123.4\nint = 5000\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:32:00Z\nfloat = 123a4\nint = 5000\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = j000\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = 5000\nstring = Bite me", - "bool = true\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = 5000\nstring = Bite me", - "bool = 1\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = 5000\nstring = \"Bite me\"", - "bool = true\ndate = 1\nfloat = 123.4\nint = 5000\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:32:00Z\n\"sorry\"\nint = 5000\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = \"sorry\"\nstring = \"Bite me\"", - "bool = true\ndate = 1979-05-27T07:32:00Z\nfloat = 123.4\nint = 5000\nstring = 1", -} - -type mapErr struct { - Vals map[string]float64 -} - -type intErr struct { - Int1 int - Int2 int8 - Int3 int16 - Int4 int32 - Int5 int64 - UInt1 uint - UInt2 uint8 - UInt3 uint16 - UInt4 uint32 - UInt5 uint64 - Flt1 float32 - Flt2 float64 -} - -var intErrTomls = []string{ - "Int1 = []\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = []\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = []\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = []\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = []\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = []\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = []\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = []\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = []\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = []\nFlt1 = 1.0\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = []\nFlt2 = 2.0", - "Int1 = 1\nInt2 = 2\nInt3 = 3\nInt4 = 4\nInt5 = 5\nUInt1 = 1\nUInt2 = 2\nUInt3 = 3\nUInt4 = 4\nUInt5 = 5\nFlt1 = 1.0\nFlt2 = []", -} - -func TestErrUnmarshal(t *testing.T) { - for ind, toml := range errTomls { - result := errStruct{} - err := Unmarshal([]byte(toml), &result) - if err == nil { - t.Errorf("Expected err from case %d\n", ind) - } - } - result2 := mapErr{} - err := Unmarshal([]byte("[Vals]\nfred=\"1.2\""), &result2) - if err == nil { - t.Errorf("Expected err from map") - } - for ind, toml := range intErrTomls { - result3 := intErr{} - err := Unmarshal([]byte(toml), &result3) - if err == nil { - t.Errorf("Expected int err from case %d\n", ind) - } - } -} - -type emptyMarshalTestStruct struct { - Title string `toml:"title"` - Bool bool `toml:"bool"` - Int int `toml:"int"` - String string `toml:"string"` - StringList []string `toml:"stringlist"` - Ptr *basicMarshalTestStruct `toml:"ptr"` - Map map[string]string `toml:"map"` -} - -var emptyTestData = emptyMarshalTestStruct{ - Title: "Placeholder", - Bool: false, - Int: 0, - String: "", - StringList: []string{}, - Ptr: nil, - Map: map[string]string{}, -} - -var emptyTestToml = []byte(`bool = false -int = 0 -string = "" -stringlist = [] -title = "Placeholder" - -[map] -`) - -type emptyMarshalTestStruct2 struct { - Title string `toml:"title"` - Bool bool `toml:"bool,omitempty"` - Int int `toml:"int, omitempty"` - String string `toml:"string,omitempty "` - StringList []string `toml:"stringlist,omitempty"` - Ptr *basicMarshalTestStruct `toml:"ptr,omitempty"` - Map map[string]string `toml:"map,omitempty"` -} - -var emptyTestData2 = emptyMarshalTestStruct2{ - Title: "Placeholder", - Bool: false, - Int: 0, - String: "", - StringList: []string{}, - Ptr: nil, - Map: map[string]string{}, -} - -var emptyTestToml2 = []byte(`title = "Placeholder" -`) - -func TestEmptyMarshal(t *testing.T) { - result, err := Marshal(emptyTestData) - if err != nil { - t.Fatal(err) - } - expected := emptyTestToml - if !bytes.Equal(result, expected) { - t.Errorf("Bad empty marshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestEmptyMarshalOmit(t *testing.T) { - result, err := Marshal(emptyTestData2) - if err != nil { - t.Fatal(err) - } - expected := emptyTestToml2 - if !bytes.Equal(result, expected) { - t.Errorf("Bad empty omit marshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestEmptyUnmarshal(t *testing.T) { - result := emptyMarshalTestStruct{} - err := Unmarshal(emptyTestToml, &result) - expected := emptyTestData - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - t.Errorf("Bad empty unmarshal: expected %v, got %v", expected, result) - } -} - -func TestEmptyUnmarshalOmit(t *testing.T) { - result := emptyMarshalTestStruct2{} - err := Unmarshal(emptyTestToml, &result) - expected := emptyTestData2 - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - t.Errorf("Bad empty omit unmarshal: expected %v, got %v", expected, result) - } -} - -type pointerMarshalTestStruct struct { - Str *string - List *[]string - ListPtr *[]*string - Map *map[string]string - MapPtr *map[string]*string - EmptyStr *string - EmptyList *[]string - EmptyMap *map[string]string - DblPtr *[]*[]*string -} - -var pointerStr = "Hello" -var pointerList = []string{"Hello back"} -var pointerListPtr = []*string{&pointerStr} -var pointerMap = map[string]string{"response": "Goodbye"} -var pointerMapPtr = map[string]*string{"alternate": &pointerStr} -var pointerTestData = pointerMarshalTestStruct{ - Str: &pointerStr, - List: &pointerList, - ListPtr: &pointerListPtr, - Map: &pointerMap, - MapPtr: &pointerMapPtr, - EmptyStr: nil, - EmptyList: nil, - EmptyMap: nil, -} - -var pointerTestToml = []byte(`List = ["Hello back"] -ListPtr = ["Hello"] -Str = "Hello" - -[Map] - response = "Goodbye" - -[MapPtr] - alternate = "Hello" -`) - -func TestPointerMarshal(t *testing.T) { - result, err := Marshal(pointerTestData) - if err != nil { - t.Fatal(err) - } - expected := pointerTestToml - if !bytes.Equal(result, expected) { - t.Errorf("Bad pointer marshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestPointerUnmarshal(t *testing.T) { - result := pointerMarshalTestStruct{} - err := Unmarshal(pointerTestToml, &result) - expected := pointerTestData - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - t.Errorf("Bad pointer unmarshal: expected %v, got %v", expected, result) - } -} - -type nestedMarshalTestStruct struct { - String [][]string - //Struct [][]basicMarshalTestSubStruct - StringPtr *[]*[]*string - // StructPtr *[]*[]*basicMarshalTestSubStruct -} - -var str1 = "Three" -var str2 = "Four" -var strPtr = []*string{&str1, &str2} -var strPtr2 = []*[]*string{&strPtr} - -var nestedTestData = nestedMarshalTestStruct{ - String: [][]string{[]string{"Five", "Six"}, []string{"One", "Two"}}, - StringPtr: &strPtr2, -} - -var nestedTestToml = []byte(`String = [["Five","Six"],["One","Two"]] -StringPtr = [["Three","Four"]] -`) - -func TestNestedMarshal(t *testing.T) { - result, err := Marshal(nestedTestData) - if err != nil { - t.Fatal(err) - } - expected := nestedTestToml - if !bytes.Equal(result, expected) { - t.Errorf("Bad nested marshal: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestNestedUnmarshal(t *testing.T) { - result := nestedMarshalTestStruct{} - err := Unmarshal(nestedTestToml, &result) - expected := nestedTestData - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(result, expected) { - t.Errorf("Bad nested unmarshal: expected %v, got %v", expected, result) - } -} - -type customMarshalerParent struct { - Self customMarshaler `toml:"me"` - Friends []customMarshaler `toml:"friends"` -} - -type customMarshaler struct { - FirsName string - LastName string -} - -func (c customMarshaler) MarshalTOML() ([]byte, error) { - fullName := fmt.Sprintf("%s %s", c.FirsName, c.LastName) - return []byte(fullName), nil -} - -var customMarshalerData = customMarshaler{FirsName: "Sally", LastName: "Fields"} -var customMarshalerToml = []byte(`Sally Fields`) -var nestedCustomMarshalerData = customMarshalerParent{ - Self: customMarshaler{FirsName: "Maiku", LastName: "Suteda"}, - Friends: []customMarshaler{customMarshalerData}, -} -var nestedCustomMarshalerToml = []byte(`friends = ["Sally Fields"] -me = "Maiku Suteda" -`) - -func TestCustomMarshaler(t *testing.T) { - result, err := Marshal(customMarshalerData) - if err != nil { - t.Fatal(err) - } - expected := customMarshalerToml - if !bytes.Equal(result, expected) { - t.Errorf("Bad custom marshaler: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} - -func TestNestedCustomMarshaler(t *testing.T) { - result, err := Marshal(nestedCustomMarshalerData) - if err != nil { - t.Fatal(err) - } - expected := nestedCustomMarshalerToml - if !bytes.Equal(result, expected) { - t.Errorf("Bad nested custom marshaler: expected\n-----\n%s\n-----\ngot\n-----\n%s\n-----\n", expected, result) - } -} diff --git a/vendor/github.com/pelletier/go-toml/marshal_test.toml b/vendor/github.com/pelletier/go-toml/marshal_test.toml deleted file mode 100644 index 1c5f98e7a..000000000 --- a/vendor/github.com/pelletier/go-toml/marshal_test.toml +++ /dev/null @@ -1,38 +0,0 @@ -title = "TOML Marshal Testing" - -[basic] - bool = true - date = 1979-05-27T07:32:00Z - float = 123.4 - int = 5000 - string = "Bite me" - uint = 5001 - -[basic_lists] - bools = [true,false,true] - dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z] - floats = [12.3,45.6,78.9] - ints = [8001,8001,8002] - strings = ["One","Two","Three"] - uints = [5002,5003] - -[basic_map] - one = "one" - two = "two" - -[subdoc] - - [subdoc.first] - name = "First" - - [subdoc.second] - name = "Second" - -[[subdoclist]] - name = "List.First" - -[[subdoclist]] - name = "List.Second" - -[[subdocptrs]] - name = "Second" diff --git a/vendor/github.com/pelletier/go-toml/parser.go b/vendor/github.com/pelletier/go-toml/parser.go deleted file mode 100644 index 8ee49cb56..000000000 --- a/vendor/github.com/pelletier/go-toml/parser.go +++ /dev/null @@ -1,383 +0,0 @@ -// TOML Parser. - -package toml - -import ( - "errors" - "fmt" - "reflect" - "regexp" - "strconv" - "strings" - "time" -) - -type tomlParser struct { - flowIdx int - flow []token - tree *Tree - currentTable []string - seenTableKeys []string -} - -type tomlParserStateFn func() tomlParserStateFn - -// Formats and panics an error message based on a token -func (p *tomlParser) raiseError(tok *token, msg string, args ...interface{}) { - panic(tok.Position.String() + ": " + fmt.Sprintf(msg, args...)) -} - -func (p *tomlParser) run() { - for state := p.parseStart; state != nil; { - state = state() - } -} - -func (p *tomlParser) peek() *token { - if p.flowIdx >= len(p.flow) { - return nil - } - return &p.flow[p.flowIdx] -} - -func (p *tomlParser) assume(typ tokenType) { - tok := p.getToken() - if tok == nil { - p.raiseError(tok, "was expecting token %s, but token stream is empty", tok) - } - if tok.typ != typ { - p.raiseError(tok, "was expecting token %s, but got %s instead", typ, tok) - } -} - -func (p *tomlParser) getToken() *token { - tok := p.peek() - if tok == nil { - return nil - } - p.flowIdx++ - return tok -} - -func (p *tomlParser) parseStart() tomlParserStateFn { - tok := p.peek() - - // end of stream, parsing is finished - if tok == nil { - return nil - } - - switch tok.typ { - case tokenDoubleLeftBracket: - return p.parseGroupArray - case tokenLeftBracket: - return p.parseGroup - case tokenKey: - return p.parseAssign - case tokenEOF: - return nil - default: - p.raiseError(tok, "unexpected token") - } - return nil -} - -func (p *tomlParser) parseGroupArray() tomlParserStateFn { - startToken := p.getToken() // discard the [[ - key := p.getToken() - if key.typ != tokenKeyGroupArray { - p.raiseError(key, "unexpected token %s, was expecting a table array key", key) - } - - // get or create table array element at the indicated part in the path - keys, err := parseKey(key.val) - if err != nil { - p.raiseError(key, "invalid table array key: %s", err) - } - p.tree.createSubTree(keys[:len(keys)-1], startToken.Position) // create parent entries - destTree := p.tree.GetPath(keys) - var array []*Tree - if destTree == nil { - array = make([]*Tree, 0) - } else if target, ok := destTree.([]*Tree); ok && target != nil { - array = destTree.([]*Tree) - } else { - p.raiseError(key, "key %s is already assigned and not of type table array", key) - } - p.currentTable = keys - - // add a new tree to the end of the table array - newTree := newTree() - newTree.position = startToken.Position - array = append(array, newTree) - p.tree.SetPath(p.currentTable, array) - - // remove all keys that were children of this table array - prefix := key.val + "." - found := false - for ii := 0; ii < len(p.seenTableKeys); { - tableKey := p.seenTableKeys[ii] - if strings.HasPrefix(tableKey, prefix) { - p.seenTableKeys = append(p.seenTableKeys[:ii], p.seenTableKeys[ii+1:]...) - } else { - found = (tableKey == key.val) - ii++ - } - } - - // keep this key name from use by other kinds of assignments - if !found { - p.seenTableKeys = append(p.seenTableKeys, key.val) - } - - // move to next parser state - p.assume(tokenDoubleRightBracket) - return p.parseStart -} - -func (p *tomlParser) parseGroup() tomlParserStateFn { - startToken := p.getToken() // discard the [ - key := p.getToken() - if key.typ != tokenKeyGroup { - p.raiseError(key, "unexpected token %s, was expecting a table key", key) - } - for _, item := range p.seenTableKeys { - if item == key.val { - p.raiseError(key, "duplicated tables") - } - } - - p.seenTableKeys = append(p.seenTableKeys, key.val) - keys, err := parseKey(key.val) - if err != nil { - p.raiseError(key, "invalid table array key: %s", err) - } - if err := p.tree.createSubTree(keys, startToken.Position); err != nil { - p.raiseError(key, "%s", err) - } - p.assume(tokenRightBracket) - p.currentTable = keys - return p.parseStart -} - -func (p *tomlParser) parseAssign() tomlParserStateFn { - key := p.getToken() - p.assume(tokenEqual) - - value := p.parseRvalue() - var tableKey []string - if len(p.currentTable) > 0 { - tableKey = p.currentTable - } else { - tableKey = []string{} - } - - // find the table to assign, looking out for arrays of tables - var targetNode *Tree - switch node := p.tree.GetPath(tableKey).(type) { - case []*Tree: - targetNode = node[len(node)-1] - case *Tree: - targetNode = node - default: - p.raiseError(key, "Unknown table type for path: %s", - strings.Join(tableKey, ".")) - } - - // assign value to the found table - keyVals, err := parseKey(key.val) - if err != nil { - p.raiseError(key, "%s", err) - } - if len(keyVals) != 1 { - p.raiseError(key, "Invalid key") - } - keyVal := keyVals[0] - localKey := []string{keyVal} - finalKey := append(tableKey, keyVal) - if targetNode.GetPath(localKey) != nil { - p.raiseError(key, "The following key was defined twice: %s", - strings.Join(finalKey, ".")) - } - var toInsert interface{} - - switch value.(type) { - case *Tree, []*Tree: - toInsert = value - default: - toInsert = &tomlValue{value, key.Position} - } - targetNode.values[keyVal] = toInsert - return p.parseStart -} - -var numberUnderscoreInvalidRegexp *regexp.Regexp - -func cleanupNumberToken(value string) (string, error) { - if numberUnderscoreInvalidRegexp.MatchString(value) { - return "", errors.New("invalid use of _ in number") - } - cleanedVal := strings.Replace(value, "_", "", -1) - return cleanedVal, nil -} - -func (p *tomlParser) parseRvalue() interface{} { - tok := p.getToken() - if tok == nil || tok.typ == tokenEOF { - p.raiseError(tok, "expecting a value") - } - - switch tok.typ { - case tokenString: - return tok.val - case tokenTrue: - return true - case tokenFalse: - return false - case tokenInteger: - cleanedVal, err := cleanupNumberToken(tok.val) - if err != nil { - p.raiseError(tok, "%s", err) - } - val, err := strconv.ParseInt(cleanedVal, 10, 64) - if err != nil { - p.raiseError(tok, "%s", err) - } - return val - case tokenFloat: - cleanedVal, err := cleanupNumberToken(tok.val) - if err != nil { - p.raiseError(tok, "%s", err) - } - val, err := strconv.ParseFloat(cleanedVal, 64) - if err != nil { - p.raiseError(tok, "%s", err) - } - return val - case tokenDate: - val, err := time.ParseInLocation(time.RFC3339Nano, tok.val, time.UTC) - if err != nil { - p.raiseError(tok, "%s", err) - } - return val - case tokenLeftBracket: - return p.parseArray() - case tokenLeftCurlyBrace: - return p.parseInlineTable() - case tokenEqual: - p.raiseError(tok, "cannot have multiple equals for the same key") - case tokenError: - p.raiseError(tok, "%s", tok) - } - - p.raiseError(tok, "never reached") - - return nil -} - -func tokenIsComma(t *token) bool { - return t != nil && t.typ == tokenComma -} - -func (p *tomlParser) parseInlineTable() *Tree { - tree := newTree() - var previous *token -Loop: - for { - follow := p.peek() - if follow == nil || follow.typ == tokenEOF { - p.raiseError(follow, "unterminated inline table") - } - switch follow.typ { - case tokenRightCurlyBrace: - p.getToken() - break Loop - case tokenKey: - if !tokenIsComma(previous) && previous != nil { - p.raiseError(follow, "comma expected between fields in inline table") - } - key := p.getToken() - p.assume(tokenEqual) - value := p.parseRvalue() - tree.Set(key.val, value) - case tokenComma: - if previous == nil { - p.raiseError(follow, "inline table cannot start with a comma") - } - if tokenIsComma(previous) { - p.raiseError(follow, "need field between two commas in inline table") - } - p.getToken() - default: - p.raiseError(follow, "unexpected token type in inline table: %s", follow.typ.String()) - } - previous = follow - } - if tokenIsComma(previous) { - p.raiseError(previous, "trailing comma at the end of inline table") - } - return tree -} - -func (p *tomlParser) parseArray() interface{} { - var array []interface{} - arrayType := reflect.TypeOf(nil) - for { - follow := p.peek() - if follow == nil || follow.typ == tokenEOF { - p.raiseError(follow, "unterminated array") - } - if follow.typ == tokenRightBracket { - p.getToken() - break - } - val := p.parseRvalue() - if arrayType == nil { - arrayType = reflect.TypeOf(val) - } - if reflect.TypeOf(val) != arrayType { - p.raiseError(follow, "mixed types in array") - } - array = append(array, val) - follow = p.peek() - if follow == nil || follow.typ == tokenEOF { - p.raiseError(follow, "unterminated array") - } - if follow.typ != tokenRightBracket && follow.typ != tokenComma { - p.raiseError(follow, "missing comma") - } - if follow.typ == tokenComma { - p.getToken() - } - } - // An array of Trees is actually an array of inline - // tables, which is a shorthand for a table array. If the - // array was not converted from []interface{} to []*Tree, - // the two notations would not be equivalent. - if arrayType == reflect.TypeOf(newTree()) { - tomlArray := make([]*Tree, len(array)) - for i, v := range array { - tomlArray[i] = v.(*Tree) - } - return tomlArray - } - return array -} - -func parseToml(flow []token) *Tree { - result := newTree() - result.position = Position{1, 1} - parser := &tomlParser{ - flowIdx: 0, - flow: flow, - tree: result, - currentTable: make([]string, 0), - seenTableKeys: make([]string, 0), - } - parser.run() - return result -} - -func init() { - numberUnderscoreInvalidRegexp = regexp.MustCompile(`([^\d]_|_[^\d]|_$|^_)`) -} diff --git a/vendor/github.com/pelletier/go-toml/parser_test.go b/vendor/github.com/pelletier/go-toml/parser_test.go deleted file mode 100644 index 508cb65f0..000000000 --- a/vendor/github.com/pelletier/go-toml/parser_test.go +++ /dev/null @@ -1,785 +0,0 @@ -package toml - -import ( - "fmt" - "reflect" - "testing" - "time" - - "github.com/davecgh/go-spew/spew" -) - -func assertSubTree(t *testing.T, path []string, tree *Tree, err error, ref map[string]interface{}) { - if err != nil { - t.Error("Non-nil error:", err.Error()) - return - } - for k, v := range ref { - nextPath := append(path, k) - t.Log("asserting path", nextPath) - // NOTE: directly access key instead of resolve by path - // NOTE: see TestSpecialKV - switch node := tree.GetPath([]string{k}).(type) { - case []*Tree: - t.Log("\tcomparing key", nextPath, "by array iteration") - for idx, item := range node { - assertSubTree(t, nextPath, item, err, v.([]map[string]interface{})[idx]) - } - case *Tree: - t.Log("\tcomparing key", nextPath, "by subtree assestion") - assertSubTree(t, nextPath, node, err, v.(map[string]interface{})) - default: - t.Log("\tcomparing key", nextPath, "by string representation because it's of type", reflect.TypeOf(node)) - if fmt.Sprintf("%v", node) != fmt.Sprintf("%v", v) { - t.Errorf("was expecting %v at %v but got %v", v, k, node) - } - } - } -} - -func assertTree(t *testing.T, tree *Tree, err error, ref map[string]interface{}) { - t.Log("Asserting tree:\n", spew.Sdump(tree)) - assertSubTree(t, []string{}, tree, err, ref) - t.Log("Finished tree assertion.") -} - -func TestCreateSubTree(t *testing.T) { - tree := newTree() - tree.createSubTree([]string{"a", "b", "c"}, Position{}) - tree.Set("a.b.c", 42) - if tree.Get("a.b.c") != 42 { - t.Fail() - } -} - -func TestSimpleKV(t *testing.T) { - tree, err := Load("a = 42") - assertTree(t, tree, err, map[string]interface{}{ - "a": int64(42), - }) - - tree, _ = Load("a = 42\nb = 21") - assertTree(t, tree, err, map[string]interface{}{ - "a": int64(42), - "b": int64(21), - }) -} - -func TestNumberInKey(t *testing.T) { - tree, err := Load("hello2 = 42") - assertTree(t, tree, err, map[string]interface{}{ - "hello2": int64(42), - }) -} - -func TestSimpleNumbers(t *testing.T) { - tree, err := Load("a = +42\nb = -21\nc = +4.2\nd = -2.1") - assertTree(t, tree, err, map[string]interface{}{ - "a": int64(42), - "b": int64(-21), - "c": float64(4.2), - "d": float64(-2.1), - }) -} - -func TestNumbersWithUnderscores(t *testing.T) { - tree, err := Load("a = 1_000") - assertTree(t, tree, err, map[string]interface{}{ - "a": int64(1000), - }) - - tree, err = Load("a = 5_349_221") - assertTree(t, tree, err, map[string]interface{}{ - "a": int64(5349221), - }) - - tree, err = Load("a = 1_2_3_4_5") - assertTree(t, tree, err, map[string]interface{}{ - "a": int64(12345), - }) - - tree, err = Load("flt8 = 9_224_617.445_991_228_313") - assertTree(t, tree, err, map[string]interface{}{ - "flt8": float64(9224617.445991228313), - }) - - tree, err = Load("flt9 = 1e1_00") - assertTree(t, tree, err, map[string]interface{}{ - "flt9": float64(1e100), - }) -} - -func TestFloatsWithExponents(t *testing.T) { - tree, err := Load("a = 5e+22\nb = 5E+22\nc = -5e+22\nd = -5e-22\ne = 6.626e-34") - assertTree(t, tree, err, map[string]interface{}{ - "a": float64(5e+22), - "b": float64(5E+22), - "c": float64(-5e+22), - "d": float64(-5e-22), - "e": float64(6.626e-34), - }) -} - -func TestSimpleDate(t *testing.T) { - tree, err := Load("a = 1979-05-27T07:32:00Z") - assertTree(t, tree, err, map[string]interface{}{ - "a": time.Date(1979, time.May, 27, 7, 32, 0, 0, time.UTC), - }) -} - -func TestDateOffset(t *testing.T) { - tree, err := Load("a = 1979-05-27T00:32:00-07:00") - assertTree(t, tree, err, map[string]interface{}{ - "a": time.Date(1979, time.May, 27, 0, 32, 0, 0, time.FixedZone("", -7*60*60)), - }) -} - -func TestDateNano(t *testing.T) { - tree, err := Load("a = 1979-05-27T00:32:00.999999999-07:00") - assertTree(t, tree, err, map[string]interface{}{ - "a": time.Date(1979, time.May, 27, 0, 32, 0, 999999999, time.FixedZone("", -7*60*60)), - }) -} - -func TestSimpleString(t *testing.T) { - tree, err := Load("a = \"hello world\"") - assertTree(t, tree, err, map[string]interface{}{ - "a": "hello world", - }) -} - -func TestSpaceKey(t *testing.T) { - tree, err := Load("\"a b\" = \"hello world\"") - assertTree(t, tree, err, map[string]interface{}{ - "a b": "hello world", - }) -} - -func TestStringEscapables(t *testing.T) { - tree, err := Load("a = \"a \\n b\"") - assertTree(t, tree, err, map[string]interface{}{ - "a": "a \n b", - }) - - tree, err = Load("a = \"a \\t b\"") - assertTree(t, tree, err, map[string]interface{}{ - "a": "a \t b", - }) - - tree, err = Load("a = \"a \\r b\"") - assertTree(t, tree, err, map[string]interface{}{ - "a": "a \r b", - }) - - tree, err = Load("a = \"a \\\\ b\"") - assertTree(t, tree, err, map[string]interface{}{ - "a": "a \\ b", - }) -} - -func TestEmptyQuotedString(t *testing.T) { - tree, err := Load(`[""] -"" = 1`) - assertTree(t, tree, err, map[string]interface{}{ - "": map[string]interface{}{ - "": int64(1), - }, - }) -} - -func TestBools(t *testing.T) { - tree, err := Load("a = true\nb = false") - assertTree(t, tree, err, map[string]interface{}{ - "a": true, - "b": false, - }) -} - -func TestNestedKeys(t *testing.T) { - tree, err := Load("[a.b.c]\nd = 42") - assertTree(t, tree, err, map[string]interface{}{ - "a": map[string]interface{}{ - "b": map[string]interface{}{ - "c": map[string]interface{}{ - "d": int64(42), - }, - }, - }, - }) -} - -func TestNestedQuotedUnicodeKeys(t *testing.T) { - tree, err := Load("[ j . \"ʞ\" . l ]\nd = 42") - assertTree(t, tree, err, map[string]interface{}{ - "j": map[string]interface{}{ - "ʞ": map[string]interface{}{ - "l": map[string]interface{}{ - "d": int64(42), - }, - }, - }, - }) - - tree, err = Load("[ g . h . i ]\nd = 42") - assertTree(t, tree, err, map[string]interface{}{ - "g": map[string]interface{}{ - "h": map[string]interface{}{ - "i": map[string]interface{}{ - "d": int64(42), - }, - }, - }, - }) - - tree, err = Load("[ d.e.f ]\nk = 42") - assertTree(t, tree, err, map[string]interface{}{ - "d": map[string]interface{}{ - "e": map[string]interface{}{ - "f": map[string]interface{}{ - "k": int64(42), - }, - }, - }, - }) -} - -func TestArrayOne(t *testing.T) { - tree, err := Load("a = [1]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(1)}, - }) -} - -func TestArrayZero(t *testing.T) { - tree, err := Load("a = []") - assertTree(t, tree, err, map[string]interface{}{ - "a": []interface{}{}, - }) -} - -func TestArraySimple(t *testing.T) { - tree, err := Load("a = [42, 21, 10]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(42), int64(21), int64(10)}, - }) - - tree, _ = Load("a = [42, 21, 10,]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(42), int64(21), int64(10)}, - }) -} - -func TestArrayMultiline(t *testing.T) { - tree, err := Load("a = [42,\n21, 10,]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(42), int64(21), int64(10)}, - }) -} - -func TestArrayNested(t *testing.T) { - tree, err := Load("a = [[42, 21], [10]]") - assertTree(t, tree, err, map[string]interface{}{ - "a": [][]int64{{int64(42), int64(21)}, {int64(10)}}, - }) -} - -func TestNestedArrayComment(t *testing.T) { - tree, err := Load(` -someArray = [ -# does not work -["entry1"] -]`) - assertTree(t, tree, err, map[string]interface{}{ - "someArray": [][]string{{"entry1"}}, - }) -} - -func TestNestedEmptyArrays(t *testing.T) { - tree, err := Load("a = [[[]]]") - assertTree(t, tree, err, map[string]interface{}{ - "a": [][][]interface{}{{{}}}, - }) -} - -func TestArrayMixedTypes(t *testing.T) { - _, err := Load("a = [42, 16.0]") - if err.Error() != "(1, 10): mixed types in array" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a = [42, \"hello\"]") - if err.Error() != "(1, 11): mixed types in array" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestArrayNestedStrings(t *testing.T) { - tree, err := Load("data = [ [\"gamma\", \"delta\"], [\"Foo\"] ]") - assertTree(t, tree, err, map[string]interface{}{ - "data": [][]string{{"gamma", "delta"}, {"Foo"}}, - }) -} - -func TestParseUnknownRvalue(t *testing.T) { - _, err := Load("a = !bssss") - if err == nil { - t.Error("Expecting a parse error") - } - - _, err = Load("a = /b") - if err == nil { - t.Error("Expecting a parse error") - } -} - -func TestMissingValue(t *testing.T) { - _, err := Load("a = ") - if err.Error() != "(1, 5): expecting a value" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestUnterminatedArray(t *testing.T) { - _, err := Load("a = [1,") - if err.Error() != "(1, 8): unterminated array" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a = [1") - if err.Error() != "(1, 7): unterminated array" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a = [1 2") - if err.Error() != "(1, 8): missing comma" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestNewlinesInArrays(t *testing.T) { - tree, err := Load("a = [1,\n2,\n3]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(1), int64(2), int64(3)}, - }) -} - -func TestArrayWithExtraComma(t *testing.T) { - tree, err := Load("a = [1,\n2,\n3,\n]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(1), int64(2), int64(3)}, - }) -} - -func TestArrayWithExtraCommaComment(t *testing.T) { - tree, err := Load("a = [1, # wow\n2, # such items\n3, # so array\n]") - assertTree(t, tree, err, map[string]interface{}{ - "a": []int64{int64(1), int64(2), int64(3)}, - }) -} - -func TestSimpleInlineGroup(t *testing.T) { - tree, err := Load("key = {a = 42}") - assertTree(t, tree, err, map[string]interface{}{ - "key": map[string]interface{}{ - "a": int64(42), - }, - }) -} - -func TestDoubleInlineGroup(t *testing.T) { - tree, err := Load("key = {a = 42, b = \"foo\"}") - assertTree(t, tree, err, map[string]interface{}{ - "key": map[string]interface{}{ - "a": int64(42), - "b": "foo", - }, - }) -} - -func TestExampleInlineGroup(t *testing.T) { - tree, err := Load(`name = { first = "Tom", last = "Preston-Werner" } -point = { x = 1, y = 2 }`) - assertTree(t, tree, err, map[string]interface{}{ - "name": map[string]interface{}{ - "first": "Tom", - "last": "Preston-Werner", - }, - "point": map[string]interface{}{ - "x": int64(1), - "y": int64(2), - }, - }) -} - -func TestExampleInlineGroupInArray(t *testing.T) { - tree, err := Load(`points = [{ x = 1, y = 2 }]`) - assertTree(t, tree, err, map[string]interface{}{ - "points": []map[string]interface{}{ - { - "x": int64(1), - "y": int64(2), - }, - }, - }) -} - -func TestInlineTableUnterminated(t *testing.T) { - _, err := Load("foo = {") - if err.Error() != "(1, 8): unterminated inline table" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestInlineTableCommaExpected(t *testing.T) { - _, err := Load("foo = {hello = 53 test = foo}") - if err.Error() != "(1, 19): comma expected between fields in inline table" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestInlineTableCommaStart(t *testing.T) { - _, err := Load("foo = {, hello = 53}") - if err.Error() != "(1, 8): inline table cannot start with a comma" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestInlineTableDoubleComma(t *testing.T) { - _, err := Load("foo = {hello = 53,, foo = 17}") - if err.Error() != "(1, 19): need field between two commas in inline table" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestDuplicateGroups(t *testing.T) { - _, err := Load("[foo]\na=2\n[foo]b=3") - if err.Error() != "(3, 2): duplicated tables" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestDuplicateKeys(t *testing.T) { - _, err := Load("foo = 2\nfoo = 3") - if err.Error() != "(2, 1): The following key was defined twice: foo" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestEmptyIntermediateTable(t *testing.T) { - _, err := Load("[foo..bar]") - if err.Error() != "(1, 2): invalid table array key: empty table key" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestImplicitDeclarationBefore(t *testing.T) { - tree, err := Load("[a.b.c]\nanswer = 42\n[a]\nbetter = 43") - assertTree(t, tree, err, map[string]interface{}{ - "a": map[string]interface{}{ - "b": map[string]interface{}{ - "c": map[string]interface{}{ - "answer": int64(42), - }, - }, - "better": int64(43), - }, - }) -} - -func TestFloatsWithoutLeadingZeros(t *testing.T) { - _, err := Load("a = .42") - if err.Error() != "(1, 5): cannot start float with a dot" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a = -.42") - if err.Error() != "(1, 5): cannot start float with a dot" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestMissingFile(t *testing.T) { - _, err := LoadFile("foo.toml") - if err.Error() != "open foo.toml: no such file or directory" && - err.Error() != "open foo.toml: The system cannot find the file specified." { - t.Error("Bad error message:", err.Error()) - } -} - -func TestParseFile(t *testing.T) { - tree, err := LoadFile("example.toml") - - assertTree(t, tree, err, map[string]interface{}{ - "title": "TOML Example", - "owner": map[string]interface{}{ - "name": "Tom Preston-Werner", - "organization": "GitHub", - "bio": "GitHub Cofounder & CEO\nLikes tater tots and beer.", - "dob": time.Date(1979, time.May, 27, 7, 32, 0, 0, time.UTC), - }, - "database": map[string]interface{}{ - "server": "192.168.1.1", - "ports": []int64{8001, 8001, 8002}, - "connection_max": 5000, - "enabled": true, - }, - "servers": map[string]interface{}{ - "alpha": map[string]interface{}{ - "ip": "10.0.0.1", - "dc": "eqdc10", - }, - "beta": map[string]interface{}{ - "ip": "10.0.0.2", - "dc": "eqdc10", - }, - }, - "clients": map[string]interface{}{ - "data": []interface{}{ - []string{"gamma", "delta"}, - []int64{1, 2}, - }, - }, - }) -} - -func TestParseFileCRLF(t *testing.T) { - tree, err := LoadFile("example-crlf.toml") - - assertTree(t, tree, err, map[string]interface{}{ - "title": "TOML Example", - "owner": map[string]interface{}{ - "name": "Tom Preston-Werner", - "organization": "GitHub", - "bio": "GitHub Cofounder & CEO\nLikes tater tots and beer.", - "dob": time.Date(1979, time.May, 27, 7, 32, 0, 0, time.UTC), - }, - "database": map[string]interface{}{ - "server": "192.168.1.1", - "ports": []int64{8001, 8001, 8002}, - "connection_max": 5000, - "enabled": true, - }, - "servers": map[string]interface{}{ - "alpha": map[string]interface{}{ - "ip": "10.0.0.1", - "dc": "eqdc10", - }, - "beta": map[string]interface{}{ - "ip": "10.0.0.2", - "dc": "eqdc10", - }, - }, - "clients": map[string]interface{}{ - "data": []interface{}{ - []string{"gamma", "delta"}, - []int64{1, 2}, - }, - }, - }) -} - -func TestParseKeyGroupArray(t *testing.T) { - tree, err := Load("[[foo.bar]] a = 42\n[[foo.bar]] a = 69") - assertTree(t, tree, err, map[string]interface{}{ - "foo": map[string]interface{}{ - "bar": []map[string]interface{}{ - {"a": int64(42)}, - {"a": int64(69)}, - }, - }, - }) -} - -func TestParseKeyGroupArrayUnfinished(t *testing.T) { - _, err := Load("[[foo.bar]\na = 42") - if err.Error() != "(1, 10): was expecting token [[, but got unclosed table array key instead" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("[[foo.[bar]\na = 42") - if err.Error() != "(1, 3): unexpected token table array key cannot contain ']', was expecting a table array key" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestParseKeyGroupArrayQueryExample(t *testing.T) { - tree, err := Load(` - [[book]] - title = "The Stand" - author = "Stephen King" - [[book]] - title = "For Whom the Bell Tolls" - author = "Ernest Hemmingway" - [[book]] - title = "Neuromancer" - author = "William Gibson" - `) - - assertTree(t, tree, err, map[string]interface{}{ - "book": []map[string]interface{}{ - {"title": "The Stand", "author": "Stephen King"}, - {"title": "For Whom the Bell Tolls", "author": "Ernest Hemmingway"}, - {"title": "Neuromancer", "author": "William Gibson"}, - }, - }) -} - -func TestParseKeyGroupArraySpec(t *testing.T) { - tree, err := Load("[[fruit]]\n name=\"apple\"\n [fruit.physical]\n color=\"red\"\n shape=\"round\"\n [[fruit]]\n name=\"banana\"") - assertTree(t, tree, err, map[string]interface{}{ - "fruit": []map[string]interface{}{ - {"name": "apple", "physical": map[string]interface{}{"color": "red", "shape": "round"}}, - {"name": "banana"}, - }, - }) -} - -func TestTomlValueStringRepresentation(t *testing.T) { - for idx, item := range []struct { - Value interface{} - Expect string - }{ - {int64(12345), "12345"}, - {uint64(50), "50"}, - {float64(123.45), "123.45"}, - {bool(true), "true"}, - {"hello world", "\"hello world\""}, - {"\b\t\n\f\r\"\\", "\"\\b\\t\\n\\f\\r\\\"\\\\\""}, - {"\x05", "\"\\u0005\""}, - {time.Date(1979, time.May, 27, 7, 32, 0, 0, time.UTC), - "1979-05-27T07:32:00Z"}, - {[]interface{}{"gamma", "delta"}, - "[\"gamma\",\"delta\"]"}, - {nil, ""}, - } { - result, err := tomlValueStringRepresentation(item.Value) - if err != nil { - t.Errorf("Test %d - unexpected error: %s", idx, err) - } - if result != item.Expect { - t.Errorf("Test %d - got '%s', expected '%s'", idx, result, item.Expect) - } - } -} - -func TestToStringMapStringString(t *testing.T) { - tree, err := TreeFromMap(map[string]interface{}{"m": map[string]interface{}{"v": "abc"}}) - if err != nil { - t.Fatalf("unexpected error: %s", err) - } - want := "\n[m]\n v = \"abc\"\n" - got := tree.String() - - if got != want { - t.Errorf("want:\n%q\ngot:\n%q", want, got) - } -} - -func assertPosition(t *testing.T, text string, ref map[string]Position) { - tree, err := Load(text) - if err != nil { - t.Errorf("Error loading document text: `%v`", text) - t.Errorf("Error: %v", err) - } - for path, pos := range ref { - testPos := tree.GetPosition(path) - if testPos.Invalid() { - t.Errorf("Failed to query tree path or path has invalid position: %s", path) - } else if pos != testPos { - t.Errorf("Expected position %v, got %v instead", pos, testPos) - } - } -} - -func TestDocumentPositions(t *testing.T) { - assertPosition(t, - "[foo]\nbar=42\nbaz=69", - map[string]Position{ - "": {1, 1}, - "foo": {1, 1}, - "foo.bar": {2, 1}, - "foo.baz": {3, 1}, - }) -} - -func TestDocumentPositionsWithSpaces(t *testing.T) { - assertPosition(t, - " [foo]\n bar=42\n baz=69", - map[string]Position{ - "": {1, 1}, - "foo": {1, 3}, - "foo.bar": {2, 3}, - "foo.baz": {3, 3}, - }) -} - -func TestDocumentPositionsWithGroupArray(t *testing.T) { - assertPosition(t, - "[[foo]]\nbar=42\nbaz=69", - map[string]Position{ - "": {1, 1}, - "foo": {1, 1}, - "foo.bar": {2, 1}, - "foo.baz": {3, 1}, - }) -} - -func TestNestedTreePosition(t *testing.T) { - assertPosition(t, - "[foo.bar]\na=42\nb=69", - map[string]Position{ - "": {1, 1}, - "foo": {1, 1}, - "foo.bar": {1, 1}, - "foo.bar.a": {2, 1}, - "foo.bar.b": {3, 1}, - }) -} - -func TestInvalidGroupArray(t *testing.T) { - _, err := Load("[table#key]\nanswer = 42") - if err == nil { - t.Error("Should error") - } - - _, err = Load("[foo.[bar]\na = 42") - if err.Error() != "(1, 2): unexpected token table key cannot contain ']', was expecting a table key" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestDoubleEqual(t *testing.T) { - _, err := Load("foo= = 2") - if err.Error() != "(1, 6): cannot have multiple equals for the same key" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestGroupArrayReassign(t *testing.T) { - _, err := Load("[hello]\n[[hello]]") - if err.Error() != "(2, 3): key \"hello\" is already assigned and not of type table array" { - t.Error("Bad error message:", err.Error()) - } -} - -func TestInvalidFloatParsing(t *testing.T) { - _, err := Load("a=1e_2") - if err.Error() != "(1, 3): invalid use of _ in number" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a=1e2_") - if err.Error() != "(1, 3): invalid use of _ in number" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a=1__2") - if err.Error() != "(1, 3): invalid use of _ in number" { - t.Error("Bad error message:", err.Error()) - } - - _, err = Load("a=_1_2") - if err.Error() != "(1, 3): cannot start number with underscore" { - t.Error("Bad error message:", err.Error()) - } -} diff --git a/vendor/github.com/pelletier/go-toml/position.go b/vendor/github.com/pelletier/go-toml/position.go deleted file mode 100644 index c17bff87b..000000000 --- a/vendor/github.com/pelletier/go-toml/position.go +++ /dev/null @@ -1,29 +0,0 @@ -// Position support for go-toml - -package toml - -import ( - "fmt" -) - -// Position of a document element within a TOML document. -// -// Line and Col are both 1-indexed positions for the element's line number and -// column number, respectively. Values of zero or less will cause Invalid(), -// to return true. -type Position struct { - Line int // line within the document - Col int // column within the line -} - -// String representation of the position. -// Displays 1-indexed line and column numbers. -func (p Position) String() string { - return fmt.Sprintf("(%d, %d)", p.Line, p.Col) -} - -// Invalid returns whether or not the position is valid (i.e. with negative or -// null values) -func (p Position) Invalid() bool { - return p.Line <= 0 || p.Col <= 0 -} diff --git a/vendor/github.com/pelletier/go-toml/position_test.go b/vendor/github.com/pelletier/go-toml/position_test.go deleted file mode 100644 index 63ad1afc8..000000000 --- a/vendor/github.com/pelletier/go-toml/position_test.go +++ /dev/null @@ -1,29 +0,0 @@ -// Testing support for go-toml - -package toml - -import ( - "testing" -) - -func TestPositionString(t *testing.T) { - p := Position{123, 456} - expected := "(123, 456)" - value := p.String() - - if value != expected { - t.Errorf("Expected %v, got %v instead", expected, value) - } -} - -func TestInvalid(t *testing.T) { - for i, v := range []Position{ - {0, 1234}, - {1234, 0}, - {0, 0}, - } { - if !v.Invalid() { - t.Errorf("Position at %v is valid: %v", i, v) - } - } -} diff --git a/vendor/github.com/pelletier/go-toml/query/doc.go b/vendor/github.com/pelletier/go-toml/query/doc.go deleted file mode 100644 index f999fc965..000000000 --- a/vendor/github.com/pelletier/go-toml/query/doc.go +++ /dev/null @@ -1,175 +0,0 @@ -// Package query performs JSONPath-like queries on a TOML document. -// -// The query path implementation is based loosely on the JSONPath specification: -// http://goessner.net/articles/JsonPath/. -// -// The idea behind a query path is to allow quick access to any element, or set -// of elements within TOML document, with a single expression. -// -// result, err := query.CompileAndExecute("$.foo.bar.baz", tree) -// -// This is roughly equivalent to: -// -// next := tree.Get("foo") -// if next != nil { -// next = next.Get("bar") -// if next != nil { -// next = next.Get("baz") -// } -// } -// result := next -// -// err is nil if any parsing exception occurs. -// -// If no node in the tree matches the query, result will simply contain an empty list of -// items. -// -// As illustrated above, the query path is much more efficient, especially since -// the structure of the TOML file can vary. Rather than making assumptions about -// a document's structure, a query allows the programmer to make structured -// requests into the document, and get zero or more values as a result. -// -// Query syntax -// -// The syntax of a query begins with a root token, followed by any number -// sub-expressions: -// -// $ -// Root of the TOML tree. This must always come first. -// .name -// Selects child of this node, where 'name' is a TOML key -// name. -// ['name'] -// Selects child of this node, where 'name' is a string -// containing a TOML key name. -// [index] -// Selcts child array element at 'index'. -// ..expr -// Recursively selects all children, filtered by an a union, -// index, or slice expression. -// ..* -// Recursive selection of all nodes at this point in the -// tree. -// .* -// Selects all children of the current node. -// [expr,expr] -// Union operator - a logical 'or' grouping of two or more -// sub-expressions: index, key name, or filter. -// [start:end:step] -// Slice operator - selects array elements from start to -// end-1, at the given step. All three arguments are -// optional. -// [?(filter)] -// Named filter expression - the function 'filter' is -// used to filter children at this node. -// -// Query Indexes And Slices -// -// Index expressions perform no bounds checking, and will contribute no -// values to the result set if the provided index or index range is invalid. -// Negative indexes represent values from the end of the array, counting backwards. -// -// // select the last index of the array named 'foo' -// query.CompileAndExecute("$.foo[-1]", tree) -// -// Slice expressions are supported, by using ':' to separate a start/end index pair. -// -// // select up to the first five elements in the array -// query.CompileAndExecute("$.foo[0:5]", tree) -// -// Slice expressions also allow negative indexes for the start and stop -// arguments. -// -// // select all array elements. -// query.CompileAndExecute("$.foo[0:-1]", tree) -// -// Slice expressions may have an optional stride/step parameter: -// -// // select every other element -// query.CompileAndExecute("$.foo[0:-1:2]", tree) -// -// Slice start and end parameters are also optional: -// -// // these are all equivalent and select all the values in the array -// query.CompileAndExecute("$.foo[:]", tree) -// query.CompileAndExecute("$.foo[0:]", tree) -// query.CompileAndExecute("$.foo[:-1]", tree) -// query.CompileAndExecute("$.foo[0:-1:]", tree) -// query.CompileAndExecute("$.foo[::1]", tree) -// query.CompileAndExecute("$.foo[0::1]", tree) -// query.CompileAndExecute("$.foo[:-1:1]", tree) -// query.CompileAndExecute("$.foo[0:-1:1]", tree) -// -// Query Filters -// -// Query filters are used within a Union [,] or single Filter [] expression. -// A filter only allows nodes that qualify through to the next expression, -// and/or into the result set. -// -// // returns children of foo that are permitted by the 'bar' filter. -// query.CompileAndExecute("$.foo[?(bar)]", tree) -// -// There are several filters provided with the library: -// -// tree -// Allows nodes of type Tree. -// int -// Allows nodes of type int64. -// float -// Allows nodes of type float64. -// string -// Allows nodes of type string. -// time -// Allows nodes of type time.Time. -// bool -// Allows nodes of type bool. -// -// Query Results -// -// An executed query returns a Result object. This contains the nodes -// in the TOML tree that qualify the query expression. Position information -// is also available for each value in the set. -// -// // display the results of a query -// results := query.CompileAndExecute("$.foo.bar.baz", tree) -// for idx, value := results.Values() { -// fmt.Println("%v: %v", results.Positions()[idx], value) -// } -// -// Compiled Queries -// -// Queries may be executed directly on a Tree object, or compiled ahead -// of time and executed discretely. The former is more convienent, but has the -// penalty of having to recompile the query expression each time. -// -// // basic query -// results := query.CompileAndExecute("$.foo.bar.baz", tree) -// -// // compiled query -// query, err := toml.Compile("$.foo.bar.baz") -// results := query.Execute(tree) -// -// // run the compiled query again on a different tree -// moreResults := query.Execute(anotherTree) -// -// User Defined Query Filters -// -// Filter expressions may also be user defined by using the SetFilter() -// function on the Query object. The function must return true/false, which -// signifies if the passed node is kept or discarded, respectively. -// -// // create a query that references a user-defined filter -// query, _ := query.Compile("$[?(bazOnly)]") -// -// // define the filter, and assign it to the query -// query.SetFilter("bazOnly", func(node interface{}) bool{ -// if tree, ok := node.(*Tree); ok { -// return tree.Has("baz") -// } -// return false // reject all other node types -// }) -// -// // run the query -// query.Execute(tree) -// -package query diff --git a/vendor/github.com/pelletier/go-toml/query/lexer.go b/vendor/github.com/pelletier/go-toml/query/lexer.go deleted file mode 100644 index 2dc319408..000000000 --- a/vendor/github.com/pelletier/go-toml/query/lexer.go +++ /dev/null @@ -1,357 +0,0 @@ -// TOML JSONPath lexer. -// -// Written using the principles developed by Rob Pike in -// http://www.youtube.com/watch?v=HxaD_trXwRE - -package query - -import ( - "fmt" - "github.com/pelletier/go-toml" - "strconv" - "strings" - "unicode/utf8" -) - -// Lexer state function -type queryLexStateFn func() queryLexStateFn - -// Lexer definition -type queryLexer struct { - input string - start int - pos int - width int - tokens chan token - depth int - line int - col int - stringTerm string -} - -func (l *queryLexer) run() { - for state := l.lexVoid; state != nil; { - state = state() - } - close(l.tokens) -} - -func (l *queryLexer) nextStart() { - // iterate by runes (utf8 characters) - // search for newlines and advance line/col counts - for i := l.start; i < l.pos; { - r, width := utf8.DecodeRuneInString(l.input[i:]) - if r == '\n' { - l.line++ - l.col = 1 - } else { - l.col++ - } - i += width - } - // advance start position to next token - l.start = l.pos -} - -func (l *queryLexer) emit(t tokenType) { - l.tokens <- token{ - Position: toml.Position{Line: l.line, Col: l.col}, - typ: t, - val: l.input[l.start:l.pos], - } - l.nextStart() -} - -func (l *queryLexer) emitWithValue(t tokenType, value string) { - l.tokens <- token{ - Position: toml.Position{Line: l.line, Col: l.col}, - typ: t, - val: value, - } - l.nextStart() -} - -func (l *queryLexer) next() rune { - if l.pos >= len(l.input) { - l.width = 0 - return eof - } - var r rune - r, l.width = utf8.DecodeRuneInString(l.input[l.pos:]) - l.pos += l.width - return r -} - -func (l *queryLexer) ignore() { - l.nextStart() -} - -func (l *queryLexer) backup() { - l.pos -= l.width -} - -func (l *queryLexer) errorf(format string, args ...interface{}) queryLexStateFn { - l.tokens <- token{ - Position: toml.Position{Line: l.line, Col: l.col}, - typ: tokenError, - val: fmt.Sprintf(format, args...), - } - return nil -} - -func (l *queryLexer) peek() rune { - r := l.next() - l.backup() - return r -} - -func (l *queryLexer) accept(valid string) bool { - if strings.ContainsRune(valid, l.next()) { - return true - } - l.backup() - return false -} - -func (l *queryLexer) follow(next string) bool { - return strings.HasPrefix(l.input[l.pos:], next) -} - -func (l *queryLexer) lexVoid() queryLexStateFn { - for { - next := l.peek() - switch next { - case '$': - l.pos++ - l.emit(tokenDollar) - continue - case '.': - if l.follow("..") { - l.pos += 2 - l.emit(tokenDotDot) - } else { - l.pos++ - l.emit(tokenDot) - } - continue - case '[': - l.pos++ - l.emit(tokenLeftBracket) - continue - case ']': - l.pos++ - l.emit(tokenRightBracket) - continue - case ',': - l.pos++ - l.emit(tokenComma) - continue - case '*': - l.pos++ - l.emit(tokenStar) - continue - case '(': - l.pos++ - l.emit(tokenLeftParen) - continue - case ')': - l.pos++ - l.emit(tokenRightParen) - continue - case '?': - l.pos++ - l.emit(tokenQuestion) - continue - case ':': - l.pos++ - l.emit(tokenColon) - continue - case '\'': - l.ignore() - l.stringTerm = string(next) - return l.lexString - case '"': - l.ignore() - l.stringTerm = string(next) - return l.lexString - } - - if isSpace(next) { - l.next() - l.ignore() - continue - } - - if isAlphanumeric(next) { - return l.lexKey - } - - if next == '+' || next == '-' || isDigit(next) { - return l.lexNumber - } - - if l.next() == eof { - break - } - - return l.errorf("unexpected char: '%v'", next) - } - l.emit(tokenEOF) - return nil -} - -func (l *queryLexer) lexKey() queryLexStateFn { - for { - next := l.peek() - if !isAlphanumeric(next) { - l.emit(tokenKey) - return l.lexVoid - } - - if l.next() == eof { - break - } - } - l.emit(tokenEOF) - return nil -} - -func (l *queryLexer) lexString() queryLexStateFn { - l.pos++ - l.ignore() - growingString := "" - - for { - if l.follow(l.stringTerm) { - l.emitWithValue(tokenString, growingString) - l.pos++ - l.ignore() - return l.lexVoid - } - - if l.follow("\\\"") { - l.pos++ - growingString += "\"" - } else if l.follow("\\'") { - l.pos++ - growingString += "'" - } else if l.follow("\\n") { - l.pos++ - growingString += "\n" - } else if l.follow("\\b") { - l.pos++ - growingString += "\b" - } else if l.follow("\\f") { - l.pos++ - growingString += "\f" - } else if l.follow("\\/") { - l.pos++ - growingString += "/" - } else if l.follow("\\t") { - l.pos++ - growingString += "\t" - } else if l.follow("\\r") { - l.pos++ - growingString += "\r" - } else if l.follow("\\\\") { - l.pos++ - growingString += "\\" - } else if l.follow("\\u") { - l.pos += 2 - code := "" - for i := 0; i < 4; i++ { - c := l.peek() - l.pos++ - if !isHexDigit(c) { - return l.errorf("unfinished unicode escape") - } - code = code + string(c) - } - l.pos-- - intcode, err := strconv.ParseInt(code, 16, 32) - if err != nil { - return l.errorf("invalid unicode escape: \\u" + code) - } - growingString += string(rune(intcode)) - } else if l.follow("\\U") { - l.pos += 2 - code := "" - for i := 0; i < 8; i++ { - c := l.peek() - l.pos++ - if !isHexDigit(c) { - return l.errorf("unfinished unicode escape") - } - code = code + string(c) - } - l.pos-- - intcode, err := strconv.ParseInt(code, 16, 32) - if err != nil { - return l.errorf("invalid unicode escape: \\u" + code) - } - growingString += string(rune(intcode)) - } else if l.follow("\\") { - l.pos++ - return l.errorf("invalid escape sequence: \\" + string(l.peek())) - } else { - growingString += string(l.peek()) - } - - if l.next() == eof { - break - } - } - - return l.errorf("unclosed string") -} - -func (l *queryLexer) lexNumber() queryLexStateFn { - l.ignore() - if !l.accept("+") { - l.accept("-") - } - pointSeen := false - digitSeen := false - for { - next := l.next() - if next == '.' { - if pointSeen { - return l.errorf("cannot have two dots in one float") - } - if !isDigit(l.peek()) { - return l.errorf("float cannot end with a dot") - } - pointSeen = true - } else if isDigit(next) { - digitSeen = true - } else { - l.backup() - break - } - if pointSeen && !digitSeen { - return l.errorf("cannot start float with a dot") - } - } - - if !digitSeen { - return l.errorf("no digit in that number") - } - if pointSeen { - l.emit(tokenFloat) - } else { - l.emit(tokenInteger) - } - return l.lexVoid -} - -// Entry point -func lexQuery(input string) chan token { - l := &queryLexer{ - input: input, - tokens: make(chan token), - line: 1, - col: 1, - } - go l.run() - return l.tokens -} diff --git a/vendor/github.com/pelletier/go-toml/query/lexer_test.go b/vendor/github.com/pelletier/go-toml/query/lexer_test.go deleted file mode 100644 index 8ce0501fe..000000000 --- a/vendor/github.com/pelletier/go-toml/query/lexer_test.go +++ /dev/null @@ -1,179 +0,0 @@ -package query - -import ( - "github.com/pelletier/go-toml" - "testing" -) - -func testQLFlow(t *testing.T, input string, expectedFlow []token) { - ch := lexQuery(input) - for idx, expected := range expectedFlow { - token := <-ch - if token != expected { - t.Log("While testing #", idx, ":", input) - t.Log("compared (got)", token, "to (expected)", expected) - t.Log("\tvalue:", token.val, "<->", expected.val) - t.Log("\tvalue as bytes:", []byte(token.val), "<->", []byte(expected.val)) - t.Log("\ttype:", token.typ.String(), "<->", expected.typ.String()) - t.Log("\tline:", token.Line, "<->", expected.Line) - t.Log("\tcolumn:", token.Col, "<->", expected.Col) - t.Log("compared", token, "to", expected) - t.FailNow() - } - } - - tok, ok := <-ch - if ok { - t.Log("channel is not closed!") - t.Log(len(ch)+1, "tokens remaining:") - - t.Log("token ->", tok) - for token := range ch { - t.Log("token ->", token) - } - t.FailNow() - } -} - -func TestLexSpecialChars(t *testing.T) { - testQLFlow(t, " .$[]..()?*", []token{ - {toml.Position{1, 2}, tokenDot, "."}, - {toml.Position{1, 3}, tokenDollar, "$"}, - {toml.Position{1, 4}, tokenLeftBracket, "["}, - {toml.Position{1, 5}, tokenRightBracket, "]"}, - {toml.Position{1, 6}, tokenDotDot, ".."}, - {toml.Position{1, 8}, tokenLeftParen, "("}, - {toml.Position{1, 9}, tokenRightParen, ")"}, - {toml.Position{1, 10}, tokenQuestion, "?"}, - {toml.Position{1, 11}, tokenStar, "*"}, - {toml.Position{1, 12}, tokenEOF, ""}, - }) -} - -func TestLexString(t *testing.T) { - testQLFlow(t, "'foo\n'", []token{ - {toml.Position{1, 2}, tokenString, "foo\n"}, - {toml.Position{2, 2}, tokenEOF, ""}, - }) -} - -func TestLexDoubleString(t *testing.T) { - testQLFlow(t, `"bar"`, []token{ - {toml.Position{1, 2}, tokenString, "bar"}, - {toml.Position{1, 6}, tokenEOF, ""}, - }) -} - -func TestLexStringEscapes(t *testing.T) { - testQLFlow(t, `"foo \" \' \b \f \/ \t \r \\ \u03A9 \U00012345 \n bar"`, []token{ - {toml.Position{1, 2}, tokenString, "foo \" ' \b \f / \t \r \\ \u03A9 \U00012345 \n bar"}, - {toml.Position{1, 55}, tokenEOF, ""}, - }) -} - -func TestLexStringUnfinishedUnicode4(t *testing.T) { - testQLFlow(t, `"\u000"`, []token{ - {toml.Position{1, 2}, tokenError, "unfinished unicode escape"}, - }) -} - -func TestLexStringUnfinishedUnicode8(t *testing.T) { - testQLFlow(t, `"\U0000"`, []token{ - {toml.Position{1, 2}, tokenError, "unfinished unicode escape"}, - }) -} - -func TestLexStringInvalidEscape(t *testing.T) { - testQLFlow(t, `"\x"`, []token{ - {toml.Position{1, 2}, tokenError, "invalid escape sequence: \\x"}, - }) -} - -func TestLexStringUnfinished(t *testing.T) { - testQLFlow(t, `"bar`, []token{ - {toml.Position{1, 2}, tokenError, "unclosed string"}, - }) -} - -func TestLexKey(t *testing.T) { - testQLFlow(t, "foo", []token{ - {toml.Position{1, 1}, tokenKey, "foo"}, - {toml.Position{1, 4}, tokenEOF, ""}, - }) -} - -func TestLexRecurse(t *testing.T) { - testQLFlow(t, "$..*", []token{ - {toml.Position{1, 1}, tokenDollar, "$"}, - {toml.Position{1, 2}, tokenDotDot, ".."}, - {toml.Position{1, 4}, tokenStar, "*"}, - {toml.Position{1, 5}, tokenEOF, ""}, - }) -} - -func TestLexBracketKey(t *testing.T) { - testQLFlow(t, "$[foo]", []token{ - {toml.Position{1, 1}, tokenDollar, "$"}, - {toml.Position{1, 2}, tokenLeftBracket, "["}, - {toml.Position{1, 3}, tokenKey, "foo"}, - {toml.Position{1, 6}, tokenRightBracket, "]"}, - {toml.Position{1, 7}, tokenEOF, ""}, - }) -} - -func TestLexSpace(t *testing.T) { - testQLFlow(t, "foo bar baz", []token{ - {toml.Position{1, 1}, tokenKey, "foo"}, - {toml.Position{1, 5}, tokenKey, "bar"}, - {toml.Position{1, 9}, tokenKey, "baz"}, - {toml.Position{1, 12}, tokenEOF, ""}, - }) -} - -func TestLexInteger(t *testing.T) { - testQLFlow(t, "100 +200 -300", []token{ - {toml.Position{1, 1}, tokenInteger, "100"}, - {toml.Position{1, 5}, tokenInteger, "+200"}, - {toml.Position{1, 10}, tokenInteger, "-300"}, - {toml.Position{1, 14}, tokenEOF, ""}, - }) -} - -func TestLexFloat(t *testing.T) { - testQLFlow(t, "100.0 +200.0 -300.0", []token{ - {toml.Position{1, 1}, tokenFloat, "100.0"}, - {toml.Position{1, 7}, tokenFloat, "+200.0"}, - {toml.Position{1, 14}, tokenFloat, "-300.0"}, - {toml.Position{1, 20}, tokenEOF, ""}, - }) -} - -func TestLexFloatWithMultipleDots(t *testing.T) { - testQLFlow(t, "4.2.", []token{ - {toml.Position{1, 1}, tokenError, "cannot have two dots in one float"}, - }) -} - -func TestLexFloatLeadingDot(t *testing.T) { - testQLFlow(t, "+.1", []token{ - {toml.Position{1, 1}, tokenError, "cannot start float with a dot"}, - }) -} - -func TestLexFloatWithTrailingDot(t *testing.T) { - testQLFlow(t, "42.", []token{ - {toml.Position{1, 1}, tokenError, "float cannot end with a dot"}, - }) -} - -func TestLexNumberWithoutDigit(t *testing.T) { - testQLFlow(t, "+", []token{ - {toml.Position{1, 1}, tokenError, "no digit in that number"}, - }) -} - -func TestLexUnknown(t *testing.T) { - testQLFlow(t, "^", []token{ - {toml.Position{1, 1}, tokenError, "unexpected char: '94'"}, - }) -} diff --git a/vendor/github.com/pelletier/go-toml/query/match.go b/vendor/github.com/pelletier/go-toml/query/match.go deleted file mode 100644 index d7bb15a45..000000000 --- a/vendor/github.com/pelletier/go-toml/query/match.go +++ /dev/null @@ -1,232 +0,0 @@ -package query - -import ( - "fmt" - "github.com/pelletier/go-toml" -) - -// base match -type matchBase struct { - next pathFn -} - -func (f *matchBase) setNext(next pathFn) { - f.next = next -} - -// terminating functor - gathers results -type terminatingFn struct { - // empty -} - -func newTerminatingFn() *terminatingFn { - return &terminatingFn{} -} - -func (f *terminatingFn) setNext(next pathFn) { - // do nothing -} - -func (f *terminatingFn) call(node interface{}, ctx *queryContext) { - ctx.result.appendResult(node, ctx.lastPosition) -} - -// match single key -type matchKeyFn struct { - matchBase - Name string -} - -func newMatchKeyFn(name string) *matchKeyFn { - return &matchKeyFn{Name: name} -} - -func (f *matchKeyFn) call(node interface{}, ctx *queryContext) { - if array, ok := node.([]*toml.Tree); ok { - for _, tree := range array { - item := tree.Get(f.Name) - if item != nil { - ctx.lastPosition = tree.GetPosition(f.Name) - f.next.call(item, ctx) - } - } - } else if tree, ok := node.(*toml.Tree); ok { - item := tree.Get(f.Name) - if item != nil { - ctx.lastPosition = tree.GetPosition(f.Name) - f.next.call(item, ctx) - } - } -} - -// match single index -type matchIndexFn struct { - matchBase - Idx int -} - -func newMatchIndexFn(idx int) *matchIndexFn { - return &matchIndexFn{Idx: idx} -} - -func (f *matchIndexFn) call(node interface{}, ctx *queryContext) { - if arr, ok := node.([]interface{}); ok { - if f.Idx < len(arr) && f.Idx >= 0 { - if treesArray, ok := node.([]*toml.Tree); ok { - if len(treesArray) > 0 { - ctx.lastPosition = treesArray[0].Position() - } - } - f.next.call(arr[f.Idx], ctx) - } - } -} - -// filter by slicing -type matchSliceFn struct { - matchBase - Start, End, Step int -} - -func newMatchSliceFn(start, end, step int) *matchSliceFn { - return &matchSliceFn{Start: start, End: end, Step: step} -} - -func (f *matchSliceFn) call(node interface{}, ctx *queryContext) { - if arr, ok := node.([]interface{}); ok { - // adjust indexes for negative values, reverse ordering - realStart, realEnd := f.Start, f.End - if realStart < 0 { - realStart = len(arr) + realStart - } - if realEnd < 0 { - realEnd = len(arr) + realEnd - } - if realEnd < realStart { - realEnd, realStart = realStart, realEnd // swap - } - // loop and gather - for idx := realStart; idx < realEnd; idx += f.Step { - if treesArray, ok := node.([]*toml.Tree); ok { - if len(treesArray) > 0 { - ctx.lastPosition = treesArray[0].Position() - } - } - f.next.call(arr[idx], ctx) - } - } -} - -// match anything -type matchAnyFn struct { - matchBase -} - -func newMatchAnyFn() *matchAnyFn { - return &matchAnyFn{} -} - -func (f *matchAnyFn) call(node interface{}, ctx *queryContext) { - if tree, ok := node.(*toml.Tree); ok { - for _, k := range tree.Keys() { - v := tree.Get(k) - ctx.lastPosition = tree.GetPosition(k) - f.next.call(v, ctx) - } - } -} - -// filter through union -type matchUnionFn struct { - Union []pathFn -} - -func (f *matchUnionFn) setNext(next pathFn) { - for _, fn := range f.Union { - fn.setNext(next) - } -} - -func (f *matchUnionFn) call(node interface{}, ctx *queryContext) { - for _, fn := range f.Union { - fn.call(node, ctx) - } -} - -// match every single last node in the tree -type matchRecursiveFn struct { - matchBase -} - -func newMatchRecursiveFn() *matchRecursiveFn { - return &matchRecursiveFn{} -} - -func (f *matchRecursiveFn) call(node interface{}, ctx *queryContext) { - originalPosition := ctx.lastPosition - if tree, ok := node.(*toml.Tree); ok { - var visit func(tree *toml.Tree) - visit = func(tree *toml.Tree) { - for _, k := range tree.Keys() { - v := tree.Get(k) - ctx.lastPosition = tree.GetPosition(k) - f.next.call(v, ctx) - switch node := v.(type) { - case *toml.Tree: - visit(node) - case []*toml.Tree: - for _, subtree := range node { - visit(subtree) - } - } - } - } - ctx.lastPosition = originalPosition - f.next.call(tree, ctx) - visit(tree) - } -} - -// match based on an externally provided functional filter -type matchFilterFn struct { - matchBase - Pos toml.Position - Name string -} - -func newMatchFilterFn(name string, pos toml.Position) *matchFilterFn { - return &matchFilterFn{Name: name, Pos: pos} -} - -func (f *matchFilterFn) call(node interface{}, ctx *queryContext) { - fn, ok := (*ctx.filters)[f.Name] - if !ok { - panic(fmt.Sprintf("%s: query context does not have filter '%s'", - f.Pos.String(), f.Name)) - } - switch castNode := node.(type) { - case *toml.Tree: - for _, k := range castNode.Keys() { - v := castNode.Get(k) - if fn(v) { - ctx.lastPosition = castNode.GetPosition(k) - f.next.call(v, ctx) - } - } - case []*toml.Tree: - for _, v := range castNode { - if fn(v) { - if len(castNode) > 0 { - ctx.lastPosition = castNode[0].Position() - } - f.next.call(v, ctx) - } - } - case []interface{}: - for _, v := range castNode { - if fn(v) { - f.next.call(v, ctx) - } - } - } -} diff --git a/vendor/github.com/pelletier/go-toml/query/match_test.go b/vendor/github.com/pelletier/go-toml/query/match_test.go deleted file mode 100644 index 429b8f6b9..000000000 --- a/vendor/github.com/pelletier/go-toml/query/match_test.go +++ /dev/null @@ -1,202 +0,0 @@ -package query - -import ( - "fmt" - "github.com/pelletier/go-toml" - "testing" -) - -// dump path tree to a string -func pathString(root pathFn) string { - result := fmt.Sprintf("%T:", root) - switch fn := root.(type) { - case *terminatingFn: - result += "{}" - case *matchKeyFn: - result += fmt.Sprintf("{%s}", fn.Name) - result += pathString(fn.next) - case *matchIndexFn: - result += fmt.Sprintf("{%d}", fn.Idx) - result += pathString(fn.next) - case *matchSliceFn: - result += fmt.Sprintf("{%d:%d:%d}", - fn.Start, fn.End, fn.Step) - result += pathString(fn.next) - case *matchAnyFn: - result += "{}" - result += pathString(fn.next) - case *matchUnionFn: - result += "{[" - for _, v := range fn.Union { - result += pathString(v) + ", " - } - result += "]}" - case *matchRecursiveFn: - result += "{}" - result += pathString(fn.next) - case *matchFilterFn: - result += fmt.Sprintf("{%s}", fn.Name) - result += pathString(fn.next) - } - return result -} - -func assertPathMatch(t *testing.T, path, ref *Query) bool { - pathStr := pathString(path.root) - refStr := pathString(ref.root) - if pathStr != refStr { - t.Errorf("paths do not match") - t.Log("test:", pathStr) - t.Log("ref: ", refStr) - return false - } - return true -} - -func assertPath(t *testing.T, query string, ref *Query) { - path, _ := parseQuery(lexQuery(query)) - assertPathMatch(t, path, ref) -} - -func buildPath(parts ...pathFn) *Query { - query := newQuery() - for _, v := range parts { - query.appendPath(v) - } - return query -} - -func TestPathRoot(t *testing.T) { - assertPath(t, - "$", - buildPath( - // empty - )) -} - -func TestPathKey(t *testing.T) { - assertPath(t, - "$.foo", - buildPath( - newMatchKeyFn("foo"), - )) -} - -func TestPathBracketKey(t *testing.T) { - assertPath(t, - "$[foo]", - buildPath( - newMatchKeyFn("foo"), - )) -} - -func TestPathBracketStringKey(t *testing.T) { - assertPath(t, - "$['foo']", - buildPath( - newMatchKeyFn("foo"), - )) -} - -func TestPathIndex(t *testing.T) { - assertPath(t, - "$[123]", - buildPath( - newMatchIndexFn(123), - )) -} - -func TestPathSliceStart(t *testing.T) { - assertPath(t, - "$[123:]", - buildPath( - newMatchSliceFn(123, maxInt, 1), - )) -} - -func TestPathSliceStartEnd(t *testing.T) { - assertPath(t, - "$[123:456]", - buildPath( - newMatchSliceFn(123, 456, 1), - )) -} - -func TestPathSliceStartEndColon(t *testing.T) { - assertPath(t, - "$[123:456:]", - buildPath( - newMatchSliceFn(123, 456, 1), - )) -} - -func TestPathSliceStartStep(t *testing.T) { - assertPath(t, - "$[123::7]", - buildPath( - newMatchSliceFn(123, maxInt, 7), - )) -} - -func TestPathSliceEndStep(t *testing.T) { - assertPath(t, - "$[:456:7]", - buildPath( - newMatchSliceFn(0, 456, 7), - )) -} - -func TestPathSliceStep(t *testing.T) { - assertPath(t, - "$[::7]", - buildPath( - newMatchSliceFn(0, maxInt, 7), - )) -} - -func TestPathSliceAll(t *testing.T) { - assertPath(t, - "$[123:456:7]", - buildPath( - newMatchSliceFn(123, 456, 7), - )) -} - -func TestPathAny(t *testing.T) { - assertPath(t, - "$.*", - buildPath( - newMatchAnyFn(), - )) -} - -func TestPathUnion(t *testing.T) { - assertPath(t, - "$[foo, bar, baz]", - buildPath( - &matchUnionFn{[]pathFn{ - newMatchKeyFn("foo"), - newMatchKeyFn("bar"), - newMatchKeyFn("baz"), - }}, - )) -} - -func TestPathRecurse(t *testing.T) { - assertPath(t, - "$..*", - buildPath( - newMatchRecursiveFn(), - )) -} - -func TestPathFilterExpr(t *testing.T) { - assertPath(t, - "$[?('foo'),?(bar)]", - buildPath( - &matchUnionFn{[]pathFn{ - newMatchFilterFn("foo", toml.Position{}), - newMatchFilterFn("bar", toml.Position{}), - }}, - )) -} diff --git a/vendor/github.com/pelletier/go-toml/query/parser.go b/vendor/github.com/pelletier/go-toml/query/parser.go deleted file mode 100644 index 5f69b70d4..000000000 --- a/vendor/github.com/pelletier/go-toml/query/parser.go +++ /dev/null @@ -1,275 +0,0 @@ -/* - Based on the "jsonpath" spec/concept. - - http://goessner.net/articles/JsonPath/ - https://code.google.com/p/json-path/ -*/ - -package query - -import ( - "fmt" -) - -const maxInt = int(^uint(0) >> 1) - -type queryParser struct { - flow chan token - tokensBuffer []token - query *Query - union []pathFn - err error -} - -type queryParserStateFn func() queryParserStateFn - -// Formats and panics an error message based on a token -func (p *queryParser) parseError(tok *token, msg string, args ...interface{}) queryParserStateFn { - p.err = fmt.Errorf(tok.Position.String()+": "+msg, args...) - return nil // trigger parse to end -} - -func (p *queryParser) run() { - for state := p.parseStart; state != nil; { - state = state() - } -} - -func (p *queryParser) backup(tok *token) { - p.tokensBuffer = append(p.tokensBuffer, *tok) -} - -func (p *queryParser) peek() *token { - if len(p.tokensBuffer) != 0 { - return &(p.tokensBuffer[0]) - } - - tok, ok := <-p.flow - if !ok { - return nil - } - p.backup(&tok) - return &tok -} - -func (p *queryParser) lookahead(types ...tokenType) bool { - result := true - buffer := []token{} - - for _, typ := range types { - tok := p.getToken() - if tok == nil { - result = false - break - } - buffer = append(buffer, *tok) - if tok.typ != typ { - result = false - break - } - } - // add the tokens back to the buffer, and return - p.tokensBuffer = append(p.tokensBuffer, buffer...) - return result -} - -func (p *queryParser) getToken() *token { - if len(p.tokensBuffer) != 0 { - tok := p.tokensBuffer[0] - p.tokensBuffer = p.tokensBuffer[1:] - return &tok - } - tok, ok := <-p.flow - if !ok { - return nil - } - return &tok -} - -func (p *queryParser) parseStart() queryParserStateFn { - tok := p.getToken() - - if tok == nil || tok.typ == tokenEOF { - return nil - } - - if tok.typ != tokenDollar { - return p.parseError(tok, "Expected '$' at start of expression") - } - - return p.parseMatchExpr -} - -// handle '.' prefix, '[]', and '..' -func (p *queryParser) parseMatchExpr() queryParserStateFn { - tok := p.getToken() - switch tok.typ { - case tokenDotDot: - p.query.appendPath(&matchRecursiveFn{}) - // nested parse for '..' - tok := p.getToken() - switch tok.typ { - case tokenKey: - p.query.appendPath(newMatchKeyFn(tok.val)) - return p.parseMatchExpr - case tokenLeftBracket: - return p.parseBracketExpr - case tokenStar: - // do nothing - the recursive predicate is enough - return p.parseMatchExpr - } - - case tokenDot: - // nested parse for '.' - tok := p.getToken() - switch tok.typ { - case tokenKey: - p.query.appendPath(newMatchKeyFn(tok.val)) - return p.parseMatchExpr - case tokenStar: - p.query.appendPath(&matchAnyFn{}) - return p.parseMatchExpr - } - - case tokenLeftBracket: - return p.parseBracketExpr - - case tokenEOF: - return nil // allow EOF at this stage - } - return p.parseError(tok, "expected match expression") -} - -func (p *queryParser) parseBracketExpr() queryParserStateFn { - if p.lookahead(tokenInteger, tokenColon) { - return p.parseSliceExpr - } - if p.peek().typ == tokenColon { - return p.parseSliceExpr - } - return p.parseUnionExpr -} - -func (p *queryParser) parseUnionExpr() queryParserStateFn { - var tok *token - - // this state can be traversed after some sub-expressions - // so be careful when setting up state in the parser - if p.union == nil { - p.union = []pathFn{} - } - -loop: // labeled loop for easy breaking - for { - if len(p.union) > 0 { - // parse delimiter or terminator - tok = p.getToken() - switch tok.typ { - case tokenComma: - // do nothing - case tokenRightBracket: - break loop - default: - return p.parseError(tok, "expected ',' or ']', not '%s'", tok.val) - } - } - - // parse sub expression - tok = p.getToken() - switch tok.typ { - case tokenInteger: - p.union = append(p.union, newMatchIndexFn(tok.Int())) - case tokenKey: - p.union = append(p.union, newMatchKeyFn(tok.val)) - case tokenString: - p.union = append(p.union, newMatchKeyFn(tok.val)) - case tokenQuestion: - return p.parseFilterExpr - default: - return p.parseError(tok, "expected union sub expression, not '%s', %d", tok.val, len(p.union)) - } - } - - // if there is only one sub-expression, use that instead - if len(p.union) == 1 { - p.query.appendPath(p.union[0]) - } else { - p.query.appendPath(&matchUnionFn{p.union}) - } - - p.union = nil // clear out state - return p.parseMatchExpr -} - -func (p *queryParser) parseSliceExpr() queryParserStateFn { - // init slice to grab all elements - start, end, step := 0, maxInt, 1 - - // parse optional start - tok := p.getToken() - if tok.typ == tokenInteger { - start = tok.Int() - tok = p.getToken() - } - if tok.typ != tokenColon { - return p.parseError(tok, "expected ':'") - } - - // parse optional end - tok = p.getToken() - if tok.typ == tokenInteger { - end = tok.Int() - tok = p.getToken() - } - if tok.typ == tokenRightBracket { - p.query.appendPath(newMatchSliceFn(start, end, step)) - return p.parseMatchExpr - } - if tok.typ != tokenColon { - return p.parseError(tok, "expected ']' or ':'") - } - - // parse optional step - tok = p.getToken() - if tok.typ == tokenInteger { - step = tok.Int() - if step < 0 { - return p.parseError(tok, "step must be a positive value") - } - tok = p.getToken() - } - if tok.typ != tokenRightBracket { - return p.parseError(tok, "expected ']'") - } - - p.query.appendPath(newMatchSliceFn(start, end, step)) - return p.parseMatchExpr -} - -func (p *queryParser) parseFilterExpr() queryParserStateFn { - tok := p.getToken() - if tok.typ != tokenLeftParen { - return p.parseError(tok, "expected left-parenthesis for filter expression") - } - tok = p.getToken() - if tok.typ != tokenKey && tok.typ != tokenString { - return p.parseError(tok, "expected key or string for filter function name") - } - name := tok.val - tok = p.getToken() - if tok.typ != tokenRightParen { - return p.parseError(tok, "expected right-parenthesis for filter expression") - } - p.union = append(p.union, newMatchFilterFn(name, tok.Position)) - return p.parseUnionExpr -} - -func parseQuery(flow chan token) (*Query, error) { - parser := &queryParser{ - flow: flow, - tokensBuffer: []token{}, - query: newQuery(), - } - parser.run() - return parser.query, parser.err -} diff --git a/vendor/github.com/pelletier/go-toml/query/parser_test.go b/vendor/github.com/pelletier/go-toml/query/parser_test.go deleted file mode 100644 index 473896a02..000000000 --- a/vendor/github.com/pelletier/go-toml/query/parser_test.go +++ /dev/null @@ -1,482 +0,0 @@ -package query - -import ( - "fmt" - "github.com/pelletier/go-toml" - "io/ioutil" - "sort" - "strings" - "testing" - "time" -) - -type queryTestNode struct { - value interface{} - position toml.Position -} - -func valueString(root interface{}) string { - result := "" //fmt.Sprintf("%T:", root) - switch node := root.(type) { - case *Result: - items := []string{} - for i, v := range node.Values() { - items = append(items, fmt.Sprintf("%s:%s", - node.Positions()[i].String(), valueString(v))) - } - sort.Strings(items) - result = "[" + strings.Join(items, ", ") + "]" - case queryTestNode: - result = fmt.Sprintf("%s:%s", - node.position.String(), valueString(node.value)) - case []interface{}: - items := []string{} - for _, v := range node { - items = append(items, valueString(v)) - } - sort.Strings(items) - result = "[" + strings.Join(items, ", ") + "]" - case *toml.Tree: - // workaround for unreliable map key ordering - items := []string{} - for _, k := range node.Keys() { - v := node.GetPath([]string{k}) - items = append(items, k+":"+valueString(v)) - } - sort.Strings(items) - result = "{" + strings.Join(items, ", ") + "}" - case map[string]interface{}: - // workaround for unreliable map key ordering - items := []string{} - for k, v := range node { - items = append(items, k+":"+valueString(v)) - } - sort.Strings(items) - result = "{" + strings.Join(items, ", ") + "}" - case int64: - result += fmt.Sprintf("%d", node) - case string: - result += "'" + node + "'" - case float64: - result += fmt.Sprintf("%f", node) - case bool: - result += fmt.Sprintf("%t", node) - case time.Time: - result += fmt.Sprintf("'%v'", node) - } - return result -} - -func assertValue(t *testing.T, result, ref interface{}) { - pathStr := valueString(result) - refStr := valueString(ref) - if pathStr != refStr { - t.Errorf("values do not match") - t.Log("test:", pathStr) - t.Log("ref: ", refStr) - } -} - -func assertQueryPositions(t *testing.T, tomlDoc string, query string, ref []interface{}) { - tree, err := toml.Load(tomlDoc) - if err != nil { - t.Errorf("Non-nil toml parse error: %v", err) - return - } - q, err := Compile(query) - if err != nil { - t.Error(err) - return - } - results := q.Execute(tree) - assertValue(t, results, ref) -} - -func TestQueryRoot(t *testing.T) { - assertQueryPositions(t, - "a = 42", - "$", - []interface{}{ - queryTestNode{ - map[string]interface{}{ - "a": int64(42), - }, toml.Position{1, 1}, - }, - }) -} - -func TestQueryKey(t *testing.T) { - assertQueryPositions(t, - "[foo]\na = 42", - "$.foo.a", - []interface{}{ - queryTestNode{ - int64(42), toml.Position{2, 1}, - }, - }) -} - -func TestQueryKeyString(t *testing.T) { - assertQueryPositions(t, - "[foo]\na = 42", - "$.foo['a']", - []interface{}{ - queryTestNode{ - int64(42), toml.Position{2, 1}, - }, - }) -} - -func TestQueryIndex(t *testing.T) { - assertQueryPositions(t, - "[foo]\na = [1,2,3,4,5,6,7,8,9,0]", - "$.foo.a[5]", - []interface{}{ - queryTestNode{ - int64(6), toml.Position{2, 1}, - }, - }) -} - -func TestQuerySliceRange(t *testing.T) { - assertQueryPositions(t, - "[foo]\na = [1,2,3,4,5,6,7,8,9,0]", - "$.foo.a[0:5]", - []interface{}{ - queryTestNode{ - int64(1), toml.Position{2, 1}, - }, - queryTestNode{ - int64(2), toml.Position{2, 1}, - }, - queryTestNode{ - int64(3), toml.Position{2, 1}, - }, - queryTestNode{ - int64(4), toml.Position{2, 1}, - }, - queryTestNode{ - int64(5), toml.Position{2, 1}, - }, - }) -} - -func TestQuerySliceStep(t *testing.T) { - assertQueryPositions(t, - "[foo]\na = [1,2,3,4,5,6,7,8,9,0]", - "$.foo.a[0:5:2]", - []interface{}{ - queryTestNode{ - int64(1), toml.Position{2, 1}, - }, - queryTestNode{ - int64(3), toml.Position{2, 1}, - }, - queryTestNode{ - int64(5), toml.Position{2, 1}, - }, - }) -} - -func TestQueryAny(t *testing.T) { - assertQueryPositions(t, - "[foo.bar]\na=1\nb=2\n[foo.baz]\na=3\nb=4", - "$.foo.*", - []interface{}{ - queryTestNode{ - map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, toml.Position{1, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(3), - "b": int64(4), - }, toml.Position{4, 1}, - }, - }) -} -func TestQueryUnionSimple(t *testing.T) { - assertQueryPositions(t, - "[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6", - "$.*[bar,foo]", - []interface{}{ - queryTestNode{ - map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, toml.Position{1, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(3), - "b": int64(4), - }, toml.Position{4, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(5), - "b": int64(6), - }, toml.Position{7, 1}, - }, - }) -} - -func TestQueryRecursionAll(t *testing.T) { - assertQueryPositions(t, - "[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6", - "$..*", - []interface{}{ - queryTestNode{ - map[string]interface{}{ - "foo": map[string]interface{}{ - "bar": map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, - }, - "baz": map[string]interface{}{ - "foo": map[string]interface{}{ - "a": int64(3), - "b": int64(4), - }, - }, - "gorf": map[string]interface{}{ - "foo": map[string]interface{}{ - "a": int64(5), - "b": int64(6), - }, - }, - }, toml.Position{1, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "bar": map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, - }, toml.Position{1, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, toml.Position{1, 1}, - }, - queryTestNode{ - int64(1), toml.Position{2, 1}, - }, - queryTestNode{ - int64(2), toml.Position{3, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "foo": map[string]interface{}{ - "a": int64(3), - "b": int64(4), - }, - }, toml.Position{4, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(3), - "b": int64(4), - }, toml.Position{4, 1}, - }, - queryTestNode{ - int64(3), toml.Position{5, 1}, - }, - queryTestNode{ - int64(4), toml.Position{6, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "foo": map[string]interface{}{ - "a": int64(5), - "b": int64(6), - }, - }, toml.Position{7, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(5), - "b": int64(6), - }, toml.Position{7, 1}, - }, - queryTestNode{ - int64(5), toml.Position{8, 1}, - }, - queryTestNode{ - int64(6), toml.Position{9, 1}, - }, - }) -} - -func TestQueryRecursionUnionSimple(t *testing.T) { - assertQueryPositions(t, - "[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6", - "$..['foo','bar']", - []interface{}{ - queryTestNode{ - map[string]interface{}{ - "bar": map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, - }, toml.Position{1, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(3), - "b": int64(4), - }, toml.Position{4, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(1), - "b": int64(2), - }, toml.Position{1, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "a": int64(5), - "b": int64(6), - }, toml.Position{7, 1}, - }, - }) -} - -func TestQueryFilterFn(t *testing.T) { - buff, err := ioutil.ReadFile("../example.toml") - if err != nil { - t.Error(err) - return - } - - assertQueryPositions(t, string(buff), - "$..[?(int)]", - []interface{}{ - queryTestNode{ - int64(8001), toml.Position{13, 1}, - }, - queryTestNode{ - int64(8001), toml.Position{13, 1}, - }, - queryTestNode{ - int64(8002), toml.Position{13, 1}, - }, - queryTestNode{ - int64(5000), toml.Position{14, 1}, - }, - }) - - assertQueryPositions(t, string(buff), - "$..[?(string)]", - []interface{}{ - queryTestNode{ - "TOML Example", toml.Position{3, 1}, - }, - queryTestNode{ - "Tom Preston-Werner", toml.Position{6, 1}, - }, - queryTestNode{ - "GitHub", toml.Position{7, 1}, - }, - queryTestNode{ - "GitHub Cofounder & CEO\nLikes tater tots and beer.", - toml.Position{8, 1}, - }, - queryTestNode{ - "192.168.1.1", toml.Position{12, 1}, - }, - queryTestNode{ - "10.0.0.1", toml.Position{21, 3}, - }, - queryTestNode{ - "eqdc10", toml.Position{22, 3}, - }, - queryTestNode{ - "10.0.0.2", toml.Position{25, 3}, - }, - queryTestNode{ - "eqdc10", toml.Position{26, 3}, - }, - }) - - assertQueryPositions(t, string(buff), - "$..[?(float)]", - []interface{}{ - // no float values in document - }) - - tv, _ := time.Parse(time.RFC3339, "1979-05-27T07:32:00Z") - assertQueryPositions(t, string(buff), - "$..[?(tree)]", - []interface{}{ - queryTestNode{ - map[string]interface{}{ - "name": "Tom Preston-Werner", - "organization": "GitHub", - "bio": "GitHub Cofounder & CEO\nLikes tater tots and beer.", - "dob": tv, - }, toml.Position{5, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "server": "192.168.1.1", - "ports": []interface{}{int64(8001), int64(8001), int64(8002)}, - "connection_max": int64(5000), - "enabled": true, - }, toml.Position{11, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "alpha": map[string]interface{}{ - "ip": "10.0.0.1", - "dc": "eqdc10", - }, - "beta": map[string]interface{}{ - "ip": "10.0.0.2", - "dc": "eqdc10", - }, - }, toml.Position{17, 1}, - }, - queryTestNode{ - map[string]interface{}{ - "ip": "10.0.0.1", - "dc": "eqdc10", - }, toml.Position{20, 3}, - }, - queryTestNode{ - map[string]interface{}{ - "ip": "10.0.0.2", - "dc": "eqdc10", - }, toml.Position{24, 3}, - }, - queryTestNode{ - map[string]interface{}{ - "data": []interface{}{ - []interface{}{"gamma", "delta"}, - []interface{}{int64(1), int64(2)}, - }, - }, toml.Position{28, 1}, - }, - }) - - assertQueryPositions(t, string(buff), - "$..[?(time)]", - []interface{}{ - queryTestNode{ - tv, toml.Position{9, 1}, - }, - }) - - assertQueryPositions(t, string(buff), - "$..[?(bool)]", - []interface{}{ - queryTestNode{ - true, toml.Position{15, 1}, - }, - }) -} diff --git a/vendor/github.com/pelletier/go-toml/query/query.go b/vendor/github.com/pelletier/go-toml/query/query.go deleted file mode 100644 index 1c6cd8014..000000000 --- a/vendor/github.com/pelletier/go-toml/query/query.go +++ /dev/null @@ -1,158 +0,0 @@ -package query - -import ( - "time" - - "github.com/pelletier/go-toml" -) - -// NodeFilterFn represents a user-defined filter function, for use with -// Query.SetFilter(). -// -// The return value of the function must indicate if 'node' is to be included -// at this stage of the TOML path. Returning true will include the node, and -// returning false will exclude it. -// -// NOTE: Care should be taken to write script callbacks such that they are safe -// to use from multiple goroutines. -type NodeFilterFn func(node interface{}) bool - -// Result is the result of Executing a Query. -type Result struct { - items []interface{} - positions []toml.Position -} - -// appends a value/position pair to the result set. -func (r *Result) appendResult(node interface{}, pos toml.Position) { - r.items = append(r.items, node) - r.positions = append(r.positions, pos) -} - -// Values is a set of values within a Result. The order of values is not -// guaranteed to be in document order, and may be different each time a query is -// executed. -func (r Result) Values() []interface{} { - return r.items -} - -// Positions is a set of positions for values within a Result. Each index -// in Positions() corresponds to the entry in Value() of the same index. -func (r Result) Positions() []toml.Position { - return r.positions -} - -// runtime context for executing query paths -type queryContext struct { - result *Result - filters *map[string]NodeFilterFn - lastPosition toml.Position -} - -// generic path functor interface -type pathFn interface { - setNext(next pathFn) - // it is the caller's responsibility to set the ctx.lastPosition before invoking call() - // node can be one of: *toml.Tree, []*toml.Tree, or a scalar - call(node interface{}, ctx *queryContext) -} - -// A Query is the representation of a compiled TOML path. A Query is safe -// for concurrent use by multiple goroutines. -type Query struct { - root pathFn - tail pathFn - filters *map[string]NodeFilterFn -} - -func newQuery() *Query { - return &Query{ - root: nil, - tail: nil, - filters: &defaultFilterFunctions, - } -} - -func (q *Query) appendPath(next pathFn) { - if q.root == nil { - q.root = next - } else { - q.tail.setNext(next) - } - q.tail = next - next.setNext(newTerminatingFn()) // init the next functor -} - -// Compile compiles a TOML path expression. The returned Query can be used -// to match elements within a Tree and its descendants. See Execute. -func Compile(path string) (*Query, error) { - return parseQuery(lexQuery(path)) -} - -// Execute executes a query against a Tree, and returns the result of the query. -func (q *Query) Execute(tree *toml.Tree) *Result { - result := &Result{ - items: []interface{}{}, - positions: []toml.Position{}, - } - if q.root == nil { - result.appendResult(tree, tree.GetPosition("")) - } else { - ctx := &queryContext{ - result: result, - filters: q.filters, - } - ctx.lastPosition = tree.Position() - q.root.call(tree, ctx) - } - return result -} - -// CompileAndExecute is a shorthand for Compile(path) followed by Execute(tree). -func CompileAndExecute(path string, tree *toml.Tree) (*Result, error) { - query, err := Compile(path) - if err != nil { - return nil, err - } - return query.Execute(tree), nil -} - -// SetFilter sets a user-defined filter function. These may be used inside -// "?(..)" query expressions to filter TOML document elements within a query. -func (q *Query) SetFilter(name string, fn NodeFilterFn) { - if q.filters == &defaultFilterFunctions { - // clone the static table - q.filters = &map[string]NodeFilterFn{} - for k, v := range defaultFilterFunctions { - (*q.filters)[k] = v - } - } - (*q.filters)[name] = fn -} - -var defaultFilterFunctions = map[string]NodeFilterFn{ - "tree": func(node interface{}) bool { - _, ok := node.(*toml.Tree) - return ok - }, - "int": func(node interface{}) bool { - _, ok := node.(int64) - return ok - }, - "float": func(node interface{}) bool { - _, ok := node.(float64) - return ok - }, - "string": func(node interface{}) bool { - _, ok := node.(string) - return ok - }, - "time": func(node interface{}) bool { - _, ok := node.(time.Time) - return ok - }, - "bool": func(node interface{}) bool { - _, ok := node.(bool) - return ok - }, -} diff --git a/vendor/github.com/pelletier/go-toml/query/query_test.go b/vendor/github.com/pelletier/go-toml/query/query_test.go deleted file mode 100644 index 903a8dc73..000000000 --- a/vendor/github.com/pelletier/go-toml/query/query_test.go +++ /dev/null @@ -1,157 +0,0 @@ -package query - -import ( - "fmt" - "testing" - - "github.com/pelletier/go-toml" -) - -func assertArrayContainsInAnyOrder(t *testing.T, array []interface{}, objects ...interface{}) { - if len(array) != len(objects) { - t.Fatalf("array contains %d objects but %d are expected", len(array), len(objects)) - } - - for _, o := range objects { - found := false - for _, a := range array { - if a == o { - found = true - break - } - } - if !found { - t.Fatal(o, "not found in array", array) - } - } -} - -func TestQueryExample(t *testing.T) { - config, _ := toml.Load(` - [[book]] - title = "The Stand" - author = "Stephen King" - [[book]] - title = "For Whom the Bell Tolls" - author = "Ernest Hemmingway" - [[book]] - title = "Neuromancer" - author = "William Gibson" - `) - authors, err := CompileAndExecute("$.book.author", config) - if err != nil { - t.Fatal("unexpected error:", err) - } - names := authors.Values() - if len(names) != 3 { - t.Fatalf("query should return 3 names but returned %d", len(names)) - } - assertArrayContainsInAnyOrder(t, names, "Stephen King", "Ernest Hemmingway", "William Gibson") -} - -func TestQueryReadmeExample(t *testing.T) { - config, _ := toml.Load(` -[postgres] -user = "pelletier" -password = "mypassword" -`) - - query, err := Compile("$..[user,password]") - if err != nil { - t.Fatal("unexpected error:", err) - } - results := query.Execute(config) - values := results.Values() - if len(values) != 2 { - t.Fatalf("query should return 2 values but returned %d", len(values)) - } - assertArrayContainsInAnyOrder(t, values, "pelletier", "mypassword") -} - -func TestQueryPathNotPresent(t *testing.T) { - config, _ := toml.Load(`a = "hello"`) - query, err := Compile("$.foo.bar") - if err != nil { - t.Fatal("unexpected error:", err) - } - results := query.Execute(config) - if err != nil { - t.Fatalf("err should be nil. got %s instead", err) - } - if len(results.items) != 0 { - t.Fatalf("no items should be matched. %d matched instead", len(results.items)) - } -} - -func ExampleNodeFilterFn_filterExample() { - tree, _ := toml.Load(` - [struct_one] - foo = "foo" - bar = "bar" - - [struct_two] - baz = "baz" - gorf = "gorf" - `) - - // create a query that references a user-defined-filter - query, _ := Compile("$[?(bazOnly)]") - - // define the filter, and assign it to the query - query.SetFilter("bazOnly", func(node interface{}) bool { - if tree, ok := node.(*toml.Tree); ok { - return tree.Has("baz") - } - return false // reject all other node types - }) - - // results contain only the 'struct_two' Tree - query.Execute(tree) -} - -func ExampleQuery_queryExample() { - config, _ := toml.Load(` - [[book]] - title = "The Stand" - author = "Stephen King" - [[book]] - title = "For Whom the Bell Tolls" - author = "Ernest Hemmingway" - [[book]] - title = "Neuromancer" - author = "William Gibson" - `) - - // find and print all the authors in the document - query, _ := Compile("$.book.author") - authors := query.Execute(config) - for _, name := range authors.Values() { - fmt.Println(name) - } -} - -func TestTomlQuery(t *testing.T) { - tree, err := toml.Load("[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6") - if err != nil { - t.Error(err) - return - } - query, err := Compile("$.foo.bar") - if err != nil { - t.Error(err) - return - } - result := query.Execute(tree) - values := result.Values() - if len(values) != 1 { - t.Errorf("Expected resultset of 1, got %d instead: %v", len(values), values) - } - - if tt, ok := values[0].(*toml.Tree); !ok { - t.Errorf("Expected type of Tree: %T", values[0]) - } else if tt.Get("a") != int64(1) { - t.Errorf("Expected 'a' with a value 1: %v", tt.Get("a")) - } else if tt.Get("b") != int64(2) { - t.Errorf("Expected 'b' with a value 2: %v", tt.Get("b")) - } -} diff --git a/vendor/github.com/pelletier/go-toml/query/tokens.go b/vendor/github.com/pelletier/go-toml/query/tokens.go deleted file mode 100644 index 9ae579de2..000000000 --- a/vendor/github.com/pelletier/go-toml/query/tokens.go +++ /dev/null @@ -1,106 +0,0 @@ -package query - -import ( - "fmt" - "github.com/pelletier/go-toml" - "strconv" - "unicode" -) - -// Define tokens -type tokenType int - -const ( - eof = -(iota + 1) -) - -const ( - tokenError tokenType = iota - tokenEOF - tokenKey - tokenString - tokenInteger - tokenFloat - tokenLeftBracket - tokenRightBracket - tokenLeftParen - tokenRightParen - tokenComma - tokenColon - tokenDollar - tokenStar - tokenQuestion - tokenDot - tokenDotDot -) - -var tokenTypeNames = []string{ - "Error", - "EOF", - "Key", - "String", - "Integer", - "Float", - "[", - "]", - "(", - ")", - ",", - ":", - "$", - "*", - "?", - ".", - "..", -} - -type token struct { - toml.Position - typ tokenType - val string -} - -func (tt tokenType) String() string { - idx := int(tt) - if idx < len(tokenTypeNames) { - return tokenTypeNames[idx] - } - return "Unknown" -} - -func (t token) Int() int { - if result, err := strconv.Atoi(t.val); err != nil { - panic(err) - } else { - return result - } -} - -func (t token) String() string { - switch t.typ { - case tokenEOF: - return "EOF" - case tokenError: - return t.val - } - - return fmt.Sprintf("%q", t.val) -} - -func isSpace(r rune) bool { - return r == ' ' || r == '\t' -} - -func isAlphanumeric(r rune) bool { - return unicode.IsLetter(r) || r == '_' -} - -func isDigit(r rune) bool { - return unicode.IsNumber(r) -} - -func isHexDigit(r rune) bool { - return isDigit(r) || - (r >= 'a' && r <= 'f') || - (r >= 'A' && r <= 'F') -} diff --git a/vendor/github.com/pelletier/go-toml/test.sh b/vendor/github.com/pelletier/go-toml/test.sh deleted file mode 100755 index 91a889670..000000000 --- a/vendor/github.com/pelletier/go-toml/test.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash -# fail out of the script if anything here fails -set -e - -# set the path to the present working directory -export GOPATH=`pwd` - -function git_clone() { - path=$1 - branch=$2 - version=$3 - if [ ! -d "src/$path" ]; then - mkdir -p src/$path - git clone https://$path.git src/$path - fi - pushd src/$path - git checkout "$branch" - git reset --hard "$version" - popd -} - -# Remove potential previous runs -rm -rf src test_program_bin toml-test - -# Run go vet -go vet ./... - -go get github.com/pelletier/go-buffruneio -go get github.com/davecgh/go-spew/spew -go get gopkg.in/yaml.v2 -go get github.com/BurntSushi/toml - -# get code for BurntSushi TOML validation -# pinning all to 'HEAD' for version 0.3.x work (TODO: pin to commit hash when tests stabilize) -git_clone github.com/BurntSushi/toml master HEAD -git_clone github.com/BurntSushi/toml-test master HEAD #was: 0.2.0 HEAD - -# build the BurntSushi test application -go build -o toml-test github.com/BurntSushi/toml-test - -# vendorize the current lib for testing -# NOTE: this basically mocks an install without having to go back out to github for code -mkdir -p src/github.com/pelletier/go-toml/cmd -mkdir -p src/github.com/pelletier/go-toml/query -cp *.go *.toml src/github.com/pelletier/go-toml -cp -R cmd/* src/github.com/pelletier/go-toml/cmd -cp -R query/* src/github.com/pelletier/go-toml/query -go build -o test_program_bin src/github.com/pelletier/go-toml/cmd/test_program.go - -# Run basic unit tests -go test github.com/pelletier/go-toml -covermode=count -coverprofile=coverage.out -go test github.com/pelletier/go-toml/cmd/tomljson -go test github.com/pelletier/go-toml/query - -# run the entire BurntSushi test suite -if [[ $# -eq 0 ]] ; then - echo "Running all BurntSushi tests" - ./toml-test ./test_program_bin | tee test_out -else - # run a specific test - test=$1 - test_path='src/github.com/BurntSushi/toml-test/tests' - valid_test="$test_path/valid/$test" - invalid_test="$test_path/invalid/$test" - - if [ -e "$valid_test.toml" ]; then - echo "Valid Test TOML for $test:" - echo "====" - cat "$valid_test.toml" - - echo "Valid Test JSON for $test:" - echo "====" - cat "$valid_test.json" - - echo "Go-TOML Output for $test:" - echo "====" - cat "$valid_test.toml" | ./test_program_bin - fi - - if [ -e "$invalid_test.toml" ]; then - echo "Invalid Test TOML for $test:" - echo "====" - cat "$invalid_test.toml" - - echo "Go-TOML Output for $test:" - echo "====" - echo "go-toml Output:" - cat "$invalid_test.toml" | ./test_program_bin - fi -fi diff --git a/vendor/github.com/pelletier/go-toml/token.go b/vendor/github.com/pelletier/go-toml/token.go deleted file mode 100644 index 5581fe0bc..000000000 --- a/vendor/github.com/pelletier/go-toml/token.go +++ /dev/null @@ -1,140 +0,0 @@ -package toml - -import ( - "fmt" - "strconv" - "unicode" -) - -// Define tokens -type tokenType int - -const ( - eof = -(iota + 1) -) - -const ( - tokenError tokenType = iota - tokenEOF - tokenComment - tokenKey - tokenString - tokenInteger - tokenTrue - tokenFalse - tokenFloat - tokenEqual - tokenLeftBracket - tokenRightBracket - tokenLeftCurlyBrace - tokenRightCurlyBrace - tokenLeftParen - tokenRightParen - tokenDoubleLeftBracket - tokenDoubleRightBracket - tokenDate - tokenKeyGroup - tokenKeyGroupArray - tokenComma - tokenColon - tokenDollar - tokenStar - tokenQuestion - tokenDot - tokenDotDot - tokenEOL -) - -var tokenTypeNames = []string{ - "Error", - "EOF", - "Comment", - "Key", - "String", - "Integer", - "True", - "False", - "Float", - "=", - "[", - "]", - "{", - "}", - "(", - ")", - "]]", - "[[", - "Date", - "KeyGroup", - "KeyGroupArray", - ",", - ":", - "$", - "*", - "?", - ".", - "..", - "EOL", -} - -type token struct { - Position - typ tokenType - val string -} - -func (tt tokenType) String() string { - idx := int(tt) - if idx < len(tokenTypeNames) { - return tokenTypeNames[idx] - } - return "Unknown" -} - -func (t token) Int() int { - if result, err := strconv.Atoi(t.val); err != nil { - panic(err) - } else { - return result - } -} - -func (t token) String() string { - switch t.typ { - case tokenEOF: - return "EOF" - case tokenError: - return t.val - } - - return fmt.Sprintf("%q", t.val) -} - -func isSpace(r rune) bool { - return r == ' ' || r == '\t' -} - -func isAlphanumeric(r rune) bool { - return unicode.IsLetter(r) || r == '_' -} - -func isKeyChar(r rune) bool { - // Keys start with the first character that isn't whitespace or [ and end - // with the last non-whitespace character before the equals sign. Keys - // cannot contain a # character." - return !(r == '\r' || r == '\n' || r == eof || r == '=') -} - -func isKeyStartChar(r rune) bool { - return !(isSpace(r) || r == '\r' || r == '\n' || r == eof || r == '[') -} - -func isDigit(r rune) bool { - return unicode.IsNumber(r) -} - -func isHexDigit(r rune) bool { - return isDigit(r) || - (r >= 'a' && r <= 'f') || - (r >= 'A' && r <= 'F') -} diff --git a/vendor/github.com/pelletier/go-toml/token_test.go b/vendor/github.com/pelletier/go-toml/token_test.go deleted file mode 100644 index 20b560d51..000000000 --- a/vendor/github.com/pelletier/go-toml/token_test.go +++ /dev/null @@ -1,67 +0,0 @@ -package toml - -import "testing" - -func TestTokenStringer(t *testing.T) { - var tests = []struct { - tt tokenType - expect string - }{ - {tokenError, "Error"}, - {tokenEOF, "EOF"}, - {tokenComment, "Comment"}, - {tokenKey, "Key"}, - {tokenString, "String"}, - {tokenInteger, "Integer"}, - {tokenTrue, "True"}, - {tokenFalse, "False"}, - {tokenFloat, "Float"}, - {tokenEqual, "="}, - {tokenLeftBracket, "["}, - {tokenRightBracket, "]"}, - {tokenLeftCurlyBrace, "{"}, - {tokenRightCurlyBrace, "}"}, - {tokenLeftParen, "("}, - {tokenRightParen, ")"}, - {tokenDoubleLeftBracket, "]]"}, - {tokenDoubleRightBracket, "[["}, - {tokenDate, "Date"}, - {tokenKeyGroup, "KeyGroup"}, - {tokenKeyGroupArray, "KeyGroupArray"}, - {tokenComma, ","}, - {tokenColon, ":"}, - {tokenDollar, "$"}, - {tokenStar, "*"}, - {tokenQuestion, "?"}, - {tokenDot, "."}, - {tokenDotDot, ".."}, - {tokenEOL, "EOL"}, - {tokenEOL + 1, "Unknown"}, - } - - for i, test := range tests { - got := test.tt.String() - if got != test.expect { - t.Errorf("[%d] invalid string of token type; got %q, expected %q", i, got, test.expect) - } - } -} - -func TestTokenString(t *testing.T) { - var tests = []struct { - tok token - expect string - }{ - {token{Position{1, 1}, tokenEOF, ""}, "EOF"}, - {token{Position{1, 1}, tokenError, "Δt"}, "Δt"}, - {token{Position{1, 1}, tokenString, "bar"}, `"bar"`}, - {token{Position{1, 1}, tokenString, "123456789012345"}, `"123456789012345"`}, - } - - for i, test := range tests { - got := test.tok.String() - if got != test.expect { - t.Errorf("[%d] invalid of string token; got %q, expected %q", i, got, test.expect) - } - } -} diff --git a/vendor/github.com/pelletier/go-toml/toml.go b/vendor/github.com/pelletier/go-toml/toml.go deleted file mode 100644 index 64f19ed30..000000000 --- a/vendor/github.com/pelletier/go-toml/toml.go +++ /dev/null @@ -1,292 +0,0 @@ -package toml - -import ( - "errors" - "fmt" - "io" - "io/ioutil" - "os" - "runtime" - "strings" -) - -type tomlValue struct { - value interface{} // string, int64, uint64, float64, bool, time.Time, [] of any of this list - position Position -} - -// Tree is the result of the parsing of a TOML file. -type Tree struct { - values map[string]interface{} // string -> *tomlValue, *Tree, []*Tree - position Position -} - -func newTree() *Tree { - return &Tree{ - values: make(map[string]interface{}), - position: Position{}, - } -} - -// TreeFromMap initializes a new Tree object using the given map. -func TreeFromMap(m map[string]interface{}) (*Tree, error) { - result, err := toTree(m) - if err != nil { - return nil, err - } - return result.(*Tree), nil -} - -// Position returns the position of the tree. -func (t *Tree) Position() Position { - return t.position -} - -// Has returns a boolean indicating if the given key exists. -func (t *Tree) Has(key string) bool { - if key == "" { - return false - } - return t.HasPath(strings.Split(key, ".")) -} - -// HasPath returns true if the given path of keys exists, false otherwise. -func (t *Tree) HasPath(keys []string) bool { - return t.GetPath(keys) != nil -} - -// Keys returns the keys of the toplevel tree (does not recurse). -func (t *Tree) Keys() []string { - keys := make([]string, len(t.values)) - i := 0 - for k := range t.values { - keys[i] = k - i++ - } - return keys -} - -// Get the value at key in the Tree. -// Key is a dot-separated path (e.g. a.b.c). -// Returns nil if the path does not exist in the tree. -// If keys is of length zero, the current tree is returned. -func (t *Tree) Get(key string) interface{} { - if key == "" { - return t - } - comps, err := parseKey(key) - if err != nil { - return nil - } - return t.GetPath(comps) -} - -// GetPath returns the element in the tree indicated by 'keys'. -// If keys is of length zero, the current tree is returned. -func (t *Tree) GetPath(keys []string) interface{} { - if len(keys) == 0 { - return t - } - subtree := t - for _, intermediateKey := range keys[:len(keys)-1] { - value, exists := subtree.values[intermediateKey] - if !exists { - return nil - } - switch node := value.(type) { - case *Tree: - subtree = node - case []*Tree: - // go to most recent element - if len(node) == 0 { - return nil - } - subtree = node[len(node)-1] - default: - return nil // cannot navigate through other node types - } - } - // branch based on final node type - switch node := subtree.values[keys[len(keys)-1]].(type) { - case *tomlValue: - return node.value - default: - return node - } -} - -// GetPosition returns the position of the given key. -func (t *Tree) GetPosition(key string) Position { - if key == "" { - return t.position - } - return t.GetPositionPath(strings.Split(key, ".")) -} - -// GetPositionPath returns the element in the tree indicated by 'keys'. -// If keys is of length zero, the current tree is returned. -func (t *Tree) GetPositionPath(keys []string) Position { - if len(keys) == 0 { - return t.position - } - subtree := t - for _, intermediateKey := range keys[:len(keys)-1] { - value, exists := subtree.values[intermediateKey] - if !exists { - return Position{0, 0} - } - switch node := value.(type) { - case *Tree: - subtree = node - case []*Tree: - // go to most recent element - if len(node) == 0 { - return Position{0, 0} - } - subtree = node[len(node)-1] - default: - return Position{0, 0} - } - } - // branch based on final node type - switch node := subtree.values[keys[len(keys)-1]].(type) { - case *tomlValue: - return node.position - case *Tree: - return node.position - case []*Tree: - // go to most recent element - if len(node) == 0 { - return Position{0, 0} - } - return node[len(node)-1].position - default: - return Position{0, 0} - } -} - -// GetDefault works like Get but with a default value -func (t *Tree) GetDefault(key string, def interface{}) interface{} { - val := t.Get(key) - if val == nil { - return def - } - return val -} - -// Set an element in the tree. -// Key is a dot-separated path (e.g. a.b.c). -// Creates all necessary intermediate trees, if needed. -func (t *Tree) Set(key string, value interface{}) { - t.SetPath(strings.Split(key, "."), value) -} - -// SetPath sets an element in the tree. -// Keys is an array of path elements (e.g. {"a","b","c"}). -// Creates all necessary intermediate trees, if needed. -func (t *Tree) SetPath(keys []string, value interface{}) { - subtree := t - for _, intermediateKey := range keys[:len(keys)-1] { - nextTree, exists := subtree.values[intermediateKey] - if !exists { - nextTree = newTree() - subtree.values[intermediateKey] = nextTree // add new element here - } - switch node := nextTree.(type) { - case *Tree: - subtree = node - case []*Tree: - // go to most recent element - if len(node) == 0 { - // create element if it does not exist - subtree.values[intermediateKey] = append(node, newTree()) - } - subtree = node[len(node)-1] - } - } - - var toInsert interface{} - - switch value.(type) { - case *Tree: - toInsert = value - case []*Tree: - toInsert = value - case *tomlValue: - toInsert = value - default: - toInsert = &tomlValue{value: value} - } - - subtree.values[keys[len(keys)-1]] = toInsert -} - -// createSubTree takes a tree and a key and create the necessary intermediate -// subtrees to create a subtree at that point. In-place. -// -// e.g. passing a.b.c will create (assuming tree is empty) tree[a], tree[a][b] -// and tree[a][b][c] -// -// Returns nil on success, error object on failure -func (t *Tree) createSubTree(keys []string, pos Position) error { - subtree := t - for _, intermediateKey := range keys { - nextTree, exists := subtree.values[intermediateKey] - if !exists { - tree := newTree() - tree.position = pos - subtree.values[intermediateKey] = tree - nextTree = tree - } - - switch node := nextTree.(type) { - case []*Tree: - subtree = node[len(node)-1] - case *Tree: - subtree = node - default: - return fmt.Errorf("unknown type for path %s (%s): %T (%#v)", - strings.Join(keys, "."), intermediateKey, nextTree, nextTree) - } - } - return nil -} - -// LoadBytes creates a Tree from a []byte. -func LoadBytes(b []byte) (tree *Tree, err error) { - defer func() { - if r := recover(); r != nil { - if _, ok := r.(runtime.Error); ok { - panic(r) - } - err = errors.New(r.(string)) - } - }() - tree = parseToml(lexToml(b)) - return -} - -// LoadReader creates a Tree from any io.Reader. -func LoadReader(reader io.Reader) (tree *Tree, err error) { - inputBytes, err := ioutil.ReadAll(reader) - if err != nil { - return - } - tree, err = LoadBytes(inputBytes) - return -} - -// Load creates a Tree from a string. -func Load(content string) (tree *Tree, err error) { - return LoadBytes([]byte(content)) -} - -// LoadFile creates a Tree from a file. -func LoadFile(path string) (tree *Tree, err error) { - file, err := os.Open(path) - if err != nil { - return nil, err - } - defer file.Close() - return LoadReader(file) -} diff --git a/vendor/github.com/pelletier/go-toml/toml_test.go b/vendor/github.com/pelletier/go-toml/toml_test.go deleted file mode 100644 index ab9c24253..000000000 --- a/vendor/github.com/pelletier/go-toml/toml_test.go +++ /dev/null @@ -1,106 +0,0 @@ -// Testing support for go-toml - -package toml - -import ( - "testing" -) - -func TestTomlHas(t *testing.T) { - tree, _ := Load(` - [test] - key = "value" - `) - - if !tree.Has("test.key") { - t.Errorf("Has - expected test.key to exists") - } - - if tree.Has("") { - t.Errorf("Should return false if the key is not provided") - } -} - -func TestTomlGet(t *testing.T) { - tree, _ := Load(` - [test] - key = "value" - `) - - if tree.Get("") != tree { - t.Errorf("Get should return the tree itself when given an empty path") - } - - if tree.Get("test.key") != "value" { - t.Errorf("Get should return the value") - } - if tree.Get(`\`) != nil { - t.Errorf("should return nil when the key is malformed") - } -} - -func TestTomlGetDefault(t *testing.T) { - tree, _ := Load(` - [test] - key = "value" - `) - - if tree.GetDefault("", "hello") != tree { - t.Error("GetDefault should return the tree itself when given an empty path") - } - - if tree.GetDefault("test.key", "hello") != "value" { - t.Error("Get should return the value") - } - - if tree.GetDefault("whatever", "hello") != "hello" { - t.Error("GetDefault should return the default value if the key does not exist") - } -} - -func TestTomlHasPath(t *testing.T) { - tree, _ := Load(` - [test] - key = "value" - `) - - if !tree.HasPath([]string{"test", "key"}) { - t.Errorf("HasPath - expected test.key to exists") - } -} - -func TestTomlGetPath(t *testing.T) { - node := newTree() - //TODO: set other node data - - for idx, item := range []struct { - Path []string - Expected *Tree - }{ - { // empty path test - []string{}, - node, - }, - } { - result := node.GetPath(item.Path) - if result != item.Expected { - t.Errorf("GetPath[%d] %v - expected %v, got %v instead.", idx, item.Path, item.Expected, result) - } - } - - tree, _ := Load("[foo.bar]\na=1\nb=2\n[baz.foo]\na=3\nb=4\n[gorf.foo]\na=5\nb=6") - if tree.GetPath([]string{"whatever"}) != nil { - t.Error("GetPath should return nil when the key does not exist") - } -} - -func TestTomlFromMap(t *testing.T) { - simpleMap := map[string]interface{}{"hello": 42} - tree, err := TreeFromMap(simpleMap) - if err != nil { - t.Fatal("unexpected error:", err) - } - if tree.Get("hello") != int64(42) { - t.Fatal("hello should be 42, not", tree.Get("hello")) - } -} diff --git a/vendor/github.com/pelletier/go-toml/tomltree_create.go b/vendor/github.com/pelletier/go-toml/tomltree_create.go deleted file mode 100644 index 19d1c0dc6..000000000 --- a/vendor/github.com/pelletier/go-toml/tomltree_create.go +++ /dev/null @@ -1,142 +0,0 @@ -package toml - -import ( - "fmt" - "reflect" - "time" -) - -var kindToType = [reflect.String + 1]reflect.Type{ - reflect.Bool: reflect.TypeOf(true), - reflect.String: reflect.TypeOf(""), - reflect.Float32: reflect.TypeOf(float64(1)), - reflect.Float64: reflect.TypeOf(float64(1)), - reflect.Int: reflect.TypeOf(int64(1)), - reflect.Int8: reflect.TypeOf(int64(1)), - reflect.Int16: reflect.TypeOf(int64(1)), - reflect.Int32: reflect.TypeOf(int64(1)), - reflect.Int64: reflect.TypeOf(int64(1)), - reflect.Uint: reflect.TypeOf(uint64(1)), - reflect.Uint8: reflect.TypeOf(uint64(1)), - reflect.Uint16: reflect.TypeOf(uint64(1)), - reflect.Uint32: reflect.TypeOf(uint64(1)), - reflect.Uint64: reflect.TypeOf(uint64(1)), -} - -// typeFor returns a reflect.Type for a reflect.Kind, or nil if none is found. -// supported values: -// string, bool, int64, uint64, float64, time.Time, int, int8, int16, int32, uint, uint8, uint16, uint32, float32 -func typeFor(k reflect.Kind) reflect.Type { - if k > 0 && int(k) < len(kindToType) { - return kindToType[k] - } - return nil -} - -func simpleValueCoercion(object interface{}) (interface{}, error) { - switch original := object.(type) { - case string, bool, int64, uint64, float64, time.Time: - return original, nil - case int: - return int64(original), nil - case int8: - return int64(original), nil - case int16: - return int64(original), nil - case int32: - return int64(original), nil - case uint: - return uint64(original), nil - case uint8: - return uint64(original), nil - case uint16: - return uint64(original), nil - case uint32: - return uint64(original), nil - case float32: - return float64(original), nil - case fmt.Stringer: - return original.String(), nil - default: - return nil, fmt.Errorf("cannot convert type %T to Tree", object) - } -} - -func sliceToTree(object interface{}) (interface{}, error) { - // arrays are a bit tricky, since they can represent either a - // collection of simple values, which is represented by one - // *tomlValue, or an array of tables, which is represented by an - // array of *Tree. - - // holding the assumption that this function is called from toTree only when value.Kind() is Array or Slice - value := reflect.ValueOf(object) - insideType := value.Type().Elem() - length := value.Len() - if length > 0 { - insideType = reflect.ValueOf(value.Index(0).Interface()).Type() - } - if insideType.Kind() == reflect.Map { - // this is considered as an array of tables - tablesArray := make([]*Tree, 0, length) - for i := 0; i < length; i++ { - table := value.Index(i) - tree, err := toTree(table.Interface()) - if err != nil { - return nil, err - } - tablesArray = append(tablesArray, tree.(*Tree)) - } - return tablesArray, nil - } - - sliceType := typeFor(insideType.Kind()) - if sliceType == nil { - sliceType = insideType - } - - arrayValue := reflect.MakeSlice(reflect.SliceOf(sliceType), 0, length) - - for i := 0; i < length; i++ { - val := value.Index(i).Interface() - simpleValue, err := simpleValueCoercion(val) - if err != nil { - return nil, err - } - arrayValue = reflect.Append(arrayValue, reflect.ValueOf(simpleValue)) - } - return &tomlValue{arrayValue.Interface(), Position{}}, nil -} - -func toTree(object interface{}) (interface{}, error) { - value := reflect.ValueOf(object) - - if value.Kind() == reflect.Map { - values := map[string]interface{}{} - keys := value.MapKeys() - for _, key := range keys { - if key.Kind() != reflect.String { - if _, ok := key.Interface().(string); !ok { - return nil, fmt.Errorf("map key needs to be a string, not %T (%v)", key.Interface(), key.Kind()) - } - } - - v := value.MapIndex(key) - newValue, err := toTree(v.Interface()) - if err != nil { - return nil, err - } - values[key.String()] = newValue - } - return &Tree{values, Position{}}, nil - } - - if value.Kind() == reflect.Array || value.Kind() == reflect.Slice { - return sliceToTree(object) - } - - simpleValue, err := simpleValueCoercion(object) - if err != nil { - return nil, err - } - return &tomlValue{simpleValue, Position{}}, nil -} diff --git a/vendor/github.com/pelletier/go-toml/tomltree_create_test.go b/vendor/github.com/pelletier/go-toml/tomltree_create_test.go deleted file mode 100644 index 1ca108a52..000000000 --- a/vendor/github.com/pelletier/go-toml/tomltree_create_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package toml - -import ( - "strconv" - "testing" - "time" -) - -type customString string - -type stringer struct{} - -func (s stringer) String() string { - return "stringer" -} - -func validate(t *testing.T, path string, object interface{}) { - switch o := object.(type) { - case *Tree: - for key, tree := range o.values { - validate(t, path+"."+key, tree) - } - case []*Tree: - for index, tree := range o { - validate(t, path+"."+strconv.Itoa(index), tree) - } - case *tomlValue: - switch o.value.(type) { - case int64, uint64, bool, string, float64, time.Time, - []int64, []uint64, []bool, []string, []float64, []time.Time: - default: - t.Fatalf("tomlValue at key %s containing incorrect type %T", path, o.value) - } - default: - t.Fatalf("value at key %s is of incorrect type %T", path, object) - } - t.Logf("validation ok %s as %T", path, object) -} - -func validateTree(t *testing.T, tree *Tree) { - validate(t, "", tree) -} - -func TestTreeCreateToTree(t *testing.T) { - data := map[string]interface{}{ - "a_string": "bar", - "an_int": 42, - "time": time.Now(), - "int8": int8(2), - "int16": int16(2), - "int32": int32(2), - "uint8": uint8(2), - "uint16": uint16(2), - "uint32": uint32(2), - "float32": float32(2), - "a_bool": false, - "stringer": stringer{}, - "nested": map[string]interface{}{ - "foo": "bar", - }, - "array": []string{"a", "b", "c"}, - "array_uint": []uint{uint(1), uint(2)}, - "array_table": []map[string]interface{}{map[string]interface{}{"sub_map": 52}}, - "array_times": []time.Time{time.Now(), time.Now()}, - "map_times": map[string]time.Time{"now": time.Now()}, - "custom_string_map_key": map[customString]interface{}{customString("custom"): "custom"}, - } - tree, err := TreeFromMap(data) - if err != nil { - t.Fatal("unexpected error:", err) - } - validateTree(t, tree) -} - -func TestTreeCreateToTreeInvalidLeafType(t *testing.T) { - _, err := TreeFromMap(map[string]interface{}{"foo": t}) - expected := "cannot convert type *testing.T to Tree" - if err.Error() != expected { - t.Fatalf("expected error %s, got %s", expected, err.Error()) - } -} - -func TestTreeCreateToTreeInvalidMapKeyType(t *testing.T) { - _, err := TreeFromMap(map[string]interface{}{"foo": map[int]interface{}{2: 1}}) - expected := "map key needs to be a string, not int (int)" - if err.Error() != expected { - t.Fatalf("expected error %s, got %s", expected, err.Error()) - } -} - -func TestTreeCreateToTreeInvalidArrayMemberType(t *testing.T) { - _, err := TreeFromMap(map[string]interface{}{"foo": []*testing.T{t}}) - expected := "cannot convert type *testing.T to Tree" - if err.Error() != expected { - t.Fatalf("expected error %s, got %s", expected, err.Error()) - } -} - -func TestTreeCreateToTreeInvalidTableGroupType(t *testing.T) { - _, err := TreeFromMap(map[string]interface{}{"foo": []map[string]interface{}{map[string]interface{}{"hello": t}}}) - expected := "cannot convert type *testing.T to Tree" - if err.Error() != expected { - t.Fatalf("expected error %s, got %s", expected, err.Error()) - } -} - -func TestRoundTripArrayOfTables(t *testing.T) { - orig := "\n[[stuff]]\n name = \"foo\"\n things = [\"a\",\"b\"]\n" - tree, err := Load(orig) - if err != nil { - t.Fatalf("unexpected error: %s", err) - } - - m := tree.ToMap() - - tree, err = TreeFromMap(m) - if err != nil { - t.Fatalf("unexpected error: %s", err) - } - want := orig - got := tree.String() - - if got != want { - t.Errorf("want:\n%s\ngot:\n%s", want, got) - } -} diff --git a/vendor/github.com/pelletier/go-toml/tomltree_write.go b/vendor/github.com/pelletier/go-toml/tomltree_write.go deleted file mode 100644 index ca763ed58..000000000 --- a/vendor/github.com/pelletier/go-toml/tomltree_write.go +++ /dev/null @@ -1,233 +0,0 @@ -package toml - -import ( - "bytes" - "fmt" - "io" - "math" - "reflect" - "sort" - "strconv" - "strings" - "time" -) - -// encodes a string to a TOML-compliant string value -func encodeTomlString(value string) string { - var b bytes.Buffer - - for _, rr := range value { - switch rr { - case '\b': - b.WriteString(`\b`) - case '\t': - b.WriteString(`\t`) - case '\n': - b.WriteString(`\n`) - case '\f': - b.WriteString(`\f`) - case '\r': - b.WriteString(`\r`) - case '"': - b.WriteString(`\"`) - case '\\': - b.WriteString(`\\`) - default: - intRr := uint16(rr) - if intRr < 0x001F { - b.WriteString(fmt.Sprintf("\\u%0.4X", intRr)) - } else { - b.WriteRune(rr) - } - } - } - return b.String() -} - -func tomlValueStringRepresentation(v interface{}) (string, error) { - switch value := v.(type) { - case uint64: - return strconv.FormatUint(value, 10), nil - case int64: - return strconv.FormatInt(value, 10), nil - case float64: - // Ensure a round float does contain a decimal point. Otherwise feeding - // the output back to the parser would convert to an integer. - if math.Trunc(value) == value { - return strconv.FormatFloat(value, 'f', 1, 32), nil - } - return strconv.FormatFloat(value, 'f', -1, 32), nil - case string: - return "\"" + encodeTomlString(value) + "\"", nil - case []byte: - b, _ := v.([]byte) - return tomlValueStringRepresentation(string(b)) - case bool: - if value { - return "true", nil - } - return "false", nil - case time.Time: - return value.Format(time.RFC3339), nil - case nil: - return "", nil - } - - rv := reflect.ValueOf(v) - - if rv.Kind() == reflect.Slice { - values := []string{} - for i := 0; i < rv.Len(); i++ { - item := rv.Index(i).Interface() - itemRepr, err := tomlValueStringRepresentation(item) - if err != nil { - return "", err - } - values = append(values, itemRepr) - } - return "[" + strings.Join(values, ",") + "]", nil - } - return "", fmt.Errorf("unsupported value type %T: %v", v, v) -} - -func (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64) (int64, error) { - simpleValuesKeys := make([]string, 0) - complexValuesKeys := make([]string, 0) - - for k := range t.values { - v := t.values[k] - switch v.(type) { - case *Tree, []*Tree: - complexValuesKeys = append(complexValuesKeys, k) - default: - simpleValuesKeys = append(simpleValuesKeys, k) - } - } - - sort.Strings(simpleValuesKeys) - sort.Strings(complexValuesKeys) - - for _, k := range simpleValuesKeys { - v, ok := t.values[k].(*tomlValue) - if !ok { - return bytesCount, fmt.Errorf("invalid value type at %s: %T", k, t.values[k]) - } - - repr, err := tomlValueStringRepresentation(v.value) - if err != nil { - return bytesCount, err - } - - writtenBytesCount, err := writeStrings(w, indent, k, " = ", repr, "\n") - bytesCount += int64(writtenBytesCount) - if err != nil { - return bytesCount, err - } - } - - for _, k := range complexValuesKeys { - v := t.values[k] - - combinedKey := k - if keyspace != "" { - combinedKey = keyspace + "." + combinedKey - } - - switch node := v.(type) { - // node has to be of those two types given how keys are sorted above - case *Tree: - writtenBytesCount, err := writeStrings(w, "\n", indent, "[", combinedKey, "]\n") - bytesCount += int64(writtenBytesCount) - if err != nil { - return bytesCount, err - } - bytesCount, err = node.writeTo(w, indent+" ", combinedKey, bytesCount) - if err != nil { - return bytesCount, err - } - case []*Tree: - for _, subTree := range node { - writtenBytesCount, err := writeStrings(w, "\n", indent, "[[", combinedKey, "]]\n") - bytesCount += int64(writtenBytesCount) - if err != nil { - return bytesCount, err - } - - bytesCount, err = subTree.writeTo(w, indent+" ", combinedKey, bytesCount) - if err != nil { - return bytesCount, err - } - } - } - } - - return bytesCount, nil -} - -func writeStrings(w io.Writer, s ...string) (int, error) { - var n int - for i := range s { - b, err := io.WriteString(w, s[i]) - n += b - if err != nil { - return n, err - } - } - return n, nil -} - -// WriteTo encode the Tree as Toml and writes it to the writer w. -// Returns the number of bytes written in case of success, or an error if anything happened. -func (t *Tree) WriteTo(w io.Writer) (int64, error) { - return t.writeTo(w, "", "", 0) -} - -// ToTomlString generates a human-readable representation of the current tree. -// Output spans multiple lines, and is suitable for ingest by a TOML parser. -// If the conversion cannot be performed, ToString returns a non-nil error. -func (t *Tree) ToTomlString() (string, error) { - var buf bytes.Buffer - _, err := t.WriteTo(&buf) - if err != nil { - return "", err - } - return buf.String(), nil -} - -// String generates a human-readable representation of the current tree. -// Alias of ToString. Present to implement the fmt.Stringer interface. -func (t *Tree) String() string { - result, _ := t.ToTomlString() - return result -} - -// ToMap recursively generates a representation of the tree using Go built-in structures. -// The following types are used: -// -// * bool -// * float64 -// * int64 -// * string -// * uint64 -// * time.Time -// * map[string]interface{} (where interface{} is any of this list) -// * []interface{} (where interface{} is any of this list) -func (t *Tree) ToMap() map[string]interface{} { - result := map[string]interface{}{} - - for k, v := range t.values { - switch node := v.(type) { - case []*Tree: - var array []interface{} - for _, item := range node { - array = append(array, item.ToMap()) - } - result[k] = array - case *Tree: - result[k] = node.ToMap() - case *tomlValue: - result[k] = node.value - } - } - return result -} diff --git a/vendor/github.com/pelletier/go-toml/tomltree_write_test.go b/vendor/github.com/pelletier/go-toml/tomltree_write_test.go deleted file mode 100644 index c2a1ce3b7..000000000 --- a/vendor/github.com/pelletier/go-toml/tomltree_write_test.go +++ /dev/null @@ -1,358 +0,0 @@ -package toml - -import ( - "bytes" - "errors" - "fmt" - "reflect" - "strings" - "testing" - "time" -) - -type failingWriter struct { - failAt int - written int - buffer bytes.Buffer -} - -func (f *failingWriter) Write(p []byte) (n int, err error) { - count := len(p) - toWrite := f.failAt - (count + f.written) - if toWrite < 0 { - toWrite = 0 - } - if toWrite > count { - f.written += count - f.buffer.Write(p) - return count, nil - } - - f.buffer.Write(p[:toWrite]) - f.written = f.failAt - return toWrite, fmt.Errorf("failingWriter failed after writting %d bytes", f.written) -} - -func assertErrorString(t *testing.T, expected string, err error) { - expectedErr := errors.New(expected) - if err == nil || err.Error() != expectedErr.Error() { - t.Errorf("expecting error %s, but got %s instead", expected, err) - } -} - -func TestTreeWriteToEmptyTable(t *testing.T) { - doc := `[[empty-tables]] -[[empty-tables]]` - - toml, err := Load(doc) - if err != nil { - t.Fatal("Unexpected Load error:", err) - } - tomlString, err := toml.ToTomlString() - if err != nil { - t.Fatal("Unexpected ToTomlString error:", err) - } - - expected := ` -[[empty-tables]] - -[[empty-tables]] -` - - if tomlString != expected { - t.Fatalf("Expected:\n%s\nGot:\n%s", expected, tomlString) - } -} - -func TestTreeWriteToTomlString(t *testing.T) { - toml, err := Load(`name = { first = "Tom", last = "Preston-Werner" } -points = { x = 1, y = 2 }`) - - if err != nil { - t.Fatal("Unexpected error:", err) - } - - tomlString, _ := toml.ToTomlString() - reparsedTree, err := Load(tomlString) - - assertTree(t, reparsedTree, err, map[string]interface{}{ - "name": map[string]interface{}{ - "first": "Tom", - "last": "Preston-Werner", - }, - "points": map[string]interface{}{ - "x": int64(1), - "y": int64(2), - }, - }) -} - -func TestTreeWriteToTomlStringSimple(t *testing.T) { - tree, err := Load("[foo]\n\n[[foo.bar]]\na = 42\n\n[[foo.bar]]\na = 69\n") - if err != nil { - t.Errorf("Test failed to parse: %v", err) - return - } - result, err := tree.ToTomlString() - if err != nil { - t.Errorf("Unexpected error: %s", err) - } - expected := "\n[foo]\n\n [[foo.bar]]\n a = 42\n\n [[foo.bar]]\n a = 69\n" - if result != expected { - t.Errorf("Expected got '%s', expected '%s'", result, expected) - } -} - -func TestTreeWriteToTomlStringKeysOrders(t *testing.T) { - for i := 0; i < 100; i++ { - tree, _ := Load(` - foobar = true - bar = "baz" - foo = 1 - [qux] - foo = 1 - bar = "baz2"`) - - stringRepr, _ := tree.ToTomlString() - - t.Log("Intermediate string representation:") - t.Log(stringRepr) - - r := strings.NewReader(stringRepr) - toml, err := LoadReader(r) - - if err != nil { - t.Fatal("Unexpected error:", err) - } - - assertTree(t, toml, err, map[string]interface{}{ - "foobar": true, - "bar": "baz", - "foo": 1, - "qux": map[string]interface{}{ - "foo": 1, - "bar": "baz2", - }, - }) - } -} - -func testMaps(t *testing.T, actual, expected map[string]interface{}) { - if !reflect.DeepEqual(actual, expected) { - t.Fatal("trees aren't equal.\n", "Expected:\n", expected, "\nActual:\n", actual) - } -} - -func TestTreeWriteToMapSimple(t *testing.T) { - tree, _ := Load("a = 42\nb = 17") - - expected := map[string]interface{}{ - "a": int64(42), - "b": int64(17), - } - - testMaps(t, tree.ToMap(), expected) -} - -func TestTreeWriteToInvalidTreeSimpleValue(t *testing.T) { - tree := Tree{values: map[string]interface{}{"foo": int8(1)}} - _, err := tree.ToTomlString() - assertErrorString(t, "invalid value type at foo: int8", err) -} - -func TestTreeWriteToInvalidTreeTomlValue(t *testing.T) { - tree := Tree{values: map[string]interface{}{"foo": &tomlValue{int8(1), Position{}}}} - _, err := tree.ToTomlString() - assertErrorString(t, "unsupported value type int8: 1", err) -} - -func TestTreeWriteToInvalidTreeTomlValueArray(t *testing.T) { - tree := Tree{values: map[string]interface{}{"foo": &tomlValue{[]interface{}{int8(1)}, Position{}}}} - _, err := tree.ToTomlString() - assertErrorString(t, "unsupported value type int8: 1", err) -} - -func TestTreeWriteToFailingWriterInSimpleValue(t *testing.T) { - toml, _ := Load(`a = 2`) - writer := failingWriter{failAt: 0, written: 0} - _, err := toml.WriteTo(&writer) - assertErrorString(t, "failingWriter failed after writting 0 bytes", err) -} - -func TestTreeWriteToFailingWriterInTable(t *testing.T) { - toml, _ := Load(` -[b] -a = 2`) - writer := failingWriter{failAt: 2, written: 0} - _, err := toml.WriteTo(&writer) - assertErrorString(t, "failingWriter failed after writting 2 bytes", err) - - writer = failingWriter{failAt: 13, written: 0} - _, err = toml.WriteTo(&writer) - assertErrorString(t, "failingWriter failed after writting 13 bytes", err) -} - -func TestTreeWriteToFailingWriterInArray(t *testing.T) { - toml, _ := Load(` -[[b]] -a = 2`) - writer := failingWriter{failAt: 2, written: 0} - _, err := toml.WriteTo(&writer) - assertErrorString(t, "failingWriter failed after writting 2 bytes", err) - - writer = failingWriter{failAt: 15, written: 0} - _, err = toml.WriteTo(&writer) - assertErrorString(t, "failingWriter failed after writting 15 bytes", err) -} - -func TestTreeWriteToMapExampleFile(t *testing.T) { - tree, _ := LoadFile("example.toml") - expected := map[string]interface{}{ - "title": "TOML Example", - "owner": map[string]interface{}{ - "name": "Tom Preston-Werner", - "organization": "GitHub", - "bio": "GitHub Cofounder & CEO\nLikes tater tots and beer.", - "dob": time.Date(1979, time.May, 27, 7, 32, 0, 0, time.UTC), - }, - "database": map[string]interface{}{ - "server": "192.168.1.1", - "ports": []interface{}{int64(8001), int64(8001), int64(8002)}, - "connection_max": int64(5000), - "enabled": true, - }, - "servers": map[string]interface{}{ - "alpha": map[string]interface{}{ - "ip": "10.0.0.1", - "dc": "eqdc10", - }, - "beta": map[string]interface{}{ - "ip": "10.0.0.2", - "dc": "eqdc10", - }, - }, - "clients": map[string]interface{}{ - "data": []interface{}{ - []interface{}{"gamma", "delta"}, - []interface{}{int64(1), int64(2)}, - }, - }, - } - testMaps(t, tree.ToMap(), expected) -} - -func TestTreeWriteToMapWithTablesInMultipleChunks(t *testing.T) { - tree, _ := Load(` - [[menu.main]] - a = "menu 1" - b = "menu 2" - [[menu.main]] - c = "menu 3" - d = "menu 4"`) - expected := map[string]interface{}{ - "menu": map[string]interface{}{ - "main": []interface{}{ - map[string]interface{}{"a": "menu 1", "b": "menu 2"}, - map[string]interface{}{"c": "menu 3", "d": "menu 4"}, - }, - }, - } - treeMap := tree.ToMap() - - testMaps(t, treeMap, expected) -} - -func TestTreeWriteToMapWithArrayOfInlineTables(t *testing.T) { - tree, _ := Load(` - [params] - language_tabs = [ - { key = "shell", name = "Shell" }, - { key = "ruby", name = "Ruby" }, - { key = "python", name = "Python" } - ]`) - - expected := map[string]interface{}{ - "params": map[string]interface{}{ - "language_tabs": []interface{}{ - map[string]interface{}{ - "key": "shell", - "name": "Shell", - }, - map[string]interface{}{ - "key": "ruby", - "name": "Ruby", - }, - map[string]interface{}{ - "key": "python", - "name": "Python", - }, - }, - }, - } - - treeMap := tree.ToMap() - testMaps(t, treeMap, expected) -} - -func TestTreeWriteToFloat(t *testing.T) { - tree, err := Load(`a = 3.0`) - if err != nil { - t.Fatal(err) - } - str, err := tree.ToTomlString() - if err != nil { - t.Fatal(err) - } - expected := `a = 3.0` - if strings.TrimSpace(str) != strings.TrimSpace(expected) { - t.Fatalf("Expected:\n%s\nGot:\n%s", expected, str) - } -} - -func BenchmarkTreeToTomlString(b *testing.B) { - toml, err := Load(sampleHard) - if err != nil { - b.Fatal("Unexpected error:", err) - } - - for i := 0; i < b.N; i++ { - _, err := toml.ToTomlString() - if err != nil { - b.Fatal(err) - } - } -} - -var sampleHard = `# Test file for TOML -# Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate -# This part you'll really hate - -[the] -test_string = "You'll hate me after this - #" # " Annoying, isn't it? - - [the.hard] - test_array = [ "] ", " # "] # ] There you go, parse this! - test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ] - # You didn't think it'd as easy as chucking out the last #, did you? - another_test_string = " Same thing, but with a string #" - harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too" - # Things will get harder - - [the.hard."bit#"] - "what?" = "You don't think some user won't do that?" - multi_line_array = [ - "]", - # ] Oh yes I did - ] - -# Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test - -#[error] if you didn't catch this, your parser is broken -#string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this -#array = [ -# "This might most likely happen in multiline arrays", -# Like here, -# "or here, -# and here" -# ] End of array comment, forgot the # -#number = 3.14 pi <--again forgot the # ` diff --git a/vendor/github.com/spf13/pflag/.gitignore b/vendor/github.com/spf13/pflag/.gitignore new file mode 100644 index 000000000..c3da29013 --- /dev/null +++ b/vendor/github.com/spf13/pflag/.gitignore @@ -0,0 +1,2 @@ +.idea/* + diff --git a/vendor/github.com/spf13/pflag/.travis.yml b/vendor/github.com/spf13/pflag/.travis.yml new file mode 100644 index 000000000..707bdc39a --- /dev/null +++ b/vendor/github.com/spf13/pflag/.travis.yml @@ -0,0 +1,20 @@ +sudo: false + +language: go + +go: + - 1.6.3 + - 1.7.3 + - tip + +matrix: + allow_failures: + - go: tip +install: + - go get github.com/golang/lint/golint + - export PATH=$GOPATH/bin:$PATH + - go install ./... + +script: + - verify/all.sh -v + - go test ./... diff --git a/vendor/github.com/fsnotify/fsnotify/LICENSE b/vendor/github.com/spf13/pflag/LICENSE similarity index 96% rename from vendor/github.com/fsnotify/fsnotify/LICENSE rename to vendor/github.com/spf13/pflag/LICENSE index f21e54080..63ed1cfea 100644 --- a/vendor/github.com/fsnotify/fsnotify/LICENSE +++ b/vendor/github.com/spf13/pflag/LICENSE @@ -1,5 +1,5 @@ +Copyright (c) 2012 Alex Ogier. All rights reserved. Copyright (c) 2012 The Go Authors. All rights reserved. -Copyright (c) 2012 fsnotify Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/spf13/pflag/README.md b/vendor/github.com/spf13/pflag/README.md new file mode 100644 index 000000000..eefb46dec --- /dev/null +++ b/vendor/github.com/spf13/pflag/README.md @@ -0,0 +1,277 @@ +[![Build Status](https://travis-ci.org/spf13/pflag.svg?branch=master)](https://travis-ci.org/spf13/pflag) +[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/pflag)](https://goreportcard.com/report/github.com/spf13/pflag) +[![GoDoc](https://godoc.org/github.com/spf13/pflag?status.svg)](https://godoc.org/github.com/spf13/pflag) + +## Description + +pflag is a drop-in replacement for Go's flag package, implementing +POSIX/GNU-style --flags. + +pflag is compatible with the [GNU extensions to the POSIX recommendations +for command-line options][1]. For a more precise description, see the +"Command-line flag syntax" section below. + +[1]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html + +pflag is available under the same style of BSD license as the Go language, +which can be found in the LICENSE file. + +## Installation + +pflag is available using the standard `go get` command. + +Install by running: + + go get github.com/spf13/pflag + +Run tests by running: + + go test github.com/spf13/pflag + +## Usage + +pflag is a drop-in replacement of Go's native flag package. If you import +pflag under the name "flag" then all code should continue to function +with no changes. + +``` go +import flag "github.com/spf13/pflag" +``` + +There is one exception to this: if you directly instantiate the Flag struct +there is one more field "Shorthand" that you will need to set. +Most code never instantiates this struct directly, and instead uses +functions such as String(), BoolVar(), and Var(), and is therefore +unaffected. + +Define flags using flag.String(), Bool(), Int(), etc. + +This declares an integer flag, -flagname, stored in the pointer ip, with type *int. + +``` go +var ip *int = flag.Int("flagname", 1234, "help message for flagname") +``` + +If you like, you can bind the flag to a variable using the Var() functions. + +``` go +var flagvar int +func init() { + flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") +} +``` + +Or you can create custom flags that satisfy the Value interface (with +pointer receivers) and couple them to flag parsing by + +``` go +flag.Var(&flagVal, "name", "help message for flagname") +``` + +For such flags, the default value is just the initial value of the variable. + +After all flags are defined, call + +``` go +flag.Parse() +``` + +to parse the command line into the defined flags. + +Flags may then be used directly. If you're using the flags themselves, +they are all pointers; if you bind to variables, they're values. + +``` go +fmt.Println("ip has value ", *ip) +fmt.Println("flagvar has value ", flagvar) +``` + +There are helpers function to get values later if you have the FlagSet but +it was difficult to keep up with all of the flag pointers in your code. +If you have a pflag.FlagSet with a flag called 'flagname' of type int you +can use GetInt() to get the int value. But notice that 'flagname' must exist +and it must be an int. GetString("flagname") will fail. + +``` go +i, err := flagset.GetInt("flagname") +``` + +After parsing, the arguments after the flag are available as the +slice flag.Args() or individually as flag.Arg(i). +The arguments are indexed from 0 through flag.NArg()-1. + +The pflag package also defines some new functions that are not in flag, +that give one-letter shorthands for flags. You can use these by appending +'P' to the name of any function that defines a flag. + +``` go +var ip = flag.IntP("flagname", "f", 1234, "help message") +var flagvar bool +func init() { + flag.BoolVarP(&flagvar, "boolname", "b", true, "help message") +} +flag.VarP(&flagVal, "varname", "v", "help message") +``` + +Shorthand letters can be used with single dashes on the command line. +Boolean shorthand flags can be combined with other shorthand flags. + +The default set of command-line flags is controlled by +top-level functions. The FlagSet type allows one to define +independent sets of flags, such as to implement subcommands +in a command-line interface. The methods of FlagSet are +analogous to the top-level functions for the command-line +flag set. + +## Setting no option default values for flags + +After you create a flag it is possible to set the pflag.NoOptDefVal for +the given flag. Doing this changes the meaning of the flag slightly. If +a flag has a NoOptDefVal and the flag is set on the command line without +an option the flag will be set to the NoOptDefVal. For example given: + +``` go +var ip = flag.IntP("flagname", "f", 1234, "help message") +flag.Lookup("flagname").NoOptDefVal = "4321" +``` + +Would result in something like + +| Parsed Arguments | Resulting Value | +| ------------- | ------------- | +| --flagname=1357 | ip=1357 | +| --flagname | ip=4321 | +| [nothing] | ip=1234 | + +## Command line flag syntax + +``` +--flag // boolean flags, or flags with no option default values +--flag x // only on flags without a default value +--flag=x +``` + +Unlike the flag package, a single dash before an option means something +different than a double dash. Single dashes signify a series of shorthand +letters for flags. All but the last shorthand letter must be boolean flags +or a flag with a default value + +``` +// boolean or flags where the 'no option default value' is set +-f +-f=true +-abc +but +-b true is INVALID + +// non-boolean and flags without a 'no option default value' +-n 1234 +-n=1234 +-n1234 + +// mixed +-abcs "hello" +-absd="hello" +-abcs1234 +``` + +Flag parsing stops after the terminator "--". Unlike the flag package, +flags can be interspersed with arguments anywhere on the command line +before this terminator. + +Integer flags accept 1234, 0664, 0x1234 and may be negative. +Boolean flags (in their long form) accept 1, 0, t, f, true, false, +TRUE, FALSE, True, False. +Duration flags accept any input valid for time.ParseDuration. + +## Mutating or "Normalizing" Flag names + +It is possible to set a custom flag name 'normalization function.' It allows flag names to be mutated both when created in the code and when used on the command line to some 'normalized' form. The 'normalized' form is used for comparison. Two examples of using the custom normalization func follow. + +**Example #1**: You want -, _, and . in flags to compare the same. aka --my-flag == --my_flag == --my.flag + +``` go +func wordSepNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName { + from := []string{"-", "_"} + to := "." + for _, sep := range from { + name = strings.Replace(name, sep, to, -1) + } + return pflag.NormalizedName(name) +} + +myFlagSet.SetNormalizeFunc(wordSepNormalizeFunc) +``` + +**Example #2**: You want to alias two flags. aka --old-flag-name == --new-flag-name + +``` go +func aliasNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName { + switch name { + case "old-flag-name": + name = "new-flag-name" + break + } + return pflag.NormalizedName(name) +} + +myFlagSet.SetNormalizeFunc(aliasNormalizeFunc) +``` + +## Deprecating a flag or its shorthand +It is possible to deprecate a flag, or just its shorthand. Deprecating a flag/shorthand hides it from help text and prints a usage message when the deprecated flag/shorthand is used. + +**Example #1**: You want to deprecate a flag named "badflag" as well as inform the users what flag they should use instead. +```go +// deprecate a flag by specifying its name and a usage message +flags.MarkDeprecated("badflag", "please use --good-flag instead") +``` +This hides "badflag" from help text, and prints `Flag --badflag has been deprecated, please use --good-flag instead` when "badflag" is used. + +**Example #2**: You want to keep a flag name "noshorthandflag" but deprecate its shortname "n". +```go +// deprecate a flag shorthand by specifying its flag name and a usage message +flags.MarkShorthandDeprecated("noshorthandflag", "please use --noshorthandflag only") +``` +This hides the shortname "n" from help text, and prints `Flag shorthand -n has been deprecated, please use --noshorthandflag only` when the shorthand "n" is used. + +Note that usage message is essential here, and it should not be empty. + +## Hidden flags +It is possible to mark a flag as hidden, meaning it will still function as normal, however will not show up in usage/help text. + +**Example**: You have a flag named "secretFlag" that you need for internal use only and don't want it showing up in help text, or for its usage text to be available. +```go +// hide a flag by specifying its name +flags.MarkHidden("secretFlag") +``` + +## Supporting Go flags when using pflag +In order to support flags defined using Go's `flag` package, they must be added to the `pflag` flagset. This is usually necessary +to support flags defined by third-party dependencies (e.g. `golang/glog`). + +**Example**: You want to add the Go flags to the `CommandLine` flagset +```go +import ( + goflag "flag" + flag "github.com/spf13/pflag" +) + +var ip *int = flag.Int("flagname", 1234, "help message for flagname") + +func main() { + flag.CommandLine.AddGoFlagSet(goflag.CommandLine) + flag.Parse() +} +``` + +## More info + +You can see the full reference documentation of the pflag package +[at godoc.org][3], or through go's standard documentation system by +running `godoc -http=:6060` and browsing to +[http://localhost:6060/pkg/github.com/ogier/pflag][2] after +installation. + +[2]: http://localhost:6060/pkg/github.com/ogier/pflag +[3]: http://godoc.org/github.com/ogier/pflag diff --git a/vendor/github.com/spf13/pflag/bool.go b/vendor/github.com/spf13/pflag/bool.go new file mode 100644 index 000000000..c4c5c0bfd --- /dev/null +++ b/vendor/github.com/spf13/pflag/bool.go @@ -0,0 +1,94 @@ +package pflag + +import "strconv" + +// optional interface to indicate boolean flags that can be +// supplied without "=value" text +type boolFlag interface { + Value + IsBoolFlag() bool +} + +// -- bool Value +type boolValue bool + +func newBoolValue(val bool, p *bool) *boolValue { + *p = val + return (*boolValue)(p) +} + +func (b *boolValue) Set(s string) error { + v, err := strconv.ParseBool(s) + *b = boolValue(v) + return err +} + +func (b *boolValue) Type() string { + return "bool" +} + +func (b *boolValue) String() string { return strconv.FormatBool(bool(*b)) } + +func (b *boolValue) IsBoolFlag() bool { return true } + +func boolConv(sval string) (interface{}, error) { + return strconv.ParseBool(sval) +} + +// GetBool return the bool value of a flag with the given name +func (f *FlagSet) GetBool(name string) (bool, error) { + val, err := f.getFlagType(name, "bool", boolConv) + if err != nil { + return false, err + } + return val.(bool), nil +} + +// BoolVar defines a bool flag with specified name, default value, and usage string. +// The argument p points to a bool variable in which to store the value of the flag. +func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) { + f.BoolVarP(p, name, "", value, usage) +} + +// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BoolVarP(p *bool, name, shorthand string, value bool, usage string) { + flag := f.VarPF(newBoolValue(value, p), name, shorthand, usage) + flag.NoOptDefVal = "true" +} + +// BoolVar defines a bool flag with specified name, default value, and usage string. +// The argument p points to a bool variable in which to store the value of the flag. +func BoolVar(p *bool, name string, value bool, usage string) { + BoolVarP(p, name, "", value, usage) +} + +// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash. +func BoolVarP(p *bool, name, shorthand string, value bool, usage string) { + flag := CommandLine.VarPF(newBoolValue(value, p), name, shorthand, usage) + flag.NoOptDefVal = "true" +} + +// Bool defines a bool flag with specified name, default value, and usage string. +// The return value is the address of a bool variable that stores the value of the flag. +func (f *FlagSet) Bool(name string, value bool, usage string) *bool { + return f.BoolP(name, "", value, usage) +} + +// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BoolP(name, shorthand string, value bool, usage string) *bool { + p := new(bool) + f.BoolVarP(p, name, shorthand, value, usage) + return p +} + +// Bool defines a bool flag with specified name, default value, and usage string. +// The return value is the address of a bool variable that stores the value of the flag. +func Bool(name string, value bool, usage string) *bool { + return BoolP(name, "", value, usage) +} + +// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash. +func BoolP(name, shorthand string, value bool, usage string) *bool { + b := CommandLine.BoolP(name, shorthand, value, usage) + return b +} diff --git a/vendor/github.com/spf13/pflag/bool_slice.go b/vendor/github.com/spf13/pflag/bool_slice.go new file mode 100644 index 000000000..5af02f1a7 --- /dev/null +++ b/vendor/github.com/spf13/pflag/bool_slice.go @@ -0,0 +1,147 @@ +package pflag + +import ( + "io" + "strconv" + "strings" +) + +// -- boolSlice Value +type boolSliceValue struct { + value *[]bool + changed bool +} + +func newBoolSliceValue(val []bool, p *[]bool) *boolSliceValue { + bsv := new(boolSliceValue) + bsv.value = p + *bsv.value = val + return bsv +} + +// Set converts, and assigns, the comma-separated boolean argument string representation as the []bool value of this flag. +// If Set is called on a flag that already has a []bool assigned, the newly converted values will be appended. +func (s *boolSliceValue) Set(val string) error { + + // remove all quote characters + rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "") + + // read flag arguments with CSV parser + boolStrSlice, err := readAsCSV(rmQuote.Replace(val)) + if err != nil && err != io.EOF { + return err + } + + // parse boolean values into slice + out := make([]bool, 0, len(boolStrSlice)) + for _, boolStr := range boolStrSlice { + b, err := strconv.ParseBool(strings.TrimSpace(boolStr)) + if err != nil { + return err + } + out = append(out, b) + } + + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + + s.changed = true + + return nil +} + +// Type returns a string that uniquely represents this flag's type. +func (s *boolSliceValue) Type() string { + return "boolSlice" +} + +// String defines a "native" format for this boolean slice flag value. +func (s *boolSliceValue) String() string { + + boolStrSlice := make([]string, len(*s.value)) + for i, b := range *s.value { + boolStrSlice[i] = strconv.FormatBool(b) + } + + out, _ := writeAsCSV(boolStrSlice) + + return "[" + out + "]" +} + +func boolSliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []bool{}, nil + } + ss := strings.Split(val, ",") + out := make([]bool, len(ss)) + for i, t := range ss { + var err error + out[i], err = strconv.ParseBool(t) + if err != nil { + return nil, err + } + } + return out, nil +} + +// GetBoolSlice returns the []bool value of a flag with the given name. +func (f *FlagSet) GetBoolSlice(name string) ([]bool, error) { + val, err := f.getFlagType(name, "boolSlice", boolSliceConv) + if err != nil { + return []bool{}, err + } + return val.([]bool), nil +} + +// BoolSliceVar defines a boolSlice flag with specified name, default value, and usage string. +// The argument p points to a []bool variable in which to store the value of the flag. +func (f *FlagSet) BoolSliceVar(p *[]bool, name string, value []bool, usage string) { + f.VarP(newBoolSliceValue(value, p), name, "", usage) +} + +// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) { + f.VarP(newBoolSliceValue(value, p), name, shorthand, usage) +} + +// BoolSliceVar defines a []bool flag with specified name, default value, and usage string. +// The argument p points to a []bool variable in which to store the value of the flag. +func BoolSliceVar(p *[]bool, name string, value []bool, usage string) { + CommandLine.VarP(newBoolSliceValue(value, p), name, "", usage) +} + +// BoolSliceVarP is like BoolSliceVar, but accepts a shorthand letter that can be used after a single dash. +func BoolSliceVarP(p *[]bool, name, shorthand string, value []bool, usage string) { + CommandLine.VarP(newBoolSliceValue(value, p), name, shorthand, usage) +} + +// BoolSlice defines a []bool flag with specified name, default value, and usage string. +// The return value is the address of a []bool variable that stores the value of the flag. +func (f *FlagSet) BoolSlice(name string, value []bool, usage string) *[]bool { + p := []bool{} + f.BoolSliceVarP(&p, name, "", value, usage) + return &p +} + +// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool { + p := []bool{} + f.BoolSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// BoolSlice defines a []bool flag with specified name, default value, and usage string. +// The return value is the address of a []bool variable that stores the value of the flag. +func BoolSlice(name string, value []bool, usage string) *[]bool { + return CommandLine.BoolSliceP(name, "", value, usage) +} + +// BoolSliceP is like BoolSlice, but accepts a shorthand letter that can be used after a single dash. +func BoolSliceP(name, shorthand string, value []bool, usage string) *[]bool { + return CommandLine.BoolSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/bool_slice_test.go b/vendor/github.com/spf13/pflag/bool_slice_test.go new file mode 100644 index 000000000..b617dd237 --- /dev/null +++ b/vendor/github.com/spf13/pflag/bool_slice_test.go @@ -0,0 +1,215 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" + "testing" +) + +func setUpBSFlagSet(bsp *[]bool) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.BoolSliceVar(bsp, "bs", []bool{}, "Command separated list!") + return f +} + +func setUpBSFlagSetWithDefault(bsp *[]bool) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.BoolSliceVar(bsp, "bs", []bool{false, true}, "Command separated list!") + return f +} + +func TestEmptyBS(t *testing.T) { + var bs []bool + f := setUpBSFlagSet(&bs) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getBS, err := f.GetBoolSlice("bs") + if err != nil { + t.Fatal("got an error from GetBoolSlice():", err) + } + if len(getBS) != 0 { + t.Fatalf("got bs %v with len=%d but expected length=0", getBS, len(getBS)) + } +} + +func TestBS(t *testing.T) { + var bs []bool + f := setUpBSFlagSet(&bs) + + vals := []string{"1", "F", "TRUE", "0"} + arg := fmt.Sprintf("--bs=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range bs { + b, err := strconv.ParseBool(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if b != v { + t.Fatalf("expected is[%d] to be %s but got: %t", i, vals[i], v) + } + } + getBS, err := f.GetBoolSlice("bs") + if err != nil { + t.Fatalf("got error: %v", err) + } + for i, v := range getBS { + b, err := strconv.ParseBool(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if b != v { + t.Fatalf("expected bs[%d] to be %s but got: %t from GetBoolSlice", i, vals[i], v) + } + } +} + +func TestBSDefault(t *testing.T) { + var bs []bool + f := setUpBSFlagSetWithDefault(&bs) + + vals := []string{"false", "T"} + + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range bs { + b, err := strconv.ParseBool(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if b != v { + t.Fatalf("expected bs[%d] to be %t from GetBoolSlice but got: %t", i, b, v) + } + } + + getBS, err := f.GetBoolSlice("bs") + if err != nil { + t.Fatal("got an error from GetBoolSlice():", err) + } + for i, v := range getBS { + b, err := strconv.ParseBool(vals[i]) + if err != nil { + t.Fatal("got an error from GetBoolSlice():", err) + } + if b != v { + t.Fatalf("expected bs[%d] to be %t from GetBoolSlice but got: %t", i, b, v) + } + } +} + +func TestBSWithDefault(t *testing.T) { + var bs []bool + f := setUpBSFlagSetWithDefault(&bs) + + vals := []string{"FALSE", "1"} + arg := fmt.Sprintf("--bs=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range bs { + b, err := strconv.ParseBool(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if b != v { + t.Fatalf("expected bs[%d] to be %t but got: %t", i, b, v) + } + } + + getBS, err := f.GetBoolSlice("bs") + if err != nil { + t.Fatal("got an error from GetBoolSlice():", err) + } + for i, v := range getBS { + b, err := strconv.ParseBool(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if b != v { + t.Fatalf("expected bs[%d] to be %t from GetBoolSlice but got: %t", i, b, v) + } + } +} + +func TestBSCalledTwice(t *testing.T) { + var bs []bool + f := setUpBSFlagSet(&bs) + + in := []string{"T,F", "T"} + expected := []bool{true, false, true} + argfmt := "--bs=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range bs { + if expected[i] != v { + t.Fatalf("expected bs[%d] to be %t but got %t", i, expected[i], v) + } + } +} + +func TestBSBadQuoting(t *testing.T) { + + tests := []struct { + Want []bool + FlagArg []string + }{ + { + Want: []bool{true, false, true}, + FlagArg: []string{"1", "0", "true"}, + }, + { + Want: []bool{true, false}, + FlagArg: []string{"True", "F"}, + }, + { + Want: []bool{true, false}, + FlagArg: []string{"T", "0"}, + }, + { + Want: []bool{true, false}, + FlagArg: []string{"1", "0"}, + }, + { + Want: []bool{true, false, false}, + FlagArg: []string{"true,false", "false"}, + }, + { + Want: []bool{true, false, false, true, false, true, false}, + FlagArg: []string{`"true,false,false,1,0, T"`, " false "}, + }, + { + Want: []bool{false, false, true, false, true, false, true}, + FlagArg: []string{`"0, False, T,false , true,F"`, "true"}, + }, + } + + for i, test := range tests { + + var bs []bool + f := setUpBSFlagSet(&bs) + + if err := f.Parse([]string{fmt.Sprintf("--bs=%s", strings.Join(test.FlagArg, ","))}); err != nil { + t.Fatalf("flag parsing failed with error: %s\nparsing:\t%#v\nwant:\t\t%#v", + err, test.FlagArg, test.Want[i]) + } + + for j, b := range bs { + if b != test.Want[j] { + t.Fatalf("bad value parsed for test %d on bool %d:\nwant:\t%t\ngot:\t%t", i, j, test.Want[j], b) + } + } + } +} diff --git a/vendor/github.com/spf13/pflag/bool_test.go b/vendor/github.com/spf13/pflag/bool_test.go new file mode 100644 index 000000000..a4319e79f --- /dev/null +++ b/vendor/github.com/spf13/pflag/bool_test.go @@ -0,0 +1,179 @@ +// Copyright 2009 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 pflag + +import ( + "bytes" + "strconv" + "testing" +) + +// This value can be a boolean ("true", "false") or "maybe" +type triStateValue int + +const ( + triStateFalse triStateValue = 0 + triStateTrue triStateValue = 1 + triStateMaybe triStateValue = 2 +) + +const strTriStateMaybe = "maybe" + +func (v *triStateValue) IsBoolFlag() bool { + return true +} + +func (v *triStateValue) Get() interface{} { + return triStateValue(*v) +} + +func (v *triStateValue) Set(s string) error { + if s == strTriStateMaybe { + *v = triStateMaybe + return nil + } + boolVal, err := strconv.ParseBool(s) + if boolVal { + *v = triStateTrue + } else { + *v = triStateFalse + } + return err +} + +func (v *triStateValue) String() string { + if *v == triStateMaybe { + return strTriStateMaybe + } + return strconv.FormatBool(*v == triStateTrue) +} + +// The type of the flag as required by the pflag.Value interface +func (v *triStateValue) Type() string { + return "version" +} + +func setUpFlagSet(tristate *triStateValue) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + *tristate = triStateFalse + flag := f.VarPF(tristate, "tristate", "t", "tristate value (true, maybe or false)") + flag.NoOptDefVal = "true" + return f +} + +func TestExplicitTrue(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + err := f.Parse([]string{"--tristate=true"}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateTrue { + t.Fatal("expected", triStateTrue, "(triStateTrue) but got", tristate, "instead") + } +} + +func TestImplicitTrue(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + err := f.Parse([]string{"--tristate"}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateTrue { + t.Fatal("expected", triStateTrue, "(triStateTrue) but got", tristate, "instead") + } +} + +func TestShortFlag(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + err := f.Parse([]string{"-t"}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateTrue { + t.Fatal("expected", triStateTrue, "(triStateTrue) but got", tristate, "instead") + } +} + +func TestShortFlagExtraArgument(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + // The"maybe"turns into an arg, since short boolean options will only do true/false + err := f.Parse([]string{"-t", "maybe"}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateTrue { + t.Fatal("expected", triStateTrue, "(triStateTrue) but got", tristate, "instead") + } + args := f.Args() + if len(args) != 1 || args[0] != "maybe" { + t.Fatal("expected an extra 'maybe' argument to stick around") + } +} + +func TestExplicitMaybe(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + err := f.Parse([]string{"--tristate=maybe"}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateMaybe { + t.Fatal("expected", triStateMaybe, "(triStateMaybe) but got", tristate, "instead") + } +} + +func TestExplicitFalse(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + err := f.Parse([]string{"--tristate=false"}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateFalse { + t.Fatal("expected", triStateFalse, "(triStateFalse) but got", tristate, "instead") + } +} + +func TestImplicitFalse(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + if tristate != triStateFalse { + t.Fatal("expected", triStateFalse, "(triStateFalse) but got", tristate, "instead") + } +} + +func TestInvalidValue(t *testing.T) { + var tristate triStateValue + f := setUpFlagSet(&tristate) + var buf bytes.Buffer + f.SetOutput(&buf) + err := f.Parse([]string{"--tristate=invalid"}) + if err == nil { + t.Fatal("expected an error but did not get any, tristate has value", tristate) + } +} + +func TestBoolP(t *testing.T) { + b := BoolP("bool", "b", false, "bool value in CommandLine") + c := BoolP("c", "c", false, "other bool value") + args := []string{"--bool"} + if err := CommandLine.Parse(args); err != nil { + t.Error("expected no error, got ", err) + } + if *b != true { + t.Errorf("expected b=true got b=%v", *b) + } + if *c != false { + t.Errorf("expect c=false got c=%v", *c) + } +} diff --git a/vendor/github.com/spf13/pflag/count.go b/vendor/github.com/spf13/pflag/count.go new file mode 100644 index 000000000..d22be41f2 --- /dev/null +++ b/vendor/github.com/spf13/pflag/count.go @@ -0,0 +1,94 @@ +package pflag + +import "strconv" + +// -- count Value +type countValue int + +func newCountValue(val int, p *int) *countValue { + *p = val + return (*countValue)(p) +} + +func (i *countValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + // -1 means that no specific value was passed, so increment + if v == -1 { + *i = countValue(*i + 1) + } else { + *i = countValue(v) + } + return err +} + +func (i *countValue) Type() string { + return "count" +} + +func (i *countValue) String() string { return strconv.Itoa(int(*i)) } + +func countConv(sval string) (interface{}, error) { + i, err := strconv.Atoi(sval) + if err != nil { + return nil, err + } + return i, nil +} + +// GetCount return the int value of a flag with the given name +func (f *FlagSet) GetCount(name string) (int, error) { + val, err := f.getFlagType(name, "count", countConv) + if err != nil { + return 0, err + } + return val.(int), nil +} + +// CountVar defines a count flag with specified name, default value, and usage string. +// The argument p points to an int variable in which to store the value of the flag. +// A count flag will add 1 to its value evey time it is found on the command line +func (f *FlagSet) CountVar(p *int, name string, usage string) { + f.CountVarP(p, name, "", usage) +} + +// CountVarP is like CountVar only take a shorthand for the flag name. +func (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) { + flag := f.VarPF(newCountValue(0, p), name, shorthand, usage) + flag.NoOptDefVal = "-1" +} + +// CountVar like CountVar only the flag is placed on the CommandLine instead of a given flag set +func CountVar(p *int, name string, usage string) { + CommandLine.CountVar(p, name, usage) +} + +// CountVarP is like CountVar only take a shorthand for the flag name. +func CountVarP(p *int, name, shorthand string, usage string) { + CommandLine.CountVarP(p, name, shorthand, usage) +} + +// Count defines a count flag with specified name, default value, and usage string. +// The return value is the address of an int variable that stores the value of the flag. +// A count flag will add 1 to its value evey time it is found on the command line +func (f *FlagSet) Count(name string, usage string) *int { + p := new(int) + f.CountVarP(p, name, "", usage) + return p +} + +// CountP is like Count only takes a shorthand for the flag name. +func (f *FlagSet) CountP(name, shorthand string, usage string) *int { + p := new(int) + f.CountVarP(p, name, shorthand, usage) + return p +} + +// Count like Count only the flag is placed on the CommandLine isntead of a given flag set +func Count(name string, usage string) *int { + return CommandLine.CountP(name, "", usage) +} + +// CountP is like Count only takes a shorthand for the flag name. +func CountP(name, shorthand string, usage string) *int { + return CommandLine.CountP(name, shorthand, usage) +} diff --git a/vendor/github.com/spf13/pflag/count_test.go b/vendor/github.com/spf13/pflag/count_test.go new file mode 100644 index 000000000..460d96a6f --- /dev/null +++ b/vendor/github.com/spf13/pflag/count_test.go @@ -0,0 +1,52 @@ +package pflag + +import ( + "os" + "testing" +) + +func setUpCount(c *int) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.CountVarP(c, "verbose", "v", "a counter") + return f +} + +func TestCount(t *testing.T) { + testCases := []struct { + input []string + success bool + expected int + }{ + {[]string{"-vvv"}, true, 3}, + {[]string{"-v", "-v", "-v"}, true, 3}, + {[]string{"-v", "--verbose", "-v"}, true, 3}, + {[]string{"-v=3", "-v"}, true, 4}, + {[]string{"-v=a"}, false, 0}, + } + + devnull, _ := os.Open(os.DevNull) + os.Stderr = devnull + for i := range testCases { + var count int + f := setUpCount(&count) + + tc := &testCases[i] + + err := f.Parse(tc.input) + if err != nil && tc.success == true { + t.Errorf("expected success, got %q", err) + continue + } else if err == nil && tc.success == false { + t.Errorf("expected failure, got success") + continue + } else if tc.success { + c, err := f.GetCount("verbose") + if err != nil { + t.Errorf("Got error trying to fetch the counter flag") + } + if c != tc.expected { + t.Errorf("expected %q, got %q", tc.expected, c) + } + } + } +} diff --git a/vendor/github.com/spf13/pflag/duration.go b/vendor/github.com/spf13/pflag/duration.go new file mode 100644 index 000000000..e9debef88 --- /dev/null +++ b/vendor/github.com/spf13/pflag/duration.go @@ -0,0 +1,86 @@ +package pflag + +import ( + "time" +) + +// -- time.Duration Value +type durationValue time.Duration + +func newDurationValue(val time.Duration, p *time.Duration) *durationValue { + *p = val + return (*durationValue)(p) +} + +func (d *durationValue) Set(s string) error { + v, err := time.ParseDuration(s) + *d = durationValue(v) + return err +} + +func (d *durationValue) Type() string { + return "duration" +} + +func (d *durationValue) String() string { return (*time.Duration)(d).String() } + +func durationConv(sval string) (interface{}, error) { + return time.ParseDuration(sval) +} + +// GetDuration return the duration value of a flag with the given name +func (f *FlagSet) GetDuration(name string) (time.Duration, error) { + val, err := f.getFlagType(name, "duration", durationConv) + if err != nil { + return 0, err + } + return val.(time.Duration), nil +} + +// DurationVar defines a time.Duration flag with specified name, default value, and usage string. +// The argument p points to a time.Duration variable in which to store the value of the flag. +func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string) { + f.VarP(newDurationValue(value, p), name, "", usage) +} + +// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { + f.VarP(newDurationValue(value, p), name, shorthand, usage) +} + +// DurationVar defines a time.Duration flag with specified name, default value, and usage string. +// The argument p points to a time.Duration variable in which to store the value of the flag. +func DurationVar(p *time.Duration, name string, value time.Duration, usage string) { + CommandLine.VarP(newDurationValue(value, p), name, "", usage) +} + +// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. +func DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { + CommandLine.VarP(newDurationValue(value, p), name, shorthand, usage) +} + +// Duration defines a time.Duration flag with specified name, default value, and usage string. +// The return value is the address of a time.Duration variable that stores the value of the flag. +func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration { + p := new(time.Duration) + f.DurationVarP(p, name, "", value, usage) + return p +} + +// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { + p := new(time.Duration) + f.DurationVarP(p, name, shorthand, value, usage) + return p +} + +// Duration defines a time.Duration flag with specified name, default value, and usage string. +// The return value is the address of a time.Duration variable that stores the value of the flag. +func Duration(name string, value time.Duration, usage string) *time.Duration { + return CommandLine.DurationP(name, "", value, usage) +} + +// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. +func DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { + return CommandLine.DurationP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/example_test.go b/vendor/github.com/spf13/pflag/example_test.go new file mode 100644 index 000000000..9be7a49f2 --- /dev/null +++ b/vendor/github.com/spf13/pflag/example_test.go @@ -0,0 +1,77 @@ +// Copyright 2012 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. + +// These examples demonstrate more intricate uses of the flag package. +package pflag_test + +import ( + "errors" + "fmt" + "strings" + "time" + + flag "github.com/spf13/pflag" +) + +// Example 1: A single string flag called "species" with default value "gopher". +var species = flag.String("species", "gopher", "the species we are studying") + +// Example 2: A flag with a shorthand letter. +var gopherType = flag.StringP("gopher_type", "g", "pocket", "the variety of gopher") + +// Example 3: A user-defined flag type, a slice of durations. +type interval []time.Duration + +// String is the method to format the flag's value, part of the flag.Value interface. +// The String method's output will be used in diagnostics. +func (i *interval) String() string { + return fmt.Sprint(*i) +} + +func (i *interval) Type() string { + return "interval" +} + +// Set is the method to set the flag value, part of the flag.Value interface. +// Set's argument is a string to be parsed to set the flag. +// It's a comma-separated list, so we split it. +func (i *interval) Set(value string) error { + // If we wanted to allow the flag to be set multiple times, + // accumulating values, we would delete this if statement. + // That would permit usages such as + // -deltaT 10s -deltaT 15s + // and other combinations. + if len(*i) > 0 { + return errors.New("interval flag already set") + } + for _, dt := range strings.Split(value, ",") { + duration, err := time.ParseDuration(dt) + if err != nil { + return err + } + *i = append(*i, duration) + } + return nil +} + +// Define a flag to accumulate durations. Because it has a special type, +// we need to use the Var function and therefore create the flag during +// init. + +var intervalFlag interval + +func init() { + // Tie the command-line flag to the intervalFlag variable and + // set a usage message. + flag.Var(&intervalFlag, "deltaT", "comma-separated list of intervals to use between events") +} + +func Example() { + // All the interesting pieces are with the variables declared above, but + // to enable the flag package to see the flags defined there, one must + // execute, typically at the start of main (not init!): + // flag.Parse() + // We don't run it here because this is not a main function and + // the testing suite has already parsed the flags. +} diff --git a/vendor/github.com/spf13/pflag/export_test.go b/vendor/github.com/spf13/pflag/export_test.go new file mode 100644 index 000000000..9318fee00 --- /dev/null +++ b/vendor/github.com/spf13/pflag/export_test.go @@ -0,0 +1,29 @@ +// Copyright 2010 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 pflag + +import ( + "io/ioutil" + "os" +) + +// Additional routines compiled into the package only during testing. + +// ResetForTesting clears all flag state and sets the usage function as directed. +// After calling ResetForTesting, parse errors in flag handling will not +// exit the program. +func ResetForTesting(usage func()) { + CommandLine = &FlagSet{ + name: os.Args[0], + errorHandling: ContinueOnError, + output: ioutil.Discard, + } + Usage = usage +} + +// GetCommandLine returns the default FlagSet. +func GetCommandLine() *FlagSet { + return CommandLine +} diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go new file mode 100644 index 000000000..746af6327 --- /dev/null +++ b/vendor/github.com/spf13/pflag/flag.go @@ -0,0 +1,1063 @@ +// Copyright 2009 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 pflag is a drop-in replacement for Go's flag package, implementing +POSIX/GNU-style --flags. + +pflag is compatible with the GNU extensions to the POSIX recommendations +for command-line options. See +http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html + +Usage: + +pflag is a drop-in replacement of Go's native flag package. If you import +pflag under the name "flag" then all code should continue to function +with no changes. + + import flag "github.com/ogier/pflag" + + There is one exception to this: if you directly instantiate the Flag struct +there is one more field "Shorthand" that you will need to set. +Most code never instantiates this struct directly, and instead uses +functions such as String(), BoolVar(), and Var(), and is therefore +unaffected. + +Define flags using flag.String(), Bool(), Int(), etc. + +This declares an integer flag, -flagname, stored in the pointer ip, with type *int. + var ip = flag.Int("flagname", 1234, "help message for flagname") +If you like, you can bind the flag to a variable using the Var() functions. + var flagvar int + func init() { + flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") + } +Or you can create custom flags that satisfy the Value interface (with +pointer receivers) and couple them to flag parsing by + flag.Var(&flagVal, "name", "help message for flagname") +For such flags, the default value is just the initial value of the variable. + +After all flags are defined, call + flag.Parse() +to parse the command line into the defined flags. + +Flags may then be used directly. If you're using the flags themselves, +they are all pointers; if you bind to variables, they're values. + fmt.Println("ip has value ", *ip) + fmt.Println("flagvar has value ", flagvar) + +After parsing, the arguments after the flag are available as the +slice flag.Args() or individually as flag.Arg(i). +The arguments are indexed from 0 through flag.NArg()-1. + +The pflag package also defines some new functions that are not in flag, +that give one-letter shorthands for flags. You can use these by appending +'P' to the name of any function that defines a flag. + var ip = flag.IntP("flagname", "f", 1234, "help message") + var flagvar bool + func init() { + flag.BoolVarP("boolname", "b", true, "help message") + } + flag.VarP(&flagVar, "varname", "v", 1234, "help message") +Shorthand letters can be used with single dashes on the command line. +Boolean shorthand flags can be combined with other shorthand flags. + +Command line flag syntax: + --flag // boolean flags only + --flag=x + +Unlike the flag package, a single dash before an option means something +different than a double dash. Single dashes signify a series of shorthand +letters for flags. All but the last shorthand letter must be boolean flags. + // boolean flags + -f + -abc + // non-boolean flags + -n 1234 + -Ifile + // mixed + -abcs "hello" + -abcn1234 + +Flag parsing stops after the terminator "--". Unlike the flag package, +flags can be interspersed with arguments anywhere on the command line +before this terminator. + +Integer flags accept 1234, 0664, 0x1234 and may be negative. +Boolean flags (in their long form) accept 1, 0, t, f, true, false, +TRUE, FALSE, True, False. +Duration flags accept any input valid for time.ParseDuration. + +The default set of command-line flags is controlled by +top-level functions. The FlagSet type allows one to define +independent sets of flags, such as to implement subcommands +in a command-line interface. The methods of FlagSet are +analogous to the top-level functions for the command-line +flag set. +*/ +package pflag + +import ( + "bytes" + "errors" + "fmt" + "io" + "os" + "sort" + "strings" +) + +// ErrHelp is the error returned if the flag -help is invoked but no such flag is defined. +var ErrHelp = errors.New("pflag: help requested") + +// ErrorHandling defines how to handle flag parsing errors. +type ErrorHandling int + +const ( + // ContinueOnError will return an err from Parse() if an error is found + ContinueOnError ErrorHandling = iota + // ExitOnError will call os.Exit(2) if an error is found when parsing + ExitOnError + // PanicOnError will panic() if an error is found when parsing flags + PanicOnError +) + +// NormalizedName is a flag name that has been normalized according to rules +// for the FlagSet (e.g. making '-' and '_' equivalent). +type NormalizedName string + +// A FlagSet represents a set of defined flags. +type FlagSet struct { + // Usage is the function called when an error occurs while parsing flags. + // The field is a function (not a method) that may be changed to point to + // a custom error handler. + Usage func() + + name string + parsed bool + actual map[NormalizedName]*Flag + formal map[NormalizedName]*Flag + shorthands map[byte]*Flag + args []string // arguments after flags + argsLenAtDash int // len(args) when a '--' was located when parsing, or -1 if no -- + exitOnError bool // does the program exit if there's an error? + errorHandling ErrorHandling + output io.Writer // nil means stderr; use out() accessor + interspersed bool // allow interspersed option/non-option args + normalizeNameFunc func(f *FlagSet, name string) NormalizedName +} + +// A Flag represents the state of a flag. +type Flag struct { + Name string // name as it appears on command line + Shorthand string // one-letter abbreviated flag + Usage string // help message + Value Value // value as set + DefValue string // default value (as text); for usage message + Changed bool // If the user set the value (or if left to default) + NoOptDefVal string //default value (as text); if the flag is on the command line without any options + Deprecated string // If this flag is deprecated, this string is the new or now thing to use + Hidden bool // used by cobra.Command to allow flags to be hidden from help/usage text + ShorthandDeprecated string // If the shorthand of this flag is deprecated, this string is the new or now thing to use + Annotations map[string][]string // used by cobra.Command bash autocomple code +} + +// Value is the interface to the dynamic value stored in a flag. +// (The default value is represented as a string.) +type Value interface { + String() string + Set(string) error + Type() string +} + +// sortFlags returns the flags as a slice in lexicographical sorted order. +func sortFlags(flags map[NormalizedName]*Flag) []*Flag { + list := make(sort.StringSlice, len(flags)) + i := 0 + for k := range flags { + list[i] = string(k) + i++ + } + list.Sort() + result := make([]*Flag, len(list)) + for i, name := range list { + result[i] = flags[NormalizedName(name)] + } + return result +} + +// SetNormalizeFunc allows you to add a function which can translate flag names. +// Flags added to the FlagSet will be translated and then when anything tries to +// look up the flag that will also be translated. So it would be possible to create +// a flag named "getURL" and have it translated to "geturl". A user could then pass +// "--getUrl" which may also be translated to "geturl" and everything will work. +func (f *FlagSet) SetNormalizeFunc(n func(f *FlagSet, name string) NormalizedName) { + f.normalizeNameFunc = n + for k, v := range f.formal { + delete(f.formal, k) + nname := f.normalizeFlagName(string(k)) + f.formal[nname] = v + v.Name = string(nname) + } +} + +// GetNormalizeFunc returns the previously set NormalizeFunc of a function which +// does no translation, if not set previously. +func (f *FlagSet) GetNormalizeFunc() func(f *FlagSet, name string) NormalizedName { + if f.normalizeNameFunc != nil { + return f.normalizeNameFunc + } + return func(f *FlagSet, name string) NormalizedName { return NormalizedName(name) } +} + +func (f *FlagSet) normalizeFlagName(name string) NormalizedName { + n := f.GetNormalizeFunc() + return n(f, name) +} + +func (f *FlagSet) out() io.Writer { + if f.output == nil { + return os.Stderr + } + return f.output +} + +// SetOutput sets the destination for usage and error messages. +// If output is nil, os.Stderr is used. +func (f *FlagSet) SetOutput(output io.Writer) { + f.output = output +} + +// VisitAll visits the flags in lexicographical order, calling fn for each. +// It visits all flags, even those not set. +func (f *FlagSet) VisitAll(fn func(*Flag)) { + for _, flag := range sortFlags(f.formal) { + fn(flag) + } +} + +// HasFlags returns a bool to indicate if the FlagSet has any flags definied. +func (f *FlagSet) HasFlags() bool { + return len(f.formal) > 0 +} + +// HasAvailableFlags returns a bool to indicate if the FlagSet has any flags +// definied that are not hidden or deprecated. +func (f *FlagSet) HasAvailableFlags() bool { + for _, flag := range f.formal { + if !flag.Hidden && len(flag.Deprecated) == 0 { + return true + } + } + return false +} + +// VisitAll visits the command-line flags in lexicographical order, calling +// fn for each. It visits all flags, even those not set. +func VisitAll(fn func(*Flag)) { + CommandLine.VisitAll(fn) +} + +// Visit visits the flags in lexicographical order, calling fn for each. +// It visits only those flags that have been set. +func (f *FlagSet) Visit(fn func(*Flag)) { + for _, flag := range sortFlags(f.actual) { + fn(flag) + } +} + +// Visit visits the command-line flags in lexicographical order, calling fn +// for each. It visits only those flags that have been set. +func Visit(fn func(*Flag)) { + CommandLine.Visit(fn) +} + +// Lookup returns the Flag structure of the named flag, returning nil if none exists. +func (f *FlagSet) Lookup(name string) *Flag { + return f.lookup(f.normalizeFlagName(name)) +} + +// lookup returns the Flag structure of the named flag, returning nil if none exists. +func (f *FlagSet) lookup(name NormalizedName) *Flag { + return f.formal[name] +} + +// func to return a given type for a given flag name +func (f *FlagSet) getFlagType(name string, ftype string, convFunc func(sval string) (interface{}, error)) (interface{}, error) { + flag := f.Lookup(name) + if flag == nil { + err := fmt.Errorf("flag accessed but not defined: %s", name) + return nil, err + } + + if flag.Value.Type() != ftype { + err := fmt.Errorf("trying to get %s value of flag of type %s", ftype, flag.Value.Type()) + return nil, err + } + + sval := flag.Value.String() + result, err := convFunc(sval) + if err != nil { + return nil, err + } + return result, nil +} + +// ArgsLenAtDash will return the length of f.Args at the moment when a -- was +// found during arg parsing. This allows your program to know which args were +// before the -- and which came after. +func (f *FlagSet) ArgsLenAtDash() int { + return f.argsLenAtDash +} + +// MarkDeprecated indicated that a flag is deprecated in your program. It will +// continue to function but will not show up in help or usage messages. Using +// this flag will also print the given usageMessage. +func (f *FlagSet) MarkDeprecated(name string, usageMessage string) error { + flag := f.Lookup(name) + if flag == nil { + return fmt.Errorf("flag %q does not exist", name) + } + if len(usageMessage) == 0 { + return fmt.Errorf("deprecated message for flag %q must be set", name) + } + flag.Deprecated = usageMessage + return nil +} + +// MarkShorthandDeprecated will mark the shorthand of a flag deprecated in your +// program. It will continue to function but will not show up in help or usage +// messages. Using this flag will also print the given usageMessage. +func (f *FlagSet) MarkShorthandDeprecated(name string, usageMessage string) error { + flag := f.Lookup(name) + if flag == nil { + return fmt.Errorf("flag %q does not exist", name) + } + if len(usageMessage) == 0 { + return fmt.Errorf("deprecated message for flag %q must be set", name) + } + flag.ShorthandDeprecated = usageMessage + return nil +} + +// MarkHidden sets a flag to 'hidden' in your program. It will continue to +// function but will not show up in help or usage messages. +func (f *FlagSet) MarkHidden(name string) error { + flag := f.Lookup(name) + if flag == nil { + return fmt.Errorf("flag %q does not exist", name) + } + flag.Hidden = true + return nil +} + +// Lookup returns the Flag structure of the named command-line flag, +// returning nil if none exists. +func Lookup(name string) *Flag { + return CommandLine.Lookup(name) +} + +// Set sets the value of the named flag. +func (f *FlagSet) Set(name, value string) error { + normalName := f.normalizeFlagName(name) + flag, ok := f.formal[normalName] + if !ok { + return fmt.Errorf("no such flag -%v", name) + } + err := flag.Value.Set(value) + if err != nil { + return err + } + if f.actual == nil { + f.actual = make(map[NormalizedName]*Flag) + } + f.actual[normalName] = flag + flag.Changed = true + if len(flag.Deprecated) > 0 { + fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated) + } + return nil +} + +// SetAnnotation allows one to set arbitrary annotations on a flag in the FlagSet. +// This is sometimes used by spf13/cobra programs which want to generate additional +// bash completion information. +func (f *FlagSet) SetAnnotation(name, key string, values []string) error { + normalName := f.normalizeFlagName(name) + flag, ok := f.formal[normalName] + if !ok { + return fmt.Errorf("no such flag -%v", name) + } + if flag.Annotations == nil { + flag.Annotations = map[string][]string{} + } + flag.Annotations[key] = values + return nil +} + +// Changed returns true if the flag was explicitly set during Parse() and false +// otherwise +func (f *FlagSet) Changed(name string) bool { + flag := f.Lookup(name) + // If a flag doesn't exist, it wasn't changed.... + if flag == nil { + return false + } + return flag.Changed +} + +// Set sets the value of the named command-line flag. +func Set(name, value string) error { + return CommandLine.Set(name, value) +} + +// PrintDefaults prints, to standard error unless configured +// otherwise, the default values of all defined flags in the set. +func (f *FlagSet) PrintDefaults() { + usages := f.FlagUsages() + fmt.Fprint(f.out(), usages) +} + +// defaultIsZeroValue returns true if the default value for this flag represents +// a zero value. +func (f *Flag) defaultIsZeroValue() bool { + switch f.Value.(type) { + case boolFlag: + return f.DefValue == "false" + case *durationValue: + // Beginning in Go 1.7, duration zero values are "0s" + return f.DefValue == "0" || f.DefValue == "0s" + case *intValue, *int8Value, *int32Value, *int64Value, *uintValue, *uint8Value, *uint16Value, *uint32Value, *uint64Value, *countValue, *float32Value, *float64Value: + return f.DefValue == "0" + case *stringValue: + return f.DefValue == "" + case *ipValue, *ipMaskValue, *ipNetValue: + return f.DefValue == "" + case *intSliceValue, *stringSliceValue, *stringArrayValue: + return f.DefValue == "[]" + default: + switch f.Value.String() { + case "false": + return true + case "": + return true + case "": + return true + case "0": + return true + } + return false + } +} + +// UnquoteUsage extracts a back-quoted name from the usage +// string for a flag and returns it and the un-quoted usage. +// Given "a `name` to show" it returns ("name", "a name to show"). +// If there are no back quotes, the name is an educated guess of the +// type of the flag's value, or the empty string if the flag is boolean. +func UnquoteUsage(flag *Flag) (name string, usage string) { + // Look for a back-quoted name, but avoid the strings package. + usage = flag.Usage + for i := 0; i < len(usage); i++ { + if usage[i] == '`' { + for j := i + 1; j < len(usage); j++ { + if usage[j] == '`' { + name = usage[i+1 : j] + usage = usage[:i] + name + usage[j+1:] + return name, usage + } + } + break // Only one back quote; use type name. + } + } + + name = flag.Value.Type() + switch name { + case "bool": + name = "" + case "float64": + name = "float" + case "int64": + name = "int" + case "uint64": + name = "uint" + } + + return +} + +// Splits the string `s` on whitespace into an initial substring up to +// `i` runes in length and the remainder. Will go `slop` over `i` if +// that encompasses the entire string (which allows the caller to +// avoid short orphan words on the final line). +func wrapN(i, slop int, s string) (string, string) { + if i+slop > len(s) { + return s, "" + } + + w := strings.LastIndexAny(s[:i], " \t") + if w <= 0 { + return s, "" + } + + return s[:w], s[w+1:] +} + +// Wraps the string `s` to a maximum width `w` with leading indent +// `i`. The first line is not indented (this is assumed to be done by +// caller). Pass `w` == 0 to do no wrapping +func wrap(i, w int, s string) string { + if w == 0 { + return s + } + + // space between indent i and end of line width w into which + // we should wrap the text. + wrap := w - i + + var r, l string + + // Not enough space for sensible wrapping. Wrap as a block on + // the next line instead. + if wrap < 24 { + i = 16 + wrap = w - i + r += "\n" + strings.Repeat(" ", i) + } + // If still not enough space then don't even try to wrap. + if wrap < 24 { + return s + } + + // Try to avoid short orphan words on the final line, by + // allowing wrapN to go a bit over if that would fit in the + // remainder of the line. + slop := 5 + wrap = wrap - slop + + // Handle first line, which is indented by the caller (or the + // special case above) + l, s = wrapN(wrap, slop, s) + r = r + l + + // Now wrap the rest + for s != "" { + var t string + + t, s = wrapN(wrap, slop, s) + r = r + "\n" + strings.Repeat(" ", i) + t + } + + return r + +} + +// FlagUsagesWrapped returns a string containing the usage information +// for all flags in the FlagSet. Wrapped to `cols` columns (0 for no +// wrapping) +func (f *FlagSet) FlagUsagesWrapped(cols int) string { + x := new(bytes.Buffer) + + lines := make([]string, 0, len(f.formal)) + + maxlen := 0 + f.VisitAll(func(flag *Flag) { + if len(flag.Deprecated) > 0 || flag.Hidden { + return + } + + line := "" + if len(flag.Shorthand) > 0 && len(flag.ShorthandDeprecated) == 0 { + line = fmt.Sprintf(" -%s, --%s", flag.Shorthand, flag.Name) + } else { + line = fmt.Sprintf(" --%s", flag.Name) + } + + varname, usage := UnquoteUsage(flag) + if len(varname) > 0 { + line += " " + varname + } + if len(flag.NoOptDefVal) > 0 { + switch flag.Value.Type() { + case "string": + line += fmt.Sprintf("[=\"%s\"]", flag.NoOptDefVal) + case "bool": + if flag.NoOptDefVal != "true" { + line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) + } + default: + line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) + } + } + + // This special character will be replaced with spacing once the + // correct alignment is calculated + line += "\x00" + if len(line) > maxlen { + maxlen = len(line) + } + + line += usage + if !flag.defaultIsZeroValue() { + if flag.Value.Type() == "string" { + line += fmt.Sprintf(" (default \"%s\")", flag.DefValue) + } else { + line += fmt.Sprintf(" (default %s)", flag.DefValue) + } + } + + lines = append(lines, line) + }) + + for _, line := range lines { + sidx := strings.Index(line, "\x00") + spacing := strings.Repeat(" ", maxlen-sidx) + // maxlen + 2 comes from + 1 for the \x00 and + 1 for the (deliberate) off-by-one in maxlen-sidx + fmt.Fprintln(x, line[:sidx], spacing, wrap(maxlen+2, cols, line[sidx+1:])) + } + + return x.String() +} + +// FlagUsages returns a string containing the usage information for all flags in +// the FlagSet +func (f *FlagSet) FlagUsages() string { + return f.FlagUsagesWrapped(0) +} + +// PrintDefaults prints to standard error the default values of all defined command-line flags. +func PrintDefaults() { + CommandLine.PrintDefaults() +} + +// defaultUsage is the default function to print a usage message. +func defaultUsage(f *FlagSet) { + fmt.Fprintf(f.out(), "Usage of %s:\n", f.name) + f.PrintDefaults() +} + +// NOTE: Usage is not just defaultUsage(CommandLine) +// because it serves (via godoc flag Usage) as the example +// for how to write your own usage function. + +// Usage prints to standard error a usage message documenting all defined command-line flags. +// The function is a variable that may be changed to point to a custom function. +// By default it prints a simple header and calls PrintDefaults; for details about the +// format of the output and how to control it, see the documentation for PrintDefaults. +var Usage = func() { + fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) + PrintDefaults() +} + +// NFlag returns the number of flags that have been set. +func (f *FlagSet) NFlag() int { return len(f.actual) } + +// NFlag returns the number of command-line flags that have been set. +func NFlag() int { return len(CommandLine.actual) } + +// Arg returns the i'th argument. Arg(0) is the first remaining argument +// after flags have been processed. +func (f *FlagSet) Arg(i int) string { + if i < 0 || i >= len(f.args) { + return "" + } + return f.args[i] +} + +// Arg returns the i'th command-line argument. Arg(0) is the first remaining argument +// after flags have been processed. +func Arg(i int) string { + return CommandLine.Arg(i) +} + +// NArg is the number of arguments remaining after flags have been processed. +func (f *FlagSet) NArg() int { return len(f.args) } + +// NArg is the number of arguments remaining after flags have been processed. +func NArg() int { return len(CommandLine.args) } + +// Args returns the non-flag arguments. +func (f *FlagSet) Args() []string { return f.args } + +// Args returns the non-flag command-line arguments. +func Args() []string { return CommandLine.args } + +// Var defines a flag with the specified name and usage string. The type and +// value of the flag are represented by the first argument, of type Value, which +// typically holds a user-defined implementation of Value. For instance, the +// caller could create a flag that turns a comma-separated string into a slice +// of strings by giving the slice the methods of Value; in particular, Set would +// decompose the comma-separated string into the slice. +func (f *FlagSet) Var(value Value, name string, usage string) { + f.VarP(value, name, "", usage) +} + +// VarPF is like VarP, but returns the flag created +func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag { + // Remember the default value as a string; it won't change. + flag := &Flag{ + Name: name, + Shorthand: shorthand, + Usage: usage, + Value: value, + DefValue: value.String(), + } + f.AddFlag(flag) + return flag +} + +// VarP is like Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) VarP(value Value, name, shorthand, usage string) { + f.VarPF(value, name, shorthand, usage) +} + +// AddFlag will add the flag to the FlagSet +func (f *FlagSet) AddFlag(flag *Flag) { + // Call normalizeFlagName function only once + normalizedFlagName := f.normalizeFlagName(flag.Name) + + _, alreadythere := f.formal[normalizedFlagName] + if alreadythere { + msg := fmt.Sprintf("%s flag redefined: %s", f.name, flag.Name) + fmt.Fprintln(f.out(), msg) + panic(msg) // Happens only if flags are declared with identical names + } + if f.formal == nil { + f.formal = make(map[NormalizedName]*Flag) + } + + flag.Name = string(normalizedFlagName) + f.formal[normalizedFlagName] = flag + + if len(flag.Shorthand) == 0 { + return + } + if len(flag.Shorthand) > 1 { + fmt.Fprintf(f.out(), "%s shorthand more than ASCII character: %s\n", f.name, flag.Shorthand) + panic("shorthand is more than one character") + } + if f.shorthands == nil { + f.shorthands = make(map[byte]*Flag) + } + c := flag.Shorthand[0] + old, alreadythere := f.shorthands[c] + if alreadythere { + fmt.Fprintf(f.out(), "%s shorthand reused: %q for %s already used for %s\n", f.name, c, flag.Name, old.Name) + panic("shorthand redefinition") + } + f.shorthands[c] = flag +} + +// AddFlagSet adds one FlagSet to another. If a flag is already present in f +// the flag from newSet will be ignored +func (f *FlagSet) AddFlagSet(newSet *FlagSet) { + if newSet == nil { + return + } + newSet.VisitAll(func(flag *Flag) { + if f.Lookup(flag.Name) == nil { + f.AddFlag(flag) + } + }) +} + +// Var defines a flag with the specified name and usage string. The type and +// value of the flag are represented by the first argument, of type Value, which +// typically holds a user-defined implementation of Value. For instance, the +// caller could create a flag that turns a comma-separated string into a slice +// of strings by giving the slice the methods of Value; in particular, Set would +// decompose the comma-separated string into the slice. +func Var(value Value, name string, usage string) { + CommandLine.VarP(value, name, "", usage) +} + +// VarP is like Var, but accepts a shorthand letter that can be used after a single dash. +func VarP(value Value, name, shorthand, usage string) { + CommandLine.VarP(value, name, shorthand, usage) +} + +// failf prints to standard error a formatted error and usage message and +// returns the error. +func (f *FlagSet) failf(format string, a ...interface{}) error { + err := fmt.Errorf(format, a...) + fmt.Fprintln(f.out(), err) + f.usage() + return err +} + +// usage calls the Usage method for the flag set, or the usage function if +// the flag set is CommandLine. +func (f *FlagSet) usage() { + if f == CommandLine { + Usage() + } else if f.Usage == nil { + defaultUsage(f) + } else { + f.Usage() + } +} + +func (f *FlagSet) setFlag(flag *Flag, value string, origArg string) error { + if err := flag.Value.Set(value); err != nil { + return f.failf("invalid argument %q for %s: %v", value, origArg, err) + } + // mark as visited for Visit() + if f.actual == nil { + f.actual = make(map[NormalizedName]*Flag) + } + f.actual[f.normalizeFlagName(flag.Name)] = flag + flag.Changed = true + if len(flag.Deprecated) > 0 { + fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated) + } + if len(flag.ShorthandDeprecated) > 0 && containsShorthand(origArg, flag.Shorthand) { + fmt.Fprintf(os.Stderr, "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated) + } + return nil +} + +func containsShorthand(arg, shorthand string) bool { + // filter out flags -- + if strings.HasPrefix(arg, "-") { + return false + } + arg = strings.SplitN(arg, "=", 2)[0] + return strings.Contains(arg, shorthand) +} + +func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) { + a = args + name := s[2:] + if len(name) == 0 || name[0] == '-' || name[0] == '=' { + err = f.failf("bad flag syntax: %s", s) + return + } + split := strings.SplitN(name, "=", 2) + name = split[0] + flag, alreadythere := f.formal[f.normalizeFlagName(name)] + if !alreadythere { + if name == "help" { // special case for nice help message. + f.usage() + return a, ErrHelp + } + err = f.failf("unknown flag: --%s", name) + return + } + var value string + if len(split) == 2 { + // '--flag=arg' + value = split[1] + } else if len(flag.NoOptDefVal) > 0 { + // '--flag' (arg was optional) + value = flag.NoOptDefVal + } else if len(a) > 0 { + // '--flag arg' + value = a[0] + a = a[1:] + } else { + // '--flag' (arg was required) + err = f.failf("flag needs an argument: %s", s) + return + } + err = fn(flag, value, s) + return +} + +func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parseFunc) (outShorts string, outArgs []string, err error) { + if strings.HasPrefix(shorthands, "test.") { + return + } + outArgs = args + outShorts = shorthands[1:] + c := shorthands[0] + + flag, alreadythere := f.shorthands[c] + if !alreadythere { + if c == 'h' { // special case for nice help message. + f.usage() + err = ErrHelp + return + } + //TODO continue on error + err = f.failf("unknown shorthand flag: %q in -%s", c, shorthands) + return + } + var value string + if len(shorthands) > 2 && shorthands[1] == '=' { + value = shorthands[2:] + outShorts = "" + } else if len(flag.NoOptDefVal) > 0 { + value = flag.NoOptDefVal + } else if len(shorthands) > 1 { + value = shorthands[1:] + outShorts = "" + } else if len(args) > 0 { + value = args[0] + outArgs = args[1:] + } else { + err = f.failf("flag needs an argument: %q in -%s", c, shorthands) + return + } + err = fn(flag, value, shorthands) + return +} + +func (f *FlagSet) parseShortArg(s string, args []string, fn parseFunc) (a []string, err error) { + a = args + shorthands := s[1:] + + for len(shorthands) > 0 { + shorthands, a, err = f.parseSingleShortArg(shorthands, args, fn) + if err != nil { + return + } + } + + return +} + +func (f *FlagSet) parseArgs(args []string, fn parseFunc) (err error) { + for len(args) > 0 { + s := args[0] + args = args[1:] + if len(s) == 0 || s[0] != '-' || len(s) == 1 { + if !f.interspersed { + f.args = append(f.args, s) + f.args = append(f.args, args...) + return nil + } + f.args = append(f.args, s) + continue + } + + if s[1] == '-' { + if len(s) == 2 { // "--" terminates the flags + f.argsLenAtDash = len(f.args) + f.args = append(f.args, args...) + break + } + args, err = f.parseLongArg(s, args, fn) + } else { + args, err = f.parseShortArg(s, args, fn) + } + if err != nil { + return + } + } + return +} + +// Parse parses flag definitions from the argument list, which should not +// include the command name. Must be called after all flags in the FlagSet +// are defined and before flags are accessed by the program. +// The return value will be ErrHelp if -help was set but not defined. +func (f *FlagSet) Parse(arguments []string) error { + f.parsed = true + f.args = make([]string, 0, len(arguments)) + + assign := func(flag *Flag, value, origArg string) error { + return f.setFlag(flag, value, origArg) + } + + err := f.parseArgs(arguments, assign) + if err != nil { + switch f.errorHandling { + case ContinueOnError: + return err + case ExitOnError: + os.Exit(2) + case PanicOnError: + panic(err) + } + } + return nil +} + +type parseFunc func(flag *Flag, value, origArg string) error + +// ParseAll parses flag definitions from the argument list, which should not +// include the command name. The arguments for fn are flag and value. Must be +// called after all flags in the FlagSet are defined and before flags are +// accessed by the program. The return value will be ErrHelp if -help was set +// but not defined. +func (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string) error) error { + f.parsed = true + f.args = make([]string, 0, len(arguments)) + + assign := func(flag *Flag, value, origArg string) error { + return fn(flag, value) + } + + err := f.parseArgs(arguments, assign) + if err != nil { + switch f.errorHandling { + case ContinueOnError: + return err + case ExitOnError: + os.Exit(2) + case PanicOnError: + panic(err) + } + } + return nil +} + +// Parsed reports whether f.Parse has been called. +func (f *FlagSet) Parsed() bool { + return f.parsed +} + +// Parse parses the command-line flags from os.Args[1:]. Must be called +// after all flags are defined and before flags are accessed by the program. +func Parse() { + // Ignore errors; CommandLine is set for ExitOnError. + CommandLine.Parse(os.Args[1:]) +} + +// ParseAll parses the command-line flags from os.Args[1:] and called fn for each. +// The arguments for fn are flag and value. Must be called after all flags are +// defined and before flags are accessed by the program. +func ParseAll(fn func(flag *Flag, value string) error) { + // Ignore errors; CommandLine is set for ExitOnError. + CommandLine.ParseAll(os.Args[1:], fn) +} + +// SetInterspersed sets whether to support interspersed option/non-option arguments. +func SetInterspersed(interspersed bool) { + CommandLine.SetInterspersed(interspersed) +} + +// Parsed returns true if the command-line flags have been parsed. +func Parsed() bool { + return CommandLine.Parsed() +} + +// CommandLine is the default set of command-line flags, parsed from os.Args. +var CommandLine = NewFlagSet(os.Args[0], ExitOnError) + +// NewFlagSet returns a new, empty flag set with the specified name and +// error handling property. +func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet { + f := &FlagSet{ + name: name, + errorHandling: errorHandling, + argsLenAtDash: -1, + interspersed: true, + } + return f +} + +// SetInterspersed sets whether to support interspersed option/non-option arguments. +func (f *FlagSet) SetInterspersed(interspersed bool) { + f.interspersed = interspersed +} + +// Init sets the name and error handling property for a flag set. +// By default, the zero FlagSet uses an empty name and the +// ContinueOnError error handling policy. +func (f *FlagSet) Init(name string, errorHandling ErrorHandling) { + f.name = name + f.errorHandling = errorHandling + f.argsLenAtDash = -1 +} diff --git a/vendor/github.com/spf13/pflag/flag_test.go b/vendor/github.com/spf13/pflag/flag_test.go new file mode 100644 index 000000000..b83a0ed6a --- /dev/null +++ b/vendor/github.com/spf13/pflag/flag_test.go @@ -0,0 +1,1006 @@ +// Copyright 2009 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 pflag + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "net" + "os" + "reflect" + "sort" + "strconv" + "strings" + "testing" + "time" +) + +var ( + testBool = Bool("test_bool", false, "bool value") + testInt = Int("test_int", 0, "int value") + testInt64 = Int64("test_int64", 0, "int64 value") + testUint = Uint("test_uint", 0, "uint value") + testUint64 = Uint64("test_uint64", 0, "uint64 value") + testString = String("test_string", "0", "string value") + testFloat = Float64("test_float64", 0, "float64 value") + testDuration = Duration("test_duration", 0, "time.Duration value") + testOptionalInt = Int("test_optional_int", 0, "optional int value") + normalizeFlagNameInvocations = 0 +) + +func boolString(s string) string { + if s == "0" { + return "false" + } + return "true" +} + +func TestEverything(t *testing.T) { + m := make(map[string]*Flag) + desired := "0" + visitor := func(f *Flag) { + if len(f.Name) > 5 && f.Name[0:5] == "test_" { + m[f.Name] = f + ok := false + switch { + case f.Value.String() == desired: + ok = true + case f.Name == "test_bool" && f.Value.String() == boolString(desired): + ok = true + case f.Name == "test_duration" && f.Value.String() == desired+"s": + ok = true + } + if !ok { + t.Error("Visit: bad value", f.Value.String(), "for", f.Name) + } + } + } + VisitAll(visitor) + if len(m) != 9 { + t.Error("VisitAll misses some flags") + for k, v := range m { + t.Log(k, *v) + } + } + m = make(map[string]*Flag) + Visit(visitor) + if len(m) != 0 { + t.Errorf("Visit sees unset flags") + for k, v := range m { + t.Log(k, *v) + } + } + // Now set all flags + Set("test_bool", "true") + Set("test_int", "1") + Set("test_int64", "1") + Set("test_uint", "1") + Set("test_uint64", "1") + Set("test_string", "1") + Set("test_float64", "1") + Set("test_duration", "1s") + Set("test_optional_int", "1") + desired = "1" + Visit(visitor) + if len(m) != 9 { + t.Error("Visit fails after set") + for k, v := range m { + t.Log(k, *v) + } + } + // Now test they're visited in sort order. + var flagNames []string + Visit(func(f *Flag) { flagNames = append(flagNames, f.Name) }) + if !sort.StringsAreSorted(flagNames) { + t.Errorf("flag names not sorted: %v", flagNames) + } +} + +func TestUsage(t *testing.T) { + called := false + ResetForTesting(func() { called = true }) + if GetCommandLine().Parse([]string{"--x"}) == nil { + t.Error("parse did not fail for unknown flag") + } + if !called { + t.Error("did not call Usage for unknown flag") + } +} + +func TestAddFlagSet(t *testing.T) { + oldSet := NewFlagSet("old", ContinueOnError) + newSet := NewFlagSet("new", ContinueOnError) + + oldSet.String("flag1", "flag1", "flag1") + oldSet.String("flag2", "flag2", "flag2") + + newSet.String("flag2", "flag2", "flag2") + newSet.String("flag3", "flag3", "flag3") + + oldSet.AddFlagSet(newSet) + + if len(oldSet.formal) != 3 { + t.Errorf("Unexpected result adding a FlagSet to a FlagSet %v", oldSet) + } +} + +func TestAnnotation(t *testing.T) { + f := NewFlagSet("shorthand", ContinueOnError) + + if err := f.SetAnnotation("missing-flag", "key", nil); err == nil { + t.Errorf("Expected error setting annotation on non-existent flag") + } + + f.StringP("stringa", "a", "", "string value") + if err := f.SetAnnotation("stringa", "key", nil); err != nil { + t.Errorf("Unexpected error setting new nil annotation: %v", err) + } + if annotation := f.Lookup("stringa").Annotations["key"]; annotation != nil { + t.Errorf("Unexpected annotation: %v", annotation) + } + + f.StringP("stringb", "b", "", "string2 value") + if err := f.SetAnnotation("stringb", "key", []string{"value1"}); err != nil { + t.Errorf("Unexpected error setting new annotation: %v", err) + } + if annotation := f.Lookup("stringb").Annotations["key"]; !reflect.DeepEqual(annotation, []string{"value1"}) { + t.Errorf("Unexpected annotation: %v", annotation) + } + + if err := f.SetAnnotation("stringb", "key", []string{"value2"}); err != nil { + t.Errorf("Unexpected error updating annotation: %v", err) + } + if annotation := f.Lookup("stringb").Annotations["key"]; !reflect.DeepEqual(annotation, []string{"value2"}) { + t.Errorf("Unexpected annotation: %v", annotation) + } +} + +func testParse(f *FlagSet, t *testing.T) { + if f.Parsed() { + t.Error("f.Parse() = true before Parse") + } + boolFlag := f.Bool("bool", false, "bool value") + bool2Flag := f.Bool("bool2", false, "bool2 value") + bool3Flag := f.Bool("bool3", false, "bool3 value") + intFlag := f.Int("int", 0, "int value") + int8Flag := f.Int8("int8", 0, "int value") + int32Flag := f.Int32("int32", 0, "int value") + int64Flag := f.Int64("int64", 0, "int64 value") + uintFlag := f.Uint("uint", 0, "uint value") + uint8Flag := f.Uint8("uint8", 0, "uint value") + uint16Flag := f.Uint16("uint16", 0, "uint value") + uint32Flag := f.Uint32("uint32", 0, "uint value") + uint64Flag := f.Uint64("uint64", 0, "uint64 value") + stringFlag := f.String("string", "0", "string value") + float32Flag := f.Float32("float32", 0, "float32 value") + float64Flag := f.Float64("float64", 0, "float64 value") + ipFlag := f.IP("ip", net.ParseIP("127.0.0.1"), "ip value") + maskFlag := f.IPMask("mask", ParseIPv4Mask("0.0.0.0"), "mask value") + durationFlag := f.Duration("duration", 5*time.Second, "time.Duration value") + optionalIntNoValueFlag := f.Int("optional-int-no-value", 0, "int value") + f.Lookup("optional-int-no-value").NoOptDefVal = "9" + optionalIntWithValueFlag := f.Int("optional-int-with-value", 0, "int value") + f.Lookup("optional-int-no-value").NoOptDefVal = "9" + extra := "one-extra-argument" + args := []string{ + "--bool", + "--bool2=true", + "--bool3=false", + "--int=22", + "--int8=-8", + "--int32=-32", + "--int64=0x23", + "--uint", "24", + "--uint8=8", + "--uint16=16", + "--uint32=32", + "--uint64=25", + "--string=hello", + "--float32=-172e12", + "--float64=2718e28", + "--ip=10.11.12.13", + "--mask=255.255.255.0", + "--duration=2m", + "--optional-int-no-value", + "--optional-int-with-value=42", + extra, + } + if err := f.Parse(args); err != nil { + t.Fatal(err) + } + if !f.Parsed() { + t.Error("f.Parse() = false after Parse") + } + if *boolFlag != true { + t.Error("bool flag should be true, is ", *boolFlag) + } + if v, err := f.GetBool("bool"); err != nil || v != *boolFlag { + t.Error("GetBool does not work.") + } + if *bool2Flag != true { + t.Error("bool2 flag should be true, is ", *bool2Flag) + } + if *bool3Flag != false { + t.Error("bool3 flag should be false, is ", *bool2Flag) + } + if *intFlag != 22 { + t.Error("int flag should be 22, is ", *intFlag) + } + if v, err := f.GetInt("int"); err != nil || v != *intFlag { + t.Error("GetInt does not work.") + } + if *int8Flag != -8 { + t.Error("int8 flag should be 0x23, is ", *int8Flag) + } + if v, err := f.GetInt8("int8"); err != nil || v != *int8Flag { + t.Error("GetInt8 does not work.") + } + if *int32Flag != -32 { + t.Error("int32 flag should be 0x23, is ", *int32Flag) + } + if v, err := f.GetInt32("int32"); err != nil || v != *int32Flag { + t.Error("GetInt32 does not work.") + } + if *int64Flag != 0x23 { + t.Error("int64 flag should be 0x23, is ", *int64Flag) + } + if v, err := f.GetInt64("int64"); err != nil || v != *int64Flag { + t.Error("GetInt64 does not work.") + } + if *uintFlag != 24 { + t.Error("uint flag should be 24, is ", *uintFlag) + } + if v, err := f.GetUint("uint"); err != nil || v != *uintFlag { + t.Error("GetUint does not work.") + } + if *uint8Flag != 8 { + t.Error("uint8 flag should be 8, is ", *uint8Flag) + } + if v, err := f.GetUint8("uint8"); err != nil || v != *uint8Flag { + t.Error("GetUint8 does not work.") + } + if *uint16Flag != 16 { + t.Error("uint16 flag should be 16, is ", *uint16Flag) + } + if v, err := f.GetUint16("uint16"); err != nil || v != *uint16Flag { + t.Error("GetUint16 does not work.") + } + if *uint32Flag != 32 { + t.Error("uint32 flag should be 32, is ", *uint32Flag) + } + if v, err := f.GetUint32("uint32"); err != nil || v != *uint32Flag { + t.Error("GetUint32 does not work.") + } + if *uint64Flag != 25 { + t.Error("uint64 flag should be 25, is ", *uint64Flag) + } + if v, err := f.GetUint64("uint64"); err != nil || v != *uint64Flag { + t.Error("GetUint64 does not work.") + } + if *stringFlag != "hello" { + t.Error("string flag should be `hello`, is ", *stringFlag) + } + if v, err := f.GetString("string"); err != nil || v != *stringFlag { + t.Error("GetString does not work.") + } + if *float32Flag != -172e12 { + t.Error("float32 flag should be -172e12, is ", *float32Flag) + } + if v, err := f.GetFloat32("float32"); err != nil || v != *float32Flag { + t.Errorf("GetFloat32 returned %v but float32Flag was %v", v, *float32Flag) + } + if *float64Flag != 2718e28 { + t.Error("float64 flag should be 2718e28, is ", *float64Flag) + } + if v, err := f.GetFloat64("float64"); err != nil || v != *float64Flag { + t.Errorf("GetFloat64 returned %v but float64Flag was %v", v, *float64Flag) + } + if !(*ipFlag).Equal(net.ParseIP("10.11.12.13")) { + t.Error("ip flag should be 10.11.12.13, is ", *ipFlag) + } + if v, err := f.GetIP("ip"); err != nil || !v.Equal(*ipFlag) { + t.Errorf("GetIP returned %v but ipFlag was %v", v, *ipFlag) + } + if (*maskFlag).String() != ParseIPv4Mask("255.255.255.0").String() { + t.Error("mask flag should be 255.255.255.0, is ", (*maskFlag).String()) + } + if v, err := f.GetIPv4Mask("mask"); err != nil || v.String() != (*maskFlag).String() { + t.Errorf("GetIP returned %v maskFlag was %v error was %v", v, *maskFlag, err) + } + if *durationFlag != 2*time.Minute { + t.Error("duration flag should be 2m, is ", *durationFlag) + } + if v, err := f.GetDuration("duration"); err != nil || v != *durationFlag { + t.Error("GetDuration does not work.") + } + if _, err := f.GetInt("duration"); err == nil { + t.Error("GetInt parsed a time.Duration?!?!") + } + if *optionalIntNoValueFlag != 9 { + t.Error("optional int flag should be the default value, is ", *optionalIntNoValueFlag) + } + if *optionalIntWithValueFlag != 42 { + t.Error("optional int flag should be 42, is ", *optionalIntWithValueFlag) + } + if len(f.Args()) != 1 { + t.Error("expected one argument, got", len(f.Args())) + } else if f.Args()[0] != extra { + t.Errorf("expected argument %q got %q", extra, f.Args()[0]) + } +} + +func testParseAll(f *FlagSet, t *testing.T) { + if f.Parsed() { + fmt.Errorf("f.Parse() = true before Parse") + } + f.BoolP("boola", "a", false, "bool value") + f.BoolP("boolb", "b", false, "bool2 value") + f.BoolP("boolc", "c", false, "bool3 value") + f.BoolP("boold", "d", false, "bool4 value") + f.StringP("stringa", "s", "0", "string value") + f.StringP("stringz", "z", "0", "string value") + f.StringP("stringx", "x", "0", "string value") + f.StringP("stringy", "y", "0", "string value") + f.Lookup("stringx").NoOptDefVal = "1" + args := []string{ + "-ab", + "-cs=xx", + "--stringz=something", + "-d=true", + "-x", + "-y", + "ee", + } + want := []string{ + "boola", "true", + "boolb", "true", + "boolc", "true", + "stringa", "xx", + "stringz", "something", + "boold", "true", + "stringx", "1", + "stringy", "ee", + } + got := []string{} + store := func(flag *Flag, value string) error { + got = append(got, flag.Name) + if len(value) > 0 { + got = append(got, value) + } + return nil + } + if err := f.ParseAll(args, store); err != nil { + t.Errorf("expected no error, got ", err) + } + if !f.Parsed() { + t.Errorf("f.Parse() = false after Parse") + } + if !reflect.DeepEqual(got, want) { + t.Errorf("f.ParseAll() fail to restore the args") + t.Errorf("Got: %v", got) + t.Errorf("Want: %v", want) + } +} + +func TestShorthand(t *testing.T) { + f := NewFlagSet("shorthand", ContinueOnError) + if f.Parsed() { + t.Error("f.Parse() = true before Parse") + } + boolaFlag := f.BoolP("boola", "a", false, "bool value") + boolbFlag := f.BoolP("boolb", "b", false, "bool2 value") + boolcFlag := f.BoolP("boolc", "c", false, "bool3 value") + booldFlag := f.BoolP("boold", "d", false, "bool4 value") + stringaFlag := f.StringP("stringa", "s", "0", "string value") + stringzFlag := f.StringP("stringz", "z", "0", "string value") + extra := "interspersed-argument" + notaflag := "--i-look-like-a-flag" + args := []string{ + "-ab", + extra, + "-cs", + "hello", + "-z=something", + "-d=true", + "--", + notaflag, + } + f.SetOutput(ioutil.Discard) + if err := f.Parse(args); err != nil { + t.Error("expected no error, got ", err) + } + if !f.Parsed() { + t.Error("f.Parse() = false after Parse") + } + if *boolaFlag != true { + t.Error("boola flag should be true, is ", *boolaFlag) + } + if *boolbFlag != true { + t.Error("boolb flag should be true, is ", *boolbFlag) + } + if *boolcFlag != true { + t.Error("boolc flag should be true, is ", *boolcFlag) + } + if *booldFlag != true { + t.Error("boold flag should be true, is ", *booldFlag) + } + if *stringaFlag != "hello" { + t.Error("stringa flag should be `hello`, is ", *stringaFlag) + } + if *stringzFlag != "something" { + t.Error("stringz flag should be `something`, is ", *stringzFlag) + } + if len(f.Args()) != 2 { + t.Error("expected one argument, got", len(f.Args())) + } else if f.Args()[0] != extra { + t.Errorf("expected argument %q got %q", extra, f.Args()[0]) + } else if f.Args()[1] != notaflag { + t.Errorf("expected argument %q got %q", notaflag, f.Args()[1]) + } + if f.ArgsLenAtDash() != 1 { + t.Errorf("expected argsLenAtDash %d got %d", f.ArgsLenAtDash(), 1) + } +} + +func TestParse(t *testing.T) { + ResetForTesting(func() { t.Error("bad parse") }) + testParse(GetCommandLine(), t) +} + +func TestParseAll(t *testing.T) { + ResetForTesting(func() { t.Error("bad parse") }) + testParseAll(GetCommandLine(), t) +} + +func TestFlagSetParse(t *testing.T) { + testParse(NewFlagSet("test", ContinueOnError), t) +} + +func TestChangedHelper(t *testing.T) { + f := NewFlagSet("changedtest", ContinueOnError) + f.Bool("changed", false, "changed bool") + f.Bool("settrue", true, "true to true") + f.Bool("setfalse", false, "false to false") + f.Bool("unchanged", false, "unchanged bool") + + args := []string{"--changed", "--settrue", "--setfalse=false"} + if err := f.Parse(args); err != nil { + t.Error("f.Parse() = false after Parse") + } + if !f.Changed("changed") { + t.Errorf("--changed wasn't changed!") + } + if !f.Changed("settrue") { + t.Errorf("--settrue wasn't changed!") + } + if !f.Changed("setfalse") { + t.Errorf("--setfalse wasn't changed!") + } + if f.Changed("unchanged") { + t.Errorf("--unchanged was changed!") + } + if f.Changed("invalid") { + t.Errorf("--invalid was changed!") + } + if f.ArgsLenAtDash() != -1 { + t.Errorf("Expected argsLenAtDash: %d but got %d", -1, f.ArgsLenAtDash()) + } +} + +func replaceSeparators(name string, from []string, to string) string { + result := name + for _, sep := range from { + result = strings.Replace(result, sep, to, -1) + } + // Type convert to indicate normalization has been done. + return result +} + +func wordSepNormalizeFunc(f *FlagSet, name string) NormalizedName { + seps := []string{"-", "_"} + name = replaceSeparators(name, seps, ".") + normalizeFlagNameInvocations++ + + return NormalizedName(name) +} + +func testWordSepNormalizedNames(args []string, t *testing.T) { + f := NewFlagSet("normalized", ContinueOnError) + if f.Parsed() { + t.Error("f.Parse() = true before Parse") + } + withDashFlag := f.Bool("with-dash-flag", false, "bool value") + // Set this after some flags have been added and before others. + f.SetNormalizeFunc(wordSepNormalizeFunc) + withUnderFlag := f.Bool("with_under_flag", false, "bool value") + withBothFlag := f.Bool("with-both_flag", false, "bool value") + if err := f.Parse(args); err != nil { + t.Fatal(err) + } + if !f.Parsed() { + t.Error("f.Parse() = false after Parse") + } + if *withDashFlag != true { + t.Error("withDashFlag flag should be true, is ", *withDashFlag) + } + if *withUnderFlag != true { + t.Error("withUnderFlag flag should be true, is ", *withUnderFlag) + } + if *withBothFlag != true { + t.Error("withBothFlag flag should be true, is ", *withBothFlag) + } +} + +func TestWordSepNormalizedNames(t *testing.T) { + args := []string{ + "--with-dash-flag", + "--with-under-flag", + "--with-both-flag", + } + testWordSepNormalizedNames(args, t) + + args = []string{ + "--with_dash_flag", + "--with_under_flag", + "--with_both_flag", + } + testWordSepNormalizedNames(args, t) + + args = []string{ + "--with-dash_flag", + "--with-under_flag", + "--with-both_flag", + } + testWordSepNormalizedNames(args, t) +} + +func aliasAndWordSepFlagNames(f *FlagSet, name string) NormalizedName { + seps := []string{"-", "_"} + + oldName := replaceSeparators("old-valid_flag", seps, ".") + newName := replaceSeparators("valid-flag", seps, ".") + + name = replaceSeparators(name, seps, ".") + switch name { + case oldName: + name = newName + break + } + + return NormalizedName(name) +} + +func TestCustomNormalizedNames(t *testing.T) { + f := NewFlagSet("normalized", ContinueOnError) + if f.Parsed() { + t.Error("f.Parse() = true before Parse") + } + + validFlag := f.Bool("valid-flag", false, "bool value") + f.SetNormalizeFunc(aliasAndWordSepFlagNames) + someOtherFlag := f.Bool("some-other-flag", false, "bool value") + + args := []string{"--old_valid_flag", "--some-other_flag"} + if err := f.Parse(args); err != nil { + t.Fatal(err) + } + + if *validFlag != true { + t.Errorf("validFlag is %v even though we set the alias --old_valid_falg", *validFlag) + } + if *someOtherFlag != true { + t.Error("someOtherFlag should be true, is ", *someOtherFlag) + } +} + +// Every flag we add, the name (displayed also in usage) should normalized +func TestNormalizationFuncShouldChangeFlagName(t *testing.T) { + // Test normalization after addition + f := NewFlagSet("normalized", ContinueOnError) + + f.Bool("valid_flag", false, "bool value") + if f.Lookup("valid_flag").Name != "valid_flag" { + t.Error("The new flag should have the name 'valid_flag' instead of ", f.Lookup("valid_flag").Name) + } + + f.SetNormalizeFunc(wordSepNormalizeFunc) + if f.Lookup("valid_flag").Name != "valid.flag" { + t.Error("The new flag should have the name 'valid.flag' instead of ", f.Lookup("valid_flag").Name) + } + + // Test normalization before addition + f = NewFlagSet("normalized", ContinueOnError) + f.SetNormalizeFunc(wordSepNormalizeFunc) + + f.Bool("valid_flag", false, "bool value") + if f.Lookup("valid_flag").Name != "valid.flag" { + t.Error("The new flag should have the name 'valid.flag' instead of ", f.Lookup("valid_flag").Name) + } +} + +// Declare a user-defined flag type. +type flagVar []string + +func (f *flagVar) String() string { + return fmt.Sprint([]string(*f)) +} + +func (f *flagVar) Set(value string) error { + *f = append(*f, value) + return nil +} + +func (f *flagVar) Type() string { + return "flagVar" +} + +func TestUserDefined(t *testing.T) { + var flags FlagSet + flags.Init("test", ContinueOnError) + var v flagVar + flags.VarP(&v, "v", "v", "usage") + if err := flags.Parse([]string{"--v=1", "-v2", "-v", "3"}); err != nil { + t.Error(err) + } + if len(v) != 3 { + t.Fatal("expected 3 args; got ", len(v)) + } + expect := "[1 2 3]" + if v.String() != expect { + t.Errorf("expected value %q got %q", expect, v.String()) + } +} + +func TestSetOutput(t *testing.T) { + var flags FlagSet + var buf bytes.Buffer + flags.SetOutput(&buf) + flags.Init("test", ContinueOnError) + flags.Parse([]string{"--unknown"}) + if out := buf.String(); !strings.Contains(out, "--unknown") { + t.Logf("expected output mentioning unknown; got %q", out) + } +} + +// This tests that one can reset the flags. This still works but not well, and is +// superseded by FlagSet. +func TestChangingArgs(t *testing.T) { + ResetForTesting(func() { t.Fatal("bad parse") }) + oldArgs := os.Args + defer func() { os.Args = oldArgs }() + os.Args = []string{"cmd", "--before", "subcmd"} + before := Bool("before", false, "") + if err := GetCommandLine().Parse(os.Args[1:]); err != nil { + t.Fatal(err) + } + cmd := Arg(0) + os.Args = []string{"subcmd", "--after", "args"} + after := Bool("after", false, "") + Parse() + args := Args() + + if !*before || cmd != "subcmd" || !*after || len(args) != 1 || args[0] != "args" { + t.Fatalf("expected true subcmd true [args] got %v %v %v %v", *before, cmd, *after, args) + } +} + +// Test that -help invokes the usage message and returns ErrHelp. +func TestHelp(t *testing.T) { + var helpCalled = false + fs := NewFlagSet("help test", ContinueOnError) + fs.Usage = func() { helpCalled = true } + var flag bool + fs.BoolVar(&flag, "flag", false, "regular flag") + // Regular flag invocation should work + err := fs.Parse([]string{"--flag=true"}) + if err != nil { + t.Fatal("expected no error; got ", err) + } + if !flag { + t.Error("flag was not set by --flag") + } + if helpCalled { + t.Error("help called for regular flag") + helpCalled = false // reset for next test + } + // Help flag should work as expected. + err = fs.Parse([]string{"--help"}) + if err == nil { + t.Fatal("error expected") + } + if err != ErrHelp { + t.Fatal("expected ErrHelp; got ", err) + } + if !helpCalled { + t.Fatal("help was not called") + } + // If we define a help flag, that should override. + var help bool + fs.BoolVar(&help, "help", false, "help flag") + helpCalled = false + err = fs.Parse([]string{"--help"}) + if err != nil { + t.Fatal("expected no error for defined --help; got ", err) + } + if helpCalled { + t.Fatal("help was called; should not have been for defined help flag") + } +} + +func TestNoInterspersed(t *testing.T) { + f := NewFlagSet("test", ContinueOnError) + f.SetInterspersed(false) + f.Bool("true", true, "always true") + f.Bool("false", false, "always false") + err := f.Parse([]string{"--true", "break", "--false"}) + if err != nil { + t.Fatal("expected no error; got ", err) + } + args := f.Args() + if len(args) != 2 || args[0] != "break" || args[1] != "--false" { + t.Fatal("expected interspersed options/non-options to fail") + } +} + +func TestTermination(t *testing.T) { + f := NewFlagSet("termination", ContinueOnError) + boolFlag := f.BoolP("bool", "l", false, "bool value") + if f.Parsed() { + t.Error("f.Parse() = true before Parse") + } + arg1 := "ls" + arg2 := "-l" + args := []string{ + "--", + arg1, + arg2, + } + f.SetOutput(ioutil.Discard) + if err := f.Parse(args); err != nil { + t.Fatal("expected no error; got ", err) + } + if !f.Parsed() { + t.Error("f.Parse() = false after Parse") + } + if *boolFlag { + t.Error("expected boolFlag=false, got true") + } + if len(f.Args()) != 2 { + t.Errorf("expected 2 arguments, got %d: %v", len(f.Args()), f.Args()) + } + if f.Args()[0] != arg1 { + t.Errorf("expected argument %q got %q", arg1, f.Args()[0]) + } + if f.Args()[1] != arg2 { + t.Errorf("expected argument %q got %q", arg2, f.Args()[1]) + } + if f.ArgsLenAtDash() != 0 { + t.Errorf("expected argsLenAtDash %d got %d", 0, f.ArgsLenAtDash()) + } +} + +func TestDeprecatedFlagInDocs(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + f.Bool("badflag", true, "always true") + f.MarkDeprecated("badflag", "use --good-flag instead") + + out := new(bytes.Buffer) + f.SetOutput(out) + f.PrintDefaults() + + if strings.Contains(out.String(), "badflag") { + t.Errorf("found deprecated flag in usage!") + } +} + +func TestDeprecatedFlagShorthandInDocs(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + name := "noshorthandflag" + f.BoolP(name, "n", true, "always true") + f.MarkShorthandDeprecated("noshorthandflag", fmt.Sprintf("use --%s instead", name)) + + out := new(bytes.Buffer) + f.SetOutput(out) + f.PrintDefaults() + + if strings.Contains(out.String(), "-n,") { + t.Errorf("found deprecated flag shorthand in usage!") + } +} + +func parseReturnStderr(t *testing.T, f *FlagSet, args []string) (string, error) { + oldStderr := os.Stderr + r, w, _ := os.Pipe() + os.Stderr = w + + err := f.Parse(args) + + outC := make(chan string) + // copy the output in a separate goroutine so printing can't block indefinitely + go func() { + var buf bytes.Buffer + io.Copy(&buf, r) + outC <- buf.String() + }() + + w.Close() + os.Stderr = oldStderr + out := <-outC + + return out, err +} + +func TestDeprecatedFlagUsage(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + f.Bool("badflag", true, "always true") + usageMsg := "use --good-flag instead" + f.MarkDeprecated("badflag", usageMsg) + + args := []string{"--badflag"} + out, err := parseReturnStderr(t, f, args) + if err != nil { + t.Fatal("expected no error; got ", err) + } + + if !strings.Contains(out, usageMsg) { + t.Errorf("usageMsg not printed when using a deprecated flag!") + } +} + +func TestDeprecatedFlagShorthandUsage(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + name := "noshorthandflag" + f.BoolP(name, "n", true, "always true") + usageMsg := fmt.Sprintf("use --%s instead", name) + f.MarkShorthandDeprecated(name, usageMsg) + + args := []string{"-n"} + out, err := parseReturnStderr(t, f, args) + if err != nil { + t.Fatal("expected no error; got ", err) + } + + if !strings.Contains(out, usageMsg) { + t.Errorf("usageMsg not printed when using a deprecated flag!") + } +} + +func TestDeprecatedFlagUsageNormalized(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + f.Bool("bad-double_flag", true, "always true") + f.SetNormalizeFunc(wordSepNormalizeFunc) + usageMsg := "use --good-flag instead" + f.MarkDeprecated("bad_double-flag", usageMsg) + + args := []string{"--bad_double_flag"} + out, err := parseReturnStderr(t, f, args) + if err != nil { + t.Fatal("expected no error; got ", err) + } + + if !strings.Contains(out, usageMsg) { + t.Errorf("usageMsg not printed when using a deprecated flag!") + } +} + +// Name normalization function should be called only once on flag addition +func TestMultipleNormalizeFlagNameInvocations(t *testing.T) { + normalizeFlagNameInvocations = 0 + + f := NewFlagSet("normalized", ContinueOnError) + f.SetNormalizeFunc(wordSepNormalizeFunc) + f.Bool("with_under_flag", false, "bool value") + + if normalizeFlagNameInvocations != 1 { + t.Fatal("Expected normalizeFlagNameInvocations to be 1; got ", normalizeFlagNameInvocations) + } +} + +// +func TestHiddenFlagInUsage(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + f.Bool("secretFlag", true, "shhh") + f.MarkHidden("secretFlag") + + out := new(bytes.Buffer) + f.SetOutput(out) + f.PrintDefaults() + + if strings.Contains(out.String(), "secretFlag") { + t.Errorf("found hidden flag in usage!") + } +} + +// +func TestHiddenFlagUsage(t *testing.T) { + f := NewFlagSet("bob", ContinueOnError) + f.Bool("secretFlag", true, "shhh") + f.MarkHidden("secretFlag") + + args := []string{"--secretFlag"} + out, err := parseReturnStderr(t, f, args) + if err != nil { + t.Fatal("expected no error; got ", err) + } + + if strings.Contains(out, "shhh") { + t.Errorf("usage message printed when using a hidden flag!") + } +} + +const defaultOutput = ` --A for bootstrapping, allow 'any' type + --Alongflagname disable bounds checking + -C, --CCC a boolean defaulting to true (default true) + --D path set relative path for local imports + --F number a non-zero number (default 2.7) + --G float a float that defaults to zero + --IP ip IP address with no default + --IPMask ipMask Netmask address with no default + --IPNet ipNet IP network with no default + --Ints intSlice int slice with zero default + --N int a non-zero int (default 27) + --ND1 string[="bar"] a string with NoOptDefVal (default "foo") + --ND2 num[=4321] a num with NoOptDefVal (default 1234) + --StringArray stringArray string array with zero default + --StringSlice stringSlice string slice with zero default + --Z int an int that defaults to zero + --custom custom custom Value implementation + --customP custom a VarP with default (default 10) + --maxT timeout set timeout for dial +` + +// Custom value that satisfies the Value interface. +type customValue int + +func (cv *customValue) String() string { return fmt.Sprintf("%v", *cv) } + +func (cv *customValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *cv = customValue(v) + return err +} + +func (cv *customValue) Type() string { return "custom" } + +func TestPrintDefaults(t *testing.T) { + fs := NewFlagSet("print defaults test", ContinueOnError) + var buf bytes.Buffer + fs.SetOutput(&buf) + fs.Bool("A", false, "for bootstrapping, allow 'any' type") + fs.Bool("Alongflagname", false, "disable bounds checking") + fs.BoolP("CCC", "C", true, "a boolean defaulting to true") + fs.String("D", "", "set relative `path` for local imports") + fs.Float64("F", 2.7, "a non-zero `number`") + fs.Float64("G", 0, "a float that defaults to zero") + fs.Int("N", 27, "a non-zero int") + fs.IntSlice("Ints", []int{}, "int slice with zero default") + fs.IP("IP", nil, "IP address with no default") + fs.IPMask("IPMask", nil, "Netmask address with no default") + fs.IPNet("IPNet", net.IPNet{}, "IP network with no default") + fs.Int("Z", 0, "an int that defaults to zero") + fs.Duration("maxT", 0, "set `timeout` for dial") + fs.String("ND1", "foo", "a string with NoOptDefVal") + fs.Lookup("ND1").NoOptDefVal = "bar" + fs.Int("ND2", 1234, "a `num` with NoOptDefVal") + fs.Lookup("ND2").NoOptDefVal = "4321" + fs.StringSlice("StringSlice", []string{}, "string slice with zero default") + fs.StringArray("StringArray", []string{}, "string array with zero default") + + var cv customValue + fs.Var(&cv, "custom", "custom Value implementation") + + cv2 := customValue(10) + fs.VarP(&cv2, "customP", "", "a VarP with default") + + fs.PrintDefaults() + got := buf.String() + if got != defaultOutput { + fmt.Println("\n" + got) + fmt.Println("\n" + defaultOutput) + t.Errorf("got %q want %q\n", got, defaultOutput) + } +} diff --git a/vendor/github.com/spf13/pflag/float32.go b/vendor/github.com/spf13/pflag/float32.go new file mode 100644 index 000000000..a243f81f7 --- /dev/null +++ b/vendor/github.com/spf13/pflag/float32.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- float32 Value +type float32Value float32 + +func newFloat32Value(val float32, p *float32) *float32Value { + *p = val + return (*float32Value)(p) +} + +func (f *float32Value) Set(s string) error { + v, err := strconv.ParseFloat(s, 32) + *f = float32Value(v) + return err +} + +func (f *float32Value) Type() string { + return "float32" +} + +func (f *float32Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 32) } + +func float32Conv(sval string) (interface{}, error) { + v, err := strconv.ParseFloat(sval, 32) + if err != nil { + return 0, err + } + return float32(v), nil +} + +// GetFloat32 return the float32 value of a flag with the given name +func (f *FlagSet) GetFloat32(name string) (float32, error) { + val, err := f.getFlagType(name, "float32", float32Conv) + if err != nil { + return 0, err + } + return val.(float32), nil +} + +// Float32Var defines a float32 flag with specified name, default value, and usage string. +// The argument p points to a float32 variable in which to store the value of the flag. +func (f *FlagSet) Float32Var(p *float32, name string, value float32, usage string) { + f.VarP(newFloat32Value(value, p), name, "", usage) +} + +// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float32VarP(p *float32, name, shorthand string, value float32, usage string) { + f.VarP(newFloat32Value(value, p), name, shorthand, usage) +} + +// Float32Var defines a float32 flag with specified name, default value, and usage string. +// The argument p points to a float32 variable in which to store the value of the flag. +func Float32Var(p *float32, name string, value float32, usage string) { + CommandLine.VarP(newFloat32Value(value, p), name, "", usage) +} + +// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash. +func Float32VarP(p *float32, name, shorthand string, value float32, usage string) { + CommandLine.VarP(newFloat32Value(value, p), name, shorthand, usage) +} + +// Float32 defines a float32 flag with specified name, default value, and usage string. +// The return value is the address of a float32 variable that stores the value of the flag. +func (f *FlagSet) Float32(name string, value float32, usage string) *float32 { + p := new(float32) + f.Float32VarP(p, name, "", value, usage) + return p +} + +// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float32P(name, shorthand string, value float32, usage string) *float32 { + p := new(float32) + f.Float32VarP(p, name, shorthand, value, usage) + return p +} + +// Float32 defines a float32 flag with specified name, default value, and usage string. +// The return value is the address of a float32 variable that stores the value of the flag. +func Float32(name string, value float32, usage string) *float32 { + return CommandLine.Float32P(name, "", value, usage) +} + +// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash. +func Float32P(name, shorthand string, value float32, usage string) *float32 { + return CommandLine.Float32P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/float64.go b/vendor/github.com/spf13/pflag/float64.go new file mode 100644 index 000000000..04b5492a7 --- /dev/null +++ b/vendor/github.com/spf13/pflag/float64.go @@ -0,0 +1,84 @@ +package pflag + +import "strconv" + +// -- float64 Value +type float64Value float64 + +func newFloat64Value(val float64, p *float64) *float64Value { + *p = val + return (*float64Value)(p) +} + +func (f *float64Value) Set(s string) error { + v, err := strconv.ParseFloat(s, 64) + *f = float64Value(v) + return err +} + +func (f *float64Value) Type() string { + return "float64" +} + +func (f *float64Value) String() string { return strconv.FormatFloat(float64(*f), 'g', -1, 64) } + +func float64Conv(sval string) (interface{}, error) { + return strconv.ParseFloat(sval, 64) +} + +// GetFloat64 return the float64 value of a flag with the given name +func (f *FlagSet) GetFloat64(name string) (float64, error) { + val, err := f.getFlagType(name, "float64", float64Conv) + if err != nil { + return 0, err + } + return val.(float64), nil +} + +// Float64Var defines a float64 flag with specified name, default value, and usage string. +// The argument p points to a float64 variable in which to store the value of the flag. +func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string) { + f.VarP(newFloat64Value(value, p), name, "", usage) +} + +// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float64VarP(p *float64, name, shorthand string, value float64, usage string) { + f.VarP(newFloat64Value(value, p), name, shorthand, usage) +} + +// Float64Var defines a float64 flag with specified name, default value, and usage string. +// The argument p points to a float64 variable in which to store the value of the flag. +func Float64Var(p *float64, name string, value float64, usage string) { + CommandLine.VarP(newFloat64Value(value, p), name, "", usage) +} + +// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash. +func Float64VarP(p *float64, name, shorthand string, value float64, usage string) { + CommandLine.VarP(newFloat64Value(value, p), name, shorthand, usage) +} + +// Float64 defines a float64 flag with specified name, default value, and usage string. +// The return value is the address of a float64 variable that stores the value of the flag. +func (f *FlagSet) Float64(name string, value float64, usage string) *float64 { + p := new(float64) + f.Float64VarP(p, name, "", value, usage) + return p +} + +// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float64P(name, shorthand string, value float64, usage string) *float64 { + p := new(float64) + f.Float64VarP(p, name, shorthand, value, usage) + return p +} + +// Float64 defines a float64 flag with specified name, default value, and usage string. +// The return value is the address of a float64 variable that stores the value of the flag. +func Float64(name string, value float64, usage string) *float64 { + return CommandLine.Float64P(name, "", value, usage) +} + +// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash. +func Float64P(name, shorthand string, value float64, usage string) *float64 { + return CommandLine.Float64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/golangflag.go b/vendor/github.com/spf13/pflag/golangflag.go new file mode 100644 index 000000000..c4f47ebe5 --- /dev/null +++ b/vendor/github.com/spf13/pflag/golangflag.go @@ -0,0 +1,101 @@ +// Copyright 2009 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 pflag + +import ( + goflag "flag" + "reflect" + "strings" +) + +// flagValueWrapper implements pflag.Value around a flag.Value. The main +// difference here is the addition of the Type method that returns a string +// name of the type. As this is generally unknown, we approximate that with +// reflection. +type flagValueWrapper struct { + inner goflag.Value + flagType string +} + +// We are just copying the boolFlag interface out of goflag as that is what +// they use to decide if a flag should get "true" when no arg is given. +type goBoolFlag interface { + goflag.Value + IsBoolFlag() bool +} + +func wrapFlagValue(v goflag.Value) Value { + // If the flag.Value happens to also be a pflag.Value, just use it directly. + if pv, ok := v.(Value); ok { + return pv + } + + pv := &flagValueWrapper{ + inner: v, + } + + t := reflect.TypeOf(v) + if t.Kind() == reflect.Interface || t.Kind() == reflect.Ptr { + t = t.Elem() + } + + pv.flagType = strings.TrimSuffix(t.Name(), "Value") + return pv +} + +func (v *flagValueWrapper) String() string { + return v.inner.String() +} + +func (v *flagValueWrapper) Set(s string) error { + return v.inner.Set(s) +} + +func (v *flagValueWrapper) Type() string { + return v.flagType +} + +// PFlagFromGoFlag will return a *pflag.Flag given a *flag.Flag +// If the *flag.Flag.Name was a single character (ex: `v`) it will be accessiblei +// with both `-v` and `--v` in flags. If the golang flag was more than a single +// character (ex: `verbose`) it will only be accessible via `--verbose` +func PFlagFromGoFlag(goflag *goflag.Flag) *Flag { + // Remember the default value as a string; it won't change. + flag := &Flag{ + Name: goflag.Name, + Usage: goflag.Usage, + Value: wrapFlagValue(goflag.Value), + // Looks like golang flags don't set DefValue correctly :-( + //DefValue: goflag.DefValue, + DefValue: goflag.Value.String(), + } + // Ex: if the golang flag was -v, allow both -v and --v to work + if len(flag.Name) == 1 { + flag.Shorthand = flag.Name + } + if fv, ok := goflag.Value.(goBoolFlag); ok && fv.IsBoolFlag() { + flag.NoOptDefVal = "true" + } + return flag +} + +// AddGoFlag will add the given *flag.Flag to the pflag.FlagSet +func (f *FlagSet) AddGoFlag(goflag *goflag.Flag) { + if f.Lookup(goflag.Name) != nil { + return + } + newflag := PFlagFromGoFlag(goflag) + f.AddFlag(newflag) +} + +// AddGoFlagSet will add the given *flag.FlagSet to the pflag.FlagSet +func (f *FlagSet) AddGoFlagSet(newSet *goflag.FlagSet) { + if newSet == nil { + return + } + newSet.VisitAll(func(goflag *goflag.Flag) { + f.AddGoFlag(goflag) + }) +} diff --git a/vendor/github.com/spf13/pflag/golangflag_test.go b/vendor/github.com/spf13/pflag/golangflag_test.go new file mode 100644 index 000000000..77e2d7d80 --- /dev/null +++ b/vendor/github.com/spf13/pflag/golangflag_test.go @@ -0,0 +1,39 @@ +// Copyright 2009 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 pflag + +import ( + goflag "flag" + "testing" +) + +func TestGoflags(t *testing.T) { + goflag.String("stringFlag", "stringFlag", "stringFlag") + goflag.Bool("boolFlag", false, "boolFlag") + + f := NewFlagSet("test", ContinueOnError) + + f.AddGoFlagSet(goflag.CommandLine) + err := f.Parse([]string{"--stringFlag=bob", "--boolFlag"}) + if err != nil { + t.Fatal("expected no error; get", err) + } + + getString, err := f.GetString("stringFlag") + if err != nil { + t.Fatal("expected no error; get", err) + } + if getString != "bob" { + t.Fatalf("expected getString=bob but got getString=%s", getString) + } + + getBool, err := f.GetBool("boolFlag") + if err != nil { + t.Fatal("expected no error; get", err) + } + if getBool != true { + t.Fatalf("expected getBool=true but got getBool=%v", getBool) + } +} diff --git a/vendor/github.com/spf13/pflag/int.go b/vendor/github.com/spf13/pflag/int.go new file mode 100644 index 000000000..1474b89df --- /dev/null +++ b/vendor/github.com/spf13/pflag/int.go @@ -0,0 +1,84 @@ +package pflag + +import "strconv" + +// -- int Value +type intValue int + +func newIntValue(val int, p *int) *intValue { + *p = val + return (*intValue)(p) +} + +func (i *intValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *i = intValue(v) + return err +} + +func (i *intValue) Type() string { + return "int" +} + +func (i *intValue) String() string { return strconv.Itoa(int(*i)) } + +func intConv(sval string) (interface{}, error) { + return strconv.Atoi(sval) +} + +// GetInt return the int value of a flag with the given name +func (f *FlagSet) GetInt(name string) (int, error) { + val, err := f.getFlagType(name, "int", intConv) + if err != nil { + return 0, err + } + return val.(int), nil +} + +// IntVar defines an int flag with specified name, default value, and usage string. +// The argument p points to an int variable in which to store the value of the flag. +func (f *FlagSet) IntVar(p *int, name string, value int, usage string) { + f.VarP(newIntValue(value, p), name, "", usage) +} + +// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntVarP(p *int, name, shorthand string, value int, usage string) { + f.VarP(newIntValue(value, p), name, shorthand, usage) +} + +// IntVar defines an int flag with specified name, default value, and usage string. +// The argument p points to an int variable in which to store the value of the flag. +func IntVar(p *int, name string, value int, usage string) { + CommandLine.VarP(newIntValue(value, p), name, "", usage) +} + +// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash. +func IntVarP(p *int, name, shorthand string, value int, usage string) { + CommandLine.VarP(newIntValue(value, p), name, shorthand, usage) +} + +// Int defines an int flag with specified name, default value, and usage string. +// The return value is the address of an int variable that stores the value of the flag. +func (f *FlagSet) Int(name string, value int, usage string) *int { + p := new(int) + f.IntVarP(p, name, "", value, usage) + return p +} + +// IntP is like Int, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntP(name, shorthand string, value int, usage string) *int { + p := new(int) + f.IntVarP(p, name, shorthand, value, usage) + return p +} + +// Int defines an int flag with specified name, default value, and usage string. +// The return value is the address of an int variable that stores the value of the flag. +func Int(name string, value int, usage string) *int { + return CommandLine.IntP(name, "", value, usage) +} + +// IntP is like Int, but accepts a shorthand letter that can be used after a single dash. +func IntP(name, shorthand string, value int, usage string) *int { + return CommandLine.IntP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int32.go b/vendor/github.com/spf13/pflag/int32.go new file mode 100644 index 000000000..9b95944f0 --- /dev/null +++ b/vendor/github.com/spf13/pflag/int32.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- int32 Value +type int32Value int32 + +func newInt32Value(val int32, p *int32) *int32Value { + *p = val + return (*int32Value)(p) +} + +func (i *int32Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 32) + *i = int32Value(v) + return err +} + +func (i *int32Value) Type() string { + return "int32" +} + +func (i *int32Value) String() string { return strconv.FormatInt(int64(*i), 10) } + +func int32Conv(sval string) (interface{}, error) { + v, err := strconv.ParseInt(sval, 0, 32) + if err != nil { + return 0, err + } + return int32(v), nil +} + +// GetInt32 return the int32 value of a flag with the given name +func (f *FlagSet) GetInt32(name string) (int32, error) { + val, err := f.getFlagType(name, "int32", int32Conv) + if err != nil { + return 0, err + } + return val.(int32), nil +} + +// Int32Var defines an int32 flag with specified name, default value, and usage string. +// The argument p points to an int32 variable in which to store the value of the flag. +func (f *FlagSet) Int32Var(p *int32, name string, value int32, usage string) { + f.VarP(newInt32Value(value, p), name, "", usage) +} + +// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int32VarP(p *int32, name, shorthand string, value int32, usage string) { + f.VarP(newInt32Value(value, p), name, shorthand, usage) +} + +// Int32Var defines an int32 flag with specified name, default value, and usage string. +// The argument p points to an int32 variable in which to store the value of the flag. +func Int32Var(p *int32, name string, value int32, usage string) { + CommandLine.VarP(newInt32Value(value, p), name, "", usage) +} + +// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash. +func Int32VarP(p *int32, name, shorthand string, value int32, usage string) { + CommandLine.VarP(newInt32Value(value, p), name, shorthand, usage) +} + +// Int32 defines an int32 flag with specified name, default value, and usage string. +// The return value is the address of an int32 variable that stores the value of the flag. +func (f *FlagSet) Int32(name string, value int32, usage string) *int32 { + p := new(int32) + f.Int32VarP(p, name, "", value, usage) + return p +} + +// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int32P(name, shorthand string, value int32, usage string) *int32 { + p := new(int32) + f.Int32VarP(p, name, shorthand, value, usage) + return p +} + +// Int32 defines an int32 flag with specified name, default value, and usage string. +// The return value is the address of an int32 variable that stores the value of the flag. +func Int32(name string, value int32, usage string) *int32 { + return CommandLine.Int32P(name, "", value, usage) +} + +// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash. +func Int32P(name, shorthand string, value int32, usage string) *int32 { + return CommandLine.Int32P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int64.go b/vendor/github.com/spf13/pflag/int64.go new file mode 100644 index 000000000..0026d781d --- /dev/null +++ b/vendor/github.com/spf13/pflag/int64.go @@ -0,0 +1,84 @@ +package pflag + +import "strconv" + +// -- int64 Value +type int64Value int64 + +func newInt64Value(val int64, p *int64) *int64Value { + *p = val + return (*int64Value)(p) +} + +func (i *int64Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *i = int64Value(v) + return err +} + +func (i *int64Value) Type() string { + return "int64" +} + +func (i *int64Value) String() string { return strconv.FormatInt(int64(*i), 10) } + +func int64Conv(sval string) (interface{}, error) { + return strconv.ParseInt(sval, 0, 64) +} + +// GetInt64 return the int64 value of a flag with the given name +func (f *FlagSet) GetInt64(name string) (int64, error) { + val, err := f.getFlagType(name, "int64", int64Conv) + if err != nil { + return 0, err + } + return val.(int64), nil +} + +// Int64Var defines an int64 flag with specified name, default value, and usage string. +// The argument p points to an int64 variable in which to store the value of the flag. +func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) { + f.VarP(newInt64Value(value, p), name, "", usage) +} + +// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int64VarP(p *int64, name, shorthand string, value int64, usage string) { + f.VarP(newInt64Value(value, p), name, shorthand, usage) +} + +// Int64Var defines an int64 flag with specified name, default value, and usage string. +// The argument p points to an int64 variable in which to store the value of the flag. +func Int64Var(p *int64, name string, value int64, usage string) { + CommandLine.VarP(newInt64Value(value, p), name, "", usage) +} + +// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash. +func Int64VarP(p *int64, name, shorthand string, value int64, usage string) { + CommandLine.VarP(newInt64Value(value, p), name, shorthand, usage) +} + +// Int64 defines an int64 flag with specified name, default value, and usage string. +// The return value is the address of an int64 variable that stores the value of the flag. +func (f *FlagSet) Int64(name string, value int64, usage string) *int64 { + p := new(int64) + f.Int64VarP(p, name, "", value, usage) + return p +} + +// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int64P(name, shorthand string, value int64, usage string) *int64 { + p := new(int64) + f.Int64VarP(p, name, shorthand, value, usage) + return p +} + +// Int64 defines an int64 flag with specified name, default value, and usage string. +// The return value is the address of an int64 variable that stores the value of the flag. +func Int64(name string, value int64, usage string) *int64 { + return CommandLine.Int64P(name, "", value, usage) +} + +// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash. +func Int64P(name, shorthand string, value int64, usage string) *int64 { + return CommandLine.Int64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int8.go b/vendor/github.com/spf13/pflag/int8.go new file mode 100644 index 000000000..4da92228e --- /dev/null +++ b/vendor/github.com/spf13/pflag/int8.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- int8 Value +type int8Value int8 + +func newInt8Value(val int8, p *int8) *int8Value { + *p = val + return (*int8Value)(p) +} + +func (i *int8Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 8) + *i = int8Value(v) + return err +} + +func (i *int8Value) Type() string { + return "int8" +} + +func (i *int8Value) String() string { return strconv.FormatInt(int64(*i), 10) } + +func int8Conv(sval string) (interface{}, error) { + v, err := strconv.ParseInt(sval, 0, 8) + if err != nil { + return 0, err + } + return int8(v), nil +} + +// GetInt8 return the int8 value of a flag with the given name +func (f *FlagSet) GetInt8(name string) (int8, error) { + val, err := f.getFlagType(name, "int8", int8Conv) + if err != nil { + return 0, err + } + return val.(int8), nil +} + +// Int8Var defines an int8 flag with specified name, default value, and usage string. +// The argument p points to an int8 variable in which to store the value of the flag. +func (f *FlagSet) Int8Var(p *int8, name string, value int8, usage string) { + f.VarP(newInt8Value(value, p), name, "", usage) +} + +// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int8VarP(p *int8, name, shorthand string, value int8, usage string) { + f.VarP(newInt8Value(value, p), name, shorthand, usage) +} + +// Int8Var defines an int8 flag with specified name, default value, and usage string. +// The argument p points to an int8 variable in which to store the value of the flag. +func Int8Var(p *int8, name string, value int8, usage string) { + CommandLine.VarP(newInt8Value(value, p), name, "", usage) +} + +// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash. +func Int8VarP(p *int8, name, shorthand string, value int8, usage string) { + CommandLine.VarP(newInt8Value(value, p), name, shorthand, usage) +} + +// Int8 defines an int8 flag with specified name, default value, and usage string. +// The return value is the address of an int8 variable that stores the value of the flag. +func (f *FlagSet) Int8(name string, value int8, usage string) *int8 { + p := new(int8) + f.Int8VarP(p, name, "", value, usage) + return p +} + +// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int8P(name, shorthand string, value int8, usage string) *int8 { + p := new(int8) + f.Int8VarP(p, name, shorthand, value, usage) + return p +} + +// Int8 defines an int8 flag with specified name, default value, and usage string. +// The return value is the address of an int8 variable that stores the value of the flag. +func Int8(name string, value int8, usage string) *int8 { + return CommandLine.Int8P(name, "", value, usage) +} + +// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash. +func Int8P(name, shorthand string, value int8, usage string) *int8 { + return CommandLine.Int8P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int_slice.go b/vendor/github.com/spf13/pflag/int_slice.go new file mode 100644 index 000000000..1e7c9edde --- /dev/null +++ b/vendor/github.com/spf13/pflag/int_slice.go @@ -0,0 +1,128 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- intSlice Value +type intSliceValue struct { + value *[]int + changed bool +} + +func newIntSliceValue(val []int, p *[]int) *intSliceValue { + isv := new(intSliceValue) + isv.value = p + *isv.value = val + return isv +} + +func (s *intSliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]int, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.Atoi(d) + if err != nil { + return err + } + + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *intSliceValue) Type() string { + return "intSlice" +} + +func (s *intSliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%d", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func intSliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []int{}, nil + } + ss := strings.Split(val, ",") + out := make([]int, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.Atoi(d) + if err != nil { + return nil, err + } + + } + return out, nil +} + +// GetIntSlice return the []int value of a flag with the given name +func (f *FlagSet) GetIntSlice(name string) ([]int, error) { + val, err := f.getFlagType(name, "intSlice", intSliceConv) + if err != nil { + return []int{}, err + } + return val.([]int), nil +} + +// IntSliceVar defines a intSlice flag with specified name, default value, and usage string. +// The argument p points to a []int variable in which to store the value of the flag. +func (f *FlagSet) IntSliceVar(p *[]int, name string, value []int, usage string) { + f.VarP(newIntSliceValue(value, p), name, "", usage) +} + +// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) { + f.VarP(newIntSliceValue(value, p), name, shorthand, usage) +} + +// IntSliceVar defines a int[] flag with specified name, default value, and usage string. +// The argument p points to a int[] variable in which to store the value of the flag. +func IntSliceVar(p *[]int, name string, value []int, usage string) { + CommandLine.VarP(newIntSliceValue(value, p), name, "", usage) +} + +// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash. +func IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) { + CommandLine.VarP(newIntSliceValue(value, p), name, shorthand, usage) +} + +// IntSlice defines a []int flag with specified name, default value, and usage string. +// The return value is the address of a []int variable that stores the value of the flag. +func (f *FlagSet) IntSlice(name string, value []int, usage string) *[]int { + p := []int{} + f.IntSliceVarP(&p, name, "", value, usage) + return &p +} + +// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntSliceP(name, shorthand string, value []int, usage string) *[]int { + p := []int{} + f.IntSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// IntSlice defines a []int flag with specified name, default value, and usage string. +// The return value is the address of a []int variable that stores the value of the flag. +func IntSlice(name string, value []int, usage string) *[]int { + return CommandLine.IntSliceP(name, "", value, usage) +} + +// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash. +func IntSliceP(name, shorthand string, value []int, usage string) *[]int { + return CommandLine.IntSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int_slice_test.go b/vendor/github.com/spf13/pflag/int_slice_test.go new file mode 100644 index 000000000..745aecb95 --- /dev/null +++ b/vendor/github.com/spf13/pflag/int_slice_test.go @@ -0,0 +1,165 @@ +// Copyright 2009 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 pflag + +import ( + "fmt" + "strconv" + "strings" + "testing" +) + +func setUpISFlagSet(isp *[]int) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.IntSliceVar(isp, "is", []int{}, "Command separated list!") + return f +} + +func setUpISFlagSetWithDefault(isp *[]int) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.IntSliceVar(isp, "is", []int{0, 1}, "Command separated list!") + return f +} + +func TestEmptyIS(t *testing.T) { + var is []int + f := setUpISFlagSet(&is) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getIS, err := f.GetIntSlice("is") + if err != nil { + t.Fatal("got an error from GetIntSlice():", err) + } + if len(getIS) != 0 { + t.Fatalf("got is %v with len=%d but expected length=0", getIS, len(getIS)) + } +} + +func TestIS(t *testing.T) { + var is []int + f := setUpISFlagSet(&is) + + vals := []string{"1", "2", "4", "3"} + arg := fmt.Sprintf("--is=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range is { + d, err := strconv.Atoi(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if d != v { + t.Fatalf("expected is[%d] to be %s but got: %d", i, vals[i], v) + } + } + getIS, err := f.GetIntSlice("is") + if err != nil { + t.Fatalf("got error: %v", err) + } + for i, v := range getIS { + d, err := strconv.Atoi(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if d != v { + t.Fatalf("expected is[%d] to be %s but got: %d from GetIntSlice", i, vals[i], v) + } + } +} + +func TestISDefault(t *testing.T) { + var is []int + f := setUpISFlagSetWithDefault(&is) + + vals := []string{"0", "1"} + + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range is { + d, err := strconv.Atoi(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if d != v { + t.Fatalf("expected is[%d] to be %d but got: %d", i, d, v) + } + } + + getIS, err := f.GetIntSlice("is") + if err != nil { + t.Fatal("got an error from GetIntSlice():", err) + } + for i, v := range getIS { + d, err := strconv.Atoi(vals[i]) + if err != nil { + t.Fatal("got an error from GetIntSlice():", err) + } + if d != v { + t.Fatalf("expected is[%d] to be %d from GetIntSlice but got: %d", i, d, v) + } + } +} + +func TestISWithDefault(t *testing.T) { + var is []int + f := setUpISFlagSetWithDefault(&is) + + vals := []string{"1", "2"} + arg := fmt.Sprintf("--is=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range is { + d, err := strconv.Atoi(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if d != v { + t.Fatalf("expected is[%d] to be %d but got: %d", i, d, v) + } + } + + getIS, err := f.GetIntSlice("is") + if err != nil { + t.Fatal("got an error from GetIntSlice():", err) + } + for i, v := range getIS { + d, err := strconv.Atoi(vals[i]) + if err != nil { + t.Fatalf("got error: %v", err) + } + if d != v { + t.Fatalf("expected is[%d] to be %d from GetIntSlice but got: %d", i, d, v) + } + } +} + +func TestISCalledTwice(t *testing.T) { + var is []int + f := setUpISFlagSet(&is) + + in := []string{"1,2", "3"} + expected := []int{1, 2, 3} + argfmt := "--is=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range is { + if expected[i] != v { + t.Fatalf("expected is[%d] to be %d but got: %d", i, expected[i], v) + } + } +} diff --git a/vendor/github.com/spf13/pflag/ip.go b/vendor/github.com/spf13/pflag/ip.go new file mode 100644 index 000000000..3d414ba69 --- /dev/null +++ b/vendor/github.com/spf13/pflag/ip.go @@ -0,0 +1,94 @@ +package pflag + +import ( + "fmt" + "net" + "strings" +) + +// -- net.IP value +type ipValue net.IP + +func newIPValue(val net.IP, p *net.IP) *ipValue { + *p = val + return (*ipValue)(p) +} + +func (i *ipValue) String() string { return net.IP(*i).String() } +func (i *ipValue) Set(s string) error { + ip := net.ParseIP(strings.TrimSpace(s)) + if ip == nil { + return fmt.Errorf("failed to parse IP: %q", s) + } + *i = ipValue(ip) + return nil +} + +func (i *ipValue) Type() string { + return "ip" +} + +func ipConv(sval string) (interface{}, error) { + ip := net.ParseIP(sval) + if ip != nil { + return ip, nil + } + return nil, fmt.Errorf("invalid string being converted to IP address: %s", sval) +} + +// GetIP return the net.IP value of a flag with the given name +func (f *FlagSet) GetIP(name string) (net.IP, error) { + val, err := f.getFlagType(name, "ip", ipConv) + if err != nil { + return nil, err + } + return val.(net.IP), nil +} + +// IPVar defines an net.IP flag with specified name, default value, and usage string. +// The argument p points to an net.IP variable in which to store the value of the flag. +func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) { + f.VarP(newIPValue(value, p), name, "", usage) +} + +// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { + f.VarP(newIPValue(value, p), name, shorthand, usage) +} + +// IPVar defines an net.IP flag with specified name, default value, and usage string. +// The argument p points to an net.IP variable in which to store the value of the flag. +func IPVar(p *net.IP, name string, value net.IP, usage string) { + CommandLine.VarP(newIPValue(value, p), name, "", usage) +} + +// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash. +func IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { + CommandLine.VarP(newIPValue(value, p), name, shorthand, usage) +} + +// IP defines an net.IP flag with specified name, default value, and usage string. +// The return value is the address of an net.IP variable that stores the value of the flag. +func (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP { + p := new(net.IP) + f.IPVarP(p, name, "", value, usage) + return p +} + +// IPP is like IP, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) *net.IP { + p := new(net.IP) + f.IPVarP(p, name, shorthand, value, usage) + return p +} + +// IP defines an net.IP flag with specified name, default value, and usage string. +// The return value is the address of an net.IP variable that stores the value of the flag. +func IP(name string, value net.IP, usage string) *net.IP { + return CommandLine.IPP(name, "", value, usage) +} + +// IPP is like IP, but accepts a shorthand letter that can be used after a single dash. +func IPP(name, shorthand string, value net.IP, usage string) *net.IP { + return CommandLine.IPP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ip_slice.go b/vendor/github.com/spf13/pflag/ip_slice.go new file mode 100644 index 000000000..7dd196fe3 --- /dev/null +++ b/vendor/github.com/spf13/pflag/ip_slice.go @@ -0,0 +1,148 @@ +package pflag + +import ( + "fmt" + "io" + "net" + "strings" +) + +// -- ipSlice Value +type ipSliceValue struct { + value *[]net.IP + changed bool +} + +func newIPSliceValue(val []net.IP, p *[]net.IP) *ipSliceValue { + ipsv := new(ipSliceValue) + ipsv.value = p + *ipsv.value = val + return ipsv +} + +// Set converts, and assigns, the comma-separated IP argument string representation as the []net.IP value of this flag. +// If Set is called on a flag that already has a []net.IP assigned, the newly converted values will be appended. +func (s *ipSliceValue) Set(val string) error { + + // remove all quote characters + rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "") + + // read flag arguments with CSV parser + ipStrSlice, err := readAsCSV(rmQuote.Replace(val)) + if err != nil && err != io.EOF { + return err + } + + // parse ip values into slice + out := make([]net.IP, 0, len(ipStrSlice)) + for _, ipStr := range ipStrSlice { + ip := net.ParseIP(strings.TrimSpace(ipStr)) + if ip == nil { + return fmt.Errorf("invalid string being converted to IP address: %s", ipStr) + } + out = append(out, ip) + } + + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + + s.changed = true + + return nil +} + +// Type returns a string that uniquely represents this flag's type. +func (s *ipSliceValue) Type() string { + return "ipSlice" +} + +// String defines a "native" format for this net.IP slice flag value. +func (s *ipSliceValue) String() string { + + ipStrSlice := make([]string, len(*s.value)) + for i, ip := range *s.value { + ipStrSlice[i] = ip.String() + } + + out, _ := writeAsCSV(ipStrSlice) + + return "[" + out + "]" +} + +func ipSliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Emtpy string would cause a slice with one (empty) entry + if len(val) == 0 { + return []net.IP{}, nil + } + ss := strings.Split(val, ",") + out := make([]net.IP, len(ss)) + for i, sval := range ss { + ip := net.ParseIP(strings.TrimSpace(sval)) + if ip == nil { + return nil, fmt.Errorf("invalid string being converted to IP address: %s", sval) + } + out[i] = ip + } + return out, nil +} + +// GetIPSlice returns the []net.IP value of a flag with the given name +func (f *FlagSet) GetIPSlice(name string) ([]net.IP, error) { + val, err := f.getFlagType(name, "ipSlice", ipSliceConv) + if err != nil { + return []net.IP{}, err + } + return val.([]net.IP), nil +} + +// IPSliceVar defines a ipSlice flag with specified name, default value, and usage string. +// The argument p points to a []net.IP variable in which to store the value of the flag. +func (f *FlagSet) IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) { + f.VarP(newIPSliceValue(value, p), name, "", usage) +} + +// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) { + f.VarP(newIPSliceValue(value, p), name, shorthand, usage) +} + +// IPSliceVar defines a []net.IP flag with specified name, default value, and usage string. +// The argument p points to a []net.IP variable in which to store the value of the flag. +func IPSliceVar(p *[]net.IP, name string, value []net.IP, usage string) { + CommandLine.VarP(newIPSliceValue(value, p), name, "", usage) +} + +// IPSliceVarP is like IPSliceVar, but accepts a shorthand letter that can be used after a single dash. +func IPSliceVarP(p *[]net.IP, name, shorthand string, value []net.IP, usage string) { + CommandLine.VarP(newIPSliceValue(value, p), name, shorthand, usage) +} + +// IPSlice defines a []net.IP flag with specified name, default value, and usage string. +// The return value is the address of a []net.IP variable that stores the value of that flag. +func (f *FlagSet) IPSlice(name string, value []net.IP, usage string) *[]net.IP { + p := []net.IP{} + f.IPSliceVarP(&p, name, "", value, usage) + return &p +} + +// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP { + p := []net.IP{} + f.IPSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// IPSlice defines a []net.IP flag with specified name, default value, and usage string. +// The return value is the address of a []net.IP variable that stores the value of the flag. +func IPSlice(name string, value []net.IP, usage string) *[]net.IP { + return CommandLine.IPSliceP(name, "", value, usage) +} + +// IPSliceP is like IPSlice, but accepts a shorthand letter that can be used after a single dash. +func IPSliceP(name, shorthand string, value []net.IP, usage string) *[]net.IP { + return CommandLine.IPSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ip_slice_test.go b/vendor/github.com/spf13/pflag/ip_slice_test.go new file mode 100644 index 000000000..b0c681c5b --- /dev/null +++ b/vendor/github.com/spf13/pflag/ip_slice_test.go @@ -0,0 +1,222 @@ +package pflag + +import ( + "fmt" + "net" + "strings" + "testing" +) + +func setUpIPSFlagSet(ipsp *[]net.IP) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.IPSliceVar(ipsp, "ips", []net.IP{}, "Command separated list!") + return f +} + +func setUpIPSFlagSetWithDefault(ipsp *[]net.IP) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.IPSliceVar(ipsp, "ips", + []net.IP{ + net.ParseIP("192.168.1.1"), + net.ParseIP("0:0:0:0:0:0:0:1"), + }, + "Command separated list!") + return f +} + +func TestEmptyIP(t *testing.T) { + var ips []net.IP + f := setUpIPSFlagSet(&ips) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getIPS, err := f.GetIPSlice("ips") + if err != nil { + t.Fatal("got an error from GetIPSlice():", err) + } + if len(getIPS) != 0 { + t.Fatalf("got ips %v with len=%d but expected length=0", getIPS, len(getIPS)) + } +} + +func TestIPS(t *testing.T) { + var ips []net.IP + f := setUpIPSFlagSet(&ips) + + vals := []string{"192.168.1.1", "10.0.0.1", "0:0:0:0:0:0:0:2"} + arg := fmt.Sprintf("--ips=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ips { + if ip := net.ParseIP(vals[i]); ip == nil { + t.Fatalf("invalid string being converted to IP address: %s", vals[i]) + } else if !ip.Equal(v) { + t.Fatalf("expected ips[%d] to be %s but got: %s from GetIPSlice", i, vals[i], v) + } + } +} + +func TestIPSDefault(t *testing.T) { + var ips []net.IP + f := setUpIPSFlagSetWithDefault(&ips) + + vals := []string{"192.168.1.1", "0:0:0:0:0:0:0:1"} + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ips { + if ip := net.ParseIP(vals[i]); ip == nil { + t.Fatalf("invalid string being converted to IP address: %s", vals[i]) + } else if !ip.Equal(v) { + t.Fatalf("expected ips[%d] to be %s but got: %s", i, vals[i], v) + } + } + + getIPS, err := f.GetIPSlice("ips") + if err != nil { + t.Fatal("got an error from GetIPSlice") + } + for i, v := range getIPS { + if ip := net.ParseIP(vals[i]); ip == nil { + t.Fatalf("invalid string being converted to IP address: %s", vals[i]) + } else if !ip.Equal(v) { + t.Fatalf("expected ips[%d] to be %s but got: %s", i, vals[i], v) + } + } +} + +func TestIPSWithDefault(t *testing.T) { + var ips []net.IP + f := setUpIPSFlagSetWithDefault(&ips) + + vals := []string{"192.168.1.1", "0:0:0:0:0:0:0:1"} + arg := fmt.Sprintf("--ips=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ips { + if ip := net.ParseIP(vals[i]); ip == nil { + t.Fatalf("invalid string being converted to IP address: %s", vals[i]) + } else if !ip.Equal(v) { + t.Fatalf("expected ips[%d] to be %s but got: %s", i, vals[i], v) + } + } + + getIPS, err := f.GetIPSlice("ips") + if err != nil { + t.Fatal("got an error from GetIPSlice") + } + for i, v := range getIPS { + if ip := net.ParseIP(vals[i]); ip == nil { + t.Fatalf("invalid string being converted to IP address: %s", vals[i]) + } else if !ip.Equal(v) { + t.Fatalf("expected ips[%d] to be %s but got: %s", i, vals[i], v) + } + } +} + +func TestIPSCalledTwice(t *testing.T) { + var ips []net.IP + f := setUpIPSFlagSet(&ips) + + in := []string{"192.168.1.2,0:0:0:0:0:0:0:1", "10.0.0.1"} + expected := []net.IP{net.ParseIP("192.168.1.2"), net.ParseIP("0:0:0:0:0:0:0:1"), net.ParseIP("10.0.0.1")} + argfmt := "ips=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ips { + if !expected[i].Equal(v) { + t.Fatalf("expected ips[%d] to be %s but got: %s", i, expected[i], v) + } + } +} + +func TestIPSBadQuoting(t *testing.T) { + + tests := []struct { + Want []net.IP + FlagArg []string + }{ + { + Want: []net.IP{ + net.ParseIP("a4ab:61d:f03e:5d7d:fad7:d4c2:a1a5:568"), + net.ParseIP("203.107.49.208"), + net.ParseIP("14.57.204.90"), + }, + FlagArg: []string{ + "a4ab:61d:f03e:5d7d:fad7:d4c2:a1a5:568", + "203.107.49.208", + "14.57.204.90", + }, + }, + { + Want: []net.IP{ + net.ParseIP("204.228.73.195"), + net.ParseIP("86.141.15.94"), + }, + FlagArg: []string{ + "204.228.73.195", + "86.141.15.94", + }, + }, + { + Want: []net.IP{ + net.ParseIP("c70c:db36:3001:890f:c6ea:3f9b:7a39:cc3f"), + net.ParseIP("4d17:1d6e:e699:bd7a:88c5:5e7e:ac6a:4472"), + }, + FlagArg: []string{ + "c70c:db36:3001:890f:c6ea:3f9b:7a39:cc3f", + "4d17:1d6e:e699:bd7a:88c5:5e7e:ac6a:4472", + }, + }, + { + Want: []net.IP{ + net.ParseIP("5170:f971:cfac:7be3:512a:af37:952c:bc33"), + net.ParseIP("93.21.145.140"), + net.ParseIP("2cac:61d3:c5ff:6caf:73e0:1b1a:c336:c1ca"), + }, + FlagArg: []string{ + " 5170:f971:cfac:7be3:512a:af37:952c:bc33 , 93.21.145.140 ", + "2cac:61d3:c5ff:6caf:73e0:1b1a:c336:c1ca", + }, + }, + { + Want: []net.IP{ + net.ParseIP("2e5e:66b2:6441:848:5b74:76ea:574c:3a7b"), + net.ParseIP("2e5e:66b2:6441:848:5b74:76ea:574c:3a7b"), + net.ParseIP("2e5e:66b2:6441:848:5b74:76ea:574c:3a7b"), + net.ParseIP("2e5e:66b2:6441:848:5b74:76ea:574c:3a7b"), + }, + FlagArg: []string{ + `"2e5e:66b2:6441:848:5b74:76ea:574c:3a7b, 2e5e:66b2:6441:848:5b74:76ea:574c:3a7b,2e5e:66b2:6441:848:5b74:76ea:574c:3a7b "`, + " 2e5e:66b2:6441:848:5b74:76ea:574c:3a7b"}, + }, + } + + for i, test := range tests { + + var ips []net.IP + f := setUpIPSFlagSet(&ips) + + if err := f.Parse([]string{fmt.Sprintf("--ips=%s", strings.Join(test.FlagArg, ","))}); err != nil { + t.Fatalf("flag parsing failed with error: %s\nparsing:\t%#v\nwant:\t\t%s", + err, test.FlagArg, test.Want[i]) + } + + for j, b := range ips { + if !b.Equal(test.Want[j]) { + t.Fatalf("bad value parsed for test %d on net.IP %d:\nwant:\t%s\ngot:\t%s", i, j, test.Want[j], b) + } + } + } +} diff --git a/vendor/github.com/spf13/pflag/ip_test.go b/vendor/github.com/spf13/pflag/ip_test.go new file mode 100644 index 000000000..1fec50e42 --- /dev/null +++ b/vendor/github.com/spf13/pflag/ip_test.go @@ -0,0 +1,63 @@ +package pflag + +import ( + "fmt" + "net" + "os" + "testing" +) + +func setUpIP(ip *net.IP) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.IPVar(ip, "address", net.ParseIP("0.0.0.0"), "IP Address") + return f +} + +func TestIP(t *testing.T) { + testCases := []struct { + input string + success bool + expected string + }{ + {"0.0.0.0", true, "0.0.0.0"}, + {" 0.0.0.0 ", true, "0.0.0.0"}, + {"1.2.3.4", true, "1.2.3.4"}, + {"127.0.0.1", true, "127.0.0.1"}, + {"255.255.255.255", true, "255.255.255.255"}, + {"", false, ""}, + {"0", false, ""}, + {"localhost", false, ""}, + {"0.0.0", false, ""}, + {"0.0.0.", false, ""}, + {"0.0.0.0.", false, ""}, + {"0.0.0.256", false, ""}, + {"0 . 0 . 0 . 0", false, ""}, + } + + devnull, _ := os.Open(os.DevNull) + os.Stderr = devnull + for i := range testCases { + var addr net.IP + f := setUpIP(&addr) + + tc := &testCases[i] + + arg := fmt.Sprintf("--address=%s", tc.input) + err := f.Parse([]string{arg}) + if err != nil && tc.success == true { + t.Errorf("expected success, got %q", err) + continue + } else if err == nil && tc.success == false { + t.Errorf("expected failure") + continue + } else if tc.success { + ip, err := f.GetIP("address") + if err != nil { + t.Errorf("Got error trying to fetch the IP flag: %v", err) + } + if ip.String() != tc.expected { + t.Errorf("expected %q, got %q", tc.expected, ip.String()) + } + } + } +} diff --git a/vendor/github.com/spf13/pflag/ipmask.go b/vendor/github.com/spf13/pflag/ipmask.go new file mode 100644 index 000000000..5bd44bd21 --- /dev/null +++ b/vendor/github.com/spf13/pflag/ipmask.go @@ -0,0 +1,122 @@ +package pflag + +import ( + "fmt" + "net" + "strconv" +) + +// -- net.IPMask value +type ipMaskValue net.IPMask + +func newIPMaskValue(val net.IPMask, p *net.IPMask) *ipMaskValue { + *p = val + return (*ipMaskValue)(p) +} + +func (i *ipMaskValue) String() string { return net.IPMask(*i).String() } +func (i *ipMaskValue) Set(s string) error { + ip := ParseIPv4Mask(s) + if ip == nil { + return fmt.Errorf("failed to parse IP mask: %q", s) + } + *i = ipMaskValue(ip) + return nil +} + +func (i *ipMaskValue) Type() string { + return "ipMask" +} + +// ParseIPv4Mask written in IP form (e.g. 255.255.255.0). +// This function should really belong to the net package. +func ParseIPv4Mask(s string) net.IPMask { + mask := net.ParseIP(s) + if mask == nil { + if len(s) != 8 { + return nil + } + // net.IPMask.String() actually outputs things like ffffff00 + // so write a horrible parser for that as well :-( + m := []int{} + for i := 0; i < 4; i++ { + b := "0x" + s[2*i:2*i+2] + d, err := strconv.ParseInt(b, 0, 0) + if err != nil { + return nil + } + m = append(m, int(d)) + } + s := fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3]) + mask = net.ParseIP(s) + if mask == nil { + return nil + } + } + return net.IPv4Mask(mask[12], mask[13], mask[14], mask[15]) +} + +func parseIPv4Mask(sval string) (interface{}, error) { + mask := ParseIPv4Mask(sval) + if mask == nil { + return nil, fmt.Errorf("unable to parse %s as net.IPMask", sval) + } + return mask, nil +} + +// GetIPv4Mask return the net.IPv4Mask value of a flag with the given name +func (f *FlagSet) GetIPv4Mask(name string) (net.IPMask, error) { + val, err := f.getFlagType(name, "ipMask", parseIPv4Mask) + if err != nil { + return nil, err + } + return val.(net.IPMask), nil +} + +// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string. +// The argument p points to an net.IPMask variable in which to store the value of the flag. +func (f *FlagSet) IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) { + f.VarP(newIPMaskValue(value, p), name, "", usage) +} + +// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) { + f.VarP(newIPMaskValue(value, p), name, shorthand, usage) +} + +// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string. +// The argument p points to an net.IPMask variable in which to store the value of the flag. +func IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) { + CommandLine.VarP(newIPMaskValue(value, p), name, "", usage) +} + +// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash. +func IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) { + CommandLine.VarP(newIPMaskValue(value, p), name, shorthand, usage) +} + +// IPMask defines an net.IPMask flag with specified name, default value, and usage string. +// The return value is the address of an net.IPMask variable that stores the value of the flag. +func (f *FlagSet) IPMask(name string, value net.IPMask, usage string) *net.IPMask { + p := new(net.IPMask) + f.IPMaskVarP(p, name, "", value, usage) + return p +} + +// IPMaskP is like IPMask, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask { + p := new(net.IPMask) + f.IPMaskVarP(p, name, shorthand, value, usage) + return p +} + +// IPMask defines an net.IPMask flag with specified name, default value, and usage string. +// The return value is the address of an net.IPMask variable that stores the value of the flag. +func IPMask(name string, value net.IPMask, usage string) *net.IPMask { + return CommandLine.IPMaskP(name, "", value, usage) +} + +// IPMaskP is like IP, but accepts a shorthand letter that can be used after a single dash. +func IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask { + return CommandLine.IPMaskP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ipnet.go b/vendor/github.com/spf13/pflag/ipnet.go new file mode 100644 index 000000000..e2c1b8bcd --- /dev/null +++ b/vendor/github.com/spf13/pflag/ipnet.go @@ -0,0 +1,98 @@ +package pflag + +import ( + "fmt" + "net" + "strings" +) + +// IPNet adapts net.IPNet for use as a flag. +type ipNetValue net.IPNet + +func (ipnet ipNetValue) String() string { + n := net.IPNet(ipnet) + return n.String() +} + +func (ipnet *ipNetValue) Set(value string) error { + _, n, err := net.ParseCIDR(strings.TrimSpace(value)) + if err != nil { + return err + } + *ipnet = ipNetValue(*n) + return nil +} + +func (*ipNetValue) Type() string { + return "ipNet" +} + +func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue { + *p = val + return (*ipNetValue)(p) +} + +func ipNetConv(sval string) (interface{}, error) { + _, n, err := net.ParseCIDR(strings.TrimSpace(sval)) + if err == nil { + return *n, nil + } + return nil, fmt.Errorf("invalid string being converted to IPNet: %s", sval) +} + +// GetIPNet return the net.IPNet value of a flag with the given name +func (f *FlagSet) GetIPNet(name string) (net.IPNet, error) { + val, err := f.getFlagType(name, "ipNet", ipNetConv) + if err != nil { + return net.IPNet{}, err + } + return val.(net.IPNet), nil +} + +// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string. +// The argument p points to an net.IPNet variable in which to store the value of the flag. +func (f *FlagSet) IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) { + f.VarP(newIPNetValue(value, p), name, "", usage) +} + +// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) { + f.VarP(newIPNetValue(value, p), name, shorthand, usage) +} + +// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string. +// The argument p points to an net.IPNet variable in which to store the value of the flag. +func IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) { + CommandLine.VarP(newIPNetValue(value, p), name, "", usage) +} + +// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash. +func IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) { + CommandLine.VarP(newIPNetValue(value, p), name, shorthand, usage) +} + +// IPNet defines an net.IPNet flag with specified name, default value, and usage string. +// The return value is the address of an net.IPNet variable that stores the value of the flag. +func (f *FlagSet) IPNet(name string, value net.IPNet, usage string) *net.IPNet { + p := new(net.IPNet) + f.IPNetVarP(p, name, "", value, usage) + return p +} + +// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet { + p := new(net.IPNet) + f.IPNetVarP(p, name, shorthand, value, usage) + return p +} + +// IPNet defines an net.IPNet flag with specified name, default value, and usage string. +// The return value is the address of an net.IPNet variable that stores the value of the flag. +func IPNet(name string, value net.IPNet, usage string) *net.IPNet { + return CommandLine.IPNetP(name, "", value, usage) +} + +// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash. +func IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet { + return CommandLine.IPNetP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ipnet_test.go b/vendor/github.com/spf13/pflag/ipnet_test.go new file mode 100644 index 000000000..335b6fa15 --- /dev/null +++ b/vendor/github.com/spf13/pflag/ipnet_test.go @@ -0,0 +1,70 @@ +package pflag + +import ( + "fmt" + "net" + "os" + "testing" +) + +func setUpIPNet(ip *net.IPNet) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + _, def, _ := net.ParseCIDR("0.0.0.0/0") + f.IPNetVar(ip, "address", *def, "IP Address") + return f +} + +func TestIPNet(t *testing.T) { + testCases := []struct { + input string + success bool + expected string + }{ + {"0.0.0.0/0", true, "0.0.0.0/0"}, + {" 0.0.0.0/0 ", true, "0.0.0.0/0"}, + {"1.2.3.4/8", true, "1.0.0.0/8"}, + {"127.0.0.1/16", true, "127.0.0.0/16"}, + {"255.255.255.255/19", true, "255.255.224.0/19"}, + {"255.255.255.255/32", true, "255.255.255.255/32"}, + {"", false, ""}, + {"/0", false, ""}, + {"0", false, ""}, + {"0/0", false, ""}, + {"localhost/0", false, ""}, + {"0.0.0/4", false, ""}, + {"0.0.0./8", false, ""}, + {"0.0.0.0./12", false, ""}, + {"0.0.0.256/16", false, ""}, + {"0.0.0.0 /20", false, ""}, + {"0.0.0.0/ 24", false, ""}, + {"0 . 0 . 0 . 0 / 28", false, ""}, + {"0.0.0.0/33", false, ""}, + } + + devnull, _ := os.Open(os.DevNull) + os.Stderr = devnull + for i := range testCases { + var addr net.IPNet + f := setUpIPNet(&addr) + + tc := &testCases[i] + + arg := fmt.Sprintf("--address=%s", tc.input) + err := f.Parse([]string{arg}) + if err != nil && tc.success == true { + t.Errorf("expected success, got %q", err) + continue + } else if err == nil && tc.success == false { + t.Errorf("expected failure") + continue + } else if tc.success { + ip, err := f.GetIPNet("address") + if err != nil { + t.Errorf("Got error trying to fetch the IP flag: %v", err) + } + if ip.String() != tc.expected { + t.Errorf("expected %q, got %q", tc.expected, ip.String()) + } + } + } +} diff --git a/vendor/github.com/spf13/pflag/string.go b/vendor/github.com/spf13/pflag/string.go new file mode 100644 index 000000000..04e0a26ff --- /dev/null +++ b/vendor/github.com/spf13/pflag/string.go @@ -0,0 +1,80 @@ +package pflag + +// -- string Value +type stringValue string + +func newStringValue(val string, p *string) *stringValue { + *p = val + return (*stringValue)(p) +} + +func (s *stringValue) Set(val string) error { + *s = stringValue(val) + return nil +} +func (s *stringValue) Type() string { + return "string" +} + +func (s *stringValue) String() string { return string(*s) } + +func stringConv(sval string) (interface{}, error) { + return sval, nil +} + +// GetString return the string value of a flag with the given name +func (f *FlagSet) GetString(name string) (string, error) { + val, err := f.getFlagType(name, "string", stringConv) + if err != nil { + return "", err + } + return val.(string), nil +} + +// StringVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a string variable in which to store the value of the flag. +func (f *FlagSet) StringVar(p *string, name string, value string, usage string) { + f.VarP(newStringValue(value, p), name, "", usage) +} + +// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, usage string) { + f.VarP(newStringValue(value, p), name, shorthand, usage) +} + +// StringVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a string variable in which to store the value of the flag. +func StringVar(p *string, name string, value string, usage string) { + CommandLine.VarP(newStringValue(value, p), name, "", usage) +} + +// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash. +func StringVarP(p *string, name, shorthand string, value string, usage string) { + CommandLine.VarP(newStringValue(value, p), name, shorthand, usage) +} + +// String defines a string flag with specified name, default value, and usage string. +// The return value is the address of a string variable that stores the value of the flag. +func (f *FlagSet) String(name string, value string, usage string) *string { + p := new(string) + f.StringVarP(p, name, "", value, usage) + return p +} + +// StringP is like String, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringP(name, shorthand string, value string, usage string) *string { + p := new(string) + f.StringVarP(p, name, shorthand, value, usage) + return p +} + +// String defines a string flag with specified name, default value, and usage string. +// The return value is the address of a string variable that stores the value of the flag. +func String(name string, value string, usage string) *string { + return CommandLine.StringP(name, "", value, usage) +} + +// StringP is like String, but accepts a shorthand letter that can be used after a single dash. +func StringP(name, shorthand string, value string, usage string) *string { + return CommandLine.StringP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string_array.go b/vendor/github.com/spf13/pflag/string_array.go new file mode 100644 index 000000000..276b7ed49 --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_array.go @@ -0,0 +1,103 @@ +package pflag + +// -- stringArray Value +type stringArrayValue struct { + value *[]string + changed bool +} + +func newStringArrayValue(val []string, p *[]string) *stringArrayValue { + ssv := new(stringArrayValue) + ssv.value = p + *ssv.value = val + return ssv +} + +func (s *stringArrayValue) Set(val string) error { + if !s.changed { + *s.value = []string{val} + s.changed = true + } else { + *s.value = append(*s.value, val) + } + return nil +} + +func (s *stringArrayValue) Type() string { + return "stringArray" +} + +func (s *stringArrayValue) String() string { + str, _ := writeAsCSV(*s.value) + return "[" + str + "]" +} + +func stringArrayConv(sval string) (interface{}, error) { + sval = sval[1 : len(sval)-1] + // An empty string would cause a array with one (empty) string + if len(sval) == 0 { + return []string{}, nil + } + return readAsCSV(sval) +} + +// GetStringArray return the []string value of a flag with the given name +func (f *FlagSet) GetStringArray(name string) ([]string, error) { + val, err := f.getFlagType(name, "stringArray", stringArrayConv) + if err != nil { + return []string{}, err + } + return val.([]string), nil +} + +// StringArrayVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a []string variable in which to store the values of the multiple flags. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringArrayVar(p *[]string, name string, value []string, usage string) { + f.VarP(newStringArrayValue(value, p), name, "", usage) +} + +// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) { + f.VarP(newStringArrayValue(value, p), name, shorthand, usage) +} + +// StringArrayVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a []string variable in which to store the value of the flag. +// The value of each argument will not try to be separated by comma +func StringArrayVar(p *[]string, name string, value []string, usage string) { + CommandLine.VarP(newStringArrayValue(value, p), name, "", usage) +} + +// StringArrayVarP is like StringArrayVar, but accepts a shorthand letter that can be used after a single dash. +func StringArrayVarP(p *[]string, name, shorthand string, value []string, usage string) { + CommandLine.VarP(newStringArrayValue(value, p), name, shorthand, usage) +} + +// StringArray defines a string flag with specified name, default value, and usage string. +// The return value is the address of a []string variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringArray(name string, value []string, usage string) *[]string { + p := []string{} + f.StringArrayVarP(&p, name, "", value, usage) + return &p +} + +// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringArrayP(name, shorthand string, value []string, usage string) *[]string { + p := []string{} + f.StringArrayVarP(&p, name, shorthand, value, usage) + return &p +} + +// StringArray defines a string flag with specified name, default value, and usage string. +// The return value is the address of a []string variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func StringArray(name string, value []string, usage string) *[]string { + return CommandLine.StringArrayP(name, "", value, usage) +} + +// StringArrayP is like StringArray, but accepts a shorthand letter that can be used after a single dash. +func StringArrayP(name, shorthand string, value []string, usage string) *[]string { + return CommandLine.StringArrayP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string_array_test.go b/vendor/github.com/spf13/pflag/string_array_test.go new file mode 100644 index 000000000..1ceac8c6c --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_array_test.go @@ -0,0 +1,233 @@ +// Copyright 2009 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 pflag + +import ( + "fmt" + "testing" +) + +func setUpSAFlagSet(sap *[]string) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.StringArrayVar(sap, "sa", []string{}, "Command separated list!") + return f +} + +func setUpSAFlagSetWithDefault(sap *[]string) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.StringArrayVar(sap, "sa", []string{"default", "values"}, "Command separated list!") + return f +} + +func TestEmptySA(t *testing.T) { + var sa []string + f := setUpSAFlagSet(&sa) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getSA, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("got an error from GetStringArray():", err) + } + if len(getSA) != 0 { + t.Fatalf("got sa %v with len=%d but expected length=0", getSA, len(getSA)) + } +} + +func TestEmptySAValue(t *testing.T) { + var sa []string + f := setUpSAFlagSet(&sa) + err := f.Parse([]string{"--sa="}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getSA, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("got an error from GetStringArray():", err) + } + if len(getSA) != 0 { + t.Fatalf("got sa %v with len=%d but expected length=0", getSA, len(getSA)) + } +} + +func TestSADefault(t *testing.T) { + var sa []string + f := setUpSAFlagSetWithDefault(&sa) + + vals := []string{"default", "values"} + + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range sa { + if vals[i] != v { + t.Fatalf("expected sa[%d] to be %s but got: %s", i, vals[i], v) + } + } + + getSA, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("got an error from GetStringArray():", err) + } + for i, v := range getSA { + if vals[i] != v { + t.Fatalf("expected sa[%d] to be %s from GetStringArray but got: %s", i, vals[i], v) + } + } +} + +func TestSAWithDefault(t *testing.T) { + var sa []string + f := setUpSAFlagSetWithDefault(&sa) + + val := "one" + arg := fmt.Sprintf("--sa=%s", val) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(sa) != 1 { + t.Fatalf("expected number of values to be %d but %d", 1, len(sa)) + } + + if sa[0] != val { + t.Fatalf("expected value to be %s but got: %s", sa[0], val) + } + + getSA, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("got an error from GetStringArray():", err) + } + + if len(getSA) != 1 { + t.Fatalf("expected number of values to be %d but %d", 1, len(getSA)) + } + + if getSA[0] != val { + t.Fatalf("expected value to be %s but got: %s", getSA[0], val) + } +} + +func TestSACalledTwice(t *testing.T) { + var sa []string + f := setUpSAFlagSet(&sa) + + in := []string{"one", "two"} + expected := []string{"one", "two"} + argfmt := "--sa=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(sa) { + t.Fatalf("expected number of sa to be %d but got: %d", len(expected), len(sa)) + } + for i, v := range sa { + if expected[i] != v { + t.Fatalf("expected sa[%d] to be %s but got: %s", i, expected[i], v) + } + } + + values, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(values) { + t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(sa)) + } + for i, v := range values { + if expected[i] != v { + t.Fatalf("expected got sa[%d] to be %s but got: %s", i, expected[i], v) + } + } +} + +func TestSAWithSpecialChar(t *testing.T) { + var sa []string + f := setUpSAFlagSet(&sa) + + in := []string{"one,two", `"three"`, `"four,five",six`, "seven eight"} + expected := []string{"one,two", `"three"`, `"four,five",six`, "seven eight"} + argfmt := "--sa=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + arg3 := fmt.Sprintf(argfmt, in[2]) + arg4 := fmt.Sprintf(argfmt, in[3]) + err := f.Parse([]string{arg1, arg2, arg3, arg4}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(sa) { + t.Fatalf("expected number of sa to be %d but got: %d", len(expected), len(sa)) + } + for i, v := range sa { + if expected[i] != v { + t.Fatalf("expected sa[%d] to be %s but got: %s", i, expected[i], v) + } + } + + values, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(values) { + t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(values)) + } + for i, v := range values { + if expected[i] != v { + t.Fatalf("expected got sa[%d] to be %s but got: %s", i, expected[i], v) + } + } +} + +func TestSAWithSquareBrackets(t *testing.T) { + var sa []string + f := setUpSAFlagSet(&sa) + + in := []string{"][]-[", "[a-z]", "[a-z]+"} + expected := []string{"][]-[", "[a-z]", "[a-z]+"} + argfmt := "--sa=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + arg3 := fmt.Sprintf(argfmt, in[2]) + err := f.Parse([]string{arg1, arg2, arg3}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(sa) { + t.Fatalf("expected number of sa to be %d but got: %d", len(expected), len(sa)) + } + for i, v := range sa { + if expected[i] != v { + t.Fatalf("expected sa[%d] to be %s but got: %s", i, expected[i], v) + } + } + + values, err := f.GetStringArray("sa") + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(values) { + t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(values)) + } + for i, v := range values { + if expected[i] != v { + t.Fatalf("expected got sa[%d] to be %s but got: %s", i, expected[i], v) + } + } +} diff --git a/vendor/github.com/spf13/pflag/string_slice.go b/vendor/github.com/spf13/pflag/string_slice.go new file mode 100644 index 000000000..05eee7543 --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_slice.go @@ -0,0 +1,129 @@ +package pflag + +import ( + "bytes" + "encoding/csv" + "strings" +) + +// -- stringSlice Value +type stringSliceValue struct { + value *[]string + changed bool +} + +func newStringSliceValue(val []string, p *[]string) *stringSliceValue { + ssv := new(stringSliceValue) + ssv.value = p + *ssv.value = val + return ssv +} + +func readAsCSV(val string) ([]string, error) { + if val == "" { + return []string{}, nil + } + stringReader := strings.NewReader(val) + csvReader := csv.NewReader(stringReader) + return csvReader.Read() +} + +func writeAsCSV(vals []string) (string, error) { + b := &bytes.Buffer{} + w := csv.NewWriter(b) + err := w.Write(vals) + if err != nil { + return "", err + } + w.Flush() + return strings.TrimSuffix(b.String(), "\n"), nil +} + +func (s *stringSliceValue) Set(val string) error { + v, err := readAsCSV(val) + if err != nil { + return err + } + if !s.changed { + *s.value = v + } else { + *s.value = append(*s.value, v...) + } + s.changed = true + return nil +} + +func (s *stringSliceValue) Type() string { + return "stringSlice" +} + +func (s *stringSliceValue) String() string { + str, _ := writeAsCSV(*s.value) + return "[" + str + "]" +} + +func stringSliceConv(sval string) (interface{}, error) { + sval = sval[1 : len(sval)-1] + // An empty string would cause a slice with one (empty) string + if len(sval) == 0 { + return []string{}, nil + } + return readAsCSV(sval) +} + +// GetStringSlice return the []string value of a flag with the given name +func (f *FlagSet) GetStringSlice(name string) ([]string, error) { + val, err := f.getFlagType(name, "stringSlice", stringSliceConv) + if err != nil { + return []string{}, err + } + return val.([]string), nil +} + +// StringSliceVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a []string variable in which to store the value of the flag. +func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) { + f.VarP(newStringSliceValue(value, p), name, "", usage) +} + +// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) { + f.VarP(newStringSliceValue(value, p), name, shorthand, usage) +} + +// StringSliceVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a []string variable in which to store the value of the flag. +func StringSliceVar(p *[]string, name string, value []string, usage string) { + CommandLine.VarP(newStringSliceValue(value, p), name, "", usage) +} + +// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash. +func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) { + CommandLine.VarP(newStringSliceValue(value, p), name, shorthand, usage) +} + +// StringSlice defines a string flag with specified name, default value, and usage string. +// The return value is the address of a []string variable that stores the value of the flag. +func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string { + p := []string{} + f.StringSliceVarP(&p, name, "", value, usage) + return &p +} + +// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage string) *[]string { + p := []string{} + f.StringSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// StringSlice defines a string flag with specified name, default value, and usage string. +// The return value is the address of a []string variable that stores the value of the flag. +func StringSlice(name string, value []string, usage string) *[]string { + return CommandLine.StringSliceP(name, "", value, usage) +} + +// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash. +func StringSliceP(name, shorthand string, value []string, usage string) *[]string { + return CommandLine.StringSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string_slice_test.go b/vendor/github.com/spf13/pflag/string_slice_test.go new file mode 100644 index 000000000..c41f3bd66 --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_slice_test.go @@ -0,0 +1,253 @@ +// Copyright 2009 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 pflag + +import ( + "fmt" + "strings" + "testing" +) + +func setUpSSFlagSet(ssp *[]string) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.StringSliceVar(ssp, "ss", []string{}, "Command separated list!") + return f +} + +func setUpSSFlagSetWithDefault(ssp *[]string) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.StringSliceVar(ssp, "ss", []string{"default", "values"}, "Command separated list!") + return f +} + +func TestEmptySS(t *testing.T) { + var ss []string + f := setUpSSFlagSet(&ss) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getSS, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("got an error from GetStringSlice():", err) + } + if len(getSS) != 0 { + t.Fatalf("got ss %v with len=%d but expected length=0", getSS, len(getSS)) + } +} + +func TestEmptySSValue(t *testing.T) { + var ss []string + f := setUpSSFlagSet(&ss) + err := f.Parse([]string{"--ss="}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getSS, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("got an error from GetStringSlice():", err) + } + if len(getSS) != 0 { + t.Fatalf("got ss %v with len=%d but expected length=0", getSS, len(getSS)) + } +} + +func TestSS(t *testing.T) { + var ss []string + f := setUpSSFlagSet(&ss) + + vals := []string{"one", "two", "4", "3"} + arg := fmt.Sprintf("--ss=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ss { + if vals[i] != v { + t.Fatalf("expected ss[%d] to be %s but got: %s", i, vals[i], v) + } + } + + getSS, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("got an error from GetStringSlice():", err) + } + for i, v := range getSS { + if vals[i] != v { + t.Fatalf("expected ss[%d] to be %s from GetStringSlice but got: %s", i, vals[i], v) + } + } +} + +func TestSSDefault(t *testing.T) { + var ss []string + f := setUpSSFlagSetWithDefault(&ss) + + vals := []string{"default", "values"} + + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ss { + if vals[i] != v { + t.Fatalf("expected ss[%d] to be %s but got: %s", i, vals[i], v) + } + } + + getSS, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("got an error from GetStringSlice():", err) + } + for i, v := range getSS { + if vals[i] != v { + t.Fatalf("expected ss[%d] to be %s from GetStringSlice but got: %s", i, vals[i], v) + } + } +} + +func TestSSWithDefault(t *testing.T) { + var ss []string + f := setUpSSFlagSetWithDefault(&ss) + + vals := []string{"one", "two", "4", "3"} + arg := fmt.Sprintf("--ss=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range ss { + if vals[i] != v { + t.Fatalf("expected ss[%d] to be %s but got: %s", i, vals[i], v) + } + } + + getSS, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("got an error from GetStringSlice():", err) + } + for i, v := range getSS { + if vals[i] != v { + t.Fatalf("expected ss[%d] to be %s from GetStringSlice but got: %s", i, vals[i], v) + } + } +} + +func TestSSCalledTwice(t *testing.T) { + var ss []string + f := setUpSSFlagSet(&ss) + + in := []string{"one,two", "three"} + expected := []string{"one", "two", "three"} + argfmt := "--ss=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(ss) { + t.Fatalf("expected number of ss to be %d but got: %d", len(expected), len(ss)) + } + for i, v := range ss { + if expected[i] != v { + t.Fatalf("expected ss[%d] to be %s but got: %s", i, expected[i], v) + } + } + + values, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(values) { + t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(ss)) + } + for i, v := range values { + if expected[i] != v { + t.Fatalf("expected got ss[%d] to be %s but got: %s", i, expected[i], v) + } + } +} + +func TestSSWithComma(t *testing.T) { + var ss []string + f := setUpSSFlagSet(&ss) + + in := []string{`"one,two"`, `"three"`, `"four,five",six`} + expected := []string{"one,two", "three", "four,five", "six"} + argfmt := "--ss=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + arg3 := fmt.Sprintf(argfmt, in[2]) + err := f.Parse([]string{arg1, arg2, arg3}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(ss) { + t.Fatalf("expected number of ss to be %d but got: %d", len(expected), len(ss)) + } + for i, v := range ss { + if expected[i] != v { + t.Fatalf("expected ss[%d] to be %s but got: %s", i, expected[i], v) + } + } + + values, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(values) { + t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(values)) + } + for i, v := range values { + if expected[i] != v { + t.Fatalf("expected got ss[%d] to be %s but got: %s", i, expected[i], v) + } + } +} + +func TestSSWithSquareBrackets(t *testing.T) { + var ss []string + f := setUpSSFlagSet(&ss) + + in := []string{`"[a-z]"`, `"[a-z]+"`} + expected := []string{"[a-z]", "[a-z]+"} + argfmt := "--ss=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(ss) { + t.Fatalf("expected number of ss to be %d but got: %d", len(expected), len(ss)) + } + for i, v := range ss { + if expected[i] != v { + t.Fatalf("expected ss[%d] to be %s but got: %s", i, expected[i], v) + } + } + + values, err := f.GetStringSlice("ss") + if err != nil { + t.Fatal("expected no error; got", err) + } + + if len(expected) != len(values) { + t.Fatalf("expected number of values to be %d but got: %d", len(expected), len(values)) + } + for i, v := range values { + if expected[i] != v { + t.Fatalf("expected got ss[%d] to be %s but got: %s", i, expected[i], v) + } + } +} diff --git a/vendor/github.com/spf13/pflag/uint.go b/vendor/github.com/spf13/pflag/uint.go new file mode 100644 index 000000000..dcbc2b758 --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- uint Value +type uintValue uint + +func newUintValue(val uint, p *uint) *uintValue { + *p = val + return (*uintValue)(p) +} + +func (i *uintValue) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 64) + *i = uintValue(v) + return err +} + +func (i *uintValue) Type() string { + return "uint" +} + +func (i *uintValue) String() string { return strconv.FormatUint(uint64(*i), 10) } + +func uintConv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 0) + if err != nil { + return 0, err + } + return uint(v), nil +} + +// GetUint return the uint value of a flag with the given name +func (f *FlagSet) GetUint(name string) (uint, error) { + val, err := f.getFlagType(name, "uint", uintConv) + if err != nil { + return 0, err + } + return val.(uint), nil +} + +// UintVar defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string) { + f.VarP(newUintValue(value, p), name, "", usage) +} + +// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) UintVarP(p *uint, name, shorthand string, value uint, usage string) { + f.VarP(newUintValue(value, p), name, shorthand, usage) +} + +// UintVar defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func UintVar(p *uint, name string, value uint, usage string) { + CommandLine.VarP(newUintValue(value, p), name, "", usage) +} + +// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash. +func UintVarP(p *uint, name, shorthand string, value uint, usage string) { + CommandLine.VarP(newUintValue(value, p), name, shorthand, usage) +} + +// Uint defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func (f *FlagSet) Uint(name string, value uint, usage string) *uint { + p := new(uint) + f.UintVarP(p, name, "", value, usage) + return p +} + +// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) UintP(name, shorthand string, value uint, usage string) *uint { + p := new(uint) + f.UintVarP(p, name, shorthand, value, usage) + return p +} + +// Uint defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func Uint(name string, value uint, usage string) *uint { + return CommandLine.UintP(name, "", value, usage) +} + +// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash. +func UintP(name, shorthand string, value uint, usage string) *uint { + return CommandLine.UintP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint16.go b/vendor/github.com/spf13/pflag/uint16.go new file mode 100644 index 000000000..7e9914edd --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint16.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- uint16 value +type uint16Value uint16 + +func newUint16Value(val uint16, p *uint16) *uint16Value { + *p = val + return (*uint16Value)(p) +} + +func (i *uint16Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 16) + *i = uint16Value(v) + return err +} + +func (i *uint16Value) Type() string { + return "uint16" +} + +func (i *uint16Value) String() string { return strconv.FormatUint(uint64(*i), 10) } + +func uint16Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 16) + if err != nil { + return 0, err + } + return uint16(v), nil +} + +// GetUint16 return the uint16 value of a flag with the given name +func (f *FlagSet) GetUint16(name string) (uint16, error) { + val, err := f.getFlagType(name, "uint16", uint16Conv) + if err != nil { + return 0, err + } + return val.(uint16), nil +} + +// Uint16Var defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func (f *FlagSet) Uint16Var(p *uint16, name string, value uint16, usage string) { + f.VarP(newUint16Value(value, p), name, "", usage) +} + +// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) { + f.VarP(newUint16Value(value, p), name, shorthand, usage) +} + +// Uint16Var defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func Uint16Var(p *uint16, name string, value uint16, usage string) { + CommandLine.VarP(newUint16Value(value, p), name, "", usage) +} + +// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash. +func Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) { + CommandLine.VarP(newUint16Value(value, p), name, shorthand, usage) +} + +// Uint16 defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func (f *FlagSet) Uint16(name string, value uint16, usage string) *uint16 { + p := new(uint16) + f.Uint16VarP(p, name, "", value, usage) + return p +} + +// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint16P(name, shorthand string, value uint16, usage string) *uint16 { + p := new(uint16) + f.Uint16VarP(p, name, shorthand, value, usage) + return p +} + +// Uint16 defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func Uint16(name string, value uint16, usage string) *uint16 { + return CommandLine.Uint16P(name, "", value, usage) +} + +// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash. +func Uint16P(name, shorthand string, value uint16, usage string) *uint16 { + return CommandLine.Uint16P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint32.go b/vendor/github.com/spf13/pflag/uint32.go new file mode 100644 index 000000000..d8024539b --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint32.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- uint32 value +type uint32Value uint32 + +func newUint32Value(val uint32, p *uint32) *uint32Value { + *p = val + return (*uint32Value)(p) +} + +func (i *uint32Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 32) + *i = uint32Value(v) + return err +} + +func (i *uint32Value) Type() string { + return "uint32" +} + +func (i *uint32Value) String() string { return strconv.FormatUint(uint64(*i), 10) } + +func uint32Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 32) + if err != nil { + return 0, err + } + return uint32(v), nil +} + +// GetUint32 return the uint32 value of a flag with the given name +func (f *FlagSet) GetUint32(name string) (uint32, error) { + val, err := f.getFlagType(name, "uint32", uint32Conv) + if err != nil { + return 0, err + } + return val.(uint32), nil +} + +// Uint32Var defines a uint32 flag with specified name, default value, and usage string. +// The argument p points to a uint32 variable in which to store the value of the flag. +func (f *FlagSet) Uint32Var(p *uint32, name string, value uint32, usage string) { + f.VarP(newUint32Value(value, p), name, "", usage) +} + +// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) { + f.VarP(newUint32Value(value, p), name, shorthand, usage) +} + +// Uint32Var defines a uint32 flag with specified name, default value, and usage string. +// The argument p points to a uint32 variable in which to store the value of the flag. +func Uint32Var(p *uint32, name string, value uint32, usage string) { + CommandLine.VarP(newUint32Value(value, p), name, "", usage) +} + +// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash. +func Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) { + CommandLine.VarP(newUint32Value(value, p), name, shorthand, usage) +} + +// Uint32 defines a uint32 flag with specified name, default value, and usage string. +// The return value is the address of a uint32 variable that stores the value of the flag. +func (f *FlagSet) Uint32(name string, value uint32, usage string) *uint32 { + p := new(uint32) + f.Uint32VarP(p, name, "", value, usage) + return p +} + +// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint32P(name, shorthand string, value uint32, usage string) *uint32 { + p := new(uint32) + f.Uint32VarP(p, name, shorthand, value, usage) + return p +} + +// Uint32 defines a uint32 flag with specified name, default value, and usage string. +// The return value is the address of a uint32 variable that stores the value of the flag. +func Uint32(name string, value uint32, usage string) *uint32 { + return CommandLine.Uint32P(name, "", value, usage) +} + +// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash. +func Uint32P(name, shorthand string, value uint32, usage string) *uint32 { + return CommandLine.Uint32P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint64.go b/vendor/github.com/spf13/pflag/uint64.go new file mode 100644 index 000000000..f62240f2c --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint64.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- uint64 Value +type uint64Value uint64 + +func newUint64Value(val uint64, p *uint64) *uint64Value { + *p = val + return (*uint64Value)(p) +} + +func (i *uint64Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 64) + *i = uint64Value(v) + return err +} + +func (i *uint64Value) Type() string { + return "uint64" +} + +func (i *uint64Value) String() string { return strconv.FormatUint(uint64(*i), 10) } + +func uint64Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 64) + if err != nil { + return 0, err + } + return uint64(v), nil +} + +// GetUint64 return the uint64 value of a flag with the given name +func (f *FlagSet) GetUint64(name string) (uint64, error) { + val, err := f.getFlagType(name, "uint64", uint64Conv) + if err != nil { + return 0, err + } + return val.(uint64), nil +} + +// Uint64Var defines a uint64 flag with specified name, default value, and usage string. +// The argument p points to a uint64 variable in which to store the value of the flag. +func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string) { + f.VarP(newUint64Value(value, p), name, "", usage) +} + +// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) { + f.VarP(newUint64Value(value, p), name, shorthand, usage) +} + +// Uint64Var defines a uint64 flag with specified name, default value, and usage string. +// The argument p points to a uint64 variable in which to store the value of the flag. +func Uint64Var(p *uint64, name string, value uint64, usage string) { + CommandLine.VarP(newUint64Value(value, p), name, "", usage) +} + +// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash. +func Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) { + CommandLine.VarP(newUint64Value(value, p), name, shorthand, usage) +} + +// Uint64 defines a uint64 flag with specified name, default value, and usage string. +// The return value is the address of a uint64 variable that stores the value of the flag. +func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64 { + p := new(uint64) + f.Uint64VarP(p, name, "", value, usage) + return p +} + +// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint64P(name, shorthand string, value uint64, usage string) *uint64 { + p := new(uint64) + f.Uint64VarP(p, name, shorthand, value, usage) + return p +} + +// Uint64 defines a uint64 flag with specified name, default value, and usage string. +// The return value is the address of a uint64 variable that stores the value of the flag. +func Uint64(name string, value uint64, usage string) *uint64 { + return CommandLine.Uint64P(name, "", value, usage) +} + +// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash. +func Uint64P(name, shorthand string, value uint64, usage string) *uint64 { + return CommandLine.Uint64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint8.go b/vendor/github.com/spf13/pflag/uint8.go new file mode 100644 index 000000000..bb0e83c1f --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint8.go @@ -0,0 +1,88 @@ +package pflag + +import "strconv" + +// -- uint8 Value +type uint8Value uint8 + +func newUint8Value(val uint8, p *uint8) *uint8Value { + *p = val + return (*uint8Value)(p) +} + +func (i *uint8Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 8) + *i = uint8Value(v) + return err +} + +func (i *uint8Value) Type() string { + return "uint8" +} + +func (i *uint8Value) String() string { return strconv.FormatUint(uint64(*i), 10) } + +func uint8Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 8) + if err != nil { + return 0, err + } + return uint8(v), nil +} + +// GetUint8 return the uint8 value of a flag with the given name +func (f *FlagSet) GetUint8(name string) (uint8, error) { + val, err := f.getFlagType(name, "uint8", uint8Conv) + if err != nil { + return 0, err + } + return val.(uint8), nil +} + +// Uint8Var defines a uint8 flag with specified name, default value, and usage string. +// The argument p points to a uint8 variable in which to store the value of the flag. +func (f *FlagSet) Uint8Var(p *uint8, name string, value uint8, usage string) { + f.VarP(newUint8Value(value, p), name, "", usage) +} + +// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) { + f.VarP(newUint8Value(value, p), name, shorthand, usage) +} + +// Uint8Var defines a uint8 flag with specified name, default value, and usage string. +// The argument p points to a uint8 variable in which to store the value of the flag. +func Uint8Var(p *uint8, name string, value uint8, usage string) { + CommandLine.VarP(newUint8Value(value, p), name, "", usage) +} + +// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash. +func Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) { + CommandLine.VarP(newUint8Value(value, p), name, shorthand, usage) +} + +// Uint8 defines a uint8 flag with specified name, default value, and usage string. +// The return value is the address of a uint8 variable that stores the value of the flag. +func (f *FlagSet) Uint8(name string, value uint8, usage string) *uint8 { + p := new(uint8) + f.Uint8VarP(p, name, "", value, usage) + return p +} + +// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint8P(name, shorthand string, value uint8, usage string) *uint8 { + p := new(uint8) + f.Uint8VarP(p, name, shorthand, value, usage) + return p +} + +// Uint8 defines a uint8 flag with specified name, default value, and usage string. +// The return value is the address of a uint8 variable that stores the value of the flag. +func Uint8(name string, value uint8, usage string) *uint8 { + return CommandLine.Uint8P(name, "", value, usage) +} + +// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash. +func Uint8P(name, shorthand string, value uint8, usage string) *uint8 { + return CommandLine.Uint8P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint_slice.go b/vendor/github.com/spf13/pflag/uint_slice.go new file mode 100644 index 000000000..edd94c600 --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint_slice.go @@ -0,0 +1,126 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- uintSlice Value +type uintSliceValue struct { + value *[]uint + changed bool +} + +func newUintSliceValue(val []uint, p *[]uint) *uintSliceValue { + uisv := new(uintSliceValue) + uisv.value = p + *uisv.value = val + return uisv +} + +func (s *uintSliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]uint, len(ss)) + for i, d := range ss { + u, err := strconv.ParseUint(d, 10, 0) + if err != nil { + return err + } + out[i] = uint(u) + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *uintSliceValue) Type() string { + return "uintSlice" +} + +func (s *uintSliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%d", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func uintSliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []uint{}, nil + } + ss := strings.Split(val, ",") + out := make([]uint, len(ss)) + for i, d := range ss { + u, err := strconv.ParseUint(d, 10, 0) + if err != nil { + return nil, err + } + out[i] = uint(u) + } + return out, nil +} + +// GetUintSlice returns the []uint value of a flag with the given name. +func (f *FlagSet) GetUintSlice(name string) ([]uint, error) { + val, err := f.getFlagType(name, "uintSlice", uintSliceConv) + if err != nil { + return []uint{}, err + } + return val.([]uint), nil +} + +// UintSliceVar defines a uintSlice flag with specified name, default value, and usage string. +// The argument p points to a []uint variable in which to store the value of the flag. +func (f *FlagSet) UintSliceVar(p *[]uint, name string, value []uint, usage string) { + f.VarP(newUintSliceValue(value, p), name, "", usage) +} + +// UintSliceVarP is like UintSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) { + f.VarP(newUintSliceValue(value, p), name, shorthand, usage) +} + +// UintSliceVar defines a uint[] flag with specified name, default value, and usage string. +// The argument p points to a uint[] variable in which to store the value of the flag. +func UintSliceVar(p *[]uint, name string, value []uint, usage string) { + CommandLine.VarP(newUintSliceValue(value, p), name, "", usage) +} + +// UintSliceVarP is like the UintSliceVar, but accepts a shorthand letter that can be used after a single dash. +func UintSliceVarP(p *[]uint, name, shorthand string, value []uint, usage string) { + CommandLine.VarP(newUintSliceValue(value, p), name, shorthand, usage) +} + +// UintSlice defines a []uint flag with specified name, default value, and usage string. +// The return value is the address of a []uint variable that stores the value of the flag. +func (f *FlagSet) UintSlice(name string, value []uint, usage string) *[]uint { + p := []uint{} + f.UintSliceVarP(&p, name, "", value, usage) + return &p +} + +// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) UintSliceP(name, shorthand string, value []uint, usage string) *[]uint { + p := []uint{} + f.UintSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// UintSlice defines a []uint flag with specified name, default value, and usage string. +// The return value is the address of a []uint variable that stores the value of the flag. +func UintSlice(name string, value []uint, usage string) *[]uint { + return CommandLine.UintSliceP(name, "", value, usage) +} + +// UintSliceP is like UintSlice, but accepts a shorthand letter that can be used after a single dash. +func UintSliceP(name, shorthand string, value []uint, usage string) *[]uint { + return CommandLine.UintSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint_slice_test.go b/vendor/github.com/spf13/pflag/uint_slice_test.go new file mode 100644 index 000000000..db1a19dc2 --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint_slice_test.go @@ -0,0 +1,161 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" + "testing" +) + +func setUpUISFlagSet(uisp *[]uint) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.UintSliceVar(uisp, "uis", []uint{}, "Command separated list!") + return f +} + +func setUpUISFlagSetWithDefault(uisp *[]uint) *FlagSet { + f := NewFlagSet("test", ContinueOnError) + f.UintSliceVar(uisp, "uis", []uint{0, 1}, "Command separated list!") + return f +} + +func TestEmptyUIS(t *testing.T) { + var uis []uint + f := setUpUISFlagSet(&uis) + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + + getUIS, err := f.GetUintSlice("uis") + if err != nil { + t.Fatal("got an error from GetUintSlice():", err) + } + if len(getUIS) != 0 { + t.Fatalf("got is %v with len=%d but expected length=0", getUIS, len(getUIS)) + } +} + +func TestUIS(t *testing.T) { + var uis []uint + f := setUpUISFlagSet(&uis) + + vals := []string{"1", "2", "4", "3"} + arg := fmt.Sprintf("--uis=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range uis { + u, err := strconv.ParseUint(vals[i], 10, 0) + if err != nil { + t.Fatalf("got error: %v", err) + } + if uint(u) != v { + t.Fatalf("expected uis[%d] to be %s but got %d", i, vals[i], v) + } + } + getUIS, err := f.GetUintSlice("uis") + if err != nil { + t.Fatalf("got error: %v", err) + } + for i, v := range getUIS { + u, err := strconv.ParseUint(vals[i], 10, 0) + if err != nil { + t.Fatalf("got error: %v", err) + } + if uint(u) != v { + t.Fatalf("expected uis[%d] to be %s but got: %d from GetUintSlice", i, vals[i], v) + } + } +} + +func TestUISDefault(t *testing.T) { + var uis []uint + f := setUpUISFlagSetWithDefault(&uis) + + vals := []string{"0", "1"} + + err := f.Parse([]string{}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range uis { + u, err := strconv.ParseUint(vals[i], 10, 0) + if err != nil { + t.Fatalf("got error: %v", err) + } + if uint(u) != v { + t.Fatalf("expect uis[%d] to be %d but got: %d", i, u, v) + } + } + + getUIS, err := f.GetUintSlice("uis") + if err != nil { + t.Fatal("got an error from GetUintSlice():", err) + } + for i, v := range getUIS { + u, err := strconv.ParseUint(vals[i], 10, 0) + if err != nil { + t.Fatal("got an error from GetIntSlice():", err) + } + if uint(u) != v { + t.Fatalf("expected uis[%d] to be %d from GetUintSlice but got: %d", i, u, v) + } + } +} + +func TestUISWithDefault(t *testing.T) { + var uis []uint + f := setUpUISFlagSetWithDefault(&uis) + + vals := []string{"1", "2"} + arg := fmt.Sprintf("--uis=%s", strings.Join(vals, ",")) + err := f.Parse([]string{arg}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range uis { + u, err := strconv.ParseUint(vals[i], 10, 0) + if err != nil { + t.Fatalf("got error: %v", err) + } + if uint(u) != v { + t.Fatalf("expected uis[%d] to be %d from GetUintSlice but got: %d", i, u, v) + } + } + + getUIS, err := f.GetUintSlice("uis") + if err != nil { + t.Fatal("got an error from GetUintSlice():", err) + } + for i, v := range getUIS { + u, err := strconv.ParseUint(vals[i], 10, 0) + if err != nil { + t.Fatalf("got error: %v", err) + } + if uint(u) != v { + t.Fatalf("expected uis[%d] to be %d from GetUintSlice but got: %d", i, u, v) + } + } +} + +func TestUISCalledTwice(t *testing.T) { + var uis []uint + f := setUpUISFlagSet(&uis) + + in := []string{"1,2", "3"} + expected := []int{1, 2, 3} + argfmt := "--uis=%s" + arg1 := fmt.Sprintf(argfmt, in[0]) + arg2 := fmt.Sprintf(argfmt, in[1]) + err := f.Parse([]string{arg1, arg2}) + if err != nil { + t.Fatal("expected no error; got", err) + } + for i, v := range uis { + if uint(expected[i]) != v { + t.Fatalf("expected uis[%d] to be %d but got: %d", i, expected[i], v) + } + } +} diff --git a/vendor/github.com/spf13/pflag/verify/all.sh b/vendor/github.com/spf13/pflag/verify/all.sh new file mode 100755 index 000000000..739f89c0b --- /dev/null +++ b/vendor/github.com/spf13/pflag/verify/all.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +ROOT=$(dirname "${BASH_SOURCE}")/.. + +# Some useful colors. +if [[ -z "${color_start-}" ]]; then + declare -r color_start="\033[" + declare -r color_red="${color_start}0;31m" + declare -r color_yellow="${color_start}0;33m" + declare -r color_green="${color_start}0;32m" + declare -r color_norm="${color_start}0m" +fi + +SILENT=true + +function is-excluded { + for e in $EXCLUDE; do + if [[ $1 -ef ${BASH_SOURCE} ]]; then + return + fi + if [[ $1 -ef "$ROOT/hack/$e" ]]; then + return + fi + done + return 1 +} + +while getopts ":v" opt; do + case $opt in + v) + SILENT=false + ;; + \?) + echo "Invalid flag: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +if $SILENT ; then + echo "Running in the silent mode, run with -v if you want to see script logs." +fi + +EXCLUDE="all.sh" + +ret=0 +for t in `ls $ROOT/verify/*.sh` +do + if is-excluded $t ; then + echo "Skipping $t" + continue + fi + if $SILENT ; then + echo -e "Verifying $t" + if bash "$t" &> /dev/null; then + echo -e "${color_green}SUCCESS${color_norm}" + else + echo -e "${color_red}FAILED${color_norm}" + ret=1 + fi + else + bash "$t" || ret=1 + fi +done +exit $ret diff --git a/vendor/github.com/spf13/pflag/verify/gofmt.sh b/vendor/github.com/spf13/pflag/verify/gofmt.sh new file mode 100755 index 000000000..f66acf803 --- /dev/null +++ b/vendor/github.com/spf13/pflag/verify/gofmt.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -o errexit +set -o nounset +set -o pipefail + +ROOT=$(dirname "${BASH_SOURCE}")/.. + +pushd "${ROOT}" > /dev/null + +GOFMT=${GOFMT:-"gofmt"} +bad_files=$(find . -name '*.go' | xargs $GOFMT -s -l) +if [[ -n "${bad_files}" ]]; then + echo "!!! '$GOFMT' needs to be run on the following files: " + echo "${bad_files}" + exit 1 +fi + +# ex: ts=2 sw=2 et filetype=sh diff --git a/vendor/github.com/spf13/pflag/verify/golint.sh b/vendor/github.com/spf13/pflag/verify/golint.sh new file mode 100755 index 000000000..685c1778e --- /dev/null +++ b/vendor/github.com/spf13/pflag/verify/golint.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +ROOT=$(dirname "${BASH_SOURCE}")/.. +GOLINT=${GOLINT:-"golint"} + +pushd "${ROOT}" > /dev/null + bad_files=$($GOLINT -min_confidence=0.9 ./...) + if [[ -n "${bad_files}" ]]; then + echo "!!! '$GOLINT' problems: " + echo "${bad_files}" + exit 1 + fi +popd > /dev/null + +# ex: ts=2 sw=2 et filetype=sh diff --git a/vendor/github.com/ugorji/go/codec/0doc.go b/vendor/github.com/ugorji/go/codec/0doc.go index 11a9753a2..209f9ebad 100644 --- a/vendor/github.com/ugorji/go/codec/0doc.go +++ b/vendor/github.com/ugorji/go/codec/0doc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a MIT license found in the LICENSE file. /* -High Performance, Feature-Rich Idiomatic Go 1.4+ codec/encoding library for -binc, msgpack, cbor, json +High Performance, Feature-Rich Idiomatic Go codec/encoding library for +binc, msgpack, cbor, json. Supported Serialization formats are: @@ -11,17 +11,21 @@ Supported Serialization formats are: - binc: http://github.com/ugorji/binc - cbor: http://cbor.io http://tools.ietf.org/html/rfc7049 - json: http://json.org http://tools.ietf.org/html/rfc7159 - - simple: + - simple: To install: go get github.com/ugorji/go/codec -This package will carefully use 'unsafe' for performance reasons in specific places. -You can build without unsafe use by passing the safe or appengine tag -i.e. 'go install -tags=safe ...'. Note that unsafe is only supported for the last 3 -go sdk versions e.g. current go release is go 1.9, so we support unsafe use only from -go 1.7+ . This is because supporting unsafe requires knowledge of implementation details. +This package understands the 'unsafe' tag, to allow using unsafe semantics: + + - When decoding into a struct, you need to read the field name as a string + so you can find the struct field it is mapped to. + Using `unsafe` will bypass the allocation and copying overhead of []byte->string conversion. + +To install using unsafe, pass the 'unsafe' tag: + + go get -tags=unsafe github.com/ugorji/go/codec For detailed usage information, read the primer at http://ugorji.net/blog/go-codec-primer . @@ -34,9 +38,9 @@ Rich Feature Set includes: - Very High Performance. Our extensive benchmarks show us outperforming Gob, Json, Bson, etc by 2-4X. - Multiple conversions: - Package coerces types where appropriate + Package coerces types where appropriate e.g. decode an int in the stream into a float, etc. - - Corner Cases: + - Corner Cases: Overflows, nil maps/slices, nil values in streams are handled correctly - Standard field renaming via tags - Support for omitting empty fields during an encoding @@ -52,7 +56,7 @@ Rich Feature Set includes: - Fast (no-reflection) encoding/decoding of common maps and slices - Code-generation for faster performance. - Support binary (e.g. messagepack, cbor) and text (e.g. json) formats - - Support indefinite-length formats to enable true streaming + - Support indefinite-length formats to enable true streaming (for formats which support it e.g. json, cbor) - Support canonical encoding, where a value is ALWAYS encoded as same sequence of bytes. This mostly applies to maps, where iteration order is non-deterministic. @@ -64,12 +68,12 @@ Rich Feature Set includes: - Encode/Decode from/to chan types (for iterative streaming support) - Drop-in replacement for encoding/json. `json:` key in struct tag supported. - Provides a RPC Server and Client Codec for net/rpc communication protocol. - - Handle unique idiosyncrasies of codecs e.g. - - For messagepack, configure how ambiguities in handling raw bytes are resolved - - For messagepack, provide rpc server/client codec to support + - Handle unique idiosyncrasies of codecs e.g. + - For messagepack, configure how ambiguities in handling raw bytes are resolved + - For messagepack, provide rpc server/client codec to support msgpack-rpc protocol defined at: https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md - + Extension Support Users can register a function to handle the encoding or decoding of diff --git a/vendor/github.com/ugorji/go/codec/README.md b/vendor/github.com/ugorji/go/codec/README.md index cadc41b4c..91cb3a27b 100644 --- a/vendor/github.com/ugorji/go/codec/README.md +++ b/vendor/github.com/ugorji/go/codec/README.md @@ -15,11 +15,17 @@ To install: go get github.com/ugorji/go/codec -This package will carefully use 'unsafe' for performance reasons in specific places. -You can build without unsafe use by passing the safe or appengine tag -i.e. 'go install -tags=safe ...'. Note that unsafe is only supported for the last 3 -go sdk versions e.g. current go release is go 1.9, so we support unsafe use only from -go 1.7+ . This is because supporting unsafe requires knowledge of implementation details. +This package understands the `unsafe` tag, to allow using unsafe semantics: + + - When decoding into a struct, you need to read the field name as a string + so you can find the struct field it is mapped to. + Using `unsafe` will bypass the allocation and copying overhead of `[]byte->string` conversion. + +To use it, you must pass the `unsafe` tag during install: + +``` +go install -tags=unsafe github.com/ugorji/go/codec +``` Online documentation: http://godoc.org/github.com/ugorji/go/codec Detailed Usage/How-to Primer: http://ugorji.net/blog/go-codec-primer @@ -30,13 +36,8 @@ the standard library (ie json, xml, gob, etc). Rich Feature Set includes: - Simple but extremely powerful and feature-rich API - - Support for go1.4 and above, while selectively using newer APIs for later releases - - Good code coverage ( > 70% ) - Very High Performance. Our extensive benchmarks show us outperforming Gob, Json, Bson, etc by 2-4X. - - Careful selected use of 'unsafe' for targeted performance gains. - 100% mode exists where 'unsafe' is not used at all. - - Lock-free (sans mutex) concurrency for scaling to 100's of cores - Multiple conversions: Package coerces types where appropriate e.g. decode an int in the stream into a float, etc. @@ -145,22 +146,3 @@ Typical usage model: //OR rpcCodec := codec.MsgpackSpecRpc.ClientCodec(conn, h) client := rpc.NewClientWithCodec(rpcCodec) -## Running Tests - -To run tests, use the following: - - go test - -To run the full suite of tests, use the following: - - go test -tags alltests -run Suite - -You can run the tag 'safe' to run tests or build in safe mode. e.g. - - go test -tags safe -run Json - go test -tags "alltests safe" -run Suite - -## Running Benchmarks - -Please see http://github.com/ugorji/go-codec-bench . - diff --git a/vendor/github.com/ugorji/go/codec/binc.go b/vendor/github.com/ugorji/go/codec/binc.go index a5b114345..33120dcb6 100644 --- a/vendor/github.com/ugorji/go/codec/binc.go +++ b/vendor/github.com/ugorji/go/codec/binc.go @@ -356,9 +356,6 @@ func (d *bincDecDriver) uncacheRead() { } func (d *bincDecDriver) ContainerType() (vt valueType) { - if !d.bdRead { - d.readNextBd() - } if d.vd == bincVdSpecial && d.vs == bincSpNil { return valueTypeNil } else if d.vd == bincVdByteArray { @@ -583,9 +580,6 @@ func (d *bincDecDriver) DecodeBool() (b bool) { } func (d *bincDecDriver) ReadMapStart() (length int) { - if !d.bdRead { - d.readNextBd() - } if d.vd != bincVdMap { d.d.errorf("Invalid d.vd for map. Expecting 0x%x. Got: 0x%x", bincVdMap, d.vd) return @@ -596,9 +590,6 @@ func (d *bincDecDriver) ReadMapStart() (length int) { } func (d *bincDecDriver) ReadArrayStart() (length int) { - if !d.bdRead { - d.readNextBd() - } if d.vd != bincVdArray { d.d.errorf("Invalid d.vd for array. Expecting 0x%x. Got: 0x%x", bincVdArray, d.vd) return @@ -648,12 +639,12 @@ func (d *bincDecDriver) decStringAndBytes(bs []byte, withString, zerocopy bool) if d.br { bs2 = d.r.readx(slen) } else if len(bs) == 0 { - bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, d.b[:]) + bs2 = decByteSlice(d.r, slen, d.b[:]) } else { - bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, bs) + bs2 = decByteSlice(d.r, slen, bs) } } else { - bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, bs) + bs2 = decByteSlice(d.r, slen, bs) } if withString { s = string(bs2) @@ -705,7 +696,7 @@ func (d *bincDecDriver) decStringAndBytes(bs []byte, withString, zerocopy bool) // since using symbols, do not store any part of // the parameter bs in the map, as it might be a shared buffer. // bs2 = decByteSlice(d.r, slen, bs) - bs2 = decByteSlice(d.r, slen, d.d.h.MaxInitLen, nil) + bs2 = decByteSlice(d.r, slen, nil) if withString { s = string(bs2) } @@ -728,12 +719,11 @@ func (d *bincDecDriver) DecodeString() (s string) { return } -func (d *bincDecDriver) DecodeStringAsBytes() (s []byte) { - s, _ = d.decStringAndBytes(d.b[:], false, true) - return -} - -func (d *bincDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { +func (d *bincDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { + if isstring { + bsOut, _ = d.decStringAndBytes(bs, false, zerocopy) + return + } if !d.bdRead { d.readNextBd() } @@ -757,7 +747,7 @@ func (d *bincDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { bs = d.b[:] } } - return decByteSlice(d.r, clen, d.d.h.MaxInitLen, bs) + return decByteSlice(d.r, clen, bs) } func (d *bincDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { @@ -790,7 +780,7 @@ func (d *bincDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs []b } xbs = d.r.readx(l) } else if d.vd == bincVdByteArray { - xbs = d.DecodeBytes(nil, true) + xbs = d.DecodeBytes(nil, false, true) } else { d.d.errorf("Invalid d.vd for extensions (Expecting extensions or byte array). Got: 0x%x", d.vd) return @@ -859,7 +849,7 @@ func (d *bincDecDriver) DecodeNaked() { n.s = d.DecodeString() case bincVdByteArray: n.v = valueTypeBytes - n.l = d.DecodeBytes(nil, false) + n.l = d.DecodeBytes(nil, false, false) case bincVdTimestamp: n.v = valueTypeTimestamp tt, err := decodeTime(d.r.readx(int(d.vs))) @@ -920,7 +910,7 @@ func (h *BincHandle) newEncDriver(e *Encoder) encDriver { } func (h *BincHandle) newDecDriver(d *Decoder) decDriver { - return &bincDecDriver{d: d, h: h, r: d.r, br: d.bytes} + return &bincDecDriver{d: d, r: d.r, h: h, br: d.bytes} } func (e *bincEncDriver) reset() { @@ -930,7 +920,7 @@ func (e *bincEncDriver) reset() { } func (d *bincDecDriver) reset() { - d.r, d.br = d.d.r, d.d.bytes + d.r = d.d.r d.s = nil d.bd, d.bdRead, d.vd, d.vs = 0, false, 0, 0 } diff --git a/vendor/github.com/ugorji/go/codec/cbor.go b/vendor/github.com/ugorji/go/codec/cbor.go index 054dbd2f1..4fa349ac8 100644 --- a/vendor/github.com/ugorji/go/codec/cbor.go +++ b/vendor/github.com/ugorji/go/codec/cbor.go @@ -196,9 +196,6 @@ func (d *cborDecDriver) uncacheRead() { } func (d *cborDecDriver) ContainerType() (vt valueType) { - if !d.bdRead { - d.readNextBd() - } if d.bd == cborBdNil { return valueTypeNil } else if d.bd == cborBdIndefiniteBytes || (d.bd >= cborBaseBytes && d.bd < cborBaseString) { @@ -354,9 +351,6 @@ func (d *cborDecDriver) DecodeBool() (b bool) { } func (d *cborDecDriver) ReadMapStart() (length int) { - if !d.bdRead { - d.readNextBd() - } d.bdRead = false if d.bd == cborBdIndefiniteMap { return -1 @@ -365,9 +359,6 @@ func (d *cborDecDriver) ReadMapStart() (length int) { } func (d *cborDecDriver) ReadArrayStart() (length int) { - if !d.bdRead { - d.readNextBd() - } d.bdRead = false if d.bd == cborBdIndefiniteArray { return -1 @@ -407,7 +398,7 @@ func (d *cborDecDriver) decAppendIndefiniteBytes(bs []byte) []byte { return bs } -func (d *cborDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { +func (d *cborDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { if !d.bdRead { d.readNextBd() } @@ -430,15 +421,11 @@ func (d *cborDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { bs = d.b[:] } } - return decByteSlice(d.r, clen, d.d.h.MaxInitLen, bs) + return decByteSlice(d.r, clen, bs) } func (d *cborDecDriver) DecodeString() (s string) { - return string(d.DecodeBytes(d.b[:], true)) -} - -func (d *cborDecDriver) DecodeStringAsBytes() (s []byte) { - return d.DecodeBytes(d.b[:], true) + return string(d.DecodeBytes(d.b[:], true, true)) } func (d *cborDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { @@ -489,7 +476,7 @@ func (d *cborDecDriver) DecodeNaked() { n.f = d.DecodeFloat(false) case cborBdIndefiniteBytes: n.v = valueTypeBytes - n.l = d.DecodeBytes(nil, false) + n.l = d.DecodeBytes(nil, false, false) case cborBdIndefiniteString: n.v = valueTypeString n.s = d.DecodeString() @@ -514,7 +501,7 @@ func (d *cborDecDriver) DecodeNaked() { n.i = d.DecodeInt(64) case d.bd >= cborBaseBytes && d.bd < cborBaseString: n.v = valueTypeBytes - n.l = d.DecodeBytes(nil, false) + n.l = d.DecodeBytes(nil, false, false) case d.bd >= cborBaseString && d.bd < cborBaseArray: n.v = valueTypeString n.s = d.DecodeString() @@ -589,7 +576,7 @@ func (h *CborHandle) newEncDriver(e *Encoder) encDriver { } func (h *CborHandle) newDecDriver(d *Decoder) decDriver { - return &cborDecDriver{d: d, h: h, r: d.r, br: d.bytes} + return &cborDecDriver{d: d, r: d.r, h: h, br: d.bytes} } func (e *cborEncDriver) reset() { @@ -597,7 +584,7 @@ func (e *cborEncDriver) reset() { } func (d *cborDecDriver) reset() { - d.r, d.br = d.d.r, d.d.bytes + d.r = d.d.r d.bd, d.bdRead = 0, false } diff --git a/vendor/github.com/ugorji/go/codec/codec_test.go b/vendor/github.com/ugorji/go/codec/codec_test.go index eb8830ba1..d8e782b7e 100644 --- a/vendor/github.com/ugorji/go/codec/codec_test.go +++ b/vendor/github.com/ugorji/go/codec/codec_test.go @@ -22,6 +22,7 @@ package codec import ( "bytes" "encoding/gob" + "flag" "fmt" "io/ioutil" "math" @@ -41,6 +42,7 @@ import ( ) func init() { + testInitFlags() testPreInitFns = append(testPreInitFns, testInit) } @@ -90,6 +92,22 @@ var ( testRpcInt = new(TestRpcInt) ) +func testInitFlags() { + // delete(testDecOpts.ExtFuncs, timeTyp) + flag.BoolVar(&testVerbose, "tv", false, "Test Verbose") + flag.BoolVar(&testInitDebug, "tg", false, "Test Init Debug") + flag.BoolVar(&testUseIoEncDec, "ti", false, "Use IO Reader/Writer for Marshal/Unmarshal") + flag.BoolVar(&testStructToArray, "ts", false, "Set StructToArray option") + flag.BoolVar(&testWriteNoSymbols, "tn", false, "Set NoSymbols option") + flag.BoolVar(&testCanonical, "tc", false, "Set Canonical option") + flag.BoolVar(&testInternStr, "te", false, "Set InternStr option") + flag.BoolVar(&testSkipIntf, "tf", false, "Skip Interfaces") + flag.BoolVar(&testUseReset, "tr", false, "Use Reset") + flag.IntVar(&testJsonIndent, "td", 0, "Use JSON Indent") + flag.BoolVar(&testUseMust, "tm", true, "Use Must(En|De)code") + flag.BoolVar(&testCheckCircRef, "tl", false, "Use Check Circular Ref") +} + func testByteBuf(in []byte) *bytes.Buffer { return bytes.NewBuffer(in) } @@ -134,14 +152,6 @@ func (x *TestABC2) UnmarshalText(data []byte) (err error) { // _, err = fmt.Sscanf(string(data), "%s %s %s", &x.A, &x.B, &x.C) } -type TestSimplish struct { - Ii int - Ss string - Ar [2]*TestSimplish - Sl []*TestSimplish - Mm map[string]*TestSimplish -} - type TestRpcABC struct { A, B, C string } @@ -336,7 +346,6 @@ func testInit() { bh.Canonical = testCanonical bh.CheckCircularRef = testCheckCircRef bh.StructToArray = testStructToArray - bh.MaxInitLen = testMaxInitLen // mostly doing this for binc if testWriteNoSymbols { bh.AsSymbols = AsSymbolNone @@ -346,9 +355,6 @@ func testInit() { } testJsonH.Indent = int8(testJsonIndent) - testJsonH.HTMLCharsAsIs = testJsonHTMLCharsAsIs - testJsonH.PreferFloat = testJsonPreferFloat - testMsgpackH.RawToString = true // testMsgpackH.AddExt(byteSliceTyp, 0, testMsgpackH.BinaryEncodeExt, testMsgpackH.BinaryDecodeExt) @@ -358,20 +364,7 @@ func testInit() { // use different flavors of XXXExt calls, including deprecated ones. // NOTE: // DO NOT set extensions for JsonH, so we can test json(M|Unm)arshal support. - var ( - timeExtEncFn = func(rv reflect.Value) (bs []byte, err error) { - defer panicToErr(&err) - bs = timeExt{}.WriteExt(rv.Interface()) - return - } - timeExtDecFn = func(rv reflect.Value, bs []byte) (err error) { - defer panicToErr(&err) - timeExt{}.ReadExt(rv.Interface(), bs) - return - } - ) testSimpleH.AddExt(timeTyp, 1, timeExtEncFn, timeExtDecFn) - testMsgpackH.SetBytesExt(timeTyp, 1, timeExt{}) testCborH.SetInterfaceExt(timeTyp, 1, &testUnixNanoTimeExt{}) // testJsonH.SetInterfaceExt(timeTyp, 1, &testUnixNanoTimeExt{}) @@ -396,7 +389,7 @@ func testInit() { true, "null", nil, - "some&day>some 40. Size: %d", len(b)) - failT(t) + t.FailNow() } if h.isBinary() { logT(t, "------- b: %v", b) @@ -692,7 +662,7 @@ func testCodecMiscOne(t *testing.T, h Handle) { err = testUnmarshalErr(ts2, b, h, t, "pointer-to-struct") if ts2.I64 != math.MaxInt64*2/3 { logT(t, "------- Unmarshal wrong. Expect I64 = 64. Got: %v", ts2.I64) - failT(t) + t.FailNow() } // func TestMsgpackIntfDecode(t *testing.T) { @@ -706,7 +676,7 @@ func testCodecMiscOne(t *testing.T, h Handle) { if m2["A"] != 2 || m2["B"] != 3 { logT(t, "m2 not as expected: expecting: %v, got: %v", m, m2) - failT(t) + t.FailNow() } // log("m: %v, m2: %v, p: %v, p2: %v", m, m2, p, p2) checkEqualT(t, p, p2, "p=p2") @@ -715,13 +685,13 @@ func testCodecMiscOne(t *testing.T, h Handle) { logT(t, "p and p2 match") } else { logT(t, "Not Equal: %v. p: %v, p2: %v", err, p, p2) - failT(t) + t.FailNow() } if err = deepEqual(m, m2); err == nil { logT(t, "m and m2 match") } else { logT(t, "Not Equal: %v. m: %v, m2: %v", err, m, m2) - failT(t) + t.FailNow() } // func TestMsgpackDecodeStructSubset(t *testing.T) { @@ -751,7 +721,7 @@ func testCodecMiscOne(t *testing.T, h Handle) { bs, err = testMarshalErr(tarr1, h, t, "tarr1") if err != nil { logT(t, "Error marshalling: %v", err) - failT(t) + t.FailNow() } if _, ok := h.(*JsonHandle); ok { logT(t, "Marshal as: %s", bs) @@ -861,7 +831,7 @@ func testCodecRpcOne(t *testing.T, rr Rpc, h Handle, doRequest bool, exitSleepMs // rpc needs EOF, which is sent via a panic, and so must be recovered. if !recoverPanicToErr { logT(t, "EXPECTED. set recoverPanicToErr=true, since rpc needs EOF") - failT(t) + t.FailNow() } srv := rpc.NewServer() srv.Register(testRpcInt) @@ -1004,7 +974,7 @@ func doTestMapEncodeForCanonical(t *testing.T, name string, h Handle) { e2.MustEncode(v2) if !bytes.Equal(b1, b2) { logT(t, "Unequal bytes: %v VS %v", b1, b2) - failT(t) + t.FailNow() } } @@ -1058,13 +1028,13 @@ func doTestEncCircularRef(t *testing.T, name string, h Handle) { err = NewEncoderBytes(&bs, h).Encode(&t3) if err == nil { logT(t, "expecting error due to circular reference. found none") - failT(t) + t.FailNow() } if x := err.Error(); strings.Contains(x, "circular") || strings.Contains(x, "cyclic") { logT(t, "error detected as expected: %v", x) } else { logT(t, "error detected was not as expected: %v", x) - failT(t) + t.FailNow() } } @@ -1092,7 +1062,7 @@ func doTestAnonCycle(t *testing.T, name string, h Handle) { // just check that you can get typeInfo for T1 rt := reflect.TypeOf((*TestAnonCycleT1)(nil)).Elem() - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() pti := h.getBasicHandle().getTypeInfo(rtid, rt) logT(t, "pti: %v", pti) } @@ -1199,7 +1169,7 @@ func doTestRawValue(t *testing.T, name string, h Handle) { // logT(t, "Encoded %v, decoded %v", i, i2) if i != i2 { logT(t, "Error: encoded %v, decoded %v", i, i2) - failT(t) + t.FailNow() } } @@ -1212,7 +1182,7 @@ func doTestPythonGenStreams(t *testing.T, name string, h Handle) { tmpdir, err := ioutil.TempDir("", "golang-"+name+"-test") if err != nil { logT(t, "-------- Unable to create temp directory\n") - failT(t) + t.FailNow() } defer os.RemoveAll(tmpdir) logT(t, "tmpdir: %v", tmpdir) @@ -1223,7 +1193,7 @@ func doTestPythonGenStreams(t *testing.T, name string, h Handle) { if cmdout, err = cmd.CombinedOutput(); err != nil { logT(t, "-------- Error running test.py testdata. Err: %v", err) logT(t, " %v", string(cmdout)) - failT(t) + t.FailNow() } bh := h.getBasicHandle() @@ -1344,96 +1314,12 @@ func doTestMsgpackRpcSpecPythonClientToGoSvc(t *testing.T) { if cmdout, err = cmd.CombinedOutput(); err != nil { logT(t, "-------- Error running test.py rpc-client-go-service. Err: %v", err) logT(t, " %v", string(cmdout)) - failT(t) + t.FailNow() } checkEqualT(t, string(cmdout), fmt.Sprintf("%#v\n%#v\n", []string{"A1", "B2", "C3"}, TestRpcABC{"Aa", "Bb", "Cc"}), "cmdout=") } -func testRandomFillRV(v reflect.Value) { - fneg := func() int64 { - i := rand.Intn(1) - if i == 1 { - return 1 - } - return -1 - } - - switch v.Kind() { - case reflect.Invalid: - case reflect.Ptr: - if v.IsNil() { - v.Set(reflect.New(v.Type().Elem())) - } - testRandomFillRV(v.Elem()) - case reflect.Interface: - if v.IsNil() { - v.Set(reflect.ValueOf("nothing")) - } else { - testRandomFillRV(v.Elem()) - } - case reflect.Struct: - for i, n := 0, v.NumField(); i < n; i++ { - testRandomFillRV(v.Field(i)) - } - case reflect.Slice: - if v.IsNil() { - v.Set(reflect.MakeSlice(v.Type(), 4, 4)) - } - fallthrough - case reflect.Array: - for i, n := 0, v.Len(); i < n; i++ { - testRandomFillRV(v.Index(i)) - } - case reflect.Map: - if v.IsNil() { - v.Set(reflect.MakeMap(v.Type())) - } - if v.Len() == 0 { - kt, vt := v.Type().Key(), v.Type().Elem() - for i := 0; i < 4; i++ { - k0 := reflect.New(kt).Elem() - v0 := reflect.New(vt).Elem() - testRandomFillRV(k0) - testRandomFillRV(v0) - v.SetMapIndex(k0, v0) - } - } else { - for _, k := range v.MapKeys() { - testRandomFillRV(v.MapIndex(k)) - } - } - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - v.SetInt(fneg() * rand.Int63n(127)) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - v.SetUint(uint64(rand.Int63n(255))) - case reflect.Bool: - if fneg() == 1 { - v.SetBool(true) - } else { - v.SetBool(false) - } - case reflect.Float32, reflect.Float64: - v.SetFloat(float64(fneg()) * float64(rand.Float32())) - case reflect.String: - v.SetString(strings.Repeat(strconv.FormatInt(rand.Int63n(99), 10), rand.Intn(8))) - default: - panic(fmt.Errorf("testRandomFillRV: unsupported type: %v", v.Kind())) - } -} - -func testMammoth(t *testing.T, name string, h Handle) { - testOnce.Do(testInitAll) - var m, m2 TestMammoth - testRandomFillRV(reflect.ValueOf(&m).Elem()) - b, _ := testMarshalErr(&m, h, t, "mammoth-"+name) - testUnmarshalErr(&m2, b, h, t, "mammoth-"+name) - // fmt.Printf("m2: %v", &m2) - testDeepEqualErr(&m, &m2, t, "mammoth-"+name) -} - -// ----------------- - func TestBincCodecsTable(t *testing.T) { testCodecTableOne(t, testBincH) } @@ -1450,10 +1336,6 @@ func TestBincStdEncIntf(t *testing.T) { doTestStdEncIntf(t, "binc", testBincH) } -func TestBincMammoth(t *testing.T) { - testMammoth(t, "binc", testBincH) -} - func TestSimpleCodecsTable(t *testing.T) { testCodecTableOne(t, testSimpleH) } @@ -1470,10 +1352,6 @@ func TestSimpleStdEncIntf(t *testing.T) { doTestStdEncIntf(t, "simple", testSimpleH) } -func TestSimpleMammoth(t *testing.T) { - testMammoth(t, "simple", testSimpleH) -} - func TestMsgpackCodecsTable(t *testing.T) { testCodecTableOne(t, testMsgpackH) } @@ -1490,10 +1368,6 @@ func TestMsgpackStdEncIntf(t *testing.T) { doTestStdEncIntf(t, "msgpack", testMsgpackH) } -func TestMsgpackMammoth(t *testing.T) { - testMammoth(t, "msgpack", testMsgpackH) -} - func TestCborCodecsTable(t *testing.T) { testCodecTableOne(t, testCborH) } @@ -1518,10 +1392,6 @@ func TestCborStdEncIntf(t *testing.T) { doTestStdEncIntf(t, "cbor", testCborH) } -func TestCborMammoth(t *testing.T) { - testMammoth(t, "cbor", testCborH) -} - func TestJsonCodecsTable(t *testing.T) { testCodecTableOne(t, testJsonH) } @@ -1542,10 +1412,6 @@ func TestJsonStdEncIntf(t *testing.T) { doTestStdEncIntf(t, "json", testJsonH) } -func TestJsonMammoth(t *testing.T) { - testMammoth(t, "json", testJsonH) -} - // ----- Raw --------- func TestJsonRaw(t *testing.T) { doTestRawValue(t, "json", testJsonH) @@ -1620,134 +1486,6 @@ func TestJsonLargeInteger(t *testing.T) { } } -func TestJsonDecodeNonStringScalarInStringContext(t *testing.T) { - var b = `{"s.true": "true", "b.true": true, "s.false": "false", "b.false": false, "s.10": "10", "i.10": 10, "i.-10": -10}` - var golden = map[string]string{"s.true": "true", "b.true": "true", "s.false": "false", "b.false": "false", "s.10": "10", "i.10": "10", "i.-10": "-10"} - - var m map[string]string - d := NewDecoderBytes([]byte(b), testJsonH) - d.MustDecode(&m) - if err := deepEqual(golden, m); err == nil { - logT(t, "++++ match: decoded: %#v", m) - } else { - logT(t, "---- mismatch: %v ==> golden: %#v, decoded: %#v", err, golden, m) - failT(t) - } -} - -func TestJsonEncodeIndent(t *testing.T) { - v := TestSimplish{ - Ii: -794, - Ss: `A Man is -after the new line - after new line and tab -`, - } - v2 := v - v.Mm = make(map[string]*TestSimplish) - for i := 0; i < len(v.Ar); i++ { - v3 := v2 - v3.Ii += (i * 4) - v3.Ss = fmt.Sprintf("%d - %s", v3.Ii, v3.Ss) - if i%2 == 0 { - v.Ar[i] = &v3 - } - // v3 = v2 - v.Sl = append(v.Sl, &v3) - v.Mm[strconv.FormatInt(int64(i), 10)] = &v3 - } - oldcan := testJsonH.Canonical - oldIndent := testJsonH.Indent - oldS2A := testJsonH.StructToArray - defer func() { - testJsonH.Canonical = oldcan - testJsonH.Indent = oldIndent - testJsonH.StructToArray = oldS2A - }() - testJsonH.Canonical = true - testJsonH.Indent = -1 - testJsonH.StructToArray = false - var bs []byte - NewEncoderBytes(&bs, testJsonH).MustEncode(&v) - txt1Tab := string(bs) - bs = nil - testJsonH.Indent = 120 - NewEncoderBytes(&bs, testJsonH).MustEncode(&v) - txtSpaces := string(bs) - // fmt.Printf("\n-----------\n%s\n------------\n%s\n-------------\n", txt1Tab, txtSpaces) - - goldenResultTab := `{ - "Ar": [ - { - "Ar": [ - null, - null - ], - "Ii": -794, - "Mm": null, - "Sl": null, - "Ss": "-794 - A Man is\nafter the new line\n\tafter new line and tab\n" - }, - null - ], - "Ii": -794, - "Mm": { - "0": { - "Ar": [ - null, - null - ], - "Ii": -794, - "Mm": null, - "Sl": null, - "Ss": "-794 - A Man is\nafter the new line\n\tafter new line and tab\n" - }, - "1": { - "Ar": [ - null, - null - ], - "Ii": -790, - "Mm": null, - "Sl": null, - "Ss": "-790 - A Man is\nafter the new line\n\tafter new line and tab\n" - } - }, - "Sl": [ - { - "Ar": [ - null, - null - ], - "Ii": -794, - "Mm": null, - "Sl": null, - "Ss": "-794 - A Man is\nafter the new line\n\tafter new line and tab\n" - }, - { - "Ar": [ - null, - null - ], - "Ii": -790, - "Mm": null, - "Sl": null, - "Ss": "-790 - A Man is\nafter the new line\n\tafter new line and tab\n" - } - ], - "Ss": "A Man is\nafter the new line\n\tafter new line and tab\n" -}` - - if txt1Tab != goldenResultTab { - logT(t, "decoded indented with tabs != expected: \nexpected: %s\nencoded: %s", goldenResultTab, txt1Tab) - failT(t) - } - if txtSpaces != strings.Replace(goldenResultTab, "\t", strings.Repeat(" ", 120), -1) { - logT(t, "decoded indented with spaces != expected: \nexpected: %s\nencoded: %s", goldenResultTab, txtSpaces) - failT(t) - } -} - // TODO: // Add Tests for: // - decoding empty list/map in stream into a nil slice/map @@ -1762,6 +1500,7 @@ after the new line // - struct tags: // on anonymous fields, _struct (all fields), etc // - codecgen of struct containing channels. -// -// Add negative tests for failure conditions: // - bad input with large array length prefix +// +// Cleanup tests: +// - The are brittle in their handling of validation and skipping diff --git a/vendor/github.com/ugorji/go/codec/codecgen/gen.go b/vendor/github.com/ugorji/go/codec/codecgen/gen.go index dbde8c3a4..d94d5cf49 100644 --- a/vendor/github.com/ugorji/go/codec/codecgen/gen.go +++ b/vendor/github.com/ugorji/go/codec/codecgen/gen.go @@ -62,7 +62,7 @@ func CodecGenTempWrite{{ .RandString }}() { var t{{ $index }} {{ . }} typs = append(typs, reflect.TypeOf(t{{ $index }})) {{ end }} - {{ if not .CodecPkgFiles }}{{ .CodecPkgName }}.{{ end }}Gen(&out, "{{ .BuildTag }}", "{{ .PackageName }}", "{{ .RandString }}", {{ if not .CodecPkgFiles }}{{ .CodecPkgName }}.{{ end }}NewTypeInfos(strings.Split("{{ .StructTags }}", ",")), typs...) + {{ if not .CodecPkgFiles }}{{ .CodecPkgName }}.{{ end }}Gen(&out, "{{ .BuildTag }}", "{{ .PackageName }}", "{{ .RandString }}", {{ .UseUnsafe }}, {{ if not .CodecPkgFiles }}{{ .CodecPkgName }}.{{ end }}NewTypeInfos(strings.Split("{{ .StructTags }}", ",")), typs...) bout, err := format.Source(out.Bytes()) if err != nil { fout.Write(out.Bytes()) @@ -82,7 +82,7 @@ func CodecGenTempWrite{{ .RandString }}() { // Tool then executes: "go run __frun__" which creates fout. // fout contains Codec(En|De)codeSelf implementations for every type T. // -func Generate(outfile, buildTag, codecPkgPath string, uid int64, goRunTag string, +func Generate(outfile, buildTag, codecPkgPath string, uid int64, useUnsafe bool, goRunTag string, st string, regexName *regexp.Regexp, notRegexName *regexp.Regexp, deleteTempFile bool, infiles ...string) (err error) { // For each file, grab AST, find each type, and write a call to it. if len(infiles) == 0 { @@ -121,12 +121,14 @@ func Generate(outfile, buildTag, codecPkgPath string, uid int64, goRunTag string StructTags string Types []string CodecPkgFiles bool + UseUnsafe bool } tv := tmplT{ CodecPkgName: genCodecPkg, OutFile: outfile, CodecImportPath: codecPkgPath, BuildTag: buildTag, + UseUnsafe: useUnsafe, RandString: strconv.FormatInt(uid, 10), StructTags: st, } @@ -136,7 +138,14 @@ func Generate(outfile, buildTag, codecPkgPath string, uid int64, goRunTag string tv.CodecPkgName = "codec" } else { // HACK: always handle vendoring. It should be typically on in go 1.6, 1.7 - tv.ImportPath = stripVendor(tv.ImportPath) + s := tv.ImportPath + const vendorStart = "vendor/" + const vendorInline = "/vendor/" + if i := strings.LastIndex(s, vendorInline); i >= 0 { + tv.ImportPath = s[i+len(vendorInline):] + } else if strings.HasPrefix(s, vendorStart) { + tv.ImportPath = s[len(vendorStart):] + } } astfiles := make([]*ast.File, len(infiles)) for i, infile := range infiles { @@ -254,7 +263,7 @@ func Generate(outfile, buildTag, codecPkgPath string, uid int64, goRunTag string os.Remove(outfile) // execute go run frun - cmd := exec.Command("go", "run", "-tags", "codecgen.exec safe "+goRunTag, frunMainName) //, frunPkg.Name()) + cmd := exec.Command("go", "run", "-tags="+goRunTag, frunMainName) //, frunPkg.Name()) var buf bytes.Buffer cmd.Stdout = &buf cmd.Stderr = &buf @@ -288,20 +297,6 @@ func gen1(frunName, tmplStr string, tv interface{}) (frun *os.File, err error) { return } -// copied from ../gen.go (keep in sync). -func stripVendor(s string) string { - // HACK: Misbehaviour occurs in go 1.5. May have to re-visit this later. - // if s contains /vendor/ OR startsWith vendor/, then return everything after it. - const vendorStart = "vendor/" - const vendorInline = "/vendor/" - if i := strings.LastIndex(s, vendorInline); i >= 0 { - s = s[i+len(vendorInline):] - } else if strings.HasPrefix(s, vendorStart) { - s = s[len(vendorStart):] - } - return s -} - func main() { o := flag.String("o", "", "out file") c := flag.String("c", genCodecPath, "codec path") @@ -311,10 +306,10 @@ func main() { rt := flag.String("rt", "", "tags for go run") st := flag.String("st", "codec,json", "struct tag keys to introspect") x := flag.Bool("x", false, "keep temp file") - _ = flag.Bool("u", false, "*IGNORED - kept for backwards compatibility*: Allow unsafe use") + u := flag.Bool("u", false, "Use unsafe, e.g. to avoid unnecessary allocation on []byte->string") d := flag.Int64("d", 0, "random identifier for use in generated code") flag.Parse() - if err := Generate(*o, *t, *c, *d, *rt, *st, + if err := Generate(*o, *t, *c, *d, *u, *rt, *st, regexp.MustCompile(*r), regexp.MustCompile(*nr), !*x, flag.Args()...); err != nil { fmt.Fprintf(os.Stderr, "codecgen error: %v\n", err) os.Exit(1) diff --git a/vendor/github.com/ugorji/go/codec/decode.go b/vendor/github.com/ugorji/go/codec/decode.go index 2cb0b4e3a..52c1dfe83 100644 --- a/vendor/github.com/ugorji/go/codec/decode.go +++ b/vendor/github.com/ugorji/go/codec/decode.go @@ -38,13 +38,6 @@ type decReader interface { numread() int // number of bytes read track() stopTrack() []byte - - // skip will skip any byte that matches, and return the first non-matching byte - skip(accept *[256]bool) (token byte) - // readTo will read any byte that matches, stopping once no-longer matching. - readTo(in []byte, accept *[256]bool) (out []byte) - // readUntil will read, only stopping once it matches the 'stop' byte. - readUntil(in []byte, stop byte) (out []byte) } type decReaderByteScanner interface { @@ -55,10 +48,6 @@ type decReaderByteScanner interface { type decDriver interface { // this will check if the next token is a break. CheckBreak() bool - // Note: TryDecodeAsNil should be careful not to share any temporary []byte with - // the rest of the decDriver. This is because sometimes, we optimize by holding onto - // a transient []byte, and ensuring the only other call we make to the decDriver - // during that time is maybe a TryDecodeAsNil() call. TryDecodeAsNil() bool // vt is one of: Bytes, String, Nil, Slice or Map. Return unSet if not known. ContainerType() (vt valueType) @@ -87,12 +76,10 @@ type decDriver interface { // return a pre-stored string value, meaning that it can bypass // the cost of []byte->string conversion. DecodeString() (s string) - DecodeStringAsBytes() (v []byte) // DecodeBytes may be called directly, without going through reflection. // Consequently, it must be designed to handle possible nil. - DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) - // DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) + DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) // decodeExt will decode into a *RawExt or into an extension. DecodeExt(v interface{}, xtag uint64, ext Ext) (realxtag uint64) @@ -120,10 +107,10 @@ type DecodeOptions struct { // If nil, we use []interface{} SliceType reflect.Type - // MaxInitLen defines the maxinum initial length that we "make" a collection (string, slice, map, chan). + // MaxInitLen defines the initial length that we "make" a collection (slice, chan or map) with. // If 0 or negative, we default to a sensible value based on the size of an element in the collection. // - // For example, when decoding, a stream may say that it has 2^64 elements. + // For example, when decoding, a stream may say that it has MAX_UINT elements. // We should not auto-matically provision a slice of that length, to prevent Out-Of-Memory crash. // Instead, we provision up to MaxInitLen, fill that up, and start appending after that. MaxInitLen int @@ -174,9 +161,7 @@ type DecodeOptions struct { // look them up from a map (than to allocate them afresh). // // Note: Handles will be smart when using the intern functionality. - // Every string should not be interned. - // An excellent use-case for interning is struct field names, - // or map keys where key type is string. + // So everything will not be interned. InternString bool // PreferArrayOverSlice controls whether to decode to an array or a slice. @@ -325,50 +310,6 @@ func (z *ioDecReader) readn1eof() (b uint8, eof bool) { return } -func (z *ioDecReader) skip(accept *[256]bool) (token byte) { - for { - var eof bool - token, eof = z.readn1eof() - if eof { - return - } - if accept[token] { - continue - } - return - } -} - -func (z *ioDecReader) readTo(in []byte, accept *[256]bool) (out []byte) { - out = in - for { - token, eof := z.readn1eof() - if eof { - return - } - if accept[token] { - out = append(out, token) - } else { - z.unreadn1() - return - } - } -} - -func (z *ioDecReader) readUntil(in []byte, stop byte) (out []byte) { - out = in - for { - token, eof := z.readn1eof() - if eof { - panic(io.EOF) - } - out = append(out, token) - if token == stop { - return - } - } -} - func (z *ioDecReader) unreadn1() { err := z.br.UnreadByte() if err != nil { @@ -445,10 +386,6 @@ func (z *bytesDecReader) readx(n int) (bs []byte) { return } -func (z *bytesDecReader) readb(bs []byte) { - copy(bs, z.readx(len(bs))) -} - func (z *bytesDecReader) readn1() (v uint8) { if z.a == 0 { panic(io.EOF) @@ -470,62 +407,8 @@ func (z *bytesDecReader) readn1eof() (v uint8, eof bool) { return } -func (z *bytesDecReader) skip(accept *[256]bool) (token byte) { - if z.a == 0 { - return - } - for i := z.c; i < len(z.b); i++ { - // fmt.Printf(">>>> skipWhitespace: checking: index: %d, %s\n", i, string(z.b[i])) - if accept[z.b[i]] { - continue - } - // fmt.Printf(">>>> skipWhitespace: returning\n") - token = z.b[i] - i++ - z.a -= (i - z.c) - z.c = i - return - } - z.a, z.c = 0, len(z.b) - return -} - -func (z *bytesDecReader) readTo(in []byte, accept *[256]bool) (out []byte) { - if z.a == 0 { - return - } - for i := z.c; i < len(z.b); i++ { - // fmt.Printf(">>>> readbUntilAny: checking: index: %d, %s\n", i, string(z.b[i])) - if !accept[z.b[i]] { - out = z.b[z.c:i] - // fmt.Printf(">>>> readbUntilAny: returning: %s\n", z.b[z.c:i]) - z.a -= (i - z.c) - z.c = i - return - } - } - out = z.b[z.c:] - z.a, z.c = 0, len(z.b) - return -} - -func (z *bytesDecReader) readUntil(in []byte, stop byte) (out []byte) { - if z.a == 0 { - panic(io.EOF) - } - for i := z.c; i < len(z.b); i++ { - // fmt.Printf(">>>> readbUntilDblQUote: checking: index: %d, %s\n", i, string(z.b[i])) - if z.b[i] == stop { - // fmt.Printf(">>>> readbUntilDblQUote: returning\n") - i++ - out = z.b[z.c:i] - z.a -= (i - z.c) - z.c = i - return - } - } - z.a, z.c = 0, len(z.b) - panic(io.EOF) +func (z *bytesDecReader) readb(bs []byte) { + copy(bs, z.readx(len(bs))) } func (z *bytesDecReader) track() { @@ -554,22 +437,26 @@ type decFn struct { } func (f *decFnInfo) builtin(rv reflect.Value) { - f.d.d.DecodeBuiltin(f.ti.rtid, rv2i(rv.Addr())) + f.d.d.DecodeBuiltin(f.ti.rtid, rv.Addr().Interface()) } func (f *decFnInfo) rawExt(rv reflect.Value) { - f.d.d.DecodeExt(rv2i(rv.Addr()), 0, nil) + f.d.d.DecodeExt(rv.Addr().Interface(), 0, nil) +} + +func (f *decFnInfo) raw(rv reflect.Value) { + rv.SetBytes(f.d.raw()) } func (f *decFnInfo) ext(rv reflect.Value) { - f.d.d.DecodeExt(rv2i(rv.Addr()), f.xfTag, f.xfFn) + f.d.d.DecodeExt(rv.Addr().Interface(), f.xfTag, f.xfFn) } func (f *decFnInfo) getValueForUnmarshalInterface(rv reflect.Value, indir int8) (v interface{}) { if indir == -1 { - v = rv2i(rv.Addr()) + v = rv.Addr().Interface() } else if indir == 0 { - v = rv2i(rv) + v = rv.Interface() } else { for j := int8(0); j < indir; j++ { if rv.IsNil() { @@ -577,7 +464,7 @@ func (f *decFnInfo) getValueForUnmarshalInterface(rv reflect.Value, indir int8) } rv = rv.Elem() } - v = rv2i(rv) + v = rv.Interface() } return } @@ -588,7 +475,7 @@ func (f *decFnInfo) selferUnmarshal(rv reflect.Value) { func (f *decFnInfo) binaryUnmarshal(rv reflect.Value) { bm := f.getValueForUnmarshalInterface(rv, f.ti.bunmIndir).(encoding.BinaryUnmarshaler) - xbs := f.d.d.DecodeBytes(nil, true) + xbs := f.d.d.DecodeBytes(nil, false, true) if fnerr := bm.UnmarshalBinary(xbs); fnerr != nil { panic(fnerr) } @@ -596,7 +483,7 @@ func (f *decFnInfo) binaryUnmarshal(rv reflect.Value) { func (f *decFnInfo) textUnmarshal(rv reflect.Value) { tm := f.getValueForUnmarshalInterface(rv, f.ti.tunmIndir).(encoding.TextUnmarshaler) - fnerr := tm.UnmarshalText(f.d.d.DecodeStringAsBytes()) + fnerr := tm.UnmarshalText(f.d.d.DecodeBytes(f.d.b[:], true, true)) if fnerr != nil { panic(fnerr) } @@ -616,6 +503,66 @@ func (f *decFnInfo) kErr(rv reflect.Value) { f.d.errorf("no decoding function defined for kind %v", rv.Kind()) } +func (f *decFnInfo) kString(rv reflect.Value) { + rv.SetString(f.d.d.DecodeString()) +} + +func (f *decFnInfo) kBool(rv reflect.Value) { + rv.SetBool(f.d.d.DecodeBool()) +} + +func (f *decFnInfo) kInt(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(intBitsize)) +} + +func (f *decFnInfo) kInt64(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(64)) +} + +func (f *decFnInfo) kInt32(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(32)) +} + +func (f *decFnInfo) kInt8(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(8)) +} + +func (f *decFnInfo) kInt16(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(16)) +} + +func (f *decFnInfo) kFloat32(rv reflect.Value) { + rv.SetFloat(f.d.d.DecodeFloat(true)) +} + +func (f *decFnInfo) kFloat64(rv reflect.Value) { + rv.SetFloat(f.d.d.DecodeFloat(false)) +} + +func (f *decFnInfo) kUint8(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(8)) +} + +func (f *decFnInfo) kUint64(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(64)) +} + +func (f *decFnInfo) kUint(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(uintBitsize)) +} + +func (f *decFnInfo) kUintptr(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(uintBitsize)) +} + +func (f *decFnInfo) kUint32(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(32)) +} + +func (f *decFnInfo) kUint16(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(16)) +} + // func (f *decFnInfo) kPtr(rv reflect.Value) { // debugf(">>>>>>> ??? decode kPtr called - shouldn't get called") // if rv.IsNil() { @@ -653,14 +600,14 @@ func (f *decFnInfo) kInterfaceNaked() (rvn reflect.Value) { n.ms = append(n.ms, nil) var v2 interface{} = &n.ms[l] d.decode(v2) - rvn = d.np.get(v2) + rvn = reflect.ValueOf(v2).Elem() n.ms = n.ms[:l] } else if d.mtid == mapStrIntfTypId { // for json performance l := len(n.ns) n.ns = append(n.ns, nil) var v2 interface{} = &n.ns[l] d.decode(v2) - rvn = d.np.get(v2) + rvn = reflect.ValueOf(v2).Elem() n.ns = n.ns[:l] } else { rvn = reflect.New(d.h.MapType).Elem() @@ -674,12 +621,9 @@ func (f *decFnInfo) kInterfaceNaked() (rvn reflect.Value) { var v2 interface{} = &n.ss[l] d.decode(v2) n.ss = n.ss[:l] + rvn = reflect.ValueOf(v2).Elem() if reflectArrayOfSupported && d.stid == 0 && d.h.PreferArrayOverSlice { - rvn00 := d.np.get(v2) - rvn = reflect.New(reflectArrayOf(rvn00.Len(), intfTyp)).Elem() - reflect.Copy(rvn, rvn00) - } else { - rvn = d.np.get(v2) + rvn = reflectArrayOf(rvn) } } else { rvn = reflect.New(d.h.SliceType).Elem() @@ -706,27 +650,27 @@ func (f *decFnInfo) kInterfaceNaked() (rvn reflect.Value) { rvnA := reflect.New(bfn.rt) rvn = rvnA.Elem() if bytes != nil { - bfn.ext.ReadExt(rv2i(rvnA), bytes) + bfn.ext.ReadExt(rvnA.Interface(), bytes) } else { - bfn.ext.UpdateExt(rv2i(rvnA), v) + bfn.ext.UpdateExt(rvnA.Interface(), v) } } case valueTypeNil: // no-op case valueTypeInt: - rvn = d.np.get(&n.i) + rvn = reflect.ValueOf(&n.i).Elem() case valueTypeUint: - rvn = d.np.get(&n.u) + rvn = reflect.ValueOf(&n.u).Elem() case valueTypeFloat: - rvn = d.np.get(&n.f) + rvn = reflect.ValueOf(&n.f).Elem() case valueTypeBool: - rvn = d.np.get(&n.b) + rvn = reflect.ValueOf(&n.b).Elem() case valueTypeString, valueTypeSymbol: - rvn = d.np.get(&n.s) + rvn = reflect.ValueOf(&n.s).Elem() case valueTypeBytes: - rvn = d.np.get(&n.l) + rvn = reflect.ValueOf(&n.l).Elem() case valueTypeTimestamp: - rvn = d.np.get(&n.t) + rvn = reflect.ValueOf(&n.t).Elem() default: panic(fmt.Errorf("kInterfaceNaked: unexpected valueType: %d", n.v)) } @@ -790,28 +734,50 @@ func (f *decFnInfo) kStruct(rv reflect.Value) { } tisfi := fti.sfi hasLen := containerLen >= 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - // rvkencname := dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapKey) - } - rvkencnameB := dd.DecodeStringAsBytes() - rvkencname := stringView(rvkencnameB) - // rvksi := ti.getForEncName(rvkencname) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if k := fti.indexForEncName(rvkencname); k > -1 { - si := tisfi[k] - if dd.TryDecodeAsNil() { - si.setToZeroValue(rv) - } else { - d.decodeValue(si.field(rv, true), nil) + if hasLen { + for j := 0; j < containerLen; j++ { + // rvkencname := dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + rvkencname := stringView(dd.DecodeBytes(f.d.b[:], true, true)) + // rvksi := ti.getForEncName(rvkencname) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if k := fti.indexForEncName(rvkencname); k > -1 { + si := tisfi[k] + if dd.TryDecodeAsNil() { + si.setToZeroValue(rv) + } else { + d.decodeValue(si.field(rv, true), nil) + } + } else { + d.structFieldNotFound(-1, rvkencname) + } + } + } else { + for j := 0; !dd.CheckBreak(); j++ { + // rvkencname := dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + rvkencname := stringView(dd.DecodeBytes(f.d.b[:], true, true)) + // rvksi := ti.getForEncName(rvkencname) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if k := fti.indexForEncName(rvkencname); k > -1 { + si := tisfi[k] + if dd.TryDecodeAsNil() { + si.setToZeroValue(rv) + } else { + d.decodeValue(si.field(rv, true), nil) + } + } else { + d.structFieldNotFound(-1, rvkencname) } - } else { - d.structFieldNotFound(-1, rvkencname) } - // keepAlive4StringView(rvkencnameB) // maintain ref 4 stringView // not needed, as reference is outside loop } if cr != nil { cr.sendContainerState(containerMapEnd) @@ -828,7 +794,11 @@ func (f *decFnInfo) kStruct(rv reflect.Value) { // Arrays are not used as much for structs. hasLen := containerLen >= 0 for j, si := range fti.sfip { - if (hasLen && j == containerLen) || (!hasLen && dd.CheckBreak()) { + if hasLen { + if j == containerLen { + break + } + } else if dd.CheckBreak() { break } if cr != nil { @@ -872,14 +842,14 @@ func (f *decFnInfo) kSlice(rv reflect.Value) { f.d.errorf("bytes or string in the stream must be decoded into a slice or array of bytes, not %v", ti.rt) } if f.seq == seqTypeChan { - bs2 := dd.DecodeBytes(nil, true) - ch := rv2i(rv).(chan<- byte) + bs2 := dd.DecodeBytes(nil, false, true) + ch := rv.Interface().(chan<- byte) for _, b := range bs2 { ch <- b } } else { rvbs := rv.Bytes() - bs2 := dd.DecodeBytes(rvbs, false) + bs2 := dd.DecodeBytes(rvbs, false, false) if rvbs == nil && bs2 != nil || rvbs != nil && bs2 == nil || len(bs2) != len(rvbs) { if rv.CanSet() { rv.SetBytes(bs2) @@ -897,26 +867,21 @@ func (f *decFnInfo) kSlice(rv reflect.Value) { // // an array can never return a nil slice. so no need to check f.array here. if containerLenS == 0 { - if rv.CanSet() { - if f.seq == seqTypeSlice { - if rv.IsNil() { - rv.Set(reflect.MakeSlice(ti.rt, 0, 0)) - } else { - rv.SetLen(0) - } - } else if f.seq == seqTypeChan { - if rv.IsNil() { - rv.Set(reflect.MakeChan(ti.rt, 0)) - } + if f.seq == seqTypeSlice { + if rv.IsNil() { + rv.Set(reflect.MakeSlice(ti.rt, 0, 0)) + } else { + rv.SetLen(0) + } + } else if f.seq == seqTypeChan { + if rv.IsNil() { + rv.Set(reflect.MakeChan(ti.rt, 0)) } } slh.End() return } - rtelem0Size := int(rtelem0.Size()) - rtelem0Mut := !isImmutableKind(rtelem0.Kind()) - // rtelem0Kind := rtelem0.Kind() rtelem := rtelem0 for rtelem.Kind() == reflect.Ptr { rtelem = rtelem.Elem() @@ -928,110 +893,127 @@ func (f *decFnInfo) kSlice(rv reflect.Value) { rvChanged := false // for j := 0; j < containerLenS; j++ { - rvlen := rv.Len() - rvcap := rv.Cap() - hasLen := containerLenS > 0 - if hasLen && f.seq == seqTypeSlice { - if containerLenS > rvcap { - oldRvlenGtZero := rvlen > 0 - rvlen = decInferLen(containerLenS, f.d.h.MaxInitLen, int(rtelem0.Size())) - if rvlen <= rvcap { - if rv.CanSet() { - rv.SetLen(rvlen) - } else { - rv = rv.Slice(0, rvlen) - rvChanged = true - } - } else { - rv = reflect.MakeSlice(ti.rt, rvlen, rvlen) - rvcap = rvlen - rvChanged = true - } - if rvChanged && oldRvlenGtZero && !isImmutableKind(rtelem0.Kind()) { - reflect.Copy(rv, rv0) // only copy up to length NOT cap i.e. rv0.Slice(0, rvcap) - } - } else if containerLenS != rvlen { - rvlen = containerLenS - if rv.CanSet() { - rv.SetLen(rvlen) - } else { - rv = rv.Slice(0, rvlen) - rvChanged = true - } - } - } - // consider creating new element once, and just decoding into it. - var rtelem0Zero reflect.Value - var rtelem0ZeroValid bool - var j int - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && (f.seq == seqTypeSlice || f.seq == seqTypeChan) && rv.IsNil() { - if hasLen { - rvlen = decInferLen(containerLenS, f.d.h.MaxInitLen, rtelem0Size) - } else { - rvlen = 8 - } - if f.seq == seqTypeSlice { - rv = reflect.MakeSlice(ti.rt, rvlen, rvlen) - rvChanged = true - } else if f.seq == seqTypeChan { + var rvlen int + if containerLenS > 0 { // hasLen + if f.seq == seqTypeChan { + if rv.IsNil() { + rvlen, _ = decInferLen(containerLenS, f.d.h.MaxInitLen, int(rtelem0.Size())) rv.Set(reflect.MakeChan(ti.rt, rvlen)) } - } - if f.seq == seqTypeChan { - slh.ElemContainerState(j) - if rtelem0Mut || !rv9.IsValid() { + // handle chan specially: + for j := 0; j < containerLenS; j++ { rv9 = reflect.New(rtelem0).Elem() - } - d.decodeValue(rv9, fn) - rv.Send(rv9) - } else { - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= rvlen { - if f.seq == seqTypeArray { - d.arrayCannotExpand(rvlen, j+1) - decodeIntoBlank = true - } else { // if f.seq == seqTypeSlice - // rv = reflect.Append(rv, reflect.Zero(rtelem0)) // uses append logic, plus varargs - var rvcap2 int - rv9, rvcap2, rvChanged = decExpandSliceRV(rv, ti.rt, rtelem0Size, 1, rvlen, rvcap) - rvlen++ - if rvChanged { - rv = rv9 - rvcap = rvcap2 - } - } - } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { - rv9 = rv.Index(j) - // rv.Index(rv.Len() - 1).Set(reflect.Zero(rtelem0)) - if resetSliceElemToZeroValue { - if !rtelem0ZeroValid { - rtelem0ZeroValid = true - rtelem0Zero = reflect.Zero(rtelem0) - } - rv9.Set(rtelem0Zero) - } + slh.ElemContainerState(j) d.decodeValue(rv9, fn) + rv.Send(rv9) + } + } else { // slice or array + var truncated bool // says len of sequence is not same as expected number of elements + numToRead := containerLenS // if truncated, reset numToRead + + rvcap := rv.Cap() + rvlen = rv.Len() + if containerLenS > rvcap { + if f.seq == seqTypeArray { + d.arrayCannotExpand(rvlen, containerLenS) + } else { + oldRvlenGtZero := rvlen > 0 + rvlen, truncated = decInferLen(containerLenS, f.d.h.MaxInitLen, int(rtelem0.Size())) + if truncated { + if rvlen <= rvcap { + rv.SetLen(rvlen) + } else { + rv = reflect.MakeSlice(ti.rt, rvlen, rvlen) + rvChanged = true + } + } else { + rv = reflect.MakeSlice(ti.rt, rvlen, rvlen) + rvChanged = true + } + if rvChanged && oldRvlenGtZero && !isImmutableKind(rtelem0.Kind()) { + reflect.Copy(rv, rv0) // only copy up to length NOT cap i.e. rv0.Slice(0, rvcap) + } + rvcap = rvlen + } + numToRead = rvlen + } else if containerLenS != rvlen { + if f.seq == seqTypeSlice { + rv.SetLen(containerLenS) + rvlen = containerLenS + } + } + j := 0 + // we read up to the numToRead + for ; j < numToRead; j++ { + slh.ElemContainerState(j) + d.decodeValue(rv.Index(j), fn) + } + + // if slice, expand and read up to containerLenS (or EOF) iff truncated + // if array, swallow all the rest. + + if f.seq == seqTypeArray { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } else if truncated { // slice was truncated, as chan NOT in this block + for ; j < containerLenS; j++ { + rv = expandSliceValue(rv, 1) + rv9 = rv.Index(j) + if resetSliceElemToZeroValue { + rv9.Set(reflect.Zero(rtelem0)) + } + slh.ElemContainerState(j) + d.decodeValue(rv9, fn) + } } } - } - if f.seq == seqTypeSlice { - if j < rvlen { - if rv.CanSet() { - rv.SetLen(j) + } else { + rvlen = rv.Len() + j := 0 + for ; !dd.CheckBreak(); j++ { + if f.seq == seqTypeChan { + slh.ElemContainerState(j) + rv9 = reflect.New(rtelem0).Elem() + d.decodeValue(rv9, fn) + rv.Send(rv9) } else { - rv = rv.Slice(0, j) + // if indefinite, etc, then expand the slice if necessary + var decodeIntoBlank bool + if j >= rvlen { + if f.seq == seqTypeArray { + d.arrayCannotExpand(rvlen, j+1) + decodeIntoBlank = true + } else { // if f.seq == seqTypeSlice + // rv = reflect.Append(rv, reflect.Zero(rtelem0)) // uses append logic, plus varargs + rv = expandSliceValue(rv, 1) + rv9 = rv.Index(j) + // rv.Index(rv.Len() - 1).Set(reflect.Zero(rtelem0)) + if resetSliceElemToZeroValue { + rv9.Set(reflect.Zero(rtelem0)) + } + rvlen++ + rvChanged = true + } + } else { // slice or array + rv9 = rv.Index(j) + } + slh.ElemContainerState(j) + if decodeIntoBlank { + d.swallow() + } else { // seqTypeSlice + d.decodeValue(rv9, fn) + } + } + } + if f.seq == seqTypeSlice { + if j < rvlen { + rv.SetLen(j) + } else if j == 0 && rv.IsNil() { + rv = reflect.MakeSlice(ti.rt, 0, 0) rvChanged = true } - rvlen = j - } else if j == 0 && rv.IsNil() { - rv = reflect.MakeSlice(ti.rt, 0, 0) - rvChanged = true } } slh.End() @@ -1053,7 +1035,7 @@ func (f *decFnInfo) kMap(rv reflect.Value) { cr := d.cr ti := f.ti if rv.IsNil() { - rv.Set(makeMapReflect(ti.rt, containerLen)) + rv.Set(reflect.MakeMap(ti.rt)) } if containerLen == 0 { @@ -1064,7 +1046,7 @@ func (f *decFnInfo) kMap(rv reflect.Value) { } ktype, vtype := ti.rt.Key(), ti.rt.Elem() - ktypeId := rt2id(ktype) + ktypeId := reflect.ValueOf(ktype).Pointer() vtypeKind := vtype.Kind() var keyFn, valFn *decFn var xtyp reflect.Type @@ -1075,7 +1057,6 @@ func (f *decFnInfo) kMap(rv reflect.Value) { } valFn = d.getDecFn(xtyp, true, true) var mapGet, mapSet bool - rvvImmut := isImmutableKind(vtypeKind) if !f.d.h.MapValueReset { // if pointer, mapGet = true // if interface, mapGet = true if !DecodeNakedAlways (else false) @@ -1087,95 +1068,107 @@ func (f *decFnInfo) kMap(rv reflect.Value) { if !f.d.h.InterfaceReset { mapGet = true } - } else if !rvvImmut { + } else if !isImmutableKind(vtypeKind) { mapGet = true } } var rvk, rvv, rvz reflect.Value - rvkMut := !isImmutableKind(ktype.Kind()) // if ktype is immutable, then re-use the same rvk. - ktypeIsString := ktypeId == stringTypId - // ktypeIsString = false - ktypeIsIntf := ktypeId == intfTypId - hasLen := containerLen > 0 - var kstrbs []byte - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) - } - if rvkMut || !rvk.IsValid() { + + // for j := 0; j < containerLen; j++ { + if containerLen > 0 { + for j := 0; j < containerLen; j++ { rvk = reflect.New(ktype).Elem() - } - if ktypeIsString { - kstrbs = dd.DecodeStringAsBytes() - // fmt.Printf(">>>> decode: kMap: kstring: %s\n", kstrbs) - rvk.SetString(stringView(kstrbs)) - // NOTE: if doing an insert, you MUST use a real string (not stringview) - } else { + if cr != nil { + cr.sendContainerState(containerMapKey) + } d.decodeValue(rvk, keyFn) + // special case if a byte array. - if ktypeIsIntf { + if ktypeId == intfTypId { rvk = rvk.Elem() if rvk.Type() == uint8SliceTyp { rvk = reflect.ValueOf(d.string(rvk.Bytes())) } } - } - - if cr != nil { - cr.sendContainerState(containerMapValue) - } - - // Brittle, but OK per TryDecodeAsNil() contract. - // i.e. TryDecodeAsNil never shares slices with other decDriver procedures - if dd.TryDecodeAsNil() { - if ktypeIsString { - rvk.SetString(d.string(kstrbs)) + mapSet = true // set to false if u do a get, and its a pointer, and exists + if mapGet { + rvv = rv.MapIndex(rvk) + if rvv.IsValid() { + if vtypeKind == reflect.Ptr { + mapSet = false + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz } - rv.SetMapIndex(rvk, reflect.Value{}) // delete the mapping - continue - } - - mapSet = true // set to false if u do a get, and its a pointer, and exists - if mapGet { - rvv = rv.MapIndex(rvk) - if !rvv.IsValid() { - rvv = reflect.New(vtype).Elem() - } else if vtypeKind == reflect.Ptr { - mapSet = false - } - // if rvv.IsValid() { - // if vtypeKind == reflect.Ptr { - // mapSet = false - // } - // } else { - // rvv = reflect.New(vtype).Elem() - // } - } else if rvvImmut { - if !rvz.IsValid() { - rvz = reflect.New(vtype).Elem() - } - rvv = rvz - } else { - rvv = reflect.New(vtype).Elem() - } - - // We MUST be done with the stringview of the key, before decoding the value - // so that we don't bastardize the reused byte array. - if mapSet { - if ktypeIsString { - rvk.SetString(d.string(kstrbs)) + if cr != nil { + cr.sendContainerState(containerMapValue) } d.decodeValue(rvv, valFn) - rv.SetMapIndex(rvk, rvv) - } else { - d.decodeValue(rvv, valFn) + if mapSet { + rv.SetMapIndex(rvk, rvv) + } + } + } else { + for j := 0; !dd.CheckBreak(); j++ { + rvk = reflect.New(ktype).Elem() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + d.decodeValue(rvk, keyFn) + + // special case if a byte array. + if ktypeId == intfTypId { + rvk = rvk.Elem() + if rvk.Type() == uint8SliceTyp { + rvk = reflect.ValueOf(d.string(rvk.Bytes())) + } + } + mapSet = true // set to false if u do a get, and its a pointer, and exists + if mapGet { + rvv = rv.MapIndex(rvk) + if rvv.IsValid() { + if vtypeKind == reflect.Ptr { + mapSet = false + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + d.decodeValue(rvv, valFn) + if mapSet { + rv.SetMapIndex(rvk, rvv) + } } - // if ktypeIsString { - // // keepAlive4StringView(kstrbs) // not needed, as reference is outside loop - // } } - if cr != nil { cr.sendContainerState(containerMapEnd) } @@ -1245,11 +1238,6 @@ func (n *decNaked) reset() { } } -type rtid2rv struct { - rtid uintptr - rv reflect.Value -} - // A Decoder reads and decodes an object from an input stream in the codec format. type Decoder struct { // hopefully, reduce derefencing cost by laying the decReader inside the Decoder. @@ -1281,10 +1269,8 @@ type Decoder struct { stid uintptr n decNaked - np ptrToRvMap b [scratchByteArrayLen]byte is map[string]string // used for interning strings - zc []rtid2rv // zero-valued cache } // NewDecoder returns a Decoder for decoding a stream of bytes from an io.Reader. @@ -1307,7 +1293,6 @@ func NewDecoderBytes(in []byte, h Handle) *Decoder { func newDecoder(h Handle) *Decoder { d := &Decoder{hh: h, h: h.getBasicHandle(), be: h.isBinary()} - d.np.init() n := &d.n // n.rs = n.ra[:0] n.ms = n.ma[:0] @@ -1331,10 +1316,10 @@ func (d *Decoder) resetCommon() { // but could be changed. d.mtid, d.stid = 0, 0 if d.h.MapType != nil { - d.mtid = rt2id(d.h.MapType) + d.mtid = reflect.ValueOf(d.h.MapType).Pointer() } if d.h.SliceType != nil { - d.stid = rt2id(d.h.SliceType) + d.stid = reflect.ValueOf(d.h.SliceType).Pointer() } } @@ -1353,7 +1338,6 @@ func (d *Decoder) Reset(r io.Reader) { func (d *Decoder) ResetBytes(in []byte) { // d.s = d.sa[:0] - d.bytes = true d.rb.reset(in) d.r = &d.rb d.resetCommon() @@ -1421,11 +1405,11 @@ func (d *Decoder) Decode(v interface{}) (err error) { return } -// // this is not a smart swallow, as it allocates objects and does unnecessary work. -// func (d *Decoder) swallowViaHammer() { -// var blank interface{} -// d.decodeValue(reflect.ValueOf(&blank).Elem(), nil) -// } +// this is not a smart swallow, as it allocates objects and does unnecessary work. +func (d *Decoder) swallowViaHammer() { + var blank interface{} + d.decodeValue(reflect.ValueOf(&blank).Elem(), nil) +} func (d *Decoder) swallow() { // smarter decode that just swallows the content @@ -1437,9 +1421,15 @@ func (d *Decoder) swallow() { switch dd.ContainerType() { case valueTypeMap: containerLen := dd.ReadMapStart() - hasLen := containerLen >= 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - // if clenGtEqualZero {if j >= containerLen {break} } else if dd.CheckBreak() {break} + clenGtEqualZero := containerLen >= 0 + for j := 0; ; j++ { + if clenGtEqualZero { + if j >= containerLen { + break + } + } else if dd.CheckBreak() { + break + } if cr != nil { cr.sendContainerState(containerMapKey) } @@ -1453,9 +1443,16 @@ func (d *Decoder) swallow() { cr.sendContainerState(containerMapEnd) } case valueTypeArray: - containerLen := dd.ReadArrayStart() - hasLen := containerLen >= 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { + containerLenS := dd.ReadArrayStart() + clenGtEqualZero := containerLenS >= 0 + for j := 0; ; j++ { + if clenGtEqualZero { + if j >= containerLenS { + break + } + } else if dd.CheckBreak() { + break + } if cr != nil { cr.sendContainerState(containerArrayElem) } @@ -1465,9 +1462,10 @@ func (d *Decoder) swallow() { cr.sendContainerState(containerArrayEnd) } case valueTypeBytes: - dd.DecodeBytes(d.b[:], true) + dd.DecodeBytes(d.b[:], false, true) case valueTypeString: - dd.DecodeStringAsBytes() + dd.DecodeBytes(d.b[:], true, true) + // dd.DecodeStringAsBytes(d.b[:]) default: // these are all primitives, which we can get from decodeNaked // if RawExt using Value, complete the processing. @@ -1565,7 +1563,7 @@ func (d *Decoder) decode(iv interface{}) { d.errNotValidPtrValue(v) } // d.chkPtrValue(v) - d.decodeValueNotNil(v.Elem()) + d.decodeValueNotNil(v.Elem(), nil) case *string: *v = d.d.DecodeString() @@ -1596,13 +1594,13 @@ func (d *Decoder) decode(iv interface{}) { case *float64: *v = d.d.DecodeFloat(false) case *[]uint8: - *v = d.d.DecodeBytes(*v, false) + *v = d.d.DecodeBytes(*v, false, false) case *Raw: *v = d.raw() case *interface{}: - d.decodeValueNotNil(reflect.ValueOf(iv).Elem()) + d.decodeValueNotNil(reflect.ValueOf(iv).Elem(), nil) default: if !fastpathDecodeTypeSwitch(iv, d) { @@ -1613,7 +1611,8 @@ func (d *Decoder) decode(iv interface{}) { func (d *Decoder) preDecodeValue(rv reflect.Value, tryNil bool) (rv2 reflect.Value, proceed bool) { if tryNil && d.d.TryDecodeAsNil() { - // No need to check if a ptr, recursively, to determine whether to set value to nil. + // No need to check if a ptr, recursively, to determine + // whether to set value to nil. // Just always set value to its zero type. if rv.IsValid() { // rv.CanSet() // always settable, except it's invalid rv.Set(reflect.Zero(rv.Type())) @@ -1656,15 +1655,17 @@ func (d *Decoder) decodeValue(rv reflect.Value, fn *decFn) { } } -func (d *Decoder) decodeValueNotNil(rv reflect.Value) { +func (d *Decoder) decodeValueNotNil(rv reflect.Value, fn *decFn) { if rv, proceed := d.preDecodeValue(rv, false); proceed { - fn := d.getDecFn(rv.Type(), true, true) + if fn == nil { + fn = d.getDecFn(rv.Type(), true, true) + } fn.f(&fn.i, rv) } } func (d *Decoder) getDecFn(rt reflect.Type, checkFastpath, checkCodecSelfer bool) (fn *decFn) { - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() // retrieve or register a focus'ed function for this type // to eliminate need to do the retrieval multiple times @@ -1749,7 +1750,7 @@ func (d *Decoder) getDecFn(rt reflect.Type, checkFastpath, checkCodecSelfer bool } else { rtu = reflect.SliceOf(rt.Elem()) } - rtuid := rt2id(rtu) + rtuid := reflect.ValueOf(rtu).Pointer() if idx := fastpathAV.index(rtuid); idx != -1 { xfnf := fastpathAV[idx].decfn xrt := fastpathAV[idx].rt @@ -1855,7 +1856,7 @@ func (d *Decoder) errNotValidPtrValue(rv reflect.Value) { d.errorf("cannot decode into a value without an interface: %v", rv) return } - rvi := rv2i(rv) + rvi := rv.Interface() d.errorf("cannot decode into non-pointer or nil pointer. Got: %v, %T, %v", rv.Kind(), rvi, rvi) } @@ -1871,27 +1872,23 @@ func (d *Decoder) errorf(format string, params ...interface{}) { panic(err) } -// Possibly get an interned version of a string -// -// This should mostly be used for map keys, where the key type is string. -// This is because keys of a map/struct are typically reused across many objects. func (d *Decoder) string(v []byte) (s string) { - if d.is == nil { - return string(v) // don't return stringView, as we need a real string here. + if d.is != nil { + s, ok := d.is[string(v)] // no allocation here. + if !ok { + s = string(v) + d.is[s] = s + } + return s } - s, ok := d.is[string(v)] // no allocation here, per go implementation - if !ok { - s = string(v) // new allocation here - d.is[s] = s - } - return s + return string(v) // don't return stringView, as we need a real string here. } -// func (d *Decoder) intern(s string) { -// if d.is != nil { -// d.is[s] = s -// } -// } +func (d *Decoder) intern(s string) { + if d.is != nil { + d.is[s] = s + } +} // nextValueBytes returns the next value in the stream as a set of bytes. func (d *Decoder) nextValueBytes() []byte { @@ -1964,31 +1961,18 @@ func (x decSliceHelper) ElemContainerState(index int) { } } -func decByteSlice(r decReader, clen, maxInitLen int, bs []byte) (bsOut []byte) { +func decByteSlice(r decReader, clen int, bs []byte) (bsOut []byte) { if clen == 0 { return zeroByteSlice } if len(bs) == clen { bsOut = bs - r.readb(bsOut) } else if cap(bs) >= clen { bsOut = bs[:clen] - r.readb(bsOut) } else { - // bsOut = make([]byte, clen) - len2 := decInferLen(clen, maxInitLen, 1) - bsOut = make([]byte, len2) - r.readb(bsOut) - for len2 < clen { - len3 := decInferLen(clen-len2, maxInitLen, 1) - // fmt.Printf(">>>>> TESTING: in loop: clen: %v, maxInitLen: %v, len2: %v, len3: %v\n", clen, maxInitLen, len2, len3) - bs3 := bsOut - bsOut = make([]byte, len2+len3) - copy(bsOut, bs3) - r.readb(bsOut[len2:]) - len2 += len3 - } + bsOut = make([]byte, clen) } + r.readb(bsOut) return } @@ -2012,7 +1996,7 @@ func detachZeroCopyBytes(isBytesReader bool, dest []byte, in []byte) (out []byte // - maxlen: max length to be returned. // if <= 0, it is unset, and we infer it based on the unit size // - unit: number of bytes for each element of the collection -func decInferLen(clen, maxlen, unit int) (rvlen int) { +func decInferLen(clen, maxlen, unit int) (rvlen int, truncated bool) { // handle when maxlen is not set i.e. <= 0 if clen <= 0 { return @@ -2031,6 +2015,7 @@ func decInferLen(clen, maxlen, unit int) (rvlen int) { } if clen > maxlen { rvlen = maxlen + truncated = true } else { rvlen = clen } @@ -2046,31 +2031,6 @@ func decInferLen(clen, maxlen, unit int) (rvlen int) { // return } -func decExpandSliceRV(s reflect.Value, st reflect.Type, stElemSize, num, slen, scap int) ( - s2 reflect.Value, scap2 int, changed bool) { - // fmt.Printf("dec-expand-slice-rv: %v, %v\n", s, st) - l1 := slen + num // new slice length - if l1 < slen { - panic("expandSlice: slice overflow") - } - if l1 <= scap { - if s.CanSet() { - s.SetLen(l1) - } else { - s2 = s.Slice(0, l1) - scap2 = scap - changed = true - } - return - } - scap2 = growCap(scap, stElemSize, num) - s2 = reflect.MakeSlice(st, l1, scap2) - changed = true - // println("expandslicevalue: cap-old: ", c0, ", cap-new: ", c1, ", len-new: ", l1) - reflect.Copy(s2, s) - return -} - // // implement overall decReader wrapping both, for possible use inline: // type decReaderT struct { // bytes bool diff --git a/vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go b/vendor/github.com/ugorji/go/codec/decode_go.go similarity index 59% rename from vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go rename to vendor/github.com/ugorji/go/codec/decode_go.go index 7567e2c07..ba289cef6 100644 --- a/vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go +++ b/vendor/github.com/ugorji/go/codec/decode_go.go @@ -9,6 +9,8 @@ import "reflect" const reflectArrayOfSupported = true -func reflectArrayOf(count int, elem reflect.Type) reflect.Type { - return reflect.ArrayOf(count, elem) +func reflectArrayOf(rvn reflect.Value) (rvn2 reflect.Value) { + rvn2 = reflect.New(reflect.ArrayOf(rvn.Len(), intfTyp)).Elem() + reflect.Copy(rvn2, rvn) + return } diff --git a/vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go b/vendor/github.com/ugorji/go/codec/decode_go14.go similarity index 64% rename from vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go rename to vendor/github.com/ugorji/go/codec/decode_go14.go index ec94bd0c0..50063bc8f 100644 --- a/vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go +++ b/vendor/github.com/ugorji/go/codec/decode_go14.go @@ -9,6 +9,6 @@ import "reflect" const reflectArrayOfSupported = false -func reflectArrayOf(count int, elem reflect.Type) reflect.Type { - panic("codec: reflect.ArrayOf unsupported in this go version") +func reflectArrayOf(rvn reflect.Value) (rvn2 reflect.Value) { + panic("reflect.ArrayOf unsupported") } diff --git a/vendor/github.com/ugorji/go/codec/encode.go b/vendor/github.com/ugorji/go/codec/encode.go index a9fa72f92..c2cef812e 100644 --- a/vendor/github.com/ugorji/go/codec/encode.go +++ b/vendor/github.com/ugorji/go/codec/encode.go @@ -313,21 +313,21 @@ type encFnInfo struct { } func (f *encFnInfo) builtin(rv reflect.Value) { - f.e.e.EncodeBuiltin(f.ti.rtid, rv2i(rv)) + f.e.e.EncodeBuiltin(f.ti.rtid, rv.Interface()) } func (f *encFnInfo) raw(rv reflect.Value) { - f.e.raw(rv2i(rv).(Raw)) + f.e.raw(rv.Interface().(Raw)) } func (f *encFnInfo) rawExt(rv reflect.Value) { - // rev := rv2i(rv).(RawExt) + // rev := rv.Interface().(RawExt) // f.e.e.EncodeRawExt(&rev, f.e) var re *RawExt if rv.CanAddr() { - re = rv2i(rv.Addr()).(*RawExt) + re = rv.Addr().Interface().(*RawExt) } else { - rev := rv2i(rv).(RawExt) + rev := rv.Interface().(RawExt) re = &rev } f.e.e.EncodeRawExt(re, f.e) @@ -338,21 +338,21 @@ func (f *encFnInfo) ext(rv reflect.Value) { if k := rv.Kind(); (k == reflect.Struct || k == reflect.Array) && rv.CanAddr() { rv = rv.Addr() } - f.e.e.EncodeExt(rv2i(rv), f.xfTag, f.xfFn, f.e) + f.e.e.EncodeExt(rv.Interface(), f.xfTag, f.xfFn, f.e) } func (f *encFnInfo) getValueForMarshalInterface(rv reflect.Value, indir int8) (v interface{}, proceed bool) { if indir == 0 { - v = rv2i(rv) + v = rv.Interface() } else if indir == -1 { // If a non-pointer was passed to Encode(), then that value is not addressable. // Take addr if addressable, else copy value to an addressable value. if rv.CanAddr() { - v = rv2i(rv.Addr()) + v = rv.Addr().Interface() } else { rv2 := reflect.New(rv.Type()) rv2.Elem().Set(rv) - v = rv2i(rv2) + v = rv2.Interface() // fmt.Printf("rv.Type: %v, rv2.Type: %v, v: %v\n", rv.Type(), rv2.Type(), v) } } else { @@ -363,7 +363,7 @@ func (f *encFnInfo) getValueForMarshalInterface(rv reflect.Value, indir int8) (v } rv = rv.Elem() } - v = rv2i(rv) + v = rv.Interface() } return v, true } @@ -383,7 +383,7 @@ func (f *encFnInfo) binaryMarshal(rv reflect.Value) { func (f *encFnInfo) textMarshal(rv reflect.Value) { if v, proceed := f.getValueForMarshalInterface(rv, f.ti.tmIndir); proceed { - // debugf(">>>> encoding.TextMarshaler: %T", rv2i(rv)) + // debugf(">>>> encoding.TextMarshaler: %T", rv.Interface()) bs, fnerr := v.(encoding.TextMarshaler).MarshalText() f.e.marshal(bs, fnerr, false, c_UTF8) } @@ -476,10 +476,10 @@ func (f *encFnInfo) kSlice(rv reflect.Value) { bs := e.b[:0] // do not use range, so that the number of elements encoded // does not change, and encoding does not hang waiting on someone to close chan. - // for b := range rv2i(rv).(<-chan byte) { + // for b := range rv.Interface().(<-chan byte) { // bs = append(bs, b) // } - ch := rv2i(rv).(<-chan byte) + ch := rv.Interface().(<-chan byte) for i := 0; i < l; i++ { bs = append(bs, <-ch) } @@ -507,7 +507,7 @@ func (f *encFnInfo) kSlice(rv reflect.Value) { // a concrete type and kInterface will bomb. var fn *encFn if rtelem.Kind() != reflect.Interface { - rtelemid := rt2id(rtelem) + rtelemid := reflect.ValueOf(rtelem).Pointer() fn = e.getEncFn(rtelemid, rtelem, true, true) } // TODO: Consider perf implication of encoding odd index values as symbols if type is string @@ -680,7 +680,7 @@ func (f *encFnInfo) kMap(rv reflect.Value) { ti := f.ti rtkey := ti.rt.Key() rtval := ti.rt.Elem() - rtkeyid := rt2id(rtkey) + rtkeyid := reflect.ValueOf(rtkey).Pointer() // keyTypeIsString := f.ti.rt.Key().Kind() == reflect.String var keyTypeIsString = rtkeyid == stringTypId if keyTypeIsString { @@ -690,7 +690,7 @@ func (f *encFnInfo) kMap(rv reflect.Value) { rtkey = rtkey.Elem() } if rtkey.Kind() != reflect.Interface { - rtkeyid = rt2id(rtkey) + rtkeyid = reflect.ValueOf(rtkey).Pointer() keyFn = e.getEncFn(rtkeyid, rtkey, true, true) } } @@ -698,7 +698,7 @@ func (f *encFnInfo) kMap(rv reflect.Value) { rtval = rtval.Elem() } if rtval.Kind() != reflect.Interface { - rtvalid := rt2id(rtval) + rtvalid := reflect.ValueOf(rtval).Pointer() valFn = e.getEncFn(rtvalid, rtval, true, true) } mks := rv.MapKeys() @@ -1027,8 +1027,6 @@ func (e *Encoder) ResetBytes(out *[]byte) { // However, struct values may encode as arrays. This happens when: // - StructToArray Encode option is set, OR // - the tag on the _struct field sets the "toarray" option -// Note that omitempty is ignored when encoding struct values as arrays, -// as an entry must be encoded for each field, to maintain its position. // // Values with types that implement MapBySlice are encoded as stream maps. // @@ -1055,7 +1053,8 @@ func (e *Encoder) ResetBytes(out *[]byte) { // } // // type MyStruct struct { -// _struct bool `codec:",toarray"` //encode struct as an array +// _struct bool `codec:",omitempty,toarray"` //set omitempty for every field +// //and encode struct as an array // } // // The mode of encoding is based on the type of the value. When a value is seen: @@ -1216,7 +1215,7 @@ func (e *Encoder) doEncodeValue(rv reflect.Value, fn *encFn, sptr uintptr, } if fn == nil { rt := rv.Type() - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() // fn = e.getEncFn(rtid, rt, true, true) fn = e.getEncFn(rtid, rt, checkFastpath, checkCodecSelfer) } @@ -1240,7 +1239,7 @@ func (e *Encoder) encodeValue(rv reflect.Value, fn *encFn) { } func (e *Encoder) getEncFn(rtid uintptr, rt reflect.Type, checkFastpath, checkCodecSelfer bool) (fn *encFn) { - // rtid := rt2id(rt) + // rtid := reflect.ValueOf(rt).Pointer() var ok bool if useMapForCodecCache { fn, ok = e.f[rtid] @@ -1310,7 +1309,7 @@ func (e *Encoder) getEncFn(rtid uintptr, rt reflect.Type, checkFastpath, checkCo } else { rtu = reflect.SliceOf(rt.Elem()) } - rtuid := rt2id(rtu) + rtuid := reflect.ValueOf(rtu).Pointer() if idx := fastpathAV.index(rtuid); idx != -1 { xfnf := fastpathAV[idx].encfn xrt := fastpathAV[idx].rt diff --git a/vendor/github.com/ugorji/go/codec/fast-path.generated.go b/vendor/github.com/ugorji/go/codec/fast-path.generated.go index a1abd55c4..f2e5d2dcf 100644 --- a/vendor/github.com/ugorji/go/codec/fast-path.generated.go +++ b/vendor/github.com/ugorji/go/codec/fast-path.generated.go @@ -86,7 +86,7 @@ func init() { i := 0 fn := func(v interface{}, fe func(*encFnInfo, reflect.Value), fd func(*decFnInfo, reflect.Value)) (f fastpathE) { xrt := reflect.TypeOf(v) - xptr := rt2id(xrt) + xptr := reflect.ValueOf(xrt).Pointer() fastpathAV[i] = fastpathE{xptr, xrt, fe, fd} i++ return @@ -3115,9 +3115,9 @@ func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool { func (f *encFnInfo) fastpathEncSliceIntfR(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceIntfV(rv2i(rv).([]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceIntfV(rv.Interface().([]interface{}), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceIntfV(rv2i(rv).([]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceIntfV(rv.Interface().([]interface{}), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceIntfV(v []interface{}, checkNil bool, e *Encoder) { @@ -3168,9 +3168,9 @@ func (_ fastpathT) EncAsMapSliceIntfV(v []interface{}, checkNil bool, e *Encoder func (f *encFnInfo) fastpathEncSliceStringR(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceStringV(rv2i(rv).([]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceStringV(rv.Interface().([]string), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceStringV(rv2i(rv).([]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceStringV(rv.Interface().([]string), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceStringV(v []string, checkNil bool, e *Encoder) { @@ -3221,9 +3221,9 @@ func (_ fastpathT) EncAsMapSliceStringV(v []string, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceFloat32R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceFloat32V(rv2i(rv).([]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceFloat32V(rv.Interface().([]float32), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceFloat32V(rv2i(rv).([]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceFloat32V(rv.Interface().([]float32), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceFloat32V(v []float32, checkNil bool, e *Encoder) { @@ -3274,9 +3274,9 @@ func (_ fastpathT) EncAsMapSliceFloat32V(v []float32, checkNil bool, e *Encoder) func (f *encFnInfo) fastpathEncSliceFloat64R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceFloat64V(rv2i(rv).([]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceFloat64V(rv.Interface().([]float64), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceFloat64V(rv2i(rv).([]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceFloat64V(rv.Interface().([]float64), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceFloat64V(v []float64, checkNil bool, e *Encoder) { @@ -3327,9 +3327,9 @@ func (_ fastpathT) EncAsMapSliceFloat64V(v []float64, checkNil bool, e *Encoder) func (f *encFnInfo) fastpathEncSliceUintR(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceUintV(rv2i(rv).([]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceUintV(rv.Interface().([]uint), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceUintV(rv2i(rv).([]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceUintV(rv.Interface().([]uint), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceUintV(v []uint, checkNil bool, e *Encoder) { @@ -3380,9 +3380,9 @@ func (_ fastpathT) EncAsMapSliceUintV(v []uint, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceUint16R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceUint16V(rv2i(rv).([]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceUint16V(rv.Interface().([]uint16), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceUint16V(rv2i(rv).([]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceUint16V(rv.Interface().([]uint16), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceUint16V(v []uint16, checkNil bool, e *Encoder) { @@ -3433,9 +3433,9 @@ func (_ fastpathT) EncAsMapSliceUint16V(v []uint16, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceUint32R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceUint32V(rv2i(rv).([]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceUint32V(rv.Interface().([]uint32), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceUint32V(rv2i(rv).([]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceUint32V(rv.Interface().([]uint32), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceUint32V(v []uint32, checkNil bool, e *Encoder) { @@ -3486,9 +3486,9 @@ func (_ fastpathT) EncAsMapSliceUint32V(v []uint32, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceUint64R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceUint64V(rv2i(rv).([]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceUint64V(rv.Interface().([]uint64), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceUint64V(rv2i(rv).([]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceUint64V(rv.Interface().([]uint64), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceUint64V(v []uint64, checkNil bool, e *Encoder) { @@ -3539,9 +3539,9 @@ func (_ fastpathT) EncAsMapSliceUint64V(v []uint64, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceUintptrR(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceUintptrV(rv2i(rv).([]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceUintptrV(rv.Interface().([]uintptr), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceUintptrV(rv2i(rv).([]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceUintptrV(rv.Interface().([]uintptr), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceUintptrV(v []uintptr, checkNil bool, e *Encoder) { @@ -3592,9 +3592,9 @@ func (_ fastpathT) EncAsMapSliceUintptrV(v []uintptr, checkNil bool, e *Encoder) func (f *encFnInfo) fastpathEncSliceIntR(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceIntV(rv2i(rv).([]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceIntV(rv.Interface().([]int), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceIntV(rv2i(rv).([]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceIntV(rv.Interface().([]int), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceIntV(v []int, checkNil bool, e *Encoder) { @@ -3645,9 +3645,9 @@ func (_ fastpathT) EncAsMapSliceIntV(v []int, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceInt8R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceInt8V(rv2i(rv).([]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceInt8V(rv.Interface().([]int8), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceInt8V(rv2i(rv).([]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceInt8V(rv.Interface().([]int8), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceInt8V(v []int8, checkNil bool, e *Encoder) { @@ -3698,9 +3698,9 @@ func (_ fastpathT) EncAsMapSliceInt8V(v []int8, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceInt16R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceInt16V(rv2i(rv).([]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceInt16V(rv.Interface().([]int16), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceInt16V(rv2i(rv).([]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceInt16V(rv.Interface().([]int16), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceInt16V(v []int16, checkNil bool, e *Encoder) { @@ -3751,9 +3751,9 @@ func (_ fastpathT) EncAsMapSliceInt16V(v []int16, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceInt32R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceInt32V(rv2i(rv).([]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceInt32V(rv.Interface().([]int32), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceInt32V(rv2i(rv).([]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceInt32V(rv.Interface().([]int32), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceInt32V(v []int32, checkNil bool, e *Encoder) { @@ -3804,9 +3804,9 @@ func (_ fastpathT) EncAsMapSliceInt32V(v []int32, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceInt64R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceInt64V(rv2i(rv).([]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceInt64V(rv.Interface().([]int64), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceInt64V(rv2i(rv).([]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceInt64V(rv.Interface().([]int64), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceInt64V(v []int64, checkNil bool, e *Encoder) { @@ -3857,9 +3857,9 @@ func (_ fastpathT) EncAsMapSliceInt64V(v []int64, checkNil bool, e *Encoder) { func (f *encFnInfo) fastpathEncSliceBoolR(rv reflect.Value) { if f.ti.mbs { - fastpathTV.EncAsMapSliceBoolV(rv2i(rv).([]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncAsMapSliceBoolV(rv.Interface().([]bool), fastpathCheckNilFalse, f.e) } else { - fastpathTV.EncSliceBoolV(rv2i(rv).([]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncSliceBoolV(rv.Interface().([]bool), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) EncSliceBoolV(v []bool, checkNil bool, e *Encoder) { @@ -3909,7 +3909,7 @@ func (_ fastpathT) EncAsMapSliceBoolV(v []bool, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntfIntfR(rv reflect.Value) { - fastpathTV.EncMapIntfIntfV(rv2i(rv).(map[interface{}]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfIntfV(rv.Interface().(map[interface{}]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfIntfV(v map[interface{}]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -3962,7 +3962,7 @@ func (_ fastpathT) EncMapIntfIntfV(v map[interface{}]interface{}, checkNil bool, } func (f *encFnInfo) fastpathEncMapIntfStringR(rv reflect.Value) { - fastpathTV.EncMapIntfStringV(rv2i(rv).(map[interface{}]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfStringV(rv.Interface().(map[interface{}]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfStringV(v map[interface{}]string, checkNil bool, e *Encoder) { ee := e.e @@ -4015,7 +4015,7 @@ func (_ fastpathT) EncMapIntfStringV(v map[interface{}]string, checkNil bool, e } func (f *encFnInfo) fastpathEncMapIntfUintR(rv reflect.Value) { - fastpathTV.EncMapIntfUintV(rv2i(rv).(map[interface{}]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfUintV(rv.Interface().(map[interface{}]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfUintV(v map[interface{}]uint, checkNil bool, e *Encoder) { ee := e.e @@ -4068,7 +4068,7 @@ func (_ fastpathT) EncMapIntfUintV(v map[interface{}]uint, checkNil bool, e *Enc } func (f *encFnInfo) fastpathEncMapIntfUint8R(rv reflect.Value) { - fastpathTV.EncMapIntfUint8V(rv2i(rv).(map[interface{}]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfUint8V(rv.Interface().(map[interface{}]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfUint8V(v map[interface{}]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -4121,7 +4121,7 @@ func (_ fastpathT) EncMapIntfUint8V(v map[interface{}]uint8, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapIntfUint16R(rv reflect.Value) { - fastpathTV.EncMapIntfUint16V(rv2i(rv).(map[interface{}]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfUint16V(rv.Interface().(map[interface{}]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfUint16V(v map[interface{}]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -4174,7 +4174,7 @@ func (_ fastpathT) EncMapIntfUint16V(v map[interface{}]uint16, checkNil bool, e } func (f *encFnInfo) fastpathEncMapIntfUint32R(rv reflect.Value) { - fastpathTV.EncMapIntfUint32V(rv2i(rv).(map[interface{}]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfUint32V(rv.Interface().(map[interface{}]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfUint32V(v map[interface{}]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -4227,7 +4227,7 @@ func (_ fastpathT) EncMapIntfUint32V(v map[interface{}]uint32, checkNil bool, e } func (f *encFnInfo) fastpathEncMapIntfUint64R(rv reflect.Value) { - fastpathTV.EncMapIntfUint64V(rv2i(rv).(map[interface{}]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfUint64V(rv.Interface().(map[interface{}]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfUint64V(v map[interface{}]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -4280,7 +4280,7 @@ func (_ fastpathT) EncMapIntfUint64V(v map[interface{}]uint64, checkNil bool, e } func (f *encFnInfo) fastpathEncMapIntfUintptrR(rv reflect.Value) { - fastpathTV.EncMapIntfUintptrV(rv2i(rv).(map[interface{}]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfUintptrV(rv.Interface().(map[interface{}]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfUintptrV(v map[interface{}]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -4333,7 +4333,7 @@ func (_ fastpathT) EncMapIntfUintptrV(v map[interface{}]uintptr, checkNil bool, } func (f *encFnInfo) fastpathEncMapIntfIntR(rv reflect.Value) { - fastpathTV.EncMapIntfIntV(rv2i(rv).(map[interface{}]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfIntV(rv.Interface().(map[interface{}]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfIntV(v map[interface{}]int, checkNil bool, e *Encoder) { ee := e.e @@ -4386,7 +4386,7 @@ func (_ fastpathT) EncMapIntfIntV(v map[interface{}]int, checkNil bool, e *Encod } func (f *encFnInfo) fastpathEncMapIntfInt8R(rv reflect.Value) { - fastpathTV.EncMapIntfInt8V(rv2i(rv).(map[interface{}]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfInt8V(rv.Interface().(map[interface{}]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfInt8V(v map[interface{}]int8, checkNil bool, e *Encoder) { ee := e.e @@ -4439,7 +4439,7 @@ func (_ fastpathT) EncMapIntfInt8V(v map[interface{}]int8, checkNil bool, e *Enc } func (f *encFnInfo) fastpathEncMapIntfInt16R(rv reflect.Value) { - fastpathTV.EncMapIntfInt16V(rv2i(rv).(map[interface{}]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfInt16V(rv.Interface().(map[interface{}]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfInt16V(v map[interface{}]int16, checkNil bool, e *Encoder) { ee := e.e @@ -4492,7 +4492,7 @@ func (_ fastpathT) EncMapIntfInt16V(v map[interface{}]int16, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapIntfInt32R(rv reflect.Value) { - fastpathTV.EncMapIntfInt32V(rv2i(rv).(map[interface{}]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfInt32V(rv.Interface().(map[interface{}]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfInt32V(v map[interface{}]int32, checkNil bool, e *Encoder) { ee := e.e @@ -4545,7 +4545,7 @@ func (_ fastpathT) EncMapIntfInt32V(v map[interface{}]int32, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapIntfInt64R(rv reflect.Value) { - fastpathTV.EncMapIntfInt64V(rv2i(rv).(map[interface{}]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfInt64V(rv.Interface().(map[interface{}]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfInt64V(v map[interface{}]int64, checkNil bool, e *Encoder) { ee := e.e @@ -4598,7 +4598,7 @@ func (_ fastpathT) EncMapIntfInt64V(v map[interface{}]int64, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapIntfFloat32R(rv reflect.Value) { - fastpathTV.EncMapIntfFloat32V(rv2i(rv).(map[interface{}]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfFloat32V(rv.Interface().(map[interface{}]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfFloat32V(v map[interface{}]float32, checkNil bool, e *Encoder) { ee := e.e @@ -4651,7 +4651,7 @@ func (_ fastpathT) EncMapIntfFloat32V(v map[interface{}]float32, checkNil bool, } func (f *encFnInfo) fastpathEncMapIntfFloat64R(rv reflect.Value) { - fastpathTV.EncMapIntfFloat64V(rv2i(rv).(map[interface{}]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfFloat64V(rv.Interface().(map[interface{}]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfFloat64V(v map[interface{}]float64, checkNil bool, e *Encoder) { ee := e.e @@ -4704,7 +4704,7 @@ func (_ fastpathT) EncMapIntfFloat64V(v map[interface{}]float64, checkNil bool, } func (f *encFnInfo) fastpathEncMapIntfBoolR(rv reflect.Value) { - fastpathTV.EncMapIntfBoolV(rv2i(rv).(map[interface{}]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntfBoolV(rv.Interface().(map[interface{}]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntfBoolV(v map[interface{}]bool, checkNil bool, e *Encoder) { ee := e.e @@ -4757,7 +4757,7 @@ func (_ fastpathT) EncMapIntfBoolV(v map[interface{}]bool, checkNil bool, e *Enc } func (f *encFnInfo) fastpathEncMapStringIntfR(rv reflect.Value) { - fastpathTV.EncMapStringIntfV(rv2i(rv).(map[string]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringIntfV(rv.Interface().(map[string]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringIntfV(v map[string]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -4812,7 +4812,7 @@ func (_ fastpathT) EncMapStringIntfV(v map[string]interface{}, checkNil bool, e } func (f *encFnInfo) fastpathEncMapStringStringR(rv reflect.Value) { - fastpathTV.EncMapStringStringV(rv2i(rv).(map[string]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringStringV(rv.Interface().(map[string]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringStringV(v map[string]string, checkNil bool, e *Encoder) { ee := e.e @@ -4867,7 +4867,7 @@ func (_ fastpathT) EncMapStringStringV(v map[string]string, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapStringUintR(rv reflect.Value) { - fastpathTV.EncMapStringUintV(rv2i(rv).(map[string]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringUintV(rv.Interface().(map[string]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringUintV(v map[string]uint, checkNil bool, e *Encoder) { ee := e.e @@ -4922,7 +4922,7 @@ func (_ fastpathT) EncMapStringUintV(v map[string]uint, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapStringUint8R(rv reflect.Value) { - fastpathTV.EncMapStringUint8V(rv2i(rv).(map[string]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringUint8V(rv.Interface().(map[string]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringUint8V(v map[string]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -4977,7 +4977,7 @@ func (_ fastpathT) EncMapStringUint8V(v map[string]uint8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapStringUint16R(rv reflect.Value) { - fastpathTV.EncMapStringUint16V(rv2i(rv).(map[string]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringUint16V(rv.Interface().(map[string]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringUint16V(v map[string]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -5032,7 +5032,7 @@ func (_ fastpathT) EncMapStringUint16V(v map[string]uint16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapStringUint32R(rv reflect.Value) { - fastpathTV.EncMapStringUint32V(rv2i(rv).(map[string]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringUint32V(rv.Interface().(map[string]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringUint32V(v map[string]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -5087,7 +5087,7 @@ func (_ fastpathT) EncMapStringUint32V(v map[string]uint32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapStringUint64R(rv reflect.Value) { - fastpathTV.EncMapStringUint64V(rv2i(rv).(map[string]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringUint64V(rv.Interface().(map[string]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringUint64V(v map[string]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -5142,7 +5142,7 @@ func (_ fastpathT) EncMapStringUint64V(v map[string]uint64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapStringUintptrR(rv reflect.Value) { - fastpathTV.EncMapStringUintptrV(rv2i(rv).(map[string]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringUintptrV(rv.Interface().(map[string]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringUintptrV(v map[string]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -5197,7 +5197,7 @@ func (_ fastpathT) EncMapStringUintptrV(v map[string]uintptr, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapStringIntR(rv reflect.Value) { - fastpathTV.EncMapStringIntV(rv2i(rv).(map[string]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringIntV(rv.Interface().(map[string]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringIntV(v map[string]int, checkNil bool, e *Encoder) { ee := e.e @@ -5252,7 +5252,7 @@ func (_ fastpathT) EncMapStringIntV(v map[string]int, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapStringInt8R(rv reflect.Value) { - fastpathTV.EncMapStringInt8V(rv2i(rv).(map[string]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringInt8V(rv.Interface().(map[string]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringInt8V(v map[string]int8, checkNil bool, e *Encoder) { ee := e.e @@ -5307,7 +5307,7 @@ func (_ fastpathT) EncMapStringInt8V(v map[string]int8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapStringInt16R(rv reflect.Value) { - fastpathTV.EncMapStringInt16V(rv2i(rv).(map[string]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringInt16V(rv.Interface().(map[string]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringInt16V(v map[string]int16, checkNil bool, e *Encoder) { ee := e.e @@ -5362,7 +5362,7 @@ func (_ fastpathT) EncMapStringInt16V(v map[string]int16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapStringInt32R(rv reflect.Value) { - fastpathTV.EncMapStringInt32V(rv2i(rv).(map[string]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringInt32V(rv.Interface().(map[string]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringInt32V(v map[string]int32, checkNil bool, e *Encoder) { ee := e.e @@ -5417,7 +5417,7 @@ func (_ fastpathT) EncMapStringInt32V(v map[string]int32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapStringInt64R(rv reflect.Value) { - fastpathTV.EncMapStringInt64V(rv2i(rv).(map[string]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringInt64V(rv.Interface().(map[string]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringInt64V(v map[string]int64, checkNil bool, e *Encoder) { ee := e.e @@ -5472,7 +5472,7 @@ func (_ fastpathT) EncMapStringInt64V(v map[string]int64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapStringFloat32R(rv reflect.Value) { - fastpathTV.EncMapStringFloat32V(rv2i(rv).(map[string]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringFloat32V(rv.Interface().(map[string]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringFloat32V(v map[string]float32, checkNil bool, e *Encoder) { ee := e.e @@ -5527,7 +5527,7 @@ func (_ fastpathT) EncMapStringFloat32V(v map[string]float32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapStringFloat64R(rv reflect.Value) { - fastpathTV.EncMapStringFloat64V(rv2i(rv).(map[string]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringFloat64V(rv.Interface().(map[string]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringFloat64V(v map[string]float64, checkNil bool, e *Encoder) { ee := e.e @@ -5582,7 +5582,7 @@ func (_ fastpathT) EncMapStringFloat64V(v map[string]float64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapStringBoolR(rv reflect.Value) { - fastpathTV.EncMapStringBoolV(rv2i(rv).(map[string]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapStringBoolV(rv.Interface().(map[string]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapStringBoolV(v map[string]bool, checkNil bool, e *Encoder) { ee := e.e @@ -5637,7 +5637,7 @@ func (_ fastpathT) EncMapStringBoolV(v map[string]bool, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapFloat32IntfR(rv reflect.Value) { - fastpathTV.EncMapFloat32IntfV(rv2i(rv).(map[float32]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32IntfV(rv.Interface().(map[float32]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32IntfV(v map[float32]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -5683,7 +5683,7 @@ func (_ fastpathT) EncMapFloat32IntfV(v map[float32]interface{}, checkNil bool, } func (f *encFnInfo) fastpathEncMapFloat32StringR(rv reflect.Value) { - fastpathTV.EncMapFloat32StringV(rv2i(rv).(map[float32]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32StringV(rv.Interface().(map[float32]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32StringV(v map[float32]string, checkNil bool, e *Encoder) { ee := e.e @@ -5729,7 +5729,7 @@ func (_ fastpathT) EncMapFloat32StringV(v map[float32]string, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat32UintR(rv reflect.Value) { - fastpathTV.EncMapFloat32UintV(rv2i(rv).(map[float32]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32UintV(rv.Interface().(map[float32]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32UintV(v map[float32]uint, checkNil bool, e *Encoder) { ee := e.e @@ -5775,7 +5775,7 @@ func (_ fastpathT) EncMapFloat32UintV(v map[float32]uint, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapFloat32Uint8R(rv reflect.Value) { - fastpathTV.EncMapFloat32Uint8V(rv2i(rv).(map[float32]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Uint8V(rv.Interface().(map[float32]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Uint8V(v map[float32]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -5821,7 +5821,7 @@ func (_ fastpathT) EncMapFloat32Uint8V(v map[float32]uint8, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat32Uint16R(rv reflect.Value) { - fastpathTV.EncMapFloat32Uint16V(rv2i(rv).(map[float32]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Uint16V(rv.Interface().(map[float32]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Uint16V(v map[float32]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -5867,7 +5867,7 @@ func (_ fastpathT) EncMapFloat32Uint16V(v map[float32]uint16, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat32Uint32R(rv reflect.Value) { - fastpathTV.EncMapFloat32Uint32V(rv2i(rv).(map[float32]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Uint32V(rv.Interface().(map[float32]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Uint32V(v map[float32]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -5913,7 +5913,7 @@ func (_ fastpathT) EncMapFloat32Uint32V(v map[float32]uint32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat32Uint64R(rv reflect.Value) { - fastpathTV.EncMapFloat32Uint64V(rv2i(rv).(map[float32]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Uint64V(rv.Interface().(map[float32]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Uint64V(v map[float32]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -5959,7 +5959,7 @@ func (_ fastpathT) EncMapFloat32Uint64V(v map[float32]uint64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat32UintptrR(rv reflect.Value) { - fastpathTV.EncMapFloat32UintptrV(rv2i(rv).(map[float32]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32UintptrV(rv.Interface().(map[float32]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32UintptrV(v map[float32]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -6005,7 +6005,7 @@ func (_ fastpathT) EncMapFloat32UintptrV(v map[float32]uintptr, checkNil bool, e } func (f *encFnInfo) fastpathEncMapFloat32IntR(rv reflect.Value) { - fastpathTV.EncMapFloat32IntV(rv2i(rv).(map[float32]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32IntV(rv.Interface().(map[float32]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32IntV(v map[float32]int, checkNil bool, e *Encoder) { ee := e.e @@ -6051,7 +6051,7 @@ func (_ fastpathT) EncMapFloat32IntV(v map[float32]int, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapFloat32Int8R(rv reflect.Value) { - fastpathTV.EncMapFloat32Int8V(rv2i(rv).(map[float32]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Int8V(rv.Interface().(map[float32]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Int8V(v map[float32]int8, checkNil bool, e *Encoder) { ee := e.e @@ -6097,7 +6097,7 @@ func (_ fastpathT) EncMapFloat32Int8V(v map[float32]int8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapFloat32Int16R(rv reflect.Value) { - fastpathTV.EncMapFloat32Int16V(rv2i(rv).(map[float32]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Int16V(rv.Interface().(map[float32]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Int16V(v map[float32]int16, checkNil bool, e *Encoder) { ee := e.e @@ -6143,7 +6143,7 @@ func (_ fastpathT) EncMapFloat32Int16V(v map[float32]int16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat32Int32R(rv reflect.Value) { - fastpathTV.EncMapFloat32Int32V(rv2i(rv).(map[float32]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Int32V(rv.Interface().(map[float32]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Int32V(v map[float32]int32, checkNil bool, e *Encoder) { ee := e.e @@ -6189,7 +6189,7 @@ func (_ fastpathT) EncMapFloat32Int32V(v map[float32]int32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat32Int64R(rv reflect.Value) { - fastpathTV.EncMapFloat32Int64V(rv2i(rv).(map[float32]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Int64V(rv.Interface().(map[float32]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Int64V(v map[float32]int64, checkNil bool, e *Encoder) { ee := e.e @@ -6235,7 +6235,7 @@ func (_ fastpathT) EncMapFloat32Int64V(v map[float32]int64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat32Float32R(rv reflect.Value) { - fastpathTV.EncMapFloat32Float32V(rv2i(rv).(map[float32]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Float32V(rv.Interface().(map[float32]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Float32V(v map[float32]float32, checkNil bool, e *Encoder) { ee := e.e @@ -6281,7 +6281,7 @@ func (_ fastpathT) EncMapFloat32Float32V(v map[float32]float32, checkNil bool, e } func (f *encFnInfo) fastpathEncMapFloat32Float64R(rv reflect.Value) { - fastpathTV.EncMapFloat32Float64V(rv2i(rv).(map[float32]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32Float64V(rv.Interface().(map[float32]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32Float64V(v map[float32]float64, checkNil bool, e *Encoder) { ee := e.e @@ -6327,7 +6327,7 @@ func (_ fastpathT) EncMapFloat32Float64V(v map[float32]float64, checkNil bool, e } func (f *encFnInfo) fastpathEncMapFloat32BoolR(rv reflect.Value) { - fastpathTV.EncMapFloat32BoolV(rv2i(rv).(map[float32]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat32BoolV(rv.Interface().(map[float32]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat32BoolV(v map[float32]bool, checkNil bool, e *Encoder) { ee := e.e @@ -6373,7 +6373,7 @@ func (_ fastpathT) EncMapFloat32BoolV(v map[float32]bool, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapFloat64IntfR(rv reflect.Value) { - fastpathTV.EncMapFloat64IntfV(rv2i(rv).(map[float64]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64IntfV(rv.Interface().(map[float64]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64IntfV(v map[float64]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -6419,7 +6419,7 @@ func (_ fastpathT) EncMapFloat64IntfV(v map[float64]interface{}, checkNil bool, } func (f *encFnInfo) fastpathEncMapFloat64StringR(rv reflect.Value) { - fastpathTV.EncMapFloat64StringV(rv2i(rv).(map[float64]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64StringV(rv.Interface().(map[float64]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64StringV(v map[float64]string, checkNil bool, e *Encoder) { ee := e.e @@ -6465,7 +6465,7 @@ func (_ fastpathT) EncMapFloat64StringV(v map[float64]string, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat64UintR(rv reflect.Value) { - fastpathTV.EncMapFloat64UintV(rv2i(rv).(map[float64]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64UintV(rv.Interface().(map[float64]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64UintV(v map[float64]uint, checkNil bool, e *Encoder) { ee := e.e @@ -6511,7 +6511,7 @@ func (_ fastpathT) EncMapFloat64UintV(v map[float64]uint, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapFloat64Uint8R(rv reflect.Value) { - fastpathTV.EncMapFloat64Uint8V(rv2i(rv).(map[float64]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Uint8V(rv.Interface().(map[float64]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Uint8V(v map[float64]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -6557,7 +6557,7 @@ func (_ fastpathT) EncMapFloat64Uint8V(v map[float64]uint8, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat64Uint16R(rv reflect.Value) { - fastpathTV.EncMapFloat64Uint16V(rv2i(rv).(map[float64]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Uint16V(rv.Interface().(map[float64]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Uint16V(v map[float64]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -6603,7 +6603,7 @@ func (_ fastpathT) EncMapFloat64Uint16V(v map[float64]uint16, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat64Uint32R(rv reflect.Value) { - fastpathTV.EncMapFloat64Uint32V(rv2i(rv).(map[float64]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Uint32V(rv.Interface().(map[float64]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Uint32V(v map[float64]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -6649,7 +6649,7 @@ func (_ fastpathT) EncMapFloat64Uint32V(v map[float64]uint32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat64Uint64R(rv reflect.Value) { - fastpathTV.EncMapFloat64Uint64V(rv2i(rv).(map[float64]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Uint64V(rv.Interface().(map[float64]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Uint64V(v map[float64]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -6695,7 +6695,7 @@ func (_ fastpathT) EncMapFloat64Uint64V(v map[float64]uint64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapFloat64UintptrR(rv reflect.Value) { - fastpathTV.EncMapFloat64UintptrV(rv2i(rv).(map[float64]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64UintptrV(rv.Interface().(map[float64]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64UintptrV(v map[float64]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -6741,7 +6741,7 @@ func (_ fastpathT) EncMapFloat64UintptrV(v map[float64]uintptr, checkNil bool, e } func (f *encFnInfo) fastpathEncMapFloat64IntR(rv reflect.Value) { - fastpathTV.EncMapFloat64IntV(rv2i(rv).(map[float64]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64IntV(rv.Interface().(map[float64]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64IntV(v map[float64]int, checkNil bool, e *Encoder) { ee := e.e @@ -6787,7 +6787,7 @@ func (_ fastpathT) EncMapFloat64IntV(v map[float64]int, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapFloat64Int8R(rv reflect.Value) { - fastpathTV.EncMapFloat64Int8V(rv2i(rv).(map[float64]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Int8V(rv.Interface().(map[float64]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Int8V(v map[float64]int8, checkNil bool, e *Encoder) { ee := e.e @@ -6833,7 +6833,7 @@ func (_ fastpathT) EncMapFloat64Int8V(v map[float64]int8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapFloat64Int16R(rv reflect.Value) { - fastpathTV.EncMapFloat64Int16V(rv2i(rv).(map[float64]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Int16V(rv.Interface().(map[float64]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Int16V(v map[float64]int16, checkNil bool, e *Encoder) { ee := e.e @@ -6879,7 +6879,7 @@ func (_ fastpathT) EncMapFloat64Int16V(v map[float64]int16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat64Int32R(rv reflect.Value) { - fastpathTV.EncMapFloat64Int32V(rv2i(rv).(map[float64]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Int32V(rv.Interface().(map[float64]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Int32V(v map[float64]int32, checkNil bool, e *Encoder) { ee := e.e @@ -6925,7 +6925,7 @@ func (_ fastpathT) EncMapFloat64Int32V(v map[float64]int32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat64Int64R(rv reflect.Value) { - fastpathTV.EncMapFloat64Int64V(rv2i(rv).(map[float64]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Int64V(rv.Interface().(map[float64]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Int64V(v map[float64]int64, checkNil bool, e *Encoder) { ee := e.e @@ -6971,7 +6971,7 @@ func (_ fastpathT) EncMapFloat64Int64V(v map[float64]int64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapFloat64Float32R(rv reflect.Value) { - fastpathTV.EncMapFloat64Float32V(rv2i(rv).(map[float64]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Float32V(rv.Interface().(map[float64]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Float32V(v map[float64]float32, checkNil bool, e *Encoder) { ee := e.e @@ -7017,7 +7017,7 @@ func (_ fastpathT) EncMapFloat64Float32V(v map[float64]float32, checkNil bool, e } func (f *encFnInfo) fastpathEncMapFloat64Float64R(rv reflect.Value) { - fastpathTV.EncMapFloat64Float64V(rv2i(rv).(map[float64]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64Float64V(rv.Interface().(map[float64]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64Float64V(v map[float64]float64, checkNil bool, e *Encoder) { ee := e.e @@ -7063,7 +7063,7 @@ func (_ fastpathT) EncMapFloat64Float64V(v map[float64]float64, checkNil bool, e } func (f *encFnInfo) fastpathEncMapFloat64BoolR(rv reflect.Value) { - fastpathTV.EncMapFloat64BoolV(rv2i(rv).(map[float64]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapFloat64BoolV(rv.Interface().(map[float64]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapFloat64BoolV(v map[float64]bool, checkNil bool, e *Encoder) { ee := e.e @@ -7109,7 +7109,7 @@ func (_ fastpathT) EncMapFloat64BoolV(v map[float64]bool, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUintIntfR(rv reflect.Value) { - fastpathTV.EncMapUintIntfV(rv2i(rv).(map[uint]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintIntfV(rv.Interface().(map[uint]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintIntfV(v map[uint]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -7155,7 +7155,7 @@ func (_ fastpathT) EncMapUintIntfV(v map[uint]interface{}, checkNil bool, e *Enc } func (f *encFnInfo) fastpathEncMapUintStringR(rv reflect.Value) { - fastpathTV.EncMapUintStringV(rv2i(rv).(map[uint]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintStringV(rv.Interface().(map[uint]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintStringV(v map[uint]string, checkNil bool, e *Encoder) { ee := e.e @@ -7201,7 +7201,7 @@ func (_ fastpathT) EncMapUintStringV(v map[uint]string, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUintUintR(rv reflect.Value) { - fastpathTV.EncMapUintUintV(rv2i(rv).(map[uint]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintUintV(rv.Interface().(map[uint]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintUintV(v map[uint]uint, checkNil bool, e *Encoder) { ee := e.e @@ -7247,7 +7247,7 @@ func (_ fastpathT) EncMapUintUintV(v map[uint]uint, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapUintUint8R(rv reflect.Value) { - fastpathTV.EncMapUintUint8V(rv2i(rv).(map[uint]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintUint8V(rv.Interface().(map[uint]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintUint8V(v map[uint]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -7293,7 +7293,7 @@ func (_ fastpathT) EncMapUintUint8V(v map[uint]uint8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUintUint16R(rv reflect.Value) { - fastpathTV.EncMapUintUint16V(rv2i(rv).(map[uint]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintUint16V(rv.Interface().(map[uint]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintUint16V(v map[uint]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -7339,7 +7339,7 @@ func (_ fastpathT) EncMapUintUint16V(v map[uint]uint16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUintUint32R(rv reflect.Value) { - fastpathTV.EncMapUintUint32V(rv2i(rv).(map[uint]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintUint32V(rv.Interface().(map[uint]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintUint32V(v map[uint]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -7385,7 +7385,7 @@ func (_ fastpathT) EncMapUintUint32V(v map[uint]uint32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUintUint64R(rv reflect.Value) { - fastpathTV.EncMapUintUint64V(rv2i(rv).(map[uint]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintUint64V(rv.Interface().(map[uint]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintUint64V(v map[uint]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -7431,7 +7431,7 @@ func (_ fastpathT) EncMapUintUint64V(v map[uint]uint64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUintUintptrR(rv reflect.Value) { - fastpathTV.EncMapUintUintptrV(rv2i(rv).(map[uint]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintUintptrV(rv.Interface().(map[uint]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintUintptrV(v map[uint]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -7477,7 +7477,7 @@ func (_ fastpathT) EncMapUintUintptrV(v map[uint]uintptr, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUintIntR(rv reflect.Value) { - fastpathTV.EncMapUintIntV(rv2i(rv).(map[uint]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintIntV(rv.Interface().(map[uint]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintIntV(v map[uint]int, checkNil bool, e *Encoder) { ee := e.e @@ -7523,7 +7523,7 @@ func (_ fastpathT) EncMapUintIntV(v map[uint]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapUintInt8R(rv reflect.Value) { - fastpathTV.EncMapUintInt8V(rv2i(rv).(map[uint]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintInt8V(rv.Interface().(map[uint]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintInt8V(v map[uint]int8, checkNil bool, e *Encoder) { ee := e.e @@ -7569,7 +7569,7 @@ func (_ fastpathT) EncMapUintInt8V(v map[uint]int8, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapUintInt16R(rv reflect.Value) { - fastpathTV.EncMapUintInt16V(rv2i(rv).(map[uint]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintInt16V(rv.Interface().(map[uint]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintInt16V(v map[uint]int16, checkNil bool, e *Encoder) { ee := e.e @@ -7615,7 +7615,7 @@ func (_ fastpathT) EncMapUintInt16V(v map[uint]int16, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUintInt32R(rv reflect.Value) { - fastpathTV.EncMapUintInt32V(rv2i(rv).(map[uint]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintInt32V(rv.Interface().(map[uint]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintInt32V(v map[uint]int32, checkNil bool, e *Encoder) { ee := e.e @@ -7661,7 +7661,7 @@ func (_ fastpathT) EncMapUintInt32V(v map[uint]int32, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUintInt64R(rv reflect.Value) { - fastpathTV.EncMapUintInt64V(rv2i(rv).(map[uint]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintInt64V(rv.Interface().(map[uint]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintInt64V(v map[uint]int64, checkNil bool, e *Encoder) { ee := e.e @@ -7707,7 +7707,7 @@ func (_ fastpathT) EncMapUintInt64V(v map[uint]int64, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUintFloat32R(rv reflect.Value) { - fastpathTV.EncMapUintFloat32V(rv2i(rv).(map[uint]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintFloat32V(rv.Interface().(map[uint]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintFloat32V(v map[uint]float32, checkNil bool, e *Encoder) { ee := e.e @@ -7753,7 +7753,7 @@ func (_ fastpathT) EncMapUintFloat32V(v map[uint]float32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUintFloat64R(rv reflect.Value) { - fastpathTV.EncMapUintFloat64V(rv2i(rv).(map[uint]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintFloat64V(rv.Interface().(map[uint]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintFloat64V(v map[uint]float64, checkNil bool, e *Encoder) { ee := e.e @@ -7799,7 +7799,7 @@ func (_ fastpathT) EncMapUintFloat64V(v map[uint]float64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUintBoolR(rv reflect.Value) { - fastpathTV.EncMapUintBoolV(rv2i(rv).(map[uint]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintBoolV(rv.Interface().(map[uint]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintBoolV(v map[uint]bool, checkNil bool, e *Encoder) { ee := e.e @@ -7845,7 +7845,7 @@ func (_ fastpathT) EncMapUintBoolV(v map[uint]bool, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapUint8IntfR(rv reflect.Value) { - fastpathTV.EncMapUint8IntfV(rv2i(rv).(map[uint8]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8IntfV(rv.Interface().(map[uint8]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8IntfV(v map[uint8]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -7891,7 +7891,7 @@ func (_ fastpathT) EncMapUint8IntfV(v map[uint8]interface{}, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapUint8StringR(rv reflect.Value) { - fastpathTV.EncMapUint8StringV(rv2i(rv).(map[uint8]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8StringV(rv.Interface().(map[uint8]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8StringV(v map[uint8]string, checkNil bool, e *Encoder) { ee := e.e @@ -7937,7 +7937,7 @@ func (_ fastpathT) EncMapUint8StringV(v map[uint8]string, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint8UintR(rv reflect.Value) { - fastpathTV.EncMapUint8UintV(rv2i(rv).(map[uint8]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8UintV(rv.Interface().(map[uint8]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8UintV(v map[uint8]uint, checkNil bool, e *Encoder) { ee := e.e @@ -7983,7 +7983,7 @@ func (_ fastpathT) EncMapUint8UintV(v map[uint8]uint, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUint8Uint8R(rv reflect.Value) { - fastpathTV.EncMapUint8Uint8V(rv2i(rv).(map[uint8]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Uint8V(rv.Interface().(map[uint8]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Uint8V(v map[uint8]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -8029,7 +8029,7 @@ func (_ fastpathT) EncMapUint8Uint8V(v map[uint8]uint8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint8Uint16R(rv reflect.Value) { - fastpathTV.EncMapUint8Uint16V(rv2i(rv).(map[uint8]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Uint16V(rv.Interface().(map[uint8]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Uint16V(v map[uint8]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -8075,7 +8075,7 @@ func (_ fastpathT) EncMapUint8Uint16V(v map[uint8]uint16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint8Uint32R(rv reflect.Value) { - fastpathTV.EncMapUint8Uint32V(rv2i(rv).(map[uint8]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Uint32V(rv.Interface().(map[uint8]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Uint32V(v map[uint8]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -8121,7 +8121,7 @@ func (_ fastpathT) EncMapUint8Uint32V(v map[uint8]uint32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint8Uint64R(rv reflect.Value) { - fastpathTV.EncMapUint8Uint64V(rv2i(rv).(map[uint8]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Uint64V(rv.Interface().(map[uint8]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Uint64V(v map[uint8]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -8167,7 +8167,7 @@ func (_ fastpathT) EncMapUint8Uint64V(v map[uint8]uint64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint8UintptrR(rv reflect.Value) { - fastpathTV.EncMapUint8UintptrV(rv2i(rv).(map[uint8]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8UintptrV(rv.Interface().(map[uint8]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8UintptrV(v map[uint8]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -8213,7 +8213,7 @@ func (_ fastpathT) EncMapUint8UintptrV(v map[uint8]uintptr, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint8IntR(rv reflect.Value) { - fastpathTV.EncMapUint8IntV(rv2i(rv).(map[uint8]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8IntV(rv.Interface().(map[uint8]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8IntV(v map[uint8]int, checkNil bool, e *Encoder) { ee := e.e @@ -8259,7 +8259,7 @@ func (_ fastpathT) EncMapUint8IntV(v map[uint8]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapUint8Int8R(rv reflect.Value) { - fastpathTV.EncMapUint8Int8V(rv2i(rv).(map[uint8]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Int8V(rv.Interface().(map[uint8]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Int8V(v map[uint8]int8, checkNil bool, e *Encoder) { ee := e.e @@ -8305,7 +8305,7 @@ func (_ fastpathT) EncMapUint8Int8V(v map[uint8]int8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUint8Int16R(rv reflect.Value) { - fastpathTV.EncMapUint8Int16V(rv2i(rv).(map[uint8]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Int16V(rv.Interface().(map[uint8]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Int16V(v map[uint8]int16, checkNil bool, e *Encoder) { ee := e.e @@ -8351,7 +8351,7 @@ func (_ fastpathT) EncMapUint8Int16V(v map[uint8]int16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint8Int32R(rv reflect.Value) { - fastpathTV.EncMapUint8Int32V(rv2i(rv).(map[uint8]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Int32V(rv.Interface().(map[uint8]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Int32V(v map[uint8]int32, checkNil bool, e *Encoder) { ee := e.e @@ -8397,7 +8397,7 @@ func (_ fastpathT) EncMapUint8Int32V(v map[uint8]int32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint8Int64R(rv reflect.Value) { - fastpathTV.EncMapUint8Int64V(rv2i(rv).(map[uint8]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Int64V(rv.Interface().(map[uint8]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Int64V(v map[uint8]int64, checkNil bool, e *Encoder) { ee := e.e @@ -8443,7 +8443,7 @@ func (_ fastpathT) EncMapUint8Int64V(v map[uint8]int64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint8Float32R(rv reflect.Value) { - fastpathTV.EncMapUint8Float32V(rv2i(rv).(map[uint8]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Float32V(rv.Interface().(map[uint8]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Float32V(v map[uint8]float32, checkNil bool, e *Encoder) { ee := e.e @@ -8489,7 +8489,7 @@ func (_ fastpathT) EncMapUint8Float32V(v map[uint8]float32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint8Float64R(rv reflect.Value) { - fastpathTV.EncMapUint8Float64V(rv2i(rv).(map[uint8]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8Float64V(rv.Interface().(map[uint8]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8Float64V(v map[uint8]float64, checkNil bool, e *Encoder) { ee := e.e @@ -8535,7 +8535,7 @@ func (_ fastpathT) EncMapUint8Float64V(v map[uint8]float64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint8BoolR(rv reflect.Value) { - fastpathTV.EncMapUint8BoolV(rv2i(rv).(map[uint8]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint8BoolV(rv.Interface().(map[uint8]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint8BoolV(v map[uint8]bool, checkNil bool, e *Encoder) { ee := e.e @@ -8581,7 +8581,7 @@ func (_ fastpathT) EncMapUint8BoolV(v map[uint8]bool, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUint16IntfR(rv reflect.Value) { - fastpathTV.EncMapUint16IntfV(rv2i(rv).(map[uint16]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16IntfV(rv.Interface().(map[uint16]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16IntfV(v map[uint16]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -8627,7 +8627,7 @@ func (_ fastpathT) EncMapUint16IntfV(v map[uint16]interface{}, checkNil bool, e } func (f *encFnInfo) fastpathEncMapUint16StringR(rv reflect.Value) { - fastpathTV.EncMapUint16StringV(rv2i(rv).(map[uint16]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16StringV(rv.Interface().(map[uint16]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16StringV(v map[uint16]string, checkNil bool, e *Encoder) { ee := e.e @@ -8673,7 +8673,7 @@ func (_ fastpathT) EncMapUint16StringV(v map[uint16]string, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint16UintR(rv reflect.Value) { - fastpathTV.EncMapUint16UintV(rv2i(rv).(map[uint16]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16UintV(rv.Interface().(map[uint16]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16UintV(v map[uint16]uint, checkNil bool, e *Encoder) { ee := e.e @@ -8719,7 +8719,7 @@ func (_ fastpathT) EncMapUint16UintV(v map[uint16]uint, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint16Uint8R(rv reflect.Value) { - fastpathTV.EncMapUint16Uint8V(rv2i(rv).(map[uint16]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Uint8V(rv.Interface().(map[uint16]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Uint8V(v map[uint16]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -8765,7 +8765,7 @@ func (_ fastpathT) EncMapUint16Uint8V(v map[uint16]uint8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint16Uint16R(rv reflect.Value) { - fastpathTV.EncMapUint16Uint16V(rv2i(rv).(map[uint16]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Uint16V(rv.Interface().(map[uint16]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Uint16V(v map[uint16]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -8811,7 +8811,7 @@ func (_ fastpathT) EncMapUint16Uint16V(v map[uint16]uint16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint16Uint32R(rv reflect.Value) { - fastpathTV.EncMapUint16Uint32V(rv2i(rv).(map[uint16]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Uint32V(rv.Interface().(map[uint16]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Uint32V(v map[uint16]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -8857,7 +8857,7 @@ func (_ fastpathT) EncMapUint16Uint32V(v map[uint16]uint32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint16Uint64R(rv reflect.Value) { - fastpathTV.EncMapUint16Uint64V(rv2i(rv).(map[uint16]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Uint64V(rv.Interface().(map[uint16]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Uint64V(v map[uint16]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -8903,7 +8903,7 @@ func (_ fastpathT) EncMapUint16Uint64V(v map[uint16]uint64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint16UintptrR(rv reflect.Value) { - fastpathTV.EncMapUint16UintptrV(rv2i(rv).(map[uint16]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16UintptrV(rv.Interface().(map[uint16]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16UintptrV(v map[uint16]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -8949,7 +8949,7 @@ func (_ fastpathT) EncMapUint16UintptrV(v map[uint16]uintptr, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint16IntR(rv reflect.Value) { - fastpathTV.EncMapUint16IntV(rv2i(rv).(map[uint16]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16IntV(rv.Interface().(map[uint16]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16IntV(v map[uint16]int, checkNil bool, e *Encoder) { ee := e.e @@ -8995,7 +8995,7 @@ func (_ fastpathT) EncMapUint16IntV(v map[uint16]int, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUint16Int8R(rv reflect.Value) { - fastpathTV.EncMapUint16Int8V(rv2i(rv).(map[uint16]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Int8V(rv.Interface().(map[uint16]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Int8V(v map[uint16]int8, checkNil bool, e *Encoder) { ee := e.e @@ -9041,7 +9041,7 @@ func (_ fastpathT) EncMapUint16Int8V(v map[uint16]int8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint16Int16R(rv reflect.Value) { - fastpathTV.EncMapUint16Int16V(rv2i(rv).(map[uint16]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Int16V(rv.Interface().(map[uint16]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Int16V(v map[uint16]int16, checkNil bool, e *Encoder) { ee := e.e @@ -9087,7 +9087,7 @@ func (_ fastpathT) EncMapUint16Int16V(v map[uint16]int16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint16Int32R(rv reflect.Value) { - fastpathTV.EncMapUint16Int32V(rv2i(rv).(map[uint16]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Int32V(rv.Interface().(map[uint16]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Int32V(v map[uint16]int32, checkNil bool, e *Encoder) { ee := e.e @@ -9133,7 +9133,7 @@ func (_ fastpathT) EncMapUint16Int32V(v map[uint16]int32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint16Int64R(rv reflect.Value) { - fastpathTV.EncMapUint16Int64V(rv2i(rv).(map[uint16]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Int64V(rv.Interface().(map[uint16]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Int64V(v map[uint16]int64, checkNil bool, e *Encoder) { ee := e.e @@ -9179,7 +9179,7 @@ func (_ fastpathT) EncMapUint16Int64V(v map[uint16]int64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint16Float32R(rv reflect.Value) { - fastpathTV.EncMapUint16Float32V(rv2i(rv).(map[uint16]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Float32V(rv.Interface().(map[uint16]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Float32V(v map[uint16]float32, checkNil bool, e *Encoder) { ee := e.e @@ -9225,7 +9225,7 @@ func (_ fastpathT) EncMapUint16Float32V(v map[uint16]float32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint16Float64R(rv reflect.Value) { - fastpathTV.EncMapUint16Float64V(rv2i(rv).(map[uint16]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16Float64V(rv.Interface().(map[uint16]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16Float64V(v map[uint16]float64, checkNil bool, e *Encoder) { ee := e.e @@ -9271,7 +9271,7 @@ func (_ fastpathT) EncMapUint16Float64V(v map[uint16]float64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint16BoolR(rv reflect.Value) { - fastpathTV.EncMapUint16BoolV(rv2i(rv).(map[uint16]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint16BoolV(rv.Interface().(map[uint16]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint16BoolV(v map[uint16]bool, checkNil bool, e *Encoder) { ee := e.e @@ -9317,7 +9317,7 @@ func (_ fastpathT) EncMapUint16BoolV(v map[uint16]bool, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint32IntfR(rv reflect.Value) { - fastpathTV.EncMapUint32IntfV(rv2i(rv).(map[uint32]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32IntfV(rv.Interface().(map[uint32]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32IntfV(v map[uint32]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -9363,7 +9363,7 @@ func (_ fastpathT) EncMapUint32IntfV(v map[uint32]interface{}, checkNil bool, e } func (f *encFnInfo) fastpathEncMapUint32StringR(rv reflect.Value) { - fastpathTV.EncMapUint32StringV(rv2i(rv).(map[uint32]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32StringV(rv.Interface().(map[uint32]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32StringV(v map[uint32]string, checkNil bool, e *Encoder) { ee := e.e @@ -9409,7 +9409,7 @@ func (_ fastpathT) EncMapUint32StringV(v map[uint32]string, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint32UintR(rv reflect.Value) { - fastpathTV.EncMapUint32UintV(rv2i(rv).(map[uint32]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32UintV(rv.Interface().(map[uint32]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32UintV(v map[uint32]uint, checkNil bool, e *Encoder) { ee := e.e @@ -9455,7 +9455,7 @@ func (_ fastpathT) EncMapUint32UintV(v map[uint32]uint, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint32Uint8R(rv reflect.Value) { - fastpathTV.EncMapUint32Uint8V(rv2i(rv).(map[uint32]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Uint8V(rv.Interface().(map[uint32]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Uint8V(v map[uint32]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -9501,7 +9501,7 @@ func (_ fastpathT) EncMapUint32Uint8V(v map[uint32]uint8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint32Uint16R(rv reflect.Value) { - fastpathTV.EncMapUint32Uint16V(rv2i(rv).(map[uint32]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Uint16V(rv.Interface().(map[uint32]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Uint16V(v map[uint32]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -9547,7 +9547,7 @@ func (_ fastpathT) EncMapUint32Uint16V(v map[uint32]uint16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint32Uint32R(rv reflect.Value) { - fastpathTV.EncMapUint32Uint32V(rv2i(rv).(map[uint32]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Uint32V(rv.Interface().(map[uint32]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Uint32V(v map[uint32]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -9593,7 +9593,7 @@ func (_ fastpathT) EncMapUint32Uint32V(v map[uint32]uint32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint32Uint64R(rv reflect.Value) { - fastpathTV.EncMapUint32Uint64V(rv2i(rv).(map[uint32]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Uint64V(rv.Interface().(map[uint32]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Uint64V(v map[uint32]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -9639,7 +9639,7 @@ func (_ fastpathT) EncMapUint32Uint64V(v map[uint32]uint64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint32UintptrR(rv reflect.Value) { - fastpathTV.EncMapUint32UintptrV(rv2i(rv).(map[uint32]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32UintptrV(rv.Interface().(map[uint32]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32UintptrV(v map[uint32]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -9685,7 +9685,7 @@ func (_ fastpathT) EncMapUint32UintptrV(v map[uint32]uintptr, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint32IntR(rv reflect.Value) { - fastpathTV.EncMapUint32IntV(rv2i(rv).(map[uint32]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32IntV(rv.Interface().(map[uint32]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32IntV(v map[uint32]int, checkNil bool, e *Encoder) { ee := e.e @@ -9731,7 +9731,7 @@ func (_ fastpathT) EncMapUint32IntV(v map[uint32]int, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUint32Int8R(rv reflect.Value) { - fastpathTV.EncMapUint32Int8V(rv2i(rv).(map[uint32]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Int8V(rv.Interface().(map[uint32]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Int8V(v map[uint32]int8, checkNil bool, e *Encoder) { ee := e.e @@ -9777,7 +9777,7 @@ func (_ fastpathT) EncMapUint32Int8V(v map[uint32]int8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint32Int16R(rv reflect.Value) { - fastpathTV.EncMapUint32Int16V(rv2i(rv).(map[uint32]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Int16V(rv.Interface().(map[uint32]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Int16V(v map[uint32]int16, checkNil bool, e *Encoder) { ee := e.e @@ -9823,7 +9823,7 @@ func (_ fastpathT) EncMapUint32Int16V(v map[uint32]int16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint32Int32R(rv reflect.Value) { - fastpathTV.EncMapUint32Int32V(rv2i(rv).(map[uint32]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Int32V(rv.Interface().(map[uint32]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Int32V(v map[uint32]int32, checkNil bool, e *Encoder) { ee := e.e @@ -9869,7 +9869,7 @@ func (_ fastpathT) EncMapUint32Int32V(v map[uint32]int32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint32Int64R(rv reflect.Value) { - fastpathTV.EncMapUint32Int64V(rv2i(rv).(map[uint32]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Int64V(rv.Interface().(map[uint32]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Int64V(v map[uint32]int64, checkNil bool, e *Encoder) { ee := e.e @@ -9915,7 +9915,7 @@ func (_ fastpathT) EncMapUint32Int64V(v map[uint32]int64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint32Float32R(rv reflect.Value) { - fastpathTV.EncMapUint32Float32V(rv2i(rv).(map[uint32]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Float32V(rv.Interface().(map[uint32]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Float32V(v map[uint32]float32, checkNil bool, e *Encoder) { ee := e.e @@ -9961,7 +9961,7 @@ func (_ fastpathT) EncMapUint32Float32V(v map[uint32]float32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint32Float64R(rv reflect.Value) { - fastpathTV.EncMapUint32Float64V(rv2i(rv).(map[uint32]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32Float64V(rv.Interface().(map[uint32]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32Float64V(v map[uint32]float64, checkNil bool, e *Encoder) { ee := e.e @@ -10007,7 +10007,7 @@ func (_ fastpathT) EncMapUint32Float64V(v map[uint32]float64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint32BoolR(rv reflect.Value) { - fastpathTV.EncMapUint32BoolV(rv2i(rv).(map[uint32]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint32BoolV(rv.Interface().(map[uint32]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint32BoolV(v map[uint32]bool, checkNil bool, e *Encoder) { ee := e.e @@ -10053,7 +10053,7 @@ func (_ fastpathT) EncMapUint32BoolV(v map[uint32]bool, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint64IntfR(rv reflect.Value) { - fastpathTV.EncMapUint64IntfV(rv2i(rv).(map[uint64]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64IntfV(rv.Interface().(map[uint64]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64IntfV(v map[uint64]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -10099,7 +10099,7 @@ func (_ fastpathT) EncMapUint64IntfV(v map[uint64]interface{}, checkNil bool, e } func (f *encFnInfo) fastpathEncMapUint64StringR(rv reflect.Value) { - fastpathTV.EncMapUint64StringV(rv2i(rv).(map[uint64]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64StringV(rv.Interface().(map[uint64]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64StringV(v map[uint64]string, checkNil bool, e *Encoder) { ee := e.e @@ -10145,7 +10145,7 @@ func (_ fastpathT) EncMapUint64StringV(v map[uint64]string, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint64UintR(rv reflect.Value) { - fastpathTV.EncMapUint64UintV(rv2i(rv).(map[uint64]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64UintV(rv.Interface().(map[uint64]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64UintV(v map[uint64]uint, checkNil bool, e *Encoder) { ee := e.e @@ -10191,7 +10191,7 @@ func (_ fastpathT) EncMapUint64UintV(v map[uint64]uint, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint64Uint8R(rv reflect.Value) { - fastpathTV.EncMapUint64Uint8V(rv2i(rv).(map[uint64]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Uint8V(rv.Interface().(map[uint64]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Uint8V(v map[uint64]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -10237,7 +10237,7 @@ func (_ fastpathT) EncMapUint64Uint8V(v map[uint64]uint8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint64Uint16R(rv reflect.Value) { - fastpathTV.EncMapUint64Uint16V(rv2i(rv).(map[uint64]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Uint16V(rv.Interface().(map[uint64]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Uint16V(v map[uint64]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -10283,7 +10283,7 @@ func (_ fastpathT) EncMapUint64Uint16V(v map[uint64]uint16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint64Uint32R(rv reflect.Value) { - fastpathTV.EncMapUint64Uint32V(rv2i(rv).(map[uint64]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Uint32V(rv.Interface().(map[uint64]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Uint32V(v map[uint64]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -10329,7 +10329,7 @@ func (_ fastpathT) EncMapUint64Uint32V(v map[uint64]uint32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint64Uint64R(rv reflect.Value) { - fastpathTV.EncMapUint64Uint64V(rv2i(rv).(map[uint64]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Uint64V(rv.Interface().(map[uint64]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Uint64V(v map[uint64]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -10375,7 +10375,7 @@ func (_ fastpathT) EncMapUint64Uint64V(v map[uint64]uint64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUint64UintptrR(rv reflect.Value) { - fastpathTV.EncMapUint64UintptrV(rv2i(rv).(map[uint64]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64UintptrV(rv.Interface().(map[uint64]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64UintptrV(v map[uint64]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -10421,7 +10421,7 @@ func (_ fastpathT) EncMapUint64UintptrV(v map[uint64]uintptr, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint64IntR(rv reflect.Value) { - fastpathTV.EncMapUint64IntV(rv2i(rv).(map[uint64]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64IntV(rv.Interface().(map[uint64]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64IntV(v map[uint64]int, checkNil bool, e *Encoder) { ee := e.e @@ -10467,7 +10467,7 @@ func (_ fastpathT) EncMapUint64IntV(v map[uint64]int, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapUint64Int8R(rv reflect.Value) { - fastpathTV.EncMapUint64Int8V(rv2i(rv).(map[uint64]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Int8V(rv.Interface().(map[uint64]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Int8V(v map[uint64]int8, checkNil bool, e *Encoder) { ee := e.e @@ -10513,7 +10513,7 @@ func (_ fastpathT) EncMapUint64Int8V(v map[uint64]int8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUint64Int16R(rv reflect.Value) { - fastpathTV.EncMapUint64Int16V(rv2i(rv).(map[uint64]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Int16V(rv.Interface().(map[uint64]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Int16V(v map[uint64]int16, checkNil bool, e *Encoder) { ee := e.e @@ -10559,7 +10559,7 @@ func (_ fastpathT) EncMapUint64Int16V(v map[uint64]int16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint64Int32R(rv reflect.Value) { - fastpathTV.EncMapUint64Int32V(rv2i(rv).(map[uint64]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Int32V(rv.Interface().(map[uint64]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Int32V(v map[uint64]int32, checkNil bool, e *Encoder) { ee := e.e @@ -10605,7 +10605,7 @@ func (_ fastpathT) EncMapUint64Int32V(v map[uint64]int32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint64Int64R(rv reflect.Value) { - fastpathTV.EncMapUint64Int64V(rv2i(rv).(map[uint64]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Int64V(rv.Interface().(map[uint64]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Int64V(v map[uint64]int64, checkNil bool, e *Encoder) { ee := e.e @@ -10651,7 +10651,7 @@ func (_ fastpathT) EncMapUint64Int64V(v map[uint64]int64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUint64Float32R(rv reflect.Value) { - fastpathTV.EncMapUint64Float32V(rv2i(rv).(map[uint64]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Float32V(rv.Interface().(map[uint64]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Float32V(v map[uint64]float32, checkNil bool, e *Encoder) { ee := e.e @@ -10697,7 +10697,7 @@ func (_ fastpathT) EncMapUint64Float32V(v map[uint64]float32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint64Float64R(rv reflect.Value) { - fastpathTV.EncMapUint64Float64V(rv2i(rv).(map[uint64]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64Float64V(rv.Interface().(map[uint64]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64Float64V(v map[uint64]float64, checkNil bool, e *Encoder) { ee := e.e @@ -10743,7 +10743,7 @@ func (_ fastpathT) EncMapUint64Float64V(v map[uint64]float64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUint64BoolR(rv reflect.Value) { - fastpathTV.EncMapUint64BoolV(rv2i(rv).(map[uint64]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUint64BoolV(rv.Interface().(map[uint64]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUint64BoolV(v map[uint64]bool, checkNil bool, e *Encoder) { ee := e.e @@ -10789,7 +10789,7 @@ func (_ fastpathT) EncMapUint64BoolV(v map[uint64]bool, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUintptrIntfR(rv reflect.Value) { - fastpathTV.EncMapUintptrIntfV(rv2i(rv).(map[uintptr]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrIntfV(rv.Interface().(map[uintptr]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrIntfV(v map[uintptr]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -10835,7 +10835,7 @@ func (_ fastpathT) EncMapUintptrIntfV(v map[uintptr]interface{}, checkNil bool, } func (f *encFnInfo) fastpathEncMapUintptrStringR(rv reflect.Value) { - fastpathTV.EncMapUintptrStringV(rv2i(rv).(map[uintptr]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrStringV(rv.Interface().(map[uintptr]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrStringV(v map[uintptr]string, checkNil bool, e *Encoder) { ee := e.e @@ -10881,7 +10881,7 @@ func (_ fastpathT) EncMapUintptrStringV(v map[uintptr]string, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUintptrUintR(rv reflect.Value) { - fastpathTV.EncMapUintptrUintV(rv2i(rv).(map[uintptr]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrUintV(rv.Interface().(map[uintptr]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrUintV(v map[uintptr]uint, checkNil bool, e *Encoder) { ee := e.e @@ -10927,7 +10927,7 @@ func (_ fastpathT) EncMapUintptrUintV(v map[uintptr]uint, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUintptrUint8R(rv reflect.Value) { - fastpathTV.EncMapUintptrUint8V(rv2i(rv).(map[uintptr]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrUint8V(rv.Interface().(map[uintptr]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrUint8V(v map[uintptr]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -10973,7 +10973,7 @@ func (_ fastpathT) EncMapUintptrUint8V(v map[uintptr]uint8, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUintptrUint16R(rv reflect.Value) { - fastpathTV.EncMapUintptrUint16V(rv2i(rv).(map[uintptr]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrUint16V(rv.Interface().(map[uintptr]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrUint16V(v map[uintptr]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -11019,7 +11019,7 @@ func (_ fastpathT) EncMapUintptrUint16V(v map[uintptr]uint16, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUintptrUint32R(rv reflect.Value) { - fastpathTV.EncMapUintptrUint32V(rv2i(rv).(map[uintptr]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrUint32V(rv.Interface().(map[uintptr]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrUint32V(v map[uintptr]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -11065,7 +11065,7 @@ func (_ fastpathT) EncMapUintptrUint32V(v map[uintptr]uint32, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUintptrUint64R(rv reflect.Value) { - fastpathTV.EncMapUintptrUint64V(rv2i(rv).(map[uintptr]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrUint64V(rv.Interface().(map[uintptr]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrUint64V(v map[uintptr]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -11111,7 +11111,7 @@ func (_ fastpathT) EncMapUintptrUint64V(v map[uintptr]uint64, checkNil bool, e * } func (f *encFnInfo) fastpathEncMapUintptrUintptrR(rv reflect.Value) { - fastpathTV.EncMapUintptrUintptrV(rv2i(rv).(map[uintptr]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrUintptrV(rv.Interface().(map[uintptr]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrUintptrV(v map[uintptr]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -11157,7 +11157,7 @@ func (_ fastpathT) EncMapUintptrUintptrV(v map[uintptr]uintptr, checkNil bool, e } func (f *encFnInfo) fastpathEncMapUintptrIntR(rv reflect.Value) { - fastpathTV.EncMapUintptrIntV(rv2i(rv).(map[uintptr]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrIntV(rv.Interface().(map[uintptr]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrIntV(v map[uintptr]int, checkNil bool, e *Encoder) { ee := e.e @@ -11203,7 +11203,7 @@ func (_ fastpathT) EncMapUintptrIntV(v map[uintptr]int, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapUintptrInt8R(rv reflect.Value) { - fastpathTV.EncMapUintptrInt8V(rv2i(rv).(map[uintptr]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrInt8V(rv.Interface().(map[uintptr]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrInt8V(v map[uintptr]int8, checkNil bool, e *Encoder) { ee := e.e @@ -11249,7 +11249,7 @@ func (_ fastpathT) EncMapUintptrInt8V(v map[uintptr]int8, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapUintptrInt16R(rv reflect.Value) { - fastpathTV.EncMapUintptrInt16V(rv2i(rv).(map[uintptr]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrInt16V(rv.Interface().(map[uintptr]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrInt16V(v map[uintptr]int16, checkNil bool, e *Encoder) { ee := e.e @@ -11295,7 +11295,7 @@ func (_ fastpathT) EncMapUintptrInt16V(v map[uintptr]int16, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUintptrInt32R(rv reflect.Value) { - fastpathTV.EncMapUintptrInt32V(rv2i(rv).(map[uintptr]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrInt32V(rv.Interface().(map[uintptr]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrInt32V(v map[uintptr]int32, checkNil bool, e *Encoder) { ee := e.e @@ -11341,7 +11341,7 @@ func (_ fastpathT) EncMapUintptrInt32V(v map[uintptr]int32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUintptrInt64R(rv reflect.Value) { - fastpathTV.EncMapUintptrInt64V(rv2i(rv).(map[uintptr]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrInt64V(rv.Interface().(map[uintptr]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrInt64V(v map[uintptr]int64, checkNil bool, e *Encoder) { ee := e.e @@ -11387,7 +11387,7 @@ func (_ fastpathT) EncMapUintptrInt64V(v map[uintptr]int64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapUintptrFloat32R(rv reflect.Value) { - fastpathTV.EncMapUintptrFloat32V(rv2i(rv).(map[uintptr]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrFloat32V(rv.Interface().(map[uintptr]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrFloat32V(v map[uintptr]float32, checkNil bool, e *Encoder) { ee := e.e @@ -11433,7 +11433,7 @@ func (_ fastpathT) EncMapUintptrFloat32V(v map[uintptr]float32, checkNil bool, e } func (f *encFnInfo) fastpathEncMapUintptrFloat64R(rv reflect.Value) { - fastpathTV.EncMapUintptrFloat64V(rv2i(rv).(map[uintptr]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrFloat64V(rv.Interface().(map[uintptr]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrFloat64V(v map[uintptr]float64, checkNil bool, e *Encoder) { ee := e.e @@ -11479,7 +11479,7 @@ func (_ fastpathT) EncMapUintptrFloat64V(v map[uintptr]float64, checkNil bool, e } func (f *encFnInfo) fastpathEncMapUintptrBoolR(rv reflect.Value) { - fastpathTV.EncMapUintptrBoolV(rv2i(rv).(map[uintptr]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapUintptrBoolV(rv.Interface().(map[uintptr]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapUintptrBoolV(v map[uintptr]bool, checkNil bool, e *Encoder) { ee := e.e @@ -11525,7 +11525,7 @@ func (_ fastpathT) EncMapUintptrBoolV(v map[uintptr]bool, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapIntIntfR(rv reflect.Value) { - fastpathTV.EncMapIntIntfV(rv2i(rv).(map[int]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntIntfV(rv.Interface().(map[int]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntIntfV(v map[int]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -11571,7 +11571,7 @@ func (_ fastpathT) EncMapIntIntfV(v map[int]interface{}, checkNil bool, e *Encod } func (f *encFnInfo) fastpathEncMapIntStringR(rv reflect.Value) { - fastpathTV.EncMapIntStringV(rv2i(rv).(map[int]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntStringV(rv.Interface().(map[int]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntStringV(v map[int]string, checkNil bool, e *Encoder) { ee := e.e @@ -11617,7 +11617,7 @@ func (_ fastpathT) EncMapIntStringV(v map[int]string, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapIntUintR(rv reflect.Value) { - fastpathTV.EncMapIntUintV(rv2i(rv).(map[int]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntUintV(rv.Interface().(map[int]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntUintV(v map[int]uint, checkNil bool, e *Encoder) { ee := e.e @@ -11663,7 +11663,7 @@ func (_ fastpathT) EncMapIntUintV(v map[int]uint, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntUint8R(rv reflect.Value) { - fastpathTV.EncMapIntUint8V(rv2i(rv).(map[int]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntUint8V(rv.Interface().(map[int]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntUint8V(v map[int]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -11709,7 +11709,7 @@ func (_ fastpathT) EncMapIntUint8V(v map[int]uint8, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntUint16R(rv reflect.Value) { - fastpathTV.EncMapIntUint16V(rv2i(rv).(map[int]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntUint16V(rv.Interface().(map[int]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntUint16V(v map[int]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -11755,7 +11755,7 @@ func (_ fastpathT) EncMapIntUint16V(v map[int]uint16, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapIntUint32R(rv reflect.Value) { - fastpathTV.EncMapIntUint32V(rv2i(rv).(map[int]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntUint32V(rv.Interface().(map[int]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntUint32V(v map[int]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -11801,7 +11801,7 @@ func (_ fastpathT) EncMapIntUint32V(v map[int]uint32, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapIntUint64R(rv reflect.Value) { - fastpathTV.EncMapIntUint64V(rv2i(rv).(map[int]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntUint64V(rv.Interface().(map[int]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntUint64V(v map[int]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -11847,7 +11847,7 @@ func (_ fastpathT) EncMapIntUint64V(v map[int]uint64, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapIntUintptrR(rv reflect.Value) { - fastpathTV.EncMapIntUintptrV(rv2i(rv).(map[int]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntUintptrV(rv.Interface().(map[int]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntUintptrV(v map[int]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -11893,7 +11893,7 @@ func (_ fastpathT) EncMapIntUintptrV(v map[int]uintptr, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapIntIntR(rv reflect.Value) { - fastpathTV.EncMapIntIntV(rv2i(rv).(map[int]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntIntV(rv.Interface().(map[int]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntIntV(v map[int]int, checkNil bool, e *Encoder) { ee := e.e @@ -11939,7 +11939,7 @@ func (_ fastpathT) EncMapIntIntV(v map[int]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntInt8R(rv reflect.Value) { - fastpathTV.EncMapIntInt8V(rv2i(rv).(map[int]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntInt8V(rv.Interface().(map[int]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntInt8V(v map[int]int8, checkNil bool, e *Encoder) { ee := e.e @@ -11985,7 +11985,7 @@ func (_ fastpathT) EncMapIntInt8V(v map[int]int8, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntInt16R(rv reflect.Value) { - fastpathTV.EncMapIntInt16V(rv2i(rv).(map[int]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntInt16V(rv.Interface().(map[int]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntInt16V(v map[int]int16, checkNil bool, e *Encoder) { ee := e.e @@ -12031,7 +12031,7 @@ func (_ fastpathT) EncMapIntInt16V(v map[int]int16, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntInt32R(rv reflect.Value) { - fastpathTV.EncMapIntInt32V(rv2i(rv).(map[int]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntInt32V(rv.Interface().(map[int]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntInt32V(v map[int]int32, checkNil bool, e *Encoder) { ee := e.e @@ -12077,7 +12077,7 @@ func (_ fastpathT) EncMapIntInt32V(v map[int]int32, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntInt64R(rv reflect.Value) { - fastpathTV.EncMapIntInt64V(rv2i(rv).(map[int]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntInt64V(rv.Interface().(map[int]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntInt64V(v map[int]int64, checkNil bool, e *Encoder) { ee := e.e @@ -12123,7 +12123,7 @@ func (_ fastpathT) EncMapIntInt64V(v map[int]int64, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapIntFloat32R(rv reflect.Value) { - fastpathTV.EncMapIntFloat32V(rv2i(rv).(map[int]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntFloat32V(rv.Interface().(map[int]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntFloat32V(v map[int]float32, checkNil bool, e *Encoder) { ee := e.e @@ -12169,7 +12169,7 @@ func (_ fastpathT) EncMapIntFloat32V(v map[int]float32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapIntFloat64R(rv reflect.Value) { - fastpathTV.EncMapIntFloat64V(rv2i(rv).(map[int]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntFloat64V(rv.Interface().(map[int]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntFloat64V(v map[int]float64, checkNil bool, e *Encoder) { ee := e.e @@ -12215,7 +12215,7 @@ func (_ fastpathT) EncMapIntFloat64V(v map[int]float64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapIntBoolR(rv reflect.Value) { - fastpathTV.EncMapIntBoolV(rv2i(rv).(map[int]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapIntBoolV(rv.Interface().(map[int]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapIntBoolV(v map[int]bool, checkNil bool, e *Encoder) { ee := e.e @@ -12261,7 +12261,7 @@ func (_ fastpathT) EncMapIntBoolV(v map[int]bool, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt8IntfR(rv reflect.Value) { - fastpathTV.EncMapInt8IntfV(rv2i(rv).(map[int8]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8IntfV(rv.Interface().(map[int8]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8IntfV(v map[int8]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -12307,7 +12307,7 @@ func (_ fastpathT) EncMapInt8IntfV(v map[int8]interface{}, checkNil bool, e *Enc } func (f *encFnInfo) fastpathEncMapInt8StringR(rv reflect.Value) { - fastpathTV.EncMapInt8StringV(rv2i(rv).(map[int8]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8StringV(rv.Interface().(map[int8]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8StringV(v map[int8]string, checkNil bool, e *Encoder) { ee := e.e @@ -12353,7 +12353,7 @@ func (_ fastpathT) EncMapInt8StringV(v map[int8]string, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt8UintR(rv reflect.Value) { - fastpathTV.EncMapInt8UintV(rv2i(rv).(map[int8]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8UintV(rv.Interface().(map[int8]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8UintV(v map[int8]uint, checkNil bool, e *Encoder) { ee := e.e @@ -12399,7 +12399,7 @@ func (_ fastpathT) EncMapInt8UintV(v map[int8]uint, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt8Uint8R(rv reflect.Value) { - fastpathTV.EncMapInt8Uint8V(rv2i(rv).(map[int8]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Uint8V(rv.Interface().(map[int8]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Uint8V(v map[int8]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -12445,7 +12445,7 @@ func (_ fastpathT) EncMapInt8Uint8V(v map[int8]uint8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt8Uint16R(rv reflect.Value) { - fastpathTV.EncMapInt8Uint16V(rv2i(rv).(map[int8]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Uint16V(rv.Interface().(map[int8]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Uint16V(v map[int8]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -12491,7 +12491,7 @@ func (_ fastpathT) EncMapInt8Uint16V(v map[int8]uint16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt8Uint32R(rv reflect.Value) { - fastpathTV.EncMapInt8Uint32V(rv2i(rv).(map[int8]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Uint32V(rv.Interface().(map[int8]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Uint32V(v map[int8]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -12537,7 +12537,7 @@ func (_ fastpathT) EncMapInt8Uint32V(v map[int8]uint32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt8Uint64R(rv reflect.Value) { - fastpathTV.EncMapInt8Uint64V(rv2i(rv).(map[int8]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Uint64V(rv.Interface().(map[int8]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Uint64V(v map[int8]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -12583,7 +12583,7 @@ func (_ fastpathT) EncMapInt8Uint64V(v map[int8]uint64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt8UintptrR(rv reflect.Value) { - fastpathTV.EncMapInt8UintptrV(rv2i(rv).(map[int8]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8UintptrV(rv.Interface().(map[int8]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8UintptrV(v map[int8]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -12629,7 +12629,7 @@ func (_ fastpathT) EncMapInt8UintptrV(v map[int8]uintptr, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt8IntR(rv reflect.Value) { - fastpathTV.EncMapInt8IntV(rv2i(rv).(map[int8]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8IntV(rv.Interface().(map[int8]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8IntV(v map[int8]int, checkNil bool, e *Encoder) { ee := e.e @@ -12675,7 +12675,7 @@ func (_ fastpathT) EncMapInt8IntV(v map[int8]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt8Int8R(rv reflect.Value) { - fastpathTV.EncMapInt8Int8V(rv2i(rv).(map[int8]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Int8V(rv.Interface().(map[int8]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Int8V(v map[int8]int8, checkNil bool, e *Encoder) { ee := e.e @@ -12721,7 +12721,7 @@ func (_ fastpathT) EncMapInt8Int8V(v map[int8]int8, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt8Int16R(rv reflect.Value) { - fastpathTV.EncMapInt8Int16V(rv2i(rv).(map[int8]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Int16V(rv.Interface().(map[int8]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Int16V(v map[int8]int16, checkNil bool, e *Encoder) { ee := e.e @@ -12767,7 +12767,7 @@ func (_ fastpathT) EncMapInt8Int16V(v map[int8]int16, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt8Int32R(rv reflect.Value) { - fastpathTV.EncMapInt8Int32V(rv2i(rv).(map[int8]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Int32V(rv.Interface().(map[int8]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Int32V(v map[int8]int32, checkNil bool, e *Encoder) { ee := e.e @@ -12813,7 +12813,7 @@ func (_ fastpathT) EncMapInt8Int32V(v map[int8]int32, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt8Int64R(rv reflect.Value) { - fastpathTV.EncMapInt8Int64V(rv2i(rv).(map[int8]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Int64V(rv.Interface().(map[int8]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Int64V(v map[int8]int64, checkNil bool, e *Encoder) { ee := e.e @@ -12859,7 +12859,7 @@ func (_ fastpathT) EncMapInt8Int64V(v map[int8]int64, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt8Float32R(rv reflect.Value) { - fastpathTV.EncMapInt8Float32V(rv2i(rv).(map[int8]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Float32V(rv.Interface().(map[int8]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Float32V(v map[int8]float32, checkNil bool, e *Encoder) { ee := e.e @@ -12905,7 +12905,7 @@ func (_ fastpathT) EncMapInt8Float32V(v map[int8]float32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt8Float64R(rv reflect.Value) { - fastpathTV.EncMapInt8Float64V(rv2i(rv).(map[int8]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8Float64V(rv.Interface().(map[int8]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8Float64V(v map[int8]float64, checkNil bool, e *Encoder) { ee := e.e @@ -12951,7 +12951,7 @@ func (_ fastpathT) EncMapInt8Float64V(v map[int8]float64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt8BoolR(rv reflect.Value) { - fastpathTV.EncMapInt8BoolV(rv2i(rv).(map[int8]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt8BoolV(rv.Interface().(map[int8]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt8BoolV(v map[int8]bool, checkNil bool, e *Encoder) { ee := e.e @@ -12997,7 +12997,7 @@ func (_ fastpathT) EncMapInt8BoolV(v map[int8]bool, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt16IntfR(rv reflect.Value) { - fastpathTV.EncMapInt16IntfV(rv2i(rv).(map[int16]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16IntfV(rv.Interface().(map[int16]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16IntfV(v map[int16]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -13043,7 +13043,7 @@ func (_ fastpathT) EncMapInt16IntfV(v map[int16]interface{}, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapInt16StringR(rv reflect.Value) { - fastpathTV.EncMapInt16StringV(rv2i(rv).(map[int16]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16StringV(rv.Interface().(map[int16]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16StringV(v map[int16]string, checkNil bool, e *Encoder) { ee := e.e @@ -13089,7 +13089,7 @@ func (_ fastpathT) EncMapInt16StringV(v map[int16]string, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt16UintR(rv reflect.Value) { - fastpathTV.EncMapInt16UintV(rv2i(rv).(map[int16]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16UintV(rv.Interface().(map[int16]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16UintV(v map[int16]uint, checkNil bool, e *Encoder) { ee := e.e @@ -13135,7 +13135,7 @@ func (_ fastpathT) EncMapInt16UintV(v map[int16]uint, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt16Uint8R(rv reflect.Value) { - fastpathTV.EncMapInt16Uint8V(rv2i(rv).(map[int16]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Uint8V(rv.Interface().(map[int16]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Uint8V(v map[int16]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -13181,7 +13181,7 @@ func (_ fastpathT) EncMapInt16Uint8V(v map[int16]uint8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt16Uint16R(rv reflect.Value) { - fastpathTV.EncMapInt16Uint16V(rv2i(rv).(map[int16]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Uint16V(rv.Interface().(map[int16]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Uint16V(v map[int16]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -13227,7 +13227,7 @@ func (_ fastpathT) EncMapInt16Uint16V(v map[int16]uint16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt16Uint32R(rv reflect.Value) { - fastpathTV.EncMapInt16Uint32V(rv2i(rv).(map[int16]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Uint32V(rv.Interface().(map[int16]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Uint32V(v map[int16]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -13273,7 +13273,7 @@ func (_ fastpathT) EncMapInt16Uint32V(v map[int16]uint32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt16Uint64R(rv reflect.Value) { - fastpathTV.EncMapInt16Uint64V(rv2i(rv).(map[int16]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Uint64V(rv.Interface().(map[int16]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Uint64V(v map[int16]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -13319,7 +13319,7 @@ func (_ fastpathT) EncMapInt16Uint64V(v map[int16]uint64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt16UintptrR(rv reflect.Value) { - fastpathTV.EncMapInt16UintptrV(rv2i(rv).(map[int16]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16UintptrV(rv.Interface().(map[int16]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16UintptrV(v map[int16]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -13365,7 +13365,7 @@ func (_ fastpathT) EncMapInt16UintptrV(v map[int16]uintptr, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt16IntR(rv reflect.Value) { - fastpathTV.EncMapInt16IntV(rv2i(rv).(map[int16]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16IntV(rv.Interface().(map[int16]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16IntV(v map[int16]int, checkNil bool, e *Encoder) { ee := e.e @@ -13411,7 +13411,7 @@ func (_ fastpathT) EncMapInt16IntV(v map[int16]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt16Int8R(rv reflect.Value) { - fastpathTV.EncMapInt16Int8V(rv2i(rv).(map[int16]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Int8V(rv.Interface().(map[int16]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Int8V(v map[int16]int8, checkNil bool, e *Encoder) { ee := e.e @@ -13457,7 +13457,7 @@ func (_ fastpathT) EncMapInt16Int8V(v map[int16]int8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt16Int16R(rv reflect.Value) { - fastpathTV.EncMapInt16Int16V(rv2i(rv).(map[int16]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Int16V(rv.Interface().(map[int16]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Int16V(v map[int16]int16, checkNil bool, e *Encoder) { ee := e.e @@ -13503,7 +13503,7 @@ func (_ fastpathT) EncMapInt16Int16V(v map[int16]int16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt16Int32R(rv reflect.Value) { - fastpathTV.EncMapInt16Int32V(rv2i(rv).(map[int16]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Int32V(rv.Interface().(map[int16]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Int32V(v map[int16]int32, checkNil bool, e *Encoder) { ee := e.e @@ -13549,7 +13549,7 @@ func (_ fastpathT) EncMapInt16Int32V(v map[int16]int32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt16Int64R(rv reflect.Value) { - fastpathTV.EncMapInt16Int64V(rv2i(rv).(map[int16]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Int64V(rv.Interface().(map[int16]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Int64V(v map[int16]int64, checkNil bool, e *Encoder) { ee := e.e @@ -13595,7 +13595,7 @@ func (_ fastpathT) EncMapInt16Int64V(v map[int16]int64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt16Float32R(rv reflect.Value) { - fastpathTV.EncMapInt16Float32V(rv2i(rv).(map[int16]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Float32V(rv.Interface().(map[int16]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Float32V(v map[int16]float32, checkNil bool, e *Encoder) { ee := e.e @@ -13641,7 +13641,7 @@ func (_ fastpathT) EncMapInt16Float32V(v map[int16]float32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt16Float64R(rv reflect.Value) { - fastpathTV.EncMapInt16Float64V(rv2i(rv).(map[int16]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16Float64V(rv.Interface().(map[int16]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16Float64V(v map[int16]float64, checkNil bool, e *Encoder) { ee := e.e @@ -13687,7 +13687,7 @@ func (_ fastpathT) EncMapInt16Float64V(v map[int16]float64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt16BoolR(rv reflect.Value) { - fastpathTV.EncMapInt16BoolV(rv2i(rv).(map[int16]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt16BoolV(rv.Interface().(map[int16]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt16BoolV(v map[int16]bool, checkNil bool, e *Encoder) { ee := e.e @@ -13733,7 +13733,7 @@ func (_ fastpathT) EncMapInt16BoolV(v map[int16]bool, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt32IntfR(rv reflect.Value) { - fastpathTV.EncMapInt32IntfV(rv2i(rv).(map[int32]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32IntfV(rv.Interface().(map[int32]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32IntfV(v map[int32]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -13779,7 +13779,7 @@ func (_ fastpathT) EncMapInt32IntfV(v map[int32]interface{}, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapInt32StringR(rv reflect.Value) { - fastpathTV.EncMapInt32StringV(rv2i(rv).(map[int32]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32StringV(rv.Interface().(map[int32]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32StringV(v map[int32]string, checkNil bool, e *Encoder) { ee := e.e @@ -13825,7 +13825,7 @@ func (_ fastpathT) EncMapInt32StringV(v map[int32]string, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt32UintR(rv reflect.Value) { - fastpathTV.EncMapInt32UintV(rv2i(rv).(map[int32]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32UintV(rv.Interface().(map[int32]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32UintV(v map[int32]uint, checkNil bool, e *Encoder) { ee := e.e @@ -13871,7 +13871,7 @@ func (_ fastpathT) EncMapInt32UintV(v map[int32]uint, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt32Uint8R(rv reflect.Value) { - fastpathTV.EncMapInt32Uint8V(rv2i(rv).(map[int32]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Uint8V(rv.Interface().(map[int32]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Uint8V(v map[int32]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -13917,7 +13917,7 @@ func (_ fastpathT) EncMapInt32Uint8V(v map[int32]uint8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt32Uint16R(rv reflect.Value) { - fastpathTV.EncMapInt32Uint16V(rv2i(rv).(map[int32]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Uint16V(rv.Interface().(map[int32]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Uint16V(v map[int32]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -13963,7 +13963,7 @@ func (_ fastpathT) EncMapInt32Uint16V(v map[int32]uint16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt32Uint32R(rv reflect.Value) { - fastpathTV.EncMapInt32Uint32V(rv2i(rv).(map[int32]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Uint32V(rv.Interface().(map[int32]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Uint32V(v map[int32]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -14009,7 +14009,7 @@ func (_ fastpathT) EncMapInt32Uint32V(v map[int32]uint32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt32Uint64R(rv reflect.Value) { - fastpathTV.EncMapInt32Uint64V(rv2i(rv).(map[int32]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Uint64V(rv.Interface().(map[int32]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Uint64V(v map[int32]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -14055,7 +14055,7 @@ func (_ fastpathT) EncMapInt32Uint64V(v map[int32]uint64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt32UintptrR(rv reflect.Value) { - fastpathTV.EncMapInt32UintptrV(rv2i(rv).(map[int32]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32UintptrV(rv.Interface().(map[int32]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32UintptrV(v map[int32]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -14101,7 +14101,7 @@ func (_ fastpathT) EncMapInt32UintptrV(v map[int32]uintptr, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt32IntR(rv reflect.Value) { - fastpathTV.EncMapInt32IntV(rv2i(rv).(map[int32]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32IntV(rv.Interface().(map[int32]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32IntV(v map[int32]int, checkNil bool, e *Encoder) { ee := e.e @@ -14147,7 +14147,7 @@ func (_ fastpathT) EncMapInt32IntV(v map[int32]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt32Int8R(rv reflect.Value) { - fastpathTV.EncMapInt32Int8V(rv2i(rv).(map[int32]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Int8V(rv.Interface().(map[int32]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Int8V(v map[int32]int8, checkNil bool, e *Encoder) { ee := e.e @@ -14193,7 +14193,7 @@ func (_ fastpathT) EncMapInt32Int8V(v map[int32]int8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt32Int16R(rv reflect.Value) { - fastpathTV.EncMapInt32Int16V(rv2i(rv).(map[int32]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Int16V(rv.Interface().(map[int32]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Int16V(v map[int32]int16, checkNil bool, e *Encoder) { ee := e.e @@ -14239,7 +14239,7 @@ func (_ fastpathT) EncMapInt32Int16V(v map[int32]int16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt32Int32R(rv reflect.Value) { - fastpathTV.EncMapInt32Int32V(rv2i(rv).(map[int32]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Int32V(rv.Interface().(map[int32]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Int32V(v map[int32]int32, checkNil bool, e *Encoder) { ee := e.e @@ -14285,7 +14285,7 @@ func (_ fastpathT) EncMapInt32Int32V(v map[int32]int32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt32Int64R(rv reflect.Value) { - fastpathTV.EncMapInt32Int64V(rv2i(rv).(map[int32]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Int64V(rv.Interface().(map[int32]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Int64V(v map[int32]int64, checkNil bool, e *Encoder) { ee := e.e @@ -14331,7 +14331,7 @@ func (_ fastpathT) EncMapInt32Int64V(v map[int32]int64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt32Float32R(rv reflect.Value) { - fastpathTV.EncMapInt32Float32V(rv2i(rv).(map[int32]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Float32V(rv.Interface().(map[int32]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Float32V(v map[int32]float32, checkNil bool, e *Encoder) { ee := e.e @@ -14377,7 +14377,7 @@ func (_ fastpathT) EncMapInt32Float32V(v map[int32]float32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt32Float64R(rv reflect.Value) { - fastpathTV.EncMapInt32Float64V(rv2i(rv).(map[int32]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32Float64V(rv.Interface().(map[int32]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32Float64V(v map[int32]float64, checkNil bool, e *Encoder) { ee := e.e @@ -14423,7 +14423,7 @@ func (_ fastpathT) EncMapInt32Float64V(v map[int32]float64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt32BoolR(rv reflect.Value) { - fastpathTV.EncMapInt32BoolV(rv2i(rv).(map[int32]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt32BoolV(rv.Interface().(map[int32]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt32BoolV(v map[int32]bool, checkNil bool, e *Encoder) { ee := e.e @@ -14469,7 +14469,7 @@ func (_ fastpathT) EncMapInt32BoolV(v map[int32]bool, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt64IntfR(rv reflect.Value) { - fastpathTV.EncMapInt64IntfV(rv2i(rv).(map[int64]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64IntfV(rv.Interface().(map[int64]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64IntfV(v map[int64]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -14515,7 +14515,7 @@ func (_ fastpathT) EncMapInt64IntfV(v map[int64]interface{}, checkNil bool, e *E } func (f *encFnInfo) fastpathEncMapInt64StringR(rv reflect.Value) { - fastpathTV.EncMapInt64StringV(rv2i(rv).(map[int64]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64StringV(rv.Interface().(map[int64]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64StringV(v map[int64]string, checkNil bool, e *Encoder) { ee := e.e @@ -14561,7 +14561,7 @@ func (_ fastpathT) EncMapInt64StringV(v map[int64]string, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt64UintR(rv reflect.Value) { - fastpathTV.EncMapInt64UintV(rv2i(rv).(map[int64]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64UintV(rv.Interface().(map[int64]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64UintV(v map[int64]uint, checkNil bool, e *Encoder) { ee := e.e @@ -14607,7 +14607,7 @@ func (_ fastpathT) EncMapInt64UintV(v map[int64]uint, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt64Uint8R(rv reflect.Value) { - fastpathTV.EncMapInt64Uint8V(rv2i(rv).(map[int64]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Uint8V(rv.Interface().(map[int64]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Uint8V(v map[int64]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -14653,7 +14653,7 @@ func (_ fastpathT) EncMapInt64Uint8V(v map[int64]uint8, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt64Uint16R(rv reflect.Value) { - fastpathTV.EncMapInt64Uint16V(rv2i(rv).(map[int64]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Uint16V(rv.Interface().(map[int64]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Uint16V(v map[int64]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -14699,7 +14699,7 @@ func (_ fastpathT) EncMapInt64Uint16V(v map[int64]uint16, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt64Uint32R(rv reflect.Value) { - fastpathTV.EncMapInt64Uint32V(rv2i(rv).(map[int64]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Uint32V(rv.Interface().(map[int64]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Uint32V(v map[int64]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -14745,7 +14745,7 @@ func (_ fastpathT) EncMapInt64Uint32V(v map[int64]uint32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt64Uint64R(rv reflect.Value) { - fastpathTV.EncMapInt64Uint64V(rv2i(rv).(map[int64]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Uint64V(rv.Interface().(map[int64]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Uint64V(v map[int64]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -14791,7 +14791,7 @@ func (_ fastpathT) EncMapInt64Uint64V(v map[int64]uint64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapInt64UintptrR(rv reflect.Value) { - fastpathTV.EncMapInt64UintptrV(rv2i(rv).(map[int64]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64UintptrV(rv.Interface().(map[int64]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64UintptrV(v map[int64]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -14837,7 +14837,7 @@ func (_ fastpathT) EncMapInt64UintptrV(v map[int64]uintptr, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt64IntR(rv reflect.Value) { - fastpathTV.EncMapInt64IntV(rv2i(rv).(map[int64]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64IntV(rv.Interface().(map[int64]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64IntV(v map[int64]int, checkNil bool, e *Encoder) { ee := e.e @@ -14883,7 +14883,7 @@ func (_ fastpathT) EncMapInt64IntV(v map[int64]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapInt64Int8R(rv reflect.Value) { - fastpathTV.EncMapInt64Int8V(rv2i(rv).(map[int64]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Int8V(rv.Interface().(map[int64]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Int8V(v map[int64]int8, checkNil bool, e *Encoder) { ee := e.e @@ -14929,7 +14929,7 @@ func (_ fastpathT) EncMapInt64Int8V(v map[int64]int8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapInt64Int16R(rv reflect.Value) { - fastpathTV.EncMapInt64Int16V(rv2i(rv).(map[int64]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Int16V(rv.Interface().(map[int64]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Int16V(v map[int64]int16, checkNil bool, e *Encoder) { ee := e.e @@ -14975,7 +14975,7 @@ func (_ fastpathT) EncMapInt64Int16V(v map[int64]int16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt64Int32R(rv reflect.Value) { - fastpathTV.EncMapInt64Int32V(rv2i(rv).(map[int64]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Int32V(rv.Interface().(map[int64]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Int32V(v map[int64]int32, checkNil bool, e *Encoder) { ee := e.e @@ -15021,7 +15021,7 @@ func (_ fastpathT) EncMapInt64Int32V(v map[int64]int32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt64Int64R(rv reflect.Value) { - fastpathTV.EncMapInt64Int64V(rv2i(rv).(map[int64]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Int64V(rv.Interface().(map[int64]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Int64V(v map[int64]int64, checkNil bool, e *Encoder) { ee := e.e @@ -15067,7 +15067,7 @@ func (_ fastpathT) EncMapInt64Int64V(v map[int64]int64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapInt64Float32R(rv reflect.Value) { - fastpathTV.EncMapInt64Float32V(rv2i(rv).(map[int64]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Float32V(rv.Interface().(map[int64]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Float32V(v map[int64]float32, checkNil bool, e *Encoder) { ee := e.e @@ -15113,7 +15113,7 @@ func (_ fastpathT) EncMapInt64Float32V(v map[int64]float32, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt64Float64R(rv reflect.Value) { - fastpathTV.EncMapInt64Float64V(rv2i(rv).(map[int64]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64Float64V(rv.Interface().(map[int64]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64Float64V(v map[int64]float64, checkNil bool, e *Encoder) { ee := e.e @@ -15159,7 +15159,7 @@ func (_ fastpathT) EncMapInt64Float64V(v map[int64]float64, checkNil bool, e *En } func (f *encFnInfo) fastpathEncMapInt64BoolR(rv reflect.Value) { - fastpathTV.EncMapInt64BoolV(rv2i(rv).(map[int64]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapInt64BoolV(rv.Interface().(map[int64]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapInt64BoolV(v map[int64]bool, checkNil bool, e *Encoder) { ee := e.e @@ -15205,7 +15205,7 @@ func (_ fastpathT) EncMapInt64BoolV(v map[int64]bool, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapBoolIntfR(rv reflect.Value) { - fastpathTV.EncMapBoolIntfV(rv2i(rv).(map[bool]interface{}), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolIntfV(rv.Interface().(map[bool]interface{}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolIntfV(v map[bool]interface{}, checkNil bool, e *Encoder) { ee := e.e @@ -15251,7 +15251,7 @@ func (_ fastpathT) EncMapBoolIntfV(v map[bool]interface{}, checkNil bool, e *Enc } func (f *encFnInfo) fastpathEncMapBoolStringR(rv reflect.Value) { - fastpathTV.EncMapBoolStringV(rv2i(rv).(map[bool]string), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolStringV(rv.Interface().(map[bool]string), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolStringV(v map[bool]string, checkNil bool, e *Encoder) { ee := e.e @@ -15297,7 +15297,7 @@ func (_ fastpathT) EncMapBoolStringV(v map[bool]string, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapBoolUintR(rv reflect.Value) { - fastpathTV.EncMapBoolUintV(rv2i(rv).(map[bool]uint), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolUintV(rv.Interface().(map[bool]uint), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolUintV(v map[bool]uint, checkNil bool, e *Encoder) { ee := e.e @@ -15343,7 +15343,7 @@ func (_ fastpathT) EncMapBoolUintV(v map[bool]uint, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapBoolUint8R(rv reflect.Value) { - fastpathTV.EncMapBoolUint8V(rv2i(rv).(map[bool]uint8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolUint8V(rv.Interface().(map[bool]uint8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolUint8V(v map[bool]uint8, checkNil bool, e *Encoder) { ee := e.e @@ -15389,7 +15389,7 @@ func (_ fastpathT) EncMapBoolUint8V(v map[bool]uint8, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapBoolUint16R(rv reflect.Value) { - fastpathTV.EncMapBoolUint16V(rv2i(rv).(map[bool]uint16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolUint16V(rv.Interface().(map[bool]uint16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolUint16V(v map[bool]uint16, checkNil bool, e *Encoder) { ee := e.e @@ -15435,7 +15435,7 @@ func (_ fastpathT) EncMapBoolUint16V(v map[bool]uint16, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapBoolUint32R(rv reflect.Value) { - fastpathTV.EncMapBoolUint32V(rv2i(rv).(map[bool]uint32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolUint32V(rv.Interface().(map[bool]uint32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolUint32V(v map[bool]uint32, checkNil bool, e *Encoder) { ee := e.e @@ -15481,7 +15481,7 @@ func (_ fastpathT) EncMapBoolUint32V(v map[bool]uint32, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapBoolUint64R(rv reflect.Value) { - fastpathTV.EncMapBoolUint64V(rv2i(rv).(map[bool]uint64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolUint64V(rv.Interface().(map[bool]uint64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolUint64V(v map[bool]uint64, checkNil bool, e *Encoder) { ee := e.e @@ -15527,7 +15527,7 @@ func (_ fastpathT) EncMapBoolUint64V(v map[bool]uint64, checkNil bool, e *Encode } func (f *encFnInfo) fastpathEncMapBoolUintptrR(rv reflect.Value) { - fastpathTV.EncMapBoolUintptrV(rv2i(rv).(map[bool]uintptr), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolUintptrV(rv.Interface().(map[bool]uintptr), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolUintptrV(v map[bool]uintptr, checkNil bool, e *Encoder) { ee := e.e @@ -15573,7 +15573,7 @@ func (_ fastpathT) EncMapBoolUintptrV(v map[bool]uintptr, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapBoolIntR(rv reflect.Value) { - fastpathTV.EncMapBoolIntV(rv2i(rv).(map[bool]int), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolIntV(rv.Interface().(map[bool]int), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolIntV(v map[bool]int, checkNil bool, e *Encoder) { ee := e.e @@ -15619,7 +15619,7 @@ func (_ fastpathT) EncMapBoolIntV(v map[bool]int, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapBoolInt8R(rv reflect.Value) { - fastpathTV.EncMapBoolInt8V(rv2i(rv).(map[bool]int8), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolInt8V(rv.Interface().(map[bool]int8), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolInt8V(v map[bool]int8, checkNil bool, e *Encoder) { ee := e.e @@ -15665,7 +15665,7 @@ func (_ fastpathT) EncMapBoolInt8V(v map[bool]int8, checkNil bool, e *Encoder) { } func (f *encFnInfo) fastpathEncMapBoolInt16R(rv reflect.Value) { - fastpathTV.EncMapBoolInt16V(rv2i(rv).(map[bool]int16), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolInt16V(rv.Interface().(map[bool]int16), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolInt16V(v map[bool]int16, checkNil bool, e *Encoder) { ee := e.e @@ -15711,7 +15711,7 @@ func (_ fastpathT) EncMapBoolInt16V(v map[bool]int16, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapBoolInt32R(rv reflect.Value) { - fastpathTV.EncMapBoolInt32V(rv2i(rv).(map[bool]int32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolInt32V(rv.Interface().(map[bool]int32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolInt32V(v map[bool]int32, checkNil bool, e *Encoder) { ee := e.e @@ -15757,7 +15757,7 @@ func (_ fastpathT) EncMapBoolInt32V(v map[bool]int32, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapBoolInt64R(rv reflect.Value) { - fastpathTV.EncMapBoolInt64V(rv2i(rv).(map[bool]int64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolInt64V(rv.Interface().(map[bool]int64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolInt64V(v map[bool]int64, checkNil bool, e *Encoder) { ee := e.e @@ -15803,7 +15803,7 @@ func (_ fastpathT) EncMapBoolInt64V(v map[bool]int64, checkNil bool, e *Encoder) } func (f *encFnInfo) fastpathEncMapBoolFloat32R(rv reflect.Value) { - fastpathTV.EncMapBoolFloat32V(rv2i(rv).(map[bool]float32), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolFloat32V(rv.Interface().(map[bool]float32), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolFloat32V(v map[bool]float32, checkNil bool, e *Encoder) { ee := e.e @@ -15849,7 +15849,7 @@ func (_ fastpathT) EncMapBoolFloat32V(v map[bool]float32, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapBoolFloat64R(rv reflect.Value) { - fastpathTV.EncMapBoolFloat64V(rv2i(rv).(map[bool]float64), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolFloat64V(rv.Interface().(map[bool]float64), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolFloat64V(v map[bool]float64, checkNil bool, e *Encoder) { ee := e.e @@ -15895,7 +15895,7 @@ func (_ fastpathT) EncMapBoolFloat64V(v map[bool]float64, checkNil bool, e *Enco } func (f *encFnInfo) fastpathEncMapBoolBoolR(rv reflect.Value) { - fastpathTV.EncMapBoolBoolV(rv2i(rv).(map[bool]bool), fastpathCheckNilFalse, f.e) + fastpathTV.EncMapBoolBoolV(rv.Interface().(map[bool]bool), fastpathCheckNilFalse, f.e) } func (_ fastpathT) EncMapBoolBoolV(v map[bool]bool, checkNil bool, e *Encoder) { ee := e.e @@ -18126,13 +18126,13 @@ func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { func (f *decFnInfo) fastpathDecSliceIntfR(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]interface{}) + vp := rv.Addr().Interface().(*[]interface{}) v, changed := fastpathTV.DecSliceIntfV(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]interface{}) + v := rv.Interface().([]interface{}) fastpathTV.DecSliceIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -18152,6 +18152,7 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, checkNil bool, canChange bool, } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18166,57 +18167,89 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, checkNil bool, canChange bool, return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]interface{}, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - } else { - xlen = 8 - } - v = make([]interface{}, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, nil) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 16) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]interface{}, xlen) + } + } else { + v = make([]interface{}, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) d.decode(&v[j]) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, nil) + slh.ElemContainerState(j) + d.decode(&v[j]) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []interface{}{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]interface{}, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]interface{}, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, nil) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + d.decode(&v[j]) + + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18227,13 +18260,13 @@ func (_ fastpathT) DecSliceIntfV(v []interface{}, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecSliceStringR(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]string) + vp := rv.Addr().Interface().(*[]string) v, changed := fastpathTV.DecSliceStringV(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]string) + v := rv.Interface().([]string) fastpathTV.DecSliceStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -18253,6 +18286,7 @@ func (_ fastpathT) DecSliceStringV(v []string, checkNil bool, canChange bool, d } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18267,57 +18301,88 @@ func (_ fastpathT) DecSliceStringV(v []string, checkNil bool, canChange bool, d return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]string, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 16) - } else { - xlen = 8 - } - v = make([]string, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, "") + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 16) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]string, xlen) + } + } else { + v = make([]string, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = dd.DecodeString() } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, "") + slh.ElemContainerState(j) + v[j] = dd.DecodeString() + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []string{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]string, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]string, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, "") + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeString() + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18328,13 +18393,13 @@ func (_ fastpathT) DecSliceStringV(v []string, checkNil bool, canChange bool, d func (f *decFnInfo) fastpathDecSliceFloat32R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]float32) + vp := rv.Addr().Interface().(*[]float32) v, changed := fastpathTV.DecSliceFloat32V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]float32) + v := rv.Interface().([]float32) fastpathTV.DecSliceFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -18354,6 +18419,7 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, checkNil bool, canChange bool, } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18368,57 +18434,88 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, checkNil bool, canChange bool, return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]float32, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - } else { - xlen = 8 - } - v = make([]float32, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 4) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]float32, xlen) + } + } else { + v = make([]float32, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = float32(dd.DecodeFloat(true)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = float32(dd.DecodeFloat(true)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []float32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]float32, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]float32, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = float32(dd.DecodeFloat(true)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18429,13 +18526,13 @@ func (_ fastpathT) DecSliceFloat32V(v []float32, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecSliceFloat64R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]float64) + vp := rv.Addr().Interface().(*[]float64) v, changed := fastpathTV.DecSliceFloat64V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]float64) + v := rv.Interface().([]float64) fastpathTV.DecSliceFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -18455,6 +18552,7 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, checkNil bool, canChange bool, } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18469,57 +18567,88 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, checkNil bool, canChange bool, return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]float64, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - } else { - xlen = 8 - } - v = make([]float64, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]float64, xlen) + } + } else { + v = make([]float64, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = dd.DecodeFloat(false) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = dd.DecodeFloat(false) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []float64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]float64, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]float64, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeFloat(false) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18530,13 +18659,13 @@ func (_ fastpathT) DecSliceFloat64V(v []float64, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecSliceUintR(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]uint) + vp := rv.Addr().Interface().(*[]uint) v, changed := fastpathTV.DecSliceUintV(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]uint) + v := rv.Interface().([]uint) fastpathTV.DecSliceUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -18556,6 +18685,7 @@ func (_ fastpathT) DecSliceUintV(v []uint, checkNil bool, canChange bool, d *Dec } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18570,57 +18700,88 @@ func (_ fastpathT) DecSliceUintV(v []uint, checkNil bool, canChange bool, d *Dec return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]uint, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - } else { - xlen = 8 - } - v = make([]uint, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint, xlen) + } + } else { + v = make([]uint, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = uint(dd.DecodeUint(uintBitsize)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uint(dd.DecodeUint(uintBitsize)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]uint, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]uint, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uint(dd.DecodeUint(uintBitsize)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18631,13 +18792,13 @@ func (_ fastpathT) DecSliceUintV(v []uint, checkNil bool, canChange bool, d *Dec func (f *decFnInfo) fastpathDecSliceUint16R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]uint16) + vp := rv.Addr().Interface().(*[]uint16) v, changed := fastpathTV.DecSliceUint16V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]uint16) + v := rv.Interface().([]uint16) fastpathTV.DecSliceUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -18657,6 +18818,7 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, checkNil bool, canChange bool, d } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18671,57 +18833,88 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, checkNil bool, canChange bool, d return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]uint16, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2) - } else { - xlen = 8 - } - v = make([]uint16, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 2) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint16, xlen) + } + } else { + v = make([]uint16, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = uint16(dd.DecodeUint(16)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uint16(dd.DecodeUint(16)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint16{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]uint16, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]uint16, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uint16(dd.DecodeUint(16)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18732,13 +18925,13 @@ func (_ fastpathT) DecSliceUint16V(v []uint16, checkNil bool, canChange bool, d func (f *decFnInfo) fastpathDecSliceUint32R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]uint32) + vp := rv.Addr().Interface().(*[]uint32) v, changed := fastpathTV.DecSliceUint32V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]uint32) + v := rv.Interface().([]uint32) fastpathTV.DecSliceUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -18758,6 +18951,7 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, checkNil bool, canChange bool, d } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18772,57 +18966,88 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, checkNil bool, canChange bool, d return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]uint32, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - } else { - xlen = 8 - } - v = make([]uint32, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 4) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint32, xlen) + } + } else { + v = make([]uint32, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = uint32(dd.DecodeUint(32)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uint32(dd.DecodeUint(32)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]uint32, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]uint32, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uint32(dd.DecodeUint(32)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18833,13 +19058,13 @@ func (_ fastpathT) DecSliceUint32V(v []uint32, checkNil bool, canChange bool, d func (f *decFnInfo) fastpathDecSliceUint64R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]uint64) + vp := rv.Addr().Interface().(*[]uint64) v, changed := fastpathTV.DecSliceUint64V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]uint64) + v := rv.Interface().([]uint64) fastpathTV.DecSliceUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -18859,6 +19084,7 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, checkNil bool, canChange bool, d } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18873,57 +19099,88 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, checkNil bool, canChange bool, d return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]uint64, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - } else { - xlen = 8 - } - v = make([]uint64, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint64, xlen) + } + } else { + v = make([]uint64, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = dd.DecodeUint(64) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = dd.DecodeUint(64) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]uint64, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]uint64, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeUint(64) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -18934,13 +19191,13 @@ func (_ fastpathT) DecSliceUint64V(v []uint64, checkNil bool, canChange bool, d func (f *decFnInfo) fastpathDecSliceUintptrR(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]uintptr) + vp := rv.Addr().Interface().(*[]uintptr) v, changed := fastpathTV.DecSliceUintptrV(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]uintptr) + v := rv.Interface().([]uintptr) fastpathTV.DecSliceUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -18960,6 +19217,7 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, checkNil bool, canChange bool, } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -18974,57 +19232,88 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, checkNil bool, canChange bool, return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]uintptr, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - } else { - xlen = 8 - } - v = make([]uintptr, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uintptr, xlen) + } + } else { + v = make([]uintptr, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = uintptr(dd.DecodeUint(uintBitsize)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uintptr(dd.DecodeUint(uintBitsize)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uintptr{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]uintptr, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]uintptr, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uintptr(dd.DecodeUint(uintBitsize)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19035,13 +19324,13 @@ func (_ fastpathT) DecSliceUintptrV(v []uintptr, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecSliceIntR(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]int) + vp := rv.Addr().Interface().(*[]int) v, changed := fastpathTV.DecSliceIntV(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]int) + v := rv.Interface().([]int) fastpathTV.DecSliceIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -19061,6 +19350,7 @@ func (_ fastpathT) DecSliceIntV(v []int, checkNil bool, canChange bool, d *Decod } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -19075,57 +19365,88 @@ func (_ fastpathT) DecSliceIntV(v []int, checkNil bool, canChange bool, d *Decod return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]int, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - } else { - xlen = 8 - } - v = make([]int, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int, xlen) + } + } else { + v = make([]int, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = int(dd.DecodeInt(intBitsize)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int(dd.DecodeInt(intBitsize)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]int, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]int, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int(dd.DecodeInt(intBitsize)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19136,13 +19457,13 @@ func (_ fastpathT) DecSliceIntV(v []int, checkNil bool, canChange bool, d *Decod func (f *decFnInfo) fastpathDecSliceInt8R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]int8) + vp := rv.Addr().Interface().(*[]int8) v, changed := fastpathTV.DecSliceInt8V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]int8) + v := rv.Interface().([]int8) fastpathTV.DecSliceInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -19162,6 +19483,7 @@ func (_ fastpathT) DecSliceInt8V(v []int8, checkNil bool, canChange bool, d *Dec } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -19176,57 +19498,88 @@ func (_ fastpathT) DecSliceInt8V(v []int8, checkNil bool, canChange bool, d *Dec return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]int8, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - } else { - xlen = 8 - } - v = make([]int8, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 1) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int8, xlen) + } + } else { + v = make([]int8, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = int8(dd.DecodeInt(8)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int8(dd.DecodeInt(8)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int8{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]int8, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]int8, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int8(dd.DecodeInt(8)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19237,13 +19590,13 @@ func (_ fastpathT) DecSliceInt8V(v []int8, checkNil bool, canChange bool, d *Dec func (f *decFnInfo) fastpathDecSliceInt16R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]int16) + vp := rv.Addr().Interface().(*[]int16) v, changed := fastpathTV.DecSliceInt16V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]int16) + v := rv.Interface().([]int16) fastpathTV.DecSliceInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -19263,6 +19616,7 @@ func (_ fastpathT) DecSliceInt16V(v []int16, checkNil bool, canChange bool, d *D } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -19277,57 +19631,88 @@ func (_ fastpathT) DecSliceInt16V(v []int16, checkNil bool, canChange bool, d *D return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]int16, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 2) - } else { - xlen = 8 - } - v = make([]int16, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 2) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int16, xlen) + } + } else { + v = make([]int16, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = int16(dd.DecodeInt(16)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int16(dd.DecodeInt(16)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int16{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]int16, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]int16, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int16(dd.DecodeInt(16)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19338,13 +19723,13 @@ func (_ fastpathT) DecSliceInt16V(v []int16, checkNil bool, canChange bool, d *D func (f *decFnInfo) fastpathDecSliceInt32R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]int32) + vp := rv.Addr().Interface().(*[]int32) v, changed := fastpathTV.DecSliceInt32V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]int32) + v := rv.Interface().([]int32) fastpathTV.DecSliceInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -19364,6 +19749,7 @@ func (_ fastpathT) DecSliceInt32V(v []int32, checkNil bool, canChange bool, d *D } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -19378,57 +19764,88 @@ func (_ fastpathT) DecSliceInt32V(v []int32, checkNil bool, canChange bool, d *D return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]int32, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 4) - } else { - xlen = 8 - } - v = make([]int32, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 4) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int32, xlen) + } + } else { + v = make([]int32, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = int32(dd.DecodeInt(32)) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int32(dd.DecodeInt(32)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]int32, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]int32, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int32(dd.DecodeInt(32)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19439,13 +19856,13 @@ func (_ fastpathT) DecSliceInt32V(v []int32, checkNil bool, canChange bool, d *D func (f *decFnInfo) fastpathDecSliceInt64R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]int64) + vp := rv.Addr().Interface().(*[]int64) v, changed := fastpathTV.DecSliceInt64V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]int64) + v := rv.Interface().([]int64) fastpathTV.DecSliceInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -19465,6 +19882,7 @@ func (_ fastpathT) DecSliceInt64V(v []int64, checkNil bool, canChange bool, d *D } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -19479,57 +19897,88 @@ func (_ fastpathT) DecSliceInt64V(v []int64, checkNil bool, canChange bool, d *D return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]int64, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 8) - } else { - xlen = 8 - } - v = make([]int64, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, 0) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int64, xlen) + } + } else { + v = make([]int64, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = dd.DecodeInt(64) } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = dd.DecodeInt(64) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]int64, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]int64, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeInt(64) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19540,13 +19989,13 @@ func (_ fastpathT) DecSliceInt64V(v []int64, checkNil bool, canChange bool, d *D func (f *decFnInfo) fastpathDecSliceBoolR(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { - vp := rv2i(rv.Addr()).(*[]bool) + vp := rv.Addr().Interface().(*[]bool) v, changed := fastpathTV.DecSliceBoolV(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]bool) + v := rv.Interface().([]bool) fastpathTV.DecSliceBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -19566,6 +20015,7 @@ func (_ fastpathT) DecSliceBoolV(v []bool, checkNil bool, canChange bool, d *Dec } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { @@ -19580,57 +20030,88 @@ func (_ fastpathT) DecSliceBoolV(v []bool, checkNil bool, canChange bool, d *Dec return v, changed } - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]bool, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, 1) - } else { - xlen = 8 - } - v = make([]bool, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { if canChange { - v = append(v, false) + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 1) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]bool, xlen) + } + } else { + v = make([]bool, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true } } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) v[j] = dd.DecodeBool() } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, false) + slh.ElemContainerState(j) + v[j] = dd.DecodeBool() + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []bool{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]bool, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]bool, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, false) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeBool() + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } @@ -19640,13 +20121,13 @@ func (_ fastpathT) DecSliceBoolV(v []bool, checkNil bool, canChange bool, d *Dec func (f *decFnInfo) fastpathDecMapIntfIntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]interface{}) + vp := rv.Addr().Interface().(*map[interface{}]interface{}) v, changed := fastpathTV.DecMapIntfIntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]interface{}) + v := rv.Interface().(map[interface{}]interface{}) fastpathTV.DecMapIntfIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -19667,42 +20148,61 @@ func (_ fastpathT) DecMapIntfIntfV(v map[interface{}]interface{}, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 32) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) v = make(map[interface{}]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk interface{} var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -19713,13 +20213,13 @@ func (_ fastpathT) DecMapIntfIntfV(v map[interface{}]interface{}, checkNil bool, func (f *decFnInfo) fastpathDecMapIntfStringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]string) + vp := rv.Addr().Interface().(*map[interface{}]string) v, changed := fastpathTV.DecMapIntfStringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]string) + v := rv.Interface().(map[interface{}]string) fastpathTV.DecMapIntfStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -19740,37 +20240,51 @@ func (_ fastpathT) DecMapIntfStringV(v map[interface{}]string, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 32) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) v = make(map[interface{}]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -19781,13 +20295,13 @@ func (_ fastpathT) DecMapIntfStringV(v map[interface{}]string, checkNil bool, ca func (f *decFnInfo) fastpathDecMapIntfUintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]uint) + vp := rv.Addr().Interface().(*map[interface{}]uint) v, changed := fastpathTV.DecMapIntfUintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]uint) + v := rv.Interface().(map[interface{}]uint) fastpathTV.DecMapIntfUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -19808,37 +20322,51 @@ func (_ fastpathT) DecMapIntfUintV(v map[interface{}]uint, checkNil bool, canCha } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[interface{}]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -19849,13 +20377,13 @@ func (_ fastpathT) DecMapIntfUintV(v map[interface{}]uint, checkNil bool, canCha func (f *decFnInfo) fastpathDecMapIntfUint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]uint8) + vp := rv.Addr().Interface().(*map[interface{}]uint8) v, changed := fastpathTV.DecMapIntfUint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]uint8) + v := rv.Interface().(map[interface{}]uint8) fastpathTV.DecMapIntfUint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -19876,37 +20404,51 @@ func (_ fastpathT) DecMapIntfUint8V(v map[interface{}]uint8, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[interface{}]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -19917,13 +20459,13 @@ func (_ fastpathT) DecMapIntfUint8V(v map[interface{}]uint8, checkNil bool, canC func (f *decFnInfo) fastpathDecMapIntfUint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]uint16) + vp := rv.Addr().Interface().(*map[interface{}]uint16) v, changed := fastpathTV.DecMapIntfUint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]uint16) + v := rv.Interface().(map[interface{}]uint16) fastpathTV.DecMapIntfUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -19944,37 +20486,51 @@ func (_ fastpathT) DecMapIntfUint16V(v map[interface{}]uint16, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[interface{}]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -19985,13 +20541,13 @@ func (_ fastpathT) DecMapIntfUint16V(v map[interface{}]uint16, checkNil bool, ca func (f *decFnInfo) fastpathDecMapIntfUint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]uint32) + vp := rv.Addr().Interface().(*map[interface{}]uint32) v, changed := fastpathTV.DecMapIntfUint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]uint32) + v := rv.Interface().(map[interface{}]uint32) fastpathTV.DecMapIntfUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20012,37 +20568,51 @@ func (_ fastpathT) DecMapIntfUint32V(v map[interface{}]uint32, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[interface{}]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20053,13 +20623,13 @@ func (_ fastpathT) DecMapIntfUint32V(v map[interface{}]uint32, checkNil bool, ca func (f *decFnInfo) fastpathDecMapIntfUint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]uint64) + vp := rv.Addr().Interface().(*map[interface{}]uint64) v, changed := fastpathTV.DecMapIntfUint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]uint64) + v := rv.Interface().(map[interface{}]uint64) fastpathTV.DecMapIntfUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20080,37 +20650,51 @@ func (_ fastpathT) DecMapIntfUint64V(v map[interface{}]uint64, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[interface{}]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20121,13 +20705,13 @@ func (_ fastpathT) DecMapIntfUint64V(v map[interface{}]uint64, checkNil bool, ca func (f *decFnInfo) fastpathDecMapIntfUintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]uintptr) + vp := rv.Addr().Interface().(*map[interface{}]uintptr) v, changed := fastpathTV.DecMapIntfUintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]uintptr) + v := rv.Interface().(map[interface{}]uintptr) fastpathTV.DecMapIntfUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -20148,37 +20732,51 @@ func (_ fastpathT) DecMapIntfUintptrV(v map[interface{}]uintptr, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[interface{}]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20189,13 +20787,13 @@ func (_ fastpathT) DecMapIntfUintptrV(v map[interface{}]uintptr, checkNil bool, func (f *decFnInfo) fastpathDecMapIntfIntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]int) + vp := rv.Addr().Interface().(*map[interface{}]int) v, changed := fastpathTV.DecMapIntfIntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]int) + v := rv.Interface().(map[interface{}]int) fastpathTV.DecMapIntfIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -20216,37 +20814,51 @@ func (_ fastpathT) DecMapIntfIntV(v map[interface{}]int, checkNil bool, canChang } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[interface{}]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20257,13 +20869,13 @@ func (_ fastpathT) DecMapIntfIntV(v map[interface{}]int, checkNil bool, canChang func (f *decFnInfo) fastpathDecMapIntfInt8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]int8) + vp := rv.Addr().Interface().(*map[interface{}]int8) v, changed := fastpathTV.DecMapIntfInt8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]int8) + v := rv.Interface().(map[interface{}]int8) fastpathTV.DecMapIntfInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20284,37 +20896,51 @@ func (_ fastpathT) DecMapIntfInt8V(v map[interface{}]int8, checkNil bool, canCha } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[interface{}]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20325,13 +20951,13 @@ func (_ fastpathT) DecMapIntfInt8V(v map[interface{}]int8, checkNil bool, canCha func (f *decFnInfo) fastpathDecMapIntfInt16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]int16) + vp := rv.Addr().Interface().(*map[interface{}]int16) v, changed := fastpathTV.DecMapIntfInt16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]int16) + v := rv.Interface().(map[interface{}]int16) fastpathTV.DecMapIntfInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20352,37 +20978,51 @@ func (_ fastpathT) DecMapIntfInt16V(v map[interface{}]int16, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[interface{}]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20393,13 +21033,13 @@ func (_ fastpathT) DecMapIntfInt16V(v map[interface{}]int16, checkNil bool, canC func (f *decFnInfo) fastpathDecMapIntfInt32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]int32) + vp := rv.Addr().Interface().(*map[interface{}]int32) v, changed := fastpathTV.DecMapIntfInt32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]int32) + v := rv.Interface().(map[interface{}]int32) fastpathTV.DecMapIntfInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20420,37 +21060,51 @@ func (_ fastpathT) DecMapIntfInt32V(v map[interface{}]int32, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[interface{}]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20461,13 +21115,13 @@ func (_ fastpathT) DecMapIntfInt32V(v map[interface{}]int32, checkNil bool, canC func (f *decFnInfo) fastpathDecMapIntfInt64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]int64) + vp := rv.Addr().Interface().(*map[interface{}]int64) v, changed := fastpathTV.DecMapIntfInt64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]int64) + v := rv.Interface().(map[interface{}]int64) fastpathTV.DecMapIntfInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20488,37 +21142,51 @@ func (_ fastpathT) DecMapIntfInt64V(v map[interface{}]int64, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[interface{}]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20529,13 +21197,13 @@ func (_ fastpathT) DecMapIntfInt64V(v map[interface{}]int64, checkNil bool, canC func (f *decFnInfo) fastpathDecMapIntfFloat32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]float32) + vp := rv.Addr().Interface().(*map[interface{}]float32) v, changed := fastpathTV.DecMapIntfFloat32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]float32) + v := rv.Interface().(map[interface{}]float32) fastpathTV.DecMapIntfFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20556,37 +21224,51 @@ func (_ fastpathT) DecMapIntfFloat32V(v map[interface{}]float32, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[interface{}]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20597,13 +21279,13 @@ func (_ fastpathT) DecMapIntfFloat32V(v map[interface{}]float32, checkNil bool, func (f *decFnInfo) fastpathDecMapIntfFloat64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]float64) + vp := rv.Addr().Interface().(*map[interface{}]float64) v, changed := fastpathTV.DecMapIntfFloat64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]float64) + v := rv.Interface().(map[interface{}]float64) fastpathTV.DecMapIntfFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20624,37 +21306,51 @@ func (_ fastpathT) DecMapIntfFloat64V(v map[interface{}]float64, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[interface{}]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20665,13 +21361,13 @@ func (_ fastpathT) DecMapIntfFloat64V(v map[interface{}]float64, checkNil bool, func (f *decFnInfo) fastpathDecMapIntfBoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[interface{}]bool) + vp := rv.Addr().Interface().(*map[interface{}]bool) v, changed := fastpathTV.DecMapIntfBoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[interface{}]bool) + v := rv.Interface().(map[interface{}]bool) fastpathTV.DecMapIntfBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -20692,37 +21388,51 @@ func (_ fastpathT) DecMapIntfBoolV(v map[interface{}]bool, checkNil bool, canCha } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[interface{}]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk interface{} var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) - } - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20733,13 +21443,13 @@ func (_ fastpathT) DecMapIntfBoolV(v map[interface{}]bool, checkNil bool, canCha func (f *decFnInfo) fastpathDecMapStringIntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]interface{}) + vp := rv.Addr().Interface().(*map[string]interface{}) v, changed := fastpathTV.DecMapStringIntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]interface{}) + v := rv.Interface().(map[string]interface{}) fastpathTV.DecMapStringIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -20760,38 +21470,53 @@ func (_ fastpathT) DecMapStringIntfV(v map[string]interface{}, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 32) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) v = make(map[string]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk string var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20802,13 +21527,13 @@ func (_ fastpathT) DecMapStringIntfV(v map[string]interface{}, checkNil bool, ca func (f *decFnInfo) fastpathDecMapStringStringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]string) + vp := rv.Addr().Interface().(*map[string]string) v, changed := fastpathTV.DecMapStringStringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]string) + v := rv.Interface().(map[string]string) fastpathTV.DecMapStringStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -20829,33 +21554,43 @@ func (_ fastpathT) DecMapStringStringV(v map[string]string, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 32) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) v = make(map[string]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20866,13 +21601,13 @@ func (_ fastpathT) DecMapStringStringV(v map[string]string, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapStringUintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]uint) + vp := rv.Addr().Interface().(*map[string]uint) v, changed := fastpathTV.DecMapStringUintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]uint) + v := rv.Interface().(map[string]uint) fastpathTV.DecMapStringUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -20893,33 +21628,43 @@ func (_ fastpathT) DecMapStringUintV(v map[string]uint, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[string]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20930,13 +21675,13 @@ func (_ fastpathT) DecMapStringUintV(v map[string]uint, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapStringUint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]uint8) + vp := rv.Addr().Interface().(*map[string]uint8) v, changed := fastpathTV.DecMapStringUint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]uint8) + v := rv.Interface().(map[string]uint8) fastpathTV.DecMapStringUint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -20957,33 +21702,43 @@ func (_ fastpathT) DecMapStringUint8V(v map[string]uint8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[string]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -20994,13 +21749,13 @@ func (_ fastpathT) DecMapStringUint8V(v map[string]uint8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapStringUint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]uint16) + vp := rv.Addr().Interface().(*map[string]uint16) v, changed := fastpathTV.DecMapStringUint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]uint16) + v := rv.Interface().(map[string]uint16) fastpathTV.DecMapStringUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21021,33 +21776,43 @@ func (_ fastpathT) DecMapStringUint16V(v map[string]uint16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[string]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21058,13 +21823,13 @@ func (_ fastpathT) DecMapStringUint16V(v map[string]uint16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapStringUint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]uint32) + vp := rv.Addr().Interface().(*map[string]uint32) v, changed := fastpathTV.DecMapStringUint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]uint32) + v := rv.Interface().(map[string]uint32) fastpathTV.DecMapStringUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21085,33 +21850,43 @@ func (_ fastpathT) DecMapStringUint32V(v map[string]uint32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[string]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21122,13 +21897,13 @@ func (_ fastpathT) DecMapStringUint32V(v map[string]uint32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapStringUint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]uint64) + vp := rv.Addr().Interface().(*map[string]uint64) v, changed := fastpathTV.DecMapStringUint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]uint64) + v := rv.Interface().(map[string]uint64) fastpathTV.DecMapStringUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21149,33 +21924,43 @@ func (_ fastpathT) DecMapStringUint64V(v map[string]uint64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[string]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21186,13 +21971,13 @@ func (_ fastpathT) DecMapStringUint64V(v map[string]uint64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapStringUintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]uintptr) + vp := rv.Addr().Interface().(*map[string]uintptr) v, changed := fastpathTV.DecMapStringUintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]uintptr) + v := rv.Interface().(map[string]uintptr) fastpathTV.DecMapStringUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -21213,33 +21998,43 @@ func (_ fastpathT) DecMapStringUintptrV(v map[string]uintptr, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[string]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21250,13 +22045,13 @@ func (_ fastpathT) DecMapStringUintptrV(v map[string]uintptr, checkNil bool, can func (f *decFnInfo) fastpathDecMapStringIntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]int) + vp := rv.Addr().Interface().(*map[string]int) v, changed := fastpathTV.DecMapStringIntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]int) + v := rv.Interface().(map[string]int) fastpathTV.DecMapStringIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -21277,33 +22072,43 @@ func (_ fastpathT) DecMapStringIntV(v map[string]int, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[string]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21314,13 +22119,13 @@ func (_ fastpathT) DecMapStringIntV(v map[string]int, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapStringInt8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]int8) + vp := rv.Addr().Interface().(*map[string]int8) v, changed := fastpathTV.DecMapStringInt8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]int8) + v := rv.Interface().(map[string]int8) fastpathTV.DecMapStringInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21341,33 +22146,43 @@ func (_ fastpathT) DecMapStringInt8V(v map[string]int8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[string]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21378,13 +22193,13 @@ func (_ fastpathT) DecMapStringInt8V(v map[string]int8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapStringInt16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]int16) + vp := rv.Addr().Interface().(*map[string]int16) v, changed := fastpathTV.DecMapStringInt16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]int16) + v := rv.Interface().(map[string]int16) fastpathTV.DecMapStringInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21405,33 +22220,43 @@ func (_ fastpathT) DecMapStringInt16V(v map[string]int16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[string]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21442,13 +22267,13 @@ func (_ fastpathT) DecMapStringInt16V(v map[string]int16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapStringInt32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]int32) + vp := rv.Addr().Interface().(*map[string]int32) v, changed := fastpathTV.DecMapStringInt32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]int32) + v := rv.Interface().(map[string]int32) fastpathTV.DecMapStringInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21469,33 +22294,43 @@ func (_ fastpathT) DecMapStringInt32V(v map[string]int32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[string]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21506,13 +22341,13 @@ func (_ fastpathT) DecMapStringInt32V(v map[string]int32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapStringInt64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]int64) + vp := rv.Addr().Interface().(*map[string]int64) v, changed := fastpathTV.DecMapStringInt64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]int64) + v := rv.Interface().(map[string]int64) fastpathTV.DecMapStringInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21533,33 +22368,43 @@ func (_ fastpathT) DecMapStringInt64V(v map[string]int64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[string]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21570,13 +22415,13 @@ func (_ fastpathT) DecMapStringInt64V(v map[string]int64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapStringFloat32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]float32) + vp := rv.Addr().Interface().(*map[string]float32) v, changed := fastpathTV.DecMapStringFloat32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]float32) + v := rv.Interface().(map[string]float32) fastpathTV.DecMapStringFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21597,33 +22442,43 @@ func (_ fastpathT) DecMapStringFloat32V(v map[string]float32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[string]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21634,13 +22489,13 @@ func (_ fastpathT) DecMapStringFloat32V(v map[string]float32, checkNil bool, can func (f *decFnInfo) fastpathDecMapStringFloat64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]float64) + vp := rv.Addr().Interface().(*map[string]float64) v, changed := fastpathTV.DecMapStringFloat64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]float64) + v := rv.Interface().(map[string]float64) fastpathTV.DecMapStringFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21661,33 +22516,43 @@ func (_ fastpathT) DecMapStringFloat64V(v map[string]float64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[string]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21698,13 +22563,13 @@ func (_ fastpathT) DecMapStringFloat64V(v map[string]float64, checkNil bool, can func (f *decFnInfo) fastpathDecMapStringBoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[string]bool) + vp := rv.Addr().Interface().(*map[string]bool) v, changed := fastpathTV.DecMapStringBoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[string]bool) + v := rv.Interface().(map[string]bool) fastpathTV.DecMapStringBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -21725,33 +22590,43 @@ func (_ fastpathT) DecMapStringBoolV(v map[string]bool, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[string]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk string var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeString() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21762,13 +22637,13 @@ func (_ fastpathT) DecMapStringBoolV(v map[string]bool, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapFloat32IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]interface{}) + vp := rv.Addr().Interface().(*map[float32]interface{}) v, changed := fastpathTV.DecMapFloat32IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]interface{}) + v := rv.Interface().(map[float32]interface{}) fastpathTV.DecMapFloat32IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -21789,38 +22664,53 @@ func (_ fastpathT) DecMapFloat32IntfV(v map[float32]interface{}, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[float32]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk float32 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21831,13 +22721,13 @@ func (_ fastpathT) DecMapFloat32IntfV(v map[float32]interface{}, checkNil bool, func (f *decFnInfo) fastpathDecMapFloat32StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]string) + vp := rv.Addr().Interface().(*map[float32]string) v, changed := fastpathTV.DecMapFloat32StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]string) + v := rv.Interface().(map[float32]string) fastpathTV.DecMapFloat32StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -21858,33 +22748,43 @@ func (_ fastpathT) DecMapFloat32StringV(v map[float32]string, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[float32]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21895,13 +22795,13 @@ func (_ fastpathT) DecMapFloat32StringV(v map[float32]string, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat32UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]uint) + vp := rv.Addr().Interface().(*map[float32]uint) v, changed := fastpathTV.DecMapFloat32UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]uint) + v := rv.Interface().(map[float32]uint) fastpathTV.DecMapFloat32UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -21922,33 +22822,43 @@ func (_ fastpathT) DecMapFloat32UintV(v map[float32]uint, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float32]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -21959,13 +22869,13 @@ func (_ fastpathT) DecMapFloat32UintV(v map[float32]uint, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapFloat32Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]uint8) + vp := rv.Addr().Interface().(*map[float32]uint8) v, changed := fastpathTV.DecMapFloat32Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]uint8) + v := rv.Interface().(map[float32]uint8) fastpathTV.DecMapFloat32Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -21986,33 +22896,43 @@ func (_ fastpathT) DecMapFloat32Uint8V(v map[float32]uint8, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[float32]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22023,13 +22943,13 @@ func (_ fastpathT) DecMapFloat32Uint8V(v map[float32]uint8, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat32Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]uint16) + vp := rv.Addr().Interface().(*map[float32]uint16) v, changed := fastpathTV.DecMapFloat32Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]uint16) + v := rv.Interface().(map[float32]uint16) fastpathTV.DecMapFloat32Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22050,33 +22970,43 @@ func (_ fastpathT) DecMapFloat32Uint16V(v map[float32]uint16, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[float32]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22087,13 +23017,13 @@ func (_ fastpathT) DecMapFloat32Uint16V(v map[float32]uint16, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat32Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]uint32) + vp := rv.Addr().Interface().(*map[float32]uint32) v, changed := fastpathTV.DecMapFloat32Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]uint32) + v := rv.Interface().(map[float32]uint32) fastpathTV.DecMapFloat32Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22114,33 +23044,43 @@ func (_ fastpathT) DecMapFloat32Uint32V(v map[float32]uint32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[float32]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22151,13 +23091,13 @@ func (_ fastpathT) DecMapFloat32Uint32V(v map[float32]uint32, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat32Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]uint64) + vp := rv.Addr().Interface().(*map[float32]uint64) v, changed := fastpathTV.DecMapFloat32Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]uint64) + v := rv.Interface().(map[float32]uint64) fastpathTV.DecMapFloat32Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22178,33 +23118,43 @@ func (_ fastpathT) DecMapFloat32Uint64V(v map[float32]uint64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float32]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22215,13 +23165,13 @@ func (_ fastpathT) DecMapFloat32Uint64V(v map[float32]uint64, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat32UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]uintptr) + vp := rv.Addr().Interface().(*map[float32]uintptr) v, changed := fastpathTV.DecMapFloat32UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]uintptr) + v := rv.Interface().(map[float32]uintptr) fastpathTV.DecMapFloat32UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -22242,33 +23192,43 @@ func (_ fastpathT) DecMapFloat32UintptrV(v map[float32]uintptr, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float32]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22279,13 +23239,13 @@ func (_ fastpathT) DecMapFloat32UintptrV(v map[float32]uintptr, checkNil bool, c func (f *decFnInfo) fastpathDecMapFloat32IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]int) + vp := rv.Addr().Interface().(*map[float32]int) v, changed := fastpathTV.DecMapFloat32IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]int) + v := rv.Interface().(map[float32]int) fastpathTV.DecMapFloat32IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -22306,33 +23266,43 @@ func (_ fastpathT) DecMapFloat32IntV(v map[float32]int, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float32]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22343,13 +23313,13 @@ func (_ fastpathT) DecMapFloat32IntV(v map[float32]int, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapFloat32Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]int8) + vp := rv.Addr().Interface().(*map[float32]int8) v, changed := fastpathTV.DecMapFloat32Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]int8) + v := rv.Interface().(map[float32]int8) fastpathTV.DecMapFloat32Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22370,33 +23340,43 @@ func (_ fastpathT) DecMapFloat32Int8V(v map[float32]int8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[float32]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22407,13 +23387,13 @@ func (_ fastpathT) DecMapFloat32Int8V(v map[float32]int8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapFloat32Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]int16) + vp := rv.Addr().Interface().(*map[float32]int16) v, changed := fastpathTV.DecMapFloat32Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]int16) + v := rv.Interface().(map[float32]int16) fastpathTV.DecMapFloat32Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22434,33 +23414,43 @@ func (_ fastpathT) DecMapFloat32Int16V(v map[float32]int16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[float32]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22471,13 +23461,13 @@ func (_ fastpathT) DecMapFloat32Int16V(v map[float32]int16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat32Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]int32) + vp := rv.Addr().Interface().(*map[float32]int32) v, changed := fastpathTV.DecMapFloat32Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]int32) + v := rv.Interface().(map[float32]int32) fastpathTV.DecMapFloat32Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22498,33 +23488,43 @@ func (_ fastpathT) DecMapFloat32Int32V(v map[float32]int32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[float32]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22535,13 +23535,13 @@ func (_ fastpathT) DecMapFloat32Int32V(v map[float32]int32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat32Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]int64) + vp := rv.Addr().Interface().(*map[float32]int64) v, changed := fastpathTV.DecMapFloat32Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]int64) + v := rv.Interface().(map[float32]int64) fastpathTV.DecMapFloat32Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22562,33 +23562,43 @@ func (_ fastpathT) DecMapFloat32Int64V(v map[float32]int64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float32]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22599,13 +23609,13 @@ func (_ fastpathT) DecMapFloat32Int64V(v map[float32]int64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat32Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]float32) + vp := rv.Addr().Interface().(*map[float32]float32) v, changed := fastpathTV.DecMapFloat32Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]float32) + v := rv.Interface().(map[float32]float32) fastpathTV.DecMapFloat32Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22626,33 +23636,43 @@ func (_ fastpathT) DecMapFloat32Float32V(v map[float32]float32, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[float32]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22663,13 +23683,13 @@ func (_ fastpathT) DecMapFloat32Float32V(v map[float32]float32, checkNil bool, c func (f *decFnInfo) fastpathDecMapFloat32Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]float64) + vp := rv.Addr().Interface().(*map[float32]float64) v, changed := fastpathTV.DecMapFloat32Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]float64) + v := rv.Interface().(map[float32]float64) fastpathTV.DecMapFloat32Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -22690,33 +23710,43 @@ func (_ fastpathT) DecMapFloat32Float64V(v map[float32]float64, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float32]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22727,13 +23757,13 @@ func (_ fastpathT) DecMapFloat32Float64V(v map[float32]float64, checkNil bool, c func (f *decFnInfo) fastpathDecMapFloat32BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float32]bool) + vp := rv.Addr().Interface().(*map[float32]bool) v, changed := fastpathTV.DecMapFloat32BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float32]bool) + v := rv.Interface().(map[float32]bool) fastpathTV.DecMapFloat32BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -22754,33 +23784,43 @@ func (_ fastpathT) DecMapFloat32BoolV(v map[float32]bool, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[float32]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float32 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = float32(dd.DecodeFloat(true)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22791,13 +23831,13 @@ func (_ fastpathT) DecMapFloat32BoolV(v map[float32]bool, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapFloat64IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]interface{}) + vp := rv.Addr().Interface().(*map[float64]interface{}) v, changed := fastpathTV.DecMapFloat64IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]interface{}) + v := rv.Interface().(map[float64]interface{}) fastpathTV.DecMapFloat64IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -22818,38 +23858,53 @@ func (_ fastpathT) DecMapFloat64IntfV(v map[float64]interface{}, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[float64]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk float64 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22860,13 +23915,13 @@ func (_ fastpathT) DecMapFloat64IntfV(v map[float64]interface{}, checkNil bool, func (f *decFnInfo) fastpathDecMapFloat64StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]string) + vp := rv.Addr().Interface().(*map[float64]string) v, changed := fastpathTV.DecMapFloat64StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]string) + v := rv.Interface().(map[float64]string) fastpathTV.DecMapFloat64StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -22887,33 +23942,43 @@ func (_ fastpathT) DecMapFloat64StringV(v map[float64]string, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[float64]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22924,13 +23989,13 @@ func (_ fastpathT) DecMapFloat64StringV(v map[float64]string, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat64UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]uint) + vp := rv.Addr().Interface().(*map[float64]uint) v, changed := fastpathTV.DecMapFloat64UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]uint) + v := rv.Interface().(map[float64]uint) fastpathTV.DecMapFloat64UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -22951,33 +24016,43 @@ func (_ fastpathT) DecMapFloat64UintV(v map[float64]uint, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[float64]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -22988,13 +24063,13 @@ func (_ fastpathT) DecMapFloat64UintV(v map[float64]uint, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapFloat64Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]uint8) + vp := rv.Addr().Interface().(*map[float64]uint8) v, changed := fastpathTV.DecMapFloat64Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]uint8) + v := rv.Interface().(map[float64]uint8) fastpathTV.DecMapFloat64Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23015,33 +24090,43 @@ func (_ fastpathT) DecMapFloat64Uint8V(v map[float64]uint8, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[float64]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23052,13 +24137,13 @@ func (_ fastpathT) DecMapFloat64Uint8V(v map[float64]uint8, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat64Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]uint16) + vp := rv.Addr().Interface().(*map[float64]uint16) v, changed := fastpathTV.DecMapFloat64Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]uint16) + v := rv.Interface().(map[float64]uint16) fastpathTV.DecMapFloat64Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23079,33 +24164,43 @@ func (_ fastpathT) DecMapFloat64Uint16V(v map[float64]uint16, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[float64]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23116,13 +24211,13 @@ func (_ fastpathT) DecMapFloat64Uint16V(v map[float64]uint16, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat64Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]uint32) + vp := rv.Addr().Interface().(*map[float64]uint32) v, changed := fastpathTV.DecMapFloat64Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]uint32) + v := rv.Interface().(map[float64]uint32) fastpathTV.DecMapFloat64Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23143,33 +24238,43 @@ func (_ fastpathT) DecMapFloat64Uint32V(v map[float64]uint32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float64]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23180,13 +24285,13 @@ func (_ fastpathT) DecMapFloat64Uint32V(v map[float64]uint32, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat64Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]uint64) + vp := rv.Addr().Interface().(*map[float64]uint64) v, changed := fastpathTV.DecMapFloat64Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]uint64) + v := rv.Interface().(map[float64]uint64) fastpathTV.DecMapFloat64Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23207,33 +24312,43 @@ func (_ fastpathT) DecMapFloat64Uint64V(v map[float64]uint64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[float64]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23244,13 +24359,13 @@ func (_ fastpathT) DecMapFloat64Uint64V(v map[float64]uint64, checkNil bool, can func (f *decFnInfo) fastpathDecMapFloat64UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]uintptr) + vp := rv.Addr().Interface().(*map[float64]uintptr) v, changed := fastpathTV.DecMapFloat64UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]uintptr) + v := rv.Interface().(map[float64]uintptr) fastpathTV.DecMapFloat64UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -23271,33 +24386,43 @@ func (_ fastpathT) DecMapFloat64UintptrV(v map[float64]uintptr, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[float64]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23308,13 +24433,13 @@ func (_ fastpathT) DecMapFloat64UintptrV(v map[float64]uintptr, checkNil bool, c func (f *decFnInfo) fastpathDecMapFloat64IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]int) + vp := rv.Addr().Interface().(*map[float64]int) v, changed := fastpathTV.DecMapFloat64IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]int) + v := rv.Interface().(map[float64]int) fastpathTV.DecMapFloat64IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -23335,33 +24460,43 @@ func (_ fastpathT) DecMapFloat64IntV(v map[float64]int, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[float64]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23372,13 +24507,13 @@ func (_ fastpathT) DecMapFloat64IntV(v map[float64]int, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapFloat64Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]int8) + vp := rv.Addr().Interface().(*map[float64]int8) v, changed := fastpathTV.DecMapFloat64Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]int8) + v := rv.Interface().(map[float64]int8) fastpathTV.DecMapFloat64Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23399,33 +24534,43 @@ func (_ fastpathT) DecMapFloat64Int8V(v map[float64]int8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[float64]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23436,13 +24581,13 @@ func (_ fastpathT) DecMapFloat64Int8V(v map[float64]int8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapFloat64Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]int16) + vp := rv.Addr().Interface().(*map[float64]int16) v, changed := fastpathTV.DecMapFloat64Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]int16) + v := rv.Interface().(map[float64]int16) fastpathTV.DecMapFloat64Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23463,33 +24608,43 @@ func (_ fastpathT) DecMapFloat64Int16V(v map[float64]int16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[float64]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23500,13 +24655,13 @@ func (_ fastpathT) DecMapFloat64Int16V(v map[float64]int16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat64Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]int32) + vp := rv.Addr().Interface().(*map[float64]int32) v, changed := fastpathTV.DecMapFloat64Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]int32) + v := rv.Interface().(map[float64]int32) fastpathTV.DecMapFloat64Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23527,33 +24682,43 @@ func (_ fastpathT) DecMapFloat64Int32V(v map[float64]int32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float64]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23564,13 +24729,13 @@ func (_ fastpathT) DecMapFloat64Int32V(v map[float64]int32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat64Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]int64) + vp := rv.Addr().Interface().(*map[float64]int64) v, changed := fastpathTV.DecMapFloat64Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]int64) + v := rv.Interface().(map[float64]int64) fastpathTV.DecMapFloat64Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23591,33 +24756,43 @@ func (_ fastpathT) DecMapFloat64Int64V(v map[float64]int64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[float64]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23628,13 +24803,13 @@ func (_ fastpathT) DecMapFloat64Int64V(v map[float64]int64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapFloat64Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]float32) + vp := rv.Addr().Interface().(*map[float64]float32) v, changed := fastpathTV.DecMapFloat64Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]float32) + v := rv.Interface().(map[float64]float32) fastpathTV.DecMapFloat64Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23655,33 +24830,43 @@ func (_ fastpathT) DecMapFloat64Float32V(v map[float64]float32, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[float64]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23692,13 +24877,13 @@ func (_ fastpathT) DecMapFloat64Float32V(v map[float64]float32, checkNil bool, c func (f *decFnInfo) fastpathDecMapFloat64Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]float64) + vp := rv.Addr().Interface().(*map[float64]float64) v, changed := fastpathTV.DecMapFloat64Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]float64) + v := rv.Interface().(map[float64]float64) fastpathTV.DecMapFloat64Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -23719,33 +24904,43 @@ func (_ fastpathT) DecMapFloat64Float64V(v map[float64]float64, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[float64]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23756,13 +24951,13 @@ func (_ fastpathT) DecMapFloat64Float64V(v map[float64]float64, checkNil bool, c func (f *decFnInfo) fastpathDecMapFloat64BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[float64]bool) + vp := rv.Addr().Interface().(*map[float64]bool) v, changed := fastpathTV.DecMapFloat64BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[float64]bool) + v := rv.Interface().(map[float64]bool) fastpathTV.DecMapFloat64BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -23783,33 +24978,43 @@ func (_ fastpathT) DecMapFloat64BoolV(v map[float64]bool, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[float64]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk float64 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeFloat(false) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23820,13 +25025,13 @@ func (_ fastpathT) DecMapFloat64BoolV(v map[float64]bool, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUintIntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]interface{}) + vp := rv.Addr().Interface().(*map[uint]interface{}) v, changed := fastpathTV.DecMapUintIntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]interface{}) + v := rv.Interface().(map[uint]interface{}) fastpathTV.DecMapUintIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -23847,38 +25052,53 @@ func (_ fastpathT) DecMapUintIntfV(v map[uint]interface{}, checkNil bool, canCha } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[uint]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk uint var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23889,13 +25109,13 @@ func (_ fastpathT) DecMapUintIntfV(v map[uint]interface{}, checkNil bool, canCha func (f *decFnInfo) fastpathDecMapUintStringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]string) + vp := rv.Addr().Interface().(*map[uint]string) v, changed := fastpathTV.DecMapUintStringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]string) + v := rv.Interface().(map[uint]string) fastpathTV.DecMapUintStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -23916,33 +25136,43 @@ func (_ fastpathT) DecMapUintStringV(v map[uint]string, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[uint]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -23953,13 +25183,13 @@ func (_ fastpathT) DecMapUintStringV(v map[uint]string, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUintUintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]uint) + vp := rv.Addr().Interface().(*map[uint]uint) v, changed := fastpathTV.DecMapUintUintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]uint) + v := rv.Interface().(map[uint]uint) fastpathTV.DecMapUintUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -23980,33 +25210,43 @@ func (_ fastpathT) DecMapUintUintV(v map[uint]uint, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24017,13 +25257,13 @@ func (_ fastpathT) DecMapUintUintV(v map[uint]uint, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapUintUint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]uint8) + vp := rv.Addr().Interface().(*map[uint]uint8) v, changed := fastpathTV.DecMapUintUint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]uint8) + v := rv.Interface().(map[uint]uint8) fastpathTV.DecMapUintUint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24044,33 +25284,43 @@ func (_ fastpathT) DecMapUintUint8V(v map[uint]uint8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24081,13 +25331,13 @@ func (_ fastpathT) DecMapUintUint8V(v map[uint]uint8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUintUint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]uint16) + vp := rv.Addr().Interface().(*map[uint]uint16) v, changed := fastpathTV.DecMapUintUint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]uint16) + v := rv.Interface().(map[uint]uint16) fastpathTV.DecMapUintUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24108,33 +25358,43 @@ func (_ fastpathT) DecMapUintUint16V(v map[uint]uint16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24145,13 +25405,13 @@ func (_ fastpathT) DecMapUintUint16V(v map[uint]uint16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUintUint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]uint32) + vp := rv.Addr().Interface().(*map[uint]uint32) v, changed := fastpathTV.DecMapUintUint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]uint32) + v := rv.Interface().(map[uint]uint32) fastpathTV.DecMapUintUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24172,33 +25432,43 @@ func (_ fastpathT) DecMapUintUint32V(v map[uint]uint32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24209,13 +25479,13 @@ func (_ fastpathT) DecMapUintUint32V(v map[uint]uint32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUintUint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]uint64) + vp := rv.Addr().Interface().(*map[uint]uint64) v, changed := fastpathTV.DecMapUintUint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]uint64) + v := rv.Interface().(map[uint]uint64) fastpathTV.DecMapUintUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24236,33 +25506,43 @@ func (_ fastpathT) DecMapUintUint64V(v map[uint]uint64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24273,13 +25553,13 @@ func (_ fastpathT) DecMapUintUint64V(v map[uint]uint64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUintUintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]uintptr) + vp := rv.Addr().Interface().(*map[uint]uintptr) v, changed := fastpathTV.DecMapUintUintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]uintptr) + v := rv.Interface().(map[uint]uintptr) fastpathTV.DecMapUintUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -24300,33 +25580,43 @@ func (_ fastpathT) DecMapUintUintptrV(v map[uint]uintptr, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24337,13 +25627,13 @@ func (_ fastpathT) DecMapUintUintptrV(v map[uint]uintptr, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUintIntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]int) + vp := rv.Addr().Interface().(*map[uint]int) v, changed := fastpathTV.DecMapUintIntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]int) + v := rv.Interface().(map[uint]int) fastpathTV.DecMapUintIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -24364,33 +25654,43 @@ func (_ fastpathT) DecMapUintIntV(v map[uint]int, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24401,13 +25701,13 @@ func (_ fastpathT) DecMapUintIntV(v map[uint]int, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapUintInt8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]int8) + vp := rv.Addr().Interface().(*map[uint]int8) v, changed := fastpathTV.DecMapUintInt8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]int8) + v := rv.Interface().(map[uint]int8) fastpathTV.DecMapUintInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24428,33 +25728,43 @@ func (_ fastpathT) DecMapUintInt8V(v map[uint]int8, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24465,13 +25775,13 @@ func (_ fastpathT) DecMapUintInt8V(v map[uint]int8, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapUintInt16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]int16) + vp := rv.Addr().Interface().(*map[uint]int16) v, changed := fastpathTV.DecMapUintInt16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]int16) + v := rv.Interface().(map[uint]int16) fastpathTV.DecMapUintInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24492,33 +25802,43 @@ func (_ fastpathT) DecMapUintInt16V(v map[uint]int16, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24529,13 +25849,13 @@ func (_ fastpathT) DecMapUintInt16V(v map[uint]int16, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUintInt32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]int32) + vp := rv.Addr().Interface().(*map[uint]int32) v, changed := fastpathTV.DecMapUintInt32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]int32) + v := rv.Interface().(map[uint]int32) fastpathTV.DecMapUintInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24556,33 +25876,43 @@ func (_ fastpathT) DecMapUintInt32V(v map[uint]int32, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24593,13 +25923,13 @@ func (_ fastpathT) DecMapUintInt32V(v map[uint]int32, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUintInt64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]int64) + vp := rv.Addr().Interface().(*map[uint]int64) v, changed := fastpathTV.DecMapUintInt64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]int64) + v := rv.Interface().(map[uint]int64) fastpathTV.DecMapUintInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24620,33 +25950,43 @@ func (_ fastpathT) DecMapUintInt64V(v map[uint]int64, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24657,13 +25997,13 @@ func (_ fastpathT) DecMapUintInt64V(v map[uint]int64, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUintFloat32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]float32) + vp := rv.Addr().Interface().(*map[uint]float32) v, changed := fastpathTV.DecMapUintFloat32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]float32) + v := rv.Interface().(map[uint]float32) fastpathTV.DecMapUintFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24684,33 +26024,43 @@ func (_ fastpathT) DecMapUintFloat32V(v map[uint]float32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24721,13 +26071,13 @@ func (_ fastpathT) DecMapUintFloat32V(v map[uint]float32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUintFloat64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]float64) + vp := rv.Addr().Interface().(*map[uint]float64) v, changed := fastpathTV.DecMapUintFloat64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]float64) + v := rv.Interface().(map[uint]float64) fastpathTV.DecMapUintFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -24748,33 +26098,43 @@ func (_ fastpathT) DecMapUintFloat64V(v map[uint]float64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24785,13 +26145,13 @@ func (_ fastpathT) DecMapUintFloat64V(v map[uint]float64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUintBoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint]bool) + vp := rv.Addr().Interface().(*map[uint]bool) v, changed := fastpathTV.DecMapUintBoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint]bool) + v := rv.Interface().(map[uint]bool) fastpathTV.DecMapUintBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -24812,33 +26172,43 @@ func (_ fastpathT) DecMapUintBoolV(v map[uint]bool, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = uint(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24849,13 +26219,13 @@ func (_ fastpathT) DecMapUintBoolV(v map[uint]bool, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapUint8IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]interface{}) + vp := rv.Addr().Interface().(*map[uint8]interface{}) v, changed := fastpathTV.DecMapUint8IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]interface{}) + v := rv.Interface().(map[uint8]interface{}) fastpathTV.DecMapUint8IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -24876,38 +26246,53 @@ func (_ fastpathT) DecMapUint8IntfV(v map[uint8]interface{}, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[uint8]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk uint8 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24918,13 +26303,13 @@ func (_ fastpathT) DecMapUint8IntfV(v map[uint8]interface{}, checkNil bool, canC func (f *decFnInfo) fastpathDecMapUint8StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]string) + vp := rv.Addr().Interface().(*map[uint8]string) v, changed := fastpathTV.DecMapUint8StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]string) + v := rv.Interface().(map[uint8]string) fastpathTV.DecMapUint8StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -24945,33 +26330,43 @@ func (_ fastpathT) DecMapUint8StringV(v map[uint8]string, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[uint8]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -24982,13 +26377,13 @@ func (_ fastpathT) DecMapUint8StringV(v map[uint8]string, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint8UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]uint) + vp := rv.Addr().Interface().(*map[uint8]uint) v, changed := fastpathTV.DecMapUint8UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]uint) + v := rv.Interface().(map[uint8]uint) fastpathTV.DecMapUint8UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -25009,33 +26404,43 @@ func (_ fastpathT) DecMapUint8UintV(v map[uint8]uint, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint8]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25046,13 +26451,13 @@ func (_ fastpathT) DecMapUint8UintV(v map[uint8]uint, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUint8Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]uint8) + vp := rv.Addr().Interface().(*map[uint8]uint8) v, changed := fastpathTV.DecMapUint8Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]uint8) + v := rv.Interface().(map[uint8]uint8) fastpathTV.DecMapUint8Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25073,33 +26478,43 @@ func (_ fastpathT) DecMapUint8Uint8V(v map[uint8]uint8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[uint8]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25110,13 +26525,13 @@ func (_ fastpathT) DecMapUint8Uint8V(v map[uint8]uint8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint8Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]uint16) + vp := rv.Addr().Interface().(*map[uint8]uint16) v, changed := fastpathTV.DecMapUint8Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]uint16) + v := rv.Interface().(map[uint8]uint16) fastpathTV.DecMapUint8Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25137,33 +26552,43 @@ func (_ fastpathT) DecMapUint8Uint16V(v map[uint8]uint16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[uint8]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25174,13 +26599,13 @@ func (_ fastpathT) DecMapUint8Uint16V(v map[uint8]uint16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint8Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]uint32) + vp := rv.Addr().Interface().(*map[uint8]uint32) v, changed := fastpathTV.DecMapUint8Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]uint32) + v := rv.Interface().(map[uint8]uint32) fastpathTV.DecMapUint8Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25201,33 +26626,43 @@ func (_ fastpathT) DecMapUint8Uint32V(v map[uint8]uint32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[uint8]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25238,13 +26673,13 @@ func (_ fastpathT) DecMapUint8Uint32V(v map[uint8]uint32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint8Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]uint64) + vp := rv.Addr().Interface().(*map[uint8]uint64) v, changed := fastpathTV.DecMapUint8Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]uint64) + v := rv.Interface().(map[uint8]uint64) fastpathTV.DecMapUint8Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25265,33 +26700,43 @@ func (_ fastpathT) DecMapUint8Uint64V(v map[uint8]uint64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint8]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25302,13 +26747,13 @@ func (_ fastpathT) DecMapUint8Uint64V(v map[uint8]uint64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint8UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]uintptr) + vp := rv.Addr().Interface().(*map[uint8]uintptr) v, changed := fastpathTV.DecMapUint8UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]uintptr) + v := rv.Interface().(map[uint8]uintptr) fastpathTV.DecMapUint8UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -25329,33 +26774,43 @@ func (_ fastpathT) DecMapUint8UintptrV(v map[uint8]uintptr, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint8]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25366,13 +26821,13 @@ func (_ fastpathT) DecMapUint8UintptrV(v map[uint8]uintptr, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint8IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]int) + vp := rv.Addr().Interface().(*map[uint8]int) v, changed := fastpathTV.DecMapUint8IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]int) + v := rv.Interface().(map[uint8]int) fastpathTV.DecMapUint8IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -25393,33 +26848,43 @@ func (_ fastpathT) DecMapUint8IntV(v map[uint8]int, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint8]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25430,13 +26895,13 @@ func (_ fastpathT) DecMapUint8IntV(v map[uint8]int, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapUint8Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]int8) + vp := rv.Addr().Interface().(*map[uint8]int8) v, changed := fastpathTV.DecMapUint8Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]int8) + v := rv.Interface().(map[uint8]int8) fastpathTV.DecMapUint8Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25457,33 +26922,43 @@ func (_ fastpathT) DecMapUint8Int8V(v map[uint8]int8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[uint8]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25494,13 +26969,13 @@ func (_ fastpathT) DecMapUint8Int8V(v map[uint8]int8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUint8Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]int16) + vp := rv.Addr().Interface().(*map[uint8]int16) v, changed := fastpathTV.DecMapUint8Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]int16) + v := rv.Interface().(map[uint8]int16) fastpathTV.DecMapUint8Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25521,33 +26996,43 @@ func (_ fastpathT) DecMapUint8Int16V(v map[uint8]int16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[uint8]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25558,13 +27043,13 @@ func (_ fastpathT) DecMapUint8Int16V(v map[uint8]int16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint8Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]int32) + vp := rv.Addr().Interface().(*map[uint8]int32) v, changed := fastpathTV.DecMapUint8Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]int32) + v := rv.Interface().(map[uint8]int32) fastpathTV.DecMapUint8Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25585,33 +27070,43 @@ func (_ fastpathT) DecMapUint8Int32V(v map[uint8]int32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[uint8]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25622,13 +27117,13 @@ func (_ fastpathT) DecMapUint8Int32V(v map[uint8]int32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint8Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]int64) + vp := rv.Addr().Interface().(*map[uint8]int64) v, changed := fastpathTV.DecMapUint8Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]int64) + v := rv.Interface().(map[uint8]int64) fastpathTV.DecMapUint8Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25649,33 +27144,43 @@ func (_ fastpathT) DecMapUint8Int64V(v map[uint8]int64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint8]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25686,13 +27191,13 @@ func (_ fastpathT) DecMapUint8Int64V(v map[uint8]int64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint8Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]float32) + vp := rv.Addr().Interface().(*map[uint8]float32) v, changed := fastpathTV.DecMapUint8Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]float32) + v := rv.Interface().(map[uint8]float32) fastpathTV.DecMapUint8Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25713,33 +27218,43 @@ func (_ fastpathT) DecMapUint8Float32V(v map[uint8]float32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[uint8]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25750,13 +27265,13 @@ func (_ fastpathT) DecMapUint8Float32V(v map[uint8]float32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint8Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]float64) + vp := rv.Addr().Interface().(*map[uint8]float64) v, changed := fastpathTV.DecMapUint8Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]float64) + v := rv.Interface().(map[uint8]float64) fastpathTV.DecMapUint8Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -25777,33 +27292,43 @@ func (_ fastpathT) DecMapUint8Float64V(v map[uint8]float64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint8]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25814,13 +27339,13 @@ func (_ fastpathT) DecMapUint8Float64V(v map[uint8]float64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint8BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint8]bool) + vp := rv.Addr().Interface().(*map[uint8]bool) v, changed := fastpathTV.DecMapUint8BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint8]bool) + v := rv.Interface().(map[uint8]bool) fastpathTV.DecMapUint8BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -25841,33 +27366,43 @@ func (_ fastpathT) DecMapUint8BoolV(v map[uint8]bool, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[uint8]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint8 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = uint8(dd.DecodeUint(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25878,13 +27413,13 @@ func (_ fastpathT) DecMapUint8BoolV(v map[uint8]bool, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUint16IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]interface{}) + vp := rv.Addr().Interface().(*map[uint16]interface{}) v, changed := fastpathTV.DecMapUint16IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]interface{}) + v := rv.Interface().(map[uint16]interface{}) fastpathTV.DecMapUint16IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -25905,38 +27440,53 @@ func (_ fastpathT) DecMapUint16IntfV(v map[uint16]interface{}, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[uint16]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk uint16 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -25947,13 +27497,13 @@ func (_ fastpathT) DecMapUint16IntfV(v map[uint16]interface{}, checkNil bool, ca func (f *decFnInfo) fastpathDecMapUint16StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]string) + vp := rv.Addr().Interface().(*map[uint16]string) v, changed := fastpathTV.DecMapUint16StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]string) + v := rv.Interface().(map[uint16]string) fastpathTV.DecMapUint16StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -25974,33 +27524,43 @@ func (_ fastpathT) DecMapUint16StringV(v map[uint16]string, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[uint16]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26011,13 +27571,13 @@ func (_ fastpathT) DecMapUint16StringV(v map[uint16]string, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint16UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]uint) + vp := rv.Addr().Interface().(*map[uint16]uint) v, changed := fastpathTV.DecMapUint16UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]uint) + v := rv.Interface().(map[uint16]uint) fastpathTV.DecMapUint16UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -26038,33 +27598,43 @@ func (_ fastpathT) DecMapUint16UintV(v map[uint16]uint, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint16]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26075,13 +27645,13 @@ func (_ fastpathT) DecMapUint16UintV(v map[uint16]uint, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint16Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]uint8) + vp := rv.Addr().Interface().(*map[uint16]uint8) v, changed := fastpathTV.DecMapUint16Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]uint8) + v := rv.Interface().(map[uint16]uint8) fastpathTV.DecMapUint16Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26102,33 +27672,43 @@ func (_ fastpathT) DecMapUint16Uint8V(v map[uint16]uint8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[uint16]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26139,13 +27719,13 @@ func (_ fastpathT) DecMapUint16Uint8V(v map[uint16]uint8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint16Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]uint16) + vp := rv.Addr().Interface().(*map[uint16]uint16) v, changed := fastpathTV.DecMapUint16Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]uint16) + v := rv.Interface().(map[uint16]uint16) fastpathTV.DecMapUint16Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26166,33 +27746,43 @@ func (_ fastpathT) DecMapUint16Uint16V(v map[uint16]uint16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 4) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) v = make(map[uint16]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26203,13 +27793,13 @@ func (_ fastpathT) DecMapUint16Uint16V(v map[uint16]uint16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint16Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]uint32) + vp := rv.Addr().Interface().(*map[uint16]uint32) v, changed := fastpathTV.DecMapUint16Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]uint32) + v := rv.Interface().(map[uint16]uint32) fastpathTV.DecMapUint16Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26230,33 +27820,43 @@ func (_ fastpathT) DecMapUint16Uint32V(v map[uint16]uint32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[uint16]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26267,13 +27867,13 @@ func (_ fastpathT) DecMapUint16Uint32V(v map[uint16]uint32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint16Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]uint64) + vp := rv.Addr().Interface().(*map[uint16]uint64) v, changed := fastpathTV.DecMapUint16Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]uint64) + v := rv.Interface().(map[uint16]uint64) fastpathTV.DecMapUint16Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26294,33 +27894,43 @@ func (_ fastpathT) DecMapUint16Uint64V(v map[uint16]uint64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint16]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26331,13 +27941,13 @@ func (_ fastpathT) DecMapUint16Uint64V(v map[uint16]uint64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint16UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]uintptr) + vp := rv.Addr().Interface().(*map[uint16]uintptr) v, changed := fastpathTV.DecMapUint16UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]uintptr) + v := rv.Interface().(map[uint16]uintptr) fastpathTV.DecMapUint16UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -26358,33 +27968,43 @@ func (_ fastpathT) DecMapUint16UintptrV(v map[uint16]uintptr, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint16]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26395,13 +28015,13 @@ func (_ fastpathT) DecMapUint16UintptrV(v map[uint16]uintptr, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint16IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]int) + vp := rv.Addr().Interface().(*map[uint16]int) v, changed := fastpathTV.DecMapUint16IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]int) + v := rv.Interface().(map[uint16]int) fastpathTV.DecMapUint16IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -26422,33 +28042,43 @@ func (_ fastpathT) DecMapUint16IntV(v map[uint16]int, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint16]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26459,13 +28089,13 @@ func (_ fastpathT) DecMapUint16IntV(v map[uint16]int, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUint16Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]int8) + vp := rv.Addr().Interface().(*map[uint16]int8) v, changed := fastpathTV.DecMapUint16Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]int8) + v := rv.Interface().(map[uint16]int8) fastpathTV.DecMapUint16Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26486,33 +28116,43 @@ func (_ fastpathT) DecMapUint16Int8V(v map[uint16]int8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[uint16]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26523,13 +28163,13 @@ func (_ fastpathT) DecMapUint16Int8V(v map[uint16]int8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint16Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]int16) + vp := rv.Addr().Interface().(*map[uint16]int16) v, changed := fastpathTV.DecMapUint16Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]int16) + v := rv.Interface().(map[uint16]int16) fastpathTV.DecMapUint16Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26550,33 +28190,43 @@ func (_ fastpathT) DecMapUint16Int16V(v map[uint16]int16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 4) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) v = make(map[uint16]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26587,13 +28237,13 @@ func (_ fastpathT) DecMapUint16Int16V(v map[uint16]int16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint16Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]int32) + vp := rv.Addr().Interface().(*map[uint16]int32) v, changed := fastpathTV.DecMapUint16Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]int32) + v := rv.Interface().(map[uint16]int32) fastpathTV.DecMapUint16Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26614,33 +28264,43 @@ func (_ fastpathT) DecMapUint16Int32V(v map[uint16]int32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[uint16]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26651,13 +28311,13 @@ func (_ fastpathT) DecMapUint16Int32V(v map[uint16]int32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint16Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]int64) + vp := rv.Addr().Interface().(*map[uint16]int64) v, changed := fastpathTV.DecMapUint16Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]int64) + v := rv.Interface().(map[uint16]int64) fastpathTV.DecMapUint16Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26678,33 +28338,43 @@ func (_ fastpathT) DecMapUint16Int64V(v map[uint16]int64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint16]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26715,13 +28385,13 @@ func (_ fastpathT) DecMapUint16Int64V(v map[uint16]int64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint16Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]float32) + vp := rv.Addr().Interface().(*map[uint16]float32) v, changed := fastpathTV.DecMapUint16Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]float32) + v := rv.Interface().(map[uint16]float32) fastpathTV.DecMapUint16Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26742,33 +28412,43 @@ func (_ fastpathT) DecMapUint16Float32V(v map[uint16]float32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[uint16]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26779,13 +28459,13 @@ func (_ fastpathT) DecMapUint16Float32V(v map[uint16]float32, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint16Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]float64) + vp := rv.Addr().Interface().(*map[uint16]float64) v, changed := fastpathTV.DecMapUint16Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]float64) + v := rv.Interface().(map[uint16]float64) fastpathTV.DecMapUint16Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -26806,33 +28486,43 @@ func (_ fastpathT) DecMapUint16Float64V(v map[uint16]float64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint16]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26843,13 +28533,13 @@ func (_ fastpathT) DecMapUint16Float64V(v map[uint16]float64, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint16BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint16]bool) + vp := rv.Addr().Interface().(*map[uint16]bool) v, changed := fastpathTV.DecMapUint16BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint16]bool) + v := rv.Interface().(map[uint16]bool) fastpathTV.DecMapUint16BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -26870,33 +28560,43 @@ func (_ fastpathT) DecMapUint16BoolV(v map[uint16]bool, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[uint16]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint16 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = uint16(dd.DecodeUint(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26907,13 +28607,13 @@ func (_ fastpathT) DecMapUint16BoolV(v map[uint16]bool, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint32IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]interface{}) + vp := rv.Addr().Interface().(*map[uint32]interface{}) v, changed := fastpathTV.DecMapUint32IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]interface{}) + v := rv.Interface().(map[uint32]interface{}) fastpathTV.DecMapUint32IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -26934,38 +28634,53 @@ func (_ fastpathT) DecMapUint32IntfV(v map[uint32]interface{}, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[uint32]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk uint32 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -26976,13 +28691,13 @@ func (_ fastpathT) DecMapUint32IntfV(v map[uint32]interface{}, checkNil bool, ca func (f *decFnInfo) fastpathDecMapUint32StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]string) + vp := rv.Addr().Interface().(*map[uint32]string) v, changed := fastpathTV.DecMapUint32StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]string) + v := rv.Interface().(map[uint32]string) fastpathTV.DecMapUint32StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -27003,33 +28718,43 @@ func (_ fastpathT) DecMapUint32StringV(v map[uint32]string, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[uint32]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27040,13 +28765,13 @@ func (_ fastpathT) DecMapUint32StringV(v map[uint32]string, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint32UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]uint) + vp := rv.Addr().Interface().(*map[uint32]uint) v, changed := fastpathTV.DecMapUint32UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]uint) + v := rv.Interface().(map[uint32]uint) fastpathTV.DecMapUint32UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -27067,33 +28792,43 @@ func (_ fastpathT) DecMapUint32UintV(v map[uint32]uint, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint32]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27104,13 +28839,13 @@ func (_ fastpathT) DecMapUint32UintV(v map[uint32]uint, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint32Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]uint8) + vp := rv.Addr().Interface().(*map[uint32]uint8) v, changed := fastpathTV.DecMapUint32Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]uint8) + v := rv.Interface().(map[uint32]uint8) fastpathTV.DecMapUint32Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27131,33 +28866,43 @@ func (_ fastpathT) DecMapUint32Uint8V(v map[uint32]uint8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[uint32]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27168,13 +28913,13 @@ func (_ fastpathT) DecMapUint32Uint8V(v map[uint32]uint8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint32Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]uint16) + vp := rv.Addr().Interface().(*map[uint32]uint16) v, changed := fastpathTV.DecMapUint32Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]uint16) + v := rv.Interface().(map[uint32]uint16) fastpathTV.DecMapUint32Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27195,33 +28940,43 @@ func (_ fastpathT) DecMapUint32Uint16V(v map[uint32]uint16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[uint32]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27232,13 +28987,13 @@ func (_ fastpathT) DecMapUint32Uint16V(v map[uint32]uint16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint32Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]uint32) + vp := rv.Addr().Interface().(*map[uint32]uint32) v, changed := fastpathTV.DecMapUint32Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]uint32) + v := rv.Interface().(map[uint32]uint32) fastpathTV.DecMapUint32Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27259,33 +29014,43 @@ func (_ fastpathT) DecMapUint32Uint32V(v map[uint32]uint32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[uint32]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27296,13 +29061,13 @@ func (_ fastpathT) DecMapUint32Uint32V(v map[uint32]uint32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint32Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]uint64) + vp := rv.Addr().Interface().(*map[uint32]uint64) v, changed := fastpathTV.DecMapUint32Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]uint64) + v := rv.Interface().(map[uint32]uint64) fastpathTV.DecMapUint32Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27323,33 +29088,43 @@ func (_ fastpathT) DecMapUint32Uint64V(v map[uint32]uint64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint32]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27360,13 +29135,13 @@ func (_ fastpathT) DecMapUint32Uint64V(v map[uint32]uint64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint32UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]uintptr) + vp := rv.Addr().Interface().(*map[uint32]uintptr) v, changed := fastpathTV.DecMapUint32UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]uintptr) + v := rv.Interface().(map[uint32]uintptr) fastpathTV.DecMapUint32UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -27387,33 +29162,43 @@ func (_ fastpathT) DecMapUint32UintptrV(v map[uint32]uintptr, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint32]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27424,13 +29209,13 @@ func (_ fastpathT) DecMapUint32UintptrV(v map[uint32]uintptr, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint32IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]int) + vp := rv.Addr().Interface().(*map[uint32]int) v, changed := fastpathTV.DecMapUint32IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]int) + v := rv.Interface().(map[uint32]int) fastpathTV.DecMapUint32IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -27451,33 +29236,43 @@ func (_ fastpathT) DecMapUint32IntV(v map[uint32]int, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint32]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27488,13 +29283,13 @@ func (_ fastpathT) DecMapUint32IntV(v map[uint32]int, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUint32Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]int8) + vp := rv.Addr().Interface().(*map[uint32]int8) v, changed := fastpathTV.DecMapUint32Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]int8) + v := rv.Interface().(map[uint32]int8) fastpathTV.DecMapUint32Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27515,33 +29310,43 @@ func (_ fastpathT) DecMapUint32Int8V(v map[uint32]int8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[uint32]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27552,13 +29357,13 @@ func (_ fastpathT) DecMapUint32Int8V(v map[uint32]int8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint32Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]int16) + vp := rv.Addr().Interface().(*map[uint32]int16) v, changed := fastpathTV.DecMapUint32Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]int16) + v := rv.Interface().(map[uint32]int16) fastpathTV.DecMapUint32Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27579,33 +29384,43 @@ func (_ fastpathT) DecMapUint32Int16V(v map[uint32]int16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[uint32]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27616,13 +29431,13 @@ func (_ fastpathT) DecMapUint32Int16V(v map[uint32]int16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint32Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]int32) + vp := rv.Addr().Interface().(*map[uint32]int32) v, changed := fastpathTV.DecMapUint32Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]int32) + v := rv.Interface().(map[uint32]int32) fastpathTV.DecMapUint32Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27643,33 +29458,43 @@ func (_ fastpathT) DecMapUint32Int32V(v map[uint32]int32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[uint32]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27680,13 +29505,13 @@ func (_ fastpathT) DecMapUint32Int32V(v map[uint32]int32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint32Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]int64) + vp := rv.Addr().Interface().(*map[uint32]int64) v, changed := fastpathTV.DecMapUint32Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]int64) + v := rv.Interface().(map[uint32]int64) fastpathTV.DecMapUint32Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27707,33 +29532,43 @@ func (_ fastpathT) DecMapUint32Int64V(v map[uint32]int64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint32]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27744,13 +29579,13 @@ func (_ fastpathT) DecMapUint32Int64V(v map[uint32]int64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint32Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]float32) + vp := rv.Addr().Interface().(*map[uint32]float32) v, changed := fastpathTV.DecMapUint32Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]float32) + v := rv.Interface().(map[uint32]float32) fastpathTV.DecMapUint32Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27771,33 +29606,43 @@ func (_ fastpathT) DecMapUint32Float32V(v map[uint32]float32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[uint32]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27808,13 +29653,13 @@ func (_ fastpathT) DecMapUint32Float32V(v map[uint32]float32, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint32Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]float64) + vp := rv.Addr().Interface().(*map[uint32]float64) v, changed := fastpathTV.DecMapUint32Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]float64) + v := rv.Interface().(map[uint32]float64) fastpathTV.DecMapUint32Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -27835,33 +29680,43 @@ func (_ fastpathT) DecMapUint32Float64V(v map[uint32]float64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint32]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27872,13 +29727,13 @@ func (_ fastpathT) DecMapUint32Float64V(v map[uint32]float64, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint32BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint32]bool) + vp := rv.Addr().Interface().(*map[uint32]bool) v, changed := fastpathTV.DecMapUint32BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint32]bool) + v := rv.Interface().(map[uint32]bool) fastpathTV.DecMapUint32BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -27899,33 +29754,43 @@ func (_ fastpathT) DecMapUint32BoolV(v map[uint32]bool, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[uint32]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint32 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = uint32(dd.DecodeUint(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -27936,13 +29801,13 @@ func (_ fastpathT) DecMapUint32BoolV(v map[uint32]bool, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint64IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]interface{}) + vp := rv.Addr().Interface().(*map[uint64]interface{}) v, changed := fastpathTV.DecMapUint64IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]interface{}) + v := rv.Interface().(map[uint64]interface{}) fastpathTV.DecMapUint64IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -27963,38 +29828,53 @@ func (_ fastpathT) DecMapUint64IntfV(v map[uint64]interface{}, checkNil bool, ca } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[uint64]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk uint64 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28005,13 +29885,13 @@ func (_ fastpathT) DecMapUint64IntfV(v map[uint64]interface{}, checkNil bool, ca func (f *decFnInfo) fastpathDecMapUint64StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]string) + vp := rv.Addr().Interface().(*map[uint64]string) v, changed := fastpathTV.DecMapUint64StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]string) + v := rv.Interface().(map[uint64]string) fastpathTV.DecMapUint64StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -28032,33 +29912,43 @@ func (_ fastpathT) DecMapUint64StringV(v map[uint64]string, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[uint64]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28069,13 +29959,13 @@ func (_ fastpathT) DecMapUint64StringV(v map[uint64]string, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint64UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]uint) + vp := rv.Addr().Interface().(*map[uint64]uint) v, changed := fastpathTV.DecMapUint64UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]uint) + v := rv.Interface().(map[uint64]uint) fastpathTV.DecMapUint64UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -28096,33 +29986,43 @@ func (_ fastpathT) DecMapUint64UintV(v map[uint64]uint, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint64]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28133,13 +30033,13 @@ func (_ fastpathT) DecMapUint64UintV(v map[uint64]uint, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint64Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]uint8) + vp := rv.Addr().Interface().(*map[uint64]uint8) v, changed := fastpathTV.DecMapUint64Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]uint8) + v := rv.Interface().(map[uint64]uint8) fastpathTV.DecMapUint64Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28160,33 +30060,43 @@ func (_ fastpathT) DecMapUint64Uint8V(v map[uint64]uint8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint64]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28197,13 +30107,13 @@ func (_ fastpathT) DecMapUint64Uint8V(v map[uint64]uint8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint64Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]uint16) + vp := rv.Addr().Interface().(*map[uint64]uint16) v, changed := fastpathTV.DecMapUint64Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]uint16) + v := rv.Interface().(map[uint64]uint16) fastpathTV.DecMapUint64Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28224,33 +30134,43 @@ func (_ fastpathT) DecMapUint64Uint16V(v map[uint64]uint16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint64]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28261,13 +30181,13 @@ func (_ fastpathT) DecMapUint64Uint16V(v map[uint64]uint16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint64Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]uint32) + vp := rv.Addr().Interface().(*map[uint64]uint32) v, changed := fastpathTV.DecMapUint64Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]uint32) + v := rv.Interface().(map[uint64]uint32) fastpathTV.DecMapUint64Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28288,33 +30208,43 @@ func (_ fastpathT) DecMapUint64Uint32V(v map[uint64]uint32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint64]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28325,13 +30255,13 @@ func (_ fastpathT) DecMapUint64Uint32V(v map[uint64]uint32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint64Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]uint64) + vp := rv.Addr().Interface().(*map[uint64]uint64) v, changed := fastpathTV.DecMapUint64Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]uint64) + v := rv.Interface().(map[uint64]uint64) fastpathTV.DecMapUint64Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28352,33 +30282,43 @@ func (_ fastpathT) DecMapUint64Uint64V(v map[uint64]uint64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint64]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28389,13 +30329,13 @@ func (_ fastpathT) DecMapUint64Uint64V(v map[uint64]uint64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUint64UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]uintptr) + vp := rv.Addr().Interface().(*map[uint64]uintptr) v, changed := fastpathTV.DecMapUint64UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]uintptr) + v := rv.Interface().(map[uint64]uintptr) fastpathTV.DecMapUint64UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -28416,33 +30356,43 @@ func (_ fastpathT) DecMapUint64UintptrV(v map[uint64]uintptr, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint64]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28453,13 +30403,13 @@ func (_ fastpathT) DecMapUint64UintptrV(v map[uint64]uintptr, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint64IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]int) + vp := rv.Addr().Interface().(*map[uint64]int) v, changed := fastpathTV.DecMapUint64IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]int) + v := rv.Interface().(map[uint64]int) fastpathTV.DecMapUint64IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -28480,33 +30430,43 @@ func (_ fastpathT) DecMapUint64IntV(v map[uint64]int, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint64]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28517,13 +30477,13 @@ func (_ fastpathT) DecMapUint64IntV(v map[uint64]int, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapUint64Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]int8) + vp := rv.Addr().Interface().(*map[uint64]int8) v, changed := fastpathTV.DecMapUint64Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]int8) + v := rv.Interface().(map[uint64]int8) fastpathTV.DecMapUint64Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28544,33 +30504,43 @@ func (_ fastpathT) DecMapUint64Int8V(v map[uint64]int8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint64]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28581,13 +30551,13 @@ func (_ fastpathT) DecMapUint64Int8V(v map[uint64]int8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUint64Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]int16) + vp := rv.Addr().Interface().(*map[uint64]int16) v, changed := fastpathTV.DecMapUint64Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]int16) + v := rv.Interface().(map[uint64]int16) fastpathTV.DecMapUint64Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28608,33 +30578,43 @@ func (_ fastpathT) DecMapUint64Int16V(v map[uint64]int16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uint64]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28645,13 +30625,13 @@ func (_ fastpathT) DecMapUint64Int16V(v map[uint64]int16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint64Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]int32) + vp := rv.Addr().Interface().(*map[uint64]int32) v, changed := fastpathTV.DecMapUint64Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]int32) + v := rv.Interface().(map[uint64]int32) fastpathTV.DecMapUint64Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28672,33 +30652,43 @@ func (_ fastpathT) DecMapUint64Int32V(v map[uint64]int32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint64]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28709,13 +30699,13 @@ func (_ fastpathT) DecMapUint64Int32V(v map[uint64]int32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint64Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]int64) + vp := rv.Addr().Interface().(*map[uint64]int64) v, changed := fastpathTV.DecMapUint64Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]int64) + v := rv.Interface().(map[uint64]int64) fastpathTV.DecMapUint64Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28736,33 +30726,43 @@ func (_ fastpathT) DecMapUint64Int64V(v map[uint64]int64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint64]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28773,13 +30773,13 @@ func (_ fastpathT) DecMapUint64Int64V(v map[uint64]int64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUint64Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]float32) + vp := rv.Addr().Interface().(*map[uint64]float32) v, changed := fastpathTV.DecMapUint64Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]float32) + v := rv.Interface().(map[uint64]float32) fastpathTV.DecMapUint64Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28800,33 +30800,43 @@ func (_ fastpathT) DecMapUint64Float32V(v map[uint64]float32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uint64]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28837,13 +30847,13 @@ func (_ fastpathT) DecMapUint64Float32V(v map[uint64]float32, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint64Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]float64) + vp := rv.Addr().Interface().(*map[uint64]float64) v, changed := fastpathTV.DecMapUint64Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]float64) + v := rv.Interface().(map[uint64]float64) fastpathTV.DecMapUint64Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -28864,33 +30874,43 @@ func (_ fastpathT) DecMapUint64Float64V(v map[uint64]float64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uint64]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28901,13 +30921,13 @@ func (_ fastpathT) DecMapUint64Float64V(v map[uint64]float64, checkNil bool, can func (f *decFnInfo) fastpathDecMapUint64BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uint64]bool) + vp := rv.Addr().Interface().(*map[uint64]bool) v, changed := fastpathTV.DecMapUint64BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uint64]bool) + v := rv.Interface().(map[uint64]bool) fastpathTV.DecMapUint64BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -28928,33 +30948,43 @@ func (_ fastpathT) DecMapUint64BoolV(v map[uint64]bool, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uint64]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uint64 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeUint(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -28965,13 +30995,13 @@ func (_ fastpathT) DecMapUint64BoolV(v map[uint64]bool, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUintptrIntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]interface{}) + vp := rv.Addr().Interface().(*map[uintptr]interface{}) v, changed := fastpathTV.DecMapUintptrIntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]interface{}) + v := rv.Interface().(map[uintptr]interface{}) fastpathTV.DecMapUintptrIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -28992,38 +31022,53 @@ func (_ fastpathT) DecMapUintptrIntfV(v map[uintptr]interface{}, checkNil bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[uintptr]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk uintptr var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29034,13 +31079,13 @@ func (_ fastpathT) DecMapUintptrIntfV(v map[uintptr]interface{}, checkNil bool, func (f *decFnInfo) fastpathDecMapUintptrStringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]string) + vp := rv.Addr().Interface().(*map[uintptr]string) v, changed := fastpathTV.DecMapUintptrStringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]string) + v := rv.Interface().(map[uintptr]string) fastpathTV.DecMapUintptrStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -29061,33 +31106,43 @@ func (_ fastpathT) DecMapUintptrStringV(v map[uintptr]string, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[uintptr]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29098,13 +31153,13 @@ func (_ fastpathT) DecMapUintptrStringV(v map[uintptr]string, checkNil bool, can func (f *decFnInfo) fastpathDecMapUintptrUintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]uint) + vp := rv.Addr().Interface().(*map[uintptr]uint) v, changed := fastpathTV.DecMapUintptrUintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]uint) + v := rv.Interface().(map[uintptr]uint) fastpathTV.DecMapUintptrUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -29125,33 +31180,43 @@ func (_ fastpathT) DecMapUintptrUintV(v map[uintptr]uint, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uintptr]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29162,13 +31227,13 @@ func (_ fastpathT) DecMapUintptrUintV(v map[uintptr]uint, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUintptrUint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]uint8) + vp := rv.Addr().Interface().(*map[uintptr]uint8) v, changed := fastpathTV.DecMapUintptrUint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]uint8) + v := rv.Interface().(map[uintptr]uint8) fastpathTV.DecMapUintptrUint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29189,33 +31254,43 @@ func (_ fastpathT) DecMapUintptrUint8V(v map[uintptr]uint8, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uintptr]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29226,13 +31301,13 @@ func (_ fastpathT) DecMapUintptrUint8V(v map[uintptr]uint8, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUintptrUint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]uint16) + vp := rv.Addr().Interface().(*map[uintptr]uint16) v, changed := fastpathTV.DecMapUintptrUint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]uint16) + v := rv.Interface().(map[uintptr]uint16) fastpathTV.DecMapUintptrUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29253,33 +31328,43 @@ func (_ fastpathT) DecMapUintptrUint16V(v map[uintptr]uint16, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uintptr]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29290,13 +31375,13 @@ func (_ fastpathT) DecMapUintptrUint16V(v map[uintptr]uint16, checkNil bool, can func (f *decFnInfo) fastpathDecMapUintptrUint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]uint32) + vp := rv.Addr().Interface().(*map[uintptr]uint32) v, changed := fastpathTV.DecMapUintptrUint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]uint32) + v := rv.Interface().(map[uintptr]uint32) fastpathTV.DecMapUintptrUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29317,33 +31402,43 @@ func (_ fastpathT) DecMapUintptrUint32V(v map[uintptr]uint32, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uintptr]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29354,13 +31449,13 @@ func (_ fastpathT) DecMapUintptrUint32V(v map[uintptr]uint32, checkNil bool, can func (f *decFnInfo) fastpathDecMapUintptrUint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]uint64) + vp := rv.Addr().Interface().(*map[uintptr]uint64) v, changed := fastpathTV.DecMapUintptrUint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]uint64) + v := rv.Interface().(map[uintptr]uint64) fastpathTV.DecMapUintptrUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29381,33 +31476,43 @@ func (_ fastpathT) DecMapUintptrUint64V(v map[uintptr]uint64, checkNil bool, can } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uintptr]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29418,13 +31523,13 @@ func (_ fastpathT) DecMapUintptrUint64V(v map[uintptr]uint64, checkNil bool, can func (f *decFnInfo) fastpathDecMapUintptrUintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]uintptr) + vp := rv.Addr().Interface().(*map[uintptr]uintptr) v, changed := fastpathTV.DecMapUintptrUintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]uintptr) + v := rv.Interface().(map[uintptr]uintptr) fastpathTV.DecMapUintptrUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -29445,33 +31550,43 @@ func (_ fastpathT) DecMapUintptrUintptrV(v map[uintptr]uintptr, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uintptr]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29482,13 +31597,13 @@ func (_ fastpathT) DecMapUintptrUintptrV(v map[uintptr]uintptr, checkNil bool, c func (f *decFnInfo) fastpathDecMapUintptrIntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]int) + vp := rv.Addr().Interface().(*map[uintptr]int) v, changed := fastpathTV.DecMapUintptrIntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]int) + v := rv.Interface().(map[uintptr]int) fastpathTV.DecMapUintptrIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -29509,33 +31624,43 @@ func (_ fastpathT) DecMapUintptrIntV(v map[uintptr]int, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uintptr]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29546,13 +31671,13 @@ func (_ fastpathT) DecMapUintptrIntV(v map[uintptr]int, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapUintptrInt8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]int8) + vp := rv.Addr().Interface().(*map[uintptr]int8) v, changed := fastpathTV.DecMapUintptrInt8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]int8) + v := rv.Interface().(map[uintptr]int8) fastpathTV.DecMapUintptrInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29573,33 +31698,43 @@ func (_ fastpathT) DecMapUintptrInt8V(v map[uintptr]int8, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uintptr]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29610,13 +31745,13 @@ func (_ fastpathT) DecMapUintptrInt8V(v map[uintptr]int8, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapUintptrInt16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]int16) + vp := rv.Addr().Interface().(*map[uintptr]int16) v, changed := fastpathTV.DecMapUintptrInt16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]int16) + v := rv.Interface().(map[uintptr]int16) fastpathTV.DecMapUintptrInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29637,33 +31772,43 @@ func (_ fastpathT) DecMapUintptrInt16V(v map[uintptr]int16, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[uintptr]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29674,13 +31819,13 @@ func (_ fastpathT) DecMapUintptrInt16V(v map[uintptr]int16, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUintptrInt32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]int32) + vp := rv.Addr().Interface().(*map[uintptr]int32) v, changed := fastpathTV.DecMapUintptrInt32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]int32) + v := rv.Interface().(map[uintptr]int32) fastpathTV.DecMapUintptrInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29701,33 +31846,43 @@ func (_ fastpathT) DecMapUintptrInt32V(v map[uintptr]int32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uintptr]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29738,13 +31893,13 @@ func (_ fastpathT) DecMapUintptrInt32V(v map[uintptr]int32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUintptrInt64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]int64) + vp := rv.Addr().Interface().(*map[uintptr]int64) v, changed := fastpathTV.DecMapUintptrInt64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]int64) + v := rv.Interface().(map[uintptr]int64) fastpathTV.DecMapUintptrInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29765,33 +31920,43 @@ func (_ fastpathT) DecMapUintptrInt64V(v map[uintptr]int64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uintptr]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29802,13 +31967,13 @@ func (_ fastpathT) DecMapUintptrInt64V(v map[uintptr]int64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapUintptrFloat32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]float32) + vp := rv.Addr().Interface().(*map[uintptr]float32) v, changed := fastpathTV.DecMapUintptrFloat32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]float32) + v := rv.Interface().(map[uintptr]float32) fastpathTV.DecMapUintptrFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29829,33 +31994,43 @@ func (_ fastpathT) DecMapUintptrFloat32V(v map[uintptr]float32, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[uintptr]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29866,13 +32041,13 @@ func (_ fastpathT) DecMapUintptrFloat32V(v map[uintptr]float32, checkNil bool, c func (f *decFnInfo) fastpathDecMapUintptrFloat64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]float64) + vp := rv.Addr().Interface().(*map[uintptr]float64) v, changed := fastpathTV.DecMapUintptrFloat64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]float64) + v := rv.Interface().(map[uintptr]float64) fastpathTV.DecMapUintptrFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -29893,33 +32068,43 @@ func (_ fastpathT) DecMapUintptrFloat64V(v map[uintptr]float64, checkNil bool, c } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[uintptr]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29930,13 +32115,13 @@ func (_ fastpathT) DecMapUintptrFloat64V(v map[uintptr]float64, checkNil bool, c func (f *decFnInfo) fastpathDecMapUintptrBoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[uintptr]bool) + vp := rv.Addr().Interface().(*map[uintptr]bool) v, changed := fastpathTV.DecMapUintptrBoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[uintptr]bool) + v := rv.Interface().(map[uintptr]bool) fastpathTV.DecMapUintptrBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -29957,33 +32142,43 @@ func (_ fastpathT) DecMapUintptrBoolV(v map[uintptr]bool, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[uintptr]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk uintptr var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = uintptr(dd.DecodeUint(uintBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -29994,13 +32189,13 @@ func (_ fastpathT) DecMapUintptrBoolV(v map[uintptr]bool, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapIntIntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]interface{}) + vp := rv.Addr().Interface().(*map[int]interface{}) v, changed := fastpathTV.DecMapIntIntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]interface{}) + v := rv.Interface().(map[int]interface{}) fastpathTV.DecMapIntIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -30021,38 +32216,53 @@ func (_ fastpathT) DecMapIntIntfV(v map[int]interface{}, checkNil bool, canChang } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[int]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk int var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30063,13 +32273,13 @@ func (_ fastpathT) DecMapIntIntfV(v map[int]interface{}, checkNil bool, canChang func (f *decFnInfo) fastpathDecMapIntStringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]string) + vp := rv.Addr().Interface().(*map[int]string) v, changed := fastpathTV.DecMapIntStringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]string) + v := rv.Interface().(map[int]string) fastpathTV.DecMapIntStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -30090,33 +32300,43 @@ func (_ fastpathT) DecMapIntStringV(v map[int]string, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[int]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30127,13 +32347,13 @@ func (_ fastpathT) DecMapIntStringV(v map[int]string, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapIntUintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]uint) + vp := rv.Addr().Interface().(*map[int]uint) v, changed := fastpathTV.DecMapIntUintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]uint) + v := rv.Interface().(map[int]uint) fastpathTV.DecMapIntUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -30154,33 +32374,43 @@ func (_ fastpathT) DecMapIntUintV(v map[int]uint, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30191,13 +32421,13 @@ func (_ fastpathT) DecMapIntUintV(v map[int]uint, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapIntUint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]uint8) + vp := rv.Addr().Interface().(*map[int]uint8) v, changed := fastpathTV.DecMapIntUint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]uint8) + v := rv.Interface().(map[int]uint8) fastpathTV.DecMapIntUint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30218,33 +32448,43 @@ func (_ fastpathT) DecMapIntUint8V(v map[int]uint8, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30255,13 +32495,13 @@ func (_ fastpathT) DecMapIntUint8V(v map[int]uint8, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapIntUint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]uint16) + vp := rv.Addr().Interface().(*map[int]uint16) v, changed := fastpathTV.DecMapIntUint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]uint16) + v := rv.Interface().(map[int]uint16) fastpathTV.DecMapIntUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30282,33 +32522,43 @@ func (_ fastpathT) DecMapIntUint16V(v map[int]uint16, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30319,13 +32569,13 @@ func (_ fastpathT) DecMapIntUint16V(v map[int]uint16, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapIntUint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]uint32) + vp := rv.Addr().Interface().(*map[int]uint32) v, changed := fastpathTV.DecMapIntUint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]uint32) + v := rv.Interface().(map[int]uint32) fastpathTV.DecMapIntUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30346,33 +32596,43 @@ func (_ fastpathT) DecMapIntUint32V(v map[int]uint32, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30383,13 +32643,13 @@ func (_ fastpathT) DecMapIntUint32V(v map[int]uint32, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapIntUint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]uint64) + vp := rv.Addr().Interface().(*map[int]uint64) v, changed := fastpathTV.DecMapIntUint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]uint64) + v := rv.Interface().(map[int]uint64) fastpathTV.DecMapIntUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30410,33 +32670,43 @@ func (_ fastpathT) DecMapIntUint64V(v map[int]uint64, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30447,13 +32717,13 @@ func (_ fastpathT) DecMapIntUint64V(v map[int]uint64, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapIntUintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]uintptr) + vp := rv.Addr().Interface().(*map[int]uintptr) v, changed := fastpathTV.DecMapIntUintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]uintptr) + v := rv.Interface().(map[int]uintptr) fastpathTV.DecMapIntUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -30474,33 +32744,43 @@ func (_ fastpathT) DecMapIntUintptrV(v map[int]uintptr, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30511,13 +32791,13 @@ func (_ fastpathT) DecMapIntUintptrV(v map[int]uintptr, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapIntIntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]int) + vp := rv.Addr().Interface().(*map[int]int) v, changed := fastpathTV.DecMapIntIntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]int) + v := rv.Interface().(map[int]int) fastpathTV.DecMapIntIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -30538,33 +32818,43 @@ func (_ fastpathT) DecMapIntIntV(v map[int]int, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30575,13 +32865,13 @@ func (_ fastpathT) DecMapIntIntV(v map[int]int, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapIntInt8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]int8) + vp := rv.Addr().Interface().(*map[int]int8) v, changed := fastpathTV.DecMapIntInt8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]int8) + v := rv.Interface().(map[int]int8) fastpathTV.DecMapIntInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30602,33 +32892,43 @@ func (_ fastpathT) DecMapIntInt8V(v map[int]int8, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30639,13 +32939,13 @@ func (_ fastpathT) DecMapIntInt8V(v map[int]int8, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapIntInt16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]int16) + vp := rv.Addr().Interface().(*map[int]int16) v, changed := fastpathTV.DecMapIntInt16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]int16) + v := rv.Interface().(map[int]int16) fastpathTV.DecMapIntInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30666,33 +32966,43 @@ func (_ fastpathT) DecMapIntInt16V(v map[int]int16, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30703,13 +33013,13 @@ func (_ fastpathT) DecMapIntInt16V(v map[int]int16, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapIntInt32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]int32) + vp := rv.Addr().Interface().(*map[int]int32) v, changed := fastpathTV.DecMapIntInt32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]int32) + v := rv.Interface().(map[int]int32) fastpathTV.DecMapIntInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30730,33 +33040,43 @@ func (_ fastpathT) DecMapIntInt32V(v map[int]int32, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30767,13 +33087,13 @@ func (_ fastpathT) DecMapIntInt32V(v map[int]int32, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapIntInt64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]int64) + vp := rv.Addr().Interface().(*map[int]int64) v, changed := fastpathTV.DecMapIntInt64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]int64) + v := rv.Interface().(map[int]int64) fastpathTV.DecMapIntInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30794,33 +33114,43 @@ func (_ fastpathT) DecMapIntInt64V(v map[int]int64, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30831,13 +33161,13 @@ func (_ fastpathT) DecMapIntInt64V(v map[int]int64, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapIntFloat32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]float32) + vp := rv.Addr().Interface().(*map[int]float32) v, changed := fastpathTV.DecMapIntFloat32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]float32) + v := rv.Interface().(map[int]float32) fastpathTV.DecMapIntFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30858,33 +33188,43 @@ func (_ fastpathT) DecMapIntFloat32V(v map[int]float32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30895,13 +33235,13 @@ func (_ fastpathT) DecMapIntFloat32V(v map[int]float32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapIntFloat64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]float64) + vp := rv.Addr().Interface().(*map[int]float64) v, changed := fastpathTV.DecMapIntFloat64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]float64) + v := rv.Interface().(map[int]float64) fastpathTV.DecMapIntFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -30922,33 +33262,43 @@ func (_ fastpathT) DecMapIntFloat64V(v map[int]float64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -30959,13 +33309,13 @@ func (_ fastpathT) DecMapIntFloat64V(v map[int]float64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapIntBoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int]bool) + vp := rv.Addr().Interface().(*map[int]bool) v, changed := fastpathTV.DecMapIntBoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int]bool) + v := rv.Interface().(map[int]bool) fastpathTV.DecMapIntBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -30986,33 +33336,43 @@ func (_ fastpathT) DecMapIntBoolV(v map[int]bool, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = int(dd.DecodeInt(intBitsize)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31023,13 +33383,13 @@ func (_ fastpathT) DecMapIntBoolV(v map[int]bool, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapInt8IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]interface{}) + vp := rv.Addr().Interface().(*map[int8]interface{}) v, changed := fastpathTV.DecMapInt8IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]interface{}) + v := rv.Interface().(map[int8]interface{}) fastpathTV.DecMapInt8IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -31050,38 +33410,53 @@ func (_ fastpathT) DecMapInt8IntfV(v map[int8]interface{}, checkNil bool, canCha } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[int8]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk int8 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31092,13 +33467,13 @@ func (_ fastpathT) DecMapInt8IntfV(v map[int8]interface{}, checkNil bool, canCha func (f *decFnInfo) fastpathDecMapInt8StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]string) + vp := rv.Addr().Interface().(*map[int8]string) v, changed := fastpathTV.DecMapInt8StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]string) + v := rv.Interface().(map[int8]string) fastpathTV.DecMapInt8StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -31119,33 +33494,43 @@ func (_ fastpathT) DecMapInt8StringV(v map[int8]string, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[int8]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31156,13 +33541,13 @@ func (_ fastpathT) DecMapInt8StringV(v map[int8]string, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt8UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]uint) + vp := rv.Addr().Interface().(*map[int8]uint) v, changed := fastpathTV.DecMapInt8UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]uint) + v := rv.Interface().(map[int8]uint) fastpathTV.DecMapInt8UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -31183,33 +33568,43 @@ func (_ fastpathT) DecMapInt8UintV(v map[int8]uint, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int8]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31220,13 +33615,13 @@ func (_ fastpathT) DecMapInt8UintV(v map[int8]uint, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapInt8Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]uint8) + vp := rv.Addr().Interface().(*map[int8]uint8) v, changed := fastpathTV.DecMapInt8Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]uint8) + v := rv.Interface().(map[int8]uint8) fastpathTV.DecMapInt8Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31247,33 +33642,43 @@ func (_ fastpathT) DecMapInt8Uint8V(v map[int8]uint8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[int8]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31284,13 +33689,13 @@ func (_ fastpathT) DecMapInt8Uint8V(v map[int8]uint8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt8Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]uint16) + vp := rv.Addr().Interface().(*map[int8]uint16) v, changed := fastpathTV.DecMapInt8Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]uint16) + v := rv.Interface().(map[int8]uint16) fastpathTV.DecMapInt8Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31311,33 +33716,43 @@ func (_ fastpathT) DecMapInt8Uint16V(v map[int8]uint16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[int8]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31348,13 +33763,13 @@ func (_ fastpathT) DecMapInt8Uint16V(v map[int8]uint16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt8Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]uint32) + vp := rv.Addr().Interface().(*map[int8]uint32) v, changed := fastpathTV.DecMapInt8Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]uint32) + v := rv.Interface().(map[int8]uint32) fastpathTV.DecMapInt8Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31375,33 +33790,43 @@ func (_ fastpathT) DecMapInt8Uint32V(v map[int8]uint32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[int8]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31412,13 +33837,13 @@ func (_ fastpathT) DecMapInt8Uint32V(v map[int8]uint32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt8Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]uint64) + vp := rv.Addr().Interface().(*map[int8]uint64) v, changed := fastpathTV.DecMapInt8Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]uint64) + v := rv.Interface().(map[int8]uint64) fastpathTV.DecMapInt8Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31439,33 +33864,43 @@ func (_ fastpathT) DecMapInt8Uint64V(v map[int8]uint64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int8]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31476,13 +33911,13 @@ func (_ fastpathT) DecMapInt8Uint64V(v map[int8]uint64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt8UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]uintptr) + vp := rv.Addr().Interface().(*map[int8]uintptr) v, changed := fastpathTV.DecMapInt8UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]uintptr) + v := rv.Interface().(map[int8]uintptr) fastpathTV.DecMapInt8UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -31503,33 +33938,43 @@ func (_ fastpathT) DecMapInt8UintptrV(v map[int8]uintptr, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int8]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31540,13 +33985,13 @@ func (_ fastpathT) DecMapInt8UintptrV(v map[int8]uintptr, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt8IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]int) + vp := rv.Addr().Interface().(*map[int8]int) v, changed := fastpathTV.DecMapInt8IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]int) + v := rv.Interface().(map[int8]int) fastpathTV.DecMapInt8IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -31567,33 +34012,43 @@ func (_ fastpathT) DecMapInt8IntV(v map[int8]int, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int8]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31604,13 +34059,13 @@ func (_ fastpathT) DecMapInt8IntV(v map[int8]int, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapInt8Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]int8) + vp := rv.Addr().Interface().(*map[int8]int8) v, changed := fastpathTV.DecMapInt8Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]int8) + v := rv.Interface().(map[int8]int8) fastpathTV.DecMapInt8Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31631,33 +34086,43 @@ func (_ fastpathT) DecMapInt8Int8V(v map[int8]int8, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[int8]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31668,13 +34133,13 @@ func (_ fastpathT) DecMapInt8Int8V(v map[int8]int8, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapInt8Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]int16) + vp := rv.Addr().Interface().(*map[int8]int16) v, changed := fastpathTV.DecMapInt8Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]int16) + v := rv.Interface().(map[int8]int16) fastpathTV.DecMapInt8Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31695,33 +34160,43 @@ func (_ fastpathT) DecMapInt8Int16V(v map[int8]int16, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[int8]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31732,13 +34207,13 @@ func (_ fastpathT) DecMapInt8Int16V(v map[int8]int16, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt8Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]int32) + vp := rv.Addr().Interface().(*map[int8]int32) v, changed := fastpathTV.DecMapInt8Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]int32) + v := rv.Interface().(map[int8]int32) fastpathTV.DecMapInt8Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31759,33 +34234,43 @@ func (_ fastpathT) DecMapInt8Int32V(v map[int8]int32, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[int8]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31796,13 +34281,13 @@ func (_ fastpathT) DecMapInt8Int32V(v map[int8]int32, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt8Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]int64) + vp := rv.Addr().Interface().(*map[int8]int64) v, changed := fastpathTV.DecMapInt8Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]int64) + v := rv.Interface().(map[int8]int64) fastpathTV.DecMapInt8Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31823,33 +34308,43 @@ func (_ fastpathT) DecMapInt8Int64V(v map[int8]int64, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int8]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31860,13 +34355,13 @@ func (_ fastpathT) DecMapInt8Int64V(v map[int8]int64, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt8Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]float32) + vp := rv.Addr().Interface().(*map[int8]float32) v, changed := fastpathTV.DecMapInt8Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]float32) + v := rv.Interface().(map[int8]float32) fastpathTV.DecMapInt8Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31887,33 +34382,43 @@ func (_ fastpathT) DecMapInt8Float32V(v map[int8]float32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[int8]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31924,13 +34429,13 @@ func (_ fastpathT) DecMapInt8Float32V(v map[int8]float32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt8Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]float64) + vp := rv.Addr().Interface().(*map[int8]float64) v, changed := fastpathTV.DecMapInt8Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]float64) + v := rv.Interface().(map[int8]float64) fastpathTV.DecMapInt8Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -31951,33 +34456,43 @@ func (_ fastpathT) DecMapInt8Float64V(v map[int8]float64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int8]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -31988,13 +34503,13 @@ func (_ fastpathT) DecMapInt8Float64V(v map[int8]float64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt8BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int8]bool) + vp := rv.Addr().Interface().(*map[int8]bool) v, changed := fastpathTV.DecMapInt8BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int8]bool) + v := rv.Interface().(map[int8]bool) fastpathTV.DecMapInt8BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -32015,33 +34530,43 @@ func (_ fastpathT) DecMapInt8BoolV(v map[int8]bool, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[int8]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int8 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = int8(dd.DecodeInt(8)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32052,13 +34577,13 @@ func (_ fastpathT) DecMapInt8BoolV(v map[int8]bool, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapInt16IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]interface{}) + vp := rv.Addr().Interface().(*map[int16]interface{}) v, changed := fastpathTV.DecMapInt16IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]interface{}) + v := rv.Interface().(map[int16]interface{}) fastpathTV.DecMapInt16IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -32079,38 +34604,53 @@ func (_ fastpathT) DecMapInt16IntfV(v map[int16]interface{}, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[int16]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk int16 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32121,13 +34661,13 @@ func (_ fastpathT) DecMapInt16IntfV(v map[int16]interface{}, checkNil bool, canC func (f *decFnInfo) fastpathDecMapInt16StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]string) + vp := rv.Addr().Interface().(*map[int16]string) v, changed := fastpathTV.DecMapInt16StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]string) + v := rv.Interface().(map[int16]string) fastpathTV.DecMapInt16StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -32148,33 +34688,43 @@ func (_ fastpathT) DecMapInt16StringV(v map[int16]string, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 18) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) v = make(map[int16]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32185,13 +34735,13 @@ func (_ fastpathT) DecMapInt16StringV(v map[int16]string, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt16UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]uint) + vp := rv.Addr().Interface().(*map[int16]uint) v, changed := fastpathTV.DecMapInt16UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]uint) + v := rv.Interface().(map[int16]uint) fastpathTV.DecMapInt16UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -32212,33 +34762,43 @@ func (_ fastpathT) DecMapInt16UintV(v map[int16]uint, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int16]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32249,13 +34809,13 @@ func (_ fastpathT) DecMapInt16UintV(v map[int16]uint, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt16Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]uint8) + vp := rv.Addr().Interface().(*map[int16]uint8) v, changed := fastpathTV.DecMapInt16Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]uint8) + v := rv.Interface().(map[int16]uint8) fastpathTV.DecMapInt16Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32276,33 +34836,43 @@ func (_ fastpathT) DecMapInt16Uint8V(v map[int16]uint8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[int16]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32313,13 +34883,13 @@ func (_ fastpathT) DecMapInt16Uint8V(v map[int16]uint8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt16Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]uint16) + vp := rv.Addr().Interface().(*map[int16]uint16) v, changed := fastpathTV.DecMapInt16Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]uint16) + v := rv.Interface().(map[int16]uint16) fastpathTV.DecMapInt16Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32340,33 +34910,43 @@ func (_ fastpathT) DecMapInt16Uint16V(v map[int16]uint16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 4) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) v = make(map[int16]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32377,13 +34957,13 @@ func (_ fastpathT) DecMapInt16Uint16V(v map[int16]uint16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt16Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]uint32) + vp := rv.Addr().Interface().(*map[int16]uint32) v, changed := fastpathTV.DecMapInt16Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]uint32) + v := rv.Interface().(map[int16]uint32) fastpathTV.DecMapInt16Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32404,33 +34984,43 @@ func (_ fastpathT) DecMapInt16Uint32V(v map[int16]uint32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[int16]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32441,13 +35031,13 @@ func (_ fastpathT) DecMapInt16Uint32V(v map[int16]uint32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt16Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]uint64) + vp := rv.Addr().Interface().(*map[int16]uint64) v, changed := fastpathTV.DecMapInt16Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]uint64) + v := rv.Interface().(map[int16]uint64) fastpathTV.DecMapInt16Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32468,33 +35058,43 @@ func (_ fastpathT) DecMapInt16Uint64V(v map[int16]uint64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int16]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32505,13 +35105,13 @@ func (_ fastpathT) DecMapInt16Uint64V(v map[int16]uint64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt16UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]uintptr) + vp := rv.Addr().Interface().(*map[int16]uintptr) v, changed := fastpathTV.DecMapInt16UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]uintptr) + v := rv.Interface().(map[int16]uintptr) fastpathTV.DecMapInt16UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -32532,33 +35132,43 @@ func (_ fastpathT) DecMapInt16UintptrV(v map[int16]uintptr, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int16]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32569,13 +35179,13 @@ func (_ fastpathT) DecMapInt16UintptrV(v map[int16]uintptr, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt16IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]int) + vp := rv.Addr().Interface().(*map[int16]int) v, changed := fastpathTV.DecMapInt16IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]int) + v := rv.Interface().(map[int16]int) fastpathTV.DecMapInt16IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -32596,33 +35206,43 @@ func (_ fastpathT) DecMapInt16IntV(v map[int16]int, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int16]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32633,13 +35253,13 @@ func (_ fastpathT) DecMapInt16IntV(v map[int16]int, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapInt16Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]int8) + vp := rv.Addr().Interface().(*map[int16]int8) v, changed := fastpathTV.DecMapInt16Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]int8) + v := rv.Interface().(map[int16]int8) fastpathTV.DecMapInt16Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32660,33 +35280,43 @@ func (_ fastpathT) DecMapInt16Int8V(v map[int16]int8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[int16]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32697,13 +35327,13 @@ func (_ fastpathT) DecMapInt16Int8V(v map[int16]int8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt16Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]int16) + vp := rv.Addr().Interface().(*map[int16]int16) v, changed := fastpathTV.DecMapInt16Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]int16) + v := rv.Interface().(map[int16]int16) fastpathTV.DecMapInt16Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32724,33 +35354,43 @@ func (_ fastpathT) DecMapInt16Int16V(v map[int16]int16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 4) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) v = make(map[int16]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32761,13 +35401,13 @@ func (_ fastpathT) DecMapInt16Int16V(v map[int16]int16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt16Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]int32) + vp := rv.Addr().Interface().(*map[int16]int32) v, changed := fastpathTV.DecMapInt16Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]int32) + v := rv.Interface().(map[int16]int32) fastpathTV.DecMapInt16Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32788,33 +35428,43 @@ func (_ fastpathT) DecMapInt16Int32V(v map[int16]int32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[int16]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32825,13 +35475,13 @@ func (_ fastpathT) DecMapInt16Int32V(v map[int16]int32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt16Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]int64) + vp := rv.Addr().Interface().(*map[int16]int64) v, changed := fastpathTV.DecMapInt16Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]int64) + v := rv.Interface().(map[int16]int64) fastpathTV.DecMapInt16Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32852,33 +35502,43 @@ func (_ fastpathT) DecMapInt16Int64V(v map[int16]int64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int16]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32889,13 +35549,13 @@ func (_ fastpathT) DecMapInt16Int64V(v map[int16]int64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt16Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]float32) + vp := rv.Addr().Interface().(*map[int16]float32) v, changed := fastpathTV.DecMapInt16Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]float32) + v := rv.Interface().(map[int16]float32) fastpathTV.DecMapInt16Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32916,33 +35576,43 @@ func (_ fastpathT) DecMapInt16Float32V(v map[int16]float32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[int16]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -32953,13 +35623,13 @@ func (_ fastpathT) DecMapInt16Float32V(v map[int16]float32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt16Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]float64) + vp := rv.Addr().Interface().(*map[int16]float64) v, changed := fastpathTV.DecMapInt16Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]float64) + v := rv.Interface().(map[int16]float64) fastpathTV.DecMapInt16Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -32980,33 +35650,43 @@ func (_ fastpathT) DecMapInt16Float64V(v map[int16]float64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int16]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33017,13 +35697,13 @@ func (_ fastpathT) DecMapInt16Float64V(v map[int16]float64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt16BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int16]bool) + vp := rv.Addr().Interface().(*map[int16]bool) v, changed := fastpathTV.DecMapInt16BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int16]bool) + v := rv.Interface().(map[int16]bool) fastpathTV.DecMapInt16BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -33044,33 +35724,43 @@ func (_ fastpathT) DecMapInt16BoolV(v map[int16]bool, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[int16]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int16 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = int16(dd.DecodeInt(16)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33081,13 +35771,13 @@ func (_ fastpathT) DecMapInt16BoolV(v map[int16]bool, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt32IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]interface{}) + vp := rv.Addr().Interface().(*map[int32]interface{}) v, changed := fastpathTV.DecMapInt32IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]interface{}) + v := rv.Interface().(map[int32]interface{}) fastpathTV.DecMapInt32IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -33108,38 +35798,53 @@ func (_ fastpathT) DecMapInt32IntfV(v map[int32]interface{}, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[int32]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk int32 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33150,13 +35855,13 @@ func (_ fastpathT) DecMapInt32IntfV(v map[int32]interface{}, checkNil bool, canC func (f *decFnInfo) fastpathDecMapInt32StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]string) + vp := rv.Addr().Interface().(*map[int32]string) v, changed := fastpathTV.DecMapInt32StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]string) + v := rv.Interface().(map[int32]string) fastpathTV.DecMapInt32StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -33177,33 +35882,43 @@ func (_ fastpathT) DecMapInt32StringV(v map[int32]string, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 20) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) v = make(map[int32]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33214,13 +35929,13 @@ func (_ fastpathT) DecMapInt32StringV(v map[int32]string, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt32UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]uint) + vp := rv.Addr().Interface().(*map[int32]uint) v, changed := fastpathTV.DecMapInt32UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]uint) + v := rv.Interface().(map[int32]uint) fastpathTV.DecMapInt32UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -33241,33 +35956,43 @@ func (_ fastpathT) DecMapInt32UintV(v map[int32]uint, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int32]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33278,13 +36003,13 @@ func (_ fastpathT) DecMapInt32UintV(v map[int32]uint, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt32Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]uint8) + vp := rv.Addr().Interface().(*map[int32]uint8) v, changed := fastpathTV.DecMapInt32Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]uint8) + v := rv.Interface().(map[int32]uint8) fastpathTV.DecMapInt32Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33305,33 +36030,43 @@ func (_ fastpathT) DecMapInt32Uint8V(v map[int32]uint8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[int32]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33342,13 +36077,13 @@ func (_ fastpathT) DecMapInt32Uint8V(v map[int32]uint8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt32Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]uint16) + vp := rv.Addr().Interface().(*map[int32]uint16) v, changed := fastpathTV.DecMapInt32Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]uint16) + v := rv.Interface().(map[int32]uint16) fastpathTV.DecMapInt32Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33369,33 +36104,43 @@ func (_ fastpathT) DecMapInt32Uint16V(v map[int32]uint16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[int32]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33406,13 +36151,13 @@ func (_ fastpathT) DecMapInt32Uint16V(v map[int32]uint16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt32Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]uint32) + vp := rv.Addr().Interface().(*map[int32]uint32) v, changed := fastpathTV.DecMapInt32Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]uint32) + v := rv.Interface().(map[int32]uint32) fastpathTV.DecMapInt32Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33433,33 +36178,43 @@ func (_ fastpathT) DecMapInt32Uint32V(v map[int32]uint32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[int32]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33470,13 +36225,13 @@ func (_ fastpathT) DecMapInt32Uint32V(v map[int32]uint32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt32Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]uint64) + vp := rv.Addr().Interface().(*map[int32]uint64) v, changed := fastpathTV.DecMapInt32Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]uint64) + v := rv.Interface().(map[int32]uint64) fastpathTV.DecMapInt32Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33497,33 +36252,43 @@ func (_ fastpathT) DecMapInt32Uint64V(v map[int32]uint64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int32]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33534,13 +36299,13 @@ func (_ fastpathT) DecMapInt32Uint64V(v map[int32]uint64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt32UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]uintptr) + vp := rv.Addr().Interface().(*map[int32]uintptr) v, changed := fastpathTV.DecMapInt32UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]uintptr) + v := rv.Interface().(map[int32]uintptr) fastpathTV.DecMapInt32UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -33561,33 +36326,43 @@ func (_ fastpathT) DecMapInt32UintptrV(v map[int32]uintptr, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int32]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33598,13 +36373,13 @@ func (_ fastpathT) DecMapInt32UintptrV(v map[int32]uintptr, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt32IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]int) + vp := rv.Addr().Interface().(*map[int32]int) v, changed := fastpathTV.DecMapInt32IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]int) + v := rv.Interface().(map[int32]int) fastpathTV.DecMapInt32IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -33625,33 +36400,43 @@ func (_ fastpathT) DecMapInt32IntV(v map[int32]int, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int32]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33662,13 +36447,13 @@ func (_ fastpathT) DecMapInt32IntV(v map[int32]int, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapInt32Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]int8) + vp := rv.Addr().Interface().(*map[int32]int8) v, changed := fastpathTV.DecMapInt32Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]int8) + v := rv.Interface().(map[int32]int8) fastpathTV.DecMapInt32Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33689,33 +36474,43 @@ func (_ fastpathT) DecMapInt32Int8V(v map[int32]int8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[int32]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33726,13 +36521,13 @@ func (_ fastpathT) DecMapInt32Int8V(v map[int32]int8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt32Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]int16) + vp := rv.Addr().Interface().(*map[int32]int16) v, changed := fastpathTV.DecMapInt32Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]int16) + v := rv.Interface().(map[int32]int16) fastpathTV.DecMapInt32Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33753,33 +36548,43 @@ func (_ fastpathT) DecMapInt32Int16V(v map[int32]int16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 6) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) v = make(map[int32]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33790,13 +36595,13 @@ func (_ fastpathT) DecMapInt32Int16V(v map[int32]int16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt32Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]int32) + vp := rv.Addr().Interface().(*map[int32]int32) v, changed := fastpathTV.DecMapInt32Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]int32) + v := rv.Interface().(map[int32]int32) fastpathTV.DecMapInt32Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33817,33 +36622,43 @@ func (_ fastpathT) DecMapInt32Int32V(v map[int32]int32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[int32]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33854,13 +36669,13 @@ func (_ fastpathT) DecMapInt32Int32V(v map[int32]int32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt32Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]int64) + vp := rv.Addr().Interface().(*map[int32]int64) v, changed := fastpathTV.DecMapInt32Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]int64) + v := rv.Interface().(map[int32]int64) fastpathTV.DecMapInt32Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33881,33 +36696,43 @@ func (_ fastpathT) DecMapInt32Int64V(v map[int32]int64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int32]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33918,13 +36743,13 @@ func (_ fastpathT) DecMapInt32Int64V(v map[int32]int64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt32Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]float32) + vp := rv.Addr().Interface().(*map[int32]float32) v, changed := fastpathTV.DecMapInt32Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]float32) + v := rv.Interface().(map[int32]float32) fastpathTV.DecMapInt32Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -33945,33 +36770,43 @@ func (_ fastpathT) DecMapInt32Float32V(v map[int32]float32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 8) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) v = make(map[int32]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -33982,13 +36817,13 @@ func (_ fastpathT) DecMapInt32Float32V(v map[int32]float32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt32Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]float64) + vp := rv.Addr().Interface().(*map[int32]float64) v, changed := fastpathTV.DecMapInt32Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]float64) + v := rv.Interface().(map[int32]float64) fastpathTV.DecMapInt32Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34009,33 +36844,43 @@ func (_ fastpathT) DecMapInt32Float64V(v map[int32]float64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int32]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34046,13 +36891,13 @@ func (_ fastpathT) DecMapInt32Float64V(v map[int32]float64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt32BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int32]bool) + vp := rv.Addr().Interface().(*map[int32]bool) v, changed := fastpathTV.DecMapInt32BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int32]bool) + v := rv.Interface().(map[int32]bool) fastpathTV.DecMapInt32BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -34073,33 +36918,43 @@ func (_ fastpathT) DecMapInt32BoolV(v map[int32]bool, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[int32]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int32 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = int32(dd.DecodeInt(32)) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34110,13 +36965,13 @@ func (_ fastpathT) DecMapInt32BoolV(v map[int32]bool, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt64IntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]interface{}) + vp := rv.Addr().Interface().(*map[int64]interface{}) v, changed := fastpathTV.DecMapInt64IntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]interface{}) + v := rv.Interface().(map[int64]interface{}) fastpathTV.DecMapInt64IntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -34137,38 +36992,53 @@ func (_ fastpathT) DecMapInt64IntfV(v map[int64]interface{}, checkNil bool, canC } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[int64]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk int64 var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34179,13 +37049,13 @@ func (_ fastpathT) DecMapInt64IntfV(v map[int64]interface{}, checkNil bool, canC func (f *decFnInfo) fastpathDecMapInt64StringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]string) + vp := rv.Addr().Interface().(*map[int64]string) v, changed := fastpathTV.DecMapInt64StringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]string) + v := rv.Interface().(map[int64]string) fastpathTV.DecMapInt64StringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -34206,33 +37076,43 @@ func (_ fastpathT) DecMapInt64StringV(v map[int64]string, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 24) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) v = make(map[int64]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34243,13 +37123,13 @@ func (_ fastpathT) DecMapInt64StringV(v map[int64]string, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt64UintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]uint) + vp := rv.Addr().Interface().(*map[int64]uint) v, changed := fastpathTV.DecMapInt64UintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]uint) + v := rv.Interface().(map[int64]uint) fastpathTV.DecMapInt64UintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -34270,33 +37150,43 @@ func (_ fastpathT) DecMapInt64UintV(v map[int64]uint, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int64]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34307,13 +37197,13 @@ func (_ fastpathT) DecMapInt64UintV(v map[int64]uint, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt64Uint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]uint8) + vp := rv.Addr().Interface().(*map[int64]uint8) v, changed := fastpathTV.DecMapInt64Uint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]uint8) + v := rv.Interface().(map[int64]uint8) fastpathTV.DecMapInt64Uint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34334,33 +37224,43 @@ func (_ fastpathT) DecMapInt64Uint8V(v map[int64]uint8, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int64]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34371,13 +37271,13 @@ func (_ fastpathT) DecMapInt64Uint8V(v map[int64]uint8, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt64Uint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]uint16) + vp := rv.Addr().Interface().(*map[int64]uint16) v, changed := fastpathTV.DecMapInt64Uint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]uint16) + v := rv.Interface().(map[int64]uint16) fastpathTV.DecMapInt64Uint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34398,33 +37298,43 @@ func (_ fastpathT) DecMapInt64Uint16V(v map[int64]uint16, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int64]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34435,13 +37345,13 @@ func (_ fastpathT) DecMapInt64Uint16V(v map[int64]uint16, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt64Uint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]uint32) + vp := rv.Addr().Interface().(*map[int64]uint32) v, changed := fastpathTV.DecMapInt64Uint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]uint32) + v := rv.Interface().(map[int64]uint32) fastpathTV.DecMapInt64Uint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34462,33 +37372,43 @@ func (_ fastpathT) DecMapInt64Uint32V(v map[int64]uint32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int64]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34499,13 +37419,13 @@ func (_ fastpathT) DecMapInt64Uint32V(v map[int64]uint32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt64Uint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]uint64) + vp := rv.Addr().Interface().(*map[int64]uint64) v, changed := fastpathTV.DecMapInt64Uint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]uint64) + v := rv.Interface().(map[int64]uint64) fastpathTV.DecMapInt64Uint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34526,33 +37446,43 @@ func (_ fastpathT) DecMapInt64Uint64V(v map[int64]uint64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int64]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34563,13 +37493,13 @@ func (_ fastpathT) DecMapInt64Uint64V(v map[int64]uint64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapInt64UintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]uintptr) + vp := rv.Addr().Interface().(*map[int64]uintptr) v, changed := fastpathTV.DecMapInt64UintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]uintptr) + v := rv.Interface().(map[int64]uintptr) fastpathTV.DecMapInt64UintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -34590,33 +37520,43 @@ func (_ fastpathT) DecMapInt64UintptrV(v map[int64]uintptr, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int64]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34627,13 +37567,13 @@ func (_ fastpathT) DecMapInt64UintptrV(v map[int64]uintptr, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt64IntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]int) + vp := rv.Addr().Interface().(*map[int64]int) v, changed := fastpathTV.DecMapInt64IntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]int) + v := rv.Interface().(map[int64]int) fastpathTV.DecMapInt64IntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -34654,33 +37594,43 @@ func (_ fastpathT) DecMapInt64IntV(v map[int64]int, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int64]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34691,13 +37641,13 @@ func (_ fastpathT) DecMapInt64IntV(v map[int64]int, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapInt64Int8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]int8) + vp := rv.Addr().Interface().(*map[int64]int8) v, changed := fastpathTV.DecMapInt64Int8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]int8) + v := rv.Interface().(map[int64]int8) fastpathTV.DecMapInt64Int8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34718,33 +37668,43 @@ func (_ fastpathT) DecMapInt64Int8V(v map[int64]int8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int64]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34755,13 +37715,13 @@ func (_ fastpathT) DecMapInt64Int8V(v map[int64]int8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapInt64Int16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]int16) + vp := rv.Addr().Interface().(*map[int64]int16) v, changed := fastpathTV.DecMapInt64Int16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]int16) + v := rv.Interface().(map[int64]int16) fastpathTV.DecMapInt64Int16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34782,33 +37742,43 @@ func (_ fastpathT) DecMapInt64Int16V(v map[int64]int16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 10) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) v = make(map[int64]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34819,13 +37789,13 @@ func (_ fastpathT) DecMapInt64Int16V(v map[int64]int16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt64Int32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]int32) + vp := rv.Addr().Interface().(*map[int64]int32) v, changed := fastpathTV.DecMapInt64Int32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]int32) + v := rv.Interface().(map[int64]int32) fastpathTV.DecMapInt64Int32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34846,33 +37816,43 @@ func (_ fastpathT) DecMapInt64Int32V(v map[int64]int32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int64]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34883,13 +37863,13 @@ func (_ fastpathT) DecMapInt64Int32V(v map[int64]int32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt64Int64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]int64) + vp := rv.Addr().Interface().(*map[int64]int64) v, changed := fastpathTV.DecMapInt64Int64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]int64) + v := rv.Interface().(map[int64]int64) fastpathTV.DecMapInt64Int64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34910,33 +37890,43 @@ func (_ fastpathT) DecMapInt64Int64V(v map[int64]int64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int64]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -34947,13 +37937,13 @@ func (_ fastpathT) DecMapInt64Int64V(v map[int64]int64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapInt64Float32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]float32) + vp := rv.Addr().Interface().(*map[int64]float32) v, changed := fastpathTV.DecMapInt64Float32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]float32) + v := rv.Interface().(map[int64]float32) fastpathTV.DecMapInt64Float32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -34974,33 +37964,43 @@ func (_ fastpathT) DecMapInt64Float32V(v map[int64]float32, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 12) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) v = make(map[int64]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35011,13 +38011,13 @@ func (_ fastpathT) DecMapInt64Float32V(v map[int64]float32, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt64Float64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]float64) + vp := rv.Addr().Interface().(*map[int64]float64) v, changed := fastpathTV.DecMapInt64Float64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]float64) + v := rv.Interface().(map[int64]float64) fastpathTV.DecMapInt64Float64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35038,33 +38038,43 @@ func (_ fastpathT) DecMapInt64Float64V(v map[int64]float64, checkNil bool, canCh } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 16) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) v = make(map[int64]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35075,13 +38085,13 @@ func (_ fastpathT) DecMapInt64Float64V(v map[int64]float64, checkNil bool, canCh func (f *decFnInfo) fastpathDecMapInt64BoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[int64]bool) + vp := rv.Addr().Interface().(*map[int64]bool) v, changed := fastpathTV.DecMapInt64BoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[int64]bool) + v := rv.Interface().(map[int64]bool) fastpathTV.DecMapInt64BoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -35102,33 +38112,43 @@ func (_ fastpathT) DecMapInt64BoolV(v map[int64]bool, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[int64]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk int64 var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeInt(64) - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35139,13 +38159,13 @@ func (_ fastpathT) DecMapInt64BoolV(v map[int64]bool, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapBoolIntfR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]interface{}) + vp := rv.Addr().Interface().(*map[bool]interface{}) v, changed := fastpathTV.DecMapBoolIntfV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]interface{}) + v := rv.Interface().(map[bool]interface{}) fastpathTV.DecMapBoolIntfV(v, fastpathCheckNilFalse, false, f.d) } } @@ -35166,38 +38186,53 @@ func (_ fastpathT) DecMapBoolIntfV(v map[bool]interface{}, checkNil bool, canCha } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[bool]interface{}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } mapGet := !d.h.MapValueReset && !d.h.InterfaceReset var mk bool var mv interface{} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - if mapGet { - mv = v[mk] - } else { - mv = nil - } - d.decode(&mv) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35208,13 +38243,13 @@ func (_ fastpathT) DecMapBoolIntfV(v map[bool]interface{}, checkNil bool, canCha func (f *decFnInfo) fastpathDecMapBoolStringR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]string) + vp := rv.Addr().Interface().(*map[bool]string) v, changed := fastpathTV.DecMapBoolStringV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]string) + v := rv.Interface().(map[bool]string) fastpathTV.DecMapBoolStringV(v, fastpathCheckNilFalse, false, f.d) } } @@ -35235,33 +38270,43 @@ func (_ fastpathT) DecMapBoolStringV(v map[bool]string, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 17) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) v = make(map[bool]string, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv string - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeString() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35272,13 +38317,13 @@ func (_ fastpathT) DecMapBoolStringV(v map[bool]string, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapBoolUintR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]uint) + vp := rv.Addr().Interface().(*map[bool]uint) v, changed := fastpathTV.DecMapBoolUintV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]uint) + v := rv.Interface().(map[bool]uint) fastpathTV.DecMapBoolUintV(v, fastpathCheckNilFalse, false, f.d) } } @@ -35299,33 +38344,43 @@ func (_ fastpathT) DecMapBoolUintV(v map[bool]uint, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[bool]uint, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv uint - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35336,13 +38391,13 @@ func (_ fastpathT) DecMapBoolUintV(v map[bool]uint, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapBoolUint8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]uint8) + vp := rv.Addr().Interface().(*map[bool]uint8) v, changed := fastpathTV.DecMapBoolUint8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]uint8) + v := rv.Interface().(map[bool]uint8) fastpathTV.DecMapBoolUint8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35363,33 +38418,43 @@ func (_ fastpathT) DecMapBoolUint8V(v map[bool]uint8, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[bool]uint8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv uint8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint8(dd.DecodeUint(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35400,13 +38465,13 @@ func (_ fastpathT) DecMapBoolUint8V(v map[bool]uint8, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapBoolUint16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]uint16) + vp := rv.Addr().Interface().(*map[bool]uint16) v, changed := fastpathTV.DecMapBoolUint16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]uint16) + v := rv.Interface().(map[bool]uint16) fastpathTV.DecMapBoolUint16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35427,33 +38492,43 @@ func (_ fastpathT) DecMapBoolUint16V(v map[bool]uint16, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[bool]uint16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv uint16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint16(dd.DecodeUint(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35464,13 +38539,13 @@ func (_ fastpathT) DecMapBoolUint16V(v map[bool]uint16, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapBoolUint32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]uint32) + vp := rv.Addr().Interface().(*map[bool]uint32) v, changed := fastpathTV.DecMapBoolUint32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]uint32) + v := rv.Interface().(map[bool]uint32) fastpathTV.DecMapBoolUint32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35491,33 +38566,43 @@ func (_ fastpathT) DecMapBoolUint32V(v map[bool]uint32, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[bool]uint32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv uint32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uint32(dd.DecodeUint(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35528,13 +38613,13 @@ func (_ fastpathT) DecMapBoolUint32V(v map[bool]uint32, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapBoolUint64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]uint64) + vp := rv.Addr().Interface().(*map[bool]uint64) v, changed := fastpathTV.DecMapBoolUint64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]uint64) + v := rv.Interface().(map[bool]uint64) fastpathTV.DecMapBoolUint64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35555,33 +38640,43 @@ func (_ fastpathT) DecMapBoolUint64V(v map[bool]uint64, checkNil bool, canChange } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[bool]uint64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv uint64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeUint(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35592,13 +38687,13 @@ func (_ fastpathT) DecMapBoolUint64V(v map[bool]uint64, checkNil bool, canChange func (f *decFnInfo) fastpathDecMapBoolUintptrR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]uintptr) + vp := rv.Addr().Interface().(*map[bool]uintptr) v, changed := fastpathTV.DecMapBoolUintptrV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]uintptr) + v := rv.Interface().(map[bool]uintptr) fastpathTV.DecMapBoolUintptrV(v, fastpathCheckNilFalse, false, f.d) } } @@ -35619,33 +38714,43 @@ func (_ fastpathT) DecMapBoolUintptrV(v map[bool]uintptr, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[bool]uintptr, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv uintptr - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = uintptr(dd.DecodeUint(uintBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35656,13 +38761,13 @@ func (_ fastpathT) DecMapBoolUintptrV(v map[bool]uintptr, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapBoolIntR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]int) + vp := rv.Addr().Interface().(*map[bool]int) v, changed := fastpathTV.DecMapBoolIntV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]int) + v := rv.Interface().(map[bool]int) fastpathTV.DecMapBoolIntV(v, fastpathCheckNilFalse, false, f.d) } } @@ -35683,33 +38788,43 @@ func (_ fastpathT) DecMapBoolIntV(v map[bool]int, checkNil bool, canChange bool, } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[bool]int, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv int - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int(dd.DecodeInt(intBitsize)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35720,13 +38835,13 @@ func (_ fastpathT) DecMapBoolIntV(v map[bool]int, checkNil bool, canChange bool, func (f *decFnInfo) fastpathDecMapBoolInt8R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]int8) + vp := rv.Addr().Interface().(*map[bool]int8) v, changed := fastpathTV.DecMapBoolInt8V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]int8) + v := rv.Interface().(map[bool]int8) fastpathTV.DecMapBoolInt8V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35747,33 +38862,43 @@ func (_ fastpathT) DecMapBoolInt8V(v map[bool]int8, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[bool]int8, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv int8 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int8(dd.DecodeInt(8)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35784,13 +38909,13 @@ func (_ fastpathT) DecMapBoolInt8V(v map[bool]int8, checkNil bool, canChange boo func (f *decFnInfo) fastpathDecMapBoolInt16R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]int16) + vp := rv.Addr().Interface().(*map[bool]int16) v, changed := fastpathTV.DecMapBoolInt16V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]int16) + v := rv.Interface().(map[bool]int16) fastpathTV.DecMapBoolInt16V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35811,33 +38936,43 @@ func (_ fastpathT) DecMapBoolInt16V(v map[bool]int16, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 3) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) v = make(map[bool]int16, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv int16 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int16(dd.DecodeInt(16)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35848,13 +38983,13 @@ func (_ fastpathT) DecMapBoolInt16V(v map[bool]int16, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapBoolInt32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]int32) + vp := rv.Addr().Interface().(*map[bool]int32) v, changed := fastpathTV.DecMapBoolInt32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]int32) + v := rv.Interface().(map[bool]int32) fastpathTV.DecMapBoolInt32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35875,33 +39010,43 @@ func (_ fastpathT) DecMapBoolInt32V(v map[bool]int32, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[bool]int32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv int32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = int32(dd.DecodeInt(32)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35912,13 +39057,13 @@ func (_ fastpathT) DecMapBoolInt32V(v map[bool]int32, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapBoolInt64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]int64) + vp := rv.Addr().Interface().(*map[bool]int64) v, changed := fastpathTV.DecMapBoolInt64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]int64) + v := rv.Interface().(map[bool]int64) fastpathTV.DecMapBoolInt64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -35939,33 +39084,43 @@ func (_ fastpathT) DecMapBoolInt64V(v map[bool]int64, checkNil bool, canChange b } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[bool]int64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv int64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeInt(64) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -35976,13 +39131,13 @@ func (_ fastpathT) DecMapBoolInt64V(v map[bool]int64, checkNil bool, canChange b func (f *decFnInfo) fastpathDecMapBoolFloat32R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]float32) + vp := rv.Addr().Interface().(*map[bool]float32) v, changed := fastpathTV.DecMapBoolFloat32V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]float32) + v := rv.Interface().(map[bool]float32) fastpathTV.DecMapBoolFloat32V(v, fastpathCheckNilFalse, false, f.d) } } @@ -36003,33 +39158,43 @@ func (_ fastpathT) DecMapBoolFloat32V(v map[bool]float32, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 5) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) v = make(map[bool]float32, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv float32 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = float32(dd.DecodeFloat(true)) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -36040,13 +39205,13 @@ func (_ fastpathT) DecMapBoolFloat32V(v map[bool]float32, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapBoolFloat64R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]float64) + vp := rv.Addr().Interface().(*map[bool]float64) v, changed := fastpathTV.DecMapBoolFloat64V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]float64) + v := rv.Interface().(map[bool]float64) fastpathTV.DecMapBoolFloat64V(v, fastpathCheckNilFalse, false, f.d) } } @@ -36067,33 +39232,43 @@ func (_ fastpathT) DecMapBoolFloat64V(v map[bool]float64, checkNil bool, canChan } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 9) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) v = make(map[bool]float64, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv float64 - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeFloat(false) - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } } } if cr != nil { @@ -36104,13 +39279,13 @@ func (_ fastpathT) DecMapBoolFloat64V(v map[bool]float64, checkNil bool, canChan func (f *decFnInfo) fastpathDecMapBoolBoolR(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[bool]bool) + vp := rv.Addr().Interface().(*map[bool]bool) v, changed := fastpathTV.DecMapBoolBoolV(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[bool]bool) + v := rv.Interface().(map[bool]bool) fastpathTV.DecMapBoolBoolV(v, fastpathCheckNilFalse, false, f.d) } } @@ -36131,33 +39306,43 @@ func (_ fastpathT) DecMapBoolBoolV(v map[bool]bool, checkNil bool, canChange boo } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, 2) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) v = make(map[bool]bool, xlen) changed = true } - if containerLen == 0 { - if cr != nil { - cr.sendContainerState(containerMapEnd) - } - return v, changed - } var mk bool var mv bool - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { - cr.sendContainerState(containerMapKey) + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } - mk = dd.DecodeBool() - if cr != nil { - cr.sendContainerState(containerMapValue) - } - mv = dd.DecodeBool() - if v != nil { - v[mk] = mv + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } } } if cr != nil { diff --git a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl b/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl index 0ce15ded0..c3ffdf93d 100644 --- a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl +++ b/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl @@ -86,7 +86,7 @@ func init() { i := 0 fn := func(v interface{}, fe func(*encFnInfo, reflect.Value), fd func(*decFnInfo, reflect.Value)) (f fastpathE) { xrt := reflect.TypeOf(v) - xptr := rt2id(xrt) + xptr := reflect.ValueOf(xrt).Pointer() fastpathAV[i] = fastpathE{xptr, xrt, fe, fd} i++ return @@ -156,9 +156,9 @@ func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool { func (f *encFnInfo) {{ .MethodNamePfx "fastpathEnc" false }}R(rv reflect.Value) { if f.ti.mbs { - fastpathTV.{{ .MethodNamePfx "EncAsMap" false }}V(rv2i(rv).([]{{ .Elem }}), fastpathCheckNilFalse, f.e) + fastpathTV.{{ .MethodNamePfx "EncAsMap" false }}V(rv.Interface().([]{{ .Elem }}), fastpathCheckNilFalse, f.e) } else { - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).([]{{ .Elem }}), fastpathCheckNilFalse, f.e) + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv.Interface().([]{{ .Elem }}), fastpathCheckNilFalse, f.e) } } func (_ fastpathT) {{ .MethodNamePfx "Enc" false }}V(v []{{ .Elem }}, checkNil bool, e *Encoder) { @@ -206,7 +206,7 @@ func (_ fastpathT) {{ .MethodNamePfx "EncAsMap" false }}V(v []{{ .Elem }}, check {{range .Values}}{{if not .Primitive}}{{if .MapKey }} func (f *encFnInfo) {{ .MethodNamePfx "fastpathEnc" false }}R(rv reflect.Value) { - fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}), fastpathCheckNilFalse, f.e) + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv.Interface().(map[{{ .MapKey }}]{{ .Elem }}), fastpathCheckNilFalse, f.e) } func (_ fastpathT) {{ .MethodNamePfx "Enc" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, checkNil bool, e *Encoder) { ee := e.e @@ -306,13 +306,13 @@ Slices can change if they func (f *decFnInfo) {{ .MethodNamePfx "fastpathDec" false }}R(rv reflect.Value) { array := f.seq == seqTypeArray if !array && rv.CanAddr() { {{/* // CanSet => CanAddr + Exported */}} - vp := rv2i(rv.Addr()).(*[]{{ .Elem }}) + vp := rv.Addr().Interface().(*[]{{ .Elem }}) v, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*vp, fastpathCheckNilFalse, !array, f.d) if changed { *vp = v } } else { - v := rv2i(rv).([]{{ .Elem }}) + v := rv.Interface().([]{{ .Elem }}) fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, fastpathCheckNilFalse, false, f.d) } } @@ -327,13 +327,16 @@ func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v []{{ .Elem }}, checkNil b dd := d.d {{/* // if dd.isContainerType(valueTypeNil) { dd.TryDecodeAsNil() */}} if checkNil && dd.TryDecodeAsNil() { - if v != nil { changed = true } + if v != nil { + changed = true + } return nil, changed } + slh, containerLenS := d.decSliceHelperStart() if containerLenS == 0 { if canChange { - if v == nil { + if v == nil { v = []{{ .Elem }}{} } else if len(v) != 0 { v = v[:0] @@ -343,62 +346,98 @@ func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v []{{ .Elem }}, checkNil b slh.End() return v, changed } - - hasLen := containerLenS > 0 - var xlen int - if hasLen && canChange { + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool if containerLenS > cap(v) { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }}) - if xlen <= cap(v) { - v = v[:xlen] - } else { - v = make([]{{ .Elem }}, xlen) - } - changed = true - } else if containerLenS != len(v) { - v = v[:containerLenS] - changed = true - } - } - j := 0 - for ; (hasLen && j < containerLenS) || !(hasLen || dd.CheckBreak()); j++ { - if j == 0 && len(v) == 0 { - if hasLen { - xlen = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }}) - } else { - xlen = 8 - } - v = make([]{{ .Elem }}, xlen) - changed = true - } - // if indefinite, etc, then expand the slice if necessary - var decodeIntoBlank bool - if j >= len(v) { - if canChange { - v = append(v, {{ zerocmd .Elem }}) + if canChange { {{/* + // fast-path is for "basic" immutable types, so no need to copy them over + // s := make([]{{ .Elem }}, decInferLen(containerLenS, d.h.MaxInitLen)) + // copy(s, v[:cap(v)]) + // v = s */}} + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }}) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]{{ .Elem }}, xlen) + } + } else { + v = make([]{{ .Elem }}, xlen) + } changed = true } else { - d.arrayCannotExpand(len(v), j+1) - decodeIntoBlank = true + d.arrayCannotExpand(len(v), containerLenS) } - } - slh.ElemContainerState(j) - if decodeIntoBlank { - d.swallow() - } else { + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } {{/* // all checks done. cannot go past len. */}} + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) {{ if eq .Elem "interface{}" }}d.decode(&v[j]){{ else }}v[j] = {{ decmd .Elem }}{{ end }} } - } - if canChange { - if j < len(v) { - v = v[:j] + if xtrunc { {{/* // means canChange=true, changed=true already. */}} + for ; j < containerLenS; j++ { + v = append(v, {{ zerocmd .Elem }}) + slh.ElemContainerState(j) + {{ if eq .Elem "interface{}" }}d.decode(&v[j]){{ else }}v[j] = {{ decmd .Elem }}{{ end }} + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() {{/* check break first, so we can initialize v with a capacity of 4 if necessary */}} + if breakFound { + if canChange { + if v == nil { + v = []{{ .Elem }}{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return v, changed + } + if cap(v) == 0 { + v = make([]{{ .Elem }}, 1, 4) changed = true - } else if j == 0 && v == nil { - v = make([]{{ .Elem }}, 0) + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, {{ zerocmd .Elem }}) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { {{/* // all checks done. cannot go past len. */}} + {{ if eq .Elem "interface{}" }}d.decode(&v[j]) + {{ else }}v[j] = {{ decmd .Elem }}{{ end }} + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] changed = true } } - slh.End() + slh.End() return v, changed } @@ -413,13 +452,13 @@ Maps can change if they are */}} func (f *decFnInfo) {{ .MethodNamePfx "fastpathDec" false }}R(rv reflect.Value) { if rv.CanAddr() { - vp := rv2i(rv.Addr()).(*map[{{ .MapKey }}]{{ .Elem }}) + vp := rv.Addr().Interface().(*map[{{ .MapKey }}]{{ .Elem }}) v, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*vp, fastpathCheckNilFalse, true, f.d) if changed { *vp = v } } else { - v := rv2i(rv).(map[{{ .MapKey }}]{{ .Elem }}) + v := rv.Interface().(map[{{ .MapKey }}]{{ .Elem }}) fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, fastpathCheckNilFalse, false, f.d) } } @@ -435,35 +474,50 @@ func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v map[{{ .MapKey }}]{{ .Ele cr := d.cr {{/* // if dd.isContainerType(valueTypeNil) {dd.TryDecodeAsNil() */}} if checkNil && dd.TryDecodeAsNil() { - if v != nil { changed = true } + if v != nil { + changed = true + } return nil, changed } + containerLen := dd.ReadMapStart() if canChange && v == nil { - xlen := decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }}) + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }}) v = make(map[{{ .MapKey }}]{{ .Elem }}, xlen) changed = true } - if containerLen == 0 { - if cr != nil { cr.sendContainerState(containerMapEnd) } - return v, changed - } {{ if eq .Elem "interface{}" }}mapGet := !d.h.MapValueReset && !d.h.InterfaceReset{{end}} var mk {{ .MapKey }} var mv {{ .Elem }} - hasLen := containerLen > 0 - for j := 0; (hasLen && j < containerLen) || !(hasLen || dd.CheckBreak()); j++ { - if cr != nil { cr.sendContainerState(containerMapKey) } - {{ if eq .MapKey "interface{}" }}mk = nil - d.decode(&mk) - if bv, bok := mk.([]byte); bok { - mk = d.string(bv) {{/* // maps cannot have []byte as key. switch to string. */}} - }{{ else }}mk = {{ decmd .MapKey }}{{ end }} - if cr != nil { cr.sendContainerState(containerMapValue) } - {{ if eq .Elem "interface{}" }}if mapGet { mv = v[mk] } else { mv = nil } - d.decode(&mv){{ else }}mv = {{ decmd .Elem }}{{ end }} - if v != nil { - v[mk] = mv + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { cr.sendContainerState(containerMapKey) } + {{ if eq .MapKey "interface{}" }}mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) {{/* // maps cannot have []byte as key. switch to string. */}} + }{{ else }}mk = {{ decmd .MapKey }}{{ end }} + if cr != nil { cr.sendContainerState(containerMapValue) } + {{ if eq .Elem "interface{}" }}if mapGet { mv = v[mk] } else { mv = nil } + d.decode(&mv){{ else }}mv = {{ decmd .Elem }}{{ end }} + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { cr.sendContainerState(containerMapKey) } + {{ if eq .MapKey "interface{}" }}mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) {{/* // maps cannot have []byte as key. switch to string. */}} + }{{ else }}mk = {{ decmd .MapKey }}{{ end }} + if cr != nil { cr.sendContainerState(containerMapValue) } + {{ if eq .Elem "interface{}" }}if mapGet { mv = v[mk] } else { mv = nil } + d.decode(&mv){{ else }}mv = {{ decmd .Elem }}{{ end }} + if v != nil { + v[mk] = mv + } } } if cr != nil { cr.sendContainerState(containerMapEnd) } diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl index f4f0cdd27..32df54144 100644 --- a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl +++ b/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl @@ -13,58 +13,92 @@ if {{var "l"}} == 0 { {{var "v"}} = make({{ .CTyp }}, 0) {{var "c"}} = true } {{end}} -} else { - {{var "hl"}} := {{var "l"}} > 0 - var {{var "rl"}} int - {{if isSlice }} if {{var "hl"}} { +} else if {{var "l"}} > 0 { + {{if isChan }}if {{var "v"}} == nil { + {{var "rl"}}, _ = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + {{var "v"}} = make({{ .CTyp }}, {{var "rl"}}) + {{var "c"}} = true + } + for {{var "r"}} := 0; {{var "r"}} < {{var "l"}}; {{var "r"}}++ { + {{var "h"}}.ElemContainerState({{var "r"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + } + {{ else }} var {{var "rr"}}, {{var "rl"}} int {{/* // num2read, length of slice/array/chan */}} + var {{var "rt"}} bool {{/* truncated */}} + _, _ = {{var "rl"}}, {{var "rt"}} + {{var "rr"}} = {{var "l"}} // len({{var "v"}}) if {{var "l"}} > cap({{var "v"}}) { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - if {{var "rl"}} <= cap({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "rl"}}] + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "l"}}) + {{ else }}{{if not .Immutable }} + {{var "rg"}} := len({{var "v"}}) > 0 + {{var "v2"}} := {{var "v"}} {{end}} + {{var "rl"}}, {{var "rt"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + if {{var "rt"}} { + if {{var "rl"}} <= cap({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "rl"}}] + } else { + {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) + } } else { {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) } {{var "c"}} = true - } else if {{var "l"}} != len({{var "v"}}) { + {{var "rr"}} = len({{var "v"}}) {{if not .Immutable }} + if {{var "rg"}} { copy({{var "v"}}, {{var "v2"}}) } {{end}} {{end}}{{/* end not Immutable, isArray */}} + } {{if isSlice }} else if {{var "l"}} != len({{var "v"}}) { {{var "v"}} = {{var "v"}}[:{{var "l"}}] {{var "c"}} = true - } - } {{end}} + } {{end}} {{/* end isSlice:47 */}} {{var "j"}} := 0 - for ; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ { - if {{var "j"}} == 0 && len({{var "v"}}) == 0 { - if {{var "hl"}} { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - } else { - {{var "rl"}} = 8 - } - {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) - {{var "c"}} = true - } - // if indefinite, etc, then expand the slice if necessary - var {{var "db"}} bool - if {{var "j"}} >= len({{var "v"}}) { - {{if isSlice }} {{var "v"}} = append({{var "v"}}, {{ zero }}); {{var "c"}} = true - {{end}} {{if isArray}} z.DecArrayCannotExpand(len(v), {{var "j"}}+1); {{var "db"}} = true - {{end}} - } + for ; {{var "j"}} < {{var "rr"}} ; {{var "j"}}++ { {{var "h"}}.ElemContainerState({{var "j"}}) - if {{var "db"}} { - z.DecSwallow() - } else { + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } + {{if isArray }}for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "h"}}.ElemContainerState({{var "j"}}) + z.DecSwallow() + } + {{ else }}if {{var "rt"}} { + for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "v"}} = append({{var "v"}}, {{ zero}}) + {{var "h"}}.ElemContainerState({{var "j"}}) {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} } + } {{end}} {{/* end isArray:56 */}} + {{end}} {{/* end isChan:16 */}} +} else { {{/* len < 0 */}} + {{var "j"}} := 0 + for ; !r.CheckBreak(); {{var "j"}}++ { + {{if isChan }} + {{var "h"}}.ElemContainerState({{var "j"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + {{ else }} + if {{var "j"}} >= len({{var "v"}}) { + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "j"}}+1) + {{ else }}{{var "v"}} = append({{var "v"}}, {{zero}})// var {{var "z"}} {{ .Typ }} + {{var "c"}} = true {{end}} + } + {{var "h"}}.ElemContainerState({{var "j"}}) + if {{var "j"}} < len({{var "v"}}) { + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } else { + z.DecSwallow() + } + {{end}} } - {{if isSlice}} if {{var "j"}} < len({{var "v"}}) { + {{if isSlice }}if {{var "j"}} < len({{var "v"}}) { {{var "v"}} = {{var "v"}}[:{{var "j"}}] {{var "c"}} = true } else if {{var "j"}} == 0 && {{var "v"}} == nil { - {{var "v"}} = make([]{{ .Typ }}, 0) + {{var "v"}} = []{{ .Typ }}{} {{var "c"}} = true - } {{end}} + }{{end}} } {{var "h"}}.End() {{if not isArray }}if {{var "c"}} { *{{ .Varname }} = {{var "v"}} }{{end}} - diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl index 423d63852..77400e0a1 100644 --- a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl +++ b/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl @@ -2,7 +2,7 @@ {{var "l"}} := r.ReadMapStart() {{var "bh"}} := z.DecBasicHandle() if {{var "v"}} == nil { - {{var "rl"}} := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }}) + {{var "rl"}}, _ := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }}) {{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}}) *{{ .Varname }} = {{var "v"}} } @@ -14,9 +14,8 @@ if {{var "bh"}}.MapValueReset { {{else if decElemKindIntf}}if !{{var "bh"}}.InterfaceReset { {{var "mg"}} = true } {{else if not decElemKindImmutable}}{{var "mg"}} = true {{end}} } -if {{var "l"}} != 0 { -{{var "hl"}} := {{var "l"}} > 0 - for {{var "j"}} := 0; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ { +if {{var "l"}} > 0 { +for {{var "j"}} := 0; {{var "j"}} < {{var "l"}}; {{var "j"}}++ { z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} {{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { @@ -35,5 +34,25 @@ if {{var "l"}} != 0 { {{var "v"}}[{{var "mk"}}] = {{var "mv"}} } } +} else if {{var "l"}} < 0 { +for {{var "j"}} := 0; !r.CheckBreak(); {{var "j"}}++ { + z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) + {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} +{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { + {{var "mk"}} = string({{var "bv"}}) + }{{ end }}{{if decElemKindPtr}} + {{var "ms"}} = true {{ end }} + if {{var "mg"}} { + {{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] + if {{var "mok"}} { + {{var "ms"}} = false + } {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}} + } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} + z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) + {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ decLineVar $x }} + if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil { + {{var "v"}}[{{var "mk"}}] = {{var "mv"}} + } +} } // else len==0: TODO: Should we clear map entries? z.DecSendContainerState(codecSelfer_containerMapEnd{{ .Sfx }}) diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go index fee017a2a..eb0bdad35 100644 --- a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go +++ b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go @@ -15,9 +15,6 @@ import ( "reflect" ) -// GenVersion is the current version of codecgen. -const GenVersion = 6 - // This file is used to generate helper code for codecgen. // The values here i.e. genHelper(En|De)coder are not to be used directly by // library users. They WILL change continuously and without notice. @@ -29,14 +26,12 @@ const GenVersion = 6 // to perform encoding or decoding of primitives or known slice or map types. // GenHelperEncoder is exported so that it can be used externally by codecgen. -// // Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. func GenHelperEncoder(e *Encoder) (genHelperEncoder, encDriver) { return genHelperEncoder{e: e}, e.e } // GenHelperDecoder is exported so that it can be used externally by codecgen. -// // Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. func GenHelperDecoder(d *Decoder) (genHelperDecoder, decDriver) { return genHelperDecoder{d: d}, d.d @@ -117,7 +112,7 @@ func (f genHelperEncoder) EncExt(v interface{}) (r bool) { if rt.Kind() == reflect.Ptr { rt = rt.Elem() } - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() if xfFn := f.e.h.getExt(rtid); xfFn != nil { f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext, f.e) return true @@ -177,7 +172,7 @@ func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { - fnerr := tm.UnmarshalText(f.d.d.DecodeStringAsBytes()) + fnerr := tm.UnmarshalText(f.d.d.DecodeBytes(f.d.b[:], true, true)) if fnerr != nil { panic(fnerr) } @@ -185,7 +180,7 @@ func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { - // bs := f.dd.DecodeStringAsBytes() + // bs := f.dd.DecodeBytes(f.d.b[:], true, true) // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. fnerr := tm.UnmarshalJSON(f.d.nextValueBytes()) if fnerr != nil { @@ -195,7 +190,7 @@ func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { - fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, true)) + fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, false, true)) if fnerr != nil { panic(fnerr) } @@ -227,7 +222,7 @@ func (f genHelperDecoder) HasExtensions() bool { // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecExt(v interface{}) (r bool) { rt := reflect.TypeOf(v).Elem() - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() if xfFn := f.d.h.getExt(rtid); xfFn != nil { f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext) return true @@ -236,15 +231,10 @@ func (f genHelperDecoder) DecExt(v interface{}) (r bool) { } // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int) { +func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int, truncated bool) { return decInferLen(clen, maxlen, unit) } -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) StringView(v []byte) string { - return stringView(v) -} - // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecSendContainerState(c containerState) { if f.d.cr != nil { diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl index 2d801c817..ad99f6671 100644 --- a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl +++ b/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl @@ -15,9 +15,6 @@ import ( "reflect" ) -// GenVersion is the current version of codecgen. -const GenVersion = {{ .Version }} - // This file is used to generate helper code for codecgen. // The values here i.e. genHelper(En|De)coder are not to be used directly by // library users. They WILL change continuously and without notice. @@ -29,14 +26,12 @@ const GenVersion = {{ .Version }} // to perform encoding or decoding of primitives or known slice or map types. // GenHelperEncoder is exported so that it can be used externally by codecgen. -// // Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. func GenHelperEncoder(e *Encoder) (genHelperEncoder, encDriver) { return genHelperEncoder{e:e}, e.e } // GenHelperDecoder is exported so that it can be used externally by codecgen. -// // Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. func GenHelperDecoder(d *Decoder) (genHelperDecoder, decDriver) { return genHelperDecoder{d:d}, d.d @@ -108,7 +103,7 @@ func (f genHelperEncoder) EncExt(v interface{}) (r bool) { if rt.Kind() == reflect.Ptr { rt = rt.Elem() } - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() if xfFn := f.e.h.getExt(rtid); xfFn != nil { f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext, f.e) return true @@ -159,14 +154,14 @@ func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { } // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { - fnerr := tm.UnmarshalText(f.d.d.DecodeStringAsBytes()) + fnerr := tm.UnmarshalText(f.d.d.DecodeBytes(f.d.b[:], true, true)) if fnerr != nil { panic(fnerr) } } // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { - // bs := f.dd.DecodeStringAsBytes() + // bs := f.dd.DecodeBytes(f.d.b[:], true, true) // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. fnerr := tm.UnmarshalJSON(f.d.nextValueBytes()) if fnerr != nil { @@ -175,7 +170,7 @@ func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { } // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { - fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, true)) + fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, false, true)) if fnerr != nil { panic(fnerr) } @@ -202,7 +197,7 @@ func (f genHelperDecoder) HasExtensions() bool { // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecExt(v interface{}) (r bool) { rt := reflect.TypeOf(v).Elem() - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() if xfFn := f.d.h.getExt(rtid); xfFn != nil { f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext) return true @@ -210,14 +205,10 @@ func (f genHelperDecoder) DecExt(v interface{}) (r bool) { return false } // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int) { +func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int, truncated bool) { return decInferLen(clen, maxlen, unit) } // FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* -func (f genHelperDecoder) StringView(v []byte) string { - return stringView(v) -} -// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* func (f genHelperDecoder) DecSendContainerState(c containerState) { if f.d.cr != nil { f.d.cr.sendContainerState(c) diff --git a/vendor/github.com/ugorji/go/codec/gen.generated.go b/vendor/github.com/ugorji/go/codec/gen.generated.go index 2a6123da8..2ace97b78 100644 --- a/vendor/github.com/ugorji/go/codec/gen.generated.go +++ b/vendor/github.com/ugorji/go/codec/gen.generated.go @@ -10,7 +10,7 @@ const genDecMapTmpl = ` {{var "l"}} := r.ReadMapStart() {{var "bh"}} := z.DecBasicHandle() if {{var "v"}} == nil { - {{var "rl"}} := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }}) + {{var "rl"}}, _ := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }}) {{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}}) *{{ .Varname }} = {{var "v"}} } @@ -22,9 +22,8 @@ if {{var "bh"}}.MapValueReset { {{else if decElemKindIntf}}if !{{var "bh"}}.InterfaceReset { {{var "mg"}} = true } {{else if not decElemKindImmutable}}{{var "mg"}} = true {{end}} } -if {{var "l"}} != 0 { -{{var "hl"}} := {{var "l"}} > 0 - for {{var "j"}} := 0; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ { +if {{var "l"}} > 0 { +for {{var "j"}} := 0; {{var "j"}} < {{var "l"}}; {{var "j"}}++ { z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} {{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { @@ -43,6 +42,26 @@ if {{var "l"}} != 0 { {{var "v"}}[{{var "mk"}}] = {{var "mv"}} } } +} else if {{var "l"}} < 0 { +for {{var "j"}} := 0; !r.CheckBreak(); {{var "j"}}++ { + z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) + {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} +{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { + {{var "mk"}} = string({{var "bv"}}) + }{{ end }}{{if decElemKindPtr}} + {{var "ms"}} = true {{ end }} + if {{var "mg"}} { + {{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] + if {{var "mok"}} { + {{var "ms"}} = false + } {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}} + } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} + z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) + {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ decLineVar $x }} + if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil { + {{var "v"}}[{{var "mk"}}] = {{var "mv"}} + } +} } // else len==0: TODO: Should we clear map entries? z.DecSendContainerState(codecSelfer_containerMapEnd{{ .Sfx }}) ` @@ -63,60 +82,94 @@ if {{var "l"}} == 0 { {{var "v"}} = make({{ .CTyp }}, 0) {{var "c"}} = true } {{end}} -} else { - {{var "hl"}} := {{var "l"}} > 0 - var {{var "rl"}} int - {{if isSlice }} if {{var "hl"}} { +} else if {{var "l"}} > 0 { + {{if isChan }}if {{var "v"}} == nil { + {{var "rl"}}, _ = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + {{var "v"}} = make({{ .CTyp }}, {{var "rl"}}) + {{var "c"}} = true + } + for {{var "r"}} := 0; {{var "r"}} < {{var "l"}}; {{var "r"}}++ { + {{var "h"}}.ElemContainerState({{var "r"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + } + {{ else }} var {{var "rr"}}, {{var "rl"}} int {{/* // num2read, length of slice/array/chan */}} + var {{var "rt"}} bool {{/* truncated */}} + _, _ = {{var "rl"}}, {{var "rt"}} + {{var "rr"}} = {{var "l"}} // len({{var "v"}}) if {{var "l"}} > cap({{var "v"}}) { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - if {{var "rl"}} <= cap({{var "v"}}) { - {{var "v"}} = {{var "v"}}[:{{var "rl"}}] + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "l"}}) + {{ else }}{{if not .Immutable }} + {{var "rg"}} := len({{var "v"}}) > 0 + {{var "v2"}} := {{var "v"}} {{end}} + {{var "rl"}}, {{var "rt"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + if {{var "rt"}} { + if {{var "rl"}} <= cap({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "rl"}}] + } else { + {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) + } } else { {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) } {{var "c"}} = true - } else if {{var "l"}} != len({{var "v"}}) { + {{var "rr"}} = len({{var "v"}}) {{if not .Immutable }} + if {{var "rg"}} { copy({{var "v"}}, {{var "v2"}}) } {{end}} {{end}}{{/* end not Immutable, isArray */}} + } {{if isSlice }} else if {{var "l"}} != len({{var "v"}}) { {{var "v"}} = {{var "v"}}[:{{var "l"}}] {{var "c"}} = true - } - } {{end}} + } {{end}} {{/* end isSlice:47 */}} {{var "j"}} := 0 - for ; ({{var "hl"}} && {{var "j"}} < {{var "l"}}) || !({{var "hl"}} || r.CheckBreak()); {{var "j"}}++ { - if {{var "j"}} == 0 && len({{var "v"}}) == 0 { - if {{var "hl"}} { - {{var "rl"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) - } else { - {{var "rl"}} = 8 - } - {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) - {{var "c"}} = true - } - // if indefinite, etc, then expand the slice if necessary - var {{var "db"}} bool - if {{var "j"}} >= len({{var "v"}}) { - {{if isSlice }} {{var "v"}} = append({{var "v"}}, {{ zero }}); {{var "c"}} = true - {{end}} {{if isArray}} z.DecArrayCannotExpand(len(v), {{var "j"}}+1); {{var "db"}} = true - {{end}} - } + for ; {{var "j"}} < {{var "rr"}} ; {{var "j"}}++ { {{var "h"}}.ElemContainerState({{var "j"}}) - if {{var "db"}} { - z.DecSwallow() - } else { + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } + {{if isArray }}for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "h"}}.ElemContainerState({{var "j"}}) + z.DecSwallow() + } + {{ else }}if {{var "rt"}} { + for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "v"}} = append({{var "v"}}, {{ zero}}) + {{var "h"}}.ElemContainerState({{var "j"}}) {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} } + } {{end}} {{/* end isArray:56 */}} + {{end}} {{/* end isChan:16 */}} +} else { {{/* len < 0 */}} + {{var "j"}} := 0 + for ; !r.CheckBreak(); {{var "j"}}++ { + {{if isChan }} + {{var "h"}}.ElemContainerState({{var "j"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + {{ else }} + if {{var "j"}} >= len({{var "v"}}) { + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "j"}}+1) + {{ else }}{{var "v"}} = append({{var "v"}}, {{zero}})// var {{var "z"}} {{ .Typ }} + {{var "c"}} = true {{end}} + } + {{var "h"}}.ElemContainerState({{var "j"}}) + if {{var "j"}} < len({{var "v"}}) { + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } else { + z.DecSwallow() + } + {{end}} } - {{if isSlice}} if {{var "j"}} < len({{var "v"}}) { + {{if isSlice }}if {{var "j"}} < len({{var "v"}}) { {{var "v"}} = {{var "v"}}[:{{var "j"}}] {{var "c"}} = true } else if {{var "j"}} == 0 && {{var "v"}} == nil { - {{var "v"}} = make([]{{ .Typ }}, 0) + {{var "v"}} = []{{ .Typ }}{} {{var "c"}} = true - } {{end}} + }{{end}} } {{var "h"}}.End() {{if not isArray }}if {{var "c"}} { *{{ .Varname }} = {{var "v"}} }{{end}} - ` diff --git a/vendor/github.com/ugorji/go/codec/gen.go b/vendor/github.com/ugorji/go/codec/gen.go index 8f1fd4f64..c4944dbff 100644 --- a/vendor/github.com/ugorji/go/codec/gen.go +++ b/vendor/github.com/ugorji/go/codec/gen.go @@ -1,5 +1,3 @@ -// +build codecgen.exec - // Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. @@ -82,10 +80,6 @@ import ( // Note: // It was a conscious decision to have gen.go always explicitly call EncodeNil or TryDecodeAsNil. // This way, there isn't a function call overhead just to see that we should not enter a block of code. -// -// Note: -// codecgen-generated code depends on the variables defined by fast-path.generated.go. -// consequently, you cannot run with tags "codecgen notfastpath". // GenVersion is the current version of codecgen. // @@ -100,8 +94,7 @@ import ( // changes in signature of some unpublished helper methods and codecgen cmdline arguments. // v4: Removed separator support from (en|de)cDriver, and refactored codec(gen) // v5: changes to support faster json decoding. Let encoder/decoder maintain state of collections. -// v6: removed unsafe from gen, and now uses codecgen.exec tag -const genVersion = 6 +const GenVersion = 5 const ( genCodecPkg = "codec1978" @@ -133,6 +126,7 @@ var ( genExpectArrayOrMapErr = errors.New("unexpected type. Expecting array/map/slice") genBase64enc = base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__") genQNameRegex = regexp.MustCompile(`[A-Za-z_.]+`) + genCheckVendor bool ) // genRunner holds some state used during a Gen run. @@ -153,7 +147,8 @@ type genRunner struct { is map[reflect.Type]struct{} // types seen during import search bp string // base PkgPath, for which we are generating for - cpfx string // codec package prefix + cpfx string // codec package prefix + unsafe bool // is unsafe to be used in generated code? tm map[reflect.Type]struct{} // types for which enc/dec must be generated ts []reflect.Type // types for which enc/dec must be generated @@ -168,8 +163,8 @@ type genRunner struct { // Gen will write a complete go file containing Selfer implementations for each // type passed. All the types must be in the same package. // -// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. -func Gen(w io.Writer, buildTags, pkgName, uid string, ti *TypeInfos, typ ...reflect.Type) { +// Library users: *DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE.* +func Gen(w io.Writer, buildTags, pkgName, uid string, useUnsafe bool, ti *TypeInfos, typ ...reflect.Type) { // All types passed to this method do not have a codec.Selfer method implemented directly. // codecgen already checks the AST and skips any types that define the codec.Selfer methods. // Consequently, there's no need to check and trim them if they implement codec.Selfer @@ -178,18 +173,19 @@ func Gen(w io.Writer, buildTags, pkgName, uid string, ti *TypeInfos, typ ...refl return } x := genRunner{ - w: w, - t: typ, - te: make(map[uintptr]bool), - td: make(map[uintptr]bool), - im: make(map[string]reflect.Type), - imn: make(map[string]string), - is: make(map[reflect.Type]struct{}), - tm: make(map[reflect.Type]struct{}), - ts: []reflect.Type{}, - bp: genImportPath(typ[0]), - xs: uid, - ti: ti, + unsafe: useUnsafe, + w: w, + t: typ, + te: make(map[uintptr]bool), + td: make(map[uintptr]bool), + im: make(map[string]reflect.Type), + imn: make(map[string]string), + is: make(map[reflect.Type]struct{}), + tm: make(map[reflect.Type]struct{}), + ts: []reflect.Type{}, + bp: genImportPath(typ[0]), + xs: uid, + ti: ti, } if x.ti == nil { x.ti = defTypeInfos @@ -238,8 +234,11 @@ func Gen(w io.Writer, buildTags, pkgName, uid string, ti *TypeInfos, typ ...refl x.linef("%s \"%s\"", x.imn[k], k) } // add required packages - for _, k := range [...]string{"reflect", "runtime", "fmt", "errors"} { + for _, k := range [...]string{"reflect", "unsafe", "runtime", "fmt", "errors"} { if _, ok := x.im[k]; !ok { + if k == "unsafe" && !x.unsafe { + continue + } x.line("\"" + k + "\"") } } @@ -266,16 +265,20 @@ func Gen(w io.Writer, buildTags, pkgName, uid string, ti *TypeInfos, typ ...refl x.line(")") x.line("") + if x.unsafe { + x.line("type codecSelferUnsafeString" + x.xs + " struct { Data uintptr; Len int}") + x.line("") + } x.hn = "codecSelfer" + x.xs x.line("type " + x.hn + " struct{}") x.line("") x.varsfxreset() x.line("func init() {") - x.linef("if %sGenVersion != %v {", x.cpfx, genVersion) + x.linef("if %sGenVersion != %v {", x.cpfx, GenVersion) x.line("_, file, _, _ := runtime.Caller(0)") x.line(`err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", `) - x.linef(`%v, %sGenVersion, file)`, genVersion, x.cpfx) + x.linef(`%v, %sGenVersion, file)`, GenVersion, x.cpfx) x.line("panic(err)") x.linef("}") x.line("if false { // reference the types, but skip this branch at build/run time") @@ -286,6 +289,10 @@ func Gen(w io.Writer, buildTags, pkgName, uid string, ti *TypeInfos, typ ...refl x.linef("var v%v %s.%s", n, x.imn[k], t.Name()) n++ } + if x.unsafe { + x.linef("var v%v unsafe.Pointer", n) + n++ + } if n > 0 { x.out("_") for i := 1; i < n; i++ { @@ -308,7 +315,7 @@ func Gen(w io.Writer, buildTags, pkgName, uid string, ti *TypeInfos, typ ...refl } for _, t := range x.ts { - rtid := rt2id(t) + rtid := reflect.ValueOf(t).Pointer() // generate enc functions for all these slice/map types. x.varsfxreset() x.linef("func (x %s) enc%s(v %s%s, e *%sEncoder) {", x.hn, x.genMethodNameT(t), x.arr2str(t, "*"), x.genTypeName(t), x.cpfx) @@ -538,21 +545,21 @@ func (x *genRunner) selfer(encode bool) { x.out(fnSigPfx) x.line(") codecDecodeSelfFromMap(l int, d *" + x.cpfx + "Decoder) {") x.genRequiredMethodVars(false) - x.decStructMap(genTopLevelVarName, "l", rt2id(t0), t0, genStructMapStyleConsolidated) + x.decStructMap(genTopLevelVarName, "l", reflect.ValueOf(t0).Pointer(), t0, genStructMapStyleConsolidated) x.line("}") x.line("") } else { x.out(fnSigPfx) x.line(") codecDecodeSelfFromMapLenPrefix(l int, d *" + x.cpfx + "Decoder) {") x.genRequiredMethodVars(false) - x.decStructMap(genTopLevelVarName, "l", rt2id(t0), t0, genStructMapStyleLenPrefix) + x.decStructMap(genTopLevelVarName, "l", reflect.ValueOf(t0).Pointer(), t0, genStructMapStyleLenPrefix) x.line("}") x.line("") x.out(fnSigPfx) x.line(") codecDecodeSelfFromMapCheckBreak(l int, d *" + x.cpfx + "Decoder) {") x.genRequiredMethodVars(false) - x.decStructMap(genTopLevelVarName, "l", rt2id(t0), t0, genStructMapStyleCheckBreak) + x.decStructMap(genTopLevelVarName, "l", reflect.ValueOf(t0).Pointer(), t0, genStructMapStyleCheckBreak) x.line("}") x.line("") } @@ -561,7 +568,7 @@ func (x *genRunner) selfer(encode bool) { x.out(fnSigPfx) x.line(") codecDecodeSelfFromArray(l int, d *" + x.cpfx + "Decoder) {") x.genRequiredMethodVars(false) - x.decStructArray(genTopLevelVarName, "l", "return", rt2id(t0), t0) + x.decStructArray(genTopLevelVarName, "l", "return", reflect.ValueOf(t0).Pointer(), t0) x.line("}") x.line("") @@ -638,7 +645,7 @@ func (x *genRunner) encVar(varname string, t reflect.Type) { // enc will encode a variable (varname) of type t, // except t is of kind reflect.Struct or reflect.Array, wherein varname is of type ptrTo(T) (to prevent copying) func (x *genRunner) enc(varname string, t reflect.Type) { - rtid := rt2id(t) + rtid := reflect.ValueOf(t).Pointer() // We call CodecEncodeSelf if one of the following are honored: // - the type already implements Selfer, call that // - the type has a Selfer implementation just created, use that @@ -1091,7 +1098,7 @@ func (x *genRunner) dec(varname string, t reflect.Type) { // assumptions: // - the varname is to a pointer already. No need to take address of it // - t is always a baseType T (not a *T, etc). - rtid := rt2id(t) + rtid := reflect.ValueOf(t).Pointer() tptr := reflect.PtrTo(t) if x.checkForSelfer(t, varname) { if t.Implements(selferTyp) || tptr.Implements(selferTyp) { @@ -1224,7 +1231,7 @@ func (x *genRunner) dec(varname string, t reflect.Type) { // - if elements are primitives or Selfers, call dedicated function on each member. // - else call Encoder.encode(XXX) on it. if rtid == uint8SliceTypId { - x.line("*" + varname + " = r.DecodeBytes(*(*[]byte)(" + varname + "), false)") + x.line("*" + varname + " = r.DecodeBytes(*(*[]byte)(" + varname + "), false, false)") } else if fastpathAV.index(rtid) != -1 { g := x.newGenV(t) x.line("z.F." + g.MethodNamePfx("Dec", false) + "X(" + varname + ", false, d)") @@ -1311,11 +1318,11 @@ func (x *genRunner) decTryAssignPrimitive(varname string, t reflect.Type) (tryAs func (x *genRunner) decListFallback(varname string, rtid uintptr, t reflect.Type) { if t.AssignableTo(uint8SliceTyp) { - x.line("*" + varname + " = r.DecodeBytes(*((*[]byte)(" + varname + ")), false)") + x.line("*" + varname + " = r.DecodeBytes(*((*[]byte)(" + varname + ")), false, false)") return } if t.Kind() == reflect.Array && t.Elem().Kind() == reflect.Uint8 { - x.linef("r.DecodeBytes( ((*[%s]byte)(%s))[:], true)", t.Len(), varname) + x.linef("r.DecodeBytes( ((*[%s]byte)(%s))[:], false, true)", t.Len(), varname) return } type tstruc struct { @@ -1462,6 +1469,17 @@ func (x *genRunner) decStructMap(varname, lenvarname string, rtid uintptr, t ref i := x.varsfx() kName := tpfx + "s" + i + // We thought to use ReadStringAsBytes, as go compiler might optimize the copy out. + // However, using that was more expensive, as it seems that the switch expression + // is evaluated each time. + // + // We could depend on decodeString using a temporary/shared buffer internally. + // However, this model of creating a byte array, and using explicitly is faster, + // and allows optional use of unsafe []byte->string conversion without alloc. + + // Also, ensure that the slice array doesn't escape. + // That will help escape analysis prevent allocation when it gets better. + // x.line("var " + kName + "Arr = [32]byte{} // default string to decode into") // x.line("var " + kName + "Slc = " + kName + "Arr[:] // default slice to decode into") // use the scratch buffer to avoid allocation (most field names are < 32). @@ -1481,9 +1499,15 @@ func (x *genRunner) decStructMap(varname, lenvarname string, rtid uintptr, t ref x.line("} else { if r.CheckBreak() { break }; }") } x.linef("z.DecSendContainerState(codecSelfer_containerMapKey%s)", x.xs) - x.line(kName + "Slc = r.DecodeStringAsBytes()") + x.line(kName + "Slc = r.DecodeBytes(" + kName + "Slc, true, true)") // let string be scoped to this loop alone, so it doesn't escape. - x.line(kName + " := string(" + kName + "Slc)") + if x.unsafe { + x.line(kName + "SlcHdr := codecSelferUnsafeString" + x.xs + "{uintptr(unsafe.Pointer(&" + + kName + "Slc[0])), len(" + kName + "Slc)}") + x.line(kName + " := *(*string)(unsafe.Pointer(&" + kName + "SlcHdr))") + } else { + x.line(kName + " := string(" + kName + "Slc)") + } x.linef("z.DecSendContainerState(codecSelfer_containerMapValue%s)", x.xs) x.decStructMapSwitch(kName, varname, rtid, t) @@ -1629,8 +1653,15 @@ func (x *genV) MethodNamePfx(prefix string, prim bool) string { func genImportPath(t reflect.Type) (s string) { s = t.PkgPath() if genCheckVendor { - // HACK: always handle vendoring. It should be typically on in go 1.6, 1.7 - s = stripVendor(s) + // HACK: Misbehaviour occurs in go 1.5. May have to re-visit this later. + // if s contains /vendor/ OR startsWith vendor/, then return everything after it. + const vendorStart = "vendor/" + const vendorInline = "/vendor/" + if i := strings.LastIndex(s, vendorInline); i >= 0 { + s = s[i+len(vendorInline):] + } else if strings.HasPrefix(s, vendorStart) { + s = s[len(vendorStart):] + } } return } @@ -1752,8 +1783,8 @@ func genIsImmutable(t reflect.Type) (v bool) { } type genInternal struct { - Version int - Values []genV + Values []genV + Unsafe bool } func (x genInternal) FastpathLen() (l int) { @@ -1853,21 +1884,8 @@ func genInternalSortType(s string, elem bool) string { panic("sorttype: unexpected type: " + s) } -func stripVendor(s string) string { - // HACK: Misbehaviour occurs in go 1.5. May have to re-visit this later. - // if s contains /vendor/ OR startsWith vendor/, then return everything after it. - const vendorStart = "vendor/" - const vendorInline = "/vendor/" - if i := strings.LastIndex(s, vendorInline); i >= 0 { - s = s[i+len(vendorInline):] - } else if strings.HasPrefix(s, vendorStart) { - s = s[len(vendorStart):] - } - return s -} - // var genInternalMu sync.Mutex -var genInternalV = genInternal{Version: genVersion} +var genInternalV genInternal var genInternalTmplFuncs template.FuncMap var genInternalOnce sync.Once @@ -1930,7 +1948,7 @@ func genInternalInit() { "float64": 8, "bool": 1, } - var gt = genInternal{Version: genVersion} + var gt genInternal // For each slice or map type, there must be a (symmetrical) Encode and Decode fast-path function for _, s := range types { @@ -1962,10 +1980,11 @@ func genInternalInit() { // It is run by the program author alone. // Unfortunately, it has to be exported so that it can be called from a command line tool. // *** DO NOT USE *** -func genInternalGoFile(r io.Reader, w io.Writer) (err error) { +func genInternalGoFile(r io.Reader, w io.Writer, safe bool) (err error) { genInternalOnce.Do(genInternalInit) gt := genInternalV + gt.Unsafe = !safe t := template.New("").Funcs(genInternalTmplFuncs) diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go b/vendor/github.com/ugorji/go/codec/gen_15.go similarity index 72% rename from vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go rename to vendor/github.com/ugorji/go/codec/gen_15.go index 68626e1ce..ab76c3102 100644 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go +++ b/vendor/github.com/ugorji/go/codec/gen_15.go @@ -7,4 +7,6 @@ package codec import "os" -var genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") == "1" +func init() { + genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") == "1" +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go b/vendor/github.com/ugorji/go/codec/gen_16.go similarity index 65% rename from vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go rename to vendor/github.com/ugorji/go/codec/gen_16.go index 344f5967b..87c04e2e1 100644 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go +++ b/vendor/github.com/ugorji/go/codec/gen_16.go @@ -1,10 +1,12 @@ // Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. -// +build go1.6,!go1.7 +// +build go1.6 package codec import "os" -var genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") != "0" +func init() { + genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") != "0" +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go b/vendor/github.com/ugorji/go/codec/gen_17.go similarity index 82% rename from vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go rename to vendor/github.com/ugorji/go/codec/gen_17.go index de91d2940..3881a43ce 100644 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go +++ b/vendor/github.com/ugorji/go/codec/gen_17.go @@ -5,4 +5,6 @@ package codec -const genCheckVendor = true +func init() { + genCheckVendor = true +} diff --git a/vendor/github.com/ugorji/go/codec/goversion_makemap_gte_go19.go b/vendor/github.com/ugorji/go/codec/goversion_makemap_gte_go19.go deleted file mode 100644 index 51fe40e5b..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_makemap_gte_go19.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// +build go1.9 - -package codec - -import "reflect" - -func makeMapReflect(t reflect.Type, size int) reflect.Value { - if size < 0 { - return reflect.MakeMapWithSize(t, 4) - } - return reflect.MakeMapWithSize(t, size) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go19.go b/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go19.go deleted file mode 100644 index d4b9c2c8d..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go19.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// +build !go1.9 - -package codec - -import "reflect" - -func makeMapReflect(t reflect.Type, size int) reflect.Value { - return reflect.MakeMap(t) -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go b/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go deleted file mode 100644 index dcd8c3d11..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// +build !go1.4 - -package codec - -// This codec package will only work for go1.4 and above. -// This is for the following reasons: -// - go 1.4 was released in 2014 -// - go runtime is written fully in go -// - interface only holds pointers -// - reflect.Value is stabilized as 3 words - -func init() { - panic("codec: go 1.3 and below are not supported") -} diff --git a/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go b/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go deleted file mode 100644 index 9d007bfed..000000000 --- a/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// +build !go1.5 - -package codec - -var genCheckVendor = false diff --git a/vendor/github.com/ugorji/go/codec/helper.go b/vendor/github.com/ugorji/go/codec/helper.go index 541256cb8..8b94fc1e4 100644 --- a/vendor/github.com/ugorji/go/codec/helper.go +++ b/vendor/github.com/ugorji/go/codec/helper.go @@ -133,11 +133,11 @@ const ( // Note that this will always cause rpc tests to fail, since they need io.EOF sent via panic. recoverPanicToErr = true - // resetSliceElemToZeroValue: on decoding a slice, reset the element to a zero value first. - // concern: if the slice already contained some garbage, we will decode into that garbage. + // if resetSliceElemToZeroValue, then on decoding a slice, reset the element to a zero value first. + // Only concern is that, if the slice already contained some garbage, we will decode into that garbage. // The chances of this are slim, so leave this "optimization". // TODO: should this be true, to ensure that we always decode into a "zero" "empty" value? - resetSliceElemToZeroValue = false + resetSliceElemToZeroValue bool = false ) var ( @@ -250,8 +250,6 @@ type jsonUnmarshaler interface { UnmarshalJSON([]byte) error } -// type byteAccepter func(byte) bool - var ( bigen = binary.BigEndian structInfoFieldName = "_struct" @@ -280,17 +278,17 @@ var ( selferTyp = reflect.TypeOf((*Selfer)(nil)).Elem() - uint8SliceTypId = rt2id(uint8SliceTyp) - rawExtTypId = rt2id(rawExtTyp) - rawTypId = rt2id(rawTyp) - intfTypId = rt2id(intfTyp) - timeTypId = rt2id(timeTyp) - stringTypId = rt2id(stringTyp) + uint8SliceTypId = reflect.ValueOf(uint8SliceTyp).Pointer() + rawExtTypId = reflect.ValueOf(rawExtTyp).Pointer() + rawTypId = reflect.ValueOf(rawTyp).Pointer() + intfTypId = reflect.ValueOf(intfTyp).Pointer() + timeTypId = reflect.ValueOf(timeTyp).Pointer() + stringTypId = reflect.ValueOf(stringTyp).Pointer() - mapStrIntfTypId = rt2id(mapStrIntfTyp) - mapIntfIntfTypId = rt2id(mapIntfIntfTyp) - intfSliceTypId = rt2id(intfSliceTyp) - // mapBySliceTypId = rt2id(mapBySliceTyp) + mapStrIntfTypId = reflect.ValueOf(mapStrIntfTyp).Pointer() + mapIntfIntfTypId = reflect.ValueOf(mapIntfIntfTyp).Pointer() + intfSliceTypId = reflect.ValueOf(intfSliceTyp).Pointer() + // mapBySliceTypId = reflect.ValueOf(mapBySliceTyp).Pointer() intBitsize uint8 = uint8(reflect.TypeOf(int(0)).Bits()) uintBitsize uint8 = uint8(reflect.TypeOf(uint(0)).Bits()) @@ -305,24 +303,6 @@ var ( var defTypeInfos = NewTypeInfos([]string{"codec", "json"}) -var immutableKindsSet = [32]bool{ - reflect.Int: true, - reflect.Int8: true, - reflect.Int16: true, - reflect.Int32: true, - reflect.Int64: true, - reflect.Uint: true, - reflect.Uint8: true, - reflect.Uint16: true, - reflect.Uint32: true, - reflect.Uint64: true, - reflect.Uintptr: true, - reflect.Float32: true, - reflect.Float64: true, - reflect.Bool: true, - reflect.String: true, -} - // Selfer defines methods by which a value can encode or decode itself. // // Any type which implements Selfer will be able to encode or decode itself. @@ -363,10 +343,10 @@ func (x *BasicHandle) getBasicHandle() *BasicHandle { } func (x *BasicHandle) getTypeInfo(rtid uintptr, rt reflect.Type) (pti *typeInfo) { - if x.TypeInfos == nil { - return defTypeInfos.get(rtid, rt) + if x.TypeInfos != nil { + return x.TypeInfos.get(rtid, rt) } - return x.TypeInfos.get(rtid, rt) + return defTypeInfos.get(rtid, rt) } // Handle is the interface for a specific encoding format. @@ -496,6 +476,9 @@ func (x *setExtWrapper) UpdateExt(dest interface{}, v interface{}) { x.i.UpdateExt(dest, v) } +// type errorString string +// func (x errorString) Error() string { return string(x) } + type binaryEncodingType struct{} func (_ binaryEncodingType) isBinary() bool { return true } @@ -576,7 +559,7 @@ func (o *extHandle) SetExt(rt reflect.Type, tag uint64, ext Ext) (err error) { return } - rtid := rt2id(rt) + rtid := reflect.ValueOf(rt).Pointer() for _, v := range *o { if v.rtid == rtid { v.tag, v.ext = tag, ext @@ -728,7 +711,6 @@ type typeInfo struct { rt reflect.Type rtid uintptr - // rv0 reflect.Value // saved zero value, used if immutableKind numMeth uint16 // number of methods @@ -761,49 +743,42 @@ type typeInfo struct { toArray bool // whether this (struct) type should be encoded as an array } -// linear search. faster than binary search in my testing up to 16-field structs. -const binarySearchThreshold = 8 // similar to what python does for hashtables - func (ti *typeInfo) indexForEncName(name string) int { // NOTE: name may be a stringView, so don't pass it to another function. //tisfi := ti.sfi - sfilen := len(ti.sfi) - if sfilen < binarySearchThreshold { + const binarySearchThreshold = 16 + if sfilen := len(ti.sfi); sfilen < binarySearchThreshold { + // linear search. faster than binary search in my testing up to 16-field structs. for i, si := range ti.sfi { if si.encName == name { return i } } - return -1 - } - // binary search. adapted from sort/search.go. - h, i, j := 0, 0, sfilen - for i < j { - h = i + (j-i)/2 - if ti.sfi[h].encName < name { - i = h + 1 - } else { - j = h + } else { + // binary search. adapted from sort/search.go. + h, i, j := 0, 0, sfilen + for i < j { + h = i + (j-i)/2 + if ti.sfi[h].encName < name { + i = h + 1 + } else { + j = h + } + } + if i < sfilen && ti.sfi[i].encName == name { + return i } } - if i < sfilen && ti.sfi[i].encName == name { - return i - } return -1 } -type rtid2ti struct { - rtid uintptr - ti *typeInfo -} - // TypeInfos caches typeInfo for each type on first inspection. // // It is configured with a set of tag keys, which are used to get // configuration for the type. type TypeInfos struct { - infos atomicTypeInfoSlice // formerly map[uintptr]*typeInfo, now *[]rtid2ti - mu sync.Mutex + infos map[uintptr]*typeInfo + mu sync.RWMutex tags []string } @@ -812,7 +787,7 @@ type TypeInfos struct { // This allows users customize the struct tag keys which contain configuration // of their types. func NewTypeInfos(tags []string) *TypeInfos { - return &TypeInfos{tags: tags} + return &TypeInfos{tags: tags, infos: make(map[uintptr]*typeInfo, 64)} } func (x *TypeInfos) structTag(t reflect.StructTag) (s string) { @@ -827,46 +802,20 @@ func (x *TypeInfos) structTag(t reflect.StructTag) (s string) { return } -func (x *TypeInfos) find(sp *[]rtid2ti, rtid uintptr) (idx int, ti *typeInfo) { - // binary search. adapted from sort/search.go. - // fmt.Printf(">>>> calling typeinfos.find ... \n") - // if sp == nil { - // return -1, nil - // } - s := *sp - h, i, j := 0, 0, len(s) - for i < j { - h = i + (j-i)/2 - if s[h].rtid < rtid { - i = h + 1 - } else { - j = h - } - } - if i < len(s) && s[i].rtid == rtid { - return i, s[i].ti - } - return i, nil -} - func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) { - // fmt.Printf(">>>> calling typeinfos.get ... \n") - sp := x.infos.load() - var idx int - if sp != nil { - idx, pti = x.find(sp, rtid) - if pti != nil { - return - } + var ok bool + x.mu.RLock() + pti, ok = x.infos[rtid] + x.mu.RUnlock() + if ok { + return } // do not hold lock while computing this. // it may lead to duplication, but that's ok. ti := typeInfo{rt: rt, rtid: rtid} - // ti.rv0 = reflect.Zero(rt) - ti.numMeth = uint16(rt.NumMethod()) - var ok bool + var indir int8 if ok, indir = implementsIntf(rt, binaryMarshalerTyp); ok { ti.bm, ti.bmIndir = true, indir @@ -905,7 +854,7 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) { ti.baseId = rtid } else { ti.base = pt - ti.baseId = rt2id(pt) + ti.baseId = reflect.ValueOf(pt).Pointer() ti.baseIndir = ptIndir } @@ -926,28 +875,12 @@ func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) { } // sfi = sfip - var vs []rtid2ti x.mu.Lock() - sp = x.infos.load() - if sp == nil { - // fmt.Printf(">>>> in typeinfos.get: sp == nil\n") + if pti, ok = x.infos[rtid]; !ok { pti = &ti - vs = []rtid2ti{{rtid, pti}} - x.infos.store(&vs) - } else { - idx, pti = x.find(sp, rtid) - if pti == nil { - s := *sp - pti = &ti - vs = make([]rtid2ti, len(s)+1) - copy(vs, s[:idx]) - vs[idx] = rtid2ti{rtid, pti} - copy(vs[idx+1:], s[idx:]) - x.infos.store(&vs) - } + x.infos[rtid] = pti } x.mu.Unlock() - // fmt.Printf(">>>>>>> TypeInfos: Num Elements: %v\n", len(*(x.infos.load()))) return } @@ -999,7 +932,7 @@ LOOP: } if ft.Kind() == reflect.Struct { // if etypes contains this, don't call rget again (as fields are already seen here) - ftid := rt2id(ft) + ftid := reflect.ValueOf(ft).Pointer() // We cannot recurse forever, but we need to track other field depths. // So - we break if we see a type twice (not the first time). // This should be sufficient to handle an embedded type that refers to its @@ -1132,23 +1065,22 @@ func panicToErr(err *error) { // } func isImmutableKind(k reflect.Kind) (v bool) { - return immutableKindsSet[k] - // return false || - // k == reflect.Int || - // k == reflect.Int8 || - // k == reflect.Int16 || - // k == reflect.Int32 || - // k == reflect.Int64 || - // k == reflect.Uint || - // k == reflect.Uint8 || - // k == reflect.Uint16 || - // k == reflect.Uint32 || - // k == reflect.Uint64 || - // k == reflect.Uintptr || - // k == reflect.Float32 || - // k == reflect.Float64 || - // k == reflect.Bool || - // k == reflect.String + return false || + k == reflect.Int || + k == reflect.Int8 || + k == reflect.Int16 || + k == reflect.Int32 || + k == reflect.Int64 || + k == reflect.Uint || + k == reflect.Uint8 || + k == reflect.Uint16 || + k == reflect.Uint32 || + k == reflect.Uint64 || + k == reflect.Uintptr || + k == reflect.Float32 || + k == reflect.Float64 || + k == reflect.Bool || + k == reflect.String } // these functions must be inlinable, and not call anybody diff --git a/vendor/github.com/ugorji/go/codec/helper_internal.go b/vendor/github.com/ugorji/go/codec/helper_internal.go index eb18e2cca..5d0727f77 100644 --- a/vendor/github.com/ugorji/go/codec/helper_internal.go +++ b/vendor/github.com/ugorji/go/codec/helper_internal.go @@ -219,3 +219,24 @@ func growCap(oldCap, unit, num int) (newCap int) { } return } + +func expandSliceValue(s reflect.Value, num int) reflect.Value { + if num <= 0 { + return s + } + l0 := s.Len() + l1 := l0 + num // new slice length + if l1 < l0 { + panic("ExpandSlice: slice overflow") + } + c0 := s.Cap() + if l1 <= c0 { + return s.Slice(0, l1) + } + st := s.Type() + c1 := growCap(c0, int(st.Elem().Size()), num) + s2 := reflect.MakeSlice(st, l1, c1) + // println("expandslicevalue: cap-old: ", c0, ", cap-new: ", c1, ", len-new: ", l1) + reflect.Copy(s2, s) + return s2 +} diff --git a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go index d80e18f60..8b06a0045 100644 --- a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go +++ b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go @@ -1,21 +1,13 @@ -// +build !go1.7 safe appengine +// +build !unsafe // Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. package codec -import ( - "reflect" - "sync/atomic" -) - // stringView returns a view of the []byte as a string. // In unsafe mode, it doesn't incur allocation and copying caused by conversion. // In regular safe mode, it is an allocation and copy. -// -// Usage: Always maintain a reference to v while result of this call is in use, -// and call keepAlive4BytesView(v) at point where done with view. func stringView(v []byte) string { return string(v) } @@ -23,121 +15,6 @@ func stringView(v []byte) string { // bytesView returns a view of the string as a []byte. // In unsafe mode, it doesn't incur allocation and copying caused by conversion. // In regular safe mode, it is an allocation and copy. -// -// Usage: Always maintain a reference to v while result of this call is in use, -// and call keepAlive4BytesView(v) at point where done with view. func bytesView(v string) []byte { return []byte(v) } - -// // keepAlive4BytesView maintains a reference to the input parameter for bytesView. -// // -// // Usage: call this at point where done with the bytes view. -// func keepAlive4BytesView(v string) {} - -// // keepAlive4BytesView maintains a reference to the input parameter for stringView. -// // -// // Usage: call this at point where done with the string view. -// func keepAlive4StringView(v []byte) {} - -func rv2i(rv reflect.Value) interface{} { - return rv.Interface() -} - -func rt2id(rt reflect.Type) uintptr { - return reflect.ValueOf(rt).Pointer() -} - -// -------------------------- -type ptrToRvMap struct{} - -func (_ *ptrToRvMap) init() {} -func (_ *ptrToRvMap) get(i interface{}) reflect.Value { - return reflect.ValueOf(i).Elem() -} - -// -------------------------- -type atomicTypeInfoSlice struct { - v atomic.Value -} - -func (x *atomicTypeInfoSlice) load() *[]rtid2ti { - i := x.v.Load() - if i == nil { - return nil - } - return i.(*[]rtid2ti) -} - -func (x *atomicTypeInfoSlice) store(p *[]rtid2ti) { - x.v.Store(p) -} - -// -------------------------- -func (f *decFnInfo) raw(rv reflect.Value) { - rv.SetBytes(f.d.raw()) -} - -func (f *decFnInfo) kString(rv reflect.Value) { - rv.SetString(f.d.d.DecodeString()) -} - -func (f *decFnInfo) kBool(rv reflect.Value) { - rv.SetBool(f.d.d.DecodeBool()) -} - -func (f *decFnInfo) kFloat32(rv reflect.Value) { - rv.SetFloat(f.d.d.DecodeFloat(true)) -} - -func (f *decFnInfo) kFloat64(rv reflect.Value) { - rv.SetFloat(f.d.d.DecodeFloat(false)) -} - -func (f *decFnInfo) kInt(rv reflect.Value) { - rv.SetInt(f.d.d.DecodeInt(intBitsize)) -} - -func (f *decFnInfo) kInt8(rv reflect.Value) { - rv.SetInt(f.d.d.DecodeInt(8)) -} - -func (f *decFnInfo) kInt16(rv reflect.Value) { - rv.SetInt(f.d.d.DecodeInt(16)) -} - -func (f *decFnInfo) kInt32(rv reflect.Value) { - rv.SetInt(f.d.d.DecodeInt(32)) -} - -func (f *decFnInfo) kInt64(rv reflect.Value) { - rv.SetInt(f.d.d.DecodeInt(64)) -} - -func (f *decFnInfo) kUint(rv reflect.Value) { - rv.SetUint(f.d.d.DecodeUint(uintBitsize)) -} - -func (f *decFnInfo) kUintptr(rv reflect.Value) { - rv.SetUint(f.d.d.DecodeUint(uintBitsize)) -} - -func (f *decFnInfo) kUint8(rv reflect.Value) { - rv.SetUint(f.d.d.DecodeUint(8)) -} - -func (f *decFnInfo) kUint16(rv reflect.Value) { - rv.SetUint(f.d.d.DecodeUint(16)) -} - -func (f *decFnInfo) kUint32(rv reflect.Value) { - rv.SetUint(f.d.d.DecodeUint(32)) -} - -func (f *decFnInfo) kUint64(rv reflect.Value) { - rv.SetUint(f.d.d.DecodeUint(64)) -} - -// func i2rv(i interface{}) reflect.Value { -// return reflect.ValueOf(i) -// } diff --git a/vendor/github.com/ugorji/go/codec/helper_test.go b/vendor/github.com/ugorji/go/codec/helper_test.go index 611eac43d..a2d912a00 100644 --- a/vendor/github.com/ugorji/go/codec/helper_test.go +++ b/vendor/github.com/ugorji/go/codec/helper_test.go @@ -5,14 +5,171 @@ package codec // All non-std package dependencies related to testing live in this file, // so porting to different environment is easy (just update functions). +// +// This file sets up the variables used, including testInitFns. +// Each file should add initialization that should be performed +// after flags are parsed. +// +// init is a multi-step process: +// - setup vars (handled by init functions in each file) +// - parse flags +// - setup derived vars (handled by pre-init registered functions - registered in init function) +// - post init (handled by post-init registered functions - registered in init function) +// This way, no one has to manage carefully control the initialization +// using file names, etc. +// +// Tests which require external dependencies need the -tag=x parameter. +// They should be run as: +// go test -tags=x -run=. +// Benchmarks should also take this parameter, to include the sereal, xdr, etc. +// To run against codecgen, etc, make sure you pass extra parameters. +// Example usage: +// go test "-tags=x codecgen unsafe" -bench=. +// +// To fully test everything: +// go test -tags=x -benchtime=100ms -tv -bg -bi -brw -bu -v -run=. -bench=. + +// Handling flags +// codec_test.go will define a set of global flags for testing, including: +// - Use Reset +// - Use IO reader/writer (vs direct bytes) +// - Set Canonical +// - Set InternStrings +// - Use Symbols +// +// This way, we can test them all by running same set of tests with a different +// set of flags. +// +// Following this, all the benchmarks will utilize flags set by codec_test.go +// and will not redefine these "global" flags. import ( + "bytes" "errors" + "flag" "fmt" "reflect" + "sync" "testing" ) +type testHED struct { + H Handle + E *Encoder + D *Decoder +} + +var ( + testNoopH = NoopHandle(8) + testMsgpackH = &MsgpackHandle{} + testBincH = &BincHandle{} + testSimpleH = &SimpleHandle{} + testCborH = &CborHandle{} + testJsonH = &JsonHandle{} + + testHandles []Handle + testPreInitFns []func() + testPostInitFns []func() + + testOnce sync.Once + + testHEDs []testHED +) + +// variables used by tests +var ( + testVerbose bool + testInitDebug bool + testUseIoEncDec bool + testStructToArray bool + testCanonical bool + testUseReset bool + testWriteNoSymbols bool + testSkipIntf bool + testInternStr bool + testUseMust bool + testCheckCircRef bool + testJsonIndent int +) + +func init() { + testHEDs = make([]testHED, 0, 32) + testHandles = append(testHandles, + testNoopH, testMsgpackH, testBincH, testSimpleH, + testCborH, testJsonH) +} + +func testHEDGet(h Handle) *testHED { + for i := range testHEDs { + v := &testHEDs[i] + if v.H == h { + return v + } + } + testHEDs = append(testHEDs, testHED{h, NewEncoder(nil, h), NewDecoder(nil, h)}) + return &testHEDs[len(testHEDs)-1] +} + +func testInitAll() { + flag.Parse() + for _, f := range testPreInitFns { + f() + } + for _, f := range testPostInitFns { + f() + } +} + +func testCodecEncode(ts interface{}, bsIn []byte, + fn func([]byte) *bytes.Buffer, h Handle) (bs []byte, err error) { + // bs = make([]byte, 0, approxSize) + var e *Encoder + var buf *bytes.Buffer + if testUseReset { + e = testHEDGet(h).E + } else { + e = NewEncoder(nil, h) + } + if testUseIoEncDec { + buf = fn(bsIn) + e.Reset(buf) + } else { + bs = bsIn + e.ResetBytes(&bs) + } + if testUseMust { + e.MustEncode(ts) + } else { + err = e.Encode(ts) + } + if testUseIoEncDec { + bs = buf.Bytes() + } + return +} + +func testCodecDecode(bs []byte, ts interface{}, h Handle) (err error) { + var d *Decoder + var buf *bytes.Reader + if testUseReset { + d = testHEDGet(h).D + } else { + d = NewDecoder(nil, h) + } + if testUseIoEncDec { + buf = bytes.NewReader(bs) + d.Reset(buf) + } else { + d.ResetBytes(bs) + } + if testUseMust { + d.MustDecode(ts) + } else { + err = d.Decode(ts) + } + return +} + // ----- functions below are used only by tests (not benchmarks) const ( diff --git a/vendor/github.com/ugorji/go/codec/helper_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_unsafe.go index d23e6e461..0f596c71a 100644 --- a/vendor/github.com/ugorji/go/codec/helper_unsafe.go +++ b/vendor/github.com/ugorji/go/codec/helper_unsafe.go @@ -1,6 +1,4 @@ -// +build !safe -// +build !appengine -// +build go1.7 +// +build unsafe // Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. // Use of this source code is governed by a MIT license found in the LICENSE file. @@ -8,15 +6,10 @@ package codec import ( - "reflect" - "sync/atomic" "unsafe" ) // This file has unsafe variants of some helper methods. -// NOTE: See helper_not_unsafe.go for the usage information. - -// var zeroRTv [4]uintptr type unsafeString struct { Data uintptr @@ -29,17 +22,9 @@ type unsafeSlice struct { Cap int } -type unsafeIntf struct { - typ unsafe.Pointer - word unsafe.Pointer -} - -type unsafeReflectValue struct { - typ unsafe.Pointer - ptr unsafe.Pointer - flag uintptr -} - +// stringView returns a view of the []byte as a string. +// In unsafe mode, it doesn't incur allocation and copying caused by conversion. +// In regular safe mode, it is an allocation and copy. func stringView(v []byte) string { if len(v) == 0 { return "" @@ -50,6 +35,9 @@ func stringView(v []byte) string { return *(*string)(unsafe.Pointer(&sx)) } +// bytesView returns a view of the string as a []byte. +// In unsafe mode, it doesn't incur allocation and copying caused by conversion. +// In regular safe mode, it is an allocation and copy. func bytesView(v string) []byte { if len(v) == 0 { return zeroByteSlice @@ -59,404 +47,3 @@ func bytesView(v string) []byte { bx := unsafeSlice{sx.Data, sx.Len, sx.Len} return *(*[]byte)(unsafe.Pointer(&bx)) } - -// func keepAlive4BytesView(v string) { -// runtime.KeepAlive(v) -// } - -// func keepAlive4StringView(v []byte) { -// runtime.KeepAlive(v) -// } - -const _unsafe_rv2i_is_safe = false - -// TODO: consider a more generally-known optimization for reflect.Value ==> Interface -// -// Currently, we use this fragile method that taps into implememtation details from -// the source go stdlib reflect/value.go, -// and trims the implementation. -func rv2i(rv reflect.Value) interface{} { - if _unsafe_rv2i_is_safe { - return rv.Interface() - } - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - // references that are single-words (map, ptr) may be double-referenced as flagIndir - kk := urv.flag & (1<<5 - 1) - if (kk == uintptr(reflect.Map) || kk == uintptr(reflect.Ptr)) && urv.flag&(1<<7) != 0 { - return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: *(*unsafe.Pointer)(urv.ptr), typ: urv.typ})) - } - return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: urv.ptr, typ: urv.typ})) -} - -func rt2id(rt reflect.Type) uintptr { - return uintptr(((*unsafeIntf)(unsafe.Pointer(&rt))).word) -} - -// func rv0t(rt reflect.Type) reflect.Value { -// ut := (*unsafeIntf)(unsafe.Pointer(&rt)) -// // we need to determine whether ifaceIndir, and then whether to just pass 0 as the ptr -// uv := unsafeReflectValue{ut.word, &zeroRTv, flag(rt.Kind())} -// return *(*reflect.Value)(unsafe.Pointer(&uv}) -// } - -type ptrToRVKV struct { - k uintptr - v reflect.Value -} - -type ptrToRvMap struct { - // m map[uintptr]reflect.Value - a [4]ptrToRVKV - v []ptrToRVKV -} - -func (p *ptrToRvMap) init() { - // fmt.Printf(">>>> new ptr to rv map\n") - // p.m = make(map[uintptr]reflect.Value, 32) - p.v = p.a[:0] -} - -func (p *ptrToRvMap) get(intf interface{}) (rv reflect.Value) { - word := uintptr(((*unsafeIntf)(unsafe.Pointer(&intf))).word) - // binary search. adapted from sort/search.go. - h, i, j := 0, 0, len(p.v) - for i < j { - h = i + (j-i)/2 - if p.v[h].k < word { - i = h + 1 - } else { - j = h - } - } - if i < len(p.v) && p.v[i].k == word { - return p.v[i].v - } - - // insert into position i - // fmt.Printf(">>>> resetting rv for word: %x, interface: %v\n", word, intf) - rv = reflect.ValueOf(intf).Elem() - p.v = append(p.v, ptrToRVKV{}) - copy(p.v[i+1:len(p.v)], p.v[i:len(p.v)-1]) - p.v[i].k, p.v[i].v = word, rv - return -} - -// -------------------------- -type atomicTypeInfoSlice struct { - v unsafe.Pointer -} - -func (x *atomicTypeInfoSlice) load() *[]rtid2ti { - return (*[]rtid2ti)(atomic.LoadPointer(&x.v)) -} - -func (x *atomicTypeInfoSlice) store(p *[]rtid2ti) { - atomic.StorePointer(&x.v, unsafe.Pointer(p)) -} - -// -------------------------- -func (f *decFnInfo) raw(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*[]byte)(urv.ptr) = f.d.raw() -} - -func (f *decFnInfo) kString(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*string)(urv.ptr) = f.d.d.DecodeString() -} - -func (f *decFnInfo) kBool(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*bool)(urv.ptr) = f.d.d.DecodeBool() -} - -func (f *decFnInfo) kFloat32(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*float32)(urv.ptr) = float32(f.d.d.DecodeFloat(true)) -} - -func (f *decFnInfo) kFloat64(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*float64)(urv.ptr) = f.d.d.DecodeFloat(false) -} - -func (f *decFnInfo) kInt(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int)(urv.ptr) = int(f.d.d.DecodeInt(intBitsize)) -} - -func (f *decFnInfo) kInt8(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int8)(urv.ptr) = int8(f.d.d.DecodeInt(8)) -} - -func (f *decFnInfo) kInt16(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int16)(urv.ptr) = int16(f.d.d.DecodeInt(16)) -} - -func (f *decFnInfo) kInt32(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int32)(urv.ptr) = int32(f.d.d.DecodeInt(32)) -} - -func (f *decFnInfo) kInt64(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*int64)(urv.ptr) = f.d.d.DecodeInt(64) -} - -func (f *decFnInfo) kUint(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint)(urv.ptr) = uint(f.d.d.DecodeUint(uintBitsize)) -} - -func (f *decFnInfo) kUintptr(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uintptr)(urv.ptr) = uintptr(f.d.d.DecodeUint(uintBitsize)) -} - -func (f *decFnInfo) kUint8(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint8)(urv.ptr) = uint8(f.d.d.DecodeUint(8)) -} - -func (f *decFnInfo) kUint16(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint16)(urv.ptr) = uint16(f.d.d.DecodeUint(16)) -} - -func (f *decFnInfo) kUint32(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint32)(urv.ptr) = uint32(f.d.d.DecodeUint(32)) -} -func (f *decFnInfo) kUint64(rv reflect.Value) { - urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - *(*uint64)(urv.ptr) = f.d.d.DecodeUint(64) -} - -// func (p *ptrToRvMap) get(i interface{}) (rv reflect.Value) { -// word := uintptr(((*unsafeIntf)(unsafe.Pointer(&i))).word) -// rv, exists := p.m[word] -// if !exists { -// fmt.Printf(">>>> resetting rv for word: %x, interface: %v\n", word, i) -// rv = reflect.ValueOf(i).Elem() -// p.m[word] = rv -// } -// return -// } - -// func rt2id(rt reflect.Type) uintptr { -// return uintptr(((*unsafeIntf)(unsafe.Pointer(&rt))).word) -// // var i interface{} = rt -// // // ui := (*unsafeIntf)(unsafe.Pointer(&i)) -// // return ((*unsafeIntf)(unsafe.Pointer(&i))).word -// } - -// func rv2i(rv reflect.Value) interface{} { -// urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) -// // non-reference type: already indir -// // reference type: depend on flagIndir property ('cos maybe was double-referenced) -// // const (unsafeRvFlagKindMask = 1<<5 - 1 , unsafeRvFlagIndir = 1 << 7 ) -// // rvk := reflect.Kind(urv.flag & (1<<5 - 1)) -// // if (rvk == reflect.Chan || -// // rvk == reflect.Func || -// // rvk == reflect.Interface || -// // rvk == reflect.Map || -// // rvk == reflect.Ptr || -// // rvk == reflect.UnsafePointer) && urv.flag&(1<<8) != 0 { -// // fmt.Printf(">>>>> ---- double indirect reference: %v, %v\n", rvk, rv.Type()) -// // return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: *(*unsafe.Pointer)(urv.ptr), typ: urv.typ})) -// // } -// if urv.flag&(1<<5-1) == uintptr(reflect.Map) && urv.flag&(1<<7) != 0 { -// // fmt.Printf(">>>>> ---- double indirect reference: %v, %v\n", rvk, rv.Type()) -// return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: *(*unsafe.Pointer)(urv.ptr), typ: urv.typ})) -// } -// // fmt.Printf(">>>>> ++++ direct reference: %v, %v\n", rvk, rv.Type()) -// return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: urv.ptr, typ: urv.typ})) -// } - -// const ( -// unsafeRvFlagKindMask = 1<<5 - 1 -// unsafeRvKindDirectIface = 1 << 5 -// unsafeRvFlagIndir = 1 << 7 -// unsafeRvFlagAddr = 1 << 8 -// unsafeRvFlagMethod = 1 << 9 - -// _USE_RV_INTERFACE bool = false -// _UNSAFE_RV_DEBUG = true -// ) - -// type unsafeRtype struct { -// _ [2]uintptr -// _ uint32 -// _ uint8 -// _ uint8 -// _ uint8 -// kind uint8 -// _ [2]uintptr -// _ int32 -// } - -// func _rv2i(rv reflect.Value) interface{} { -// // Note: From use, -// // - it's never an interface -// // - the only calls here are for ifaceIndir types. -// // (though that conditional is wrong) -// // To know for sure, we need the value of t.kind (which is not exposed). -// // -// // Need to validate the path: type is indirect ==> only value is indirect ==> default (value is direct) -// // - Type indirect, Value indirect: ==> numbers, boolean, slice, struct, array, string -// // - Type Direct, Value indirect: ==> map??? -// // - Type Direct, Value direct: ==> pointers, unsafe.Pointer, func, chan, map -// // -// // TRANSLATES TO: -// // if typeIndirect { } else if valueIndirect { } else { } -// // -// // Since we don't deal with funcs, then "flagNethod" is unset, and can be ignored. - -// if _USE_RV_INTERFACE { -// return rv.Interface() -// } -// urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) - -// // if urv.flag&unsafeRvFlagMethod != 0 || urv.flag&unsafeRvFlagKindMask == uintptr(reflect.Interface) { -// // println("***** IS flag method or interface: delegating to rv.Interface()") -// // return rv.Interface() -// // } - -// // if urv.flag&unsafeRvFlagKindMask == uintptr(reflect.Interface) { -// // println("***** IS Interface: delegate to rv.Interface") -// // return rv.Interface() -// // } -// // if urv.flag&unsafeRvFlagKindMask&unsafeRvKindDirectIface == 0 { -// // if urv.flag&unsafeRvFlagAddr == 0 { -// // println("***** IS ifaceIndir typ") -// // // ui := unsafeIntf{word: urv.ptr, typ: urv.typ} -// // // return *(*interface{})(unsafe.Pointer(&ui)) -// // // return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: urv.ptr, typ: urv.typ})) -// // } -// // } else if urv.flag&unsafeRvFlagIndir != 0 { -// // println("***** IS flagindir") -// // // return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: *(*unsafe.Pointer)(urv.ptr), typ: urv.typ})) -// // } else { -// // println("***** NOT flagindir") -// // return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: urv.ptr, typ: urv.typ})) -// // } -// // println("***** default: delegate to rv.Interface") - -// urt := (*unsafeRtype)(unsafe.Pointer(urv.typ)) -// if _UNSAFE_RV_DEBUG { -// fmt.Printf(">>>> start: %v: ", rv.Type()) -// fmt.Printf("%v - %v\n", *urv, *urt) -// } -// if urt.kind&unsafeRvKindDirectIface == 0 { -// if _UNSAFE_RV_DEBUG { -// fmt.Printf("**** +ifaceIndir type: %v\n", rv.Type()) -// } -// // println("***** IS ifaceIndir typ") -// // if true || urv.flag&unsafeRvFlagAddr == 0 { -// // // println(" ***** IS NOT addr") -// return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: urv.ptr, typ: urv.typ})) -// // } -// } else if urv.flag&unsafeRvFlagIndir != 0 { -// if _UNSAFE_RV_DEBUG { -// fmt.Printf("**** +flagIndir type: %v\n", rv.Type()) -// } -// // println("***** IS flagindir") -// return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: *(*unsafe.Pointer)(urv.ptr), typ: urv.typ})) -// } else { -// if _UNSAFE_RV_DEBUG { -// fmt.Printf("**** -flagIndir type: %v\n", rv.Type()) -// } -// // println("***** NOT flagindir") -// return *(*interface{})(unsafe.Pointer(&unsafeIntf{word: urv.ptr, typ: urv.typ})) -// } -// // println("***** default: delegating to rv.Interface()") -// // return rv.Interface() -// } - -// var staticM0 = make(map[string]uint64) -// var staticI0 = (int32)(-5) - -// func staticRv2iTest() { -// i0 := (int32)(-5) -// m0 := make(map[string]uint16) -// m0["1"] = 1 -// for _, i := range []interface{}{ -// (int)(7), -// (uint)(8), -// (int16)(-9), -// (uint16)(19), -// (uintptr)(77), -// (bool)(true), -// float32(-32.7), -// float64(64.9), -// complex(float32(19), 5), -// complex(float64(-32), 7), -// [4]uint64{1, 2, 3, 4}, -// (chan<- int)(nil), // chan, -// rv2i, // func -// io.Writer(ioutil.Discard), -// make(map[string]uint), -// (map[string]uint)(nil), -// staticM0, -// m0, -// &m0, -// i0, -// &i0, -// &staticI0, -// &staticM0, -// []uint32{6, 7, 8}, -// "abc", -// Raw{}, -// RawExt{}, -// &Raw{}, -// &RawExt{}, -// unsafe.Pointer(&i0), -// } { -// i2 := rv2i(reflect.ValueOf(i)) -// eq := reflect.DeepEqual(i, i2) -// fmt.Printf(">>>> %v == %v? %v\n", i, i2, eq) -// } -// // os.Exit(0) -// } - -// func init() { -// staticRv2iTest() -// } - -// func rv2i(rv reflect.Value) interface{} { -// if _USE_RV_INTERFACE || rv.Kind() == reflect.Interface || rv.CanAddr() { -// return rv.Interface() -// } -// // var i interface{} -// // ui := (*unsafeIntf)(unsafe.Pointer(&i)) -// var ui unsafeIntf -// urv := (*unsafeReflectValue)(unsafe.Pointer(&rv)) -// // fmt.Printf("urv: flag: %b, typ: %b, ptr: %b\n", urv.flag, uintptr(urv.typ), uintptr(urv.ptr)) -// if (urv.flag&unsafeRvFlagKindMask)&unsafeRvKindDirectIface == 0 { -// if urv.flag&unsafeRvFlagAddr != 0 { -// println("***** indirect and addressable! Needs typed move - delegate to rv.Interface()") -// return rv.Interface() -// } -// println("****** indirect type/kind") -// ui.word = urv.ptr -// } else if urv.flag&unsafeRvFlagIndir != 0 { -// println("****** unsafe rv flag indir") -// ui.word = *(*unsafe.Pointer)(urv.ptr) -// } else { -// println("****** default: assign prt to word directly") -// ui.word = urv.ptr -// } -// // ui.word = urv.ptr -// ui.typ = urv.typ -// // fmt.Printf("(pointers) ui.typ: %p, word: %p\n", ui.typ, ui.word) -// // fmt.Printf("(binary) ui.typ: %b, word: %b\n", uintptr(ui.typ), uintptr(ui.word)) -// return *(*interface{})(unsafe.Pointer(&ui)) -// // return i -// } - -// func i2rv(i interface{}) reflect.Value { -// // u := *(*unsafeIntf)(unsafe.Pointer(&i)) -// return reflect.ValueOf(i) -// } diff --git a/vendor/github.com/ugorji/go/codec/json.go b/vendor/github.com/ugorji/go/codec/json.go index 06e882d4c..5bb389628 100644 --- a/vendor/github.com/ugorji/go/codec/json.go +++ b/vendor/github.com/ugorji/go/codec/json.go @@ -34,6 +34,7 @@ package codec import ( "bytes" "encoding/base64" + "fmt" "reflect" "strconv" "unicode/utf16" @@ -58,11 +59,6 @@ var ( // jsonTabs and jsonSpaces are used as caches for indents jsonTabs, jsonSpaces string - - jsonCharHtmlSafeSet [utf8.RuneSelf]bool - jsonCharSafeSet [utf8.RuneSelf]bool - jsonCharWhitespaceSet [256]bool - jsonNumSet [256]bool ) const ( @@ -82,6 +78,19 @@ const ( // P.S. Do not expect a significant decoding boost from this. jsonValidateSymbols = true + // if jsonTruncateMantissa, truncate mantissa if trailing 0's. + // This is important because it could allow some floats to be decoded without + // deferring to strconv.ParseFloat. + jsonTruncateMantissa = true + + // if mantissa >= jsonNumUintCutoff before multiplying by 10, this is an overflow + jsonNumUintCutoff = (1<<64-1)/uint64(10) + 1 // cutoff64(base) + + // if mantissa >= jsonNumUintMaxVal, this is an overflow + jsonNumUintMaxVal = 1< & - for i := 32; i < utf8.RuneSelf; i++ { - switch i { - case '"', '\\': - jsonCharSafeSet[i] = false - jsonCharHtmlSafeSet[i] = false - case '<', '>', '&': - jsonCharHtmlSafeSet[i] = false - jsonCharSafeSet[i] = true - default: - jsonCharSafeSet[i] = true - jsonCharHtmlSafeSet[i] = true - } - } - for i := 0; i < 256; i++ { - switch i { - case ' ', '\t', '\r', '\n': - jsonCharWhitespaceSet[i] = true - case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'e', 'E', '.', '+', '-': - jsonNumSet[i] = true - } - } } type jsonEncDriver struct { @@ -230,7 +214,6 @@ func (e *jsonEncDriver) encodeFloat(f float64, numbits int) { } func (e *jsonEncDriver) EncodeInt(v int64) { - // if e.h.IntegerAsString == 'A' || e.h.IntegerAsString == 'L' && (v > 1<<53 || v < -(1<<53)) { if x := e.h.IntegerAsString; x == 'A' || x == 'L' && (v > 1<<53 || v < -(1<<53)) { e.w.writen1('"') e.w.writeb(strconv.AppendInt(e.b[:0], v, 10)) @@ -241,7 +224,6 @@ func (e *jsonEncDriver) EncodeInt(v int64) { } func (e *jsonEncDriver) EncodeUint(v uint64) { - // if e.h.IntegerAsString == 'A' || e.h.IntegerAsString == 'L' && v > 1<<53 { if x := e.h.IntegerAsString; x == 'A' || x == 'L' && v > 1<<53 { e.w.writen1('"') e.w.writeb(strconv.AppendUint(e.b[:0], v, 10)) @@ -328,11 +310,8 @@ func (e *jsonEncDriver) quoteStr(s string) { w.writen1('"') start := 0 for i := 0; i < len(s); { - // encode all bytes < 0x20 (except \r, \n). - // also encode < > & to prevent security holes when served to some browsers. if b := s[i]; b < utf8.RuneSelf { - // if 0x20 <= b && b != '\\' && b != '"' && b != '<' && b != '>' && b != '&' { - if jsonCharHtmlSafeSet[b] || (e.h.HTMLCharsAsIs && jsonCharSafeSet[b]) { + if 0x20 <= b && b != '\\' && b != '"' && b != '<' && b != '>' && b != '&' { i++ continue } @@ -353,6 +332,8 @@ func (e *jsonEncDriver) quoteStr(s string) { case '\t': w.writen2('\\', 't') default: + // encode all bytes < 0x20 (except \r, \n). + // also encode < > & to prevent security holes when served to some browsers. w.writestr(`\u00`) w.writen2(hex[b>>4], hex[b&0xF]) } @@ -371,7 +352,7 @@ func (e *jsonEncDriver) quoteStr(s string) { continue } // U+2028 is LINE SEPARATOR. U+2029 is PARAGRAPH SEPARATOR. - // Both technically valid JSON, but bomb on JSONP, so fix here unconditionally. + // Both technically valid JSON, but bomb on JSONP, so fix here. if c == '\u2028' || c == '\u2029' { if start < i { w.writestr(s[start:i]) @@ -390,6 +371,88 @@ func (e *jsonEncDriver) quoteStr(s string) { w.writen1('"') } +//-------------------------------- + +type jsonNum struct { + // bytes []byte // may have [+-.eE0-9] + mantissa uint64 // where mantissa ends, and maybe dot begins. + exponent int16 // exponent value. + manOverflow bool + neg bool // started with -. No initial sign in the bytes above. + dot bool // has dot + explicitExponent bool // explicit exponent +} + +func (x *jsonNum) reset() { + x.manOverflow = false + x.neg = false + x.dot = false + x.explicitExponent = false + x.mantissa = 0 + x.exponent = 0 +} + +// uintExp is called only if exponent > 0. +func (x *jsonNum) uintExp() (n uint64, overflow bool) { + n = x.mantissa + e := x.exponent + if e >= int16(len(jsonUint64Pow10)) { + overflow = true + return + } + n *= jsonUint64Pow10[e] + if n < x.mantissa || n > jsonNumUintMaxVal { + overflow = true + return + } + return + // for i := int16(0); i < e; i++ { + // if n >= jsonNumUintCutoff { + // overflow = true + // return + // } + // n *= 10 + // } + // return +} + +// these constants are only used withn floatVal. +// They are brought out, so that floatVal can be inlined. +const ( + jsonUint64MantissaBits = 52 + jsonMaxExponent = int16(len(jsonFloat64Pow10)) - 1 +) + +func (x *jsonNum) floatVal() (f float64, parseUsingStrConv bool) { + // We do not want to lose precision. + // Consequently, we will delegate to strconv.ParseFloat if any of the following happen: + // - There are more digits than in math.MaxUint64: 18446744073709551615 (20 digits) + // We expect up to 99.... (19 digits) + // - The mantissa cannot fit into a 52 bits of uint64 + // - The exponent is beyond our scope ie beyong 22. + parseUsingStrConv = x.manOverflow || + x.exponent > jsonMaxExponent || + (x.exponent < 0 && -(x.exponent) > jsonMaxExponent) || + x.mantissa>>jsonUint64MantissaBits != 0 + + if parseUsingStrConv { + return + } + + // all good. so handle parse here. + f = float64(x.mantissa) + // fmt.Printf(".Float: uint64 value: %v, float: %v\n", m, f) + if x.neg { + f = -f + } + if x.exponent > 0 { + f *= jsonFloat64Pow10[x.exponent] + } else if x.exponent < 0 { + f /= jsonFloat64Pow10[-x.exponent] + } + return +} + type jsonDecDriver struct { noBuiltInTypes d *Decoder @@ -407,14 +470,26 @@ type jsonDecDriver struct { se setExtWrapper - // n jsonNum + n jsonNum } func jsonIsWS(b byte) bool { - // return b == ' ' || b == '\t' || b == '\r' || b == '\n' - return jsonCharWhitespaceSet[b] + return b == ' ' || b == '\t' || b == '\r' || b == '\n' } +// // This will skip whitespace characters and return the next byte to read. +// // The next byte determines what the value will be one of. +// func (d *jsonDecDriver) skipWhitespace() { +// // fast-path: do not enter loop. Just check first (in case no whitespace). +// b := d.r.readn1() +// if jsonIsWS(b) { +// r := d.r +// for b = r.readn1(); jsonIsWS(b); b = r.readn1() { +// } +// } +// d.tok = b +// } + func (d *jsonDecDriver) uncacheRead() { if d.tok != 0 { d.r.unreadn1() @@ -424,7 +499,11 @@ func (d *jsonDecDriver) uncacheRead() { func (d *jsonDecDriver) sendContainerState(c containerState) { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } var xc uint8 // char expected if c == containerMapKey { @@ -453,23 +532,37 @@ func (d *jsonDecDriver) sendContainerState(c containerState) { func (d *jsonDecDriver) CheckBreak() bool { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } - return d.tok == '}' || d.tok == ']' + if d.tok == '}' || d.tok == ']' { + // d.tok = 0 // only checking, not consuming + return true + } + return false } func (d *jsonDecDriver) readStrIdx(fromIdx, toIdx uint8) { bs := d.r.readx(int(toIdx - fromIdx)) d.tok = 0 - if jsonValidateSymbols && !bytes.Equal(bs, jsonLiterals[fromIdx:toIdx]) { - d.d.errorf("json: expecting %s: got %s", jsonLiterals[fromIdx:toIdx], bs) - return + if jsonValidateSymbols { + if !bytes.Equal(bs, jsonLiterals[fromIdx:toIdx]) { + d.d.errorf("json: expecting %s: got %s", jsonLiterals[fromIdx:toIdx], bs) + return + } } } func (d *jsonDecDriver) TryDecodeAsNil() bool { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } if d.tok == 'n' { d.readStrIdx(10, 13) // ull @@ -480,7 +573,11 @@ func (d *jsonDecDriver) TryDecodeAsNil() bool { func (d *jsonDecDriver) DecodeBool() bool { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } if d.tok == 'f' { d.readStrIdx(5, 9) // alse @@ -496,7 +593,11 @@ func (d *jsonDecDriver) DecodeBool() bool { func (d *jsonDecDriver) ReadMapStart() int { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } if d.tok != '{' { d.d.errorf("json: expect char '%c' but got char '%c'", '{', d.tok) @@ -508,7 +609,11 @@ func (d *jsonDecDriver) ReadMapStart() int { func (d *jsonDecDriver) ReadArrayStart() int { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } if d.tok != '[' { d.d.errorf("json: expect char '%c' but got char '%c'", '[', d.tok) @@ -521,7 +626,11 @@ func (d *jsonDecDriver) ReadArrayStart() int { func (d *jsonDecDriver) ContainerType() (vt valueType) { // check container type by checking the first char if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } if b := d.tok; b == '{' { return valueTypeMap @@ -537,57 +646,260 @@ func (d *jsonDecDriver) ContainerType() (vt valueType) { // return false // "unreachable" } -func (d *jsonDecDriver) decNumBytes() (bs []byte) { - // stores num bytes in d.bs +func (d *jsonDecDriver) decNum(storeBytes bool) { + // If it is has a . or an e|E, decode as a float; else decode as an int. if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } - if d.tok == '"' { - bs = d.r.readUntil(d.b2[:0], '"') - bs = bs[:len(bs)-1] - } else { - d.r.unreadn1() - bs = d.r.readTo(d.bs[:0], &jsonNumSet) - // bs = d.r.readbUntilAny(d.bs[:0], " \t\n:,{}[]") + b := d.tok + var str bool + if b == '"' { + str = true + b = d.r.readn1() } - d.tok = 0 - // fmt.Printf(">>>> decNumBytes: returning: '%s'\n", bs) - return bs -} - -func (d *jsonDecDriver) DecodeUint(bitsize uint8) (u uint64) { - bs := d.decNumBytes() - u, err := strconv.ParseUint(stringView(bs), 10, int(bitsize)) - if err != nil { - d.d.errorf("json: decode uint from %s: %v", bs, err) + if !(b == '+' || b == '-' || b == '.' || (b >= '0' && b <= '9')) { + d.d.errorf("json: decNum: got first char '%c'", b) return } + d.tok = 0 + + const cutoff = (1<<64-1)/uint64(10) + 1 // cutoff64(base) + const jsonNumUintMaxVal = 1<= jsonNumUintCutoff { + n.manOverflow = true + break + } + v := uint64(b - '0') + n.mantissa *= 10 + if v != 0 { + n1 := n.mantissa + v + if n1 < n.mantissa || n1 > jsonNumUintMaxVal { + n.manOverflow = true // n+v overflows + break + } + n.mantissa = n1 + } + case 6: + state = 7 + fallthrough + case 7: + if !(b == '0' && e == 0) { + e = e*10 + int16(b-'0') + } + default: + break LOOP + } + case '"': + if str { + if storeBytes { + d.bs = append(d.bs, '"') + } + b, eof = r.readn1eof() + } + break LOOP + default: + break LOOP + } + if storeBytes { + d.bs = append(d.bs, b) + } + b, eof = r.readn1eof() + } + + if jsonTruncateMantissa && n.mantissa != 0 { + for n.mantissa%10 == 0 { + n.mantissa /= 10 + n.exponent++ + } + } + + if e != 0 { + if eNeg { + n.exponent -= e + } else { + n.exponent += e + } + } + + // d.n = n + + if !eof { + if jsonUnreadAfterDecNum { + r.unreadn1() + } else { + if !jsonIsWS(b) { + d.tok = b + } + } + } + // fmt.Printf("1: n: bytes: %s, neg: %v, dot: %v, exponent: %v, mantissaEndIndex: %v\n", + // n.bytes, n.neg, n.dot, n.exponent, n.mantissaEndIndex) return } func (d *jsonDecDriver) DecodeInt(bitsize uint8) (i int64) { - bs := d.decNumBytes() - // if bytes.ContainsAny(bs, ".eE") { - // d.d.errorf("json: decoding int, but found one or more of the chars: .eE: %s", bs) - // return - // } - i, err := strconv.ParseInt(stringView(bs), 10, int(bitsize)) - if err != nil { - d.d.errorf("json: decode int from %s: %v", bs, err) + d.decNum(false) + n := &d.n + if n.manOverflow { + d.d.errorf("json: overflow integer after: %v", n.mantissa) return } + var u uint64 + if n.exponent == 0 { + u = n.mantissa + } else if n.exponent < 0 { + d.d.errorf("json: fractional integer") + return + } else if n.exponent > 0 { + var overflow bool + if u, overflow = n.uintExp(); overflow { + d.d.errorf("json: overflow integer") + return + } + } + i = int64(u) + if n.neg { + i = -i + } + if chkOvf.Int(i, bitsize) { + d.d.errorf("json: overflow %v bits: %s", bitsize, d.bs) + return + } + // fmt.Printf("DecodeInt: %v\n", i) + return +} + +// floatVal MUST only be called after a decNum, as d.bs now contains the bytes of the number +func (d *jsonDecDriver) floatVal() (f float64) { + f, useStrConv := d.n.floatVal() + if useStrConv { + var err error + if f, err = strconv.ParseFloat(stringView(d.bs), 64); err != nil { + panic(fmt.Errorf("parse float: %s, %v", d.bs, err)) + } + if d.n.neg { + f = -f + } + } return } -func (d *jsonDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { - bs := d.decNumBytes() - bitsize := 64 - if chkOverflow32 { - bitsize = 32 +func (d *jsonDecDriver) DecodeUint(bitsize uint8) (u uint64) { + d.decNum(false) + n := &d.n + if n.neg { + d.d.errorf("json: unsigned integer cannot be negative") + return } - f, err := strconv.ParseFloat(stringView(bs), bitsize) - if err != nil { - d.d.errorf("json: decode float from %s: %v", bs, err) + if n.manOverflow { + d.d.errorf("json: overflow integer after: %v", n.mantissa) + return + } + if n.exponent == 0 { + u = n.mantissa + } else if n.exponent < 0 { + d.d.errorf("json: fractional integer") + return + } else if n.exponent > 0 { + var overflow bool + if u, overflow = n.uintExp(); overflow { + d.d.errorf("json: overflow integer") + return + } + } + if chkOvf.Uint(u, bitsize) { + d.d.errorf("json: overflow %v bits: %s", bitsize, d.bs) + return + } + // fmt.Printf("DecodeUint: %v\n", u) + return +} + +func (d *jsonDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { + d.decNum(true) + f = d.floatVal() + if chkOverflow32 && chkOvf.Float32(f) { + d.d.errorf("json: overflow float32: %v, %s", f, d.bs) return } return @@ -606,14 +918,19 @@ func (d *jsonDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxta return } -func (d *jsonDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { +func (d *jsonDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { // if decoding into raw bytes, and the RawBytesExt is configured, use it to decode. - if d.se.i != nil { + if !isstring && d.se.i != nil { bsOut = bs d.DecodeExt(&bsOut, 0, &d.se) return } d.appendStringAsBytes() + // if isstring, then just return the bytes, even if it is using the scratch buffer. + // the bytes will be converted to a string as needed. + if isstring { + return d.bs + } // if appendStringAsBytes returned a zero-len slice, then treat as nil. // This should only happen for null, and "". if len(d.bs) == 0 { @@ -639,110 +956,86 @@ func (d *jsonDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { return } -const jsonAlwaysReturnInternString = false - func (d *jsonDecDriver) DecodeString() (s string) { d.appendStringAsBytes() // if x := d.s.sc; x != nil && x.so && x.st == '}' { // map key - if jsonAlwaysReturnInternString || d.c == containerMapKey { + if d.c == containerMapKey { return d.d.string(d.bs) } return string(d.bs) } -func (d *jsonDecDriver) DecodeStringAsBytes() (s []byte) { - d.appendStringAsBytes() - return d.bs -} - func (d *jsonDecDriver) appendStringAsBytes() { if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } - if d.tok != '"' { - // d.d.errorf("json: expect char '%c' but got char '%c'", '"', d.tok) - // handle non-string scalar: null, true, false or a number - switch d.tok { - case 'n': - d.readStrIdx(10, 13) // ull - d.bs = d.bs[:0] - case 'f': - d.readStrIdx(5, 9) // alse - d.bs = d.bs[:5] - copy(d.bs, "false") - case 't': - d.readStrIdx(1, 4) // rue - d.bs = d.bs[:4] - copy(d.bs, "true") - default: - // try to parse a valid number - bs := d.decNumBytes() - d.bs = d.bs[:len(bs)] - copy(d.bs, bs) - } + // handle null as a string + if d.tok == 'n' { + d.readStrIdx(10, 13) // ull + d.bs = d.bs[:0] return } + if d.tok != '"' { + d.d.errorf("json: expect char '%c' but got char '%c'", '"', d.tok) + } d.tok = 0 - r := d.r - var cs []byte + v := d.bs[:0] - // var c uint8 - for i := 0; ; i++ { - if i == len(cs) { - cs = r.readUntil(d.b2[:0], '"') - i = 0 - } - if cs[i] == '"' { + var c uint8 + r := d.r + for { + c = r.readn1() + if c == '"' { break - } - if cs[i] != '\\' { - v = append(v, cs[i]) - continue - } - // cs[i] == '\\' - i++ - switch cs[i] { - case '"', '\\', '/', '\'': - v = append(v, cs[i]) - case 'b': - v = append(v, '\b') - case 'f': - v = append(v, '\f') - case 'n': - v = append(v, '\n') - case 'r': - v = append(v, '\r') - case 't': - v = append(v, '\t') - case 'u': - rr := d.jsonU4Arr([4]byte{cs[i+1], cs[i+2], cs[i+3], cs[i+4]}) - i += 4 - // fmt.Printf("$$$$$$$$$: is surrogate: %v\n", utf16.IsSurrogate(rr)) - if utf16.IsSurrogate(rr) { - // fmt.Printf(">>>> checking utf16 surrogate\n") - if !(cs[i+1] == '\\' && cs[i+2] == 'u') { - d.d.errorf(`json: unquoteStr: invalid unicode sequence. Expecting \u`) - return + } else if c == '\\' { + c = r.readn1() + switch c { + case '"', '\\', '/', '\'': + v = append(v, c) + case 'b': + v = append(v, '\b') + case 'f': + v = append(v, '\f') + case 'n': + v = append(v, '\n') + case 'r': + v = append(v, '\r') + case 't': + v = append(v, '\t') + case 'u': + rr := d.jsonU4(false) + // fmt.Printf("$$$$$$$$$: is surrogate: %v\n", utf16.IsSurrogate(rr)) + if utf16.IsSurrogate(rr) { + rr = utf16.DecodeRune(rr, d.jsonU4(true)) } - i += 2 - rr = utf16.DecodeRune(rr, d.jsonU4Arr([4]byte{cs[i+1], cs[i+2], cs[i+3], cs[i+4]})) - i += 4 + w2 := utf8.EncodeRune(d.bstr[:], rr) + v = append(v, d.bstr[:w2]...) + default: + d.d.errorf("json: unsupported escaped value: %c", c) } - w2 := utf8.EncodeRune(d.bstr[:], rr) - v = append(v, d.bstr[:w2]...) - default: - d.d.errorf("json: unsupported escaped value: %c", cs[i]) + } else { + v = append(v, c) } } d.bs = v } -func (d *jsonDecDriver) jsonU4Arr(bs [4]byte) (r rune) { +func (d *jsonDecDriver) jsonU4(checkSlashU bool) rune { + r := d.r + if checkSlashU && !(r.readn1() == '\\' && r.readn1() == 'u') { + d.d.errorf(`json: unquoteStr: invalid unicode sequence. Expecting \u`) + return 0 + } // u, _ := strconv.ParseUint(string(d.bstr[:4]), 16, 64) var u uint32 - for _, v := range bs { + for i := 0; i < 4; i++ { + v := r.readn1() if '0' <= v && v <= '9' { v = v - '0' } else if 'a' <= v && v <= 'z' { @@ -755,7 +1048,6 @@ func (d *jsonDecDriver) jsonU4Arr(bs [4]byte) (r rune) { } u = u*16 + uint32(v) } - // fmt.Printf(">>>>>>>> jsonU4Arr: %v, %s\n", rune(u), string(rune(u))) return rune(u) } @@ -764,7 +1056,11 @@ func (d *jsonDecDriver) DecodeNaked() { // var decodeFurther bool if d.tok == 0 { - d.tok = d.r.skip(&jsonCharWhitespaceSet) + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b } switch d.tok { case 'n': @@ -790,35 +1086,41 @@ func (d *jsonDecDriver) DecodeNaked() { z.v = valueTypeString z.s = d.DecodeString() default: // number - bs := d.decNumBytes() - var err error - if len(bs) == 0 { - d.d.errorf("json: decode number from empty string") - return - } else if d.h.PreferFloat || - bytes.IndexByte(bs, '.') != -1 || - bytes.IndexByte(bs, 'e') != -1 || - bytes.IndexByte(bs, 'E') != -1 { - // } else if d.h.PreferFloat || bytes.ContainsAny(bs, ".eE") { + d.decNum(true) + n := &d.n + // if the string had a any of [.eE], then decode as float. + switch { + case n.explicitExponent, n.dot, n.exponent < 0, n.manOverflow: z.v = valueTypeFloat - z.f, err = strconv.ParseFloat(stringView(bs), 64) - } else if d.h.SignedInteger || bs[0] == '-' { - z.v = valueTypeInt - z.i, err = strconv.ParseInt(stringView(bs), 10, 64) - } else { - z.v = valueTypeUint - z.u, err = strconv.ParseUint(stringView(bs), 10, 64) - } - if err != nil { - if z.v == valueTypeInt || z.v == valueTypeUint { - if v, ok := err.(*strconv.NumError); ok && (v.Err == strconv.ErrRange || v.Err == strconv.ErrSyntax) { - z.v = valueTypeFloat - z.f, err = strconv.ParseFloat(stringView(bs), 64) - } + z.f = d.floatVal() + case n.exponent == 0: + u := n.mantissa + switch { + case n.neg: + z.v = valueTypeInt + z.i = -int64(u) + case d.h.SignedInteger: + z.v = valueTypeInt + z.i = int64(u) + default: + z.v = valueTypeUint + z.u = u } - if err != nil { - d.d.errorf("json: decode number from %s: %v", bs, err) - return + default: + u, overflow := n.uintExp() + switch { + case overflow: + z.v = valueTypeFloat + z.f = d.floatVal() + case n.neg: + z.v = valueTypeInt + z.i = -int64(u) + case d.h.SignedInteger: + z.v = valueTypeInt + z.i = int64(u) + default: + z.v = valueTypeUint + z.u = u } } // fmt.Printf("DecodeNaked: Number: %T, %v\n", v, v) @@ -829,14 +1131,6 @@ func (d *jsonDecDriver) DecodeNaked() { return } -// func jsonAcceptNonWS(b byte) bool { -// return !jsonCharWhitespaceSet[b] -// } - -// func jsonAcceptDQuote(b byte) bool { -// return b == '"' -// } - //---------------------- // JsonHandle is a handle for JSON encoding format. @@ -858,7 +1152,6 @@ func (d *jsonDecDriver) DecodeNaked() { type JsonHandle struct { textEncodingType BasicHandle - // RawBytesExt, if configured, is used to encode and decode raw bytes in a custom way. // If not configured, raw bytes are encoded to/from base64 text. RawBytesExt InterfaceExt @@ -880,17 +1173,6 @@ type JsonHandle struct { // containing the exact integer representation as a decimal. // - else encode all integers as a json number (default) IntegerAsString uint8 - - // HTMLCharsAsIs controls how to encode some special characters to html: < > & - // - // By default, we encode them as \uXXX - // to prevent security holes when served from some browsers. - HTMLCharsAsIs bool - - // PreferFloat says that we will default to decoding a number as a float. - // If not set, we will examine the characters of the number and decode as an - // integer type if it doesn't have any of the characters [.eE]. - PreferFloat bool } func (h *JsonHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { @@ -939,7 +1221,7 @@ func (d *jsonDecDriver) reset() { d.bs = d.bs[:0] } d.c, d.tok = 0, 0 - // d.n.reset() + d.n.reset() } var jsonEncodeTerminate = []byte{' '} diff --git a/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl b/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl deleted file mode 100644 index 6d716972a..000000000 --- a/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// ************************************************************ -// DO NOT EDIT. -// THIS FILE IS AUTO-GENERATED from mammoth-test.go.tmpl -// ************************************************************ - -package codec - -// TestMammoth has all the different paths optimized in fast-path -// It has all the primitives, slices and maps. -// -// For each of those types, it has a pointer and a non-pointer field. - -type TestMammoth struct { - -{{range .Values }}{{if .Primitive }}{{/* -*/}}{{ .MethodNamePfx "F" true }} {{ .Primitive }} -{{ .MethodNamePfx "Fptr" true }} *{{ .Primitive }} -{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if not .MapKey }}{{/* -*/}}{{ .MethodNamePfx "F" false }} []{{ .Elem }} -{{ .MethodNamePfx "Fptr" false }} *[]{{ .Elem }} -{{end}}{{end}}{{end}} - -{{range .Values }}{{if not .Primitive }}{{if .MapKey }}{{/* -*/}}{{ .MethodNamePfx "F" false }} map[{{ .MapKey }}]{{ .Elem }} -{{ .MethodNamePfx "Fptr" false }} *map[{{ .MapKey }}]{{ .Elem }} -{{end}}{{end}}{{end}} - -} diff --git a/vendor/github.com/ugorji/go/codec/mammoth_generated_test.go b/vendor/github.com/ugorji/go/codec/mammoth_generated_test.go deleted file mode 100644 index 73c2a7c15..000000000 --- a/vendor/github.com/ugorji/go/codec/mammoth_generated_test.go +++ /dev/null @@ -1,593 +0,0 @@ -// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. -// Use of this source code is governed by a MIT license found in the LICENSE file. - -// ************************************************************ -// DO NOT EDIT. -// THIS FILE IS AUTO-GENERATED from mammoth-test.go.tmpl -// ************************************************************ - -package codec - -// TestMammoth has all the different paths optimized in fast-path -// It has all the primitives, slices and maps. -// -// For each of those types, it has a pointer and a non-pointer field. - -type TestMammoth struct { - FIntf interface{} - FptrIntf *interface{} - FString string - FptrString *string - FFloat32 float32 - FptrFloat32 *float32 - FFloat64 float64 - FptrFloat64 *float64 - FUint uint - FptrUint *uint - FUint8 uint8 - FptrUint8 *uint8 - FUint16 uint16 - FptrUint16 *uint16 - FUint32 uint32 - FptrUint32 *uint32 - FUint64 uint64 - FptrUint64 *uint64 - FUintptr uintptr - FptrUintptr *uintptr - FInt int - FptrInt *int - FInt8 int8 - FptrInt8 *int8 - FInt16 int16 - FptrInt16 *int16 - FInt32 int32 - FptrInt32 *int32 - FInt64 int64 - FptrInt64 *int64 - FBool bool - FptrBool *bool - - FSliceIntf []interface{} - FptrSliceIntf *[]interface{} - FSliceString []string - FptrSliceString *[]string - FSliceFloat32 []float32 - FptrSliceFloat32 *[]float32 - FSliceFloat64 []float64 - FptrSliceFloat64 *[]float64 - FSliceUint []uint - FptrSliceUint *[]uint - FSliceUint16 []uint16 - FptrSliceUint16 *[]uint16 - FSliceUint32 []uint32 - FptrSliceUint32 *[]uint32 - FSliceUint64 []uint64 - FptrSliceUint64 *[]uint64 - FSliceUintptr []uintptr - FptrSliceUintptr *[]uintptr - FSliceInt []int - FptrSliceInt *[]int - FSliceInt8 []int8 - FptrSliceInt8 *[]int8 - FSliceInt16 []int16 - FptrSliceInt16 *[]int16 - FSliceInt32 []int32 - FptrSliceInt32 *[]int32 - FSliceInt64 []int64 - FptrSliceInt64 *[]int64 - FSliceBool []bool - FptrSliceBool *[]bool - - FMapIntfIntf map[interface{}]interface{} - FptrMapIntfIntf *map[interface{}]interface{} - FMapIntfString map[interface{}]string - FptrMapIntfString *map[interface{}]string - FMapIntfUint map[interface{}]uint - FptrMapIntfUint *map[interface{}]uint - FMapIntfUint8 map[interface{}]uint8 - FptrMapIntfUint8 *map[interface{}]uint8 - FMapIntfUint16 map[interface{}]uint16 - FptrMapIntfUint16 *map[interface{}]uint16 - FMapIntfUint32 map[interface{}]uint32 - FptrMapIntfUint32 *map[interface{}]uint32 - FMapIntfUint64 map[interface{}]uint64 - FptrMapIntfUint64 *map[interface{}]uint64 - FMapIntfUintptr map[interface{}]uintptr - FptrMapIntfUintptr *map[interface{}]uintptr - FMapIntfInt map[interface{}]int - FptrMapIntfInt *map[interface{}]int - FMapIntfInt8 map[interface{}]int8 - FptrMapIntfInt8 *map[interface{}]int8 - FMapIntfInt16 map[interface{}]int16 - FptrMapIntfInt16 *map[interface{}]int16 - FMapIntfInt32 map[interface{}]int32 - FptrMapIntfInt32 *map[interface{}]int32 - FMapIntfInt64 map[interface{}]int64 - FptrMapIntfInt64 *map[interface{}]int64 - FMapIntfFloat32 map[interface{}]float32 - FptrMapIntfFloat32 *map[interface{}]float32 - FMapIntfFloat64 map[interface{}]float64 - FptrMapIntfFloat64 *map[interface{}]float64 - FMapIntfBool map[interface{}]bool - FptrMapIntfBool *map[interface{}]bool - FMapStringIntf map[string]interface{} - FptrMapStringIntf *map[string]interface{} - FMapStringString map[string]string - FptrMapStringString *map[string]string - FMapStringUint map[string]uint - FptrMapStringUint *map[string]uint - FMapStringUint8 map[string]uint8 - FptrMapStringUint8 *map[string]uint8 - FMapStringUint16 map[string]uint16 - FptrMapStringUint16 *map[string]uint16 - FMapStringUint32 map[string]uint32 - FptrMapStringUint32 *map[string]uint32 - FMapStringUint64 map[string]uint64 - FptrMapStringUint64 *map[string]uint64 - FMapStringUintptr map[string]uintptr - FptrMapStringUintptr *map[string]uintptr - FMapStringInt map[string]int - FptrMapStringInt *map[string]int - FMapStringInt8 map[string]int8 - FptrMapStringInt8 *map[string]int8 - FMapStringInt16 map[string]int16 - FptrMapStringInt16 *map[string]int16 - FMapStringInt32 map[string]int32 - FptrMapStringInt32 *map[string]int32 - FMapStringInt64 map[string]int64 - FptrMapStringInt64 *map[string]int64 - FMapStringFloat32 map[string]float32 - FptrMapStringFloat32 *map[string]float32 - FMapStringFloat64 map[string]float64 - FptrMapStringFloat64 *map[string]float64 - FMapStringBool map[string]bool - FptrMapStringBool *map[string]bool - FMapFloat32Intf map[float32]interface{} - FptrMapFloat32Intf *map[float32]interface{} - FMapFloat32String map[float32]string - FptrMapFloat32String *map[float32]string - FMapFloat32Uint map[float32]uint - FptrMapFloat32Uint *map[float32]uint - FMapFloat32Uint8 map[float32]uint8 - FptrMapFloat32Uint8 *map[float32]uint8 - FMapFloat32Uint16 map[float32]uint16 - FptrMapFloat32Uint16 *map[float32]uint16 - FMapFloat32Uint32 map[float32]uint32 - FptrMapFloat32Uint32 *map[float32]uint32 - FMapFloat32Uint64 map[float32]uint64 - FptrMapFloat32Uint64 *map[float32]uint64 - FMapFloat32Uintptr map[float32]uintptr - FptrMapFloat32Uintptr *map[float32]uintptr - FMapFloat32Int map[float32]int - FptrMapFloat32Int *map[float32]int - FMapFloat32Int8 map[float32]int8 - FptrMapFloat32Int8 *map[float32]int8 - FMapFloat32Int16 map[float32]int16 - FptrMapFloat32Int16 *map[float32]int16 - FMapFloat32Int32 map[float32]int32 - FptrMapFloat32Int32 *map[float32]int32 - FMapFloat32Int64 map[float32]int64 - FptrMapFloat32Int64 *map[float32]int64 - FMapFloat32Float32 map[float32]float32 - FptrMapFloat32Float32 *map[float32]float32 - FMapFloat32Float64 map[float32]float64 - FptrMapFloat32Float64 *map[float32]float64 - FMapFloat32Bool map[float32]bool - FptrMapFloat32Bool *map[float32]bool - FMapFloat64Intf map[float64]interface{} - FptrMapFloat64Intf *map[float64]interface{} - FMapFloat64String map[float64]string - FptrMapFloat64String *map[float64]string - FMapFloat64Uint map[float64]uint - FptrMapFloat64Uint *map[float64]uint - FMapFloat64Uint8 map[float64]uint8 - FptrMapFloat64Uint8 *map[float64]uint8 - FMapFloat64Uint16 map[float64]uint16 - FptrMapFloat64Uint16 *map[float64]uint16 - FMapFloat64Uint32 map[float64]uint32 - FptrMapFloat64Uint32 *map[float64]uint32 - FMapFloat64Uint64 map[float64]uint64 - FptrMapFloat64Uint64 *map[float64]uint64 - FMapFloat64Uintptr map[float64]uintptr - FptrMapFloat64Uintptr *map[float64]uintptr - FMapFloat64Int map[float64]int - FptrMapFloat64Int *map[float64]int - FMapFloat64Int8 map[float64]int8 - FptrMapFloat64Int8 *map[float64]int8 - FMapFloat64Int16 map[float64]int16 - FptrMapFloat64Int16 *map[float64]int16 - FMapFloat64Int32 map[float64]int32 - FptrMapFloat64Int32 *map[float64]int32 - FMapFloat64Int64 map[float64]int64 - FptrMapFloat64Int64 *map[float64]int64 - FMapFloat64Float32 map[float64]float32 - FptrMapFloat64Float32 *map[float64]float32 - FMapFloat64Float64 map[float64]float64 - FptrMapFloat64Float64 *map[float64]float64 - FMapFloat64Bool map[float64]bool - FptrMapFloat64Bool *map[float64]bool - FMapUintIntf map[uint]interface{} - FptrMapUintIntf *map[uint]interface{} - FMapUintString map[uint]string - FptrMapUintString *map[uint]string - FMapUintUint map[uint]uint - FptrMapUintUint *map[uint]uint - FMapUintUint8 map[uint]uint8 - FptrMapUintUint8 *map[uint]uint8 - FMapUintUint16 map[uint]uint16 - FptrMapUintUint16 *map[uint]uint16 - FMapUintUint32 map[uint]uint32 - FptrMapUintUint32 *map[uint]uint32 - FMapUintUint64 map[uint]uint64 - FptrMapUintUint64 *map[uint]uint64 - FMapUintUintptr map[uint]uintptr - FptrMapUintUintptr *map[uint]uintptr - FMapUintInt map[uint]int - FptrMapUintInt *map[uint]int - FMapUintInt8 map[uint]int8 - FptrMapUintInt8 *map[uint]int8 - FMapUintInt16 map[uint]int16 - FptrMapUintInt16 *map[uint]int16 - FMapUintInt32 map[uint]int32 - FptrMapUintInt32 *map[uint]int32 - FMapUintInt64 map[uint]int64 - FptrMapUintInt64 *map[uint]int64 - FMapUintFloat32 map[uint]float32 - FptrMapUintFloat32 *map[uint]float32 - FMapUintFloat64 map[uint]float64 - FptrMapUintFloat64 *map[uint]float64 - FMapUintBool map[uint]bool - FptrMapUintBool *map[uint]bool - FMapUint8Intf map[uint8]interface{} - FptrMapUint8Intf *map[uint8]interface{} - FMapUint8String map[uint8]string - FptrMapUint8String *map[uint8]string - FMapUint8Uint map[uint8]uint - FptrMapUint8Uint *map[uint8]uint - FMapUint8Uint8 map[uint8]uint8 - FptrMapUint8Uint8 *map[uint8]uint8 - FMapUint8Uint16 map[uint8]uint16 - FptrMapUint8Uint16 *map[uint8]uint16 - FMapUint8Uint32 map[uint8]uint32 - FptrMapUint8Uint32 *map[uint8]uint32 - FMapUint8Uint64 map[uint8]uint64 - FptrMapUint8Uint64 *map[uint8]uint64 - FMapUint8Uintptr map[uint8]uintptr - FptrMapUint8Uintptr *map[uint8]uintptr - FMapUint8Int map[uint8]int - FptrMapUint8Int *map[uint8]int - FMapUint8Int8 map[uint8]int8 - FptrMapUint8Int8 *map[uint8]int8 - FMapUint8Int16 map[uint8]int16 - FptrMapUint8Int16 *map[uint8]int16 - FMapUint8Int32 map[uint8]int32 - FptrMapUint8Int32 *map[uint8]int32 - FMapUint8Int64 map[uint8]int64 - FptrMapUint8Int64 *map[uint8]int64 - FMapUint8Float32 map[uint8]float32 - FptrMapUint8Float32 *map[uint8]float32 - FMapUint8Float64 map[uint8]float64 - FptrMapUint8Float64 *map[uint8]float64 - FMapUint8Bool map[uint8]bool - FptrMapUint8Bool *map[uint8]bool - FMapUint16Intf map[uint16]interface{} - FptrMapUint16Intf *map[uint16]interface{} - FMapUint16String map[uint16]string - FptrMapUint16String *map[uint16]string - FMapUint16Uint map[uint16]uint - FptrMapUint16Uint *map[uint16]uint - FMapUint16Uint8 map[uint16]uint8 - FptrMapUint16Uint8 *map[uint16]uint8 - FMapUint16Uint16 map[uint16]uint16 - FptrMapUint16Uint16 *map[uint16]uint16 - FMapUint16Uint32 map[uint16]uint32 - FptrMapUint16Uint32 *map[uint16]uint32 - FMapUint16Uint64 map[uint16]uint64 - FptrMapUint16Uint64 *map[uint16]uint64 - FMapUint16Uintptr map[uint16]uintptr - FptrMapUint16Uintptr *map[uint16]uintptr - FMapUint16Int map[uint16]int - FptrMapUint16Int *map[uint16]int - FMapUint16Int8 map[uint16]int8 - FptrMapUint16Int8 *map[uint16]int8 - FMapUint16Int16 map[uint16]int16 - FptrMapUint16Int16 *map[uint16]int16 - FMapUint16Int32 map[uint16]int32 - FptrMapUint16Int32 *map[uint16]int32 - FMapUint16Int64 map[uint16]int64 - FptrMapUint16Int64 *map[uint16]int64 - FMapUint16Float32 map[uint16]float32 - FptrMapUint16Float32 *map[uint16]float32 - FMapUint16Float64 map[uint16]float64 - FptrMapUint16Float64 *map[uint16]float64 - FMapUint16Bool map[uint16]bool - FptrMapUint16Bool *map[uint16]bool - FMapUint32Intf map[uint32]interface{} - FptrMapUint32Intf *map[uint32]interface{} - FMapUint32String map[uint32]string - FptrMapUint32String *map[uint32]string - FMapUint32Uint map[uint32]uint - FptrMapUint32Uint *map[uint32]uint - FMapUint32Uint8 map[uint32]uint8 - FptrMapUint32Uint8 *map[uint32]uint8 - FMapUint32Uint16 map[uint32]uint16 - FptrMapUint32Uint16 *map[uint32]uint16 - FMapUint32Uint32 map[uint32]uint32 - FptrMapUint32Uint32 *map[uint32]uint32 - FMapUint32Uint64 map[uint32]uint64 - FptrMapUint32Uint64 *map[uint32]uint64 - FMapUint32Uintptr map[uint32]uintptr - FptrMapUint32Uintptr *map[uint32]uintptr - FMapUint32Int map[uint32]int - FptrMapUint32Int *map[uint32]int - FMapUint32Int8 map[uint32]int8 - FptrMapUint32Int8 *map[uint32]int8 - FMapUint32Int16 map[uint32]int16 - FptrMapUint32Int16 *map[uint32]int16 - FMapUint32Int32 map[uint32]int32 - FptrMapUint32Int32 *map[uint32]int32 - FMapUint32Int64 map[uint32]int64 - FptrMapUint32Int64 *map[uint32]int64 - FMapUint32Float32 map[uint32]float32 - FptrMapUint32Float32 *map[uint32]float32 - FMapUint32Float64 map[uint32]float64 - FptrMapUint32Float64 *map[uint32]float64 - FMapUint32Bool map[uint32]bool - FptrMapUint32Bool *map[uint32]bool - FMapUint64Intf map[uint64]interface{} - FptrMapUint64Intf *map[uint64]interface{} - FMapUint64String map[uint64]string - FptrMapUint64String *map[uint64]string - FMapUint64Uint map[uint64]uint - FptrMapUint64Uint *map[uint64]uint - FMapUint64Uint8 map[uint64]uint8 - FptrMapUint64Uint8 *map[uint64]uint8 - FMapUint64Uint16 map[uint64]uint16 - FptrMapUint64Uint16 *map[uint64]uint16 - FMapUint64Uint32 map[uint64]uint32 - FptrMapUint64Uint32 *map[uint64]uint32 - FMapUint64Uint64 map[uint64]uint64 - FptrMapUint64Uint64 *map[uint64]uint64 - FMapUint64Uintptr map[uint64]uintptr - FptrMapUint64Uintptr *map[uint64]uintptr - FMapUint64Int map[uint64]int - FptrMapUint64Int *map[uint64]int - FMapUint64Int8 map[uint64]int8 - FptrMapUint64Int8 *map[uint64]int8 - FMapUint64Int16 map[uint64]int16 - FptrMapUint64Int16 *map[uint64]int16 - FMapUint64Int32 map[uint64]int32 - FptrMapUint64Int32 *map[uint64]int32 - FMapUint64Int64 map[uint64]int64 - FptrMapUint64Int64 *map[uint64]int64 - FMapUint64Float32 map[uint64]float32 - FptrMapUint64Float32 *map[uint64]float32 - FMapUint64Float64 map[uint64]float64 - FptrMapUint64Float64 *map[uint64]float64 - FMapUint64Bool map[uint64]bool - FptrMapUint64Bool *map[uint64]bool - FMapUintptrIntf map[uintptr]interface{} - FptrMapUintptrIntf *map[uintptr]interface{} - FMapUintptrString map[uintptr]string - FptrMapUintptrString *map[uintptr]string - FMapUintptrUint map[uintptr]uint - FptrMapUintptrUint *map[uintptr]uint - FMapUintptrUint8 map[uintptr]uint8 - FptrMapUintptrUint8 *map[uintptr]uint8 - FMapUintptrUint16 map[uintptr]uint16 - FptrMapUintptrUint16 *map[uintptr]uint16 - FMapUintptrUint32 map[uintptr]uint32 - FptrMapUintptrUint32 *map[uintptr]uint32 - FMapUintptrUint64 map[uintptr]uint64 - FptrMapUintptrUint64 *map[uintptr]uint64 - FMapUintptrUintptr map[uintptr]uintptr - FptrMapUintptrUintptr *map[uintptr]uintptr - FMapUintptrInt map[uintptr]int - FptrMapUintptrInt *map[uintptr]int - FMapUintptrInt8 map[uintptr]int8 - FptrMapUintptrInt8 *map[uintptr]int8 - FMapUintptrInt16 map[uintptr]int16 - FptrMapUintptrInt16 *map[uintptr]int16 - FMapUintptrInt32 map[uintptr]int32 - FptrMapUintptrInt32 *map[uintptr]int32 - FMapUintptrInt64 map[uintptr]int64 - FptrMapUintptrInt64 *map[uintptr]int64 - FMapUintptrFloat32 map[uintptr]float32 - FptrMapUintptrFloat32 *map[uintptr]float32 - FMapUintptrFloat64 map[uintptr]float64 - FptrMapUintptrFloat64 *map[uintptr]float64 - FMapUintptrBool map[uintptr]bool - FptrMapUintptrBool *map[uintptr]bool - FMapIntIntf map[int]interface{} - FptrMapIntIntf *map[int]interface{} - FMapIntString map[int]string - FptrMapIntString *map[int]string - FMapIntUint map[int]uint - FptrMapIntUint *map[int]uint - FMapIntUint8 map[int]uint8 - FptrMapIntUint8 *map[int]uint8 - FMapIntUint16 map[int]uint16 - FptrMapIntUint16 *map[int]uint16 - FMapIntUint32 map[int]uint32 - FptrMapIntUint32 *map[int]uint32 - FMapIntUint64 map[int]uint64 - FptrMapIntUint64 *map[int]uint64 - FMapIntUintptr map[int]uintptr - FptrMapIntUintptr *map[int]uintptr - FMapIntInt map[int]int - FptrMapIntInt *map[int]int - FMapIntInt8 map[int]int8 - FptrMapIntInt8 *map[int]int8 - FMapIntInt16 map[int]int16 - FptrMapIntInt16 *map[int]int16 - FMapIntInt32 map[int]int32 - FptrMapIntInt32 *map[int]int32 - FMapIntInt64 map[int]int64 - FptrMapIntInt64 *map[int]int64 - FMapIntFloat32 map[int]float32 - FptrMapIntFloat32 *map[int]float32 - FMapIntFloat64 map[int]float64 - FptrMapIntFloat64 *map[int]float64 - FMapIntBool map[int]bool - FptrMapIntBool *map[int]bool - FMapInt8Intf map[int8]interface{} - FptrMapInt8Intf *map[int8]interface{} - FMapInt8String map[int8]string - FptrMapInt8String *map[int8]string - FMapInt8Uint map[int8]uint - FptrMapInt8Uint *map[int8]uint - FMapInt8Uint8 map[int8]uint8 - FptrMapInt8Uint8 *map[int8]uint8 - FMapInt8Uint16 map[int8]uint16 - FptrMapInt8Uint16 *map[int8]uint16 - FMapInt8Uint32 map[int8]uint32 - FptrMapInt8Uint32 *map[int8]uint32 - FMapInt8Uint64 map[int8]uint64 - FptrMapInt8Uint64 *map[int8]uint64 - FMapInt8Uintptr map[int8]uintptr - FptrMapInt8Uintptr *map[int8]uintptr - FMapInt8Int map[int8]int - FptrMapInt8Int *map[int8]int - FMapInt8Int8 map[int8]int8 - FptrMapInt8Int8 *map[int8]int8 - FMapInt8Int16 map[int8]int16 - FptrMapInt8Int16 *map[int8]int16 - FMapInt8Int32 map[int8]int32 - FptrMapInt8Int32 *map[int8]int32 - FMapInt8Int64 map[int8]int64 - FptrMapInt8Int64 *map[int8]int64 - FMapInt8Float32 map[int8]float32 - FptrMapInt8Float32 *map[int8]float32 - FMapInt8Float64 map[int8]float64 - FptrMapInt8Float64 *map[int8]float64 - FMapInt8Bool map[int8]bool - FptrMapInt8Bool *map[int8]bool - FMapInt16Intf map[int16]interface{} - FptrMapInt16Intf *map[int16]interface{} - FMapInt16String map[int16]string - FptrMapInt16String *map[int16]string - FMapInt16Uint map[int16]uint - FptrMapInt16Uint *map[int16]uint - FMapInt16Uint8 map[int16]uint8 - FptrMapInt16Uint8 *map[int16]uint8 - FMapInt16Uint16 map[int16]uint16 - FptrMapInt16Uint16 *map[int16]uint16 - FMapInt16Uint32 map[int16]uint32 - FptrMapInt16Uint32 *map[int16]uint32 - FMapInt16Uint64 map[int16]uint64 - FptrMapInt16Uint64 *map[int16]uint64 - FMapInt16Uintptr map[int16]uintptr - FptrMapInt16Uintptr *map[int16]uintptr - FMapInt16Int map[int16]int - FptrMapInt16Int *map[int16]int - FMapInt16Int8 map[int16]int8 - FptrMapInt16Int8 *map[int16]int8 - FMapInt16Int16 map[int16]int16 - FptrMapInt16Int16 *map[int16]int16 - FMapInt16Int32 map[int16]int32 - FptrMapInt16Int32 *map[int16]int32 - FMapInt16Int64 map[int16]int64 - FptrMapInt16Int64 *map[int16]int64 - FMapInt16Float32 map[int16]float32 - FptrMapInt16Float32 *map[int16]float32 - FMapInt16Float64 map[int16]float64 - FptrMapInt16Float64 *map[int16]float64 - FMapInt16Bool map[int16]bool - FptrMapInt16Bool *map[int16]bool - FMapInt32Intf map[int32]interface{} - FptrMapInt32Intf *map[int32]interface{} - FMapInt32String map[int32]string - FptrMapInt32String *map[int32]string - FMapInt32Uint map[int32]uint - FptrMapInt32Uint *map[int32]uint - FMapInt32Uint8 map[int32]uint8 - FptrMapInt32Uint8 *map[int32]uint8 - FMapInt32Uint16 map[int32]uint16 - FptrMapInt32Uint16 *map[int32]uint16 - FMapInt32Uint32 map[int32]uint32 - FptrMapInt32Uint32 *map[int32]uint32 - FMapInt32Uint64 map[int32]uint64 - FptrMapInt32Uint64 *map[int32]uint64 - FMapInt32Uintptr map[int32]uintptr - FptrMapInt32Uintptr *map[int32]uintptr - FMapInt32Int map[int32]int - FptrMapInt32Int *map[int32]int - FMapInt32Int8 map[int32]int8 - FptrMapInt32Int8 *map[int32]int8 - FMapInt32Int16 map[int32]int16 - FptrMapInt32Int16 *map[int32]int16 - FMapInt32Int32 map[int32]int32 - FptrMapInt32Int32 *map[int32]int32 - FMapInt32Int64 map[int32]int64 - FptrMapInt32Int64 *map[int32]int64 - FMapInt32Float32 map[int32]float32 - FptrMapInt32Float32 *map[int32]float32 - FMapInt32Float64 map[int32]float64 - FptrMapInt32Float64 *map[int32]float64 - FMapInt32Bool map[int32]bool - FptrMapInt32Bool *map[int32]bool - FMapInt64Intf map[int64]interface{} - FptrMapInt64Intf *map[int64]interface{} - FMapInt64String map[int64]string - FptrMapInt64String *map[int64]string - FMapInt64Uint map[int64]uint - FptrMapInt64Uint *map[int64]uint - FMapInt64Uint8 map[int64]uint8 - FptrMapInt64Uint8 *map[int64]uint8 - FMapInt64Uint16 map[int64]uint16 - FptrMapInt64Uint16 *map[int64]uint16 - FMapInt64Uint32 map[int64]uint32 - FptrMapInt64Uint32 *map[int64]uint32 - FMapInt64Uint64 map[int64]uint64 - FptrMapInt64Uint64 *map[int64]uint64 - FMapInt64Uintptr map[int64]uintptr - FptrMapInt64Uintptr *map[int64]uintptr - FMapInt64Int map[int64]int - FptrMapInt64Int *map[int64]int - FMapInt64Int8 map[int64]int8 - FptrMapInt64Int8 *map[int64]int8 - FMapInt64Int16 map[int64]int16 - FptrMapInt64Int16 *map[int64]int16 - FMapInt64Int32 map[int64]int32 - FptrMapInt64Int32 *map[int64]int32 - FMapInt64Int64 map[int64]int64 - FptrMapInt64Int64 *map[int64]int64 - FMapInt64Float32 map[int64]float32 - FptrMapInt64Float32 *map[int64]float32 - FMapInt64Float64 map[int64]float64 - FptrMapInt64Float64 *map[int64]float64 - FMapInt64Bool map[int64]bool - FptrMapInt64Bool *map[int64]bool - FMapBoolIntf map[bool]interface{} - FptrMapBoolIntf *map[bool]interface{} - FMapBoolString map[bool]string - FptrMapBoolString *map[bool]string - FMapBoolUint map[bool]uint - FptrMapBoolUint *map[bool]uint - FMapBoolUint8 map[bool]uint8 - FptrMapBoolUint8 *map[bool]uint8 - FMapBoolUint16 map[bool]uint16 - FptrMapBoolUint16 *map[bool]uint16 - FMapBoolUint32 map[bool]uint32 - FptrMapBoolUint32 *map[bool]uint32 - FMapBoolUint64 map[bool]uint64 - FptrMapBoolUint64 *map[bool]uint64 - FMapBoolUintptr map[bool]uintptr - FptrMapBoolUintptr *map[bool]uintptr - FMapBoolInt map[bool]int - FptrMapBoolInt *map[bool]int - FMapBoolInt8 map[bool]int8 - FptrMapBoolInt8 *map[bool]int8 - FMapBoolInt16 map[bool]int16 - FptrMapBoolInt16 *map[bool]int16 - FMapBoolInt32 map[bool]int32 - FptrMapBoolInt32 *map[bool]int32 - FMapBoolInt64 map[bool]int64 - FptrMapBoolInt64 *map[bool]int64 - FMapBoolFloat32 map[bool]float32 - FptrMapBoolFloat32 *map[bool]float32 - FMapBoolFloat64 map[bool]float64 - FptrMapBoolFloat64 *map[bool]float64 - FMapBoolBool map[bool]bool - FptrMapBoolBool *map[bool]bool -} diff --git a/vendor/github.com/ugorji/go/codec/msgpack.go b/vendor/github.com/ugorji/go/codec/msgpack.go index 3c58daf3f..e79830b56 100644 --- a/vendor/github.com/ugorji/go/codec/msgpack.go +++ b/vendor/github.com/ugorji/go/codec/msgpack.go @@ -349,11 +349,11 @@ func (d *msgpackDecDriver) DecodeNaked() { n.s = d.DecodeString() } else { n.v = valueTypeBytes - n.l = d.DecodeBytes(nil, false) + n.l = d.DecodeBytes(nil, false, false) } case bd == mpBin8, bd == mpBin16, bd == mpBin32: n.v = valueTypeBytes - n.l = d.DecodeBytes(nil, false) + n.l = d.DecodeBytes(nil, false, false) case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax: n.v = valueTypeArray decodeFurther = true @@ -525,11 +525,12 @@ func (d *msgpackDecDriver) DecodeBool() (b bool) { return } -func (d *msgpackDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { +func (d *msgpackDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { if !d.bdRead { d.readNextBd() } var clen int + // ignore isstring. Expect that the bytes may be found from msgpackContainerStr or msgpackContainerBin if bd := d.bd; bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { clen = d.readContainerLen(msgpackContainerBin) } else { @@ -548,15 +549,11 @@ func (d *msgpackDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) bs = d.b[:] } } - return decByteSlice(d.r, clen, d.d.h.MaxInitLen, bs) + return decByteSlice(d.r, clen, bs) } func (d *msgpackDecDriver) DecodeString() (s string) { - return string(d.DecodeBytes(d.b[:], true)) -} - -func (d *msgpackDecDriver) DecodeStringAsBytes() (s []byte) { - return d.DecodeBytes(d.b[:], true) + return string(d.DecodeBytes(d.b[:], true, true)) } func (d *msgpackDecDriver) readNextBd() { @@ -572,9 +569,6 @@ func (d *msgpackDecDriver) uncacheRead() { } func (d *msgpackDecDriver) ContainerType() (vt valueType) { - if !d.bdRead { - d.readNextBd() - } bd := d.bd if bd == mpNil { return valueTypeNil @@ -627,16 +621,10 @@ func (d *msgpackDecDriver) readContainerLen(ct msgpackContainerType) (clen int) } func (d *msgpackDecDriver) ReadMapStart() int { - if !d.bdRead { - d.readNextBd() - } return d.readContainerLen(msgpackContainerMap) } func (d *msgpackDecDriver) ReadArrayStart() int { - if !d.bdRead { - d.readNextBd() - } return d.readContainerLen(msgpackContainerList) } @@ -690,10 +678,10 @@ func (d *msgpackDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs } xbd := d.bd if xbd == mpBin8 || xbd == mpBin16 || xbd == mpBin32 { - xbs = d.DecodeBytes(nil, true) + xbs = d.DecodeBytes(nil, false, true) } else if xbd == mpStr8 || xbd == mpStr16 || xbd == mpStr32 || (xbd >= mpFixStrMin && xbd <= mpFixStrMax) { - xbs = d.DecodeStringAsBytes() + xbs = d.DecodeBytes(nil, true, true) } else { clen := d.readExtLen() xtag = d.r.readn1() @@ -739,7 +727,7 @@ func (h *MsgpackHandle) newEncDriver(e *Encoder) encDriver { } func (h *MsgpackHandle) newDecDriver(d *Decoder) decDriver { - return &msgpackDecDriver{d: d, h: h, r: d.r, br: d.bytes} + return &msgpackDecDriver{d: d, r: d.r, h: h, br: d.bytes} } func (e *msgpackEncDriver) reset() { @@ -747,7 +735,7 @@ func (e *msgpackEncDriver) reset() { } func (d *msgpackDecDriver) reset() { - d.r, d.br = d.d.r, d.d.bytes + d.r = d.d.r d.bd, d.bdRead = 0, false } diff --git a/vendor/github.com/ugorji/go/codec/noop.go b/vendor/github.com/ugorji/go/codec/noop.go index a7825156d..cfee3d084 100644 --- a/vendor/github.com/ugorji/go/codec/noop.go +++ b/vendor/github.com/ugorji/go/codec/noop.go @@ -105,9 +105,10 @@ func (h *noopDrv) DecodeUint(bitsize uint8) (ui uint64) { return uint64(h. func (h *noopDrv) DecodeFloat(chkOverflow32 bool) (f float64) { return float64(h.m(95)) } func (h *noopDrv) DecodeBool() (b bool) { return h.m(2) == 0 } func (h *noopDrv) DecodeString() (s string) { return h.S[h.m(8)] } -func (h *noopDrv) DecodeStringAsBytes() []byte { return h.DecodeBytes(nil, true) } -func (h *noopDrv) DecodeBytes(bs []byte, zerocopy bool) []byte { return h.B[h.m(len(h.B))] } +// func (h *noopDrv) DecodeStringAsBytes(bs []byte) []byte { return h.DecodeBytes(bs) } + +func (h *noopDrv) DecodeBytes(bs []byte, isstring, zerocopy bool) []byte { return h.B[h.m(len(h.B))] } func (h *noopDrv) ReadEnd() { h.end() } diff --git a/vendor/github.com/ugorji/go/codec/prebuild.go b/vendor/github.com/ugorji/go/codec/prebuild.go new file mode 100644 index 000000000..2353263e8 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/prebuild.go @@ -0,0 +1,3 @@ +package codec + +//go:generate bash prebuild.sh diff --git a/vendor/github.com/ugorji/go/codec/prebuild.sh b/vendor/github.com/ugorji/go/codec/prebuild.sh new file mode 100755 index 000000000..909f4bb0f --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/prebuild.sh @@ -0,0 +1,199 @@ +#!/bin/bash + +# _needgen is a helper function to tell if we need to generate files for msgp, codecgen. +_needgen() { + local a="$1" + zneedgen=0 + if [[ ! -e "$a" ]] + then + zneedgen=1 + echo 1 + return 0 + fi + for i in `ls -1 *.go.tmpl gen.go values_test.go` + do + if [[ "$a" -ot "$i" ]] + then + zneedgen=1 + echo 1 + return 0 + fi + done + echo 0 +} + +# _build generates fast-path.go and gen-helper.go. +# +# It is needed because there is some dependency between the generated code +# and the other classes. Consequently, we have to totally remove the +# generated files and put stubs in place, before calling "go run" again +# to recreate them. +_build() { + if ! [[ "${zforce}" == "1" || + "1" == $( _needgen "fast-path.generated.go" ) || + "1" == $( _needgen "gen-helper.generated.go" ) || + "1" == $( _needgen "gen.generated.go" ) || + 1 == 0 ]] + then + return 0 + fi + + # echo "Running prebuild" + if [ "${zbak}" == "1" ] + then + # echo "Backing up old generated files" + _zts=`date '+%m%d%Y_%H%M%S'` + _gg=".generated.go" + [ -e "gen-helper${_gg}" ] && mv gen-helper${_gg} gen-helper${_gg}__${_zts}.bak + [ -e "fast-path${_gg}" ] && mv fast-path${_gg} fast-path${_gg}__${_zts}.bak + # [ -e "safe${_gg}" ] && mv safe${_gg} safe${_gg}__${_zts}.bak + # [ -e "unsafe${_gg}" ] && mv unsafe${_gg} unsafe${_gg}__${_zts}.bak + else + rm -f fast-path.generated.go gen.generated.go gen-helper.generated.go \ + *safe.generated.go *_generated_test.go *.generated_ffjson_expose.go + fi + + cat > gen.generated.go <> gen.generated.go < gen-dec-map.go.tmpl + + cat >> gen.generated.go <> gen.generated.go < gen-dec-array.go.tmpl + + cat >> gen.generated.go < gen-from-tmpl.codec.generated.go < gen-from-tmpl.generated.go < -// Benchmarks should also take this parameter, to include the sereal, xdr, etc. -// To run against codecgen, etc, make sure you pass extra parameters. -// Example usage: -// go test "-tags=x codecgen" -bench=. -// -// To fully test everything: -// go test -tags=x -benchtime=100ms -tv -bg -bi -brw -bu -v -run=. -bench=. - -// Handling flags -// codec_test.go will define a set of global flags for testing, including: -// - Use Reset -// - Use IO reader/writer (vs direct bytes) -// - Set Canonical -// - Set InternStrings -// - Use Symbols -// -// This way, we can test them all by running same set of tests with a different -// set of flags. -// -// Following this, all the benchmarks will utilize flags set by codec_test.go -// and will not redefine these "global" flags. - -import ( - "bytes" - "flag" - "sync" -) - -// DO NOT REMOVE - replacement line for go-codec-bench import declaration tag // - -type testHED struct { - H Handle - E *Encoder - D *Decoder -} - -var ( - testNoopH = NoopHandle(8) - testMsgpackH = &MsgpackHandle{} - testBincH = &BincHandle{} - testSimpleH = &SimpleHandle{} - testCborH = &CborHandle{} - testJsonH = &JsonHandle{} - - testHandles []Handle - testPreInitFns []func() - testPostInitFns []func() - - testOnce sync.Once - - testHEDs []testHED -) - -// flag variables used by tests (and bench) -var ( - testVerbose bool - testInitDebug bool - testUseIoEncDec bool - testStructToArray bool - testCanonical bool - testUseReset bool - testWriteNoSymbols bool - testSkipIntf bool - testInternStr bool - testUseMust bool - testCheckCircRef bool - testJsonIndent int - testMaxInitLen int - - testJsonHTMLCharsAsIs bool - testJsonPreferFloat bool -) - -// flag variables used by bench -var ( - benchDoInitBench bool - benchVerify bool - benchUnscientificRes bool = false - benchMapStringKeyOnly bool - //depth of 0 maps to ~400bytes json-encoded string, 1 maps to ~1400 bytes, etc - //For depth>1, we likely trigger stack growth for encoders, making benchmarking unreliable. - benchDepth int - benchInitDebug bool -) - -func init() { - testHEDs = make([]testHED, 0, 32) - testHandles = append(testHandles, - testNoopH, testMsgpackH, testBincH, testSimpleH, - testCborH, testJsonH) - testInitFlags() - benchInitFlags() -} - -func testInitFlags() { - // delete(testDecOpts.ExtFuncs, timeTyp) - flag.BoolVar(&testVerbose, "tv", false, "Test Verbose") - flag.BoolVar(&testInitDebug, "tg", false, "Test Init Debug") - flag.BoolVar(&testUseIoEncDec, "ti", false, "Use IO Reader/Writer for Marshal/Unmarshal") - flag.BoolVar(&testStructToArray, "ts", false, "Set StructToArray option") - flag.BoolVar(&testWriteNoSymbols, "tn", false, "Set NoSymbols option") - flag.BoolVar(&testCanonical, "tc", false, "Set Canonical option") - flag.BoolVar(&testInternStr, "te", false, "Set InternStr option") - flag.BoolVar(&testSkipIntf, "tf", false, "Skip Interfaces") - flag.BoolVar(&testUseReset, "tr", false, "Use Reset") - flag.IntVar(&testJsonIndent, "td", 0, "Use JSON Indent") - flag.IntVar(&testMaxInitLen, "tx", 0, "Max Init Len") - flag.BoolVar(&testUseMust, "tm", true, "Use Must(En|De)code") - flag.BoolVar(&testCheckCircRef, "tl", false, "Use Check Circular Ref") - flag.BoolVar(&testJsonHTMLCharsAsIs, "tas", false, "Set JSON HTMLCharsAsIs") - flag.BoolVar(&testJsonPreferFloat, "tjf", false, "Prefer Float in json") -} - -func benchInitFlags() { - flag.BoolVar(&benchMapStringKeyOnly, "bs", false, "Bench use maps with string keys only") - flag.BoolVar(&benchInitDebug, "bg", false, "Bench Debug") - flag.IntVar(&benchDepth, "bd", 1, "Bench Depth") - flag.BoolVar(&benchDoInitBench, "bi", false, "Run Bench Init") - flag.BoolVar(&benchVerify, "bv", false, "Verify Decoded Value during Benchmark") - flag.BoolVar(&benchUnscientificRes, "bu", false, "Show Unscientific Results during Benchmark") -} - -func testHEDGet(h Handle) *testHED { - for i := range testHEDs { - v := &testHEDs[i] - if v.H == h { - return v - } - } - testHEDs = append(testHEDs, testHED{h, NewEncoder(nil, h), NewDecoder(nil, h)}) - return &testHEDs[len(testHEDs)-1] -} - -func testReinit() { - testOnce = sync.Once{} - testHEDs = nil -} - -func testInitAll() { - // only parse it once. - if !flag.Parsed() { - flag.Parse() - } - for _, f := range testPreInitFns { - f() - } - for _, f := range testPostInitFns { - f() - } -} - -func testCodecEncode(ts interface{}, bsIn []byte, - fn func([]byte) *bytes.Buffer, h Handle) (bs []byte, err error) { - // bs = make([]byte, 0, approxSize) - var e *Encoder - var buf *bytes.Buffer - if testUseReset { - e = testHEDGet(h).E - } else { - e = NewEncoder(nil, h) - } - if testUseIoEncDec { - buf = fn(bsIn) - e.Reset(buf) - } else { - bs = bsIn - e.ResetBytes(&bs) - } - if testUseMust { - e.MustEncode(ts) - } else { - err = e.Encode(ts) - } - if testUseIoEncDec { - bs = buf.Bytes() - } - return -} - -func testCodecDecode(bs []byte, ts interface{}, h Handle) (err error) { - var d *Decoder - var buf *bytes.Reader - if testUseReset { - d = testHEDGet(h).D - } else { - d = NewDecoder(nil, h) - } - if testUseIoEncDec { - buf = bytes.NewReader(bs) - d.Reset(buf) - } else { - d.ResetBytes(bs) - } - if testUseMust { - d.MustDecode(ts) - } else { - err = d.Decode(ts) - } - return -} - -// ----- functions below are used only by benchmarks alone - -func fnBenchmarkByteBuf(bsIn []byte) (buf *bytes.Buffer) { - // var buf bytes.Buffer - // buf.Grow(approxSize) - buf = bytes.NewBuffer(bsIn) - buf.Truncate(0) - return -} - -func benchFnCodecEncode(ts interface{}, bsIn []byte, h Handle) (bs []byte, err error) { - return testCodecEncode(ts, bsIn, fnBenchmarkByteBuf, h) -} - -func benchFnCodecDecode(bs []byte, ts interface{}, h Handle) (err error) { - return testCodecDecode(bs, ts, h) -} diff --git a/vendor/github.com/ugorji/go/codec/simple.go b/vendor/github.com/ugorji/go/codec/simple.go index 209e9887f..d07208c87 100644 --- a/vendor/github.com/ugorji/go/codec/simple.go +++ b/vendor/github.com/ugorji/go/codec/simple.go @@ -174,9 +174,6 @@ func (d *simpleDecDriver) uncacheRead() { } func (d *simpleDecDriver) ContainerType() (vt valueType) { - if !d.bdRead { - d.readNextBd() - } if d.bd == simpleVdNil { return valueTypeNil } else if d.bd == simpleVdByteArray || d.bd == simpleVdByteArray+1 || @@ -318,17 +315,11 @@ func (d *simpleDecDriver) DecodeBool() (b bool) { } func (d *simpleDecDriver) ReadMapStart() (length int) { - if !d.bdRead { - d.readNextBd() - } d.bdRead = false return d.decLen() } func (d *simpleDecDriver) ReadArrayStart() (length int) { - if !d.bdRead { - d.readNextBd() - } d.bdRead = false return d.decLen() } @@ -361,14 +352,10 @@ func (d *simpleDecDriver) decLen() int { } func (d *simpleDecDriver) DecodeString() (s string) { - return string(d.DecodeBytes(d.b[:], true)) + return string(d.DecodeBytes(d.b[:], true, true)) } -func (d *simpleDecDriver) DecodeStringAsBytes() (s []byte) { - return d.DecodeBytes(d.b[:], true) -} - -func (d *simpleDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { +func (d *simpleDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { if !d.bdRead { d.readNextBd() } @@ -385,7 +372,7 @@ func (d *simpleDecDriver) DecodeBytes(bs []byte, zerocopy bool) (bsOut []byte) { bs = d.b[:] } } - return decByteSlice(d.r, clen, d.d.h.MaxInitLen, bs) + return decByteSlice(d.r, clen, bs) } func (d *simpleDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { @@ -419,7 +406,7 @@ func (d *simpleDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs [ } xbs = d.r.readx(l) case simpleVdByteArray, simpleVdByteArray + 1, simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: - xbs = d.DecodeBytes(nil, true) + xbs = d.DecodeBytes(nil, false, true) default: d.d.errorf("Invalid d.bd for extensions (Expecting extensions or byte array). Got: 0x%x", d.bd) return @@ -467,7 +454,7 @@ func (d *simpleDecDriver) DecodeNaked() { n.s = d.DecodeString() case simpleVdByteArray, simpleVdByteArray + 1, simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: n.v = valueTypeBytes - n.l = d.DecodeBytes(nil, false) + n.l = d.DecodeBytes(nil, false, false) case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: n.v = valueTypeExt l := d.decLen() @@ -523,7 +510,7 @@ func (h *SimpleHandle) newEncDriver(e *Encoder) encDriver { } func (h *SimpleHandle) newDecDriver(d *Decoder) decDriver { - return &simpleDecDriver{d: d, h: h, r: d.r, br: d.bytes} + return &simpleDecDriver{d: d, r: d.r, h: h, br: d.bytes} } func (e *simpleEncDriver) reset() { @@ -531,7 +518,7 @@ func (e *simpleEncDriver) reset() { } func (d *simpleDecDriver) reset() { - d.r, d.br = d.d.r, d.d.bytes + d.r = d.d.r d.bd, d.bdRead = 0, false } diff --git a/vendor/github.com/ugorji/go/codec/test.py b/vendor/github.com/ugorji/go/codec/test.py index 800376f68..c0ad20b34 100755 --- a/vendor/github.com/ugorji/go/codec/test.py +++ b/vendor/github.com/ugorji/go/codec/test.py @@ -34,7 +34,7 @@ def get_test_data_list(): True, u"null", None, - u"some&day>some 0 @@ -96,14 +96,14 @@ def doRpcServer(port, stopTimeSec): server.start() def doRpcClientToPythonSvc(port): - address = msgpackrpc.Address('127.0.0.1', port) + address = msgpackrpc.Address('localhost', port) client = msgpackrpc.Client(address, unpack_encoding='utf-8') print client.call("Echo123", "A1", "B2", "C3") print client.call("EchoStruct", {"A" :"Aa", "B":"Bb", "C":"Cc"}) def doRpcClientToGoSvc(port): # print ">>>> port: ", port, " <<<<<" - address = msgpackrpc.Address('127.0.0.1', port) + address = msgpackrpc.Address('localhost', port) client = msgpackrpc.Client(address, unpack_encoding='utf-8') print client.call("TestRpcInt.Echo123", ["A1", "B2", "C3"]) print client.call("TestRpcInt.EchoStruct", {"A" :"Aa", "B":"Bb", "C":"Cc"}) diff --git a/vendor/github.com/ugorji/go/codec/tests.sh b/vendor/github.com/ugorji/go/codec/tests.sh new file mode 100755 index 000000000..342f336df --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/tests.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +# Run all the different permutations of all the tests. +# This helps ensure that nothing gets broken. + +_run() { + # 1. VARIATIONS: regular (t), canonical (c), IO R/W (i), + # binc-nosymbols (n), struct2array (s), intern string (e), + # json-indent (d), circular (l) + # 2. MODE: reflection (r), external (x), codecgen (g), unsafe (u), notfastpath (f) + # 3. OPTIONS: verbose (v), reset (z), must (m), + # + # Use combinations of mode to get exactly what you want, + # and then pass the variations you need. + + ztags="" + zargs="" + local OPTIND + OPTIND=1 + while getopts "_xurtcinsvgzmefdl" flag + do + case "x$flag" in + 'xr') ;; + 'xf') ztags="$ztags notfastpath" ;; + 'xg') ztags="$ztags codecgen" ;; + 'xx') ztags="$ztags x" ;; + 'xu') ztags="$ztags unsafe" ;; + 'xv') zargs="$zargs -tv" ;; + 'xz') zargs="$zargs -tr" ;; + 'xm') zargs="$zargs -tm" ;; + 'xl') zargs="$zargs -tl" ;; + *) ;; + esac + done + # shift $((OPTIND-1)) + printf '............. TAGS: %s .............\n' "$ztags" + # echo ">>>>>>> TAGS: $ztags" + + OPTIND=1 + while getopts "_xurtcinsvgzmefdl" flag + do + case "x$flag" in + 'xt') printf ">>>>>>> REGULAR : "; go test "-tags=$ztags" $zargs ; sleep 2 ;; + 'xc') printf ">>>>>>> CANONICAL : "; go test "-tags=$ztags" $zargs -tc; sleep 2 ;; + 'xi') printf ">>>>>>> I/O : "; go test "-tags=$ztags" $zargs -ti; sleep 2 ;; + 'xn') printf ">>>>>>> NO_SYMBOLS : "; go test "-tags=$ztags" -run=Binc $zargs -tn; sleep 2 ;; + 'xs') printf ">>>>>>> TO_ARRAY : "; go test "-tags=$ztags" $zargs -ts; sleep 2 ;; + 'xe') printf ">>>>>>> INTERN : "; go test "-tags=$ztags" $zargs -te; sleep 2 ;; + 'xd') printf ">>>>>>> INDENT : "; + go test "-tags=$ztags" -run=JsonCodecsTable -td=-1 $zargs; + go test "-tags=$ztags" -run=JsonCodecsTable -td=8 $zargs; + sleep 2 ;; + *) ;; + esac + done + shift $((OPTIND-1)) + + OPTIND=1 +} + +# echo ">>>>>>> RUNNING VARIATIONS OF TESTS" +if [[ "x$@" = "x" || "x$@" = "x-A" ]]; then + # All: r, x, g, gu + _run "-_tcinsed_ml" # regular + _run "-_tcinsed_ml_z" # regular with reset + _run "-_tcinsed_ml_f" # regular with no fastpath (notfastpath) + _run "-x_tcinsed_ml" # external + _run "-gx_tcinsed_ml" # codecgen: requires external + _run "-gxu_tcinsed_ml" # codecgen + unsafe +elif [[ "x$@" = "x-Z" ]]; then + # Regular + _run "-_tcinsed_ml" # regular + _run "-_tcinsed_ml_z" # regular with reset +elif [[ "x$@" = "x-F" ]]; then + # regular with notfastpath + _run "-_tcinsed_ml_f" # regular + _run "-_tcinsed_ml_zf" # regular with reset +elif [[ "x$@" = "x-C" ]]; then + # codecgen + _run "-gx_tcinsed_ml" # codecgen: requires external + _run "-gxu_tcinsed_ml" # codecgen + unsafe +elif [[ "x$@" = "x-X" ]]; then + # external + _run "-x_tcinsed_ml" # external +elif [[ "x$@" = "x-h" || "x$@" = "x-?" ]]; then + cat < - - Entity Declarations & References - - XML Declaration (assume UTF-8) - - XML Directive i.e. - - Other Declarations: Notation, etc. - - Comment - - Processing Instruction - - schema / DTD for validation: - We are not a VALIDATING parser. Validation is done elsewhere. - However, some parts of the DTD internal subset are used (SEE BELOW). - For Attribute List Declarations e.g. - - We considered using the ATTLIST to get "default" value, but not to validate the contents. (VETOED) - -The following XML features are supported - - Namespace - - Element - - Attribute - - cdata - - Unicode escape - -The following DTD (when as an internal sub-set) features are supported: - - Internal Entities e.g. - AND entities for the set: [<>&"'] - - Parameter entities e.g. - - -At decode time, a structure containing the following is kept - - namespace mapping - - default attribute values - - all internal entities (<>&"' and others written in the document) - -When decode starts, it parses XML namespace declarations and creates a map in the -xmlDecDriver. While parsing, that map continously gets updated. -The only problem happens when a namespace declaration happens on the node that it defines. -e.g. -To handle this, each Element must be fully parsed at a time, -even if it amounts to multiple tokens which are returned one at a time on request. - -xmlns is a special attribute name. - - It is used to define namespaces, including the default - - It is never returned as an AttrKey or AttrVal. - *We may decide later to allow user to use it e.g. you want to parse the xmlns mappings into a field.* - -Number, bool, null, mapKey, etc can all be decoded from any xmlToken. -This accomodates map[int]string for example. - -It should be possible to create a schema from the types, -or vice versa (generate types from schema with appropriate tags). -This is however out-of-scope from this parsing project. - -We should write all namespace information at the first point that it is referenced in the tree, -and use the mapping for all child nodes and attributes. This means that state is maintained -at a point in the tree. This also means that calls to Decode or MustDecode will reset some state. - -When decoding, it is important to keep track of entity references and default attribute values. -It seems these can only be stored in the DTD components. We should honor them when decoding. - -Configuration for XMLHandle will look like this: - - XMLHandle - DefaultNS string - // Encoding: - NS map[string]string // ns URI to key, used for encoding - // Decoding: in case ENTITY declared in external schema or dtd, store info needed here - Entities map[string]string // map of entity rep to character - - -During encode, if a namespace mapping is not defined for a namespace found on a struct, -then we create a mapping for it using nsN (where N is 1..1000000, and doesn't conflict -with any other namespace mapping). - -Note that different fields in a struct can have different namespaces. -However, all fields will default to the namespace on the _struct field (if defined). - -An XML document is a name, a map of attributes and a list of children. -Consequently, we cannot "DecodeNaked" into a map[string]interface{} (for example). -We have to "DecodeNaked" into something that resembles XML data. - -To support DecodeNaked (decode into nil interface{}) we have to define some "supporting" types: - type Name struct { // Prefered. Less allocations due to conversions. - Local string - Space string - } - type Element struct { - Name Name - Attrs map[Name]string - Children []interface{} // each child is either *Element or string - } -Only two "supporting" types are exposed for XML: Name and Element. - -We considered 'type Name string' where Name is like "Space Local" (space-separated). -We decided against it, because each creation of a name would lead to -double allocation (first convert []byte to string, then concatenate them into a string). -The benefit is that it is faster to read Attrs from a map. But given that Element is a value -object, we want to eschew methods and have public exposed variables. - -We also considered the following, where xml types were not value objects, and we used -intelligent accessor methods to extract information and for performance. -*** WE DECIDED AGAINST THIS. *** - type Attr struct { - Name Name - Value string - } - // Element is a ValueObject: There are no accessor methods. - // Make element self-contained. - type Element struct { - Name Name - attrsMap map[string]string // where key is "Space Local" - attrs []Attr - childrenT []string - childrenE []Element - childrenI []int // each child is a index into T or E. - } - func (x *Element) child(i) interface{} // returns string or *Element - -Per XML spec and our default handling, white space is insignificant between elements, -specifically between parent-child or siblings. White space occuring alone between start -and end element IS significant. However, if xml:space='preserve', then we 'preserve' -all whitespace. This is more critical when doing a DecodeNaked, but MAY not be as critical -when decoding into a typed value. - -**Note: there is no xml: namespace. The xml: attributes were defined before namespaces.** -**So treat them as just "directives" that should be interpreted to mean something**. - -On encoding, we don't add any prettifying markup (indenting, etc). - -A document or element can only be encoded/decoded from/to a struct. In this mode: - - struct name maps to element name (or tag-info from _struct field) - - fields are mapped to child elements or attributes - -A map is either encoded as attributes on current element, or as a set of child elements. -Maps are encoded as attributes iff their keys and values are primitives (number, bool, string). - -A list is encoded as a set of child elements. - -Primitives (number, bool, string) are encoded as an element, attribute or text -depending on the context. - -Extensions must encode themselves as a text string. - -Encoding is tough, specifically when encoding mappings, because we need to encode -as either attribute or element. To do this, we need to default to encoding as attributes, -and then let Encoder inform the Handle when to start encoding as nodes. -i.e. Encoder does something like: - - h.EncodeMapStart() - h.Encode(), h.Encode(), ... - h.EncodeMapNotAttrSignal() // this is not a bool, because it's a signal - h.Encode(), h.Encode(), ... - h.EncodeEnd() - -Only XMLHandle understands this, and will set itself to start encoding as elements. - -This support extends to maps. For example, if a struct field is a map, and it has -the struct tag signifying it should be attr, then all its fields are encoded as attributes. -e.g. - - type X struct { - M map[string]int `codec:"m,attr"` // encode as attributes - } - -Question: - - if encoding a map, what if map keys have spaces in them??? - Then they cannot be attributes or child elements. Error. - -Misc: - - - For attribute values, normalize by trimming beginning and ending white space, - and converting every white space sequence to a single space. - - ATTLIST restrictions are enforced. - e.g. default value of xml:space, skipping xml:XYZ style attributes, etc. - - Consider supporting NON-STRICT mode (e.g. to handle HTML parsing). - Some elements e.g. br, hr, etc need not close and should be auto-closed - ... (see http://www.w3.org/TR/html4/loose.dtd) - An expansive set of entities are pre-defined. - - Have easy way to create a HTML parser: - add a HTML() method to XMLHandle, that will set Strict=false, specify AutoClose, - and add HTML Entities to the list. - - Support validating element/attribute XMLName before writing it. - Keep this behind a flag, which is set to false by default (for performance). - type XMLHandle struct { - CheckName bool - } - -ROADMAP (1 weeks): - - build encoder (1 day) - - build decoder (based off xmlParser) (1 day) - - implement xmlParser (2 days). - Look at encoding/xml for inspiration. - - integrate and TEST (1 days) - - write article and post it (1 day) - - -*/ - -// ----------- PARSER ------------------- - -type xmlTokenType uint8 - -const ( - _ xmlTokenType = iota << 1 - xmlTokenElemStart - xmlTokenElemEnd - xmlTokenAttrKey - xmlTokenAttrVal - xmlTokenText -) - -type xmlToken struct { - Type xmlTokenType - Value string - Namespace string // blank for AttrVal and Text -} - -type xmlParser struct { - r decReader - toks []xmlToken // list of tokens. - ptr int // ptr into the toks slice - done bool // nothing else to parse. r now returns EOF. -} - -func (x *xmlParser) next() (t *xmlToken) { - // once x.done, or x.ptr == len(x.toks) == 0, then return nil (to signify finish) - if !x.done && len(x.toks) == 0 { - x.nextTag() - } - // parses one element at a time (into possible many tokens) - if x.ptr < len(x.toks) { - t = &(x.toks[x.ptr]) - x.ptr++ - if x.ptr == len(x.toks) { - x.ptr = 0 - x.toks = x.toks[:0] - } - } - return -} - -// nextTag will parses the next element and fill up toks. -// It set done flag if/once EOF is reached. -func (x *xmlParser) nextTag() { - // TODO: implement. -} - -// ----------- ENCODER ------------------- - -type xmlEncDriver struct { - e *Encoder - w encWriter - h *XMLHandle - b [64]byte // scratch - bs []byte // scratch - // s jsonStack - noBuiltInTypes -} - -// ----------- DECODER ------------------- - -type xmlDecDriver struct { - d *Decoder - h *XMLHandle - r decReader // *bytesDecReader decReader - ct valueType // container type. one of unset, array or map. - bstr [8]byte // scratch used for string \UXXX parsing - b [64]byte // scratch - - // wsSkipped bool // whitespace skipped - - // s jsonStack - - noBuiltInTypes -} - -// DecodeNaked will decode into an XMLNode - -// XMLName is a value object representing a namespace-aware NAME -type XMLName struct { - Local string - Space string -} - -// XMLNode represents a "union" of the different types of XML Nodes. -// Only one of fields (Text or *Element) is set. -type XMLNode struct { - Element *Element - Text string -} - -// XMLElement is a value object representing an fully-parsed XML element. -type XMLElement struct { - Name Name - Attrs map[XMLName]string - // Children is a list of child nodes, each being a *XMLElement or string - Children []XMLNode -} - -// ----------- HANDLE ------------------- - -type XMLHandle struct { - BasicHandle - textEncodingType - - DefaultNS string - NS map[string]string // ns URI to key, for encoding - Entities map[string]string // entity representation to string, for encoding. -} - -func (h *XMLHandle) newEncDriver(e *Encoder) encDriver { - return &xmlEncDriver{e: e, w: e.w, h: h} -} - -func (h *XMLHandle) newDecDriver(d *Decoder) decDriver { - // d := xmlDecDriver{r: r.(*bytesDecReader), h: h} - hd := xmlDecDriver{d: d, r: d.r, h: h} - hd.n.bytes = d.b[:] - return &hd -} - -func (h *XMLHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { - return h.SetExt(rt, tag, &setExtWrapper{i: ext}) -} - -var _ decDriver = (*xmlDecDriver)(nil) -var _ encDriver = (*xmlEncDriver)(nil) diff --git a/vendor/github.com/ugorji/go/codec/z_all_test.go b/vendor/github.com/ugorji/go/codec/z_all_test.go deleted file mode 100644 index 364cbd7e6..000000000 --- a/vendor/github.com/ugorji/go/codec/z_all_test.go +++ /dev/null @@ -1,135 +0,0 @@ -// +build alltests -// +build go1.7 - -package codec - -// Run this using: -// go test -tags=alltests -run=Suite -coverprofile=cov.out -// go tool cover -html=cov.out -// -// Because build tags are a build time parameter, we will have to test out the -// different tags separately. -// Tags: x codecgen safe appengine notfastpath -// -// These tags should be added to alltests, e.g. -// go test '-tags=alltests x codecgen' -run=Suite -coverprofile=cov.out -// -// To run all tests before submitting code, run: -// a=( "" "safe" "codecgen" "notfastpath" "codecgen notfastpath" "codecgen safe" "safe notfastpath" ) -// for i in "${a[@]}"; do echo ">>>> TAGS: $i"; go test "-tags=alltests $i" -run=Suite; done -// -// This only works on go1.7 and above. This is when subtests and suites were supported. - -import "testing" - -// func TestMain(m *testing.M) { -// println("calling TestMain") -// // set some parameters -// exitcode := m.Run() -// os.Exit(exitcode) -// } - -func testSuite(t *testing.T, f func(t *testing.T)) { - // find . -name "*_test.go" | xargs grep -e 'flag.' | cut -d '&' -f 2 | cut -d ',' -f 1 | grep -e '^test' - // Disregard the following: testVerbose, testInitDebug, testSkipIntf, testJsonIndent (Need a test for it) - - testReinit() // so flag.Parse() is called first, and never called again - - testUseMust = false - testCanonical = false - testUseMust = false - testInternStr = false - testUseIoEncDec = false - testStructToArray = false - testWriteNoSymbols = false - testCheckCircRef = false - testJsonHTMLCharsAsIs = false - testUseReset = false - testMaxInitLen = 0 - testJsonIndent = 0 - testReinit() - t.Run("optionsFalse", f) - - testMaxInitLen = 10 - testJsonIndent = 8 - testReinit() - t.Run("initLen10-jsonSpaces", f) - - testReinit() - testMaxInitLen = 10 - testJsonIndent = -1 - testReinit() - t.Run("initLen10-jsonTabs", f) - - testCanonical = true - testUseMust = true - testInternStr = true - testUseIoEncDec = true - testStructToArray = true - testWriteNoSymbols = true - testCheckCircRef = true - testJsonHTMLCharsAsIs = true - testUseReset = true - testReinit() - t.Run("optionsTrue", f) -} - -/* -z='codec_test.go' -find . -name "$z" | xargs grep -e '^func Test' | \ - cut -d '(' -f 1 | cut -d ' ' -f 2 | \ - while read f; do echo "t.Run(\"$f\", $f)"; done -*/ - -func testCodecGroup(t *testing.T) { - // println("running testcodecsuite") - // - t.Run("TestBincCodecsTable", TestBincCodecsTable) - t.Run("TestBincCodecsMisc", TestBincCodecsMisc) - t.Run("TestBincCodecsEmbeddedPointer", TestBincCodecsEmbeddedPointer) - t.Run("TestBincStdEncIntf", TestBincStdEncIntf) - t.Run("TestBincMammoth", TestBincMammoth) - t.Run("TestSimpleCodecsTable", TestSimpleCodecsTable) - t.Run("TestSimpleCodecsMisc", TestSimpleCodecsMisc) - t.Run("TestSimpleCodecsEmbeddedPointer", TestSimpleCodecsEmbeddedPointer) - t.Run("TestSimpleStdEncIntf", TestSimpleStdEncIntf) - t.Run("TestSimpleMammoth", TestSimpleMammoth) - t.Run("TestMsgpackCodecsTable", TestMsgpackCodecsTable) - t.Run("TestMsgpackCodecsMisc", TestMsgpackCodecsMisc) - t.Run("TestMsgpackCodecsEmbeddedPointer", TestMsgpackCodecsEmbeddedPointer) - t.Run("TestMsgpackStdEncIntf", TestMsgpackStdEncIntf) - t.Run("TestMsgpackMammoth", TestMsgpackMammoth) - t.Run("TestCborCodecsTable", TestCborCodecsTable) - t.Run("TestCborCodecsMisc", TestCborCodecsMisc) - t.Run("TestCborCodecsEmbeddedPointer", TestCborCodecsEmbeddedPointer) - t.Run("TestCborMapEncodeForCanonical", TestCborMapEncodeForCanonical) - t.Run("TestCborCodecChan", TestCborCodecChan) - t.Run("TestCborStdEncIntf", TestCborStdEncIntf) - t.Run("TestCborMammoth", TestCborMammoth) - t.Run("TestJsonCodecsTable", TestJsonCodecsTable) - t.Run("TestJsonCodecsMisc", TestJsonCodecsMisc) - t.Run("TestJsonCodecsEmbeddedPointer", TestJsonCodecsEmbeddedPointer) - t.Run("TestJsonCodecChan", TestJsonCodecChan) - t.Run("TestJsonStdEncIntf", TestJsonStdEncIntf) - t.Run("TestJsonMammoth", TestJsonMammoth) - t.Run("TestJsonRaw", TestJsonRaw) - t.Run("TestBincRaw", TestBincRaw) - t.Run("TestMsgpackRaw", TestMsgpackRaw) - t.Run("TestSimpleRaw", TestSimpleRaw) - t.Run("TestCborRaw", TestCborRaw) - t.Run("TestAllEncCircularRef", TestAllEncCircularRef) - t.Run("TestAllAnonCycle", TestAllAnonCycle) - t.Run("TestBincRpcGo", TestBincRpcGo) - t.Run("TestSimpleRpcGo", TestSimpleRpcGo) - t.Run("TestMsgpackRpcGo", TestMsgpackRpcGo) - t.Run("TestCborRpcGo", TestCborRpcGo) - t.Run("TestJsonRpcGo", TestJsonRpcGo) - t.Run("TestMsgpackRpcSpec", TestMsgpackRpcSpec) - t.Run("TestBincUnderlyingType", TestBincUnderlyingType) - t.Run("TestJsonLargeInteger", TestJsonLargeInteger) - t.Run("TestJsonDecodeNonStringScalarInStringContext", TestJsonDecodeNonStringScalarInStringContext) - t.Run("TestJsonEncodeIndent", TestJsonEncodeIndent) - // -} - -func TestCodecSuite(t *testing.T) { testSuite(t, testCodecGroup) } diff --git a/vendor/golang.org/x/crypto/acme/acme_test.go b/vendor/golang.org/x/crypto/acme/acme_test.go index b44af5959..89f2efaa5 100644 --- a/vendor/golang.org/x/crypto/acme/acme_test.go +++ b/vendor/golang.org/x/crypto/acme/acme_test.go @@ -946,7 +946,7 @@ func TestNonce_add(t *testing.T) { c.addNonce(http.Header{"Replay-Nonce": {}}) c.addNonce(http.Header{"Replay-Nonce": {"nonce"}}) - nonces := map[string]struct{}{"nonce": struct{}{}} + nonces := map[string]struct{}{"nonce": {}} if !reflect.DeepEqual(c.nonces, nonces) { t.Errorf("c.nonces = %q; want %q", c.nonces, nonces) } diff --git a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go index 202fa8aff..aeb73f81a 100644 --- a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go +++ b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go @@ -241,11 +241,11 @@ func (p *hashed) Hash() []byte { n = 3 } arr[n] = '$' - n += 1 + n++ copy(arr[n:], []byte(fmt.Sprintf("%02d", p.cost))) n += 2 arr[n] = '$' - n += 1 + n++ copy(arr[n:], p.salt) n += encodedSaltSize copy(arr[n:], p.hash) diff --git a/vendor/golang.org/x/crypto/bn256/bn256.go b/vendor/golang.org/x/crypto/bn256/bn256.go index 014f8b355..ae232ac2c 100644 --- a/vendor/golang.org/x/crypto/bn256/bn256.go +++ b/vendor/golang.org/x/crypto/bn256/bn256.go @@ -49,8 +49,8 @@ func RandomG1(r io.Reader) (*big.Int, *G1, error) { return k, new(G1).ScalarBaseMult(k), nil } -func (g *G1) String() string { - return "bn256.G1" + g.p.String() +func (e *G1) String() string { + return "bn256.G1" + e.p.String() } // ScalarBaseMult sets e to g*k where g is the generator of the group and @@ -92,11 +92,11 @@ func (e *G1) Neg(a *G1) *G1 { } // Marshal converts n to a byte slice. -func (n *G1) Marshal() []byte { - n.p.MakeAffine(nil) +func (e *G1) Marshal() []byte { + e.p.MakeAffine(nil) - xBytes := new(big.Int).Mod(n.p.x, p).Bytes() - yBytes := new(big.Int).Mod(n.p.y, p).Bytes() + xBytes := new(big.Int).Mod(e.p.x, p).Bytes() + yBytes := new(big.Int).Mod(e.p.y, p).Bytes() // Each value is a 256-bit number. const numBytes = 256 / 8 @@ -166,8 +166,8 @@ func RandomG2(r io.Reader) (*big.Int, *G2, error) { return k, new(G2).ScalarBaseMult(k), nil } -func (g *G2) String() string { - return "bn256.G2" + g.p.String() +func (e *G2) String() string { + return "bn256.G2" + e.p.String() } // ScalarBaseMult sets e to g*k where g is the generator of the group and diff --git a/vendor/golang.org/x/crypto/nacl/auth/auth.go b/vendor/golang.org/x/crypto/nacl/auth/auth.go index 0835d3bf9..ec1d6ebe4 100644 --- a/vendor/golang.org/x/crypto/nacl/auth/auth.go +++ b/vendor/golang.org/x/crypto/nacl/auth/auth.go @@ -47,7 +47,7 @@ func Sum(m []byte, key *[KeySize]byte) *[Size]byte { // Verify checks that digest is a valid authenticator of message m under the // given secret key. Verify does not leak timing information. -func Verify(digest []byte, m []byte, key *[32]byte) bool { +func Verify(digest []byte, m []byte, key *[KeySize]byte) bool { if len(digest) != Size { return false } diff --git a/vendor/golang.org/x/crypto/ocsp/ocsp.go b/vendor/golang.org/x/crypto/ocsp/ocsp.go index 5e73146d7..589dfd35f 100644 --- a/vendor/golang.org/x/crypto/ocsp/ocsp.go +++ b/vendor/golang.org/x/crypto/ocsp/ocsp.go @@ -760,7 +760,7 @@ func CreateResponse(issuer, responderCert *x509.Certificate, template Response, } if template.Certificate != nil { response.Certificates = []asn1.RawValue{ - asn1.RawValue{FullBytes: template.Certificate.Raw}, + {FullBytes: template.Certificate.Raw}, } } responseDER, err := asn1.Marshal(response) diff --git a/vendor/golang.org/x/crypto/ocsp/ocsp_test.go b/vendor/golang.org/x/crypto/ocsp/ocsp_test.go index 1fadfec4c..70b19764f 100644 --- a/vendor/golang.org/x/crypto/ocsp/ocsp_test.go +++ b/vendor/golang.org/x/crypto/ocsp/ocsp_test.go @@ -218,7 +218,7 @@ func TestOCSPResponse(t *testing.T) { extensionBytes, _ := hex.DecodeString(ocspExtensionValueHex) extensions := []pkix.Extension{ - pkix.Extension{ + { Id: ocspExtensionOID, Critical: false, Value: extensionBytes, diff --git a/vendor/golang.org/x/crypto/openpgp/keys.go b/vendor/golang.org/x/crypto/openpgp/keys.go index 68b14c6ae..744e293fe 100644 --- a/vendor/golang.org/x/crypto/openpgp/keys.go +++ b/vendor/golang.org/x/crypto/openpgp/keys.go @@ -325,9 +325,8 @@ func ReadEntity(packets *packet.Reader) (*Entity, error) { if e.PrivateKey, ok = p.(*packet.PrivateKey); !ok { packets.Unread(p) return nil, errors.StructuralError("first packet was not a public/private key") - } else { - e.PrimaryKey = &e.PrivateKey.PublicKey } + e.PrimaryKey = &e.PrivateKey.PublicKey } if !e.PrimaryKey.PubKeyAlgo.CanSign() { diff --git a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go index 8c7090258..7499e3fb6 100644 --- a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go +++ b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go @@ -122,7 +122,6 @@ func (c *rc2Cipher) Encrypt(dst, src []byte) { r3 = r3 + c.k[r2&63] for j <= 40 { - // mix r0 r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) r0 = rotl16(r0, 1) @@ -151,7 +150,6 @@ func (c *rc2Cipher) Encrypt(dst, src []byte) { r3 = r3 + c.k[r2&63] for j <= 60 { - // mix r0 r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) r0 = rotl16(r0, 1) @@ -244,7 +242,6 @@ func (c *rc2Cipher) Decrypt(dst, src []byte) { r0 = r0 - c.k[r3&63] for j >= 0 { - // unmix r3 r3 = rotl16(r3, 16-5) r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) diff --git a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go index 8a49dfaf3..51a7efe50 100644 --- a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go +++ b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go @@ -11,7 +11,6 @@ import ( ) func TestEncryptDecrypt(t *testing.T) { - // TODO(dgryski): add the rest of the test vectors from the RFC var tests = []struct { key string diff --git a/vendor/golang.org/x/crypto/sha3/sha3_test.go b/vendor/golang.org/x/crypto/sha3/sha3_test.go index 312e8f907..2c8719b44 100644 --- a/vendor/golang.org/x/crypto/sha3/sha3_test.go +++ b/vendor/golang.org/x/crypto/sha3/sha3_test.go @@ -202,7 +202,7 @@ func TestSqueezing(t *testing.T) { d1 := newShakeHash() d1.Write([]byte(testString)) var multiple []byte - for _ = range ref { + for range ref { one := make([]byte, 1) d1.Read(one) multiple = append(multiple, one...) diff --git a/vendor/golang.org/x/crypto/ssh/agent/client.go b/vendor/golang.org/x/crypto/ssh/agent/client.go index dce7682fa..acb5ad80e 100644 --- a/vendor/golang.org/x/crypto/ssh/agent/client.go +++ b/vendor/golang.org/x/crypto/ssh/agent/client.go @@ -98,7 +98,7 @@ const ( agentAddIdentity = 17 agentRemoveIdentity = 18 agentRemoveAllIdentities = 19 - agentAddIdConstrained = 25 + agentAddIDConstrained = 25 // 3.3 Key-type independent requests from client to agent agentAddSmartcardKey = 20 @@ -515,7 +515,7 @@ func (c *client) insertKey(s interface{}, comment string, constraints []byte) er // if constraints are present then the message type needs to be changed. if len(constraints) != 0 { - req[0] = agentAddIdConstrained + req[0] = agentAddIDConstrained } resp, err := c.call(req) @@ -577,11 +577,11 @@ func (c *client) Add(key AddedKey) error { constraints = append(constraints, agentConstrainConfirm) } - if cert := key.Certificate; cert == nil { + cert := key.Certificate + if cert == nil { return c.insertKey(key.PrivateKey, key.Comment, constraints) - } else { - return c.insertCert(key.PrivateKey, cert, key.Comment, constraints) } + return c.insertCert(key.PrivateKey, cert, key.Comment, constraints) } func (c *client) insertCert(s interface{}, cert *ssh.Certificate, comment string, constraints []byte) error { @@ -633,7 +633,7 @@ func (c *client) insertCert(s interface{}, cert *ssh.Certificate, comment string // if constraints are present then the message type needs to be changed. if len(constraints) != 0 { - req[0] = agentAddIdConstrained + req[0] = agentAddIDConstrained } signer, err := ssh.NewSignerFromKey(s) diff --git a/vendor/golang.org/x/crypto/ssh/agent/server.go b/vendor/golang.org/x/crypto/ssh/agent/server.go index 321e48a26..2e4692cbd 100644 --- a/vendor/golang.org/x/crypto/ssh/agent/server.go +++ b/vendor/golang.org/x/crypto/ssh/agent/server.go @@ -148,7 +148,7 @@ func (s *server) processRequest(data []byte) (interface{}, error) { } return rep, nil - case agentAddIdConstrained, agentAddIdentity: + case agentAddIDConstrained, agentAddIdentity: return nil, s.insertIdentity(data) } diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go index b1f022078..5c9fadcee 100644 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ b/vendor/golang.org/x/crypto/ssh/certs.go @@ -343,7 +343,7 @@ func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { return fmt.Errorf("ssh: certicate serial %d revoked", cert.Serial) } - for opt, _ := range cert.CriticalOptions { + for opt := range cert.CriticalOptions { // sourceAddressCriticalOption will be enforced by // serverAuthenticate if opt == sourceAddressCriticalOption { diff --git a/vendor/golang.org/x/crypto/ssh/channel.go b/vendor/golang.org/x/crypto/ssh/channel.go index 195530ea0..c0834c00d 100644 --- a/vendor/golang.org/x/crypto/ssh/channel.go +++ b/vendor/golang.org/x/crypto/ssh/channel.go @@ -205,32 +205,32 @@ type channel struct { // writePacket sends a packet. If the packet is a channel close, it updates // sentClose. This method takes the lock c.writeMu. -func (c *channel) writePacket(packet []byte) error { - c.writeMu.Lock() - if c.sentClose { - c.writeMu.Unlock() +func (ch *channel) writePacket(packet []byte) error { + ch.writeMu.Lock() + if ch.sentClose { + ch.writeMu.Unlock() return io.EOF } - c.sentClose = (packet[0] == msgChannelClose) - err := c.mux.conn.writePacket(packet) - c.writeMu.Unlock() + ch.sentClose = (packet[0] == msgChannelClose) + err := ch.mux.conn.writePacket(packet) + ch.writeMu.Unlock() return err } -func (c *channel) sendMessage(msg interface{}) error { +func (ch *channel) sendMessage(msg interface{}) error { if debugMux { - log.Printf("send(%d): %#v", c.mux.chanList.offset, msg) + log.Printf("send(%d): %#v", ch.mux.chanList.offset, msg) } p := Marshal(msg) - binary.BigEndian.PutUint32(p[1:], c.remoteId) - return c.writePacket(p) + binary.BigEndian.PutUint32(p[1:], ch.remoteId) + return ch.writePacket(p) } // WriteExtended writes data to a specific extended stream. These streams are // used, for example, for stderr. -func (c *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) { - if c.sentEOF { +func (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) { + if ch.sentEOF { return 0, io.EOF } // 1 byte message type, 4 bytes remoteId, 4 bytes data length @@ -241,16 +241,16 @@ func (c *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err er opCode = msgChannelExtendedData } - c.writeMu.Lock() - packet := c.packetPool[extendedCode] + ch.writeMu.Lock() + packet := ch.packetPool[extendedCode] // We don't remove the buffer from packetPool, so // WriteExtended calls from different goroutines will be // flagged as errors by the race detector. - c.writeMu.Unlock() + ch.writeMu.Unlock() for len(data) > 0 { - space := min(c.maxRemotePayload, len(data)) - if space, err = c.remoteWin.reserve(space); err != nil { + space := min(ch.maxRemotePayload, len(data)) + if space, err = ch.remoteWin.reserve(space); err != nil { return n, err } if want := headerLength + space; uint32(cap(packet)) < want { @@ -262,13 +262,13 @@ func (c *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err er todo := data[:space] packet[0] = opCode - binary.BigEndian.PutUint32(packet[1:], c.remoteId) + binary.BigEndian.PutUint32(packet[1:], ch.remoteId) if extendedCode > 0 { binary.BigEndian.PutUint32(packet[5:], uint32(extendedCode)) } binary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo))) copy(packet[headerLength:], todo) - if err = c.writePacket(packet); err != nil { + if err = ch.writePacket(packet); err != nil { return n, err } @@ -276,14 +276,14 @@ func (c *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err er data = data[len(todo):] } - c.writeMu.Lock() - c.packetPool[extendedCode] = packet - c.writeMu.Unlock() + ch.writeMu.Lock() + ch.packetPool[extendedCode] = packet + ch.writeMu.Unlock() return n, err } -func (c *channel) handleData(packet []byte) error { +func (ch *channel) handleData(packet []byte) error { headerLen := 9 isExtendedData := packet[0] == msgChannelExtendedData if isExtendedData { @@ -303,7 +303,7 @@ func (c *channel) handleData(packet []byte) error { if length == 0 { return nil } - if length > c.maxIncomingPayload { + if length > ch.maxIncomingPayload { // TODO(hanwen): should send Disconnect? return errors.New("ssh: incoming packet exceeds maximum payload size") } @@ -313,21 +313,21 @@ func (c *channel) handleData(packet []byte) error { return errors.New("ssh: wrong packet length") } - c.windowMu.Lock() - if c.myWindow < length { - c.windowMu.Unlock() + ch.windowMu.Lock() + if ch.myWindow < length { + ch.windowMu.Unlock() // TODO(hanwen): should send Disconnect with reason? return errors.New("ssh: remote side wrote too much") } - c.myWindow -= length - c.windowMu.Unlock() + ch.myWindow -= length + ch.windowMu.Unlock() if extended == 1 { - c.extPending.write(data) + ch.extPending.write(data) } else if extended > 0 { // discard other extended data. } else { - c.pending.write(data) + ch.pending.write(data) } return nil } @@ -384,31 +384,31 @@ func (c *channel) close() { // responseMessageReceived is called when a success or failure message is // received on a channel to check that such a message is reasonable for the // given channel. -func (c *channel) responseMessageReceived() error { - if c.direction == channelInbound { +func (ch *channel) responseMessageReceived() error { + if ch.direction == channelInbound { return errors.New("ssh: channel response message received on inbound channel") } - if c.decided { + if ch.decided { return errors.New("ssh: duplicate response received for channel") } - c.decided = true + ch.decided = true return nil } -func (c *channel) handlePacket(packet []byte) error { +func (ch *channel) handlePacket(packet []byte) error { switch packet[0] { case msgChannelData, msgChannelExtendedData: - return c.handleData(packet) + return ch.handleData(packet) case msgChannelClose: - c.sendMessage(channelCloseMsg{PeersId: c.remoteId}) - c.mux.chanList.remove(c.localId) - c.close() + ch.sendMessage(channelCloseMsg{PeersID: ch.remoteId}) + ch.mux.chanList.remove(ch.localId) + ch.close() return nil case msgChannelEOF: // RFC 4254 is mute on how EOF affects dataExt messages but // it is logical to signal EOF at the same time. - c.extPending.eof() - c.pending.eof() + ch.extPending.eof() + ch.pending.eof() return nil } @@ -419,24 +419,24 @@ func (c *channel) handlePacket(packet []byte) error { switch msg := decoded.(type) { case *channelOpenFailureMsg: - if err := c.responseMessageReceived(); err != nil { + if err := ch.responseMessageReceived(); err != nil { return err } - c.mux.chanList.remove(msg.PeersId) - c.msg <- msg + ch.mux.chanList.remove(msg.PeersID) + ch.msg <- msg case *channelOpenConfirmMsg: - if err := c.responseMessageReceived(); err != nil { + if err := ch.responseMessageReceived(); err != nil { return err } if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { return fmt.Errorf("ssh: invalid MaxPacketSize %d from peer", msg.MaxPacketSize) } - c.remoteId = msg.MyId - c.maxRemotePayload = msg.MaxPacketSize - c.remoteWin.add(msg.MyWindow) - c.msg <- msg + ch.remoteId = msg.MyID + ch.maxRemotePayload = msg.MaxPacketSize + ch.remoteWin.add(msg.MyWindow) + ch.msg <- msg case *windowAdjustMsg: - if !c.remoteWin.add(msg.AdditionalBytes) { + if !ch.remoteWin.add(msg.AdditionalBytes) { return fmt.Errorf("ssh: invalid window update for %d bytes", msg.AdditionalBytes) } case *channelRequestMsg: @@ -444,12 +444,12 @@ func (c *channel) handlePacket(packet []byte) error { Type: msg.Request, WantReply: msg.WantReply, Payload: msg.RequestSpecificData, - ch: c, + ch: ch, } - c.incomingRequests <- &req + ch.incomingRequests <- &req default: - c.msg <- msg + ch.msg <- msg } return nil } @@ -488,23 +488,23 @@ func (e *extChannel) Read(data []byte) (n int, err error) { return e.ch.ReadExtended(data, e.code) } -func (c *channel) Accept() (Channel, <-chan *Request, error) { - if c.decided { +func (ch *channel) Accept() (Channel, <-chan *Request, error) { + if ch.decided { return nil, nil, errDecidedAlready } - c.maxIncomingPayload = channelMaxPacket + ch.maxIncomingPayload = channelMaxPacket confirm := channelOpenConfirmMsg{ - PeersId: c.remoteId, - MyId: c.localId, - MyWindow: c.myWindow, - MaxPacketSize: c.maxIncomingPayload, + PeersID: ch.remoteId, + MyID: ch.localId, + MyWindow: ch.myWindow, + MaxPacketSize: ch.maxIncomingPayload, } - c.decided = true - if err := c.sendMessage(confirm); err != nil { + ch.decided = true + if err := ch.sendMessage(confirm); err != nil { return nil, nil, err } - return c, c.incomingRequests, nil + return ch, ch.incomingRequests, nil } func (ch *channel) Reject(reason RejectionReason, message string) error { @@ -512,7 +512,7 @@ func (ch *channel) Reject(reason RejectionReason, message string) error { return errDecidedAlready } reject := channelOpenFailureMsg{ - PeersId: ch.remoteId, + PeersID: ch.remoteId, Reason: reason, Message: message, Language: "en", @@ -541,7 +541,7 @@ func (ch *channel) CloseWrite() error { } ch.sentEOF = true return ch.sendMessage(channelEOFMsg{ - PeersId: ch.remoteId}) + PeersID: ch.remoteId}) } func (ch *channel) Close() error { @@ -550,7 +550,7 @@ func (ch *channel) Close() error { } return ch.sendMessage(channelCloseMsg{ - PeersId: ch.remoteId}) + PeersID: ch.remoteId}) } // Extended returns an io.ReadWriter that sends and receives data on the given, @@ -577,7 +577,7 @@ func (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (boo } msg := channelRequestMsg{ - PeersId: ch.remoteId, + PeersID: ch.remoteId, Request: name, WantReply: wantReply, RequestSpecificData: payload, @@ -614,11 +614,11 @@ func (ch *channel) ackRequest(ok bool) error { var msg interface{} if !ok { msg = channelRequestFailureMsg{ - PeersId: ch.remoteId, + PeersID: ch.remoteId, } } else { msg = channelRequestSuccessMsg{ - PeersId: ch.remoteId, + PeersID: ch.remoteId, } } return ch.sendMessage(msg) diff --git a/vendor/golang.org/x/crypto/ssh/cipher.go b/vendor/golang.org/x/crypto/ssh/cipher.go index aed2b1f01..e67c5e0aa 100644 --- a/vendor/golang.org/x/crypto/ssh/cipher.go +++ b/vendor/golang.org/x/crypto/ssh/cipher.go @@ -372,7 +372,7 @@ func (c *gcmCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { } length := binary.BigEndian.Uint32(c.prefix[:]) if length > maxPacket { - return nil, errors.New("ssh: max packet length exceeded.") + return nil, errors.New("ssh: max packet length exceeded") } if cap(c.buf) < int(length+gcmTagSize) { @@ -548,11 +548,11 @@ func (c *cbcCipher) readPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) c.packetData = c.packetData[:entirePacketSize] } - if n, err := io.ReadFull(r, c.packetData[firstBlockLength:]); err != nil { + n, err := io.ReadFull(r, c.packetData[firstBlockLength:]) + if err != nil { return nil, err - } else { - c.oracleCamouflage -= uint32(n) } + c.oracleCamouflage -= uint32(n) remainingCrypted := c.packetData[firstBlockLength:macStart] c.decrypter.CryptBlocks(remainingCrypted, remainingCrypted) diff --git a/vendor/golang.org/x/crypto/ssh/client_test.go b/vendor/golang.org/x/crypto/ssh/client_test.go index 9dbe04222..ef95069ef 100644 --- a/vendor/golang.org/x/crypto/ssh/client_test.go +++ b/vendor/golang.org/x/crypto/ssh/client_test.go @@ -89,7 +89,9 @@ func TestBannerCallback(t *testing.T) { defer c2.Close() serverConf := &ServerConfig{ - NoClientAuth: true, + PasswordCallback: func(conn ConnMetadata, password []byte) (*Permissions, error) { + return &Permissions{}, nil + }, BannerCallback: func(conn ConnMetadata) string { return "Hello World" }, @@ -98,10 +100,15 @@ func TestBannerCallback(t *testing.T) { go NewServerConn(c1, serverConf) var receivedBanner string + var bannerCount int clientConf := ClientConfig{ + Auth: []AuthMethod{ + Password("123"), + }, User: "user", HostKeyCallback: InsecureIgnoreHostKey(), BannerCallback: func(message string) error { + bannerCount++ receivedBanner = message return nil }, @@ -112,6 +119,10 @@ func TestBannerCallback(t *testing.T) { t.Fatal(err) } + if bannerCount != 1 { + t.Errorf("got %d banners; want 1", bannerCount) + } + expected := "Hello World" if receivedBanner != expected { t.Fatalf("got %s; want %s", receivedBanner, expected) diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index dc39e4d23..135b4edd7 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -242,7 +242,7 @@ func (c *Config) SetDefaults() { // buildDataSignedForAuth returns the data that is signed in order to prove // possession of a private key. See RFC 4252, section 7. -func buildDataSignedForAuth(sessionId []byte, req userAuthRequestMsg, algo, pubKey []byte) []byte { +func buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo, pubKey []byte) []byte { data := struct { Session []byte Type byte @@ -253,7 +253,7 @@ func buildDataSignedForAuth(sessionId []byte, req userAuthRequestMsg, algo, pubK Algo []byte PubKey []byte }{ - sessionId, + sessionID, msgUserAuthRequest, req.User, req.Service, diff --git a/vendor/golang.org/x/crypto/ssh/kex.go b/vendor/golang.org/x/crypto/ssh/kex.go index f91c2770e..f34bcc013 100644 --- a/vendor/golang.org/x/crypto/ssh/kex.go +++ b/vendor/golang.org/x/crypto/ssh/kex.go @@ -119,7 +119,7 @@ func (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handsha return nil, err } - kInt, err := group.diffieHellman(kexDHReply.Y, x) + ki, err := group.diffieHellman(kexDHReply.Y, x) if err != nil { return nil, err } @@ -129,8 +129,8 @@ func (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handsha writeString(h, kexDHReply.HostKey) writeInt(h, X) writeInt(h, kexDHReply.Y) - K := make([]byte, intLength(kInt)) - marshalInt(K, kInt) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) h.Write(K) return &kexResult{ @@ -164,7 +164,7 @@ func (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handsha } Y := new(big.Int).Exp(group.g, y, group.p) - kInt, err := group.diffieHellman(kexDHInit.X, y) + ki, err := group.diffieHellman(kexDHInit.X, y) if err != nil { return nil, err } @@ -177,8 +177,8 @@ func (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handsha writeInt(h, kexDHInit.X) writeInt(h, Y) - K := make([]byte, intLength(kInt)) - marshalInt(K, kInt) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) h.Write(K) H := h.Sum(nil) @@ -462,9 +462,9 @@ func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handsh writeString(h, kp.pub[:]) writeString(h, reply.EphemeralPubKey) - kInt := new(big.Int).SetBytes(secret[:]) - K := make([]byte, intLength(kInt)) - marshalInt(K, kInt) + ki := new(big.Int).SetBytes(secret[:]) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) h.Write(K) return &kexResult{ @@ -510,9 +510,9 @@ func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handsh writeString(h, kexInit.ClientPubKey) writeString(h, kp.pub[:]) - kInt := new(big.Int).SetBytes(secret[:]) - K := make([]byte, intLength(kInt)) - marshalInt(K, kInt) + ki := new(big.Int).SetBytes(secret[:]) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) h.Write(K) H := h.Sum(nil) diff --git a/vendor/golang.org/x/crypto/ssh/keys.go b/vendor/golang.org/x/crypto/ssh/keys.go index b682c1741..dadf41ab7 100644 --- a/vendor/golang.org/x/crypto/ssh/keys.go +++ b/vendor/golang.org/x/crypto/ssh/keys.go @@ -363,7 +363,7 @@ func (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey { type dsaPublicKey dsa.PublicKey -func (r *dsaPublicKey) Type() string { +func (k *dsaPublicKey) Type() string { return "ssh-dss" } @@ -481,12 +481,12 @@ func (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) { type ecdsaPublicKey ecdsa.PublicKey -func (key *ecdsaPublicKey) Type() string { - return "ecdsa-sha2-" + key.nistID() +func (k *ecdsaPublicKey) Type() string { + return "ecdsa-sha2-" + k.nistID() } -func (key *ecdsaPublicKey) nistID() string { - switch key.Params().BitSize { +func (k *ecdsaPublicKey) nistID() string { + switch k.Params().BitSize { case 256: return "nistp256" case 384: @@ -499,7 +499,7 @@ func (key *ecdsaPublicKey) nistID() string { type ed25519PublicKey ed25519.PublicKey -func (key ed25519PublicKey) Type() string { +func (k ed25519PublicKey) Type() string { return KeyAlgoED25519 } @@ -518,23 +518,23 @@ func parseED25519(in []byte) (out PublicKey, rest []byte, err error) { return (ed25519PublicKey)(key), w.Rest, nil } -func (key ed25519PublicKey) Marshal() []byte { +func (k ed25519PublicKey) Marshal() []byte { w := struct { Name string KeyBytes []byte }{ KeyAlgoED25519, - []byte(key), + []byte(k), } return Marshal(&w) } -func (key ed25519PublicKey) Verify(b []byte, sig *Signature) error { - if sig.Format != key.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, key.Type()) +func (k ed25519PublicKey) Verify(b []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) } - edKey := (ed25519.PublicKey)(key) + edKey := (ed25519.PublicKey)(k) if ok := ed25519.Verify(edKey, b, sig.Blob); !ok { return errors.New("ssh: signature did not verify") } @@ -595,9 +595,9 @@ func parseECDSA(in []byte) (out PublicKey, rest []byte, err error) { return (*ecdsaPublicKey)(key), w.Rest, nil } -func (key *ecdsaPublicKey) Marshal() []byte { +func (k *ecdsaPublicKey) Marshal() []byte { // See RFC 5656, section 3.1. - keyBytes := elliptic.Marshal(key.Curve, key.X, key.Y) + keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) // ECDSA publickey struct layout should match the struct used by // parseECDSACert in the x/crypto/ssh/agent package. w := struct { @@ -605,20 +605,20 @@ func (key *ecdsaPublicKey) Marshal() []byte { ID string Key []byte }{ - key.Type(), - key.nistID(), + k.Type(), + k.nistID(), keyBytes, } return Marshal(&w) } -func (key *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != key.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, key.Type()) +func (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) } - h := ecHash(key.Curve).New() + h := ecHash(k.Curve).New() h.Write(data) digest := h.Sum(nil) @@ -635,7 +635,7 @@ func (key *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { return err } - if ecdsa.Verify((*ecdsa.PublicKey)(key), digest, ecSig.R, ecSig.S) { + if ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) { return nil } return errors.New("ssh: signature did not verify") @@ -758,7 +758,7 @@ func NewPublicKey(key interface{}) (PublicKey, error) { return (*rsaPublicKey)(key), nil case *ecdsa.PublicKey: if !supportedEllipticCurve(key.Curve) { - return nil, errors.New("ssh: only P-256, P-384 and P-521 EC keys are supported.") + return nil, errors.New("ssh: only P-256, P-384 and P-521 EC keys are supported") } return (*ecdsaPublicKey)(key), nil case *dsa.PublicKey: diff --git a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go index ea92b2983..448fc07f8 100644 --- a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go +++ b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go @@ -108,8 +108,8 @@ func wildcardMatch(pat []byte, str []byte) bool { } } -func (l *hostPattern) match(a addr) bool { - return wildcardMatch([]byte(l.addr.host), []byte(a.host)) && l.addr.port == a.port +func (p *hostPattern) match(a addr) bool { + return wildcardMatch([]byte(p.addr.host), []byte(a.host)) && p.addr.port == a.port } type keyDBLine struct { diff --git a/vendor/golang.org/x/crypto/ssh/messages.go b/vendor/golang.org/x/crypto/ssh/messages.go index c96e1bec5..08d281173 100644 --- a/vendor/golang.org/x/crypto/ssh/messages.go +++ b/vendor/golang.org/x/crypto/ssh/messages.go @@ -162,7 +162,7 @@ const msgChannelOpen = 90 type channelOpenMsg struct { ChanType string `sshtype:"90"` - PeersId uint32 + PeersID uint32 PeersWindow uint32 MaxPacketSize uint32 TypeSpecificData []byte `ssh:"rest"` @@ -173,7 +173,7 @@ const msgChannelData = 94 // Used for debug print outs of packets. type channelDataMsg struct { - PeersId uint32 `sshtype:"94"` + PeersID uint32 `sshtype:"94"` Length uint32 Rest []byte `ssh:"rest"` } @@ -182,8 +182,8 @@ type channelDataMsg struct { const msgChannelOpenConfirm = 91 type channelOpenConfirmMsg struct { - PeersId uint32 `sshtype:"91"` - MyId uint32 + PeersID uint32 `sshtype:"91"` + MyID uint32 MyWindow uint32 MaxPacketSize uint32 TypeSpecificData []byte `ssh:"rest"` @@ -193,7 +193,7 @@ type channelOpenConfirmMsg struct { const msgChannelOpenFailure = 92 type channelOpenFailureMsg struct { - PeersId uint32 `sshtype:"92"` + PeersID uint32 `sshtype:"92"` Reason RejectionReason Message string Language string @@ -202,7 +202,7 @@ type channelOpenFailureMsg struct { const msgChannelRequest = 98 type channelRequestMsg struct { - PeersId uint32 `sshtype:"98"` + PeersID uint32 `sshtype:"98"` Request string WantReply bool RequestSpecificData []byte `ssh:"rest"` @@ -212,28 +212,28 @@ type channelRequestMsg struct { const msgChannelSuccess = 99 type channelRequestSuccessMsg struct { - PeersId uint32 `sshtype:"99"` + PeersID uint32 `sshtype:"99"` } // See RFC 4254, section 5.4. const msgChannelFailure = 100 type channelRequestFailureMsg struct { - PeersId uint32 `sshtype:"100"` + PeersID uint32 `sshtype:"100"` } // See RFC 4254, section 5.3 const msgChannelClose = 97 type channelCloseMsg struct { - PeersId uint32 `sshtype:"97"` + PeersID uint32 `sshtype:"97"` } // See RFC 4254, section 5.3 const msgChannelEOF = 96 type channelEOFMsg struct { - PeersId uint32 `sshtype:"96"` + PeersID uint32 `sshtype:"96"` } // See RFC 4254, section 4 @@ -263,7 +263,7 @@ type globalRequestFailureMsg struct { const msgChannelWindowAdjust = 93 type windowAdjustMsg struct { - PeersId uint32 `sshtype:"93"` + PeersID uint32 `sshtype:"93"` AdditionalBytes uint32 } diff --git a/vendor/golang.org/x/crypto/ssh/mux.go b/vendor/golang.org/x/crypto/ssh/mux.go index 27a527c10..f19016270 100644 --- a/vendor/golang.org/x/crypto/ssh/mux.go +++ b/vendor/golang.org/x/crypto/ssh/mux.go @@ -278,7 +278,7 @@ func (m *mux) handleChannelOpen(packet []byte) error { if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { failMsg := channelOpenFailureMsg{ - PeersId: msg.PeersId, + PeersID: msg.PeersID, Reason: ConnectionFailed, Message: "invalid request", Language: "en_US.UTF-8", @@ -287,7 +287,7 @@ func (m *mux) handleChannelOpen(packet []byte) error { } c := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData) - c.remoteId = msg.PeersId + c.remoteId = msg.PeersID c.maxRemotePayload = msg.MaxPacketSize c.remoteWin.add(msg.PeersWindow) m.incomingChannels <- c @@ -313,7 +313,7 @@ func (m *mux) openChannel(chanType string, extra []byte) (*channel, error) { PeersWindow: ch.myWindow, MaxPacketSize: ch.maxIncomingPayload, TypeSpecificData: extra, - PeersId: ch.localId, + PeersID: ch.localId, } if err := m.sendMessage(open); err != nil { return nil, err diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index 148d2cb24..d4df91603 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -316,6 +316,7 @@ func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, err authFailures := 0 var authErrs []error + var displayedBanner bool userAuthLoop: for { @@ -348,7 +349,8 @@ userAuthLoop: s.user = userAuthReq.User - if authFailures == 0 && config.BannerCallback != nil { + if !displayedBanner && config.BannerCallback != nil { + displayedBanner = true msg := config.BannerCallback(s) if msg != "" { bannerMsg := &userAuthBannerMsg{ diff --git a/vendor/golang.org/x/crypto/ssh/session.go b/vendor/golang.org/x/crypto/ssh/session.go index cc06e03f5..d3321f6b7 100644 --- a/vendor/golang.org/x/crypto/ssh/session.go +++ b/vendor/golang.org/x/crypto/ssh/session.go @@ -406,7 +406,7 @@ func (s *Session) Wait() error { s.stdinPipeWriter.Close() } var copyError error - for _ = range s.copyFuncs { + for range s.copyFuncs { if err := <-s.errors; err != nil && copyError == nil { copyError = err } diff --git a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go index 18379a935..9a887598f 100644 --- a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go +++ b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go @@ -617,7 +617,7 @@ func writeWithCRLF(w io.Writer, buf []byte) (n int, err error) { if _, err = w.Write(crlf); err != nil { return n, err } - n += 1 + n++ buf = buf[1:] } } diff --git a/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go b/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go index 60979ccd0..92944f3b4 100644 --- a/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go +++ b/vendor/golang.org/x/crypto/ssh/terminal/util_windows.go @@ -17,6 +17,8 @@ package terminal import ( + "os" + "golang.org/x/sys/windows" ) @@ -71,13 +73,6 @@ func GetSize(fd int) (width, height int, err error) { return int(info.Size.X), int(info.Size.Y), nil } -// passwordReader is an io.Reader that reads from a specific Windows HANDLE. -type passwordReader int - -func (r passwordReader) Read(buf []byte) (int, error) { - return windows.Read(windows.Handle(r), buf) -} - // ReadPassword reads a line of input from a terminal without local echo. This // is commonly used for inputting passwords and other sensitive data. The slice // returned does not include the \n. @@ -98,5 +93,5 @@ func ReadPassword(fd int) ([]byte, error) { windows.SetConsoleMode(windows.Handle(fd), old) }() - return readPasswordLine(passwordReader(fd)) + return readPasswordLine(os.NewFile(uintptr(fd), "stdin")) } diff --git a/vendor/golang.org/x/crypto/ssh/test/banner_test.go b/vendor/golang.org/x/crypto/ssh/test/banner_test.go index f1ad4697c..d3b21ac76 100644 --- a/vendor/golang.org/x/crypto/ssh/test/banner_test.go +++ b/vendor/golang.org/x/crypto/ssh/test/banner_test.go @@ -8,7 +8,6 @@ package test import ( "testing" - ) func TestBannerCallbackAgainstOpenSSH(t *testing.T) { diff --git a/vendor/golang.org/x/crypto/ssh/test/doc.go b/vendor/golang.org/x/crypto/ssh/test/doc.go index 3f9b3346d..198f0ca1e 100644 --- a/vendor/golang.org/x/crypto/ssh/test/doc.go +++ b/vendor/golang.org/x/crypto/ssh/test/doc.go @@ -2,6 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// This package contains integration tests for the +// Package test contains integration tests for the // golang.org/x/crypto/ssh package. package test // import "golang.org/x/crypto/ssh/test" diff --git a/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go b/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go index 6b1e0fff1..15b879d35 100644 --- a/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go +++ b/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go @@ -25,7 +25,7 @@ import ( "golang.org/x/crypto/ssh/testdata" ) -const sshd_config = ` +const sshdConfig = ` Protocol 2 Banner {{.Dir}}/banner HostKey {{.Dir}}/id_rsa @@ -51,7 +51,7 @@ HostbasedAuthentication no PubkeyAcceptedKeyTypes=* ` -var configTmpl = template.Must(template.New("").Parse(sshd_config)) +var configTmpl = template.Must(template.New("").Parse(sshdConfig)) type server struct { t *testing.T @@ -271,7 +271,7 @@ func newServer(t *testing.T) *server { } var authkeys bytes.Buffer - for k, _ := range testdata.PEMBytes { + for k := range testdata.PEMBytes { authkeys.Write(ssh.MarshalAuthorizedKey(testPublicKeys[k])) } writeFile(filepath.Join(dir, "authorized_keys"), authkeys.Bytes()) diff --git a/vendor/golang.org/x/crypto/ssh/transport.go b/vendor/golang.org/x/crypto/ssh/transport.go index ab2b88765..01150eb89 100644 --- a/vendor/golang.org/x/crypto/ssh/transport.go +++ b/vendor/golang.org/x/crypto/ssh/transport.go @@ -76,17 +76,17 @@ type connectionState struct { // both directions are triggered by reading and writing a msgNewKey packet // respectively. func (t *transport) prepareKeyChange(algs *algorithms, kexResult *kexResult) error { - if ciph, err := newPacketCipher(t.reader.dir, algs.r, kexResult); err != nil { + ciph, err := newPacketCipher(t.reader.dir, algs.r, kexResult) + if err != nil { return err - } else { - t.reader.pendingKeyChange <- ciph } + t.reader.pendingKeyChange <- ciph - if ciph, err := newPacketCipher(t.writer.dir, algs.w, kexResult); err != nil { + ciph, err = newPacketCipher(t.writer.dir, algs.w, kexResult) + if err != nil { return err - } else { - t.writer.pendingKeyChange <- ciph } + t.writer.pendingKeyChange <- ciph return nil } @@ -139,7 +139,7 @@ func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) { case cipher := <-s.pendingKeyChange: s.packetCipher = cipher default: - return nil, errors.New("ssh: got bogus newkeys message.") + return nil, errors.New("ssh: got bogus newkeys message") } case msgDisconnect: diff --git a/vendor/golang.org/x/crypto/tea/cipher.go b/vendor/golang.org/x/crypto/tea/cipher.go index 9c13d12a2..ce223b2c2 100644 --- a/vendor/golang.org/x/crypto/tea/cipher.go +++ b/vendor/golang.org/x/crypto/tea/cipher.go @@ -5,7 +5,6 @@ // Package tea implements the TEA algorithm, as defined in Needham and // Wheeler's 1994 technical report, “TEA, a Tiny Encryption Algorithm”. See // http://www.cix.co.uk/~klockstone/tea.pdf for details. - package tea import ( diff --git a/vendor/golang.org/x/crypto/xtea/cipher.go b/vendor/golang.org/x/crypto/xtea/cipher.go index 108b42635..66ea0df16 100644 --- a/vendor/golang.org/x/crypto/xtea/cipher.go +++ b/vendor/golang.org/x/crypto/xtea/cipher.go @@ -69,7 +69,7 @@ func initCipher(c *Cipher, key []byte) { // Precalculate the table const delta = 0x9E3779B9 - var sum uint32 = 0 + var sum uint32 // Two rounds of XTEA applied per loop for i := 0; i < numRounds; { diff --git a/vendor/golang.org/x/net/README b/vendor/golang.org/x/net/README deleted file mode 100644 index 6b13d8e50..000000000 --- a/vendor/golang.org/x/net/README +++ /dev/null @@ -1,3 +0,0 @@ -This repository holds supplementary Go networking libraries. - -To submit changes to this repository, see http://golang.org/doc/contribute.html. diff --git a/vendor/golang.org/x/net/README.md b/vendor/golang.org/x/net/README.md new file mode 100644 index 000000000..00a9b6eb2 --- /dev/null +++ b/vendor/golang.org/x/net/README.md @@ -0,0 +1,16 @@ +# Go Networking + +This repository holds supplementary Go networking libraries. + +## Download/Install + +The easiest way to install is to run `go get -u golang.org/x/net`. You can +also manually git clone the repository to `$GOPATH/src/golang.org/x/net`. + +## Report Issues / Send Patches + +This repository uses Gerrit for code changes. To learn how to submit +changes to this repository, see https://golang.org/doc/contribute.html. +The main issue tracker for the net repository is located at +https://github.com/golang/go/issues. Prefix your issue with "x/net:" in the +subject line, so it is easy to find. diff --git a/vendor/golang.org/x/net/context/context.go b/vendor/golang.org/x/net/context/context.go index d3681ab42..a3c021d3f 100644 --- a/vendor/golang.org/x/net/context/context.go +++ b/vendor/golang.org/x/net/context/context.go @@ -5,6 +5,8 @@ // Package context defines the Context type, which carries deadlines, // cancelation signals, and other request-scoped values across API boundaries // and between processes. +// As of Go 1.7 this package is available in the standard library under the +// name context. https://golang.org/pkg/context. // // Incoming requests to a server should create a Context, and outgoing calls to // servers should accept a Context. The chain of function calls between must diff --git a/vendor/golang.org/x/net/dns/dnsmessage/message.go b/vendor/golang.org/x/net/dns/dnsmessage/message.go index 19b260dea..c7244b782 100644 --- a/vendor/golang.org/x/net/dns/dnsmessage/message.go +++ b/vendor/golang.org/x/net/dns/dnsmessage/message.go @@ -789,6 +789,12 @@ func (m *Message) Unpack(msg []byte) error { // Pack packs a full Message. func (m *Message) Pack() ([]byte, error) { + return m.AppendPack(make([]byte, 0, packStartingCap)) +} + +// AppendPack is like Pack but appends the full Message to b and returns the +// extended buffer. +func (m *Message) AppendPack(b []byte) ([]byte, error) { // Validate the lengths. It is very unlikely that anyone will try to // pack more than 65535 of any particular type, but it is possible and // we should fail gracefully. @@ -813,9 +819,7 @@ func (m *Message) Pack() ([]byte, error) { h.authorities = uint16(len(m.Authorities)) h.additionals = uint16(len(m.Additionals)) - msg := make([]byte, 0, packStartingCap) - - msg = h.pack(msg) + msg := h.pack(b) // RFC 1035 allows (but does not require) compression for packing. RFC // 1035 requires unpacking implementations to support compression, so diff --git a/vendor/golang.org/x/net/dns/dnsmessage/message_test.go b/vendor/golang.org/x/net/dns/dnsmessage/message_test.go index 9295d36ce..2bb763420 100644 --- a/vendor/golang.org/x/net/dns/dnsmessage/message_test.go +++ b/vendor/golang.org/x/net/dns/dnsmessage/message_test.go @@ -852,6 +852,31 @@ func smallTestMsg() Message { } } +func BenchmarkPack(b *testing.B) { + msg := largeTestMsg() + + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + if _, err := msg.Pack(); err != nil { + b.Fatal(err) + } + } +} + +func BenchmarkAppendPack(b *testing.B) { + msg := largeTestMsg() + buf := make([]byte, 0, packStartingCap) + + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + if _, err := msg.AppendPack(buf[:0]); err != nil { + b.Fatal(err) + } + } +} + func largeTestMsg() Message { name := mustNewName("foo.bar.example.com.") return Message{ diff --git a/vendor/golang.org/x/net/html/atom/gen.go b/vendor/golang.org/x/net/html/atom/gen.go index 6bfa86601..cc5dc5dbc 100644 --- a/vendor/golang.org/x/net/html/atom/gen.go +++ b/vendor/golang.org/x/net/html/atom/gen.go @@ -4,17 +4,17 @@ // +build ignore +//go:generate go run gen.go +//go:generate go run gen.go -test + package main -// This program generates table.go and table_test.go. -// Invoke as -// -// go run gen.go |gofmt >table.go -// go run gen.go -test |gofmt >table_test.go - import ( + "bytes" "flag" "fmt" + "go/format" + "io/ioutil" "math/rand" "os" "sort" @@ -42,6 +42,18 @@ func identifier(s string) string { var test = flag.Bool("test", false, "generate table_test.go") +func genFile(name string, buf *bytes.Buffer) { + b, err := format.Source(buf.Bytes()) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := ioutil.WriteFile(name, b, 0644); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + func main() { flag.Parse() @@ -52,32 +64,31 @@ func main() { all = append(all, extra...) sort.Strings(all) - if *test { - fmt.Printf("// generated by go run gen.go -test; DO NOT EDIT\n\n") - fmt.Printf("package atom\n\n") - fmt.Printf("var testAtomList = []string{\n") - for _, s := range all { - fmt.Printf("\t%q,\n", s) - } - fmt.Printf("}\n") - return - } - // uniq - lists have dups - // compute max len too - maxLen := 0 w := 0 for _, s := range all { if w == 0 || all[w-1] != s { - if maxLen < len(s) { - maxLen = len(s) - } all[w] = s w++ } } all = all[:w] + if *test { + var buf bytes.Buffer + fmt.Fprintln(&buf, "// Code generated by go generate gen.go; DO NOT EDIT.\n") + fmt.Fprintln(&buf, "//go:generate go run gen.go -test\n") + fmt.Fprintln(&buf, "package atom\n") + fmt.Fprintln(&buf, "var testAtomList = []string{") + for _, s := range all { + fmt.Fprintf(&buf, "\t%q,\n", s) + } + fmt.Fprintln(&buf, "}") + + genFile("table_test.go", &buf) + return + } + // Find hash that minimizes table size. var best *table for i := 0; i < 1000000; i++ { @@ -163,36 +174,46 @@ func main() { atom[s] = uint32(off<<8 | len(s)) } + var buf bytes.Buffer // Generate the Go code. - fmt.Printf("// generated by go run gen.go; DO NOT EDIT\n\n") - fmt.Printf("package atom\n\nconst (\n") + fmt.Fprintln(&buf, "// Code generated by go generate gen.go; DO NOT EDIT.\n") + fmt.Fprintln(&buf, "//go:generate go run gen.go\n") + fmt.Fprintln(&buf, "package atom\n\nconst (") + + // compute max len + maxLen := 0 for _, s := range all { - fmt.Printf("\t%s Atom = %#x\n", identifier(s), atom[s]) + if maxLen < len(s) { + maxLen = len(s) + } + fmt.Fprintf(&buf, "\t%s Atom = %#x\n", identifier(s), atom[s]) } - fmt.Printf(")\n\n") + fmt.Fprintln(&buf, ")\n") - fmt.Printf("const hash0 = %#x\n\n", best.h0) - fmt.Printf("const maxAtomLen = %d\n\n", maxLen) + fmt.Fprintf(&buf, "const hash0 = %#x\n\n", best.h0) + fmt.Fprintf(&buf, "const maxAtomLen = %d\n\n", maxLen) - fmt.Printf("var table = [1<<%d]Atom{\n", best.k) + fmt.Fprintf(&buf, "var table = [1<<%d]Atom{\n", best.k) for i, s := range best.tab { if s == "" { continue } - fmt.Printf("\t%#x: %#x, // %s\n", i, atom[s], s) + fmt.Fprintf(&buf, "\t%#x: %#x, // %s\n", i, atom[s], s) } - fmt.Printf("}\n") + fmt.Fprintf(&buf, "}\n") datasize := (1 << best.k) * 4 - fmt.Printf("const atomText =\n") + fmt.Fprintln(&buf, "const atomText =") textsize := len(text) for len(text) > 60 { - fmt.Printf("\t%q +\n", text[:60]) + fmt.Fprintf(&buf, "\t%q +\n", text[:60]) text = text[60:] } - fmt.Printf("\t%q\n\n", text) + fmt.Fprintf(&buf, "\t%q\n\n", text) - fmt.Fprintf(os.Stderr, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize) + genFile("table.go", &buf) + + fmt.Fprintf(os.Stdout, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize) } type byLen []string @@ -285,8 +306,10 @@ func (t *table) push(i uint32, depth int) bool { // The lists of element names and attribute keys were taken from // https://html.spec.whatwg.org/multipage/indices.html#index -// as of the "HTML Living Standard - Last Updated 21 February 2015" version. +// as of the "HTML Living Standard - Last Updated 18 September 2017" version. +// "command", "keygen" and "menuitem" have been removed from the spec, +// but are kept here for backwards compatibility. var elements = []string{ "a", "abbr", @@ -349,6 +372,7 @@ var elements = []string{ "legend", "li", "link", + "main", "map", "mark", "menu", @@ -364,6 +388,7 @@ var elements = []string{ "output", "p", "param", + "picture", "pre", "progress", "q", @@ -375,6 +400,7 @@ var elements = []string{ "script", "section", "select", + "slot", "small", "source", "span", @@ -403,14 +429,21 @@ var elements = []string{ } // https://html.spec.whatwg.org/multipage/indices.html#attributes-3 - +// +// "challenge", "command", "contextmenu", "dropzone", "icon", "keytype", "mediagroup", +// "radiogroup", "spellcheck", "scoped", "seamless", "sortable" and "sorted" have been removed from the spec, +// but are kept here for backwards compatibility. var attributes = []string{ "abbr", "accept", "accept-charset", "accesskey", "action", + "allowfullscreen", + "allowpaymentrequest", + "allowusermedia", "alt", + "as", "async", "autocomplete", "autofocus", @@ -420,6 +453,7 @@ var attributes = []string{ "checked", "cite", "class", + "color", "cols", "colspan", "command", @@ -457,6 +491,8 @@ var attributes = []string{ "icon", "id", "inputmode", + "integrity", + "is", "ismap", "itemid", "itemprop", @@ -481,16 +517,20 @@ var attributes = []string{ "multiple", "muted", "name", + "nomodule", + "nonce", "novalidate", "open", "optimum", "pattern", "ping", "placeholder", + "playsinline", "poster", "preload", "radiogroup", "readonly", + "referrerpolicy", "rel", "required", "reversed", @@ -507,10 +547,13 @@ var attributes = []string{ "sizes", "sortable", "sorted", + "slot", "span", + "spellcheck", "src", "srcdoc", "srclang", + "srcset", "start", "step", "style", @@ -520,16 +563,22 @@ var attributes = []string{ "translate", "type", "typemustmatch", + "updateviacache", "usemap", "value", "width", + "workertype", "wrap", } +// "onautocomplete", "onautocompleteerror", "onmousewheel", +// "onshow" and "onsort" have been removed from the spec, +// but are kept here for backwards compatibility. var eventHandlers = []string{ "onabort", "onautocomplete", "onautocompleteerror", + "onauxclick", "onafterprint", "onbeforeprint", "onbeforeunload", @@ -541,11 +590,14 @@ var eventHandlers = []string{ "onclick", "onclose", "oncontextmenu", + "oncopy", "oncuechange", + "oncut", "ondblclick", "ondrag", "ondragend", "ondragenter", + "ondragexit", "ondragleave", "ondragover", "ondragstart", @@ -565,18 +617,24 @@ var eventHandlers = []string{ "onload", "onloadeddata", "onloadedmetadata", + "onloadend", "onloadstart", "onmessage", + "onmessageerror", "onmousedown", + "onmouseenter", + "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", + "onwheel", "onoffline", "ononline", "onpagehide", "onpageshow", + "onpaste", "onpause", "onplay", "onplaying", @@ -585,7 +643,9 @@ var eventHandlers = []string{ "onratechange", "onreset", "onresize", + "onrejectionhandled", "onscroll", + "onsecuritypolicyviolation", "onseeked", "onseeking", "onselect", @@ -597,6 +657,7 @@ var eventHandlers = []string{ "onsuspend", "ontimeupdate", "ontoggle", + "onunhandledrejection", "onunload", "onvolumechange", "onwaiting", diff --git a/vendor/golang.org/x/net/html/atom/table.go b/vendor/golang.org/x/net/html/atom/table.go index 2605ba310..f74018ece 100644 --- a/vendor/golang.org/x/net/html/atom/table.go +++ b/vendor/golang.org/x/net/html/atom/table.go @@ -1,713 +1,777 @@ -// generated by go run gen.go; DO NOT EDIT +// Code generated by go generate gen.go; DO NOT EDIT. + +//go:generate go run gen.go package atom const ( - A Atom = 0x1 - Abbr Atom = 0x4 - Accept Atom = 0x2106 - AcceptCharset Atom = 0x210e - Accesskey Atom = 0x3309 - Action Atom = 0x1f606 - Address Atom = 0x4f307 - Align Atom = 0x1105 - Alt Atom = 0x4503 - Annotation Atom = 0x1670a - AnnotationXml Atom = 0x1670e - Applet Atom = 0x2b306 - Area Atom = 0x2fa04 - Article Atom = 0x38807 - Aside Atom = 0x8305 - Async Atom = 0x7b05 - Audio Atom = 0xa605 - Autocomplete Atom = 0x1fc0c - Autofocus Atom = 0xb309 - Autoplay Atom = 0xce08 - B Atom = 0x101 - Base Atom = 0xd604 - Basefont Atom = 0xd608 - Bdi Atom = 0x1a03 - Bdo Atom = 0xe703 - Bgsound Atom = 0x11807 - Big Atom = 0x12403 - Blink Atom = 0x12705 - Blockquote Atom = 0x12c0a - Body Atom = 0x2f04 - Br Atom = 0x202 - Button Atom = 0x13606 - Canvas Atom = 0x7f06 - Caption Atom = 0x1bb07 - Center Atom = 0x5b506 - Challenge Atom = 0x21f09 - Charset Atom = 0x2807 - Checked Atom = 0x32807 - Cite Atom = 0x3c804 - Class Atom = 0x4de05 - Code Atom = 0x14904 - Col Atom = 0x15003 - Colgroup Atom = 0x15008 - Color Atom = 0x15d05 - Cols Atom = 0x16204 - Colspan Atom = 0x16207 - Command Atom = 0x17507 - Content Atom = 0x42307 - Contenteditable Atom = 0x4230f - Contextmenu Atom = 0x3310b - Controls Atom = 0x18808 - Coords Atom = 0x19406 - Crossorigin Atom = 0x19f0b - Data Atom = 0x44a04 - Datalist Atom = 0x44a08 - Datetime Atom = 0x23c08 - Dd Atom = 0x26702 - Default Atom = 0x8607 - Defer Atom = 0x14b05 - Del Atom = 0x3ef03 - Desc Atom = 0x4db04 - Details Atom = 0x4807 - Dfn Atom = 0x6103 - Dialog Atom = 0x1b06 - Dir Atom = 0x6903 - Dirname Atom = 0x6907 - Disabled Atom = 0x10c08 - Div Atom = 0x11303 - Dl Atom = 0x11e02 - Download Atom = 0x40008 - Draggable Atom = 0x17b09 - Dropzone Atom = 0x39108 - Dt Atom = 0x50902 - Em Atom = 0x6502 - Embed Atom = 0x6505 - Enctype Atom = 0x21107 - Face Atom = 0x5b304 - Fieldset Atom = 0x1b008 - Figcaption Atom = 0x1b80a - Figure Atom = 0x1cc06 - Font Atom = 0xda04 - Footer Atom = 0x8d06 - For Atom = 0x1d803 - ForeignObject Atom = 0x1d80d - Foreignobject Atom = 0x1e50d - Form Atom = 0x1f204 - Formaction Atom = 0x1f20a - Formenctype Atom = 0x20d0b - Formmethod Atom = 0x2280a - Formnovalidate Atom = 0x2320e - Formtarget Atom = 0x2470a - Frame Atom = 0x9a05 - Frameset Atom = 0x9a08 - H1 Atom = 0x26e02 - H2 Atom = 0x29402 - H3 Atom = 0x2a702 - H4 Atom = 0x2e902 - H5 Atom = 0x2f302 - H6 Atom = 0x50b02 - Head Atom = 0x2d504 - Header Atom = 0x2d506 - Headers Atom = 0x2d507 - Height Atom = 0x25106 - Hgroup Atom = 0x25906 - Hidden Atom = 0x26506 - High Atom = 0x26b04 - Hr Atom = 0x27002 - Href Atom = 0x27004 - Hreflang Atom = 0x27008 - Html Atom = 0x25504 - HttpEquiv Atom = 0x2780a - I Atom = 0x601 - Icon Atom = 0x42204 - Id Atom = 0x8502 - Iframe Atom = 0x29606 - Image Atom = 0x29c05 - Img Atom = 0x2a103 - Input Atom = 0x3e805 - Inputmode Atom = 0x3e809 - Ins Atom = 0x1a803 - Isindex Atom = 0x2a907 - Ismap Atom = 0x2b005 - Itemid Atom = 0x33c06 - Itemprop Atom = 0x3c908 - Itemref Atom = 0x5ad07 - Itemscope Atom = 0x2b909 - Itemtype Atom = 0x2c308 - Kbd Atom = 0x1903 - Keygen Atom = 0x3906 - Keytype Atom = 0x53707 - Kind Atom = 0x10904 - Label Atom = 0xf005 - Lang Atom = 0x27404 - Legend Atom = 0x18206 - Li Atom = 0x1202 - Link Atom = 0x12804 - List Atom = 0x44e04 - Listing Atom = 0x44e07 - Loop Atom = 0xf404 - Low Atom = 0x11f03 - Malignmark Atom = 0x100a - Manifest Atom = 0x5f108 - Map Atom = 0x2b203 - Mark Atom = 0x1604 - Marquee Atom = 0x2cb07 - Math Atom = 0x2d204 - Max Atom = 0x2e103 - Maxlength Atom = 0x2e109 - Media Atom = 0x6e05 - Mediagroup Atom = 0x6e0a - Menu Atom = 0x33804 - Menuitem Atom = 0x33808 - Meta Atom = 0x45d04 - Meter Atom = 0x24205 - Method Atom = 0x22c06 - Mglyph Atom = 0x2a206 - Mi Atom = 0x2eb02 - Min Atom = 0x2eb03 - Minlength Atom = 0x2eb09 - Mn Atom = 0x23502 - Mo Atom = 0x3ed02 - Ms Atom = 0x2bc02 - Mtext Atom = 0x2f505 - Multiple Atom = 0x30308 - Muted Atom = 0x30b05 - Name Atom = 0x6c04 - Nav Atom = 0x3e03 - Nobr Atom = 0x5704 - Noembed Atom = 0x6307 - Noframes Atom = 0x9808 - Noscript Atom = 0x3d208 - Novalidate Atom = 0x2360a - Object Atom = 0x1ec06 - Ol Atom = 0xc902 - Onabort Atom = 0x13a07 - Onafterprint Atom = 0x1c00c - Onautocomplete Atom = 0x1fa0e - Onautocompleteerror Atom = 0x1fa13 - Onbeforeprint Atom = 0x6040d - Onbeforeunload Atom = 0x4e70e - Onblur Atom = 0xaa06 - Oncancel Atom = 0xe908 - Oncanplay Atom = 0x28509 - Oncanplaythrough Atom = 0x28510 - Onchange Atom = 0x3a708 - Onclick Atom = 0x31007 - Onclose Atom = 0x31707 - Oncontextmenu Atom = 0x32f0d - Oncuechange Atom = 0x3420b - Ondblclick Atom = 0x34d0a - Ondrag Atom = 0x35706 - Ondragend Atom = 0x35709 - Ondragenter Atom = 0x3600b - Ondragleave Atom = 0x36b0b - Ondragover Atom = 0x3760a - Ondragstart Atom = 0x3800b - Ondrop Atom = 0x38f06 - Ondurationchange Atom = 0x39f10 - Onemptied Atom = 0x39609 - Onended Atom = 0x3af07 - Onerror Atom = 0x3b607 - Onfocus Atom = 0x3bd07 - Onhashchange Atom = 0x3da0c - Oninput Atom = 0x3e607 - Oninvalid Atom = 0x3f209 - Onkeydown Atom = 0x3fb09 - Onkeypress Atom = 0x4080a - Onkeyup Atom = 0x41807 - Onlanguagechange Atom = 0x43210 - Onload Atom = 0x44206 - Onloadeddata Atom = 0x4420c - Onloadedmetadata Atom = 0x45510 - Onloadstart Atom = 0x46b0b - Onmessage Atom = 0x47609 - Onmousedown Atom = 0x47f0b - Onmousemove Atom = 0x48a0b - Onmouseout Atom = 0x4950a - Onmouseover Atom = 0x4a20b - Onmouseup Atom = 0x4ad09 - Onmousewheel Atom = 0x4b60c - Onoffline Atom = 0x4c209 - Ononline Atom = 0x4cb08 - Onpagehide Atom = 0x4d30a - Onpageshow Atom = 0x4fe0a - Onpause Atom = 0x50d07 - Onplay Atom = 0x51706 - Onplaying Atom = 0x51709 - Onpopstate Atom = 0x5200a - Onprogress Atom = 0x52a0a - Onratechange Atom = 0x53e0c - Onreset Atom = 0x54a07 - Onresize Atom = 0x55108 - Onscroll Atom = 0x55f08 - Onseeked Atom = 0x56708 - Onseeking Atom = 0x56f09 - Onselect Atom = 0x57808 - Onshow Atom = 0x58206 - Onsort Atom = 0x58b06 - Onstalled Atom = 0x59509 - Onstorage Atom = 0x59e09 - Onsubmit Atom = 0x5a708 - Onsuspend Atom = 0x5bb09 - Ontimeupdate Atom = 0xdb0c - Ontoggle Atom = 0x5c408 - Onunload Atom = 0x5cc08 - Onvolumechange Atom = 0x5d40e - Onwaiting Atom = 0x5e209 - Open Atom = 0x3cf04 - Optgroup Atom = 0xf608 - Optimum Atom = 0x5eb07 - Option Atom = 0x60006 - Output Atom = 0x49c06 - P Atom = 0xc01 - Param Atom = 0xc05 - Pattern Atom = 0x5107 - Ping Atom = 0x7704 - Placeholder Atom = 0xc30b - Plaintext Atom = 0xfd09 - Poster Atom = 0x15706 - Pre Atom = 0x25e03 - Preload Atom = 0x25e07 - Progress Atom = 0x52c08 - Prompt Atom = 0x5fa06 - Public Atom = 0x41e06 - Q Atom = 0x13101 - Radiogroup Atom = 0x30a - Readonly Atom = 0x2fb08 - Rel Atom = 0x25f03 - Required Atom = 0x1d008 - Reversed Atom = 0x5a08 - Rows Atom = 0x9204 - Rowspan Atom = 0x9207 - Rp Atom = 0x1c602 - Rt Atom = 0x13f02 - Ruby Atom = 0xaf04 - S Atom = 0x2c01 - Samp Atom = 0x4e04 - Sandbox Atom = 0xbb07 - Scope Atom = 0x2bd05 - Scoped Atom = 0x2bd06 - Script Atom = 0x3d406 - Seamless Atom = 0x31c08 - Section Atom = 0x4e207 - Select Atom = 0x57a06 - Selected Atom = 0x57a08 - Shape Atom = 0x4f905 - Size Atom = 0x55504 - Sizes Atom = 0x55505 - Small Atom = 0x18f05 - Sortable Atom = 0x58d08 - Sorted Atom = 0x19906 - Source Atom = 0x1aa06 - Spacer Atom = 0x2db06 - Span Atom = 0x9504 - Spellcheck Atom = 0x3230a - Src Atom = 0x3c303 - Srcdoc Atom = 0x3c306 - Srclang Atom = 0x41107 - Start Atom = 0x38605 - Step Atom = 0x5f704 - Strike Atom = 0x53306 - Strong Atom = 0x55906 - Style Atom = 0x61105 - Sub Atom = 0x5a903 - Summary Atom = 0x61607 - Sup Atom = 0x61d03 - Svg Atom = 0x62003 - System Atom = 0x62306 - Tabindex Atom = 0x46308 - Table Atom = 0x42d05 - Target Atom = 0x24b06 - Tbody Atom = 0x2e05 - Td Atom = 0x4702 - Template Atom = 0x62608 - Textarea Atom = 0x2f608 - Tfoot Atom = 0x8c05 - Th Atom = 0x22e02 - Thead Atom = 0x2d405 - Time Atom = 0xdd04 - Title Atom = 0xa105 - Tr Atom = 0x10502 - Track Atom = 0x10505 - Translate Atom = 0x14009 - Tt Atom = 0x5302 - Type Atom = 0x21404 - Typemustmatch Atom = 0x2140d - U Atom = 0xb01 - Ul Atom = 0x8a02 - Usemap Atom = 0x51106 - Value Atom = 0x4005 - Var Atom = 0x11503 - Video Atom = 0x28105 - Wbr Atom = 0x12103 - Width Atom = 0x50705 - Wrap Atom = 0x58704 - Xmp Atom = 0xc103 + A Atom = 0x1 + Abbr Atom = 0x4 + Accept Atom = 0x1a06 + AcceptCharset Atom = 0x1a0e + Accesskey Atom = 0x2c09 + Action Atom = 0x25a06 + Address Atom = 0x6ed07 + Align Atom = 0x6d405 + Allowfullscreen Atom = 0x1f00f + Allowpaymentrequest Atom = 0x6913 + Allowusermedia Atom = 0x850e + Alt Atom = 0xb003 + Annotation Atom = 0x1b90a + AnnotationXml Atom = 0x1b90e + Applet Atom = 0x30106 + Area Atom = 0x34a04 + Article Atom = 0x3f007 + As Atom = 0xb902 + Aside Atom = 0xc105 + Async Atom = 0xb905 + Audio Atom = 0xcf05 + Autocomplete Atom = 0x2600c + Autofocus Atom = 0xeb09 + Autoplay Atom = 0x10608 + B Atom = 0x101 + Base Atom = 0x11504 + Basefont Atom = 0x11508 + Bdi Atom = 0x16103 + Bdo Atom = 0x13403 + Bgsound Atom = 0x14707 + Big Atom = 0x15903 + Blink Atom = 0x15c05 + Blockquote Atom = 0x1680a + Body Atom = 0x2804 + Br Atom = 0x202 + Button Atom = 0x17206 + Canvas Atom = 0xbd06 + Caption Atom = 0x21907 + Center Atom = 0x20806 + Challenge Atom = 0x28309 + Charset Atom = 0x2107 + Checked Atom = 0x46d07 + Cite Atom = 0x55804 + Class Atom = 0x5b905 + Code Atom = 0x19004 + Col Atom = 0x19703 + Colgroup Atom = 0x19708 + Color Atom = 0x1af05 + Cols Atom = 0x1b404 + Colspan Atom = 0x1b407 + Command Atom = 0x1c707 + Content Atom = 0x57f07 + Contenteditable Atom = 0x57f0f + Contextmenu Atom = 0x3740b + Controls Atom = 0x1ce08 + Coords Atom = 0x1da06 + Crossorigin Atom = 0x1e30b + Data Atom = 0x49904 + Datalist Atom = 0x49908 + Datetime Atom = 0x2a008 + Dd Atom = 0x2bf02 + Default Atom = 0xc407 + Defer Atom = 0x19205 + Del Atom = 0x44603 + Desc Atom = 0x55504 + Details Atom = 0x4607 + Dfn Atom = 0x5f03 + Dialog Atom = 0x16206 + Dir Atom = 0xa303 + Dirname Atom = 0xa307 + Disabled Atom = 0x14d08 + Div Atom = 0x15403 + Dl Atom = 0x5e202 + Download Atom = 0x45708 + Draggable Atom = 0x18309 + Dropzone Atom = 0x3f908 + Dt Atom = 0x64702 + Em Atom = 0x4202 + Embed Atom = 0x4205 + Enctype Atom = 0x27507 + Face Atom = 0x20604 + Fieldset Atom = 0x20e08 + Figcaption Atom = 0x2160a + Figure Atom = 0x23006 + Font Atom = 0x11904 + Footer Atom = 0xb306 + For Atom = 0x23c03 + ForeignObject Atom = 0x23c0d + Foreignobject Atom = 0x2490d + Form Atom = 0x25604 + Formaction Atom = 0x2560a + Formenctype Atom = 0x2710b + Formmethod Atom = 0x28c0a + Formnovalidate Atom = 0x2960e + Formtarget Atom = 0x2a80a + Frame Atom = 0x5705 + Frameset Atom = 0x5708 + H1 Atom = 0x14502 + H2 Atom = 0x2c602 + H3 Atom = 0x2f502 + H4 Atom = 0x33902 + H5 Atom = 0x34302 + H6 Atom = 0x64902 + Head Atom = 0x32504 + Header Atom = 0x32506 + Headers Atom = 0x32507 + Height Atom = 0x12c06 + Hgroup Atom = 0x2b206 + Hidden Atom = 0x2bd06 + High Atom = 0x2c304 + Hr Atom = 0x14002 + Href Atom = 0x2c804 + Hreflang Atom = 0x2c808 + Html Atom = 0x13004 + HttpEquiv Atom = 0x2d00a + I Atom = 0x601 + Icon Atom = 0x57e04 + Id Atom = 0xc302 + Iframe Atom = 0x2e406 + Image Atom = 0x2ea05 + Img Atom = 0x2ef03 + Input Atom = 0x43f05 + Inputmode Atom = 0x43f09 + Ins Atom = 0x1ec03 + Integrity Atom = 0x22709 + Is Atom = 0x14e02 + Isindex Atom = 0x2f707 + Ismap Atom = 0x2fe05 + Itemid Atom = 0x37f06 + Itemprop Atom = 0x55908 + Itemref Atom = 0x3c107 + Itemscope Atom = 0x66d09 + Itemtype Atom = 0x30708 + Kbd Atom = 0x16003 + Keygen Atom = 0x3206 + Keytype Atom = 0x7e07 + Kind Atom = 0x18004 + Label Atom = 0xda05 + Lang Atom = 0x2cc04 + Legend Atom = 0x18a06 + Li Atom = 0x11102 + Link Atom = 0x15d04 + List Atom = 0x49d04 + Listing Atom = 0x49d07 + Loop Atom = 0xde04 + Low Atom = 0x6b03 + Main Atom = 0x1004 + Malignmark Atom = 0x6d30a + Manifest Atom = 0x30f08 + Map Atom = 0x30003 + Mark Atom = 0x6d904 + Marquee Atom = 0x31b07 + Math Atom = 0x32204 + Max Atom = 0x33103 + Maxlength Atom = 0x33109 + Media Atom = 0x8e05 + Mediagroup Atom = 0x8e0a + Menu Atom = 0x37b04 + Menuitem Atom = 0x37b08 + Meta Atom = 0x4ac04 + Meter Atom = 0xa805 + Method Atom = 0x29006 + Mglyph Atom = 0x2f006 + Mi Atom = 0x33b02 + Min Atom = 0x33b03 + Minlength Atom = 0x33b09 + Mn Atom = 0x29902 + Mo Atom = 0x6302 + Ms Atom = 0x67002 + Mtext Atom = 0x34505 + Multiple Atom = 0x35308 + Muted Atom = 0x35b05 + Name Atom = 0xa604 + Nav Atom = 0x1303 + Nobr Atom = 0x3704 + Noembed Atom = 0x4007 + Noframes Atom = 0x5508 + Nomodule Atom = 0x6108 + Nonce Atom = 0x56205 + Noscript Atom = 0x1fe08 + Novalidate Atom = 0x29a0a + Object Atom = 0x25006 + Ol Atom = 0x10102 + Onabort Atom = 0x17607 + Onafterprint Atom = 0x21e0c + Onautocomplete Atom = 0x25e0e + Onautocompleteerror Atom = 0x25e13 + Onauxclick Atom = 0x61b0a + Onbeforeprint Atom = 0x69a0d + Onbeforeunload Atom = 0x6e10e + Onblur Atom = 0x5c206 + Oncancel Atom = 0xd308 + Oncanplay Atom = 0x13609 + Oncanplaythrough Atom = 0x13610 + Onchange Atom = 0x40f08 + Onclick Atom = 0x2dd07 + Onclose Atom = 0x36007 + Oncontextmenu Atom = 0x3720d + Oncopy Atom = 0x38506 + Oncuechange Atom = 0x38b0b + Oncut Atom = 0x39605 + Ondblclick Atom = 0x39b0a + Ondrag Atom = 0x3a506 + Ondragend Atom = 0x3a509 + Ondragenter Atom = 0x3ae0b + Ondragexit Atom = 0x3b90a + Ondragleave Atom = 0x3d30b + Ondragover Atom = 0x3de0a + Ondragstart Atom = 0x3e80b + Ondrop Atom = 0x3f706 + Ondurationchange Atom = 0x40710 + Onemptied Atom = 0x3fe09 + Onended Atom = 0x41707 + Onerror Atom = 0x41e07 + Onfocus Atom = 0x42507 + Onhashchange Atom = 0x4310c + Oninput Atom = 0x43d07 + Oninvalid Atom = 0x44909 + Onkeydown Atom = 0x45209 + Onkeypress Atom = 0x45f0a + Onkeyup Atom = 0x47407 + Onlanguagechange Atom = 0x48110 + Onload Atom = 0x49106 + Onloadeddata Atom = 0x4910c + Onloadedmetadata Atom = 0x4a410 + Onloadend Atom = 0x4ba09 + Onloadstart Atom = 0x4c30b + Onmessage Atom = 0x4ce09 + Onmessageerror Atom = 0x4ce0e + Onmousedown Atom = 0x4dc0b + Onmouseenter Atom = 0x4e70c + Onmouseleave Atom = 0x4f30c + Onmousemove Atom = 0x4ff0b + Onmouseout Atom = 0x50a0a + Onmouseover Atom = 0x5170b + Onmouseup Atom = 0x52209 + Onmousewheel Atom = 0x5300c + Onoffline Atom = 0x53c09 + Ononline Atom = 0x54508 + Onpagehide Atom = 0x54d0a + Onpageshow Atom = 0x5670a + Onpaste Atom = 0x57307 + Onpause Atom = 0x58e07 + Onplay Atom = 0x59806 + Onplaying Atom = 0x59809 + Onpopstate Atom = 0x5a10a + Onprogress Atom = 0x5ab0a + Onratechange Atom = 0x5c80c + Onrejectionhandled Atom = 0x5d412 + Onreset Atom = 0x5e607 + Onresize Atom = 0x5ed08 + Onscroll Atom = 0x5fc08 + Onsecuritypolicyviolation Atom = 0x60419 + Onseeked Atom = 0x62508 + Onseeking Atom = 0x62d09 + Onselect Atom = 0x63608 + Onshow Atom = 0x64006 + Onsort Atom = 0x64b06 + Onstalled Atom = 0x65509 + Onstorage Atom = 0x65e09 + Onsubmit Atom = 0x66708 + Onsuspend Atom = 0x67709 + Ontimeupdate Atom = 0x11a0c + Ontoggle Atom = 0x68008 + Onunhandledrejection Atom = 0x68814 + Onunload Atom = 0x6a708 + Onvolumechange Atom = 0x6af0e + Onwaiting Atom = 0x6bd09 + Onwheel Atom = 0x6c607 + Open Atom = 0x55f04 + Optgroup Atom = 0xe008 + Optimum Atom = 0x6cd07 + Option Atom = 0x6dd06 + Output Atom = 0x51106 + P Atom = 0xc01 + Param Atom = 0xc05 + Pattern Atom = 0x4f07 + Picture Atom = 0x9707 + Ping Atom = 0xe704 + Placeholder Atom = 0xfb0b + Plaintext Atom = 0x19e09 + Playsinline Atom = 0x10a0b + Poster Atom = 0x2b706 + Pre Atom = 0x46403 + Preload Atom = 0x47a07 + Progress Atom = 0x5ad08 + Prompt Atom = 0x52a06 + Public Atom = 0x57a06 + Q Atom = 0x7701 + Radiogroup Atom = 0x30a + Readonly Atom = 0x34b08 + Referrerpolicy Atom = 0x3c50e + Rel Atom = 0x47b03 + Required Atom = 0x23408 + Reversed Atom = 0x9c08 + Rows Atom = 0x3a04 + Rowspan Atom = 0x3a07 + Rp Atom = 0x22402 + Rt Atom = 0x17b02 + Ruby Atom = 0xac04 + S Atom = 0x2501 + Samp Atom = 0x4c04 + Sandbox Atom = 0xf307 + Scope Atom = 0x67105 + Scoped Atom = 0x67106 + Script Atom = 0x20006 + Seamless Atom = 0x36508 + Section Atom = 0x5bd07 + Select Atom = 0x63806 + Selected Atom = 0x63808 + Shape Atom = 0x1d505 + Size Atom = 0x5f104 + Sizes Atom = 0x5f105 + Slot Atom = 0x1df04 + Small Atom = 0x1ee05 + Sortable Atom = 0x64d08 + Sorted Atom = 0x32b06 + Source Atom = 0x36c06 + Spacer Atom = 0x42b06 + Span Atom = 0x3d04 + Spellcheck Atom = 0x4680a + Src Atom = 0x5b403 + Srcdoc Atom = 0x5b406 + Srclang Atom = 0x5f507 + Srcset Atom = 0x6f306 + Start Atom = 0x3ee05 + Step Atom = 0x57704 + Strike Atom = 0x7a06 + Strong Atom = 0x31506 + Style Atom = 0x6f905 + Sub Atom = 0x66903 + Summary Atom = 0x6fe07 + Sup Atom = 0x70503 + Svg Atom = 0x70803 + System Atom = 0x70b06 + Tabindex Atom = 0x4b208 + Table Atom = 0x58905 + Target Atom = 0x2ac06 + Tbody Atom = 0x2705 + Td Atom = 0x5e02 + Template Atom = 0x70e08 + Textarea Atom = 0x34608 + Tfoot Atom = 0xb205 + Th Atom = 0x13f02 + Thead Atom = 0x32405 + Time Atom = 0x11c04 + Title Atom = 0xca05 + Tr Atom = 0x7402 + Track Atom = 0x17c05 + Translate Atom = 0x1a609 + Tt Atom = 0x5102 + Type Atom = 0x8104 + Typemustmatch Atom = 0x2780d + U Atom = 0xb01 + Ul Atom = 0x6602 + Updateviacache Atom = 0x1200e + Usemap Atom = 0x59206 + Value Atom = 0x1505 + Var Atom = 0x15603 + Video Atom = 0x2d905 + Wbr Atom = 0x57003 + Width Atom = 0x64505 + Workertype Atom = 0x7160a + Wrap Atom = 0x72004 + Xmp Atom = 0xf903 ) -const hash0 = 0xc17da63e +const hash0 = 0x81cdf10e -const maxAtomLen = 19 +const maxAtomLen = 25 var table = [1 << 9]Atom{ - 0x1: 0x48a0b, // onmousemove - 0x2: 0x5e209, // onwaiting - 0x3: 0x1fa13, // onautocompleteerror - 0x4: 0x5fa06, // prompt - 0x7: 0x5eb07, // optimum - 0x8: 0x1604, // mark - 0xa: 0x5ad07, // itemref - 0xb: 0x4fe0a, // onpageshow - 0xc: 0x57a06, // select - 0xd: 0x17b09, // draggable - 0xe: 0x3e03, // nav - 0xf: 0x17507, // command - 0x11: 0xb01, // u - 0x14: 0x2d507, // headers - 0x15: 0x44a08, // datalist - 0x17: 0x4e04, // samp - 0x1a: 0x3fb09, // onkeydown - 0x1b: 0x55f08, // onscroll - 0x1c: 0x15003, // col - 0x20: 0x3c908, // itemprop - 0x21: 0x2780a, // http-equiv - 0x22: 0x61d03, // sup - 0x24: 0x1d008, // required - 0x2b: 0x25e07, // preload - 0x2c: 0x6040d, // onbeforeprint - 0x2d: 0x3600b, // ondragenter - 0x2e: 0x50902, // dt - 0x2f: 0x5a708, // onsubmit - 0x30: 0x27002, // hr - 0x31: 0x32f0d, // oncontextmenu - 0x33: 0x29c05, // image - 0x34: 0x50d07, // onpause - 0x35: 0x25906, // hgroup - 0x36: 0x7704, // ping - 0x37: 0x57808, // onselect - 0x3a: 0x11303, // div - 0x3b: 0x1fa0e, // onautocomplete - 0x40: 0x2eb02, // mi - 0x41: 0x31c08, // seamless - 0x42: 0x2807, // charset - 0x43: 0x8502, // id - 0x44: 0x5200a, // onpopstate - 0x45: 0x3ef03, // del - 0x46: 0x2cb07, // marquee - 0x47: 0x3309, // accesskey - 0x49: 0x8d06, // footer - 0x4a: 0x44e04, // list - 0x4b: 0x2b005, // ismap - 0x51: 0x33804, // menu - 0x52: 0x2f04, // body - 0x55: 0x9a08, // frameset - 0x56: 0x54a07, // onreset - 0x57: 0x12705, // blink - 0x58: 0xa105, // title - 0x59: 0x38807, // article - 0x5b: 0x22e02, // th - 0x5d: 0x13101, // q - 0x5e: 0x3cf04, // open - 0x5f: 0x2fa04, // area - 0x61: 0x44206, // onload - 0x62: 0xda04, // font - 0x63: 0xd604, // base - 0x64: 0x16207, // colspan - 0x65: 0x53707, // keytype - 0x66: 0x11e02, // dl - 0x68: 0x1b008, // fieldset - 0x6a: 0x2eb03, // min - 0x6b: 0x11503, // var - 0x6f: 0x2d506, // header - 0x70: 0x13f02, // rt - 0x71: 0x15008, // colgroup - 0x72: 0x23502, // mn - 0x74: 0x13a07, // onabort - 0x75: 0x3906, // keygen - 0x76: 0x4c209, // onoffline - 0x77: 0x21f09, // challenge - 0x78: 0x2b203, // map - 0x7a: 0x2e902, // h4 - 0x7b: 0x3b607, // onerror - 0x7c: 0x2e109, // maxlength - 0x7d: 0x2f505, // mtext - 0x7e: 0xbb07, // sandbox - 0x7f: 0x58b06, // onsort - 0x80: 0x100a, // malignmark - 0x81: 0x45d04, // meta - 0x82: 0x7b05, // async - 0x83: 0x2a702, // h3 - 0x84: 0x26702, // dd - 0x85: 0x27004, // href - 0x86: 0x6e0a, // mediagroup - 0x87: 0x19406, // coords - 0x88: 0x41107, // srclang - 0x89: 0x34d0a, // ondblclick - 0x8a: 0x4005, // value - 0x8c: 0xe908, // oncancel - 0x8e: 0x3230a, // spellcheck - 0x8f: 0x9a05, // frame - 0x91: 0x12403, // big - 0x94: 0x1f606, // action - 0x95: 0x6903, // dir - 0x97: 0x2fb08, // readonly - 0x99: 0x42d05, // table - 0x9a: 0x61607, // summary - 0x9b: 0x12103, // wbr - 0x9c: 0x30a, // radiogroup - 0x9d: 0x6c04, // name - 0x9f: 0x62306, // system - 0xa1: 0x15d05, // color - 0xa2: 0x7f06, // canvas - 0xa3: 0x25504, // html - 0xa5: 0x56f09, // onseeking - 0xac: 0x4f905, // shape - 0xad: 0x25f03, // rel - 0xae: 0x28510, // oncanplaythrough - 0xaf: 0x3760a, // ondragover - 0xb0: 0x62608, // template - 0xb1: 0x1d80d, // foreignObject - 0xb3: 0x9204, // rows - 0xb6: 0x44e07, // listing - 0xb7: 0x49c06, // output - 0xb9: 0x3310b, // contextmenu - 0xbb: 0x11f03, // low - 0xbc: 0x1c602, // rp - 0xbd: 0x5bb09, // onsuspend - 0xbe: 0x13606, // button - 0xbf: 0x4db04, // desc - 0xc1: 0x4e207, // section - 0xc2: 0x52a0a, // onprogress - 0xc3: 0x59e09, // onstorage - 0xc4: 0x2d204, // math - 0xc5: 0x4503, // alt - 0xc7: 0x8a02, // ul - 0xc8: 0x5107, // pattern - 0xc9: 0x4b60c, // onmousewheel - 0xca: 0x35709, // ondragend - 0xcb: 0xaf04, // ruby - 0xcc: 0xc01, // p - 0xcd: 0x31707, // onclose - 0xce: 0x24205, // meter - 0xcf: 0x11807, // bgsound - 0xd2: 0x25106, // height - 0xd4: 0x101, // b - 0xd5: 0x2c308, // itemtype - 0xd8: 0x1bb07, // caption - 0xd9: 0x10c08, // disabled - 0xdb: 0x33808, // menuitem - 0xdc: 0x62003, // svg - 0xdd: 0x18f05, // small - 0xde: 0x44a04, // data - 0xe0: 0x4cb08, // ononline - 0xe1: 0x2a206, // mglyph - 0xe3: 0x6505, // embed - 0xe4: 0x10502, // tr - 0xe5: 0x46b0b, // onloadstart - 0xe7: 0x3c306, // srcdoc - 0xeb: 0x5c408, // ontoggle - 0xed: 0xe703, // bdo - 0xee: 0x4702, // td - 0xef: 0x8305, // aside - 0xf0: 0x29402, // h2 - 0xf1: 0x52c08, // progress - 0xf2: 0x12c0a, // blockquote - 0xf4: 0xf005, // label - 0xf5: 0x601, // i - 0xf7: 0x9207, // rowspan - 0xfb: 0x51709, // onplaying - 0xfd: 0x2a103, // img - 0xfe: 0xf608, // optgroup - 0xff: 0x42307, // content - 0x101: 0x53e0c, // onratechange - 0x103: 0x3da0c, // onhashchange - 0x104: 0x4807, // details - 0x106: 0x40008, // download - 0x109: 0x14009, // translate - 0x10b: 0x4230f, // contenteditable - 0x10d: 0x36b0b, // ondragleave - 0x10e: 0x2106, // accept - 0x10f: 0x57a08, // selected - 0x112: 0x1f20a, // formaction - 0x113: 0x5b506, // center - 0x115: 0x45510, // onloadedmetadata - 0x116: 0x12804, // link - 0x117: 0xdd04, // time - 0x118: 0x19f0b, // crossorigin - 0x119: 0x3bd07, // onfocus - 0x11a: 0x58704, // wrap - 0x11b: 0x42204, // icon - 0x11d: 0x28105, // video - 0x11e: 0x4de05, // class - 0x121: 0x5d40e, // onvolumechange - 0x122: 0xaa06, // onblur - 0x123: 0x2b909, // itemscope - 0x124: 0x61105, // style - 0x127: 0x41e06, // public - 0x129: 0x2320e, // formnovalidate - 0x12a: 0x58206, // onshow - 0x12c: 0x51706, // onplay - 0x12d: 0x3c804, // cite - 0x12e: 0x2bc02, // ms - 0x12f: 0xdb0c, // ontimeupdate - 0x130: 0x10904, // kind - 0x131: 0x2470a, // formtarget - 0x135: 0x3af07, // onended - 0x136: 0x26506, // hidden - 0x137: 0x2c01, // s - 0x139: 0x2280a, // formmethod - 0x13a: 0x3e805, // input - 0x13c: 0x50b02, // h6 - 0x13d: 0xc902, // ol - 0x13e: 0x3420b, // oncuechange - 0x13f: 0x1e50d, // foreignobject - 0x143: 0x4e70e, // onbeforeunload - 0x144: 0x2bd05, // scope - 0x145: 0x39609, // onemptied - 0x146: 0x14b05, // defer - 0x147: 0xc103, // xmp - 0x148: 0x39f10, // ondurationchange - 0x149: 0x1903, // kbd - 0x14c: 0x47609, // onmessage - 0x14d: 0x60006, // option - 0x14e: 0x2eb09, // minlength - 0x14f: 0x32807, // checked - 0x150: 0xce08, // autoplay - 0x152: 0x202, // br - 0x153: 0x2360a, // novalidate - 0x156: 0x6307, // noembed - 0x159: 0x31007, // onclick - 0x15a: 0x47f0b, // onmousedown - 0x15b: 0x3a708, // onchange - 0x15e: 0x3f209, // oninvalid - 0x15f: 0x2bd06, // scoped - 0x160: 0x18808, // controls - 0x161: 0x30b05, // muted - 0x162: 0x58d08, // sortable - 0x163: 0x51106, // usemap - 0x164: 0x1b80a, // figcaption - 0x165: 0x35706, // ondrag - 0x166: 0x26b04, // high - 0x168: 0x3c303, // src - 0x169: 0x15706, // poster - 0x16b: 0x1670e, // annotation-xml - 0x16c: 0x5f704, // step - 0x16d: 0x4, // abbr - 0x16e: 0x1b06, // dialog - 0x170: 0x1202, // li - 0x172: 0x3ed02, // mo - 0x175: 0x1d803, // for - 0x176: 0x1a803, // ins - 0x178: 0x55504, // size - 0x179: 0x43210, // onlanguagechange - 0x17a: 0x8607, // default - 0x17b: 0x1a03, // bdi - 0x17c: 0x4d30a, // onpagehide - 0x17d: 0x6907, // dirname - 0x17e: 0x21404, // type - 0x17f: 0x1f204, // form - 0x181: 0x28509, // oncanplay - 0x182: 0x6103, // dfn - 0x183: 0x46308, // tabindex - 0x186: 0x6502, // em - 0x187: 0x27404, // lang - 0x189: 0x39108, // dropzone - 0x18a: 0x4080a, // onkeypress - 0x18b: 0x23c08, // datetime - 0x18c: 0x16204, // cols - 0x18d: 0x1, // a - 0x18e: 0x4420c, // onloadeddata - 0x190: 0xa605, // audio - 0x192: 0x2e05, // tbody - 0x193: 0x22c06, // method - 0x195: 0xf404, // loop - 0x196: 0x29606, // iframe - 0x198: 0x2d504, // head - 0x19e: 0x5f108, // manifest - 0x19f: 0xb309, // autofocus - 0x1a0: 0x14904, // code - 0x1a1: 0x55906, // strong - 0x1a2: 0x30308, // multiple - 0x1a3: 0xc05, // param - 0x1a6: 0x21107, // enctype - 0x1a7: 0x5b304, // face - 0x1a8: 0xfd09, // plaintext - 0x1a9: 0x26e02, // h1 - 0x1aa: 0x59509, // onstalled - 0x1ad: 0x3d406, // script - 0x1ae: 0x2db06, // spacer - 0x1af: 0x55108, // onresize - 0x1b0: 0x4a20b, // onmouseover - 0x1b1: 0x5cc08, // onunload - 0x1b2: 0x56708, // onseeked - 0x1b4: 0x2140d, // typemustmatch - 0x1b5: 0x1cc06, // figure - 0x1b6: 0x4950a, // onmouseout - 0x1b7: 0x25e03, // pre - 0x1b8: 0x50705, // width - 0x1b9: 0x19906, // sorted - 0x1bb: 0x5704, // nobr - 0x1be: 0x5302, // tt - 0x1bf: 0x1105, // align - 0x1c0: 0x3e607, // oninput - 0x1c3: 0x41807, // onkeyup - 0x1c6: 0x1c00c, // onafterprint - 0x1c7: 0x210e, // accept-charset - 0x1c8: 0x33c06, // itemid - 0x1c9: 0x3e809, // inputmode - 0x1cb: 0x53306, // strike - 0x1cc: 0x5a903, // sub - 0x1cd: 0x10505, // track - 0x1ce: 0x38605, // start - 0x1d0: 0xd608, // basefont - 0x1d6: 0x1aa06, // source - 0x1d7: 0x18206, // legend - 0x1d8: 0x2d405, // thead - 0x1da: 0x8c05, // tfoot - 0x1dd: 0x1ec06, // object - 0x1de: 0x6e05, // media - 0x1df: 0x1670a, // annotation - 0x1e0: 0x20d0b, // formenctype - 0x1e2: 0x3d208, // noscript - 0x1e4: 0x55505, // sizes - 0x1e5: 0x1fc0c, // autocomplete - 0x1e6: 0x9504, // span - 0x1e7: 0x9808, // noframes - 0x1e8: 0x24b06, // target - 0x1e9: 0x38f06, // ondrop - 0x1ea: 0x2b306, // applet - 0x1ec: 0x5a08, // reversed - 0x1f0: 0x2a907, // isindex - 0x1f3: 0x27008, // hreflang - 0x1f5: 0x2f302, // h5 - 0x1f6: 0x4f307, // address - 0x1fa: 0x2e103, // max - 0x1fb: 0xc30b, // placeholder - 0x1fc: 0x2f608, // textarea - 0x1fe: 0x4ad09, // onmouseup - 0x1ff: 0x3800b, // ondragstart + 0x1: 0x8e0a, // mediagroup + 0x2: 0x2cc04, // lang + 0x4: 0x2c09, // accesskey + 0x5: 0x5708, // frameset + 0x7: 0x63608, // onselect + 0x8: 0x70b06, // system + 0xa: 0x64505, // width + 0xc: 0x2710b, // formenctype + 0xd: 0x10102, // ol + 0xe: 0x38b0b, // oncuechange + 0x10: 0x13403, // bdo + 0x11: 0xcf05, // audio + 0x12: 0x18309, // draggable + 0x14: 0x2d905, // video + 0x15: 0x29902, // mn + 0x16: 0x37b04, // menu + 0x17: 0x2b706, // poster + 0x19: 0xb306, // footer + 0x1a: 0x29006, // method + 0x1b: 0x2a008, // datetime + 0x1c: 0x17607, // onabort + 0x1d: 0x1200e, // updateviacache + 0x1e: 0xb905, // async + 0x1f: 0x49106, // onload + 0x21: 0xd308, // oncancel + 0x22: 0x62508, // onseeked + 0x23: 0x2ea05, // image + 0x24: 0x5d412, // onrejectionhandled + 0x26: 0x15d04, // link + 0x27: 0x51106, // output + 0x28: 0x32504, // head + 0x29: 0x4f30c, // onmouseleave + 0x2a: 0x57307, // onpaste + 0x2b: 0x59809, // onplaying + 0x2c: 0x1b407, // colspan + 0x2f: 0x1af05, // color + 0x30: 0x5f104, // size + 0x31: 0x2d00a, // http-equiv + 0x33: 0x601, // i + 0x34: 0x54d0a, // onpagehide + 0x35: 0x68814, // onunhandledrejection + 0x37: 0x41e07, // onerror + 0x3a: 0x11508, // basefont + 0x3f: 0x1303, // nav + 0x40: 0x18004, // kind + 0x41: 0x34b08, // readonly + 0x42: 0x2f006, // mglyph + 0x44: 0x11102, // li + 0x46: 0x2bd06, // hidden + 0x47: 0x70803, // svg + 0x48: 0x57704, // step + 0x49: 0x22709, // integrity + 0x4a: 0x57a06, // public + 0x4c: 0x19703, // col + 0x4d: 0x1680a, // blockquote + 0x4e: 0x34302, // h5 + 0x50: 0x5ad08, // progress + 0x51: 0x5f105, // sizes + 0x52: 0x33902, // h4 + 0x56: 0x32405, // thead + 0x57: 0x7e07, // keytype + 0x58: 0x5ab0a, // onprogress + 0x59: 0x43f09, // inputmode + 0x5a: 0x3a509, // ondragend + 0x5d: 0x39605, // oncut + 0x5e: 0x42b06, // spacer + 0x5f: 0x19708, // colgroup + 0x62: 0x14e02, // is + 0x65: 0xb902, // as + 0x66: 0x53c09, // onoffline + 0x67: 0x32b06, // sorted + 0x69: 0x48110, // onlanguagechange + 0x6c: 0x4310c, // onhashchange + 0x6d: 0xa604, // name + 0x6e: 0xb205, // tfoot + 0x6f: 0x55504, // desc + 0x70: 0x33103, // max + 0x72: 0x1da06, // coords + 0x73: 0x2f502, // h3 + 0x74: 0x6e10e, // onbeforeunload + 0x75: 0x3a04, // rows + 0x76: 0x63806, // select + 0x77: 0xa805, // meter + 0x78: 0x37f06, // itemid + 0x79: 0x5300c, // onmousewheel + 0x7a: 0x5b406, // srcdoc + 0x7d: 0x17c05, // track + 0x7f: 0x30708, // itemtype + 0x82: 0x6302, // mo + 0x83: 0x40f08, // onchange + 0x84: 0x32507, // headers + 0x85: 0x5c80c, // onratechange + 0x86: 0x60419, // onsecuritypolicyviolation + 0x88: 0x49908, // datalist + 0x89: 0x4dc0b, // onmousedown + 0x8a: 0x1df04, // slot + 0x8b: 0x4a410, // onloadedmetadata + 0x8c: 0x1a06, // accept + 0x8d: 0x25006, // object + 0x91: 0x6af0e, // onvolumechange + 0x92: 0x2107, // charset + 0x93: 0x25e13, // onautocompleteerror + 0x94: 0x6913, // allowpaymentrequest + 0x95: 0x2804, // body + 0x96: 0xc407, // default + 0x97: 0x63808, // selected + 0x98: 0x20604, // face + 0x99: 0x1d505, // shape + 0x9b: 0x68008, // ontoggle + 0x9e: 0x64702, // dt + 0x9f: 0x6d904, // mark + 0xa1: 0xb01, // u + 0xa4: 0x6a708, // onunload + 0xa5: 0xde04, // loop + 0xa6: 0x14d08, // disabled + 0xaa: 0x41707, // onended + 0xab: 0x6d30a, // malignmark + 0xad: 0x67709, // onsuspend + 0xae: 0x34505, // mtext + 0xaf: 0x64b06, // onsort + 0xb0: 0x55908, // itemprop + 0xb3: 0x66d09, // itemscope + 0xb4: 0x15c05, // blink + 0xb6: 0x3a506, // ondrag + 0xb7: 0x6602, // ul + 0xb8: 0x25604, // form + 0xb9: 0xf307, // sandbox + 0xba: 0x5705, // frame + 0xbb: 0x1505, // value + 0xbc: 0x65e09, // onstorage + 0xc0: 0x17b02, // rt + 0xc2: 0x202, // br + 0xc3: 0x20e08, // fieldset + 0xc4: 0x2780d, // typemustmatch + 0xc5: 0x6108, // nomodule + 0xc6: 0x4007, // noembed + 0xc7: 0x69a0d, // onbeforeprint + 0xc8: 0x17206, // button + 0xc9: 0x2dd07, // onclick + 0xca: 0x6fe07, // summary + 0xcd: 0xac04, // ruby + 0xce: 0x5b905, // class + 0xcf: 0x3e80b, // ondragstart + 0xd0: 0x21907, // caption + 0xd4: 0x850e, // allowusermedia + 0xd5: 0x4c30b, // onloadstart + 0xd9: 0x15403, // div + 0xda: 0x49d04, // list + 0xdb: 0x32204, // math + 0xdc: 0x43f05, // input + 0xdf: 0x3de0a, // ondragover + 0xe0: 0x2c602, // h2 + 0xe2: 0x19e09, // plaintext + 0xe4: 0x4e70c, // onmouseenter + 0xe7: 0x46d07, // checked + 0xe8: 0x46403, // pre + 0xea: 0x35308, // multiple + 0xeb: 0x16103, // bdi + 0xec: 0x33109, // maxlength + 0xed: 0x7701, // q + 0xee: 0x61b0a, // onauxclick + 0xf0: 0x57003, // wbr + 0xf2: 0x11504, // base + 0xf3: 0x6dd06, // option + 0xf5: 0x40710, // ondurationchange + 0xf7: 0x5508, // noframes + 0xf9: 0x3f908, // dropzone + 0xfb: 0x67105, // scope + 0xfc: 0x9c08, // reversed + 0xfd: 0x3ae0b, // ondragenter + 0xfe: 0x3ee05, // start + 0xff: 0xf903, // xmp + 0x100: 0x5f507, // srclang + 0x101: 0x2ef03, // img + 0x104: 0x101, // b + 0x105: 0x23c03, // for + 0x106: 0xc105, // aside + 0x107: 0x43d07, // oninput + 0x108: 0x34a04, // area + 0x109: 0x28c0a, // formmethod + 0x10a: 0x72004, // wrap + 0x10c: 0x22402, // rp + 0x10d: 0x45f0a, // onkeypress + 0x10e: 0x5102, // tt + 0x110: 0x33b02, // mi + 0x111: 0x35b05, // muted + 0x112: 0xb003, // alt + 0x113: 0x19004, // code + 0x114: 0x4202, // em + 0x115: 0x3b90a, // ondragexit + 0x117: 0x3d04, // span + 0x119: 0x30f08, // manifest + 0x11a: 0x37b08, // menuitem + 0x11b: 0x57f07, // content + 0x11d: 0x6bd09, // onwaiting + 0x11f: 0x4ba09, // onloadend + 0x121: 0x3720d, // oncontextmenu + 0x123: 0x5c206, // onblur + 0x124: 0x3f007, // article + 0x125: 0xa303, // dir + 0x126: 0xe704, // ping + 0x127: 0x23408, // required + 0x128: 0x44909, // oninvalid + 0x129: 0x6d405, // align + 0x12b: 0x57e04, // icon + 0x12c: 0x64902, // h6 + 0x12d: 0x1b404, // cols + 0x12e: 0x2160a, // figcaption + 0x12f: 0x45209, // onkeydown + 0x130: 0x66708, // onsubmit + 0x131: 0x13609, // oncanplay + 0x132: 0x70503, // sup + 0x133: 0xc01, // p + 0x135: 0x3fe09, // onemptied + 0x136: 0x38506, // oncopy + 0x137: 0x55804, // cite + 0x138: 0x39b0a, // ondblclick + 0x13a: 0x4ff0b, // onmousemove + 0x13c: 0x66903, // sub + 0x13d: 0x47b03, // rel + 0x13e: 0xe008, // optgroup + 0x142: 0x3a07, // rowspan + 0x143: 0x36c06, // source + 0x144: 0x1fe08, // noscript + 0x145: 0x55f04, // open + 0x146: 0x1ec03, // ins + 0x147: 0x23c0d, // foreignObject + 0x148: 0x5a10a, // onpopstate + 0x14a: 0x27507, // enctype + 0x14b: 0x25e0e, // onautocomplete + 0x14c: 0x34608, // textarea + 0x14e: 0x2600c, // autocomplete + 0x14f: 0x14002, // hr + 0x150: 0x1ce08, // controls + 0x151: 0xc302, // id + 0x153: 0x21e0c, // onafterprint + 0x155: 0x2490d, // foreignobject + 0x156: 0x31b07, // marquee + 0x157: 0x58e07, // onpause + 0x158: 0x5e202, // dl + 0x159: 0x12c06, // height + 0x15a: 0x33b03, // min + 0x15b: 0xa307, // dirname + 0x15c: 0x1a609, // translate + 0x15d: 0x13004, // html + 0x15e: 0x33b09, // minlength + 0x15f: 0x47a07, // preload + 0x160: 0x70e08, // template + 0x161: 0x3d30b, // ondragleave + 0x164: 0x5b403, // src + 0x165: 0x31506, // strong + 0x167: 0x4c04, // samp + 0x168: 0x6ed07, // address + 0x169: 0x54508, // ononline + 0x16b: 0xfb0b, // placeholder + 0x16c: 0x2ac06, // target + 0x16d: 0x1ee05, // small + 0x16e: 0x6c607, // onwheel + 0x16f: 0x1b90a, // annotation + 0x170: 0x4680a, // spellcheck + 0x171: 0x4607, // details + 0x172: 0xbd06, // canvas + 0x173: 0xeb09, // autofocus + 0x174: 0xc05, // param + 0x176: 0x45708, // download + 0x177: 0x44603, // del + 0x178: 0x36007, // onclose + 0x179: 0x16003, // kbd + 0x17a: 0x30106, // applet + 0x17b: 0x2c804, // href + 0x17c: 0x5ed08, // onresize + 0x17e: 0x4910c, // onloadeddata + 0x180: 0x7402, // tr + 0x181: 0x2a80a, // formtarget + 0x182: 0xca05, // title + 0x183: 0x6f905, // style + 0x184: 0x7a06, // strike + 0x185: 0x59206, // usemap + 0x186: 0x2e406, // iframe + 0x187: 0x1004, // main + 0x189: 0x9707, // picture + 0x18c: 0x2fe05, // ismap + 0x18e: 0x49904, // data + 0x18f: 0xda05, // label + 0x191: 0x3c50e, // referrerpolicy + 0x192: 0x13f02, // th + 0x194: 0x52a06, // prompt + 0x195: 0x5bd07, // section + 0x197: 0x6cd07, // optimum + 0x198: 0x2c304, // high + 0x199: 0x14502, // h1 + 0x19a: 0x65509, // onstalled + 0x19b: 0x15603, // var + 0x19c: 0x11c04, // time + 0x19e: 0x67002, // ms + 0x19f: 0x32506, // header + 0x1a0: 0x4ce09, // onmessage + 0x1a1: 0x56205, // nonce + 0x1a2: 0x2560a, // formaction + 0x1a3: 0x20806, // center + 0x1a4: 0x3704, // nobr + 0x1a5: 0x58905, // table + 0x1a6: 0x49d07, // listing + 0x1a7: 0x18a06, // legend + 0x1a9: 0x28309, // challenge + 0x1aa: 0x23006, // figure + 0x1ab: 0x8e05, // media + 0x1ae: 0x8104, // type + 0x1af: 0x11904, // font + 0x1b0: 0x4ce0e, // onmessageerror + 0x1b1: 0x36508, // seamless + 0x1b2: 0x5f03, // dfn + 0x1b3: 0x19205, // defer + 0x1b4: 0x6b03, // low + 0x1b5: 0x62d09, // onseeking + 0x1b6: 0x5170b, // onmouseover + 0x1b7: 0x29a0a, // novalidate + 0x1b8: 0x7160a, // workertype + 0x1ba: 0x3c107, // itemref + 0x1bd: 0x1, // a + 0x1be: 0x30003, // map + 0x1bf: 0x11a0c, // ontimeupdate + 0x1c0: 0x14707, // bgsound + 0x1c1: 0x3206, // keygen + 0x1c2: 0x2705, // tbody + 0x1c5: 0x64006, // onshow + 0x1c7: 0x2501, // s + 0x1c8: 0x4f07, // pattern + 0x1cc: 0x13610, // oncanplaythrough + 0x1ce: 0x2bf02, // dd + 0x1cf: 0x6f306, // srcset + 0x1d0: 0x15903, // big + 0x1d2: 0x64d08, // sortable + 0x1d3: 0x47407, // onkeyup + 0x1d5: 0x59806, // onplay + 0x1d7: 0x4ac04, // meta + 0x1d8: 0x3f706, // ondrop + 0x1da: 0x5fc08, // onscroll + 0x1db: 0x1e30b, // crossorigin + 0x1dc: 0x5670a, // onpageshow + 0x1dd: 0x4, // abbr + 0x1de: 0x5e02, // td + 0x1df: 0x57f0f, // contenteditable + 0x1e0: 0x25a06, // action + 0x1e1: 0x10a0b, // playsinline + 0x1e2: 0x42507, // onfocus + 0x1e3: 0x2c808, // hreflang + 0x1e5: 0x50a0a, // onmouseout + 0x1e6: 0x5e607, // onreset + 0x1e7: 0x10608, // autoplay + 0x1ea: 0x67106, // scoped + 0x1ec: 0x30a, // radiogroup + 0x1ee: 0x3740b, // contextmenu + 0x1ef: 0x52209, // onmouseup + 0x1f1: 0x2b206, // hgroup + 0x1f2: 0x1f00f, // allowfullscreen + 0x1f3: 0x4b208, // tabindex + 0x1f6: 0x2f707, // isindex + 0x1f7: 0x1a0e, // accept-charset + 0x1f8: 0x2960e, // formnovalidate + 0x1fb: 0x1b90e, // annotation-xml + 0x1fc: 0x4205, // embed + 0x1fd: 0x20006, // script + 0x1fe: 0x16206, // dialog + 0x1ff: 0x1c707, // command } -const atomText = "abbradiogrouparamalignmarkbdialogaccept-charsetbodyaccesskey" + - "genavaluealtdetailsampatternobreversedfnoembedirnamediagroup" + - "ingasyncanvasidefaultfooterowspanoframesetitleaudionblurubya" + - "utofocusandboxmplaceholderautoplaybasefontimeupdatebdoncance" + - "labelooptgrouplaintextrackindisabledivarbgsoundlowbrbigblink" + - "blockquotebuttonabortranslatecodefercolgroupostercolorcolspa" + - "nnotation-xmlcommandraggablegendcontrolsmallcoordsortedcross" + - "originsourcefieldsetfigcaptionafterprintfigurequiredforeignO" + - "bjectforeignobjectformactionautocompleteerrorformenctypemust" + - "matchallengeformmethodformnovalidatetimeterformtargetheightm" + - "lhgroupreloadhiddenhigh1hreflanghttp-equivideoncanplaythroug" + - "h2iframeimageimglyph3isindexismappletitemscopeditemtypemarqu" + - "eematheaderspacermaxlength4minlength5mtextareadonlymultiplem" + - "utedonclickoncloseamlesspellcheckedoncontextmenuitemidoncuec" + - "hangeondblclickondragendondragenterondragleaveondragoverondr" + - "agstarticleondropzonemptiedondurationchangeonendedonerroronf" + - "ocusrcdocitempropenoscriptonhashchangeoninputmodeloninvalido" + - "nkeydownloadonkeypressrclangonkeyupublicontenteditableonlang" + - "uagechangeonloadeddatalistingonloadedmetadatabindexonloadsta" + - "rtonmessageonmousedownonmousemoveonmouseoutputonmouseoveronm" + - "ouseuponmousewheelonofflineononlineonpagehidesclassectionbef" + - "oreunloaddresshapeonpageshowidth6onpausemaponplayingonpopsta" + - "teonprogresstrikeytypeonratechangeonresetonresizestrongonscr" + - "ollonseekedonseekingonselectedonshowraponsortableonstalledon" + - "storageonsubmitemrefacenteronsuspendontoggleonunloadonvolume" + - "changeonwaitingoptimumanifestepromptoptionbeforeprintstylesu" + - "mmarysupsvgsystemplate" +const atomText = "abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobro" + + "wspanoembedetailsampatternoframesetdfnomoduleallowpaymentreq" + + "uestrikeytypeallowusermediagroupictureversedirnameterubyaltf" + + "ooterasyncanvasidefaultitleaudioncancelabelooptgroupingautof" + + "ocusandboxmplaceholderautoplaysinlinebasefontimeupdateviacac" + + "heightmlbdoncanplaythrough1bgsoundisabledivarbigblinkbdialog" + + "blockquotebuttonabortrackindraggablegendcodefercolgrouplaint" + + "extranslatecolorcolspannotation-xmlcommandcontrolshapecoords" + + "lotcrossoriginsmallowfullscreenoscriptfacenterfieldsetfigcap" + + "tionafterprintegrityfigurequiredforeignObjectforeignobjectfo" + + "rmactionautocompleteerrorformenctypemustmatchallengeformmeth" + + "odformnovalidatetimeformtargethgrouposterhiddenhigh2hreflang" + + "http-equivideonclickiframeimageimglyph3isindexismappletitemt" + + "ypemanifestrongmarqueematheadersortedmaxlength4minlength5mte" + + "xtareadonlymultiplemutedoncloseamlessourceoncontextmenuitemi" + + "doncopyoncuechangeoncutondblclickondragendondragenterondrage" + + "xitemreferrerpolicyondragleaveondragoverondragstarticleondro" + + "pzonemptiedondurationchangeonendedonerroronfocuspaceronhashc" + + "hangeoninputmodeloninvalidonkeydownloadonkeypresspellchecked" + + "onkeyupreloadonlanguagechangeonloadeddatalistingonloadedmeta" + + "databindexonloadendonloadstartonmessageerroronmousedownonmou" + + "seenteronmouseleaveonmousemoveonmouseoutputonmouseoveronmous" + + "eupromptonmousewheelonofflineononlineonpagehidescitempropeno" + + "nceonpageshowbronpastepublicontenteditableonpausemaponplayin" + + "gonpopstateonprogressrcdoclassectionbluronratechangeonreject" + + "ionhandledonresetonresizesrclangonscrollonsecuritypolicyviol" + + "ationauxclickonseekedonseekingonselectedonshowidth6onsortabl" + + "eonstalledonstorageonsubmitemscopedonsuspendontoggleonunhand" + + "ledrejectionbeforeprintonunloadonvolumechangeonwaitingonwhee" + + "loptimumalignmarkoptionbeforeunloaddressrcsetstylesummarysup" + + "svgsystemplateworkertypewrap" diff --git a/vendor/golang.org/x/net/html/atom/table_test.go b/vendor/golang.org/x/net/html/atom/table_test.go index 0f2ecce4f..16891054f 100644 --- a/vendor/golang.org/x/net/html/atom/table_test.go +++ b/vendor/golang.org/x/net/html/atom/table_test.go @@ -1,23 +1,28 @@ -// generated by go run gen.go -test; DO NOT EDIT +// Code generated by go generate gen.go; DO NOT EDIT. + +//go:generate go run gen.go -test package atom var testAtomList = []string{ "a", "abbr", - "abbr", "accept", "accept-charset", "accesskey", "action", "address", "align", + "allowfullscreen", + "allowpaymentrequest", + "allowusermedia", "alt", "annotation", "annotation-xml", "applet", "area", "article", + "as", "aside", "async", "audio", @@ -43,7 +48,6 @@ var testAtomList = []string{ "charset", "checked", "cite", - "cite", "class", "code", "col", @@ -52,7 +56,6 @@ var testAtomList = []string{ "cols", "colspan", "command", - "command", "content", "contenteditable", "contextmenu", @@ -60,7 +63,6 @@ var testAtomList = []string{ "coords", "crossorigin", "data", - "data", "datalist", "datetime", "dd", @@ -93,7 +95,6 @@ var testAtomList = []string{ "foreignObject", "foreignobject", "form", - "form", "formaction", "formenctype", "formmethod", @@ -128,6 +129,8 @@ var testAtomList = []string{ "input", "inputmode", "ins", + "integrity", + "is", "isindex", "ismap", "itemid", @@ -140,7 +143,6 @@ var testAtomList = []string{ "keytype", "kind", "label", - "label", "lang", "legend", "li", @@ -149,6 +151,7 @@ var testAtomList = []string{ "listing", "loop", "low", + "main", "malignmark", "manifest", "map", @@ -179,6 +182,8 @@ var testAtomList = []string{ "nobr", "noembed", "noframes", + "nomodule", + "nonce", "noscript", "novalidate", "object", @@ -187,6 +192,7 @@ var testAtomList = []string{ "onafterprint", "onautocomplete", "onautocompleteerror", + "onauxclick", "onbeforeprint", "onbeforeunload", "onblur", @@ -197,11 +203,14 @@ var testAtomList = []string{ "onclick", "onclose", "oncontextmenu", + "oncopy", "oncuechange", + "oncut", "ondblclick", "ondrag", "ondragend", "ondragenter", + "ondragexit", "ondragleave", "ondragover", "ondragstart", @@ -221,9 +230,13 @@ var testAtomList = []string{ "onload", "onloadeddata", "onloadedmetadata", + "onloadend", "onloadstart", "onmessage", + "onmessageerror", "onmousedown", + "onmouseenter", + "onmouseleave", "onmousemove", "onmouseout", "onmouseover", @@ -233,15 +246,18 @@ var testAtomList = []string{ "ononline", "onpagehide", "onpageshow", + "onpaste", "onpause", "onplay", "onplaying", "onpopstate", "onprogress", "onratechange", + "onrejectionhandled", "onreset", "onresize", "onscroll", + "onsecuritypolicyviolation", "onseeked", "onseeking", "onselect", @@ -253,9 +269,11 @@ var testAtomList = []string{ "onsuspend", "ontimeupdate", "ontoggle", + "onunhandledrejection", "onunload", "onvolumechange", "onwaiting", + "onwheel", "open", "optgroup", "optimum", @@ -264,9 +282,11 @@ var testAtomList = []string{ "p", "param", "pattern", + "picture", "ping", "placeholder", "plaintext", + "playsinline", "poster", "pre", "preload", @@ -276,6 +296,7 @@ var testAtomList = []string{ "q", "radiogroup", "readonly", + "referrerpolicy", "rel", "required", "reversed", @@ -297,23 +318,23 @@ var testAtomList = []string{ "shape", "size", "sizes", + "slot", "small", "sortable", "sorted", "source", "spacer", "span", - "span", "spellcheck", "src", "srcdoc", "srclang", + "srcset", "start", "step", "strike", "strong", "style", - "style", "sub", "summary", "sup", @@ -331,7 +352,6 @@ var testAtomList = []string{ "thead", "time", "title", - "title", "tr", "track", "translate", @@ -340,12 +360,14 @@ var testAtomList = []string{ "typemustmatch", "u", "ul", + "updateviacache", "usemap", "value", "var", "video", "wbr", "width", + "workertype", "wrap", "xmp", } diff --git a/vendor/golang.org/x/net/html/const.go b/vendor/golang.org/x/net/html/const.go index 52f651ff6..b37e62124 100644 --- a/vendor/golang.org/x/net/html/const.go +++ b/vendor/golang.org/x/net/html/const.go @@ -52,10 +52,12 @@ var isSpecialElementMap = map[string]bool{ "iframe": true, "img": true, "input": true, - "isindex": true, + "isindex": true, // The 'isindex' element has been removed, but keep it for backwards compatibility. + "keygen": true, "li": true, "link": true, "listing": true, + "main": true, "marquee": true, "menu": true, "meta": true, diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go index 94f496874..822ed42a0 100644 --- a/vendor/golang.org/x/net/html/doc.go +++ b/vendor/golang.org/x/net/html/doc.go @@ -49,18 +49,18 @@ call to Next. For example, to extract an HTML page's anchor text: for { tt := z.Next() switch tt { - case ErrorToken: + case html.ErrorToken: return z.Err() - case TextToken: + case html.TextToken: if depth > 0 { // emitBytes should copy the []byte it receives, // if it doesn't process it immediately. emitBytes(z.Text()) } - case StartTagToken, EndTagToken: + case html.StartTagToken, html.EndTagToken: tn, _ := z.TagName() if len(tn) == 1 && tn[0] == 'a' { - if tt == StartTagToken { + if tt == html.StartTagToken { depth++ } else { depth-- diff --git a/vendor/golang.org/x/net/http/httpproxy/export_test.go b/vendor/golang.org/x/net/http/httpproxy/export_test.go new file mode 100644 index 000000000..36b29d2db --- /dev/null +++ b/vendor/golang.org/x/net/http/httpproxy/export_test.go @@ -0,0 +1,7 @@ +// Copyright 2017 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 httpproxy + +var ExportUseProxy = (*Config).useProxy diff --git a/vendor/golang.org/x/net/http/httpproxy/go19_test.go b/vendor/golang.org/x/net/http/httpproxy/go19_test.go new file mode 100644 index 000000000..2117ca569 --- /dev/null +++ b/vendor/golang.org/x/net/http/httpproxy/go19_test.go @@ -0,0 +1,13 @@ +// Copyright 2017 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. + +// +build go1.9 + +package httpproxy_test + +import "testing" + +func init() { + setHelper = func(t *testing.T) { t.Helper() } +} diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy.go b/vendor/golang.org/x/net/http/httpproxy/proxy.go new file mode 100644 index 000000000..cbe1d2a0a --- /dev/null +++ b/vendor/golang.org/x/net/http/httpproxy/proxy.go @@ -0,0 +1,239 @@ +// Copyright 2017 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 httpproxy provides support for HTTP proxy determination +// based on environment variables, as provided by net/http's +// ProxyFromEnvironment function. +// +// The API is not subject to the Go 1 compatibility promise and may change at +// any time. +package httpproxy + +import ( + "errors" + "fmt" + "net" + "net/url" + "os" + "strings" + "unicode/utf8" + + "golang.org/x/net/idna" +) + +// Config holds configuration for HTTP proxy settings. See +// FromEnvironment for details. +type Config struct { + // HTTPProxy represents the value of the HTTP_PROXY or + // http_proxy environment variable. It will be used as the proxy + // URL for HTTP requests and HTTPS requests unless overridden by + // HTTPSProxy or NoProxy. + HTTPProxy string + + // HTTPSProxy represents the HTTPS_PROXY or https_proxy + // environment variable. It will be used as the proxy URL for + // HTTPS requests unless overridden by NoProxy. + HTTPSProxy string + + // NoProxy represents the NO_PROXY or no_proxy environment + // variable. It specifies URLs that should be excluded from + // proxying as a comma-separated list of domain names or a + // single asterisk (*) to indicate that no proxying should be + // done. A domain name matches that name and all subdomains. A + // domain name with a leading "." matches subdomains only. For + // example "foo.com" matches "foo.com" and "bar.foo.com"; + // ".y.com" matches "x.y.com" but not "y.com". + NoProxy string + + // CGI holds whether the current process is running + // as a CGI handler (FromEnvironment infers this from the + // presence of a REQUEST_METHOD environment variable). + // When this is set, ProxyForURL will return an error + // when HTTPProxy applies, because a client could be + // setting HTTP_PROXY maliciously. See https://golang.org/s/cgihttpproxy. + CGI bool +} + +// FromEnvironment returns a Config instance populated from the +// environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the +// lowercase versions thereof). HTTPS_PROXY takes precedence over +// HTTP_PROXY for https requests. +// +// The environment values may be either a complete URL or a +// "host[:port]", in which case the "http" scheme is assumed. An error +// is returned if the value is a different form. +func FromEnvironment() *Config { + return &Config{ + HTTPProxy: getEnvAny("HTTP_PROXY", "http_proxy"), + HTTPSProxy: getEnvAny("HTTPS_PROXY", "https_proxy"), + NoProxy: getEnvAny("NO_PROXY", "no_proxy"), + CGI: os.Getenv("REQUEST_METHOD") != "", + } +} + +func getEnvAny(names ...string) string { + for _, n := range names { + if val := os.Getenv(n); val != "" { + return val + } + } + return "" +} + +// ProxyFunc returns a function that determines the proxy URL to use for +// a given request URL. Changing the contents of cfg will not affect +// proxy functions created earlier. +// +// A nil URL and nil error are returned if no proxy is defined in the +// environment, or a proxy should not be used for the given request, as +// defined by NO_PROXY. +// +// As a special case, if req.URL.Host is "localhost" (with or without a +// port number), then a nil URL and nil error will be returned. +func (cfg *Config) ProxyFunc() func(reqURL *url.URL) (*url.URL, error) { + // Prevent Config changes from affecting the function calculation. + // TODO Preprocess proxy settings for more efficient evaluation. + cfg1 := *cfg + return cfg1.proxyForURL +} + +func (cfg *Config) proxyForURL(reqURL *url.URL) (*url.URL, error) { + var proxy string + if reqURL.Scheme == "https" { + proxy = cfg.HTTPSProxy + } + if proxy == "" { + proxy = cfg.HTTPProxy + if proxy != "" && cfg.CGI { + return nil, errors.New("refusing to use HTTP_PROXY value in CGI environment; see golang.org/s/cgihttpproxy") + } + } + if proxy == "" { + return nil, nil + } + if !cfg.useProxy(canonicalAddr(reqURL)) { + return nil, nil + } + proxyURL, err := url.Parse(proxy) + if err != nil || + (proxyURL.Scheme != "http" && + proxyURL.Scheme != "https" && + proxyURL.Scheme != "socks5") { + // proxy was bogus. Try prepending "http://" to it and + // see if that parses correctly. If not, we fall + // through and complain about the original one. + if proxyURL, err := url.Parse("http://" + proxy); err == nil { + return proxyURL, nil + } + } + if err != nil { + return nil, fmt.Errorf("invalid proxy address %q: %v", proxy, err) + } + return proxyURL, nil +} + +// useProxy reports whether requests to addr should use a proxy, +// according to the NO_PROXY or no_proxy environment variable. +// addr is always a canonicalAddr with a host and port. +func (cfg *Config) useProxy(addr string) bool { + if len(addr) == 0 { + return true + } + host, _, err := net.SplitHostPort(addr) + if err != nil { + return false + } + if host == "localhost" { + return false + } + if ip := net.ParseIP(host); ip != nil { + if ip.IsLoopback() { + return false + } + } + + noProxy := cfg.NoProxy + if noProxy == "*" { + return false + } + + addr = strings.ToLower(strings.TrimSpace(addr)) + if hasPort(addr) { + addr = addr[:strings.LastIndex(addr, ":")] + } + + for _, p := range strings.Split(noProxy, ",") { + p = strings.ToLower(strings.TrimSpace(p)) + if len(p) == 0 { + continue + } + if hasPort(p) { + p = p[:strings.LastIndex(p, ":")] + } + if addr == p { + return false + } + if len(p) == 0 { + // There is no host part, likely the entry is malformed; ignore. + continue + } + if p[0] == '.' && (strings.HasSuffix(addr, p) || addr == p[1:]) { + // no_proxy ".foo.com" matches "bar.foo.com" or "foo.com" + return false + } + if p[0] != '.' && strings.HasSuffix(addr, p) && addr[len(addr)-len(p)-1] == '.' { + // no_proxy "foo.com" matches "bar.foo.com" + return false + } + } + return true +} + +var portMap = map[string]string{ + "http": "80", + "https": "443", + "socks5": "1080", +} + +// canonicalAddr returns url.Host but always with a ":port" suffix +func canonicalAddr(url *url.URL) string { + addr := url.Hostname() + if v, err := idnaASCII(addr); err == nil { + addr = v + } + port := url.Port() + if port == "" { + port = portMap[url.Scheme] + } + return net.JoinHostPort(addr, port) +} + +// Given a string of the form "host", "host:port", or "[ipv6::address]:port", +// return true if the string includes a port. +func hasPort(s string) bool { return strings.LastIndex(s, ":") > strings.LastIndex(s, "]") } + +func idnaASCII(v string) (string, error) { + // TODO: Consider removing this check after verifying performance is okay. + // Right now punycode verification, length checks, context checks, and the + // permissible character tests are all omitted. It also prevents the ToASCII + // call from salvaging an invalid IDN, when possible. As a result it may be + // possible to have two IDNs that appear identical to the user where the + // ASCII-only version causes an error downstream whereas the non-ASCII + // version does not. + // Note that for correct ASCII IDNs ToASCII will only do considerably more + // work, but it will not cause an allocation. + if isASCII(v) { + return v, nil + } + return idna.Lookup.ToASCII(v) +} + +func isASCII(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy_test.go b/vendor/golang.org/x/net/http/httpproxy/proxy_test.go new file mode 100644 index 000000000..e4af199c6 --- /dev/null +++ b/vendor/golang.org/x/net/http/httpproxy/proxy_test.go @@ -0,0 +1,301 @@ +// Copyright 2017 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 httpproxy_test + +import ( + "bytes" + "errors" + "fmt" + "net/url" + "os" + "strings" + "testing" + + "golang.org/x/net/http/httpproxy" +) + +// setHelper calls t.Helper() for Go 1.9+ (see go19_test.go) and does nothing otherwise. +var setHelper = func(t *testing.T) {} + +type proxyForURLTest struct { + cfg httpproxy.Config + req string // URL to fetch; blank means "http://example.com" + want string + wanterr error +} + +func (t proxyForURLTest) String() string { + var buf bytes.Buffer + space := func() { + if buf.Len() > 0 { + buf.WriteByte(' ') + } + } + if t.cfg.HTTPProxy != "" { + fmt.Fprintf(&buf, "http_proxy=%q", t.cfg.HTTPProxy) + } + if t.cfg.HTTPSProxy != "" { + space() + fmt.Fprintf(&buf, "https_proxy=%q", t.cfg.HTTPSProxy) + } + if t.cfg.NoProxy != "" { + space() + fmt.Fprintf(&buf, "no_proxy=%q", t.cfg.NoProxy) + } + req := "http://example.com" + if t.req != "" { + req = t.req + } + space() + fmt.Fprintf(&buf, "req=%q", req) + return strings.TrimSpace(buf.String()) +} + +var proxyForURLTests = []proxyForURLTest{{ + cfg: httpproxy.Config{ + HTTPProxy: "127.0.0.1:8080", + }, + want: "http://127.0.0.1:8080", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "cache.corp.example.com:1234", + }, + want: "http://cache.corp.example.com:1234", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "cache.corp.example.com", + }, + want: "http://cache.corp.example.com", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "https://cache.corp.example.com", + }, + want: "https://cache.corp.example.com", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "http://127.0.0.1:8080", + }, + want: "http://127.0.0.1:8080", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "https://127.0.0.1:8080", + }, + want: "https://127.0.0.1:8080", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "socks5://127.0.0.1", + }, + want: "socks5://127.0.0.1", +}, { + // Don't use secure for http + cfg: httpproxy.Config{ + HTTPProxy: "http.proxy.tld", + HTTPSProxy: "secure.proxy.tld", + }, + req: "http://insecure.tld/", + want: "http://http.proxy.tld", +}, { + // Use secure for https. + cfg: httpproxy.Config{ + HTTPProxy: "http.proxy.tld", + HTTPSProxy: "secure.proxy.tld", + }, + req: "https://secure.tld/", + want: "http://secure.proxy.tld", +}, { + cfg: httpproxy.Config{ + HTTPProxy: "http.proxy.tld", + HTTPSProxy: "https://secure.proxy.tld", + }, + req: "https://secure.tld/", + want: "https://secure.proxy.tld", +}, { + // Issue 16405: don't use HTTP_PROXY in a CGI environment, + // where HTTP_PROXY can be attacker-controlled. + cfg: httpproxy.Config{ + HTTPProxy: "http://10.1.2.3:8080", + CGI: true, + }, + want: "", + wanterr: errors.New("refusing to use HTTP_PROXY value in CGI environment; see golang.org/s/cgihttpproxy"), +}, { + // HTTPS proxy is still used even in CGI environment. + // (perhaps dubious but it's the historical behaviour). + cfg: httpproxy.Config{ + HTTPSProxy: "https://secure.proxy.tld", + CGI: true, + }, + req: "https://secure.tld/", + want: "https://secure.proxy.tld", +}, { + want: "", +}, { + cfg: httpproxy.Config{ + NoProxy: "example.com", + HTTPProxy: "proxy", + }, + req: "http://example.com/", + want: "", +}, { + cfg: httpproxy.Config{ + NoProxy: ".example.com", + HTTPProxy: "proxy", + }, + req: "http://example.com/", + want: "", +}, { + cfg: httpproxy.Config{ + NoProxy: "ample.com", + HTTPProxy: "proxy", + }, + req: "http://example.com/", + want: "http://proxy", +}, { + cfg: httpproxy.Config{ + NoProxy: "example.com", + HTTPProxy: "proxy", + }, + req: "http://foo.example.com/", + want: "", +}, { + cfg: httpproxy.Config{ + NoProxy: ".foo.com", + HTTPProxy: "proxy", + }, + req: "http://example.com/", + want: "http://proxy", +}} + +func testProxyForURL(t *testing.T, tt proxyForURLTest) { + setHelper(t) + reqURLStr := tt.req + if reqURLStr == "" { + reqURLStr = "http://example.com" + } + reqURL, err := url.Parse(reqURLStr) + if err != nil { + t.Errorf("invalid URL %q", reqURLStr) + return + } + cfg := tt.cfg + proxyForURL := cfg.ProxyFunc() + url, err := proxyForURL(reqURL) + if g, e := fmt.Sprintf("%v", err), fmt.Sprintf("%v", tt.wanterr); g != e { + t.Errorf("%v: got error = %q, want %q", tt, g, e) + return + } + if got := fmt.Sprintf("%s", url); got != tt.want { + t.Errorf("%v: got URL = %q, want %q", tt, url, tt.want) + } + + // Check that changing the Config doesn't change the results + // of the functuon. + cfg = httpproxy.Config{} + url, err = proxyForURL(reqURL) + if g, e := fmt.Sprintf("%v", err), fmt.Sprintf("%v", tt.wanterr); g != e { + t.Errorf("(after mutating config) %v: got error = %q, want %q", tt, g, e) + return + } + if got := fmt.Sprintf("%s", url); got != tt.want { + t.Errorf("(after mutating config) %v: got URL = %q, want %q", tt, url, tt.want) + } +} + +func TestProxyForURL(t *testing.T) { + for _, tt := range proxyForURLTests { + testProxyForURL(t, tt) + } +} + +func TestFromEnvironment(t *testing.T) { + os.Setenv("HTTP_PROXY", "httpproxy") + os.Setenv("HTTPS_PROXY", "httpsproxy") + os.Setenv("NO_PROXY", "noproxy") + os.Setenv("REQUEST_METHOD", "") + got := httpproxy.FromEnvironment() + want := httpproxy.Config{ + HTTPProxy: "httpproxy", + HTTPSProxy: "httpsproxy", + NoProxy: "noproxy", + } + if *got != want { + t.Errorf("unexpected proxy config, got %#v want %#v", got, want) + } +} + +func TestFromEnvironmentWithRequestMethod(t *testing.T) { + os.Setenv("HTTP_PROXY", "httpproxy") + os.Setenv("HTTPS_PROXY", "httpsproxy") + os.Setenv("NO_PROXY", "noproxy") + os.Setenv("REQUEST_METHOD", "PUT") + got := httpproxy.FromEnvironment() + want := httpproxy.Config{ + HTTPProxy: "httpproxy", + HTTPSProxy: "httpsproxy", + NoProxy: "noproxy", + CGI: true, + } + if *got != want { + t.Errorf("unexpected proxy config, got %#v want %#v", got, want) + } +} + +func TestFromEnvironmentLowerCase(t *testing.T) { + os.Setenv("http_proxy", "httpproxy") + os.Setenv("https_proxy", "httpsproxy") + os.Setenv("no_proxy", "noproxy") + os.Setenv("REQUEST_METHOD", "") + got := httpproxy.FromEnvironment() + want := httpproxy.Config{ + HTTPProxy: "httpproxy", + HTTPSProxy: "httpsproxy", + NoProxy: "noproxy", + } + if *got != want { + t.Errorf("unexpected proxy config, got %#v want %#v", got, want) + } +} + +var UseProxyTests = []struct { + host string + match bool +}{ + // Never proxy localhost: + {"localhost", false}, + {"127.0.0.1", false}, + {"127.0.0.2", false}, + {"[::1]", false}, + {"[::2]", true}, // not a loopback address + + {"barbaz.net", false}, // match as .barbaz.net + {"foobar.com", false}, // have a port but match + {"foofoobar.com", true}, // not match as a part of foobar.com + {"baz.com", true}, // not match as a part of barbaz.com + {"localhost.net", true}, // not match as suffix of address + {"local.localhost", true}, // not match as prefix as address + {"barbarbaz.net", true}, // not match because NO_PROXY have a '.' + {"www.foobar.com", false}, // match because NO_PROXY includes "foobar.com" +} + +func TestUseProxy(t *testing.T) { + cfg := &httpproxy.Config{ + NoProxy: "foobar.com, .barbaz.net", + } + for _, test := range UseProxyTests { + if httpproxy.ExportUseProxy(cfg, test.host+":80") != test.match { + t.Errorf("useProxy(%v) = %v, want %v", test.host, !test.match, test.match) + } + } +} + +func TestInvalidNoProxy(t *testing.T) { + cfg := &httpproxy.Config{ + NoProxy: ":1", + } + ok := httpproxy.ExportUseProxy(cfg, "example.com:80") // should not panic + if !ok { + t.Errorf("useProxy unexpected return; got false; want true") + } +} diff --git a/vendor/golang.org/x/net/http2/go19_test.go b/vendor/golang.org/x/net/http2/go19_test.go index 1675d248f..22b000667 100644 --- a/vendor/golang.org/x/net/http2/go19_test.go +++ b/vendor/golang.org/x/net/http2/go19_test.go @@ -46,7 +46,6 @@ func TestServerGracefulShutdown(t *testing.T) { wanth := [][2]string{ {":status", "200"}, {"x-foo", "bar"}, - {"content-type", "text/plain; charset=utf-8"}, {"content-length", "0"}, } if !reflect.DeepEqual(goth, wanth) { diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index eae143ddf..7a502263a 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -220,12 +220,15 @@ func ConfigureServer(s *http.Server, conf *Server) error { } else if s.TLSConfig.CipherSuites != nil { // If they already provided a CipherSuite list, return // an error if it has a bad order or is missing - // ECDHE_RSA_WITH_AES_128_GCM_SHA256. - const requiredCipher = tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + // ECDHE_RSA_WITH_AES_128_GCM_SHA256 or ECDHE_ECDSA_WITH_AES_128_GCM_SHA256. haveRequired := false sawBad := false for i, cs := range s.TLSConfig.CipherSuites { - if cs == requiredCipher { + switch cs { + case tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + // Alternative MTI cipher to not discourage ECDSA-only servers. + // See http://golang.org/cl/30721 for further information. + tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: haveRequired = true } if isBadCipher(cs) { @@ -235,7 +238,7 @@ func ConfigureServer(s *http.Server, conf *Server) error { } } if !haveRequired { - return fmt.Errorf("http2: TLSConfig.CipherSuites is missing HTTP/2-required TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256") + return fmt.Errorf("http2: TLSConfig.CipherSuites is missing an HTTP/2-required AES_128_GCM_SHA256 cipher.") } } @@ -649,7 +652,7 @@ func (sc *serverConn) condlogf(err error, format string, args ...interface{}) { if err == nil { return } - if err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) { + if err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) || err == errPrefaceTimeout { // Boring, expected errors. sc.vlogf(format, args...) } else { @@ -853,8 +856,13 @@ func (sc *serverConn) serve() { } } - if sc.inGoAway && sc.curOpenStreams() == 0 && !sc.needToSendGoAway && !sc.writingFrame { - return + // Start the shutdown timer after sending a GOAWAY. When sending GOAWAY + // with no error code (graceful shutdown), don't start the timer until + // all open streams have been completed. + sentGoAway := sc.inGoAway && !sc.needToSendGoAway && !sc.writingFrame + gracefulShutdownComplete := sc.goAwayCode == ErrCodeNo && sc.curOpenStreams() == 0 + if sentGoAway && sc.shutdownTimer == nil && (sc.goAwayCode != ErrCodeNo || gracefulShutdownComplete) { + sc.shutDownIn(goAwayTimeout) } } } @@ -889,8 +897,11 @@ func (sc *serverConn) sendServeMsg(msg interface{}) { } } -// readPreface reads the ClientPreface greeting from the peer -// or returns an error on timeout or an invalid greeting. +var errPrefaceTimeout = errors.New("timeout waiting for client preface") + +// readPreface reads the ClientPreface greeting from the peer or +// returns errPrefaceTimeout on timeout, or an error if the greeting +// is invalid. func (sc *serverConn) readPreface() error { errc := make(chan error, 1) go func() { @@ -908,7 +919,7 @@ func (sc *serverConn) readPreface() error { defer timer.Stop() select { case <-timer.C: - return errors.New("timeout waiting for client preface") + return errPrefaceTimeout case err := <-errc: if err == nil { if VerboseLogs { @@ -1218,30 +1229,31 @@ func (sc *serverConn) startGracefulShutdown() { sc.shutdownOnce.Do(func() { sc.sendServeMsg(gracefulShutdownMsg) }) } +// After sending GOAWAY, the connection will close after goAwayTimeout. +// If we close the connection immediately after sending GOAWAY, there may +// be unsent data in our kernel receive buffer, which will cause the kernel +// to send a TCP RST on close() instead of a FIN. This RST will abort the +// connection immediately, whether or not the client had received the GOAWAY. +// +// Ideally we should delay for at least 1 RTT + epsilon so the client has +// a chance to read the GOAWAY and stop sending messages. Measuring RTT +// is hard, so we approximate with 1 second. See golang.org/issue/18701. +// +// This is a var so it can be shorter in tests, where all requests uses the +// loopback interface making the expected RTT very small. +// +// TODO: configurable? +var goAwayTimeout = 1 * time.Second + func (sc *serverConn) startGracefulShutdownInternal() { - sc.goAwayIn(ErrCodeNo, 0) + sc.goAway(ErrCodeNo) } func (sc *serverConn) goAway(code ErrCode) { - sc.serveG.check() - var forceCloseIn time.Duration - if code != ErrCodeNo { - forceCloseIn = 250 * time.Millisecond - } else { - // TODO: configurable - forceCloseIn = 1 * time.Second - } - sc.goAwayIn(code, forceCloseIn) -} - -func (sc *serverConn) goAwayIn(code ErrCode, forceCloseIn time.Duration) { sc.serveG.check() if sc.inGoAway { return } - if forceCloseIn != 0 { - sc.shutDownIn(forceCloseIn) - } sc.inGoAway = true sc.needToSendGoAway = true sc.goAwayCode = code @@ -2310,7 +2322,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { clen = strconv.Itoa(len(p)) } _, hasContentType := rws.snapHeader["Content-Type"] - if !hasContentType && bodyAllowedForStatus(rws.status) { + if !hasContentType && bodyAllowedForStatus(rws.status) && len(p) > 0 { ctype = http.DetectContentType(p) } var date string @@ -2478,7 +2490,26 @@ func (w *responseWriter) Header() http.Header { return rws.handlerHeader } +// checkWriteHeaderCode is a copy of net/http's checkWriteHeaderCode. +func checkWriteHeaderCode(code int) { + // Issue 22880: require valid WriteHeader status codes. + // For now we only enforce that it's three digits. + // In the future we might block things over 599 (600 and above aren't defined + // at http://httpwg.org/specs/rfc7231.html#status.codes) + // and we might block under 200 (once we have more mature 1xx support). + // But for now any three digits. + // + // We used to send "HTTP/1.1 000 0" on the wire in responses but there's + // no equivalent bogus thing we can realistically send in HTTP/2, + // so we'll consistently panic instead and help people find their bugs + // early. (We can't return an error from WriteHeader even if we wanted to.) + if code < 100 || code > 999 { + panic(fmt.Sprintf("invalid WriteHeader code %v", code)) + } +} + func (w *responseWriter) WriteHeader(code int) { + checkWriteHeaderCode(code) rws := w.rws if rws == nil { panic("WriteHeader called after Handler finished") diff --git a/vendor/golang.org/x/net/http2/server_test.go b/vendor/golang.org/x/net/http2/server_test.go index b4e832894..bd1ba20d0 100644 --- a/vendor/golang.org/x/net/http2/server_test.go +++ b/vendor/golang.org/x/net/http2/server_test.go @@ -68,6 +68,7 @@ type serverTester struct { func init() { testHookOnPanicMu = new(sync.Mutex) + goAwayTimeout = 25 * time.Millisecond } func resetHooks() { @@ -1717,7 +1718,6 @@ func TestServer_Response_NoData_Header_FooBar(t *testing.T) { wanth := [][2]string{ {":status", "200"}, {"foo-bar", "some-value"}, - {"content-type", "text/plain; charset=utf-8"}, {"content-length", "0"}, } if !reflect.DeepEqual(goth, wanth) { @@ -2952,7 +2952,6 @@ func TestServerDoesntWriteInvalidHeaders(t *testing.T) { wanth := [][2]string{ {":status", "200"}, {"ok1", "x"}, - {"content-type", "text/plain; charset=utf-8"}, {"content-length", "0"}, } if !reflect.DeepEqual(goth, wanth) { @@ -3188,12 +3187,18 @@ func TestConfigureServer(t *testing.T) { CipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, }, }, + { + name: "just the alternative required cipher suite", + tlsConfig: &tls.Config{ + CipherSuites: []uint16{tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, + }, + }, { name: "missing required cipher suite", tlsConfig: &tls.Config{ CipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384}, }, - wantErr: "is missing HTTP/2-required TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", + wantErr: "is missing an HTTP/2-required AES_128_GCM_SHA256 cipher.", }, { name: "required after bad", @@ -3259,7 +3264,6 @@ func TestServerNoAutoContentLengthOnHead(t *testing.T) { headers := st.decodeHeader(h.HeaderBlockFragment()) want := [][2]string{ {":status", "200"}, - {"content-type", "text/plain; charset=utf-8"}, } if !reflect.DeepEqual(headers, want) { t.Errorf("Headers mismatch.\n got: %q\nwant: %q\n", headers, want) diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index adb77ffab..c65f1a397 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -274,6 +274,13 @@ func (cs *clientStream) checkResetOrDone() error { } } +func (cs *clientStream) getStartedWrite() bool { + cc := cs.cc + cc.mu.Lock() + defer cc.mu.Unlock() + return cs.startedWrite +} + func (cs *clientStream) abortRequestBodyWrite(err error) { if err == nil { panic("nil error") @@ -349,14 +356,9 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res return nil, err } traceGotConn(req, cc) - res, err := cc.RoundTrip(req) + res, gotErrAfterReqBodyWrite, err := cc.roundTrip(req) if err != nil && retry <= 6 { - afterBodyWrite := false - if e, ok := err.(afterReqBodyWriteError); ok { - err = e - afterBodyWrite = true - } - if req, err = shouldRetryRequest(req, err, afterBodyWrite); err == nil { + if req, err = shouldRetryRequest(req, err, gotErrAfterReqBodyWrite); err == nil { // After the first retry, do exponential backoff with 10% jitter. if retry == 0 { continue @@ -394,16 +396,6 @@ var ( errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY") ) -// afterReqBodyWriteError is a wrapper around errors returned by ClientConn.RoundTrip. -// It is used to signal that err happened after part of Request.Body was sent to the server. -type afterReqBodyWriteError struct { - err error -} - -func (e afterReqBodyWriteError) Error() string { - return e.err.Error() + "; some request body already written" -} - // shouldRetryRequest is called by RoundTrip when a request fails to get // response headers. It is always called with a non-nil error. // It returns either a request to retry (either the same request, or a @@ -752,8 +744,13 @@ func actualContentLength(req *http.Request) int64 { } func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { + resp, _, err := cc.roundTrip(req) + return resp, err +} + +func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAfterReqBodyWrite bool, err error) { if err := checkConnHeaders(req); err != nil { - return nil, err + return nil, false, err } if cc.idleTimer != nil { cc.idleTimer.Stop() @@ -761,14 +758,14 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { trailers, err := commaSeparatedTrailers(req) if err != nil { - return nil, err + return nil, false, err } hasTrailers := trailers != "" cc.mu.Lock() if err := cc.awaitOpenSlotForRequest(req); err != nil { cc.mu.Unlock() - return nil, err + return nil, false, err } body := req.Body @@ -802,7 +799,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { hdrs, err := cc.encodeHeaders(req, requestedGzip, trailers, contentLen) if err != nil { cc.mu.Unlock() - return nil, err + return nil, false, err } cs := cc.newStream() @@ -814,7 +811,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { cc.wmu.Lock() endStream := !hasBody && !hasTrailers - werr := cc.writeHeaders(cs.ID, endStream, hdrs) + werr := cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs) cc.wmu.Unlock() traceWroteHeaders(cs.trace) cc.mu.Unlock() @@ -828,7 +825,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { // Don't bother sending a RST_STREAM (our write already failed; // no need to keep writing) traceWroteRequest(cs.trace, werr) - return nil, werr + return nil, false, werr } var respHeaderTimer <-chan time.Time @@ -847,7 +844,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { bodyWritten := false ctx := reqContext(req) - handleReadLoopResponse := func(re resAndError) (*http.Response, error) { + handleReadLoopResponse := func(re resAndError) (*http.Response, bool, error) { res := re.res if re.err != nil || res.StatusCode > 299 { // On error or status code 3xx, 4xx, 5xx, etc abort any @@ -863,18 +860,12 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { cs.abortRequestBodyWrite(errStopReqBodyWrite) } if re.err != nil { - cc.mu.Lock() - afterBodyWrite := cs.startedWrite - cc.mu.Unlock() cc.forgetStreamID(cs.ID) - if afterBodyWrite { - return nil, afterReqBodyWriteError{re.err} - } - return nil, re.err + return nil, cs.getStartedWrite(), re.err } res.Request = req res.TLS = cc.tlsState - return res, nil + return res, false, nil } for { @@ -889,7 +880,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) } cc.forgetStreamID(cs.ID) - return nil, errTimeout + return nil, cs.getStartedWrite(), errTimeout case <-ctx.Done(): if !hasBody || bodyWritten { cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) @@ -898,7 +889,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) } cc.forgetStreamID(cs.ID) - return nil, ctx.Err() + return nil, cs.getStartedWrite(), ctx.Err() case <-req.Cancel: if !hasBody || bodyWritten { cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) @@ -907,12 +898,12 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) } cc.forgetStreamID(cs.ID) - return nil, errRequestCanceled + return nil, cs.getStartedWrite(), errRequestCanceled case <-cs.peerReset: // processResetStream already removed the // stream from the streams map; no need for // forgetStreamID. - return nil, cs.resetErr + return nil, cs.getStartedWrite(), cs.resetErr case err := <-bodyWriter.resc: // Prefer the read loop's response, if available. Issue 16102. select { @@ -921,7 +912,7 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { default: } if err != nil { - return nil, err + return nil, cs.getStartedWrite(), err } bodyWritten = true if d := cc.responseHeaderTimeout(); d != 0 { @@ -973,13 +964,12 @@ func (cc *ClientConn) awaitOpenSlotForRequest(req *http.Request) error { } // requires cc.wmu be held -func (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, hdrs []byte) error { +func (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, maxFrameSize int, hdrs []byte) error { first := true // first frame written (HEADERS is first, then CONTINUATION) - frameSize := int(cc.maxFrameSize) for len(hdrs) > 0 && cc.werr == nil { chunk := hdrs - if len(chunk) > frameSize { - chunk = chunk[:frameSize] + if len(chunk) > maxFrameSize { + chunk = chunk[:maxFrameSize] } hdrs = hdrs[len(chunk):] endHeaders := len(hdrs) == 0 @@ -1096,13 +1086,17 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( } } + cc.mu.Lock() + maxFrameSize := int(cc.maxFrameSize) + cc.mu.Unlock() + cc.wmu.Lock() defer cc.wmu.Unlock() // Two ways to send END_STREAM: either with trailers, or // with an empty DATA frame. if len(trls) > 0 { - err = cc.writeHeaders(cs.ID, true, trls) + err = cc.writeHeaders(cs.ID, true, maxFrameSize, trls) } else { err = cc.fr.WriteData(cs.ID, true, nil) } @@ -1382,17 +1376,12 @@ func (cc *ClientConn) streamByID(id uint32, andRemove bool) *clientStream { // clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop. type clientConnReadLoop struct { cc *ClientConn - activeRes map[uint32]*clientStream // keyed by streamID closeWhenIdle bool } // readLoop runs in its own goroutine and reads and dispatches frames. func (cc *ClientConn) readLoop() { - rl := &clientConnReadLoop{ - cc: cc, - activeRes: make(map[uint32]*clientStream), - } - + rl := &clientConnReadLoop{cc: cc} defer rl.cleanup() cc.readerErr = rl.run() if ce, ok := cc.readerErr.(ConnectionError); ok { @@ -1447,10 +1436,8 @@ func (rl *clientConnReadLoop) cleanup() { } else if err == io.EOF { err = io.ErrUnexpectedEOF } - for _, cs := range rl.activeRes { - cs.bufPipe.CloseWithError(err) - } for _, cs := range cc.streams { + cs.bufPipe.CloseWithError(err) // no-op if already closed select { case cs.resc <- resAndError{err: err}: default: @@ -1528,7 +1515,7 @@ func (rl *clientConnReadLoop) run() error { } return err } - if rl.closeWhenIdle && gotReply && maybeIdle && len(rl.activeRes) == 0 { + if rl.closeWhenIdle && gotReply && maybeIdle { cc.closeIfIdle() } } @@ -1536,13 +1523,31 @@ func (rl *clientConnReadLoop) run() error { func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { cc := rl.cc - cs := cc.streamByID(f.StreamID, f.StreamEnded()) + cs := cc.streamByID(f.StreamID, false) if cs == nil { // We'd get here if we canceled a request while the // server had its response still in flight. So if this // was just something we canceled, ignore it. return nil } + if f.StreamEnded() { + // Issue 20521: If the stream has ended, streamByID() causes + // clientStream.done to be closed, which causes the request's bodyWriter + // to be closed with an errStreamClosed, which may be received by + // clientConn.RoundTrip before the result of processing these headers. + // Deferring stream closure allows the header processing to occur first. + // clientConn.RoundTrip may still receive the bodyWriter error first, but + // the fix for issue 16102 prioritises any response. + // + // Issue 22413: If there is no request body, we should close the + // stream before writing to cs.resc so that the stream is closed + // immediately once RoundTrip returns. + if cs.req.Body != nil { + defer cc.forgetStreamID(f.StreamID) + } else { + cc.forgetStreamID(f.StreamID) + } + } if !cs.firstByte { if cs.trace != nil { // TODO(bradfitz): move first response byte earlier, @@ -1566,6 +1571,7 @@ func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { } // Any other error type is a stream error. cs.cc.writeStreamReset(f.StreamID, ErrCodeProtocol, err) + cc.forgetStreamID(cs.ID) cs.resc <- resAndError{err: err} return nil // return nil from process* funcs to keep conn alive } @@ -1573,9 +1579,6 @@ func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { // (nil, nil) special case. See handleResponse docs. return nil } - if res.Body != noBody { - rl.activeRes[cs.ID] = cs - } cs.resTrailer = &res.Trailer cs.resc <- resAndError{res: res} return nil @@ -1595,11 +1598,11 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra status := f.PseudoValue("status") if status == "" { - return nil, errors.New("missing status pseudo header") + return nil, errors.New("malformed response from server: missing status pseudo header") } statusCode, err := strconv.Atoi(status) if err != nil { - return nil, errors.New("malformed non-numeric status pseudo header") + return nil, errors.New("malformed response from server: malformed non-numeric status pseudo header") } if statusCode == 100 { @@ -1841,6 +1844,14 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { return nil } if f.Length > 0 { + if cs.req.Method == "HEAD" && len(data) > 0 { + cc.logf("protocol error: received DATA on a HEAD request") + rl.endStreamError(cs, StreamError{ + StreamID: f.StreamID, + Code: ErrCodeProtocol, + }) + return nil + } // Check connection-level flow control. cc.mu.Lock() if cs.inflow.available() >= int32(f.Length) { @@ -1902,11 +1913,10 @@ func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { err = io.EOF code = cs.copyTrailers } - cs.bufPipe.closeWithErrorAndCode(err, code) - delete(rl.activeRes, cs.ID) if isConnectionCloseRequest(cs.req) { rl.closeWhenIdle = true } + cs.bufPipe.closeWithErrorAndCode(err, code) select { case cs.resc <- resAndError{err: err}: @@ -2033,7 +2043,6 @@ func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { cs.bufPipe.CloseWithError(err) cs.cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl } - delete(rl.activeRes, cs.ID) return nil } diff --git a/vendor/golang.org/x/net/http2/transport_test.go b/vendor/golang.org/x/net/http2/transport_test.go index 0126ff483..adee48cd3 100644 --- a/vendor/golang.org/x/net/http2/transport_test.go +++ b/vendor/golang.org/x/net/http2/transport_test.go @@ -13,6 +13,7 @@ import ( "fmt" "io" "io/ioutil" + "log" "math/rand" "net" "net/http" @@ -2290,6 +2291,65 @@ func TestTransportReadHeadResponse(t *testing.T) { ct.run() } +func TestTransportReadHeadResponseWithBody(t *testing.T) { + // This test use not valid response format. + // Discarding logger output to not spam tests output. + log.SetOutput(ioutil.Discard) + defer log.SetOutput(os.Stderr) + + response := "redirecting to /elsewhere" + ct := newClientTester(t) + clientDone := make(chan struct{}) + ct.client = func() error { + defer close(clientDone) + req, _ := http.NewRequest("HEAD", "https://dummy.tld/", nil) + res, err := ct.tr.RoundTrip(req) + if err != nil { + return err + } + if res.ContentLength != int64(len(response)) { + return fmt.Errorf("Content-Length = %d; want %d", res.ContentLength, len(response)) + } + slurp, err := ioutil.ReadAll(res.Body) + if err != nil { + return fmt.Errorf("ReadAll: %v", err) + } + if len(slurp) > 0 { + return fmt.Errorf("Unexpected non-empty ReadAll body: %q", slurp) + } + return nil + } + ct.server = func() error { + ct.greet() + for { + f, err := ct.fr.ReadFrame() + if err != nil { + t.Logf("ReadFrame: %v", err) + return nil + } + hf, ok := f.(*HeadersFrame) + if !ok { + continue + } + var buf bytes.Buffer + enc := hpack.NewEncoder(&buf) + enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) + enc.WriteField(hpack.HeaderField{Name: "content-length", Value: strconv.Itoa(len(response))}) + ct.fr.WriteHeaders(HeadersFrameParam{ + StreamID: hf.StreamID, + EndHeaders: true, + EndStream: false, + BlockFragment: buf.Bytes(), + }) + ct.fr.WriteData(hf.StreamID, true, []byte(response)) + + <-clientDone + return nil + } + } + ct.run() +} + type neverEnding byte func (b neverEnding) Read(p []byte) (int, error) { @@ -3043,6 +3103,34 @@ func TestTransportCancelDataResponseRace(t *testing.T) { } } +// Issue 21316: It should be safe to reuse an http.Request after the +// request has completed. +func TestTransportNoRaceOnRequestObjectAfterRequestComplete(t *testing.T) { + st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(200) + io.WriteString(w, "body") + }, optOnlyServer) + defer st.Close() + + tr := &Transport{TLSClientConfig: tlsConfigInsecure} + defer tr.CloseIdleConnections() + + req, _ := http.NewRequest("GET", st.ts.URL, nil) + resp, err := tr.RoundTrip(req) + if err != nil { + t.Fatal(err) + } + if _, err = io.Copy(ioutil.Discard, resp.Body); err != nil { + t.Fatalf("error reading response body: %v", err) + } + if err := resp.Body.Close(); err != nil { + t.Fatalf("error closing response body: %v", err) + } + + // This access of req.Header should not race with code in the transport. + req.Header = http.Header{} +} + func TestTransportRetryAfterGOAWAY(t *testing.T) { var dialer struct { sync.Mutex @@ -3301,6 +3389,11 @@ func TestTransportRetryHasLimit(t *testing.T) { } func TestTransportResponseDataBeforeHeaders(t *testing.T) { + // This test use not valid response format. + // Discarding logger output to not spam tests output. + log.SetOutput(ioutil.Discard) + defer log.SetOutput(os.Stderr) + ct := newClientTester(t) ct.client = func() error { defer ct.cc.(*net.TCPConn).CloseWrite() @@ -3678,6 +3771,74 @@ func benchSimpleRoundTrip(b *testing.B, nHeaders int) { } } +type infiniteReader struct{} + +func (r infiniteReader) Read(b []byte) (int, error) { + return len(b), nil +} + +// Issue 20521: it is not an error to receive a response and end stream +// from the server without the body being consumed. +func TestTransportResponseAndResetWithoutConsumingBodyRace(t *testing.T) { + st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + }, optOnlyServer) + defer st.Close() + + tr := &Transport{TLSClientConfig: tlsConfigInsecure} + defer tr.CloseIdleConnections() + + // The request body needs to be big enough to trigger flow control. + req, _ := http.NewRequest("PUT", st.ts.URL, infiniteReader{}) + res, err := tr.RoundTrip(req) + if err != nil { + t.Fatal(err) + } + if res.StatusCode != http.StatusOK { + t.Fatalf("Response code = %v; want %v", res.StatusCode, http.StatusOK) + } +} + +// Verify transport doesn't crash when receiving bogus response lacking a :status header. +// Issue 22880. +func TestTransportHandlesInvalidStatuslessResponse(t *testing.T) { + ct := newClientTester(t) + ct.client = func() error { + req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) + _, err := ct.tr.RoundTrip(req) + const substr = "malformed response from server: missing status pseudo header" + if !strings.Contains(fmt.Sprint(err), substr) { + return fmt.Errorf("RoundTrip error = %v; want substring %q", err, substr) + } + return nil + } + ct.server = func() error { + ct.greet() + var buf bytes.Buffer + enc := hpack.NewEncoder(&buf) + + for { + f, err := ct.fr.ReadFrame() + if err != nil { + return err + } + switch f := f.(type) { + case *HeadersFrame: + enc.WriteField(hpack.HeaderField{Name: "content-type", Value: "text/html"}) // no :status header + ct.fr.WriteHeaders(HeadersFrameParam{ + StreamID: f.StreamID, + EndHeaders: true, + EndStream: false, // we'll send some DATA to try to crash the transport + BlockFragment: buf.Bytes(), + }) + ct.fr.WriteData(f.StreamID, true, []byte("payload")) + return nil + } + } + } + ct.run() +} + func BenchmarkClientRequestHeaders(b *testing.B) { b.Run(" 0 Headers", func(b *testing.B) { benchSimpleRoundTrip(b, 0) }) b.Run(" 10 Headers", func(b *testing.B) { benchSimpleRoundTrip(b, 10) }) diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go index 6b0dfae31..54ab4a88e 100644 --- a/vendor/golang.org/x/net/http2/write.go +++ b/vendor/golang.org/x/net/http2/write.go @@ -10,7 +10,6 @@ import ( "log" "net/http" "net/url" - "time" "golang.org/x/net/http2/hpack" "golang.org/x/net/lex/httplex" @@ -90,11 +89,7 @@ type writeGoAway struct { func (p *writeGoAway) writeFrame(ctx writeContext) error { err := ctx.Framer().WriteGoAway(p.maxStreamID, p.code, nil) - if p.code != 0 { - ctx.Flush() // ignore error: we're hanging up on them anyway - time.Sleep(50 * time.Millisecond) - ctx.CloseConn() - } + ctx.Flush() // ignore error: we're hanging up on them anyway return err } diff --git a/vendor/golang.org/x/net/idna/idna.go b/vendor/golang.org/x/net/idna/idna.go index eb2473507..346fe4423 100644 --- a/vendor/golang.org/x/net/idna/idna.go +++ b/vendor/golang.org/x/net/idna/idna.go @@ -21,6 +21,7 @@ import ( "unicode/utf8" "golang.org/x/text/secure/bidirule" + "golang.org/x/text/unicode/bidi" "golang.org/x/text/unicode/norm" ) @@ -68,7 +69,7 @@ func VerifyDNSLength(verify bool) Option { } // RemoveLeadingDots removes leading label separators. Leading runes that map to -// dots, such as U+3002, are removed as well. +// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. // // This is the behavior suggested by the UTS #46 and is adopted by some // browsers. @@ -92,7 +93,7 @@ func ValidateLabels(enable bool) Option { } } -// StrictDomainName limits the set of permissable ASCII characters to those +// StrictDomainName limits the set of permissible ASCII characters to those // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the // hyphen). This is set by default for MapForLookup and ValidateForRegistration. // @@ -142,7 +143,6 @@ func MapForLookup() Option { o.mapping = validateAndMap StrictDomainName(true)(o) ValidateLabels(true)(o) - RemoveLeadingDots(true)(o) } } @@ -160,14 +160,14 @@ type options struct { // mapping implements a validation and mapping step as defined in RFC 5895 // or UTS 46, tailored to, for example, domain registration or lookup. - mapping func(p *Profile, s string) (string, error) + mapping func(p *Profile, s string) (mapped string, isBidi bool, err error) // bidirule, if specified, checks whether s conforms to the Bidi Rule // defined in RFC 5893. bidirule func(s string) bool } -// A Profile defines the configuration of a IDNA mapper. +// A Profile defines the configuration of an IDNA mapper. type Profile struct { options } @@ -251,23 +251,21 @@ var ( punycode = &Profile{} lookup = &Profile{options{ - transitional: true, - useSTD3Rules: true, - validateLabels: true, - removeLeadingDots: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + transitional: true, + useSTD3Rules: true, + validateLabels: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} display = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - removeLeadingDots: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + useSTD3Rules: true, + validateLabels: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} registration = &Profile{options{ useSTD3Rules: true, @@ -302,14 +300,16 @@ func (e runeError) Error() string { // see http://www.unicode.org/reports/tr46. func (p *Profile) process(s string, toASCII bool) (string, error) { var err error + var isBidi bool if p.mapping != nil { - s, err = p.mapping(p, s) + s, isBidi, err = p.mapping(p, s) } // Remove leading empty labels. if p.removeLeadingDots { for ; len(s) > 0 && s[0] == '.'; s = s[1:] { } } + // TODO: allow for a quick check of the tables data. // It seems like we should only create this error on ToASCII, but the // UTS 46 conformance tests suggests we should always check this. if err == nil && p.verifyDNSLength && s == "" { @@ -335,6 +335,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { // Spec says keep the old label. continue } + isBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight labels.set(u) if err == nil && p.validateLabels { err = p.fromPuny(p, u) @@ -349,6 +350,14 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { err = p.validateLabel(label) } } + if isBidi && p.bidirule != nil && err == nil { + for labels.reset(); !labels.done(); labels.next() { + if !p.bidirule(labels.label()) { + err = &labelError{s, "B"} + break + } + } + } if toASCII { for labels.reset(); !labels.done(); labels.next() { label := labels.label() @@ -380,16 +389,26 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { return s, err } -func normalize(p *Profile, s string) (string, error) { - return norm.NFC.String(s), nil +func normalize(p *Profile, s string) (mapped string, isBidi bool, err error) { + // TODO: consider first doing a quick check to see if any of these checks + // need to be done. This will make it slower in the general case, but + // faster in the common case. + mapped = norm.NFC.String(s) + isBidi = bidirule.DirectionString(mapped) == bidi.RightToLeft + return mapped, isBidi, nil } -func validateRegistration(p *Profile, s string) (string, error) { +func validateRegistration(p *Profile, s string) (idem string, bidi bool, err error) { + // TODO: filter need for normalization in loop below. if !norm.NFC.IsNormalString(s) { - return s, &labelError{s, "V1"} + return s, false, &labelError{s, "V1"} } for i := 0; i < len(s); { v, sz := trie.lookupString(s[i:]) + if sz == 0 { + return s, bidi, runeError(utf8.RuneError) + } + bidi = bidi || info(v).isBidi(s[i:]) // Copy bytes not copied so far. switch p.simplify(info(v).category()) { // TODO: handle the NV8 defined in the Unicode idna data set to allow @@ -397,21 +416,50 @@ func validateRegistration(p *Profile, s string) (string, error) { case valid, deviation: case disallowed, mapped, unknown, ignored: r, _ := utf8.DecodeRuneInString(s[i:]) - return s, runeError(r) + return s, bidi, runeError(r) } i += sz } - return s, nil + return s, bidi, nil } -func validateAndMap(p *Profile, s string) (string, error) { +func (c info) isBidi(s string) bool { + if !c.isMapped() { + return c&attributesMask == rtl + } + // TODO: also store bidi info for mapped data. This is possible, but a bit + // cumbersome and not for the common case. + p, _ := bidi.LookupString(s) + switch p.Class() { + case bidi.R, bidi.AL, bidi.AN: + return true + } + return false +} + +func validateAndMap(p *Profile, s string) (vm string, bidi bool, err error) { var ( - err error - b []byte - k int + b []byte + k int ) + // combinedInfoBits contains the or-ed bits of all runes. We use this + // to derive the mayNeedNorm bit later. This may trigger normalization + // overeagerly, but it will not do so in the common case. The end result + // is another 10% saving on BenchmarkProfile for the common case. + var combinedInfoBits info for i := 0; i < len(s); { v, sz := trie.lookupString(s[i:]) + if sz == 0 { + b = append(b, s[k:i]...) + b = append(b, "\ufffd"...) + k = len(s) + if err == nil { + err = runeError(utf8.RuneError) + } + break + } + combinedInfoBits |= info(v) + bidi = bidi || info(v).isBidi(s[i:]) start := i i += sz // Copy bytes not copied so far. @@ -438,7 +486,9 @@ func validateAndMap(p *Profile, s string) (string, error) { } if k == 0 { // No changes so far. - s = norm.NFC.String(s) + if combinedInfoBits&mayNeedNorm != 0 { + s = norm.NFC.String(s) + } } else { b = append(b, s[k:]...) if norm.NFC.QuickSpan(b) != len(b) { @@ -447,7 +497,7 @@ func validateAndMap(p *Profile, s string) (string, error) { // TODO: the punycode converters require strings as input. s = string(b) } - return s, err + return s, bidi, err } // A labelIter allows iterating over domain name labels. @@ -542,8 +592,13 @@ func validateFromPunycode(p *Profile, s string) error { if !norm.NFC.IsNormalString(s) { return &labelError{s, "V1"} } + // TODO: detect whether string may have to be normalized in the following + // loop. for i := 0; i < len(s); { v, sz := trie.lookupString(s[i:]) + if sz == 0 { + return runeError(utf8.RuneError) + } if c := p.simplify(info(v).category()); c != valid && c != deviation { return &labelError{s, "V6"} } @@ -616,16 +671,13 @@ var joinStates = [][numJoinTypes]joinState{ // validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are // already implicitly satisfied by the overall implementation. -func (p *Profile) validateLabel(s string) error { +func (p *Profile) validateLabel(s string) (err error) { if s == "" { if p.verifyDNSLength { return &labelError{s, "A4"} } return nil } - if p.bidirule != nil && !p.bidirule(s) { - return &labelError{s, "B"} - } if !p.validateLabels { return nil } diff --git a/vendor/golang.org/x/net/idna/idna_test.go b/vendor/golang.org/x/net/idna/idna_test.go index b1bc6fa22..0b067cac9 100644 --- a/vendor/golang.org/x/net/idna/idna_test.go +++ b/vendor/golang.org/x/net/idna/idna_test.go @@ -39,5 +39,70 @@ func TestIDNA(t *testing.T) { } } +func TestIDNASeparators(t *testing.T) { + type subCase struct { + unicode string + wantASCII string + wantErr bool + } + + testCases := []struct { + name string + profile *Profile + subCases []subCase + }{ + { + name: "Punycode", profile: Punycode, + subCases: []subCase{ + {"example\u3002jp", "xn--examplejp-ck3h", false}, + {"東京\uFF0Ejp", "xn--jp-l92cn98g071o", false}, + {"大阪\uFF61jp", "xn--jp-ku9cz72u463f", false}, + }, + }, + { + name: "Lookup", profile: Lookup, + subCases: []subCase{ + {"example\u3002jp", "example.jp", false}, + {"東京\uFF0Ejp", "xn--1lqs71d.jp", false}, + {"大阪\uFF61jp", "xn--pssu33l.jp", false}, + }, + }, + { + name: "Display", profile: Display, + subCases: []subCase{ + {"example\u3002jp", "example.jp", false}, + {"東京\uFF0Ejp", "xn--1lqs71d.jp", false}, + {"大阪\uFF61jp", "xn--pssu33l.jp", false}, + }, + }, + { + name: "Registration", profile: Registration, + subCases: []subCase{ + {"example\u3002jp", "", true}, + {"東京\uFF0Ejp", "", true}, + {"大阪\uFF61jp", "", true}, + }, + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + for _, c := range tc.subCases { + gotA, err := tc.profile.ToASCII(c.unicode) + if c.wantErr { + if err == nil { + t.Errorf("ToASCII(%q): got no error, but an error expected", c.unicode) + } + } else { + if err != nil { + t.Errorf("ToASCII(%q): got err=%v, but no error expected", c.unicode, err) + } else if gotA != c.wantASCII { + t.Errorf("ToASCII(%q): got %q, want %q", c.unicode, gotA, c.wantASCII) + } + } + } + }) + } +} + // TODO(nigeltao): test errors, once we've specified when ToASCII and ToUnicode // return errors. diff --git a/vendor/golang.org/x/net/idna/tables.go b/vendor/golang.org/x/net/idna/tables.go index d2819345f..f910b2691 100644 --- a/vendor/golang.org/x/net/idna/tables.go +++ b/vendor/golang.org/x/net/idna/tables.go @@ -3,7 +3,7 @@ package idna // UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" +const UnicodeVersion = "10.0.0" var mappings string = "" + // Size: 8176 bytes "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + @@ -544,7 +544,7 @@ func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// idnaTrie. Total size: 28496 bytes (27.83 KiB). Checksum: 43288b883596640e. +// idnaTrie. Total size: 29052 bytes (28.37 KiB). Checksum: ef06e7ecc26f36dd. type idnaTrie struct{} func newIdnaTrie(i int) *idnaTrie { @@ -554,17 +554,17 @@ func newIdnaTrie(i int) *idnaTrie { // lookupValue determines the type of block n and looks up the value for b. func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { switch { - case n < 123: + case n < 125: return uint16(idnaValues[n<<6+uint32(b)]) default: - n -= 123 + n -= 125 return uint16(idnaSparse.lookup(n, b)) } } -// idnaValues: 125 blocks, 8000 entries, 16000 bytes +// idnaValues: 127 blocks, 8128 entries, 16256 bytes // The third block is the zero block. -var idnaValues = [8000]uint16{ +var idnaValues = [8128]uint16{ // Block 0x0, offset 0x0 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, @@ -675,14 +675,14 @@ var idnaValues = [8000]uint16{ 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, // Block 0xa, offset 0x280 - 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x1308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, - 0x286: 0x1308, 0x287: 0x1308, 0x288: 0x1308, 0x289: 0x1308, 0x28a: 0x1308, 0x28b: 0x1308, - 0x28c: 0x1308, 0x28d: 0x1308, 0x28e: 0x1308, 0x28f: 0x13c0, 0x290: 0x1308, 0x291: 0x1308, - 0x292: 0x1308, 0x293: 0x1308, 0x294: 0x1308, 0x295: 0x1308, 0x296: 0x1308, 0x297: 0x1308, - 0x298: 0x1308, 0x299: 0x1308, 0x29a: 0x1308, 0x29b: 0x1308, 0x29c: 0x1308, 0x29d: 0x1308, - 0x29e: 0x1308, 0x29f: 0x1308, 0x2a0: 0x1308, 0x2a1: 0x1308, 0x2a2: 0x1308, 0x2a3: 0x1308, - 0x2a4: 0x1308, 0x2a5: 0x1308, 0x2a6: 0x1308, 0x2a7: 0x1308, 0x2a8: 0x1308, 0x2a9: 0x1308, - 0x2aa: 0x1308, 0x2ab: 0x1308, 0x2ac: 0x1308, 0x2ad: 0x1308, 0x2ae: 0x1308, 0x2af: 0x1308, + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, + 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, + 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, + 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, + 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, + 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, + 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, @@ -723,8 +723,8 @@ var idnaValues = [8000]uint16{ 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, // Block 0xe, offset 0x380 - 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x1308, 0x384: 0x1308, 0x385: 0x1308, - 0x386: 0x1308, 0x387: 0x1308, 0x388: 0x1318, 0x389: 0x1318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, + 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, @@ -759,129 +759,129 @@ var idnaValues = [8000]uint16{ 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, // Block 0x11, offset 0x440 - 0x440: 0x0040, 0x441: 0x0040, 0x442: 0x0040, 0x443: 0x0040, 0x444: 0x0040, 0x445: 0x0040, - 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0018, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0018, - 0x44c: 0x0018, 0x44d: 0x0018, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x1308, 0x451: 0x1308, - 0x452: 0x1308, 0x453: 0x1308, 0x454: 0x1308, 0x455: 0x1308, 0x456: 0x1308, 0x457: 0x1308, - 0x458: 0x1308, 0x459: 0x1308, 0x45a: 0x1308, 0x45b: 0x0018, 0x45c: 0x0340, 0x45d: 0x0040, - 0x45e: 0x0018, 0x45f: 0x0018, 0x460: 0x0208, 0x461: 0x0008, 0x462: 0x0408, 0x463: 0x0408, - 0x464: 0x0408, 0x465: 0x0408, 0x466: 0x0208, 0x467: 0x0408, 0x468: 0x0208, 0x469: 0x0408, - 0x46a: 0x0208, 0x46b: 0x0208, 0x46c: 0x0208, 0x46d: 0x0208, 0x46e: 0x0208, 0x46f: 0x0408, - 0x470: 0x0408, 0x471: 0x0408, 0x472: 0x0408, 0x473: 0x0208, 0x474: 0x0208, 0x475: 0x0208, - 0x476: 0x0208, 0x477: 0x0208, 0x478: 0x0208, 0x479: 0x0208, 0x47a: 0x0208, 0x47b: 0x0208, - 0x47c: 0x0208, 0x47d: 0x0208, 0x47e: 0x0208, 0x47f: 0x0208, + 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, + 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, + 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, + 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, + 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, + 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, + 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, + 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, + 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, + 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, // Block 0x12, offset 0x480 - 0x480: 0x0408, 0x481: 0x0208, 0x482: 0x0208, 0x483: 0x0408, 0x484: 0x0408, 0x485: 0x0408, - 0x486: 0x0408, 0x487: 0x0408, 0x488: 0x0408, 0x489: 0x0408, 0x48a: 0x0408, 0x48b: 0x0408, - 0x48c: 0x0208, 0x48d: 0x0408, 0x48e: 0x0208, 0x48f: 0x0408, 0x490: 0x0208, 0x491: 0x0208, - 0x492: 0x0408, 0x493: 0x0408, 0x494: 0x0018, 0x495: 0x0408, 0x496: 0x1308, 0x497: 0x1308, - 0x498: 0x1308, 0x499: 0x1308, 0x49a: 0x1308, 0x49b: 0x1308, 0x49c: 0x1308, 0x49d: 0x0040, - 0x49e: 0x0018, 0x49f: 0x1308, 0x4a0: 0x1308, 0x4a1: 0x1308, 0x4a2: 0x1308, 0x4a3: 0x1308, - 0x4a4: 0x1308, 0x4a5: 0x0008, 0x4a6: 0x0008, 0x4a7: 0x1308, 0x4a8: 0x1308, 0x4a9: 0x0018, - 0x4aa: 0x1308, 0x4ab: 0x1308, 0x4ac: 0x1308, 0x4ad: 0x1308, 0x4ae: 0x0408, 0x4af: 0x0408, - 0x4b0: 0x0008, 0x4b1: 0x0008, 0x4b2: 0x0008, 0x4b3: 0x0008, 0x4b4: 0x0008, 0x4b5: 0x0008, - 0x4b6: 0x0008, 0x4b7: 0x0008, 0x4b8: 0x0008, 0x4b9: 0x0008, 0x4ba: 0x0208, 0x4bb: 0x0208, - 0x4bc: 0x0208, 0x4bd: 0x0008, 0x4be: 0x0008, 0x4bf: 0x0208, + 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, + 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, + 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, + 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, + 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, + 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, + 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, + 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, + 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, + 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, + 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, // Block 0x13, offset 0x4c0 - 0x4c0: 0x0018, 0x4c1: 0x0018, 0x4c2: 0x0018, 0x4c3: 0x0018, 0x4c4: 0x0018, 0x4c5: 0x0018, - 0x4c6: 0x0018, 0x4c7: 0x0018, 0x4c8: 0x0018, 0x4c9: 0x0018, 0x4ca: 0x0018, 0x4cb: 0x0018, - 0x4cc: 0x0018, 0x4cd: 0x0018, 0x4ce: 0x0040, 0x4cf: 0x0340, 0x4d0: 0x0408, 0x4d1: 0x1308, - 0x4d2: 0x0208, 0x4d3: 0x0208, 0x4d4: 0x0208, 0x4d5: 0x0408, 0x4d6: 0x0408, 0x4d7: 0x0408, - 0x4d8: 0x0408, 0x4d9: 0x0408, 0x4da: 0x0208, 0x4db: 0x0208, 0x4dc: 0x0208, 0x4dd: 0x0208, - 0x4de: 0x0408, 0x4df: 0x0208, 0x4e0: 0x0208, 0x4e1: 0x0208, 0x4e2: 0x0208, 0x4e3: 0x0208, - 0x4e4: 0x0208, 0x4e5: 0x0208, 0x4e6: 0x0208, 0x4e7: 0x0208, 0x4e8: 0x0408, 0x4e9: 0x0208, - 0x4ea: 0x0408, 0x4eb: 0x0208, 0x4ec: 0x0408, 0x4ed: 0x0208, 0x4ee: 0x0208, 0x4ef: 0x0408, - 0x4f0: 0x1308, 0x4f1: 0x1308, 0x4f2: 0x1308, 0x4f3: 0x1308, 0x4f4: 0x1308, 0x4f5: 0x1308, - 0x4f6: 0x1308, 0x4f7: 0x1308, 0x4f8: 0x1308, 0x4f9: 0x1308, 0x4fa: 0x1308, 0x4fb: 0x1308, - 0x4fc: 0x1308, 0x4fd: 0x1308, 0x4fe: 0x1308, 0x4ff: 0x1308, + 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, + 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, + 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, + 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, + 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, + 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, + 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, + 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, + 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, + 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, + 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, // Block 0x14, offset 0x500 - 0x500: 0x1008, 0x501: 0x1308, 0x502: 0x1308, 0x503: 0x1308, 0x504: 0x1308, 0x505: 0x1308, - 0x506: 0x1308, 0x507: 0x1308, 0x508: 0x1308, 0x509: 0x1008, 0x50a: 0x1008, 0x50b: 0x1008, - 0x50c: 0x1008, 0x50d: 0x1b08, 0x50e: 0x1008, 0x50f: 0x1008, 0x510: 0x0008, 0x511: 0x1308, - 0x512: 0x1308, 0x513: 0x1308, 0x514: 0x1308, 0x515: 0x1308, 0x516: 0x1308, 0x517: 0x1308, - 0x518: 0x04c9, 0x519: 0x0501, 0x51a: 0x0539, 0x51b: 0x0571, 0x51c: 0x05a9, 0x51d: 0x05e1, - 0x51e: 0x0619, 0x51f: 0x0651, 0x520: 0x0008, 0x521: 0x0008, 0x522: 0x1308, 0x523: 0x1308, - 0x524: 0x0018, 0x525: 0x0018, 0x526: 0x0008, 0x527: 0x0008, 0x528: 0x0008, 0x529: 0x0008, - 0x52a: 0x0008, 0x52b: 0x0008, 0x52c: 0x0008, 0x52d: 0x0008, 0x52e: 0x0008, 0x52f: 0x0008, - 0x530: 0x0018, 0x531: 0x0008, 0x532: 0x0008, 0x533: 0x0008, 0x534: 0x0008, 0x535: 0x0008, - 0x536: 0x0008, 0x537: 0x0008, 0x538: 0x0008, 0x539: 0x0008, 0x53a: 0x0008, 0x53b: 0x0008, - 0x53c: 0x0008, 0x53d: 0x0008, 0x53e: 0x0008, 0x53f: 0x0008, + 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, + 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, + 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, + 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, + 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, + 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, + 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, + 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, + 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, + 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, + 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, // Block 0x15, offset 0x540 - 0x540: 0x0008, 0x541: 0x1308, 0x542: 0x1008, 0x543: 0x1008, 0x544: 0x0040, 0x545: 0x0008, - 0x546: 0x0008, 0x547: 0x0008, 0x548: 0x0008, 0x549: 0x0008, 0x54a: 0x0008, 0x54b: 0x0008, - 0x54c: 0x0008, 0x54d: 0x0040, 0x54e: 0x0040, 0x54f: 0x0008, 0x550: 0x0008, 0x551: 0x0040, - 0x552: 0x0040, 0x553: 0x0008, 0x554: 0x0008, 0x555: 0x0008, 0x556: 0x0008, 0x557: 0x0008, - 0x558: 0x0008, 0x559: 0x0008, 0x55a: 0x0008, 0x55b: 0x0008, 0x55c: 0x0008, 0x55d: 0x0008, - 0x55e: 0x0008, 0x55f: 0x0008, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x0008, 0x563: 0x0008, - 0x564: 0x0008, 0x565: 0x0008, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0040, - 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, - 0x570: 0x0008, 0x571: 0x0040, 0x572: 0x0008, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, - 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0040, 0x57b: 0x0040, - 0x57c: 0x1308, 0x57d: 0x0008, 0x57e: 0x1008, 0x57f: 0x1008, + 0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08, + 0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08, + 0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08, + 0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808, + 0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040, + 0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08, + 0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08, + 0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040, + 0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, + 0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040, + 0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040, // Block 0x16, offset 0x580 - 0x580: 0x1008, 0x581: 0x1308, 0x582: 0x1308, 0x583: 0x1308, 0x584: 0x1308, 0x585: 0x0040, - 0x586: 0x0040, 0x587: 0x1008, 0x588: 0x1008, 0x589: 0x0040, 0x58a: 0x0040, 0x58b: 0x1008, - 0x58c: 0x1008, 0x58d: 0x1b08, 0x58e: 0x0008, 0x58f: 0x0040, 0x590: 0x0040, 0x591: 0x0040, - 0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x1008, - 0x598: 0x0040, 0x599: 0x0040, 0x59a: 0x0040, 0x59b: 0x0040, 0x59c: 0x0689, 0x59d: 0x06c1, - 0x59e: 0x0040, 0x59f: 0x06f9, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x1308, 0x5a3: 0x1308, - 0x5a4: 0x0040, 0x5a5: 0x0040, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, + 0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308, + 0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008, + 0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308, + 0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308, + 0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1, + 0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308, + 0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, - 0x5b0: 0x0008, 0x5b1: 0x0008, 0x5b2: 0x0018, 0x5b3: 0x0018, 0x5b4: 0x0018, 0x5b5: 0x0018, - 0x5b6: 0x0018, 0x5b7: 0x0018, 0x5b8: 0x0018, 0x5b9: 0x0018, 0x5ba: 0x0018, 0x5bb: 0x0018, - 0x5bc: 0x0040, 0x5bd: 0x0040, 0x5be: 0x0040, 0x5bf: 0x0040, + 0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008, + 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008, + 0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008, // Block 0x17, offset 0x5c0 - 0x5c0: 0x0040, 0x5c1: 0x1308, 0x5c2: 0x1308, 0x5c3: 0x1008, 0x5c4: 0x0040, 0x5c5: 0x0008, - 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0040, - 0x5cc: 0x0040, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, + 0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008, + 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008, + 0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, - 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0731, 0x5f4: 0x0040, 0x5f5: 0x0008, - 0x5f6: 0x0769, 0x5f7: 0x0040, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, - 0x5fc: 0x1308, 0x5fd: 0x0040, 0x5fe: 0x1008, 0x5ff: 0x1008, + 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040, + 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, + 0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008, // Block 0x18, offset 0x600 - 0x600: 0x1008, 0x601: 0x1308, 0x602: 0x1308, 0x603: 0x0040, 0x604: 0x0040, 0x605: 0x0040, - 0x606: 0x0040, 0x607: 0x1308, 0x608: 0x1308, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x1308, - 0x60c: 0x1308, 0x60d: 0x1b08, 0x60e: 0x0040, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x1308, - 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x0040, - 0x618: 0x0040, 0x619: 0x07a1, 0x61a: 0x07d9, 0x61b: 0x0811, 0x61c: 0x0008, 0x61d: 0x0040, - 0x61e: 0x0849, 0x61f: 0x0040, 0x620: 0x0040, 0x621: 0x0040, 0x622: 0x0040, 0x623: 0x0040, + 0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040, + 0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008, + 0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040, + 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008, + 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1, + 0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308, 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, - 0x630: 0x1308, 0x631: 0x1308, 0x632: 0x0008, 0x633: 0x0008, 0x634: 0x0008, 0x635: 0x1308, - 0x636: 0x0040, 0x637: 0x0040, 0x638: 0x0040, 0x639: 0x0040, 0x63a: 0x0040, 0x63b: 0x0040, - 0x63c: 0x0040, 0x63d: 0x0040, 0x63e: 0x0040, 0x63f: 0x0040, + 0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018, + 0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018, + 0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x0040, 0x63f: 0x0040, // Block 0x19, offset 0x640 - 0x640: 0x0040, 0x641: 0x1308, 0x642: 0x1308, 0x643: 0x1008, 0x644: 0x0040, 0x645: 0x0008, - 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0008, - 0x64c: 0x0008, 0x64d: 0x0008, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0008, + 0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008, + 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040, + 0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040, 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, - 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0040, 0x675: 0x0008, - 0x676: 0x0008, 0x677: 0x0008, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, - 0x67c: 0x1308, 0x67d: 0x0008, 0x67e: 0x1008, 0x67f: 0x1008, + 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008, + 0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008, // Block 0x1a, offset 0x680 - 0x680: 0x1008, 0x681: 0x1308, 0x682: 0x1308, 0x683: 0x1308, 0x684: 0x1308, 0x685: 0x1308, - 0x686: 0x0040, 0x687: 0x1308, 0x688: 0x1308, 0x689: 0x1008, 0x68a: 0x0040, 0x68b: 0x1008, - 0x68c: 0x1008, 0x68d: 0x1b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0008, 0x691: 0x0040, + 0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040, + 0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308, + 0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308, 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, - 0x698: 0x0040, 0x699: 0x0040, 0x69a: 0x0040, 0x69b: 0x0040, 0x69c: 0x0040, 0x69d: 0x0040, - 0x69e: 0x0040, 0x69f: 0x0040, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x1308, 0x6a3: 0x1308, + 0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040, + 0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040, 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, - 0x6b0: 0x0018, 0x6b1: 0x0018, 0x6b2: 0x0040, 0x6b3: 0x0040, 0x6b4: 0x0040, 0x6b5: 0x0040, - 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308, + 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040, 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, // Block 0x1b, offset 0x6c0 - 0x6c0: 0x0040, 0x6c1: 0x1308, 0x6c2: 0x1008, 0x6c3: 0x1008, 0x6c4: 0x0040, 0x6c5: 0x0008, + 0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008, 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, - 0x6cc: 0x0008, 0x6cd: 0x0040, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0040, + 0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008, 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, @@ -889,1457 +889,1490 @@ var idnaValues = [8000]uint16{ 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, - 0x6fc: 0x1308, 0x6fd: 0x0008, 0x6fe: 0x1008, 0x6ff: 0x1308, + 0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008, // Block 0x1c, offset 0x700 - 0x700: 0x1008, 0x701: 0x1308, 0x702: 0x1308, 0x703: 0x1308, 0x704: 0x1308, 0x705: 0x0040, - 0x706: 0x0040, 0x707: 0x1008, 0x708: 0x1008, 0x709: 0x0040, 0x70a: 0x0040, 0x70b: 0x1008, - 0x70c: 0x1008, 0x70d: 0x1b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0040, 0x711: 0x0040, - 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x1308, 0x717: 0x1008, - 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0881, 0x71d: 0x08b9, - 0x71e: 0x0040, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x1308, 0x723: 0x1308, + 0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308, + 0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008, + 0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040, + 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040, + 0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308, 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, - 0x730: 0x0018, 0x731: 0x0008, 0x732: 0x0018, 0x733: 0x0018, 0x734: 0x0018, 0x735: 0x0018, - 0x736: 0x0018, 0x737: 0x0018, 0x738: 0x0040, 0x739: 0x0040, 0x73a: 0x0040, 0x73b: 0x0040, - 0x73c: 0x0040, 0x73d: 0x0040, 0x73e: 0x0040, 0x73f: 0x0040, + 0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040, + 0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308, + 0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308, // Block 0x1d, offset 0x740 - 0x740: 0x0040, 0x741: 0x0040, 0x742: 0x1308, 0x743: 0x0008, 0x744: 0x0040, 0x745: 0x0008, - 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0040, - 0x74c: 0x0040, 0x74d: 0x0040, 0x74e: 0x0008, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, - 0x752: 0x0008, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0040, 0x757: 0x0040, - 0x758: 0x0040, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0040, 0x75c: 0x0008, 0x75d: 0x0040, - 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0040, 0x761: 0x0040, 0x762: 0x0040, 0x763: 0x0008, - 0x764: 0x0008, 0x765: 0x0040, 0x766: 0x0040, 0x767: 0x0040, 0x768: 0x0008, 0x769: 0x0008, - 0x76a: 0x0008, 0x76b: 0x0040, 0x76c: 0x0040, 0x76d: 0x0040, 0x76e: 0x0008, 0x76f: 0x0008, - 0x770: 0x0008, 0x771: 0x0008, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0008, 0x775: 0x0008, + 0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008, + 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008, + 0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, + 0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008, + 0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008, + 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008, + 0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040, + 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008, 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, - 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x1008, 0x77f: 0x1008, + 0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308, // Block 0x1e, offset 0x780 - 0x780: 0x1308, 0x781: 0x1008, 0x782: 0x1008, 0x783: 0x1008, 0x784: 0x1008, 0x785: 0x0040, - 0x786: 0x1308, 0x787: 0x1308, 0x788: 0x1308, 0x789: 0x0040, 0x78a: 0x1308, 0x78b: 0x1308, - 0x78c: 0x1308, 0x78d: 0x1b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, - 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x1308, 0x796: 0x1308, 0x797: 0x0040, - 0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0040, 0x79d: 0x0040, - 0x79e: 0x0040, 0x79f: 0x0040, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x1308, 0x7a3: 0x1308, + 0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040, + 0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008, + 0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, + 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008, + 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9, + 0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308, 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, - 0x7b0: 0x0040, 0x7b1: 0x0040, 0x7b2: 0x0040, 0x7b3: 0x0040, 0x7b4: 0x0040, 0x7b5: 0x0040, - 0x7b6: 0x0040, 0x7b7: 0x0040, 0x7b8: 0x0018, 0x7b9: 0x0018, 0x7ba: 0x0018, 0x7bb: 0x0018, - 0x7bc: 0x0018, 0x7bd: 0x0018, 0x7be: 0x0018, 0x7bf: 0x0018, + 0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018, + 0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040, + 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040, // Block 0x1f, offset 0x7c0 - 0x7c0: 0x0008, 0x7c1: 0x1308, 0x7c2: 0x1008, 0x7c3: 0x1008, 0x7c4: 0x0040, 0x7c5: 0x0008, - 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0008, - 0x7cc: 0x0008, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, - 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0008, 0x7d7: 0x0008, - 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0008, 0x7dc: 0x0008, 0x7dd: 0x0008, - 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x0008, 0x7e3: 0x0008, - 0x7e4: 0x0008, 0x7e5: 0x0008, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0040, - 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, - 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0040, 0x7f5: 0x0008, + 0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008, + 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040, + 0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, + 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040, + 0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040, + 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008, + 0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008, + 0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008, 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, - 0x7fc: 0x1308, 0x7fd: 0x0008, 0x7fe: 0x1008, 0x7ff: 0x1308, + 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008, // Block 0x20, offset 0x800 - 0x800: 0x1008, 0x801: 0x1008, 0x802: 0x1008, 0x803: 0x1008, 0x804: 0x1008, 0x805: 0x0040, - 0x806: 0x1308, 0x807: 0x1008, 0x808: 0x1008, 0x809: 0x0040, 0x80a: 0x1008, 0x80b: 0x1008, - 0x80c: 0x1308, 0x80d: 0x1b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, - 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x1008, 0x816: 0x1008, 0x817: 0x0040, - 0x818: 0x0040, 0x819: 0x0040, 0x81a: 0x0040, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, - 0x81e: 0x0008, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x1308, 0x823: 0x1308, + 0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040, + 0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308, + 0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, + 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040, + 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, + 0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308, 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, - 0x830: 0x0040, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, - 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0040, 0x839: 0x0040, 0x83a: 0x0040, 0x83b: 0x0040, - 0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x0040, 0x83f: 0x0040, + 0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, + 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018, + 0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018, // Block 0x21, offset 0x840 - 0x840: 0x1008, 0x841: 0x1308, 0x842: 0x1308, 0x843: 0x1308, 0x844: 0x1308, 0x845: 0x0040, - 0x846: 0x1008, 0x847: 0x1008, 0x848: 0x1008, 0x849: 0x0040, 0x84a: 0x1008, 0x84b: 0x1008, - 0x84c: 0x1008, 0x84d: 0x1b08, 0x84e: 0x0008, 0x84f: 0x0018, 0x850: 0x0040, 0x851: 0x0040, - 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x1008, - 0x858: 0x0018, 0x859: 0x0018, 0x85a: 0x0018, 0x85b: 0x0018, 0x85c: 0x0018, 0x85d: 0x0018, - 0x85e: 0x0018, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x1308, 0x863: 0x1308, - 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, + 0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0040, 0x845: 0x0008, + 0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008, + 0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040, + 0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008, + 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008, + 0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008, + 0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040, 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, - 0x870: 0x0018, 0x871: 0x0018, 0x872: 0x0018, 0x873: 0x0018, 0x874: 0x0018, 0x875: 0x0018, - 0x876: 0x0018, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0008, 0x87b: 0x0008, - 0x87c: 0x0008, 0x87d: 0x0008, 0x87e: 0x0008, 0x87f: 0x0008, + 0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008, + 0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040, + 0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308, // Block 0x22, offset 0x880 - 0x880: 0x0040, 0x881: 0x0008, 0x882: 0x0008, 0x883: 0x0040, 0x884: 0x0008, 0x885: 0x0040, - 0x886: 0x0040, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0040, 0x88a: 0x0008, 0x88b: 0x0040, - 0x88c: 0x0040, 0x88d: 0x0008, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, - 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008, - 0x898: 0x0040, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008, - 0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0040, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008, - 0x8a4: 0x0040, 0x8a5: 0x0008, 0x8a6: 0x0040, 0x8a7: 0x0008, 0x8a8: 0x0040, 0x8a9: 0x0040, - 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0040, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, - 0x8b0: 0x0008, 0x8b1: 0x1308, 0x8b2: 0x0008, 0x8b3: 0x0929, 0x8b4: 0x1308, 0x8b5: 0x1308, - 0x8b6: 0x1308, 0x8b7: 0x1308, 0x8b8: 0x1308, 0x8b9: 0x1308, 0x8ba: 0x0040, 0x8bb: 0x1308, - 0x8bc: 0x1308, 0x8bd: 0x0008, 0x8be: 0x0040, 0x8bf: 0x0040, + 0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040, + 0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, + 0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040, + 0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040, + 0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, + 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040, + 0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040, + 0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040, // Block 0x23, offset 0x8c0 - 0x8c0: 0x0008, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x09d1, 0x8c4: 0x0008, 0x8c5: 0x0008, - 0x8c6: 0x0008, 0x8c7: 0x0008, 0x8c8: 0x0040, 0x8c9: 0x0008, 0x8ca: 0x0008, 0x8cb: 0x0008, - 0x8cc: 0x0008, 0x8cd: 0x0a09, 0x8ce: 0x0008, 0x8cf: 0x0008, 0x8d0: 0x0008, 0x8d1: 0x0008, - 0x8d2: 0x0a41, 0x8d3: 0x0008, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0a79, - 0x8d8: 0x0008, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0ab1, 0x8dd: 0x0008, - 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, - 0x8e4: 0x0008, 0x8e5: 0x0008, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0ae9, - 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0040, 0x8ee: 0x0040, 0x8ef: 0x0040, - 0x8f0: 0x0040, 0x8f1: 0x1308, 0x8f2: 0x1308, 0x8f3: 0x0b21, 0x8f4: 0x1308, 0x8f5: 0x0b59, - 0x8f6: 0x0b91, 0x8f7: 0x0bc9, 0x8f8: 0x0c19, 0x8f9: 0x0c51, 0x8fa: 0x1308, 0x8fb: 0x1308, - 0x8fc: 0x1308, 0x8fd: 0x1308, 0x8fe: 0x1308, 0x8ff: 0x1008, + 0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040, + 0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008, + 0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040, + 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008, + 0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018, + 0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308, + 0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, + 0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018, + 0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008, + 0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008, // Block 0x24, offset 0x900 - 0x900: 0x1308, 0x901: 0x0ca1, 0x902: 0x1308, 0x903: 0x1308, 0x904: 0x1b08, 0x905: 0x0018, - 0x906: 0x1308, 0x907: 0x1308, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, - 0x90c: 0x0008, 0x90d: 0x1308, 0x90e: 0x1308, 0x90f: 0x1308, 0x910: 0x1308, 0x911: 0x1308, - 0x912: 0x1308, 0x913: 0x0cd9, 0x914: 0x1308, 0x915: 0x1308, 0x916: 0x1308, 0x917: 0x1308, - 0x918: 0x0040, 0x919: 0x1308, 0x91a: 0x1308, 0x91b: 0x1308, 0x91c: 0x1308, 0x91d: 0x0d11, - 0x91e: 0x1308, 0x91f: 0x1308, 0x920: 0x1308, 0x921: 0x1308, 0x922: 0x0d49, 0x923: 0x1308, - 0x924: 0x1308, 0x925: 0x1308, 0x926: 0x1308, 0x927: 0x0d81, 0x928: 0x1308, 0x929: 0x1308, - 0x92a: 0x1308, 0x92b: 0x1308, 0x92c: 0x0db9, 0x92d: 0x1308, 0x92e: 0x1308, 0x92f: 0x1308, - 0x930: 0x1308, 0x931: 0x1308, 0x932: 0x1308, 0x933: 0x1308, 0x934: 0x1308, 0x935: 0x1308, - 0x936: 0x1308, 0x937: 0x1308, 0x938: 0x1308, 0x939: 0x0df1, 0x93a: 0x1308, 0x93b: 0x1308, - 0x93c: 0x1308, 0x93d: 0x0040, 0x93e: 0x0018, 0x93f: 0x0018, + 0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040, + 0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040, + 0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040, + 0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008, + 0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008, + 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, + 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040, + 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, + 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308, + 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308, + 0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040, // Block 0x25, offset 0x940 - 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0008, 0x944: 0x0008, 0x945: 0x0008, - 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, - 0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, - 0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008, - 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008, + 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008, + 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, + 0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79, + 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008, 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, - 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008, - 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0039, 0x96d: 0x0ed1, 0x96e: 0x0ee9, 0x96f: 0x0008, - 0x970: 0x0ef9, 0x971: 0x0f09, 0x972: 0x0f19, 0x973: 0x0f31, 0x974: 0x0249, 0x975: 0x0f41, - 0x976: 0x0259, 0x977: 0x0f51, 0x978: 0x0359, 0x979: 0x0f61, 0x97a: 0x0f71, 0x97b: 0x0008, - 0x97c: 0x00d9, 0x97d: 0x0f81, 0x97e: 0x0f99, 0x97f: 0x0269, + 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9, + 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040, + 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59, + 0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308, + 0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008, // Block 0x26, offset 0x980 - 0x980: 0x0fa9, 0x981: 0x0fb9, 0x982: 0x0279, 0x983: 0x0039, 0x984: 0x0fc9, 0x985: 0x0fe1, - 0x986: 0x059d, 0x987: 0x0ee9, 0x988: 0x0ef9, 0x989: 0x0f09, 0x98a: 0x0ff9, 0x98b: 0x1011, - 0x98c: 0x1029, 0x98d: 0x0f31, 0x98e: 0x0008, 0x98f: 0x0f51, 0x990: 0x0f61, 0x991: 0x1041, - 0x992: 0x00d9, 0x993: 0x1059, 0x994: 0x05b5, 0x995: 0x05b5, 0x996: 0x0f99, 0x997: 0x0fa9, - 0x998: 0x0fb9, 0x999: 0x059d, 0x99a: 0x1071, 0x99b: 0x1089, 0x99c: 0x05cd, 0x99d: 0x1099, - 0x99e: 0x10b1, 0x99f: 0x10c9, 0x9a0: 0x10e1, 0x9a1: 0x10f9, 0x9a2: 0x0f41, 0x9a3: 0x0269, - 0x9a4: 0x0fb9, 0x9a5: 0x1089, 0x9a6: 0x1099, 0x9a7: 0x10b1, 0x9a8: 0x1111, 0x9a9: 0x10e1, - 0x9aa: 0x10f9, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0008, 0x9ae: 0x0008, 0x9af: 0x0008, - 0x9b0: 0x0008, 0x9b1: 0x0008, 0x9b2: 0x0008, 0x9b3: 0x0008, 0x9b4: 0x0008, 0x9b5: 0x0008, - 0x9b6: 0x0008, 0x9b7: 0x0008, 0x9b8: 0x1129, 0x9b9: 0x0008, 0x9ba: 0x0008, 0x9bb: 0x0008, - 0x9bc: 0x0008, 0x9bd: 0x0008, 0x9be: 0x0008, 0x9bf: 0x0008, + 0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018, + 0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, + 0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308, + 0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308, + 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11, + 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308, + 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308, + 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308, + 0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308, + 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308, + 0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018, // Block 0x27, offset 0x9c0 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, - 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x1141, 0x9dc: 0x1159, 0x9dd: 0x1169, - 0x9de: 0x1181, 0x9df: 0x1029, 0x9e0: 0x1199, 0x9e1: 0x11a9, 0x9e2: 0x11c1, 0x9e3: 0x11d9, - 0x9e4: 0x11f1, 0x9e5: 0x1209, 0x9e6: 0x1221, 0x9e7: 0x05e5, 0x9e8: 0x1239, 0x9e9: 0x1251, - 0x9ea: 0xe17d, 0x9eb: 0x1269, 0x9ec: 0x1281, 0x9ed: 0x1299, 0x9ee: 0x12b1, 0x9ef: 0x12c9, - 0x9f0: 0x12e1, 0x9f1: 0x12f9, 0x9f2: 0x1311, 0x9f3: 0x1329, 0x9f4: 0x1341, 0x9f5: 0x1359, - 0x9f6: 0x1371, 0x9f7: 0x1389, 0x9f8: 0x05fd, 0x9f9: 0x13a1, 0x9fa: 0x13b9, 0x9fb: 0x13d1, - 0x9fc: 0x13e1, 0x9fd: 0x13f9, 0x9fe: 0x1411, 0x9ff: 0x1429, + 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008, + 0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008, + 0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008, + 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008, + 0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41, + 0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008, + 0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269, // Block 0x28, offset 0xa00 - 0xa00: 0xe00d, 0xa01: 0x0008, 0xa02: 0xe00d, 0xa03: 0x0008, 0xa04: 0xe00d, 0xa05: 0x0008, - 0xa06: 0xe00d, 0xa07: 0x0008, 0xa08: 0xe00d, 0xa09: 0x0008, 0xa0a: 0xe00d, 0xa0b: 0x0008, - 0xa0c: 0xe00d, 0xa0d: 0x0008, 0xa0e: 0xe00d, 0xa0f: 0x0008, 0xa10: 0xe00d, 0xa11: 0x0008, - 0xa12: 0xe00d, 0xa13: 0x0008, 0xa14: 0xe00d, 0xa15: 0x0008, 0xa16: 0xe00d, 0xa17: 0x0008, - 0xa18: 0xe00d, 0xa19: 0x0008, 0xa1a: 0xe00d, 0xa1b: 0x0008, 0xa1c: 0xe00d, 0xa1d: 0x0008, - 0xa1e: 0xe00d, 0xa1f: 0x0008, 0xa20: 0xe00d, 0xa21: 0x0008, 0xa22: 0xe00d, 0xa23: 0x0008, - 0xa24: 0xe00d, 0xa25: 0x0008, 0xa26: 0xe00d, 0xa27: 0x0008, 0xa28: 0xe00d, 0xa29: 0x0008, - 0xa2a: 0xe00d, 0xa2b: 0x0008, 0xa2c: 0xe00d, 0xa2d: 0x0008, 0xa2e: 0xe00d, 0xa2f: 0x0008, - 0xa30: 0xe00d, 0xa31: 0x0008, 0xa32: 0xe00d, 0xa33: 0x0008, 0xa34: 0xe00d, 0xa35: 0x0008, - 0xa36: 0xe00d, 0xa37: 0x0008, 0xa38: 0xe00d, 0xa39: 0x0008, 0xa3a: 0xe00d, 0xa3b: 0x0008, - 0xa3c: 0xe00d, 0xa3d: 0x0008, 0xa3e: 0xe00d, 0xa3f: 0x0008, + 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1, + 0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011, + 0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041, + 0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9, + 0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099, + 0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269, + 0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1, + 0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008, + 0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008, + 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008, + 0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008, // Block 0x29, offset 0xa40 - 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, - 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, - 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, - 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, - 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0615, 0xa5b: 0x0635, 0xa5c: 0x0008, 0xa5d: 0x0008, - 0xa5e: 0x1441, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, - 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, - 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, - 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, - 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, - 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, + 0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008, + 0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008, + 0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008, + 0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, + 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169, + 0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9, + 0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251, + 0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9, + 0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359, + 0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1, + 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429, // Block 0x2a, offset 0xa80 - 0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008, - 0xa86: 0x0040, 0xa87: 0x0040, 0xa88: 0xe045, 0xa89: 0xe045, 0xa8a: 0xe045, 0xa8b: 0xe045, - 0xa8c: 0xe045, 0xa8d: 0xe045, 0xa8e: 0x0040, 0xa8f: 0x0040, 0xa90: 0x0008, 0xa91: 0x0008, - 0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, - 0xa98: 0x0040, 0xa99: 0xe045, 0xa9a: 0x0040, 0xa9b: 0xe045, 0xa9c: 0x0040, 0xa9d: 0xe045, - 0xa9e: 0x0040, 0xa9f: 0xe045, 0xaa0: 0x0008, 0xaa1: 0x0008, 0xaa2: 0x0008, 0xaa3: 0x0008, - 0xaa4: 0x0008, 0xaa5: 0x0008, 0xaa6: 0x0008, 0xaa7: 0x0008, 0xaa8: 0xe045, 0xaa9: 0xe045, - 0xaaa: 0xe045, 0xaab: 0xe045, 0xaac: 0xe045, 0xaad: 0xe045, 0xaae: 0xe045, 0xaaf: 0xe045, - 0xab0: 0x0008, 0xab1: 0x1459, 0xab2: 0x0008, 0xab3: 0x1471, 0xab4: 0x0008, 0xab5: 0x1489, - 0xab6: 0x0008, 0xab7: 0x14a1, 0xab8: 0x0008, 0xab9: 0x14b9, 0xaba: 0x0008, 0xabb: 0x14d1, - 0xabc: 0x0008, 0xabd: 0x14e9, 0xabe: 0x0040, 0xabf: 0x0040, + 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, + 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, + 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, + 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008, + 0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008, + 0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, + 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, + 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, + 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, + 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, + 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, // Block 0x2b, offset 0xac0 - 0xac0: 0x1501, 0xac1: 0x1531, 0xac2: 0x1561, 0xac3: 0x1591, 0xac4: 0x15c1, 0xac5: 0x15f1, - 0xac6: 0x1621, 0xac7: 0x1651, 0xac8: 0x1501, 0xac9: 0x1531, 0xaca: 0x1561, 0xacb: 0x1591, - 0xacc: 0x15c1, 0xacd: 0x15f1, 0xace: 0x1621, 0xacf: 0x1651, 0xad0: 0x1681, 0xad1: 0x16b1, - 0xad2: 0x16e1, 0xad3: 0x1711, 0xad4: 0x1741, 0xad5: 0x1771, 0xad6: 0x17a1, 0xad7: 0x17d1, - 0xad8: 0x1681, 0xad9: 0x16b1, 0xada: 0x16e1, 0xadb: 0x1711, 0xadc: 0x1741, 0xadd: 0x1771, - 0xade: 0x17a1, 0xadf: 0x17d1, 0xae0: 0x1801, 0xae1: 0x1831, 0xae2: 0x1861, 0xae3: 0x1891, - 0xae4: 0x18c1, 0xae5: 0x18f1, 0xae6: 0x1921, 0xae7: 0x1951, 0xae8: 0x1801, 0xae9: 0x1831, - 0xaea: 0x1861, 0xaeb: 0x1891, 0xaec: 0x18c1, 0xaed: 0x18f1, 0xaee: 0x1921, 0xaef: 0x1951, - 0xaf0: 0x0008, 0xaf1: 0x0008, 0xaf2: 0x1981, 0xaf3: 0x19b1, 0xaf4: 0x19d9, 0xaf5: 0x0040, - 0xaf6: 0x0008, 0xaf7: 0x1a01, 0xaf8: 0xe045, 0xaf9: 0xe045, 0xafa: 0x064d, 0xafb: 0x1459, - 0xafc: 0x19b1, 0xafd: 0x0666, 0xafe: 0x1a31, 0xaff: 0x0686, + 0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008, + 0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008, + 0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008, + 0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, + 0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008, + 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008, + 0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008, + 0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008, + 0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008, + 0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008, + 0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008, // Block 0x2c, offset 0xb00 - 0xb00: 0x06a6, 0xb01: 0x1a4a, 0xb02: 0x1a79, 0xb03: 0x1aa9, 0xb04: 0x1ad1, 0xb05: 0x0040, - 0xb06: 0x0008, 0xb07: 0x1af9, 0xb08: 0x06c5, 0xb09: 0x1471, 0xb0a: 0x06dd, 0xb0b: 0x1489, - 0xb0c: 0x1aa9, 0xb0d: 0x1b2a, 0xb0e: 0x1b5a, 0xb0f: 0x1b8a, 0xb10: 0x0008, 0xb11: 0x0008, - 0xb12: 0x0008, 0xb13: 0x1bb9, 0xb14: 0x0040, 0xb15: 0x0040, 0xb16: 0x0008, 0xb17: 0x0008, - 0xb18: 0xe045, 0xb19: 0xe045, 0xb1a: 0x06f5, 0xb1b: 0x14a1, 0xb1c: 0x0040, 0xb1d: 0x1bd2, - 0xb1e: 0x1c02, 0xb1f: 0x1c32, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x1c61, + 0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008, + 0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045, + 0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008, + 0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008, + 0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045, + 0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008, 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, - 0xb2a: 0x070d, 0xb2b: 0x14d1, 0xb2c: 0xe04d, 0xb2d: 0x1c7a, 0xb2e: 0x03d2, 0xb2f: 0x1caa, - 0xb30: 0x0040, 0xb31: 0x0040, 0xb32: 0x1cb9, 0xb33: 0x1ce9, 0xb34: 0x1d11, 0xb35: 0x0040, - 0xb36: 0x0008, 0xb37: 0x1d39, 0xb38: 0x0725, 0xb39: 0x14b9, 0xb3a: 0x0515, 0xb3b: 0x14e9, - 0xb3c: 0x1ce9, 0xb3d: 0x073e, 0xb3e: 0x075e, 0xb3f: 0x0040, + 0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045, + 0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489, + 0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1, + 0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040, // Block 0x2d, offset 0xb40 - 0xb40: 0x000a, 0xb41: 0x000a, 0xb42: 0x000a, 0xb43: 0x000a, 0xb44: 0x000a, 0xb45: 0x000a, - 0xb46: 0x000a, 0xb47: 0x000a, 0xb48: 0x000a, 0xb49: 0x000a, 0xb4a: 0x000a, 0xb4b: 0x03c0, - 0xb4c: 0x0003, 0xb4d: 0x0003, 0xb4e: 0x0340, 0xb4f: 0x0340, 0xb50: 0x0018, 0xb51: 0xe00d, - 0xb52: 0x0018, 0xb53: 0x0018, 0xb54: 0x0018, 0xb55: 0x0018, 0xb56: 0x0018, 0xb57: 0x077e, - 0xb58: 0x0018, 0xb59: 0x0018, 0xb5a: 0x0018, 0xb5b: 0x0018, 0xb5c: 0x0018, 0xb5d: 0x0018, - 0xb5e: 0x0018, 0xb5f: 0x0018, 0xb60: 0x0018, 0xb61: 0x0018, 0xb62: 0x0018, 0xb63: 0x0018, - 0xb64: 0x0040, 0xb65: 0x0040, 0xb66: 0x0040, 0xb67: 0x0018, 0xb68: 0x0040, 0xb69: 0x0040, - 0xb6a: 0x0340, 0xb6b: 0x0340, 0xb6c: 0x0340, 0xb6d: 0x0340, 0xb6e: 0x0340, 0xb6f: 0x000a, - 0xb70: 0x0018, 0xb71: 0x0018, 0xb72: 0x0018, 0xb73: 0x1d69, 0xb74: 0x1da1, 0xb75: 0x0018, - 0xb76: 0x1df1, 0xb77: 0x1e29, 0xb78: 0x0018, 0xb79: 0x0018, 0xb7a: 0x0018, 0xb7b: 0x0018, - 0xb7c: 0x1e7a, 0xb7d: 0x0018, 0xb7e: 0x079e, 0xb7f: 0x0018, + 0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1, + 0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591, + 0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1, + 0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1, + 0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771, + 0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891, + 0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831, + 0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951, + 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040, + 0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459, + 0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686, // Block 0x2e, offset 0xb80 - 0xb80: 0x0018, 0xb81: 0x0018, 0xb82: 0x0018, 0xb83: 0x0018, 0xb84: 0x0018, 0xb85: 0x0018, - 0xb86: 0x0018, 0xb87: 0x1e92, 0xb88: 0x1eaa, 0xb89: 0x1ec2, 0xb8a: 0x0018, 0xb8b: 0x0018, - 0xb8c: 0x0018, 0xb8d: 0x0018, 0xb8e: 0x0018, 0xb8f: 0x0018, 0xb90: 0x0018, 0xb91: 0x0018, - 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x1ed9, - 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, - 0xb9e: 0x0018, 0xb9f: 0x000a, 0xba0: 0x03c0, 0xba1: 0x0340, 0xba2: 0x0340, 0xba3: 0x0340, - 0xba4: 0x03c0, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0040, 0xba8: 0x0040, 0xba9: 0x0040, - 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x0340, - 0xbb0: 0x1f41, 0xbb1: 0x0f41, 0xbb2: 0x0040, 0xbb3: 0x0040, 0xbb4: 0x1f51, 0xbb5: 0x1f61, - 0xbb6: 0x1f71, 0xbb7: 0x1f81, 0xbb8: 0x1f91, 0xbb9: 0x1fa1, 0xbba: 0x1fb2, 0xbbb: 0x07bd, - 0xbbc: 0x1fc2, 0xbbd: 0x1fd2, 0xbbe: 0x1fe2, 0xbbf: 0x0f71, + 0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040, + 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489, + 0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008, + 0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008, + 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2, + 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61, + 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045, + 0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa, + 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040, + 0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9, + 0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040, // Block 0x2f, offset 0xbc0 - 0xbc0: 0x1f41, 0xbc1: 0x00c9, 0xbc2: 0x0069, 0xbc3: 0x0079, 0xbc4: 0x1f51, 0xbc5: 0x1f61, - 0xbc6: 0x1f71, 0xbc7: 0x1f81, 0xbc8: 0x1f91, 0xbc9: 0x1fa1, 0xbca: 0x1fb2, 0xbcb: 0x07d5, - 0xbcc: 0x1fc2, 0xbcd: 0x1fd2, 0xbce: 0x1fe2, 0xbcf: 0x0040, 0xbd0: 0x0039, 0xbd1: 0x0f09, - 0xbd2: 0x00d9, 0xbd3: 0x0369, 0xbd4: 0x0ff9, 0xbd5: 0x0249, 0xbd6: 0x0f51, 0xbd7: 0x0359, - 0xbd8: 0x0f61, 0xbd9: 0x0f71, 0xbda: 0x0f99, 0xbdb: 0x01d9, 0xbdc: 0x0fa9, 0xbdd: 0x0040, - 0xbde: 0x0040, 0xbdf: 0x0040, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, - 0xbe4: 0x0018, 0xbe5: 0x0018, 0xbe6: 0x0018, 0xbe7: 0x0018, 0xbe8: 0x1ff1, 0xbe9: 0x0018, - 0xbea: 0x0018, 0xbeb: 0x0018, 0xbec: 0x0018, 0xbed: 0x0018, 0xbee: 0x0018, 0xbef: 0x0018, - 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0018, 0xbf4: 0x0018, 0xbf5: 0x0018, - 0xbf6: 0x0018, 0xbf7: 0x0018, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, - 0xbfc: 0x0018, 0xbfd: 0x0018, 0xbfe: 0x0018, 0xbff: 0x0040, + 0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a, + 0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0, + 0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d, + 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e, + 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, + 0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, + 0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040, + 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a, + 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018, + 0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, + 0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018, // Block 0x30, offset 0xc00 - 0xc00: 0x07ee, 0xc01: 0x080e, 0xc02: 0x1159, 0xc03: 0x082d, 0xc04: 0x0018, 0xc05: 0x084e, - 0xc06: 0x086e, 0xc07: 0x1011, 0xc08: 0x0018, 0xc09: 0x088d, 0xc0a: 0x0f31, 0xc0b: 0x0249, - 0xc0c: 0x0249, 0xc0d: 0x0249, 0xc0e: 0x0249, 0xc0f: 0x2009, 0xc10: 0x0f41, 0xc11: 0x0f41, - 0xc12: 0x0359, 0xc13: 0x0359, 0xc14: 0x0018, 0xc15: 0x0f71, 0xc16: 0x2021, 0xc17: 0x0018, - 0xc18: 0x0018, 0xc19: 0x0f99, 0xc1a: 0x2039, 0xc1b: 0x0269, 0xc1c: 0x0269, 0xc1d: 0x0269, - 0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x2049, 0xc21: 0x08ad, 0xc22: 0x2061, 0xc23: 0x0018, - 0xc24: 0x13d1, 0xc25: 0x0018, 0xc26: 0x2079, 0xc27: 0x0018, 0xc28: 0x13d1, 0xc29: 0x0018, - 0xc2a: 0x0f51, 0xc2b: 0x2091, 0xc2c: 0x0ee9, 0xc2d: 0x1159, 0xc2e: 0x0018, 0xc2f: 0x0f09, - 0xc30: 0x0f09, 0xc31: 0x1199, 0xc32: 0x0040, 0xc33: 0x0f61, 0xc34: 0x00d9, 0xc35: 0x20a9, - 0xc36: 0x20c1, 0xc37: 0x20d9, 0xc38: 0x20f1, 0xc39: 0x0f41, 0xc3a: 0x0018, 0xc3b: 0x08cd, - 0xc3c: 0x2109, 0xc3d: 0x10b1, 0xc3e: 0x10b1, 0xc3f: 0x2109, + 0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018, + 0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018, + 0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018, + 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9, + 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018, + 0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340, + 0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040, + 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340, + 0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61, + 0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd, + 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71, // Block 0x31, offset 0xc40 - 0xc40: 0x08ed, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0ef9, - 0xc46: 0x0ef9, 0xc47: 0x0f09, 0xc48: 0x0f41, 0xc49: 0x0259, 0xc4a: 0x0018, 0xc4b: 0x0018, - 0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0008, 0xc4f: 0x0018, 0xc50: 0x2121, 0xc51: 0x2151, - 0xc52: 0x2181, 0xc53: 0x21b9, 0xc54: 0x21e9, 0xc55: 0x2219, 0xc56: 0x2249, 0xc57: 0x2279, - 0xc58: 0x22a9, 0xc59: 0x22d9, 0xc5a: 0x2309, 0xc5b: 0x2339, 0xc5c: 0x2369, 0xc5d: 0x2399, - 0xc5e: 0x23c9, 0xc5f: 0x23f9, 0xc60: 0x0f41, 0xc61: 0x2421, 0xc62: 0x0905, 0xc63: 0x2439, - 0xc64: 0x1089, 0xc65: 0x2451, 0xc66: 0x0925, 0xc67: 0x2469, 0xc68: 0x2491, 0xc69: 0x0369, - 0xc6a: 0x24a9, 0xc6b: 0x0945, 0xc6c: 0x0359, 0xc6d: 0x1159, 0xc6e: 0x0ef9, 0xc6f: 0x0f61, - 0xc70: 0x0f41, 0xc71: 0x2421, 0xc72: 0x0965, 0xc73: 0x2439, 0xc74: 0x1089, 0xc75: 0x2451, - 0xc76: 0x0985, 0xc77: 0x2469, 0xc78: 0x2491, 0xc79: 0x0369, 0xc7a: 0x24a9, 0xc7b: 0x09a5, - 0xc7c: 0x0359, 0xc7d: 0x1159, 0xc7e: 0x0ef9, 0xc7f: 0x0f61, + 0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61, + 0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5, + 0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09, + 0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359, + 0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040, + 0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018, + 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018, + 0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018, + 0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018, + 0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018, + 0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018, // Block 0x32, offset 0xc80 - 0xc80: 0x0018, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0018, - 0xc86: 0x0018, 0xc87: 0x0018, 0xc88: 0x0018, 0xc89: 0x0018, 0xc8a: 0x0018, 0xc8b: 0x0040, - 0xc8c: 0x0040, 0xc8d: 0x0040, 0xc8e: 0x0040, 0xc8f: 0x0040, 0xc90: 0x0040, 0xc91: 0x0040, - 0xc92: 0x0040, 0xc93: 0x0040, 0xc94: 0x0040, 0xc95: 0x0040, 0xc96: 0x0040, 0xc97: 0x0040, - 0xc98: 0x0040, 0xc99: 0x0040, 0xc9a: 0x0040, 0xc9b: 0x0040, 0xc9c: 0x0040, 0xc9d: 0x0040, - 0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x00c9, 0xca1: 0x0069, 0xca2: 0x0079, 0xca3: 0x1f51, - 0xca4: 0x1f61, 0xca5: 0x1f71, 0xca6: 0x1f81, 0xca7: 0x1f91, 0xca8: 0x1fa1, 0xca9: 0x2601, - 0xcaa: 0x2619, 0xcab: 0x2631, 0xcac: 0x2649, 0xcad: 0x2661, 0xcae: 0x2679, 0xcaf: 0x2691, - 0xcb0: 0x26a9, 0xcb1: 0x26c1, 0xcb2: 0x26d9, 0xcb3: 0x26f1, 0xcb4: 0x0a06, 0xcb5: 0x0a26, - 0xcb6: 0x0a46, 0xcb7: 0x0a66, 0xcb8: 0x0a86, 0xcb9: 0x0aa6, 0xcba: 0x0ac6, 0xcbb: 0x0ae6, - 0xcbc: 0x0b06, 0xcbd: 0x270a, 0xcbe: 0x2732, 0xcbf: 0x275a, + 0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e, + 0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249, + 0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41, + 0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018, + 0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269, + 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018, + 0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018, + 0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09, + 0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9, + 0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd, + 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109, // Block 0x33, offset 0xcc0 - 0xcc0: 0x2782, 0xcc1: 0x27aa, 0xcc2: 0x27d2, 0xcc3: 0x27fa, 0xcc4: 0x2822, 0xcc5: 0x284a, - 0xcc6: 0x2872, 0xcc7: 0x289a, 0xcc8: 0x0040, 0xcc9: 0x0040, 0xcca: 0x0040, 0xccb: 0x0040, - 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, - 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, - 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0b26, 0xcdd: 0x0b46, - 0xcde: 0x0b66, 0xcdf: 0x0b86, 0xce0: 0x0ba6, 0xce1: 0x0bc6, 0xce2: 0x0be6, 0xce3: 0x0c06, - 0xce4: 0x0c26, 0xce5: 0x0c46, 0xce6: 0x0c66, 0xce7: 0x0c86, 0xce8: 0x0ca6, 0xce9: 0x0cc6, - 0xcea: 0x0ce6, 0xceb: 0x0d06, 0xcec: 0x0d26, 0xced: 0x0d46, 0xcee: 0x0d66, 0xcef: 0x0d86, - 0xcf0: 0x0da6, 0xcf1: 0x0dc6, 0xcf2: 0x0de6, 0xcf3: 0x0e06, 0xcf4: 0x0e26, 0xcf5: 0x0e46, - 0xcf6: 0x0039, 0xcf7: 0x0ee9, 0xcf8: 0x1159, 0xcf9: 0x0ef9, 0xcfa: 0x0f09, 0xcfb: 0x1199, - 0xcfc: 0x0f31, 0xcfd: 0x0249, 0xcfe: 0x0f41, 0xcff: 0x0259, + 0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9, + 0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018, + 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151, + 0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279, + 0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399, + 0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439, + 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369, + 0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61, + 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451, + 0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5, + 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61, // Block 0x34, offset 0xd00 - 0xd00: 0x0f51, 0xd01: 0x0359, 0xd02: 0x0f61, 0xd03: 0x0f71, 0xd04: 0x00d9, 0xd05: 0x0f99, - 0xd06: 0x2039, 0xd07: 0x0269, 0xd08: 0x01d9, 0xd09: 0x0fa9, 0xd0a: 0x0fb9, 0xd0b: 0x1089, - 0xd0c: 0x0279, 0xd0d: 0x0369, 0xd0e: 0x0289, 0xd0f: 0x13d1, 0xd10: 0x0039, 0xd11: 0x0ee9, - 0xd12: 0x1159, 0xd13: 0x0ef9, 0xd14: 0x0f09, 0xd15: 0x1199, 0xd16: 0x0f31, 0xd17: 0x0249, - 0xd18: 0x0f41, 0xd19: 0x0259, 0xd1a: 0x0f51, 0xd1b: 0x0359, 0xd1c: 0x0f61, 0xd1d: 0x0f71, - 0xd1e: 0x00d9, 0xd1f: 0x0f99, 0xd20: 0x2039, 0xd21: 0x0269, 0xd22: 0x01d9, 0xd23: 0x0fa9, - 0xd24: 0x0fb9, 0xd25: 0x1089, 0xd26: 0x0279, 0xd27: 0x0369, 0xd28: 0x0289, 0xd29: 0x13d1, - 0xd2a: 0x1f41, 0xd2b: 0x0018, 0xd2c: 0x0018, 0xd2d: 0x0018, 0xd2e: 0x0018, 0xd2f: 0x0018, - 0xd30: 0x0018, 0xd31: 0x0018, 0xd32: 0x0018, 0xd33: 0x0018, 0xd34: 0x0018, 0xd35: 0x0018, - 0xd36: 0x0018, 0xd37: 0x0018, 0xd38: 0x0018, 0xd39: 0x0018, 0xd3a: 0x0018, 0xd3b: 0x0018, - 0xd3c: 0x0018, 0xd3d: 0x0018, 0xd3e: 0x0018, 0xd3f: 0x0018, + 0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018, + 0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040, + 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, + 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, + 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040, + 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51, + 0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601, + 0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691, + 0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26, + 0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6, + 0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a, // Block 0x35, offset 0xd40 - 0xd40: 0x0008, 0xd41: 0x0008, 0xd42: 0x0008, 0xd43: 0x0008, 0xd44: 0x0008, 0xd45: 0x0008, - 0xd46: 0x0008, 0xd47: 0x0008, 0xd48: 0x0008, 0xd49: 0x0008, 0xd4a: 0x0008, 0xd4b: 0x0008, - 0xd4c: 0x0008, 0xd4d: 0x0008, 0xd4e: 0x0008, 0xd4f: 0x0008, 0xd50: 0x0008, 0xd51: 0x0008, - 0xd52: 0x0008, 0xd53: 0x0008, 0xd54: 0x0008, 0xd55: 0x0008, 0xd56: 0x0008, 0xd57: 0x0008, - 0xd58: 0x0008, 0xd59: 0x0008, 0xd5a: 0x0008, 0xd5b: 0x0008, 0xd5c: 0x0008, 0xd5d: 0x0008, - 0xd5e: 0x0008, 0xd5f: 0x0040, 0xd60: 0xe00d, 0xd61: 0x0008, 0xd62: 0x2971, 0xd63: 0x0ebd, - 0xd64: 0x2989, 0xd65: 0x0008, 0xd66: 0x0008, 0xd67: 0xe07d, 0xd68: 0x0008, 0xd69: 0xe01d, - 0xd6a: 0x0008, 0xd6b: 0xe03d, 0xd6c: 0x0008, 0xd6d: 0x0fe1, 0xd6e: 0x1281, 0xd6f: 0x0fc9, - 0xd70: 0x1141, 0xd71: 0x0008, 0xd72: 0xe00d, 0xd73: 0x0008, 0xd74: 0x0008, 0xd75: 0xe01d, - 0xd76: 0x0008, 0xd77: 0x0008, 0xd78: 0x0008, 0xd79: 0x0008, 0xd7a: 0x0008, 0xd7b: 0x0008, - 0xd7c: 0x0259, 0xd7d: 0x1089, 0xd7e: 0x29a1, 0xd7f: 0x29b9, + 0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a, + 0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040, + 0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040, + 0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040, + 0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46, + 0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06, + 0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6, + 0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86, + 0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46, + 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199, + 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259, // Block 0x36, offset 0xd80 - 0xd80: 0xe00d, 0xd81: 0x0008, 0xd82: 0xe00d, 0xd83: 0x0008, 0xd84: 0xe00d, 0xd85: 0x0008, - 0xd86: 0xe00d, 0xd87: 0x0008, 0xd88: 0xe00d, 0xd89: 0x0008, 0xd8a: 0xe00d, 0xd8b: 0x0008, - 0xd8c: 0xe00d, 0xd8d: 0x0008, 0xd8e: 0xe00d, 0xd8f: 0x0008, 0xd90: 0xe00d, 0xd91: 0x0008, - 0xd92: 0xe00d, 0xd93: 0x0008, 0xd94: 0xe00d, 0xd95: 0x0008, 0xd96: 0xe00d, 0xd97: 0x0008, - 0xd98: 0xe00d, 0xd99: 0x0008, 0xd9a: 0xe00d, 0xd9b: 0x0008, 0xd9c: 0xe00d, 0xd9d: 0x0008, - 0xd9e: 0xe00d, 0xd9f: 0x0008, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0xe00d, 0xda3: 0x0008, - 0xda4: 0x0008, 0xda5: 0x0018, 0xda6: 0x0018, 0xda7: 0x0018, 0xda8: 0x0018, 0xda9: 0x0018, - 0xdaa: 0x0018, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0xe01d, 0xdae: 0x0008, 0xdaf: 0x1308, - 0xdb0: 0x1308, 0xdb1: 0x1308, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0040, 0xdb5: 0x0040, - 0xdb6: 0x0040, 0xdb7: 0x0040, 0xdb8: 0x0040, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, + 0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99, + 0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089, + 0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9, + 0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249, + 0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71, + 0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9, + 0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1, + 0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018, + 0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018, + 0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, // Block 0x37, offset 0xdc0 - 0xdc0: 0x26fd, 0xdc1: 0x271d, 0xdc2: 0x273d, 0xdc3: 0x275d, 0xdc4: 0x277d, 0xdc5: 0x279d, - 0xdc6: 0x27bd, 0xdc7: 0x27dd, 0xdc8: 0x27fd, 0xdc9: 0x281d, 0xdca: 0x283d, 0xdcb: 0x285d, - 0xdcc: 0x287d, 0xdcd: 0x289d, 0xdce: 0x28bd, 0xdcf: 0x28dd, 0xdd0: 0x28fd, 0xdd1: 0x291d, - 0xdd2: 0x293d, 0xdd3: 0x295d, 0xdd4: 0x297d, 0xdd5: 0x299d, 0xdd6: 0x0040, 0xdd7: 0x0040, - 0xdd8: 0x0040, 0xdd9: 0x0040, 0xdda: 0x0040, 0xddb: 0x0040, 0xddc: 0x0040, 0xddd: 0x0040, - 0xdde: 0x0040, 0xddf: 0x0040, 0xde0: 0x0040, 0xde1: 0x0040, 0xde2: 0x0040, 0xde3: 0x0040, - 0xde4: 0x0040, 0xde5: 0x0040, 0xde6: 0x0040, 0xde7: 0x0040, 0xde8: 0x0040, 0xde9: 0x0040, - 0xdea: 0x0040, 0xdeb: 0x0040, 0xdec: 0x0040, 0xded: 0x0040, 0xdee: 0x0040, 0xdef: 0x0040, - 0xdf0: 0x0040, 0xdf1: 0x0040, 0xdf2: 0x0040, 0xdf3: 0x0040, 0xdf4: 0x0040, 0xdf5: 0x0040, - 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0040, 0xdfa: 0x0040, 0xdfb: 0x0040, - 0xdfc: 0x0040, 0xdfd: 0x0040, 0xdfe: 0x0040, 0xdff: 0x0040, + 0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008, + 0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008, + 0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008, + 0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008, + 0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008, + 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd, + 0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d, + 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9, + 0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d, + 0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008, + 0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9, // Block 0x38, offset 0xe00 - 0xe00: 0x000a, 0xe01: 0x0018, 0xe02: 0x29d1, 0xe03: 0x0018, 0xe04: 0x0018, 0xe05: 0x0008, - 0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0018, 0xe09: 0x0018, 0xe0a: 0x0018, 0xe0b: 0x0018, - 0xe0c: 0x0018, 0xe0d: 0x0018, 0xe0e: 0x0018, 0xe0f: 0x0018, 0xe10: 0x0018, 0xe11: 0x0018, - 0xe12: 0x0018, 0xe13: 0x0018, 0xe14: 0x0018, 0xe15: 0x0018, 0xe16: 0x0018, 0xe17: 0x0018, - 0xe18: 0x0018, 0xe19: 0x0018, 0xe1a: 0x0018, 0xe1b: 0x0018, 0xe1c: 0x0018, 0xe1d: 0x0018, - 0xe1e: 0x0018, 0xe1f: 0x0018, 0xe20: 0x0018, 0xe21: 0x0018, 0xe22: 0x0018, 0xe23: 0x0018, - 0xe24: 0x0018, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, - 0xe2a: 0x1308, 0xe2b: 0x1308, 0xe2c: 0x1308, 0xe2d: 0x1308, 0xe2e: 0x1018, 0xe2f: 0x1018, - 0xe30: 0x0018, 0xe31: 0x0018, 0xe32: 0x0018, 0xe33: 0x0018, 0xe34: 0x0018, 0xe35: 0x0018, - 0xe36: 0xe125, 0xe37: 0x0018, 0xe38: 0x29bd, 0xe39: 0x29dd, 0xe3a: 0x29fd, 0xe3b: 0x0018, - 0xe3c: 0x0008, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, + 0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008, + 0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008, + 0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008, + 0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008, + 0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008, + 0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008, + 0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, + 0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308, + 0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040, + 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018, + 0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, // Block 0x39, offset 0xe40 - 0xe40: 0x2b3d, 0xe41: 0x2b5d, 0xe42: 0x2b7d, 0xe43: 0x2b9d, 0xe44: 0x2bbd, 0xe45: 0x2bdd, - 0xe46: 0x2bdd, 0xe47: 0x2bdd, 0xe48: 0x2bfd, 0xe49: 0x2bfd, 0xe4a: 0x2bfd, 0xe4b: 0x2bfd, - 0xe4c: 0x2c1d, 0xe4d: 0x2c1d, 0xe4e: 0x2c1d, 0xe4f: 0x2c3d, 0xe50: 0x2c5d, 0xe51: 0x2c5d, - 0xe52: 0x2a7d, 0xe53: 0x2a7d, 0xe54: 0x2c5d, 0xe55: 0x2c5d, 0xe56: 0x2c7d, 0xe57: 0x2c7d, - 0xe58: 0x2c5d, 0xe59: 0x2c5d, 0xe5a: 0x2a7d, 0xe5b: 0x2a7d, 0xe5c: 0x2c5d, 0xe5d: 0x2c5d, - 0xe5e: 0x2c3d, 0xe5f: 0x2c3d, 0xe60: 0x2c9d, 0xe61: 0x2c9d, 0xe62: 0x2cbd, 0xe63: 0x2cbd, - 0xe64: 0x0040, 0xe65: 0x2cdd, 0xe66: 0x2cfd, 0xe67: 0x2d1d, 0xe68: 0x2d1d, 0xe69: 0x2d3d, - 0xe6a: 0x2d5d, 0xe6b: 0x2d7d, 0xe6c: 0x2d9d, 0xe6d: 0x2dbd, 0xe6e: 0x2ddd, 0xe6f: 0x2dfd, - 0xe70: 0x2e1d, 0xe71: 0x2e3d, 0xe72: 0x2e3d, 0xe73: 0x2e5d, 0xe74: 0x2e7d, 0xe75: 0x2e7d, - 0xe76: 0x2e9d, 0xe77: 0x2ebd, 0xe78: 0x2e5d, 0xe79: 0x2edd, 0xe7a: 0x2efd, 0xe7b: 0x2edd, - 0xe7c: 0x2e5d, 0xe7d: 0x2f1d, 0xe7e: 0x2f3d, 0xe7f: 0x2f5d, + 0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d, + 0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d, + 0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d, + 0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040, + 0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040, + 0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040, + 0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040, + 0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040, + 0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040, + 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040, + 0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040, // Block 0x3a, offset 0xe80 - 0xe80: 0x2f7d, 0xe81: 0x2f9d, 0xe82: 0x2cfd, 0xe83: 0x2cdd, 0xe84: 0x2fbd, 0xe85: 0x2fdd, - 0xe86: 0x2ffd, 0xe87: 0x301d, 0xe88: 0x303d, 0xe89: 0x305d, 0xe8a: 0x307d, 0xe8b: 0x309d, - 0xe8c: 0x30bd, 0xe8d: 0x30dd, 0xe8e: 0x30fd, 0xe8f: 0x0040, 0xe90: 0x0018, 0xe91: 0x0018, - 0xe92: 0x311d, 0xe93: 0x313d, 0xe94: 0x315d, 0xe95: 0x317d, 0xe96: 0x319d, 0xe97: 0x31bd, - 0xe98: 0x31dd, 0xe99: 0x31fd, 0xe9a: 0x321d, 0xe9b: 0x323d, 0xe9c: 0x315d, 0xe9d: 0x325d, - 0xe9e: 0x327d, 0xe9f: 0x329d, 0xea0: 0x0008, 0xea1: 0x0008, 0xea2: 0x0008, 0xea3: 0x0008, - 0xea4: 0x0008, 0xea5: 0x0008, 0xea6: 0x0008, 0xea7: 0x0008, 0xea8: 0x0008, 0xea9: 0x0008, - 0xeaa: 0x0008, 0xeab: 0x0008, 0xeac: 0x0008, 0xead: 0x0008, 0xeae: 0x0008, 0xeaf: 0x0008, - 0xeb0: 0x0008, 0xeb1: 0x0008, 0xeb2: 0x0008, 0xeb3: 0x0008, 0xeb4: 0x0008, 0xeb5: 0x0008, - 0xeb6: 0x0008, 0xeb7: 0x0008, 0xeb8: 0x0008, 0xeb9: 0x0008, 0xeba: 0x0008, 0xebb: 0x0040, - 0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040, + 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008, + 0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018, + 0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018, + 0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018, + 0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018, + 0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018, + 0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018, + 0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018, + 0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018, + 0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018, + 0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018, // Block 0x3b, offset 0xec0 - 0xec0: 0x36a2, 0xec1: 0x36d2, 0xec2: 0x3702, 0xec3: 0x3732, 0xec4: 0x32bd, 0xec5: 0x32dd, - 0xec6: 0x32fd, 0xec7: 0x331d, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018, - 0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x333d, 0xed1: 0x3761, - 0xed2: 0x3779, 0xed3: 0x3791, 0xed4: 0x37a9, 0xed5: 0x37c1, 0xed6: 0x37d9, 0xed7: 0x37f1, - 0xed8: 0x3809, 0xed9: 0x3821, 0xeda: 0x3839, 0xedb: 0x3851, 0xedc: 0x3869, 0xedd: 0x3881, - 0xede: 0x3899, 0xedf: 0x38b1, 0xee0: 0x335d, 0xee1: 0x337d, 0xee2: 0x339d, 0xee3: 0x33bd, - 0xee4: 0x33dd, 0xee5: 0x33dd, 0xee6: 0x33fd, 0xee7: 0x341d, 0xee8: 0x343d, 0xee9: 0x345d, - 0xeea: 0x347d, 0xeeb: 0x349d, 0xeec: 0x34bd, 0xeed: 0x34dd, 0xeee: 0x34fd, 0xeef: 0x351d, - 0xef0: 0x353d, 0xef1: 0x355d, 0xef2: 0x357d, 0xef3: 0x359d, 0xef4: 0x35bd, 0xef5: 0x35dd, - 0xef6: 0x35fd, 0xef7: 0x361d, 0xef8: 0x363d, 0xef9: 0x365d, 0xefa: 0x367d, 0xefb: 0x369d, - 0xefc: 0x38c9, 0xefd: 0x3901, 0xefe: 0x36bd, 0xeff: 0x0018, + 0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd, + 0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd, + 0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d, + 0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d, + 0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d, + 0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd, + 0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d, + 0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd, + 0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d, + 0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd, + 0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d, // Block 0x3c, offset 0xf00 - 0xf00: 0x36dd, 0xf01: 0x36fd, 0xf02: 0x371d, 0xf03: 0x373d, 0xf04: 0x375d, 0xf05: 0x377d, - 0xf06: 0x379d, 0xf07: 0x37bd, 0xf08: 0x37dd, 0xf09: 0x37fd, 0xf0a: 0x381d, 0xf0b: 0x383d, - 0xf0c: 0x385d, 0xf0d: 0x387d, 0xf0e: 0x389d, 0xf0f: 0x38bd, 0xf10: 0x38dd, 0xf11: 0x38fd, - 0xf12: 0x391d, 0xf13: 0x393d, 0xf14: 0x395d, 0xf15: 0x397d, 0xf16: 0x399d, 0xf17: 0x39bd, - 0xf18: 0x39dd, 0xf19: 0x39fd, 0xf1a: 0x3a1d, 0xf1b: 0x3a3d, 0xf1c: 0x3a5d, 0xf1d: 0x3a7d, - 0xf1e: 0x3a9d, 0xf1f: 0x3abd, 0xf20: 0x3add, 0xf21: 0x3afd, 0xf22: 0x3b1d, 0xf23: 0x3b3d, - 0xf24: 0x3b5d, 0xf25: 0x3b7d, 0xf26: 0x127d, 0xf27: 0x3b9d, 0xf28: 0x3bbd, 0xf29: 0x3bdd, - 0xf2a: 0x3bfd, 0xf2b: 0x3c1d, 0xf2c: 0x3c3d, 0xf2d: 0x3c5d, 0xf2e: 0x239d, 0xf2f: 0x3c7d, - 0xf30: 0x3c9d, 0xf31: 0x3939, 0xf32: 0x3951, 0xf33: 0x3969, 0xf34: 0x3981, 0xf35: 0x3999, - 0xf36: 0x39b1, 0xf37: 0x39c9, 0xf38: 0x39e1, 0xf39: 0x39f9, 0xf3a: 0x3a11, 0xf3b: 0x3a29, - 0xf3c: 0x3a41, 0xf3d: 0x3a59, 0xf3e: 0x3a71, 0xf3f: 0x3a89, + 0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd, + 0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d, + 0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018, + 0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd, + 0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d, + 0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008, + 0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008, + 0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008, + 0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008, + 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040, + 0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040, // Block 0x3d, offset 0xf40 - 0xf40: 0x3aa1, 0xf41: 0x3ac9, 0xf42: 0x3af1, 0xf43: 0x3b19, 0xf44: 0x3b41, 0xf45: 0x3b69, - 0xf46: 0x3b91, 0xf47: 0x3bb9, 0xf48: 0x3be1, 0xf49: 0x3c09, 0xf4a: 0x3c39, 0xf4b: 0x3c69, - 0xf4c: 0x3c99, 0xf4d: 0x3cbd, 0xf4e: 0x3cb1, 0xf4f: 0x3cdd, 0xf50: 0x3cfd, 0xf51: 0x3d15, - 0xf52: 0x3d2d, 0xf53: 0x3d45, 0xf54: 0x3d5d, 0xf55: 0x3d5d, 0xf56: 0x3d45, 0xf57: 0x3d75, - 0xf58: 0x07bd, 0xf59: 0x3d8d, 0xf5a: 0x3da5, 0xf5b: 0x3dbd, 0xf5c: 0x3dd5, 0xf5d: 0x3ded, - 0xf5e: 0x3e05, 0xf5f: 0x3e1d, 0xf60: 0x3e35, 0xf61: 0x3e4d, 0xf62: 0x3e65, 0xf63: 0x3e7d, - 0xf64: 0x3e95, 0xf65: 0x3e95, 0xf66: 0x3ead, 0xf67: 0x3ead, 0xf68: 0x3ec5, 0xf69: 0x3ec5, - 0xf6a: 0x3edd, 0xf6b: 0x3ef5, 0xf6c: 0x3f0d, 0xf6d: 0x3f25, 0xf6e: 0x3f3d, 0xf6f: 0x3f3d, - 0xf70: 0x3f55, 0xf71: 0x3f55, 0xf72: 0x3f55, 0xf73: 0x3f6d, 0xf74: 0x3f85, 0xf75: 0x3f9d, - 0xf76: 0x3fb5, 0xf77: 0x3f9d, 0xf78: 0x3fcd, 0xf79: 0x3fe5, 0xf7a: 0x3f6d, 0xf7b: 0x3ffd, - 0xf7c: 0x4015, 0xf7d: 0x4015, 0xf7e: 0x4015, 0xf7f: 0x0040, + 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd, + 0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018, + 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761, + 0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1, + 0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881, + 0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd, + 0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d, + 0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d, + 0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd, + 0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d, + 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018, // Block 0x3e, offset 0xf80 - 0xf80: 0x3cc9, 0xf81: 0x3d31, 0xf82: 0x3d99, 0xf83: 0x3e01, 0xf84: 0x3e51, 0xf85: 0x3eb9, - 0xf86: 0x3f09, 0xf87: 0x3f59, 0xf88: 0x3fd9, 0xf89: 0x4041, 0xf8a: 0x4091, 0xf8b: 0x40e1, - 0xf8c: 0x4131, 0xf8d: 0x4199, 0xf8e: 0x4201, 0xf8f: 0x4251, 0xf90: 0x42a1, 0xf91: 0x42d9, - 0xf92: 0x4329, 0xf93: 0x4391, 0xf94: 0x43f9, 0xf95: 0x4431, 0xf96: 0x44b1, 0xf97: 0x4549, - 0xf98: 0x45c9, 0xf99: 0x4619, 0xf9a: 0x4699, 0xf9b: 0x4719, 0xf9c: 0x4781, 0xf9d: 0x47d1, - 0xf9e: 0x4821, 0xf9f: 0x4871, 0xfa0: 0x48d9, 0xfa1: 0x4959, 0xfa2: 0x49c1, 0xfa3: 0x4a11, - 0xfa4: 0x4a61, 0xfa5: 0x4ab1, 0xfa6: 0x4ae9, 0xfa7: 0x4b21, 0xfa8: 0x4b59, 0xfa9: 0x4b91, - 0xfaa: 0x4be1, 0xfab: 0x4c31, 0xfac: 0x4cb1, 0xfad: 0x4d01, 0xfae: 0x4d69, 0xfaf: 0x4de9, - 0xfb0: 0x4e39, 0xfb1: 0x4e71, 0xfb2: 0x4ea9, 0xfb3: 0x4f29, 0xfb4: 0x4f91, 0xfb5: 0x5011, - 0xfb6: 0x5061, 0xfb7: 0x50e1, 0xfb8: 0x5119, 0xfb9: 0x5169, 0xfba: 0x51b9, 0xfbb: 0x5209, - 0xfbc: 0x5259, 0xfbd: 0x52a9, 0xfbe: 0x5311, 0xfbf: 0x5361, + 0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d, + 0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d, + 0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd, + 0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd, + 0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d, + 0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d, + 0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd, + 0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d, + 0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999, + 0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29, + 0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89, // Block 0x3f, offset 0xfc0 - 0xfc0: 0x5399, 0xfc1: 0x53e9, 0xfc2: 0x5439, 0xfc3: 0x5489, 0xfc4: 0x54f1, 0xfc5: 0x5541, - 0xfc6: 0x5591, 0xfc7: 0x55e1, 0xfc8: 0x5661, 0xfc9: 0x56c9, 0xfca: 0x5701, 0xfcb: 0x5781, - 0xfcc: 0x57b9, 0xfcd: 0x5821, 0xfce: 0x5889, 0xfcf: 0x58d9, 0xfd0: 0x5929, 0xfd1: 0x5979, - 0xfd2: 0x59e1, 0xfd3: 0x5a19, 0xfd4: 0x5a69, 0xfd5: 0x5ad1, 0xfd6: 0x5b09, 0xfd7: 0x5b89, - 0xfd8: 0x5bd9, 0xfd9: 0x5c01, 0xfda: 0x5c29, 0xfdb: 0x5c51, 0xfdc: 0x5c79, 0xfdd: 0x5ca1, - 0xfde: 0x5cc9, 0xfdf: 0x5cf1, 0xfe0: 0x5d19, 0xfe1: 0x5d41, 0xfe2: 0x5d69, 0xfe3: 0x5d99, - 0xfe4: 0x5dc9, 0xfe5: 0x5df9, 0xfe6: 0x5e29, 0xfe7: 0x5e59, 0xfe8: 0x5e89, 0xfe9: 0x5eb9, - 0xfea: 0x5ee9, 0xfeb: 0x5f19, 0xfec: 0x5f49, 0xfed: 0x5f79, 0xfee: 0x5fa9, 0xfef: 0x5fd9, - 0xff0: 0x6009, 0xff1: 0x402d, 0xff2: 0x6039, 0xff3: 0x6051, 0xff4: 0x404d, 0xff5: 0x6069, - 0xff6: 0x6081, 0xff7: 0x6099, 0xff8: 0x406d, 0xff9: 0x406d, 0xffa: 0x60b1, 0xffb: 0x60c9, - 0xffc: 0x6101, 0xffd: 0x6139, 0xffe: 0x6171, 0xfff: 0x61a9, + 0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69, + 0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69, + 0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15, + 0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75, + 0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded, + 0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d, + 0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5, + 0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d, + 0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d, + 0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd, + 0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040, // Block 0x40, offset 0x1000 - 0x1000: 0x6211, 0x1001: 0x6229, 0x1002: 0x408d, 0x1003: 0x6241, 0x1004: 0x6259, 0x1005: 0x6271, - 0x1006: 0x6289, 0x1007: 0x62a1, 0x1008: 0x40ad, 0x1009: 0x62b9, 0x100a: 0x62e1, 0x100b: 0x62f9, - 0x100c: 0x40cd, 0x100d: 0x40cd, 0x100e: 0x6311, 0x100f: 0x6329, 0x1010: 0x6341, 0x1011: 0x40ed, - 0x1012: 0x410d, 0x1013: 0x412d, 0x1014: 0x414d, 0x1015: 0x416d, 0x1016: 0x6359, 0x1017: 0x6371, - 0x1018: 0x6389, 0x1019: 0x63a1, 0x101a: 0x63b9, 0x101b: 0x418d, 0x101c: 0x63d1, 0x101d: 0x63e9, - 0x101e: 0x6401, 0x101f: 0x41ad, 0x1020: 0x41cd, 0x1021: 0x6419, 0x1022: 0x41ed, 0x1023: 0x420d, - 0x1024: 0x422d, 0x1025: 0x6431, 0x1026: 0x424d, 0x1027: 0x6449, 0x1028: 0x6479, 0x1029: 0x6211, - 0x102a: 0x426d, 0x102b: 0x428d, 0x102c: 0x42ad, 0x102d: 0x42cd, 0x102e: 0x64b1, 0x102f: 0x64f1, - 0x1030: 0x6539, 0x1031: 0x6551, 0x1032: 0x42ed, 0x1033: 0x6569, 0x1034: 0x6581, 0x1035: 0x6599, - 0x1036: 0x430d, 0x1037: 0x65b1, 0x1038: 0x65c9, 0x1039: 0x65b1, 0x103a: 0x65e1, 0x103b: 0x65f9, - 0x103c: 0x432d, 0x103d: 0x6611, 0x103e: 0x6629, 0x103f: 0x6611, + 0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9, + 0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1, + 0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9, + 0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549, + 0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1, + 0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11, + 0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91, + 0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9, + 0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011, + 0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209, + 0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361, // Block 0x41, offset 0x1040 - 0x1040: 0x434d, 0x1041: 0x436d, 0x1042: 0x0040, 0x1043: 0x6641, 0x1044: 0x6659, 0x1045: 0x6671, - 0x1046: 0x6689, 0x1047: 0x0040, 0x1048: 0x66c1, 0x1049: 0x66d9, 0x104a: 0x66f1, 0x104b: 0x6709, - 0x104c: 0x6721, 0x104d: 0x6739, 0x104e: 0x6401, 0x104f: 0x6751, 0x1050: 0x6769, 0x1051: 0x6781, - 0x1052: 0x438d, 0x1053: 0x6799, 0x1054: 0x6289, 0x1055: 0x43ad, 0x1056: 0x43cd, 0x1057: 0x67b1, - 0x1058: 0x0040, 0x1059: 0x43ed, 0x105a: 0x67c9, 0x105b: 0x67e1, 0x105c: 0x67f9, 0x105d: 0x6811, - 0x105e: 0x6829, 0x105f: 0x6859, 0x1060: 0x6889, 0x1061: 0x68b1, 0x1062: 0x68d9, 0x1063: 0x6901, - 0x1064: 0x6929, 0x1065: 0x6951, 0x1066: 0x6979, 0x1067: 0x69a1, 0x1068: 0x69c9, 0x1069: 0x69f1, - 0x106a: 0x6a21, 0x106b: 0x6a51, 0x106c: 0x6a81, 0x106d: 0x6ab1, 0x106e: 0x6ae1, 0x106f: 0x6b11, - 0x1070: 0x6b41, 0x1071: 0x6b71, 0x1072: 0x6ba1, 0x1073: 0x6bd1, 0x1074: 0x6c01, 0x1075: 0x6c31, - 0x1076: 0x6c61, 0x1077: 0x6c91, 0x1078: 0x6cc1, 0x1079: 0x6cf1, 0x107a: 0x6d21, 0x107b: 0x6d51, - 0x107c: 0x6d81, 0x107d: 0x6db1, 0x107e: 0x6de1, 0x107f: 0x440d, + 0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541, + 0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781, + 0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979, + 0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89, + 0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1, + 0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99, + 0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9, + 0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9, + 0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069, + 0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9, + 0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9, // Block 0x42, offset 0x1080 - 0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008, - 0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008, - 0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008, - 0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008, - 0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008, - 0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008, - 0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008, - 0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x1308, - 0x10b0: 0x1318, 0x10b1: 0x1318, 0x10b2: 0x1318, 0x10b3: 0x0018, 0x10b4: 0x1308, 0x10b5: 0x1308, - 0x10b6: 0x1308, 0x10b7: 0x1308, 0x10b8: 0x1308, 0x10b9: 0x1308, 0x10ba: 0x1308, 0x10bb: 0x1308, - 0x10bc: 0x1308, 0x10bd: 0x1308, 0x10be: 0x0018, 0x10bf: 0x0008, + 0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271, + 0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9, + 0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed, + 0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371, + 0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9, + 0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d, + 0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211, + 0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1, + 0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599, + 0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9, + 0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611, // Block 0x43, offset 0x10c0 - 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, - 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, - 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, - 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, - 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0x0ea1, 0x10dd: 0x6e11, - 0x10de: 0x1308, 0x10df: 0x1308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008, - 0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008, - 0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008, - 0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008, - 0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008, - 0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 0x10ff: 0x0008, + 0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671, + 0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709, + 0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781, + 0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1, + 0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811, + 0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901, + 0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1, + 0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11, + 0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31, + 0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51, + 0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d, // Block 0x44, offset 0x1100 - 0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018, - 0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018, - 0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018, - 0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008, - 0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008, - 0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 0x1122: 0xe00d, 0x1123: 0x0008, + 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, + 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, + 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, + 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, + 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008, + 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008, 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, - 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008, - 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008, - 0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008, - 0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 0x113f: 0x0008, + 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308, + 0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308, + 0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308, + 0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008, // Block 0x45, offset 0x1140 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, - 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008, - 0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 0x1162: 0xe00d, 0x1163: 0x0008, - 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, - 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, - 0x1170: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, - 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d, - 0x117c: 0x0008, 0x117d: 0x442d, 0x117e: 0xe00d, 0x117f: 0x0008, + 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11, + 0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008, + 0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008, + 0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008, + 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, + 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008, + 0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008, // Block 0x46, offset 0x1180 - 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, - 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d, - 0x118c: 0x0008, 0x118d: 0x11d9, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, - 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, - 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, - 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018, + 0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018, + 0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018, + 0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008, + 0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008, + 0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008, 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, - 0x11aa: 0x6e29, 0x11ab: 0x1029, 0x11ac: 0x11c1, 0x11ad: 0x6e41, 0x11ae: 0x1221, 0x11af: 0x0040, - 0x11b0: 0x6e59, 0x11b1: 0x6e71, 0x11b2: 0x1239, 0x11b3: 0x444d, 0x11b4: 0xe00d, 0x11b5: 0x0008, - 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0x0040, 0x11b9: 0x0040, 0x11ba: 0x0040, 0x11bb: 0x0040, - 0x11bc: 0x0040, 0x11bd: 0x0040, 0x11be: 0x0040, 0x11bf: 0x0040, + 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, + 0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008, + 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008, + 0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008, // Block 0x47, offset 0x11c0 - 0x11c0: 0x64d5, 0x11c1: 0x64f5, 0x11c2: 0x6515, 0x11c3: 0x6535, 0x11c4: 0x6555, 0x11c5: 0x6575, - 0x11c6: 0x6595, 0x11c7: 0x65b5, 0x11c8: 0x65d5, 0x11c9: 0x65f5, 0x11ca: 0x6615, 0x11cb: 0x6635, - 0x11cc: 0x6655, 0x11cd: 0x6675, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x6695, 0x11d1: 0x0008, - 0x11d2: 0x66b5, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x66d5, 0x11d6: 0x66f5, 0x11d7: 0x6715, - 0x11d8: 0x6735, 0x11d9: 0x6755, 0x11da: 0x6775, 0x11db: 0x6795, 0x11dc: 0x67b5, 0x11dd: 0x67d5, - 0x11de: 0x67f5, 0x11df: 0x0008, 0x11e0: 0x6815, 0x11e1: 0x0008, 0x11e2: 0x6835, 0x11e3: 0x0008, - 0x11e4: 0x0008, 0x11e5: 0x6855, 0x11e6: 0x6875, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008, - 0x11ea: 0x6895, 0x11eb: 0x68b5, 0x11ec: 0x68d5, 0x11ed: 0x68f5, 0x11ee: 0x6915, 0x11ef: 0x6935, - 0x11f0: 0x6955, 0x11f1: 0x6975, 0x11f2: 0x6995, 0x11f3: 0x69b5, 0x11f4: 0x69d5, 0x11f5: 0x69f5, - 0x11f6: 0x6a15, 0x11f7: 0x6a35, 0x11f8: 0x6a55, 0x11f9: 0x6a75, 0x11fa: 0x6a95, 0x11fb: 0x6ab5, - 0x11fc: 0x6ad5, 0x11fd: 0x6af5, 0x11fe: 0x6b15, 0x11ff: 0x6b35, + 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, + 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008, + 0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, + 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, + 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, + 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, + 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, + 0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008, + 0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008, + 0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d, + 0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008, // Block 0x48, offset 0x1200 - 0x1200: 0x7a95, 0x1201: 0x7ab5, 0x1202: 0x7ad5, 0x1203: 0x7af5, 0x1204: 0x7b15, 0x1205: 0x7b35, - 0x1206: 0x7b55, 0x1207: 0x7b75, 0x1208: 0x7b95, 0x1209: 0x7bb5, 0x120a: 0x7bd5, 0x120b: 0x7bf5, - 0x120c: 0x7c15, 0x120d: 0x7c35, 0x120e: 0x7c55, 0x120f: 0x6ec9, 0x1210: 0x6ef1, 0x1211: 0x6f19, - 0x1212: 0x7c75, 0x1213: 0x7c95, 0x1214: 0x7cb5, 0x1215: 0x6f41, 0x1216: 0x6f69, 0x1217: 0x6f91, - 0x1218: 0x7cd5, 0x1219: 0x7cf5, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040, - 0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040, - 0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040, - 0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040, - 0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040, - 0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, + 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008, + 0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d, + 0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008, + 0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008, + 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008, + 0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008, + 0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008, + 0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0040, + 0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008, + 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, // Block 0x49, offset 0x1240 - 0x1240: 0x6fb9, 0x1241: 0x6fd1, 0x1242: 0x6fe9, 0x1243: 0x7d15, 0x1244: 0x7d35, 0x1245: 0x7001, - 0x1246: 0x7001, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040, - 0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040, - 0x1252: 0x0040, 0x1253: 0x7019, 0x1254: 0x7041, 0x1255: 0x7069, 0x1256: 0x7091, 0x1257: 0x70b9, - 0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x70e1, - 0x125e: 0x1308, 0x125f: 0x7109, 0x1260: 0x7131, 0x1261: 0x20a9, 0x1262: 0x20f1, 0x1263: 0x7149, - 0x1264: 0x7161, 0x1265: 0x7179, 0x1266: 0x7191, 0x1267: 0x71a9, 0x1268: 0x71c1, 0x1269: 0x1fb2, - 0x126a: 0x71d9, 0x126b: 0x7201, 0x126c: 0x7229, 0x126d: 0x7261, 0x126e: 0x7299, 0x126f: 0x72c1, - 0x1270: 0x72e9, 0x1271: 0x7311, 0x1272: 0x7339, 0x1273: 0x7361, 0x1274: 0x7389, 0x1275: 0x73b1, - 0x1276: 0x73d9, 0x1277: 0x0040, 0x1278: 0x7401, 0x1279: 0x7429, 0x127a: 0x7451, 0x127b: 0x7479, - 0x127c: 0x74a1, 0x127d: 0x0040, 0x127e: 0x74c9, 0x127f: 0x0040, + 0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575, + 0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635, + 0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008, + 0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715, + 0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5, + 0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008, + 0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, + 0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935, + 0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5, + 0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5, + 0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35, // Block 0x4a, offset 0x1280 - 0x1280: 0x74f1, 0x1281: 0x7519, 0x1282: 0x0040, 0x1283: 0x7541, 0x1284: 0x7569, 0x1285: 0x0040, - 0x1286: 0x7591, 0x1287: 0x75b9, 0x1288: 0x75e1, 0x1289: 0x7609, 0x128a: 0x7631, 0x128b: 0x7659, - 0x128c: 0x7681, 0x128d: 0x76a9, 0x128e: 0x76d1, 0x128f: 0x76f9, 0x1290: 0x7721, 0x1291: 0x7721, - 0x1292: 0x7739, 0x1293: 0x7739, 0x1294: 0x7739, 0x1295: 0x7739, 0x1296: 0x7751, 0x1297: 0x7751, - 0x1298: 0x7751, 0x1299: 0x7751, 0x129a: 0x7769, 0x129b: 0x7769, 0x129c: 0x7769, 0x129d: 0x7769, - 0x129e: 0x7781, 0x129f: 0x7781, 0x12a0: 0x7781, 0x12a1: 0x7781, 0x12a2: 0x7799, 0x12a3: 0x7799, - 0x12a4: 0x7799, 0x12a5: 0x7799, 0x12a6: 0x77b1, 0x12a7: 0x77b1, 0x12a8: 0x77b1, 0x12a9: 0x77b1, - 0x12aa: 0x77c9, 0x12ab: 0x77c9, 0x12ac: 0x77c9, 0x12ad: 0x77c9, 0x12ae: 0x77e1, 0x12af: 0x77e1, - 0x12b0: 0x77e1, 0x12b1: 0x77e1, 0x12b2: 0x77f9, 0x12b3: 0x77f9, 0x12b4: 0x77f9, 0x12b5: 0x77f9, - 0x12b6: 0x7811, 0x12b7: 0x7811, 0x12b8: 0x7811, 0x12b9: 0x7811, 0x12ba: 0x7829, 0x12bb: 0x7829, - 0x12bc: 0x7829, 0x12bd: 0x7829, 0x12be: 0x7841, 0x12bf: 0x7841, + 0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35, + 0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5, + 0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19, + 0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91, + 0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040, + 0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040, + 0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040, + 0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040, + 0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040, + 0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040, + 0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040, // Block 0x4b, offset 0x12c0 - 0x12c0: 0x7841, 0x12c1: 0x7841, 0x12c2: 0x7859, 0x12c3: 0x7859, 0x12c4: 0x7871, 0x12c5: 0x7871, - 0x12c6: 0x7889, 0x12c7: 0x7889, 0x12c8: 0x78a1, 0x12c9: 0x78a1, 0x12ca: 0x78b9, 0x12cb: 0x78b9, - 0x12cc: 0x78d1, 0x12cd: 0x78d1, 0x12ce: 0x78e9, 0x12cf: 0x78e9, 0x12d0: 0x78e9, 0x12d1: 0x78e9, - 0x12d2: 0x7901, 0x12d3: 0x7901, 0x12d4: 0x7901, 0x12d5: 0x7901, 0x12d6: 0x7919, 0x12d7: 0x7919, - 0x12d8: 0x7919, 0x12d9: 0x7919, 0x12da: 0x7931, 0x12db: 0x7931, 0x12dc: 0x7931, 0x12dd: 0x7931, - 0x12de: 0x7949, 0x12df: 0x7949, 0x12e0: 0x7961, 0x12e1: 0x7961, 0x12e2: 0x7961, 0x12e3: 0x7961, - 0x12e4: 0x7979, 0x12e5: 0x7979, 0x12e6: 0x7991, 0x12e7: 0x7991, 0x12e8: 0x7991, 0x12e9: 0x7991, - 0x12ea: 0x79a9, 0x12eb: 0x79a9, 0x12ec: 0x79a9, 0x12ed: 0x79a9, 0x12ee: 0x79c1, 0x12ef: 0x79c1, - 0x12f0: 0x79d9, 0x12f1: 0x79d9, 0x12f2: 0x0018, 0x12f3: 0x0018, 0x12f4: 0x0018, 0x12f5: 0x0018, - 0x12f6: 0x0018, 0x12f7: 0x0018, 0x12f8: 0x0018, 0x12f9: 0x0018, 0x12fa: 0x0018, 0x12fb: 0x0018, - 0x12fc: 0x0018, 0x12fd: 0x0018, 0x12fe: 0x0018, 0x12ff: 0x0018, + 0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001, + 0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040, + 0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040, + 0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9, + 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1, + 0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149, + 0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2, + 0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1, + 0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1, + 0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479, + 0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040, // Block 0x4c, offset 0x1300 - 0x1300: 0x0018, 0x1301: 0x0018, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040, - 0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040, - 0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040, - 0x1312: 0x0040, 0x1313: 0x79f1, 0x1314: 0x79f1, 0x1315: 0x79f1, 0x1316: 0x79f1, 0x1317: 0x7a09, - 0x1318: 0x7a09, 0x1319: 0x7a21, 0x131a: 0x7a21, 0x131b: 0x7a39, 0x131c: 0x7a39, 0x131d: 0x0479, - 0x131e: 0x7a51, 0x131f: 0x7a51, 0x1320: 0x7a69, 0x1321: 0x7a69, 0x1322: 0x7a81, 0x1323: 0x7a81, - 0x1324: 0x7a99, 0x1325: 0x7a99, 0x1326: 0x7a99, 0x1327: 0x7a99, 0x1328: 0x7ab1, 0x1329: 0x7ab1, - 0x132a: 0x7ac9, 0x132b: 0x7ac9, 0x132c: 0x7af1, 0x132d: 0x7af1, 0x132e: 0x7b19, 0x132f: 0x7b19, - 0x1330: 0x7b41, 0x1331: 0x7b41, 0x1332: 0x7b69, 0x1333: 0x7b69, 0x1334: 0x7b91, 0x1335: 0x7b91, - 0x1336: 0x7bb9, 0x1337: 0x7bb9, 0x1338: 0x7bb9, 0x1339: 0x7be1, 0x133a: 0x7be1, 0x133b: 0x7be1, - 0x133c: 0x7c09, 0x133d: 0x7c09, 0x133e: 0x7c09, 0x133f: 0x7c09, + 0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040, + 0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659, + 0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721, + 0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751, + 0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769, + 0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799, + 0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1, + 0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1, + 0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9, + 0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829, + 0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841, // Block 0x4d, offset 0x1340 - 0x1340: 0x85f9, 0x1341: 0x8621, 0x1342: 0x8649, 0x1343: 0x8671, 0x1344: 0x8699, 0x1345: 0x86c1, - 0x1346: 0x86e9, 0x1347: 0x8711, 0x1348: 0x8739, 0x1349: 0x8761, 0x134a: 0x8789, 0x134b: 0x87b1, - 0x134c: 0x87d9, 0x134d: 0x8801, 0x134e: 0x8829, 0x134f: 0x8851, 0x1350: 0x8879, 0x1351: 0x88a1, - 0x1352: 0x88c9, 0x1353: 0x88f1, 0x1354: 0x8919, 0x1355: 0x8941, 0x1356: 0x8969, 0x1357: 0x8991, - 0x1358: 0x89b9, 0x1359: 0x89e1, 0x135a: 0x8a09, 0x135b: 0x8a31, 0x135c: 0x8a59, 0x135d: 0x8a81, - 0x135e: 0x8aaa, 0x135f: 0x8ada, 0x1360: 0x8b0a, 0x1361: 0x8b3a, 0x1362: 0x8b6a, 0x1363: 0x8b9a, - 0x1364: 0x8bc9, 0x1365: 0x8bf1, 0x1366: 0x7c71, 0x1367: 0x8c19, 0x1368: 0x7be1, 0x1369: 0x7c99, - 0x136a: 0x8c41, 0x136b: 0x8c69, 0x136c: 0x7d39, 0x136d: 0x8c91, 0x136e: 0x7d61, 0x136f: 0x7d89, - 0x1370: 0x8cb9, 0x1371: 0x8ce1, 0x1372: 0x7e29, 0x1373: 0x8d09, 0x1374: 0x7e51, 0x1375: 0x7e79, - 0x1376: 0x8d31, 0x1377: 0x8d59, 0x1378: 0x7ec9, 0x1379: 0x8d81, 0x137a: 0x7ef1, 0x137b: 0x7f19, - 0x137c: 0x83a1, 0x137d: 0x83c9, 0x137e: 0x8441, 0x137f: 0x8469, + 0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871, + 0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9, + 0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9, + 0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919, + 0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931, + 0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961, + 0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991, + 0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1, + 0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818, + 0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818, + 0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818, // Block 0x4e, offset 0x1380 - 0x1380: 0x8491, 0x1381: 0x8531, 0x1382: 0x8559, 0x1383: 0x8581, 0x1384: 0x85a9, 0x1385: 0x8649, - 0x1386: 0x8671, 0x1387: 0x8699, 0x1388: 0x8da9, 0x1389: 0x8739, 0x138a: 0x8dd1, 0x138b: 0x8df9, - 0x138c: 0x8829, 0x138d: 0x8e21, 0x138e: 0x8851, 0x138f: 0x8879, 0x1390: 0x8a81, 0x1391: 0x8e49, - 0x1392: 0x8e71, 0x1393: 0x89b9, 0x1394: 0x8e99, 0x1395: 0x89e1, 0x1396: 0x8a09, 0x1397: 0x7c21, - 0x1398: 0x7c49, 0x1399: 0x8ec1, 0x139a: 0x7c71, 0x139b: 0x8ee9, 0x139c: 0x7cc1, 0x139d: 0x7ce9, - 0x139e: 0x7d11, 0x139f: 0x7d39, 0x13a0: 0x8f11, 0x13a1: 0x7db1, 0x13a2: 0x7dd9, 0x13a3: 0x7e01, - 0x13a4: 0x7e29, 0x13a5: 0x8f39, 0x13a6: 0x7ec9, 0x13a7: 0x7f41, 0x13a8: 0x7f69, 0x13a9: 0x7f91, - 0x13aa: 0x7fb9, 0x13ab: 0x7fe1, 0x13ac: 0x8031, 0x13ad: 0x8059, 0x13ae: 0x8081, 0x13af: 0x80a9, - 0x13b0: 0x80d1, 0x13b1: 0x80f9, 0x13b2: 0x8f61, 0x13b3: 0x8121, 0x13b4: 0x8149, 0x13b5: 0x8171, - 0x13b6: 0x8199, 0x13b7: 0x81c1, 0x13b8: 0x81e9, 0x13b9: 0x8239, 0x13ba: 0x8261, 0x13bb: 0x8289, - 0x13bc: 0x82b1, 0x13bd: 0x82d9, 0x13be: 0x8301, 0x13bf: 0x8329, + 0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040, + 0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040, + 0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040, + 0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09, + 0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479, + 0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81, + 0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1, + 0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19, + 0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91, + 0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1, + 0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09, // Block 0x4f, offset 0x13c0 - 0x13c0: 0x8351, 0x13c1: 0x8379, 0x13c2: 0x83f1, 0x13c3: 0x8419, 0x13c4: 0x84b9, 0x13c5: 0x84e1, - 0x13c6: 0x8509, 0x13c7: 0x8531, 0x13c8: 0x8559, 0x13c9: 0x85d1, 0x13ca: 0x85f9, 0x13cb: 0x8621, - 0x13cc: 0x8649, 0x13cd: 0x8f89, 0x13ce: 0x86c1, 0x13cf: 0x86e9, 0x13d0: 0x8711, 0x13d1: 0x8739, - 0x13d2: 0x87b1, 0x13d3: 0x87d9, 0x13d4: 0x8801, 0x13d5: 0x8829, 0x13d6: 0x8fb1, 0x13d7: 0x88a1, - 0x13d8: 0x88c9, 0x13d9: 0x8fd9, 0x13da: 0x8941, 0x13db: 0x8969, 0x13dc: 0x8991, 0x13dd: 0x89b9, - 0x13de: 0x9001, 0x13df: 0x7c71, 0x13e0: 0x8ee9, 0x13e1: 0x7d39, 0x13e2: 0x8f11, 0x13e3: 0x7e29, - 0x13e4: 0x8f39, 0x13e5: 0x7ec9, 0x13e6: 0x9029, 0x13e7: 0x80d1, 0x13e8: 0x9051, 0x13e9: 0x9079, - 0x13ea: 0x90a1, 0x13eb: 0x8531, 0x13ec: 0x8559, 0x13ed: 0x8649, 0x13ee: 0x8829, 0x13ef: 0x8fb1, - 0x13f0: 0x89b9, 0x13f1: 0x9001, 0x13f2: 0x90c9, 0x13f3: 0x9101, 0x13f4: 0x9139, 0x13f5: 0x9171, - 0x13f6: 0x9199, 0x13f7: 0x91c1, 0x13f8: 0x91e9, 0x13f9: 0x9211, 0x13fa: 0x9239, 0x13fb: 0x9261, - 0x13fc: 0x9289, 0x13fd: 0x92b1, 0x13fe: 0x92d9, 0x13ff: 0x9301, + 0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1, + 0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1, + 0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1, + 0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991, + 0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81, + 0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a, + 0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99, + 0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89, + 0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79, + 0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19, + 0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469, // Block 0x50, offset 0x1400 - 0x1400: 0x9329, 0x1401: 0x9351, 0x1402: 0x9379, 0x1403: 0x93a1, 0x1404: 0x93c9, 0x1405: 0x93f1, - 0x1406: 0x9419, 0x1407: 0x9441, 0x1408: 0x9469, 0x1409: 0x9491, 0x140a: 0x94b9, 0x140b: 0x94e1, - 0x140c: 0x9079, 0x140d: 0x9509, 0x140e: 0x9531, 0x140f: 0x9559, 0x1410: 0x9581, 0x1411: 0x9171, - 0x1412: 0x9199, 0x1413: 0x91c1, 0x1414: 0x91e9, 0x1415: 0x9211, 0x1416: 0x9239, 0x1417: 0x9261, - 0x1418: 0x9289, 0x1419: 0x92b1, 0x141a: 0x92d9, 0x141b: 0x9301, 0x141c: 0x9329, 0x141d: 0x9351, - 0x141e: 0x9379, 0x141f: 0x93a1, 0x1420: 0x93c9, 0x1421: 0x93f1, 0x1422: 0x9419, 0x1423: 0x9441, - 0x1424: 0x9469, 0x1425: 0x9491, 0x1426: 0x94b9, 0x1427: 0x94e1, 0x1428: 0x9079, 0x1429: 0x9509, - 0x142a: 0x9531, 0x142b: 0x9559, 0x142c: 0x9581, 0x142d: 0x9491, 0x142e: 0x94b9, 0x142f: 0x94e1, - 0x1430: 0x9079, 0x1431: 0x9051, 0x1432: 0x90a1, 0x1433: 0x8211, 0x1434: 0x8059, 0x1435: 0x8081, - 0x1436: 0x80a9, 0x1437: 0x9491, 0x1438: 0x94b9, 0x1439: 0x94e1, 0x143a: 0x8211, 0x143b: 0x8239, - 0x143c: 0x95a9, 0x143d: 0x95a9, 0x143e: 0x0018, 0x143f: 0x0018, + 0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649, + 0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9, + 0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49, + 0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21, + 0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9, + 0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01, + 0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91, + 0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9, + 0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171, + 0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289, + 0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329, // Block 0x51, offset 0x1440 - 0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040, - 0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040, - 0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x95d1, 0x1451: 0x9609, - 0x1452: 0x9609, 0x1453: 0x9641, 0x1454: 0x9679, 0x1455: 0x96b1, 0x1456: 0x96e9, 0x1457: 0x9721, - 0x1458: 0x9759, 0x1459: 0x9759, 0x145a: 0x9791, 0x145b: 0x97c9, 0x145c: 0x9801, 0x145d: 0x9839, - 0x145e: 0x9871, 0x145f: 0x98a9, 0x1460: 0x98a9, 0x1461: 0x98e1, 0x1462: 0x9919, 0x1463: 0x9919, - 0x1464: 0x9951, 0x1465: 0x9951, 0x1466: 0x9989, 0x1467: 0x99c1, 0x1468: 0x99c1, 0x1469: 0x99f9, - 0x146a: 0x9a31, 0x146b: 0x9a31, 0x146c: 0x9a69, 0x146d: 0x9a69, 0x146e: 0x9aa1, 0x146f: 0x9ad9, - 0x1470: 0x9ad9, 0x1471: 0x9b11, 0x1472: 0x9b11, 0x1473: 0x9b49, 0x1474: 0x9b81, 0x1475: 0x9bb9, - 0x1476: 0x9bf1, 0x1477: 0x9bf1, 0x1478: 0x9c29, 0x1479: 0x9c61, 0x147a: 0x9c99, 0x147b: 0x9cd1, - 0x147c: 0x9d09, 0x147d: 0x9d09, 0x147e: 0x9d41, 0x147f: 0x9d79, + 0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1, + 0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621, + 0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739, + 0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1, + 0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9, + 0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29, + 0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079, + 0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1, + 0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171, + 0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261, + 0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301, // Block 0x52, offset 0x1480 - 0x1480: 0xa949, 0x1481: 0xa981, 0x1482: 0xa9b9, 0x1483: 0xa8a1, 0x1484: 0x9bb9, 0x1485: 0x9989, - 0x1486: 0xa9f1, 0x1487: 0xaa29, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, - 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040, - 0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040, - 0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040, - 0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040, - 0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040, - 0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040, - 0x14b0: 0xaa61, 0x14b1: 0xaa99, 0x14b2: 0xaad1, 0x14b3: 0xab19, 0x14b4: 0xab61, 0x14b5: 0xaba9, - 0x14b6: 0xabf1, 0x14b7: 0xac39, 0x14b8: 0xac81, 0x14b9: 0xacc9, 0x14ba: 0xad02, 0x14bb: 0xae12, - 0x14bc: 0xae91, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040, + 0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1, + 0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1, + 0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171, + 0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261, + 0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351, + 0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441, + 0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509, + 0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1, + 0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081, + 0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239, + 0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018, // Block 0x53, offset 0x14c0 - 0x14c0: 0x13c0, 0x14c1: 0x13c0, 0x14c2: 0x13c0, 0x14c3: 0x13c0, 0x14c4: 0x13c0, 0x14c5: 0x13c0, - 0x14c6: 0x13c0, 0x14c7: 0x13c0, 0x14c8: 0x13c0, 0x14c9: 0x13c0, 0x14ca: 0x13c0, 0x14cb: 0x13c0, - 0x14cc: 0x13c0, 0x14cd: 0x13c0, 0x14ce: 0x13c0, 0x14cf: 0x13c0, 0x14d0: 0xaeda, 0x14d1: 0x7d55, - 0x14d2: 0x0040, 0x14d3: 0xaeea, 0x14d4: 0x03c2, 0x14d5: 0xaefa, 0x14d6: 0xaf0a, 0x14d7: 0x7d75, - 0x14d8: 0x7d95, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, - 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x1308, 0x14e1: 0x1308, 0x14e2: 0x1308, 0x14e3: 0x1308, - 0x14e4: 0x1308, 0x14e5: 0x1308, 0x14e6: 0x1308, 0x14e7: 0x1308, 0x14e8: 0x1308, 0x14e9: 0x1308, - 0x14ea: 0x1308, 0x14eb: 0x1308, 0x14ec: 0x1308, 0x14ed: 0x1308, 0x14ee: 0x1308, 0x14ef: 0x1308, - 0x14f0: 0x0040, 0x14f1: 0x7db5, 0x14f2: 0x7dd5, 0x14f3: 0xaf1a, 0x14f4: 0xaf1a, 0x14f5: 0x1fd2, - 0x14f6: 0x1fe2, 0x14f7: 0xaf2a, 0x14f8: 0xaf3a, 0x14f9: 0x7df5, 0x14fa: 0x7e15, 0x14fb: 0x7e35, - 0x14fc: 0x7df5, 0x14fd: 0x7e55, 0x14fe: 0x7e75, 0x14ff: 0x7e55, + 0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040, + 0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, + 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609, + 0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721, + 0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839, + 0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919, + 0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9, + 0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9, + 0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9, + 0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1, + 0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79, // Block 0x54, offset 0x1500 - 0x1500: 0x7e95, 0x1501: 0x7eb5, 0x1502: 0x7ed5, 0x1503: 0x7eb5, 0x1504: 0x7ef5, 0x1505: 0x0018, - 0x1506: 0x0018, 0x1507: 0xaf4a, 0x1508: 0xaf5a, 0x1509: 0x7f16, 0x150a: 0x7f36, 0x150b: 0x7f56, - 0x150c: 0x7f76, 0x150d: 0xaf1a, 0x150e: 0xaf1a, 0x150f: 0xaf1a, 0x1510: 0xaeda, 0x1511: 0x7f95, - 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x03c2, 0x1515: 0xaeea, 0x1516: 0xaf0a, 0x1517: 0xaefa, - 0x1518: 0x7fb5, 0x1519: 0x1fd2, 0x151a: 0x1fe2, 0x151b: 0xaf2a, 0x151c: 0xaf3a, 0x151d: 0x7e95, - 0x151e: 0x7ef5, 0x151f: 0xaf6a, 0x1520: 0xaf7a, 0x1521: 0xaf8a, 0x1522: 0x1fb2, 0x1523: 0xaf99, - 0x1524: 0xafaa, 0x1525: 0xafba, 0x1526: 0x1fc2, 0x1527: 0x0040, 0x1528: 0xafca, 0x1529: 0xafda, - 0x152a: 0xafea, 0x152b: 0xaffa, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, - 0x1530: 0x7fd6, 0x1531: 0xb009, 0x1532: 0x7ff6, 0x1533: 0x0008, 0x1534: 0x8016, 0x1535: 0x0040, - 0x1536: 0x8036, 0x1537: 0xb031, 0x1538: 0x8056, 0x1539: 0xb059, 0x153a: 0x8076, 0x153b: 0xb081, - 0x153c: 0x8096, 0x153d: 0xb0a9, 0x153e: 0x80b6, 0x153f: 0xb0d1, + 0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989, + 0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040, + 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040, + 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040, + 0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, + 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040, + 0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040, + 0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, + 0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9, + 0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12, + 0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040, // Block 0x55, offset 0x1540 - 0x1540: 0xb0f9, 0x1541: 0xb111, 0x1542: 0xb111, 0x1543: 0xb129, 0x1544: 0xb129, 0x1545: 0xb141, - 0x1546: 0xb141, 0x1547: 0xb159, 0x1548: 0xb159, 0x1549: 0xb171, 0x154a: 0xb171, 0x154b: 0xb171, - 0x154c: 0xb171, 0x154d: 0xb189, 0x154e: 0xb189, 0x154f: 0xb1a1, 0x1550: 0xb1a1, 0x1551: 0xb1a1, - 0x1552: 0xb1a1, 0x1553: 0xb1b9, 0x1554: 0xb1b9, 0x1555: 0xb1d1, 0x1556: 0xb1d1, 0x1557: 0xb1d1, - 0x1558: 0xb1d1, 0x1559: 0xb1e9, 0x155a: 0xb1e9, 0x155b: 0xb1e9, 0x155c: 0xb1e9, 0x155d: 0xb201, - 0x155e: 0xb201, 0x155f: 0xb201, 0x1560: 0xb201, 0x1561: 0xb219, 0x1562: 0xb219, 0x1563: 0xb219, - 0x1564: 0xb219, 0x1565: 0xb231, 0x1566: 0xb231, 0x1567: 0xb231, 0x1568: 0xb231, 0x1569: 0xb249, - 0x156a: 0xb249, 0x156b: 0xb261, 0x156c: 0xb261, 0x156d: 0xb279, 0x156e: 0xb279, 0x156f: 0xb291, - 0x1570: 0xb291, 0x1571: 0xb2a9, 0x1572: 0xb2a9, 0x1573: 0xb2a9, 0x1574: 0xb2a9, 0x1575: 0xb2c1, - 0x1576: 0xb2c1, 0x1577: 0xb2c1, 0x1578: 0xb2c1, 0x1579: 0xb2d9, 0x157a: 0xb2d9, 0x157b: 0xb2d9, - 0x157c: 0xb2d9, 0x157d: 0xb2f1, 0x157e: 0xb2f1, 0x157f: 0xb2f1, + 0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0, + 0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0, + 0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55, + 0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75, + 0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040, + 0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308, + 0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308, + 0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308, + 0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2, + 0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35, + 0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55, // Block 0x56, offset 0x1580 - 0x1580: 0xb2f1, 0x1581: 0xb309, 0x1582: 0xb309, 0x1583: 0xb309, 0x1584: 0xb309, 0x1585: 0xb321, - 0x1586: 0xb321, 0x1587: 0xb321, 0x1588: 0xb321, 0x1589: 0xb339, 0x158a: 0xb339, 0x158b: 0xb339, - 0x158c: 0xb339, 0x158d: 0xb351, 0x158e: 0xb351, 0x158f: 0xb351, 0x1590: 0xb351, 0x1591: 0xb369, - 0x1592: 0xb369, 0x1593: 0xb369, 0x1594: 0xb369, 0x1595: 0xb381, 0x1596: 0xb381, 0x1597: 0xb381, - 0x1598: 0xb381, 0x1599: 0xb399, 0x159a: 0xb399, 0x159b: 0xb399, 0x159c: 0xb399, 0x159d: 0xb3b1, - 0x159e: 0xb3b1, 0x159f: 0xb3b1, 0x15a0: 0xb3b1, 0x15a1: 0xb3c9, 0x15a2: 0xb3c9, 0x15a3: 0xb3c9, - 0x15a4: 0xb3c9, 0x15a5: 0xb3e1, 0x15a6: 0xb3e1, 0x15a7: 0xb3e1, 0x15a8: 0xb3e1, 0x15a9: 0xb3f9, - 0x15aa: 0xb3f9, 0x15ab: 0xb3f9, 0x15ac: 0xb3f9, 0x15ad: 0xb411, 0x15ae: 0xb411, 0x15af: 0x7ab1, - 0x15b0: 0x7ab1, 0x15b1: 0xb429, 0x15b2: 0xb429, 0x15b3: 0xb429, 0x15b4: 0xb429, 0x15b5: 0xb441, - 0x15b6: 0xb441, 0x15b7: 0xb469, 0x15b8: 0xb469, 0x15b9: 0xb491, 0x15ba: 0xb491, 0x15bb: 0xb4b9, - 0x15bc: 0xb4b9, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0, + 0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018, + 0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56, + 0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95, + 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa, + 0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95, + 0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99, + 0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda, + 0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, + 0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040, + 0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081, + 0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1, // Block 0x57, offset 0x15c0 - 0x15c0: 0x0040, 0x15c1: 0xaefa, 0x15c2: 0xb4e2, 0x15c3: 0xaf6a, 0x15c4: 0xafda, 0x15c5: 0xafea, - 0x15c6: 0xaf7a, 0x15c7: 0xb4f2, 0x15c8: 0x1fd2, 0x15c9: 0x1fe2, 0x15ca: 0xaf8a, 0x15cb: 0x1fb2, - 0x15cc: 0xaeda, 0x15cd: 0xaf99, 0x15ce: 0x29d1, 0x15cf: 0xb502, 0x15d0: 0x1f41, 0x15d1: 0x00c9, - 0x15d2: 0x0069, 0x15d3: 0x0079, 0x15d4: 0x1f51, 0x15d5: 0x1f61, 0x15d6: 0x1f71, 0x15d7: 0x1f81, - 0x15d8: 0x1f91, 0x15d9: 0x1fa1, 0x15da: 0xaeea, 0x15db: 0x03c2, 0x15dc: 0xafaa, 0x15dd: 0x1fc2, - 0x15de: 0xafba, 0x15df: 0xaf0a, 0x15e0: 0xaffa, 0x15e1: 0x0039, 0x15e2: 0x0ee9, 0x15e3: 0x1159, - 0x15e4: 0x0ef9, 0x15e5: 0x0f09, 0x15e6: 0x1199, 0x15e7: 0x0f31, 0x15e8: 0x0249, 0x15e9: 0x0f41, - 0x15ea: 0x0259, 0x15eb: 0x0f51, 0x15ec: 0x0359, 0x15ed: 0x0f61, 0x15ee: 0x0f71, 0x15ef: 0x00d9, - 0x15f0: 0x0f99, 0x15f1: 0x2039, 0x15f2: 0x0269, 0x15f3: 0x01d9, 0x15f4: 0x0fa9, 0x15f5: 0x0fb9, - 0x15f6: 0x1089, 0x15f7: 0x0279, 0x15f8: 0x0369, 0x15f9: 0x0289, 0x15fa: 0x13d1, 0x15fb: 0xaf4a, - 0x15fc: 0xafca, 0x15fd: 0xaf5a, 0x15fe: 0xb512, 0x15ff: 0xaf1a, + 0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141, + 0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171, + 0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1, + 0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1, + 0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201, + 0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219, + 0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249, + 0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291, + 0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1, + 0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9, + 0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1, // Block 0x58, offset 0x1600 - 0x1600: 0x1caa, 0x1601: 0x0039, 0x1602: 0x0ee9, 0x1603: 0x1159, 0x1604: 0x0ef9, 0x1605: 0x0f09, - 0x1606: 0x1199, 0x1607: 0x0f31, 0x1608: 0x0249, 0x1609: 0x0f41, 0x160a: 0x0259, 0x160b: 0x0f51, - 0x160c: 0x0359, 0x160d: 0x0f61, 0x160e: 0x0f71, 0x160f: 0x00d9, 0x1610: 0x0f99, 0x1611: 0x2039, - 0x1612: 0x0269, 0x1613: 0x01d9, 0x1614: 0x0fa9, 0x1615: 0x0fb9, 0x1616: 0x1089, 0x1617: 0x0279, - 0x1618: 0x0369, 0x1619: 0x0289, 0x161a: 0x13d1, 0x161b: 0xaf2a, 0x161c: 0xb522, 0x161d: 0xaf3a, - 0x161e: 0xb532, 0x161f: 0x80d5, 0x1620: 0x80f5, 0x1621: 0x29d1, 0x1622: 0x8115, 0x1623: 0x8115, - 0x1624: 0x8135, 0x1625: 0x8155, 0x1626: 0x8175, 0x1627: 0x8195, 0x1628: 0x81b5, 0x1629: 0x81d5, - 0x162a: 0x81f5, 0x162b: 0x8215, 0x162c: 0x8235, 0x162d: 0x8255, 0x162e: 0x8275, 0x162f: 0x8295, - 0x1630: 0x82b5, 0x1631: 0x82d5, 0x1632: 0x82f5, 0x1633: 0x8315, 0x1634: 0x8335, 0x1635: 0x8355, - 0x1636: 0x8375, 0x1637: 0x8395, 0x1638: 0x83b5, 0x1639: 0x83d5, 0x163a: 0x83f5, 0x163b: 0x8415, - 0x163c: 0x81b5, 0x163d: 0x8435, 0x163e: 0x8455, 0x163f: 0x8215, + 0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321, + 0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339, + 0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369, + 0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381, + 0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1, + 0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9, + 0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9, + 0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1, + 0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441, + 0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9, + 0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, // Block 0x59, offset 0x1640 - 0x1640: 0x8475, 0x1641: 0x8495, 0x1642: 0x84b5, 0x1643: 0x84d5, 0x1644: 0x84f5, 0x1645: 0x8515, - 0x1646: 0x8535, 0x1647: 0x8555, 0x1648: 0x84d5, 0x1649: 0x8575, 0x164a: 0x84d5, 0x164b: 0x8595, - 0x164c: 0x8595, 0x164d: 0x85b5, 0x164e: 0x85b5, 0x164f: 0x85d5, 0x1650: 0x8515, 0x1651: 0x85f5, - 0x1652: 0x8615, 0x1653: 0x85f5, 0x1654: 0x8635, 0x1655: 0x8615, 0x1656: 0x8655, 0x1657: 0x8655, - 0x1658: 0x8675, 0x1659: 0x8675, 0x165a: 0x8695, 0x165b: 0x8695, 0x165c: 0x8615, 0x165d: 0x8115, - 0x165e: 0x86b5, 0x165f: 0x86d5, 0x1660: 0x0040, 0x1661: 0x86f5, 0x1662: 0x8715, 0x1663: 0x8735, - 0x1664: 0x8755, 0x1665: 0x8735, 0x1666: 0x8775, 0x1667: 0x8795, 0x1668: 0x87b5, 0x1669: 0x87b5, - 0x166a: 0x87d5, 0x166b: 0x87d5, 0x166c: 0x87f5, 0x166d: 0x87f5, 0x166e: 0x87d5, 0x166f: 0x87d5, - 0x1670: 0x8815, 0x1671: 0x8835, 0x1672: 0x8855, 0x1673: 0x8875, 0x1674: 0x8895, 0x1675: 0x88b5, - 0x1676: 0x88b5, 0x1677: 0x88b5, 0x1678: 0x88d5, 0x1679: 0x88d5, 0x167a: 0x88d5, 0x167b: 0x88d5, - 0x167c: 0x87b5, 0x167d: 0x87b5, 0x167e: 0x87b5, 0x167f: 0x0040, + 0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea, + 0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2, + 0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9, + 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81, + 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2, + 0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159, + 0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41, + 0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9, + 0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9, + 0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a, + 0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a, // Block 0x5a, offset 0x1680 - 0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x8715, 0x1683: 0x86f5, 0x1684: 0x88f5, 0x1685: 0x86f5, - 0x1686: 0x8715, 0x1687: 0x86f5, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x8915, 0x168b: 0x8715, - 0x168c: 0x8935, 0x168d: 0x88f5, 0x168e: 0x8935, 0x168f: 0x8715, 0x1690: 0x0040, 0x1691: 0x0040, - 0x1692: 0x8955, 0x1693: 0x8975, 0x1694: 0x8875, 0x1695: 0x8935, 0x1696: 0x88f5, 0x1697: 0x8935, - 0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x8995, 0x169b: 0x89b5, 0x169c: 0x8995, 0x169d: 0x0040, - 0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0xb541, 0x16a1: 0xb559, 0x16a2: 0xb571, 0x16a3: 0x89d6, - 0x16a4: 0xb589, 0x16a5: 0xb5a1, 0x16a6: 0x89f5, 0x16a7: 0x0040, 0x16a8: 0x8a15, 0x16a9: 0x8a35, - 0x16aa: 0x8a55, 0x16ab: 0x8a35, 0x16ac: 0x8a75, 0x16ad: 0x8a95, 0x16ae: 0x8ab5, 0x16af: 0x0040, - 0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040, - 0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340, - 0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040, + 0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09, + 0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51, + 0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039, + 0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279, + 0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a, + 0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115, + 0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5, + 0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295, + 0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355, + 0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415, + 0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215, // Block 0x5b, offset 0x16c0 - 0x16c0: 0x0208, 0x16c1: 0x0208, 0x16c2: 0x0208, 0x16c3: 0x0208, 0x16c4: 0x0208, 0x16c5: 0x0408, - 0x16c6: 0x0008, 0x16c7: 0x0408, 0x16c8: 0x0018, 0x16c9: 0x0408, 0x16ca: 0x0408, 0x16cb: 0x0008, - 0x16cc: 0x0008, 0x16cd: 0x0108, 0x16ce: 0x0408, 0x16cf: 0x0408, 0x16d0: 0x0408, 0x16d1: 0x0408, - 0x16d2: 0x0408, 0x16d3: 0x0208, 0x16d4: 0x0208, 0x16d5: 0x0208, 0x16d6: 0x0208, 0x16d7: 0x0108, - 0x16d8: 0x0208, 0x16d9: 0x0208, 0x16da: 0x0208, 0x16db: 0x0208, 0x16dc: 0x0208, 0x16dd: 0x0408, - 0x16de: 0x0208, 0x16df: 0x0208, 0x16e0: 0x0208, 0x16e1: 0x0408, 0x16e2: 0x0008, 0x16e3: 0x0008, - 0x16e4: 0x0408, 0x16e5: 0x1308, 0x16e6: 0x1308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040, - 0x16ea: 0x0040, 0x16eb: 0x0218, 0x16ec: 0x0218, 0x16ed: 0x0218, 0x16ee: 0x0218, 0x16ef: 0x0418, - 0x16f0: 0x0018, 0x16f1: 0x0018, 0x16f2: 0x0018, 0x16f3: 0x0018, 0x16f4: 0x0018, 0x16f5: 0x0018, - 0x16f6: 0x0018, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040, - 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, + 0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515, + 0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595, + 0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5, + 0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655, + 0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115, + 0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735, + 0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5, + 0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5, + 0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5, + 0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5, + 0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040, // Block 0x5c, offset 0x1700 - 0x1700: 0x0208, 0x1701: 0x0408, 0x1702: 0x0208, 0x1703: 0x0408, 0x1704: 0x0408, 0x1705: 0x0408, - 0x1706: 0x0208, 0x1707: 0x0208, 0x1708: 0x0208, 0x1709: 0x0408, 0x170a: 0x0208, 0x170b: 0x0208, - 0x170c: 0x0408, 0x170d: 0x0208, 0x170e: 0x0408, 0x170f: 0x0408, 0x1710: 0x0208, 0x1711: 0x0408, - 0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040, - 0x1718: 0x0040, 0x1719: 0x0018, 0x171a: 0x0018, 0x171b: 0x0018, 0x171c: 0x0018, 0x171d: 0x0040, - 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040, - 0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0418, - 0x172a: 0x0418, 0x172b: 0x0418, 0x172c: 0x0418, 0x172d: 0x0218, 0x172e: 0x0218, 0x172f: 0x0018, + 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5, + 0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715, + 0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040, + 0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935, + 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040, + 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6, + 0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35, + 0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040, 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, - 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, + 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340, 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, // Block 0x5d, offset 0x1740 - 0x1740: 0x1308, 0x1741: 0x1308, 0x1742: 0x1008, 0x1743: 0x1008, 0x1744: 0x0040, 0x1745: 0x0008, - 0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008, - 0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040, - 0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008, - 0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008, - 0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008, - 0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040, - 0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008, - 0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008, - 0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x0040, - 0x177c: 0x1308, 0x177d: 0x0008, 0x177e: 0x1008, 0x177f: 0x1008, + 0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08, + 0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808, + 0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08, + 0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908, + 0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08, + 0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808, + 0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040, + 0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18, + 0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818, + 0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, // Block 0x5e, offset 0x1780 - 0x1780: 0x1308, 0x1781: 0x1008, 0x1782: 0x1008, 0x1783: 0x1008, 0x1784: 0x1008, 0x1785: 0x0040, - 0x1786: 0x0040, 0x1787: 0x1008, 0x1788: 0x1008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x1008, - 0x178c: 0x1008, 0x178d: 0x1808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040, - 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x1008, - 0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008, - 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x1008, 0x17a3: 0x1008, - 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x1308, 0x17a7: 0x1308, 0x17a8: 0x1308, 0x17a9: 0x1308, - 0x17aa: 0x1308, 0x17ab: 0x1308, 0x17ac: 0x1308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040, - 0x17b0: 0x1308, 0x17b1: 0x1308, 0x17b2: 0x1308, 0x17b3: 0x1308, 0x17b4: 0x1308, 0x17b5: 0x0040, + 0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08, + 0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08, + 0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08, + 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040, + 0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040, + 0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040, + 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18, + 0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818, + 0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040, 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, // Block 0x5f, offset 0x17c0 - 0x17c0: 0x0039, 0x17c1: 0x0ee9, 0x17c2: 0x1159, 0x17c3: 0x0ef9, 0x17c4: 0x0f09, 0x17c5: 0x1199, - 0x17c6: 0x0f31, 0x17c7: 0x0249, 0x17c8: 0x0f41, 0x17c9: 0x0259, 0x17ca: 0x0f51, 0x17cb: 0x0359, - 0x17cc: 0x0f61, 0x17cd: 0x0f71, 0x17ce: 0x00d9, 0x17cf: 0x0f99, 0x17d0: 0x2039, 0x17d1: 0x0269, - 0x17d2: 0x01d9, 0x17d3: 0x0fa9, 0x17d4: 0x0fb9, 0x17d5: 0x1089, 0x17d6: 0x0279, 0x17d7: 0x0369, - 0x17d8: 0x0289, 0x17d9: 0x13d1, 0x17da: 0x0039, 0x17db: 0x0ee9, 0x17dc: 0x1159, 0x17dd: 0x0ef9, - 0x17de: 0x0f09, 0x17df: 0x1199, 0x17e0: 0x0f31, 0x17e1: 0x0249, 0x17e2: 0x0f41, 0x17e3: 0x0259, - 0x17e4: 0x0f51, 0x17e5: 0x0359, 0x17e6: 0x0f61, 0x17e7: 0x0f71, 0x17e8: 0x00d9, 0x17e9: 0x0f99, - 0x17ea: 0x2039, 0x17eb: 0x0269, 0x17ec: 0x01d9, 0x17ed: 0x0fa9, 0x17ee: 0x0fb9, 0x17ef: 0x1089, - 0x17f0: 0x0279, 0x17f1: 0x0369, 0x17f2: 0x0289, 0x17f3: 0x13d1, 0x17f4: 0x0039, 0x17f5: 0x0ee9, - 0x17f6: 0x1159, 0x17f7: 0x0ef9, 0x17f8: 0x0f09, 0x17f9: 0x1199, 0x17fa: 0x0f31, 0x17fb: 0x0249, - 0x17fc: 0x0f41, 0x17fd: 0x0259, 0x17fe: 0x0f51, 0x17ff: 0x0359, + 0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008, + 0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008, + 0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040, + 0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008, + 0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008, + 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008, + 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040, + 0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008, + 0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008, + 0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x0040, + 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008, // Block 0x60, offset 0x1800 - 0x1800: 0x0f61, 0x1801: 0x0f71, 0x1802: 0x00d9, 0x1803: 0x0f99, 0x1804: 0x2039, 0x1805: 0x0269, - 0x1806: 0x01d9, 0x1807: 0x0fa9, 0x1808: 0x0fb9, 0x1809: 0x1089, 0x180a: 0x0279, 0x180b: 0x0369, - 0x180c: 0x0289, 0x180d: 0x13d1, 0x180e: 0x0039, 0x180f: 0x0ee9, 0x1810: 0x1159, 0x1811: 0x0ef9, - 0x1812: 0x0f09, 0x1813: 0x1199, 0x1814: 0x0f31, 0x1815: 0x0040, 0x1816: 0x0f41, 0x1817: 0x0259, - 0x1818: 0x0f51, 0x1819: 0x0359, 0x181a: 0x0f61, 0x181b: 0x0f71, 0x181c: 0x00d9, 0x181d: 0x0f99, - 0x181e: 0x2039, 0x181f: 0x0269, 0x1820: 0x01d9, 0x1821: 0x0fa9, 0x1822: 0x0fb9, 0x1823: 0x1089, - 0x1824: 0x0279, 0x1825: 0x0369, 0x1826: 0x0289, 0x1827: 0x13d1, 0x1828: 0x0039, 0x1829: 0x0ee9, - 0x182a: 0x1159, 0x182b: 0x0ef9, 0x182c: 0x0f09, 0x182d: 0x1199, 0x182e: 0x0f31, 0x182f: 0x0249, - 0x1830: 0x0f41, 0x1831: 0x0259, 0x1832: 0x0f51, 0x1833: 0x0359, 0x1834: 0x0f61, 0x1835: 0x0f71, - 0x1836: 0x00d9, 0x1837: 0x0f99, 0x1838: 0x2039, 0x1839: 0x0269, 0x183a: 0x01d9, 0x183b: 0x0fa9, - 0x183c: 0x0fb9, 0x183d: 0x1089, 0x183e: 0x0279, 0x183f: 0x0369, + 0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040, + 0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008, + 0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040, + 0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008, + 0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008, + 0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008, + 0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308, + 0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040, + 0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040, + 0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040, + 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040, // Block 0x61, offset 0x1840 - 0x1840: 0x0289, 0x1841: 0x13d1, 0x1842: 0x0039, 0x1843: 0x0ee9, 0x1844: 0x1159, 0x1845: 0x0ef9, - 0x1846: 0x0f09, 0x1847: 0x1199, 0x1848: 0x0f31, 0x1849: 0x0249, 0x184a: 0x0f41, 0x184b: 0x0259, - 0x184c: 0x0f51, 0x184d: 0x0359, 0x184e: 0x0f61, 0x184f: 0x0f71, 0x1850: 0x00d9, 0x1851: 0x0f99, - 0x1852: 0x2039, 0x1853: 0x0269, 0x1854: 0x01d9, 0x1855: 0x0fa9, 0x1856: 0x0fb9, 0x1857: 0x1089, - 0x1858: 0x0279, 0x1859: 0x0369, 0x185a: 0x0289, 0x185b: 0x13d1, 0x185c: 0x0039, 0x185d: 0x0040, - 0x185e: 0x1159, 0x185f: 0x0ef9, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0f31, 0x1863: 0x0040, - 0x1864: 0x0040, 0x1865: 0x0259, 0x1866: 0x0f51, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0f71, - 0x186a: 0x00d9, 0x186b: 0x0f99, 0x186c: 0x2039, 0x186d: 0x0040, 0x186e: 0x01d9, 0x186f: 0x0fa9, - 0x1870: 0x0fb9, 0x1871: 0x1089, 0x1872: 0x0279, 0x1873: 0x0369, 0x1874: 0x0289, 0x1875: 0x13d1, - 0x1876: 0x0039, 0x1877: 0x0ee9, 0x1878: 0x1159, 0x1879: 0x0ef9, 0x187a: 0x0040, 0x187b: 0x1199, - 0x187c: 0x0040, 0x187d: 0x0249, 0x187e: 0x0f41, 0x187f: 0x0259, + 0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199, + 0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359, + 0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269, + 0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369, + 0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9, + 0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259, + 0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99, + 0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089, + 0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9, + 0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249, + 0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359, // Block 0x62, offset 0x1880 - 0x1880: 0x0f51, 0x1881: 0x0359, 0x1882: 0x0f61, 0x1883: 0x0f71, 0x1884: 0x0040, 0x1885: 0x0f99, - 0x1886: 0x2039, 0x1887: 0x0269, 0x1888: 0x01d9, 0x1889: 0x0fa9, 0x188a: 0x0fb9, 0x188b: 0x1089, - 0x188c: 0x0279, 0x188d: 0x0369, 0x188e: 0x0289, 0x188f: 0x13d1, 0x1890: 0x0039, 0x1891: 0x0ee9, - 0x1892: 0x1159, 0x1893: 0x0ef9, 0x1894: 0x0f09, 0x1895: 0x1199, 0x1896: 0x0f31, 0x1897: 0x0249, - 0x1898: 0x0f41, 0x1899: 0x0259, 0x189a: 0x0f51, 0x189b: 0x0359, 0x189c: 0x0f61, 0x189d: 0x0f71, - 0x189e: 0x00d9, 0x189f: 0x0f99, 0x18a0: 0x2039, 0x18a1: 0x0269, 0x18a2: 0x01d9, 0x18a3: 0x0fa9, - 0x18a4: 0x0fb9, 0x18a5: 0x1089, 0x18a6: 0x0279, 0x18a7: 0x0369, 0x18a8: 0x0289, 0x18a9: 0x13d1, - 0x18aa: 0x0039, 0x18ab: 0x0ee9, 0x18ac: 0x1159, 0x18ad: 0x0ef9, 0x18ae: 0x0f09, 0x18af: 0x1199, - 0x18b0: 0x0f31, 0x18b1: 0x0249, 0x18b2: 0x0f41, 0x18b3: 0x0259, 0x18b4: 0x0f51, 0x18b5: 0x0359, - 0x18b6: 0x0f61, 0x18b7: 0x0f71, 0x18b8: 0x00d9, 0x18b9: 0x0f99, 0x18ba: 0x2039, 0x18bb: 0x0269, - 0x18bc: 0x01d9, 0x18bd: 0x0fa9, 0x18be: 0x0fb9, 0x18bf: 0x1089, + 0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269, + 0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369, + 0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9, + 0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259, + 0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99, + 0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089, + 0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9, + 0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249, + 0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71, + 0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9, + 0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369, // Block 0x63, offset 0x18c0 - 0x18c0: 0x0279, 0x18c1: 0x0369, 0x18c2: 0x0289, 0x18c3: 0x13d1, 0x18c4: 0x0039, 0x18c5: 0x0ee9, - 0x18c6: 0x0040, 0x18c7: 0x0ef9, 0x18c8: 0x0f09, 0x18c9: 0x1199, 0x18ca: 0x0f31, 0x18cb: 0x0040, - 0x18cc: 0x0040, 0x18cd: 0x0259, 0x18ce: 0x0f51, 0x18cf: 0x0359, 0x18d0: 0x0f61, 0x18d1: 0x0f71, - 0x18d2: 0x00d9, 0x18d3: 0x0f99, 0x18d4: 0x2039, 0x18d5: 0x0040, 0x18d6: 0x01d9, 0x18d7: 0x0fa9, - 0x18d8: 0x0fb9, 0x18d9: 0x1089, 0x18da: 0x0279, 0x18db: 0x0369, 0x18dc: 0x0289, 0x18dd: 0x0040, - 0x18de: 0x0039, 0x18df: 0x0ee9, 0x18e0: 0x1159, 0x18e1: 0x0ef9, 0x18e2: 0x0f09, 0x18e3: 0x1199, - 0x18e4: 0x0f31, 0x18e5: 0x0249, 0x18e6: 0x0f41, 0x18e7: 0x0259, 0x18e8: 0x0f51, 0x18e9: 0x0359, - 0x18ea: 0x0f61, 0x18eb: 0x0f71, 0x18ec: 0x00d9, 0x18ed: 0x0f99, 0x18ee: 0x2039, 0x18ef: 0x0269, - 0x18f0: 0x01d9, 0x18f1: 0x0fa9, 0x18f2: 0x0fb9, 0x18f3: 0x1089, 0x18f4: 0x0279, 0x18f5: 0x0369, - 0x18f6: 0x0289, 0x18f7: 0x13d1, 0x18f8: 0x0039, 0x18f9: 0x0ee9, 0x18fa: 0x0040, 0x18fb: 0x0ef9, - 0x18fc: 0x0f09, 0x18fd: 0x1199, 0x18fe: 0x0f31, 0x18ff: 0x0040, + 0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9, + 0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259, + 0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99, + 0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089, + 0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040, + 0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040, + 0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71, + 0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9, + 0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1, + 0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199, + 0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259, // Block 0x64, offset 0x1900 - 0x1900: 0x0f41, 0x1901: 0x0259, 0x1902: 0x0f51, 0x1903: 0x0359, 0x1904: 0x0f61, 0x1905: 0x0040, - 0x1906: 0x00d9, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0040, 0x190a: 0x01d9, 0x190b: 0x0fa9, - 0x190c: 0x0fb9, 0x190d: 0x1089, 0x190e: 0x0279, 0x190f: 0x0369, 0x1910: 0x0289, 0x1911: 0x0040, - 0x1912: 0x0039, 0x1913: 0x0ee9, 0x1914: 0x1159, 0x1915: 0x0ef9, 0x1916: 0x0f09, 0x1917: 0x1199, - 0x1918: 0x0f31, 0x1919: 0x0249, 0x191a: 0x0f41, 0x191b: 0x0259, 0x191c: 0x0f51, 0x191d: 0x0359, - 0x191e: 0x0f61, 0x191f: 0x0f71, 0x1920: 0x00d9, 0x1921: 0x0f99, 0x1922: 0x2039, 0x1923: 0x0269, - 0x1924: 0x01d9, 0x1925: 0x0fa9, 0x1926: 0x0fb9, 0x1927: 0x1089, 0x1928: 0x0279, 0x1929: 0x0369, - 0x192a: 0x0289, 0x192b: 0x13d1, 0x192c: 0x0039, 0x192d: 0x0ee9, 0x192e: 0x1159, 0x192f: 0x0ef9, - 0x1930: 0x0f09, 0x1931: 0x1199, 0x1932: 0x0f31, 0x1933: 0x0249, 0x1934: 0x0f41, 0x1935: 0x0259, - 0x1936: 0x0f51, 0x1937: 0x0359, 0x1938: 0x0f61, 0x1939: 0x0f71, 0x193a: 0x00d9, 0x193b: 0x0f99, - 0x193c: 0x2039, 0x193d: 0x0269, 0x193e: 0x01d9, 0x193f: 0x0fa9, + 0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99, + 0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089, + 0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9, + 0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249, + 0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71, + 0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9, + 0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1, + 0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199, + 0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359, + 0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269, + 0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089, // Block 0x65, offset 0x1940 - 0x1940: 0x0fb9, 0x1941: 0x1089, 0x1942: 0x0279, 0x1943: 0x0369, 0x1944: 0x0289, 0x1945: 0x13d1, - 0x1946: 0x0039, 0x1947: 0x0ee9, 0x1948: 0x1159, 0x1949: 0x0ef9, 0x194a: 0x0f09, 0x194b: 0x1199, - 0x194c: 0x0f31, 0x194d: 0x0249, 0x194e: 0x0f41, 0x194f: 0x0259, 0x1950: 0x0f51, 0x1951: 0x0359, - 0x1952: 0x0f61, 0x1953: 0x0f71, 0x1954: 0x00d9, 0x1955: 0x0f99, 0x1956: 0x2039, 0x1957: 0x0269, - 0x1958: 0x01d9, 0x1959: 0x0fa9, 0x195a: 0x0fb9, 0x195b: 0x1089, 0x195c: 0x0279, 0x195d: 0x0369, - 0x195e: 0x0289, 0x195f: 0x13d1, 0x1960: 0x0039, 0x1961: 0x0ee9, 0x1962: 0x1159, 0x1963: 0x0ef9, - 0x1964: 0x0f09, 0x1965: 0x1199, 0x1966: 0x0f31, 0x1967: 0x0249, 0x1968: 0x0f41, 0x1969: 0x0259, - 0x196a: 0x0f51, 0x196b: 0x0359, 0x196c: 0x0f61, 0x196d: 0x0f71, 0x196e: 0x00d9, 0x196f: 0x0f99, - 0x1970: 0x2039, 0x1971: 0x0269, 0x1972: 0x01d9, 0x1973: 0x0fa9, 0x1974: 0x0fb9, 0x1975: 0x1089, - 0x1976: 0x0279, 0x1977: 0x0369, 0x1978: 0x0289, 0x1979: 0x13d1, 0x197a: 0x0039, 0x197b: 0x0ee9, - 0x197c: 0x1159, 0x197d: 0x0ef9, 0x197e: 0x0f09, 0x197f: 0x1199, + 0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9, + 0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040, + 0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71, + 0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9, + 0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040, + 0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199, + 0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359, + 0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269, + 0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369, + 0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9, + 0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040, // Block 0x66, offset 0x1980 - 0x1980: 0x0f31, 0x1981: 0x0249, 0x1982: 0x0f41, 0x1983: 0x0259, 0x1984: 0x0f51, 0x1985: 0x0359, - 0x1986: 0x0f61, 0x1987: 0x0f71, 0x1988: 0x00d9, 0x1989: 0x0f99, 0x198a: 0x2039, 0x198b: 0x0269, - 0x198c: 0x01d9, 0x198d: 0x0fa9, 0x198e: 0x0fb9, 0x198f: 0x1089, 0x1990: 0x0279, 0x1991: 0x0369, - 0x1992: 0x0289, 0x1993: 0x13d1, 0x1994: 0x0039, 0x1995: 0x0ee9, 0x1996: 0x1159, 0x1997: 0x0ef9, - 0x1998: 0x0f09, 0x1999: 0x1199, 0x199a: 0x0f31, 0x199b: 0x0249, 0x199c: 0x0f41, 0x199d: 0x0259, - 0x199e: 0x0f51, 0x199f: 0x0359, 0x19a0: 0x0f61, 0x19a1: 0x0f71, 0x19a2: 0x00d9, 0x19a3: 0x0f99, - 0x19a4: 0x2039, 0x19a5: 0x0269, 0x19a6: 0x01d9, 0x19a7: 0x0fa9, 0x19a8: 0x0fb9, 0x19a9: 0x1089, - 0x19aa: 0x0279, 0x19ab: 0x0369, 0x19ac: 0x0289, 0x19ad: 0x13d1, 0x19ae: 0x0039, 0x19af: 0x0ee9, - 0x19b0: 0x1159, 0x19b1: 0x0ef9, 0x19b2: 0x0f09, 0x19b3: 0x1199, 0x19b4: 0x0f31, 0x19b5: 0x0249, - 0x19b6: 0x0f41, 0x19b7: 0x0259, 0x19b8: 0x0f51, 0x19b9: 0x0359, 0x19ba: 0x0f61, 0x19bb: 0x0f71, - 0x19bc: 0x00d9, 0x19bd: 0x0f99, 0x19be: 0x2039, 0x19bf: 0x0269, + 0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040, + 0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9, + 0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040, + 0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199, + 0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359, + 0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269, + 0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369, + 0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9, + 0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259, + 0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99, + 0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9, // Block 0x67, offset 0x19c0 - 0x19c0: 0x01d9, 0x19c1: 0x0fa9, 0x19c2: 0x0fb9, 0x19c3: 0x1089, 0x19c4: 0x0279, 0x19c5: 0x0369, - 0x19c6: 0x0289, 0x19c7: 0x13d1, 0x19c8: 0x0039, 0x19c9: 0x0ee9, 0x19ca: 0x1159, 0x19cb: 0x0ef9, - 0x19cc: 0x0f09, 0x19cd: 0x1199, 0x19ce: 0x0f31, 0x19cf: 0x0249, 0x19d0: 0x0f41, 0x19d1: 0x0259, - 0x19d2: 0x0f51, 0x19d3: 0x0359, 0x19d4: 0x0f61, 0x19d5: 0x0f71, 0x19d6: 0x00d9, 0x19d7: 0x0f99, - 0x19d8: 0x2039, 0x19d9: 0x0269, 0x19da: 0x01d9, 0x19db: 0x0fa9, 0x19dc: 0x0fb9, 0x19dd: 0x1089, - 0x19de: 0x0279, 0x19df: 0x0369, 0x19e0: 0x0289, 0x19e1: 0x13d1, 0x19e2: 0x0039, 0x19e3: 0x0ee9, - 0x19e4: 0x1159, 0x19e5: 0x0ef9, 0x19e6: 0x0f09, 0x19e7: 0x1199, 0x19e8: 0x0f31, 0x19e9: 0x0249, - 0x19ea: 0x0f41, 0x19eb: 0x0259, 0x19ec: 0x0f51, 0x19ed: 0x0359, 0x19ee: 0x0f61, 0x19ef: 0x0f71, - 0x19f0: 0x00d9, 0x19f1: 0x0f99, 0x19f2: 0x2039, 0x19f3: 0x0269, 0x19f4: 0x01d9, 0x19f5: 0x0fa9, - 0x19f6: 0x0fb9, 0x19f7: 0x1089, 0x19f8: 0x0279, 0x19f9: 0x0369, 0x19fa: 0x0289, 0x19fb: 0x13d1, - 0x19fc: 0x0039, 0x19fd: 0x0ee9, 0x19fe: 0x1159, 0x19ff: 0x0ef9, + 0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1, + 0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199, + 0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359, + 0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269, + 0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369, + 0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9, + 0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259, + 0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99, + 0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089, + 0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9, + 0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199, // Block 0x68, offset 0x1a00 - 0x1a00: 0x0f09, 0x1a01: 0x1199, 0x1a02: 0x0f31, 0x1a03: 0x0249, 0x1a04: 0x0f41, 0x1a05: 0x0259, - 0x1a06: 0x0f51, 0x1a07: 0x0359, 0x1a08: 0x0f61, 0x1a09: 0x0f71, 0x1a0a: 0x00d9, 0x1a0b: 0x0f99, - 0x1a0c: 0x2039, 0x1a0d: 0x0269, 0x1a0e: 0x01d9, 0x1a0f: 0x0fa9, 0x1a10: 0x0fb9, 0x1a11: 0x1089, - 0x1a12: 0x0279, 0x1a13: 0x0369, 0x1a14: 0x0289, 0x1a15: 0x13d1, 0x1a16: 0x0039, 0x1a17: 0x0ee9, - 0x1a18: 0x1159, 0x1a19: 0x0ef9, 0x1a1a: 0x0f09, 0x1a1b: 0x1199, 0x1a1c: 0x0f31, 0x1a1d: 0x0249, - 0x1a1e: 0x0f41, 0x1a1f: 0x0259, 0x1a20: 0x0f51, 0x1a21: 0x0359, 0x1a22: 0x0f61, 0x1a23: 0x0f71, - 0x1a24: 0x00d9, 0x1a25: 0x0f99, 0x1a26: 0x2039, 0x1a27: 0x0269, 0x1a28: 0x01d9, 0x1a29: 0x0fa9, - 0x1a2a: 0x0fb9, 0x1a2b: 0x1089, 0x1a2c: 0x0279, 0x1a2d: 0x0369, 0x1a2e: 0x0289, 0x1a2f: 0x13d1, - 0x1a30: 0x0039, 0x1a31: 0x0ee9, 0x1a32: 0x1159, 0x1a33: 0x0ef9, 0x1a34: 0x0f09, 0x1a35: 0x1199, - 0x1a36: 0x0f31, 0x1a37: 0x0249, 0x1a38: 0x0f41, 0x1a39: 0x0259, 0x1a3a: 0x0f51, 0x1a3b: 0x0359, - 0x1a3c: 0x0f61, 0x1a3d: 0x0f71, 0x1a3e: 0x00d9, 0x1a3f: 0x0f99, + 0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359, + 0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269, + 0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369, + 0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9, + 0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259, + 0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99, + 0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089, + 0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9, + 0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249, + 0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71, + 0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269, // Block 0x69, offset 0x1a40 - 0x1a40: 0x2039, 0x1a41: 0x0269, 0x1a42: 0x01d9, 0x1a43: 0x0fa9, 0x1a44: 0x0fb9, 0x1a45: 0x1089, - 0x1a46: 0x0279, 0x1a47: 0x0369, 0x1a48: 0x0289, 0x1a49: 0x13d1, 0x1a4a: 0x0039, 0x1a4b: 0x0ee9, - 0x1a4c: 0x1159, 0x1a4d: 0x0ef9, 0x1a4e: 0x0f09, 0x1a4f: 0x1199, 0x1a50: 0x0f31, 0x1a51: 0x0249, - 0x1a52: 0x0f41, 0x1a53: 0x0259, 0x1a54: 0x0f51, 0x1a55: 0x0359, 0x1a56: 0x0f61, 0x1a57: 0x0f71, - 0x1a58: 0x00d9, 0x1a59: 0x0f99, 0x1a5a: 0x2039, 0x1a5b: 0x0269, 0x1a5c: 0x01d9, 0x1a5d: 0x0fa9, - 0x1a5e: 0x0fb9, 0x1a5f: 0x1089, 0x1a60: 0x0279, 0x1a61: 0x0369, 0x1a62: 0x0289, 0x1a63: 0x13d1, - 0x1a64: 0xba81, 0x1a65: 0xba99, 0x1a66: 0x0040, 0x1a67: 0x0040, 0x1a68: 0xbab1, 0x1a69: 0x1099, - 0x1a6a: 0x10b1, 0x1a6b: 0x10c9, 0x1a6c: 0xbac9, 0x1a6d: 0xbae1, 0x1a6e: 0xbaf9, 0x1a6f: 0x1429, - 0x1a70: 0x1a31, 0x1a71: 0xbb11, 0x1a72: 0xbb29, 0x1a73: 0xbb41, 0x1a74: 0xbb59, 0x1a75: 0xbb71, - 0x1a76: 0xbb89, 0x1a77: 0x2109, 0x1a78: 0x1111, 0x1a79: 0x1429, 0x1a7a: 0xbba1, 0x1a7b: 0xbbb9, - 0x1a7c: 0xbbd1, 0x1a7d: 0x10e1, 0x1a7e: 0x10f9, 0x1a7f: 0xbbe9, + 0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369, + 0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9, + 0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259, + 0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99, + 0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089, + 0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9, + 0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249, + 0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71, + 0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9, + 0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1, + 0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9, // Block 0x6a, offset 0x1a80 - 0x1a80: 0x2079, 0x1a81: 0xbc01, 0x1a82: 0xbab1, 0x1a83: 0x1099, 0x1a84: 0x10b1, 0x1a85: 0x10c9, - 0x1a86: 0xbac9, 0x1a87: 0xbae1, 0x1a88: 0xbaf9, 0x1a89: 0x1429, 0x1a8a: 0x1a31, 0x1a8b: 0xbb11, - 0x1a8c: 0xbb29, 0x1a8d: 0xbb41, 0x1a8e: 0xbb59, 0x1a8f: 0xbb71, 0x1a90: 0xbb89, 0x1a91: 0x2109, - 0x1a92: 0x1111, 0x1a93: 0xbba1, 0x1a94: 0xbba1, 0x1a95: 0xbbb9, 0x1a96: 0xbbd1, 0x1a97: 0x10e1, - 0x1a98: 0x10f9, 0x1a99: 0xbbe9, 0x1a9a: 0x2079, 0x1a9b: 0xbc21, 0x1a9c: 0xbac9, 0x1a9d: 0x1429, - 0x1a9e: 0xbb11, 0x1a9f: 0x10e1, 0x1aa0: 0x1111, 0x1aa1: 0x2109, 0x1aa2: 0xbab1, 0x1aa3: 0x1099, - 0x1aa4: 0x10b1, 0x1aa5: 0x10c9, 0x1aa6: 0xbac9, 0x1aa7: 0xbae1, 0x1aa8: 0xbaf9, 0x1aa9: 0x1429, - 0x1aaa: 0x1a31, 0x1aab: 0xbb11, 0x1aac: 0xbb29, 0x1aad: 0xbb41, 0x1aae: 0xbb59, 0x1aaf: 0xbb71, - 0x1ab0: 0xbb89, 0x1ab1: 0x2109, 0x1ab2: 0x1111, 0x1ab3: 0x1429, 0x1ab4: 0xbba1, 0x1ab5: 0xbbb9, - 0x1ab6: 0xbbd1, 0x1ab7: 0x10e1, 0x1ab8: 0x10f9, 0x1ab9: 0xbbe9, 0x1aba: 0x2079, 0x1abb: 0xbc01, - 0x1abc: 0xbab1, 0x1abd: 0x1099, 0x1abe: 0x10b1, 0x1abf: 0x10c9, + 0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259, + 0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99, + 0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089, + 0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9, + 0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249, + 0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71, + 0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9, + 0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1, + 0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199, + 0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359, + 0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99, // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0xbac9, 0x1ac1: 0xbae1, 0x1ac2: 0xbaf9, 0x1ac3: 0x1429, 0x1ac4: 0x1a31, 0x1ac5: 0xbb11, - 0x1ac6: 0xbb29, 0x1ac7: 0xbb41, 0x1ac8: 0xbb59, 0x1ac9: 0xbb71, 0x1aca: 0xbb89, 0x1acb: 0x2109, - 0x1acc: 0x1111, 0x1acd: 0xbba1, 0x1ace: 0xbba1, 0x1acf: 0xbbb9, 0x1ad0: 0xbbd1, 0x1ad1: 0x10e1, - 0x1ad2: 0x10f9, 0x1ad3: 0xbbe9, 0x1ad4: 0x2079, 0x1ad5: 0xbc21, 0x1ad6: 0xbac9, 0x1ad7: 0x1429, - 0x1ad8: 0xbb11, 0x1ad9: 0x10e1, 0x1ada: 0x1111, 0x1adb: 0x2109, 0x1adc: 0xbab1, 0x1add: 0x1099, - 0x1ade: 0x10b1, 0x1adf: 0x10c9, 0x1ae0: 0xbac9, 0x1ae1: 0xbae1, 0x1ae2: 0xbaf9, 0x1ae3: 0x1429, - 0x1ae4: 0x1a31, 0x1ae5: 0xbb11, 0x1ae6: 0xbb29, 0x1ae7: 0xbb41, 0x1ae8: 0xbb59, 0x1ae9: 0xbb71, - 0x1aea: 0xbb89, 0x1aeb: 0x2109, 0x1aec: 0x1111, 0x1aed: 0x1429, 0x1aee: 0xbba1, 0x1aef: 0xbbb9, - 0x1af0: 0xbbd1, 0x1af1: 0x10e1, 0x1af2: 0x10f9, 0x1af3: 0xbbe9, 0x1af4: 0x2079, 0x1af5: 0xbc01, - 0x1af6: 0xbab1, 0x1af7: 0x1099, 0x1af8: 0x10b1, 0x1af9: 0x10c9, 0x1afa: 0xbac9, 0x1afb: 0xbae1, - 0x1afc: 0xbaf9, 0x1afd: 0x1429, 0x1afe: 0x1a31, 0x1aff: 0xbb11, + 0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089, + 0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9, + 0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249, + 0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71, + 0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9, + 0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1, + 0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099, + 0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429, + 0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71, + 0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9, + 0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9, // Block 0x6c, offset 0x1b00 - 0x1b00: 0xbb29, 0x1b01: 0xbb41, 0x1b02: 0xbb59, 0x1b03: 0xbb71, 0x1b04: 0xbb89, 0x1b05: 0x2109, - 0x1b06: 0x1111, 0x1b07: 0xbba1, 0x1b08: 0xbba1, 0x1b09: 0xbbb9, 0x1b0a: 0xbbd1, 0x1b0b: 0x10e1, - 0x1b0c: 0x10f9, 0x1b0d: 0xbbe9, 0x1b0e: 0x2079, 0x1b0f: 0xbc21, 0x1b10: 0xbac9, 0x1b11: 0x1429, - 0x1b12: 0xbb11, 0x1b13: 0x10e1, 0x1b14: 0x1111, 0x1b15: 0x2109, 0x1b16: 0xbab1, 0x1b17: 0x1099, - 0x1b18: 0x10b1, 0x1b19: 0x10c9, 0x1b1a: 0xbac9, 0x1b1b: 0xbae1, 0x1b1c: 0xbaf9, 0x1b1d: 0x1429, - 0x1b1e: 0x1a31, 0x1b1f: 0xbb11, 0x1b20: 0xbb29, 0x1b21: 0xbb41, 0x1b22: 0xbb59, 0x1b23: 0xbb71, - 0x1b24: 0xbb89, 0x1b25: 0x2109, 0x1b26: 0x1111, 0x1b27: 0x1429, 0x1b28: 0xbba1, 0x1b29: 0xbbb9, - 0x1b2a: 0xbbd1, 0x1b2b: 0x10e1, 0x1b2c: 0x10f9, 0x1b2d: 0xbbe9, 0x1b2e: 0x2079, 0x1b2f: 0xbc01, - 0x1b30: 0xbab1, 0x1b31: 0x1099, 0x1b32: 0x10b1, 0x1b33: 0x10c9, 0x1b34: 0xbac9, 0x1b35: 0xbae1, - 0x1b36: 0xbaf9, 0x1b37: 0x1429, 0x1b38: 0x1a31, 0x1b39: 0xbb11, 0x1b3a: 0xbb29, 0x1b3b: 0xbb41, - 0x1b3c: 0xbb59, 0x1b3d: 0xbb71, 0x1b3e: 0xbb89, 0x1b3f: 0x2109, + 0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9, + 0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11, + 0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109, + 0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1, + 0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429, + 0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099, + 0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429, + 0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71, + 0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9, + 0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01, + 0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9, // Block 0x6d, offset 0x1b40 - 0x1b40: 0x1111, 0x1b41: 0xbba1, 0x1b42: 0xbba1, 0x1b43: 0xbbb9, 0x1b44: 0xbbd1, 0x1b45: 0x10e1, - 0x1b46: 0x10f9, 0x1b47: 0xbbe9, 0x1b48: 0x2079, 0x1b49: 0xbc21, 0x1b4a: 0xbac9, 0x1b4b: 0x1429, - 0x1b4c: 0xbb11, 0x1b4d: 0x10e1, 0x1b4e: 0x1111, 0x1b4f: 0x2109, 0x1b50: 0xbab1, 0x1b51: 0x1099, - 0x1b52: 0x10b1, 0x1b53: 0x10c9, 0x1b54: 0xbac9, 0x1b55: 0xbae1, 0x1b56: 0xbaf9, 0x1b57: 0x1429, - 0x1b58: 0x1a31, 0x1b59: 0xbb11, 0x1b5a: 0xbb29, 0x1b5b: 0xbb41, 0x1b5c: 0xbb59, 0x1b5d: 0xbb71, - 0x1b5e: 0xbb89, 0x1b5f: 0x2109, 0x1b60: 0x1111, 0x1b61: 0x1429, 0x1b62: 0xbba1, 0x1b63: 0xbbb9, - 0x1b64: 0xbbd1, 0x1b65: 0x10e1, 0x1b66: 0x10f9, 0x1b67: 0xbbe9, 0x1b68: 0x2079, 0x1b69: 0xbc01, - 0x1b6a: 0xbab1, 0x1b6b: 0x1099, 0x1b6c: 0x10b1, 0x1b6d: 0x10c9, 0x1b6e: 0xbac9, 0x1b6f: 0xbae1, - 0x1b70: 0xbaf9, 0x1b71: 0x1429, 0x1b72: 0x1a31, 0x1b73: 0xbb11, 0x1b74: 0xbb29, 0x1b75: 0xbb41, - 0x1b76: 0xbb59, 0x1b77: 0xbb71, 0x1b78: 0xbb89, 0x1b79: 0x2109, 0x1b7a: 0x1111, 0x1b7b: 0xbba1, - 0x1b7c: 0xbba1, 0x1b7d: 0xbbb9, 0x1b7e: 0xbbd1, 0x1b7f: 0x10e1, + 0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11, + 0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109, + 0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1, + 0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429, + 0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099, + 0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429, + 0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71, + 0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9, + 0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01, + 0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1, + 0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11, // Block 0x6e, offset 0x1b80 - 0x1b80: 0x10f9, 0x1b81: 0xbbe9, 0x1b82: 0x2079, 0x1b83: 0xbc21, 0x1b84: 0xbac9, 0x1b85: 0x1429, - 0x1b86: 0xbb11, 0x1b87: 0x10e1, 0x1b88: 0x1111, 0x1b89: 0x2109, 0x1b8a: 0xbc41, 0x1b8b: 0xbc41, - 0x1b8c: 0x0040, 0x1b8d: 0x0040, 0x1b8e: 0x1f41, 0x1b8f: 0x00c9, 0x1b90: 0x0069, 0x1b91: 0x0079, - 0x1b92: 0x1f51, 0x1b93: 0x1f61, 0x1b94: 0x1f71, 0x1b95: 0x1f81, 0x1b96: 0x1f91, 0x1b97: 0x1fa1, - 0x1b98: 0x1f41, 0x1b99: 0x00c9, 0x1b9a: 0x0069, 0x1b9b: 0x0079, 0x1b9c: 0x1f51, 0x1b9d: 0x1f61, - 0x1b9e: 0x1f71, 0x1b9f: 0x1f81, 0x1ba0: 0x1f91, 0x1ba1: 0x1fa1, 0x1ba2: 0x1f41, 0x1ba3: 0x00c9, - 0x1ba4: 0x0069, 0x1ba5: 0x0079, 0x1ba6: 0x1f51, 0x1ba7: 0x1f61, 0x1ba8: 0x1f71, 0x1ba9: 0x1f81, - 0x1baa: 0x1f91, 0x1bab: 0x1fa1, 0x1bac: 0x1f41, 0x1bad: 0x00c9, 0x1bae: 0x0069, 0x1baf: 0x0079, - 0x1bb0: 0x1f51, 0x1bb1: 0x1f61, 0x1bb2: 0x1f71, 0x1bb3: 0x1f81, 0x1bb4: 0x1f91, 0x1bb5: 0x1fa1, - 0x1bb6: 0x1f41, 0x1bb7: 0x00c9, 0x1bb8: 0x0069, 0x1bb9: 0x0079, 0x1bba: 0x1f51, 0x1bbb: 0x1f61, - 0x1bbc: 0x1f71, 0x1bbd: 0x1f81, 0x1bbe: 0x1f91, 0x1bbf: 0x1fa1, + 0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109, + 0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1, + 0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429, + 0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099, + 0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429, + 0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71, + 0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9, + 0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01, + 0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1, + 0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41, + 0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109, // Block 0x6f, offset 0x1bc0 - 0x1bc0: 0xe115, 0x1bc1: 0xe115, 0x1bc2: 0xe135, 0x1bc3: 0xe135, 0x1bc4: 0xe115, 0x1bc5: 0xe115, - 0x1bc6: 0xe175, 0x1bc7: 0xe175, 0x1bc8: 0xe115, 0x1bc9: 0xe115, 0x1bca: 0xe135, 0x1bcb: 0xe135, - 0x1bcc: 0xe115, 0x1bcd: 0xe115, 0x1bce: 0xe1f5, 0x1bcf: 0xe1f5, 0x1bd0: 0xe115, 0x1bd1: 0xe115, - 0x1bd2: 0xe135, 0x1bd3: 0xe135, 0x1bd4: 0xe115, 0x1bd5: 0xe115, 0x1bd6: 0xe175, 0x1bd7: 0xe175, - 0x1bd8: 0xe115, 0x1bd9: 0xe115, 0x1bda: 0xe135, 0x1bdb: 0xe135, 0x1bdc: 0xe115, 0x1bdd: 0xe115, - 0x1bde: 0x8b05, 0x1bdf: 0x8b05, 0x1be0: 0x04b5, 0x1be1: 0x04b5, 0x1be2: 0x0208, 0x1be3: 0x0208, - 0x1be4: 0x0208, 0x1be5: 0x0208, 0x1be6: 0x0208, 0x1be7: 0x0208, 0x1be8: 0x0208, 0x1be9: 0x0208, - 0x1bea: 0x0208, 0x1beb: 0x0208, 0x1bec: 0x0208, 0x1bed: 0x0208, 0x1bee: 0x0208, 0x1bef: 0x0208, - 0x1bf0: 0x0208, 0x1bf1: 0x0208, 0x1bf2: 0x0208, 0x1bf3: 0x0208, 0x1bf4: 0x0208, 0x1bf5: 0x0208, - 0x1bf6: 0x0208, 0x1bf7: 0x0208, 0x1bf8: 0x0208, 0x1bf9: 0x0208, 0x1bfa: 0x0208, 0x1bfb: 0x0208, - 0x1bfc: 0x0208, 0x1bfd: 0x0208, 0x1bfe: 0x0208, 0x1bff: 0x0208, + 0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1, + 0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429, + 0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099, + 0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429, + 0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71, + 0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9, + 0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01, + 0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1, + 0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41, + 0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1, + 0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1, // Block 0x70, offset 0x1c00 - 0x1c00: 0xb189, 0x1c01: 0xb1a1, 0x1c02: 0xb201, 0x1c03: 0xb249, 0x1c04: 0x0040, 0x1c05: 0xb411, - 0x1c06: 0xb291, 0x1c07: 0xb219, 0x1c08: 0xb309, 0x1c09: 0xb429, 0x1c0a: 0xb399, 0x1c0b: 0xb3b1, - 0x1c0c: 0xb3c9, 0x1c0d: 0xb3e1, 0x1c0e: 0xb2a9, 0x1c0f: 0xb339, 0x1c10: 0xb369, 0x1c11: 0xb2d9, - 0x1c12: 0xb381, 0x1c13: 0xb279, 0x1c14: 0xb2c1, 0x1c15: 0xb1d1, 0x1c16: 0xb1e9, 0x1c17: 0xb231, - 0x1c18: 0xb261, 0x1c19: 0xb2f1, 0x1c1a: 0xb321, 0x1c1b: 0xb351, 0x1c1c: 0xbc59, 0x1c1d: 0x7949, - 0x1c1e: 0xbc71, 0x1c1f: 0xbc89, 0x1c20: 0x0040, 0x1c21: 0xb1a1, 0x1c22: 0xb201, 0x1c23: 0x0040, - 0x1c24: 0xb3f9, 0x1c25: 0x0040, 0x1c26: 0x0040, 0x1c27: 0xb219, 0x1c28: 0x0040, 0x1c29: 0xb429, - 0x1c2a: 0xb399, 0x1c2b: 0xb3b1, 0x1c2c: 0xb3c9, 0x1c2d: 0xb3e1, 0x1c2e: 0xb2a9, 0x1c2f: 0xb339, - 0x1c30: 0xb369, 0x1c31: 0xb2d9, 0x1c32: 0xb381, 0x1c33: 0x0040, 0x1c34: 0xb2c1, 0x1c35: 0xb1d1, - 0x1c36: 0xb1e9, 0x1c37: 0xb231, 0x1c38: 0x0040, 0x1c39: 0xb2f1, 0x1c3a: 0x0040, 0x1c3b: 0xb351, - 0x1c3c: 0x0040, 0x1c3d: 0x0040, 0x1c3e: 0x0040, 0x1c3f: 0x0040, + 0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429, + 0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41, + 0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079, + 0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1, + 0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61, + 0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9, + 0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81, + 0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079, + 0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1, + 0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61, + 0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1, // Block 0x71, offset 0x1c40 - 0x1c40: 0x0040, 0x1c41: 0x0040, 0x1c42: 0xb201, 0x1c43: 0x0040, 0x1c44: 0x0040, 0x1c45: 0x0040, - 0x1c46: 0x0040, 0x1c47: 0xb219, 0x1c48: 0x0040, 0x1c49: 0xb429, 0x1c4a: 0x0040, 0x1c4b: 0xb3b1, - 0x1c4c: 0x0040, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0x0040, 0x1c51: 0xb2d9, - 0x1c52: 0xb381, 0x1c53: 0x0040, 0x1c54: 0xb2c1, 0x1c55: 0x0040, 0x1c56: 0x0040, 0x1c57: 0xb231, - 0x1c58: 0x0040, 0x1c59: 0xb2f1, 0x1c5a: 0x0040, 0x1c5b: 0xb351, 0x1c5c: 0x0040, 0x1c5d: 0x7949, - 0x1c5e: 0x0040, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, - 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0xb309, 0x1c69: 0xb429, - 0x1c6a: 0xb399, 0x1c6b: 0x0040, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, - 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, - 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0xb321, 0x1c7b: 0xb351, - 0x1c7c: 0xbc59, 0x1c7d: 0x0040, 0x1c7e: 0xbc71, 0x1c7f: 0x0040, + 0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115, + 0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135, + 0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115, + 0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175, + 0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115, + 0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08, + 0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08, + 0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08, + 0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08, + 0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08, + 0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08, // Block 0x72, offset 0x1c80 - 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0xb3f9, 0x1c85: 0xb411, - 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, + 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411, + 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1, 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, - 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x0040, - 0x1c9e: 0x0040, 0x1c9f: 0x0040, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0xb249, - 0x1ca4: 0x0040, 0x1ca5: 0xb411, 0x1ca6: 0xb291, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, - 0x1caa: 0x0040, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, - 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0xb279, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, - 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0xb261, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, + 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949, + 0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, + 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429, + 0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351, 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x0040, 0x1cc1: 0xbca2, 0x1cc2: 0xbcba, 0x1cc3: 0xbcd2, 0x1cc4: 0xbcea, 0x1cc5: 0xbd02, - 0x1cc6: 0xbd1a, 0x1cc7: 0xbd32, 0x1cc8: 0xbd4a, 0x1cc9: 0xbd62, 0x1cca: 0xbd7a, 0x1ccb: 0x0018, - 0x1ccc: 0x0018, 0x1ccd: 0x0040, 0x1cce: 0x0040, 0x1ccf: 0x0040, 0x1cd0: 0xbd92, 0x1cd1: 0xbdb2, - 0x1cd2: 0xbdd2, 0x1cd3: 0xbdf2, 0x1cd4: 0xbe12, 0x1cd5: 0xbe32, 0x1cd6: 0xbe52, 0x1cd7: 0xbe72, - 0x1cd8: 0xbe92, 0x1cd9: 0xbeb2, 0x1cda: 0xbed2, 0x1cdb: 0xbef2, 0x1cdc: 0xbf12, 0x1cdd: 0xbf32, - 0x1cde: 0xbf52, 0x1cdf: 0xbf72, 0x1ce0: 0xbf92, 0x1ce1: 0xbfb2, 0x1ce2: 0xbfd2, 0x1ce3: 0xbff2, - 0x1ce4: 0xc012, 0x1ce5: 0xc032, 0x1ce6: 0xc052, 0x1ce7: 0xc072, 0x1ce8: 0xc092, 0x1ce9: 0xc0b2, - 0x1cea: 0xc0d1, 0x1ceb: 0x1159, 0x1cec: 0x0269, 0x1ced: 0x6671, 0x1cee: 0xc111, 0x1cef: 0x0040, - 0x1cf0: 0x0039, 0x1cf1: 0x0ee9, 0x1cf2: 0x1159, 0x1cf3: 0x0ef9, 0x1cf4: 0x0f09, 0x1cf5: 0x1199, - 0x1cf6: 0x0f31, 0x1cf7: 0x0249, 0x1cf8: 0x0f41, 0x1cf9: 0x0259, 0x1cfa: 0x0f51, 0x1cfb: 0x0359, - 0x1cfc: 0x0f61, 0x1cfd: 0x0f71, 0x1cfe: 0x00d9, 0x1cff: 0x0f99, + 0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040, + 0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, + 0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9, + 0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231, + 0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949, + 0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040, + 0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, + 0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, + 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, + 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, + 0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040, // Block 0x74, offset 0x1d00 - 0x1d00: 0x2039, 0x1d01: 0x0269, 0x1d02: 0x01d9, 0x1d03: 0x0fa9, 0x1d04: 0x0fb9, 0x1d05: 0x1089, - 0x1d06: 0x0279, 0x1d07: 0x0369, 0x1d08: 0x0289, 0x1d09: 0x13d1, 0x1d0a: 0xc129, 0x1d0b: 0x65b1, - 0x1d0c: 0xc141, 0x1d0d: 0x1441, 0x1d0e: 0xc159, 0x1d0f: 0xc179, 0x1d10: 0x0018, 0x1d11: 0x0018, - 0x1d12: 0x0018, 0x1d13: 0x0018, 0x1d14: 0x0018, 0x1d15: 0x0018, 0x1d16: 0x0018, 0x1d17: 0x0018, - 0x1d18: 0x0018, 0x1d19: 0x0018, 0x1d1a: 0x0018, 0x1d1b: 0x0018, 0x1d1c: 0x0018, 0x1d1d: 0x0018, - 0x1d1e: 0x0018, 0x1d1f: 0x0018, 0x1d20: 0x0018, 0x1d21: 0x0018, 0x1d22: 0x0018, 0x1d23: 0x0018, - 0x1d24: 0x0018, 0x1d25: 0x0018, 0x1d26: 0x0018, 0x1d27: 0x0018, 0x1d28: 0x0018, 0x1d29: 0x0018, - 0x1d2a: 0xc191, 0x1d2b: 0xc1a9, 0x1d2c: 0x0040, 0x1d2d: 0x0040, 0x1d2e: 0x0040, 0x1d2f: 0x0040, - 0x1d30: 0x0018, 0x1d31: 0x0018, 0x1d32: 0x0018, 0x1d33: 0x0018, 0x1d34: 0x0018, 0x1d35: 0x0018, - 0x1d36: 0x0018, 0x1d37: 0x0018, 0x1d38: 0x0018, 0x1d39: 0x0018, 0x1d3a: 0x0018, 0x1d3b: 0x0018, - 0x1d3c: 0x0018, 0x1d3d: 0x0018, 0x1d3e: 0x0018, 0x1d3f: 0x0018, + 0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411, + 0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1, + 0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9, + 0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231, + 0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040, + 0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249, + 0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429, + 0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339, + 0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1, + 0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351, + 0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040, // Block 0x75, offset 0x1d40 - 0x1d40: 0xc1d9, 0x1d41: 0xc211, 0x1d42: 0xc249, 0x1d43: 0x0040, 0x1d44: 0x0040, 0x1d45: 0x0040, - 0x1d46: 0x0040, 0x1d47: 0x0040, 0x1d48: 0x0040, 0x1d49: 0x0040, 0x1d4a: 0x0040, 0x1d4b: 0x0040, - 0x1d4c: 0x0040, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xc269, 0x1d51: 0xc289, - 0x1d52: 0xc2a9, 0x1d53: 0xc2c9, 0x1d54: 0xc2e9, 0x1d55: 0xc309, 0x1d56: 0xc329, 0x1d57: 0xc349, - 0x1d58: 0xc369, 0x1d59: 0xc389, 0x1d5a: 0xc3a9, 0x1d5b: 0xc3c9, 0x1d5c: 0xc3e9, 0x1d5d: 0xc409, - 0x1d5e: 0xc429, 0x1d5f: 0xc449, 0x1d60: 0xc469, 0x1d61: 0xc489, 0x1d62: 0xc4a9, 0x1d63: 0xc4c9, - 0x1d64: 0xc4e9, 0x1d65: 0xc509, 0x1d66: 0xc529, 0x1d67: 0xc549, 0x1d68: 0xc569, 0x1d69: 0xc589, - 0x1d6a: 0xc5a9, 0x1d6b: 0xc5c9, 0x1d6c: 0xc5e9, 0x1d6d: 0xc609, 0x1d6e: 0xc629, 0x1d6f: 0xc649, - 0x1d70: 0xc669, 0x1d71: 0xc689, 0x1d72: 0xc6a9, 0x1d73: 0xc6c9, 0x1d74: 0xc6e9, 0x1d75: 0xc709, - 0x1d76: 0xc729, 0x1d77: 0xc749, 0x1d78: 0xc769, 0x1d79: 0xc789, 0x1d7a: 0xc7a9, 0x1d7b: 0xc7c9, - 0x1d7c: 0x0040, 0x1d7d: 0x0040, 0x1d7e: 0x0040, 0x1d7f: 0x0040, + 0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02, + 0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018, + 0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2, + 0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72, + 0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32, + 0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2, + 0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2, + 0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0040, + 0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199, + 0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359, + 0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99, // Block 0x76, offset 0x1d80 - 0x1d80: 0xcaf9, 0x1d81: 0xcb19, 0x1d82: 0xcb39, 0x1d83: 0x8b1d, 0x1d84: 0xcb59, 0x1d85: 0xcb79, - 0x1d86: 0xcb99, 0x1d87: 0xcbb9, 0x1d88: 0xcbd9, 0x1d89: 0xcbf9, 0x1d8a: 0xcc19, 0x1d8b: 0xcc39, - 0x1d8c: 0xcc59, 0x1d8d: 0x8b3d, 0x1d8e: 0xcc79, 0x1d8f: 0xcc99, 0x1d90: 0xccb9, 0x1d91: 0xccd9, - 0x1d92: 0x8b5d, 0x1d93: 0xccf9, 0x1d94: 0xcd19, 0x1d95: 0xc429, 0x1d96: 0x8b7d, 0x1d97: 0xcd39, - 0x1d98: 0xcd59, 0x1d99: 0xcd79, 0x1d9a: 0xcd99, 0x1d9b: 0xcdb9, 0x1d9c: 0x8b9d, 0x1d9d: 0xcdd9, - 0x1d9e: 0xcdf9, 0x1d9f: 0xce19, 0x1da0: 0xce39, 0x1da1: 0xce59, 0x1da2: 0xc789, 0x1da3: 0xce79, - 0x1da4: 0xce99, 0x1da5: 0xceb9, 0x1da6: 0xced9, 0x1da7: 0xcef9, 0x1da8: 0xcf19, 0x1da9: 0xcf39, - 0x1daa: 0xcf59, 0x1dab: 0xcf79, 0x1dac: 0xcf99, 0x1dad: 0xcfb9, 0x1dae: 0xcfd9, 0x1daf: 0xcff9, - 0x1db0: 0xd019, 0x1db1: 0xd039, 0x1db2: 0xd039, 0x1db3: 0xd039, 0x1db4: 0x8bbd, 0x1db5: 0xd059, - 0x1db6: 0xd079, 0x1db7: 0xd099, 0x1db8: 0x8bdd, 0x1db9: 0xd0b9, 0x1dba: 0xd0d9, 0x1dbb: 0xd0f9, - 0x1dbc: 0xd119, 0x1dbd: 0xd139, 0x1dbe: 0xd159, 0x1dbf: 0xd179, + 0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089, + 0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1, + 0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018, + 0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018, + 0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018, + 0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018, + 0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018, + 0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040, + 0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018, + 0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018, + 0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018, // Block 0x77, offset 0x1dc0 - 0x1dc0: 0xd199, 0x1dc1: 0xd1b9, 0x1dc2: 0xd1d9, 0x1dc3: 0xd1f9, 0x1dc4: 0xd219, 0x1dc5: 0xd239, - 0x1dc6: 0xd239, 0x1dc7: 0xd259, 0x1dc8: 0xd279, 0x1dc9: 0xd299, 0x1dca: 0xd2b9, 0x1dcb: 0xd2d9, - 0x1dcc: 0xd2f9, 0x1dcd: 0xd319, 0x1dce: 0xd339, 0x1dcf: 0xd359, 0x1dd0: 0xd379, 0x1dd1: 0xd399, - 0x1dd2: 0xd3b9, 0x1dd3: 0xd3d9, 0x1dd4: 0xd3f9, 0x1dd5: 0xd419, 0x1dd6: 0xd439, 0x1dd7: 0xd459, - 0x1dd8: 0xd479, 0x1dd9: 0x8bfd, 0x1dda: 0xd499, 0x1ddb: 0xd4b9, 0x1ddc: 0xd4d9, 0x1ddd: 0xc309, - 0x1dde: 0xd4f9, 0x1ddf: 0xd519, 0x1de0: 0x8c1d, 0x1de1: 0x8c3d, 0x1de2: 0xd539, 0x1de3: 0xd559, - 0x1de4: 0xd579, 0x1de5: 0xd599, 0x1de6: 0xd5b9, 0x1de7: 0xd5d9, 0x1de8: 0x0040, 0x1de9: 0xd5f9, - 0x1dea: 0xd619, 0x1deb: 0xd619, 0x1dec: 0x8c5d, 0x1ded: 0xd639, 0x1dee: 0xd659, 0x1def: 0xd679, - 0x1df0: 0xd699, 0x1df1: 0x8c7d, 0x1df2: 0xd6b9, 0x1df3: 0xd6d9, 0x1df4: 0x0040, 0x1df5: 0xd6f9, - 0x1df6: 0xd719, 0x1df7: 0xd739, 0x1df8: 0xd759, 0x1df9: 0xd779, 0x1dfa: 0xd799, 0x1dfb: 0x8c9d, - 0x1dfc: 0xd7b9, 0x1dfd: 0x8cbd, 0x1dfe: 0xd7d9, 0x1dff: 0xd7f9, + 0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040, + 0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040, + 0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289, + 0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349, + 0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409, + 0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9, + 0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589, + 0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649, + 0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709, + 0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9, + 0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040, // Block 0x78, offset 0x1e00 - 0x1e00: 0xd819, 0x1e01: 0xd839, 0x1e02: 0xd859, 0x1e03: 0xd879, 0x1e04: 0xd899, 0x1e05: 0xd8b9, - 0x1e06: 0xd8d9, 0x1e07: 0xd8f9, 0x1e08: 0xd919, 0x1e09: 0x8cdd, 0x1e0a: 0xd939, 0x1e0b: 0xd959, - 0x1e0c: 0xd979, 0x1e0d: 0xd999, 0x1e0e: 0xd9b9, 0x1e0f: 0x8cfd, 0x1e10: 0xd9d9, 0x1e11: 0x8d1d, - 0x1e12: 0x8d3d, 0x1e13: 0xd9f9, 0x1e14: 0xda19, 0x1e15: 0xda19, 0x1e16: 0xda39, 0x1e17: 0x8d5d, - 0x1e18: 0x8d7d, 0x1e19: 0xda59, 0x1e1a: 0xda79, 0x1e1b: 0xda99, 0x1e1c: 0xdab9, 0x1e1d: 0xdad9, - 0x1e1e: 0xdaf9, 0x1e1f: 0xdb19, 0x1e20: 0xdb39, 0x1e21: 0xdb59, 0x1e22: 0xdb79, 0x1e23: 0xdb99, - 0x1e24: 0x8d9d, 0x1e25: 0xdbb9, 0x1e26: 0xdbd9, 0x1e27: 0xdbf9, 0x1e28: 0xdc19, 0x1e29: 0xdbf9, - 0x1e2a: 0xdc39, 0x1e2b: 0xdc59, 0x1e2c: 0xdc79, 0x1e2d: 0xdc99, 0x1e2e: 0xdcb9, 0x1e2f: 0xdcd9, - 0x1e30: 0xdcf9, 0x1e31: 0xdd19, 0x1e32: 0xdd39, 0x1e33: 0xdd59, 0x1e34: 0xdd79, 0x1e35: 0xdd99, - 0x1e36: 0xddb9, 0x1e37: 0xddd9, 0x1e38: 0x8dbd, 0x1e39: 0xddf9, 0x1e3a: 0xde19, 0x1e3b: 0xde39, - 0x1e3c: 0xde59, 0x1e3d: 0xde79, 0x1e3e: 0x8ddd, 0x1e3f: 0xde99, + 0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79, + 0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39, + 0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9, + 0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39, + 0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9, + 0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79, + 0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39, + 0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9, + 0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059, + 0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9, + 0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179, // Block 0x79, offset 0x1e40 - 0x1e40: 0xe599, 0x1e41: 0xe5b9, 0x1e42: 0xe5d9, 0x1e43: 0xe5f9, 0x1e44: 0xe619, 0x1e45: 0xe639, - 0x1e46: 0x8efd, 0x1e47: 0xe659, 0x1e48: 0xe679, 0x1e49: 0xe699, 0x1e4a: 0xe6b9, 0x1e4b: 0xe6d9, - 0x1e4c: 0xe6f9, 0x1e4d: 0x8f1d, 0x1e4e: 0xe719, 0x1e4f: 0xe739, 0x1e50: 0x8f3d, 0x1e51: 0x8f5d, - 0x1e52: 0xe759, 0x1e53: 0xe779, 0x1e54: 0xe799, 0x1e55: 0xe7b9, 0x1e56: 0xe7d9, 0x1e57: 0xe7f9, - 0x1e58: 0xe819, 0x1e59: 0xe839, 0x1e5a: 0xe859, 0x1e5b: 0x8f7d, 0x1e5c: 0xe879, 0x1e5d: 0x8f9d, - 0x1e5e: 0xe899, 0x1e5f: 0x0040, 0x1e60: 0xe8b9, 0x1e61: 0xe8d9, 0x1e62: 0xe8f9, 0x1e63: 0x8fbd, - 0x1e64: 0xe919, 0x1e65: 0xe939, 0x1e66: 0x8fdd, 0x1e67: 0x8ffd, 0x1e68: 0xe959, 0x1e69: 0xe979, - 0x1e6a: 0xe999, 0x1e6b: 0xe9b9, 0x1e6c: 0xe9d9, 0x1e6d: 0xe9d9, 0x1e6e: 0xe9f9, 0x1e6f: 0xea19, - 0x1e70: 0xea39, 0x1e71: 0xea59, 0x1e72: 0xea79, 0x1e73: 0xea99, 0x1e74: 0xeab9, 0x1e75: 0x901d, - 0x1e76: 0xead9, 0x1e77: 0x903d, 0x1e78: 0xeaf9, 0x1e79: 0x905d, 0x1e7a: 0xeb19, 0x1e7b: 0x907d, - 0x1e7c: 0x909d, 0x1e7d: 0x90bd, 0x1e7e: 0xeb39, 0x1e7f: 0xeb59, + 0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239, + 0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9, + 0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399, + 0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459, + 0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309, + 0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559, + 0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9, + 0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679, + 0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9, + 0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d, + 0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9, // Block 0x7a, offset 0x1e80 - 0x1e80: 0xeb79, 0x1e81: 0x90dd, 0x1e82: 0x90fd, 0x1e83: 0x911d, 0x1e84: 0x913d, 0x1e85: 0xeb99, - 0x1e86: 0xebb9, 0x1e87: 0xebb9, 0x1e88: 0xebd9, 0x1e89: 0xebf9, 0x1e8a: 0xec19, 0x1e8b: 0xec39, - 0x1e8c: 0xec59, 0x1e8d: 0x915d, 0x1e8e: 0xec79, 0x1e8f: 0xec99, 0x1e90: 0xecb9, 0x1e91: 0xecd9, - 0x1e92: 0x917d, 0x1e93: 0xecf9, 0x1e94: 0x919d, 0x1e95: 0x91bd, 0x1e96: 0xed19, 0x1e97: 0xed39, - 0x1e98: 0xed59, 0x1e99: 0xed79, 0x1e9a: 0xed99, 0x1e9b: 0xedb9, 0x1e9c: 0x91dd, 0x1e9d: 0x91fd, - 0x1e9e: 0x921d, 0x1e9f: 0x0040, 0x1ea0: 0xedd9, 0x1ea1: 0x923d, 0x1ea2: 0xedf9, 0x1ea3: 0xee19, - 0x1ea4: 0xee39, 0x1ea5: 0x925d, 0x1ea6: 0xee59, 0x1ea7: 0xee79, 0x1ea8: 0xee99, 0x1ea9: 0xeeb9, - 0x1eaa: 0xeed9, 0x1eab: 0x927d, 0x1eac: 0xeef9, 0x1ead: 0xef19, 0x1eae: 0xef39, 0x1eaf: 0xef59, - 0x1eb0: 0xef79, 0x1eb1: 0xef99, 0x1eb2: 0x929d, 0x1eb3: 0x92bd, 0x1eb4: 0xefb9, 0x1eb5: 0x92dd, - 0x1eb6: 0xefd9, 0x1eb7: 0x92fd, 0x1eb8: 0xeff9, 0x1eb9: 0xf019, 0x1eba: 0xf039, 0x1ebb: 0x931d, - 0x1ebc: 0x933d, 0x1ebd: 0xf059, 0x1ebe: 0x935d, 0x1ebf: 0xf079, + 0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9, + 0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959, + 0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d, + 0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d, + 0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9, + 0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99, + 0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9, + 0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9, + 0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99, + 0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39, + 0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99, // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0xf6b9, 0x1ec1: 0xf6d9, 0x1ec2: 0xf6f9, 0x1ec3: 0xf719, 0x1ec4: 0xf739, 0x1ec5: 0x951d, - 0x1ec6: 0xf759, 0x1ec7: 0xf779, 0x1ec8: 0xf799, 0x1ec9: 0xf7b9, 0x1eca: 0xf7d9, 0x1ecb: 0x953d, - 0x1ecc: 0x955d, 0x1ecd: 0xf7f9, 0x1ece: 0xf819, 0x1ecf: 0xf839, 0x1ed0: 0xf859, 0x1ed1: 0xf879, - 0x1ed2: 0xf899, 0x1ed3: 0x957d, 0x1ed4: 0xf8b9, 0x1ed5: 0xf8d9, 0x1ed6: 0xf8f9, 0x1ed7: 0xf919, - 0x1ed8: 0x959d, 0x1ed9: 0x95bd, 0x1eda: 0xf939, 0x1edb: 0xf959, 0x1edc: 0xf979, 0x1edd: 0x95dd, - 0x1ede: 0xf999, 0x1edf: 0xf9b9, 0x1ee0: 0x6815, 0x1ee1: 0x95fd, 0x1ee2: 0xf9d9, 0x1ee3: 0xf9f9, - 0x1ee4: 0xfa19, 0x1ee5: 0x961d, 0x1ee6: 0xfa39, 0x1ee7: 0xfa59, 0x1ee8: 0xfa79, 0x1ee9: 0xfa99, - 0x1eea: 0xfab9, 0x1eeb: 0xfad9, 0x1eec: 0xfaf9, 0x1eed: 0x963d, 0x1eee: 0xfb19, 0x1eef: 0xfb39, - 0x1ef0: 0xfb59, 0x1ef1: 0x965d, 0x1ef2: 0xfb79, 0x1ef3: 0xfb99, 0x1ef4: 0xfbb9, 0x1ef5: 0xfbd9, - 0x1ef6: 0x7b35, 0x1ef7: 0x967d, 0x1ef8: 0xfbf9, 0x1ef9: 0xfc19, 0x1efa: 0xfc39, 0x1efb: 0x969d, - 0x1efc: 0xfc59, 0x1efd: 0x96bd, 0x1efe: 0xfc79, 0x1eff: 0xfc79, + 0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639, + 0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9, + 0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d, + 0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9, + 0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d, + 0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd, + 0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979, + 0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19, + 0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d, + 0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d, + 0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59, // Block 0x7c, offset 0x1f00 - 0x1f00: 0xfc99, 0x1f01: 0x96dd, 0x1f02: 0xfcb9, 0x1f03: 0xfcd9, 0x1f04: 0xfcf9, 0x1f05: 0xfd19, - 0x1f06: 0xfd39, 0x1f07: 0xfd59, 0x1f08: 0xfd79, 0x1f09: 0x96fd, 0x1f0a: 0xfd99, 0x1f0b: 0xfdb9, - 0x1f0c: 0xfdd9, 0x1f0d: 0xfdf9, 0x1f0e: 0xfe19, 0x1f0f: 0xfe39, 0x1f10: 0x971d, 0x1f11: 0xfe59, - 0x1f12: 0x973d, 0x1f13: 0x975d, 0x1f14: 0x977d, 0x1f15: 0xfe79, 0x1f16: 0xfe99, 0x1f17: 0xfeb9, - 0x1f18: 0xfed9, 0x1f19: 0xfef9, 0x1f1a: 0xff19, 0x1f1b: 0xff39, 0x1f1c: 0xff59, 0x1f1d: 0x979d, - 0x1f1e: 0x0040, 0x1f1f: 0x0040, 0x1f20: 0x0040, 0x1f21: 0x0040, 0x1f22: 0x0040, 0x1f23: 0x0040, - 0x1f24: 0x0040, 0x1f25: 0x0040, 0x1f26: 0x0040, 0x1f27: 0x0040, 0x1f28: 0x0040, 0x1f29: 0x0040, - 0x1f2a: 0x0040, 0x1f2b: 0x0040, 0x1f2c: 0x0040, 0x1f2d: 0x0040, 0x1f2e: 0x0040, 0x1f2f: 0x0040, - 0x1f30: 0x0040, 0x1f31: 0x0040, 0x1f32: 0x0040, 0x1f33: 0x0040, 0x1f34: 0x0040, 0x1f35: 0x0040, - 0x1f36: 0x0040, 0x1f37: 0x0040, 0x1f38: 0x0040, 0x1f39: 0x0040, 0x1f3a: 0x0040, 0x1f3b: 0x0040, - 0x1f3c: 0x0040, 0x1f3d: 0x0040, 0x1f3e: 0x0040, 0x1f3f: 0x0040, + 0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99, + 0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39, + 0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9, + 0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39, + 0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd, + 0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19, + 0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9, + 0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59, + 0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd, + 0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d, + 0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d, + 0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d, + 0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879, + 0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919, + 0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd, + 0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9, + 0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99, + 0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39, + 0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9, + 0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d, + 0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79, + // Block 0x7e, offset 0x1f80 + 0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19, + 0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9, + 0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59, + 0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9, + 0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d, + 0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040, + 0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040, + 0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040, + 0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040, + 0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040, + 0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040, } -// idnaIndex: 35 blocks, 2240 entries, 4480 bytes +// idnaIndex: 36 blocks, 2304 entries, 4608 bytes // Block 0 is the zero block. -var idnaIndex = [2240]uint16{ +var idnaIndex = [2304]uint16{ // Block 0x0, offset 0x0 // Block 0x1, offset 0x40 // Block 0x2, offset 0x80 // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x7b, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, - 0xc8: 0x06, 0xc9: 0x7c, 0xca: 0x7d, 0xcb: 0x07, 0xcc: 0x7e, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, - 0xd0: 0x7f, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x80, 0xd6: 0x81, 0xd7: 0x82, - 0xd8: 0x0f, 0xd9: 0x83, 0xda: 0x84, 0xdb: 0x10, 0xdc: 0x11, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, + 0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84, + 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88, 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, - 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, + 0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21, // Block 0x4, offset 0x100 - 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x12, 0x126: 0x13, 0x127: 0x14, - 0x128: 0x15, 0x129: 0x16, 0x12a: 0x17, 0x12b: 0x18, 0x12c: 0x19, 0x12d: 0x1a, 0x12e: 0x1b, 0x12f: 0x8d, - 0x130: 0x8e, 0x131: 0x1c, 0x132: 0x1d, 0x133: 0x1e, 0x134: 0x8f, 0x135: 0x1f, 0x136: 0x90, 0x137: 0x91, - 0x138: 0x92, 0x139: 0x93, 0x13a: 0x20, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x21, 0x13e: 0x22, 0x13f: 0x96, + 0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16, + 0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96, // Block 0x5, offset 0x140 - 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9b, 0x147: 0x9b, - 0x148: 0x9d, 0x149: 0x9e, 0x14a: 0x9f, 0x14b: 0xa0, 0x14c: 0xa1, 0x14d: 0xa2, 0x14e: 0xa3, 0x14f: 0xa4, - 0x150: 0xa5, 0x151: 0x9d, 0x152: 0x9d, 0x153: 0x9d, 0x154: 0x9d, 0x155: 0x9d, 0x156: 0x9d, 0x157: 0x9d, - 0x158: 0x9d, 0x159: 0xa6, 0x15a: 0xa7, 0x15b: 0xa8, 0x15c: 0xa9, 0x15d: 0xaa, 0x15e: 0xab, 0x15f: 0xac, - 0x160: 0xad, 0x161: 0xae, 0x162: 0xaf, 0x163: 0xb0, 0x164: 0xb1, 0x165: 0xb2, 0x166: 0xb3, 0x167: 0xb4, - 0x168: 0xb5, 0x169: 0xb6, 0x16a: 0xb7, 0x16b: 0xb8, 0x16c: 0xb9, 0x16d: 0xba, 0x16e: 0xbb, 0x16f: 0xbc, - 0x170: 0xbd, 0x171: 0xbe, 0x172: 0xbf, 0x173: 0xc0, 0x174: 0x23, 0x175: 0x24, 0x176: 0x25, 0x177: 0xc1, - 0x178: 0x26, 0x179: 0x26, 0x17a: 0x27, 0x17b: 0x26, 0x17c: 0xc2, 0x17d: 0x28, 0x17e: 0x29, 0x17f: 0x2a, + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, + 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, + 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, + 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, + 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, + 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, + 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3, + 0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c, // Block 0x6, offset 0x180 - 0x180: 0x2b, 0x181: 0x2c, 0x182: 0x2d, 0x183: 0xc3, 0x184: 0x2e, 0x185: 0x2f, 0x186: 0xc4, 0x187: 0x9b, - 0x188: 0xc5, 0x189: 0xc6, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc7, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xc8, - 0x190: 0xc9, 0x191: 0x30, 0x192: 0x31, 0x193: 0x32, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b, + 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b, + 0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, - 0x1a8: 0xca, 0x1a9: 0xcb, 0x1aa: 0x9b, 0x1ab: 0xcc, 0x1ac: 0x9b, 0x1ad: 0xcd, 0x1ae: 0xce, 0x1af: 0xcf, - 0x1b0: 0xd0, 0x1b1: 0x33, 0x1b2: 0x26, 0x1b3: 0x34, 0x1b4: 0xd1, 0x1b5: 0xd2, 0x1b6: 0xd3, 0x1b7: 0xd4, - 0x1b8: 0xd5, 0x1b9: 0xd6, 0x1ba: 0xd7, 0x1bb: 0xd8, 0x1bc: 0xd9, 0x1bd: 0xda, 0x1be: 0xdb, 0x1bf: 0x35, + 0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0, + 0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5, + 0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37, // Block 0x7, offset 0x1c0 - 0x1c0: 0x36, 0x1c1: 0xdc, 0x1c2: 0xdd, 0x1c3: 0xde, 0x1c4: 0xdf, 0x1c5: 0x37, 0x1c6: 0x38, 0x1c7: 0xe0, - 0x1c8: 0xe1, 0x1c9: 0x39, 0x1ca: 0x3a, 0x1cb: 0x3b, 0x1cc: 0x3c, 0x1cd: 0x3d, 0x1ce: 0x3e, 0x1cf: 0x3f, - 0x1d0: 0x9d, 0x1d1: 0x9d, 0x1d2: 0x9d, 0x1d3: 0x9d, 0x1d4: 0x9d, 0x1d5: 0x9d, 0x1d6: 0x9d, 0x1d7: 0x9d, - 0x1d8: 0x9d, 0x1d9: 0x9d, 0x1da: 0x9d, 0x1db: 0x9d, 0x1dc: 0x9d, 0x1dd: 0x9d, 0x1de: 0x9d, 0x1df: 0x9d, - 0x1e0: 0x9d, 0x1e1: 0x9d, 0x1e2: 0x9d, 0x1e3: 0x9d, 0x1e4: 0x9d, 0x1e5: 0x9d, 0x1e6: 0x9d, 0x1e7: 0x9d, - 0x1e8: 0x9d, 0x1e9: 0x9d, 0x1ea: 0x9d, 0x1eb: 0x9d, 0x1ec: 0x9d, 0x1ed: 0x9d, 0x1ee: 0x9d, 0x1ef: 0x9d, - 0x1f0: 0x9d, 0x1f1: 0x9d, 0x1f2: 0x9d, 0x1f3: 0x9d, 0x1f4: 0x9d, 0x1f5: 0x9d, 0x1f6: 0x9d, 0x1f7: 0x9d, - 0x1f8: 0x9d, 0x1f9: 0x9d, 0x1fa: 0x9d, 0x1fb: 0x9d, 0x1fc: 0x9d, 0x1fd: 0x9d, 0x1fe: 0x9d, 0x1ff: 0x9d, + 0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1, + 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41, + 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, + 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, + 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, + 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, + 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, + 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, // Block 0x8, offset 0x200 - 0x200: 0x9d, 0x201: 0x9d, 0x202: 0x9d, 0x203: 0x9d, 0x204: 0x9d, 0x205: 0x9d, 0x206: 0x9d, 0x207: 0x9d, - 0x208: 0x9d, 0x209: 0x9d, 0x20a: 0x9d, 0x20b: 0x9d, 0x20c: 0x9d, 0x20d: 0x9d, 0x20e: 0x9d, 0x20f: 0x9d, - 0x210: 0x9d, 0x211: 0x9d, 0x212: 0x9d, 0x213: 0x9d, 0x214: 0x9d, 0x215: 0x9d, 0x216: 0x9d, 0x217: 0x9d, - 0x218: 0x9d, 0x219: 0x9d, 0x21a: 0x9d, 0x21b: 0x9d, 0x21c: 0x9d, 0x21d: 0x9d, 0x21e: 0x9d, 0x21f: 0x9d, - 0x220: 0x9d, 0x221: 0x9d, 0x222: 0x9d, 0x223: 0x9d, 0x224: 0x9d, 0x225: 0x9d, 0x226: 0x9d, 0x227: 0x9d, - 0x228: 0x9d, 0x229: 0x9d, 0x22a: 0x9d, 0x22b: 0x9d, 0x22c: 0x9d, 0x22d: 0x9d, 0x22e: 0x9d, 0x22f: 0x9d, - 0x230: 0x9d, 0x231: 0x9d, 0x232: 0x9d, 0x233: 0x9d, 0x234: 0x9d, 0x235: 0x9d, 0x236: 0xb0, 0x237: 0x9b, - 0x238: 0x9d, 0x239: 0x9d, 0x23a: 0x9d, 0x23b: 0x9d, 0x23c: 0x9d, 0x23d: 0x9d, 0x23e: 0x9d, 0x23f: 0x9d, + 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, + 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, + 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, + 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, + 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, + 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, + 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, + 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, // Block 0x9, offset 0x240 - 0x240: 0x9d, 0x241: 0x9d, 0x242: 0x9d, 0x243: 0x9d, 0x244: 0x9d, 0x245: 0x9d, 0x246: 0x9d, 0x247: 0x9d, - 0x248: 0x9d, 0x249: 0x9d, 0x24a: 0x9d, 0x24b: 0x9d, 0x24c: 0x9d, 0x24d: 0x9d, 0x24e: 0x9d, 0x24f: 0x9d, - 0x250: 0x9d, 0x251: 0x9d, 0x252: 0x9d, 0x253: 0x9d, 0x254: 0x9d, 0x255: 0x9d, 0x256: 0x9d, 0x257: 0x9d, - 0x258: 0x9d, 0x259: 0x9d, 0x25a: 0x9d, 0x25b: 0x9d, 0x25c: 0x9d, 0x25d: 0x9d, 0x25e: 0x9d, 0x25f: 0x9d, - 0x260: 0x9d, 0x261: 0x9d, 0x262: 0x9d, 0x263: 0x9d, 0x264: 0x9d, 0x265: 0x9d, 0x266: 0x9d, 0x267: 0x9d, - 0x268: 0x9d, 0x269: 0x9d, 0x26a: 0x9d, 0x26b: 0x9d, 0x26c: 0x9d, 0x26d: 0x9d, 0x26e: 0x9d, 0x26f: 0x9d, - 0x270: 0x9d, 0x271: 0x9d, 0x272: 0x9d, 0x273: 0x9d, 0x274: 0x9d, 0x275: 0x9d, 0x276: 0x9d, 0x277: 0x9d, - 0x278: 0x9d, 0x279: 0x9d, 0x27a: 0x9d, 0x27b: 0x9d, 0x27c: 0x9d, 0x27d: 0x9d, 0x27e: 0x9d, 0x27f: 0x9d, + 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, + 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, + 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, + 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, + 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, + 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, + 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, + 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, // Block 0xa, offset 0x280 - 0x280: 0x9d, 0x281: 0x9d, 0x282: 0x9d, 0x283: 0x9d, 0x284: 0x9d, 0x285: 0x9d, 0x286: 0x9d, 0x287: 0x9d, - 0x288: 0x9d, 0x289: 0x9d, 0x28a: 0x9d, 0x28b: 0x9d, 0x28c: 0x9d, 0x28d: 0x9d, 0x28e: 0x9d, 0x28f: 0x9d, - 0x290: 0x9d, 0x291: 0x9d, 0x292: 0x9d, 0x293: 0x9d, 0x294: 0x9d, 0x295: 0x9d, 0x296: 0x9d, 0x297: 0x9d, - 0x298: 0x9d, 0x299: 0x9d, 0x29a: 0x9d, 0x29b: 0x9d, 0x29c: 0x9d, 0x29d: 0x9d, 0x29e: 0x9d, 0x29f: 0x9d, - 0x2a0: 0x9d, 0x2a1: 0x9d, 0x2a2: 0x9d, 0x2a3: 0x9d, 0x2a4: 0x9d, 0x2a5: 0x9d, 0x2a6: 0x9d, 0x2a7: 0x9d, - 0x2a8: 0x9d, 0x2a9: 0x9d, 0x2aa: 0x9d, 0x2ab: 0x9d, 0x2ac: 0x9d, 0x2ad: 0x9d, 0x2ae: 0x9d, 0x2af: 0x9d, - 0x2b0: 0x9d, 0x2b1: 0x9d, 0x2b2: 0x9d, 0x2b3: 0x9d, 0x2b4: 0x9d, 0x2b5: 0x9d, 0x2b6: 0x9d, 0x2b7: 0x9d, - 0x2b8: 0x9d, 0x2b9: 0x9d, 0x2ba: 0x9d, 0x2bb: 0x9d, 0x2bc: 0x9d, 0x2bd: 0x9d, 0x2be: 0x9d, 0x2bf: 0xe2, + 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, + 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, + 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, + 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, + 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, + 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, + 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, + 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3, // Block 0xb, offset 0x2c0 - 0x2c0: 0x9d, 0x2c1: 0x9d, 0x2c2: 0x9d, 0x2c3: 0x9d, 0x2c4: 0x9d, 0x2c5: 0x9d, 0x2c6: 0x9d, 0x2c7: 0x9d, - 0x2c8: 0x9d, 0x2c9: 0x9d, 0x2ca: 0x9d, 0x2cb: 0x9d, 0x2cc: 0x9d, 0x2cd: 0x9d, 0x2ce: 0x9d, 0x2cf: 0x9d, - 0x2d0: 0x9d, 0x2d1: 0x9d, 0x2d2: 0xe3, 0x2d3: 0xe4, 0x2d4: 0x9d, 0x2d5: 0x9d, 0x2d6: 0x9d, 0x2d7: 0x9d, - 0x2d8: 0xe5, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe6, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xe7, - 0x2e0: 0xe8, 0x2e1: 0xe9, 0x2e2: 0xea, 0x2e3: 0xeb, 0x2e4: 0xec, 0x2e5: 0xed, 0x2e6: 0xee, 0x2e7: 0xef, - 0x2e8: 0xf0, 0x2e9: 0xf1, 0x2ea: 0xf2, 0x2eb: 0xf3, 0x2ec: 0xf4, 0x2ed: 0xf5, 0x2ee: 0xf6, 0x2ef: 0xf7, - 0x2f0: 0x9d, 0x2f1: 0x9d, 0x2f2: 0x9d, 0x2f3: 0x9d, 0x2f4: 0x9d, 0x2f5: 0x9d, 0x2f6: 0x9d, 0x2f7: 0x9d, - 0x2f8: 0x9d, 0x2f9: 0x9d, 0x2fa: 0x9d, 0x2fb: 0x9d, 0x2fc: 0x9d, 0x2fd: 0x9d, 0x2fe: 0x9d, 0x2ff: 0x9d, + 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, + 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, + 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, + 0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8, + 0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0, + 0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8, + 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, + 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, // Block 0xc, offset 0x300 - 0x300: 0x9d, 0x301: 0x9d, 0x302: 0x9d, 0x303: 0x9d, 0x304: 0x9d, 0x305: 0x9d, 0x306: 0x9d, 0x307: 0x9d, - 0x308: 0x9d, 0x309: 0x9d, 0x30a: 0x9d, 0x30b: 0x9d, 0x30c: 0x9d, 0x30d: 0x9d, 0x30e: 0x9d, 0x30f: 0x9d, - 0x310: 0x9d, 0x311: 0x9d, 0x312: 0x9d, 0x313: 0x9d, 0x314: 0x9d, 0x315: 0x9d, 0x316: 0x9d, 0x317: 0x9d, - 0x318: 0x9d, 0x319: 0x9d, 0x31a: 0x9d, 0x31b: 0x9d, 0x31c: 0x9d, 0x31d: 0x9d, 0x31e: 0xf8, 0x31f: 0xf9, + 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, + 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, + 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, + 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa, // Block 0xd, offset 0x340 - 0x340: 0xb8, 0x341: 0xb8, 0x342: 0xb8, 0x343: 0xb8, 0x344: 0xb8, 0x345: 0xb8, 0x346: 0xb8, 0x347: 0xb8, - 0x348: 0xb8, 0x349: 0xb8, 0x34a: 0xb8, 0x34b: 0xb8, 0x34c: 0xb8, 0x34d: 0xb8, 0x34e: 0xb8, 0x34f: 0xb8, - 0x350: 0xb8, 0x351: 0xb8, 0x352: 0xb8, 0x353: 0xb8, 0x354: 0xb8, 0x355: 0xb8, 0x356: 0xb8, 0x357: 0xb8, - 0x358: 0xb8, 0x359: 0xb8, 0x35a: 0xb8, 0x35b: 0xb8, 0x35c: 0xb8, 0x35d: 0xb8, 0x35e: 0xb8, 0x35f: 0xb8, - 0x360: 0xb8, 0x361: 0xb8, 0x362: 0xb8, 0x363: 0xb8, 0x364: 0xb8, 0x365: 0xb8, 0x366: 0xb8, 0x367: 0xb8, - 0x368: 0xb8, 0x369: 0xb8, 0x36a: 0xb8, 0x36b: 0xb8, 0x36c: 0xb8, 0x36d: 0xb8, 0x36e: 0xb8, 0x36f: 0xb8, - 0x370: 0xb8, 0x371: 0xb8, 0x372: 0xb8, 0x373: 0xb8, 0x374: 0xb8, 0x375: 0xb8, 0x376: 0xb8, 0x377: 0xb8, - 0x378: 0xb8, 0x379: 0xb8, 0x37a: 0xb8, 0x37b: 0xb8, 0x37c: 0xb8, 0x37d: 0xb8, 0x37e: 0xb8, 0x37f: 0xb8, + 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, + 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, + 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, + 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, + 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, + 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, + 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, + 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, // Block 0xe, offset 0x380 - 0x380: 0xb8, 0x381: 0xb8, 0x382: 0xb8, 0x383: 0xb8, 0x384: 0xb8, 0x385: 0xb8, 0x386: 0xb8, 0x387: 0xb8, - 0x388: 0xb8, 0x389: 0xb8, 0x38a: 0xb8, 0x38b: 0xb8, 0x38c: 0xb8, 0x38d: 0xb8, 0x38e: 0xb8, 0x38f: 0xb8, - 0x390: 0xb8, 0x391: 0xb8, 0x392: 0xb8, 0x393: 0xb8, 0x394: 0xb8, 0x395: 0xb8, 0x396: 0xb8, 0x397: 0xb8, - 0x398: 0xb8, 0x399: 0xb8, 0x39a: 0xb8, 0x39b: 0xb8, 0x39c: 0xb8, 0x39d: 0xb8, 0x39e: 0xb8, 0x39f: 0xb8, - 0x3a0: 0xb8, 0x3a1: 0xb8, 0x3a2: 0xb8, 0x3a3: 0xb8, 0x3a4: 0xfa, 0x3a5: 0xfb, 0x3a6: 0xfc, 0x3a7: 0xfd, - 0x3a8: 0x45, 0x3a9: 0xfe, 0x3aa: 0xff, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a, - 0x3b0: 0x100, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x101, 0x3b7: 0x50, - 0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58, + 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, + 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, + 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, + 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, + 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe, + 0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c, + 0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52, + 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a, // Block 0xf, offset 0x3c0 - 0x3c0: 0x102, 0x3c1: 0x103, 0x3c2: 0x9d, 0x3c3: 0x104, 0x3c4: 0x105, 0x3c5: 0x9b, 0x3c6: 0x106, 0x3c7: 0x107, - 0x3c8: 0xb8, 0x3c9: 0xb8, 0x3ca: 0x108, 0x3cb: 0x109, 0x3cc: 0x10a, 0x3cd: 0x10b, 0x3ce: 0x10c, 0x3cf: 0x10d, - 0x3d0: 0x10e, 0x3d1: 0x9d, 0x3d2: 0x10f, 0x3d3: 0x110, 0x3d4: 0x111, 0x3d5: 0x112, 0x3d6: 0xb8, 0x3d7: 0xb8, - 0x3d8: 0x9d, 0x3d9: 0x9d, 0x3da: 0x9d, 0x3db: 0x9d, 0x3dc: 0x113, 0x3dd: 0x114, 0x3de: 0xb8, 0x3df: 0xb8, - 0x3e0: 0x115, 0x3e1: 0x116, 0x3e2: 0x117, 0x3e3: 0x118, 0x3e4: 0x119, 0x3e5: 0xb8, 0x3e6: 0x11a, 0x3e7: 0x11b, - 0x3e8: 0x11c, 0x3e9: 0x11d, 0x3ea: 0x11e, 0x3eb: 0x59, 0x3ec: 0x11f, 0x3ed: 0x120, 0x3ee: 0x5a, 0x3ef: 0xb8, - 0x3f0: 0x9d, 0x3f1: 0x121, 0x3f2: 0x122, 0x3f3: 0x123, 0x3f4: 0xb8, 0x3f5: 0xb8, 0x3f6: 0xb8, 0x3f7: 0xb8, - 0x3f8: 0xb8, 0x3f9: 0x124, 0x3fa: 0xb8, 0x3fb: 0xb8, 0x3fc: 0xb8, 0x3fd: 0xb8, 0x3fe: 0xb8, 0x3ff: 0xb8, + 0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108, + 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e, + 0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba, + 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba, + 0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c, + 0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba, + 0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, + 0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba, // Block 0x10, offset 0x400 - 0x400: 0x125, 0x401: 0x126, 0x402: 0x127, 0x403: 0x128, 0x404: 0x129, 0x405: 0x12a, 0x406: 0x12b, 0x407: 0x12c, - 0x408: 0x12d, 0x409: 0xb8, 0x40a: 0x12e, 0x40b: 0x12f, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xb8, 0x40f: 0xb8, - 0x410: 0x130, 0x411: 0x131, 0x412: 0x132, 0x413: 0x133, 0x414: 0xb8, 0x415: 0xb8, 0x416: 0x134, 0x417: 0x135, - 0x418: 0x136, 0x419: 0x137, 0x41a: 0x138, 0x41b: 0x139, 0x41c: 0x13a, 0x41d: 0xb8, 0x41e: 0xb8, 0x41f: 0xb8, - 0x420: 0xb8, 0x421: 0xb8, 0x422: 0x13b, 0x423: 0x13c, 0x424: 0xb8, 0x425: 0xb8, 0x426: 0xb8, 0x427: 0xb8, - 0x428: 0xb8, 0x429: 0xb8, 0x42a: 0xb8, 0x42b: 0x13d, 0x42c: 0xb8, 0x42d: 0xb8, 0x42e: 0xb8, 0x42f: 0xb8, - 0x430: 0x13e, 0x431: 0x13f, 0x432: 0x140, 0x433: 0xb8, 0x434: 0xb8, 0x435: 0xb8, 0x436: 0xb8, 0x437: 0xb8, - 0x438: 0xb8, 0x439: 0xb8, 0x43a: 0xb8, 0x43b: 0xb8, 0x43c: 0xb8, 0x43d: 0xb8, 0x43e: 0xb8, 0x43f: 0xb8, + 0x400: 0x127, 0x401: 0x128, 0x402: 0x129, 0x403: 0x12a, 0x404: 0x12b, 0x405: 0x12c, 0x406: 0x12d, 0x407: 0x12e, + 0x408: 0x12f, 0x409: 0xba, 0x40a: 0x130, 0x40b: 0x131, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba, + 0x410: 0x132, 0x411: 0x133, 0x412: 0x134, 0x413: 0x135, 0x414: 0xba, 0x415: 0xba, 0x416: 0x136, 0x417: 0x137, + 0x418: 0x138, 0x419: 0x139, 0x41a: 0x13a, 0x41b: 0x13b, 0x41c: 0x13c, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, + 0x420: 0xba, 0x421: 0xba, 0x422: 0x13d, 0x423: 0x13e, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, + 0x428: 0x13f, 0x429: 0x140, 0x42a: 0x141, 0x42b: 0x142, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, + 0x430: 0x143, 0x431: 0x144, 0x432: 0x145, 0x433: 0xba, 0x434: 0x146, 0x435: 0x147, 0x436: 0xba, 0x437: 0xba, + 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, // Block 0x11, offset 0x440 - 0x440: 0x9d, 0x441: 0x9d, 0x442: 0x9d, 0x443: 0x9d, 0x444: 0x9d, 0x445: 0x9d, 0x446: 0x9d, 0x447: 0x9d, - 0x448: 0x9d, 0x449: 0x9d, 0x44a: 0x9d, 0x44b: 0x9d, 0x44c: 0x9d, 0x44d: 0x9d, 0x44e: 0x141, 0x44f: 0xb8, - 0x450: 0x9b, 0x451: 0x142, 0x452: 0x9d, 0x453: 0x9d, 0x454: 0x9d, 0x455: 0x143, 0x456: 0xb8, 0x457: 0xb8, - 0x458: 0xb8, 0x459: 0xb8, 0x45a: 0xb8, 0x45b: 0xb8, 0x45c: 0xb8, 0x45d: 0xb8, 0x45e: 0xb8, 0x45f: 0xb8, - 0x460: 0xb8, 0x461: 0xb8, 0x462: 0xb8, 0x463: 0xb8, 0x464: 0xb8, 0x465: 0xb8, 0x466: 0xb8, 0x467: 0xb8, - 0x468: 0xb8, 0x469: 0xb8, 0x46a: 0xb8, 0x46b: 0xb8, 0x46c: 0xb8, 0x46d: 0xb8, 0x46e: 0xb8, 0x46f: 0xb8, - 0x470: 0xb8, 0x471: 0xb8, 0x472: 0xb8, 0x473: 0xb8, 0x474: 0xb8, 0x475: 0xb8, 0x476: 0xb8, 0x477: 0xb8, - 0x478: 0xb8, 0x479: 0xb8, 0x47a: 0xb8, 0x47b: 0xb8, 0x47c: 0xb8, 0x47d: 0xb8, 0x47e: 0xb8, 0x47f: 0xb8, + 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, + 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x148, 0x44f: 0xba, + 0x450: 0x9b, 0x451: 0x149, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x14a, 0x456: 0xba, 0x457: 0xba, + 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, + 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, + 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, + 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, + 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, // Block 0x12, offset 0x480 - 0x480: 0x9d, 0x481: 0x9d, 0x482: 0x9d, 0x483: 0x9d, 0x484: 0x9d, 0x485: 0x9d, 0x486: 0x9d, 0x487: 0x9d, - 0x488: 0x9d, 0x489: 0x9d, 0x48a: 0x9d, 0x48b: 0x9d, 0x48c: 0x9d, 0x48d: 0x9d, 0x48e: 0x9d, 0x48f: 0x9d, - 0x490: 0x144, 0x491: 0xb8, 0x492: 0xb8, 0x493: 0xb8, 0x494: 0xb8, 0x495: 0xb8, 0x496: 0xb8, 0x497: 0xb8, - 0x498: 0xb8, 0x499: 0xb8, 0x49a: 0xb8, 0x49b: 0xb8, 0x49c: 0xb8, 0x49d: 0xb8, 0x49e: 0xb8, 0x49f: 0xb8, - 0x4a0: 0xb8, 0x4a1: 0xb8, 0x4a2: 0xb8, 0x4a3: 0xb8, 0x4a4: 0xb8, 0x4a5: 0xb8, 0x4a6: 0xb8, 0x4a7: 0xb8, - 0x4a8: 0xb8, 0x4a9: 0xb8, 0x4aa: 0xb8, 0x4ab: 0xb8, 0x4ac: 0xb8, 0x4ad: 0xb8, 0x4ae: 0xb8, 0x4af: 0xb8, - 0x4b0: 0xb8, 0x4b1: 0xb8, 0x4b2: 0xb8, 0x4b3: 0xb8, 0x4b4: 0xb8, 0x4b5: 0xb8, 0x4b6: 0xb8, 0x4b7: 0xb8, - 0x4b8: 0xb8, 0x4b9: 0xb8, 0x4ba: 0xb8, 0x4bb: 0xb8, 0x4bc: 0xb8, 0x4bd: 0xb8, 0x4be: 0xb8, 0x4bf: 0xb8, + 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, + 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, + 0x490: 0x14b, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, + 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, + 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, + 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, + 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, + 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, // Block 0x13, offset 0x4c0 - 0x4c0: 0xb8, 0x4c1: 0xb8, 0x4c2: 0xb8, 0x4c3: 0xb8, 0x4c4: 0xb8, 0x4c5: 0xb8, 0x4c6: 0xb8, 0x4c7: 0xb8, - 0x4c8: 0xb8, 0x4c9: 0xb8, 0x4ca: 0xb8, 0x4cb: 0xb8, 0x4cc: 0xb8, 0x4cd: 0xb8, 0x4ce: 0xb8, 0x4cf: 0xb8, - 0x4d0: 0x9d, 0x4d1: 0x9d, 0x4d2: 0x9d, 0x4d3: 0x9d, 0x4d4: 0x9d, 0x4d5: 0x9d, 0x4d6: 0x9d, 0x4d7: 0x9d, - 0x4d8: 0x9d, 0x4d9: 0x145, 0x4da: 0xb8, 0x4db: 0xb8, 0x4dc: 0xb8, 0x4dd: 0xb8, 0x4de: 0xb8, 0x4df: 0xb8, - 0x4e0: 0xb8, 0x4e1: 0xb8, 0x4e2: 0xb8, 0x4e3: 0xb8, 0x4e4: 0xb8, 0x4e5: 0xb8, 0x4e6: 0xb8, 0x4e7: 0xb8, - 0x4e8: 0xb8, 0x4e9: 0xb8, 0x4ea: 0xb8, 0x4eb: 0xb8, 0x4ec: 0xb8, 0x4ed: 0xb8, 0x4ee: 0xb8, 0x4ef: 0xb8, - 0x4f0: 0xb8, 0x4f1: 0xb8, 0x4f2: 0xb8, 0x4f3: 0xb8, 0x4f4: 0xb8, 0x4f5: 0xb8, 0x4f6: 0xb8, 0x4f7: 0xb8, - 0x4f8: 0xb8, 0x4f9: 0xb8, 0x4fa: 0xb8, 0x4fb: 0xb8, 0x4fc: 0xb8, 0x4fd: 0xb8, 0x4fe: 0xb8, 0x4ff: 0xb8, + 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, + 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, + 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, + 0x4d8: 0x9f, 0x4d9: 0x14c, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, + 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, + 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, + 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, + 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, // Block 0x14, offset 0x500 - 0x500: 0xb8, 0x501: 0xb8, 0x502: 0xb8, 0x503: 0xb8, 0x504: 0xb8, 0x505: 0xb8, 0x506: 0xb8, 0x507: 0xb8, - 0x508: 0xb8, 0x509: 0xb8, 0x50a: 0xb8, 0x50b: 0xb8, 0x50c: 0xb8, 0x50d: 0xb8, 0x50e: 0xb8, 0x50f: 0xb8, - 0x510: 0xb8, 0x511: 0xb8, 0x512: 0xb8, 0x513: 0xb8, 0x514: 0xb8, 0x515: 0xb8, 0x516: 0xb8, 0x517: 0xb8, - 0x518: 0xb8, 0x519: 0xb8, 0x51a: 0xb8, 0x51b: 0xb8, 0x51c: 0xb8, 0x51d: 0xb8, 0x51e: 0xb8, 0x51f: 0xb8, - 0x520: 0x9d, 0x521: 0x9d, 0x522: 0x9d, 0x523: 0x9d, 0x524: 0x9d, 0x525: 0x9d, 0x526: 0x9d, 0x527: 0x9d, - 0x528: 0x13d, 0x529: 0x146, 0x52a: 0xb8, 0x52b: 0x147, 0x52c: 0x148, 0x52d: 0x149, 0x52e: 0x14a, 0x52f: 0xb8, - 0x530: 0xb8, 0x531: 0xb8, 0x532: 0xb8, 0x533: 0xb8, 0x534: 0xb8, 0x535: 0xb8, 0x536: 0xb8, 0x537: 0xb8, - 0x538: 0xb8, 0x539: 0xb8, 0x53a: 0xb8, 0x53b: 0xb8, 0x53c: 0x9d, 0x53d: 0x14b, 0x53e: 0x14c, 0x53f: 0x14d, + 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, + 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, + 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, + 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, + 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, + 0x528: 0x142, 0x529: 0x14d, 0x52a: 0xba, 0x52b: 0x14e, 0x52c: 0x14f, 0x52d: 0x150, 0x52e: 0x151, 0x52f: 0xba, + 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, + 0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x152, 0x53e: 0x153, 0x53f: 0x154, // Block 0x15, offset 0x540 - 0x540: 0x9d, 0x541: 0x9d, 0x542: 0x9d, 0x543: 0x9d, 0x544: 0x9d, 0x545: 0x9d, 0x546: 0x9d, 0x547: 0x9d, - 0x548: 0x9d, 0x549: 0x9d, 0x54a: 0x9d, 0x54b: 0x9d, 0x54c: 0x9d, 0x54d: 0x9d, 0x54e: 0x9d, 0x54f: 0x9d, - 0x550: 0x9d, 0x551: 0x9d, 0x552: 0x9d, 0x553: 0x9d, 0x554: 0x9d, 0x555: 0x9d, 0x556: 0x9d, 0x557: 0x9d, - 0x558: 0x9d, 0x559: 0x9d, 0x55a: 0x9d, 0x55b: 0x9d, 0x55c: 0x9d, 0x55d: 0x9d, 0x55e: 0x9d, 0x55f: 0x14e, - 0x560: 0x9d, 0x561: 0x9d, 0x562: 0x9d, 0x563: 0x9d, 0x564: 0x9d, 0x565: 0x9d, 0x566: 0x9d, 0x567: 0x9d, - 0x568: 0x9d, 0x569: 0x9d, 0x56a: 0x9d, 0x56b: 0x14f, 0x56c: 0xb8, 0x56d: 0xb8, 0x56e: 0xb8, 0x56f: 0xb8, - 0x570: 0xb8, 0x571: 0xb8, 0x572: 0xb8, 0x573: 0xb8, 0x574: 0xb8, 0x575: 0xb8, 0x576: 0xb8, 0x577: 0xb8, - 0x578: 0xb8, 0x579: 0xb8, 0x57a: 0xb8, 0x57b: 0xb8, 0x57c: 0xb8, 0x57d: 0xb8, 0x57e: 0xb8, 0x57f: 0xb8, + 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, + 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, + 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, + 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x155, + 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, + 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x156, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, + 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, + 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, // Block 0x16, offset 0x580 - 0x580: 0x150, 0x581: 0xb8, 0x582: 0xb8, 0x583: 0xb8, 0x584: 0xb8, 0x585: 0xb8, 0x586: 0xb8, 0x587: 0xb8, - 0x588: 0xb8, 0x589: 0xb8, 0x58a: 0xb8, 0x58b: 0xb8, 0x58c: 0xb8, 0x58d: 0xb8, 0x58e: 0xb8, 0x58f: 0xb8, - 0x590: 0xb8, 0x591: 0xb8, 0x592: 0xb8, 0x593: 0xb8, 0x594: 0xb8, 0x595: 0xb8, 0x596: 0xb8, 0x597: 0xb8, - 0x598: 0xb8, 0x599: 0xb8, 0x59a: 0xb8, 0x59b: 0xb8, 0x59c: 0xb8, 0x59d: 0xb8, 0x59e: 0xb8, 0x59f: 0xb8, - 0x5a0: 0xb8, 0x5a1: 0xb8, 0x5a2: 0xb8, 0x5a3: 0xb8, 0x5a4: 0xb8, 0x5a5: 0xb8, 0x5a6: 0xb8, 0x5a7: 0xb8, - 0x5a8: 0xb8, 0x5a9: 0xb8, 0x5aa: 0xb8, 0x5ab: 0xb8, 0x5ac: 0xb8, 0x5ad: 0xb8, 0x5ae: 0xb8, 0x5af: 0xb8, - 0x5b0: 0x9d, 0x5b1: 0x151, 0x5b2: 0x152, 0x5b3: 0xb8, 0x5b4: 0xb8, 0x5b5: 0xb8, 0x5b6: 0xb8, 0x5b7: 0xb8, - 0x5b8: 0xb8, 0x5b9: 0xb8, 0x5ba: 0xb8, 0x5bb: 0xb8, 0x5bc: 0xb8, 0x5bd: 0xb8, 0x5be: 0xb8, 0x5bf: 0xb8, + 0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x157, 0x585: 0x158, 0x586: 0x9f, 0x587: 0x9f, + 0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x159, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, + 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, + 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, + 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, + 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, + 0x5b0: 0x9f, 0x5b1: 0x15a, 0x5b2: 0x15b, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, + 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, // Block 0x17, offset 0x5c0 - 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x153, 0x5c4: 0x154, 0x5c5: 0x155, 0x5c6: 0x156, 0x5c7: 0x157, - 0x5c8: 0x9b, 0x5c9: 0x158, 0x5ca: 0xb8, 0x5cb: 0xb8, 0x5cc: 0x9b, 0x5cd: 0x159, 0x5ce: 0xb8, 0x5cf: 0xb8, - 0x5d0: 0x5d, 0x5d1: 0x5e, 0x5d2: 0x5f, 0x5d3: 0x60, 0x5d4: 0x61, 0x5d5: 0x62, 0x5d6: 0x63, 0x5d7: 0x64, - 0x5d8: 0x65, 0x5d9: 0x66, 0x5da: 0x67, 0x5db: 0x68, 0x5dc: 0x69, 0x5dd: 0x6a, 0x5de: 0x6b, 0x5df: 0x6c, + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x15c, 0x5c4: 0x15d, 0x5c5: 0x15e, 0x5c6: 0x15f, 0x5c7: 0x160, + 0x5c8: 0x9b, 0x5c9: 0x161, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x162, 0x5ce: 0xba, 0x5cf: 0xba, + 0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66, + 0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e, 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, - 0x5e8: 0x15a, 0x5e9: 0x15b, 0x5ea: 0x15c, 0x5eb: 0xb8, 0x5ec: 0xb8, 0x5ed: 0xb8, 0x5ee: 0xb8, 0x5ef: 0xb8, - 0x5f0: 0xb8, 0x5f1: 0xb8, 0x5f2: 0xb8, 0x5f3: 0xb8, 0x5f4: 0xb8, 0x5f5: 0xb8, 0x5f6: 0xb8, 0x5f7: 0xb8, - 0x5f8: 0xb8, 0x5f9: 0xb8, 0x5fa: 0xb8, 0x5fb: 0xb8, 0x5fc: 0xb8, 0x5fd: 0xb8, 0x5fe: 0xb8, 0x5ff: 0xb8, + 0x5e8: 0x163, 0x5e9: 0x164, 0x5ea: 0x165, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, + 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, + 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, // Block 0x18, offset 0x600 - 0x600: 0x15d, 0x601: 0xb8, 0x602: 0xb8, 0x603: 0xb8, 0x604: 0xb8, 0x605: 0xb8, 0x606: 0xb8, 0x607: 0xb8, - 0x608: 0xb8, 0x609: 0xb8, 0x60a: 0xb8, 0x60b: 0xb8, 0x60c: 0xb8, 0x60d: 0xb8, 0x60e: 0xb8, 0x60f: 0xb8, - 0x610: 0xb8, 0x611: 0xb8, 0x612: 0xb8, 0x613: 0xb8, 0x614: 0xb8, 0x615: 0xb8, 0x616: 0xb8, 0x617: 0xb8, - 0x618: 0xb8, 0x619: 0xb8, 0x61a: 0xb8, 0x61b: 0xb8, 0x61c: 0xb8, 0x61d: 0xb8, 0x61e: 0xb8, 0x61f: 0xb8, - 0x620: 0x9d, 0x621: 0x9d, 0x622: 0x9d, 0x623: 0x15e, 0x624: 0x6d, 0x625: 0x15f, 0x626: 0xb8, 0x627: 0xb8, - 0x628: 0xb8, 0x629: 0xb8, 0x62a: 0xb8, 0x62b: 0xb8, 0x62c: 0xb8, 0x62d: 0xb8, 0x62e: 0xb8, 0x62f: 0xb8, - 0x630: 0xb8, 0x631: 0xb8, 0x632: 0xb8, 0x633: 0xb8, 0x634: 0xb8, 0x635: 0xb8, 0x636: 0xb8, 0x637: 0xb8, - 0x638: 0x6e, 0x639: 0x6f, 0x63a: 0x70, 0x63b: 0x160, 0x63c: 0xb8, 0x63d: 0xb8, 0x63e: 0xb8, 0x63f: 0xb8, + 0x600: 0x166, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, + 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, + 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, + 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, + 0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x167, 0x624: 0x6f, 0x625: 0x168, 0x626: 0xba, 0x627: 0xba, + 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, + 0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, + 0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x169, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, // Block 0x19, offset 0x640 - 0x640: 0x161, 0x641: 0x9b, 0x642: 0x162, 0x643: 0x163, 0x644: 0x71, 0x645: 0x72, 0x646: 0x164, 0x647: 0x165, - 0x648: 0x73, 0x649: 0x166, 0x64a: 0xb8, 0x64b: 0xb8, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x640: 0x16a, 0x641: 0x9b, 0x642: 0x16b, 0x643: 0x16c, 0x644: 0x73, 0x645: 0x74, 0x646: 0x16d, 0x647: 0x16e, + 0x648: 0x75, 0x649: 0x16f, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, - 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x167, 0x65c: 0x9b, 0x65d: 0x168, 0x65e: 0x9b, 0x65f: 0x169, - 0x660: 0x16a, 0x661: 0x16b, 0x662: 0x16c, 0x663: 0xb8, 0x664: 0x16d, 0x665: 0x16e, 0x666: 0x16f, 0x667: 0x170, - 0x668: 0xb8, 0x669: 0xb8, 0x66a: 0xb8, 0x66b: 0xb8, 0x66c: 0xb8, 0x66d: 0xb8, 0x66e: 0xb8, 0x66f: 0xb8, - 0x670: 0xb8, 0x671: 0xb8, 0x672: 0xb8, 0x673: 0xb8, 0x674: 0xb8, 0x675: 0xb8, 0x676: 0xb8, 0x677: 0xb8, - 0x678: 0xb8, 0x679: 0xb8, 0x67a: 0xb8, 0x67b: 0xb8, 0x67c: 0xb8, 0x67d: 0xb8, 0x67e: 0xb8, 0x67f: 0xb8, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x170, 0x65c: 0x9b, 0x65d: 0x171, 0x65e: 0x9b, 0x65f: 0x172, + 0x660: 0x173, 0x661: 0x174, 0x662: 0x175, 0x663: 0xba, 0x664: 0x176, 0x665: 0x177, 0x666: 0x178, 0x667: 0x179, + 0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, + 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, + 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, // Block 0x1a, offset 0x680 - 0x680: 0x9d, 0x681: 0x9d, 0x682: 0x9d, 0x683: 0x9d, 0x684: 0x9d, 0x685: 0x9d, 0x686: 0x9d, 0x687: 0x9d, - 0x688: 0x9d, 0x689: 0x9d, 0x68a: 0x9d, 0x68b: 0x9d, 0x68c: 0x9d, 0x68d: 0x9d, 0x68e: 0x9d, 0x68f: 0x9d, - 0x690: 0x9d, 0x691: 0x9d, 0x692: 0x9d, 0x693: 0x9d, 0x694: 0x9d, 0x695: 0x9d, 0x696: 0x9d, 0x697: 0x9d, - 0x698: 0x9d, 0x699: 0x9d, 0x69a: 0x9d, 0x69b: 0x171, 0x69c: 0x9d, 0x69d: 0x9d, 0x69e: 0x9d, 0x69f: 0x9d, - 0x6a0: 0x9d, 0x6a1: 0x9d, 0x6a2: 0x9d, 0x6a3: 0x9d, 0x6a4: 0x9d, 0x6a5: 0x9d, 0x6a6: 0x9d, 0x6a7: 0x9d, - 0x6a8: 0x9d, 0x6a9: 0x9d, 0x6aa: 0x9d, 0x6ab: 0x9d, 0x6ac: 0x9d, 0x6ad: 0x9d, 0x6ae: 0x9d, 0x6af: 0x9d, - 0x6b0: 0x9d, 0x6b1: 0x9d, 0x6b2: 0x9d, 0x6b3: 0x9d, 0x6b4: 0x9d, 0x6b5: 0x9d, 0x6b6: 0x9d, 0x6b7: 0x9d, - 0x6b8: 0x9d, 0x6b9: 0x9d, 0x6ba: 0x9d, 0x6bb: 0x9d, 0x6bc: 0x9d, 0x6bd: 0x9d, 0x6be: 0x9d, 0x6bf: 0x9d, + 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, + 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, + 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, + 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x17a, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, + 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, + 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, + 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, + 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, // Block 0x1b, offset 0x6c0 - 0x6c0: 0x9d, 0x6c1: 0x9d, 0x6c2: 0x9d, 0x6c3: 0x9d, 0x6c4: 0x9d, 0x6c5: 0x9d, 0x6c6: 0x9d, 0x6c7: 0x9d, - 0x6c8: 0x9d, 0x6c9: 0x9d, 0x6ca: 0x9d, 0x6cb: 0x9d, 0x6cc: 0x9d, 0x6cd: 0x9d, 0x6ce: 0x9d, 0x6cf: 0x9d, - 0x6d0: 0x9d, 0x6d1: 0x9d, 0x6d2: 0x9d, 0x6d3: 0x9d, 0x6d4: 0x9d, 0x6d5: 0x9d, 0x6d6: 0x9d, 0x6d7: 0x9d, - 0x6d8: 0x9d, 0x6d9: 0x9d, 0x6da: 0x9d, 0x6db: 0x9d, 0x6dc: 0x172, 0x6dd: 0x9d, 0x6de: 0x9d, 0x6df: 0x9d, - 0x6e0: 0x173, 0x6e1: 0x9d, 0x6e2: 0x9d, 0x6e3: 0x9d, 0x6e4: 0x9d, 0x6e5: 0x9d, 0x6e6: 0x9d, 0x6e7: 0x9d, - 0x6e8: 0x9d, 0x6e9: 0x9d, 0x6ea: 0x9d, 0x6eb: 0x9d, 0x6ec: 0x9d, 0x6ed: 0x9d, 0x6ee: 0x9d, 0x6ef: 0x9d, - 0x6f0: 0x9d, 0x6f1: 0x9d, 0x6f2: 0x9d, 0x6f3: 0x9d, 0x6f4: 0x9d, 0x6f5: 0x9d, 0x6f6: 0x9d, 0x6f7: 0x9d, - 0x6f8: 0x9d, 0x6f9: 0x9d, 0x6fa: 0x9d, 0x6fb: 0x9d, 0x6fc: 0x9d, 0x6fd: 0x9d, 0x6fe: 0x9d, 0x6ff: 0x9d, + 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, + 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, + 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, + 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x17b, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, + 0x6e0: 0x17c, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, + 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, + 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, + 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, // Block 0x1c, offset 0x700 - 0x700: 0x9d, 0x701: 0x9d, 0x702: 0x9d, 0x703: 0x9d, 0x704: 0x9d, 0x705: 0x9d, 0x706: 0x9d, 0x707: 0x9d, - 0x708: 0x9d, 0x709: 0x9d, 0x70a: 0x9d, 0x70b: 0x9d, 0x70c: 0x9d, 0x70d: 0x9d, 0x70e: 0x9d, 0x70f: 0x9d, - 0x710: 0x9d, 0x711: 0x9d, 0x712: 0x9d, 0x713: 0x9d, 0x714: 0x9d, 0x715: 0x9d, 0x716: 0x9d, 0x717: 0x9d, - 0x718: 0x9d, 0x719: 0x9d, 0x71a: 0x9d, 0x71b: 0x9d, 0x71c: 0x9d, 0x71d: 0x9d, 0x71e: 0x9d, 0x71f: 0x9d, - 0x720: 0x9d, 0x721: 0x9d, 0x722: 0x9d, 0x723: 0x9d, 0x724: 0x9d, 0x725: 0x9d, 0x726: 0x9d, 0x727: 0x9d, - 0x728: 0x9d, 0x729: 0x9d, 0x72a: 0x9d, 0x72b: 0x9d, 0x72c: 0x9d, 0x72d: 0x9d, 0x72e: 0x9d, 0x72f: 0x9d, - 0x730: 0x9d, 0x731: 0x9d, 0x732: 0x9d, 0x733: 0x9d, 0x734: 0x9d, 0x735: 0x9d, 0x736: 0x9d, 0x737: 0x9d, - 0x738: 0x9d, 0x739: 0x9d, 0x73a: 0x174, 0x73b: 0xb8, 0x73c: 0xb8, 0x73d: 0xb8, 0x73e: 0xb8, 0x73f: 0xb8, + 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, + 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, + 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, + 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, + 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, + 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, + 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, + 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x17d, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f, // Block 0x1d, offset 0x740 - 0x740: 0xb8, 0x741: 0xb8, 0x742: 0xb8, 0x743: 0xb8, 0x744: 0xb8, 0x745: 0xb8, 0x746: 0xb8, 0x747: 0xb8, - 0x748: 0xb8, 0x749: 0xb8, 0x74a: 0xb8, 0x74b: 0xb8, 0x74c: 0xb8, 0x74d: 0xb8, 0x74e: 0xb8, 0x74f: 0xb8, - 0x750: 0xb8, 0x751: 0xb8, 0x752: 0xb8, 0x753: 0xb8, 0x754: 0xb8, 0x755: 0xb8, 0x756: 0xb8, 0x757: 0xb8, - 0x758: 0xb8, 0x759: 0xb8, 0x75a: 0xb8, 0x75b: 0xb8, 0x75c: 0xb8, 0x75d: 0xb8, 0x75e: 0xb8, 0x75f: 0xb8, - 0x760: 0x74, 0x761: 0x75, 0x762: 0x76, 0x763: 0x175, 0x764: 0x77, 0x765: 0x78, 0x766: 0x176, 0x767: 0x79, - 0x768: 0x7a, 0x769: 0xb8, 0x76a: 0xb8, 0x76b: 0xb8, 0x76c: 0xb8, 0x76d: 0xb8, 0x76e: 0xb8, 0x76f: 0xb8, - 0x770: 0xb8, 0x771: 0xb8, 0x772: 0xb8, 0x773: 0xb8, 0x774: 0xb8, 0x775: 0xb8, 0x776: 0xb8, 0x777: 0xb8, - 0x778: 0xb8, 0x779: 0xb8, 0x77a: 0xb8, 0x77b: 0xb8, 0x77c: 0xb8, 0x77d: 0xb8, 0x77e: 0xb8, 0x77f: 0xb8, + 0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f, + 0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f, + 0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f, + 0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f, + 0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f, + 0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x17e, + 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, + 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, // Block 0x1e, offset 0x780 - 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, - 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, - 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, - 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, - 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, - 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, + 0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba, + 0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba, + 0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba, + 0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba, + 0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x17f, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x180, 0x7a7: 0x7b, + 0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba, + 0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba, + 0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba, // Block 0x1f, offset 0x7c0 - 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, - 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, - 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, - 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, - 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, - 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, + 0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07, + 0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17, + 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, + 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c, 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, // Block 0x20, offset 0x800 - 0x800: 0x177, 0x801: 0x178, 0x802: 0xb8, 0x803: 0xb8, 0x804: 0x179, 0x805: 0x179, 0x806: 0x179, 0x807: 0x17a, - 0x808: 0xb8, 0x809: 0xb8, 0x80a: 0xb8, 0x80b: 0xb8, 0x80c: 0xb8, 0x80d: 0xb8, 0x80e: 0xb8, 0x80f: 0xb8, - 0x810: 0xb8, 0x811: 0xb8, 0x812: 0xb8, 0x813: 0xb8, 0x814: 0xb8, 0x815: 0xb8, 0x816: 0xb8, 0x817: 0xb8, - 0x818: 0xb8, 0x819: 0xb8, 0x81a: 0xb8, 0x81b: 0xb8, 0x81c: 0xb8, 0x81d: 0xb8, 0x81e: 0xb8, 0x81f: 0xb8, - 0x820: 0xb8, 0x821: 0xb8, 0x822: 0xb8, 0x823: 0xb8, 0x824: 0xb8, 0x825: 0xb8, 0x826: 0xb8, 0x827: 0xb8, - 0x828: 0xb8, 0x829: 0xb8, 0x82a: 0xb8, 0x82b: 0xb8, 0x82c: 0xb8, 0x82d: 0xb8, 0x82e: 0xb8, 0x82f: 0xb8, - 0x830: 0xb8, 0x831: 0xb8, 0x832: 0xb8, 0x833: 0xb8, 0x834: 0xb8, 0x835: 0xb8, 0x836: 0xb8, 0x837: 0xb8, - 0x838: 0xb8, 0x839: 0xb8, 0x83a: 0xb8, 0x83b: 0xb8, 0x83c: 0xb8, 0x83d: 0xb8, 0x83e: 0xb8, 0x83f: 0xb8, + 0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b, + 0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b, + 0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b, + 0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b, + 0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b, + 0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b, + 0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b, + 0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b, // Block 0x21, offset 0x840 - 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, - 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, - 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, - 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, - 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, - 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, - 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, - 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, + 0x840: 0x181, 0x841: 0x182, 0x842: 0xba, 0x843: 0xba, 0x844: 0x183, 0x845: 0x183, 0x846: 0x183, 0x847: 0x184, + 0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba, + 0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba, + 0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba, + 0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba, + 0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba, + 0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba, + 0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba, // Block 0x22, offset 0x880 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, + 0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b, + 0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b, + 0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b, + 0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b, + 0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b, + 0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b, + 0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b, } -// idnaSparseOffset: 256 entries, 512 bytes -var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x5c, 0x60, 0x6f, 0x74, 0x7b, 0x87, 0x95, 0xa3, 0xa8, 0xb1, 0xc1, 0xcf, 0xdc, 0xe8, 0xf9, 0x103, 0x10a, 0x117, 0x128, 0x12f, 0x13a, 0x149, 0x157, 0x161, 0x163, 0x167, 0x169, 0x175, 0x180, 0x188, 0x18e, 0x194, 0x199, 0x19e, 0x1a1, 0x1a5, 0x1ab, 0x1b0, 0x1bc, 0x1c6, 0x1cc, 0x1dd, 0x1e7, 0x1ea, 0x1f2, 0x1f5, 0x202, 0x20a, 0x20e, 0x215, 0x21d, 0x22d, 0x239, 0x23b, 0x245, 0x251, 0x25d, 0x269, 0x271, 0x276, 0x280, 0x291, 0x295, 0x2a0, 0x2a4, 0x2ad, 0x2b5, 0x2bb, 0x2c0, 0x2c3, 0x2c6, 0x2ca, 0x2d0, 0x2d4, 0x2d8, 0x2de, 0x2e5, 0x2eb, 0x2f3, 0x2fa, 0x305, 0x30f, 0x313, 0x316, 0x31c, 0x320, 0x322, 0x325, 0x327, 0x32a, 0x334, 0x337, 0x346, 0x34a, 0x34f, 0x352, 0x356, 0x35b, 0x360, 0x366, 0x36c, 0x37b, 0x381, 0x385, 0x394, 0x399, 0x3a1, 0x3ab, 0x3b6, 0x3be, 0x3cf, 0x3d8, 0x3e8, 0x3f5, 0x3ff, 0x404, 0x411, 0x415, 0x41a, 0x41c, 0x420, 0x422, 0x426, 0x42f, 0x435, 0x439, 0x449, 0x453, 0x458, 0x45b, 0x461, 0x468, 0x46d, 0x471, 0x477, 0x47c, 0x485, 0x48a, 0x490, 0x497, 0x49e, 0x4a5, 0x4a9, 0x4ae, 0x4b1, 0x4b6, 0x4c2, 0x4c8, 0x4cd, 0x4d4, 0x4dc, 0x4e1, 0x4e5, 0x4f5, 0x4fc, 0x500, 0x504, 0x50b, 0x50e, 0x511, 0x515, 0x519, 0x51f, 0x528, 0x534, 0x53b, 0x544, 0x54c, 0x553, 0x561, 0x56e, 0x57b, 0x584, 0x588, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5e5, 0x5ea, 0x5ed, 0x5f7, 0x600, 0x60c, 0x60f, 0x614, 0x617, 0x61a, 0x61d, 0x624, 0x62b, 0x62f, 0x63a, 0x63d, 0x643, 0x648, 0x64c, 0x64f, 0x652, 0x655, 0x65a, 0x664, 0x667, 0x66b, 0x67a, 0x686, 0x68a, 0x68f, 0x694, 0x698, 0x69d, 0x6a6, 0x6b1, 0x6b7, 0x6bf, 0x6c3, 0x6c7, 0x6cd, 0x6d3, 0x6d8, 0x6db, 0x6e9, 0x6f0, 0x6f3, 0x6f6, 0x6fa, 0x700, 0x705, 0x70f, 0x714, 0x717, 0x71a, 0x71d, 0x720, 0x724, 0x727, 0x737, 0x748, 0x74d, 0x74f, 0x751} +// idnaSparseOffset: 264 entries, 528 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x8a, 0x93, 0xa3, 0xb1, 0xbd, 0xc9, 0xda, 0xe4, 0xeb, 0xf8, 0x109, 0x110, 0x11b, 0x12a, 0x138, 0x142, 0x144, 0x149, 0x14c, 0x14f, 0x151, 0x15d, 0x168, 0x170, 0x176, 0x17c, 0x181, 0x186, 0x189, 0x18d, 0x193, 0x198, 0x1a4, 0x1ae, 0x1b4, 0x1c5, 0x1cf, 0x1d2, 0x1da, 0x1dd, 0x1ea, 0x1f2, 0x1f6, 0x1fd, 0x205, 0x215, 0x221, 0x223, 0x22d, 0x239, 0x245, 0x251, 0x259, 0x25e, 0x268, 0x279, 0x27d, 0x288, 0x28c, 0x295, 0x29d, 0x2a3, 0x2a8, 0x2ab, 0x2af, 0x2b5, 0x2b9, 0x2bd, 0x2c3, 0x2ca, 0x2d0, 0x2d8, 0x2df, 0x2ea, 0x2f4, 0x2f8, 0x2fb, 0x301, 0x305, 0x307, 0x30a, 0x30c, 0x30f, 0x319, 0x31c, 0x32b, 0x32f, 0x334, 0x337, 0x33b, 0x340, 0x345, 0x34b, 0x351, 0x360, 0x366, 0x36a, 0x379, 0x37e, 0x386, 0x390, 0x39b, 0x3a3, 0x3b4, 0x3bd, 0x3cd, 0x3da, 0x3e4, 0x3e9, 0x3f6, 0x3fa, 0x3ff, 0x401, 0x405, 0x407, 0x40b, 0x414, 0x41a, 0x41e, 0x42e, 0x438, 0x43d, 0x440, 0x446, 0x44d, 0x452, 0x456, 0x45c, 0x461, 0x46a, 0x46f, 0x475, 0x47c, 0x483, 0x48a, 0x48e, 0x493, 0x496, 0x49b, 0x4a7, 0x4ad, 0x4b2, 0x4b9, 0x4c1, 0x4c6, 0x4ca, 0x4da, 0x4e1, 0x4e5, 0x4e9, 0x4f0, 0x4f2, 0x4f5, 0x4f8, 0x4fc, 0x500, 0x506, 0x50f, 0x51b, 0x522, 0x52b, 0x533, 0x53a, 0x548, 0x555, 0x562, 0x56b, 0x56f, 0x57d, 0x585, 0x590, 0x599, 0x59f, 0x5a7, 0x5b0, 0x5ba, 0x5bd, 0x5c9, 0x5cc, 0x5d1, 0x5de, 0x5e7, 0x5f3, 0x5f6, 0x600, 0x609, 0x615, 0x622, 0x62a, 0x62d, 0x632, 0x635, 0x638, 0x63b, 0x642, 0x649, 0x64d, 0x658, 0x65b, 0x661, 0x666, 0x66a, 0x66d, 0x670, 0x673, 0x676, 0x679, 0x67e, 0x688, 0x68b, 0x68f, 0x69e, 0x6aa, 0x6ae, 0x6b3, 0x6b8, 0x6bc, 0x6c1, 0x6ca, 0x6d5, 0x6db, 0x6e3, 0x6e7, 0x6eb, 0x6f1, 0x6f7, 0x6fc, 0x6ff, 0x70f, 0x716, 0x719, 0x71c, 0x720, 0x726, 0x72b, 0x730, 0x735, 0x738, 0x73d, 0x740, 0x743, 0x747, 0x74b, 0x74e, 0x75e, 0x76f, 0x774, 0x776, 0x778} -// idnaSparseValues: 1876 entries, 7504 bytes -var idnaSparseValues = [1876]valueRange{ +// idnaSparseValues: 1915 entries, 7660 bytes +var idnaSparseValues = [1915]valueRange{ // Block 0x0, offset 0x0 {value: 0x0000, lo: 0x07}, {value: 0xe105, lo: 0x80, hi: 0x96}, @@ -2382,7 +2415,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xb9, hi: 0xbf}, // Block 0x3, offset 0x25 {value: 0x0000, lo: 0x01}, - {value: 0x1308, lo: 0x80, hi: 0xbf}, + {value: 0x3308, lo: 0x80, hi: 0xbf}, // Block 0x4, offset 0x27 {value: 0x0000, lo: 0x04}, {value: 0x03f5, lo: 0x80, hi: 0x8f}, @@ -2407,155 +2440,123 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x8b, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x1308, lo: 0x91, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbe}, - {value: 0x1308, lo: 0xbf, hi: 0xbf}, + {value: 0x3308, lo: 0x91, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, // Block 0x7, offset 0x3f {value: 0x0000, lo: 0x0b}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0x83}, - {value: 0x1308, lo: 0x84, hi: 0x85}, - {value: 0x0018, lo: 0x86, hi: 0x86}, - {value: 0x1308, lo: 0x87, hi: 0x87}, + {value: 0x0818, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x82}, + {value: 0x0818, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x85}, + {value: 0x0818, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xaa}, + {value: 0x0808, lo: 0x90, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0808, lo: 0xb0, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, // Block 0x8, offset 0x4b - {value: 0x0000, lo: 0x10}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0208, lo: 0x81, hi: 0x87}, - {value: 0x0408, lo: 0x88, hi: 0x88}, - {value: 0x0208, lo: 0x89, hi: 0x8a}, - {value: 0x1308, lo: 0x8b, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xad}, - {value: 0x0208, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb0}, - {value: 0x0408, lo: 0xb1, hi: 0xb3}, - {value: 0x0008, lo: 0xb4, hi: 0xb4}, - {value: 0x0429, lo: 0xb5, hi: 0xb5}, - {value: 0x0451, lo: 0xb6, hi: 0xb6}, - {value: 0x0479, lo: 0xb7, hi: 0xb7}, - {value: 0x04a1, lo: 0xb8, hi: 0xb8}, - {value: 0x0208, lo: 0xb9, hi: 0xbf}, - // Block 0x9, offset 0x5c {value: 0x0000, lo: 0x03}, - {value: 0x0208, lo: 0x80, hi: 0x87}, - {value: 0x0408, lo: 0x88, hi: 0x99}, - {value: 0x0208, lo: 0x9a, hi: 0xbf}, - // Block 0xa, offset 0x60 + {value: 0x0a08, lo: 0x80, hi: 0x87}, + {value: 0x0c08, lo: 0x88, hi: 0x99}, + {value: 0x0a08, lo: 0x9a, hi: 0xbf}, + // Block 0x9, offset 0x4f {value: 0x0000, lo: 0x0e}, - {value: 0x1308, lo: 0x80, hi: 0x8a}, + {value: 0x3308, lo: 0x80, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8c}, - {value: 0x0408, lo: 0x8d, hi: 0x8d}, - {value: 0x0208, lo: 0x8e, hi: 0x98}, - {value: 0x0408, lo: 0x99, hi: 0x9b}, - {value: 0x0208, lo: 0x9c, hi: 0xaa}, - {value: 0x0408, lo: 0xab, hi: 0xac}, - {value: 0x0208, lo: 0xad, hi: 0xb0}, - {value: 0x0408, lo: 0xb1, hi: 0xb1}, - {value: 0x0208, lo: 0xb2, hi: 0xb2}, - {value: 0x0408, lo: 0xb3, hi: 0xb4}, - {value: 0x0208, lo: 0xb5, hi: 0xb7}, - {value: 0x0408, lo: 0xb8, hi: 0xb9}, - {value: 0x0208, lo: 0xba, hi: 0xbf}, - // Block 0xb, offset 0x6f + {value: 0x0c08, lo: 0x8d, hi: 0x8d}, + {value: 0x0a08, lo: 0x8e, hi: 0x98}, + {value: 0x0c08, lo: 0x99, hi: 0x9b}, + {value: 0x0a08, lo: 0x9c, hi: 0xaa}, + {value: 0x0c08, lo: 0xab, hi: 0xac}, + {value: 0x0a08, lo: 0xad, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb1}, + {value: 0x0a08, lo: 0xb2, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xb5, hi: 0xb7}, + {value: 0x0c08, lo: 0xb8, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbf}, + // Block 0xa, offset 0x5e {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xb0}, - {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x0808, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xb0}, + {value: 0x0808, lo: 0xb1, hi: 0xb1}, {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xc, offset 0x74 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0208, lo: 0x8a, hi: 0xaa}, - {value: 0x1308, lo: 0xab, hi: 0xb3}, - {value: 0x0008, lo: 0xb4, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xba}, + // Block 0xb, offset 0x63 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0xd, offset 0x7b + // Block 0xc, offset 0x6b {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x1308, lo: 0x96, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0xa3}, - {value: 0x0008, lo: 0xa4, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xa8}, - {value: 0x1308, lo: 0xa9, hi: 0xad}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x99}, + {value: 0x0808, lo: 0x9a, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa3}, + {value: 0x0808, lo: 0xa4, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa7}, + {value: 0x0808, lo: 0xa8, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbe}, + {value: 0x0818, lo: 0xb0, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xe, offset 0x87 - {value: 0x0000, lo: 0x0d}, - {value: 0x0408, lo: 0x80, hi: 0x80}, - {value: 0x0208, lo: 0x81, hi: 0x85}, - {value: 0x0408, lo: 0x86, hi: 0x87}, - {value: 0x0208, lo: 0x88, hi: 0x88}, - {value: 0x0408, lo: 0x89, hi: 0x89}, - {value: 0x0208, lo: 0x8a, hi: 0x93}, - {value: 0x0408, lo: 0x94, hi: 0x94}, - {value: 0x0208, lo: 0x95, hi: 0x95}, - {value: 0x0008, lo: 0x96, hi: 0x98}, - {value: 0x1308, lo: 0x99, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xf, offset 0x95 + // Block 0xd, offset 0x77 {value: 0x0000, lo: 0x0d}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0208, lo: 0xa0, hi: 0xa9}, - {value: 0x0408, lo: 0xaa, hi: 0xac}, - {value: 0x0008, lo: 0xad, hi: 0xad}, - {value: 0x0408, lo: 0xae, hi: 0xae}, - {value: 0x0208, lo: 0xaf, hi: 0xb0}, - {value: 0x0408, lo: 0xb1, hi: 0xb2}, - {value: 0x0208, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xa0, hi: 0xa9}, + {value: 0x0c08, lo: 0xaa, hi: 0xac}, + {value: 0x0808, lo: 0xad, hi: 0xad}, + {value: 0x0c08, lo: 0xae, hi: 0xae}, + {value: 0x0a08, lo: 0xaf, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb2}, + {value: 0x0a08, lo: 0xb3, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0208, lo: 0xb6, hi: 0xb8}, - {value: 0x0408, lo: 0xb9, hi: 0xb9}, - {value: 0x0208, lo: 0xba, hi: 0xbd}, + {value: 0x0a08, lo: 0xb6, hi: 0xb8}, + {value: 0x0c08, lo: 0xb9, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x10, offset 0xa3 + // Block 0xe, offset 0x85 {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x93}, - {value: 0x1308, lo: 0x94, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x1308, lo: 0xa3, hi: 0xbf}, - // Block 0x11, offset 0xa8 + {value: 0x3308, lo: 0x94, hi: 0xa1}, + {value: 0x0840, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xbf}, + // Block 0xf, offset 0x8a {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0xb9}, - {value: 0x1308, lo: 0xba, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x12, offset 0xb1 + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x10, offset 0x93 {value: 0x0000, lo: 0x0f}, - {value: 0x1308, lo: 0x80, hi: 0x80}, - {value: 0x1008, lo: 0x81, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x85}, - {value: 0x1008, lo: 0x86, hi: 0x88}, + {value: 0x3008, lo: 0x86, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x1008, lo: 0x8a, hi: 0x8c}, - {value: 0x1b08, lo: 0x8d, hi: 0x8d}, + {value: 0x3008, lo: 0x8a, hi: 0x8c}, + {value: 0x3b08, lo: 0x8d, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x96}, - {value: 0x1008, lo: 0x97, hi: 0x97}, + {value: 0x3008, lo: 0x97, hi: 0x97}, {value: 0x0040, lo: 0x98, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x13, offset 0xc1 + // Block 0x11, offset 0xa3 {value: 0x0000, lo: 0x0d}, - {value: 0x1308, lo: 0x80, hi: 0x80}, - {value: 0x1008, lo: 0x81, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, @@ -2566,25 +2567,24 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xaa, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x1308, lo: 0xbe, hi: 0xbf}, - // Block 0x14, offset 0xcf - {value: 0x0000, lo: 0x0c}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x12, offset 0xb1 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, {value: 0x0008, lo: 0x8e, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x91}, {value: 0x0008, lo: 0x92, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x3b08, lo: 0xbb, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x15, offset 0xdc + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x13, offset 0xbd {value: 0x0000, lo: 0x0b}, {value: 0x0040, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x3008, lo: 0x82, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x99}, @@ -2594,50 +2594,50 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x16, offset 0xe8 + // Block 0x14, offset 0xc9 {value: 0x0000, lo: 0x10}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x89}, - {value: 0x1b08, lo: 0x8a, hi: 0x8a}, + {value: 0x3b08, lo: 0x8a, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8e}, - {value: 0x1008, lo: 0x8f, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0x94}, + {value: 0x3008, lo: 0x8f, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x94}, {value: 0x0040, lo: 0x95, hi: 0x95}, - {value: 0x1308, lo: 0x96, hi: 0x96}, + {value: 0x3308, lo: 0x96, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x1008, lo: 0x98, hi: 0x9f}, + {value: 0x3008, lo: 0x98, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xb1}, - {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x17, offset 0xf9 + // Block 0x15, offset 0xda {value: 0x0000, lo: 0x09}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0xb0}, - {value: 0x1308, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb1, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xb2}, {value: 0x08f1, lo: 0xb3, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb9}, - {value: 0x1b08, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xb4, hi: 0xb9}, + {value: 0x3b08, lo: 0xba, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbe}, {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0x18, offset 0x103 + // Block 0x16, offset 0xe4 {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x1308, lo: 0x87, hi: 0x8e}, + {value: 0x3308, lo: 0x87, hi: 0x8e}, {value: 0x0018, lo: 0x8f, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0018, lo: 0x9a, hi: 0x9b}, {value: 0x0040, lo: 0x9c, hi: 0xbf}, - // Block 0x19, offset 0x10a + // Block 0x17, offset 0xeb {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x85}, {value: 0x0008, lo: 0x86, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x1308, lo: 0x88, hi: 0x8d}, + {value: 0x3308, lo: 0x88, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9b}, @@ -2645,76 +2645,76 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0999, lo: 0x9d, hi: 0x9d}, {value: 0x0008, lo: 0x9e, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x1a, offset 0x117 + // Block 0x18, offset 0xf8 {value: 0x0000, lo: 0x10}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x8a}, {value: 0x0008, lo: 0x8b, hi: 0x8b}, {value: 0xe03d, lo: 0x8c, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x97}, - {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x3308, lo: 0x98, hi: 0x99}, {value: 0x0018, lo: 0x9a, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa9}, {value: 0x0018, lo: 0xaa, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, {value: 0x0018, lo: 0xb6, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, {value: 0x0018, lo: 0xb8, hi: 0xb8}, - {value: 0x1308, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xb9, hi: 0xb9}, {value: 0x0018, lo: 0xba, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x1b, offset 0x128 + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x19, offset 0x109 {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x85}, - {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x86, hi: 0x86}, {value: 0x0018, lo: 0x87, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, {value: 0x0018, lo: 0x8e, hi: 0x9a}, {value: 0x0040, lo: 0x9b, hi: 0xbf}, - // Block 0x1c, offset 0x12f + // Block 0x1a, offset 0x110 {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x1008, lo: 0xab, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xb0}, - {value: 0x1008, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb7}, - {value: 0x1008, lo: 0xb8, hi: 0xb8}, - {value: 0x1b08, lo: 0xb9, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbc}, - {value: 0x1308, lo: 0xbd, hi: 0xbe}, + {value: 0x3008, lo: 0xab, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbe}, {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x1d, offset 0x13a + // Block 0x1b, offset 0x11b {value: 0x0000, lo: 0x0e}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0018, lo: 0x8a, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x95}, - {value: 0x1008, lo: 0x96, hi: 0x97}, - {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x3008, lo: 0x96, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, {value: 0x0008, lo: 0x9a, hi: 0x9d}, - {value: 0x1308, lo: 0x9e, hi: 0xa0}, + {value: 0x3308, lo: 0x9e, hi: 0xa0}, {value: 0x0008, lo: 0xa1, hi: 0xa1}, - {value: 0x1008, lo: 0xa2, hi: 0xa4}, + {value: 0x3008, lo: 0xa2, hi: 0xa4}, {value: 0x0008, lo: 0xa5, hi: 0xa6}, - {value: 0x1008, lo: 0xa7, hi: 0xad}, + {value: 0x3008, lo: 0xa7, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xb0}, - {value: 0x1308, lo: 0xb1, hi: 0xb4}, + {value: 0x3308, lo: 0xb1, hi: 0xb4}, {value: 0x0008, lo: 0xb5, hi: 0xbf}, - // Block 0x1e, offset 0x149 + // Block 0x1c, offset 0x12a {value: 0x0000, lo: 0x0d}, {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x1308, lo: 0x82, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x86}, - {value: 0x1008, lo: 0x87, hi: 0x8c}, - {value: 0x1308, lo: 0x8d, hi: 0x8d}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x8c}, + {value: 0x3308, lo: 0x8d, hi: 0x8d}, {value: 0x0008, lo: 0x8e, hi: 0x8e}, - {value: 0x1008, lo: 0x8f, hi: 0x8f}, + {value: 0x3008, lo: 0x8f, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x1008, lo: 0x9a, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x3008, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x1f, offset 0x157 + // Block 0x1d, offset 0x138 {value: 0x0000, lo: 0x09}, {value: 0x0040, lo: 0x80, hi: 0x86}, {value: 0x055d, lo: 0x87, hi: 0x87}, @@ -2725,18 +2725,27 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0xbb, hi: 0xbb}, {value: 0xe105, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0x20, offset 0x161 + // Block 0x1e, offset 0x142 {value: 0x0000, lo: 0x01}, {value: 0x0018, lo: 0x80, hi: 0xbf}, - // Block 0x21, offset 0x163 - {value: 0x0000, lo: 0x03}, + // Block 0x1f, offset 0x144 + {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xbf}, - // Block 0x22, offset 0x167 + {value: 0x2018, lo: 0xa1, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x20, offset 0x149 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa7}, + {value: 0x2018, lo: 0xa8, hi: 0xbf}, + // Block 0x21, offset 0x14c + {value: 0x0000, lo: 0x02}, + {value: 0x2018, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0xbf}, + // Block 0x22, offset 0x14f {value: 0x0000, lo: 0x01}, {value: 0x0008, lo: 0x80, hi: 0xbf}, - // Block 0x23, offset 0x169 + // Block 0x23, offset 0x151 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, @@ -2749,7 +2758,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0x9a, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x24, offset 0x175 + // Block 0x24, offset 0x15d {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, @@ -2761,7 +2770,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xb6, hi: 0xb7}, {value: 0x0008, lo: 0xb8, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x25, offset 0x180 + // Block 0x25, offset 0x168 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0040, lo: 0x81, hi: 0x81}, @@ -2770,146 +2779,146 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0x88, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x26, offset 0x188 + // Block 0x26, offset 0x170 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x91}, {value: 0x0008, lo: 0x92, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x27, offset 0x18e + // Block 0x27, offset 0x176 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x9a}, {value: 0x0040, lo: 0x9b, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9f}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x28, offset 0x194 + // Block 0x28, offset 0x17c {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x29, offset 0x199 + // Block 0x29, offset 0x181 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb7}, {value: 0xe045, lo: 0xb8, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x2a, offset 0x19e + // Block 0x2a, offset 0x186 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x2b, offset 0x1a1 + // Block 0x2b, offset 0x189 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xac}, {value: 0x0018, lo: 0xad, hi: 0xae}, {value: 0x0008, lo: 0xaf, hi: 0xbf}, - // Block 0x2c, offset 0x1a5 + // Block 0x2c, offset 0x18d {value: 0x0000, lo: 0x05}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0x9a}, {value: 0x0018, lo: 0x9b, hi: 0x9c}, {value: 0x0040, lo: 0x9d, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x2d, offset 0x1ab + // Block 0x2d, offset 0x193 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xaa}, {value: 0x0018, lo: 0xab, hi: 0xb0}, {value: 0x0008, lo: 0xb1, hi: 0xb8}, {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0x2e, offset 0x1b0 + // Block 0x2e, offset 0x198 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, {value: 0x0008, lo: 0x8e, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0x93}, - {value: 0x1b08, lo: 0x94, hi: 0x94}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x3b08, lo: 0x94, hi: 0x94}, {value: 0x0040, lo: 0x95, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb3}, - {value: 0x1b08, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, {value: 0x0018, lo: 0xb5, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x2f, offset 0x1bc + // Block 0x2f, offset 0x1a4 {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0x93}, + {value: 0x3308, lo: 0x92, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xb0}, {value: 0x0040, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x30, offset 0x1c6 + // Block 0x30, offset 0x1ae {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0xb3}, - {value: 0x1340, lo: 0xb4, hi: 0xb5}, - {value: 0x1008, lo: 0xb6, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x31, offset 0x1cc + {value: 0x3340, lo: 0xb4, hi: 0xb5}, + {value: 0x3008, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x31, offset 0x1b4 {value: 0x0000, lo: 0x10}, - {value: 0x1008, lo: 0x80, hi: 0x85}, - {value: 0x1308, lo: 0x86, hi: 0x86}, - {value: 0x1008, lo: 0x87, hi: 0x88}, - {value: 0x1308, lo: 0x89, hi: 0x91}, - {value: 0x1b08, lo: 0x92, hi: 0x92}, - {value: 0x1308, lo: 0x93, hi: 0x93}, + {value: 0x3008, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x91}, + {value: 0x3b08, lo: 0x92, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0x93}, {value: 0x0018, lo: 0x94, hi: 0x96}, {value: 0x0008, lo: 0x97, hi: 0x97}, {value: 0x0018, lo: 0x98, hi: 0x9b}, {value: 0x0008, lo: 0x9c, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa9}, {value: 0x0040, lo: 0xaa, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x32, offset 0x1dd + // Block 0x32, offset 0x1c5 {value: 0x0000, lo: 0x09}, {value: 0x0018, lo: 0x80, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0x86}, {value: 0x0218, lo: 0x87, hi: 0x87}, {value: 0x0018, lo: 0x88, hi: 0x8a}, - {value: 0x13c0, lo: 0x8b, hi: 0x8d}, + {value: 0x33c0, lo: 0x8b, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0208, lo: 0xa0, hi: 0xbf}, - // Block 0x33, offset 0x1e7 + // Block 0x33, offset 0x1cf {value: 0x0000, lo: 0x02}, {value: 0x0208, lo: 0x80, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x34, offset 0x1ea + // Block 0x34, offset 0x1d2 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x3308, lo: 0x85, hi: 0x86}, {value: 0x0208, lo: 0x87, hi: 0xa8}, - {value: 0x1308, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xa9, hi: 0xa9}, {value: 0x0208, lo: 0xaa, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x35, offset 0x1f2 + // Block 0x35, offset 0x1da {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0x36, offset 0x1f5 + // Block 0x36, offset 0x1dd {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa6}, - {value: 0x1308, lo: 0xa7, hi: 0xa8}, - {value: 0x1008, lo: 0xa9, hi: 0xab}, + {value: 0x3308, lo: 0xa0, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb2}, - {value: 0x1008, lo: 0xb3, hi: 0xb8}, - {value: 0x1308, lo: 0xb9, hi: 0xbb}, + {value: 0x3008, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x37, offset 0x202 + // Block 0x37, offset 0x1ea {value: 0x0000, lo: 0x07}, {value: 0x0018, lo: 0x80, hi: 0x80}, {value: 0x0040, lo: 0x81, hi: 0x83}, @@ -2918,12 +2927,12 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x38, offset 0x20a + // Block 0x38, offset 0x1f2 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x39, offset 0x20e + // Block 0x39, offset 0x1f6 {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0x8f}, @@ -2931,33 +2940,33 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0028, lo: 0x9a, hi: 0x9a}, {value: 0x0040, lo: 0x9b, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0xbf}, - // Block 0x3a, offset 0x215 + // Block 0x3a, offset 0x1fd {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x1308, lo: 0x97, hi: 0x98}, - {value: 0x1008, lo: 0x99, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0x9b}, + {value: 0x3308, lo: 0x97, hi: 0x98}, + {value: 0x3008, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9b}, {value: 0x0040, lo: 0x9c, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x3b, offset 0x21d + // Block 0x3b, offset 0x205 {value: 0x0000, lo: 0x0f}, {value: 0x0008, lo: 0x80, hi: 0x94}, - {value: 0x1008, lo: 0x95, hi: 0x95}, - {value: 0x1308, lo: 0x96, hi: 0x96}, - {value: 0x1008, lo: 0x97, hi: 0x97}, - {value: 0x1308, lo: 0x98, hi: 0x9e}, + {value: 0x3008, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x1b08, lo: 0xa0, hi: 0xa0}, - {value: 0x1008, lo: 0xa1, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xac}, - {value: 0x1008, lo: 0xad, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xbc}, + {value: 0x3b08, lo: 0xa0, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xac}, + {value: 0x3008, lo: 0xad, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x1308, lo: 0xbf, hi: 0xbf}, - // Block 0x3c, offset 0x22d + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x215 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0x8f}, @@ -2967,78 +2976,78 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa7, hi: 0xa7}, {value: 0x0018, lo: 0xa8, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xbd}, - {value: 0x1318, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xb0, hi: 0xbd}, + {value: 0x3318, lo: 0xbe, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x3d, offset 0x239 + // Block 0x3d, offset 0x221 {value: 0x0000, lo: 0x01}, {value: 0x0040, lo: 0x80, hi: 0xbf}, - // Block 0x3e, offset 0x23b + // Block 0x3e, offset 0x223 {value: 0x0000, lo: 0x09}, - {value: 0x1308, lo: 0x80, hi: 0x83}, - {value: 0x1008, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3008, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb4}, - {value: 0x1008, lo: 0xb5, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, - {value: 0x1008, lo: 0xbd, hi: 0xbf}, - // Block 0x3f, offset 0x245 + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x3f, offset 0x22d {value: 0x0000, lo: 0x0b}, - {value: 0x1008, lo: 0x80, hi: 0x81}, - {value: 0x1308, lo: 0x82, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x83}, - {value: 0x1808, lo: 0x84, hi: 0x84}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x3808, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0018, lo: 0x9a, hi: 0xaa}, - {value: 0x1308, lo: 0xab, hi: 0xb3}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x40, offset 0x251 + // Block 0x40, offset 0x239 {value: 0x0000, lo: 0x0b}, - {value: 0x1308, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xa0}, - {value: 0x1008, lo: 0xa1, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa5}, - {value: 0x1008, lo: 0xa6, hi: 0xa7}, - {value: 0x1308, lo: 0xa8, hi: 0xa9}, - {value: 0x1808, lo: 0xaa, hi: 0xaa}, - {value: 0x1b08, lo: 0xab, hi: 0xab}, - {value: 0x1308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3808, lo: 0xaa, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xbf}, - // Block 0x41, offset 0x25d + // Block 0x41, offset 0x245 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xa6}, - {value: 0x1008, lo: 0xa7, hi: 0xa7}, - {value: 0x1308, lo: 0xa8, hi: 0xa9}, - {value: 0x1008, lo: 0xaa, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xad}, - {value: 0x1008, lo: 0xae, hi: 0xae}, - {value: 0x1308, lo: 0xaf, hi: 0xb1}, - {value: 0x1808, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xa6, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3008, lo: 0xaa, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3808, lo: 0xb2, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbb}, {value: 0x0018, lo: 0xbc, hi: 0xbf}, - // Block 0x42, offset 0x269 + // Block 0x42, offset 0x251 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x1008, lo: 0xa4, hi: 0xab}, - {value: 0x1308, lo: 0xac, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xa4, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xba}, {value: 0x0018, lo: 0xbb, hi: 0xbf}, - // Block 0x43, offset 0x271 + // Block 0x43, offset 0x259 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0x8c}, {value: 0x0008, lo: 0x8d, hi: 0xbd}, {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x44, offset 0x276 + // Block 0x44, offset 0x25e {value: 0x0000, lo: 0x09}, {value: 0x0e29, lo: 0x80, hi: 0x80}, {value: 0x0e41, lo: 0x81, hi: 0x81}, @@ -3049,30 +3058,30 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0eb9, lo: 0x87, hi: 0x87}, {value: 0x057d, lo: 0x88, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0x45, offset 0x280 + // Block 0x45, offset 0x268 {value: 0x0000, lo: 0x10}, {value: 0x0018, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x1308, lo: 0x90, hi: 0x92}, + {value: 0x3308, lo: 0x90, hi: 0x92}, {value: 0x0018, lo: 0x93, hi: 0x93}, - {value: 0x1308, lo: 0x94, hi: 0xa0}, - {value: 0x1008, lo: 0xa1, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa8}, + {value: 0x3308, lo: 0x94, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa8}, {value: 0x0008, lo: 0xa9, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x3308, lo: 0xad, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xb1}, - {value: 0x1008, lo: 0xb2, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xb9}, + {value: 0x3008, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x46, offset 0x291 + // Block 0x46, offset 0x279 {value: 0x0000, lo: 0x03}, - {value: 0x1308, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x1308, lo: 0xbb, hi: 0xbf}, - // Block 0x47, offset 0x295 + {value: 0x3308, lo: 0x80, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0x47, offset 0x27d {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x87}, {value: 0xe045, lo: 0x88, hi: 0x8f}, @@ -3084,12 +3093,12 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xe045, lo: 0xa8, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb7}, {value: 0xe045, lo: 0xb8, hi: 0xbf}, - // Block 0x48, offset 0x2a0 + // Block 0x48, offset 0x288 {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x1318, lo: 0x90, hi: 0xb0}, + {value: 0x3318, lo: 0x90, hi: 0xb0}, {value: 0x0040, lo: 0xb1, hi: 0xbf}, - // Block 0x49, offset 0x2a4 + // Block 0x49, offset 0x28c {value: 0x0000, lo: 0x08}, {value: 0x0018, lo: 0x80, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x83}, @@ -3099,7 +3108,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0x8a, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x4a, offset 0x2ad + // Block 0x4a, offset 0x295 {value: 0x0000, lo: 0x07}, {value: 0x0018, lo: 0x80, hi: 0xab}, {value: 0x24f1, lo: 0xac, hi: 0xac}, @@ -3108,72 +3117,68 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x2579, lo: 0xaf, hi: 0xaf}, {value: 0x25b1, lo: 0xb0, hi: 0xb0}, {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0x4b, offset 0x2b5 + // Block 0x4b, offset 0x29d {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x9f}, {value: 0x0080, lo: 0xa0, hi: 0xa0}, {value: 0x0018, lo: 0xa1, hi: 0xad}, {value: 0x0080, lo: 0xae, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x4c, offset 0x2bb + // Block 0x4c, offset 0x2a3 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0xa8}, {value: 0x09c5, lo: 0xa9, hi: 0xa9}, {value: 0x09e5, lo: 0xaa, hi: 0xaa}, {value: 0x0018, lo: 0xab, hi: 0xbf}, - // Block 0x4d, offset 0x2c0 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x4e, offset 0x2c3 + // Block 0x4d, offset 0x2a8 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0xa6}, {value: 0x0040, lo: 0xa7, hi: 0xbf}, - // Block 0x4f, offset 0x2c6 + // Block 0x4e, offset 0x2ab {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0x8b}, {value: 0x28c1, lo: 0x8c, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0xbf}, - // Block 0x50, offset 0x2ca + // Block 0x4f, offset 0x2af {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0xb3}, {value: 0x0e66, lo: 0xb4, hi: 0xb4}, {value: 0x292a, lo: 0xb5, hi: 0xb5}, {value: 0x0e86, lo: 0xb6, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x51, offset 0x2d0 + // Block 0x50, offset 0x2b5 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0x9b}, {value: 0x2941, lo: 0x9c, hi: 0x9c}, {value: 0x0018, lo: 0x9d, hi: 0xbf}, - // Block 0x52, offset 0x2d4 + // Block 0x51, offset 0x2b9 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xb5}, {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0x53, offset 0x2d8 + // Block 0x52, offset 0x2bd {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x97}, {value: 0x0018, lo: 0x98, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbc}, {value: 0x0018, lo: 0xbd, hi: 0xbf}, - // Block 0x54, offset 0x2de + // Block 0x53, offset 0x2c3 {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xab}, + {value: 0x0018, lo: 0x8a, hi: 0x92}, + {value: 0x0040, lo: 0x93, hi: 0xab}, {value: 0x0018, lo: 0xac, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x55, offset 0x2e5 + // Block 0x54, offset 0x2ca {value: 0x0000, lo: 0x05}, {value: 0xe185, lo: 0x80, hi: 0x8f}, {value: 0x03f5, lo: 0x90, hi: 0x9f}, {value: 0x0ea5, lo: 0xa0, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x56, offset 0x2eb + // Block 0x55, offset 0x2d0 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xa5}, {value: 0x0040, lo: 0xa6, hi: 0xa6}, @@ -3182,15 +3187,15 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xad, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x57, offset 0x2f3 + // Block 0x56, offset 0x2d8 {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xae}, {value: 0xe075, lo: 0xaf, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb0}, {value: 0x0040, lo: 0xb1, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0x58, offset 0x2fa + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0x57, offset 0x2df {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x9f}, @@ -3202,7 +3207,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xb7, hi: 0xb7}, {value: 0x0008, lo: 0xb8, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x59, offset 0x305 + // Block 0x58, offset 0x2ea {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, @@ -3212,62 +3217,62 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x97, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xbf}, - // Block 0x5a, offset 0x30f + {value: 0x3308, lo: 0xa0, hi: 0xbf}, + // Block 0x59, offset 0x2f4 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xae}, {value: 0x0008, lo: 0xaf, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x5b, offset 0x313 + // Block 0x5a, offset 0x2f8 {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0xbf}, - // Block 0x5c, offset 0x316 + {value: 0x0018, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0x5b, offset 0x2fb {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9a}, {value: 0x0018, lo: 0x9b, hi: 0x9e}, {value: 0x0edd, lo: 0x9f, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0x5d, offset 0x31c + // Block 0x5c, offset 0x301 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xb2}, {value: 0x0efd, lo: 0xb3, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x5e, offset 0x320 + // Block 0x5d, offset 0x305 {value: 0x0020, lo: 0x01}, {value: 0x0f1d, lo: 0x80, hi: 0xbf}, - // Block 0x5f, offset 0x322 + // Block 0x5e, offset 0x307 {value: 0x0020, lo: 0x02}, {value: 0x171d, lo: 0x80, hi: 0x8f}, {value: 0x18fd, lo: 0x90, hi: 0xbf}, - // Block 0x60, offset 0x325 + // Block 0x5f, offset 0x30a {value: 0x0020, lo: 0x01}, {value: 0x1efd, lo: 0x80, hi: 0xbf}, - // Block 0x61, offset 0x327 + // Block 0x60, offset 0x30c {value: 0x0000, lo: 0x02}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x62, offset 0x32a + // Block 0x61, offset 0x30f {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x98}, - {value: 0x1308, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x99, hi: 0x9a}, {value: 0x29e2, lo: 0x9b, hi: 0x9b}, {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, {value: 0x0008, lo: 0x9d, hi: 0x9e}, {value: 0x2a31, lo: 0x9f, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xa0}, {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x63, offset 0x334 + // Block 0x62, offset 0x319 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xbe}, {value: 0x2a69, lo: 0xbf, hi: 0xbf}, - // Block 0x64, offset 0x337 + // Block 0x63, offset 0x31c {value: 0x0000, lo: 0x0e}, {value: 0x0040, lo: 0x80, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xb0}, + {value: 0x0008, lo: 0x85, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, @@ -3279,150 +3284,150 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x2afd, lo: 0xba, hi: 0xbb}, {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, {value: 0x2afd, lo: 0xbe, hi: 0xbf}, - // Block 0x65, offset 0x346 + // Block 0x64, offset 0x32b {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x66, offset 0x34a + // Block 0x65, offset 0x32f {value: 0x0030, lo: 0x04}, {value: 0x2aa2, lo: 0x80, hi: 0x9d}, {value: 0x305a, lo: 0x9e, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, {value: 0x30a2, lo: 0xa0, hi: 0xbf}, - // Block 0x67, offset 0x34f + // Block 0x66, offset 0x334 {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x68, offset 0x352 + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0x67, offset 0x337 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x69, offset 0x356 + // Block 0x68, offset 0x33b {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xbd}, {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x6a, offset 0x35b + // Block 0x69, offset 0x340 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xbf}, - // Block 0x6b, offset 0x360 + // Block 0x6a, offset 0x345 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0xa5}, {value: 0x0018, lo: 0xa6, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb0, hi: 0xb1}, {value: 0x0018, lo: 0xb2, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6c, offset 0x366 + // Block 0x6b, offset 0x34b {value: 0x0000, lo: 0x05}, {value: 0x0040, lo: 0x80, hi: 0xb6}, {value: 0x0008, lo: 0xb7, hi: 0xb7}, {value: 0x2009, lo: 0xb8, hi: 0xb8}, {value: 0x6e89, lo: 0xb9, hi: 0xb9}, {value: 0x0008, lo: 0xba, hi: 0xbf}, - // Block 0x6d, offset 0x36c + // Block 0x6c, offset 0x351 {value: 0x0000, lo: 0x0e}, {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0x85}, - {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, {value: 0x0008, lo: 0x87, hi: 0x8a}, - {value: 0x1308, lo: 0x8b, hi: 0x8b}, + {value: 0x3308, lo: 0x8b, hi: 0x8b}, {value: 0x0008, lo: 0x8c, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa6}, - {value: 0x1008, lo: 0xa7, hi: 0xa7}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, {value: 0x0018, lo: 0xa8, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x6e, offset 0x37b + // Block 0x6d, offset 0x360 {value: 0x0000, lo: 0x05}, {value: 0x0208, lo: 0x80, hi: 0xb1}, {value: 0x0108, lo: 0xb2, hi: 0xb2}, {value: 0x0008, lo: 0xb3, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6f, offset 0x381 + // Block 0x6e, offset 0x366 {value: 0x0000, lo: 0x03}, - {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x80, hi: 0x81}, {value: 0x0008, lo: 0x82, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xbf}, - // Block 0x70, offset 0x385 + {value: 0x3008, lo: 0xb4, hi: 0xbf}, + // Block 0x6f, offset 0x36a {value: 0x0000, lo: 0x0e}, - {value: 0x1008, lo: 0x80, hi: 0x83}, - {value: 0x1b08, lo: 0x84, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x85}, + {value: 0x3008, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0x8d}, {value: 0x0018, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xb1}, + {value: 0x3308, lo: 0xa0, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xb7}, {value: 0x0018, lo: 0xb8, hi: 0xba}, {value: 0x0008, lo: 0xbb, hi: 0xbb}, {value: 0x0018, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x71, offset 0x394 + // Block 0x70, offset 0x379 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xad}, + {value: 0x3308, lo: 0xa6, hi: 0xad}, {value: 0x0018, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x72, offset 0x399 + // Block 0x71, offset 0x37e {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x1308, lo: 0x87, hi: 0x91}, - {value: 0x1008, lo: 0x92, hi: 0x92}, - {value: 0x1808, lo: 0x93, hi: 0x93}, + {value: 0x3308, lo: 0x87, hi: 0x91}, + {value: 0x3008, lo: 0x92, hi: 0x92}, + {value: 0x3808, lo: 0x93, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x73, offset 0x3a1 + // Block 0x72, offset 0x386 {value: 0x0000, lo: 0x09}, - {value: 0x1308, lo: 0x80, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xb9}, - {value: 0x1008, lo: 0xba, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, - {value: 0x1008, lo: 0xbd, hi: 0xbf}, - // Block 0x74, offset 0x3ab + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb9}, + {value: 0x3008, lo: 0xba, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x73, offset 0x390 {value: 0x0000, lo: 0x0a}, - {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x3808, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8e}, {value: 0x0008, lo: 0x8f, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa5}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x75, offset 0x3b6 + // Block 0x74, offset 0x39b {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xa8}, - {value: 0x1308, lo: 0xa9, hi: 0xae}, - {value: 0x1008, lo: 0xaf, hi: 0xb0}, - {value: 0x1308, lo: 0xb1, hi: 0xb2}, - {value: 0x1008, lo: 0xb3, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x3308, lo: 0xa9, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x76, offset 0x3be + // Block 0x75, offset 0x3a3 {value: 0x0000, lo: 0x10}, {value: 0x0008, lo: 0x80, hi: 0x82}, - {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0x8b}, - {value: 0x1308, lo: 0x8c, hi: 0x8c}, - {value: 0x1008, lo: 0x8d, hi: 0x8d}, + {value: 0x3308, lo: 0x8c, hi: 0x8c}, + {value: 0x3008, lo: 0x8d, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9b}, @@ -3430,38 +3435,38 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa0, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xb9}, {value: 0x0008, lo: 0xba, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, - {value: 0x1008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbd}, {value: 0x0008, lo: 0xbe, hi: 0xbf}, - // Block 0x77, offset 0x3cf + // Block 0x76, offset 0x3b4 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb0}, + {value: 0x3308, lo: 0xb0, hi: 0xb0}, {value: 0x0008, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb4}, + {value: 0x3308, lo: 0xb2, hi: 0xb4}, {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xb8}, + {value: 0x3308, lo: 0xb7, hi: 0xb8}, {value: 0x0008, lo: 0xb9, hi: 0xbd}, - {value: 0x1308, lo: 0xbe, hi: 0xbf}, - // Block 0x78, offset 0x3d8 + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x77, offset 0x3bd {value: 0x0000, lo: 0x0f}, {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x3308, lo: 0x81, hi: 0x81}, {value: 0x0008, lo: 0x82, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x9a}, {value: 0x0008, lo: 0x9b, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xaa}, - {value: 0x1008, lo: 0xab, hi: 0xab}, - {value: 0x1308, lo: 0xac, hi: 0xad}, - {value: 0x1008, lo: 0xae, hi: 0xaf}, + {value: 0x3008, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xb4}, - {value: 0x1008, lo: 0xb5, hi: 0xb5}, - {value: 0x1b08, lo: 0xb6, hi: 0xb6}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3b08, lo: 0xb6, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x79, offset 0x3e8 + // Block 0x78, offset 0x3cd {value: 0x0000, lo: 0x0c}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0x86}, @@ -3475,7 +3480,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa8, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x7a, offset 0x3f5 + // Block 0x79, offset 0x3da {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x9a}, {value: 0x0018, lo: 0x9b, hi: 0x9b}, @@ -3486,54 +3491,54 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa0, hi: 0xa5}, {value: 0x0040, lo: 0xa6, hi: 0xaf}, {value: 0x4495, lo: 0xb0, hi: 0xbf}, - // Block 0x7b, offset 0x3ff + // Block 0x7a, offset 0x3e4 {value: 0x0000, lo: 0x04}, {value: 0x44b5, lo: 0x80, hi: 0x8f}, {value: 0x44d5, lo: 0x90, hi: 0x9f}, {value: 0x44f5, lo: 0xa0, hi: 0xaf}, {value: 0x44d5, lo: 0xb0, hi: 0xbf}, - // Block 0x7c, offset 0x404 + // Block 0x7b, offset 0x3e9 {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa5}, - {value: 0x1008, lo: 0xa6, hi: 0xa7}, - {value: 0x1308, lo: 0xa8, hi: 0xa8}, - {value: 0x1008, lo: 0xa9, hi: 0xaa}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xaa}, {value: 0x0018, lo: 0xab, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xac}, - {value: 0x1b08, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3b08, lo: 0xad, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x7d, offset 0x411 + // Block 0x7c, offset 0x3f6 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x7e, offset 0x415 + // Block 0x7d, offset 0x3fa {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x8a}, {value: 0x0018, lo: 0x8b, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x7f, offset 0x41a + // Block 0x7e, offset 0x3ff {value: 0x0020, lo: 0x01}, {value: 0x4515, lo: 0x80, hi: 0xbf}, - // Block 0x80, offset 0x41c + // Block 0x7f, offset 0x401 {value: 0x0020, lo: 0x03}, {value: 0x4d15, lo: 0x80, hi: 0x94}, {value: 0x4ad5, lo: 0x95, hi: 0x95}, {value: 0x4fb5, lo: 0x96, hi: 0xbf}, - // Block 0x81, offset 0x420 + // Block 0x80, offset 0x405 {value: 0x0020, lo: 0x01}, {value: 0x54f5, lo: 0x80, hi: 0xbf}, - // Block 0x82, offset 0x422 + // Block 0x81, offset 0x407 {value: 0x0020, lo: 0x03}, {value: 0x5cf5, lo: 0x80, hi: 0x84}, {value: 0x5655, lo: 0x85, hi: 0x85}, {value: 0x5d95, lo: 0x86, hi: 0xbf}, - // Block 0x83, offset 0x426 + // Block 0x82, offset 0x40b {value: 0x0020, lo: 0x08}, {value: 0x6b55, lo: 0x80, hi: 0x8f}, {value: 0x6d15, lo: 0x90, hi: 0x90}, @@ -3543,19 +3548,19 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xae, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x70d5, lo: 0xb0, hi: 0xbf}, - // Block 0x84, offset 0x42f + // Block 0x83, offset 0x414 {value: 0x0020, lo: 0x05}, {value: 0x72d5, lo: 0x80, hi: 0xad}, {value: 0x6535, lo: 0xae, hi: 0xae}, {value: 0x7895, lo: 0xaf, hi: 0xb5}, {value: 0x6f55, lo: 0xb6, hi: 0xb6}, {value: 0x7975, lo: 0xb7, hi: 0xbf}, - // Block 0x85, offset 0x435 + // Block 0x84, offset 0x41a {value: 0x0028, lo: 0x03}, {value: 0x7c21, lo: 0x80, hi: 0x82}, {value: 0x7be1, lo: 0x83, hi: 0x83}, {value: 0x7c99, lo: 0x84, hi: 0xbf}, - // Block 0x86, offset 0x439 + // Block 0x85, offset 0x41e {value: 0x0038, lo: 0x0f}, {value: 0x9db1, lo: 0x80, hi: 0x83}, {value: 0x9e59, lo: 0x84, hi: 0x85}, @@ -3572,7 +3577,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xa869, lo: 0xbc, hi: 0xbc}, {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, - // Block 0x87, offset 0x449 + // Block 0x86, offset 0x42e {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8c}, @@ -3583,24 +3588,24 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xbc, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbe}, {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x88, offset 0x453 + // Block 0x87, offset 0x438 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0x89, offset 0x458 + // Block 0x88, offset 0x43d {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x8a, offset 0x45b + // Block 0x89, offset 0x440 {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x86}, {value: 0x0018, lo: 0x87, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x8b, offset 0x461 + // Block 0x8a, offset 0x446 {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x8e}, {value: 0x0040, lo: 0x8f, hi: 0x8f}, @@ -3608,31 +3613,31 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x9c, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xa0}, {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0x8c, offset 0x468 + // Block 0x8b, offset 0x44d {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbc}, - {value: 0x1308, lo: 0xbd, hi: 0xbd}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x8d, offset 0x46d + // Block 0x8c, offset 0x452 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0x9c}, {value: 0x0040, lo: 0x9d, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x8e, offset 0x471 + // Block 0x8d, offset 0x456 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xa0}, + {value: 0x3308, lo: 0xa0, hi: 0xa0}, {value: 0x0018, lo: 0xa1, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x8f, offset 0x477 + // Block 0x8e, offset 0x45c {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x90, offset 0x47c + {value: 0x0040, lo: 0xa4, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xbf}, + // Block 0x8f, offset 0x461 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x81}, @@ -3640,22 +3645,22 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0x8a, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xba}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x91, offset 0x485 + // Block 0x90, offset 0x46a {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x92, offset 0x48a + // Block 0x91, offset 0x46f {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x87}, {value: 0x0008, lo: 0x88, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x93, offset 0x490 + // Block 0x92, offset 0x475 {value: 0x0000, lo: 0x06}, {value: 0xe145, lo: 0x80, hi: 0x87}, {value: 0xe1c5, lo: 0x88, hi: 0x8f}, @@ -3663,7 +3668,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x8ad5, lo: 0x98, hi: 0x9f}, {value: 0x8aed, lo: 0xa0, hi: 0xa7}, {value: 0x0008, lo: 0xa8, hi: 0xbf}, - // Block 0x94, offset 0x497 + // Block 0x93, offset 0x47c {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, @@ -3671,7 +3676,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xaa, hi: 0xaf}, {value: 0x8aed, lo: 0xb0, hi: 0xb7}, {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, - // Block 0x95, offset 0x49e + // Block 0x94, offset 0x483 {value: 0x0000, lo: 0x06}, {value: 0xe145, lo: 0x80, hi: 0x87}, {value: 0xe1c5, lo: 0x88, hi: 0x8f}, @@ -3679,173 +3684,176 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x94, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x96, offset 0x4a5 + // Block 0x95, offset 0x48a {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x97, offset 0x4a9 + // Block 0x96, offset 0x48e {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xae}, {value: 0x0018, lo: 0xaf, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x98, offset 0x4ae + // Block 0x97, offset 0x493 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x99, offset 0x4b1 + // Block 0x98, offset 0x496 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xbf}, - // Block 0x9a, offset 0x4b6 + // Block 0x99, offset 0x49b {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x85}, + {value: 0x0808, lo: 0x80, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0808, lo: 0x88, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0xb5}, + {value: 0x0808, lo: 0x8a, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb6}, - {value: 0x0008, lo: 0xb7, hi: 0xb8}, + {value: 0x0808, lo: 0xb7, hi: 0xb8}, {value: 0x0040, lo: 0xb9, hi: 0xbb}, - {value: 0x0008, lo: 0xbc, hi: 0xbc}, + {value: 0x0808, lo: 0xbc, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x9b, offset 0x4c2 + {value: 0x0808, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x4a7 {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0808, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x96}, - {value: 0x0018, lo: 0x97, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x9c, offset 0x4c8 + {value: 0x0818, lo: 0x97, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb6}, + {value: 0x0818, lo: 0xb7, hi: 0xbf}, + // Block 0x9b, offset 0x4ad {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0808, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0xa6}, - {value: 0x0018, lo: 0xa7, hi: 0xaf}, + {value: 0x0818, lo: 0xa7, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x9d, offset 0x4cd + // Block 0x9c, offset 0x4b2 {value: 0x0000, lo: 0x06}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xb3}, - {value: 0x0008, lo: 0xb4, hi: 0xb5}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbf}, - // Block 0x9e, offset 0x4d4 + {value: 0x0818, lo: 0xbb, hi: 0xbf}, + // Block 0x9d, offset 0x4b9 {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0018, lo: 0x96, hi: 0x9b}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0818, lo: 0x96, hi: 0x9b}, {value: 0x0040, lo: 0x9c, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb9}, + {value: 0x0808, lo: 0xa0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0x9f, offset 0x4dc + {value: 0x0818, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x4c1 {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xb7}, + {value: 0x0808, lo: 0x80, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbb}, - {value: 0x0018, lo: 0xbc, hi: 0xbd}, - {value: 0x0008, lo: 0xbe, hi: 0xbf}, - // Block 0xa0, offset 0x4e1 + {value: 0x0818, lo: 0xbc, hi: 0xbd}, + {value: 0x0808, lo: 0xbe, hi: 0xbf}, + // Block 0x9f, offset 0x4c6 {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0x0818, lo: 0x80, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x0018, lo: 0x92, hi: 0xbf}, - // Block 0xa1, offset 0x4e5 + {value: 0x0818, lo: 0x92, hi: 0xbf}, + // Block 0xa0, offset 0x4ca {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x83}, + {value: 0x0808, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x3308, lo: 0x85, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x8b}, - {value: 0x1308, lo: 0x8c, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x93}, + {value: 0x3308, lo: 0x8c, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x94}, - {value: 0x0008, lo: 0x95, hi: 0x97}, + {value: 0x0808, lo: 0x95, hi: 0x97}, {value: 0x0040, lo: 0x98, hi: 0x98}, - {value: 0x0008, lo: 0x99, hi: 0xb3}, + {value: 0x0808, lo: 0x99, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xba}, + {value: 0x3308, lo: 0xb8, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xa2, offset 0x4f5 + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa1, offset 0x4da {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0818, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x98}, + {value: 0x0818, lo: 0x90, hi: 0x98}, {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbc}, - {value: 0x0018, lo: 0xbd, hi: 0xbf}, - // Block 0xa3, offset 0x4fc + {value: 0x0808, lo: 0xa0, hi: 0xbc}, + {value: 0x0818, lo: 0xbd, hi: 0xbf}, + // Block 0xa2, offset 0x4e1 {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xa4, offset 0x500 + // Block 0xa3, offset 0x4e5 {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0808, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb8}, {value: 0x0018, lo: 0xb9, hi: 0xbf}, - // Block 0xa5, offset 0x504 + // Block 0xa4, offset 0x4e9 {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0808, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0018, lo: 0x98, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0818, lo: 0x98, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xbf}, - // Block 0xa6, offset 0x50b + {value: 0x0818, lo: 0xb8, hi: 0xbf}, + // Block 0xa5, offset 0x4f0 + {value: 0x0000, lo: 0x01}, + {value: 0x0808, lo: 0x80, hi: 0xbf}, + // Block 0xa6, offset 0x4f2 {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0808, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0xa7, offset 0x50e + // Block 0xa7, offset 0x4f5 {value: 0x0000, lo: 0x02}, {value: 0x03dd, lo: 0x80, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xa8, offset 0x511 + // Block 0xa8, offset 0x4f8 {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0808, lo: 0x80, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbf}, - // Block 0xa9, offset 0x515 + {value: 0x0818, lo: 0xba, hi: 0xbf}, + // Block 0xa9, offset 0x4fc {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbe}, + {value: 0x0818, lo: 0xa0, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xaa, offset 0x519 + // Block 0xaa, offset 0x500 {value: 0x0000, lo: 0x05}, - {value: 0x1008, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x51f + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x506 {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x85}, - {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x80, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, {value: 0x0018, lo: 0x87, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x91}, {value: 0x0018, lo: 0x92, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xac, offset 0x528 + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xac, offset 0x50f {value: 0x0000, lo: 0x0b}, - {value: 0x1308, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb6}, - {value: 0x1008, lo: 0xb7, hi: 0xb8}, - {value: 0x1b08, lo: 0xb9, hi: 0xb9}, - {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, {value: 0x0018, lo: 0xbb, hi: 0xbc}, {value: 0x0340, lo: 0xbd, hi: 0xbd}, {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0xad, offset 0x534 + // Block 0xad, offset 0x51b {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x81}, {value: 0x0040, lo: 0x82, hi: 0x8f}, @@ -3853,39 +3861,39 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xa9, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xae, offset 0x53b + // Block 0xae, offset 0x522 {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xa6}, - {value: 0x1308, lo: 0xa7, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xb2}, - {value: 0x1b08, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xa7, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb2}, + {value: 0x3b08, lo: 0xb3, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xb5}, {value: 0x0008, lo: 0xb6, hi: 0xbf}, - // Block 0xaf, offset 0x544 + // Block 0xaf, offset 0x52b {value: 0x0000, lo: 0x07}, {value: 0x0018, lo: 0x80, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb3}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xb5}, {value: 0x0008, lo: 0xb6, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xb0, offset 0x54c + // Block 0xb0, offset 0x533 {value: 0x0000, lo: 0x06}, - {value: 0x1308, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xb2}, - {value: 0x1008, lo: 0xb3, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xbe}, - {value: 0x1008, lo: 0xbf, hi: 0xbf}, - // Block 0xb1, offset 0x553 + {value: 0x3008, lo: 0xb3, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xbe}, + {value: 0x3008, lo: 0xbf, hi: 0xbf}, + // Block 0xb1, offset 0x53a {value: 0x0000, lo: 0x0d}, - {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x3808, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0x84}, {value: 0x0018, lo: 0x85, hi: 0x89}, - {value: 0x1308, lo: 0x8a, hi: 0x8c}, + {value: 0x3308, lo: 0x8a, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x9a}, @@ -3895,21 +3903,21 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xa0, hi: 0xa0}, {value: 0x0018, lo: 0xa1, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xb2, offset 0x561 + // Block 0xb2, offset 0x548 {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x91}, {value: 0x0040, lo: 0x92, hi: 0x92}, {value: 0x0008, lo: 0x93, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xae}, - {value: 0x1308, lo: 0xaf, hi: 0xb1}, - {value: 0x1008, lo: 0xb2, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb4}, - {value: 0x1808, lo: 0xb5, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3808, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, {value: 0x0018, lo: 0xb8, hi: 0xbd}, - {value: 0x1308, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbe, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x56e + // Block 0xb3, offset 0x555 {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, @@ -3923,28 +3931,28 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0xa9, hi: 0xa9}, {value: 0x0040, lo: 0xaa, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0xb4, offset 0x57b + // Block 0xb4, offset 0x562 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x1308, lo: 0x9f, hi: 0x9f}, - {value: 0x1008, lo: 0xa0, hi: 0xa2}, - {value: 0x1308, lo: 0xa3, hi: 0xa9}, - {value: 0x1b08, lo: 0xaa, hi: 0xaa}, + {value: 0x3308, lo: 0x9f, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa9}, + {value: 0x3b08, lo: 0xaa, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xb5, offset 0x584 + // Block 0xb5, offset 0x56b {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x1008, lo: 0xb5, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xbf}, - // Block 0xb6, offset 0x588 + {value: 0x3008, lo: 0xb5, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xb6, offset 0x56f {value: 0x0000, lo: 0x0d}, - {value: 0x1008, lo: 0x80, hi: 0x81}, - {value: 0x1b08, lo: 0x82, hi: 0x82}, - {value: 0x1308, lo: 0x83, hi: 0x84}, - {value: 0x1008, lo: 0x85, hi: 0x85}, - {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, {value: 0x0008, lo: 0x87, hi: 0x8a}, {value: 0x0018, lo: 0x8b, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, @@ -3953,56 +3961,56 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x9c, hi: 0x9c}, {value: 0x0018, lo: 0x9d, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xb7, offset 0x596 + // Block 0xb7, offset 0x57d {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb8}, - {value: 0x1008, lo: 0xb9, hi: 0xb9}, - {value: 0x1308, lo: 0xba, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbe}, - {value: 0x1308, lo: 0xbf, hi: 0xbf}, - // Block 0xb8, offset 0x59e + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xb8, offset 0x585 {value: 0x0000, lo: 0x0a}, - {value: 0x1308, lo: 0x80, hi: 0x80}, - {value: 0x1008, lo: 0x81, hi: 0x81}, - {value: 0x1b08, lo: 0x82, hi: 0x82}, - {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0x85}, {value: 0x0018, lo: 0x86, hi: 0x86}, {value: 0x0008, lo: 0x87, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xb9, offset 0x5a9 + // Block 0xb9, offset 0x590 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x1008, lo: 0xaf, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb5}, + {value: 0x3008, lo: 0xaf, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0x1008, lo: 0xb8, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xba, offset 0x5b2 + {value: 0x3008, lo: 0xb8, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xba, offset 0x599 {value: 0x0000, lo: 0x05}, - {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0x9b}, - {value: 0x1308, lo: 0x9c, hi: 0x9d}, + {value: 0x3308, lo: 0x9c, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xbb, offset 0x5b8 + // Block 0xbb, offset 0x59f {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbc}, - {value: 0x1308, lo: 0xbd, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xbc, offset 0x5c0 + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbc, offset 0x5a7 {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x8f}, @@ -4010,60 +4018,97 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xbd, offset 0x5c9 + // Block 0xbd, offset 0x5b0 {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x1308, lo: 0xab, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xad}, - {value: 0x1008, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb5}, - {value: 0x1808, lo: 0xb6, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb5}, + {value: 0x3808, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0xbe, offset 0x5d3 + // Block 0xbe, offset 0x5ba {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0xbf}, - // Block 0xbf, offset 0x5d6 + // Block 0xbf, offset 0x5bd {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9f}, - {value: 0x1008, lo: 0xa0, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa5}, - {value: 0x1008, lo: 0xa6, hi: 0xa6}, - {value: 0x1308, lo: 0xa7, hi: 0xaa}, - {value: 0x1b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0018, lo: 0xba, hi: 0xbf}, - // Block 0xc0, offset 0x5e2 + // Block 0xc0, offset 0x5c9 {value: 0x0000, lo: 0x02}, {value: 0x0040, lo: 0x80, hi: 0x9f}, {value: 0x049d, lo: 0xa0, hi: 0xbf}, - // Block 0xc1, offset 0x5e5 + // Block 0xc1, offset 0x5cc {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xa9}, {value: 0x0018, lo: 0xaa, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xbe}, {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0xc2, offset 0x5ea + // Block 0xc2, offset 0x5d1 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0xc3, offset 0x5de + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x3b08, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0xbf}, + // Block 0xc4, offset 0x5e7 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x89}, + {value: 0x3308, lo: 0x8a, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x98}, + {value: 0x3b08, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xa2}, + {value: 0x0040, lo: 0xa3, hi: 0xbf}, + // Block 0xc5, offset 0x5f3 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb8}, {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0xc3, offset 0x5ed + // Block 0xc6, offset 0x5f6 {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, {value: 0x0008, lo: 0x8a, hi: 0xae}, - {value: 0x1008, lo: 0xaf, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x3008, lo: 0xaf, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xc4, offset 0x5f7 + {value: 0x3308, lo: 0xb8, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xc7, offset 0x600 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x85}, @@ -4073,42 +4118,65 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xad, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xbf}, - // Block 0xc5, offset 0x600 + // Block 0xc8, offset 0x609 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0xa7}, + {value: 0x3308, lo: 0x92, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xa8}, - {value: 0x1008, lo: 0xa9, hi: 0xa9}, - {value: 0x1308, lo: 0xaa, hi: 0xb0}, - {value: 0x1008, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x3008, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xaa, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xc6, offset 0x60c + // Block 0xc9, offset 0x615 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xca, offset 0x622 + {value: 0x0000, lo: 0x07}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xcb, offset 0x62a {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xc7, offset 0x60f + // Block 0xcc, offset 0x62d {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xc8, offset 0x614 + // Block 0xcd, offset 0x632 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0xbf}, - // Block 0xc9, offset 0x617 + // Block 0xce, offset 0x635 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xbf}, - // Block 0xca, offset 0x61a + // Block 0xcf, offset 0x638 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0xbf}, - // Block 0xcb, offset 0x61d + // Block 0xd0, offset 0x63b {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, @@ -4116,20 +4184,20 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xaa, hi: 0xad}, {value: 0x0018, lo: 0xae, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xcc, offset 0x624 + // Block 0xd1, offset 0x642 {value: 0x0000, lo: 0x06}, {value: 0x0040, lo: 0x80, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb4}, + {value: 0x3308, lo: 0xb0, hi: 0xb4}, {value: 0x0018, lo: 0xb5, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xcd, offset 0x62b + // Block 0xd2, offset 0x649 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0xce, offset 0x62f + // Block 0xd3, offset 0x64d {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x83}, {value: 0x0018, lo: 0x84, hi: 0x85}, @@ -4141,67 +4209,75 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa3, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0xcf, offset 0x63a + // Block 0xd4, offset 0x658 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0xbf}, - // Block 0xd0, offset 0x63d + // Block 0xd5, offset 0x65b {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x1008, lo: 0x91, hi: 0xbe}, + {value: 0x3008, lo: 0x91, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xd1, offset 0x643 + // Block 0xd6, offset 0x661 {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x8e}, - {value: 0x1308, lo: 0x8f, hi: 0x92}, + {value: 0x3308, lo: 0x8f, hi: 0x92}, {value: 0x0008, lo: 0x93, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xd2, offset 0x648 + // Block 0xd7, offset 0x666 {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0xd3, offset 0x64c + {value: 0x0008, lo: 0xa0, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xd8, offset 0x66a {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xd4, offset 0x64f + // Block 0xd9, offset 0x66d {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xd5, offset 0x652 + // Block 0xda, offset 0x670 {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0xbf}, - // Block 0xd6, offset 0x655 + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xdb, offset 0x673 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xdc, offset 0x676 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0xdd, offset 0x679 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0xd7, offset 0x65a + // Block 0xde, offset 0x67e {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9b}, {value: 0x0018, lo: 0x9c, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9e}, + {value: 0x3308, lo: 0x9d, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0x9f}, {value: 0x03c0, lo: 0xa0, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xbf}, - // Block 0xd8, offset 0x664 + // Block 0xdf, offset 0x688 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xd9, offset 0x667 + // Block 0xe0, offset 0x68b {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xa6}, {value: 0x0040, lo: 0xa7, hi: 0xa8}, {value: 0x0018, lo: 0xa9, hi: 0xbf}, - // Block 0xda, offset 0x66b + // Block 0xe1, offset 0x68f {value: 0x0000, lo: 0x0e}, {value: 0x0018, lo: 0x80, hi: 0x9d}, {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, @@ -4211,127 +4287,127 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xb719, lo: 0xa2, hi: 0xa2}, {value: 0xb781, lo: 0xa3, hi: 0xa3}, {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, - {value: 0x1018, lo: 0xa5, hi: 0xa6}, - {value: 0x1318, lo: 0xa7, hi: 0xa9}, + {value: 0x3018, lo: 0xa5, hi: 0xa6}, + {value: 0x3318, lo: 0xa7, hi: 0xa9}, {value: 0x0018, lo: 0xaa, hi: 0xac}, - {value: 0x1018, lo: 0xad, hi: 0xb2}, + {value: 0x3018, lo: 0xad, hi: 0xb2}, {value: 0x0340, lo: 0xb3, hi: 0xba}, - {value: 0x1318, lo: 0xbb, hi: 0xbf}, - // Block 0xdb, offset 0x67a + {value: 0x3318, lo: 0xbb, hi: 0xbf}, + // Block 0xe2, offset 0x69e {value: 0x0000, lo: 0x0b}, - {value: 0x1318, lo: 0x80, hi: 0x82}, + {value: 0x3318, lo: 0x80, hi: 0x82}, {value: 0x0018, lo: 0x83, hi: 0x84}, - {value: 0x1318, lo: 0x85, hi: 0x8b}, + {value: 0x3318, lo: 0x85, hi: 0x8b}, {value: 0x0018, lo: 0x8c, hi: 0xa9}, - {value: 0x1318, lo: 0xaa, hi: 0xad}, + {value: 0x3318, lo: 0xaa, hi: 0xad}, {value: 0x0018, lo: 0xae, hi: 0xba}, {value: 0xb851, lo: 0xbb, hi: 0xbb}, {value: 0xb899, lo: 0xbc, hi: 0xbc}, {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, {value: 0xb949, lo: 0xbe, hi: 0xbe}, {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, - // Block 0xdc, offset 0x686 + // Block 0xe3, offset 0x6aa {value: 0x0000, lo: 0x03}, {value: 0xba19, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0xa8}, {value: 0x0040, lo: 0xa9, hi: 0xbf}, - // Block 0xdd, offset 0x68a + // Block 0xe4, offset 0x6ae {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x1318, lo: 0x82, hi: 0x84}, + {value: 0x3318, lo: 0x82, hi: 0x84}, {value: 0x0018, lo: 0x85, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0xbf}, - // Block 0xde, offset 0x68f + // Block 0xe5, offset 0x6b3 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xb1}, {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xdf, offset 0x694 + // Block 0xe6, offset 0x6b8 {value: 0x0000, lo: 0x03}, - {value: 0x1308, lo: 0x80, hi: 0xb6}, + {value: 0x3308, lo: 0x80, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xba}, - {value: 0x1308, lo: 0xbb, hi: 0xbf}, - // Block 0xe0, offset 0x698 + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0xe7, offset 0x6bc {value: 0x0000, lo: 0x04}, - {value: 0x1308, lo: 0x80, hi: 0xac}, + {value: 0x3308, lo: 0x80, hi: 0xac}, {value: 0x0018, lo: 0xad, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0xe1, offset 0x69d + // Block 0xe8, offset 0x6c1 {value: 0x0000, lo: 0x08}, {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x1308, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x84, hi: 0x84}, {value: 0x0018, lo: 0x85, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0x9f}, + {value: 0x3308, lo: 0x9b, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x1308, lo: 0xa1, hi: 0xaf}, + {value: 0x3308, lo: 0xa1, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xe2, offset 0x6a6 + // Block 0xe9, offset 0x6ca {value: 0x0000, lo: 0x0a}, - {value: 0x1308, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x1308, lo: 0x88, hi: 0x98}, + {value: 0x3308, lo: 0x88, hi: 0x98}, {value: 0x0040, lo: 0x99, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0xa1}, + {value: 0x3308, lo: 0x9b, hi: 0xa1}, {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x1308, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa3, hi: 0xa4}, {value: 0x0040, lo: 0xa5, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xaa}, + {value: 0x3308, lo: 0xa6, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xbf}, - // Block 0xe3, offset 0x6b1 + // Block 0xea, offset 0x6d5 {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0808, lo: 0x80, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0x8f}, - {value: 0x1308, lo: 0x90, hi: 0x96}, + {value: 0x0818, lo: 0x87, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xe4, offset 0x6b7 + // Block 0xeb, offset 0x6db {value: 0x0000, lo: 0x07}, - {value: 0x0208, lo: 0x80, hi: 0x83}, - {value: 0x1308, lo: 0x84, hi: 0x8a}, + {value: 0x0a08, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0808, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0818, lo: 0x9e, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xe5, offset 0x6bf + // Block 0xec, offset 0x6e3 {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb1}, {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xe6, offset 0x6c3 + // Block 0xed, offset 0x6e7 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0xe7, offset 0x6c7 + // Block 0xee, offset 0x6eb {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xb0}, {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0xe8, offset 0x6cd + // Block 0xef, offset 0x6f1 {value: 0x0000, lo: 0x05}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x90}, {value: 0x0018, lo: 0x91, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xe9, offset 0x6d3 + // Block 0xf0, offset 0x6f7 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x8f}, {value: 0xc1c1, lo: 0x90, hi: 0x90}, {value: 0x0018, lo: 0x91, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xea, offset 0x6d8 + // Block 0xf1, offset 0x6fc {value: 0x0000, lo: 0x02}, {value: 0x0040, lo: 0x80, hi: 0xa5}, {value: 0x0018, lo: 0xa6, hi: 0xbf}, - // Block 0xeb, offset 0x6db - {value: 0x0000, lo: 0x0d}, + // Block 0xf2, offset 0x6ff + {value: 0x0000, lo: 0x0f}, {value: 0xc7e9, lo: 0x80, hi: 0x80}, {value: 0xc839, lo: 0x81, hi: 0x81}, {value: 0xc889, lo: 0x82, hi: 0x82}, @@ -4344,84 +4420,88 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x89, hi: 0x8f}, {value: 0xcab9, lo: 0x90, hi: 0x90}, {value: 0xcad9, lo: 0x91, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xbf}, - // Block 0xec, offset 0x6e9 + {value: 0x0040, lo: 0x92, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xbf}, + // Block 0xf3, offset 0x70f {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x92}, - {value: 0x0040, lo: 0x93, hi: 0x9f}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xed, offset 0x6f0 + {value: 0x0018, lo: 0xb0, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xf4, offset 0x716 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0xee, offset 0x6f3 + // Block 0xf5, offset 0x719 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0x94}, {value: 0x0040, lo: 0x95, hi: 0xbf}, - // Block 0xef, offset 0x6f6 + // Block 0xf6, offset 0x71c {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0xf0, offset 0x6fa + // Block 0xf7, offset 0x720 {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0xf1, offset 0x700 + // Block 0xf8, offset 0x726 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xbf}, - // Block 0xf2, offset 0x705 - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb2}, - {value: 0x0018, lo: 0xb3, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xf3, offset 0x70f + // Block 0xf9, offset 0x72b {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xf4, offset 0x714 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xbf}, - // Block 0xf5, offset 0x717 + {value: 0x0018, lo: 0x90, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xfa, offset 0x730 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0xfb, offset 0x735 {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xbf}, + // Block 0xfc, offset 0x738 + {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0xbf}, - // Block 0xf6, offset 0x71a + {value: 0x0040, lo: 0x81, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0xfd, offset 0x73d {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xf7, offset 0x71d + // Block 0xfe, offset 0x740 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xf8, offset 0x720 + // Block 0xff, offset 0x743 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0xf9, offset 0x724 - {value: 0x0000, lo: 0x02}, + // Block 0x100, offset 0x747 + {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xbf}, - // Block 0xfa, offset 0x727 + {value: 0x0040, lo: 0xa2, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x101, offset 0x74b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x102, offset 0x74e {value: 0x0020, lo: 0x0f}, {value: 0xdeb9, lo: 0x80, hi: 0x89}, {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, @@ -4438,7 +4518,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xe4f9, lo: 0xba, hi: 0xba}, {value: 0x8edd, lo: 0xbb, hi: 0xbb}, {value: 0xe519, lo: 0xbc, hi: 0xbf}, - // Block 0xfb, offset 0x737 + // Block 0x103, offset 0x75e {value: 0x0020, lo: 0x10}, {value: 0x937d, lo: 0x80, hi: 0x80}, {value: 0xf099, lo: 0x81, hi: 0x86}, @@ -4455,23 +4535,23 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xf4d9, lo: 0xae, hi: 0xaf}, {value: 0x94dd, lo: 0xb0, hi: 0xb1}, {value: 0xf519, lo: 0xb2, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xfc, offset 0x748 + {value: 0x2040, lo: 0xbf, hi: 0xbf}, + // Block 0x104, offset 0x76f {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0340, lo: 0x81, hi: 0x81}, {value: 0x0040, lo: 0x82, hi: 0x9f}, {value: 0x0340, lo: 0xa0, hi: 0xbf}, - // Block 0xfd, offset 0x74d + // Block 0x105, offset 0x774 {value: 0x0000, lo: 0x01}, {value: 0x0340, lo: 0x80, hi: 0xbf}, - // Block 0xfe, offset 0x74f + // Block 0x106, offset 0x776 {value: 0x0000, lo: 0x01}, - {value: 0x13c0, lo: 0x80, hi: 0xbf}, - // Block 0xff, offset 0x751 + {value: 0x33c0, lo: 0x80, hi: 0xbf}, + // Block 0x107, offset 0x778 {value: 0x0000, lo: 0x02}, - {value: 0x13c0, lo: 0x80, hi: 0xaf}, + {value: 0x33c0, lo: 0x80, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, } -// Total table size 41559 bytes (40KiB); checksum: F4A1FA4E +// Total table size 42115 bytes (41KiB); checksum: F4A1FA4E diff --git a/vendor/golang.org/x/net/idna/trieval.go b/vendor/golang.org/x/net/idna/trieval.go index 63cb03b59..7a8cf889b 100644 --- a/vendor/golang.org/x/net/idna/trieval.go +++ b/vendor/golang.org/x/net/idna/trieval.go @@ -26,9 +26,9 @@ package idna // 15..3 index into xor or mapping table // } // } else { -// 15..13 unused -// 12 modifier (including virama) -// 11 virama modifier +// 15..14 unused +// 13 mayNeedNorm +// 12..11 attributes // 10..8 joining type // 7..3 category type // } @@ -49,15 +49,20 @@ const ( joinShift = 8 joinMask = 0x07 - viramaModifier = 0x0800 + // Attributes + attributesMask = 0x1800 + viramaModifier = 0x1800 modifier = 0x1000 + rtl = 0x0800 + + mayNeedNorm = 0x2000 ) // A category corresponds to a category defined in the IDNA mapping table. type category uint16 const ( - unknown category = 0 // not defined currently in unicode. + unknown category = 0 // not currently defined in unicode. mapped category = 1 disallowedSTD3Mapped category = 2 deviation category = 3 @@ -110,5 +115,5 @@ func (c info) isModifier() bool { } func (c info) isViramaModifier() bool { - return c&(viramaModifier|catSmallMask) == viramaModifier + return c&(attributesMask|catSmallMask) == viramaModifier } diff --git a/vendor/golang.org/x/net/internal/nettest/stack.go b/vendor/golang.org/x/net/internal/nettest/stack.go index cc92c035b..06f4e09ef 100644 --- a/vendor/golang.org/x/net/internal/nettest/stack.go +++ b/vendor/golang.org/x/net/internal/nettest/stack.go @@ -74,6 +74,11 @@ func TestableNetwork(network string) bool { switch runtime.GOOS { case "android", "darwin", "freebsd", "nacl", "plan9", "windows": return false + case "netbsd": + // It passes on amd64 at least. 386 fails (Issue 22927). arm is unknown. + if runtime.GOARCH == "386" { + return false + } } } return true diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go index d6a570c90..05d6082d1 100644 --- a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go @@ -10,6 +10,10 @@ package socket import "unsafe" func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } v.Base = (*byte)(unsafe.Pointer(&b[0])) - v.Len = uint32(len(b)) + v.Len = uint32(l) } diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go index 2ae435e64..afb34ad58 100644 --- a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go @@ -10,6 +10,10 @@ package socket import "unsafe" func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } v.Base = (*byte)(unsafe.Pointer(&b[0])) - v.Len = uint64(len(b)) + v.Len = uint64(l) } diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go index 100a62820..8d17a40c4 100644 --- a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go @@ -10,6 +10,10 @@ package socket import "unsafe" func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } v.Base = (*int8)(unsafe.Pointer(&b[0])) - v.Len = uint64(len(b)) + v.Len = uint64(l) } diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go index 3fcb04280..b8c87b72b 100644 --- a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go @@ -7,6 +7,10 @@ package socket func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } h.Iov = &vs[0] - h.Iovlen = int32(len(vs)) + h.Iovlen = int32(l) } diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go index 9f671aec0..a7a5987c8 100644 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go @@ -10,8 +10,12 @@ package socket import "unsafe" func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } h.Iov = &vs[0] - h.Iovlen = uint32(len(vs)) + h.Iovlen = uint32(l) } func (h *msghdr) setControl(b []byte) { diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go index 9f7870621..610fc4f3b 100644 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go @@ -10,8 +10,12 @@ package socket import "unsafe" func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } h.Iov = &vs[0] - h.Iovlen = uint64(len(vs)) + h.Iovlen = uint64(l) } func (h *msghdr) setControl(b []byte) { diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go index be354ff84..71a69e251 100644 --- a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +++ b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go @@ -5,6 +5,10 @@ package socket func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } h.Iov = &vs[0] - h.Iovlen = uint32(len(vs)) + h.Iovlen = uint32(l) } diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go index d1b059397..6465b2073 100644 --- a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go @@ -13,8 +13,10 @@ func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { for i := range vs { vs[i].set(bs[i]) } - h.Iov = &vs[0] - h.Iovlen = int32(len(vs)) + if len(vs) > 0 { + h.Iov = &vs[0] + h.Iovlen = int32(len(vs)) + } if len(oob) > 0 { h.Accrights = (*int8)(unsafe.Pointer(&oob[0])) h.Accrightslen = int32(len(oob)) diff --git a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go index 109fed762..c4edd4a8d 100644 --- a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go +++ b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go @@ -119,81 +119,84 @@ func TestUDP(t *testing.T) { t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) } defer c.Close() + cc, err := socket.NewConn(c.(net.Conn)) + if err != nil { + t.Fatal(err) + } t.Run("Message", func(t *testing.T) { - testUDPMessage(t, c.(net.Conn)) + data := []byte("HELLO-R-U-THERE") + wm := socket.Message{ + Buffers: bytes.SplitAfter(data, []byte("-")), + Addr: c.LocalAddr(), + } + if err := cc.SendMsg(&wm, 0); err != nil { + t.Fatal(err) + } + b := make([]byte, 32) + rm := socket.Message{ + Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]}, + } + if err := cc.RecvMsg(&rm, 0); err != nil { + t.Fatal(err) + } + if !bytes.Equal(b[:rm.N], data) { + t.Fatalf("got %#v; want %#v", b[:rm.N], data) + } }) switch runtime.GOOS { - case "linux": + case "android", "linux": t.Run("Messages", func(t *testing.T) { - testUDPMessages(t, c.(net.Conn)) + data := []byte("HELLO-R-U-THERE") + wmbs := bytes.SplitAfter(data, []byte("-")) + wms := []socket.Message{ + {Buffers: wmbs[:1], Addr: c.LocalAddr()}, + {Buffers: wmbs[1:], Addr: c.LocalAddr()}, + } + n, err := cc.SendMsgs(wms, 0) + if err != nil { + t.Fatal(err) + } + if n != len(wms) { + t.Fatalf("got %d; want %d", n, len(wms)) + } + b := make([]byte, 32) + rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}} + rms := []socket.Message{ + {Buffers: rmbs[0]}, + {Buffers: rmbs[1]}, + } + n, err = cc.RecvMsgs(rms, 0) + if err != nil { + t.Fatal(err) + } + if n != len(rms) { + t.Fatalf("got %d; want %d", n, len(rms)) + } + nn := 0 + for i := 0; i < n; i++ { + nn += rms[i].N + } + if !bytes.Equal(b[:nn], data) { + t.Fatalf("got %#v; want %#v", b[:nn], data) + } }) } -} -func testUDPMessage(t *testing.T, c net.Conn) { - cc, err := socket.NewConn(c) - if err != nil { - t.Fatal(err) - } - data := []byte("HELLO-R-U-THERE") + // The behavior of transmission for zero byte paylaod depends + // on each platform implementation. Some may transmit only + // protocol header and options, other may transmit nothing. + // We test only that SendMsg and SendMsgs will not crash with + // empty buffers. wm := socket.Message{ - Buffers: bytes.SplitAfter(data, []byte("-")), + Buffers: [][]byte{{}}, Addr: c.LocalAddr(), } - if err := cc.SendMsg(&wm, 0); err != nil { - t.Fatal(err) - } - b := make([]byte, 32) - rm := socket.Message{ - Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]}, - } - if err := cc.RecvMsg(&rm, 0); err != nil { - t.Fatal(err) - } - if !bytes.Equal(b[:rm.N], data) { - t.Fatalf("got %#v; want %#v", b[:rm.N], data) - } -} - -func testUDPMessages(t *testing.T, c net.Conn) { - cc, err := socket.NewConn(c) - if err != nil { - t.Fatal(err) - } - data := []byte("HELLO-R-U-THERE") - wmbs := bytes.SplitAfter(data, []byte("-")) + cc.SendMsg(&wm, 0) wms := []socket.Message{ - {Buffers: wmbs[:1], Addr: c.LocalAddr()}, - {Buffers: wmbs[1:], Addr: c.LocalAddr()}, - } - n, err := cc.SendMsgs(wms, 0) - if err != nil { - t.Fatal(err) - } - if n != len(wms) { - t.Fatalf("got %d; want %d", n, len(wms)) - } - b := make([]byte, 32) - rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}} - rms := []socket.Message{ - {Buffers: rmbs[0]}, - {Buffers: rmbs[1]}, - } - n, err = cc.RecvMsgs(rms, 0) - if err != nil { - t.Fatal(err) - } - if n != len(rms) { - t.Fatalf("got %d; want %d", n, len(rms)) - } - nn := 0 - for i := 0; i < n; i++ { - nn += rms[i].N - } - if !bytes.Equal(b[:nn], data) { - t.Fatalf("got %#v; want %#v", b[:nn], data) + {Buffers: [][]byte{{}}, Addr: c.LocalAddr()}, } + cc.SendMsgs(wms, 0) } func BenchmarkUDP(b *testing.B) { @@ -230,7 +233,7 @@ func BenchmarkUDP(b *testing.B) { } }) switch runtime.GOOS { - case "linux": + case "android", "linux": wms := make([]socket.Message, M) for i := range wms { wms[i].Buffers = [][]byte{data} diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go index 9a0dbcfb9..dc130c27e 100644 --- a/vendor/golang.org/x/net/internal/socket/sys_posix.go +++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go @@ -34,7 +34,7 @@ func marshalSockaddr(ip net.IP, port int, zone string) []byte { if ip4 := ip.To4(); ip4 != nil { b := make([]byte, sizeofSockaddrInet) switch runtime.GOOS { - case "linux", "solaris", "windows": + case "android", "linux", "solaris", "windows": NativeEndian.PutUint16(b[:2], uint16(sysAF_INET)) default: b[0] = sizeofSockaddrInet @@ -47,7 +47,7 @@ func marshalSockaddr(ip net.IP, port int, zone string) []byte { if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil { b := make([]byte, sizeofSockaddrInet6) switch runtime.GOOS { - case "linux", "solaris", "windows": + case "android", "linux", "solaris", "windows": NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6)) default: b[0] = sizeofSockaddrInet6 @@ -69,7 +69,7 @@ func parseInetAddr(b []byte, network string) (net.Addr, error) { } var af int switch runtime.GOOS { - case "linux", "solaris", "windows": + case "android", "linux", "solaris", "windows": af = int(NativeEndian.Uint16(b[:2])) default: af = int(b[1]) diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go index 242d5623f..0689bb6a7 100644 --- a/vendor/golang.org/x/net/proxy/per_host.go +++ b/vendor/golang.org/x/net/proxy/per_host.go @@ -61,7 +61,7 @@ func (p *PerHost) dialerForRequest(host string) Dialer { return p.bypass } if host == zone[1:] { - // For a zone "example.com", we match "example.com" + // For a zone ".example.com", we match "example.com" // too. return p.bypass } diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go index 2efec6e8d..3fed38ef1 100644 --- a/vendor/golang.org/x/net/proxy/socks5.go +++ b/vendor/golang.org/x/net/proxy/socks5.go @@ -12,7 +12,7 @@ import ( ) // SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given address -// with an optional username and password. See RFC 1928. +// with an optional username and password. See RFC 1928 and RFC 1929. func SOCKS5(network, addr string, auth *Auth, forward Dialer) (Dialer, error) { s := &socks5{ network: network, @@ -60,7 +60,7 @@ var socks5Errors = []string{ "address type not supported", } -// Dial connects to the address addr on the network net via the SOCKS5 proxy. +// Dial connects to the address addr on the given network via the SOCKS5 proxy. func (s *socks5) Dial(network, addr string) (net.Conn, error) { switch network { case "tcp", "tcp6", "tcp4": @@ -120,6 +120,7 @@ func (s *socks5) connect(conn net.Conn, target string) error { return errors.New("proxy: SOCKS5 proxy at " + s.addr + " requires authentication") } + // See RFC 1929 if buf[1] == socks5AuthPassword { buf = buf[:0] buf = append(buf, 1 /* password protocol version */) diff --git a/vendor/golang.org/x/net/publicsuffix/gen.go b/vendor/golang.org/x/net/publicsuffix/gen.go index a2d499529..f85a3c32b 100644 --- a/vendor/golang.org/x/net/publicsuffix/gen.go +++ b/vendor/golang.org/x/net/publicsuffix/gen.go @@ -37,7 +37,7 @@ import ( const ( // These sum of these four values must be no greater than 32. - nodesBitsChildren = 9 + nodesBitsChildren = 10 nodesBitsICANN = 1 nodesBitsTextOffset = 15 nodesBitsTextLength = 6 diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go index 50f070a92..549511c88 100644 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ b/vendor/golang.org/x/net/publicsuffix/table.go @@ -2,10 +2,10 @@ package publicsuffix -const version = "publicsuffix.org's public_suffix_list.dat, git revision f47d806df99585862c8426c3e064a50eb5a278f5 (2017-06-14T11:49:01Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision 38b238d6324042f2c2e6270459d1f4ccfe789fba (2017-08-28T20:09:01Z)" const ( - nodesBitsChildren = 9 + nodesBitsChildren = 10 nodesBitsICANN = 1 nodesBitsTextOffset = 15 nodesBitsTextLength = 6 @@ -23,453 +23,459 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1549 +const numTLD = 1557 // Text is the combined text of all labels. -const text = "bifukagawalterbihorologybikedagestangeorgeorgiaxasnesoddenmarkha" + - "ngelskjakdnepropetrovskiervaapsteiermarkaragandabruzzoologicalvi" + - "nklein-addrammenuernberggfarmerseine12bilbaogakidsmynasushiobara" + - "gusartsalangeninohekinannestadray-dnsiskinkyotobetsumidatlantica" + - "tholicheltenham-radio-opencraftranagatorodoybillustrationinomiya" + - "konojosoyrorosalondonetskarpaczeladzjavald-aostarnbergladegreevj" + - "e-og-hornnesaltdalimitedraydnsupdaternopilawabioceanographiquebi" + - "rdartcenterprisesakikuchikuseikarugamvikaruizawabirkenesoddtange" + - "novaraumalopolskanlandrivelandrobaknoluoktachikawakembuchikumaga" + - "yagawakkanaibetsubamericanfamilydscloudcontrolledekafjordrudunsa" + - "lvadordalibabalatinord-aurdalvdalaskanittedallasalleasinglesuran" + - "certmgretagajobojinzais-a-candidatebirthplacebjarkoybjerkreimbal" + - "sfjordgcahcesuolocus-1bjugnirasakis-a-catererblockbustermezlglas" + - "sassinationalheritagematsubarakawagoebloombergbauernishiazais-a-" + - "celticsfanishigoddabloxcmsalzburgliwicebluedancebmoattachmentsam" + - "egawabmsamnangerbmwegroweibolzanordkappgafanquannefrankfurtjmaxx" + - "xboxenapponazure-mobilebnpparibaselburglobalashovhachinohedmarka" + - "rumaifarmsteadupontariomutashinais-a-chefarsundurbanamexnethnolo" + - "gybnrweirbonnishiharabookinglobodoes-itvedestrandurhamburglogowf" + - "ashionishiizunazukis-a-conservativefsnillfjordvrcambridgestonexu" + - "s-2bootsamsclubindalimoliserniaboschaefflerdalindashorokanaiebos" + - "tikasaokaminokawanishiaizubangebostonakijinsekikogentingloppenza" + - "ogashimadachicagoboatsamsungmbhartiffanybotanicalgardenishikatak" + - "ayamatta-varjjatjometlifeinsurancebotanicgardenishikatsuragithub" + - "usercontentjxfinitybotanybouncemerckmsdnipropetrovskjervoyagebou" + - "nty-fullensakerrypropertiesandvikcoromantovalle-d-aostatic-acces" + - "sanfranciscofreakunemurorangeiseiyoichippubetsubetsugaruhrboutiq" + - "uebecngminakamichiharabozentsujiiebplacedogawarabikomaezakirunor" + - "dlandvrdnsangoppdalindesnesanjournalismailillesandefjordyndns-at" + - "-workinggroupaleobrandywinevalleybrasiliabresciabrindisibenikebr" + - "istoloslocalhistorybritishcolumbialowiezachpomorskienishikawazuk" + - "amitondabayashiogamagoriziabroadcastlegallocalhostrodawaravennag" + - "asukebroadwaybroke-itkmaxxjaworznowtvalled-aostavangerbrokerbron" + - "noysundyndns-blogdnsannanishimerabrothermesaverdeatnurembergmode" + - "nakasatsunais-a-cpadualstackspace-to-rentalstomakomaibarabrowser" + - "safetymarketsannohelplfinancialivornobrumunddalombardiamondsanok" + - "ashibatakashimaseratis-a-cubicle-slavellinotteroybrunelasticbean" + - "stalkashiharabrusselsantabarbarabruxellesantacruzsantafedjeffers" + - "onishinomiyashironobryanskleppalermomahachijorpelandyndns-freebo" + - "x-ostrowwlkpmgmxn--0trq7p7nnishinoomotegobrynewhollandyndns-home" + - "dnsanukis-a-democratmpalmspringsakerbuskerudinewmexicodyn-vpnplu" + - "sterbuzenishinoshimattelefonicarbonia-iglesias-carboniaiglesiasc" + - "arboniabuzzpamperedchefastlylbaltimore-og-romsdalwaysdatabasebal" + - "langenoamishirasatochigiessensiositelemarkarateu-1bwhalingrimsta" + - "dyndns-ipirangaulardalombardynamisches-dnsaotomemergencyachtsapo" + - "dlasiellaktyubinskiptveterinairealtorlandyndns-mailomzaporizhzhe" + - "guris-a-designerimarumorimachidabzhitomirumalselvendrellorenskog" + - "ripescaravantaacondoshichinohealth-carereformitakeharaconference" + - "constructionconsuladoesntexistanbullensvanguardyndns1consultanth" + - "ropologyconsultingvolluroycontactoyotsukaidownloadynnsaskatchewa" + - "ncontemporaryarteducationalchikugodoharuovatoyouracontractorsken" + - "conventureshinodesashibetsuikinderoycookingchannelblagdenesnaase" + - "ralingenkainanaejrietisalatinabenonichernivtsiciliacoolkuszczytn" + - "ore-og-uvdalutskasuyameldaluxembourgrpanamacooperaunitenrightath" + - "omeftpanasonichernovtsykkylvenetogakushimotoganewspapercopenhage" + - "ncyclopedichirurgiens-dentistes-en-francecorsicagliaridagawarsza" + - "washingtondclkaszubycorvettevadsoccertificationcosenzagancosidns" + - "dojoetsuwanouchikujogaszkoladbrokesassaris-a-huntercostumedio-ca" + - "mpidano-mediocampidanomediocouchpotatofriesatxn--11b4c3dynv6coun" + - "ciluxurycouponsaudacoursesauheradynvpnchiryukyuragifuchungbukhar" + - "acq-acranbrookuwanalyticsavannahgacreditcardyroyrvikingruecredit" + - "unioncremonashgabadaddjambyluzerncrewiiheyakagecricketrzyncrimea" + - "st-kazakhstanangercrotonextdirectoystre-slidrettozawacrownprovid" + - "ercrsvparaglidinguitarsaves-the-whalessandria-trani-barletta-and" + - "riatranibarlettaandriacruisesavonaplesaxocryptonomichigangwoncui" + - "sinellahppiacenzakopanerairguardiannakadomarinebraskaunjargalsac" + - "eoculturalcentertainmentozsdeltaitogliattiresbschokoladencuneocu" + - "pcakecxn--12c1fe0bradescorporationcyberlevagangaviikanonjis-a-kn" + - "ightpointtokaizukamikitayamatsuris-a-landscapercymrussiacyonabar" + - "ulvikatowicecyouthdfcbankatsushikabeeldengeluidfidonnakamurataji" + - "mibuildingulenfieldfiguerestaurantraniandriabarlettatraniandriaf" + - "ilateliafilegearthachiojiyahoofilminamidaitomangotsukisosakitaga" + - "wafinalfinancefineartschwarzgwangjuifminamiechizenfinlandfinnoyf" + - "irebaseapparisor-fronfirenzefirestonefirmdaleirvikaufenfishingol" + - "ffanschweizwildlifedorainfracloudfrontdoorfitjarmeniafitnessettl" + - "ementranoyfjalerflesbergunmarburguovdageaidnuslivinghistoryflick" + - "ragerotikakamigaharaflightsciencecentersciencehistoryflirflogint" + - "ogurafloraflorencefloridavvesiidazaifudaigojomedizinhistorisches" + - "cientistoragefloripaderbornfloristanohatakahamangyshlakasamatsud" + - "ontexisteingeekautokeinoflorogerscjohnsonflowerscotlandflynnhuba" + - "mblefrakkestadiscountysnes3-sa-east-1fndfoodnetworkshoppingushik" + - "amifuranortonsbergxn--12co0c3b4evalleaostatoilfor-ourfor-someetn" + - "edalfor-theaterforexrothachirogatakahatakaishimogosenforgotdnscr" + - "apper-siteforli-cesena-forlicesenaforlikescandynamic-dnscrapping" + - "forsaleitungsenforsandasuolodingenfortmissoulair-traffic-control" + - "leyfortworthadanosegawaforuminamifuranofosneserveftparliamentran" + - "sportransurlfotaruis-a-lawyerfoxfordedyn-ip24freeboxoservegame-s" + - "erversailleservehalflifestylefreemasonryfreetlservehttparmafreib" + - "urgfreightcminamiiselectrapaniimimatakatoris-a-liberalfresenius-" + - "3fribourgfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-ve" + - "nezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriu" + - "live-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiulia" + - "friulivgiuliafrlfroganservehumourfrognfrolandfrom-akrehamnfrom-a" + - "lfrom-arqhadselfiparocherkasyno-dserveirchitachinakagawassamukaw" + - "ataricohdatsunanjoburgriwataraidyndns-office-on-the-webcampobass" + - "ociatesapporofrom-azfrom-capebretonamiastapleserveminecraftravel" + - "channelfrom-collectionfrom-ctravelersinsurancefrom-dchitosetogit" + - "suldalotenkawafrom-defenseljordfrom-flanderservemp3from-gausdalf" + - "rom-higashiagatsumagoizumizakirkeneservep2parservepicservequakef" + - "rom-iafrom-idfrom-ilfrom-incheonfrom-kservesarcasmatartanddesign" + - "from-kyowariasahikawafrom-lajollamericanexpressexyfrom-maniwakur" + - "atextileksvikazofrom-mdfrom-megurokunohealthcareerservicesettsur" + - "geonshalloffamemorialfrom-microsoftbankazunofrom-mnfrom-modellin" + - "gfrom-msevastopolefrom-mtnfrom-nchloefrom-ndfrom-nefrom-nhktrdfr" + - "om-njcbnlfrom-nminamiizukamisatokamachintaifun-dnsaliasdaburfrom" + - "-nvalledaostavernfrom-nyfrom-ohkurafrom-oketohmannorth-kazakhsta" + - "nfrom-orfrom-padovaksdalfrom-pratohnoshoooshikamaishimodatefrom-" + - "rivnefrom-schoenbrunnfrom-sdfrom-tnfrom-txn--1ck2e1bananarepubli" + - "caseihichisobetsuitainairforcechirealminamiawajikibmdiscoveryomb" + - "ondishakotanavigationavoiitatebayashiibahcavuotnagaraholtaleniwa" + - "izumiotsukumiyamazonawsadodgemologicallyngenvironmentalconservat" + - "ionavuotnaklodzkodairassnasabaerobaticketselinogradultashkentata" + - "motors3-ap-northeast-2from-utazuerichardlillehammerfeste-ipartis" + - "-a-libertarianfrom-val-daostavalleyfrom-vtrentino-a-adigefrom-wa" + - "from-wielunnerfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wo" + - "lawafroyahikobeardubaiduckdnsevenassisicilyfstcgroupartnersewill" + - "iamhillfujiiderafujikawaguchikonefujiminohtawaramotoineppubologn" + - "akanotoddenfujinomiyadafujiokayamansionsfranziskanerdpolicefujis" + - "atoshonairtelecityeatsharis-a-linux-useranishiaritabashijonawate" + - "fujisawafujishiroishidakabiratoridefinimakanegasakindlegokasells" + - "-for-lessharpartshawaiijimarugame-hostrolekameokameyamatotakadaf" + - "ujitsurugashimaritimekeepingfujixeroxn--1ctwolominamatakkokamino" + - "yamaxunusualpersonfujiyoshidafukayabeatshellaspeziafukuchiyamada" + - "fukudominichocolatemasekashiwazakiyosatokashikiyosemitefukuis-a-" + - "llamarylandfukumitsubishigakirovogradoyfukuokazakiryuohaebarumin" + - "amimakis-a-musicianfukuroishikarikaturindalfukusakisarazurewebsi" + - "teshikagamiishibukawafukuyamagatakaharustkanoyakumoldeloittexasc" + - "olipicenoipifonynysaarlandfunabashiriuchinadafunagatakahashimama" + - "kishiwadafunahashikamiamakusatsumasendaisennangonohejis-a-nascar" + - "fanfundaciofuoiskujukuriyamanxn--1lqs03nfuosskoczowinbarcelonaga" + - "sakijobserverisignieznord-frontiereviewskrakowedeployomitanobihi" + - "rosakikamijimastronomy-gatewaybomloans3-ap-south-1furnituredston" + - "efurubiraquarelleborkangerfurudonostiaarpartyfurukawairtrafficho" + - "funatoriginsurecifedexhibitionishiokoppegardyndns-picsardegnamss" + - "koganeis-a-doctorayfusodegaurafussaikisofukushimaoris-a-nurserve" + - "bbshimojis-a-painteractivegarsheis-a-patsfanfutabayamaguchinomig" + - "awafutboldlygoingnowhere-for-moregontrailroadfuttsurugimperiafut" + - "urehostingfuturemailingfvgfyis-a-personaltrainerfylkesbiblackfri" + - "dayfyresdalhangoutsystemscloudfunctionshimokawahannanmokuizumode" + - "rnhannotaireshimokitayamahanyuzenhapmirhareidsbergenharstadharve" + - "stcelebrationhasamarcheapassagenshimonitayanagitlaborhasaminami-" + - "alpssells-itrentino-aadigehashbanghasudahasura-appassenger-assoc" + - "iationhasvikddielddanuorrikuzentakataiwanairlinedre-eikerhatogay" + - "aitakamoriokalmykiahatoyamazakitahiroshimarnardalhatsukaichikais" + - "eis-a-republicancerresearchaeologicaliforniahattfjelldalhayashim" + - "amotobungotakadapliernewjerseyhazuminobusellsyourhomegoodshimono" + - "sekikawahboehringerikehelsinkitakamiizumisanofidelitysvardollshi" + - "mosuwalkis-a-rockstarachowicehembygdsforbundhemneshimotsukehemse" + - "dalhepforgeherokussldheroyhgtvalleeaosteigenhigashichichibunkyon" + - "anaoshimageandsoundandvisionhigashihiroshimanehigashiizumozakita" + - "katakanabeautydalhigashikagawahigashikagurasoedahigashikawakitaa" + - "ikitakyushuaiahigashikurumeiwamarriottrentino-alto-adigehigashim" + - "atsushimarshallstatebankfhappouhigashimatsuyamakitaakitadaitoiga" + - "wahigashimurayamamotorcycleshimotsumahigashinarusembokukitamidor" + - "is-a-socialistmein-vigorgehigashinehigashiomihachimanchesterhiga" + - "shiosakasayamanakakogawahigashishirakawamatakanezawahigashisumiy" + - "oshikawaminamiaikitamotosumitakagildeskaliszhigashitsunotogawahi" + - "gashiurausukitanakagusukumoduminamiminowahigashiyamatokoriyamana" + - "shifteditchyouripaviancarrierhigashiyodogawahigashiyoshinogaris-" + - "a-soxfanhiraizumisatohobby-sitehirakatashinagawahiranais-a-stude" + - "ntalhirarahiratsukagawahirayaizuwakamatsubushikusakadogawahistor" + - "ichouseshinichinanhitachiomiyaginankokubunjis-a-teacherkassymant" + - "echnologyhitachiotagooglecodespotrentino-altoadigehitraeumtgerad" + - "elmenhorstalbanshinjournalistjohnhjartdalhjelmelandholeckobierzy" + - "ceholidayhomeipfizerhomelinkhakassiahomelinuxn--1lqs71dhomeoffic" + - "ehomesecuritymaceratakaokaluganskolevangerhomesecuritypccwindmil" + - "lhomesenseminehomeunixn--1qqw23ahondahoneywellbeingzonehongopocz" + - "northwesternmutualhonjyoitakarazukamakurazakitashiobarahornindal" + - "horseoulminamiogunicomcastresistancehortendofinternet-dnshinjuku" + - "manohospitalhoteleshinkamigotoyohashimotoshimahotmailhoyangerhoy" + - "landetroitskydivinghumanitieshinshinotsurgeryhurdalhurumajis-a-t" + - "echietis-a-therapistoiahyllestadhyogoris-an-accountantshinshiroh" + - "yugawarahyundaiwafunehzchoseiroumuenchenishitosashimizunaminamia" + - "shigarajfkhmelnitskiyamashikejgorajlchoyodobashichikashukujitawa" + - "rajlljmpharmacienshiojirishirifujiedajnjcpgfoggiajoyokaichibahcc" + - "avuotnagareyamalborkdalpha-myqnapcloudapplebesbyglandjpmorganjpn" + - "jprshioyanaizujuniperjurkoshimizumakis-an-engineeringkoshunantok" + - "igawakosugekotohiradomainshirakofuefukihaboromskoguchikuzenkotou" + - "rakouhokutamakis-an-entertainerkounosupplieshiranukamogawakouyam" + - "ashikokuchuokouzushimasoykozagawakozakis-bykpnkppspdnshiraois-ce" + - "rtifieducatorahimeshimamateramochizukirakrasnodarkredirectmelhus" + - "cultureggio-calabriakristiansandcatshiraokanagawakristiansundkro" + - "dsheradkrokstadelvaldaostarostwodzislawindowshiratakahagivestbyk" + - "ryminamisanrikubetsupportrentino-sued-tirolkumatorinokumejimasud" + - "akumenanyokkaichiropractichristmasakikugawatchandclockasukabedzi" + - "n-the-bandaikawachinaganoharamcoachampionshiphoptobishimaizurugb" + - "ydgoszczecinemakeupowiathletajimabariakeisenbahnishiwakis-a-fina" + - "ncialadvisor-aurdalottokonamegatakasugais-a-geekgalaxykunisakis-" + - "foundationkunitachiarailwaykunitomigusukumamotoyamassa-carrara-m" + - "assacarraramassabusinessebytomaritimobarakunneppulawykunstsammlu" + - "ngkunstunddesignkuokgrouphdkureggio-emilia-romagnakatsugawakurga" + - "nkurobelaudiblebtimnetzkurogimilanokuroisoftwarendalenugkuromats" + - "unais-gonekurotakikawasakis-into-animelbournekushirogawakustanai" + - "s-into-carshintomikasaharakusupplykutchanelkutnokuzumakis-into-c" + - "artoonshinyoshitomiokamitsuekvafjordkvalsundkvamfamberkeleykvana" + - "ngenkvinesdalkvinnheradkviteseidskogkvitsoykwpspiegelkzmissilewi" + - "smillermisugitokorozawamitourismolancastermitoyoakemiuramiyazumi" + - "yotamanomjondalenmlbfanmonmouthagebostadmonstermonticellolmontre" + - "alestatefarmequipmentrentino-suedtirolmonza-brianzaporizhzhiamon" + - "za-e-della-brianzapposhishikuis-not-certifiedunetbankharkovanylv" + - "enicemonzabrianzaptokuyamatsusakahoginowaniihamatamakawajimaphil" + - "adelphiaareadmyblogsitemonzaebrianzaramonzaedellabrianzamoonscal" + - "exusdecorativeartshisognemoparachutingmordoviajessheiminamitanem" + - "oriyamatsushigemoriyoshimilitarymormoneymoroyamatsuuramortgagemo" + - "scowinnershisuifuelveruminamiuonumatsumotofukemoseushistorymosjo" + - "enmoskeneshitaramamosshizukuishimofusaitamatsukuris-savedmosvikn" + - "x-serveronakatombetsunndalmoteginozawaonsenmoviemovistargardmtpc" + - "hromedicaltanissettairamtranbymuenstermugithubcloudusercontentre" + - "ntinoa-adigemuikamishihoronobeauxartsandcraftshizuokananporovigo" + - "tpantheonsitemukochikushinonsenergymulhouservebeermunakatanemunc" + - "ieszynmuosattemuphilatelymurmanskolobrzegersundmurotorcraftrenti" + - "noaadigemusashimurayamatsuzakis-slickhersonmusashinoharamuseetre" + - "ntinoalto-adigemuseumverenigingmusicargodaddynaliascoli-picenogi" + - "ftshoujis-uberleetrentino-stirolmutsuzawamy-vigorlicemy-wanggouv" + - "icenzamyactivedirectorymyasustor-elvdalmycdn77-securechtrainingm" + - "ydissentrentinoaltoadigemydrobofagemydshowamyeffectrentinos-tiro" + - "lmyfirewallonieruchomoscienceandindustrynmyfritzmyftpaccesshowti" + - "meteorapphilipsynology-diskstationmyfusionmyhome-serverrankoshig" + - "ayanagawamykolaivaporcloudmymailermymediapchryslermyokohamamatsu" + - "damypepsongdalenviknakanojohanamakinoharamypetshriramlidlugoleka" + - "gaminoduminamiyamashirokawanabelembroideryggeelvincklabudhabikin" + - "okawabarthagakhanamigawamyphotoshibajddarchaeologyeongnamegawalb" + - "rzycharternidmypsxn--30rr7ymysecuritycamerakermyshopblocksienara" + - "shinomytis-a-bookkeeperugiamyvnchungnamdalseidfjordyndns-remotew" + - "dyndns-serverdalouvreggioemiliaromagnakayamatsumaebashikshacknet" + - "oyookanmakiwakunigamidsundyndns-weberlincolnissandnessjoenissayo" + - "koshibahikariwanumatakazakis-a-greenissedalowiczest-le-patrondhe" + - "immobilienisshingugepicturesilkomaganepiemontepilotsimple-urlpim" + - "ientaketomisatolgapinkomakiyosumy-routerpioneerpippuphonefossigd" + - "alpiszpittsburghofauskedsmokorsetagayasells-for-unzenpiwatepizza" + - "pkomatsushimashikizunokunimihoboleslawiechristiansburgroks-thisa" + - "yamanobeokakudamatsueplanetariuminanoplantationplantsirdalplatfo" + - "rmshangrilanciaplaystationplazaplchurchaseljeepostfoldnavyplumbi" + - "ngopmnpodzonepohlpoivronpokerpokrovskomforbarclays3-us-gov-west-" + - "1politiendapolkowicepoltavalle-aostathellezajskommunalforbundpom" + - "orzeszowioslingpordenonepornporsangerporsanguidellogliastradingp" + - "orsgrunnanpoznanpraxis-a-bruinsfanprdpreservationpresidioprgmrpr" + - "imeloyalistockholmestrandprincipeprivatizehealthinsuranceprochow" + - "iceproductionslupskommuneprofbsbxn--12cfi8ixb8lvivano-frankivska" + - "tsuyamasfjordenprogressivegasiapromombetsurfbx-oscholarshipschoo" + - "lpropertyprotectionprotonetrentinosud-tirolprudentialpruszkowitd" + - "komonoprzeworskogptplusgardenpvtrentinosudtirolpwcirclegnicafede" + - "rationiyodogawapzqldqponqslgbtrentinosued-tirolquicksytesnoasait" + - "omobellevuelosangelesjaguarchitecturealtychyattorneyagawalesundq" + - "uipelementsokanazawaqvcircustomerstuff-4-salestufftoread-booksne" + - "solognestuttgartritonsusakis-very-evillagesusonosuzakaneyamazoes" + - "uzukaniepcesuzukis-very-goodhandsonsvalbardunloppacificitadelive" + - "rysveiosvelvikongsbergsvizzeraswedenswidnicartierswiebodzindiana" + - "polis-a-bloggerswiftcoversicherungswinoujscienceandhistoryswissh" + - "ikis-very-nicesynology-dsolundbeckomorotsukamiokamikoaniikappugl" + - "iatushuissier-justicetuvalle-daostaticsomatuxfamilytwmailvennesl" + - "askerrylogisticsomnaritakurashikis-very-badajozoravestfoldvestne" + - "soovestre-slidreamhostersopotrentinosuedtirolvestre-totennishiaw" + - "akuravestvagoyvevelstadvibo-valentiavibovalentiavideovillaskimit" + - "subatamicable-modembetsukuis-very-sweetpeppervinnicartoonartdeco" + - "ffeedbackplaneappspotagervinnytsiavipsinaappiagetmyiphoenixn--32" + - "vp30haibarakitahatakamatsukawavirginiavirtualvirtueeldomeindianm" + - "arketingvirtuelvisakegawavistaprinternationalfirearmsor-odalvite" + - "rboltrogstadvivoldavixn--3bst00minnesotaketakatsukis-into-gamess" + - "inatsukigatakasagotembaixadavlaanderenvladikavkazimierz-dolnyvla" + - "dimirvlogoipictetrentinostirolvolkswagentsor-varangervologdansko" + - "ninjamisonvolvolkenkundenvolyngdalvossevangenvotevotingvotoyonak" + - "agyokutoursorfoldwloclawekonskowolayangroupharmacyshirahamatonbe" + - "tsurnadalwmflabsorreisahayakawakamiichikawamisatotalworldworse-t" + - "handawowithgoogleapisa-hockeynutsiracusakatakinouewritesthisblog" + - "sytewroclawithyoutubeneventoeidsvollwtcitichernigovernmentoyonow" + - "tfbxoschulewuozuwwwiwatsukiyonowruzhgorodeowzmiuwajimaxn--45brj9" + - "civilaviationxn--45q11civilisationxn--4gbriminingxn--4it168dxn--" + - "4it797konyveloftrentino-sudtirolxn--4pvxs4allxn--54b7fta0ccivili" + - "zationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilwarmanageme" + - "ntoyosatoyakokonoexn--5rtq34kooris-an-anarchistoricalsocietyxn--" + - "5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986" + - "b3xlxn--7t0a264claimsarlucaniaxn--80adxhksortlandxn--80ao21axn--" + - "80aqecdr1axn--80asehdbarreauctionflfanfshostrowiecasertaipeiheij" + - "iiyamanouchikuhokuryugasakitaurayasudaukraanghkeymachineustarhub" + - "alsanagochihayaakasakawaharanzanpachigasakicks-assedicasadelamon" + - "edatingjemnes3-ap-southeast-2xn--80aswgxn--80audnedalnxn--8ltr62" + - "kopervikhmelnytskyivaolbia-tempio-olbiatempioolbialystokkepnogat" + - "aijis-an-actresshintokushimaxn--8pvr4uxn--8y0a063axn--90a3academ" + - "y-firewall-gatewayxn--90aishobaraomoriguchiharahkkeravjuedisches" + - "apeakebayernrtromsakakinokiaxn--90azhytomyrxn--9dbhblg6dietcimdb" + - "arrel-of-knowledgeologyonagoyaurskog-holandroverhalla-speziaerop" + - "ortalaheadjudaicaaarborteaches-yogasawaracingroks-theatree164xn-" + - "-9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byandexn--3d" + - "s443gxn--asky-iraxn--aurskog-hland-jnbarrell-of-knowledgeometre-" + - "experts-comptables3-us-west-1xn--avery-yuasakuhokkaidoomdnshome-" + - "webservercellikes-piedmontblancomeeresorumincommbankmpspbarclayc" + - "ards3-us-east-2xn--b-5gaxn--b4w605ferdxn--bck1b9a5dre4cldmailucc" + - "apitalonewportlligatoyotaris-a-gurulsandoyxn--bdddj-mrabdxn--bea" + - "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" + - "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsurreyxn--bj" + - "ddar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--b" + - "od-2naroyxn--brnny-wuaccident-investigation-aptibleaseating-orga" + - "nicbcn-north-1xn--brnnysund-m8accident-prevention-webhopenairbus" + - "antiquest-a-la-maisondre-landebudapest-a-la-masionionjukudoyamag" + - "entositelekommunikationthewifiat-band-campaniaxn--brum-voagatrom" + - "sojampagefrontapphotographysioxn--btsfjord-9zaxn--c1avgxn--c2br7" + - "gxn--c3s14mintelligencexn--cck2b3barsyonlinewhampshirebungoonord" + - "-odalazioceanographics3-us-west-2xn--cg4bkis-with-thebandovre-ei" + - "kerxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumisakis-leetrentino" + - "-s-tirollagrigentomologyeongbukharkivgucciprianiigataishinomakim" + - "obetsuliguriaxn--comunicaes-v6a2oxn--correios-e-telecomunicaes-g" + - "hc29axn--czr694bashkiriaustevollarvikarasjohkamiminers3-ca-centr" + - "al-1xn--czrs0trusteexn--czru2dxn--czrw28basilicataniaustinnatura" + - "lsciencesnaturelles3-eu-central-1xn--d1acj3basketballfinanzgorau" + - "straliaisondriodejaneirochesterepbodynathomebuiltatarantottoribe" + - "staddnskingjerdrumckinseyokosukanzakiwienaturbruksgymnaturhistor" + - "isches3-eu-west-1xn--d1alfaromeoxn--d1atrvarggatroandinosaureise" + - "nxn--d5qv7z876clickasumigaurawa-mazowszextraspacekitagatajirissa" + - "gamiharaxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawane" + - "honbetsurutaharaxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry" + - "-iraxn--e1a4clinichernihivanovodkagoshimalvikashiwaraxn--eckvdtc" + - "9dxn--efvn9southcarolinazawaxn--efvy88hair-surveillancexn--ehqz5" + - "6nxn--elqq16hakatanoshiroomuraxn--estv75gxn--eveni-0qa01gaxn--f6" + - "qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hso" + - "uthwestfalenxn--fiq64batodayonaguniversityoriikariyaltakasakiyok" + - "awaraustrheimatunduhrennesoyokoteastcoastaldefencebinagisochildr" + - "ensgardenatuurwetenschappenaumburgjerstadotsuruokakegawaetnagaha" + - "maroygardenebakkeshibechambagriculturennebudejjudygarlandd-dnsfo" + - "r-better-thanawawdev-myqnapcloudcontrolapplinzi234xn--fiqs8sowax" + - "n--fiqz9spjelkavikomvuxn--2m4a15exn--fjord-lraxn--fjq720axn--fl-" + - "ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-grandrapidspread" + - "bettingxn--frna-woaraisaijotrysiljanxn--frya-hraxn--fzc2c9e2clin" + - "iquenoharaxn--fzys8d69uvgmailxn--g2xx48clintonoshoesarpsborgrond" + - "arxn--gckr3f0fedorapeopleirfjordxn--gecrj9clothingrongaxn--ggavi" + - "ika-8ya47hakodatexn--gildeskl-g0axn--givuotna-8yasakaiminatoyone" + - "zawaxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050isleofmand" + - "alxn--gmqw5axn--h-2failxn--h1aeghakonexn--h2brj9cnsarufutsunomiy" + - "awakasaikaitakoelnxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7y" + - "a35batsfjordivtasvuodnakaiwamizawauthordalandroiddnss3-eu-west-2" + - "xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4acctulangevagrarbo" + - "retumbriaxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqa" + - "xn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr" + - "513nxn--indery-fyasugissmarterthanyouxn--io0a7iwchoshibuyachiyod" + - "avvenjargapartmentsardiniaxn--j1aefedoraprojectrani-andria-barle" + - "tta-trani-andriaxn--j1amhakubaghdadxn--j6w193gxn--jlq61u9w7bauha" + - "usposts-and-telecommunicationsncfdivttasvuotnakamagayahababyklec" + - "lercasinordre-landiyoshiokaracoldwarmiamihamadautomotivecoalipay" + - "okozebinorfolkebibleikangereportateshinanomachimkentateyamagroce" + - "rybnikahokutobamaintenancebetsukubank12xn--jlster-byasuokanraxn-" + - "-jrpeland-54axn--jvr189misasaguris-lostre-toteneis-an-actorxn--k" + - "7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--kl" + - "bu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3e0b707exn--ko" + - "luokta-7ya57hakuis-a-photographerokuappasadenamsosnowiechonanbui" + - "lderschmidtre-gauldalottexn--kprw13dxn--kpry57dxn--kpu716fermoda" + - "lenxn--kput3ixn--krager-gyatomitamamuraxn--kranghke-b0axn--krdsh" + - "erad-m8axn--krehamn-dxaxn--krjohka-hwab49jeonnamerikawauexn--ksn" + - "es-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazuryxn--kvnangen-k0a" + - "xn--l-1fairwindspydebergxn--l1accentureklamborghiniizaxn--lahead" + - "ju-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leaga" + - "viika-52bbcateringebugattipschlesisches3-website-ap-northeast-1x" + - "n--lesund-huaxn--lgbbat1ad8jetztrentino-sud-tirolxn--lgrd-poacnt" + - "oyotomiyazakis-a-hard-workerxn--lhppi-xqaxn--linds-pramericanart" + - "unesolutionsokndalxn--lns-qlansrlxn--loabt-0qaxn--lrdal-sraxn--l" + - "renskog-54axn--lt-liacolonialwilliamsburgrossetouchijiwadell-ogl" + - "iastraderxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--m" + - "erker-kuaxn--mgb2ddesrtrentoyokawaxn--mgb9awbferraraxn--mgba3a3e" + - "jtunkongsvingerxn--mgba3a4f16axn--mgba3a4franamizuholdingsmilelx" + - "n--mgba7c0bbn0axn--mgbaakc7dvferrarittogoldpoint2thisamitsukexn-" + - "-mgbaam7a8hakusandiegoodyearxn--mgbab2bdxn--mgbai9a5eva00bbtatto" + - "olsztynsettlers3-website-ap-southeast-1xn--mgbai9azgqp6jevnakers" + - "huscountryestateofdelawarezzoologyxn--mgbayh7gpagespeedmobilizer" + - "oxn--mgbb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzd" + - "oxn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbi4ecexposedxn--mgbpl" + - "2fhskodjejuegoshikiminokamoenairportland-4-salernoboribetsucksrv" + - "areserveblogspotrevisohughesolarssonxn--mgbqly7c0a67fbcoloradopl" + - "ateaudioxn--mgbqly7cvafredrikstadtvstordalxn--mgbt3dhdxn--mgbtf8" + - "flatangerxn--mgbtx2bbvacationswatch-and-clockerhcloudns3-website" + - "-ap-southeast-2xn--mgbx4cd0abbotturystykannamifunexn--mix082ferr" + - "eroticanonoichinomiyakexn--mix891fetsundxn--mjndalen-64axn--mk0a" + - "xindustriesteambulancexn--mk1bu44columbusheyxn--mkru45ixn--mlatv" + - "uopmi-s4axn--mli-tlanxesstorehabmerxn--mlselv-iuaxn--moreke-juax" + - "n--mori-qsakuragawaxn--mosjen-eyawaraxn--mot-tlapyatigorskypexn-" + - "-mre-og-romsdal-qqbentleyukinfinitintuitaxihuanhlfanhs3-website-" + - "eu-west-1xn--msy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycommu" + - "nitysfjordyndns-wikinkobayashikaoirminamibosogndalucernexn--muos" + - "t-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3oq18vl8" + - "pn36axn--nit225kosakaerodromegallupinbarefootballooningjovikarat" + - "suginamikatagamiharuconnectatsunobiraugustowadaegubs3-ap-southea" + - "st-1xn--nmesjevuemie-tcbalestrandabergamoarekexn--nnx388axn--nod" + - "exn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery" + - "-byaeservecounterstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattano" + - "oganordreisa-geekoseis-an-artisteinkjerusalemrxn--o3cw4halsaintl" + - "ouis-a-anarchistoiredumbrellanbibaidarxn--o3cyx2axn--od0algxn--o" + - "d0aq3beppublishproxyzgorzeleccolognewyorkshirecipesaro-urbino-pe" + - "sarourbinopesaromasvuotnaharimamurogawatches3-website-sa-east-1x" + - "n--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyawatahamaxn--osy" + - "ro-wuaxn--p1acfgujolsterxn--p1aixn--pbt977comobilyxn--pgbs0dhlxn" + - "--porsgu-sta26fhvalerxn--pssu33lxn--pssy2uxn--q9jyb4comparemarke" + - "rryhotelsasayamaxn--qcka1pmcdonaldstorfjordxn--qqqt11misconfused" + - "xn--qxamuneuestorjelenia-goraxn--rady-iraxn--rdal-poaxn--rde-ula" + - "quilancashireggiocalabriaxn--rdy-0nabarixn--rennesy-v1axn--rhkke" + - "rvju-01aflakstadaokagakibichuoxn--rholt-mragowoodsidexn--rhqv96g" + +const text = "bifukagawalterbihorologyukuhashimoichinosekigaharaxastronomy-gat" + + "ewaybomloans3-ca-central-1bikedagestangeorgeorgiabilbaogakihokum" + + "akogengerdalces3-website-us-west-1billustrationikinuyamashinashi" + + "kitchenikkoebenhavnikolaevents3-website-us-west-2bioddabirdartce" + + "nterprisesakikugawarszawashingtondclkariyameldalindesnesakurainv" + + "estmentsakyotanabellunord-odalivornomutashinainzais-a-candidateb" + + "irkenesoddtangenovaraumalopolskanlandrayddnsfreebox-oslocus-3bir" + + "thplacebitballooningladefinimakanegasakindlegokasells-for-lessal" + + "angenikonantankarlsoyurihonjoyentattoolsztynsettlersalondonetska" + + "rmoyusuharabjarkoyusuisserveexchangebjerkreimbalsfjordgcahcesuol" + + "ocalhostrodawaraugustowadaegubalsanagochihayaakasakawaharanzanne" + + "frankfurtarumizusawabkhaziamallamagazineat-url-o-g-i-naturalhist" + + "orymuseumcentereviewskrakowebredirectmeteorappaleobihirosakikami" + + "jimabogadocscbgdyniabruzzoologicalvinklein-addrammenuernberggfar" + + "merseinebinagisochildrensgardenaturalsciencesnaturelles3-ap-nort" + + "heast-2ixboxenapponazure-mobileastcoastaldefenceatonsberg12000em" + + "mafanconagawakayamadridvagsoyericssonyoursidealerimo-i-ranaamesj" + + "evuemielno-ip6bjugninohekinannestadraydnsaltdalombardiamondsalva" + + "dordalibabalatinord-frontierblockbustermezjavald-aostaplesalzbur" + + "glassassinationalheritagematsubarakawagoebloombergbauerninomiyak" + + "onojosoyrorosamegawabloxcmsamnangerbluedancebmoattachmentsamsclu" + + "bindalombardynamisches-dnsamsungleezebmsandvikcoromantovalle-d-a" + + "ostathellebmwedeployuufcfanirasakis-a-catererbnpparibaselburgliw" + + "icebnrwegroweibolzanorddalomzaporizhzheguris-a-celticsfanishiaza" + + "is-a-chefarmsteadrivelandrobaknoluoktachikawalbrzycharternidrudu" + + "nsanfranciscofreakunedre-eikerbonnishigoppdalorenskoglobalashovh" + + "achinohedmarkarpaczeladzlglobodoes-itvedestrandupontariobookingl" + + "ogoweirboomladbrokesangobootsanjournalismailillesandefjordurbana" + + "mexnetlifyis-a-conservativefsnillfjordurhamburgloppenzaogashimad" + + "achicagoboatsannanishiharaboschaefflerdalotenkawabostikaruizawab" + + "ostonakijinsekikogentingmbhartiffanyuzawabotanicalgardenishiizun" + + "azukis-a-cpadualstackspace-to-rentalstomakomaibarabotanicgardeni" + + "shikatakayamatta-varjjataxihuanishikatsuragit-repostfoldnavybota" + + "nybouncemerckmsdnipropetrovskjervoyagebounty-fullensakerryproper" + + "tiesannohelplfinancialotteboutiquebecngminakamichiharabozentsuji" + + "iebplacedekagaminordkappgafanpachigasakievennodesashibetsukumiya" + + "mazonawsaarlandyndns-at-workinggroupalmspringsakerbrandywinevall" + + "eybrasiliabresciabrindisibenikebristoloseyouripirangapartmentsan" + + "okarumaifarsundyndns-blogdnsantabarbarabritishcolumbialowiezachp" + + "omorskienishikawazukamitsuebroadcastlefrakkestadyndns-freeboxost" + + "rowwlkpmgmodenakatombetsumitakagiizebroadwaybroke-itgorybrokerbr" + + "onnoysundyndns-homednsantacruzsantafedjeffersonishimerabrotherme" + + "saverdeatnurembergmxfinitybrowsersafetymarketsanukis-a-cubicle-s" + + "lavellinotteroybrumunddalottokonamegatakasugais-a-democratjeldsu" + + "ndyndns-ipamperedchefashionishinomiyashironobrunelasticbeanstalk" + + "asaokaminoyamaxunusualpersonishinoomotegobrusselsaotomeloyalistj" + + "ordalshalsenishinoshimattelefonicarbonia-iglesias-carboniaiglesi" + + "ascarboniabruxellesapodlasiellaktyubinskiptveterinairealtorlandy" + + "ndns-mailouvrehabmerbryanskleppanamabrynewjerseybuskerudinewport" + + "lligatjmaxxxjaworznowtv-infoodnetworkshoppingrimstadyndns-office" + + "-on-the-webcambulancebuzenishiokoppegardyndns-picsapporobuzzpana" + + "sonicateringebugattipschlesischesardegnamsskoganeis-a-designerim" + + "arumorimachidabwfastlylbaltimore-og-romsdalillyokozehimejibigawa" + + "ukraanghkeymachinewhampshirebungoonord-aurdalpha-myqnapcloudacce" + + "sscambridgestonemurorangeiseiyoichippubetsubetsugaruhrhcloudns3-" + + "eu-central-1bzhitomirumalselvendrellowiczest-le-patronishitosash" + + "imizunaminamiashigaracompute-1computerhistoryofscience-fictionco" + + "msecuritytacticsaseboknowsitallvivano-frankivskasuyanagawacondos" + + "hichinohealth-carereformitakeharaconferenceconstructionconsulado" + + "esntexistanbullensvanguardyndns-workisboringrueconsultanthropolo" + + "gyconsultingvollcontactoyonocontemporaryarteducationalchikugodoh" + + "aruovatoyookannamifunecontractorskenconventureshinodearthdfcbank" + + "aszubycookingchannelsdvrdnsdojoetsuwanouchikujogaszczytnordreisa" + + "-geekatowicecoolkuszkolahppiacenzaganquannakadomarineustarhubsas" + + "katchewancooperaunitemp-dnsassaris-a-gurulsandoycopenhagencyclop" + + "edichernihivanovodkagoshimalvikashibatakashimaseratis-a-financia" + + "ladvisor-aurdalucaniacorsicagliaridagawashtenawdev-myqnapcloudap" + + "plebtimnetzwhoswhokksundyndns1corvettenrightathomeftparliamentoy" + + "osatoyakokonoecosenzakopanerairguardiann-arboretumbriacosidnsfor" + + "-better-thanawatchesatxn--12c1fe0bradescorporationcostumedio-cam" + + "pidano-mediocampidanomediocouchpotatofriesaudacouncilcouponsauhe" + + "radynnsavannahgacoursesaves-the-whalessandria-trani-barletta-and" + + "riatranibarlettaandriacqhachiojiyahoooshikamaishimodatecranbrook" + + "uwanalyticsavonaplesaxocreditcardynulvikatsushikabeeldengeluidyn" + + "v6creditunioncremonashgabadaddjambylcrewiiheyakagecricketrzyncri" + + "meast-kazakhstanangercrotonexus-2crownprovidercrsvparmacruisesbs" + + "chokoladencryptonomichigangwoncuisinellair-traffic-controlleycul" + + "turalcentertainmentoyotaris-a-hard-workercuneocupcakecxn--12cfi8" + + "ixb8lcyberlevagangaviikanonjis-a-huntercymrussiacyonabarunzencyo" + + "utheworkpccwildlifedorainfracloudcontrolledogawarabikomaezakirun" + + "orfolkebibleikangerfidonnakaniikawatanagurafieldfiguerestauranto" + + "yotsukaidownloadfilateliafilegearfilminamiechizenfinalfinancefin" + + "eartscientistockholmestrandfinlandfinnoyfirebaseapparscjohnsonfi" + + "renzefirestonefirmdaleirvikatsuyamasfjordenfishingolffanscotland" + + "fitjarfitnessettlementoyourafjalerflesbergulenflickragerotikakeg" + + "awaflightscrapper-siteflirflogintogurafloraflorencefloridavvesii" + + "dazaifudaigojomedizinhistorischescrappingunmarburguovdageaidnusl" + + "ivinghistoryfloripaderbornfloristanohatakahamangyshlakasamatsudo" + + "ntexisteingeekaufenflorogerserveftpartis-a-landscaperflowerserve" + + "game-serversicherungushikamifuranortonflynnhostingxn--1ck2e1bamb" + + "leclercasadelamonedatingjerstadotsuruokakudamatsuemrflynnhubanan" + + "arepublicaseihichisobetsuitainairforcechirealmetlifeinsuranceu-1" + + "fndfor-ourfor-someethnologyfor-theaterforexrothachirogatakahatak" + + "aishimogosenforgotdnservehalflifestyleforli-cesena-forlicesenafo" + + "rlikescandynamic-dnservehttpartnerservehumourforsaleitungsenfors" + + "andasuolodingenfortmissoulancashireggio-calabriafortworthadanose" + + "gawaforuminamifuranofosneserveirchernovtsykkylvenetogakushimotog" + + "anewyorkshirecipesaro-urbino-pesarourbinopesaromasvuotnaharimamu" + + "rogawassamukawataricohdatsunanjoburgriwataraidyndns-remotewdyndn" + + "s-serverdaluccapitalonewspaperfotaruis-a-lawyerfoxfordebianfredr" + + "ikstadtvserveminecraftoystre-slidrettozawafreeddnsgeekgalaxyfree" + + "masonryfreesitexascolipicenogiftservemp3freetlservep2partservepi" + + "cservequakefreiburgfreightcminamiiselectozsdeloittevadsoccertifi" + + "cationfresenius-4fribourgfriuli-v-giuliafriuli-ve-giuliafriuli-v" + + "egiuliafriuli-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafr" + + "iuliv-giuliafriulive-giuliafriulivegiuliafriulivenezia-giuliafri" + + "uliveneziagiuliafriulivgiuliafrlfroganservesarcasmatartanddesign" + + "frognfrolandfrom-akrehamnfrom-alfrom-arfrom-azfrom-capebretonami" + + "astalowa-wolayangroupartyfrom-coguchikuzenfrom-ctrani-andria-bar" + + "letta-trani-andriafrom-dchirurgiens-dentistes-en-francefrom-dedy" + + "n-ip24from-flanderservicesettsurgeonshalloffamemergencyachtsevas" + + "topolefrom-gausdalfrom-higashiagatsumagoizumizakirkenesevenassis" + + "icilyfrom-iafrom-idfrom-ilfrom-incheonfrom-ksewilliamhillfrom-ky" + + "owariasahikawafrom-lancasterfrom-maniwakuratextileksvikautokeino" + + "from-mdfrom-megurokunohealthcareersharis-a-liberalfrom-microsoft" + + "bankazofrom-mnfrom-modellingfrom-msharpasadenamsosnowiechiryukyu" + + "ragifuchungbukharafrom-mtnfrom-nchitachinakagawatchandclockashih" + + "arafrom-ndfrom-nefrom-nhktraniandriabarlettatraniandriafrom-njcb" + + "nlfrom-nminamiizukamishihoronobeauxartsandcraftshawaiijimarugame" + + "-hostrolekamikitayamatsuris-a-libertarianfrom-nvalled-aostatoilf" + + "rom-nyfrom-ohkurafrom-oketohmannorth-kazakhstanfrom-orfrom-padov" + + "aksdalfrom-pratohnoshooguyfrom-rivnefrom-schoenbrunnfrom-sdfrom-" + + "tnfrom-txn--1ctwolominamatakkokamiokamiminershellaspeziafrom-uta" + + "zuerichardlillehammerfeste-ipassagenshimojis-a-linux-useranishia" + + "ritabashijonawatefrom-val-daostavalleyfrom-vtranoyfrom-wafrom-wi" + + "elunnerfrom-wvalledaostavangerfrom-wyfrosinonefrostalbanshimokaw" + + "afroyahikobeardubaiduckdnshimokitayamafstavernfujiiderafujikawag" + + "uchikonefujiminohtawaramotoineppubolognakanotoddenfujinomiyadafu" + + "jiokayamansionshimonitayanagithubusercontentransportransurlfujis" + + "atoshonairtelecitychyattorneyagawakuyabukidsmynasushiobaragusart" + + "shimonosekikawafujisawafujishiroishidakabiratoridefenseljordfuji" + + "tsurugashimaritimekeepingfujixeroxn--1lqs03nfujiyoshidafukayabea" + + "tshimosuwalkis-a-llamarylandfukuchiyamadafukudominichitosetogits" + + "uldalucernefukuis-a-musicianfukumitsubishigakirovogradoyfukuokaz" + + "akiryuohadselfipassenger-associationfukuroishikarikaturindalfuku" + + "sakisarazurewebsiteshikagamiishibukawafukuyamagatakaharufunabash" + + "iriuchinadafunagatakahashimamakishiwadafunahashikamiamakusatsuma" + + "sendaisennangonohejis-a-nascarfanfundaciofuoiskujukuriyamanxn--1" + + "lqs71dfuosskoczowinbarcelonagasakikonaikawachinaganoharamcoacham" + + "pionshiphoptobishimaizurugbydgoszczecinemakeupowiathletajimabari" + + "akembuchikumagayagawakkanaibetsubamericanfamilydscloudcontrolapp" + + "spotagerfurnitureggio-emilia-romagnakasatsunairtrafficplexus-1fu" + + "rubiraquarellebesbyenglandfurudonostiaarpaviancarrierfurukawais-" + + "a-nurservebbshimotsukefusodegaurafussagamiharafutabayamaguchinom" + + "igawafutboldlygoingnowhere-for-moregontrailroadfuttsurugimperiaf" + + "uturecmshimotsumafuturehostingfuturemailingfvgfylkesbiblackfrida" + + "yfyresdalhangglidinghangoutsystemscloudfunctionshinichinanhannan" + + "mokuizumodernhannotaireshinjournalisteinkjerusalembroideryhanyuz" + + "enhapmirhareidsbergenharstadharvestcelebrationhasamarcheapgfoggi" + + "ahasaminami-alpssells-itrapaniimimatakatoris-a-playerhashbanghas" + + "udahasura-appharmacienshinjukumanohasvikazunohatogayaitakamoriok" + + "aluganskolevangerhatoyamazakitahiroshimarnardalhatsukaichikaisei" + + "s-a-republicancerresearchaeologicaliforniahattfjelldalhayashimam" + + "otobungotakadapliernewmexicodyn-vpnplusterhazuminobusellsyourhom" + + "egoodshinkamigotoyohashimotoshimahboehringerikehelsinkitakamiizu" + + "misanofidelityhembygdsforbundhemneshinshinotsurgeryhemsedalhepfo" + + "rgeherokussldheroyhgtvallee-aosteroyhigashichichibunkyonanaoshim" + + "ageandsoundandvisionhigashihiroshimanehigashiizumozakitakatakana" + + "beautysfjordhigashikagawahigashikagurasoedahigashikawakitaaikita" + + "kyushuaiahigashikurumeiwamarriottravelchannelhigashimatsushimars" + + "hallstatebankddielddanuorrikuzentakataiwanairlinebraskaunjargals" + + "aceohigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycle" + + "shinshirohigashinarusembokukitamidoris-a-rockstarachowicehigashi" + + "nehigashiomihachimanchesterhigashiosakasayamanakakogawahigashish" + + "irakawamatakanezawahigashisumiyoshikawaminamiaikitamotosumy-rout" + + "erhigashitsunotogawahigashiurausukitanakagusukumoduminamiminowah" + + "igashiyamatokoriyamanashifteditchyouripharmacyshintokushimahigas" + + "hiyodogawahigashiyoshinogaris-a-socialistmein-vigorgehiraizumisa" + + "tohobby-sitehirakatashinagawahiranais-a-soxfanhirarahiratsukagaw" + + "ahirayaizuwakamatsubushikusakadogawahistorichouseshintomikasahar" + + "ahitachiomiyagildeskaliszhitachiotagooglecodespotravelersinsuran" + + "cehitraeumtgeradellogliastradinghjartdalhjelmelandholeckobierzyc" + + "eholidayhomeiphdhomelinkfhappouhomelinuxn--1qqw23ahomeofficehome" + + "securitymaceratakaokamakurazakitashiobarahomesecuritypchloehomes" + + "enseminehomeunixn--2m4a15ehondahoneywellbeingzonehongopocznorthw" + + "esternmutualhonjyoitakarazukameokameyamatotakadahornindalhorseou" + + "lminamiogunicomcastresistancehortendofinternet-dnshinyoshitomiok" + + "amogawahospitalhoteleshiojirishirifujiedahotmailhoyangerhoylande" + + "troitskydivinghumanitieshioyanaizuhurdalhurumajis-a-studentalhyl" + + "lestadhyogoris-a-teacherkassymantechnologyhyugawarahyundaiwafune" + + "hzchocolatemasekashiwarajewishartgalleryjfkharkovalleeaosteigenj" + + "gorajlcube-serverrankoshigayakumoldelmenhorstagejlljmphilipsynol" + + "ogy-diskstationjnjcphilatelyjoyokaichibahccavuotnagareyamalborkd" + + "alwaysdatabaseballangenoamishirasatochigiessensiositelemarkherso" + + "njpmorganjpnjprshiraokananporovigotpantheonsitejuniperjurkoshuna" + + "ntokigawakosugekotohiradomainshiratakahagitlaborkotourakouhokuta" + + "makis-an-artistcgrouphiladelphiaareadmyblogsitekounosupplieshish" + + "ikuis-an-engineeringkouyamashikokuchuokouzushimasoykozagawakozak" + + "is-an-entertainerkozowindmillkpnkppspdnshisognekrasnodarkredston" + + "ekristiansandcatshisuifuelblagdenesnaaseralingenkainanaejrietisa" + + "latinabenonichoshibuyachiyodavvenjargaulardalutskasukabedzin-the" + + "-bandaioiraseeklogest-mon-blogueurovisionisshingugekristiansundk" + + "rodsheradkrokstadelvaldaostarnbergkryminamisanrikubetsupportrent" + + "ino-alto-adigekumatorinokumejimasudakumenanyokkaichiropractichoy" + + "odobashichikashukujitawarakunisakis-bykunitachiarailwaykunitomig" + + "usukumamotoyamassa-carrara-massacarraramassabusinessebyklegalloc" + + "alhistoryggeelvinckhmelnytskyivanylvenicekunneppulawykunstsammlu" + + "ngkunstunddesignkuokgrouphoenixn--30rr7ykureggioemiliaromagnakay" + + "amatsumaebashikshacknetrentino-altoadigekurgankurobelaudiblebork" + + "angerkurogimilanokuroisoftwarendalenugkuromatsunais-certifieduca" + + "torahimeshimamateramochizukirakurotakikawasakis-foundationkushir" + + "ogawakustanais-gonekusupplykutchanelkutnokuzumakis-into-animelbo" + + "urnekvafjordkvalsundkvamlidlugolekafjordkvanangenkvinesdalkvinnh" + + "eradkviteseidskogkvitsoykwpspiegelkzmisugitokorozawamitourismola" + + "ngevagrarchaeologyeongbuknx-serveronakatsugawamitoyoakemiuramiya" + + "zumiyotamanomjondalenmlbfanmonstermonticellolmontrealestatefarme" + + "quipmentrentino-s-tirollagrigentomologyeonggiehtavuoatnagaivuotn" + + "agaokakyotambabia-goracleaningatlantabusebastopologyeongnamegawa" + + "keisenbahnmonza-brianzaporizhzhiamonza-e-della-brianzapposhitara" + + "mamonzabrianzaptokuyamatsusakahoginankokubunjis-leetnedalmonzaeb" + + "rianzaramonzaedellabrianzamoonscalezajskolobrzegersundmoparachut" + + "ingmordoviajessheiminamitanemoriyamatsushigemoriyoshimilitarymor" + + "monmouthagakhanamigawamoroyamatsuuramortgagemoscowindowshizukuis" + + "himofusaintlouis-a-bruinsfanmoseushistorymosjoenmoskeneshizuokan" + + "azawamosshoujis-lostre-toteneis-an-accountantshirahamatonbetsurn" + + "adalmosvikomaganemoteginowaniihamatamakawajimaoris-not-certified" + + "unetbankhakassiamoviemovistargardmtpchristiansburgrondarmtranbym" + + "uenstermuginozawaonsenmuikamisunagawamukochikushinonsenergymulho" + + "uservebeermunakatanemuncieszynmuosattemuphonefosshowamurmanskoma" + + "kiyosunndalmurotorcraftrentino-stirolmusashimurayamatsuzakis-sav" + + "edmusashinoharamuseetrentino-sud-tirolmuseumverenigingmusicargod" + + "addynaliascoli-picenogataijis-slickharkivgucciprianiigataishinom" + + "akinderoymutsuzawamy-vigorlicemy-wanggouvicenzamyactivedirectory" + + "myasustor-elvdalmycdn77-securecifedexhibitionmyddnskingmydissent" + + "rentino-sudtirolmydrobofagemydshowtimemorialmyeffectrentino-sued" + + "-tirolmyfirewallonieruchomoscienceandindustrynmyfritzmyftpaccess" + + "hriramsterdamnserverbaniamyfusionmyhome-serversaillesienarashino" + + "mykolaivaolbia-tempio-olbiatempioolbialystokkepnoduminamiuonumat" + + "sumotofukemymailermymediapchristmasakimobetsuliguriamyokohamamat" + + "sudamypephotographysiomypetsigdalmyphotoshibajddarchitecturealty" + + "dalipaymypsxn--32vp30hagebostadmysecuritycamerakermyshopblocksil" + + "komatsushimashikizunokunimihoboleslawiechonanbuilderschmidtre-ga" + + "uldalukowhalingroks-thisayamanobeokalmykiamytis-a-bloggermytulea" + + "piagetmyipictetrentino-suedtirolmyvnchromedicaltanissettairamywi" + + "reitrentinoa-adigepinkomforbarclays3-us-east-2pioneerpippupictur" + + "esimple-urlpiszpittsburghofauskedsmokorsetagayasells-for-usgarde" + + "npiwatepixolinopizzapkommunalforbundplanetariuminamiyamashirokaw" + + "anabelembetsukubanklabudhabikinokawabarthaebaruminamimakis-a-pai" + + "nteractivegarsheis-a-patsfanplantationplantslingplatformshangril" + + "anslupskommuneplaystationplazaplchryslerplumbingopmnpodzonepohlp" + + "oivronpokerpokrovskomonopolitiendapolkowicepoltavalle-aostarostw" + + "odzislawinnersnoasaitamatsukuris-uberleetrdpomorzeszowiosokaneya" + + "mazoepordenonepornporsangerporsanguidell-ogliastraderporsgrunnan" + + "poznanpraxis-a-bookkeeperugiaprdpreservationpresidioprgmrprimelh" + + "uscultureisenprincipeprivatizehealthinsuranceprochowiceproductio" + + "nsokndalprofbsbxn--12co0c3b4evalleaostaticschuleprogressivegasia" + + "promombetsurfbx-oschwarzgwangjuifminamidaitomangotsukisofukushim" + + "aparocherkasyno-dschweizpropertyprotectionprotonetrentinoaadigep" + + "rudentialpruszkowitdkomorotsukamisatokamachintaifun-dnsaliasdabu" + + "rprzeworskogptplusdecorativeartsolarssonpvtrentinoalto-adigepwch" + + "ungnamdalseidfjordyndns-weberlincolniyodogawapzqldqponqslgbtrent" + + "inoaltoadigequicksytesolognequipelementsolundbeckomvuxn--2scrj9c" + + "hoseiroumuenchenissandnessjoenissayokoshibahikariwanumatakazakis" + + "-a-greenissedaluroyqvchurchaseljeepsongdalenviknagatorodoystufft" + + "oread-booksnesomnaritakurashikis-very-badajozorastuttgartrentino" + + "sudtirolsusakis-very-evillagesusonosuzakaniepcesuzukanmakiwakuni" + + "gamidsundsuzukis-very-goodhandsonsvalbardunloppacificirclegnicaf" + + "ederationsveiosvelvikongsvingersvizzerasvn-reposooswedenswidnica" + + "rtierswiebodzindianapolis-a-anarchistoireggiocalabriaswiftcovers" + + "winoujscienceandhistoryswisshikis-very-nicesynology-dsopotrentin" + + "os-tirolturystykanoyaltakasakiwientuscanytushuissier-justicetuva" + + "lle-daostatic-accessorreisahayakawakamiichikawamisatotaltuxfamil" + + "ytwmailvbargainstitutelevisionaustdalimanowarudaustevollavangena" + + "turbruksgymnaturhistorisches3-eu-west-1venneslaskerrylogisticsor" + + "tlandvestfoldvestnesoruminanovestre-slidreamhostersouthcarolinaz" + + "awavestre-totennishiawakuravestvagoyvevelstadvibo-valentiavibova" + + "lentiavideovillaskimitsubatamicable-modemoneyvinnicartoonartdeco" + + "ffeedbackplaneapplinzis-very-sweetpeppervinnytsiavipsinaappilots" + + "irdalvirginiavirtualvirtueeldomeindianmarketingvirtuelvisakataki" + + "nouevistaprinternationalfirearmsouthwestfalenviterboltrevisohugh" + + "esor-odalvivoldavixn--3bst00mincommbankmpspbarclaycards3-sa-east" + + "-1vlaanderenvladikavkazimierz-dolnyvladimirvlogoipimientaketomis" + + "atolgavolkswagentsowavologdanskonskowolawavolvolkenkundenvolyngd" + + "alvossevangenvotevotingvotoyonakagyokutourspjelkavikongsbergwloc" + + "lawekonsulatrobeepilepsydneywmflabspreadbettingworldworse-thanda" + + "wowithgoogleapisa-hockeynutsiracusakakinokiawpdevcloudwritesthis" + + "blogsytewroclawithyoutubeneventoeidsvollwtcircustomerwtfbxoscien" + + "cecentersciencehistorywuozuwwwiwatsukiyonowruzhgorodeowzmiuwajim" + + "axn--42c2d9axn--45br5cylxn--45brj9citadeliveryxn--45q11citicatho" + + "licheltenham-radio-opencraftrainingripescaravantaaxn--4gbriminin" + + "gxn--4it168dxn--4it797kooris-an-actorxn--4pvxs4allxn--54b7fta0cc" + + "ivilaviationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilisati" + + "onxn--5rtq34kopervikhmelnitskiyamashikexn--5su34j936bgsgxn--5tzm" + + "5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264civili" + + "zationxn--80adxhkspydebergxn--80ao21axn--80aqecdr1axn--80asehdba" + + "rreauctionaval-d-aosta-valleyolasiteu-2xn--80aswgxn--80audnedaln" + + "xn--8ltr62koryokamikawanehonbetsurutaharaxn--8pvr4uxn--8y0a063ax" + + "n--90a3academy-firewall-gatewayxn--90aeroportalaheadjudaicaaarbo" + + "rteaches-yogasawaracingroks-theatreexn--90aishobaraomoriguchihar" + + "ahkkeravjuedischesapeakebayernrtritonxn--90azhytomyrxn--9dbhblg6" + + "dietcimdbarrel-of-knowledgemologicallimitediscountysvardolls3-us" + + "-gov-west-1xn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aropor" + + "t-byandexn--3ds443gxn--asky-iraxn--aurskog-hland-jnbarrell-of-kn" + + "owledgeologyombondiscoveryomitanobninskarasjohkaminokawanishiaiz" + + "ubangeu-3utilitiesquare7xn--avery-yuasakegawaxn--b-5gaxn--b4w605" + + "ferdxn--bck1b9a5dre4civilwarmanagementjxn--0trq7p7nnxn--bdddj-mr" + + "abdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccav" + + "uotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsu" + + "rreyxn--bjddar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-gra" + + "ingerxn--bod-2naroyxn--brnny-wuaccident-investigation-aptiblease" + + "ating-organicbcn-north-1xn--brnnysund-m8accident-prevention-webh" + + "openairbusantiquest-a-la-maisondre-landebudapest-a-la-masionionj" + + "ukudoyamagentositelekommunikationthewifiat-band-campaniaxn--brum" + + "-voagatroandinosaurepbodynathomebuiltrentinosued-tirolxn--btsfjo" + + "rd-9zaxn--c1avgxn--c2br7gxn--c3s14minnesotaketakatsukis-into-car" + + "shiranukanagawaxn--cck2b3barsyonlinewhollandishakotanavigationav" + + "oibmdisrechtranakaiwamizawaweddingjesdalimoliserniaustinnatuurwe" + + "tenschappenaumburgjerdrumckinseyokosukanzakiyokawaragrocerybnika" + + "hokutobamaintenancebetsuikicks-assedic66xn--cg4bkis-with-theband" + + "ovre-eikerxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumintelligenc" + + "exn--comunicaes-v6a2oxn--correios-e-telecomunicaes-ghc29axn--czr" + + "694bashkiriaustraliaisondriodejaneirochesterxn--czrs0trogstadxn-" + + "-czru2dxn--czrw28basilicataniaustrheimatunduhrennesoyokotebinore" + + "-og-uvdalaziobiraskvolloabathsbcasacamdvrcampobassociatestingjem" + + "nes3-ap-southeast-1xn--d1acj3basketballyngenavuotnaklodzkodairau" + + "thordalandroiddnss3-eu-west-2xn--d1alfaromeoxn--d1atromsaitomobe" + + "llevuelosangelesjaguarmeniaxn--d5qv7z876claimsardiniaxn--davvenj" + + "rga-y4axn--djrs72d6uyxn--djty4kosaigawaxn--dnna-grajewolterskluw" + + "erxn--drbak-wuaxn--dyry-iraxn--e1a4clanbibaidarq-axn--eckvdtc9dx" + + "n--efvn9srlxn--efvy88haibarakisosakitagawaxn--ehqz56nxn--elqq16h" + + "air-surveillancexn--estv75gxn--eveni-0qa01gaxn--f6qx53axn--fct42" + + "9kosakaerodromegallupinbarefootballfinanzgoraurskog-holandroverh" + + "alla-speziaetnagahamaroygardenebakkeshibechambagriculturennebude" + + "jjudygarlandd-dnshome-webservercellikes-piedmontblancomeeres3-ap" + + "-south-1kappchizippodhaleangaviikadenadexetereport3l3p0rtargets-" + + "itargivestbytomaritimobaravennagasuke12hpalace164lima-cityeatsel" + + "inogradultarnobrzegyptianativeamericanantiques3-ap-northeast-133" + + "7xn--fhbeiarnxn--finny-yuaxn--fiq228c5hsrtrentinostirolxn--fiq64" + + "batodayonagoyautomotivecoalvdalaskanittedallasalleasinglesurance" + + "rtmgretagajoboji234xn--fiqs8srvaporcloudxn--fiqz9storagexn--fjor" + + "d-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn" + + "--frde-grandrapidstordalxn--frna-woaraisaijotromsojampagefrontap" + + "piemontexn--frya-hraxn--fzc2c9e2cldmailuxembourgrongaxn--fzys8d6" + + "9uvgmailxn--g2xx48clickasumigaurawa-mazowszextraspacekitagatajir" + + "issagaeroclubmedecincinnationwidealstahaugesunderseaportsinfolld" + + "alabamagasakishimabarackmazerbaijan-mayendoftheinternetflixilove" + + "collegefantasyleaguernseyxn--gckr3f0fedorapeopleirfjordynvpncher" + + "nivtsiciliaxn--gecrj9clinichernigovernmentjometacentruminamiawaj" + + "ikis-a-doctorayxn--ggaviika-8ya47hakatanoshiroomuraxn--gildeskl-" + + "g0axn--givuotna-8yasakaiminatoyonezawaxn--gjvik-wuaxn--gk3at1exn" + + "--gls-elacaixaxn--gmq050isleofmandalxn--gmqw5axn--h-2failxn--h1a" + + "eghakodatexn--h2breg3evenestorepaircraftrentinosud-tirolxn--h2br" + + "j9c8cliniquenoharaxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7y" + + "a35batsfjordivtasvuodnakamagayahababyglandivttasvuotnakamurataji" + + "mibuildingjovikarasjokarasuyamarylhurstjohnayorovnoceanographics" + + "3-us-west-1xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4acctrus" + + "teexn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqaxn--hx" + + "t814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr513nxn" + + "--indery-fyasugivingxn--io0a7issmarterthanyouxn--j1aefedoraproje" + + "ctoyotomiyazakis-a-knightpointtokaizukamikoaniikappugliaxn--j1am" + + "hakonexn--j6w193gxn--jlq61u9w7bauhausposts-and-telecommunication" + + "sncfdiyonaguniversityoriikarateu-4xn--jlster-byasuokanraxn--jrpe" + + "land-54axn--jvr189misakis-into-cartoonshiraois-a-techietis-a-the" + + "rapistoiaxn--k7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kf" + + "jord-iuaxn--klbu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--" + + "3e0b707exn--koluokta-7ya57hakubaghdadxn--kprw13dxn--kpry57dxn--k" + + "pu716fermodalenxn--kput3iwchofunatoriginsurecreationishiwakis-a-" + + "geekashiwazakiyosatokashikiyosemitexn--krager-gyatomitamamuraxn-" + + "-kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49j" + + "elenia-goraxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazu" + + "ryxn--kvnangen-k0axn--l-1fairwindstorfjordxn--l1accentureklambor" + + "ghiniizaxn--laheadju-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ld" + + "ingen-q1axn--leagaviika-52bbcasertaipeiheijiitatebayashiibahcavu" + + "otnagaraholtalenvironmentalconservationflfanfshostrowiecasinordl" + + "andnpalermomahachijorpelandrangedalindashorokanaieverbankaratsug" + + "inamikatagamiharuconnectashkentatamotors3-us-west-2xn--lesund-hu" + + "axn--lgbbat1ad8jeonnamerikawauexn--lgrd-poaclintonoshoesarluxury" + + "xn--lhppi-xqaxn--linds-pramericanartrvareserveblogspotrentinosue" + + "dtirolxn--lns-qlapyatigorskypexn--loabt-0qaxn--lrdal-sraxn--lren" + + "skog-54axn--lt-liaclothingdustkakamigaharaxn--lten-granexn--lury" + + "-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddestorjdevclo" + + "udfrontdoorxn--mgb9awbferraraxn--mgba3a3ejtrysiljanxn--mgba3a4f1" + + "6axn--mgba3a4franamizuholdingsmilelverumisasaguris-into-gamessin" + + "atsukigatakasagotembaixadaxn--mgba7c0bbn0axn--mgbaakc7dvferrarit" + + "togoldpoint2thisamitsukexn--mgbaam7a8hakuis-a-personaltrainerxn-" + + "-mgbab2bdxn--mgbai9a5eva00bbtatarantottoriiyamanouchikuhokuryuga" + + "sakitaurayasudautoscanadaejeonbukaragandasnesoddenmarkhangelskja" + + "kdnepropetrovskiervaapsteiermark12xn--mgbai9azgqp6jetztrentino-a" + + "-adigexn--mgbayh7gpagespeedmobilizeroxn--mgbb9fbpobanazawaxn--mg" + + "bbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgberp4a5d4a87gxn--mgbe" + + "rp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskodjejuegosh" + + "ikiminokamoenairportland-4-salernoboribetsuckstpetersburgxn--mgb" + + "qly7c0a67fbcnsarpsborgrossetouchijiwadegreexn--mgbqly7cvafranzis" + + "kanerdpolicexn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bbvacations" + + "watch-and-clockerxn--mgbx4cd0abbottulanxessor-varangerxn--mix082" + + "ferreroticanonoichinomiyakexn--mix891fetsundyroyrvikinguitarscho" + + "larshipschoolxn--mjndalen-64axn--mk0axindustriesteamfamberkeleyx" + + "n--mk1bu44cntkmaxxn--11b4c3dyndns-wikinkobayashikaoirminamibosog" + + "ndaluzernxn--mkru45ixn--mlatvuopmi-s4axn--mli-tlaquilanciaxn--ml" + + "selv-iuaxn--moreke-juaxn--mori-qsakuhokkaidoomdnsiskinkyotobetsu" + + "midatlanticolognextdirectmparaglidingroundhandlingroznyxn--mosje" + + "n-eyawaraxn--mot-tlarvikoseis-an-actresshirakofuefukihaboromskog" + + "xn--mre-og-romsdal-qqbentleyoshiokaracoldwarmiamihamadaveroykeni" + + "waizumiotsukuibestadds3-external-1xn--msy-ula0hakusandiegoodyear" + + "xn--mtta-vrjjat-k7afamilycompanycolonialwilliamsburgrparisor-fro" + + "nxn--muost-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn-" + + "-3hcrj9cistrondheimmobilienxn--nit225kosherbrookegawaxn--nmesjev" + + "uemie-tcbalestrandabergamoarekexn--nnx388axn--nodessakuragawaxn-" + + "-nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-bya" + + "eservecounterstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattanoogan" + + "ordre-landxn--o3cw4haldenxn--o3cyx2axn--od0algxn--od0aq3beppubli" + + "shproxyzgorzeleccollectionhlfanhs3-website-ap-northeast-1xn--ogb" + + "pf8flekkefjordxn--oppegrd-ixaxn--ostery-fyawatahamaxn--osyro-wua" + + "xn--p1acfgujolsterxn--p1aixn--pbt977coloradoplateaudioxn--pgbs0d" + + "hlxn--porsgu-sta26fhvalerxn--pssu33lxn--pssy2uxn--q9jyb4columbus" + + "heyxn--qcka1pmcdonaldstreamuneuesolutionsomaxn--qqqt11misconfuse" + + "dxn--qxamusementunesorfoldxn--rady-iraxn--rdal-poaxn--rde-ulavag" + + "iskexn--rdy-0nabarixn--rennesy-v1axn--rhkkervju-01aflakstadaokag" + + "akibichuoxn--rholt-mragowoodsideltaitogliattirestudioxn--rhqv96g" + "xn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn--risr-iraxn--r" + - "land-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31hammarfeastafricap" + - "etownnews-stagingxn--rovu88bernuorockartuzyukuhashimoichinosekig" + - "aharautoscanadaejeonbukarasjokarasuyamarylhurstjordalshalsenaust" + - "dalavagiskebizenakaniikawatanaguramusementarnobrzegyptianaturalh" + - "istorymuseumcenterepaircraftarumizusawabogadocscbgdyniabkhaziama" + - "llamagazineat-url-o-g-i-nativeamericanantiques3-ap-northeast-1ka" + - "ppchizippodhaleangaviikadenadexetereit3l3p0rtargets-itargiving12" + - "000emmafanconagawakayamadridvagsoyericssonyoursidealerimo-i-rana" + - "amesjevuemielno-ip6xn--rros-granvindafjordxn--rskog-uuaxn--rst-0" + - "narutokyotangovtuscanyxn--rsta-francaiseharaxn--ryken-vuaxn--ryr" + - "vik-byaxn--s-1faithruherecreationxn--s9brj9compute-1xn--sandness" + - "jen-ogbizxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gratangen" + - "xn--skierv-utazaskoyabearalvahkihokumakogengerdalcestpetersburgx" + - "n--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5" + - "narviikamisunagawaxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-" + - "a-bulls-fanxn--snase-nraxn--sndre-land-0cbremangerxn--snes-poaxn" + - "--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-" + - "varanger-ggbeskidyn-o-saurlandes3-website-us-east-1xn--srfold-by" + - "axn--srreisa-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--st" + - "jrdalshalsen-sqbestbuyshouses3-website-us-west-1xn--stre-toten-z" + - "cbstreamsterdamnserverbaniaxn--t60b56axn--tckweatherchannelxn--t" + - "iq49xqyjewelryxn--tjme-hraxn--tn0agrinet-freakstudioxn--tnsberg-" + - "q1axn--tor131oxn--trany-yuaxn--trgstad-r1axn--trna-woaxn--troms-" + - "zuaxn--tysvr-vraxn--uc0atvaroyxn--uc0ay4axn--uist22hamurakamigor" + - "is-a-playerxn--uisz3gxn--unjrga-rtaobaokinawashirosatochiokinosh" + - "imalatvuopmiasakuchinotsuchiurakawakuyabukievenestudyndns-at-hom" + - "edepotenzamamicrolightingxn--unup4yxn--uuwu58axn--vads-jraxn--va" + - "rd-jraxn--vegrshei-c0axn--vermgensberater-ctbetainaboxfusejnyuri" + - "honjoyentgoryusuharaveroykenglandds3-external-1xn--vermgensberat" + - "ung-pwbieigersundnpalaceu-3utilitiesquare7xn--vestvgy-ixa6oxn--v" + - "g-yiabcgxn--vgan-qoaxn--vgsy-qoa0jewishartgalleryxn--vgu402compu" + - "terhistoryofscience-fictionxn--vhquvbargainstitutelevisionayorov" + - "nobninskarelianceu-2xn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadx" + - "n--vry-yla5gxn--vuq861bielawalmartjeldsundrangedalillyusuisserve" + - "exchangevents3-website-us-west-2xn--w4r85el8fhu5dnraxn--w4rs40lx" + - "n--wcvs22dxn--wgbh1comsecuritytacticsaseboknowsitallukowhoswhokk" + - "sundyndns-workisboringroundhandlingroznyxn--wgbl6axn--xhq521biel" + - "laakesvuemielecceverbankarlsoyuufcfanikinuyamashinashikitchenikk" + - "oebenhavnikolaevennodessagaeroclubmedecincinnationwidealstahauge" + - "sunderseaportsinfolldalabamagasakishimabarackmazerbaijan-mayendo" + - "ftheinternetflixilovecollegefantasyleaguernseyuzawavocatanzarowe" + - "ddingjesdalavangenaval-d-aosta-valleyolasitehimejibigawaskvolloa" + - "bathsbc66xn--xkc2al3hye2axn--xkc2dl3a5ee0hangglidingxn--y9a3aqua" + - "riumishimatsunoxn--yer-znarvikosherbrookegawaxn--yfro4i67oxn--yg" + - "arden-p1axn--ygbi2ammxn--3pxu8konsulatrobeepilepsydneyxn--ystre-" + - "slidre-ujbieszczadygeyachimataikikonaioirasebastopologyeonggieht" + - "avuoatnagaivuotnagaokakyotambabia-goracleaningatlantabuseekloges" + - "t-mon-blogueurovisionikonantankarmoyxn--zbx025dxn--zf0ao64axn--z" + - "f0avxn--42c2d9axn--zfr164bievatmallorcadaquesakurainvestmentsaky" + - "otanabellunorddalimanowarudavoues3-fips-us-gov-west-1xperiaxz" + "land-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31halsaikitahatakama" + + "tsukawaxn--rovu88bernuorockartuzyukinfinitintuitateshinanomachim" + + "kentateyamavocatanzarowebspacebizenakanojohanamakinoharassnasaba" + + "erobatickets3-ap-southeast-2xn--rros-granvindafjordxn--rskog-uua" + + "xn--rst-0narutokyotangovtunkoninjamisonxn--rsta-francaiseharaxn-" + + "-rvc1e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithruheredumbrell" + + "ajollamericanexpressexyxn--s9brj9communitysnesarufutsunomiyawaka" + + "saikaitakoelnxn--sandnessjen-ogbizxn--sandy-yuaxn--seral-lraxn--" + + "ses554gxn--sgne-gratangenxn--skierv-utazaskoyabearalvahkijobserv" + + "erisignieznoipifonymishimatsunoxn--skjervy-v1axn--skjk-soaxn--sk" + + "nit-yqaxn--sknland-fxaxn--slat-5narviikamitondabayashiogamagoriz" + + "iaxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-a-bulls-fanxn--s" + + "nase-nraxn--sndre-land-0cbremangerxn--snes-poaxn--snsa-roaxn--sr" + + "-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbeski" + + "dyn-o-saurlandes3-website-ap-southeast-1xn--srfold-byaxn--srreis" + + "a-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalse" + + "n-sqbestbuyshouses3-website-ap-southeast-2xn--stre-toten-zcbstud" + + "yndns-at-homedepotenzamamicrolightingxn--t60b56axn--tckweatherch" + + "annelxn--tiq49xqyjevnakershuscountryestateofdelawarezzoologyxn--" + + "tjme-hraxn--tn0agrinet-freakstuff-4-salexn--tnsberg-q1axn--tor13" + + "1oxn--trany-yuaxn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr" + + "-vraxn--uc0atvarggatrentoyokawaxn--uc0ay4axn--uist22hammarfeasta" + + "fricapetownnews-stagingxn--uisz3gxn--unjrga-rtaobaokinawashirosa" + + "tochiokinoshimalatvuopmiasakuchinotsuchiurakawalesundxn--unup4yx" + + "n--uuwu58axn--vads-jraxn--vard-jraxn--vegrshei-c0axn--vermgensbe" + + "rater-ctbetainaboxfusejnynysadodgeometre-experts-comptables3-web" + + "site-eu-west-1xn--vermgensberatung-pwbieigersundray-dnsupdaterno" + + "pilawavoues3-fips-us-gov-west-1xn--vestvgy-ixa6oxn--vg-yiabcgxn-" + + "-vgan-qoaxn--vgsy-qoa0jewelryxn--vgu402comobilyxn--vhquvaroyxn--" + + "vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bi" + + "elawalmartatsunoceanographiquevje-og-hornnes3-website-sa-east-1x" + + "n--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1comparemarkerr" + + "yhotelsasayamaxn--wgbl6axn--xhq521biellaakesvuemieleccexn--xkc2a" + + "l3hye2axn--xkc2dl3a5ee0hamurakamigoris-a-photographerokuappfizer" + + "xn--y9a3aquariumissilewismillerxn--yer-znarvikoshimizumakis-an-a" + + "narchistoricalsocietyxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn-" + + "-3oq18vl8pn36axn--ystre-slidre-ujbieszczadygeyachimataikikuchiku" + + "seikarugamvikareliancexn--zbx025dxn--zf0ao64axn--zf0avxn--3pxu8k" + + "onyveloftrentino-aadigexn--zfr164bievatmallorcadaques3-website-u" + + "s-east-1xperiaxz" // nodes is the list of nodes. Each node is represented as a uint32, which // encodes the node's children, wildcard bit and node type (as an index into @@ -483,8274 +489,8419 @@ const text = "bifukagawalterbihorologybikedagestangeorgeorgiaxasnesoddenmarkha" // An I denotes an ICANN domain. // // The layout within the uint32, from MSB to LSB, is: -// [ 1 bits] unused -// [ 9 bits] children index +// [ 0 bits] unused +// [10 bits] children index // [ 1 bits] ICANN bit // [15 bits] text index // [ 6 bits] text length var nodes = [...]uint32{ - 0x31a403, - 0x284944, - 0x2dd106, - 0x3706c3, - 0x3706c6, - 0x398706, - 0x3a8103, - 0x2fe244, - 0x38e987, - 0x2dcd48, - 0x1a05702, - 0x316e87, - 0x35c789, - 0x2abb0a, - 0x2abb0b, - 0x22f383, - 0x287506, - 0x232dc5, - 0x1e021c2, - 0x2161c4, - 0x238743, - 0x26fc45, - 0x2214902, - 0x347743, - 0x266f744, - 0x33ddc5, - 0x2a04702, - 0x376b4e, - 0x24c4c3, - 0x38ae46, + 0x31fe83, + 0x28e944, + 0x2ed8c6, + 0x380743, + 0x380746, + 0x3a5306, + 0x3b5e43, + 0x30a7c4, + 0x20d0c7, + 0x2ed508, + 0x1a07102, + 0x31f1c7, + 0x368c09, + 0x2d68ca, + 0x2d68cb, + 0x238503, + 0x2dec46, + 0x23d6c5, + 0x1e07542, + 0x21cf84, + 0x266d03, + 0x346145, + 0x22035c2, + 0x20a643, + 0x271f944, + 0x342285, + 0x2a10042, + 0x38a48e, + 0x255083, + 0x3affc6, 0x2e00142, - 0x2dd287, - 0x236f46, - 0x3209282, - 0x229d83, - 0x24d9c4, - 0x325e86, - 0x26c588, - 0x2761c6, - 0x2011c4, + 0x2d4207, + 0x240d86, + 0x3204f02, + 0x22ee43, + 0x256204, + 0x32d106, + 0x25b788, + 0x2811c6, + 0x378fc4, 0x3600242, - 0x3335c9, - 0x20a1c7, - 0x351e86, - 0x330c89, - 0x298308, - 0x26e904, - 0x241ec6, - 0x222a46, - 0x3a022c2, - 0x26480f, - 0x20948e, - 0x211d04, - 0x2c2b85, - 0x2fe145, - 0x39e189, - 0x23c409, - 0x349a87, - 0x20fa86, - 0x275a83, - 0x3e02a82, - 0x315503, - 0x34e24a, - 0x20f903, - 0x2af985, - 0x284202, - 0x284209, - 0x4200ec2, - 0x212484, - 0x2b9686, - 0x2f3645, - 0x3552c4, - 0x4a05644, - 0x2030c3, - 0x232344, - 0x4e00c02, - 0x268d44, - 0x52ef6c4, - 0x25ef4a, - 0x5603dc2, - 0x2ba587, - 0x2f3b08, - 0x6208142, - 0x311687, - 0x2bf204, - 0x2bf207, - 0x36e0c5, - 0x34ffc7, - 0x349846, - 0x24f3c4, - 0x38c105, - 0x29e447, - 0x72001c2, - 0x26e503, - 0x200b82, - 0x200b83, - 0x760de02, - 0x2102c5, - 0x7a02a42, - 0x350e04, - 0x2734c5, - 0x211c47, - 0x26bcce, - 0x2b9184, - 0x245544, - 0x202f03, - 0x281d49, - 0x31ee0b, - 0x2e9a88, - 0x379948, - 0x3a9908, - 0x22ae48, - 0x330aca, - 0x34fec7, - 0x318186, - 0x7e87002, - 0x35e203, - 0x367e43, - 0x36f4c4, - 0x3a8143, - 0x3250c3, - 0x1720b82, - 0x8202502, - 0x27a8c5, - 0x296206, - 0x2d1b84, - 0x375487, - 0x2e1886, - 0x331f84, - 0x39d3c7, - 0x203bc3, - 0x86c54c2, - 0x8b0f242, - 0x8e16742, - 0x216746, - 0x9200002, - 0x3523c5, - 0x3220c3, - 0x200604, - 0x2e8f84, - 0x2e8f85, - 0x206b43, - 0x978d2c3, - 0x9a0bb42, - 0x289e05, - 0x289e0b, - 0x31e686, - 0x20cb4b, - 0x221344, - 0x20d949, - 0x20e9c4, - 0x9e0ec02, - 0x20f143, - 0x20f403, - 0x16105c2, - 0x268183, - 0x2105ca, - 0xa20b382, - 0x216445, - 0x29224a, - 0x2d7744, - 0x283783, - 0x26cfc4, - 0x212543, - 0x212544, - 0x212547, - 0x2140c5, - 0x2147c5, - 0x214f46, - 0x2157c6, - 0x216a03, - 0x21ae88, - 0x210043, - 0xa601c02, - 0x243448, - 0x213ccb, - 0x220148, - 0x220d86, - 0x221847, - 0x225348, - 0xb642b42, - 0xbabf3c2, - 0x326788, - 0x35e4c7, - 0x246085, - 0x357f48, - 0x2bd408, - 0x34dd83, - 0x22a1c4, - 0x36f502, - 0xbe2bc82, - 0xc238482, - 0xca2e802, - 0x22e803, - 0xce01ec2, - 0x2fe203, - 0x2f1e84, - 0x201ec3, - 0x26e8c4, - 0x201ecb, - 0x213c03, - 0x2de946, - 0x239f84, - 0x29034e, - 0x371145, - 0x38af48, - 0x31ffc7, - 0x31ffca, - 0x229743, - 0x22f147, - 0x31efc5, - 0x22f8c4, - 0x265b06, - 0x265b07, - 0x2c11c4, - 0x2f7a87, - 0x313d44, - 0x26c004, - 0x26c006, - 0x387184, - 0x3510c6, - 0x203f83, - 0x35e288, - 0x203f88, - 0x245503, - 0x268143, - 0x399a04, - 0x39e003, - 0xd219f02, - 0xd6d6a42, - 0x20bac3, - 0x207146, - 0x241fc3, - 0x377cc4, - 0xdaee982, - 0x3af843, - 0x3507c3, - 0x217a02, - 0xde04142, - 0x2c1946, - 0x233ac7, - 0x2e8945, - 0x37de04, - 0x28c505, - 0x268907, - 0x267805, - 0x2b8649, - 0x2cefc6, - 0x2daa88, - 0x2e8846, - 0xe21a1c2, - 0x32ca08, - 0x2f1c46, - 0x21a1c5, - 0x2f6d87, - 0x309984, - 0x309985, - 0x276384, - 0x276388, - 0xe60cc02, - 0xea09882, - 0x3103c6, - 0x3b8988, - 0x334385, - 0x337306, - 0x342f08, - 0x344a88, - 0xee09885, - 0xf2142c4, - 0x3b0787, - 0xf60e5c2, - 0xfa1b102, - 0x10a099c2, - 0x2b9785, - 0x2a2645, - 0x2fef86, - 0x3b2547, - 0x380747, - 0x112a84c3, - 0x2a84c7, - 0x31eb08, - 0x376ec9, - 0x376d07, - 0x384d07, - 0x3a8ec8, - 0x3ad4c6, - 0x22f3c6, - 0x23000c, - 0x23120a, - 0x231687, - 0x232c8b, - 0x233907, - 0x23390e, - 0x234cc4, - 0x235ac4, - 0x237a47, - 0x3690c7, - 0x23b206, - 0x23b207, - 0x23b4c7, - 0x19604682, - 0x23c886, - 0x23c88a, - 0x23ce8b, - 0x23dbc7, - 0x23ed45, - 0x23f083, - 0x240586, - 0x240587, - 0x38eb43, - 0x19a0c442, - 0x240f4a, - 0x19f5d882, - 0x1a2a5e02, - 0x1a643142, - 0x1aa2cd82, - 0x244bc5, - 0x245304, - 0x1b205742, - 0x268dc5, - 0x23d483, - 0x20eac5, - 0x22ad44, - 0x206804, - 0x314046, - 0x25e206, - 0x28a003, - 0x238284, - 0x3a6803, - 0x1b600dc2, - 0x391c04, - 0x391c06, - 0x3b0d05, - 0x205e06, - 0x2f6e88, - 0x266e84, - 0x27ed08, - 0x2426c5, - 0x228308, - 0x29ff86, - 0x237587, - 0x22e204, - 0x22e206, - 0x33f443, - 0x383ec3, - 0x223d08, - 0x318dc4, - 0x348747, - 0x23e6c6, - 0x2d6389, - 0x250348, - 0x26cd08, - 0x26d084, - 0x351443, - 0x225e02, - 0x1c60f882, - 0x1ca10e82, - 0x3a7403, - 0x1ce04a42, - 0x38eac4, - 0x2862c6, - 0x26e605, - 0x21ba03, - 0x232884, - 0x2b14c7, - 0x33da03, - 0x231a88, - 0x208545, - 0x36e803, - 0x273445, - 0x273584, - 0x2f6a86, - 0x209ec4, - 0x211346, - 0x211b86, - 0x3916c4, - 0x213b43, - 0x1d205882, - 0x247345, - 0x221c03, - 0x1d61b0c2, - 0x22ffc3, - 0x209bc5, - 0x232403, - 0x232409, - 0x1da05f02, - 0x1e205e42, - 0x2893c5, - 0x218786, - 0x2d1746, - 0x2b0a88, - 0x2b0a8b, - 0x20718b, - 0x2e8b45, - 0x2db145, - 0x2c6309, - 0x1600302, - 0x391888, - 0x20dc44, - 0x1ea007c2, - 0x3a7883, - 0x1f2c6086, - 0x20ae88, - 0x1f601402, - 0x2344c8, - 0x1fa2bb82, - 0x3b92ca, - 0x1feccc43, - 0x3ac1c6, - 0x3af408, - 0x3ac008, - 0x31d006, - 0x36bc07, - 0x264a07, - 0x3349ca, - 0x2d77c4, - 0x3474c4, - 0x35c1c9, - 0x20794385, - 0x209686, - 0x20e1c3, - 0x24a044, - 0x20a02644, - 0x202647, - 0x212fc7, - 0x22a584, - 0x285445, - 0x2ff048, - 0x366747, - 0x370f07, - 0x20e18342, - 0x327704, - 0x292b48, - 0x245bc4, - 0x247784, - 0x248085, - 0x2481c7, - 0x223589, - 0x248fc4, - 0x249709, - 0x249948, - 0x249dc4, - 0x249dc7, - 0x2124aa83, - 0x24ad47, - 0x1609d02, - 0x16ad202, - 0x24bec6, - 0x24c507, - 0x24cd44, - 0x24e6c7, - 0x24fa47, - 0x24fdc3, - 0x248902, - 0x229642, - 0x250a03, - 0x250a04, - 0x250a0b, - 0x379a48, - 0x256804, - 0x2523c5, - 0x254007, - 0x2555c5, - 0x2bc00a, - 0x256743, - 0x2160fc82, - 0x226e84, - 0x258d89, - 0x25c343, - 0x25c407, - 0x24a849, - 0x282688, - 0x204743, - 0x278fc7, - 0x279709, - 0x268ac3, - 0x2810c4, - 0x283c89, - 0x2880c6, - 0x289683, - 0x200182, - 0x21f983, - 0x3a8a87, - 0x21f985, - 0x379746, - 0x256e84, - 0x302e85, - 0x2e4403, - 0x216c46, - 0x20db42, - 0x395144, - 0x221402, - 0x221403, - 0x21a00782, - 0x247303, - 0x215c44, - 0x215c47, - 0x200906, - 0x202602, - 0x21e025c2, - 0x2dca84, - 0x22235e82, - 0x22600b02, - 0x2d4f84, - 0x2d4f85, - 0x2b6dc5, - 0x390e06, - 0x22a05d42, - 0x205d45, - 0x20cf05, - 0x20ae03, - 0x210986, - 0x2126c5, - 0x2166c2, - 0x343605, - 0x2166c4, - 0x221ec3, - 0x227343, - 0x22e0c642, - 0x2d4987, - 0x3669c4, - 0x3669c9, - 0x249f44, - 0x291d43, - 0x2f6609, - 0x367508, - 0x232a24c4, - 0x2a24c6, - 0x21c303, - 0x247bc3, - 0x2e9dc3, - 0x236eb382, - 0x368cc2, - 0x23a05e82, - 0x323cc8, - 0x32a388, - 0x398e46, - 0x2e27c5, - 0x22efc5, - 0x352ec7, - 0x21d205, - 0x228782, - 0x23e38182, - 0x1603002, - 0x2416c8, - 0x32c945, - 0x2e3404, - 0x2ebac5, - 0x23f407, - 0x3207c4, - 0x240e42, - 0x24200582, - 0x338984, - 0x212cc7, - 0x28a2c7, - 0x34ff84, - 0x292203, - 0x245444, - 0x245448, - 0x22f706, - 0x26598a, - 0x223444, - 0x292588, - 0x288504, - 0x221946, - 0x294684, - 0x2b9a86, - 0x366c89, - 0x25da47, - 0x3375c3, - 0x24667e42, - 0x267e43, - 0x20ee02, - 0x24a11ec2, - 0x3085c6, - 0x365c88, - 0x2a4087, - 0x3a3f49, - 0x291c49, - 0x2a5045, - 0x2a6049, - 0x2a6805, - 0x2a6949, - 0x2a8005, - 0x2a9108, - 0x21fb84, - 0x24e890c7, - 0x2a9303, - 0x2a9307, - 0x3850c6, - 0x2a9b87, - 0x2a1085, - 0x2935c3, - 0x2521ae02, - 0x3b40c4, - 0x2562ce82, - 0x258203, - 0x25a17f42, - 0x36d586, - 0x2f3a85, - 0x2ac207, - 0x26cc43, - 0x325044, - 0x20e903, - 0x33e783, - 0x25e02bc2, - 0x266015c2, - 0x398804, - 0x2488c3, - 0x243c85, - 0x26a029c2, - 0x27206482, - 0x2b4506, - 0x318f04, - 0x2e3004, - 0x2e300a, - 0x27a01fc2, - 0x37204a, - 0x3756c8, - 0x27fb1384, - 0x20ad83, - 0x201fc3, - 0x3a9a49, - 0x217649, - 0x285246, - 0x28244183, - 0x3292c5, - 0x30180d, - 0x375886, - 0x3bac8b, - 0x28602e82, - 0x22c1c8, - 0x29206e82, - 0x29606fc2, - 0x2ae585, - 0x29a03942, - 0x258447, - 0x21c907, - 0x21e003, - 0x2306c8, - 0x29e06502, - 0x312684, - 0x212943, - 0x351d45, - 0x34db83, - 0x2f3546, - 0x205904, - 0x268103, - 0x2ae9c3, - 0x2a205fc2, - 0x2e8ac4, - 0x35f6c5, - 0x39f1c7, - 0x275643, - 0x2ad883, - 0x2ae083, - 0x160fec2, - 0x2ae143, - 0x2ae943, - 0x2a605102, - 0x282104, - 0x25e406, - 0x342643, - 0x2aec43, - 0x2aaafd42, - 0x2afd48, - 0x2b0004, - 0x36c246, - 0x2b0387, - 0x249c46, - 0x28e2c4, - 0x38600682, - 0x384f8b, - 0x2fb08e, - 0x21930f, - 0x2985c3, - 0x38ebbbc2, - 0x1600f42, - 0x39201582, - 0x28f403, - 0x2fdec3, - 0x233706, - 0x277c46, - 0x3afd87, - 0x3328c4, - 0x396188c2, - 0x39a08882, - 0x348345, - 0x2e6047, - 0x3b5746, - 0x39e27282, - 0x227284, - 0x2b3ac3, - 0x3a20be02, - 0x3a759ec3, - 0x2b4c44, - 0x2be409, - 0x16c3ac2, - 0x3aa03a82, - 0x203a85, - 0x3aec3d42, - 0x3b203202, - 0x346947, - 0x239689, - 0x35ca0b, - 0x2647c5, - 0x2c4849, - 0x2e8246, - 0x31e6c7, - 0x3b608484, - 0x3199c9, - 0x373487, - 0x20ab47, - 0x20a383, - 0x20a386, - 0x3b68c7, - 0x206a43, - 0x2565c6, - 0x3be02a02, - 0x3c232682, - 0x385803, - 0x324c45, - 0x350f47, - 0x250086, - 0x21f905, - 0x277d44, - 0x2c9fc5, - 0x2f2684, - 0x3c6040c2, - 0x331107, - 0x2dbd44, - 0x217544, - 0x21754d, - 0x257509, - 0x3a4448, - 0x253944, - 0x3abc45, - 0x206447, - 0x2144c4, - 0x2e1947, - 0x21c485, - 0x3caa4604, - 0x2d92c5, - 0x25b004, - 0x24bb86, - 0x3b2345, - 0x3ce250c2, - 0x283844, - 0x283845, - 0x36fa46, - 0x20c3c5, - 0x30c304, - 0x2c5dc3, - 0x2053c6, - 0x358505, - 0x2bb485, - 0x3b2444, - 0x2234c3, - 0x2234cc, - 0x3d288a02, - 0x3d6010c2, - 0x3da00282, - 0x206343, - 0x206344, - 0x3de04bc2, - 0x2f9688, - 0x379805, - 0x235684, - 0x23b086, - 0x3e201f42, - 0x3e609782, - 0x3ea00e82, - 0x306b85, - 0x391586, - 0x211084, - 0x3263c6, - 0x2ba346, - 0x219943, - 0x3ef0de0a, - 0x247b05, - 0x2c8e83, - 0x223186, - 0x300fc9, - 0x223187, - 0x297788, - 0x2981c9, - 0x224348, - 0x229486, - 0x20bf03, - 0x3f2a8542, - 0x385683, - 0x385689, - 0x332448, - 0x3f649a02, - 0x3fa02342, - 0x227f83, - 0x2da905, - 0x251ec4, - 0x2c0909, - 0x22cb84, - 0x266348, - 0x202343, - 0x202344, - 0x278b03, - 0x2187c8, - 0x217487, - 0x4020b102, - 0x274082, - 0x351905, - 0x266689, - 0x209703, - 0x27b184, - 0x329284, - 0x2064c3, - 0x27c3ca, - 0x40752bc2, - 0x40a83802, - 0x2c5443, - 0x3739c3, - 0x1602302, - 0x38ac03, - 0x40e0f242, - 0x4120ec42, - 0x41610444, - 0x210446, - 0x383b06, - 0x26ad44, - 0x36c643, - 0x38bcc3, - 0x226883, - 0x23d206, - 0x2cb8c5, - 0x2c5a07, - 0x31e589, - 0x2ca645, - 0x2cb806, - 0x2cbd88, - 0x2cbf86, - 0x236a04, - 0x29944b, - 0x2ceac3, - 0x2ceac5, - 0x2cec08, - 0x228502, - 0x346c42, - 0x41a44c42, - 0x41e0e602, - 0x218903, - 0x422675c2, - 0x2675c3, - 0x2cef04, - 0x2cf5c3, - 0x42a115c2, - 0x42ed43c6, - 0x2a7306, - 0x43207902, - 0x4360f442, - 0x43a27382, - 0x43e02c82, - 0x4422dd02, - 0x44602d02, - 0x234703, - 0x390685, - 0x319606, - 0x44a11cc4, - 0x3b0b0a, - 0x32fe86, - 0x2e8d84, - 0x281d03, - 0x45604642, - 0x200c82, - 0x25fd03, - 0x45a05503, - 0x2c7b87, - 0x3b2247, - 0x47250b07, - 0x312d87, - 0x227b03, - 0x227b0a, - 0x236b84, - 0x23e5c4, - 0x23e5ca, - 0x213f05, - 0x47609642, - 0x24e683, - 0x47a008c2, - 0x21c2c3, - 0x267e03, - 0x48203342, - 0x2a8444, - 0x21de84, - 0x3b9505, - 0x305005, - 0x2e1ac6, - 0x2e1e46, - 0x48608442, - 0x48a033c2, - 0x3185c5, - 0x2a7012, - 0x2511c6, - 0x220803, - 0x30a746, - 0x220805, - 0x1610602, - 0x50e120c2, - 0x353e83, - 0x2120c3, - 0x2441c3, - 0x512023c2, - 0x376e43, - 0x5160b482, - 0x210483, - 0x282148, - 0x25e983, - 0x25e986, - 0x3a2987, - 0x306806, - 0x30680b, - 0x2e8cc7, - 0x3b3ec4, - 0x51e04ec2, - 0x379685, - 0x522054c3, - 0x2a6e03, - 0x326c05, - 0x329983, - 0x52729986, - 0x391a0a, - 0x26a9c3, - 0x204584, - 0x3b88c6, - 0x21a5c6, - 0x52a00983, - 0x324f07, - 0x285147, - 0x29b0c5, - 0x2318c6, - 0x224a83, - 0x54a10bc3, - 0x54e056c2, - 0x328144, - 0x22a2cc, - 0x236149, - 0x2414c7, - 0x249245, - 0x262a84, - 0x273cc8, - 0x278305, - 0x55284a05, - 0x28c609, - 0x351f43, - 0x2a5d84, - 0x556013c2, - 0x2013c3, - 0x55a94142, - 0x2a4386, - 0x160f982, - 0x55e06e02, - 0x306a88, - 0x2be603, - 0x2d9207, - 0x2e4d05, - 0x2dd685, - 0x32840b, - 0x2dd686, - 0x328606, - 0x2ffac6, - 0x262c84, - 0x3042c6, - 0x2e3508, - 0x23a043, - 0x250dc3, - 0x250dc4, - 0x2e4484, - 0x2e4a07, - 0x2e5ec5, - 0x562e6002, - 0x5660ba02, - 0x20ba05, - 0x2e83c4, - 0x2e83cb, - 0x2e8e88, - 0x228f44, - 0x2272c2, - 0x56e28ec2, - 0x23b903, - 0x2e9344, - 0x2e9605, - 0x2ea047, - 0x2eb604, - 0x2e8b84, - 0x57201302, - 0x360cc9, - 0x2ec405, - 0x264a85, - 0x2ecf85, - 0x57601303, - 0x2ee0c4, - 0x2ee0cb, - 0x2ee644, - 0x2ef3cb, - 0x2ef7c5, - 0x21944a, - 0x2f0048, - 0x2f024a, - 0x2f0ac3, - 0x2f0aca, - 0x57a01742, - 0x57e2d4c2, - 0x21aa03, - 0x582f1bc2, - 0x2f1bc3, - 0x5875c402, - 0x58b22842, - 0x2f2504, - 0x21afc6, - 0x326105, - 0x2f4503, - 0x31a9c6, - 0x204405, - 0x25e704, - 0x58e05ec2, - 0x2c9244, - 0x2c5f8a, - 0x22d787, - 0x2f38c6, - 0x380b07, - 0x22a403, - 0x283e48, - 0x37f48b, - 0x3736c5, - 0x333ec5, - 0x333ec6, - 0x390884, - 0x3aa248, - 0x222943, - 0x222944, - 0x222947, - 0x38e446, - 0x352686, - 0x29018a, - 0x246604, - 0x24660a, - 0x59282846, - 0x282847, - 0x252447, - 0x270844, - 0x270849, - 0x25e0c5, - 0x235e0b, - 0x2e81c3, - 0x211503, - 0x22f003, - 0x22fac4, - 0x59600482, - 0x25d4c6, - 0x293345, - 0x30a985, - 0x24f6c6, - 0x3395c4, - 0x59a02782, - 0x23f0c4, - 0x59e01c42, - 0x2b9f05, - 0x21ad84, - 0x21bec3, - 0x5a612102, - 0x212103, - 0x23ba46, - 0x5aa03082, - 0x27f488, - 0x223004, - 0x223006, - 0x374246, - 0x2540c4, - 0x205345, - 0x2141c8, - 0x216547, - 0x219687, - 0x21968f, - 0x292a46, - 0x22cf03, - 0x22cf04, - 0x310504, - 0x20d003, - 0x221a84, - 0x240944, - 0x5ae42b02, - 0x289d43, - 0x242b03, - 0x5b209842, - 0x229f83, - 0x38eb83, - 0x21484a, - 0x358107, - 0x2efc0c, - 0x2efec6, - 0x30a146, - 0x248547, - 0x5b64c687, - 0x24f809, - 0x243584, - 0x24fbc4, - 0x5ba18942, - 0x5be027c2, - 0x290546, - 0x324d04, - 0x2d6bc6, - 0x2a5148, - 0x3b8dc4, - 0x258486, - 0x2d1705, - 0x265c88, - 0x207383, - 0x273705, - 0x273e83, - 0x264b83, - 0x264b84, - 0x2759c3, - 0x5c2ec082, - 0x5c602e02, - 0x2e8089, - 0x278205, - 0x278404, - 0x27a9c5, - 0x20dd44, - 0x2e0d07, - 0x343bc5, - 0x250cc4, - 0x250cc8, - 0x2d5086, - 0x2d7984, - 0x2d8e88, - 0x2dbb87, - 0x5ca03902, - 0x2e36c4, - 0x20d0c4, - 0x20ad47, - 0x5ce2b804, - 0x2ccf42, - 0x5d201102, - 0x201543, - 0x203984, - 0x2aa283, - 0x374e05, - 0x5d61e182, - 0x2eb285, - 0x202c42, - 0x34d5c5, - 0x365e45, - 0x5da00c42, - 0x350744, - 0x5de00d02, - 0x2387c6, - 0x29a146, - 0x2667c8, - 0x2bfa08, - 0x36d504, - 0x36d6c5, - 0x3610c9, - 0x2db1c4, - 0x3919c4, - 0x205183, - 0x5e222705, - 0x2c3b87, - 0x2a2744, - 0x341e8d, - 0x361782, - 0x361783, - 0x364503, - 0x5e600802, - 0x388305, - 0x25f9c7, - 0x205b44, - 0x312e47, - 0x2983c9, - 0x2c60c9, - 0x2519c7, - 0x273b03, - 0x273b08, - 0x2ed249, - 0x24e187, - 0x373605, - 0x39e086, - 0x39fb86, - 0x3a3c05, - 0x257605, - 0x5ea02d82, - 0x36ce45, - 0x2b2908, - 0x2c1706, - 0x5eeb7487, - 0x2efa04, - 0x2aa987, - 0x2f62c6, - 0x5f230982, - 0x36f746, - 0x2f83ca, - 0x2f8e85, - 0x5f6de402, - 0x5fa36542, - 0x3b6c06, - 0x2a1e88, - 0x5fe8a487, - 0x60234e42, - 0x2255c3, - 0x311d86, - 0x225044, - 0x3a2846, - 0x390b06, - 0x26ff0a, - 0x331c05, - 0x367ec6, - 0x3759c3, - 0x3759c4, - 0x207102, - 0x309943, - 0x60606382, - 0x2f0f83, - 0x3722c4, - 0x2a1fc4, - 0x2a1fca, - 0x229543, - 0x276288, - 0x22954a, - 0x27b447, - 0x2fcd86, - 0x238684, - 0x290bc2, - 0x2a2e82, - 0x60a04002, - 0x245403, - 0x252207, - 0x31ac87, - 0x2848c4, - 0x26f8c7, - 0x2ea146, - 0x216847, - 0x35e604, - 0x242a05, - 0x2b7985, - 0x60e0fe82, - 0x20fe86, - 0x218283, - 0x220502, - 0x220506, - 0x61203e02, - 0x6160b0c2, - 0x3ba785, - 0x61a21c82, - 0x61e03b42, - 0x33b5c5, - 0x393105, - 0x367f85, - 0x267303, - 0x286385, - 0x2dd747, - 0x307bc5, - 0x306185, - 0x38b044, - 0x3204c6, - 0x23e804, - 0x62201442, - 0x62f630c5, - 0x2ebe07, - 0x2d6dc8, - 0x25fe86, - 0x25fe8d, - 0x260709, - 0x260712, - 0x32f345, - 0x3339c3, - 0x6320a9c2, - 0x309444, - 0x375903, - 0x360fc5, - 0x2fa085, - 0x63612982, - 0x36e843, - 0x63a50b82, - 0x642bf542, - 0x6460fb42, - 0x353805, - 0x37ac43, - 0x37a4c8, - 0x64a07842, - 0x64e000c2, - 0x2a8406, - 0x33b80a, - 0x21bf03, - 0x20c343, - 0x2ee3c3, - 0x65a02dc2, - 0x73e35482, - 0x74601c82, - 0x201682, - 0x36f549, - 0x2c2f04, - 0x2309c8, - 0x74af4542, - 0x74e08602, - 0x2ef605, - 0x2330c8, - 0x282288, - 0x2f858c, - 0x22d543, - 0x25a9c2, - 0x75201f82, - 0x2caac6, - 0x2fdc05, - 0x26d343, - 0x23cc46, - 0x2fdd46, - 0x201f83, - 0x2ff883, - 0x300786, - 0x3013c4, - 0x295586, - 0x2cec85, - 0x30164a, - 0x2eebc4, - 0x302304, - 0x30370a, - 0x7566b082, - 0x337745, - 0x30478a, - 0x305285, - 0x305b44, - 0x305c46, - 0x305dc4, - 0x218dc6, - 0x75a6dac2, - 0x2f3206, - 0x2f3dc5, - 0x3ab6c7, - 0x200206, - 0x248744, - 0x2d5e07, - 0x30dd46, - 0x2b8a45, - 0x381947, - 0x39eb47, - 0x39eb4e, - 0x25ed06, - 0x2e1805, - 0x27dec7, - 0x282b43, - 0x3b2f87, - 0x20f5c5, - 0x212144, - 0x212f82, - 0x3addc7, - 0x332944, - 0x377404, - 0x273f0b, - 0x21d5c3, - 0x2b6987, - 0x21d5c4, - 0x2cc0c7, - 0x228bc3, - 0x33678d, - 0x388b48, - 0x21d044, - 0x250bc5, - 0x307d05, - 0x308143, - 0x75e22f02, - 0x309903, - 0x309fc3, - 0x210004, - 0x279805, - 0x218307, - 0x375a46, - 0x372003, - 0x23ab4b, - 0x26ba4b, - 0x2a654b, - 0x2de44a, - 0x30254b, - 0x31be8b, - 0x356b8c, - 0x378d11, - 0x3b654a, - 0x3ba10b, - 0x30ad8b, - 0x30b34a, - 0x30b88a, - 0x30cb4e, - 0x30d18b, - 0x30d44a, - 0x30ef11, - 0x30f34a, - 0x30f84b, - 0x30fd8e, - 0x31078c, - 0x310c4b, - 0x310f0e, - 0x31128c, - 0x31474a, - 0x31698c, - 0x76316c8a, - 0x317489, - 0x31af4a, - 0x31b1ca, - 0x31b44b, - 0x31f60e, - 0x31f991, - 0x328b89, - 0x328dca, - 0x3295cb, - 0x32a84a, - 0x32b316, - 0x32e14b, - 0x32f10a, - 0x32f50a, - 0x33084b, - 0x333449, - 0x337109, - 0x337d4d, - 0x33870b, - 0x33978b, - 0x33a14b, - 0x33a609, - 0x33ac4e, - 0x33b30a, - 0x33fc8a, - 0x33ffca, - 0x340b8b, - 0x3413cb, - 0x34168d, - 0x342c0d, - 0x343290, - 0x34374b, - 0x34408c, - 0x34480b, - 0x34644b, - 0x34798b, - 0x34c00b, - 0x34ca8f, - 0x34ce4b, - 0x34d94a, - 0x34e689, - 0x34f409, - 0x34f8cb, - 0x34fb8e, - 0x35434b, - 0x35574f, - 0x35864b, - 0x35890b, - 0x358bcb, - 0x3590ca, - 0x35c609, - 0x35f34f, - 0x36424c, - 0x36488c, - 0x364d0e, - 0x3653cf, - 0x36578e, - 0x365fd0, - 0x3663cf, - 0x366f4e, - 0x36770c, - 0x367a12, - 0x3689d1, - 0x36988e, - 0x36a04e, - 0x36a58e, - 0x36a90f, - 0x36acce, - 0x36b053, - 0x36b511, - 0x36b94e, - 0x36bdcc, - 0x36d913, - 0x36e210, - 0x36ea8c, - 0x36ed8c, - 0x36f24b, - 0x3703ce, - 0x370c8b, - 0x3715cb, - 0x37258c, - 0x37814a, - 0x37850c, - 0x37880c, - 0x378b09, - 0x37bb8b, - 0x37be48, - 0x37c049, - 0x37c04f, - 0x37d98b, - 0x7677eb8a, - 0x381fcc, - 0x383189, - 0x383608, - 0x38380b, - 0x383c8b, - 0x38480a, - 0x384a8b, - 0x38540c, - 0x386008, - 0x388d4b, - 0x38b44b, - 0x39484b, - 0x3958cb, - 0x39e6cb, - 0x39e989, - 0x39eecd, - 0x3a464a, - 0x3a5597, - 0x3a6bd8, - 0x3a96c9, - 0x3ab30b, - 0x3ac814, - 0x3acd0b, - 0x3ad28a, - 0x3aea0a, - 0x3aec8b, - 0x3b4250, - 0x3b4651, - 0x3b4d0a, - 0x3b5b4d, - 0x3b624d, - 0x3ba3cb, - 0x3bbd46, - 0x20ff83, - 0x76b80483, - 0x22cdc6, - 0x247645, - 0x27a007, - 0x31bd46, - 0x1656682, - 0x2ad9c9, - 0x31a7c4, - 0x2dacc8, - 0x232b43, - 0x309387, - 0x234f42, - 0x2ac243, - 0x76e07b02, - 0x2c7406, - 0x2c9884, - 0x369f44, - 0x390143, - 0x390145, - 0x776c3d82, - 0x77aa6cc4, - 0x270787, - 0x77e4a282, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x204e83, - 0x205702, - 0x16d208, - 0x2099c2, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x214843, - 0x324556, - 0x325793, - 0x26f749, - 0x3b0688, - 0x379509, - 0x304906, - 0x3389d0, - 0x254b53, - 0x38e508, + 0x33b8c9, + 0x212107, + 0x2e6046, + 0x341809, + 0x2a0048, + 0x33a904, + 0x2a0f46, + 0x21f886, + 0x3a02d42, + 0x3a014f, + 0x28c84e, + 0x21bfc4, + 0x382c85, + 0x30a6c5, + 0x2e2109, + 0x249089, + 0x33b1c7, + 0x23f8c6, + 0x20ae43, + 0x3e01d42, + 0x2e3203, + 0x225d0a, + 0x20cac3, + 0x242f85, + 0x28e142, + 0x28e149, + 0x4200bc2, + 0x209204, + 0x28ad46, + 0x2e5c05, + 0x361644, + 0x4a1a344, + 0x203ec3, + 0x218d04, + 0x4e00702, + 0x2f8e84, + 0x52f5f04, + 0x339bca, + 0x5600f82, + 0x28bc47, + 0x281548, + 0x6206502, + 0x31d0c7, + 0x2c6d44, + 0x2c6d47, + 0x393c45, + 0x35e887, + 0x33af86, + 0x271dc4, + 0x378385, 0x28ea47, - 0x36c747, - 0x284d0a, - 0x372349, - 0x38d849, - 0x28decb, - 0x349846, - 0x379b4a, - 0x220d86, - 0x31a3c3, - 0x2d48c5, - 0x35e288, - 0x23888d, - 0x2b984c, - 0x2de0c7, - 0x30b00d, - 0x2142c4, - 0x22fd8a, - 0x230d4a, - 0x23120a, - 0x2099c7, - 0x23af07, - 0x23d844, - 0x22e206, - 0x20c144, - 0x2b4148, - 0x22cbc9, - 0x2b0a86, - 0x2b0a88, - 0x2422cd, - 0x2c6309, - 0x3ac008, - 0x264a07, - 0x2f1f0a, - 0x24c506, - 0x2580c7, - 0x2cc3c4, - 0x23f287, - 0x309c0a, - 0x3ae54e, + 0x72001c2, + 0x224143, + 0x200c42, + 0x200c43, + 0x760b5c2, + 0x20f4c5, + 0x7a01d02, + 0x357844, + 0x27e405, + 0x21bf07, + 0x25aece, + 0x2bf044, + 0x23df04, + 0x211c43, + 0x28a4c9, + 0x30eacb, + 0x2ea6c8, + 0x3415c8, + 0x306208, + 0x2b7288, + 0x33a74a, + 0x35e787, + 0x321606, + 0x7e8f282, + 0x36a683, + 0x377683, + 0x37fd44, + 0x3b5e83, + 0x32c343, + 0x1727e02, + 0x8203302, + 0x283f45, + 0x29e006, + 0x2da184, + 0x388547, + 0x2fa686, + 0x389384, + 0x3aa107, + 0x223d43, + 0x86cd5c2, + 0x8a0d342, + 0x8e1e642, + 0x21e646, + 0x9200002, + 0x2501c5, + 0x329343, + 0x201684, + 0x2efb04, + 0x2efb05, + 0x203c43, + 0x979c783, + 0x9a092c2, + 0x291d85, + 0x291d8b, + 0x343c06, + 0x21270b, + 0x226544, + 0x213a49, + 0x2148c4, + 0x9e14b02, + 0x215943, + 0x216283, + 0x1616b42, + 0x275fc3, + 0x216b4a, + 0xa201102, 0x21d205, - 0x3b4a4b, - 0x331a09, - 0x217649, - 0x21c747, - 0x2a34ca, - 0x20ac87, - 0x2fb1c9, - 0x38f0c8, - 0x3533cb, - 0x2da905, - 0x3a430a, - 0x266e09, - 0x26d2ca, - 0x2ca6cb, - 0x23f18b, - 0x28dc55, - 0x2e3b85, - 0x264a85, - 0x2ee0ca, - 0x3945ca, - 0x331787, - 0x21da83, - 0x2904c8, - 0x2d2c4a, - 0x223006, - 0x24dfc9, - 0x265c88, - 0x2d7984, - 0x2aa289, - 0x2bfa08, - 0x29fec7, - 0x3630c6, - 0x2ebe07, - 0x289a47, - 0x23d005, - 0x21d04c, - 0x250bc5, - 0x2a84c3, - 0x232403, - 0x2e9dc3, + 0x29a88a, + 0x2e0544, + 0x201103, + 0x325384, + 0x21ae03, + 0x21ae04, + 0x21ae07, + 0x21b605, + 0x21d685, + 0x21dc46, + 0x21dfc6, + 0x21ea43, + 0x222688, + 0x206c03, + 0xa60c702, + 0x245848, + 0x23614b, + 0x228908, + 0x228e06, + 0x229dc7, + 0x22da48, + 0xb6024c2, + 0xba430c2, + 0x32da08, + 0x233347, + 0x2e7b45, + 0x2e7b48, + 0x2c3b08, + 0x2be483, + 0x232e04, + 0x37fd82, + 0xbe34382, + 0xc23e102, + 0xca37302, + 0x237303, + 0xce01382, + 0x30a783, + 0x300f44, + 0x20a043, + 0x322844, + 0x20d7cb, + 0x2322c3, + 0x2e6a46, + 0x245f44, + 0x2982ce, + 0x381245, + 0x3b00c8, + 0x263347, + 0x26334a, + 0x22e803, + 0x317a07, + 0x30ec85, + 0x23a384, + 0x272706, + 0x272707, + 0x330f44, + 0x301f87, + 0x25a184, + 0x25b204, + 0x25b206, + 0x25f704, + 0x36bdc6, + 0x216983, + 0x233108, + 0x316ec8, + 0x23dec3, + 0x275f83, + 0x3a6604, + 0x3aae83, + 0xd235f42, + 0xd6df482, + 0x207143, + 0x203f86, + 0x2a1043, + 0x285184, + 0xda165c2, + 0x2165c3, + 0x35f083, + 0x21fe02, + 0xde008c2, + 0x2c9786, + 0x23e347, + 0x2fd645, + 0x38fd04, + 0x294d45, + 0x2f8a47, + 0x2add85, + 0x2e4689, + 0x2e9906, + 0x2ef808, + 0x2fd546, + 0xe20e982, + 0x2ddb08, + 0x300d06, + 0x219205, + 0x316887, + 0x316dc4, + 0x316dc5, + 0x281384, + 0x345d88, + 0xe6127c2, + 0xea04882, + 0x33ca06, + 0x2cf588, + 0x34d485, + 0x351546, + 0x356108, + 0x371488, + 0xee35dc5, + 0xf214f44, + 0x34e247, + 0xf614602, + 0xfa22902, + 0x10e0f882, + 0x28ae45, + 0x2aaa45, + 0x30af86, + 0x350007, + 0x386287, + 0x11638543, + 0x2b0307, + 0x30e7c8, + 0x3a0849, + 0x38a647, + 0x3b9c87, + 0x238788, + 0x238f86, + 0x239e86, + 0x23aacc, + 0x23c08a, + 0x23c407, + 0x23d58b, + 0x23e187, + 0x23e18e, + 0x19a3f304, + 0x240244, + 0x242547, + 0x3ac747, + 0x246d46, + 0x246d47, + 0x247407, + 0x19e29682, + 0x2495c6, + 0x2495ca, + 0x24a08b, + 0x24ac87, + 0x24b845, + 0x24bb83, + 0x24bdc6, + 0x24bdc7, + 0x20d283, + 0x1a206e02, + 0x24c78a, + 0x1a769d02, + 0x1aa4f282, + 0x1ae4dd42, + 0x1b240e82, + 0x24e9c5, + 0x24ef44, + 0x1ba1a442, + 0x2f8f05, + 0x24a683, + 0x2149c5, + 0x2b7184, + 0x205ec4, + 0x25a486, + 0x262586, + 0x291f83, + 0x204844, + 0x3894c3, + 0x1c204c82, + 0x210ac4, + 0x210ac6, + 0x34e7c5, + 0x37e946, + 0x316988, + 0x273544, + 0x266ac8, + 0x398785, + 0x22bc88, + 0x2b2dc6, + 0x26d907, + 0x233d84, + 0x233d86, + 0x242bc3, + 0x393fc3, + 0x211d08, + 0x322004, + 0x356747, + 0x20c7c6, + 0x2dedc9, + 0x322a88, + 0x325448, + 0x331ac4, + 0x35f103, + 0x229942, + 0x1d2234c2, + 0x1d61a202, + 0x36c083, + 0x1da08e02, + 0x20d204, + 0x3521c6, + 0x3b3745, + 0x24fa83, + 0x23cf44, + 0x2b95c7, + 0x25a783, + 0x251208, + 0x218405, + 0x264143, + 0x27e385, + 0x27e4c4, + 0x300a06, + 0x218f84, + 0x21ab86, + 0x21be46, + 0x210584, + 0x23e543, + 0x1de1a582, + 0x23dd05, + 0x20b9c3, + 0x1e20c882, + 0x23aa83, + 0x2231c5, + 0x23cac3, + 0x23cac9, + 0x1e606b82, + 0x1ee07842, + 0x2918c5, + 0x2211c6, + 0x2d9d46, + 0x2bb248, + 0x2bb24b, + 0x203fcb, + 0x220bc5, + 0x2fd845, + 0x2cdfc9, + 0x1600302, + 0x210748, + 0x213d44, + 0x1f601842, + 0x326403, + 0x1fecdd46, + 0x348e08, + 0x20208b42, + 0x2bdec8, + 0x2060c182, + 0x2bf7ca, + 0x20a3fd03, + 0x203606, + 0x36cc48, + 0x209708, + 0x3b3a46, + 0x37c807, + 0x3a0347, + 0x34daca, + 0x2e05c4, + 0x354d44, + 0x368649, + 0x2139fb45, + 0x28ca46, + 0x210083, + 0x253d44, + 0x2160df44, + 0x20df47, + 0x22c507, + 0x234404, + 0x2df805, + 0x30b048, + 0x375e07, + 0x381007, + 0x21a07602, + 0x32e984, + 0x29b188, + 0x2504c4, + 0x251844, + 0x251c45, + 0x251d87, + 0x222349, + 0x252a04, + 0x253149, + 0x253388, + 0x253ac4, + 0x253ac7, + 0x21e54003, + 0x254187, + 0x1609c42, + 0x16b4a42, + 0x254b86, + 0x2550c7, + 0x255584, + 0x257687, + 0x258d47, + 0x259983, + 0x2f6802, + 0x207d82, + 0x231683, + 0x231684, + 0x23168b, + 0x3416c8, + 0x263c84, + 0x25c985, + 0x25eb47, + 0x260105, + 0x2c8c0a, + 0x263bc3, + 0x22206b02, + 0x206b04, + 0x267189, + 0x26a743, + 0x26a807, + 0x373089, + 0x212508, + 0x2db543, + 0x282f07, + 0x283649, + 0x23d483, + 0x289844, + 0x28d209, + 0x290146, + 0x21c203, + 0x200182, + 0x264d83, + 0x2b4847, + 0x2c3e85, + 0x3413c6, + 0x259004, + 0x374e05, + 0x225cc3, + 0x20e646, + 0x213c42, + 0x3a1784, + 0x2260d382, + 0x226603, + 0x22a01802, + 0x251743, + 0x21e444, + 0x21e447, + 0x201986, + 0x20df02, + 0x22e0dec2, + 0x2c4244, + 0x23235182, + 0x23601b82, + 0x265704, + 0x265705, + 0x345105, + 0x35c386, + 0x23a074c2, + 0x2074c5, + 0x213005, + 0x2157c3, + 0x219d06, + 0x21a645, + 0x21e5c2, + 0x34d0c5, + 0x21e5c4, + 0x228203, + 0x22a443, + 0x23e11442, + 0x2dcf47, + 0x376084, + 0x376089, + 0x253c44, + 0x2357c3, + 0x300589, + 0x389e08, + 0x242aa8c4, + 0x2aa8c6, + 0x219983, + 0x25d3c3, + 0x323043, + 0x246eebc2, + 0x379b82, + 0x24a17202, + 0x32af48, + 0x358e08, + 0x3a5a46, + 0x2fd0c5, + 0x317885, + 0x333d07, + 0x2247c5, + 0x210642, + 0x24e04742, + 0x160a442, + 0x2447c8, + 0x2dda45, + 0x2bfbc4, + 0x2f2845, + 0x381d87, + 0x240944, + 0x24c682, + 0x25200582, + 0x33ffc4, + 0x21ca07, + 0x292507, + 0x35e844, + 0x29a843, + 0x23de04, + 0x23de08, + 0x23a1c6, + 0x27258a, + 0x222204, + 0x29abc8, + 0x290584, + 0x229ec6, + 0x29c484, + 0x28b146, + 0x376349, + 0x274847, + 0x241243, + 0x256351c2, + 0x2755c3, + 0x214d02, + 0x25a52e42, + 0x313486, + 0x374588, + 0x2ac047, + 0x3ab249, + 0x299f49, + 0x2acf05, + 0x2adec9, + 0x2ae685, + 0x2ae7c9, + 0x2afe45, + 0x2b11c8, + 0x25e0a104, + 0x26259ac7, + 0x2b13c3, + 0x2b13c7, + 0x3ba046, + 0x2b1a47, + 0x2a9b05, + 0x2a2cc3, + 0x26636d02, + 0x339704, + 0x26a42a42, + 0x266603, + 0x26e206c2, + 0x30df06, + 0x2814c5, + 0x2b3cc7, + 0x332043, + 0x32c2c4, + 0x217003, + 0x342c43, + 0x27205e82, + 0x27a0c442, + 0x3a5404, + 0x2f67c3, + 0x24e545, + 0x27e01c82, + 0x286007c2, + 0x2c8286, + 0x322144, + 0x38c444, + 0x38c44a, + 0x28e00942, + 0x38298a, + 0x39b8c8, + 0x29231604, + 0x2046c3, + 0x20d8c3, + 0x306349, + 0x25bd09, + 0x364986, + 0x29655783, + 0x335d45, + 0x30d2cd, + 0x39ba86, + 0x204f4b, + 0x29a02b02, + 0x225b48, + 0x2be22782, + 0x2c203e02, + 0x2b1685, + 0x2c604182, + 0x266847, + 0x21b987, + 0x20bf43, + 0x23b188, + 0x2ca02542, + 0x3780c4, + 0x21a8c3, + 0x348505, + 0x364603, + 0x33c406, + 0x212a84, + 0x275f43, + 0x2b6443, + 0x2ce09942, + 0x2fd7c4, + 0x379c85, + 0x3b6587, + 0x280003, + 0x2b5103, + 0x2b5c03, + 0x1631182, + 0x2b5cc3, + 0x2b63c3, + 0x2d2086c2, + 0x3a2e44, + 0x262786, + 0x34ba83, + 0x2086c3, + 0x2d6b8042, + 0x2b8048, + 0x2b8304, + 0x37ce46, + 0x2b8bc7, + 0x258346, + 0x2a0304, + 0x3b201702, + 0x3b9f0b, + 0x307c0e, + 0x221d4f, + 0x2ac5c3, + 0x3ba64d42, + 0x160b542, + 0x3be00a82, + 0x2e89c3, + 0x2e4903, + 0x2de046, + 0x207986, + 0x203007, + 0x304704, + 0x3c221302, + 0x3c618742, + 0x3a1205, + 0x2e7007, + 0x38c946, + 0x3ca28142, + 0x228144, + 0x2bc743, + 0x3ce09a02, + 0x3d366443, + 0x2bce04, + 0x2c5409, + 0x16cb602, + 0x3d605242, + 0x385d85, + 0x3dacb882, + 0x3de03582, + 0x3541c7, + 0x21b2c9, + 0x368e8b, + 0x3a0105, + 0x2714c9, + 0x384d06, + 0x343c47, + 0x3e206844, + 0x341d89, + 0x380907, + 0x348ac7, + 0x2122c3, + 0x2122c6, + 0x312247, + 0x263a43, + 0x263a46, + 0x3ea01cc2, + 0x3ee022c2, + 0x22bf03, + 0x32bec5, + 0x25a007, + 0x227906, + 0x2c3e05, + 0x207a84, + 0x28ddc5, + 0x2fae04, + 0x3f204bc2, + 0x337447, + 0x2ca604, + 0x24f3c4, + 0x25bc0d, + 0x25d749, + 0x3ab748, + 0x25e044, + 0x234a85, + 0x322907, + 0x3329c4, + 0x2fa747, + 0x204bc5, + 0x3f6ac504, + 0x2b5e05, + 0x269404, + 0x256fc6, + 0x34fe05, + 0x3fa048c2, + 0x2011c4, + 0x2011c5, + 0x3802c6, + 0x206d85, + 0x3c0144, + 0x2cda83, + 0x208d46, + 0x222545, + 0x22b605, + 0x34ff04, + 0x222283, + 0x22228c, + 0x3fe90a82, + 0x40206702, + 0x40600282, + 0x211a83, + 0x211a84, + 0x40a02942, + 0x2fba48, + 0x341485, + 0x34c984, + 0x36ee86, + 0x40e0d842, + 0x41234502, + 0x41601fc2, + 0x2a6a85, + 0x210446, + 0x226144, + 0x32d646, + 0x28ba06, + 0x215c83, + 0x41b2770a, + 0x2f6b05, + 0x2f6fc3, + 0x22a9c6, + 0x30c989, + 0x22a9c7, + 0x29f648, + 0x29ff09, + 0x241b08, + 0x22e546, + 0x209b03, + 0x41e0c202, + 0x395343, + 0x395349, + 0x333608, + 0x42253442, + 0x42604a82, + 0x229443, + 0x2e4505, + 0x25c404, + 0x2c9ec9, + 0x26eb44, + 0x2e0908, + 0x2050c3, + 0x20dc44, + 0x2acd03, + 0x221208, + 0x25bb47, + 0x42e281c2, + 0x270d02, + 0x388b05, + 0x272dc9, + 0x28cac3, + 0x284bc4, + 0x335d04, + 0x227543, + 0x28580a, + 0x43382842, + 0x43601182, + 0x2cd543, + 0x384f83, + 0x160dc02, + 0x20ffc3, + 0x43a14702, + 0x43e00802, + 0x4420f644, + 0x20f646, + 0x3b6a46, + 0x248c44, + 0x37d243, + 0x200803, + 0x2f60c3, + 0x24a406, + 0x30aa05, + 0x2cd6c7, + 0x343b09, + 0x2d2d85, + 0x2d3f46, + 0x2d4908, + 0x2d4b06, + 0x260ec4, + 0x2a1d8b, + 0x2d8403, + 0x2d8405, + 0x2d8548, + 0x22c2c2, + 0x3544c2, + 0x4464ea42, + 0x44a14642, + 0x221343, + 0x44e745c2, + 0x2745c3, + 0x2d8844, + 0x2d8e03, + 0x45605902, + 0x45a0c0c6, + 0x2af186, + 0x45edcac2, + 0x462162c2, + 0x4662a482, + 0x46a00e82, + 0x46e176c2, + 0x47202ec2, + 0x205383, + 0x344905, + 0x348206, + 0x4761bf84, + 0x34e5ca, + 0x20bd46, + 0x220e04, + 0x28a483, + 0x4820ea42, + 0x204d42, + 0x23d503, + 0x48608e83, + 0x2d8047, + 0x34fd07, + 0x49e31787, + 0x23fcc7, + 0x2309c3, + 0x33188a, + 0x263544, + 0x3863c4, + 0x3863ca, + 0x24b685, + 0x4a2190c2, + 0x254b43, + 0x4a601942, + 0x21b543, + 0x275583, + 0x4ae02b82, + 0x2b0284, + 0x2256c4, + 0x208105, + 0x39e745, + 0x2fc3c6, + 0x2fc746, + 0x4b206802, + 0x4b600982, + 0x3139c5, + 0x2aee92, + 0x259806, + 0x231483, + 0x315a06, + 0x231485, + 0x1616b82, + 0x53a17102, + 0x35fd43, + 0x217103, + 0x35d703, + 0x53e02c82, + 0x38a783, + 0x54205b82, + 0x20cc43, + 0x3a2e88, + 0x231e83, + 0x231e86, + 0x3b0c87, + 0x26c286, + 0x26c28b, + 0x220d47, + 0x339504, + 0x54a00e42, + 0x341305, + 0x54e08e43, + 0x2aec83, + 0x32de85, + 0x331783, + 0x55331786, + 0x2108ca, + 0x2488c3, + 0x240c44, + 0x2cf4c6, + 0x2364c6, + 0x55601a03, + 0x32c187, + 0x364887, + 0x2a3885, + 0x251046, + 0x222583, + 0x57619f43, + 0x57a0cb42, + 0x34bd44, + 0x22c24c, + 0x232f09, + 0x2445c7, + 0x38ad45, + 0x252c84, + 0x25e6c8, + 0x265d45, + 0x57e6c505, + 0x27b709, + 0x2e6103, + 0x24f204, + 0x5821cc82, + 0x221543, + 0x5869bf42, + 0x3bbe86, + 0x16235c2, + 0x58a35b42, + 0x2a6988, + 0x2ac343, + 0x2b5d47, + 0x2daa05, + 0x2e5205, + 0x2e520b, + 0x2e58c6, + 0x2e5406, + 0x2e9006, + 0x232b84, + 0x2e9246, + 0x58eeae88, + 0x246003, + 0x231a43, + 0x231a44, + 0x2ea484, + 0x2eab87, + 0x2ec3c5, + 0x592ec502, + 0x59607082, + 0x207085, + 0x295bc4, + 0x2ef38b, + 0x2efa08, + 0x2998c4, + 0x228182, + 0x59e99842, + 0x350e83, + 0x2efec4, + 0x2f0185, + 0x2f0607, + 0x2f2384, + 0x220c04, + 0x5a204102, + 0x36f5c9, + 0x2f3185, + 0x3a03c5, + 0x2f3e45, + 0x5a621483, + 0x2f4dc4, + 0x2f4dcb, + 0x2f5204, + 0x2f5c0b, + 0x2f6005, + 0x221e8a, + 0x2f7608, + 0x2f780a, + 0x2f7fc3, + 0x2f7fca, + 0x5aa33502, + 0x5ae2fa42, + 0x236903, + 0x5b2f9f02, + 0x2f9f03, + 0x5b71c482, + 0x5bb29ac2, + 0x2fac84, + 0x2227c6, + 0x32d385, + 0x2fd4c3, + 0x320446, + 0x317345, + 0x262a84, + 0x5be06b42, + 0x2ba844, + 0x2cdc4a, + 0x22fd07, + 0x2e5e86, + 0x2612c7, + 0x20c743, + 0x2bce48, + 0x39fd8b, + 0x230305, + 0x2f41c5, + 0x2f41c6, + 0x2ea004, + 0x3bf388, + 0x20e543, + 0x21f784, + 0x21f787, + 0x355746, + 0x344b06, + 0x29810a, + 0x250d44, + 0x250d4a, + 0x5c20c386, + 0x20c387, + 0x25ca07, + 0x27b0c4, + 0x27b0c9, + 0x262445, + 0x2439cb, + 0x2eef43, + 0x21ad43, + 0x5c625b03, + 0x23a584, + 0x5ca00482, + 0x2f70c6, + 0x5cea2a45, + 0x315c45, + 0x258586, + 0x352b04, + 0x5d2044c2, + 0x24bbc4, + 0x5d60b282, + 0x28b5c5, + 0x236c84, + 0x22cb43, + 0x5de17142, + 0x217143, + 0x273e86, + 0x5e204242, + 0x2241c8, + 0x22a844, + 0x22a846, + 0x204dc6, + 0x25ec04, + 0x208cc5, + 0x214e48, + 0x215647, + 0x2159c7, + 0x2159cf, + 0x29b086, + 0x22f483, + 0x22f484, + 0x36edc4, + 0x213103, + 0x22a004, + 0x2494c4, + 0x5e60fd02, + 0x291cc3, + 0x24bf43, + 0x5ea0d2c2, + 0x22f043, + 0x20d2c3, + 0x21d70a, + 0x2e7d07, + 0x381f0c, + 0x3821c6, + 0x2f5a86, + 0x2f6447, + 0x5ee0e947, + 0x252d49, + 0x245984, + 0x253e04, + 0x5f221382, + 0x5f600a02, + 0x2984c6, + 0x32bf84, + 0x2df606, + 0x239048, + 0x2bf2c4, + 0x266886, + 0x2d9d05, + 0x26e488, + 0x2041c3, + 0x26fd85, + 0x270b03, + 0x3a04c3, + 0x3a04c4, + 0x206ac3, + 0x5fa0e602, + 0x5fe00742, + 0x2eee09, + 0x273885, + 0x276bc4, + 0x27ab05, + 0x217e84, + 0x2c62c7, + 0x36ecc5, + 0x231944, + 0x231948, + 0x2d6206, + 0x2dac04, + 0x2e0788, + 0x2e1fc7, + 0x60202502, + 0x2e6f44, + 0x2131c4, + 0x348cc7, + 0x60602504, + 0x210f82, + 0x60a06742, + 0x227103, + 0x2dfc84, + 0x2b2143, + 0x370645, + 0x60e06d42, + 0x2eeac5, + 0x21b9c2, + 0x35c7c5, + 0x374745, + 0x61204d02, + 0x35f004, + 0x61606182, + 0x266d86, + 0x2a7806, + 0x272f08, + 0x2c7588, + 0x30de84, + 0x2f97c5, + 0x395809, + 0x2fd8c4, + 0x210884, + 0x208483, + 0x61a1f545, + 0x2cb6c7, + 0x28d004, + 0x31288d, + 0x332182, + 0x33f203, + 0x3479c3, + 0x61e00d02, + 0x397dc5, + 0x212cc7, + 0x23fd84, + 0x23fd87, + 0x2a0109, + 0x2cdd89, + 0x277e07, + 0x20f803, + 0x2ba348, + 0x2522c9, + 0x349c47, + 0x355685, + 0x395546, + 0x398bc6, + 0x3aaf05, + 0x25d845, + 0x62209142, + 0x37da45, + 0x2bad08, + 0x2c9546, + 0x626c0d47, + 0x2f6244, + 0x29bb07, + 0x300246, + 0x62a3b442, + 0x37ffc6, + 0x302d4a, + 0x3035c5, + 0x62ee6282, + 0x63260a02, + 0x312586, + 0x2b36c8, + 0x636926c7, + 0x63a04502, + 0x226783, + 0x36a846, + 0x22cf04, + 0x3b0b46, + 0x344e06, + 0x36d78a, + 0x377705, + 0x208806, + 0x2205c3, + 0x2205c4, + 0x203082, + 0x314a43, + 0x63e11ac2, + 0x2f8483, + 0x382c04, + 0x2b3804, + 0x2b380a, + 0x22e603, + 0x281288, + 0x22e60a, + 0x2b4247, + 0x309306, + 0x266c44, + 0x220cc2, + 0x228cc2, + 0x64207002, + 0x23ddc3, + 0x25c7c7, + 0x320707, + 0x28e8c4, + 0x39d147, + 0x2f0706, + 0x21e747, + 0x233484, + 0x398ac5, + 0x2ce485, + 0x6462be42, + 0x231146, + 0x327943, + 0x371742, + 0x383306, + 0x64a08bc2, + 0x64e05082, + 0x3c0985, + 0x6522a202, + 0x65604782, + 0x348085, + 0x39e345, + 0x2088c5, + 0x26f003, + 0x352285, + 0x2e5987, + 0x305cc5, + 0x311985, + 0x3b01c4, + 0x24d486, + 0x264544, + 0x65a00d42, + 0x666f2bc5, + 0x2ab647, + 0x3176c8, + 0x29f806, + 0x29f80d, + 0x2aac09, + 0x2aac12, + 0x359f05, + 0x36f8c3, + 0x66a08882, + 0x314544, + 0x39bb03, + 0x3963c5, + 0x304a45, + 0x66e1a902, + 0x264183, + 0x67231802, + 0x67a43242, + 0x67e1f342, + 0x2ed385, + 0x23fec3, + 0x36d408, + 0x68204382, + 0x686000c2, + 0x2b0246, + 0x35f2ca, 0x205503, - 0x200983, - 0x2099c2, - 0x2a84c3, - 0x205503, - 0x204e83, - 0x200983, - 0x2a84c3, - 0x205503, - 0x25e983, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x16d208, - 0x2099c2, - 0x2006c2, - 0x231442, - 0x206502, + 0x209f43, + 0x2ef103, + 0x69202642, + 0x77602cc2, + 0x77e0d582, + 0x206442, + 0x37fdc9, + 0x2caa44, + 0x23b488, + 0x782fd502, + 0x78603642, + 0x2f5e45, + 0x23d9c8, + 0x3a2fc8, + 0x25920c, + 0x22fac3, + 0x78a68dc2, + 0x78e0c402, + 0x2d3206, + 0x30a185, + 0x2a7b83, + 0x381c46, + 0x30a2c6, + 0x20d883, + 0x30bc43, + 0x30c146, + 0x30cd84, + 0x29d386, + 0x2d85c5, + 0x30d10a, + 0x2397c4, + 0x30e244, + 0x30f08a, + 0x79203442, + 0x2413c5, + 0x31018a, + 0x310a85, + 0x311344, + 0x311446, + 0x3115c4, + 0x221806, + 0x79611042, + 0x33c0c6, + 0x3b1b45, + 0x3b80c7, + 0x200206, + 0x2de844, + 0x2de847, + 0x327646, + 0x245345, + 0x245347, + 0x3abdc7, + 0x3abdce, + 0x232206, + 0x2fa605, + 0x202447, + 0x216303, + 0x3326c7, + 0x2172c5, + 0x21b0c4, + 0x2343c2, + 0x2432c7, + 0x304784, + 0x383884, + 0x270b8b, + 0x224e03, + 0x2d4c47, + 0x224e04, + 0x2f11c7, + 0x299543, + 0x33dd4d, + 0x398608, + 0x224604, + 0x231845, + 0x312bc5, + 0x313003, + 0x79a0c4c2, + 0x314a03, + 0x314d43, + 0x20f204, + 0x283745, + 0x22a4c7, + 0x220646, + 0x382943, + 0x38344b, + 0x259c8b, + 0x2ac9cb, + 0x2fbd4b, + 0x2c578a, + 0x30e48b, + 0x32420b, + 0x362f0c, + 0x38bf4b, + 0x3bdf51, + 0x3bfd8a, + 0x31604b, + 0x31630c, + 0x31660b, + 0x316b8a, + 0x317c8a, + 0x318c8e, + 0x31930b, + 0x3195ca, + 0x31a9d1, + 0x31ae0a, + 0x31b30b, + 0x31b84e, + 0x31c18c, + 0x31c68b, + 0x31c94e, + 0x31cccc, + 0x31d9ca, + 0x31eccc, + 0x79f1efca, + 0x31f7c8, + 0x320909, + 0x3232ca, + 0x32354a, + 0x3237cb, + 0x326d8e, + 0x327111, + 0x330189, + 0x3303ca, + 0x3313cb, + 0x334a0a, + 0x3354d6, + 0x336e4b, + 0x337b0a, + 0x337f4a, + 0x33a4cb, + 0x33b749, + 0x33e6c9, + 0x33ec8d, + 0x33f2cb, + 0x34040b, + 0x340dcb, + 0x347049, + 0x34768e, + 0x347dca, + 0x3494ca, + 0x349a0a, + 0x34a14b, + 0x34a98b, + 0x34ac4d, + 0x34c50d, + 0x34cd50, + 0x34d20b, + 0x35064c, + 0x3512cb, + 0x353ccb, + 0x35528e, + 0x355e0b, + 0x355e0d, + 0x35ae8b, + 0x35b90f, + 0x35bccb, + 0x35c50a, + 0x35cb49, + 0x35de09, + 0x35e18b, + 0x35e44e, + 0x36020b, + 0x361acf, + 0x36394b, + 0x363c0b, + 0x363ecb, + 0x3643ca, + 0x368a89, + 0x36e04f, + 0x372a8c, + 0x3732cc, + 0x37374e, + 0x373ccf, + 0x37408e, + 0x375690, + 0x375a8f, + 0x37660e, + 0x376f4c, + 0x377252, + 0x379891, + 0x37a18e, + 0x37a94e, + 0x37ae8e, + 0x37b20f, + 0x37b5ce, + 0x37b953, + 0x37be11, + 0x37c24c, + 0x37c54e, + 0x37c9cc, + 0x37de53, + 0x37ead0, + 0x37f30c, + 0x37f60c, + 0x37facb, + 0x38044e, + 0x380d8b, + 0x3816cb, + 0x382fcc, + 0x38b38a, + 0x38b74c, + 0x38ba4c, + 0x38bd49, + 0x38d7cb, + 0x38da88, + 0x38df49, + 0x38df4f, + 0x38f88b, + 0x7a39028a, + 0x391e4c, + 0x393009, + 0x393488, + 0x39368b, + 0x393d8b, + 0x39490a, + 0x394b8b, + 0x3950cc, + 0x396048, + 0x398d4b, + 0x39b1cb, + 0x39ef4e, + 0x3a05cb, + 0x3a1f0b, + 0x3ab94b, + 0x3abc09, + 0x3ac14d, + 0x3b1d4a, + 0x3b2c97, + 0x3b4398, + 0x3b6bc9, + 0x3b7d0b, + 0x3b8fd4, + 0x3b94cb, + 0x3b9a4a, + 0x3ba38a, + 0x3ba60b, + 0x3badd0, + 0x3bb1d1, + 0x3bc00a, + 0x3bd54d, + 0x3bdc4d, + 0x3c05cb, + 0x3c1206, + 0x231243, + 0x7a791143, + 0x26ed86, + 0x248805, + 0x22d287, + 0x3240c6, + 0x1608742, + 0x2c1fc9, + 0x320244, + 0x2e4d48, + 0x210943, + 0x314487, + 0x239202, + 0x2b3d03, + 0x7aa04542, + 0x2d0d06, + 0x2d2104, + 0x37a844, + 0x3443c3, + 0x3443c5, + 0x7b2cb8c2, + 0x7b6aeb44, + 0x27b007, + 0x7ba43282, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x200e03, + 0x207102, + 0x16fb88, + 0x20f882, + 0x323043, + 0x28cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x215443, + 0x32b7d6, + 0x32ca13, + 0x39cfc9, + 0x34e148, + 0x341189, + 0x310306, + 0x340010, + 0x24c9d3, + 0x355808, + 0x2a0a87, + 0x37d347, + 0x28db0a, + 0x232309, + 0x3961c9, + 0x28664b, + 0x33af86, + 0x20728a, + 0x228e06, + 0x31fe43, + 0x2dce85, + 0x233108, + 0x266e4d, + 0x28af0c, + 0x218c87, + 0x318fcd, + 0x214f44, + 0x23a84a, + 0x23bbca, + 0x23c08a, + 0x24ccc7, + 0x246b87, + 0x24a904, + 0x233d86, + 0x209d44, + 0x2c7ec8, + 0x26eb89, + 0x2bb246, + 0x2bb248, + 0x24d18d, + 0x2cdfc9, + 0x209708, + 0x3a0347, + 0x300fca, + 0x2550c6, + 0x2664c7, + 0x2bd584, + 0x292347, + 0x35180a, + 0x38690e, + 0x2247c5, + 0x29224b, + 0x32f709, + 0x25bd09, + 0x21b7c7, + 0x2936ca, + 0x348c07, + 0x307d49, + 0x20b808, + 0x33420b, + 0x2e4505, + 0x3ab60a, + 0x2734c9, + 0x331d0a, + 0x2d2e0b, + 0x38668b, + 0x2863d5, + 0x30be85, + 0x3a03c5, + 0x2f4dca, + 0x364a8a, + 0x32f487, + 0x2252c3, + 0x298448, + 0x2db34a, + 0x22a846, + 0x252109, + 0x26e488, + 0x2dac04, + 0x2b2149, + 0x2c7588, + 0x2b2d07, + 0x2f2bc6, + 0x2ab647, + 0x376d87, + 0x24a205, + 0x22460c, + 0x231845, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x20f882, + 0x238543, + 0x208e83, + 0x200e03, + 0x201a03, + 0x238543, + 0x208e83, + 0xe03, + 0x231e83, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x16fb88, + 0x20f882, + 0x201742, + 0x23c2c2, + 0x202542, 0x200542, - 0x2decc2, - 0x46a84c3, - 0x232403, - 0x2163c3, - 0x2e9dc3, - 0x244183, - 0x209703, - 0x2d47c6, - 0x205503, - 0x200983, - 0x233183, - 0x16d208, - 0x31ae44, - 0x202107, - 0x392403, - 0x2ae584, - 0x22e043, - 0x21c7c3, - 0x2e9dc3, - 0x16fc07, - 0x205702, - 0x18d2c3, - 0x5a099c2, - 0x88f4d, - 0x8928d, - 0x231442, - 0x1b1384, + 0x2e6dc2, + 0x4638543, + 0x23cac3, + 0x21b583, + 0x323043, + 0x255783, + 0x28cac3, + 0x2dcd86, + 0x208e83, + 0x201a03, + 0x20bdc3, + 0x16fb88, + 0x345b44, + 0x20da07, + 0x2112c3, + 0x2b1684, + 0x208543, + 0x21b843, + 0x323043, + 0x36dc7, + 0x145944, + 0xf183, + 0x145c05, + 0x207102, + 0x19c783, + 0x5a0f882, + 0x1490fc9, + 0x9144d, + 0x9178d, + 0x23c2c2, + 0x31604, + 0x145c49, 0x200442, - 0x5fb1288, - 0xed844, - 0x16d208, - 0x1411d82, - 0x15054c6, - 0x231783, - 0x200c03, - 0x66a84c3, - 0x22fd84, - 0x6a32403, - 0x6ee9dc3, - 0x202bc2, - 0x3b1384, - 0x205503, - 0x2f78c3, - 0x203ec2, - 0x200983, - 0x21b5c2, - 0x2f2443, - 0x203082, - 0x211643, - 0x265d43, + 0x5f4ed48, + 0xf4544, + 0x16fb88, + 0x1409702, + 0x1510cc6, + 0x239283, + 0x2bcc43, + 0x6638543, + 0x23a844, + 0x6a3cac3, + 0x6f23043, + 0x205e82, + 0x231604, + 0x208e83, + 0x301dc3, + 0x2014c2, + 0x201a03, + 0x222dc2, + 0x2fabc3, + 0x204242, + 0x205983, + 0x26e543, 0x200202, - 0x16d208, - 0x231783, - 0x2f78c3, - 0x203ec2, - 0x2f2443, - 0x203082, - 0x211643, - 0x265d43, + 0x16fb88, + 0x239283, + 0x301dc3, + 0x2014c2, + 0x2fabc3, + 0x204242, + 0x205983, + 0x26e543, 0x200202, - 0x2f2443, - 0x203082, - 0x211643, - 0x265d43, + 0x2fabc3, + 0x204242, + 0x205983, + 0x26e543, 0x200202, - 0x2a84c3, - 0x38d2c3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x244183, - 0x209703, - 0x211cc4, - 0x205503, - 0x200983, - 0x20f942, - 0x201303, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x38d2c3, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x205503, - 0x200983, - 0x373605, - 0x212982, - 0x205702, - 0x16d208, - 0x1456108, - 0x2e9dc3, - 0x2274c1, - 0x202901, - 0x202941, - 0x23ad81, - 0x23ad01, - 0x30aec1, - 0x23aec1, - 0x2275c1, - 0x2eea41, - 0x30afc1, + 0x238543, + 0x39c783, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x255783, + 0x28cac3, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x20cb02, + 0x221483, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x39c783, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x208e83, + 0x201a03, + 0x355685, + 0x21a902, + 0x207102, + 0x16fb88, + 0x1480cc8, + 0x323043, + 0x20fec1, + 0x201641, + 0x203c01, + 0x201301, + 0x267401, + 0x2ae601, + 0x211341, + 0x28a0c1, + 0x24dfc1, + 0x2fbf81, 0x200141, 0x200001, - 0x129845, - 0x16d208, - 0x201ec1, - 0x200701, + 0x131645, + 0x16fb88, + 0x2008c1, + 0x201781, 0x200301, 0x200081, 0x200181, 0x200401, 0x200041, - 0x201181, + 0x2086c1, 0x200101, 0x200281, - 0x200e81, - 0x2008c1, - 0x200441, - 0x201301, - 0x206ec1, - 0x200341, 0x200801, + 0x200981, + 0x200441, + 0x204101, + 0x2227c1, + 0x200341, + 0x200741, 0x2002c1, 0x2000c1, - 0x201501, + 0x203441, 0x200201, - 0x200bc1, + 0x200c81, 0x2005c1, - 0x201cc1, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2099c2, - 0x2a84c3, - 0x232403, + 0x204541, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x20f882, + 0x238543, + 0x23cac3, 0x200442, - 0x200983, - 0x16fc07, - 0x9807, - 0x1cdc6, - 0x13ef8a, - 0x88648, - 0x51d48, - 0x52107, - 0x191106, - 0xd8c05, - 0x192345, - 0x5d306, - 0x125c86, - 0x25ef44, - 0x311547, - 0x16d208, - 0x2d5f04, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x2e9dc3, - 0x244183, - 0x209703, - 0x205503, - 0x200983, - 0x212982, - 0x2c5983, - 0x2bb143, - 0x32c243, - 0x2022c2, - 0x25d183, - 0x2030c3, - 0x204903, + 0x201a03, + 0x36dc7, + 0x8cbc7, + 0x24386, + 0x44f4a, + 0x906c8, + 0x5c288, + 0x5c6c7, + 0xffc6, + 0xe1d45, + 0x11205, + 0x86286, + 0x12cf06, + 0x286644, + 0x31cf87, + 0x16fb88, + 0x2de944, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x21b583, + 0x323043, + 0x255783, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x21a902, + 0x2ba8c3, + 0x242043, + 0x2cc103, + 0x202d42, + 0x33eb43, + 0x203ec3, + 0x20fc03, 0x200001, - 0x2dc745, - 0x206b43, - 0x221344, - 0x26cc83, - 0x318ec3, - 0x21b103, - 0x35ff43, - 0xaaa84c3, - 0x235ac4, - 0x23dbc3, - 0x21cc43, - 0x21b0c3, - 0x22ffc3, - 0x232403, - 0x232143, - 0x2459c3, - 0x2a2703, - 0x318e43, - 0x2344c3, - 0x202643, - 0x24ce44, - 0x24e347, - 0x248902, - 0x250943, - 0x256303, - 0x273ac3, - 0x390f43, - 0x2025c3, - 0xaee9dc3, - 0x20bec3, - 0x2143c3, - 0x24a5c3, - 0x328085, - 0x209d43, - 0x2fa383, - 0xb21f903, - 0x365f03, - 0x20d543, - 0x227f83, - 0x209703, - 0x228502, - 0x27d2c3, - 0x205503, - 0x1604e83, - 0x224a43, - 0x209a43, - 0x204a03, - 0x200983, - 0x35fe83, - 0x20f943, - 0x201303, - 0x2efe83, - 0x2ff903, - 0x2f2603, - 0x204405, - 0x23e743, - 0x285346, - 0x2f2643, - 0x36cf43, - 0x3759c4, - 0x2d9083, - 0x2284c3, - 0x267ec3, - 0x233183, - 0x212982, - 0x22d543, - 0x3024c3, - 0x304144, - 0x377404, - 0x20ce83, - 0x16d208, - 0x205702, - 0x200242, - 0x2022c2, - 0x201702, - 0x202a42, - 0x206c02, - 0x245482, - 0x2007c2, - 0x20d882, - 0x200e82, - 0x20b102, - 0x20e602, - 0x2675c2, - 0x2056c2, - 0x2decc2, - 0x2013c2, - 0x2069c2, - 0x201302, - 0x2172c2, - 0x202482, - 0x200482, - 0x219382, - 0x202782, - 0x209842, - 0x2027c2, - 0x222702, - 0x203b42, - 0x5702, - 0x242, - 0x22c2, - 0x1702, - 0x2a42, - 0x6c02, - 0x45482, - 0x7c2, - 0xd882, - 0xe82, - 0xb102, - 0xe602, - 0x675c2, - 0x56c2, - 0xdecc2, - 0x13c2, - 0x69c2, - 0x1302, - 0x172c2, - 0x2482, - 0x482, - 0x19382, - 0x2782, - 0x9842, - 0x27c2, - 0x22702, - 0x3b42, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2099c2, - 0x200983, - 0xc6a84c3, - 0x2e9dc3, - 0x209703, - 0x21a2c2, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x7b02, - 0x201bc2, - 0x153f3c5, - 0x25ed82, - 0x16d208, - 0x99c2, - 0x20c182, - 0x208d02, - 0x2024c2, - 0x209642, - 0x208442, - 0x192345, - 0x2038c2, - 0x203ec2, - 0x2023c2, - 0x204dc2, - 0x2013c2, - 0x385502, - 0x201102, - 0x236582, - 0x16fc07, - 0x1b270d, - 0xd8c89, - 0x56e8b, - 0xdd608, - 0x53dc9, - 0xfacc6, - 0x2e9dc3, - 0x16d208, - 0x16d208, - 0x52e06, - 0x1a78c7, - 0x205702, - 0x25ef44, - 0x2099c2, - 0x2a84c3, - 0x2006c2, - 0x232403, - 0x20d882, - 0x2d5f04, - 0x244183, - 0x249a02, - 0x205503, - 0x200442, - 0x200983, - 0x264a86, - 0x31ba0f, - 0x70a403, - 0x16d208, - 0x2099c2, - 0x2163c3, - 0x2e9dc3, - 0x209703, - 0x1526f4b, - 0xd9888, - 0x142b68a, - 0x14fa807, - 0xda405, - 0x16fc07, - 0x2099c2, - 0x2a84c3, - 0x2e9dc3, - 0x205503, - 0x205702, - 0x20c202, - 0x20bb42, - 0xfea84c3, - 0x23c042, - 0x232403, - 0x209d02, - 0x221402, - 0x2e9dc3, - 0x228782, - 0x251442, - 0x2a6c82, - 0x200f82, - 0x28d742, - 0x203442, - 0x202e42, - 0x267e42, - 0x24ecc2, - 0x211ec2, - 0x2ad882, - 0x2eab02, - 0x2182c2, - 0x2ad342, - 0x209703, - 0x20ec42, - 0x205503, - 0x200e42, - 0x281702, - 0x200983, - 0x25d202, - 0x209842, - 0x218942, - 0x202e02, - 0x200c42, - 0x2de402, - 0x20fe82, - 0x250b82, - 0x220642, - 0x30d44a, - 0x34d94a, - 0x37fc4a, - 0x3bbec2, - 0x202cc2, - 0x2058c2, - 0x1026e389, - 0x1072510a, - 0x1594ac7, - 0x1410843, - 0x24d50, - 0x50642, - 0x2030c4, - 0x10ea84c3, - 0x232403, - 0x249944, - 0x2e9dc3, - 0x3b1384, - 0x244183, - 0x209703, - 0x205503, - 0xdc105, - 0x204e83, - 0x200983, - 0x23e743, - 0x25ed03, - 0x16d208, - 0x1591084, - 0x18ff45, - 0x1a768a, - 0x116902, - 0x18ae46, - 0xaf551, - 0x1166e389, - 0x18ffc8, - 0x13f9c8, - 0xff387, - 0xec2, - 0x12984b, - 0x1a5b0a, - 0x21347, - 0x16d208, - 0x108f08, - 0xe4c7, - 0x17818f4b, - 0x1b887, - 0x1c02, - 0x6c707, - 0x1a1ca, - 0x13f6cf, - 0x988f, - 0x1b102, - 0x99c2, - 0xa2648, - 0x19e30a, - 0x1320c8, - 0xdc2, - 0x13f44f, - 0x9e18b, - 0x68bc8, - 0x38f47, - 0x388a, - 0x304cb, - 0x4efc9, - 0x11dd07, - 0xfc34c, - 0x2c07, - 0x19b40a, - 0xd4ac8, - 0x1a3cce, - 0x1cdce, - 0x2118b, - 0x26ccb, - 0x27d4b, - 0x2c009, - 0x2da0b, - 0x5e7cd, - 0x85acb, - 0xdfc8d, - 0xe000d, - 0xe164a, - 0x17724b, - 0x1ae0cb, - 0x31c45, - 0x1424d50, - 0x12618f, - 0x1268cf, - 0xe2c0d, - 0x1b8f90, - 0x2bb82, - 0x17fb0388, - 0x9688, - 0x182ee705, - 0x48fcb, - 0x117090, - 0x4fdc8, - 0x26e8a, - 0x56b49, - 0x5cb47, - 0x5ce87, - 0x5d047, - 0x5f507, - 0x60587, - 0x60b87, - 0x61387, - 0x617c7, - 0x61cc7, - 0x61fc7, - 0x62fc7, - 0x63187, - 0x63347, - 0x63507, - 0x63807, - 0x64007, - 0x64c87, - 0x65407, - 0x66547, - 0x66b07, - 0x66cc7, - 0x67047, - 0x67487, - 0x67687, - 0x67947, - 0x67b07, - 0x67cc7, - 0x67f87, - 0x68247, - 0x68f07, - 0x69607, - 0x698c7, - 0x6a047, - 0x6a207, - 0x6a607, - 0x6aec7, - 0x6b147, - 0x6b547, - 0x6b707, - 0x6b8c7, - 0x70587, - 0x71387, - 0x718c7, - 0x71e47, - 0x72007, - 0x72387, - 0x728c7, - 0xdb42, - 0xbbb0a, - 0xffb87, - 0x184cfa0b, - 0x14cfa16, - 0x17e91, - 0x1082ca, - 0xa24ca, - 0x52e06, - 0xd0f8b, - 0x5e82, - 0x2f711, - 0x157789, - 0x942c9, - 0x67e42, - 0x9f54a, - 0xa4909, - 0xa504f, - 0xa5a8e, - 0xa6388, - 0x17f42, - 0x18ef09, - 0x17f08e, - 0xf80cc, - 0xdf20f, - 0x198f4e, - 0xc84c, - 0x11809, - 0x13491, - 0x222c8, - 0x24512, - 0x281cd, - 0x2e0cd, - 0x8618b, - 0xbadd5, - 0xbb9c9, - 0xe268a, - 0x120689, - 0x160310, - 0x39a0b, - 0x4480f, - 0x5648b, - 0x58a8c, - 0x70f90, - 0x7beca, - 0x7d18d, - 0x80d4e, - 0x86cca, - 0x8720c, - 0x89714, - 0x157411, - 0x1a200b, - 0x9004f, - 0x9320d, - 0x9a00e, - 0x9fd8c, - 0xa1acc, - 0xaae8b, - 0xab18e, - 0xab990, - 0x154c0b, - 0x1160cd, - 0x10e80f, - 0x17e50c, - 0xb090e, - 0xb2391, - 0xb3ecc, - 0xc00c7, - 0xc064d, - 0xc0fcc, - 0xc1dd0, - 0x102c8d, - 0x12bc87, - 0xc7750, - 0xd3748, - 0xd51cb, - 0x12aa8f, - 0x17e248, - 0x1084cd, - 0x14d550, - 0x18ba60c6, - 0xaff43, - 0xbe02, - 0x11e309, - 0x5394a, - 0x104186, - 0x18cd9009, - 0x11d43, - 0xd6191, - 0xd65c9, - 0xd7607, - 0xaf6cb, - 0xde6d0, - 0xdeb8c, - 0xdf6c5, - 0x18f248, - 0x19f94a, - 0x111947, - 0x33c2, - 0x124a4a, - 0x127549, - 0x35b4a, - 0x8a3cf, - 0x3edcb, - 0x12814c, - 0x169b92, - 0xaea45, - 0x166aca, - 0x192ece45, - 0x18020c, - 0x122843, - 0x185502, - 0xf2bca, - 0x14f3fcc, - 0x1b1a48, - 0xdfe48, - 0x16fb87, - 0x1c42, - 0x3082, - 0x3f590, - 0x27c2, - 0x1ad58f, - 0x5d306, - 0x77ece, - 0xe598b, - 0x86ec8, - 0xd1a49, - 0x17d152, - 0x1abecd, - 0x55b08, - 0x56d49, - 0x572cd, - 0x57b89, - 0x5c58b, - 0x5d848, - 0x61ac8, - 0x628c8, - 0x62b49, - 0x62d4a, - 0x6398c, - 0xe3cca, - 0xff947, - 0x2270d, - 0xf4b4b, - 0x11a5cc, - 0x18b050, - 0xc2, - 0x7a14d, - 0x2dc2, - 0x35482, - 0xff88a, - 0x1081ca, - 0x10928b, - 0x1ae28c, - 0x108c8e, - 0x100cd, - 0x1b3908, - 0x7b02, - 0x11b5ec4e, - 0x1227020e, - 0x12a83a0a, - 0x1336864e, - 0x13b143ce, - 0x1432ee0c, - 0x1594ac7, - 0x1594ac9, - 0x1410843, - 0x14b3054c, - 0x15333209, - 0x15b49dc9, - 0x50642, - 0x18fb51, - 0x70151, - 0x8394d, - 0x17acd1, - 0x114311, - 0x12ed4f, - 0x13048f, - 0x13314c, - 0x149d0c, - 0x1a688d, - 0x1bb815, - 0x5064c, - 0x11f0cc, - 0xe9c50, - 0x11d44c, - 0x12a54c, - 0x15e999, - 0x168399, - 0x16fd99, - 0x175d54, - 0x181ad4, - 0x19b7d4, - 0x19d714, - 0x1ac314, - 0x16250709, - 0x1699ba89, - 0x1731f189, - 0x11e224c9, - 0x50642, - 0x126224c9, - 0x50642, - 0x15e98a, - 0x50642, - 0x12e224c9, - 0x50642, - 0x15e98a, - 0x50642, - 0x136224c9, - 0x50642, - 0x13e224c9, - 0x50642, - 0x146224c9, - 0x50642, - 0x15e98a, - 0x50642, - 0x14e224c9, - 0x50642, - 0x15e98a, - 0x50642, - 0x156224c9, - 0x50642, - 0x15e224c9, - 0x50642, - 0x15e98a, - 0x50642, - 0x166224c9, - 0x50642, - 0x16e224c9, - 0x50642, - 0x176224c9, - 0x50642, - 0x15e98a, - 0x50642, - 0xaf545, - 0x1a5b04, - 0x2bb84, - 0x1aa404, - 0x1a75c4, - 0xc484, - 0x13fc4, - 0x58f44, - 0xff384, - 0x14ab3c3, - 0x143e603, - 0xfb244, - 0x1547c03, - 0x2bb82, - 0x100c3, - 0x205702, - 0x2099c2, - 0x2006c2, - 0x218342, - 0x20d882, - 0x200442, - 0x203082, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x24a5c3, - 0x205503, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x205503, - 0x200983, - 0x3fc3, - 0x2e9dc3, - 0x205702, - 0x38d2c3, - 0x1aea84c3, - 0x3b8e47, - 0x2e9dc3, - 0x206343, - 0x211cc4, - 0x205503, - 0x200983, - 0x255cca, - 0x264a85, - 0x201303, - 0x20b0c2, - 0x16d208, - 0x16d208, - 0x99c2, - 0x11fd02, - 0x6c845, - 0x129845, - 0x16d208, - 0x1b887, - 0xa84c3, - 0x1ba38e47, - 0x13ee06, - 0x1bd49c05, - 0x11de07, - 0x66ca, - 0x3748, - 0x65c7, - 0x56948, - 0x28d87, - 0x2c6cf, - 0x30b87, - 0x3b806, - 0x117090, - 0x12330f, - 0x104204, - 0x1c11dece, - 0xa8b4c, - 0x4f14a, - 0x9a2c7, - 0x112b8a, - 0x18f409, - 0xbf34a, - 0x5414a, - 0x104186, - 0x9a38a, - 0x8350a, - 0xe47c9, - 0xd5a48, - 0xd5d46, - 0xd9a8d, - 0xb3c45, - 0x1a78c7, - 0x5d6c7, - 0xd9394, - 0xf938b, - 0x68a0a, - 0xa2d0d, - 0x1cdc3, - 0x1cdc3, - 0x1cdc6, - 0x1cdc3, - 0x18d2c3, - 0x16d208, - 0x99c2, - 0x49944, - 0x887c3, - 0x173605, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2030c3, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x294483, - 0x25ed03, - 0x2030c3, - 0x25ef44, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2082c3, - 0x2a84c3, - 0x232403, - 0x218343, - 0x2163c3, - 0x2e9dc3, - 0x3b1384, - 0x353903, - 0x227f83, - 0x209703, - 0x205503, - 0x200983, - 0x201303, - 0x311dc3, - 0x1dea84c3, - 0x232403, - 0x246383, - 0x2e9dc3, - 0x20a203, - 0x227f83, - 0x200983, - 0x2072c3, - 0x33bac4, - 0x16d208, - 0x1e6a84c3, - 0x232403, - 0x2a6443, - 0x2e9dc3, - 0x209703, - 0x211cc4, - 0x205503, - 0x200983, - 0x21db03, - 0x16d208, - 0x1eea84c3, - 0x232403, - 0x2163c3, - 0x204e83, - 0x200983, - 0x16d208, - 0x1594ac7, - 0x38d2c3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x211cc4, - 0x205503, - 0x200983, - 0x129845, - 0x16fc07, - 0xd95cb, - 0xd69c4, - 0xb3c45, - 0x1456108, - 0xa6a8d, - 0x20284a05, - 0x18004, - 0x169c3, - 0x186345, - 0x349a05, - 0x16d208, - 0x1cdc2, - 0x336c3, - 0xf1446, - 0x319ec8, - 0x313bc7, - 0x25ef44, - 0x3b2c86, - 0x3bb6c6, - 0x16d208, - 0x30ce43, - 0x33e589, - 0x237295, - 0x3729f, - 0x2a84c3, - 0x31d012, - 0xefac6, - 0x10a045, - 0x26e8a, - 0x56b49, - 0x31cdcf, - 0x2d5f04, - 0x20b145, - 0x2fa150, - 0x3b0887, - 0x204e83, - 0x28b148, - 0x125bc6, - 0x2ae1ca, - 0x256044, - 0x2ec883, - 0x264a86, - 0x20b0c2, - 0x22d54b, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x2f1743, - 0x2099c2, - 0x2cd83, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x206343, - 0x221f03, - 0x200983, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x205503, - 0x200983, - 0x205702, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x9885, - 0x25ef44, - 0x2a84c3, - 0x232403, - 0x210444, - 0x205503, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x2143c3, - 0x209703, - 0x205503, - 0x200983, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x391683, - 0x63643, - 0x6343, - 0x205503, - 0x200983, - 0x30d44a, - 0x32b0c9, - 0x346b0b, - 0x34708a, - 0x34d94a, - 0x35d74b, - 0x371e0a, - 0x37814a, - 0x37fc4a, - 0x37fecb, - 0x39f689, - 0x3a140a, - 0x3a178b, - 0x3acfcb, - 0x3b9eca, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x209703, - 0x205503, - 0x200983, - 0x4589, - 0x16d208, - 0x2a84c3, - 0x25cb44, - 0x207ac2, - 0x211cc4, - 0x26fc45, - 0x2030c3, - 0x25ef44, - 0x2a84c3, - 0x235ac4, - 0x232403, - 0x249944, - 0x2d5f04, - 0x3b1384, - 0x227f83, - 0x205503, - 0x200983, - 0x27a305, - 0x2082c3, - 0x201303, - 0x22ed03, - 0x250cc4, - 0x390fc4, - 0x34ae45, - 0x16d208, - 0x302044, - 0x3510c6, - 0x276384, - 0x2099c2, - 0x371007, - 0x24c0c7, - 0x247784, - 0x2555c5, - 0x302e85, - 0x2a9305, - 0x3b1384, - 0x3b8ac8, - 0x239486, - 0x30c188, - 0x24ed05, - 0x2da905, - 0x236b84, - 0x200983, - 0x2ed844, - 0x35c946, - 0x264b83, - 0x250cc4, - 0x256005, - 0x32d104, - 0x334944, - 0x20b0c2, - 0x2425c6, - 0x3962c6, - 0x2fdc05, - 0x205702, - 0x38d2c3, - 0x262099c2, - 0x2333c4, - 0x20d882, - 0x209703, - 0x202c82, - 0x205503, - 0x200442, - 0x214843, - 0x25ed03, - 0x16d208, - 0x16d208, - 0x2e9dc3, - 0x205702, - 0x26e099c2, - 0x2e9dc3, - 0x245b43, - 0x353903, - 0x327344, - 0x205503, - 0x200983, - 0x16d208, - 0x205702, - 0x276099c2, - 0x2a84c3, - 0x205503, - 0x200983, - 0x482, - 0x20a9c2, - 0x212982, - 0x206343, - 0x2e87c3, - 0x205702, - 0x129845, - 0x16d208, - 0x16fc07, - 0x2099c2, - 0x232403, - 0x249944, - 0x2032c3, - 0x2e9dc3, - 0x2143c3, - 0x209703, - 0x205503, - 0x216b03, - 0x200983, - 0x21da83, - 0x118fd3, - 0x11c954, - 0x16fc07, - 0x13b46, - 0x53b4b, - 0x1cdc6, - 0x51b87, - 0x11ab09, - 0xe6d4a, - 0x8850d, - 0x1b240c, - 0x1ada8a, - 0x192345, - 0x6708, - 0x5d306, - 0x125c86, - 0x22bb82, - 0xff14c, - 0x1a5cc7, - 0x22e51, - 0x2a84c3, - 0x568c5, - 0x77848, - 0x9e04, - 0x288347c6, - 0x17e86, - 0x8cb46, - 0x8da0a, - 0xac543, - 0x28e54b04, - 0x11aac5, - 0xde283, - 0xdc105, - 0xd104c, - 0xf04c8, - 0xb5708, - 0x9e009, - 0x134b08, - 0x141e046, - 0xda40a, - 0x82b48, - 0xf4648, - 0xff384, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x205702, - 0x2099c2, - 0x2e9dc3, - 0x202bc2, - 0x205503, - 0x200983, - 0x214843, - 0x3653cf, - 0x36578e, - 0x16d208, - 0x2a84c3, - 0x42f87, - 0x232403, - 0x2e9dc3, - 0x244183, - 0x205503, - 0x200983, - 0x201bc3, - 0x201bc7, - 0x200142, - 0x32c249, - 0x200242, - 0x23f88b, - 0x297b8a, - 0x2a2a49, - 0x200882, - 0x391206, - 0x34ed15, - 0x23f9d5, - 0x246993, - 0x23ff53, - 0x202a82, - 0x205ac5, - 0x3b364c, - 0x27160b, - 0x2726c5, - 0x201702, - 0x284202, - 0x386fc6, - 0x200ec2, - 0x3695c6, - 0x2d4c4d, - 0x27ef4c, - 0x224dc4, - 0x203dc2, - 0x205942, - 0x2248c8, - 0x202a42, - 0x312fc6, - 0x2ba844, - 0x34eed5, - 0x246b13, - 0x210783, - 0x32fa0a, - 0x3bb147, - 0x3094c9, - 0x37b887, - 0x30f242, - 0x200002, - 0x3aef06, - 0x20cb42, - 0x16d208, - 0x2105c2, - 0x20b382, - 0x274e87, - 0x20f687, - 0x21b585, - 0x201c02, - 0x21da47, - 0x21dc08, - 0x242b42, - 0x2bf3c2, - 0x22e802, - 0x201ec2, - 0x237b88, - 0x201ec3, - 0x2b5308, - 0x2cf1cd, - 0x213c03, - 0x327988, - 0x239f8f, - 0x23a34e, - 0x25edca, - 0x229751, - 0x229bd0, - 0x2bcdcd, - 0x2bd10c, - 0x311c47, - 0x32fb87, - 0x3b2d49, - 0x224ec2, - 0x206c02, - 0x25340c, - 0x25370b, - 0x204142, - 0x2ab046, - 0x21a1c2, - 0x209882, - 0x21b102, - 0x2099c2, - 0x383a84, - 0x238bc7, - 0x204682, - 0x23d147, - 0x23e487, - 0x20e142, - 0x2301c2, - 0x242e45, - 0x205742, - 0x362e0e, - 0x2ebb8d, - 0x232403, - 0x2be90e, - 0x2e064d, - 0x37eac3, - 0x200e02, - 0x21fec4, - 0x2454c2, - 0x2175c2, - 0x358e45, - 0x364b47, - 0x383382, - 0x218342, - 0x249547, - 0x24d288, - 0x248902, - 0x2aeac6, - 0x25328c, - 0x2535cb, - 0x20fc82, - 0x25924f, - 0x259610, - 0x259a0f, - 0x259dd5, - 0x25a314, - 0x25a80e, - 0x25ab8e, - 0x25af0f, - 0x25b2ce, - 0x25b654, - 0x25bb53, - 0x25c00d, - 0x272a89, - 0x2895c3, - 0x200782, - 0x22b0c5, - 0x207f86, - 0x20d882, - 0x21f507, - 0x2e9dc3, - 0x205e82, - 0x362a08, - 0x229991, - 0x229dd0, - 0x206482, - 0x288d87, - 0x203942, - 0x214607, - 0x20be02, - 0x319cc9, - 0x386f87, - 0x27aac8, - 0x234606, - 0x2e86c3, - 0x32a105, - 0x232682, - 0x202082, - 0x3af305, - 0x380685, - 0x2040c2, - 0x24c543, - 0x32d187, - 0x223787, - 0x200502, - 0x254684, - 0x223b83, - 0x223b89, - 0x22c548, - 0x200282, - 0x204bc2, - 0x3105c7, - 0x31ff05, - 0x2a5348, - 0x219947, - 0x200e83, - 0x28c446, - 0x2bcc4d, - 0x2bcfcc, - 0x2b45c6, - 0x208d02, - 0x2a8542, - 0x202342, - 0x239e0f, - 0x23a20e, - 0x302f07, - 0x203d02, - 0x2bf745, - 0x2bf746, - 0x20f242, - 0x20ec42, - 0x221f06, - 0x214543, - 0x214546, - 0x2c6985, - 0x2c698d, - 0x2c6f55, - 0x2c814c, - 0x2c95cd, - 0x2c9992, - 0x20e602, - 0x2675c2, - 0x202d02, - 0x240806, - 0x2f7f86, - 0x2033c2, - 0x208006, - 0x2023c2, - 0x38b785, - 0x200542, - 0x2ebc89, - 0x31554c, - 0x31588b, - 0x200442, - 0x24e748, - 0x203b02, - 0x2056c2, - 0x26a346, - 0x222445, - 0x226747, - 0x257d85, - 0x29e405, - 0x243002, - 0x2067c2, - 0x2013c2, - 0x2df507, - 0x380c0d, - 0x380f8c, - 0x22f087, - 0x20f982, - 0x2069c2, - 0x241248, - 0x31e488, - 0x2e3988, - 0x308484, - 0x2ab407, - 0x2e90c3, - 0x228ec2, - 0x2082c2, - 0x2eb3c9, - 0x3a40c7, - 0x201302, - 0x26a745, - 0x22d4c2, - 0x21aa02, - 0x2f9f03, - 0x2f9f06, - 0x2f1742, - 0x2f23c2, - 0x201a42, - 0x202f86, - 0x21fe07, - 0x213bc2, - 0x205ec2, - 0x2b514f, - 0x2be74d, - 0x3872ce, - 0x2e04cc, - 0x2009c2, - 0x207302, - 0x234445, - 0x30ba46, - 0x2018c2, - 0x202482, - 0x200482, - 0x2198c4, - 0x2cf044, - 0x2d0e86, - 0x203082, - 0x36cac7, - 0x203083, - 0x285d48, - 0x34e488, - 0x239887, - 0x240706, - 0x203902, - 0x234b03, - 0x234b07, - 0x273946, - 0x2dee45, - 0x308808, - 0x200d02, - 0x331207, - 0x222702, - 0x361782, - 0x20cfc2, - 0x2c6749, - 0x230982, - 0x200842, - 0x22f303, - 0x331c87, - 0x2002c2, - 0x3156cc, - 0x3159cb, - 0x2b4646, - 0x2de1c5, - 0x221c82, - 0x203b42, - 0x2b7bc6, - 0x260dc3, - 0x38c187, - 0x236102, - 0x201442, - 0x34eb95, - 0x23fb95, - 0x246853, - 0x2400d3, - 0x2585c7, - 0x271a48, - 0x271a50, - 0x28d2cf, - 0x297953, - 0x2a2812, - 0x32be10, - 0x2d544f, - 0x35f7d2, - 0x30c3d1, - 0x2b7613, - 0x2c6512, - 0x2cff4f, - 0x2d2e8e, - 0x2d3f52, - 0x2d71d1, - 0x2d7c8f, - 0x30440e, - 0x2f0691, - 0x2f17d0, - 0x2f2752, - 0x2fc711, - 0x364586, - 0x36d3c7, - 0x372187, - 0x203142, - 0x27d8c5, - 0x3933c7, - 0x212982, - 0x209942, - 0x228a85, - 0x21e743, - 0x34b0c6, - 0x380dcd, - 0x38110c, - 0x201682, - 0x3b34cb, - 0x2714ca, - 0x20598a, - 0x2b6449, - 0x2ea64b, - 0x219a8d, - 0x2fa5cc, - 0x25180a, - 0x22090c, - 0x26908b, - 0x27250c, - 0x29474b, - 0x3154c3, - 0x36cfc6, - 0x3a98c2, - 0x2f4542, - 0x20a743, - 0x208602, - 0x21fe83, - 0x2366c6, - 0x259f87, - 0x2c7fc6, - 0x39e4c8, - 0x31e188, - 0x2ce146, - 0x201f82, - 0x2fd5cd, - 0x2fd90c, - 0x2d5fc7, - 0x301f07, - 0x213b82, - 0x201502, - 0x234a82, - 0x24d642, - 0x2099c2, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x211cc4, - 0x205503, - 0x200983, - 0x214843, - 0x205702, - 0x2021c2, - 0x2ae8fdc5, - 0x2b247e45, - 0x2b717806, - 0x16d208, - 0x2baaee05, - 0x2099c2, - 0x2006c2, - 0x2bfb3ac5, - 0x2c27bdc5, - 0x2c67c9c7, - 0x2ca86a09, - 0x2ce3bc44, - 0x20d882, - 0x205e82, - 0x2d24b5c5, - 0x2d68f849, - 0x2db1db88, - 0x2deab805, - 0x2e300187, - 0x2e61ed48, - 0x2eae5d85, - 0x2ee00106, - 0x2f337809, - 0x2f6b5a48, - 0x2fac0488, - 0x2fe9704a, - 0x302732c4, - 0x306d13c5, - 0x30abc9c8, - 0x30e03a85, - 0x20cec2, - 0x31248a43, - 0x316a1686, - 0x31b60148, - 0x31eb94c6, - 0x32281f08, - 0x32719606, - 0x32adef04, - 0x200c82, - 0x32f2cb87, - 0x332a75c4, - 0x336756c7, - 0x33ba2987, - 0x200442, - 0x33e9b0c5, - 0x34334f84, - 0x346cd907, - 0x34a5f187, - 0x34e80886, - 0x3527c585, - 0x356959c7, - 0x35ad0b48, - 0x35e2b447, - 0x363164c9, - 0x36793105, - 0x36b31dc7, - 0x36e8f546, - 0x37391408, - 0x2273cd, - 0x279909, - 0x28174b, - 0x2a4b0b, - 0x34058b, - 0x2ffe8b, - 0x30bc4b, - 0x30bf0b, - 0x30c809, - 0x30d6cb, - 0x30d98b, - 0x30e48b, - 0x30f5ca, - 0x30fb0a, - 0x31010c, - 0x314d8b, - 0x31670a, - 0x32904a, - 0x33404e, - 0x33568e, - 0x335a0a, - 0x33808a, - 0x338dcb, - 0x33908b, - 0x339e8b, - 0x354ecb, - 0x3554ca, - 0x35618b, - 0x35644a, - 0x3566ca, - 0x35694a, - 0x372b0b, - 0x37914b, - 0x37c74e, - 0x37cacb, - 0x38454b, - 0x385acb, - 0x38900a, - 0x389289, - 0x3894ca, - 0x38a94a, - 0x3a00cb, - 0x3a1a4b, - 0x3a22ca, - 0x3a48cb, - 0x3a8c4b, - 0x3b990b, - 0x3767e648, - 0x37a87c89, - 0x37e9de89, - 0x382dacc8, - 0x342505, - 0x217083, - 0x21c6c4, - 0x220005, - 0x23b986, - 0x25da05, - 0x2864c4, - 0x21f408, - 0x308005, - 0x291784, - 0x203447, - 0x29cf8a, - 0x3712ca, - 0x338547, - 0x3af9c7, - 0x2f8f07, - 0x264e87, - 0x2f60c5, - 0x33bb86, - 0x2bb847, - 0x2b4904, - 0x2e4646, - 0x2e4546, - 0x3b9585, - 0x26d1c4, - 0x3519c6, - 0x29bf47, - 0x285746, - 0x2e3247, - 0x25e443, - 0x2b1c06, - 0x2328c5, - 0x27cac7, - 0x2641ca, - 0x260e44, - 0x217c08, - 0x2abd89, - 0x2cd247, - 0x336286, - 0x24e9c8, - 0x2b9c09, - 0x309684, - 0x366944, - 0x244245, - 0x2bb548, - 0x2c4b07, - 0x2a9709, - 0x364688, - 0x345e86, - 0x3204c6, - 0x298048, - 0x359646, - 0x247e45, - 0x280946, - 0x275ec8, - 0x24da46, - 0x2525cb, - 0x298646, - 0x29994d, - 0x3a6005, - 0x2a7486, - 0x208b45, - 0x2f9bc9, - 0x2f9a87, - 0x37a208, - 0x266986, - 0x298bc9, - 0x3793c6, - 0x264145, - 0x268686, - 0x2cae46, - 0x2cb3c9, - 0x3530c6, - 0x339487, - 0x26ad85, - 0x202ac3, - 0x252745, - 0x299c07, - 0x33c6c6, - 0x3a5f09, - 0x317806, - 0x280b86, - 0x210c49, - 0x280349, - 0x29fc07, - 0x282f88, - 0x28c989, - 0x27d548, - 0x378386, - 0x2d5805, - 0x2418ca, - 0x280c06, - 0x3b7986, - 0x2c8985, - 0x265808, - 0x223307, - 0x22f50a, - 0x249e46, - 0x279d45, - 0x37aa46, - 0x21ac47, - 0x336147, - 0x21bbc5, - 0x264305, - 0x357dc6, - 0x2ac5c6, - 0x34dc06, - 0x2b3204, - 0x27f689, - 0x288b46, - 0x2dd38a, - 0x21b388, - 0x3078c8, - 0x3712ca, - 0x20b445, - 0x29be85, - 0x350b88, - 0x2b2c88, - 0x27b5c7, - 0x258946, - 0x322388, - 0x2fdec7, - 0x27dc48, - 0x2b3846, - 0x281408, - 0x294f06, - 0x24ee87, - 0x299ec6, - 0x3519c6, - 0x3778ca, - 0x2bd8c6, - 0x2d5809, - 0x26dbc6, - 0x2af14a, - 0x2def09, - 0x2fb486, - 0x2b4b04, - 0x22b18d, - 0x287f07, - 0x326cc6, - 0x2c0345, - 0x379445, - 0x374246, - 0x2cd749, - 0x2b1647, - 0x277306, - 0x2cc246, - 0x286549, - 0x247d84, - 0x3482c4, - 0x352cc8, - 0x236a86, - 0x26a808, - 0x2e41c8, - 0x312747, - 0x3b7549, - 0x34de07, - 0x2aecca, - 0x2e1f8f, - 0x23188a, - 0x234245, - 0x276105, - 0x216e85, - 0x2ba787, - 0x21a803, - 0x283188, - 0x396786, - 0x396889, - 0x2b87c6, - 0x3b5207, - 0x298989, - 0x37a108, - 0x2c8a47, - 0x30a343, - 0x342585, - 0x21a785, - 0x2b304b, - 0x203b44, - 0x2c2084, - 0x274646, - 0x30abc7, - 0x382bca, - 0x248ac7, - 0x311e87, - 0x27bdc5, - 0x200645, - 0x2eef89, - 0x3519c6, - 0x24894d, - 0x353305, - 0x2b1383, - 0x205043, - 0x26f685, - 0x345c45, - 0x24e9c8, - 0x2790c7, - 0x348046, - 0x29db06, - 0x229105, - 0x2326c7, - 0x312247, - 0x239347, - 0x2d144a, - 0x2b1cc8, - 0x2b3204, - 0x24d7c7, - 0x27acc7, - 0x339306, - 0x262107, - 0x2dc4c8, - 0x2e6f08, - 0x268506, - 0x303008, - 0x2c87c4, - 0x2bb846, - 0x2353c6, - 0x33bfc6, - 0x2ba986, - 0x286004, - 0x264f46, - 0x2bf5c6, - 0x297546, - 0x247846, - 0x204f06, - 0x26e2c6, - 0x347f48, - 0x2b0748, - 0x2d1c88, - 0x25dc08, - 0x350b06, - 0x20dcc5, - 0x315ec6, - 0x2ab885, - 0x388447, - 0x215305, - 0x2125c3, - 0x211585, - 0x344cc4, - 0x205045, - 0x203b03, - 0x33a447, - 0x354648, - 0x2e3306, - 0x2c218d, - 0x2760c6, - 0x296ac5, - 0x2b7843, - 0x2bc389, - 0x247f06, - 0x28e7c6, - 0x29f4c4, - 0x231807, - 0x233606, - 0x2b1905, - 0x203cc3, - 0x3abd84, - 0x27ae86, - 0x2354c4, - 0x2da048, - 0x38ba89, - 0x215589, - 0x29f2ca, - 0x2a070d, - 0x313447, - 0x2b9186, - 0x206804, - 0x286a09, - 0x284688, - 0x287b06, - 0x33f286, - 0x262107, - 0x2b6b46, - 0x226346, - 0x26d606, - 0x3a2a0a, - 0x21ed48, - 0x2bacc5, - 0x262549, - 0x27e14a, - 0x2f5d08, - 0x29b908, - 0x295f08, - 0x2a7acc, - 0x30e705, - 0x29dd88, - 0x2e6586, - 0x37a386, - 0x3b50c7, - 0x2489c5, - 0x280ac5, - 0x215449, - 0x20e247, - 0x396845, - 0x227887, - 0x205043, - 0x2c5045, - 0x20ef48, - 0x252ac7, - 0x29b7c9, - 0x2d7985, - 0x2fa984, - 0x2a03c8, - 0x32ccc7, - 0x2c8c08, - 0x38d688, - 0x354b05, - 0x3a3946, - 0x278cc6, - 0x244609, - 0x2b01c7, - 0x2ac006, - 0x313787, - 0x210103, - 0x23bc44, - 0x2a1785, - 0x232804, - 0x3833c4, - 0x27fdc7, - 0x26c147, - 0x22e704, - 0x29b610, - 0x3b3c47, - 0x200645, - 0x24c20c, - 0x20a8c4, - 0x2c1488, - 0x24ed89, - 0x35acc6, - 0x334c48, - 0x215244, - 0x36c4c8, - 0x22fb06, - 0x2accc8, - 0x29c506, - 0x2bec0b, - 0x202ac5, - 0x2c8748, - 0x215ac4, - 0x38beca, - 0x29b7c9, - 0x245f06, - 0x216f48, - 0x256385, - 0x2b0f44, - 0x2c1386, - 0x239208, - 0x27e648, - 0x322c06, - 0x3a9ec4, - 0x241846, - 0x34de87, - 0x2755c7, - 0x26210f, - 0x207347, - 0x2fb547, - 0x3709c5, - 0x353e05, - 0x29f8c9, - 0x2dd046, - 0x27cc05, - 0x280647, - 0x2e0bc8, - 0x297645, - 0x299ec6, - 0x21b1c8, - 0x2b94ca, - 0x2db4c8, - 0x28ac87, - 0x2e23c6, - 0x262506, + 0x2ed0c5, + 0x203c43, + 0x226544, + 0x332083, + 0x322103, + 0x222903, + 0x383283, + 0xaa38543, + 0x240244, + 0x24ac83, + 0x207583, + 0x2228c3, + 0x23aa83, + 0x23cac3, + 0x23c803, + 0x202103, + 0x2aab03, + 0x322083, + 0x2bdec3, + 0x20df43, + 0x255684, + 0x257307, + 0x2f6802, + 0x25c003, + 0x263783, + 0x27e983, + 0x20fe03, + 0x20dec3, + 0xaf23043, + 0x209ac3, + 0x204c03, + 0x231603, + 0x34bc85, + 0x209c83, + 0x304d43, + 0xb207a83, + 0x374803, + 0x213643, + 0x229443, + 0x28cac3, + 0x22c2c2, + 0x20c0c3, + 0x208e83, + 0x1600e03, + 0x22b1c3, + 0x2014c3, + 0x21a743, + 0x201a03, + 0x36ea03, + 0x223583, + 0x221483, + 0x233503, + 0x30bcc3, + 0x2fad83, + 0x317345, + 0x20c843, + 0x2df706, + 0x2fadc3, + 0x349703, + 0x2205c4, + 0x20c9c3, + 0x386603, + 0x2f1a03, + 0x20bdc3, + 0x21a902, + 0x22fac3, + 0x30e403, + 0x30fac4, + 0x383884, 0x21a5c3, - 0x216a43, - 0x27e309, - 0x28c809, - 0x2c1286, - 0x2d7985, - 0x33bd48, - 0x216f48, - 0x3597c8, - 0x26d68b, - 0x2c23c7, - 0x30a589, - 0x262388, - 0x343084, - 0x3514c8, - 0x28cd89, - 0x2ac305, - 0x2ba687, - 0x23bcc5, - 0x27e548, - 0x28fc4b, - 0x295710, - 0x2a6dc5, - 0x215a0c, - 0x348205, - 0x27be43, - 0x2a8f86, - 0x2be6c4, - 0x335086, - 0x29bf47, - 0x21b244, - 0x240b88, - 0x28304d, - 0x302945, - 0x29b104, - 0x2243c4, - 0x276949, - 0x2a11c8, - 0x317687, - 0x22fb88, - 0x27f748, - 0x277605, - 0x209287, - 0x277587, - 0x33e347, - 0x264309, - 0x233489, - 0x214c46, - 0x2bd306, - 0x262346, - 0x37f785, - 0x3a7184, + 0x16fb88, + 0x207102, + 0x200242, + 0x202d42, + 0x20cac2, + 0x201d02, + 0x201442, + 0x23de42, + 0x201842, + 0x207b02, + 0x201fc2, + 0x2281c2, + 0x214642, + 0x2745c2, + 0x20cb42, + 0x2e6dc2, + 0x21cc82, + 0x225b82, + 0x204102, + 0x2204c2, + 0x205842, + 0x200482, + 0x221dc2, + 0x2044c2, + 0x20d2c2, + 0x200a02, + 0x21f542, + 0x204782, + 0x7102, + 0x242, + 0x2d42, + 0xcac2, + 0x1d02, + 0x1442, + 0x3de42, + 0x1842, + 0x7b02, + 0x1fc2, + 0x281c2, + 0x14642, + 0x745c2, + 0xcb42, + 0xe6dc2, + 0x1cc82, + 0x25b82, + 0x4102, + 0x204c2, + 0x5842, + 0x482, + 0x21dc2, + 0x44c2, + 0xd2c2, + 0xa02, + 0x1f542, + 0x4782, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x2442, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x20f882, + 0x201a03, + 0xc638543, + 0x323043, + 0x28cac3, + 0x1a3443, + 0x219302, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x1a3443, + 0x201a03, + 0x4542, + 0x201c02, + 0x1442b45, + 0x232282, + 0x16fb88, + 0xf882, + 0x209d82, + 0x209b02, + 0x20ddc2, + 0x2190c2, + 0x206802, + 0x11205, + 0x201282, + 0x2014c2, + 0x202c82, + 0x200dc2, + 0x21cc82, + 0x3951c2, + 0x206742, + 0x260a42, + 0x36dc7, + 0x1501cd, + 0xe1dc9, + 0x5900b, + 0xe5848, + 0x56809, + 0x106046, + 0x323043, + 0x16fb88, + 0x145944, + 0xf183, + 0x145c05, + 0x16fb88, + 0x5d3c6, + 0x145c49, + 0x126447, + 0x207102, + 0x286644, + 0x20f882, + 0x238543, + 0x201742, + 0x23cac3, + 0x207b02, + 0x2de944, + 0x255783, + 0x253442, + 0x208e83, + 0x200442, + 0x201a03, + 0x3a03c6, + 0x323d8f, + 0x7156c3, + 0x16fb88, + 0x20f882, + 0x21b583, + 0x323043, + 0x28cac3, + 0xe03, + 0x152e1cb, + 0xe2648, + 0x14b7aca, + 0x14f5907, + 0x8dbcb, + 0x149785, + 0x36dc7, + 0x20f882, + 0x238543, + 0x323043, + 0x208e83, + 0x207102, + 0x200b42, + 0x2092c2, + 0xfe38543, + 0x248582, + 0x23cac3, + 0x209c42, + 0x20d382, + 0x323043, + 0x210642, + 0x259c42, + 0x2aeb02, + 0x2006c2, + 0x295e02, + 0x203102, + 0x200782, + 0x2351c2, + 0x2335c2, + 0x252e42, + 0x2b5102, + 0x2d2942, + 0x327982, + 0x2111c2, + 0x28cac3, + 0x200802, + 0x208e83, + 0x24d382, + 0x289e82, + 0x201a03, + 0x2485c2, + 0x20d2c2, + 0x221382, + 0x200742, + 0x204d02, + 0x2e6282, + 0x22be42, + 0x231802, + 0x2312c2, + 0x3195ca, + 0x35c50a, + 0x39090a, + 0x3c1382, + 0x208a82, + 0x212a42, + 0x10223fc9, + 0x1072c38a, + 0x1438547, + 0x10a02482, + 0x1416dc3, + 0x12c2, + 0x12c38a, + 0x252044, + 0x11238543, + 0x23cac3, + 0x253384, + 0x323043, + 0x231604, + 0x255783, + 0x28cac3, + 0x208e83, + 0xe3bc5, + 0x200e03, + 0x201a03, + 0x20c843, + 0x202443, + 0x16fb88, + 0x140ff44, + 0x1441c5, + 0x12620a, + 0x11ec42, + 0x1affc6, + 0x35ad1, + 0x11a23fc9, + 0x144248, + 0x10b388, + 0x8cf47, + 0xbc2, + 0x13164b, + 0x1b320a, + 0x71ca, + 0x26547, + 0x16fb88, + 0x114008, + 0x14507, + 0x17c2198b, + 0x23087, + 0xc702, + 0x5b907, + 0x1920a, + 0x8cc4f, + 0x4f70f, + 0x22902, + 0xf882, + 0xaaa48, + 0xe228a, + 0x6a08, + 0x64b88, + 0xdfbc8, + 0x4c82, + 0x42bcf, + 0xa670b, + 0xf8d08, + 0x3e607, + 0x185b8a, + 0x3af8b, + 0x57f89, + 0x185a87, + 0x6908, + 0x1089cc, + 0x81a87, + 0x1a800a, + 0xdd088, + 0x1aafce, + 0x2438e, + 0x2638b, + 0x27bcb, + 0x2920b, + 0x2c049, + 0x2ff8b, + 0x31ccd, + 0x329cb, + 0x62b4d, + 0x62ecd, + 0xfa44a, + 0x1836cb, + 0x3b64b, + 0x47085, + 0x1802cc10, + 0x12d40f, + 0x12db4f, + 0x37a4d, + 0xbf490, + 0xc182, + 0x18623a08, + 0x8ca48, + 0x18af52c5, + 0x52a0b, + 0x11f3d0, + 0x5ad08, + 0x6b0a, + 0x27d89, + 0x6b307, + 0x6b647, + 0x6b807, + 0x6bb87, + 0x6ca87, + 0x6d487, + 0x6ddc7, + 0x6e187, + 0x6f187, + 0x6f487, + 0x70147, + 0x70307, + 0x704c7, + 0x70687, + 0x70987, + 0x70e47, + 0x71707, + 0x72007, + 0x72c87, + 0x731c7, + 0x73387, + 0x73707, + 0x74487, + 0x74687, + 0x750c7, + 0x75287, + 0x75447, + 0x75dc7, + 0x76087, + 0x77a47, + 0x78187, + 0x78447, + 0x78bc7, + 0x78d87, + 0x79187, + 0x79687, + 0x79907, + 0x79d07, + 0x79ec7, + 0x7a087, + 0x7ae07, + 0x7c447, + 0x7c987, + 0x7cc87, + 0x7ce47, + 0x7d1c7, + 0x7d787, + 0x13c42, + 0x64c8a, + 0xe90c7, + 0x287c5, + 0x806d1, + 0x157c6, + 0x11318a, + 0xaa8ca, + 0x5d3c6, + 0xb880b, + 0x17202, + 0x3a1d1, + 0x1bbc89, + 0x9c0c9, + 0x351c2, + 0xa808a, + 0xac7c9, + 0xacf0f, + 0xada4e, + 0xae208, + 0x206c2, + 0xb649, + 0x1025ce, + 0xe8b4c, + 0xf328f, + 0x1a5b4e, + 0x1684c, + 0x18009, + 0x1c291, + 0x1f108, + 0x2ac92, + 0x2bb4d, + 0x33c4d, + 0x15208b, + 0x41cd5, + 0x164ec9, + 0xfcf8a, + 0x40809, + 0x4d650, + 0x4e70b, + 0x5898f, + 0x6390b, + 0x7298c, + 0x77650, + 0x8430a, + 0x853cd, + 0x894ce, + 0x8ef4a, + 0xede0c, + 0x176a54, + 0x1bb911, + 0x95a8b, + 0x97fcf, + 0xa290d, + 0xa76ce, + 0xb2bcc, + 0xb330c, + 0x160b0b, + 0x160e0e, + 0xd6750, + 0x11868b, + 0x1876cd, + 0x1bce4f, + 0xba0cc, + 0xbb0ce, + 0xbc011, + 0xc7c4c, + 0xc9307, + 0xc9c0d, + 0x130d4c, + 0x1605d0, + 0x174c0d, + 0xd1b47, + 0xd7c10, + 0xdd6c8, + 0xf178b, + 0x134c4f, + 0x3ef48, + 0x11338d, + 0x15c750, + 0x172e49, + 0x18e086c6, + 0xb8243, + 0xbc445, + 0x9a02, + 0x143889, + 0x5e04a, + 0x10fb06, + 0x2594a, + 0x1900c949, + 0x1c003, + 0xdebd1, + 0xdf009, + 0xe0407, + 0x35c4b, + 0xe67d0, + 0xe6c8c, + 0xe8e48, + 0xe9805, + 0xb988, + 0x1ad4ca, + 0x1c0c7, + 0x16bac7, + 0x982, + 0x12bcca, + 0x12e7c9, + 0x79545, + 0x402ca, + 0x9260f, + 0x4b8cb, + 0x14bd4c, + 0x17a492, + 0x94e45, + 0xec1c8, + 0x17618a, + 0x196f3d05, + 0x190ecc, + 0x129ac3, + 0x1951c2, + 0xfb30a, + 0x14fb70c, + 0x14f508, + 0x62d08, + 0x36d47, + 0xb282, + 0x4242, + 0x47590, + 0xa02, + 0x3904f, + 0x86286, + 0x7c0e, + 0xebbcb, + 0x8f148, + 0xda049, + 0x18f052, + 0x95cd, + 0x586c8, + 0x58ec9, + 0x5d50d, + 0x5e4c9, + 0x5e88b, + 0x60648, + 0x65808, + 0x65b88, + 0x65e49, + 0x6604a, + 0x6a98c, + 0xeb04a, + 0x10bd07, + 0x1f54d, + 0xfde8b, + 0x12004c, + 0x404c8, + 0x4f049, + 0x1b01d0, + 0xc2, + 0x2d3cd, + 0x2642, + 0x2cc2, + 0x10bc4a, + 0x11308a, + 0x11438b, + 0x3b80c, + 0x113b0a, + 0x113d8e, + 0xf2cd, + 0x11d708, + 0x4542, + 0x11f46c0e, + 0x1260ee4e, + 0x12f43f8a, + 0x1373a14e, + 0x13f9d38e, + 0x1460138c, + 0x1438547, + 0x1438549, + 0x1416dc3, + 0x14e3700c, + 0x15707789, + 0x15f3b509, + 0x12c2, + 0x146b51, + 0xed91, + 0x143ecd, + 0x13a091, + 0x19d2d1, + 0x12cf, + 0x36f4f, + 0x1076cc, + 0x13b44c, + 0x18954d, + 0x1b5295, + 0x10ed8c, + 0xea88c, + 0x122ed0, + 0x158fcc, + 0x16d9cc, + 0x191819, + 0x1a83d9, + 0x1aa459, + 0x1b3e94, + 0x1b8ad4, + 0x1c0d14, + 0x2394, + 0x3754, + 0x1670ee49, + 0x16dc0fc9, + 0x176ea949, + 0x1221f309, + 0x12c2, + 0x12a1f309, + 0x12c2, + 0x238a, + 0x12c2, + 0x1321f309, + 0x12c2, + 0x238a, + 0x12c2, + 0x13a1f309, + 0x12c2, + 0x1421f309, + 0x12c2, + 0x14a1f309, + 0x12c2, + 0x238a, + 0x12c2, + 0x1521f309, + 0x12c2, + 0x238a, + 0x12c2, + 0x15a1f309, + 0x12c2, + 0x1621f309, + 0x12c2, + 0x238a, + 0x12c2, + 0x16a1f309, + 0x12c2, + 0x1721f309, + 0x12c2, + 0x17a1f309, + 0x12c2, + 0x238a, + 0x12c2, + 0x35ac5, + 0x1b3204, + 0x146c0e, + 0xee4e, + 0x143f8a, + 0x13a14e, + 0x19d38e, + 0x138c, + 0x3700c, + 0x107789, + 0x13b509, + 0x10ee49, + 0x1c0fc9, + 0xea949, + 0x122f8d, + 0x2649, + 0x3a09, + 0x5bf04, + 0x11d8c4, + 0x126144, + 0x15f784, + 0x8de84, + 0x4b744, + 0x6e44, + 0x67344, + 0x8cf44, + 0x157e2c3, + 0xc182, + 0xf2c3, + 0x4c82, + 0x207102, + 0x20f882, + 0x201742, + 0x207602, + 0x207b02, + 0x200442, + 0x204242, + 0x238543, + 0x23cac3, + 0x323043, + 0x231603, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x208e83, + 0x201a03, + 0x160c3, + 0x323043, + 0x31604, + 0x207102, + 0x39c783, + 0x1b638543, + 0x2bf347, + 0x323043, + 0x211a83, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x243d0a, + 0x3a03c5, + 0x221483, + 0x205082, + 0x16fb88, + 0x16fb88, + 0xf882, + 0x127482, + 0x1bf51b0b, + 0x5ba45, + 0x35dc5, + 0x114b46, + 0x145944, + 0xf183, + 0x145c05, + 0x131645, + 0x16fb88, + 0x23087, + 0x38543, + 0x1c644d87, + 0x1432c6, + 0x1c93b345, + 0x143387, + 0x1b4d0a, + 0x1b4bc8, + 0x11887, + 0x6df88, + 0x99707, + 0x152cf, + 0x435c7, + 0x150d86, + 0x11f3d0, + 0x12a58f, + 0x20a89, + 0x10fb84, + 0x1cd4344e, + 0xb098c, + 0x5810a, + 0xa7987, + 0x3520a, + 0xbb49, + 0xb514c, + 0x4304a, + 0x5ec8a, + 0x145c49, + 0x10fb06, + 0xa7a4a, + 0xe8a, + 0xa4e49, + 0xde488, + 0xde786, + 0xe284d, + 0xbc8c5, + 0x126447, + 0x1019c9, + 0xf72c7, + 0xb5ed4, + 0x103acb, + 0xf8b4a, + 0xab10d, + 0xd3c3, + 0xd3c3, + 0x24386, + 0xd3c3, + 0x19c783, + 0x16fb88, + 0xf882, + 0x53384, + 0x5f843, + 0x155685, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x203ec3, + 0x238543, + 0x23cac3, + 0x21b583, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x29c283, + 0x202443, + 0x203ec3, + 0x286644, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x206683, + 0x238543, + 0x23cac3, + 0x207603, + 0x21b583, + 0x323043, + 0x231604, + 0x3797c3, + 0x229443, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x221483, + 0x36a883, + 0x1ea38543, + 0x23cac3, + 0x250ac3, + 0x323043, + 0x212143, + 0x229443, + 0x201a03, + 0x204103, + 0x35f584, + 0x16fb88, + 0x1f238543, + 0x23cac3, + 0x2ae2c3, + 0x323043, + 0x28cac3, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x20e943, + 0x16fb88, + 0x1fa38543, + 0x23cac3, + 0x21b583, + 0x200e03, + 0x201a03, + 0x16fb88, + 0x1438547, + 0x39c783, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x131645, + 0x36dc7, + 0xb610b, + 0xdf404, + 0xbc8c5, + 0x1480cc8, + 0xae90d, + 0x20e6c505, + 0x7bd44, + 0x10c3, + 0x172d45, + 0x33b145, + 0x16fb88, + 0xd3c2, + 0x2bc3, + 0xf9306, + 0x31f948, + 0x3347c7, + 0x286644, + 0x39c286, + 0x3b5146, + 0x16fb88, + 0x2ddac3, + 0x342a49, + 0x26d615, + 0x6d61f, + 0x238543, + 0x3b3a52, + 0xf6306, + 0x114dc5, + 0x6b0a, + 0x27d89, + 0x3b380f, + 0x2de944, + 0x3490c5, + 0x304b10, + 0x34e347, + 0x200e03, + 0x293408, + 0x12ce46, + 0x29630a, + 0x230f04, + 0x2f3743, + 0x3a03c6, + 0x205082, + 0x22facb, + 0xe03, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x2f9a03, + 0x20f882, + 0x6ed43, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x211a83, + 0x228243, + 0x201a03, + 0x20f882, + 0x238543, + 0x23cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x207102, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x35dc5, + 0x286644, + 0x238543, + 0x23cac3, + 0x20f644, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x1a3443, + 0x201a03, + 0x238543, + 0x23cac3, + 0x21b583, + 0x204c03, + 0x28cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x210543, + 0x707c3, + 0x11a83, + 0x208e83, + 0x201a03, + 0x3195ca, + 0x335289, + 0x35438b, + 0x35490a, + 0x35c50a, + 0x369bcb, + 0x38274a, + 0x38b38a, + 0x39090a, + 0x390b8b, + 0x3ad209, + 0x3af10a, + 0x3af7cb, + 0x3b978b, + 0x3bfb4a, + 0x238543, + 0x23cac3, + 0x21b583, + 0x28cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x35dcb, + 0x651c8, + 0x1174c9, + 0x16fb88, + 0x238543, + 0x26b304, + 0x20b342, + 0x21bf84, + 0x346145, + 0x203ec3, + 0x286644, + 0x238543, + 0x240244, + 0x23cac3, + 0x253384, + 0x2de944, + 0x231604, + 0x229443, + 0x208e83, + 0x201a03, + 0x22d585, + 0x206683, + 0x221483, + 0x20ec43, + 0x231944, + 0x20fe84, + 0x2cc105, + 0x16fb88, + 0x30dc84, + 0x36bdc6, + 0x281384, + 0x20f882, + 0x381107, + 0x254d87, + 0x251844, + 0x260105, + 0x374e05, + 0x2b13c5, + 0x231604, + 0x2cf6c8, + 0x23eb46, + 0x3bffc8, + 0x257cc5, + 0x2e4505, + 0x263544, + 0x201a03, + 0x2f4544, + 0x368dc6, + 0x3a04c3, + 0x231944, + 0x280bc5, + 0x2e4ac4, + 0x34da44, + 0x205082, + 0x2669c6, + 0x3a2906, + 0x30a185, + 0x207102, + 0x39c783, + 0x2760f882, + 0x223b84, + 0x207b02, + 0x28cac3, + 0x200e82, + 0x208e83, + 0x200442, + 0x215443, + 0x202443, + 0x16fb88, + 0x16fb88, + 0x323043, + 0x207102, + 0x2820f882, + 0x323043, + 0x270443, + 0x3797c3, + 0x32e5c4, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x207102, + 0x28a0f882, + 0x238543, + 0x208e83, + 0xe03, + 0x201a03, + 0x482, + 0x208882, + 0x21a902, + 0x211a83, + 0x2ef783, + 0x207102, + 0x131645, + 0x16fb88, + 0x36dc7, + 0x20f882, + 0x23cac3, + 0x253384, + 0x2020c3, + 0x323043, + 0x204c03, + 0x28cac3, + 0x208e83, + 0x21eb43, + 0x201a03, + 0x2252c3, + 0x122213, + 0x124cd4, + 0x36dc7, + 0x139986, + 0x5e24b, + 0x24386, + 0x5c0c7, + 0x120589, + 0xe838a, + 0x9058d, + 0x14fecc, + 0x3954a, + 0x11205, + 0x1b4d48, + 0x86286, + 0x31586, + 0x12cf06, + 0x20c182, + 0x10b14c, + 0x1b33c7, + 0x2a691, + 0x238543, + 0x6df05, + 0x7588, + 0x18ec4, + 0x29cbe1c6, + 0x806c6, + 0xb9a06, + 0x960ca, + 0xb4003, + 0x2a24c984, + 0xe8345, + 0x18e43, + 0x2a63dc47, + 0xe3bc5, + 0xb88cc, + 0xf7a88, + 0xbd248, + 0xa6589, + 0x14dc08, + 0x1425886, + 0x2ab71549, + 0x14978a, + 0x16308, + 0x114b48, + 0x8cf44, + 0xb5ac5, + 0x2ae42bc3, + 0x2b332106, + 0x2b6f4dc4, + 0x2bb39d87, + 0x114b44, + 0x114b44, + 0x114b44, + 0x114b44, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x207102, + 0x20f882, + 0x323043, + 0x205e82, + 0x208e83, + 0x201a03, + 0x215443, + 0x373ccf, + 0x37408e, + 0x16fb88, + 0x238543, + 0x4db87, + 0x23cac3, + 0x323043, + 0x255783, + 0x208e83, + 0x201a03, + 0x20d4c3, + 0x20d4c7, + 0x200142, + 0x2ce609, + 0x200242, + 0x24788b, + 0x2c110a, + 0x2c67c9, + 0x201242, + 0x2100c6, + 0x26cd95, + 0x2479d5, + 0x275793, + 0x247f53, + 0x201d42, + 0x212c45, + 0x31d44c, + 0x27c6cb, + 0x29c705, + 0x20cac2, + 0x28e142, + 0x384c06, + 0x200bc2, + 0x3acc46, + 0x2dd20d, + 0x26540c, + 0x22cc84, + 0x200f82, + 0x203402, + 0x22b048, + 0x201d02, + 0x20a746, + 0x28bf04, + 0x26cf55, + 0x275913, + 0x216d03, + 0x33844a, + 0x205407, + 0x3145c9, + 0x38d4c7, + 0x20d342, + 0x200002, + 0x3ba886, + 0x212702, + 0x16fb88, + 0x216b42, + 0x201102, + 0x27f847, + 0x217387, + 0x222d85, + 0x20c702, + 0x225287, + 0x225448, + 0x2024c2, + 0x2430c2, + 0x237302, + 0x201382, + 0x242688, + 0x20a043, + 0x25fa08, + 0x2e9b0d, + 0x2322c3, + 0x32ec08, + 0x245f4f, + 0x24630e, + 0x339a4a, + 0x22e811, + 0x22ec90, + 0x2c34cd, + 0x2c380c, + 0x36a707, + 0x3385c7, + 0x39c349, + 0x20d302, + 0x201442, + 0x25db0c, + 0x25de0b, + 0x2008c2, + 0x360cc6, + 0x20e982, + 0x204882, + 0x222902, + 0x20f882, + 0x3b69c4, + 0x244387, + 0x229682, + 0x24a347, + 0x24b547, + 0x20d282, + 0x20c8c2, + 0x24da45, + 0x21a442, + 0x2f290e, + 0x2ab3cd, + 0x23cac3, + 0x28d58e, + 0x2c5c0d, + 0x25ac43, + 0x201482, + 0x2891c4, + 0x216582, + 0x20fac2, + 0x364145, + 0x373587, + 0x393202, + 0x207602, + 0x252f87, + 0x255ac8, + 0x2f6802, + 0x294ec6, + 0x25d98c, + 0x25dccb, + 0x206b02, + 0x26764f, + 0x267a10, + 0x267e0f, + 0x2681d5, + 0x268714, + 0x268c0e, + 0x268f8e, + 0x26930f, + 0x2696ce, + 0x269a54, + 0x269f53, + 0x26a40d, + 0x27d949, + 0x291ac3, + 0x201802, + 0x2b7505, + 0x206346, + 0x207b02, + 0x3a4ec7, + 0x323043, + 0x217202, + 0x37e548, + 0x22ea51, + 0x22ee90, + 0x2007c2, + 0x290e07, + 0x204182, + 0x332b07, + 0x209a02, + 0x342089, + 0x384bc7, + 0x27ac08, + 0x2be006, + 0x2ef683, + 0x339205, + 0x2022c2, + 0x207a82, + 0x3bac85, + 0x391345, + 0x204bc2, + 0x231043, + 0x2e4b47, + 0x205747, + 0x200502, + 0x25f1c4, + 0x211b83, + 0x211b89, + 0x215148, + 0x200282, + 0x202942, + 0x242387, + 0x263285, + 0x2ad208, + 0x215c87, + 0x21a243, + 0x294c86, + 0x2c334d, + 0x2c36cc, + 0x2c8346, + 0x209b02, + 0x20c202, + 0x204a82, + 0x245dcf, + 0x2461ce, + 0x374e87, + 0x20b302, + 0x2c72c5, + 0x2c72c6, + 0x214702, + 0x200802, + 0x228246, + 0x2b57c3, + 0x332a46, + 0x2d0285, + 0x2d028d, + 0x2d0855, + 0x2d108c, + 0x2d1e4d, + 0x2d2212, + 0x214642, + 0x2745c2, + 0x202ec2, + 0x249386, + 0x302486, + 0x200982, + 0x2063c6, + 0x202c82, + 0x39b505, + 0x200542, + 0x2ab4c9, + 0x2e324c, + 0x2e358b, + 0x200442, + 0x257708, + 0x2052c2, + 0x20cb42, + 0x278ec6, + 0x21f285, + 0x36c107, + 0x24bc85, + 0x28ea05, + 0x235d82, + 0x219a42, + 0x21cc82, + 0x2f3587, + 0x2613cd, + 0x26174c, + 0x317947, + 0x2235c2, + 0x225b82, + 0x23f688, + 0x343a08, + 0x34c008, + 0x313344, + 0x361087, + 0x2efc43, + 0x299842, + 0x206682, + 0x2f2149, + 0x3ab3c7, + 0x204102, + 0x2792c5, + 0x22fa42, + 0x236902, + 0x35dc83, + 0x35dc86, + 0x2f9a02, + 0x2fab42, + 0x200c02, + 0x281e06, + 0x345607, + 0x221282, + 0x206b42, + 0x25f84f, + 0x28d3cd, + 0x3029ce, + 0x2c5a8c, + 0x201a42, + 0x204142, + 0x2bde45, + 0x317e46, + 0x209002, + 0x205842, + 0x200482, + 0x215c04, + 0x2e9984, + 0x2b8706, + 0x204242, + 0x37d6c7, + 0x233803, + 0x233808, + 0x33cb48, + 0x240687, + 0x249286, + 0x202502, + 0x242603, + 0x351107, + 0x26ffc6, + 0x2e2d05, + 0x3136c8, + 0x206182, + 0x337547, + 0x21f542, + 0x332182, + 0x207f02, + 0x2e95c9, + 0x23b442, + 0x2018c2, + 0x248383, + 0x377787, + 0x2002c2, + 0x2e33cc, + 0x2e36cb, + 0x2c83c6, + 0x218d85, + 0x22a202, + 0x204782, + 0x2c1486, + 0x237e83, + 0x378407, + 0x243cc2, + 0x200d42, + 0x26cc15, + 0x247b95, + 0x275653, + 0x2480d3, + 0x2955c7, + 0x2c0ec8, + 0x379d90, + 0x3c020f, + 0x2c0ed3, + 0x2c6592, + 0x2ce1d0, + 0x2db58f, + 0x2dc512, + 0x2dffd1, + 0x2e0cd3, + 0x2e9392, + 0x2ea0cf, + 0x2f7c4e, + 0x2f9a92, + 0x2faed1, + 0x303e4f, + 0x347a4e, + 0x3559d1, + 0x2fee10, + 0x32f912, + 0x36fd51, + 0x3af4c6, + 0x30dd47, + 0x382ac7, + 0x203702, + 0x286d05, + 0x304887, + 0x21a902, + 0x218f42, + 0x230d85, + 0x226c43, + 0x244c06, + 0x26158d, + 0x2618cc, + 0x206442, + 0x31d2cb, + 0x27c58a, + 0x212b0a, + 0x2c04c9, + 0x2f0c0b, + 0x215dcd, + 0x304f8c, + 0x2f574a, + 0x277bcc, + 0x27d34b, + 0x29c54c, + 0x2b4c0b, + 0x2e31c3, + 0x36f946, + 0x3061c2, + 0x2fd502, + 0x256d03, + 0x203642, + 0x203643, + 0x260b86, + 0x268387, + 0x2c48c6, + 0x2e2448, + 0x343708, + 0x2cc7c6, + 0x20c402, + 0x309b4d, + 0x309e8c, + 0x2dea07, + 0x30db47, + 0x2302c2, + 0x221682, + 0x260982, + 0x255e82, + 0x20f882, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x215443, + 0x207102, + 0x207542, + 0x2da97d45, + 0x2de97685, + 0x2e320c86, + 0x16fb88, + 0x2e6b68c5, + 0x20f882, + 0x201742, + 0x2ea34cc5, + 0x2ee852c5, + 0x2f285e07, + 0x2f6f6e09, + 0x2fa74084, + 0x207b02, + 0x217202, + 0x2fe56a05, + 0x302977c9, + 0x30785908, + 0x30ab3185, + 0x30f3f5c7, + 0x31227248, + 0x316ec085, + 0x31a00106, + 0x31e41489, + 0x323311c8, + 0x326c8988, + 0x32a9ef0a, + 0x32e7e204, + 0x332d99c5, + 0x336c30c8, + 0x33b85d85, + 0x21a602, + 0x33e11103, + 0x342aa246, + 0x3475d1c8, + 0x34a8ab86, + 0x34e8a688, + 0x35348206, + 0x356e2dc4, + 0x204d42, + 0x35addc87, + 0x35eaf444, + 0x36280087, + 0x367b0c87, + 0x200442, + 0x36aa3885, + 0x36e8f904, + 0x372f1447, + 0x37632c47, + 0x37a89006, + 0x37e38385, + 0x3829d7c7, + 0x386d5dc8, + 0x38ab7887, + 0x38ea6c89, + 0x3939e345, + 0x397778c7, + 0x39a974c6, + 0x39e102c8, + 0x3279cd, + 0x27a209, + 0x28384b, + 0x289ecb, + 0x2ae3cb, + 0x2e62cb, + 0x31804b, + 0x31830b, + 0x318949, + 0x31984b, + 0x319b0b, + 0x31a08b, + 0x31b08a, + 0x31b5ca, + 0x31bbcc, + 0x31e00b, + 0x31ea4a, + 0x33064a, + 0x33c6ce, + 0x33d1ce, + 0x33d54a, + 0x33efca, + 0x33fa8b, + 0x33fd4b, + 0x340b0b, + 0x36124b, + 0x36184a, + 0x36250b, + 0x3627ca, + 0x362a4a, + 0x362cca, + 0x38424b, + 0x38c6cb, + 0x38e64e, + 0x38e9cb, + 0x39464b, + 0x395b0b, + 0x39900a, + 0x399289, + 0x3994ca, + 0x39a94a, + 0x3addcb, + 0x3afa8b, + 0x3b05ca, + 0x3b1fcb, + 0x3b674b, + 0x3bf58b, + 0x3a287a88, + 0x3a68fd09, + 0x3aaa6409, + 0x3aee4d48, + 0x34b945, + 0x202d43, + 0x21b744, + 0x345805, + 0x273dc6, + 0x274805, + 0x28f584, + 0x3a4dc8, + 0x312ec5, + 0x299a84, + 0x211587, + 0x2a550a, + 0x3813ca, + 0x308f07, + 0x202c47, + 0x303647, + 0x271907, + 0x2ff9c5, + 0x204906, + 0x22b9c7, + 0x2c8684, + 0x2db006, + 0x2daf06, + 0x208185, + 0x331c04, + 0x388bc6, + 0x2a4707, + 0x232646, + 0x2bfa07, + 0x232dc3, + 0x26c7c6, + 0x23cf85, + 0x285f07, + 0x27100a, + 0x284e04, + 0x220808, + 0x2a2009, + 0x2d0e47, + 0x31e8c6, + 0x257988, + 0x28b2c9, + 0x314784, + 0x376004, + 0x35d785, + 0x22b6c8, + 0x2ccc07, + 0x29a3c9, + 0x3af5c8, + 0x353706, + 0x24d486, + 0x29fd88, + 0x365bc6, + 0x297685, + 0x2890c6, + 0x280ec8, + 0x256286, + 0x25cb8b, + 0x2ac646, + 0x2a224d, + 0x208605, + 0x2af306, + 0x218a05, + 0x35d949, + 0x27a787, + 0x36d148, + 0x2969c6, + 0x2a1509, + 0x341046, + 0x270f85, + 0x2a7f06, + 0x2d3586, + 0x2d3b09, + 0x333f06, + 0x3529c7, + 0x248c85, + 0x201d83, + 0x25cd05, + 0x2a2507, + 0x338d06, + 0x208509, + 0x320c86, + 0x289306, + 0x219fc9, + 0x288ac9, + 0x2a8747, + 0x20cd08, + 0x280509, + 0x286988, + 0x38b5c6, + 0x2de245, + 0x23fa4a, + 0x289386, + 0x2bf1c6, + 0x2d7605, + 0x272408, + 0x2220c7, + 0x239fca, + 0x253b46, + 0x27a645, + 0x20a506, + 0x236b47, + 0x31e787, + 0x24fc45, + 0x271145, + 0x2e79c6, + 0x2fbfc6, + 0x2be306, + 0x2bb884, + 0x287e09, + 0x290bc6, + 0x2d430a, + 0x222b88, + 0x3059c8, + 0x3813ca, + 0x205b45, + 0x2a4645, + 0x3575c8, + 0x2b0fc8, + 0x2b43c7, + 0x295946, + 0x329608, + 0x30a447, + 0x287088, + 0x2bbec6, + 0x289b88, + 0x29cd06, + 0x257e47, + 0x2a27c6, + 0x388bc6, + 0x383d4a, + 0x345506, + 0x2de249, + 0x36b086, + 0x2b6c0a, + 0x2e2dc9, + 0x2fe406, + 0x2bccc4, + 0x2b75cd, + 0x28ff87, + 0x32df46, + 0x2c8845, + 0x3410c5, + 0x204dc6, + 0x2d4fc9, + 0x3879c7, + 0x2826c6, + 0x2bd406, + 0x28f609, + 0x33f784, + 0x3a1184, + 0x39c0c8, + 0x260f46, + 0x279388, + 0x30fec8, + 0x378187, + 0x3beb49, + 0x2be507, + 0x2b678a, + 0x2fc88f, + 0x25100a, + 0x2bdc45, + 0x281105, + 0x220085, + 0x28be47, + 0x236703, + 0x20cf08, + 0x201e46, + 0x201f49, + 0x2e4806, + 0x3a3607, + 0x2a12c9, + 0x36d048, + 0x2d76c7, + 0x315603, + 0x34b9c5, + 0x236685, + 0x2bb6cb, + 0x385e44, + 0x30ad44, + 0x27f006, + 0x315e87, + 0x392a4a, + 0x251a87, + 0x36a947, + 0x2852c5, + 0x2016c5, + 0x253689, + 0x388bc6, + 0x25190d, + 0x334145, + 0x2a10c3, + 0x200dc3, + 0x39cf05, + 0x3534c5, + 0x257988, + 0x283007, + 0x3a0f06, + 0x2a6086, + 0x232545, + 0x23cd87, + 0x377c87, + 0x23ea07, + 0x2d9a4a, + 0x26c888, + 0x2bb884, + 0x256007, + 0x284707, + 0x352846, + 0x26f5c7, + 0x2ece48, + 0x2e8548, + 0x276346, + 0x374f88, + 0x2d1704, + 0x22b9c6, + 0x239b86, + 0x333b86, + 0x2d0006, + 0x233ac4, + 0x2719c6, + 0x2c7146, + 0x29f406, + 0x2381c6, + 0x213ec6, + 0x223f06, + 0x3a0e08, + 0x3bcc88, + 0x2da288, + 0x274a08, + 0x357546, + 0x217e05, + 0x2dd4c6, + 0x2b3205, + 0x397f07, + 0x27df05, + 0x21ae83, + 0x2058c5, + 0x34cc44, + 0x214005, + 0x22dc83, + 0x33d807, + 0x374a48, + 0x2bfac6, + 0x2b0c4d, + 0x2810c6, + 0x29e985, + 0x227603, + 0x2c2a89, + 0x33f906, + 0x29dd86, + 0x2a8004, + 0x250f87, + 0x334546, + 0x387c85, + 0x20b2c3, + 0x209484, + 0x2848c6, + 0x204a04, + 0x239c88, + 0x2005c9, + 0x325f49, + 0x2a7e0a, + 0x2a918d, + 0x20abc7, + 0x2bf046, + 0x205ec4, + 0x2f6e09, + 0x28e688, + 0x28fb86, + 0x245246, + 0x26f5c7, + 0x2b9786, + 0x22c986, + 0x36aac6, + 0x3b0d0a, + 0x227248, + 0x364dc5, + 0x26fa09, + 0x28758a, + 0x2f1e88, + 0x2a40c8, + 0x29dd08, + 0x2ad74c, + 0x318585, + 0x2a6308, + 0x2e7546, + 0x36d2c6, + 0x3a34c7, + 0x251985, + 0x289245, + 0x325e09, + 0x219847, + 0x201f05, + 0x22d887, + 0x200dc3, + 0x2cd145, + 0x214308, + 0x25d087, + 0x2a3f89, + 0x2dac05, + 0x395a04, + 0x2a8e48, + 0x2dddc7, + 0x2d7888, + 0x2508c8, + 0x2d6645, + 0x281906, + 0x2a6186, + 0x277449, + 0x2b26c7, + 0x2b3ac6, + 0x2236c7, + 0x20e743, + 0x274084, + 0x2d1805, + 0x23cec4, + 0x393244, + 0x288547, + 0x25b347, + 0x234284, + 0x2a3dd0, + 0x234e47, + 0x2016c5, + 0x37178c, + 0x250684, + 0x2a9e48, + 0x257d49, + 0x36e646, + 0x34dd48, + 0x223384, + 0x37d0c8, + 0x23a5c6, + 0x238048, + 0x2a4cc6, + 0x2cc8cb, + 0x201d85, + 0x2d1688, + 0x200a04, + 0x200a0a, + 0x2a3f89, + 0x357f06, + 0x220148, + 0x263805, + 0x2b9044, + 0x2a9d46, + 0x23e8c8, + 0x287a88, + 0x329e86, + 0x358b04, + 0x23f9c6, + 0x2be587, + 0x27ff87, + 0x26f5cf, + 0x204187, + 0x2fe4c7, + 0x23d2c5, + 0x35fcc5, + 0x2a8409, + 0x2ed806, + 0x286045, + 0x288dc7, + 0x2c6188, + 0x29f505, + 0x2a27c6, + 0x2229c8, + 0x28ab8a, + 0x39c888, + 0x292f47, + 0x2fccc6, + 0x26f9c6, + 0x20ca43, + 0x2052c3, + 0x287749, + 0x280389, + 0x2a6b86, + 0x2dac05, + 0x304588, + 0x220148, + 0x365d48, + 0x36ab4b, + 0x2b0e87, + 0x315849, + 0x26f848, + 0x356284, + 0x3886c8, + 0x295089, + 0x2b3dc5, + 0x28bd47, + 0x274105, + 0x287988, + 0x297bcb, + 0x29d510, + 0x2aec45, + 0x21e20c, + 0x3a10c5, + 0x285343, + 0x296706, + 0x2c5a04, + 0x28fa06, + 0x2a4707, + 0x222a44, + 0x24c3c8, + 0x20cdcd, + 0x330a05, + 0x20ac04, + 0x241b84, + 0x27bd89, + 0x292bc8, + 0x320b07, + 0x23a648, + 0x287ec8, + 0x2829c5, + 0x28c647, + 0x282947, + 0x342807, + 0x271149, + 0x223c49, + 0x36c986, + 0x2c3a06, + 0x26f806, + 0x33e9c5, + 0x3b4944, 0x200006, 0x200386, - 0x277648, - 0x21a90b, - 0x260d07, - 0x206804, - 0x353646, - 0x2fe447, - 0x26dec5, - 0x391d05, - 0x219644, - 0x233406, + 0x282a08, + 0x23680b, + 0x284cc7, + 0x205ec4, + 0x334486, + 0x2ed187, + 0x388f45, + 0x210bc5, + 0x21b484, + 0x223bc6, 0x200088, - 0x286a09, - 0x2510c6, - 0x284048, - 0x2b19c6, - 0x345248, - 0x306dcc, - 0x2774c6, - 0x29678d, - 0x296c0b, - 0x339545, - 0x312387, - 0x3531c6, - 0x336008, - 0x214cc9, - 0x2d0588, - 0x200645, - 0x277987, - 0x27d648, - 0x349649, - 0x28e946, - 0x250fca, - 0x335d88, - 0x2d03cb, - 0x39818c, - 0x36c5c8, - 0x27a7c6, - 0x208c88, - 0x3b77c7, - 0x32cf49, - 0x28f74d, - 0x299dc6, - 0x27b808, - 0x2b0609, - 0x2bda48, - 0x281508, - 0x2bfe0c, - 0x2c0b47, - 0x2c1887, - 0x264145, - 0x2ad587, - 0x2e0a88, - 0x2c1406, - 0x2556cc, - 0x2ef888, - 0x2ccb88, - 0x25dec6, - 0x21a507, - 0x214e44, - 0x25dc08, - 0x22200c, - 0x2ce24c, - 0x2342c5, - 0x2d0d47, - 0x3a9e46, - 0x21a486, - 0x2f9d88, - 0x3af904, - 0x28574b, - 0x36cc0b, - 0x2e23c6, - 0x282ec7, - 0x37a805, - 0x269a05, - 0x285886, - 0x256345, - 0x203b05, - 0x2cc9c7, - 0x274c49, - 0x2ac784, - 0x2fbb45, - 0x2e4bc5, - 0x2d9dc8, - 0x329d05, - 0x2b72c9, - 0x2ae5c7, - 0x2ae5cb, - 0x381306, - 0x347c89, - 0x26d108, - 0x276545, - 0x33e448, - 0x2334c8, - 0x245747, - 0x3776c7, - 0x27fe49, - 0x2acc07, - 0x28a989, - 0x2aa70c, - 0x3163c8, - 0x2b2ac9, - 0x2b3d47, - 0x27f809, - 0x26c287, - 0x398288, - 0x3b7705, - 0x2bb7c6, - 0x2c0388, - 0x308a88, - 0x27e009, - 0x203b47, - 0x269ac5, - 0x222b09, - 0x2bd6c6, - 0x28f544, - 0x30e1c6, - 0x35ffc8, - 0x232ac7, - 0x21ab08, - 0x3030c9, - 0x3a3707, - 0x29d146, - 0x312444, - 0x211609, - 0x209108, - 0x25dd87, - 0x27eb46, - 0x21a846, - 0x3b7904, - 0x2241c6, - 0x204fc3, - 0x3b1649, - 0x202a86, - 0x303345, - 0x29db06, - 0x26cac5, - 0x27dac8, - 0x36c307, - 0x381646, - 0x3b3b06, - 0x3078c8, - 0x29fa47, - 0x299e05, - 0x29b408, - 0x3a1e48, - 0x335d88, - 0x3480c5, - 0x2bb846, - 0x215349, - 0x244484, - 0x26c94b, - 0x22604b, - 0x2babc9, - 0x205043, - 0x254485, - 0x2214c6, - 0x385208, - 0x2e1f04, - 0x2e3306, - 0x2d1589, - 0x2ca445, - 0x2cc906, - 0x32ccc6, - 0x216f44, - 0x2a764a, - 0x303288, - 0x308a86, - 0x3b8645, - 0x37a687, - 0x2e0fc7, - 0x3a3944, - 0x226287, - 0x2aecc4, - 0x33bf46, - 0x2096c3, - 0x264305, - 0x32ad45, - 0x207588, - 0x24d985, - 0x277209, - 0x25da47, - 0x25da4b, - 0x2a148c, - 0x2a224a, - 0x300187, - 0x203503, - 0x3afc08, - 0x348285, - 0x2976c5, - 0x205104, - 0x398186, - 0x24ed86, - 0x224207, - 0x33448b, - 0x286004, - 0x2e6684, - 0x21f044, - 0x2cafc6, - 0x21b244, - 0x2bb648, - 0x342445, - 0x21ba45, - 0x359707, - 0x312489, - 0x345c45, - 0x37424a, - 0x26ac89, - 0x2996ca, - 0x3a2b49, - 0x33fec4, - 0x2cc305, - 0x2b6c48, - 0x2cd9cb, - 0x244245, - 0x2f2fc6, - 0x213e84, - 0x277746, - 0x3a3589, - 0x353707, - 0x3179c8, - 0x2a0a86, - 0x34de07, - 0x27e648, - 0x3747c6, - 0x375604, - 0x365ac7, - 0x357305, - 0x367287, - 0x200104, - 0x353146, - 0x2f4308, - 0x296dc8, - 0x2e6047, - 0x274fc8, - 0x294fc5, - 0x204e84, - 0x3711c8, - 0x2750c4, - 0x216e05, - 0x2f5fc4, - 0x2fdfc7, - 0x288c07, - 0x27f948, - 0x2c8d86, - 0x24d905, - 0x277008, - 0x2db6c8, - 0x29f209, - 0x226346, - 0x22f588, - 0x38bd4a, - 0x26df48, - 0x2e5d85, - 0x20b306, - 0x26ab48, - 0x277a4a, - 0x210f87, - 0x284c45, - 0x292708, - 0x2ade04, - 0x265886, - 0x2c1c08, - 0x204f06, - 0x38e7c8, - 0x28f187, - 0x203346, - 0x2b4b04, - 0x284fc7, - 0x2b0d84, - 0x3a3547, - 0x28e60d, - 0x27b645, - 0x2cd54b, - 0x29c606, - 0x24e848, - 0x240b44, - 0x350d06, - 0x27ae86, - 0x208fc7, - 0x29644d, - 0x243cc7, - 0x2b12c8, - 0x269b85, - 0x278648, - 0x2c4a86, - 0x295048, - 0x228086, - 0x33d987, - 0x300449, - 0x343ac7, - 0x287dc8, - 0x2706c5, - 0x21b608, - 0x21a3c5, - 0x3a4245, - 0x3a2dc5, - 0x234543, - 0x2809c4, - 0x262545, - 0x337809, - 0x27ea46, - 0x2dc5c8, - 0x377485, - 0x2b2e87, - 0x2a78ca, - 0x2cc849, - 0x2cad4a, - 0x2d1d08, - 0x2276cc, - 0x2806cd, - 0x2fc003, - 0x38e6c8, - 0x3abd45, - 0x2b9286, - 0x379f86, - 0x2e58c5, - 0x313889, - 0x33cc45, - 0x277008, - 0x2552c6, - 0x347806, - 0x2a0289, - 0x393947, - 0x28ff06, - 0x2a7848, - 0x33bec8, - 0x2daec7, - 0x2ace4e, - 0x2c4cc5, - 0x349545, - 0x204e08, - 0x21fcc7, - 0x21a882, - 0x2bf984, - 0x334f8a, - 0x25de48, - 0x2fe546, - 0x298ac8, - 0x278cc6, - 0x332608, - 0x2ac008, - 0x3a4204, - 0x2b33c5, - 0x676384, - 0x676384, - 0x676384, - 0x202b43, - 0x21a6c6, - 0x2774c6, - 0x29cb0c, - 0x203383, - 0x27e146, - 0x2151c4, - 0x247e88, - 0x2d13c5, - 0x335086, - 0x2bcac8, - 0x2d2bc6, - 0x3815c6, - 0x245d08, - 0x2a1807, - 0x2ac9c9, - 0x2f214a, - 0x22b484, - 0x215305, - 0x2a96c5, - 0x247c06, - 0x313486, - 0x29d546, - 0x2f5546, - 0x2acb04, - 0x2acb0b, - 0x231804, - 0x29ccc5, - 0x2aad85, - 0x312806, - 0x3a6308, - 0x280587, - 0x317784, - 0x236203, - 0x2ad905, - 0x306047, - 0x28048b, - 0x207487, - 0x2bc9c8, - 0x2e62c7, - 0x370b06, - 0x279bc8, - 0x2a820b, - 0x21ff46, - 0x212309, - 0x2a8385, - 0x30a343, - 0x2cc906, - 0x28f088, - 0x213403, - 0x24f403, - 0x27e646, - 0x278cc6, - 0x35d10a, - 0x27a805, - 0x27accb, - 0x29da4b, - 0x23ef83, - 0x202843, - 0x2aec44, - 0x278a87, - 0x28f104, - 0x244504, - 0x2e6404, - 0x26e248, - 0x3b8588, - 0x3baf89, - 0x393188, - 0x2b9dc7, - 0x247846, - 0x2dc20f, - 0x2c4e06, - 0x2d1344, - 0x3b83ca, - 0x305f47, - 0x3b9606, - 0x28f589, - 0x3baf05, - 0x2076c5, - 0x3bb046, - 0x21b743, - 0x2ade49, - 0x21eec6, - 0x3afa89, - 0x382bc6, - 0x264305, - 0x2346c5, - 0x207343, - 0x278bc8, - 0x20d787, - 0x396784, - 0x247d08, - 0x2e1244, - 0x2f1006, - 0x2a8f86, - 0x23c346, - 0x2c8609, - 0x297645, - 0x3519c6, - 0x2582c9, - 0x2c41c6, - 0x26e2c6, - 0x387886, - 0x2160c5, - 0x2f5fc6, - 0x33d984, - 0x3b7705, - 0x2c0384, - 0x2b2246, - 0x3532c4, - 0x203c43, - 0x284745, - 0x2331c8, - 0x25e607, - 0x2b8209, - 0x284b48, - 0x297e11, - 0x32cd4a, - 0x2e2307, - 0x2e7246, - 0x2151c4, - 0x2c0488, - 0x22e448, - 0x297fca, - 0x2b708d, - 0x268686, - 0x245e06, - 0x285086, - 0x21ba47, - 0x2b1385, - 0x3912c7, - 0x247dc5, - 0x2ae704, - 0x2a6206, - 0x224047, - 0x2adb4d, - 0x26aa87, - 0x21f308, - 0x277309, - 0x20b206, - 0x28e8c5, - 0x22cb04, - 0x3600c6, - 0x3a3846, - 0x25dfc6, - 0x299348, - 0x215f83, - 0x208fc3, - 0x352105, - 0x277dc6, - 0x2abfc5, - 0x2a0c88, - 0x29c10a, - 0x282084, - 0x247e88, - 0x295f08, - 0x312647, - 0x377549, - 0x2bc6c8, - 0x286a87, - 0x2587c6, - 0x204f0a, - 0x360148, - 0x2f98c9, - 0x2a1288, - 0x221609, - 0x2e7107, - 0x2f2f05, - 0x26d886, - 0x2c1288, - 0x27e7c8, - 0x296088, - 0x2e24c8, - 0x29ccc5, - 0x208a84, - 0x20d488, - 0x23e2c4, - 0x3a2944, - 0x264305, - 0x2917c7, - 0x312249, - 0x208dc7, - 0x210cc5, - 0x274846, - 0x34f606, - 0x212444, - 0x2a05c6, - 0x24d744, - 0x278546, - 0x312006, - 0x213246, - 0x200645, - 0x2a0b47, - 0x203503, - 0x2079c9, - 0x3076c8, - 0x247d04, - 0x28690d, - 0x296ec8, - 0x2e3788, - 0x2f9846, - 0x300549, - 0x2cc849, - 0x3a3285, - 0x29c20a, - 0x27cf4a, - 0x29d74c, - 0x29d8c6, - 0x275446, - 0x2c4f86, - 0x2b4749, - 0x2b94c6, - 0x29fa86, - 0x33cd06, - 0x25dc08, - 0x274fc6, - 0x2ce80b, - 0x291945, - 0x21ba45, - 0x2756c5, - 0x352a46, - 0x204ec3, - 0x23c2c6, - 0x26aa07, - 0x2c0345, - 0x320585, - 0x379445, - 0x318446, - 0x31da84, - 0x31da86, - 0x292f49, - 0x3528cc, - 0x2ae448, - 0x239184, - 0x2f5c06, - 0x29c706, - 0x28f088, - 0x216f48, - 0x3527c9, - 0x37a687, - 0x2367c9, - 0x24cfc6, - 0x22e904, - 0x20ea44, - 0x280144, - 0x27e648, - 0x31208a, - 0x345bc6, - 0x353cc7, - 0x362c47, - 0x347d85, - 0x2a9684, - 0x28cd46, - 0x2b13c6, - 0x2336c3, - 0x307507, - 0x38d588, - 0x3a33ca, - 0x2cbb88, - 0x281f08, - 0x353305, - 0x339645, - 0x260e05, - 0x348146, - 0x3ad906, - 0x26c085, - 0x3b1889, - 0x2a948c, - 0x260ec7, - 0x298048, - 0x2e5c05, - 0x676384, - 0x320944, - 0x252c04, - 0x22df86, - 0x29eb0e, - 0x207747, - 0x21bc45, - 0x24440c, - 0x2e1107, - 0x223fc7, - 0x225109, - 0x217cc9, - 0x284c45, - 0x3076c8, - 0x215349, - 0x335c45, - 0x2c0288, - 0x2c2586, - 0x371446, - 0x2def04, - 0x2553c8, - 0x20b3c3, - 0x2af8c4, - 0x2ad985, - 0x3bab07, - 0x21c245, - 0x38bc09, - 0x28b30d, - 0x2a33c6, - 0x225fc4, - 0x2588c8, - 0x274a8a, - 0x2611c7, - 0x235d45, - 0x23b403, - 0x29dc0e, - 0x278ccc, - 0x2f5e07, - 0x29ecc7, - 0x200143, - 0x2b9505, - 0x252c05, - 0x298e88, - 0x295d49, - 0x239086, - 0x28f104, - 0x2e2246, - 0x27b5cb, - 0x2cc5cc, - 0x366d87, - 0x2d0305, - 0x3a1d48, - 0x2dac85, - 0x3b83c7, - 0x32cb87, - 0x247585, - 0x204ec3, - 0x26e584, - 0x21c685, - 0x2ac685, - 0x2ac686, - 0x292008, - 0x224047, - 0x37a286, - 0x26c486, - 0x3a2d06, - 0x268789, - 0x209387, - 0x25e286, - 0x2cc746, - 0x2731c6, - 0x2a7585, - 0x3b2b46, - 0x380145, - 0x329d88, - 0x29114b, - 0x28c346, - 0x362c84, - 0x2b4389, - 0x25da44, - 0x2c2508, - 0x30e2c7, - 0x281404, - 0x2bbd88, - 0x2c1684, - 0x2a75c4, - 0x286845, - 0x302986, - 0x26e187, - 0x203043, - 0x29d205, - 0x323284, - 0x349586, - 0x3a3308, - 0x38d2c5, - 0x290e09, - 0x222d05, - 0x2dbf88, - 0x215087, - 0x388588, - 0x2b8047, - 0x2fb609, - 0x264dc6, - 0x32bb46, - 0x28cac4, - 0x258705, - 0x2fce4c, - 0x2756c7, - 0x275fc7, - 0x362b08, - 0x2a33c6, - 0x26a944, - 0x328004, - 0x27fcc9, - 0x2c5086, - 0x298a07, - 0x208c04, - 0x23da46, - 0x33b785, - 0x2c88c7, - 0x2ce786, - 0x250e89, - 0x27cd87, - 0x262107, - 0x2a0106, - 0x23d985, - 0x27c548, - 0x21ed48, - 0x247a46, - 0x38d305, - 0x390586, - 0x2034c3, - 0x298d09, - 0x29d2ce, - 0x2b7d48, - 0x2e1348, - 0x24784b, - 0x291046, - 0x313104, - 0x2802c4, - 0x29d3ca, - 0x215907, - 0x25e345, - 0x212309, - 0x2bf685, - 0x3a2987, - 0x245c84, - 0x287087, - 0x2e40c8, - 0x2cd306, - 0x27b989, - 0x2bc7ca, - 0x215886, - 0x296a06, - 0x2aad05, - 0x37d085, - 0x282d07, - 0x244e48, - 0x33b6c8, - 0x3a4206, - 0x234745, - 0x31320e, - 0x2b3204, - 0x2479c5, - 0x2741c9, - 0x2dce48, - 0x28abc6, - 0x29af0c, - 0x29bd10, - 0x29e74f, - 0x29f7c8, - 0x300187, - 0x200645, - 0x262545, - 0x26e009, - 0x292909, - 0x241946, - 0x2442c7, - 0x2d0cc5, - 0x337b09, - 0x339386, - 0x2b930d, - 0x280009, - 0x244504, - 0x2b7ac8, - 0x20d549, - 0x345d86, - 0x274945, - 0x32bb46, - 0x317889, - 0x2f3c48, - 0x20dcc5, - 0x2553c4, - 0x29b0cb, - 0x345c45, - 0x29b206, - 0x280a06, - 0x265e46, - 0x276d4b, - 0x290f09, - 0x26c3c5, - 0x388347, - 0x32ccc6, - 0x334dc6, - 0x252988, - 0x302a89, - 0x21f0cc, - 0x305e48, - 0x309e46, - 0x322c03, - 0x2ba886, - 0x276b85, - 0x27b008, - 0x234146, - 0x2c8b08, - 0x248b45, - 0x279305, - 0x32eb08, - 0x332787, - 0x379ec7, - 0x224207, - 0x334c48, - 0x3002c8, - 0x2ad486, - 0x2b2087, - 0x23bb07, - 0x276a4a, - 0x201e03, - 0x352a46, - 0x2392c5, - 0x334f84, - 0x277309, - 0x2fb584, - 0x25e684, - 0x29c584, - 0x29eccb, - 0x20d6c7, - 0x313445, - 0x294cc8, - 0x274846, - 0x274848, - 0x27a746, - 0x28b085, - 0x28b645, - 0x28d886, - 0x28ee48, - 0x28f4c8, - 0x2774c6, - 0x294b0f, - 0x2987d0, - 0x3a6005, - 0x203503, - 0x22e9c5, - 0x30a4c8, - 0x292809, - 0x335d88, - 0x268608, - 0x2b8d48, - 0x20d787, - 0x274509, - 0x2c8d08, - 0x265304, - 0x29c408, - 0x2d9e89, - 0x2b27c7, - 0x299d44, - 0x208e88, - 0x2a090a, - 0x2e77c6, - 0x268686, - 0x226209, - 0x29bf47, - 0x2cba08, - 0x204848, - 0x2ddd88, - 0x35cc45, - 0x37e005, - 0x21ba45, - 0x252bc5, - 0x3b5987, - 0x204ec5, - 0x2c0345, - 0x313686, - 0x335cc7, - 0x2cd907, - 0x2a0c06, - 0x2d2245, - 0x29b206, - 0x27ba85, - 0x2b58c8, - 0x2f4284, - 0x2c4246, - 0x33b5c4, - 0x2b0f48, - 0x2c434a, - 0x2790cc, - 0x334685, - 0x21bb06, - 0x21f286, - 0x351fc6, - 0x309ec4, - 0x33ba45, - 0x27a587, - 0x29bfc9, - 0x2cb4c7, - 0x676384, - 0x676384, - 0x317605, - 0x37b944, - 0x29a8ca, - 0x2746c6, - 0x279e04, - 0x3b9585, - 0x37e405, - 0x2b12c4, - 0x280647, - 0x222c87, - 0x2cafc8, - 0x33de88, - 0x20dcc9, - 0x29cd88, - 0x29aa8b, - 0x2318c4, - 0x366885, - 0x27cc85, - 0x224189, - 0x302a89, - 0x2b4288, - 0x30e048, - 0x2d6604, - 0x29c745, - 0x217083, - 0x247bc5, - 0x351a46, - 0x295b8c, - 0x208b06, - 0x36c3c6, - 0x28ae45, - 0x3184c8, - 0x2b7ec6, - 0x2e73c6, - 0x268686, - 0x22920c, - 0x25e184, - 0x3a2e4a, - 0x28ad88, - 0x2959c7, - 0x323186, - 0x239147, - 0x2ec145, - 0x27eb46, - 0x34d406, - 0x35b847, - 0x25e6c4, - 0x2fe0c5, - 0x2741c4, - 0x2ae787, - 0x274408, - 0x2752ca, - 0x27d4c7, - 0x303407, - 0x300107, - 0x2dadc9, - 0x295b8a, - 0x21f083, - 0x25e5c5, - 0x213283, - 0x2e6449, - 0x33dc08, - 0x3709c7, - 0x335e89, - 0x21ee46, - 0x2b88c8, - 0x33a3c5, - 0x2db7ca, - 0x2d3549, - 0x2683c9, - 0x3b50c7, - 0x22e549, - 0x213148, - 0x35ba06, - 0x21bcc8, - 0x2160c7, - 0x2acc07, - 0x26ac87, - 0x2d0b48, - 0x2f5a86, - 0x2a06c5, - 0x27a587, - 0x296508, - 0x33b544, - 0x2dd244, - 0x28fe07, - 0x2ac387, - 0x2151ca, - 0x35b986, - 0x38c74a, - 0x2bf8c7, - 0x2b2fc7, - 0x246004, - 0x28aa44, - 0x2ce686, - 0x202d04, - 0x202d0c, - 0x3aff05, - 0x216d89, - 0x2d4f04, - 0x2b1385, + 0x2f6e09, + 0x259706, + 0x28df88, + 0x387d46, + 0x355088, + 0x2d6c8c, + 0x282886, + 0x29e64d, + 0x29eacb, + 0x352a85, + 0x377dc7, + 0x334006, + 0x31e648, + 0x36ca09, + 0x276608, + 0x2016c5, + 0x2076c7, + 0x286a88, + 0x332489, + 0x2a0986, + 0x25960a, + 0x31e3c8, + 0x27644b, + 0x2d964c, + 0x37d1c8, + 0x283e46, + 0x28c048, + 0x28a807, + 0x2e4909, + 0x2976cd, + 0x2a26c6, + 0x365308, + 0x3bcb49, + 0x2c4a48, + 0x289c88, + 0x2c798c, + 0x2c8e87, + 0x2c96c7, + 0x270f85, + 0x31a807, + 0x2c6048, + 0x2a9dc6, + 0x26020c, + 0x2f60c8, + 0x2d5708, + 0x262246, + 0x236407, + 0x36cb84, 0x274a08, - 0x279fc5, - 0x374246, - 0x223ec4, - 0x293c4a, - 0x2b00c6, - 0x29ba8a, - 0x22b447, - 0x21ac45, - 0x21b745, - 0x347dca, - 0x28efc5, - 0x26dfc6, - 0x23e2c4, - 0x2aedc6, - 0x282dc5, - 0x234206, - 0x2e604c, - 0x2cb14a, - 0x2587c4, - 0x247846, - 0x29bf47, - 0x2cf984, - 0x25dc08, - 0x393006, - 0x313089, - 0x2c7549, - 0x3164c9, - 0x26cb06, - 0x2161c6, - 0x21be07, - 0x3b17c8, - 0x215fc9, - 0x20d6c7, - 0x294e46, - 0x34de87, - 0x284f45, - 0x2b3204, - 0x21b9c7, - 0x23bcc5, - 0x286785, - 0x226987, - 0x247448, - 0x3a1cc6, - 0x29738d, - 0x29908f, - 0x29da4d, - 0x210d04, - 0x2332c6, - 0x2d3c08, - 0x33ccc5, - 0x276c08, - 0x24560a, - 0x244504, - 0x27bb46, - 0x26f3c7, - 0x286007, - 0x2a18c9, - 0x21bc85, - 0x2b12c4, - 0x2b330a, - 0x2bc289, - 0x22e647, - 0x265706, - 0x345d86, - 0x29c686, - 0x365b86, - 0x2d320f, - 0x2d3ac9, - 0x274fc6, - 0x22e346, - 0x31a809, - 0x2b2187, - 0x217443, - 0x229386, - 0x216a43, - 0x2e5788, - 0x34dcc7, - 0x29f9c9, - 0x2a8e08, - 0x37a008, - 0x203c86, - 0x208a49, - 0x242785, - 0x2b2244, - 0x2a99c7, - 0x2b47c5, - 0x210d04, - 0x313508, - 0x215bc4, - 0x2b1ec7, - 0x3545c6, - 0x357e85, - 0x2a1288, - 0x345c4b, - 0x331dc7, - 0x348046, - 0x2c4e84, - 0x319586, - 0x264305, - 0x23bcc5, - 0x27c2c9, - 0x280249, - 0x2acc44, - 0x2acc85, - 0x247885, - 0x2db646, - 0x3077c8, - 0x2bf046, - 0x38d3cb, - 0x35ab4a, - 0x2b0e85, - 0x28b6c6, - 0x396485, - 0x2cf485, - 0x2a54c7, - 0x352cc8, - 0x2367c4, - 0x25f806, - 0x28f546, - 0x213307, - 0x30a304, - 0x27ae86, - 0x237cc5, - 0x237cc9, - 0x2163c4, - 0x2a9809, - 0x2774c6, - 0x2c0c08, - 0x247885, - 0x362d45, - 0x234206, - 0x21efc9, - 0x217cc9, - 0x36c446, - 0x2dcf48, - 0x244508, - 0x396444, - 0x2b3644, - 0x2b3648, - 0x326dc8, - 0x2368c9, - 0x3519c6, - 0x268686, - 0x32224d, - 0x2e3306, - 0x306c89, - 0x315fc5, - 0x3bb046, - 0x391408, - 0x31d9c5, - 0x23bb44, - 0x264305, - 0x27fb48, - 0x29a689, - 0x274284, - 0x353146, - 0x279e8a, - 0x2f5d08, - 0x215349, - 0x38174a, - 0x335e06, - 0x299248, - 0x3b8185, - 0x2e0908, - 0x2b8145, - 0x21ed09, - 0x36a349, - 0x20d8c2, - 0x2a8385, - 0x269746, - 0x277407, - 0x3b05c5, - 0x308986, - 0x301448, - 0x2a33c6, - 0x2b6b09, - 0x2760c6, - 0x252808, - 0x2a89c5, - 0x23ebc6, - 0x33da88, - 0x27e648, - 0x2e7008, - 0x345f08, - 0x3b2b44, - 0x22a183, - 0x2b6d44, - 0x27d6c6, - 0x284f84, - 0x2e1287, - 0x2e72c9, - 0x2c45c5, - 0x204846, - 0x229386, - 0x291e4b, - 0x2b0dc6, - 0x3b8cc6, - 0x2c8488, - 0x3204c6, - 0x21aa43, - 0x3af743, - 0x2b3204, - 0x22f485, - 0x2b1807, - 0x274408, - 0x27440f, - 0x27a48b, - 0x3075c8, - 0x3531c6, - 0x3078ce, - 0x2319c3, - 0x2b1784, - 0x2b0d45, - 0x2b1146, - 0x28ce4b, - 0x291886, - 0x21b249, - 0x357e85, - 0x3899c8, - 0x20c688, - 0x217b8c, - 0x29ed06, - 0x247c06, - 0x2d7985, - 0x287b88, - 0x2790c5, - 0x343088, - 0x29b28a, - 0x29de89, - 0x676384, - 0x38a099c2, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x38d2c3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x205503, - 0x200983, - 0x20cf83, - 0x25ef44, - 0x2a84c3, - 0x235ac4, - 0x232403, - 0x2d5f04, - 0x2e9dc3, - 0x3b0887, - 0x209703, - 0x204e83, - 0x28b148, - 0x200983, - 0x2ae1cb, - 0x2ec883, - 0x264a86, - 0x20b0c2, - 0x22d54b, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x200983, - 0x26be43, - 0x204783, - 0x205702, - 0x16d208, - 0x325f45, - 0x23bd48, - 0x2df7c8, - 0x2099c2, - 0x37ab45, - 0x38c347, - 0x2007c2, - 0x240d87, - 0x20d882, - 0x248707, - 0x32c589, - 0x3b7d48, - 0x2ddc09, - 0x23e202, - 0x263647, - 0x36c1c4, - 0x38c407, - 0x35aa47, - 0x2bbbc2, - 0x209703, - 0x20e602, - 0x200c82, - 0x200442, - 0x2013c2, - 0x205ec2, - 0x209842, - 0x2a80c5, - 0x320885, - 0x99c2, - 0x32403, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x12083, - 0x1ec1, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x244183, - 0x205503, - 0x200983, - 0x219503, - 0x3b819d06, - 0x13f443, - 0x7df85, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x4a82, - 0x16d208, - 0x44e04, - 0xdb085, - 0x205702, - 0x26f544, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x2358c3, - 0x2a9305, - 0x244183, - 0x206343, - 0x205503, - 0x21c2c3, - 0x200983, - 0x214843, - 0x2387c3, - 0x25ed03, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2099c2, - 0x200983, - 0x16d208, - 0x2e9dc3, - 0x16d208, - 0x200c03, - 0x2a84c3, - 0x22fd84, - 0x232403, - 0x2e9dc3, - 0x202bc2, - 0x209703, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x202bc2, - 0x227f83, - 0x205503, - 0x200983, - 0x2e87c3, - 0x214843, - 0x205702, - 0x2099c2, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x264a85, - 0xe4886, - 0x25ef44, - 0x20b0c2, - 0x16d208, - 0x205702, - 0x1d848, - 0x1b4183, - 0x2099c2, - 0x3fc91386, - 0x1320c4, - 0xd95cb, - 0x13eec6, - 0x9807, - 0x232403, - 0x47208, - 0x2e9dc3, - 0xb9b45, - 0x13fb84, - 0x260f83, - 0x4ce87, - 0xd78c4, - 0x205503, - 0x7f1c4, - 0x200983, - 0x2ed844, - 0xd9388, - 0x125c86, - 0x82b48, - 0x6cf05, - 0x1fa49, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x204e83, - 0x200983, - 0x2ec883, - 0x20b0c2, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x24a5c3, - 0x211cc4, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2d5f04, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x264a86, - 0x232403, - 0x2e9dc3, - 0x176e43, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x9807, - 0x16d208, - 0x2e9dc3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x426a84c3, - 0x232403, - 0x205503, - 0x200983, - 0x16d208, - 0x205702, - 0x2099c2, - 0x2a84c3, - 0x2e9dc3, - 0x205503, - 0x200442, - 0x200983, - 0x316e87, - 0x33e6cb, - 0x22d703, - 0x241608, - 0x3b1547, - 0x20a7c6, - 0x2c2c45, - 0x372349, - 0x209488, - 0x360d49, - 0x38f790, - 0x360d4b, - 0x39e189, - 0x201b03, - 0x20fb89, - 0x230f06, - 0x230f0c, - 0x326008, - 0x3b4f08, - 0x34af09, - 0x2905ce, - 0x2dd9cb, - 0x2f364c, - 0x2030c3, - 0x263d0c, - 0x207089, - 0x2fee47, - 0x23234c, - 0x3a89ca, - 0x2030c4, - 0x2d084d, - 0x263bc8, - 0x20cf8d, - 0x273846, - 0x28decb, - 0x283349, - 0x3b8b87, - 0x32fd06, - 0x330f89, - 0x351b8a, - 0x30b148, - 0x2ec484, - 0x2fba07, - 0x34f707, - 0x2bab04, - 0x37b5c4, - 0x22a749, - 0x281d49, - 0x22ae48, - 0x210785, - 0x3b4005, - 0x20db86, - 0x2d0709, - 0x24588d, - 0x2f30c8, - 0x20da87, - 0x2c2cc8, - 0x2e1886, - 0x38b6c4, - 0x3523c5, - 0x202986, - 0x204b04, - 0x206f87, - 0x20b8ca, - 0x212244, - 0x2157c6, - 0x216a09, - 0x216a0f, - 0x21788d, - 0x2184c6, - 0x21d450, - 0x21d846, - 0x21df87, - 0x21e4c7, - 0x21e4cf, - 0x21f6c9, - 0x224c46, - 0x225347, - 0x225348, - 0x225809, - 0x246088, - 0x2e52c7, - 0x20cc83, - 0x372986, - 0x3ba948, - 0x29088a, - 0x213c09, - 0x2095c3, - 0x38c246, - 0x25f64a, - 0x29e587, - 0x2fec8a, - 0x313d4e, - 0x21f806, - 0x2a8587, - 0x20e006, - 0x207146, - 0x37de0b, - 0x20414a, - 0x317f0d, - 0x216287, - 0x33ce88, - 0x33ce89, - 0x33ce8f, - 0x2b838c, - 0x27b289, - 0x2e6a0e, - 0x3b098a, - 0x2ba246, - 0x2f4586, - 0x30b58c, - 0x30ce8c, - 0x30dc08, - 0x3439c7, - 0x2b8c45, - 0x351e04, - 0x33c90e, - 0x228d04, - 0x351747, - 0x26030a, - 0x362554, - 0x36dd8f, - 0x21e688, - 0x372848, - 0x35040d, - 0x35040e, - 0x376ec9, - 0x3a8ec8, - 0x3a8ecf, - 0x23204c, - 0x23204f, - 0x233007, - 0x236dca, - 0x2435cb, - 0x238508, - 0x239cc7, - 0x3690cd, - 0x250406, - 0x2d0a06, - 0x23c149, - 0x394648, - 0x242088, - 0x24208e, - 0x2b5007, - 0x243885, - 0x244bc5, - 0x2063c4, - 0x20aa86, - 0x22ad48, - 0x202203, - 0x2ca10e, - 0x369488, - 0x2a2fcb, - 0x200dc7, - 0x3a4045, - 0x22e206, - 0x2aa0c7, - 0x333d08, - 0x26cd09, - 0x292e45, - 0x284788, - 0x212c06, - 0x38ad4a, - 0x33c809, - 0x232409, - 0x23240b, - 0x38dc48, - 0x2ba9c9, - 0x210846, - 0x22eb8a, - 0x2dc80a, - 0x236fcc, - 0x3a6687, - 0x32c38a, - 0x26ea8b, - 0x26ea99, - 0x3b6a88, - 0x264b05, - 0x2c6086, - 0x211e49, - 0x390746, - 0x28550a, - 0x209686, - 0x202644, - 0x2c620d, - 0x202647, - 0x211149, - 0x246385, - 0x2464c8, - 0x246fc9, - 0x247784, - 0x248387, - 0x248388, - 0x248c87, - 0x261908, - 0x24d487, - 0x26c645, - 0x25488c, - 0x2550c9, - 0x2bc00a, - 0x3937c9, - 0x20fc89, - 0x275a0c, - 0x25774b, - 0x257ec8, - 0x259048, - 0x25c404, - 0x2810c8, - 0x283c89, - 0x3a8a87, - 0x216c46, - 0x2835c7, - 0x2dcac9, - 0x26e6cb, - 0x319407, - 0x200a07, - 0x22b587, - 0x20cf04, - 0x20cf05, - 0x29a545, - 0x341c0b, - 0x39c644, - 0x3b2988, - 0x26614a, - 0x212cc7, - 0x2f6707, - 0x28bed2, - 0x278446, - 0x22f706, - 0x33c24e, - 0x27aa06, - 0x292588, - 0x29374f, - 0x20d348, - 0x37f308, - 0x30eaca, - 0x30ead1, - 0x2a0e8e, - 0x24dd0a, - 0x24dd0c, - 0x21e307, - 0x3a90d0, - 0x200408, - 0x2a1085, - 0x2aa4ca, - 0x204b4c, - 0x29518d, - 0x2f7e46, - 0x2f7e47, - 0x2f7e4c, - 0x300e4c, - 0x3292cc, - 0x2873cb, - 0x284184, - 0x226384, - 0x346d89, - 0x3050c7, - 0x225e49, - 0x37e909, - 0x39f1c7, - 0x3a8846, - 0x3a8849, - 0x2ad1c3, - 0x21c74a, - 0x31a287, - 0x33eb8b, - 0x317d8a, - 0x248844, - 0x22ba46, - 0x27d749, + 0x28d88c, + 0x22834c, + 0x2bdcc5, + 0x2b85c7, + 0x358a86, + 0x236386, + 0x35db08, 0x202b84, - 0x3affca, - 0x348345, - 0x2bdd45, - 0x2bdd4d, - 0x2be08e, - 0x28cc05, - 0x323906, - 0x264687, - 0x3870ca, - 0x39b686, - 0x3616c4, - 0x36d747, - 0x2c3f0b, - 0x2e1947, - 0x33fa84, - 0x24bb86, - 0x24bb8d, - 0x21e1cc, - 0x2053c6, - 0x2f32ca, - 0x2e03c6, - 0x2ed0c8, - 0x377c47, - 0x23568a, - 0x23d6c6, - 0x216183, - 0x391586, - 0x3ba7c8, - 0x29ac8a, - 0x275807, - 0x275808, - 0x281684, - 0x24b687, - 0x279348, - 0x2bd748, - 0x27c0c8, - 0x38c94a, - 0x2da905, - 0x2cf0c7, - 0x24db53, - 0x31e806, - 0x266348, - 0x221a09, - 0x240c48, - 0x203d0b, - 0x2cb608, - 0x2a5f44, - 0x32ec06, - 0x30bac6, - 0x3027c9, - 0x2c3dc7, - 0x254988, - 0x28af06, - 0x226884, - 0x2cb8c5, - 0x2c55c8, - 0x2c5bca, - 0x2c5e88, - 0x2cbf86, - 0x29944a, - 0x2ac808, - 0x2cf788, - 0x2d18c8, - 0x2d1f06, - 0x2d3e06, - 0x38e18c, - 0x2d43d0, - 0x27d2c5, - 0x20d148, - 0x301950, - 0x20d150, - 0x38f60e, - 0x38de0e, - 0x38de14, - 0x32fe8f, - 0x330246, - 0x332d51, - 0x33d213, - 0x33d688, - 0x3b3445, - 0x241b48, - 0x386245, - 0x329a8c, - 0x291549, - 0x228b49, - 0x3201c7, - 0x236b89, - 0x380887, - 0x2f6146, - 0x3521c7, - 0x269c45, - 0x2120c3, - 0x2023c9, - 0x221cc9, - 0x376e43, - 0x27f384, - 0x32a20d, - 0x206bcf, - 0x2268c5, - 0x329986, - 0x211407, - 0x325d87, - 0x288786, - 0x28878b, - 0x2a2405, - 0x256786, - 0x2f6c07, - 0x24e489, - 0x3a7486, - 0x21d305, - 0x22854b, - 0x235946, - 0x249245, - 0x357988, - 0x306a88, - 0x2c8f0c, - 0x2c8f10, - 0x2d2409, - 0x2ffd07, - 0x32840b, - 0x2e3b86, - 0x2e518a, - 0x2e754b, - 0x2e794a, - 0x2e7bc6, - 0x2e8685, - 0x319fc6, - 0x36c808, - 0x32028a, - 0x35009c, - 0x2ec94c, - 0x2ecc48, - 0x264a85, - 0x34ea07, - 0x26bec6, - 0x274e05, - 0x21afc6, - 0x288948, - 0x2bc507, - 0x2904c8, - 0x2a868a, - 0x33130c, - 0x331589, - 0x38b847, - 0x2198c4, - 0x244c86, - 0x37ee8a, - 0x37ea05, - 0x209f8c, - 0x20e648, - 0x367388, - 0x21a00c, - 0x22550c, - 0x225a09, - 0x225c47, - 0x231d4c, - 0x23aa84, - 0x23c60a, - 0x35e6cc, - 0x26b28b, - 0x242b8b, - 0x2efec6, - 0x24a107, - 0x24c687, - 0x3a930f, - 0x2f8a51, - 0x2d8592, - 0x24c68d, - 0x24c68e, - 0x24c9ce, - 0x330048, - 0x330052, - 0x24fbc8, - 0x3b1187, - 0x24aeca, - 0x3681c8, - 0x27a9c5, - 0x3b57ca, - 0x21dd87, - 0x2e36c4, - 0x201543, - 0x2a57c5, - 0x30ed47, - 0x2f5007, - 0x29538e, - 0x3382cd, - 0x33af89, - 0x222705, - 0x35c3c3, - 0x3a78c6, - 0x36e745, - 0x2a3208, - 0x205b49, - 0x2983c5, - 0x3692cf, - 0x2d96c7, - 0x372285, - 0x20178a, - 0x2a36c6, - 0x2ed249, - 0x396ccc, - 0x2f51c9, - 0x3abdc6, - 0x265f4c, - 0x322d06, - 0x2f7588, - 0x2f7786, - 0x3b6c06, - 0x3b96c4, - 0x258243, - 0x2a1fca, - 0x327191, - 0x3a9c0a, - 0x27ee85, - 0x265047, - 0x252207, - 0x279444, - 0x27944b, - 0x3b7bc8, - 0x2b7bc6, - 0x362b85, - 0x38b044, - 0x255f09, - 0x31ad84, - 0x254f07, - 0x32f345, - 0x32f347, - 0x33c485, - 0x2a8183, - 0x3b1048, - 0x33b80a, - 0x203043, - 0x325f8a, - 0x203046, - 0x36904f, - 0x2b4f89, - 0x2ca090, - 0x2f1548, - 0x2ccc89, - 0x2971c7, - 0x24bb0f, - 0x336244, - 0x2d5f84, - 0x21d6c6, - 0x22f246, - 0x25708a, - 0x23cc46, - 0x2f58c7, - 0x300788, - 0x300987, - 0x301207, - 0x30370a, - 0x30534b, - 0x2f3dc5, - 0x2d81c8, - 0x21bb03, - 0x23800c, - 0x36f78f, - 0x2b8a4d, - 0x2a7147, - 0x33b0c9, - 0x22bcc7, - 0x24a2c8, - 0x36274c, - 0x2a5e48, - 0x250bc8, - 0x318ace, - 0x32d354, - 0x32d864, - 0x3475ca, - 0x36148b, - 0x380944, - 0x380949, - 0x27bbc8, - 0x245345, - 0x201d0a, - 0x3696c7, - 0x26f744, - 0x38d2c3, - 0x2a84c3, - 0x235ac4, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x244183, - 0x209703, - 0x2d43c6, - 0x211cc4, - 0x205503, - 0x200983, - 0x201303, - 0x205702, - 0x38d2c3, - 0x2099c2, - 0x2a84c3, - 0x235ac4, - 0x232403, - 0x2e9dc3, - 0x244183, - 0x2d43c6, - 0x205503, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x205503, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x211cc4, - 0x205503, - 0x200983, - 0x205702, - 0x2bb143, - 0x2099c2, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x201ec2, - 0x219f02, - 0x2099c2, - 0x2a84c3, - 0x202242, - 0x201fc2, - 0x3b1384, - 0x210444, - 0x227382, - 0x211cc4, + 0x23264b, + 0x37d80b, + 0x2fccc6, + 0x20cc47, + 0x339305, + 0x278585, + 0x232786, + 0x2637c5, + 0x385e05, + 0x2e40c7, + 0x27f609, + 0x2fc184, + 0x2feac5, + 0x2ead45, + 0x2b5448, + 0x235685, + 0x2c0b89, + 0x2b16c7, + 0x2b16cb, + 0x261ac6, + 0x3a0b49, + 0x331b48, + 0x272885, + 0x342908, + 0x223c88, + 0x249b07, + 0x383b47, + 0x2885c9, + 0x237f87, + 0x27de09, + 0x29b88c, + 0x2a6b88, + 0x331009, + 0x360987, + 0x287f89, + 0x25b487, + 0x2d9748, + 0x3bed05, + 0x22b946, + 0x2c8888, + 0x30cf08, + 0x287449, + 0x385e47, + 0x278645, + 0x21f949, + 0x345306, + 0x2440c4, + 0x2440c6, + 0x35d048, + 0x254547, + 0x236a08, + 0x375049, + 0x3b1a07, + 0x2a56c6, + 0x377e84, + 0x205949, + 0x28c4c8, + 0x262107, + 0x2b56c6, + 0x236746, + 0x2bf144, + 0x241986, + 0x202003, + 0x34f109, + 0x201d46, + 0x3752c5, + 0x2a6086, + 0x2d79c5, + 0x286f08, + 0x37cf07, + 0x261e06, + 0x234d06, + 0x3059c8, + 0x2a8587, + 0x2a2705, + 0x2a3bc8, + 0x3bb748, + 0x31e3c8, + 0x3a0f85, + 0x22b9c6, + 0x325d09, + 0x2772c4, + 0x351d8b, + 0x22c68b, + 0x364cc9, + 0x200dc3, + 0x25efc5, + 0x21d306, + 0x3ba188, + 0x2fc804, + 0x2bfac6, + 0x2d9b89, + 0x2bc9c5, + 0x2e4006, + 0x2dddc6, + 0x220144, + 0x2af4ca, + 0x375208, + 0x30cf06, + 0x2cf245, + 0x3b8247, + 0x23d187, + 0x281904, + 0x22c8c7, + 0x2b6784, + 0x333b06, + 0x20cf43, + 0x271145, + 0x334f05, + 0x3beec8, + 0x2561c5, + 0x2825c9, + 0x274847, + 0x27484b, + 0x2aa04c, + 0x2aa64a, + 0x33f5c7, + 0x202e83, + 0x202e88, + 0x3a1145, + 0x29f585, + 0x2140c4, + 0x2d9646, + 0x257d46, + 0x2419c7, + 0x34d58b, + 0x233ac4, + 0x2e7644, + 0x2cbd04, + 0x2d3706, + 0x222a44, + 0x22b7c8, + 0x34b885, + 0x24fac5, + 0x365c87, + 0x377ec9, + 0x3534c5, + 0x38dcca, + 0x248b89, + 0x2911ca, + 0x3b0e49, + 0x310444, + 0x2bd4c5, + 0x2b9888, + 0x2f150b, + 0x35d785, + 0x33be86, + 0x236304, + 0x282b06, + 0x3b1889, + 0x2ed287, + 0x320e48, + 0x2a9506, + 0x2be507, + 0x287a88, + 0x3870c6, + 0x39b804, + 0x3743c7, + 0x376945, + 0x389b87, + 0x200104, + 0x333f86, + 0x2d5f48, + 0x29ec88, + 0x2e7007, + 0x27f988, + 0x29cdc5, + 0x213e44, + 0x3812c8, + 0x27fa84, + 0x220005, + 0x2ffbc4, + 0x30a547, + 0x290c87, + 0x2880c8, + 0x2d7a06, + 0x256145, + 0x2823c8, + 0x39ca88, + 0x2a7d49, + 0x22c986, + 0x23a048, + 0x20088a, + 0x388fc8, + 0x2ec085, + 0x349286, + 0x248a48, + 0x20778a, + 0x226047, + 0x28ee45, + 0x29ad48, + 0x2c2404, + 0x272486, + 0x2c9a48, + 0x213ec6, + 0x20b308, + 0x296e87, + 0x211486, + 0x2bccc4, + 0x364707, + 0x2b8e84, + 0x3b1847, + 0x2a064d, + 0x288805, + 0x2d4dcb, + 0x2285c6, + 0x257808, + 0x24c384, + 0x357746, + 0x2848c6, + 0x28c387, + 0x29e30d, + 0x24e587, + 0x2b93c8, + 0x278705, + 0x276e08, + 0x2ccb86, + 0x29ce48, + 0x22ab46, + 0x25a707, + 0x39ae89, + 0x36ebc7, + 0x28fe48, + 0x27af45, + 0x222e08, + 0x219405, + 0x3ab545, + 0x3b10c5, + 0x23ef43, + 0x289144, + 0x26fa05, + 0x241489, + 0x3043c6, + 0x2ecf48, + 0x383905, + 0x2bb507, + 0x2ad54a, + 0x2e3f49, + 0x2d348a, + 0x2da308, + 0x22d6cc, + 0x288e4d, + 0x301bc3, + 0x20b208, + 0x209445, + 0x28a946, + 0x36cec6, + 0x2ebb05, + 0x2237c9, + 0x20e1c5, + 0x2823c8, + 0x25fe06, + 0x35e006, + 0x2a8d09, + 0x39ed87, + 0x297e86, + 0x2ad4c8, + 0x333a88, + 0x2e4f47, + 0x2381ce, + 0x2ccdc5, + 0x332385, + 0x213dc8, + 0x20a247, + 0x200842, + 0x2c7504, + 0x28f90a, + 0x2621c8, + 0x389206, + 0x2a1408, + 0x2a6186, + 0x3337c8, + 0x2b3ac8, + 0x3ab504, + 0x2bba45, + 0x681384, + 0x681384, + 0x681384, + 0x201e03, + 0x2365c6, + 0x282886, + 0x2a508c, + 0x200943, + 0x223286, + 0x20cf04, + 0x33f888, + 0x2d99c5, + 0x28fa06, + 0x2c31c8, + 0x2db2c6, + 0x261d86, + 0x357d08, + 0x2d1887, + 0x237d49, + 0x2fa8ca, + 0x20a944, + 0x27df05, + 0x29a385, + 0x2f6c06, + 0x20ac06, + 0x2a5ac6, + 0x2ff206, + 0x237e84, + 0x237e8b, + 0x23c584, + 0x2a5245, + 0x2b2ac5, + 0x378246, + 0x2090c8, + 0x288d07, + 0x320c04, + 0x232fc3, + 0x2c1f05, + 0x311847, + 0x288c0b, + 0x3bedc7, + 0x2c30c8, + 0x2e7287, + 0x23d406, + 0x27a4c8, + 0x2b004b, + 0x345746, + 0x21d449, + 0x2b01c5, + 0x315603, + 0x2e4006, + 0x296d88, + 0x21f083, + 0x271e03, + 0x287a86, + 0x2a6186, + 0x36958a, + 0x283e85, + 0x28470b, + 0x2a5fcb, + 0x210a83, + 0x20b943, + 0x2b6704, + 0x2af6c7, + 0x296e04, + 0x277344, + 0x2e73c4, + 0x223e88, + 0x2cf188, + 0x205249, + 0x39e3c8, + 0x28b487, + 0x2381c6, + 0x2ecb8f, + 0x2ccf06, + 0x2d9944, + 0x2cefca, + 0x311747, + 0x208206, + 0x297509, + 0x2051c5, + 0x3bf005, + 0x205306, + 0x222f43, + 0x2c2449, + 0x2273c6, + 0x202d09, + 0x392a46, + 0x271145, + 0x2be0c5, + 0x204183, + 0x2af808, + 0x213887, + 0x201e44, + 0x33f708, + 0x2ffe04, + 0x2f0486, + 0x296706, + 0x248fc6, + 0x2d1549, + 0x29f505, + 0x388bc6, + 0x2666c9, + 0x2cb906, + 0x223f06, + 0x397346, + 0x21ce85, + 0x2ffbc6, + 0x25a704, + 0x3bed05, + 0x2c8884, + 0x2b9f86, + 0x334104, + 0x2136c3, + 0x28e745, + 0x23dac8, + 0x262987, + 0x2c1ac9, + 0x28ed48, + 0x29fb51, + 0x2dde4a, + 0x2fcc07, + 0x25a986, + 0x20cf04, + 0x2c8988, + 0x233fc8, + 0x29fd0a, + 0x2c094d, + 0x2a7f06, + 0x357e06, + 0x3647c6, + 0x24fac7, + 0x2b9485, + 0x210187, + 0x20cdc5, + 0x2b1804, + 0x2ae086, + 0x241807, + 0x2c214d, + 0x248987, + 0x3a4cc8, + 0x2826c9, + 0x349186, + 0x2a0905, + 0x22dcc4, + 0x35d146, + 0x281806, + 0x262346, + 0x2a1c88, + 0x21cd43, + 0x20aa83, + 0x338e45, + 0x207b06, + 0x2b3a85, + 0x2a9708, + 0x2a48ca, + 0x3a2dc4, + 0x33f888, + 0x29dd08, + 0x378087, + 0x3839c9, + 0x2c2dc8, + 0x2a6d07, + 0x2957c6, + 0x213eca, + 0x35d1c8, + 0x2f8589, + 0x292c88, + 0x229b89, + 0x2e8747, + 0x33bdc5, + 0x36ad46, + 0x2a9c48, + 0x287c08, + 0x29de88, + 0x2fcdc8, + 0x2a5245, + 0x218944, + 0x213588, + 0x24b384, + 0x3b0c44, + 0x271145, + 0x299ac7, + 0x377c89, + 0x28c187, + 0x2008c5, + 0x27f206, + 0x363686, + 0x200b84, + 0x2a9046, + 0x255f84, + 0x276d06, + 0x377a46, + 0x21eec6, + 0x2016c5, + 0x2a95c7, + 0x202e83, + 0x21dd89, + 0x3057c8, + 0x2f6d04, + 0x2f6d0d, + 0x29ed88, + 0x2d7248, + 0x2f8506, + 0x39af89, + 0x2e3f49, + 0x3b1585, + 0x2a49ca, + 0x2edbca, + 0x2a5ccc, + 0x2a5e46, + 0x27fe06, + 0x2cd086, + 0x2c84c9, + 0x28ab86, + 0x2101c6, + 0x20e286, + 0x274a08, + 0x27f986, + 0x2d92cb, + 0x299c45, + 0x24fac5, + 0x280085, + 0x39be46, + 0x213e83, + 0x248f46, + 0x248907, + 0x2c8845, + 0x24d545, + 0x3410c5, + 0x313846, + 0x204dc4, + 0x385806, + 0x284049, + 0x39bccc, + 0x2b1548, + 0x23e844, + 0x2ff8c6, + 0x2286c6, + 0x296d88, + 0x220148, + 0x39bbc9, + 0x3b8247, + 0x260c89, + 0x255806, + 0x237404, + 0x214944, + 0x20a584, + 0x287a88, + 0x377aca, + 0x353446, + 0x35fb87, + 0x37e787, + 0x3a0c45, + 0x29a344, + 0x295046, + 0x2b94c6, + 0x202bc3, + 0x305607, + 0x2507c8, + 0x3b16ca, + 0x2d4708, + 0x28a688, + 0x334145, + 0x352b85, + 0x284dc5, + 0x3a1006, + 0x2393c6, + 0x25b285, + 0x34f349, + 0x29a14c, + 0x284e87, + 0x29fd88, + 0x24ee05, + 0x681384, + 0x240ac4, + 0x25d1c4, + 0x217946, + 0x2a728e, + 0x3bf087, + 0x24fcc5, + 0x27724c, + 0x2ffcc7, + 0x241787, + 0x274e89, + 0x2208c9, + 0x28ee45, + 0x3057c8, + 0x325d09, + 0x31e285, + 0x2c8788, + 0x227546, + 0x381546, + 0x2e2dc4, + 0x25ff08, + 0x248743, + 0x235e44, + 0x2c1f85, + 0x204dc7, + 0x21b4c5, + 0x200749, + 0x27e64d, + 0x2935c6, + 0x229b04, + 0x2958c8, + 0x27f44a, + 0x21da87, + 0x243905, + 0x235e83, + 0x2a618e, + 0x2af90c, + 0x2f1f87, + 0x2a7447, + 0x200143, + 0x28abc5, + 0x25d1c5, + 0x2a17c8, + 0x29db49, + 0x23e746, + 0x296e04, + 0x2fcb46, + 0x3650cb, + 0x2e3ccc, + 0x376447, + 0x2d9585, + 0x3bb648, + 0x2e4d05, + 0x2cefc7, + 0x2ddc87, + 0x248745, + 0x213e83, + 0x3b36c4, + 0x21b705, + 0x2fc085, + 0x2fc086, + 0x2821c8, + 0x241807, + 0x36d1c6, + 0x25b686, + 0x3b1006, + 0x2f88c9, + 0x28c747, + 0x262606, + 0x2e3e46, + 0x27e106, + 0x2af405, + 0x21e8c6, + 0x390e05, + 0x235708, + 0x2990cb, + 0x294b86, + 0x37e7c4, + 0x2c8109, + 0x274844, + 0x2274c8, + 0x2441c7, + 0x289b84, + 0x2c2688, + 0x2c94c4, + 0x2af444, + 0x39ac45, + 0x330a46, + 0x223dc7, + 0x20b3c3, + 0x2a5785, + 0x32a504, + 0x3323c6, + 0x3b1608, + 0x39c785, + 0x298d89, + 0x21fb45, + 0x223288, + 0x22cfc7, + 0x398048, + 0x2c1907, + 0x2fe589, + 0x271846, + 0x360486, + 0x20e284, + 0x295705, + 0x3093cc, + 0x280087, + 0x280fc7, + 0x37e648, + 0x2935c6, + 0x2794c4, + 0x34bc04, + 0x288449, + 0x2cd186, + 0x253707, + 0x2cff84, + 0x24ab06, + 0x35f245, + 0x2d7547, + 0x2d9246, + 0x2594c9, + 0x2eda07, + 0x26f5c7, + 0x2a8b86, + 0x24aa45, + 0x285988, + 0x227248, + 0x2f6a46, + 0x39c7c5, + 0x344806, + 0x202c03, + 0x2a1649, + 0x2a584e, + 0x2c1608, + 0x2fff08, + 0x2f684b, + 0x298fc6, + 0x20a884, + 0x261d84, + 0x2a594a, + 0x21e107, + 0x2626c5, + 0x21d449, + 0x2c7205, + 0x3b0c87, + 0x250584, + 0x27b907, + 0x30fdc8, + 0x2d0f06, + 0x365489, + 0x2c2eca, + 0x21e086, + 0x29e8c6, + 0x2b2a45, + 0x38ef85, + 0x325647, + 0x24ec48, + 0x35f188, + 0x3ab506, + 0x2be145, + 0x20a98e, + 0x2bb884, + 0x2a1745, + 0x27eb89, + 0x2ed608, + 0x292e86, + 0x2a36cc, + 0x2a44d0, + 0x2a6ecf, + 0x2a8308, + 0x33f5c7, + 0x2016c5, + 0x26fa05, + 0x389089, + 0x29af49, + 0x23fac6, + 0x35d807, + 0x2b8545, + 0x2b43c9, + 0x3528c6, + 0x28a9cd, + 0x288789, + 0x277344, + 0x2c1388, + 0x213649, + 0x353606, + 0x27f305, + 0x360486, + 0x320d09, + 0x281688, + 0x217e05, + 0x200984, + 0x2a388b, + 0x3534c5, + 0x2a39c6, + 0x289186, + 0x26e646, + 0x27c18b, + 0x298e89, + 0x25b5c5, + 0x397e07, + 0x2dddc6, + 0x34dec6, + 0x25cf48, + 0x330b49, + 0x3a4a8c, + 0x311648, + 0x23c586, + 0x329e83, + 0x28bf46, + 0x27bfc5, + 0x284a48, + 0x2bdb46, + 0x2d7788, + 0x251b05, + 0x283245, + 0x27a8c8, + 0x333947, + 0x36ce07, + 0x2419c7, + 0x34dd48, + 0x39ad08, + 0x31a706, + 0x2b9dc7, + 0x273f47, + 0x27be8a, + 0x20d703, + 0x39be46, + 0x23e985, + 0x28f904, + 0x2826c9, + 0x2fe504, + 0x262a04, + 0x2a4d44, + 0x2a744b, + 0x2137c7, + 0x20abc5, + 0x29cac8, + 0x27f206, + 0x27f208, + 0x283dc6, + 0x293345, + 0x293e85, + 0x295f46, + 0x296b48, + 0x297448, + 0x282886, + 0x29c90f, + 0x2a1110, + 0x208605, + 0x202e83, + 0x2374c5, + 0x315788, + 0x29ae49, + 0x31e3c8, + 0x2f8748, + 0x2bec08, + 0x213887, + 0x27eec9, + 0x2d7988, + 0x2730c4, + 0x2a4bc8, + 0x2b5509, + 0x2babc7, + 0x2a2644, + 0x28c248, + 0x2a938a, + 0x3085c6, + 0x2a7f06, + 0x22c849, + 0x2a4707, + 0x2d4588, + 0x2fdbc8, + 0x2cfe08, + 0x3690c5, + 0x38ff05, + 0x24fac5, + 0x25d185, + 0x38cb87, + 0x213e85, + 0x2c8845, + 0x20ae06, + 0x31e307, + 0x2f1447, + 0x2a9686, + 0x2da845, + 0x2a39c6, + 0x202f45, + 0x2b83c8, + 0x2f1e04, + 0x2cb986, + 0x348084, + 0x2b9048, + 0x2cba8a, + 0x28300c, + 0x34d785, + 0x24fb86, + 0x3a4c46, + 0x234b86, + 0x23c604, + 0x35f505, + 0x283c07, + 0x2a4789, + 0x2d3c07, + 0x681384, + 0x681384, + 0x320a85, + 0x38d584, + 0x2a308a, + 0x27f086, + 0x27a704, + 0x208185, + 0x3875c5, + 0x2b93c4, + 0x288dc7, + 0x21fac7, + 0x2d3708, + 0x342348, + 0x217e09, + 0x2a5308, + 0x2a324b, + 0x251044, + 0x375f45, + 0x2860c5, + 0x241949, + 0x330b49, + 0x2c8008, + 0x243f48, + 0x2df044, + 0x228705, + 0x202d43, + 0x2f6bc5, + 0x388c46, + 0x29d98c, + 0x2189c6, + 0x37cfc6, + 0x293105, + 0x3138c8, + 0x2c1786, + 0x25ab06, + 0x2a7f06, + 0x22e2cc, + 0x262504, + 0x3b114a, + 0x293048, + 0x29d7c7, + 0x32a406, + 0x23e807, + 0x2f2ec5, + 0x2b56c6, + 0x35c286, + 0x367cc7, + 0x262a44, + 0x30a645, + 0x27eb84, + 0x2b1887, + 0x27edc8, + 0x27fc8a, + 0x286907, + 0x375387, + 0x33f547, + 0x2e4e49, + 0x29d98a, + 0x2373c3, + 0x262945, + 0x20b343, + 0x2e7409, + 0x254ec8, + 0x23d2c7, + 0x31e4c9, + 0x227346, + 0x2042c8, + 0x33d785, + 0x39cb8a, + 0x2dbc89, + 0x276209, + 0x3a34c7, + 0x2340c9, + 0x21edc8, + 0x367e86, + 0x24fd48, + 0x21ce87, + 0x237f87, + 0x248b87, + 0x2d5dc8, + 0x2ff746, + 0x2a9145, + 0x283c07, + 0x29e3c8, + 0x348004, + 0x2d41c4, + 0x297d87, + 0x2b3e47, + 0x325b8a, + 0x367e06, + 0x35854a, + 0x2c7447, + 0x2bb647, + 0x358004, + 0x27dec4, + 0x2d7446, + 0x281b84, + 0x281b8c, + 0x203185, + 0x21ff89, + 0x265684, + 0x2b9485, + 0x27f3c8, + 0x22d245, + 0x204dc6, + 0x225f44, + 0x28f30a, + 0x2b25c6, + 0x2a424a, + 0x2b7887, + 0x236b45, + 0x222f45, + 0x3a0c8a, + 0x296cc5, + 0x2a7e06, + 0x24b384, + 0x2b6886, + 0x325705, + 0x2bdc06, + 0x2e700c, + 0x2d388a, + 0x2957c4, + 0x2381c6, + 0x2a4707, + 0x2d91c4, + 0x274a08, + 0x39e246, + 0x20a809, + 0x2baec9, + 0x2a6c89, + 0x351f46, + 0x21cf86, + 0x24fe87, + 0x34f288, + 0x21cd89, + 0x2137c7, + 0x29cc46, + 0x2be587, + 0x364685, + 0x2bb884, + 0x24fa47, + 0x274105, + 0x28f845, + 0x36c347, + 0x248608, + 0x3bb5c6, + 0x29f24d, + 0x2a19cf, + 0x2a5fcd, + 0x200904, + 0x23dbc6, + 0x2dc1c8, + 0x20e245, + 0x27c048, + 0x2499ca, + 0x277344, + 0x365646, + 0x33ae07, + 0x233ac7, + 0x2d1949, + 0x24fd05, + 0x2b93c4, + 0x2bb98a, + 0x2c2989, + 0x2341c7, + 0x272306, + 0x353606, + 0x228646, + 0x374486, + 0x2db94f, + 0x2dc089, + 0x27f986, + 0x233ec6, + 0x320289, + 0x2b9ec7, + 0x229403, + 0x22e446, + 0x2052c3, + 0x2eb9c8, + 0x2be3c7, + 0x2a8509, + 0x296588, + 0x36cf48, + 0x385f86, + 0x218909, + 0x398845, + 0x2b9f84, + 0x29a687, + 0x2c8545, + 0x200904, + 0x20ac88, + 0x202044, + 0x2b9c07, + 0x3749c6, + 0x2e7a85, + 0x292c88, + 0x3534cb, + 0x3778c7, + 0x3a0f06, + 0x2ccf84, + 0x348186, + 0x271145, + 0x274105, + 0x285709, + 0x2889c9, + 0x237fc4, + 0x238005, + 0x238205, + 0x39ca06, + 0x3058c8, + 0x2c6b86, + 0x25060b, + 0x36e4ca, + 0x2b8f85, + 0x293f06, + 0x3a2ac5, + 0x2e9dc5, + 0x2ad387, + 0x39c0c8, + 0x260c84, + 0x26be86, + 0x2974c6, + 0x21ef87, + 0x3155c4, + 0x2848c6, + 0x2427c5, + 0x2427c9, + 0x21b584, + 0x29a4c9, + 0x282886, + 0x2c8f48, + 0x238205, + 0x37e885, + 0x2bdc06, + 0x3a4989, + 0x2208c9, + 0x37d046, + 0x2ed708, + 0x277348, + 0x3a2a84, + 0x2bbcc4, + 0x2bbcc8, + 0x32e048, + 0x260d89, + 0x388bc6, + 0x2a7f06, + 0x3294cd, + 0x2bfac6, + 0x2d6b49, + 0x2dd5c5, + 0x205306, + 0x2102c8, + 0x326885, + 0x273f84, + 0x271145, + 0x2882c8, + 0x2a2e49, + 0x27ec44, + 0x333f86, + 0x22d10a, + 0x2f1e88, + 0x325d09, + 0x261f0a, + 0x31e446, + 0x2a1b88, + 0x2ced85, + 0x2c5ec8, + 0x2c1a05, + 0x227209, + 0x37ac49, + 0x203282, + 0x2b01c5, + 0x2782c6, + 0x2827c7, + 0x34e085, + 0x30ce06, + 0x326948, + 0x2935c6, + 0x2b9749, + 0x2810c6, + 0x25cdc8, + 0x2b0805, + 0x264906, + 0x25a808, + 0x287a88, + 0x2e8648, + 0x353788, + 0x21e8c4, + 0x281943, + 0x2b9984, + 0x286b06, + 0x3646c4, + 0x2ffe47, + 0x25aa09, + 0x2cbd05, + 0x2fdbc6, + 0x22e446, + 0x28200b, + 0x2b8ec6, + 0x2cf8c6, + 0x2d13c8, + 0x24d486, + 0x236943, + 0x2164c3, + 0x2bb884, + 0x239f45, + 0x387b87, + 0x27edc8, + 0x27edcf, + 0x283b0b, + 0x3056c8, + 0x334006, + 0x3059ce, + 0x251143, + 0x387b04, + 0x2b8e45, + 0x2b9246, + 0x29514b, + 0x299b86, + 0x222a49, + 0x2e7a85, + 0x3999c8, + 0x216688, + 0x22078c, + 0x2a7486, + 0x2f6c06, + 0x2dac05, + 0x28fc08, + 0x25a805, + 0x356288, + 0x2a3a4a, + 0x2a6409, + 0x681384, + 0x3b60f882, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x39c783, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x208e83, + 0x201a03, + 0x213083, + 0x286644, + 0x238543, + 0x240244, + 0x23cac3, + 0x2de944, + 0x323043, + 0x34e347, + 0x28cac3, + 0x200e03, + 0x293408, + 0x201a03, + 0x29630b, + 0x2f3743, + 0x3a03c6, + 0x205082, + 0x22facb, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x201a03, + 0x220b83, + 0x201503, + 0x207102, + 0x16fb88, + 0x32d1c5, + 0x274188, + 0x2f9f88, + 0x20f882, + 0x20a605, + 0x3785c7, + 0x201842, + 0x24c5c7, + 0x207b02, + 0x2f6607, + 0x2cc409, + 0x2ce948, + 0x2cfc89, + 0x24b2c2, + 0x2707c7, + 0x37cdc4, + 0x378687, + 0x36e3c7, + 0x264d42, + 0x28cac3, + 0x214642, + 0x204d42, 0x200442, - 0x200983, - 0x201303, - 0x2efec6, - 0x212982, - 0x202dc2, - 0x222f02, - 0x44e0d343, - 0x4521e303, - 0x52d46, - 0x52d46, - 0x25ef44, - 0x204e83, - 0x142abca, - 0x12778c, - 0x102cc, - 0x7dd8d, - 0x129845, - 0x21347, - 0x18648, - 0x1b887, - 0x20348, - 0x19d4ca, - 0x45ed6a45, - 0x12b809, - 0xaf848, - 0x4a70a, - 0x8a64e, - 0x1440a4b, - 0x1320c4, - 0x77848, - 0x68bc8, - 0x38f47, - 0x12807, - 0x4efc9, - 0x2c07, - 0xd4ac8, - 0x1318c9, - 0x3adc5, - 0x124d4e, - 0xa8a0d, - 0x9688, - 0x4622a586, - 0x46c2a588, - 0x70cc8, - 0x117090, - 0x5f347, - 0x601c7, - 0x64547, - 0x69447, - 0xdb42, - 0x190bc7, - 0x430c, - 0x35fc7, - 0xa4246, - 0xa4909, - 0xa6388, - 0x17f42, - 0x1fc2, - 0xb8fcb, - 0x7f247, - 0x11809, - 0xbb9c9, - 0x17e248, - 0xafd42, - 0x113a49, - 0xcdf8a, - 0xc9e09, - 0xd6fc9, - 0xd7ac8, - 0xd8a47, - 0xda889, - 0xde345, - 0xde6d0, - 0x175b86, - 0x192345, - 0x5e98d, - 0xf986, - 0xe9187, - 0xed858, - 0x1b1a48, - 0xb4c8a, - 0x1c42, - 0x52f4d, - 0x27c2, + 0x21cc82, + 0x206b42, + 0x20d2c2, + 0x2aff05, + 0x240a05, + 0xf882, + 0x3cac3, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x1a3443, + 0x201a03, + 0x170c3, + 0x8c1, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x255783, + 0x208e83, + 0x1a3443, + 0x201a03, + 0x221f43, + 0x3e4f5906, + 0x42bc3, + 0x873c5, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x84c2, + 0x16fb88, + 0xe03, + 0x1a3443, + 0x4ec04, + 0xe5105, + 0x207102, + 0x39cdc4, + 0x238543, + 0x23cac3, + 0x323043, + 0x38acc3, + 0x2b13c5, + 0x255783, + 0x211a83, + 0x208e83, + 0x21b543, + 0x201a03, + 0x215443, + 0x20e383, + 0x202443, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x20f882, + 0x201a03, + 0x16fb88, + 0x323043, + 0x1a3443, + 0x16fb88, + 0x1a3443, + 0x2bcc43, + 0x238543, + 0x23a844, + 0x23cac3, + 0x323043, + 0x205e82, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x205e82, + 0x229443, + 0x208e83, + 0x201a03, + 0x2ef783, + 0x215443, + 0x207102, + 0x20f882, + 0x323043, + 0x208e83, + 0x201a03, + 0x3a03c5, + 0xa4f06, + 0x286644, + 0x205082, + 0x16fb88, + 0x207102, + 0x25088, + 0x134943, + 0x20f882, + 0x42899306, + 0x6a04, + 0xb610b, + 0x44e86, + 0x8cbc7, + 0x23cac3, + 0x51648, + 0x323043, + 0x8b205, + 0x1493c4, + 0x227583, + 0x556c7, + 0xe06c4, + 0x208e83, + 0x1a3284, + 0x1a3443, + 0x201a03, + 0x2f4544, + 0xb5ec8, + 0x12cf06, + 0x16308, + 0x1252c5, + 0x9fc9, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x200e03, + 0x201a03, + 0x2f3743, + 0x205082, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x231603, + 0x21bf84, + 0x208e83, + 0xe03, + 0x201a03, + 0x238543, + 0x23cac3, + 0x2de944, + 0x323043, + 0x208e83, + 0x201a03, + 0x3a03c6, + 0x23cac3, + 0x323043, + 0x18a783, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x8cbc7, + 0x16fb88, + 0x323043, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x45238543, + 0x23cac3, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x207102, + 0x20f882, + 0x238543, + 0x323043, + 0x208e83, + 0x200442, + 0x201a03, + 0x31f1c7, + 0x342b8b, + 0x22fc83, + 0x244708, + 0x34f007, + 0x348746, + 0x382d45, + 0x232309, + 0x28c848, + 0x346789, + 0x346790, + 0x36f64b, + 0x2e2109, + 0x205dc3, + 0x20af09, + 0x23bd86, + 0x23bd8c, + 0x32d288, + 0x3bc208, + 0x244a49, + 0x29854e, + 0x2cc1cb, + 0x2e5c0c, + 0x203ec3, + 0x26ad0c, + 0x203ec9, + 0x30ae47, + 0x23ca0c, + 0x2b478a, + 0x252044, + 0x2768cd, + 0x26abc8, + 0x21308d, + 0x26fec6, + 0x28664b, + 0x200cc9, + 0x2cf787, + 0x332c86, + 0x3372c9, + 0x34834a, + 0x319108, + 0x2f3204, + 0x2fe987, + 0x363787, + 0x2d0184, + 0x38d204, + 0x2345c9, + 0x28a4c9, + 0x2b7288, + 0x216d05, + 0x339645, + 0x213c86, + 0x276789, + 0x249c4d, + 0x33bf88, + 0x213b87, + 0x382dc8, + 0x2fa686, + 0x39b444, + 0x2501c5, + 0x201c46, + 0x202884, + 0x203dc7, + 0x206f4a, + 0x219784, + 0x21dfc6, + 0x21ea49, + 0x21ea4f, + 0x21fc8d, + 0x220f06, + 0x224c90, + 0x225086, + 0x2257c7, + 0x2269c7, + 0x2269cf, + 0x2276c9, + 0x22cb06, + 0x22da47, + 0x22da48, + 0x22f289, + 0x358088, + 0x2eb507, + 0x212843, + 0x394f46, + 0x3c0b48, + 0x29880a, + 0x236089, + 0x205d83, + 0x3784c6, + 0x26bcca, + 0x28eb87, + 0x30ac8a, + 0x25a18e, + 0x227806, + 0x2b03c7, + 0x217bc6, + 0x203f86, + 0x38fd0b, + 0x31708a, + 0x32138d, + 0x21d047, + 0x20e408, + 0x20e409, + 0x20e40f, + 0x2c1c4c, + 0x2b4089, + 0x2d890e, + 0x34e44a, + 0x28b906, + 0x314a86, + 0x319d8c, + 0x31be8c, + 0x327508, + 0x36eac7, + 0x274d85, + 0x3485c4, + 0x20f88e, + 0x299684, + 0x388947, + 0x39140a, + 0x38a814, + 0x39390f, + 0x226b88, + 0x394e08, + 0x35eccd, + 0x35ecce, + 0x3a0849, + 0x238788, + 0x23878f, + 0x23c70c, + 0x23c70f, + 0x23d907, + 0x240c0a, + 0x2459cb, + 0x243788, + 0x245c87, + 0x3ac74d, + 0x322b46, + 0x276a86, + 0x248dc9, + 0x364b08, + 0x24cf48, + 0x24cf4e, + 0x2f4087, + 0x24e145, + 0x24e9c5, + 0x204b44, + 0x348a06, + 0x2b7188, + 0x20db03, + 0x2f948e, + 0x3acb08, + 0x2b588b, + 0x378bc7, + 0x3ab345, + 0x233d86, + 0x2b1f87, + 0x32f2c8, + 0x325449, + 0x322dc5, + 0x28e788, + 0x21c946, + 0x3afeca, + 0x20f789, + 0x23cac9, + 0x23cacb, + 0x346448, + 0x2d0049, + 0x216dc6, + 0x23768a, + 0x293c0a, + 0x240e0c, + 0x28e4c7, + 0x2ce74a, + 0x36b38b, + 0x36b399, + 0x312408, + 0x3a0445, + 0x2cdd46, + 0x25c489, + 0x3449c6, + 0x2df8ca, + 0x28ca46, + 0x20df44, + 0x2cdecd, + 0x20df47, + 0x218209, + 0x250ac5, + 0x250c08, + 0x251409, + 0x251844, + 0x251f47, + 0x251f48, + 0x2526c7, + 0x26e2c8, + 0x255cc7, + 0x25b845, + 0x25f3cc, + 0x25fc09, + 0x2c8c0a, + 0x39ec09, + 0x20b009, + 0x37ee4c, + 0x264f0b, + 0x2662c8, + 0x267448, + 0x26a804, + 0x289848, + 0x28d209, + 0x2b4847, + 0x20e646, + 0x200f47, + 0x2c4289, + 0x32264b, + 0x325147, + 0x201a87, + 0x2b79c7, + 0x213004, + 0x213005, + 0x2a7c05, + 0x34b1cb, + 0x3a9384, + 0x350448, + 0x26e94a, + 0x21ca07, + 0x300687, + 0x294712, + 0x276c06, + 0x23a1c6, + 0x33888e, + 0x27ab46, + 0x29abc8, + 0x29b38f, + 0x213448, + 0x302848, + 0x3bd10a, + 0x3bd111, + 0x2a990e, + 0x25654a, + 0x25654c, + 0x20bf07, + 0x238990, + 0x200408, + 0x2a9b05, + 0x2b238a, + 0x2028cc, + 0x29cf8d, + 0x302346, + 0x302347, + 0x30234c, + 0x30c80c, + 0x335d4c, + 0x2edfcb, + 0x28e0c4, + 0x22c9c4, + 0x354609, + 0x39e807, + 0x229989, + 0x293a49, + 0x3b6587, + 0x2b4606, + 0x2b4609, + 0x2b4a03, + 0x21b7ca, + 0x31fd07, + 0x34304b, + 0x32120a, + 0x2f6744, + 0x35f646, + 0x286b89, + 0x281a04, + 0x20324a, + 0x3a1205, + 0x2c4d45, + 0x2c4d4d, + 0x2c508e, + 0x2b9ac5, + 0x32ab86, + 0x39ffc7, + 0x25f64a, + 0x3a8286, + 0x2eefc4, + 0x2f9847, + 0x3bc50b, + 0x2fa747, + 0x30b444, + 0x256fc6, + 0x256fcd, + 0x2c3f4c, + 0x208d46, + 0x33c18a, + 0x230206, + 0x22ddc8, + 0x285107, + 0x34c98a, + 0x3840c6, + 0x210443, + 0x210446, + 0x3c09c8, + 0x2a344a, + 0x2801c7, + 0x2801c8, + 0x289e04, + 0x256ac7, + 0x283288, + 0x345388, + 0x284508, + 0x35874a, + 0x2e4505, + 0x2e9a07, + 0x256393, + 0x343d86, + 0x2e0908, + 0x229f89, + 0x24c488, + 0x38600b, + 0x2d3d48, + 0x2bc644, + 0x27a9c6, + 0x317ec6, + 0x330889, + 0x3bc3c7, + 0x25f4c8, + 0x2931c6, + 0x36c244, + 0x30aa05, + 0x2d4008, + 0x2cd88a, + 0x2cdb48, + 0x2d4b06, + 0x2a1d8a, + 0x2fc208, + 0x2d8fc8, + 0x2d9ec8, + 0x2da506, + 0x2dc3c6, + 0x20c0cc, + 0x2dc990, + 0x285505, + 0x213248, + 0x30d410, + 0x213250, + 0x34660e, + 0x20bd4e, + 0x20bd54, + 0x20e78f, + 0x20eb46, + 0x3072d1, + 0x332e13, + 0x333288, + 0x31d245, + 0x2a0bc8, + 0x395705, + 0x23540c, + 0x2309c9, + 0x2994c9, + 0x230e47, + 0x263549, + 0x261047, + 0x2ffa46, + 0x24ffc7, + 0x20ef05, + 0x217103, + 0x20dcc9, + 0x22a249, + 0x38a783, + 0x3b35c4, + 0x358c8d, + 0x3b83cf, + 0x36c285, + 0x331786, + 0x21ac47, + 0x32d007, + 0x290806, + 0x29080b, + 0x2aa805, + 0x263c06, + 0x300b87, + 0x257449, + 0x345a06, + 0x20cb45, + 0x2248cb, + 0x230786, + 0x38ad45, + 0x273988, + 0x2a6988, + 0x2ba50c, + 0x2ba510, + 0x2b64c9, + 0x2c5607, + 0x2e520b, + 0x30be86, + 0x2eb3ca, + 0x2ec90b, + 0x2ee70a, + 0x2ee986, + 0x2ef645, + 0x31fa46, + 0x37d408, + 0x230f0a, + 0x35e95c, + 0x2f380c, + 0x2f3b08, + 0x3a03c5, + 0x35cec7, + 0x25b0c6, + 0x27f7c5, + 0x2227c6, + 0x2909c8, + 0x2c2c07, + 0x298448, + 0x2b04ca, + 0x33764c, + 0x3378c9, + 0x39b5c7, + 0x215c04, + 0x24ea86, + 0x2d518a, + 0x293b45, + 0x211ecc, + 0x212e48, + 0x389c88, + 0x21904c, + 0x2266cc, + 0x229549, + 0x229787, + 0x23ff4c, + 0x2454c4, + 0x24718a, + 0x23354c, + 0x279a4b, + 0x24bfcb, + 0x3821c6, + 0x2f7447, + 0x20e947, + 0x238bcf, + 0x303191, + 0x2e16d2, + 0x314ecd, + 0x314ece, + 0x31520e, + 0x20e948, + 0x20e952, + 0x253e08, + 0x34ec47, + 0x25430a, + 0x208b08, + 0x27ab05, + 0x38c9ca, + 0x2255c7, + 0x2e6f44, + 0x227103, + 0x297185, + 0x3bd387, + 0x2fb547, + 0x29d18e, + 0x308c8d, + 0x30d7c9, + 0x21f545, + 0x31c443, + 0x326446, + 0x264085, + 0x27dc48, + 0x2c0649, + 0x2a0105, + 0x3ac94f, + 0x2b6207, + 0x382bc5, + 0x37958a, + 0x358946, + 0x2522c9, + 0x37db4c, + 0x2fec09, + 0x2094c6, + 0x26e74c, + 0x329f86, + 0x3017c8, + 0x301c86, + 0x312586, + 0x2082c4, + 0x266643, + 0x2b380a, + 0x32e411, + 0x30650a, + 0x265345, + 0x271ac7, + 0x25c7c7, + 0x283384, + 0x28338b, + 0x2cfb08, + 0x2c1486, + 0x37e6c5, + 0x3b01c4, + 0x280ac9, + 0x320804, + 0x24cd87, + 0x359f05, + 0x359f07, + 0x338ac5, + 0x2affc3, + 0x34eb08, + 0x35f2ca, + 0x20b3c3, + 0x32d20a, + 0x281ec6, + 0x3ac6cf, + 0x2f4009, + 0x2f9410, + 0x2ebe48, + 0x2d5809, + 0x29f087, + 0x256f4f, + 0x31e884, + 0x2de9c4, + 0x224f06, + 0x317b06, + 0x2e2aca, + 0x381c46, + 0x2ff587, + 0x30c148, + 0x30c347, + 0x30cbc7, + 0x30f08a, + 0x310b4b, + 0x3b1b45, + 0x2e1308, + 0x204443, + 0x2045cc, + 0x38000f, + 0x274b8d, + 0x2aefc7, + 0x30d909, + 0x2e8207, + 0x24f2c8, + 0x38aa0c, + 0x2bc548, + 0x231848, + 0x321d0e, + 0x336054, + 0x336564, + 0x354e4a, + 0x37018b, + 0x261104, + 0x261109, + 0x3656c8, + 0x24ef85, + 0x20d60a, + 0x3acd47, + 0x31f944, + 0x39c783, + 0x238543, + 0x240244, + 0x23cac3, + 0x323043, + 0x231604, + 0x255783, + 0x28cac3, + 0x20c0c6, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x221483, + 0x207102, + 0x39c783, + 0x20f882, + 0x238543, + 0x240244, + 0x23cac3, + 0x323043, + 0x255783, + 0x20c0c6, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x21b583, + 0x208e83, + 0x1a3443, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x207102, + 0x242043, + 0x20f882, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x201382, + 0x235f42, + 0x20f882, + 0x238543, + 0x206902, + 0x200942, + 0x231604, + 0x20f644, + 0x22a482, + 0x21bf84, + 0x200442, + 0x201a03, + 0x221483, + 0x3821c6, + 0x21a902, + 0x202642, + 0x20c4c2, + 0x47a13443, + 0x47e0bf03, 0x5d306, - 0x8d108, - 0x86ec8, - 0x16d0c9, - 0x55b08, - 0x5fb4e, - 0x1a78c7, - 0x19d0d, - 0xf2d05, - 0x190948, - 0x194448, - 0xfacc6, + 0x5d306, + 0x286644, + 0x200e03, + 0x14b700a, + 0x12ea0c, + 0xf4cc, + 0x871cd, + 0x131645, + 0x26547, + 0x1b1c6, + 0x21088, + 0x23087, + 0x28b08, + 0x1aa20a, + 0x1397c7, + 0x48adf485, + 0x1359c9, + 0x3e34b, + 0x35dcb, + 0x42e48, + 0x172f4a, + 0x9288e, + 0x144c28b, + 0x6a04, + 0x63d46, + 0x7588, + 0xf8d08, + 0x3e607, + 0x1a787, + 0x57f89, + 0x81a87, + 0xdd088, + 0x12f5c9, + 0x49804, + 0x49f45, + 0x12bfce, + 0xb084d, + 0x8ca48, + 0x48e34406, + 0x49834408, + 0x7b548, + 0x11f3d0, + 0x5998c, + 0x6b9c7, + 0x6c647, + 0x71387, + 0x77fc7, + 0x13c42, + 0x144ec7, + 0x11724c, + 0x43b87, + 0xac206, + 0xac7c9, + 0xae208, + 0x206c2, + 0x942, + 0xbee8b, + 0x1a3307, + 0x18009, + 0x164ec9, + 0x3ef48, + 0xb8042, + 0x134649, + 0xcc60a, + 0xd2689, + 0xdfdc9, + 0xe0b08, + 0xe1b87, + 0xe4489, + 0xe61c5, + 0xe67d0, + 0x191646, + 0x11205, + 0x31e8d, + 0x235c6, + 0xefd07, + 0xf4558, + 0x14f508, + 0xc74a, + 0xb282, + 0x5524d, + 0xa02, + 0x86286, + 0x95408, + 0x8f148, + 0x16fa49, + 0x586c8, + 0x6420e, + 0x126447, + 0x1051cd, + 0xfb445, + 0x144c48, + 0x19fc08, + 0x106046, 0xc2, - 0x125c86, - 0x7b02, + 0x12cf06, + 0x4542, 0x341, - 0x57a07, - 0xc8e83, - 0x466ee0c4, - 0x46a94443, + 0x65a07, + 0xf6fc3, + 0x492f4dc4, + 0x4969c243, 0x141, - 0x10986, + 0x19d06, 0x141, 0x1, - 0x10986, - 0xc8e83, - 0x1596bc5, - 0x2030c4, - 0x2a84c3, - 0x249944, - 0x3b1384, - 0x205503, - 0x2218c5, - 0x219503, - 0x23e743, - 0x373605, - 0x25ed03, - 0x47ea84c3, - 0x232403, - 0x2e9dc3, + 0x19d06, + 0xf6fc3, + 0x1402285, + 0x252044, + 0x238543, + 0x253384, + 0x231604, + 0x208e83, + 0x229e45, + 0x221f43, + 0x20c843, + 0x355685, + 0x202443, + 0x4aa38543, + 0x23cac3, + 0x323043, 0x200041, - 0x209703, - 0x210444, - 0x211cc4, - 0x205503, - 0x200983, - 0x214843, - 0x16d208, - 0x205702, - 0x38d2c3, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x201fc2, - 0x3b1384, - 0x244183, - 0x209703, - 0x205503, - 0x204e83, - 0x200983, - 0x25ed03, - 0x16d208, - 0x36f502, - 0x99c2, - 0x1456108, - 0x100b4e, - 0x48e016c2, - 0x31a448, - 0x234386, - 0x209cc6, - 0x233d07, - 0x4920c202, - 0x49768ec8, - 0x20884a, - 0x25cc88, - 0x200242, - 0x31a0c9, - 0x2f3e07, - 0x216bc6, - 0x3b0d89, - 0x2cf204, - 0x20a6c6, - 0x2dbcc4, - 0x26ffc4, - 0x2544c9, - 0x326686, - 0x320945, - 0x22c445, - 0x384e07, - 0x2bfb47, - 0x28fa44, - 0x233f46, - 0x2fb005, - 0x2fde45, - 0x3963c5, - 0x3b3dc7, - 0x200c05, - 0x314b49, - 0x312945, - 0x333e44, - 0x39b5c7, - 0x31974e, - 0x32e5c9, - 0x33c109, - 0x3a64c6, - 0x23d408, - 0x26d98b, - 0x2aeecc, - 0x37f806, - 0x2dd887, - 0x20a305, - 0x37b5ca, - 0x22af49, - 0x20bf49, - 0x24ff86, - 0x2f69c5, - 0x27ce45, - 0x3490c9, - 0x39654b, - 0x273346, - 0x33a786, - 0x202504, - 0x28bb86, - 0x243908, - 0x3ba646, - 0x214386, - 0x207c08, - 0x20bb47, - 0x20bd09, - 0x20c585, - 0x16d208, - 0x212784, - 0x3ada04, - 0x283785, - 0x399a49, - 0x220f07, - 0x220f0b, - 0x22394a, - 0x227a45, - 0x49a08d42, - 0x33ea47, - 0x49e28908, - 0x2afb87, - 0x350e85, - 0x20c1ca, - 0x99c2, - 0x34dfcb, - 0x24d5ca, - 0x221bc6, - 0x282bc3, - 0x28e34d, - 0x3492cc, - 0x35084d, - 0x245c45, - 0x32ae05, - 0x202247, - 0x3aba49, - 0x208746, - 0x23cac5, - 0x2d29c8, - 0x28ba83, - 0x2dfac8, - 0x28ba88, - 0x2c3747, - 0x309708, - 0x3a7209, - 0x2cc447, - 0x33e247, - 0x396a48, - 0x251f44, - 0x251f47, - 0x273748, - 0x3a3ac6, - 0x205f4f, - 0x211a07, - 0x2e5446, - 0x225d85, - 0x223083, - 0x371847, - 0x36c043, - 0x248e46, - 0x24aa86, - 0x24b286, - 0x290c05, - 0x261903, - 0x388208, - 0x36f009, - 0x38224b, - 0x24b408, - 0x24d145, - 0x24f605, - 0x4a248902, - 0x352289, - 0x3b1407, - 0x256805, - 0x2543c7, - 0x2559c6, - 0x365a45, - 0x36e58b, - 0x257ec4, - 0x25c845, - 0x25c987, - 0x272cc6, - 0x273105, - 0x2812c7, - 0x281a07, - 0x2cd884, - 0x289c0a, - 0x28a0c8, - 0x3b8209, - 0x241e85, - 0x207886, - 0x243aca, - 0x22c346, - 0x261e07, - 0x3b7ecd, - 0x29c809, - 0x38d185, - 0x314187, - 0x332288, - 0x33d848, - 0x3b3107, - 0x379d86, - 0x215dc7, - 0x249f43, - 0x341c04, - 0x363485, - 0x392707, - 0x395dc9, - 0x22be48, - 0x344c45, - 0x23cd84, - 0x246245, - 0x24b80d, - 0x200f82, - 0x373746, - 0x25d246, - 0x2c578a, - 0x376546, - 0x37edc5, - 0x33df85, - 0x33df87, - 0x38ab8c, - 0x270b4a, - 0x28b846, - 0x2b9645, - 0x28b9c6, - 0x28bd07, - 0x28e186, - 0x290b0c, - 0x3b0ec9, - 0x4a610e07, - 0x293b05, - 0x293b06, - 0x293ec8, - 0x23b705, - 0x2a2c85, - 0x2a3848, - 0x2a3a4a, - 0x4aa4ecc2, - 0x4ae0ee02, - 0x2e6705, - 0x284f83, - 0x3adf08, - 0x204043, - 0x2a3cc4, - 0x2ed38b, - 0x26dd48, - 0x2e4d48, - 0x4b349909, - 0x2a7dc9, - 0x2a8906, - 0x2a9d48, - 0x2a9f49, - 0x2aab46, - 0x2aacc5, - 0x3843c6, - 0x2ab5c9, - 0x331f47, - 0x23ea86, - 0x233747, - 0x2085c7, - 0x32c8c4, - 0x4b7b1d49, - 0x2cab88, - 0x368dc8, - 0x383447, - 0x2c5246, - 0x226ac9, - 0x209c87, - 0x32e90a, - 0x38c588, - 0x3af5c7, - 0x3b9786, - 0x24f38a, - 0x262708, - 0x2dccc5, - 0x226645, - 0x2ee487, - 0x2f7349, - 0x36510b, - 0x315008, - 0x3129c9, - 0x24bfc7, - 0x2b550c, - 0x2b5c4c, - 0x2b5f4a, - 0x2b61cc, - 0x2c2708, - 0x2c2908, - 0x2c2b04, - 0x2c2ec9, - 0x2c3109, - 0x2c334a, - 0x2c35c9, - 0x2c3907, - 0x3af00c, - 0x241146, - 0x34acc8, - 0x22c406, - 0x32e7c6, - 0x38d087, - 0x3b3288, - 0x39034b, - 0x2afa47, - 0x352489, - 0x3445c9, - 0x249ac7, - 0x278a04, - 0x265187, - 0x2db346, - 0x214a06, - 0x2f3485, - 0x2a5888, - 0x291444, - 0x291446, - 0x270a0b, - 0x21ca49, - 0x214b46, - 0x21c489, - 0x3b3f46, - 0x254688, - 0x223b83, - 0x2f6b45, - 0x22edc9, - 0x261145, - 0x2f9684, - 0x272206, - 0x231545, - 0x228f86, - 0x3056c7, - 0x26e986, - 0x3a304b, - 0x22ea87, - 0x3379c6, - 0x346f06, - 0x384ec6, - 0x28fa09, - 0x2ef14a, - 0x2b3505, - 0x2170cd, - 0x2a3b46, - 0x235546, - 0x2b4e86, - 0x2ed045, - 0x2de9c7, - 0x2e14c7, - 0x3581ce, - 0x209703, - 0x2c5209, - 0x391dc9, - 0x37b9c7, - 0x358f07, - 0x29d645, - 0x27ec45, - 0x4ba2a88f, - 0x2ccec7, - 0x2cd088, - 0x2cd484, - 0x2cde46, - 0x4be44c42, - 0x2d2186, - 0x2d43c6, - 0x391f8e, - 0x2df90a, - 0x357b06, - 0x285eca, - 0x203549, - 0x324105, - 0x398008, - 0x3b5606, - 0x38cec8, - 0x26f088, - 0x28eb8b, - 0x233e05, - 0x200c88, - 0x207d4c, - 0x2bd507, - 0x24ae06, - 0x2e28c8, - 0x20a948, - 0x4c208442, - 0x20a48b, - 0x282549, - 0x329f09, - 0x3bb287, - 0x20f7c8, - 0x4c61bf48, - 0x3511cb, - 0x37e0c9, - 0x234fcd, - 0x2750c8, - 0x224a48, - 0x4ca03ec2, - 0x20e3c4, - 0x4ce1a2c2, - 0x2f4ec6, - 0x4d2004c2, - 0x3813ca, - 0x21c346, - 0x285908, - 0x284488, - 0x2af446, - 0x22d8c6, - 0x2f12c6, - 0x2a3185, - 0x238c04, - 0x4d61e144, - 0x205146, - 0x272707, - 0x4dae8bc7, - 0x35490b, - 0x319b09, - 0x32ae4a, - 0x391804, - 0x33e0c8, - 0x23e84d, - 0x2eb709, - 0x2eb948, - 0x2ebfc9, - 0x2ed844, - 0x243484, - 0x27c885, - 0x317b4b, - 0x26dcc6, - 0x3424c5, - 0x250149, - 0x234008, - 0x2047c4, - 0x37b749, - 0x208105, - 0x2bfb88, - 0x33e907, - 0x33c508, - 0x27d946, - 0x35e387, - 0x292349, - 0x2286c9, - 0x2492c5, - 0x334ec5, - 0x4de2d902, - 0x333c04, - 0x2049c5, - 0x32c146, - 0x318385, - 0x2b1ac7, - 0x205245, - 0x272d04, - 0x3a6586, - 0x23cb47, - 0x232986, - 0x2dca05, - 0x203188, - 0x234585, - 0x2062c7, - 0x20f1c9, - 0x21cb8a, - 0x2e1b87, - 0x2e1b8c, - 0x320906, - 0x343cc9, - 0x23b385, - 0x23b648, - 0x210803, - 0x210805, - 0x2e8a05, - 0x261607, - 0x4e20c002, - 0x22d0c7, - 0x2e4f06, - 0x342786, - 0x2e7d06, - 0x20a886, - 0x208388, - 0x241c85, - 0x2e5507, - 0x2e550d, - 0x201543, - 0x21ec05, - 0x201547, - 0x22d408, - 0x201105, - 0x218c88, - 0x36c0c6, - 0x32b9c7, - 0x2c4785, - 0x233e86, - 0x26f5c5, - 0x21390a, - 0x2f2e06, - 0x377ac7, - 0x2ca505, - 0x3612c7, - 0x36d6c4, - 0x2f9606, - 0x2fb3c5, - 0x32648b, - 0x2db1c9, - 0x2bb24a, - 0x249348, - 0x301d08, - 0x304a4c, - 0x306287, - 0x3073c8, - 0x310a48, - 0x31e945, - 0x34020a, - 0x35c3c9, - 0x4e600802, - 0x200806, - 0x219d04, - 0x2ea849, - 0x220b49, - 0x269287, - 0x294947, - 0x37e789, - 0x38cb48, - 0x38cb4f, - 0x315d06, - 0x2d670b, - 0x36e8c5, - 0x36e8c7, - 0x385889, - 0x212ac6, - 0x37b6c7, - 0x2d8905, - 0x2303c4, - 0x261006, - 0x211ac4, - 0x2ce4c7, - 0x307048, - 0x4eaf68c8, - 0x2f7085, - 0x2f71c7, - 0x236549, - 0x23e284, - 0x23e288, - 0x4ee2b888, - 0x279444, - 0x231388, - 0x32fdc4, - 0x3ab849, - 0x2173c5, - 0x4f20b0c2, - 0x315d45, - 0x2e4345, - 0x251288, - 0x232e47, - 0x4f601442, - 0x204785, - 0x2cf606, - 0x24b106, - 0x333bc8, - 0x302108, - 0x318346, - 0x327f06, - 0x2e2e49, - 0x3426c6, - 0x21298b, - 0x296305, - 0x368106, - 0x377088, - 0x250506, - 0x292cc6, - 0x21914a, - 0x23084a, - 0x245005, - 0x241d47, - 0x308786, - 0x4fa01682, - 0x201687, - 0x238705, - 0x243a44, - 0x243a45, - 0x391706, - 0x26a447, - 0x219a85, - 0x220c04, - 0x2c7e88, - 0x292d85, - 0x333a47, - 0x3a1645, - 0x213845, - 0x256e04, - 0x287609, - 0x2fae48, - 0x2e0286, - 0x2d9d06, - 0x2b6e46, - 0x4fefbc88, - 0x2fbe87, - 0x2fc0cd, - 0x2fcb4c, - 0x2fd149, - 0x2fd389, - 0x5035b2c2, - 0x3a8603, - 0x207943, - 0x2db405, - 0x39280a, - 0x327dc6, - 0x302385, - 0x305884, - 0x30588b, - 0x31b70c, - 0x31c14c, - 0x31c455, - 0x31d74d, - 0x320a8f, - 0x320e52, - 0x3212cf, - 0x321692, - 0x321b13, - 0x321fcd, - 0x32258d, - 0x32290e, - 0x322e8e, - 0x3236cc, - 0x323a8c, - 0x323ecb, - 0x32424e, - 0x325392, - 0x327b8c, - 0x328790, - 0x335212, - 0x33640c, - 0x336acd, - 0x336e0c, - 0x339a51, - 0x33a90d, - 0x34084d, - 0x340e4a, - 0x3410cc, - 0x3419cc, - 0x3421cc, - 0x34290c, - 0x344dd3, - 0x345450, - 0x345850, - 0x34610d, - 0x34670c, - 0x347309, - 0x34890d, - 0x348c53, - 0x34a311, - 0x34a753, - 0x34b24f, - 0x34b60c, - 0x34b90f, - 0x34bccd, - 0x34c2cf, - 0x34c690, - 0x34d10e, - 0x3539ce, - 0x353f50, - 0x35518d, - 0x355b0e, - 0x355e8c, - 0x356e93, - 0x35934e, - 0x3599d0, - 0x359dd1, - 0x35a20f, - 0x35a5d3, - 0x35ae4d, - 0x35b18f, - 0x35b54e, - 0x35bc10, - 0x35c009, - 0x35cd90, - 0x35d38f, - 0x35da0f, - 0x35ddd2, - 0x35efce, - 0x35fc4d, - 0x36070d, - 0x360a4d, - 0x36184d, - 0x361b8d, - 0x361ed0, - 0x3622cb, - 0x36324c, - 0x3635cc, - 0x363bcc, - 0x363ece, - 0x371a10, - 0x372dd2, - 0x37324b, - 0x3738ce, - 0x373c4e, - 0x3744ce, - 0x37494b, - 0x50774f56, - 0x37624d, - 0x3766d4, - 0x377e0d, - 0x37b115, - 0x37c40d, - 0x37cd8f, - 0x37d5cf, - 0x38250f, - 0x3828ce, - 0x382e4d, - 0x383f91, - 0x38674c, - 0x386a4c, - 0x386d4b, - 0x38764c, - 0x387a0f, - 0x387dd2, - 0x38878d, - 0x38974c, - 0x389bcc, - 0x389ecd, - 0x38a20f, - 0x38a5ce, - 0x3924cc, - 0x392a8d, - 0x392dcb, - 0x39358c, - 0x393b0d, - 0x393e4e, - 0x3941c9, - 0x394d13, - 0x39524d, - 0x39558d, - 0x395b8c, - 0x39600e, - 0x396fcf, - 0x39738c, - 0x39768d, - 0x3979cf, - 0x397d8c, - 0x39848c, - 0x39890c, - 0x398c0c, - 0x3992cd, - 0x399612, - 0x399c8c, - 0x399f8c, - 0x39a291, - 0x39a6cf, - 0x39aa8f, - 0x39ae53, - 0x39bcce, - 0x39c04f, - 0x39c40c, - 0x50b9c74e, - 0x39cacf, - 0x39ce96, - 0x39dc12, - 0x39f38c, - 0x39fd0f, - 0x3a038d, - 0x3a06cf, - 0x3a0a8c, - 0x3a0d8d, - 0x3a10cd, - 0x3a254e, - 0x3a4b8c, - 0x3a4e8c, - 0x3a5190, - 0x3a7a91, - 0x3a7ecb, - 0x3a820c, - 0x3a850e, - 0x3aa811, - 0x3aac4e, - 0x3aafcd, - 0x3b53cb, - 0x3b5e8f, - 0x3b6d94, - 0x228782, - 0x228782, - 0x200c83, - 0x228782, - 0x200c83, - 0x228782, - 0x205142, - 0x384405, - 0x3aa50c, - 0x228782, - 0x228782, - 0x205142, - 0x228782, - 0x294545, - 0x21cb85, - 0x228782, - 0x228782, - 0x20b382, - 0x294545, - 0x31f3c9, - 0x34a00c, - 0x228782, - 0x228782, - 0x228782, - 0x228782, - 0x384405, - 0x228782, - 0x228782, - 0x228782, - 0x228782, - 0x20b382, - 0x31f3c9, - 0x228782, - 0x228782, - 0x228782, - 0x21cb85, - 0x228782, - 0x21cb85, - 0x34a00c, - 0x3aa50c, - 0x38d2c3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x205503, - 0x200983, - 0x2708, - 0x5fc84, - 0xe0e08, - 0x205702, - 0x51a099c2, - 0x23dbc3, - 0x24f2c4, - 0x2032c3, - 0x393304, - 0x22f706, - 0x20e883, - 0x3328c4, - 0x286bc5, - 0x209703, - 0x205503, - 0x200983, - 0x255cca, - 0x2efec6, - 0x373fcc, - 0x16d208, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x227f83, - 0x2d43c6, - 0x205503, - 0x200983, - 0x201303, - 0xa4508, - 0x129845, - 0x14902, - 0x52f86185, - 0x21347, - 0xc93c8, - 0xec0e, - 0x88192, - 0xfe20b, - 0x532d6a45, - 0x536d6a4c, - 0xb007, - 0x16fc07, - 0x1b254a, - 0x3a6d0, - 0x149c05, - 0xd95cb, - 0x68bc8, - 0x38f47, - 0x304cb, - 0x4efc9, - 0x11dd07, - 0x2c07, - 0x73587, - 0x1c106, - 0xd4ac8, - 0x53c1cdc6, - 0xa8a0d, - 0x1b1f10, - 0x5402bb82, - 0x9688, - 0x4a450, - 0x14434c, - 0x5474e88d, - 0x655c7, - 0x78749, - 0x52e06, - 0x940c8, - 0x67e42, - 0x9f54a, - 0x27f07, - 0x35fc7, - 0xa4909, - 0xa6388, - 0xb9b45, - 0xec50e, - 0xb54e, - 0xdecf, - 0x11809, - 0xbb9c9, - 0x43e4b, - 0x7664f, - 0x8780c, - 0x9ef4b, - 0xbbf48, - 0x154807, - 0xcdc48, - 0xfb80b, - 0xf568c, - 0xf640c, - 0xf908c, - 0xfe68d, - 0x17e248, - 0xeab02, - 0x113a49, - 0x185d4b, - 0xc5446, - 0x116fcb, - 0xd804a, - 0xd8c05, - 0xde6d0, - 0x111806, - 0x192345, - 0xe3f48, - 0xe9187, - 0xe9447, - 0xff487, - 0xf4d0a, - 0xc924a, - 0x5d306, - 0x91a0d, - 0x86ec8, - 0x55b08, - 0x56d49, - 0xb3c45, - 0xf484c, - 0xfe88b, - 0x165044, - 0xfaa89, - 0xfacc6, - 0x1af7c6, - 0x2dc2, - 0x125c86, - 0x107247, - 0x7b02, - 0xc83c5, - 0x29544, - 0x1ec1, - 0x4c983, - 0x53a85146, - 0x94443, - 0xd882, - 0x27f04, - 0x242, - 0x5ef44, - 0x3dc2, - 0x8142, - 0x2502, - 0x10f242, - 0x1ec2, - 0xd6a42, - 0x4142, - 0x1b102, - 0x2cd82, - 0x5742, - 0xdc2, + 0x28cac3, + 0x20f644, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x215443, + 0x16fb88, + 0x207102, + 0x39c783, + 0x20f882, + 0x238543, + 0x23cac3, + 0x21b583, + 0x200942, + 0x231604, + 0x255783, + 0x28cac3, + 0x208e83, + 0x200e03, + 0x201a03, + 0x202443, + 0x16fb88, + 0x37fd82, + 0x18c1c7, 0xf882, - 0x32403, - 0x5f02, - 0x7c2, - 0x18342, - 0xfc82, - 0x5e82, - 0x1ae02, - 0x17f42, - 0x15c2, - 0x29c2, - 0x1fc2, - 0x44183, - 0x3942, - 0x6502, - 0xafd42, - 0xbe02, - 0x282, - 0x4bc2, - 0x1f42, - 0xa8542, - 0x2342, - 0x152bc2, - 0x675c2, - 0x2c82, - 0x5503, - 0x8c2, - 0x8442, - 0x33c2, - 0xb482, - 0x49245, - 0xba02, - 0x2d4c2, - 0x3c083, - 0x482, - 0x1c42, - 0x27c2, - 0x3902, - 0x1102, - 0x1442, - 0xc2, - 0x2dc2, - 0x9885, - 0x75c47, - 0x212503, - 0x205702, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x20ad83, - 0x227f83, - 0x205503, - 0x204e83, - 0x200983, - 0x294483, - 0x169c3, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x209703, - 0x205503, - 0x204e83, - 0x200983, - 0x2a84c3, - 0x232403, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x200041, - 0x209703, - 0x205503, - 0x21c2c3, - 0x200983, - 0x38d2c3, - 0x2a84c3, - 0x232403, - 0x209683, - 0x2163c3, - 0x277dc3, - 0x280b83, - 0x21c303, - 0x252c03, - 0x2e9dc3, - 0x3b1384, - 0x205503, - 0x200983, - 0x25ed03, - 0x352e84, - 0x231a03, - 0x30c3, - 0x228483, - 0x37a908, - 0x24f3c4, - 0x3b870a, - 0x2b8ec6, - 0x1b6a04, - 0x39b2c7, - 0x21e7ca, - 0x315bc9, - 0x3ab587, - 0x3b724a, - 0x38d2c3, - 0x2e678b, - 0x2b9fc9, - 0x2bd645, - 0x2d1fc7, - 0x99c2, - 0x2a84c3, - 0x205747, - 0x2e2b85, - 0x2dbdc9, - 0x232403, - 0x233c06, - 0x2c1a43, - 0xdb283, - 0x104e46, - 0x18ec46, - 0xe807, - 0x212e46, - 0x21b185, - 0x282407, - 0x2d5b87, - 0x56ae9dc3, - 0x336647, - 0x365e03, - 0x206a05, - 0x3b1384, - 0x220688, - 0x38644c, - 0x2ad745, - 0x29c986, - 0x205607, - 0x38b907, - 0x238347, - 0x245108, - 0x303b8f, - 0x315e05, - 0x23dcc7, - 0x26f287, - 0x2a3e0a, - 0x2d2809, - 0x304f85, - 0x30664a, - 0x82a06, - 0x2c1ac5, - 0x374b84, - 0x2843c6, - 0x2f1d47, - 0x2eaa07, - 0x3bb408, - 0x22dc85, - 0x2e2a86, - 0x214305, - 0x3adcc5, - 0x21c984, - 0x2af347, - 0x2081ca, - 0x334808, - 0x35ba86, - 0x27f83, - 0x2da905, - 0x25f906, - 0x3af246, - 0x392246, - 0x209703, - 0x388a07, - 0x26f205, - 0x205503, - 0x2d830d, - 0x204e83, - 0x3bb508, - 0x27f404, - 0x272fc5, - 0x2a3d06, - 0x234d46, - 0x368007, - 0x2a6ec7, - 0x267345, - 0x200983, - 0x21fbc7, - 0x2788c9, - 0x311a49, - 0x22708a, - 0x243002, - 0x2069c4, - 0x2e5084, - 0x390207, - 0x22cf88, - 0x2ea2c9, - 0x21eac9, - 0x2eaf47, - 0x2ba486, - 0xec286, - 0x2ed844, - 0x2ede4a, - 0x2f0d48, - 0x2f1189, - 0x2bdbc6, - 0x2b1445, - 0x3346c8, - 0x2c5f8a, - 0x22ed03, - 0x353006, - 0x2eb047, - 0x223ec5, - 0x3a5e05, - 0x264b83, - 0x250cc4, - 0x226605, - 0x281b07, - 0x2faf85, - 0x2ee346, - 0xfc605, - 0x247d83, - 0x357bc9, - 0x272d8c, - 0x29344c, - 0x2ced08, - 0x293087, - 0x2f7908, - 0x2f7c4a, - 0x2f888b, - 0x2ba108, - 0x234e48, - 0x239586, - 0x390d45, - 0x38da4a, - 0x3a6205, - 0x20b0c2, - 0x2c4647, - 0x25fe86, - 0x35c8c5, - 0x370809, - 0x2f39c5, - 0x27e985, - 0x2ddf09, - 0x351846, - 0x237e88, - 0x33f383, - 0x20f486, - 0x272146, - 0x306445, - 0x306449, - 0x2b6789, - 0x279ac7, - 0x109104, - 0x309107, - 0x21e9c9, - 0x238d05, - 0x413c8, - 0x3b2e85, - 0x330e85, - 0x380509, - 0x201702, - 0x25e544, - 0x201e82, - 0x203942, - 0x31ecc5, - 0x3b6788, - 0x2b3b85, - 0x2c3ac3, - 0x2c3ac5, - 0x2d2383, - 0x20f442, - 0x377804, - 0x2ac783, - 0x2056c2, - 0x379884, - 0x2e5d43, - 0x2082c2, - 0x2b3c03, - 0x28d084, - 0x2e4c83, - 0x248684, - 0x203082, - 0x218943, - 0x22ef03, - 0x200d02, - 0x361782, - 0x2b65c9, - 0x207842, - 0x288d04, - 0x203cc2, - 0x334544, - 0x2ba444, - 0x2b74c4, - 0x202dc2, - 0x2391c2, - 0x225bc3, - 0x2f8403, - 0x23d904, - 0x281c84, - 0x2eb1c4, - 0x2f0f04, - 0x30a483, - 0x26e543, - 0x282984, - 0x30a2c4, - 0x30aac6, - 0x22a282, - 0x2099c2, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x205702, - 0x38d2c3, - 0x2a84c3, - 0x232403, - 0x2007c3, - 0x2e9dc3, - 0x3b1384, - 0x2b6884, - 0x211cc4, - 0x205503, - 0x200983, - 0x201303, - 0x2ee644, - 0x31a403, - 0x2bd0c3, - 0x34ab84, - 0x3b2c86, - 0x202f03, - 0x16fc07, - 0x222403, - 0x2459c3, - 0x2b0543, - 0x206a43, - 0x227f83, - 0x2d6cc5, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x282c43, - 0x2a5143, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x244183, - 0x205503, - 0x23a504, - 0x200983, - 0x26bec4, - 0x2bf145, - 0x16fc07, - 0x2099c2, + 0x10a985, + 0x1480cc8, + 0x10c50e, + 0x4ba0ab02, + 0x31fec8, + 0x2bdd86, + 0x2ca186, + 0x2bd707, + 0x4be00b42, + 0x4c3ac548, + 0x21870a, + 0x26b448, + 0x200242, + 0x31fb49, + 0x3b1b87, + 0x21ec06, + 0x34e849, + 0x2e9b44, + 0x348646, + 0x2ca584, + 0x27f584, + 0x25f009, + 0x32d906, + 0x240ac5, + 0x297a85, + 0x3b9d87, + 0x2c76c7, + 0x2979c4, + 0x2bd946, + 0x307b85, + 0x30a3c5, + 0x3a2a05, + 0x339407, + 0x378a05, + 0x31ddc9, + 0x234fc5, + 0x32f404, + 0x3a81c7, + 0x341b0e, + 0x306bc9, + 0x338749, + 0x388d86, + 0x24a608, + 0x36ae4b, + 0x2b698c, + 0x33ea46, + 0x2e5ac7, + 0x212245, + 0x38d20a, + 0x2b7389, + 0x209b49, + 0x259f06, + 0x300945, + 0x2edac5, + 0x3570c9, + 0x3a2b8b, + 0x27e286, + 0x3471c6, + 0x20de04, + 0x2943c6, + 0x24e1c8, + 0x3c0846, + 0x215006, + 0x205fc8, + 0x2092c7, + 0x209909, + 0x211385, + 0x16fb88, + 0x21a704, + 0x2394c4, + 0x201105, + 0x3a6649, + 0x228f87, + 0x228f8b, + 0x22b3ca, + 0x230905, + 0x4c612842, + 0x342f07, + 0x4ca30c08, + 0x3578c7, + 0x2c3d45, + 0x209dca, + 0xf882, + 0x2be6cb, + 0x255e0a, + 0x22a146, + 0x216383, + 0x2a038d, + 0x3572cc, + 0x357a4d, + 0x250545, + 0x334fc5, + 0x20db47, + 0x36c689, + 0x218606, + 0x381ac5, + 0x2d2b88, + 0x2942c3, + 0x2fa288, + 0x2942c8, + 0x2cb287, + 0x314808, + 0x3b49c9, + 0x374847, + 0x342707, + 0x202108, + 0x2d1c84, + 0x2d1c87, + 0x26fdc8, + 0x355546, + 0x3b874f, + 0x226207, + 0x2eb686, + 0x2298c5, + 0x22a8c3, + 0x381947, + 0x37cc43, + 0x252886, + 0x254006, + 0x254706, + 0x298b85, + 0x26e2c3, + 0x397cc8, + 0x37f889, + 0x3920cb, + 0x254888, + 0x255985, + 0x2584c5, + 0x4cef6802, + 0x250089, + 0x34eec7, + 0x263c85, + 0x25ef07, + 0x260506, + 0x374345, + 0x263ecb, + 0x2662c4, + 0x26b005, + 0x26b147, + 0x27db86, + 0x27e045, + 0x289a47, + 0x28a187, + 0x2d5104, + 0x291b8a, + 0x292048, + 0x2cee09, + 0x2a0f05, + 0x3bf1c6, + 0x24e38a, + 0x2be906, + 0x26f2c7, + 0x2ceacd, + 0x2aa349, + 0x396fc5, + 0x339f07, + 0x333448, + 0x25a5c8, + 0x332847, + 0x358246, + 0x21cb87, + 0x253c43, + 0x34b1c4, + 0x371cc5, + 0x39d947, + 0x3a2409, + 0x231b08, + 0x34cbc5, + 0x23bac4, + 0x254a45, + 0x256c4d, 0x2006c2, - 0x20d882, - 0x200c82, + 0x230386, + 0x2861c6, + 0x2e654a, + 0x3904c6, + 0x39ab85, + 0x342445, + 0x342447, + 0x3afd0c, + 0x27b3ca, + 0x294086, + 0x28ad05, + 0x294206, + 0x294547, + 0x296886, + 0x298a8c, + 0x34e989, + 0x4d21a187, + 0x29b745, + 0x29b746, + 0x29bcc8, + 0x246f85, + 0x2ab085, + 0x2ab808, + 0x2aba0a, + 0x4d6335c2, + 0x4da14d02, + 0x2e76c5, + 0x2eb603, + 0x243408, + 0x252403, + 0x2abc84, + 0x25240b, + 0x36b208, + 0x2daa48, + 0x4df3b049, + 0x2afc09, + 0x2b0746, + 0x2b1c08, + 0x2b1e09, + 0x2b2886, + 0x2b2a05, + 0x3944c6, + 0x2b2f49, + 0x389347, + 0x2647c6, + 0x2de087, + 0x218487, + 0x2dd9c4, + 0x4e34f809, + 0x2d32c8, + 0x3ac448, + 0x3932c7, + 0x2cd346, + 0x36c489, + 0x2ca847, + 0x32598a, + 0x358388, + 0x208387, + 0x208f86, + 0x271d8a, + 0x26fbc8, + 0x2ed485, + 0x230685, + 0x2ef1c7, + 0x311cc9, + 0x30150b, + 0x31a308, + 0x235049, + 0x254c87, + 0x2bd04c, + 0x2bfccc, + 0x2bffca, + 0x2c024c, + 0x2ca108, + 0x2ca308, + 0x2ca504, + 0x2caa09, + 0x2cac49, + 0x2cae8a, + 0x2cb109, + 0x2cb447, + 0x3ba98c, + 0x23f586, + 0x2cbf88, + 0x2be9c6, + 0x387486, + 0x396ec7, + 0x306dc8, + 0x3445cb, + 0x28e307, + 0x250289, + 0x350b89, + 0x253507, + 0x2771c4, + 0x271c07, + 0x2fda46, + 0x21d8c6, + 0x33c345, + 0x297248, + 0x2993c4, + 0x2993c6, + 0x27b28b, + 0x21bac9, + 0x36c886, + 0x204bc9, + 0x339586, + 0x25f1c8, + 0x211b83, + 0x300ac5, + 0x219b09, + 0x21da05, + 0x2fba44, + 0x27d046, + 0x2fd385, + 0x299906, + 0x310ec7, + 0x33a986, + 0x3b134b, + 0x237587, + 0x241646, + 0x354786, + 0x3b9e46, + 0x297989, + 0x25384a, + 0x2bbb85, + 0x2202cd, + 0x2abb06, + 0x204a86, + 0x2f3f06, + 0x22dd45, + 0x2e6ac7, + 0x300087, + 0x2e7dce, + 0x28cac3, + 0x2cd309, + 0x210c89, + 0x38d607, + 0x364207, + 0x2a5bc5, + 0x2b57c5, + 0x4e63470f, + 0x2d5a47, + 0x2d5c08, + 0x2d6144, + 0x2d7106, + 0x4ea4ea42, + 0x2da786, + 0x20c0c6, + 0x210e4e, + 0x2fa0ca, + 0x273b06, + 0x23398a, + 0x211689, + 0x32b385, + 0x3a4808, + 0x3bca06, + 0x306748, + 0x33aac8, + 0x2194cb, + 0x2bd805, + 0x378a88, + 0x20610c, + 0x2c3c07, + 0x254246, + 0x2fd1c8, + 0x3488c8, + 0x4ee06802, + 0x23588b, + 0x2123c9, + 0x205549, + 0x2174c7, + 0x223408, + 0x4f36bec8, + 0x38ffcb, + 0x23edc9, + 0x338f0d, + 0x27fa88, + 0x22b1c8, + 0x4f6014c2, + 0x203cc4, + 0x4fa19302, + 0x2fe206, + 0x4fe004c2, + 0x261b8a, + 0x2199c6, + 0x232808, + 0x2c6f48, + 0x2b6f06, + 0x22fe46, + 0x2f9186, + 0x2b5a45, + 0x2443c4, + 0x50206d04, + 0x214106, + 0x29c747, + 0x50620c47, + 0x2d644b, + 0x341ec9, + 0x33500a, + 0x2106c4, + 0x342588, + 0x26458d, + 0x2f2489, + 0x2f26c8, + 0x2f2d49, + 0x2f4544, + 0x245884, + 0x285cc5, + 0x320fcb, + 0x36b186, + 0x34b905, + 0x2279c9, + 0x2bda08, + 0x210dc4, + 0x38d389, + 0x2064c5, + 0x2c7708, + 0x342dc7, + 0x338b48, + 0x286d86, + 0x233207, + 0x29a989, + 0x224a49, + 0x38adc5, + 0x34dfc5, + 0x50a08402, + 0x32f1c4, + 0x2fdd45, + 0x2ce506, + 0x33bd05, + 0x387e47, + 0x214205, + 0x27dbc4, + 0x388e46, + 0x381b47, + 0x23d046, + 0x2c41c5, + 0x207f48, + 0x2bdf85, + 0x211a07, + 0x214689, + 0x21bc0a, + 0x2fc487, + 0x2fc48c, + 0x240a86, + 0x37e349, + 0x246a45, + 0x246ec8, + 0x207c03, + 0x216d85, + 0x2fd705, + 0x282d47, + 0x50e06ac2, + 0x22f647, + 0x2e56c6, + 0x373b46, + 0x30bfc6, + 0x348806, + 0x206748, + 0x2a0d05, + 0x2eb747, + 0x2eb74d, + 0x227103, + 0x227105, + 0x379347, + 0x22f988, + 0x378f05, + 0x2216c8, + 0x37ccc6, + 0x335b87, + 0x2cbec5, + 0x2bd886, + 0x39ce45, + 0x21c70a, + 0x2f1346, + 0x383f47, + 0x2bca85, + 0x2f5047, + 0x2f97c4, + 0x2fb9c6, + 0x2fe345, + 0x32d70b, + 0x2fd8c9, + 0x24214a, + 0x38ae48, + 0x30e048, + 0x380a8c, + 0x3964c7, + 0x3054c8, + 0x307f48, + 0x3084c5, + 0x311a8a, + 0x31c449, + 0x51200d02, + 0x201886, + 0x216044, + 0x216049, + 0x27d549, + 0x27e9c7, + 0x2b4e07, + 0x2938c9, + 0x22df48, + 0x22df4f, + 0x2e3a06, + 0x2df14b, + 0x34b445, + 0x34b447, + 0x368849, + 0x21aa46, + 0x38d307, + 0x2e1a45, + 0x23ae84, + 0x284fc6, + 0x2262c4, + 0x2db107, + 0x2d6f08, + 0x51700848, + 0x301245, + 0x301387, + 0x260a09, + 0x205304, + 0x24b348, + 0x51ab7cc8, + 0x283384, + 0x23c208, + 0x332d44, + 0x22be49, + 0x351a45, + 0x51e05082, + 0x2e3a45, + 0x310045, + 0x20fc48, + 0x23d747, + 0x52200d42, + 0x3322c5, + 0x2d8e46, + 0x27cb06, + 0x32f188, + 0x337d48, + 0x33bcc6, + 0x34bb06, + 0x38c289, + 0x373a86, + 0x21a90b, + 0x2e5f85, + 0x208a46, + 0x29e108, + 0x3a0a06, + 0x322c46, + 0x221b8a, + 0x23b30a, + 0x2498c5, + 0x2a0dc7, + 0x313646, + 0x52606442, + 0x379487, + 0x266cc5, + 0x24e304, + 0x24e305, + 0x2105c6, + 0x278fc7, + 0x215dc5, + 0x23b484, + 0x2c4788, + 0x322d05, + 0x3af347, + 0x3b6dc5, + 0x21c645, + 0x258f84, + 0x2ee209, + 0x3079c8, + 0x263146, + 0x2b5386, + 0x345186, + 0x52b08148, + 0x308347, + 0x30874d, + 0x3090cc, + 0x3096c9, + 0x309909, + 0x52f67742, + 0x3b6343, + 0x215ac3, + 0x2fdb05, + 0x39da4a, + 0x32f046, + 0x30e2c5, + 0x311084, + 0x31108b, + 0x323a8c, + 0x3244cc, + 0x3247d5, + 0x32660d, + 0x327d0f, + 0x3280d2, + 0x32854f, + 0x328912, + 0x328d93, + 0x32924d, + 0x32980d, + 0x329b8e, + 0x32a10e, + 0x32a94c, + 0x32ad0c, + 0x32b14b, + 0x32b4ce, + 0x32c612, + 0x32ee0c, + 0x32fd90, + 0x33cd52, + 0x33d9cc, + 0x33e08d, + 0x33e3cc, + 0x3406d1, + 0x34734d, + 0x349e0d, + 0x34a40a, + 0x34a68c, + 0x34af8c, + 0x34b60c, + 0x34c20c, + 0x3523d3, + 0x352cd0, + 0x3530d0, + 0x35398d, + 0x353f8c, + 0x354b89, + 0x35690d, + 0x356c53, + 0x3595d1, + 0x359a13, + 0x35a0cf, + 0x35a48c, + 0x35a78f, + 0x35ab4d, + 0x35b14f, + 0x35b510, + 0x35bf8e, + 0x35f88e, + 0x35fe10, + 0x36150d, + 0x361e8e, + 0x36220c, + 0x363213, + 0x3658ce, + 0x365f50, + 0x366351, + 0x36678f, + 0x366b53, + 0x3672cd, + 0x36760f, + 0x3679ce, + 0x368090, + 0x368489, + 0x369210, + 0x36980f, + 0x369e8f, + 0x36a252, + 0x36dcce, + 0x36e7cd, + 0x36f00d, + 0x36f34d, + 0x37078d, + 0x370acd, + 0x370e10, + 0x37120b, + 0x371a8c, + 0x371e0c, + 0x37240c, + 0x37270e, + 0x382350, + 0x384512, + 0x38498b, + 0x384e8e, + 0x38520e, + 0x386dce, + 0x38724b, + 0x53388016, + 0x38988d, + 0x38a014, + 0x38b04d, + 0x38cd55, + 0x38e30d, + 0x38ec8f, + 0x38f4cf, + 0x39238f, + 0x39274e, + 0x392ccd, + 0x394091, + 0x39668c, + 0x39698c, + 0x396c8b, + 0x39710c, + 0x3974cf, + 0x397892, + 0x39824d, + 0x39974c, + 0x399bcc, + 0x399ecd, + 0x39a20f, + 0x39a5ce, + 0x39d70c, + 0x39dccd, + 0x39e00b, + 0x39e9cc, + 0x39f2cd, + 0x39f60e, + 0x39f989, + 0x3a1353, + 0x3a188d, + 0x3a1bcd, + 0x3a21cc, + 0x3a264e, + 0x3a37cf, + 0x3a3b8c, + 0x3a3e8d, + 0x3a41cf, + 0x3a458c, + 0x3a508c, + 0x3a550c, + 0x3a580c, + 0x3a5ecd, + 0x3a6212, + 0x3a688c, + 0x3a6b8c, + 0x3a6e91, + 0x3a72cf, + 0x3a768f, + 0x3a7a53, + 0x3a8a0e, + 0x3a8d8f, + 0x3a914c, + 0x537a948e, + 0x3a980f, + 0x3a9bd6, + 0x3aaa92, + 0x3acf0c, + 0x3ada0f, + 0x3ae08d, + 0x3ae3cf, + 0x3ae78c, + 0x3aea8d, + 0x3aedcd, + 0x3b084e, + 0x3b228c, + 0x3b258c, + 0x3b2890, + 0x3b57d1, + 0x3b5c0b, + 0x3b5f4c, + 0x3b624e, + 0x3b7211, + 0x3b764e, + 0x3b79cd, + 0x3bc7cb, + 0x3bd88f, + 0x3be394, + 0x210642, + 0x210642, + 0x204d43, + 0x210642, + 0x204d43, + 0x210642, + 0x2009c2, + 0x394505, + 0x3b6f0c, + 0x210642, + 0x210642, + 0x2009c2, + 0x210642, + 0x29c345, + 0x21bc05, + 0x210642, + 0x210642, + 0x201102, + 0x29c345, + 0x326b49, + 0x3592cc, + 0x210642, + 0x210642, + 0x210642, + 0x210642, + 0x394505, + 0x210642, + 0x210642, + 0x210642, + 0x210642, + 0x201102, + 0x326b49, + 0x210642, + 0x210642, + 0x210642, + 0x21bc05, + 0x210642, + 0x21bc05, + 0x3592cc, + 0x3b6f0c, + 0x39c783, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x208e83, + 0x201a03, + 0xe008, + 0x64344, + 0xe03, + 0xc63c8, + 0x207102, + 0x5460f882, + 0x24ac83, + 0x23f044, + 0x2020c3, + 0x39e544, + 0x23a1c6, + 0x216f83, + 0x304704, + 0x2d7b05, + 0x28cac3, + 0x208e83, + 0x1a3443, + 0x201a03, + 0x243d0a, + 0x3821c6, + 0x38558c, + 0x16fb88, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x229443, + 0x20c0c6, + 0x208e83, + 0x201a03, + 0x221483, + 0xac408, + 0x131645, + 0x35f09, + 0x35c2, + 0x55b95645, + 0x26547, + 0xba9c8, + 0x14b0e, + 0x90212, + 0x10a78b, + 0x1398c6, + 0x55edf485, + 0x562df48c, + 0x148f87, + 0x36dc7, + 0x15000a, + 0x46690, + 0x13b345, + 0xb610b, + 0xf8d08, + 0x3e607, + 0x3af8b, + 0x57f89, + 0x185a87, + 0x81a87, + 0x7e4c7, + 0x3e546, + 0xdd088, + 0x56824386, + 0xb084d, + 0x14f9d0, + 0x56c0c182, + 0x8ca48, + 0x4f450, + 0x15090c, + 0x5735cd4d, + 0x64a88, + 0x721c7, + 0x76f09, + 0x5d3c6, + 0x9bec8, + 0x351c2, + 0xa808a, + 0x293c7, + 0x43b87, + 0xac7c9, + 0xae208, + 0x8b205, + 0xd538e, + 0x5c4e, + 0x17a8f, + 0x18009, + 0x164ec9, + 0x15d38b, + 0x7ba8f, + 0xee40c, + 0xa88cb, + 0xc8b48, + 0xd6347, + 0xdbe88, + 0xfe78b, + 0xff34c, + 0x10038c, + 0x1037cc, + 0x10b54d, + 0x3ef48, + 0xd2942, + 0x134649, + 0x195d8b, + 0xcd546, + 0x11f30b, + 0xe118a, + 0xe1d45, + 0xe67d0, + 0xe9f06, + 0x16b986, + 0x11205, + 0x10fc48, + 0xefd07, + 0xeffc7, + 0x8d047, + 0xfe04a, + 0xba84a, + 0x86286, + 0x99d0d, + 0x8f148, + 0x586c8, + 0x58ec9, + 0xbc8c5, + 0x1ad70c, + 0x10b74b, + 0x19e604, + 0x105e09, + 0x106046, + 0x16546, + 0x2642, + 0x12cf06, + 0xc68b, + 0x112707, + 0x4542, + 0xd1305, + 0x2e604, + 0x8c1, + 0x52d03, + 0x56764886, + 0x9c243, + 0x7b02, + 0x293c4, + 0x242, + 0x86644, + 0xf82, + 0x6502, + 0x3302, + 0xd342, + 0x1382, + 0xdf482, + 0x8c2, + 0x22902, + 0x40e82, + 0x1a442, + 0x4c82, + 0x234c2, + 0x3cac3, + 0x6b82, + 0x1842, + 0x7602, + 0x6b02, + 0x17202, + 0x36d02, + 0x206c2, + 0xc442, + 0x1c82, + 0x942, + 0x55783, + 0x4182, + 0x2542, + 0xb8042, + 0x9a02, + 0x282, + 0x2942, + 0xd842, + 0xc202, + 0x4a82, + 0x182842, + 0x745c2, + 0xe82, + 0x8e83, + 0x1942, + 0x6802, + 0x982, + 0x5b82, + 0x18ad45, + 0x7082, + 0x2fa42, + 0x13ebc3, + 0x482, + 0xb282, + 0xa02, + 0x2502, + 0x6742, + 0xd42, + 0xc2, + 0x2642, + 0x35dc5, + 0x17f087, + 0x20d0c3, + 0x207102, + 0x238543, + 0x23cac3, + 0x21b583, + 0x2046c3, + 0x229443, + 0x208e83, + 0x200e03, + 0x201a03, + 0x29c283, + 0x10c3, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x21b583, + 0x28cac3, + 0x208e83, + 0x200e03, + 0x1a3443, + 0x201a03, + 0x238543, + 0x23cac3, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x200041, + 0x28cac3, + 0x208e83, + 0x21b543, + 0x201a03, + 0x146f44, + 0x39c783, + 0x238543, + 0x23cac3, + 0x26eac3, + 0x21b583, + 0x207b03, + 0x289303, + 0x219983, + 0x241503, + 0x323043, + 0x231604, + 0x208e83, + 0x201a03, + 0x202443, + 0x333cc4, + 0x251183, + 0x3ec3, + 0x3c0943, + 0x20a3c8, + 0x271dc4, + 0x2cf30a, + 0x2bed86, + 0x112384, + 0x3a7ec7, + 0x226cca, + 0x2e38c9, + 0x3b7f87, + 0x3be84a, + 0x39c783, + 0x2e774b, + 0x28b689, + 0x345285, + 0x2da5c7, + 0xf882, + 0x238543, + 0x21a447, + 0x2379c5, + 0x2ca689, + 0x23cac3, + 0x2bd606, + 0x2c9883, + 0xe5743, + 0x110646, + 0xd386, + 0x16f07, + 0x21af86, + 0x222985, + 0x3a3147, + 0x2de5c7, + 0x59b23043, + 0x33dc07, + 0x374703, + 0x3b5045, + 0x231604, + 0x231308, + 0x366fcc, + 0x2b4fc5, + 0x2aa4c6, + 0x21a307, + 0x39b687, + 0x23dfc7, + 0x23f108, + 0x30f50f, + 0x2e3b05, + 0x24ad87, + 0x33acc7, + 0x2abdca, + 0x2d29c9, + 0x39e6c5, + 0x31078a, + 0xc546, + 0x2c9905, + 0x3703c4, + 0x2c6e86, + 0x300e07, + 0x2d2847, + 0x306908, + 0x217645, + 0x2378c6, + 0x214f85, + 0x2e8105, + 0x21ba04, + 0x2b6e07, + 0x20658a, + 0x34d908, + 0x367f06, + 0x29443, + 0x2e4505, + 0x26bf86, + 0x3babc6, + 0x211106, + 0x28cac3, + 0x3984c7, + 0x33ac45, + 0x208e83, + 0x2e144d, + 0x200e03, + 0x306a08, + 0x3b3644, + 0x310945, + 0x2abcc6, + 0x23f386, + 0x208947, + 0x2aed47, + 0x26f045, + 0x201a03, + 0x20a147, + 0x277089, + 0x36bbc9, + 0x227f4a, + 0x235d82, + 0x3b5004, + 0x2eb2c4, + 0x344487, + 0x22f508, + 0x2f0889, + 0x226fc9, + 0x2f1ac7, + 0x28bb46, + 0xf3006, + 0x2f4544, + 0x2f4b4a, + 0x2f8248, + 0x2f9049, + 0x2c4bc6, + 0x2b9545, + 0x34d7c8, + 0x2cdc4a, + 0x20ec43, + 0x333e46, + 0x2f1bc7, + 0x225f45, + 0x3b3505, + 0x3a04c3, + 0x231944, + 0x230645, + 0x28a287, + 0x307b05, + 0x2ef086, + 0x103d45, + 0x273bc3, + 0x273bc9, + 0x26c04c, + 0x2a2b4c, + 0x2d8648, + 0x284187, + 0x301e08, + 0x30214a, + 0x302fcb, + 0x28b7c8, + 0x23ec48, + 0x23f486, + 0x345045, + 0x34624a, + 0x228cc5, + 0x205082, + 0x2cbd87, + 0x29f806, + 0x368d45, + 0x304209, + 0x281405, + 0x3716c5, + 0x218ac9, + 0x388a46, + 0x204448, + 0x332643, + 0x217186, + 0x27cf86, + 0x311f05, + 0x311f09, + 0x2f0fc9, + 0x27a3c7, + 0x114204, + 0x314207, + 0x226ec9, + 0x23f805, + 0x444c8, + 0x39c485, + 0x341a05, + 0x3911c9, + 0x20cac2, + 0x2628c4, + 0x200882, + 0x204182, + 0x30e985, + 0x312108, + 0x2bc805, + 0x2cb603, + 0x2cb605, + 0x2da983, + 0x2162c2, + 0x383c84, + 0x2fc183, + 0x20cb42, + 0x341504, + 0x2ec043, + 0x206682, + 0x28cfc3, + 0x295384, + 0x2eae03, + 0x2f6584, + 0x204242, + 0x221383, + 0x219c43, + 0x206182, + 0x332182, + 0x2f0e09, + 0x204382, + 0x290d84, + 0x201f82, + 0x34d644, + 0x28bb04, + 0x2c0d84, + 0x202642, + 0x23e882, + 0x229703, + 0x302d83, + 0x24a9c4, + 0x28a404, + 0x2f1d44, + 0x2f8404, + 0x315743, + 0x224183, + 0x20c4c4, + 0x315584, + 0x315d86, + 0x232ec2, + 0x20f882, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x207102, + 0x39c783, + 0x238543, + 0x23cac3, + 0x201843, + 0x323043, + 0x231604, + 0x2f10c4, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x221483, + 0x2f5204, + 0x31fe83, + 0x2c37c3, + 0x359e44, + 0x39c286, + 0x211c43, + 0x36dc7, + 0x21f243, + 0x202103, + 0x2b8d83, + 0x263a43, + 0x229443, + 0x3321c5, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x216403, + 0x239043, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x255783, + 0x208e83, + 0x2464c4, + 0x1a3443, + 0x201a03, + 0x25b0c4, + 0x2c6c85, + 0x36dc7, + 0x20f882, + 0x201742, + 0x207b02, + 0x204d42, + 0xe03, 0x200442, - 0x2a84c3, - 0x235ac4, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x211cc4, - 0x205503, - 0x200983, - 0x214843, - 0x25ef44, - 0x16d208, - 0x2a84c3, - 0x204e83, - 0x169c3, - 0x2030c4, - 0x16d208, - 0x2a84c3, - 0x249944, - 0x3b1384, - 0x204e83, - 0x203ec2, - 0x200983, - 0x23e743, - 0x50cc4, - 0x373605, - 0x20b0c2, - 0x30a403, - 0x205702, - 0x16d208, - 0x2099c2, - 0x232403, - 0x2e9dc3, - 0x201fc2, - 0x200983, - 0x205702, - 0x1b7407, - 0x12e3c9, - 0x6f83, - 0x16d208, - 0x18ebc3, - 0x5a31fd87, - 0xa84c3, - 0x708, - 0x232403, - 0x2e9dc3, - 0x1ae886, - 0x244183, - 0x8f2c8, - 0xc0e08, - 0x41a46, - 0x209703, - 0xca988, - 0xb1b43, - 0xdf145, - 0x32607, - 0x8003, - 0x174c0a, - 0x11ed83, - 0x308d44, - 0x10398b, - 0x103f48, - 0x8d742, - 0x205702, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2d5f04, - 0x2e9dc3, - 0x244183, - 0x209703, - 0x205503, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x227f83, - 0x205503, - 0x200983, - 0x21aa03, - 0x214843, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x169c3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x227f83, - 0x205503, - 0x200983, - 0x212982, + 0x238543, + 0x240244, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x21bf84, + 0x208e83, + 0xe03, + 0x201a03, + 0x215443, + 0x286644, + 0x16fb88, + 0x238543, + 0x200e03, + 0x10c3, + 0x13e8c4, + 0x252044, + 0x16fb88, + 0x238543, + 0x253384, + 0x231604, + 0x200e03, + 0x2014c2, + 0x201a03, + 0x20c843, + 0x31944, + 0x355685, + 0x205082, + 0x3156c3, + 0x145c49, + 0xdfb46, + 0x19c588, + 0x207102, + 0x16fb88, + 0x20f882, + 0x23cac3, + 0x323043, + 0x200942, + 0xe03, + 0x201a03, + 0x207102, + 0x1bea07, + 0x1370c9, + 0x3dc3, + 0x16fb88, + 0xd303, + 0x5db4c807, + 0x38543, + 0x1788, + 0x23cac3, + 0x323043, + 0x186c46, + 0x255783, + 0xe8888, + 0xc9148, + 0x3fbc6, + 0x28cac3, + 0xd30c8, + 0x187ec3, + 0xe8a85, + 0x3ccc7, + 0x8e83, + 0x63c3, + 0x1a03, + 0xcb02, + 0x17044a, + 0x10ea43, + 0x313e44, + 0x10f30b, + 0x10f8c8, + 0x95e02, + 0x207102, + 0x20f882, + 0x238543, + 0x23cac3, + 0x2de944, + 0x323043, + 0x255783, + 0x28cac3, + 0x208e83, + 0x238543, + 0x23cac3, + 0x323043, + 0x229443, + 0x208e83, + 0x201a03, + 0x236903, + 0x215443, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x10c3, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x229443, + 0x208e83, + 0x201a03, + 0x21a902, 0x200141, - 0x205702, + 0x207102, 0x200001, - 0x320b82, - 0x16d208, - 0x21d445, - 0x201ec1, - 0xa84c3, - 0x200701, + 0x327e02, + 0x16fb88, + 0x224c85, + 0x2008c1, + 0x38543, + 0x201781, 0x200301, 0x200081, - 0x298602, - 0x36c044, - 0x384383, + 0x2ac602, + 0x37cc44, + 0x394483, 0x200181, 0x200401, 0x200041, 0x200101, - 0x2e9907, - 0x2eab8f, - 0x340446, + 0x2ea547, + 0x2ec54f, + 0x2fbc06, 0x200281, - 0x37f6c6, - 0x200e81, - 0x2008c1, - 0x332a0e, - 0x200441, - 0x200983, - 0x201301, - 0x270e85, - 0x20f942, - 0x264a85, - 0x200341, + 0x33e906, 0x200801, + 0x200981, + 0x306f8e, + 0x200441, + 0x201a03, + 0x204101, + 0x258885, + 0x20cb02, + 0x3a03c5, + 0x200341, + 0x200741, 0x2002c1, - 0x20b0c2, + 0x205082, 0x2000c1, 0x200201, - 0x200bc1, + 0x200c81, 0x2005c1, - 0x201cc1, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x219503, - 0x2a84c3, - 0x2e9dc3, - 0x8d688, - 0x209703, - 0x205503, - 0x20803, - 0x200983, - 0x14e7e88, - 0x16d208, - 0x44e04, - 0x14e7e8a, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x205503, - 0x200983, - 0x2030c3, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2d5f04, - 0x200983, - 0x27a305, - 0x33b804, - 0x2a84c3, - 0x205503, - 0x200983, - 0x225ca, - 0xd5284, - 0x10c9c6, - 0x2099c2, - 0x2a84c3, - 0x230309, - 0x232403, - 0x3034c9, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x2ed648, - 0x22ca47, - 0x373605, - 0x18ed88, - 0x1b7407, - 0x2d20a, - 0xecb, - 0x4ab87, - 0x3d2c8, - 0x1b1b8a, - 0x10a48, - 0x12e3c9, - 0x264c7, - 0x3be87, - 0x152b08, - 0x708, - 0x3df8f, - 0x11d85, - 0xa07, - 0x1ae886, - 0x137607, - 0x3d586, - 0x8f2c8, - 0xa5606, - 0x151647, - 0x19c9, - 0x1aa1c7, - 0xa46c9, - 0xb4a09, - 0xbeec6, - 0xc0e08, - 0xbfcc5, - 0x4eb4a, - 0xca988, - 0xb1b43, - 0xd2648, - 0x32607, - 0x6d505, - 0x69c50, - 0x8003, - 0x1aa047, - 0x15ec5, - 0xe9748, - 0x13ce05, - 0x11ed83, - 0x6fd48, - 0xcd46, - 0x42849, - 0xaa147, - 0x6fa0b, - 0x14ac44, - 0xfa544, - 0x10398b, - 0x103f48, - 0x104d47, - 0x129845, - 0x2a84c3, - 0x232403, - 0x2163c3, - 0x200983, - 0x22a403, - 0x2e9dc3, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x43f8b, - 0x205702, - 0x2099c2, - 0x200983, - 0x16d208, - 0x205702, - 0x2099c2, - 0x20d882, - 0x201fc2, - 0x203d02, - 0x205503, + 0x204541, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x221f43, + 0x238543, + 0x323043, + 0x95d48, + 0x28cac3, + 0x208e83, + 0x31483, + 0x201a03, + 0x14eec08, + 0x16308, + 0x16fb88, + 0xe03, + 0x8e444, + 0x4ec04, + 0x14eec0a, + 0x16fb88, + 0x1a3443, + 0x238543, + 0x23cac3, + 0x323043, + 0x208e83, + 0x201a03, + 0x203ec3, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x2de944, + 0x201a03, + 0x22d585, + 0x35f2c4, + 0x238543, + 0x208e83, + 0x201a03, + 0x1f40a, + 0xf1844, + 0x118b06, + 0x20f882, + 0x238543, + 0x23adc9, + 0x23cac3, + 0x375449, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x2f4348, + 0x22dc07, + 0x355685, + 0xb4c8, + 0x1bea07, + 0x2f78a, + 0x178ccb, + 0x13c507, + 0x4a4c8, + 0x14f64a, + 0x19dc8, + 0x1370c9, + 0x30507, + 0x742c7, + 0x19bf08, + 0x1788, + 0x4b04f, + 0x1c045, + 0x1a87, + 0x186c46, + 0x41287, + 0x4a786, + 0xe8888, + 0x96fc6, + 0x188847, + 0x178809, + 0x1bf307, + 0xd81c9, + 0xbcbc9, + 0xc6a06, + 0xc9148, + 0xc7845, + 0x57b0a, + 0xd30c8, + 0x187ec3, + 0xdad48, + 0x3ccc7, + 0x131f45, + 0x787d0, + 0x63c3, + 0x1a3443, + 0x125807, + 0x1cc85, + 0xf02c8, + 0xe385, + 0x10ea43, + 0x16d5c8, + 0x12906, + 0x198909, + 0xb2007, + 0x145f0b, + 0x180884, + 0x104f04, + 0x10f30b, + 0x10f8c8, + 0x110547, + 0x131645, + 0x238543, + 0x23cac3, + 0x21b583, + 0x201a03, + 0x20c743, + 0x323043, + 0x1a3443, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x15d4cb, + 0x207102, + 0x20f882, + 0x201a03, + 0x16fb88, + 0x207102, + 0x20f882, + 0x207b02, + 0x200942, + 0x20b302, + 0x208e83, 0x200442, - 0x205702, - 0x38d2c3, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x20d882, - 0x2e9dc3, - 0x244183, - 0x209703, - 0x211cc4, - 0x205503, - 0x216b03, - 0x200983, - 0x308d44, - 0x25ed03, - 0x2e9dc3, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x204e83, - 0x200983, - 0x39f847, - 0x2a84c3, - 0x2614c7, - 0x2c7ac6, - 0x219203, - 0x218343, - 0x2e9dc3, - 0x2143c3, - 0x3b1384, - 0x37ef04, - 0x31ea46, - 0x20d143, - 0x205503, - 0x200983, - 0x27a305, - 0x318284, - 0x3b2a43, - 0x38b743, - 0x2c4647, - 0x33e885, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x28e87, - 0x205942, - 0x287003, - 0x2bf143, - 0x38d2c3, - 0x626a84c3, - 0x202242, - 0x232403, - 0x2032c3, - 0x2e9dc3, - 0x3b1384, - 0x353903, - 0x315e03, - 0x209703, - 0x211cc4, - 0x62a04642, - 0x205503, - 0x200983, - 0x2082c3, - 0x229543, - 0x212982, - 0x25ed03, - 0x16d208, - 0x2e9dc3, - 0x169c3, - 0x26f744, - 0x38d2c3, - 0x2099c2, - 0x2a84c3, - 0x235ac4, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x244183, - 0x282104, - 0x210444, - 0x2d43c6, - 0x211cc4, - 0x205503, - 0x200983, - 0x201303, - 0x25fe86, - 0x13f08b, - 0x1cdc6, - 0x5eb4a, - 0x107e4a, - 0x16d208, - 0x2142c4, - 0x63ea84c3, - 0x38d284, - 0x232403, - 0x256e84, - 0x2e9dc3, - 0x391683, - 0x209703, - 0x205503, - 0x200983, - 0x56243, - 0x32f78b, - 0x3a140a, - 0x3b9bcc, - 0xda688, - 0x205702, - 0x2099c2, - 0x20d882, - 0x2a9305, - 0x3b1384, - 0x202342, - 0x209703, - 0x210444, - 0x200c82, + 0x207102, + 0x39c783, + 0x20f882, + 0x238543, + 0x23cac3, + 0x207b02, + 0x323043, + 0x255783, + 0x28cac3, + 0x21bf84, + 0x208e83, + 0x21eb43, + 0x201a03, + 0x313e44, + 0x202443, + 0x323043, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x200e03, + 0x201a03, + 0x3ad3c7, + 0x238543, + 0x282c07, + 0x2d7f86, + 0x20e583, + 0x207603, + 0x323043, + 0x204c03, + 0x231604, + 0x2d5204, + 0x30e706, + 0x20bd43, + 0x208e83, + 0x201a03, + 0x22d585, + 0x321704, + 0x350503, + 0x39b4c3, + 0x2cbd87, + 0x342d45, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x99807, + 0x203402, + 0x28f283, + 0x205403, + 0x39c783, + 0x65e38543, + 0x206902, + 0x23cac3, + 0x2020c3, + 0x323043, + 0x231604, + 0x3797c3, + 0x2e3b03, + 0x28cac3, + 0x21bf84, + 0x6620ea42, + 0x208e83, + 0x201a03, + 0x206683, + 0x22e603, + 0x21a902, + 0x202443, + 0x16fb88, + 0x323043, + 0x10c3, + 0x31f944, + 0x39c783, + 0x20f882, + 0x238543, + 0x240244, + 0x23cac3, + 0x323043, + 0x231604, + 0x255783, + 0x3a2e44, + 0x20f644, + 0x20c0c6, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x221483, + 0x29f806, + 0x4504b, + 0x24386, + 0x3204a, + 0x112d0a, + 0x16fb88, + 0x214f44, + 0x67638543, + 0x39c744, + 0x23cac3, + 0x259004, + 0x323043, + 0x210543, + 0x28cac3, + 0x208e83, + 0x1a3443, + 0x201a03, + 0xbac3, + 0x3381cb, + 0x3af10a, + 0x3bf84c, + 0xe4288, + 0x207102, + 0x20f882, + 0x207b02, + 0x2b13c5, + 0x231604, + 0x204a82, + 0x28cac3, + 0x20f644, + 0x204d42, 0x200442, - 0x209842, - 0x212982, - 0x18d2c3, - 0x19f02, - 0x2a1cc9, - 0x25d548, - 0x309a89, - 0x337449, - 0x23490a, - 0x23634a, - 0x20cc02, - 0x21b102, - 0x99c2, - 0x2a84c3, - 0x204682, - 0x23de86, - 0x35d882, - 0x201242, - 0x20124e, - 0x21898e, - 0x27b107, - 0x205487, - 0x275d02, - 0x232403, - 0x2e9dc3, + 0x20d2c2, + 0x21a902, + 0x19c783, + 0x35f42, + 0x2b3509, + 0x2f7148, + 0x351689, + 0x2410c9, + 0x350f0a, + 0x26080a, + 0x2127c2, + 0x222902, + 0xf882, + 0x238543, + 0x229682, + 0x24af46, + 0x369d02, + 0x206a42, + 0x37904e, + 0x2213ce, + 0x284b47, + 0x208e07, + 0x2ec8c2, + 0x23cac3, + 0x323043, 0x200042, - 0x201fc2, - 0x4a5c3, - 0x2eec0f, - 0x200f42, - 0x32c787, - 0x2c7d07, - 0x2d3907, - 0x2ad24c, - 0x3151cc, - 0x3a3a44, - 0x27c6ca, - 0x2188c2, - 0x20be02, - 0x2b6fc4, - 0x2226c2, - 0x2c2702, - 0x315404, - 0x20cec2, + 0x200942, + 0x31603, + 0x23980f, + 0x20b542, + 0x2dd887, + 0x2b4a87, + 0x2b7e87, + 0x31a4cc, + 0x2c448c, + 0x223984, + 0x285b0a, + 0x221302, + 0x209a02, + 0x2c0884, + 0x21f502, + 0x2ca102, + 0x2c46c4, + 0x21a602, 0x200282, - 0x6343, - 0x2a5687, - 0x2352c5, - 0x201f42, - 0x2eeb84, - 0x352bc2, - 0x2da248, - 0x205503, - 0x3b0208, - 0x200d42, - 0x233385, - 0x3b04c6, - 0x200983, - 0x20ba02, - 0x2ea507, - 0xf942, - 0x26b005, - 0x3a9f45, - 0x201642, - 0x242b02, - 0x3b7a8a, - 0x2671ca, - 0x202c42, - 0x2e4744, + 0x11a83, + 0x297047, + 0x2beb05, + 0x20d842, + 0x239784, + 0x382842, + 0x2e3008, + 0x208e83, + 0x203488, + 0x203cc2, + 0x223b45, + 0x38dbc6, + 0x201a03, + 0x207082, + 0x2f0ac7, + 0xcb02, + 0x2797c5, + 0x358b85, + 0x209642, + 0x20fd02, + 0x2cf9ca, + 0x26eeca, + 0x21b9c2, + 0x2a4dc4, 0x2002c2, - 0x206888, - 0x201c82, - 0x30a848, - 0x2feb47, - 0x2ff649, - 0x26b082, - 0x305645, - 0x33bc85, - 0x22dd4b, - 0x2c6c4c, - 0x22e848, - 0x3188c8, - 0x22a282, - 0x35f782, - 0x205702, - 0x16d208, - 0x2099c2, - 0x2a84c3, - 0x20d882, - 0x200c82, + 0x3b4ec8, + 0x20d582, + 0x315b08, + 0x30ab47, + 0x30ba09, + 0x203442, + 0x310e45, + 0x3044c5, + 0x21770b, + 0x2d054c, + 0x237348, + 0x321b08, + 0x232ec2, + 0x208a02, + 0x207102, + 0x16fb88, + 0x20f882, + 0x238543, + 0x207b02, + 0x204d42, + 0xe03, 0x200442, - 0x200983, - 0x209842, - 0x205702, - 0x652099c2, - 0x656e9dc3, - 0x206343, - 0x202342, - 0x205503, - 0x375cc3, - 0x200983, - 0x2e87c3, - 0x275d46, - 0x1614843, - 0x16d208, - 0x192345, - 0xa6a8d, - 0xa4dca, - 0x65c87, - 0x65e011c2, - 0x66200242, - 0x66600ec2, - 0x66a00c02, - 0x66e0de02, - 0x67201ec2, - 0x16fc07, - 0x676099c2, - 0x67a301c2, - 0x67e09982, - 0x68200dc2, - 0x218983, - 0x9e04, - 0x225d83, - 0x686149c2, - 0x68a00182, - 0x49f47, - 0x68e03002, - 0x69202e42, - 0x69600b42, - 0x69a02bc2, - 0x69e029c2, - 0x6a201fc2, - 0xb3985, - 0x234543, - 0x202b84, - 0x6a6226c2, - 0x6aa03a82, - 0x6ae03202, - 0x16c90b, - 0x6b200e82, - 0x6ba49a02, - 0x6be02342, - 0x6c203d02, - 0x6c60f242, - 0x6ca0ec42, - 0x6ce0e602, - 0x6d2675c2, - 0x6d604642, - 0x6da01b42, - 0x6de00c82, - 0x6e2042c2, - 0x6e61c702, - 0x6ea00e42, - 0x7f1c4, - 0x350703, - 0x6ee33082, - 0x6f216982, - 0x6f603402, - 0x6fa089c2, - 0x6fe00442, - 0x702056c2, - 0x44107, - 0x70601302, - 0x70a07302, - 0x70e09842, - 0x71218942, - 0xf484c, - 0x71621c82, - 0x71a3ab02, - 0x71e11602, - 0x72201682, - 0x72601f82, - 0x72a34a82, - 0x72e00202, - 0x7320e8c2, - 0x736724c2, - 0x73a56642, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0xa203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x6b753903, - 0x20a203, - 0x2d6d44, - 0x25d446, - 0x2f1743, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x353903, - 0x20a203, - 0x219f02, - 0x219f02, - 0x353903, - 0x20a203, - 0x742a84c3, - 0x232403, - 0x37ac03, - 0x209703, - 0x205503, - 0x200983, - 0x16d208, - 0x2099c2, - 0x2a84c3, - 0x205503, - 0x200983, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x209703, - 0x205503, - 0x200983, - 0x2030c4, - 0x2099c2, - 0x2a84c3, - 0x2028c3, - 0x232403, - 0x249944, - 0x2163c3, - 0x2e9dc3, - 0x3b1384, - 0x244183, - 0x209703, - 0x205503, - 0x200983, - 0x23e743, - 0x373605, - 0x2a1fc3, - 0x25ed03, - 0x2099c2, - 0x2a84c3, - 0x353903, - 0x205503, - 0x200983, - 0x205702, - 0x38d2c3, - 0x16d208, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x22f706, - 0x3b1384, - 0x244183, - 0x211cc4, - 0x205503, - 0x200983, - 0x201303, - 0x2a84c3, - 0x232403, - 0x205503, - 0x200983, - 0x14bb147, - 0x2a84c3, - 0x1cdc6, - 0x232403, - 0x2e9dc3, - 0xdba46, - 0x205503, - 0x200983, - 0x3149c8, - 0x318709, - 0x328b89, - 0x333808, - 0x37dc48, - 0x37dc49, - 0x24318d, - 0x2ee80f, - 0x251490, - 0x34848d, - 0x3638cc, - 0x37f98b, - 0x98605, - 0x205702, - 0x33e6c5, + 0x201a03, + 0x20d2c2, + 0x207102, + 0x68a0f882, + 0x68f23043, + 0x211a83, + 0x204a82, + 0x208e83, + 0x391783, + 0x201a03, + 0x2ef783, + 0x37f186, + 0x1615443, + 0x16fb88, + 0x11205, + 0xae90d, + 0xacc8a, + 0x6e487, + 0x69601e02, + 0x69a00242, + 0x69e00bc2, + 0x6a200702, + 0x6a60b5c2, + 0x6aa01382, + 0x36dc7, + 0x6ae0f882, + 0x6b20c8c2, + 0x6b604842, + 0x6ba04c82, + 0x2213c3, + 0x18ec4, + 0x2298c3, + 0x6be1d882, + 0x6c200182, + 0x53c47, + 0x6c60a442, + 0x6ca00782, + 0x6ce01bc2, + 0x6d205e82, + 0x6d601c82, + 0x6da00942, + 0xc2845, + 0x23ef43, + 0x281a04, + 0x6de1f502, + 0x6e205242, + 0x6e603582, + 0x17d50b, + 0x6ea01fc2, + 0x6f253442, + 0x6f604a82, + 0x6fa0b302, + 0x6fe14702, + 0x70200802, + 0x70614642, + 0x70a745c2, + 0x70e0ea42, + 0x71204802, + 0x71604d42, + 0x71a03382, + 0x71e08682, + 0x7224d382, + 0x1a3284, + 0x35efc3, + 0x72604f82, + 0x72a10902, + 0x72e11542, + 0x73201f02, + 0x73600442, + 0x73a0cb42, + 0x15d647, + 0x73e04102, + 0x74204142, + 0x7460d2c2, + 0x74a21382, + 0x1ad70c, + 0x74e2a202, + 0x75245542, + 0x75605942, + 0x75a06442, + 0x75e0c402, + 0x76260982, + 0x76600202, + 0x76a16fc2, + 0x76e7d302, + 0x772610c2, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x12143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x6ef797c3, + 0x212143, + 0x332244, + 0x2f7046, + 0x2f9a03, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x244949, + 0x235f42, + 0x26c783, + 0x2bcec3, + 0x20fbc5, + 0x2020c3, + 0x3797c3, + 0x212143, + 0x20c0c3, + 0x248d43, + 0x242989, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x3797c3, + 0x212143, + 0x235f42, + 0x235f42, + 0x3797c3, + 0x212143, + 0x77a38543, + 0x23cac3, + 0x20a6c3, + 0x28cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x16fb88, + 0x20f882, + 0x238543, + 0x208e83, + 0x201a03, + 0x238543, + 0x23cac3, + 0x323043, + 0x28cac3, + 0x208e83, + 0xe03, + 0x201a03, + 0x252044, + 0x20f882, + 0x238543, + 0x345903, + 0x23cac3, + 0x253384, + 0x21b583, + 0x323043, + 0x231604, + 0x255783, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x20c843, + 0x355685, + 0x248d43, + 0x202443, + 0xe03, + 0x20f882, + 0x238543, + 0x3797c3, + 0x208e83, + 0x201a03, + 0x207102, + 0x39c783, + 0x16fb88, + 0x238543, + 0x23cac3, + 0x323043, + 0x23a1c6, + 0x231604, + 0x255783, + 0x21bf84, + 0x208e83, + 0x201a03, + 0x221483, + 0x238543, + 0x23cac3, + 0x208e83, + 0x201a03, + 0x1442047, + 0x238543, + 0x24386, + 0x23cac3, + 0x323043, + 0xe5586, + 0x208e83, + 0x201a03, + 0x31dc48, + 0x321949, + 0x330189, + 0x33bb08, + 0x38fb48, + 0x38fb49, + 0x24558d, + 0x24dd8f, + 0x2f53d0, + 0x35648d, + 0x37210c, + 0x39064b, + 0xba9c8, + 0xac605, + 0x207102, + 0x342b85, 0x200243, - 0x772099c2, - 0x232403, - 0x2e9dc3, - 0x343ec7, - 0x206a43, - 0x209703, - 0x205503, - 0x21c2c3, - 0x20dcc3, - 0x204e83, - 0x200983, - 0x2efec6, - 0x20b0c2, - 0x25ed03, - 0x16d208, - 0x205702, - 0x38d2c3, - 0x2099c2, - 0x2a84c3, - 0x232403, - 0x2e9dc3, - 0x3b1384, - 0x209703, - 0x205503, - 0x200983, - 0x214843, - 0x14f53c6, - 0x205702, - 0x2099c2, - 0x2e9dc3, - 0x209703, - 0x200983, + 0x7ae0f882, + 0x23cac3, + 0x323043, + 0x2d8c47, + 0x263a43, + 0x28cac3, + 0x208e83, + 0x21b543, + 0x217e03, + 0x200e03, + 0x201a03, + 0x3821c6, + 0x205082, + 0x202443, + 0x16fb88, + 0x207102, + 0x39c783, + 0x20f882, + 0x238543, + 0x23cac3, + 0x323043, + 0x231604, + 0x28cac3, + 0x208e83, + 0x201a03, + 0x215443, + 0x106904, + 0x15217c6, + 0x207102, + 0x20f882, + 0x323043, + 0x28cac3, + 0x201a03, } // children is the list of nodes' children, the parent's wildcard bit and the @@ -8770,453 +8921,422 @@ var children = [...]uint32{ 0x40000000, 0x50000000, 0x60000000, - 0x184c60d, - 0x1850613, - 0x1870614, - 0x19cc61c, - 0x19e0673, - 0x19f4678, - 0x1a0467d, - 0x1a20681, - 0x1a24688, - 0x1a3c689, - 0x1a6468f, - 0x1a68699, - 0x1a8069a, - 0x1a846a0, - 0x1a886a1, - 0x1ab06a2, + 0x186c615, + 0x187061b, + 0x189461c, + 0x19f0625, + 0x1a0467c, + 0x1a18681, + 0x1a2c686, + 0x1a4c68b, + 0x1a50693, + 0x1a68694, + 0x1a9069a, + 0x1a946a4, + 0x1aac6a5, + 0x1ab06ab, 0x1ab46ac, - 0x21abc6ad, - 0x1b046af, - 0x1b086c1, - 0x1b286c2, - 0x1b3c6ca, - 0x1b406cf, - 0x1b706d0, - 0x1b8c6dc, - 0x1bb46e3, - 0x1bc06ed, - 0x1bc46f0, - 0x1c5c6f1, - 0x1c70717, - 0x1c8471c, - 0x1cb4721, - 0x1cc472d, - 0x1cd8731, - 0x1cfc736, - 0x1e3473f, - 0x1e3878d, - 0x1ea478e, - 0x1f107a9, - 0x1f247c4, - 0x1f387c9, - 0x1f407ce, - 0x1f507d0, - 0x1f547d4, - 0x1f6c7d5, - 0x1fb87db, - 0x1fd47ee, - 0x1fd87f5, - 0x1fdc7f6, - 0x1fe87f7, - 0x20247fa, - 0x62028809, - 0x203c80a, - 0x205080f, - 0x2054814, - 0x2064815, - 0x2114819, - 0x2118845, - 0x22124846, - 0x2212c849, - 0x216484b, - 0x2168859, - 0x25b885a, - 0x2265896e, - 0x2265c996, - 0x22660997, - 0x2266c998, - 0x2267099b, - 0x2267c99c, - 0x2268099f, - 0x226849a0, - 0x226889a1, - 0x2268c9a2, - 0x226909a3, - 0x2269c9a4, - 0x226a09a7, - 0x226ac9a8, - 0x226b09ab, - 0x226b49ac, - 0x226b89ad, - 0x226c49ae, - 0x226c89b1, - 0x226cc9b2, - 0x226d09b3, - 0x26d49b4, - 0x226d89b5, - 0x226e49b6, - 0x226e89b9, - 0x26f09ba, - 0x227089bc, - 0x2270c9c2, - 0x27189c3, - 0x2271c9c6, - 0x27209c7, + 0x1af06ad, + 0x1af46bc, + 0x21afc6bd, + 0x1b446bf, + 0x1b486d1, + 0x1b686d2, + 0x1b7c6da, + 0x1b806df, + 0x1bb06e0, + 0x1bcc6ec, + 0x1bf46f3, + 0x1c006fd, + 0x1c04700, + 0x1c9c701, + 0x1cb0727, + 0x1cc472c, + 0x1cf4731, + 0x1d0473d, + 0x1d18741, + 0x1d3c746, + 0x1e7474f, + 0x1e7879d, + 0x1ee479e, + 0x1f507b9, + 0x1f687d4, + 0x1f7c7da, + 0x1f847df, + 0x1f987e1, + 0x1f9c7e6, + 0x1fb87e7, + 0x20047ee, + 0x2020801, + 0x2024808, + 0x2028809, + 0x204480a, + 0x2080811, + 0x62084820, + 0x209c821, + 0x20b4827, + 0x20b882d, + 0x20c882e, + 0x2178832, + 0x217c85e, + 0x2218c85f, + 0x22190863, + 0x22194864, + 0x21cc865, + 0x21d0873, + 0x2658874, + 0x226f8996, + 0x226fc9be, + 0x227009bf, + 0x2270c9c0, + 0x227109c3, + 0x2271c9c4, + 0x227209c7, 0x227249c8, - 0x27409c9, - 0x27589d0, - 0x275c9d6, - 0x276c9d7, - 0x27749db, - 0x27a89dd, - 0x27ac9ea, - 0x27bc9eb, - 0x28609ef, - 0x22864a18, - 0x286ca19, - 0x2870a1b, - 0x2888a1c, - 0x289ca22, - 0x28c4a27, - 0x28e4a31, - 0x2914a39, - 0x293ca45, - 0x2940a4f, - 0x2964a50, - 0x2968a59, - 0x297ca5a, - 0x2980a5f, - 0x2984a60, - 0x29a4a61, - 0x29c0a69, - 0x29c4a70, - 0x229c8a71, - 0x29cca72, - 0x29d0a73, - 0x29e0a74, - 0x29e4a78, - 0x2a5ca79, - 0x2a78a97, - 0x2a88a9e, - 0x2a9caa2, - 0x2ab4aa7, - 0x2ac8aad, - 0x2ae0ab2, - 0x2ae4ab8, - 0x2afcab9, - 0x2b14abf, - 0x2b30ac5, - 0x2b48acc, - 0x2ba8ad2, + 0x227289c9, + 0x2272c9ca, + 0x227309cb, + 0x2273c9cc, + 0x227409cf, + 0x2274c9d0, + 0x227509d3, + 0x227549d4, + 0x227589d5, + 0x227649d6, + 0x227689d9, + 0x2276c9da, + 0x227709db, + 0x27749dc, + 0x227789dd, + 0x227849de, + 0x227889e1, + 0x27909e2, + 0x27cc9e4, + 0x227ec9f3, + 0x227f09fb, + 0x227f49fc, + 0x27f89fd, + 0x227fc9fe, + 0x28009ff, + 0x281ca00, + 0x2834a07, + 0x2838a0d, + 0x2848a0e, + 0x2854a12, + 0x2888a15, + 0x288ca22, + 0x28a0a23, + 0x228a8a28, + 0x2968a2a, + 0x2296ca5a, + 0x2974a5b, + 0x2978a5d, + 0x2990a5e, + 0x29a4a64, + 0x29cca69, + 0x29eca73, + 0x2a1ca7b, + 0x2a44a87, + 0x2a48a91, + 0x2a6ca92, + 0x2a70a9b, + 0x2a84a9c, + 0x2a88aa1, + 0x2a8caa2, + 0x2aacaa3, + 0x2ac8aab, + 0x2accab2, + 0x22ad0ab3, + 0x2ad4ab4, + 0x2ad8ab5, + 0x2ae8ab6, + 0x2aecaba, + 0x2b64abb, + 0x2b68ad9, + 0x2b84ada, + 0x2b94ae1, + 0x2ba8ae5, 0x2bc0aea, - 0x2bc4af0, - 0x2bd8af1, - 0x2c1caf6, - 0x2c9cb07, - 0x2cc8b27, - 0x2cccb32, - 0x2cd4b33, - 0x2cf4b35, - 0x2cf8b3d, - 0x2d18b3e, - 0x2d20b46, - 0x2d5cb48, - 0x2d9cb57, - 0x2da0b67, - 0x2e00b68, - 0x2e04b80, - 0x22e08b81, - 0x2e20b82, - 0x2e44b88, - 0x2e64b91, - 0x3428b99, - 0x3434d0a, - 0x3454d0d, - 0x3610d15, - 0x36e0d84, - 0x3750db8, - 0x37a8dd4, - 0x3890dea, - 0x38e8e24, - 0x3924e3a, - 0x3a20e49, - 0x3aece88, - 0x3b84ebb, - 0x3c14ee1, - 0x3c78f05, - 0x3eb0f1e, - 0x3f68fac, - 0x4034fda, - 0x408100d, - 0x4109020, - 0x4145042, - 0x4195051, - 0x420d065, - 0x64211083, - 0x64215084, - 0x64219085, - 0x4295086, - 0x42f10a5, - 0x436d0bc, - 0x43e50db, - 0x44650f9, - 0x44d1119, - 0x45fd134, - 0x465517f, - 0x64659195, - 0x46f1196, - 0x47791bc, - 0x47c51de, - 0x482d1f1, - 0x48d520b, - 0x499d235, - 0x4a05267, - 0x4b19281, - 0x64b1d2c6, - 0x64b212c7, - 0x4b7d2c8, - 0x4bd92df, - 0x4c692f6, - 0x4ce531a, - 0x4d29339, - 0x4e0d34a, - 0x4e41383, - 0x4ea1390, - 0x4f153a8, - 0x4f9d3c5, - 0x4fdd3e7, - 0x504d3f7, - 0x65051413, - 0x65055414, - 0x25059415, - 0x5071416, - 0x508d41c, - 0x50d1423, - 0x50e1434, - 0x50f9438, - 0x517143e, - 0x517945c, - 0x518d45e, - 0x51a5463, - 0x51cd469, - 0x51d1473, - 0x51d9474, - 0x51ed476, - 0x520947b, - 0x520d482, - 0x5215483, - 0x5251485, - 0x5265494, - 0x526d499, - 0x527549b, - 0x527949d, - 0x529d49e, - 0x52c14a7, - 0x52d94b0, - 0x52dd4b6, - 0x52e54b7, - 0x52e94b9, - 0x534d4ba, - 0x53514d3, - 0x53754d4, - 0x53954dd, - 0x53b14e5, - 0x53c14ec, - 0x53d54f0, - 0x53d94f5, - 0x53e14f6, - 0x53f54f8, - 0x54054fd, - 0x5409501, - 0x5425502, - 0x5cb5509, - 0x5ced72d, - 0x5d1973b, - 0x5d31746, - 0x5d5174c, - 0x5d71754, - 0x5db575c, - 0x5dbd76d, - 0x25dc176f, - 0x25dc5770, - 0x5dcd771, - 0x5f29773, - 0x25f2d7ca, - 0x25f3d7cb, - 0x25f457cf, - 0x25f517d1, - 0x5f557d4, - 0x5f597d5, - 0x5f817d6, - 0x5fa97e0, - 0x5fad7ea, - 0x5fe57eb, - 0x5ff97f9, - 0x6b517fe, - 0x6b55ad4, - 0x6b59ad5, - 0x26b5dad6, - 0x6b61ad7, - 0x26b65ad8, - 0x6b69ad9, - 0x26b75ada, - 0x6b79add, - 0x6b7dade, - 0x26b81adf, - 0x6b85ae0, - 0x26b8dae1, - 0x6b91ae3, - 0x6b95ae4, - 0x26ba5ae5, - 0x6ba9ae9, - 0x6badaea, - 0x6bb1aeb, - 0x6bb5aec, - 0x26bb9aed, - 0x6bbdaee, - 0x6bc1aef, - 0x6bc5af0, - 0x6bc9af1, - 0x26bd1af2, - 0x6bd5af4, - 0x6bd9af5, - 0x6bddaf6, - 0x26be1af7, - 0x6be5af8, - 0x26bedaf9, - 0x26bf1afb, - 0x6c0dafc, - 0x6c19b03, - 0x6c59b06, - 0x6c5db16, - 0x6c81b17, - 0x6c85b20, - 0x6c89b21, - 0x6e01b22, - 0x26e05b80, - 0x26e0db81, - 0x26e11b83, - 0x26e15b84, - 0x6e1db85, - 0x6ef9b87, - 0x26efdbbe, - 0x6f01bbf, - 0x6f2dbc0, - 0x6f31bcb, - 0x6f51bcc, - 0x6f5dbd4, - 0x6f7dbd7, - 0x6fb5bdf, - 0x724dbed, - 0x7309c93, - 0x731dcc2, - 0x7351cc7, - 0x7381cd4, - 0x739dce0, - 0x73c1ce7, - 0x73ddcf0, - 0x73f9cf7, - 0x741dcfe, - 0x742dd07, - 0x7431d0b, - 0x7465d0c, - 0x7481d19, - 0x74edd20, - 0x274f1d3b, - 0x7515d3c, - 0x7535d45, - 0x7549d4d, - 0x755dd52, - 0x7561d57, - 0x7581d58, - 0x7625d60, - 0x7641d89, - 0x7661d90, - 0x7665d98, - 0x766dd99, - 0x7671d9b, - 0x7685d9c, - 0x76a5da1, - 0x76b1da9, - 0x76bddac, - 0x76eddaf, - 0x77bddbb, - 0x77c1def, - 0x77d5df0, - 0x77d9df5, - 0x77f1df6, - 0x77f5dfc, - 0x7801dfd, - 0x7805e00, - 0x7821e01, - 0x785de08, - 0x7861e17, - 0x7881e18, - 0x78d1e20, - 0x78ede34, - 0x7941e3b, - 0x7945e50, - 0x7949e51, - 0x794de52, - 0x7991e53, - 0x79a1e64, - 0x79dde68, - 0x79e1e77, - 0x7a11e78, - 0x7b59e84, - 0x7b7ded6, - 0x7ba9edf, - 0x7bb5eea, - 0x7bbdeed, - 0x7ccdeef, - 0x7cd9f33, - 0x7ce5f36, - 0x7cf1f39, - 0x7cfdf3c, - 0x7d09f3f, - 0x7d15f42, - 0x7d21f45, - 0x7d2df48, - 0x7d39f4b, - 0x7d45f4e, - 0x7d51f51, - 0x7d5df54, - 0x7d69f57, - 0x7d71f5a, - 0x7d7df5c, - 0x7d89f5f, - 0x7d95f62, - 0x7da1f65, - 0x7dadf68, - 0x7db9f6b, + 0x2bd8af0, + 0x2bf0af6, + 0x2bf4afc, + 0x2c0cafd, + 0x2c28b03, + 0x2c48b0a, + 0x2c60b12, + 0x2cc0b18, + 0x2cdcb30, + 0x2ce4b37, + 0x2ce8b39, + 0x2cfcb3a, + 0x2d40b3f, + 0x2dc0b50, + 0x2decb70, + 0x2df0b7b, + 0x2df8b7c, + 0x2e18b7e, + 0x2e1cb86, + 0x2e40b87, + 0x2e48b90, + 0x2e84b92, + 0x2ec8ba1, + 0x2eccbb2, + 0x2f34bb3, + 0x2f38bcd, + 0x22f3cbce, + 0x22f40bcf, + 0x22f50bd0, + 0x22f54bd4, + 0x22f58bd5, + 0x22f5cbd6, + 0x22f60bd7, + 0x2f78bd8, + 0x2f9cbde, + 0x2fbcbe7, + 0x3580bef, + 0x358cd60, + 0x35acd63, + 0x3768d6b, + 0x3838dda, + 0x38a8e0e, + 0x3900e2a, + 0x39e8e40, + 0x3a40e7a, + 0x3a7ce90, + 0x3b78e9f, + 0x3c44ede, + 0x3cdcf11, + 0x3d6cf37, + 0x3dd0f5b, + 0x4008f74, + 0x40c1002, + 0x418d030, + 0x41d9063, + 0x4261076, + 0x429d098, + 0x42ed0a7, + 0x43650bb, + 0x643690d9, + 0x6436d0da, + 0x643710db, + 0x43ed0dc, + 0x44490fb, + 0x44c5112, + 0x453d131, + 0x45bd14f, + 0x462916f, + 0x475518a, + 0x47ad1d5, + 0x647b11eb, + 0x48491ec, + 0x48d1212, + 0x491d234, + 0x4985247, + 0x4a2d261, + 0x4af528b, + 0x4b5d2bd, + 0x4c712d7, + 0x64c7531c, + 0x64c7931d, + 0x4cd531e, + 0x4d31335, + 0x4dc134c, + 0x4e3d370, + 0x4e8138f, + 0x4f653a0, + 0x4f993d9, + 0x4ff93e6, + 0x506d3fe, + 0x50f541b, + 0x513543d, + 0x51a544d, + 0x651a9469, + 0x651ad46a, + 0x251b146b, + 0x51c946c, + 0x51e5472, + 0x5229479, + 0x523948a, + 0x525148e, + 0x52c9494, + 0x52d14b2, + 0x52e54b4, + 0x53014b9, + 0x532d4c0, + 0x53314cb, + 0x53394cc, + 0x534d4ce, + 0x53694d3, + 0x53754da, + 0x537d4dd, + 0x53b94df, + 0x53cd4ee, + 0x53d54f3, + 0x53e14f5, + 0x53e94f8, + 0x540d4fa, + 0x5431503, + 0x544950c, + 0x544d512, + 0x5455513, + 0x5459515, + 0x54c1516, + 0x54c5530, + 0x54e9531, + 0x550d53a, + 0x5529543, + 0x553954a, + 0x554d54e, + 0x5551553, + 0x5559554, + 0x556d556, + 0x557d55b, + 0x558155f, + 0x559d560, + 0x5e2d567, + 0x5e6578b, + 0x5e91799, + 0x5ead7a4, + 0x5ecd7ab, + 0x5eed7b3, + 0x5f317bb, + 0x5f397cc, + 0x25f3d7ce, + 0x25f417cf, + 0x5f497d0, + 0x60c17d2, + 0x260c5830, + 0x260d5831, + 0x260dd835, + 0x260e9837, + 0x60ed83a, + 0x60f183b, + 0x611983c, + 0x6141846, + 0x6145850, + 0x617d851, + 0x619985f, + 0x6cf1866, + 0x6cf5b3c, + 0x6cf9b3d, + 0x26cfdb3e, + 0x6d01b3f, + 0x26d05b40, + 0x6d09b41, + 0x26d15b42, + 0x6d19b45, + 0x6d1db46, + 0x26d21b47, + 0x6d25b48, + 0x26d2db49, + 0x6d31b4b, + 0x6d35b4c, + 0x26d45b4d, + 0x6d49b51, + 0x6d4db52, + 0x6d51b53, + 0x6d55b54, + 0x26d59b55, + 0x6d5db56, + 0x6d61b57, + 0x6d65b58, + 0x6d69b59, + 0x26d71b5a, + 0x6d75b5c, + 0x6d79b5d, + 0x6d7db5e, + 0x26d81b5f, + 0x6d85b60, + 0x26d8db61, + 0x26d91b63, + 0x6dadb64, + 0x6dbdb6b, + 0x6e01b6f, + 0x6e05b80, + 0x6e29b81, + 0x6e2db8a, + 0x6e31b8b, + 0x6fbdb8c, + 0x26fc1bef, + 0x26fc9bf0, + 0x26fcdbf2, + 0x26fd1bf3, + 0x6fd9bf4, + 0x70b5bf6, + 0x270b9c2d, + 0x70bdc2e, + 0x70e9c2f, + 0x70edc3a, + 0x7111c3b, + 0x711dc44, + 0x713dc47, + 0x7141c4f, + 0x7179c50, + 0x7411c5e, + 0x74cdd04, + 0x74e1d33, + 0x7515d38, + 0x7545d45, + 0x7561d51, + 0x7589d58, + 0x75a9d62, + 0x75c5d6a, + 0x75edd71, + 0x75fdd7b, + 0x7601d7f, + 0x7605d80, + 0x7639d81, + 0x7645d8e, + 0x7665d91, + 0x76ddd99, + 0x276e1db7, + 0x7705db8, + 0x7725dc1, + 0x7739dc9, + 0x774ddce, + 0x7751dd3, + 0x7771dd4, + 0x7815ddc, + 0x7831e05, + 0x7855e0c, + 0x785de15, + 0x7869e17, + 0x7871e1a, + 0x7885e1c, + 0x78a5e21, + 0x78b1e29, + 0x78bde2c, + 0x78ede2f, + 0x79c1e3b, + 0x79c5e70, + 0x79d9e71, + 0x79e1e76, + 0x79f9e78, + 0x79fde7e, + 0x7a09e7f, + 0x7a0de82, + 0x7a29e83, + 0x7a65e8a, + 0x7a69e99, + 0x7a89e9a, + 0x7ad9ea2, + 0x7af5eb6, + 0x7b49ebd, + 0x7b4ded2, + 0x7b51ed3, + 0x7b55ed4, + 0x7b99ed5, + 0x7ba9ee6, + 0x7be9eea, + 0x7bedefa, + 0x7c1defb, + 0x7d65f07, + 0x7d8df59, + 0x7db9f63, 0x7dc5f6e, - 0x7dd1f71, - 0x7dddf74, - 0x7de9f77, - 0x7df5f7a, - 0x7e01f7d, - 0x7e0df80, - 0x7e19f83, - 0x7e25f86, - 0x7e31f89, - 0x7e3df8c, - 0x7e45f8f, - 0x7e51f91, - 0x7e5df94, - 0x7e69f97, - 0x7e75f9a, - 0x7e81f9d, - 0x7e8dfa0, - 0x7e99fa3, - 0x7ea5fa6, - 0x7eb1fa9, - 0x7ebdfac, - 0x7ec9faf, - 0x7ed5fb2, - 0x7ee1fb5, - 0x7ee9fb8, + 0x7dcdf71, + 0x7eddf73, + 0x7ee9fb7, 0x7ef5fba, 0x7f01fbd, 0x7f0dfc0, @@ -9225,29 +9345,75 @@ var children = [...]uint32{ 0x7f31fc9, 0x7f3dfcc, 0x7f49fcf, - 0x7f4dfd2, - 0x7f59fd3, - 0x7f71fd6, - 0x7f75fdc, - 0x7f85fdd, - 0x7f9dfe1, - 0x7fe1fe7, - 0x7ff5ff8, - 0x8029ffd, - 0x803a00a, - 0x805a00e, - 0x8072016, - 0x808a01c, - 0x808e022, - 0x280d2023, - 0x80d6034, - 0x8102035, - 0x8106040, - 0x811a041, + 0x7f55fd2, + 0x7f61fd5, + 0x7f6dfd8, + 0x7f79fdb, + 0x7f81fde, + 0x7f8dfe0, + 0x7f99fe3, + 0x7fa5fe6, + 0x7fb1fe9, + 0x7fbdfec, + 0x7fc9fef, + 0x7fd5ff2, + 0x7fe1ff5, + 0x7fedff8, + 0x7ff9ffb, + 0x8005ffe, + 0x8032001, + 0x803e00c, + 0x804a00f, + 0x8056012, + 0x8062015, + 0x806e018, + 0x807601b, + 0x808201d, + 0x808e020, + 0x809a023, + 0x80a6026, + 0x80b2029, + 0x80be02c, + 0x80ca02f, + 0x80d6032, + 0x80e2035, + 0x80ee038, + 0x80fa03b, + 0x810603e, + 0x8112041, + 0x811a044, + 0x8126046, + 0x8132049, + 0x813e04c, + 0x814a04f, + 0x8156052, + 0x8162055, + 0x816e058, + 0x817a05b, + 0x817e05e, + 0x818a05f, + 0x81a6062, + 0x81aa069, + 0x81ba06a, + 0x81d606e, + 0x821a075, + 0x821e086, + 0x8232087, + 0x826608c, + 0x8276099, + 0x829609d, + 0x82ae0a5, + 0x82c60ab, + 0x82ce0b1, + 0x283120b3, + 0x83160c4, + 0x83420c5, + 0x834a0d0, + 0x835e0d2, } -// max children 479 (capacity 511) -// max text offset 28411 (capacity 32767) +// max children 494 (capacity 1023) +// max text offset 28750 (capacity 32767) // max text length 36 (capacity 63) -// max hi 8262 (capacity 16383) -// max lo 8257 (capacity 16383) +// max hi 8407 (capacity 16383) +// max lo 8402 (capacity 16383) diff --git a/vendor/golang.org/x/net/publicsuffix/table_test.go b/vendor/golang.org/x/net/publicsuffix/table_test.go index 416512cb9..62610185b 100644 --- a/vendor/golang.org/x/net/publicsuffix/table_test.go +++ b/vendor/golang.org/x/net/publicsuffix/table_test.go @@ -5778,6 +5778,14 @@ var rules = [...]string{ "pvt.k12.ma.us", "chtr.k12.ma.us", "paroch.k12.ma.us", + "ann-arbor.mi.us", + "cog.mi.us", + "dst.mi.us", + "eaton.mi.us", + "gen.mi.us", + "mus.mi.us", + "tec.mi.us", + "washtenaw.mi.us", "uy", "com.uy", "edu.uy", @@ -5852,6 +5860,7 @@ var rules = [...]string{ "xn--mgbaam7a8h", "xn--y9a3aq", "xn--54b7fta0cc", + "xn--90ae", "xn--90ais", "xn--fiqs8s", "xn--fiqz9s", @@ -5861,6 +5870,13 @@ var rules = [...]string{ "xn--node", "xn--qxam", "xn--j6w193g", + "xn--2scrj9c", + "xn--3hcrj9c", + "xn--45br5cyl", + "xn--h2breg3eve", + "xn--h2brj9c8c", + "xn--mgbgu82a", + "xn--rvc1e0am3e", "xn--h2brj9c", "xn--mgbbh1a71e", "xn--fpcrj9c3d", @@ -7188,8 +7204,23 @@ var rules = [...]string{ "*.compute-1.amazonaws.com", "*.compute.amazonaws.com.cn", "us-east-1.amazonaws.com", - "elasticbeanstalk.cn-north-1.amazonaws.com.cn", - "*.elasticbeanstalk.com", + "cn-north-1.eb.amazonaws.com.cn", + "elasticbeanstalk.com", + "ap-northeast-1.elasticbeanstalk.com", + "ap-northeast-2.elasticbeanstalk.com", + "ap-south-1.elasticbeanstalk.com", + "ap-southeast-1.elasticbeanstalk.com", + "ap-southeast-2.elasticbeanstalk.com", + "ca-central-1.elasticbeanstalk.com", + "eu-central-1.elasticbeanstalk.com", + "eu-west-1.elasticbeanstalk.com", + "eu-west-2.elasticbeanstalk.com", + "sa-east-1.elasticbeanstalk.com", + "us-east-1.elasticbeanstalk.com", + "us-east-2.elasticbeanstalk.com", + "us-gov-west-1.elasticbeanstalk.com", + "us-west-1.elasticbeanstalk.com", + "us-west-2.elasticbeanstalk.com", "*.elb.amazonaws.com", "*.elb.amazonaws.com.cn", "s3.amazonaws.com", @@ -7257,6 +7288,7 @@ var rules = [...]string{ "backplaneapp.io", "betainabox.com", "bnr.la", + "boomla.net", "boxfuse.io", "square7.ch", "bplaced.com", @@ -7304,6 +7336,11 @@ var rules = [...]string{ "xenapponazure.com", "virtueeldomein.nl", "c66.me", + "jdevcloud.com", + "wpdevcloud.com", + "cloudaccess.host", + "freesite.host", + "cloudaccess.net", "cloudcontrolled.com", "cloudcontrolapp.com", "co.ca", @@ -7347,8 +7384,10 @@ var rules = [...]string{ "firm.dk", "reg.dk", "store.dk", + "debian.net", "dedyn.io", "dnshome.de", + "drayddns.com", "dreamhosters.com", "mydrobo.com", "drud.io", @@ -7646,8 +7685,26 @@ var rules = [...]string{ "ddnss.org", "definima.net", "definima.io", + "ddnsfree.com", + "ddnsgeek.com", + "giize.com", + "gleeze.com", + "kozow.com", + "loseyourip.com", + "ooguy.com", + "theworkpc.com", + "casacam.net", + "dynu.net", + "accesscam.org", + "camdvr.org", + "freeddns.org", + "mywire.org", + "webredirect.org", + "myddns.rocks", + "blogsite.xyz", "dynv6.net", "e4.cz", + "mytuleap.com", "enonic.io", "customer.enonic.io", "eu.org", @@ -7709,9 +7766,11 @@ var rules = [...]string{ "eu-1.evennode.com", "eu-2.evennode.com", "eu-3.evennode.com", + "eu-4.evennode.com", "us-1.evennode.com", "us-2.evennode.com", "us-3.evennode.com", + "us-4.evennode.com", "twmail.cc", "twmail.net", "twmail.org", @@ -7790,6 +7849,7 @@ var rules = [...]string{ "vladikavkaz.su", "vladimir.su", "vologda.su", + "channelsdvr.net", "fastlylb.net", "map.fastlylb.net", "freetls.fastly.net", @@ -7806,6 +7866,7 @@ var rules = [...]string{ "filegear.me", "firebaseapp.com", "flynnhub.com", + "flynnhosting.net", "freebox-os.com", "freeboxos.com", "fbx-os.fr", @@ -7813,6 +7874,7 @@ var rules = [...]string{ "freebox-os.fr", "freeboxos.fr", "myfusion.cloud", + "*.futurecms.at", "futurehosting.at", "futuremailing.at", "*.ex.ortsinfo.at", @@ -7821,11 +7883,6 @@ var rules = [...]string{ "service.gov.uk", "github.io", "githubusercontent.com", - "githubcloud.com", - "*.api.githubcloud.com", - "*.ext.githubcloud.com", - "gist.githubcloud.com", - "*.githubcloudusercontent.com", "gitlab.io", "homeoffice.gov.uk", "ro.im", @@ -7925,6 +7982,7 @@ var rules = [...]string{ "iki.fi", "biz.at", "info.at", + "info.cx", "ac.leg.br", "al.leg.br", "am.leg.br", @@ -7952,6 +8010,7 @@ var rules = [...]string{ "se.leg.br", "sp.leg.br", "to.leg.br", + "pixolino.com", "ipifony.net", "*.triton.zone", "*.cns.joyent.com", @@ -7960,6 +8019,10 @@ var rules = [...]string{ "knightpoint.systems", "co.krd", "edu.krd", + "git-repos.de", + "lcube-server.de", + "svn-repos.de", + "we.bs", "barsy.bg", "barsyonline.com", "barsy.de", @@ -7970,6 +8033,8 @@ var rules = [...]string{ "barsy.support", "*.magentosite.cloud", "hb.cldmail.ru", + "cloud.metacentrum.cz", + "custom.metacentrum.cz", "meteorapp.com", "eu.meteorapp.com", "co.pl", @@ -7977,6 +8042,11 @@ var rules = [...]string{ "azure-mobile.net", "cloudapp.net", "bmoattachments.org", + "net.ru", + "org.ru", + "pp.ru", + "bitballoon.com", + "netlify.com", "4u.com", "ngrok.io", "nfshost.com", @@ -8067,9 +8137,47 @@ var rules = [...]string{ "sytes.net", "webhop.me", "zapto.org", + "stage.nodeart.io", "nodum.co", "nodum.io", "nyc.mn", + "nom.ae", + "nom.ai", + "nom.al", + "nym.by", + "nym.bz", + "nom.cl", + "nom.gd", + "nom.gl", + "nym.gr", + "nom.gt", + "nom.hn", + "nom.im", + "nym.kz", + "nym.la", + "nom.li", + "nym.li", + "nym.lt", + "nym.lu", + "nym.me", + "nom.mk", + "nym.mx", + "nom.nu", + "nym.nz", + "nym.pe", + "nym.pt", + "nom.pw", + "nom.qa", + "nom.rs", + "nom.si", + "nym.sk", + "nym.su", + "nym.sx", + "nym.tw", + "nom.ug", + "nom.uy", + "nom.vc", + "nom.vg", "cya.gg", "nid.io", "opencraft.hosting", @@ -8095,6 +8203,7 @@ var rules = [...]string{ "priv.at", "protonet.io", "chirurgiens-dentistes-en-france.fr", + "byen.site", "qa2.com", "dev-myqnapcloud.com", "alpha-myqnapcloud.com", @@ -8144,6 +8253,7 @@ var rules = [...]string{ "spacekit.io", "stackspace.space", "storj.farm", + "temp-dns.com", "diskstation.me", "dscloud.biz", "dscloud.me", @@ -8164,8 +8274,31 @@ var rules = [...]string{ "gdynia.pl", "med.pl", "sopot.pl", + "cust.dev.thingdust.io", + "cust.disrec.thingdust.io", + "cust.prod.thingdust.io", + "cust.testing.thingdust.io", "bloxcms.com", "townnews-staging.com", + "12hp.at", + "2ix.at", + "4lima.at", + "lima-city.at", + "12hp.ch", + "2ix.ch", + "4lima.ch", + "lima-city.ch", + "trafficplex.cloud", + "de.cool", + "12hp.de", + "2ix.de", + "4lima.de", + "lima-city.de", + "1337.pictures", + "clan.rip", + "lima-city.rocks", + "webspace.rocks", + "lima.zone", "*.transurl.be", "*.transurl.eu", "*.transurl.nl", @@ -8190,10 +8323,14 @@ var rules = [...]string{ "inc.hk", "lib.de.us", "router.management", + "v-info.info", "wedeploy.io", "wedeploy.me", + "wedeploy.sh", "remotewd.com", "wmflabs.org", + "cistron.nl", + "demon.nl", "xs4all.space", "yolasite.com", "ybo.faith", @@ -9586,13 +9723,16 @@ var nodeLabels = [...]string{ "xn--11b4c3d", "xn--1ck2e1b", "xn--1qqw23a", + "xn--2scrj9c", "xn--30rr7y", "xn--3bst00m", "xn--3ds443g", "xn--3e0b707e", + "xn--3hcrj9c", "xn--3oq18vl8pn36a", "xn--3pxu8k", "xn--42c2d9a", + "xn--45br5cyl", "xn--45brj9c", "xn--45q11c", "xn--4gbrim", @@ -9610,6 +9750,7 @@ var nodeLabels = [...]string{ "xn--80aswg", "xn--8y0a063a", "xn--90a3ac", + "xn--90ae", "xn--90ais", "xn--9dbq2a", "xn--9et52u", @@ -9645,7 +9786,9 @@ var nodeLabels = [...]string{ "xn--gckr3f0f", "xn--gecrj9c", "xn--gk3at1e", + "xn--h2breg3eve", "xn--h2brj9c", + "xn--h2brj9c8c", "xn--hxt814e", "xn--i1b6b1a6a2e", "xn--imr513n", @@ -9680,6 +9823,7 @@ var nodeLabels = [...]string{ "xn--mgbca7dzdo", "xn--mgberp4a5d4a87g", "xn--mgberp4a5d4ar", + "xn--mgbgu82a", "xn--mgbi4ecexp", "xn--mgbpl2fh", "xn--mgbqly7c0a67fbc", @@ -9712,6 +9856,7 @@ var nodeLabels = [...]string{ "xn--qxam", "xn--rhqv96g", "xn--rovu88b", + "xn--rvc1e0am3e", "xn--s9brj9c", "xn--ses554g", "xn--t60b56a", @@ -9771,6 +9916,7 @@ var nodeLabels = [...]string{ "gov", "mil", "net", + "nom", "org", "sch", "accident-investigation", @@ -9872,6 +10018,7 @@ var nodeLabels = [...]string{ "org", "com", "net", + "nom", "off", "org", "blogspot", @@ -9880,6 +10027,7 @@ var nodeLabels = [...]string{ "gov", "mil", "net", + "nom", "org", "blogspot", "co", @@ -9907,13 +10055,18 @@ var nodeLabels = [...]string{ "urn", "gov", "cloudns", + "12hp", + "2ix", + "4lima", "ac", "biz", "co", + "futurecms", "futurehosting", "futuremailing", "gv", "info", + "lima-city", "or", "ortsinfo", "priv", @@ -10202,6 +10355,7 @@ var nodeLabels = [...]string{ "gov", "net", "org", + "we", "com", "edu", "gov", @@ -10212,12 +10366,14 @@ var nodeLabels = [...]string{ "com", "gov", "mil", + "nym", "of", "blogspot", "com", "edu", "gov", "net", + "nym", "org", "za", "ab", @@ -10248,8 +10404,12 @@ var nodeLabels = [...]string{ "twmail", "gov", "blogspot", + "12hp", + "2ix", + "4lima", "blogspot", "gotdns", + "lima-city", "square7", "ac", "asso", @@ -10272,10 +10432,12 @@ var nodeLabels = [...]string{ "gob", "gov", "mil", + "nom", "magentosite", "myfusion", "sensiosite", "statics", + "trafficplex", "vapor", "cloudns", "co", @@ -10329,9 +10491,10 @@ var nodeLabels = [...]string{ "amazonaws", "cn-north-1", "compute", + "eb", "elb", - "elasticbeanstalk", "s3", + "cn-north-1", "arts", "com", "edu", @@ -10360,6 +10523,7 @@ var nodeLabels = [...]string{ "ar", "barsyonline", "betainabox", + "bitballoon", "blogdns", "blogspot", "blogsyte", @@ -10375,6 +10539,8 @@ var nodeLabels = [...]string{ "co", "codespot", "damnserver", + "ddnsfree", + "ddnsgeek", "ddnsking", "de", "dev-myqnapcloud", @@ -10385,6 +10551,7 @@ var nodeLabels = [...]string{ "doesntexist", "dontexist", "doomdns", + "drayddns", "dreamhosters", "dsmynas", "dyn-o-saur", @@ -10468,9 +10635,9 @@ var nodeLabels = [...]string{ "gb", "geekgalaxy", "getmyip", - "githubcloud", - "githubcloudusercontent", + "giize", "githubusercontent", + "gleeze", "googleapis", "googlecode", "gotdns", @@ -10545,12 +10712,15 @@ var nodeLabels = [...]string{ "isa-geek", "isa-hockeynut", "issmarterthanyou", + "jdevcloud", "joyent", "jpn", + "kozow", "kr", "likes-pie", "likescandy", "logoip", + "loseyourip", "meteorapp", "mex", "myactivedirectory", @@ -10559,19 +10729,23 @@ var nodeLabels = [...]string{ "myqnapcloud", "mysecuritycamera", "myshopblocks", + "mytuleap", "myvnc", "neat-url", "net-freaks", + "netlify", "nfshost", "no", "on-aptible", "onthewifi", + "ooguy", "operaunite", "outsystemscloud", "ownprovider", "pagefrontapp", "pagespeedmobilizer", "pgfog", + "pixolino", "point2this", "prgmr", "publishproxy", @@ -10610,6 +10784,8 @@ var nodeLabels = [...]string{ "space-to-rent", "stufftoread", "teaches-yoga", + "temp-dns", + "theworkpc", "townnews-staging", "uk", "unusualperson", @@ -10619,6 +10795,7 @@ var nodeLabels = [...]string{ "withgoogle", "withyoutube", "workisboring", + "wpdevcloud", "writesthisblog", "xenapponazure", "yolasite", @@ -10701,19 +10878,34 @@ var nodeLabels = [...]string{ "s3", "alpha", "beta", + "ap-northeast-1", + "ap-northeast-2", + "ap-south-1", + "ap-southeast-1", + "ap-southeast-2", + "ca-central-1", + "eu-central-1", + "eu-west-1", + "eu-west-2", + "sa-east-1", + "us-east-1", + "us-east-2", + "us-gov-west-1", + "us-west-1", + "us-west-2", "eu-1", "eu-2", "eu-3", + "eu-4", "us-1", "us-2", "us-3", + "us-4", "apps", - "api", - "ext", - "gist", "cns", "eu", "xen", + "de", "ac", "co", "ed", @@ -10734,6 +10926,7 @@ var nodeLabels = [...]string{ "org", "ath", "gov", + "info", "ac", "biz", "com", @@ -10751,7 +10944,13 @@ var nodeLabels = [...]string{ "blogspot", "co", "e4", + "metacentrum", "realm", + "cloud", + "custom", + "12hp", + "2ix", + "4lima", "barsy", "blogspot", "bplaced", @@ -10770,6 +10969,7 @@ var nodeLabels = [...]string{ "dynvpn", "firewall-gateway", "fuettertdasnetz", + "git-repos", "goip", "home-webserver", "internet-dns", @@ -10777,8 +10977,10 @@ var nodeLabels = [...]string{ "istmein", "keymachine", "l-o-g-i-n", + "lcube-server", "lebtimnetz", "leitungsen", + "lima-city", "logoip", "mein-vigor", "my-gateway", @@ -10788,6 +10990,7 @@ var nodeLabels = [...]string{ "myhome-server", "spdns", "square7", + "svn-repos", "syno-ds", "synology-diskstation", "synology-ds", @@ -10920,6 +11123,7 @@ var nodeLabels = [...]string{ "presse", "tm", "veterinaire", + "nom", "com", "edu", "gov", @@ -10946,6 +11150,7 @@ var nodeLabels = [...]string{ "com", "edu", "net", + "nom", "org", "ac", "com", @@ -10965,6 +11170,7 @@ var nodeLabels = [...]string{ "edu", "gov", "net", + "nym", "org", "com", "edu", @@ -10972,6 +11178,7 @@ var nodeLabels = [...]string{ "ind", "mil", "net", + "nom", "org", "co", "com", @@ -11008,7 +11215,10 @@ var nodeLabels = [...]string{ "gob", "mil", "net", + "nom", "org", + "cloudaccess", + "freesite", "opencraft", "blogspot", "com", @@ -11091,6 +11301,7 @@ var nodeLabels = [...]string{ "co", "com", "net", + "nom", "org", "ro", "tt", @@ -11127,6 +11338,7 @@ var nodeLabels = [...]string{ "no-ip", "nsupdate", "selfip", + "v-info", "webhop", "eu", "backplaneapp", @@ -11144,6 +11356,7 @@ var nodeLabels = [...]string{ "lair", "ngrok", "nid", + "nodeart", "nodum", "pantheonsite", "protonet", @@ -11151,10 +11364,20 @@ var nodeLabels = [...]string{ "shiftedit", "spacekit", "stolos", + "thingdust", "vaporcloud", "wedeploy", "customer", "apps", + "stage", + "dev", + "disrec", + "prod", + "testing", + "cust", + "cust", + "cust", + "cust", "com", "edu", "gov", @@ -13433,6 +13656,7 @@ var nodeLabels = [...]string{ "gov", "mil", "net", + "nym", "org", "bnr", "c", @@ -13442,6 +13666,7 @@ var nodeLabels = [...]string{ "info", "int", "net", + "nym", "org", "per", "static", @@ -13460,6 +13685,8 @@ var nodeLabels = [...]string{ "org", "oy", "blogspot", + "nom", + "nym", "cyon", "mypep", "ac", @@ -13486,7 +13713,9 @@ var nodeLabels = [...]string{ "org", "blogspot", "gov", + "nym", "blogspot", + "nym", "asn", "com", "conf", @@ -13534,6 +13763,7 @@ var nodeLabels = [...]string{ "myds", "net", "noip", + "nym", "org", "priv", "synology", @@ -13557,6 +13787,7 @@ var nodeLabels = [...]string{ "inf", "name", "net", + "nom", "org", "com", "edu", @@ -14172,6 +14403,7 @@ var nodeLabels = [...]string{ "edu", "gob", "net", + "nym", "org", "blogspot", "com", @@ -14218,17 +14450,22 @@ var nodeLabels = [...]string{ "azurewebsites", "barsy", "blogdns", + "boomla", "bounceme", "bplaced", "broke-it", "buyshouses", + "casacam", "cdn77", "cdn77-ssl", + "channelsdvr", + "cloudaccess", "cloudapp", "cloudfront", "cloudfunctions", "cryptonomic", "ddns", + "debian", "definima", "dnsalias", "dnsdojo", @@ -14237,6 +14474,7 @@ var nodeLabels = [...]string{ "dsmynas", "dynalias", "dynathome", + "dynu", "dynv6", "eating-organic", "endofinternet", @@ -14245,6 +14483,7 @@ var nodeLabels = [...]string{ "fastlylb", "feste-ip", "firewall-gateway", + "flynnhosting", "from-az", "from-co", "from-la", @@ -14348,7 +14587,9 @@ var nodeLabels = [...]string{ "web", "blogspot", "bv", + "cistron", "co", + "demon", "transurl", "virtueeldomein", "aa", @@ -15126,6 +15367,7 @@ var nodeLabels = [...]string{ "org", "merseine", "mine", + "nom", "shacknet", "ac", "co", @@ -15139,6 +15381,7 @@ var nodeLabels = [...]string{ "maori", "mil", "net", + "nym", "org", "parliament", "school", @@ -15155,6 +15398,7 @@ var nodeLabels = [...]string{ "pro", "homelink", "barsy", + "accesscam", "ae", "amune", "blogdns", @@ -15162,6 +15406,7 @@ var nodeLabels = [...]string{ "bmoattachments", "boldlygoingnowhere", "cable-modem", + "camdvr", "cdn77", "cdn77-secure", "certmgr", @@ -15187,6 +15432,7 @@ var nodeLabels = [...]string{ "fedorainfracloud", "fedorapeople", "fedoraproject", + "freeddns", "from-me", "game-host", "gotdns", @@ -15224,6 +15470,7 @@ var nodeLabels = [...]string{ "myfirewall", "myftp", "mysecuritycamera", + "mywire", "nflfan", "no-ip", "pimienta", @@ -15246,6 +15493,7 @@ var nodeLabels = [...]string{ "ufcfan", "us", "webhop", + "webredirect", "wmflabs", "za", "zapto", @@ -15332,6 +15580,7 @@ var nodeLabels = [...]string{ "mil", "net", "nom", + "nym", "org", "com", "edu", @@ -15344,6 +15593,7 @@ var nodeLabels = [...]string{ "net", "ngo", "org", + "1337", "biz", "com", "edu", @@ -15615,6 +15865,7 @@ var nodeLabels = [...]string{ "int", "net", "nome", + "nym", "org", "publ", "belau", @@ -15623,6 +15874,7 @@ var nodeLabels = [...]string{ "ed", "go", "ne", + "nom", "or", "com", "coop", @@ -15638,6 +15890,7 @@ var nodeLabels = [...]string{ "mil", "name", "net", + "nom", "org", "sch", "asso", @@ -15645,6 +15898,7 @@ var nodeLabels = [...]string{ "com", "nom", "ybo", + "clan", "arts", "blogspot", "com", @@ -15658,12 +15912,16 @@ var nodeLabels = [...]string{ "store", "tm", "www", + "lima-city", + "myddns", + "webspace", "ac", "blogspot", "co", "edu", "gov", "in", + "nom", "org", "ac", "adygeya", @@ -15686,7 +15944,10 @@ var nodeLabels = [...]string{ "msk", "mytis", "nalchik", + "net", "nov", + "org", + "pp", "pyatigorsk", "spb", "test", @@ -15785,10 +16046,14 @@ var nodeLabels = [...]string{ "now", "org", "platform", + "wedeploy", "blogspot", + "nom", + "byen", "cyon", "platformsh", "blogspot", + "nym", "com", "edu", "gov", @@ -15857,6 +16122,7 @@ var nodeLabels = [...]string{ "navoi", "north-kazakhstan", "nov", + "nym", "obninsk", "penza", "pokrovsk", @@ -15879,6 +16145,7 @@ var nodeLabels = [...]string{ "org", "red", "gov", + "nym", "com", "edu", "gov", @@ -16003,6 +16270,7 @@ var nodeLabels = [...]string{ "idv", "mil", "net", + "nym", "org", "url", "xn--czrw28b", @@ -16109,6 +16377,7 @@ var nodeLabels = [...]string{ "com", "go", "ne", + "nom", "or", "org", "sc", @@ -16270,9 +16539,17 @@ var nodeLabels = [...]string{ "cc", "k12", "lib", + "ann-arbor", "cc", + "cog", + "dst", + "eaton", + "gen", "k12", "lib", + "mus", + "tec", + "washtenaw", "cc", "k12", "lib", @@ -16364,6 +16641,7 @@ var nodeLabels = [...]string{ "gub", "mil", "net", + "nom", "org", "blogspot", "co", @@ -16375,6 +16653,7 @@ var nodeLabels = [...]string{ "gov", "mil", "net", + "nom", "org", "arts", "co", @@ -16393,6 +16672,7 @@ var nodeLabels = [...]string{ "store", "tec", "web", + "nom", "co", "com", "k12", @@ -16435,6 +16715,7 @@ var nodeLabels = [...]string{ "xn--h3cuzk1di", "xn--m3ch0j3a", "xn--o3cyx2a", + "blogsite", "fhapp", "ac", "agric", @@ -16465,6 +16746,7 @@ var nodeLabels = [...]string{ "net", "org", "sch", + "lima", "triton", "ac", "co", diff --git a/vendor/golang.org/x/net/route/route_classic.go b/vendor/golang.org/x/net/route/route_classic.go index 61b2bb4ad..02fa68830 100644 --- a/vendor/golang.org/x/net/route/route_classic.go +++ b/vendor/golang.org/x/net/route/route_classic.go @@ -6,7 +6,10 @@ package route -import "syscall" +import ( + "runtime" + "syscall" +) func (m *RouteMessage) marshal() ([]byte, error) { w, ok := wireFormats[m.Type] @@ -14,6 +17,11 @@ func (m *RouteMessage) marshal() ([]byte, error) { return nil, errUnsupportedMessage } l := w.bodyOff + addrsSpace(m.Addrs) + if runtime.GOOS == "darwin" { + // Fix stray pointer writes on macOS. + // See golang.org/issue/22456. + l += 1024 + } b := make([]byte, l) nativeEndian.PutUint16(b[:2], uint16(l)) if m.Version == 0 { diff --git a/vendor/golang.org/x/net/webdav/lock_test.go b/vendor/golang.org/x/net/webdav/lock_test.go index 116d6c0d7..5cf14cda4 100644 --- a/vendor/golang.org/x/net/webdav/lock_test.go +++ b/vendor/golang.org/x/net/webdav/lock_test.go @@ -69,7 +69,7 @@ var lockTestDurations = []time.Duration{ // lockTestNames are the names of a set of mutually compatible locks. For each // name fragment: // - _ means no explicit lock. -// - i means a infinite-depth lock, +// - i means an infinite-depth lock, // - z means a zero-depth lock, var lockTestNames = []string{ "/_/_/_/_/z", diff --git a/vendor/golang.org/x/sys/README b/vendor/golang.org/x/sys/README deleted file mode 100644 index bd422b40c..000000000 --- a/vendor/golang.org/x/sys/README +++ /dev/null @@ -1,3 +0,0 @@ -This repository holds supplemental Go packages for low-level interactions with the operating system. - -To submit changes to this repository, see http://golang.org/doc/contribute.html. diff --git a/vendor/golang.org/x/sys/README.md b/vendor/golang.org/x/sys/README.md new file mode 100644 index 000000000..ef6c9e59c --- /dev/null +++ b/vendor/golang.org/x/sys/README.md @@ -0,0 +1,18 @@ +# sys + +This repository holds supplemental Go packages for low-level interactions with +the operating system. + +## Download/Install + +The easiest way to install is to run `go get -u golang.org/x/sys`. You can +also manually git clone the repository to `$GOPATH/src/golang.org/x/sys`. + +## Report Issues / Send Patches + +This repository uses Gerrit for code changes. To learn how to submit changes to +this repository, see https://golang.org/doc/contribute.html. + +The main issue tracker for the sys repository is located at +https://github.com/golang/go/issues. Prefix your issue with "x/sys:" in the +subject line, so it is easy to find. diff --git a/vendor/golang.org/x/sys/plan9/asm.s b/vendor/golang.org/x/sys/plan9/asm.s index d4ca868f1..06449ebfa 100644 --- a/vendor/golang.org/x/sys/plan9/asm.s +++ b/vendor/golang.org/x/sys/plan9/asm.s @@ -1,4 +1,4 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2014 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. diff --git a/vendor/golang.org/x/sys/plan9/env_plan9.go b/vendor/golang.org/x/sys/plan9/env_plan9.go index 25a96e7ea..7ef9b1872 100644 --- a/vendor/golang.org/x/sys/plan9/env_plan9.go +++ b/vendor/golang.org/x/sys/plan9/env_plan9.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. diff --git a/vendor/golang.org/x/sys/plan9/env_unset.go b/vendor/golang.org/x/sys/plan9/env_unset.go index c37fc26e4..ce4ab25cb 100644 --- a/vendor/golang.org/x/sys/plan9/env_unset.go +++ b/vendor/golang.org/x/sys/plan9/env_unset.go @@ -1,4 +1,4 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2014 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. diff --git a/vendor/golang.org/x/sys/plan9/errors_plan9.go b/vendor/golang.org/x/sys/plan9/errors_plan9.go index 110cf6a30..65fe74d3e 100644 --- a/vendor/golang.org/x/sys/plan9/errors_plan9.go +++ b/vendor/golang.org/x/sys/plan9/errors_plan9.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. diff --git a/vendor/golang.org/x/sys/plan9/race.go b/vendor/golang.org/x/sys/plan9/race.go index c7ff5df2e..42edd93ef 100644 --- a/vendor/golang.org/x/sys/plan9/race.go +++ b/vendor/golang.org/x/sys/plan9/race.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/plan9/race0.go b/vendor/golang.org/x/sys/plan9/race0.go index 06cabcc76..c89cf8fc0 100644 --- a/vendor/golang.org/x/sys/plan9/race0.go +++ b/vendor/golang.org/x/sys/plan9/race0.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go index df6f8c5b9..5046cfe7f 100644 --- a/vendor/golang.org/x/sys/plan9/syscall.go +++ b/vendor/golang.org/x/sys/plan9/syscall.go @@ -5,10 +5,10 @@ // +build plan9 // Package plan9 contains an interface to the low-level operating system -// primitives. OS details vary depending on the underlying system, and +// primitives. OS details vary depending on the underlying system, and // by default, godoc will display the OS-specific documentation for the current -// system. If you want godoc to display documentation for another -// system, set $GOOS and $GOARCH to the desired system. For example, if +// system. If you want godoc to display documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS // to freebsd and $GOARCH to arm. // The primary use of this package is inside other packages that provide a more diff --git a/vendor/golang.org/x/sys/unix/creds_test.go b/vendor/golang.org/x/sys/unix/creds_test.go index eaae7c367..6b292b19a 100644 --- a/vendor/golang.org/x/sys/unix/creds_test.go +++ b/vendor/golang.org/x/sys/unix/creds_test.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. @@ -8,6 +8,7 @@ package unix_test import ( "bytes" + "go/build" "net" "os" "syscall" @@ -21,101 +22,131 @@ import ( // sockets. The SO_PASSCRED socket option is enabled on the sending // socket for this to work. func TestSCMCredentials(t *testing.T) { - fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0) - if err != nil { - t.Fatalf("Socketpair: %v", err) - } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) - - err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1) - if err != nil { - t.Fatalf("SetsockoptInt: %v", err) + socketTypeTests := []struct { + socketType int + dataLen int + }{ + { + unix.SOCK_STREAM, + 1, + }, { + unix.SOCK_DGRAM, + 0, + }, } - srvFile := os.NewFile(uintptr(fds[0]), "server") - defer srvFile.Close() - srv, err := net.FileConn(srvFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer srv.Close() + for _, tt := range socketTypeTests { + if tt.socketType == unix.SOCK_DGRAM && !atLeast1p10() { + t.Log("skipping DGRAM test on pre-1.10") + continue + } - cliFile := os.NewFile(uintptr(fds[1]), "client") - defer cliFile.Close() - cli, err := net.FileConn(cliFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer cli.Close() + fds, err := unix.Socketpair(unix.AF_LOCAL, tt.socketType, 0) + if err != nil { + t.Fatalf("Socketpair: %v", err) + } + defer unix.Close(fds[0]) + defer unix.Close(fds[1]) + + err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1) + if err != nil { + t.Fatalf("SetsockoptInt: %v", err) + } + + srvFile := os.NewFile(uintptr(fds[0]), "server") + defer srvFile.Close() + srv, err := net.FileConn(srvFile) + if err != nil { + t.Errorf("FileConn: %v", err) + return + } + defer srv.Close() + + cliFile := os.NewFile(uintptr(fds[1]), "client") + defer cliFile.Close() + cli, err := net.FileConn(cliFile) + if err != nil { + t.Errorf("FileConn: %v", err) + return + } + defer cli.Close() + + var ucred unix.Ucred + if os.Getuid() != 0 { + ucred.Pid = int32(os.Getpid()) + ucred.Uid = 0 + ucred.Gid = 0 + oob := unix.UnixCredentials(&ucred) + _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) + if op, ok := err.(*net.OpError); ok { + err = op.Err + } + if sys, ok := err.(*os.SyscallError); ok { + err = sys.Err + } + if err != syscall.EPERM { + t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err) + } + } - var ucred unix.Ucred - if os.Getuid() != 0 { ucred.Pid = int32(os.Getpid()) - ucred.Uid = 0 - ucred.Gid = 0 + ucred.Uid = uint32(os.Getuid()) + ucred.Gid = uint32(os.Getgid()) oob := unix.UnixCredentials(&ucred) - _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if op, ok := err.(*net.OpError); ok { - err = op.Err + + // On SOCK_STREAM, this is internally going to send a dummy byte + n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) + if err != nil { + t.Fatalf("WriteMsgUnix: %v", err) } - if sys, ok := err.(*os.SyscallError); ok { - err = sys.Err + if n != 0 { + t.Fatalf("WriteMsgUnix n = %d, want 0", n) } - if err != syscall.EPERM { - t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err) + if oobn != len(oob) { + t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob)) } - } - ucred.Pid = int32(os.Getpid()) - ucred.Uid = uint32(os.Getuid()) - ucred.Gid = uint32(os.Getgid()) - oob := unix.UnixCredentials(&ucred) + oob2 := make([]byte, 10*len(oob)) + n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2) + if err != nil { + t.Fatalf("ReadMsgUnix: %v", err) + } + if flags != 0 { + t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags) + } + if n != tt.dataLen { + t.Fatalf("ReadMsgUnix n = %d, want %d", n, tt.dataLen) + } + if oobn2 != oobn { + // without SO_PASSCRED set on the socket, ReadMsgUnix will + // return zero oob bytes + t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn) + } + oob2 = oob2[:oobn2] + if !bytes.Equal(oob, oob2) { + t.Fatal("ReadMsgUnix oob bytes don't match") + } - // this is going to send a dummy byte - n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if err != nil { - t.Fatalf("WriteMsgUnix: %v", err) - } - if n != 0 { - t.Fatalf("WriteMsgUnix n = %d, want 0", n) - } - if oobn != len(oob) { - t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob)) - } - - oob2 := make([]byte, 10*len(oob)) - n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2) - if err != nil { - t.Fatalf("ReadMsgUnix: %v", err) - } - if flags != 0 { - t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags) - } - if n != 1 { - t.Fatalf("ReadMsgUnix n = %d, want 1 (dummy byte)", n) - } - if oobn2 != oobn { - // without SO_PASSCRED set on the socket, ReadMsgUnix will - // return zero oob bytes - t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn) - } - oob2 = oob2[:oobn2] - if !bytes.Equal(oob, oob2) { - t.Fatal("ReadMsgUnix oob bytes don't match") - } - - scm, err := unix.ParseSocketControlMessage(oob2) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - newUcred, err := unix.ParseUnixCredentials(&scm[0]) - if err != nil { - t.Fatalf("ParseUnixCredentials: %v", err) - } - if *newUcred != ucred { - t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred) + scm, err := unix.ParseSocketControlMessage(oob2) + if err != nil { + t.Fatalf("ParseSocketControlMessage: %v", err) + } + newUcred, err := unix.ParseUnixCredentials(&scm[0]) + if err != nil { + t.Fatalf("ParseUnixCredentials: %v", err) + } + if *newUcred != ucred { + t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred) + } } } + +// atLeast1p10 reports whether we are running on Go 1.10 or later. +func atLeast1p10() bool { + for _, ver := range build.Default.ReleaseTags { + if ver == "go1.10" { + return true + } + } + return false +} diff --git a/vendor/golang.org/x/sys/unix/dev_darwin.go b/vendor/golang.org/x/sys/unix/dev_darwin.go new file mode 100644 index 000000000..8d1dc0fa3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Darwin's sys/types.h header. + +package unix + +// Major returns the major component of a Darwin device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 24) & 0xff) +} + +// Minor returns the minor component of a Darwin device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffffff) +} + +// Mkdev returns a Darwin device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 24) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_darwin_test.go b/vendor/golang.org/x/sys/unix/dev_darwin_test.go new file mode 100644 index 000000000..bf1adf3a8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_darwin_test.go @@ -0,0 +1,51 @@ +// Copyright 2017 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. + +// +build go1.7 + +package unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // Most of the device major/minor numbers on Darwin are + // dynamically generated by devfs. These are some well-known + // static numbers. + {"/dev/ttyp0", 4, 0}, + {"/dev/ttys0", 4, 48}, + {"/dev/ptyp0", 5, 0}, + {"/dev/ptyr0", 5, 32}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/vendor/golang.org/x/sys/unix/dev_dragonfly.go new file mode 100644 index 000000000..8502f202c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_dragonfly.go @@ -0,0 +1,30 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Dragonfly's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a DragonFlyBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a DragonFlyBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a DragonFlyBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly_test.go b/vendor/golang.org/x/sys/unix/dev_dragonfly_test.go new file mode 100644 index 000000000..9add37663 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_dragonfly_test.go @@ -0,0 +1,50 @@ +// Copyright 2017 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. + +// +build go1.7 + +package unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // Minor is a cookie instead of an index on DragonFlyBSD + {"/dev/null", 10, 0x00000002}, + {"/dev/random", 10, 0x00000003}, + {"/dev/urandom", 10, 0x00000004}, + {"/dev/zero", 10, 0x0000000c}, + {"/dev/bpf", 15, 0xffff00ff}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/dev_freebsd.go b/vendor/golang.org/x/sys/unix/dev_freebsd.go new file mode 100644 index 000000000..eba3b4bd3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_freebsd.go @@ -0,0 +1,30 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in FreeBSD's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a FreeBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a FreeBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a FreeBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go index c902c39e8..d165d6f30 100644 --- a/vendor/golang.org/x/sys/unix/dev_linux.go +++ b/vendor/golang.org/x/sys/unix/dev_linux.go @@ -34,9 +34,9 @@ func Minor(dev uint64) uint32 { // Mkdev returns a Linux device number generated from the given major and minor // components. func Mkdev(major, minor uint32) uint64 { - dev := uint64((major & 0x00000fff) << 8) - dev |= uint64((major & 0xfffff000) << 32) - dev |= uint64((minor & 0x000000ff) << 0) - dev |= uint64((minor & 0xffffff00) << 12) + dev := (uint64(major) & 0x00000fff) << 8 + dev |= (uint64(major) & 0xfffff000) << 32 + dev |= (uint64(minor) & 0x000000ff) << 0 + dev |= (uint64(minor) & 0xffffff00) << 12 return dev } diff --git a/vendor/golang.org/x/sys/unix/dev_linux_test.go b/vendor/golang.org/x/sys/unix/dev_linux_test.go index 6e001f37a..2fd3eadd0 100644 --- a/vendor/golang.org/x/sys/unix/dev_linux_test.go +++ b/vendor/golang.org/x/sys/unix/dev_linux_test.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build go1.7 + package unix_test import ( diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd.go b/vendor/golang.org/x/sys/unix/dev_netbsd.go new file mode 100644 index 000000000..b4a203d0c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_netbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in NetBSD's sys/types.h header. + +package unix + +// Major returns the major component of a NetBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x000fff00) >> 8) +} + +// Minor returns the minor component of a NetBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xfff00000) >> 12) + return minor +} + +// Mkdev returns a NetBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x000fff00 + dev |= (uint64(minor) << 12) & 0xfff00000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd_test.go b/vendor/golang.org/x/sys/unix/dev_netbsd_test.go new file mode 100644 index 000000000..441058a10 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_netbsd_test.go @@ -0,0 +1,50 @@ +// Copyright 2017 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. + +// +build go1.7 + +package unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // well known major/minor numbers according to /dev/MAKEDEV on + // NetBSD 8.0 + {"/dev/null", 2, 2}, + {"/dev/zero", 2, 12}, + {"/dev/random", 46, 0}, + {"/dev/urandom", 46, 1}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd.go b/vendor/golang.org/x/sys/unix/dev_openbsd.go new file mode 100644 index 000000000..f3430c42f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_openbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 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. + +// Functions to access/create device major and minor numbers matching the +// encoding used in OpenBSD's sys/types.h header. + +package unix + +// Major returns the major component of an OpenBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x0000ff00) >> 8) +} + +// Minor returns the minor component of an OpenBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xffff0000) >> 8) + return minor +} + +// Mkdev returns an OpenBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x0000ff00 + dev |= (uint64(minor) << 8) & 0xffff0000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd_test.go b/vendor/golang.org/x/sys/unix/dev_openbsd_test.go new file mode 100644 index 000000000..e6cb64ff3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_openbsd_test.go @@ -0,0 +1,54 @@ +// Copyright 2017 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. + +// +build go1.7 + +package unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // well known major/minor numbers according to /dev/MAKEDEV on + // OpenBSD 6.0 + {"/dev/null", 2, 2}, + {"/dev/zero", 2, 12}, + {"/dev/ttyp0", 5, 0}, + {"/dev/ttyp1", 5, 1}, + {"/dev/random", 45, 0}, + {"/dev/srandom", 45, 1}, + {"/dev/urandom", 45, 2}, + {"/dev/arandom", 45, 3}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/dev_solaris_test.go b/vendor/golang.org/x/sys/unix/dev_solaris_test.go new file mode 100644 index 000000000..656508c97 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_solaris_test.go @@ -0,0 +1,51 @@ +// Copyright 2017 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. + +// +build go1.7 + +package unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // Well-known major/minor numbers on OpenSolaris according to + // /etc/name_to_major + {"/dev/zero", 134, 12}, + {"/dev/null", 134, 2}, + {"/dev/ptyp0", 172, 0}, + {"/dev/ttyp0", 175, 0}, + {"/dev/ttyp1", 175, 1}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + } +} diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go index 45e281a04..2e06b33f2 100644 --- a/vendor/golang.org/x/sys/unix/env_unix.go +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -1,4 +1,4 @@ -// Copyright 2010 The Go Authors. All rights reserved. +// Copyright 2010 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. diff --git a/vendor/golang.org/x/sys/unix/env_unset.go b/vendor/golang.org/x/sys/unix/env_unset.go index 922226255..c44fdc4af 100644 --- a/vendor/golang.org/x/sys/unix/env_unset.go +++ b/vendor/golang.org/x/sys/unix/env_unset.go @@ -1,4 +1,4 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2014 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. diff --git a/vendor/golang.org/x/sys/unix/export_test.go b/vendor/golang.org/x/sys/unix/export_test.go index b4fdd970b..e8024690d 100644 --- a/vendor/golang.org/x/sys/unix/export_test.go +++ b/vendor/golang.org/x/sys/unix/export_test.go @@ -1,4 +1,4 @@ -// Copyright 2015 The Go Authors. All rights reserved. +// Copyright 2015 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. diff --git a/vendor/golang.org/x/sys/unix/file_unix.go b/vendor/golang.org/x/sys/unix/file_unix.go deleted file mode 100644 index 47f6a83f2..000000000 --- a/vendor/golang.org/x/sys/unix/file_unix.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 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 unix - -import ( - "os" - "syscall" -) - -// FIXME: unexported function from os -// syscallMode returns the syscall-specific mode bits from Go's portable mode bits. -func syscallMode(i os.FileMode) (o uint32) { - o |= uint32(i.Perm()) - if i&os.ModeSetuid != 0 { - o |= syscall.S_ISUID - } - if i&os.ModeSetgid != 0 { - o |= syscall.S_ISGID - } - if i&os.ModeSticky != 0 { - o |= syscall.S_ISVTX - } - // No mapping for Go's ModeTemporary (plan9 only). - return -} diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go index 94c823212..40bed3fa8 100644 --- a/vendor/golang.org/x/sys/unix/gccgo.go +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -1,4 +1,4 @@ -// Copyright 2015 The Go Authors. All rights reserved. +// Copyright 2015 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. @@ -8,7 +8,7 @@ package unix import "syscall" -// We can't use the gc-syntax .s files for gccgo. On the plus side +// We can't use the gc-syntax .s files for gccgo. On the plus side // much of the functionality can be written directly in Go. //extern gccgoRealSyscall diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c index 07f6be039..99a774f2b 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_c.c +++ b/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -1,4 +1,4 @@ -// Copyright 2015 The Go Authors. All rights reserved. +// Copyright 2015 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. diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go index bffe1a77d..251a977a8 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -1,4 +1,4 @@ -// Copyright 2015 The Go Authors. All rights reserved. +// Copyright 2015 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. diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go deleted file mode 100644 index 56332692c..000000000 --- a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2016 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. - -// +build gccgo,linux,sparc64 - -package unix - -import "syscall" - -//extern sysconf -func realSysconf(name int) int64 - -func sysconf(name int) (n int64, err syscall.Errno) { - r := realSysconf(name) - if r < 0 { - return 0, syscall.GetErrno() - } - return r, 0 -} diff --git a/vendor/golang.org/x/sys/unix/linux/Dockerfile b/vendor/golang.org/x/sys/unix/linux/Dockerfile index 4397143c9..7fe5fc3c4 100644 --- a/vendor/golang.org/x/sys/unix/linux/Dockerfile +++ b/vendor/golang.org/x/sys/unix/linux/Dockerfile @@ -1,5 +1,8 @@ FROM ubuntu:16.04 +# Use the most recent ubuntu sources +RUN echo 'deb http://en.archive.ubuntu.com/ubuntu/ artful main universe' >> /etc/apt/sources.list + # Dependencies to get the git sources and go binaries RUN apt-get update && apt-get install -y \ curl \ @@ -9,15 +12,15 @@ RUN apt-get update && apt-get install -y \ # Get the git sources. If not cached, this takes O(5 minutes). WORKDIR /git RUN git config --global advice.detachedHead false -# Linux Kernel: Released 19 Feb 2017 -RUN git clone --branch v4.10 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux -# GNU C library: Released 05 Feb 2017 (we should try to get a secure way to clone this) -RUN git clone --branch glibc-2.25 --depth 1 git://sourceware.org/git/glibc.git +# Linux Kernel: Released 03 Sep 2017 +RUN git clone --branch v4.13 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux +# GNU C library: Released 02 Aug 2017 (we should try to get a secure way to clone this) +RUN git clone --branch glibc-2.26 --depth 1 git://sourceware.org/git/glibc.git -# Get Go 1.8 (https://github.com/docker-library/golang/blob/master/1.8/Dockerfile) -ENV GOLANG_VERSION 1.8 +# Get Go 1.9.2 +ENV GOLANG_VERSION 1.9.2 ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca +ENV GOLANG_DOWNLOAD_SHA256 de874549d9a8d8d8062be05808509c09a88a248e77ec14eb77453530829ac02b RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ @@ -30,7 +33,7 @@ ENV PATH /usr/local/go/bin:$PATH RUN apt-get update && apt-get install -y \ gawk make python \ gcc gcc-multilib \ - gettext texinfo \ + gettext texinfo \ && rm -rf /var/lib/apt/lists/* # Emulator and cross compilers RUN apt-get update && apt-get install -y \ diff --git a/vendor/golang.org/x/sys/unix/linux/mkall.go b/vendor/golang.org/x/sys/unix/linux/mkall.go index 429754f16..89b2fe886 100644 --- a/vendor/golang.org/x/sys/unix/linux/mkall.go +++ b/vendor/golang.org/x/sys/unix/linux/mkall.go @@ -15,12 +15,17 @@ package main import ( + "bufio" + "bytes" "fmt" + "io" + "io/ioutil" "os" "os/exec" "path/filepath" "runtime" "strings" + "unicode" ) // These will be paths to the appropriate source directories. @@ -128,6 +133,15 @@ var targets = []target{ // }, } +// ptracePairs is a list of pairs of targets that can, in some cases, +// run each other's binaries. +var ptracePairs = []struct{ a1, a2 string }{ + {"386", "amd64"}, + {"arm", "arm64"}, + {"mips", "mips64"}, + {"mipsle", "mips64le"}, +} + func main() { if runtime.GOOS != GOOS || runtime.GOARCH != BuildArch { fmt.Printf("Build system has GOOS_GOARCH = %s_%s, need %s_%s\n", @@ -158,6 +172,18 @@ func main() { fmt.Printf("----- SUCCESS: %s -----\n\n", t.GoArch) } } + + fmt.Printf("----- GENERATING ptrace pairs -----\n") + ok := true + for _, p := range ptracePairs { + if err := generatePtracePair(p.a1, p.a2); err != nil { + fmt.Printf("%v\n***** FAILURE: %s/%s *****\n\n", err, p.a1, p.a2) + ok = false + } + } + if ok { + fmt.Printf("----- SUCCESS ptrace pairs -----\n\n") + } } // Makes an exec.Cmd with Stderr attached to os.Stderr @@ -377,3 +403,80 @@ func (t *target) mksyscallFlags() (flags []string) { } return } + +// generatePtracePair takes a pair of GOARCH values that can run each +// other's binaries, such as 386 and amd64. It extracts the PtraceRegs +// type for each one. It writes a new file defining the types +// PtraceRegsArch1 and PtraceRegsArch2 and the corresponding functions +// Ptrace{Get,Set}Regs{arch1,arch2}. This permits debugging the other +// binary on a native system. +func generatePtracePair(arch1, arch2 string) error { + def1, err := ptraceDef(arch1) + if err != nil { + return err + } + def2, err := ptraceDef(arch2) + if err != nil { + return err + } + f, err := os.Create(fmt.Sprintf("zptrace%s_linux.go", arch1)) + if err != nil { + return err + } + buf := bufio.NewWriter(f) + fmt.Fprintf(buf, "// Code generated by linux/mkall.go generatePtracePair(%s, %s). DO NOT EDIT.\n", arch1, arch2) + fmt.Fprintf(buf, "\n") + fmt.Fprintf(buf, "// +build linux\n") + fmt.Fprintf(buf, "// +build %s %s\n", arch1, arch2) + fmt.Fprintf(buf, "\n") + fmt.Fprintf(buf, "package unix\n") + fmt.Fprintf(buf, "\n") + fmt.Fprintf(buf, "%s\n", `import "unsafe"`) + fmt.Fprintf(buf, "\n") + writeOnePtrace(buf, arch1, def1) + fmt.Fprintf(buf, "\n") + writeOnePtrace(buf, arch2, def2) + if err := buf.Flush(); err != nil { + return err + } + if err := f.Close(); err != nil { + return err + } + return nil +} + +// ptraceDef returns the definition of PtraceRegs for arch. +func ptraceDef(arch string) (string, error) { + filename := fmt.Sprintf("ztypes_linux_%s.go", arch) + data, err := ioutil.ReadFile(filename) + if err != nil { + return "", fmt.Errorf("reading %s: %v", filename, err) + } + start := bytes.Index(data, []byte("type PtraceRegs struct")) + if start < 0 { + return "", fmt.Errorf("%s: no definition of PtraceRegs", filename) + } + data = data[start:] + end := bytes.Index(data, []byte("\n}\n")) + if end < 0 { + return "", fmt.Errorf("%s: can't find end of PtraceRegs definition", filename) + } + return string(data[:end+2]), nil +} + +// writeOnePtrace writes out the ptrace definitions for arch. +func writeOnePtrace(w io.Writer, arch, def string) { + uarch := string(unicode.ToUpper(rune(arch[0]))) + arch[1:] + fmt.Fprintf(w, "// PtraceRegs%s is the registers used by %s binaries.\n", uarch, arch) + fmt.Fprintf(w, "%s\n", strings.Replace(def, "PtraceRegs", "PtraceRegs"+uarch, 1)) + fmt.Fprintf(w, "\n") + fmt.Fprintf(w, "// PtraceGetRegs%s fetches the registers used by %s binaries.\n", uarch, arch) + fmt.Fprintf(w, "func PtraceGetRegs%s(pid int, regsout *PtraceRegs%s) error {\n", uarch, uarch) + fmt.Fprintf(w, "\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n") + fmt.Fprintf(w, "}\n") + fmt.Fprintf(w, "\n") + fmt.Fprintf(w, "// PtraceSetRegs%s sets the registers used by %s binaries.\n", uarch, arch) + fmt.Fprintf(w, "func PtraceSetRegs%s(pid int, regs *PtraceRegs%s) error {\n", uarch, uarch) + fmt.Fprintf(w, "\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n") + fmt.Fprintf(w, "}\n") +} diff --git a/vendor/golang.org/x/sys/unix/linux/types.go b/vendor/golang.org/x/sys/unix/linux/types.go index e5769db57..b4350f8b7 100644 --- a/vendor/golang.org/x/sys/unix/linux/types.go +++ b/vendor/golang.org/x/sys/unix/linux/types.go @@ -62,6 +62,8 @@ package unix #include #include #include +#include +#include // On mips64, the glibc stat and kernel stat do not agree #if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) @@ -112,14 +114,6 @@ struct stat { #endif -// Certain constants and structs are missing from the fs/crypto UAPI -#define FS_MAX_KEY_SIZE 64 -struct fscrypt_key { - __u32 mode; - __u8 raw[FS_MAX_KEY_SIZE]; - __u32 size; -}; - #ifdef TCSETS2 // On systems that have "struct termios2" use this as type Termios. typedef struct termios2 termios_t; @@ -518,6 +512,7 @@ type EpollEvent C.struct_my_epoll_event const ( AT_FDCWD = C.AT_FDCWD + AT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT AT_REMOVEDIR = C.AT_REMOVEDIR AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW @@ -541,12 +536,61 @@ const RNDGETENTCNT = C.RNDGETENTCNT const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP -// sysconf information - -const _SC_PAGESIZE = C._SC_PAGESIZE - // Terminal handling type Termios C.termios_t type Winsize C.struct_winsize + +// Taskstats + +type Taskstats C.struct_taskstats + +const ( + TASKSTATS_CMD_UNSPEC = C.TASKSTATS_CMD_UNSPEC + TASKSTATS_CMD_GET = C.TASKSTATS_CMD_GET + TASKSTATS_CMD_NEW = C.TASKSTATS_CMD_NEW + TASKSTATS_TYPE_UNSPEC = C.TASKSTATS_TYPE_UNSPEC + TASKSTATS_TYPE_PID = C.TASKSTATS_TYPE_PID + TASKSTATS_TYPE_TGID = C.TASKSTATS_TYPE_TGID + TASKSTATS_TYPE_STATS = C.TASKSTATS_TYPE_STATS + TASKSTATS_TYPE_AGGR_PID = C.TASKSTATS_TYPE_AGGR_PID + TASKSTATS_TYPE_AGGR_TGID = C.TASKSTATS_TYPE_AGGR_TGID + TASKSTATS_TYPE_NULL = C.TASKSTATS_TYPE_NULL + TASKSTATS_CMD_ATTR_UNSPEC = C.TASKSTATS_CMD_ATTR_UNSPEC + TASKSTATS_CMD_ATTR_PID = C.TASKSTATS_CMD_ATTR_PID + TASKSTATS_CMD_ATTR_TGID = C.TASKSTATS_CMD_ATTR_TGID + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK +) + +// Generic netlink + +type Genlmsghdr C.struct_genlmsghdr + +const ( + CTRL_CMD_UNSPEC = C.CTRL_CMD_UNSPEC + CTRL_CMD_NEWFAMILY = C.CTRL_CMD_NEWFAMILY + CTRL_CMD_DELFAMILY = C.CTRL_CMD_DELFAMILY + CTRL_CMD_GETFAMILY = C.CTRL_CMD_GETFAMILY + CTRL_CMD_NEWOPS = C.CTRL_CMD_NEWOPS + CTRL_CMD_DELOPS = C.CTRL_CMD_DELOPS + CTRL_CMD_GETOPS = C.CTRL_CMD_GETOPS + CTRL_CMD_NEWMCAST_GRP = C.CTRL_CMD_NEWMCAST_GRP + CTRL_CMD_DELMCAST_GRP = C.CTRL_CMD_DELMCAST_GRP + CTRL_CMD_GETMCAST_GRP = C.CTRL_CMD_GETMCAST_GRP + CTRL_ATTR_UNSPEC = C.CTRL_ATTR_UNSPEC + CTRL_ATTR_FAMILY_ID = C.CTRL_ATTR_FAMILY_ID + CTRL_ATTR_FAMILY_NAME = C.CTRL_ATTR_FAMILY_NAME + CTRL_ATTR_VERSION = C.CTRL_ATTR_VERSION + CTRL_ATTR_HDRSIZE = C.CTRL_ATTR_HDRSIZE + CTRL_ATTR_MAXATTR = C.CTRL_ATTR_MAXATTR + CTRL_ATTR_OPS = C.CTRL_ATTR_OPS + CTRL_ATTR_MCAST_GROUPS = C.CTRL_ATTR_MCAST_GROUPS + CTRL_ATTR_OP_UNSPEC = C.CTRL_ATTR_OP_UNSPEC + CTRL_ATTR_OP_ID = C.CTRL_ATTR_OP_ID + CTRL_ATTR_OP_FLAGS = C.CTRL_ATTR_OP_FLAGS + CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC + CTRL_ATTR_MCAST_GRP_NAME = C.CTRL_ATTR_MCAST_GRP_NAME + CTRL_ATTR_MCAST_GRP_ID = C.CTRL_ATTR_MCAST_GRP_ID +) diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index c3a080926..1715122bd 100755 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -80,12 +80,6 @@ darwin_arm64) mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; -dragonfly_386) - mkerrors="$mkerrors -m32" - mksyscall="./mksyscall.pl -l32 -dragonfly" - mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl" - mktypes="GOARCH=$GOARCH go tool cgo -godefs" - ;; dragonfly_amd64) mkerrors="$mkerrors -m64" mksyscall="./mksyscall.pl -dragonfly" @@ -142,7 +136,6 @@ openbsd_386) mkerrors="$mkerrors -m32" mksyscall="./mksyscall.pl -l32 -openbsd" mksysctl="./mksysctl_openbsd.pl" - zsysctl="zsysctl_openbsd.go" mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; @@ -150,7 +143,6 @@ openbsd_amd64) mkerrors="$mkerrors -m64" mksyscall="./mksyscall.pl -openbsd" mksysctl="./mksysctl_openbsd.pl" - zsysctl="zsysctl_openbsd.go" mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; @@ -158,7 +150,6 @@ openbsd_arm) mkerrors="$mkerrors" mksyscall="./mksyscall.pl -l32 -openbsd -arm" mksysctl="./mksysctl_openbsd.pl" - zsysctl="zsysctl_openbsd.go" mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index 08dd77518..2a44da57d 100755 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -17,8 +17,8 @@ if test -z "$GOARCH" -o -z "$GOOS"; then fi # Check that we are using the new build system if we should -if [[ "$GOOS" -eq "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then - if [[ "$GOLANG_SYS_BUILD" -ne "docker" ]]; then +if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then + if [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then echo 1>&2 "In the new build system, mkerrors should not be called directly." echo 1>&2 "See README.md" exit 1 @@ -27,7 +27,7 @@ fi CC=${CC:-cc} -if [[ "$GOOS" -eq "solaris" ]]; then +if [[ "$GOOS" = "solaris" ]]; then # Assumes GNU versions of utilities in PATH. export PATH=/usr/gnu/bin:$PATH fi @@ -38,6 +38,8 @@ includes_Darwin=' #define _DARWIN_C_SOURCE #define KERNEL #define _DARWIN_USE_64_BIT_INODE +#include +#include #include #include #include @@ -46,6 +48,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -84,6 +87,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -181,6 +185,9 @@ struct ltchars { #include #include #include +#include +#include +#include #include #include @@ -281,6 +288,7 @@ includes_SunOS=' #include #include #include +#include #include #include #include @@ -345,6 +353,7 @@ ccflags="$@" $2 !~ /^EXPR_/ && $2 ~ /^E[A-Z0-9_]+$/ || $2 ~ /^B[0-9_]+$/ || + $2 ~ /^(OLD|NEW)DEV$/ || $2 == "BOTHER" || $2 ~ /^CI?BAUD(EX)?$/ || $2 == "IBSHIFT" || @@ -378,7 +387,9 @@ ccflags="$@" $2 == "SOMAXCONN" || $2 == "NAME_MAX" || $2 == "IFNAMSIZ" || - $2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ || + $2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ || + $2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ || + $2 ~ /^HW_MACHINE$/ || $2 ~ /^SYSCTL_VERS/ || $2 ~ /^(MS|MNT|UMOUNT)_/ || $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || @@ -413,7 +424,14 @@ ccflags="$@" $2 ~ /^SECCOMP_MODE_/ || $2 ~ /^SPLICE_/ || $2 ~ /^(VM|VMADDR)_/ || + $2 ~ /^IOCTL_VM_SOCKETS_/ || + $2 ~ /^(TASKSTATS|TS)_/ || + $2 ~ /^GENL_/ || + $2 ~ /^UTIME_/ || $2 ~ /^XATTR_(CREATE|REPLACE)/ || + $2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || + $2 ~ /^FSOPT_/ || + $2 ~ /^WDIOC_/ || $2 !~ "WMESGLEN" && $2 ~ /^W[A-Z0-9]+$/ || $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} diff --git a/vendor/golang.org/x/sys/unix/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go index d3ff659bb..dbdfd0a3f 100644 --- a/vendor/golang.org/x/sys/unix/mkpost.go +++ b/vendor/golang.org/x/sys/unix/mkpost.go @@ -56,6 +56,11 @@ func main() { removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`) b = removeFieldsRegex.ReplaceAll(b, []byte("_")) + // Convert [65]int8 to [65]byte in Utsname members to simplify + // conversion to string; see golang.org/issue/20753 + convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`) + b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte")) + // We refuse to export private fields on s390x if goarch == "s390x" && goos == "linux" { // Remove cgo padding fields diff --git a/vendor/golang.org/x/sys/unix/mmap_unix_test.go b/vendor/golang.org/x/sys/unix/mmap_unix_test.go index 8de55feaf..3258ca328 100644 --- a/vendor/golang.org/x/sys/unix/mmap_unix_test.go +++ b/vendor/golang.org/x/sys/unix/mmap_unix_test.go @@ -17,7 +17,7 @@ func TestMmap(t *testing.T) { if err != nil { t.Fatalf("Mmap: %v", err) } - if err := unix.Mprotect(b, unix.PROT_WRITE); err != nil { + if err := unix.Mprotect(b, unix.PROT_READ|unix.PROT_WRITE); err != nil { t.Fatalf("Mprotect: %v", err) } diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go new file mode 100644 index 000000000..83c85e019 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -0,0 +1,15 @@ +// Copyright 2017 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. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris + +// For Unix, get the pagesize from the runtime. + +package unix + +import "syscall" + +func Getpagesize() int { + return syscall.Getpagesize() +} diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go index 3c7627eb5..61712b51c 100644 --- a/vendor/golang.org/x/sys/unix/race.go +++ b/vendor/golang.org/x/sys/unix/race.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go index f8678e0d2..dd0820431 100644 --- a/vendor/golang.org/x/sys/unix/race0.go +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go index d9ff4731a..6079eb4ac 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index 85e35020e..857d2a42d 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -5,10 +5,10 @@ // +build darwin dragonfly freebsd linux netbsd openbsd solaris // Package unix contains an interface to the low-level operating system -// primitives. OS details vary depending on the underlying system, and +// primitives. OS details vary depending on the underlying system, and // by default, godoc will display OS-specific documentation for the current -// system. If you want godoc to display OS documentation for another -// system, set $GOOS and $GOARCH to the desired system. For example, if +// system. If you want godoc to display OS documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS // to freebsd and $GOARCH to arm. // The primary use of this package is inside other packages that provide a more @@ -49,21 +49,3 @@ func BytePtrFromString(s string) (*byte, error) { // Single-word zero for use when we need a valid pointer to 0 bytes. // See mkunix.pl. var _zero uintptr - -func (ts *Timespec) Unix() (sec int64, nsec int64) { - return int64(ts.Sec), int64(ts.Nsec) -} - -func (tv *Timeval) Unix() (sec int64, nsec int64) { - return int64(tv.Sec), int64(tv.Usec) * 1000 -} - -func (ts *Timespec) Nano() int64 { - return int64(ts.Sec)*1e9 + int64(ts.Nsec) -} - -func (tv *Timeval) Nano() int64 { - return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 -} - -func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index c2846b32d..47b059840 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -34,7 +34,7 @@ func Getgroups() (gids []int, err error) { return nil, nil } - // Sanity check group count. Max is 16 on BSD. + // Sanity check group count. Max is 16 on BSD. if n < 0 || n > 1000 { return nil, EINVAL } @@ -570,7 +570,12 @@ func UtimesNano(path string, ts []Timespec) error { if len(ts) != 2 { return EINVAL } - err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + // Darwin setattrlist can set nanosecond timestamps + err := setattrlistTimes(path, ts, 0) + if err != ENOSYS { + return err + } + err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) if err != ENOSYS { return err } @@ -590,6 +595,10 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { if len(ts) != 2 { return EINVAL } + err := setattrlistTimes(path, ts, flags) + if err != ENOSYS { + return err + } return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) } @@ -607,6 +616,15 @@ func Futimes(fd int, tv []Timeval) error { //sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + // TODO: wrap // Acct(name nil-string) (err error) // Gethostuuid(uuid *byte, timeout *Timespec) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd_test.go b/vendor/golang.org/x/sys/unix/syscall_bsd_test.go index d8085a072..c3a75eb4d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd_test.go @@ -60,3 +60,11 @@ func TestSysctlRaw(t *testing.T) { t.Fatal(err) } } + +func TestSysctlUint32(t *testing.T) { + maxproc, err := unix.SysctlUint32("kern.maxproc") + if err != nil { + t.Fatal(err) + } + t.Logf("kern.maxproc: %v", maxproc) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index ad74a11fb..d6c472a75 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -54,7 +54,7 @@ func nametomib(name string) (mib []_C_int, err error) { // NOTE(rsc): It seems strange to set the buffer to have // size CTL_MAXNAME+2 but use only CTL_MAXNAME - // as the size. I don't know why the +2 is here, but the + // as the size. I don't know why the +2 is here, but the // kernel uses +2 for its own implementation of this function. // I am scared that if we don't include the +2 here, the kernel // will silently write 2 words farther than we specify @@ -187,6 +187,37 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { return } +func setattrlistTimes(path string, times []Timespec, flags int) error { + _p0, err := BytePtrFromString(path) + if err != nil { + return err + } + + var attrList attrList + attrList.bitmapCount = ATTR_BIT_MAP_COUNT + attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME + + // order is mtime, atime: the opposite of Chtimes + attributes := [2]Timespec{times[1], times[0]} + options := 0 + if flags&AT_SYMLINK_NOFOLLOW != 0 { + options |= FSOPT_NOFOLLOW + } + _, _, e1 := Syscall6( + SYS_SETATTRLIST, + uintptr(unsafe.Pointer(_p0)), + uintptr(unsafe.Pointer(&attrList)), + uintptr(unsafe.Pointer(&attributes)), + uintptr(unsafe.Sizeof(attributes)), + uintptr(options), + 0, + ) + if e1 != 0 { + return e1 + } + return nil +} + func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { // Darwin doesn't support SYS_UTIMENSAT return ENOSYS @@ -239,6 +270,52 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) { return &value, err } +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + /* * Exposed directly */ @@ -377,7 +454,6 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) { // Searchfs // Delete // Copyfile -// Poll // Watchevent // Waitevent // Modwatch diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index c172a3da5..b3ac109a2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -11,27 +11,18 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int32(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int32(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} } //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) func Gettimeofday(tv *Timeval) (err error) { // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back + // but is otherwise unused. The answers come back // in the two registers. sec, usec, err := gettimeofday(tv) tv.Sec = int32(sec) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index c6c99c13a..75219444a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -11,27 +11,18 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) func Gettimeofday(tv *Timeval) (err error) { // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back + // but is otherwise unused. The answers come back // in the two registers. sec, usec, err := gettimeofday(tv) tv.Sec = sec diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go index d286cf408..faae207a4 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -9,27 +9,18 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int32(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int32(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} } //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) func Gettimeofday(tv *Timeval) (err error) { // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back + // but is otherwise unused. The answers come back // in the two registers. sec, usec, err := gettimeofday(tv) tv.Sec = int32(sec) @@ -69,3 +60,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e } func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index c33905cdc..d6d962801 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -11,27 +11,18 @@ import ( "unsafe" ) -func Getpagesize() int { return 16384 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) func Gettimeofday(tv *Timeval) (err error) { // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back + // but is otherwise unused. The answers come back // in the two registers. sec, usec, err := gettimeofday(tv) tv.Sec = sec diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index 3a483373d..49c65ea61 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -125,6 +125,50 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { return } +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + /* * Exposed directly */ @@ -225,7 +269,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // Getlogin // Sigpending // Sigaltstack -// Ioctl // Reboot // Execve // Vfork @@ -257,7 +300,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // Searchfs // Delete // Copyfile -// Poll // Watchevent // Waitevent // Modwatch @@ -403,7 +445,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // Pread_nocancel // Pwrite_nocancel // Waitid_nocancel -// Poll_nocancel // Msgsnd_nocancel // Msgrcv_nocancel // Sem_wait_nocancel diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go index da7cb7982..9babb31ea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -11,21 +11,12 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = nsec % 1e9 / 1e3 - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index d26e52eae..f9b82811b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -32,7 +32,7 @@ func nametomib(name string) (mib []_C_int, err error) { // NOTE(rsc): It seems strange to set the buffer to have // size CTL_MAXNAME+2 but use only CTL_MAXNAME - // as the size. I don't know why the +2 is here, but the + // as the size. I don't know why the +2 is here, but the // kernel uses +2 for its own implementation of this function. // I am scared that if we don't include the +2 here, the kernel // will silently write 2 words farther than we specify @@ -120,6 +120,11 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { return } +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + // Derive extattr namespace and attribute name func xattrnamespace(fullattr string) (ns int, attr string, err error) { @@ -391,6 +396,52 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) { return &value, err } +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + /* * Exposed directly */ @@ -434,6 +485,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) { //sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) @@ -550,7 +602,6 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) { // Searchfs // Delete // Copyfile -// Poll // Watchevent // Waitevent // Modwatch diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 6a0cd804d..21e03958c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -11,21 +11,12 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int32(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int32(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index e142540ef..9c945a657 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -11,21 +11,12 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = nsec % 1e9 / 1e3 - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 5504cb125..5cd6243f2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -11,21 +11,12 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = nsec / 1e9 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go index 654439e02..170a043a6 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go @@ -295,3 +295,13 @@ func TestCapRightsSetAndClear(t *testing.T) { t.Fatalf("Wrong rights set") } } + +func TestUname(t *testing.T) { + var utsname unix.Utsname + err := unix.Uname(&utsname) + if err != nil { + t.Fatalf("Uname: %v", err) + } + + t.Logf("OS: %s/%s %s", utsname.Sysname[:], utsname.Machine[:], utsname.Release[:]) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 2afe62bf8..797cda7eb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -255,7 +255,7 @@ func Getgroups() (gids []int, err error) { return nil, nil } - // Sanity check group count. Max is 1<<16 on Linux. + // Sanity check group count. Max is 1<<16 on Linux. if n < 0 || n > 1<<20 { return nil, EINVAL } @@ -290,8 +290,8 @@ type WaitStatus uint32 // 0x7F (stopped), or a signal number that caused an exit. // The 0x80 bit is whether there was a core dump. // An extra number (exit code, signal causing a stop) -// is in the high bits. At least that's the idea. -// There are various irregularities. For example, the +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the // "continued" status is 0xFFFF, distinguishing itself // from stopped via the core dump bit. @@ -926,17 +926,22 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from msg.Namelen = uint32(SizeofSockaddrAny) var iov Iovec if len(p) > 0 { - iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.Base = &p[0] iov.SetLen(len(p)) } var dummy byte if len(oob) > 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } // receive at least one normal byte - if len(p) == 0 { + if sockType != SOCK_DGRAM && len(p) == 0 { iov.Base = &dummy iov.SetLen(1) } - msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.Control = &oob[0] msg.SetControllen(len(oob)) } msg.Iov = &iov @@ -969,21 +974,26 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) } } var msg Msghdr - msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Name = (*byte)(ptr) msg.Namelen = uint32(salen) var iov Iovec if len(p) > 0 { - iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.Base = &p[0] iov.SetLen(len(p)) } var dummy byte if len(oob) > 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } // send at least one normal byte - if len(p) == 0 { + if sockType != SOCK_DGRAM && len(p) == 0 { iov.Base = &dummy iov.SetLen(1) } - msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.Control = &oob[0] msg.SetControllen(len(oob)) } msg.Iov = &iov @@ -1013,7 +1023,7 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro var buf [sizeofPtr]byte - // Leading edge. PEEKTEXT/PEEKDATA don't require aligned + // Leading edge. PEEKTEXT/PEEKDATA don't require aligned // access (PEEKUSER warns that it might), but if we don't // align our reads, we might straddle an unmapped page // boundary and not get the bytes leading up to the page @@ -1115,6 +1125,10 @@ func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) } +func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) +} + func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) } @@ -1252,6 +1266,7 @@ func Getpgrp() (pid int) { //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT //sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 //sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) @@ -1395,7 +1410,6 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { // Msgget // Msgrcv // Msgsnd -// Newfstatat // Nfsservctl // Personality // Pselect6 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index 2b881b979..bb8e4fbd8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -14,21 +14,12 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int32(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = int32(nsec / 1e9) - tv.Usec = int32(nsec % 1e9 / 1e3) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} } //sysnb pipe(p *[2]_C_int) (err error) @@ -63,6 +54,7 @@ func Pipe2(p []int, flags int) (err error) { //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 //sysnb Getegid() (egid int) = SYS_GETEGID32 //sysnb Geteuid() (euid int) = SYS_GETEUID32 @@ -185,9 +177,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // On x86 Linux, all the socket calls go through an extra indirection, // I think because the 5-register system call interface can't handle -// the 6-argument calls like sendto and recvfrom. Instead the +// the 6-argument calls like sendto and recvfrom. Instead the // arguments to the underlying system call are the number below -// and a pointer to an array of uintptr. We hide the pointer in the +// and a pointer to an array of uintptr. We hide the pointer in the // socketcall assembly to avoid allocation on every system call. const ( diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 9516a3fd7..53d38a534 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -11,6 +11,7 @@ package unix //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT //sys Fstatfs(fd int, buf *Statfs_t) (err error) //sys Ftruncate(fd int, length int64) (err error) //sysnb Getegid() (egid int) @@ -69,8 +70,6 @@ func Gettimeofday(tv *Timeval) (err error) { return nil } -func Getpagesize() int { return 4096 } - func Time(t *Time_t) (tt Time_t, err error) { var tv Timeval errno := gettimeofday(&tv) @@ -85,19 +84,12 @@ func Time(t *Time_t) (tt Time_t, err error) { //sys Utime(path string, buf *Utimbuf) (err error) -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = nsec / 1e9 - tv.Usec = nsec % 1e9 / 1e3 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } //sysnb pipe(p *[2]_C_int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 71d870228..c59f8588f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -11,21 +11,12 @@ import ( "unsafe" ) -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int32(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = int32(nsec / 1e9) - tv.Usec = int32(nsec % 1e9 / 1e3) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} } func Pipe(p []int) (err error) { @@ -86,6 +77,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { //sys Dup2(oldfd int, newfd int) (err error) //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sysnb Getegid() (egid int) = SYS_GETEGID32 //sysnb Geteuid() (euid int) = SYS_GETEUID32 //sysnb Getgid() (gid int) = SYS_GETGID32 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index 4a136396c..9a8e6e411 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -21,7 +21,12 @@ package unix //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK -//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6 + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + ts := Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + return Pselect(nfd, r, w, e, &ts, nil) +} + //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys Setfsgid(gid int) (err error) //sys Setfsuid(uid int) (err error) @@ -66,23 +71,14 @@ func Lstat(path string, stat *Stat_t) (err error) { //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) -func Getpagesize() int { return 65536 } - //sysnb Gettimeofday(tv *Timeval) (err error) -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = nsec / 1e9 - tv.Usec = nsec % 1e9 / 1e3 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func Time(t *Time_t) (Time_t, error) { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 73318e5c6..46aa4ff9c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -10,6 +10,7 @@ package unix //sys Dup2(oldfd int, newfd int) (err error) //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT //sys Fstatfs(fd int, buf *Statfs_t) (err error) //sys Ftruncate(fd int, length int64) (err error) //sysnb Getegid() (egid int) @@ -23,7 +24,12 @@ package unix //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK -//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6 + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + ts := Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + return Pselect(nfd, r, w, e, &ts, nil) +} + //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys Setfsgid(gid int) (err error) //sys Setfsuid(uid int) (err error) @@ -55,8 +61,6 @@ package unix //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) -func Getpagesize() int { return 65536 } - //sysnb Gettimeofday(tv *Timeval) (err error) func Time(t *Time_t) (tt Time_t, err error) { @@ -73,19 +77,12 @@ func Time(t *Time_t) (tt Time_t, err error) { //sys Utime(path string, buf *Utimbuf) (err error) -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = nsec / 1e9 - tv.Usec = nsec % 1e9 / 1e3 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func Pipe(p []int) (err error) { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index b83d93fdf..40b8e4f0f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -65,6 +65,7 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys Utime(path string, buf *Utimbuf) (err error) @@ -99,19 +100,12 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) { return } -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int32(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = int32(nsec / 1e9) - tv.Usec = int32(nsec % 1e9 / 1e3) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} } //sysnb pipe2(p *[2]_C_int, flags int) (err error) @@ -235,5 +229,3 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { } return poll(&fds[0], len(fds), timeout) } - -func Getpagesize() int { return 4096 } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 60770f627..17c9116e8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -11,6 +11,7 @@ package unix //sys Dup2(oldfd int, newfd int) (err error) //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT //sys Fstatfs(fd int, buf *Statfs_t) (err error) //sys Ftruncate(fd int, length int64) (err error) //sysnb Getegid() (egid int) @@ -28,7 +29,7 @@ package unix //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK -//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys Setfsgid(gid int) (err error) //sys Setfsuid(uid int) (err error) @@ -61,26 +62,17 @@ package unix //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) -func Getpagesize() int { return 65536 } - //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Time(t *Time_t) (tt Time_t, err error) //sys Utime(path string, buf *Utimbuf) (err error) -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = nsec / 1e9 - tv.Usec = nsec % 1e9 / 1e3 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func (r *PtraceRegs) PC() uint64 { return r.Nip } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index 1708a4bbf..c0d86e722 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -15,6 +15,7 @@ import ( //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT //sys Fstatfs(fd int, buf *Statfs_t) (err error) //sys Ftruncate(fd int, length int64) (err error) //sysnb Getegid() (egid int) @@ -46,8 +47,6 @@ import ( //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) //sysnb setgroups(n int, list *_Gid_t) (err error) -func Getpagesize() int { return 4096 } - //sysnb Gettimeofday(tv *Timeval) (err error) func Time(t *Time_t) (tt Time_t, err error) { @@ -64,19 +63,12 @@ func Time(t *Time_t) (tt Time_t, err error) { //sys Utime(path string, buf *Utimbuf) (err error) -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = nsec / 1e9 - tv.Usec = nsec % 1e9 / 1e3 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } //sysnb pipe2(p *[2]_C_int, flags int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index 20b7454d7..a00f99279 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -6,15 +6,11 @@ package unix -import ( - "sync/atomic" - "syscall" -) - //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) //sys Dup2(oldfd int, newfd int) (err error) //sys Fchown(fd int, uid int, gid int) (err error) //sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Fstatfs(fd int, buf *Statfs_t) (err error) //sys Ftruncate(fd int, length int64) (err error) //sysnb Getegid() (egid int) @@ -63,21 +59,6 @@ import ( //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) -func sysconf(name int) (n int64, err syscall.Errno) - -// pageSize caches the value of Getpagesize, since it can't change -// once the system is booted. -var pageSize int64 // accessed atomically - -func Getpagesize() int { - n := atomic.LoadInt64(&pageSize) - if n == 0 { - n, _ = sysconf(_SC_PAGESIZE) - atomic.StoreInt64(&pageSize, n) - } - return int(n) -} - func Ioperm(from int, num int, on int) (err error) { return ENOSYS } @@ -102,19 +83,12 @@ func Time(t *Time_t) (tt Time_t, err error) { //sys Utime(path string, buf *Utimbuf) (err error) -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Sec = nsec / 1e9 - tv.Usec = int32(nsec % 1e9 / 1e3) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func (r *PtraceRegs) PC() uint64 { return r.Tpc } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_test.go b/vendor/golang.org/x/sys/unix/syscall_linux_test.go index 377023130..c61ddeb48 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_test.go @@ -56,34 +56,6 @@ func TestIoctlGetInt(t *testing.T) { t.Logf("%d bits of entropy available", v) } -func TestPoll(t *testing.T) { - f, cleanup := mktmpfifo(t) - defer cleanup() - - const timeout = 100 - - ok := make(chan bool, 1) - go func() { - select { - case <-time.After(10 * timeout * time.Millisecond): - t.Errorf("Poll: failed to timeout after %d milliseconds", 10*timeout) - case <-ok: - } - }() - - fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} - n, err := unix.Poll(fds, timeout) - ok <- true - if err != nil { - t.Errorf("Poll: unexpected error: %v", err) - return - } - if n != 0 { - t.Errorf("Poll: wrong number of events: got %v, expected %v", n, 0) - return - } -} - func TestPpoll(t *testing.T) { f, cleanup := mktmpfifo(t) defer cleanup() @@ -113,25 +85,6 @@ func TestPpoll(t *testing.T) { } } -// mktmpfifo creates a temporary FIFO and provides a cleanup function. -func mktmpfifo(t *testing.T) (*os.File, func()) { - err := unix.Mkfifo("fifo", 0666) - if err != nil { - t.Fatalf("mktmpfifo: failed to create FIFO: %v", err) - } - - f, err := os.OpenFile("fifo", os.O_RDWR, 0666) - if err != nil { - os.Remove("fifo") - t.Fatalf("mktmpfifo: failed to open FIFO: %v", err) - } - - return f, func() { - f.Close() - os.Remove("fifo") - } -} - func TestTime(t *testing.T) { var ut unix.Time_t ut2, err := unix.Time(&ut) @@ -184,6 +137,38 @@ func TestUtime(t *testing.T) { } } +func TestUtimesNanoAt(t *testing.T) { + defer chtmpdir(t)() + + symlink := "symlink1" + os.Remove(symlink) + err := os.Symlink("nonexisting", symlink) + if err != nil { + t.Fatal(err) + } + + ts := []unix.Timespec{ + {Sec: 1111, Nsec: 2222}, + {Sec: 3333, Nsec: 4444}, + } + err = unix.UtimesNanoAt(unix.AT_FDCWD, symlink, ts, unix.AT_SYMLINK_NOFOLLOW) + if err != nil { + t.Fatalf("UtimesNanoAt: %v", err) + } + + var st unix.Stat_t + err = unix.Lstat(symlink, &st) + if err != nil { + t.Fatalf("Lstat: %v", err) + } + if st.Atim != ts[0] { + t.Errorf("UtimesNanoAt: wrong atime: %v", st.Atim) + } + if st.Mtim != ts[1] { + t.Errorf("UtimesNanoAt: wrong mtime: %v", st.Mtim) + } +} + func TestGetrlimit(t *testing.T) { var rlim unix.Rlimit err := unix.Getrlimit(unix.RLIMIT_AS, &rlim) @@ -192,6 +177,61 @@ func TestGetrlimit(t *testing.T) { } } +func TestSelect(t *testing.T) { + _, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) + if err != nil { + t.Fatalf("Select: %v", err) + } +} + +func TestUname(t *testing.T) { + var utsname unix.Utsname + err := unix.Uname(&utsname) + if err != nil { + t.Fatalf("Uname: %v", err) + } + + t.Logf("OS: %s/%s %s", utsname.Sysname[:], utsname.Machine[:], utsname.Release[:]) +} + +func TestFstatat(t *testing.T) { + defer chtmpdir(t)() + + touch(t, "file1") + + var st1 unix.Stat_t + err := unix.Stat("file1", &st1) + if err != nil { + t.Fatalf("Stat: %v", err) + } + + var st2 unix.Stat_t + err = unix.Fstatat(unix.AT_FDCWD, "file1", &st2, 0) + if err != nil { + t.Fatalf("Fstatat: %v", err) + } + + if st1 != st2 { + t.Errorf("Fstatat: returned stat does not match Stat") + } + + os.Symlink("file1", "symlink1") + + err = unix.Lstat("symlink1", &st1) + if err != nil { + t.Fatalf("Lstat: %v", err) + } + + err = unix.Fstatat(unix.AT_FDCWD, "symlink1", &st2, unix.AT_SYMLINK_NOFOLLOW) + if err != nil { + t.Fatalf("Fstatat: %v", err) + } + + if st1 != st2 { + t.Errorf("Fstatat: returned stat does not match Lstat") + } +} + // utilities taken from os/os_test.go func touch(t *testing.T, name string) { diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index e12966845..914680952 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -55,7 +55,6 @@ func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) { } func nametomib(name string) (mib []_C_int, err error) { - // Split name into components. var parts []string last := 0 @@ -124,6 +123,50 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return -1, ENOSYS } +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + /* * Exposed directly */ @@ -384,7 +427,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e // getitimer // getvfsstat // getxattr -// ioctl // ktrace // lchflags // lchmod @@ -422,7 +464,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e // ntp_adjtime // pmc_control // pmc_get_info -// poll // pollts // preadv // profil diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go index afaca0983..24f74e58c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -6,21 +6,12 @@ package unix -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int64(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go index a6ff04ce5..6878bf7ff 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -6,21 +6,12 @@ package unix -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int64(nsec / 1e9) - ts.Nsec = int64(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go index 68a6969b2..dbbfcf71d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -6,21 +6,12 @@ package unix -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int64(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 408e63081..b98cd07db 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -13,6 +13,7 @@ package unix import ( + "sort" "syscall" "unsafe" ) @@ -32,23 +33,11 @@ type SockaddrDatalink struct { func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func nametomib(name string) (mib []_C_int, err error) { - - // Perform lookup via a binary search - left := 0 - right := len(sysctlMib) - 1 - for { - idx := left + (right-left)/2 - switch { - case name == sysctlMib[idx].ctlname: - return sysctlMib[idx].ctloid, nil - case name > sysctlMib[idx].ctlname: - left = idx + 1 - default: - right = idx - 1 - } - if left > right { - break - } + i := sort.Search(len(sysctlMib), func(i int) bool { + return sysctlMib[i].ctlname >= name + }) + if i < len(sysctlMib) && sysctlMib[i].ctlname == name { + return sysctlMib[i].ctloid, nil } return nil, EINVAL } @@ -102,6 +91,50 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { return } +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + /* * Exposed directly */ @@ -222,7 +255,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // getresuid // getrtable // getthrid -// ioctl // ktrace // lfs_bmapv // lfs_markv @@ -243,7 +275,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { // nfssvc // nnpfspioctl // openat -// poll // preadv // profil // pwritev diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go index a66ddc59c..994964a91 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -6,21 +6,12 @@ package unix -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int64(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index 0776c1faf..649e67fcc 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -6,21 +6,12 @@ package unix -func Getpagesize() int { return 4096 } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = nsec % 1e9 / 1e3 - tv.Sec = nsec / 1e9 - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go index 14ddaf3f3..59844f504 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -6,23 +6,12 @@ package unix -import "syscall" - -func Getpagesize() int { return syscall.Getpagesize() } - -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = int64(nsec / 1e9) - ts.Nsec = int32(nsec % 1e9) - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} } func SetKevent(k *Kevent_t, fd, mode, flags int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 0d4e5c4e6..3ab9e07c8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -13,7 +13,6 @@ package unix import ( - "sync/atomic" "syscall" "unsafe" ) @@ -167,7 +166,7 @@ func Getwd() (wd string, err error) { func Getgroups() (gids []int, err error) { n, err := getgroups(0, nil) - // Check for error and sanity check group count. Newer versions of + // Check for error and sanity check group count. Newer versions of // Solaris allow up to 1024 (NGROUPS_MAX). if n < 0 || n > 1024 { if err != nil { @@ -351,7 +350,7 @@ func Futimesat(dirfd int, path string, tv []Timeval) error { } // Solaris doesn't have an futimes function because it allows NULL to be -// specified as the path for futimesat. However, Go doesn't like +// specified as the path for futimesat. However, Go doesn't like // NULL-style string interfaces, so this simple wrapper is provided. func Futimes(fd int, tv []Timeval) error { if tv == nil { @@ -515,6 +514,24 @@ func Acct(path string) (err error) { return acct(pathp) } +//sys __makedev(version int, major uint, minor uint) (val uint64) + +func Mkdev(major, minor uint32) uint64 { + return __makedev(NEWDEV, uint(major), uint(minor)) +} + +//sys __major(version int, dev uint64) (val uint) + +func Major(dev uint64) uint32 { + return uint32(__major(NEWDEV, dev)) +} + +//sys __minor(version int, dev uint64) (val uint) + +func Minor(dev uint64) uint32 { + return uint32(__minor(NEWDEV, dev)) +} + /* * Expose the ioctl function */ @@ -561,6 +578,15 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) { return &value, err } +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + /* * Exposed directly */ @@ -613,6 +639,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) { //sys Mlock(b []byte) (err error) //sys Mlockall(flags int) (err error) //sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) //sys Munlock(b []byte) (err error) //sys Munlockall() (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) @@ -699,18 +726,3 @@ func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, e func Munmap(b []byte) (err error) { return mapper.Munmap(b) } - -//sys sysconf(name int) (n int64, err error) - -// pageSize caches the value of Getpagesize, since it can't change -// once the system is booted. -var pageSize int64 // accessed atomically - -func Getpagesize() int { - n := atomic.LoadInt64(&pageSize) - if n == 0 { - n, _ = sysconf(_SC_PAGESIZE) - atomic.StoreInt64(&pageSize, n) - } - return int(n) -} diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go index 5aff62c3b..9d4e7a678 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -6,19 +6,12 @@ package unix -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } - -func NsecToTimespec(nsec int64) (ts Timespec) { - ts.Sec = nsec / 1e9 - ts.Nsec = nsec % 1e9 - return +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} } -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = nsec % 1e9 / 1e3 - tv.Sec = int64(nsec / 1e9) - return +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} } func (iov *Iovec) SetLen(length int) { diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_test.go b/vendor/golang.org/x/sys/unix/syscall_unix_test.go index 394b3502e..d0a09ce88 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_test.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_test.go @@ -138,6 +138,9 @@ func TestPassFD(t *testing.T) { uc.Close() }) _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob) + if err != nil { + t.Fatalf("ReadMsgUnix: %v", err) + } closeUnix.Stop() scms, err := unix.ParseSocketControlMessage(oob[:oobn]) @@ -335,6 +338,9 @@ func TestDup(t *testing.T) { t.Fatalf("Write to dup2 fd failed: %v", err) } _, err = unix.Seek(f, 0, 0) + if err != nil { + t.Fatalf("Seek failed: %v", err) + } _, err = unix.Read(f, b2) if err != nil { t.Fatalf("Read back failed: %v", err) @@ -343,3 +349,50 @@ func TestDup(t *testing.T) { t.Errorf("Dup: stdout write not in file, expected %v, got %v", string(b1), string(b2)) } } + +func TestPoll(t *testing.T) { + f, cleanup := mktmpfifo(t) + defer cleanup() + + const timeout = 100 + + ok := make(chan bool, 1) + go func() { + select { + case <-time.After(10 * timeout * time.Millisecond): + t.Errorf("Poll: failed to timeout after %d milliseconds", 10*timeout) + case <-ok: + } + }() + + fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} + n, err := unix.Poll(fds, timeout) + ok <- true + if err != nil { + t.Errorf("Poll: unexpected error: %v", err) + return + } + if n != 0 { + t.Errorf("Poll: wrong number of events: got %v, expected %v", n, 0) + return + } +} + +// mktmpfifo creates a temporary FIFO and provides a cleanup function. +func mktmpfifo(t *testing.T) (*os.File, func()) { + err := unix.Mkfifo("fifo", 0666) + if err != nil { + t.Fatalf("mktmpfifo: failed to create FIFO: %v", err) + } + + f, err := os.OpenFile("fifo", os.O_RDWR, 0666) + if err != nil { + os.Remove("fifo") + t.Fatalf("mktmpfifo: failed to open FIFO: %v", err) + } + + return f, func() { + f.Close() + os.Remove("fifo") + } +} diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go new file mode 100644 index 000000000..139fbbebb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -0,0 +1,62 @@ +// Copyright 2017 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. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +// TimespecToNsec converts a Timespec value into a number of +// nanoseconds since the Unix epoch. +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +// NsecToTimespec takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timespec value. +func NsecToTimespec(nsec int64) Timespec { + sec := nsec / 1e9 + nsec = nsec % 1e9 + if nsec < 0 { + nsec += 1e9 + sec-- + } + return setTimespec(sec, nsec) +} + +// TimevalToNsec converts a Timeval value into a number of nanoseconds +// since the Unix epoch. +func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } + +// NsecToTimeval takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timeval value. +func NsecToTimeval(nsec int64) Timeval { + nsec += 999 // round up to microsecond + usec := nsec % 1e9 / 1e3 + sec := nsec / 1e9 + if usec < 0 { + usec += 1e6 + sec-- + } + return setTimeval(sec, usec) +} + +// Unix returns ts as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +// Unix returns tv as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch. +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch. +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go index 415124d4a..46b9908e0 100644 --- a/vendor/golang.org/x/sys/unix/types_darwin.go +++ b/vendor/golang.org/x/sys/unix/types_darwin.go @@ -19,6 +19,7 @@ package unix #define _DARWIN_USE_64_BIT_INODE #include #include +#include #include #include #include @@ -38,6 +39,7 @@ package unix #include #include #include +#include #include #include #include @@ -252,3 +254,24 @@ const ( AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// uname + +type Utsname C.struct_utsname diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go index 80b27781d..46d7da96d 100644 --- a/vendor/golang.org/x/sys/unix/types_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go @@ -17,6 +17,7 @@ package unix #define KERNEL #include #include +#include #include #include #include @@ -241,9 +242,28 @@ type BpfHdr C.struct_bpf_hdr type Termios C.struct_termios +type Winsize C.struct_winsize + // fchmodat-like syscalls. const ( AT_FDCWD = C.AT_FDCWD AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go index 934fd7ace..8ba8b1d26 100644 --- a/vendor/golang.org/x/sys/unix/types_freebsd.go +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -17,6 +17,7 @@ package unix #define KERNEL #include #include +#include #include #include #include @@ -35,6 +36,7 @@ package unix #include #include #include +#include #include #include #include @@ -367,6 +369,28 @@ const ( AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLINIGNEOF = C.POLLINIGNEOF + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + // Capabilities type CapRights C.struct_cap_rights + +// Uname + +type Utsname C.struct_utsname diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go index cb95c80aa..7ff50bc84 100644 --- a/vendor/golang.org/x/sys/unix/types_netbsd.go +++ b/vendor/golang.org/x/sys/unix/types_netbsd.go @@ -17,6 +17,7 @@ package unix #define KERNEL #include #include +#include #include #include #include @@ -227,6 +228,8 @@ type BpfTimeval C.struct_bpf_timeval type Termios C.struct_termios +type Winsize C.struct_winsize + // fchmodat-like syscalls. const ( @@ -234,6 +237,23 @@ const ( AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + // Sysctl type Sysctlnode C.struct_sysctlnode diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go index 392da69bf..837b514dc 100644 --- a/vendor/golang.org/x/sys/unix/types_openbsd.go +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -17,6 +17,7 @@ package unix #define KERNEL #include #include +#include #include #include #include @@ -243,9 +244,28 @@ type BpfTimeval C.struct_bpf_timeval type Termios C.struct_termios +type Winsize C.struct_winsize + // fchmodat-like syscalls. const ( AT_FDCWD = C.AT_FDCWD AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go index 393c7f04f..f77715544 100644 --- a/vendor/golang.org/x/sys/unix/types_solaris.go +++ b/vendor/golang.org/x/sys/unix/types_solaris.go @@ -24,6 +24,7 @@ package unix #include #include #include +#include #include #include #include @@ -256,10 +257,6 @@ type BpfTimeval C.struct_bpf_timeval type BpfHdr C.struct_bpf_hdr -// sysconf information - -const _SC_PAGESIZE = C._SC_PAGESIZE - // Terminal handling type Termios C.struct_termios @@ -267,3 +264,20 @@ type Termios C.struct_termios type Termio C.struct_termio type Winsize C.struct_winsize + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index 1c68758b6..dcba88424 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -49,6 +49,86 @@ const ( AF_UNSPEC = 0x0 AF_UTUN = 0x26 ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -169,6 +249,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0xc CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -390,6 +472,11 @@ const ( FF1 = 0x4000 FFDLY = 0x4000 FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 F_ADDFILESIGS = 0x3d F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 F_ADDFILESIGS_RETURN = 0x61 @@ -425,6 +512,7 @@ const ( F_PATHPKG_CHECK = 0x34 F_PEOFPOSMODE = 0x3 F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 F_RDADVISE = 0x2c F_RDAHEAD = 0x2d F_RDLCK = 0x1 @@ -441,10 +529,12 @@ const ( F_SINGLE_WRITER = 0x4c F_THAW_FS = 0x36 F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 F_UNLCK = 0x2 F_VOLPOSMODE = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -681,6 +771,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f @@ -771,6 +862,7 @@ const ( IP_RECVOPTS = 0x5 IP_RECVPKTINFO = 0x1a IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b IP_RECVTTL = 0x18 IP_RETOPTS = 0x8 IP_RF = 0x8000 @@ -789,6 +881,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 48f63d4f0..1a51c963c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -49,6 +49,86 @@ const ( AF_UNSPEC = 0x0 AF_UTUN = 0x26 ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -169,6 +249,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0xc CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -390,6 +472,11 @@ const ( FF1 = 0x4000 FFDLY = 0x4000 FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 F_ADDFILESIGS = 0x3d F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 F_ADDFILESIGS_RETURN = 0x61 @@ -425,6 +512,7 @@ const ( F_PATHPKG_CHECK = 0x34 F_PEOFPOSMODE = 0x3 F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 F_RDADVISE = 0x2c F_RDAHEAD = 0x2d F_RDLCK = 0x1 @@ -441,10 +529,12 @@ const ( F_SINGLE_WRITER = 0x4c F_THAW_FS = 0x36 F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 F_UNLCK = 0x2 F_VOLPOSMODE = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -681,6 +771,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f @@ -771,6 +862,7 @@ const ( IP_RECVOPTS = 0x5 IP_RECVPKTINFO = 0x1a IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b IP_RECVTTL = 0x18 IP_RETOPTS = 0x8 IP_RF = 0x8000 @@ -789,6 +881,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index 24cb522d9..fa135b17c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -49,6 +49,86 @@ const ( AF_UNSPEC = 0x0 AF_UTUN = 0x26 ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -169,6 +249,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0xc CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -390,6 +472,11 @@ const ( FF1 = 0x4000 FFDLY = 0x4000 FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 F_ADDFILESIGS = 0x3d F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 F_ADDFILESIGS_RETURN = 0x61 @@ -425,6 +512,7 @@ const ( F_PATHPKG_CHECK = 0x34 F_PEOFPOSMODE = 0x3 F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 F_RDADVISE = 0x2c F_RDAHEAD = 0x2d F_RDLCK = 0x1 @@ -441,10 +529,12 @@ const ( F_SINGLE_WRITER = 0x4c F_THAW_FS = 0x36 F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 F_UNLCK = 0x2 F_VOLPOSMODE = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -681,6 +771,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f @@ -771,6 +862,7 @@ const ( IP_RECVOPTS = 0x5 IP_RECVPKTINFO = 0x1a IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b IP_RECVTTL = 0x18 IP_RETOPTS = 0x8 IP_RF = 0x8000 @@ -789,6 +881,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index cc8cc5b57..6419c65e1 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -49,6 +49,86 @@ const ( AF_UNSPEC = 0x0 AF_UTUN = 0x26 ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff B0 = 0x0 B110 = 0x6e B115200 = 0x1c200 @@ -169,6 +249,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0xc CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -390,6 +472,11 @@ const ( FF1 = 0x4000 FFDLY = 0x4000 FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 F_ADDFILESIGS = 0x3d F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 F_ADDFILESIGS_RETURN = 0x61 @@ -425,6 +512,7 @@ const ( F_PATHPKG_CHECK = 0x34 F_PEOFPOSMODE = 0x3 F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 F_RDADVISE = 0x2c F_RDAHEAD = 0x2d F_RDLCK = 0x1 @@ -441,10 +529,12 @@ const ( F_SINGLE_WRITER = 0x4c F_THAW_FS = 0x36 F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 F_UNLCK = 0x2 F_VOLPOSMODE = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -681,6 +771,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f @@ -771,6 +862,7 @@ const ( IP_RECVOPTS = 0x5 IP_RECVPKTINFO = 0x1a IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b IP_RECVTTL = 0x18 IP_RETOPTS = 0x8 IP_RF = 0x8000 @@ -789,6 +881,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 1d3eec44d..a8b05878e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -351,6 +351,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0x18 CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -608,6 +610,7 @@ const ( F_UNLCKSYS = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -944,6 +947,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -981,6 +988,49 @@ const ( MAP_STACK = 0x400 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 MSG_CMSG_CLOEXEC = 0x40000 MSG_COMPAT = 0x8000 MSG_CTRUNC = 0x20 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index ac094f9cf..cf5f01260 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -351,6 +351,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0x18 CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -608,6 +610,7 @@ const ( F_UNLCKSYS = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -944,6 +947,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -982,6 +989,49 @@ const ( MAP_STACK = 0x400 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 MSG_CMSG_CLOEXEC = 0x40000 MSG_COMPAT = 0x8000 MSG_CTRUNC = 0x20 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index c5c6f13e5..9bbb90ad8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -351,6 +351,8 @@ const ( CSTOP = 0x13 CSTOPB = 0x400 CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 CTL_MAXNAME = 0x18 CTL_NET = 0x4 DLT_A429 = 0xb8 @@ -615,6 +617,7 @@ const ( F_UNLCKSYS = 0x4 F_WRLCK = 0x3 HUPCL = 0x4000 + HW_MACHINE = 0x1 ICANON = 0x100 ICMP6_FILTER = 0x12 ICRNL = 0x100 @@ -951,6 +954,10 @@ const ( IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -989,6 +996,49 @@ const ( MAP_STACK = 0x400 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 MSG_CMSG_CLOEXEC = 0x40000 MSG_COMPAT = 0x8000 MSG_CTRUNC = 0x20 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 a6b3b5f14..8947248f6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +931,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +946,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +965,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +986,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1046,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1243,7 +1278,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1268,7 +1303,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1312,6 +1347,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1320,6 +1356,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1341,10 +1378,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1359,8 +1397,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1371,6 +1409,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1401,6 +1440,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1539,6 +1579,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1547,11 +1588,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1559,6 +1602,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1626,6 +1670,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x540b TCGETA = 0x5405 TCGETS = 0x5401 @@ -1649,6 +1699,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1708,6 +1759,7 @@ const ( TIOCGPKT = 0x80045438 TIOCGPTLCK = 0x80045439 TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1765,6 +1817,7 @@ const ( TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 TOSTOP = 0x100 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 TUNGETFEATURES = 0x800454cf @@ -1790,6 +1843,8 @@ const ( TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -1819,6 +1874,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -1999,7 +2065,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) 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 4ffc8d29c..4083cb2a8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +931,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +946,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +965,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +986,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1046,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1153,7 +1188,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1244,7 +1279,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1269,7 +1304,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1313,6 +1348,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1321,6 +1357,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1342,10 +1379,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1360,8 +1398,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1372,6 +1410,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1402,6 +1441,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1540,6 +1580,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1548,11 +1589,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1560,6 +1603,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1627,6 +1671,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x540b TCGETA = 0x5405 TCGETS = 0x5401 @@ -1650,6 +1700,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1709,6 +1760,7 @@ const ( TIOCGPKT = 0x80045438 TIOCGPTLCK = 0x80045439 TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1766,6 +1818,7 @@ const ( TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 TOSTOP = 0x100 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 TUNGETFEATURES = 0x800454cf @@ -1791,6 +1844,8 @@ const ( TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -1820,6 +1875,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -2000,7 +2066,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index f4b178ef1..27d38352b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -901,6 +930,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -915,6 +945,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -933,6 +964,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -953,8 +985,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1011,6 +1045,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1248,7 +1283,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1273,7 +1308,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1317,6 +1352,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1325,6 +1361,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1346,10 +1383,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1364,8 +1402,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1376,6 +1414,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1406,6 +1445,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1544,6 +1584,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1552,11 +1593,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1564,6 +1607,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1631,6 +1675,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x540b TCGETA = 0x5405 TCGETS = 0x5401 @@ -1654,6 +1704,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1713,6 +1764,7 @@ const ( TIOCGPKT = 0x80045438 TIOCGPTLCK = 0x80045439 TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1770,6 +1822,7 @@ const ( TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 TOSTOP = 0x100 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 TUNGETFEATURES = 0x800454cf @@ -1795,6 +1848,8 @@ const ( TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -1824,6 +1879,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -2004,7 +2070,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) 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 495f13b61..69ad31470 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -393,6 +395,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -441,6 +444,7 @@ const ( EXTA = 0xe EXTB = 0xf EXTPROC = 0x10000 + EXTRA_MAGIC = 0x45585401 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -454,6 +458,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -508,6 +514,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -606,6 +625,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -645,8 +665,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -659,12 +681,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -675,8 +699,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -690,7 +716,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -733,6 +761,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -770,6 +799,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +932,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +947,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +966,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +987,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1047,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1153,7 +1189,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1233,7 +1269,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1258,7 +1294,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1302,6 +1338,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1310,6 +1347,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1331,10 +1369,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1349,8 +1388,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1361,6 +1400,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1391,6 +1431,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1529,6 +1570,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1537,11 +1579,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1549,6 +1593,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1616,6 +1661,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x540b TCGETA = 0x5405 TCGETS = 0x5401 @@ -1639,6 +1690,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1698,6 +1750,7 @@ const ( TIOCGPKT = 0x80045438 TIOCGPTLCK = 0x80045439 TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1755,6 +1808,7 @@ const ( TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 TOSTOP = 0x100 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 TUNGETFEATURES = 0x800454cf @@ -1780,6 +1834,8 @@ const ( TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -1809,6 +1865,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -1989,7 +2056,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 59651e415..d131a4cc5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +931,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +946,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +965,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +986,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1046,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1245,7 +1280,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1270,7 +1305,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1314,6 +1349,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1322,6 +1358,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1343,10 +1380,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1361,8 +1399,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1373,6 +1411,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1403,6 +1442,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1541,6 +1581,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1549,11 +1590,13 @@ const ( SO_ERROR = 0x1007 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x8 SO_LINGER = 0x80 SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0x100 @@ -1561,6 +1604,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1e SO_PRIORITY = 0xc @@ -1629,6 +1673,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x5407 TCGETA = 0x5401 TCGETS = 0x540d @@ -1651,6 +1701,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1709,6 +1760,7 @@ const ( TIOCGPKT = 0x40045438 TIOCGPTLCK = 0x40045439 TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 TIOCGRS485 = 0x4020542e TIOCGSERIAL = 0x5484 TIOCGSID = 0x7416 @@ -1769,6 +1821,7 @@ const ( TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 TUNGETFEATURES = 0x400454cf @@ -1794,6 +1847,8 @@ const ( TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -1824,6 +1879,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index a09bf9b18..62dd20352 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +931,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +946,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +965,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +986,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1046,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1153,7 +1188,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1245,7 +1280,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1270,7 +1305,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1314,6 +1349,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1322,6 +1358,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1343,10 +1380,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1361,8 +1399,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1373,6 +1411,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1403,6 +1442,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1541,6 +1581,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1549,11 +1590,13 @@ const ( SO_ERROR = 0x1007 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x8 SO_LINGER = 0x80 SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0x100 @@ -1561,6 +1604,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1e SO_PRIORITY = 0xc @@ -1629,6 +1673,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x5407 TCGETA = 0x5401 TCGETS = 0x540d @@ -1651,6 +1701,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1709,6 +1760,7 @@ const ( TIOCGPKT = 0x40045438 TIOCGPTLCK = 0x40045439 TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 TIOCGRS485 = 0x4020542e TIOCGSERIAL = 0x5484 TIOCGSID = 0x7416 @@ -1769,6 +1821,7 @@ const ( TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 TUNGETFEATURES = 0x400454cf @@ -1794,6 +1847,8 @@ const ( TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -1824,6 +1879,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 72a0083c4..dc8e56e30 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +931,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +946,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +965,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +986,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1046,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1153,7 +1188,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1245,7 +1280,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1270,7 +1305,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1314,6 +1349,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1322,6 +1358,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1343,10 +1380,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1361,8 +1399,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1373,6 +1411,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1403,6 +1442,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1541,6 +1581,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1549,11 +1590,13 @@ const ( SO_ERROR = 0x1007 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x8 SO_LINGER = 0x80 SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0x100 @@ -1561,6 +1604,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1e SO_PRIORITY = 0xc @@ -1629,6 +1673,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x5407 TCGETA = 0x5401 TCGETS = 0x540d @@ -1651,6 +1701,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1709,6 +1760,7 @@ const ( TIOCGPKT = 0x40045438 TIOCGPTLCK = 0x40045439 TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 TIOCGRS485 = 0x4020542e TIOCGSERIAL = 0x5484 TIOCGSID = 0x7416 @@ -1769,6 +1821,7 @@ const ( TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 TUNGETFEATURES = 0x400454cf @@ -1794,6 +1847,8 @@ const ( TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -1824,6 +1879,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 84c0e3cc1..906766254 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -902,6 +931,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -916,6 +946,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -934,6 +965,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -954,8 +986,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1012,6 +1046,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1245,7 +1280,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1270,7 +1305,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1314,6 +1349,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1322,6 +1358,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1343,10 +1380,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1361,8 +1399,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1373,6 +1411,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1403,6 +1442,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1541,6 +1581,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1549,11 +1590,13 @@ const ( SO_ERROR = 0x1007 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x8 SO_LINGER = 0x80 SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0x100 @@ -1561,6 +1604,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1e SO_PRIORITY = 0xc @@ -1629,6 +1673,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x5407 TCGETA = 0x5401 TCGETS = 0x540d @@ -1651,6 +1701,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1709,6 +1760,7 @@ const ( TIOCGPKT = 0x40045438 TIOCGPTLCK = 0x40045439 TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 TIOCGRS485 = 0x4020542e TIOCGSERIAL = 0x5484 TIOCGSID = 0x7416 @@ -1769,6 +1821,7 @@ const ( TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 TOSTOP = 0x8000 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 TUNGETFEATURES = 0x400454cf @@ -1794,6 +1847,8 @@ const ( TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x10 VEOL = 0x11 @@ -1824,6 +1879,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 8e4606e06..f6ca82c71 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x17 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x4000 FFDLY = 0x4000 FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x4000 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -901,6 +930,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -915,6 +945,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -933,6 +964,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -955,8 +987,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1013,6 +1047,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1155,7 +1190,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1301,7 +1336,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1326,7 +1361,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1370,6 +1405,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1378,6 +1414,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1399,10 +1436,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1417,8 +1455,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1429,6 +1467,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1459,6 +1498,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1597,6 +1637,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1605,11 +1646,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1617,6 +1660,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1684,6 +1728,12 @@ const ( TAB2 = 0x800 TAB3 = 0xc00 TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x2000741f TCGETA = 0x40147417 TCGETS = 0x402c7413 @@ -1705,6 +1755,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1761,6 +1812,7 @@ const ( TIOCGPKT = 0x40045438 TIOCGPTLCK = 0x40045439 TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1827,6 +1879,7 @@ const ( TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 TOSTOP = 0x400000 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 TUNGETFEATURES = 0x400454cf @@ -1852,6 +1905,8 @@ const ( TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0x10 VEOF = 0x4 VEOL = 0x6 @@ -1881,6 +1936,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -2061,7 +2127,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 16ed19311..ddd256254 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x17 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x4000 FFDLY = 0x4000 FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x4000 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -901,6 +930,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -915,6 +945,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -933,6 +964,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -955,8 +987,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1013,6 +1047,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1155,7 +1190,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1301,7 +1336,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1326,7 +1361,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1370,6 +1405,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1378,6 +1414,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1399,10 +1436,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1417,8 +1455,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1429,6 +1467,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1459,6 +1498,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1597,6 +1637,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1605,11 +1646,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1617,6 +1660,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1684,6 +1728,12 @@ const ( TAB2 = 0x800 TAB3 = 0xc00 TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x2000741f TCGETA = 0x40147417 TCGETS = 0x402c7413 @@ -1705,6 +1755,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1761,6 +1812,7 @@ const ( TIOCGPKT = 0x40045438 TIOCGPTLCK = 0x40045439 TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1827,6 +1879,7 @@ const ( TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 TOSTOP = 0x400000 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 TUNGETFEATURES = 0x400454cf @@ -1852,6 +1905,8 @@ const ( TUNSETVNETHDRSZ = 0x800454d8 TUNSETVNETLE = 0x800454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0x10 VEOF = 0x4 VEOL = 0x6 @@ -1881,6 +1936,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -2061,7 +2127,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index bd385f809..fc304a68f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -36,7 +36,7 @@ const ( AF_KEY = 0xf AF_LLC = 0x1a AF_LOCAL = 0x1 - AF_MAX = 0x2b + AF_MAX = 0x2c AF_MPLS = 0x1c AF_NETBEUI = 0xd AF_NETLINK = 0x10 @@ -51,6 +51,7 @@ const ( AF_ROUTE = 0x10 AF_RXRPC = 0x21 AF_SECURITY = 0xe + AF_SMC = 0x2b AF_SNA = 0x16 AF_TIPC = 0x1e AF_UNIX = 0x1 @@ -129,6 +130,7 @@ const ( ARPHRD_TUNNEL = 0x300 ARPHRD_TUNNEL6 = 0x301 ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f B0 = 0x0 B1000000 = 0x1008 @@ -392,6 +394,7 @@ const ( ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 ETH_P_IEEE802154 = 0xf6 ETH_P_IEEEPUP = 0xa00 ETH_P_IEEEPUPAT = 0xa01 @@ -453,6 +456,8 @@ const ( FF1 = 0x8000 FFDLY = 0x8000 FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 @@ -507,6 +512,19 @@ const ( F_ULOCK = 0x0 F_UNLCK = 0x2 F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 GRND_NONBLOCK = 0x1 GRND_RANDOM = 0x2 HUPCL = 0x400 @@ -605,6 +623,7 @@ const ( IN_OPEN = 0x20 IN_Q_OVERFLOW = 0x4000 IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 IPPROTO_AH = 0x33 IPPROTO_BEETPH = 0x5e IPPROTO_COMP = 0x6c @@ -644,8 +663,10 @@ const ( IPV6_2292PKTOPTIONS = 0x6 IPV6_2292RTHDR = 0x5 IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 IPV6_ADD_MEMBERSHIP = 0x14 IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 IPV6_CHECKSUM = 0x7 IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 @@ -658,12 +679,14 @@ const ( IPV6_JOIN_GROUP = 0x14 IPV6_LEAVE_ANYCAST = 0x1c IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 IPV6_MTU = 0x18 IPV6_MTU_DISCOVER = 0x17 IPV6_MULTICAST_HOPS = 0x12 IPV6_MULTICAST_IF = 0x11 IPV6_MULTICAST_LOOP = 0x13 IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a IPV6_PATHMTU = 0x3d IPV6_PKTINFO = 0x32 IPV6_PMTUDISC_DO = 0x2 @@ -674,8 +697,10 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a IPV6_RECVPATHMTU = 0x3c IPV6_RECVPKTINFO = 0x31 IPV6_RECVRTHDR = 0x38 @@ -689,7 +714,9 @@ const ( IPV6_RXDSTOPTS = 0x3b IPV6_RXHOPOPTS = 0x36 IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -732,6 +759,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 @@ -769,6 +797,7 @@ const ( KEYCTL_NEGATE = 0xd KEYCTL_READ = 0xb KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d KEYCTL_REVOKE = 0x3 KEYCTL_SEARCH = 0xa KEYCTL_SESSION_TO_PARENT = 0x12 @@ -901,6 +930,7 @@ const ( MS_SILENT = 0x8000 MS_SLAVE = 0x80000 MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 MS_UNBINDABLE = 0x20000 @@ -915,6 +945,7 @@ const ( NETLINK_DNRTMSG = 0xe NETLINK_DROP_MEMBERSHIP = 0x2 NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb NETLINK_FIB_LOOKUP = 0xa NETLINK_FIREWALL = 0x3 NETLINK_GENERIC = 0x10 @@ -933,6 +964,7 @@ const ( NETLINK_RX_RING = 0x6 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 NETLINK_SOCK_DIAG = 0x4 NETLINK_TX_RING = 0x7 NETLINK_UNUSED = 0x1 @@ -953,8 +985,10 @@ const ( NLMSG_NOOP = 0x1 NLMSG_OVERRUN = 0x4 NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 NLM_F_DUMP_FILTERED = 0x20 @@ -1011,6 +1045,7 @@ const ( PACKET_FANOUT_EBPF = 0x7 PACKET_FANOUT_FLAG_DEFRAG = 0x8000 PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 PACKET_FANOUT_HASH = 0x0 PACKET_FANOUT_LB = 0x1 PACKET_FANOUT_QM = 0x5 @@ -1152,7 +1187,7 @@ const ( PR_SET_NO_NEW_PRIVS = 0x26 PR_SET_PDEATHSIG = 0x1 PR_SET_PTRACER = 0x59616d61 - PR_SET_PTRACER_ANY = -0x1 + PR_SET_PTRACER_ANY = 0xffffffffffffffff PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_THP_DISABLE = 0x29 @@ -1305,7 +1340,7 @@ const ( RLIMIT_RTTIME = 0xf RLIMIT_SIGPENDING = 0xb RLIMIT_STACK = 0x3 - RLIM_INFINITY = -0x1 + RLIM_INFINITY = 0xffffffffffffffff RTAX_ADVMSS = 0x8 RTAX_CC_ALGO = 0x10 RTAX_CWND = 0x7 @@ -1330,7 +1365,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x19 + RTA_MAX = 0x1a RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1374,6 +1409,7 @@ const ( RTM_DELLINK = 0x11 RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1382,6 +1418,7 @@ const ( RTM_DELTFILTER = 0x2d RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 RTM_F_LOOKUP_TABLE = 0x1000 RTM_F_NOTIFY = 0x100 RTM_F_PREFIX = 0x800 @@ -1403,10 +1440,11 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x5f + RTM_MAX = 0x63 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 RTM_NEWLINK = 0x10 RTM_NEWMDB = 0x54 RTM_NEWNDUSEROPT = 0x44 @@ -1421,8 +1459,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x14 - RTM_NR_MSGTYPES = 0x50 + RTM_NR_FAMILIES = 0x15 + RTM_NR_MSGTYPES = 0x54 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1433,6 +1471,7 @@ const ( RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a RTPROT_BIRD = 0xc @@ -1463,6 +1502,7 @@ const ( SCM_TIMESTAMP = 0x1d SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 SCM_WIFI_STATUS = 0x29 SECCOMP_MODE_DISABLED = 0x0 @@ -1601,6 +1641,7 @@ const ( SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b @@ -1609,11 +1650,13 @@ const ( SO_ERROR = 0x4 SO_GET_FILTER = 0x1a SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 SO_KEEPALIVE = 0x9 SO_LINGER = 0xd SO_LOCK_FILTER = 0x2c SO_MARK = 0x24 SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 SO_NOFCS = 0x2b SO_NO_CHECK = 0xb SO_OOBINLINE = 0xa @@ -1621,6 +1664,7 @@ const ( SO_PASSSEC = 0x22 SO_PEEK_OFF = 0x2a SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b SO_PEERNAME = 0x1c SO_PEERSEC = 0x1f SO_PRIORITY = 0xc @@ -1688,6 +1732,12 @@ const ( TAB2 = 0x1000 TAB3 = 0x1800 TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x8 TCFLSH = 0x540b TCGETA = 0x5405 TCGETS = 0x5401 @@ -1711,6 +1761,7 @@ const ( TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e TCP_INFO = 0xb TCP_KEEPCNT = 0x6 TCP_KEEPIDLE = 0x4 @@ -1770,6 +1821,7 @@ const ( TIOCGPKT = 0x80045438 TIOCGPTLCK = 0x80045439 TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 @@ -1827,6 +1879,7 @@ const ( TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 TOSTOP = 0x100 + TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 TUNGETFEATURES = 0x800454cf @@ -1852,6 +1905,8 @@ const ( TUNSETVNETHDRSZ = 0x400454d8 TUNSETVNETLE = 0x400454dc UMOUNT_NOFOLLOW = 0x8 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe VDISCARD = 0xd VEOF = 0x4 VEOL = 0xb @@ -1881,6 +1936,17 @@ const ( WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 WEXITED = 0x4 WNOHANG = 0x1 WNOTHREAD = 0x20000000 @@ -2061,7 +2127,6 @@ const ( SIGTSTP = syscall.Signal(0x14) SIGTTIN = syscall.Signal(0x15) SIGTTOU = syscall.Signal(0x16) - SIGUNUSED = syscall.Signal(0x1f) SIGURG = syscall.Signal(0x17) SIGUSR1 = syscall.Signal(0xa) SIGUSR2 = syscall.Signal(0xc) diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 81e83d78f..09eedb009 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -664,6 +664,8 @@ const ( MS_OLDSYNC = 0x0 MS_SYNC = 0x4 M_FLUSH = 0x86 + NAME_MAX = 0xff + NEWDEV = 0x1 NL0 = 0x0 NL1 = 0x100 NLDLY = 0x100 @@ -672,6 +674,9 @@ const ( OFDEL = 0x80 OFILL = 0x40 OLCUC = 0x2 + OLDDEV = 0x0 + ONBITSMAJOR = 0x7 + ONBITSMINOR = 0x8 ONLCR = 0x4 ONLRET = 0x20 ONOCR = 0x10 @@ -1105,6 +1110,7 @@ const ( VEOL = 0x5 VEOL2 = 0x6 VERASE = 0x2 + VERASE2 = 0x11 VINTR = 0x0 VKILL = 0x3 VLNEXT = 0xf diff --git a/vendor/golang.org/x/sys/unix/zptrace386_linux.go b/vendor/golang.org/x/sys/unix/zptrace386_linux.go new file mode 100644 index 000000000..2d21c49e1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptrace386_linux.go @@ -0,0 +1,80 @@ +// Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT. + +// +build linux +// +build 386 amd64 + +package unix + +import "unsafe" + +// PtraceRegs386 is the registers used by 386 binaries. +type PtraceRegs386 struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +// PtraceGetRegs386 fetches the registers used by 386 binaries. +func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegs386 sets the registers used by 386 binaries. +func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsAmd64 is the registers used by amd64 binaries. +type PtraceRegsAmd64 struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. +func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsAmd64 sets the registers used by amd64 binaries. +func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracearm_linux.go b/vendor/golang.org/x/sys/unix/zptracearm_linux.go new file mode 100644 index 000000000..faf23bbed --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracearm_linux.go @@ -0,0 +1,41 @@ +// Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT. + +// +build linux +// +build arm arm64 + +package unix + +import "unsafe" + +// PtraceRegsArm is the registers used by arm binaries. +type PtraceRegsArm struct { + Uregs [18]uint32 +} + +// PtraceGetRegsArm fetches the registers used by arm binaries. +func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm sets the registers used by arm binaries. +func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsArm64 is the registers used by arm64 binaries. +type PtraceRegsArm64 struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +// PtraceGetRegsArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm64 sets the registers used by arm64 binaries. +func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemips_linux.go b/vendor/golang.org/x/sys/unix/zptracemips_linux.go new file mode 100644 index 000000000..c431131e6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemips_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT. + +// +build linux +// +build mips mips64 + +package unix + +import "unsafe" + +// PtraceRegsMips is the registers used by mips binaries. +type PtraceRegsMips struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips fetches the registers used by mips binaries. +func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips sets the registers used by mips binaries. +func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64 is the registers used by mips64 binaries. +type PtraceRegsMips64 struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64 fetches the registers used by mips64 binaries. +func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64 sets the registers used by mips64 binaries. +func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go new file mode 100644 index 000000000..dc3d6d373 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT. + +// +build linux +// +build mipsle mips64le + +package unix + +import "unsafe" + +// PtraceRegsMipsle is the registers used by mipsle binaries. +type PtraceRegsMipsle struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMipsle fetches the registers used by mipsle binaries. +func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMipsle sets the registers used by mipsle binaries. +func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64le is the registers used by mips64le binaries. +type PtraceRegsMips64le struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64le fetches the registers used by mips64le binaries. +func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64le sets the registers used by mips64le binaries. +func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 10491e9ed..763ae4fbb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 5f1f6bfef..d6808e072 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index 7a4097459..6ae95e6b9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -221,7 +221,7 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 07c6ebc9f..ca6a7ea8b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index 7fa205cd0..2ed340fd1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -412,6 +423,16 @@ func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index 1a0bb4cb0..4c9688ac6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -926,6 +937,23 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index ac1e8e013..434b33984 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -926,6 +937,23 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 2b4e6acf0..ce78c6102 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -926,6 +937,23 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 38c1bbdf9..e441cc3e9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1558,6 +1569,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Ftruncate(fd int, length int64) (err error) { _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index dc8fe0a84..083a08d4d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1555,6 +1566,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index 4d2804278..248293760 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1717,6 +1728,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getegid() (egid int) { r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0) egid = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 20ad4b6c9..40760110f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1667,17 +1678,6 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 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 sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) written = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 9f194dc4a..10322c94a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -2003,6 +2014,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Stat(path string, stat *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index 4fde3ef08..723e90eff 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1535,6 +1546,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { @@ -1677,17 +1703,6 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 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 sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) written = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index f6463423c..d4c78d4b1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1535,6 +1546,21 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { @@ -1677,17 +1703,6 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 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 sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) written = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index 964591e5e..bd2f491c2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -2003,6 +2014,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Stat(path string, stat *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 204ab1ae3..5c46e6478 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1545,6 +1556,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { @@ -1734,7 +1760,7 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index a8a2b0b0a..9ef023d47 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1545,6 +1556,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { @@ -1734,7 +1760,7 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index b6ff9e392..21e7d0191 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -1035,6 +1035,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func read(fd int, p []byte) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { @@ -1446,22 +1457,6 @@ func Mlock(b []byte) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Munlock(b []byte) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mlockall(flags int) (err error) { _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) if e1 != 0 { @@ -1488,6 +1483,22 @@ func Msync(b []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Munlockall() (err error) { _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) if e1 != 0 { @@ -1555,6 +1566,21 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstatfs(fd int, buf *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index db99fd0c9..04a1ace9d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -395,6 +406,16 @@ func getdents(fd int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index 7b6c2c87e..079824a71 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -395,6 +406,16 @@ func getdents(fd int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 0f4cc3b52..05f8b496a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -395,6 +406,16 @@ func getdents(fd int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 7baea87c7..3b55544df 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -393,6 +404,16 @@ func getdents(fd int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 0d69ce6b5..cdaf4ef4c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -393,6 +404,16 @@ func getdents(fd int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index 41572c26e..6c4dc8a9f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -266,6 +266,17 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Madvise(b []byte, behav int) (err error) { var _p0 unsafe.Pointer if len(b) > 0 { @@ -393,6 +404,16 @@ func getdents(fd int, buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 4287133d0..1d4527649 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -25,7 +25,11 @@ import ( //go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" //go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" //go:cgo_import_dynamic libc_acct acct "libc.so" +//go:cgo_import_dynamic libc___makedev __makedev "libc.so" +//go:cgo_import_dynamic libc___major __major "libc.so" +//go:cgo_import_dynamic libc___minor __minor "libc.so" //go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:cgo_import_dynamic libc_poll poll "libc.so" //go:cgo_import_dynamic libc_access access "libc.so" //go:cgo_import_dynamic libc_adjtime adjtime "libc.so" //go:cgo_import_dynamic libc_chdir chdir "libc.so" @@ -75,6 +79,7 @@ import ( //go:cgo_import_dynamic libc_mlock mlock "libc.so" //go:cgo_import_dynamic libc_mlockall mlockall "libc.so" //go:cgo_import_dynamic libc_mprotect mprotect "libc.so" +//go:cgo_import_dynamic libc_msync msync "libc.so" //go:cgo_import_dynamic libc_munlock munlock "libc.so" //go:cgo_import_dynamic libc_munlockall munlockall "libc.so" //go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" @@ -129,7 +134,6 @@ import ( //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" -//go:cgo_import_dynamic libc_sysconf sysconf "libc.so" //go:linkname procpipe libc_pipe //go:linkname procgetsockname libc_getsockname @@ -146,7 +150,11 @@ import ( //go:linkname proc__xnet_recvmsg libc___xnet_recvmsg //go:linkname proc__xnet_sendmsg libc___xnet_sendmsg //go:linkname procacct libc_acct +//go:linkname proc__makedev libc___makedev +//go:linkname proc__major libc___major +//go:linkname proc__minor libc___minor //go:linkname procioctl libc_ioctl +//go:linkname procpoll libc_poll //go:linkname procAccess libc_access //go:linkname procAdjtime libc_adjtime //go:linkname procChdir libc_chdir @@ -196,6 +204,7 @@ import ( //go:linkname procMlock libc_mlock //go:linkname procMlockall libc_mlockall //go:linkname procMprotect libc_mprotect +//go:linkname procMsync libc_msync //go:linkname procMunlock libc_munlock //go:linkname procMunlockall libc_munlockall //go:linkname procNanosleep libc_nanosleep @@ -250,7 +259,6 @@ import ( //go:linkname procgetpeername libc_getpeername //go:linkname procsetsockopt libc_setsockopt //go:linkname procrecvfrom libc_recvfrom -//go:linkname procsysconf libc_sysconf var ( procpipe, @@ -268,7 +276,11 @@ var ( proc__xnet_recvmsg, proc__xnet_sendmsg, procacct, + proc__makedev, + proc__major, + proc__minor, procioctl, + procpoll, procAccess, procAdjtime, procChdir, @@ -318,6 +330,7 @@ var ( procMlock, procMlockall, procMprotect, + procMsync, procMunlock, procMunlockall, procNanosleep, @@ -371,8 +384,7 @@ var ( proc__xnet_getsockopt, procgetpeername, procsetsockopt, - procrecvfrom, - procsysconf syscallFunc + procrecvfrom syscallFunc ) func pipe(p *[2]_C_int) (n int, err error) { @@ -522,6 +534,24 @@ func acct(path *byte) (err error) { return } +func __makedev(version int, major uint, minor uint) (val uint64) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0) + val = uint64(r0) + return +} + +func __major(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +func __minor(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + func ioctl(fd int, req uint, arg uintptr) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) if e1 != 0 { @@ -530,6 +560,15 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { return } +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1020,6 +1059,18 @@ func Mprotect(b []byte, prot int) (err error) { return } +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + func Munlock(b []byte) (err error) { var _p0 *byte if len(b) > 0 { @@ -1589,12 +1640,3 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } return } - -func sysconf(name int) (n int64, err error) { - r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsysconf)), 1, uintptr(name), 0, 0, 0, 0, 0) - n = int64(r0) - if e1 != 0 { - err = e1 - } - return -} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go similarity index 100% rename from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go rename to vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go new file mode 100644 index 000000000..83bb935b9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go new file mode 100644 index 000000000..83bb935b9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go index 2786773ba..d1d36da3f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go @@ -1,5 +1,5 @@ -// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,darwin @@ -121,13 +121,15 @@ const ( SYS_CSOPS = 169 SYS_CSOPS_AUDITTOKEN = 170 SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 SYS_KDEBUG_TRACE64 = 179 SYS_KDEBUG_TRACE = 180 SYS_SETGID = 181 SYS_SETEGID = 182 SYS_SETEUID = 183 SYS_SIGRETURN = 184 - SYS_CHUD = 185 + SYS_THREAD_SELFCOUNTS = 186 SYS_FDATASYNC = 187 SYS_STAT = 188 SYS_FSTAT = 189 @@ -278,7 +280,6 @@ const ( SYS_KQUEUE = 362 SYS_KEVENT = 363 SYS_LCHOWN = 364 - SYS_STACK_SNAPSHOT = 365 SYS_BSDTHREAD_REGISTER = 366 SYS_WORKQ_OPEN = 367 SYS_WORKQ_KERNRETURN = 368 @@ -287,6 +288,8 @@ const ( SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 SYS_THREAD_SELFID = 372 SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 SYS___MAC_EXECVE = 380 SYS___MAC_SYSCALL = 381 SYS___MAC_GET_FILE = 382 @@ -298,11 +301,8 @@ const ( SYS___MAC_GET_FD = 388 SYS___MAC_SET_FD = 389 SYS___MAC_GET_PID = 390 - SYS___MAC_GET_LCID = 391 - SYS___MAC_GET_LCTX = 392 - SYS___MAC_SET_LCTX = 393 - SYS_SETLCID = 394 - SYS_GETLCID = 395 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 SYS_READ_NOCANCEL = 396 SYS_WRITE_NOCANCEL = 397 SYS_OPEN_NOCANCEL = 398 @@ -351,6 +351,7 @@ const ( SYS_GUARDED_CLOSE_NP = 442 SYS_GUARDED_KQUEUE_NP = 443 SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 SYS_PROC_RLIMIT_CONTROL = 446 SYS_CONNECTX = 447 SYS_DISCONNECTX = 448 @@ -367,6 +368,7 @@ const ( SYS_COALITION_INFO = 459 SYS_NECP_MATCH_POLICY = 460 SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 SYS_OPENAT = 463 SYS_OPENAT_NOCANCEL = 464 SYS_RENAMEAT = 465 @@ -392,7 +394,43 @@ const ( SYS_GUARDED_WRITE_NP = 485 SYS_GUARDED_PWRITE_NP = 486 SYS_GUARDED_WRITEV_NP = 487 - SYS_RENAME_EXT = 488 + SYS_RENAMEATX_NP = 488 SYS_MREMAP_ENCRYPTED = 489 - SYS_MAXSYSCALL = 490 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go index 09de240c8..e35de4145 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -1,5 +1,5 @@ -// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT +// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,darwin @@ -121,13 +121,15 @@ const ( SYS_CSOPS = 169 SYS_CSOPS_AUDITTOKEN = 170 SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 SYS_KDEBUG_TRACE64 = 179 SYS_KDEBUG_TRACE = 180 SYS_SETGID = 181 SYS_SETEGID = 182 SYS_SETEUID = 183 SYS_SIGRETURN = 184 - SYS_CHUD = 185 + SYS_THREAD_SELFCOUNTS = 186 SYS_FDATASYNC = 187 SYS_STAT = 188 SYS_FSTAT = 189 @@ -278,7 +280,6 @@ const ( SYS_KQUEUE = 362 SYS_KEVENT = 363 SYS_LCHOWN = 364 - SYS_STACK_SNAPSHOT = 365 SYS_BSDTHREAD_REGISTER = 366 SYS_WORKQ_OPEN = 367 SYS_WORKQ_KERNRETURN = 368 @@ -287,6 +288,8 @@ const ( SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 SYS_THREAD_SELFID = 372 SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 SYS___MAC_EXECVE = 380 SYS___MAC_SYSCALL = 381 SYS___MAC_GET_FILE = 382 @@ -298,11 +301,8 @@ const ( SYS___MAC_GET_FD = 388 SYS___MAC_SET_FD = 389 SYS___MAC_GET_PID = 390 - SYS___MAC_GET_LCID = 391 - SYS___MAC_GET_LCTX = 392 - SYS___MAC_SET_LCTX = 393 - SYS_SETLCID = 394 - SYS_GETLCID = 395 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 SYS_READ_NOCANCEL = 396 SYS_WRITE_NOCANCEL = 397 SYS_OPEN_NOCANCEL = 398 @@ -351,6 +351,7 @@ const ( SYS_GUARDED_CLOSE_NP = 442 SYS_GUARDED_KQUEUE_NP = 443 SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 SYS_PROC_RLIMIT_CONTROL = 446 SYS_CONNECTX = 447 SYS_DISCONNECTX = 448 @@ -367,6 +368,7 @@ const ( SYS_COALITION_INFO = 459 SYS_NECP_MATCH_POLICY = 460 SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 SYS_OPENAT = 463 SYS_OPENAT_NOCANCEL = 464 SYS_RENAMEAT = 465 @@ -392,7 +394,43 @@ const ( SYS_GUARDED_WRITE_NP = 485 SYS_GUARDED_PWRITE_NP = 486 SYS_GUARDED_WRITEV_NP = 487 - SYS_RENAME_EXT = 488 + SYS_RENAMEATX_NP = 488 SYS_MREMAP_ENCRYPTED = 489 - SYS_MAXSYSCALL = 490 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go index 41cb6ed39..f2df27db2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -1,4 +1,4 @@ -// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h +// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,darwin @@ -129,6 +129,7 @@ const ( SYS_SETEGID = 182 SYS_SETEUID = 183 SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 SYS_FDATASYNC = 187 SYS_STAT = 188 SYS_FSTAT = 189 @@ -288,6 +289,7 @@ const ( SYS_THREAD_SELFID = 372 SYS_LEDGER = 373 SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 SYS___MAC_EXECVE = 380 SYS___MAC_SYSCALL = 381 SYS___MAC_GET_FILE = 382 @@ -421,6 +423,14 @@ const ( SYS_FS_SNAPSHOT = 518 SYS_TERMINATE_WITH_PAYLOAD = 520 SYS_ABORT_WITH_PAYLOAD = 521 - SYS_MAXSYSCALL = 522 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 SYS_INVALID = 63 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go index 075816c34..969463023 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -1,4 +1,4 @@ -// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h +// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,darwin @@ -129,6 +129,7 @@ const ( SYS_SETEGID = 182 SYS_SETEUID = 183 SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 SYS_FDATASYNC = 187 SYS_STAT = 188 SYS_FSTAT = 189 @@ -288,6 +289,7 @@ const ( SYS_THREAD_SELFID = 372 SYS_LEDGER = 373 SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 SYS___MAC_EXECVE = 380 SYS___MAC_SYSCALL = 381 SYS___MAC_GET_FILE = 382 @@ -421,6 +423,14 @@ const ( SYS_FS_SNAPSHOT = 518 SYS_TERMINATE_WITH_PAYLOAD = 520 SYS_ABORT_WITH_PAYLOAD = 521 - SYS_MAXSYSCALL = 522 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 SYS_INVALID = 63 ) 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 cef4fed02..95ab12903 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -385,4 +385,6 @@ const ( SYS_PKEY_MPROTECT = 380 SYS_PKEY_ALLOC = 381 SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 ) 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 49bfa1270..c5dabf2e4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -338,4 +338,5 @@ const ( SYS_PKEY_MPROTECT = 329 SYS_PKEY_ALLOC = 330 SYS_PKEY_FREE = 331 + SYS_STATX = 332 ) 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 97b182ef5..ab7fa5fd3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -358,4 +358,5 @@ const ( SYS_PKEY_MPROTECT = 394 SYS_PKEY_ALLOC = 395 SYS_PKEY_FREE = 396 + SYS_STATX = 397 ) 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 640784357..b1c6b4bd3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -282,4 +282,5 @@ const ( SYS_PKEY_MPROTECT = 288 SYS_PKEY_ALLOC = 289 SYS_PKEY_FREE = 290 + SYS_STATX = 291 ) 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 939567c09..2e9aa7a3e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -371,4 +371,5 @@ const ( SYS_PKEY_MPROTECT = 4363 SYS_PKEY_ALLOC = 4364 SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 ) 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 09db95969..92827635a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -331,4 +331,5 @@ const ( SYS_PKEY_MPROTECT = 5323 SYS_PKEY_ALLOC = 5324 SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 ) 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 d1b872a09..45bd3fd6c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -331,4 +331,5 @@ const ( SYS_PKEY_MPROTECT = 5323 SYS_PKEY_ALLOC = 5324 SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 ) 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 82ba20f28..62ccac4b7 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -371,4 +371,5 @@ const ( SYS_PKEY_MPROTECT = 4363 SYS_PKEY_ALLOC = 4364 SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 ) 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 8944448ae..dfe5dab67 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -366,4 +366,5 @@ const ( SYS_PREADV2 = 380 SYS_PWRITEV2 = 381 SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 ) 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 90a039be4..eca97f738 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -366,4 +366,5 @@ const ( SYS_PREADV2 = 380 SYS_PWRITEV2 = 381 SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 ) 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 aab0cdb18..8ea18e6c2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -306,6 +306,8 @@ const ( SYS_COPY_FILE_RANGE = 375 SYS_PREADV2 = 376 SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 SYS_SELECT = 142 SYS_GETRLIMIT = 191 SYS_LCHOWN = 198 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index e61d78a54..bc4bc89f8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -460,3 +460,30 @@ const ( AT_SYMLINK_FOLLOW = 0x40 AT_SYMLINK_NOFOLLOW = 0x20 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 2619155ff..d8abcab12 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -470,3 +470,30 @@ const ( AT_SYMLINK_FOLLOW = 0x40 AT_SYMLINK_NOFOLLOW = 0x20 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index 4dca0d4db..9749c9f7d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -461,3 +461,30 @@ const ( AT_SYMLINK_FOLLOW = 0x40 AT_SYMLINK_NOFOLLOW = 0x20 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index f2881fd14..810b0bd4f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -1,6 +1,7 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + // +build arm64,darwin -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_darwin.go package unix @@ -469,3 +470,30 @@ const ( AT_SYMLINK_FOLLOW = 0x40 AT_SYMLINK_NOFOLLOW = 0x20 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 67c6bf883..1ca0e3ee0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -442,7 +442,33 @@ type Termios struct { Ospeed uint32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = 0xfffafdcd AT_SYMLINK_NOFOLLOW = 0x1 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 5b28bcbba..f11c787d4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -516,6 +516,34 @@ const ( AT_SYMLINK_NOFOLLOW = 0x200 ) +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + type CapRights struct { Rights [2]uint64 } + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index c65d89e49..658094722 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -519,6 +519,34 @@ const ( AT_SYMLINK_NOFOLLOW = 0x200 ) +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + type CapRights struct { Rights [2]uint64 } + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 42c0a502c..5a73ab305 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -519,6 +519,34 @@ const ( AT_SYMLINK_NOFOLLOW = 0x200 ) +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + type CapRights struct { Rights [2]uint64 } + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} 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 0dcebb50b..295a9bd33 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -425,7 +425,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -621,12 +621,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -644,6 +644,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -673,8 +674,6 @@ const RNDGETENTCNT = 0x80045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -692,3 +691,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 d70e54348..cdd4a1dcb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -429,7 +429,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -637,12 +637,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -662,6 +662,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -691,8 +692,6 @@ const RNDGETENTCNT = 0x80045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -710,3 +709,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 497f56319..086620ac9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -429,7 +429,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -609,12 +609,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]uint8 - Nodename [65]uint8 - Release [65]uint8 - Version [65]uint8 - Machine [65]uint8 - Domainname [65]uint8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -633,6 +633,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -662,8 +663,6 @@ const RNDGETENTCNT = 0x80045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -681,3 +680,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 f0bdaede6..c53db98d0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -430,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -615,12 +615,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -641,6 +641,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -670,8 +671,6 @@ const RNDGETENTCNT = 0x80045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -689,3 +688,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 850a68cb2..69e529b25 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -428,7 +428,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -614,12 +614,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -638,6 +638,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -667,8 +668,6 @@ const RNDGETENTCNT = 0x40045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -686,3 +685,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 92aac5d93..4460279a8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -430,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -618,12 +618,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -643,6 +643,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -672,8 +673,6 @@ const RNDGETENTCNT = 0x40045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -691,3 +690,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 623f58127..989238111 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -430,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -618,12 +618,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -643,6 +643,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -672,8 +673,6 @@ const RNDGETENTCNT = 0x40045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -691,3 +690,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 56598a1bf..c2f4c036d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -428,7 +428,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -614,12 +614,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -638,6 +638,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -667,8 +668,6 @@ const RNDGETENTCNT = 0x40045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -686,3 +685,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 acc7c819d..ffe788331 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -431,7 +431,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -625,12 +625,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]uint8 - Nodename [65]uint8 - Release [65]uint8 - Version [65]uint8 - Machine [65]uint8 - Domainname [65]uint8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -651,6 +651,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -680,8 +681,6 @@ const RNDGETENTCNT = 0x40045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -699,3 +698,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 b348885c8..7e3d946a3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -431,7 +431,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -625,12 +625,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]uint8 - Nodename [65]uint8 - Release [65]uint8 - Version [65]uint8 - Machine [65]uint8 - Domainname [65]uint8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -651,6 +651,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -680,8 +681,6 @@ const RNDGETENTCNT = 0x40045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -699,3 +698,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + Pad_cgo_0 [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Pad_cgo_1 [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + Pad_cgo_2 [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Pad_cgo_3 [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 a706e2f8c..730fa8a66 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -430,7 +430,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x2b + IFLA_MAX = 0x2c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -642,12 +642,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -668,6 +668,7 @@ type EpollEvent struct { const ( AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 AT_REMOVEDIR = 0x200 AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x100 @@ -697,8 +698,6 @@ const RNDGETENTCNT = 0x80045200 const PERF_IOC_FLAG_GROUP = 0x1 -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 @@ -716,3 +715,104 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type Taskstats struct { + Version uint16 + _ [2]byte + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) 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 22bdab961..9dbbb1ce5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -601,12 +601,12 @@ type Sysinfo_t struct { } type Utsname struct { - Sysname [65]int8 - Nodename [65]int8 - Release [65]int8 - Version [65]int8 - Machine [65]int8 - Domainname [65]int8 + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte } type Ustat_t struct { @@ -652,8 +652,6 @@ type Sigset_t struct { X__val [16]uint64 } -const _SC_PAGESIZE = 0x1e - type Termios struct { Iflag uint32 Oflag uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index 42f99c0a3..e16c05a8a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_netbsd.go +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,netbsd @@ -382,11 +382,37 @@ type Termios struct { Ospeed int32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x64 AT_SYMLINK_NOFOLLOW = 0x200 ) +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + type Sysctlnode struct { Flags uint32 Num int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index ff290ba06..9c3743561 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_netbsd.go +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,netbsd @@ -389,11 +389,37 @@ type Termios struct { Ospeed int32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x64 AT_SYMLINK_NOFOLLOW = 0x200 ) +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + type Sysctlnode struct { Flags uint32 Num int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index 66dbd7c05..132942318 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_netbsd.go +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,netbsd @@ -387,11 +387,37 @@ type Termios struct { Ospeed int32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x64 AT_SYMLINK_NOFOLLOW = 0x200 ) +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + type Sysctlnode struct { Flags uint32 Num int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 20fc9f450..2cf08bf49 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,openbsd @@ -440,7 +440,33 @@ type Termios struct { Ospeed int32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x64 AT_SYMLINK_NOFOLLOW = 0x2 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 46fe9490c..7cfc61f66 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,openbsd @@ -447,7 +447,33 @@ type Termios struct { Ospeed int32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x64 AT_SYMLINK_NOFOLLOW = 0x2 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index 62e1f7c04..842c59c5c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -1,5 +1,5 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,openbsd @@ -433,7 +433,33 @@ type Termios struct { Ospeed int32 } +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + const ( AT_FDCWD = -0x64 AT_SYMLINK_NOFOLLOW = 0x2 ) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 92336f9f9..d44545248 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -263,11 +263,11 @@ type FdSet struct { } type Utsname struct { - Sysname [257]int8 - Nodename [257]int8 - Release [257]int8 - Version [257]int8 - Machine [257]int8 + Sysname [257]byte + Nodename [257]byte + Release [257]byte + Version [257]byte + Machine [257]byte } type Ustat_t struct { @@ -413,8 +413,6 @@ type BpfHdr struct { Pad_cgo_0 [2]byte } -const _SC_PAGESIZE = 0xb - type Termios struct { Iflag uint32 Oflag uint32 @@ -440,3 +438,22 @@ type Winsize struct { Xpixel uint16 Ypixel uint16 } + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index e77a37055..e92c05b21 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. @@ -116,7 +116,7 @@ func (p *Proc) Addr() uintptr { //go:uintptrescapes -// Call executes procedure p with arguments a. It will panic, if more then 15 arguments +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments // are supplied. // // The returned error is always non-nil, constructed from the result of GetLastError. @@ -289,6 +289,7 @@ func (p *LazyProc) mustFind() { // Addr returns the address of the procedure represented by p. // The return value can be passed to Syscall to run the procedure. +// It will panic if the procedure cannot be found. func (p *LazyProc) Addr() uintptr { p.mustFind() return p.proc.Addr() @@ -296,8 +297,8 @@ func (p *LazyProc) Addr() uintptr { //go:uintptrescapes -// Call executes procedure p with arguments a. It will panic, if more then 15 arguments -// are supplied. +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. It will also panic if the procedure cannot be found. // // The returned error is always non-nil, constructed from the result of GetLastError. // Callers must inspect the primary return value to decide whether an error occurred diff --git a/vendor/golang.org/x/sys/windows/env_unset.go b/vendor/golang.org/x/sys/windows/env_unset.go index 4ed03aeef..b712c6604 100644 --- a/vendor/golang.org/x/sys/windows/env_unset.go +++ b/vendor/golang.org/x/sys/windows/env_unset.go @@ -1,4 +1,4 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2014 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. diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go index a9d8ef4b7..e8292386c 100644 --- a/vendor/golang.org/x/sys/windows/env_windows.go +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -1,4 +1,4 @@ -// Copyright 2010 The Go Authors. All rights reserved. +// Copyright 2010 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. diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go index f63e899ac..f80a4204f 100644 --- a/vendor/golang.org/x/sys/windows/memory_windows.go +++ b/vendor/golang.org/x/sys/windows/memory_windows.go @@ -1,4 +1,4 @@ -// Copyright 2017 The Go Authors. All rights reserved. +// Copyright 2017 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. diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go index e1c88c9c7..fb7db0ef8 100644 --- a/vendor/golang.org/x/sys/windows/mksyscall.go +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -1,4 +1,4 @@ -// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2009 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. diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go index 343e18ab6..a74e3e24b 100644 --- a/vendor/golang.org/x/sys/windows/race.go +++ b/vendor/golang.org/x/sys/windows/race.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go index 17af843b9..e44a3cbf6 100644 --- a/vendor/golang.org/x/sys/windows/race0.go +++ b/vendor/golang.org/x/sys/windows/race0.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index ca09bdd70..f1ec5dc4e 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. @@ -132,6 +132,36 @@ const ( SECURITY_NT_NON_UNIQUE_RID = 0x15 ) +// Predefined domain-relative RIDs for local groups. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx +const ( + DOMAIN_ALIAS_RID_ADMINS = 0x220 + DOMAIN_ALIAS_RID_USERS = 0x221 + DOMAIN_ALIAS_RID_GUESTS = 0x222 + DOMAIN_ALIAS_RID_POWER_USERS = 0x223 + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224 + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225 + DOMAIN_ALIAS_RID_PRINT_OPS = 0x226 + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227 + DOMAIN_ALIAS_RID_REPLICATOR = 0x228 + DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229 + DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a + DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b + DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c + DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d + DOMAIN_ALIAS_RID_MONITORING_USERS = 0X22e + DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f + DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230 + DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231 + DOMAIN_ALIAS_RID_DCOM_USERS = 0x232 + DOMAIN_ALIAS_RID_IUSERS = 0x238 + DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239 + DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b + DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c + DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d + DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e +) + //sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW //sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW //sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW @@ -335,6 +365,8 @@ type Tokengroups struct { Groups [1]SIDAndAttributes } +// Authorization Functions +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership //sys OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken //sys GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation //sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW @@ -433,3 +465,12 @@ func (t Token) GetUserProfileDirectory() (string, error) { } } } + +// IsMember reports whether the access token t is a member of the provided SID. +func (t Token) IsMember(sid *SID) (bool, error) { + var b int32 + if e := checkTokenMembership(t, sid, &b); e != nil { + return false, e + } + return b != 0, nil +} diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go index 4dd8ad9e7..6fbbd4a87 100644 --- a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go +++ b/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/windows/svc/go12.go b/vendor/golang.org/x/sys/windows/svc/go12.go index 6f0a924ea..cd8b913c9 100644 --- a/vendor/golang.org/x/sys/windows/svc/go12.go +++ b/vendor/golang.org/x/sys/windows/svc/go12.go @@ -1,4 +1,4 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2014 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. diff --git a/vendor/golang.org/x/sys/windows/svc/go13.go b/vendor/golang.org/x/sys/windows/svc/go13.go index 432a9e796..9d7f3cec5 100644 --- a/vendor/golang.org/x/sys/windows/svc/go13.go +++ b/vendor/golang.org/x/sys/windows/svc/go13.go @@ -1,4 +1,4 @@ -// Copyright 2014 The Go Authors. All rights reserved. +// Copyright 2014 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. diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go index e67407cf1..1569a2217 100644 --- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go +++ b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/windows/svc/svc_test.go b/vendor/golang.org/x/sys/windows/svc/svc_test.go index 764da54a5..da7ec6664 100644 --- a/vendor/golang.org/x/sys/windows/svc/svc_test.go +++ b/vendor/golang.org/x/sys/windows/svc/svc_test.go @@ -1,4 +1,4 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2012 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. diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go index 4e2fbe86e..b07bc2305 100644 --- a/vendor/golang.org/x/sys/windows/syscall.go +++ b/vendor/golang.org/x/sys/windows/syscall.go @@ -5,10 +5,10 @@ // +build windows // Package windows contains an interface to the low-level operating system -// primitives. OS details vary depending on the underlying system, and +// primitives. OS details vary depending on the underlying system, and // by default, godoc will display the OS-specific documentation for the current -// system. If you want godoc to display syscall documentation for another -// system, set $GOOS and $GOARCH to the desired system. For example, if +// system. If you want godoc to display syscall documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS // to freebsd and $GOARCH to arm. // The primary use of this package is inside other packages that provide a more diff --git a/vendor/golang.org/x/sys/windows/syscall_test.go b/vendor/golang.org/x/sys/windows/syscall_test.go index 62588b91b..d7009e44a 100644 --- a/vendor/golang.org/x/sys/windows/syscall_test.go +++ b/vendor/golang.org/x/sys/windows/syscall_test.go @@ -7,6 +7,7 @@ package windows_test import ( + "syscall" "testing" "golang.org/x/sys/windows" @@ -31,3 +32,22 @@ func TestEnv(t *testing.T) { // make sure TESTENV gets set to "", not deleted testSetGetenv(t, "TESTENV", "") } + +func TestGetProcAddressByOrdinal(t *testing.T) { + // Attempt calling shlwapi.dll:IsOS, resolving it by ordinal, as + // suggested in + // https://msdn.microsoft.com/en-us/library/windows/desktop/bb773795.aspx + h, err := windows.LoadLibrary("shlwapi.dll") + if err != nil { + t.Fatalf("Failed to load shlwapi.dll: %s", err) + } + procIsOS, err := windows.GetProcAddressByOrdinal(h, 437) + if err != nil { + t.Fatalf("Could not find shlwapi.dll:IsOS by ordinal: %s", err) + } + const OS_NT = 1 + r, _, _ := syscall.Syscall(procIsOS, 1, OS_NT, 0, 0) + if r == 0 { + t.Error("shlwapi.dll:IsOS(OS_NT) returned 0, expected non-zero value") + } +} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index c7ff24b55..e0da2aa08 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -1,4 +1,4 @@ -// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2009 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. @@ -16,7 +16,46 @@ import ( type Handle uintptr -const InvalidHandle = ^Handle(0) +const ( + InvalidHandle = ^Handle(0) + + // Flags for DefineDosDevice. + DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 + DDD_NO_BROADCAST_SYSTEM = 0x00000008 + DDD_RAW_TARGET_PATH = 0x00000001 + DDD_REMOVE_DEFINITION = 0x00000002 + + // Return values for GetDriveType. + DRIVE_UNKNOWN = 0 + DRIVE_NO_ROOT_DIR = 1 + DRIVE_REMOVABLE = 2 + DRIVE_FIXED = 3 + DRIVE_REMOTE = 4 + DRIVE_CDROM = 5 + DRIVE_RAMDISK = 6 + + // File system flags from GetVolumeInformation and GetVolumeInformationByHandle. + FILE_CASE_SENSITIVE_SEARCH = 0x00000001 + FILE_CASE_PRESERVED_NAMES = 0x00000002 + FILE_FILE_COMPRESSION = 0x00000010 + FILE_DAX_VOLUME = 0x20000000 + FILE_NAMED_STREAMS = 0x00040000 + FILE_PERSISTENT_ACLS = 0x00000008 + FILE_READ_ONLY_VOLUME = 0x00080000 + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000 + FILE_SUPPORTS_ENCRYPTION = 0x00020000 + FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000 + FILE_SUPPORTS_HARD_LINKS = 0x00400000 + FILE_SUPPORTS_OBJECT_IDS = 0x00010000 + FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000 + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 + FILE_SUPPORTS_SPARSE_FILES = 0x00000040 + FILE_SUPPORTS_TRANSACTIONS = 0x00200000 + FILE_SUPPORTS_USN_JOURNAL = 0x02000000 + FILE_UNICODE_ON_DISK = 0x00000004 + FILE_VOLUME_IS_COMPRESSED = 0x00008000 + FILE_VOLUME_QUOTAS = 0x00000020 +) // StringToUTF16 is deprecated. Use UTF16FromString instead. // If s contains a NUL byte this function panics instead of @@ -71,12 +110,17 @@ func UTF16PtrFromString(s string) (*uint16, error) { func Getpagesize() int { return 4096 } -// Converts a Go function to a function pointer conforming -// to the stdcall or cdecl calling convention. This is useful when -// interoperating with Windows code requiring callbacks. -// Implemented in runtime/syscall_windows.goc -func NewCallback(fn interface{}) uintptr -func NewCallbackCDecl(fn interface{}) uintptr +// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +func NewCallback(fn interface{}) uintptr { + return syscall.NewCallback(fn) +} + +// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +func NewCallbackCDecl(fn interface{}) uintptr { + return syscall.NewCallbackCDecl(fn) +} // windows api calls @@ -195,8 +239,44 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent //sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent +// Volume Management Functions +//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW +//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW +//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW +//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW +//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW +//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW +//sys FindVolumeClose(findVolume Handle) (err error) +//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) +//sys GetDriveType(rootPathName *uint16) (driveType uint32) +//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] +//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW +//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW +//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW +//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW +//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW +//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW +//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW +//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW +//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW + // syscall interface implementation for other packages +// GetProcAddressByOrdinal retrieves the address of the exported +// function from module by ordinal. +func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0) + proc = uintptr(r0) + if proc == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func Exit(code int) { ExitProcess(uint32(code)) } func makeInheritSa() *SecurityAttributes { @@ -776,6 +856,75 @@ func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesS return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped) } +var sendRecvMsgFunc struct { + once sync.Once + sendAddr uintptr + recvAddr uintptr + err error +} + +func loadWSASendRecvMsg() error { + sendRecvMsgFunc.once.Do(func() { + var s Handle + s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) + if sendRecvMsgFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)), + uint32(unsafe.Sizeof(WSAID_WSARECVMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)), + &n, nil, 0) + if sendRecvMsgFunc.err != nil { + return + } + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)), + uint32(unsafe.Sizeof(WSAID_WSASENDMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)), + &n, nil, 0) + }) + return sendRecvMsgFunc.err +} + +func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return err +} + +func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return err +} + // Invented structures to support what package os expects. type Rusage struct { CreationTime Filetime diff --git a/vendor/golang.org/x/sys/windows/syscall_windows_test.go b/vendor/golang.org/x/sys/windows/syscall_windows_test.go index 0f73c11ba..9c7133cc4 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows_test.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows_test.go @@ -81,7 +81,7 @@ func TestFormatMessage(t *testing.T) { buf := make([]uint16, 300) _, err = windows.FormatMessage(flags, uintptr(dll.Handle), uint32(errno), 0, buf, nil) if err != nil { - t.Fatal("FormatMessage for handle=%x and errno=%x failed: %v", dll.Handle, errno, err) + t.Fatalf("FormatMessage for handle=%x and errno=%x failed: %v", dll.Handle, errno, err) } } diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 401a5f2d9..52c2037b6 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. @@ -29,6 +29,7 @@ const ( ERROR_NOT_FOUND syscall.Errno = 1168 ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 WSAEACCES syscall.Errno = 10013 + WSAEMSGSIZE syscall.Errno = 10040 WSAECONNRESET syscall.Errno = 10054 ) @@ -158,9 +159,6 @@ const ( WAIT_OBJECT_0 = 0x00000000 WAIT_FAILED = 0xFFFFFFFF - CREATE_NEW_PROCESS_GROUP = 0x00000200 - CREATE_UNICODE_ENVIRONMENT = 0x00000400 - PROCESS_TERMINATE = 1 PROCESS_QUERY_INFORMATION = 0x00000400 SYNCHRONIZE = 0x00100000 @@ -177,6 +175,26 @@ const ( APPLICATION_ERROR = 1 << 29 ) +const ( + // Process creation flags. + CREATE_BREAKAWAY_FROM_JOB = 0x01000000 + CREATE_DEFAULT_ERROR_MODE = 0x04000000 + CREATE_NEW_CONSOLE = 0x00000010 + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_NO_WINDOW = 0x08000000 + CREATE_PROTECTED_PROCESS = 0x00040000 + CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 + CREATE_SEPARATE_WOW_VDM = 0x00000800 + CREATE_SHARED_WOW_VDM = 0x00001000 + CREATE_SUSPENDED = 0x00000004 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + DEBUG_ONLY_THIS_PROCESS = 0x00000002 + DEBUG_PROCESS = 0x00000001 + DETACHED_PROCESS = 0x00000008 + EXTENDED_STARTUPINFO_PRESENT = 0x00080000 + INHERIT_PARENT_AFFINITY = 0x00010000 +) + const ( // flags for CreateToolhelp32Snapshot TH32CS_SNAPHEAPLIST = 0x01 @@ -567,6 +585,16 @@ const ( IPV6_JOIN_GROUP = 0xc IPV6_LEAVE_GROUP = 0xd + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_DONTROUTE = 0x4 + MSG_WAITALL = 0x8 + + MSG_TRUNC = 0x0100 + MSG_CTRUNC = 0x0200 + MSG_BCAST = 0x0400 + MSG_MCAST = 0x0800 + SOMAXCONN = 0x7fffffff TCP_NODELAY = 1 @@ -584,6 +612,15 @@ type WSABuf struct { Buf *byte } +type WSAMsg struct { + Name *syscall.RawSockaddrAny + Namelen int32 + Buffers *WSABuf + BufferCount uint32 + Control WSABuf + Flags uint32 +} + // Invented values to support what package os expects. const ( S_IFMT = 0x1f000 @@ -1011,6 +1048,20 @@ var WSAID_CONNECTEX = GUID{ [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, } +var WSAID_WSASENDMSG = GUID{ + 0xa441e712, + 0x754f, + 0x43ca, + [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, +} + +var WSAID_WSARECVMSG = GUID{ + 0xf689d7c8, + 0x6f1f, + 0x436b, + [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, +} + const ( FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 FILE_SKIP_SET_EVENT_ON_HANDLE = 2 diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go index 10f33be0b..fe0ddd031 100644 --- a/vendor/golang.org/x/sys/windows/types_windows_386.go +++ b/vendor/golang.org/x/sys/windows/types_windows_386.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go index 3f272c249..7e154c2df 100644 --- a/vendor/golang.org/x/sys/windows/types_windows_amd64.go +++ b/vendor/golang.org/x/sys/windows/types_windows_amd64.go @@ -1,4 +1,4 @@ -// Copyright 2011 The Go Authors. All rights reserved. +// Copyright 2011 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. diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 2f893d2ef..6ad2c85bd 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -178,6 +178,25 @@ var ( procSetEvent = modkernel32.NewProc("SetEvent") procResetEvent = modkernel32.NewProc("ResetEvent") procPulseEvent = modkernel32.NewProc("PulseEvent") + procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") + procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") + procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") + procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") + procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") + procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") + procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") + procGetDriveType = modkernel32.NewProc("GetDriveType") + procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") + procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") + procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") + procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") + procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") + procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") + procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") + procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") + procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") + procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") procWSAStartup = modws2_32.NewProc("WSAStartup") procWSACleanup = modws2_32.NewProc("WSACleanup") procWSAIoctl = modws2_32.NewProc("WSAIoctl") @@ -227,6 +246,7 @@ var ( procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") procFreeSid = modadvapi32.NewProc("FreeSid") procEqualSid = modadvapi32.NewProc("EqualSid") + procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") @@ -1843,6 +1863,233 @@ func PulseEvent(event Handle) (err error) { return } +func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindVolumeClose(findVolume Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetDriveType(rootPathName *uint16) (driveType uint32) { + r0, _, _ := syscall.Syscall(procGetDriveType.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) + driveType = uint32(r0) + return +} + +func GetLogicalDrives() (drivesBitMask uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) + drivesBitMask = uint32(r0) + if drivesBitMask == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + 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) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) if r0 != 0 { @@ -2391,6 +2638,18 @@ func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { return } +func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { + r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token))) if r1 == 0 { diff --git a/vendor/golang.org/x/text/README b/vendor/golang.org/x/text/README deleted file mode 100644 index 4826fe8fb..000000000 --- a/vendor/golang.org/x/text/README +++ /dev/null @@ -1,23 +0,0 @@ -This repository holds supplementary Go libraries for text processing, many involving Unicode. - -To submit changes to this repository, see http://golang.org/doc/contribute.html. - -To generate the tables in this repository (except for the encoding tables), -run go generate from this directory. By default tables are generated for the -Unicode version in core and the CLDR version defined in -golang.org/x/text/unicode/cldr. - -Running go generate will as a side effect create a DATA subdirectory in this -directory which holds all files that are used as a source for generating the -tables. This directory will also serve as a cache. - -Run - - go test ./... - -from this directory to run all tests. Add the "-tags icu" flag to also run -ICU conformance tests (if available). This requires that you have the correct -ICU version installed on your system. - -TODO: -- updating unversioned source files. \ No newline at end of file diff --git a/vendor/golang.org/x/text/README.md b/vendor/golang.org/x/text/README.md new file mode 100644 index 000000000..75e29bcd7 --- /dev/null +++ b/vendor/golang.org/x/text/README.md @@ -0,0 +1,91 @@ +# Go Text + +This repository holds supplementary Go libraries for text processing, many involving Unicode. + +## Semantic Versioning +This repo uses Semantic versioning (http://semver.org/), so +1. MAJOR version when you make incompatible API changes, +1. MINOR version when you add functionality in a backwards-compatible manner, + and +1. PATCH version when you make backwards-compatible bug fixes. + +A Unicode major and minor version bump is mapped to a major version bump in +x/text. +A path version bump in Unicode is mapped to a minor version bump in x/text. +Note that, consistent with the definitions in semver, until version 1.0.0 of +x/text is reached, the minor version is considered a major version. +So going from 0.1.0 to 0.2.0 is considered to be a major version bump. + +A major new CLDR version is mapped to a minor version increase in x/text. +Any other new CLDR version is mapped to a patch version increase in x/text. + +## Download/Install + +The easiest way to install is to run `go get -u golang.org/x/text`. You can +also manually git clone the repository to `$GOPATH/src/golang.org/x/text`. + +## Contribute +To submit changes to this repository, see http://golang.org/doc/contribute.html. + +To generate the tables in this repository (except for the encoding tables), +run go generate from this directory. By default tables are generated for the +Unicode version in core and the CLDR version defined in +golang.org/x/text/unicode/cldr. + +Running go generate will as a side effect create a DATA subdirectory in this +directory, which holds all files that are used as a source for generating the +tables. This directory will also serve as a cache. + +## Testing +Run + + go test ./... + +from this directory to run all tests. Add the "-tags icu" flag to also run +ICU conformance tests (if available). This requires that you have the correct +ICU version installed on your system. + +TODO: +- updating unversioned source files. + +## Generating Tables + +To generate the tables in this repository (except for the encoding +tables), run `go generate` from this directory. By default tables are +generated for the Unicode version in core and the CLDR version defined in +golang.org/x/text/unicode/cldr. + +Running go generate will as a side effect create a DATA subdirectory in this +directory which holds all files that are used as a source for generating the +tables. This directory will also serve as a cache. + +## Versions +To update a Unicode version run + + UNICODE_VERSION=x.x.x go generate + +where `x.x.x` must correspond to a directory in http://www.unicode.org/Public/. +If this version is newer than the version in core it will also update the +relevant packages there. The idna package in x/net will always be updated. + +To update a CLDR version run + + CLDR_VERSION=version go generate + +where `version` must correspond to a directory in +http://www.unicode.org/Public/cldr/. + +Note that the code gets adapted over time to changes in the data and that +backwards compatibility is not maintained. +So updating to a different version may not work. + +The files in DATA/{iana|icu|w3|whatwg} are currently not versioned. + +## Report Issues / Send Patches + +This repository uses Gerrit for code changes. To learn how to submit changes to +this repository, see https://golang.org/doc/contribute.html. + +The main issue tracker for the image repository is located at +https://github.com/golang/go/issues. Prefix your issue with "x/image:" in the +subject line, so it is easy to find. diff --git a/vendor/golang.org/x/text/cases/tables.go b/vendor/golang.org/x/text/cases/tables.go index e6e95a685..cf73781cd 100644 --- a/vendor/golang.org/x/text/cases/tables.go +++ b/vendor/golang.org/x/text/cases/tables.go @@ -3,7 +3,7 @@ package cases // UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" +const UnicodeVersion = "10.0.0" var xorData string = "" + // Size: 185 bytes "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + @@ -216,7 +216,7 @@ func (t *caseTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// caseTrie. Total size: 11742 bytes (11.47 KiB). Checksum: 147a11466b427436. +// caseTrie. Total size: 11892 bytes (11.61 KiB). Checksum: abd4a0bc39341b30. type caseTrie struct{} func newCaseTrie(i int) *caseTrie { @@ -407,7 +407,7 @@ var caseValues = [1280]uint16{ 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0xcecb, 0x3ff: 0xcf8b, // Block 0x10, offset 0x400 0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112, - 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0004, 0x40a: 0x0004, 0x40b: 0x0713, + 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0014, 0x40a: 0x0014, 0x40b: 0x0713, 0x40c: 0x0712, 0x40d: 0xd04b, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112, 0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112, 0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112, @@ -529,52 +529,52 @@ var caseIndex = [1600]uint16{ 0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5, 0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea, 0x362: 0xeb, 0x363: 0xec, - 0x36b: 0xed, - 0x370: 0xee, 0x371: 0xef, 0x372: 0xf0, + 0x368: 0xed, 0x369: 0xee, 0x36a: 0xef, 0x36b: 0xf0, + 0x370: 0xf1, 0x371: 0xf2, 0x372: 0xf3, 0x374: 0xf4, 0x375: 0xf5, // Block 0xe, offset 0x380 0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23, - 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf1, - 0x390: 0x23, 0x391: 0xf2, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf3, + 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf6, + 0x390: 0x23, 0x391: 0xf7, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf8, // Block 0xf, offset 0x3c0 0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23, 0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23, - 0x3d0: 0xf2, + 0x3d0: 0xf7, // Block 0x10, offset 0x400 0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23, - 0x418: 0x23, 0x419: 0xf4, + 0x418: 0x23, 0x419: 0xf9, // Block 0x11, offset 0x440 0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23, - 0x468: 0xed, 0x469: 0xf5, 0x46b: 0xf6, 0x46c: 0xf7, 0x46d: 0xf8, 0x46e: 0xf9, - 0x47c: 0x23, 0x47d: 0xfa, 0x47e: 0xfb, 0x47f: 0xfc, + 0x468: 0xf0, 0x469: 0xfa, 0x46b: 0xfb, 0x46c: 0xfc, 0x46d: 0xfd, 0x46e: 0xfe, + 0x47c: 0x23, 0x47d: 0xff, 0x47e: 0x100, 0x47f: 0x101, // Block 0x12, offset 0x480 - 0x4b0: 0x23, 0x4b1: 0xfd, 0x4b2: 0xfe, + 0x4b0: 0x23, 0x4b1: 0x102, 0x4b2: 0x103, // Block 0x13, offset 0x4c0 - 0x4c5: 0xff, 0x4c6: 0x100, - 0x4c9: 0x101, - 0x4d0: 0x102, 0x4d1: 0x103, 0x4d2: 0x104, 0x4d3: 0x105, 0x4d4: 0x106, 0x4d5: 0x107, 0x4d6: 0x108, 0x4d7: 0x109, - 0x4d8: 0x10a, 0x4d9: 0x10b, 0x4da: 0x10c, 0x4db: 0x10d, 0x4dc: 0x10e, 0x4dd: 0x10f, 0x4de: 0x110, 0x4df: 0x111, - 0x4e8: 0x112, 0x4e9: 0x113, 0x4ea: 0x114, + 0x4c5: 0x104, 0x4c6: 0x105, + 0x4c9: 0x106, + 0x4d0: 0x107, 0x4d1: 0x108, 0x4d2: 0x109, 0x4d3: 0x10a, 0x4d4: 0x10b, 0x4d5: 0x10c, 0x4d6: 0x10d, 0x4d7: 0x10e, + 0x4d8: 0x10f, 0x4d9: 0x110, 0x4da: 0x111, 0x4db: 0x112, 0x4dc: 0x113, 0x4dd: 0x114, 0x4de: 0x115, 0x4df: 0x116, + 0x4e8: 0x117, 0x4e9: 0x118, 0x4ea: 0x119, // Block 0x14, offset 0x500 - 0x500: 0x115, - 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x116, 0x524: 0x10, 0x525: 0x117, - 0x538: 0x118, 0x539: 0x11, 0x53a: 0x119, + 0x500: 0x11a, + 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x11b, 0x524: 0x10, 0x525: 0x11c, + 0x538: 0x11d, 0x539: 0x11, 0x53a: 0x11e, // Block 0x15, offset 0x540 - 0x544: 0x11a, 0x545: 0x11b, 0x546: 0x11c, - 0x54f: 0x11d, + 0x544: 0x11f, 0x545: 0x120, 0x546: 0x121, + 0x54f: 0x122, // Block 0x16, offset 0x580 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, // Block 0x17, offset 0x5c0 - 0x5c0: 0x11e, 0x5c1: 0x11f, 0x5c4: 0x11f, 0x5c5: 0x11f, 0x5c6: 0x11f, 0x5c7: 0x120, + 0x5c0: 0x123, 0x5c1: 0x124, 0x5c4: 0x124, 0x5c5: 0x124, 0x5c6: 0x124, 0x5c7: 0x125, // Block 0x18, offset 0x600 0x620: 0x15, } -// sparseOffsets: 272 entries, 544 bytes -var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xc0, 0xce, 0xd4, 0xe2, 0xed, 0xf8, 0x103, 0x10f, 0x119, 0x124, 0x12f, 0x13b, 0x147, 0x14f, 0x157, 0x161, 0x16c, 0x178, 0x17e, 0x189, 0x18e, 0x196, 0x199, 0x19e, 0x1a2, 0x1a6, 0x1ad, 0x1b6, 0x1be, 0x1bf, 0x1c8, 0x1cf, 0x1d7, 0x1dd, 0x1e3, 0x1e8, 0x1ec, 0x1ef, 0x1f1, 0x1f4, 0x1f9, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x207, 0x20c, 0x210, 0x219, 0x21c, 0x21f, 0x225, 0x226, 0x231, 0x232, 0x233, 0x238, 0x245, 0x24d, 0x255, 0x25e, 0x267, 0x270, 0x275, 0x278, 0x281, 0x28e, 0x290, 0x297, 0x299, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x327, 0x32e, 0x332, 0x33b, 0x33c, 0x344, 0x348, 0x34d, 0x355, 0x35b, 0x361, 0x36b, 0x370, 0x379, 0x37f, 0x386, 0x38a, 0x392, 0x394, 0x396, 0x399, 0x39b, 0x39d, 0x39e, 0x39f, 0x3a1, 0x3a3, 0x3a9, 0x3ae, 0x3b0, 0x3b6, 0x3b9, 0x3bb, 0x3c1, 0x3c6, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cd, 0x3cf, 0x3d1, 0x3d4, 0x3d6, 0x3d9, 0x3e1, 0x3e4, 0x3e8, 0x3f0, 0x3f2, 0x3f3, 0x3f4, 0x3f6, 0x3fc, 0x3fe, 0x3ff, 0x401, 0x403, 0x405, 0x412, 0x413, 0x414, 0x418, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x422, 0x426, 0x42c, 0x42e, 0x435, 0x438, 0x43c, 0x442, 0x44b, 0x451, 0x457, 0x461, 0x46b, 0x46d, 0x474, 0x47a, 0x480, 0x486, 0x489, 0x48f, 0x492, 0x49a, 0x49b, 0x4a2, 0x4a3, 0x4a6, 0x4a7, 0x4ad, 0x4b0, 0x4b8, 0x4b9, 0x4ba, 0x4bb, 0x4bc, 0x4be, 0x4c0, 0x4c2, 0x4c6, 0x4c7, 0x4c9, 0x4ca, 0x4cb, 0x4cd, 0x4d2, 0x4d7, 0x4db, 0x4dc, 0x4df, 0x4e3, 0x4ee, 0x4f2, 0x4fa, 0x4ff, 0x503, 0x506, 0x50a, 0x50d, 0x510, 0x515, 0x519, 0x51d, 0x521, 0x525, 0x527, 0x529, 0x52c, 0x531, 0x533, 0x538, 0x541, 0x546, 0x547, 0x54a, 0x54b, 0x54c, 0x54e, 0x54f, 0x550} +// sparseOffsets: 277 entries, 554 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x54, 0x64, 0x6b, 0x70, 0x7e, 0x7f, 0x8d, 0x9c, 0xa6, 0xa9, 0xaf, 0xb7, 0xba, 0xbc, 0xca, 0xd0, 0xde, 0xe9, 0xf5, 0x100, 0x10c, 0x116, 0x122, 0x12d, 0x139, 0x145, 0x14d, 0x155, 0x15f, 0x16a, 0x176, 0x17d, 0x188, 0x18d, 0x195, 0x198, 0x19d, 0x1a1, 0x1a5, 0x1ac, 0x1b5, 0x1bd, 0x1be, 0x1c7, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e7, 0x1eb, 0x1ee, 0x1f0, 0x1f3, 0x1f8, 0x1f9, 0x1fb, 0x1fd, 0x1ff, 0x206, 0x20b, 0x20f, 0x218, 0x21b, 0x21e, 0x224, 0x225, 0x230, 0x231, 0x232, 0x237, 0x244, 0x24c, 0x254, 0x25d, 0x266, 0x26f, 0x274, 0x277, 0x280, 0x28d, 0x28f, 0x296, 0x298, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x326, 0x32d, 0x331, 0x33a, 0x33b, 0x343, 0x347, 0x34c, 0x354, 0x35a, 0x360, 0x36a, 0x36f, 0x378, 0x37e, 0x385, 0x389, 0x391, 0x393, 0x395, 0x398, 0x39a, 0x39c, 0x39d, 0x39e, 0x3a0, 0x3a2, 0x3a8, 0x3ad, 0x3af, 0x3b5, 0x3b8, 0x3ba, 0x3c0, 0x3c5, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cc, 0x3ce, 0x3d0, 0x3d3, 0x3d5, 0x3d8, 0x3e0, 0x3e3, 0x3e7, 0x3ef, 0x3f1, 0x3f2, 0x3f3, 0x3f5, 0x3fb, 0x3fd, 0x3fe, 0x400, 0x402, 0x404, 0x411, 0x412, 0x413, 0x417, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x421, 0x425, 0x42b, 0x42d, 0x434, 0x437, 0x43b, 0x441, 0x44a, 0x450, 0x456, 0x460, 0x46a, 0x46c, 0x473, 0x479, 0x47f, 0x485, 0x488, 0x48e, 0x491, 0x499, 0x49a, 0x4a1, 0x4a2, 0x4a5, 0x4af, 0x4b5, 0x4bb, 0x4bc, 0x4c2, 0x4c5, 0x4cd, 0x4d4, 0x4db, 0x4dc, 0x4dd, 0x4de, 0x4df, 0x4e1, 0x4e3, 0x4e5, 0x4e9, 0x4ea, 0x4ec, 0x4ed, 0x4ee, 0x4f0, 0x4f5, 0x4fa, 0x4fe, 0x4ff, 0x502, 0x506, 0x511, 0x515, 0x51d, 0x522, 0x526, 0x529, 0x52d, 0x530, 0x533, 0x538, 0x53c, 0x540, 0x544, 0x548, 0x54a, 0x54c, 0x54f, 0x554, 0x556, 0x55b, 0x564, 0x569, 0x56a, 0x56d, 0x56e, 0x56f, 0x571, 0x572, 0x573} -// sparseValues: 1360 entries, 5440 bytes -var sparseValues = [1360]valueRange{ +// sparseValues: 1395 entries, 5580 bytes +var sparseValues = [1395]valueRange{ // Block 0x0, offset 0x0 {value: 0x0004, lo: 0xa8, hi: 0xa8}, {value: 0x0012, lo: 0xaa, hi: 0xaa}, @@ -628,36 +628,31 @@ var sparseValues = [1360]valueRange{ {value: 0x12ca, lo: 0xbf, hi: 0xbf}, // Block 0x5, offset 0x2e {value: 0x0015, lo: 0x80, hi: 0x81}, - {value: 0x0004, lo: 0x82, hi: 0x85}, - {value: 0x0014, lo: 0x86, hi: 0x91}, - {value: 0x0004, lo: 0x92, hi: 0x96}, - {value: 0x0054, lo: 0x97, hi: 0x97}, - {value: 0x0004, lo: 0x98, hi: 0x9f}, + {value: 0x0014, lo: 0x82, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9d}, + {value: 0x0014, lo: 0x9e, hi: 0x9f}, {value: 0x0015, lo: 0xa0, hi: 0xa4}, {value: 0x0004, lo: 0xa5, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xac}, - {value: 0x0004, lo: 0xad, hi: 0xad}, - {value: 0x0014, lo: 0xae, hi: 0xae}, - {value: 0x0004, lo: 0xaf, hi: 0xbf}, - // Block 0x6, offset 0x3a + {value: 0x0014, lo: 0xac, hi: 0xbf}, + // Block 0x6, offset 0x35 {value: 0x0024, lo: 0x80, hi: 0x94}, {value: 0x0034, lo: 0x95, hi: 0xbc}, {value: 0x0024, lo: 0xbd, hi: 0xbf}, - // Block 0x7, offset 0x3d + // Block 0x7, offset 0x38 {value: 0x6553, lo: 0x80, hi: 0x8f}, {value: 0x2013, lo: 0x90, hi: 0x9f}, {value: 0x5f53, lo: 0xa0, hi: 0xaf}, {value: 0x2012, lo: 0xb0, hi: 0xbf}, - // Block 0x8, offset 0x41 + // Block 0x8, offset 0x3c {value: 0x5f52, lo: 0x80, hi: 0x8f}, {value: 0x6552, lo: 0x90, hi: 0x9f}, {value: 0x0117, lo: 0xa0, hi: 0xbf}, - // Block 0x9, offset 0x44 + // Block 0x9, offset 0x3f {value: 0x0117, lo: 0x80, hi: 0x81}, {value: 0x0024, lo: 0x83, hi: 0x87}, {value: 0x0014, lo: 0x88, hi: 0x89}, {value: 0x0117, lo: 0x8a, hi: 0xbf}, - // Block 0xa, offset 0x48 + // Block 0xa, offset 0x43 {value: 0x0f13, lo: 0x80, hi: 0x80}, {value: 0x0316, lo: 0x81, hi: 0x82}, {value: 0x0716, lo: 0x83, hi: 0x84}, @@ -668,16 +663,16 @@ var sparseValues = [1360]valueRange{ {value: 0x0316, lo: 0x8d, hi: 0x8e}, {value: 0x0f12, lo: 0x8f, hi: 0x8f}, {value: 0x0117, lo: 0x90, hi: 0xbf}, - // Block 0xb, offset 0x52 + // Block 0xb, offset 0x4d {value: 0x0117, lo: 0x80, hi: 0xaf}, {value: 0x6553, lo: 0xb1, hi: 0xbf}, - // Block 0xc, offset 0x54 + // Block 0xc, offset 0x4f {value: 0x3013, lo: 0x80, hi: 0x8f}, {value: 0x6853, lo: 0x90, hi: 0x96}, {value: 0x0014, lo: 0x99, hi: 0x99}, {value: 0x6552, lo: 0xa1, hi: 0xaf}, {value: 0x3012, lo: 0xb0, hi: 0xbf}, - // Block 0xd, offset 0x59 + // Block 0xd, offset 0x54 {value: 0x6852, lo: 0x80, hi: 0x86}, {value: 0x27aa, lo: 0x87, hi: 0x87}, {value: 0x0034, lo: 0x91, hi: 0x91}, @@ -694,7 +689,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xaf, hi: 0xaf}, {value: 0x0034, lo: 0xb0, hi: 0xbd}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xe, offset 0x69 + // Block 0xe, offset 0x64 {value: 0x0034, lo: 0x81, hi: 0x82}, {value: 0x0024, lo: 0x84, hi: 0x84}, {value: 0x0034, lo: 0x85, hi: 0x85}, @@ -702,13 +697,13 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x90, hi: 0xaa}, {value: 0x0010, lo: 0xb0, hi: 0xb3}, {value: 0x0054, lo: 0xb4, hi: 0xb4}, - // Block 0xf, offset 0x70 + // Block 0xf, offset 0x6b {value: 0x0014, lo: 0x80, hi: 0x85}, {value: 0x0024, lo: 0x90, hi: 0x97}, {value: 0x0034, lo: 0x98, hi: 0x9a}, {value: 0x0014, lo: 0x9c, hi: 0x9c}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x10, offset 0x75 + // Block 0x10, offset 0x70 {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x8a}, {value: 0x0034, lo: 0x8b, hi: 0x92}, @@ -723,9 +718,9 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xae, hi: 0xaf}, {value: 0x0034, lo: 0xb0, hi: 0xb0}, {value: 0x0010, lo: 0xb1, hi: 0xbf}, - // Block 0x11, offset 0x83 + // Block 0x11, offset 0x7e {value: 0x0010, lo: 0x80, hi: 0xbf}, - // Block 0x12, offset 0x84 + // Block 0x12, offset 0x7f {value: 0x0010, lo: 0x80, hi: 0x93}, {value: 0x0010, lo: 0x95, hi: 0x95}, {value: 0x0024, lo: 0x96, hi: 0x9c}, @@ -740,7 +735,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xad, hi: 0xad}, {value: 0x0010, lo: 0xae, hi: 0xbc}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x13, offset 0x92 + // Block 0x13, offset 0x8d {value: 0x0014, lo: 0x8f, hi: 0x8f}, {value: 0x0010, lo: 0x90, hi: 0x90}, {value: 0x0034, lo: 0x91, hi: 0x91}, @@ -756,7 +751,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xbd, hi: 0xbd}, {value: 0x0034, lo: 0xbe, hi: 0xbe}, {value: 0x0024, lo: 0xbf, hi: 0xbf}, - // Block 0x14, offset 0xa1 + // Block 0x14, offset 0x9c {value: 0x0024, lo: 0x80, hi: 0x81}, {value: 0x0034, lo: 0x82, hi: 0x82}, {value: 0x0024, lo: 0x83, hi: 0x83}, @@ -767,18 +762,18 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0x88, hi: 0x88}, {value: 0x0024, lo: 0x89, hi: 0x8a}, {value: 0x0010, lo: 0x8d, hi: 0xbf}, - // Block 0x15, offset 0xab + // Block 0x15, offset 0xa6 {value: 0x0010, lo: 0x80, hi: 0xa5}, {value: 0x0014, lo: 0xa6, hi: 0xb0}, {value: 0x0010, lo: 0xb1, hi: 0xb1}, - // Block 0x16, offset 0xae + // Block 0x16, offset 0xa9 {value: 0x0010, lo: 0x80, hi: 0xaa}, {value: 0x0024, lo: 0xab, hi: 0xb1}, {value: 0x0034, lo: 0xb2, hi: 0xb2}, {value: 0x0024, lo: 0xb3, hi: 0xb3}, {value: 0x0014, lo: 0xb4, hi: 0xb5}, {value: 0x0014, lo: 0xba, hi: 0xba}, - // Block 0x17, offset 0xb4 + // Block 0x17, offset 0xaf {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0024, lo: 0x96, hi: 0x99}, {value: 0x0014, lo: 0x9a, hi: 0x9a}, @@ -787,13 +782,14 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xa5, hi: 0xa7}, {value: 0x0014, lo: 0xa8, hi: 0xa8}, {value: 0x0024, lo: 0xa9, hi: 0xad}, - // Block 0x18, offset 0xbc + // Block 0x18, offset 0xb7 {value: 0x0010, lo: 0x80, hi: 0x98}, {value: 0x0034, lo: 0x99, hi: 0x9b}, - // Block 0x19, offset 0xbe + {value: 0x0010, lo: 0xa0, hi: 0xaa}, + // Block 0x19, offset 0xba {value: 0x0010, lo: 0xa0, hi: 0xb4}, {value: 0x0010, lo: 0xb6, hi: 0xbd}, - // Block 0x1a, offset 0xc0 + // Block 0x1a, offset 0xbc {value: 0x0024, lo: 0x94, hi: 0xa1}, {value: 0x0014, lo: 0xa2, hi: 0xa2}, {value: 0x0034, lo: 0xa3, hi: 0xa3}, @@ -808,14 +804,14 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xb7, hi: 0xb8}, {value: 0x0034, lo: 0xb9, hi: 0xba}, {value: 0x0024, lo: 0xbb, hi: 0xbf}, - // Block 0x1b, offset 0xce + // Block 0x1b, offset 0xca {value: 0x0014, lo: 0x80, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0xb9}, {value: 0x0014, lo: 0xba, hi: 0xba}, {value: 0x0010, lo: 0xbb, hi: 0xbb}, {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x1c, offset 0xd4 + // Block 0x1c, offset 0xd0 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x88}, {value: 0x0010, lo: 0x89, hi: 0x8c}, @@ -830,7 +826,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0014, lo: 0xb1, hi: 0xb1}, {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0x1d, offset 0xe2 + // Block 0x1d, offset 0xde {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0x83}, @@ -842,7 +838,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xb6, hi: 0xb9}, {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x1e, offset 0xed + // Block 0x1e, offset 0xe9 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x84}, {value: 0x0010, lo: 0x87, hi: 0x88}, @@ -854,7 +850,8 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x9f, hi: 0xa1}, {value: 0x0014, lo: 0xa2, hi: 0xa3}, {value: 0x0010, lo: 0xa6, hi: 0xb1}, - // Block 0x1f, offset 0xf8 + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x1f, offset 0xf5 {value: 0x0014, lo: 0x81, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8a}, @@ -866,7 +863,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xb8, hi: 0xb9}, {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x20, offset 0x103 + // Block 0x20, offset 0x100 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x82}, {value: 0x0014, lo: 0x87, hi: 0x88}, @@ -879,7 +876,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xb0, hi: 0xb1}, {value: 0x0010, lo: 0xb2, hi: 0xb4}, {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x21, offset 0x10f + // Block 0x21, offset 0x10c {value: 0x0014, lo: 0x81, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8d}, @@ -890,7 +887,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xb5, hi: 0xb9}, {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x22, offset 0x119 + // Block 0x22, offset 0x116 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x85}, {value: 0x0014, lo: 0x87, hi: 0x88}, @@ -902,7 +899,8 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xa2, hi: 0xa3}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0010, lo: 0xb9, hi: 0xb9}, - // Block 0x23, offset 0x124 + {value: 0x0014, lo: 0xba, hi: 0xbf}, + // Block 0x23, offset 0x122 {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8c}, @@ -914,7 +912,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbe}, {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x24, offset 0x12f + // Block 0x24, offset 0x12d {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x84}, {value: 0x0010, lo: 0x87, hi: 0x88}, @@ -927,7 +925,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xa2, hi: 0xa3}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0010, lo: 0xb1, hi: 0xb1}, - // Block 0x25, offset 0x13b + // Block 0x25, offset 0x139 {value: 0x0014, lo: 0x82, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8a}, @@ -940,7 +938,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xa8, hi: 0xaa}, {value: 0x0010, lo: 0xae, hi: 0xb9}, {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x26, offset 0x147 + // Block 0x26, offset 0x145 {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x82}, {value: 0x0010, lo: 0x86, hi: 0x88}, @@ -949,7 +947,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x90, hi: 0x90}, {value: 0x0010, lo: 0x97, hi: 0x97}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, - // Block 0x27, offset 0x14f + // Block 0x27, offset 0x14d {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8c}, @@ -958,7 +956,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xaa, hi: 0xb9}, {value: 0x0010, lo: 0xbd, hi: 0xbd}, {value: 0x0014, lo: 0xbe, hi: 0xbf}, - // Block 0x28, offset 0x157 + // Block 0x28, offset 0x155 {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x84}, {value: 0x0014, lo: 0x86, hi: 0x88}, @@ -969,7 +967,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xa0, hi: 0xa1}, {value: 0x0014, lo: 0xa2, hi: 0xa3}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, - // Block 0x29, offset 0x161 + // Block 0x29, offset 0x15f {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0x83}, @@ -981,7 +979,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbe}, {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x2a, offset 0x16c + // Block 0x2a, offset 0x16a {value: 0x0010, lo: 0x80, hi: 0x84}, {value: 0x0014, lo: 0x86, hi: 0x86}, {value: 0x0010, lo: 0x87, hi: 0x88}, @@ -994,14 +992,15 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xa2, hi: 0xa3}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0010, lo: 0xb1, hi: 0xb2}, - // Block 0x2b, offset 0x178 - {value: 0x0014, lo: 0x81, hi: 0x81}, + // Block 0x2b, offset 0x176 + {value: 0x0014, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8c}, {value: 0x0010, lo: 0x8e, hi: 0x90}, {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x2c, offset 0x17e + // Block 0x2c, offset 0x17d {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x84}, {value: 0x0010, lo: 0x86, hi: 0x88}, @@ -1013,13 +1012,13 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xa2, hi: 0xa3}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0010, lo: 0xba, hi: 0xbf}, - // Block 0x2d, offset 0x189 + // Block 0x2d, offset 0x188 {value: 0x0010, lo: 0x82, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x96}, {value: 0x0010, lo: 0x9a, hi: 0xb1}, {value: 0x0010, lo: 0xb3, hi: 0xbb}, {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x2e, offset 0x18e + // Block 0x2e, offset 0x18d {value: 0x0010, lo: 0x80, hi: 0x86}, {value: 0x0034, lo: 0x8a, hi: 0x8a}, {value: 0x0010, lo: 0x8f, hi: 0x91}, @@ -1028,27 +1027,27 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x98, hi: 0x9f}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0010, lo: 0xb2, hi: 0xb3}, - // Block 0x2f, offset 0x196 + // Block 0x2f, offset 0x195 {value: 0x0014, lo: 0xb1, hi: 0xb1}, {value: 0x0014, lo: 0xb4, hi: 0xb7}, {value: 0x0034, lo: 0xb8, hi: 0xba}, - // Block 0x30, offset 0x199 + // Block 0x30, offset 0x198 {value: 0x0004, lo: 0x86, hi: 0x86}, {value: 0x0014, lo: 0x87, hi: 0x87}, {value: 0x0034, lo: 0x88, hi: 0x8b}, {value: 0x0014, lo: 0x8c, hi: 0x8e}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x31, offset 0x19e + // Block 0x31, offset 0x19d {value: 0x0014, lo: 0xb1, hi: 0xb1}, {value: 0x0014, lo: 0xb4, hi: 0xb7}, {value: 0x0034, lo: 0xb8, hi: 0xb9}, {value: 0x0014, lo: 0xbb, hi: 0xbc}, - // Block 0x32, offset 0x1a2 + // Block 0x32, offset 0x1a1 {value: 0x0004, lo: 0x86, hi: 0x86}, {value: 0x0034, lo: 0x88, hi: 0x8b}, {value: 0x0014, lo: 0x8c, hi: 0x8d}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x33, offset 0x1a6 + // Block 0x33, offset 0x1a5 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0034, lo: 0x98, hi: 0x99}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, @@ -1056,7 +1055,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xb7, hi: 0xb7}, {value: 0x0034, lo: 0xb9, hi: 0xb9}, {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x34, offset 0x1ad + // Block 0x34, offset 0x1ac {value: 0x0010, lo: 0x80, hi: 0x87}, {value: 0x0010, lo: 0x89, hi: 0xac}, {value: 0x0034, lo: 0xb1, hi: 0xb2}, @@ -1066,7 +1065,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xba, hi: 0xbd}, {value: 0x0014, lo: 0xbe, hi: 0xbe}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x35, offset 0x1b6 + // Block 0x35, offset 0x1b5 {value: 0x0034, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0024, lo: 0x82, hi: 0x83}, @@ -1075,9 +1074,9 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x88, hi: 0x8c}, {value: 0x0014, lo: 0x8d, hi: 0x97}, {value: 0x0014, lo: 0x99, hi: 0xbc}, - // Block 0x36, offset 0x1be + // Block 0x36, offset 0x1bd {value: 0x0034, lo: 0x86, hi: 0x86}, - // Block 0x37, offset 0x1bf + // Block 0x37, offset 0x1be {value: 0x0010, lo: 0xab, hi: 0xac}, {value: 0x0014, lo: 0xad, hi: 0xb0}, {value: 0x0010, lo: 0xb1, hi: 0xb1}, @@ -1087,7 +1086,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xb9, hi: 0xba}, {value: 0x0010, lo: 0xbb, hi: 0xbc}, {value: 0x0014, lo: 0xbd, hi: 0xbe}, - // Block 0x38, offset 0x1c8 + // Block 0x38, offset 0x1c7 {value: 0x0010, lo: 0x80, hi: 0x89}, {value: 0x0010, lo: 0x96, hi: 0x97}, {value: 0x0014, lo: 0x98, hi: 0x99}, @@ -1095,7 +1094,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xa2, hi: 0xa4}, {value: 0x0010, lo: 0xa7, hi: 0xad}, {value: 0x0014, lo: 0xb1, hi: 0xb4}, - // Block 0x39, offset 0x1cf + // Block 0x39, offset 0x1ce {value: 0x0014, lo: 0x82, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x84}, {value: 0x0014, lo: 0x85, hi: 0x86}, @@ -1104,60 +1103,60 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x8f, hi: 0x9c}, {value: 0x0014, lo: 0x9d, hi: 0x9d}, {value: 0x6c53, lo: 0xa0, hi: 0xbf}, - // Block 0x3a, offset 0x1d7 + // Block 0x3a, offset 0x1d6 {value: 0x7053, lo: 0x80, hi: 0x85}, {value: 0x7053, lo: 0x87, hi: 0x87}, {value: 0x7053, lo: 0x8d, hi: 0x8d}, {value: 0x0010, lo: 0x90, hi: 0xba}, {value: 0x0014, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x3b, offset 0x1dd + // Block 0x3b, offset 0x1dc {value: 0x0010, lo: 0x80, hi: 0x88}, {value: 0x0010, lo: 0x8a, hi: 0x8d}, {value: 0x0010, lo: 0x90, hi: 0x96}, {value: 0x0010, lo: 0x98, hi: 0x98}, {value: 0x0010, lo: 0x9a, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x3c, offset 0x1e3 + // Block 0x3c, offset 0x1e2 {value: 0x0010, lo: 0x80, hi: 0x88}, {value: 0x0010, lo: 0x8a, hi: 0x8d}, {value: 0x0010, lo: 0x90, hi: 0xb0}, {value: 0x0010, lo: 0xb2, hi: 0xb5}, {value: 0x0010, lo: 0xb8, hi: 0xbe}, - // Block 0x3d, offset 0x1e8 + // Block 0x3d, offset 0x1e7 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x82, hi: 0x85}, {value: 0x0010, lo: 0x88, hi: 0x96}, {value: 0x0010, lo: 0x98, hi: 0xbf}, - // Block 0x3e, offset 0x1ec + // Block 0x3e, offset 0x1eb {value: 0x0010, lo: 0x80, hi: 0x90}, {value: 0x0010, lo: 0x92, hi: 0x95}, {value: 0x0010, lo: 0x98, hi: 0xbf}, - // Block 0x3f, offset 0x1ef + // Block 0x3f, offset 0x1ee {value: 0x0010, lo: 0x80, hi: 0x9a}, {value: 0x0024, lo: 0x9d, hi: 0x9f}, - // Block 0x40, offset 0x1f1 + // Block 0x40, offset 0x1f0 {value: 0x0010, lo: 0x80, hi: 0x8f}, {value: 0x7453, lo: 0xa0, hi: 0xaf}, {value: 0x7853, lo: 0xb0, hi: 0xbf}, - // Block 0x41, offset 0x1f4 + // Block 0x41, offset 0x1f3 {value: 0x7c53, lo: 0x80, hi: 0x8f}, {value: 0x8053, lo: 0x90, hi: 0x9f}, {value: 0x7c53, lo: 0xa0, hi: 0xaf}, {value: 0x0813, lo: 0xb0, hi: 0xb5}, {value: 0x0892, lo: 0xb8, hi: 0xbd}, - // Block 0x42, offset 0x1f9 + // Block 0x42, offset 0x1f8 {value: 0x0010, lo: 0x81, hi: 0xbf}, - // Block 0x43, offset 0x1fa + // Block 0x43, offset 0x1f9 {value: 0x0010, lo: 0x80, hi: 0xac}, {value: 0x0010, lo: 0xaf, hi: 0xbf}, - // Block 0x44, offset 0x1fc + // Block 0x44, offset 0x1fb {value: 0x0010, lo: 0x81, hi: 0x9a}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x45, offset 0x1fe + // Block 0x45, offset 0x1fd {value: 0x0010, lo: 0x80, hi: 0xaa}, {value: 0x0010, lo: 0xae, hi: 0xb8}, - // Block 0x46, offset 0x200 + // Block 0x46, offset 0x1ff {value: 0x0010, lo: 0x80, hi: 0x8c}, {value: 0x0010, lo: 0x8e, hi: 0x91}, {value: 0x0014, lo: 0x92, hi: 0x93}, @@ -1165,18 +1164,18 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xa0, hi: 0xb1}, {value: 0x0014, lo: 0xb2, hi: 0xb3}, {value: 0x0034, lo: 0xb4, hi: 0xb4}, - // Block 0x47, offset 0x207 + // Block 0x47, offset 0x206 {value: 0x0010, lo: 0x80, hi: 0x91}, {value: 0x0014, lo: 0x92, hi: 0x93}, {value: 0x0010, lo: 0xa0, hi: 0xac}, {value: 0x0010, lo: 0xae, hi: 0xb0}, {value: 0x0014, lo: 0xb2, hi: 0xb3}, - // Block 0x48, offset 0x20c + // Block 0x48, offset 0x20b {value: 0x0014, lo: 0xb4, hi: 0xb5}, {value: 0x0010, lo: 0xb6, hi: 0xb6}, {value: 0x0014, lo: 0xb7, hi: 0xbd}, {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x49, offset 0x210 + // Block 0x49, offset 0x20f {value: 0x0010, lo: 0x80, hi: 0x85}, {value: 0x0014, lo: 0x86, hi: 0x86}, {value: 0x0010, lo: 0x87, hi: 0x88}, @@ -1186,24 +1185,24 @@ var sparseValues = [1360]valueRange{ {value: 0x0004, lo: 0x97, hi: 0x97}, {value: 0x0024, lo: 0x9d, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0x4a, offset 0x219 + // Block 0x4a, offset 0x218 {value: 0x0014, lo: 0x8b, hi: 0x8e}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x4b, offset 0x21c + // Block 0x4b, offset 0x21b {value: 0x0010, lo: 0x80, hi: 0x82}, {value: 0x0014, lo: 0x83, hi: 0x83}, {value: 0x0010, lo: 0x84, hi: 0xb7}, - // Block 0x4c, offset 0x21f + // Block 0x4c, offset 0x21e {value: 0x0010, lo: 0x80, hi: 0x84}, {value: 0x0014, lo: 0x85, hi: 0x86}, {value: 0x0010, lo: 0x87, hi: 0xa8}, {value: 0x0034, lo: 0xa9, hi: 0xa9}, {value: 0x0010, lo: 0xaa, hi: 0xaa}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x4d, offset 0x225 + // Block 0x4d, offset 0x224 {value: 0x0010, lo: 0x80, hi: 0xb5}, - // Block 0x4e, offset 0x226 + // Block 0x4e, offset 0x225 {value: 0x0010, lo: 0x80, hi: 0x9e}, {value: 0x0014, lo: 0xa0, hi: 0xa2}, {value: 0x0010, lo: 0xa3, hi: 0xa6}, @@ -1215,17 +1214,17 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xb9, hi: 0xb9}, {value: 0x0024, lo: 0xba, hi: 0xba}, {value: 0x0034, lo: 0xbb, hi: 0xbb}, - // Block 0x4f, offset 0x231 + // Block 0x4f, offset 0x230 {value: 0x0010, lo: 0x86, hi: 0x8f}, - // Block 0x50, offset 0x232 + // Block 0x50, offset 0x231 {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x51, offset 0x233 + // Block 0x51, offset 0x232 {value: 0x0010, lo: 0x80, hi: 0x96}, {value: 0x0024, lo: 0x97, hi: 0x97}, {value: 0x0034, lo: 0x98, hi: 0x98}, {value: 0x0010, lo: 0x99, hi: 0x9a}, {value: 0x0014, lo: 0x9b, hi: 0x9b}, - // Block 0x52, offset 0x238 + // Block 0x52, offset 0x237 {value: 0x0010, lo: 0x95, hi: 0x95}, {value: 0x0014, lo: 0x96, hi: 0x96}, {value: 0x0010, lo: 0x97, hi: 0x97}, @@ -1239,7 +1238,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xb3, hi: 0xb4}, {value: 0x0024, lo: 0xb5, hi: 0xbc}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x53, offset 0x245 + // Block 0x53, offset 0x244 {value: 0x0010, lo: 0x80, hi: 0x89}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0004, lo: 0xa7, hi: 0xa7}, @@ -1248,7 +1247,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xbb, hi: 0xbc}, {value: 0x0034, lo: 0xbd, hi: 0xbd}, {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0x54, offset 0x24d + // Block 0x54, offset 0x24c {value: 0x0014, lo: 0x80, hi: 0x83}, {value: 0x0010, lo: 0x84, hi: 0xb3}, {value: 0x0034, lo: 0xb4, hi: 0xb4}, @@ -1257,7 +1256,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xbb, hi: 0xbb}, {value: 0x0014, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x55, offset 0x255 + // Block 0x55, offset 0x254 {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0014, lo: 0x82, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x83}, @@ -1267,7 +1266,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xab, hi: 0xab}, {value: 0x0034, lo: 0xac, hi: 0xac}, {value: 0x0024, lo: 0xad, hi: 0xb3}, - // Block 0x56, offset 0x25e + // Block 0x56, offset 0x25d {value: 0x0014, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0xa1}, {value: 0x0014, lo: 0xa2, hi: 0xa5}, @@ -1277,7 +1276,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xab, hi: 0xab}, {value: 0x0014, lo: 0xac, hi: 0xad}, {value: 0x0010, lo: 0xae, hi: 0xbf}, - // Block 0x57, offset 0x267 + // Block 0x57, offset 0x266 {value: 0x0010, lo: 0x80, hi: 0xa5}, {value: 0x0034, lo: 0xa6, hi: 0xa6}, {value: 0x0010, lo: 0xa7, hi: 0xa7}, @@ -1287,17 +1286,17 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xae, hi: 0xae}, {value: 0x0014, lo: 0xaf, hi: 0xb1}, {value: 0x0030, lo: 0xb2, hi: 0xb3}, - // Block 0x58, offset 0x270 + // Block 0x58, offset 0x26f {value: 0x0010, lo: 0x80, hi: 0xab}, {value: 0x0014, lo: 0xac, hi: 0xb3}, {value: 0x0010, lo: 0xb4, hi: 0xb5}, {value: 0x0014, lo: 0xb6, hi: 0xb6}, {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0x59, offset 0x275 + // Block 0x59, offset 0x274 {value: 0x0010, lo: 0x80, hi: 0x89}, {value: 0x0010, lo: 0x8d, hi: 0xb7}, {value: 0x0014, lo: 0xb8, hi: 0xbd}, - // Block 0x5a, offset 0x278 + // Block 0x5a, offset 0x277 {value: 0x296a, lo: 0x80, hi: 0x80}, {value: 0x2a2a, lo: 0x81, hi: 0x81}, {value: 0x2aea, lo: 0x82, hi: 0x82}, @@ -1307,7 +1306,7 @@ var sparseValues = [1360]valueRange{ {value: 0x2dea, lo: 0x86, hi: 0x86}, {value: 0x2eaa, lo: 0x87, hi: 0x87}, {value: 0x2f6a, lo: 0x88, hi: 0x88}, - // Block 0x5b, offset 0x281 + // Block 0x5b, offset 0x280 {value: 0x0024, lo: 0x90, hi: 0x92}, {value: 0x0034, lo: 0x94, hi: 0x99}, {value: 0x0024, lo: 0x9a, hi: 0x9b}, @@ -1319,12 +1318,12 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xad, hi: 0xad}, {value: 0x0010, lo: 0xae, hi: 0xb3}, {value: 0x0024, lo: 0xb4, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb5, hi: 0xb7}, {value: 0x0024, lo: 0xb8, hi: 0xb9}, - // Block 0x5c, offset 0x28e + // Block 0x5c, offset 0x28d {value: 0x0012, lo: 0x80, hi: 0xab}, {value: 0x0015, lo: 0xac, hi: 0xbf}, - // Block 0x5d, offset 0x290 + // Block 0x5d, offset 0x28f {value: 0x0015, lo: 0x80, hi: 0xaa}, {value: 0x0012, lo: 0xab, hi: 0xb7}, {value: 0x0015, lo: 0xb8, hi: 0xb8}, @@ -1332,10 +1331,10 @@ var sparseValues = [1360]valueRange{ {value: 0x0012, lo: 0xba, hi: 0xbc}, {value: 0x8852, lo: 0xbd, hi: 0xbd}, {value: 0x0012, lo: 0xbe, hi: 0xbf}, - // Block 0x5e, offset 0x297 + // Block 0x5e, offset 0x296 {value: 0x0012, lo: 0x80, hi: 0x9a}, {value: 0x0015, lo: 0x9b, hi: 0xbf}, - // Block 0x5f, offset 0x299 + // Block 0x5f, offset 0x298 {value: 0x0024, lo: 0x80, hi: 0x81}, {value: 0x0034, lo: 0x82, hi: 0x82}, {value: 0x0024, lo: 0x83, hi: 0x89}, @@ -1343,6 +1342,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0x8b, hi: 0x8c}, {value: 0x0034, lo: 0x8d, hi: 0x90}, {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb9}, {value: 0x0024, lo: 0xbb, hi: 0xbb}, {value: 0x0034, lo: 0xbc, hi: 0xbd}, {value: 0x0024, lo: 0xbe, hi: 0xbe}, @@ -1468,7 +1468,7 @@ var sparseValues = [1360]valueRange{ // Block 0x73, offset 0x307 {value: 0x0004, lo: 0xbc, hi: 0xbe}, // Block 0x74, offset 0x308 - {value: 0x0010, lo: 0x85, hi: 0xad}, + {value: 0x0010, lo: 0x85, hi: 0xae}, {value: 0x0010, lo: 0xb1, hi: 0xbf}, // Block 0x75, offset 0x30a {value: 0x0010, lo: 0x80, hi: 0x8e}, @@ -1503,12 +1503,11 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xb0, hi: 0xb1}, // Block 0x7d, offset 0x321 {value: 0x0004, lo: 0x80, hi: 0x96}, - {value: 0x0014, lo: 0x97, hi: 0x9f}, - {value: 0x0004, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0x97, hi: 0xa1}, {value: 0x0117, lo: 0xa2, hi: 0xaf}, {value: 0x0012, lo: 0xb0, hi: 0xb1}, {value: 0x0117, lo: 0xb2, hi: 0xbf}, - // Block 0x7e, offset 0x327 + // Block 0x7e, offset 0x326 {value: 0x0117, lo: 0x80, hi: 0xaf}, {value: 0x0015, lo: 0xb0, hi: 0xb0}, {value: 0x0012, lo: 0xb1, hi: 0xb8}, @@ -1516,12 +1515,12 @@ var sparseValues = [1360]valueRange{ {value: 0x0716, lo: 0xbb, hi: 0xbc}, {value: 0x8453, lo: 0xbd, hi: 0xbd}, {value: 0x0117, lo: 0xbe, hi: 0xbf}, - // Block 0x7f, offset 0x32e + // Block 0x7f, offset 0x32d {value: 0x0010, lo: 0xb7, hi: 0xb7}, {value: 0x0015, lo: 0xb8, hi: 0xb9}, {value: 0x0012, lo: 0xba, hi: 0xba}, {value: 0x0010, lo: 0xbb, hi: 0xbf}, - // Block 0x80, offset 0x332 + // Block 0x80, offset 0x331 {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0014, lo: 0x82, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0x85}, @@ -1531,9 +1530,9 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x8c, hi: 0xa4}, {value: 0x0014, lo: 0xa5, hi: 0xa6}, {value: 0x0010, lo: 0xa7, hi: 0xa7}, - // Block 0x81, offset 0x33b + // Block 0x81, offset 0x33a {value: 0x0010, lo: 0x80, hi: 0xb3}, - // Block 0x82, offset 0x33c + // Block 0x82, offset 0x33b {value: 0x0010, lo: 0x80, hi: 0x83}, {value: 0x0034, lo: 0x84, hi: 0x84}, {value: 0x0014, lo: 0x85, hi: 0x85}, @@ -1542,18 +1541,18 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xb2, hi: 0xb7}, {value: 0x0010, lo: 0xbb, hi: 0xbb}, {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x83, offset 0x344 + // Block 0x83, offset 0x343 {value: 0x0010, lo: 0x80, hi: 0xa5}, {value: 0x0014, lo: 0xa6, hi: 0xaa}, {value: 0x0034, lo: 0xab, hi: 0xad}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x84, offset 0x348 + // Block 0x84, offset 0x347 {value: 0x0010, lo: 0x80, hi: 0x86}, {value: 0x0014, lo: 0x87, hi: 0x91}, {value: 0x0010, lo: 0x92, hi: 0x92}, {value: 0x0030, lo: 0x93, hi: 0x93}, {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0x85, offset 0x34d + // Block 0x85, offset 0x34c {value: 0x0014, lo: 0x80, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0xb2}, {value: 0x0034, lo: 0xb3, hi: 0xb3}, @@ -1562,21 +1561,21 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xba, hi: 0xbb}, {value: 0x0014, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x86, offset 0x355 + // Block 0x86, offset 0x354 {value: 0x0030, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x8f, hi: 0x8f}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0014, lo: 0xa5, hi: 0xa5}, {value: 0x0004, lo: 0xa6, hi: 0xa6}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x87, offset 0x35b + // Block 0x87, offset 0x35a {value: 0x0010, lo: 0x80, hi: 0xa8}, {value: 0x0014, lo: 0xa9, hi: 0xae}, {value: 0x0010, lo: 0xaf, hi: 0xb0}, {value: 0x0014, lo: 0xb1, hi: 0xb2}, {value: 0x0010, lo: 0xb3, hi: 0xb4}, {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0x88, offset 0x361 + // Block 0x88, offset 0x360 {value: 0x0010, lo: 0x80, hi: 0x82}, {value: 0x0014, lo: 0x83, hi: 0x83}, {value: 0x0010, lo: 0x84, hi: 0x8b}, @@ -1587,13 +1586,13 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xbb, hi: 0xbb}, {value: 0x0014, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x89, offset 0x36b + // Block 0x89, offset 0x36a {value: 0x0024, lo: 0xb0, hi: 0xb0}, {value: 0x0024, lo: 0xb2, hi: 0xb3}, {value: 0x0034, lo: 0xb4, hi: 0xb4}, {value: 0x0024, lo: 0xb7, hi: 0xb8}, {value: 0x0024, lo: 0xbe, hi: 0xbf}, - // Block 0x8a, offset 0x370 + // Block 0x8a, offset 0x36f {value: 0x0024, lo: 0x81, hi: 0x81}, {value: 0x0004, lo: 0x9d, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xab}, @@ -1603,27 +1602,27 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xb3, hi: 0xb4}, {value: 0x0010, lo: 0xb5, hi: 0xb5}, {value: 0x0034, lo: 0xb6, hi: 0xb6}, - // Block 0x8b, offset 0x379 + // Block 0x8b, offset 0x378 {value: 0x0010, lo: 0x81, hi: 0x86}, {value: 0x0010, lo: 0x89, hi: 0x8e}, {value: 0x0010, lo: 0x91, hi: 0x96}, {value: 0x0010, lo: 0xa0, hi: 0xa6}, {value: 0x0010, lo: 0xa8, hi: 0xae}, {value: 0x0012, lo: 0xb0, hi: 0xbf}, - // Block 0x8c, offset 0x37f + // Block 0x8c, offset 0x37e {value: 0x0012, lo: 0x80, hi: 0x92}, {value: 0xac52, lo: 0x93, hi: 0x93}, {value: 0x0012, lo: 0x94, hi: 0x9a}, - {value: 0x0004, lo: 0x9b, hi: 0x9b}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, {value: 0x0015, lo: 0x9c, hi: 0x9f}, {value: 0x0012, lo: 0xa0, hi: 0xa5}, {value: 0x74d2, lo: 0xb0, hi: 0xbf}, - // Block 0x8d, offset 0x386 + // Block 0x8d, offset 0x385 {value: 0x78d2, lo: 0x80, hi: 0x8f}, {value: 0x7cd2, lo: 0x90, hi: 0x9f}, {value: 0x80d2, lo: 0xa0, hi: 0xaf}, {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, - // Block 0x8e, offset 0x38a + // Block 0x8e, offset 0x389 {value: 0x0010, lo: 0x80, hi: 0xa4}, {value: 0x0014, lo: 0xa5, hi: 0xa5}, {value: 0x0010, lo: 0xa6, hi: 0xa7}, @@ -1632,105 +1631,105 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xac, hi: 0xac}, {value: 0x0034, lo: 0xad, hi: 0xad}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x8f, offset 0x392 + // Block 0x8f, offset 0x391 {value: 0x0010, lo: 0x80, hi: 0xa3}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x90, offset 0x394 + // Block 0x90, offset 0x393 {value: 0x0010, lo: 0x80, hi: 0x86}, {value: 0x0010, lo: 0x8b, hi: 0xbb}, - // Block 0x91, offset 0x396 + // Block 0x91, offset 0x395 {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x83, hi: 0x84}, {value: 0x0010, lo: 0x86, hi: 0xbf}, - // Block 0x92, offset 0x399 + // Block 0x92, offset 0x398 {value: 0x0010, lo: 0x80, hi: 0xb1}, {value: 0x0004, lo: 0xb2, hi: 0xbf}, - // Block 0x93, offset 0x39b + // Block 0x93, offset 0x39a {value: 0x0004, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x93, hi: 0xbf}, - // Block 0x94, offset 0x39d + // Block 0x94, offset 0x39c {value: 0x0010, lo: 0x80, hi: 0xbd}, - // Block 0x95, offset 0x39e + // Block 0x95, offset 0x39d {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0x96, offset 0x39f + // Block 0x96, offset 0x39e {value: 0x0010, lo: 0x80, hi: 0x8f}, {value: 0x0010, lo: 0x92, hi: 0xbf}, - // Block 0x97, offset 0x3a1 + // Block 0x97, offset 0x3a0 {value: 0x0010, lo: 0x80, hi: 0x87}, {value: 0x0010, lo: 0xb0, hi: 0xbb}, - // Block 0x98, offset 0x3a3 + // Block 0x98, offset 0x3a2 {value: 0x0014, lo: 0x80, hi: 0x8f}, {value: 0x0054, lo: 0x93, hi: 0x93}, {value: 0x0024, lo: 0xa0, hi: 0xa6}, {value: 0x0034, lo: 0xa7, hi: 0xad}, {value: 0x0024, lo: 0xae, hi: 0xaf}, {value: 0x0010, lo: 0xb3, hi: 0xb4}, - // Block 0x99, offset 0x3a9 + // Block 0x99, offset 0x3a8 {value: 0x0010, lo: 0x8d, hi: 0x8f}, {value: 0x0054, lo: 0x92, hi: 0x92}, {value: 0x0054, lo: 0x95, hi: 0x95}, {value: 0x0010, lo: 0xb0, hi: 0xb4}, {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0x9a, offset 0x3ae + // Block 0x9a, offset 0x3ad {value: 0x0010, lo: 0x80, hi: 0xbc}, {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x9b, offset 0x3b0 + // Block 0x9b, offset 0x3af {value: 0x0054, lo: 0x87, hi: 0x87}, {value: 0x0054, lo: 0x8e, hi: 0x8e}, {value: 0x0054, lo: 0x9a, hi: 0x9a}, {value: 0x5f53, lo: 0xa1, hi: 0xba}, {value: 0x0004, lo: 0xbe, hi: 0xbe}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x9c, offset 0x3b6 + // Block 0x9c, offset 0x3b5 {value: 0x0004, lo: 0x80, hi: 0x80}, {value: 0x5f52, lo: 0x81, hi: 0x9a}, {value: 0x0004, lo: 0xb0, hi: 0xb0}, - // Block 0x9d, offset 0x3b9 + // Block 0x9d, offset 0x3b8 {value: 0x0014, lo: 0x9e, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xbe}, - // Block 0x9e, offset 0x3bb + // Block 0x9e, offset 0x3ba {value: 0x0010, lo: 0x82, hi: 0x87}, {value: 0x0010, lo: 0x8a, hi: 0x8f}, {value: 0x0010, lo: 0x92, hi: 0x97}, {value: 0x0010, lo: 0x9a, hi: 0x9c}, {value: 0x0004, lo: 0xa3, hi: 0xa3}, {value: 0x0014, lo: 0xb9, hi: 0xbb}, - // Block 0x9f, offset 0x3c1 + // Block 0x9f, offset 0x3c0 {value: 0x0010, lo: 0x80, hi: 0x8b}, {value: 0x0010, lo: 0x8d, hi: 0xa6}, {value: 0x0010, lo: 0xa8, hi: 0xba}, {value: 0x0010, lo: 0xbc, hi: 0xbd}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xa0, offset 0x3c6 + // Block 0xa0, offset 0x3c5 {value: 0x0010, lo: 0x80, hi: 0x8d}, {value: 0x0010, lo: 0x90, hi: 0x9d}, - // Block 0xa1, offset 0x3c8 + // Block 0xa1, offset 0x3c7 {value: 0x0010, lo: 0x80, hi: 0xba}, - // Block 0xa2, offset 0x3c9 + // Block 0xa2, offset 0x3c8 {value: 0x0010, lo: 0x80, hi: 0xb4}, - // Block 0xa3, offset 0x3ca + // Block 0xa3, offset 0x3c9 {value: 0x0034, lo: 0xbd, hi: 0xbd}, - // Block 0xa4, offset 0x3cb + // Block 0xa4, offset 0x3ca {value: 0x0010, lo: 0x80, hi: 0x9c}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa5, offset 0x3cd + // Block 0xa5, offset 0x3cc {value: 0x0010, lo: 0x80, hi: 0x90}, {value: 0x0034, lo: 0xa0, hi: 0xa0}, - // Block 0xa6, offset 0x3cf + // Block 0xa6, offset 0x3ce {value: 0x0010, lo: 0x80, hi: 0x9f}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xa7, offset 0x3d1 + {value: 0x0010, lo: 0xad, hi: 0xbf}, + // Block 0xa7, offset 0x3d0 {value: 0x0010, lo: 0x80, hi: 0x8a}, {value: 0x0010, lo: 0x90, hi: 0xb5}, {value: 0x0024, lo: 0xb6, hi: 0xba}, - // Block 0xa8, offset 0x3d4 + // Block 0xa8, offset 0x3d3 {value: 0x0010, lo: 0x80, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa9, offset 0x3d6 + // Block 0xa9, offset 0x3d5 {value: 0x0010, lo: 0x80, hi: 0x83}, {value: 0x0010, lo: 0x88, hi: 0x8f}, {value: 0x0010, lo: 0x91, hi: 0x95}, - // Block 0xaa, offset 0x3d9 + // Block 0xaa, offset 0x3d8 {value: 0x2813, lo: 0x80, hi: 0x87}, {value: 0x3813, lo: 0x88, hi: 0x8f}, {value: 0x2813, lo: 0x90, hi: 0x97}, @@ -1739,16 +1738,16 @@ var sparseValues = [1360]valueRange{ {value: 0x2812, lo: 0xa8, hi: 0xaf}, {value: 0x3812, lo: 0xb0, hi: 0xb7}, {value: 0x2812, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x3e1 + // Block 0xab, offset 0x3e0 {value: 0xaf52, lo: 0x80, hi: 0x87}, {value: 0xb252, lo: 0x88, hi: 0x8f}, {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0xac, offset 0x3e4 + // Block 0xac, offset 0x3e3 {value: 0x0010, lo: 0x80, hi: 0x9d}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, {value: 0xb253, lo: 0xb0, hi: 0xb7}, {value: 0xaf53, lo: 0xb8, hi: 0xbf}, - // Block 0xad, offset 0x3e8 + // Block 0xad, offset 0x3e7 {value: 0x2813, lo: 0x80, hi: 0x87}, {value: 0x3813, lo: 0x88, hi: 0x8f}, {value: 0x2813, lo: 0x90, hi: 0x93}, @@ -1757,38 +1756,38 @@ var sparseValues = [1360]valueRange{ {value: 0x2812, lo: 0xa8, hi: 0xaf}, {value: 0x3812, lo: 0xb0, hi: 0xb7}, {value: 0x2812, lo: 0xb8, hi: 0xbb}, - // Block 0xae, offset 0x3f0 + // Block 0xae, offset 0x3ef {value: 0x0010, lo: 0x80, hi: 0xa7}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xaf, offset 0x3f2 + // Block 0xaf, offset 0x3f1 {value: 0x0010, lo: 0x80, hi: 0xa3}, - // Block 0xb0, offset 0x3f3 + // Block 0xb0, offset 0x3f2 {value: 0x0010, lo: 0x80, hi: 0xb6}, - // Block 0xb1, offset 0x3f4 + // Block 0xb1, offset 0x3f3 {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xa7}, - // Block 0xb2, offset 0x3f6 + // Block 0xb2, offset 0x3f5 {value: 0x0010, lo: 0x80, hi: 0x85}, {value: 0x0010, lo: 0x88, hi: 0x88}, {value: 0x0010, lo: 0x8a, hi: 0xb5}, {value: 0x0010, lo: 0xb7, hi: 0xb8}, {value: 0x0010, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x3fc + // Block 0xb3, offset 0x3fb {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xb6}, - // Block 0xb4, offset 0x3fe + // Block 0xb4, offset 0x3fd {value: 0x0010, lo: 0x80, hi: 0x9e}, - // Block 0xb5, offset 0x3ff + // Block 0xb5, offset 0x3fe {value: 0x0010, lo: 0xa0, hi: 0xb2}, {value: 0x0010, lo: 0xb4, hi: 0xb5}, - // Block 0xb6, offset 0x401 + // Block 0xb6, offset 0x400 {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xb9}, - // Block 0xb7, offset 0x403 + // Block 0xb7, offset 0x402 {value: 0x0010, lo: 0x80, hi: 0xb7}, {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0xb8, offset 0x405 + // Block 0xb8, offset 0x404 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x83}, {value: 0x0014, lo: 0x85, hi: 0x86}, @@ -1802,47 +1801,47 @@ var sparseValues = [1360]valueRange{ {value: 0x0024, lo: 0xb8, hi: 0xb8}, {value: 0x0034, lo: 0xb9, hi: 0xba}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xb9, offset 0x412 + // Block 0xb9, offset 0x411 {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0xba, offset 0x413 + // Block 0xba, offset 0x412 {value: 0x0010, lo: 0x80, hi: 0x9c}, - // Block 0xbb, offset 0x414 + // Block 0xbb, offset 0x413 {value: 0x0010, lo: 0x80, hi: 0x87}, {value: 0x0010, lo: 0x89, hi: 0xa4}, {value: 0x0024, lo: 0xa5, hi: 0xa5}, {value: 0x0034, lo: 0xa6, hi: 0xa6}, - // Block 0xbc, offset 0x418 + // Block 0xbc, offset 0x417 {value: 0x0010, lo: 0x80, hi: 0x95}, {value: 0x0010, lo: 0xa0, hi: 0xb2}, - // Block 0xbd, offset 0x41a + // Block 0xbd, offset 0x419 {value: 0x0010, lo: 0x80, hi: 0x91}, - // Block 0xbe, offset 0x41b + // Block 0xbe, offset 0x41a {value: 0x0010, lo: 0x80, hi: 0x88}, - // Block 0xbf, offset 0x41c + // Block 0xbf, offset 0x41b {value: 0x5653, lo: 0x80, hi: 0xb2}, - // Block 0xc0, offset 0x41d + // Block 0xc0, offset 0x41c {value: 0x5652, lo: 0x80, hi: 0xb2}, - // Block 0xc1, offset 0x41e + // Block 0xc1, offset 0x41d {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0xb7}, {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xc2, offset 0x422 + // Block 0xc2, offset 0x421 {value: 0x0014, lo: 0x80, hi: 0x85}, {value: 0x0034, lo: 0x86, hi: 0x86}, {value: 0x0010, lo: 0xa6, hi: 0xaf}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xc3, offset 0x426 + // Block 0xc3, offset 0x425 {value: 0x0014, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0xb2}, {value: 0x0014, lo: 0xb3, hi: 0xb6}, {value: 0x0010, lo: 0xb7, hi: 0xb8}, {value: 0x0034, lo: 0xb9, hi: 0xba}, {value: 0x0014, lo: 0xbd, hi: 0xbd}, - // Block 0xc4, offset 0x42c + // Block 0xc4, offset 0x42b {value: 0x0010, lo: 0x90, hi: 0xa8}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xc5, offset 0x42e + // Block 0xc5, offset 0x42d {value: 0x0024, lo: 0x80, hi: 0x82}, {value: 0x0010, lo: 0x83, hi: 0xa6}, {value: 0x0014, lo: 0xa7, hi: 0xab}, @@ -1850,23 +1849,23 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xad, hi: 0xb2}, {value: 0x0034, lo: 0xb3, hi: 0xb4}, {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0xc6, offset 0x435 + // Block 0xc6, offset 0x434 {value: 0x0010, lo: 0x90, hi: 0xb2}, {value: 0x0034, lo: 0xb3, hi: 0xb3}, {value: 0x0010, lo: 0xb6, hi: 0xb6}, - // Block 0xc7, offset 0x438 + // Block 0xc7, offset 0x437 {value: 0x0014, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0xb5}, {value: 0x0014, lo: 0xb6, hi: 0xbe}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xc8, offset 0x43c + // Block 0xc8, offset 0x43b {value: 0x0030, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x84}, {value: 0x0034, lo: 0x8a, hi: 0x8a}, {value: 0x0014, lo: 0x8b, hi: 0x8c}, {value: 0x0010, lo: 0x90, hi: 0x9a}, {value: 0x0010, lo: 0x9c, hi: 0x9c}, - // Block 0xc9, offset 0x442 + // Block 0xc9, offset 0x441 {value: 0x0010, lo: 0x80, hi: 0x91}, {value: 0x0010, lo: 0x93, hi: 0xae}, {value: 0x0014, lo: 0xaf, hi: 0xb1}, @@ -1876,21 +1875,21 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0xb6, hi: 0xb6}, {value: 0x0014, lo: 0xb7, hi: 0xb7}, {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0xca, offset 0x44b + // Block 0xca, offset 0x44a {value: 0x0010, lo: 0x80, hi: 0x86}, {value: 0x0010, lo: 0x88, hi: 0x88}, {value: 0x0010, lo: 0x8a, hi: 0x8d}, {value: 0x0010, lo: 0x8f, hi: 0x9d}, {value: 0x0010, lo: 0x9f, hi: 0xa8}, {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xcb, offset 0x451 + // Block 0xcb, offset 0x450 {value: 0x0010, lo: 0x80, hi: 0x9e}, {value: 0x0014, lo: 0x9f, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xa2}, {value: 0x0014, lo: 0xa3, hi: 0xa8}, {value: 0x0034, lo: 0xa9, hi: 0xaa}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xcc, offset 0x457 + // Block 0xcc, offset 0x456 {value: 0x0014, lo: 0x80, hi: 0x81}, {value: 0x0010, lo: 0x82, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x8c}, @@ -1901,7 +1900,7 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xb5, hi: 0xb9}, {value: 0x0034, lo: 0xbc, hi: 0xbc}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xcd, offset 0x461 + // Block 0xcd, offset 0x460 {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x84}, {value: 0x0010, lo: 0x87, hi: 0x88}, @@ -1912,10 +1911,10 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0x9d, hi: 0xa3}, {value: 0x0024, lo: 0xa6, hi: 0xac}, {value: 0x0024, lo: 0xb0, hi: 0xb4}, - // Block 0xce, offset 0x46b + // Block 0xce, offset 0x46a {value: 0x0010, lo: 0x80, hi: 0xb7}, {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xcf, offset 0x46d + // Block 0xcf, offset 0x46c {value: 0x0010, lo: 0x80, hi: 0x81}, {value: 0x0034, lo: 0x82, hi: 0x82}, {value: 0x0014, lo: 0x83, hi: 0x84}, @@ -1923,43 +1922,43 @@ var sparseValues = [1360]valueRange{ {value: 0x0034, lo: 0x86, hi: 0x86}, {value: 0x0010, lo: 0x87, hi: 0x8a}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd0, offset 0x474 + // Block 0xd0, offset 0x473 {value: 0x0010, lo: 0x80, hi: 0xb2}, {value: 0x0014, lo: 0xb3, hi: 0xb8}, {value: 0x0010, lo: 0xb9, hi: 0xb9}, {value: 0x0014, lo: 0xba, hi: 0xba}, {value: 0x0010, lo: 0xbb, hi: 0xbe}, {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0xd1, offset 0x47a + // Block 0xd1, offset 0x479 {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x81, hi: 0x81}, {value: 0x0034, lo: 0x82, hi: 0x83}, {value: 0x0010, lo: 0x84, hi: 0x85}, {value: 0x0010, lo: 0x87, hi: 0x87}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd2, offset 0x480 + // Block 0xd2, offset 0x47f {value: 0x0010, lo: 0x80, hi: 0xb1}, {value: 0x0014, lo: 0xb2, hi: 0xb5}, {value: 0x0010, lo: 0xb8, hi: 0xbb}, {value: 0x0014, lo: 0xbc, hi: 0xbd}, {value: 0x0010, lo: 0xbe, hi: 0xbe}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xd3, offset 0x486 + // Block 0xd3, offset 0x485 {value: 0x0034, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x98, hi: 0x9b}, {value: 0x0014, lo: 0x9c, hi: 0x9d}, - // Block 0xd4, offset 0x489 + // Block 0xd4, offset 0x488 {value: 0x0010, lo: 0x80, hi: 0xb2}, {value: 0x0014, lo: 0xb3, hi: 0xba}, {value: 0x0010, lo: 0xbb, hi: 0xbc}, {value: 0x0014, lo: 0xbd, hi: 0xbd}, {value: 0x0010, lo: 0xbe, hi: 0xbe}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xd5, offset 0x48f + // Block 0xd5, offset 0x48e {value: 0x0014, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x84, hi: 0x84}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd6, offset 0x492 + // Block 0xd6, offset 0x491 {value: 0x0010, lo: 0x80, hi: 0xaa}, {value: 0x0014, lo: 0xab, hi: 0xab}, {value: 0x0010, lo: 0xac, hi: 0xac}, @@ -1968,9 +1967,9 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xb0, hi: 0xb5}, {value: 0x0030, lo: 0xb6, hi: 0xb6}, {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0xd7, offset 0x49a + // Block 0xd7, offset 0x499 {value: 0x0010, lo: 0x80, hi: 0x89}, - // Block 0xd8, offset 0x49b + // Block 0xd8, offset 0x49a {value: 0x0014, lo: 0x9d, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xa1}, {value: 0x0014, lo: 0xa2, hi: 0xa5}, @@ -1978,26 +1977,51 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xa7, hi: 0xaa}, {value: 0x0034, lo: 0xab, hi: 0xab}, {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xd9, offset 0x4a2 + // Block 0xd9, offset 0x4a1 {value: 0x5f53, lo: 0xa0, hi: 0xbf}, - // Block 0xda, offset 0x4a3 + // Block 0xda, offset 0x4a2 {value: 0x5f52, lo: 0x80, hi: 0x9f}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xdb, offset 0x4a6 + // Block 0xdb, offset 0x4a5 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8b, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbb, hi: 0xbe}, + // Block 0xdc, offset 0x4af + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0014, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x98}, + {value: 0x0014, lo: 0x99, hi: 0x9b}, + {value: 0x0010, lo: 0x9c, hi: 0xbf}, + // Block 0xdd, offset 0x4b5 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x86, hi: 0x89}, + {value: 0x0014, lo: 0x8a, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x99}, + // Block 0xde, offset 0x4bb {value: 0x0010, lo: 0x80, hi: 0xb8}, - // Block 0xdc, offset 0x4a7 + // Block 0xdf, offset 0x4bc {value: 0x0010, lo: 0x80, hi: 0x88}, {value: 0x0010, lo: 0x8a, hi: 0xaf}, {value: 0x0014, lo: 0xb0, hi: 0xb6}, {value: 0x0014, lo: 0xb8, hi: 0xbd}, {value: 0x0010, lo: 0xbe, hi: 0xbe}, {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xdd, offset 0x4ad + // Block 0xe0, offset 0x4c2 {value: 0x0010, lo: 0x80, hi: 0x80}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0xde, offset 0x4b0 + // Block 0xe1, offset 0x4c5 {value: 0x0010, lo: 0x80, hi: 0x8f}, {value: 0x0014, lo: 0x92, hi: 0xa7}, {value: 0x0010, lo: 0xa9, hi: 0xa9}, @@ -2006,69 +2030,85 @@ var sparseValues = [1360]valueRange{ {value: 0x0014, lo: 0xb2, hi: 0xb3}, {value: 0x0010, lo: 0xb4, hi: 0xb4}, {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0xdf, offset 0x4b8 - {value: 0x0010, lo: 0x80, hi: 0x99}, - // Block 0xe0, offset 0x4b9 - {value: 0x0010, lo: 0x80, hi: 0xae}, - // Block 0xe1, offset 0x4ba - {value: 0x0010, lo: 0x80, hi: 0x83}, - // Block 0xe2, offset 0x4bb + // Block 0xe2, offset 0x4cd {value: 0x0010, lo: 0x80, hi: 0x86}, - // Block 0xe3, offset 0x4bc + {value: 0x0010, lo: 0x88, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb6}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xe3, offset 0x4d4 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xe4, offset 0x4db + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xe5, offset 0x4dc + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xe6, offset 0x4dd + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xe7, offset 0x4de + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xe8, offset 0x4df {value: 0x0010, lo: 0x80, hi: 0x9e}, {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0xe4, offset 0x4be + // Block 0xe9, offset 0x4e1 {value: 0x0010, lo: 0x90, hi: 0xad}, {value: 0x0034, lo: 0xb0, hi: 0xb4}, - // Block 0xe5, offset 0x4c0 + // Block 0xea, offset 0x4e3 {value: 0x0010, lo: 0x80, hi: 0xaf}, {value: 0x0024, lo: 0xb0, hi: 0xb6}, - // Block 0xe6, offset 0x4c2 + // Block 0xeb, offset 0x4e5 {value: 0x0014, lo: 0x80, hi: 0x83}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0010, lo: 0xa3, hi: 0xb7}, {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xe7, offset 0x4c6 + // Block 0xec, offset 0x4e9 {value: 0x0010, lo: 0x80, hi: 0x8f}, - // Block 0xe8, offset 0x4c7 + // Block 0xed, offset 0x4ea {value: 0x0010, lo: 0x80, hi: 0x84}, {value: 0x0010, lo: 0x90, hi: 0xbe}, - // Block 0xe9, offset 0x4c9 + // Block 0xee, offset 0x4ec {value: 0x0014, lo: 0x8f, hi: 0x9f}, - // Block 0xea, offset 0x4ca - {value: 0x0014, lo: 0xa0, hi: 0xa0}, - // Block 0xeb, offset 0x4cb + // Block 0xef, offset 0x4ed + {value: 0x0014, lo: 0xa0, hi: 0xa1}, + // Block 0xf0, offset 0x4ee {value: 0x0010, lo: 0x80, hi: 0xaa}, {value: 0x0010, lo: 0xb0, hi: 0xbc}, - // Block 0xec, offset 0x4cd + // Block 0xf1, offset 0x4f0 {value: 0x0010, lo: 0x80, hi: 0x88}, {value: 0x0010, lo: 0x90, hi: 0x99}, {value: 0x0014, lo: 0x9d, hi: 0x9d}, {value: 0x0034, lo: 0x9e, hi: 0x9e}, {value: 0x0014, lo: 0xa0, hi: 0xa3}, - // Block 0xed, offset 0x4d2 + // Block 0xf2, offset 0x4f5 {value: 0x0030, lo: 0xa5, hi: 0xa6}, {value: 0x0034, lo: 0xa7, hi: 0xa9}, {value: 0x0030, lo: 0xad, hi: 0xb2}, {value: 0x0014, lo: 0xb3, hi: 0xba}, {value: 0x0034, lo: 0xbb, hi: 0xbf}, - // Block 0xee, offset 0x4d7 + // Block 0xf3, offset 0x4fa {value: 0x0034, lo: 0x80, hi: 0x82}, {value: 0x0024, lo: 0x85, hi: 0x89}, {value: 0x0034, lo: 0x8a, hi: 0x8b}, {value: 0x0024, lo: 0xaa, hi: 0xad}, - // Block 0xef, offset 0x4db + // Block 0xf4, offset 0x4fe {value: 0x0024, lo: 0x82, hi: 0x84}, - // Block 0xf0, offset 0x4dc + // Block 0xf5, offset 0x4ff {value: 0x0013, lo: 0x80, hi: 0x99}, {value: 0x0012, lo: 0x9a, hi: 0xb3}, {value: 0x0013, lo: 0xb4, hi: 0xbf}, - // Block 0xf1, offset 0x4df + // Block 0xf6, offset 0x502 {value: 0x0013, lo: 0x80, hi: 0x8d}, {value: 0x0012, lo: 0x8e, hi: 0x94}, {value: 0x0012, lo: 0x96, hi: 0xa7}, {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0xf2, offset 0x4e3 + // Block 0xf7, offset 0x506 {value: 0x0013, lo: 0x80, hi: 0x81}, {value: 0x0012, lo: 0x82, hi: 0x9b}, {value: 0x0013, lo: 0x9c, hi: 0x9c}, @@ -2080,12 +2120,12 @@ var sparseValues = [1360]valueRange{ {value: 0x0012, lo: 0xb6, hi: 0xb9}, {value: 0x0012, lo: 0xbb, hi: 0xbb}, {value: 0x0012, lo: 0xbd, hi: 0xbf}, - // Block 0xf3, offset 0x4ee + // Block 0xf8, offset 0x511 {value: 0x0012, lo: 0x80, hi: 0x83}, {value: 0x0012, lo: 0x85, hi: 0x8f}, {value: 0x0013, lo: 0x90, hi: 0xa9}, {value: 0x0012, lo: 0xaa, hi: 0xbf}, - // Block 0xf4, offset 0x4f2 + // Block 0xf9, offset 0x515 {value: 0x0012, lo: 0x80, hi: 0x83}, {value: 0x0013, lo: 0x84, hi: 0x85}, {value: 0x0013, lo: 0x87, hi: 0x8a}, @@ -2094,86 +2134,86 @@ var sparseValues = [1360]valueRange{ {value: 0x0012, lo: 0x9e, hi: 0xb7}, {value: 0x0013, lo: 0xb8, hi: 0xb9}, {value: 0x0013, lo: 0xbb, hi: 0xbe}, - // Block 0xf5, offset 0x4fa + // Block 0xfa, offset 0x51d {value: 0x0013, lo: 0x80, hi: 0x84}, {value: 0x0013, lo: 0x86, hi: 0x86}, {value: 0x0013, lo: 0x8a, hi: 0x90}, {value: 0x0012, lo: 0x92, hi: 0xab}, {value: 0x0013, lo: 0xac, hi: 0xbf}, - // Block 0xf6, offset 0x4ff + // Block 0xfb, offset 0x522 {value: 0x0013, lo: 0x80, hi: 0x85}, {value: 0x0012, lo: 0x86, hi: 0x9f}, {value: 0x0013, lo: 0xa0, hi: 0xb9}, {value: 0x0012, lo: 0xba, hi: 0xbf}, - // Block 0xf7, offset 0x503 + // Block 0xfc, offset 0x526 {value: 0x0012, lo: 0x80, hi: 0x93}, {value: 0x0013, lo: 0x94, hi: 0xad}, {value: 0x0012, lo: 0xae, hi: 0xbf}, - // Block 0xf8, offset 0x506 + // Block 0xfd, offset 0x529 {value: 0x0012, lo: 0x80, hi: 0x87}, {value: 0x0013, lo: 0x88, hi: 0xa1}, {value: 0x0012, lo: 0xa2, hi: 0xbb}, {value: 0x0013, lo: 0xbc, hi: 0xbf}, - // Block 0xf9, offset 0x50a + // Block 0xfe, offset 0x52d {value: 0x0013, lo: 0x80, hi: 0x95}, {value: 0x0012, lo: 0x96, hi: 0xaf}, {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0xfa, offset 0x50d + // Block 0xff, offset 0x530 {value: 0x0013, lo: 0x80, hi: 0x89}, {value: 0x0012, lo: 0x8a, hi: 0xa5}, {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0xfb, offset 0x510 + // Block 0x100, offset 0x533 {value: 0x0013, lo: 0x80, hi: 0x80}, {value: 0x0012, lo: 0x82, hi: 0x9a}, {value: 0x0012, lo: 0x9c, hi: 0xa1}, {value: 0x0013, lo: 0xa2, hi: 0xba}, {value: 0x0012, lo: 0xbc, hi: 0xbf}, - // Block 0xfc, offset 0x515 + // Block 0x101, offset 0x538 {value: 0x0012, lo: 0x80, hi: 0x94}, {value: 0x0012, lo: 0x96, hi: 0x9b}, {value: 0x0013, lo: 0x9c, hi: 0xb4}, {value: 0x0012, lo: 0xb6, hi: 0xbf}, - // Block 0xfd, offset 0x519 + // Block 0x102, offset 0x53c {value: 0x0012, lo: 0x80, hi: 0x8e}, {value: 0x0012, lo: 0x90, hi: 0x95}, {value: 0x0013, lo: 0x96, hi: 0xae}, {value: 0x0012, lo: 0xb0, hi: 0xbf}, - // Block 0xfe, offset 0x51d + // Block 0x103, offset 0x540 {value: 0x0012, lo: 0x80, hi: 0x88}, {value: 0x0012, lo: 0x8a, hi: 0x8f}, {value: 0x0013, lo: 0x90, hi: 0xa8}, {value: 0x0012, lo: 0xaa, hi: 0xbf}, - // Block 0xff, offset 0x521 + // Block 0x104, offset 0x544 {value: 0x0012, lo: 0x80, hi: 0x82}, {value: 0x0012, lo: 0x84, hi: 0x89}, {value: 0x0017, lo: 0x8a, hi: 0x8b}, {value: 0x0010, lo: 0x8e, hi: 0xbf}, - // Block 0x100, offset 0x525 + // Block 0x105, offset 0x548 {value: 0x0014, lo: 0x80, hi: 0xb6}, {value: 0x0014, lo: 0xbb, hi: 0xbf}, - // Block 0x101, offset 0x527 + // Block 0x106, offset 0x54a {value: 0x0014, lo: 0x80, hi: 0xac}, {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x102, offset 0x529 + // Block 0x107, offset 0x54c {value: 0x0014, lo: 0x84, hi: 0x84}, {value: 0x0014, lo: 0x9b, hi: 0x9f}, {value: 0x0014, lo: 0xa1, hi: 0xaf}, - // Block 0x103, offset 0x52c + // Block 0x108, offset 0x54f {value: 0x0024, lo: 0x80, hi: 0x86}, {value: 0x0024, lo: 0x88, hi: 0x98}, {value: 0x0024, lo: 0x9b, hi: 0xa1}, {value: 0x0024, lo: 0xa3, hi: 0xa4}, {value: 0x0024, lo: 0xa6, hi: 0xaa}, - // Block 0x104, offset 0x531 + // Block 0x109, offset 0x554 {value: 0x0010, lo: 0x80, hi: 0x84}, {value: 0x0034, lo: 0x90, hi: 0x96}, - // Block 0x105, offset 0x533 + // Block 0x10a, offset 0x556 {value: 0xb552, lo: 0x80, hi: 0x81}, {value: 0xb852, lo: 0x82, hi: 0x83}, {value: 0x0024, lo: 0x84, hi: 0x89}, {value: 0x0034, lo: 0x8a, hi: 0x8a}, {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x106, offset 0x538 + // Block 0x10b, offset 0x55b {value: 0x0010, lo: 0x80, hi: 0x83}, {value: 0x0010, lo: 0x85, hi: 0x9f}, {value: 0x0010, lo: 0xa1, hi: 0xa2}, @@ -2183,29 +2223,29 @@ var sparseValues = [1360]valueRange{ {value: 0x0010, lo: 0xb4, hi: 0xb7}, {value: 0x0010, lo: 0xb9, hi: 0xb9}, {value: 0x0010, lo: 0xbb, hi: 0xbb}, - // Block 0x107, offset 0x541 + // Block 0x10c, offset 0x564 {value: 0x0010, lo: 0x80, hi: 0x89}, {value: 0x0010, lo: 0x8b, hi: 0x9b}, {value: 0x0010, lo: 0xa1, hi: 0xa3}, {value: 0x0010, lo: 0xa5, hi: 0xa9}, {value: 0x0010, lo: 0xab, hi: 0xbb}, - // Block 0x108, offset 0x546 + // Block 0x10d, offset 0x569 {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x109, offset 0x547 + // Block 0x10e, offset 0x56a {value: 0x0013, lo: 0x80, hi: 0x89}, {value: 0x0013, lo: 0x90, hi: 0xa9}, {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x10a, offset 0x54a + // Block 0x10f, offset 0x56d {value: 0x0013, lo: 0x80, hi: 0x89}, - // Block 0x10b, offset 0x54b + // Block 0x110, offset 0x56e {value: 0x0004, lo: 0xbb, hi: 0xbf}, - // Block 0x10c, offset 0x54c + // Block 0x111, offset 0x56f {value: 0x0014, lo: 0x81, hi: 0x81}, {value: 0x0014, lo: 0xa0, hi: 0xbf}, - // Block 0x10d, offset 0x54e + // Block 0x112, offset 0x571 {value: 0x0014, lo: 0x80, hi: 0xbf}, - // Block 0x10e, offset 0x54f + // Block 0x113, offset 0x572 {value: 0x0014, lo: 0x80, hi: 0xaf}, } -// Total table size 13811 bytes (13KiB); checksum: 4CC48DA3 +// Total table size 13961 bytes (13KiB); checksum: 4CC48DA3 diff --git a/vendor/golang.org/x/text/cases/tables_test.go b/vendor/golang.org/x/text/cases/tables_test.go index 85ae23767..6ec6801d4 100644 --- a/vendor/golang.org/x/text/cases/tables_test.go +++ b/vendor/golang.org/x/text/cases/tables_test.go @@ -359,12 +359,8 @@ var ( {0xbb, 0xbf}, {0xd7, 0xd7}, {0xf7, 0xf7}, - {0x2c2, 0x2c5}, - {0x2d2, 0x2d6}, - {0x2d8, 0x2df}, + {0x2d8, 0x2dd}, {0x2e5, 0x2eb}, - {0x2ed, 0x2ed}, - {0x2ef, 0x2ff}, {0x375, 0x375}, {0x378, 0x379}, {0x37e, 0x37e}, @@ -400,7 +396,8 @@ var ( {0x7f6, 0x7f9}, {0x7fb, 0x7ff}, {0x82e, 0x83f}, - {0x85c, 0x89f}, + {0x85c, 0x85f}, + {0x86b, 0x89f}, {0x8b5, 0x8b5}, {0x8be, 0x8d3}, {0x964, 0x965}, @@ -418,7 +415,8 @@ var ( {0x9d8, 0x9db}, {0x9de, 0x9de}, {0x9e4, 0x9e5}, - {0x9f2, 0xa00}, + {0x9f2, 0x9fb}, + {0x9fd, 0xa00}, {0xa04, 0xa04}, {0xa0b, 0xa0e}, {0xa11, 0xa12}, @@ -448,7 +446,7 @@ var ( {0xad1, 0xadf}, {0xae4, 0xae5}, {0xaf0, 0xaf8}, - {0xafa, 0xb00}, + {0xb00, 0xb00}, {0xb04, 0xb04}, {0xb0d, 0xb0e}, {0xb11, 0xb12}, @@ -505,11 +503,10 @@ var ( {0xcdf, 0xcdf}, {0xce4, 0xce5}, {0xcf0, 0xcf0}, - {0xcf3, 0xd00}, + {0xcf3, 0xcff}, {0xd04, 0xd04}, {0xd0d, 0xd0d}, {0xd11, 0xd11}, - {0xd3b, 0xd3c}, {0xd45, 0xd45}, {0xd49, 0xd49}, {0xd4f, 0xd53}, @@ -623,9 +620,8 @@ var ( {0x1c7e, 0x1c7f}, {0x1c89, 0x1ccf}, {0x1cd3, 0x1cd3}, - {0x1cf7, 0x1cf7}, {0x1cfa, 0x1cff}, - {0x1df6, 0x1dfa}, + {0x1dfa, 0x1dfa}, {0x1f16, 0x1f17}, {0x1f1e, 0x1f1f}, {0x1f46, 0x1f47}, @@ -697,7 +693,7 @@ var ( {0x3030, 0x303a}, {0x303d, 0x3098}, {0x309b, 0x3104}, - {0x312e, 0x3130}, + {0x312f, 0x3130}, {0x318f, 0x319f}, {0x31bb, 0x9fff}, {0xa48d, 0xa4cf}, @@ -707,8 +703,6 @@ var ( {0xa673, 0xa673}, {0xa67e, 0xa67e}, {0xa6f2, 0xa716}, - {0xa720, 0xa721}, - {0xa789, 0xa78a}, {0xa7af, 0xa7af}, {0xa7b8, 0xa7f6}, {0xa828, 0xa83f}, @@ -741,7 +735,6 @@ var ( {0xab17, 0xab1f}, {0xab27, 0xab27}, {0xab2f, 0xab2f}, - {0xab5b, 0xab5b}, {0xab66, 0xab6f}, {0xabeb, 0xabeb}, {0xabee, 0xabef}, @@ -796,7 +789,7 @@ var ( {0x1029d, 0x1029f}, {0x102d1, 0x102df}, {0x102e1, 0x102ff}, - {0x10320, 0x1032f}, + {0x10320, 0x1032c}, {0x1034b, 0x1034f}, {0x1037b, 0x1037f}, {0x1039e, 0x1039f}, @@ -899,7 +892,11 @@ var ( {0x1172c, 0x1172f}, {0x1173a, 0x1189f}, {0x118ea, 0x118fe}, - {0x11900, 0x11abf}, + {0x11900, 0x119ff}, + {0x11a3f, 0x11a46}, + {0x11a48, 0x11a4f}, + {0x11a84, 0x11a85}, + {0x11a9a, 0x11abf}, {0x11af9, 0x11bff}, {0x11c09, 0x11c09}, {0x11c37, 0x11c37}, @@ -907,7 +904,14 @@ var ( {0x11c5a, 0x11c71}, {0x11c90, 0x11c91}, {0x11ca8, 0x11ca8}, - {0x11cb7, 0x11fff}, + {0x11cb7, 0x11cff}, + {0x11d07, 0x11d07}, + {0x11d0a, 0x11d0a}, + {0x11d37, 0x11d39}, + {0x11d3b, 0x11d3b}, + {0x11d3e, 0x11d3e}, + {0x11d48, 0x11d4f}, + {0x11d5a, 0x11fff}, {0x1239a, 0x123ff}, {0x1246f, 0x1247f}, {0x12544, 0x12fff}, @@ -926,7 +930,7 @@ var ( {0x16f45, 0x16f4f}, {0x16f7f, 0x16f8e}, {0x16fa0, 0x16fdf}, - {0x16fe1, 0x1bbff}, + {0x16fe2, 0x1bbff}, {0x1bc6b, 0x1bc6f}, {0x1bc7d, 0x1bc7f}, {0x1bc89, 0x1bc8f}, diff --git a/vendor/golang.org/x/text/cmd/gotext/doc.go b/vendor/golang.org/x/text/cmd/gotext/doc.go index 54eb485d5..f78912f26 100644 --- a/vendor/golang.org/x/text/cmd/gotext/doc.go +++ b/vendor/golang.org/x/text/cmd/gotext/doc.go @@ -14,6 +14,7 @@ // The commands are: // // extract extract strings to be translated from code +// rewrite rewrite rewrites fmt functions to use a message Printer // // Use "go help [command]" for more information about a command. // @@ -32,4 +33,16 @@ // // // +// Rewrite rewrites fmt functions to use a message Printer +// +// Usage: +// +// go rewrite * +// +// rewrite is typically done once for a project. It rewrites all usages of +// fmt to use x/text's message package whenever a message.Printer is in scope. +// It rewrites Print and Println calls with constant strings to the equivalent +// using Printf to allow translators to reorder arguments. +// +// package main diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go new file mode 100644 index 000000000..08ac14397 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go @@ -0,0 +1,86 @@ +// Copyright 2017 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 main + +//go:generate gotext extract + +import ( + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func main() { + p := message.NewPrinter(language.English) + + p.Print("Hello world!\n") + + p.Println("Hello", "world!") + + person := "Sheila" + place := "Zürich" + + p.Print("Hello ", person, " in ", place, "!\n") + + // Greet everyone. + p.Printf("Hello world!\n") + + city := "Amsterdam" + // Greet a city. + p.Printf("Hello %s!\n", city) + + town := "Amsterdam" + // Greet a town. + p.Printf("Hello %s!\n", + town, // Town + ) + + // Person visiting a place. + p.Printf("%s is visiting %s!\n", + person, // The person of matter. + place, // Place the person is visiting. + ) + + pp := struct { + Person string // The person of matter. // TODO: get this comment. + Place string + extra int + }{ + person, place, 4, + } + + // extract will drop this comment in favor of the one below. + // argument is added as a placeholder. + p.Printf("%[1]s is visiting %[3]s!\n", // Person visiting a place. + pp.Person, + pp.extra, + pp.Place, // Place the person is visiting. + ) + + // Numeric literal + p.Printf("%d files remaining!", 2) + + const n = 2 + + // Numeric var + p.Printf("%d more files remaining!", n) + + // Infer better names from type names. + type referralCode int + + const c = referralCode(5) + p.Printf("Use the following code for your discount: %d\n", c) + + // Using a constant for a message will cause the constant name to be + // added as an identifier, allowing for stable message identifiers. + + // Explain that a device is out of order. + const msgOutOfOrder = "%s is out of order!" // FOO + const device = "Soda machine" + p.Printf(msgOutOfOrder, device) + + // Double arguments. + miles := 1.2345 + p.Printf("%.2[1]f miles traveled (%[1]f)", miles) +} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/textdata/gotext_en.out.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/textdata/gotext_en.out.json new file mode 100755 index 000000000..2b9124c0a --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract/textdata/gotext_en.out.json @@ -0,0 +1,221 @@ +[ + { + "key": [ + "Hello world!\n" + ], + "message": { + "msg": "Hello world!\n" + }, + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" + }, + { + "key": [ + "Hello %s!\n" + ], + "message": { + "msg": "Hello {City}!\n" + }, + "placeholders": [ + { + "id": "City", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "city" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:31:10" + }, + { + "key": [ + "Hello %s!\n" + ], + "message": { + "msg": "Hello {Town}!\n" + }, + "placeholders": [ + { + "id": "Town", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "town", + "comment": "Town" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:35:10" + }, + { + "key": [ + "%s is visiting %s!\n" + ], + "message": { + "msg": "{Person} is visiting {Place}!\n" + }, + "placeholders": [ + { + "id": "Person", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "person", + "comment": "The person of matter." + }, + { + "id": "Place", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "place", + "comment": "Place the person is visiting." + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:40:10" + }, + { + "key": [ + "%[1]s is visiting %[3]s!\n" + ], + "message": { + "msg": "{Person} is visiting {Place}!\n" + }, + "comment": "Person visiting a place.", + "placeholders": [ + { + "id": "Person", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "pp.Person" + }, + { + "id": "Place", + "string": "%[3]s", + "type": "string", + "underlyingType": "string", + "argNum": 3, + "expr": "pp.Place", + "comment": "Place the person is visiting." + }, + { + "id": "Extra", + "string": "%[2]v", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "pp.extra" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:55:10" + }, + { + "key": [ + "%d files remaining!" + ], + "message": { + "msg": "{} files remaining!" + }, + "placeholders": [ + { + "id": "", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "2" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:62:10" + }, + { + "key": [ + "%d more files remaining!" + ], + "message": { + "msg": "{N} more files remaining!" + }, + "placeholders": [ + { + "id": "N", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "n" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:67:10" + }, + { + "key": [ + "Use the following code for your discount: %d\n" + ], + "message": { + "msg": "Use the following code for your discount: {ReferralCode}\n" + }, + "placeholders": [ + { + "id": "ReferralCode", + "string": "%[1]d", + "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", + "underlyingType": "int", + "argNum": 1, + "expr": "c" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:73:10" + }, + { + "key": [ + "msgOutOfOrder", + "%s is out of order!" + ], + "message": { + "msg": "{Device} is out of order!" + }, + "comment": "FOO\n", + "placeholders": [ + { + "id": "Device", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "device" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:81:10" + }, + { + "key": [ + "%.2[1]f miles traveled (%[1]f)" + ], + "message": { + "msg": "{Miles} miles traveled ({Miles_1})" + }, + "placeholders": [ + { + "id": "Miles", + "string": "%.2[1]f", + "type": "float64", + "underlyingType": "float64", + "argNum": 1, + "expr": "miles" + }, + { + "id": "Miles_1", + "string": "%[1]f", + "type": "float64", + "underlyingType": "float64", + "argNum": 1, + "expr": "miles" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:85:10" + } +] \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go new file mode 100644 index 000000000..4f7484f45 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go @@ -0,0 +1,17 @@ +// Copyright 2017 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 main + +//go:generate gotext extract + +import ( + "net/http" + + "golang.org/x/text/cmd/gotext/examples/extract_http/pkg" +) + +func main() { + http.Handle("/generize", http.HandlerFunc(pkg.Generize)) +} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go new file mode 100644 index 000000000..56bb474ae --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go @@ -0,0 +1,27 @@ +// Copyright 2017 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 pkg + +import ( + "net/http" + + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +var matcher = language.NewMatcher(message.DefaultCatalog.Languages()) + +func Generize(w http.ResponseWriter, r *http.Request) { + lang, _ := r.Cookie("lang") + accept := r.Header.Get("Accept-Language") + fallback := "en" + tag, _ := language.MatchStrings(matcher, lang.String(), accept, fallback) + p := message.NewPrinter(tag) + + p.Fprintf(w, "Hello %s!\n", r.Header.Get("From")) + + p.Fprintf(w, "Do you like your browser (%s)?\n", r.Header.Get("User-Agent")) + +} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/textdata/gotext_en.out.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/textdata/gotext_en.out.json new file mode 100755 index 000000000..e6b996846 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/textdata/gotext_en.out.json @@ -0,0 +1,40 @@ +[ + { + "key": [ + "Hello %s!\n" + ], + "message": { + "msg": "Hello {From}!\n" + }, + "placeholders": [ + { + "id": "From", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "r.Header.Get(\"From\")" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:23:11" + }, + { + "key": [ + "Do you like your browser (%s)?\n" + ], + "message": { + "msg": "Do you like your browser ({User_Agent})?\n" + }, + "placeholders": [ + { + "id": "User_Agent", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "r.Header.Get(\"User-Agent\")" + } + ], + "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:25:11" + } +] \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go b/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go new file mode 100644 index 000000000..2fada451e --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go @@ -0,0 +1,37 @@ +// Copyright 2017 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 main + +import ( + "fmt" + + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func main() { + var nPizzas = 4 + // The following call gets replaced by a call to the globally + // defined printer. + fmt.Println("We ate", nPizzas, "pizzas.") + + p := message.NewPrinter(language.English) + + // Prevent build failure, although it is okay for gotext. + p.Println(1024) + + // Replaced by a call to p. + fmt.Println("Example punctuation:", "$%^&!") + + { + q := message.NewPrinter(language.French) + + const leaveAnIdentBe = "Don't expand me." + fmt.Print(leaveAnIdentBe) + q.Println() // Prevent build failure, although it is okay for gotext. + } + + fmt.Printf("Hello %s\n", "City") +} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go b/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go new file mode 100644 index 000000000..9ed055620 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go @@ -0,0 +1,16 @@ +// Copyright 2017 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. + +// +build ignore + +package main + +import ( + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +// The printer defined here will be picked up by the first print statement +// in main.go. +var printer = message.NewPrinter(language.English) diff --git a/vendor/golang.org/x/text/cmd/gotext/extract.go b/vendor/golang.org/x/text/cmd/gotext/extract.go index 79a9b596d..b7ca5594c 100644 --- a/vendor/golang.org/x/text/cmd/gotext/extract.go +++ b/vendor/golang.org/x/text/cmd/gotext/extract.go @@ -13,13 +13,17 @@ import ( "go/constant" "go/format" "go/parser" + "go/token" "go/types" "io/ioutil" "os" "path" "path/filepath" "strings" + "unicode" + "unicode/utf8" + fmtparser "golang.org/x/text/internal/format" "golang.org/x/tools/go/loader" ) @@ -64,9 +68,9 @@ func runExtract(cmd *Command, args []string) error { return buf.String() } - var translations []Translation + var messages []Message - for _, info := range iprog.InitialPackages() { + for _, info := range iprog.AllPackages { for _, f := range info.Files { // Associate comments with nodes. cmap := ast.NewCommentMap(iprog.Fset, f, f.Comments) @@ -103,70 +107,113 @@ func runExtract(cmd *Command, args []string) error { return true } + fmtType, ok := m[meth.Obj().Name()] + if !ok { + return true + } // argn is the index of the format string. - argn, ok := m[meth.Obj().Name()] - if !ok || argn >= len(call.Args) { + argn := fmtType.arg + if argn >= len(call.Args) { return true } - // Skip calls with non-constant format string. - fmtstr := info.Types[call.Args[argn]].Value - if fmtstr == nil || fmtstr.Kind() != constant.String { + args := call.Args[fmtType.arg:] + + fmtMsg, ok := msgStr(info, args[0]) + if !ok { + // TODO: identify the type of the format argument. If it + // is not a string, multiple keys may be defined. return true } - - posn := conf.Fset.Position(call.Lparen) - filepos := fmt.Sprintf("%s:%d:%d", filepath.Base(posn.Filename), posn.Line, posn.Column) - - // TODO: identify the type of the format argument. If it is not - // a string, multiple keys may be defined. - var key []string - - // TODO: replace substitutions (%v) with a translator friendly - // notation. For instance: - // "%d files remaining" -> "{numFiles} files remaining", or - // "%d files remaining" -> "{arg1} files remaining" - // Alternatively, this could be done at a later stage. - msg := constant.StringVal(fmtstr) - - // Construct a Translation unit. - c := Translation{ - Key: key, - Position: filepath.Join(info.Pkg.Path(), filepos), - Original: Text{Msg: msg}, - ExtractedComment: getComment(call.Args[0]), - // TODO(fix): this doesn't get the before comment. - // Comment: getComment(call), + comment := "" + key := []string{} + if ident, ok := args[0].(*ast.Ident); ok { + key = append(key, ident.Name) + if v, ok := ident.Obj.Decl.(*ast.ValueSpec); ok && v.Comment != nil { + // TODO: get comment above ValueSpec as well + comment = v.Comment.Text() + } } - for i, arg := range call.Args[argn+1:] { - var val string + key = append(key, fmtMsg) + arguments := []argument{} + args = args[1:] + simArgs := make([]interface{}, len(args)) + for i, arg := range args { + expr := print(arg) + val := "" if v := info.Types[arg].Value; v != nil { val = v.ExactString() + simArgs[i] = val + switch arg.(type) { + case *ast.BinaryExpr, *ast.UnaryExpr: + expr = val + } } - posn := conf.Fset.Position(arg.Pos()) - filepos := fmt.Sprintf("%s:%d:%d", filepath.Base(posn.Filename), posn.Line, posn.Column) - c.Args = append(c.Args, Argument{ - ID: i + 1, + arguments = append(arguments, argument{ + ArgNum: i + 1, Type: info.Types[arg].Type.String(), UnderlyingType: info.Types[arg].Type.Underlying().String(), - Expr: print(arg), + Expr: expr, Value: val, Comment: getComment(arg), - Position: filepath.Join(info.Pkg.Path(), filepos), + Position: posString(conf, info, arg.Pos()), // TODO report whether it implements // interfaces plural.Interface, // gender.Interface. }) } + msg := "" - translations = append(translations, c) + ph := placeholders{index: map[string]string{}} + + p := fmtparser.Parser{} + p.Reset(simArgs) + for p.SetFormat(fmtMsg); p.Scan(); { + switch p.Status { + case fmtparser.StatusText: + msg += p.Text() + case fmtparser.StatusSubstitution, + fmtparser.StatusBadWidthSubstitution, + fmtparser.StatusBadPrecSubstitution: + arguments[p.ArgNum-1].used = true + arg := arguments[p.ArgNum-1] + sub := p.Text() + if !p.HasIndex { + r, sz := utf8.DecodeLastRuneInString(sub) + sub = fmt.Sprintf("%s[%d]%c", sub[:len(sub)-sz], p.ArgNum, r) + } + msg += fmt.Sprintf("{%s}", ph.addArg(&arg, sub)) + } + } + + // Add additional Placeholders that can be used in translations + // that are not present in the string. + for _, arg := range arguments { + if arg.used { + continue + } + ph.addArg(&arg, fmt.Sprintf("%%[%d]v", arg.ArgNum)) + } + + if c := getComment(call.Args[0]); c != "" { + comment = c + } + + messages = append(messages, Message{ + Key: key, + Message: Text{Msg: msg}, + // TODO(fix): this doesn't get the before comment. + Comment: comment, + Placeholders: ph.slice, + Position: posString(conf, info, call.Lparen), + }) return true }) } } - data, err := json.MarshalIndent(translations, "", " ") + data, err := json.MarshalIndent(messages, "", " ") if err != nil { return err } @@ -181,15 +228,110 @@ func runExtract(cmd *Command, args []string) error { return nil } +func posString(conf loader.Config, info *loader.PackageInfo, pos token.Pos) string { + p := conf.Fset.Position(pos) + file := fmt.Sprintf("%s:%d:%d", filepath.Base(p.Filename), p.Line, p.Column) + return filepath.Join(info.Pkg.Path(), file) +} + // extractFuncs indicates the types and methods for which to extract strings, // and which argument to extract. // TODO: use the types in conf.Import("golang.org/x/text/message") to extract // the correct instances. -var extractFuncs = map[string]map[string]int{ +var extractFuncs = map[string]map[string]extractType{ // TODO: Printer -> *golang.org/x/text/message.Printer "message.Printer": { - "Printf": 0, - "Sprintf": 0, - "Fprintf": 1, + "Printf": extractType{arg: 0, format: true}, + "Sprintf": extractType{arg: 0, format: true}, + "Fprintf": extractType{arg: 1, format: true}, + + "Lookup": extractType{arg: 0}, }, } + +type extractType struct { + // format indicates if the next arg is a formatted string or whether to + // concatenate all arguments + format bool + // arg indicates the position of the argument to extract. + arg int +} + +func getID(arg *argument) string { + s := getLastComponent(arg.Expr) + s = strip(s) + s = strings.Replace(s, " ", "", -1) + // For small variable names, use user-defined types for more info. + if len(s) <= 2 && arg.UnderlyingType != arg.Type { + s = getLastComponent(arg.Type) + } + return strings.Title(s) +} + +// strip is a dirty hack to convert function calls to placeholder IDs. +func strip(s string) string { + s = strings.Map(func(r rune) rune { + if unicode.IsSpace(r) || r == '-' { + return '_' + } + if !unicode.In(r, unicode.Letter, unicode.Mark) { + return -1 + } + return r + }, s) + // Strip "Get" from getter functions. + if strings.HasPrefix(s, "Get") || strings.HasPrefix(s, "get") { + if len(s) > len("get") { + r, _ := utf8.DecodeRuneInString(s) + if !unicode.In(r, unicode.Ll, unicode.M) { // not lower or mark + s = s[len("get"):] + } + } + } + return s +} + +type placeholders struct { + index map[string]string + slice []Placeholder +} + +func (p *placeholders) addArg(arg *argument, sub string) (id string) { + id = getID(arg) + id1 := id + alt, ok := p.index[id1] + for i := 1; ok && alt != sub; i++ { + id1 = fmt.Sprintf("%s_%d", id, i) + alt, ok = p.index[id1] + } + p.index[id1] = sub + p.slice = append(p.slice, Placeholder{ + ID: id1, + String: sub, + Type: arg.Type, + UnderlyingType: arg.UnderlyingType, + ArgNum: arg.ArgNum, + Expr: arg.Expr, + Comment: arg.Comment, + }) + return id1 +} + +func getLastComponent(s string) string { + return s[1+strings.LastIndexByte(s, '.'):] +} + +func msgStr(info *loader.PackageInfo, e ast.Expr) (s string, ok bool) { + v := info.Types[e].Value + if v == nil || v.Kind() != constant.String { + return "", false + } + s = constant.StringVal(v) + // Only record strings with letters. + for _, r := range s { + if unicode.In(r, unicode.L) { + return s, true + } + } + return "", false +} diff --git a/vendor/golang.org/x/text/cmd/gotext/main.go b/vendor/golang.org/x/text/cmd/gotext/main.go index b03eb5565..de2e0ff5c 100644 --- a/vendor/golang.org/x/text/cmd/gotext/main.go +++ b/vendor/golang.org/x/text/cmd/gotext/main.go @@ -87,6 +87,7 @@ func (c *Command) Runnable() bool { // The order here is the order in which they are printed by 'go help'. var commands = []*Command{ cmdExtract, + cmdRewrite, // TODO: // - generate code from translations. // - update: full-cycle update of extraction, sending, and integration diff --git a/vendor/golang.org/x/text/cmd/gotext/message.go b/vendor/golang.org/x/text/cmd/gotext/message.go index 67a622fd7..eaa900553 100644 --- a/vendor/golang.org/x/text/cmd/gotext/message.go +++ b/vendor/golang.org/x/text/cmd/gotext/message.go @@ -13,89 +13,72 @@ package main // A translation may have multiple translations strings, or messages, depending // on the feature values of the various arguments. For instance, consider // a hypothetical translation from English to English, where the source defines -// the format string "%d file(s) remaining". A completed translation, expressed -// in JS, for this format string could look like: -// -// { -// "Key": [ -// "\"%d files(s) remaining\"" -// ], -// "Original": { -// "Msg": "\"%d files(s) remaining\"" -// }, -// "Translation": { -// "Select": { -// "Feature": "plural", -// "Arg": 1, -// "Case": { -// "one": { "Msg": "1 file remaining" }, -// "other": { "Msg": "%d files remaining" } -// }, -// }, -// }, -// "Args": [ -// { -// "ID": 2, -// "Type": "int", -// "UnderlyingType": "int", -// "Expr": "nFiles", -// "Comment": "number of files remaining", -// "Position": "golang.org/x/text/cmd/gotext/demo.go:34:3" -// } -// ], -// "Position": "golang.org/x/text/cmd/gotext/demo.go:33:10", -// } -// -// Alternatively, the Translation section could be written as: -// -// "Translation": { -// "Msg": "%d %[files]s remaining", -// "Var": { -// "files" : { -// "Select": { -// "Feature": "plural", -// "Arg": 1, -// "Case": { -// "one": { "Msg": "file" }, -// "other": { "Msg": "files" } -// } -// } -// } -// } -// } +// the format string "%d file(s) remaining". +// See the examples directory for examples of extracted messages. -// A Translation describes a translation for a single language for a single -// message. -type Translation struct { +// A Message describes a message to be translated. +type Message struct { // Key contains a list of identifiers for the message. If this list is empty - // Original is used as the key. - Key []string `json:"key,omitempty"` - Original Text `json:"original"` - Translation Text `json:"translation"` - ExtractedComment string `json:"extractedComment,omitempty"` - TranslatorComment string `json:"translatorComment,omitempty"` + // the message itself is used as the key. + Key []string `json:"key,omitempty"` + Meaning string `json:"meaning,omitempty"` + Message Text `json:"message"` + Translation *Text `json:"translation,omitempty"` - Args []Argument `json:"args,omitempty"` + Comment string `json:"comment,omitempty"` + TranslatorComment string `json:"translatorComment,omitempty"` + + Placeholders []Placeholder `json:"placeholders,omitempty"` + + // TODO: default placeholder syntax is {foo}. Allow alternative escaping + // like `foo`. // Extraction information. Position string `json:"position,omitempty"` // filePosition:line } -// An Argument contains information about the arguments passed to a message. -type Argument struct { - ID interface{} `json:"id"` // An int for printf-style calls, but could be a string. - Type string `json:"type"` - UnderlyingType string `json:"underlyingType"` - Expr string `json:"expr"` - Value string `json:"value,omitempty"` - Comment string `json:"comment,omitempty"` - Position string `json:"position,omitempty"` +// A Placeholder is a part of the message that should not be changed by a +// translator. It can be used to hide or prettify format strings (e.g. %d or +// {{.Count}}), hide HTML, or mark common names that should not be translated. +type Placeholder struct { + // ID is the placeholder identifier without the curly braces. + ID string `json:"id"` + + // String is the string with which to replace the placeholder. This may be a + // formatting string (for instance "%d" or "{{.Count}}") or a literal string + // (
). + String string `json:"string"` + + Type string `json:"type"` + UnderlyingType string `json:"underlyingType"` + // ArgNum and Expr are set if the placeholder is a substitution of an + // argument. + ArgNum int `json:"argNum,omitempty"` + Expr string `json:"expr,omitempty"` + + Comment string `json:"comment,omitempty"` + Example string `json:"example,omitempty"` // Features contains the features that are available for the implementation // of this argument. Features []Feature `json:"features,omitempty"` } +// An argument contains information about the arguments passed to a message. +type argument struct { + // ArgNum corresponds to the number that should be used for explicit argument indexes (e.g. + // "%[1]d"). + ArgNum int `json:"argNum,omitempty"` + + used bool // Used by Placeholder + Type string `json:"type"` + UnderlyingType string `json:"underlyingType"` + Expr string `json:"expr"` + Value string `json:"value,omitempty"` + Comment string `json:"comment,omitempty"` + Position string `json:"position,omitempty"` +} + // Feature holds information about a feature that can be implemented by // an Argument. type Feature struct { @@ -107,21 +90,29 @@ type Feature struct { // Text defines a message to be displayed. type Text struct { - // Msg and Select contains the message to be displayed. Within a Text value - // either Msg or Select is defined. + // Msg and Select contains the message to be displayed. Msg may be used as + // a fallback value if none of the select cases match. Msg string `json:"msg,omitempty"` Select *Select `json:"select,omitempty"` + // Var defines a map of variables that may be substituted in the selected // message. Var map[string]Text `json:"var,omitempty"` + // Example contains an example message formatted with default values. Example string `json:"example,omitempty"` } -// Type Select selects a Text based on the feature value associated with -// a feature of a certain argument. +// Select selects a Text based on the feature value associated with a feature of +// a certain argument. type Select struct { - Feature string `json:"feature"` // Name of variable or Feature type - Arg interface{} `json:"arg"` // The argument ID. + Feature string `json:"feature"` // Name of Feature type (e.g plural) + Arg string `json:"arg"` // The placeholder ID Cases map[string]Text `json:"cases"` } + +// TODO: order matters, but can we derive the ordering from the case keys? +// type Case struct { +// Key string `json:"key"` +// Value Text `json:"value"` +// } diff --git a/vendor/golang.org/x/text/cmd/gotext/rewrite.go b/vendor/golang.org/x/text/cmd/gotext/rewrite.go new file mode 100644 index 000000000..af97d4191 --- /dev/null +++ b/vendor/golang.org/x/text/cmd/gotext/rewrite.go @@ -0,0 +1,304 @@ +// Copyright 2017 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 main + +import ( + "bytes" + "fmt" + "go/ast" + "go/build" + "go/constant" + "go/format" + "go/parser" + "go/token" + "log" + "os" + "strings" + + "golang.org/x/tools/go/loader" +) + +const printerType = "golang.org/x/text/message.Printer" + +// TODO: +// - merge information into existing files +// - handle different file formats (PO, XLIFF) +// - handle features (gender, plural) +// - message rewriting + +func init() { + overwrite = cmdRewrite.Flag.Bool("w", false, "write files in place") +} + +var ( + overwrite *bool +) + +var cmdRewrite = &Command{ + Run: runRewrite, + UsageLine: "rewrite *", + Short: "rewrite rewrites fmt functions to use a message Printer", + Long: ` +rewrite is typically done once for a project. It rewrites all usages of +fmt to use x/text's message package whenever a message.Printer is in scope. +It rewrites Print and Println calls with constant strings to the equivalent +using Printf to allow translators to reorder arguments. +`, +} + +func runRewrite(cmd *Command, args []string) error { + if len(args) == 0 { + args = []string{"."} + } + + conf := loader.Config{ + Build: &build.Default, + ParserMode: parser.ParseComments, + AllowErrors: true, // Allow unused instances of message.Printer. + } + + // Use the initial packages from the command line. + args, err := conf.FromArgs(args, false) + if err != nil { + return err + } + + // Load, parse and type-check the whole program. + iprog, err := conf.Load() + if err != nil { + return err + } + + for _, info := range iprog.InitialPackages() { + for _, f := range info.Files { + // Associate comments with nodes. + + // Pick up initialized Printers at the package level. + r := rewriter{info: info, conf: &conf} + for _, n := range info.InitOrder { + if t := r.info.Types[n.Rhs].Type.String(); strings.HasSuffix(t, printerType) { + r.printerVar = n.Lhs[0].Name() + } + } + + ast.Walk(&r, f) + + w := os.Stdout + if *overwrite { + var err error + if w, err = os.Create(conf.Fset.File(f.Pos()).Name()); err != nil { + log.Fatalf("Could not open file: %v", err) + } + } + + if err := format.Node(w, conf.Fset, f); err != nil { + return err + } + } + } + + return nil +} + +type rewriter struct { + info *loader.PackageInfo + conf *loader.Config + printerVar string +} + +// print returns Go syntax for the specified node. +func (r *rewriter) print(n ast.Node) string { + var buf bytes.Buffer + format.Node(&buf, r.conf.Fset, n) + return buf.String() +} + +func (r *rewriter) Visit(n ast.Node) ast.Visitor { + // Save the state by scope. + if _, ok := n.(*ast.BlockStmt); ok { + r := *r + return &r + } + // Find Printers created by assignment. + stmt, ok := n.(*ast.AssignStmt) + if ok { + for _, v := range stmt.Lhs { + if r.printerVar == r.print(v) { + r.printerVar = "" + } + } + for i, v := range stmt.Rhs { + if t := r.info.Types[v].Type.String(); strings.HasSuffix(t, printerType) { + r.printerVar = r.print(stmt.Lhs[i]) + return r + } + } + } + // Find Printers created by variable declaration. + spec, ok := n.(*ast.ValueSpec) + if ok { + for _, v := range spec.Names { + if r.printerVar == r.print(v) { + r.printerVar = "" + } + } + for i, v := range spec.Values { + if t := r.info.Types[v].Type.String(); strings.HasSuffix(t, printerType) { + r.printerVar = r.print(spec.Names[i]) + return r + } + } + } + if r.printerVar == "" { + return r + } + call, ok := n.(*ast.CallExpr) + if !ok { + return r + } + + // TODO: Handle literal values? + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return r + } + meth := r.info.Selections[sel] + + source := r.print(sel.X) + fun := r.print(sel.Sel) + if meth != nil { + source = meth.Recv().String() + fun = meth.Obj().Name() + } + + // TODO: remove cheap hack and check if the type either + // implements some interface or is specifically of type + // "golang.org/x/text/message".Printer. + m, ok := rewriteFuncs[source] + if !ok { + return r + } + + rewriteType, ok := m[fun] + if !ok { + return r + } + ident := ast.NewIdent(r.printerVar) + ident.NamePos = sel.X.Pos() + sel.X = ident + if rewriteType.method != "" { + sel.Sel.Name = rewriteType.method + } + + // Analyze arguments. + argn := rewriteType.arg + if rewriteType.format || argn >= len(call.Args) { + return r + } + hasConst := false + for _, a := range call.Args[argn:] { + if v := r.info.Types[a].Value; v != nil && v.Kind() == constant.String { + hasConst = true + break + } + } + if !hasConst { + return r + } + sel.Sel.Name = rewriteType.methodf + + // We are done if there is only a single string that does not need to be + // escaped. + if len(call.Args) == 1 { + s, ok := constStr(r.info, call.Args[0]) + if ok && !strings.Contains(s, "%") && !rewriteType.newLine { + return r + } + } + + // Rewrite arguments as format string. + expr := &ast.BasicLit{ + ValuePos: call.Lparen, + Kind: token.STRING, + } + newArgs := append(call.Args[:argn:argn], expr) + newStr := []string{} + for i, a := range call.Args[argn:] { + if s, ok := constStr(r.info, a); ok { + newStr = append(newStr, strings.Replace(s, "%", "%%", -1)) + } else { + newStr = append(newStr, "%v") + newArgs = append(newArgs, call.Args[argn+i]) + } + } + s := strings.Join(newStr, rewriteType.sep) + if rewriteType.newLine { + s += "\n" + } + expr.Value = fmt.Sprintf("%q", s) + + call.Args = newArgs + + // TODO: consider creating an expression instead of a constant string and + // then wrapping it in an escape function or so: + // call.Args[argn+i] = &ast.CallExpr{ + // Fun: &ast.SelectorExpr{ + // X: ast.NewIdent("message"), + // Sel: ast.NewIdent("Lookup"), + // }, + // Args: []ast.Expr{a}, + // } + // } + + return r +} + +type rewriteType struct { + // method is the name of the equivalent method on a printer, or "" if it is + // the same. + method string + + // methodf is the method to use if the arguments can be rewritten as a + // arguments to a printf-style call. + methodf string + + // format is true if the method takes a formatting string followed by + // substitution arguments. + format bool + + // arg indicates the position of the argument to extract. If all is + // positive, all arguments from this argument onwards needs to be extracted. + arg int + + sep string + newLine bool +} + +// rewriteFuncs list functions that can be directly mapped to the printer +// functions of the message package. +var rewriteFuncs = map[string]map[string]rewriteType{ + // TODO: Printer -> *golang.org/x/text/message.Printer + "fmt": { + "Print": rewriteType{methodf: "Printf"}, + "Sprint": rewriteType{methodf: "Sprintf"}, + "Fprint": rewriteType{methodf: "Fprintf"}, + + "Println": rewriteType{methodf: "Printf", sep: " ", newLine: true}, + "Sprintln": rewriteType{methodf: "Sprintf", sep: " ", newLine: true}, + "Fprintln": rewriteType{methodf: "Fprintf", sep: " ", newLine: true}, + + "Printf": rewriteType{method: "Printf", format: true}, + "Sprintf": rewriteType{method: "Sprintf", format: true}, + "Fprintf": rewriteType{method: "Fprintf", format: true}, + }, +} + +func constStr(info *loader.PackageInfo, e ast.Expr) (s string, ok bool) { + v := info.Types[e].Value + if v == nil || v.Kind() != constant.String { + return "", false + } + return constant.StringVal(v), true +} diff --git a/vendor/golang.org/x/text/collate/build/contract.go b/vendor/golang.org/x/text/collate/build/contract.go index d96af7896..a6a7e01f8 100644 --- a/vendor/golang.org/x/text/collate/build/contract.go +++ b/vendor/golang.org/x/text/collate/build/contract.go @@ -26,7 +26,7 @@ import ( // in a given contraction. // non-initial: a rune that appears in a suffix. // -// A rune may be both a initial and a non-initial and may be so in +// A rune may be both an initial and a non-initial and may be so in // many contractions. An initial may typically also appear by itself. // In case of ambiguities, the UCA requires we match the longest // contraction. diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go b/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go index c2c31d5cb..d2300e3e2 100644 --- a/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go +++ b/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go @@ -39,13 +39,13 @@ type osxCollator struct { func (c *osxCollator) init(locale string) { l := C.CFStringCreateWithBytes( - nil, + C.kCFAllocatorDefault, osxUInt8P([]byte(locale)), C.CFIndex(len(locale)), C.kCFStringEncodingUTF8, C.Boolean(0), ) - c.loc = C.CFLocaleCreate(nil, l) + c.loc = C.CFLocaleCreate(C.kCFAllocatorDefault, l) } func newOSX8Collator(locale string) (Collator, error) { @@ -74,16 +74,16 @@ type osx16Collator struct { func (c osx16Collator) Compare(a, b Input) int { sa := C.CFStringCreateWithCharactersNoCopy( - nil, + C.kCFAllocatorDefault, osxCharP(a.UTF16), C.CFIndex(len(a.UTF16)), - nil, + C.kCFAllocatorDefault, ) sb := C.CFStringCreateWithCharactersNoCopy( - nil, + C.kCFAllocatorDefault, osxCharP(b.UTF16), C.CFIndex(len(b.UTF16)), - nil, + C.kCFAllocatorDefault, ) _range := C.CFRangeMake(0, C.CFStringGetLength(sa)) return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc)) @@ -91,20 +91,20 @@ func (c osx16Collator) Compare(a, b Input) int { func (c osx8Collator) Compare(a, b Input) int { sa := C.CFStringCreateWithBytesNoCopy( - nil, + C.kCFAllocatorDefault, osxUInt8P(a.UTF8), C.CFIndex(len(a.UTF8)), C.kCFStringEncodingUTF8, C.Boolean(0), - nil, + C.kCFAllocatorDefault, ) sb := C.CFStringCreateWithBytesNoCopy( - nil, + C.kCFAllocatorDefault, osxUInt8P(b.UTF8), C.CFIndex(len(b.UTF8)), C.kCFStringEncodingUTF8, C.Boolean(0), - nil, + C.kCFAllocatorDefault, ) _range := C.CFRangeMake(0, C.CFStringGetLength(sa)) return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc)) diff --git a/vendor/golang.org/x/text/currency/currency_test.go b/vendor/golang.org/x/text/currency/currency_test.go index 566a1678a..db93a0ff9 100644 --- a/vendor/golang.org/x/text/currency/currency_test.go +++ b/vendor/golang.org/x/text/currency/currency_test.go @@ -105,10 +105,10 @@ func TestTable(t *testing.T) { } // First currency has index 1, last is numCurrencies. if c := currency.Elem(1)[:3]; c != "ADP" { - t.Errorf("first was %c; want ADP", c) + t.Errorf("first was %q; want ADP", c) } if c := currency.Elem(numCurrencies)[:3]; c != "ZWR" { - t.Errorf("last was %c; want ZWR", c) + t.Errorf("last was %q; want ZWR", c) } } diff --git a/vendor/golang.org/x/text/date/data_test.go b/vendor/golang.org/x/text/date/data_test.go new file mode 100644 index 000000000..eb388cbc5 --- /dev/null +++ b/vendor/golang.org/x/text/date/data_test.go @@ -0,0 +1,335 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package date + +var enumMap = map[string]uint16{ + "": 0, + "calendars": 0, + "fields": 1, + "timeZoneNames": 2, + "buddhist": 0, + "chinese": 1, + "coptic": 2, + "dangi": 3, + "ethiopic": 4, + "ethiopic-amete-alem": 5, + "generic": 6, + "gregorian": 7, + "hebrew": 8, + "indian": 9, + "islamic": 10, + "islamic-civil": 11, + "islamic-rgsa": 12, + "islamic-tbla": 13, + "islamic-umalqura": 14, + "japanese": 15, + "persian": 16, + "roc": 17, + "months": 0, + "days": 1, + "quarters": 2, + "dayPeriods": 3, + "eras": 4, + "dateFormats": 5, + "timeFormats": 6, + "dateTimeFormats": 7, + "monthPatterns": 8, + "cyclicNameSets": 9, + "format": 0, + "stand-alone": 1, + "numeric": 2, + "widthAbbreviated": 0, + "widthNarrow": 1, + "widthWide": 2, + "widthAll": 3, + "widthShort": 4, + "leap7": 0, + "sun": 0, + "mon": 1, + "tue": 2, + "wed": 3, + "thu": 4, + "fri": 5, + "sat": 6, + "am": 0, + "pm": 1, + "midnight": 2, + "morning1": 3, + "afternoon1": 4, + "evening1": 5, + "night1": 6, + "noon": 7, + "morning2": 8, + "afternoon2": 9, + "night2": 10, + "evening2": 11, + "variant": 1, + "short": 0, + "long": 1, + "full": 2, + "medium": 3, + "dayPartsCycleType": 0, + "daysCycleType": 1, + "monthsCycleType": 2, + "solarTermsCycleType": 3, + "yearsCycleType": 4, + "zodiacsCycleType": 5, + "eraField": 0, + "era-shortField": 1, + "era-narrowField": 2, + "yearField": 3, + "year-shortField": 4, + "year-narrowField": 5, + "quarterField": 6, + "quarter-shortField": 7, + "quarter-narrowField": 8, + "monthField": 9, + "month-shortField": 10, + "month-narrowField": 11, + "weekField": 12, + "week-shortField": 13, + "week-narrowField": 14, + "weekOfMonthField": 15, + "weekOfMonth-shortField": 16, + "weekOfMonth-narrowField": 17, + "dayField": 18, + "day-shortField": 19, + "day-narrowField": 20, + "dayOfYearField": 21, + "dayOfYear-shortField": 22, + "dayOfYear-narrowField": 23, + "weekdayField": 24, + "weekday-shortField": 25, + "weekday-narrowField": 26, + "weekdayOfMonthField": 27, + "weekdayOfMonth-shortField": 28, + "weekdayOfMonth-narrowField": 29, + "sunField": 30, + "sun-shortField": 31, + "sun-narrowField": 32, + "monField": 33, + "mon-shortField": 34, + "mon-narrowField": 35, + "tueField": 36, + "tue-shortField": 37, + "tue-narrowField": 38, + "wedField": 39, + "wed-shortField": 40, + "wed-narrowField": 41, + "thuField": 42, + "thu-shortField": 43, + "thu-narrowField": 44, + "friField": 45, + "fri-shortField": 46, + "fri-narrowField": 47, + "satField": 48, + "sat-shortField": 49, + "sat-narrowField": 50, + "dayperiod-shortField": 51, + "dayperiodField": 52, + "dayperiod-narrowField": 53, + "hourField": 54, + "hour-shortField": 55, + "hour-narrowField": 56, + "minuteField": 57, + "minute-shortField": 58, + "minute-narrowField": 59, + "secondField": 60, + "second-shortField": 61, + "second-narrowField": 62, + "zoneField": 63, + "zone-shortField": 64, + "zone-narrowField": 65, + "displayName": 0, + "relative": 1, + "relativeTime": 2, + "relativePeriod": 3, + "before1": 0, + "current": 1, + "after1": 2, + "before2": 3, + "after2": 4, + "after3": 5, + "future": 0, + "past": 1, + "other": 0, + "one": 1, + "zero": 2, + "two": 3, + "few": 4, + "many": 5, + "zoneFormat": 0, + "regionFormat": 1, + "zone": 2, + "metaZone": 3, + "hourFormat": 0, + "gmtFormat": 1, + "gmtZeroFormat": 2, + "genericTime": 0, + "daylightTime": 1, + "standardTime": 2, + "Etc/UTC": 0, + "Europe/London": 1, + "Europe/Dublin": 2, + "Pacific/Honolulu": 3, + "Afghanistan": 0, + "Africa_Central": 1, + "Africa_Eastern": 2, + "Africa_Southern": 3, + "Africa_Western": 4, + "Alaska": 5, + "Amazon": 6, + "America_Central": 7, + "America_Eastern": 8, + "America_Mountain": 9, + "America_Pacific": 10, + "Anadyr": 11, + "Apia": 12, + "Arabian": 13, + "Argentina": 14, + "Argentina_Western": 15, + "Armenia": 16, + "Atlantic": 17, + "Australia_Central": 18, + "Australia_CentralWestern": 19, + "Australia_Eastern": 20, + "Australia_Western": 21, + "Azerbaijan": 22, + "Azores": 23, + "Bangladesh": 24, + "Bhutan": 25, + "Bolivia": 26, + "Brasilia": 27, + "Brunei": 28, + "Cape_Verde": 29, + "Chamorro": 30, + "Chatham": 31, + "Chile": 32, + "China": 33, + "Choibalsan": 34, + "Christmas": 35, + "Cocos": 36, + "Colombia": 37, + "Cook": 38, + "Cuba": 39, + "Davis": 40, + "DumontDUrville": 41, + "East_Timor": 42, + "Easter": 43, + "Ecuador": 44, + "Europe_Central": 45, + "Europe_Eastern": 46, + "Europe_Further_Eastern": 47, + "Europe_Western": 48, + "Falkland": 49, + "Fiji": 50, + "French_Guiana": 51, + "French_Southern": 52, + "Galapagos": 53, + "Gambier": 54, + "Georgia": 55, + "Gilbert_Islands": 56, + "GMT": 57, + "Greenland_Eastern": 58, + "Greenland_Western": 59, + "Gulf": 60, + "Guyana": 61, + "Hawaii_Aleutian": 62, + "Hong_Kong": 63, + "Hovd": 64, + "India": 65, + "Indian_Ocean": 66, + "Indochina": 67, + "Indonesia_Central": 68, + "Indonesia_Eastern": 69, + "Indonesia_Western": 70, + "Iran": 71, + "Irkutsk": 72, + "Israel": 73, + "Japan": 74, + "Kamchatka": 75, + "Kazakhstan_Eastern": 76, + "Kazakhstan_Western": 77, + "Korea": 78, + "Kosrae": 79, + "Krasnoyarsk": 80, + "Kyrgystan": 81, + "Line_Islands": 82, + "Lord_Howe": 83, + "Macquarie": 84, + "Magadan": 85, + "Malaysia": 86, + "Maldives": 87, + "Marquesas": 88, + "Marshall_Islands": 89, + "Mauritius": 90, + "Mawson": 91, + "Mexico_Northwest": 92, + "Mexico_Pacific": 93, + "Mongolia": 94, + "Moscow": 95, + "Myanmar": 96, + "Nauru": 97, + "Nepal": 98, + "New_Caledonia": 99, + "New_Zealand": 100, + "Newfoundland": 101, + "Niue": 102, + "Norfolk": 103, + "Noronha": 104, + "Novosibirsk": 105, + "Omsk": 106, + "Pakistan": 107, + "Palau": 108, + "Papua_New_Guinea": 109, + "Paraguay": 110, + "Peru": 111, + "Philippines": 112, + "Phoenix_Islands": 113, + "Pierre_Miquelon": 114, + "Pitcairn": 115, + "Ponape": 116, + "Pyongyang": 117, + "Reunion": 118, + "Rothera": 119, + "Sakhalin": 120, + "Samara": 121, + "Samoa": 122, + "Seychelles": 123, + "Singapore": 124, + "Solomon": 125, + "South_Georgia": 126, + "Suriname": 127, + "Syowa": 128, + "Tahiti": 129, + "Taipei": 130, + "Tajikistan": 131, + "Tokelau": 132, + "Tonga": 133, + "Truk": 134, + "Turkmenistan": 135, + "Tuvalu": 136, + "Uruguay": 137, + "Uzbekistan": 138, + "Vanuatu": 139, + "Venezuela": 140, + "Vladivostok": 141, + "Volgograd": 142, + "Vostok": 143, + "Wake": 144, + "Wallis": 145, + "Yakutsk": 146, + "Yekaterinburg": 147, + "Guam": 148, + "North_Mariana": 149, + "Acre": 150, + "Almaty": 151, + "Aqtau": 152, + "Aqtobe": 153, + "Casey": 154, + "Lanka": 155, + "Macau": 156, + "Qyzylorda": 157, +} + +// Total table size 0 bytes (0KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/date/gen.go b/vendor/golang.org/x/text/date/gen.go new file mode 100644 index 000000000..6f4ae0792 --- /dev/null +++ b/vendor/golang.org/x/text/date/gen.go @@ -0,0 +1,329 @@ +// Copyright 2017 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. + +// +build ignore + +package main + +import ( + "flag" + "log" + "strconv" + "strings" + + "golang.org/x/text/internal/cldrtree" + "golang.org/x/text/internal/gen" + "golang.org/x/text/language" + "golang.org/x/text/unicode/cldr" +) + +var ( + draft = flag.String("draft", + "contributed", + `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) +) + +// TODO: +// - Compile format patterns. +// - Compress the large amount of redundancy in metazones. +// - Split trees (with shared buckets) with data that is enough for default +// formatting of Go Time values and and tables that are needed for larger +// variants. +// - zone to metaZone mappings (in supplemental) +// - Add more enum values and also some key maps for some of the elements. + +func main() { + gen.Init() + + r := gen.OpenCLDRCoreZip() + defer r.Close() + + d := &cldr.Decoder{} + d.SetDirFilter("supplemental", "main") + d.SetSectionFilter("dates") + data, err := d.DecodeZip(r) + if err != nil { + log.Fatalf("DecodeZip: %v", err) + } + + dates := cldrtree.New("dates") + buildCLDRTree(data, dates) + + w := gen.NewCodeWriter() + if err := dates.Gen(w); err != nil { + log.Fatal(err) + } + gen.WriteCLDRVersion(w) + w.WriteGoFile("tables.go", "date") + + w = gen.NewCodeWriter() + if err := dates.GenTestData(w); err != nil { + log.Fatal(err) + } + w.WriteGoFile("data_test.go", "date") +} + +func buildCLDRTree(data *cldr.CLDR, dates *cldrtree.Builder) { + context := cldrtree.Enum("context") + widthMap := func(s string) string { + // Align era with width values. + if r, ok := map[string]string{ + "eraAbbr": "abbreviated", + "eraNarrow": "narrow", + "eraNames": "wide", + }[s]; ok { + s = r + } + // Prefix width to disambiguate with some overlapping length values. + return "width" + strings.Title(s) + } + width := cldrtree.EnumFunc("width", widthMap, "abbreviated", "narrow", "wide") + length := cldrtree.Enum("length", "short", "long") + month := cldrtree.Enum("month", "leap7") + relTime := cldrtree.EnumFunc("relTime", func(s string) string { + x, err := strconv.ParseInt(s, 10, 8) + if err != nil { + log.Fatal("Invalid number:", err) + } + return []string{ + "before2", + "before1", + "current", + "after1", + "after2", + "after3", + }[x+2] + }) + // Disambiguate keys like 'months' and 'sun'. + cycleType := cldrtree.EnumFunc("cycleType", func(s string) string { + return s + "CycleType" + }) + field := cldrtree.EnumFunc("field", func(s string) string { + return s + "Field" + }) + timeType := cldrtree.EnumFunc("timeType", func(s string) string { + if s == "" { + return "genericTime" + } + return s + "Time" + }, "generic") + + zoneType := []cldrtree.Option{cldrtree.SharedType(), timeType} + metaZoneType := []cldrtree.Option{cldrtree.SharedType(), timeType} + + for _, lang := range data.Locales() { + tag := language.Make(lang) + ldml := data.RawLDML(lang) + if ldml.Dates == nil { + continue + } + x := dates.Locale(tag) + if x := x.Index(ldml.Dates.Calendars); x != nil { + for _, cal := range ldml.Dates.Calendars.Calendar { + x := x.IndexFromType(cal) + if x := x.Index(cal.Months); x != nil { + for _, mc := range cal.Months.MonthContext { + x := x.IndexFromType(mc, context) + for _, mw := range mc.MonthWidth { + x := x.IndexFromType(mw, width) + for _, m := range mw.Month { + x.SetValue(m.Yeartype+m.Type, m, month) + } + } + } + } + if x := x.Index(cal.MonthPatterns); x != nil { + for _, mc := range cal.MonthPatterns.MonthPatternContext { + x := x.IndexFromType(mc, context) + for _, mw := range mc.MonthPatternWidth { + // Value is always leap, so no need to create a + // subindex. + for _, m := range mw.MonthPattern { + x.SetValue(mw.Type, m, width) + } + } + } + } + if x := x.Index(cal.CyclicNameSets); x != nil { + for _, cns := range cal.CyclicNameSets.CyclicNameSet { + x := x.IndexFromType(cns, cycleType) + for _, cc := range cns.CyclicNameContext { + x := x.IndexFromType(cc, context) + for _, cw := range cc.CyclicNameWidth { + x := x.IndexFromType(cw, width) + for _, c := range cw.CyclicName { + x.SetValue(c.Type, c) + } + } + } + } + } + if x := x.Index(cal.Days); x != nil { + for _, dc := range cal.Days.DayContext { + x := x.IndexFromType(dc, context) + for _, dw := range dc.DayWidth { + x := x.IndexFromType(dw, width) + for _, d := range dw.Day { + x.SetValue(d.Type, d) + } + } + } + } + if x := x.Index(cal.Quarters); x != nil { + for _, qc := range cal.Quarters.QuarterContext { + x := x.IndexFromType(qc, context) + for _, qw := range qc.QuarterWidth { + x := x.IndexFromType(qw, width) + for _, q := range qw.Quarter { + x.SetValue(q.Type, q) + } + } + } + } + if x := x.Index(cal.DayPeriods); x != nil { + for _, dc := range cal.DayPeriods.DayPeriodContext { + x := x.IndexFromType(dc, context) + for _, dw := range dc.DayPeriodWidth { + x := x.IndexFromType(dw, width) + for _, d := range dw.DayPeriod { + x.IndexFromType(d).SetValue(d.Alt, d) + } + } + } + } + if x := x.Index(cal.Eras); x != nil { + opts := []cldrtree.Option{width, cldrtree.SharedType()} + if x := x.Index(cal.Eras.EraNames, opts...); x != nil { + for _, e := range cal.Eras.EraNames.Era { + x.IndexFromAlt(e).SetValue(e.Type, e) + } + } + if x := x.Index(cal.Eras.EraAbbr, opts...); x != nil { + for _, e := range cal.Eras.EraAbbr.Era { + x.IndexFromAlt(e).SetValue(e.Type, e) + } + } + if x := x.Index(cal.Eras.EraNarrow, opts...); x != nil { + for _, e := range cal.Eras.EraNarrow.Era { + x.IndexFromAlt(e).SetValue(e.Type, e) + } + } + } + if x := x.Index(cal.DateFormats); x != nil { + for _, dfl := range cal.DateFormats.DateFormatLength { + x := x.IndexFromType(dfl, length) + for _, df := range dfl.DateFormat { + for _, p := range df.Pattern { + x.SetValue(p.Alt, p) + } + } + } + } + if x := x.Index(cal.TimeFormats); x != nil { + for _, tfl := range cal.TimeFormats.TimeFormatLength { + x := x.IndexFromType(tfl, length) + for _, tf := range tfl.TimeFormat { + for _, p := range tf.Pattern { + x.SetValue(p.Alt, p) + } + } + } + } + if x := x.Index(cal.DateTimeFormats); x != nil { + for _, dtfl := range cal.DateTimeFormats.DateTimeFormatLength { + x := x.IndexFromType(dtfl, length) + for _, dtf := range dtfl.DateTimeFormat { + for _, p := range dtf.Pattern { + x.SetValue(p.Alt, p) + } + } + } + // TODO: + // - appendItems + // - intervalFormats + } + } + } + // TODO: this is a lot of data and is probably relatively little used. + // Store this somewhere else. + if x := x.Index(ldml.Dates.Fields); x != nil { + for _, f := range ldml.Dates.Fields.Field { + x := x.IndexFromType(f, field) + for _, d := range f.DisplayName { + x.Index(d).SetValue(d.Alt, d) + } + for _, r := range f.Relative { + x.Index(r).SetValue(r.Type, r, relTime) + } + for _, rt := range f.RelativeTime { + x := x.Index(rt).IndexFromType(rt) + for _, p := range rt.RelativeTimePattern { + x.SetValue(p.Count, p) + } + } + for _, rp := range f.RelativePeriod { + x.Index(rp).SetValue(rp.Alt, rp) + } + } + } + if x := x.Index(ldml.Dates.TimeZoneNames); x != nil { + format := x.IndexWithName("zoneFormat") + for _, h := range ldml.Dates.TimeZoneNames.HourFormat { + format.SetValue(h.Element(), h) + } + for _, g := range ldml.Dates.TimeZoneNames.GmtFormat { + format.SetValue(g.Element(), g) + } + for _, g := range ldml.Dates.TimeZoneNames.GmtZeroFormat { + format.SetValue(g.Element(), g) + } + for _, r := range ldml.Dates.TimeZoneNames.RegionFormat { + x.Index(r).SetValue(r.Type, r, timeType) + } + + set := func(x *cldrtree.Index, e []*cldr.Common, zone string) { + for _, n := range e { + x.Index(n, zoneType...).SetValue(zone, n) + } + } + zoneWidth := []cldrtree.Option{length, cldrtree.SharedType()} + zs := x.IndexWithName("zone") + for _, z := range ldml.Dates.TimeZoneNames.Zone { + for _, l := range z.Long { + x := zs.Index(l, zoneWidth...) + set(x, l.Generic, z.Type) + set(x, l.Standard, z.Type) + set(x, l.Daylight, z.Type) + } + for _, s := range z.Short { + x := zs.Index(s, zoneWidth...) + set(x, s.Generic, z.Type) + set(x, s.Standard, z.Type) + set(x, s.Daylight, z.Type) + } + } + set = func(x *cldrtree.Index, e []*cldr.Common, zone string) { + for _, n := range e { + x.Index(n, metaZoneType...).SetValue(zone, n) + } + } + zoneWidth = []cldrtree.Option{length, cldrtree.SharedType()} + zs = x.IndexWithName("metaZone") + for _, z := range ldml.Dates.TimeZoneNames.Metazone { + for _, l := range z.Long { + x := zs.Index(l, zoneWidth...) + set(x, l.Generic, z.Type) + set(x, l.Standard, z.Type) + set(x, l.Daylight, z.Type) + } + for _, s := range z.Short { + x := zs.Index(s, zoneWidth...) + set(x, s.Generic, z.Type) + set(x, s.Standard, z.Type) + set(x, s.Daylight, z.Type) + } + } + } + } +} diff --git a/vendor/golang.org/x/text/date/gen_test.go b/vendor/golang.org/x/text/date/gen_test.go new file mode 100644 index 000000000..798cb4fa3 --- /dev/null +++ b/vendor/golang.org/x/text/date/gen_test.go @@ -0,0 +1,241 @@ +// Copyright 2017 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 date + +import ( + "strconv" + "strings" + "testing" + + "golang.org/x/text/internal/cldrtree" + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/testtext" + "golang.org/x/text/language" + "golang.org/x/text/unicode/cldr" +) + +func TestTables(t *testing.T) { + testtext.SkipIfNotLong(t) + + r := gen.OpenCLDRCoreZip() + defer r.Close() + + d := &cldr.Decoder{} + d.SetDirFilter("supplemental", "main") + d.SetSectionFilter("dates") + data, err := d.DecodeZip(r) + if err != nil { + t.Fatalf("DecodeZip: %v", err) + } + + count := 0 + for _, lang := range data.Locales() { + ldml := data.RawLDML(lang) + if ldml.Dates == nil { + continue + } + tag, _ := language.CompactIndex(language.MustParse(lang)) + + test := func(want cldrtree.Element, path ...string) { + if count > 30 { + return + } + t.Run(lang+"/"+strings.Join(path, "/"), func(t *testing.T) { + p := make([]uint16, len(path)) + for i, s := range path { + if v, err := strconv.Atoi(s); err == nil { + p[i] = uint16(v) + } else if v, ok := enumMap[s]; ok { + p[i] = v + } else { + count++ + t.Fatalf("Unknown key %q", s) + } + } + wantStr := want.GetCommon().Data() + if got := tree.Lookup(tag, p...); got != wantStr { + count++ + t.Errorf("got %q; want %q", got, wantStr) + } + }) + } + + width := func(s string) string { return "width" + strings.Title(s) } + + if ldml.Dates.Calendars != nil { + for _, cal := range ldml.Dates.Calendars.Calendar { + if cal.Months != nil { + for _, mc := range cal.Months.MonthContext { + for _, mw := range mc.MonthWidth { + for _, m := range mw.Month { + test(m, "calendars", cal.Type, "months", mc.Type, width(mw.Type), m.Yeartype+m.Type) + } + } + } + } + if cal.MonthPatterns != nil { + for _, mc := range cal.MonthPatterns.MonthPatternContext { + for _, mw := range mc.MonthPatternWidth { + for _, m := range mw.MonthPattern { + test(m, "calendars", cal.Type, "monthPatterns", mc.Type, width(mw.Type)) + } + } + } + } + if cal.CyclicNameSets != nil { + for _, cns := range cal.CyclicNameSets.CyclicNameSet { + for _, cc := range cns.CyclicNameContext { + for _, cw := range cc.CyclicNameWidth { + for _, c := range cw.CyclicName { + test(c, "calendars", cal.Type, "cyclicNameSets", cns.Type+"CycleType", cc.Type, width(cw.Type), c.Type) + + } + } + } + } + } + if cal.Days != nil { + for _, dc := range cal.Days.DayContext { + for _, dw := range dc.DayWidth { + for _, d := range dw.Day { + test(d, "calendars", cal.Type, "days", dc.Type, width(dw.Type), d.Type) + } + } + } + } + if cal.Quarters != nil { + for _, qc := range cal.Quarters.QuarterContext { + for _, qw := range qc.QuarterWidth { + for _, q := range qw.Quarter { + test(q, "calendars", cal.Type, "quarters", qc.Type, width(qw.Type), q.Type) + } + } + } + } + if cal.DayPeriods != nil { + for _, dc := range cal.DayPeriods.DayPeriodContext { + for _, dw := range dc.DayPeriodWidth { + for _, d := range dw.DayPeriod { + test(d, "calendars", cal.Type, "dayPeriods", dc.Type, width(dw.Type), d.Type, d.Alt) + } + } + } + } + if cal.Eras != nil { + if cal.Eras.EraNames != nil { + for _, e := range cal.Eras.EraNames.Era { + test(e, "calendars", cal.Type, "eras", "widthWide", e.Alt, e.Type) + } + } + if cal.Eras.EraAbbr != nil { + for _, e := range cal.Eras.EraAbbr.Era { + test(e, "calendars", cal.Type, "eras", "widthAbbreviated", e.Alt, e.Type) + } + } + if cal.Eras.EraNarrow != nil { + for _, e := range cal.Eras.EraNarrow.Era { + test(e, "calendars", cal.Type, "eras", "widthNarrow", e.Alt, e.Type) + } + } + } + if cal.DateFormats != nil { + for _, dfl := range cal.DateFormats.DateFormatLength { + for _, df := range dfl.DateFormat { + for _, p := range df.Pattern { + test(p, "calendars", cal.Type, "dateFormats", dfl.Type, p.Alt) + } + } + } + } + if cal.TimeFormats != nil { + for _, tfl := range cal.TimeFormats.TimeFormatLength { + for _, tf := range tfl.TimeFormat { + for _, p := range tf.Pattern { + test(p, "calendars", cal.Type, "timeFormats", tfl.Type, p.Alt) + } + } + } + } + if cal.DateTimeFormats != nil { + for _, dtfl := range cal.DateTimeFormats.DateTimeFormatLength { + for _, dtf := range dtfl.DateTimeFormat { + for _, p := range dtf.Pattern { + test(p, "calendars", cal.Type, "dateTimeFormats", dtfl.Type, p.Alt) + } + } + } + // TODO: + // - appendItems + // - intervalFormats + } + } + } + // TODO: this is a lot of data and is probably relatively little used. + // Store this somewhere else. + if ldml.Dates.Fields != nil { + for _, f := range ldml.Dates.Fields.Field { + field := f.Type + "Field" + for _, d := range f.DisplayName { + test(d, "fields", field, "displayName", d.Alt) + } + for _, r := range f.Relative { + i, _ := strconv.Atoi(r.Type) + v := []string{"before2", "before1", "current", "after1", "after2", "after3"}[i+2] + test(r, "fields", field, "relative", v) + } + for _, rt := range f.RelativeTime { + for _, p := range rt.RelativeTimePattern { + test(p, "fields", field, "relativeTime", rt.Type, p.Count) + } + } + for _, rp := range f.RelativePeriod { + test(rp, "fields", field, "relativePeriod", rp.Alt) + } + } + } + if ldml.Dates.TimeZoneNames != nil { + for _, h := range ldml.Dates.TimeZoneNames.HourFormat { + test(h, "timeZoneNames", "zoneFormat", h.Element()) + } + for _, g := range ldml.Dates.TimeZoneNames.GmtFormat { + test(g, "timeZoneNames", "zoneFormat", g.Element()) + } + for _, g := range ldml.Dates.TimeZoneNames.GmtZeroFormat { + test(g, "timeZoneNames", "zoneFormat", g.Element()) + } + for _, r := range ldml.Dates.TimeZoneNames.RegionFormat { + s := r.Type + if s == "" { + s = "generic" + } + test(r, "timeZoneNames", "regionFormat", s+"Time") + } + + testZone := func(zoneType, zoneWidth, zone string, a ...[]*cldr.Common) { + for _, e := range a { + for _, n := range e { + test(n, "timeZoneNames", zoneType, zoneWidth, n.Element()+"Time", zone) + } + } + } + for _, z := range ldml.Dates.TimeZoneNames.Zone { + for _, l := range z.Long { + testZone("zone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + for _, l := range z.Short { + testZone("zone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + } + for _, z := range ldml.Dates.TimeZoneNames.Metazone { + for _, l := range z.Long { + testZone("metaZone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + for _, l := range z.Short { + testZone("metaZone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) + } + } + } + } +} diff --git a/vendor/golang.org/x/text/date/tables.go b/vendor/golang.org/x/text/date/tables.go new file mode 100644 index 000000000..a55e306ba --- /dev/null +++ b/vendor/golang.org/x/text/date/tables.go @@ -0,0 +1,64522 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package date + +import "golang.org/x/text/internal/cldrtree" + +var tree = &cldrtree.Tree{locales, indices, buckets} + +// Path values: +// +// - widthAbbreviated +// - widthNarrow +// - widthWide +// - widthAll +// - widthShort +// +// - format +// - stand-alone +// - numeric +// +// - leap7 +// - 1..13 +// +// - dayPartsCycleType +// - daysCycleType +// - monthsCycleType +// - solarTermsCycleType +// - yearsCycleType +// - zodiacsCycleType +// +// - short +// - long +// - full +// - medium +// +// - eraField +// - era-shortField +// - era-narrowField +// - yearField +// - year-shortField +// - year-narrowField +// - quarterField +// - quarter-shortField +// - quarter-narrowField +// - monthField +// - month-shortField +// - month-narrowField +// - weekField +// - week-shortField +// - week-narrowField +// - weekOfMonthField +// - weekOfMonth-shortField +// - weekOfMonth-narrowField +// - dayField +// - day-shortField +// - day-narrowField +// - dayOfYearField +// - dayOfYear-shortField +// - dayOfYear-narrowField +// - weekdayField +// - weekday-shortField +// - weekday-narrowField +// - weekdayOfMonthField +// - weekdayOfMonth-shortField +// - weekdayOfMonth-narrowField +// - sunField +// - sun-shortField +// - sun-narrowField +// - monField +// - mon-shortField +// - mon-narrowField +// - tueField +// - tue-shortField +// - tue-narrowField +// - wedField +// - wed-shortField +// - wed-narrowField +// - thuField +// - thu-shortField +// - thu-narrowField +// - friField +// - fri-shortField +// - fri-narrowField +// - satField +// - sat-shortField +// - sat-narrowField +// - dayperiod-shortField +// - dayperiodField +// - dayperiod-narrowField +// - hourField +// - hour-shortField +// - hour-narrowField +// - minuteField +// - minute-shortField +// - minute-narrowField +// - secondField +// - second-shortField +// - second-narrowField +// - zoneField +// - zone-shortField +// - zone-narrowField +// +// - before1 +// - current +// - after1 +// - before2 +// - after2 +// - after3 +// +// - genericTime +// - daylightTime +// - standardTime +// +// - calendars +// - buddhist +// - chinese +// - coptic +// - dangi +// - ethiopic +// - ethiopic-amete-alem +// - generic +// - gregorian +// - hebrew +// - indian +// - islamic +// - islamic-civil +// - islamic-rgsa +// - islamic-tbla +// - islamic-umalqura +// - japanese +// - persian +// - roc +// - months +// - +// - +// - +// - days +// - +// - +// - sun +// - mon +// - tue +// - wed +// - thu +// - fri +// - sat +// - quarters +// - +// - +// - 0..4 +// - dayPeriods +// - +// - +// - am +// - pm +// - midnight +// - morning1 +// - afternoon1 +// - evening1 +// - night1 +// - noon +// - morning2 +// - afternoon2 +// - night2 +// - evening2 +// - "" +// - variant +// - eras +// - +// - "" +// - variant +// - 0..235 +// - dateFormats +// - +// - "" +// - variant +// - timeFormats +// - +// - "" +// - variant +// - dateTimeFormats +// - +// - "" +// - monthPatterns +// - +// - +// - cyclicNameSets +// - +// - +// - +// - 0..60 +// - fields +// - +// - displayName +// - "" +// - variant +// - relative +// - +// - relativeTime +// - future +// - past +// - other +// - one +// - zero +// - two +// - few +// - many +// - relativePeriod +// - "" +// - timeZoneNames +// - zoneFormat +// - hourFormat +// - gmtFormat +// - gmtZeroFormat +// - regionFormat +// - +// - zone +// - +// - +// - Etc/UTC +// - Europe/London +// - Europe/Dublin +// - Pacific/Honolulu +// - metaZone +// - +// - +// - Afghanistan +// - Africa_Central +// - Africa_Eastern +// - Africa_Southern +// - Africa_Western +// - Alaska +// - Amazon +// - America_Central +// - America_Eastern +// - America_Mountain +// - America_Pacific +// - Anadyr +// - Apia +// - Arabian +// - Argentina +// - Argentina_Western +// - Armenia +// - Atlantic +// - Australia_Central +// - Australia_CentralWestern +// - Australia_Eastern +// - Australia_Western +// - Azerbaijan +// - Azores +// - Bangladesh +// - Bhutan +// - Bolivia +// - Brasilia +// - Brunei +// - Cape_Verde +// - Chamorro +// - Chatham +// - Chile +// - China +// - Choibalsan +// - Christmas +// - Cocos +// - Colombia +// - Cook +// - Cuba +// - Davis +// - DumontDUrville +// - East_Timor +// - Easter +// - Ecuador +// - Europe_Central +// - Europe_Eastern +// - Europe_Further_Eastern +// - Europe_Western +// - Falkland +// - Fiji +// - French_Guiana +// - French_Southern +// - Galapagos +// - Gambier +// - Georgia +// - Gilbert_Islands +// - GMT +// - Greenland_Eastern +// - Greenland_Western +// - Gulf +// - Guyana +// - Hawaii_Aleutian +// - Hong_Kong +// - Hovd +// - India +// - Indian_Ocean +// - Indochina +// - Indonesia_Central +// - Indonesia_Eastern +// - Indonesia_Western +// - Iran +// - Irkutsk +// - Israel +// - Japan +// - Kamchatka +// - Kazakhstan_Eastern +// - Kazakhstan_Western +// - Korea +// - Kosrae +// - Krasnoyarsk +// - Kyrgystan +// - Line_Islands +// - Lord_Howe +// - Macquarie +// - Magadan +// - Malaysia +// - Maldives +// - Marquesas +// - Marshall_Islands +// - Mauritius +// - Mawson +// - Mexico_Northwest +// - Mexico_Pacific +// - Mongolia +// - Moscow +// - Myanmar +// - Nauru +// - Nepal +// - New_Caledonia +// - New_Zealand +// - Newfoundland +// - Niue +// - Norfolk +// - Noronha +// - Novosibirsk +// - Omsk +// - Pakistan +// - Palau +// - Papua_New_Guinea +// - Paraguay +// - Peru +// - Philippines +// - Phoenix_Islands +// - Pierre_Miquelon +// - Pitcairn +// - Ponape +// - Pyongyang +// - Reunion +// - Rothera +// - Sakhalin +// - Samara +// - Samoa +// - Seychelles +// - Singapore +// - Solomon +// - South_Georgia +// - Suriname +// - Syowa +// - Tahiti +// - Taipei +// - Tajikistan +// - Tokelau +// - Tonga +// - Truk +// - Turkmenistan +// - Tuvalu +// - Uruguay +// - Uzbekistan +// - Vanuatu +// - Venezuela +// - Vladivostok +// - Volgograd +// - Vostok +// - Wake +// - Wallis +// - Yakutsk +// - Yekaterinburg +// - Guam +// - North_Mariana +// - Acre +// - Almaty +// - Aqtau +// - Aqtobe +// - Casey +// - Lanka +// - Macau +// - Qyzylorda +// +// Nr elem: 63066 +// uniqued size: 1585832 +// total string size: 2305791 +// bucket waste: 24136 + +// width specifies a property of a CLDR field. +type width uint16 + +// context specifies a property of a CLDR field. +type context uint16 + +// month specifies a property of a CLDR field. +type month uint16 + +// cycleType specifies a property of a CLDR field. +type cycleType uint16 + +// length specifies a property of a CLDR field. +type length uint16 + +// field specifies a property of a CLDR field. +type field uint16 + +// relTime specifies a property of a CLDR field. +type relTime uint16 + +// timeType specifies a property of a CLDR field. +type timeType uint16 + +const ( + calendars = 0 // calendars + fields = 1 // fields + timeZoneNames = 2 // timeZoneNames + buddhist = 0 // buddhist + chinese = 1 // chinese + coptic = 2 // coptic + dangi = 3 // dangi + ethiopic = 4 // ethiopic + ethiopicAmeteAlem = 5 // ethiopic-amete-alem + generic = 6 // generic + gregorian = 7 // gregorian + hebrew = 8 // hebrew + indian = 9 // indian + islamic = 10 // islamic + islamicCivil = 11 // islamic-civil + islamicRgsa = 12 // islamic-rgsa + islamicTbla = 13 // islamic-tbla + islamicUmalqura = 14 // islamic-umalqura + japanese = 15 // japanese + persian = 16 // persian + roc = 17 // roc + months = 0 // months + days = 1 // days + quarters = 2 // quarters + dayPeriods = 3 // dayPeriods + eras = 4 // eras + dateFormats = 5 // dateFormats + timeFormats = 6 // timeFormats + dateTimeFormats = 7 // dateTimeFormats + monthPatterns = 8 // monthPatterns + cyclicNameSets = 9 // cyclicNameSets + format context = 0 // format + standAlone context = 1 // stand-alone + numeric context = 2 // numeric + widthAbbreviated width = 0 // widthAbbreviated + widthNarrow width = 1 // widthNarrow + widthWide width = 2 // widthWide + widthAll width = 3 // widthAll + widthShort width = 4 // widthShort + leap7 month = 0 // leap7 + sun = 0 // sun + mon = 1 // mon + tue = 2 // tue + wed = 3 // wed + thu = 4 // thu + fri = 5 // fri + sat = 6 // sat + am = 0 // am + pm = 1 // pm + midnight = 2 // midnight + morning1 = 3 // morning1 + afternoon1 = 4 // afternoon1 + evening1 = 5 // evening1 + night1 = 6 // night1 + noon = 7 // noon + morning2 = 8 // morning2 + afternoon2 = 9 // afternoon2 + night2 = 10 // night2 + evening2 = 11 // evening2 + variant = 1 // variant + short length = 0 // short + long length = 1 // long + full length = 2 // full + medium length = 3 // medium + dayPartsCycleType cycleType = 0 // dayPartsCycleType + daysCycleType cycleType = 1 // daysCycleType + monthsCycleType cycleType = 2 // monthsCycleType + solarTermsCycleType cycleType = 3 // solarTermsCycleType + yearsCycleType cycleType = 4 // yearsCycleType + zodiacsCycleType cycleType = 5 // zodiacsCycleType + eraField field = 0 // eraField + eraShortField field = 1 // era-shortField + eraNarrowField field = 2 // era-narrowField + yearField field = 3 // yearField + yearShortField field = 4 // year-shortField + yearNarrowField field = 5 // year-narrowField + quarterField field = 6 // quarterField + quarterShortField field = 7 // quarter-shortField + quarterNarrowField field = 8 // quarter-narrowField + monthField field = 9 // monthField + monthShortField field = 10 // month-shortField + monthNarrowField field = 11 // month-narrowField + weekField field = 12 // weekField + weekShortField field = 13 // week-shortField + weekNarrowField field = 14 // week-narrowField + weekOfMonthField field = 15 // weekOfMonthField + weekOfMonthShortField field = 16 // weekOfMonth-shortField + weekOfMonthNarrowField field = 17 // weekOfMonth-narrowField + dayField field = 18 // dayField + dayShortField field = 19 // day-shortField + dayNarrowField field = 20 // day-narrowField + dayOfYearField field = 21 // dayOfYearField + dayOfYearShortField field = 22 // dayOfYear-shortField + dayOfYearNarrowField field = 23 // dayOfYear-narrowField + weekdayField field = 24 // weekdayField + weekdayShortField field = 25 // weekday-shortField + weekdayNarrowField field = 26 // weekday-narrowField + weekdayOfMonthField field = 27 // weekdayOfMonthField + weekdayOfMonthShortField field = 28 // weekdayOfMonth-shortField + weekdayOfMonthNarrowField field = 29 // weekdayOfMonth-narrowField + sunField field = 30 // sunField + sunShortField field = 31 // sun-shortField + sunNarrowField field = 32 // sun-narrowField + monField field = 33 // monField + monShortField field = 34 // mon-shortField + monNarrowField field = 35 // mon-narrowField + tueField field = 36 // tueField + tueShortField field = 37 // tue-shortField + tueNarrowField field = 38 // tue-narrowField + wedField field = 39 // wedField + wedShortField field = 40 // wed-shortField + wedNarrowField field = 41 // wed-narrowField + thuField field = 42 // thuField + thuShortField field = 43 // thu-shortField + thuNarrowField field = 44 // thu-narrowField + friField field = 45 // friField + friShortField field = 46 // fri-shortField + friNarrowField field = 47 // fri-narrowField + satField field = 48 // satField + satShortField field = 49 // sat-shortField + satNarrowField field = 50 // sat-narrowField + dayperiodShortField field = 51 // dayperiod-shortField + dayperiodField field = 52 // dayperiodField + dayperiodNarrowField field = 53 // dayperiod-narrowField + hourField field = 54 // hourField + hourShortField field = 55 // hour-shortField + hourNarrowField field = 56 // hour-narrowField + minuteField field = 57 // minuteField + minuteShortField field = 58 // minute-shortField + minuteNarrowField field = 59 // minute-narrowField + secondField field = 60 // secondField + secondShortField field = 61 // second-shortField + secondNarrowField field = 62 // second-narrowField + zoneField field = 63 // zoneField + zoneShortField field = 64 // zone-shortField + zoneNarrowField field = 65 // zone-narrowField + displayName = 0 // displayName + relative = 1 // relative + relativeTime = 2 // relativeTime + relativePeriod = 3 // relativePeriod + before1 relTime = 0 // before1 + current relTime = 1 // current + after1 relTime = 2 // after1 + before2 relTime = 3 // before2 + after2 relTime = 4 // after2 + after3 relTime = 5 // after3 + future = 0 // future + past = 1 // past + other = 0 // other + one = 1 // one + zero = 2 // zero + two = 3 // two + few = 4 // few + many = 5 // many + zoneFormat = 0 // zoneFormat + regionFormat = 1 // regionFormat + zone = 2 // zone + metaZone = 3 // metaZone + hourFormat = 0 // hourFormat + gmtFormat = 1 // gmtFormat + gmtZeroFormat = 2 // gmtZeroFormat + genericTime timeType = 0 // genericTime + daylightTime timeType = 1 // daylightTime + standardTime timeType = 2 // standardTime + EtcUTC = 0 // Etc/UTC + EuropeLondon = 1 // Europe/London + EuropeDublin = 2 // Europe/Dublin + PacificHonolulu = 3 // Pacific/Honolulu + Afghanistan = 0 // Afghanistan + Africa_Central = 1 // Africa_Central + Africa_Eastern = 2 // Africa_Eastern + Africa_Southern = 3 // Africa_Southern + Africa_Western = 4 // Africa_Western + Alaska = 5 // Alaska + Amazon = 6 // Amazon + America_Central = 7 // America_Central + America_Eastern = 8 // America_Eastern + America_Mountain = 9 // America_Mountain + America_Pacific = 10 // America_Pacific + Anadyr = 11 // Anadyr + Apia = 12 // Apia + Arabian = 13 // Arabian + Argentina = 14 // Argentina + Argentina_Western = 15 // Argentina_Western + Armenia = 16 // Armenia + Atlantic = 17 // Atlantic + Australia_Central = 18 // Australia_Central + Australia_CentralWestern = 19 // Australia_CentralWestern + Australia_Eastern = 20 // Australia_Eastern + Australia_Western = 21 // Australia_Western + Azerbaijan = 22 // Azerbaijan + Azores = 23 // Azores + Bangladesh = 24 // Bangladesh + Bhutan = 25 // Bhutan + Bolivia = 26 // Bolivia + Brasilia = 27 // Brasilia + Brunei = 28 // Brunei + Cape_Verde = 29 // Cape_Verde + Chamorro = 30 // Chamorro + Chatham = 31 // Chatham + Chile = 32 // Chile + China = 33 // China + Choibalsan = 34 // Choibalsan + Christmas = 35 // Christmas + Cocos = 36 // Cocos + Colombia = 37 // Colombia + Cook = 38 // Cook + Cuba = 39 // Cuba + Davis = 40 // Davis + DumontDUrville = 41 // DumontDUrville + East_Timor = 42 // East_Timor + Easter = 43 // Easter + Ecuador = 44 // Ecuador + Europe_Central = 45 // Europe_Central + Europe_Eastern = 46 // Europe_Eastern + Europe_Further_Eastern = 47 // Europe_Further_Eastern + Europe_Western = 48 // Europe_Western + Falkland = 49 // Falkland + Fiji = 50 // Fiji + French_Guiana = 51 // French_Guiana + French_Southern = 52 // French_Southern + Galapagos = 53 // Galapagos + Gambier = 54 // Gambier + Georgia = 55 // Georgia + Gilbert_Islands = 56 // Gilbert_Islands + GMT = 57 // GMT + Greenland_Eastern = 58 // Greenland_Eastern + Greenland_Western = 59 // Greenland_Western + Gulf = 60 // Gulf + Guyana = 61 // Guyana + Hawaii_Aleutian = 62 // Hawaii_Aleutian + Hong_Kong = 63 // Hong_Kong + Hovd = 64 // Hovd + India = 65 // India + Indian_Ocean = 66 // Indian_Ocean + Indochina = 67 // Indochina + Indonesia_Central = 68 // Indonesia_Central + Indonesia_Eastern = 69 // Indonesia_Eastern + Indonesia_Western = 70 // Indonesia_Western + Iran = 71 // Iran + Irkutsk = 72 // Irkutsk + Israel = 73 // Israel + Japan = 74 // Japan + Kamchatka = 75 // Kamchatka + Kazakhstan_Eastern = 76 // Kazakhstan_Eastern + Kazakhstan_Western = 77 // Kazakhstan_Western + Korea = 78 // Korea + Kosrae = 79 // Kosrae + Krasnoyarsk = 80 // Krasnoyarsk + Kyrgystan = 81 // Kyrgystan + Line_Islands = 82 // Line_Islands + Lord_Howe = 83 // Lord_Howe + Macquarie = 84 // Macquarie + Magadan = 85 // Magadan + Malaysia = 86 // Malaysia + Maldives = 87 // Maldives + Marquesas = 88 // Marquesas + Marshall_Islands = 89 // Marshall_Islands + Mauritius = 90 // Mauritius + Mawson = 91 // Mawson + Mexico_Northwest = 92 // Mexico_Northwest + Mexico_Pacific = 93 // Mexico_Pacific + Mongolia = 94 // Mongolia + Moscow = 95 // Moscow + Myanmar = 96 // Myanmar + Nauru = 97 // Nauru + Nepal = 98 // Nepal + New_Caledonia = 99 // New_Caledonia + New_Zealand = 100 // New_Zealand + Newfoundland = 101 // Newfoundland + Niue = 102 // Niue + Norfolk = 103 // Norfolk + Noronha = 104 // Noronha + Novosibirsk = 105 // Novosibirsk + Omsk = 106 // Omsk + Pakistan = 107 // Pakistan + Palau = 108 // Palau + Papua_New_Guinea = 109 // Papua_New_Guinea + Paraguay = 110 // Paraguay + Peru = 111 // Peru + Philippines = 112 // Philippines + Phoenix_Islands = 113 // Phoenix_Islands + Pierre_Miquelon = 114 // Pierre_Miquelon + Pitcairn = 115 // Pitcairn + Ponape = 116 // Ponape + Pyongyang = 117 // Pyongyang + Reunion = 118 // Reunion + Rothera = 119 // Rothera + Sakhalin = 120 // Sakhalin + Samara = 121 // Samara + Samoa = 122 // Samoa + Seychelles = 123 // Seychelles + Singapore = 124 // Singapore + Solomon = 125 // Solomon + South_Georgia = 126 // South_Georgia + Suriname = 127 // Suriname + Syowa = 128 // Syowa + Tahiti = 129 // Tahiti + Taipei = 130 // Taipei + Tajikistan = 131 // Tajikistan + Tokelau = 132 // Tokelau + Tonga = 133 // Tonga + Truk = 134 // Truk + Turkmenistan = 135 // Turkmenistan + Tuvalu = 136 // Tuvalu + Uruguay = 137 // Uruguay + Uzbekistan = 138 // Uzbekistan + Vanuatu = 139 // Vanuatu + Venezuela = 140 // Venezuela + Vladivostok = 141 // Vladivostok + Volgograd = 142 // Volgograd + Vostok = 143 // Vostok + Wake = 144 // Wake + Wallis = 145 // Wallis + Yakutsk = 146 // Yakutsk + Yekaterinburg = 147 // Yekaterinburg + Guam = 148 // Guam + North_Mariana = 149 // North_Mariana + Acre = 150 // Acre + Almaty = 151 // Almaty + Aqtau = 152 // Aqtau + Aqtobe = 153 // Aqtobe + Casey = 154 // Casey + Lanka = 155 // Lanka + Macau = 156 // Macau + Qyzylorda = 157 // Qyzylorda +) + +var locales = []uint32{ // 754 elements + // Entry 0 - 1F + 0x00000000, 0x000087fc, 0x0000fce9, 0x00000794, + 0x00000fc1, 0x00000794, 0x00000ff6, 0x00000ff6, + 0x00001156, 0x00001156, 0x00001296, 0x00001296, + 0x00001bff, 0x00001bff, 0x0000286a, 0x00001bff, + 0x00001bff, 0x00002899, 0x00001bff, 0x00001bff, + 0x00001bff, 0x0000290b, 0x0000292f, 0x000029a1, + 0x00002a13, 0x00001bff, 0x00002a37, 0x00002aa9, + 0x00002b24, 0x00002bad, 0x00001bff, 0x00002c1f, + // Entry 20 - 3F + 0x00001bff, 0x00002c91, 0x00001bff, 0x00001bff, + 0x00001bff, 0x00002d0c, 0x00001bff, 0x00002d7e, + 0x00001bff, 0x00000000, 0x00002df0, 0x00002df0, + 0x00002fae, 0x00002fae, 0x00003115, 0x00003115, + 0x0000406c, 0x000048b3, 0x000048b3, 0x0000406c, + 0x0000406c, 0x00004aca, 0x00004aca, 0x00004c31, + 0x00004c31, 0x0000552d, 0x0000552d, 0x0000565d, + 0x0000565d, 0x000057c4, 0x000057c4, 0x00000000, + // Entry 40 - 5F + 0x0000605c, 0x0000605c, 0x000061a6, 0x000061a6, + 0x000061a6, 0x00006ac4, 0x00006ac4, 0x00006ac4, + 0x00006c55, 0x00006c55, 0x000073c6, 0x000073c6, + 0x00007768, 0x000081e0, 0x000081e0, 0x00007768, + 0x00007768, 0x000087fc, 0x000087fc, 0x000087fc, + 0x000087fc, 0x000087fc, 0x00009273, 0x00009273, + 0x00009797, 0x00009797, 0x000098de, 0x000098de, + 0x0000a192, 0x0000a192, 0x0000a487, 0x0000a4ab, + // Entry 60 - 7F + 0x0000a4ab, 0x0000b6fd, 0x0000b6fd, 0x0000bb5a, + 0x0000bb5a, 0x0000c4ef, 0x0000c4ef, 0x0000ce6b, + 0x0000ce8f, 0x0000ce8f, 0x0000cff1, 0x0000d9bd, + 0x0000cff1, 0x0000cff1, 0x0000cff1, 0x0000da23, + 0x0000da77, 0x0000da96, 0x0000dab8, 0x0000dab8, + 0x0000dc1a, 0x0000dc1a, 0x0000e38b, 0x0000e38b, + 0x00000000, 0x0000e4ea, 0x0000e4ea, 0x0000e601, + 0x0000e601, 0x0000ea5c, 0x0000ea5c, 0x0000ebbe, + // Entry 80 - 9F + 0x0000ebbe, 0x0000f3bd, 0x0000f3e1, 0x0000f3e1, + 0x0000f3e1, 0x0000fce9, 0x000105fd, 0x00010948, + 0x000105fd, 0x00010a12, 0x0000fce9, 0x00010948, + 0x00010a36, 0x000105fd, 0x00010e74, 0x0000fce9, + 0x000105fd, 0x000105fd, 0x00010eb5, 0x00010f24, + 0x00010f71, 0x000112b2, 0x00010948, 0x000112d6, + 0x000112fa, 0x00011340, 0x000105fd, 0x00010948, + 0x00011364, 0x00011388, 0x000105fd, 0x000113b6, + // Entry A0 - BF + 0x000113da, 0x000105fd, 0x00011408, 0x000105fd, + 0x0001142c, 0x000105fd, 0x0001153b, 0x0001155f, + 0x00011583, 0x000115a7, 0x000115cb, 0x000115fb, + 0x0001164a, 0x00011750, 0x000117ac, 0x000117da, + 0x000117fe, 0x00011885, 0x000118a9, 0x000118cd, + 0x000118f4, 0x000105fd, 0x000105fd, 0x000105fd, + 0x000105fd, 0x0001193a, 0x0001195e, 0x00011982, + 0x000119c8, 0x00011ab2, 0x00011c9e, 0x00011d88, + // Entry C0 - DF + 0x00011dac, 0x00011df0, 0x00011e36, 0x00011e5a, + 0x00011ec2, 0x00011ee6, 0x00011f0a, 0x00010948, + 0x00011f2e, 0x00011f52, 0x00011f76, 0x000105fd, + 0x000105fd, 0x000120eb, 0x00012118, 0x0000fce9, + 0x000105fd, 0x0001213c, 0x000105fd, 0x00012182, + 0x000121a6, 0x000121ca, 0x000121f1, 0x000122ee, + 0x00010948, 0x00012312, 0x00012336, 0x0001235a, + 0x0001237e, 0x000105fd, 0x000123a2, 0x000105fd, + // Entry E0 - FF + 0x000105fd, 0x000123c6, 0x000123ea, 0x00012430, + 0x0000fce9, 0x0000fce9, 0x000105fd, 0x000105fd, + 0x0000fce9, 0x000105fd, 0x000105fd, 0x00012476, + 0x000124e8, 0x0001250c, 0x0001257e, 0x0001257e, + 0x0001292f, 0x0001328c, 0x000135d1, 0x00013739, + 0x0001328c, 0x0001328c, 0x00013804, 0x00013953, + 0x00013af9, 0x0001328c, 0x00013b87, 0x0001292f, + 0x00013cb4, 0x0001292f, 0x0001292f, 0x00013d80, + // Entry 100 - 11F + 0x00013e31, 0x0001292f, 0x00013eb9, 0x000142ff, + 0x00014366, 0x0001445a, 0x00014663, 0x00014687, + 0x00014703, 0x00014828, 0x000148b6, 0x00014a3a, + 0x00014c7a, 0x00014e57, 0x00014e57, 0x000156e8, + 0x000156e8, 0x00015fa2, 0x00015fa2, 0x00016109, + 0x00016b48, 0x00016109, 0x00016cb3, 0x00016cb3, + 0x00016cb3, 0x00016e1a, 0x00016cb3, 0x00016e3e, + 0x00016e3e, 0x000177c3, 0x000177c3, 0x00018020, + // Entry 120 - 13F + 0x00018020, 0x00018020, 0x000187c2, 0x00019905, + 0x000187c2, 0x000187c2, 0x000187c2, 0x000187c2, + 0x00019932, 0x00019e03, 0x000187c2, 0x000187c2, + 0x00019e42, 0x000187c2, 0x00019ee3, 0x00019f38, + 0x00019f5c, 0x000187c2, 0x000187c2, 0x00019f80, + 0x000187c2, 0x000187c2, 0x000187c2, 0x00019fc5, + 0x000187c2, 0x000187c2, 0x0001a092, 0x000187c2, + 0x000187c2, 0x000187c2, 0x0001a0d6, 0x000187c2, + // Entry 140 - 15F + 0x0001a10e, 0x000187c2, 0x000187c2, 0x000187c2, + 0x000187c2, 0x000187c2, 0x0001a132, 0x000187c2, + 0x000187c2, 0x0001a173, 0x0001a1d0, 0x0001a1f4, + 0x000187c2, 0x0001a218, 0x0001a23c, 0x000187c2, + 0x000187c2, 0x0001a260, 0x0001a260, 0x0001a65c, + 0x0001a65c, 0x0001b10a, 0x0001b10a, 0x0001bb54, + 0x0001bb54, 0x0001c3d1, 0x0001c3d1, 0x0001ccae, + 0x0001ccae, 0x0001ccae, 0x0001ccae, 0x0001d166, + // Entry 160 - 17F + 0x0001d166, 0x00000000, 0x0001da04, 0x0001da04, + 0x0001db6b, 0x0001db6b, 0x0001dcc3, 0x0001dcc3, + 0x0001dcc3, 0x0001dcc3, 0x0001decb, 0x0001decb, + 0x0001e154, 0x0001e154, 0x0001ec65, 0x0001ec65, + 0x0001f65c, 0x000203e3, 0x0001f65c, 0x00020414, + 0x00020414, 0x00020b85, 0x00020b85, 0x00021721, + 0x00021721, 0x00021f4b, 0x00021f4b, 0x00022ceb, + 0x00022ceb, 0x00022f22, 0x00022f22, 0x000230eb, + // Entry 180 - 19F + 0x000230eb, 0x0002382f, 0x00024163, 0x0002382f, + 0x0002382f, 0x0002382f, 0x00000000, 0x0002419f, + 0x0002419f, 0x00000000, 0x00025200, 0x00025200, + 0x000253e9, 0x000253e9, 0x00000000, 0x0002554b, + 0x0002554b, 0x00025ecf, 0x00025ecf, 0x00000000, + 0x00026036, 0x00026036, 0x00000000, 0x0002619d, + 0x0002619d, 0x00026304, 0x00026304, 0x000267e4, + 0x000267e4, 0x00026946, 0x00026946, 0x00026aa8, + // Entry 1A0 - 1BF + 0x00026aa8, 0x00027377, 0x00027377, 0x00027480, + 0x00027480, 0x00027742, 0x00027742, 0x000278a9, + 0x000278a9, 0x00028097, 0x00028097, 0x0002892a, + 0x000295ba, 0x0002892a, 0x000296bd, 0x000296bd, + 0x000297f1, 0x000297f1, 0x00029b68, 0x00029b68, + 0x00029ccf, 0x00029ccf, 0x00029e23, 0x00029e23, + 0x00000000, 0x0002a2a0, 0x0002a2a0, 0x0002a453, + 0x0002a453, 0x0002ac98, 0x0002ac98, 0x0002adff, + // Entry 1C0 - 1DF + 0x0002adff, 0x0002b4fc, 0x0002b4fc, 0x0002b64b, + 0x0002b64b, 0x0002b7c5, 0x0002b7c5, 0x0002b7c5, + 0x0002b7c5, 0x0002b7c5, 0x0002b9ba, 0x0002b9ba, + 0x0002c644, 0x0002c872, 0x0002c644, 0x0002c896, + 0x0002c896, 0x0002d8a6, 0x0002d8a6, 0x0002da0d, + 0x0002da0d, 0x0002db74, 0x0002db74, 0x0002dcdb, + 0x0002dcdb, 0x0002e618, 0x0002e618, 0x0002e618, + 0x0002e76c, 0x0002e76c, 0x0002e8cc, 0x0002e8cc, + // Entry 1E0 - 1FF + 0x0002ea1b, 0x0002ea1b, 0x0002ec31, 0x0002ec31, + 0x0002ed77, 0x0002ed77, 0x0002ef94, 0x0002ef94, + 0x0002f891, 0x0002f891, 0x000301f1, 0x000301f1, + 0x00030a0a, 0x00030a0a, 0x000312e1, 0x00031c04, + 0x000312e1, 0x000312e1, 0x00031c2b, 0x00031c2b, + 0x00031fe6, 0x00031fe6, 0x00032148, 0x00032148, + 0x00032926, 0x00032926, 0x00000000, 0x00032c3a, + 0x00032c3a, 0x00032da1, 0x00032da1, 0x00032da1, + // Entry 200 - 21F + 0x00033cfe, 0x00033cfe, 0x00033e43, 0x00033e43, + 0x00033e43, 0x000341f0, 0x00034a3a, 0x000341f0, + 0x00034aaf, 0x00034aaf, 0x00035948, 0x00034aaf, + 0x00034aaf, 0x00034aaf, 0x0003596f, 0x00034aaf, + 0x00035a00, 0x00035a00, 0x00035b4f, 0x00035b4f, + 0x00035f9b, 0x00035f9b, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x000360fa, 0x000360fa, + 0x00000000, 0x00036254, 0x00036254, 0x000363a3, + // Entry 220 - 23F + 0x000363a3, 0x00036543, 0x000365a2, 0x000365a2, + 0x00036725, 0x00036725, 0x00036725, 0x00036a76, + 0x00037378, 0x00037378, 0x00036a76, 0x00036a76, + 0x00000000, 0x00037473, 0x00037473, 0x00038120, + 0x00038120, 0x00038420, 0x00038420, 0x000387e2, + 0x0003941e, 0x000387e2, 0x00039788, 0x000394c6, + 0x00039788, 0x0003956e, 0x00039788, 0x00039616, + 0x000396e0, 0x00039788, 0x00039f24, 0x00039fcc, + // Entry 240 - 25F + 0x0003a074, 0x0003a370, 0x0003a4d5, 0x0003a074, + 0x0003a63a, 0x0003a63a, 0x0003a872, 0x0003a872, + 0x0003a9b9, 0x0003b485, 0x0003a9b9, 0x0003b56e, + 0x0003b56e, 0x0003b6d5, 0x0003b6d5, 0x0003b6d5, + 0x0003b6d5, 0x0003b6d5, 0x0003b6d5, 0x0003c405, + 0x0003c49d, 0x0003c49d, 0x0003c649, 0x0003c649, + 0x0003c7ab, 0x0003c7ab, 0x0003cde5, 0x0003cde5, + 0x0003cf47, 0x0003cf47, 0x00000000, 0x0003d09b, + // Entry 260 - 27F + 0x0003d513, 0x0003d09b, 0x0003d09b, 0x0003d5a5, + 0x0003d5a5, 0x0003d6c4, 0x0003d6c4, 0x0003d826, + 0x0003d826, 0x0003d98d, 0x0003dad6, 0x0003dad6, + 0x0003d98d, 0x0003d98d, 0x0003dc1f, 0x0003dc1f, + 0x0003e494, 0x0003e494, 0x0003eec5, 0x0003eec5, + 0x00000000, 0x00000000, 0x00000000, 0x0003f808, + 0x0003f808, 0x00000000, 0x0003f9c6, 0x0003f9c6, + 0x0003fbf9, 0x0003fbf9, 0x0003fbf9, 0x0003ffeb, + // Entry 280 - 29F + 0x0003fbf9, 0x0004000f, 0x0004000f, 0x00040861, + 0x00040885, 0x000408a9, 0x000408a9, 0x00041494, + 0x0004157e, 0x000408a9, 0x00041663, 0x00041702, + 0x000422ed, 0x000423d7, 0x00041702, 0x000424bc, + 0x00000000, 0x00000000, 0x00000000, 0x0004255b, + 0x0004255b, 0x00043230, 0x0004255b, 0x0004325c, + 0x00043a83, 0x00043af1, 0x0004325c, 0x0004325c, + 0x00000000, 0x00043b4c, 0x00043b4c, 0x000444c2, + // Entry 2A0 - 2BF + 0x000444e6, 0x00044574, 0x00044602, 0x00044602, + 0x00044ebd, 0x00044ebd, 0x00044ebd, 0x0004501f, + 0x0004501f, 0x00045e99, 0x00046028, 0x00045e99, + 0x00000000, 0x00046066, 0x00046066, 0x00000000, + 0x000466e8, 0x000466e8, 0x00046e6c, 0x000477df, + 0x00046e6c, 0x00000000, 0x00047803, 0x00047803, + 0x00047965, 0x00047965, 0x00047abb, 0x00047abb, + 0x00048084, 0x00048084, 0x00048d10, 0x0004957c, + // Entry 2C0 - 2DF + 0x00048d10, 0x000498d6, 0x0004a106, 0x0004a106, + 0x0004a1ab, 0x0004a1ab, 0x000498d6, 0x000498d6, + 0x0004a719, 0x0004a7fa, 0x0004a7fa, 0x0004a719, + 0x0004a719, 0x00000000, 0x0004a8db, 0x0004a8db, + 0x0004b3c4, 0x0004b3c4, 0x0004b56c, 0x0004b56c, + 0x00000000, 0x0004b6ce, 0x0004b6ce, 0x00000000, + 0x00000000, 0x0004ba04, 0x0004ba04, 0x0004bb6b, + 0x0004bb6b, 0x0004bcbf, 0x0004bcbf, 0x0004bf8d, + // Entry 2E0 - 2FF + 0x0004c1b3, 0x0004bf8d, 0x0004c313, 0x0004c313, + 0x0004d16c, 0x0004d16c, 0x0004d398, 0x0004d398, + 0x0004d398, 0x0004e1b0, 0x0004e278, 0x0004e324, + 0x0004e475, 0x0004f2d2, 0x0004f2d2, 0x0004e475, + 0x0004f7f4, 0x0004f7f4, +} // Size: 3040 bytes + +var indices = []uint16{ // 327671 elements + // Entry 0 - 3F + 0x0003, 0x0004, 0x05ef, 0x077c, 0x0012, 0x0017, 0x0029, 0x011a, + 0x0158, 0x0163, 0x01a1, 0x01b3, 0x0211, 0x02ce, 0x030b, 0x0346, + 0x0390, 0x0399, 0x03a2, 0x03ab, 0x03b4, 0x05a1, 0x05dc, 0x0008, + 0x9007, 0x9007, 0x9007, 0x9007, 0x0020, 0x9006, 0x9007, 0x9006, + 0x0003, 0x0024, 0x8000, 0x8000, 0x0001, 0x0026, 0x0001, 0x0000, + 0x0000, 0x000a, 0x0034, 0x9007, 0x9007, 0x9007, 0x0000, 0x00f8, + 0x9007, 0x0109, 0x005d, 0x0070, 0x0002, 0x0037, 0x004a, 0x0003, + 0x8002, 0x9001, 0x003b, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, + // Entry 40 - 7F + 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, + 0x002b, 0x002f, 0x0003, 0x9000, 0x004e, 0x9000, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, 0x0061, 0x006c, + 0x0066, 0x0003, 0x0000, 0xffff, 0xffff, 0x004e, 0x0004, 0x0000, + 0xffff, 0xffff, 0xffff, 0x004e, 0x0002, 0x0000, 0xffff, 0x0055, + 0x0006, 0x0077, 0x8004, 0x8004, 0x008c, 0x00ad, 0x00f2, 0x0001, + 0x0079, 0x0003, 0x007d, 0x8000, 0x8000, 0x000d, 0x0000, 0xffff, + // Entry 80 - BF + 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, + 0x0079, 0x007e, 0x0082, 0x0085, 0x0001, 0x008e, 0x0003, 0x0092, + 0x8000, 0x8000, 0x0019, 0x0000, 0xffff, 0x0089, 0x0097, 0x00a2, + 0x00b1, 0x00c0, 0x00d1, 0x00dc, 0x00ea, 0x00f5, 0x0102, 0x0112, + 0x011d, 0x0128, 0x0136, 0x0142, 0x014c, 0x015b, 0x0164, 0x0173, + 0x0181, 0x018c, 0x0197, 0x01a7, 0x01b2, 0x0001, 0x00af, 0x0003, + 0x00b3, 0x8000, 0x8000, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, + 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, + // Entry C0 - FF + 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, + 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, + 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, + 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, + 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, + 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, + 0x0389, 0x0390, 0x0001, 0x00f4, 0x0003, 0xa000, 0x8000, 0x8000, + 0x0004, 0x0106, 0x0100, 0x00fd, 0x0103, 0x0001, 0x0000, 0x0398, + // Entry 100 - 13F + 0x0001, 0x0000, 0x03aa, 0x0001, 0x0000, 0x03b6, 0x0001, 0x0000, + 0x03be, 0x0004, 0x0117, 0x0111, 0x010e, 0x0114, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0008, 0x0123, 0x9007, 0x9007, 0x9007, 0x014e, + 0x9006, 0x9007, 0x9006, 0x0002, 0x0126, 0x013a, 0x0003, 0x8002, + 0x9001, 0x012a, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, + 0x03de, 0x03e4, 0x03e9, 0x03f0, 0x03f9, 0x0403, 0x040b, 0x0411, + 0x0416, 0x041c, 0x0003, 0x9000, 0x013e, 0x9000, 0x000e, 0x0000, + // Entry 140 - 17F + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x0003, 0x0152, + 0x8000, 0x8000, 0x0001, 0x0154, 0x0002, 0x0000, 0x0425, 0x042a, + 0x000a, 0x9001, 0x9001, 0x9001, 0x9001, 0x0000, 0x9001, 0x9001, + 0x9001, 0x9001, 0x9001, 0x0008, 0x016c, 0x9007, 0x9007, 0x9007, + 0x0197, 0x9006, 0x9007, 0x9006, 0x0002, 0x016f, 0x0183, 0x0003, + 0x8002, 0x9001, 0x0173, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, + 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, 0x046e, + // Entry 180 - 1BF + 0x0473, 0x0479, 0x0481, 0x0003, 0x9000, 0x0187, 0x9000, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, + 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x0003, + 0x019b, 0x8000, 0x8000, 0x0001, 0x019d, 0x0002, 0x0000, 0x0425, + 0x042a, 0x0008, 0x9004, 0x9004, 0x9004, 0x9004, 0x01aa, 0x9004, + 0x9004, 0x9004, 0x0003, 0x01ae, 0x8000, 0x8000, 0x0001, 0x01b0, + 0x0001, 0x0000, 0x0425, 0x0008, 0x01bc, 0x9007, 0x9007, 0x9007, + 0x01e5, 0x01ef, 0x9007, 0x0200, 0x0002, 0x01bf, 0x01d2, 0x0003, + // Entry 1C0 - 1FF + 0x8002, 0x9001, 0x01c3, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, + 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, + 0x002b, 0x002f, 0x0003, 0x9000, 0x01d6, 0x9000, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, 0x01e9, 0x8000, + 0x8000, 0x0001, 0x01eb, 0x0002, 0x0000, 0x0425, 0x042a, 0x0004, + 0x01fd, 0x01f7, 0x01f4, 0x01fa, 0x0001, 0x0000, 0x0489, 0x0001, + 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, + // Entry 200 - 23F + 0x0004, 0x020e, 0x0208, 0x0205, 0x020b, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0008, 0x021a, 0x0243, 0x0264, 0x027d, 0x0291, 0x029b, + 0x02ac, 0x02bd, 0x0002, 0x021d, 0x0230, 0x0003, 0x8002, 0x9001, + 0x0221, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, 0x000b, 0x000f, + 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, + 0x0003, 0x9000, 0x0234, 0x9000, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + // Entry 240 - 27F + 0x0045, 0x0048, 0x004b, 0x0002, 0x0246, 0x0255, 0x0005, 0x8002, + 0x9001, 0x024c, 0x0000, 0x8000, 0x0007, 0x0000, 0x04bd, 0x04c1, + 0x04c5, 0x04c9, 0x04cd, 0x04d1, 0x04d5, 0x0005, 0x9000, 0x025b, + 0x9000, 0x0000, 0x9000, 0x0007, 0x0000, 0x04d9, 0x04db, 0x04dd, + 0x04df, 0x04dd, 0x04e1, 0x04d9, 0x0002, 0x0267, 0x0272, 0x0003, + 0x8002, 0x9001, 0x026b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, + 0x04e9, 0x04ec, 0x0003, 0x9000, 0x0276, 0x9000, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0002, 0x0280, 0x028d, + // Entry 280 - 2BF + 0x0003, 0x0284, 0x8000, 0x8000, 0x0002, 0x0287, 0x028a, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x9000, 0x8000, + 0x8000, 0x0003, 0x0295, 0x8000, 0x8000, 0x0001, 0x0297, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0004, 0x02a9, 0x02a3, 0x02a0, 0x02a6, + 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, + 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x02ba, 0x02b4, 0x02b1, + 0x02b7, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x02cb, 0x02c5, + // Entry 2C0 - 2FF + 0x02c2, 0x02c8, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x02d7, + 0x9007, 0x9007, 0x9007, 0x0302, 0x9006, 0x9007, 0x9006, 0x0002, + 0x02da, 0x02ee, 0x0003, 0x8002, 0x9001, 0x02de, 0x000e, 0x0000, + 0x057b, 0x054c, 0x0553, 0x055b, 0x0562, 0x0568, 0x056f, 0x0576, + 0x0583, 0x0589, 0x058e, 0x0594, 0x059a, 0x059d, 0x0003, 0x9000, + 0x02f2, 0x9000, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, + 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, + // Entry 300 - 33F + 0x004b, 0x0422, 0x0003, 0x0306, 0x8000, 0x8000, 0x0001, 0x0308, + 0x0001, 0x0000, 0x04ef, 0x0008, 0x0314, 0x9007, 0x9007, 0x9007, + 0x033d, 0x9006, 0x9007, 0x9006, 0x0002, 0x0317, 0x032a, 0x0003, + 0x8002, 0x9001, 0x031b, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, + 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, + 0x05f2, 0x05f8, 0x0003, 0x9000, 0x032e, 0x9000, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, 0x0341, 0x8000, + // Entry 340 - 37F + 0x8000, 0x0001, 0x0343, 0x0001, 0x0000, 0x0601, 0x0008, 0x034f, + 0x9007, 0x9007, 0x9007, 0x0387, 0x9006, 0x9007, 0x9006, 0x0002, + 0x0352, 0x0374, 0x0003, 0x0356, 0x9001, 0x0365, 0x000d, 0x0000, + 0xffff, 0x0606, 0x060b, 0x0610, 0x0617, 0x061f, 0x0626, 0x062e, + 0x0633, 0x0638, 0x063d, 0x0643, 0x064d, 0x000d, 0x0000, 0xffff, + 0x0657, 0x0660, 0x0666, 0x066f, 0x0679, 0x0682, 0x068c, 0x0692, + 0x069b, 0x06a3, 0x06ab, 0x06ba, 0x0003, 0x9000, 0x0378, 0x9000, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, + // Entry 380 - 3BF + 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, + 0x038b, 0x8000, 0x8000, 0x0001, 0x038d, 0x0001, 0x0000, 0x06c8, + 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, + 0x900a, 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, + 0x900a, 0x900a, 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, + 0x900a, 0x900a, 0x900a, 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, + 0x900a, 0x900a, 0x900a, 0x900a, 0x0008, 0x9007, 0x9007, 0x9007, + 0x9007, 0x03bd, 0x9006, 0x9007, 0x9006, 0x0003, 0x03c1, 0x04b1, + // Entry 3C0 - 3FF + 0x8000, 0x0001, 0x03c3, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, + 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, + 0x079b, 0x07b6, 0x07d2, 0x07ec, 0x0806, 0x081e, 0x0830, 0x0843, + 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x08da, + 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, + 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, + 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, + 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, + // Entry 400 - 43F + 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, + 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, 0x0c74, 0x0c89, 0x0c9f, + 0x0cb3, 0x0cc8, 0x0cdd, 0x0cf2, 0x0d07, 0x0d1c, 0x0d33, 0x0d47, + 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, + 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, + 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, + 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, + 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, + // Entry 440 - 47F + 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, 0x1110, 0x1124, 0x1139, + 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, 0x11ba, 0x11d0, 0x11e7, + 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x128b, + 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, 0x1308, 0x131f, 0x1335, + 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, + 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, + 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, 0x150b, 0x1522, 0x1538, + 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, + // Entry 480 - 4BF + 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, 0x1661, 0x1676, 0x168a, + 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, 0x170c, 0x1720, 0x1734, + 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, 0x17b1, 0x17c7, 0x17db, + 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, 0x185e, 0x1874, 0x1888, + 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, + 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, 0x19ab, 0x19b1, 0x19b9, + 0x19c0, 0x0001, 0x04b3, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, + 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, + // Entry 4C0 - 4FF + 0x079b, 0x07b6, 0x07d2, 0x07ec, 0x0806, 0x081e, 0x0830, 0x0843, + 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x08da, + 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, + 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, + 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, + 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, + 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, + 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, 0x0c74, 0x0c89, 0x0c9f, + // Entry 500 - 53F + 0x0cb3, 0x0cc8, 0x0cdd, 0x0cf2, 0x0d07, 0x0d1c, 0x0d33, 0x0d47, + 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, + 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, + 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, + 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, + 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, + 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, 0x1110, 0x1124, 0x1139, + 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, 0x11ba, 0x11d0, 0x11e7, + // Entry 540 - 57F + 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x128b, + 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, 0x1308, 0x131f, 0x1335, + 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, + 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, + 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, 0x150b, 0x1522, 0x1538, + 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, + 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, 0x1661, 0x1676, 0x168a, + 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, 0x170c, 0x1720, 0x1734, + // Entry 580 - 5BF + 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, 0x17b1, 0x17c7, 0x17db, + 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, 0x185e, 0x1874, 0x1888, + 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, + 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, 0x04db, 0x04dd, 0x04d9, + 0x19c7, 0x0008, 0x05aa, 0x9007, 0x9007, 0x9007, 0x05d3, 0x9006, + 0x9007, 0x9006, 0x0002, 0x05ad, 0x05c0, 0x0003, 0x8002, 0x9001, + 0x05b1, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, + 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, + // Entry 5C0 - 5FF + 0x0003, 0x9000, 0x05c4, 0x9000, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + 0x0045, 0x0048, 0x004b, 0x0003, 0x05d7, 0x8000, 0x8000, 0x0001, + 0x05d9, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x9007, 0x9007, 0x9007, + 0x9007, 0x05e5, 0x9006, 0x9007, 0x9006, 0x0003, 0x05e9, 0x8000, + 0x8000, 0x0001, 0x05eb, 0x0002, 0x0000, 0x1a20, 0x1a2e, 0x0042, + 0x0632, 0x8000, 0x8001, 0x0637, 0x8003, 0x8004, 0x064c, 0x8006, + 0x8007, 0x0661, 0x8009, 0x800a, 0x0676, 0x800c, 0x800d, 0x068f, + // Entry 600 - 63F + 0x800f, 0x8010, 0x0694, 0x8012, 0x8013, 0x06a9, 0x8015, 0x8016, + 0x06ae, 0x8018, 0x8019, 0x06b3, 0x801b, 0x801c, 0x06b8, 0x801e, + 0x801f, 0x06ca, 0x8021, 0x8022, 0x06dc, 0x8024, 0x8025, 0x06ee, + 0x8027, 0x8028, 0x0700, 0x802a, 0x802b, 0x0712, 0x802d, 0x802e, + 0x0724, 0x8030, 0x8031, 0x8034, 0x0736, 0x8033, 0x073b, 0x8036, + 0x8037, 0x074f, 0x8039, 0x803a, 0x0763, 0x803c, 0x803d, 0x0777, + 0x803f, 0x8040, 0x0001, 0x0634, 0x0001, 0x0000, 0x1a35, 0x0003, + 0x063b, 0x063e, 0x0643, 0x0001, 0x0000, 0x1a39, 0x0003, 0x0000, + // Entry 640 - 67F + 0x1a3e, 0x1a48, 0x1a52, 0x0002, 0x0646, 0x0649, 0x0001, 0x0000, + 0x1a5c, 0x0001, 0x0000, 0x1a63, 0x0003, 0x0650, 0x0653, 0x0658, + 0x0001, 0x0000, 0x1a6a, 0x0003, 0x0000, 0x1a72, 0x1a7f, 0x1a8c, + 0x0002, 0x065b, 0x065e, 0x0001, 0x0000, 0x1a99, 0x0001, 0x0000, + 0x1aa0, 0x0003, 0x0665, 0x0668, 0x066d, 0x0001, 0x0000, 0x1aa7, + 0x0003, 0x0000, 0x1aad, 0x1ab8, 0x1ac3, 0x0002, 0x0670, 0x0673, + 0x0001, 0x0000, 0x1ace, 0x0001, 0x0000, 0x1ad5, 0x0004, 0x067b, + 0x067e, 0x0683, 0x068c, 0x0001, 0x0000, 0x1adc, 0x0003, 0x0000, + // Entry 680 - 6BF + 0x1ae1, 0x1aeb, 0x1af5, 0x0002, 0x0686, 0x0689, 0x0001, 0x0000, + 0x1aff, 0x0001, 0x0000, 0x1b06, 0x0001, 0x0000, 0x1b0d, 0x0001, + 0x0691, 0x0001, 0x0000, 0x1b1d, 0x0003, 0x0698, 0x069b, 0x06a0, + 0x0001, 0x0000, 0x1b2b, 0x0003, 0x0000, 0x1b2f, 0x1b39, 0x1b3f, + 0x0002, 0x06a3, 0x06a6, 0x0001, 0x0000, 0x1b48, 0x0001, 0x0000, + 0x1b4f, 0x0001, 0x06ab, 0x0001, 0x0000, 0x1b56, 0x0001, 0x06b0, + 0x0001, 0x0000, 0x1b62, 0x0001, 0x06b5, 0x0001, 0x0000, 0x1b72, + 0x0003, 0x0000, 0x06bc, 0x06c1, 0x0003, 0x0000, 0x1b83, 0x1b8f, + // Entry 6C0 - 6FF + 0x1b9b, 0x0002, 0x06c4, 0x06c7, 0x0001, 0x0000, 0x1ba7, 0x0001, + 0x0000, 0x1bb4, 0x0003, 0x0000, 0x06ce, 0x06d3, 0x0003, 0x0000, + 0x1bc1, 0x1bcd, 0x1bd9, 0x0002, 0x06d6, 0x06d9, 0x0001, 0x0000, + 0x1be5, 0x0001, 0x0000, 0x1bf2, 0x0003, 0x0000, 0x06e0, 0x06e5, + 0x0003, 0x0000, 0x1bff, 0x1c0c, 0x1c19, 0x0002, 0x06e8, 0x06eb, + 0x0001, 0x0000, 0x1c26, 0x0001, 0x0000, 0x1c34, 0x0003, 0x0000, + 0x06f2, 0x06f7, 0x0003, 0x0000, 0x1c42, 0x1c51, 0x1c60, 0x0002, + 0x06fa, 0x06fd, 0x0001, 0x0000, 0x1c6f, 0x0001, 0x0000, 0x1c7f, + // Entry 700 - 73F + 0x0003, 0x0000, 0x0704, 0x0709, 0x0003, 0x0000, 0x1c8f, 0x1c9d, + 0x1cab, 0x0002, 0x070c, 0x070f, 0x0001, 0x0000, 0x1cb9, 0x0001, + 0x0000, 0x1cc8, 0x0003, 0x0000, 0x0716, 0x071b, 0x0003, 0x0000, + 0x1cd7, 0x1ce3, 0x1cef, 0x0002, 0x071e, 0x0721, 0x0001, 0x0000, + 0x1cfb, 0x0001, 0x0000, 0x1d08, 0x0003, 0x0000, 0x0728, 0x072d, + 0x0003, 0x0000, 0x1d15, 0x1d23, 0x1d31, 0x0002, 0x0730, 0x0733, + 0x0001, 0x0000, 0x1d3f, 0x0001, 0x0000, 0x1d4e, 0x0001, 0x0738, + 0x0001, 0x0000, 0x1d5d, 0x0003, 0x073f, 0x0742, 0x0746, 0x0001, + // Entry 740 - 77F + 0x0000, 0x1d67, 0x0002, 0x0000, 0xffff, 0x1d6c, 0x0002, 0x0749, + 0x074c, 0x0001, 0x0000, 0x1d76, 0x0001, 0x0000, 0x1d7d, 0x0003, + 0x0753, 0x0756, 0x075a, 0x0001, 0x0000, 0x1d84, 0x0002, 0x0000, + 0xffff, 0x1d8b, 0x0002, 0x075d, 0x0760, 0x0001, 0x0000, 0x1d97, + 0x0001, 0x0000, 0x1da0, 0x0003, 0x0767, 0x076a, 0x076e, 0x0001, + 0x0000, 0x1da9, 0x0002, 0x0000, 0xffff, 0x1db0, 0x0002, 0x0771, + 0x0774, 0x0001, 0x0000, 0x1db4, 0x0001, 0x0000, 0x1dbb, 0x0001, + 0x0779, 0x0001, 0x0000, 0x1dc2, 0x0004, 0x0781, 0x0786, 0x078b, + // Entry 780 - 7BF + 0x0000, 0x0003, 0x0000, 0x1dc7, 0x1dd5, 0x1ddc, 0x0003, 0x0000, + 0x1de0, 0x1de4, 0x1ded, 0x0001, 0x078d, 0x0003, 0x0000, 0x0000, + 0x0791, 0x0001, 0x0000, 0x1df6, 0x0003, 0x0004, 0x0243, 0x062d, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0000, 0x1dfa, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x0000, 0x1e17, + 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + // Entry 7C0 - 7FF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x01eb, 0x0210, 0x0221, 0x0232, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0000, 0xffff, 0x1e22, + 0x1e27, 0x1e2c, 0x1e31, 0x1e36, 0x1e3a, 0x1e3f, 0x1e44, 0x1e49, + 0x1e4e, 0x1e53, 0x1e58, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x04e1, + 0x04db, 0x1e5f, 0x04db, 0x1e5d, 0x1e5d, 0x1e5f, 0x04d9, 0x1e61, + 0x1e63, 0x1e65, 0x000d, 0x0000, 0xffff, 0x1e67, 0x1e70, 0x1e7a, + // Entry 800 - 83F + 0x1e80, 0x1e36, 0x1e86, 0x1e8c, 0x1e92, 0x1e9b, 0x1ea5, 0x1ead, + 0x1eb6, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0000, 0xffff, + 0x1e22, 0x1e27, 0x1e2c, 0x1e31, 0x1e36, 0x1e3a, 0x1e3f, 0x1e44, + 0x1e49, 0x1e4e, 0x1e53, 0x1e58, 0x000d, 0x0000, 0xffff, 0x1e5d, + 0x04e1, 0x04db, 0x1e5f, 0x04db, 0x1e5d, 0x1e5d, 0x1e5f, 0x04d9, + 0x1e61, 0x1e63, 0x1e65, 0x000d, 0x0000, 0xffff, 0x1e67, 0x1e70, + 0x1e7a, 0x1e80, 0x1e36, 0x1e86, 0x1e8c, 0x1e92, 0x1e9b, 0x1ea5, + 0x1ead, 0x1eb6, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + // Entry 840 - 87F + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0000, 0x1ebf, 0x1ec3, 0x1ec7, + 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, 0x0007, 0x0000, 0x04d9, 0x04db, + 0x1e65, 0x04df, 0x1e65, 0x1edb, 0x04d9, 0x0007, 0x0000, 0x1ebf, + 0x1ec3, 0x1ec7, 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, 0x0007, 0x0000, + 0x1edd, 0x1ee4, 0x1eec, 0x1ef4, 0x1efd, 0x1f07, 0x1f0e, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0000, 0x1ebf, + 0x1ec3, 0x1ec7, 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, 0x0007, 0x0000, + 0x04d9, 0x04db, 0x1e65, 0x04df, 0x1e65, 0x1edb, 0x04d9, 0x0007, + // Entry 880 - 8BF + 0x0000, 0x1ebf, 0x1ec3, 0x1ec7, 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, + 0x0007, 0x0000, 0x1edd, 0x1ee4, 0x1eec, 0x1ef4, 0x1efd, 0x1f07, + 0x1f0e, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0000, + 0xffff, 0x1f23, 0x1f31, 0x1f3e, 0x1f4b, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, + // Entry 8C0 - 8FF + 0x0000, 0xffff, 0x1f23, 0x1f31, 0x1f3e, 0x1f4b, 0x0002, 0x0135, + 0x0190, 0x0003, 0x0139, 0x0156, 0x0173, 0x0007, 0x0144, 0x0147, + 0x0141, 0x014a, 0x014d, 0x0150, 0x0153, 0x0001, 0x0000, 0x1f58, + 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, 0x1f66, 0x0001, 0x0000, + 0x1f6a, 0x0001, 0x0000, 0x1f75, 0x0001, 0x0000, 0x1f80, 0x0001, + 0x0000, 0x1f89, 0x0007, 0x0161, 0x0164, 0x015e, 0x0167, 0x016a, + 0x016d, 0x0170, 0x0001, 0x0000, 0x1f91, 0x0001, 0x0000, 0x1f94, + 0x0001, 0x0000, 0x1f96, 0x0001, 0x0000, 0x1f98, 0x0001, 0x0000, + // Entry 900 - 93F + 0x1f9a, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x1f96, 0x0007, + 0x017e, 0x0181, 0x017b, 0x0184, 0x0187, 0x018a, 0x018d, 0x0001, + 0x0000, 0x1f58, 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, 0x1f66, + 0x0001, 0x0000, 0x1f6a, 0x0001, 0x0000, 0x1f75, 0x0001, 0x0000, + 0x1f80, 0x0001, 0x0000, 0x1f89, 0x0003, 0x0194, 0x01b1, 0x01ce, + 0x0007, 0x019f, 0x01a2, 0x019c, 0x01a5, 0x01a8, 0x01ab, 0x01ae, + 0x0001, 0x0000, 0x1f58, 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, + 0x1f66, 0x0001, 0x0000, 0x1f9e, 0x0001, 0x0000, 0x1fa5, 0x0001, + // Entry 940 - 97F + 0x0000, 0x1fac, 0x0001, 0x0000, 0x1fb1, 0x0007, 0x01bc, 0x01bf, + 0x01b9, 0x01c2, 0x01c5, 0x01c8, 0x01cb, 0x0001, 0x0000, 0x1f91, + 0x0001, 0x0000, 0x1f94, 0x0001, 0x0000, 0x1f96, 0x0001, 0x0000, + 0x1f98, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, 0x1f9c, 0x0001, + 0x0000, 0x1f96, 0x0007, 0x01d9, 0x01dc, 0x01d6, 0x01df, 0x01e2, + 0x01e5, 0x01e8, 0x0001, 0x0000, 0x1f58, 0x0001, 0x0000, 0x1f62, + 0x0001, 0x0000, 0x1f66, 0x0001, 0x0000, 0x1f9e, 0x0001, 0x0000, + 0x1fa5, 0x0001, 0x0000, 0x1fac, 0x0001, 0x0000, 0x1fb1, 0x0003, + // Entry 980 - 9BF + 0x01fa, 0x0205, 0x01ef, 0x0002, 0x01f2, 0x01f6, 0x0002, 0x0000, + 0x1fb5, 0x1fdf, 0x0002, 0x0000, 0x1fc3, 0x1feb, 0x0002, 0x01fd, + 0x0201, 0x0002, 0x0001, 0x0000, 0x000c, 0x0002, 0x0001, 0x0005, + 0x0011, 0x0002, 0x0208, 0x020c, 0x0002, 0x0001, 0x0000, 0x000c, + 0x0002, 0x0001, 0x0016, 0x001a, 0x0004, 0x021e, 0x0218, 0x0215, + 0x021b, 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, + 0x0001, 0x0037, 0x0001, 0x0000, 0x051c, 0x0004, 0x022f, 0x0229, + 0x0226, 0x022c, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + // Entry 9C0 - 9FF + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0240, + 0x023a, 0x0237, 0x023d, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x0284, 0x0000, 0x0000, 0x0289, 0x02a0, 0x02b2, 0x02c4, 0x02db, + 0x02ed, 0x02ff, 0x0316, 0x0328, 0x033a, 0x0355, 0x036b, 0x0000, + 0x0000, 0x0000, 0x0381, 0x039a, 0x03b3, 0x0000, 0x0000, 0x0000, + 0x03cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d1, 0x03e5, + 0x03f9, 0x040d, 0x0421, 0x0435, 0x0449, 0x045d, 0x0471, 0x0485, + // Entry A00 - A3F + 0x0499, 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, + 0x0539, 0x054d, 0x0561, 0x0000, 0x0575, 0x0000, 0x057a, 0x0590, + 0x05a2, 0x05b4, 0x05ca, 0x05dc, 0x05ee, 0x0604, 0x0616, 0x0628, + 0x0001, 0x0286, 0x0001, 0x0001, 0x0040, 0x0003, 0x028d, 0x0290, + 0x0295, 0x0001, 0x0001, 0x0044, 0x0003, 0x0001, 0x0049, 0x0056, + 0x0063, 0x0002, 0x0298, 0x029c, 0x0002, 0x0001, 0x0071, 0x0071, + 0x0002, 0x0001, 0x007e, 0x007e, 0x0003, 0x02a4, 0x0000, 0x02a7, + 0x0001, 0x0001, 0x008e, 0x0002, 0x02aa, 0x02ae, 0x0002, 0x0001, + // Entry A40 - A7F + 0x0071, 0x0071, 0x0002, 0x0001, 0x007e, 0x007e, 0x0003, 0x02b6, + 0x0000, 0x02b9, 0x0001, 0x0001, 0x008e, 0x0002, 0x02bc, 0x02c0, + 0x0002, 0x0001, 0x0071, 0x0071, 0x0002, 0x0001, 0x007e, 0x007e, + 0x0003, 0x02c8, 0x02cb, 0x02d0, 0x0001, 0x0001, 0x0091, 0x0003, + 0x0001, 0x009a, 0x00aa, 0x00bb, 0x0002, 0x02d3, 0x02d7, 0x0002, + 0x0001, 0x00de, 0x00cd, 0x0002, 0x0001, 0x0103, 0x00ef, 0x0003, + 0x02df, 0x0000, 0x02e2, 0x0001, 0x0001, 0x0117, 0x0002, 0x02e5, + 0x02e9, 0x0002, 0x0001, 0x00de, 0x00cd, 0x0002, 0x0001, 0x0103, + // Entry A80 - ABF + 0x00ef, 0x0003, 0x02f1, 0x0000, 0x02f4, 0x0001, 0x0001, 0x0117, + 0x0002, 0x02f7, 0x02fb, 0x0002, 0x0001, 0x00de, 0x00de, 0x0002, + 0x0001, 0x0103, 0x0103, 0x0003, 0x0303, 0x0306, 0x030b, 0x0001, + 0x0001, 0x011b, 0x0003, 0x0001, 0x0121, 0x012f, 0x013c, 0x0002, + 0x030e, 0x0312, 0x0002, 0x0001, 0x014b, 0x014b, 0x0002, 0x0001, + 0x016b, 0x015a, 0x0003, 0x031a, 0x0000, 0x031d, 0x0001, 0x0001, + 0x017d, 0x0002, 0x0320, 0x0324, 0x0002, 0x0001, 0x0181, 0x0181, + 0x0002, 0x0001, 0x018d, 0x018d, 0x0003, 0x032c, 0x0000, 0x032f, + // Entry AC0 - AFF + 0x0001, 0x0001, 0x017d, 0x0002, 0x0332, 0x0336, 0x0002, 0x0001, + 0x0181, 0x0181, 0x0002, 0x0001, 0x018d, 0x018d, 0x0004, 0x033f, + 0x0342, 0x0347, 0x0352, 0x0001, 0x0001, 0x019c, 0x0003, 0x0001, + 0x01a1, 0x01ae, 0x01ba, 0x0002, 0x034a, 0x034e, 0x0002, 0x0001, + 0x01d5, 0x01c8, 0x0002, 0x0001, 0x01f2, 0x01e2, 0x0001, 0x0001, + 0x0202, 0x0004, 0x035a, 0x0000, 0x035d, 0x0368, 0x0001, 0x0001, + 0x0213, 0x0002, 0x0360, 0x0364, 0x0002, 0x0001, 0x0217, 0x0217, + 0x0002, 0x0001, 0x0222, 0x0222, 0x0001, 0x0001, 0x0202, 0x0004, + // Entry B00 - B3F + 0x0370, 0x0000, 0x0373, 0x037e, 0x0001, 0x0001, 0x0213, 0x0002, + 0x0376, 0x037a, 0x0002, 0x0001, 0x0217, 0x0217, 0x0002, 0x0001, + 0x0222, 0x0222, 0x0001, 0x0001, 0x0202, 0x0003, 0x0385, 0x0388, + 0x038f, 0x0001, 0x0001, 0x0230, 0x0005, 0x0001, 0x023e, 0x0245, + 0x024c, 0x0234, 0x0252, 0x0002, 0x0392, 0x0396, 0x0002, 0x0001, + 0x014b, 0x014b, 0x0002, 0x0001, 0x026a, 0x025b, 0x0003, 0x039e, + 0x03a1, 0x03a8, 0x0001, 0x0001, 0x0279, 0x0005, 0x0001, 0x023e, + 0x0245, 0x024c, 0x0234, 0x0252, 0x0002, 0x03ab, 0x03af, 0x0002, + // Entry B40 - B7F + 0x0001, 0x0288, 0x027c, 0x0002, 0x0001, 0x026a, 0x025b, 0x0003, + 0x03b7, 0x03ba, 0x03c1, 0x0001, 0x0001, 0x0279, 0x0005, 0x0001, + 0x023e, 0x0245, 0x024c, 0x0234, 0x0252, 0x0002, 0x03c4, 0x03c8, + 0x0002, 0x0001, 0x0288, 0x027c, 0x0002, 0x0001, 0x026a, 0x025b, + 0x0001, 0x03ce, 0x0001, 0x0001, 0x0294, 0x0003, 0x0000, 0x03d5, + 0x03da, 0x0003, 0x0001, 0x02a5, 0x02b4, 0x02c3, 0x0002, 0x03dd, + 0x03e1, 0x0002, 0x0001, 0x02e2, 0x02d3, 0x0002, 0x0001, 0x0303, + 0x02f1, 0x0003, 0x0000, 0x03e9, 0x03ee, 0x0003, 0x0001, 0x0315, + // Entry B80 - BBF + 0x0322, 0x032f, 0x0002, 0x03f1, 0x03f5, 0x0002, 0x0001, 0x02e2, + 0x02e2, 0x0002, 0x0001, 0x0303, 0x0303, 0x0003, 0x0000, 0x03fd, + 0x0402, 0x0003, 0x0001, 0x0315, 0x0322, 0x032f, 0x0002, 0x0405, + 0x0409, 0x0002, 0x0001, 0x02e2, 0x02e2, 0x0002, 0x0001, 0x0303, + 0x0303, 0x0003, 0x0000, 0x0411, 0x0416, 0x0003, 0x0001, 0x033d, + 0x034d, 0x035d, 0x0002, 0x0419, 0x041d, 0x0002, 0x0001, 0x037e, + 0x036e, 0x0002, 0x0001, 0x03a1, 0x038e, 0x0003, 0x0000, 0x0425, + 0x042a, 0x0003, 0x0001, 0x03b4, 0x03c0, 0x03cc, 0x0002, 0x042d, + // Entry BC0 - BFF + 0x0431, 0x0002, 0x0001, 0x037e, 0x037e, 0x0002, 0x0001, 0x03a1, + 0x03a1, 0x0003, 0x0000, 0x0439, 0x043e, 0x0003, 0x0001, 0x03b4, + 0x03c0, 0x03cc, 0x0002, 0x0441, 0x0445, 0x0002, 0x0001, 0x037e, + 0x037e, 0x0002, 0x0001, 0x03a1, 0x03a1, 0x0003, 0x0000, 0x044d, + 0x0452, 0x0003, 0x0001, 0x03d9, 0x03e9, 0x03f9, 0x0002, 0x0455, + 0x0459, 0x0002, 0x0001, 0x041a, 0x040a, 0x0002, 0x0001, 0x043d, + 0x042a, 0x0003, 0x0000, 0x0461, 0x0466, 0x0003, 0x0001, 0x0450, + 0x045c, 0x0468, 0x0002, 0x0469, 0x046d, 0x0002, 0x0001, 0x041a, + // Entry C00 - C3F + 0x041a, 0x0002, 0x0001, 0x043d, 0x043d, 0x0003, 0x0000, 0x0475, + 0x047a, 0x0003, 0x0001, 0x0450, 0x045c, 0x0468, 0x0002, 0x047d, + 0x0481, 0x0002, 0x0001, 0x041a, 0x041a, 0x0002, 0x0001, 0x043d, + 0x043d, 0x0003, 0x0000, 0x0489, 0x048e, 0x0003, 0x0001, 0x0475, + 0x0486, 0x0497, 0x0002, 0x0491, 0x0495, 0x0002, 0x0001, 0x04ba, + 0x04a9, 0x0002, 0x0001, 0x04df, 0x04cb, 0x0003, 0x0000, 0x049d, + 0x04a2, 0x0003, 0x0001, 0x04f3, 0x04ff, 0x050b, 0x0002, 0x04a5, + 0x04a9, 0x0002, 0x0001, 0x04ba, 0x04ba, 0x0002, 0x0001, 0x04df, + // Entry C40 - C7F + 0x04df, 0x0003, 0x0000, 0x04b1, 0x04b6, 0x0003, 0x0001, 0x04f3, + 0x04ff, 0x050b, 0x0002, 0x04b9, 0x04bd, 0x0002, 0x0001, 0x04ba, + 0x04ba, 0x0002, 0x0001, 0x04df, 0x04df, 0x0003, 0x0000, 0x04c5, + 0x04ca, 0x0003, 0x0001, 0x0518, 0x052a, 0x053c, 0x0002, 0x04cd, + 0x04d1, 0x0002, 0x0001, 0x0561, 0x054f, 0x0002, 0x0001, 0x0588, + 0x0573, 0x0003, 0x0000, 0x04d9, 0x04de, 0x0003, 0x0001, 0x059d, + 0x05a9, 0x05b5, 0x0002, 0x04e1, 0x04e5, 0x0002, 0x0001, 0x0561, + 0x0561, 0x0002, 0x0001, 0x0588, 0x0588, 0x0003, 0x0000, 0x04ed, + // Entry C80 - CBF + 0x04f2, 0x0003, 0x0001, 0x059d, 0x05a9, 0x05b5, 0x0002, 0x04f5, + 0x04f9, 0x0002, 0x0001, 0x0561, 0x0561, 0x0002, 0x0001, 0x0588, + 0x0588, 0x0003, 0x0000, 0x0501, 0x0506, 0x0003, 0x0001, 0x05c2, + 0x05d1, 0x05e0, 0x0002, 0x0509, 0x050d, 0x0002, 0x0001, 0x05ff, + 0x05f0, 0x0002, 0x0001, 0x0620, 0x060e, 0x0003, 0x0000, 0x0515, + 0x051a, 0x0003, 0x0001, 0x0632, 0x063e, 0x0647, 0x0002, 0x051d, + 0x0521, 0x0002, 0x0001, 0x05ff, 0x05ff, 0x0002, 0x0001, 0x0620, + 0x0620, 0x0003, 0x0000, 0x0529, 0x052e, 0x0003, 0x0001, 0x0632, + // Entry CC0 - CFF + 0x063e, 0x0647, 0x0002, 0x0531, 0x0535, 0x0002, 0x0001, 0x05ff, + 0x05ff, 0x0002, 0x0001, 0x0620, 0x0620, 0x0003, 0x0000, 0x053d, + 0x0542, 0x0003, 0x0001, 0x0650, 0x0661, 0x0672, 0x0002, 0x0545, + 0x0549, 0x0002, 0x0001, 0x0695, 0x0684, 0x0002, 0x0001, 0x06ba, + 0x06a6, 0x0003, 0x0000, 0x0551, 0x0556, 0x0003, 0x0001, 0x06ce, + 0x06da, 0x06e3, 0x0002, 0x0559, 0x055d, 0x0002, 0x0001, 0x0695, + 0x0695, 0x0002, 0x0001, 0x06ba, 0x06ba, 0x0003, 0x0000, 0x0565, + 0x056a, 0x0003, 0x0001, 0x06ce, 0x06da, 0x06e3, 0x0002, 0x056d, + // Entry D00 - D3F + 0x0571, 0x0002, 0x0001, 0x0695, 0x0695, 0x0002, 0x0001, 0x06ba, + 0x06ba, 0x0001, 0x0577, 0x0001, 0x0001, 0x06ec, 0x0003, 0x057e, + 0x0581, 0x0585, 0x0001, 0x0001, 0x06f2, 0x0002, 0x0001, 0xffff, + 0x06f6, 0x0002, 0x0588, 0x058c, 0x0002, 0x0001, 0x0702, 0x0702, + 0x0002, 0x0001, 0x070e, 0x070e, 0x0003, 0x0594, 0x0000, 0x0597, + 0x0001, 0x0001, 0x071d, 0x0002, 0x059a, 0x059e, 0x0002, 0x0001, + 0x0702, 0x0702, 0x0002, 0x0001, 0x070e, 0x070e, 0x0003, 0x05a6, + 0x0000, 0x05a9, 0x0001, 0x0001, 0x071d, 0x0002, 0x05ac, 0x05b0, + // Entry D40 - D7F + 0x0002, 0x0001, 0x0702, 0x0702, 0x0002, 0x0001, 0x070e, 0x070e, + 0x0003, 0x05b8, 0x05bb, 0x05bf, 0x0001, 0x0001, 0x0720, 0x0002, + 0x0001, 0xffff, 0x0727, 0x0002, 0x05c2, 0x05c6, 0x0002, 0x0001, + 0x014b, 0x014b, 0x0002, 0x0001, 0x0748, 0x0736, 0x0003, 0x05ce, + 0x0000, 0x05d1, 0x0001, 0x0001, 0x075a, 0x0002, 0x05d4, 0x05d8, + 0x0002, 0x0001, 0x075f, 0x075f, 0x0002, 0x0001, 0x076c, 0x076c, + 0x0003, 0x05e0, 0x0000, 0x05e3, 0x0001, 0x0001, 0x077c, 0x0002, + 0x05e6, 0x05ea, 0x0002, 0x0001, 0x075f, 0x075f, 0x0002, 0x0001, + // Entry D80 - DBF + 0x076c, 0x076c, 0x0003, 0x05f2, 0x05f5, 0x05f9, 0x0001, 0x0001, + 0x077f, 0x0002, 0x0001, 0xffff, 0x0787, 0x0002, 0x05fc, 0x0600, + 0x0002, 0x0001, 0x079b, 0x078b, 0x0002, 0x0001, 0x07bf, 0x07ac, + 0x0003, 0x0608, 0x0000, 0x060b, 0x0001, 0x0001, 0x07d3, 0x0002, + 0x060e, 0x0612, 0x0002, 0x0001, 0x07d8, 0x07d8, 0x0002, 0x0001, + 0x07e5, 0x07e5, 0x0003, 0x061a, 0x0000, 0x061d, 0x0001, 0x0001, + 0x07f5, 0x0002, 0x0620, 0x0624, 0x0002, 0x0001, 0x07d8, 0x07d8, + 0x0002, 0x0001, 0x07e5, 0x07e5, 0x0001, 0x062a, 0x0001, 0x0001, + // Entry DC0 - DFF + 0x07f8, 0x0004, 0x0632, 0x0637, 0x063c, 0x064b, 0x0003, 0x0000, + 0x1dc7, 0x1dd5, 0x1ddc, 0x0003, 0x0001, 0x0800, 0x0808, 0x0816, + 0x0002, 0x0000, 0x063f, 0x0003, 0x0000, 0x0646, 0x0643, 0x0001, + 0x0001, 0x0827, 0x0003, 0x0001, 0xffff, 0x0846, 0x0856, 0x0002, + 0x0814, 0x064e, 0x0003, 0x06e8, 0x077e, 0x0652, 0x0094, 0x0001, + 0x0869, 0x0879, 0x0891, 0x08a4, 0x08d1, 0x0911, 0x0942, 0x0975, + 0x09ac, 0x09df, 0x0a0e, 0x0a44, 0x0a71, 0x0a9f, 0x0ad8, 0x0b1a, + 0x0b5d, 0x0b94, 0x0bd9, 0x0c3d, 0x0cad, 0x0d09, 0x0d5c, 0x0d94, + // Entry E00 - E3F + 0x0dc5, 0x0df1, 0x0dfd, 0x0e17, 0x0e41, 0x0e67, 0x0e93, 0x0eb5, + 0x0ee6, 0x0f12, 0x0f44, 0x0f70, 0x0f83, 0x0fa2, 0x0fdc, 0x1017, + 0x1038, 0x1042, 0x1059, 0x1076, 0x10a2, 0x10c4, 0x110f, 0x113f, + 0x116d, 0x11b1, 0x11f1, 0x1213, 0x1224, 0x1246, 0x1254, 0x126d, + 0x1295, 0x12a8, 0x12cf, 0x1313, 0x1345, 0x1357, 0x1377, 0x13bd, + 0x13ee, 0x140e, 0x1422, 0x1435, 0x1443, 0x145b, 0x146e, 0x148a, + 0x14b7, 0x14e8, 0x1517, 0x1557, 0x159f, 0x15b1, 0x15d1, 0x15fc, + 0x1617, 0x1645, 0x1653, 0x1672, 0x169d, 0x16be, 0x16e4, 0x16f2, + // Entry E40 - E7F + 0x16ff, 0x170d, 0x172f, 0x1759, 0x1779, 0x17cc, 0x181e, 0x1855, + 0x1879, 0x1885, 0x188f, 0x18ad, 0x18f4, 0x1936, 0x1967, 0x1970, + 0x199b, 0x19e9, 0x1a20, 0x1a4d, 0x1a75, 0x1a7f, 0x1aa3, 0x1ad4, + 0x1b03, 0x1b2f, 0x1b5d, 0x1ba4, 0x1bb1, 0x1bbc, 0x1bca, 0x1bd6, + 0x1bef, 0x1c22, 0x1c51, 0x1c74, 0x1c82, 0x1c99, 0x1cac, 0x1cbe, + 0x1ccb, 0x1cd5, 0x1ceb, 0x1d10, 0x1d20, 0x1d36, 0x1d58, 0x1d73, + 0x1da3, 0x1dba, 0x1df0, 0x1e2a, 0x1e50, 0x1e6e, 0x1eaa, 0x1ed4, + 0x1edf, 0x1eef, 0x1f11, 0x1f4b, 0x0094, 0x0001, 0xffff, 0xffff, + // Entry E80 - EBF + 0xffff, 0xffff, 0x08c2, 0x0906, 0x0936, 0x0968, 0x099e, 0x09d7, + 0x0a00, 0x0a39, 0x0a68, 0x0a92, 0x0ac8, 0x0b06, 0x0b50, 0x0b85, + 0x0bc1, 0x0c1a, 0x0c93, 0x0cf0, 0x0d4c, 0x0d8a, 0x0db6, 0xffff, + 0xffff, 0x0e09, 0xffff, 0x0e58, 0xffff, 0x0ea9, 0x0edc, 0x0f08, + 0x0f35, 0xffff, 0xffff, 0x0f94, 0x0fcc, 0x100e, 0xffff, 0xffff, + 0xffff, 0x1067, 0xffff, 0x10ae, 0x10fe, 0xffff, 0x115c, 0x119d, + 0x11e7, 0xffff, 0xffff, 0xffff, 0xffff, 0x1260, 0xffff, 0xffff, + 0x12bd, 0x1301, 0xffff, 0xffff, 0x1362, 0x13b0, 0x13e5, 0xffff, + // Entry EC0 - EFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1481, 0x14ab, 0x14dd, + 0x150d, 0x153a, 0xffff, 0xffff, 0x15c3, 0xffff, 0x1607, 0xffff, + 0xffff, 0x1664, 0xffff, 0x16b2, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1721, 0xffff, 0x1764, 0x17b2, 0x180f, 0x184a, 0xffff, 0xffff, + 0xffff, 0x1899, 0x18e3, 0x1925, 0xffff, 0xffff, 0x1983, 0x19d9, + 0x1a17, 0x1a40, 0xffff, 0xffff, 0x1a96, 0x1acb, 0x1af4, 0xffff, + 0x1b41, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1be2, 0x1c17, + 0x1c47, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry F00 - F3F + 0x1ce0, 0xffff, 0xffff, 0x1d2c, 0xffff, 0x1d62, 0xffff, 0x1dae, + 0x1de0, 0x1e1e, 0xffff, 0x1e5e, 0x1e9c, 0xffff, 0xffff, 0xffff, + 0x1f04, 0x1f39, 0x0094, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, + 0x08e9, 0x0925, 0x0957, 0x098b, 0x09c3, 0x09f1, 0x0a25, 0x0a58, + 0x0a83, 0x0ab5, 0x0af1, 0x0b37, 0x0b73, 0x0bac, 0x0bfb, 0x0c6a, + 0x0cd0, 0x0d2c, 0x0d75, 0x0da7, 0x0ddd, 0xffff, 0xffff, 0x0e2e, + 0xffff, 0x0e7f, 0xffff, 0x0eca, 0x0ef9, 0x0f25, 0x0f5c, 0xffff, + 0xffff, 0x0fb9, 0x0ff5, 0x1029, 0xffff, 0xffff, 0xffff, 0x108e, + // Entry F40 - F7F + 0xffff, 0x10e3, 0x1129, 0xffff, 0x1187, 0x11ce, 0x1204, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1283, 0xffff, 0xffff, 0x12ea, 0x132e, + 0xffff, 0xffff, 0x1395, 0x13d3, 0x1400, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x149c, 0x14cc, 0x14fc, 0x152a, 0x157d, + 0xffff, 0xffff, 0x15e8, 0xffff, 0x1630, 0xffff, 0xffff, 0x1689, + 0xffff, 0x16d3, 0xffff, 0xffff, 0xffff, 0xffff, 0x1746, 0xffff, + 0x1797, 0x17ef, 0x1836, 0x1869, 0xffff, 0xffff, 0xffff, 0x18ca, + 0x190e, 0x1950, 0xffff, 0xffff, 0x19bc, 0x1a02, 0x1a32, 0x1a63, + // Entry F80 - FBF + 0xffff, 0xffff, 0x1ab9, 0x1ae6, 0x1b1b, 0xffff, 0x1b82, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1c05, 0x1c36, 0x1c64, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cff, 0xffff, + 0xffff, 0x1d49, 0xffff, 0x1d8d, 0xffff, 0x1dcf, 0x1e09, 0x1e3f, + 0xffff, 0x1e87, 0x1ec1, 0xffff, 0xffff, 0xffff, 0x1f27, 0x1f66, + 0x0003, 0x081f, 0x0826, 0x0818, 0x0005, 0x0001, 0xffff, 0x088d, + 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry FC0 - FFF + 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0020, 0x0006, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0012, 0x0004, 0x0000, 0x001a, 0x0017, 0x001d, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0027, + 0x0004, 0x0000, 0x002f, 0x002c, 0x0032, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0002, 0x0003, + 0x00e2, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1000 - 103F + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1fc1, 0x0001, 0x0001, 0x1fcc, 0x0008, 0x002f, 0x0066, 0x008b, + 0x0098, 0x00b0, 0x00c0, 0x00d1, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0001, 0xffff, 0x1fd8, + 0x1fdd, 0x1fe2, 0x1fe7, 0x1feb, 0x1fef, 0x1ff3, 0x1ff7, 0x1ffc, + 0x2000, 0x2005, 0x2009, 0x000d, 0x0002, 0xffff, 0x0000, 0x0012, + // Entry 1040 - 107F + 0x002a, 0x0046, 0x0061, 0x0071, 0x0087, 0x009b, 0x00b3, 0x00d6, + 0x00f1, 0x010d, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + 0x1f96, 0x1ffe, 0x2000, 0x2000, 0x2002, 0x2004, 0x1ffe, 0x2006, + 0x2008, 0x200a, 0x200c, 0x2006, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0002, 0x011e, 0x0122, 0x0126, + 0x012b, 0x0130, 0x0134, 0x0139, 0x0007, 0x0002, 0x013d, 0x0148, + 0x0153, 0x015f, 0x016f, 0x0179, 0x0187, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x1f96, 0x1ffe, 0x200e, 0x2000, 0x2010, 0x200e, + // Entry 1080 - 10BF + 0x2008, 0x0001, 0x008d, 0x0003, 0x0000, 0x0000, 0x0091, 0x0005, + 0x0002, 0xffff, 0x0199, 0x01a6, 0x01b0, 0x01ba, 0x0001, 0x009a, + 0x0003, 0x009e, 0x0000, 0x00a7, 0x0002, 0x00a1, 0x00a4, 0x0001, + 0x0002, 0x01c4, 0x0001, 0x0002, 0x01c8, 0x0002, 0x00aa, 0x00ad, + 0x0001, 0x0002, 0x01c4, 0x0001, 0x0002, 0x01c8, 0x0003, 0x00ba, + 0x0000, 0x00b4, 0x0001, 0x00b6, 0x0002, 0x0002, 0x01cc, 0x01dc, + 0x0001, 0x00bc, 0x0002, 0x0002, 0x01ec, 0x01ef, 0x0004, 0x00ce, + 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, + // Entry 10C0 - 10FF + 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, + 0x00df, 0x00d9, 0x00d6, 0x00dc, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0040, 0x0123, 0x0000, 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x012d, 0x0000, 0x0000, 0x0132, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0142, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1100 - 113F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0147, 0x0000, 0x014c, + 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, 0x0156, 0x0000, 0x0000, + 0x015b, 0x0001, 0x0125, 0x0001, 0x0002, 0x0201, 0x0001, 0x012a, + 0x0001, 0x0002, 0x020a, 0x0001, 0x012f, 0x0001, 0x0002, 0x0212, + 0x0001, 0x0134, 0x0001, 0x0002, 0x021a, 0x0002, 0x013a, 0x013d, + 0x0001, 0x0002, 0x0220, 0x0003, 0x0002, 0x0227, 0x0232, 0x0236, + 0x0001, 0x0144, 0x0001, 0x0002, 0x023f, 0x0001, 0x0149, 0x0001, + // Entry 1140 - 117F + 0x0002, 0x0255, 0x0001, 0x014e, 0x0001, 0x0002, 0x025f, 0x0001, + 0x0153, 0x0001, 0x0002, 0x0264, 0x0001, 0x0158, 0x0001, 0x0002, + 0x026a, 0x0001, 0x015d, 0x0001, 0x0002, 0x0274, 0x0002, 0x0003, + 0x00c2, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, + 0x04a5, 0x0001, 0x0002, 0x029c, 0x0008, 0x002f, 0x0053, 0x0000, + // Entry 1180 - 11BF + 0x0078, 0x0090, 0x00a0, 0x00b1, 0x0000, 0x0001, 0x0031, 0x0003, + 0x0035, 0x0000, 0x0044, 0x000d, 0x0002, 0xffff, 0x02ab, 0x02b0, + 0x02b5, 0x02ba, 0x02be, 0x02c2, 0x02c6, 0x02ca, 0x02cf, 0x02d4, + 0x02d9, 0x02de, 0x000d, 0x0002, 0xffff, 0x02e3, 0x02f3, 0x0304, + 0x0312, 0x0324, 0x0341, 0x0356, 0x0369, 0x0378, 0x0385, 0x0396, + 0x03a9, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, 0x0000, 0x0063, + 0x0007, 0x0002, 0x03b9, 0x03bd, 0x03c1, 0x03c5, 0x03c9, 0x03cd, + 0x03d1, 0x0007, 0x0002, 0x03d5, 0x03dd, 0x03e4, 0x03eb, 0x03f2, + // Entry 11C0 - 11FF + 0x03f8, 0x03fd, 0x0002, 0x0000, 0x006f, 0x0007, 0x0002, 0x0406, + 0x0408, 0x040a, 0x040c, 0x040e, 0x0410, 0x0412, 0x0001, 0x007a, + 0x0003, 0x007e, 0x0000, 0x0087, 0x0002, 0x0081, 0x0084, 0x0001, + 0x0002, 0x0414, 0x0001, 0x0002, 0x0417, 0x0002, 0x008a, 0x008d, + 0x0001, 0x0002, 0x0414, 0x0001, 0x0002, 0x0417, 0x0003, 0x009a, + 0x0000, 0x0094, 0x0001, 0x0096, 0x0002, 0x0002, 0x041a, 0x0426, + 0x0001, 0x009c, 0x0002, 0x0002, 0x0434, 0x0437, 0x0004, 0x00ae, + 0x00a8, 0x00a5, 0x00ab, 0x0001, 0x0002, 0x043a, 0x0001, 0x0000, + // Entry 1200 - 123F + 0x050b, 0x0001, 0x0000, 0x0514, 0x0001, 0x0002, 0x044a, 0x0004, + 0x00bf, 0x00b9, 0x00b6, 0x00bc, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0040, 0x0103, 0x0000, 0x0000, 0x0108, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x010d, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0122, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1240 - 127F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0127, 0x0000, 0x012c, + 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0136, 0x0000, 0x0000, + 0x013b, 0x0001, 0x0105, 0x0001, 0x0002, 0x047f, 0x0001, 0x010a, + 0x0001, 0x0002, 0x0484, 0x0001, 0x010f, 0x0001, 0x0002, 0x0488, + 0x0001, 0x0114, 0x0001, 0x0002, 0x048f, 0x0002, 0x011a, 0x011d, + 0x0001, 0x0002, 0x0496, 0x0003, 0x0002, 0x0499, 0x049f, 0x04a4, + 0x0001, 0x0124, 0x0001, 0x0002, 0x04ac, 0x0001, 0x0129, 0x0001, + // Entry 1280 - 12BF + 0x0002, 0x04b9, 0x0001, 0x012e, 0x0001, 0x0002, 0x04c1, 0x0001, + 0x0133, 0x0001, 0x0002, 0x04ca, 0x0001, 0x0138, 0x0001, 0x0002, + 0x04cf, 0x0001, 0x013d, 0x0001, 0x0002, 0x04d8, 0x0003, 0x0004, + 0x0368, 0x0782, 0x000b, 0x0010, 0x0000, 0x004e, 0x0000, 0x005c, + 0x0000, 0x0108, 0x0133, 0x0000, 0x0000, 0x0351, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0019, 0x002c, 0x0000, 0x003d, 0x0003, + 0x0022, 0x0027, 0x001d, 0x0001, 0x001f, 0x0001, 0x0000, 0x0000, + 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, 0x0001, 0x0029, 0x0001, + // Entry 12C0 - 12FF + 0x0000, 0x0000, 0x0004, 0x003a, 0x0034, 0x0031, 0x0037, 0x0001, + 0x0002, 0x04e4, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0004, 0x004b, 0x0045, 0x0042, 0x0048, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0054, 0x0001, 0x0056, 0x0001, 0x0058, 0x0002, 0x0002, + 0x0505, 0x050d, 0x0008, 0x0065, 0x0000, 0x0000, 0x0000, 0x00d0, + 0x00e6, 0x0000, 0x00f7, 0x0002, 0x0068, 0x009c, 0x0003, 0x006c, + // Entry 1300 - 133F + 0x007c, 0x008c, 0x000e, 0x0002, 0xffff, 0x0515, 0x0525, 0x0532, + 0x053c, 0x0549, 0x0550, 0x055d, 0x056a, 0x0577, 0x0584, 0x058b, + 0x0595, 0x059f, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, + 0x004b, 0x0422, 0x000e, 0x0002, 0xffff, 0x0515, 0x0525, 0x0532, + 0x053c, 0x0549, 0x0550, 0x055d, 0x056a, 0x0577, 0x0584, 0x058b, + 0x0595, 0x059f, 0x0003, 0x00a0, 0x00b0, 0x00c0, 0x000e, 0x0002, + 0xffff, 0x0515, 0x0525, 0x0532, 0x053c, 0x0549, 0x0550, 0x055d, + // Entry 1340 - 137F + 0x056a, 0x0577, 0x0584, 0x058b, 0x0595, 0x059f, 0x000e, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x000e, 0x0002, + 0xffff, 0x0515, 0x0525, 0x0532, 0x053c, 0x0549, 0x0550, 0x055d, + 0x056a, 0x0577, 0x0584, 0x058b, 0x0595, 0x059f, 0x0003, 0x00da, + 0x00e0, 0x00d4, 0x0001, 0x00d6, 0x0002, 0x0000, 0x0425, 0x042a, + 0x0001, 0x00dc, 0x0002, 0x0000, 0x0425, 0x042a, 0x0001, 0x00e2, + 0x0002, 0x0000, 0x0425, 0x042a, 0x0004, 0x00f4, 0x00ee, 0x00eb, + // Entry 1380 - 13BF + 0x00f1, 0x0001, 0x0002, 0x04e4, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0105, 0x00ff, + 0x00fc, 0x0102, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0111, 0x0000, 0x0122, 0x0004, + 0x011f, 0x0119, 0x0116, 0x011c, 0x0001, 0x0002, 0x04e4, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, + 0x0004, 0x0130, 0x012a, 0x0127, 0x012d, 0x0001, 0x0000, 0x03c6, + // Entry 13C0 - 13FF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0008, 0x013c, 0x01a1, 0x01f8, 0x022d, 0x02fe, 0x031e, + 0x032f, 0x0340, 0x0002, 0x013f, 0x0170, 0x0003, 0x0143, 0x0152, + 0x0161, 0x000d, 0x0002, 0xffff, 0x05ac, 0x05b6, 0x05c0, 0x05ca, + 0x05d4, 0x05db, 0x05e2, 0x05ec, 0x05f6, 0x0600, 0x060a, 0x0614, + 0x000d, 0x0002, 0xffff, 0x061e, 0x0622, 0x0626, 0x062a, 0x062e, + 0x0632, 0x0632, 0x0636, 0x063a, 0x0636, 0x063e, 0x0642, 0x000d, + 0x0002, 0xffff, 0x0646, 0x0656, 0x05c0, 0x0666, 0x05d4, 0x05db, + // Entry 1400 - 143F + 0x05e2, 0x0673, 0x0680, 0x0693, 0x06a3, 0x06b3, 0x0003, 0x0174, + 0x0183, 0x0192, 0x000d, 0x0002, 0xffff, 0x05ac, 0x05b6, 0x05c0, + 0x05ca, 0x05d4, 0x05db, 0x05e2, 0x05ec, 0x05f6, 0x0600, 0x060a, + 0x0614, 0x000d, 0x0002, 0xffff, 0x061e, 0x0622, 0x0626, 0x062a, + 0x062e, 0x0632, 0x0632, 0x0636, 0x063a, 0x0636, 0x063e, 0x0642, + 0x000d, 0x0002, 0xffff, 0x0646, 0x0656, 0x05c0, 0x0666, 0x05d4, + 0x05db, 0x05e2, 0x0673, 0x0680, 0x0693, 0x06a3, 0x06b3, 0x0002, + 0x01a4, 0x01ce, 0x0005, 0x01aa, 0x01b3, 0x01c5, 0x0000, 0x01bc, + // Entry 1440 - 147F + 0x0007, 0x0002, 0x06c3, 0x06cd, 0x06d4, 0x06de, 0x06e8, 0x06f2, + 0x06fc, 0x0007, 0x0002, 0x0706, 0x070a, 0x0626, 0x070e, 0x0712, + 0x0716, 0x071a, 0x0007, 0x0002, 0x0706, 0x070a, 0x0626, 0x070e, + 0x0712, 0x0716, 0x071a, 0x0007, 0x0002, 0x06c3, 0x06cd, 0x071e, + 0x06de, 0x06e8, 0x06f2, 0x06fc, 0x0005, 0x01d4, 0x01dd, 0x01ef, + 0x0000, 0x01e6, 0x0007, 0x0002, 0x06c3, 0x06cd, 0x06d4, 0x06de, + 0x06e8, 0x06f2, 0x06fc, 0x0007, 0x0002, 0x0706, 0x070a, 0x0626, + 0x070e, 0x0712, 0x0716, 0x071a, 0x0007, 0x0002, 0x0706, 0x070a, + // Entry 1480 - 14BF + 0x0626, 0x070e, 0x0712, 0x0716, 0x071a, 0x0007, 0x0002, 0x06c3, + 0x06cd, 0x071e, 0x06de, 0x06e8, 0x06f2, 0x06fc, 0x0002, 0x01fb, + 0x0214, 0x0003, 0x01ff, 0x0206, 0x020d, 0x0005, 0x0002, 0xffff, + 0x072b, 0x0733, 0x073b, 0x0743, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x0005, 0x0002, 0xffff, 0x074b, 0x075a, + 0x0769, 0x0778, 0x0003, 0x0218, 0x021f, 0x0226, 0x0005, 0x0002, + 0xffff, 0x072b, 0x0733, 0x073b, 0x0743, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0002, 0xffff, 0x074b, + // Entry 14C0 - 14FF + 0x075a, 0x0769, 0x0778, 0x0002, 0x0230, 0x0297, 0x0003, 0x0234, + 0x0255, 0x0276, 0x0008, 0x0240, 0x0246, 0x023d, 0x0249, 0x024c, + 0x024f, 0x0252, 0x0243, 0x0001, 0x0002, 0x0787, 0x0001, 0x0002, + 0x079b, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07af, 0x0001, + 0x0002, 0x07bc, 0x0001, 0x0002, 0x07c7, 0x0001, 0x0002, 0x07d5, + 0x0001, 0x0002, 0x07dd, 0x0008, 0x0261, 0x0267, 0x025e, 0x026a, + 0x026d, 0x0270, 0x0273, 0x0264, 0x0001, 0x0002, 0x0787, 0x0001, + 0x0002, 0x07e8, 0x0001, 0x0002, 0x07ec, 0x0001, 0x0002, 0x07f0, + // Entry 1500 - 153F + 0x0001, 0x0002, 0x07bc, 0x0001, 0x0002, 0x07c7, 0x0001, 0x0002, + 0x07d5, 0x0001, 0x0002, 0x07dd, 0x0008, 0x0282, 0x0288, 0x027f, + 0x028b, 0x028e, 0x0291, 0x0294, 0x0285, 0x0001, 0x0002, 0x0787, + 0x0001, 0x0002, 0x079b, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, + 0x07af, 0x0001, 0x0002, 0x07bc, 0x0001, 0x0002, 0x07c7, 0x0001, + 0x0002, 0x07d5, 0x0001, 0x0002, 0x07dd, 0x0003, 0x029b, 0x02bc, + 0x02dd, 0x0008, 0x02a7, 0x02ad, 0x02a4, 0x02b0, 0x02b3, 0x02b6, + 0x02b9, 0x02aa, 0x0001, 0x0002, 0x0787, 0x0001, 0x0002, 0x079b, + // Entry 1540 - 157F + 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07af, 0x0001, 0x0002, + 0x07bc, 0x0001, 0x0002, 0x07f4, 0x0001, 0x0002, 0x080b, 0x0001, + 0x0002, 0x0812, 0x0008, 0x02c8, 0x02ce, 0x02c5, 0x02d1, 0x02d4, + 0x02d7, 0x02da, 0x02cb, 0x0001, 0x0002, 0x0787, 0x0001, 0x0002, + 0x07e8, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07f0, 0x0001, + 0x0002, 0x079b, 0x0001, 0x0002, 0x07f4, 0x0001, 0x0002, 0x080b, + 0x0001, 0x0002, 0x0812, 0x0008, 0x02e9, 0x02ef, 0x02e6, 0x02f2, + 0x02f5, 0x02f8, 0x02fb, 0x02ec, 0x0001, 0x0002, 0x0787, 0x0001, + // Entry 1580 - 15BF + 0x0002, 0x079b, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07af, + 0x0001, 0x0002, 0x07bc, 0x0001, 0x0002, 0x07f4, 0x0001, 0x0002, + 0x080b, 0x0001, 0x0002, 0x0812, 0x0003, 0x030d, 0x0318, 0x0302, + 0x0002, 0x0305, 0x0309, 0x0002, 0x0002, 0x081c, 0x0830, 0x0002, + 0x0000, 0x04f5, 0x2012, 0x0002, 0x0310, 0x0314, 0x0002, 0x0002, + 0x0505, 0x0847, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, 0x031a, + 0x0002, 0x0002, 0x0505, 0x0847, 0x0004, 0x032c, 0x0326, 0x0323, + 0x0329, 0x0001, 0x0002, 0x084f, 0x0001, 0x0001, 0x1fb0, 0x0001, + // Entry 15C0 - 15FF + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x033d, 0x0337, + 0x0334, 0x033a, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x034e, + 0x0348, 0x0345, 0x034b, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0353, 0x0001, 0x0355, 0x0003, 0x0000, 0x0000, 0x0359, 0x000d, + 0x0002, 0xffff, 0x0868, 0x0875, 0x087f, 0x0896, 0x08ad, 0x08c4, + 0x08db, 0x08e5, 0x08f2, 0x08ff, 0x0909, 0x0919, 0x0040, 0x03a9, + // Entry 1600 - 163F + 0x0000, 0x0000, 0x03ae, 0x03c5, 0x03dc, 0x03f3, 0x040a, 0x0421, + 0x0438, 0x044f, 0x0466, 0x047d, 0x0498, 0x04b3, 0x0000, 0x0000, + 0x0000, 0x04ce, 0x04e7, 0x0500, 0x0000, 0x0000, 0x0000, 0x0519, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x051e, 0x0532, 0x0546, + 0x055a, 0x056e, 0x0582, 0x0596, 0x05aa, 0x05be, 0x05d2, 0x05e6, + 0x05fa, 0x060e, 0x0622, 0x0636, 0x064a, 0x065e, 0x0672, 0x0686, + 0x069a, 0x06ae, 0x0000, 0x06c2, 0x0000, 0x06c7, 0x06dd, 0x06ef, + 0x0701, 0x0717, 0x0729, 0x073b, 0x0751, 0x0767, 0x077d, 0x0001, + // Entry 1640 - 167F + 0x03ab, 0x0001, 0x0002, 0x0929, 0x0003, 0x03b2, 0x03b5, 0x03ba, + 0x0001, 0x0002, 0x0933, 0x0003, 0x0002, 0x093d, 0x0954, 0x0968, + 0x0002, 0x03bd, 0x03c1, 0x0002, 0x0002, 0x0985, 0x0985, 0x0002, + 0x0002, 0x09be, 0x09a3, 0x0003, 0x03c9, 0x03cc, 0x03d1, 0x0001, + 0x0002, 0x0933, 0x0003, 0x0002, 0x093d, 0x0954, 0x0968, 0x0002, + 0x03d4, 0x03d8, 0x0002, 0x0002, 0x0985, 0x0985, 0x0002, 0x0002, + 0x09be, 0x09be, 0x0003, 0x03e0, 0x03e3, 0x03e8, 0x0001, 0x0002, + 0x0933, 0x0003, 0x0002, 0x093d, 0x0954, 0x0968, 0x0002, 0x03eb, + // Entry 1680 - 16BF + 0x03ef, 0x0002, 0x0002, 0x0985, 0x0985, 0x0002, 0x0002, 0x09be, + 0x09be, 0x0003, 0x03f7, 0x03fa, 0x03ff, 0x0001, 0x0002, 0x09dc, + 0x0003, 0x0002, 0x09e3, 0x09fd, 0x0a0b, 0x0002, 0x0402, 0x0406, + 0x0002, 0x0002, 0x0a25, 0x0a25, 0x0002, 0x0002, 0x0a31, 0x0a31, + 0x0003, 0x040e, 0x0411, 0x0416, 0x0001, 0x0002, 0x09dc, 0x0003, + 0x0002, 0x09e3, 0x09fd, 0x0a0b, 0x0002, 0x0419, 0x041d, 0x0002, + 0x0002, 0x0a25, 0x0a25, 0x0002, 0x0002, 0x0a31, 0x0a31, 0x0003, + 0x0425, 0x0428, 0x042d, 0x0001, 0x0002, 0x09dc, 0x0003, 0x0002, + // Entry 16C0 - 16FF + 0x09e3, 0x09fd, 0x0a0b, 0x0002, 0x0430, 0x0434, 0x0002, 0x0002, + 0x0a25, 0x0a25, 0x0002, 0x0002, 0x0a31, 0x0a31, 0x0003, 0x043c, + 0x043f, 0x0444, 0x0001, 0x0002, 0x0a46, 0x0003, 0x0002, 0x0a4d, + 0x0a61, 0x0a72, 0x0002, 0x0447, 0x044b, 0x0002, 0x0002, 0x0aa4, + 0x0a8c, 0x0002, 0x0002, 0x0ad7, 0x0abf, 0x0003, 0x0453, 0x0456, + 0x045b, 0x0001, 0x0002, 0x0a46, 0x0003, 0x0002, 0x0a4d, 0x0a61, + 0x0a72, 0x0002, 0x045e, 0x0462, 0x0002, 0x0002, 0x0aa4, 0x0aa4, + 0x0002, 0x0002, 0x0ad7, 0x0ad7, 0x0003, 0x046a, 0x046d, 0x0472, + // Entry 1700 - 173F + 0x0001, 0x0002, 0x0a46, 0x0003, 0x0002, 0x0a4d, 0x0a61, 0x0a72, + 0x0002, 0x0475, 0x0479, 0x0002, 0x0002, 0x0aa4, 0x0aa4, 0x0002, + 0x0002, 0x0ad7, 0x0ad7, 0x0004, 0x0482, 0x0485, 0x048a, 0x0495, + 0x0001, 0x0002, 0x0af2, 0x0003, 0x0002, 0x0aff, 0x0b19, 0x0b30, + 0x0002, 0x048d, 0x0491, 0x0002, 0x0002, 0x0b6e, 0x0b50, 0x0002, + 0x0002, 0x0bad, 0x0b8f, 0x0001, 0x0002, 0x0bce, 0x0004, 0x049d, + 0x04a0, 0x04a5, 0x04b0, 0x0001, 0x0002, 0x0af2, 0x0003, 0x0002, + 0x0bdf, 0x0bf9, 0x0b30, 0x0002, 0x04a8, 0x04ac, 0x0002, 0x0002, + // Entry 1740 - 177F + 0x0b6e, 0x0b6e, 0x0002, 0x0002, 0x0bad, 0x0bad, 0x0001, 0x0002, + 0x0bce, 0x0004, 0x04b8, 0x04bb, 0x04c0, 0x04cb, 0x0001, 0x0002, + 0x0af2, 0x0003, 0x0002, 0x0bdf, 0x0bf9, 0x0b30, 0x0002, 0x04c3, + 0x04c7, 0x0002, 0x0002, 0x0b6e, 0x0b6e, 0x0002, 0x0002, 0x0bad, + 0x0bad, 0x0001, 0x0002, 0x0bce, 0x0003, 0x04d2, 0x04d5, 0x04dc, + 0x0001, 0x0002, 0x0c10, 0x0005, 0x0002, 0x0c31, 0x0c3e, 0x0c45, + 0x0c17, 0x0c4c, 0x0002, 0x04df, 0x04e3, 0x0002, 0x0002, 0x0c78, + 0x0c60, 0x0002, 0x0002, 0x0cab, 0x0c93, 0x0003, 0x04eb, 0x04ee, + // Entry 1780 - 17BF + 0x04f5, 0x0001, 0x0002, 0x0c10, 0x0005, 0x0002, 0x0cc6, 0x0c3e, + 0x0c45, 0x0c17, 0x0c4c, 0x0002, 0x04f8, 0x04fc, 0x0002, 0x0002, + 0x0cd6, 0x0c60, 0x0002, 0x0002, 0x0d0a, 0x0cf1, 0x0003, 0x0504, + 0x0507, 0x050e, 0x0001, 0x0002, 0x0c10, 0x0005, 0x0002, 0x0cc6, + 0x0c3e, 0x0c45, 0x0c17, 0x0c4c, 0x0002, 0x0511, 0x0515, 0x0002, + 0x0002, 0x0cd6, 0x0c60, 0x0002, 0x0002, 0x0d0a, 0x0cf1, 0x0001, + 0x051b, 0x0001, 0x0002, 0x0d25, 0x0003, 0x0000, 0x0522, 0x0527, + 0x0003, 0x0002, 0x0d32, 0x0d49, 0x0d60, 0x0002, 0x052a, 0x052e, + // Entry 17C0 - 17FF + 0x0002, 0x0002, 0x0d98, 0x0d7d, 0x0002, 0x0002, 0x0dd1, 0x0db6, + 0x0003, 0x0000, 0x0536, 0x053b, 0x0003, 0x0002, 0x0d32, 0x0d49, + 0x0d60, 0x0002, 0x053e, 0x0542, 0x0002, 0x0002, 0x0d98, 0x0d98, + 0x0002, 0x0002, 0x0dd1, 0x0dd1, 0x0003, 0x0000, 0x054a, 0x054f, + 0x0003, 0x0002, 0x0d32, 0x0d49, 0x0d60, 0x0002, 0x0552, 0x0556, + 0x0002, 0x0002, 0x0d98, 0x0d98, 0x0002, 0x0002, 0x0dd1, 0x0dd1, + 0x0003, 0x0000, 0x055e, 0x0563, 0x0003, 0x0002, 0x0def, 0x0e03, + 0x0e17, 0x0002, 0x0566, 0x056a, 0x0002, 0x0002, 0x0e49, 0x0e31, + // Entry 1800 - 183F + 0x0002, 0x0002, 0x0e7f, 0x0e67, 0x0003, 0x0000, 0x0572, 0x0577, + 0x0003, 0x0002, 0x0def, 0x0e03, 0x0e17, 0x0002, 0x057a, 0x057e, + 0x0002, 0x0002, 0x0e49, 0x0e49, 0x0002, 0x0002, 0x0e7f, 0x0e7f, + 0x0003, 0x0000, 0x0586, 0x058b, 0x0003, 0x0002, 0x0def, 0x0e03, + 0x0e17, 0x0002, 0x058e, 0x0592, 0x0002, 0x0002, 0x0e49, 0x0e49, + 0x0002, 0x0002, 0x0e7f, 0x0e7f, 0x0003, 0x0000, 0x059a, 0x059f, + 0x0003, 0x0002, 0x0e9d, 0x0eb7, 0x0ed1, 0x0002, 0x05a2, 0x05a6, + 0x0002, 0x0002, 0x0f0f, 0x0ef1, 0x0002, 0x0002, 0x0f51, 0x0f33, + // Entry 1840 - 187F + 0x0003, 0x0000, 0x05ae, 0x05b3, 0x0003, 0x0002, 0x0e9d, 0x0eb7, + 0x0ed1, 0x0002, 0x05b6, 0x05ba, 0x0002, 0x0002, 0x0f0f, 0x0f0f, + 0x0002, 0x0002, 0x0f51, 0x0f51, 0x0003, 0x0000, 0x05c2, 0x05c7, + 0x0003, 0x0002, 0x0e9d, 0x0eb7, 0x0ed1, 0x0002, 0x05ca, 0x05ce, + 0x0002, 0x0002, 0x0f0f, 0x0f0f, 0x0002, 0x0002, 0x0f51, 0x0f51, + 0x0003, 0x0000, 0x05d6, 0x05db, 0x0003, 0x0002, 0x0f75, 0x0f8c, + 0x0fa3, 0x0002, 0x05de, 0x05e2, 0x0002, 0x0002, 0x0fdb, 0x0fc0, + 0x0002, 0x0002, 0x1017, 0x0ffc, 0x0003, 0x0000, 0x05ea, 0x05ef, + // Entry 1880 - 18BF + 0x0003, 0x0002, 0x0f75, 0x0f8c, 0x0fa3, 0x0002, 0x05f2, 0x05f6, + 0x0002, 0x0002, 0x0fdb, 0x0fdb, 0x0002, 0x0002, 0x1017, 0x1017, + 0x0003, 0x0000, 0x05fe, 0x0603, 0x0003, 0x0002, 0x0f75, 0x0f8c, + 0x0fa3, 0x0002, 0x0606, 0x060a, 0x0002, 0x0002, 0x0fdb, 0x0fdb, + 0x0002, 0x0002, 0x1017, 0x1017, 0x0003, 0x0000, 0x0612, 0x0617, + 0x0003, 0x0002, 0x1038, 0x104f, 0x1066, 0x0002, 0x061a, 0x061e, + 0x0002, 0x0002, 0x109e, 0x1083, 0x0002, 0x0002, 0x10d7, 0x10bc, + 0x0003, 0x0000, 0x0626, 0x062b, 0x0003, 0x0002, 0x1038, 0x104f, + // Entry 18C0 - 18FF + 0x1066, 0x0002, 0x062e, 0x0632, 0x0002, 0x0002, 0x109e, 0x109e, + 0x0002, 0x0002, 0x10d7, 0x10d7, 0x0003, 0x0000, 0x063a, 0x063f, + 0x0003, 0x0002, 0x1038, 0x104f, 0x1066, 0x0002, 0x0642, 0x0646, + 0x0002, 0x0002, 0x109e, 0x109e, 0x0002, 0x0002, 0x10d7, 0x10d7, + 0x0003, 0x0000, 0x064e, 0x0653, 0x0003, 0x0002, 0x10f5, 0x110c, + 0x1123, 0x0002, 0x0656, 0x065a, 0x0002, 0x0002, 0x115b, 0x1140, + 0x0002, 0x0002, 0x1197, 0x117c, 0x0003, 0x0000, 0x0662, 0x0667, + 0x0003, 0x0002, 0x10f5, 0x110c, 0x1123, 0x0002, 0x066a, 0x066e, + // Entry 1900 - 193F + 0x0002, 0x0002, 0x115b, 0x115b, 0x0002, 0x0002, 0x1197, 0x1197, + 0x0003, 0x0000, 0x0676, 0x067b, 0x0003, 0x0002, 0x10f5, 0x110c, + 0x1123, 0x0002, 0x067e, 0x0682, 0x0002, 0x0002, 0x115b, 0x115b, + 0x0002, 0x0002, 0x1197, 0x1197, 0x0003, 0x0000, 0x068a, 0x068f, + 0x0003, 0x0002, 0x11b8, 0x11cf, 0x11e6, 0x0002, 0x0692, 0x0696, + 0x0002, 0x0002, 0x121e, 0x1203, 0x0002, 0x0002, 0x125a, 0x123f, + 0x0003, 0x0000, 0x069e, 0x06a3, 0x0003, 0x0002, 0x11b8, 0x11cf, + 0x11e6, 0x0002, 0x06a6, 0x06aa, 0x0002, 0x0002, 0x121e, 0x121e, + // Entry 1940 - 197F + 0x0002, 0x0002, 0x125a, 0x125a, 0x0003, 0x0000, 0x06b2, 0x06b7, + 0x0003, 0x0002, 0x11b8, 0x11cf, 0x11e6, 0x0002, 0x06ba, 0x06be, + 0x0002, 0x0002, 0x121e, 0x121e, 0x0002, 0x0002, 0x125a, 0x125a, + 0x0001, 0x06c4, 0x0001, 0x0002, 0x127b, 0x0003, 0x06cb, 0x06ce, + 0x06d2, 0x0001, 0x0002, 0x1292, 0x0002, 0x0002, 0xffff, 0x129c, + 0x0002, 0x06d5, 0x06d9, 0x0002, 0x0002, 0x12c8, 0x12ad, 0x0002, + 0x0002, 0x1301, 0x12e6, 0x0003, 0x06e1, 0x0000, 0x06e4, 0x0001, + 0x0002, 0x1292, 0x0002, 0x06e7, 0x06eb, 0x0002, 0x0002, 0x12c8, + // Entry 1980 - 19BF + 0x12ad, 0x0002, 0x0002, 0x1301, 0x12e6, 0x0003, 0x06f3, 0x0000, + 0x06f6, 0x0001, 0x0002, 0x1292, 0x0002, 0x06f9, 0x06fd, 0x0002, + 0x0002, 0x12c8, 0x12ad, 0x0002, 0x0002, 0x1301, 0x12e6, 0x0003, + 0x0705, 0x0708, 0x070c, 0x0001, 0x0002, 0x131f, 0x0002, 0x0002, + 0xffff, 0x1329, 0x0002, 0x070f, 0x0713, 0x0002, 0x0002, 0x1355, + 0x133a, 0x0002, 0x0002, 0x1391, 0x1376, 0x0003, 0x071b, 0x0000, + 0x071e, 0x0001, 0x0002, 0x131f, 0x0002, 0x0721, 0x0725, 0x0002, + 0x0002, 0x1355, 0x133a, 0x0002, 0x0002, 0x1391, 0x1376, 0x0003, + // Entry 19C0 - 19FF + 0x072d, 0x0000, 0x0730, 0x0001, 0x0002, 0x131f, 0x0002, 0x0733, + 0x0737, 0x0002, 0x0002, 0x1355, 0x133a, 0x0002, 0x0002, 0x1391, + 0x1376, 0x0003, 0x073f, 0x0742, 0x0746, 0x0001, 0x0002, 0x13b2, + 0x0002, 0x0002, 0xffff, 0x13bf, 0x0002, 0x0749, 0x074d, 0x0002, + 0x0002, 0x13e7, 0x13c9, 0x0002, 0x0002, 0x1426, 0x1408, 0x0003, + 0x0755, 0x0758, 0x075c, 0x0001, 0x0002, 0x13b2, 0x0002, 0x0002, + 0xffff, 0x13bf, 0x0002, 0x075f, 0x0763, 0x0002, 0x0002, 0x13e7, + 0x13c9, 0x0002, 0x0002, 0x1426, 0x1408, 0x0003, 0x076b, 0x076e, + // Entry 1A00 - 1A3F + 0x0772, 0x0001, 0x0002, 0x13b2, 0x0002, 0x0002, 0xffff, 0x13bf, + 0x0002, 0x0775, 0x0779, 0x0002, 0x0002, 0x13e7, 0x13c9, 0x0002, + 0x0002, 0x1426, 0x1408, 0x0001, 0x077f, 0x0001, 0x0002, 0x1447, + 0x0004, 0x0787, 0x078c, 0x0791, 0x07a0, 0x0003, 0x0002, 0x145b, + 0x1467, 0x1479, 0x0003, 0x0002, 0x1488, 0x1493, 0x14b8, 0x0002, + 0x0000, 0x0794, 0x0003, 0x0000, 0x079b, 0x0798, 0x0001, 0x0002, + 0x14d3, 0x0003, 0x0002, 0xffff, 0x1500, 0x1534, 0x0002, 0x0000, + 0x07a3, 0x0003, 0x083d, 0x08d3, 0x07a7, 0x0094, 0x0002, 0x156b, + // Entry 1A40 - 1A7F + 0x158e, 0x15bb, 0x15e2, 0x163a, 0x16cc, 0x1764, 0x17fc, 0x189a, + 0x1938, 0x19c9, 0x1a61, 0x1adf, 0x1b45, 0x1bd0, 0x1c87, 0x1d38, + 0x1dbf, 0x1e7f, 0x1f72, 0x2075, 0x2158, 0x2218, 0x2292, 0x2300, + 0x235a, 0x2371, 0x23b8, 0x2426, 0x246e, 0x24c4, 0x24ff, 0x2565, + 0x25be, 0x263d, 0x26ba, 0x26d8, 0x2719, 0x278e, 0x2805, 0x2851, + 0x2868, 0x288f, 0x28d7, 0x2939, 0x2980, 0x2a1e, 0x2a8c, 0x2ae7, + 0x2b82, 0x2c0a, 0x2c4c, 0x2c73, 0x2cba, 0x2cd7, 0x2d11, 0x2d65, + 0x2d8f, 0x2de6, 0x2e87, 0x2efb, 0x2f28, 0x2f73, 0x3013, 0x3096, + // Entry 1A80 - 1ABF + 0x30fe, 0x3122, 0x3149, 0x3169, 0x319c, 0x31cc, 0x3213, 0x3295, + 0x332c, 0x33a1, 0x3420, 0x34c0, 0x34ed, 0x3531, 0x3583, 0x35d3, + 0x3659, 0x3679, 0x36ce, 0x3744, 0x3792, 0x37fa, 0x3817, 0x3834, + 0x3851, 0x3898, 0x38f2, 0x3950, 0x3a26, 0x3ac9, 0x3b69, 0x3bce, + 0x3beb, 0x3c02, 0x3c3d, 0x3cc0, 0x3d62, 0x3df1, 0x3e08, 0x3e5c, + 0x3f28, 0x3fd5, 0x405d, 0x40b1, 0x40c8, 0x4104, 0x4166, 0x41c2, + 0x4210, 0x426c, 0x42fa, 0x431a, 0x4331, 0x4354, 0x4371, 0x43b5, + 0x444d, 0x44c9, 0x450e, 0x4528, 0x4552, 0x4579, 0x45a0, 0x45ba, + // Entry 1AC0 - 1AFF + 0x45d1, 0x4602, 0x465a, 0x467a, 0x46ab, 0x46f3, 0x472d, 0x4793, + 0x47c4, 0x4835, 0x48ac, 0x48f4, 0x4947, 0x49fa, 0x4a6b, 0x4a85, + 0x4aa3, 0x4af8, 0x4b9c, 0x0094, 0x0002, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1613, 0x16a2, 0x173a, 0x17cf, 0x186d, 0x190e, 0x199f, + 0x1a34, 0x1ac8, 0x1b2b, 0x1b9d, 0x1c47, 0x1d1b, 0x1d8c, 0x1e39, + 0x1f1f, 0x202f, 0x2115, 0x21f5, 0x2278, 0x22e0, 0xffff, 0xffff, + 0x238b, 0xffff, 0x2450, 0xffff, 0x24e8, 0x2551, 0x25a7, 0x2610, + 0xffff, 0xffff, 0x26fc, 0x276d, 0x27f4, 0xffff, 0xffff, 0xffff, + // Entry 1B00 - 1B3F + 0x28b3, 0xffff, 0x2953, 0x29f4, 0xffff, 0x2abd, 0x2b55, 0x2bf6, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2cf4, 0xffff, 0xffff, 0x2db9, + 0x2e5a, 0xffff, 0xffff, 0x2f3f, 0x2ff2, 0x306f, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x31fc, 0x3265, 0x330f, 0x338a, + 0x33f3, 0xffff, 0xffff, 0x351a, 0xffff, 0x359d, 0xffff, 0xffff, + 0x369d, 0xffff, 0x3765, 0xffff, 0xffff, 0xffff, 0xffff, 0x3878, + 0xffff, 0x390c, 0x39ef, 0x3aab, 0x3b42, 0xffff, 0xffff, 0xffff, + 0x3c19, 0x3c9f, 0x3d26, 0xffff, 0xffff, 0x3e32, 0x3ef2, 0x3fa8, + // Entry 1B40 - 1B7F + 0x4040, 0xffff, 0xffff, 0x40ea, 0x4152, 0x41a8, 0xffff, 0x4237, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4388, 0x4426, 0x44b2, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x45e8, + 0xffff, 0xffff, 0x4694, 0xffff, 0x4707, 0xffff, 0x47aa, 0x4812, + 0x4895, 0xffff, 0x4911, 0x49ca, 0xffff, 0xffff, 0xffff, 0x4acb, + 0x4b66, 0x0094, 0x0002, 0xffff, 0xffff, 0xffff, 0xffff, 0x166e, + 0x1706, 0x179b, 0x1836, 0x18d7, 0x196f, 0x1a00, 0x1a8e, 0x1b03, + 0x1b6c, 0x1c0d, 0x1cd4, 0x1d62, 0x1dff, 0x1ed2, 0x1fd2, 0x20c8, + // Entry 1B80 - 1BBF + 0x21a8, 0x2248, 0x22b9, 0x232d, 0xffff, 0xffff, 0x23f2, 0xffff, + 0x2499, 0xffff, 0x2523, 0x2586, 0x25e2, 0x267d, 0xffff, 0xffff, + 0x2743, 0x27bc, 0x2826, 0xffff, 0xffff, 0xffff, 0x2908, 0xffff, + 0x29ba, 0x2a55, 0xffff, 0x2b1e, 0x2bbc, 0x2c2b, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2d3b, 0xffff, 0xffff, 0x2e20, 0x2ec1, 0xffff, + 0xffff, 0x2fb4, 0x3041, 0x30cd, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3237, 0x32d5, 0x3356, 0x33c5, 0x346b, 0xffff, + 0xffff, 0x3555, 0xffff, 0x3619, 0xffff, 0xffff, 0x370c, 0xffff, + // Entry 1BC0 - 1BFF + 0x37c9, 0xffff, 0xffff, 0xffff, 0xffff, 0x38c5, 0xffff, 0x39a1, + 0x3a6a, 0x3b07, 0x3b9d, 0xffff, 0xffff, 0xffff, 0x3c6e, 0x3cee, + 0x3dab, 0xffff, 0xffff, 0x3ea7, 0x3f6b, 0x400c, 0x4087, 0xffff, + 0xffff, 0x412b, 0x4187, 0x41e9, 0xffff, 0x42ae, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x43ef, 0x4481, 0x44ed, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4629, 0xffff, 0xffff, + 0x46cf, 0xffff, 0x4760, 0xffff, 0x47eb, 0x4865, 0x48d0, 0xffff, + 0x498a, 0x4a34, 0xffff, 0xffff, 0xffff, 0x4b2f, 0x4bdf, 0x0003, + // Entry 1C00 - 1C3F + 0x0004, 0x0534, 0x0a82, 0x0012, 0x0017, 0x0000, 0x0030, 0x0000, + 0x009d, 0x0000, 0x00b5, 0x00e0, 0x031c, 0x0000, 0x0386, 0x0000, + 0x0000, 0x0000, 0x0000, 0x040c, 0x0504, 0x0526, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x001d, 0x0003, 0x0026, 0x002b, 0x0021, + 0x0001, 0x0023, 0x0001, 0x0003, 0x0000, 0x0001, 0x0028, 0x0001, + 0x0000, 0x0000, 0x0001, 0x002d, 0x0001, 0x0000, 0x0000, 0x0001, + 0x0032, 0x0002, 0x0035, 0x0069, 0x0003, 0x0039, 0x0049, 0x0059, + 0x000e, 0x0003, 0xffff, 0x001c, 0x0023, 0x002c, 0x0037, 0x0040, + // Entry 1C40 - 1C7F + 0x0049, 0x0054, 0x0061, 0x006e, 0x0077, 0x0082, 0x008b, 0x0094, + 0x000e, 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x00a9, + 0x00ac, 0x00af, 0x00b2, 0x00b5, 0x00b8, 0x00bd, 0x00c2, 0x00c7, + 0x000e, 0x0003, 0xffff, 0x001c, 0x0023, 0x002c, 0x0037, 0x0040, + 0x0049, 0x0054, 0x0061, 0x006e, 0x0077, 0x0082, 0x008b, 0x0094, + 0x0003, 0x006d, 0x007d, 0x008d, 0x000e, 0x0003, 0xffff, 0x001c, + 0x0023, 0x002c, 0x0037, 0x0040, 0x0049, 0x0054, 0x0061, 0x006e, + 0x0077, 0x0082, 0x008b, 0x0094, 0x000e, 0x0003, 0xffff, 0x009d, + // Entry 1C80 - 1CBF + 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, 0x00af, 0x00b2, 0x00b5, + 0x00b8, 0x00bd, 0x00c2, 0x00c7, 0x000e, 0x0003, 0xffff, 0x001c, + 0x0023, 0x002c, 0x0037, 0x0040, 0x0049, 0x0054, 0x0061, 0x006e, + 0x0077, 0x0082, 0x008b, 0x0094, 0x0001, 0x009f, 0x0001, 0x00a1, + 0x0003, 0x0000, 0x0000, 0x00a5, 0x000e, 0x0003, 0xffff, 0x00cc, + 0x00d9, 0x00e2, 0x00eb, 0x00f6, 0x00fb, 0x0104, 0x0111, 0x011e, + 0x0127, 0x012e, 0x0137, 0x0140, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00be, 0x0000, 0x00cf, 0x0004, 0x00cc, 0x00c6, + // Entry 1CC0 - 1CFF + 0x00c3, 0x00c9, 0x0001, 0x0003, 0x014b, 0x0001, 0x0003, 0x015f, + 0x0001, 0x0003, 0x016c, 0x0001, 0x0003, 0x017c, 0x0004, 0x00dd, + 0x00d7, 0x00d4, 0x00da, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x00e9, 0x014e, 0x01a5, 0x01da, 0x02cf, 0x02e9, 0x02fa, 0x030b, + 0x0002, 0x00ec, 0x011d, 0x0003, 0x00f0, 0x00ff, 0x010e, 0x000d, + 0x0003, 0xffff, 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, 0x01c3, + 0x01ce, 0x01d9, 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x000d, 0x0003, + // Entry 1D00 - 1D3F + 0xffff, 0x0218, 0x021b, 0x021e, 0x0221, 0x0224, 0x0227, 0x022a, + 0x022d, 0x0230, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, 0xffff, + 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, 0x01c3, 0x01ce, 0x01d9, + 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x0003, 0x0121, 0x0130, 0x013f, + 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, + 0x01c3, 0x01ce, 0x01d9, 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x000d, + 0x0003, 0xffff, 0x0218, 0x021b, 0x021e, 0x0221, 0x0224, 0x0227, + 0x022a, 0x022d, 0x0230, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, + // Entry 1D40 - 1D7F + 0xffff, 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, 0x01c3, 0x01ce, + 0x01d9, 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x0002, 0x0151, 0x017b, + 0x0005, 0x0157, 0x0160, 0x0172, 0x0000, 0x0169, 0x0007, 0x0003, + 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, 0x0285, 0x0292, 0x0007, + 0x0003, 0x029d, 0x0227, 0x02a0, 0x02a3, 0x02a6, 0x02a9, 0x0230, + 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, 0x0285, + 0x0292, 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, + 0x0285, 0x0292, 0x0005, 0x0181, 0x018a, 0x019c, 0x0000, 0x0193, + // Entry 1D80 - 1DBF + 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, 0x0285, + 0x0292, 0x0007, 0x0003, 0x029d, 0x0227, 0x02a0, 0x02a3, 0x02a6, + 0x02a9, 0x0230, 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, + 0x0278, 0x0285, 0x0292, 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, + 0x0267, 0x0278, 0x0285, 0x0292, 0x0002, 0x01a8, 0x01c1, 0x0003, + 0x01ac, 0x01b3, 0x01ba, 0x0005, 0x0003, 0xffff, 0x02ac, 0x02c2, + 0x02da, 0x02f2, 0x0005, 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, + 0x00a6, 0x0005, 0x0003, 0xffff, 0x02ac, 0x02c2, 0x02da, 0x02f2, + // Entry 1DC0 - 1DFF + 0x0003, 0x01c5, 0x01cc, 0x01d3, 0x0005, 0x0003, 0xffff, 0x02ac, + 0x02c2, 0x02da, 0x02f2, 0x0005, 0x0003, 0xffff, 0x009d, 0x00a0, + 0x00a3, 0x00a6, 0x0005, 0x0003, 0xffff, 0x02ac, 0x02c2, 0x02da, + 0x02f2, 0x0002, 0x01dd, 0x0256, 0x0003, 0x01e1, 0x0208, 0x022f, + 0x000b, 0x01ed, 0x01f0, 0x0000, 0x01f3, 0x01f9, 0x01ff, 0x0202, + 0x0000, 0x01f6, 0x01fc, 0x0205, 0x0001, 0x0003, 0x030a, 0x0001, + 0x0003, 0x021e, 0x0001, 0x0003, 0x030d, 0x0001, 0x0003, 0x030a, + 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, + // Entry 1E00 - 1E3F + 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x022a, 0x000b, + 0x0214, 0x0217, 0x0000, 0x021a, 0x0220, 0x0226, 0x0229, 0x0000, + 0x021d, 0x0223, 0x022c, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, + 0x021e, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, + 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, + 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x000b, 0x023b, + 0x023e, 0x0000, 0x0241, 0x0247, 0x024d, 0x0250, 0x0000, 0x0244, + 0x024a, 0x0253, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, 0x021e, + // Entry 1E40 - 1E7F + 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, + 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, + 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x0003, 0x025a, 0x0281, + 0x02a8, 0x000b, 0x0266, 0x0269, 0x0000, 0x026c, 0x0272, 0x0278, + 0x027b, 0x0000, 0x026f, 0x0275, 0x027e, 0x0001, 0x0003, 0x030a, + 0x0001, 0x0003, 0x021e, 0x0001, 0x0003, 0x030d, 0x0001, 0x0003, + 0x030a, 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, + 0x0003, 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, + // Entry 1E80 - 1EBF + 0x000b, 0x028d, 0x0290, 0x0000, 0x0293, 0x0299, 0x029f, 0x02a2, + 0x0000, 0x0296, 0x029c, 0x02a5, 0x0001, 0x0003, 0x030a, 0x0001, + 0x0003, 0x021e, 0x0001, 0x0003, 0x030d, 0x0001, 0x0003, 0x035f, + 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, + 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x000b, + 0x02b4, 0x02b7, 0x0000, 0x02ba, 0x02c0, 0x02c6, 0x02c9, 0x0000, + 0x02bd, 0x02c3, 0x02cc, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, + 0x0333, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, + // Entry 1EC0 - 1EFF + 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, + 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x0003, 0x02de, + 0x0000, 0x02d3, 0x0002, 0x02d6, 0x02da, 0x0002, 0x0003, 0x0377, + 0x038d, 0x0002, 0x0003, 0xffff, 0x039a, 0x0002, 0x02e1, 0x02e5, + 0x0002, 0x0003, 0x03b0, 0x021e, 0x0002, 0x0003, 0xffff, 0x03b6, + 0x0004, 0x02f7, 0x02f1, 0x02ee, 0x02f4, 0x0001, 0x0003, 0x03bc, + 0x0001, 0x0003, 0x03ce, 0x0001, 0x0003, 0x03d9, 0x0001, 0x0003, + 0x03e7, 0x0004, 0x0308, 0x0302, 0x02ff, 0x0305, 0x0001, 0x0002, + // Entry 1F00 - 1F3F + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0004, 0x0319, 0x0313, 0x0310, 0x0316, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0006, 0x0323, 0x0000, 0x0000, 0x0000, + 0x036e, 0x0375, 0x0002, 0x0326, 0x034a, 0x0003, 0x032a, 0x0000, + 0x033a, 0x000e, 0x0003, 0x0445, 0x03f3, 0x03fc, 0x040b, 0x0416, + 0x041f, 0x0428, 0x043c, 0x045b, 0x0466, 0x046f, 0x047a, 0x0483, + 0x0488, 0x000e, 0x0003, 0x0445, 0x03f3, 0x03fc, 0x040b, 0x0416, + // Entry 1F40 - 1F7F + 0x041f, 0x0428, 0x043c, 0x045b, 0x0466, 0x046f, 0x047a, 0x0483, + 0x0488, 0x0003, 0x034e, 0x0000, 0x035e, 0x000e, 0x0003, 0x0445, + 0x03f3, 0x03fc, 0x040b, 0x0416, 0x041f, 0x0428, 0x043c, 0x045b, + 0x0466, 0x046f, 0x047a, 0x0483, 0x0488, 0x000e, 0x0003, 0x0445, + 0x03f3, 0x03fc, 0x040b, 0x0416, 0x041f, 0x0428, 0x043c, 0x045b, + 0x0466, 0x046f, 0x047a, 0x0483, 0x0488, 0x0001, 0x0370, 0x0001, + 0x0372, 0x0001, 0x0003, 0x030a, 0x0004, 0x0383, 0x037d, 0x037a, + 0x0380, 0x0001, 0x0003, 0x014b, 0x0001, 0x0003, 0x015f, 0x0001, + // Entry 1F80 - 1FBF + 0x0003, 0x016c, 0x0001, 0x0003, 0x017c, 0x0008, 0x038f, 0x0000, + 0x0000, 0x0000, 0x03f4, 0x03fb, 0x0000, 0x9006, 0x0002, 0x0392, + 0x03c3, 0x0003, 0x0396, 0x03a5, 0x03b4, 0x000d, 0x0003, 0xffff, + 0x0493, 0x049c, 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, 0x0502, + 0x050d, 0x0518, 0x0521, 0x0533, 0x000d, 0x0003, 0xffff, 0x009d, + 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, 0x00af, 0x00b2, 0x00b5, + 0x00b8, 0x00bd, 0x00c2, 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, + 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, 0x0502, 0x050d, 0x0518, + // Entry 1FC0 - 1FFF + 0x0521, 0x0533, 0x0003, 0x03c7, 0x03d6, 0x03e5, 0x000d, 0x0003, + 0xffff, 0x0493, 0x049c, 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, + 0x0502, 0x050d, 0x0518, 0x0521, 0x0533, 0x000d, 0x0003, 0xffff, + 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, 0x00af, 0x00b2, + 0x00b5, 0x00b8, 0x00bd, 0x00c2, 0x000d, 0x0003, 0xffff, 0x0493, + 0x049c, 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, 0x0502, 0x050d, + 0x0518, 0x0521, 0x0533, 0x0001, 0x03f6, 0x0001, 0x03f8, 0x0001, + 0x0003, 0x0543, 0x0004, 0x0409, 0x0403, 0x0400, 0x0406, 0x0001, + // Entry 2000 - 203F + 0x0003, 0x014b, 0x0001, 0x0003, 0x015f, 0x0001, 0x0003, 0x0548, + 0x0001, 0x0003, 0x017c, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0412, 0x0001, 0x0414, 0x0001, 0x0416, 0x00ec, 0x0003, 0x0554, + 0x055d, 0x056a, 0x0575, 0x057e, 0x0587, 0x0590, 0x0599, 0x05a4, + 0x05ad, 0x05b8, 0x05c3, 0x05d9, 0x05ed, 0x0601, 0x0615, 0x0629, + 0x0632, 0x063c, 0x064b, 0x0654, 0x065f, 0x066a, 0x0688, 0x0691, + 0x069c, 0x06a5, 0x06ae, 0x06b9, 0x06c6, 0x06cf, 0x06dc, 0x06e7, + 0x06f0, 0x06fb, 0x0706, 0x0711, 0x0720, 0x072d, 0x0736, 0x073f, + // Entry 2040 - 207F + 0x0746, 0x0755, 0x075f, 0x0768, 0x0771, 0x077c, 0x0785, 0x078f, + 0x0798, 0x07bc, 0x07cb, 0x07d6, 0x07e1, 0x07ec, 0x07f7, 0x0800, + 0x080b, 0x0818, 0x0829, 0x084f, 0x085e, 0x0880, 0x088b, 0x0896, + 0x08a5, 0x08c9, 0x08eb, 0x0913, 0x091c, 0x0929, 0x0934, 0x093d, + 0x0948, 0x0955, 0x0977, 0x0982, 0x098b, 0x0994, 0x099e, 0x09c2, + 0x09cc, 0x09d5, 0x09de, 0x09e7, 0x0a09, 0x0a14, 0x0a1d, 0x0a26, + 0x0a48, 0x0a51, 0x0a5c, 0x0a69, 0x0a74, 0x0a7d, 0x0a86, 0x0a95, + 0x0a9e, 0x0aab, 0x0ab6, 0x0ac2, 0x0ac9, 0x0ad0, 0x0adb, 0x0ae4, + // Entry 2080 - 20BF + 0x0aed, 0x0af4, 0x0b03, 0x0b0c, 0x0b17, 0x0b20, 0x0b29, 0x0b4d, + 0x0b57, 0x0b79, 0x0b88, 0x0baa, 0x0bb5, 0x0bba, 0x0bc7, 0x0bd2, + 0x0bdd, 0x0be6, 0x0bef, 0x0bfa, 0x0c09, 0x0c14, 0x0c23, 0x0c2d, + 0x0c38, 0x0c43, 0x0c4c, 0x0c57, 0x0c60, 0x0c69, 0x0c8b, 0x0c95, + 0x0ca0, 0x0caa, 0x0cb3, 0x0cbc, 0x0cdc, 0x0ce7, 0x0cf0, 0x0cf9, + 0x0d00, 0x0d0b, 0x0d14, 0x0d1f, 0x0d41, 0x0d4a, 0x0d51, 0x0d75, + 0x0d99, 0x0da4, 0x0daf, 0x0db8, 0x0dbf, 0x0dc8, 0x0dd3, 0x0ddc, + 0x0de7, 0x0df2, 0x0dfb, 0x0e0a, 0x0e2c, 0x0e37, 0x0e5d, 0x0e66, + // Entry 20C0 - 20FF + 0x0e6b, 0x0e91, 0x0e9a, 0x0ebe, 0x0ee2, 0x0eef, 0x0ef9, 0x0f04, + 0x0f11, 0x0f1a, 0x0f27, 0x0f30, 0x0f39, 0x0f44, 0x0f4d, 0x0f73, + 0x0f7e, 0x0f85, 0x0f8e, 0x0fb0, 0x0fb9, 0x0fc6, 0x0fcf, 0x0ff1, + 0x0ffc, 0x1005, 0x1027, 0x1032, 0x103d, 0x1046, 0x1052, 0x1074, + 0x107d, 0x109d, 0x10ac, 0x10b5, 0x10be, 0x10c7, 0x10d0, 0x10db, + 0x10e6, 0x10ef, 0x10fa, 0x1105, 0x110e, 0x1130, 0x1154, 0x1160, + 0x116f, 0x117a, 0x1184, 0x118d, 0x1196, 0x11a1, 0x11aa, 0x11b3, + 0x11bc, 0x11c5, 0x11cc, 0x11d5, 0x11df, 0x11ea, 0x11f3, 0x11fa, + // Entry 2100 - 213F + 0x1203, 0x120c, 0x1215, 0x0005, 0x050a, 0x0000, 0x0000, 0x0000, + 0x051f, 0x0001, 0x050c, 0x0003, 0x0000, 0x0000, 0x0510, 0x000d, + 0x0003, 0xffff, 0x121e, 0x122b, 0x123c, 0x1247, 0x124e, 0x1259, + 0x1266, 0x126d, 0x1276, 0x127d, 0x1282, 0x128b, 0x0001, 0x0521, + 0x0001, 0x0523, 0x0001, 0x0003, 0x129a, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x052c, 0x0001, 0x052e, 0x0001, 0x0530, 0x0002, + 0x0000, 0x1a20, 0x201a, 0x0040, 0x0575, 0x0000, 0x0000, 0x057a, + 0x0599, 0x05b3, 0x05cd, 0x05ec, 0x060b, 0x062a, 0x0649, 0x0663, + // Entry 2140 - 217F + 0x067d, 0x06a0, 0x06be, 0x0000, 0x0000, 0x0000, 0x06dc, 0x06fd, + 0x0717, 0x0000, 0x0000, 0x0000, 0x0731, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0736, 0x0752, 0x076e, 0x078a, 0x07a6, 0x07c2, + 0x07de, 0x07fa, 0x0816, 0x0832, 0x084e, 0x086a, 0x0886, 0x08a2, + 0x08be, 0x08da, 0x08f6, 0x0912, 0x092e, 0x094a, 0x0966, 0x0000, + 0x0982, 0x0000, 0x0987, 0x09a5, 0x09bf, 0x09d9, 0x09f7, 0x0a11, + 0x0a2b, 0x0a49, 0x0a63, 0x0a7d, 0x0001, 0x0577, 0x0001, 0x0003, + 0x12a3, 0x0003, 0x057e, 0x0581, 0x0586, 0x0001, 0x0003, 0x12ae, + // Entry 2180 - 21BF + 0x0003, 0x0003, 0x12b9, 0x12d3, 0x12ed, 0x0002, 0x0589, 0x0591, + 0x0006, 0x0003, 0x1307, 0x131b, 0x1307, 0x1336, 0x134a, 0x1307, + 0x0006, 0x0003, 0x1362, 0x1374, 0x1362, 0x138d, 0x139f, 0x1362, + 0x0003, 0x059d, 0x0000, 0x05a0, 0x0001, 0x0003, 0x12ae, 0x0002, + 0x05a3, 0x05ab, 0x0006, 0x0003, 0x1307, 0x131b, 0x1307, 0x1336, + 0x134a, 0x1307, 0x0006, 0x0003, 0x1362, 0x1374, 0x1362, 0x138d, + 0x139f, 0x1362, 0x0003, 0x05b7, 0x0000, 0x05ba, 0x0001, 0x0003, + 0x12ae, 0x0002, 0x05bd, 0x05c5, 0x0006, 0x0003, 0x1307, 0x131b, + // Entry 21C0 - 21FF + 0x1307, 0x1336, 0x134a, 0x1307, 0x0006, 0x0003, 0x1362, 0x1374, + 0x1362, 0x138d, 0x139f, 0x1362, 0x0003, 0x05d1, 0x05d4, 0x05d9, + 0x0001, 0x0003, 0x13b5, 0x0003, 0x0003, 0x13c7, 0x13df, 0x13f1, + 0x0002, 0x05dc, 0x05e4, 0x0006, 0x0003, 0x1409, 0x1424, 0x1409, + 0x1444, 0x145d, 0x1409, 0x0006, 0x0003, 0x147c, 0x1495, 0x147c, + 0x14b3, 0x14ca, 0x147c, 0x0003, 0x05f0, 0x05f3, 0x05f8, 0x0001, + 0x0003, 0x13b5, 0x0003, 0x0003, 0x13c7, 0x13df, 0x13f1, 0x0002, + 0x05fb, 0x0603, 0x0006, 0x0003, 0x1409, 0x1424, 0x1409, 0x1444, + // Entry 2200 - 223F + 0x145d, 0x1409, 0x0006, 0x0003, 0x147c, 0x1495, 0x147c, 0x14b3, + 0x14ca, 0x147c, 0x0003, 0x060f, 0x0612, 0x0617, 0x0001, 0x0003, + 0x13b5, 0x0003, 0x0003, 0x13c7, 0x13df, 0x13f1, 0x0002, 0x061a, + 0x0622, 0x0006, 0x0003, 0x1409, 0x1424, 0x1409, 0x1444, 0x145d, + 0x1409, 0x0006, 0x0003, 0x147c, 0x1495, 0x147c, 0x14b3, 0x14ca, + 0x147c, 0x0003, 0x062e, 0x0631, 0x0636, 0x0001, 0x0003, 0x14e7, + 0x0003, 0x0003, 0x14f2, 0x150a, 0x151c, 0x0002, 0x0639, 0x0641, + 0x0006, 0x0003, 0x1534, 0x1548, 0x1534, 0x1561, 0x1575, 0x158b, + // Entry 2240 - 227F + 0x0006, 0x0003, 0x15a3, 0x15b5, 0x15a3, 0x15cc, 0x15de, 0x15f2, + 0x0003, 0x064d, 0x0000, 0x0650, 0x0001, 0x0003, 0x14e7, 0x0002, + 0x0653, 0x065b, 0x0006, 0x0003, 0x1534, 0x1548, 0x1534, 0x1561, + 0x1575, 0x158b, 0x0006, 0x0003, 0x15a3, 0x15b5, 0x15a3, 0x15cc, + 0x1575, 0x15f2, 0x0003, 0x0667, 0x0000, 0x066a, 0x0001, 0x0003, + 0x14e7, 0x0002, 0x066d, 0x0675, 0x0006, 0x0003, 0x1534, 0x1548, + 0x1534, 0x1561, 0x1575, 0x158b, 0x0006, 0x0003, 0x15a3, 0x15b5, + 0x15a3, 0x15cc, 0x15de, 0x15f2, 0x0004, 0x0682, 0x0685, 0x068a, + // Entry 2280 - 22BF + 0x069d, 0x0001, 0x0003, 0x1608, 0x0003, 0x0003, 0x1617, 0x1633, + 0x1649, 0x0002, 0x068d, 0x0695, 0x0006, 0x0003, 0x1665, 0x167d, + 0x1665, 0x169a, 0x16b2, 0x16cc, 0x0006, 0x0003, 0x16e8, 0x16fe, + 0x16e8, 0x1719, 0x172f, 0x1747, 0x0001, 0x0003, 0x1761, 0x0004, + 0x06a5, 0x0000, 0x06a8, 0x06bb, 0x0001, 0x0003, 0x1608, 0x0002, + 0x06ab, 0x06b3, 0x0006, 0x0003, 0x1665, 0x167d, 0x1665, 0x1770, + 0x16b2, 0x16cc, 0x0006, 0x0003, 0x16e8, 0x16fe, 0x16e8, 0x1719, + 0x172f, 0x1747, 0x0001, 0x0003, 0x1761, 0x0004, 0x06c3, 0x0000, + // Entry 22C0 - 22FF + 0x06c6, 0x06d9, 0x0001, 0x0003, 0x1608, 0x0002, 0x06c9, 0x06d1, + 0x0006, 0x0003, 0x1665, 0x167d, 0x1665, 0x169a, 0x16b2, 0x16cc, + 0x0006, 0x0003, 0x16e8, 0x16fe, 0x16e8, 0x1719, 0x172f, 0x1747, + 0x0001, 0x0003, 0x1761, 0x0003, 0x06e0, 0x06e3, 0x06ea, 0x0001, + 0x0003, 0x178c, 0x0005, 0x0003, 0x17a1, 0x17a8, 0x17b3, 0x1793, + 0x17bc, 0x0002, 0x06ed, 0x06f5, 0x0006, 0x0003, 0x17cc, 0x17e0, + 0x17cc, 0x17f9, 0x180d, 0x1823, 0x0006, 0x0003, 0x183b, 0x184d, + 0x183b, 0x1864, 0x1876, 0x188a, 0x0003, 0x0701, 0x0000, 0x0704, + // Entry 2300 - 233F + 0x0001, 0x0003, 0x178c, 0x0002, 0x0707, 0x070f, 0x0006, 0x0003, + 0x17cc, 0x17e0, 0x17cc, 0x17f9, 0x180d, 0x1823, 0x0006, 0x0003, + 0x183b, 0x184d, 0x183b, 0x1864, 0x1876, 0x188a, 0x0003, 0x071b, + 0x0000, 0x071e, 0x0001, 0x0003, 0x178c, 0x0002, 0x0721, 0x0729, + 0x0006, 0x0003, 0x17cc, 0x17e0, 0x17cc, 0x17f9, 0x180d, 0x1823, + 0x0006, 0x0003, 0x183b, 0x184d, 0x183b, 0x1864, 0x1876, 0x188a, + 0x0001, 0x0733, 0x0001, 0x0003, 0x17a8, 0x0003, 0x0000, 0x073a, + 0x073f, 0x0003, 0x0003, 0x18a0, 0x18b8, 0x18d0, 0x0002, 0x0742, + // Entry 2340 - 237F + 0x074a, 0x0006, 0x0003, 0x18e8, 0x18d0, 0x18e8, 0x18fc, 0x18e8, + 0x18e8, 0x0006, 0x0003, 0x191b, 0x18a0, 0x191b, 0x192d, 0x191b, + 0x191b, 0x0003, 0x0000, 0x0756, 0x075b, 0x0003, 0x0003, 0x18a0, + 0x18b8, 0x18d0, 0x0002, 0x075e, 0x0766, 0x0006, 0x0003, 0x18e8, + 0x194c, 0x18e8, 0x195c, 0x18e8, 0x18e8, 0x0006, 0x0003, 0x191b, + 0x1977, 0x191b, 0x1987, 0x191b, 0x191b, 0x0003, 0x0000, 0x0772, + 0x0777, 0x0003, 0x0003, 0x18a0, 0x18b8, 0x18d0, 0x0002, 0x077a, + 0x0782, 0x0006, 0x0003, 0x18e8, 0x194c, 0x18e8, 0x195c, 0x18e8, + // Entry 2380 - 23BF + 0x18e8, 0x0006, 0x0003, 0x191b, 0x1977, 0x191b, 0x1987, 0x191b, + 0x191b, 0x0003, 0x0000, 0x078e, 0x0793, 0x0003, 0x0003, 0x19a2, + 0x19be, 0x19da, 0x0002, 0x0796, 0x079e, 0x0006, 0x0003, 0x1a6e, + 0x1a0e, 0x19f6, 0x1a2a, 0x1a4d, 0x1a6e, 0x0006, 0x0003, 0x1b01, + 0x1aa3, 0x1a8d, 0x1abf, 0x1ae2, 0x1b01, 0x0003, 0x0000, 0x07aa, + 0x07af, 0x0003, 0x0003, 0x19a2, 0x19be, 0x1a0e, 0x0002, 0x07b2, + 0x07ba, 0x0006, 0x0003, 0x19f6, 0x1a0e, 0x19f6, 0x1a2a, 0x19f6, + 0x19f6, 0x0006, 0x0003, 0x1a8d, 0x1aa3, 0x1a8d, 0x1abf, 0x1a8d, + // Entry 23C0 - 23FF + 0x1a8d, 0x0003, 0x0000, 0x07c6, 0x07cb, 0x0003, 0x0003, 0x1aa3, + 0x1b1e, 0x1a0e, 0x0002, 0x07ce, 0x07d6, 0x0006, 0x0003, 0x19f6, + 0x1b3a, 0x19f6, 0x1b4e, 0x19f6, 0x19f6, 0x0006, 0x0003, 0x1a8d, + 0x1b6d, 0x1a8d, 0x1b81, 0x1a8d, 0x1a8d, 0x0003, 0x0000, 0x07e2, + 0x07e7, 0x0003, 0x0003, 0x1ba0, 0x1bbe, 0x1bdc, 0x0002, 0x07ea, + 0x07f2, 0x0006, 0x0003, 0x1bfa, 0x1bdc, 0x1bfa, 0x1c1b, 0x1c40, + 0x1bfa, 0x0006, 0x0003, 0x1c63, 0x1ba0, 0x1c63, 0x1c82, 0x1ca7, + 0x1c63, 0x0003, 0x0000, 0x07fe, 0x0803, 0x0003, 0x0003, 0x1ba0, + // Entry 2400 - 243F + 0x1bbe, 0x1bdc, 0x0002, 0x0806, 0x080e, 0x0006, 0x0003, 0x1cc8, + 0x1ce2, 0x1cc8, 0x1cf8, 0x1cc8, 0x1cc8, 0x0006, 0x0003, 0x1d19, + 0x1d31, 0x1d19, 0x1d47, 0x1d19, 0x1d19, 0x0003, 0x0000, 0x081a, + 0x081f, 0x0003, 0x0003, 0x1ba0, 0x1bbe, 0x1bdc, 0x0002, 0x0822, + 0x082a, 0x0006, 0x0003, 0x1cc8, 0x1ce2, 0x1cc8, 0x1cf8, 0x1cc8, + 0x1cc8, 0x0006, 0x0003, 0x1d19, 0x1d31, 0x1d19, 0x1d47, 0x1d19, + 0x1d19, 0x0003, 0x0000, 0x0836, 0x083b, 0x0003, 0x0003, 0x1d68, + 0x1d86, 0x1da4, 0x0002, 0x083e, 0x0846, 0x0006, 0x0003, 0x1dc2, + // Entry 2440 - 247F + 0x1da4, 0x1dc2, 0x1de3, 0x1e08, 0x1dc2, 0x0006, 0x0003, 0x1e2b, + 0x1d68, 0x1e2b, 0x1e4a, 0x1e6f, 0x1e2b, 0x0003, 0x0000, 0x0852, + 0x0857, 0x0003, 0x0003, 0x1d68, 0x1d86, 0x1da4, 0x0002, 0x085a, + 0x0862, 0x0006, 0x0003, 0x1e90, 0x1e90, 0x1e90, 0x1e90, 0x1e90, + 0x1e90, 0x0006, 0x0003, 0x1eaa, 0x1ec2, 0x1eaa, 0x1ed8, 0x1eaa, + 0x1eaa, 0x0003, 0x0000, 0x086e, 0x0873, 0x0003, 0x0003, 0x1d68, + 0x1d86, 0x1da4, 0x0002, 0x0876, 0x087e, 0x0006, 0x0003, 0x1e90, + 0x1ef9, 0x1e90, 0x1f0f, 0x1e90, 0x1e90, 0x0006, 0x0003, 0x1eaa, + // Entry 2480 - 24BF + 0x1ec2, 0x1eaa, 0x1ed8, 0x1eaa, 0x1eaa, 0x0003, 0x0000, 0x088a, + 0x088f, 0x0003, 0x0003, 0x1f30, 0x1f4a, 0x1f64, 0x0002, 0x0892, + 0x089a, 0x0006, 0x0003, 0x1f7e, 0x1f64, 0x1f7e, 0x1f9b, 0x1fbc, + 0x1f7e, 0x0006, 0x0003, 0x1fdb, 0x1f30, 0x1fdb, 0x1ff6, 0x2017, + 0x1fdb, 0x0003, 0x0000, 0x08a6, 0x08ab, 0x0003, 0x0003, 0x1f30, + 0x1f4a, 0x1f64, 0x0002, 0x08ae, 0x08b6, 0x0006, 0x0004, 0x0000, + 0x0016, 0x0000, 0x0016, 0x0000, 0x0000, 0x0006, 0x0004, 0x0033, + 0x0047, 0x0033, 0x0059, 0x0033, 0x0033, 0x0003, 0x0000, 0x08c2, + // Entry 24C0 - 24FF + 0x08c7, 0x0003, 0x0003, 0x1f30, 0x1f4a, 0x1f64, 0x0002, 0x08ca, + 0x08d2, 0x0006, 0x0004, 0x0000, 0x0016, 0x0000, 0x0016, 0x0000, + 0x0000, 0x0006, 0x0004, 0x0033, 0x0047, 0x0033, 0x0059, 0x0033, + 0x0033, 0x0003, 0x0000, 0x08de, 0x08e3, 0x0003, 0x0004, 0x0076, + 0x0090, 0x00aa, 0x0002, 0x08e6, 0x08ee, 0x0006, 0x0004, 0x00c4, + 0x00aa, 0x00c4, 0x00e1, 0x0102, 0x00c4, 0x0006, 0x0004, 0x0121, + 0x0076, 0x0121, 0x013c, 0x015d, 0x0121, 0x0003, 0x0000, 0x08fa, + 0x08ff, 0x0003, 0x0004, 0x0076, 0x0090, 0x00aa, 0x0002, 0x0902, + // Entry 2500 - 253F + 0x090a, 0x0006, 0x0004, 0x017a, 0x0190, 0x017a, 0x01a2, 0x017a, + 0x017a, 0x0006, 0x0004, 0x01bf, 0x01d3, 0x01bf, 0x01e5, 0x01bf, + 0x01bf, 0x0003, 0x0000, 0x0916, 0x091b, 0x0003, 0x0004, 0x0076, + 0x0090, 0x00aa, 0x0002, 0x091e, 0x0926, 0x0006, 0x0004, 0x017a, + 0x0190, 0x017a, 0x01a2, 0x017a, 0x017a, 0x0006, 0x0004, 0x01bf, + 0x01d3, 0x01bf, 0x01e5, 0x01bf, 0x01bf, 0x0003, 0x0000, 0x0932, + 0x0937, 0x0003, 0x0004, 0x0202, 0x021a, 0x0232, 0x0002, 0x093a, + 0x0942, 0x0006, 0x0004, 0x024a, 0x0232, 0x024a, 0x0263, 0x024a, + // Entry 2540 - 257F + 0x0282, 0x0006, 0x0004, 0x029d, 0x0202, 0x029d, 0x02b6, 0x029d, + 0x029d, 0x0003, 0x0000, 0x094e, 0x0953, 0x0003, 0x0004, 0x0202, + 0x021a, 0x0232, 0x0002, 0x0956, 0x095e, 0x0006, 0x0004, 0x02d5, + 0x02e9, 0x02d5, 0x02f9, 0x02d5, 0x02d5, 0x0006, 0x0004, 0x0314, + 0x0326, 0x0314, 0x0336, 0x0314, 0x0314, 0x0003, 0x0000, 0x096a, + 0x096f, 0x0003, 0x0004, 0x0202, 0x021a, 0x0232, 0x0002, 0x0972, + 0x097a, 0x0006, 0x0004, 0x02d5, 0x02e9, 0x02d5, 0x02f9, 0x02d5, + 0x02d5, 0x0006, 0x0004, 0x0314, 0x0326, 0x0314, 0x0336, 0x0314, + // Entry 2580 - 25BF + 0x0314, 0x0001, 0x0984, 0x0001, 0x0004, 0x0351, 0x0003, 0x098b, + 0x098e, 0x0992, 0x0001, 0x0004, 0x0357, 0x0002, 0x0004, 0xffff, + 0x0366, 0x0002, 0x0995, 0x099d, 0x0006, 0x0004, 0x0382, 0x0398, + 0x0382, 0x03b5, 0x03cb, 0x0382, 0x0006, 0x0004, 0x03e3, 0x03f7, + 0x03e3, 0x0412, 0x0426, 0x03e3, 0x0003, 0x09a9, 0x0000, 0x09ac, + 0x0001, 0x0004, 0x0357, 0x0002, 0x09af, 0x09b7, 0x0006, 0x0004, + 0x0382, 0x0398, 0x0382, 0x03b5, 0x03cb, 0x0382, 0x0006, 0x0004, + 0x03e3, 0x03f7, 0x03e3, 0x0412, 0x0426, 0x03e3, 0x0003, 0x09c3, + // Entry 25C0 - 25FF + 0x0000, 0x09c6, 0x0001, 0x0004, 0x0357, 0x0002, 0x09c9, 0x09d1, + 0x0006, 0x0004, 0x0382, 0x0398, 0x0382, 0x03b5, 0x03cb, 0x0382, + 0x0006, 0x0004, 0x03e3, 0x03f7, 0x03e3, 0x0412, 0x0426, 0x03e3, + 0x0003, 0x09dd, 0x09e0, 0x09e4, 0x0001, 0x0004, 0x043c, 0x0002, + 0x0004, 0xffff, 0x044b, 0x0002, 0x09e7, 0x09ef, 0x0006, 0x0004, + 0x0461, 0x0479, 0x0461, 0x0498, 0x04b0, 0x0461, 0x0006, 0x0004, + 0x04c8, 0x04de, 0x04c8, 0x04fb, 0x0511, 0x04c8, 0x0003, 0x09fb, + 0x0000, 0x09fe, 0x0001, 0x0004, 0x043c, 0x0002, 0x0a01, 0x0a09, + // Entry 2600 - 263F + 0x0006, 0x0004, 0x0461, 0x0479, 0x0461, 0x0498, 0x04b0, 0x0461, + 0x0006, 0x0004, 0x04c8, 0x04de, 0x04c8, 0x04fb, 0x0511, 0x04c8, + 0x0003, 0x0a15, 0x0000, 0x0a18, 0x0001, 0x0004, 0x043c, 0x0002, + 0x0a1b, 0x0a23, 0x0006, 0x0004, 0x0461, 0x0479, 0x0461, 0x0498, + 0x04b0, 0x0461, 0x0006, 0x0004, 0x04c8, 0x04de, 0x04c8, 0x04fb, + 0x0511, 0x04c8, 0x0003, 0x0a2f, 0x0a32, 0x0a36, 0x0001, 0x0004, + 0x0527, 0x0002, 0x0004, 0xffff, 0x0536, 0x0002, 0x0a39, 0x0a41, + 0x0006, 0x0004, 0x053f, 0x0557, 0x053f, 0x0576, 0x058e, 0x053f, + // Entry 2640 - 267F + 0x0006, 0x0004, 0x05a6, 0x05bc, 0x05a6, 0x05d9, 0x05ef, 0x05a6, + 0x0003, 0x0a4d, 0x0000, 0x0a50, 0x0001, 0x0004, 0x0527, 0x0002, + 0x0a53, 0x0a5b, 0x0006, 0x0004, 0x053f, 0x0557, 0x053f, 0x0576, + 0x058e, 0x053f, 0x0006, 0x0004, 0x05a6, 0x05bc, 0x05a6, 0x05d9, + 0x0605, 0x05a6, 0x0003, 0x0a67, 0x0000, 0x0a6a, 0x0001, 0x0004, + 0x0527, 0x0002, 0x0a6d, 0x0a75, 0x0006, 0x0004, 0x053f, 0x0557, + 0x053f, 0x0576, 0x058e, 0x053f, 0x0006, 0x0004, 0x05a6, 0x05bc, + 0x05a6, 0x05d9, 0x0605, 0x05a6, 0x0001, 0x0a7f, 0x0001, 0x0004, + // Entry 2680 - 26BF + 0x061b, 0x0004, 0x0a87, 0x0a8c, 0x0a91, 0x0aa0, 0x0003, 0x0000, + 0x1dc7, 0x2032, 0x2042, 0x0003, 0x0004, 0x062a, 0x0639, 0x0655, + 0x0002, 0x0000, 0x0a94, 0x0003, 0x0000, 0x0a9b, 0x0a98, 0x0001, + 0x0004, 0x0671, 0x0003, 0x0004, 0xffff, 0x069c, 0x06c5, 0x0002, + 0x0000, 0x0aa3, 0x0003, 0x0b3f, 0x0bd5, 0x0aa7, 0x0096, 0x0004, + 0x06ec, 0x070a, 0x072b, 0x074c, 0x0790, 0x0804, 0x0870, 0x0900, + 0x09d2, 0x0aa0, 0x0b57, 0x0bd3, 0x0c37, 0x0ca1, 0x0d11, 0x0d8c, + 0x0e0a, 0x0e72, 0x0eeb, 0x0f75, 0x1006, 0x1089, 0x1105, 0x116d, + // Entry 26C0 - 26FF + 0x11cf, 0x1221, 0x1237, 0x126d, 0x12bf, 0x12fa, 0x135a, 0x138c, + 0x13ea, 0x1442, 0x14a6, 0x1502, 0x1527, 0x1560, 0x15cd, 0x1631, + 0x1673, 0x1689, 0x16b2, 0x16f6, 0x174e, 0x178b, 0x1802, 0x185a, + 0x18af, 0x1928, 0x1998, 0x19da, 0x1a03, 0x1a5e, 0x1a7a, 0x1aaa, + 0x1af4, 0x1b13, 0x1b4e, 0x1bd1, 0x1c45, 0x1c5d, 0x1c98, 0x1d19, + 0x1d81, 0x1dc3, 0x1dd9, 0x1dfe, 0x1e23, 0x1e48, 0x1e6d, 0x1ea8, + 0x1f08, 0x1f70, 0x1fd8, 0x2042, 0x20c5, 0x20ea, 0x2125, 0x216b, + 0x21a3, 0x2207, 0x2225, 0x225b, 0x22b1, 0x22e5, 0x2333, 0x234d, + // Entry 2700 - 273F + 0x236b, 0x2387, 0x23c2, 0x2414, 0x2456, 0x2504, 0x25a7, 0x2619, + 0x265f, 0x2679, 0x268f, 0x26d2, 0x2764, 0x27de, 0x2840, 0x2854, + 0x28a9, 0x2973, 0x29e7, 0x2a47, 0x2a95, 0x2aab, 0x2af7, 0x2b5d, + 0x2bbb, 0x2c0d, 0x2c58, 0x2cce, 0x2ce8, 0x2d00, 0x2d1f, 0x2d39, + 0x2d6b, 0x2dd1, 0x2e20, 0x2e66, 0x2e7a, 0x2e96, 0x2eb5, 0x2ed6, + 0x2ef0, 0x2f08, 0x2f38, 0x2f82, 0x2f9e, 0x2fce, 0x3014, 0x3046, + 0x30a0, 0x30d2, 0x313e, 0x31ae, 0x31fc, 0x3238, 0x32b4, 0x330a, + 0x3322, 0x333f, 0x337f, 0x33ef, 0x1c31, 0x291f, 0x0094, 0x0004, + // Entry 2740 - 277F + 0xffff, 0xffff, 0xffff, 0xffff, 0x076f, 0x07ec, 0x0854, 0x08c2, + 0x0996, 0x0a64, 0x0b32, 0x0bbb, 0x0c23, 0x0c85, 0x0cf3, 0x0d67, + 0x0df0, 0x0e58, 0x0ec8, 0x0f4b, 0x0fe3, 0x1066, 0x10e9, 0x1157, + 0x11b3, 0xffff, 0xffff, 0x1251, 0xffff, 0x12d7, 0xffff, 0x1374, + 0x13d6, 0x142c, 0x1488, 0xffff, 0xffff, 0x1544, 0x15b2, 0x161d, + 0xffff, 0xffff, 0xffff, 0x16d7, 0xffff, 0x176c, 0x17e3, 0xffff, + 0x1890, 0x1907, 0x1984, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a92, + 0xffff, 0xffff, 0x1b2b, 0x1bae, 0xffff, 0xffff, 0x1c73, 0x1cfc, + // Entry 2780 - 27BF + 0x1d6d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e92, + 0x1eee, 0x1f56, 0x1fbe, 0x2026, 0xffff, 0xffff, 0x210f, 0xffff, + 0x2181, 0xffff, 0xffff, 0x2240, 0xffff, 0x22cb, 0xffff, 0xffff, + 0xffff, 0xffff, 0x23a6, 0xffff, 0x242c, 0x24d0, 0x2586, 0x2603, + 0xffff, 0xffff, 0xffff, 0x26a5, 0x2746, 0x27ba, 0xffff, 0xffff, + 0x2879, 0x2951, 0x29d1, 0x2a2d, 0xffff, 0xffff, 0x2adb, 0x2b49, + 0x2b9f, 0xffff, 0x2c2a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2d51, 0x2db9, 0x2e0a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 27C0 - 27FF + 0xffff, 0xffff, 0x2f20, 0xffff, 0xffff, 0x2fb8, 0xffff, 0x3026, + 0xffff, 0x30b8, 0x3120, 0x3194, 0xffff, 0x3216, 0x3296, 0xffff, + 0xffff, 0xffff, 0x3365, 0x33cd, 0x0094, 0x0004, 0xffff, 0xffff, + 0xffff, 0xffff, 0x07be, 0x082f, 0x0899, 0x094b, 0x0a1b, 0x0ae9, + 0x0b89, 0x0bf8, 0x0c5e, 0x0cca, 0x0d3c, 0x0dbe, 0x0e31, 0x0e9d, + 0x0f1b, 0x0fac, 0x1036, 0x10b9, 0x112e, 0x1190, 0x11f8, 0xffff, + 0xffff, 0x1296, 0xffff, 0x132a, 0xffff, 0x13b1, 0x140b, 0x1465, + 0x14d1, 0xffff, 0xffff, 0x1589, 0x15f5, 0x1652, 0xffff, 0xffff, + // Entry 2800 - 283F + 0xffff, 0x1722, 0xffff, 0x17b7, 0x182e, 0xffff, 0x18db, 0x1956, + 0x19b9, 0xffff, 0xffff, 0xffff, 0xffff, 0x1acf, 0xffff, 0xffff, + 0x1b7e, 0x1c01, 0xffff, 0xffff, 0x1cca, 0x1d43, 0x1da2, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ecb, 0x1f2f, 0x1f97, + 0x1fff, 0x207d, 0xffff, 0xffff, 0x2148, 0xffff, 0x21d2, 0xffff, + 0xffff, 0x2283, 0xffff, 0x230c, 0xffff, 0xffff, 0xffff, 0xffff, + 0x23eb, 0xffff, 0x2493, 0x2545, 0x25d5, 0x263c, 0xffff, 0xffff, + 0xffff, 0x270c, 0x278f, 0x280f, 0xffff, 0xffff, 0x28e4, 0x29a2, + // Entry 2840 - 287F + 0x2a0a, 0x2a6e, 0xffff, 0xffff, 0x2b20, 0x2b7e, 0x2be4, 0xffff, + 0x2c93, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d92, 0x2de7, + 0x2e43, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2f5d, 0xffff, 0xffff, 0x2ff1, 0xffff, 0x3073, 0xffff, 0x30f9, + 0x3169, 0x31d5, 0xffff, 0x3267, 0x32df, 0xffff, 0xffff, 0xffff, + 0x33a6, 0x341e, 0x0002, 0x0003, 0x0022, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0012, 0x0003, 0x001c, 0x0000, 0x0016, + // Entry 2880 - 28BF + 0x0002, 0x0000, 0x0019, 0x0001, 0x0003, 0x0377, 0x0002, 0x0000, + 0x001f, 0x0001, 0x0003, 0x03b0, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0027, 0x0002, 0x0000, 0x002a, 0x0003, 0x0003, 0x12b9, 0x2034, + 0x2046, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, + 0x0041, 0x0003, 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, + 0x0000, 0x000b, 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, 0x0047, + 0x004e, 0x005b, 0x0068, 0x0075, 0x000d, 0x0003, 0xffff, 0x02a9, + // Entry 28C0 - 28FF + 0x021b, 0x021e, 0x0221, 0x021e, 0x02a9, 0x02a9, 0x0221, 0x0230, + 0x0221, 0x0227, 0x0239, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, + 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, 0x0047, 0x004e, 0x005b, + 0x0068, 0x0075, 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, + 0xffff, 0x0000, 0x000b, 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, + 0x0047, 0x004e, 0x005b, 0x0068, 0x0075, 0x000d, 0x0003, 0xffff, + 0x02a9, 0x021b, 0x021e, 0x0221, 0x021e, 0x02a9, 0x02a9, 0x0221, + 0x0230, 0x0221, 0x0227, 0x0239, 0x000d, 0x0005, 0xffff, 0x0000, + // Entry 2900 - 293F + 0x000b, 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, 0x0047, 0x004e, + 0x005b, 0x0068, 0x0075, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + 0x001b, 0x0018, 0x001e, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, + 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, + // Entry 2940 - 297F + 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, + 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x010a, + 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, + 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, + 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, + 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, + 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, + 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, + // Entry 2980 - 29BF + 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, + 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, + 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, + 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, + 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, + 0x0041, 0x0003, 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, + 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, + // Entry 29C0 - 29FF + 0x00ff, 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, + 0x2060, 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, + 0x2066, 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, + 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, + 0x0120, 0x0138, 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, + 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, + 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, + 0x0233, 0x2060, 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, + // Entry 2A00 - 2A3F + 0x0221, 0x2066, 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, + 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, + 0x014e, 0x0120, 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2A40 - 2A7F + 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, + 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, + 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, + 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, + 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, + 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, + 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, + 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, + // Entry 2A80 - 2ABF + 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, + 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, + 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, + 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, + 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, + 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0010, 0x0002, 0x0013, 0x0036, 0x0001, 0x0015, 0x000b, 0x0000, + // Entry 2AC0 - 2AFF + 0x0000, 0x0000, 0x0021, 0x0027, 0x002d, 0x0030, 0x0000, 0x0024, + 0x002a, 0x0033, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x030a, + 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, + 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x022a, 0x0002, + 0x0039, 0x005a, 0x000b, 0x0000, 0x0000, 0x0000, 0x0045, 0x004b, + 0x0051, 0x0054, 0x0000, 0x0048, 0x004e, 0x0057, 0x0001, 0x0003, + 0x0354, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, 0x0316, 0x0001, + 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, 0x033e, + // Entry 2B00 - 2B3F + 0x0001, 0x0003, 0x036c, 0x000b, 0x0000, 0x0000, 0x0000, 0x0066, + 0x006c, 0x0072, 0x0075, 0x0000, 0x0069, 0x006f, 0x0078, 0x0001, + 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, 0x0316, + 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, + 0x033e, 0x0001, 0x0003, 0x036c, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, + 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0078, 0x0002, + 0x0016, 0x0047, 0x0003, 0x001a, 0x0029, 0x0038, 0x000d, 0x0003, + // Entry 2B40 - 2B7F + 0xffff, 0x018e, 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, 0x2079, + 0x2086, 0x208d, 0x2098, 0x20a5, 0x20b0, 0x000d, 0x0003, 0xffff, + 0x0218, 0x021b, 0x021e, 0x0221, 0x021e, 0x0227, 0x022a, 0x022d, + 0x2060, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, 0xffff, 0x018e, + 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, 0x2079, 0x2086, 0x208d, + 0x2098, 0x20a5, 0x20b0, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, + 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, + 0x2079, 0x2086, 0x208d, 0x2098, 0x20a5, 0x20b0, 0x000d, 0x0003, + // Entry 2B80 - 2BBF + 0xffff, 0x0218, 0x021b, 0x021e, 0x0221, 0x021e, 0x0227, 0x022a, + 0x022d, 0x2060, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, 0xffff, + 0x018e, 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, 0x2079, 0x2086, + 0x208d, 0x2098, 0x20a5, 0x20b0, 0x0004, 0x0086, 0x0080, 0x007d, + 0x0083, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, 0x0014, 0x0023, + // Entry 2BC0 - 2BFF + 0x0032, 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x20bb, + 0x01ba, 0x01c3, 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, 0x20e7, + 0x000d, 0x0003, 0xffff, 0x0218, 0x021b, 0x021e, 0x20f2, 0x0224, + 0x0227, 0x022a, 0x022d, 0x2060, 0x0233, 0x0236, 0x0239, 0x000d, + 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x20bb, 0x01ba, 0x01c3, + 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, 0x20e7, 0x0003, 0x0045, + 0x0054, 0x0063, 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, + 0x20bb, 0x01ba, 0x01c3, 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, + // Entry 2C00 - 2C3F + 0x20e7, 0x000d, 0x0003, 0xffff, 0x0218, 0x021b, 0x021e, 0x20f2, + 0x0224, 0x0227, 0x022a, 0x022d, 0x2060, 0x0233, 0x0236, 0x0239, + 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x20bb, 0x01ba, + 0x01c3, 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, 0x20e7, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, + 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, + 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, + // Entry 2C40 - 2C7F + 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, + 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, + 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, + 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, + 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, + 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, + 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, + 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, + // Entry 2C80 - 2CBF + 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, + 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, + 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0010, 0x0002, 0x0013, 0x0036, 0x0001, 0x0015, 0x000b, 0x0000, + 0x0000, 0x0000, 0x0021, 0x0027, 0x002d, 0x0030, 0x0000, 0x0024, + 0x002a, 0x0033, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x030a, + 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, + // Entry 2CC0 - 2CFF + 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x022a, 0x0002, + 0x0039, 0x005a, 0x000b, 0x0000, 0x0000, 0x0000, 0x0045, 0x004b, + 0x0051, 0x0054, 0x0000, 0x0048, 0x004e, 0x0057, 0x0001, 0x0003, + 0x0354, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, 0x0316, 0x0001, + 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, 0x033e, + 0x0001, 0x0003, 0x036c, 0x000b, 0x0000, 0x0000, 0x0000, 0x0066, + 0x006c, 0x0072, 0x0075, 0x0000, 0x0069, 0x006f, 0x0078, 0x0001, + 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, 0x0316, + // Entry 2D00 - 2D3F + 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, + 0x033e, 0x0001, 0x0003, 0x036c, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, + 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, 0x0014, 0x0023, 0x0032, + 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, + 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x000d, + 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, 0x0227, 0x0221, 0x029d, + 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, 0x0233, 0x000d, 0x0005, + // Entry 2D40 - 2D7F + 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, + 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x0003, 0x0045, 0x0054, + 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, + 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, + 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, 0x0227, 0x0221, + 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, 0x0233, 0x000d, + 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, + 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x0001, 0x0002, + // Entry 2D80 - 2DBF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, 0x0014, + 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, 0x0164, + 0x001f, 0x016d, 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, 0x0181, + 0x0075, 0x000d, 0x0003, 0xffff, 0x02a9, 0x021b, 0x021e, 0x0221, + 0x021e, 0x02a9, 0x02a9, 0x0221, 0x0230, 0x0221, 0x0227, 0x0239, + 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, 0x0164, 0x001f, 0x016d, + 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, 0x0181, 0x0075, 0x0003, + // Entry 2DC0 - 2DFF + 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, + 0x0164, 0x001f, 0x016d, 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, + 0x0181, 0x0075, 0x000d, 0x0003, 0xffff, 0x02a9, 0x021b, 0x021e, + 0x0221, 0x021e, 0x02a9, 0x02a9, 0x0221, 0x0230, 0x0221, 0x0227, + 0x0239, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, 0x0164, 0x001f, + 0x016d, 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, 0x0181, 0x0075, + 0x0003, 0x0004, 0x00b0, 0x0126, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, + // Entry 2E00 - 2E3F + 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, + 0x001f, 0x0001, 0x0005, 0x018e, 0x0001, 0x0005, 0x01a0, 0x0001, + 0x0005, 0x01ac, 0x0001, 0x0005, 0x01b6, 0x0007, 0x002d, 0x0051, + 0x0069, 0x0076, 0x0000, 0x008e, 0x009f, 0x0001, 0x002f, 0x0003, + 0x0033, 0x0000, 0x0042, 0x000d, 0x0005, 0xffff, 0x01c2, 0x01cf, + 0x01e2, 0x01f2, 0x0205, 0x020c, 0x0216, 0x0226, 0x022d, 0x023d, + 0x024d, 0x0257, 0x000d, 0x0005, 0xffff, 0x0264, 0x027d, 0x01e2, + 0x01f2, 0x0205, 0x020c, 0x0216, 0x029c, 0x02ac, 0x02cb, 0x02e1, + // Entry 2E40 - 2E7F + 0x02f7, 0x0001, 0x0053, 0x0003, 0x0057, 0x0000, 0x0060, 0x0007, + 0x0005, 0x0310, 0x031a, 0x0324, 0x0334, 0x033e, 0x0357, 0x0367, + 0x0007, 0x0005, 0x0371, 0x0384, 0x0397, 0x03b0, 0x03c3, 0x03e5, + 0x03fe, 0x0001, 0x006b, 0x0003, 0x0000, 0x0000, 0x006f, 0x0005, + 0x0005, 0xffff, 0x0411, 0x0431, 0x045a, 0x047d, 0x0001, 0x0078, + 0x0003, 0x007c, 0x0000, 0x0085, 0x0002, 0x007f, 0x0082, 0x0001, + 0x0005, 0x04a0, 0x0001, 0x0005, 0x04bc, 0x0002, 0x0088, 0x008b, + 0x0001, 0x0005, 0x04a0, 0x0001, 0x0005, 0x04bc, 0x0004, 0x009c, + // Entry 2E80 - 2EBF + 0x0096, 0x0093, 0x0099, 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, + 0x04e2, 0x0001, 0x0005, 0x04ec, 0x0001, 0x0005, 0x04f4, 0x0004, + 0x00ad, 0x00a7, 0x00a4, 0x00aa, 0x0001, 0x0005, 0x04fa, 0x0001, + 0x0005, 0x0509, 0x0001, 0x0005, 0x0515, 0x0001, 0x0005, 0x051f, + 0x0040, 0x00f1, 0x0000, 0x0000, 0x00f6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00fb, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0105, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2EC0 - 2EFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, + 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, + 0x0121, 0x0001, 0x00f3, 0x0001, 0x0005, 0x0527, 0x0001, 0x00f8, + 0x0001, 0x0005, 0x0531, 0x0001, 0x00fd, 0x0001, 0x0005, 0x053b, + 0x0001, 0x0102, 0x0001, 0x0005, 0x0545, 0x0002, 0x0108, 0x010b, + 0x0001, 0x0005, 0x0558, 0x0005, 0x0005, 0x056f, 0x057c, 0x0586, + // Entry 2F00 - 2F3F + 0x0562, 0x0596, 0x0001, 0x0114, 0x0001, 0x0005, 0x05a9, 0x0001, + 0x0119, 0x0001, 0x0005, 0x05b9, 0x0001, 0x011e, 0x0001, 0x0005, + 0x05c9, 0x0001, 0x0123, 0x0001, 0x0005, 0x05df, 0x0004, 0x0000, + 0x0000, 0x0000, 0x012b, 0x0002, 0x0176, 0x012e, 0x0003, 0x0000, + 0x0000, 0x0132, 0x0042, 0x0005, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2F40 - 2F7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05f5, 0x0003, 0x0000, + 0x0000, 0x017a, 0x0042, 0x0005, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2F80 - 2FBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0618, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2FC0 - 2FFF + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, + 0x063a, 0x063e, 0x0642, 0x0646, 0x064a, 0x064e, 0x0652, 0x0656, + 0x065a, 0x065e, 0x0662, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, + 0x0677, 0x067d, 0x0646, 0x0684, 0x0689, 0x068f, 0x0696, 0x069f, + // Entry 3000 - 303F + 0x06a6, 0x06ae, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + 0x1e5d, 0x204f, 0x2051, 0x1e5f, 0x2051, 0x1e5d, 0x1e5d, 0x1e5f, + 0x04d9, 0x1e61, 0x1e63, 0x2053, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, 0x06b6, 0x06ba, 0x06be, + 0x06c2, 0x06c6, 0x06ca, 0x06ce, 0x0007, 0x0005, 0x06d2, 0x06db, + 0x06e4, 0x06ec, 0x06f5, 0x06fe, 0x0705, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x1e5d, 0x1e5d, 0x1e5d, 0x1e5d, 0x1e5f, 0x2055, + 0x1e5d, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + // Entry 3040 - 307F + 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0005, + 0xffff, 0x071a, 0x0721, 0x0728, 0x072f, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0005, + 0x0736, 0x0001, 0x0005, 0x0740, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0005, 0x0736, 0x0001, 0x0005, 0x0740, 0x0003, 0x00c1, 0x0000, + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0005, 0x0749, 0x075b, 0x0001, + 0x00c3, 0x0002, 0x0005, 0x076d, 0x0770, 0x0004, 0x00d5, 0x00cf, + 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + // Entry 3080 - 30BF + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 30C0 - 30FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, + 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, + 0x0001, 0x012c, 0x0001, 0x0005, 0x0782, 0x0001, 0x0131, 0x0001, + 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0005, 0x078d, 0x0001, + 0x013b, 0x0001, 0x0005, 0x0793, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0005, 0x079a, 0x0003, 0x0005, 0x07a0, 0x07a6, 0x07ab, 0x0001, + 0x014b, 0x0001, 0x0005, 0x07b0, 0x0001, 0x0150, 0x0001, 0x0005, + // Entry 3100 - 313F + 0x07c0, 0x0001, 0x0155, 0x0001, 0x0005, 0x07cf, 0x0001, 0x015a, + 0x0001, 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0005, 0x07db, + 0x0001, 0x0164, 0x0001, 0x0005, 0x07e4, 0x0003, 0x0004, 0x084f, + 0x0c79, 0x0012, 0x0017, 0x0055, 0x0000, 0x01e2, 0x0213, 0x0000, + 0x029d, 0x02c8, 0x0450, 0x047b, 0x051e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x05c1, 0x0805, 0x080e, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0020, 0x0033, 0x0000, 0x0044, 0x0003, 0x0029, 0x002e, + 0x0024, 0x0001, 0x0026, 0x0001, 0x0005, 0x07f1, 0x0001, 0x002b, + // Entry 3140 - 317F + 0x0001, 0x0005, 0x07fd, 0x0001, 0x0030, 0x0001, 0x0005, 0x07fd, + 0x0004, 0x0041, 0x003b, 0x0038, 0x003e, 0x0001, 0x0005, 0x0800, + 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, + 0x0827, 0x0004, 0x0052, 0x004c, 0x0049, 0x004f, 0x0001, 0x0005, + 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x000a, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x00b6, 0x00ca, 0x0002, 0x0063, 0x0094, + 0x0003, 0x0067, 0x0076, 0x0085, 0x000d, 0x0005, 0xffff, 0x084f, + // Entry 3180 - 31BF + 0x0855, 0x085b, 0x0861, 0x0867, 0x086d, 0x0873, 0x0879, 0x087f, + 0x0885, 0x088c, 0x0893, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, + 0x0048, 0x004b, 0x000d, 0x0005, 0xffff, 0x084f, 0x0855, 0x085b, + 0x0861, 0x0867, 0x086d, 0x0873, 0x0879, 0x087f, 0x0885, 0x088c, + 0x0893, 0x0003, 0x0000, 0x0098, 0x00a7, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, + 0x0043, 0x0045, 0x0048, 0x004b, 0x000d, 0x0005, 0xffff, 0x089a, + // Entry 31C0 - 31FF + 0x08a0, 0x08a6, 0x08ac, 0x08b2, 0x08b8, 0x08be, 0x08c4, 0x08ca, + 0x08d0, 0x08d7, 0x08de, 0x0003, 0x00ba, 0x00c5, 0x00bf, 0x0003, + 0x0000, 0x004e, 0x0055, 0x2057, 0x0004, 0x0005, 0xffff, 0xffff, + 0xffff, 0x08e5, 0x0003, 0x0000, 0x004e, 0x0055, 0x2057, 0x0006, + 0x00d1, 0x0104, 0x0000, 0x0149, 0x016a, 0x01af, 0x0001, 0x00d3, + 0x0003, 0x00d7, 0x00e6, 0x00f5, 0x000d, 0x0005, 0xffff, 0x08ed, + 0x08f2, 0x08f7, 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, + 0x0927, 0x092d, 0x0933, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, + // Entry 3200 - 323F + 0x08f7, 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, + 0x092d, 0x0933, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, + 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, + 0x0933, 0x0001, 0x0106, 0x0003, 0x0000, 0x0000, 0x010a, 0x003d, + 0x0005, 0xffff, 0x0939, 0x094d, 0x0960, 0x0973, 0x0986, 0x099d, + 0x09b3, 0x09c9, 0x09dc, 0x09ef, 0x0a02, 0x0a17, 0x0a2b, 0x0a3d, + 0x0a4e, 0x0a63, 0x0a78, 0x0a8e, 0x0aa3, 0x0ab9, 0x0acc, 0x0ae0, + 0x0af4, 0x0b07, 0x0b19, 0x0b2d, 0x0b40, 0x0b54, 0x0b68, 0x0b7e, + // Entry 3240 - 327F + 0x0b93, 0x0baa, 0x0bbe, 0x0bd0, 0x0be2, 0x0bf7, 0x0c0b, 0x0c1e, + 0x0c30, 0x0c44, 0x0c58, 0x0c6f, 0x0c85, 0x0c9a, 0x0cac, 0x0cc0, + 0x0cd4, 0x0ce8, 0x0cfb, 0x0d0e, 0x0d20, 0x0d35, 0x0d4a, 0x0d5f, + 0x0d73, 0x0d8a, 0x0d9e, 0x0db1, 0x0dc4, 0x0dd8, 0x0001, 0x014b, + 0x0003, 0x0000, 0x0000, 0x014f, 0x0019, 0x0005, 0xffff, 0x0deb, + 0x0e02, 0x0e11, 0x0e2a, 0x0e42, 0x0e54, 0x0e65, 0x0e79, 0x0e88, + 0x0e99, 0x0eac, 0x0ebb, 0x0ec6, 0x0edb, 0x0eeb, 0x0ef9, 0x0f0f, + 0x0f1c, 0x0f2e, 0x0f44, 0x0f53, 0x0f5e, 0x0f74, 0x0f83, 0x0001, + // Entry 3280 - 32BF + 0x016c, 0x0003, 0x0000, 0x0000, 0x0170, 0x003d, 0x0005, 0xffff, + 0x0939, 0x094d, 0x0960, 0x0973, 0x0986, 0x099d, 0x09b3, 0x09c9, + 0x09dc, 0x09ef, 0x0a02, 0x0a17, 0x0a2b, 0x0a3d, 0x0a4e, 0x0a63, + 0x0a78, 0x0a8e, 0x0aa3, 0x0ab9, 0x0acc, 0x0ae0, 0x0af4, 0x0b07, + 0x0b19, 0x0b2d, 0x0b40, 0x0b54, 0x0b68, 0x0b7e, 0x0b93, 0x0baa, + 0x0bbe, 0x0bd0, 0x0be2, 0x0bf7, 0x0c0b, 0x0c1e, 0x0c30, 0x0c44, + 0x0c58, 0x0c6f, 0x0c85, 0x0c9a, 0x0cac, 0x0cc0, 0x0cd4, 0x0ce8, + 0x0cfb, 0x0d0e, 0x0d20, 0x0d35, 0x0d4a, 0x0d5f, 0x0d73, 0x0d8a, + // Entry 32C0 - 32FF + 0x0d9e, 0x0db1, 0x0dc4, 0x0dd8, 0x0001, 0x01b1, 0x0003, 0x01b5, + 0x01c4, 0x01d3, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, + 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, + 0x0933, 0x000d, 0x0005, 0xffff, 0x0f8e, 0x08f2, 0x0f92, 0x0f96, + 0x0f9a, 0x0f9e, 0x0fa2, 0x0fa6, 0x0faa, 0x0fae, 0x0fb2, 0x0fb6, + 0x000d, 0x0005, 0xffff, 0x0fba, 0x0fbf, 0x0fc4, 0x0fca, 0x0fd1, + 0x0fd9, 0x0fe1, 0x0fe9, 0x0fef, 0x0ff4, 0x0ffa, 0x1000, 0x000a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3300 - 333F + 0x0000, 0x01ed, 0x0001, 0x01ef, 0x0001, 0x01f1, 0x0003, 0x01f5, + 0x0000, 0x0204, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, + 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, + 0x0933, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, 0x08fd, + 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, 0x0933, + 0x0008, 0x021c, 0x0000, 0x0000, 0x0000, 0x0287, 0x0000, 0x0000, + 0x9006, 0x0002, 0x021f, 0x0253, 0x0003, 0x0223, 0x0233, 0x0243, + 0x000e, 0x0005, 0xffff, 0x1006, 0x100a, 0x100e, 0x1012, 0x1016, + // Entry 3340 - 337F + 0x101a, 0x101e, 0x1022, 0x1026, 0x102a, 0x102e, 0x1032, 0x1036, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, + 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, + 0x000e, 0x0005, 0xffff, 0x103a, 0x1046, 0x1050, 0x105a, 0x1064, + 0x106b, 0x1076, 0x1081, 0x108b, 0x1095, 0x109d, 0x10a7, 0x10b2, + 0x0003, 0x0257, 0x0267, 0x0277, 0x000e, 0x0005, 0xffff, 0x1006, + 0x100a, 0x100e, 0x1012, 0x1016, 0x101a, 0x101e, 0x1022, 0x1026, + 0x102a, 0x102e, 0x1032, 0x1036, 0x000e, 0x0000, 0xffff, 0x0033, + // Entry 3380 - 33BF + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + 0x0045, 0x0048, 0x004b, 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, + 0x0438, 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, + 0x046e, 0x0473, 0x0479, 0x0481, 0x0003, 0x0291, 0x0297, 0x028b, + 0x0001, 0x028d, 0x0002, 0x0005, 0x10bd, 0x10d6, 0x0001, 0x0293, + 0x0002, 0x0005, 0x10f2, 0x10f8, 0x0001, 0x0299, 0x0002, 0x0005, + 0x10fe, 0x1101, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x02a6, 0x0000, 0x02b7, 0x0004, 0x02b4, 0x02ae, 0x02ab, 0x02b1, + // Entry 33C0 - 33FF + 0x0001, 0x0005, 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0005, 0x0827, 0x0004, 0x02c5, 0x02bf, 0x02bc, + 0x02c2, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0008, 0x02d1, 0x0336, + 0x038d, 0x03c2, 0x0403, 0x041d, 0x042e, 0x043f, 0x0002, 0x02d4, + 0x0305, 0x0003, 0x02d8, 0x02e7, 0x02f6, 0x000d, 0x0005, 0xffff, + 0x1104, 0x1108, 0x110c, 0x1110, 0x1114, 0x1118, 0x111c, 0x1120, + 0x1124, 0x1128, 0x112c, 0x1130, 0x000d, 0x0005, 0xffff, 0x1134, + // Entry 3400 - 343F + 0x1136, 0x1138, 0x113a, 0x1138, 0x1134, 0x1134, 0x113a, 0x113c, + 0x113e, 0x1140, 0x113a, 0x000d, 0x0005, 0xffff, 0x1142, 0x114c, + 0x1157, 0x1160, 0x116a, 0x1172, 0x117a, 0x1184, 0x118f, 0x119c, + 0x11a8, 0x11b3, 0x0003, 0x0309, 0x0318, 0x0327, 0x000d, 0x0005, + 0xffff, 0x11bf, 0x063a, 0x11c3, 0x11c7, 0x11cb, 0x11cf, 0x11d3, + 0x0652, 0x11d7, 0x11db, 0x11df, 0x11e3, 0x000d, 0x0005, 0xffff, + 0x1134, 0x1136, 0x1138, 0x113a, 0x1138, 0x1134, 0x1134, 0x113a, + 0x113c, 0x113e, 0x1140, 0x113a, 0x000d, 0x0005, 0xffff, 0x11e7, + // Entry 3440 - 347F + 0x11ee, 0x11f6, 0x11fc, 0x1202, 0x1207, 0x120c, 0x1213, 0x121a, + 0x1224, 0x122c, 0x1234, 0x0002, 0x0339, 0x0363, 0x0005, 0x033f, + 0x0348, 0x035a, 0x0000, 0x0351, 0x0007, 0x0005, 0x123c, 0x1240, + 0x110c, 0x1244, 0x1249, 0x124d, 0x1251, 0x0007, 0x0000, 0x2053, + 0x2064, 0x2066, 0x2066, 0x2068, 0x1edb, 0x206a, 0x0007, 0x0005, + 0x1256, 0x1259, 0x125c, 0x125f, 0x1262, 0x1265, 0x1268, 0x0007, + 0x0005, 0x126c, 0x1274, 0x127b, 0x1282, 0x128d, 0x1294, 0x129c, + 0x0005, 0x0369, 0x0372, 0x0384, 0x0000, 0x037b, 0x0007, 0x0005, + // Entry 3480 - 34BF + 0x123c, 0x1240, 0x110c, 0x1244, 0x1249, 0x124d, 0x1251, 0x0007, + 0x0000, 0x2053, 0x2064, 0x2066, 0x2066, 0x2068, 0x1edb, 0x206a, + 0x0007, 0x0005, 0x1256, 0x1259, 0x125c, 0x125f, 0x1262, 0x1265, + 0x1268, 0x0007, 0x0005, 0x126c, 0x1274, 0x127b, 0x1282, 0x128d, + 0x1294, 0x129c, 0x0002, 0x0390, 0x03a9, 0x0003, 0x0394, 0x039b, + 0x03a2, 0x0005, 0x0005, 0xffff, 0x12a4, 0x12a7, 0x12aa, 0x12ad, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, + 0x0005, 0xffff, 0x12b0, 0x12be, 0x12cb, 0x12d9, 0x0003, 0x03ad, + // Entry 34C0 - 34FF + 0x03b4, 0x03bb, 0x0005, 0x0005, 0xffff, 0x12a4, 0x12a7, 0x12aa, + 0x12ad, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x0005, 0x0005, 0xffff, 0x12b0, 0x12be, 0x12cb, 0x12d9, 0x0002, + 0x03c5, 0x03e4, 0x0003, 0x03c9, 0x03d2, 0x03db, 0x0002, 0x03cc, + 0x03cf, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, + 0x03d5, 0x03d8, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0005, 0x12e6, + 0x0002, 0x03de, 0x03e1, 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, + 0x12f6, 0x0003, 0x03e8, 0x03f1, 0x03fa, 0x0002, 0x03eb, 0x03ee, + // Entry 3500 - 353F + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x03f4, + 0x03f7, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0005, 0x12e6, 0x0002, + 0x03fd, 0x0400, 0x0001, 0x0005, 0x1302, 0x0001, 0x0005, 0x130a, + 0x0003, 0x0412, 0x0000, 0x0407, 0x0002, 0x040a, 0x040e, 0x0002, + 0x0005, 0x1310, 0x133f, 0x0002, 0x0005, 0x1322, 0x1352, 0x0002, + 0x0415, 0x0419, 0x0002, 0x0005, 0x1361, 0x136a, 0x0002, 0x0005, + 0x1366, 0x136f, 0x0004, 0x042b, 0x0425, 0x0422, 0x0428, 0x0001, + 0x0005, 0x1372, 0x0001, 0x0005, 0x1386, 0x0001, 0x0001, 0x1fb9, + // Entry 3540 - 357F + 0x0001, 0x0005, 0x1394, 0x0004, 0x043c, 0x0436, 0x0433, 0x0439, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x044d, 0x0447, 0x0444, + 0x044a, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0452, 0x0002, + 0x0455, 0x0468, 0x0002, 0x0000, 0x0458, 0x000e, 0x0000, 0x206c, + 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, + 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x0002, 0x0000, 0x046b, + // Entry 3580 - 35BF + 0x000e, 0x0000, 0x206f, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, + 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, + 0x0008, 0x0484, 0x0000, 0x0000, 0x0000, 0x04e9, 0x04fc, 0x0000, + 0x050d, 0x0002, 0x0487, 0x04b8, 0x0003, 0x048b, 0x049a, 0x04a9, + 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, + 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, + 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x000d, 0x0005, + // Entry 35C0 - 35FF + 0xffff, 0x139b, 0x13a6, 0x13b2, 0x13be, 0x13c9, 0x13d4, 0x13de, + 0x13e9, 0x13f4, 0x1403, 0x140c, 0x1415, 0x0003, 0x04bc, 0x04cb, + 0x04da, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, + 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, + 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x000d, + 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, + 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x0003, 0x04f2, + // Entry 3600 - 363F + 0x04f7, 0x04ed, 0x0001, 0x04ef, 0x0001, 0x0000, 0x0601, 0x0001, + 0x04f4, 0x0001, 0x0000, 0x0601, 0x0001, 0x04f9, 0x0001, 0x0000, + 0x0601, 0x0004, 0x050a, 0x0504, 0x0501, 0x0507, 0x0001, 0x0005, + 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0005, 0x0827, 0x0004, 0x051b, 0x0515, 0x0512, 0x0518, 0x0001, + 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0527, 0x0000, 0x0000, 0x0000, + 0x058c, 0x059f, 0x0000, 0x05b0, 0x0002, 0x052a, 0x055b, 0x0003, + // Entry 3640 - 367F + 0x052e, 0x053d, 0x054c, 0x000d, 0x0000, 0xffff, 0x0606, 0x060b, + 0x0610, 0x0617, 0x061f, 0x0626, 0x062e, 0x0633, 0x0638, 0x063d, + 0x0643, 0x064d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, + 0x004b, 0x000d, 0x0005, 0xffff, 0x1421, 0x142d, 0x1436, 0x1442, + 0x144f, 0x145b, 0x1468, 0x1471, 0x147d, 0x1488, 0x1493, 0x14a5, + 0x0003, 0x055f, 0x056e, 0x057d, 0x000d, 0x0000, 0xffff, 0x0606, + 0x060b, 0x0610, 0x0617, 0x061f, 0x0626, 0x062e, 0x0633, 0x0638, + // Entry 3680 - 36BF + 0x063d, 0x0643, 0x064d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, + 0x0048, 0x004b, 0x000d, 0x0000, 0xffff, 0x0657, 0x0660, 0x0666, + 0x066f, 0x0679, 0x0682, 0x068c, 0x0692, 0x069b, 0x06a3, 0x06ab, + 0x06ba, 0x0003, 0x0595, 0x059a, 0x0590, 0x0001, 0x0592, 0x0001, + 0x0000, 0x06c8, 0x0001, 0x0597, 0x0001, 0x0000, 0x06c8, 0x0001, + 0x059c, 0x0001, 0x0000, 0x06c8, 0x0004, 0x05ad, 0x05a7, 0x05a4, + 0x05aa, 0x0001, 0x0005, 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, + // Entry 36C0 - 36FF + 0x0001, 0x1f98, 0x0001, 0x0005, 0x0827, 0x0004, 0x05be, 0x05b8, + 0x05b5, 0x05bb, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x05ca, 0x0000, 0x0000, 0x07f7, 0x0003, + 0x06be, 0x07ae, 0x05ce, 0x0001, 0x05d0, 0x00ec, 0x0000, 0x06cb, + 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, + 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, 0x081e, + 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, + // Entry 3700 - 373F + 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, + 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, + 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, + 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, + 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, + 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, 0x0c74, + 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, 0x0d1c, + 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, 0x0dc3, + // Entry 3740 - 377F + 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, 0x0e6d, + 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, + 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x0fba, + 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, 0x1066, + 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x2122, 0x1110, + 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, 0x11ba, + 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, + 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, 0x1308, + // Entry 3780 - 37BF + 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, 0x13b4, + 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, + 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, 0x150b, + 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, + 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, 0x1661, + 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, 0x170c, + 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, 0x17b1, + 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, 0x185e, + // Entry 37C0 - 37FF + 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, + 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, 0x19ab, + 0x19b1, 0x2134, 0x19c0, 0x0001, 0x06c0, 0x00ec, 0x0005, 0x14b6, + 0x14bc, 0x14c4, 0x14cc, 0x14d4, 0x14db, 0x14e1, 0x14e7, 0x14ed, + 0x14f4, 0x14fa, 0x1502, 0x150c, 0x1517, 0x1520, 0x1529, 0x1532, + 0x1538, 0x153f, 0x1547, 0x154e, 0x1555, 0x155d, 0x1563, 0x1569, + 0x156f, 0x1576, 0x157d, 0x1584, 0x158c, 0x1592, 0x159a, 0x15a2, + 0x15a7, 0x15ae, 0x15b5, 0x15bd, 0x15c6, 0x15ce, 0x15d3, 0x15da, + // Entry 3800 - 383F + 0x15df, 0x15e7, 0x15f0, 0x15f7, 0x15fe, 0x1604, 0x160a, 0x160f, + 0x1614, 0x161e, 0x1627, 0x162f, 0x1636, 0x163d, 0x1644, 0x1649, + 0x164f, 0x1657, 0x1661, 0x166a, 0x1672, 0x1679, 0x167f, 0x1686, + 0x168e, 0x1695, 0x169c, 0x16a9, 0x16af, 0x16b6, 0x16bc, 0x16c2, + 0x16c9, 0x16d1, 0x16d7, 0x16de, 0x16e5, 0x16ec, 0x16f3, 0x16fa, + 0x1703, 0x1709, 0x170f, 0x1715, 0x171d, 0x1726, 0x172c, 0x1731, + 0x1737, 0x1741, 0x1748, 0x174f, 0x1756, 0x175d, 0x1763, 0x176b, + 0x1770, 0x1778, 0x177e, 0x1787, 0x178c, 0x1793, 0x1799, 0x17a0, + // Entry 3840 - 387F + 0x17a6, 0x17ab, 0x17b4, 0x17ba, 0x17c2, 0x17c9, 0x17d0, 0x17d8, + 0x17e1, 0x17eb, 0x17f4, 0x17fb, 0x1803, 0x1809, 0x1810, 0x1817, + 0x181d, 0x1823, 0x1829, 0x1831, 0x183a, 0x1840, 0x1849, 0x1851, + 0x1857, 0x185e, 0x1864, 0x186c, 0x1873, 0x187a, 0x1882, 0x188b, + 0x1893, 0x189c, 0x18a2, 0x18a8, 0x18af, 0x18b5, 0x18bf, 0x18c6, + 0x18cc, 0x18d3, 0x18da, 0x18e1, 0x18e8, 0x18ef, 0x18f5, 0x18fc, + 0x1905, 0x190d, 0x1915, 0x191f, 0x1925, 0x192b, 0x1933, 0x193b, + 0x1943, 0x194b, 0x1951, 0x195a, 0x1963, 0x196b, 0x1973, 0x1979, + // Entry 3880 - 38BF + 0x197f, 0x198a, 0x198f, 0x1998, 0x199f, 0x19a7, 0x19b0, 0x19b8, + 0x19c1, 0x19c9, 0x19d2, 0x19da, 0x19e2, 0x19e8, 0x19ef, 0x19f8, + 0x19ff, 0x1a05, 0x1a0b, 0x1a15, 0x1a1b, 0x1a24, 0x1a2b, 0x1a34, + 0x1a3b, 0x1a41, 0x1a4c, 0x1a54, 0x1a5c, 0x1a62, 0x1a6b, 0x1a75, + 0x1a7b, 0x1a84, 0x1a8c, 0x1a92, 0x1a99, 0x1a9f, 0x1aa5, 0x1aad, + 0x1ab5, 0x1abb, 0x1ac4, 0x1acc, 0x1ad3, 0x1ada, 0x1ae4, 0x1aed, + 0x1af5, 0x1afb, 0x1b03, 0x1b0a, 0x1b11, 0x1b18, 0x1b1e, 0x1b25, + 0x1b2c, 0x1b32, 0x1b37, 0x1b3d, 0x1b46, 0x1b4e, 0x1b54, 0x1b5a, + // Entry 38C0 - 38FF + 0x1b60, 0x1b68, 0x1b72, 0x0001, 0x07b0, 0x0045, 0x0005, 0x14b6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x14fa, 0x1b79, 0x1b83, 0x1b8e, 0x1b97, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x156f, 0x1576, 0x157d, 0x1584, 0xffff, 0x1592, 0xffff, 0xffff, + 0xffff, 0x15ae, 0xffff, 0x15bd, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x160a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3900 - 393F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x16a9, 0x0004, 0x0000, 0x07ff, 0x07fc, + 0x0802, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, + 0x0005, 0x0846, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9006, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0817, 0x082d, 0x0000, 0x083e, 0x0003, 0x0821, 0x0827, 0x081b, + 0x0001, 0x081d, 0x0002, 0x0005, 0x1ba0, 0x1bb3, 0x0001, 0x0823, + 0x0002, 0x0005, 0x1bba, 0x1bb3, 0x0001, 0x0829, 0x0002, 0x0005, + // Entry 3940 - 397F + 0x1bba, 0x1bb3, 0x0004, 0x083b, 0x0835, 0x0832, 0x0838, 0x0001, + 0x0005, 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0005, 0x0827, 0x0004, 0x084c, 0x0846, 0x0843, 0x0849, + 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0000, 0x03c6, 0x0040, 0x0890, 0x0000, 0x0000, + 0x0895, 0x08ac, 0x08c3, 0x08da, 0x08f1, 0x0908, 0x091f, 0x0936, + 0x094d, 0x0964, 0x097f, 0x099a, 0x0000, 0x0000, 0x0000, 0x09b5, + 0x09ce, 0x09e7, 0x0000, 0x0000, 0x0000, 0x0a00, 0x0000, 0x0000, + // Entry 3980 - 39BF + 0x0000, 0x0000, 0x0000, 0x0a05, 0x0a19, 0x0a2d, 0x0a41, 0x0a55, + 0x0a69, 0x0a7d, 0x0a91, 0x0aa5, 0x0ab9, 0x0acd, 0x0ae1, 0x0af5, + 0x0b09, 0x0b1d, 0x0b31, 0x0b45, 0x0b59, 0x0b6d, 0x0b81, 0x0b95, + 0x0000, 0x0ba9, 0x0000, 0x0bae, 0x0bc4, 0x0bda, 0x0bf0, 0x0c06, + 0x0c1c, 0x0c32, 0x0c48, 0x0c5e, 0x0c74, 0x0001, 0x0892, 0x0001, + 0x0001, 0x0040, 0x0003, 0x0899, 0x089c, 0x08a1, 0x0001, 0x0005, + 0x1bc3, 0x0003, 0x0005, 0x1bc8, 0x1bd8, 0x1be2, 0x0002, 0x08a4, + 0x08a8, 0x0002, 0x0005, 0x1c00, 0x1bf4, 0x0002, 0x0005, 0x1c1a, + // Entry 39C0 - 39FF + 0x1c0d, 0x0003, 0x08b0, 0x08b3, 0x08b8, 0x0001, 0x0005, 0x1bc3, + 0x0003, 0x0005, 0x1c28, 0x1bd8, 0x1c36, 0x0002, 0x08bb, 0x08bf, + 0x0002, 0x0005, 0x1c00, 0x1bf4, 0x0002, 0x0005, 0x1c1a, 0x1c0d, + 0x0003, 0x08c7, 0x08ca, 0x08cf, 0x0001, 0x0005, 0x1bc3, 0x0003, + 0x0005, 0x1c44, 0x1bd8, 0x1c4e, 0x0002, 0x08d2, 0x08d6, 0x0002, + 0x0005, 0x1c58, 0x1c58, 0x0002, 0x0005, 0x1c62, 0x1c62, 0x0003, + 0x08de, 0x08e1, 0x08e6, 0x0001, 0x0005, 0x1c6d, 0x0003, 0x0005, + 0x1c77, 0x1c8a, 0x1c99, 0x0002, 0x08e9, 0x08ed, 0x0002, 0x0005, + // Entry 3A00 - 3A3F + 0x1cbd, 0x1cac, 0x0002, 0x0005, 0x1ce1, 0x1ccf, 0x0003, 0x08f5, + 0x08f8, 0x08fd, 0x0001, 0x0005, 0x1cf4, 0x0003, 0x0005, 0x1cf9, + 0x1d04, 0x1d0f, 0x0002, 0x0900, 0x0904, 0x0002, 0x0005, 0x1d1a, + 0x1d1a, 0x0002, 0x0005, 0x1d27, 0x1d27, 0x0003, 0x090c, 0x090f, + 0x0914, 0x0001, 0x0005, 0x1cf4, 0x0003, 0x0005, 0x1cf9, 0x1d04, + 0x1d0f, 0x0002, 0x0917, 0x091b, 0x0002, 0x0005, 0x1d35, 0x1d35, + 0x0002, 0x0005, 0x1d40, 0x1d40, 0x0003, 0x0923, 0x0926, 0x092b, + 0x0001, 0x0005, 0x1006, 0x0003, 0x0005, 0x1d4c, 0x1d5a, 0x1d63, + // Entry 3A40 - 3A7F + 0x0002, 0x092e, 0x0932, 0x0002, 0x0005, 0x1d7e, 0x1d73, 0x0002, + 0x0005, 0x1d97, 0x1d8b, 0x0003, 0x093a, 0x093d, 0x0942, 0x0001, + 0x0005, 0x1006, 0x0003, 0x0005, 0x1da5, 0x1d5a, 0x1dae, 0x0002, + 0x0945, 0x0949, 0x0002, 0x0005, 0x1d7e, 0x1d73, 0x0002, 0x0005, + 0x1d97, 0x1d8b, 0x0003, 0x0951, 0x0954, 0x0959, 0x0001, 0x0005, + 0x1006, 0x0003, 0x0005, 0x1da5, 0x1d5a, 0x1dae, 0x0002, 0x095c, + 0x0960, 0x0002, 0x0005, 0x1db7, 0x1db7, 0x0002, 0x0005, 0x1dc1, + 0x1dc1, 0x0004, 0x0969, 0x096c, 0x0971, 0x097c, 0x0001, 0x0005, + // Entry 3A80 - 3ABF + 0x1dcc, 0x0003, 0x0005, 0x1dd4, 0x1de6, 0x1df3, 0x0002, 0x0974, + 0x0978, 0x0002, 0x0005, 0x1e16, 0x1e07, 0x0002, 0x0005, 0x1e36, + 0x1e26, 0x0001, 0x0005, 0x1e47, 0x0004, 0x0984, 0x0987, 0x098c, + 0x0997, 0x0001, 0x0005, 0x1e5a, 0x0003, 0x0005, 0x1e5f, 0x1e6c, + 0x1e77, 0x0002, 0x098f, 0x0993, 0x0002, 0x0005, 0x1e86, 0x1e86, + 0x0002, 0x0005, 0x1e93, 0x1e93, 0x0001, 0x0005, 0x1e47, 0x0004, + 0x099f, 0x09a2, 0x09a7, 0x09b2, 0x0001, 0x0005, 0x1e5a, 0x0003, + 0x0005, 0x1ea1, 0x1e6c, 0x1eac, 0x0002, 0x09aa, 0x09ae, 0x0002, + // Entry 3AC0 - 3AFF + 0x0005, 0x1eb7, 0x1eb7, 0x0002, 0x0005, 0x1ec2, 0x1ec2, 0x0001, + 0x0005, 0x1e47, 0x0003, 0x09b9, 0x09bc, 0x09c3, 0x0001, 0x0005, + 0x1ece, 0x0005, 0x0005, 0x1edc, 0x1ee2, 0x1302, 0x1ed3, 0x1ee8, + 0x0002, 0x09c6, 0x09ca, 0x0002, 0x0005, 0x1f02, 0x1ef6, 0x0002, + 0x0005, 0x1f1c, 0x1f0f, 0x0003, 0x09d2, 0x09d5, 0x09dc, 0x0001, + 0x0005, 0x1ece, 0x0005, 0x0005, 0x1edc, 0x1ee2, 0x1302, 0x1ed3, + 0x1ee8, 0x0002, 0x09df, 0x09e3, 0x0002, 0x0005, 0x1f02, 0x1ef6, + 0x0002, 0x0005, 0x1f1c, 0x1f0f, 0x0003, 0x09eb, 0x09ee, 0x09f5, + // Entry 3B00 - 3B3F + 0x0001, 0x0005, 0x1ece, 0x0005, 0x0005, 0x1edc, 0x1ee2, 0x1f31, + 0x1f2a, 0x1f37, 0x0002, 0x09f8, 0x09fc, 0x0002, 0x0005, 0x1f40, + 0x1f40, 0x0002, 0x0005, 0x1f4a, 0x1f4a, 0x0001, 0x0a02, 0x0001, + 0x0005, 0x1f55, 0x0003, 0x0000, 0x0a09, 0x0a0e, 0x0003, 0x0005, + 0x1f68, 0x1f7a, 0x1f87, 0x0002, 0x0a11, 0x0a15, 0x0002, 0x0005, + 0x1fb2, 0x1f9b, 0x0002, 0x0005, 0x1fda, 0x1fca, 0x0003, 0x0000, + 0x0a1d, 0x0a22, 0x0003, 0x0005, 0x1feb, 0x1ff7, 0x2001, 0x0002, + 0x0a25, 0x0a29, 0x0002, 0x0005, 0x1fb2, 0x1f9b, 0x0002, 0x0005, + // Entry 3B40 - 3B7F + 0x1fda, 0x1fca, 0x0003, 0x0000, 0x0a31, 0x0a36, 0x0003, 0x0006, + 0x0000, 0x000a, 0x0014, 0x0002, 0x0a39, 0x0a3d, 0x0002, 0x0005, + 0x1fb2, 0x1f9b, 0x0002, 0x0005, 0x1fda, 0x1fca, 0x0003, 0x0000, + 0x0a45, 0x0a4a, 0x0003, 0x0006, 0x001e, 0x002f, 0x003b, 0x0002, + 0x0a4d, 0x0a51, 0x0002, 0x0006, 0x004e, 0x004e, 0x0002, 0x0006, + 0x0064, 0x0064, 0x0003, 0x0000, 0x0a59, 0x0a5e, 0x0003, 0x0006, + 0x0073, 0x0080, 0x008b, 0x0002, 0x0a61, 0x0a65, 0x0002, 0x0006, + 0x004e, 0x004e, 0x0002, 0x0006, 0x0064, 0x0064, 0x0003, 0x0000, + // Entry 3B80 - 3BBF + 0x0a6d, 0x0a72, 0x0003, 0x0006, 0x009a, 0x00a4, 0x00ae, 0x0002, + 0x0a75, 0x0a79, 0x0002, 0x0006, 0x004e, 0x004e, 0x0002, 0x0006, + 0x0064, 0x0064, 0x0003, 0x0000, 0x0a81, 0x0a86, 0x0003, 0x0006, + 0x00b8, 0x00c9, 0x00d5, 0x0002, 0x0a89, 0x0a8d, 0x0002, 0x0006, + 0x00e8, 0x00e8, 0x0002, 0x0006, 0x00fe, 0x00fe, 0x0003, 0x0000, + 0x0a95, 0x0a9a, 0x0003, 0x0006, 0x010d, 0x0119, 0x0123, 0x0002, + 0x0a9d, 0x0aa1, 0x0002, 0x0006, 0x00e8, 0x00e8, 0x0002, 0x0006, + 0x00fe, 0x00fe, 0x0003, 0x0000, 0x0aa9, 0x0aae, 0x0003, 0x0006, + // Entry 3BC0 - 3BFF + 0x0131, 0x0119, 0x013b, 0x0002, 0x0ab1, 0x0ab5, 0x0002, 0x0006, + 0x00e8, 0x00e8, 0x0002, 0x0006, 0x00fe, 0x00fe, 0x0003, 0x0000, + 0x0abd, 0x0ac2, 0x0003, 0x0006, 0x0145, 0x015a, 0x016a, 0x0002, + 0x0ac5, 0x0ac9, 0x0002, 0x0006, 0x0181, 0x0181, 0x0002, 0x0006, + 0x019b, 0x019b, 0x0003, 0x0000, 0x0ad1, 0x0ad6, 0x0003, 0x0006, + 0x01ae, 0x01bb, 0x01c6, 0x0002, 0x0ad9, 0x0add, 0x0002, 0x0006, + 0x0181, 0x0181, 0x0002, 0x0006, 0x019b, 0x019b, 0x0003, 0x0000, + 0x0ae5, 0x0aea, 0x0003, 0x0006, 0x01d5, 0x01bb, 0x01e0, 0x0002, + // Entry 3C00 - 3C3F + 0x0aed, 0x0af1, 0x0002, 0x0006, 0x0181, 0x0181, 0x0002, 0x0006, + 0x019b, 0x019b, 0x0003, 0x0000, 0x0af9, 0x0afe, 0x0003, 0x0006, + 0x01eb, 0x01fc, 0x0208, 0x0002, 0x0b01, 0x0b05, 0x0002, 0x0006, + 0x021b, 0x021b, 0x0002, 0x0006, 0x0231, 0x0231, 0x0003, 0x0000, + 0x0b0d, 0x0b12, 0x0003, 0x0006, 0x0240, 0x024c, 0x0256, 0x0002, + 0x0b15, 0x0b19, 0x0002, 0x0006, 0x021b, 0x021b, 0x0002, 0x0006, + 0x0231, 0x0231, 0x0003, 0x0000, 0x0b21, 0x0b26, 0x0003, 0x0006, + 0x0264, 0x024c, 0x026e, 0x0002, 0x0b29, 0x0b2d, 0x0002, 0x0006, + // Entry 3C40 - 3C7F + 0x021b, 0x021b, 0x0002, 0x0006, 0x0231, 0x0231, 0x0003, 0x0000, + 0x0b35, 0x0b3a, 0x0003, 0x0006, 0x0278, 0x028a, 0x0297, 0x0002, + 0x0b3d, 0x0b41, 0x0002, 0x0006, 0x02ab, 0x02ab, 0x0002, 0x0006, + 0x02c2, 0x02c2, 0x0003, 0x0000, 0x0b49, 0x0b4e, 0x0003, 0x0006, + 0x02d2, 0x02de, 0x02e8, 0x0002, 0x0b51, 0x0b55, 0x0002, 0x0006, + 0x02ab, 0x02ab, 0x0002, 0x0006, 0x02c2, 0x02c2, 0x0003, 0x0000, + 0x0b5d, 0x0b62, 0x0003, 0x0006, 0x02f6, 0x02de, 0x0300, 0x0002, + 0x0b65, 0x0b69, 0x0002, 0x0006, 0x02ab, 0x02ab, 0x0002, 0x0006, + // Entry 3C80 - 3CBF + 0x02c2, 0x02c2, 0x0003, 0x0000, 0x0b71, 0x0b76, 0x0003, 0x0006, + 0x030a, 0x031c, 0x0329, 0x0002, 0x0b79, 0x0b7d, 0x0002, 0x0006, + 0x0354, 0x033d, 0x0002, 0x0006, 0x037c, 0x036c, 0x0003, 0x0000, + 0x0b85, 0x0b8a, 0x0003, 0x0006, 0x038d, 0x039a, 0x03a5, 0x0002, + 0x0b8d, 0x0b91, 0x0002, 0x0006, 0x0354, 0x033d, 0x0002, 0x0006, + 0x037c, 0x036c, 0x0003, 0x0000, 0x0b99, 0x0b9e, 0x0003, 0x0006, + 0x03b4, 0x039a, 0x03bf, 0x0002, 0x0ba1, 0x0ba5, 0x0002, 0x0006, + 0x0354, 0x033d, 0x0002, 0x0006, 0x037c, 0x036c, 0x0001, 0x0bab, + // Entry 3CC0 - 3CFF + 0x0001, 0x0006, 0x03ca, 0x0003, 0x0bb2, 0x0bb5, 0x0bb9, 0x0001, + 0x0006, 0x03db, 0x0002, 0x0006, 0xffff, 0x03e0, 0x0002, 0x0bbc, + 0x0bc0, 0x0002, 0x0006, 0x03f6, 0x03ea, 0x0002, 0x0006, 0x0410, + 0x0403, 0x0003, 0x0bc8, 0x0bcb, 0x0bcf, 0x0001, 0x0006, 0x041e, + 0x0002, 0x0006, 0xffff, 0x03e0, 0x0002, 0x0bd2, 0x0bd6, 0x0002, + 0x0006, 0x0421, 0x0421, 0x0002, 0x0006, 0x042b, 0x042b, 0x0003, + 0x0bde, 0x0be1, 0x0be5, 0x0001, 0x0006, 0x041e, 0x0002, 0x0006, + 0xffff, 0x0436, 0x0002, 0x0be8, 0x0bec, 0x0002, 0x0006, 0x0421, + // Entry 3D00 - 3D3F + 0x0421, 0x0002, 0x0006, 0x042b, 0x042b, 0x0003, 0x0bf4, 0x0bf7, + 0x0bfb, 0x0001, 0x0006, 0x043e, 0x0002, 0x0006, 0xffff, 0x0445, + 0x0002, 0x0bfe, 0x0c02, 0x0002, 0x0006, 0x045f, 0x0451, 0x0002, + 0x0006, 0x047d, 0x046e, 0x0003, 0x0c0a, 0x0c0d, 0x0c11, 0x0001, + 0x0001, 0x075a, 0x0002, 0x0006, 0xffff, 0x048d, 0x0002, 0x0c14, + 0x0c18, 0x0002, 0x0006, 0x0497, 0x0497, 0x0002, 0x0006, 0x04a3, + 0x04a3, 0x0003, 0x0c20, 0x0c23, 0x0c27, 0x0001, 0x0001, 0x077c, + 0x0002, 0x0006, 0xffff, 0x048d, 0x0002, 0x0c2a, 0x0c2e, 0x0002, + // Entry 3D40 - 3D7F + 0x0006, 0x0497, 0x0497, 0x0002, 0x0006, 0x04a3, 0x04a3, 0x0003, + 0x0c36, 0x0c39, 0x0c3d, 0x0001, 0x0006, 0x04b0, 0x0002, 0x0006, + 0xffff, 0x04b8, 0x0002, 0x0c40, 0x0c44, 0x0002, 0x0006, 0x04cd, + 0x04be, 0x0002, 0x0006, 0x04ed, 0x04dd, 0x0003, 0x0c4c, 0x0c4f, + 0x0c53, 0x0001, 0x0001, 0x07f5, 0x0002, 0x0006, 0xffff, 0x04b8, + 0x0002, 0x0c56, 0x0c5a, 0x0002, 0x0006, 0x04fe, 0x04fe, 0x0002, + 0x0006, 0x050a, 0x050a, 0x0003, 0x0c62, 0x0c65, 0x0c69, 0x0001, + 0x0001, 0x07f5, 0x0002, 0x0006, 0xffff, 0x04b8, 0x0002, 0x0c6c, + // Entry 3D80 - 3DBF + 0x0c70, 0x0002, 0x0006, 0x0517, 0x0517, 0x0002, 0x0006, 0x0521, + 0x0521, 0x0001, 0x0c76, 0x0001, 0x0006, 0x052c, 0x0004, 0x0c7e, + 0x0c83, 0x0c88, 0x0ca9, 0x0003, 0x0000, 0x1dc7, 0x1dd5, 0x1ddc, + 0x0003, 0x0006, 0x053b, 0x0547, 0x055c, 0x0002, 0x0c93, 0x0c8b, + 0x0002, 0x0000, 0x0c8e, 0x0003, 0x0006, 0xffff, 0x0572, 0x058b, + 0x0003, 0x0c97, 0x0ca3, 0x0c9d, 0x0004, 0x0006, 0xffff, 0xffff, + 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, + 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a8, 0x0002, 0x0e90, + // Entry 3DC0 - 3DFF + 0x0cac, 0x0003, 0x0cb0, 0x0df0, 0x0d50, 0x009e, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0644, 0x06a8, 0x073c, 0x0785, 0x07f7, + 0x086c, 0x08fc, 0x0980, 0x09c3, 0x0a83, 0x0ac6, 0x0b12, 0x0b7f, + 0x0bc5, 0x0c1f, 0x0c83, 0x0d05, 0x0d6c, 0x0dd6, 0x0e28, 0x0e74, + 0xffff, 0xffff, 0x0edc, 0xffff, 0x0f3d, 0xffff, 0x0fb2, 0x0ff5, + 0x1032, 0x106f, 0xffff, 0xffff, 0x10f9, 0x113f, 0x11a0, 0xffff, + 0xffff, 0xffff, 0x121a, 0xffff, 0x128f, 0x12f3, 0xffff, 0x137b, + 0x13e8, 0x144f, 0xffff, 0xffff, 0xffff, 0xffff, 0x14ee, 0xffff, + // Entry 3E00 - 3E3F + 0xffff, 0x1565, 0x15cf, 0xffff, 0xffff, 0x1681, 0x16f0, 0x173f, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1814, 0x1854, + 0x189a, 0x18dd, 0x191d, 0xffff, 0xffff, 0x19ce, 0xffff, 0x1a1a, + 0xffff, 0xffff, 0x1aa4, 0xffff, 0x1b48, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1be5, 0xffff, 0x1c3a, 0x1ca4, 0x1d11, 0x1d66, 0xffff, + 0xffff, 0xffff, 0x1dd3, 0x1e2e, 0x1e83, 0xffff, 0xffff, 0x1efb, + 0x1f88, 0x1fd7, 0x2014, 0xffff, 0xffff, 0x208d, 0x20d9, 0x2119, + 0xffff, 0x217d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x228c, + // Entry 3E40 - 3E7F + 0x22d2, 0x2312, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x23e0, 0xffff, 0xffff, 0x2449, 0xffff, 0x2494, 0xffff, + 0x24fb, 0x2544, 0x2599, 0xffff, 0x25ee, 0x263d, 0xffff, 0xffff, + 0xffff, 0x26c6, 0x2709, 0xffff, 0xffff, 0x05ac, 0x06f9, 0x0a00, + 0x0a40, 0xffff, 0xffff, 0x1aed, 0x2222, 0x009e, 0x0006, 0x05e9, + 0x05fe, 0x0617, 0x0631, 0x065f, 0x06b8, 0x074e, 0x07a1, 0x0814, + 0x0892, 0x091e, 0x0990, 0x09d1, 0x0a93, 0x0ad9, 0x0b30, 0x0b90, + 0x0bd9, 0x0c3a, 0x0ca8, 0x0d21, 0x0d89, 0x0deb, 0x0e3b, 0x0e86, + // Entry 3E80 - 3EBF + 0x0ebd, 0x0ecc, 0x0eed, 0x0f22, 0x0f50, 0x0f97, 0x0fc2, 0x1003, + 0x1040, 0x1082, 0x10bb, 0x10e0, 0x110a, 0x1157, 0x11ad, 0x11da, + 0x11e8, 0x1203, 0x1235, 0x127e, 0x12a7, 0x130c, 0x135a, 0x1396, + 0x1404, 0x145c, 0x1489, 0x14a4, 0x14cb, 0x14de, 0x14fd, 0x152e, + 0x1549, 0x1582, 0x15ee, 0x1656, 0x166f, 0x169b, 0x1704, 0x174c, + 0x1779, 0x1794, 0x17ad, 0x17c0, 0x17db, 0x17f7, 0x1823, 0x1865, + 0x18aa, 0x18ec, 0x193e, 0x1992, 0x19af, 0x19dc, 0x1a0b, 0x1a2e, + 0x1a69, 0x1a8c, 0x1ab6, 0x1b2d, 0x1b59, 0x1b8e, 0x1b9e, 0x1bb3, + // Entry 3EC0 - 3EFF + 0x1bc9, 0x1bf6, 0x1c2b, 0x1c57, 0x1cc2, 0x1d27, 0x1d75, 0x1da6, + 0x1db6, 0x1dc4, 0x1deb, 0x1e44, 0x1e98, 0x1ed5, 0x1ee2, 0x1f17, + 0x1f9c, 0x1fe5, 0x2028, 0x2063, 0x2071, 0x20a0, 0x20e8, 0x212b, + 0x2162, 0x219d, 0x21f0, 0x2201, 0x2210, 0x226b, 0x227c, 0x229d, + 0x22e1, 0x2320, 0x234f, 0x2364, 0x237f, 0x239b, 0x23b2, 0x23c3, + 0x23d1, 0x23f0, 0x2423, 0x2439, 0x2457, 0x2486, 0x24ab, 0x24ec, + 0x250d, 0x255a, 0x25a9, 0x25dc, 0x2602, 0x2650, 0x2689, 0x2698, + 0x26ae, 0x26d6, 0x2720, 0x163f, 0x1f62, 0x05ba, 0x0709, 0x0a0f, + // Entry 3F00 - 3F3F + 0x0a50, 0x0f89, 0x1a7e, 0x1afc, 0x2234, 0x009e, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0684, 0x06d2, 0x076a, 0x07c7, 0x083b, + 0x08c2, 0x094a, 0x09aa, 0x09e9, 0x0aad, 0x0af6, 0x0b58, 0x0bab, + 0x0bf7, 0x0c5f, 0x0cd7, 0x0d47, 0x0db0, 0x0e0a, 0x0e58, 0x0ea2, + 0xffff, 0xffff, 0x0f08, 0xffff, 0x0f6d, 0xffff, 0x0fdc, 0x101b, + 0x1058, 0x109f, 0xffff, 0xffff, 0x1125, 0x1179, 0x11c4, 0xffff, + 0xffff, 0xffff, 0x125a, 0xffff, 0x12c9, 0x132f, 0xffff, 0x13bb, + 0x142a, 0x1473, 0xffff, 0xffff, 0xffff, 0xffff, 0x1516, 0xffff, + // Entry 3F40 - 3F7F + 0xffff, 0x15a9, 0x1617, 0xffff, 0xffff, 0x16bf, 0x1722, 0x1763, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x183c, 0x1880, + 0x18c4, 0x1905, 0x1968, 0xffff, 0xffff, 0x19f4, 0xffff, 0x1a4c, + 0xffff, 0xffff, 0x1ad2, 0xffff, 0x1b74, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1c11, 0xffff, 0x1c7e, 0x1cea, 0x1d47, 0x1d8e, 0xffff, + 0xffff, 0xffff, 0x1e0d, 0x1e64, 0x1eb7, 0xffff, 0xffff, 0x1f3d, + 0x1fba, 0x1ffd, 0x2046, 0xffff, 0xffff, 0x20bd, 0x2101, 0x2147, + 0xffff, 0x21c7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22b8, + // Entry 3F80 - 3FBF + 0x22fa, 0x2338, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x240a, 0xffff, 0xffff, 0x246f, 0xffff, 0x24cc, 0xffff, + 0x2529, 0x257a, 0x25c3, 0xffff, 0x2620, 0x266d, 0xffff, 0xffff, + 0xffff, 0x26f0, 0x2741, 0xffff, 0xffff, 0x05d2, 0x0723, 0x0a28, + 0x0a6a, 0xffff, 0xffff, 0x1b15, 0x2250, 0x0003, 0x0e94, 0x0f16, + 0x0ed5, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, 0xffff, + // Entry 3FC0 - 3FFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x16e2, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, + // Entry 4000 - 403F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1561, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, 0x097c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, + // Entry 4040 - 407F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0004, 0x0286, 0x0660, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + // Entry 4080 - 40BF + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0007, 0x0000, 0x0001, 0x0007, 0x0011, 0x0001, 0x0007, 0x001d, + 0x0001, 0x0007, 0x0027, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x0239, 0x0253, 0x0264, 0x0275, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0007, 0xffff, 0x0035, + 0x0039, 0x003d, 0x0041, 0x0045, 0x0049, 0x004d, 0x0051, 0x0055, + // Entry 40C0 - 40FF + 0x0059, 0x005d, 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, + 0x0048, 0x004b, 0x000d, 0x0007, 0xffff, 0x0065, 0x006c, 0x0073, + 0x0078, 0x0045, 0x007e, 0x0083, 0x0088, 0x008f, 0x0098, 0x00a0, + 0x00a7, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0007, 0xffff, + 0x0035, 0x0039, 0x003d, 0x0041, 0x0045, 0x0049, 0x004d, 0x0051, + 0x0055, 0x0059, 0x005d, 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + // Entry 4100 - 413F + 0x0045, 0x0048, 0x004b, 0x000d, 0x0007, 0xffff, 0x00ae, 0x00b5, + 0x00bc, 0x00c1, 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00de, 0x00e7, + 0x00ef, 0x00f6, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0007, 0x00fd, 0x0100, 0x0105, + 0x010b, 0x010f, 0x0114, 0x0117, 0x0007, 0x0000, 0x003f, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x0007, 0x0007, 0x00fd, + 0x0100, 0x0105, 0x010b, 0x010f, 0x0114, 0x0117, 0x0007, 0x0007, + 0x011b, 0x0121, 0x012f, 0x0146, 0x0154, 0x0164, 0x016b, 0x0005, + // Entry 4140 - 417F + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0007, 0x00fd, + 0x0100, 0x0105, 0x010b, 0x010f, 0x0114, 0x0117, 0x0007, 0x0000, + 0x003f, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x0007, + 0x0007, 0x00fd, 0x0100, 0x0105, 0x010b, 0x010f, 0x0114, 0x0117, + 0x0007, 0x0007, 0x011b, 0x0121, 0x012f, 0x0146, 0x0154, 0x0164, + 0x016b, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x0007, 0xffff, 0x0174, 0x017d, 0x0186, 0x0190, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0007, + // Entry 4180 - 41BF + 0xffff, 0x019a, 0x01a7, 0x01b4, 0x01c2, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x0007, 0xffff, 0x0174, 0x017d, 0x0186, 0x0190, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, + 0x0007, 0xffff, 0x019a, 0x01a7, 0x01b4, 0x01c2, 0x0002, 0x0135, + 0x01b7, 0x0003, 0x0139, 0x0163, 0x018d, 0x000b, 0x0148, 0x014e, + 0x0145, 0x0151, 0x0157, 0x015a, 0x015d, 0x014b, 0x0154, 0x0000, + 0x0160, 0x0001, 0x0007, 0x01d0, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0007, 0x01db, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0007, 0x01e4, + // Entry 41C0 - 41FF + 0x0001, 0x0007, 0x01ea, 0x0001, 0x0007, 0x01f2, 0x0001, 0x0007, + 0x01fb, 0x0001, 0x0007, 0x0208, 0x0001, 0x0007, 0x020f, 0x000b, + 0x0172, 0x0178, 0x016f, 0x017b, 0x0181, 0x0184, 0x0187, 0x0175, + 0x017e, 0x0000, 0x018a, 0x0001, 0x0007, 0x01d0, 0x0001, 0x0000, + 0x1f9c, 0x0001, 0x0000, 0x200e, 0x0001, 0x0005, 0x12e6, 0x0001, + 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, 0x0007, 0x01f2, + 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, 0x0001, 0x0007, + 0x020f, 0x000b, 0x019c, 0x01a2, 0x0199, 0x01a5, 0x01ab, 0x01ae, + // Entry 4200 - 423F + 0x01b1, 0x019f, 0x01a8, 0x0000, 0x01b4, 0x0001, 0x0007, 0x01d0, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0007, 0x01db, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, + 0x0007, 0x01f2, 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, + 0x0001, 0x0007, 0x020f, 0x0003, 0x01bb, 0x01e5, 0x020f, 0x000b, + 0x01ca, 0x01d0, 0x01c7, 0x01d3, 0x01d9, 0x01dc, 0x01df, 0x01cd, + 0x01d6, 0x0000, 0x01e2, 0x0001, 0x0007, 0x01d0, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0007, 0x01db, 0x0001, 0x0000, 0x04f2, 0x0001, + // Entry 4240 - 427F + 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, 0x0007, 0x01f2, + 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, 0x0001, 0x0007, + 0x020f, 0x000b, 0x01f4, 0x01fa, 0x01f1, 0x01fd, 0x0203, 0x0206, + 0x0209, 0x01f7, 0x0200, 0x0000, 0x020c, 0x0001, 0x0007, 0x01d0, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0007, 0x01db, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, + 0x0007, 0x01f2, 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, + 0x0001, 0x0007, 0x020f, 0x000b, 0x021e, 0x0224, 0x021b, 0x0227, + // Entry 4280 - 42BF + 0x022d, 0x0230, 0x0233, 0x0221, 0x022a, 0x0000, 0x0236, 0x0001, + 0x0007, 0x01d0, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0007, 0x01db, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0007, 0x01e4, 0x0001, 0x0007, + 0x01ea, 0x0001, 0x0007, 0x01f2, 0x0001, 0x0007, 0x01fb, 0x0001, + 0x0007, 0x0208, 0x0001, 0x0007, 0x020f, 0x0003, 0x0248, 0x0000, + 0x023d, 0x0002, 0x0240, 0x0244, 0x0002, 0x0007, 0x0215, 0x023d, + 0x0002, 0x0007, 0x0228, 0x0246, 0x0002, 0x024b, 0x024f, 0x0002, + 0x0007, 0x0250, 0x025e, 0x0002, 0x0007, 0x0256, 0x0263, 0x0004, + // Entry 42C0 - 42FF + 0x0261, 0x025b, 0x0258, 0x025e, 0x0001, 0x0007, 0x0268, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0007, 0x0277, + 0x0004, 0x0272, 0x026c, 0x0269, 0x026f, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0004, 0x0283, 0x027d, 0x027a, 0x0280, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0040, 0x02c7, 0x0000, 0x0000, 0x02cc, 0x02e3, + 0x02f5, 0x0307, 0x031e, 0x0330, 0x0342, 0x0359, 0x036b, 0x037d, + // Entry 4300 - 433F + 0x0398, 0x03ae, 0x0000, 0x0000, 0x0000, 0x03c4, 0x03db, 0x03ed, + 0x0000, 0x0000, 0x0000, 0x03ff, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0404, 0x0418, 0x042c, 0x0440, 0x0454, 0x0468, 0x047c, + 0x0490, 0x04a4, 0x04b8, 0x04cc, 0x04e0, 0x04f4, 0x0508, 0x051c, + 0x0530, 0x0544, 0x0558, 0x056c, 0x0580, 0x0594, 0x0000, 0x05a8, + 0x0000, 0x05ad, 0x05c3, 0x05d5, 0x05e7, 0x05fd, 0x060f, 0x0621, + 0x0637, 0x0649, 0x065b, 0x0001, 0x02c9, 0x0001, 0x0000, 0x1a35, + 0x0003, 0x02d0, 0x02d3, 0x02d8, 0x0001, 0x0007, 0x0280, 0x0003, + // Entry 4340 - 437F + 0x0007, 0x0284, 0x028f, 0x0295, 0x0002, 0x02db, 0x02df, 0x0002, + 0x0007, 0x02a0, 0x02a0, 0x0002, 0x0007, 0x02b1, 0x02b1, 0x0003, + 0x02e7, 0x0000, 0x02ea, 0x0001, 0x0007, 0x02bf, 0x0002, 0x02ed, + 0x02f1, 0x0002, 0x0007, 0x02a0, 0x02a0, 0x0002, 0x0007, 0x02b1, + 0x02b1, 0x0003, 0x02f9, 0x0000, 0x02fc, 0x0001, 0x0007, 0x02bf, + 0x0002, 0x02ff, 0x0303, 0x0002, 0x0007, 0x02a0, 0x02a0, 0x0002, + 0x0007, 0x02b1, 0x02b1, 0x0003, 0x030b, 0x030e, 0x0313, 0x0001, + 0x0007, 0x02c2, 0x0003, 0x0007, 0x02c7, 0x02d4, 0x02dc, 0x0002, + // Entry 4380 - 43BF + 0x0316, 0x031a, 0x0002, 0x0007, 0x02e9, 0x02e9, 0x0002, 0x0007, + 0x02fc, 0x02fc, 0x0003, 0x0322, 0x0000, 0x0325, 0x0001, 0x0007, + 0x030c, 0x0002, 0x0328, 0x032c, 0x0002, 0x0007, 0x02e9, 0x02e9, + 0x0002, 0x0007, 0x02fc, 0x02fc, 0x0003, 0x0334, 0x0000, 0x0337, + 0x0001, 0x0007, 0x030c, 0x0002, 0x033a, 0x033e, 0x0002, 0x0007, + 0x02e9, 0x02e9, 0x0002, 0x0007, 0x02fc, 0x02fc, 0x0003, 0x0346, + 0x0349, 0x034e, 0x0001, 0x0007, 0x0311, 0x0003, 0x0007, 0x0314, + 0x031f, 0x0325, 0x0002, 0x0351, 0x0355, 0x0002, 0x0007, 0x0330, + // Entry 43C0 - 43FF + 0x0330, 0x0002, 0x0007, 0x0341, 0x0341, 0x0003, 0x035d, 0x0000, + 0x0360, 0x0001, 0x0007, 0x034f, 0x0002, 0x0363, 0x0367, 0x0002, + 0x0007, 0x0330, 0x0330, 0x0002, 0x0007, 0x0341, 0x0341, 0x0003, + 0x036f, 0x0000, 0x0372, 0x0001, 0x0007, 0x034f, 0x0002, 0x0375, + 0x0379, 0x0002, 0x0007, 0x0330, 0x0330, 0x0002, 0x0007, 0x0341, + 0x0341, 0x0004, 0x0382, 0x0385, 0x038a, 0x0395, 0x0001, 0x0007, + 0x0352, 0x0003, 0x0007, 0x035a, 0x036a, 0x0375, 0x0002, 0x038d, + 0x0391, 0x0002, 0x0007, 0x0385, 0x0385, 0x0002, 0x0007, 0x039b, + // Entry 4400 - 443F + 0x039b, 0x0001, 0x0007, 0x03ae, 0x0004, 0x039d, 0x0000, 0x03a0, + 0x03ab, 0x0001, 0x0007, 0x03bc, 0x0002, 0x03a3, 0x03a7, 0x0002, + 0x0007, 0x0385, 0x0385, 0x0002, 0x0007, 0x039b, 0x039b, 0x0001, + 0x0007, 0x03ae, 0x0004, 0x03b3, 0x0000, 0x03b6, 0x03c1, 0x0001, + 0x0007, 0x03bc, 0x0002, 0x03b9, 0x03bd, 0x0002, 0x0007, 0x0385, + 0x0385, 0x0002, 0x0007, 0x039b, 0x039b, 0x0001, 0x0007, 0x03ae, + 0x0003, 0x03c8, 0x03cb, 0x03d0, 0x0001, 0x0007, 0x03c4, 0x0003, + 0x0007, 0x03c9, 0x03d1, 0x03d9, 0x0002, 0x03d3, 0x03d7, 0x0002, + // Entry 4440 - 447F + 0x0007, 0x03df, 0x03df, 0x0002, 0x0007, 0x03f2, 0x03f2, 0x0003, + 0x03df, 0x0000, 0x03e2, 0x0001, 0x0007, 0x03c4, 0x0002, 0x03e5, + 0x03e9, 0x0002, 0x0007, 0x03df, 0x03df, 0x0002, 0x0007, 0x03f2, + 0x03f2, 0x0003, 0x03f1, 0x0000, 0x03f4, 0x0001, 0x0007, 0x03c4, + 0x0002, 0x03f7, 0x03fb, 0x0002, 0x0007, 0x03df, 0x03df, 0x0002, + 0x0007, 0x03f2, 0x03f2, 0x0001, 0x0401, 0x0001, 0x0007, 0x0402, + 0x0003, 0x0000, 0x0408, 0x040d, 0x0003, 0x0007, 0x0414, 0x0422, + 0x042b, 0x0002, 0x0410, 0x0414, 0x0002, 0x0007, 0x0439, 0x0439, + // Entry 4480 - 44BF + 0x0002, 0x0007, 0x044d, 0x044d, 0x0003, 0x0000, 0x041c, 0x0421, + 0x0003, 0x0007, 0x0414, 0x0422, 0x042b, 0x0002, 0x0424, 0x0428, + 0x0002, 0x0007, 0x0439, 0x0439, 0x0002, 0x0007, 0x044d, 0x044d, + 0x0003, 0x0000, 0x0430, 0x0435, 0x0003, 0x0007, 0x0414, 0x0422, + 0x042b, 0x0002, 0x0438, 0x043c, 0x0002, 0x0007, 0x0439, 0x0439, + 0x0002, 0x0007, 0x044d, 0x044d, 0x0003, 0x0000, 0x0444, 0x0449, + 0x0003, 0x0007, 0x045e, 0x0474, 0x0485, 0x0002, 0x044c, 0x0450, + 0x0002, 0x0007, 0x04b7, 0x049b, 0x0002, 0x0007, 0x04d3, 0x04d3, + // Entry 44C0 - 44FF + 0x0003, 0x0000, 0x0458, 0x045d, 0x0003, 0x0007, 0x045e, 0x0474, + 0x0485, 0x0002, 0x0460, 0x0464, 0x0002, 0x0007, 0x04b7, 0x04b7, + 0x0002, 0x0007, 0x04d3, 0x04d3, 0x0003, 0x0000, 0x046c, 0x0471, + 0x0003, 0x0007, 0x04ec, 0x04f7, 0x04fd, 0x0002, 0x0474, 0x0478, + 0x0002, 0x0007, 0x04b7, 0x04b7, 0x0002, 0x0007, 0x04d3, 0x04d3, + 0x0003, 0x0000, 0x0480, 0x0485, 0x0003, 0x0007, 0x0508, 0x0527, + 0x0541, 0x0002, 0x0488, 0x048c, 0x0002, 0x0007, 0x0560, 0x0560, + 0x0002, 0x0007, 0x0585, 0x0585, 0x0003, 0x0000, 0x0494, 0x0499, + // Entry 4500 - 453F + 0x0003, 0x0007, 0x05a7, 0x05b4, 0x05bc, 0x0002, 0x049c, 0x04a0, + 0x0002, 0x0007, 0x0560, 0x0560, 0x0002, 0x0007, 0x0585, 0x0585, + 0x0003, 0x0000, 0x04a8, 0x04ad, 0x0003, 0x0007, 0x05a7, 0x05b4, + 0x05bc, 0x0002, 0x04b0, 0x04b4, 0x0002, 0x0007, 0x0560, 0x0560, + 0x0002, 0x0007, 0x0585, 0x0585, 0x0003, 0x0000, 0x04bc, 0x04c1, + 0x0003, 0x0007, 0x05c9, 0x05df, 0x05f0, 0x0002, 0x04c4, 0x04c8, + 0x0002, 0x0007, 0x0606, 0x0606, 0x0002, 0x0007, 0x0622, 0x0622, + 0x0003, 0x0000, 0x04d0, 0x04d5, 0x0003, 0x0007, 0x05c9, 0x05df, + // Entry 4540 - 457F + 0x05f0, 0x0002, 0x04d8, 0x04dc, 0x0002, 0x0007, 0x0606, 0x0606, + 0x0002, 0x0007, 0x0622, 0x0622, 0x0003, 0x0000, 0x04e4, 0x04e9, + 0x0003, 0x0007, 0x063b, 0x0646, 0x064c, 0x0002, 0x04ec, 0x04f0, + 0x0002, 0x0007, 0x0606, 0x0606, 0x0002, 0x0007, 0x0622, 0x0622, + 0x0003, 0x0000, 0x04f8, 0x04fd, 0x0003, 0x0007, 0x0657, 0x066f, + 0x0682, 0x0002, 0x0500, 0x0504, 0x0002, 0x0007, 0x069a, 0x069a, + 0x0002, 0x0007, 0x06b8, 0x06b8, 0x0003, 0x0000, 0x050c, 0x0511, + 0x0003, 0x0007, 0x0657, 0x066f, 0x0682, 0x0002, 0x0514, 0x0518, + // Entry 4580 - 45BF + 0x0002, 0x0007, 0x069a, 0x069a, 0x0002, 0x0007, 0x06b8, 0x06b8, + 0x0003, 0x0000, 0x0520, 0x0525, 0x0003, 0x0007, 0x06d3, 0x06de, + 0x06e4, 0x0002, 0x0528, 0x052c, 0x0002, 0x0007, 0x069a, 0x069a, + 0x0002, 0x0007, 0x06b8, 0x06b8, 0x0003, 0x0000, 0x0534, 0x0539, + 0x0003, 0x0007, 0x06ef, 0x06fe, 0x0708, 0x0002, 0x053c, 0x0540, + 0x0002, 0x0007, 0x0717, 0x0717, 0x0002, 0x0007, 0x072c, 0x072c, + 0x0003, 0x0000, 0x0548, 0x054d, 0x0003, 0x0007, 0x06ef, 0x06fe, + 0x0708, 0x0002, 0x0550, 0x0554, 0x0002, 0x0007, 0x0717, 0x0717, + // Entry 45C0 - 45FF + 0x0002, 0x0007, 0x072c, 0x072c, 0x0003, 0x0000, 0x055c, 0x0561, + 0x0003, 0x0007, 0x073e, 0x0748, 0x074d, 0x0002, 0x0564, 0x0568, + 0x0002, 0x0007, 0x0717, 0x0717, 0x0002, 0x0007, 0x072c, 0x072c, + 0x0003, 0x0000, 0x0570, 0x0575, 0x0003, 0x0007, 0x0757, 0x0768, + 0x0774, 0x0002, 0x0578, 0x057c, 0x0002, 0x0007, 0x0785, 0x0785, + 0x0002, 0x0007, 0x079c, 0x079c, 0x0003, 0x0000, 0x0584, 0x0589, + 0x0003, 0x0007, 0x0757, 0x0768, 0x0774, 0x0002, 0x058c, 0x0590, + 0x0002, 0x0007, 0x0785, 0x0785, 0x0002, 0x0007, 0x079c, 0x079c, + // Entry 4600 - 463F + 0x0003, 0x0000, 0x0598, 0x059d, 0x0003, 0x0007, 0x07b0, 0x07bb, + 0x07c1, 0x0002, 0x05a0, 0x05a4, 0x0002, 0x0007, 0x0785, 0x0785, + 0x0002, 0x0007, 0x079c, 0x079c, 0x0001, 0x05aa, 0x0001, 0x0007, + 0x07cc, 0x0003, 0x05b1, 0x05b4, 0x05b8, 0x0001, 0x0007, 0x07d2, + 0x0002, 0x0007, 0xffff, 0x07d7, 0x0002, 0x05bb, 0x05bf, 0x0002, + 0x0007, 0x07df, 0x07df, 0x0002, 0x0007, 0x07f2, 0x07f2, 0x0003, + 0x05c7, 0x0000, 0x05ca, 0x0001, 0x0007, 0x0802, 0x0002, 0x05cd, + 0x05d1, 0x0002, 0x0007, 0x07df, 0x07df, 0x0002, 0x0007, 0x07f2, + // Entry 4640 - 467F + 0x07f2, 0x0003, 0x05d9, 0x0000, 0x05dc, 0x0001, 0x0007, 0x0802, + 0x0002, 0x05df, 0x05e3, 0x0002, 0x0007, 0x07df, 0x07df, 0x0002, + 0x0007, 0x07f2, 0x07f2, 0x0003, 0x05eb, 0x05ee, 0x05f2, 0x0001, + 0x0007, 0x0807, 0x0002, 0x0007, 0xffff, 0x0810, 0x0002, 0x05f5, + 0x05f9, 0x0002, 0x0007, 0x081c, 0x081c, 0x0002, 0x0007, 0x0833, + 0x0833, 0x0003, 0x0601, 0x0000, 0x0604, 0x0001, 0x0007, 0x0847, + 0x0002, 0x0607, 0x060b, 0x0002, 0x0007, 0x081c, 0x081c, 0x0002, + 0x0007, 0x0833, 0x0833, 0x0003, 0x0613, 0x0000, 0x0616, 0x0001, + // Entry 4680 - 46BF + 0x0007, 0x0847, 0x0002, 0x0619, 0x061d, 0x0002, 0x0007, 0x081c, + 0x081c, 0x0002, 0x0007, 0x0833, 0x0833, 0x0003, 0x0625, 0x0628, + 0x062c, 0x0001, 0x0007, 0x084d, 0x0002, 0x0007, 0xffff, 0x0855, + 0x0002, 0x062f, 0x0633, 0x0002, 0x0007, 0x085a, 0x085a, 0x0002, + 0x0007, 0x0870, 0x0870, 0x0003, 0x063b, 0x0000, 0x063e, 0x0001, + 0x0007, 0x0883, 0x0002, 0x0641, 0x0645, 0x0002, 0x0007, 0x085a, + 0x085a, 0x0002, 0x0007, 0x0870, 0x0870, 0x0003, 0x064d, 0x0000, + 0x0650, 0x0001, 0x0007, 0x0883, 0x0002, 0x0653, 0x0657, 0x0002, + // Entry 46C0 - 46FF + 0x0007, 0x085a, 0x085a, 0x0002, 0x0007, 0x0870, 0x0870, 0x0001, + 0x065d, 0x0001, 0x0007, 0x0888, 0x0004, 0x0665, 0x066a, 0x066f, + 0x067e, 0x0003, 0x0000, 0x1dc7, 0x1dd5, 0x213f, 0x0003, 0x0007, + 0x0898, 0x08a3, 0x08b2, 0x0002, 0x0000, 0x0672, 0x0003, 0x0000, + 0x0679, 0x0676, 0x0001, 0x0007, 0x08c6, 0x0003, 0x0007, 0xffff, + 0x08ef, 0x0904, 0x0002, 0x0000, 0x0681, 0x0003, 0x071b, 0x07b1, + 0x0685, 0x0094, 0x0007, 0x091a, 0x092e, 0x0946, 0x095c, 0x0987, + 0x09cd, 0x0a06, 0x0a50, 0x0abe, 0x0b29, 0x0b99, 0xffff, 0x0bf8, + // Entry 4700 - 473F + 0x0c30, 0x0c74, 0x0cbb, 0x0d0b, 0x0d4c, 0x0d93, 0x0dfb, 0x0e68, + 0x0ec2, 0x0f14, 0x0f53, 0x0f8a, 0x0fbb, 0x0fc8, 0x0fe9, 0x1018, + 0x1043, 0x1074, 0x1093, 0x10cb, 0x10fe, 0x1135, 0x1166, 0x117a, + 0x11a1, 0x11e4, 0x122c, 0x1251, 0x125e, 0x1277, 0x12a0, 0x12d5, + 0x12fc, 0x134f, 0x1388, 0x13ba, 0x140a, 0x1455, 0x147a, 0x1494, + 0x14ba, 0x14cb, 0x14ec, 0x151d, 0x1535, 0x1565, 0x15c2, 0x1603, + 0x1613, 0x1634, 0x1678, 0x16b3, 0x16d8, 0x16e9, 0x16fd, 0x170d, + 0x172a, 0x1745, 0x176c, 0x17a3, 0x17df, 0x181a, 0xffff, 0x1847, + // Entry 4740 - 477F + 0x1862, 0x188a, 0x18b3, 0x18d3, 0x1906, 0x191d, 0x1942, 0x196f, + 0x1993, 0x19be, 0x19cf, 0x19dd, 0x19ed, 0x1a14, 0x1a3f, 0x1a6a, + 0x1acc, 0x1b20, 0x1b5d, 0x1b86, 0x1b94, 0x1ba1, 0x1bc5, 0x1c16, + 0x1c63, 0x1c98, 0x1ca4, 0x1cd5, 0x1d2b, 0x1d6a, 0x1d9f, 0x1dcc, + 0x1dd9, 0x1e03, 0x1e3c, 0x1e71, 0x1e9e, 0x1ed1, 0x1f16, 0x1f25, + 0x1f33, 0x1f42, 0x1f51, 0x1f6e, 0x1fa7, 0x1fdd, 0x2004, 0x201c, + 0x202c, 0x2044, 0x205b, 0x206a, 0x2077, 0x2093, 0x20bc, 0x20ce, + 0x20ea, 0x2111, 0x2134, 0x216d, 0x218a, 0x21c9, 0x220d, 0x2238, + // Entry 4780 - 47BF + 0x225c, 0x22a0, 0x22cf, 0x22dd, 0x22e9, 0x2311, 0x2351, 0x0094, + 0x0007, 0xffff, 0xffff, 0xffff, 0xffff, 0x0972, 0x09be, 0x09f8, + 0x0a2f, 0x0a9f, 0x0b09, 0x0b76, 0xffff, 0x0bec, 0x0c1d, 0x0c63, + 0x0ca3, 0x0cf8, 0x0d3e, 0x0d77, 0x0dd8, 0x0e4e, 0x0ea9, 0x0f01, + 0x0f47, 0x0f78, 0xffff, 0xffff, 0x0fd8, 0xffff, 0x1031, 0xffff, + 0x1084, 0x10be, 0x10f2, 0x1123, 0xffff, 0xffff, 0x1190, 0x11d0, + 0x1220, 0xffff, 0xffff, 0xffff, 0x128c, 0xffff, 0x12e4, 0x1339, + 0xffff, 0x13a5, 0x13f1, 0x1449, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 47C0 - 47FF + 0x14da, 0xffff, 0xffff, 0x154a, 0x15a8, 0xffff, 0xffff, 0x1621, + 0x1667, 0x16a7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x175f, 0x1793, 0x17d0, 0x180a, 0xffff, 0xffff, 0xffff, 0x187c, + 0xffff, 0x18c0, 0xffff, 0xffff, 0x1932, 0xffff, 0x1984, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1a05, 0xffff, 0x1a4d, 0x1ab1, 0x1b0f, + 0x1b4f, 0xffff, 0xffff, 0xffff, 0x1bae, 0x1c00, 0x1c4f, 0xffff, + 0xffff, 0x1cba, 0x1d18, 0x1d5e, 0x1d8f, 0xffff, 0xffff, 0x1df3, + 0x1e30, 0x1e61, 0xffff, 0x1eb5, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4800 - 483F + 0xffff, 0x1f5f, 0x1f99, 0x1fd0, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2085, 0xffff, 0xffff, 0x20dd, 0xffff, + 0x211e, 0xffff, 0x217b, 0x21b5, 0x21fe, 0xffff, 0x2249, 0x228f, + 0xffff, 0xffff, 0xffff, 0x2302, 0x233c, 0x0094, 0x0007, 0xffff, + 0xffff, 0xffff, 0xffff, 0x09a5, 0x09e5, 0x0a1d, 0x0a7a, 0x0ae6, + 0x0b52, 0x0bc5, 0xffff, 0x0c0d, 0x0c4c, 0x0c8e, 0x0cdc, 0x0d27, + 0x0d63, 0x0db8, 0x0e27, 0x0e8b, 0x0ee4, 0x0f30, 0x0f68, 0x0fa5, + 0xffff, 0xffff, 0x1003, 0xffff, 0x105e, 0xffff, 0x10ab, 0x10e1, + // Entry 4840 - 487F + 0x1113, 0x1150, 0xffff, 0xffff, 0x11bb, 0x1201, 0x1241, 0xffff, + 0xffff, 0xffff, 0x12bd, 0xffff, 0x131d, 0x136e, 0xffff, 0x13d8, + 0x142c, 0x146a, 0xffff, 0xffff, 0xffff, 0xffff, 0x1507, 0xffff, + 0xffff, 0x1589, 0x15e5, 0xffff, 0xffff, 0x1650, 0x1692, 0x16c8, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1782, 0x17bc, + 0x17f7, 0x1833, 0xffff, 0xffff, 0xffff, 0x18a1, 0xffff, 0x18ef, + 0xffff, 0xffff, 0x195b, 0xffff, 0x19ab, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1a2c, 0xffff, 0x1a90, 0x1af0, 0x1b3a, 0x1b74, 0xffff, + // Entry 4880 - 48BF + 0xffff, 0xffff, 0x1be5, 0x1c35, 0x1c80, 0xffff, 0xffff, 0x1cf9, + 0x1d47, 0x1d7f, 0x1db8, 0xffff, 0xffff, 0x1e1c, 0x1e51, 0x1e8a, + 0xffff, 0x1ef6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f86, + 0x1fbe, 0x1ff3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x20aa, 0xffff, 0xffff, 0x2100, 0xffff, 0x2153, 0xffff, + 0x21a2, 0x21e6, 0x2225, 0xffff, 0x2278, 0x22ba, 0xffff, 0xffff, + 0xffff, 0x2329, 0x236f, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0025, 0x0008, 0x0000, + // Entry 48C0 - 48FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0004, + 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0007, 0x0000, 0x0001, + 0x0007, 0x0011, 0x0001, 0x0007, 0x001d, 0x0001, 0x0007, 0x0027, + 0x0008, 0x002e, 0x0075, 0x00cc, 0x00e0, 0x01db, 0x01f5, 0x0206, + 0x0000, 0x0002, 0x0031, 0x0053, 0x0003, 0x0035, 0x0000, 0x0044, + 0x000d, 0x0008, 0xffff, 0x0000, 0x0007, 0x000e, 0x0015, 0x001c, + 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, 0x004d, 0x000d, + 0x0008, 0xffff, 0x0054, 0x0061, 0x006e, 0x0077, 0x001c, 0x0082, + // Entry 4900 - 493F + 0x008b, 0x0094, 0x00a1, 0x00b2, 0x00c1, 0x00ce, 0x0003, 0x0057, + 0x0000, 0x0066, 0x000d, 0x0008, 0xffff, 0x0000, 0x0007, 0x000e, + 0x0015, 0x001c, 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, + 0x004d, 0x000d, 0x0008, 0xffff, 0x00db, 0x00e8, 0x00f5, 0x00fe, + 0x0109, 0x0110, 0x0119, 0x0122, 0x012f, 0x0140, 0x014f, 0x015c, + 0x0002, 0x0078, 0x00a2, 0x0005, 0x007e, 0x0087, 0x0099, 0x0000, + 0x0090, 0x0007, 0x0008, 0x0169, 0x016d, 0x0174, 0x017b, 0x017f, + 0x0186, 0x018a, 0x0007, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, + // Entry 4940 - 497F + 0x0039, 0x003b, 0x003d, 0x0007, 0x0008, 0x0169, 0x016d, 0x0174, + 0x017b, 0x017f, 0x0186, 0x018a, 0x0007, 0x0008, 0x018e, 0x0199, + 0x01b1, 0x01cf, 0x01e0, 0x01f6, 0x01ff, 0x0005, 0x00a8, 0x00b1, + 0x00c3, 0x0000, 0x00ba, 0x0007, 0x0008, 0x0169, 0x016d, 0x0174, + 0x017b, 0x017f, 0x0186, 0x018a, 0x0007, 0x0000, 0x003f, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x0007, 0x0008, 0x0169, + 0x016d, 0x0174, 0x017b, 0x017f, 0x0186, 0x018a, 0x0007, 0x0008, + 0x018e, 0x0199, 0x01b1, 0x01cf, 0x01e0, 0x01f6, 0x01ff, 0x0001, + // Entry 4980 - 49BF + 0x00ce, 0x0003, 0x00d2, 0x0000, 0x00d9, 0x0005, 0x0008, 0xffff, + 0x020a, 0x0217, 0x0224, 0x0231, 0x0005, 0x0008, 0xffff, 0x023e, + 0x0254, 0x026a, 0x0280, 0x0002, 0x00e3, 0x0165, 0x0003, 0x00e7, + 0x0111, 0x013b, 0x000b, 0x00f6, 0x00fc, 0x00f3, 0x00ff, 0x0105, + 0x0108, 0x010b, 0x00f9, 0x0102, 0x0000, 0x010e, 0x0001, 0x0008, + 0x0296, 0x0001, 0x0008, 0x02a7, 0x0001, 0x0008, 0x02ac, 0x0001, + 0x0008, 0x02bb, 0x0001, 0x0008, 0x02c0, 0x0001, 0x0008, 0x02c9, + 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, 0x0001, 0x0008, + // Entry 49C0 - 49FF + 0x02f4, 0x0001, 0x0008, 0x02ff, 0x000b, 0x0120, 0x0126, 0x011d, + 0x0129, 0x012f, 0x0132, 0x0135, 0x0123, 0x012c, 0x0000, 0x0138, + 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x0308, 0x0001, 0x0008, + 0x030b, 0x0001, 0x0008, 0x030e, 0x0001, 0x0008, 0x02c0, 0x0001, + 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, + 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, 0x000b, 0x014a, + 0x0150, 0x0147, 0x0153, 0x0159, 0x015c, 0x015f, 0x014d, 0x0156, + 0x0000, 0x0162, 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x02a7, + // Entry 4A00 - 4A3F + 0x0001, 0x0008, 0x02ac, 0x0001, 0x0008, 0x02bb, 0x0001, 0x0008, + 0x02c0, 0x0001, 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, + 0x0008, 0x02e1, 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, + 0x0003, 0x0169, 0x018d, 0x01b1, 0x000b, 0x0000, 0x0000, 0x0175, + 0x017b, 0x0181, 0x0184, 0x0187, 0x0178, 0x017e, 0x0000, 0x018a, + 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x02ac, 0x0001, 0x0008, + 0x02c0, 0x0001, 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, + 0x0008, 0x02e1, 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, + // Entry 4A40 - 4A7F + 0x000b, 0x0000, 0x0000, 0x0199, 0x019f, 0x01a5, 0x01a8, 0x01ab, + 0x019c, 0x01a2, 0x0000, 0x01ae, 0x0001, 0x0008, 0x0296, 0x0001, + 0x0008, 0x02ac, 0x0001, 0x0008, 0x02c0, 0x0001, 0x0008, 0x02c9, + 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, 0x0001, 0x0008, + 0x02f4, 0x0001, 0x0008, 0x02ff, 0x000b, 0x01c0, 0x01c6, 0x01bd, + 0x01c9, 0x01cf, 0x01d2, 0x01d5, 0x01c3, 0x01cc, 0x0000, 0x01d8, + 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x02a7, 0x0001, 0x0008, + 0x02ac, 0x0001, 0x0008, 0x02bb, 0x0001, 0x0008, 0x02c0, 0x0001, + // Entry 4A80 - 4ABF + 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, + 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, 0x0003, 0x01ea, + 0x0000, 0x01df, 0x0002, 0x01e2, 0x01e6, 0x0002, 0x0008, 0x0311, + 0x0352, 0x0002, 0x0008, 0x032f, 0x0362, 0x0002, 0x01ed, 0x01f1, + 0x0002, 0x0008, 0x0374, 0x0385, 0x0002, 0x0008, 0x037b, 0x038c, + 0x0004, 0x0203, 0x01fd, 0x01fa, 0x0200, 0x0001, 0x0007, 0x0268, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0007, + 0x0277, 0x0004, 0x0214, 0x020e, 0x020b, 0x0211, 0x0001, 0x0000, + // Entry 4AC0 - 4AFF + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0001, 0x1fcc, + 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, + 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + // Entry 4B00 - 4B3F + 0x000d, 0x0008, 0xffff, 0x0393, 0x0398, 0x039c, 0x03a0, 0x03a4, + 0x03a8, 0x03ac, 0x03b0, 0x03b4, 0x03b8, 0x03bc, 0x03c0, 0x000d, + 0x0008, 0xffff, 0x03c5, 0x03cf, 0x03d9, 0x03e2, 0x03e9, 0x03f2, + 0x03ff, 0x0407, 0x040f, 0x0419, 0x0422, 0x042d, 0x0002, 0x0000, + 0x0057, 0x000d, 0x0000, 0xffff, 0x1ffe, 0x1f9a, 0x1f9a, 0x1f9a, + 0x1f9a, 0x2143, 0x1f96, 0x2143, 0x2008, 0x2145, 0x1f9a, 0x200a, + 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, + 0x0008, 0x043e, 0x0443, 0x0447, 0x044b, 0x0450, 0x0455, 0x045b, + // Entry 4B40 - 4B7F + 0x0007, 0x0008, 0x045f, 0x046d, 0x047f, 0x048a, 0x0497, 0x04a4, + 0x04b1, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x1f96, 0x1f96, + 0x2010, 0x2147, 0x1f9a, 0x1ffe, 0x214a, 0x0001, 0x008d, 0x0003, + 0x0091, 0x0000, 0x0098, 0x0005, 0x0008, 0xffff, 0x04bd, 0x04c2, + 0x04c7, 0x04cc, 0x0005, 0x0008, 0xffff, 0x04d1, 0x04e7, 0x050a, + 0x052b, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, + 0x00a8, 0x00ab, 0x0001, 0x0008, 0x054c, 0x0001, 0x0008, 0x055a, + 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0008, 0x054c, 0x0001, 0x0008, + // Entry 4B80 - 4BBF + 0x055a, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, + 0x0008, 0x0566, 0x057e, 0x0001, 0x00c3, 0x0002, 0x0008, 0x0595, + 0x059b, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, + 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, + 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, + // Entry 4BC0 - 4BFF + 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, + 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0008, + 0x05a1, 0x0001, 0x0131, 0x0001, 0x0008, 0x05a6, 0x0001, 0x0136, + // Entry 4C00 - 4C3F + 0x0001, 0x0008, 0x05ad, 0x0001, 0x013b, 0x0001, 0x0008, 0x05b2, + 0x0002, 0x0141, 0x0144, 0x0001, 0x0008, 0x05bc, 0x0003, 0x0008, + 0x05c1, 0x05c9, 0x05d0, 0x0001, 0x014b, 0x0001, 0x0008, 0x05d6, + 0x0001, 0x0150, 0x0001, 0x0008, 0x05ea, 0x0001, 0x0155, 0x0001, + 0x0008, 0x05f4, 0x0001, 0x015a, 0x0001, 0x0008, 0x05fc, 0x0001, + 0x015f, 0x0001, 0x0008, 0x0602, 0x0001, 0x0164, 0x0001, 0x0008, + 0x060f, 0x0003, 0x0004, 0x01d5, 0x0719, 0x0008, 0x000d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0027, 0x0052, 0x0008, 0x0000, + // Entry 4C40 - 4C7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x9006, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x0625, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0008, 0x0620, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0000, + 0x0041, 0x0004, 0x003e, 0x0038, 0x0035, 0x003b, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0008, 0x0627, 0x0001, + 0x0008, 0x062f, 0x0004, 0x004f, 0x0049, 0x0046, 0x004c, 0x0001, + 0x0008, 0x063b, 0x0001, 0x0008, 0x063b, 0x0001, 0x0005, 0x0846, + // Entry 4C80 - 4CBF + 0x0001, 0x0005, 0x0846, 0x0008, 0x005b, 0x00c0, 0x0117, 0x014c, + 0x018d, 0x01a2, 0x01b3, 0x01c4, 0x0002, 0x005e, 0x008f, 0x0003, + 0x0062, 0x0071, 0x0080, 0x000d, 0x0008, 0xffff, 0x0648, 0x064f, + 0x0656, 0x065d, 0x0664, 0x066b, 0x0672, 0x0679, 0x0680, 0x0687, + 0x068e, 0x0695, 0x000d, 0x0008, 0xffff, 0x069c, 0x069f, 0x069c, + 0x06a2, 0x06a5, 0x06a8, 0x069f, 0x06ab, 0x06ae, 0x06a2, 0x069f, + 0x069c, 0x000d, 0x0008, 0xffff, 0x06b1, 0x06c2, 0x06cf, 0x06e0, + 0x0664, 0x06f3, 0x0702, 0x070f, 0x071c, 0x072b, 0x0742, 0x0755, + // Entry 4CC0 - 4CFF + 0x0003, 0x0093, 0x00a2, 0x00b1, 0x000d, 0x0008, 0xffff, 0x0648, + 0x064f, 0x0656, 0x065d, 0x001c, 0x066b, 0x0672, 0x0679, 0x0680, + 0x0687, 0x068e, 0x0695, 0x000d, 0x0008, 0xffff, 0x069c, 0x069f, + 0x069c, 0x06a2, 0x06a5, 0x06a8, 0x069f, 0x06ab, 0x06ae, 0x06a2, + 0x069f, 0x069c, 0x000d, 0x0008, 0xffff, 0x0762, 0x0773, 0x077c, + 0x078b, 0x001c, 0x079c, 0x07ab, 0x07b8, 0x07c7, 0x07d8, 0x07ed, + 0x07fe, 0x0002, 0x00c3, 0x00ed, 0x0005, 0x00c9, 0x00d2, 0x00e4, + 0x0000, 0x00db, 0x0007, 0x0008, 0x080d, 0x0812, 0x0817, 0x081c, + // Entry 4D00 - 4D3F + 0x0821, 0x0826, 0x082b, 0x0007, 0x0008, 0x0830, 0x030e, 0x0308, + 0x069c, 0x06a8, 0x030e, 0x069c, 0x0007, 0x0008, 0x080d, 0x0812, + 0x0817, 0x081c, 0x0821, 0x0826, 0x082b, 0x0007, 0x0008, 0x0833, + 0x0842, 0x0857, 0x0866, 0x0873, 0x0880, 0x088f, 0x0005, 0x00f3, + 0x00fc, 0x010e, 0x0000, 0x0105, 0x0007, 0x0008, 0x080d, 0x0812, + 0x0817, 0x081c, 0x0821, 0x0826, 0x082b, 0x0007, 0x0008, 0x0830, + 0x030e, 0x0308, 0x069c, 0x06a8, 0x030e, 0x069c, 0x0007, 0x0008, + 0x080d, 0x0812, 0x0817, 0x081c, 0x0821, 0x0826, 0x082b, 0x0007, + // Entry 4D40 - 4D7F + 0x0008, 0x0833, 0x0842, 0x0857, 0x0866, 0x0873, 0x0880, 0x088f, + 0x0002, 0x011a, 0x0133, 0x0003, 0x011e, 0x0125, 0x012c, 0x0005, + 0x0008, 0xffff, 0x089c, 0x08a9, 0x08b6, 0x08c3, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0008, 0xffff, + 0x08d0, 0x08e6, 0x08fc, 0x0912, 0x0003, 0x0137, 0x013e, 0x0145, + 0x0005, 0x0008, 0xffff, 0x089c, 0x08a9, 0x08b6, 0x08c3, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0008, + 0xffff, 0x08d0, 0x08e6, 0x08fc, 0x0912, 0x0002, 0x014f, 0x016e, + // Entry 4D80 - 4DBF + 0x0003, 0x0153, 0x015c, 0x0165, 0x0002, 0x0156, 0x0159, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x015f, 0x0162, + 0x0001, 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0002, 0x0168, + 0x016b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, + 0x0172, 0x017b, 0x0184, 0x0002, 0x0175, 0x0178, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x017e, 0x0181, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x0187, 0x018a, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x019c, + // Entry 4DC0 - 4DFF + 0x0000, 0x0191, 0x0002, 0x0194, 0x0198, 0x0002, 0x0008, 0x092e, + 0x0970, 0x0002, 0x0008, 0x0959, 0x099b, 0x0001, 0x019e, 0x0002, + 0x0008, 0x09ad, 0x09b9, 0x0004, 0x01b0, 0x01aa, 0x01a7, 0x01ad, + 0x0001, 0x0008, 0x09c0, 0x0001, 0x0008, 0x09d5, 0x0001, 0x0008, + 0x09e4, 0x0001, 0x0008, 0x09eb, 0x0004, 0x01c1, 0x01bb, 0x01b8, + 0x01be, 0x0001, 0x0008, 0x09f3, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x01d2, 0x01cc, + 0x01c9, 0x01cf, 0x0001, 0x0008, 0x063b, 0x0001, 0x0008, 0x063b, + // Entry 4E00 - 4E3F + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x0216, + 0x0000, 0x0000, 0x021b, 0x023a, 0x0254, 0x026e, 0x028d, 0x02a7, + 0x02c1, 0x02e0, 0x02fa, 0x0314, 0x0337, 0x0355, 0x0000, 0x0000, + 0x0000, 0x0373, 0x0394, 0x03ae, 0x0000, 0x0000, 0x0000, 0x03c8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03cd, 0x03e9, 0x0405, + 0x0421, 0x043d, 0x0459, 0x0475, 0x0491, 0x04ad, 0x04c9, 0x04e5, + 0x0501, 0x051d, 0x0539, 0x0555, 0x0571, 0x058d, 0x05a9, 0x05c5, + 0x05e1, 0x05fd, 0x0000, 0x0619, 0x0000, 0x061e, 0x063c, 0x0656, + // Entry 4E40 - 4E7F + 0x0670, 0x068e, 0x06a8, 0x06c2, 0x06e0, 0x06fa, 0x0714, 0x0001, + 0x0218, 0x0001, 0x0008, 0x0a02, 0x0003, 0x021f, 0x0222, 0x0227, + 0x0001, 0x0008, 0x0a09, 0x0003, 0x0008, 0x0a10, 0x0a2d, 0x0a46, + 0x0002, 0x022a, 0x0232, 0x0006, 0x0008, 0x0aa9, 0x0a67, 0xffff, + 0xffff, 0x0a7b, 0x0a91, 0x0006, 0x0008, 0x0b01, 0x0abf, 0xffff, + 0xffff, 0x0ad3, 0x0ae9, 0x0003, 0x023e, 0x0000, 0x0241, 0x0001, + 0x0008, 0x0b17, 0x0002, 0x0244, 0x024c, 0x0006, 0x0008, 0x0b1b, + 0x0b1b, 0xffff, 0xffff, 0x0b1b, 0x0b1b, 0x0006, 0x0008, 0x0b2c, + // Entry 4E80 - 4EBF + 0x0b2c, 0xffff, 0xffff, 0x0b2c, 0x0b2c, 0x0003, 0x0258, 0x0000, + 0x025b, 0x0001, 0x0008, 0x0b17, 0x0002, 0x025e, 0x0266, 0x0006, + 0x0008, 0x0b1b, 0x0b1b, 0xffff, 0xffff, 0x0b1b, 0x0b1b, 0x0006, + 0x0008, 0x0b2c, 0x0b2c, 0xffff, 0xffff, 0x0b2c, 0x0b2c, 0x0003, + 0x0272, 0x0275, 0x027a, 0x0001, 0x0008, 0x0b3d, 0x0003, 0x0008, + 0x0b4c, 0x0b6f, 0x0b8e, 0x0002, 0x027d, 0x0285, 0x0006, 0x0008, + 0x0c0f, 0x0bb5, 0xffff, 0xffff, 0x0bd1, 0x0bef, 0x0006, 0x0008, + 0x0c87, 0x0c2d, 0xffff, 0xffff, 0x0c49, 0x0c67, 0x0003, 0x0291, + // Entry 4EC0 - 4EFF + 0x0000, 0x0294, 0x0001, 0x0008, 0x0ca5, 0x0002, 0x0297, 0x029f, + 0x0006, 0x0008, 0x0cab, 0x0cab, 0xffff, 0xffff, 0x0cab, 0x0cab, + 0x0006, 0x0008, 0x0cbe, 0x0cbe, 0xffff, 0xffff, 0x0cbe, 0x0cbe, + 0x0003, 0x02ab, 0x0000, 0x02ae, 0x0001, 0x0008, 0x0ca5, 0x0002, + 0x02b1, 0x02b9, 0x0006, 0x0008, 0x0cab, 0x0cab, 0xffff, 0xffff, + 0x0cab, 0x0cab, 0x0006, 0x0008, 0x0cbe, 0x0cbe, 0xffff, 0xffff, + 0x0cbe, 0x0cbe, 0x0003, 0x02c5, 0x02c8, 0x02cd, 0x0001, 0x0008, + 0x0cd1, 0x0003, 0x0008, 0x0cdc, 0x0cfb, 0x0d16, 0x0002, 0x02d0, + // Entry 4F00 - 4F3F + 0x02d8, 0x0006, 0x0008, 0x0d87, 0x0d39, 0xffff, 0xffff, 0x0d51, + 0x0d6b, 0x0006, 0x0008, 0x0def, 0x0da1, 0xffff, 0xffff, 0x0db9, + 0x0dd3, 0x0003, 0x02e4, 0x0000, 0x02e7, 0x0001, 0x0008, 0x0e09, + 0x0002, 0x02ea, 0x02f2, 0x0006, 0x0008, 0x0e11, 0x0e11, 0xffff, + 0xffff, 0x0e11, 0x0e11, 0x0006, 0x0008, 0x0e26, 0x0e26, 0xffff, + 0xffff, 0x0e26, 0x0e26, 0x0003, 0x02fe, 0x0000, 0x0301, 0x0001, + 0x0008, 0x0e09, 0x0002, 0x0304, 0x030c, 0x0006, 0x0008, 0x0e11, + 0x0e11, 0xffff, 0xffff, 0x0e11, 0x0e11, 0x0006, 0x0008, 0x0e26, + // Entry 4F40 - 4F7F + 0x0e26, 0xffff, 0xffff, 0x0e26, 0x0e26, 0x0004, 0x0319, 0x031c, + 0x0321, 0x0334, 0x0001, 0x0008, 0x0e3b, 0x0003, 0x0008, 0x0e42, + 0x0e61, 0x0e7c, 0x0002, 0x0324, 0x032c, 0x0006, 0x0008, 0x0eed, + 0x0e9f, 0xffff, 0xffff, 0x0ebb, 0x0ed3, 0x0006, 0x0008, 0x0f53, + 0x0f05, 0xffff, 0xffff, 0x0f21, 0x0f39, 0x0001, 0x0008, 0x0f6b, + 0x0004, 0x033c, 0x0000, 0x033f, 0x0352, 0x0001, 0x0008, 0x0e3b, + 0x0002, 0x0342, 0x034a, 0x0006, 0x0008, 0x0f7e, 0x0f7e, 0xffff, + 0xffff, 0x0f7e, 0x0f7e, 0x0006, 0x0008, 0x0f92, 0x0f92, 0xffff, + // Entry 4F80 - 4FBF + 0xffff, 0x0f92, 0x0f92, 0x0001, 0x0008, 0x0f6b, 0x0004, 0x035a, + 0x0000, 0x035d, 0x0370, 0x0001, 0x0008, 0x0e3b, 0x0002, 0x0360, + 0x0368, 0x0006, 0x0008, 0x0f7e, 0x0f7e, 0xffff, 0xffff, 0x0f7e, + 0x0f7e, 0x0006, 0x0008, 0x0f92, 0x0f92, 0xffff, 0xffff, 0x0f92, + 0x0f92, 0x0001, 0x0008, 0x0f6b, 0x0003, 0x0377, 0x037a, 0x0381, + 0x0001, 0x0008, 0x0fa6, 0x0005, 0x0008, 0x0fc4, 0x0fcf, 0x0fda, + 0x0fb1, 0x0fe7, 0x0002, 0x0384, 0x038c, 0x0006, 0x0008, 0x1040, + 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102a, 0x0006, 0x0008, 0x1096, + // Entry 4FC0 - 4FFF + 0x1054, 0xffff, 0xffff, 0x106c, 0x1080, 0x0003, 0x0398, 0x0000, + 0x039b, 0x0001, 0x0008, 0x0fa6, 0x0002, 0x039e, 0x03a6, 0x0006, + 0x0008, 0x1040, 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102a, 0x0006, + 0x0008, 0x1096, 0x1054, 0xffff, 0xffff, 0x106c, 0x1080, 0x0003, + 0x03b2, 0x0000, 0x03b5, 0x0001, 0x0008, 0x10aa, 0x0002, 0x03b8, + 0x03c0, 0x0006, 0x0008, 0x10ae, 0x10ae, 0xffff, 0xffff, 0x10ae, + 0x10ae, 0x0006, 0x0008, 0x10bf, 0x10bf, 0xffff, 0xffff, 0x10bf, + 0x10bf, 0x0001, 0x03ca, 0x0001, 0x0008, 0x10d0, 0x0003, 0x0000, + // Entry 5000 - 503F + 0x03d1, 0x03d6, 0x0003, 0x0008, 0x10e6, 0x1107, 0x1122, 0x0002, + 0x03d9, 0x03e1, 0x0006, 0x0008, 0x1163, 0x1147, 0xffff, 0xffff, + 0x1163, 0x117f, 0x0006, 0x0008, 0x11b7, 0x119b, 0xffff, 0xffff, + 0x11b7, 0x11d3, 0x0003, 0x0000, 0x03ed, 0x03f2, 0x0003, 0x0008, + 0x11ef, 0x1206, 0x1217, 0x0002, 0x03f5, 0x03fd, 0x0006, 0x0008, + 0x1163, 0x1147, 0xffff, 0xffff, 0x1163, 0x117f, 0x0006, 0x0008, + 0x11b7, 0x119b, 0xffff, 0xffff, 0x11b7, 0x11d3, 0x0003, 0x0000, + 0x0409, 0x040e, 0x0003, 0x0008, 0x11ef, 0x1206, 0x1217, 0x0002, + // Entry 5040 - 507F + 0x0411, 0x0419, 0x0006, 0x0008, 0x1163, 0x1147, 0xffff, 0xffff, + 0x1163, 0x117f, 0x0006, 0x0008, 0x11b7, 0x119b, 0xffff, 0xffff, + 0x11b7, 0x11d3, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x0008, + 0x1232, 0x1257, 0x1278, 0x0002, 0x042d, 0x0435, 0x0006, 0x0008, + 0x1309, 0x12a1, 0xffff, 0xffff, 0x12c3, 0x12e5, 0x0006, 0x0008, + 0x1393, 0x132b, 0xffff, 0xffff, 0x134d, 0x136f, 0x0003, 0x0000, + 0x0441, 0x0446, 0x0003, 0x0008, 0x13b5, 0x13ca, 0x13db, 0x0002, + 0x0449, 0x0451, 0x0006, 0x0008, 0x1309, 0x12a1, 0xffff, 0xffff, + // Entry 5080 - 50BF + 0x12c3, 0x12e5, 0x0006, 0x0008, 0x1393, 0x132b, 0xffff, 0xffff, + 0x134d, 0x136f, 0x0003, 0x0000, 0x045d, 0x0462, 0x0003, 0x0008, + 0x13b5, 0x13ca, 0x13db, 0x0002, 0x0465, 0x046d, 0x0006, 0x0008, + 0x1309, 0x12a1, 0xffff, 0xffff, 0x12c3, 0x12e5, 0x0006, 0x0008, + 0x1393, 0x132b, 0xffff, 0xffff, 0x134d, 0x136f, 0x0003, 0x0000, + 0x0479, 0x047e, 0x0003, 0x0008, 0x13f4, 0x1413, 0x142e, 0x0002, + 0x0481, 0x0489, 0x0006, 0x0008, 0x14a7, 0x1451, 0xffff, 0xffff, + 0x146d, 0x1489, 0x0006, 0x0008, 0x1519, 0x14c3, 0xffff, 0xffff, + // Entry 50C0 - 50FF + 0x14df, 0x14fb, 0x0003, 0x0000, 0x0495, 0x049a, 0x0003, 0x0008, + 0x1535, 0x154a, 0x155b, 0x0002, 0x049d, 0x04a5, 0x0006, 0x0008, + 0x14a7, 0x1451, 0xffff, 0xffff, 0x146d, 0x1489, 0x0006, 0x0008, + 0x1519, 0x14c3, 0xffff, 0xffff, 0x14df, 0x14fb, 0x0003, 0x0000, + 0x04b1, 0x04b6, 0x0003, 0x0008, 0x1535, 0x154a, 0x155b, 0x0002, + 0x04b9, 0x04c1, 0x0006, 0x0008, 0x14a7, 0x1451, 0xffff, 0xffff, + 0x146d, 0x1489, 0x0006, 0x0008, 0x1519, 0x14c3, 0xffff, 0xffff, + 0x14df, 0x14fb, 0x0003, 0x0000, 0x04cd, 0x04d2, 0x0003, 0x0008, + // Entry 5100 - 513F + 0x1574, 0x1593, 0x15ac, 0x0002, 0x04d5, 0x04dd, 0x0006, 0x0008, + 0x15e9, 0x15cf, 0xffff, 0xffff, 0x15e9, 0x1603, 0x0006, 0x0008, + 0x1635, 0x161b, 0xffff, 0xffff, 0x1635, 0x164f, 0x0003, 0x0000, + 0x04e9, 0x04ee, 0x0003, 0x0008, 0x1667, 0x167e, 0x168f, 0x0002, + 0x04f1, 0x04f9, 0x0006, 0x0008, 0x15e9, 0x15cf, 0xffff, 0xffff, + 0x15e9, 0x1603, 0x0006, 0x0008, 0x1635, 0x161b, 0xffff, 0xffff, + 0x1635, 0x164f, 0x0003, 0x0000, 0x0505, 0x050a, 0x0003, 0x0008, + 0x1667, 0x167e, 0x168f, 0x0002, 0x050d, 0x0515, 0x0006, 0x0008, + // Entry 5140 - 517F + 0x15e9, 0x15cf, 0xffff, 0xffff, 0x15e9, 0x1603, 0x0006, 0x0008, + 0x1635, 0x161b, 0xffff, 0xffff, 0x1635, 0x164f, 0x0003, 0x0000, + 0x0521, 0x0526, 0x0003, 0x0008, 0x16aa, 0x16c7, 0x16e0, 0x0002, + 0x0529, 0x0531, 0x0006, 0x0008, 0x1759, 0x1701, 0xffff, 0xffff, + 0x171b, 0x1739, 0x0006, 0x0008, 0x17cf, 0x1777, 0xffff, 0xffff, + 0x1791, 0x17af, 0x0003, 0x0000, 0x053d, 0x0542, 0x0003, 0x0008, + 0x17ed, 0x1802, 0x1813, 0x0002, 0x0545, 0x054d, 0x0006, 0x0008, + 0x1759, 0x1701, 0xffff, 0xffff, 0x171b, 0x1739, 0x0006, 0x0008, + // Entry 5180 - 51BF + 0x17cf, 0x1777, 0xffff, 0xffff, 0x1791, 0x17af, 0x0003, 0x0000, + 0x0559, 0x055e, 0x0003, 0x0008, 0x17ed, 0x1802, 0x1813, 0x0002, + 0x0561, 0x0569, 0x0006, 0x0008, 0x1759, 0x1701, 0xffff, 0xffff, + 0x171b, 0x1739, 0x0006, 0x0008, 0x17cf, 0x1777, 0xffff, 0xffff, + 0x1791, 0x17af, 0x0003, 0x0000, 0x0575, 0x057a, 0x0003, 0x0008, + 0x182c, 0x184d, 0x1868, 0x0002, 0x057d, 0x0585, 0x0006, 0x0008, + 0x18a9, 0x188d, 0xffff, 0xffff, 0x18a9, 0x18c5, 0x0006, 0x0008, + 0x18fb, 0x18df, 0xffff, 0xffff, 0x18fb, 0x1917, 0x0003, 0x0000, + // Entry 51C0 - 51FF + 0x0591, 0x0596, 0x0003, 0x0008, 0x1931, 0x1948, 0x1959, 0x0002, + 0x0599, 0x05a1, 0x0006, 0x0008, 0x18a9, 0x188d, 0xffff, 0xffff, + 0x18a9, 0x18c5, 0x0006, 0x0008, 0x18fb, 0x18df, 0xffff, 0xffff, + 0x18fb, 0x1917, 0x0003, 0x0000, 0x05ad, 0x05b2, 0x0003, 0x0008, + 0x1931, 0x1948, 0x1959, 0x0002, 0x05b5, 0x05bd, 0x0006, 0x0008, + 0x18a9, 0x188d, 0xffff, 0xffff, 0x18a9, 0x18c5, 0x0006, 0x0008, + 0x18fb, 0x18df, 0xffff, 0xffff, 0x18fb, 0x1917, 0x0003, 0x0000, + 0x05c9, 0x05ce, 0x0003, 0x0008, 0x1974, 0x1993, 0x19ac, 0x0002, + // Entry 5200 - 523F + 0x05d1, 0x05d9, 0x0006, 0x0008, 0x19e9, 0x19cf, 0xffff, 0xffff, + 0x19e9, 0x1a03, 0x0006, 0x0008, 0x1a35, 0x1a1b, 0xffff, 0xffff, + 0x1a35, 0x1a4f, 0x0003, 0x0000, 0x05e5, 0x05ea, 0x0003, 0x0008, + 0x1a67, 0x1a7e, 0x1a8f, 0x0002, 0x05ed, 0x05f5, 0x0006, 0x0008, + 0x19e9, 0x19cf, 0xffff, 0xffff, 0x19e9, 0x1a03, 0x0006, 0x0008, + 0x1a35, 0x1a1b, 0xffff, 0xffff, 0x1a35, 0x1a4f, 0x0003, 0x0000, + 0x0601, 0x0606, 0x0003, 0x0008, 0x1a67, 0x1a7e, 0x1a8f, 0x0002, + 0x0609, 0x0611, 0x0006, 0x0008, 0x19e9, 0x19cf, 0xffff, 0xffff, + // Entry 5240 - 527F + 0x19e9, 0x1a03, 0x0006, 0x0008, 0x1a35, 0x1a1b, 0xffff, 0xffff, + 0x1a35, 0x1a4f, 0x0001, 0x061b, 0x0001, 0x0007, 0x07cc, 0x0003, + 0x0622, 0x0625, 0x0629, 0x0001, 0x0008, 0x1aaa, 0x0002, 0x0008, + 0xffff, 0x1ab9, 0x0002, 0x062c, 0x0634, 0x0006, 0x0008, 0x1af0, + 0x1ad4, 0xffff, 0xffff, 0x1af0, 0x1b0c, 0x0006, 0x0008, 0x1b42, + 0x1b26, 0xffff, 0xffff, 0x1b42, 0x1b5e, 0x0003, 0x0640, 0x0000, + 0x0643, 0x0001, 0x0008, 0x1b78, 0x0002, 0x0646, 0x064e, 0x0006, + 0x0008, 0x1b81, 0x1b81, 0xffff, 0xffff, 0x1b81, 0x1b81, 0x0006, + // Entry 5280 - 52BF + 0x0008, 0x1b97, 0x1b97, 0xffff, 0xffff, 0x1b97, 0x1b97, 0x0003, + 0x065a, 0x0000, 0x065d, 0x0001, 0x0008, 0x1b78, 0x0002, 0x0660, + 0x0668, 0x0006, 0x0008, 0x1b81, 0x1b81, 0xffff, 0xffff, 0x1b81, + 0x1b81, 0x0006, 0x0008, 0x1b97, 0x1b97, 0xffff, 0xffff, 0x1b97, + 0x1b97, 0x0003, 0x0674, 0x0677, 0x067b, 0x0001, 0x0008, 0x1bad, + 0x0002, 0x0008, 0xffff, 0x1bbc, 0x0002, 0x067e, 0x0686, 0x0006, + 0x0008, 0x1bf3, 0x1bd7, 0xffff, 0xffff, 0x1bf3, 0x1c0f, 0x0006, + 0x0008, 0x1c45, 0x1c29, 0xffff, 0xffff, 0x1c45, 0x1c61, 0x0003, + // Entry 52C0 - 52FF + 0x0692, 0x0000, 0x0695, 0x0001, 0x0008, 0x1c7b, 0x0002, 0x0698, + 0x06a0, 0x0006, 0x0008, 0x1c80, 0x1c80, 0xffff, 0xffff, 0x1c80, + 0x1c80, 0x0006, 0x0008, 0x1c92, 0x1c92, 0xffff, 0xffff, 0x1c92, + 0x1c92, 0x0003, 0x06ac, 0x0000, 0x06af, 0x0001, 0x0008, 0x1c7b, + 0x0002, 0x06b2, 0x06ba, 0x0006, 0x0008, 0x1c80, 0x1c80, 0xffff, + 0xffff, 0x1c80, 0x1c80, 0x0006, 0x0008, 0x1c92, 0x1c92, 0xffff, + 0xffff, 0x1c92, 0x1c92, 0x0003, 0x06c6, 0x06c9, 0x06cd, 0x0001, + 0x0008, 0x1ca4, 0x0002, 0x0008, 0xffff, 0x1cb3, 0x0002, 0x06d0, + // Entry 5300 - 533F + 0x06d8, 0x0006, 0x0008, 0x1cda, 0x1cbe, 0xffff, 0xffff, 0x1cda, + 0x1cf6, 0x0006, 0x0008, 0x1d2c, 0x1d10, 0xffff, 0xffff, 0x1d2c, + 0x1d48, 0x0003, 0x06e4, 0x0000, 0x06e7, 0x0001, 0x0008, 0x069c, + 0x0002, 0x06ea, 0x06f2, 0x0006, 0x0008, 0x1d62, 0x1d62, 0xffff, + 0xffff, 0x1d62, 0x1d62, 0x0006, 0x0008, 0x1d72, 0x1d72, 0xffff, + 0xffff, 0x1d72, 0x1d72, 0x0003, 0x06fe, 0x0000, 0x0701, 0x0001, + 0x0008, 0x069c, 0x0002, 0x0704, 0x070c, 0x0006, 0x0008, 0x1d62, + 0x1d62, 0xffff, 0xffff, 0x1d62, 0x1d62, 0x0006, 0x0008, 0x1d72, + // Entry 5340 - 537F + 0x1d72, 0xffff, 0xffff, 0x1d72, 0x1d72, 0x0001, 0x0716, 0x0001, + 0x0008, 0x1d82, 0x0004, 0x071e, 0x0723, 0x0728, 0x0733, 0x0003, + 0x0008, 0x1d98, 0x1da6, 0x1dad, 0x0003, 0x0008, 0x1db1, 0x1dbd, + 0x1dd4, 0x0002, 0x0000, 0x072b, 0x0002, 0x0000, 0x072e, 0x0003, + 0x0008, 0xffff, 0x1df5, 0x1e1a, 0x0002, 0x0000, 0x0736, 0x0003, + 0x07d0, 0x0866, 0x073a, 0x0094, 0x0008, 0x1e49, 0x1e6b, 0x1e9b, + 0x1ec5, 0x1f1b, 0x1fa3, 0x2005, 0x209c, 0x217f, 0x2252, 0x2304, + 0xffff, 0x2374, 0x23dd, 0x246d, 0x24f4, 0x2580, 0x25e8, 0x2671, + // Entry 5380 - 53BF + 0x2733, 0x27fe, 0x289f, 0x2935, 0x29be, 0x2a4a, 0x2a9e, 0x2ab2, + 0x2aea, 0x2b42, 0x2b71, 0x2bc7, 0x2bef, 0x2c4f, 0x2cb1, 0x2d11, + 0x2d69, 0x2d8c, 0x2dd5, 0x2e52, 0x2eca, 0x2f0a, 0x2f2d, 0x2f61, + 0x2fab, 0x3011, 0x305d, 0x3107, 0x317b, 0x31bf, 0x3264, 0x32f8, + 0x333c, 0x3367, 0x33c7, 0x340d, 0x344b, 0x349f, 0x34c8, 0x3512, + 0x35b9, 0x3633, 0x365e, 0x3697, 0x371d, 0x377f, 0x37c3, 0x37d5, + 0x37fe, 0x381e, 0x3852, 0x3880, 0x38c4, 0x3926, 0x398e, 0x39fa, + 0xffff, 0x3a42, 0x3a70, 0x3ab0, 0x3af4, 0x3b37, 0x3b93, 0x3bb1, + // Entry 53C0 - 53FF + 0x3be9, 0x3c37, 0x3c7a, 0x3cd2, 0x3cea, 0x3d00, 0x3d2d, 0x3d72, + 0x3dc2, 0x3e23, 0x3ef6, 0x3f9f, 0x4013, 0x4067, 0x407c, 0x408e, + 0x40cd, 0x415a, 0x41e6, 0x4252, 0x4262, 0x42b5, 0x434d, 0x43bf, + 0x4421, 0x447d, 0x448f, 0x44d1, 0x453b, 0x45ab, 0x4603, 0x4652, + 0x46db, 0x4702, 0x4727, 0x4743, 0x475b, 0x479a, 0xffff, 0x4804, + 0x4848, 0x4877, 0x4895, 0x48c4, 0x48ef, 0x4907, 0x4926, 0x494c, + 0x4994, 0x49b4, 0x49dc, 0x4a20, 0x4a52, 0x4ab6, 0x4ae6, 0x4b5c, + 0x4bce, 0x4c1a, 0x4c5e, 0x4ce6, 0x4d46, 0x4d67, 0x4d88, 0x4dcf, + // Entry 5400 - 543F + 0x4e3d, 0x0094, 0x0008, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ef1, + 0x1f8f, 0x1feb, 0x2059, 0x2142, 0x2219, 0x22e4, 0xffff, 0x2364, + 0x23b4, 0x244f, 0x24c9, 0x256a, 0x25cc, 0x2640, 0x26f3, 0x27d3, + 0x2874, 0x2915, 0x2995, 0x2a30, 0xffff, 0xffff, 0x2ace, 0xffff, + 0x2b56, 0xffff, 0x2bdb, 0x2c37, 0x2c9f, 0x2cf5, 0xffff, 0xffff, + 0x2db7, 0x2e31, 0x2eba, 0xffff, 0xffff, 0xffff, 0x2f88, 0xffff, + 0x302d, 0x30dd, 0xffff, 0x3195, 0x3233, 0x32e6, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3431, 0xffff, 0xffff, 0x34e5, 0x358c, 0xffff, + // Entry 5440 - 547F + 0xffff, 0x3670, 0x3705, 0x376d, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x38ae, 0x3910, 0x3972, 0x39e6, 0xffff, 0xffff, + 0xffff, 0x3a9e, 0xffff, 0x3b19, 0xffff, 0xffff, 0x3bd2, 0xffff, + 0x3c5e, 0xffff, 0xffff, 0xffff, 0xffff, 0x3d5a, 0xffff, 0x3de5, + 0x3ebf, 0x3f82, 0x3ff9, 0xffff, 0xffff, 0xffff, 0x40a8, 0x4137, + 0x41c0, 0xffff, 0xffff, 0x4289, 0x432d, 0x43ad, 0x4403, 0xffff, + 0xffff, 0x44b9, 0x4521, 0x458f, 0xffff, 0x4628, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x477e, 0xffff, 0x47f2, 0xffff, 0xffff, + // Entry 5480 - 54BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4938, 0xffff, 0xffff, + 0x49ca, 0xffff, 0x4a30, 0xffff, 0x4aca, 0x4b3e, 0x4bb8, 0xffff, + 0x4c3a, 0x4cc6, 0xffff, 0xffff, 0xffff, 0x4dbb, 0x4e17, 0x0094, + 0x0008, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f5a, 0x1fcc, 0x2034, + 0x20f4, 0x21d1, 0x22a0, 0x2339, 0xffff, 0x2399, 0x241b, 0x24a0, + 0x2534, 0x25ab, 0x2619, 0x26b7, 0x2788, 0x283e, 0x28df, 0x296a, + 0x29fc, 0x2a79, 0xffff, 0xffff, 0x2b1b, 0xffff, 0x2ba1, 0xffff, + 0x2c18, 0x2c7c, 0x2cd8, 0x2d42, 0xffff, 0xffff, 0x2e08, 0x2e88, + // Entry 54C0 - 54FF + 0x2eef, 0xffff, 0xffff, 0xffff, 0x2fe3, 0xffff, 0x30a2, 0x3146, + 0xffff, 0x31fe, 0x32aa, 0x331f, 0xffff, 0xffff, 0xffff, 0xffff, + 0x347a, 0xffff, 0xffff, 0x3554, 0x35fb, 0xffff, 0xffff, 0x36d3, + 0x374a, 0x37a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x38ef, 0x3951, 0x39bf, 0x3a23, 0xffff, 0xffff, 0xffff, 0x3ad7, + 0xffff, 0x3b6a, 0xffff, 0xffff, 0x3c15, 0xffff, 0x3cab, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3d9f, 0xffff, 0x3e76, 0x3f40, 0x3fd1, + 0x4042, 0xffff, 0xffff, 0xffff, 0x4107, 0x4192, 0x4221, 0xffff, + // Entry 5500 - 553F + 0xffff, 0x42f6, 0x4382, 0x43e6, 0x4454, 0xffff, 0xffff, 0x44fe, + 0x456a, 0x45dc, 0xffff, 0x4691, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x47cb, 0xffff, 0x482b, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x4975, 0xffff, 0xffff, 0x4a03, 0xffff, + 0x4a89, 0xffff, 0x4b17, 0x4b8f, 0x4bf9, 0xffff, 0x4c97, 0x4d1b, + 0xffff, 0xffff, 0xffff, 0x4df8, 0x4e78, 0x0002, 0x0003, 0x00bf, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + // Entry 5540 - 557F + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x0000, 0x0075, + 0x008d, 0x009d, 0x00ae, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x063a, + 0x063e, 0x200f, 0x0646, 0x064a, 0x064e, 0x2013, 0x0656, 0x065a, + 0x065e, 0x2017, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x0677, + 0x201b, 0x0646, 0x0684, 0x0689, 0x2021, 0x0696, 0x069f, 0x06a6, + // Entry 5580 - 55BF + 0x2028, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x1e5d, + 0x214c, 0x2066, 0x214e, 0x2066, 0x1e5d, 0x1e5d, 0x2150, 0x206a, + 0x2150, 0x1e63, 0x2053, 0x0001, 0x0068, 0x0003, 0x0000, 0x0000, + 0x006c, 0x0007, 0x0009, 0x0000, 0x000b, 0x0015, 0x0021, 0x002d, + 0x0037, 0x0043, 0x0001, 0x0077, 0x0003, 0x007b, 0x0000, 0x0084, + 0x0002, 0x007e, 0x0081, 0x0001, 0x0009, 0x0050, 0x0001, 0x0009, + 0x0059, 0x0002, 0x0087, 0x008a, 0x0001, 0x0009, 0x0050, 0x0001, + 0x0009, 0x0059, 0x0003, 0x0097, 0x0000, 0x0091, 0x0001, 0x0093, + // Entry 55C0 - 55FF + 0x0002, 0x0009, 0x0061, 0x006d, 0x0001, 0x0099, 0x0002, 0x0009, + 0x0078, 0x007b, 0x0004, 0x00ab, 0x00a5, 0x00a2, 0x00a8, 0x0001, + 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, + 0x0001, 0x0002, 0x0860, 0x0004, 0x00bc, 0x00b6, 0x00b3, 0x00b9, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x00fd, 0x0000, 0x0000, + 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0000, + 0x0000, 0x010c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0111, + // Entry 5600 - 563F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x011c, 0x0000, 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, + 0x0000, 0x012b, 0x0001, 0x00ff, 0x0001, 0x0009, 0x007e, 0x0001, + 0x0104, 0x0001, 0x0009, 0x0085, 0x0001, 0x0109, 0x0001, 0x0009, + 0x008c, 0x0001, 0x010e, 0x0001, 0x0009, 0x0094, 0x0002, 0x0114, + // Entry 5640 - 567F + 0x0117, 0x0001, 0x0009, 0x009d, 0x0003, 0x0000, 0x1b2f, 0x2152, + 0x1b3f, 0x0001, 0x011e, 0x0001, 0x0009, 0x00a6, 0x0001, 0x0123, + 0x0001, 0x0009, 0x00ae, 0x0001, 0x0128, 0x0001, 0x0009, 0x00b3, + 0x0001, 0x012d, 0x0001, 0x0009, 0x00ba, 0x0002, 0x0003, 0x00e9, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + // Entry 5680 - 56BF + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, + 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0009, 0xffff, 0x00c2, 0x00c6, + 0x00ca, 0x00ce, 0x00d2, 0x00d6, 0x00da, 0x00de, 0x00e2, 0x00e6, + 0x00ea, 0x00ee, 0x000d, 0x0009, 0xffff, 0x00f2, 0x0107, 0x011c, + 0x0131, 0x0145, 0x015a, 0x016d, 0x0180, 0x0193, 0x01a6, 0x01b9, + 0x01d4, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x19c7, + 0x1edb, 0x2053, 0x04dd, 0x19c7, 0x206a, 0x206a, 0x1e63, 0x04dd, + // Entry 56C0 - 56FF + 0x2157, 0x2157, 0x2157, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x0009, 0x01f0, 0x00c6, 0x01f4, 0x01f8, + 0x01fc, 0x0200, 0x0204, 0x0007, 0x0009, 0x0208, 0x0213, 0x0222, + 0x022c, 0x0236, 0x0240, 0x024a, 0x0002, 0x0000, 0x0082, 0x0007, + 0x0000, 0x2066, 0x1e5d, 0x19c7, 0x19c7, 0x19c7, 0x2159, 0x1e5d, + 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0009, + 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0009, 0xffff, + 0x0266, 0x026d, 0x0274, 0x027b, 0x0001, 0x00a1, 0x0003, 0x00a5, + // Entry 5700 - 573F + 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0009, 0x0282, + 0x0001, 0x0009, 0x028a, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0009, + 0x0282, 0x0001, 0x0009, 0x028a, 0x0003, 0x00c1, 0x0000, 0x00bb, + 0x0001, 0x00bd, 0x0002, 0x0009, 0x0292, 0x02a1, 0x0001, 0x00c3, + 0x0002, 0x0005, 0x076d, 0x0770, 0x0004, 0x00d5, 0x00cf, 0x00cc, + 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, + 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + // Entry 5740 - 577F + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, + 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, + // Entry 5780 - 57BF + 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, + 0x012c, 0x0001, 0x0009, 0x02b0, 0x0001, 0x0131, 0x0001, 0x0009, + 0x02b8, 0x0001, 0x0136, 0x0001, 0x0009, 0x02be, 0x0001, 0x013b, + 0x0001, 0x0009, 0x02c5, 0x0002, 0x0141, 0x0144, 0x0001, 0x0009, + 0x02d4, 0x0003, 0x0009, 0x02d9, 0x02df, 0x02eb, 0x0001, 0x014b, + 0x0001, 0x0009, 0x02f2, 0x0001, 0x0150, 0x0001, 0x0009, 0x02ff, + 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, 0x0001, 0x015a, 0x0001, + 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, 0x0001, + // Entry 57C0 - 57FF + 0x0164, 0x0001, 0x0009, 0x0314, 0x0003, 0x0004, 0x029f, 0x06b1, + 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, + 0x003b, 0x0259, 0x0271, 0x0288, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, + 0x001e, 0x0024, 0x0001, 0x0009, 0x0323, 0x0001, 0x0009, 0x033a, + 0x0001, 0x0009, 0x034b, 0x0001, 0x0009, 0x035a, 0x0004, 0x0038, + 0x0032, 0x002f, 0x0035, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, + // Entry 5800 - 583F + 0x0044, 0x00a9, 0x0100, 0x0135, 0x020c, 0x0226, 0x0237, 0x0248, + 0x0002, 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, + 0x0009, 0xffff, 0x0364, 0x036b, 0x0372, 0x037b, 0x0382, 0x0389, + 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, 0x000d, 0x0009, + 0xffff, 0x03ba, 0x03bd, 0x03c0, 0x03c3, 0x03c0, 0x03c6, 0x03c6, + 0x03c3, 0x03c9, 0x03cc, 0x03cf, 0x03d2, 0x000d, 0x0009, 0xffff, + 0x03d5, 0x03e2, 0x0372, 0x03f3, 0x0382, 0x0389, 0x0390, 0x03fe, + 0x040b, 0x041e, 0x042f, 0x043e, 0x0003, 0x007c, 0x008b, 0x009a, + // Entry 5840 - 587F + 0x000d, 0x0009, 0xffff, 0x0364, 0x036b, 0x0372, 0x037b, 0x0382, + 0x0389, 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, 0x000d, + 0x0009, 0xffff, 0x03ba, 0x03bd, 0x03c0, 0x03c3, 0x03c0, 0x03c6, + 0x03c6, 0x03c3, 0x03c9, 0x03cc, 0x03cf, 0x03d2, 0x000d, 0x0009, + 0xffff, 0x03d5, 0x03e2, 0x0372, 0x03f3, 0x0382, 0x0389, 0x0390, + 0x03fe, 0x040b, 0x041e, 0x042f, 0x043e, 0x0002, 0x00ac, 0x00d6, + 0x0005, 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0008, + 0x080d, 0x0812, 0x4ea9, 0x081c, 0x4eae, 0x0826, 0x082b, 0x0007, + // Entry 5880 - 58BF + 0x0009, 0x03cf, 0x044f, 0x0452, 0x03c9, 0x0455, 0x044f, 0x03c9, + 0x0007, 0x0008, 0x080d, 0x0812, 0x4ea9, 0x081c, 0x4eae, 0x0826, + 0x082b, 0x0007, 0x0009, 0x0458, 0x0465, 0x047a, 0x0489, 0x0494, + 0x04a7, 0x04b2, 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, + 0x0007, 0x0008, 0x080d, 0x0812, 0x4ea9, 0x081c, 0x4eae, 0x0826, + 0x082b, 0x0007, 0x0009, 0x03cf, 0x044f, 0x0452, 0x03c9, 0x0455, + 0x044f, 0x03c9, 0x0007, 0x0008, 0x080d, 0x0812, 0x4ea9, 0x081c, + 0x4eae, 0x0826, 0x082b, 0x0007, 0x0009, 0x0458, 0x0465, 0x047a, + // Entry 58C0 - 58FF + 0x0489, 0x0494, 0x04a7, 0x04b2, 0x0002, 0x0103, 0x011c, 0x0003, + 0x0107, 0x010e, 0x0115, 0x0005, 0x0009, 0xffff, 0x04bf, 0x04cc, + 0x04d9, 0x04e6, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x0005, 0x0009, 0xffff, 0x04f3, 0x050b, 0x0523, 0x053b, + 0x0003, 0x0120, 0x0127, 0x012e, 0x0005, 0x0009, 0xffff, 0x04bf, + 0x04cc, 0x04d9, 0x04e6, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x0005, 0x0009, 0xffff, 0x04f3, 0x050b, 0x0523, + 0x053b, 0x0002, 0x0138, 0x01a2, 0x0003, 0x013c, 0x015e, 0x0180, + // Entry 5900 - 593F + 0x0009, 0x0149, 0x014c, 0x0146, 0x014f, 0x0155, 0x0158, 0x015b, + 0x0000, 0x0152, 0x0001, 0x0009, 0x0553, 0x0001, 0x0008, 0x0928, + 0x0001, 0x0008, 0x092b, 0x0001, 0x0009, 0x0562, 0x0001, 0x0009, + 0x0573, 0x0001, 0x0009, 0x0581, 0x0001, 0x0009, 0x0592, 0x0001, + 0x0009, 0x05a1, 0x0009, 0x016b, 0x016e, 0x0168, 0x0171, 0x0177, + 0x017a, 0x017d, 0x0000, 0x0174, 0x0001, 0x0009, 0x0553, 0x0001, + 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0001, 0x0009, 0x0562, + 0x0001, 0x0009, 0x0573, 0x0001, 0x0009, 0x0581, 0x0001, 0x0009, + // Entry 5940 - 597F + 0x0592, 0x0001, 0x0009, 0x05a1, 0x0009, 0x018d, 0x0190, 0x018a, + 0x0193, 0x0199, 0x019c, 0x019f, 0x0000, 0x0196, 0x0001, 0x0009, + 0x0553, 0x0001, 0x0009, 0x05b5, 0x0001, 0x0009, 0x05c0, 0x0001, + 0x0009, 0x0562, 0x0001, 0x0009, 0x05cb, 0x0001, 0x0009, 0x0581, + 0x0001, 0x0009, 0x0592, 0x0001, 0x0009, 0x05a1, 0x0003, 0x01a6, + 0x01c8, 0x01ea, 0x0009, 0x01b3, 0x01b6, 0x01b0, 0x01b9, 0x01bf, + 0x01c2, 0x01c5, 0x0000, 0x01bc, 0x0001, 0x0009, 0x0553, 0x0001, + 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0001, 0x0009, 0x0562, + // Entry 5980 - 59BF + 0x0001, 0x0009, 0x0573, 0x0001, 0x0009, 0x0581, 0x0001, 0x0009, + 0x0592, 0x0001, 0x0009, 0x05a1, 0x0009, 0x01d5, 0x01d8, 0x01d2, + 0x01db, 0x01e1, 0x01e4, 0x01e7, 0x0000, 0x01de, 0x0001, 0x0009, + 0x0553, 0x0001, 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0001, + 0x0009, 0x0562, 0x0001, 0x0009, 0x0573, 0x0001, 0x0009, 0x0581, + 0x0001, 0x0009, 0x0592, 0x0001, 0x0009, 0x05a1, 0x0009, 0x01f7, + 0x01fa, 0x01f4, 0x01fd, 0x0203, 0x0206, 0x0209, 0x0000, 0x0200, + 0x0001, 0x0009, 0x0553, 0x0001, 0x0008, 0x0928, 0x0001, 0x0008, + // Entry 59C0 - 59FF + 0x092b, 0x0001, 0x0009, 0x0562, 0x0001, 0x0009, 0x0573, 0x0001, + 0x0009, 0x0581, 0x0001, 0x0009, 0x0592, 0x0001, 0x0009, 0x05a1, + 0x0003, 0x021b, 0x0000, 0x0210, 0x0002, 0x0213, 0x0217, 0x0002, + 0x0009, 0x05d9, 0x0610, 0x0002, 0x0009, 0x05f1, 0x0626, 0x0002, + 0x021e, 0x0222, 0x0002, 0x0009, 0x0643, 0x065a, 0x0002, 0x0009, + 0x064e, 0x0665, 0x0004, 0x0234, 0x022e, 0x022b, 0x0231, 0x0001, + 0x0008, 0x09c0, 0x0001, 0x0008, 0x09d5, 0x0001, 0x0009, 0x0671, + 0x0001, 0x0009, 0x067e, 0x0004, 0x0245, 0x023f, 0x023c, 0x0242, + // Entry 5A00 - 5A3F + 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, + 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0256, 0x0250, 0x024d, + 0x0253, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x025b, 0x0001, + 0x025d, 0x0003, 0x0000, 0x0000, 0x0261, 0x000e, 0x0009, 0x06db, + 0x068c, 0x0697, 0x06a4, 0x06b1, 0x06bc, 0x06c7, 0x06d2, 0x06e7, + 0x06f2, 0x06f9, 0x0704, 0x070f, 0x0714, 0x0001, 0x0273, 0x0001, + 0x0275, 0x0003, 0x0000, 0x0000, 0x0279, 0x000d, 0x0009, 0xffff, + // Entry 5A40 - 5A7F + 0x071d, 0x072a, 0x073b, 0x074c, 0x0759, 0x0768, 0x0773, 0x0780, + 0x078f, 0x07a4, 0x07af, 0x07ba, 0x0001, 0x028a, 0x0001, 0x028c, + 0x0003, 0x0000, 0x0000, 0x0290, 0x000d, 0x0009, 0xffff, 0x07cb, + 0x07da, 0x07e5, 0x07f0, 0x07fb, 0x080c, 0x081d, 0x082a, 0x0835, + 0x0844, 0x084f, 0x0863, 0x0040, 0x02e0, 0x0000, 0x0000, 0x02e5, + 0x02fc, 0x0313, 0x032a, 0x0341, 0x0358, 0x036f, 0x0386, 0x039d, + 0x03b4, 0x03cf, 0x03ea, 0x0000, 0x0000, 0x0000, 0x0405, 0x041e, + 0x0437, 0x0000, 0x0000, 0x0000, 0x0450, 0x0000, 0x0000, 0x0000, + // Entry 5A80 - 5ABF + 0x0000, 0x0000, 0x0455, 0x0469, 0x047d, 0x0491, 0x04a5, 0x04b9, + 0x04cd, 0x04e1, 0x04f5, 0x0509, 0x051d, 0x0531, 0x0545, 0x0559, + 0x056d, 0x0581, 0x0595, 0x05a9, 0x05bd, 0x05d1, 0x05e5, 0x0000, + 0x05f9, 0x0000, 0x05fe, 0x0614, 0x0626, 0x0638, 0x064e, 0x0660, + 0x0672, 0x0688, 0x069a, 0x06ac, 0x0001, 0x02e2, 0x0001, 0x0009, + 0x0877, 0x0003, 0x02e9, 0x02ec, 0x02f1, 0x0001, 0x0009, 0x087e, + 0x0003, 0x0009, 0x088b, 0x08a9, 0x08bf, 0x0002, 0x02f4, 0x02f8, + 0x0002, 0x0009, 0x08fb, 0x08e1, 0x0002, 0x0009, 0x0931, 0x0915, + // Entry 5AC0 - 5AFF + 0x0003, 0x0300, 0x0303, 0x0308, 0x0001, 0x0008, 0x0b17, 0x0003, + 0x0009, 0x094d, 0x0959, 0x0961, 0x0002, 0x030b, 0x030f, 0x0002, + 0x0009, 0x0971, 0x0971, 0x0002, 0x0009, 0x0982, 0x0982, 0x0003, + 0x0317, 0x031a, 0x031f, 0x0001, 0x0008, 0x0b17, 0x0003, 0x0009, + 0x094d, 0x0959, 0x0995, 0x0002, 0x0322, 0x0326, 0x0002, 0x0009, + 0x099f, 0x099f, 0x0002, 0x0009, 0x09ad, 0x09ad, 0x0003, 0x032e, + 0x0331, 0x0336, 0x0001, 0x0009, 0x09bb, 0x0003, 0x0009, 0x09d0, + 0x09f8, 0x0a16, 0x0002, 0x0339, 0x033d, 0x0002, 0x0009, 0x0a5e, + // Entry 5B00 - 5B3F + 0x0a3c, 0x0002, 0x0009, 0x0aa4, 0x0a80, 0x0003, 0x0345, 0x0348, + 0x034d, 0x0001, 0x0009, 0x0ac8, 0x0003, 0x0009, 0x0ad2, 0x0ae4, + 0x0af7, 0x0002, 0x0350, 0x0354, 0x0002, 0x0009, 0x0b0d, 0x0b0d, + 0x0002, 0x0009, 0x0b21, 0x0b21, 0x0003, 0x035c, 0x035f, 0x0364, + 0x0001, 0x0009, 0x0ac8, 0x0003, 0x0009, 0x0ad2, 0x0ae4, 0x0af7, + 0x0002, 0x0367, 0x036b, 0x0002, 0x0009, 0x0b0d, 0x0b0d, 0x0002, + 0x0009, 0x0b21, 0x0b21, 0x0003, 0x0373, 0x0376, 0x037b, 0x0001, + 0x0009, 0x0b35, 0x0003, 0x0009, 0x0b40, 0x0b5e, 0x0b72, 0x0002, + // Entry 5B40 - 5B7F + 0x037e, 0x0382, 0x0002, 0x0009, 0x0ba4, 0x0b8c, 0x0002, 0x0009, + 0x0bd8, 0x0bbe, 0x0003, 0x038a, 0x038d, 0x0392, 0x0001, 0x0009, + 0x03c0, 0x0003, 0x0009, 0x0bf4, 0x0c04, 0x0c15, 0x0002, 0x0395, + 0x0399, 0x0002, 0x0009, 0x0c29, 0x0c29, 0x0002, 0x0009, 0x0c3a, + 0x0c3a, 0x0003, 0x03a1, 0x03a4, 0x03a9, 0x0001, 0x0009, 0x03c0, + 0x0003, 0x0009, 0x0c4d, 0x0c59, 0x0c61, 0x0002, 0x03ac, 0x03b0, + 0x0002, 0x0009, 0x0c6b, 0x0c6b, 0x0002, 0x0009, 0x0c79, 0x0c79, + 0x0004, 0x03b9, 0x03bc, 0x03c1, 0x03cc, 0x0001, 0x0009, 0x0c87, + // Entry 5B80 - 5BBF + 0x0003, 0x0009, 0x0c96, 0x0cbc, 0x0cd4, 0x0002, 0x03c4, 0x03c8, + 0x0002, 0x0009, 0x0d14, 0x0cf8, 0x0002, 0x0009, 0x0d4e, 0x0d30, + 0x0001, 0x0009, 0x0d6c, 0x0004, 0x03d4, 0x03d7, 0x03dc, 0x03e7, + 0x0001, 0x0009, 0x0d88, 0x0003, 0x0009, 0x0d92, 0x0db2, 0x0dc5, + 0x0002, 0x03df, 0x03e3, 0x0002, 0x0009, 0x0ddb, 0x0ddb, 0x0002, + 0x0009, 0x0df2, 0x0df2, 0x0001, 0x0009, 0x0d6c, 0x0004, 0x03ef, + 0x03f2, 0x03f7, 0x0402, 0x0001, 0x0009, 0x0d88, 0x0003, 0x0009, + 0x0e0b, 0x0db2, 0x0e1d, 0x0002, 0x03fa, 0x03fe, 0x0002, 0x0009, + // Entry 5BC0 - 5BFF + 0x0e2d, 0x0e2d, 0x0002, 0x0009, 0x0e41, 0x0e41, 0x0001, 0x0009, + 0x0d6c, 0x0003, 0x0409, 0x040c, 0x0413, 0x0001, 0x0009, 0x0e55, + 0x0005, 0x0009, 0x0e6c, 0x0e77, 0x0e80, 0x0e5c, 0x0e89, 0x0002, + 0x0416, 0x041a, 0x0002, 0x0009, 0x0eb0, 0x0e9c, 0x0002, 0x0009, + 0x0eda, 0x0ec4, 0x0003, 0x0422, 0x0425, 0x042c, 0x0001, 0x0009, + 0x03d2, 0x0005, 0x0009, 0x0e6c, 0x0e77, 0x0e80, 0x0e5c, 0x0e89, + 0x0002, 0x042f, 0x0433, 0x0002, 0x0009, 0x0eb0, 0x0e9c, 0x0002, + 0x0009, 0x0eda, 0x0ec4, 0x0003, 0x043b, 0x043e, 0x0445, 0x0001, + // Entry 5C00 - 5C3F + 0x0009, 0x03d2, 0x0005, 0x0009, 0x0e6c, 0x0e77, 0x0e80, 0x0e5c, + 0x0e89, 0x0002, 0x0448, 0x044c, 0x0002, 0x0009, 0x0ef0, 0x0ef0, + 0x0002, 0x0009, 0x0efd, 0x0efd, 0x0001, 0x0452, 0x0001, 0x0009, + 0x0f0a, 0x0003, 0x0000, 0x0459, 0x045e, 0x0003, 0x0009, 0x0f29, + 0x0f4d, 0x0f63, 0x0002, 0x0461, 0x0465, 0x0002, 0x0009, 0x0f9f, + 0x0f85, 0x0002, 0x0009, 0x0fd5, 0x0fb9, 0x0003, 0x0000, 0x046d, + 0x0472, 0x0003, 0x0009, 0x0ff1, 0x100d, 0x101b, 0x0002, 0x0475, + 0x0479, 0x0002, 0x0009, 0x0f9f, 0x0f85, 0x0002, 0x0009, 0x0fd5, + // Entry 5C40 - 5C7F + 0x0fb9, 0x0003, 0x0000, 0x0481, 0x0486, 0x0003, 0x0009, 0x1035, + 0x100d, 0x1046, 0x0002, 0x0489, 0x048d, 0x0002, 0x0009, 0x0f9f, + 0x0f85, 0x0002, 0x0009, 0x0fd5, 0x0fb9, 0x0003, 0x0000, 0x0495, + 0x049a, 0x0003, 0x0009, 0x1057, 0x1083, 0x10a1, 0x0002, 0x049d, + 0x04a1, 0x0002, 0x0009, 0x10ed, 0x10cb, 0x0002, 0x0009, 0x1135, + 0x1111, 0x0003, 0x0000, 0x04a9, 0x04ae, 0x0003, 0x0009, 0x115b, + 0x1177, 0x1185, 0x0002, 0x04b1, 0x04b5, 0x0002, 0x0009, 0x10ed, + 0x10cb, 0x0002, 0x0009, 0x1135, 0x1111, 0x0003, 0x0000, 0x04bd, + // Entry 5C80 - 5CBF + 0x04c2, 0x0003, 0x0009, 0x119f, 0x1177, 0x11b0, 0x0002, 0x04c5, + 0x04c9, 0x0002, 0x0009, 0x10ed, 0x10cb, 0x0002, 0x0009, 0x1135, + 0x1111, 0x0003, 0x0000, 0x04d1, 0x04d6, 0x0003, 0x0009, 0x11c1, + 0x11e7, 0x11ff, 0x0002, 0x04d9, 0x04dd, 0x0002, 0x0009, 0x123f, + 0x1223, 0x0002, 0x0009, 0x127b, 0x125d, 0x0003, 0x0000, 0x04e5, + 0x04ea, 0x0003, 0x0009, 0x129b, 0x12b7, 0x12c5, 0x0002, 0x04ed, + 0x04f1, 0x0002, 0x0009, 0x123f, 0x1223, 0x0002, 0x0009, 0x127b, + 0x125d, 0x0003, 0x0000, 0x04f9, 0x04fe, 0x0003, 0x0009, 0x12df, + // Entry 5CC0 - 5CFF + 0x12b7, 0x12f0, 0x0002, 0x0501, 0x0505, 0x0002, 0x0009, 0x123f, + 0x1223, 0x0002, 0x0009, 0x127b, 0x125d, 0x0003, 0x0000, 0x050d, + 0x0512, 0x0003, 0x0009, 0x1301, 0x1323, 0x1337, 0x0002, 0x0515, + 0x0519, 0x0002, 0x0009, 0x136f, 0x1357, 0x0002, 0x0009, 0x13a1, + 0x1387, 0x0003, 0x0000, 0x0521, 0x0526, 0x0003, 0x0009, 0x13bb, + 0x13d7, 0x13e5, 0x0002, 0x0529, 0x052d, 0x0002, 0x0009, 0x136f, + 0x1357, 0x0002, 0x0009, 0x13a1, 0x1387, 0x0003, 0x0000, 0x0535, + 0x053a, 0x0003, 0x0009, 0x13ff, 0x13d7, 0x1410, 0x0002, 0x053d, + // Entry 5D00 - 5D3F + 0x0541, 0x0002, 0x0009, 0x136f, 0x1357, 0x0002, 0x0009, 0x13a1, + 0x1387, 0x0003, 0x0000, 0x0549, 0x054e, 0x0003, 0x0009, 0x1421, + 0x144b, 0x1467, 0x0002, 0x0551, 0x0555, 0x0002, 0x0009, 0x14af, + 0x148f, 0x0002, 0x0009, 0x14f3, 0x14d1, 0x0003, 0x0000, 0x055d, + 0x0562, 0x0003, 0x0009, 0x1421, 0x1517, 0x1525, 0x0002, 0x0565, + 0x0569, 0x0002, 0x0009, 0x14af, 0x148f, 0x0002, 0x0009, 0x14f3, + 0x14d1, 0x0003, 0x0000, 0x0571, 0x0576, 0x0003, 0x0009, 0x153f, + 0x1517, 0x1550, 0x0002, 0x0579, 0x057d, 0x0002, 0x0009, 0x14af, + // Entry 5D40 - 5D7F + 0x148f, 0x0002, 0x0009, 0x14f3, 0x14d1, 0x0003, 0x0000, 0x0585, + 0x058a, 0x0003, 0x0009, 0x1561, 0x1583, 0x1597, 0x0002, 0x058d, + 0x0591, 0x0002, 0x0009, 0x15cf, 0x15b7, 0x0002, 0x0009, 0x1603, + 0x15e9, 0x0003, 0x0000, 0x0599, 0x059e, 0x0003, 0x0009, 0x1561, + 0x161f, 0x162d, 0x0002, 0x05a1, 0x05a5, 0x0002, 0x0009, 0x15cf, + 0x15b7, 0x0002, 0x0009, 0x1603, 0x15e9, 0x0003, 0x0000, 0x05ad, + 0x05b2, 0x0003, 0x0009, 0x1647, 0x161f, 0x1658, 0x0002, 0x05b5, + 0x05b9, 0x0002, 0x0009, 0x15cf, 0x15b7, 0x0002, 0x0009, 0x1603, + // Entry 5D80 - 5DBF + 0x15e9, 0x0003, 0x0000, 0x05c1, 0x05c6, 0x0003, 0x0009, 0x1669, + 0x168d, 0x16a3, 0x0002, 0x05c9, 0x05cd, 0x0002, 0x0009, 0x16df, + 0x16c5, 0x0002, 0x0009, 0x1715, 0x16f9, 0x0003, 0x0000, 0x05d5, + 0x05da, 0x0003, 0x0009, 0x1731, 0x174d, 0x175b, 0x0002, 0x05dd, + 0x05e1, 0x0002, 0x0009, 0x16df, 0x16c5, 0x0002, 0x0009, 0x1715, + 0x16f9, 0x0003, 0x0000, 0x05e9, 0x05ee, 0x0003, 0x0009, 0x1775, + 0x174d, 0x1786, 0x0002, 0x05f1, 0x05f5, 0x0002, 0x0009, 0x16df, + 0x16c5, 0x0002, 0x0009, 0x1715, 0x16f9, 0x0001, 0x05fb, 0x0001, + // Entry 5DC0 - 5DFF + 0x0009, 0x1797, 0x0003, 0x0602, 0x0605, 0x0609, 0x0001, 0x0009, + 0x17ad, 0x0002, 0x0009, 0xffff, 0x17b4, 0x0002, 0x060c, 0x0610, + 0x0002, 0x0009, 0x17db, 0x17c7, 0x0002, 0x0009, 0x1807, 0x17f1, + 0x0003, 0x0618, 0x0000, 0x061b, 0x0001, 0x0009, 0x0455, 0x0002, + 0x061e, 0x0622, 0x0002, 0x0009, 0x181f, 0x181f, 0x0002, 0x0009, + 0x182f, 0x182f, 0x0003, 0x062a, 0x0000, 0x062d, 0x0001, 0x0009, + 0x0455, 0x0002, 0x0630, 0x0634, 0x0002, 0x0009, 0x1841, 0x1841, + 0x0002, 0x0009, 0x184e, 0x184e, 0x0003, 0x063c, 0x063f, 0x0643, + // Entry 5E00 - 5E3F + 0x0001, 0x0009, 0x185b, 0x0002, 0x0009, 0xffff, 0x1868, 0x0002, + 0x0646, 0x064a, 0x0002, 0x0009, 0x189b, 0x1881, 0x0002, 0x0009, + 0x18d1, 0x18b5, 0x0003, 0x0652, 0x0000, 0x0655, 0x0001, 0x0009, + 0x18ed, 0x0002, 0x0658, 0x065c, 0x0002, 0x0009, 0x18f4, 0x18f4, + 0x0002, 0x0009, 0x1908, 0x1908, 0x0003, 0x0664, 0x0000, 0x0667, + 0x0001, 0x0009, 0x18ed, 0x0002, 0x066a, 0x066e, 0x0002, 0x0009, + 0x191e, 0x191e, 0x0002, 0x0009, 0x192f, 0x192f, 0x0003, 0x0676, + 0x0679, 0x067d, 0x0001, 0x0008, 0x1ca4, 0x0002, 0x0009, 0xffff, + // Entry 5E40 - 5E7F + 0x1940, 0x0002, 0x0680, 0x0684, 0x0002, 0x0009, 0x1965, 0x1949, + 0x0002, 0x0009, 0x199f, 0x1981, 0x0003, 0x068c, 0x0000, 0x068f, + 0x0001, 0x0009, 0x03c9, 0x0002, 0x0692, 0x0696, 0x0002, 0x0009, + 0x19bd, 0x19bd, 0x0002, 0x0009, 0x19d1, 0x19d1, 0x0003, 0x069e, + 0x0000, 0x06a1, 0x0001, 0x0009, 0x03c9, 0x0002, 0x06a4, 0x06a8, + 0x0002, 0x0009, 0x19e7, 0x19e7, 0x0002, 0x0009, 0x19f8, 0x19f8, + 0x0001, 0x06ae, 0x0001, 0x0009, 0x1a09, 0x0004, 0x06b6, 0x06bb, + 0x06c0, 0x06cf, 0x0003, 0x0000, 0x1dc7, 0x215b, 0x216d, 0x0003, + // Entry 5E80 - 5EBF + 0x0000, 0x1de0, 0x217c, 0x21a4, 0x0002, 0x0000, 0x06c3, 0x0003, + 0x0000, 0x06ca, 0x06c7, 0x0001, 0x0009, 0x1a1f, 0x0003, 0x0009, + 0xffff, 0x1a5a, 0x1a90, 0x0002, 0x0000, 0x06d2, 0x0003, 0x076c, + 0x0802, 0x06d6, 0x0094, 0x0009, 0x1ac3, 0x1ae9, 0x1b1b, 0x1b49, + 0x1b9f, 0x1c35, 0x1cb8, 0x1d64, 0x1e56, 0x1f44, 0x2040, 0x2117, + 0x2185, 0x21fc, 0x227f, 0x2320, 0x23c9, 0x2477, 0x256b, 0x2646, + 0x272c, 0x27ec, 0x28a3, 0x293e, 0x29e7, 0x2a58, 0x2a74, 0x2ab2, + 0x2b1b, 0x2b51, 0x2bc4, 0x2c00, 0x2c7d, 0x2cfe, 0x2d87, 0x2dfc, + // Entry 5EC0 - 5EFF + 0x2e1c, 0x2e5e, 0x2ee5, 0x2f78, 0x2fdd, 0x2fea, 0x3002, 0x3050, + 0x30e3, 0x3135, 0x31f4, 0x327d, 0x32e8, 0x338a, 0x342c, 0x348d, + 0x34a9, 0x34f2, 0x3514, 0x353f, 0x35a8, 0x35c6, 0x3621, 0x36de, + 0x376b, 0x3789, 0x37c1, 0x3868, 0x38ef, 0x3950, 0x3981, 0x399d, + 0x39c1, 0x39f7, 0x3a29, 0x3a75, 0x3af2, 0x3b75, 0x3bf8, 0x3c92, + 0x3d35, 0x3d67, 0x3db5, 0x3e1a, 0x3e49, 0x3eba, 0x3ee0, 0x3f18, + 0x3f83, 0x3fb4, 0x4021, 0x4043, 0x4065, 0x4085, 0x40b8, 0x4125, + 0x416b, 0x4245, 0x430c, 0x439f, 0x4408, 0x4428, 0x4433, 0x4477, + // Entry 5F00 - 5F3F + 0x451a, 0x45bb, 0x4638, 0x4641, 0x4673, 0x4728, 0x47b3, 0x482e, + 0x489f, 0x48aa, 0x48ed, 0x497c, 0x4a05, 0x4a72, 0x4ab0, 0x4b3f, + 0x4b4e, 0x4b5b, 0x4b7a, 0x4b89, 0x4bb6, 0x4c3b, 0x4cbe, 0x4d27, + 0x4d49, 0x4d6b, 0x4d8f, 0x4da9, 0x4dc9, 0x4dd2, 0x4dfb, 0x4e5c, + 0x4e84, 0x4e9e, 0x4eff, 0x4f32, 0x4fb3, 0x4fe0, 0x5073, 0x50fb, + 0x5164, 0x51ae, 0x524f, 0x52c4, 0x52d1, 0x52e7, 0x531c, 0x53af, + 0x0094, 0x0009, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b71, 0x1c28, + 0x1c9a, 0x1d21, 0x1e17, 0x1f01, 0x1ff7, 0x20ff, 0x217c, 0x21e2, + // Entry 5F40 - 5F7F + 0x225d, 0x22f0, 0x23ad, 0x242e, 0x2536, 0x2602, 0x26fb, 0x27bb, + 0x287b, 0x2920, 0x29c5, 0xffff, 0xffff, 0x2a94, 0xffff, 0x2b3d, + 0xffff, 0x2bf5, 0x2c61, 0x2ce2, 0x2d63, 0xffff, 0xffff, 0x2e3c, + 0x2ecf, 0x2f5c, 0xffff, 0xffff, 0xffff, 0x302c, 0xffff, 0x3103, + 0x31c6, 0xffff, 0x32ba, 0x3364, 0x3421, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3521, 0xffff, 0xffff, 0x35f1, 0x36ae, 0xffff, 0xffff, + 0x3794, 0x3848, 0x38d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3a5b, 0x3ad6, 0x3b57, 0x3bde, 0x3c59, 0xffff, 0xffff, + // Entry 5F80 - 5FBF + 0x3d99, 0xffff, 0x3e27, 0xffff, 0xffff, 0x3f08, 0xffff, 0x3f94, + 0xffff, 0xffff, 0xffff, 0xffff, 0x40a7, 0xffff, 0x4132, 0x420a, + 0x42e8, 0x4381, 0xffff, 0xffff, 0xffff, 0x444f, 0x44f4, 0x4593, + 0xffff, 0xffff, 0x4650, 0x4704, 0x479d, 0x480c, 0xffff, 0xffff, + 0x48cb, 0x495e, 0x49e5, 0xffff, 0x4a8e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4b96, 0x4c23, 0x4ca0, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4df0, 0xffff, 0xffff, 0x4e93, + 0xffff, 0x4f08, 0xffff, 0x4fc0, 0x504d, 0x50ec, 0xffff, 0x5186, + // Entry 5FC0 - 5FFF + 0x522b, 0xffff, 0xffff, 0xffff, 0x5302, 0x5385, 0x0094, 0x0009, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1be2, 0x1c66, 0x1ceb, 0x1dbc, + 0x1eaa, 0x1f9c, 0x209e, 0x2148, 0x21b2, 0x222b, 0x22b6, 0x2365, + 0x23fa, 0x24d5, 0x25b5, 0x269f, 0x2772, 0x2832, 0x28e0, 0x2980, + 0x2a1e, 0xffff, 0xffff, 0x2ae5, 0xffff, 0x2b89, 0xffff, 0x2c2f, + 0x2cae, 0x2d2f, 0x2dc0, 0xffff, 0xffff, 0x2e95, 0x2f1f, 0x2fa9, + 0xffff, 0xffff, 0xffff, 0x3098, 0xffff, 0x317c, 0x3237, 0xffff, + 0x332b, 0x33d4, 0x345b, 0xffff, 0xffff, 0xffff, 0xffff, 0x3572, + // Entry 6000 - 603F + 0xffff, 0xffff, 0x3666, 0x3723, 0xffff, 0xffff, 0x3803, 0x389d, + 0x391e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3aa4, + 0x3b23, 0x3ba8, 0x3c27, 0x3ce0, 0xffff, 0xffff, 0x3de6, 0xffff, + 0x3e80, 0xffff, 0xffff, 0x3f4c, 0xffff, 0x3fe9, 0xffff, 0xffff, + 0xffff, 0xffff, 0x40ed, 0xffff, 0x41b9, 0x4295, 0x4345, 0x43d2, + 0xffff, 0xffff, 0xffff, 0x44b4, 0x4555, 0x45f8, 0xffff, 0xffff, + 0x46ba, 0x4761, 0x47de, 0x4865, 0xffff, 0xffff, 0x4924, 0x49af, + 0x4a3a, 0xffff, 0x4af6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 6040 - 607F + 0x4beb, 0x4c6c, 0x4cf1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4e2a, 0xffff, 0xffff, 0x4ecd, 0xffff, 0x4f71, + 0xffff, 0x5015, 0x50ae, 0x512e, 0xffff, 0x51eb, 0x5288, 0xffff, + 0xffff, 0xffff, 0x534f, 0x53ee, 0x0002, 0x0003, 0x00d1, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, + // Entry 6080 - 60BF + 0x0001, 0x1fcc, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, + 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x000a, 0xffff, 0x0000, 0x0004, 0x0008, + 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0025, 0x002a, + 0x002e, 0x000d, 0x000a, 0xffff, 0x0032, 0x003a, 0x0043, 0x004a, + 0x0010, 0x0052, 0x0059, 0x001c, 0x0060, 0x006b, 0x0077, 0x0081, + 0x0002, 0x0000, 0x0057, 0x000d, 0x000a, 0xffff, 0x008b, 0x008d, + 0x008f, 0x0091, 0x008f, 0x008b, 0x008b, 0x0093, 0x0095, 0x0097, + // Entry 60C0 - 60FF + 0x009a, 0x009c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x000a, 0x009e, 0x00a2, 0x00a7, 0x00ab, 0x00af, + 0x00b3, 0x00b7, 0x0007, 0x000a, 0x00bb, 0x00c0, 0x00c8, 0x00cf, + 0x00d5, 0x00dd, 0x00e2, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x2157, 0x21cc, 0x04dd, 0x21ce, 0x21ce, 0x1e5d, 0x21d0, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x000a, 0xffff, + 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x0005, 0x000a, 0xffff, 0x00f9, + 0x010a, 0x011c, 0x012e, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, + // Entry 6100 - 613F + 0x00a5, 0x0002, 0x000a, 0x0141, 0x0153, 0x0001, 0x00ab, 0x0002, + 0x000a, 0x0167, 0x0172, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, + 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, + 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00ce, 0x00c8, 0x00c5, + 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, + 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, + 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 6140 - 617F + 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0131, 0x0000, 0x0136, 0x0000, 0x0000, 0x013b, + 0x0000, 0x0000, 0x0140, 0x0000, 0x0000, 0x0145, 0x0001, 0x0114, + 0x0001, 0x000a, 0x017b, 0x0001, 0x0119, 0x0001, 0x000a, 0x0180, + 0x0001, 0x011e, 0x0001, 0x000a, 0x0184, 0x0001, 0x0123, 0x0001, + // Entry 6180 - 61BF + 0x000a, 0x0189, 0x0002, 0x0129, 0x012c, 0x0001, 0x000a, 0x0193, + 0x0003, 0x000a, 0x0197, 0x019c, 0x019f, 0x0001, 0x0133, 0x0001, + 0x000a, 0x01a4, 0x0001, 0x0138, 0x0001, 0x000a, 0x01ba, 0x0001, + 0x013d, 0x0001, 0x000a, 0x01c1, 0x0001, 0x0142, 0x0001, 0x000a, + 0x01c8, 0x0001, 0x0147, 0x0001, 0x000a, 0x01d0, 0x0003, 0x0004, + 0x02c9, 0x06d1, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0010, 0x003b, 0x0000, 0x025f, 0x0294, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, + // Entry 61C0 - 61FF + 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, 0x0005, 0x018e, 0x0001, + 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0001, 0x1fcc, + 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0008, 0x0044, 0x00a9, 0x0100, 0x0135, 0x0212, 0x022c, + 0x023d, 0x024e, 0x0002, 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, + 0x0069, 0x000d, 0x0005, 0xffff, 0x01c2, 0x2030, 0x203a, 0x204a, + 0x0205, 0x020c, 0x0216, 0x205d, 0x206d, 0x208c, 0x20a2, 0x20b8, + // Entry 6200 - 623F + 0x000d, 0x000a, 0xffff, 0x01df, 0x01e6, 0x01ed, 0x01f4, 0x01f8, + 0x01ff, 0x0209, 0x0210, 0x0214, 0x021b, 0x021f, 0x0223, 0x000d, + 0x000a, 0xffff, 0x022a, 0x0246, 0x0268, 0x0278, 0x01f8, 0x01ff, + 0x028b, 0x029b, 0x02ab, 0x02ca, 0x02e0, 0x02f6, 0x0003, 0x007c, + 0x008b, 0x009a, 0x000d, 0x000a, 0xffff, 0x022a, 0x0246, 0x0268, + 0x0278, 0x01f8, 0x01ff, 0x028b, 0x029b, 0x02ab, 0x02ca, 0x02e0, + 0x02f6, 0x000d, 0x000a, 0xffff, 0x01df, 0x01e6, 0x01ed, 0x01f4, + 0x01f8, 0x01ff, 0x0209, 0x0210, 0x0214, 0x021b, 0x021f, 0x0223, + // Entry 6240 - 627F + 0x000d, 0x000a, 0xffff, 0x022a, 0x0246, 0x0268, 0x0278, 0x01f8, + 0x01ff, 0x028b, 0x029b, 0x02ab, 0x02ca, 0x02e0, 0x02f6, 0x0002, + 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, + 0x0007, 0x000a, 0x030f, 0x0319, 0x0323, 0x0333, 0x033d, 0x0356, + 0x0366, 0x0007, 0x000a, 0x0370, 0x0374, 0x037b, 0x037f, 0x0386, + 0x038d, 0x0394, 0x0007, 0x000a, 0x0398, 0x039f, 0x03a9, 0x03b0, + 0x03ba, 0x03c4, 0x03ce, 0x0007, 0x000a, 0x03d8, 0x03eb, 0x03fe, + 0x0417, 0x042a, 0x044c, 0x0465, 0x0005, 0x00dc, 0x00e5, 0x00f7, + // Entry 6280 - 62BF + 0x0000, 0x00ee, 0x0007, 0x000a, 0x030f, 0x0319, 0x0323, 0x0333, + 0x033d, 0x0356, 0x0366, 0x0007, 0x000a, 0x0370, 0x0374, 0x037b, + 0x037f, 0x0386, 0x038d, 0x0394, 0x0007, 0x000a, 0x0398, 0x039f, + 0x03a9, 0x03b0, 0x03ba, 0x03c4, 0x0366, 0x0007, 0x000a, 0x03d8, + 0x03eb, 0x03fe, 0x0417, 0x0478, 0x044c, 0x0465, 0x0002, 0x0103, + 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x000a, 0xffff, 0x049a, + 0x049e, 0x04a2, 0x04a6, 0x0005, 0x000a, 0xffff, 0x04aa, 0x04c6, + // Entry 62C0 - 62FF + 0x04fb, 0x052a, 0x0003, 0x0120, 0x0127, 0x012e, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x000a, 0xffff, + 0x049a, 0x049e, 0x04a2, 0x04a6, 0x0005, 0x000a, 0xffff, 0x04aa, + 0x04c6, 0x04fb, 0x052a, 0x0002, 0x0138, 0x01a5, 0x0003, 0x013c, + 0x015f, 0x0182, 0x000a, 0x0147, 0x014a, 0x0000, 0x014d, 0x0153, + 0x0159, 0x015c, 0x0000, 0x0150, 0x0156, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, + 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, + // Entry 6300 - 633F + 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, 0x000a, 0x016a, 0x016d, + 0x0000, 0x0170, 0x0176, 0x017c, 0x017f, 0x0000, 0x0173, 0x0179, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, + 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, + 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, + 0x000a, 0x018d, 0x0190, 0x0000, 0x0193, 0x0199, 0x019f, 0x01a2, + 0x0000, 0x0196, 0x019c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, + // Entry 6340 - 637F + 0x000a, 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, + 0x0001, 0x000a, 0x05a6, 0x0003, 0x01a9, 0x01cc, 0x01ef, 0x000a, + 0x01b4, 0x01b7, 0x0000, 0x01ba, 0x01c0, 0x01c6, 0x01c9, 0x0000, + 0x01bd, 0x01c3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, 0x000a, + 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, 0x0001, + 0x000a, 0x05a6, 0x000a, 0x01d7, 0x01da, 0x0000, 0x01dd, 0x01e3, + 0x01e9, 0x01ec, 0x0000, 0x01e0, 0x01e6, 0x0001, 0x0000, 0x04ef, + // Entry 6380 - 63BF + 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, + 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, + 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, 0x000a, 0x01fa, 0x01fd, + 0x0000, 0x0200, 0x0206, 0x020c, 0x020f, 0x0000, 0x0203, 0x0209, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, + 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, + 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, + 0x0003, 0x0221, 0x0000, 0x0216, 0x0002, 0x0219, 0x021d, 0x0002, + // Entry 63C0 - 63FF + 0x000a, 0x05b9, 0x060f, 0x0002, 0x000a, 0x05de, 0x062b, 0x0002, + 0x0224, 0x0228, 0x0002, 0x000a, 0x05b9, 0x060f, 0x0002, 0x000a, + 0x05de, 0x062b, 0x0004, 0x023a, 0x0234, 0x0231, 0x0237, 0x0001, + 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, + 0x0001, 0x0005, 0x1394, 0x0004, 0x024b, 0x0245, 0x0242, 0x0248, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x025c, 0x0256, 0x0253, + 0x0259, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + // Entry 6400 - 643F + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0265, 0x0000, + 0x0000, 0x0000, 0x028d, 0x0002, 0x0268, 0x027b, 0x0003, 0x0000, + 0x0000, 0x026c, 0x000d, 0x000a, 0xffff, 0x064d, 0x065d, 0x066d, + 0x0683, 0x0693, 0x06a6, 0x06b6, 0x06c9, 0x06df, 0x06fb, 0x0705, + 0x070f, 0x0002, 0x0000, 0x027e, 0x000d, 0x000a, 0xffff, 0x049a, + 0x049e, 0x04a2, 0x04a6, 0x0725, 0x0729, 0x072d, 0x0731, 0x0735, + 0x0739, 0x0740, 0x0747, 0x0001, 0x028f, 0x0001, 0x0291, 0x0001, + 0x000a, 0x074e, 0x0005, 0x029a, 0x0000, 0x0000, 0x0000, 0x02c2, + // Entry 6440 - 647F + 0x0002, 0x029d, 0x02b0, 0x0003, 0x0000, 0x0000, 0x02a1, 0x000d, + 0x000a, 0xffff, 0x0758, 0x0768, 0x0772, 0x0795, 0x07b2, 0x07db, + 0x07fe, 0x0808, 0x081b, 0x082b, 0x0841, 0x0857, 0x0002, 0x0000, + 0x02b3, 0x000d, 0x000a, 0xffff, 0x049a, 0x049e, 0x04a2, 0x04a6, + 0x0725, 0x0729, 0x072d, 0x0731, 0x0735, 0x0739, 0x0740, 0x0747, + 0x0001, 0x02c4, 0x0001, 0x02c6, 0x0001, 0x0005, 0x0527, 0x0040, + 0x030a, 0x0000, 0x0000, 0x030f, 0x0326, 0x033d, 0x0354, 0x036b, + 0x037d, 0x038f, 0x03a6, 0x03bd, 0x03d4, 0x03ef, 0x040a, 0x0000, + // Entry 6480 - 64BF + 0x0000, 0x0000, 0x0425, 0x043e, 0x0457, 0x0000, 0x0000, 0x0000, + 0x0470, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0475, 0x0489, + 0x049d, 0x04b1, 0x04c5, 0x04d9, 0x04ed, 0x0501, 0x0515, 0x0529, + 0x053d, 0x0551, 0x0565, 0x0579, 0x058d, 0x05a1, 0x05b5, 0x05c9, + 0x05dd, 0x05f1, 0x0605, 0x0000, 0x0619, 0x0000, 0x061e, 0x0634, + 0x0646, 0x0658, 0x066e, 0x0680, 0x0692, 0x06a8, 0x06ba, 0x06cc, + 0x0001, 0x030c, 0x0001, 0x0005, 0x0527, 0x0003, 0x0313, 0x0316, + 0x031b, 0x0001, 0x000a, 0x0873, 0x0003, 0x000a, 0x087d, 0x088e, + // Entry 64C0 - 64FF + 0x089f, 0x0002, 0x031e, 0x0322, 0x0002, 0x000a, 0x08b6, 0x08b6, + 0x0002, 0x000a, 0x08c7, 0x08c7, 0x0003, 0x032a, 0x032d, 0x0332, + 0x0001, 0x000a, 0x0873, 0x0003, 0x000a, 0x087d, 0x088e, 0x089f, + 0x0002, 0x0335, 0x0339, 0x0002, 0x000a, 0x08b6, 0x08b6, 0x0002, + 0x000a, 0x08c7, 0x08c7, 0x0003, 0x0341, 0x0344, 0x0349, 0x0001, + 0x000a, 0x0873, 0x0003, 0x000a, 0x087d, 0x088e, 0x089f, 0x0002, + 0x034c, 0x0350, 0x0002, 0x000a, 0x08b6, 0x08b6, 0x0002, 0x000a, + 0x08c7, 0x08c7, 0x0003, 0x0358, 0x035b, 0x0360, 0x0001, 0x000a, + // Entry 6500 - 653F + 0x04aa, 0x0003, 0x000a, 0x08e8, 0x090b, 0x092e, 0x0002, 0x0363, + 0x0367, 0x0002, 0x000a, 0x0957, 0x0957, 0x0002, 0x000a, 0x097a, + 0x097a, 0x0003, 0x036f, 0x0000, 0x0372, 0x0001, 0x000a, 0x04aa, + 0x0002, 0x0375, 0x0379, 0x0002, 0x000a, 0x0957, 0x0957, 0x0002, + 0x000a, 0x097a, 0x097a, 0x0003, 0x0381, 0x0000, 0x0384, 0x0001, + 0x000a, 0x04aa, 0x0002, 0x0387, 0x038b, 0x0002, 0x000a, 0x0957, + 0x0957, 0x0002, 0x000a, 0x097a, 0x097a, 0x0003, 0x0393, 0x0396, + 0x039b, 0x0001, 0x000a, 0x09a4, 0x0003, 0x000a, 0x09ae, 0x09bf, + // Entry 6540 - 657F + 0x09d0, 0x0002, 0x039e, 0x03a2, 0x0002, 0x000a, 0x09e7, 0x09e7, + 0x0002, 0x000a, 0x09f8, 0x09f8, 0x0003, 0x03aa, 0x03ad, 0x03b2, + 0x0001, 0x000a, 0x09a4, 0x0003, 0x000a, 0x09ae, 0x09bf, 0x09d0, + 0x0002, 0x03b5, 0x03b9, 0x0002, 0x000a, 0x09e7, 0x09e7, 0x0002, + 0x000a, 0x09f8, 0x09f8, 0x0003, 0x03c1, 0x03c4, 0x03c9, 0x0001, + 0x000a, 0x09a4, 0x0003, 0x000a, 0x09ae, 0x09bf, 0x09d0, 0x0002, + 0x03cc, 0x03d0, 0x0002, 0x000a, 0x09e7, 0x09e7, 0x0002, 0x000a, + 0x09f8, 0x09f8, 0x0004, 0x03d9, 0x03dc, 0x03e1, 0x03ec, 0x0001, + // Entry 6580 - 65BF + 0x0005, 0x0545, 0x0003, 0x000a, 0x0a10, 0x0a2a, 0x0a44, 0x0002, + 0x03e4, 0x03e8, 0x0002, 0x000a, 0x0a64, 0x0a64, 0x0002, 0x000a, + 0x0a7e, 0x0a7e, 0x0001, 0x000a, 0x0a9f, 0x0004, 0x03f4, 0x03f7, + 0x03fc, 0x0407, 0x0001, 0x0005, 0x0545, 0x0003, 0x000a, 0x0a10, + 0x0a2a, 0x0a44, 0x0002, 0x03ff, 0x0403, 0x0002, 0x000a, 0x0a64, + 0x0a64, 0x0002, 0x000a, 0x0a7e, 0x0a7e, 0x0001, 0x000a, 0x0ab6, + 0x0004, 0x040f, 0x0412, 0x0417, 0x0422, 0x0001, 0x0005, 0x0545, + 0x0003, 0x000a, 0x0a10, 0x0a2a, 0x0a44, 0x0002, 0x041a, 0x041e, + // Entry 65C0 - 65FF + 0x0002, 0x000a, 0x0a64, 0x0a64, 0x0002, 0x000a, 0x0a7e, 0x0a7e, + 0x0001, 0x000a, 0x0ab6, 0x0003, 0x0429, 0x042c, 0x0433, 0x0001, + 0x0005, 0x0558, 0x0005, 0x000a, 0x0aeb, 0x0afb, 0x0b02, 0x0ad7, + 0x0b1b, 0x0002, 0x0436, 0x043a, 0x0002, 0x000a, 0x0b38, 0x0b38, + 0x0002, 0x000a, 0x0b5c, 0x0b5c, 0x0003, 0x0442, 0x0445, 0x044c, + 0x0001, 0x0005, 0x0558, 0x0005, 0x000a, 0x0aeb, 0x0afb, 0x0b02, + 0x0ad7, 0x0b1b, 0x0002, 0x044f, 0x0453, 0x0002, 0x000a, 0x0b38, + 0x0b38, 0x0002, 0x000a, 0x0b5c, 0x0b5c, 0x0003, 0x045b, 0x045e, + // Entry 6600 - 663F + 0x0465, 0x0001, 0x0005, 0x0558, 0x0005, 0x000a, 0x0aeb, 0x0afb, + 0x0b02, 0x0ad7, 0x0b1b, 0x0002, 0x0468, 0x046c, 0x0002, 0x000a, + 0x0b38, 0x0b38, 0x0002, 0x000a, 0x0b5c, 0x0b5c, 0x0001, 0x0472, + 0x0001, 0x000a, 0x0b74, 0x0003, 0x0000, 0x0479, 0x047e, 0x0003, + 0x000a, 0x0b97, 0x0bb1, 0x0bcb, 0x0002, 0x0481, 0x0485, 0x0002, + 0x000a, 0x0beb, 0x0beb, 0x0002, 0x000a, 0x0c0b, 0x0c0b, 0x0003, + 0x0000, 0x048d, 0x0492, 0x0003, 0x000a, 0x0b97, 0x0bb1, 0x0bcb, + 0x0002, 0x0495, 0x0499, 0x0002, 0x000a, 0x0beb, 0x0beb, 0x0002, + // Entry 6640 - 667F + 0x000a, 0x0c0b, 0x0c0b, 0x0003, 0x0000, 0x04a1, 0x04a6, 0x0003, + 0x000a, 0x0b97, 0x0bb1, 0x0bcb, 0x0002, 0x04a9, 0x04ad, 0x0002, + 0x000a, 0x0beb, 0x0beb, 0x0002, 0x000a, 0x0c0b, 0x0c0b, 0x0003, + 0x0000, 0x04b5, 0x04ba, 0x0003, 0x000a, 0x0c2c, 0x0c46, 0x0c60, + 0x0002, 0x04bd, 0x04c1, 0x0002, 0x000a, 0x0c80, 0x0c80, 0x0002, + 0x000a, 0x0ca0, 0x0c80, 0x0003, 0x0000, 0x04c9, 0x04ce, 0x0003, + 0x000a, 0x0c2c, 0x0c46, 0x0c60, 0x0002, 0x04d1, 0x04d5, 0x0002, + 0x000a, 0x0c80, 0x0c80, 0x0002, 0x000a, 0x0ca0, 0x0ca0, 0x0003, + // Entry 6680 - 66BF + 0x0000, 0x04dd, 0x04e2, 0x0003, 0x000a, 0x0c2c, 0x0c46, 0x0c60, + 0x0002, 0x04e5, 0x04e9, 0x0002, 0x000a, 0x0c80, 0x0c80, 0x0002, + 0x000a, 0x0ca0, 0x0ca0, 0x0003, 0x0000, 0x04f1, 0x04f6, 0x0003, + 0x000a, 0x0cc1, 0x0ce1, 0x0d01, 0x0002, 0x04f9, 0x04fd, 0x0002, + 0x000a, 0x0d27, 0x0d27, 0x0002, 0x000a, 0x0d47, 0x0d47, 0x0003, + 0x0000, 0x0505, 0x050a, 0x0003, 0x000a, 0x0cc1, 0x0ce1, 0x0d01, + 0x0002, 0x050d, 0x0511, 0x0002, 0x000a, 0x0d27, 0x0d27, 0x0002, + 0x000a, 0x0d47, 0x0d47, 0x0003, 0x0000, 0x0519, 0x051e, 0x0003, + // Entry 66C0 - 66FF + 0x000a, 0x0cc1, 0x0ce1, 0x0d01, 0x0002, 0x0521, 0x0525, 0x0002, + 0x000a, 0x0d27, 0x0d27, 0x0002, 0x000a, 0x0d47, 0x0d47, 0x0003, + 0x0000, 0x052d, 0x0532, 0x0003, 0x000a, 0x0d6e, 0x0d88, 0x0da2, + 0x0002, 0x0535, 0x0539, 0x0002, 0x000a, 0x0dc2, 0x0dc2, 0x0002, + 0x000a, 0x0ddc, 0x0ddc, 0x0003, 0x0000, 0x0541, 0x0546, 0x0003, + 0x000a, 0x0d6e, 0x0d88, 0x0da2, 0x0002, 0x0549, 0x054d, 0x0002, + 0x000a, 0x0dc2, 0x0dc2, 0x0002, 0x000a, 0x0ddc, 0x0ddc, 0x0003, + 0x0000, 0x0555, 0x055a, 0x0003, 0x000a, 0x0d6e, 0x0d88, 0x0da2, + // Entry 6700 - 673F + 0x0002, 0x055d, 0x0561, 0x0002, 0x000a, 0x0dc2, 0x0dc2, 0x0002, + 0x000a, 0x0ddc, 0x0ddc, 0x0003, 0x0000, 0x0569, 0x056e, 0x0003, + 0x000a, 0x0dfd, 0x0e26, 0x0e4f, 0x0002, 0x0571, 0x0575, 0x0002, + 0x000a, 0x0e7e, 0x0e7e, 0x0002, 0x000a, 0x0ea7, 0x0ea7, 0x0003, + 0x0000, 0x057d, 0x0582, 0x0003, 0x000a, 0x0dfd, 0x0e26, 0x0e4f, + 0x0002, 0x0585, 0x0589, 0x0002, 0x000a, 0x0e7e, 0x0e7e, 0x0002, + 0x000a, 0x0ea7, 0x0ea7, 0x0003, 0x0000, 0x0591, 0x0596, 0x0003, + 0x000a, 0x0dfd, 0x0e26, 0x0e4f, 0x0002, 0x0599, 0x059d, 0x0002, + // Entry 6740 - 677F + 0x000a, 0x0e7e, 0x0e7e, 0x0002, 0x000a, 0x0ea7, 0x0ea7, 0x0003, + 0x0000, 0x05a5, 0x05aa, 0x0003, 0x000a, 0x0ed7, 0x0ef7, 0x0f17, + 0x0002, 0x05ad, 0x05b1, 0x0002, 0x000a, 0x0f3d, 0x0f3d, 0x0002, + 0x000a, 0x0f5d, 0x0f5d, 0x0003, 0x0000, 0x05b9, 0x05be, 0x0003, + 0x000a, 0x0ed7, 0x0ef7, 0x0f17, 0x0002, 0x05c1, 0x05c5, 0x0002, + 0x000a, 0x0f3d, 0x0f3d, 0x0002, 0x000a, 0x0f5d, 0x0f5d, 0x0003, + 0x0000, 0x05cd, 0x05d2, 0x0003, 0x000a, 0x0ed7, 0x0ef7, 0x0f17, + 0x0002, 0x05d5, 0x05d9, 0x0002, 0x000a, 0x0f3d, 0x0f3d, 0x0002, + // Entry 6780 - 67BF + 0x000a, 0x0f5d, 0x0f5d, 0x0003, 0x0000, 0x05e1, 0x05e6, 0x0003, + 0x000a, 0x0f84, 0x0f9e, 0x0fb8, 0x0002, 0x05e9, 0x05ed, 0x0002, + 0x000a, 0x0fd8, 0x0fd8, 0x0002, 0x000a, 0x0ff2, 0x0ff2, 0x0003, + 0x0000, 0x05f5, 0x05fa, 0x0003, 0x000a, 0x0f84, 0x0f9e, 0x0fb8, + 0x0002, 0x05fd, 0x0601, 0x0002, 0x000a, 0x0fd8, 0x0fd8, 0x0002, + 0x000a, 0x0ff2, 0x0ff2, 0x0003, 0x0000, 0x0609, 0x060e, 0x0003, + 0x000a, 0x0f84, 0x0f9e, 0x0fb8, 0x0002, 0x0611, 0x0615, 0x0002, + 0x000a, 0x0fd8, 0x0fd8, 0x0002, 0x000a, 0x0ff2, 0x0ff2, 0x0001, + // Entry 67C0 - 67FF + 0x061b, 0x0001, 0x0007, 0x07cc, 0x0003, 0x0622, 0x0625, 0x0629, + 0x0001, 0x000a, 0x1013, 0x0002, 0x000a, 0xffff, 0x1023, 0x0002, + 0x062c, 0x0630, 0x0002, 0x000a, 0x1040, 0x1040, 0x0002, 0x000a, + 0x105a, 0x105a, 0x0003, 0x0638, 0x0000, 0x063b, 0x0001, 0x000a, + 0x1013, 0x0002, 0x063e, 0x0642, 0x0002, 0x000a, 0x1040, 0x1040, + 0x0002, 0x000a, 0x105a, 0x105a, 0x0003, 0x064a, 0x0000, 0x064d, + 0x0001, 0x000a, 0x1013, 0x0002, 0x0650, 0x0654, 0x0002, 0x000a, + 0x1040, 0x1040, 0x0002, 0x000a, 0x105a, 0x105a, 0x0003, 0x065c, + // Entry 6800 - 683F + 0x065f, 0x0663, 0x0001, 0x0005, 0x05b9, 0x0002, 0x000a, 0xffff, + 0x1078, 0x0002, 0x0666, 0x066a, 0x0002, 0x000a, 0x108f, 0x108f, + 0x0002, 0x000a, 0x10c4, 0x10a6, 0x0003, 0x0672, 0x0000, 0x0675, + 0x0001, 0x0005, 0x05b9, 0x0002, 0x0678, 0x067c, 0x0002, 0x000a, + 0x108f, 0x108f, 0x0002, 0x000a, 0x10a6, 0x10a6, 0x0003, 0x0684, + 0x0000, 0x0687, 0x0001, 0x0005, 0x05b9, 0x0002, 0x068a, 0x068e, + 0x0002, 0x000a, 0x108f, 0x108f, 0x0002, 0x000a, 0x10a6, 0x10a6, + 0x0003, 0x0696, 0x0699, 0x069d, 0x0001, 0x000a, 0x10eb, 0x0002, + // Entry 6840 - 687F + 0x000a, 0xffff, 0x1101, 0x0002, 0x06a0, 0x06a4, 0x0002, 0x000a, + 0x110b, 0x110b, 0x0002, 0x000a, 0x1128, 0x1128, 0x0003, 0x06ac, + 0x0000, 0x06af, 0x0001, 0x000a, 0x10eb, 0x0002, 0x06b2, 0x06b6, + 0x0002, 0x000a, 0x110b, 0x110b, 0x0002, 0x000a, 0x1128, 0x1128, + 0x0003, 0x06be, 0x0000, 0x06c1, 0x0001, 0x000a, 0x10eb, 0x0002, + 0x06c4, 0x06c8, 0x0002, 0x000a, 0x110b, 0x110b, 0x0002, 0x000a, + 0x1155, 0x1155, 0x0001, 0x06ce, 0x0001, 0x000a, 0x1179, 0x0004, + 0x06d6, 0x06db, 0x06e0, 0x06ef, 0x0003, 0x0000, 0x1dc7, 0x21d2, + // Entry 6880 - 68BF + 0x21da, 0x0003, 0x000a, 0x1196, 0x11a7, 0x11ce, 0x0002, 0x0000, + 0x06e3, 0x0003, 0x0000, 0x06ea, 0x06e7, 0x0001, 0x000a, 0x11ec, + 0x0003, 0x000a, 0xffff, 0x123a, 0x1282, 0x0002, 0x08d6, 0x06f2, + 0x0003, 0x06f6, 0x0836, 0x0796, 0x009e, 0x000a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x13f2, 0x14c6, 0x15e7, 0x1682, 0x1729, 0x17eb, + 0x18c2, 0x19f0, 0x1a94, 0x1c17, 0x1c88, 0x1d3e, 0x1e3c, 0x1ef2, + 0x1f96, 0x20a3, 0x21f2, 0x22d2, 0x23c4, 0x247a, 0x250c, 0xffff, + 0xffff, 0x25f6, 0xffff, 0x26f7, 0xffff, 0x27cb, 0x2857, 0x28d1, + // Entry 68C0 - 68FF + 0x2939, 0xffff, 0xffff, 0x2a4f, 0x2b0e, 0x2bf5, 0xffff, 0xffff, + 0xffff, 0x2cf8, 0xffff, 0x2de0, 0x2ea2, 0xffff, 0x2fbc, 0x3090, + 0x319a, 0xffff, 0xffff, 0xffff, 0xffff, 0x3304, 0xffff, 0xffff, + 0x341a, 0x3512, 0xffff, 0xffff, 0x3696, 0x376a, 0x37ed, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x39d7, 0x3a48, 0x3aec, + 0x3b81, 0x3bfb, 0xffff, 0xffff, 0x3de8, 0xffff, 0x3e9d, 0xffff, + 0xffff, 0x400b, 0xffff, 0x416e, 0xffff, 0xffff, 0xffff, 0xffff, + 0x42db, 0xffff, 0x4384, 0x4482, 0x45c5, 0x4675, 0xffff, 0xffff, + // Entry 6900 - 693F + 0xffff, 0x4761, 0x4850, 0x4909, 0xffff, 0xffff, 0x4a3c, 0x4b95, + 0x4c66, 0x4cef, 0xffff, 0xffff, 0x4df3, 0x4eb2, 0x4f32, 0xffff, + 0x5018, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x527e, 0x5319, + 0x53a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x556e, 0xffff, 0xffff, 0x5643, 0xffff, 0x56ec, 0xffff, 0x57e6, + 0x588a, 0x5949, 0xffff, 0x5a25, 0x5af6, 0xffff, 0xffff, 0xffff, + 0x5c2a, 0x5cd7, 0xffff, 0xffff, 0x12ac, 0x1552, 0x1b11, 0x1b94, + 0xffff, 0xffff, 0x40b5, 0x518b, 0x009e, 0x000a, 0x131d, 0x134c, + // Entry 6940 - 697F + 0x137c, 0x13af, 0x1428, 0x14e9, 0x160d, 0x16ae, 0x175e, 0x1827, + 0x191d, 0x1a16, 0x1ab4, 0x1c31, 0x1cb4, 0x1d83, 0x1e68, 0x1f21, + 0x1fe4, 0x2107, 0x2231, 0x2317, 0x23f0, 0x249a, 0x2532, 0x25b0, + 0x25cd, 0x2625, 0x26b5, 0x271e, 0x279e, 0x27ee, 0x2871, 0x28e8, + 0x295f, 0x29dd, 0x2a13, 0x2a7e, 0x2b44, 0x2c15, 0x2c72, 0x2c8f, + 0x2cce, 0x2d28, 0x2dba, 0x2e10, 0x2ed5, 0x2f6d, 0x2ff2, 0x30d8, + 0x31b4, 0x321a, 0x324d, 0x32a9, 0x32d2, 0x332a, 0x33a8, 0x33ed, + 0x345c, 0x3557, 0x363d, 0x3673, 0x36e1, 0x3785, 0x3807, 0x386d, + // Entry 6980 - 69BF + 0x389d, 0x38d6, 0x38fc, 0x394d, 0x398f, 0x39f1, 0x3a6e, 0x3b12, + 0x3b9e, 0x3c62, 0x3d59, 0x3d9f, 0x3e0e, 0x3e7d, 0x3edb, 0x3f89, + 0x3fd2, 0x4038, 0x4135, 0x4197, 0x421b, 0x424a, 0x4270, 0x4299, + 0x42fb, 0x436d, 0x43cf, 0x44e3, 0x45ef, 0x4692, 0x46fe, 0x4727, + 0x4744, 0x47a0, 0x4882, 0x4947, 0x49e6, 0x4a00, 0x4a85, 0x4bca, + 0x4c83, 0x4d18, 0x4d9c, 0x4db9, 0x4e22, 0x4ecc, 0x4f58, 0x4fd6, + 0x505f, 0x5110, 0x513f, 0x515f, 0x5238, 0x5261, 0x52a1, 0x5339, + 0x53c5, 0x5437, 0x5457, 0x548d, 0x54c9, 0x5502, 0x5525, 0x554e, + // Entry 69C0 - 69FF + 0x558e, 0x55f1, 0x5620, 0x5663, 0x56d5, 0x5724, 0x57c6, 0x580c, + 0x58b9, 0x5972, 0x59f6, 0x5a5a, 0x5b1f, 0x5ba3, 0x5bbd, 0x5bea, + 0x5c53, 0x5d15, 0x3613, 0x4b49, 0x12c3, 0x1575, 0x1b2e, 0x1bb1, + 0xffff, 0x3fb5, 0x40d2, 0x51b7, 0x009e, 0x000a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x146b, 0x1519, 0x1637, 0x16e7, 0x17a3, 0x1876, + 0x1985, 0x1a49, 0x1ae1, 0x1c58, 0x1ced, 0x1ddb, 0x1ea1, 0x1f57, + 0x203f, 0x2178, 0x227d, 0x2369, 0x2429, 0x24c7, 0x2565, 0xffff, + 0xffff, 0x2661, 0xffff, 0x2752, 0xffff, 0x281e, 0x2898, 0x290c, + // Entry 6A00 - 6A3F + 0x2992, 0xffff, 0xffff, 0x2aba, 0x2b87, 0x2c3f, 0xffff, 0xffff, + 0xffff, 0x2d65, 0xffff, 0x2e4d, 0x2f15, 0xffff, 0x3035, 0x312d, + 0x31db, 0xffff, 0xffff, 0xffff, 0xffff, 0x335d, 0xffff, 0xffff, + 0x34ab, 0x35a9, 0xffff, 0xffff, 0x3721, 0x37ad, 0x382e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a18, 0x3aa1, 0x3b45, + 0x3bc8, 0x3cd3, 0xffff, 0xffff, 0x3e41, 0xffff, 0x3f26, 0xffff, + 0xffff, 0x4072, 0xffff, 0x41cd, 0xffff, 0xffff, 0xffff, 0xffff, + 0x4328, 0xffff, 0x4427, 0x454e, 0x4626, 0x46bc, 0xffff, 0xffff, + // Entry 6A40 - 6A7F + 0xffff, 0x47ec, 0x48c1, 0x4992, 0xffff, 0xffff, 0x4adb, 0x4c0c, + 0x4cad, 0x4d4e, 0xffff, 0xffff, 0x4e5e, 0x4ef3, 0x4f8b, 0xffff, + 0x50b3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x52d1, 0x5363, + 0x53f5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x55bb, 0xffff, 0xffff, 0x5690, 0xffff, 0x5769, 0xffff, 0x583f, + 0x58f5, 0x59a8, 0xffff, 0x5a9c, 0x5b55, 0xffff, 0xffff, 0xffff, + 0x5c89, 0x5d60, 0xffff, 0xffff, 0x12e7, 0x15a5, 0x1b58, 0x1bdb, + 0xffff, 0xffff, 0x40f9, 0x51ed, 0x0003, 0x0000, 0x0000, 0x08da, + // Entry 6A80 - 6ABF + 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 6AC0 - 6AFF + 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, 0x0004, 0x010c, 0x018c, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0000, 0x0004, 0x0000, 0x001b, 0x0000, 0x001e, 0x0001, + 0x000b, 0x0004, 0x0001, 0x000b, 0x003b, 0x0008, 0x002a, 0x0062, + 0x00a3, 0x00ca, 0x00e2, 0x00ea, 0x00fb, 0x0000, 0x0002, 0x002d, + 0x004f, 0x0003, 0x0031, 0x0000, 0x0040, 0x000d, 0x000b, 0xffff, + 0x005f, 0x006c, 0x0079, 0x0086, 0x0093, 0x00a0, 0x00ad, 0x00ba, + // Entry 6B00 - 6B3F + 0x00c7, 0x00d4, 0x00e4, 0x00f4, 0x000d, 0x000b, 0xffff, 0x0104, + 0x0123, 0x0145, 0x0167, 0x0186, 0x01a2, 0x01c4, 0x01e6, 0x020b, + 0x022a, 0x0249, 0x0277, 0x0003, 0x0000, 0x0000, 0x0053, 0x000d, + 0x000b, 0xffff, 0x02a5, 0x02c7, 0x02ec, 0x0311, 0x0333, 0x0352, + 0x0377, 0x039c, 0x03c4, 0x03e6, 0x0408, 0x0439, 0x0002, 0x0065, + 0x0084, 0x0003, 0x0069, 0x0072, 0x007b, 0x0007, 0x000b, 0x046a, + 0x047a, 0x048a, 0x04a3, 0x04b6, 0x04cc, 0x04df, 0x0007, 0x000b, + 0x04f5, 0x04fc, 0x0503, 0x050d, 0x0517, 0x0521, 0x052b, 0x0007, + // Entry 6B40 - 6B7F + 0x000b, 0x0538, 0x0554, 0x0570, 0x0595, 0x05b4, 0x05d6, 0x05f5, + 0x0003, 0x0088, 0x0091, 0x009a, 0x0007, 0x000b, 0x046a, 0x047a, + 0x048a, 0x04a3, 0x04b6, 0x04cc, 0x04df, 0x0007, 0x000b, 0x04f5, + 0x04fc, 0x0503, 0x050d, 0x0517, 0x0521, 0x052b, 0x0007, 0x000b, + 0x0538, 0x0554, 0x0570, 0x0595, 0x05b4, 0x05d6, 0x05f5, 0x0002, + 0x00a6, 0x00b8, 0x0003, 0x00aa, 0x0000, 0x00b1, 0x0005, 0x000b, + 0xffff, 0x0617, 0x0645, 0x0676, 0x06a7, 0x0005, 0x000b, 0xffff, + 0x0617, 0x0645, 0x0676, 0x06a7, 0x0003, 0x00bc, 0x0000, 0x00c3, + // Entry 6B80 - 6BBF + 0x0005, 0x000b, 0xffff, 0x0617, 0x0645, 0x0676, 0x06a7, 0x0005, + 0x000b, 0xffff, 0x0617, 0x0645, 0x0676, 0x06a7, 0x0001, 0x00cc, + 0x0003, 0x00d0, 0x0000, 0x00d9, 0x0002, 0x00d3, 0x00d6, 0x0001, + 0x000b, 0x06d5, 0x0001, 0x000b, 0x06eb, 0x0002, 0x00dc, 0x00df, + 0x0001, 0x000b, 0x06d5, 0x0001, 0x000b, 0x06eb, 0x0001, 0x00e4, + 0x0001, 0x00e6, 0x0002, 0x000b, 0x0704, 0x072c, 0x0004, 0x00f8, + 0x00f2, 0x00ef, 0x00f5, 0x0001, 0x000b, 0x0745, 0x0001, 0x000b, + 0x0768, 0x0001, 0x000b, 0x079d, 0x0001, 0x0000, 0x051c, 0x0004, + // Entry 6BC0 - 6BFF + 0x0109, 0x0103, 0x0100, 0x0106, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0040, 0x014d, 0x0000, 0x0000, 0x0152, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0157, 0x0000, 0x0000, 0x015c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0161, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x016e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 6C00 - 6C3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0173, 0x0000, 0x0178, + 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, 0x0182, 0x0000, 0x0000, + 0x0187, 0x0001, 0x014f, 0x0001, 0x000b, 0x07bf, 0x0001, 0x0154, + 0x0001, 0x000b, 0x07d5, 0x0001, 0x0159, 0x0001, 0x000b, 0x047a, + 0x0001, 0x015e, 0x0001, 0x000b, 0x07df, 0x0002, 0x0164, 0x0167, + 0x0001, 0x000b, 0x07fb, 0x0005, 0x000b, 0x081e, 0x082e, 0x0844, + 0x0808, 0x085a, 0x0001, 0x0170, 0x0001, 0x000b, 0x0876, 0x0001, + 0x0175, 0x0001, 0x000b, 0x089e, 0x0001, 0x017a, 0x0001, 0x000b, + // Entry 6C40 - 6C7F + 0x08cd, 0x0001, 0x017f, 0x0001, 0x000b, 0x08e3, 0x0001, 0x0184, + 0x0001, 0x000b, 0x08f6, 0x0001, 0x0189, 0x0001, 0x000b, 0x0909, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0004, 0x01f9, + 0x0573, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0017, 0x0042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01d0, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0020, 0x0000, 0x0031, 0x0004, 0x002e, 0x0028, + 0x0025, 0x002b, 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, + // Entry 6C80 - 6CBF + 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x003f, + 0x0039, 0x0036, 0x003c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x004b, 0x00b0, 0x0107, 0x013c, 0x017d, 0x019d, 0x01ae, 0x01bf, + 0x0002, 0x004e, 0x007f, 0x0003, 0x0052, 0x0061, 0x0070, 0x000d, + 0x000b, 0xffff, 0x0922, 0x0927, 0x092f, 0x0935, 0x093a, 0x093e, + 0x0944, 0x094a, 0x094f, 0x0955, 0x095a, 0x095d, 0x000d, 0x000b, + 0xffff, 0x0962, 0x0965, 0x0968, 0x096b, 0x096e, 0x0971, 0x0974, + // Entry 6CC0 - 6CFF + 0x0977, 0x097a, 0x097d, 0x0980, 0x0983, 0x000d, 0x000b, 0xffff, + 0x0986, 0x098d, 0x0998, 0x099f, 0x093a, 0x09a5, 0x09ae, 0x094a, + 0x09b5, 0x0955, 0x095a, 0x09be, 0x0003, 0x0083, 0x0092, 0x00a1, + 0x000d, 0x000b, 0xffff, 0x0922, 0x0927, 0x092f, 0x0935, 0x093a, + 0x093e, 0x0944, 0x094a, 0x094f, 0x0955, 0x095a, 0x09c4, 0x000d, + 0x000b, 0xffff, 0x0962, 0x0965, 0x0968, 0x096b, 0x096e, 0x0971, + 0x0974, 0x0977, 0x097a, 0x097d, 0x0980, 0x0983, 0x000d, 0x000b, + 0xffff, 0x0986, 0x098d, 0x0998, 0x099f, 0x093a, 0x09a5, 0x09ae, + // Entry 6D00 - 6D3F + 0x094a, 0x09b5, 0x0955, 0x095a, 0x09be, 0x0002, 0x00b3, 0x00dd, + 0x0005, 0x00b9, 0x00c2, 0x00d4, 0x0000, 0x00cb, 0x0007, 0x000b, + 0x09c9, 0x09cd, 0x09d1, 0x09d6, 0x09db, 0x09e0, 0x09e5, 0x0007, + 0x000b, 0x09ea, 0x09ed, 0x09ef, 0x09f2, 0x09f5, 0x09f7, 0x09f9, + 0x0007, 0x000b, 0x09c9, 0x09cd, 0x09d1, 0x09d6, 0x09db, 0x09e0, + 0x09e5, 0x0007, 0x000b, 0x09c9, 0x09cd, 0x0998, 0x09fc, 0x09db, + 0x0a06, 0x0a0d, 0x0005, 0x00e3, 0x00ec, 0x00fe, 0x0000, 0x00f5, + 0x0007, 0x000b, 0x09c9, 0x09cd, 0x09d1, 0x09d6, 0x09db, 0x09e0, + // Entry 6D40 - 6D7F + 0x09e5, 0x0007, 0x000b, 0x09ea, 0x09ed, 0x09ef, 0x09f2, 0x09f5, + 0x09f7, 0x09f9, 0x0007, 0x000b, 0x09c9, 0x09cd, 0x09d1, 0x09d6, + 0x09db, 0x09e0, 0x09e5, 0x0007, 0x000b, 0x09c9, 0x09cd, 0x0998, + 0x09fc, 0x09db, 0x0a06, 0x0a0d, 0x0002, 0x010a, 0x0123, 0x0003, + 0x010e, 0x0115, 0x011c, 0x0005, 0x000b, 0xffff, 0x0a14, 0x0a1f, + 0x0a28, 0x0a31, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x0005, 0x000b, 0xffff, 0x0a3a, 0x0a49, 0x0a56, 0x0a63, + 0x0003, 0x0127, 0x012e, 0x0135, 0x0005, 0x000b, 0xffff, 0x0a14, + // Entry 6D80 - 6DBF + 0x0a1f, 0x0a28, 0x0a31, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x0005, 0x000b, 0xffff, 0x0a3a, 0x0a49, 0x0a56, + 0x0a63, 0x0002, 0x013f, 0x015e, 0x0003, 0x0143, 0x014c, 0x0155, + 0x0002, 0x0146, 0x0149, 0x0001, 0x000b, 0x0a70, 0x0001, 0x000b, + 0x0a75, 0x0002, 0x014f, 0x0152, 0x0001, 0x0008, 0x0928, 0x0001, + 0x000b, 0x0a7a, 0x0002, 0x0158, 0x015b, 0x0001, 0x000b, 0x0a70, + 0x0001, 0x000b, 0x0a75, 0x0003, 0x0162, 0x016b, 0x0174, 0x0002, + 0x0165, 0x0168, 0x0001, 0x000b, 0x0a70, 0x0001, 0x000b, 0x0a75, + // Entry 6DC0 - 6DFF + 0x0002, 0x016e, 0x0171, 0x0001, 0x000b, 0x0a70, 0x0001, 0x000b, + 0x0a75, 0x0002, 0x0177, 0x017a, 0x0001, 0x000b, 0x0a70, 0x0001, + 0x000b, 0x0a75, 0x0003, 0x018c, 0x0197, 0x0181, 0x0002, 0x0184, + 0x0188, 0x0002, 0x000b, 0x0a7d, 0x0a90, 0x0002, 0x0000, 0x04f5, + 0x04f9, 0x0002, 0x018f, 0x0193, 0x0002, 0x000b, 0x0aa2, 0x0aae, + 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, 0x0199, 0x0002, 0x000b, + 0x0aa2, 0x0aae, 0x0004, 0x01ab, 0x01a5, 0x01a2, 0x01a8, 0x0001, + 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, + // Entry 6E00 - 6E3F + 0x0001, 0x0000, 0x051c, 0x0004, 0x01bc, 0x01b6, 0x01b3, 0x01b9, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x01cd, 0x01c7, 0x01c4, + 0x01ca, 0x0001, 0x000b, 0x0ab9, 0x0001, 0x000b, 0x0ab9, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01d9, 0x01ef, 0x0000, 0x9006, 0x0003, 0x01e3, + 0x01e9, 0x01dd, 0x0001, 0x01df, 0x0002, 0x000b, 0x0ac6, 0x0adb, + 0x0001, 0x01e5, 0x0002, 0x000b, 0x0ae9, 0x0af5, 0x0001, 0x01eb, + // Entry 6E40 - 6E7F + 0x0002, 0x000b, 0x0ae9, 0x0af5, 0x0003, 0x01f6, 0x0000, 0x01f3, + 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x04af, 0x0040, 0x023a, + 0x0000, 0x0000, 0x023f, 0x025e, 0x027d, 0x029c, 0x02b6, 0x02d0, + 0x02ea, 0x0309, 0x0328, 0x0347, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0366, 0x0386, 0x03a6, 0x0000, 0x0000, 0x0000, 0x03c6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03cb, 0x03d3, 0x03db, + 0x03e3, 0x03eb, 0x03f3, 0x03fb, 0x0403, 0x040b, 0x0413, 0x041b, + 0x0423, 0x042b, 0x0433, 0x043b, 0x0443, 0x044b, 0x0453, 0x045b, + // Entry 6E80 - 6EBF + 0x0463, 0x046b, 0x0000, 0x0473, 0x0000, 0x0478, 0x0492, 0x04ac, + 0x04c6, 0x04e0, 0x04fa, 0x0514, 0x0532, 0x0550, 0x056e, 0x0001, + 0x023c, 0x0001, 0x000b, 0x0afa, 0x0003, 0x0243, 0x0246, 0x024b, + 0x0001, 0x000b, 0x0b04, 0x0003, 0x000b, 0x0b0a, 0x0b12, 0x0b1a, + 0x0002, 0x024e, 0x0256, 0x0006, 0x000b, 0x0b3a, 0x0b29, 0xffff, + 0x0b3a, 0x0b29, 0x0b4b, 0x0006, 0x000b, 0x0b6f, 0x0b62, 0xffff, + 0x0b6f, 0x0b62, 0x0b7c, 0x0003, 0x0262, 0x0265, 0x026a, 0x0001, + 0x000b, 0x0b8f, 0x0003, 0x000b, 0x0b0a, 0x0b12, 0x0b93, 0x0002, + // Entry 6EC0 - 6EFF + 0x026d, 0x0275, 0x0006, 0x000b, 0x0ba0, 0x0ba0, 0xffff, 0x0ba0, + 0x0ba0, 0x0ba0, 0x0006, 0x000b, 0x0baf, 0x0baf, 0xffff, 0x0baf, + 0x0baf, 0x0baf, 0x0003, 0x0281, 0x0284, 0x0289, 0x0001, 0x000b, + 0x0b8f, 0x0003, 0x000b, 0x0b0a, 0x0b12, 0x0b93, 0x0002, 0x028c, + 0x0294, 0x0006, 0x000b, 0x0bba, 0x0bba, 0xffff, 0x0bba, 0x0bba, + 0x0bba, 0x0006, 0x000b, 0x0bc3, 0x0bc3, 0xffff, 0x0bc3, 0x0bc3, + 0x0bc3, 0x0003, 0x02a0, 0x0000, 0x02a3, 0x0001, 0x000b, 0x0bcc, + 0x0002, 0x02a6, 0x02ae, 0x0006, 0x000b, 0x0bd6, 0x0bd6, 0xffff, + // Entry 6F00 - 6F3F + 0x0beb, 0x0c00, 0x0c15, 0x0006, 0x000b, 0x0c2f, 0x0c2f, 0xffff, + 0x0c40, 0x0c51, 0x0c62, 0x0003, 0x02ba, 0x0000, 0x02bd, 0x0001, + 0x000b, 0x0c78, 0x0002, 0x02c0, 0x02c8, 0x0006, 0x000b, 0x0c7e, + 0x0c7e, 0xffff, 0x0c7e, 0x0c7e, 0x0c7e, 0x0006, 0x000b, 0x0c8f, + 0x0c8f, 0xffff, 0x0c8f, 0x0c8f, 0x0c8f, 0x0003, 0x02d4, 0x0000, + 0x02d7, 0x0001, 0x000b, 0x0c78, 0x0002, 0x02da, 0x02e2, 0x0006, + 0x000b, 0x0c9c, 0x0c9c, 0xffff, 0x0c9c, 0x0c9c, 0x0c9c, 0x0006, + 0x000b, 0x0ca7, 0x0ca7, 0xffff, 0x0ca7, 0x0ca7, 0x0ca7, 0x0003, + // Entry 6F40 - 6F7F + 0x02ee, 0x02f1, 0x02f6, 0x0001, 0x000b, 0x0cb2, 0x0003, 0x000b, + 0x0cb6, 0x0cc5, 0x0cd1, 0x0002, 0x02f9, 0x0301, 0x0006, 0x000b, + 0x0cde, 0x0cde, 0xffff, 0x0ced, 0x0cde, 0x0cfc, 0x0006, 0x000b, + 0x0d11, 0x0d11, 0xffff, 0x0d1c, 0x0d11, 0x0d27, 0x0003, 0x030d, + 0x0310, 0x0315, 0x0001, 0x000b, 0x0cb2, 0x0003, 0x000b, 0x0cb6, + 0x0cc5, 0x0cd1, 0x0002, 0x0318, 0x0320, 0x0006, 0x000b, 0x0cde, + 0x0cde, 0xffff, 0x0ced, 0x0cde, 0x0cfc, 0x0006, 0x000b, 0x0d11, + 0x0d11, 0xffff, 0x0d1c, 0x0d11, 0x0d27, 0x0003, 0x032c, 0x032f, + // Entry 6F80 - 6FBF + 0x0334, 0x0001, 0x000b, 0x0cb2, 0x0003, 0x000b, 0x0cb6, 0x0cc5, + 0x0cd1, 0x0002, 0x0337, 0x033f, 0x0006, 0x000b, 0x0d38, 0x0d38, + 0xffff, 0x0d38, 0x0d38, 0x0d38, 0x0006, 0x000b, 0x0d41, 0x0d41, + 0xffff, 0x0d41, 0x0d41, 0x0d41, 0x0003, 0x034b, 0x034e, 0x0353, + 0x0001, 0x000b, 0x0d4a, 0x0003, 0x000b, 0x0d51, 0x0d63, 0x0d72, + 0x0002, 0x0356, 0x035e, 0x0006, 0x000b, 0x0d82, 0x0d82, 0xffff, + 0x0d82, 0x0d82, 0x0d94, 0x0006, 0x000b, 0x0dac, 0x0dac, 0xffff, + 0x0dac, 0x0dac, 0x0dba, 0x0003, 0x036a, 0x036d, 0x0373, 0x0001, + // Entry 6FC0 - 6FFF + 0x000b, 0x0dce, 0x0004, 0x000b, 0x0de5, 0x0dec, 0x0df2, 0x0dd3, + 0x0002, 0x0376, 0x037e, 0x0006, 0x000b, 0x0dfe, 0x0dfe, 0xffff, + 0x0e0e, 0x0dfe, 0x0e1e, 0x0006, 0x000b, 0x0e34, 0x0e34, 0xffff, + 0x0e40, 0x0e34, 0x0e4c, 0x0003, 0x038a, 0x038d, 0x0393, 0x0001, + 0x0000, 0x2008, 0x0004, 0x000b, 0x0de5, 0x0dec, 0x0df2, 0x0dd3, + 0x0002, 0x0396, 0x039e, 0x0006, 0x000b, 0x0e5e, 0x0e5e, 0xffff, + 0x0e5e, 0x0e5e, 0x0e5e, 0x0006, 0x000b, 0x0e6b, 0x0e6b, 0xffff, + 0x0e6b, 0x0e6b, 0x0e6b, 0x0003, 0x03aa, 0x03ad, 0x03b3, 0x0001, + // Entry 7000 - 703F + 0x0000, 0x2008, 0x0004, 0x000b, 0x0de5, 0x0dec, 0x0df2, 0x0dd3, + 0x0002, 0x03b6, 0x03be, 0x0006, 0x0000, 0x1b48, 0x1b48, 0xffff, + 0x1b48, 0x1b48, 0x1b48, 0x0006, 0x0000, 0x1b4f, 0x1b4f, 0xffff, + 0x1b4f, 0x1b4f, 0x1b4f, 0x0001, 0x03c8, 0x0001, 0x000b, 0x0e74, + 0x0002, 0x0000, 0x03ce, 0x0003, 0x000b, 0x0e83, 0x0e93, 0x0e9f, + 0x0002, 0x0000, 0x03d6, 0x0003, 0x000b, 0x0eab, 0x0eb9, 0x0ec2, + 0x0002, 0x0000, 0x03de, 0x0003, 0x000b, 0x0ecc, 0x0ed9, 0x0ee1, + 0x0002, 0x0000, 0x03e6, 0x0003, 0x000b, 0x0eea, 0x0efa, 0x0f06, + // Entry 7040 - 707F + 0x0002, 0x0000, 0x03ee, 0x0003, 0x000b, 0x0f12, 0x0f20, 0x0f29, + 0x0002, 0x0000, 0x03f6, 0x0003, 0x000b, 0x0f33, 0x0f3f, 0x0f46, + 0x0002, 0x0000, 0x03fe, 0x0003, 0x000b, 0x0f4e, 0x0f61, 0x0f70, + 0x0002, 0x0000, 0x0406, 0x0003, 0x000b, 0x0f7f, 0x0f8e, 0x0f98, + 0x0002, 0x0000, 0x040e, 0x0003, 0x000b, 0x0fa3, 0x0fb0, 0x0fb8, + 0x0002, 0x0000, 0x0416, 0x0003, 0x000b, 0x0fc1, 0x0fd7, 0x0fe9, + 0x0002, 0x0000, 0x041e, 0x0003, 0x000b, 0x0ffb, 0x100a, 0x1014, + 0x0002, 0x0000, 0x0426, 0x0003, 0x000b, 0x101f, 0x102c, 0x1034, + // Entry 7080 - 70BF + 0x0002, 0x0000, 0x042e, 0x0003, 0x000b, 0x103d, 0x104f, 0x105c, + 0x0002, 0x0000, 0x0436, 0x0003, 0x000b, 0x106a, 0x1079, 0x1083, + 0x0002, 0x0000, 0x043e, 0x0003, 0x000b, 0x108e, 0x109a, 0x1083, + 0x0002, 0x0000, 0x0446, 0x0003, 0x000b, 0x10a1, 0x10b4, 0x10c3, + 0x0002, 0x0000, 0x044e, 0x0003, 0x000b, 0x10d2, 0x10e1, 0x10eb, + 0x0002, 0x0000, 0x0456, 0x0003, 0x000b, 0x10f6, 0x1102, 0x1109, + 0x0002, 0x0000, 0x045e, 0x0003, 0x000b, 0x1111, 0x1124, 0x1133, + 0x0002, 0x0000, 0x0466, 0x0003, 0x000b, 0x1142, 0x1151, 0x115b, + // Entry 70C0 - 70FF + 0x0002, 0x0000, 0x046e, 0x0003, 0x000b, 0x1166, 0x1173, 0x117b, + 0x0001, 0x0475, 0x0001, 0x000b, 0x1184, 0x0003, 0x047c, 0x0000, + 0x047f, 0x0001, 0x000b, 0x118a, 0x0002, 0x0482, 0x048a, 0x0006, + 0x000b, 0x118e, 0x118e, 0xffff, 0x118e, 0x118e, 0x119d, 0x0006, + 0x000b, 0x11b2, 0x11b2, 0xffff, 0x11b2, 0x11b2, 0x11bd, 0x0003, + 0x0496, 0x0000, 0x0499, 0x0001, 0x000b, 0x11ce, 0x0002, 0x049c, + 0x04a4, 0x0006, 0x000b, 0x11d0, 0x11d0, 0xffff, 0x11d0, 0x11d0, + 0x11d0, 0x0006, 0x000b, 0x11dd, 0x11dd, 0xffff, 0x11dd, 0x11dd, + // Entry 7100 - 713F + 0x11dd, 0x0003, 0x04b0, 0x0000, 0x04b3, 0x0001, 0x000b, 0x11ce, + 0x0002, 0x04b6, 0x04be, 0x0006, 0x0000, 0x1d76, 0x1d76, 0xffff, + 0x1d76, 0x1d76, 0x1d76, 0x0006, 0x0000, 0x1d7d, 0x1d7d, 0xffff, + 0x1d7d, 0x1d7d, 0x1d7d, 0x0003, 0x04ca, 0x0000, 0x04cd, 0x0001, + 0x000b, 0x11e6, 0x0002, 0x04d0, 0x04d8, 0x0006, 0x000b, 0x11ec, + 0x11ec, 0xffff, 0x11fd, 0x11ec, 0x120e, 0x0006, 0x000b, 0x1224, + 0x1224, 0xffff, 0x1231, 0x1224, 0x123e, 0x0003, 0x04e4, 0x0000, + 0x04e7, 0x0001, 0x000b, 0x1250, 0x0002, 0x04ea, 0x04f2, 0x0006, + // Entry 7140 - 717F + 0x000b, 0x1254, 0x1254, 0xffff, 0x1254, 0x1254, 0x1254, 0x0006, + 0x000b, 0x1263, 0x1263, 0xffff, 0x1263, 0x1263, 0x1263, 0x0003, + 0x04fe, 0x0000, 0x0501, 0x0001, 0x000b, 0x1250, 0x0002, 0x0504, + 0x050c, 0x0006, 0x0000, 0x1d97, 0x1d97, 0xffff, 0x1d97, 0x1d97, + 0x1d97, 0x0006, 0x0000, 0x1da0, 0x1da0, 0xffff, 0x1da0, 0x1da0, + 0x1da0, 0x0003, 0x0518, 0x051b, 0x051f, 0x0001, 0x000b, 0x126e, + 0x0002, 0x000b, 0xffff, 0x1275, 0x0002, 0x0522, 0x052a, 0x0006, + 0x000b, 0x127d, 0x127d, 0xffff, 0x127d, 0x127d, 0x128f, 0x0006, + // Entry 7180 - 71BF + 0x000b, 0x12a6, 0x12a6, 0xffff, 0x12a6, 0x12a6, 0x12a6, 0x0003, + 0x0536, 0x0539, 0x053d, 0x0001, 0x0000, 0x2002, 0x0002, 0x000b, + 0xffff, 0x12b4, 0x0002, 0x0540, 0x0548, 0x0006, 0x000b, 0x12ba, + 0x12ba, 0xffff, 0x12ba, 0x12ba, 0x12ba, 0x0006, 0x000b, 0x12c7, + 0x12c7, 0xffff, 0x12c7, 0x12c7, 0x12c7, 0x0003, 0x0554, 0x0557, + 0x055b, 0x0001, 0x0000, 0x2002, 0x0002, 0x000b, 0xffff, 0x12b4, + 0x0002, 0x055e, 0x0566, 0x0006, 0x0000, 0x1db4, 0x1db4, 0xffff, + 0x1db4, 0x1db4, 0x1db4, 0x0006, 0x0000, 0x1dbb, 0x1dbb, 0xffff, + // Entry 71C0 - 71FF + 0x1dbb, 0x1dbb, 0x1dbb, 0x0001, 0x0570, 0x0001, 0x000b, 0x12d0, + 0x0004, 0x0578, 0x057d, 0x0582, 0x058d, 0x0003, 0x0000, 0x1dc7, + 0x21de, 0x21da, 0x0003, 0x000b, 0x12da, 0x12e2, 0x12f0, 0x0002, + 0x0000, 0x0585, 0x0002, 0x0000, 0x0588, 0x0003, 0x000b, 0xffff, + 0x1302, 0x1318, 0x0002, 0x0000, 0x0590, 0x0003, 0x0633, 0x06d2, + 0x0594, 0x009d, 0x000b, 0x132f, 0x133f, 0x134f, 0x1363, 0x1393, + 0x13e0, 0x1445, 0xffff, 0x147e, 0x14b9, 0xffff, 0x14f8, 0x152b, + 0x1558, 0x158f, 0x15e0, 0x163a, 0xffff, 0x1675, 0x16cc, 0x1735, + // Entry 7200 - 723F + 0x178f, 0x17e7, 0x1825, 0x1860, 0x188e, 0x189a, 0x18b4, 0x18e0, + 0x1909, 0xffff, 0x194b, 0x197d, 0x19aa, 0xffff, 0x19cc, 0x19df, + 0x19fc, 0x1a35, 0x1a6c, 0xffff, 0xffff, 0x1a8e, 0x1aaf, 0x1adb, + 0x1af7, 0x1b3b, 0xffff, 0x1b8c, 0x1be1, 0x1c21, 0x1c45, 0x1c58, + 0x1c83, 0x1c98, 0x1caf, 0xffff, 0x1cd5, 0x1d09, 0x1d63, 0x1dbe, + 0x1de5, 0xffff, 0x1dfe, 0xffff, 0x1e2a, 0xffff, 0x1e3e, 0xffff, + 0x1e4d, 0x1e64, 0x1e89, 0x1eb7, 0x1eea, 0x1f1a, 0xffff, 0x1f3e, + 0x1f55, 0x1f7b, 0xffff, 0xffff, 0x1f9f, 0xffff, 0xffff, 0x1fea, + // Entry 7240 - 727F + 0xffff, 0x1ffd, 0x200a, 0x201a, 0x202b, 0x2048, 0xffff, 0x2082, + 0xffff, 0x20ce, 0x2109, 0x212f, 0x213b, 0x2145, 0x2163, 0x21ac, + 0x21ef, 0x2221, 0x222a, 0xffff, 0x224b, 0xffff, 0x2288, 0x22b2, + 0xffff, 0x22c9, 0x22fd, 0x2332, 0xffff, 0x237d, 0x23bf, 0xffff, + 0xffff, 0x23cc, 0xffff, 0x23e9, 0xffff, 0x241d, 0x2441, 0x244e, + 0x2466, 0x2478, 0x248a, 0xffff, 0x2496, 0x24ac, 0x24d2, 0x24e2, + 0x24f8, 0xffff, 0x252d, 0x255f, 0x2576, 0x25ae, 0x25ea, 0x2612, + 0x2630, 0x266e, 0xffff, 0xffff, 0x269a, 0x26bb, 0x26f6, 0x1dab, + // Entry 7280 - 72BF + 0xffff, 0xffff, 0x1411, 0xffff, 0xffff, 0xffff, 0x1fae, 0x1fc6, + 0x009d, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0x137a, 0x13d5, + 0x1437, 0xffff, 0x1471, 0x14a8, 0xffff, 0x14eb, 0x1522, 0x154d, + 0x157e, 0x15c1, 0x162e, 0xffff, 0x1662, 0x16ab, 0x171e, 0x1773, + 0x17d7, 0x1817, 0x1851, 0xffff, 0xffff, 0x18a6, 0xffff, 0x18f6, + 0xffff, 0x193f, 0x1973, 0x19a1, 0xffff, 0xffff, 0xffff, 0x19ef, + 0x1a26, 0x1a63, 0xffff, 0xffff, 0xffff, 0x1aa1, 0xffff, 0x1ae7, + 0x1b27, 0xffff, 0x1b73, 0x1bce, 0x1c17, 0xffff, 0xffff, 0xffff, + // Entry 72C0 - 72FF + 0xffff, 0x1ca4, 0xffff, 0xffff, 0x1cf2, 0x1d47, 0xffff, 0xffff, + 0xffff, 0x1df0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1e80, 0x1eab, 0x1edf, 0x1f10, 0xffff, 0xffff, 0xffff, + 0x1f71, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x203e, 0xffff, 0x206c, 0xffff, + 0x20be, 0x20fe, 0xffff, 0xffff, 0xffff, 0x214f, 0x219b, 0x21de, + 0xffff, 0xffff, 0xffff, 0x223b, 0xffff, 0x227b, 0xffff, 0xffff, + 0x22bc, 0x22f3, 0x2321, 0xffff, 0x2364, 0xffff, 0xffff, 0xffff, + // Entry 7300 - 733F + 0xffff, 0xffff, 0x23dc, 0xffff, 0x2413, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x24a1, 0xffff, 0xffff, 0x24ee, + 0xffff, 0x251c, 0xffff, 0x256a, 0x259e, 0x25de, 0xffff, 0x2620, + 0x2660, 0xffff, 0xffff, 0xffff, 0x26af, 0x26e3, 0xffff, 0xffff, + 0xffff, 0x1406, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fbc, 0x009d, + 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0x13b6, 0x13f5, 0x145d, + 0xffff, 0x1495, 0x14d4, 0xffff, 0x150f, 0x153e, 0x156d, 0x15aa, + 0x1609, 0x1650, 0xffff, 0x1692, 0x16f7, 0x1756, 0x17b5, 0x1801, + // Entry 7340 - 737F + 0x183d, 0x1879, 0xffff, 0xffff, 0x18cc, 0xffff, 0x1926, 0xffff, + 0x1961, 0x1991, 0x19bd, 0xffff, 0xffff, 0xffff, 0x1a13, 0x1a4e, + 0x1a7f, 0xffff, 0xffff, 0xffff, 0x1ac7, 0xffff, 0x1b11, 0x1b59, + 0xffff, 0x1baf, 0x1bfe, 0x1c35, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1cc4, 0xffff, 0xffff, 0x1d2a, 0x1d89, 0xffff, 0xffff, 0xffff, + 0x1e16, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1e9c, 0x1ecd, 0x1eff, 0x1f2e, 0xffff, 0xffff, 0xffff, 0x1f8f, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 7380 - 73BF + 0xffff, 0xffff, 0xffff, 0x205c, 0xffff, 0x20a2, 0xffff, 0x20e8, + 0x211e, 0xffff, 0xffff, 0xffff, 0x2181, 0x21c7, 0x220a, 0xffff, + 0xffff, 0xffff, 0x2265, 0xffff, 0x229f, 0xffff, 0xffff, 0x22e0, + 0x2311, 0x234d, 0xffff, 0x23a0, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2400, 0xffff, 0x2431, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x24c1, 0xffff, 0xffff, 0x250c, 0xffff, + 0x2548, 0xffff, 0x258c, 0x25c8, 0x2600, 0xffff, 0x264a, 0x2686, + 0xffff, 0xffff, 0xffff, 0x26d1, 0x2713, 0xffff, 0xffff, 0xffff, + // Entry 73C0 - 73FF + 0x1426, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fda, 0x0003, 0x0004, + 0x00e5, 0x0163, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000f, 0x0029, 0x0000, 0x00ce, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0000, 0x0004, 0x0026, + 0x0020, 0x001d, 0x0023, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, + 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, 0x000c, 0x0029, 0x0008, + 0x0032, 0x005a, 0x007f, 0x008c, 0x00a4, 0x00ac, 0x00bd, 0x0000, + 0x0002, 0x0035, 0x0048, 0x0003, 0x0000, 0x0000, 0x0039, 0x000d, + // Entry 7400 - 743F + 0x000c, 0xffff, 0x0036, 0x004f, 0x006e, 0x007e, 0x0091, 0x0098, + 0x00a2, 0x00b2, 0x00c2, 0x00e1, 0x00f1, 0x010a, 0x0002, 0x0000, + 0x004b, 0x000d, 0x000c, 0xffff, 0x0126, 0x012a, 0x0131, 0x0138, + 0x0091, 0x013c, 0x013c, 0x0143, 0x0147, 0x014e, 0x0152, 0x0156, + 0x0002, 0x005d, 0x0073, 0x0003, 0x0061, 0x0000, 0x006a, 0x0007, + 0x000c, 0x015d, 0x0167, 0x016e, 0x017b, 0x0185, 0x0195, 0x01a5, + 0x0007, 0x000c, 0x01b2, 0x01c5, 0x01d5, 0x01eb, 0x01fe, 0x0217, + 0x0230, 0x0002, 0x0000, 0x0076, 0x0007, 0x000c, 0x0246, 0x024a, + // Entry 7440 - 747F + 0x024e, 0x0255, 0x025c, 0x0263, 0x0263, 0x0001, 0x0081, 0x0003, + 0x0000, 0x0000, 0x0085, 0x0005, 0x000c, 0xffff, 0x026a, 0x02af, + 0x02f1, 0x033c, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, 0x009b, + 0x0002, 0x0095, 0x0098, 0x0001, 0x000c, 0x038b, 0x0001, 0x000c, + 0x0395, 0x0002, 0x009e, 0x00a1, 0x0001, 0x000c, 0x038b, 0x0001, + 0x000c, 0x0395, 0x0001, 0x00a6, 0x0001, 0x00a8, 0x0002, 0x000c, + 0x03a8, 0x03c2, 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, 0x0001, + 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, 0x0001, 0x000c, 0x03e3, + // Entry 7480 - 74BF + 0x0001, 0x000c, 0x03ec, 0x0004, 0x00cb, 0x00c5, 0x00c2, 0x00c8, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x00d0, 0x0001, 0x00d2, + 0x0003, 0x0000, 0x0000, 0x00d6, 0x000d, 0x000c, 0xffff, 0x03f3, + 0x0416, 0x0423, 0x0430, 0x0440, 0x0450, 0x045d, 0x046a, 0x047d, + 0x0487, 0x0494, 0x04a4, 0x0040, 0x0126, 0x0000, 0x0000, 0x012b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0130, 0x0000, 0x0000, + 0x0135, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013a, 0x0000, + // Entry 74C0 - 74FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x014a, 0x0000, 0x014f, 0x0000, 0x0000, 0x0154, 0x0000, 0x0000, + 0x0159, 0x0000, 0x0000, 0x015e, 0x0001, 0x0128, 0x0001, 0x000c, + 0x04b1, 0x0001, 0x012d, 0x0001, 0x000c, 0x04c1, 0x0001, 0x0132, + 0x0001, 0x000c, 0x04d1, 0x0001, 0x0137, 0x0001, 0x000c, 0x04db, + // Entry 7500 - 753F + 0x0002, 0x013d, 0x0140, 0x0001, 0x000c, 0x04f5, 0x0003, 0x000c, + 0x04ff, 0x050c, 0x0519, 0x0001, 0x0147, 0x0001, 0x000c, 0x0529, + 0x0001, 0x014c, 0x0001, 0x000c, 0x054d, 0x0001, 0x0151, 0x0001, + 0x000c, 0x056a, 0x0001, 0x0156, 0x0001, 0x000c, 0x057a, 0x0001, + 0x015b, 0x0001, 0x000c, 0x058a, 0x0001, 0x0160, 0x0001, 0x000c, + 0x05a0, 0x0004, 0x0000, 0x0000, 0x0168, 0x0173, 0x0002, 0x0000, + 0x016b, 0x0002, 0x0000, 0x016e, 0x0003, 0x000c, 0xffff, 0x05b0, + 0x05dd, 0x0002, 0x035a, 0x0176, 0x0003, 0x017a, 0x02ba, 0x021a, + // Entry 7540 - 757F + 0x009e, 0x000c, 0xffff, 0xffff, 0xffff, 0xffff, 0x079e, 0x0866, + 0x0984, 0x0a13, 0x0ae4, 0x0bb5, 0x0c86, 0x0d1e, 0xffff, 0x0ecb, + 0x0f48, 0x0fec, 0x10cf, 0x1155, 0x11f6, 0x12cc, 0x13e8, 0x14dd, + 0x15d2, 0x1673, 0x16f0, 0xffff, 0xffff, 0x180c, 0xffff, 0x1919, + 0xffff, 0x19f6, 0x1a73, 0x1ae7, 0x1b6d, 0xffff, 0xffff, 0x1c93, + 0x1d2b, 0x1dd3, 0xffff, 0xffff, 0xffff, 0x1f39, 0xffff, 0x2028, + 0x20cc, 0xffff, 0x218b, 0x2253, 0x2306, 0xffff, 0xffff, 0xffff, + 0xffff, 0x24b4, 0xffff, 0xffff, 0x25da, 0x26c6, 0xffff, 0xffff, + // Entry 7580 - 75BF + 0x2866, 0x290a, 0x29a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2bf4, 0x2c71, 0x2d24, 0x2dbc, 0x2e39, 0xffff, 0xffff, + 0x2fc6, 0xffff, 0x308e, 0xffff, 0xffff, 0x3226, 0xffff, 0x3350, + 0xffff, 0xffff, 0xffff, 0xffff, 0x34c9, 0xffff, 0xffff, 0xffff, + 0x3597, 0x362f, 0xffff, 0xffff, 0xffff, 0x3769, 0x383a, 0x38ff, + 0xffff, 0xffff, 0x3a48, 0x3b8f, 0x3c54, 0x3cda, 0xffff, 0xffff, + 0x3e04, 0x3e93, 0x3f07, 0xffff, 0x3ff7, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x42c5, 0x4354, 0x43d1, 0xffff, 0xffff, 0xffff, + // Entry 75C0 - 75FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x468f, + 0xffff, 0x4745, 0xffff, 0x484f, 0x48d5, 0x499a, 0xffff, 0x4a68, + 0x4b36, 0xffff, 0xffff, 0xffff, 0x4cbe, 0x4d5f, 0xffff, 0xffff, + 0x0604, 0x08fe, 0x0da4, 0x0e33, 0xffff, 0xffff, 0x32d3, 0x418b, + 0x009e, 0x000c, 0x066f, 0x06ae, 0x06fa, 0x074c, 0x07d4, 0x0889, + 0x09a7, 0x0a49, 0x0b1a, 0x0beb, 0x0ca9, 0x0d3e, 0xffff, 0x0ee5, + 0x0f71, 0x102b, 0x10ef, 0x117b, 0x1225, 0x131b, 0x142a, 0x151f, + 0x15fb, 0x1690, 0x1719, 0x1791, 0x17ca, 0x183b, 0x18bf, 0x1943, + // Entry 7600 - 763F + 0x19bd, 0x1a10, 0x1a8d, 0x1b04, 0x1b96, 0x1c0e, 0x1c4d, 0x1cb9, + 0x1d52, 0x1df3, 0x1e62, 0x1e9b, 0x1ef3, 0x1f66, 0x1fe6, 0x2052, + 0x20ff, 0xffff, 0x21c1, 0x2282, 0x2320, 0x237a, 0x23d5, 0x2430, + 0x2475, 0x24da, 0x254c, 0x259b, 0x261c, 0x270b, 0x27f1, 0x282a, + 0x288d, 0x2930, 0x29bf, 0x2a1f, 0x2a5b, 0x2aaa, 0x2aed, 0x2b35, + 0x2b93, 0x2c0e, 0x2ca0, 0x2d47, 0x2dd6, 0x2e87, 0x2f49, 0x2f7b, + 0x2fe6, 0x3055, 0x30c6, 0x315c, 0x31e0, 0x3250, 0xffff, 0x336a, + 0x33c4, 0x3403, 0x343f, 0x3487, 0x34ef, 0x3561, 0xffff, 0xffff, + // Entry 7640 - 767F + 0x35bd, 0x364f, 0x36b5, 0x36f7, 0x3730, 0x37a2, 0x386c, 0x3937, + 0x39d6, 0x3a0c, 0x3a8e, 0x3bc4, 0x3c74, 0x3d03, 0x3d7b, 0x3db1, + 0x3e27, 0x3ead, 0x3f30, 0x3fa8, 0x403b, 0x40f2, 0x4134, 0xffff, + 0x4247, 0x4289, 0x42e8, 0x4371, 0x43eb, 0x4445, 0x4484, 0x44c6, + 0x4502, 0x4551, 0x4590, 0x45c9, 0xffff, 0x4605, 0x4653, 0x46ac, + 0x470c, 0x477d, 0x4813, 0x486f, 0x490a, 0x49ba, 0x4a20, 0x4a9d, + 0x4b62, 0x4be0, 0x4c1f, 0x4c65, 0x4ce7, 0x4d9a, 0x27bb, 0x3b40, + 0x061b, 0x091e, 0x0dc7, 0x0e59, 0xffff, 0x31aa, 0x32f0, 0x41bd, + // Entry 7680 - 76BF + 0x009e, 0x000c, 0xffff, 0xffff, 0xffff, 0xffff, 0x0826, 0x08c8, + 0x09e6, 0x0a9b, 0x0b6c, 0x0c3d, 0x0ce8, 0x0d7a, 0xffff, 0x0f1b, + 0x0fb6, 0x1086, 0x112b, 0x11bd, 0x127d, 0x1386, 0x1488, 0x157d, + 0x1640, 0x16c9, 0x175e, 0xffff, 0xffff, 0x1886, 0xffff, 0x1989, + 0xffff, 0x1a46, 0x1ac3, 0x1b3d, 0x1bdb, 0xffff, 0xffff, 0x1cfb, + 0x1d95, 0x1e2f, 0xffff, 0xffff, 0xffff, 0x1faf, 0xffff, 0x2098, + 0x214e, 0xffff, 0x2213, 0x22cd, 0x2356, 0xffff, 0xffff, 0xffff, + 0xffff, 0x251c, 0xffff, 0xffff, 0x267a, 0x276c, 0xffff, 0xffff, + // Entry 76C0 - 76FF + 0x28d0, 0x2972, 0x29f8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2c44, 0x2ceb, 0x2d86, 0x2e0c, 0x2ef1, 0xffff, 0xffff, + 0x3022, 0xffff, 0x311a, 0xffff, 0xffff, 0x3296, 0xffff, 0x33a0, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3531, 0xffff, 0xffff, 0xffff, + 0x35ff, 0x368b, 0xffff, 0xffff, 0xffff, 0x37f7, 0x38ba, 0x398b, + 0xffff, 0xffff, 0x3af0, 0x3c15, 0x3cb0, 0x3d48, 0xffff, 0xffff, + 0x3e66, 0x3ee3, 0x3f75, 0xffff, 0x409b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4327, 0x43aa, 0x4421, 0xffff, 0xffff, 0xffff, + // Entry 7700 - 773F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x46e5, + 0xffff, 0x47d1, 0xffff, 0x48ab, 0x495b, 0x49f6, 0xffff, 0x4aee, + 0x4baa, 0xffff, 0xffff, 0xffff, 0x4d2c, 0x4df1, 0xffff, 0xffff, + 0x064e, 0x095a, 0x0e06, 0x0e9b, 0xffff, 0xffff, 0x3329, 0x420b, + 0x0003, 0x0000, 0x0000, 0x035e, 0x0042, 0x000b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 7740 - 777F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, + 0x0003, 0x0004, 0x02e7, 0x07d1, 0x0012, 0x0017, 0x0024, 0x0000, + 0x0000, 0x0000, 0x0000, 0x003c, 0x0067, 0x027b, 0x0000, 0x0288, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02cd, 0x0000, 0x02d6, 0x0005, + // Entry 7780 - 77BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, + 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x002b, 0x0004, 0x0039, 0x0033, 0x0030, 0x0036, + 0x0001, 0x000d, 0x0000, 0x0001, 0x000d, 0x000a, 0x0001, 0x000d, + 0x000a, 0x0001, 0x000d, 0x000a, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0045, 0x0000, 0x0056, 0x0004, 0x0053, 0x004d, + 0x004a, 0x0050, 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, + 0x0001, 0x000d, 0x0033, 0x0001, 0x000d, 0x003e, 0x0004, 0x0064, + // Entry 77C0 - 77FF + 0x005e, 0x005b, 0x0061, 0x0001, 0x000d, 0x004d, 0x0001, 0x000d, + 0x004d, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, + 0x0070, 0x00d5, 0x012c, 0x0161, 0x0232, 0x0248, 0x0259, 0x026a, + 0x0002, 0x0073, 0x00a4, 0x0003, 0x0077, 0x0086, 0x0095, 0x000d, + 0x000d, 0xffff, 0x0059, 0x005d, 0x0061, 0x0065, 0x0069, 0x006d, + 0x0071, 0x0075, 0x0079, 0x007d, 0x0081, 0x0085, 0x000d, 0x0000, + 0xffff, 0x214a, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, + 0x1f9c, 0x2002, 0x1f98, 0x1f96, 0x2008, 0x000d, 0x000d, 0xffff, + // Entry 7800 - 783F + 0x0089, 0x0090, 0x0098, 0x009d, 0x0069, 0x00a3, 0x00a8, 0x00ad, + 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0003, 0x00a8, 0x00b7, 0x00c6, + 0x000d, 0x000d, 0xffff, 0x0059, 0x005d, 0x0061, 0x0065, 0x0069, + 0x006d, 0x0071, 0x0075, 0x0079, 0x007d, 0x0081, 0x0085, 0x000d, + 0x0000, 0xffff, 0x214a, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, + 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x1f96, 0x2008, 0x000d, 0x000d, + 0xffff, 0x0089, 0x0090, 0x0098, 0x009d, 0x0069, 0x00a3, 0x00a8, + 0x00ad, 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0002, 0x00d8, 0x0102, + // Entry 7840 - 787F + 0x0005, 0x00de, 0x00e7, 0x00f9, 0x0000, 0x00f0, 0x0007, 0x000d, + 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, + 0x0000, 0x21cc, 0x21e5, 0x21e7, 0x21d0, 0x21e9, 0x21e5, 0x21d0, + 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, + 0x00f1, 0x0007, 0x000d, 0x00f5, 0x00fe, 0x010a, 0x0111, 0x0119, + 0x0123, 0x0129, 0x0005, 0x0108, 0x0111, 0x0123, 0x0000, 0x011a, + 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, + 0x00f1, 0x0007, 0x0000, 0x1f96, 0x21ec, 0x2010, 0x2002, 0x21ee, + // Entry 7880 - 78BF + 0x21ec, 0x2002, 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, + 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x000d, 0x00f5, 0x00fe, 0x010a, + 0x0111, 0x0119, 0x0123, 0x0129, 0x0002, 0x012f, 0x0148, 0x0003, + 0x0133, 0x013a, 0x0141, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, + 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, + 0x0139, 0x0005, 0x000d, 0xffff, 0x013c, 0x0149, 0x0157, 0x0166, + 0x0003, 0x014c, 0x0153, 0x015a, 0x0005, 0x0000, 0xffff, 0x1f17, + 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, + // Entry 78C0 - 78FF + 0x0136, 0x0139, 0x0005, 0x000d, 0xffff, 0x013c, 0x0149, 0x0157, + 0x0166, 0x0002, 0x0164, 0x01cb, 0x0003, 0x0168, 0x0189, 0x01aa, + 0x0008, 0x0174, 0x017a, 0x0171, 0x017d, 0x0180, 0x0183, 0x0186, + 0x0177, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, 0x0001, + 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x0197, + 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, 0x000d, + 0x01b4, 0x0008, 0x0195, 0x019b, 0x0192, 0x019e, 0x01a1, 0x01a4, + 0x01a7, 0x0198, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, + // Entry 7900 - 793F + 0x0001, 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, + 0x0197, 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, + 0x000d, 0x01b4, 0x0008, 0x01b6, 0x01bc, 0x01b3, 0x01bf, 0x01c2, + 0x01c5, 0x01c8, 0x01b9, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, + 0x017e, 0x0001, 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, + 0x000d, 0x0197, 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, + 0x0001, 0x000d, 0x01b4, 0x0003, 0x01cf, 0x01f0, 0x0211, 0x0008, + 0x01db, 0x01e1, 0x01d8, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01de, + // Entry 7940 - 797F + 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, 0x0001, 0x000d, + 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x0197, 0x0001, + 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, 0x000d, 0x01b4, + 0x0008, 0x01fc, 0x0202, 0x01f9, 0x0205, 0x0208, 0x020b, 0x020e, + 0x01ff, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, 0x0001, + 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x0197, + 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, 0x000d, + 0x01b4, 0x0008, 0x021d, 0x0223, 0x021a, 0x0226, 0x0229, 0x022c, + // Entry 7980 - 79BF + 0x022f, 0x0220, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, + 0x0001, 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, + 0x0197, 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, + 0x000d, 0x01b4, 0x0003, 0x023c, 0x0242, 0x0236, 0x0001, 0x0238, + 0x0002, 0x000d, 0x01bd, 0x01cc, 0x0001, 0x023e, 0x0002, 0x000d, + 0x01d5, 0x01de, 0x0001, 0x0244, 0x0002, 0x000d, 0x01e4, 0x01ec, + 0x0004, 0x0256, 0x0250, 0x024d, 0x0253, 0x0001, 0x000d, 0x01ef, + 0x0001, 0x000d, 0x0200, 0x0001, 0x000d, 0x020b, 0x0001, 0x000d, + // Entry 79C0 - 79FF + 0x0216, 0x0004, 0x0267, 0x0261, 0x025e, 0x0264, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x0278, 0x0272, 0x026f, 0x0275, 0x0001, + 0x000d, 0x004d, 0x0001, 0x000d, 0x004d, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0281, 0x0001, 0x0283, 0x0001, 0x0285, 0x0001, 0x0000, 0x04ef, + 0x0008, 0x0291, 0x0000, 0x0000, 0x0000, 0x02b5, 0x02bc, 0x0000, + 0x9006, 0x0001, 0x0293, 0x0003, 0x0297, 0x0000, 0x02a6, 0x000d, + // Entry 7A00 - 7A3F + 0x000d, 0xffff, 0x021e, 0x0223, 0x0228, 0x022f, 0x0237, 0x0240, + 0x024a, 0x0251, 0x0256, 0x025b, 0x0260, 0x0267, 0x000d, 0x000d, + 0xffff, 0x026e, 0x0276, 0x027c, 0x0285, 0x028f, 0x029a, 0x02a6, + 0x02ae, 0x02b7, 0x02bf, 0x02c6, 0x02cf, 0x0001, 0x02b7, 0x0001, + 0x02b9, 0x0001, 0x0000, 0x06c8, 0x0004, 0x02ca, 0x02c4, 0x02c1, + 0x02c7, 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, 0x0001, + 0x000d, 0x0033, 0x0001, 0x000d, 0x0033, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0008, 0x0000, + // Entry 7A40 - 7A7F + 0x0000, 0x0000, 0x0000, 0x02df, 0x0000, 0x0000, 0x9006, 0x0001, + 0x02e1, 0x0001, 0x02e3, 0x0002, 0x000d, 0x02da, 0x02e7, 0x0040, + 0x0328, 0x0000, 0x0000, 0x032d, 0x034a, 0x0362, 0x037a, 0x0397, + 0x03af, 0x03c7, 0x03e4, 0x03fc, 0x0414, 0x0435, 0x0451, 0x0000, + 0x0000, 0x0000, 0x046d, 0x048c, 0x04a4, 0x0000, 0x0000, 0x0000, + 0x04bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04c1, 0x04db, + 0x04f5, 0x050f, 0x0529, 0x0543, 0x055d, 0x0577, 0x0591, 0x05ab, + 0x05c5, 0x05df, 0x05f9, 0x0613, 0x062d, 0x0647, 0x0661, 0x067b, + // Entry 7A80 - 7ABF + 0x0695, 0x06af, 0x06c9, 0x0000, 0x06e3, 0x0000, 0x06e8, 0x0704, + 0x071c, 0x0734, 0x0750, 0x0768, 0x0780, 0x079c, 0x07b4, 0x07cc, + 0x0001, 0x032a, 0x0001, 0x0001, 0x0040, 0x0003, 0x0331, 0x0334, + 0x0339, 0x0001, 0x000d, 0x02ee, 0x0003, 0x000d, 0x02f5, 0x0304, + 0x030f, 0x0002, 0x033c, 0x0343, 0x0005, 0x000d, 0x033c, 0x0320, + 0xffff, 0xffff, 0x032e, 0x0005, 0x000d, 0x036c, 0x034a, 0xffff, + 0xffff, 0x035b, 0x0003, 0x034e, 0x0000, 0x0351, 0x0001, 0x000d, + 0x037d, 0x0002, 0x0354, 0x035b, 0x0005, 0x000d, 0x0382, 0x0382, + // Entry 7AC0 - 7AFF + 0xffff, 0xffff, 0x0382, 0x0005, 0x000d, 0x038e, 0x038e, 0xffff, + 0xffff, 0x038e, 0x0003, 0x0366, 0x0000, 0x0369, 0x0001, 0x000d, + 0x039d, 0x0002, 0x036c, 0x0373, 0x0005, 0x000d, 0x03a0, 0x03a0, + 0xffff, 0xffff, 0x03a0, 0x0005, 0x000d, 0x03aa, 0x03aa, 0xffff, + 0xffff, 0x03aa, 0x0003, 0x037e, 0x0381, 0x0386, 0x0001, 0x000d, + 0x03b7, 0x0003, 0x000d, 0x03bf, 0x03d2, 0x03df, 0x0002, 0x0389, + 0x0390, 0x0005, 0x000d, 0x0400, 0x03f1, 0xffff, 0xffff, 0x0400, + 0x0005, 0x000d, 0x0435, 0x0410, 0xffff, 0xffff, 0x0422, 0x0003, + // Entry 7B00 - 7B3F + 0x039b, 0x0000, 0x039e, 0x0001, 0x000d, 0x043e, 0x0002, 0x03a1, + 0x03a8, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, 0x0442, + 0x0005, 0x000d, 0x044d, 0x044d, 0xffff, 0xffff, 0x044d, 0x0003, + 0x03b3, 0x0000, 0x03b6, 0x0001, 0x000d, 0x043e, 0x0002, 0x03b9, + 0x03c0, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, 0x0442, + 0x0005, 0x000d, 0x044d, 0x044d, 0xffff, 0xffff, 0x044d, 0x0003, + 0x03cb, 0x03ce, 0x03d3, 0x0001, 0x000d, 0x045b, 0x0003, 0x000d, + 0x0462, 0x0471, 0x047d, 0x0002, 0x03d6, 0x03dd, 0x0005, 0x000d, + // Entry 7B40 - 7B7F + 0x04ab, 0x048e, 0xffff, 0xffff, 0x049c, 0x0005, 0x000d, 0x04dd, + 0x04ba, 0xffff, 0xffff, 0x04cb, 0x0003, 0x03e8, 0x0000, 0x03eb, + 0x0001, 0x000d, 0x04ef, 0x0002, 0x03ee, 0x03f5, 0x0005, 0x000d, + 0x04f3, 0x04f3, 0xffff, 0xffff, 0x04f3, 0x0005, 0x000d, 0x04fe, + 0x04fe, 0xffff, 0xffff, 0x04fe, 0x0003, 0x0400, 0x0000, 0x0403, + 0x0001, 0x000d, 0x04ef, 0x0002, 0x0406, 0x040d, 0x0005, 0x000d, + 0x04f3, 0x04f3, 0xffff, 0xffff, 0x04f3, 0x0005, 0x000d, 0x04fe, + 0x04fe, 0xffff, 0xffff, 0x04fe, 0x0004, 0x0419, 0x041c, 0x0421, + // Entry 7B80 - 7BBF + 0x0432, 0x0001, 0x000d, 0x050c, 0x0003, 0x000d, 0x0514, 0x0524, + 0x0530, 0x0002, 0x0424, 0x042b, 0x0005, 0x000d, 0x0560, 0x0542, + 0xffff, 0xffff, 0x0551, 0x0005, 0x000d, 0x0593, 0x056f, 0xffff, + 0xffff, 0x0581, 0x0001, 0x000d, 0x05a5, 0x0004, 0x043a, 0x0000, + 0x043d, 0x044e, 0x0001, 0x000d, 0x05b4, 0x0002, 0x0440, 0x0447, + 0x0005, 0x000d, 0x05b9, 0x05b9, 0xffff, 0xffff, 0x05b9, 0x0005, + 0x000d, 0x05c5, 0x05c5, 0xffff, 0xffff, 0x05c5, 0x0001, 0x000d, + 0x05a5, 0x0004, 0x0456, 0x0000, 0x0459, 0x046a, 0x0001, 0x000d, + // Entry 7BC0 - 7BFF + 0x05b4, 0x0002, 0x045c, 0x0463, 0x0005, 0x000d, 0x05b9, 0x05b9, + 0xffff, 0xffff, 0x05b9, 0x0005, 0x000d, 0x05c5, 0x05c5, 0xffff, + 0xffff, 0x05c5, 0x0001, 0x000d, 0x05a5, 0x0003, 0x0471, 0x0474, + 0x047b, 0x0001, 0x000d, 0x05d4, 0x0005, 0x000d, 0x05e3, 0x05ea, + 0x05f0, 0x05d8, 0x05f6, 0x0002, 0x047e, 0x0485, 0x0005, 0x000d, + 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x000d, 0x0626, + 0x0618, 0xffff, 0xffff, 0x0626, 0x0003, 0x0490, 0x0000, 0x0493, + 0x0001, 0x000d, 0x05d4, 0x0002, 0x0496, 0x049d, 0x0005, 0x000d, + // Entry 7C00 - 7C3F + 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x000d, 0x063f, + 0x063f, 0xffff, 0xffff, 0x063f, 0x0003, 0x04a8, 0x0000, 0x04ab, + 0x0001, 0x000d, 0x05d4, 0x0002, 0x04ae, 0x04b5, 0x0005, 0x000d, + 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x000d, 0x063f, + 0x063f, 0xffff, 0xffff, 0x063f, 0x0001, 0x04be, 0x0001, 0x000d, + 0x064c, 0x0003, 0x0000, 0x04c5, 0x04ca, 0x0003, 0x000d, 0x065a, + 0x066b, 0x0678, 0x0002, 0x04cd, 0x04d4, 0x0005, 0x000d, 0x06ab, + 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, 0x06e1, 0x06bb, + // Entry 7C40 - 7C7F + 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, 0x04df, 0x04e4, 0x0003, + 0x000d, 0x06f4, 0x0701, 0x070a, 0x0002, 0x04e7, 0x04ee, 0x0005, + 0x000d, 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, + 0x06e1, 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, 0x04f9, + 0x04fe, 0x0003, 0x000d, 0x06f4, 0x0701, 0x070a, 0x0002, 0x0501, + 0x0508, 0x0005, 0x000d, 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, + 0x0005, 0x000d, 0x06e1, 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, + 0x0000, 0x0513, 0x0518, 0x0003, 0x000d, 0x0719, 0x072d, 0x073e, + // Entry 7C80 - 7CBF + 0x0002, 0x051b, 0x0522, 0x0005, 0x000d, 0x077a, 0x0754, 0xffff, + 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, 0xffff, 0xffff, + 0x07a4, 0x0003, 0x0000, 0x052d, 0x0532, 0x0003, 0x000d, 0x07d1, + 0x07de, 0x07e8, 0x0002, 0x0535, 0x053c, 0x0005, 0x000d, 0x077a, + 0x0754, 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, + 0xffff, 0xffff, 0x07a4, 0x0003, 0x0000, 0x0547, 0x054c, 0x0003, + 0x000d, 0x07d1, 0x07de, 0x07e8, 0x0002, 0x054f, 0x0556, 0x0005, + 0x000d, 0x077a, 0x0754, 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, + // Entry 7CC0 - 7CFF + 0x07ba, 0x078e, 0xffff, 0xffff, 0x07a4, 0x0003, 0x0000, 0x0561, + 0x0566, 0x0003, 0x000d, 0x07f6, 0x0805, 0x0811, 0x0002, 0x0569, + 0x0570, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, 0x0830, + 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, 0x085e, 0x0003, + 0x0000, 0x057b, 0x0580, 0x0003, 0x000d, 0x0881, 0x088e, 0x0898, + 0x0002, 0x0583, 0x058a, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, + 0xffff, 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, + 0x085e, 0x0003, 0x0000, 0x0595, 0x059a, 0x0003, 0x000d, 0x0881, + // Entry 7D00 - 7D3F + 0x088e, 0x0898, 0x0002, 0x059d, 0x05a4, 0x0005, 0x000d, 0x083e, + 0x0822, 0xffff, 0xffff, 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, + 0xffff, 0xffff, 0x085e, 0x0003, 0x0000, 0x05af, 0x05b4, 0x0003, + 0x000d, 0x08a7, 0x08b7, 0x08c3, 0x0002, 0x05b7, 0x05be, 0x0005, + 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, 0x0005, 0x000d, + 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, 0x0000, 0x05c9, + 0x05ce, 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, 0x0002, 0x05d1, + 0x05d8, 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, + // Entry 7D40 - 7D7F + 0x0005, 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, + 0x0000, 0x05e3, 0x05e8, 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, + 0x0002, 0x05eb, 0x05f2, 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, + 0xffff, 0x08e4, 0x0005, 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, + 0x0914, 0x0003, 0x0000, 0x05fd, 0x0602, 0x0003, 0x000d, 0x095d, + 0x096f, 0x097e, 0x0002, 0x0605, 0x060c, 0x0005, 0x000d, 0x09b4, + 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, 0x09ee, 0x09c6, + 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, 0x0617, 0x061c, 0x0003, + // Entry 7D80 - 7DBF + 0x000d, 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x061f, 0x0626, 0x0005, + 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, + 0x09ee, 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, 0x0631, + 0x0636, 0x0003, 0x000d, 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x0639, + 0x0640, 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, + 0x0005, 0x000d, 0x09ee, 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, + 0x0000, 0x064b, 0x0650, 0x0003, 0x000d, 0x0a2c, 0x0a3a, 0x0a45, + 0x0002, 0x0653, 0x065a, 0x0005, 0x000d, 0x0a6f, 0x0a55, 0xffff, + // Entry 7DC0 - 7DFF + 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, 0xffff, 0xffff, + 0x0a8d, 0x0003, 0x0000, 0x0665, 0x066a, 0x0003, 0x000d, 0x0aae, + 0x0abb, 0x0ac5, 0x0002, 0x066d, 0x0674, 0x0005, 0x000d, 0x0a6f, + 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, + 0xffff, 0xffff, 0x0a8d, 0x0003, 0x0000, 0x067f, 0x0684, 0x0003, + 0x000d, 0x0aae, 0x0abb, 0x0ac5, 0x0002, 0x0687, 0x068e, 0x0005, + 0x000d, 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, + 0x0a9d, 0x0a7d, 0xffff, 0xffff, 0x0a8d, 0x0003, 0x0000, 0x0699, + // Entry 7E00 - 7E3F + 0x069e, 0x0003, 0x000d, 0x0ad4, 0x0ae3, 0x0aee, 0x0002, 0x06a1, + 0x06a8, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, 0x0b0d, + 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, 0x0b3a, 0x0003, + 0x0000, 0x06b3, 0x06b8, 0x0003, 0x000d, 0x0b5c, 0x0b69, 0x0b72, + 0x0002, 0x06bb, 0x06c2, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, + 0xffff, 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, + 0x0b3a, 0x0003, 0x0000, 0x06cd, 0x06d2, 0x0003, 0x000d, 0x0b5c, + 0x0b69, 0x0b72, 0x0002, 0x06d5, 0x06dc, 0x0005, 0x000d, 0x0b1b, + // Entry 7E40 - 7E7F + 0x0aff, 0xffff, 0xffff, 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, + 0xffff, 0xffff, 0x0b3a, 0x0001, 0x06e5, 0x0001, 0x000d, 0x0b81, + 0x0003, 0x06ec, 0x06ef, 0x06f3, 0x0001, 0x000d, 0x0b99, 0x0002, + 0x000d, 0xffff, 0x0b9d, 0x0002, 0x06f6, 0x06fd, 0x0005, 0x000d, + 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, + 0x0bc9, 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0708, 0x0000, 0x070b, + 0x0001, 0x0000, 0x2143, 0x0002, 0x070e, 0x0715, 0x0005, 0x000d, + 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, + // Entry 7E80 - 7EBF + 0x0bc9, 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0720, 0x0000, 0x0723, + 0x0001, 0x0000, 0x2143, 0x0002, 0x0726, 0x072d, 0x0005, 0x000d, + 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, + 0x0bc9, 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0738, 0x073b, 0x073f, + 0x0001, 0x000d, 0x0bf5, 0x0002, 0x000d, 0xffff, 0x0bfc, 0x0002, + 0x0742, 0x0749, 0x0005, 0x000d, 0x0c23, 0x0c07, 0xffff, 0xffff, + 0x0c15, 0x0005, 0x000d, 0x0c53, 0x0c31, 0xffff, 0xffff, 0x0c42, + 0x0003, 0x0754, 0x0000, 0x0757, 0x0001, 0x0001, 0x075a, 0x0002, + // Entry 7EC0 - 7EFF + 0x075a, 0x0761, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0xffff, + 0x0c64, 0x0005, 0x000d, 0x0c70, 0x0c70, 0xffff, 0xffff, 0x0c70, + 0x0003, 0x076c, 0x0000, 0x076f, 0x0001, 0x0001, 0x075a, 0x0002, + 0x0772, 0x0779, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0xffff, + 0x0c64, 0x0005, 0x000d, 0x0c70, 0x0c70, 0xffff, 0xffff, 0x0c70, + 0x0003, 0x0784, 0x0787, 0x078b, 0x0001, 0x000d, 0x0c7f, 0x0002, + 0x000d, 0xffff, 0x0c87, 0x0002, 0x078e, 0x0795, 0x0005, 0x000d, + 0x0caa, 0x0c8c, 0xffff, 0xffff, 0x0c9b, 0x0005, 0x000d, 0x0cdd, + // Entry 7F00 - 7F3F + 0x0cb9, 0xffff, 0xffff, 0x0ccb, 0x0003, 0x07a0, 0x0000, 0x07a3, + 0x0001, 0x0001, 0x07d3, 0x0002, 0x07a6, 0x07ad, 0x0005, 0x000d, + 0x0cef, 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0005, 0x000d, 0x0cfb, + 0x0cfb, 0xffff, 0xffff, 0x0cfb, 0x0003, 0x07b8, 0x0000, 0x07bb, + 0x0001, 0x0000, 0x2002, 0x0002, 0x07be, 0x07c5, 0x0005, 0x000d, + 0x0cef, 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0005, 0x000d, 0x0cfb, + 0x0cfb, 0xffff, 0xffff, 0x0cfb, 0x0001, 0x07ce, 0x0001, 0x000d, + 0x0d0a, 0x0004, 0x07d6, 0x07db, 0x07e0, 0x07eb, 0x0003, 0x000d, + // Entry 7F40 - 7F7F + 0x0d19, 0x0d28, 0x0d30, 0x0003, 0x0000, 0x1de0, 0x21f1, 0x2205, + 0x0002, 0x0000, 0x07e3, 0x0002, 0x0000, 0x07e6, 0x0003, 0x000d, + 0xffff, 0x0d34, 0x0d4d, 0x0002, 0x09d2, 0x07ee, 0x0003, 0x07f2, + 0x0932, 0x0892, 0x009e, 0x000d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0e11, 0x0e6b, 0x0eff, 0x0f47, 0x0fc5, 0x1040, 0x10be, 0x113f, + 0x1185, 0x1256, 0x129e, 0x12ec, 0x134f, 0x1394, 0x1412, 0x147e, + 0x1503, 0x156c, 0x15d2, 0x162c, 0x166e, 0xffff, 0xffff, 0x16e3, + 0xffff, 0x1743, 0xffff, 0x17ae, 0x17f6, 0x1841, 0x1883, 0xffff, + // Entry 7F80 - 7FBF + 0xffff, 0x190e, 0x195c, 0x19c6, 0xffff, 0xffff, 0xffff, 0x1a5d, + 0xffff, 0x1ad0, 0x1b30, 0xffff, 0x1bac, 0x1c06, 0x1c54, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1d1a, 0xffff, 0xffff, 0x1d94, 0x1dfa, + 0xffff, 0xffff, 0x1ea1, 0x1f0a, 0x1f58, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x203d, 0x207f, 0x20c4, 0x210c, 0x2151, + 0xffff, 0xffff, 0x2206, 0xffff, 0x2264, 0xffff, 0xffff, 0x22ef, + 0xffff, 0x23af, 0xffff, 0xffff, 0xffff, 0xffff, 0x245a, 0xffff, + 0x24bf, 0x2534, 0x259d, 0x25ee, 0xffff, 0xffff, 0xffff, 0x2673, + // Entry 7FC0 - 7FFF + 0x26d0, 0x2724, 0xffff, 0xffff, 0x27a8, 0x284c, 0x289d, 0x28d9, + 0xffff, 0xffff, 0x295e, 0x29ac, 0x29f4, 0xffff, 0x2a5a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2ba3, 0x2bee, 0x2c34, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d27, 0xffff, + 0xffff, 0x2da1, 0xffff, 0x2df9, 0xffff, 0x2e67, 0x2eb2, 0x2f06, + 0xffff, 0x2f6d, 0x2fc4, 0xffff, 0xffff, 0xffff, 0x3066, 0x30ab, + 0xffff, 0xffff, 0x0d66, 0x0eb9, 0x11c7, 0x120d, 0xffff, 0xffff, + 0x2352, 0x2b29, 0x009e, 0x000d, 0x0da6, 0x0dbc, 0x0dd6, 0x0def, + // Entry 8000 - 803F + 0x0e29, 0x0e7f, 0x0f11, 0x0f6b, 0x0fe8, 0x1064, 0x10e3, 0x114c, + 0x1195, 0x1268, 0x12b2, 0x1307, 0x1360, 0x13b8, 0x1430, 0x14a5, + 0x1520, 0x1588, 0x15ea, 0x163c, 0x1683, 0x16bf, 0x16d0, 0x16f7, + 0x1731, 0x1757, 0x1791, 0x17c0, 0x1809, 0x1851, 0x1899, 0x18d7, + 0x18f4, 0x1922, 0x1978, 0x19d7, 0x1a0b, 0x1a21, 0x1a44, 0x1a77, + 0x1abd, 0x1aea, 0x1b49, 0x1b8d, 0x1bc4, 0x1c1a, 0x1c68, 0x1ca1, + 0x1cbc, 0x1cf2, 0x1d06, 0x1d2c, 0x1d62, 0x1d82, 0x1db0, 0x1e15, + 0x1e73, 0x1e8f, 0x1ebe, 0x1f1e, 0x1f68, 0x1f9a, 0x1fb6, 0x1fd2, + // Entry 8040 - 807F + 0x1fe6, 0x2004, 0x2021, 0x204d, 0x2090, 0x20d6, 0x211d, 0x2170, + 0x21cd, 0x21ea, 0x2217, 0x224b, 0x2279, 0x22b5, 0x22d6, 0x230a, + 0x2395, 0x23c2, 0x23fa, 0x240d, 0x241f, 0x243a, 0x246e, 0x24a8, + 0x24e0, 0x2551, 0x25b2, 0x2600, 0x2636, 0x264a, 0x2662, 0x268c, + 0x26e6, 0x273c, 0x277e, 0x2795, 0x27ce, 0x2861, 0x28ab, 0x28ed, + 0x2927, 0x293f, 0x2972, 0x29be, 0x2a07, 0x2a3f, 0x2a81, 0x2ae1, + 0x2afb, 0x2b14, 0x2b78, 0x2b8b, 0x2bb6, 0x2bfb, 0x2c46, 0x2c7c, + 0x2c8f, 0x2cae, 0x2cce, 0x2cea, 0x2cfd, 0x2d13, 0x2d39, 0x2d6f, + // Entry 8080 - 80BF + 0x2d87, 0x2db3, 0x2de9, 0x2e11, 0x2e53, 0x2e7a, 0x2ec8, 0x2f1b, + 0x2f57, 0x2f84, 0x2fd9, 0x3015, 0x302c, 0x3043, 0x3077, 0x30c4, + 0x1e5d, 0x282c, 0x0d71, 0x0ec6, 0x11d4, 0x121b, 0xffff, 0x22ca, + 0x235e, 0x2b39, 0x009e, 0x000d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0e4c, 0x0e9e, 0x0f2e, 0x0f9a, 0x1016, 0x1093, 0x1113, 0x1164, + 0x11b0, 0x1285, 0x12d1, 0x132d, 0x137c, 0x13e7, 0x1459, 0x14d6, + 0x1548, 0x15af, 0x160d, 0x1657, 0x16a3, 0xffff, 0xffff, 0x1716, + 0xffff, 0x1776, 0xffff, 0x17dd, 0x1827, 0x186c, 0x18ba, 0xffff, + // Entry 80C0 - 80FF + 0xffff, 0x1941, 0x199f, 0x19f3, 0xffff, 0xffff, 0xffff, 0x1a9c, + 0xffff, 0x1b0f, 0x1b6d, 0xffff, 0x1be7, 0x1c39, 0x1c87, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1d49, 0xffff, 0xffff, 0x1dd7, 0x1e3b, + 0xffff, 0xffff, 0x1ee6, 0x1f3d, 0x1f83, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2068, 0x20ac, 0x20f3, 0x2139, 0x219a, + 0xffff, 0xffff, 0x2233, 0xffff, 0x2299, 0xffff, 0xffff, 0x2330, + 0xffff, 0x23e0, 0xffff, 0xffff, 0xffff, 0xffff, 0x248d, 0xffff, + 0x250c, 0x2579, 0x25d2, 0x261d, 0xffff, 0xffff, 0xffff, 0x26b0, + // Entry 8100 - 813F + 0x2707, 0x275f, 0xffff, 0xffff, 0x27ff, 0x2881, 0x28c4, 0x290c, + 0xffff, 0xffff, 0x2991, 0x29db, 0x2a25, 0xffff, 0x2ab3, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2bd4, 0x2c13, 0x2c63, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d56, 0xffff, + 0xffff, 0x2dd0, 0xffff, 0x2e34, 0xffff, 0x2e98, 0x2ee9, 0x2f3b, + 0xffff, 0x2fa6, 0x2ff9, 0xffff, 0xffff, 0xffff, 0x3093, 0x30e8, + 0xffff, 0xffff, 0x0d87, 0x0ede, 0x11ec, 0x1234, 0xffff, 0xffff, + 0x2375, 0x2b54, 0x0003, 0x09d6, 0x0a45, 0x0a09, 0x0031, 0x0006, + // Entry 8140 - 817F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, + 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 8180 - 81BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2761, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 81C0 - 81FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, + 0x0003, 0x0004, 0x0316, 0x0429, 0x0012, 0x0017, 0x0000, 0x0024, + 0x0000, 0x003c, 0x0000, 0x0054, 0x006e, 0x0149, 0x0161, 0x0183, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01dc, 0x02e6, 0x0308, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, + // Entry 8200 - 823F + 0x0021, 0x0001, 0x000e, 0x0000, 0x0001, 0x0026, 0x0001, 0x0028, + 0x0003, 0x0000, 0x0000, 0x002c, 0x000e, 0x000e, 0xffff, 0x0005, + 0x000e, 0x0017, 0x0022, 0x002d, 0x0036, 0x0041, 0x0052, 0x0063, + 0x0070, 0x007b, 0x0084, 0x008f, 0x0001, 0x003e, 0x0001, 0x0040, + 0x0003, 0x0000, 0x0000, 0x0044, 0x000e, 0x000e, 0xffff, 0x0098, + 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x00d5, 0x00e4, 0x00f3, 0x0100, + 0x010d, 0x0116, 0x0121, 0x012e, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x005d, 0x0000, 0x0000, 0x0004, 0x006b, 0x0065, + // Entry 8240 - 827F + 0x0062, 0x0068, 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, + 0x0001, 0x000d, 0x0033, 0x0001, 0x000e, 0x013d, 0x0008, 0x0077, + 0x00ae, 0x00d3, 0x00f9, 0x0111, 0x0127, 0x0138, 0x0000, 0x0002, + 0x007a, 0x009c, 0x0003, 0x007e, 0x0000, 0x008d, 0x000d, 0x0008, + 0xffff, 0x0000, 0x4eb3, 0x000e, 0x4eba, 0x4ec1, 0x4ec8, 0x4ecf, + 0x4ed6, 0x4edd, 0x4ee4, 0x4eeb, 0x4ef2, 0x000d, 0x000e, 0xffff, + 0x014a, 0x0157, 0x0166, 0x016f, 0x017a, 0x0181, 0x018a, 0x0193, + 0x01a0, 0x01b3, 0x01c2, 0x01d3, 0x0002, 0x0000, 0x009f, 0x000d, + // Entry 8280 - 82BF + 0x000e, 0xffff, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01ea, 0x01e4, + 0x01e4, 0x01ed, 0x01f0, 0x01f3, 0x01f6, 0x01f9, 0x0002, 0x00b1, + 0x00c7, 0x0003, 0x00b5, 0x0000, 0x00be, 0x0007, 0x000e, 0x01fc, + 0x0203, 0x020a, 0x0211, 0x0218, 0x021f, 0x0226, 0x0007, 0x000e, + 0x022d, 0x023a, 0x024d, 0x025a, 0x0269, 0x027a, 0x0285, 0x0002, + 0x0000, 0x00ca, 0x0007, 0x000e, 0x01f6, 0x0292, 0x0295, 0x01f0, + 0x0298, 0x0292, 0x01f0, 0x0002, 0x00d6, 0x00ef, 0x0003, 0x00da, + 0x00e1, 0x00e8, 0x0005, 0x000e, 0xffff, 0x029b, 0x029f, 0x02a3, + // Entry 82C0 - 82FF + 0x02a7, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, + 0x0005, 0x000e, 0xffff, 0x02ab, 0x02c9, 0x02e9, 0x0309, 0x0002, + 0x0000, 0x00f2, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, + 0x0139, 0x0001, 0x00fb, 0x0003, 0x00ff, 0x0000, 0x0108, 0x0002, + 0x0102, 0x0105, 0x0001, 0x000e, 0x032d, 0x0001, 0x000e, 0x033f, + 0x0002, 0x010b, 0x010e, 0x0001, 0x000e, 0x032d, 0x0001, 0x000e, + 0x033f, 0x0003, 0x011b, 0x0121, 0x0115, 0x0001, 0x0117, 0x0002, + 0x000e, 0x034e, 0x0365, 0x0001, 0x011d, 0x0002, 0x000e, 0x0375, + // Entry 8300 - 833F + 0x0381, 0x0001, 0x0123, 0x0002, 0x000e, 0x0389, 0x0393, 0x0004, + 0x0135, 0x012f, 0x012c, 0x0132, 0x0001, 0x000e, 0x039a, 0x0001, + 0x000e, 0x03ac, 0x0001, 0x000e, 0x03b8, 0x0001, 0x000d, 0x0216, + 0x0004, 0x0146, 0x0140, 0x013d, 0x0143, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0001, 0x014b, 0x0001, 0x014d, 0x0003, 0x0000, 0x0000, + 0x0151, 0x000e, 0x000e, 0x0410, 0x03c1, 0x03cc, 0x03d9, 0x03e6, + 0x03f1, 0x03fc, 0x0407, 0x041c, 0x0427, 0x0430, 0x043b, 0x0446, + // Entry 8340 - 837F + 0x044b, 0x0005, 0x0167, 0x0000, 0x0000, 0x0000, 0x017c, 0x0001, + 0x0169, 0x0003, 0x0000, 0x0000, 0x016d, 0x000d, 0x000e, 0xffff, + 0x0454, 0x0461, 0x0470, 0x047f, 0x048a, 0x0499, 0x04a4, 0x04b1, + 0x04c0, 0x04d1, 0x04dc, 0x04e5, 0x0001, 0x017e, 0x0001, 0x0180, + 0x0001, 0x000e, 0x04f4, 0x0008, 0x018c, 0x0000, 0x0000, 0x0000, + 0x01c4, 0x01cb, 0x0000, 0x9006, 0x0002, 0x018f, 0x01b1, 0x0003, + 0x0193, 0x0000, 0x01a2, 0x000d, 0x000e, 0xffff, 0x04fd, 0x0505, + 0x050d, 0x0517, 0x0521, 0x052b, 0x0535, 0x053d, 0x0543, 0x054b, + // Entry 8380 - 83BF + 0x0551, 0x055c, 0x000d, 0x000e, 0xffff, 0x0567, 0x0576, 0x0581, + 0x058e, 0x059c, 0x05ab, 0x05bb, 0x05c6, 0x05d3, 0x05e2, 0x05ed, + 0x0601, 0x0003, 0x0000, 0x0000, 0x01b5, 0x000d, 0x000e, 0xffff, + 0x0613, 0x0622, 0x062d, 0x0638, 0x0643, 0x0652, 0x0661, 0x05c6, + 0x066c, 0x067b, 0x0686, 0x0696, 0x0001, 0x01c6, 0x0001, 0x01c8, + 0x0001, 0x000e, 0x06a6, 0x0004, 0x01d9, 0x01d3, 0x01d0, 0x01d6, + 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, 0x0001, 0x000d, + 0x0033, 0x0001, 0x000d, 0x0033, 0x0006, 0x0000, 0x0000, 0x0000, + // Entry 83C0 - 83FF + 0x0000, 0x01e3, 0x02d5, 0x0001, 0x01e5, 0x0001, 0x01e7, 0x00ec, + 0x000e, 0x06ab, 0x06c2, 0x06db, 0x06f4, 0x0709, 0x0720, 0x0737, + 0x074c, 0x0763, 0x0778, 0x078f, 0x07a8, 0x07ca, 0x07ea, 0x080a, + 0x082a, 0x084a, 0x085f, 0x0873, 0x088e, 0x08a5, 0x08bc, 0x08d3, + 0x08e8, 0x08fd, 0x0912, 0x0929, 0x0940, 0x0957, 0x0970, 0x0985, + 0x099e, 0x09b5, 0x09ca, 0x09df, 0x09f6, 0x0a0f, 0x0a2c, 0x0a47, + 0x0a5a, 0x0a6f, 0x0a82, 0x0a9d, 0x0ab3, 0x0aca, 0x0ae3, 0x0afa, + 0x0b0f, 0x0b23, 0x0b38, 0x0b53, 0x0b6c, 0x0b82, 0x0b9b, 0x0bb2, + // Entry 8400 - 843F + 0x0bcb, 0x0be2, 0x0bf9, 0x0c12, 0x0c2f, 0x0c48, 0x0c65, 0x0c7c, + 0x0c95, 0x0cae, 0x0ccb, 0x0ce4, 0x0cfb, 0x0d18, 0x0d2f, 0x0d48, + 0x0d61, 0x0d78, 0x0d8f, 0x0daa, 0x0dc1, 0x0dd8, 0x0def, 0x0e08, + 0x0e20, 0x0e39, 0x0e51, 0x0e68, 0x0e81, 0x0e9a, 0x0eb3, 0x0ecc, + 0x0ee3, 0x0efa, 0x0f11, 0x0f28, 0x0f41, 0x0f5c, 0x0f75, 0x0f8e, + 0x0fa7, 0x0fc4, 0x0fd9, 0x0ff2, 0x100b, 0x1023, 0x1038, 0x104f, + 0x1068, 0x107f, 0x1096, 0x10ad, 0x10cc, 0x10e5, 0x1100, 0x1117, + 0x1130, 0x114b, 0x1163, 0x117c, 0x119b, 0x11b4, 0x11cd, 0x11e0, + // Entry 8440 - 847F + 0x11f9, 0x1214, 0x122d, 0x1246, 0x125d, 0x127a, 0x1299, 0x12b2, + 0x12d1, 0x12e5, 0x12fc, 0x1317, 0x132e, 0x1347, 0x1360, 0x1377, + 0x1390, 0x13a6, 0x13bd, 0x13d5, 0x13ee, 0x1405, 0x1418, 0x1431, + 0x1448, 0x1463, 0x147c, 0x1497, 0x14b0, 0x14c5, 0x14dc, 0x14f5, + 0x150c, 0x1527, 0x153e, 0x1559, 0x1576, 0x158f, 0x15a6, 0x15bf, + 0x15da, 0x15f3, 0x1610, 0x1627, 0x163e, 0x165b, 0x1672, 0x168b, + 0x16a8, 0x16c1, 0x16d4, 0x16f1, 0x1706, 0x171d, 0x1736, 0x1753, + 0x176b, 0x1786, 0x17a3, 0x17ba, 0x17d5, 0x17ee, 0x1807, 0x181e, + // Entry 8480 - 84BF + 0x1839, 0x1852, 0x186d, 0x1884, 0x189d, 0x18b4, 0x18cd, 0x18ea, + 0x1905, 0x191c, 0x1937, 0x1950, 0x1969, 0x1986, 0x199f, 0x19b8, + 0x19d0, 0x19e7, 0x1a00, 0x1a13, 0x1a32, 0x1a49, 0x1a64, 0x1a7b, + 0x1a94, 0x1aad, 0x1aca, 0x1ae1, 0x1afc, 0x1b15, 0x1b30, 0x1b49, + 0x1b62, 0x1b7a, 0x1b97, 0x1bb0, 0x1bc6, 0x1be1, 0x1bfc, 0x1c15, + 0x1c2e, 0x1c49, 0x1c62, 0x1c79, 0x1c90, 0x1ca9, 0x1cc1, 0x1cdc, + 0x1cf5, 0x1d0e, 0x1d19, 0x1d24, 0x1d2d, 0x0004, 0x02e3, 0x02dd, + 0x02da, 0x02e0, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, + // Entry 84C0 - 84FF + 0x0001, 0x000c, 0x001e, 0x0001, 0x000e, 0x1d3a, 0x0005, 0x02ec, + 0x0000, 0x0000, 0x0000, 0x0301, 0x0001, 0x02ee, 0x0003, 0x0000, + 0x0000, 0x02f2, 0x000d, 0x000e, 0xffff, 0x1d43, 0x1d56, 0x1d6b, + 0x1d78, 0x1d7f, 0x1d8c, 0x1d9d, 0x1da6, 0x1daf, 0x1db8, 0x1dbf, + 0x1dcc, 0x0001, 0x0303, 0x0001, 0x0305, 0x0001, 0x000e, 0x1dd9, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x030e, 0x0001, 0x0310, + 0x0001, 0x0312, 0x0002, 0x000e, 0x1dde, 0x1dea, 0x0040, 0x0357, + 0x0000, 0x0000, 0x035c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 8500 - 853F + 0x0379, 0x0000, 0x0000, 0x0396, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x03b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x03d7, 0x0000, 0x03dc, 0x0000, 0x0000, + 0x03f4, 0x0000, 0x0000, 0x040c, 0x0000, 0x0000, 0x0424, 0x0001, + 0x0359, 0x0001, 0x0009, 0x0877, 0x0003, 0x0360, 0x0363, 0x0368, + // Entry 8540 - 857F + 0x0001, 0x0009, 0x087e, 0x0003, 0x000e, 0x1def, 0x1e09, 0x1e1d, + 0x0002, 0x036b, 0x0372, 0x0005, 0x000e, 0x1e65, 0x1e39, 0xffff, + 0xffff, 0x1e4f, 0x0005, 0x000e, 0x1eab, 0x1e7b, 0xffff, 0xffff, + 0x1e93, 0x0003, 0x037d, 0x0380, 0x0385, 0x0001, 0x0009, 0x0b35, + 0x0003, 0x000e, 0x1ec3, 0x1edf, 0x1ef5, 0x0002, 0x0388, 0x038f, + 0x0005, 0x000e, 0x1f3d, 0x1f13, 0xffff, 0xffff, 0x1f27, 0x0005, + 0x000e, 0x1f81, 0x1f53, 0xffff, 0xffff, 0x1f69, 0x0003, 0x039a, + 0x039d, 0x03a2, 0x0001, 0x000e, 0x022d, 0x0003, 0x000e, 0x1f99, + // Entry 8580 - 85BF + 0x1fb3, 0x1fc7, 0x0002, 0x03a5, 0x03ac, 0x0005, 0x000e, 0x200f, + 0x1fe3, 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, 0x0030, 0x0000, + 0xffff, 0xffff, 0x0018, 0x0003, 0x03b7, 0x03ba, 0x03c1, 0x0001, + 0x000f, 0x0048, 0x0005, 0x000f, 0x0060, 0x0069, 0x0074, 0x004f, + 0x007f, 0x0002, 0x03c4, 0x03cb, 0x0005, 0x000f, 0x00a4, 0x0094, + 0xffff, 0xffff, 0x00a4, 0x0005, 0x000f, 0x00c8, 0x00b6, 0xffff, + 0xffff, 0x00c8, 0x0001, 0x03d4, 0x0001, 0x000f, 0x00dc, 0x0001, + 0x03d9, 0x0001, 0x000f, 0x00f3, 0x0003, 0x03e0, 0x0000, 0x03e3, + // Entry 85C0 - 85FF + 0x0001, 0x0009, 0x17ad, 0x0002, 0x03e6, 0x03ed, 0x0005, 0x000f, + 0x0136, 0x0114, 0xffff, 0xffff, 0x0124, 0x0005, 0x000f, 0x016e, + 0x0148, 0xffff, 0xffff, 0x015a, 0x0003, 0x03f8, 0x0000, 0x03fb, + 0x0001, 0x000f, 0x0182, 0x0002, 0x03fe, 0x0405, 0x0005, 0x000f, + 0x01a1, 0x018d, 0xffff, 0xffff, 0x01a1, 0x0005, 0x000f, 0x01cd, + 0x01b7, 0xffff, 0xffff, 0x01cd, 0x0003, 0x0410, 0x0000, 0x0413, + 0x0001, 0x000f, 0x01e5, 0x0002, 0x0416, 0x041d, 0x0005, 0x000f, + 0x0220, 0x01f2, 0xffff, 0xffff, 0x0208, 0x0005, 0x000f, 0x026a, + // Entry 8600 - 863F + 0x0238, 0xffff, 0xffff, 0x0250, 0x0001, 0x0426, 0x0001, 0x000f, + 0x0284, 0x0004, 0x042e, 0x0432, 0x0000, 0x0435, 0x0002, 0x0002, + 0x145b, 0x4c1f, 0x0001, 0x000f, 0x028d, 0x0002, 0x0000, 0x0438, + 0x0003, 0x043c, 0x057c, 0x04dc, 0x009e, 0x000f, 0xffff, 0xffff, + 0xffff, 0xffff, 0x03bd, 0x046d, 0x0552, 0x05cf, 0x065e, 0x06e1, + 0x0770, 0x07ff, 0xffff, 0x0982, 0x0a11, 0x0aa0, 0x0b5c, 0x0be5, + 0x0c6c, 0x0d46, 0x0e4d, 0x0f1b, 0x0fe9, 0x107e, 0x10f5, 0xffff, + 0xffff, 0x11b6, 0xffff, 0x1270, 0xffff, 0x1323, 0x139a, 0x140b, + // Entry 8640 - 867F + 0x1482, 0xffff, 0xffff, 0x156a, 0x15f9, 0x16a6, 0xffff, 0xffff, + 0xffff, 0x177a, 0xffff, 0x183e, 0x18eb, 0xffff, 0x199e, 0x1a51, + 0x1b13, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c2e, 0xffff, 0xffff, + 0x1cff, 0x1db5, 0xffff, 0xffff, 0x1ec4, 0x1f80, 0x200f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2197, 0x2208, 0x2285, + 0x2314, 0x239d, 0xffff, 0xffff, 0x24e7, 0xffff, 0x2582, 0xffff, + 0xffff, 0x267b, 0xffff, 0x2798, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2892, 0xffff, 0xffff, 0xffff, 0x293d, 0x29cf, 0xffff, 0xffff, + // Entry 8680 - 86BF + 0xffff, 0x2a94, 0x2b44, 0x2bdc, 0xffff, 0xffff, 0x2cb2, 0x2dad, + 0x2e48, 0x2eb9, 0xffff, 0xffff, 0x2f86, 0x300f, 0x3080, 0xffff, + 0x312e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32db, 0x335e, + 0x33db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3535, 0xffff, 0xffff, 0x35ea, 0xffff, 0x3675, 0xffff, 0x372e, + 0x37b1, 0x3846, 0xffff, 0x38e7, 0x3982, 0xffff, 0xffff, 0xffff, + 0x3a7d, 0x3b00, 0xffff, 0xffff, 0x02ab, 0x04d5, 0x087c, 0x08ff, + 0xffff, 0xffff, 0x2701, 0x321a, 0x009e, 0x000f, 0x031c, 0x0342, + // Entry 86C0 - 86FF + 0x036f, 0x0398, 0x03e6, 0x0485, 0x056a, 0x05ed, 0x0678, 0x06ff, + 0x078e, 0x0817, 0xffff, 0x09a0, 0x0a2f, 0x0acd, 0x0b78, 0x0c01, + 0x0ca3, 0x0d8c, 0x0e80, 0x0f4e, 0x1009, 0x1094, 0x1113, 0x1184, + 0x119a, 0x11d4, 0x1245, 0x1292, 0x130b, 0x1339, 0x13ae, 0x141f, + 0x14a0, 0x1511, 0x1538, 0x1588, 0x161e, 0x16ba, 0x1717, 0x172f, + 0x1755, 0x17a1, 0x1824, 0x1866, 0x1915, 0xffff, 0x19c8, 0x1a80, + 0x1b27, 0x1b84, 0x1bb1, 0x1bf4, 0x1c12, 0x1c48, 0x1cb1, 0x1cd8, + 0x1d2a, 0x1de0, 0x1e94, 0x1eaa, 0x1ef1, 0x1f9d, 0x2023, 0x2080, + // Entry 8700 - 873F + 0x20b1, 0x20de, 0x20fa, 0x2131, 0x2164, 0x21ab, 0x2220, 0x22a3, + 0x2330, 0x23d8, 0x2481, 0x24b4, 0x24ff, 0x256c, 0x25a4, 0x261d, + 0x265a, 0x2696, 0x2776, 0x27b2, 0x2819, 0x2835, 0x284f, 0x2867, + 0x28b2, 0x2927, 0xffff, 0xffff, 0x295c, 0x29e7, 0x2a4c, 0x2a68, + 0x2a7e, 0x2abd, 0x2b65, 0x2bfe, 0x2c77, 0x2c8b, 0x2ce0, 0x2dcf, + 0x2e5c, 0x2ed5, 0x2f42, 0x2f58, 0x2fa2, 0x3023, 0x309c, 0x3109, + 0x315b, 0x31e8, 0x3202, 0xffff, 0x32a9, 0x32c3, 0x32f5, 0x3376, + 0x33f1, 0x3452, 0x346c, 0x349d, 0x34ca, 0x34ef, 0x3509, 0x351d, + // Entry 8740 - 877F + 0x354d, 0x35b0, 0x35d0, 0x3600, 0x3661, 0x3699, 0x3716, 0x3748, + 0x37d1, 0x3860, 0x38c9, 0x3909, 0x39a0, 0x3a11, 0x3a29, 0x3a4a, + 0x3a97, 0x3b26, 0x1e6b, 0x2d71, 0x02bf, 0x04ed, 0x0896, 0x0919, + 0xffff, 0x263d, 0x2717, 0x3238, 0x009e, 0x000f, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0424, 0x04b2, 0x0597, 0x0620, 0x06a7, 0x0732, + 0x07c1, 0x0844, 0xffff, 0x09d3, 0x0a62, 0x0b0f, 0x0ba9, 0x0c32, + 0x0cef, 0x0de7, 0x0ec8, 0x0f96, 0x103e, 0x10bf, 0x1146, 0xffff, + 0xffff, 0x1207, 0xffff, 0x12c9, 0xffff, 0x1364, 0x13d7, 0x144e, + // Entry 8780 - 87BF + 0x14d3, 0xffff, 0xffff, 0x15bb, 0x1658, 0x16e3, 0xffff, 0xffff, + 0xffff, 0x17dd, 0xffff, 0x18a3, 0x1954, 0xffff, 0x1a07, 0x1ac4, + 0x1b50, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c77, 0xffff, 0xffff, + 0x1d6a, 0x1e20, 0xffff, 0xffff, 0x1f33, 0x1fcf, 0x204c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21d4, 0x224d, 0x22d6, + 0x2361, 0x2428, 0xffff, 0xffff, 0x2530, 0xffff, 0x25db, 0xffff, + 0xffff, 0x26c6, 0xffff, 0x27e1, 0xffff, 0xffff, 0xffff, 0xffff, + 0x28e7, 0xffff, 0xffff, 0xffff, 0x2990, 0x2a14, 0xffff, 0xffff, + // Entry 87C0 - 87FF + 0xffff, 0x2afb, 0x2b9b, 0x2c35, 0xffff, 0xffff, 0x2d23, 0x2e06, + 0x2e85, 0x2f06, 0xffff, 0xffff, 0x2fd3, 0x304c, 0x30cd, 0xffff, + 0x319d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3324, 0x33a3, + 0x341c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3578, 0xffff, 0xffff, 0x362b, 0xffff, 0x36d2, 0xffff, 0x3777, + 0x3806, 0x388f, 0xffff, 0x3940, 0x39d3, 0xffff, 0xffff, 0xffff, + 0x3ac6, 0x3b61, 0xffff, 0xffff, 0x02e8, 0x051a, 0x08c5, 0x0948, + 0xffff, 0xffff, 0x2742, 0x326b, 0x0003, 0x0004, 0x03ad, 0x07cf, + // Entry 8800 - 883F + 0x0012, 0x0017, 0x0038, 0x0000, 0x0000, 0x0000, 0x0000, 0x0129, + 0x0154, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0395, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, + 0x0001, 0x0010, 0x0000, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x000a, 0x0043, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0118, 0x0000, 0x0000, 0x0000, 0x00a8, 0x0002, + // Entry 8840 - 887F + 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, + 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + 0x221d, 0x2220, 0x2223, 0x0003, 0x007b, 0x008a, 0x0099, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, + // Entry 8880 - 88BF + 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, + 0x0043, 0x221d, 0x2220, 0x2223, 0x0006, 0x00af, 0x0000, 0x0000, + 0x0000, 0x00c2, 0x0105, 0x0001, 0x00b1, 0x0001, 0x00b3, 0x000d, + 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, + 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x00c4, + // Entry 88C0 - 88FF + 0x0001, 0x00c6, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, + 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, + 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, + 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, + 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, + 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, + 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, + 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, + // Entry 8900 - 893F + 0x0390, 0x0001, 0x0107, 0x0001, 0x0109, 0x000d, 0x0000, 0xffff, + 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, + 0x0079, 0x007e, 0x2226, 0x0085, 0x0004, 0x0126, 0x0120, 0x011d, + 0x0123, 0x0001, 0x0010, 0x0015, 0x0001, 0x0010, 0x0026, 0x0001, + 0x0010, 0x002f, 0x0001, 0x0002, 0x01fb, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0132, 0x0000, 0x0143, 0x0004, 0x0140, + 0x013a, 0x0137, 0x013d, 0x0001, 0x0010, 0x0037, 0x0001, 0x0005, + 0x0817, 0x0001, 0x0010, 0x004c, 0x0001, 0x0005, 0x0827, 0x0004, + // Entry 8940 - 897F + 0x0151, 0x014b, 0x0148, 0x014e, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x015d, 0x01c2, 0x0219, 0x024e, 0x033d, 0x0362, 0x0373, + 0x0384, 0x0002, 0x0160, 0x0191, 0x0003, 0x0164, 0x0173, 0x0182, + 0x000d, 0x0010, 0xffff, 0x0054, 0x005c, 0x0065, 0x006e, 0x0077, + 0x007f, 0x0087, 0x008f, 0x0097, 0x009f, 0x00a8, 0x00b0, 0x000d, + 0x0010, 0xffff, 0x00b8, 0x00bb, 0x00be, 0x00c2, 0x00c5, 0x00c8, + 0x00cb, 0x00ce, 0x00d1, 0x00d4, 0x00d7, 0x00da, 0x000d, 0x0010, + // Entry 8980 - 89BF + 0xffff, 0x00dd, 0x00e6, 0x0065, 0x00f0, 0x0077, 0x007f, 0x00fa, + 0x0104, 0x010e, 0x011a, 0x0126, 0x0132, 0x0003, 0x0195, 0x01a4, + 0x01b3, 0x000d, 0x0010, 0xffff, 0x013e, 0x0143, 0x0149, 0x014f, + 0x0154, 0x0159, 0x015e, 0x0163, 0x0167, 0x016c, 0x0171, 0x0176, + 0x000d, 0x0010, 0xffff, 0x00b8, 0x00bb, 0x00be, 0x00c2, 0x00c5, + 0x00c8, 0x00cb, 0x00ce, 0x00d1, 0x00d4, 0x00d7, 0x00da, 0x000d, + 0x0010, 0xffff, 0x017b, 0x0181, 0x0149, 0x0188, 0x0154, 0x0159, + 0x018e, 0x0195, 0x019b, 0x01a4, 0x01ac, 0x01b5, 0x0002, 0x01c5, + // Entry 89C0 - 89FF + 0x01ef, 0x0005, 0x01cb, 0x01d4, 0x01e6, 0x0000, 0x01dd, 0x0007, + 0x0010, 0x01be, 0x01c2, 0x01c6, 0x01ca, 0x01ce, 0x01d2, 0x01d6, + 0x0007, 0x0010, 0x01da, 0x01dd, 0x01e0, 0x01e3, 0x01e6, 0x01e9, + 0x01ec, 0x0007, 0x0010, 0x01be, 0x01c2, 0x01c6, 0x01ca, 0x01ce, + 0x01d2, 0x01d6, 0x0007, 0x0010, 0x01ef, 0x01f8, 0x0200, 0x0208, + 0x0211, 0x0218, 0x0222, 0x0005, 0x01f5, 0x01fe, 0x0210, 0x0000, + 0x0207, 0x0007, 0x0010, 0x01be, 0x01c2, 0x01c6, 0x01ca, 0x01ce, + 0x01d2, 0x01d6, 0x0007, 0x0010, 0x01da, 0x01dd, 0x01e0, 0x01e3, + // Entry 8A00 - 8A3F + 0x01e6, 0x01e9, 0x01ec, 0x0007, 0x0010, 0x01be, 0x01c2, 0x01c6, + 0x01ca, 0x01ce, 0x01d2, 0x01d6, 0x0007, 0x0010, 0x01ef, 0x01f8, + 0x0200, 0x0208, 0x0211, 0x0218, 0x0222, 0x0002, 0x021c, 0x0235, + 0x0003, 0x0220, 0x0227, 0x022e, 0x0005, 0x0005, 0xffff, 0x12a4, + 0x12a7, 0x12aa, 0x12ad, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x0005, 0x0010, 0xffff, 0x022b, 0x0238, 0x0245, + 0x0252, 0x0003, 0x0239, 0x0240, 0x0247, 0x0005, 0x0005, 0xffff, + 0x12a4, 0x12a7, 0x12aa, 0x12ad, 0x0005, 0x0000, 0xffff, 0x0033, + // Entry 8A40 - 8A7F + 0x0035, 0x0037, 0x0039, 0x0005, 0x0010, 0xffff, 0x022b, 0x0238, + 0x0245, 0x0252, 0x0002, 0x0251, 0x02c7, 0x0003, 0x0255, 0x027b, + 0x02a1, 0x000a, 0x0263, 0x0266, 0x0260, 0x0269, 0x026f, 0x0275, + 0x0278, 0x0000, 0x026c, 0x0272, 0x0001, 0x0010, 0x025f, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0001, 0x0010, 0x0274, + 0x0001, 0x0010, 0x027d, 0x0001, 0x0010, 0x0283, 0x0001, 0x0010, + 0x028a, 0x0001, 0x0010, 0x0290, 0x0001, 0x0010, 0x0297, 0x000a, + 0x0289, 0x028c, 0x0286, 0x028f, 0x0295, 0x029b, 0x029e, 0x0000, + // Entry 8A80 - 8ABF + 0x0292, 0x0298, 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0001, 0x0010, 0x029b, 0x0001, 0x0010, + 0x027d, 0x0001, 0x0010, 0x02a0, 0x0001, 0x0010, 0x028a, 0x0001, + 0x0010, 0x0290, 0x0001, 0x0010, 0x0297, 0x000a, 0x02af, 0x02b2, + 0x02ac, 0x02b5, 0x02bb, 0x02c1, 0x02c4, 0x0000, 0x02b8, 0x02be, + 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0001, 0x0010, 0x0274, 0x0001, 0x0010, 0x027d, 0x0001, + 0x0010, 0x0283, 0x0001, 0x0010, 0x028a, 0x0001, 0x0010, 0x0290, + // Entry 8AC0 - 8AFF + 0x0001, 0x0010, 0x0297, 0x0003, 0x02cb, 0x02f1, 0x0317, 0x000a, + 0x02d9, 0x02dc, 0x02d6, 0x02df, 0x02e5, 0x02eb, 0x02ee, 0x0000, + 0x02e2, 0x02e8, 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0001, 0x0010, 0x0274, 0x0001, 0x0010, + 0x027d, 0x0001, 0x0010, 0x0283, 0x0001, 0x0010, 0x028a, 0x0001, + 0x0010, 0x0290, 0x0001, 0x0010, 0x0297, 0x000a, 0x02ff, 0x0302, + 0x02fc, 0x0305, 0x030b, 0x0311, 0x0314, 0x0000, 0x0308, 0x030e, + 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + // Entry 8B00 - 8B3F + 0x026e, 0x0001, 0x0010, 0x0274, 0x0001, 0x0010, 0x027d, 0x0001, + 0x0010, 0x0283, 0x0001, 0x0010, 0x028a, 0x0001, 0x0010, 0x0290, + 0x0001, 0x0010, 0x0297, 0x000a, 0x0325, 0x0328, 0x0322, 0x032b, + 0x0331, 0x0337, 0x033a, 0x0000, 0x032e, 0x0334, 0x0001, 0x0010, + 0x025f, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0001, + 0x0010, 0x0274, 0x0001, 0x0010, 0x027d, 0x0001, 0x0010, 0x0283, + 0x0001, 0x0010, 0x028a, 0x0001, 0x0010, 0x0290, 0x0001, 0x0010, + 0x0297, 0x0003, 0x034c, 0x0357, 0x0341, 0x0002, 0x0344, 0x0348, + // Entry 8B40 - 8B7F + 0x0002, 0x0010, 0x02a3, 0x02ca, 0x0002, 0x0010, 0x02b2, 0x02dc, + 0x0002, 0x034f, 0x0353, 0x0002, 0x0010, 0x02e7, 0x02ee, 0x0002, + 0x0010, 0x02ea, 0x02f1, 0x0002, 0x035a, 0x035e, 0x0002, 0x0010, + 0x02e7, 0x02ee, 0x0002, 0x0010, 0x02ea, 0x02f1, 0x0004, 0x0370, + 0x036a, 0x0367, 0x036d, 0x0001, 0x0005, 0x1372, 0x0001, 0x0005, + 0x1386, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0005, 0x1394, 0x0004, + 0x0381, 0x037b, 0x0378, 0x037e, 0x0001, 0x0005, 0x0082, 0x0001, + 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, + // Entry 8B80 - 8BBF + 0x0004, 0x0392, 0x038c, 0x0389, 0x038f, 0x0001, 0x0005, 0x0834, + 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, + 0x03c6, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x039c, + 0x0004, 0x03aa, 0x03a4, 0x03a1, 0x03a7, 0x0001, 0x0010, 0x0037, + 0x0001, 0x0005, 0x0817, 0x0001, 0x0010, 0x02f4, 0x0001, 0x0002, + 0x04f7, 0x0040, 0x03ee, 0x0000, 0x0000, 0x03f3, 0x040a, 0x0421, + 0x0438, 0x044f, 0x0466, 0x047d, 0x0494, 0x04ab, 0x04c2, 0x04dd, + 0x04f8, 0x0000, 0x0000, 0x0000, 0x0513, 0x052c, 0x0545, 0x0000, + // Entry 8BC0 - 8BFF + 0x0000, 0x0000, 0x055e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0563, 0x0577, 0x058b, 0x059f, 0x05b3, 0x05c7, 0x05db, 0x05ef, + 0x0603, 0x0617, 0x062b, 0x063f, 0x0653, 0x0667, 0x067b, 0x068f, + 0x06a3, 0x06b7, 0x06cb, 0x06df, 0x06f3, 0x0000, 0x0707, 0x0000, + 0x070c, 0x0722, 0x0738, 0x074e, 0x0764, 0x077a, 0x0790, 0x07a6, + 0x07b8, 0x07ca, 0x0001, 0x03f0, 0x0001, 0x0001, 0x0040, 0x0003, + 0x03f7, 0x03fa, 0x03ff, 0x0001, 0x0010, 0x02fe, 0x0003, 0x0010, + 0x0302, 0x0311, 0x0319, 0x0002, 0x0402, 0x0406, 0x0002, 0x0010, + // Entry 8C00 - 8C3F + 0x033c, 0x0328, 0x0002, 0x0010, 0x035c, 0x0351, 0x0003, 0x040e, + 0x0411, 0x0416, 0x0001, 0x0010, 0x02fe, 0x0003, 0x0010, 0x0302, + 0x0311, 0x0319, 0x0002, 0x0419, 0x041d, 0x0002, 0x0010, 0x033c, + 0x0328, 0x0002, 0x0010, 0x035c, 0x0351, 0x0003, 0x0425, 0x0428, + 0x042d, 0x0001, 0x0010, 0x02fe, 0x0003, 0x0010, 0x0302, 0x0311, + 0x0319, 0x0002, 0x0430, 0x0434, 0x0002, 0x0010, 0x033c, 0x0328, + 0x0002, 0x0010, 0x035c, 0x0351, 0x0003, 0x043c, 0x043f, 0x0444, + 0x0001, 0x0005, 0x1c6d, 0x0003, 0x0010, 0x0368, 0x037c, 0x038d, + // Entry 8C40 - 8C7F + 0x0002, 0x0447, 0x044b, 0x0002, 0x0010, 0x03bb, 0x03a1, 0x0002, + 0x0010, 0x03e7, 0x03d6, 0x0003, 0x0453, 0x0456, 0x045b, 0x0001, + 0x000b, 0x0c78, 0x0003, 0x0010, 0x03f9, 0x0409, 0x0416, 0x0002, + 0x045e, 0x0462, 0x0002, 0x0010, 0x0426, 0x0426, 0x0002, 0x0010, + 0x043c, 0x043c, 0x0003, 0x046a, 0x046d, 0x0472, 0x0001, 0x000b, + 0x0c78, 0x0003, 0x0010, 0x0449, 0x0409, 0x0456, 0x0002, 0x0475, + 0x0479, 0x0002, 0x0010, 0x0426, 0x0426, 0x0002, 0x0010, 0x043c, + 0x043c, 0x0003, 0x0481, 0x0484, 0x0489, 0x0001, 0x0005, 0x1006, + // Entry 8C80 - 8CBF + 0x0003, 0x0010, 0x0463, 0x0471, 0x047c, 0x0002, 0x048c, 0x0490, + 0x0002, 0x0010, 0x049e, 0x048a, 0x0002, 0x0010, 0x04bf, 0x04b4, + 0x0003, 0x0498, 0x049b, 0x04a0, 0x0001, 0x0005, 0x1006, 0x0003, + 0x0010, 0x0463, 0x0471, 0x047c, 0x0002, 0x04a3, 0x04a7, 0x0002, + 0x0010, 0x049e, 0x048a, 0x0002, 0x0010, 0x04bf, 0x04b4, 0x0003, + 0x04af, 0x04b2, 0x04b7, 0x0001, 0x0005, 0x1006, 0x0003, 0x0010, + 0x04cc, 0x0471, 0x04d7, 0x0002, 0x04ba, 0x04be, 0x0002, 0x0010, + 0x049e, 0x048a, 0x0002, 0x0010, 0x04bf, 0x04b4, 0x0004, 0x04c7, + // Entry 8CC0 - 8CFF + 0x04ca, 0x04cf, 0x04da, 0x0001, 0x0010, 0x04e2, 0x0003, 0x0010, + 0x04ea, 0x04fd, 0x050d, 0x0002, 0x04d2, 0x04d6, 0x0002, 0x0010, + 0x0537, 0x051f, 0x0002, 0x0010, 0x055f, 0x0550, 0x0001, 0x0010, + 0x056f, 0x0004, 0x04e2, 0x04e5, 0x04ea, 0x04f5, 0x0001, 0x0010, + 0x0582, 0x0003, 0x0010, 0x0588, 0x0599, 0x05a7, 0x0002, 0x04ed, + 0x04f1, 0x0002, 0x0010, 0x05b7, 0x05b7, 0x0002, 0x0010, 0x05cd, + 0x05cd, 0x0001, 0x0010, 0x056f, 0x0004, 0x04fd, 0x0500, 0x0505, + 0x0510, 0x0001, 0x0010, 0x0582, 0x0003, 0x0010, 0x05da, 0x0599, + // Entry 8D00 - 8D3F + 0x05e8, 0x0002, 0x0508, 0x050c, 0x0002, 0x0010, 0x05b7, 0x05b7, + 0x0002, 0x0010, 0x05cd, 0x05cd, 0x0001, 0x0010, 0x056f, 0x0003, + 0x0517, 0x051a, 0x0521, 0x0001, 0x0010, 0x05f5, 0x0005, 0x0010, + 0x0608, 0x060d, 0x0612, 0x05f9, 0x0618, 0x0002, 0x0524, 0x0528, + 0x0002, 0x0010, 0x0639, 0x0625, 0x0002, 0x0010, 0x0659, 0x064e, + 0x0003, 0x0530, 0x0533, 0x053a, 0x0001, 0x0010, 0x05f5, 0x0005, + 0x0010, 0x0608, 0x060d, 0x0612, 0x05f9, 0x0618, 0x0002, 0x053d, + 0x0541, 0x0002, 0x0010, 0x0639, 0x0625, 0x0002, 0x0010, 0x0659, + // Entry 8D40 - 8D7F + 0x064e, 0x0003, 0x0549, 0x054c, 0x0553, 0x0001, 0x0010, 0x05f5, + 0x0005, 0x0010, 0x0608, 0x060d, 0x0612, 0x05f9, 0x0618, 0x0002, + 0x0556, 0x055a, 0x0002, 0x0010, 0x0639, 0x0625, 0x0002, 0x0010, + 0x0659, 0x064e, 0x0001, 0x0560, 0x0001, 0x0010, 0x0665, 0x0003, + 0x0000, 0x0567, 0x056c, 0x0003, 0x0010, 0x0677, 0x0687, 0x0697, + 0x0002, 0x056f, 0x0573, 0x0002, 0x0010, 0x06c0, 0x06a7, 0x0002, + 0x0010, 0x06ea, 0x06da, 0x0003, 0x0000, 0x057b, 0x0580, 0x0003, + 0x0010, 0x06fb, 0x0706, 0x0711, 0x0002, 0x0583, 0x0587, 0x0002, + // Entry 8D80 - 8DBF + 0x0010, 0x071c, 0x071c, 0x0002, 0x0010, 0x0730, 0x0730, 0x0003, + 0x0000, 0x058f, 0x0594, 0x0003, 0x0010, 0x06fb, 0x0706, 0x0711, + 0x0002, 0x0597, 0x059b, 0x0002, 0x0010, 0x071c, 0x071c, 0x0002, + 0x0010, 0x0730, 0x0730, 0x0003, 0x0000, 0x05a3, 0x05a8, 0x0003, + 0x0010, 0x073b, 0x074a, 0x0759, 0x0002, 0x05ab, 0x05af, 0x0002, + 0x0010, 0x0768, 0x0768, 0x0002, 0x0010, 0x0780, 0x0780, 0x0003, + 0x0000, 0x05b7, 0x05bc, 0x0003, 0x0010, 0x078f, 0x079a, 0x07a5, + 0x0002, 0x05bf, 0x05c3, 0x0002, 0x0010, 0x07b0, 0x07b0, 0x0002, + // Entry 8DC0 - 8DFF + 0x0010, 0x07c4, 0x07c4, 0x0003, 0x0000, 0x05cb, 0x05d0, 0x0003, + 0x0010, 0x078f, 0x079a, 0x07a5, 0x0002, 0x05d3, 0x05d7, 0x0002, + 0x0010, 0x07b0, 0x07b0, 0x0002, 0x0010, 0x07c4, 0x07c4, 0x0003, + 0x0000, 0x05df, 0x05e4, 0x0003, 0x0010, 0x07cf, 0x07de, 0x07ed, + 0x0002, 0x05e7, 0x05eb, 0x0002, 0x0010, 0x07fc, 0x07fc, 0x0002, + 0x0010, 0x0814, 0x0814, 0x0003, 0x0000, 0x05f3, 0x05f8, 0x0003, + 0x0010, 0x0823, 0x082e, 0x0839, 0x0002, 0x05fb, 0x05ff, 0x0002, + 0x0010, 0x0844, 0x0844, 0x0002, 0x0010, 0x0858, 0x0858, 0x0003, + // Entry 8E00 - 8E3F + 0x0000, 0x0607, 0x060c, 0x0003, 0x0010, 0x0823, 0x082e, 0x0839, + 0x0002, 0x060f, 0x0613, 0x0002, 0x0010, 0x0844, 0x0844, 0x0002, + 0x0010, 0x0858, 0x0858, 0x0003, 0x0000, 0x061b, 0x0620, 0x0003, + 0x0010, 0x0863, 0x0873, 0x0883, 0x0002, 0x0623, 0x0627, 0x0002, + 0x0010, 0x0893, 0x0893, 0x0002, 0x0010, 0x08ac, 0x08ac, 0x0003, + 0x0000, 0x062f, 0x0634, 0x0003, 0x0010, 0x08bc, 0x08c7, 0x08d2, + 0x0002, 0x0637, 0x063b, 0x0002, 0x0010, 0x08dd, 0x08dd, 0x0002, + 0x0010, 0x08f1, 0x08f1, 0x0003, 0x0000, 0x0643, 0x0648, 0x0003, + // Entry 8E40 - 8E7F + 0x0010, 0x08bc, 0x08c7, 0x08d2, 0x0002, 0x064b, 0x064f, 0x0002, + 0x0010, 0x08dd, 0x08dd, 0x0002, 0x0010, 0x08f1, 0x08f1, 0x0003, + 0x0000, 0x0657, 0x065c, 0x0003, 0x0010, 0x08fc, 0x090a, 0x0918, + 0x0002, 0x065f, 0x0663, 0x0002, 0x0010, 0x0926, 0x0926, 0x0002, + 0x0010, 0x093d, 0x093d, 0x0003, 0x0000, 0x066b, 0x0670, 0x0003, + 0x0010, 0x094b, 0x0956, 0x0961, 0x0002, 0x0673, 0x0677, 0x0002, + 0x0010, 0x096c, 0x096c, 0x0002, 0x0010, 0x0980, 0x0980, 0x0003, + 0x0000, 0x067f, 0x0684, 0x0003, 0x0010, 0x094b, 0x0956, 0x0961, + // Entry 8E80 - 8EBF + 0x0002, 0x0687, 0x068b, 0x0002, 0x0010, 0x096c, 0x096c, 0x0002, + 0x0010, 0x0980, 0x0980, 0x0003, 0x0000, 0x0693, 0x0698, 0x0003, + 0x0010, 0x098b, 0x099c, 0x09ad, 0x0002, 0x069b, 0x069f, 0x0002, + 0x0010, 0x09be, 0x09be, 0x0002, 0x0010, 0x09d8, 0x09d8, 0x0003, + 0x0000, 0x06a7, 0x06ac, 0x0003, 0x0010, 0x09e9, 0x09f4, 0x09ff, + 0x0002, 0x06af, 0x06b3, 0x0002, 0x0010, 0x0a0a, 0x0a0a, 0x0002, + 0x0010, 0x0a1e, 0x0a1e, 0x0003, 0x0000, 0x06bb, 0x06c0, 0x0003, + 0x0010, 0x09e9, 0x09f4, 0x09ff, 0x0002, 0x06c3, 0x06c7, 0x0002, + // Entry 8EC0 - 8EFF + 0x0010, 0x0a0a, 0x0a0a, 0x0002, 0x0010, 0x0a1e, 0x0a1e, 0x0003, + 0x0000, 0x06cf, 0x06d4, 0x0003, 0x0010, 0x0a29, 0x0a39, 0x0a49, + 0x0002, 0x06d7, 0x06db, 0x0002, 0x0010, 0x0a72, 0x0a59, 0x0002, + 0x0010, 0x0a9c, 0x0a8c, 0x0003, 0x0000, 0x06e3, 0x06e8, 0x0003, + 0x0010, 0x0aad, 0x0ab8, 0x0ac3, 0x0002, 0x06eb, 0x06ef, 0x0002, + 0x0010, 0x0ace, 0x0ace, 0x0002, 0x0010, 0x0ae2, 0x0ae2, 0x0003, + 0x0000, 0x06f7, 0x06fc, 0x0003, 0x0010, 0x0aad, 0x0ab8, 0x0ac3, + 0x0002, 0x06ff, 0x0703, 0x0002, 0x0010, 0x0ace, 0x0ace, 0x0002, + // Entry 8F00 - 8F3F + 0x0010, 0x0ae2, 0x0ae2, 0x0001, 0x0709, 0x0001, 0x0010, 0x0aed, + 0x0003, 0x0710, 0x0713, 0x0717, 0x0001, 0x0006, 0x03db, 0x0002, + 0x0010, 0xffff, 0x0af9, 0x0002, 0x071a, 0x071e, 0x0002, 0x0010, + 0x0b1b, 0x0b06, 0x0002, 0x0010, 0x0b3d, 0x0b31, 0x0003, 0x0726, + 0x0729, 0x072d, 0x0001, 0x0000, 0x2143, 0x0002, 0x0010, 0xffff, + 0x0af9, 0x0002, 0x0730, 0x0734, 0x0002, 0x0010, 0x0b4a, 0x0b4a, + 0x0002, 0x0010, 0x0b5c, 0x0b5c, 0x0003, 0x073c, 0x073f, 0x0743, + 0x0001, 0x0000, 0x2143, 0x0002, 0x0010, 0xffff, 0x0af9, 0x0002, + // Entry 8F40 - 8F7F + 0x0746, 0x074a, 0x0002, 0x0010, 0x0b65, 0x0b65, 0x0002, 0x0010, + 0x0b5c, 0x0b5c, 0x0003, 0x0752, 0x0755, 0x0759, 0x0001, 0x0010, + 0x0b77, 0x0002, 0x0010, 0xffff, 0x0b7d, 0x0002, 0x075c, 0x0760, + 0x0002, 0x0010, 0x0ba0, 0x0b8a, 0x0002, 0x0010, 0x0bc4, 0x0bb7, + 0x0003, 0x0768, 0x076b, 0x076f, 0x0001, 0x000b, 0x1250, 0x0002, + 0x0010, 0xffff, 0x0b7d, 0x0002, 0x0772, 0x0776, 0x0002, 0x0010, + 0x0bd2, 0x0bd2, 0x0002, 0x0010, 0x0be6, 0x0be6, 0x0003, 0x077e, + 0x0781, 0x0785, 0x0001, 0x000b, 0x1250, 0x0002, 0x0010, 0xffff, + // Entry 8F80 - 8FBF + 0x0b7d, 0x0002, 0x0788, 0x078c, 0x0002, 0x0010, 0x0bd2, 0x0bd2, + 0x0002, 0x0010, 0x0be6, 0x0be6, 0x0003, 0x0794, 0x0797, 0x079b, + 0x0001, 0x0010, 0x0bf1, 0x0002, 0x000a, 0xffff, 0x00ab, 0x0002, + 0x079e, 0x07a2, 0x0002, 0x0010, 0x0c0d, 0x0bf7, 0x0002, 0x0010, + 0x0c31, 0x0c24, 0x0003, 0x07aa, 0x0000, 0x07ad, 0x0001, 0x0000, + 0x2002, 0x0002, 0x07b0, 0x07b4, 0x0002, 0x0010, 0x0c3f, 0x0c3f, + 0x0002, 0x0010, 0x0c51, 0x0c51, 0x0003, 0x07bc, 0x0000, 0x07bf, + 0x0001, 0x0000, 0x2002, 0x0002, 0x07c2, 0x07c6, 0x0002, 0x0010, + // Entry 8FC0 - 8FFF + 0x0c3f, 0x0c3f, 0x0002, 0x0010, 0x0c51, 0x0c51, 0x0001, 0x07cc, + 0x0001, 0x0010, 0x0c5a, 0x0004, 0x07d4, 0x07d9, 0x07de, 0x07ed, + 0x0003, 0x0000, 0x1dc7, 0x2229, 0x2230, 0x0003, 0x0010, 0x0c65, + 0x0c72, 0x0c88, 0x0002, 0x0000, 0x07e1, 0x0003, 0x0000, 0x07e8, + 0x07e5, 0x0001, 0x0010, 0x0c9d, 0x0003, 0x0010, 0xffff, 0x0cb7, + 0x0cd1, 0x0002, 0x09d1, 0x07f0, 0x0003, 0x0893, 0x0932, 0x07f4, + 0x009d, 0x0010, 0x0ced, 0x0d04, 0x0d20, 0x0d3d, 0x0d83, 0x0de6, + 0x0e30, 0x0e92, 0x0f11, 0x0f95, 0x100a, 0x1053, 0x1098, 0x10d4, + // Entry 9000 - 903F + 0x1115, 0x1178, 0x11e3, 0x1232, 0x128f, 0x1302, 0x1380, 0x13ee, + 0x1456, 0x14a9, 0x14fa, 0x1537, 0x1546, 0x1569, 0x15a2, 0x15cd, + 0x1604, 0x1625, 0x1667, 0x16a6, 0x16ee, 0x1729, 0x173c, 0x1766, + 0x17b6, 0x1809, 0x1838, 0x1846, 0x1861, 0x1893, 0x18de, 0x190d, + 0x1973, 0x19be, 0x19fc, 0x1a64, 0x1abc, 0x1aeb, 0x1b07, 0x1b2d, + 0x1b40, 0x1b61, 0x1b98, 0x1bb2, 0x1bf0, 0x1c63, 0x1cb8, 0x1cc6, + 0x1cef, 0x1d4a, 0x1d90, 0x1dbf, 0x1ddd, 0x1df6, 0x1e08, 0x1e24, + 0x1e43, 0x1e71, 0x1eb3, 0x1efa, 0x1f3e, 0x1f83, 0x1fe0, 0x1fff, + // Entry 9040 - 907F + 0x202d, 0x205e, 0x2081, 0x20be, 0x20d4, 0x20fb, 0x2175, 0x2197, + 0x21cc, 0x21de, 0x21f3, 0x2209, 0x2234, 0x2269, 0x2295, 0x2300, + 0x2361, 0x23ad, 0x23e0, 0x23f0, 0x23fe, 0x2425, 0x247f, 0x24d0, + 0x2509, 0x2516, 0x254c, 0x25ad, 0x25f8, 0x263b, 0x2674, 0x2682, + 0x26ae, 0x26f6, 0x273b, 0x2774, 0x27ae, 0x2803, 0x2814, 0x2823, + 0x2835, 0x2845, 0x2866, 0x28ac, 0x28ed, 0x291e, 0x2935, 0x2946, + 0x2956, 0x296f, 0x297f, 0x298d, 0x29ac, 0x29df, 0x29f4, 0x2a12, + 0x2a43, 0x2a67, 0x2aa8, 0x2acb, 0x2b1f, 0x2b71, 0x2ba4, 0x2bcb, + // Entry 9080 - 90BF + 0x2c1a, 0x2c53, 0x2c62, 0x2c6f, 0x2c97, 0x2ce2, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2144, 0x009d, + 0x0010, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d64, 0x0dd6, 0x0e1b, + 0x0e6f, 0x0eed, 0x0f6e, 0x0ff8, 0x1043, 0x108a, 0x10c9, 0x10ff, + 0x1156, 0x11d1, 0x121c, 0x1273, 0x12dc, 0x1363, 0x13cf, 0x1441, + 0x1495, 0x14e6, 0xffff, 0xffff, 0x1557, 0xffff, 0x15bc, 0xffff, + 0x1615, 0x165a, 0x1696, 0x16db, 0xffff, 0xffff, 0x1754, 0x179f, + 0x17fc, 0xffff, 0xffff, 0xffff, 0x1878, 0xffff, 0x18f2, 0x1958, + // Entry 90C0 - 90FF + 0xffff, 0x19e0, 0x1a49, 0x1aaf, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1b50, 0xffff, 0xffff, 0x1bd1, 0x1c43, 0xffff, 0xffff, 0x1cd5, + 0x1d38, 0x1d83, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1e63, 0x1ea2, 0x1eea, 0x1f2f, 0x1f71, 0xffff, 0xffff, 0x201f, + 0xffff, 0x206d, 0xffff, 0xffff, 0x20e9, 0xffff, 0x2187, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2224, 0xffff, 0x2278, 0x22e4, 0x234d, + 0x239e, 0xffff, 0xffff, 0xffff, 0x240d, 0x246a, 0x24be, 0xffff, + 0xffff, 0x2530, 0x2599, 0x25ea, 0x2629, 0xffff, 0xffff, 0x269c, + // Entry 9100 - 913F + 0x26e7, 0x2729, 0xffff, 0x278e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2855, 0x289d, 0x28df, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x299d, 0xffff, 0xffff, 0x2a04, 0xffff, + 0x2a51, 0xffff, 0x2ab7, 0x2b08, 0x2b62, 0xffff, 0x2bb7, 0x2c08, + 0xffff, 0xffff, 0xffff, 0x2c87, 0x2ccc, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2136, 0x009d, 0x0010, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0dad, 0x0e01, 0x0e50, 0x0ec0, + 0x0f40, 0x0fc7, 0x1027, 0x106e, 0x10b1, 0x10ea, 0x1136, 0x11a5, + // Entry 9140 - 917F + 0x1200, 0x1253, 0x12b6, 0x1333, 0x13a8, 0x1418, 0x1476, 0x14c8, + 0x1519, 0xffff, 0xffff, 0x1586, 0xffff, 0x15e9, 0xffff, 0x1640, + 0x167f, 0x16c1, 0x170c, 0xffff, 0xffff, 0x1783, 0x17d8, 0x1821, + 0xffff, 0xffff, 0xffff, 0x18b9, 0xffff, 0x1933, 0x1999, 0xffff, + 0x1a23, 0x1a8a, 0x1ad4, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b7d, + 0xffff, 0xffff, 0x1c1a, 0x1c8e, 0xffff, 0xffff, 0x1d14, 0x1d67, + 0x1da8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e8a, + 0x1ecf, 0x1f15, 0x1f58, 0x1fb1, 0xffff, 0xffff, 0x2046, 0xffff, + // Entry 9180 - 91BF + 0x20a0, 0xffff, 0xffff, 0x2118, 0xffff, 0x21b2, 0xffff, 0xffff, + 0xffff, 0xffff, 0x224f, 0xffff, 0x22bd, 0x2327, 0x2380, 0x23c7, + 0xffff, 0xffff, 0xffff, 0x2448, 0x249f, 0x24ed, 0xffff, 0xffff, + 0x2573, 0x25cc, 0x2611, 0x2658, 0xffff, 0xffff, 0x26cb, 0x2710, + 0x2758, 0xffff, 0x27d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2882, 0x28c6, 0x2906, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x29c6, 0xffff, 0xffff, 0x2a2b, 0xffff, 0x2a88, + 0xffff, 0x2aea, 0x2b41, 0x2b8b, 0xffff, 0x2bea, 0x2c37, 0xffff, + // Entry 91C0 - 91FF + 0xffff, 0xffff, 0x2cb2, 0x2d03, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x215d, 0x0003, 0x09d5, 0x0a44, + 0x0a08, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 9200 - 923F + 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2765, + // Entry 9240 - 927F + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x0080, 0x0341, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, + // Entry 9280 - 92BF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0003, 0x002b, 0x0063, 0x0072, 0x0002, 0x002e, + 0x0050, 0x0003, 0x0032, 0x0000, 0x0041, 0x000d, 0x0011, 0xffff, + 0x0000, 0x0007, 0x000e, 0x0015, 0x001c, 0x0023, 0x002a, 0x0031, + 0x0038, 0x003f, 0x0046, 0x004d, 0x000d, 0x0011, 0xffff, 0x0054, + 0x0061, 0x0070, 0x0079, 0x001c, 0x0086, 0x008f, 0x0098, 0x00a5, + // Entry 92C0 - 92FF + 0x00b6, 0x00c5, 0x00d2, 0x0003, 0x0000, 0x0000, 0x0054, 0x000d, + 0x0011, 0xffff, 0x0054, 0x0061, 0x0070, 0x0079, 0x001c, 0x0086, + 0x008f, 0x0098, 0x00a5, 0x00b6, 0x00c5, 0x00d2, 0x0001, 0x0065, + 0x0003, 0x0000, 0x0000, 0x0069, 0x0007, 0x0011, 0x00e1, 0x00f7, + 0x010b, 0x011f, 0x0133, 0x0143, 0x015b, 0x0002, 0x0000, 0x0075, + 0x0003, 0x0000, 0x0000, 0x0079, 0x0005, 0x0011, 0xffff, 0x0167, + 0x017f, 0x0197, 0x01af, 0x0040, 0x00c1, 0x0000, 0x0000, 0x00c6, + 0x00dd, 0x00ef, 0x0101, 0x0113, 0x0125, 0x0137, 0x014e, 0x0160, + // Entry 9300 - 933F + 0x0172, 0x0189, 0x019b, 0x0000, 0x0000, 0x0000, 0x01ad, 0x01c4, + 0x01d6, 0x0000, 0x0000, 0x0000, 0x01e8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01ed, 0x01f5, 0x01fd, 0x0205, 0x020d, 0x0215, + 0x021d, 0x0225, 0x022d, 0x0235, 0x023d, 0x0245, 0x024d, 0x0255, + 0x025d, 0x0265, 0x026d, 0x0275, 0x027d, 0x0285, 0x028d, 0x0000, + 0x0295, 0x0000, 0x029a, 0x02ac, 0x02be, 0x02d0, 0x02e2, 0x02f4, + 0x0306, 0x0318, 0x032a, 0x033c, 0x0001, 0x00c3, 0x0001, 0x0011, + 0x01c7, 0x0003, 0x00ca, 0x00cd, 0x00d2, 0x0001, 0x0011, 0x01ce, + // Entry 9340 - 937F + 0x0003, 0x0011, 0x01d3, 0x01ef, 0x020b, 0x0002, 0x00d5, 0x00d9, + 0x0002, 0x0011, 0x0229, 0x0229, 0x0002, 0x0011, 0x023f, 0x023f, + 0x0003, 0x00e1, 0x0000, 0x00e4, 0x0001, 0x0011, 0x0255, 0x0002, + 0x00e7, 0x00eb, 0x0002, 0x0011, 0x0259, 0x0259, 0x0002, 0x0011, + 0x026e, 0x026e, 0x0003, 0x00f3, 0x0000, 0x00f6, 0x0001, 0x0011, + 0x0255, 0x0002, 0x00f9, 0x00fd, 0x0002, 0x0011, 0x0259, 0x0259, + 0x0002, 0x0011, 0x026e, 0x026e, 0x0003, 0x0105, 0x0000, 0x0108, + 0x0001, 0x0011, 0x0283, 0x0002, 0x010b, 0x010f, 0x0002, 0x0011, + // Entry 9380 - 93BF + 0x0292, 0x0292, 0x0002, 0x0011, 0x02b0, 0x02b0, 0x0003, 0x0117, + 0x0000, 0x011a, 0x0001, 0x0008, 0x0ca5, 0x0002, 0x011d, 0x0121, + 0x0002, 0x0011, 0x02d0, 0x02d0, 0x0002, 0x0011, 0x02e5, 0x02e5, + 0x0003, 0x0129, 0x0000, 0x012c, 0x0001, 0x0008, 0x0ca5, 0x0002, + 0x012f, 0x0133, 0x0002, 0x0011, 0x02d0, 0x02d0, 0x0002, 0x0011, + 0x02e5, 0x02e5, 0x0003, 0x013b, 0x013e, 0x0143, 0x0001, 0x0011, + 0x02fc, 0x0003, 0x0011, 0x0305, 0x0323, 0x0341, 0x0002, 0x0146, + 0x014a, 0x0002, 0x0011, 0x0361, 0x0361, 0x0002, 0x0011, 0x037b, + // Entry 93C0 - 93FF + 0x037b, 0x0003, 0x0152, 0x0000, 0x0155, 0x0001, 0x0011, 0x0395, + 0x0002, 0x0158, 0x015c, 0x0002, 0x0011, 0x039d, 0x039d, 0x0002, + 0x0011, 0x03b2, 0x03b2, 0x0003, 0x0164, 0x0000, 0x0167, 0x0001, + 0x0011, 0x0395, 0x0002, 0x016a, 0x016e, 0x0002, 0x0011, 0x039d, + 0x039d, 0x0002, 0x0011, 0x03b2, 0x03b2, 0x0003, 0x0176, 0x0179, + 0x017e, 0x0001, 0x0011, 0x03c7, 0x0003, 0x0011, 0x03d2, 0x03f2, + 0x0412, 0x0002, 0x0181, 0x0185, 0x0002, 0x0011, 0x0434, 0x0434, + 0x0002, 0x0011, 0x0450, 0x0450, 0x0003, 0x018d, 0x0000, 0x0190, + // Entry 9400 - 943F + 0x0001, 0x0011, 0x046c, 0x0002, 0x0193, 0x0197, 0x0002, 0x0011, + 0x0476, 0x0476, 0x0002, 0x0011, 0x0491, 0x0491, 0x0003, 0x019f, + 0x0000, 0x01a2, 0x0001, 0x0011, 0x046c, 0x0002, 0x01a5, 0x01a9, + 0x0002, 0x0011, 0x0476, 0x0476, 0x0002, 0x0011, 0x0491, 0x0491, + 0x0003, 0x01b1, 0x01b4, 0x01b9, 0x0001, 0x0011, 0x04ac, 0x0003, + 0x0011, 0x04b1, 0x04c0, 0x04cd, 0x0002, 0x01bc, 0x01c0, 0x0002, + 0x0011, 0x04d8, 0x04d8, 0x0002, 0x0011, 0x04ee, 0x04ee, 0x0003, + 0x01c8, 0x0000, 0x01cb, 0x0001, 0x0011, 0x04ac, 0x0002, 0x01ce, + // Entry 9440 - 947F + 0x01d2, 0x0002, 0x0011, 0x0504, 0x0504, 0x0002, 0x0011, 0x04ee, + 0x0519, 0x0003, 0x01da, 0x0000, 0x01dd, 0x0001, 0x0011, 0x04ac, + 0x0002, 0x01e0, 0x01e4, 0x0002, 0x0011, 0x0504, 0x0504, 0x0002, + 0x0011, 0x04ee, 0x052e, 0x0001, 0x01ea, 0x0001, 0x0011, 0x0540, + 0x0002, 0x0000, 0x01f0, 0x0003, 0x0011, 0x0552, 0x0581, 0x05b0, + 0x0002, 0x0000, 0x01f8, 0x0003, 0x0011, 0x05e1, 0x0605, 0x0629, + 0x0002, 0x0000, 0x0200, 0x0003, 0x0011, 0x05e1, 0x0605, 0x064f, + 0x0002, 0x0000, 0x0208, 0x0003, 0x0011, 0x0674, 0x06a1, 0x06ce, + // Entry 9480 - 94BF + 0x0002, 0x0000, 0x0210, 0x0003, 0x0011, 0x06fd, 0x071f, 0x073f, + 0x0002, 0x0000, 0x0218, 0x0003, 0x0011, 0x06fd, 0x071f, 0x073f, + 0x0002, 0x0000, 0x0220, 0x0003, 0x0011, 0x0763, 0x0790, 0x07bd, + 0x0002, 0x0000, 0x0228, 0x0003, 0x0011, 0x07ec, 0x080e, 0x0830, + 0x0002, 0x0000, 0x0230, 0x0003, 0x0011, 0x07ec, 0x080e, 0x0830, + 0x0002, 0x0000, 0x0238, 0x0003, 0x0011, 0x0854, 0x0881, 0x08ae, + 0x0002, 0x0000, 0x0240, 0x0003, 0x0011, 0x08dd, 0x08ff, 0x0921, + 0x0002, 0x0000, 0x0248, 0x0003, 0x0011, 0x08dd, 0x08ff, 0x0921, + // Entry 94C0 - 94FF + 0x0002, 0x0000, 0x0250, 0x0003, 0x0011, 0x0945, 0x096e, 0x0997, + 0x0002, 0x0000, 0x0258, 0x0003, 0x0011, 0x09c2, 0x09e0, 0x09fe, + 0x0002, 0x0000, 0x0260, 0x0003, 0x0011, 0x09c2, 0x09e0, 0x09fe, + 0x0002, 0x0000, 0x0268, 0x0003, 0x0011, 0x0a1e, 0x0a4f, 0x0a80, + 0x0002, 0x0000, 0x0270, 0x0003, 0x0011, 0x0ab3, 0x0ad9, 0x0aff, + 0x0002, 0x0000, 0x0278, 0x0003, 0x0011, 0x0ab3, 0x0ad9, 0x0aff, + 0x0002, 0x0000, 0x0280, 0x0003, 0x0011, 0x0b27, 0x0b4b, 0x0b6f, + 0x0002, 0x0000, 0x0288, 0x0003, 0x0011, 0x0b95, 0x0bae, 0x0bd6, + // Entry 9500 - 953F + 0x0002, 0x0000, 0x0290, 0x0003, 0x0011, 0x0b95, 0x0bae, 0x0bd6, + 0x0001, 0x0297, 0x0001, 0x0011, 0x0c00, 0x0003, 0x029e, 0x0000, + 0x02a1, 0x0001, 0x0011, 0x0c1c, 0x0002, 0x02a4, 0x02a8, 0x0002, + 0x0011, 0x0c27, 0x0c27, 0x0002, 0x0011, 0x0c43, 0x0c43, 0x0003, + 0x02b0, 0x0000, 0x02b3, 0x0001, 0x0011, 0x0c5f, 0x0002, 0x02b6, + 0x02ba, 0x0002, 0x0011, 0x0c69, 0x0c69, 0x0002, 0x0011, 0x0c84, + 0x0c84, 0x0003, 0x02c2, 0x0000, 0x02c5, 0x0001, 0x0011, 0x0c5f, + 0x0002, 0x02c8, 0x02cc, 0x0002, 0x0011, 0x0c69, 0x0c69, 0x0002, + // Entry 9540 - 957F + 0x0011, 0x0c84, 0x0c84, 0x0003, 0x02d4, 0x0000, 0x02d7, 0x0001, + 0x0011, 0x0c9f, 0x0002, 0x02da, 0x02de, 0x0002, 0x0011, 0x0caa, + 0x0caa, 0x0002, 0x0011, 0x0cc4, 0x0cc4, 0x0003, 0x02e6, 0x0000, + 0x02e9, 0x0001, 0x0011, 0x0ce0, 0x0002, 0x02ec, 0x02f0, 0x0002, + 0x0011, 0x0ce8, 0x0ce8, 0x0002, 0x0011, 0x0cff, 0x0cff, 0x0003, + 0x02f8, 0x0000, 0x02fb, 0x0001, 0x0011, 0x0ce0, 0x0002, 0x02fe, + 0x0302, 0x0002, 0x0011, 0x0ce8, 0x0ce8, 0x0002, 0x0011, 0x0cff, + 0x0cff, 0x0003, 0x030a, 0x0000, 0x030d, 0x0001, 0x000f, 0x01e5, + // Entry 9580 - 95BF + 0x0002, 0x0310, 0x0314, 0x0002, 0x0011, 0x0d18, 0x0d18, 0x0002, + 0x0011, 0x0d34, 0x0d34, 0x0003, 0x031c, 0x0000, 0x031f, 0x0001, + 0x0011, 0x0d52, 0x0002, 0x0322, 0x0326, 0x0002, 0x0011, 0x0d5a, + 0x0d5a, 0x0002, 0x0011, 0x0d71, 0x0d71, 0x0003, 0x032e, 0x0000, + 0x0331, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0334, 0x0338, 0x0002, + 0x0011, 0x0d5a, 0x0d5a, 0x0002, 0x0011, 0x0d71, 0x0d71, 0x0001, + 0x033e, 0x0001, 0x0011, 0x0d8a, 0x0004, 0x0346, 0x034b, 0x0350, + 0x035b, 0x0003, 0x0000, 0x1dc7, 0x2229, 0x2234, 0x0003, 0x0000, + // Entry 95C0 - 95FF + 0x1de0, 0x1de4, 0x1ded, 0x0002, 0x0000, 0x0353, 0x0002, 0x0000, + 0x0356, 0x0003, 0x0011, 0xffff, 0x0da0, 0x0dca, 0x0002, 0x0000, + 0x035e, 0x0003, 0x03f8, 0x048e, 0x0362, 0x0094, 0x0011, 0x0df2, + 0x0e12, 0x0e2e, 0x0e4e, 0x0e88, 0x0f0b, 0x0f6c, 0x0fe2, 0x1076, + 0x1111, 0x119a, 0xffff, 0x121e, 0x1298, 0x1319, 0x139b, 0x1432, + 0x14ae, 0x152c, 0x15dd, 0x169d, 0x173f, 0x17d4, 0x1858, 0x18e1, + 0x193d, 0x1948, 0x1964, 0x19b8, 0x19ee, 0x1a4c, 0x1a66, 0x1abb, + 0x1b0e, 0x1b6d, 0x1bc9, 0x1c04, 0x1c31, 0x1c9d, 0x1d0c, 0x1d54, + // Entry 9600 - 963F + 0x1d61, 0x1d7e, 0x1db6, 0x1e20, 0x1e4b, 0x1ed9, 0x1f4f, 0x1fab, + 0x2049, 0x20da, 0x2126, 0x2148, 0x218f, 0x21b9, 0x21db, 0x223b, + 0x225b, 0x22aa, 0x2352, 0x23d4, 0x23f0, 0x2422, 0x24a1, 0x24fe, + 0x2546, 0x254f, 0x2565, 0x2578, 0x2598, 0x25bc, 0x25f7, 0x266a, + 0x26cd, 0x272c, 0xffff, 0x2778, 0x279e, 0x27cf, 0x281b, 0x283d, + 0x289d, 0x28ac, 0x28d2, 0x2928, 0x2948, 0x299c, 0x29ab, 0x29be, + 0x29dc, 0x2a0a, 0x2a5e, 0x2aa9, 0x2b7d, 0x2c1b, 0x2c86, 0x2cd6, + 0x2ce3, 0x2cee, 0x2d15, 0x2d9d, 0x2e20, 0x2e88, 0x2e91, 0x2ec5, + // Entry 9640 - 967F + 0x2f5c, 0x2fc9, 0x3022, 0x307a, 0x3085, 0x30bd, 0x311e, 0x317b, + 0x31db, 0x321b, 0x329d, 0x32ac, 0xffff, 0x32c6, 0x32d5, 0x32f1, + 0xffff, 0x3350, 0x339c, 0x33c0, 0x33d1, 0x33f1, 0x340b, 0x341a, + 0x3423, 0x344a, 0x349e, 0x34b5, 0x34cf, 0x351b, 0x3535, 0x358f, + 0x35ab, 0x3614, 0x3689, 0x36dd, 0x3707, 0x377e, 0x37da, 0x37e7, + 0x37f9, 0x3827, 0x3890, 0x0094, 0x0011, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0e68, 0x0efe, 0x0f5b, 0x0fc4, 0x1054, 0x10f0, 0x1179, + 0xffff, 0x1202, 0x127c, 0x1306, 0x1375, 0x141d, 0x1492, 0x150c, + // Entry 9680 - 96BF + 0x15a2, 0x1679, 0x171b, 0x17bd, 0x1838, 0x18ce, 0xffff, 0xffff, + 0x1955, 0xffff, 0x19da, 0xffff, 0x1a5b, 0x1ab2, 0x1b03, 0x1b5a, + 0xffff, 0xffff, 0x1c22, 0x1c85, 0x1d03, 0xffff, 0xffff, 0xffff, + 0x1d9c, 0xffff, 0x1e2f, 0x1eb9, 0xffff, 0x1f8b, 0x2021, 0x20cf, + 0xffff, 0xffff, 0xffff, 0xffff, 0x21c6, 0xffff, 0xffff, 0x2284, + 0x232c, 0xffff, 0xffff, 0x23fd, 0x2492, 0x24f5, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x25e0, 0x265b, 0x26be, 0x2721, + 0xffff, 0xffff, 0xffff, 0x27c4, 0xffff, 0x2828, 0xffff, 0xffff, + // Entry 96C0 - 96FF + 0x28c2, 0xffff, 0x2939, 0xffff, 0xffff, 0xffff, 0xffff, 0x29fb, + 0xffff, 0x2a6b, 0x2b4b, 0x2c07, 0x2c79, 0xffff, 0xffff, 0xffff, + 0x2cf9, 0x2d83, 0x2e07, 0xffff, 0xffff, 0x2ea0, 0x2f45, 0x2fc0, + 0x3011, 0xffff, 0xffff, 0x30ac, 0x3115, 0x3166, 0xffff, 0x31f5, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32e2, 0xffff, 0x3345, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x343b, + 0xffff, 0xffff, 0x34c4, 0xffff, 0x3524, 0xffff, 0x359c, 0x35ff, + 0x367a, 0xffff, 0x36f0, 0x376b, 0xffff, 0xffff, 0xffff, 0x381a, + // Entry 9700 - 973F + 0x3877, 0x0094, 0x0011, 0xffff, 0xffff, 0xffff, 0xffff, 0x0ec5, + 0x0f35, 0x0f9a, 0x101d, 0x10b5, 0x1147, 0x11d0, 0xffff, 0x124f, + 0x12d1, 0x1349, 0x13de, 0x1464, 0x14df, 0x1569, 0x162d, 0x16de, + 0x1780, 0x1808, 0x1895, 0x1911, 0xffff, 0xffff, 0x1990, 0xffff, + 0x1a1f, 0xffff, 0x1a8e, 0x1ae1, 0x1b36, 0x1b9d, 0xffff, 0xffff, + 0x1c5d, 0x1cd2, 0x1d32, 0xffff, 0xffff, 0xffff, 0x1ded, 0xffff, + 0x1e84, 0x1f16, 0xffff, 0x1fe8, 0x208e, 0x2102, 0xffff, 0xffff, + 0xffff, 0xffff, 0x220d, 0xffff, 0xffff, 0x22ed, 0x2395, 0xffff, + // Entry 9740 - 977F + 0xffff, 0x245c, 0x24cd, 0x2524, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x262b, 0x2696, 0x26f9, 0x2754, 0xffff, 0xffff, + 0xffff, 0x27f7, 0xffff, 0x286f, 0xffff, 0xffff, 0x28ff, 0xffff, + 0x2974, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a36, 0xffff, 0x2afc, + 0x2bc4, 0x2c4c, 0x2cb0, 0xffff, 0xffff, 0xffff, 0x2d4e, 0x2dd4, + 0x2e56, 0xffff, 0xffff, 0x2f07, 0x2f90, 0x2fef, 0x3050, 0xffff, + 0xffff, 0x30eb, 0x3144, 0x31ad, 0xffff, 0x325e, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x331d, 0xffff, 0x3378, 0xffff, 0xffff, + // Entry 9780 - 97BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3476, 0xffff, 0xffff, + 0x34f7, 0xffff, 0x3564, 0xffff, 0x35d7, 0x3649, 0x36b5, 0xffff, + 0x373b, 0x37ae, 0xffff, 0xffff, 0xffff, 0x3851, 0x38c6, 0x0002, + 0x0003, 0x00d1, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, + 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, + // Entry 97C0 - 97FF + 0x008b, 0x0000, 0x009f, 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, + 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0012, 0xffff, + 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, + 0x0020, 0x0024, 0x0028, 0x002c, 0x000d, 0x0012, 0xffff, 0x0030, + 0x003c, 0x0047, 0x0053, 0x005c, 0x0068, 0x0074, 0x0081, 0x008d, + 0x0098, 0x00a2, 0x00b5, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, + 0xffff, 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, + 0x21ce, 0x21d0, 0x2150, 0x21cc, 0x223c, 0x0002, 0x0069, 0x007f, + // Entry 9800 - 983F + 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0012, 0x00c8, 0x00cc, + 0x00d0, 0x00d4, 0x00d8, 0x00dc, 0x00e0, 0x0007, 0x0012, 0x00e4, + 0x00ea, 0x00f6, 0x0101, 0x010d, 0x0116, 0x0122, 0x0002, 0x0000, + 0x0082, 0x0007, 0x0000, 0x21d0, 0x2157, 0x223e, 0x21d0, 0x21cc, + 0x04dd, 0x223a, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, + 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, + 0x0012, 0xffff, 0x012e, 0x0136, 0x013e, 0x0146, 0x0003, 0x00a9, + 0x0000, 0x00a3, 0x0001, 0x00a5, 0x0002, 0x0012, 0x014e, 0x0162, + // Entry 9840 - 987F + 0x0001, 0x00ab, 0x0002, 0x0009, 0x0078, 0x5430, 0x0004, 0x00bd, + 0x00b7, 0x00b4, 0x00ba, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, + 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, + 0x00ce, 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x003d, 0x010f, 0x0000, 0x0000, 0x0114, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, 0x011e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0123, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 9880 - 98BF + 0x0000, 0x012e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0133, 0x0000, 0x0138, + 0x0000, 0x0000, 0x013d, 0x0000, 0x0000, 0x0142, 0x0001, 0x0111, + 0x0001, 0x0012, 0x0173, 0x0001, 0x0116, 0x0001, 0x0012, 0x017b, + 0x0001, 0x011b, 0x0001, 0x0012, 0x0182, 0x0001, 0x0120, 0x0001, + 0x0012, 0x0189, 0x0002, 0x0126, 0x0129, 0x0001, 0x0012, 0x0190, + // Entry 98C0 - 98FF + 0x0003, 0x0012, 0x0198, 0x01a4, 0x01ad, 0x0001, 0x0130, 0x0001, + 0x0012, 0x01b9, 0x0001, 0x0135, 0x0001, 0x0012, 0x01ce, 0x0001, + 0x013a, 0x0001, 0x0012, 0x01e1, 0x0001, 0x013f, 0x0001, 0x0012, + 0x01e8, 0x0001, 0x0144, 0x0001, 0x0012, 0x01f1, 0x0003, 0x0004, + 0x021a, 0x05f4, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, + 0x0021, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, + // Entry 9900 - 993F + 0x000c, 0x001e, 0x0001, 0x0012, 0x0203, 0x0004, 0x0035, 0x002f, + 0x002c, 0x0032, 0x0001, 0x0012, 0x020f, 0x0001, 0x0012, 0x020f, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, + 0x00a6, 0x00fd, 0x0132, 0x01cd, 0x01e7, 0x01f8, 0x0209, 0x0002, + 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0012, + 0xffff, 0x0221, 0x0228, 0x022f, 0x0236, 0x023d, 0x0244, 0x024b, + 0x0252, 0x0259, 0x0260, 0x0267, 0x026e, 0x000d, 0x0012, 0xffff, + 0x0275, 0x0279, 0x027d, 0x0279, 0x027d, 0x0281, 0x0285, 0x0289, + // Entry 9940 - 997F + 0x028d, 0x028d, 0x0291, 0x0295, 0x000d, 0x0012, 0xffff, 0x0299, + 0x02a9, 0x02b3, 0x02bd, 0x02c7, 0x02d7, 0x02e4, 0x02f1, 0x02fb, + 0x0308, 0x0315, 0x0322, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, + 0x0012, 0xffff, 0x0221, 0x0228, 0x022f, 0x0236, 0x023d, 0x0244, + 0x024b, 0x0252, 0x0259, 0x0260, 0x0267, 0x026e, 0x000d, 0x0012, + 0xffff, 0x0275, 0x0279, 0x027d, 0x0279, 0x027d, 0x0281, 0x0285, + 0x0289, 0x028d, 0x028d, 0x0291, 0x0295, 0x000d, 0x0012, 0xffff, + 0x0299, 0x02a9, 0x02b3, 0x02bd, 0x02c7, 0x02d7, 0x02e4, 0x02f1, + // Entry 9980 - 99BF + 0x02fb, 0x0308, 0x0315, 0x0322, 0x0002, 0x00a9, 0x00d3, 0x0005, + 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0012, 0x032f, + 0x0339, 0x0343, 0x034d, 0x0357, 0x0361, 0x036b, 0x0007, 0x0012, + 0x0375, 0x0379, 0x037d, 0x0381, 0x0291, 0x0385, 0x0275, 0x0007, + 0x0012, 0x0389, 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, + 0x0007, 0x0012, 0x03ba, 0x03d0, 0x03e6, 0x03f6, 0x0406, 0x0416, + 0x0429, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, + 0x0012, 0x032f, 0x0339, 0x0343, 0x034d, 0x0357, 0x0361, 0x036b, + // Entry 99C0 - 99FF + 0x0007, 0x0012, 0x0375, 0x0379, 0x037d, 0x0381, 0x0291, 0x0385, + 0x0275, 0x0007, 0x0012, 0x0389, 0x0390, 0x0397, 0x039e, 0x03a5, + 0x03ac, 0x03b3, 0x0007, 0x0012, 0x03ba, 0x03d0, 0x03e6, 0x03f6, + 0x0406, 0x0416, 0x0429, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, + 0x010b, 0x0112, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, + 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x0005, 0x0012, 0xffff, 0x043f, 0x0450, 0x0461, 0x0472, 0x0003, + 0x011d, 0x0124, 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, + // Entry 9A00 - 9A3F + 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x0005, 0x0012, 0xffff, 0x043f, 0x0450, 0x0461, 0x0472, + 0x0002, 0x0135, 0x0181, 0x0003, 0x0139, 0x0151, 0x0169, 0x0008, + 0x0142, 0x0148, 0x0000, 0x014b, 0x014e, 0x0000, 0x0000, 0x0145, + 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x048d, 0x0001, 0x0012, + 0x0494, 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x0494, 0x0008, + 0x015a, 0x0160, 0x0000, 0x0163, 0x0166, 0x0000, 0x0000, 0x015d, + 0x0001, 0x0012, 0x04a7, 0x0001, 0x0012, 0x04ab, 0x0001, 0x0012, + // Entry 9A40 - 9A7F + 0x04af, 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x0494, 0x0008, + 0x0172, 0x0178, 0x0000, 0x017b, 0x017e, 0x0000, 0x0000, 0x0175, + 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x048d, 0x0001, 0x0012, + 0x0494, 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x0494, 0x0003, + 0x0185, 0x019d, 0x01b5, 0x0008, 0x018e, 0x0194, 0x0000, 0x0197, + 0x019a, 0x0000, 0x0000, 0x0191, 0x0001, 0x0012, 0x0483, 0x0001, + 0x0012, 0x048d, 0x0001, 0x0012, 0x0494, 0x0001, 0x0012, 0x0483, + 0x0001, 0x0012, 0x0494, 0x0008, 0x01a6, 0x01ac, 0x0000, 0x01af, + // Entry 9A80 - 9ABF + 0x01b2, 0x0000, 0x0000, 0x01a9, 0x0001, 0x0012, 0x0483, 0x0001, + 0x0012, 0x048d, 0x0001, 0x0012, 0x0494, 0x0001, 0x0012, 0x0483, + 0x0001, 0x0012, 0x0494, 0x0008, 0x01be, 0x01c4, 0x0000, 0x01c7, + 0x01ca, 0x0000, 0x0000, 0x01c1, 0x0001, 0x0012, 0x0483, 0x0001, + 0x0012, 0x048d, 0x0001, 0x0012, 0x0494, 0x0001, 0x0012, 0x0483, + 0x0001, 0x0012, 0x0494, 0x0003, 0x01dc, 0x0000, 0x01d1, 0x0002, + 0x01d4, 0x01d8, 0x0002, 0x0012, 0x04b3, 0x0517, 0x0002, 0x0012, + 0x04dd, 0x0528, 0x0002, 0x01df, 0x01e3, 0x0002, 0x0009, 0x0078, + // Entry 9AC0 - 9AFF + 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x01f5, 0x01ef, + 0x01ec, 0x01f2, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, + 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x0206, + 0x0200, 0x01fd, 0x0203, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, + 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, + 0x0217, 0x0211, 0x020e, 0x0214, 0x0001, 0x0012, 0x020f, 0x0001, + 0x0012, 0x020f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0040, 0x025b, 0x0000, 0x0000, 0x0260, 0x0277, 0x0289, 0x029b, + // Entry 9B00 - 9B3F + 0x02b2, 0x02c4, 0x02d6, 0x02ed, 0x02ff, 0x0311, 0x032c, 0x0342, + 0x0000, 0x0000, 0x0000, 0x0358, 0x036f, 0x0381, 0x0000, 0x0000, + 0x0000, 0x0393, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0398, + 0x03ac, 0x03c0, 0x03d4, 0x03e8, 0x03fc, 0x0410, 0x0424, 0x0438, + 0x044c, 0x0460, 0x0474, 0x0488, 0x049c, 0x04b0, 0x04c4, 0x04d8, + 0x04ec, 0x0500, 0x0514, 0x0528, 0x0000, 0x053c, 0x0000, 0x0541, + 0x0557, 0x0569, 0x057b, 0x0591, 0x05a3, 0x05b5, 0x05cb, 0x05dd, + 0x05ef, 0x0001, 0x025d, 0x0001, 0x0012, 0x0555, 0x0003, 0x0264, + // Entry 9B40 - 9B7F + 0x0267, 0x026c, 0x0001, 0x0012, 0x0568, 0x0003, 0x0012, 0x0581, + 0x0592, 0x05ac, 0x0002, 0x026f, 0x0273, 0x0002, 0x0012, 0x05dd, + 0x05b9, 0x0002, 0x0012, 0x062b, 0x0604, 0x0003, 0x027b, 0x0000, + 0x027e, 0x0001, 0x0012, 0x0655, 0x0002, 0x0281, 0x0285, 0x0002, + 0x0012, 0x065d, 0x065d, 0x0002, 0x0012, 0x0670, 0x0670, 0x0003, + 0x028d, 0x0000, 0x0290, 0x0001, 0x0012, 0x0655, 0x0002, 0x0293, + 0x0297, 0x0002, 0x0012, 0x065d, 0x065d, 0x0002, 0x0012, 0x0670, + 0x0670, 0x0003, 0x029f, 0x02a2, 0x02a7, 0x0001, 0x0012, 0x068d, + // Entry 9B80 - 9BBF + 0x0003, 0x0012, 0x069a, 0x06b1, 0x06c5, 0x0002, 0x02aa, 0x02ae, + 0x0002, 0x0012, 0x06dc, 0x06dc, 0x0002, 0x0012, 0x06f4, 0x06dc, + 0x0003, 0x02b6, 0x0000, 0x02b9, 0x0001, 0x0012, 0x0716, 0x0002, + 0x02bc, 0x02c0, 0x0002, 0x0012, 0x0721, 0x0721, 0x0002, 0x0012, + 0x0737, 0x0737, 0x0003, 0x02c8, 0x0000, 0x02cb, 0x0001, 0x0012, + 0x0716, 0x0002, 0x02ce, 0x02d2, 0x0002, 0x0012, 0x0721, 0x0721, + 0x0002, 0x0012, 0x0737, 0x0737, 0x0003, 0x02da, 0x02dd, 0x02e2, + 0x0001, 0x0012, 0x0757, 0x0003, 0x0012, 0x0761, 0x0775, 0x0786, + // Entry 9BC0 - 9BFF + 0x0002, 0x02e5, 0x02e9, 0x0002, 0x0012, 0x07af, 0x079a, 0x0002, + 0x0012, 0x07e6, 0x07c7, 0x0003, 0x02f1, 0x0000, 0x02f4, 0x0001, + 0x0012, 0x0808, 0x0002, 0x02f7, 0x02fb, 0x0002, 0x0012, 0x0810, + 0x0810, 0x0002, 0x0012, 0x0823, 0x0823, 0x0003, 0x0303, 0x0000, + 0x0306, 0x0001, 0x0012, 0x0840, 0x0002, 0x0309, 0x030d, 0x0002, + 0x0012, 0x0810, 0x0810, 0x0002, 0x0012, 0x0823, 0x0823, 0x0004, + 0x0316, 0x0319, 0x031e, 0x0329, 0x0001, 0x0012, 0x0847, 0x0003, + 0x0012, 0x085d, 0x0873, 0x0887, 0x0002, 0x0321, 0x0325, 0x0002, + // Entry 9C00 - 9C3F + 0x0012, 0x08b8, 0x0897, 0x0002, 0x0012, 0x0907, 0x08dc, 0x0001, + 0x0012, 0x0935, 0x0004, 0x0331, 0x0000, 0x0334, 0x033f, 0x0001, + 0x0012, 0x095d, 0x0002, 0x0337, 0x033b, 0x0002, 0x0012, 0x0965, + 0x0965, 0x0002, 0x0012, 0x0978, 0x0978, 0x0001, 0x0012, 0x0935, + 0x0004, 0x0347, 0x0000, 0x034a, 0x0355, 0x0001, 0x0012, 0x095d, + 0x0002, 0x034d, 0x0351, 0x0002, 0x0012, 0x0965, 0x0965, 0x0002, + 0x0012, 0x0978, 0x0978, 0x0001, 0x0012, 0x0935, 0x0003, 0x035c, + 0x035f, 0x0364, 0x0001, 0x0012, 0x048d, 0x0003, 0x0012, 0x0995, + // Entry 9C40 - 9C7F + 0x099c, 0x09aa, 0x0002, 0x0367, 0x036b, 0x0002, 0x0012, 0x09c9, + 0x09b7, 0x0002, 0x0012, 0x0a03, 0x09ee, 0x0003, 0x0373, 0x0000, + 0x0376, 0x0001, 0x0012, 0x048d, 0x0002, 0x0379, 0x037d, 0x0002, + 0x0012, 0x09c9, 0x09b7, 0x0002, 0x0012, 0x0a03, 0x09ee, 0x0003, + 0x0385, 0x0000, 0x0388, 0x0001, 0x0012, 0x048d, 0x0002, 0x038b, + 0x038f, 0x0002, 0x0012, 0x09c9, 0x09c9, 0x0002, 0x0012, 0x0a03, + 0x09ee, 0x0001, 0x0395, 0x0001, 0x0012, 0x0a2b, 0x0003, 0x0000, + 0x039c, 0x03a1, 0x0003, 0x0012, 0x0a42, 0x0a62, 0x0a7f, 0x0002, + // Entry 9C80 - 9CBF + 0x03a4, 0x03a8, 0x0002, 0x0012, 0x0a9f, 0x0a9f, 0x0002, 0x0012, + 0x0ac0, 0x0ac0, 0x0003, 0x0000, 0x03b0, 0x03b5, 0x0003, 0x0012, + 0x0ae4, 0x0af9, 0x0b0b, 0x0002, 0x03b8, 0x03bc, 0x0002, 0x0012, + 0x0a9f, 0x0a9f, 0x0002, 0x0012, 0x0ac0, 0x0ac0, 0x0003, 0x0000, + 0x03c4, 0x03c9, 0x0003, 0x0012, 0x0b20, 0x0b31, 0x0b3f, 0x0002, + 0x03cc, 0x03d0, 0x0002, 0x0012, 0x0a9f, 0x0a9f, 0x0002, 0x0012, + 0x0ac0, 0x0ac0, 0x0003, 0x0000, 0x03d8, 0x03dd, 0x0003, 0x0012, + 0x0b50, 0x0b6d, 0x0b87, 0x0002, 0x03e0, 0x03e4, 0x0002, 0x0012, + // Entry 9CC0 - 9CFF + 0x0ba4, 0x0ba4, 0x0002, 0x0012, 0x0bc2, 0x0bc2, 0x0003, 0x0000, + 0x03ec, 0x03f1, 0x0003, 0x0012, 0x0be3, 0x0bf8, 0x0c0a, 0x0002, + 0x03f4, 0x03f8, 0x0002, 0x0012, 0x0ba4, 0x0ba4, 0x0002, 0x0012, + 0x0bc2, 0x0bc2, 0x0003, 0x0000, 0x0400, 0x0405, 0x0003, 0x0012, + 0x0c1f, 0x0c2d, 0x0c38, 0x0002, 0x0408, 0x040c, 0x0002, 0x0012, + 0x0ba4, 0x0ba4, 0x0002, 0x0012, 0x0bc2, 0x0bc2, 0x0003, 0x0000, + 0x0414, 0x0419, 0x0003, 0x0012, 0x0c46, 0x0c61, 0x0c79, 0x0002, + 0x041c, 0x0420, 0x0002, 0x0012, 0x0c94, 0x0c94, 0x0002, 0x0012, + // Entry 9D00 - 9D3F + 0x0cb0, 0x0cb0, 0x0003, 0x0000, 0x0428, 0x042d, 0x0003, 0x0012, + 0x0ccf, 0x0ce4, 0x0cf6, 0x0002, 0x0430, 0x0434, 0x0002, 0x0012, + 0x0c94, 0x0c94, 0x0002, 0x0012, 0x0cb0, 0x0cb0, 0x0003, 0x0000, + 0x043c, 0x0441, 0x0003, 0x0012, 0x0d0b, 0x0d1c, 0x0d2a, 0x0002, + 0x0444, 0x0448, 0x0002, 0x0012, 0x0c94, 0x0c94, 0x0002, 0x0012, + 0x0cb0, 0x0cb0, 0x0003, 0x0000, 0x0450, 0x0455, 0x0003, 0x0012, + 0x0d3b, 0x0d56, 0x0d6e, 0x0002, 0x0458, 0x045c, 0x0002, 0x0012, + 0x0d89, 0x0d89, 0x0002, 0x0012, 0x0da5, 0x0da5, 0x0003, 0x0000, + // Entry 9D40 - 9D7F + 0x0464, 0x0469, 0x0003, 0x0012, 0x0dc4, 0x0dd9, 0x0deb, 0x0002, + 0x046c, 0x0470, 0x0002, 0x0012, 0x0d89, 0x0d89, 0x0002, 0x0012, + 0x0da5, 0x0da5, 0x0003, 0x0000, 0x0478, 0x047d, 0x0003, 0x0012, + 0x0e00, 0x0e0e, 0x0e19, 0x0002, 0x0480, 0x0484, 0x0002, 0x0012, + 0x0d89, 0x0d89, 0x0002, 0x0012, 0x0da5, 0x0da5, 0x0003, 0x0000, + 0x048c, 0x0491, 0x0003, 0x0012, 0x0e27, 0x0e3b, 0x0e53, 0x0002, + 0x0494, 0x0498, 0x0002, 0x0012, 0x0e6e, 0x0e6e, 0x0002, 0x0012, + 0x0e8a, 0x0e8a, 0x0003, 0x0000, 0x04a0, 0x04a5, 0x0003, 0x0012, + // Entry 9D80 - 9DBF + 0x0ea9, 0x0ebe, 0x0ed0, 0x0002, 0x04a8, 0x04ac, 0x0002, 0x0012, + 0x0e6e, 0x0e6e, 0x0002, 0x0012, 0x0e8a, 0x0e8a, 0x0003, 0x0000, + 0x04b4, 0x04b9, 0x0003, 0x0012, 0x0ee5, 0x0ef6, 0x0f04, 0x0002, + 0x04bc, 0x04c0, 0x0002, 0x0012, 0x0e6e, 0x0e6e, 0x0002, 0x0012, + 0x0e8a, 0x0e8a, 0x0003, 0x0000, 0x04c8, 0x04cd, 0x0003, 0x0012, + 0x0f15, 0x0f32, 0x0f4c, 0x0002, 0x04d0, 0x04d4, 0x0002, 0x0012, + 0x0f69, 0x0f69, 0x0002, 0x0012, 0x0f8e, 0x0f8e, 0x0003, 0x0000, + 0x04dc, 0x04e1, 0x0003, 0x0012, 0x0faf, 0x0fc4, 0x0fd6, 0x0002, + // Entry 9DC0 - 9DFF + 0x04e4, 0x04e8, 0x0002, 0x0012, 0x0f69, 0x0f69, 0x0002, 0x0012, + 0x0f8e, 0x0f8e, 0x0003, 0x0000, 0x04f0, 0x04f5, 0x0003, 0x0012, + 0x0feb, 0x0ff9, 0x1004, 0x0002, 0x04f8, 0x04fc, 0x0002, 0x0012, + 0x0f69, 0x0f69, 0x0002, 0x0012, 0x0f8e, 0x0f8e, 0x0003, 0x0000, + 0x0504, 0x0509, 0x0003, 0x0012, 0x1012, 0x1032, 0x104f, 0x0002, + 0x050c, 0x0510, 0x0002, 0x0012, 0x106f, 0x106f, 0x0002, 0x0012, + 0x1097, 0x1097, 0x0003, 0x0000, 0x0518, 0x051d, 0x0003, 0x0012, + 0x10bb, 0x10d0, 0x10e2, 0x0002, 0x0520, 0x0524, 0x0002, 0x0012, + // Entry 9E00 - 9E3F + 0x106f, 0x106f, 0x0002, 0x0012, 0x1097, 0x1097, 0x0003, 0x0000, + 0x052c, 0x0531, 0x0003, 0x0012, 0x10f7, 0x1108, 0x1116, 0x0002, + 0x0534, 0x0538, 0x0002, 0x0012, 0x106f, 0x106f, 0x0002, 0x0012, + 0x1097, 0x1097, 0x0001, 0x053e, 0x0001, 0x0012, 0x1127, 0x0003, + 0x0545, 0x0548, 0x054c, 0x0001, 0x0012, 0x113b, 0x0002, 0x0012, + 0xffff, 0x1148, 0x0002, 0x054f, 0x0553, 0x0002, 0x0012, 0x1174, + 0x115c, 0x0002, 0x0012, 0x11aa, 0x118f, 0x0003, 0x055b, 0x0000, + 0x055e, 0x0001, 0x0012, 0x11c8, 0x0002, 0x0561, 0x0565, 0x0002, + // Entry 9E40 - 9E7F + 0x0012, 0x11d0, 0x11d0, 0x0002, 0x0012, 0x11e3, 0x11e3, 0x0003, + 0x056d, 0x0000, 0x0570, 0x0001, 0x0012, 0x11c8, 0x0002, 0x0573, + 0x0577, 0x0002, 0x0012, 0x11d0, 0x11d0, 0x0002, 0x0012, 0x11e3, + 0x11e3, 0x0003, 0x057f, 0x0582, 0x0586, 0x0001, 0x0012, 0x1200, + 0x0002, 0x0012, 0xffff, 0x1216, 0x0002, 0x0589, 0x058d, 0x0002, + 0x0012, 0x1233, 0x1233, 0x0002, 0x0012, 0x1254, 0x1254, 0x0003, + 0x0595, 0x0000, 0x0598, 0x0001, 0x0012, 0x127f, 0x0002, 0x059b, + 0x059f, 0x0002, 0x0012, 0x128a, 0x128a, 0x0002, 0x0012, 0x12a0, + // Entry 9E80 - 9EBF + 0x12a0, 0x0003, 0x05a7, 0x0000, 0x05aa, 0x0001, 0x0012, 0x127f, + 0x0002, 0x05ad, 0x05b1, 0x0002, 0x0012, 0x128a, 0x128a, 0x0002, + 0x0012, 0x12a0, 0x12a0, 0x0003, 0x05b9, 0x05bc, 0x05c0, 0x0001, + 0x0012, 0x12c0, 0x0002, 0x0012, 0xffff, 0x12ca, 0x0002, 0x05c3, + 0x05c7, 0x0002, 0x0012, 0x12e6, 0x12d1, 0x0002, 0x0012, 0x1326, + 0x130e, 0x0003, 0x05cf, 0x0000, 0x05d2, 0x0001, 0x0012, 0x1347, + 0x0002, 0x05d5, 0x05d9, 0x0002, 0x0012, 0x1352, 0x1352, 0x0002, + 0x0012, 0x1368, 0x1368, 0x0003, 0x05e1, 0x0000, 0x05e4, 0x0001, + // Entry 9EC0 - 9EFF + 0x0012, 0x1347, 0x0002, 0x05e7, 0x05eb, 0x0002, 0x0012, 0x1352, + 0x1352, 0x0002, 0x0012, 0x1368, 0x1368, 0x0001, 0x05f1, 0x0001, + 0x0012, 0x1381, 0x0004, 0x05f9, 0x05fe, 0x0603, 0x0624, 0x0003, + 0x0000, 0x1dc7, 0x2229, 0x2234, 0x0003, 0x0012, 0x13b4, 0x13c8, + 0x13f0, 0x0002, 0x060e, 0x0606, 0x0002, 0x0000, 0x0609, 0x0003, + 0x0012, 0xffff, 0x1414, 0x1435, 0x0003, 0x0612, 0x061e, 0x0618, + 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, + 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, + // Entry 9F00 - 9F3F + 0xffff, 0x05a8, 0x0002, 0x07ed, 0x0627, 0x0003, 0x06c1, 0x0757, + 0x062b, 0x0094, 0x0012, 0x145f, 0x1485, 0x14af, 0x14dc, 0x1546, + 0x15d4, 0x164f, 0x16ba, 0x1736, 0x17bc, 0x1831, 0xffff, 0x18a9, + 0x191b, 0x1999, 0x1a2d, 0x1ae2, 0x1b56, 0x1bdb, 0x1c85, 0x1d4d, + 0x1e01, 0x1ea7, 0x1f21, 0x1f95, 0x1ff2, 0x200c, 0x2046, 0x2097, + 0x20f1, 0x2168, 0x21ac, 0x2218, 0x2280, 0x230a, 0x2367, 0x239d, + 0x23ea, 0x2480, 0x252a, 0x257c, 0x2596, 0x25c6, 0x2623, 0x26a6, + 0x26e7, 0x2774, 0x27e7, 0x283c, 0x28d6, 0x2952, 0x2997, 0x29be, + // Entry 9F40 - 9F7F + 0x2a02, 0x2a33, 0x2a6d, 0x2abe, 0x2aeb, 0x2b3c, 0x2bda, 0x2c4b, + 0x2c7b, 0x2cc2, 0x2d64, 0x2ddd, 0x2e28, 0x2e58, 0x2e85, 0x2eb1, + 0x2ede, 0x2f15, 0x2f66, 0x2fd8, 0x3046, 0x30be, 0xffff, 0x3119, + 0x3149, 0x3196, 0x31f1, 0x322e, 0x328b, 0x32ab, 0x3302, 0x3371, + 0x33b8, 0x3409, 0x3429, 0x3449, 0x3469, 0x34b3, 0x350a, 0x355b, + 0x361a, 0x36bc, 0x3738, 0x3789, 0x37a6, 0x37bd, 0x3801, 0x3893, + 0x3931, 0x39b3, 0x39ca, 0x3a28, 0x3abe, 0x3b38, 0x3ba9, 0x3c00, + 0x3c17, 0x3c59, 0x3cbb, 0x3d23, 0x3d80, 0x3deb, 0x3e7c, 0x3e99, + // Entry 9F80 - 9FBF + 0x3eb3, 0x3ed9, 0x3ef9, 0x3f30, 0xffff, 0x3f9b, 0x3ff0, 0x400d, + 0x403d, 0x406a, 0x4094, 0x40b1, 0x40cb, 0x40ff, 0x4154, 0x4177, + 0x41ae, 0x41f9, 0x4239, 0x42a2, 0x42d6, 0x4347, 0x43c7, 0x4418, + 0x445e, 0x44e1, 0x4538, 0x4555, 0x457f, 0x45c7, 0x463e, 0x0094, + 0x0012, 0xffff, 0xffff, 0xffff, 0xffff, 0x1519, 0x15b7, 0x1632, + 0x16a0, 0x1712, 0x17a2, 0x1814, 0xffff, 0x188f, 0x18fe, 0x1976, + 0x19f6, 0x1ac2, 0x1b39, 0x1bb4, 0x1c4a, 0x1d1c, 0x1dd0, 0x1e84, + 0x1f04, 0x1f72, 0xffff, 0xffff, 0x2029, 0xffff, 0x20c1, 0xffff, + // Entry 9FC0 - 9FFF + 0x2192, 0x2201, 0x225d, 0x22e7, 0xffff, 0xffff, 0x23c7, 0x2447, + 0x2513, 0xffff, 0xffff, 0xffff, 0x25ed, 0xffff, 0x26c3, 0x2746, + 0xffff, 0x280e, 0x28af, 0x293b, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2a50, 0xffff, 0xffff, 0x2b0f, 0x2bad, 0xffff, 0xffff, 0x2c95, + 0x2d40, 0x2dc3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2f4c, 0x2fbb, 0x3029, 0x30a1, 0xffff, 0xffff, 0xffff, 0x3179, + 0xffff, 0x320b, 0xffff, 0xffff, 0x32db, 0xffff, 0x339b, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3493, 0xffff, 0x3524, 0x35ed, 0x3698, + // Entry A000 - A03F + 0x371b, 0xffff, 0xffff, 0xffff, 0x37d7, 0x386c, 0x3902, 0xffff, + 0xffff, 0x39fa, 0x3a9b, 0x3b1b, 0x3b89, 0xffff, 0xffff, 0x3c3f, + 0x3ca4, 0x3d00, 0xffff, 0x3db3, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3f13, 0xffff, 0x3f81, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x40e5, 0xffff, 0xffff, 0x4194, 0xffff, + 0x4210, 0xffff, 0x42bc, 0x4321, 0x43aa, 0xffff, 0x4438, 0x44c1, + 0xffff, 0xffff, 0xffff, 0x45aa, 0x4618, 0x0094, 0x0012, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1583, 0x1601, 0x167c, 0x16e4, 0x176a, + // Entry A040 - A07F + 0x17e6, 0x185e, 0xffff, 0x18d3, 0x1948, 0x19cc, 0x1a74, 0x1b12, + 0x1b83, 0x1c12, 0x1cd0, 0x1d8e, 0x1e42, 0x1eda, 0x1f4e, 0x1fc8, + 0xffff, 0xffff, 0x2073, 0xffff, 0x2131, 0xffff, 0x21d6, 0x223f, + 0x22b3, 0x233d, 0xffff, 0xffff, 0x241d, 0x24c9, 0x2551, 0xffff, + 0xffff, 0xffff, 0x2669, 0xffff, 0x271b, 0x27b2, 0xffff, 0x287a, + 0x290d, 0x2979, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a9a, 0xffff, + 0xffff, 0x2b79, 0x2c17, 0xffff, 0xffff, 0x2cff, 0x2d98, 0x2e07, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f90, 0x3005, + // Entry A080 - A0BF + 0x3073, 0x30eb, 0xffff, 0xffff, 0xffff, 0x31c3, 0xffff, 0x3261, + 0xffff, 0xffff, 0x3339, 0xffff, 0x33e5, 0xffff, 0xffff, 0xffff, + 0xffff, 0x34e3, 0xffff, 0x35a2, 0x3657, 0x36f0, 0x3765, 0xffff, + 0xffff, 0xffff, 0x383b, 0x38ca, 0x3970, 0xffff, 0xffff, 0x3a66, + 0x3af1, 0x3b65, 0x3bd9, 0xffff, 0xffff, 0x3c83, 0x3ce2, 0x3d56, + 0xffff, 0x3e33, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3f5d, + 0xffff, 0x3fc5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x4129, 0xffff, 0xffff, 0x41d8, 0xffff, 0x4272, 0xffff, + // Entry A0C0 - A0FF + 0x4300, 0x437d, 0x43f4, 0xffff, 0x4494, 0x4511, 0xffff, 0xffff, + 0xffff, 0x45f4, 0x4674, 0x0003, 0x07f1, 0x0873, 0x0832, 0x003f, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06eb, 0xffff, + 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry A100 - A13F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e2, + 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06ef, + 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry A140 - A17F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, 0x097c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry A180 - A1BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x16eb, 0x0002, 0x0003, 0x0289, 0x0011, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x00b2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0240, 0x0008, + 0x0000, 0x001e, 0x005f, 0x0078, 0x0000, 0x0090, 0x0000, 0x00a1, + 0x0002, 0x0021, 0x0040, 0x0003, 0x0025, 0x002e, 0x0037, 0x0007, + 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, + // Entry A1C0 - A1FF + 0x0007, 0x0013, 0x006d, 0x0070, 0x0073, 0x0076, 0x0079, 0x007c, + 0x007f, 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, + 0x0057, 0x0062, 0x0003, 0x0044, 0x004d, 0x0056, 0x0007, 0x0013, + 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, 0x0007, + 0x0013, 0x006d, 0x0070, 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, + 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, + 0x0062, 0x0002, 0x0062, 0x006d, 0x0003, 0x0000, 0x0000, 0x0066, + 0x0005, 0x0013, 0xffff, 0x0082, 0x009a, 0x00b2, 0x00c8, 0x0003, + // Entry A200 - A23F + 0x0000, 0x0000, 0x0071, 0x0005, 0x0013, 0xffff, 0x0082, 0x009a, + 0x00b2, 0x00c8, 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, 0x0087, + 0x0002, 0x0081, 0x0084, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, + 0x00e8, 0x0002, 0x008a, 0x008d, 0x0001, 0x0013, 0x00e2, 0x0001, + 0x0013, 0x00e8, 0x0004, 0x009e, 0x0098, 0x0095, 0x009b, 0x0001, + 0x0000, 0x0489, 0x0001, 0x0013, 0x00ee, 0x0001, 0x0000, 0x04a5, + 0x0001, 0x0000, 0x04af, 0x0004, 0x00af, 0x00a9, 0x00a6, 0x00ac, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry A240 - A27F + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x00bb, 0x0120, 0x0177, + 0x01ac, 0x01ed, 0x020d, 0x021e, 0x022f, 0x0002, 0x00be, 0x00ef, + 0x0003, 0x00c2, 0x00d1, 0x00e0, 0x000d, 0x0013, 0xffff, 0x00fd, + 0x0117, 0x0122, 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, 0x0168, + 0x0177, 0x018f, 0x01a7, 0x000d, 0x0013, 0xffff, 0x01bf, 0x007f, + 0x01c2, 0x01c5, 0x01c2, 0x01c8, 0x01cb, 0x01c2, 0x01c2, 0x01cb, + 0x01cb, 0x01bf, 0x000d, 0x0013, 0xffff, 0x00fd, 0x0117, 0x0122, + 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, 0x0168, 0x0177, 0x018f, + // Entry A280 - A2BF + 0x01a7, 0x0003, 0x00f3, 0x0102, 0x0111, 0x000d, 0x0013, 0xffff, + 0x00fd, 0x0117, 0x0122, 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, + 0x0168, 0x0177, 0x018f, 0x01a7, 0x000d, 0x0013, 0xffff, 0x01bf, + 0x007f, 0x01c2, 0x01c5, 0x01c2, 0x01c8, 0x01cb, 0x01c2, 0x01c2, + 0x01cb, 0x01cb, 0x01bf, 0x000d, 0x0013, 0xffff, 0x00fd, 0x0117, + 0x0122, 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, 0x0168, 0x0177, + 0x018f, 0x01a7, 0x0002, 0x0123, 0x014d, 0x0005, 0x0129, 0x0132, + 0x0144, 0x0000, 0x013b, 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, + // Entry A2C0 - A2FF + 0x0031, 0x0044, 0x0057, 0x0062, 0x0007, 0x0013, 0x006d, 0x0070, + 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, 0x0007, 0x0013, 0x01ce, + 0x01d3, 0x01d8, 0x01dd, 0x01e2, 0x007c, 0x007f, 0x0007, 0x0013, + 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, 0x0005, + 0x0153, 0x015c, 0x016e, 0x0000, 0x0165, 0x0007, 0x0013, 0x0000, + 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, 0x0007, 0x0013, + 0x006d, 0x0070, 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, 0x0007, + 0x0013, 0x01ce, 0x01d3, 0x01d8, 0x01dd, 0x01e2, 0x007c, 0x007f, + // Entry A300 - A33F + 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, + 0x0062, 0x0002, 0x017a, 0x0193, 0x0003, 0x017e, 0x0185, 0x018c, + 0x0005, 0x0013, 0xffff, 0x01e7, 0x01ec, 0x01f1, 0x01f6, 0x0005, + 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x0005, 0x0013, + 0xffff, 0x0082, 0x009a, 0x00b2, 0x00c8, 0x0003, 0x0197, 0x019e, + 0x01a5, 0x0005, 0x0013, 0xffff, 0x01e7, 0x01ec, 0x01f1, 0x01f6, + 0x0005, 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x0005, + 0x0013, 0xffff, 0x0082, 0x009a, 0x00b2, 0x00c8, 0x0002, 0x01af, + // Entry A340 - A37F + 0x01ce, 0x0003, 0x01b3, 0x01bc, 0x01c5, 0x0002, 0x01b6, 0x01b9, + 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, 0x01bf, + 0x01c2, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, + 0x01c8, 0x01cb, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, + 0x0003, 0x01d2, 0x01db, 0x01e4, 0x0002, 0x01d5, 0x01d8, 0x0001, + 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, 0x01de, 0x01e1, + 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, 0x01e7, + 0x01ea, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0003, + // Entry A380 - A3BF + 0x01fc, 0x0207, 0x01f1, 0x0002, 0x01f4, 0x01f8, 0x0002, 0x0013, + 0x01fb, 0x020d, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x01ff, + 0x0203, 0x0002, 0x0013, 0x01fb, 0x020d, 0x0002, 0x0000, 0x04f5, + 0x04f9, 0x0001, 0x0209, 0x0002, 0x0013, 0x021a, 0x0220, 0x0004, + 0x021b, 0x0215, 0x0212, 0x0218, 0x0001, 0x0000, 0x04fc, 0x0001, + 0x0013, 0x0223, 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, + 0x0004, 0x022c, 0x0226, 0x0223, 0x0229, 0x0001, 0x0002, 0x0453, + 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + // Entry A3C0 - A3FF + 0x0478, 0x0004, 0x023d, 0x0237, 0x0234, 0x023a, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0242, 0x0002, 0x0245, 0x0267, 0x0003, + 0x0249, 0x0000, 0x0258, 0x000d, 0x0013, 0xffff, 0x0230, 0x0241, + 0x0250, 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, 0x02ae, 0x02bf, + 0x02d2, 0x02e3, 0x000d, 0x0013, 0xffff, 0x0230, 0x0241, 0x0250, + 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, 0x02ae, 0x02bf, 0x02d2, + 0x02e3, 0x0003, 0x026b, 0x0000, 0x027a, 0x000d, 0x0013, 0xffff, + // Entry A400 - A43F + 0x0230, 0x0241, 0x0250, 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, + 0x02ae, 0x02bf, 0x02d2, 0x02e3, 0x000d, 0x0013, 0xffff, 0x0230, + 0x0241, 0x0250, 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, 0x02ae, + 0x02bf, 0x02d2, 0x02e3, 0x003d, 0x0000, 0x0000, 0x0000, 0x02c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02cc, 0x0000, 0x0000, + 0x02d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02d6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02e1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry A440 - A47F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x02e6, 0x0000, 0x0000, 0x02eb, 0x0000, 0x0000, + 0x02f0, 0x0001, 0x02c9, 0x0001, 0x0013, 0x02f0, 0x0001, 0x02ce, + 0x0001, 0x0013, 0x02f7, 0x0001, 0x02d3, 0x0001, 0x0013, 0x0300, + 0x0002, 0x02d9, 0x02dc, 0x0001, 0x0013, 0x030b, 0x0003, 0x0000, + 0x1b2f, 0x2240, 0x224b, 0x0001, 0x02e3, 0x0001, 0x0013, 0x0312, + 0x0001, 0x02e8, 0x0001, 0x0013, 0x0326, 0x0001, 0x02ed, 0x0001, + // Entry A480 - A4BF + 0x0013, 0x0335, 0x0001, 0x02f2, 0x0001, 0x0013, 0x0340, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0a4b, 0x0fb9, 0x0012, + 0x0017, 0x0027, 0x0066, 0x0091, 0x03ad, 0x0000, 0x0434, 0x045f, + 0x068b, 0x06c1, 0x06ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x071e, + // Entry A4C0 - A4FF + 0x0a0a, 0x0a3e, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, + 0x0000, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, + 0x0000, 0x0000, 0x0006, 0x002e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0055, 0x0002, 0x0031, 0x0043, 0x0002, 0x0000, 0x0034, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, + 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x0002, 0x0000, + 0x0046, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, + // Entry A500 - A53F + 0x0004, 0x0063, 0x005d, 0x005a, 0x0060, 0x0001, 0x0013, 0x0349, + 0x0001, 0x0013, 0x0357, 0x0001, 0x0013, 0x0357, 0x0001, 0x0013, + 0x0357, 0x0001, 0x0068, 0x0002, 0x006b, 0x007e, 0x0002, 0x0000, + 0x006e, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, + 0x0422, 0x0002, 0x0000, 0x0081, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + 0x221d, 0x2220, 0x2223, 0x0422, 0x000a, 0x009c, 0x0000, 0x0000, + // Entry A540 - A57F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e3, 0x00f7, 0x0002, + 0x009f, 0x00c1, 0x0003, 0x00a3, 0x0000, 0x00b2, 0x000d, 0x0000, + 0xffff, 0x0003, 0x0007, 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, + 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x000d, 0x0013, 0xffff, + 0x035f, 0x036e, 0x037d, 0x038d, 0x039e, 0x03ad, 0x03bd, 0x03cc, + 0x03da, 0x03eb, 0x03fc, 0x0410, 0x0003, 0x00c5, 0x0000, 0x00d4, + 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, 0x000b, 0x000f, 0x0013, + 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x000d, + // Entry A580 - A5BF + 0x0013, 0xffff, 0x035f, 0x036e, 0x037d, 0x038d, 0x039e, 0x03ad, + 0x03bd, 0x03cc, 0x03da, 0x03eb, 0x03fc, 0x0410, 0x0003, 0x00e7, + 0x00f2, 0x00ec, 0x0003, 0x0000, 0x004e, 0x0055, 0x004e, 0x0004, + 0x0000, 0xffff, 0xffff, 0xffff, 0x004e, 0x0003, 0x0000, 0x004e, + 0x0055, 0x004e, 0x0006, 0x00fe, 0x0131, 0x01f4, 0x0000, 0x02b7, + 0x037a, 0x0001, 0x0100, 0x0003, 0x0104, 0x0113, 0x0122, 0x000d, + 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, + 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x000d, 0x0000, + // Entry A5C0 - A5FF + 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, + 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x000d, 0x0000, 0xffff, + 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, + 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x0133, 0x0003, 0x0137, + 0x0176, 0x01b5, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, + 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, + 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, + 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, + // Entry A600 - A63F + 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, + 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, + 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, + 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, + 0x0390, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, + 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, + 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, + 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, + // Entry A640 - A67F + 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, + 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, + 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, + 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, + 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, + 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, + 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, + 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, + // Entry A680 - A6BF + 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, + 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, + 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, + 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, + 0x01f6, 0x0003, 0x01fa, 0x0239, 0x0278, 0x003d, 0x0000, 0xffff, + 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, + 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, + 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, + // Entry A6C0 - A6FF + 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, + 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, + 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, + 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, + 0x0377, 0x0381, 0x0389, 0x0390, 0x003d, 0x0000, 0xffff, 0x01bd, + 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, + 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, + 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, + // Entry A700 - A73F + 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, + 0x02c3, 0xffff, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, + 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, + 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, + 0x0381, 0x0389, 0x0390, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, + 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, + 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, + 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, + // Entry A740 - A77F + 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, + 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, + 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, + 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, + 0x0389, 0x0390, 0x0001, 0x02b9, 0x0003, 0x02bd, 0x02fc, 0x033b, + 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, + 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, + 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, + // Entry A780 - A7BF + 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, + 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, + 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, + 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, + 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x003d, + 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, + 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, + 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, + // Entry A7C0 - A7FF + 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, + 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, + 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, + 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, + 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x003d, 0x0000, + 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, + 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, + 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, + // Entry A800 - A83F + 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, + 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, + 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, + 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, + 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, 0x037c, 0x0003, + 0x0380, 0x038f, 0x039e, 0x000d, 0x0013, 0xffff, 0x0423, 0x0429, + 0x042f, 0x0434, 0x043b, 0x0440, 0x0444, 0x044a, 0x044f, 0x0455, + 0x045c, 0x0460, 0x000d, 0x0013, 0xffff, 0x0423, 0x0429, 0x042f, + // Entry A840 - A87F + 0x0434, 0x043b, 0x0440, 0x0444, 0x044a, 0x044f, 0x0455, 0x045c, + 0x0460, 0x000d, 0x0013, 0xffff, 0x0423, 0x0429, 0x042f, 0x0434, + 0x043b, 0x0440, 0x0444, 0x044a, 0x044f, 0x0455, 0x045c, 0x0460, + 0x0005, 0x03b3, 0x0000, 0x0000, 0x0000, 0x041e, 0x0002, 0x03b6, + 0x03ea, 0x0003, 0x03ba, 0x03ca, 0x03da, 0x000e, 0x0000, 0xffff, + 0x042f, 0x0438, 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, + 0x0467, 0x046e, 0x0473, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, + // Entry A880 - A8BF + 0x0043, 0x221d, 0x2220, 0x2223, 0x0422, 0x000e, 0x0000, 0xffff, + 0x042f, 0x0438, 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, + 0x0467, 0x046e, 0x0473, 0x0479, 0x0481, 0x0003, 0x03ee, 0x03fe, + 0x040e, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x043f, 0x0445, + 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, 0x046e, 0x0473, 0x0479, + 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, + 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x043f, 0x0445, + // Entry A8C0 - A8FF + 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, 0x046e, 0x0473, 0x0479, + 0x0481, 0x0003, 0x0428, 0x042e, 0x0422, 0x0001, 0x0424, 0x0002, + 0x0000, 0x0425, 0x042a, 0x0001, 0x042a, 0x0002, 0x0000, 0x0425, + 0x042a, 0x0001, 0x0430, 0x0002, 0x0000, 0x0425, 0x042a, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x043d, 0x0000, 0x044e, + 0x0004, 0x044b, 0x0445, 0x0442, 0x0448, 0x0001, 0x0013, 0x0466, + 0x0001, 0x0013, 0x0477, 0x0001, 0x0013, 0x0483, 0x0001, 0x0013, + 0x048d, 0x0004, 0x045c, 0x0456, 0x0453, 0x0459, 0x0001, 0x0000, + // Entry A900 - A93F + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0008, 0x0468, 0x04cd, 0x0524, 0x0559, 0x0642, + 0x0658, 0x0669, 0x067a, 0x0002, 0x046b, 0x049c, 0x0003, 0x046f, + 0x047e, 0x048d, 0x000d, 0x0013, 0xffff, 0x049c, 0x04a0, 0x04a5, + 0x04aa, 0x04ae, 0x04b3, 0x04b8, 0x04bd, 0x04c1, 0x04c7, 0x04cd, + 0x04d1, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, + 0x000d, 0x0013, 0xffff, 0x04d5, 0x04db, 0x04e2, 0x04ea, 0x04f0, + // Entry A940 - A97F + 0x04f8, 0x0500, 0x050a, 0x0510, 0x0518, 0x0520, 0x052a, 0x0003, + 0x04a0, 0x04af, 0x04be, 0x000d, 0x0013, 0xffff, 0x049c, 0x04a0, + 0x04a5, 0x04aa, 0x04ae, 0x04b3, 0x04b8, 0x04bd, 0x04c1, 0x04c7, + 0x04cd, 0x04d1, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, + 0x2223, 0x000d, 0x0013, 0xffff, 0x0533, 0x0539, 0x053f, 0x0547, + 0x054d, 0x0555, 0x055d, 0x0567, 0x0510, 0x056d, 0x0575, 0x057e, + 0x0002, 0x04d0, 0x04fa, 0x0005, 0x04d6, 0x04df, 0x04f1, 0x0000, + // Entry A980 - A9BF + 0x04e8, 0x0007, 0x0013, 0x0587, 0x058a, 0x058d, 0x0591, 0x0594, + 0x0598, 0x059c, 0x0007, 0x0000, 0x21cc, 0x21e5, 0x2254, 0x21d0, + 0x21e9, 0x21e5, 0x21d0, 0x0007, 0x0013, 0x0587, 0x058a, 0x058d, + 0x0591, 0x0594, 0x0598, 0x059c, 0x0007, 0x0013, 0x059f, 0x05a7, + 0x05b1, 0x05b9, 0x05c1, 0x05ca, 0x05d1, 0x0005, 0x0500, 0x0509, + 0x051b, 0x0000, 0x0512, 0x0007, 0x0013, 0x0587, 0x058a, 0x058d, + 0x0591, 0x0594, 0x0598, 0x059c, 0x0007, 0x0000, 0x21cc, 0x21e5, + 0x2254, 0x21d0, 0x21e9, 0x21e5, 0x21d0, 0x0007, 0x0013, 0x0587, + // Entry A9C0 - A9FF + 0x058a, 0x058d, 0x0591, 0x0594, 0x0598, 0x059c, 0x0007, 0x0013, + 0x059f, 0x05a7, 0x05b1, 0x05b9, 0x05c1, 0x05ca, 0x05d1, 0x0002, + 0x0527, 0x0540, 0x0003, 0x052b, 0x0532, 0x0539, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0013, 0xffff, 0x05d8, + 0x05e7, 0x05f6, 0x0605, 0x0003, 0x0544, 0x054b, 0x0552, 0x0005, + 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0013, 0xffff, + // Entry AA00 - AA3F + 0x05d8, 0x05e7, 0x05f6, 0x0605, 0x0002, 0x055c, 0x05cf, 0x0003, + 0x0560, 0x0585, 0x05aa, 0x0009, 0x056d, 0x0573, 0x056a, 0x0576, + 0x057c, 0x057f, 0x0582, 0x0570, 0x0579, 0x0001, 0x0013, 0x0614, + 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, 0x0620, 0x0001, 0x0013, + 0x0625, 0x0001, 0x0013, 0x062a, 0x0001, 0x0013, 0x061b, 0x0001, + 0x0013, 0x0625, 0x0001, 0x0013, 0x062d, 0x0001, 0x0013, 0x0633, + 0x0009, 0x0592, 0x0598, 0x058f, 0x059b, 0x05a1, 0x05a4, 0x05a7, + 0x0595, 0x059e, 0x0001, 0x0013, 0x0638, 0x0001, 0x0013, 0x061b, + // Entry AA40 - AA7F + 0x0001, 0x0013, 0x0620, 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, + 0x062a, 0x0001, 0x0001, 0x0279, 0x0001, 0x0013, 0x063e, 0x0001, + 0x0013, 0x0641, 0x0001, 0x0013, 0x0644, 0x0009, 0x05b7, 0x05bd, + 0x05b4, 0x05c0, 0x05c6, 0x05c9, 0x05cc, 0x05ba, 0x05c3, 0x0001, + 0x0013, 0x0647, 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, 0x064f, + 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, + 0x065d, 0x0001, 0x0013, 0x0667, 0x0001, 0x0013, 0x0671, 0x0001, + 0x0013, 0x0678, 0x0003, 0x05d3, 0x05f8, 0x061d, 0x0009, 0x05e0, + // Entry AA80 - AABF + 0x05e6, 0x05dd, 0x05e9, 0x05ef, 0x05f2, 0x05f5, 0x05e3, 0x05ec, + 0x0001, 0x0013, 0x0647, 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, + 0x064f, 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, 0x0657, 0x0001, + 0x0013, 0x065d, 0x0001, 0x0013, 0x0667, 0x0001, 0x0013, 0x0671, + 0x0001, 0x0013, 0x067f, 0x0009, 0x0605, 0x060b, 0x0602, 0x060e, + 0x0614, 0x0617, 0x061a, 0x0608, 0x0611, 0x0001, 0x0013, 0x0638, + 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, 0x0620, 0x0001, 0x0013, + 0x0625, 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, 0x061b, 0x0001, + // Entry AAC0 - AAFF + 0x0013, 0x0625, 0x0001, 0x0013, 0x062d, 0x0001, 0x0013, 0x067f, + 0x0009, 0x062a, 0x0630, 0x0627, 0x0633, 0x0639, 0x063c, 0x063f, + 0x062d, 0x0636, 0x0001, 0x0013, 0x0647, 0x0001, 0x0013, 0x061b, + 0x0001, 0x0013, 0x064f, 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, + 0x0657, 0x0001, 0x0013, 0x065d, 0x0001, 0x0013, 0x0667, 0x0001, + 0x0013, 0x0671, 0x0001, 0x0013, 0x067f, 0x0003, 0x064c, 0x0652, + 0x0646, 0x0001, 0x0648, 0x0002, 0x0013, 0x0683, 0x068e, 0x0001, + 0x064e, 0x0002, 0x0013, 0x0683, 0x068e, 0x0001, 0x0654, 0x0002, + // Entry AB00 - AB3F + 0x0013, 0x0694, 0x069d, 0x0004, 0x0666, 0x0660, 0x065d, 0x0663, + 0x0001, 0x0013, 0x06a2, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0013, + 0x0357, 0x0001, 0x0007, 0x0277, 0x0004, 0x0677, 0x0671, 0x066e, + 0x0674, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, + 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0688, 0x0682, + 0x067f, 0x0685, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0691, + 0x0000, 0x0000, 0x0000, 0x06ba, 0x0002, 0x0694, 0x06a7, 0x0002, + // Entry AB40 - AB7F + 0x0000, 0x0697, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, + 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, + 0x2223, 0x0422, 0x0002, 0x0000, 0x06aa, 0x000e, 0x0000, 0x003f, + 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, + 0x0043, 0x221d, 0x2220, 0x2223, 0x0422, 0x0001, 0x06bc, 0x0001, + 0x06be, 0x0001, 0x0000, 0x04ef, 0x0001, 0x06c3, 0x0002, 0x06c6, + 0x06d8, 0x0002, 0x0000, 0x06c9, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, + // Entry AB80 - ABBF + 0x221d, 0x2220, 0x2223, 0x0002, 0x0000, 0x06db, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, + 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x0005, 0x06f0, 0x0000, + 0x0000, 0x0000, 0x0717, 0x0002, 0x06f3, 0x0705, 0x0002, 0x0000, + 0x06f6, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, + 0x0002, 0x0000, 0x0708, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, + // Entry ABC0 - ABFF + 0x2220, 0x2223, 0x0001, 0x0719, 0x0001, 0x071b, 0x0001, 0x0000, + 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0725, 0x09f9, + 0x0003, 0x0819, 0x0909, 0x0729, 0x0001, 0x072b, 0x00ec, 0x0000, + 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, + 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, + 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, + 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, + 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, + // Entry AC00 - AC3F + 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, + 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, + 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, + 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, + 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, + 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, + 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, + 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, + // Entry AC40 - AC7F + 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, + 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, + 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, + 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, + 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, + 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, + 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, + 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, + // Entry AC80 - ACBF + 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, + 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, + 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, + 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, + 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, + 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, + 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, + 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, + // Entry ACC0 - ACFF + 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x081b, 0x00ec, 0x0000, + 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, + 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, + 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, + 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, + 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, + 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, + 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, + // Entry AD00 - AD3F + 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, + 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, + 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, + 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, + 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, + 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, + 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, + 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, + // Entry AD40 - AD7F + 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, + 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, + 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, + 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, + 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, + 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, + 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, + 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, + // Entry AD80 - ADBF + 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, + 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, + 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, + 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, + 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, + 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, + 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x090b, 0x00ec, 0x0000, + 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, + // Entry ADC0 - ADFF + 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, + 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, + 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, + 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, + 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, + 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, + 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, + 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, + // Entry AE00 - AE3F + 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, + 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, + 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, + 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, + 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, + 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, + 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, + 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, + // Entry AE40 - AE7F + 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, + 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, + 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, + 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, + 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, + 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, + 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, + 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, + // Entry AE80 - AEBF + 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, + 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, + 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, + 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, + 0x223a, 0x04dd, 0x21d0, 0x19c7, 0x0004, 0x0a07, 0x0a01, 0x09fe, + 0x0a04, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, + 0x0013, 0x0483, 0x0001, 0x0013, 0x048d, 0x0005, 0x0a10, 0x0000, + 0x0000, 0x0000, 0x0a37, 0x0002, 0x0a13, 0x0a25, 0x0002, 0x0000, + // Entry AEC0 - AEFF + 0x0a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, + 0x0002, 0x0000, 0x0a28, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, + 0x2220, 0x2223, 0x0001, 0x0a39, 0x0001, 0x0a3b, 0x0001, 0x0000, + 0x1a1d, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a44, 0x0001, + 0x0a46, 0x0001, 0x0a48, 0x0001, 0x0013, 0x06cd, 0x0040, 0x0a8c, + 0x0000, 0x0000, 0x0a91, 0x0ab0, 0x0acf, 0x0aee, 0x0b0d, 0x0b27, + // Entry AF00 - AF3F + 0x0b41, 0x0b60, 0x0b7a, 0x0b94, 0x0bb7, 0x0bda, 0x0000, 0x0000, + 0x0000, 0x0bfd, 0x0c1e, 0x0c3f, 0x0000, 0x0000, 0x0000, 0x0c60, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c65, 0x0c81, 0x0c9d, + 0x0cb9, 0x0cd5, 0x0cf1, 0x0d0d, 0x0d29, 0x0d45, 0x0d61, 0x0d7d, + 0x0d99, 0x0db5, 0x0dd1, 0x0ded, 0x0e09, 0x0e25, 0x0e41, 0x0e5d, + 0x0e79, 0x0e95, 0x0000, 0x0eb1, 0x0000, 0x0eb6, 0x0ed4, 0x0eee, + 0x0f08, 0x0f26, 0x0f40, 0x0f5a, 0x0f78, 0x0f96, 0x0fb4, 0x0001, + 0x0a8e, 0x0001, 0x0013, 0x06dc, 0x0003, 0x0a95, 0x0a98, 0x0a9d, + // Entry AF40 - AF7F + 0x0001, 0x0013, 0x06e7, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x0701, + 0x0002, 0x0aa0, 0x0aa8, 0x0006, 0x0013, 0x0733, 0x0710, 0xffff, + 0xffff, 0x071b, 0x0727, 0x0006, 0x0013, 0x074e, 0x073e, 0xffff, + 0xffff, 0x074e, 0x075d, 0x0003, 0x0ab4, 0x0ab7, 0x0abc, 0x0001, + 0x0013, 0x062a, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x0701, 0x0002, + 0x0abf, 0x0ac7, 0x0006, 0x0013, 0x0776, 0x076c, 0xffff, 0xffff, + 0x076c, 0x076c, 0x0006, 0x0013, 0x078d, 0x0780, 0xffff, 0xffff, + 0x0780, 0x0780, 0x0003, 0x0ad3, 0x0ad6, 0x0adb, 0x0001, 0x0013, + // Entry AF80 - AFBF + 0x062a, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x0701, 0x0002, 0x0ade, + 0x0ae6, 0x0006, 0x0013, 0x0776, 0x076c, 0xffff, 0xffff, 0x076c, + 0x076c, 0x0006, 0x0013, 0x078d, 0x0780, 0xffff, 0xffff, 0x0780, + 0x0780, 0x0003, 0x0af2, 0x0af5, 0x0afa, 0x0001, 0x0013, 0x079a, + 0x0003, 0x0013, 0x07a6, 0x07ba, 0x07cb, 0x0002, 0x0afd, 0x0b05, + 0x0006, 0x0013, 0x07e2, 0x07e2, 0xffff, 0xffff, 0x07e2, 0x07e2, + 0x0006, 0x0013, 0x080c, 0x07f5, 0xffff, 0xffff, 0x080c, 0x0824, + 0x0003, 0x0b11, 0x0000, 0x0b14, 0x0001, 0x0013, 0x083a, 0x0002, + // Entry AFC0 - AFFF + 0x0b17, 0x0b1f, 0x0006, 0x0000, 0x1a99, 0x1a99, 0xffff, 0xffff, + 0x1a99, 0x1a99, 0x0006, 0x0000, 0x1aa0, 0x1aa0, 0xffff, 0xffff, + 0x1aa0, 0x1aa0, 0x0003, 0x0b2b, 0x0000, 0x0b2e, 0x0001, 0x0013, + 0x083a, 0x0002, 0x0b31, 0x0b39, 0x0006, 0x0000, 0x1a99, 0x1a99, + 0xffff, 0xffff, 0x1a99, 0x1a99, 0x0006, 0x0000, 0x1aa0, 0x1aa0, + 0xffff, 0xffff, 0x1aa0, 0x1aa0, 0x0003, 0x0b45, 0x0b48, 0x0b4d, + 0x0001, 0x0013, 0x083c, 0x0003, 0x0013, 0x0844, 0x0854, 0x0862, + 0x0002, 0x0b50, 0x0b58, 0x0006, 0x0013, 0x0894, 0x0875, 0xffff, + // Entry B000 - B03F + 0xffff, 0x0884, 0x0884, 0x0006, 0x0013, 0x08b9, 0x08a5, 0xffff, + 0xffff, 0x08b9, 0x08cc, 0x0003, 0x0b64, 0x0000, 0x0b67, 0x0001, + 0x0013, 0x08df, 0x0002, 0x0b6a, 0x0b72, 0x0006, 0x0013, 0x08e5, + 0x08e5, 0xffff, 0xffff, 0x08e5, 0x08e5, 0x0006, 0x0013, 0x08f2, + 0x08f2, 0xffff, 0xffff, 0x08f2, 0x08f2, 0x0003, 0x0b7e, 0x0000, + 0x0b81, 0x0001, 0x0013, 0x08df, 0x0002, 0x0b84, 0x0b8c, 0x0006, + 0x0013, 0x08e5, 0x08e5, 0xffff, 0xffff, 0x08e5, 0x08e5, 0x0006, + 0x0013, 0x08f2, 0x08f2, 0xffff, 0xffff, 0x08f2, 0x08f2, 0x0004, + // Entry B040 - B07F + 0x0b99, 0x0b9c, 0x0ba1, 0x0bb4, 0x0001, 0x0013, 0x0902, 0x0003, + 0x0013, 0x0909, 0x0918, 0x0925, 0x0002, 0x0ba4, 0x0bac, 0x0006, + 0x0013, 0x0961, 0x0937, 0xffff, 0xffff, 0x0945, 0x0953, 0x0006, + 0x0013, 0x0982, 0x0970, 0xffff, 0xffff, 0x0982, 0x0993, 0x0001, + 0x0013, 0x09a4, 0x0004, 0x0bbc, 0x0bbf, 0x0bc4, 0x0bd7, 0x0001, + 0x0013, 0x09b1, 0x0003, 0x0013, 0x09b7, 0x09c5, 0x09d1, 0x0002, + 0x0bc7, 0x0bcf, 0x0006, 0x0013, 0x09e2, 0x09e2, 0xffff, 0xffff, + 0x09e2, 0x09e2, 0x0006, 0x0013, 0x09ef, 0x09ef, 0xffff, 0xffff, + // Entry B080 - B0BF + 0x09ef, 0x09ef, 0x0001, 0x0013, 0x09ff, 0x0004, 0x0bdf, 0x0be2, + 0x0be7, 0x0bfa, 0x0001, 0x0013, 0x09b1, 0x0003, 0x0013, 0x09b7, + 0x09c5, 0x09d1, 0x0002, 0x0bea, 0x0bf2, 0x0006, 0x0013, 0x09e2, + 0x09e2, 0xffff, 0xffff, 0x09e2, 0x09e2, 0x0006, 0x0013, 0x09ef, + 0x09ef, 0xffff, 0xffff, 0x09ef, 0x09ef, 0x0001, 0x0013, 0x09ff, + 0x0003, 0x0c01, 0x0c04, 0x0c0b, 0x0001, 0x0013, 0x0a0b, 0x0005, + 0x0013, 0x0a1e, 0x0a25, 0x0a2a, 0x0a0f, 0x0a31, 0x0002, 0x0c0e, + 0x0c16, 0x0006, 0x0013, 0x0a5d, 0x0a3c, 0xffff, 0xffff, 0x0a47, + // Entry B0C0 - B0FF + 0x0a52, 0x0006, 0x0013, 0x0a78, 0x0a69, 0xffff, 0xffff, 0x0a78, + 0x0a86, 0x0003, 0x0c22, 0x0c25, 0x0c2c, 0x0001, 0x0013, 0x0a0b, + 0x0005, 0x0013, 0x0a1e, 0x0a25, 0x0a2a, 0x0a0f, 0x0a31, 0x0002, + 0x0c2f, 0x0c37, 0x0006, 0x0013, 0x0a5d, 0x0a3c, 0xffff, 0xffff, + 0x0a47, 0x0a52, 0x0006, 0x0013, 0x0a78, 0x0a69, 0xffff, 0xffff, + 0x0a78, 0x0a86, 0x0003, 0x0c43, 0x0c46, 0x0c4d, 0x0001, 0x0013, + 0x0a0b, 0x0005, 0x0013, 0x0a1e, 0x0a25, 0x0a2a, 0x0a0f, 0x0a31, + 0x0002, 0x0c50, 0x0c58, 0x0006, 0x0013, 0x0a5d, 0x0a3c, 0xffff, + // Entry B100 - B13F + 0xffff, 0x0a47, 0x0a52, 0x0006, 0x0013, 0x0a78, 0x0a69, 0xffff, + 0xffff, 0x0a78, 0x0a86, 0x0001, 0x0c62, 0x0001, 0x0013, 0x0a94, + 0x0003, 0x0000, 0x0c69, 0x0c6e, 0x0003, 0x0013, 0x0aa1, 0x0ab1, + 0x0abe, 0x0002, 0x0c71, 0x0c79, 0x0006, 0x0013, 0x0aef, 0x0ad1, + 0xffff, 0xffff, 0x0ae0, 0x0ae0, 0x0006, 0x0013, 0x0b12, 0x0aff, + 0xffff, 0xffff, 0x0b12, 0x0b26, 0x0003, 0x0000, 0x0c85, 0x0c8a, + 0x0003, 0x0013, 0x0aa1, 0x0ab1, 0x0abe, 0x0002, 0x0c8d, 0x0c95, + 0x0006, 0x0013, 0x0aef, 0x0ad1, 0xffff, 0xffff, 0x0ae0, 0x0ae0, + // Entry B140 - B17F + 0x0006, 0x0013, 0x0b12, 0x0aff, 0xffff, 0xffff, 0x0b12, 0x0b26, + 0x0003, 0x0000, 0x0ca1, 0x0ca6, 0x0003, 0x0013, 0x0aa1, 0x0ab1, + 0x0abe, 0x0002, 0x0ca9, 0x0cb1, 0x0006, 0x0013, 0x0aef, 0x0ad1, + 0xffff, 0xffff, 0x0ae0, 0x0ae0, 0x0006, 0x0013, 0x0b12, 0x0aff, + 0xffff, 0xffff, 0x0b12, 0x0b26, 0x0003, 0x0000, 0x0cbd, 0x0cc2, + 0x0003, 0x0013, 0x0b38, 0x0b4a, 0x0b59, 0x0002, 0x0cc5, 0x0ccd, + 0x0006, 0x0013, 0x0b6e, 0x0b6e, 0xffff, 0xffff, 0x0b6e, 0x0b6e, + 0x0006, 0x0013, 0x0b94, 0x0b7f, 0xffff, 0xffff, 0x0b94, 0x0baa, + // Entry B180 - B1BF + 0x0003, 0x0000, 0x0cd9, 0x0cde, 0x0003, 0x0013, 0x0b38, 0x0b4a, + 0x0b59, 0x0002, 0x0ce1, 0x0ce9, 0x0006, 0x0013, 0x0b6e, 0x0b6e, + 0xffff, 0xffff, 0x0b6e, 0x0b6e, 0x0006, 0x0013, 0x0b94, 0x0b7f, + 0xffff, 0xffff, 0x0b94, 0x0baa, 0x0003, 0x0000, 0x0cf5, 0x0cfa, + 0x0003, 0x0013, 0x0b38, 0x0b4a, 0x0b59, 0x0002, 0x0cfd, 0x0d05, + 0x0006, 0x0013, 0x0b6e, 0x0b6e, 0xffff, 0xffff, 0x0b6e, 0x0b6e, + 0x0006, 0x0013, 0x0b94, 0x0b7f, 0xffff, 0xffff, 0x0b94, 0x0baa, + 0x0003, 0x0000, 0x0d11, 0x0d16, 0x0003, 0x0013, 0x0bbe, 0x0bce, + // Entry B1C0 - B1FF + 0x0bdb, 0x0002, 0x0d19, 0x0d21, 0x0006, 0x0013, 0x0bee, 0x0bee, + 0xffff, 0xffff, 0x0bee, 0x0bee, 0x0006, 0x0013, 0x0c10, 0x0bfd, + 0xffff, 0xffff, 0x0c10, 0x0c24, 0x0003, 0x0000, 0x0d2d, 0x0d32, + 0x0003, 0x0013, 0x0bbe, 0x0bce, 0x0bdb, 0x0002, 0x0d35, 0x0d3d, + 0x0006, 0x0013, 0x0bee, 0x0bee, 0xffff, 0xffff, 0x0bee, 0x0bee, + 0x0006, 0x0013, 0x0c10, 0x0bfd, 0xffff, 0xffff, 0x0c10, 0x0c24, + 0x0003, 0x0000, 0x0d49, 0x0d4e, 0x0003, 0x0013, 0x0bbe, 0x0bce, + 0x0bdb, 0x0002, 0x0d51, 0x0d59, 0x0006, 0x0013, 0x0bee, 0x0bee, + // Entry B200 - B23F + 0xffff, 0xffff, 0x0bee, 0x0bee, 0x0006, 0x0013, 0x0c10, 0x0bfd, + 0xffff, 0xffff, 0x0c10, 0x0c24, 0x0003, 0x0000, 0x0d65, 0x0d6a, + 0x0003, 0x0013, 0x0c36, 0x0c46, 0x0c53, 0x0002, 0x0d6d, 0x0d75, + 0x0006, 0x0013, 0x0c84, 0x0c66, 0xffff, 0xffff, 0x0c75, 0x0c75, + 0x0006, 0x0013, 0x0ca5, 0x0c92, 0xffff, 0xffff, 0x0ca5, 0x0cb9, + 0x0003, 0x0000, 0x0d81, 0x0d86, 0x0003, 0x0013, 0x0c36, 0x0c46, + 0x0c53, 0x0002, 0x0d89, 0x0d91, 0x0006, 0x0013, 0x0c84, 0x0c66, + 0xffff, 0xffff, 0x0c75, 0x0c75, 0x0006, 0x0013, 0x0ca5, 0x0c92, + // Entry B240 - B27F + 0xffff, 0xffff, 0x0ca5, 0x0cb9, 0x0003, 0x0000, 0x0d9d, 0x0da2, + 0x0003, 0x0013, 0x0c36, 0x0c46, 0x0c53, 0x0002, 0x0da5, 0x0dad, + 0x0006, 0x0013, 0x0c84, 0x0c66, 0xffff, 0xffff, 0x0c75, 0x0c75, + 0x0006, 0x0013, 0x0ca5, 0x0c92, 0xffff, 0xffff, 0x0ca5, 0x0cb9, + 0x0003, 0x0000, 0x0db9, 0x0dbe, 0x0003, 0x0013, 0x0ccb, 0x0cdc, + 0x0ceb, 0x0002, 0x0dc1, 0x0dc9, 0x0006, 0x0013, 0x0d2f, 0x0cff, + 0xffff, 0xffff, 0x0d0f, 0x0d1f, 0x0006, 0x0013, 0x0d54, 0x0d40, + 0xffff, 0xffff, 0x0d54, 0x0d67, 0x0003, 0x0000, 0x0dd5, 0x0dda, + // Entry B280 - B2BF + 0x0003, 0x0013, 0x0ccb, 0x0cdc, 0x0ceb, 0x0002, 0x0ddd, 0x0de5, + 0x0006, 0x0013, 0x0d2f, 0x0cff, 0xffff, 0xffff, 0x0d0f, 0x0d1f, + 0x0006, 0x0013, 0x0d54, 0x0d40, 0xffff, 0xffff, 0x0d54, 0x0d67, + 0x0003, 0x0000, 0x0df1, 0x0df6, 0x0003, 0x0013, 0x0ccb, 0x0cdc, + 0x0ceb, 0x0002, 0x0df9, 0x0e01, 0x0006, 0x0013, 0x0d2f, 0x0cff, + 0xffff, 0xffff, 0x0d0f, 0x0d1f, 0x0006, 0x0013, 0x0d54, 0x0d40, + 0xffff, 0xffff, 0x0d54, 0x0d67, 0x0003, 0x0000, 0x0e0d, 0x0e12, + 0x0003, 0x0013, 0x0d7a, 0x0d89, 0x0d96, 0x0002, 0x0e15, 0x0e1d, + // Entry B2C0 - B2FF + 0x0006, 0x0013, 0x0dd2, 0x0da8, 0xffff, 0xffff, 0x0db6, 0x0dc4, + 0x0006, 0x0013, 0x0df3, 0x0de1, 0xffff, 0xffff, 0x0df3, 0x0e04, + 0x0003, 0x0000, 0x0e29, 0x0e2e, 0x0003, 0x0013, 0x0d7a, 0x0d89, + 0x0d96, 0x0002, 0x0e31, 0x0e39, 0x0006, 0x0013, 0x0dd2, 0x0da8, + 0xffff, 0xffff, 0x0db6, 0x0dc4, 0x0006, 0x0013, 0x0df3, 0x0de1, + 0xffff, 0xffff, 0x0df3, 0x0e04, 0x0003, 0x0000, 0x0e45, 0x0e4a, + 0x0003, 0x0013, 0x0d7a, 0x0d89, 0x0d96, 0x0002, 0x0e4d, 0x0e55, + 0x0006, 0x0013, 0x0dd2, 0x0da8, 0xffff, 0xffff, 0x0db6, 0x0dc4, + // Entry B300 - B33F + 0x0006, 0x0013, 0x0df3, 0x0de1, 0xffff, 0xffff, 0x0df3, 0x0e04, + 0x0003, 0x0000, 0x0e61, 0x0e66, 0x0003, 0x0013, 0x0e15, 0x0e24, + 0x0e30, 0x0002, 0x0e69, 0x0e71, 0x0006, 0x0013, 0x0e5e, 0x0e42, + 0xffff, 0xffff, 0x0e50, 0x0e50, 0x0006, 0x0013, 0x0e7d, 0x0e6b, + 0xffff, 0xffff, 0x0e7d, 0x0e90, 0x0003, 0x0000, 0x0e7d, 0x0e82, + 0x0003, 0x0013, 0x0e15, 0x0e24, 0x0e30, 0x0002, 0x0e85, 0x0e8d, + 0x0006, 0x0013, 0x0e5e, 0x0e42, 0xffff, 0xffff, 0x0e50, 0x0e50, + 0x0006, 0x0013, 0x0e7d, 0x0e6b, 0xffff, 0xffff, 0x0e7d, 0x0e90, + // Entry B340 - B37F + 0x0003, 0x0000, 0x0e99, 0x0e9e, 0x0003, 0x0013, 0x0e15, 0x0e24, + 0x0e30, 0x0002, 0x0ea1, 0x0ea9, 0x0006, 0x0013, 0x0e5e, 0x0e42, + 0xffff, 0xffff, 0x0e50, 0x0e50, 0x0006, 0x0013, 0x0e7d, 0x0e6b, + 0xffff, 0xffff, 0x0e7d, 0x0e90, 0x0001, 0x0eb3, 0x0001, 0x0013, + 0x0ea1, 0x0003, 0x0eba, 0x0ebd, 0x0ec1, 0x0001, 0x0013, 0x0eac, + 0x0002, 0x0013, 0xffff, 0x0eb3, 0x0002, 0x0ec4, 0x0ecc, 0x0006, + 0x0013, 0x0edb, 0x0ebf, 0xffff, 0xffff, 0x0ecd, 0x0ecd, 0x0006, + 0x0013, 0x0efa, 0x0ee8, 0xffff, 0xffff, 0x0efa, 0x0f0d, 0x0003, + // Entry B380 - B3BF + 0x0ed8, 0x0000, 0x0edb, 0x0001, 0x0000, 0x2143, 0x0002, 0x0ede, + 0x0ee6, 0x0006, 0x0013, 0x0f1e, 0x0f1e, 0xffff, 0xffff, 0x0f1e, + 0x0f1e, 0x0006, 0x0013, 0x0f27, 0x0f27, 0xffff, 0xffff, 0x0f27, + 0x0f27, 0x0003, 0x0ef2, 0x0000, 0x0ef5, 0x0001, 0x0000, 0x2143, + 0x0002, 0x0ef8, 0x0f00, 0x0006, 0x0013, 0x0f1e, 0x0f1e, 0xffff, + 0xffff, 0x0f1e, 0x0f1e, 0x0006, 0x0013, 0x0f27, 0x0f27, 0xffff, + 0xffff, 0x0f27, 0x0f27, 0x0003, 0x0f0c, 0x0f0f, 0x0f13, 0x0001, + 0x000d, 0x0bf5, 0x0002, 0x0013, 0xffff, 0x0f33, 0x0002, 0x0f16, + // Entry B3C0 - B3FF + 0x0f1e, 0x0006, 0x000d, 0x3116, 0x0c07, 0xffff, 0xffff, 0x3108, + 0x3108, 0x0006, 0x0013, 0x0f51, 0x0f3f, 0xffff, 0xffff, 0x0f51, + 0x0f64, 0x0003, 0x0f2a, 0x0000, 0x0f2d, 0x0001, 0x000b, 0x1250, + 0x0002, 0x0f30, 0x0f38, 0x0006, 0x0013, 0x0f75, 0x0f75, 0xffff, + 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0013, 0x0f80, 0x0f80, 0xffff, + 0xffff, 0x0f80, 0x0f80, 0x0003, 0x0f44, 0x0000, 0x0f47, 0x0001, + 0x000b, 0x1250, 0x0002, 0x0f4a, 0x0f52, 0x0006, 0x0013, 0x0f75, + 0x0f75, 0xffff, 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0013, 0x0f80, + // Entry B400 - B43F + 0x0f80, 0xffff, 0xffff, 0x0f80, 0x0f80, 0x0003, 0x0f5e, 0x0f61, + 0x0f65, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x0013, 0xffff, 0x0f8e, + 0x0002, 0x0f68, 0x0f70, 0x0006, 0x000d, 0x3132, 0x0c8c, 0xffff, + 0xffff, 0x3123, 0x3123, 0x0006, 0x0013, 0x0fa7, 0x0f94, 0xffff, + 0xffff, 0x0fa7, 0x0fbb, 0x0003, 0x0f7c, 0x0f7f, 0x0f83, 0x0001, + 0x0000, 0x2002, 0x0002, 0x0013, 0xffff, 0x0f8e, 0x0002, 0x0f86, + 0x0f8e, 0x0006, 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0xffff, 0x0fcd, + 0x0fcd, 0x0006, 0x0013, 0x0fd6, 0x0fd6, 0xffff, 0xffff, 0x0fd6, + // Entry B440 - B47F + 0x0fd6, 0x0003, 0x0f9a, 0x0f9d, 0x0fa1, 0x0001, 0x0000, 0x2002, + 0x0002, 0x0013, 0xffff, 0x0f8e, 0x0002, 0x0fa4, 0x0fac, 0x0006, + 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0xffff, 0x0fcd, 0x0fcd, 0x0006, + 0x0013, 0x0fd6, 0x0fd6, 0xffff, 0xffff, 0x0fd6, 0x0fd6, 0x0001, + 0x0fb6, 0x0001, 0x0013, 0x0fe2, 0x0004, 0x0fbe, 0x0fc3, 0x0fc8, + 0x0fd7, 0x0003, 0x0013, 0x0ff2, 0x0ffe, 0x1005, 0x0003, 0x0013, + 0x1009, 0x101d, 0x1026, 0x0002, 0x0000, 0x0fcb, 0x0003, 0x0000, + 0x0fd2, 0x0fcf, 0x0001, 0x0013, 0x102f, 0x0003, 0x0013, 0xffff, + // Entry B480 - B4BF + 0x104c, 0x1061, 0x0002, 0x11be, 0x0fda, 0x0003, 0x0fde, 0x111e, + 0x107e, 0x009e, 0x0013, 0xffff, 0xffff, 0xffff, 0xffff, 0x1102, + 0x1154, 0x11d7, 0x121a, 0x1290, 0x1303, 0x136d, 0x13e0, 0x1423, + 0x14e0, 0x151d, 0x1566, 0x15c4, 0x1607, 0x164d, 0x16a8, 0x1721, + 0x177f, 0x17da, 0x1838, 0x1875, 0xffff, 0xffff, 0x18ea, 0xffff, + 0x1943, 0xffff, 0x19af, 0x19f5, 0x1a32, 0x1a72, 0xffff, 0xffff, + 0x1af5, 0x1b3e, 0x1b9c, 0xffff, 0xffff, 0xffff, 0x1c2d, 0xffff, + 0x1ca9, 0x1d09, 0xffff, 0x1d7f, 0x1dd4, 0x1e1d, 0xffff, 0xffff, + // Entry B4C0 - B4FF + 0xffff, 0xffff, 0x1ed8, 0xffff, 0xffff, 0x1f57, 0x1faf, 0xffff, + 0xffff, 0x2044, 0x209f, 0x20e8, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x21a6, 0x21e9, 0x2229, 0x226c, 0x22ac, 0xffff, + 0xffff, 0x2358, 0xffff, 0x23a8, 0xffff, 0xffff, 0x2431, 0xffff, + 0x24e3, 0xffff, 0xffff, 0xffff, 0xffff, 0x2577, 0xffff, 0x25d7, + 0x2644, 0x26a2, 0x26f4, 0xffff, 0xffff, 0xffff, 0x2766, 0x27b8, + 0x280a, 0xffff, 0xffff, 0x287e, 0x2917, 0x2963, 0x299a, 0xffff, + 0xffff, 0x2a10, 0x2a59, 0x2a9f, 0xffff, 0x2b03, 0xffff, 0xffff, + // Entry B500 - B53F + 0xffff, 0xffff, 0xffff, 0x2c10, 0x2c59, 0x2c99, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d63, 0xffff, 0xffff, + 0x2dce, 0xffff, 0x2e1d, 0xffff, 0x2e72, 0x2eb8, 0x2ef5, 0xffff, + 0x2f4a, 0x2f99, 0xffff, 0xffff, 0xffff, 0x3029, 0x3069, 0xffff, + 0xffff, 0x1074, 0x1197, 0x1460, 0x14a0, 0xffff, 0xffff, 0x248c, + 0x2b9e, 0x009e, 0x0013, 0x10b4, 0x10c5, 0x10da, 0x10f0, 0x1117, + 0x1164, 0x11e7, 0x123b, 0x12b0, 0x1320, 0x138d, 0x13f0, 0x1431, + 0x14ee, 0x152f, 0x157f, 0x15d4, 0x1618, 0x1665, 0x16ca, 0x173a, + // Entry B540 - B57F + 0x1797, 0x17f3, 0x1846, 0x188a, 0x18c7, 0x18d9, 0x18fc, 0x1933, + 0x1954, 0x199e, 0x19c0, 0x1a03, 0x1a41, 0x1a86, 0x1ac1, 0x1adb, + 0x1b07, 0x1b57, 0x1bac, 0x1bdf, 0x1bf5, 0x1c16, 0x1c4a, 0x1c97, + 0x1cbf, 0x1d20, 0x1d61, 0x1d95, 0x1de6, 0x1e2e, 0x1e63, 0x1e7d, + 0x1eb4, 0x1ec7, 0x1ee9, 0x1f1e, 0x1f3a, 0x1f6e, 0x1fc5, 0x2012, + 0x2035, 0x205c, 0x20b1, 0x20f6, 0x2125, 0x2133, 0x214a, 0x215d, + 0x2175, 0x218e, 0x21b6, 0x21f8, 0x2239, 0x227b, 0x22cc, 0x231f, + 0x233c, 0x2367, 0x2398, 0x23bb, 0x23f4, 0x2415, 0x2449, 0x24cc, + // Entry B580 - B5BF + 0x24f4, 0x2529, 0x2538, 0x2549, 0x255a, 0x2589, 0x25c0, 0x25f5, + 0x265d, 0x26b7, 0x2704, 0x2737, 0x2748, 0x2756, 0x277b, 0x27cd, + 0x2820, 0x285f, 0x286e, 0x28a3, 0x292a, 0x296f, 0x29ae, 0x29e9, + 0x29f8, 0x2a22, 0x2a6a, 0x2ab1, 0x2ae8, 0x2b1c, 0x2b61, 0x2b7a, + 0x2b89, 0x2be7, 0x2bf9, 0x2c22, 0x2c68, 0x2ca8, 0x2cd9, 0x2cea, + 0x2cfc, 0x2d1a, 0x2d2f, 0x2d40, 0x2d54, 0x2d75, 0x2dac, 0x2dbd, + 0x2ddd, 0x2e0e, 0x2e2e, 0x2e63, 0x2e83, 0x2ec6, 0x2f05, 0x2f38, + 0x2f5e, 0x2fac, 0x2fe5, 0x2ff9, 0x300b, 0x3038, 0x3080, 0x2004, + // Entry B5C0 - B5FF + 0x2900, 0x1083, 0x11a6, 0x146f, 0x14af, 0x1989, 0x2404, 0x249b, + 0x2bb0, 0x009e, 0x0013, 0xffff, 0xffff, 0xffff, 0xffff, 0x1138, + 0x1180, 0x1203, 0x1268, 0x12dc, 0x1349, 0x13b9, 0x140c, 0x144b, + 0x1508, 0x154d, 0x15a4, 0x15f0, 0x1635, 0x1689, 0x16f8, 0x175f, + 0x17bb, 0x1818, 0x1860, 0x18ab, 0xffff, 0xffff, 0x191a, 0xffff, + 0x1971, 0xffff, 0x19dd, 0x1a1d, 0x1a5c, 0x1aa6, 0xffff, 0xffff, + 0x1b25, 0x1b7c, 0x1bc8, 0xffff, 0xffff, 0xffff, 0x1c73, 0xffff, + 0x1ce1, 0x1d43, 0xffff, 0x1db7, 0x1e04, 0x1e4b, 0xffff, 0xffff, + // Entry B600 - B63F + 0xffff, 0xffff, 0x1f06, 0xffff, 0xffff, 0x1f91, 0x1fe7, 0xffff, + 0xffff, 0x2080, 0x20cf, 0x2110, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x21d2, 0x2213, 0x2255, 0x2296, 0x22f8, 0xffff, + 0xffff, 0x2382, 0xffff, 0x23da, 0xffff, 0xffff, 0x246d, 0xffff, + 0x2511, 0xffff, 0xffff, 0xffff, 0xffff, 0x25a7, 0xffff, 0x261f, + 0x2682, 0x26d8, 0x2720, 0xffff, 0xffff, 0xffff, 0x279c, 0x27ee, + 0x2842, 0xffff, 0xffff, 0x28d4, 0x2949, 0x2987, 0x29ce, 0xffff, + 0xffff, 0x2a40, 0x2a87, 0x2acf, 0xffff, 0x2b41, 0xffff, 0xffff, + // Entry B640 - B67F + 0xffff, 0xffff, 0xffff, 0x2c40, 0x2c83, 0x2cc3, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d93, 0xffff, 0xffff, + 0x2df8, 0xffff, 0x2e4b, 0xffff, 0x2ea0, 0x2ee0, 0x2f21, 0xffff, + 0x2f7e, 0x2fcb, 0xffff, 0xffff, 0xffff, 0x3053, 0x30a3, 0xffff, + 0xffff, 0x109e, 0x11c1, 0x148a, 0x14ca, 0xffff, 0xffff, 0x24b6, + 0x2bce, 0x0003, 0x11c2, 0x1222, 0x11f2, 0x002e, 0x0013, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry B680 - B6BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry B6C0 - B6FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1d03, 0x0003, 0x0004, 0x01b2, + // Entry B700 - B73F + 0x0285, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, + 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, + 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, + 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, + 0x00fd, 0x0132, 0x016a, 0x017f, 0x0190, 0x01a1, 0x0002, 0x0044, + // Entry B740 - B77F + 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0014, 0xffff, + 0x0000, 0x000c, 0x0016, 0x0020, 0x002c, 0x0034, 0x0041, 0x004e, + 0x005c, 0x0066, 0x0070, 0x007a, 0x000d, 0x0014, 0xffff, 0x0084, + 0x0089, 0x008c, 0x008f, 0x008c, 0x0084, 0x0084, 0x008f, 0x0094, + 0x0097, 0x009c, 0x009f, 0x000d, 0x0014, 0xffff, 0x00a2, 0x00ba, + 0x00d0, 0x00dd, 0x00f2, 0x00fd, 0x010d, 0x011d, 0x0131, 0x0148, + 0x015d, 0x0170, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0014, + 0xffff, 0x0000, 0x000c, 0x0016, 0x0020, 0x002c, 0x0034, 0x0041, + // Entry B780 - B7BF + 0x004e, 0x005c, 0x0066, 0x0070, 0x007a, 0x000d, 0x0014, 0xffff, + 0x0084, 0x0089, 0x008c, 0x008f, 0x008c, 0x0084, 0x0084, 0x008f, + 0x0094, 0x0097, 0x009c, 0x009f, 0x000d, 0x0014, 0xffff, 0x0185, + 0x019d, 0x01b3, 0x01c0, 0x01d5, 0x01e0, 0x01f0, 0x0200, 0x0214, + 0x022b, 0x0240, 0x0253, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, + 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0014, 0x0268, 0x0274, + 0x027e, 0x028a, 0x0294, 0x029e, 0x02a8, 0x0007, 0x0014, 0x009c, + 0x02b3, 0x02b6, 0x0094, 0x02b9, 0x02b3, 0x0094, 0x0007, 0x0014, + // Entry B7C0 - B7FF + 0x0268, 0x0274, 0x027e, 0x028a, 0x0294, 0x029e, 0x02a8, 0x0007, + 0x0014, 0x02bc, 0x02cb, 0x02e6, 0x02f9, 0x0306, 0x031d, 0x032c, + 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0014, + 0x0268, 0x0274, 0x027e, 0x028a, 0x0294, 0x029e, 0x02a8, 0x0007, + 0x0014, 0x009c, 0x02b3, 0x02b6, 0x0094, 0x02b9, 0x02b3, 0x0094, + 0x0007, 0x0014, 0x0268, 0x0274, 0x027e, 0x028a, 0x0294, 0x029e, + 0x02a8, 0x0007, 0x0014, 0x02bc, 0x02cb, 0x02e6, 0x02f9, 0x0306, + 0x031d, 0x032c, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, + // Entry B800 - B83F + 0x0112, 0x0005, 0x0014, 0xffff, 0x033e, 0x0350, 0x0362, 0x0374, + 0x0005, 0x0014, 0xffff, 0x0386, 0x038b, 0x0390, 0x0395, 0x0005, + 0x0014, 0xffff, 0x039a, 0x03b5, 0x03d0, 0x03eb, 0x0003, 0x011d, + 0x0124, 0x012b, 0x0005, 0x0014, 0xffff, 0x0386, 0x038b, 0x0390, + 0x0395, 0x0005, 0x0014, 0xffff, 0x0386, 0x038b, 0x0390, 0x0395, + 0x0005, 0x0014, 0xffff, 0x039a, 0x03b5, 0x03d0, 0x03eb, 0x0002, + 0x0135, 0x014b, 0x0003, 0x0139, 0x0000, 0x0142, 0x0002, 0x013c, + 0x013f, 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0002, + // Entry B840 - B87F + 0x0145, 0x0148, 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, + 0x0003, 0x014f, 0x0158, 0x0161, 0x0002, 0x0152, 0x0155, 0x0001, + 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0002, 0x015b, 0x015e, + 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0002, 0x0164, + 0x0167, 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0003, + 0x0174, 0x0000, 0x016e, 0x0001, 0x0170, 0x0002, 0x0014, 0x0410, + 0x0426, 0x0002, 0x0177, 0x017b, 0x0002, 0x0014, 0x0410, 0x0434, + 0x0002, 0x0014, 0xffff, 0x043f, 0x0004, 0x018d, 0x0187, 0x0184, + // Entry B880 - B8BF + 0x018a, 0x0001, 0x0014, 0x044b, 0x0001, 0x0000, 0x050b, 0x0001, + 0x0000, 0x0514, 0x0001, 0x0014, 0x0461, 0x0004, 0x019e, 0x0198, + 0x0195, 0x019b, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x01af, + 0x01a9, 0x01a6, 0x01ac, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x01f3, 0x0000, 0x0000, 0x01f8, 0x01fd, 0x0202, 0x0207, 0x020c, + 0x0211, 0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0000, + // Entry B8C0 - B8FF + 0x0000, 0x0000, 0x0234, 0x023f, 0x0244, 0x0000, 0x0000, 0x0000, + 0x0249, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x024e, 0x0000, 0x0253, 0x0258, + 0x025d, 0x0262, 0x0267, 0x026c, 0x0271, 0x0276, 0x027b, 0x0280, + 0x0001, 0x01f5, 0x0001, 0x0014, 0x0469, 0x0001, 0x01fa, 0x0001, + 0x0014, 0x0474, 0x0001, 0x01ff, 0x0001, 0x0014, 0x047f, 0x0001, + // Entry B900 - B93F + 0x0204, 0x0001, 0x0014, 0x047f, 0x0001, 0x0209, 0x0001, 0x0014, + 0x0483, 0x0001, 0x020e, 0x0001, 0x0014, 0x0496, 0x0001, 0x0213, + 0x0001, 0x0014, 0x0496, 0x0001, 0x0218, 0x0001, 0x0014, 0x04a0, + 0x0001, 0x021d, 0x0001, 0x0014, 0x04af, 0x0001, 0x0222, 0x0001, + 0x0014, 0x04af, 0x0001, 0x0227, 0x0001, 0x0014, 0x04bb, 0x0001, + 0x022c, 0x0001, 0x0014, 0x04cc, 0x0001, 0x0231, 0x0001, 0x0014, + 0x04cc, 0x0002, 0x0237, 0x023a, 0x0001, 0x0014, 0x04d4, 0x0003, + 0x0014, 0x04df, 0x04ec, 0x04f9, 0x0001, 0x0241, 0x0001, 0x0014, + // Entry B940 - B97F + 0x050b, 0x0001, 0x0246, 0x0001, 0x0014, 0x050b, 0x0001, 0x024b, + 0x0001, 0x0014, 0x0515, 0x0001, 0x0250, 0x0001, 0x0014, 0x0531, + 0x0001, 0x0255, 0x0001, 0x0014, 0x053b, 0x0001, 0x025a, 0x0001, + 0x0014, 0x0546, 0x0001, 0x025f, 0x0001, 0x0014, 0x0546, 0x0001, + 0x0264, 0x0001, 0x0014, 0x0550, 0x0001, 0x0269, 0x0001, 0x0014, + 0x0560, 0x0001, 0x026e, 0x0001, 0x0014, 0x0560, 0x0001, 0x0273, + 0x0001, 0x0014, 0x056a, 0x0001, 0x0278, 0x0001, 0x0014, 0x057c, + 0x0001, 0x027d, 0x0001, 0x0014, 0x057c, 0x0001, 0x0282, 0x0001, + // Entry B980 - B9BF + 0x0014, 0x0586, 0x0004, 0x028a, 0x028f, 0x0000, 0x0294, 0x0003, + 0x0000, 0x1dc7, 0x2273, 0x227a, 0x0003, 0x0014, 0x05a6, 0x05b9, + 0x05db, 0x0002, 0x0000, 0x0297, 0x0003, 0x029b, 0x03c7, 0x0331, + 0x0094, 0x0014, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x05fd, 0x06b7, 0x077d, 0x0852, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x08ee, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry B9C0 - B9FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0990, + 0x0a44, 0xffff, 0x0b45, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0c37, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0d1a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0dc3, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0e53, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry BA00 - BA3F + 0xffff, 0xffff, 0xffff, 0x0edd, 0x0f79, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0ff1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x107e, + 0x1120, 0xffff, 0xffff, 0xffff, 0x11bc, 0x1246, 0x0094, 0x0014, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0631, + 0x06ef, 0x07ba, 0x087c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry BA40 - BA7F + 0xffff, 0x091a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09c2, 0x0a7a, 0x0b04, + 0x0b79, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0bff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0c5c, 0xffff, 0xffff, 0xffff, 0x0cc4, 0x0cf0, 0xffff, 0xffff, + // Entry BA80 - BABF + 0x0d42, 0x0db0, 0xffff, 0xffff, 0xffff, 0x0de9, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e77, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0f07, 0x0f97, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x10aa, 0x114a, 0xffff, + // Entry BAC0 - BAFF + 0xffff, 0xffff, 0x11e0, 0x1279, 0x0094, 0x0014, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0674, 0x0736, 0x0806, + 0x08b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0955, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0a03, 0x0abf, 0xffff, 0x0bbc, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry BB00 - BB3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c90, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d79, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0e1e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0eaa, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f40, + 0x0fc4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x104a, 0xffff, + // Entry BB40 - BB7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x10e5, 0x1183, 0xffff, 0xffff, 0xffff, + 0x1213, 0x12bb, 0x0003, 0x0004, 0x01c1, 0x070c, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, + 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x0625, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, + // Entry BB80 - BBBF + 0x04f7, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0014, + 0x12fd, 0x0001, 0x0014, 0x12fd, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, + 0x018e, 0x019f, 0x01b0, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, + 0x0057, 0x0066, 0x000d, 0x0014, 0xffff, 0x1308, 0x130c, 0x1312, + 0x1316, 0x131d, 0x1321, 0x1325, 0x132b, 0x1330, 0x1335, 0x1339, + 0x133e, 0x000d, 0x0000, 0xffff, 0x2055, 0x227e, 0x223a, 0x214e, + 0x223a, 0x223a, 0x2281, 0x21ce, 0x223a, 0x19c7, 0x04dd, 0x2283, + // Entry BBC0 - BBFF + 0x000d, 0x0014, 0xffff, 0x1343, 0x134a, 0x1353, 0x1316, 0x131d, + 0x135a, 0x1362, 0x132b, 0x1330, 0x136d, 0x1374, 0x137d, 0x0003, + 0x0079, 0x0088, 0x0097, 0x000d, 0x0014, 0xffff, 0x1308, 0x1385, + 0x1312, 0x1389, 0x131d, 0x1321, 0x138d, 0x132b, 0x1330, 0x1335, + 0x1339, 0x133e, 0x000d, 0x0000, 0xffff, 0x2055, 0x227e, 0x223a, + 0x214e, 0x223a, 0x223a, 0x2281, 0x21ce, 0x223a, 0x19c7, 0x04dd, + 0x2283, 0x000d, 0x0014, 0xffff, 0x1343, 0x134a, 0x1353, 0x1316, + 0x131d, 0x135a, 0x1362, 0x132b, 0x1330, 0x136d, 0x1374, 0x137d, + // Entry BC00 - BC3F + 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, + 0x00c1, 0x0007, 0x000b, 0x09c9, 0x272c, 0x2731, 0x2735, 0x2739, + 0x273d, 0x2742, 0x0007, 0x0000, 0x21d0, 0x2286, 0x223a, 0x223a, + 0x2055, 0x2281, 0x21d0, 0x0007, 0x000b, 0x09ea, 0x2746, 0x2749, + 0x274c, 0x274f, 0x2752, 0x09f9, 0x0007, 0x0014, 0x1391, 0x139a, + 0x13a4, 0x13b0, 0x13bd, 0x13c6, 0x13d2, 0x0005, 0x00d9, 0x00e2, + 0x00f4, 0x0000, 0x00eb, 0x0007, 0x000b, 0x09c9, 0x272c, 0x2731, + 0x2735, 0x2739, 0x2755, 0x2742, 0x0007, 0x0000, 0x21d0, 0x2289, + // Entry BC40 - BC7F + 0x223a, 0x223a, 0x2055, 0x2281, 0x21d0, 0x0007, 0x000b, 0x09ea, + 0x2759, 0x2749, 0x274c, 0x274f, 0x2752, 0x09f9, 0x0007, 0x0014, + 0x1391, 0x139a, 0x13a4, 0x13b0, 0x13bd, 0x13c6, 0x13d2, 0x0002, + 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0014, + 0xffff, 0x13de, 0x13e2, 0x13e6, 0x13ea, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0014, 0xffff, 0x13ee, + 0x13fb, 0x1408, 0x1416, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, + 0x0014, 0xffff, 0x13de, 0x13e2, 0x13e6, 0x13ea, 0x0005, 0x0000, + // Entry BC80 - BCBF + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0014, 0xffff, + 0x13ee, 0x13fb, 0x1408, 0x1416, 0x0002, 0x0135, 0x0154, 0x0003, + 0x0139, 0x0142, 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, 0x0014, + 0x1424, 0x0001, 0x0014, 0x1427, 0x0002, 0x0145, 0x0148, 0x0001, + 0x0000, 0x2145, 0x0001, 0x0000, 0x2143, 0x0002, 0x014e, 0x0151, + 0x0001, 0x0014, 0x1424, 0x0001, 0x0014, 0x1427, 0x0003, 0x0158, + 0x0161, 0x016a, 0x0002, 0x015b, 0x015e, 0x0001, 0x0014, 0x1424, + 0x0001, 0x0014, 0x1427, 0x0002, 0x0164, 0x0167, 0x0001, 0x0014, + // Entry BCC0 - BCFF + 0x1424, 0x0001, 0x0014, 0x1427, 0x0002, 0x016d, 0x0170, 0x0001, + 0x0014, 0x1424, 0x0001, 0x0014, 0x1427, 0x0003, 0x0182, 0x0188, + 0x0177, 0x0002, 0x017a, 0x017e, 0x0002, 0x0014, 0x142a, 0x1449, + 0x0002, 0x0014, 0x1434, 0x1453, 0x0001, 0x0184, 0x0002, 0x0014, + 0x1464, 0x1467, 0x0001, 0x018a, 0x0002, 0x0014, 0x146a, 0x146c, + 0x0004, 0x019c, 0x0196, 0x0193, 0x0199, 0x0001, 0x0005, 0x0773, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0014, + 0x146e, 0x0004, 0x01ad, 0x01a7, 0x01a4, 0x01aa, 0x0001, 0x0000, + // Entry BD00 - BD3F + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x01be, 0x01b8, 0x01b5, 0x01bb, 0x0001, + 0x0014, 0x1477, 0x0001, 0x0014, 0x1477, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0040, 0x0202, 0x0000, 0x0000, 0x0207, + 0x0226, 0x0240, 0x025a, 0x0279, 0x0293, 0x02ad, 0x02cc, 0x02e6, + 0x0300, 0x0323, 0x0341, 0x0000, 0x0000, 0x0000, 0x035f, 0x0380, + 0x03a1, 0x0000, 0x0000, 0x0000, 0x03bb, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x03c0, 0x03dc, 0x03f8, 0x0414, 0x0430, 0x044c, + // Entry BD40 - BD7F + 0x0468, 0x0484, 0x04a0, 0x04bc, 0x04d8, 0x04f4, 0x0510, 0x052c, + 0x0548, 0x0564, 0x0580, 0x059c, 0x05b8, 0x05d4, 0x05f0, 0x0000, + 0x060c, 0x0000, 0x0611, 0x062f, 0x0649, 0x0663, 0x0681, 0x069b, + 0x06b5, 0x06d3, 0x06ed, 0x0707, 0x0001, 0x0204, 0x0001, 0x0014, + 0x1484, 0x0003, 0x020b, 0x020e, 0x0213, 0x0001, 0x0014, 0x1488, + 0x0003, 0x0014, 0x1491, 0x1499, 0x149f, 0x0002, 0x0216, 0x021e, + 0x0006, 0x0014, 0x14ae, 0x14c0, 0x14ae, 0x14cf, 0x14e1, 0x14e1, + 0x0006, 0x0014, 0x14f3, 0x150c, 0x14f3, 0x151c, 0x152f, 0x152f, + // Entry BD80 - BDBF + 0x0003, 0x022a, 0x0000, 0x022d, 0x0001, 0x000b, 0x0b8f, 0x0002, + 0x0230, 0x0238, 0x0006, 0x0014, 0x14ae, 0x14c0, 0x14ae, 0x14cf, + 0x14e1, 0x14e1, 0x0006, 0x0014, 0x14f3, 0x150c, 0x14f3, 0x151c, + 0x152f, 0x152f, 0x0003, 0x0244, 0x0000, 0x0247, 0x0001, 0x000b, + 0x0b8f, 0x0002, 0x024a, 0x0252, 0x0006, 0x0014, 0x14ae, 0x14c0, + 0x14ae, 0x14cf, 0x14e1, 0x14e1, 0x0006, 0x0014, 0x14f3, 0x150c, + 0x14f3, 0x151c, 0x152f, 0x152f, 0x0003, 0x025e, 0x0261, 0x0266, + 0x0001, 0x0014, 0x1542, 0x0003, 0x0014, 0x154b, 0x1559, 0x1566, + // Entry BDC0 - BDFF + 0x0002, 0x0269, 0x0271, 0x0006, 0x0014, 0x158b, 0x158b, 0x1575, + 0x158b, 0x158b, 0x158b, 0x0006, 0x0014, 0x159e, 0x15b5, 0x159e, + 0x15b5, 0x15b5, 0x15b5, 0x0003, 0x027d, 0x0000, 0x0280, 0x0001, + 0x0014, 0x1542, 0x0002, 0x0283, 0x028b, 0x0006, 0x0014, 0x1575, + 0x1575, 0x1575, 0x1575, 0x1575, 0x1575, 0x0006, 0x0014, 0x159e, + 0x15b5, 0x159e, 0x15b5, 0x15b5, 0x15b5, 0x0003, 0x0297, 0x0000, + 0x029a, 0x0001, 0x0014, 0x1542, 0x0002, 0x029d, 0x02a5, 0x0006, + 0x0014, 0x1575, 0x158b, 0x1575, 0x158b, 0x158b, 0x158b, 0x0006, + // Entry BE00 - BE3F + 0x0014, 0x159e, 0x15b5, 0x159e, 0x15b5, 0x15b5, 0x15b5, 0x0003, + 0x02b1, 0x02b4, 0x02b9, 0x0001, 0x0014, 0x15c9, 0x0003, 0x0014, + 0x15cd, 0x15da, 0x15e4, 0x0002, 0x02bc, 0x02c4, 0x0006, 0x0014, + 0x15ee, 0x15fc, 0x15ee, 0x1606, 0x15ee, 0x15ee, 0x0006, 0x0014, + 0x1613, 0x1613, 0x1613, 0x1622, 0x1613, 0x1613, 0x0003, 0x02d0, + 0x0000, 0x02d3, 0x0001, 0x0014, 0x15c9, 0x0002, 0x02d6, 0x02de, + 0x0006, 0x0014, 0x15ee, 0x15fc, 0x15ee, 0x1606, 0x15ee, 0x15ee, + 0x0006, 0x0014, 0x1613, 0x1613, 0x1613, 0x1631, 0x1613, 0x1613, + // Entry BE40 - BE7F + 0x0003, 0x02ea, 0x0000, 0x02ed, 0x0001, 0x0014, 0x15c9, 0x0002, + 0x02f0, 0x02f8, 0x0006, 0x0014, 0x15ee, 0x15fc, 0x15ee, 0x1606, + 0x15ee, 0x15ee, 0x0006, 0x0014, 0x1613, 0x1613, 0x1613, 0x1622, + 0x1613, 0x1613, 0x0004, 0x0305, 0x0308, 0x030d, 0x0320, 0x0001, + 0x0014, 0x163f, 0x0003, 0x0014, 0x1647, 0x1659, 0x1668, 0x0002, + 0x0310, 0x0318, 0x0006, 0x0014, 0x1676, 0x1688, 0x1676, 0x1696, + 0x1676, 0x1676, 0x0006, 0x0014, 0x16a6, 0x16a6, 0x16a6, 0x16a6, + 0x16a6, 0x16a6, 0x0001, 0x0014, 0x16b9, 0x0004, 0x0328, 0x0000, + // Entry BE80 - BEBF + 0x032b, 0x033e, 0x0001, 0x0014, 0x163f, 0x0002, 0x032e, 0x0336, + 0x0006, 0x0014, 0x1676, 0x1688, 0x1676, 0x1696, 0x1676, 0x1676, + 0x0006, 0x0014, 0x16a6, 0x16a6, 0x16a6, 0x16c5, 0x16a6, 0x16a6, + 0x0001, 0x0014, 0x16b9, 0x0004, 0x0346, 0x0000, 0x0349, 0x035c, + 0x0001, 0x0014, 0x163f, 0x0002, 0x034c, 0x0354, 0x0006, 0x0014, + 0x1676, 0x1688, 0x1676, 0x1696, 0x1676, 0x1676, 0x0006, 0x0014, + 0x16a6, 0x16a6, 0x16a6, 0x16c5, 0x16a6, 0x16a6, 0x0001, 0x0014, + 0x16b9, 0x0003, 0x0363, 0x0366, 0x036d, 0x0001, 0x0014, 0x16d6, + // Entry BEC0 - BEFF + 0x0005, 0x0014, 0x16e2, 0x16e7, 0x16ee, 0x16db, 0x16f4, 0x0002, + 0x0370, 0x0378, 0x0006, 0x0014, 0x16fd, 0x170f, 0x16fd, 0x171d, + 0x172c, 0x16fd, 0x0006, 0x0014, 0x173a, 0x173a, 0x173a, 0x174d, + 0x173a, 0x173a, 0x0003, 0x0384, 0x0387, 0x038e, 0x0001, 0x0014, + 0x16d6, 0x0005, 0x0014, 0x16e2, 0x16e7, 0x16ee, 0x16db, 0x16f4, + 0x0002, 0x0391, 0x0399, 0x0006, 0x0014, 0x16fd, 0x170f, 0x16fd, + 0x171d, 0x172c, 0x16fd, 0x0006, 0x0014, 0x173a, 0x173a, 0x173a, + 0x174d, 0x173a, 0x173a, 0x0003, 0x03a5, 0x0000, 0x03a8, 0x0001, + // Entry BF00 - BF3F + 0x0014, 0x16d6, 0x0002, 0x03ab, 0x03b3, 0x0006, 0x0014, 0x16fd, + 0x170f, 0x16fd, 0x171d, 0x172c, 0x16fd, 0x0006, 0x0014, 0x173a, + 0x173a, 0x173a, 0x174d, 0x173a, 0x173a, 0x0001, 0x03bd, 0x0001, + 0x0014, 0x1761, 0x0003, 0x0000, 0x03c4, 0x03c9, 0x0003, 0x0014, + 0x1774, 0x1786, 0x1793, 0x0002, 0x03cc, 0x03d4, 0x0006, 0x0014, + 0x17a2, 0x17a2, 0x17a2, 0x17b5, 0x17a2, 0x17a2, 0x0006, 0x0014, + 0x17c9, 0x17c9, 0x17c9, 0x17dd, 0x17c9, 0x17c9, 0x0003, 0x0000, + 0x03e0, 0x03e5, 0x0003, 0x0014, 0x17f2, 0x17ff, 0x1807, 0x0002, + // Entry BF40 - BF7F + 0x03e8, 0x03f0, 0x0006, 0x0014, 0x17a2, 0x17a2, 0x17a2, 0x17b5, + 0x17a2, 0x17a2, 0x0006, 0x0014, 0x17c9, 0x17c9, 0x17c9, 0x17dd, + 0x17c9, 0x17c9, 0x0003, 0x0000, 0x03fc, 0x0401, 0x0003, 0x0014, + 0x17f2, 0x17ff, 0x1807, 0x0002, 0x0404, 0x040c, 0x0006, 0x0014, + 0x17a2, 0x17a2, 0x17a2, 0x17b5, 0x17a2, 0x17a2, 0x0006, 0x0014, + 0x17c9, 0x17c9, 0x17c9, 0x17dd, 0x17c9, 0x17c9, 0x0003, 0x0000, + 0x0418, 0x041d, 0x0003, 0x0014, 0x1811, 0x1824, 0x1832, 0x0002, + 0x0420, 0x0428, 0x0006, 0x0014, 0x1842, 0x1842, 0x1842, 0x1856, + // Entry BF80 - BFBF + 0x1842, 0x1842, 0x0006, 0x0014, 0x186b, 0x186b, 0x186b, 0x1880, + 0x186b, 0x186b, 0x0003, 0x0000, 0x0434, 0x0439, 0x0003, 0x0014, + 0x1896, 0x18a4, 0x18ad, 0x0002, 0x043c, 0x0444, 0x0006, 0x0014, + 0x1842, 0x1842, 0x1842, 0x1856, 0x1842, 0x1842, 0x0006, 0x0014, + 0x186b, 0x186b, 0x186b, 0x186b, 0x1880, 0x186b, 0x0003, 0x0000, + 0x0450, 0x0455, 0x0003, 0x0014, 0x1896, 0x18a4, 0x18ad, 0x0002, + 0x0458, 0x0460, 0x0006, 0x0014, 0x1842, 0x1842, 0x1842, 0x1856, + 0x1842, 0x1842, 0x0006, 0x0014, 0x186b, 0x186b, 0x186b, 0x1880, + // Entry BFC0 - BFFF + 0x186b, 0x186b, 0x0003, 0x0000, 0x046c, 0x0471, 0x0003, 0x0014, + 0x18b8, 0x18cd, 0x18dd, 0x0002, 0x0474, 0x047c, 0x0006, 0x0014, + 0x18ef, 0x18ef, 0x18ef, 0x1905, 0x18ef, 0x18ef, 0x0006, 0x0014, + 0x191c, 0x191c, 0x191c, 0x1933, 0x191c, 0x191c, 0x0003, 0x0000, + 0x0488, 0x048d, 0x0003, 0x0014, 0x194b, 0x195b, 0x1966, 0x0002, + 0x0490, 0x0498, 0x0006, 0x0014, 0x18ef, 0x18ef, 0x18ef, 0x1905, + 0x18ef, 0x18ef, 0x0006, 0x0014, 0x191c, 0x191c, 0x191c, 0x1933, + 0x191c, 0x191c, 0x0003, 0x0000, 0x04a4, 0x04a9, 0x0003, 0x0014, + // Entry C000 - C03F + 0x1973, 0x1981, 0x198a, 0x0002, 0x04ac, 0x04b4, 0x0006, 0x0014, + 0x18ef, 0x18ef, 0x18ef, 0x1905, 0x18ef, 0x18ef, 0x0006, 0x0014, + 0x191c, 0x191c, 0x191c, 0x1933, 0x191c, 0x191c, 0x0003, 0x0000, + 0x04c0, 0x04c5, 0x0003, 0x0014, 0x1995, 0x19ab, 0x19bc, 0x0002, + 0x04c8, 0x04d0, 0x0006, 0x0014, 0x19cf, 0x19cf, 0x19cf, 0x19e6, + 0x19cf, 0x19cf, 0x0006, 0x0014, 0x19fe, 0x19fe, 0x19fe, 0x1a16, + 0x19fe, 0x19fe, 0x0003, 0x0000, 0x04dc, 0x04e1, 0x0003, 0x0014, + 0x1a2f, 0x1a40, 0x1a4c, 0x0002, 0x04e4, 0x04ec, 0x0006, 0x0014, + // Entry C040 - C07F + 0x19cf, 0x19cf, 0x19cf, 0x19e6, 0x19cf, 0x19cf, 0x0006, 0x0014, + 0x19fe, 0x19fe, 0x19fe, 0x1a16, 0x19fe, 0x19fe, 0x0003, 0x0000, + 0x04f8, 0x04fd, 0x0003, 0x0014, 0x1a5a, 0x1a6a, 0x1a75, 0x0002, + 0x0500, 0x0508, 0x0006, 0x0014, 0x19cf, 0x19cf, 0x19cf, 0x19e6, + 0x19cf, 0x19cf, 0x0006, 0x0014, 0x19fe, 0x19fe, 0x19fe, 0x1a16, + 0x19fe, 0x19fe, 0x0003, 0x0000, 0x0514, 0x0519, 0x0003, 0x0014, + 0x1a82, 0x1a94, 0x1aa1, 0x0002, 0x051c, 0x0524, 0x0006, 0x0014, + 0x1ab0, 0x1ab0, 0x1ab0, 0x1ac3, 0x1ab0, 0x1ab0, 0x0006, 0x0014, + // Entry C080 - C0BF + 0x1ad7, 0x1ad7, 0x1ad7, 0x1aeb, 0x1ad7, 0x1ad7, 0x0003, 0x0000, + 0x0530, 0x0535, 0x0003, 0x0014, 0x1b00, 0x1b0d, 0x1b15, 0x0002, + 0x0538, 0x0540, 0x0006, 0x0014, 0x1ab0, 0x1ab0, 0x1ab0, 0x1b1f, + 0x1ab0, 0x1ab0, 0x0006, 0x0014, 0x1ad7, 0x1ad7, 0x1ad7, 0x1aeb, + 0x1ad7, 0x1ad7, 0x0003, 0x0000, 0x054c, 0x0551, 0x0003, 0x0014, + 0x1b00, 0x1b0d, 0x1b15, 0x0002, 0x0554, 0x055c, 0x0006, 0x0014, + 0x1ab0, 0x1ab0, 0x1ab0, 0x1ac3, 0x1ab0, 0x1ab0, 0x0006, 0x0014, + 0x1ad7, 0x1ad7, 0x1ad7, 0x1aeb, 0x1ad7, 0x1ad7, 0x0003, 0x0000, + // Entry C0C0 - C0FF + 0x0568, 0x056d, 0x0003, 0x0014, 0x1b32, 0x1b47, 0x1b57, 0x0002, + 0x0570, 0x0578, 0x0006, 0x0014, 0x1b69, 0x1b69, 0x1b69, 0x1b7f, + 0x1b69, 0x1b69, 0x0006, 0x0014, 0x1b96, 0x1b96, 0x1b96, 0x1bad, + 0x1b96, 0x1b96, 0x0003, 0x0000, 0x0584, 0x0589, 0x0003, 0x0014, + 0x1bc5, 0x1bd5, 0x1be0, 0x0002, 0x058c, 0x0594, 0x0006, 0x0014, + 0x1b69, 0x1b69, 0x1b69, 0x1b69, 0x1b69, 0x1b69, 0x0006, 0x0014, + 0x1b96, 0x1b96, 0x1b96, 0x1bad, 0x1b96, 0x1b96, 0x0003, 0x0000, + 0x05a0, 0x05a5, 0x0003, 0x0014, 0x1bed, 0x1bfc, 0x1c06, 0x0002, + // Entry C100 - C13F + 0x05a8, 0x05b0, 0x0006, 0x0014, 0x1b69, 0x1b69, 0x1b69, 0x1b7f, + 0x1b69, 0x1b69, 0x0006, 0x0014, 0x1b96, 0x1b96, 0x1b96, 0x1bad, + 0x1b96, 0x1b96, 0x0003, 0x0000, 0x05bc, 0x05c1, 0x0003, 0x0014, + 0x1c12, 0x1c27, 0x1c37, 0x0002, 0x05c4, 0x05cc, 0x0006, 0x0014, + 0x1c49, 0x1c49, 0x1c49, 0x1c5f, 0x1c49, 0x1c49, 0x0006, 0x0014, + 0x1c76, 0x1c76, 0x1c76, 0x1c8d, 0x1c76, 0x1c76, 0x0003, 0x0000, + 0x05d8, 0x05dd, 0x0003, 0x0014, 0x1ca5, 0x1cb5, 0x1cc0, 0x0002, + 0x05e0, 0x05e8, 0x0006, 0x0014, 0x1c49, 0x1c49, 0x1c49, 0x1c5f, + // Entry C140 - C17F + 0x1c49, 0x1c49, 0x0006, 0x0014, 0x1c76, 0x1c76, 0x1c76, 0x1c8d, + 0x1c76, 0x1c76, 0x0003, 0x0000, 0x05f4, 0x05f9, 0x0003, 0x0014, + 0x1ccd, 0x1cdb, 0x1ce4, 0x0002, 0x05fc, 0x0604, 0x0006, 0x0014, + 0x1c49, 0x1c49, 0x1c49, 0x1c5f, 0x1c49, 0x1c49, 0x0006, 0x0014, + 0x1c76, 0x1c76, 0x1c76, 0x1c8d, 0x1c76, 0x1c76, 0x0001, 0x060e, + 0x0001, 0x0014, 0x1cef, 0x0003, 0x0615, 0x0618, 0x061c, 0x0001, + 0x0014, 0x1cf5, 0x0002, 0x0014, 0xffff, 0x1cf9, 0x0002, 0x061f, + 0x0627, 0x0006, 0x0014, 0x1d04, 0x1d12, 0x1d04, 0x1d04, 0x1d04, + // Entry C180 - C1BF + 0x1d04, 0x0006, 0x0014, 0x1d1c, 0x1d2b, 0x1d1c, 0x1d1c, 0x1d1c, + 0x1d1c, 0x0003, 0x0633, 0x0000, 0x0636, 0x0001, 0x0014, 0x1cf5, + 0x0002, 0x0639, 0x0641, 0x0006, 0x0014, 0x1d04, 0x1d12, 0x1d04, + 0x1d04, 0x1d04, 0x1d04, 0x0006, 0x0014, 0x1d1c, 0x1d2b, 0x1d1c, + 0x1d1c, 0x1d1c, 0x1d1c, 0x0003, 0x064d, 0x0000, 0x0650, 0x0001, + 0x0014, 0x1cf5, 0x0002, 0x0653, 0x065b, 0x0006, 0x0014, 0x1d04, + 0x1d12, 0x1d04, 0x1d04, 0x1d04, 0x1d04, 0x0006, 0x0014, 0x1d1c, + 0x1d1c, 0x1d1c, 0x1d1c, 0x1d1c, 0x1d1c, 0x0003, 0x0667, 0x066a, + // Entry C1C0 - C1FF + 0x066e, 0x0001, 0x0014, 0x1d36, 0x0002, 0x0014, 0xffff, 0x1d3c, + 0x0002, 0x0671, 0x0679, 0x0006, 0x0014, 0x1d48, 0x1d58, 0x1d48, + 0x1d64, 0x1d48, 0x1d48, 0x0006, 0x0014, 0x1d74, 0x1d74, 0x1d74, + 0x1d85, 0x1d74, 0x1d74, 0x0003, 0x0685, 0x0000, 0x0688, 0x0001, + 0x0014, 0x1d96, 0x0002, 0x068b, 0x0693, 0x0006, 0x0014, 0x1d9b, + 0x1d9b, 0x1d9b, 0x1daa, 0x1d9b, 0x1d9b, 0x0006, 0x0014, 0x1db9, + 0x1db9, 0x1db9, 0x1dc9, 0x1db9, 0x1db9, 0x0003, 0x069f, 0x0000, + 0x06a2, 0x0001, 0x0014, 0x1d96, 0x0002, 0x06a5, 0x06ad, 0x0006, + // Entry C200 - C23F + 0x0014, 0x1d9b, 0x1d9b, 0x1d9b, 0x1daa, 0x1d9b, 0x1d9b, 0x0006, + 0x0014, 0x1db9, 0x1db9, 0x1db9, 0x1dc9, 0x1db9, 0x1db9, 0x0003, + 0x06b9, 0x06bc, 0x06c0, 0x0001, 0x0014, 0x1dd9, 0x0002, 0x0014, + 0xffff, 0x1de0, 0x0002, 0x06c3, 0x06cb, 0x0006, 0x0014, 0x1de5, + 0x1df6, 0x1de5, 0x1de5, 0x1de5, 0x1de5, 0x0006, 0x0014, 0x1e03, + 0x1e15, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x0003, 0x06d7, 0x0000, + 0x06da, 0x0001, 0x0014, 0x1dd9, 0x0002, 0x06dd, 0x06e5, 0x0006, + 0x0014, 0x1de5, 0x1df6, 0x1de5, 0x1de5, 0x1de5, 0x1de5, 0x0006, + // Entry C240 - C27F + 0x0014, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x0003, + 0x06f1, 0x0000, 0x06f4, 0x0001, 0x0014, 0x1dd9, 0x0002, 0x06f7, + 0x06ff, 0x0006, 0x0014, 0x1de5, 0x1df6, 0x1de5, 0x1de5, 0x1de5, + 0x1de5, 0x0006, 0x0014, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x1e03, + 0x1e03, 0x0001, 0x0709, 0x0001, 0x0014, 0x1e23, 0x0004, 0x0711, + 0x0716, 0x071b, 0x0726, 0x0003, 0x0000, 0x1dc7, 0x2273, 0x227a, + 0x0003, 0x0014, 0x1e31, 0x1e3b, 0x1e49, 0x0002, 0x0000, 0x071e, + 0x0002, 0x0000, 0x0721, 0x0003, 0x0014, 0xffff, 0x1e5b, 0x1e6d, + // Entry C280 - C2BF + 0x0002, 0x08ef, 0x0729, 0x0003, 0x07c3, 0x0859, 0x072d, 0x0094, + 0x0014, 0x1e80, 0x1e92, 0x1eab, 0x1ec1, 0x1ef2, 0x1f3b, 0x1f70, + 0x1fbb, 0x2027, 0x2090, 0x2102, 0xffff, 0x2161, 0x2192, 0x21ce, + 0x2211, 0x225d, 0x229e, 0x22f7, 0x235e, 0x23cc, 0x2422, 0x2473, + 0x24b1, 0x24ee, 0x251c, 0x2529, 0x2547, 0x2573, 0x259c, 0x25ca, + 0x25e7, 0x261b, 0x264d, 0x2686, 0x26b4, 0x26c9, 0x26ed, 0x272b, + 0x2771, 0x2793, 0x279f, 0x27b8, 0x27de, 0x280e, 0x2833, 0x2881, + 0x28b5, 0x28e4, 0x293e, 0x2999, 0x29bb, 0x29d1, 0x29f4, 0x2a04, + // Entry C2C0 - C2FF + 0x2a20, 0x2a48, 0x2a5f, 0x2a91, 0x2aed, 0x2b31, 0x2b47, 0x2b6a, + 0x2bb2, 0x2be9, 0x2c0b, 0x2c17, 0x2c2b, 0x2c3e, 0x2c59, 0x2c71, + 0x2c96, 0x2cc6, 0x2cfb, 0x2d2e, 0xffff, 0x2d54, 0x2d6d, 0x2d94, + 0x2db8, 0x2dd7, 0x2e07, 0x2e18, 0x2e43, 0x2e7d, 0x2ea0, 0x2ec8, + 0x2ed7, 0x2ee8, 0x2ef8, 0x2f20, 0x2f4c, 0x2f78, 0x2fd9, 0x3024, + 0x305f, 0x3085, 0x3093, 0x309f, 0x30c2, 0x3110, 0x3157, 0x3189, + 0x3194, 0x31c1, 0x3213, 0x324e, 0x327f, 0x32a9, 0x32b5, 0x32de, + 0x3314, 0x3348, 0x3374, 0x33aa, 0x33f4, 0x3403, 0x3411, 0x3421, + // Entry C300 - C33F + 0x3430, 0x344d, 0xffff, 0x3483, 0x34a7, 0x34b8, 0x34c8, 0x34df, + 0x34f0, 0x34ff, 0x350b, 0x3525, 0x354b, 0x355c, 0x3576, 0x359a, + 0x35b9, 0x35eb, 0x3606, 0x363f, 0x367b, 0x36a3, 0x36c5, 0x3705, + 0x3731, 0x373e, 0x374e, 0x3772, 0x37ae, 0x0094, 0x0014, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1eda, 0x1f2e, 0x1f61, 0x1f9a, 0x2009, + 0x206f, 0x20de, 0xffff, 0x2156, 0x2183, 0x21bc, 0x21f8, 0x224f, + 0x2285, 0x22dc, 0x2339, 0x23b4, 0x2408, 0x2462, 0x24a1, 0x24dd, + 0xffff, 0xffff, 0x2537, 0xffff, 0x258b, 0xffff, 0x25d9, 0x260f, + // Entry C340 - C37F + 0x263f, 0x2675, 0xffff, 0xffff, 0x26de, 0x2717, 0x2766, 0xffff, + 0xffff, 0xffff, 0x27cc, 0xffff, 0x281c, 0x286d, 0xffff, 0x28ce, + 0x291c, 0x298e, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a12, 0xffff, + 0xffff, 0x2a77, 0x2ad1, 0xffff, 0xffff, 0x2b54, 0x2ba2, 0x2bde, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2c8b, 0x2cb8, + 0x2cee, 0x2d21, 0xffff, 0xffff, 0xffff, 0x2d88, 0xffff, 0x2dc5, + 0xffff, 0xffff, 0x2e2c, 0xffff, 0x2e92, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2f10, 0xffff, 0x2f59, 0x2fc2, 0x3013, 0x3052, 0xffff, + // Entry C380 - C3BF + 0xffff, 0xffff, 0x30ab, 0x30fc, 0x3144, 0xffff, 0xffff, 0x31a7, + 0x3201, 0x3243, 0x3270, 0xffff, 0xffff, 0x32cf, 0x3308, 0x3338, + 0xffff, 0x338b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x343e, + 0xffff, 0x3477, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3518, 0xffff, 0xffff, 0x356a, 0xffff, 0x35a6, 0xffff, + 0x35f8, 0x362e, 0x366d, 0xffff, 0x36b3, 0x36f5, 0xffff, 0xffff, + 0xffff, 0x3764, 0x379a, 0x0094, 0x0014, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1f12, 0x1f50, 0x1f87, 0x1fe4, 0x204d, 0x20b9, 0x212e, + // Entry C3C0 - C3FF + 0xffff, 0x2174, 0x21a9, 0x21e5, 0x2232, 0x2273, 0x22bf, 0x231a, + 0x238b, 0x23ec, 0x2444, 0x248c, 0x24c9, 0x2507, 0xffff, 0xffff, + 0x255f, 0xffff, 0x25b5, 0xffff, 0x25fd, 0x262f, 0x2663, 0x269f, + 0xffff, 0xffff, 0x2704, 0x2747, 0x2784, 0xffff, 0xffff, 0xffff, + 0x27f8, 0xffff, 0x2852, 0x289d, 0xffff, 0x2902, 0x2968, 0x29ac, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2a36, 0xffff, 0xffff, 0x2ab3, + 0x2b11, 0xffff, 0xffff, 0x2b88, 0x2bca, 0x2bfc, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2ca9, 0x2cdc, 0x2d10, 0x2d43, + // Entry C400 - C43F + 0xffff, 0xffff, 0xffff, 0x2da8, 0xffff, 0x2df1, 0xffff, 0xffff, + 0x2e62, 0xffff, 0x2eb6, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f38, + 0xffff, 0x2f9f, 0x2ff8, 0x303d, 0x3074, 0xffff, 0xffff, 0xffff, + 0x30e1, 0x312c, 0x3172, 0xffff, 0xffff, 0x31e3, 0x322d, 0x3261, + 0x3296, 0xffff, 0xffff, 0x32f5, 0x3328, 0x3360, 0xffff, 0x33d1, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3464, 0xffff, 0x3497, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x353a, + 0xffff, 0xffff, 0x358a, 0xffff, 0x35d4, 0xffff, 0x361c, 0x3658, + // Entry C440 - C47F + 0x3691, 0xffff, 0x36df, 0x371d, 0xffff, 0xffff, 0xffff, 0x3788, + 0x37ca, 0x0003, 0x08f3, 0x0962, 0x0926, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + // Entry C480 - C4BF + 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, + 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2769, 0x0031, 0x0006, 0xffff, 0xffff, + // Entry C4C0 - C4FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, + 0x0004, 0x02b8, 0x06da, 0x0012, 0x0017, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0024, 0x004f, 0x0278, 0x0000, 0x0285, 0x0000, + // Entry C500 - C53F + 0x0000, 0x0000, 0x0000, 0x0292, 0x0000, 0x02aa, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, + 0x0001, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, 0x0035, 0x0032, + 0x0038, 0x0001, 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, 0x0001, + 0x0015, 0x0000, 0x0001, 0x0002, 0x01fb, 0x0004, 0x004c, 0x0046, + 0x0043, 0x0049, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0058, + // Entry C540 - C57F + 0x00bd, 0x0114, 0x0149, 0x0220, 0x0245, 0x0256, 0x0267, 0x0002, + 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, 0x000d, 0x0015, + 0xffff, 0x000b, 0x0010, 0x0015, 0x001a, 0x001f, 0x0023, 0x0028, + 0x002d, 0x0032, 0x0037, 0x003c, 0x0041, 0x000d, 0x0000, 0xffff, + 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, 0x21ce, + 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x000d, 0xffff, 0x0089, + 0x0090, 0x3140, 0x009d, 0x3146, 0x00a3, 0x00a8, 0x314a, 0x3151, + 0x315b, 0x3163, 0x316c, 0x0003, 0x0090, 0x009f, 0x00ae, 0x000d, + // Entry C580 - C5BF + 0x0015, 0xffff, 0x000b, 0x0010, 0x0015, 0x001a, 0x0046, 0x0023, + 0x0028, 0x002d, 0x0032, 0x0037, 0x003c, 0x0041, 0x000d, 0x0000, + 0xffff, 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, + 0x21ce, 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x000d, 0xffff, + 0x0089, 0x0090, 0x3140, 0x009d, 0x3175, 0x00a3, 0x00a8, 0x314a, + 0x3151, 0x315b, 0x3163, 0x316c, 0x0002, 0x00c0, 0x00ea, 0x0005, + 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, 0x0015, 0x004a, + 0x0050, 0x0055, 0x005a, 0x005f, 0x0064, 0x0069, 0x0007, 0x0000, + // Entry C5C0 - C5FF + 0x21d0, 0x223a, 0x04dd, 0x228c, 0x04dd, 0x2238, 0x228e, 0x0007, + 0x0015, 0x006f, 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, 0x0082, + 0x0007, 0x0015, 0x0086, 0x008e, 0x0095, 0x009d, 0x00a4, 0x00ac, + 0x00b3, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, 0x0102, 0x0007, + 0x0015, 0x00bb, 0x00c0, 0x00c4, 0x00c8, 0x00cc, 0x00d0, 0x00d4, + 0x0007, 0x0000, 0x21d0, 0x223a, 0x04dd, 0x228c, 0x04dd, 0x2238, + 0x228e, 0x0007, 0x0015, 0x006f, 0x0073, 0x0076, 0x0079, 0x007c, + 0x007f, 0x0082, 0x0007, 0x0015, 0x0086, 0x008e, 0x0095, 0x009d, + // Entry C600 - C63F + 0x00a4, 0x00ac, 0x00b3, 0x0002, 0x0117, 0x0130, 0x0003, 0x011b, + 0x0122, 0x0129, 0x0005, 0x0015, 0xffff, 0x00d9, 0x00e1, 0x00e9, + 0x00f1, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0003, + 0x0134, 0x013b, 0x0142, 0x0005, 0x0015, 0xffff, 0x00d9, 0x00e1, + 0x00e9, 0x00f1, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, + 0x0002, 0x014c, 0x01b6, 0x0003, 0x0150, 0x0172, 0x0194, 0x0009, + // Entry C640 - C67F + 0x015d, 0x0160, 0x015a, 0x0163, 0x0169, 0x016c, 0x016f, 0x0000, + 0x0166, 0x0001, 0x0015, 0x0125, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0015, 0x012c, 0x0001, 0x0015, 0x0138, + 0x0001, 0x0015, 0x0147, 0x0001, 0x0015, 0x0158, 0x0001, 0x0015, + 0x0163, 0x0009, 0x017f, 0x0182, 0x017c, 0x0185, 0x018b, 0x018e, + 0x0191, 0x0000, 0x0188, 0x0001, 0x0015, 0x0125, 0x0001, 0x0000, + 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0015, 0x012c, 0x0001, + 0x0015, 0x0138, 0x0001, 0x0015, 0x0147, 0x0001, 0x0015, 0x0158, + // Entry C680 - C6BF + 0x0001, 0x0015, 0x0163, 0x0009, 0x01a1, 0x01a4, 0x019e, 0x01a7, + 0x01ad, 0x01b0, 0x01b3, 0x0000, 0x01aa, 0x0001, 0x0015, 0x0125, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0015, + 0x012c, 0x0001, 0x0015, 0x0138, 0x0001, 0x0015, 0x0147, 0x0001, + 0x0015, 0x0158, 0x0001, 0x0015, 0x0163, 0x0003, 0x01ba, 0x01dc, + 0x01fe, 0x0009, 0x01c7, 0x01ca, 0x01c4, 0x01cd, 0x01d3, 0x01d6, + 0x01d9, 0x0000, 0x01d0, 0x0001, 0x0015, 0x0125, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0015, 0x016d, 0x0001, + // Entry C6C0 - C6FF + 0x0015, 0x0174, 0x0001, 0x0015, 0x017e, 0x0001, 0x0015, 0x018a, + 0x0001, 0x0015, 0x0190, 0x0009, 0x01e9, 0x01ec, 0x01e6, 0x01ef, + 0x01f5, 0x01f8, 0x01fb, 0x0000, 0x01f2, 0x0001, 0x0015, 0x0125, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0015, + 0x016d, 0x0001, 0x0015, 0x0174, 0x0001, 0x0015, 0x017e, 0x0001, + 0x0015, 0x018a, 0x0001, 0x0015, 0x0190, 0x0009, 0x020b, 0x020e, + 0x0208, 0x0211, 0x0217, 0x021a, 0x021d, 0x0000, 0x0214, 0x0001, + 0x0015, 0x0125, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + // Entry C700 - C73F + 0x0001, 0x0015, 0x016d, 0x0001, 0x0015, 0x0174, 0x0001, 0x0015, + 0x017e, 0x0001, 0x0015, 0x018a, 0x0001, 0x0015, 0x0190, 0x0003, + 0x022f, 0x023a, 0x0224, 0x0002, 0x0227, 0x022b, 0x0002, 0x0015, + 0x0194, 0x01b8, 0x0002, 0x0015, 0x019a, 0x01be, 0x0002, 0x0232, + 0x0236, 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01d7, + 0x01de, 0x0002, 0x023d, 0x0241, 0x0002, 0x0015, 0x01e3, 0x01eb, + 0x0002, 0x0015, 0x01e7, 0x01ef, 0x0004, 0x0253, 0x024d, 0x024a, + 0x0250, 0x0001, 0x0015, 0x01f2, 0x0001, 0x0013, 0x06b1, 0x0001, + // Entry C740 - C77F + 0x0015, 0x0207, 0x0001, 0x0002, 0x0860, 0x0004, 0x0264, 0x025e, + 0x025b, 0x0261, 0x0001, 0x0015, 0x0210, 0x0001, 0x0015, 0x021e, + 0x0001, 0x0015, 0x0229, 0x0001, 0x0015, 0x0232, 0x0004, 0x0275, + 0x026f, 0x026c, 0x0272, 0x0001, 0x0015, 0x0238, 0x0001, 0x0015, + 0x0238, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x027e, 0x0001, 0x0280, 0x0001, + 0x0282, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x028b, 0x0001, 0x028d, 0x0001, 0x028f, 0x0001, 0x0000, + // Entry C780 - C7BF + 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0299, + 0x0004, 0x02a7, 0x02a1, 0x029e, 0x02a4, 0x0001, 0x0013, 0x0466, + 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, 0x0002, + 0x01fb, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x02b0, 0x0001, + 0x02b2, 0x0001, 0x02b4, 0x0002, 0x0000, 0x1a20, 0x2290, 0x0040, + 0x02f9, 0x0000, 0x0000, 0x02fe, 0x0315, 0x032c, 0x0343, 0x035a, + 0x0371, 0x0388, 0x039f, 0x03b6, 0x03cd, 0x03e8, 0x0403, 0x0000, + 0x0000, 0x0000, 0x041e, 0x0437, 0x0450, 0x0000, 0x0000, 0x0000, + // Entry C7C0 - C7FF + 0x0469, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x046e, 0x0482, + 0x0496, 0x04aa, 0x04be, 0x04d2, 0x04e6, 0x04fa, 0x050e, 0x0522, + 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, 0x059a, 0x05ae, 0x05c2, + 0x05d6, 0x05ea, 0x05fe, 0x0000, 0x0612, 0x0000, 0x0617, 0x062d, + 0x0643, 0x0659, 0x066f, 0x0685, 0x069b, 0x06b1, 0x06c3, 0x06d5, + 0x0001, 0x02fb, 0x0001, 0x0015, 0x0246, 0x0003, 0x0302, 0x0305, + 0x030a, 0x0001, 0x0015, 0x024b, 0x0003, 0x0015, 0x024f, 0x025a, + 0x0260, 0x0002, 0x030d, 0x0311, 0x0002, 0x0015, 0x026b, 0x026b, + // Entry C800 - C83F + 0x0002, 0x0015, 0x0276, 0x0276, 0x0003, 0x0319, 0x031c, 0x0321, + 0x0001, 0x0015, 0x024b, 0x0003, 0x0015, 0x024f, 0x025a, 0x0260, + 0x0002, 0x0324, 0x0328, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, + 0x0015, 0x0276, 0x0276, 0x0003, 0x0330, 0x0333, 0x0338, 0x0001, + 0x0015, 0x024b, 0x0003, 0x0015, 0x024f, 0x025a, 0x0260, 0x0002, + 0x033b, 0x033f, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x0015, + 0x0276, 0x0276, 0x0003, 0x0347, 0x034a, 0x034f, 0x0001, 0x000d, + 0x03b7, 0x0003, 0x0015, 0x0288, 0x0297, 0x02a5, 0x0002, 0x0352, + // Entry C840 - C87F + 0x0356, 0x0002, 0x0015, 0x02c3, 0x02b4, 0x0002, 0x0015, 0x02ea, + 0x02d4, 0x0003, 0x035e, 0x0361, 0x0366, 0x0001, 0x0015, 0x0302, + 0x0003, 0x0015, 0x0307, 0x0313, 0x031e, 0x0002, 0x0369, 0x036d, + 0x0002, 0x0015, 0x032a, 0x032a, 0x0002, 0x0015, 0x0336, 0x0336, + 0x0003, 0x0375, 0x0378, 0x037d, 0x0001, 0x0015, 0x0302, 0x0003, + 0x0015, 0x0307, 0x0313, 0x031e, 0x0002, 0x0380, 0x0384, 0x0002, + 0x0015, 0x032a, 0x032a, 0x0002, 0x0015, 0x0336, 0x0336, 0x0003, + 0x038c, 0x038f, 0x0394, 0x0001, 0x0015, 0x0349, 0x0003, 0x0015, + // Entry C880 - C8BF + 0x0350, 0x035e, 0x036b, 0x0002, 0x0397, 0x039b, 0x0002, 0x0015, + 0x0387, 0x0379, 0x0002, 0x0015, 0x03ac, 0x0397, 0x0003, 0x03a3, + 0x03a6, 0x03ab, 0x0001, 0x0001, 0x017d, 0x0003, 0x0015, 0x03c3, + 0x03ce, 0x03d8, 0x0002, 0x03ae, 0x03b2, 0x0002, 0x0015, 0x03ee, + 0x03e3, 0x0002, 0x0015, 0x040c, 0x03fa, 0x0003, 0x03ba, 0x03bd, + 0x03c2, 0x0001, 0x0001, 0x017d, 0x0003, 0x0015, 0x03c3, 0x03ce, + 0x03d8, 0x0002, 0x03c5, 0x03c9, 0x0002, 0x0015, 0x03ee, 0x03e3, + 0x0002, 0x0015, 0x040c, 0x03fa, 0x0004, 0x03d2, 0x03d5, 0x03da, + // Entry C8C0 - C8FF + 0x03e5, 0x0001, 0x0015, 0x041f, 0x0003, 0x0015, 0x0423, 0x042e, + 0x0438, 0x0002, 0x03dd, 0x03e1, 0x0002, 0x0015, 0x044e, 0x0443, + 0x0002, 0x0015, 0x046c, 0x045a, 0x0001, 0x0015, 0x047f, 0x0004, + 0x03ed, 0x03f0, 0x03f5, 0x0400, 0x0001, 0x0015, 0x041f, 0x0003, + 0x0015, 0x0423, 0x042e, 0x0438, 0x0002, 0x03f8, 0x03fc, 0x0002, + 0x0015, 0x044e, 0x0443, 0x0002, 0x0015, 0x046c, 0x045a, 0x0001, + 0x0015, 0x047f, 0x0004, 0x0408, 0x040b, 0x0410, 0x041b, 0x0001, + 0x0015, 0x041f, 0x0003, 0x0015, 0x0423, 0x042e, 0x0438, 0x0002, + // Entry C900 - C93F + 0x0413, 0x0417, 0x0002, 0x0015, 0x044e, 0x0443, 0x0002, 0x0015, + 0x046c, 0x045a, 0x0001, 0x0015, 0x047f, 0x0003, 0x0422, 0x0425, + 0x042c, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, 0x04a0, + 0x04a6, 0x048e, 0x04af, 0x0002, 0x042f, 0x0433, 0x0002, 0x0015, + 0x04c7, 0x04bc, 0x0002, 0x0015, 0x04e5, 0x04d3, 0x0003, 0x043b, + 0x043e, 0x0445, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, + 0x04a0, 0x04a6, 0x048e, 0x04af, 0x0002, 0x0448, 0x044c, 0x0002, + 0x0015, 0x04c7, 0x04bc, 0x0002, 0x0015, 0x04e5, 0x04d3, 0x0003, + // Entry C940 - C97F + 0x0454, 0x0457, 0x045e, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, + 0x0499, 0x04a0, 0x04a6, 0x048e, 0x04af, 0x0002, 0x0461, 0x0465, + 0x0002, 0x0015, 0x04c7, 0x04bc, 0x0002, 0x0015, 0x04e5, 0x04d3, + 0x0001, 0x046b, 0x0001, 0x0015, 0x04f8, 0x0003, 0x0000, 0x0472, + 0x0477, 0x0003, 0x0015, 0x04ff, 0x050e, 0x051a, 0x0002, 0x047a, + 0x047e, 0x0002, 0x0015, 0x0538, 0x0529, 0x0002, 0x0015, 0x055e, + 0x0548, 0x0003, 0x0000, 0x0486, 0x048b, 0x0003, 0x0015, 0x0575, + 0x0582, 0x058c, 0x0002, 0x048e, 0x0492, 0x0002, 0x0015, 0x0538, + // Entry C980 - C9BF + 0x0529, 0x0002, 0x0015, 0x055e, 0x0548, 0x0003, 0x0000, 0x049a, + 0x049f, 0x0003, 0x0015, 0x0599, 0x05a5, 0x05ae, 0x0002, 0x04a2, + 0x04a6, 0x0002, 0x0015, 0x0538, 0x0529, 0x0002, 0x0015, 0x055e, + 0x0548, 0x0003, 0x0000, 0x04ae, 0x04b3, 0x0003, 0x0015, 0x05ba, + 0x05c8, 0x05d3, 0x0002, 0x04b6, 0x04ba, 0x0002, 0x0015, 0x05ef, + 0x05e1, 0x0002, 0x0015, 0x0613, 0x05fe, 0x0003, 0x0000, 0x04c2, + 0x04c7, 0x0003, 0x0015, 0x0629, 0x0635, 0x063e, 0x0002, 0x04ca, + 0x04ce, 0x0002, 0x0015, 0x05ef, 0x05e1, 0x0002, 0x0015, 0x0613, + // Entry C9C0 - C9FF + 0x05fe, 0x0003, 0x0000, 0x04d6, 0x04db, 0x0003, 0x0015, 0x064a, + 0x0655, 0x065d, 0x0002, 0x04de, 0x04e2, 0x0002, 0x0015, 0x05ef, + 0x05e1, 0x0002, 0x0015, 0x0613, 0x05fe, 0x0003, 0x0000, 0x04ea, + 0x04ef, 0x0003, 0x0015, 0x0668, 0x0677, 0x0683, 0x0002, 0x04f2, + 0x04f6, 0x0002, 0x0015, 0x06a1, 0x0692, 0x0002, 0x0015, 0x06c7, + 0x06b1, 0x0003, 0x0000, 0x04fe, 0x0503, 0x0003, 0x0015, 0x06de, + 0x06ea, 0x06f3, 0x0002, 0x0506, 0x050a, 0x0002, 0x0015, 0x06a1, + 0x0692, 0x0002, 0x0015, 0x06c7, 0x06b1, 0x0003, 0x0000, 0x0512, + // Entry CA00 - CA3F + 0x0517, 0x0003, 0x0015, 0x06ff, 0x070a, 0x0712, 0x0002, 0x051a, + 0x051e, 0x0002, 0x0015, 0x06a1, 0x0692, 0x0002, 0x0015, 0x06c7, + 0x06b1, 0x0003, 0x0000, 0x0526, 0x052b, 0x0003, 0x0015, 0x071d, + 0x072b, 0x0736, 0x0002, 0x052e, 0x0532, 0x0002, 0x0015, 0x0752, + 0x0744, 0x0002, 0x0015, 0x0776, 0x0761, 0x0003, 0x0000, 0x053a, + 0x053f, 0x0003, 0x0015, 0x078c, 0x0798, 0x07a1, 0x0002, 0x0542, + 0x0546, 0x0002, 0x0015, 0x0752, 0x0744, 0x0002, 0x0015, 0x0776, + 0x0761, 0x0003, 0x0000, 0x054e, 0x0553, 0x0003, 0x0015, 0x07ad, + // Entry CA40 - CA7F + 0x07b8, 0x07c0, 0x0002, 0x0556, 0x055a, 0x0002, 0x0015, 0x0752, + 0x0744, 0x0002, 0x0015, 0x0776, 0x0761, 0x0003, 0x0000, 0x0562, + 0x0567, 0x0003, 0x0015, 0x07cb, 0x07da, 0x07e6, 0x0002, 0x056a, + 0x056e, 0x0002, 0x0015, 0x0804, 0x07f5, 0x0002, 0x0015, 0x082a, + 0x0814, 0x0003, 0x0000, 0x0576, 0x057b, 0x0003, 0x0015, 0x0841, + 0x084d, 0x0856, 0x0002, 0x057e, 0x0582, 0x0002, 0x0015, 0x0804, + 0x07f5, 0x0002, 0x0015, 0x082a, 0x0814, 0x0003, 0x0000, 0x058a, + 0x058f, 0x0003, 0x0015, 0x0862, 0x086d, 0x0875, 0x0002, 0x0592, + // Entry CA80 - CABF + 0x0596, 0x0002, 0x0015, 0x0804, 0x07f5, 0x0002, 0x0015, 0x082a, + 0x0814, 0x0003, 0x0000, 0x059e, 0x05a3, 0x0003, 0x0015, 0x0880, + 0x088e, 0x0899, 0x0002, 0x05a6, 0x05aa, 0x0002, 0x0015, 0x08b5, + 0x08a7, 0x0002, 0x0015, 0x08d9, 0x08c4, 0x0003, 0x0000, 0x05b2, + 0x05b7, 0x0003, 0x0015, 0x08ef, 0x08fb, 0x0904, 0x0002, 0x05ba, + 0x05be, 0x0002, 0x0015, 0x08b5, 0x08a7, 0x0002, 0x0015, 0x08d9, + 0x08c4, 0x0003, 0x0000, 0x05c6, 0x05cb, 0x0003, 0x0015, 0x0910, + 0x091b, 0x0923, 0x0002, 0x05ce, 0x05d2, 0x0002, 0x0015, 0x08b5, + // Entry CAC0 - CAFF + 0x08a7, 0x0002, 0x0015, 0x08d9, 0x08c4, 0x0003, 0x0000, 0x05da, + 0x05df, 0x0003, 0x0015, 0x092e, 0x093d, 0x0949, 0x0002, 0x05e2, + 0x05e6, 0x0002, 0x0015, 0x0967, 0x0958, 0x0002, 0x0015, 0x098d, + 0x0977, 0x0003, 0x0000, 0x05ee, 0x05f3, 0x0003, 0x0015, 0x09a4, + 0x09b1, 0x09bb, 0x0002, 0x05f6, 0x05fa, 0x0002, 0x0015, 0x0967, + 0x0958, 0x0002, 0x0015, 0x098d, 0x0977, 0x0003, 0x0000, 0x0602, + 0x0607, 0x0003, 0x0015, 0x09c8, 0x09d4, 0x09dd, 0x0002, 0x060a, + 0x060e, 0x0002, 0x0015, 0x0967, 0x0958, 0x0002, 0x0015, 0x098d, + // Entry CB00 - CB3F + 0x0977, 0x0001, 0x0614, 0x0001, 0x0007, 0x07cc, 0x0003, 0x061b, + 0x061e, 0x0622, 0x0001, 0x0015, 0x09e9, 0x0002, 0x0015, 0xffff, + 0x09ee, 0x0002, 0x0625, 0x0629, 0x0002, 0x0015, 0x0a0e, 0x0a02, + 0x0002, 0x0015, 0x0a2e, 0x0a1b, 0x0003, 0x0631, 0x0634, 0x0638, + 0x0001, 0x0015, 0x0a42, 0x0002, 0x0015, 0xffff, 0x0a45, 0x0002, + 0x063b, 0x063f, 0x0002, 0x0015, 0x0a0e, 0x0a02, 0x0002, 0x0015, + 0x0a2e, 0x0a1b, 0x0003, 0x0647, 0x064a, 0x064e, 0x0001, 0x0000, + 0x2000, 0x0002, 0x0015, 0xffff, 0x0a45, 0x0002, 0x0651, 0x0655, + // Entry CB40 - CB7F + 0x0002, 0x0015, 0x0a0e, 0x0a02, 0x0002, 0x0015, 0x0a2e, 0x0a1b, + 0x0003, 0x065d, 0x0660, 0x0664, 0x0001, 0x0010, 0x0b77, 0x0002, + 0x0015, 0xffff, 0x0a50, 0x0002, 0x0667, 0x066b, 0x0002, 0x0015, + 0x0a72, 0x0a65, 0x0002, 0x0015, 0x0a96, 0x0a82, 0x0003, 0x0673, + 0x0676, 0x067a, 0x0001, 0x0001, 0x075a, 0x0002, 0x0015, 0xffff, + 0x0aad, 0x0002, 0x067d, 0x0681, 0x0002, 0x0015, 0x0ab9, 0x0ab9, + 0x0002, 0x0015, 0x0ac5, 0x0ac5, 0x0003, 0x0689, 0x068c, 0x0690, + 0x0001, 0x000b, 0x1250, 0x0002, 0x0015, 0xffff, 0x0aad, 0x0002, + // Entry CB80 - CBBF + 0x0693, 0x0697, 0x0002, 0x0015, 0x0ab9, 0x0ab9, 0x0002, 0x0015, + 0x0ac5, 0x0ac5, 0x0003, 0x069f, 0x06a2, 0x06a6, 0x0001, 0x0015, + 0x0ad8, 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, 0x06a9, 0x06ad, + 0x0002, 0x0015, 0x0af0, 0x0ae2, 0x0002, 0x0015, 0x0b15, 0x0b00, + 0x0003, 0x06b5, 0x0000, 0x06b8, 0x0001, 0x0001, 0x07d3, 0x0002, + 0x06bb, 0x06bf, 0x0002, 0x0015, 0x0b2c, 0x0b2c, 0x0002, 0x0015, + 0x0b38, 0x0b38, 0x0003, 0x06c7, 0x0000, 0x06ca, 0x0001, 0x0000, + 0x2002, 0x0002, 0x06cd, 0x06d1, 0x0002, 0x0015, 0x0b2c, 0x0b2c, + // Entry CBC0 - CBFF + 0x0002, 0x0015, 0x0b38, 0x0b38, 0x0001, 0x06d7, 0x0001, 0x0015, + 0x0b4b, 0x0004, 0x06df, 0x06e4, 0x06e9, 0x06f8, 0x0003, 0x0008, + 0x1d98, 0x4ef9, 0x4f00, 0x0003, 0x0000, 0x1de0, 0x2297, 0x22a0, + 0x0002, 0x0000, 0x06ec, 0x0003, 0x0000, 0x06f3, 0x06f0, 0x0001, + 0x0015, 0x0b54, 0x0003, 0x0015, 0xffff, 0x0b6d, 0x0b7f, 0x0002, + 0x08df, 0x06fb, 0x0003, 0x06ff, 0x083f, 0x079f, 0x009e, 0x0015, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0bfa, 0x0c3c, 0x0c96, 0x0cc9, + 0x0cf9, 0x0d29, 0x0d5c, 0x0d8c, 0x0db9, 0x0e37, 0x0e67, 0x0e9f, + // Entry CC00 - CC3F + 0x0ee4, 0x0f14, 0x0f47, 0x0f92, 0x0ff5, 0x1037, 0x1079, 0x10be, + 0x10f1, 0xffff, 0xffff, 0x1152, 0xffff, 0x11a4, 0xffff, 0x11ea, + 0x121a, 0x124d, 0x1280, 0xffff, 0xffff, 0x12ea, 0x1326, 0x135f, + 0xffff, 0xffff, 0xffff, 0x13be, 0xffff, 0x1408, 0x1456, 0xffff, + 0x14b3, 0x14f8, 0x1540, 0xffff, 0xffff, 0xffff, 0xffff, 0x15ce, + 0xffff, 0xffff, 0x161d, 0x1665, 0xffff, 0xffff, 0x16dd, 0x1725, + 0x1758, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17f1, + 0x181e, 0x184e, 0x1881, 0x18b1, 0xffff, 0xffff, 0x193e, 0xffff, + // Entry CC40 - CC7F + 0x197c, 0xffff, 0xffff, 0x19e0, 0xffff, 0x1a4e, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1abb, 0xffff, 0x1afc, 0x1b4a, 0x1b98, 0x1bd1, + 0xffff, 0xffff, 0xffff, 0x1c34, 0x1c70, 0x1caf, 0xffff, 0xffff, + 0x1d10, 0x1d77, 0x1db3, 0x1dda, 0xffff, 0xffff, 0x1e37, 0x1e76, + 0x1eaf, 0xffff, 0x1ef8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1fd2, 0x2005, 0x2032, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x20cb, 0xffff, 0xffff, 0x2113, 0xffff, 0x2150, + 0xffff, 0x2191, 0x21cd, 0x2200, 0xffff, 0x2241, 0x227d, 0xffff, + // Entry CC80 - CCBF + 0xffff, 0xffff, 0x22e0, 0x2310, 0xffff, 0xffff, 0x0b8e, 0x0c69, + 0x0de0, 0x0e0a, 0xffff, 0xffff, 0x1a16, 0x1f84, 0x009e, 0x0015, + 0x0bb5, 0x0bc2, 0x0bd7, 0x0be9, 0x0c0c, 0x0c47, 0x0ca3, 0x0cd5, + 0x0d05, 0x0d36, 0x0d68, 0x0d97, 0x0dc2, 0x0e43, 0x0e75, 0x0eb2, + 0x0ef0, 0x0f21, 0x0f5c, 0x0faf, 0x1007, 0x1049, 0x108c, 0x10cb, + 0x1103, 0x1133, 0x1143, 0x1162, 0x118e, 0x11b3, 0x11dd, 0x11f6, + 0x1227, 0x125a, 0x128f, 0x12b9, 0x12d4, 0x12fa, 0x1335, 0x136b, + 0x138f, 0x1399, 0x13b0, 0x13cd, 0x13f7, 0x141e, 0x1469, 0x149b, + // Entry CCC0 - CCFF + 0x14c6, 0x150c, 0x154d, 0x1573, 0x1585, 0x15b4, 0x15c2, 0x15dd, + 0x1607, 0x1619, 0x1631, 0x1679, 0x16bc, 0x16d2, 0x16f1, 0x1732, + 0x1761, 0x177f, 0x1790, 0x17a8, 0x17b5, 0x17cb, 0x17de, 0x17fc, + 0x182a, 0x185b, 0x188d, 0x18ce, 0x1914, 0x1929, 0x194b, 0x1971, + 0x198c, 0x19b8, 0x19d0, 0x19ee, 0x1a40, 0x1a5a, 0x1a7e, 0x1a8c, + 0x1a9a, 0x1aa8, 0x1ac9, 0x1af1, 0x1b12, 0x1b60, 0x1ba7, 0x1be1, + 0x1c0d, 0x1c1b, 0x1c25, 0x1c44, 0x1c81, 0x1cc2, 0x1cf4, 0x1cfd, + 0x1d28, 0x1d87, 0x1dbc, 0x1de9, 0x1e13, 0x1e23, 0x1e48, 0x1e85, + // Entry CD00 - CD3F + 0x1ebe, 0x1ee8, 0x1f16, 0x1f5e, 0x1f6b, 0x1f76, 0x1fba, 0x1fc6, + 0x1fdf, 0x2010, 0x203c, 0x205c, 0x206c, 0x2084, 0x2096, 0x20a8, + 0x20b4, 0x20be, 0x20d6, 0x20f8, 0x2107, 0x2120, 0x2146, 0x215e, + 0x2186, 0x21a1, 0x21da, 0x220c, 0x2230, 0x2251, 0x228b, 0x22b3, + 0x22be, 0x22cb, 0x22ec, 0x2324, 0x16ad, 0x1d64, 0x0b97, 0x0c74, + 0x0dea, 0x0e15, 0xffff, 0x19c6, 0x1a20, 0x1f92, 0x009e, 0x0015, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0c24, 0x0c58, 0x0cb6, 0x0ce7, + 0x0d17, 0x0d49, 0x0d7a, 0x0da8, 0x0dd1, 0x0e55, 0x0e8a, 0x0ecb, + // Entry CD40 - CD7F + 0x0f02, 0x0f34, 0x0f77, 0x0fd2, 0x101f, 0x1061, 0x10a5, 0x10de, + 0x111b, 0xffff, 0xffff, 0x1178, 0xffff, 0x11c8, 0xffff, 0x1208, + 0x123a, 0x126d, 0x12a4, 0xffff, 0xffff, 0x1310, 0x134a, 0x137d, + 0xffff, 0xffff, 0xffff, 0x13e2, 0xffff, 0x143a, 0x1482, 0xffff, + 0x14df, 0x1526, 0x1560, 0xffff, 0xffff, 0xffff, 0xffff, 0x15f2, + 0xffff, 0xffff, 0x164b, 0x1693, 0xffff, 0xffff, 0x170b, 0x1745, + 0x1770, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x180d, + 0x183c, 0x186e, 0x189f, 0x18f1, 0xffff, 0xffff, 0x195e, 0xffff, + // Entry CD80 - CDBF + 0x19a2, 0xffff, 0xffff, 0x1a02, 0xffff, 0x1a6c, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1add, 0xffff, 0x1b2e, 0x1b7c, 0x1bbc, 0x1bf7, + 0xffff, 0xffff, 0xffff, 0x1c5a, 0x1c98, 0x1cdb, 0xffff, 0xffff, + 0x1d46, 0x1d9d, 0x1dcb, 0x1dfe, 0xffff, 0xffff, 0x1e5f, 0x1e9a, + 0x1ed3, 0xffff, 0x1f3a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1ff2, 0x2021, 0x204c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x20e7, 0xffff, 0xffff, 0x2133, 0xffff, 0x2172, + 0xffff, 0x21b7, 0x21ed, 0x221e, 0xffff, 0x2267, 0x229f, 0xffff, + // Entry CDC0 - CDFF + 0xffff, 0xffff, 0x22fe, 0x233e, 0xffff, 0xffff, 0x0ba6, 0x0c85, + 0x0dfa, 0x0e26, 0xffff, 0xffff, 0x1a30, 0x1fa6, 0x0003, 0x08e3, + 0x0949, 0x0916, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry CE00 - CE3F + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry CE40 - CE7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + // Entry CE80 - CEBF + 0x001b, 0x0018, 0x001e, 0x0001, 0x0005, 0x04fa, 0x0001, 0x0005, + 0x0509, 0x0001, 0x0005, 0x0515, 0x0001, 0x0016, 0x0000, 0x0002, + 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, + 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, + 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, + // Entry CEC0 - CEFF + 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0016, 0xffff, + 0x0007, 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, + 0x0027, 0x002b, 0x002f, 0x0033, 0x000d, 0x0016, 0xffff, 0x0037, + 0x0048, 0x0057, 0x0068, 0x0077, 0x0088, 0x009c, 0x00af, 0x00c2, + 0x00d3, 0x00e3, 0x00fd, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, + 0xffff, 0x2055, 0x2157, 0x2157, 0x2157, 0x2157, 0x2157, 0x223a, + 0x2159, 0x2055, 0x2055, 0x2055, 0x2055, 0x0002, 0x0069, 0x007f, + 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0016, 0x0114, 0x0118, + // Entry CF00 - CF3F + 0x000b, 0x000f, 0x0013, 0x0017, 0x011c, 0x0007, 0x0016, 0x0120, + 0x012f, 0x0140, 0x014e, 0x015e, 0x016c, 0x017c, 0x0002, 0x0000, + 0x0082, 0x0007, 0x0000, 0x1e5d, 0x1e5d, 0x2157, 0x2157, 0x2157, + 0x2157, 0x21cc, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, + 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, + 0x0016, 0xffff, 0x0189, 0x0199, 0x01a7, 0x01b7, 0x0001, 0x00a1, + 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, + 0x0016, 0x01c5, 0x0001, 0x0016, 0x01d0, 0x0002, 0x00b1, 0x00b4, + // Entry CF40 - CF7F + 0x0001, 0x0016, 0x01c5, 0x0001, 0x0016, 0x01d0, 0x0003, 0x00c1, + 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0016, 0x01db, 0x01eb, + 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, + 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, + 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, + 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, + // Entry CF80 - CFBF + 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, + 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, + 0x015d, 0x0001, 0x012c, 0x0001, 0x0016, 0x0201, 0x0001, 0x0131, + // Entry CFC0 - CFFF + 0x0001, 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0016, 0x0207, + 0x0001, 0x013b, 0x0001, 0x0016, 0x020c, 0x0002, 0x0141, 0x0144, + 0x0001, 0x0016, 0x0211, 0x0003, 0x0016, 0x0217, 0x021c, 0x0222, + 0x0001, 0x014b, 0x0001, 0x0016, 0x0228, 0x0001, 0x0150, 0x0001, + 0x0009, 0x0308, 0x0001, 0x0155, 0x0001, 0x0005, 0x07d4, 0x0001, + 0x015a, 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, 0x0001, 0x0016, + 0x022e, 0x0003, 0x0004, 0x030d, 0x072a, 0x0012, 0x0017, 0x0024, + 0x0000, 0x0000, 0x0000, 0x0000, 0x005a, 0x0085, 0x02c6, 0x0000, + // Entry D000 - D03F + 0x02d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x02e0, 0x0000, 0x02ff, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, + 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x000a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0049, 0x0000, 0x0000, 0x0000, 0x002f, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0036, 0x0001, + 0x0038, 0x0001, 0x003a, 0x000d, 0x0016, 0xffff, 0x023c, 0x0242, + 0x024a, 0x0250, 0x0255, 0x025c, 0x0265, 0x026b, 0x0271, 0x0276, + 0x027b, 0x0280, 0x0004, 0x0057, 0x0051, 0x004e, 0x0054, 0x0001, + // Entry D040 - D07F + 0x0016, 0x0288, 0x0001, 0x0016, 0x0298, 0x0001, 0x0016, 0x02a2, + 0x0001, 0x0007, 0x0277, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0063, 0x0000, 0x0074, 0x0004, 0x0071, 0x006b, 0x0068, + 0x006e, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, + 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, 0x0004, 0x0082, 0x007c, + 0x0079, 0x007f, 0x0001, 0x0016, 0x02b4, 0x0001, 0x0016, 0x02b4, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x008e, + 0x00f3, 0x014a, 0x017f, 0x026e, 0x0293, 0x02a4, 0x02b5, 0x0002, + // Entry D080 - D0BF + 0x0091, 0x00c2, 0x0003, 0x0095, 0x00a4, 0x00b3, 0x000d, 0x0000, + 0xffff, 0x1e22, 0x1e27, 0x22a9, 0x1e31, 0x22af, 0x22b3, 0x22b8, + 0x1e44, 0x1e49, 0x1e4e, 0x1e53, 0x22bd, 0x000d, 0x0000, 0xffff, + 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, 0x21ce, + 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x0016, 0xffff, 0x02c1, + 0x02c8, 0x02d0, 0x02d6, 0x02dc, 0x02e0, 0x02e5, 0x02ea, 0x02f1, + 0x02fb, 0x0303, 0x030c, 0x0003, 0x00c6, 0x00d5, 0x00e4, 0x000d, + 0x0005, 0xffff, 0x0636, 0x063a, 0x20d1, 0x0642, 0x20d6, 0x064a, + // Entry D0C0 - D0FF + 0x064e, 0x20da, 0x0656, 0x065a, 0x065e, 0x20de, 0x000d, 0x0000, + 0xffff, 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, + 0x21ce, 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x0016, 0xffff, + 0x02c1, 0x02c8, 0x02d0, 0x02d6, 0x0315, 0x02e0, 0x02e5, 0x02ea, + 0x02f1, 0x02fb, 0x0303, 0x030c, 0x0002, 0x00f6, 0x0120, 0x0005, + 0x00fc, 0x0105, 0x0117, 0x0000, 0x010e, 0x0007, 0x0000, 0x1ebf, + 0x22c2, 0x1ec7, 0x22c6, 0x1ecf, 0x22ca, 0x1ed7, 0x0007, 0x0000, + 0x21d0, 0x223a, 0x223c, 0x223a, 0x223c, 0x2238, 0x21d0, 0x0007, + // Entry D100 - D13F + 0x0000, 0x1ebf, 0x22c2, 0x1ec7, 0x22c6, 0x1ecf, 0x22ca, 0x1ed7, + 0x0007, 0x0016, 0x0319, 0x0321, 0x0328, 0x0331, 0x033a, 0x0345, + 0x034d, 0x0005, 0x0126, 0x012f, 0x0141, 0x0000, 0x0138, 0x0007, + 0x0016, 0x0355, 0x0358, 0x035b, 0x035e, 0x0361, 0x0364, 0x0367, + 0x0007, 0x0000, 0x21d0, 0x223a, 0x223c, 0x223a, 0x223c, 0x2238, + 0x21d0, 0x0007, 0x0000, 0x1ebf, 0x22c2, 0x1ec7, 0x22c6, 0x1ecf, + 0x22ca, 0x1ed7, 0x0007, 0x0016, 0x0319, 0x0321, 0x0328, 0x0331, + 0x033a, 0x0345, 0x034d, 0x0002, 0x014d, 0x0166, 0x0003, 0x0151, + // Entry D140 - D17F + 0x0158, 0x015f, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, + 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, + 0x0005, 0x0016, 0xffff, 0x036a, 0x0375, 0x0380, 0x038b, 0x0003, + 0x016a, 0x0171, 0x0178, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, + 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x0039, 0x0005, 0x0016, 0xffff, 0x036a, 0x0375, 0x0380, 0x038b, + 0x0002, 0x0182, 0x01f8, 0x0003, 0x0186, 0x01ac, 0x01d2, 0x000a, + 0x0194, 0x0197, 0x0191, 0x019a, 0x01a0, 0x01a6, 0x01a9, 0x0000, + // Entry D180 - D1BF + 0x019d, 0x01a3, 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03a2, + 0x0001, 0x0016, 0x03a8, 0x0001, 0x0016, 0x03af, 0x0001, 0x0016, + 0x03b7, 0x0001, 0x0016, 0x03c2, 0x0001, 0x0016, 0x03ca, 0x0001, + 0x0016, 0x03d6, 0x0001, 0x0016, 0x03dd, 0x000a, 0x01ba, 0x01bd, + 0x01b7, 0x01c0, 0x01c6, 0x01cc, 0x01cf, 0x0000, 0x01c3, 0x01c9, + 0x0001, 0x0016, 0x0396, 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, + 0x1f66, 0x0001, 0x0016, 0x03af, 0x0001, 0x0016, 0x03b7, 0x0001, + 0x0016, 0x03c2, 0x0001, 0x0016, 0x03ca, 0x0001, 0x0016, 0x03d6, + // Entry D1C0 - D1FF + 0x0001, 0x0016, 0x03dd, 0x000a, 0x01e0, 0x01e3, 0x01dd, 0x01e6, + 0x01ec, 0x01f2, 0x01f5, 0x0000, 0x01e9, 0x01ef, 0x0001, 0x0016, + 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, 0x0001, + 0x0016, 0x03af, 0x0001, 0x0016, 0x03b7, 0x0001, 0x0016, 0x03c2, + 0x0001, 0x0016, 0x03ca, 0x0001, 0x0016, 0x03d6, 0x0001, 0x0016, + 0x03dd, 0x0003, 0x01fc, 0x0222, 0x0248, 0x000a, 0x020a, 0x020d, + 0x0207, 0x0210, 0x0216, 0x021c, 0x021f, 0x0000, 0x0213, 0x0219, + 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, + // Entry D200 - D23F + 0x03a8, 0x0001, 0x0016, 0x03e4, 0x0001, 0x0016, 0x03eb, 0x0001, + 0x0016, 0x03f5, 0x0001, 0x0016, 0x03fc, 0x0001, 0x0016, 0x0407, + 0x0001, 0x0016, 0x040d, 0x000a, 0x0230, 0x0233, 0x022d, 0x0236, + 0x023c, 0x0242, 0x0245, 0x0000, 0x0239, 0x023f, 0x0001, 0x0016, + 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, 0x0001, + 0x0016, 0x03e4, 0x0001, 0x0016, 0x03eb, 0x0001, 0x0016, 0x03f5, + 0x0001, 0x0016, 0x03fc, 0x0001, 0x0016, 0x0407, 0x0001, 0x0016, + 0x040d, 0x000a, 0x0256, 0x0259, 0x0253, 0x025c, 0x0262, 0x0268, + // Entry D240 - D27F + 0x026b, 0x0000, 0x025f, 0x0265, 0x0001, 0x0016, 0x0396, 0x0001, + 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, 0x0001, 0x0016, 0x03e4, + 0x0001, 0x0016, 0x03eb, 0x0001, 0x0016, 0x03f5, 0x0001, 0x0016, + 0x03fc, 0x0001, 0x0016, 0x0407, 0x0001, 0x0016, 0x040d, 0x0003, + 0x027d, 0x0288, 0x0272, 0x0002, 0x0275, 0x0279, 0x0002, 0x0016, + 0x0413, 0x0434, 0x0002, 0x0016, 0x041b, 0x043c, 0x0002, 0x0280, + 0x0284, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x0016, 0x0451, + 0x045a, 0x0002, 0x028b, 0x028f, 0x0002, 0x0016, 0x0413, 0x0434, + // Entry D280 - D2BF + 0x0002, 0x0016, 0x0451, 0x045a, 0x0004, 0x02a1, 0x029b, 0x0298, + 0x029e, 0x0001, 0x0016, 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, + 0x0016, 0x0470, 0x0001, 0x0007, 0x0277, 0x0004, 0x02b2, 0x02ac, + 0x02a9, 0x02af, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x02c3, + 0x02bd, 0x02ba, 0x02c0, 0x0001, 0x0016, 0x02b4, 0x0001, 0x0016, + 0x02b4, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02cc, 0x0001, 0x02ce, 0x0001, + // Entry D2C0 - D2FF + 0x02d0, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x02d9, 0x0001, 0x02db, 0x0001, 0x02dd, 0x0001, 0x0000, + 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x02e7, 0x02ee, + 0x0001, 0x02e9, 0x0001, 0x02eb, 0x0001, 0x0000, 0x06cb, 0x0004, + 0x02fc, 0x02f6, 0x02f3, 0x02f9, 0x0001, 0x0013, 0x06bb, 0x0001, + 0x0013, 0x0477, 0x0001, 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0305, 0x0001, 0x0307, + 0x0001, 0x0309, 0x0002, 0x0000, 0x1a20, 0x2290, 0x0040, 0x034e, + // Entry D300 - D33F + 0x0000, 0x0000, 0x0353, 0x036a, 0x0381, 0x0398, 0x03af, 0x03c1, + 0x03d8, 0x03ef, 0x0406, 0x041d, 0x0438, 0x0453, 0x0000, 0x0000, + 0x0000, 0x046e, 0x0487, 0x04a0, 0x0000, 0x0000, 0x0000, 0x04b9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04be, 0x04d2, 0x04e6, + 0x04fa, 0x050e, 0x0522, 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, + 0x059a, 0x05ae, 0x05c2, 0x05d6, 0x05ea, 0x05fe, 0x0612, 0x0626, + 0x063a, 0x064e, 0x0000, 0x0662, 0x0000, 0x0667, 0x067d, 0x0693, + 0x06a9, 0x06bf, 0x06d5, 0x06eb, 0x0701, 0x0713, 0x0725, 0x0001, + // Entry D340 - D37F + 0x0350, 0x0001, 0x0016, 0x0478, 0x0003, 0x0357, 0x035a, 0x035f, + 0x0001, 0x0016, 0x047f, 0x0003, 0x0016, 0x0484, 0x0491, 0x049d, + 0x0002, 0x0362, 0x0366, 0x0002, 0x0016, 0x04b8, 0x04ac, 0x0002, + 0x0016, 0x04d3, 0x04c6, 0x0003, 0x036e, 0x0371, 0x0376, 0x0001, + 0x0016, 0x047f, 0x0003, 0x0016, 0x0484, 0x0491, 0x049d, 0x0002, + 0x0379, 0x037d, 0x0002, 0x0016, 0x04b8, 0x04ac, 0x0002, 0x0016, + 0x04d3, 0x04c6, 0x0003, 0x0385, 0x0388, 0x038d, 0x0001, 0x0000, + 0x1e5d, 0x0003, 0x0016, 0x0484, 0x0491, 0x049d, 0x0002, 0x0390, + // Entry D380 - D3BF + 0x0394, 0x0002, 0x0016, 0x04b8, 0x04ac, 0x0002, 0x0016, 0x04d3, + 0x04c6, 0x0003, 0x039c, 0x039f, 0x03a4, 0x0001, 0x0016, 0x04e2, + 0x0003, 0x0016, 0x04ea, 0x04fa, 0x0509, 0x0002, 0x03a7, 0x03ab, + 0x0002, 0x0016, 0x052a, 0x051b, 0x0002, 0x0016, 0x054b, 0x053b, + 0x0003, 0x03b3, 0x0000, 0x03b6, 0x0001, 0x0016, 0x055d, 0x0002, + 0x03b9, 0x03bd, 0x0002, 0x0016, 0x0564, 0x0564, 0x0002, 0x0016, + 0x0572, 0x0572, 0x0003, 0x03c5, 0x03c8, 0x03cd, 0x0001, 0x0013, + 0x083a, 0x0003, 0x0016, 0x04ea, 0x04fa, 0x0509, 0x0002, 0x03d0, + // Entry D3C0 - D3FF + 0x03d4, 0x0002, 0x0016, 0x0581, 0x0581, 0x0002, 0x0016, 0x058a, + 0x058a, 0x0003, 0x03dc, 0x03df, 0x03e4, 0x0001, 0x0016, 0x0594, + 0x0003, 0x0016, 0x059a, 0x05a8, 0x05b5, 0x0002, 0x03e7, 0x03eb, + 0x0002, 0x0016, 0x05d2, 0x05c5, 0x0002, 0x0016, 0x05ef, 0x05e1, + 0x0003, 0x03f3, 0x03f6, 0x03fb, 0x0001, 0x0016, 0x0594, 0x0003, + 0x0016, 0x059a, 0x05a8, 0x05b5, 0x0002, 0x03fe, 0x0402, 0x0002, + 0x0016, 0x05d2, 0x05c5, 0x0002, 0x0016, 0x05ff, 0x05e1, 0x0003, + 0x040a, 0x040d, 0x0412, 0x0001, 0x0000, 0x223a, 0x0003, 0x0016, + // Entry D400 - D43F + 0x059a, 0x05a8, 0x05b5, 0x0002, 0x0415, 0x0419, 0x0002, 0x0016, + 0x05d2, 0x05c5, 0x0002, 0x0016, 0x05ef, 0x0610, 0x0004, 0x0422, + 0x0425, 0x042a, 0x0435, 0x0001, 0x0016, 0x061f, 0x0003, 0x0016, + 0x0625, 0x0632, 0x063e, 0x0002, 0x042d, 0x0431, 0x0002, 0x0016, + 0x065a, 0x064d, 0x0002, 0x0016, 0x0676, 0x0668, 0x0001, 0x0016, + 0x0685, 0x0004, 0x043d, 0x0440, 0x0445, 0x0450, 0x0001, 0x0016, + 0x061f, 0x0003, 0x0016, 0x0625, 0x0632, 0x063e, 0x0002, 0x0448, + 0x044c, 0x0002, 0x0016, 0x065a, 0x064d, 0x0002, 0x0016, 0x0676, + // Entry D440 - D47F + 0x0668, 0x0001, 0x0016, 0x0685, 0x0004, 0x0458, 0x045b, 0x0460, + 0x046b, 0x0001, 0x0000, 0x2159, 0x0003, 0x0016, 0x0625, 0x0632, + 0x063e, 0x0002, 0x0463, 0x0467, 0x0002, 0x0016, 0x0697, 0x0697, + 0x0002, 0x0016, 0x06a2, 0x06a2, 0x0001, 0x0016, 0x0685, 0x0003, + 0x0472, 0x0475, 0x047c, 0x0001, 0x0016, 0x06ae, 0x0005, 0x0016, + 0x06bd, 0x06c5, 0x06cb, 0x06b2, 0x06d2, 0x0002, 0x047f, 0x0483, + 0x0002, 0x0016, 0x06e9, 0x06de, 0x0002, 0x0016, 0x0702, 0x06f6, + 0x0003, 0x048b, 0x048e, 0x0495, 0x0001, 0x0016, 0x06ae, 0x0005, + // Entry D480 - D4BF + 0x0016, 0x06bd, 0x06c5, 0x06cb, 0x06b2, 0x06d2, 0x0002, 0x0498, + 0x049c, 0x0002, 0x0016, 0x06e9, 0x06de, 0x0002, 0x0016, 0x0702, + 0x06f6, 0x0003, 0x04a4, 0x04a7, 0x04ae, 0x0001, 0x0016, 0x06ae, + 0x0005, 0x0016, 0x06bd, 0x06c5, 0x06cb, 0x06b2, 0x06d2, 0x0002, + 0x04b1, 0x04b5, 0x0002, 0x0016, 0x06e9, 0x06de, 0x0002, 0x0016, + 0x0702, 0x06f6, 0x0001, 0x04bb, 0x0001, 0x0016, 0x0710, 0x0003, + 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0016, 0x071a, 0x072a, 0x0739, + 0x0002, 0x04ca, 0x04ce, 0x0002, 0x0016, 0x0760, 0x074b, 0x0002, + // Entry D4C0 - D4FF + 0x0016, 0x078c, 0x0776, 0x0003, 0x0000, 0x04d6, 0x04db, 0x0003, + 0x0016, 0x07a3, 0x07af, 0x07ba, 0x0002, 0x04de, 0x04e2, 0x0002, + 0x0016, 0x07d9, 0x07c8, 0x0002, 0x0016, 0x07fd, 0x07eb, 0x0003, + 0x0000, 0x04ea, 0x04ef, 0x0003, 0x0016, 0x07a3, 0x07af, 0x07ba, + 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0016, 0x0810, 0x0810, 0x0002, + 0x0016, 0x081e, 0x081e, 0x0003, 0x0000, 0x04fe, 0x0503, 0x0003, + 0x0016, 0x082d, 0x083c, 0x084a, 0x0002, 0x0506, 0x050a, 0x0002, + 0x0016, 0x086f, 0x085b, 0x0002, 0x0016, 0x0899, 0x0884, 0x0003, + // Entry D500 - D53F + 0x0000, 0x0512, 0x0517, 0x0003, 0x0016, 0x08af, 0x08bb, 0x08c6, + 0x0002, 0x051a, 0x051e, 0x0002, 0x0016, 0x08e5, 0x08d4, 0x0002, + 0x0016, 0x0909, 0x08f7, 0x0003, 0x0000, 0x0526, 0x052b, 0x0003, + 0x0016, 0x08af, 0x08bb, 0x08c6, 0x0002, 0x052e, 0x0532, 0x0002, + 0x0016, 0x091c, 0x091c, 0x0002, 0x0016, 0x092a, 0x092a, 0x0003, + 0x0000, 0x053a, 0x053f, 0x0003, 0x0016, 0x0939, 0x094a, 0x095a, + 0x0002, 0x0542, 0x0546, 0x0002, 0x0016, 0x0983, 0x096d, 0x0002, + 0x0016, 0x09b1, 0x099a, 0x0003, 0x0000, 0x054e, 0x0553, 0x0003, + // Entry D540 - D57F + 0x0016, 0x09c9, 0x09d5, 0x09e0, 0x0002, 0x0556, 0x055a, 0x0002, + 0x0016, 0x09ff, 0x09ee, 0x0002, 0x0016, 0x0a23, 0x0a11, 0x0003, + 0x0000, 0x0562, 0x0567, 0x0003, 0x0016, 0x09c9, 0x09d5, 0x09e0, + 0x0002, 0x056a, 0x056e, 0x0002, 0x0016, 0x0a36, 0x0a36, 0x0002, + 0x0016, 0x0a44, 0x0a44, 0x0003, 0x0000, 0x0576, 0x057b, 0x0003, + 0x0016, 0x0a53, 0x0a64, 0x0a74, 0x0002, 0x057e, 0x0582, 0x0002, + 0x0016, 0x0a9d, 0x0a87, 0x0002, 0x0016, 0x0acb, 0x0ab4, 0x0003, + 0x0000, 0x058a, 0x058f, 0x0003, 0x0016, 0x0ae3, 0x0aef, 0x0afa, + // Entry D580 - D5BF + 0x0002, 0x0592, 0x0596, 0x0002, 0x0016, 0x0b19, 0x0b08, 0x0002, + 0x0016, 0x0b3d, 0x0b2b, 0x0003, 0x0000, 0x059e, 0x05a3, 0x0003, + 0x0016, 0x0ae3, 0x0aef, 0x0afa, 0x0002, 0x05a6, 0x05aa, 0x0002, + 0x0016, 0x0b50, 0x0b50, 0x0002, 0x0016, 0x0b5e, 0x0b5e, 0x0003, + 0x0000, 0x05b2, 0x05b7, 0x0003, 0x0016, 0x0b6d, 0x0b80, 0x0b92, + 0x0002, 0x05ba, 0x05be, 0x0002, 0x0016, 0x0bbf, 0x0ba7, 0x0002, + 0x0016, 0x0bf1, 0x0bd8, 0x0003, 0x0000, 0x05c6, 0x05cb, 0x0003, + 0x0016, 0x0c0b, 0x0c17, 0x0c22, 0x0002, 0x05ce, 0x05d2, 0x0002, + // Entry D5C0 - D5FF + 0x0016, 0x0c41, 0x0c30, 0x0002, 0x0016, 0x0c65, 0x0c53, 0x0003, + 0x0000, 0x05da, 0x05df, 0x0003, 0x0016, 0x0c0b, 0x0c17, 0x0c22, + 0x0002, 0x05e2, 0x05e6, 0x0002, 0x0016, 0x0c78, 0x0c78, 0x0002, + 0x0016, 0x0c86, 0x0c86, 0x0003, 0x0000, 0x05ee, 0x05f3, 0x0003, + 0x0016, 0x0c95, 0x0ca5, 0x0cb4, 0x0002, 0x05f6, 0x05fa, 0x0002, + 0x0016, 0x0cdb, 0x0cc6, 0x0002, 0x0016, 0x0d07, 0x0cf1, 0x0003, + 0x0000, 0x0602, 0x0607, 0x0003, 0x0016, 0x0d1e, 0x0d2a, 0x0d35, + 0x0002, 0x060a, 0x060e, 0x0002, 0x0016, 0x0d54, 0x0d43, 0x0002, + // Entry D600 - D63F + 0x0016, 0x0d78, 0x0d66, 0x0003, 0x0000, 0x0616, 0x061b, 0x0003, + 0x0016, 0x0d1e, 0x0d2a, 0x0d35, 0x0002, 0x061e, 0x0622, 0x0002, + 0x0016, 0x0d8b, 0x0d8b, 0x0002, 0x0016, 0x0d99, 0x0d99, 0x0003, + 0x0000, 0x062a, 0x062f, 0x0003, 0x0016, 0x0da8, 0x0db8, 0x0dc7, + 0x0002, 0x0632, 0x0636, 0x0002, 0x0016, 0x0dee, 0x0dd9, 0x0002, + 0x0016, 0x0e1a, 0x0e04, 0x0003, 0x0000, 0x063e, 0x0643, 0x0003, + 0x0016, 0x0e31, 0x0e3d, 0x0e48, 0x0002, 0x0646, 0x064a, 0x0002, + 0x0016, 0x0e67, 0x0e56, 0x0002, 0x0016, 0x0e8b, 0x0e79, 0x0003, + // Entry D640 - D67F + 0x0000, 0x0652, 0x0657, 0x0003, 0x0016, 0x0e31, 0x0e3d, 0x0e48, + 0x0002, 0x065a, 0x065e, 0x0002, 0x0016, 0x0e9e, 0x0e9e, 0x0002, + 0x0016, 0x0eac, 0x0eac, 0x0001, 0x0664, 0x0001, 0x0016, 0x0ebb, + 0x0003, 0x066b, 0x066e, 0x0672, 0x0001, 0x0016, 0x0ec8, 0x0002, + 0x0016, 0xffff, 0x0ecf, 0x0002, 0x0675, 0x0679, 0x0002, 0x0016, + 0x0eee, 0x0ee0, 0x0002, 0x0016, 0x0f0c, 0x0efd, 0x0003, 0x0681, + 0x0684, 0x0688, 0x0001, 0x0016, 0x0f1c, 0x0002, 0x0016, 0xffff, + 0x0ecf, 0x0002, 0x068b, 0x068f, 0x0002, 0x0016, 0x0f21, 0x0f21, + // Entry D680 - D6BF + 0x0002, 0x0016, 0x0f2d, 0x0f2d, 0x0003, 0x0697, 0x069a, 0x069e, + 0x0001, 0x0016, 0x0f1c, 0x0002, 0x0016, 0xffff, 0x0ecf, 0x0002, + 0x06a1, 0x06a5, 0x0002, 0x0016, 0x0f21, 0x0f21, 0x0002, 0x0016, + 0x0f2d, 0x0f2d, 0x0003, 0x06ad, 0x06b0, 0x06b4, 0x0001, 0x0000, + 0x1d84, 0x0002, 0x0016, 0xffff, 0x0f3a, 0x0002, 0x06b7, 0x06bb, + 0x0002, 0x0016, 0x0f59, 0x0f4b, 0x0002, 0x0016, 0x0f77, 0x0f68, + 0x0003, 0x06c3, 0x06c6, 0x06ca, 0x0001, 0x0016, 0x0f87, 0x0002, + 0x0016, 0xffff, 0x0f3a, 0x0002, 0x06cd, 0x06d1, 0x0002, 0x0016, + // Entry D6C0 - D6FF + 0x0f8c, 0x0f8c, 0x0002, 0x0016, 0x0f98, 0x0f98, 0x0003, 0x06d9, + 0x06dc, 0x06e0, 0x0001, 0x0016, 0x0f87, 0x0002, 0x0016, 0xffff, + 0x0f3a, 0x0002, 0x06e3, 0x06e7, 0x0002, 0x0016, 0x0fa5, 0x0fa5, + 0x0002, 0x0016, 0x0fae, 0x0fae, 0x0003, 0x06ef, 0x06f2, 0x06f6, + 0x0001, 0x0009, 0x030c, 0x0002, 0x0016, 0xffff, 0x0fb8, 0x0002, + 0x06f9, 0x06fd, 0x0002, 0x0016, 0x0fcd, 0x0fbe, 0x0002, 0x0016, + 0x0fed, 0x0fdd, 0x0003, 0x0705, 0x0000, 0x0708, 0x0001, 0x0016, + 0x0ffe, 0x0002, 0x070b, 0x070f, 0x0002, 0x0016, 0x1003, 0x1003, + // Entry D700 - D73F + 0x0002, 0x0016, 0x100f, 0x100f, 0x0003, 0x0717, 0x0000, 0x071a, + 0x0001, 0x0016, 0x0ffe, 0x0002, 0x071d, 0x0721, 0x0002, 0x0016, + 0x101c, 0x101c, 0x0002, 0x0016, 0x1025, 0x1025, 0x0001, 0x0727, + 0x0001, 0x0016, 0x102f, 0x0004, 0x072f, 0x0734, 0x0739, 0x0748, + 0x0003, 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x0016, 0x1038, + 0x1041, 0x1050, 0x0002, 0x0000, 0x073c, 0x0003, 0x0000, 0x0743, + 0x0740, 0x0001, 0x0016, 0x105f, 0x0003, 0x0016, 0xffff, 0x1075, + 0x108a, 0x0002, 0x092f, 0x074b, 0x0003, 0x074f, 0x088f, 0x07ef, + // Entry D740 - D77F + 0x009e, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0x111c, 0x116a, + 0x11ca, 0x1200, 0x1265, 0x12d6, 0x131e, 0x1392, 0x13c2, 0x144c, + 0x1485, 0x14ca, 0x151b, 0x1557, 0x158d, 0x15e4, 0x164d, 0x1698, + 0x16e6, 0x173a, 0x176a, 0xffff, 0xffff, 0x17c8, 0xffff, 0x180d, + 0xffff, 0x1862, 0x1895, 0x18d4, 0x1913, 0xffff, 0xffff, 0x197b, + 0x19c3, 0x19ff, 0xffff, 0xffff, 0xffff, 0x1a6c, 0xffff, 0x1abd, + 0x1b1a, 0xffff, 0x1b81, 0x1bd8, 0x1c20, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1cb7, 0xffff, 0xffff, 0x1d1f, 0x1d61, 0xffff, 0xffff, + // Entry D780 - D7BF + 0x1dc6, 0x1e0e, 0x1e44, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1ee7, 0x1f20, 0x1f53, 0x1f92, 0x1fce, 0xffff, 0xffff, + 0x2036, 0xffff, 0x2081, 0xffff, 0xffff, 0x20f2, 0xffff, 0x216c, + 0xffff, 0xffff, 0xffff, 0xffff, 0x21e2, 0xffff, 0x2227, 0x2290, + 0x22e4, 0x2323, 0xffff, 0xffff, 0xffff, 0x2383, 0x23ce, 0x240a, + 0xffff, 0xffff, 0x2465, 0x24d5, 0x2514, 0x253e, 0xffff, 0xffff, + 0x25a3, 0x25ee, 0x262d, 0xffff, 0x2688, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2777, 0x27ad, 0x27dd, 0xffff, 0xffff, 0xffff, + // Entry D7C0 - D7FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x2874, 0xffff, 0xffff, 0x28c4, + 0xffff, 0x290e, 0xffff, 0x295c, 0x29a3, 0x29df, 0xffff, 0x2a21, + 0x2a60, 0xffff, 0xffff, 0xffff, 0x2acc, 0x2aff, 0xffff, 0xffff, + 0x109d, 0x119a, 0x13ec, 0x1419, 0xffff, 0xffff, 0x212b, 0x2721, + 0x009e, 0x0016, 0x10c7, 0x10d8, 0x10f1, 0x1106, 0x1132, 0x1176, + 0x11d8, 0x121d, 0x1286, 0x12ea, 0x1340, 0x139e, 0x13cc, 0x145b, + 0x1498, 0x14e1, 0x152b, 0x1565, 0x15a6, 0x1603, 0x1662, 0x16ae, + 0x16fe, 0x1746, 0x177b, 0x17a9, 0x17b5, 0x17d7, 0x1801, 0x181d, + // Entry D800 - D83F + 0x1854, 0x186f, 0x18a6, 0x18e5, 0x1925, 0x1955, 0x196a, 0x198f, + 0x19d3, 0x1a0f, 0x1a3b, 0x1a46, 0x1a5e, 0x1a7c, 0x1aa8, 0x1ad5, + 0x1b2f, 0x1b6e, 0x1b97, 0x1bec, 0x1c2d, 0x1c53, 0x1c6d, 0x1c9b, + 0x1caa, 0x1cc7, 0x1cf3, 0x1d07, 0x1d31, 0x1d74, 0x1db0, 0x1dba, + 0x1dda, 0x1e1c, 0x1e4f, 0x1e71, 0x1e7f, 0x1e94, 0x1ea3, 0x1ebc, + 0x1ed1, 0x1ef6, 0x1f2d, 0x1f64, 0x1fa2, 0x1fdf, 0x200d, 0x2021, + 0x2047, 0x2075, 0x2092, 0x20c0, 0x20e0, 0x2101, 0x2158, 0x2179, + 0x219f, 0x21b0, 0x21bf, 0x21ce, 0x21f1, 0x221b, 0x2246, 0x22a8, + // Entry D840 - D87F + 0x22f5, 0x2331, 0x2359, 0x2366, 0x2371, 0x2398, 0x23de, 0x241b, + 0x2449, 0x2453, 0x247e, 0x24e6, 0x251e, 0x2551, 0x2583, 0x258e, + 0x25b8, 0x25ff, 0x2641, 0x2675, 0x26a7, 0x26f1, 0x2705, 0x2711, + 0x275c, 0x276a, 0x2785, 0x27b9, 0x27e8, 0x280a, 0x281a, 0x2828, + 0x283b, 0x284f, 0x285d, 0x2868, 0x2880, 0x28a4, 0x28b7, 0x28d5, + 0x2903, 0x2920, 0x2950, 0x2970, 0x29b3, 0x29ec, 0x2a12, 0x2a32, + 0x2a6f, 0x2a99, 0x2aa5, 0x2ab5, 0x2ad9, 0x2b12, 0x1da6, 0x24bc, + 0x10a7, 0x11a6, 0x13f7, 0x1426, 0x1849, 0x20d1, 0x2136, 0x2731, + // Entry D880 - D8BF + 0x009e, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0x114e, 0x1188, + 0x11ec, 0x1241, 0x12ae, 0x1304, 0x1369, 0x13b0, 0x13dc, 0x1470, + 0x14b1, 0x14fe, 0x1541, 0x1579, 0x15c5, 0x1628, 0x167d, 0x16ca, + 0x171c, 0x1758, 0x1792, 0xffff, 0xffff, 0x17ec, 0xffff, 0x1833, + 0xffff, 0x1882, 0x18bd, 0x18fc, 0x193d, 0xffff, 0xffff, 0x19a9, + 0x19e9, 0x1a25, 0xffff, 0xffff, 0xffff, 0x1a92, 0xffff, 0x1af3, + 0x1b4a, 0xffff, 0x1bb3, 0x1c06, 0x1c40, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1cdd, 0xffff, 0xffff, 0x1d49, 0x1d8d, 0xffff, 0xffff, + // Entry D8C0 - D8FF + 0x1df4, 0x1e30, 0x1e60, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1f0b, 0x1f40, 0x1f7b, 0x1fb8, 0x1ff6, 0xffff, 0xffff, + 0x205e, 0xffff, 0x20a9, 0xffff, 0xffff, 0x2116, 0xffff, 0x218c, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2206, 0xffff, 0x226b, 0x22c6, + 0x230c, 0x2345, 0xffff, 0xffff, 0xffff, 0x23b3, 0x23f4, 0x2432, + 0xffff, 0xffff, 0x249d, 0x24fd, 0x252e, 0x256a, 0xffff, 0xffff, + 0x25d3, 0x2616, 0x265b, 0xffff, 0x26cc, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2799, 0x27cb, 0x27f9, 0xffff, 0xffff, 0xffff, + // Entry D900 - D93F + 0xffff, 0xffff, 0xffff, 0xffff, 0x2892, 0xffff, 0xffff, 0x28ec, + 0xffff, 0x2938, 0xffff, 0x2989, 0x29c9, 0x29ff, 0xffff, 0x2a49, + 0x2a84, 0xffff, 0xffff, 0xffff, 0x2aec, 0x2b2b, 0xffff, 0xffff, + 0x10b7, 0x11b8, 0x1408, 0x1439, 0xffff, 0xffff, 0x2147, 0x2747, + 0x0003, 0x0933, 0x0999, 0x0966, 0x0031, 0x0016, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry D940 - D97F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, + 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry D980 - D9BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, + 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0001, 0x0002, 0x0008, + // Entry D9C0 - D9FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0004, 0x0010, 0x0000, 0x0000, 0x0057, 0x0002, 0x0013, 0x0035, + 0x0003, 0x0017, 0x0000, 0x0026, 0x000d, 0x0017, 0xffff, 0x0000, + 0x0006, 0x000b, 0x0011, 0x0016, 0x001a, 0x001f, 0x0024, 0x0029, + 0x002e, 0x0033, 0x0038, 0x000d, 0x0017, 0xffff, 0x003d, 0x0045, + 0x000b, 0x004d, 0x0016, 0x001a, 0x001f, 0x0053, 0x005a, 0x0064, + 0x006c, 0x0075, 0x0003, 0x0039, 0x0000, 0x0048, 0x000d, 0x0017, + 0xffff, 0x007e, 0x0083, 0x0087, 0x008c, 0x0016, 0x0090, 0x0094, + // Entry DA00 - DA3F + 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x000d, 0x0017, 0xffff, + 0x003d, 0x0045, 0x000b, 0x004d, 0x0016, 0x001a, 0x001f, 0x0053, + 0x005a, 0x0064, 0x006c, 0x0075, 0x0002, 0x0000, 0x005a, 0x0002, + 0x0000, 0x005d, 0x0002, 0x0060, 0x0063, 0x0001, 0x0000, 0x1f62, + 0x0001, 0x0000, 0x1f66, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, 0x000d, + 0x0002, 0x0010, 0x0032, 0x0003, 0x0014, 0x0000, 0x0023, 0x000d, + 0x0017, 0xffff, 0x0000, 0x0006, 0x000b, 0x0011, 0x0016, 0x001a, + // Entry DA40 - DA7F + 0x001f, 0x0024, 0x0029, 0x002e, 0x0033, 0x0038, 0x000d, 0x0017, + 0xffff, 0x003d, 0x0045, 0x000b, 0x004d, 0x0016, 0x001a, 0x001f, + 0x0053, 0x005a, 0x0064, 0x006c, 0x0075, 0x0003, 0x0036, 0x0000, + 0x0045, 0x000d, 0x0017, 0xffff, 0x007e, 0x0083, 0x0087, 0x008c, + 0x0016, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, + 0x000d, 0x0017, 0xffff, 0x003d, 0x0045, 0x000b, 0x004d, 0x0016, + 0x001a, 0x001f, 0x0053, 0x005a, 0x0064, 0x006c, 0x0075, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry DA80 - DABF + 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, 0x0000, 0x0010, 0x0002, + 0x0000, 0x0013, 0x0002, 0x0000, 0x0016, 0x0002, 0x0019, 0x001c, + 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, 0x1f66, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0008, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0016, 0x0002, 0x0000, 0x0019, 0x0002, + 0x001c, 0x001f, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, + 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry DAC0 - DAFF + 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0001, 0x1fcc, 0x0008, 0x002f, + 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, + 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0017, + 0xffff, 0x00ac, 0x00b1, 0x00b5, 0x00b9, 0x00bd, 0x00c0, 0x00c5, + 0x00ca, 0x00cd, 0x00a0, 0x00d1, 0x00d5, 0x000d, 0x0017, 0xffff, + // Entry DB00 - DB3F + 0x00d9, 0x00e2, 0x00ec, 0x00f2, 0x00bd, 0x00f9, 0x0101, 0x00ca, + 0x0108, 0x0112, 0x011b, 0x0125, 0x0002, 0x0000, 0x0057, 0x000d, + 0x0017, 0xffff, 0x012f, 0x0132, 0x0134, 0x0136, 0x0134, 0x012f, + 0x012f, 0x0138, 0x013a, 0x013c, 0x013e, 0x0140, 0x0002, 0x0069, + 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, 0x06c6, + 0x20e2, 0x20e6, 0x20ea, 0x20ee, 0x20f2, 0x20f6, 0x0007, 0x0017, + 0x0142, 0x0149, 0x0150, 0x0159, 0x0160, 0x0169, 0x0170, 0x0002, + 0x0000, 0x0082, 0x0007, 0x0000, 0x19c7, 0x04dd, 0x04dd, 0x228e, + // Entry DB40 - DB7F + 0x22d9, 0x22db, 0x22dd, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, + 0x0098, 0x0005, 0x0017, 0xffff, 0x0177, 0x017a, 0x017d, 0x0180, + 0x0005, 0x0017, 0xffff, 0x0183, 0x018c, 0x0195, 0x019e, 0x0001, + 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, + 0x0001, 0x0017, 0x01a7, 0x0001, 0x0017, 0x01b0, 0x0002, 0x00b1, + 0x00b4, 0x0001, 0x0017, 0x01a7, 0x0001, 0x0017, 0x01b0, 0x0003, + 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0017, 0x01bb, + 0x01c5, 0x0001, 0x00c3, 0x0002, 0x0017, 0x01d2, 0x01d5, 0x0004, + // Entry DB80 - DBBF + 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, + 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry DBC0 - DBFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, + 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, + 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, 0x0017, 0x01d8, 0x0001, + 0x0131, 0x0001, 0x0017, 0x01de, 0x0001, 0x0136, 0x0001, 0x0017, + 0x01e4, 0x0001, 0x013b, 0x0001, 0x0017, 0x01ea, 0x0002, 0x0141, + 0x0144, 0x0001, 0x0017, 0x01ef, 0x0003, 0x0017, 0x01f5, 0x01f8, + // Entry DC00 - DC3F + 0x01fd, 0x0001, 0x014b, 0x0001, 0x0017, 0x0202, 0x0001, 0x0150, + 0x0001, 0x0017, 0x021a, 0x0001, 0x0155, 0x0001, 0x0017, 0x0220, + 0x0001, 0x015a, 0x0001, 0x0017, 0x0227, 0x0001, 0x015f, 0x0001, + 0x0017, 0x022c, 0x0003, 0x0004, 0x01a0, 0x04f1, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, + 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0013, 0x06bb, + 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, 0x0001, 0x0017, + // Entry DC40 - DC7F + 0x0235, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0153, + 0x016d, 0x017e, 0x018f, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, + 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, 0x000b, 0x0010, 0x2358, + 0x001a, 0x235e, 0x0023, 0x0028, 0x2363, 0x0032, 0x0037, 0x2368, + 0x0041, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x1f9a, 0x1f9c, + 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x1f96, 0x2008, + // Entry DC80 - DCBF + 0x000d, 0x0017, 0xffff, 0x0242, 0x024a, 0x0253, 0x025a, 0x0261, + 0x0266, 0x026d, 0x0274, 0x027c, 0x0286, 0x028e, 0x0297, 0x0003, + 0x0079, 0x0088, 0x0097, 0x000d, 0x000d, 0xffff, 0x0059, 0x005d, + 0x3179, 0x0065, 0x3175, 0x006d, 0x0071, 0x317e, 0x0079, 0x007d, + 0x3182, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x1f9a, + 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x1f96, + 0x2008, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, 0x3186, 0x318c, + 0x3175, 0x3192, 0x3198, 0x319e, 0x3151, 0x315b, 0x31a5, 0x316c, + // Entry DCC0 - DCFF + 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, + 0x00c1, 0x0007, 0x0008, 0x03ac, 0x4f04, 0x4f09, 0x4f0e, 0x4f12, + 0x4f16, 0x4f1b, 0x0007, 0x0000, 0x1f96, 0x21ec, 0x22df, 0x2002, + 0x2002, 0x21ec, 0x2002, 0x0007, 0x0017, 0x02a0, 0x02a3, 0x02a7, + 0x02aa, 0x02ad, 0x02b0, 0x02b4, 0x0007, 0x0017, 0x02b7, 0x02c0, + 0x02cc, 0x02d5, 0x02dc, 0x02e5, 0x02eb, 0x0005, 0x00d9, 0x00e2, + 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0008, 0x03ac, 0x4f04, 0x4f09, + 0x4f0e, 0x4f12, 0x4f16, 0x4f1b, 0x0007, 0x0000, 0x1f96, 0x21ec, + // Entry DD00 - DD3F + 0x22df, 0x2002, 0x2002, 0x21ec, 0x2002, 0x0007, 0x0017, 0x02a0, + 0x02a3, 0x02a7, 0x02aa, 0x02ad, 0x02b0, 0x02b4, 0x0007, 0x0017, + 0x02b7, 0x02c0, 0x02cc, 0x02d5, 0x02dc, 0x02e5, 0x02eb, 0x0002, + 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0017, 0xffff, 0x02f2, + 0x02fd, 0x0308, 0x0313, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, + 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, + // Entry DD40 - DD7F + 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0017, 0xffff, + 0x02f2, 0x02fd, 0x0308, 0x0313, 0x0001, 0x0134, 0x0003, 0x0138, + 0x0141, 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, 0x0017, 0x031e, + 0x0001, 0x0017, 0x0329, 0x0002, 0x0144, 0x0147, 0x0001, 0x0013, + 0x061b, 0x0001, 0x0017, 0x0336, 0x0002, 0x014d, 0x0150, 0x0001, + 0x0017, 0x031e, 0x0001, 0x0017, 0x0329, 0x0003, 0x0162, 0x0000, + 0x0157, 0x0002, 0x015a, 0x015e, 0x0002, 0x0017, 0x033d, 0x0374, + 0x0002, 0x0017, 0x035a, 0x038f, 0x0002, 0x0165, 0x0169, 0x0002, + // Entry DD80 - DDBF + 0x0017, 0x03a4, 0x03ba, 0x0002, 0x0017, 0x03af, 0x03c5, 0x0004, + 0x017b, 0x0175, 0x0172, 0x0178, 0x0001, 0x0016, 0x0460, 0x0001, + 0x0013, 0x06b1, 0x0001, 0x0017, 0x03cc, 0x0001, 0x0008, 0x0620, + 0x0004, 0x018c, 0x0186, 0x0183, 0x0189, 0x0001, 0x0005, 0x0082, + 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, + 0x00a1, 0x0004, 0x019d, 0x0197, 0x0194, 0x019a, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0040, 0x01e1, 0x0000, 0x0000, 0x01e6, 0x0203, + // Entry DDC0 - DDFF + 0x021b, 0x0233, 0x024b, 0x0263, 0x027b, 0x0298, 0x02b0, 0x02c8, + 0x02e5, 0x02fd, 0x0000, 0x0000, 0x0000, 0x0315, 0x0332, 0x034a, + 0x0000, 0x0000, 0x0000, 0x0362, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0367, 0x036f, 0x0377, 0x037f, 0x0387, 0x038f, 0x0397, + 0x039f, 0x03a7, 0x03af, 0x03b7, 0x03bf, 0x03c7, 0x03cf, 0x03d7, + 0x03df, 0x03e7, 0x03ef, 0x03f7, 0x03ff, 0x0407, 0x0000, 0x040f, + 0x0000, 0x0414, 0x042c, 0x0444, 0x045c, 0x0474, 0x048c, 0x04a4, + 0x04bc, 0x04d4, 0x04ec, 0x0001, 0x01e3, 0x0001, 0x0017, 0x03d2, + // Entry DE00 - DE3F + 0x0003, 0x01ea, 0x01ed, 0x01f2, 0x0001, 0x0017, 0x03d9, 0x0003, + 0x0017, 0x03df, 0x03e5, 0x03ed, 0x0002, 0x01f5, 0x01fc, 0x0005, + 0x0017, 0x041b, 0x03f3, 0xffff, 0x0400, 0x040e, 0x0005, 0x0017, + 0x044a, 0x0427, 0xffff, 0x0438, 0x044a, 0x0003, 0x0207, 0x0000, + 0x020a, 0x0001, 0x0017, 0x045c, 0x0002, 0x020d, 0x0214, 0x0005, + 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, 0x0005, 0x0017, + 0x045f, 0x045f, 0xffff, 0x045f, 0x045f, 0x0003, 0x021f, 0x0000, + 0x0222, 0x0001, 0x0017, 0x045c, 0x0002, 0x0225, 0x022c, 0x0005, + // Entry DE40 - DE7F + 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, 0x0005, 0x0017, + 0x045f, 0x045f, 0xffff, 0x045f, 0x045f, 0x0003, 0x0237, 0x0000, + 0x023a, 0x0001, 0x0017, 0x046c, 0x0002, 0x023d, 0x0244, 0x0005, + 0x0017, 0x04a3, 0x0474, 0xffff, 0x0483, 0x0493, 0x0005, 0x0017, + 0x04dd, 0x04b4, 0xffff, 0x04c8, 0x04dd, 0x0003, 0x024f, 0x0000, + 0x0252, 0x0001, 0x0017, 0x04f2, 0x0002, 0x0255, 0x025c, 0x0005, + 0x0017, 0x04f9, 0x04f9, 0xffff, 0x04f9, 0x04f9, 0x0005, 0x0017, + 0x0507, 0x0507, 0xffff, 0x0507, 0x0507, 0x0003, 0x0267, 0x0000, + // Entry DE80 - DEBF + 0x026a, 0x0001, 0x0001, 0x0117, 0x0002, 0x026d, 0x0274, 0x0005, + 0x0017, 0x0518, 0x0518, 0xffff, 0x0518, 0x0518, 0x0005, 0x0017, + 0x0523, 0x0523, 0xffff, 0x0523, 0x0523, 0x0003, 0x027f, 0x0282, + 0x0287, 0x0001, 0x0017, 0x0531, 0x0003, 0x0017, 0x0538, 0x0547, + 0x0552, 0x0002, 0x028a, 0x0291, 0x0005, 0x0017, 0x058e, 0x0562, + 0xffff, 0x0570, 0x057f, 0x0005, 0x0017, 0x05c5, 0x059e, 0xffff, + 0x05b1, 0x05c5, 0x0003, 0x029c, 0x0000, 0x029f, 0x0001, 0x0017, + 0x05d9, 0x0002, 0x02a2, 0x02a9, 0x0005, 0x0017, 0x05df, 0x05df, + // Entry DEC0 - DEFF + 0xffff, 0x05df, 0x05df, 0x0005, 0x0017, 0x05ec, 0x05ec, 0xffff, + 0x05ec, 0x05ec, 0x0003, 0x02b4, 0x0000, 0x02b7, 0x0001, 0x0017, + 0x05d9, 0x0002, 0x02ba, 0x02c1, 0x0005, 0x0017, 0x05df, 0x05df, + 0xffff, 0x05df, 0x05df, 0x0005, 0x0017, 0x05ec, 0x05ec, 0xffff, + 0x05ec, 0x05ec, 0x0003, 0x02cc, 0x02cf, 0x02d4, 0x0001, 0x0017, + 0x05fc, 0x0003, 0x0017, 0x0604, 0x0614, 0x0620, 0x0002, 0x02d7, + 0x02de, 0x0005, 0x0017, 0x0660, 0x0631, 0xffff, 0x0640, 0x0650, + 0x0005, 0x0017, 0x069a, 0x0671, 0xffff, 0x0685, 0x069a, 0x0003, + // Entry DF00 - DF3F + 0x02e9, 0x0000, 0x02ec, 0x0001, 0x0017, 0x06af, 0x0002, 0x02ef, + 0x02f6, 0x0005, 0x0017, 0x06b5, 0x06b5, 0xffff, 0x06b5, 0x06b5, + 0x0005, 0x0017, 0x06c2, 0x06c2, 0xffff, 0x06c2, 0x06c2, 0x0003, + 0x0301, 0x0000, 0x0304, 0x0001, 0x0017, 0x06af, 0x0002, 0x0307, + 0x030e, 0x0005, 0x0017, 0x06b5, 0x06b5, 0xffff, 0x06b5, 0x06b5, + 0x0005, 0x0017, 0x06c2, 0x06c2, 0xffff, 0x06c2, 0x06c2, 0x0003, + 0x0319, 0x031c, 0x0321, 0x0001, 0x0017, 0x06d2, 0x0003, 0x0017, + 0x06d8, 0x06dd, 0x06e4, 0x0002, 0x0324, 0x032b, 0x0005, 0x0017, + // Entry DF40 - DF7F + 0x070f, 0x06eb, 0xffff, 0x06f8, 0x0704, 0x0005, 0x0017, 0x073d, + 0x071c, 0xffff, 0x072c, 0x073d, 0x0003, 0x0336, 0x0000, 0x0339, + 0x0001, 0x0017, 0x06d2, 0x0002, 0x033c, 0x0343, 0x0005, 0x0017, + 0x074e, 0x06eb, 0xffff, 0x074e, 0x0704, 0x0005, 0x0017, 0x075a, + 0x075a, 0xffff, 0x075a, 0x075a, 0x0003, 0x034e, 0x0000, 0x0351, + 0x0001, 0x0017, 0x0769, 0x0002, 0x0354, 0x035b, 0x0005, 0x0017, + 0x076c, 0x076c, 0xffff, 0x076c, 0x076c, 0x0005, 0x0017, 0x0776, + 0x0776, 0xffff, 0x0776, 0x0776, 0x0001, 0x0364, 0x0001, 0x0017, + // Entry DF80 - DFBF + 0x0782, 0x0002, 0x0000, 0x036a, 0x0003, 0x0017, 0x0791, 0x07a2, + 0x07ae, 0x0002, 0x0000, 0x0372, 0x0003, 0x0017, 0x07c0, 0x07cd, + 0x07d5, 0x0002, 0x0000, 0x037a, 0x0003, 0x0017, 0x07e3, 0x07ef, + 0x07f6, 0x0002, 0x0000, 0x0382, 0x0003, 0x0017, 0x0803, 0x0817, + 0x0826, 0x0002, 0x0000, 0x038a, 0x0003, 0x0017, 0x083b, 0x084a, + 0x0854, 0x0002, 0x0000, 0x0392, 0x0003, 0x0017, 0x0864, 0x0871, + 0x0879, 0x0002, 0x0000, 0x039a, 0x0003, 0x0017, 0x0887, 0x0898, + 0x08a4, 0x0002, 0x0000, 0x03a2, 0x0003, 0x0017, 0x08b6, 0x08c5, + // Entry DFC0 - DFFF + 0x08cf, 0x0002, 0x0000, 0x03aa, 0x0003, 0x0017, 0x08df, 0x08eb, + 0x08f2, 0x0002, 0x0000, 0x03b2, 0x0003, 0x0017, 0x08ff, 0x090e, + 0x0918, 0x0002, 0x0000, 0x03ba, 0x0003, 0x0017, 0x0928, 0x0935, + 0x093d, 0x0002, 0x0000, 0x03c2, 0x0003, 0x0017, 0x094b, 0x0957, + 0x095e, 0x0002, 0x0000, 0x03ca, 0x0003, 0x0017, 0x096b, 0x097c, + 0x0989, 0x0002, 0x0000, 0x03d2, 0x0003, 0x0017, 0x099b, 0x09a8, + 0x09b1, 0x0002, 0x0000, 0x03da, 0x0003, 0x0017, 0x09bf, 0x09cb, + 0x09d3, 0x0002, 0x0000, 0x03e2, 0x0003, 0x0017, 0x09e0, 0x09ee, + // Entry E000 - E03F + 0x09f8, 0x0002, 0x0000, 0x03ea, 0x0003, 0x0017, 0x0a07, 0x0a15, + 0x0a1f, 0x0002, 0x0000, 0x03f2, 0x0003, 0x0017, 0x0a2e, 0x0a3b, + 0x0a44, 0x0002, 0x0000, 0x03fa, 0x0003, 0x0017, 0x0a52, 0x0a61, + 0x0a6b, 0x0002, 0x0000, 0x0402, 0x0003, 0x0017, 0x0a7b, 0x0a88, + 0x0a90, 0x0002, 0x0000, 0x040a, 0x0003, 0x0017, 0x0a9e, 0x0aaa, + 0x0ab1, 0x0001, 0x0411, 0x0001, 0x0017, 0x0abe, 0x0003, 0x0418, + 0x0000, 0x041b, 0x0001, 0x0017, 0x0acc, 0x0002, 0x041e, 0x0425, + 0x0005, 0x0017, 0x0b06, 0x0ad5, 0xffff, 0x0ae5, 0x0af6, 0x0005, + // Entry E040 - E07F + 0x0017, 0x0b3d, 0x0b15, 0xffff, 0x0b28, 0x0b3d, 0x0003, 0x0430, + 0x0000, 0x0433, 0x0001, 0x0017, 0x0b52, 0x0002, 0x0436, 0x043d, + 0x0005, 0x0017, 0x0b59, 0x0b59, 0xffff, 0x0b59, 0x0b59, 0x0005, + 0x0017, 0x0b67, 0x0b67, 0xffff, 0x0b67, 0x0b67, 0x0003, 0x0448, + 0x0000, 0x044b, 0x0001, 0x0000, 0x200e, 0x0002, 0x044e, 0x0455, + 0x0005, 0x0017, 0x0b78, 0x0b78, 0xffff, 0x0b78, 0x0b78, 0x0005, + 0x0017, 0x0b81, 0x0b81, 0xffff, 0x0b81, 0x0b81, 0x0003, 0x0460, + 0x0000, 0x0463, 0x0001, 0x000d, 0x0bf5, 0x0002, 0x0466, 0x046d, + // Entry E080 - E0BF + 0x0005, 0x000d, 0x31bd, 0x0c07, 0xffff, 0x31ae, 0x3108, 0x0005, + 0x0017, 0x0bb1, 0x0b8d, 0xffff, 0x0b9e, 0x0bb1, 0x0003, 0x0478, + 0x0000, 0x047b, 0x0001, 0x0001, 0x075a, 0x0002, 0x047e, 0x0485, + 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0x0c64, 0x0c64, 0x0005, + 0x0017, 0x0bc4, 0x0bc4, 0xffff, 0x0bc4, 0x0bc4, 0x0003, 0x0490, + 0x0000, 0x0493, 0x0001, 0x0000, 0x1f9a, 0x0002, 0x0496, 0x049d, + 0x0005, 0x0017, 0x0bd3, 0x0bd3, 0xffff, 0x0bd3, 0x0bd3, 0x0005, + 0x0017, 0x0bdc, 0x0bdc, 0xffff, 0x0bdc, 0x0bdc, 0x0003, 0x04a8, + // Entry E0C0 - E0FF + 0x0000, 0x04ab, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x04ae, 0x04b5, + 0x0005, 0x000d, 0x31dc, 0x0c8c, 0xffff, 0x31cc, 0x3123, 0x0005, + 0x0017, 0x0c0e, 0x0be8, 0xffff, 0x0bfa, 0x0c0e, 0x0003, 0x04c0, + 0x0000, 0x04c3, 0x0001, 0x0001, 0x07d3, 0x0002, 0x04c6, 0x04cd, + 0x0005, 0x000d, 0x0cef, 0x0cef, 0xffff, 0x0cef, 0x0cef, 0x0005, + 0x0017, 0x0c22, 0x0c22, 0xffff, 0x0c22, 0x0c22, 0x0003, 0x04d8, + 0x0000, 0x04db, 0x0001, 0x0000, 0x2002, 0x0002, 0x04de, 0x04e5, + 0x0005, 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0x0fcd, 0x0fcd, 0x0005, + // Entry E100 - E13F + 0x0017, 0x0c31, 0x0c31, 0xffff, 0x0c31, 0x0c31, 0x0001, 0x04ee, + 0x0001, 0x0017, 0x0c3d, 0x0004, 0x04f6, 0x04fb, 0x0500, 0x050b, + 0x0003, 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x0017, 0x0c4a, + 0x0c5b, 0x0c6e, 0x0002, 0x0000, 0x0503, 0x0002, 0x0000, 0x0506, + 0x0003, 0x0017, 0xffff, 0x0c7d, 0x0c95, 0x0002, 0x06d4, 0x050e, + 0x0003, 0x05a8, 0x063e, 0x0512, 0x0094, 0x0017, 0x0cab, 0x0cba, + 0x0cce, 0x0ce6, 0x0d18, 0x0d6d, 0x0db0, 0x0e08, 0x0e8d, 0x0f13, + 0x0f91, 0xffff, 0x0ffb, 0x1036, 0x1076, 0x10c8, 0x1124, 0x1165, + // Entry E140 - E17F + 0x11b0, 0x1218, 0x1291, 0x12f8, 0x1359, 0x13a5, 0x13e5, 0x141f, + 0x142e, 0x144a, 0x147c, 0x1499, 0x14cd, 0x14eb, 0x152b, 0x1565, + 0x15a6, 0x15e2, 0x15f7, 0x161b, 0x1663, 0x16af, 0x16e1, 0x16eb, + 0x16fe, 0x172c, 0x176c, 0x1790, 0x17e9, 0x1831, 0x185d, 0x18b5, + 0x18f9, 0x192b, 0x1943, 0x1981, 0x1991, 0x19ae, 0x19e0, 0x19f7, + 0x1a25, 0x1a92, 0x1ae2, 0x1af7, 0x1b1c, 0x1b70, 0x1bb3, 0x1be3, + 0x1bef, 0x1c04, 0x1c14, 0x1c2a, 0x1c40, 0x1c67, 0x1ca4, 0x1ce2, + 0x1d22, 0xffff, 0x1d54, 0x1d6e, 0x1d95, 0x1dc5, 0x1de4, 0x1e1c, + // Entry E180 - E1BF + 0x1e29, 0x1e51, 0x1e8d, 0x1eb0, 0x1ee6, 0x1ef5, 0x1f04, 0x1f12, + 0x1f39, 0x1f6d, 0x1f94, 0x1ff8, 0x204c, 0x2094, 0x20c6, 0x20d5, + 0x20e2, 0x2103, 0x2154, 0x21a4, 0x21e2, 0x21ee, 0x2217, 0x226e, + 0x22b0, 0x22eb, 0x2323, 0x2330, 0x2357, 0x2399, 0x23d6, 0x240a, + 0x243f, 0x2491, 0x24a9, 0xffff, 0x24b6, 0x24c5, 0x24e1, 0xffff, + 0x2524, 0x2554, 0x2563, 0x2573, 0x2583, 0x259f, 0x25ae, 0x25b8, + 0x25d6, 0x260c, 0x261c, 0x2638, 0x2668, 0x2685, 0x26bb, 0x26d7, + 0x2719, 0x2759, 0x278b, 0x27ae, 0x27fb, 0x2833, 0x283e, 0x284c, + // Entry E1C0 - E1FF + 0x2873, 0x28b8, 0x0094, 0x0017, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0d00, 0x0d5e, 0x0da1, 0x0de4, 0x0e66, 0x0ef1, 0x0f6d, 0xffff, + 0x0fef, 0x1029, 0x1066, 0x10ac, 0x1116, 0x1156, 0x1199, 0x11f4, + 0x1276, 0x12dd, 0x1344, 0x1399, 0x13d3, 0xffff, 0xffff, 0x143c, + 0xffff, 0x148a, 0xffff, 0x14dc, 0x151f, 0x1559, 0x1593, 0xffff, + 0xffff, 0x160c, 0x164f, 0x16a1, 0xffff, 0xffff, 0xffff, 0x1717, + 0xffff, 0x177b, 0x17d0, 0xffff, 0x1844, 0x18a5, 0x18eb, 0xffff, + 0xffff, 0xffff, 0xffff, 0x19a0, 0xffff, 0xffff, 0x1a08, 0x1a75, + // Entry E200 - E23F + 0xffff, 0xffff, 0x1b05, 0x1b60, 0x1ba6, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1c5a, 0x1c97, 0x1cd4, 0x1d14, 0xffff, + 0xffff, 0xffff, 0x1d88, 0xffff, 0x1dd3, 0xffff, 0xffff, 0x1e3e, + 0xffff, 0x1ea0, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f2a, 0xffff, + 0x1f78, 0x1fe2, 0x203a, 0x2086, 0xffff, 0xffff, 0xffff, 0x20ef, + 0x2141, 0x2190, 0xffff, 0xffff, 0x21ff, 0x225d, 0x22a6, 0x22da, + 0xffff, 0xffff, 0x2347, 0x238d, 0x23c7, 0xffff, 0x2421, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x24d1, 0xffff, 0x2517, 0xffff, + // Entry E240 - E27F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x25c6, 0xffff, + 0xffff, 0x262b, 0xffff, 0x2675, 0xffff, 0x26c8, 0x270b, 0x274b, + 0xffff, 0x279b, 0x27ea, 0xffff, 0xffff, 0xffff, 0x2866, 0x28a3, + 0x0094, 0x0017, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d3b, 0x0d87, + 0x0dca, 0x0e37, 0x0ebf, 0x0f40, 0x0fc0, 0xffff, 0x1012, 0x104e, + 0x1091, 0x10ef, 0x113d, 0x117f, 0x11d2, 0x1247, 0x12b7, 0x131e, + 0x1379, 0x13bc, 0x1402, 0xffff, 0xffff, 0x1463, 0xffff, 0x14b3, + 0xffff, 0x1505, 0x1542, 0x157c, 0x15c4, 0xffff, 0xffff, 0x1635, + // Entry E280 - E2BF + 0x1682, 0x16c8, 0xffff, 0xffff, 0xffff, 0x174c, 0xffff, 0x17b0, + 0x180d, 0xffff, 0x1881, 0x18d0, 0x1912, 0xffff, 0xffff, 0xffff, + 0xffff, 0x19c7, 0xffff, 0xffff, 0x1a4d, 0x1aba, 0xffff, 0xffff, + 0x1b3e, 0x1b8b, 0x1bcb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1c7f, 0x1cbc, 0x1cfb, 0x1d3b, 0xffff, 0xffff, 0xffff, + 0x1dad, 0xffff, 0x1e00, 0xffff, 0xffff, 0x1e6f, 0xffff, 0x1ecb, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1f53, 0xffff, 0x1fbb, 0x2019, + 0x2069, 0x20ad, 0xffff, 0xffff, 0xffff, 0x2122, 0x2172, 0x21c3, + // Entry E2C0 - E2FF + 0xffff, 0xffff, 0x223a, 0x228a, 0x22c5, 0x2307, 0xffff, 0xffff, + 0x2372, 0x23b0, 0x23f0, 0xffff, 0x2468, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x24fc, 0xffff, 0x253c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x25f1, 0xffff, 0xffff, 0x2650, + 0xffff, 0x26a0, 0xffff, 0x26f1, 0x2732, 0x2772, 0xffff, 0x27cc, + 0x2817, 0xffff, 0xffff, 0xffff, 0x288b, 0x28d8, 0x0003, 0x06d8, + 0x073e, 0x070b, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry E300 - E33F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry E340 - E37F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, + 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry E380 - E3BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b15, + 0x1b69, 0xffff, 0x1bd3, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0001, + 0x1fcc, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, + 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, + // Entry E3C0 - E3FF + 0x0045, 0x000d, 0x0018, 0xffff, 0x0000, 0x0003, 0x000a, 0x0010, + 0x0015, 0x0019, 0x001e, 0x0022, 0x0027, 0x002d, 0x0031, 0x0035, + 0x000d, 0x0018, 0xffff, 0x003a, 0x0044, 0x004e, 0x0056, 0x0061, + 0x006a, 0x0078, 0x008c, 0x0096, 0x00a0, 0x00ab, 0x00b4, 0x0002, + 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2008, 0x2147, 0x2002, + 0x2008, 0x22e1, 0x22e1, 0x1f9a, 0x2008, 0x1f96, 0x1f9a, 0x2000, + 0x22e1, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, + 0x0007, 0x0018, 0x00c0, 0x00c4, 0x00cb, 0x00cf, 0x00d3, 0x00d8, + // Entry E400 - E43F + 0x00de, 0x0007, 0x0018, 0x00e2, 0x00e7, 0x00f0, 0x00f7, 0x0102, + 0x010a, 0x0115, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x22e1, + 0x1f9a, 0x1ffe, 0x1f9a, 0x2147, 0x22e3, 0x22e1, 0x0001, 0x008d, + 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0018, 0xffff, 0x011f, + 0x0124, 0x0129, 0x012e, 0x0005, 0x0018, 0xffff, 0x0133, 0x0148, + 0x0167, 0x0186, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, + 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0018, 0x01a6, 0x0001, 0x0018, + 0x01ad, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0018, 0x01a6, 0x0001, + // Entry E440 - E47F + 0x0018, 0x01ad, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, + 0x0002, 0x0018, 0x01b5, 0x01cc, 0x0001, 0x00c3, 0x0002, 0x0018, + 0x01e1, 0x01e7, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, + 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, + 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x003d, 0x0127, 0x0000, 0x0000, + 0x012c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, + // Entry E480 - E4BF + 0x0000, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0146, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x014b, 0x0000, 0x0150, 0x0000, 0x0000, 0x0155, 0x0000, + 0x0000, 0x015a, 0x0001, 0x0129, 0x0001, 0x0018, 0x01ed, 0x0001, + 0x012e, 0x0001, 0x0018, 0x01f5, 0x0001, 0x0133, 0x0001, 0x0018, + // Entry E4C0 - E4FF + 0x01fa, 0x0001, 0x0138, 0x0001, 0x0018, 0x0202, 0x0002, 0x013e, + 0x0141, 0x0001, 0x0018, 0x0209, 0x0003, 0x0018, 0x0211, 0x0227, + 0x0234, 0x0001, 0x0148, 0x0001, 0x0018, 0x023d, 0x0001, 0x014d, + 0x0001, 0x0018, 0x0250, 0x0001, 0x0152, 0x0001, 0x0018, 0x0260, + 0x0001, 0x0157, 0x0001, 0x0018, 0x0269, 0x0001, 0x015c, 0x0001, + 0x0018, 0x0271, 0x0002, 0x0003, 0x00bd, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + // Entry E500 - E53F + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0001, 0x1fcc, + 0x0008, 0x002f, 0x0066, 0x0000, 0x0000, 0x008b, 0x009b, 0x00ac, + 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + 0x000d, 0x0016, 0xffff, 0x0367, 0x2b44, 0x2b47, 0x2b4a, 0x2b4d, + 0x2b50, 0x2b53, 0x2b57, 0x2b5a, 0x2b5d, 0x2b60, 0x2b63, 0x000d, + 0x0018, 0xffff, 0x0279, 0x0280, 0x0289, 0x028e, 0x0295, 0x0299, + 0x029f, 0x02a7, 0x02aa, 0x02b4, 0x02bc, 0x02c5, 0x0002, 0x0000, + // Entry E540 - E57F + 0x0057, 0x000d, 0x0000, 0xffff, 0x22dd, 0x22e6, 0x22d9, 0x22e8, + 0x22d9, 0x22dd, 0x22dd, 0x22ea, 0x22dd, 0x22ec, 0x22ee, 0x22f0, + 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, + 0x0018, 0x02ce, 0x02d2, 0x02d6, 0x02da, 0x02de, 0x02e2, 0x02e6, + 0x0007, 0x0018, 0x02ea, 0x02f0, 0x02f7, 0x02fe, 0x0306, 0x030f, + 0x0316, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x22f0, 0x04dd, + 0x04dd, 0x22e8, 0x22e8, 0x22e8, 0x22dd, 0x0003, 0x0095, 0x0000, + 0x008f, 0x0001, 0x0091, 0x0002, 0x0018, 0x031d, 0x032b, 0x0001, + // Entry E580 - E5BF + 0x0097, 0x0002, 0x0018, 0x0339, 0x033d, 0x0004, 0x00a9, 0x00a3, + 0x00a0, 0x00a6, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00ba, + 0x00b4, 0x00b1, 0x00b7, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0035, + 0x00f3, 0x0000, 0x0000, 0x00f8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00fd, 0x0000, 0x0000, 0x0102, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry E5C0 - E5FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, 0x0001, 0x00f5, 0x0001, + 0x0018, 0x0341, 0x0001, 0x00fa, 0x0001, 0x0018, 0x0349, 0x0001, + 0x00ff, 0x0001, 0x0018, 0x034e, 0x0001, 0x0104, 0x0001, 0x0018, + 0x0356, 0x0002, 0x010a, 0x010d, 0x0001, 0x0018, 0x035f, 0x0003, + 0x0018, 0x0365, 0x036b, 0x0370, 0x0001, 0x0114, 0x0001, 0x0018, + // Entry E600 - E63F + 0x0376, 0x0003, 0x0004, 0x018e, 0x025a, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0018, 0x0386, 0x0001, + 0x0018, 0x03bc, 0x0001, 0x0018, 0x03ed, 0x0001, 0x0000, 0x04af, + 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0153, 0x015b, + // Entry E640 - E67F + 0x016c, 0x017d, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, + 0x0066, 0x000d, 0x0018, 0xffff, 0x0425, 0x0429, 0x042d, 0x0431, + 0x0435, 0x0439, 0x043d, 0x0441, 0x0445, 0x0449, 0x0450, 0x0457, + 0x000d, 0x0018, 0xffff, 0x0425, 0x0429, 0x042d, 0x045a, 0x0435, + 0x0439, 0x043d, 0x0441, 0x045c, 0x0449, 0x0450, 0x045e, 0x000d, + 0x0018, 0xffff, 0x0465, 0x047b, 0x049a, 0x04b9, 0x04d5, 0x04ee, + 0x050a, 0x0529, 0x054b, 0x0567, 0x0583, 0x05ae, 0x0003, 0x0079, + 0x0088, 0x0097, 0x000d, 0x000b, 0xffff, 0x005f, 0x006c, 0x0079, + // Entry E680 - E6BF + 0x0086, 0x0093, 0x00a0, 0x00ad, 0x00ba, 0x00c7, 0x00d4, 0x00e4, + 0x00f4, 0x000d, 0x0018, 0xffff, 0x0425, 0x0429, 0x042d, 0x0431, + 0x0435, 0x0439, 0x043d, 0x0441, 0x0445, 0x0449, 0x0450, 0x045e, + 0x000d, 0x0018, 0xffff, 0x05d9, 0x05fe, 0x062c, 0x065a, 0x0682, + 0x06aa, 0x06d5, 0x0703, 0x0734, 0x075f, 0x078a, 0x07c4, 0x0002, + 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, + 0x0007, 0x0018, 0x07fe, 0x0808, 0x0815, 0x0822, 0x082f, 0x083c, + 0x084c, 0x0007, 0x000b, 0x04fc, 0x275c, 0x050d, 0x0517, 0x2766, + // Entry E6C0 - E6FF + 0x052b, 0x04f5, 0x0007, 0x0018, 0x07fe, 0x0808, 0x0815, 0x0822, + 0x082f, 0x083c, 0x084c, 0x0007, 0x000b, 0x0554, 0x0570, 0x0595, + 0x05b4, 0x05d6, 0x05f5, 0x0538, 0x0005, 0x00d9, 0x00e2, 0x00f4, + 0x0000, 0x00eb, 0x0007, 0x0018, 0x07fe, 0x0808, 0x0815, 0x0822, + 0x082f, 0x083c, 0x084c, 0x0007, 0x000b, 0x04fc, 0x275c, 0x050d, + 0x0517, 0x2766, 0x052b, 0x04f5, 0x0007, 0x0018, 0x07fe, 0x0808, + 0x0815, 0x0822, 0x082f, 0x083c, 0x084c, 0x0007, 0x000b, 0x0554, + 0x0570, 0x0595, 0x05b4, 0x05d6, 0x05f5, 0x0538, 0x0002, 0x0100, + // Entry E700 - E73F + 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0018, 0xffff, + 0x0856, 0x0872, 0x088e, 0x08aa, 0x0005, 0x0018, 0xffff, 0x0425, + 0x0429, 0x042d, 0x0431, 0x0005, 0x0018, 0xffff, 0x08c6, 0x08ee, + 0x091c, 0x094a, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0018, + 0xffff, 0x0856, 0x0872, 0x088e, 0x08aa, 0x0005, 0x0018, 0xffff, + 0x0425, 0x0429, 0x042d, 0x0431, 0x0005, 0x0018, 0xffff, 0x08c6, + 0x08ee, 0x091c, 0x094a, 0x0001, 0x0134, 0x0003, 0x0138, 0x0141, + 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, 0x0018, 0x0975, 0x0001, + // Entry E740 - E77F + 0x0018, 0x0985, 0x0002, 0x0144, 0x0147, 0x0001, 0x0018, 0x0975, + 0x0001, 0x0018, 0x0985, 0x0002, 0x014d, 0x0150, 0x0001, 0x0018, + 0x0975, 0x0001, 0x0018, 0x0985, 0x0001, 0x0155, 0x0001, 0x0157, + 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0169, 0x0163, 0x0160, + 0x0166, 0x0001, 0x0018, 0x0998, 0x0001, 0x0018, 0x09cc, 0x0001, + 0x0018, 0x09fb, 0x0001, 0x0000, 0x051c, 0x0004, 0x017a, 0x0174, + 0x0171, 0x0177, 0x0001, 0x0018, 0x0a31, 0x0001, 0x0018, 0x0a69, + 0x0001, 0x0018, 0x0a9e, 0x0001, 0x0018, 0x0abd, 0x0004, 0x018b, + // Entry E780 - E7BF + 0x0185, 0x0182, 0x0188, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x01cf, 0x0000, 0x0000, 0x01d4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x01e4, 0x0000, 0x0000, 0x01f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0204, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x021b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry E7C0 - E7FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0220, 0x0000, 0x0225, 0x0000, + 0x0000, 0x0235, 0x0000, 0x0000, 0x0245, 0x0000, 0x0000, 0x0255, + 0x0001, 0x01d1, 0x0001, 0x0018, 0x0aed, 0x0003, 0x01d8, 0x0000, + 0x01db, 0x0001, 0x0018, 0x0b06, 0x0002, 0x01de, 0x01e1, 0x0001, + 0x0018, 0x0b0d, 0x0001, 0x0018, 0x0b34, 0x0003, 0x01e8, 0x0000, + 0x01eb, 0x0001, 0x0018, 0x0b61, 0x0002, 0x01ee, 0x01f1, 0x0001, + 0x0018, 0x0b71, 0x0001, 0x0018, 0x0b8c, 0x0003, 0x01f8, 0x0000, + 0x01fb, 0x0001, 0x0018, 0x0bad, 0x0002, 0x01fe, 0x0201, 0x0001, + // Entry E800 - E83F + 0x0018, 0x0bc6, 0x0001, 0x0018, 0x0bf0, 0x0003, 0x0208, 0x020b, + 0x0212, 0x0001, 0x0018, 0x0c20, 0x0005, 0x0018, 0x0c3d, 0x0c4a, + 0x0c5d, 0x0c2d, 0x0c70, 0x0002, 0x0215, 0x0218, 0x0001, 0x0018, + 0x0c86, 0x0001, 0x0018, 0x0ca4, 0x0001, 0x021d, 0x0001, 0x0018, + 0x0cc8, 0x0001, 0x0222, 0x0001, 0x0018, 0x0cf6, 0x0003, 0x0229, + 0x0000, 0x022c, 0x0001, 0x0018, 0x0d16, 0x0002, 0x022f, 0x0232, + 0x0001, 0x0018, 0x0d29, 0x0001, 0x0018, 0x0d4d, 0x0003, 0x0239, + 0x0000, 0x023c, 0x0001, 0x0018, 0x0d77, 0x0002, 0x023f, 0x0242, + // Entry E840 - E87F + 0x0001, 0x0018, 0x0d87, 0x0001, 0x0018, 0x0da8, 0x0003, 0x0249, + 0x0000, 0x024c, 0x0001, 0x0018, 0x0dcf, 0x0002, 0x024f, 0x0252, + 0x0001, 0x0018, 0x0de5, 0x0001, 0x0018, 0x0e06, 0x0001, 0x0257, + 0x0001, 0x0018, 0x0e2d, 0x0004, 0x025f, 0x0264, 0x0267, 0x0272, + 0x0003, 0x0000, 0x1dc7, 0x22f2, 0x2314, 0x0001, 0x0018, 0x0e43, + 0x0002, 0x0000, 0x026a, 0x0002, 0x0000, 0x026d, 0x0003, 0x0018, + 0xffff, 0x0e5f, 0x0ea8, 0x0002, 0x043b, 0x0275, 0x0003, 0x030f, + 0x03a5, 0x0279, 0x0094, 0x0018, 0x0eee, 0x0f28, 0x0f77, 0x0fc0, + // Entry E880 - E8BF + 0x1058, 0x114b, 0x1202, 0x12f2, 0x1436, 0x156b, 0x16a0, 0xffff, + 0xffff, 0x17bd, 0x1886, 0x1979, 0x1a87, 0x1b56, 0x1c55, 0x1db1, + 0x1f28, 0x2090, 0x21b9, 0x228e, 0x2345, 0x23d7, 0x2408, 0x2473, + 0xffff, 0x2536, 0xffff, 0xffff, 0x25e1, 0x2683, 0xffff, 0x2703, + 0xffff, 0x278f, 0xffff, 0x285e, 0xffff, 0xffff, 0xffff, 0x292d, + 0x29ef, 0x2a6f, 0x2b8f, 0xffff, 0x2ca6, 0x2dc3, 0xffff, 0x2e91, + 0xffff, 0x2ece, 0xffff, 0x2f27, 0xffff, 0x2fa1, 0x3042, 0x3162, + 0x3236, 0x325b, 0x32cd, 0xffff, 0xffff, 0x3391, 0x33b9, 0x3405, + // Entry E8C0 - E8FF + 0x3442, 0x34a3, 0x34fe, 0x3584, 0x362f, 0x36e0, 0x378b, 0xffff, + 0xffff, 0xffff, 0x3830, 0xffff, 0x38f3, 0xffff, 0xffff, 0xffff, + 0xffff, 0x39cb, 0xffff, 0x3a57, 0xffff, 0xffff, 0x3ab6, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3b70, 0xffff, 0xffff, 0x3bf0, 0xffff, + 0x3c52, 0x3d39, 0xffff, 0xffff, 0x3e49, 0x3f70, 0x404e, 0x4102, + 0xffff, 0xffff, 0x41ce, 0x4288, 0xffff, 0xffff, 0x434e, 0xffff, + 0xffff, 0xffff, 0x4422, 0xffff, 0x4487, 0xffff, 0xffff, 0x450d, + 0xffff, 0xffff, 0xffff, 0x4538, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry E900 - E93F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x45a6, 0xffff, 0xffff, + 0x4650, 0x46d0, 0x47c3, 0xffff, 0xffff, 0xffff, 0x489b, 0x496a, + 0x0094, 0x0018, 0xffff, 0xffff, 0xffff, 0xffff, 0x100c, 0x1120, + 0x11d1, 0x1294, 0x13de, 0x1516, 0x1645, 0xffff, 0xffff, 0x1786, + 0x184f, 0x1924, 0x1a53, 0x1b1f, 0x1bf4, 0x1d47, 0x1ebb, 0x2032, + 0x217c, 0x2263, 0x2314, 0xffff, 0xffff, 0x243f, 0xffff, 0x250b, + 0xffff, 0xffff, 0x25bc, 0x265b, 0xffff, 0xffff, 0xffff, 0x2755, + 0xffff, 0x2833, 0xffff, 0xffff, 0xffff, 0x28e4, 0xffff, 0x2a1d, + // Entry E940 - E97F + 0x2b43, 0xffff, 0x2c57, 0x2d74, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2f02, 0xffff, 0xffff, 0x2ff3, 0x3110, 0xffff, 0xffff, + 0x3283, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x355c, 0x3604, 0x36b5, 0x3766, 0xffff, 0xffff, 0xffff, + 0x3805, 0xffff, 0x38b6, 0xffff, 0xffff, 0xffff, 0xffff, 0x399d, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3a85, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3b48, 0xffff, 0xffff, 0xffff, 0xffff, 0x3c18, 0x3cf6, + 0xffff, 0xffff, 0x3def, 0x3f2d, 0x4026, 0x40ce, 0xffff, 0xffff, + // Entry E980 - E9BF + 0x419a, 0x4266, 0xffff, 0xffff, 0x42fc, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x445c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x4569, 0xffff, 0xffff, 0xffff, 0x468d, + 0x4786, 0xffff, 0xffff, 0xffff, 0x486d, 0x4927, 0x0094, 0x0018, + 0xffff, 0xffff, 0xffff, 0xffff, 0x10b9, 0x118b, 0x1248, 0x1365, + 0x14a3, 0x15d5, 0x1710, 0xffff, 0xffff, 0x1809, 0x18d2, 0x19e3, + 0x1ad0, 0x1ba2, 0x1ccb, 0x1e33, 0x1faa, 0x2103, 0x220b, 0x22ce, + // Entry E9C0 - E9FF + 0x238b, 0xffff, 0xffff, 0x24bc, 0xffff, 0x2576, 0xffff, 0xffff, + 0x261b, 0x26c0, 0xffff, 0xffff, 0xffff, 0x27de, 0xffff, 0x289e, + 0xffff, 0xffff, 0xffff, 0x298b, 0xffff, 0x2ad6, 0x2bf0, 0xffff, + 0x2d0a, 0x2e27, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f61, + 0xffff, 0xffff, 0x30a6, 0x31c9, 0xffff, 0xffff, 0x332c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x35c1, + 0x366f, 0x3720, 0x37c5, 0xffff, 0xffff, 0xffff, 0x3870, 0xffff, + 0x3945, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a0e, 0xffff, 0xffff, + // Entry EA00 - EA3F + 0xffff, 0xffff, 0x3afc, 0xffff, 0xffff, 0xffff, 0xffff, 0x3bad, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3ca1, 0x3d91, 0xffff, 0xffff, + 0x3eb8, 0x3fc8, 0x408b, 0x414b, 0xffff, 0xffff, 0x4217, 0x42bf, + 0xffff, 0xffff, 0x43b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x44c7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x45f8, 0xffff, 0xffff, 0xffff, 0x4728, 0x4815, 0xffff, + 0xffff, 0xffff, 0x48de, 0x49c2, 0x0003, 0x0000, 0x0000, 0x043f, + // Entry EA40 - EA7F + 0x001a, 0x0019, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0000, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + // Entry EA80 - EABF + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0019, 0xffff, 0x0003, 0x0007, 0x000b, + 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, + 0x002f, 0x000d, 0x0019, 0xffff, 0x0033, 0x0042, 0x0052, 0x0064, + 0x0072, 0x0082, 0x0096, 0x00a9, 0x00b9, 0x00c8, 0x00d8, 0x00f1, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x22d9, 0x2157, + 0x2157, 0x2157, 0x2281, 0x2281, 0x22d9, 0x2157, 0x2157, 0x2055, + // Entry EAC0 - EAFF + 0x2055, 0x2055, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0019, 0x010c, 0x0110, 0x0114, 0x0118, 0x011c, + 0x0120, 0x0124, 0x0007, 0x0019, 0x0128, 0x012f, 0x0139, 0x0142, + 0x014c, 0x0155, 0x015c, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x2157, 0x22ee, 0x22ee, 0x22ee, 0x22e8, 0x22d9, 0x22ee, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0019, 0xffff, 0x0168, + 0x0177, 0x0188, 0x0199, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + // Entry EB00 - EB3F + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0019, 0x01a7, 0x0001, + 0x0019, 0x01aa, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0019, 0x01a7, + 0x0001, 0x0019, 0x01aa, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + 0x00bd, 0x0002, 0x0019, 0x01ad, 0x01bd, 0x0001, 0x00c3, 0x0002, + 0x0019, 0x01ce, 0x01d1, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + // Entry EB40 - EB7F + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, + // Entry EB80 - EBBF + 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, + 0x0001, 0x0019, 0x01d4, 0x0001, 0x0131, 0x0001, 0x0005, 0x0787, + 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, 0x013b, 0x0001, + 0x0019, 0x0128, 0x0002, 0x0141, 0x0144, 0x0001, 0x0019, 0x01e1, + 0x0003, 0x0019, 0x01eb, 0x01f2, 0x01fd, 0x0001, 0x014b, 0x0001, + 0x0019, 0x0205, 0x0001, 0x0150, 0x0001, 0x0019, 0x021b, 0x0001, + 0x0155, 0x0001, 0x0019, 0x0221, 0x0001, 0x015a, 0x0001, 0x0009, + 0x00ba, 0x0001, 0x015f, 0x0001, 0x0019, 0x022a, 0x0003, 0x0004, + // Entry EBC0 - EBFF + 0x045c, 0x05e5, 0x0012, 0x0017, 0x0020, 0x007c, 0x0000, 0x00c9, + 0x0000, 0x0116, 0x0141, 0x02ee, 0x0346, 0x038f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x03d8, 0x03f2, 0x043b, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0006, 0x0027, + 0x0000, 0x0000, 0x0000, 0x0000, 0x006e, 0x0002, 0x002a, 0x004c, + 0x0003, 0x002e, 0x0000, 0x003d, 0x000d, 0x0019, 0xffff, 0x0232, + 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, + 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, 0x0263, 0x0269, + // Entry EC00 - EC3F + 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, + 0x02af, 0x02bd, 0x0003, 0x0050, 0x0000, 0x005f, 0x000d, 0x0019, + 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, + 0x024f, 0x0253, 0x02aa, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, + 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, + 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0004, 0x0000, 0x0076, 0x0073, + 0x0079, 0x0001, 0x0019, 0x02c3, 0x0001, 0x0019, 0x02d9, 0x0001, + 0x0019, 0x02e8, 0x0001, 0x007e, 0x0002, 0x0081, 0x00a5, 0x0003, + // Entry EC40 - EC7F + 0x0085, 0x0000, 0x0095, 0x000e, 0x0019, 0xffff, 0x0232, 0x0236, + 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, + 0x025b, 0x025f, 0x02f6, 0x000e, 0x0019, 0xffff, 0x0263, 0x0269, + 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, + 0x02af, 0x02bd, 0x02fa, 0x0003, 0x00a9, 0x0000, 0x00b9, 0x000e, + 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, + 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x02f6, 0x000e, + 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, + // Entry EC80 - ECBF + 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, 0x0001, + 0x00cb, 0x0002, 0x00ce, 0x00f2, 0x0003, 0x00d2, 0x0000, 0x00e2, + 0x000e, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, + 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, + 0x000e, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, + 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, + 0x0003, 0x00f6, 0x0000, 0x0106, 0x000e, 0x0019, 0xffff, 0x0232, + 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, + // Entry ECC0 - ECFF + 0x0257, 0x025b, 0x025f, 0x0301, 0x000e, 0x0019, 0xffff, 0x0263, + 0x0269, 0x0270, 0x0306, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, + 0x02aa, 0x02af, 0x02bd, 0x02fa, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x011f, 0x0000, 0x0130, 0x0004, 0x012d, 0x0127, + 0x0124, 0x012a, 0x0001, 0x0019, 0x030e, 0x0001, 0x0019, 0x0325, + 0x0001, 0x0019, 0x0336, 0x0001, 0x0012, 0x0203, 0x0004, 0x013e, + 0x0138, 0x0135, 0x013b, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, + 0x0347, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, 0x0347, 0x0008, + // Entry ED00 - ED3F + 0x014a, 0x01af, 0x0206, 0x0234, 0x02a0, 0x02bb, 0x02cc, 0x02dd, + 0x0002, 0x014d, 0x017e, 0x0003, 0x0151, 0x0160, 0x016f, 0x000d, + 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, + 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0000, + 0xffff, 0x2008, 0x2008, 0x2000, 0x1f9c, 0x2008, 0x1f9a, 0x2002, + 0x2008, 0x1f9c, 0x1ffe, 0x1f9c, 0x2008, 0x000d, 0x0019, 0xffff, + 0x0263, 0x0269, 0x0270, 0x034f, 0x0358, 0x0287, 0x028c, 0x0295, + 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0003, 0x0182, 0x0191, 0x01a0, + // Entry ED40 - ED7F + 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, + 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, + 0x0000, 0xffff, 0x2008, 0x2008, 0x2000, 0x1f9c, 0x2008, 0x1f9a, + 0x2002, 0x2008, 0x1f9c, 0x1ffe, 0x1f9c, 0x2008, 0x000d, 0x0019, + 0xffff, 0x0263, 0x0269, 0x0270, 0x034f, 0x0358, 0x0287, 0x028c, + 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0002, 0x01b2, 0x01dc, + 0x0005, 0x01b8, 0x01c1, 0x01d3, 0x0000, 0x01ca, 0x0007, 0x0019, + 0x035d, 0x0362, 0x0366, 0x036a, 0x036f, 0x0373, 0x0378, 0x0007, + // Entry ED80 - EDBF + 0x0000, 0x1ffe, 0x2008, 0x2145, 0x1ffe, 0x2333, 0x2006, 0x1f9a, + 0x0007, 0x0019, 0x035d, 0x0362, 0x0366, 0x036a, 0x036f, 0x0373, + 0x0378, 0x0007, 0x0019, 0x037c, 0x0385, 0x038c, 0x0393, 0x0399, + 0x03a1, 0x03a7, 0x0005, 0x01e2, 0x01eb, 0x01fd, 0x0000, 0x01f4, + 0x0007, 0x0019, 0x035d, 0x0362, 0x0366, 0x036a, 0x036f, 0x0373, + 0x0378, 0x0007, 0x0000, 0x1ffe, 0x2008, 0x2145, 0x1ffe, 0x2333, + 0x2006, 0x1f9a, 0x0007, 0x0019, 0x035d, 0x0362, 0x0366, 0x036a, + 0x036f, 0x0373, 0x0378, 0x0007, 0x0019, 0x037c, 0x0385, 0x038c, + // Entry EDC0 - EDFF + 0x0393, 0x0399, 0x03a1, 0x03a7, 0x0002, 0x0209, 0x0222, 0x0003, + 0x020d, 0x0214, 0x021b, 0x0005, 0x0019, 0xffff, 0x03b0, 0x03b3, + 0x03b6, 0x03b9, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0019, 0xffff, 0x03bc, 0x03ca, 0x03d7, 0x03e7, + 0x0003, 0x0226, 0x0000, 0x022d, 0x0005, 0x0019, 0xffff, 0x03b0, + 0x03b3, 0x03b6, 0x03b9, 0x0005, 0x0019, 0xffff, 0x03bc, 0x03ca, + 0x03d7, 0x03e7, 0x0002, 0x0237, 0x028a, 0x0003, 0x023b, 0x025e, + 0x0267, 0x000a, 0x0246, 0x0249, 0x0000, 0x024c, 0x0252, 0x0258, + // Entry EE00 - EE3F + 0x025b, 0x0000, 0x024f, 0x0255, 0x0001, 0x0019, 0x03f4, 0x0001, + 0x0019, 0x03f9, 0x0001, 0x0019, 0x0401, 0x0001, 0x0019, 0x03f4, + 0x0001, 0x0019, 0x0409, 0x0001, 0x0019, 0x03f9, 0x0001, 0x0019, + 0x040f, 0x0001, 0x0019, 0x0415, 0x0002, 0x0261, 0x0264, 0x0001, + 0x0000, 0x2147, 0x0001, 0x0019, 0x0419, 0x000a, 0x0272, 0x0275, + 0x0000, 0x0278, 0x027e, 0x0284, 0x0287, 0x0000, 0x027b, 0x0281, + 0x0001, 0x0019, 0x03f4, 0x0001, 0x0019, 0x03f9, 0x0001, 0x0019, + 0x0401, 0x0001, 0x0019, 0x03f4, 0x0001, 0x0019, 0x0409, 0x0001, + // Entry EE40 - EE7F + 0x0019, 0x03f9, 0x0001, 0x0019, 0x040f, 0x0001, 0x0019, 0x0415, + 0x0003, 0x0000, 0x028e, 0x0297, 0x0002, 0x0291, 0x0294, 0x0001, + 0x0000, 0x2147, 0x0001, 0x0019, 0x0419, 0x0002, 0x029a, 0x029d, + 0x0001, 0x0019, 0x03f4, 0x0001, 0x0019, 0x03f9, 0x0003, 0x02aa, + 0x02b5, 0x02a4, 0x0001, 0x02a6, 0x0002, 0x0019, 0x041c, 0x0432, + 0x0002, 0x02ad, 0x02b1, 0x0002, 0x0019, 0x043e, 0x0445, 0x0002, + 0x0019, 0x0441, 0x0449, 0x0001, 0x02b7, 0x0002, 0x0019, 0x043e, + 0x0445, 0x0004, 0x02c9, 0x02c3, 0x02c0, 0x02c6, 0x0001, 0x0019, + // Entry EE80 - EEBF + 0x044d, 0x0001, 0x0019, 0x0462, 0x0001, 0x0019, 0x0471, 0x0001, + 0x000c, 0x03ec, 0x0004, 0x02da, 0x02d4, 0x02d1, 0x02d7, 0x0001, + 0x0019, 0x0480, 0x0001, 0x0019, 0x0494, 0x0001, 0x0019, 0x04a5, + 0x0001, 0x0019, 0x04b4, 0x0004, 0x02eb, 0x02e5, 0x02e2, 0x02e8, + 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, + 0x0347, 0x0001, 0x0019, 0x0347, 0x0005, 0x02f4, 0x0000, 0x0000, + 0x0000, 0x033f, 0x0002, 0x02f7, 0x031b, 0x0003, 0x02fb, 0x0000, + 0x030b, 0x000e, 0x0019, 0x028c, 0x0263, 0x0269, 0x0270, 0x0277, + // Entry EEC0 - EEFF + 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, + 0x02fa, 0x000e, 0x0019, 0x028c, 0x0263, 0x0269, 0x0270, 0x0277, + 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, + 0x02fa, 0x0003, 0x031f, 0x0000, 0x032f, 0x000e, 0x0019, 0x024b, + 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, + 0x0253, 0x0257, 0x025b, 0x025f, 0x02f6, 0x000e, 0x0019, 0x028c, + 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x04c0, + 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, 0x0001, 0x0341, 0x0001, + // Entry EF00 - EF3F + 0x0343, 0x0001, 0x0019, 0x03f4, 0x0001, 0x0348, 0x0002, 0x034b, + 0x036d, 0x0003, 0x034f, 0x0000, 0x035e, 0x000d, 0x0019, 0xffff, + 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, + 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, 0x0263, + 0x0269, 0x0270, 0x023e, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, + 0x02aa, 0x02af, 0x02bd, 0x0003, 0x0371, 0x0000, 0x0380, 0x000d, + 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, + 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, + // Entry EF40 - EF7F + 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, + 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0001, 0x0391, 0x0002, + 0x0394, 0x03b6, 0x0003, 0x0398, 0x0000, 0x03a7, 0x000d, 0x0019, + 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, + 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, + 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, + 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0003, 0x03ba, 0x0000, 0x03c9, + 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, + // Entry EF80 - EFBF + 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, + 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, + 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x03e1, 0x0000, 0x9006, 0x0004, + 0x03ef, 0x03e9, 0x03e6, 0x03ec, 0x0001, 0x0019, 0x04ca, 0x0001, + 0x0019, 0x04e3, 0x0001, 0x0019, 0x04f5, 0x0001, 0x0019, 0x0506, + 0x0001, 0x03f4, 0x0002, 0x03f7, 0x0419, 0x0003, 0x03fb, 0x0000, + 0x040a, 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, + // Entry EFC0 - EFFF + 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, + 0x000d, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, + 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0003, + 0x041d, 0x0000, 0x042c, 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, + 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, + 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, + 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, + 0x02bd, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0444, 0x044b, + // Entry F000 - F03F + 0x0000, 0x9006, 0x0001, 0x0446, 0x0001, 0x0448, 0x0001, 0x0019, + 0x0515, 0x0004, 0x0459, 0x0453, 0x0450, 0x0456, 0x0001, 0x0019, + 0x04ca, 0x0001, 0x0019, 0x04e3, 0x0001, 0x0019, 0x04f5, 0x0001, + 0x0019, 0x0521, 0x0040, 0x049d, 0x0000, 0x0000, 0x04a2, 0x04b9, + 0x04cb, 0x04dd, 0x04ef, 0x0501, 0x0513, 0x052a, 0x052f, 0x0534, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x054b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0564, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0569, 0x0000, 0x0000, 0x0571, 0x0000, 0x0000, 0x0579, + // Entry F040 - F07F + 0x0000, 0x0000, 0x0581, 0x0000, 0x0000, 0x0589, 0x0000, 0x0000, + 0x0591, 0x0000, 0x0000, 0x0599, 0x0000, 0x0000, 0x0000, 0x05a1, + 0x0000, 0x05a6, 0x0000, 0x0000, 0x05b8, 0x0000, 0x0000, 0x05ca, + 0x0000, 0x0000, 0x05e0, 0x0001, 0x049f, 0x0001, 0x0019, 0x052f, + 0x0003, 0x04a6, 0x04a9, 0x04ae, 0x0001, 0x0019, 0x0536, 0x0003, + 0x0019, 0x053a, 0x0547, 0x054f, 0x0002, 0x04b1, 0x04b5, 0x0002, + 0x0019, 0x055e, 0x055e, 0x0002, 0x0019, 0x057d, 0x056c, 0x0003, + 0x04bd, 0x0000, 0x04c0, 0x0001, 0x0019, 0x0536, 0x0002, 0x04c3, + // Entry F080 - F0BF + 0x04c7, 0x0002, 0x0019, 0x055e, 0x055e, 0x0002, 0x0019, 0x0591, + 0x0591, 0x0003, 0x04cf, 0x0000, 0x04d2, 0x0001, 0x0019, 0x0536, + 0x0002, 0x04d5, 0x04d9, 0x0002, 0x0019, 0x05a8, 0x05a8, 0x0002, + 0x0019, 0x05c0, 0x05c0, 0x0003, 0x04e1, 0x0000, 0x04e4, 0x0001, + 0x0019, 0x05d4, 0x0002, 0x04e7, 0x04eb, 0x0002, 0x0019, 0x05da, + 0x05da, 0x0002, 0x0019, 0x05f5, 0x05f5, 0x0003, 0x04f3, 0x0000, + 0x04f6, 0x0001, 0x0019, 0x05d4, 0x0002, 0x04f9, 0x04fd, 0x0002, + 0x0019, 0x05da, 0x05da, 0x0002, 0x0019, 0x05f5, 0x05f5, 0x0003, + // Entry F0C0 - F0FF + 0x0505, 0x0000, 0x0508, 0x0001, 0x0019, 0x05d4, 0x0002, 0x050b, + 0x050f, 0x0002, 0x0019, 0x05da, 0x060b, 0x0002, 0x0019, 0x05f5, + 0x05f5, 0x0003, 0x0517, 0x051a, 0x051f, 0x0001, 0x0019, 0x0625, + 0x0003, 0x0019, 0x062c, 0x063c, 0x0647, 0x0002, 0x0522, 0x0526, + 0x0002, 0x0019, 0x066a, 0x0659, 0x0002, 0x0019, 0x0692, 0x067e, + 0x0001, 0x052c, 0x0001, 0x0019, 0x0625, 0x0001, 0x0531, 0x0001, + 0x0019, 0x0625, 0x0003, 0x0538, 0x053b, 0x0540, 0x0001, 0x0019, + 0x06a9, 0x0003, 0x0019, 0x06b8, 0x06ca, 0x06d7, 0x0002, 0x0543, + // Entry F100 - F13F + 0x0547, 0x0002, 0x0019, 0x06fe, 0x06eb, 0x0002, 0x0019, 0x072a, + 0x0714, 0x0003, 0x054f, 0x0552, 0x0559, 0x0001, 0x0019, 0x0743, + 0x0005, 0x0019, 0x075b, 0x076a, 0x076f, 0x074a, 0x077f, 0x0002, + 0x055c, 0x0560, 0x0002, 0x0019, 0x07a2, 0x0791, 0x0002, 0x0019, + 0x07ca, 0x07b6, 0x0001, 0x0566, 0x0001, 0x0019, 0x07e1, 0x0002, + 0x0000, 0x056c, 0x0003, 0x0019, 0x07f4, 0x0809, 0x081a, 0x0002, + 0x0000, 0x0574, 0x0003, 0x0019, 0x0831, 0x0841, 0x084c, 0x0002, + 0x0000, 0x057c, 0x0003, 0x0019, 0x085e, 0x086e, 0x0879, 0x0002, + // Entry F140 - F17F + 0x0000, 0x0584, 0x0003, 0x0019, 0x088b, 0x089a, 0x08a4, 0x0002, + 0x0000, 0x058c, 0x0003, 0x0019, 0x08b5, 0x08c6, 0x08d2, 0x0002, + 0x0000, 0x0594, 0x0003, 0x0019, 0x08e5, 0x08f4, 0x08fe, 0x0002, + 0x0000, 0x059c, 0x0003, 0x0019, 0x090f, 0x0921, 0x092e, 0x0001, + 0x05a3, 0x0001, 0x0019, 0x0942, 0x0003, 0x05aa, 0x0000, 0x05ad, + 0x0001, 0x0019, 0x094d, 0x0002, 0x05b0, 0x05b4, 0x0002, 0x0019, + 0x0969, 0x0956, 0x0002, 0x0019, 0x0995, 0x097f, 0x0003, 0x05bc, + 0x0000, 0x05bf, 0x0001, 0x0019, 0x09ae, 0x0002, 0x05c2, 0x05c6, + // Entry F180 - F1BF + 0x0002, 0x0019, 0x09d2, 0x09bb, 0x0002, 0x0019, 0x0a06, 0x09ec, + 0x0003, 0x05ce, 0x05d1, 0x05d5, 0x0001, 0x0019, 0x0a23, 0x0002, + 0x0019, 0xffff, 0x0a2a, 0x0002, 0x05d8, 0x05dc, 0x0002, 0x0019, + 0x0a40, 0x0a2f, 0x0002, 0x0019, 0x0a68, 0x0a54, 0x0001, 0x05e2, + 0x0001, 0x0019, 0x0a7f, 0x0004, 0x05ea, 0x05ef, 0x05f4, 0x05ff, + 0x0003, 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x0000, 0x1de0, + 0x1de0, 0x1de0, 0x0002, 0x0000, 0x05f7, 0x0002, 0x0000, 0x05fa, + 0x0003, 0x0019, 0xffff, 0x0a8e, 0x0aad, 0x0002, 0x07e6, 0x0602, + // Entry F1C0 - F1FF + 0x0003, 0x0606, 0x0746, 0x06a6, 0x009e, 0x0019, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0b5f, 0x0bc9, 0x0c58, 0x0ca1, 0x0cff, 0x0d66, + 0x0de1, 0x0e29, 0xffff, 0x0ef3, 0x0f39, 0x0f8b, 0x1001, 0x104d, + 0x1099, 0x10fd, 0x116d, 0x11da, 0x124d, 0x12a5, 0xffff, 0xffff, + 0xffff, 0x1301, 0xffff, 0x1350, 0xffff, 0xffff, 0x13a2, 0x13e9, + 0x142c, 0xffff, 0xffff, 0x1481, 0xffff, 0x14d0, 0xffff, 0xffff, + 0xffff, 0x1510, 0xffff, 0x15b4, 0x160f, 0xffff, 0x1673, 0x16dd, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x179d, 0xffff, 0xffff, + // Entry F200 - F23F + 0x1801, 0x1871, 0xffff, 0xffff, 0x1909, 0x1967, 0x19c0, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a06, 0x1a4f, + 0x1a95, 0x1ad7, 0xffff, 0xffff, 0x1b93, 0xffff, 0x1bd6, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1c86, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1cd2, 0xffff, 0xffff, 0xffff, 0x1d24, 0x1d79, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1dbf, 0xffff, 0xffff, 0x1e1d, 0x1e8d, + 0x1ee5, 0xffff, 0xffff, 0xffff, 0x1f28, 0x1f77, 0xffff, 0xffff, + 0x1fba, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x20a4, 0x20f1, + // Entry F240 - F27F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x215f, 0xffff, 0xffff, 0xffff, 0xffff, 0x21bc, 0xffff, 0x2217, + 0x2263, 0xffff, 0xffff, 0x22cd, 0x2325, 0xffff, 0xffff, 0xffff, + 0x2374, 0x23c0, 0xffff, 0xffff, 0x0acd, 0x0c0f, 0x0e6f, 0x0eb5, + 0xffff, 0xffff, 0x1c43, 0x203c, 0x009e, 0x0019, 0xffff, 0x0b10, + 0x0b29, 0x0b45, 0x0b7d, 0x0bdb, 0x0c6a, 0x0cbb, 0x0d1c, 0x0d8a, + 0x0df4, 0x0e3b, 0xffff, 0x0f05, 0x0f4e, 0x0fac, 0x1014, 0x1061, + 0x10b5, 0x111d, 0x118c, 0x11fb, 0x1264, 0x12b7, 0xffff, 0xffff, + // Entry F280 - F2BF + 0x12ee, 0x1315, 0xffff, 0x1365, 0xffff, 0xffff, 0x13b4, 0x13fa, + 0x1442, 0xffff, 0xffff, 0x1495, 0xffff, 0x14e0, 0xffff, 0xffff, + 0xffff, 0x1536, 0x1595, 0x15cd, 0x162b, 0xffff, 0x1691, 0x1707, + 0xffff, 0x176e, 0xffff, 0x1788, 0xffff, 0x17b1, 0xffff, 0x17ec, + 0x1820, 0x1892, 0x18e7, 0x18f7, 0x1923, 0x197e, 0x19d1, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a18, 0x1a61, + 0x1aa6, 0x1afb, 0x1b53, 0x1b72, 0x1ba4, 0xffff, 0x1bed, 0x1c2e, + 0xffff, 0xffff, 0xffff, 0x1c99, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry F2C0 - F2FF + 0x1ce7, 0xffff, 0xffff, 0xffff, 0x1d3a, 0x1d8b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1dd9, 0xffff, 0xffff, 0x1e3c, 0x1ea4, + 0x1ef5, 0xffff, 0xffff, 0xffff, 0x1f3c, 0x1f87, 0xffff, 0xffff, + 0x1fe0, 0xffff, 0xffff, 0xffff, 0x2091, 0xffff, 0x20b7, 0x2103, + 0xffff, 0x2137, 0xffff, 0xffff, 0xffff, 0x214b, 0xffff, 0xffff, + 0x2171, 0x21a5, 0xffff, 0xffff, 0xffff, 0x21d4, 0xffff, 0x222a, + 0x2279, 0xffff, 0x22b8, 0x22e4, 0x2339, 0xffff, 0xffff, 0xffff, + 0x2387, 0x23da, 0xffff, 0xffff, 0x0add, 0x0c21, 0x0e80, 0x0ec7, + // Entry F300 - F33F + 0xffff, 0xffff, 0x1c54, 0x2052, 0x009e, 0x0019, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0ba2, 0x0bf4, 0x0c83, 0x0cdc, 0x0d40, 0x0db5, + 0x0e0e, 0x0e54, 0xffff, 0x0f1e, 0x0f6a, 0x0fd4, 0x102e, 0x107c, + 0x10d8, 0x1144, 0x11b2, 0x1223, 0x1282, 0x12d0, 0xffff, 0xffff, + 0xffff, 0x1330, 0xffff, 0x1381, 0xffff, 0xffff, 0x13cc, 0x1412, + 0x145f, 0xffff, 0xffff, 0x14b0, 0xffff, 0x14f7, 0xffff, 0xffff, + 0xffff, 0x1563, 0xffff, 0x15ed, 0x164e, 0xffff, 0x16b6, 0x1738, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17cc, 0xffff, 0xffff, + // Entry F340 - F37F + 0x1846, 0x18ba, 0xffff, 0xffff, 0x1944, 0x199d, 0x19e9, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a31, 0x1a7a, + 0x1abd, 0x1b26, 0xffff, 0xffff, 0x1bbc, 0xffff, 0x1c0b, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1cb3, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1d03, 0xffff, 0xffff, 0xffff, 0x1d57, 0x1da4, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1dfa, 0xffff, 0xffff, 0x1e62, 0x1ec2, + 0x1f0c, 0xffff, 0xffff, 0xffff, 0x1f57, 0x1f9e, 0xffff, 0xffff, + 0x200d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x20d2, 0x211c, + // Entry F380 - F3BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x218a, 0xffff, 0xffff, 0xffff, 0xffff, 0x21f3, 0xffff, 0x2244, + 0x2296, 0xffff, 0xffff, 0x2302, 0x2354, 0xffff, 0xffff, 0xffff, + 0x23a1, 0x23fb, 0xffff, 0xffff, 0x0af4, 0x0c3a, 0x0e98, 0x0ee0, + 0xffff, 0xffff, 0x1c6c, 0x206f, 0x0003, 0x07f1, 0x07f8, 0x07ea, + 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, + // Entry F3C0 - F3FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, + 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0003, 0x0004, 0x0279, 0x0669, 0x0012, 0x0017, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x004f, 0x023d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0251, 0x0000, 0x026b, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, + // Entry F400 - F43F + 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, + 0x0035, 0x0032, 0x0038, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0001, 0x1fcc, 0x0004, + 0x004c, 0x0046, 0x0043, 0x0049, 0x0001, 0x001a, 0x0000, 0x0001, + 0x001a, 0x0000, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x0058, 0x00bd, 0x0114, 0x0149, 0x01f0, 0x020a, 0x021b, + 0x022c, 0x0002, 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, + // Entry F440 - F47F + 0x000d, 0x001a, 0xffff, 0x000a, 0x0011, 0x0018, 0x001f, 0x0026, + 0x002d, 0x0036, 0x003f, 0x0046, 0x004d, 0x0054, 0x005b, 0x000d, + 0x001a, 0xffff, 0x0062, 0x0065, 0x0068, 0x006b, 0x0068, 0x0062, + 0x0062, 0x006b, 0x006e, 0x0071, 0x0074, 0x0077, 0x000d, 0x001a, + 0xffff, 0x007a, 0x008f, 0x00a6, 0x00b5, 0x00c6, 0x00d1, 0x00e0, + 0x00ef, 0x0102, 0x0119, 0x012c, 0x013f, 0x0003, 0x0090, 0x009f, + 0x00ae, 0x000d, 0x001a, 0xffff, 0x000a, 0x0011, 0x0154, 0x001f, + 0x015b, 0x0162, 0x016b, 0x0174, 0x0046, 0x004d, 0x017b, 0x005b, + // Entry F480 - F4BF + 0x000d, 0x001a, 0xffff, 0x0062, 0x0065, 0x0068, 0x006b, 0x0068, + 0x0062, 0x0062, 0x006b, 0x006e, 0x0071, 0x0074, 0x0077, 0x000d, + 0x001a, 0xffff, 0x0182, 0x0197, 0x01ae, 0x01bd, 0x01ce, 0x01d9, + 0x01e8, 0x01f7, 0x020a, 0x0221, 0x0234, 0x0247, 0x0002, 0x00c0, + 0x00ea, 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, + 0x001a, 0x025c, 0x0263, 0x026a, 0x0271, 0x0278, 0x027f, 0x0286, + 0x0007, 0x001a, 0x028d, 0x0077, 0x0290, 0x0290, 0x0293, 0x0293, + 0x006e, 0x0007, 0x001a, 0x0296, 0x029b, 0x02a0, 0x02a5, 0x02aa, + // Entry F4C0 - F4FF + 0x02af, 0x02b4, 0x0007, 0x001a, 0x02b9, 0x02c8, 0x02d7, 0x02e2, + 0x02f1, 0x02fe, 0x0311, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, + 0x0102, 0x0007, 0x001a, 0x025c, 0x0263, 0x026a, 0x0271, 0x0278, + 0x027f, 0x0286, 0x0007, 0x001a, 0x028d, 0x0077, 0x0290, 0x0290, + 0x0293, 0x0293, 0x006e, 0x0007, 0x001a, 0x0296, 0x029b, 0x02a0, + 0x02a5, 0x02aa, 0x02af, 0x02b4, 0x0007, 0x001a, 0x02b9, 0x02c8, + 0x02d7, 0x02e2, 0x02f1, 0x02fe, 0x0311, 0x0002, 0x0117, 0x0130, + 0x0003, 0x011b, 0x0122, 0x0129, 0x0005, 0x001a, 0xffff, 0x0320, + // Entry F500 - F53F + 0x0324, 0x0328, 0x032c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x001a, 0xffff, 0x0330, 0x0343, 0x0356, + 0x0369, 0x0003, 0x0134, 0x013b, 0x0142, 0x0005, 0x001a, 0xffff, + 0x0320, 0x0324, 0x0328, 0x032c, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x001a, 0xffff, 0x0330, 0x0343, + 0x0356, 0x0369, 0x0002, 0x014c, 0x019e, 0x0003, 0x0150, 0x016a, + 0x0184, 0x0007, 0x0158, 0x015b, 0x0000, 0x015e, 0x0161, 0x0164, + 0x0167, 0x0001, 0x001a, 0x037c, 0x0001, 0x001a, 0x0383, 0x0001, + // Entry F540 - F57F + 0x001a, 0x038a, 0x0001, 0x001a, 0x0393, 0x0001, 0x001a, 0x039f, + 0x0001, 0x001a, 0x03a9, 0x0007, 0x0172, 0x0175, 0x0000, 0x0178, + 0x017b, 0x017e, 0x0181, 0x0001, 0x001a, 0x03b4, 0x0001, 0x001a, + 0x03b9, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, 0x0393, 0x0001, + 0x001a, 0x039f, 0x0001, 0x001a, 0x03a9, 0x0007, 0x018c, 0x018f, + 0x0000, 0x0192, 0x0195, 0x0198, 0x019b, 0x0001, 0x001a, 0x037c, + 0x0001, 0x001a, 0x0383, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, + 0x03be, 0x0001, 0x001a, 0x03cf, 0x0001, 0x001a, 0x03a9, 0x0003, + // Entry F580 - F5BF + 0x01a2, 0x01bc, 0x01d6, 0x0007, 0x01aa, 0x01ad, 0x0000, 0x01b0, + 0x01b3, 0x01b6, 0x01b9, 0x0001, 0x001a, 0x037c, 0x0001, 0x001a, + 0x0383, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, 0x0393, 0x0001, + 0x001a, 0x039f, 0x0001, 0x001a, 0x03a9, 0x0007, 0x01c4, 0x01c7, + 0x0000, 0x01ca, 0x01cd, 0x01d0, 0x01d3, 0x0001, 0x001a, 0x037c, + 0x0001, 0x001a, 0x0383, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, + 0x0393, 0x0001, 0x001a, 0x039f, 0x0001, 0x001a, 0x03a9, 0x0007, + 0x01de, 0x01e1, 0x0000, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x0001, + // Entry F5C0 - F5FF + 0x001a, 0x037c, 0x0001, 0x001a, 0x0383, 0x0001, 0x001a, 0x038a, + 0x0001, 0x001a, 0x03be, 0x0001, 0x001a, 0x03cf, 0x0001, 0x001a, + 0x03a9, 0x0003, 0x01ff, 0x0000, 0x01f4, 0x0002, 0x01f7, 0x01fb, + 0x0002, 0x001a, 0x03e0, 0x042d, 0x0002, 0x001a, 0x03f6, 0x0445, + 0x0002, 0x0202, 0x0206, 0x0002, 0x001a, 0x0465, 0x0476, 0x0002, + 0x001a, 0x046c, 0x047d, 0x0004, 0x0218, 0x0212, 0x020f, 0x0215, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0005, 0x1394, 0x0004, 0x0229, 0x0223, 0x0220, + // Entry F600 - F63F + 0x0226, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, + 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x023a, 0x0234, + 0x0231, 0x0237, 0x0001, 0x001a, 0x0000, 0x0001, 0x001a, 0x0000, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0243, 0x0003, 0x024c, 0x0000, 0x0247, + 0x0001, 0x0249, 0x0001, 0x0000, 0x04ef, 0x0001, 0x024e, 0x0001, + 0x0000, 0x04ef, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x025a, 0x0000, 0x9006, 0x0004, 0x0268, 0x0262, 0x025f, 0x0265, + // Entry F640 - F67F + 0x0001, 0x0005, 0x018e, 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, + 0x1fc1, 0x0001, 0x0005, 0x1394, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0271, 0x0001, 0x0273, 0x0001, 0x0275, 0x0002, 0x001a, + 0x0482, 0x0492, 0x0040, 0x02ba, 0x0000, 0x0000, 0x02bf, 0x02d6, + 0x02ed, 0x0304, 0x031b, 0x0332, 0x0349, 0x0360, 0x0372, 0x0384, + 0x039f, 0x03b5, 0x0000, 0x0000, 0x0000, 0x03cb, 0x03e4, 0x03f6, + 0x0000, 0x0000, 0x0000, 0x0408, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x040d, 0x0421, 0x0435, 0x0449, 0x045d, 0x0471, 0x0485, + // Entry F680 - F6BF + 0x0499, 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, + 0x0539, 0x054d, 0x0561, 0x0575, 0x0589, 0x059d, 0x0000, 0x05b1, + 0x0000, 0x05b6, 0x05cc, 0x05de, 0x05f0, 0x0606, 0x0618, 0x062a, + 0x0640, 0x0652, 0x0664, 0x0001, 0x02bc, 0x0001, 0x001a, 0x0499, + 0x0003, 0x02c3, 0x02c6, 0x02cb, 0x0001, 0x001a, 0x04aa, 0x0003, + 0x001a, 0x04b3, 0x04be, 0x04c9, 0x0002, 0x02ce, 0x02d2, 0x0002, + 0x001a, 0x04f3, 0x04e1, 0x0002, 0x001a, 0x0520, 0x0503, 0x0003, + 0x02da, 0x02dd, 0x02e2, 0x0001, 0x001a, 0x053b, 0x0003, 0x001a, + // Entry F6C0 - F6FF + 0x04b3, 0x04be, 0x04c9, 0x0002, 0x02e5, 0x02e9, 0x0002, 0x001a, + 0x04f3, 0x04e1, 0x0002, 0x001a, 0x0520, 0x0503, 0x0003, 0x02f1, + 0x02f4, 0x02f9, 0x0001, 0x001a, 0x053b, 0x0003, 0x001a, 0x04b3, + 0x04be, 0x04c9, 0x0002, 0x02fc, 0x0300, 0x0002, 0x001a, 0x04f3, + 0x04e1, 0x0002, 0x001a, 0x0557, 0x0541, 0x0003, 0x0308, 0x030b, + 0x0310, 0x0001, 0x001a, 0x056b, 0x0003, 0x001a, 0x057a, 0x05a0, + 0x05bc, 0x0002, 0x0313, 0x0317, 0x0002, 0x001a, 0x05f2, 0x05da, + 0x0002, 0x001a, 0x062d, 0x060a, 0x0003, 0x031f, 0x0322, 0x0327, + // Entry F700 - F73F + 0x0001, 0x001a, 0x0650, 0x0003, 0x001a, 0x065a, 0x0670, 0x0687, + 0x0002, 0x032a, 0x032e, 0x0002, 0x001a, 0x069b, 0x069b, 0x0002, + 0x001a, 0x06ae, 0x06ae, 0x0003, 0x0336, 0x0339, 0x033e, 0x0001, + 0x001a, 0x0650, 0x0003, 0x001a, 0x065a, 0x0670, 0x0687, 0x0002, + 0x0341, 0x0345, 0x0002, 0x001a, 0x069b, 0x069b, 0x0002, 0x001a, + 0x06cc, 0x06cc, 0x0003, 0x034d, 0x0350, 0x0355, 0x0001, 0x001a, + 0x06e3, 0x0003, 0x001a, 0x06ee, 0x0712, 0x072a, 0x0002, 0x0358, + 0x035c, 0x0002, 0x001a, 0x0758, 0x0746, 0x0002, 0x001a, 0x0789, + // Entry F740 - F77F + 0x076c, 0x0003, 0x0364, 0x0000, 0x0367, 0x0001, 0x001a, 0x07a8, + 0x0002, 0x036a, 0x036e, 0x0002, 0x001a, 0x0758, 0x0746, 0x0002, + 0x001a, 0x0789, 0x076c, 0x0003, 0x0376, 0x0000, 0x0379, 0x0001, + 0x001a, 0x07a8, 0x0002, 0x037c, 0x0380, 0x0002, 0x001a, 0x07b0, + 0x07b0, 0x0002, 0x001a, 0x07bd, 0x07bd, 0x0004, 0x0389, 0x038c, + 0x0391, 0x039c, 0x0001, 0x001a, 0x07ce, 0x0003, 0x001a, 0x07df, + 0x0807, 0x082a, 0x0002, 0x0394, 0x0398, 0x0002, 0x001a, 0x0864, + 0x084a, 0x0002, 0x001a, 0x08a5, 0x0880, 0x0001, 0x001a, 0x08cc, + // Entry F780 - F7BF + 0x0004, 0x03a4, 0x0000, 0x03a7, 0x03b2, 0x0001, 0x001a, 0x08e8, + 0x0002, 0x03aa, 0x03ae, 0x0002, 0x001a, 0x08f0, 0x08f0, 0x0002, + 0x001a, 0x0901, 0x0901, 0x0001, 0x001a, 0x08cc, 0x0004, 0x03ba, + 0x0000, 0x03bd, 0x03c8, 0x0001, 0x001a, 0x08e8, 0x0002, 0x03c0, + 0x03c4, 0x0002, 0x001a, 0x08f0, 0x08f0, 0x0002, 0x001a, 0x091d, + 0x091d, 0x0001, 0x001a, 0x08cc, 0x0003, 0x03cf, 0x03d2, 0x03d9, + 0x0001, 0x001a, 0x0932, 0x0005, 0x001a, 0x094c, 0x0955, 0x0962, + 0x093d, 0x096d, 0x0002, 0x03dc, 0x03e0, 0x0002, 0x001a, 0x0992, + // Entry F7C0 - F7FF + 0x097e, 0x0002, 0x001a, 0x09c7, 0x09a8, 0x0003, 0x03e8, 0x0000, + 0x03eb, 0x0001, 0x001a, 0x0932, 0x0002, 0x03ee, 0x03f2, 0x0002, + 0x001a, 0x0992, 0x097e, 0x0002, 0x001a, 0x09c7, 0x09a8, 0x0003, + 0x03fa, 0x0000, 0x03fd, 0x0001, 0x001a, 0x0932, 0x0002, 0x0400, + 0x0404, 0x0002, 0x001a, 0x09e8, 0x09e8, 0x0002, 0x001a, 0x09f7, + 0x09f7, 0x0001, 0x040a, 0x0001, 0x001a, 0x0a0a, 0x0003, 0x0000, + 0x0411, 0x0416, 0x0003, 0x001a, 0x0a1f, 0x0a45, 0x0a66, 0x0002, + 0x0419, 0x041d, 0x0002, 0x001a, 0x0a9c, 0x0a84, 0x0002, 0x001a, + // Entry F800 - F83F + 0x0ad9, 0x0ab6, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x001a, + 0x0afe, 0x0b12, 0x0b2c, 0x0002, 0x042d, 0x0431, 0x0002, 0x001a, + 0x0b3e, 0x0b3e, 0x0002, 0x001a, 0x0b4f, 0x0b4f, 0x0003, 0x0000, + 0x0439, 0x043e, 0x0003, 0x001a, 0x0b6b, 0x0b7c, 0x0b93, 0x0002, + 0x0441, 0x0445, 0x0002, 0x001a, 0x0ba2, 0x0ba2, 0x0002, 0x001a, + 0x0bb0, 0x0bb0, 0x0003, 0x0000, 0x044d, 0x0452, 0x0003, 0x001a, + 0x0bc2, 0x0be8, 0x0c07, 0x0002, 0x0455, 0x0459, 0x0002, 0x001a, + 0x0c3d, 0x0c25, 0x0002, 0x001a, 0x0c7a, 0x0c57, 0x0003, 0x0000, + // Entry F840 - F87F + 0x0461, 0x0466, 0x0003, 0x001a, 0x0c9f, 0x0cb5, 0x0ccf, 0x0002, + 0x0469, 0x046d, 0x0002, 0x001a, 0x0ce3, 0x0ce3, 0x0002, 0x001a, + 0x0cf6, 0x0cf6, 0x0003, 0x0000, 0x0475, 0x047a, 0x0003, 0x001a, + 0x0d14, 0x0d25, 0x0d3a, 0x0002, 0x047d, 0x0481, 0x0002, 0x001a, + 0x0d49, 0x0d49, 0x0002, 0x001a, 0x0d57, 0x0d57, 0x0003, 0x0000, + 0x0489, 0x048e, 0x0003, 0x001a, 0x0d69, 0x0d8b, 0x0da8, 0x0002, + 0x0491, 0x0495, 0x0002, 0x001a, 0x0dd6, 0x0dc2, 0x0002, 0x001a, + 0x0e0b, 0x0dec, 0x0003, 0x0000, 0x049d, 0x04a2, 0x0003, 0x001a, + // Entry F880 - F8BF + 0x0e2c, 0x0e3e, 0x0e56, 0x0002, 0x04a5, 0x04a9, 0x0002, 0x001a, + 0x0e66, 0x0e66, 0x0002, 0x001a, 0x0e75, 0x0e75, 0x0003, 0x0000, + 0x04b1, 0x04b6, 0x0003, 0x001a, 0x0e8f, 0x0ea0, 0x0eb7, 0x0002, + 0x04b9, 0x04bd, 0x0002, 0x001a, 0x0ec6, 0x0ec6, 0x0002, 0x001a, + 0x0ed4, 0x0ed4, 0x0003, 0x0000, 0x04c5, 0x04ca, 0x0003, 0x001a, + 0x0ee6, 0x0f0c, 0x0f2d, 0x0002, 0x04cd, 0x04d1, 0x0002, 0x001a, + 0x0f63, 0x0f4b, 0x0002, 0x001a, 0x0fa0, 0x0f7d, 0x0003, 0x0000, + 0x04d9, 0x04de, 0x0003, 0x001a, 0x0fc5, 0x0fd9, 0x0ff3, 0x0002, + // Entry F8C0 - F8FF + 0x04e1, 0x04e5, 0x0002, 0x001a, 0x1005, 0x1005, 0x0002, 0x001a, + 0x1016, 0x1016, 0x0003, 0x0000, 0x04ed, 0x04f2, 0x0003, 0x001a, + 0x1032, 0x1043, 0x105a, 0x0002, 0x04f5, 0x04f9, 0x0002, 0x001a, + 0x1069, 0x1069, 0x0002, 0x001a, 0x1077, 0x1077, 0x0003, 0x0000, + 0x0501, 0x0506, 0x0003, 0x001a, 0x1089, 0x10ad, 0x10cc, 0x0002, + 0x0509, 0x050d, 0x0002, 0x001a, 0x10fe, 0x10e8, 0x0002, 0x001a, + 0x1137, 0x1116, 0x0003, 0x0000, 0x0515, 0x051a, 0x0003, 0x001a, + 0x115a, 0x116e, 0x1188, 0x0002, 0x051d, 0x0521, 0x0002, 0x001a, + // Entry F900 - F93F + 0x119a, 0x119a, 0x0002, 0x001a, 0x11ab, 0x11ab, 0x0003, 0x0000, + 0x0529, 0x052e, 0x0003, 0x001a, 0x11c7, 0x11d8, 0x11ef, 0x0002, + 0x0531, 0x0535, 0x0002, 0x001a, 0x11fe, 0x11fe, 0x0002, 0x001a, + 0x120c, 0x120c, 0x0003, 0x0000, 0x053d, 0x0542, 0x0003, 0x001a, + 0x121e, 0x1248, 0x126d, 0x0002, 0x0545, 0x0549, 0x0002, 0x001a, + 0x12ab, 0x128f, 0x0002, 0x001a, 0x12f0, 0x12c9, 0x0003, 0x0000, + 0x0551, 0x0556, 0x0003, 0x001a, 0x1319, 0x132d, 0x1347, 0x0002, + 0x0559, 0x055d, 0x0002, 0x001a, 0x1359, 0x1359, 0x0002, 0x001a, + // Entry F940 - F97F + 0x136a, 0x136a, 0x0003, 0x0000, 0x0565, 0x056a, 0x0003, 0x001a, + 0x1386, 0x1397, 0x13ae, 0x0002, 0x056d, 0x0571, 0x0002, 0x001a, + 0x13bd, 0x13bd, 0x0002, 0x001a, 0x13cb, 0x13cb, 0x0003, 0x0000, + 0x0579, 0x057e, 0x0003, 0x001a, 0x13dd, 0x1403, 0x1420, 0x0002, + 0x0581, 0x0585, 0x0002, 0x001a, 0x1456, 0x143e, 0x0002, 0x001a, + 0x148a, 0x146e, 0x0003, 0x0000, 0x058d, 0x0592, 0x0003, 0x001a, + 0x14a6, 0x14ba, 0x14d0, 0x0002, 0x0595, 0x0599, 0x0002, 0x001a, + 0x14e2, 0x14e2, 0x0002, 0x001a, 0x14f3, 0x14f3, 0x0003, 0x0000, + // Entry F980 - F9BF + 0x05a1, 0x05a6, 0x0003, 0x001a, 0x150f, 0x1520, 0x1533, 0x0002, + 0x05a9, 0x05ad, 0x0002, 0x001a, 0x1542, 0x1542, 0x0002, 0x001a, + 0x1550, 0x1550, 0x0001, 0x05b3, 0x0001, 0x001a, 0x1562, 0x0003, + 0x05ba, 0x05bd, 0x05c1, 0x0001, 0x001a, 0x1570, 0x0002, 0x001a, + 0xffff, 0x1577, 0x0002, 0x05c4, 0x05c8, 0x0002, 0x001a, 0x15a0, + 0x1590, 0x0002, 0x001a, 0x15cd, 0x15b2, 0x0003, 0x05d0, 0x0000, + 0x05d3, 0x0001, 0x001a, 0x15ea, 0x0002, 0x05d6, 0x05da, 0x0002, + 0x001a, 0x15f0, 0x1590, 0x0002, 0x001a, 0x15ff, 0x15b2, 0x0003, + // Entry F9C0 - F9FF + 0x05e2, 0x0000, 0x05e5, 0x0001, 0x001a, 0x1619, 0x0002, 0x05e8, + 0x05ec, 0x0002, 0x001a, 0x161c, 0x161c, 0x0002, 0x001a, 0x1629, + 0x1629, 0x0003, 0x05f4, 0x05f7, 0x05fb, 0x0001, 0x001a, 0x163a, + 0x0002, 0x001a, 0xffff, 0x1645, 0x0002, 0x05fe, 0x0602, 0x0002, + 0x001a, 0x1672, 0x165e, 0x0002, 0x001a, 0x16a5, 0x1686, 0x0003, + 0x060a, 0x0000, 0x060d, 0x0001, 0x001a, 0x16c4, 0x0002, 0x0610, + 0x0614, 0x0002, 0x001a, 0x16cc, 0x16cc, 0x0002, 0x001a, 0x16dd, + 0x16dd, 0x0003, 0x061c, 0x0000, 0x061f, 0x0001, 0x001a, 0x16f9, + // Entry FA00 - FA3F + 0x0002, 0x0622, 0x0626, 0x0002, 0x001a, 0x16fc, 0x16fc, 0x0002, + 0x001a, 0x1709, 0x1709, 0x0003, 0x062e, 0x0631, 0x0635, 0x0001, + 0x001a, 0x171a, 0x0002, 0x001a, 0xffff, 0x1733, 0x0002, 0x0638, + 0x063c, 0x0002, 0x001a, 0x175e, 0x173c, 0x0002, 0x001a, 0x17ad, + 0x1780, 0x0003, 0x0644, 0x0000, 0x0647, 0x0001, 0x001a, 0x17da, + 0x0002, 0x064a, 0x064e, 0x0002, 0x001a, 0x17e4, 0x17e4, 0x0002, + 0x001a, 0x17f7, 0x17f7, 0x0003, 0x0656, 0x0000, 0x0659, 0x0001, + 0x001a, 0x1815, 0x0002, 0x065c, 0x0660, 0x0002, 0x001a, 0x1818, + // Entry FA40 - FA7F + 0x1818, 0x0002, 0x001a, 0x1825, 0x1825, 0x0001, 0x0666, 0x0001, + 0x001a, 0x1836, 0x0004, 0x066e, 0x0673, 0x0678, 0x0687, 0x0003, + 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x001a, 0x1848, 0x1855, + 0x186f, 0x0002, 0x0000, 0x067b, 0x0003, 0x0000, 0x0682, 0x067f, + 0x0001, 0x001a, 0x188f, 0x0003, 0x001a, 0xffff, 0x18c2, 0x18e9, + 0x0002, 0x086b, 0x068a, 0x0003, 0x072d, 0x07cc, 0x068e, 0x009d, + 0x001a, 0x1910, 0x192c, 0x1955, 0x1980, 0x19db, 0x1a5b, 0x1ac1, + 0x1b4d, 0x1c17, 0x1cdf, 0x1d8e, 0x1e12, 0x1e6e, 0x1ec4, 0x1f2c, + // Entry FA80 - FABF + 0x1faf, 0x203d, 0x20a9, 0x2130, 0x21e5, 0x22a4, 0x2351, 0x23e7, + 0x245b, 0x24c3, 0x2523, 0x2539, 0x256b, 0x25bf, 0x261b, 0x2695, + 0x26bf, 0x2719, 0x276f, 0x27d1, 0x282d, 0x285c, 0x2895, 0x2906, + 0x2974, 0x29bc, 0x29d2, 0x29f7, 0x2a3d, 0x2a9b, 0x2adc, 0x2b79, + 0x2bef, 0x2c52, 0x2cdf, 0x2d57, 0x2d9b, 0x2dc4, 0x2e05, 0x2e23, + 0x2e53, 0x2ea3, 0x2eca, 0x2f22, 0x2fd5, 0x3063, 0x3077, 0x30c1, + 0x3162, 0x31ce, 0x3212, 0x3226, 0x324b, 0x3265, 0x3294, 0x32c5, + 0x3300, 0x3358, 0x33bc, 0x341c, 0x3486, 0x3514, 0x3543, 0x3580, + // Entry FAC0 - FAFF + 0x35c8, 0x35fe, 0x365e, 0x3678, 0x36b0, 0x375c, 0x379b, 0x37ef, + 0x3809, 0x3821, 0x3839, 0x3874, 0x38c8, 0x390b, 0x39b6, 0x3a47, + 0x3ab9, 0x3b01, 0x3b17, 0x3b2d, 0x3b64, 0x3bf1, 0x3c6e, 0x3cbc, + 0x3cce, 0x3d21, 0x3df5, 0x3e65, 0x3ebd, 0x3f0d, 0x3f21, 0x3f67, + 0x3fd1, 0x4031, 0x4089, 0x40d9, 0x415b, 0x4171, 0x4185, 0x41a1, + 0x41b7, 0x41e5, 0x424f, 0x42ad, 0x42f1, 0x430b, 0x4329, 0x4350, + 0x4375, 0x438d, 0x439f, 0x43c5, 0x440d, 0x442b, 0x4457, 0x449f, + 0x44d3, 0x4537, 0x456d, 0x45e9, 0x4663, 0x46b7, 0x46f3, 0x476f, + // Entry FB00 - FB3F + 0x47cf, 0x47e3, 0x4804, 0x484a, 0x48c6, 0x304f, 0x3da1, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3718, 0x009d, 0x001a, + 0xffff, 0xffff, 0xffff, 0xffff, 0x19b6, 0x1a45, 0x1aa7, 0x1b15, + 0x1bdd, 0x1cab, 0x1d67, 0x1dfc, 0x1e5e, 0x1eae, 0x1f10, 0x1f84, + 0x2025, 0x208d, 0x2101, 0x21ae, 0x2273, 0x2326, 0x23c7, 0x2447, + 0x24a3, 0xffff, 0xffff, 0x2551, 0xffff, 0x25ee, 0xffff, 0x26ab, + 0x2707, 0x275d, 0x27b3, 0xffff, 0xffff, 0x287b, 0x28e9, 0x2960, + 0xffff, 0xffff, 0xffff, 0x2a1e, 0xffff, 0x2ab3, 0x2b4e, 0xffff, + // Entry FB40 - FB7F + 0x2c2d, 0x2cbc, 0x2d45, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e3b, + 0xffff, 0xffff, 0x2eef, 0x2fa8, 0xffff, 0xffff, 0x308f, 0x3145, + 0x31bc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32f0, + 0x3340, 0x33a8, 0x3404, 0x346c, 0xffff, 0xffff, 0x356c, 0xffff, + 0x35de, 0xffff, 0xffff, 0x3695, 0xffff, 0x3781, 0xffff, 0xffff, + 0xffff, 0xffff, 0x385a, 0xffff, 0x38da, 0x398d, 0x3a28, 0x3aa5, + 0xffff, 0xffff, 0xffff, 0x3b3f, 0x3bce, 0x3c57, 0xffff, 0xffff, + 0x3cf1, 0x3dd5, 0x3e55, 0x3ea5, 0xffff, 0xffff, 0x3f4b, 0x3fbf, + // Entry FB80 - FBBF + 0x4015, 0xffff, 0x40a8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x41cb, 0x4239, 0x429b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x43b1, 0xffff, 0xffff, 0x4443, 0xffff, 0x44b1, + 0xffff, 0x454f, 0x45c9, 0x4649, 0xffff, 0x46d5, 0x474f, 0xffff, + 0xffff, 0xffff, 0x4830, 0x489e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3706, 0x009d, 0x001a, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1a13, 0x1a84, 0x1aee, 0x1b98, 0x1c64, + 0x1d26, 0x1dc8, 0x1e3b, 0x1e91, 0x1eed, 0x1f5b, 0x1fed, 0x2068, + // Entry FBC0 - FBFF + 0x20d8, 0x2172, 0x222f, 0x22e8, 0x238f, 0x241a, 0x2482, 0x24f6, + 0xffff, 0xffff, 0x2598, 0xffff, 0x265b, 0xffff, 0x26e6, 0x273e, + 0x2794, 0x2802, 0xffff, 0xffff, 0x28c2, 0x2936, 0x299b, 0xffff, + 0xffff, 0xffff, 0x2a6f, 0xffff, 0x2b18, 0x2bb7, 0xffff, 0x2c8a, + 0x2d15, 0x2d7c, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e7e, 0xffff, + 0xffff, 0x2f68, 0x3015, 0xffff, 0xffff, 0x3106, 0x3192, 0x31f3, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3323, 0x3383, + 0x33e3, 0x3447, 0x34d0, 0xffff, 0xffff, 0x35a7, 0xffff, 0x3631, + // Entry FC00 - FC3F + 0xffff, 0xffff, 0x36de, 0xffff, 0x37c8, 0xffff, 0xffff, 0xffff, + 0xffff, 0x38a1, 0xffff, 0x394f, 0x39f2, 0x3a79, 0x3ae0, 0xffff, + 0xffff, 0xffff, 0x3b9c, 0x3c27, 0x3c98, 0xffff, 0xffff, 0x3d64, + 0x3e28, 0x3e88, 0x3ee8, 0xffff, 0xffff, 0x3f96, 0x3ff6, 0x4060, + 0xffff, 0x411d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4212, + 0x4278, 0x42d2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x43ec, 0xffff, 0xffff, 0x447e, 0xffff, 0x4508, 0xffff, + 0x459e, 0x461c, 0x4690, 0xffff, 0x4724, 0x47a2, 0xffff, 0xffff, + // Entry FC40 - FC7F + 0xffff, 0x4877, 0x4901, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x373d, 0x0003, 0x086f, 0x08d5, 0x08a2, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, + // Entry FC80 - FCBF + 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry FCC0 - FCFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, + 0x13e3, 0x0003, 0x0004, 0x02a4, 0x0633, 0x0012, 0x0017, 0x0024, + 0x0000, 0x0000, 0x0000, 0x0000, 0x008f, 0x00ba, 0x0250, 0x0000, + 0x0271, 0x0000, 0x0000, 0x0000, 0x0000, 0x027e, 0x0000, 0x0296, + // Entry FD00 - FD3F + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, + 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x000a, 0x002f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x006d, 0x0000, 0x007e, 0x0000, 0x0053, + 0x0001, 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x001b, + 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, + 0x001c, 0x0020, 0x0024, 0x0029, 0x002e, 0x000d, 0x001b, 0xffff, + 0x0033, 0x003f, 0x004c, 0x0058, 0x0065, 0x0071, 0x007d, 0x008b, + 0x0098, 0x00a4, 0x00b0, 0x00bf, 0x0006, 0x0000, 0x0000, 0x0000, + // Entry FD40 - FD7F + 0x0000, 0x0000, 0x005a, 0x0001, 0x005c, 0x0001, 0x005e, 0x000d, + 0x001b, 0xffff, 0x00cd, 0x00d1, 0x00d4, 0x00da, 0x00e1, 0x00e8, + 0x00ee, 0x00f4, 0x00f9, 0x0100, 0x0108, 0x010c, 0x0004, 0x007b, + 0x0075, 0x0072, 0x0078, 0x0001, 0x001b, 0x0110, 0x0001, 0x001b, + 0x0123, 0x0001, 0x001b, 0x0130, 0x0001, 0x001b, 0x0139, 0x0004, + 0x008c, 0x0086, 0x0083, 0x0089, 0x0001, 0x001b, 0x013f, 0x0001, + 0x001b, 0x013f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0098, 0x0000, + // Entry FD80 - FDBF + 0x00a9, 0x0004, 0x00a6, 0x00a0, 0x009d, 0x00a3, 0x0001, 0x000c, + 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, + 0x0012, 0x0203, 0x0004, 0x00b7, 0x00b1, 0x00ae, 0x00b4, 0x0001, + 0x001b, 0x013f, 0x0001, 0x001b, 0x013f, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0008, 0x00c3, 0x00fa, 0x012a, 0x0149, + 0x01fd, 0x021d, 0x022e, 0x023f, 0x0002, 0x00c6, 0x00e8, 0x0003, + 0x00ca, 0x0000, 0x00d9, 0x000d, 0x0005, 0xffff, 0x0636, 0x20fa, + 0x20fe, 0x2102, 0x2106, 0x210a, 0x210e, 0x2112, 0x2116, 0x211a, + // Entry FDC0 - FDFF + 0x211e, 0x0662, 0x000d, 0x001b, 0xffff, 0x014c, 0x0154, 0x015d, + 0x0163, 0x0169, 0x016d, 0x0172, 0x0177, 0x017e, 0x0188, 0x0190, + 0x0199, 0x0002, 0x0000, 0x00eb, 0x000d, 0x0000, 0xffff, 0x1e5d, + 0x22e6, 0x22d9, 0x22e8, 0x22d9, 0x1e5d, 0x1e5d, 0x22e8, 0x22dd, + 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x00fd, 0x011e, 0x0005, 0x0103, + 0x0000, 0x0115, 0x0000, 0x010c, 0x0007, 0x0000, 0x04bd, 0x04c1, + 0x04c5, 0x04c9, 0x04cd, 0x04d1, 0x04d5, 0x0007, 0x0016, 0x2b50, + 0x0358, 0x2b66, 0x2b69, 0x2b6c, 0x0364, 0x0367, 0x0007, 0x001b, + // Entry FE00 - FE3F + 0x01a2, 0x01a9, 0x01b0, 0x01b8, 0x01c2, 0x01cb, 0x01d2, 0x0002, + 0x0000, 0x0121, 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, 0x2159, + 0x04dd, 0x22e6, 0x22dd, 0x0002, 0x012d, 0x013f, 0x0003, 0x0131, + 0x0000, 0x0138, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, + 0x04ec, 0x0005, 0x001b, 0xffff, 0x01db, 0x01e7, 0x01f3, 0x01ff, + 0x0002, 0x0000, 0x0142, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0002, 0x014c, 0x01b7, 0x0003, 0x0150, 0x0173, + 0x0194, 0x0008, 0x015c, 0x0163, 0x0159, 0x0167, 0x016a, 0x016d, + // Entry FE40 - FE7F + 0x0170, 0x0160, 0x0001, 0x001b, 0x020b, 0x0002, 0x0000, 0x04ef, + 0x2337, 0x0001, 0x001b, 0x0214, 0x0002, 0x0000, 0x04f2, 0x233a, + 0x0001, 0x001b, 0x0219, 0x0001, 0x001b, 0x0228, 0x0001, 0x001b, + 0x0239, 0x0001, 0x001b, 0x0248, 0x0008, 0x017f, 0x0185, 0x017c, + 0x0188, 0x018b, 0x018e, 0x0191, 0x0182, 0x0001, 0x0005, 0x125f, + 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x1f96, 0x0001, 0x0000, + 0x21ec, 0x0001, 0x001b, 0x0219, 0x0001, 0x001b, 0x0228, 0x0001, + 0x001b, 0x0239, 0x0001, 0x001b, 0x0248, 0x0008, 0x01a0, 0x01a7, + // Entry FE80 - FEBF + 0x019d, 0x01ab, 0x01ae, 0x01b1, 0x01b4, 0x01a4, 0x0001, 0x001b, + 0x020b, 0x0002, 0x0000, 0x04ef, 0x2337, 0x0001, 0x001b, 0x0214, + 0x0002, 0x0000, 0x04f2, 0x233a, 0x0001, 0x001b, 0x0219, 0x0001, + 0x001b, 0x0228, 0x0001, 0x001b, 0x0239, 0x0001, 0x001b, 0x0248, + 0x0003, 0x01bb, 0x0000, 0x01dc, 0x0008, 0x01c7, 0x01cd, 0x01c4, + 0x01d0, 0x01d3, 0x01d6, 0x01d9, 0x01ca, 0x0001, 0x001b, 0x020b, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x001b, 0x0214, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, 0x0001, + // Entry FEC0 - FEFF + 0x001b, 0x0263, 0x0001, 0x001b, 0x026b, 0x0008, 0x01e8, 0x01ee, + 0x01e5, 0x01f1, 0x01f4, 0x01f7, 0x01fa, 0x01eb, 0x0001, 0x001b, + 0x020b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x001b, 0x0214, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, + 0x0001, 0x001b, 0x0263, 0x0001, 0x001b, 0x026b, 0x0003, 0x020c, + 0x0217, 0x0201, 0x0002, 0x0204, 0x0208, 0x0002, 0x001b, 0x0271, + 0x0291, 0x0002, 0x001b, 0x027f, 0x029d, 0x0002, 0x020f, 0x0213, + 0x0002, 0x0009, 0x0078, 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, + // Entry FF00 - FF3F + 0x0001, 0x0219, 0x0002, 0x0002, 0x040a, 0x4c26, 0x0004, 0x022b, + 0x0225, 0x0222, 0x0228, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, + 0x03d9, 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, + 0x023c, 0x0236, 0x0233, 0x0239, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0004, 0x024d, 0x0247, 0x0244, 0x024a, 0x0001, 0x001b, 0x013f, + 0x0001, 0x001b, 0x013f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0259, 0x0260, + // Entry FF40 - FF7F + 0x0000, 0x9006, 0x0001, 0x025b, 0x0001, 0x025d, 0x0001, 0x0000, + 0x04ef, 0x0004, 0x026e, 0x0268, 0x0265, 0x026b, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0001, 0x1fb9, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0277, + 0x0001, 0x0279, 0x0001, 0x027b, 0x0001, 0x0000, 0x06c8, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0285, 0x0004, 0x0293, + 0x028d, 0x028a, 0x0290, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, + 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, 0x0012, 0x0203, 0x0005, + // Entry FF80 - FFBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x029c, 0x0001, 0x029e, 0x0001, + 0x02a0, 0x0002, 0x0000, 0x1a20, 0x2290, 0x0041, 0x02e6, 0x02eb, + 0x0000, 0x02f0, 0x0307, 0x0000, 0x031e, 0x0335, 0x0000, 0x034c, + 0x0363, 0x0000, 0x037a, 0x0395, 0x0000, 0x03ac, 0x03b1, 0x0000, + 0x03b6, 0x03cd, 0x0000, 0x03df, 0x03e4, 0x0000, 0x03e9, 0x03ee, + 0x0000, 0x03f3, 0x03f8, 0x0000, 0x03fd, 0x0411, 0x0425, 0x0439, + 0x044d, 0x0461, 0x0475, 0x0489, 0x049d, 0x04b1, 0x04c5, 0x04d9, + 0x04ed, 0x0501, 0x0515, 0x0529, 0x053d, 0x0551, 0x0565, 0x0579, + // Entry FFC0 - FFFF + 0x058d, 0x05a1, 0x05a7, 0x0000, 0x05ad, 0x05c3, 0x0000, 0x05d5, + 0x05eb, 0x0000, 0x05fd, 0x0613, 0x0000, 0x0629, 0x062e, 0x0001, + 0x02e8, 0x0001, 0x0001, 0x0040, 0x0001, 0x02ed, 0x0001, 0x0001, + 0x0040, 0x0003, 0x02f4, 0x02f7, 0x02fc, 0x0001, 0x001b, 0x02a8, + 0x0003, 0x0000, 0x1a3e, 0x1a48, 0x1a52, 0x0002, 0x02ff, 0x0303, + 0x0002, 0x001b, 0x02b9, 0x02ad, 0x0002, 0x001b, 0x02d3, 0x02c6, + 0x0003, 0x030b, 0x030e, 0x0313, 0x0001, 0x001b, 0x02e1, 0x0003, + 0x001b, 0x02e5, 0x02ee, 0x02f7, 0x0002, 0x0316, 0x031a, 0x0002, + // Entry 10000 - 1003F + 0x001b, 0x0300, 0x0300, 0x0002, 0x001b, 0x030b, 0x030b, 0x0003, + 0x0322, 0x0325, 0x032a, 0x0001, 0x001b, 0x0317, 0x0003, 0x0000, + 0x1a72, 0x1a7f, 0x1a8c, 0x0002, 0x032d, 0x0331, 0x0002, 0x001b, + 0x032e, 0x031f, 0x0002, 0x001b, 0x034e, 0x033e, 0x0003, 0x0339, + 0x033c, 0x0341, 0x0001, 0x001b, 0x035f, 0x0003, 0x001b, 0x0364, + 0x036e, 0x0378, 0x0002, 0x0344, 0x0348, 0x0002, 0x001b, 0x038e, + 0x0382, 0x0002, 0x001b, 0x03a8, 0x039b, 0x0003, 0x0350, 0x0353, + 0x0358, 0x0001, 0x001b, 0x03b6, 0x0003, 0x0000, 0x1aad, 0x1ab8, + // Entry 10040 - 1007F + 0x1ac3, 0x0002, 0x035b, 0x035f, 0x0002, 0x001b, 0x03c9, 0x03bc, + 0x0002, 0x001b, 0x03e5, 0x03d7, 0x0003, 0x0367, 0x036a, 0x036f, + 0x0001, 0x001b, 0x03f4, 0x0003, 0x001b, 0x03f8, 0x0401, 0x040a, + 0x0002, 0x0372, 0x0376, 0x0002, 0x001b, 0x0413, 0x0413, 0x0002, + 0x001b, 0x041e, 0x041e, 0x0004, 0x037f, 0x0382, 0x0387, 0x0392, + 0x0001, 0x0001, 0x019c, 0x0003, 0x0000, 0x1ae1, 0x1aeb, 0x1af5, + 0x0002, 0x038a, 0x038e, 0x0002, 0x001b, 0x0436, 0x042a, 0x0002, + 0x001b, 0x0450, 0x0443, 0x0001, 0x0000, 0x1b0d, 0x0003, 0x0399, + // Entry 10080 - 100BF + 0x039c, 0x03a1, 0x0001, 0x0001, 0x0213, 0x0003, 0x001b, 0x045e, + 0x0467, 0x0470, 0x0002, 0x03a4, 0x03a8, 0x0002, 0x001b, 0x0479, + 0x0479, 0x0002, 0x001b, 0x0484, 0x0484, 0x0001, 0x03ae, 0x0001, + 0x001b, 0x0490, 0x0001, 0x03b3, 0x0001, 0x001b, 0x049e, 0x0003, + 0x03ba, 0x03bd, 0x03c2, 0x0001, 0x001b, 0x04a9, 0x0003, 0x0000, + 0x1b2f, 0x1b39, 0x1b3f, 0x0002, 0x03c5, 0x03c9, 0x0002, 0x001b, + 0x04b8, 0x04ad, 0x0002, 0x001b, 0x04d0, 0x04c4, 0x0003, 0x03d1, + 0x0000, 0x03d4, 0x0001, 0x001b, 0x04a9, 0x0002, 0x03d7, 0x03db, + // Entry 100C0 - 100FF + 0x0002, 0x001b, 0x04b8, 0x04ad, 0x0002, 0x001b, 0x04d0, 0x04c4, + 0x0001, 0x03e1, 0x0001, 0x001b, 0x04dd, 0x0001, 0x03e6, 0x0001, + 0x001b, 0x04e9, 0x0001, 0x03eb, 0x0001, 0x001b, 0x04f4, 0x0001, + 0x03f0, 0x0001, 0x001b, 0x0504, 0x0001, 0x03f5, 0x0001, 0x001b, + 0x050f, 0x0001, 0x03fa, 0x0001, 0x001b, 0x0524, 0x0003, 0x0000, + 0x0401, 0x0406, 0x0003, 0x0000, 0x1b83, 0x1b8f, 0x1b9b, 0x0002, + 0x0409, 0x040d, 0x0002, 0x001b, 0x0540, 0x0532, 0x0002, 0x001b, + 0x055e, 0x054f, 0x0003, 0x0000, 0x0415, 0x041a, 0x0003, 0x001b, + // Entry 10100 - 1013F + 0x056e, 0x0578, 0x0582, 0x0002, 0x041d, 0x0421, 0x0002, 0x001b, + 0x058c, 0x058c, 0x0002, 0x001b, 0x0598, 0x0598, 0x0003, 0x0000, + 0x0429, 0x042e, 0x0003, 0x001b, 0x05a5, 0x05ad, 0x05b5, 0x0002, + 0x0431, 0x0435, 0x0002, 0x001b, 0x05bd, 0x05bd, 0x0002, 0x001b, + 0x05c7, 0x05c7, 0x0003, 0x0000, 0x043d, 0x0442, 0x0003, 0x0000, + 0x1bc1, 0x1bcd, 0x1bd9, 0x0002, 0x0445, 0x0449, 0x0002, 0x001b, + 0x05e0, 0x05d2, 0x0002, 0x001b, 0x05fe, 0x05ef, 0x0003, 0x0000, + 0x0451, 0x0456, 0x0003, 0x001b, 0x060e, 0x0618, 0x0622, 0x0002, + // Entry 10140 - 1017F + 0x0459, 0x045d, 0x0002, 0x001b, 0x062c, 0x062c, 0x0002, 0x001b, + 0x0638, 0x0638, 0x0003, 0x0000, 0x0465, 0x046a, 0x0003, 0x001b, + 0x0645, 0x064c, 0x0653, 0x0002, 0x046d, 0x0471, 0x0002, 0x001b, + 0x065a, 0x065a, 0x0002, 0x001b, 0x0663, 0x0663, 0x0003, 0x0000, + 0x0479, 0x047e, 0x0003, 0x0000, 0x1bff, 0x1c0c, 0x1c19, 0x0002, + 0x0481, 0x0485, 0x0002, 0x001b, 0x067c, 0x066d, 0x0002, 0x001b, + 0x069c, 0x068c, 0x0003, 0x0000, 0x048d, 0x0492, 0x0003, 0x001b, + 0x06ad, 0x06b7, 0x06c1, 0x0002, 0x0495, 0x0499, 0x0002, 0x001b, + // Entry 10180 - 101BF + 0x06cb, 0x06cb, 0x0002, 0x001b, 0x06d7, 0x06d7, 0x0003, 0x0000, + 0x04a1, 0x04a6, 0x0003, 0x001b, 0x06e4, 0x06ec, 0x06f4, 0x0002, + 0x04a9, 0x04ad, 0x0002, 0x001b, 0x06fc, 0x06fc, 0x0002, 0x001b, + 0x0706, 0x0706, 0x0003, 0x0000, 0x04b5, 0x04ba, 0x0003, 0x0000, + 0x1c42, 0x1c51, 0x1c60, 0x0002, 0x04bd, 0x04c1, 0x0002, 0x001b, + 0x0722, 0x0711, 0x0002, 0x001b, 0x0746, 0x0734, 0x0003, 0x0000, + 0x04c9, 0x04ce, 0x0003, 0x001b, 0x0759, 0x0763, 0x076d, 0x0002, + 0x04d1, 0x04d5, 0x0002, 0x001b, 0x0777, 0x0777, 0x0002, 0x001b, + // Entry 101C0 - 101FF + 0x0783, 0x0783, 0x0003, 0x0000, 0x04dd, 0x04e2, 0x0003, 0x001b, + 0x0790, 0x0797, 0x079e, 0x0002, 0x04e5, 0x04e9, 0x0002, 0x001b, + 0x07a5, 0x07a5, 0x0002, 0x001b, 0x07ae, 0x07ae, 0x0003, 0x0000, + 0x04f1, 0x04f6, 0x0003, 0x0000, 0x1c8f, 0x1c9d, 0x1cab, 0x0002, + 0x04f9, 0x04fd, 0x0002, 0x001b, 0x07c8, 0x07b8, 0x0002, 0x001b, + 0x07ea, 0x07d9, 0x0003, 0x0000, 0x0505, 0x050a, 0x0003, 0x001b, + 0x07fc, 0x0806, 0x0810, 0x0002, 0x050d, 0x0511, 0x0002, 0x001b, + 0x081a, 0x081a, 0x0002, 0x001b, 0x0826, 0x0826, 0x0003, 0x0000, + // Entry 10200 - 1023F + 0x0519, 0x051e, 0x0003, 0x001b, 0x0833, 0x083b, 0x0843, 0x0002, + 0x0521, 0x0525, 0x0002, 0x001b, 0x084b, 0x084b, 0x0002, 0x001b, + 0x0855, 0x0855, 0x0003, 0x0000, 0x052d, 0x0532, 0x0003, 0x0000, + 0x1cd7, 0x1ce3, 0x1cef, 0x0002, 0x0535, 0x0539, 0x0002, 0x001b, + 0x086e, 0x0860, 0x0002, 0x001b, 0x088c, 0x087d, 0x0003, 0x0000, + 0x0541, 0x0546, 0x0003, 0x001b, 0x089c, 0x08a6, 0x08b0, 0x0002, + 0x0549, 0x054d, 0x0002, 0x001b, 0x08ba, 0x08ba, 0x0002, 0x001b, + 0x08c6, 0x08c6, 0x0003, 0x0000, 0x0555, 0x055a, 0x0003, 0x001b, + // Entry 10240 - 1027F + 0x08d3, 0x08da, 0x08e1, 0x0002, 0x055d, 0x0561, 0x0002, 0x001b, + 0x08e8, 0x08e8, 0x0002, 0x001b, 0x08f1, 0x08f1, 0x0003, 0x0000, + 0x0569, 0x056e, 0x0003, 0x0000, 0x1d15, 0x1d23, 0x1d31, 0x0002, + 0x0571, 0x0575, 0x0002, 0x001b, 0x090b, 0x08fb, 0x0002, 0x001b, + 0x092d, 0x091c, 0x0003, 0x0000, 0x057d, 0x0582, 0x0003, 0x001b, + 0x093f, 0x0949, 0x0953, 0x0002, 0x0585, 0x0589, 0x0002, 0x001b, + 0x095d, 0x095d, 0x0002, 0x001b, 0x0969, 0x0969, 0x0003, 0x0000, + 0x0591, 0x0596, 0x0003, 0x001b, 0x0976, 0x097e, 0x0986, 0x0002, + // Entry 10280 - 102BF + 0x0599, 0x059d, 0x0002, 0x001b, 0x098e, 0x098e, 0x0002, 0x001b, + 0x0998, 0x0998, 0x0001, 0x05a3, 0x0002, 0x0007, 0x07cc, 0x2388, + 0x0001, 0x05a9, 0x0002, 0x0007, 0x07cc, 0x2388, 0x0003, 0x05b1, + 0x05b4, 0x05b8, 0x0001, 0x001b, 0x09a3, 0x0002, 0x0000, 0xffff, + 0x1d6c, 0x0002, 0x05bb, 0x05bf, 0x0002, 0x001b, 0x09b4, 0x09a8, + 0x0002, 0x001b, 0x09ce, 0x09c1, 0x0003, 0x05c7, 0x0000, 0x05ca, + 0x0001, 0x001b, 0x09dc, 0x0002, 0x05cd, 0x05d1, 0x0002, 0x001b, + 0x09e0, 0x09e0, 0x0002, 0x001b, 0x09eb, 0x09eb, 0x0003, 0x05d9, + // Entry 102C0 - 102FF + 0x05dc, 0x05e0, 0x0001, 0x001b, 0x09f7, 0x0002, 0x0000, 0xffff, + 0x1d8b, 0x0002, 0x05e3, 0x05e7, 0x0002, 0x001b, 0x0a0c, 0x09fe, + 0x0002, 0x001b, 0x0a2a, 0x0a1b, 0x0003, 0x05ef, 0x0000, 0x05f2, + 0x0001, 0x0001, 0x075a, 0x0002, 0x05f5, 0x05f9, 0x0002, 0x001b, + 0x0a3a, 0x0a3a, 0x0002, 0x001b, 0x0a46, 0x0a46, 0x0003, 0x0601, + 0x0604, 0x0608, 0x0001, 0x001b, 0x0a53, 0x0002, 0x000d, 0xffff, + 0x3182, 0x0002, 0x060b, 0x060f, 0x0002, 0x001b, 0x0a68, 0x0a5a, + 0x0002, 0x001b, 0x0a86, 0x0a77, 0x0003, 0x0617, 0x061a, 0x061e, + // Entry 10300 - 1033F + 0x0001, 0x001b, 0x0a96, 0x0002, 0x000d, 0xffff, 0x3182, 0x0002, + 0x0621, 0x0625, 0x0002, 0x001b, 0x0a9b, 0x0a9b, 0x0002, 0x001b, + 0x0aa7, 0x0aa7, 0x0001, 0x062b, 0x0001, 0x001b, 0x0ab4, 0x0001, + 0x0630, 0x0001, 0x001b, 0x0abe, 0x0004, 0x0638, 0x063c, 0x0641, + 0x0666, 0x0002, 0x0000, 0x1dc7, 0x22ce, 0x0003, 0x001b, 0x0ac3, + 0x0acc, 0x0ade, 0x0002, 0x0650, 0x0644, 0x0003, 0x0000, 0x064b, + 0x0648, 0x0001, 0x001b, 0x0af0, 0x0003, 0x001b, 0xffff, 0x0b0b, + 0x0b1f, 0x0003, 0x0654, 0x0660, 0x065a, 0x0004, 0x0006, 0xffff, + // Entry 10340 - 1037F + 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, + 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a8, 0x0002, + 0x084d, 0x0669, 0x0003, 0x066d, 0x07ad, 0x070d, 0x009e, 0x001b, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0bb2, 0x0bf5, 0x0c5f, 0x0c93, + 0x0ccc, 0x0d05, 0x0d41, 0x0d7a, 0x0dae, 0x0e43, 0x0e7c, 0x0eb9, + 0x0f0e, 0x0f45, 0x0f81, 0x0fda, 0x104c, 0x10a5, 0x10fe, 0x113e, + 0x1172, 0xffff, 0xffff, 0x11cb, 0xffff, 0x121c, 0xffff, 0x127e, + 0x12b7, 0x12e8, 0x131b, 0xffff, 0xffff, 0x1384, 0x13be, 0x1409, + // Entry 10380 - 103BF + 0xffff, 0xffff, 0xffff, 0x146c, 0xffff, 0x14c2, 0x1514, 0xffff, + 0x1584, 0x15d6, 0x1628, 0xffff, 0xffff, 0xffff, 0xffff, 0x16a6, + 0xffff, 0xffff, 0x1706, 0x1752, 0xffff, 0xffff, 0x17d0, 0x1821, + 0x185e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1906, + 0x1936, 0x196d, 0x19a3, 0x19d6, 0xffff, 0xffff, 0x1a6a, 0xffff, + 0x1aac, 0xffff, 0xffff, 0x1b1b, 0xffff, 0x1ba1, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1c19, 0xffff, 0x1c62, 0x1cb6, 0x1d07, 0x1d47, + 0xffff, 0xffff, 0xffff, 0x1d9e, 0x1de7, 0x1e2c, 0xffff, 0xffff, + // Entry 103C0 - 103FF + 0x1e92, 0x1f08, 0x1f4b, 0x1f79, 0xffff, 0xffff, 0x1fd4, 0x200e, + 0x203c, 0xffff, 0x2091, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2174, 0x21ae, 0x21e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x228a, 0xffff, 0xffff, 0x22dd, 0xffff, 0x2319, + 0xffff, 0x236b, 0x23a2, 0x23e2, 0xffff, 0x2428, 0x246b, 0xffff, + 0xffff, 0xffff, 0x24da, 0x2511, 0xffff, 0xffff, 0x0b33, 0x0c2b, + 0x0dde, 0x0e0f, 0xffff, 0xffff, 0x1b5a, 0x211d, 0x009e, 0x001b, + 0x0b61, 0x0b72, 0x0b86, 0x0b97, 0x0bc3, 0x0c01, 0x0c6b, 0x0ca0, + // Entry 10400 - 1043F + 0x0cd9, 0x0d13, 0x0d4e, 0x0d86, 0x0db8, 0x0e50, 0x0e8b, 0x0ed0, + 0x0f1b, 0x0f53, 0x0f98, 0x0ffa, 0x1063, 0x10bc, 0x110e, 0x114a, + 0x1182, 0x11b2, 0x11be, 0x11d9, 0x1205, 0x122c, 0x1267, 0x128b, + 0x12c2, 0x12f3, 0x132b, 0x135b, 0x1371, 0x1392, 0x13d0, 0x1413, + 0x1439, 0x1444, 0x145c, 0x147f, 0x14b5, 0x14d8, 0x152a, 0x1566, + 0x159a, 0x15ec, 0x1632, 0x1656, 0x1669, 0x168a, 0x1699, 0x16b3, + 0x16dd, 0x16f2, 0x171a, 0x1766, 0x17b1, 0x17c4, 0x17e5, 0x1830, + 0x1868, 0x188c, 0x18a0, 0x18b2, 0x18c1, 0x18d8, 0x18ef, 0x1910, + // Entry 10440 - 1047F + 0x1943, 0x1979, 0x19ae, 0x19f4, 0x1a40, 0x1a55, 0x1a76, 0x1aa0, + 0x1abd, 0x1aef, 0x1b09, 0x1b2a, 0x1b8b, 0x1bae, 0x1bd8, 0x1be6, + 0x1bf4, 0x1c03, 0x1c28, 0x1c56, 0x1c78, 0x1ccb, 0x1d17, 0x1d53, + 0x1d7b, 0x1d88, 0x1d93, 0x1db1, 0x1df8, 0x1e3e, 0x1e74, 0x1e7e, + 0x1eab, 0x1f19, 0x1f55, 0x1f87, 0x1fb3, 0x1fbe, 0x1fe2, 0x2018, + 0x204c, 0x207c, 0x20ac, 0x20f4, 0x2102, 0x210e, 0x215a, 0x2167, + 0x2182, 0x21ba, 0x21ed, 0x2215, 0x2225, 0x223d, 0x2252, 0x2265, + 0x2273, 0x227e, 0x2296, 0x22c0, 0x22d0, 0x22e8, 0x230e, 0x232b, + // Entry 10480 - 104BF + 0x235f, 0x2378, 0x23b2, 0x23ef, 0x2419, 0x2439, 0x247a, 0x24a8, + 0x24b4, 0x24c5, 0x24e7, 0x2524, 0x179e, 0x1eed, 0x0b3d, 0x0c37, + 0x0de9, 0x0e1b, 0x125c, 0x1afe, 0x1b65, 0x212c, 0x009e, 0x001b, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0bdd, 0x0c16, 0x0c80, 0x0cb6, + 0x0cef, 0x0d2a, 0x0d64, 0x0d9b, 0x0dcb, 0x0e66, 0x0ea3, 0x0ef0, + 0x0f31, 0x0f6a, 0x0fb9, 0x1023, 0x1084, 0x10dd, 0x1127, 0x115f, + 0x119b, 0xffff, 0xffff, 0x11f0, 0xffff, 0x1245, 0xffff, 0x12a1, + 0x12d6, 0x1307, 0x1344, 0xffff, 0xffff, 0x13a9, 0x13eb, 0x1426, + // Entry 104C0 - 104FF + 0xffff, 0xffff, 0xffff, 0x149b, 0xffff, 0x14f7, 0x1549, 0xffff, + 0x15b9, 0x160b, 0x1645, 0xffff, 0xffff, 0xffff, 0xffff, 0x16c9, + 0xffff, 0xffff, 0x1737, 0x1783, 0xffff, 0xffff, 0x1803, 0x1848, + 0x187b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1923, + 0x1959, 0x198e, 0x19c2, 0x1a1b, 0xffff, 0xffff, 0x1a8b, 0xffff, + 0x1ad7, 0xffff, 0xffff, 0x1b42, 0xffff, 0x1bc4, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1c40, 0xffff, 0x1c97, 0x1ce9, 0x1d30, 0x1d68, + 0xffff, 0xffff, 0xffff, 0x1dcd, 0x1e12, 0x1e59, 0xffff, 0xffff, + // Entry 10500 - 1053F + 0x1ecd, 0x1f33, 0x1f68, 0x1f9e, 0xffff, 0xffff, 0x1ff9, 0x202b, + 0x2065, 0xffff, 0x20d0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2199, 0x21cf, 0x2201, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x22ab, 0xffff, 0xffff, 0x22fc, 0xffff, 0x2346, + 0xffff, 0x238e, 0x23cb, 0x2405, 0xffff, 0x2453, 0x2492, 0xffff, + 0xffff, 0xffff, 0x24fd, 0x2540, 0xffff, 0xffff, 0x0b50, 0x0c4c, + 0x0dfd, 0x0e30, 0xffff, 0xffff, 0x1b79, 0x2144, 0x0003, 0x0851, + 0x08d3, 0x0892, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10540 - 1057F + 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16e2, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, + // Entry 10580 - 105BF + 0xffff, 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x276d, 0xffff, + 0xffff, 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, + // Entry 105C0 - 105FF + 0xffff, 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, + 0x097c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0004, 0x005b, + // Entry 10600 - 1063F + 0x0265, 0x0008, 0x0000, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0027, 0x0041, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, + 0x0001, 0x001c, 0x0000, 0x0001, 0x001c, 0x0012, 0x0001, 0x001c, + 0x001e, 0x0001, 0x001c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0030, 0x0000, 0x0000, 0x0004, 0x003e, 0x0038, + 0x0035, 0x003b, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x0000, + // Entry 10640 - 1067F + 0x0000, 0x0000, 0x0000, 0x0000, 0x004a, 0x0000, 0x0000, 0x0004, + 0x0058, 0x0052, 0x004f, 0x0055, 0x0001, 0x0005, 0x0773, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, + 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x009b, 0x00ad, 0x0000, + 0x00bc, 0x00ce, 0x0000, 0x00e0, 0x00f2, 0x0000, 0x0104, 0x0116, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0128, 0x0137, 0x0000, 0x0146, 0x0155, 0x0000, 0x0164, 0x0173, + // Entry 10680 - 106BF + 0x0000, 0x0182, 0x0191, 0x0000, 0x01a0, 0x01af, 0x0000, 0x01be, + 0x01cd, 0x0000, 0x01dc, 0x01eb, 0x0000, 0x01fa, 0x0000, 0x0000, + 0x01ff, 0x0211, 0x0000, 0x0220, 0x0232, 0x0000, 0x0244, 0x0256, + 0x0003, 0x009f, 0x0000, 0x00a2, 0x0001, 0x001c, 0x002e, 0x0002, + 0x00a5, 0x00a9, 0x0002, 0x001c, 0x0031, 0x0031, 0x0002, 0x001c, + 0x003b, 0x003b, 0x0003, 0x0000, 0x0000, 0x00b1, 0x0002, 0x00b4, + 0x00b8, 0x0002, 0x001c, 0x0031, 0x0031, 0x0002, 0x001c, 0x003b, + 0x003b, 0x0003, 0x00c0, 0x0000, 0x00c3, 0x0001, 0x001c, 0x0046, + // Entry 106C0 - 106FF + 0x0002, 0x00c6, 0x00ca, 0x0002, 0x001c, 0x004a, 0x004a, 0x0002, + 0x001c, 0x0055, 0x0055, 0x0003, 0x00d2, 0x0000, 0x00d5, 0x0001, + 0x001c, 0x0046, 0x0002, 0x00d8, 0x00dc, 0x0002, 0x001c, 0x004a, + 0x004a, 0x0002, 0x001c, 0x0055, 0x0055, 0x0003, 0x00e4, 0x0000, + 0x00e7, 0x0001, 0x001c, 0x0061, 0x0002, 0x00ea, 0x00ee, 0x0002, + 0x001c, 0x0064, 0x0064, 0x0002, 0x001c, 0x006e, 0x006e, 0x0003, + 0x00f6, 0x0000, 0x00f9, 0x0001, 0x001c, 0x0061, 0x0002, 0x00fc, + 0x0100, 0x0002, 0x001c, 0x0064, 0x0064, 0x0002, 0x001c, 0x006e, + // Entry 10700 - 1073F + 0x006e, 0x0003, 0x0108, 0x0000, 0x010b, 0x0001, 0x001c, 0x0079, + 0x0002, 0x010e, 0x0112, 0x0002, 0x001c, 0x007c, 0x007c, 0x0002, + 0x001c, 0x0086, 0x0086, 0x0003, 0x011a, 0x0000, 0x011d, 0x0001, + 0x001c, 0x0079, 0x0002, 0x0120, 0x0124, 0x0002, 0x001c, 0x007c, + 0x007c, 0x0002, 0x001c, 0x0086, 0x0086, 0x0003, 0x0000, 0x0000, + 0x012c, 0x0002, 0x012f, 0x0133, 0x0002, 0x001b, 0x0540, 0x0532, + 0x0002, 0x001b, 0x055e, 0x054f, 0x0003, 0x0000, 0x0000, 0x013b, + 0x0002, 0x013e, 0x0142, 0x0002, 0x001b, 0x0540, 0x0532, 0x0002, + // Entry 10740 - 1077F + 0x001b, 0x055e, 0x054f, 0x0003, 0x0000, 0x0000, 0x014a, 0x0002, + 0x014d, 0x0151, 0x0002, 0x001b, 0x05e0, 0x05d2, 0x0002, 0x001b, + 0x05fe, 0x05ef, 0x0003, 0x0000, 0x0000, 0x0159, 0x0002, 0x015c, + 0x0160, 0x0002, 0x001b, 0x05e0, 0x05d2, 0x0002, 0x001b, 0x05fe, + 0x05ef, 0x0003, 0x0000, 0x0000, 0x0168, 0x0002, 0x016b, 0x016f, + 0x0002, 0x001b, 0x067c, 0x066d, 0x0002, 0x001b, 0x069c, 0x068c, + 0x0003, 0x0000, 0x0000, 0x0177, 0x0002, 0x017a, 0x017e, 0x0002, + 0x001b, 0x067c, 0x066d, 0x0002, 0x001b, 0x069c, 0x068c, 0x0003, + // Entry 10780 - 107BF + 0x0000, 0x0000, 0x0186, 0x0002, 0x0189, 0x018d, 0x0002, 0x001b, + 0x0722, 0x0711, 0x0002, 0x001b, 0x0746, 0x0734, 0x0003, 0x0000, + 0x0000, 0x0195, 0x0002, 0x0198, 0x019c, 0x0002, 0x001b, 0x0722, + 0x0711, 0x0002, 0x001b, 0x0746, 0x0734, 0x0003, 0x0000, 0x0000, + 0x01a4, 0x0002, 0x01a7, 0x01ab, 0x0002, 0x001b, 0x07c8, 0x07b8, + 0x0002, 0x001b, 0x07ea, 0x07d9, 0x0003, 0x0000, 0x0000, 0x01b3, + 0x0002, 0x01b6, 0x01ba, 0x0002, 0x001b, 0x07c8, 0x07b8, 0x0002, + 0x001b, 0x07ea, 0x07d9, 0x0003, 0x0000, 0x0000, 0x01c2, 0x0002, + // Entry 107C0 - 107FF + 0x01c5, 0x01c9, 0x0002, 0x001b, 0x086e, 0x0860, 0x0002, 0x001b, + 0x088c, 0x087d, 0x0003, 0x0000, 0x0000, 0x01d1, 0x0002, 0x01d4, + 0x01d8, 0x0002, 0x001b, 0x086e, 0x0860, 0x0002, 0x001b, 0x088c, + 0x087d, 0x0003, 0x0000, 0x0000, 0x01e0, 0x0002, 0x01e3, 0x01e7, + 0x0002, 0x001b, 0x090b, 0x08fb, 0x0002, 0x001b, 0x092d, 0x091c, + 0x0003, 0x0000, 0x0000, 0x01ef, 0x0002, 0x01f2, 0x01f6, 0x0002, + 0x001b, 0x090b, 0x08fb, 0x0002, 0x001b, 0x092d, 0x091c, 0x0001, + 0x01fc, 0x0001, 0x0007, 0x2388, 0x0003, 0x0203, 0x0000, 0x0206, + // Entry 10800 - 1083F + 0x0001, 0x001c, 0x0091, 0x0002, 0x0209, 0x020d, 0x0002, 0x001c, + 0x0094, 0x0094, 0x0002, 0x001c, 0x009e, 0x009e, 0x0003, 0x0000, + 0x0000, 0x0215, 0x0002, 0x0218, 0x021c, 0x0002, 0x001c, 0x0094, + 0x0094, 0x0002, 0x001c, 0x009e, 0x009e, 0x0003, 0x0224, 0x0000, + 0x0227, 0x0001, 0x000b, 0x1250, 0x0002, 0x022a, 0x022e, 0x0002, + 0x001c, 0x00a9, 0x00a9, 0x0002, 0x001c, 0x00b4, 0x00b4, 0x0003, + 0x0236, 0x0000, 0x0239, 0x0001, 0x000b, 0x1250, 0x0002, 0x023c, + 0x0240, 0x0002, 0x001c, 0x00a9, 0x00a9, 0x0002, 0x001c, 0x00b4, + // Entry 10840 - 1087F + 0x00b4, 0x0003, 0x0248, 0x0000, 0x024b, 0x0001, 0x001c, 0x00c0, + 0x0002, 0x024e, 0x0252, 0x0002, 0x001c, 0x00c4, 0x00c4, 0x0002, + 0x001c, 0x00cf, 0x00cf, 0x0003, 0x0000, 0x0000, 0x025a, 0x0002, + 0x025d, 0x0261, 0x0002, 0x001c, 0x00c4, 0x00c4, 0x0002, 0x001c, + 0x00cf, 0x00cf, 0x0004, 0x0000, 0x0000, 0x026a, 0x0282, 0x0001, + 0x026c, 0x0003, 0x0270, 0x027c, 0x0276, 0x0004, 0x001c, 0xffff, + 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, + 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, 0x00db, 0x0001, + // Entry 10880 - 108BF + 0x0284, 0x0003, 0x0288, 0x030a, 0x02c9, 0x003f, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, 0x00db, + 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 108C0 - 108FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, + 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10900 - 1093F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10940 - 1097F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, + 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, 0x0031, 0x0097, + 0x0064, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10980 - 109BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 109C0 - 109FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10A00 - 10A3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, + 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, + 0x0121, 0x016a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 10A40 - 10A7F + 0x0000, 0x000d, 0x0016, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x001d, 0x0042, 0x0000, + 0x007e, 0x0000, 0x011c, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, + 0x000d, 0x0000, 0xffff, 0x1e22, 0x233d, 0x2342, 0x2347, 0x234c, + 0x1e3a, 0x1e3f, 0x2350, 0x2355, 0x235a, 0x235f, 0x2364, 0x0001, + 0x0033, 0x000d, 0x0000, 0xffff, 0x1e22, 0x233d, 0x2342, 0x2347, + 0x234c, 0x1e3a, 0x1e3f, 0x2350, 0x2355, 0x235a, 0x235f, 0x2364, + 0x0002, 0x0045, 0x0066, 0x0005, 0x004b, 0x0054, 0x0000, 0x0000, + // Entry 10A80 - 10ABF + 0x005d, 0x0007, 0x001c, 0x00e5, 0x00ea, 0x00ef, 0x00f4, 0x00f9, + 0x00fe, 0x0103, 0x0007, 0x001c, 0x0108, 0x010c, 0x010f, 0x0113, + 0x0116, 0x011a, 0x011d, 0x0007, 0x001c, 0x0108, 0x00ea, 0x010f, + 0x00f4, 0x0116, 0x00fe, 0x0103, 0x0005, 0x0000, 0x006c, 0x0000, + 0x0000, 0x0075, 0x0007, 0x001c, 0x0108, 0x010c, 0x010f, 0x0113, + 0x0116, 0x011a, 0x011d, 0x0007, 0x001c, 0x0108, 0x00ea, 0x010f, + 0x00f4, 0x0116, 0x00fe, 0x0103, 0x0002, 0x0081, 0x00e8, 0x0003, + 0x0085, 0x00a6, 0x00c7, 0x0008, 0x0091, 0x0097, 0x008e, 0x009a, + // Entry 10AC0 - 10AFF + 0x009d, 0x00a0, 0x00a3, 0x0094, 0x0001, 0x001b, 0x020b, 0x0001, + 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, 0x0000, 0x233a, + 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, 0x0001, 0x001b, + 0x0263, 0x0001, 0x001b, 0x026b, 0x0008, 0x00b2, 0x00b8, 0x00af, + 0x00bb, 0x00be, 0x00c1, 0x00c4, 0x00b5, 0x0001, 0x001b, 0x020b, + 0x0001, 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, 0x0000, + 0x233a, 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, 0x0001, + 0x001b, 0x0263, 0x0001, 0x001b, 0x026b, 0x0008, 0x00d3, 0x00d9, + // Entry 10B00 - 10B3F + 0x00d0, 0x00dc, 0x00df, 0x00e2, 0x00e5, 0x00d6, 0x0001, 0x001b, + 0x020b, 0x0001, 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, + 0x0000, 0x233a, 0x0001, 0x001b, 0x0219, 0x0001, 0x001b, 0x0228, + 0x0001, 0x001b, 0x0239, 0x0001, 0x001b, 0x0248, 0x0003, 0x00ec, + 0x00f8, 0x010a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00f5, 0x0001, 0x001c, 0x0121, 0x0008, 0x0101, + 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0001, + 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, 0x0000, 0x233a, + // Entry 10B40 - 10B7F + 0x0008, 0x0113, 0x0119, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0116, 0x0001, 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, + 0x0000, 0x233a, 0x0001, 0x011e, 0x0001, 0x0005, 0x1394, 0x0038, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x015a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 10B80 - 10BBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0165, + 0x0003, 0x0000, 0x0000, 0x015e, 0x0002, 0x0000, 0x0161, 0x0002, + 0x001c, 0x0138, 0x0128, 0x0001, 0x0167, 0x0001, 0x0000, 0x2143, + 0x0004, 0x0000, 0x0000, 0x0000, 0x016f, 0x0002, 0x0305, 0x0172, + 0x0003, 0x01fb, 0x0280, 0x0176, 0x0083, 0x001c, 0xffff, 0xffff, + 0x0146, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0166, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10BC0 - 10BFF + 0x01a8, 0xffff, 0x0221, 0x0289, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x02ea, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0327, 0xffff, 0xffff, 0xffff, 0x0358, 0xffff, 0xffff, 0xffff, + // Entry 10C00 - 10C3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x039a, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x03dd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x040f, 0x0083, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10C40 - 10C7F + 0x015a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0190, 0xffff, 0x0209, + 0x0271, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x02d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x031c, 0xffff, 0xffff, + // Entry 10C80 - 10CBF + 0xffff, 0x034d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x038e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03d2, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0403, 0x0083, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10CC0 - 10CFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x017b, 0xffff, 0xffff, + 0xffff, 0xffff, 0x01c9, 0xffff, 0x0242, 0x02aa, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0304, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10D00 - 10D3F + 0xffff, 0xffff, 0x033b, 0xffff, 0xffff, 0xffff, 0x036d, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03af, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x03f1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0424, 0x0003, 0x0309, 0x03d7, 0x0370, 0x0065, + // Entry 10D40 - 10D7F + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x01ea, 0x01f8, 0x0263, 0x02cb, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10D80 - 10DBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0380, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03c4, 0x0065, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x01ee, 0x01fd, 0x0267, 0x02cf, 0xffff, 0xffff, + // Entry 10DC0 - 10DFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0384, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10E00 - 10E3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x03c8, 0x0065, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x01f3, 0x0203, 0x026c, 0x02d4, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 10E40 - 10E7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0389, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x03cd, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001c, 0x0008, + // Entry 10E80 - 10EBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0019, 0x0001, 0x0000, 0x1e17, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025, 0x0030, + 0x0000, 0x0004, 0x002d, 0x0000, 0x0000, 0x002a, 0x0001, 0x0001, + 0x0037, 0x0001, 0x0014, 0x146e, 0x0004, 0x003e, 0x0038, 0x0035, + 0x003b, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, + 0x004f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 10EC0 - 10EFF + 0x000d, 0x0024, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0000, 0x0000, 0x0004, 0x0000, 0x001e, 0x001b, 0x0021, + 0x0001, 0x0010, 0x0003, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x0000, + 0x1e17, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, + 0x003e, 0x0000, 0x0004, 0x003b, 0x0035, 0x0032, 0x0038, 0x0001, + 0x0001, 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, 0x0001, 0x0037, + 0x0001, 0x0014, 0x146e, 0x0004, 0x004c, 0x0046, 0x0043, 0x0049, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + // Entry 10F00 - 10F3F + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0054, 0x0001, 0x0056, 0x0003, 0x0061, 0x0068, 0x005a, 0x0005, + 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, + 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0022, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, + 0x0004, 0x0000, 0x001c, 0x0019, 0x001f, 0x0001, 0x0010, 0x0003, + // Entry 10F40 - 10F7F + 0x0001, 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x002b, 0x003c, 0x0000, 0x0004, + 0x0039, 0x0033, 0x0030, 0x0036, 0x0001, 0x0001, 0x001d, 0x0001, + 0x0001, 0x002d, 0x0001, 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, + 0x0004, 0x004a, 0x0044, 0x0041, 0x0047, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0003, 0x0004, 0x005e, 0x01e6, 0x0008, 0x0000, 0x000d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0028, 0x0043, 0x0008, 0x0000, + // Entry 10F80 - 10FBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x001b, 0x0110, 0x0001, + 0x001b, 0x0123, 0x0001, 0x001b, 0x0130, 0x0002, 0x0000, 0x03be, + 0x2369, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0031, + 0x0000, 0x0000, 0x0004, 0x003f, 0x0039, 0x0036, 0x003c, 0x0001, + 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, 0x000c, 0x001e, + 0x0002, 0x0000, 0x04af, 0x236f, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x004c, 0x0000, 0x0000, 0x0004, 0x005a, 0x0054, + // Entry 10FC0 - 10FFF + 0x0051, 0x0057, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, + 0x0001, 0x000c, 0x03e3, 0x0002, 0x0000, 0x051c, 0x237b, 0x003e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x009d, 0x0000, 0x0000, 0x0000, + 0x00ac, 0x0000, 0x00bb, 0x00ca, 0x0000, 0x00d9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ec, + 0x00f6, 0x0000, 0x0105, 0x0114, 0x0000, 0x0123, 0x0132, 0x0000, + 0x0141, 0x0150, 0x0000, 0x015f, 0x016e, 0x0000, 0x017d, 0x018c, + // Entry 11000 - 1103F + 0x0000, 0x019b, 0x01aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x01b9, + 0x0000, 0x0000, 0x01c8, 0x0000, 0x0000, 0x01d7, 0x0003, 0x0000, + 0x0000, 0x00a1, 0x0002, 0x00a4, 0x00a8, 0x0002, 0x001b, 0x255a, + 0x0300, 0x0002, 0x001b, 0x2566, 0x030b, 0x0003, 0x0000, 0x0000, + 0x00b0, 0x0002, 0x00b3, 0x00b7, 0x0002, 0x001b, 0x0382, 0x0382, + 0x0002, 0x001b, 0x039b, 0x039b, 0x0003, 0x0000, 0x0000, 0x00bf, + 0x0002, 0x00c2, 0x00c6, 0x0002, 0x001b, 0x2573, 0x0413, 0x0002, + 0x001b, 0x257f, 0x041e, 0x0003, 0x0000, 0x0000, 0x00ce, 0x0002, + // Entry 11040 - 1107F + 0x00d1, 0x00d5, 0x0002, 0x001b, 0x2573, 0x0413, 0x0002, 0x001b, + 0x257f, 0x041e, 0x0004, 0x0000, 0x0000, 0x00de, 0x00e9, 0x0002, + 0x00e1, 0x00e5, 0x0002, 0x001b, 0x258c, 0x0479, 0x0002, 0x001b, + 0x2598, 0x0484, 0x0001, 0x001c, 0x044b, 0x0003, 0x0000, 0x0000, + 0x00f0, 0x0001, 0x00f2, 0x0002, 0x001b, 0x25a5, 0x058c, 0x0003, + 0x0000, 0x0000, 0x00fa, 0x0002, 0x00fd, 0x0101, 0x0002, 0x001b, + 0x25b5, 0x05bd, 0x0002, 0x001b, 0x25c3, 0x05c7, 0x0003, 0x0000, + 0x0000, 0x0109, 0x0002, 0x010c, 0x0110, 0x0002, 0x001b, 0x25d2, + // Entry 11080 - 110BF + 0x062c, 0x0002, 0x001b, 0x25e2, 0x0638, 0x0003, 0x0000, 0x0000, + 0x0118, 0x0002, 0x011b, 0x011f, 0x0002, 0x001b, 0x25f3, 0x065a, + 0x0002, 0x001b, 0x2600, 0x0663, 0x0003, 0x0000, 0x0000, 0x0127, + 0x0002, 0x012a, 0x012e, 0x0002, 0x001b, 0x260e, 0x06cb, 0x0002, + 0x001b, 0x261e, 0x06d7, 0x0003, 0x0000, 0x0000, 0x0136, 0x0002, + 0x0139, 0x013d, 0x0002, 0x001b, 0x262f, 0x06fc, 0x0002, 0x001b, + 0x263d, 0x0706, 0x0003, 0x0000, 0x0000, 0x0145, 0x0002, 0x0148, + 0x014c, 0x0002, 0x001b, 0x264c, 0x0777, 0x0002, 0x001b, 0x265c, + // Entry 110C0 - 110FF + 0x0783, 0x0003, 0x0000, 0x0000, 0x0154, 0x0002, 0x0157, 0x015b, + 0x0002, 0x001b, 0x266d, 0x07a5, 0x0002, 0x001b, 0x267a, 0x07ae, + 0x0003, 0x0000, 0x0000, 0x0163, 0x0002, 0x0166, 0x016a, 0x0002, + 0x001b, 0x2688, 0x081a, 0x0002, 0x001b, 0x2698, 0x0826, 0x0003, + 0x0000, 0x0000, 0x0172, 0x0002, 0x0175, 0x0179, 0x0002, 0x001b, + 0x26a8, 0x084b, 0x0002, 0x001b, 0x26b6, 0x0855, 0x0003, 0x0000, + 0x0000, 0x0181, 0x0002, 0x0184, 0x0188, 0x0002, 0x001b, 0x26c5, + 0x08ba, 0x0002, 0x001b, 0x26d5, 0x08c6, 0x0003, 0x0000, 0x0000, + // Entry 11100 - 1113F + 0x0190, 0x0002, 0x0193, 0x0197, 0x0002, 0x001b, 0x26e6, 0x08e8, + 0x0002, 0x001b, 0x26f3, 0x08f1, 0x0003, 0x0000, 0x0000, 0x019f, + 0x0002, 0x01a2, 0x01a6, 0x0002, 0x001b, 0x2701, 0x095d, 0x0002, + 0x001b, 0x2711, 0x0969, 0x0003, 0x0000, 0x0000, 0x01ae, 0x0002, + 0x01b1, 0x01b5, 0x0002, 0x001b, 0x2722, 0x098e, 0x0002, 0x001b, + 0x2730, 0x0998, 0x0003, 0x0000, 0x0000, 0x01bd, 0x0002, 0x01c0, + 0x01c4, 0x0002, 0x001b, 0x273f, 0x09e0, 0x0002, 0x001b, 0x274b, + 0x09eb, 0x0003, 0x0000, 0x0000, 0x01cc, 0x0002, 0x01cf, 0x01d3, + // Entry 11140 - 1117F + 0x0002, 0x001b, 0x2758, 0x0a3a, 0x0002, 0x001b, 0x2765, 0x0a46, + 0x0003, 0x0000, 0x0000, 0x01db, 0x0002, 0x01de, 0x01e2, 0x0002, + 0x001b, 0x2773, 0x0a9b, 0x0002, 0x001b, 0x2780, 0x0aa7, 0x0004, + 0x0000, 0x0000, 0x01eb, 0x0203, 0x0001, 0x01ed, 0x0003, 0x01f1, + 0x01fd, 0x01f7, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, + 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, + 0xffff, 0xffff, 0xffff, 0x05a8, 0x0001, 0x0205, 0x0003, 0x0209, + 0x02d9, 0x0271, 0x0066, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11180 - 111BF + 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 111C0 - 111FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2771, 0x0066, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11200 - 1123F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16e6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11240 - 1127F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2774, 0x0066, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, 0x097c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11280 - 112BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16eb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2778, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + // Entry 112C0 - 112FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, + // Entry 11300 - 1133F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, + 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, + 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, + 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, + // Entry 11340 - 1137F + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, + 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, + // Entry 11380 - 113BF + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x001d, 0x0000, 0x0004, 0x002b, 0x0025, + 0x0022, 0x0028, 0x0001, 0x0015, 0x0210, 0x0001, 0x0015, 0x021e, + 0x0001, 0x0015, 0x0229, 0x0001, 0x0015, 0x0232, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + // Entry 113C0 - 113FF + 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0000, 0x0004, + 0x002b, 0x0025, 0x0022, 0x0028, 0x0001, 0x001c, 0x045a, 0x0001, + // Entry 11400 - 1143F + 0x001c, 0x0467, 0x0001, 0x001c, 0x0471, 0x0001, 0x001c, 0x0479, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0062, + 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0010, 0x0000, 0x0000, 0x0059, 0x0008, 0x0000, 0x0000, 0x0000, + // Entry 11440 - 1147F + 0x0019, 0x0000, 0x0000, 0x0048, 0x0000, 0x0002, 0x001c, 0x0032, + 0x0003, 0x0020, 0x0000, 0x0029, 0x0002, 0x0023, 0x0026, 0x0001, + 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x002c, 0x002f, + 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0003, 0x0036, + 0x0000, 0x003f, 0x0002, 0x0039, 0x003c, 0x0001, 0x0000, 0x2337, + 0x0001, 0x0000, 0x233a, 0x0002, 0x0042, 0x0045, 0x0001, 0x0000, + 0x2337, 0x0001, 0x0000, 0x233a, 0x0004, 0x0056, 0x0050, 0x004d, + 0x0053, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + // Entry 11480 - 114BF + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0004, 0x0000, + 0x0000, 0x0067, 0x0070, 0x0001, 0x0069, 0x0002, 0x0000, 0x006c, + 0x0002, 0x001c, 0xffff, 0x047e, 0x0001, 0x0072, 0x0003, 0x0076, + 0x00dc, 0x00a9, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 114C0 - 114FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11500 - 1153F + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + // Entry 11540 - 1157F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, + 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, + 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, + 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, + 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + // Entry 11580 - 115BF + 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, + 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, + 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, + 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, + // Entry 115C0 - 115FF + 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, + 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, + 0x0000, 0x000f, 0x001f, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0482, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, + // Entry 11600 - 1163F + 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, + 0x0000, 0x000f, 0x003e, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11640 - 1167F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0487, 0x0003, 0x0004, 0x0000, 0x0035, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, + 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x018e, + 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0005, + 0x0827, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, + 0x0000, 0x0000, 0x0001, 0x0032, 0x0001, 0x0002, 0x01fb, 0x0004, + // Entry 11680 - 116BF + 0x0000, 0x0000, 0x0000, 0x003a, 0x0001, 0x003c, 0x0003, 0x0040, + 0x00c4, 0x0082, 0x0040, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 116C0 - 116FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x048b, 0x0040, 0x001c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11700 - 1173F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x048b, 0x0040, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11740 - 1177F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x048f, + 0x0003, 0x0004, 0x0000, 0x004d, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x001d, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0003, 0x0000, + 0x0000, 0x001a, 0x0001, 0x0001, 0x1f7d, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0026, 0x0000, 0x0035, 0x003c, 0x0000, 0x0001, 0x0028, + 0x0003, 0x0000, 0x0000, 0x002c, 0x0002, 0x002f, 0x0032, 0x0001, + // Entry 11780 - 117BF + 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x0000, 0x0000, + 0x0039, 0x0001, 0x0001, 0x1fa2, 0x0004, 0x004a, 0x0044, 0x0041, + 0x0047, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, + 0x0052, 0x0000, 0x0001, 0x0054, 0x0002, 0x0000, 0x0057, 0x0003, + 0x000b, 0xffff, 0xffff, 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 117C0 - 117FF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, + 0x0000, 0x0004, 0x002b, 0x0025, 0x0022, 0x0028, 0x0001, 0x0005, + 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, + 0x0005, 0x00a1, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, + // Entry 11800 - 1183F + 0x0000, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000d, 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0000, 0x0000, 0x001b, + 0x001e, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x001c, 0x0437, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0000, 0x0000, + 0x0004, 0x0035, 0x0000, 0x002f, 0x0032, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, 0x0004, 0x0000, + 0x0000, 0x0000, 0x003d, 0x0001, 0x003f, 0x0003, 0x0000, 0x0000, + // Entry 11840 - 1187F + 0x0043, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11880 - 118BF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, + 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, + // Entry 118C0 - 118FF + 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, + 0x0000, 0x0001, 0x0016, 0x0001, 0x0000, 0x236f, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0022, 0x0000, 0x0000, 0x0001, + 0x0024, 0x0001, 0x0000, 0x237b, 0x0003, 0x0004, 0x0000, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 11900 - 1193F + 0x000d, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, + 0x002d, 0x0003, 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0901, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + // Entry 11940 - 1197F + 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, + 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + // Entry 11980 - 119BF + 0xffff, 0x0901, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, + 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, + 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 119C0 - 119FF + 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, + 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0009, + 0x0021, 0x0001, 0x000b, 0x0003, 0x000f, 0x001b, 0x0015, 0x0004, + 0x001c, 0xffff, 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, + 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, + 0x00db, 0x0001, 0x0023, 0x0003, 0x0027, 0x00a9, 0x0068, 0x003f, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11A00 - 11A3F + 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x003f, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0xffff, 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, + // Entry 11A40 - 11A7F + 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0x003f, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0xffff, 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, + // Entry 11A80 - 11ABF + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x000f, 0x014d, + // Entry 11AC0 - 11AFF + 0x00ae, 0x009d, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11B00 - 11B3F + 0xffff, 0xffff, 0x048b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11B40 - 11B7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x049e, + 0x009d, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11B80 - 11BBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x048b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11BC0 - 11BFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x049e, 0x009d, + // Entry 11C00 - 11C3F + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11C40 - 11C7F + 0x048f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11C80 - 11CBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04a2, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0009, 0x0021, 0x0001, + 0x000b, 0x0003, 0x000f, 0x001b, 0x0015, 0x0004, 0x001c, 0xffff, + 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, + 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, 0x00db, 0x0001, + // Entry 11CC0 - 11CFF + 0x0023, 0x0003, 0x0027, 0x00a9, 0x0068, 0x003f, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, 0x00db, + 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11D00 - 11D3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, + 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11D40 - 11D7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11D80 - 11DBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001f, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, + // Entry 11DC0 - 11DFF + 0x0004, 0x0000, 0x0019, 0x0000, 0x001c, 0x0001, 0x0000, 0x1e0b, + 0x0001, 0x0000, 0x1e17, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0028, 0x0033, 0x0000, 0x0004, 0x0000, 0x002d, 0x0000, + 0x0030, 0x0001, 0x0001, 0x002d, 0x0001, 0x0001, 0x0037, 0x0004, + 0x0041, 0x003b, 0x0038, 0x003e, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, + // Entry 11E00 - 11E3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, + 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, 0x0038, 0x003f, + 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + // Entry 11E40 - 11E7F + 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0901, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, 0x0000, + 0x000f, 0x0057, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11E80 - 11EBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11EC0 - 11EFF + 0xffff, 0x04a6, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, + 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, + // Entry 11F00 - 11F3F + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, + 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 11F40 - 11F7F + 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, + 0x0000, 0x0035, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 11F80 - 11FBF + 0x0000, 0x000d, 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x001e, 0x0000, 0x0000, + 0x001b, 0x0001, 0x001c, 0x04aa, 0x0001, 0x001c, 0x04b3, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0000, 0x0000, + 0x0004, 0x0032, 0x0000, 0x0000, 0x002f, 0x0001, 0x001c, 0x04c0, + 0x0001, 0x001c, 0x04c7, 0x0004, 0x0000, 0x0000, 0x0000, 0x003a, + 0x0001, 0x003c, 0x0003, 0x0040, 0x010e, 0x00a7, 0x0065, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 11FC0 - 11FFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x01ea, 0x01f8, 0x0263, 0x02cb, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04cf, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 12000 - 1203F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0380, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x03c4, 0x0065, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x01ee, 0x01fd, 0x0267, 0x02cf, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04d4, 0xffff, + // Entry 12040 - 1207F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0384, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 12080 - 120BF + 0xffff, 0xffff, 0xffff, 0x03c8, 0x0065, 0x001c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x01f3, 0x0203, 0x026c, 0x02d4, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04da, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 120C0 - 120FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0389, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x03cd, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001c, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0004, + // Entry 12100 - 1213F + 0x0000, 0x0000, 0x0000, 0x0019, 0x0001, 0x001c, 0x0437, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025, 0x0000, 0x0000, + 0x0004, 0x0000, 0x0000, 0x0000, 0x002a, 0x0001, 0x001c, 0x0442, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0026, + // Entry 12140 - 1217F + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, + 0x002d, 0x0003, 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + // Entry 12180 - 121BF + 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + // Entry 121C0 - 121FF + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0001, 0x0016, + 0x0001, 0x001c, 0x04e0, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0022, 0x0000, 0x0000, 0x0001, 0x0024, 0x0001, 0x0000, + 0x051c, 0x0003, 0x0004, 0x0029, 0x0073, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x001b, 0x0008, 0x0000, + // Entry 12200 - 1223F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0001, + 0x0018, 0x0001, 0x0005, 0x0827, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0024, 0x0000, 0x0000, 0x0001, 0x0026, 0x0001, + 0x0000, 0x237b, 0x000e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0038, + 0x0000, 0x0000, 0x0040, 0x0000, 0x0000, 0x0054, 0x0000, 0x0000, + 0x006b, 0x0002, 0x0000, 0x003b, 0x0003, 0x001c, 0x04ea, 0x04f2, + 0x04fa, 0x0003, 0x0000, 0x0044, 0x0049, 0x0003, 0x001c, 0x0502, + 0x050b, 0x0514, 0x0002, 0x004c, 0x0050, 0x0002, 0x001c, 0x051d, + // Entry 12240 - 1227F + 0x004a, 0x0002, 0x001c, 0x0529, 0x0055, 0x0003, 0x0058, 0x005b, + 0x0060, 0x0001, 0x001c, 0x0536, 0x0003, 0x001c, 0x053a, 0x0543, + 0x054c, 0x0002, 0x0063, 0x0067, 0x0002, 0x001c, 0x0555, 0x0555, + 0x0002, 0x001c, 0x0560, 0x0560, 0x0002, 0x0000, 0x006e, 0x0003, + 0x001c, 0x056c, 0x0574, 0x057c, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0078, 0x0001, 0x007a, 0x0003, 0x0000, 0x0000, 0x007e, 0x007d, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 12280 - 122BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 122C0 - 122FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04a6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0584, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 12300 - 1233F + 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, + 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + // Entry 12340 - 1237F + 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0000, + // Entry 12380 - 123BF + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, + 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + // Entry 123C0 - 123FF + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, + // Entry 12400 - 1243F + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, + 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, + 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, + 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, + 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, + // Entry 12440 - 1247F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, + 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, 0x0038, 0x003f, + 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0004, + 0x0000, 0x0052, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 12480 - 124BF + 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, + 0x0021, 0x0001, 0x0010, 0x0003, 0x0001, 0x0000, 0x1e0b, 0x0001, + 0x0000, 0x1e17, 0x0001, 0x001c, 0x0588, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0030, 0x0041, 0x0000, 0x0004, 0x003e, + 0x0038, 0x0035, 0x003b, 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, + 0x002d, 0x0001, 0x0001, 0x0037, 0x0001, 0x001c, 0x0596, 0x0004, + 0x004f, 0x0049, 0x0046, 0x004c, 0x0001, 0x0000, 0x0524, 0x0001, + // Entry 124C0 - 124FF + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0057, 0x0001, 0x0059, 0x0003, + 0x0064, 0x006b, 0x005d, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, + 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, + 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, + 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, + 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, + // Entry 12500 - 1253F + 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0004, 0x0000, 0x0052, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0010, 0x0003, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x001c, 0x059e, + 0x0001, 0x0000, 0x236f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0030, 0x0041, 0x0000, 0x0004, 0x003e, 0x0038, 0x0035, + // Entry 12540 - 1257F + 0x003b, 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, + 0x001c, 0x05a9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x004f, 0x0049, + 0x0046, 0x004c, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0057, 0x0001, 0x0059, 0x0003, 0x0064, 0x006b, + 0x005d, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, + 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, + 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0004, + // Entry 12580 - 125BF + 0x0135, 0x0275, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, + 0x0021, 0x0001, 0x001c, 0x05b2, 0x0001, 0x001c, 0x05cc, 0x0001, + 0x001c, 0x05d8, 0x0001, 0x0000, 0x04af, 0x0008, 0x0030, 0x0077, + 0x00a6, 0x00cd, 0x00ee, 0x0113, 0x0124, 0x0000, 0x0002, 0x0033, + 0x0055, 0x0003, 0x0037, 0x0000, 0x0046, 0x000d, 0x000d, 0xffff, + 0x0059, 0x005d, 0x0061, 0x0065, 0x3175, 0x006d, 0x0071, 0x31ec, + // Entry 125C0 - 125FF + 0x0079, 0x007d, 0x0081, 0x0085, 0x000d, 0x001c, 0xffff, 0x05e3, + 0x05eb, 0x05f4, 0x05fa, 0x0601, 0x0606, 0x060c, 0x0612, 0x061b, + 0x0625, 0x062d, 0x0636, 0x0003, 0x0000, 0x0059, 0x0068, 0x000d, + 0x0000, 0xffff, 0x1e5d, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, + 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x001c, + 0xffff, 0x05e3, 0x05eb, 0x05f4, 0x05fa, 0x0601, 0x0606, 0x060c, + 0x0612, 0x061b, 0x0625, 0x062d, 0x0636, 0x0002, 0x007a, 0x0090, + 0x0003, 0x007e, 0x0000, 0x0087, 0x0007, 0x0018, 0x0000, 0x4a20, + // Entry 12600 - 1263F + 0x4a23, 0x4a26, 0x4a29, 0x4a2d, 0x4a30, 0x0007, 0x001c, 0x063f, + 0x0648, 0x064e, 0x0654, 0x065d, 0x0665, 0x066e, 0x0003, 0x0000, + 0x0094, 0x009d, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, + 0x2384, 0x1edb, 0x22dd, 0x0007, 0x001c, 0x063f, 0x0648, 0x064e, + 0x0654, 0x065d, 0x0665, 0x066e, 0x0002, 0x00a9, 0x00bb, 0x0003, + 0x00ad, 0x0000, 0x00b4, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, + 0x1f1d, 0x1f20, 0x0005, 0x001c, 0xffff, 0x0675, 0x0684, 0x0693, + 0x06a2, 0x0003, 0x0000, 0x00bf, 0x00c6, 0x0005, 0x0000, 0xffff, + // Entry 12640 - 1267F + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x001c, 0xffff, 0x0675, + 0x0684, 0x0693, 0x06a2, 0x0001, 0x00cf, 0x0003, 0x00d3, 0x00dc, + 0x00e5, 0x0002, 0x00d6, 0x00d9, 0x0001, 0x001c, 0x06b1, 0x0001, + 0x001c, 0x06b5, 0x0002, 0x00df, 0x00e2, 0x0001, 0x0000, 0x1f9c, + 0x0001, 0x0000, 0x21ec, 0x0002, 0x00e8, 0x00eb, 0x0001, 0x001c, + 0x06b1, 0x0001, 0x001c, 0x06b5, 0x0003, 0x00fd, 0x0108, 0x00f2, + 0x0002, 0x00f5, 0x00f9, 0x0002, 0x001c, 0x06b9, 0x06cf, 0x0002, + 0x001c, 0x06bc, 0x06d2, 0x0002, 0x0100, 0x0104, 0x0002, 0x001c, + // Entry 12680 - 126BF + 0x06b9, 0x06cf, 0x0002, 0x001c, 0x06de, 0x06e5, 0x0002, 0x010b, + 0x010f, 0x0002, 0x001c, 0x06b9, 0x06cf, 0x0002, 0x001c, 0x06ea, + 0x06ee, 0x0004, 0x0121, 0x011b, 0x0118, 0x011e, 0x0001, 0x001c, + 0x06f1, 0x0001, 0x001c, 0x0709, 0x0001, 0x001c, 0x0713, 0x0001, + 0x001c, 0x071c, 0x0004, 0x0132, 0x012c, 0x0129, 0x012f, 0x0001, + 0x001c, 0x0725, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0040, 0x0176, 0x0000, 0x0000, 0x017b, + 0x0000, 0x0000, 0x0192, 0x0000, 0x0000, 0x01a4, 0x0000, 0x0000, + // Entry 126C0 - 126FF + 0x01bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01e9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01ee, 0x0000, 0x0000, 0x01f6, 0x0000, 0x0000, + 0x01fe, 0x0000, 0x0000, 0x0206, 0x0000, 0x0000, 0x020e, 0x0000, + 0x0000, 0x0216, 0x0000, 0x0000, 0x021e, 0x0000, 0x0000, 0x0000, + 0x0226, 0x0000, 0x022b, 0x0000, 0x023d, 0x0242, 0x0000, 0x0254, + 0x0259, 0x0000, 0x026b, 0x0270, 0x0001, 0x0178, 0x0001, 0x001c, + 0x0742, 0x0003, 0x017f, 0x0182, 0x0187, 0x0001, 0x001c, 0x0747, + // Entry 12700 - 1273F + 0x0003, 0x001c, 0x074c, 0x0759, 0x0763, 0x0002, 0x018a, 0x018e, + 0x0002, 0x001c, 0x077e, 0x0770, 0x0002, 0x001c, 0x079d, 0x078d, + 0x0003, 0x0196, 0x0000, 0x0199, 0x0001, 0x001c, 0x07ae, 0x0002, + 0x019c, 0x01a0, 0x0002, 0x001c, 0x07cd, 0x07b9, 0x0002, 0x001c, + 0x07f8, 0x07e2, 0x0003, 0x01a8, 0x01ab, 0x01b0, 0x0001, 0x001c, + 0x080f, 0x0003, 0x001c, 0x0816, 0x0825, 0x0831, 0x0002, 0x01b3, + 0x01b7, 0x0002, 0x001c, 0x0850, 0x0840, 0x0002, 0x001c, 0x0873, + 0x0861, 0x0003, 0x01bf, 0x01c2, 0x01c7, 0x0001, 0x001c, 0x0886, + // Entry 12740 - 1277F + 0x0003, 0x001c, 0x088e, 0x089e, 0x08ab, 0x0002, 0x01ca, 0x01ce, + 0x0002, 0x001c, 0x08cc, 0x08bb, 0x0002, 0x001c, 0x08f1, 0x08de, + 0x0003, 0x01d6, 0x01d9, 0x01de, 0x0001, 0x001c, 0x0905, 0x0003, + 0x001c, 0x090a, 0x0912, 0x091a, 0x0002, 0x01e1, 0x01e5, 0x0002, + 0x001c, 0x0930, 0x0922, 0x0002, 0x001c, 0x094f, 0x093f, 0x0001, + 0x01eb, 0x0001, 0x001c, 0x0960, 0x0002, 0x0000, 0x01f1, 0x0003, + 0x001c, 0x0973, 0x0984, 0x0995, 0x0002, 0x0000, 0x01f9, 0x0003, + 0x001c, 0x09a6, 0x09b4, 0x09c2, 0x0002, 0x0000, 0x0201, 0x0003, + // Entry 12780 - 127BF + 0x001c, 0x09d0, 0x09de, 0x09ec, 0x0002, 0x0000, 0x0209, 0x0003, + 0x001c, 0x09fa, 0x0a0b, 0x0a1c, 0x0002, 0x0000, 0x0211, 0x0003, + 0x001c, 0x0a2d, 0x0a3d, 0x0a4d, 0x0002, 0x0000, 0x0219, 0x0003, + 0x001c, 0x0a5d, 0x0a6e, 0x0a7f, 0x0002, 0x0000, 0x0221, 0x0003, + 0x001c, 0x0a90, 0x0a9f, 0x0aae, 0x0001, 0x0228, 0x0001, 0x001c, + 0x0abd, 0x0003, 0x022f, 0x0000, 0x0232, 0x0001, 0x001c, 0x0ac5, + 0x0002, 0x0235, 0x0239, 0x0002, 0x001c, 0x0ad8, 0x0aca, 0x0002, + 0x001c, 0x0af7, 0x0ae7, 0x0001, 0x023f, 0x0001, 0x0000, 0x2143, + // Entry 127C0 - 127FF + 0x0003, 0x0246, 0x0000, 0x0249, 0x0001, 0x001c, 0x0b08, 0x0002, + 0x024c, 0x0250, 0x0002, 0x001c, 0x0b1f, 0x0b0f, 0x0002, 0x001c, + 0x0b42, 0x0b30, 0x0001, 0x0256, 0x0001, 0x0000, 0x1f9a, 0x0003, + 0x025d, 0x0000, 0x0260, 0x0001, 0x001c, 0x0b55, 0x0002, 0x0263, + 0x0267, 0x0002, 0x001c, 0x0b6e, 0x0b5d, 0x0002, 0x001c, 0x0b93, + 0x0b80, 0x0001, 0x026d, 0x0001, 0x0000, 0x2002, 0x0001, 0x0272, + 0x0001, 0x001c, 0x0ba7, 0x0004, 0x027a, 0x027f, 0x0000, 0x0284, + 0x0003, 0x001c, 0x0baf, 0x0bbf, 0x0bc6, 0x0003, 0x001c, 0x0bca, + // Entry 12800 - 1283F + 0x0bd7, 0x0beb, 0x0002, 0x0000, 0x0287, 0x0003, 0x02ed, 0x034f, + 0x028b, 0x0060, 0x001c, 0xffff, 0x0bfe, 0x0c12, 0x0c27, 0x0c50, + 0xffff, 0xffff, 0x0ca5, 0x0d01, 0x0d5d, 0x0db8, 0xffff, 0xffff, + 0x0e09, 0xffff, 0xffff, 0xffff, 0x0e4b, 0x0eaa, 0x0f07, 0x0f6d, + 0x0fc7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1016, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1050, 0x109d, 0xffff, 0x10ee, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 12840 - 1287F + 0xffff, 0xffff, 0xffff, 0xffff, 0x112b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1148, 0xffff, 0x1155, 0x1166, + 0x117d, 0x1195, 0xffff, 0xffff, 0x11bd, 0x11f3, 0xffff, 0xffff, + 0xffff, 0x1226, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1258, 0x0060, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0c39, 0xffff, 0xffff, 0x0c8b, 0x0ce6, 0x0d44, 0x0d9c, + 0xffff, 0xffff, 0x0dfd, 0xffff, 0xffff, 0xffff, 0x0e2e, 0x0e92, + // Entry 12880 - 128BF + 0x0ee7, 0x0f54, 0x0fac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x100a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x103b, 0x1087, 0xffff, 0x10d6, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x11af, 0x11e6, + 0xffff, 0xffff, 0xffff, 0x121a, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 128C0 - 128FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x124b, 0x0060, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0c6d, 0xffff, 0xffff, 0x0cc5, 0x0d22, + 0x0d7c, 0x0dda, 0xffff, 0xffff, 0x0e1b, 0xffff, 0xffff, 0xffff, + 0x0e6e, 0x0ec8, 0x0f2d, 0x0f8c, 0x0fe8, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1028, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x106b, 0x10b9, 0xffff, 0x110c, + // Entry 12900 - 1293F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x11d1, 0x1206, 0xffff, 0xffff, 0xffff, 0x1238, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x126b, 0x0003, + 0x0004, 0x02b4, 0x06b2, 0x0012, 0x0017, 0x0024, 0x0000, 0x0000, + 0x0000, 0x0000, 0x003e, 0x0069, 0x0275, 0x0000, 0x0282, 0x0000, + // Entry 12940 - 1297F + 0x0000, 0x0000, 0x0000, 0x028f, 0x0000, 0x02a7, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, + 0x0001, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x002d, 0x0000, 0x0000, 0x0004, 0x003b, 0x0035, 0x0032, + 0x0038, 0x0001, 0x001c, 0x127f, 0x0001, 0x0005, 0x04f4, 0x0001, + 0x0005, 0x04f4, 0x0001, 0x0005, 0x04f4, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0047, 0x0000, 0x0058, 0x0004, 0x0055, + 0x004f, 0x004c, 0x0052, 0x0001, 0x001c, 0x128b, 0x0001, 0x001c, + // Entry 12980 - 129BF + 0x12a6, 0x0001, 0x0010, 0x004c, 0x0001, 0x001c, 0x12bb, 0x0004, + 0x0066, 0x0060, 0x005d, 0x0063, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0072, 0x00d7, 0x012e, 0x0163, 0x0228, 0x0242, 0x0253, + 0x0264, 0x0002, 0x0075, 0x00a6, 0x0003, 0x0079, 0x0088, 0x0097, + 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, + 0x12dd, 0x12e2, 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x000d, + 0x0000, 0xffff, 0x214e, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, + // Entry 129C0 - 129FF + 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x001c, + 0xffff, 0x1301, 0x1307, 0x130f, 0x1315, 0x131b, 0x0606, 0x060c, + 0x1320, 0x1327, 0x1332, 0x133a, 0x1344, 0x0003, 0x00aa, 0x00b9, + 0x00c8, 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, + 0x12d8, 0x12dd, 0x12e2, 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, + 0x000d, 0x0000, 0xffff, 0x214e, 0x22e6, 0x22d9, 0x2382, 0x22d9, + 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, + 0x001c, 0xffff, 0x1301, 0x1307, 0x130f, 0x1315, 0x131b, 0x0606, + // Entry 12A00 - 12A3F + 0x060c, 0x1320, 0x1327, 0x1332, 0x133a, 0x1344, 0x0002, 0x00da, + 0x0104, 0x0005, 0x00e0, 0x00e9, 0x00fb, 0x0000, 0x00f2, 0x0007, + 0x001c, 0x134e, 0x1353, 0x12ce, 0x1358, 0x135e, 0x1363, 0x1368, + 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x2068, 0x1e5d, 0x1edb, + 0x22dd, 0x0007, 0x001c, 0x136e, 0x1371, 0x1374, 0x1377, 0x137a, + 0x137d, 0x1380, 0x0007, 0x001c, 0x1383, 0x138b, 0x1391, 0x1398, + 0x13a3, 0x13aa, 0x13b2, 0x0005, 0x010a, 0x0113, 0x0125, 0x0000, + 0x011c, 0x0007, 0x001c, 0x134e, 0x1353, 0x12ce, 0x1358, 0x135e, + // Entry 12A40 - 12A7F + 0x1363, 0x1368, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x2068, + 0x1e5d, 0x1edb, 0x22dd, 0x0007, 0x001c, 0x136e, 0x1371, 0x1374, + 0x1377, 0x137a, 0x137d, 0x1380, 0x0007, 0x001c, 0x1383, 0x138b, + 0x1391, 0x1398, 0x13a3, 0x13aa, 0x13b2, 0x0002, 0x0131, 0x014a, + 0x0003, 0x0135, 0x013c, 0x0143, 0x0005, 0x001c, 0xffff, 0x13ba, + 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x001c, 0xffff, 0x13c6, 0x13d5, 0x13e4, + 0x13f3, 0x0003, 0x014e, 0x0155, 0x015c, 0x0005, 0x001c, 0xffff, + // Entry 12A80 - 12ABF + 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x001c, 0xffff, 0x13c6, 0x13d5, + 0x13e4, 0x13f3, 0x0002, 0x0166, 0x01c7, 0x0003, 0x016a, 0x0189, + 0x01a8, 0x0009, 0x0174, 0x017a, 0x0000, 0x017d, 0x0000, 0x0183, + 0x0186, 0x0177, 0x0180, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, + 0x1402, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, 0x0001, + 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, + 0x0009, 0x0193, 0x0199, 0x0000, 0x019c, 0x0000, 0x01a2, 0x01a5, + // Entry 12AC0 - 12AFF + 0x0196, 0x019f, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, 0x1402, + 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, 0x0001, 0x0005, + 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, 0x0009, + 0x01b2, 0x01b8, 0x0000, 0x01bb, 0x0000, 0x01c1, 0x01c4, 0x01b5, + 0x01be, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, 0x1402, 0x0001, + 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, 0x0001, 0x0005, 0x12e8, + 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, 0x0003, 0x01cb, + 0x01ea, 0x0209, 0x0009, 0x01d5, 0x01db, 0x0000, 0x01de, 0x0000, + // Entry 12B00 - 12B3F + 0x01e4, 0x01e7, 0x01d8, 0x01e1, 0x0001, 0x0010, 0x0268, 0x0001, + 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1436, + 0x0001, 0x0005, 0x1302, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, + 0x1440, 0x0009, 0x01f4, 0x01fa, 0x0000, 0x01fd, 0x0000, 0x0203, + 0x0206, 0x01f7, 0x0200, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, + 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1436, 0x0001, + 0x0005, 0x1302, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, 0x1440, + 0x0009, 0x0213, 0x0219, 0x0000, 0x021c, 0x0000, 0x0222, 0x0225, + // Entry 12B40 - 12B7F + 0x0216, 0x021f, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, 0x142c, + 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1436, 0x0001, 0x0005, + 0x1302, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, 0x1440, 0x0003, + 0x0237, 0x0000, 0x022c, 0x0002, 0x022f, 0x0233, 0x0002, 0x001c, + 0x1446, 0x146d, 0x0002, 0x001c, 0x1456, 0x1480, 0x0002, 0x023a, + 0x023e, 0x0002, 0x001c, 0x148b, 0x149a, 0x0002, 0x001c, 0x1491, + 0x14a0, 0x0004, 0x0250, 0x024a, 0x0247, 0x024d, 0x0001, 0x001c, + 0x14a6, 0x0001, 0x001c, 0x14bf, 0x0001, 0x0001, 0x1fb9, 0x0001, + // Entry 12B80 - 12BBF + 0x0000, 0x237b, 0x0004, 0x0261, 0x025b, 0x0258, 0x025e, 0x0001, + 0x001c, 0x14d2, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, + 0x0001, 0x0005, 0x00a1, 0x0004, 0x0272, 0x026c, 0x0269, 0x026f, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x027b, 0x0001, 0x027d, 0x0001, 0x027f, 0x0001, 0x0000, + 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0288, 0x0001, + 0x028a, 0x0001, 0x028c, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, + // Entry 12BC0 - 12BFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0296, 0x0004, 0x02a4, 0x029e, + 0x029b, 0x02a1, 0x0001, 0x001c, 0x128b, 0x0001, 0x001c, 0x12a6, + 0x0001, 0x0010, 0x02f4, 0x0001, 0x001c, 0x14e1, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x02ad, 0x0001, 0x02af, 0x0001, 0x02b1, + 0x0001, 0x001c, 0x14f0, 0x0040, 0x02f5, 0x0000, 0x0000, 0x02fa, + 0x0311, 0x0328, 0x033f, 0x0356, 0x0368, 0x037a, 0x0391, 0x03a8, + 0x03bf, 0x03da, 0x03f0, 0x0000, 0x0000, 0x0000, 0x0406, 0x041f, + 0x0438, 0x0000, 0x0000, 0x0000, 0x0451, 0x0000, 0x0000, 0x0000, + // Entry 12C00 - 12C3F + 0x0000, 0x0000, 0x0456, 0x046a, 0x047e, 0x0492, 0x04a6, 0x04ba, + 0x04ce, 0x04e2, 0x04f6, 0x050a, 0x051e, 0x0532, 0x0546, 0x055a, + 0x056e, 0x0582, 0x0596, 0x05aa, 0x05be, 0x05d2, 0x05e6, 0x0000, + 0x05fa, 0x0000, 0x05ff, 0x0615, 0x0627, 0x0639, 0x064f, 0x0661, + 0x0673, 0x0689, 0x069b, 0x06ad, 0x0001, 0x02f7, 0x0001, 0x0001, + 0x0040, 0x0003, 0x02fe, 0x0301, 0x0306, 0x0001, 0x001c, 0x1500, + 0x0003, 0x001c, 0x1505, 0x1514, 0x151e, 0x0002, 0x0309, 0x030d, + 0x0002, 0x001c, 0x1542, 0x152f, 0x0002, 0x001c, 0x1564, 0x1556, + // Entry 12C40 - 12C7F + 0x0003, 0x0315, 0x0318, 0x031d, 0x0001, 0x0000, 0x1f9c, 0x0003, + 0x001c, 0x1505, 0x1514, 0x151e, 0x0002, 0x0320, 0x0324, 0x0002, + 0x001c, 0x1573, 0x1573, 0x0002, 0x001c, 0x1583, 0x1583, 0x0003, + 0x032c, 0x032f, 0x0334, 0x0001, 0x0000, 0x1f9c, 0x0003, 0x001c, + 0x1505, 0x1514, 0x151e, 0x0002, 0x0337, 0x033b, 0x0002, 0x001c, + 0x1573, 0x1573, 0x0002, 0x001c, 0x1583, 0x1583, 0x0003, 0x0343, + 0x0346, 0x034b, 0x0001, 0x0005, 0x1c6d, 0x0003, 0x001c, 0x158e, + 0x15a2, 0x15b1, 0x0002, 0x034e, 0x0352, 0x0002, 0x001c, 0x15df, + // Entry 12C80 - 12CBF + 0x15c7, 0x0002, 0x001c, 0x160b, 0x15f8, 0x0003, 0x035a, 0x0000, + 0x035d, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0360, 0x0364, 0x0002, + 0x001c, 0x161f, 0x161f, 0x0002, 0x001c, 0x1633, 0x1633, 0x0003, + 0x036c, 0x0000, 0x036f, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0372, + 0x0376, 0x0002, 0x001c, 0x161f, 0x161f, 0x0002, 0x001c, 0x1633, + 0x1633, 0x0003, 0x037e, 0x0381, 0x0386, 0x0001, 0x0005, 0x1006, + 0x0003, 0x001c, 0x1642, 0x1650, 0x1659, 0x0002, 0x0389, 0x038d, + 0x0002, 0x001c, 0x167b, 0x1669, 0x0002, 0x001c, 0x169c, 0x168f, + // Entry 12CC0 - 12CFF + 0x0003, 0x0395, 0x0398, 0x039d, 0x0001, 0x0000, 0x1f9a, 0x0003, + 0x001c, 0x1642, 0x1650, 0x1659, 0x0002, 0x03a0, 0x03a4, 0x0002, + 0x001c, 0x16ab, 0x16ab, 0x0002, 0x001c, 0x16bb, 0x16bb, 0x0003, + 0x03ac, 0x03af, 0x03b4, 0x0001, 0x0000, 0x1f9a, 0x0003, 0x001c, + 0x1642, 0x1650, 0x1659, 0x0002, 0x03b7, 0x03bb, 0x0002, 0x001c, + 0x16ab, 0x16ab, 0x0002, 0x001c, 0x16bb, 0x16bb, 0x0004, 0x03c4, + 0x03c7, 0x03cc, 0x03d7, 0x0001, 0x001c, 0x16c6, 0x0003, 0x001c, + 0x16cd, 0x16de, 0x16ea, 0x0002, 0x03cf, 0x03d3, 0x0002, 0x001c, + // Entry 12D00 - 12D3F + 0x1712, 0x16fd, 0x0002, 0x001c, 0x1738, 0x1728, 0x0001, 0x001c, + 0x1749, 0x0004, 0x03df, 0x0000, 0x03e2, 0x03ed, 0x0001, 0x001c, + 0x175b, 0x0002, 0x03e5, 0x03e9, 0x0002, 0x001c, 0x1760, 0x1760, + 0x0002, 0x001c, 0x1773, 0x1773, 0x0001, 0x001c, 0x1781, 0x0004, + 0x03f5, 0x0000, 0x03f8, 0x0403, 0x0001, 0x001c, 0x175b, 0x0002, + 0x03fb, 0x03ff, 0x0002, 0x001c, 0x1760, 0x1760, 0x0002, 0x001c, + 0x1773, 0x1773, 0x0001, 0x001c, 0x1781, 0x0003, 0x040a, 0x040d, + 0x0414, 0x0001, 0x0005, 0x1ece, 0x0005, 0x001c, 0x179a, 0x179f, + // Entry 12D40 - 12D7F + 0x17a3, 0x1791, 0x17ab, 0x0002, 0x0417, 0x041b, 0x0002, 0x001c, + 0x17cd, 0x17ba, 0x0002, 0x001c, 0x17ef, 0x17e1, 0x0003, 0x0423, + 0x0426, 0x042d, 0x0001, 0x0000, 0x2008, 0x0005, 0x001c, 0x179a, + 0x179f, 0x17a3, 0x1791, 0x17ab, 0x0002, 0x0430, 0x0434, 0x0002, + 0x001c, 0x17cd, 0x17ba, 0x0002, 0x001c, 0x17ef, 0x17e1, 0x0003, + 0x043c, 0x043f, 0x0446, 0x0001, 0x0000, 0x2008, 0x0005, 0x001c, + 0x179a, 0x179f, 0x17a3, 0x1791, 0x17ab, 0x0002, 0x0449, 0x044d, + 0x0002, 0x001c, 0x17cd, 0x17ba, 0x0002, 0x001c, 0x17ef, 0x17e1, + // Entry 12D80 - 12DBF + 0x0001, 0x0453, 0x0001, 0x001c, 0x17fe, 0x0003, 0x0000, 0x045a, + 0x045f, 0x0003, 0x001c, 0x1810, 0x1822, 0x182f, 0x0002, 0x0462, + 0x0466, 0x0002, 0x001c, 0x1859, 0x1843, 0x0002, 0x001c, 0x1881, + 0x1870, 0x0003, 0x0000, 0x046e, 0x0473, 0x0003, 0x001c, 0x1893, + 0x18a2, 0x18ac, 0x0002, 0x0476, 0x047a, 0x0002, 0x001c, 0x18bd, + 0x18bd, 0x0002, 0x001c, 0x18d0, 0x18d0, 0x0003, 0x0000, 0x0482, + 0x0487, 0x0003, 0x001c, 0x18de, 0x18eb, 0x18f3, 0x0002, 0x048a, + 0x048e, 0x0002, 0x001c, 0x1902, 0x1902, 0x0002, 0x001c, 0x1913, + // Entry 12DC0 - 12DFF + 0x1913, 0x0003, 0x0000, 0x0496, 0x049b, 0x0003, 0x001c, 0x191f, + 0x192f, 0x193a, 0x0002, 0x049e, 0x04a2, 0x0002, 0x001c, 0x194c, + 0x194c, 0x0002, 0x001c, 0x1960, 0x1960, 0x0003, 0x0000, 0x04aa, + 0x04af, 0x0003, 0x001c, 0x196f, 0x197e, 0x1988, 0x0002, 0x04b2, + 0x04b6, 0x0002, 0x001c, 0x1999, 0x1999, 0x0002, 0x001c, 0x19ac, + 0x19ac, 0x0003, 0x0000, 0x04be, 0x04c3, 0x0003, 0x001c, 0x19ba, + 0x19c7, 0x19cf, 0x0002, 0x04c6, 0x04ca, 0x0002, 0x001c, 0x19de, + 0x19de, 0x0002, 0x001c, 0x19ef, 0x19ef, 0x0003, 0x0000, 0x04d2, + // Entry 12E00 - 12E3F + 0x04d7, 0x0003, 0x001c, 0x19fb, 0x1a0c, 0x1a18, 0x0002, 0x04da, + 0x04de, 0x0002, 0x001c, 0x1a2b, 0x1a2b, 0x0002, 0x001c, 0x1a40, + 0x1a40, 0x0003, 0x0000, 0x04e6, 0x04eb, 0x0003, 0x001c, 0x1a50, + 0x1a5f, 0x1a69, 0x0002, 0x04ee, 0x04f2, 0x0002, 0x001c, 0x1a7a, + 0x1a7a, 0x0002, 0x001c, 0x1a8d, 0x1a8d, 0x0003, 0x0000, 0x04fa, + 0x04ff, 0x0003, 0x001c, 0x1a9b, 0x1aa8, 0x1ab0, 0x0002, 0x0502, + 0x0506, 0x0002, 0x001c, 0x1abf, 0x1abf, 0x0002, 0x001c, 0x1ad0, + 0x1ad0, 0x0003, 0x0000, 0x050e, 0x0513, 0x0003, 0x001c, 0x1adc, + // Entry 12E40 - 12E7F + 0x1af1, 0x1b01, 0x0002, 0x0516, 0x051a, 0x0002, 0x001c, 0x1b18, + 0x1b18, 0x0002, 0x001c, 0x1b31, 0x1b31, 0x0003, 0x0000, 0x0522, + 0x0527, 0x0003, 0x001c, 0x1b45, 0x1b55, 0x1b60, 0x0002, 0x052a, + 0x052e, 0x0002, 0x001c, 0x1b72, 0x1b72, 0x0002, 0x001c, 0x1b86, + 0x1b86, 0x0003, 0x0000, 0x0536, 0x053b, 0x0003, 0x001c, 0x1b95, + 0x1ba2, 0x1baa, 0x0002, 0x053e, 0x0542, 0x0002, 0x001c, 0x1bb9, + 0x1bb9, 0x0002, 0x001c, 0x1bca, 0x1bca, 0x0003, 0x0000, 0x054a, + 0x054f, 0x0003, 0x001c, 0x1bd6, 0x1be7, 0x1bf3, 0x0002, 0x0552, + // Entry 12E80 - 12EBF + 0x0556, 0x0002, 0x001c, 0x1c06, 0x1c06, 0x0002, 0x001c, 0x1c1b, + 0x1c1b, 0x0003, 0x0000, 0x055e, 0x0563, 0x0003, 0x001c, 0x1c2b, + 0x1c3a, 0x1c44, 0x0002, 0x0566, 0x056a, 0x0002, 0x001c, 0x1c55, + 0x1c55, 0x0002, 0x001c, 0x1c68, 0x1c68, 0x0003, 0x0000, 0x0572, + 0x0577, 0x0003, 0x001c, 0x1c76, 0x1c83, 0x1c8b, 0x0002, 0x057a, + 0x057e, 0x0002, 0x001c, 0x1c9a, 0x1c9a, 0x0002, 0x001c, 0x1cab, + 0x1cab, 0x0003, 0x0000, 0x0586, 0x058b, 0x0003, 0x001c, 0x1cb7, + 0x1cc9, 0x1cd6, 0x0002, 0x058e, 0x0592, 0x0002, 0x001c, 0x1cea, + // Entry 12EC0 - 12EFF + 0x1cea, 0x0002, 0x001c, 0x1d00, 0x1d00, 0x0003, 0x0000, 0x059a, + 0x059f, 0x0003, 0x001c, 0x1d11, 0x1d20, 0x1d2a, 0x0002, 0x05a2, + 0x05a6, 0x0002, 0x001c, 0x1d3b, 0x1d3b, 0x0002, 0x001c, 0x1d4e, + 0x1d4e, 0x0003, 0x0000, 0x05ae, 0x05b3, 0x0003, 0x001c, 0x1d5c, + 0x1d69, 0x1d71, 0x0002, 0x05b6, 0x05ba, 0x0002, 0x001c, 0x1d80, + 0x1d80, 0x0002, 0x001c, 0x1d91, 0x1d91, 0x0003, 0x0000, 0x05c2, + 0x05c7, 0x0003, 0x001c, 0x1d9d, 0x1daf, 0x1dbc, 0x0002, 0x05ca, + 0x05ce, 0x0002, 0x001c, 0x1de6, 0x1dd0, 0x0002, 0x001c, 0x1e0e, + // Entry 12F00 - 12F3F + 0x1dfd, 0x0003, 0x0000, 0x05d6, 0x05db, 0x0003, 0x001c, 0x1e20, + 0x1e30, 0x1e3b, 0x0002, 0x05de, 0x05e2, 0x0002, 0x001c, 0x1e4d, + 0x1e4d, 0x0002, 0x001c, 0x1e61, 0x1e61, 0x0003, 0x0000, 0x05ea, + 0x05ef, 0x0003, 0x001c, 0x1e70, 0x1e7d, 0x1e85, 0x0002, 0x05f2, + 0x05f6, 0x0002, 0x001c, 0x1e94, 0x1e94, 0x0002, 0x001c, 0x1ea5, + 0x1ea5, 0x0001, 0x05fc, 0x0001, 0x0010, 0x0aed, 0x0003, 0x0603, + 0x0606, 0x060a, 0x0001, 0x0006, 0x03db, 0x0002, 0x0006, 0xffff, + 0x03e0, 0x0002, 0x060d, 0x0611, 0x0002, 0x001c, 0x1ec4, 0x1eb1, + // Entry 12F40 - 12F7F + 0x0002, 0x001c, 0x1ee6, 0x1ed8, 0x0003, 0x0619, 0x0000, 0x061c, + 0x0001, 0x0000, 0x2143, 0x0002, 0x061f, 0x0623, 0x0002, 0x001c, + 0x1ef5, 0x1ef5, 0x0002, 0x001c, 0x1f05, 0x1f05, 0x0003, 0x062b, + 0x0000, 0x062e, 0x0001, 0x0000, 0x2143, 0x0002, 0x0631, 0x0635, + 0x0002, 0x001c, 0x1ef5, 0x1ef5, 0x0002, 0x001c, 0x1f05, 0x1f05, + 0x0003, 0x063d, 0x0640, 0x0644, 0x0001, 0x001c, 0x0b08, 0x0002, + 0x001c, 0xffff, 0x1f10, 0x0002, 0x0647, 0x064b, 0x0002, 0x001c, + 0x1f31, 0x1f1c, 0x0002, 0x001c, 0x1f57, 0x1f47, 0x0003, 0x0653, + // Entry 12F80 - 12FBF + 0x0000, 0x0656, 0x0001, 0x000b, 0x1250, 0x0002, 0x0659, 0x065d, + 0x0002, 0x001c, 0x1f68, 0x1f68, 0x0002, 0x001c, 0x1f7a, 0x1f7a, + 0x0003, 0x0665, 0x0000, 0x0668, 0x0001, 0x000b, 0x1250, 0x0002, + 0x066b, 0x066f, 0x0002, 0x001c, 0x1f68, 0x1f68, 0x0002, 0x001c, + 0x1f7a, 0x1f7a, 0x0003, 0x0677, 0x067a, 0x067e, 0x0001, 0x001c, + 0x1f87, 0x0002, 0x001c, 0xffff, 0x1f8f, 0x0002, 0x0681, 0x0685, + 0x0002, 0x001c, 0x1fab, 0x1f95, 0x0002, 0x001c, 0x1fd3, 0x1fc2, + 0x0003, 0x068d, 0x0000, 0x0690, 0x0001, 0x0000, 0x2002, 0x0002, + // Entry 12FC0 - 12FFF + 0x0693, 0x0697, 0x0002, 0x001c, 0x1fe5, 0x1fe5, 0x0002, 0x001d, + 0x0000, 0x0000, 0x0003, 0x069f, 0x0000, 0x06a2, 0x0001, 0x0000, + 0x2002, 0x0002, 0x06a5, 0x06a9, 0x0002, 0x001c, 0x1fe5, 0x1fe5, + 0x0002, 0x001d, 0x0000, 0x0000, 0x0001, 0x06af, 0x0001, 0x001d, + 0x000b, 0x0004, 0x06b7, 0x06bc, 0x06c1, 0x06d0, 0x0003, 0x0000, + 0x1dc7, 0x22ce, 0x2387, 0x0003, 0x001d, 0x0018, 0x0024, 0x003d, + 0x0002, 0x0000, 0x06c4, 0x0003, 0x0000, 0x06cb, 0x06c8, 0x0001, + 0x001d, 0x0056, 0x0003, 0x001d, 0xffff, 0x0072, 0x008c, 0x0002, + // Entry 13000 - 1303F + 0x08b7, 0x06d3, 0x0003, 0x06d7, 0x0817, 0x0777, 0x009e, 0x001d, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0139, 0x019e, 0x01df, 0x0229, + 0x0264, 0x02a2, 0x02f8, 0x0345, 0x0386, 0x0443, 0x0484, 0x04ce, + 0x0539, 0x057d, 0x05cd, 0x062f, 0x06a9, 0x070e, 0x0779, 0x07c9, + 0x0816, 0xffff, 0xffff, 0x0882, 0xffff, 0x08d9, 0xffff, 0x0941, + 0x0985, 0x09c3, 0x0a01, 0xffff, 0xffff, 0x0a81, 0x0ac8, 0x0b27, + 0xffff, 0xffff, 0xffff, 0x0ba2, 0xffff, 0x0c14, 0x0c6d, 0xffff, + 0x0ce8, 0x0d4a, 0x0daf, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e5f, + // Entry 13040 - 1307F + 0xffff, 0xffff, 0x0edd, 0x0f48, 0xffff, 0xffff, 0x0ff8, 0x1057, + 0x10a1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1174, + 0x11b2, 0x11f6, 0x1237, 0x1278, 0xffff, 0xffff, 0x1301, 0xffff, + 0x134e, 0xffff, 0xffff, 0x13e8, 0xffff, 0x148a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x151f, 0xffff, 0x1575, 0x15e0, 0x164e, 0x169e, + 0xffff, 0xffff, 0xffff, 0x170c, 0x1768, 0x17be, 0xffff, 0xffff, + 0x182d, 0x18ba, 0x190a, 0x1945, 0xffff, 0xffff, 0x19ba, 0x1a01, + 0x1a3f, 0xffff, 0x1aa2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13080 - 130BF + 0x1bae, 0x1bf5, 0x1c36, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1cfc, 0xffff, 0xffff, 0x1d64, 0xffff, 0x1db0, + 0xffff, 0x1e15, 0x1e59, 0x1ea9, 0xffff, 0x1eff, 0x1f4f, 0xffff, + 0xffff, 0xffff, 0x1fd8, 0x201c, 0xffff, 0xffff, 0x00a6, 0xffff, + 0x03c4, 0x0402, 0xffff, 0xffff, 0x1432, 0x1b43, 0x009e, 0x001d, + 0x00e1, 0x00f5, 0x010d, 0x0126, 0x0154, 0x01ad, 0x01f1, 0x0236, + 0x0272, 0x02b8, 0x030b, 0x0354, 0x0393, 0x0452, 0x0496, 0x04eb, + 0x0549, 0x0591, 0x05e7, 0x0651, 0x06c4, 0x072b, 0x078d, 0x07dc, + // Entry 130C0 - 130FF + 0x0829, 0x0863, 0x0872, 0x0893, 0x08c9, 0x08ec, 0x0926, 0x0951, + 0x0993, 0x09d1, 0x0a14, 0x0a4e, 0x0a69, 0x0a92, 0x0adf, 0x0b34, + 0x0b62, 0x0b70, 0x0b8b, 0x0bbc, 0x0c04, 0x0c2b, 0x0c85, 0x0cc9, + 0x0d02, 0x0d65, 0x0dbc, 0x0dea, 0x0e06, 0x0e3c, 0x0e4f, 0x0e6f, + 0x0ea3, 0x0ebd, 0x0efa, 0x0f67, 0x0fd0, 0x0fe9, 0x1011, 0x1069, + 0x10ae, 0x10dc, 0x10f7, 0x1110, 0x1122, 0x113c, 0x1157, 0x1182, + 0x11c2, 0x1205, 0x1246, 0x128a, 0x12c5, 0x12e2, 0x130f, 0x133f, + 0x1362, 0x139e, 0x13c4, 0x13fa, 0x1470, 0x149b, 0x14d1, 0x14e1, + // Entry 13100 - 1313F + 0x14f2, 0x1504, 0x1530, 0x1566, 0x1592, 0x15fe, 0x1662, 0x16ad, + 0x16df, 0x16f0, 0x16fe, 0x1724, 0x177e, 0x17d0, 0x1808, 0x1815, + 0x1849, 0x18ce, 0x1917, 0x1957, 0x198f, 0x199e, 0x19cb, 0x1a0f, + 0x1a51, 0x1a89, 0x1ac0, 0x1b10, 0x1b21, 0x1b31, 0x1b8d, 0x1b9e, + 0x1bbf, 0x1c04, 0x1c44, 0x1c74, 0x1c87, 0x1c98, 0x1cb3, 0x1cce, + 0x1cde, 0x1cec, 0x1d0c, 0x1d40, 0x1d54, 0x1d72, 0x1da2, 0x1dc6, + 0x1e06, 0x1e25, 0x1e6d, 0x1eb9, 0x1eed, 0x1f13, 0x1f62, 0x1f9c, + 0x1fab, 0x1fc0, 0x1fe8, 0x2032, 0x0fb9, 0x1895, 0x00b3, 0xffff, + // Entry 13140 - 1317F + 0x03d2, 0x0411, 0xffff, 0x13b2, 0x1440, 0x1b55, 0x009e, 0x001d, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0179, 0x01c6, 0x020d, 0x024d, + 0x028a, 0x02d8, 0x0328, 0x036d, 0x03aa, 0x046b, 0x04b2, 0x0512, + 0x0563, 0x05af, 0x060b, 0x067d, 0x06e9, 0x0752, 0x07ab, 0x07f9, + 0x0846, 0xffff, 0xffff, 0x08ae, 0xffff, 0x0909, 0xffff, 0x096b, + 0x09ab, 0x09e9, 0x0a31, 0xffff, 0xffff, 0x0aad, 0x0b00, 0x0b4b, + 0xffff, 0xffff, 0xffff, 0x0be0, 0xffff, 0x0c4c, 0x0ca7, 0xffff, + 0x0d26, 0x0d8a, 0x0dd3, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e89, + // Entry 13180 - 131BF + 0xffff, 0xffff, 0x0f21, 0x0f90, 0xffff, 0xffff, 0x1034, 0x1085, + 0x10c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x119a, + 0x11dc, 0x121e, 0x125f, 0x12a9, 0xffff, 0xffff, 0x1327, 0xffff, + 0x1380, 0xffff, 0xffff, 0x1416, 0xffff, 0x14b6, 0xffff, 0xffff, + 0xffff, 0xffff, 0x154b, 0xffff, 0x15b9, 0x1626, 0x1680, 0x16c6, + 0xffff, 0xffff, 0xffff, 0x1746, 0x179e, 0x17ec, 0xffff, 0xffff, + 0x186f, 0x18ec, 0x192e, 0x1973, 0xffff, 0xffff, 0x19e6, 0x1a27, + 0x1a6d, 0xffff, 0x1ae8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 131C0 - 131FF + 0x1bda, 0x1c1d, 0x1c5c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1d26, 0xffff, 0xffff, 0x1d8a, 0xffff, 0x1de6, + 0xffff, 0x1e3f, 0x1e8b, 0x1ed3, 0xffff, 0x1f31, 0x1f7f, 0xffff, + 0xffff, 0xffff, 0x2002, 0x2052, 0xffff, 0xffff, 0x00ca, 0xffff, + 0x03ea, 0x042a, 0xffff, 0xffff, 0x1458, 0x1b71, 0x0003, 0x08bb, + 0x092a, 0x08ee, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13200 - 1323F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13240 - 1327F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x277c, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13280 - 132BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x00bd, 0x0194, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x001b, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0000, 0x0001, 0x0018, 0x0001, 0x001c, 0x14e1, 0x0008, + 0x0024, 0x0059, 0x0000, 0x0074, 0x0000, 0x0000, 0x00ac, 0x0000, + 0x0002, 0x0027, 0x0048, 0x0002, 0x002a, 0x0039, 0x000d, 0x001c, + 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, + // Entry 132C0 - 132FF + 0x12e7, 0x1ff5, 0x12f2, 0x12f7, 0x12fc, 0x000d, 0x0000, 0xffff, + 0x22e1, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, + 0x2002, 0x1f98, 0x1f96, 0x2008, 0x0001, 0x004a, 0x000d, 0x001c, + 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, + 0x12e7, 0x1ff5, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x005c, 0x0068, + 0x0002, 0x0000, 0x005f, 0x0007, 0x0000, 0x2008, 0x200a, 0x1f9a, + 0x1f9a, 0x214a, 0x1f94, 0x2002, 0x0002, 0x0000, 0x006b, 0x0007, + 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, + // Entry 13300 - 1333F + 0x0002, 0x0077, 0x008d, 0x0003, 0x007b, 0x0000, 0x0084, 0x0002, + 0x007e, 0x0081, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, + 0x0002, 0x0087, 0x008a, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0003, 0x0091, 0x009a, 0x00a3, 0x0002, 0x0094, 0x0097, + 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0002, 0x009d, + 0x00a0, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0002, + 0x00a6, 0x00a9, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, + 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, 0x0001, 0x0000, 0x0524, + // Entry 13340 - 1337F + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fe, + 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x010e, 0x0000, 0x0118, 0x0000, 0x0123, 0x012e, 0x0000, 0x013d, + 0x0000, 0x0000, 0x0148, 0x0153, 0x0000, 0x0000, 0x015e, 0x0000, + 0x0169, 0x0174, 0x0000, 0x0000, 0x017f, 0x0000, 0x018a, 0x0000, + // Entry 13380 - 133BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x018f, 0x0004, 0x0000, 0x0000, 0x0000, 0x0103, 0x0001, + 0x001c, 0x1749, 0x0004, 0x0000, 0x0000, 0x0000, 0x010b, 0x0001, + 0x001c, 0x1749, 0x0003, 0x0000, 0x0000, 0x0112, 0x0001, 0x0114, + 0x0002, 0x001e, 0x000f, 0x0000, 0x0003, 0x0000, 0x0000, 0x011c, + 0x0002, 0x0000, 0x011f, 0x0002, 0x001c, 0x1881, 0x1870, 0x0003, + 0x0000, 0x0000, 0x0127, 0x0002, 0x0000, 0x012a, 0x0002, 0x001c, + 0x1960, 0x1960, 0x0003, 0x0000, 0x0000, 0x0132, 0x0002, 0x0135, + // Entry 133C0 - 133FF + 0x0139, 0x0002, 0x001e, 0x001f, 0x001f, 0x0002, 0x001c, 0x1960, + 0x1960, 0x0003, 0x0000, 0x0000, 0x0141, 0x0002, 0x0000, 0x0144, + 0x0002, 0x001c, 0x1a40, 0x1a40, 0x0003, 0x0000, 0x0000, 0x014c, + 0x0002, 0x0000, 0x014f, 0x0002, 0x001c, 0x1b31, 0x1b31, 0x0003, + 0x0000, 0x0000, 0x0157, 0x0002, 0x0000, 0x015a, 0x0002, 0x001c, + 0x1b31, 0x1b31, 0x0003, 0x0000, 0x0000, 0x0162, 0x0002, 0x0000, + 0x0165, 0x0002, 0x001c, 0x1c1b, 0x1c1b, 0x0003, 0x0000, 0x0000, + 0x016d, 0x0002, 0x0000, 0x0170, 0x0002, 0x001c, 0x1d00, 0x1d00, + // Entry 13400 - 1343F + 0x0003, 0x0000, 0x0000, 0x0178, 0x0002, 0x0000, 0x017b, 0x0002, + 0x001c, 0x1d00, 0x1d00, 0x0003, 0x0000, 0x0000, 0x0183, 0x0002, + 0x0000, 0x0186, 0x0002, 0x001c, 0x1e0e, 0x1e0e, 0x0001, 0x018c, + 0x0001, 0x001e, 0x002c, 0x0001, 0x0191, 0x0001, 0x001e, 0x0036, + 0x0004, 0x0000, 0x0199, 0x0000, 0x019e, 0x0003, 0x001e, 0xffff, + 0x0043, 0x0059, 0x0002, 0x029f, 0x01a1, 0x0003, 0x01a5, 0x025e, + 0x01e6, 0x003f, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13440 - 1347F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x006f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00f0, 0x0076, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13480 - 134BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0086, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x00ce, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x010a, 0xffff, 0xffff, 0x0152, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 134C0 - 134FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0160, 0x003f, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13500 - 1353F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00a7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x012e, 0x0003, 0x02a3, 0x0312, 0x02d6, 0x0031, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13540 - 1357F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, + 0xffff, 0x00db, 0x003a, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13580 - 135BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x0031, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 135C0 - 135FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, + 0x00db, 0x0003, 0x0004, 0x009a, 0x0127, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0016, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, + 0x0000, 0x001f, 0x0000, 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0021, 0x0002, 0x0000, 0x0024, 0x0007, 0x0000, 0x22f0, + 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0002, 0x0030, + // Entry 13600 - 1363F + 0x0072, 0x0003, 0x0034, 0x0000, 0x0053, 0x0009, 0x003e, 0x0044, + 0x0000, 0x0047, 0x0000, 0x004d, 0x0050, 0x0041, 0x004a, 0x0001, + 0x0010, 0x0268, 0x0001, 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, + 0x0001, 0x001c, 0x1436, 0x0001, 0x001c, 0x17a3, 0x0001, 0x0005, + 0x130a, 0x0001, 0x001c, 0x1440, 0x0009, 0x005d, 0x0063, 0x0000, + 0x0066, 0x0000, 0x006c, 0x006f, 0x0060, 0x0069, 0x0001, 0x0010, + 0x0268, 0x0001, 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, + 0x001c, 0x1436, 0x0001, 0x001c, 0x17a3, 0x0001, 0x0005, 0x130a, + // Entry 13640 - 1367F + 0x0001, 0x001c, 0x1440, 0x0003, 0x0076, 0x007f, 0x0091, 0x0002, + 0x0079, 0x007c, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0008, 0x0088, 0x008e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x008b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, + 0x0010, 0x026e, 0x0002, 0x0094, 0x0097, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0040, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00db, + // Entry 13680 - 136BF + 0x00ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00fe, 0x0110, 0x0122, 0x0003, 0x0000, 0x0000, 0x00df, + 0x0002, 0x00e2, 0x00e6, 0x0002, 0x001c, 0x17cd, 0x17cd, 0x0002, + 0x001c, 0x17ef, 0x17ef, 0x0003, 0x0000, 0x0000, 0x00ee, 0x0002, + // Entry 136C0 - 136FF + 0x00f1, 0x00f5, 0x0002, 0x001c, 0x17cd, 0x17cd, 0x0002, 0x001c, + 0x17ef, 0x17ef, 0x0001, 0x00fb, 0x0001, 0x0010, 0x0aed, 0x0003, + 0x0102, 0x0000, 0x0105, 0x0001, 0x001e, 0x0171, 0x0002, 0x0108, + 0x010c, 0x0002, 0x001e, 0x0176, 0x0176, 0x0002, 0x001e, 0x0189, + 0x0189, 0x0003, 0x0114, 0x0000, 0x0117, 0x0001, 0x001e, 0x0171, + 0x0002, 0x011a, 0x011e, 0x0002, 0x001e, 0x0176, 0x0176, 0x0002, + 0x001e, 0x0189, 0x0189, 0x0001, 0x0124, 0x0001, 0x001d, 0x000b, + 0x0004, 0x0000, 0x0000, 0x0000, 0x012c, 0x0001, 0x012e, 0x0003, + // Entry 13700 - 1373F + 0x0132, 0x0156, 0x0144, 0x0010, 0x001e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0197, 0x01a0, 0x0010, 0x001e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0197, 0x01a0, 0x0010, + 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x019b, + 0x01a5, 0x0003, 0x0004, 0x0068, 0x00a3, 0x0008, 0x0000, 0x0000, + // Entry 13740 - 1377F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0006, 0x0014, + 0x0000, 0x0000, 0x0028, 0x0000, 0x0060, 0x0001, 0x0016, 0x0002, + 0x0000, 0x0019, 0x000d, 0x0000, 0xffff, 0x214e, 0x22e6, 0x22d9, + 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, + 0x22f0, 0x0002, 0x002b, 0x0041, 0x0003, 0x002f, 0x0000, 0x0038, + 0x0002, 0x0032, 0x0035, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x003b, 0x003e, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0003, 0x0045, 0x004e, 0x0057, 0x0002, 0x0048, + // Entry 13780 - 137BF + 0x004b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + 0x0051, 0x0054, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x005a, 0x005d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0004, 0x0000, 0x0000, 0x0000, 0x0065, 0x0001, 0x001e, + 0x01ab, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 137C0 - 137FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009e, 0x0001, + 0x00a0, 0x0001, 0x0010, 0x0aed, 0x0004, 0x0000, 0x0000, 0x0000, + 0x00a8, 0x0001, 0x00aa, 0x0003, 0x0000, 0x0000, 0x00ae, 0x001b, + 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13800 - 1383F + 0xffff, 0xffff, 0xffff, 0x01b8, 0x0003, 0x0004, 0x00a0, 0x00db, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0000, 0x0004, 0x001e, 0x0000, 0x0000, 0x001b, 0x0001, + 0x0005, 0x01ac, 0x0001, 0x001e, 0x01bc, 0x0008, 0x002a, 0x003e, + 0x004f, 0x005d, 0x0000, 0x0095, 0x0000, 0x0000, 0x0002, 0x0000, + 0x002d, 0x0001, 0x002f, 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, + 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, 0x12ec, 0x12f2, + // Entry 13840 - 1387F + 0x12f7, 0x12fc, 0x0001, 0x0040, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0046, 0x0007, 0x0005, 0x1256, 0x2122, 0x2125, 0x125f, + 0x2128, 0x1265, 0x1268, 0x0002, 0x0000, 0x0052, 0x0003, 0x0000, + 0x0000, 0x0056, 0x0005, 0x001e, 0xffff, 0x01ca, 0x01d9, 0x01e8, + 0x01f7, 0x0002, 0x0060, 0x0076, 0x0003, 0x0064, 0x0000, 0x006d, + 0x0002, 0x0067, 0x006a, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x0070, 0x0073, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0003, 0x007a, 0x0083, 0x008c, 0x0002, 0x007d, + // Entry 13880 - 138BF + 0x0080, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + 0x0086, 0x0089, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x008f, 0x0092, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0004, 0x009d, 0x0000, 0x0000, 0x009a, 0x0001, 0x0005, + 0x04ec, 0x0001, 0x001e, 0x0206, 0x0035, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 138C0 - 138FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00d6, 0x0001, 0x00d8, 0x0001, 0x0010, 0x0aed, 0x0004, + 0x0000, 0x0000, 0x0000, 0x00e0, 0x0001, 0x00e2, 0x0003, 0x00e6, + 0x012c, 0x0109, 0x0021, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13900 - 1393F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x020f, 0x0021, 0x001e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x020f, + 0x0021, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13940 - 1397F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0213, 0x0003, 0x0004, 0x00e8, 0x0123, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x002c, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + 0x0021, 0x0004, 0x001e, 0x0000, 0x0000, 0x001b, 0x0001, 0x001c, + 0x04aa, 0x0001, 0x001e, 0x0218, 0x0004, 0x0029, 0x0000, 0x0000, + 0x0026, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, + // Entry 13980 - 139BF + 0x0035, 0x0049, 0x0000, 0x0064, 0x0000, 0x00c1, 0x00cc, 0x00dd, + 0x0002, 0x0000, 0x0038, 0x0001, 0x003a, 0x000d, 0x001c, 0xffff, + 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, + 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x004c, 0x0058, 0x0002, + 0x0000, 0x004f, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, + 0x1e5d, 0x1edb, 0x22dd, 0x0002, 0x0000, 0x005b, 0x0007, 0x0000, + 0x2008, 0x200a, 0x1f9a, 0x1f9a, 0x214a, 0x1f94, 0x2002, 0x0002, + 0x0067, 0x0090, 0x0003, 0x006b, 0x0000, 0x0087, 0x0009, 0x0075, + // Entry 139C0 - 139FF + 0x007b, 0x0000, 0x0000, 0x0000, 0x0081, 0x0084, 0x0078, 0x007e, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, + 0x026e, 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, + 0x001c, 0x1420, 0x0002, 0x008a, 0x008d, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0003, 0x0094, 0x00a6, 0x00b8, 0x0008, + 0x009d, 0x00a3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a0, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, + 0x026e, 0x0008, 0x00af, 0x00b5, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 13A00 - 13A3F + 0x0000, 0x00b2, 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, + 0x0001, 0x0010, 0x026e, 0x0002, 0x00bb, 0x00be, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0004, 0x00c9, 0x0000, 0x0000, + 0x00c6, 0x0001, 0x001c, 0x04c0, 0x0001, 0x001c, 0x04c7, 0x0004, + 0x00da, 0x00d4, 0x00d1, 0x00d7, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0004, 0x00e5, 0x0000, 0x0000, 0x00e2, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 13A40 - 13A7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x011e, 0x0001, 0x0120, 0x0001, 0x0010, 0x0aed, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0128, 0x0001, 0x012a, 0x0003, 0x012e, 0x017e, + // Entry 13A80 - 13ABF + 0x0156, 0x0026, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0226, 0x0026, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 13AC0 - 13AFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0226, 0x0026, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x022a, 0x0002, 0x0003, 0x0049, 0x0008, 0x0000, 0x0000, 0x0000, + // Entry 13B00 - 13B3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0004, 0x0000, 0x0000, + 0x0000, 0x0011, 0x0002, 0x0014, 0x002a, 0x0003, 0x0018, 0x0000, + 0x0021, 0x0002, 0x001b, 0x001e, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0002, 0x0024, 0x0027, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0003, 0x002e, 0x0037, 0x0040, 0x0002, + 0x0031, 0x0034, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x003a, 0x003d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x0043, 0x0046, 0x0001, 0x0010, 0x0268, 0x0001, + // Entry 13B40 - 13B7F + 0x0010, 0x026e, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0089, + 0x0002, 0x0000, 0x0082, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, + // Entry 13B80 - 13BBF + 0x022f, 0x0247, 0x0001, 0x008b, 0x0001, 0x0010, 0x0aed, 0x0002, + 0x0003, 0x00bd, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000c, 0x001b, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0013, 0x0004, 0x0000, 0x0000, 0x0000, 0x0018, 0x0001, + 0x0010, 0x02f4, 0x0008, 0x0000, 0x0024, 0x0032, 0x0047, 0x00a1, + 0x0000, 0x00ac, 0x0000, 0x0001, 0x0026, 0x0002, 0x0000, 0x0029, + 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, + 0x22dd, 0x0002, 0x0035, 0x003e, 0x0001, 0x0037, 0x0005, 0x0000, + // Entry 13BC0 - 13BFF + 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0001, 0x0040, 0x0005, + 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0002, 0x004a, + 0x0079, 0x0003, 0x004e, 0x0057, 0x0070, 0x0002, 0x0051, 0x0054, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0009, 0x0000, + 0x0000, 0x0000, 0x0064, 0x0000, 0x006a, 0x006d, 0x0061, 0x0067, + 0x0001, 0x001c, 0x142c, 0x0001, 0x0005, 0x1ece, 0x0001, 0x001e, + 0x023f, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, 0x1440, 0x0002, + 0x0073, 0x0076, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + // Entry 13C00 - 13C3F + 0x0003, 0x007d, 0x0086, 0x0098, 0x0002, 0x0080, 0x0083, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0008, 0x008f, 0x0095, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0092, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, 0x026e, 0x0002, + 0x009b, 0x009e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0003, 0x0000, 0x0000, 0x00a5, 0x0002, 0x0000, 0x00a8, 0x0002, + 0x001e, 0x0256, 0x026d, 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + // Entry 13C40 - 13C7F + 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x00fb, 0x0000, 0x0000, + 0x0100, 0x0000, 0x0000, 0x0105, 0x0000, 0x0000, 0x010a, 0x0000, + 0x0000, 0x010f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0114, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x011e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0123, 0x0000, + // Entry 13C80 - 13CBF + 0x0000, 0x0128, 0x0001, 0x00fd, 0x0001, 0x0000, 0x1a35, 0x0001, + 0x0102, 0x0001, 0x001e, 0x0278, 0x0001, 0x0107, 0x0001, 0x001e, + 0x027d, 0x0001, 0x010c, 0x0001, 0x001e, 0x0287, 0x0001, 0x0111, + 0x0001, 0x001e, 0x028b, 0x0001, 0x0116, 0x0001, 0x001e, 0x0292, + 0x0001, 0x011b, 0x0001, 0x001e, 0x0297, 0x0001, 0x0120, 0x0001, + 0x0010, 0x0aed, 0x0001, 0x0125, 0x0001, 0x001e, 0x02a9, 0x0001, + 0x012a, 0x0001, 0x001e, 0x02b0, 0x0003, 0x0004, 0x0057, 0x0092, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + // Entry 13CC0 - 13CFF + 0x0016, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x001f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0002, 0x0022, 0x0038, 0x0003, 0x0026, + 0x0000, 0x002f, 0x0002, 0x0029, 0x002c, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0002, 0x0032, 0x0035, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x003c, 0x0045, 0x004e, + 0x0002, 0x003f, 0x0042, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x0048, 0x004b, 0x0001, 0x0010, 0x0268, 0x0001, + // Entry 13D00 - 13D3F + 0x0010, 0x026e, 0x0002, 0x0051, 0x0054, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 13D40 - 13D7F + 0x008d, 0x0001, 0x008f, 0x0001, 0x0010, 0x0aed, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0097, 0x0001, 0x0099, 0x0003, 0x0000, 0x0000, + 0x009d, 0x002d, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x02b8, + // Entry 13D80 - 13DBF + 0x0002, 0x0003, 0x006c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000c, 0x0020, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x001d, 0x0000, + 0x0000, 0x001a, 0x0001, 0x001c, 0x04aa, 0x0001, 0x001e, 0x0218, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0029, 0x0000, 0x0061, 0x0000, + 0x0000, 0x0002, 0x002c, 0x0042, 0x0003, 0x0030, 0x0000, 0x0039, + 0x0002, 0x0033, 0x0036, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x003c, 0x003f, 0x0001, 0x0010, 0x0268, 0x0001, + // Entry 13DC0 - 13DFF + 0x0010, 0x026e, 0x0003, 0x0046, 0x004f, 0x0058, 0x0002, 0x0049, + 0x004c, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + 0x0052, 0x0055, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x005b, 0x005e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0004, 0x0069, 0x0000, 0x0000, 0x0066, 0x0001, 0x001c, + 0x04c0, 0x0001, 0x001c, 0x04c7, 0x0035, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a2, + // Entry 13E00 - 13E3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00ac, 0x0002, 0x0000, 0x00a5, 0x0005, 0x001e, 0x0236, + 0x023b, 0x023f, 0x022f, 0x0247, 0x0001, 0x00ae, 0x0001, 0x0010, + 0x0aed, 0x0002, 0x0003, 0x006a, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000c, 0x001f, 0x0008, 0x0000, 0x0000, + // Entry 13E40 - 13E7F + 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0003, 0x0000, + 0x001c, 0x0019, 0x0001, 0x001e, 0x02bc, 0x0001, 0x001e, 0x02d7, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0028, 0x0000, 0x0060, 0x0000, + 0x0000, 0x0002, 0x002b, 0x0041, 0x0003, 0x002f, 0x0000, 0x0038, + 0x0002, 0x0032, 0x0035, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x003b, 0x003e, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0003, 0x0045, 0x004e, 0x0057, 0x0002, 0x0048, + 0x004b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + // Entry 13E80 - 13EBF + 0x0051, 0x0054, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x005a, 0x005d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0003, 0x0000, 0x0067, 0x0064, 0x0001, 0x001e, 0x02ed, + 0x0001, 0x001e, 0x0306, 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x0002, + 0x0000, 0x0081, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, 0x022f, + 0x0247, 0x0003, 0x0004, 0x00e5, 0x026d, 0x0008, 0x0000, 0x0000, + // Entry 13EC0 - 13EFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x001e, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, + 0x0000, 0x0000, 0x0000, 0x001b, 0x0001, 0x0001, 0x1fc1, 0x0008, + 0x0027, 0x003a, 0x0054, 0x0089, 0x0000, 0x00da, 0x0000, 0x0000, + 0x0001, 0x0029, 0x0001, 0x002b, 0x000d, 0x001e, 0xffff, 0x031a, + 0x031e, 0x0322, 0x0326, 0x032a, 0x032e, 0x0332, 0x0336, 0x033a, + 0x033e, 0x0342, 0x0346, 0x0001, 0x003c, 0x0005, 0x0000, 0x0042, + 0x0000, 0x0000, 0x004b, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, + // Entry 13F00 - 13F3F + 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0007, 0x0005, 0x1256, 0x2122, + 0x2125, 0x125f, 0x2128, 0x1265, 0x1268, 0x0002, 0x0057, 0x0070, + 0x0003, 0x005b, 0x0062, 0x0069, 0x0005, 0x001e, 0xffff, 0x034a, + 0x0355, 0x0360, 0x036b, 0x0005, 0x0005, 0xffff, 0x12a4, 0x12a7, + 0x12aa, 0x12ad, 0x0005, 0x001e, 0xffff, 0x0375, 0x0384, 0x0393, + 0x03a2, 0x0003, 0x0074, 0x007b, 0x0082, 0x0005, 0x001e, 0xffff, + 0x034a, 0x0355, 0x0360, 0x036b, 0x0005, 0x0005, 0xffff, 0x12a4, + 0x12a7, 0x12aa, 0x12ad, 0x0005, 0x001e, 0xffff, 0x0375, 0x0384, + // Entry 13F40 - 13F7F + 0x0393, 0x03b0, 0x0002, 0x008c, 0x00bb, 0x0003, 0x0090, 0x0099, + 0x00b2, 0x0002, 0x0093, 0x0096, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0009, 0x0000, 0x0000, 0x0000, 0x00a6, 0x0000, + 0x00ac, 0x00af, 0x00a3, 0x00a9, 0x0001, 0x001c, 0x1402, 0x0001, + 0x001c, 0x1410, 0x0001, 0x001e, 0x023f, 0x0001, 0x0005, 0x12f6, + 0x0001, 0x001c, 0x1420, 0x0002, 0x00b5, 0x00b8, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x00bf, 0x00c8, 0x00d1, + 0x0002, 0x00c2, 0x00c5, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + // Entry 13F80 - 13FBF + 0x026e, 0x0002, 0x00cb, 0x00ce, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0002, 0x00d4, 0x00d7, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0004, 0x00e2, 0x0000, 0x0000, 0x00df, + 0x0001, 0x0002, 0x0860, 0x0001, 0x0014, 0x146e, 0x003f, 0x0000, + 0x0000, 0x0000, 0x0125, 0x012d, 0x0137, 0x0146, 0x0150, 0x015a, + 0x0169, 0x0178, 0x0182, 0x0191, 0x0199, 0x01a3, 0x0000, 0x0000, + 0x0000, 0x01b2, 0x01bc, 0x01c6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d5, 0x0000, 0x0000, + // Entry 13FC0 - 13FFF + 0x01dd, 0x0000, 0x0000, 0x01e5, 0x0000, 0x0000, 0x01ed, 0x01f5, + 0x0000, 0x01fd, 0x0000, 0x0000, 0x0205, 0x020d, 0x0000, 0x0215, + 0x0000, 0x0000, 0x0000, 0x021d, 0x0000, 0x0000, 0x0222, 0x022c, + 0x0000, 0x023b, 0x0245, 0x0000, 0x0254, 0x025e, 0x0002, 0x0000, + 0x0128, 0x0003, 0x001c, 0x1505, 0x1514, 0x1ffa, 0x0003, 0x0000, + 0x0000, 0x0131, 0x0001, 0x0133, 0x0002, 0x001e, 0x03be, 0x03be, + 0x0003, 0x0000, 0x0000, 0x013b, 0x0002, 0x013e, 0x0142, 0x0002, + 0x001e, 0x03be, 0x03be, 0x0002, 0x001e, 0x03c7, 0x03c7, 0x0003, + // Entry 14000 - 1403F + 0x0000, 0x0000, 0x014a, 0x0001, 0x014c, 0x0002, 0x0005, 0x1cbd, + 0x1cac, 0x0003, 0x0000, 0x0000, 0x0154, 0x0001, 0x0156, 0x0002, + 0x0005, 0x212b, 0x1d1a, 0x0003, 0x0000, 0x0000, 0x015e, 0x0002, + 0x0161, 0x0165, 0x0002, 0x001e, 0x03ce, 0x03ce, 0x0002, 0x001e, + 0x03d5, 0x03d5, 0x0003, 0x0000, 0x016d, 0x0172, 0x0003, 0x001c, + 0x1642, 0x1650, 0x200b, 0x0001, 0x0174, 0x0002, 0x0005, 0x1d7e, + 0x1d73, 0x0003, 0x0000, 0x0000, 0x017c, 0x0001, 0x017e, 0x0002, + 0x001e, 0x03dc, 0x03dc, 0x0003, 0x0000, 0x0000, 0x0186, 0x0002, + // Entry 14040 - 1407F + 0x0189, 0x018d, 0x0002, 0x0000, 0x1ace, 0x1ace, 0x0002, 0x0000, + 0x1ad5, 0x1ad5, 0x0002, 0x0000, 0x0194, 0x0003, 0x001c, 0x16cd, + 0x16de, 0x201b, 0x0003, 0x0000, 0x0000, 0x019d, 0x0001, 0x019f, + 0x0002, 0x001e, 0x03e5, 0x03e5, 0x0003, 0x0000, 0x0000, 0x01a7, + 0x0002, 0x01aa, 0x01ae, 0x0002, 0x001e, 0x03f1, 0x03f1, 0x0002, + 0x001e, 0x03fb, 0x03fb, 0x0002, 0x0000, 0x01b5, 0x0005, 0x001e, + 0x0236, 0x023b, 0x023f, 0x022f, 0x0247, 0x0003, 0x0000, 0x0000, + 0x01c0, 0x0001, 0x01c2, 0x0002, 0x0005, 0x2137, 0x1ef6, 0x0003, + // Entry 14080 - 140BF + 0x0000, 0x0000, 0x01ca, 0x0002, 0x01cd, 0x01d1, 0x0002, 0x001e, + 0x040f, 0x0405, 0x0002, 0x001e, 0x0424, 0x041a, 0x0002, 0x0000, + 0x01d8, 0x0003, 0x001c, 0x1810, 0x1822, 0x202e, 0x0002, 0x0000, + 0x01e0, 0x0003, 0x001c, 0x191f, 0x192f, 0x2042, 0x0002, 0x0000, + 0x01e8, 0x0003, 0x001c, 0x19fb, 0x1a0c, 0x2054, 0x0002, 0x0000, + 0x01f0, 0x0003, 0x001c, 0x1adc, 0x1af1, 0x2067, 0x0002, 0x0000, + 0x01f8, 0x0003, 0x001e, 0x042f, 0x0440, 0x044c, 0x0002, 0x0000, + 0x0200, 0x0003, 0x001c, 0x1bd6, 0x1be7, 0x207e, 0x0002, 0x0000, + // Entry 140C0 - 140FF + 0x0208, 0x0003, 0x001c, 0x1cb7, 0x1cc9, 0x2091, 0x0002, 0x0000, + 0x0210, 0x0003, 0x001e, 0x045f, 0x046f, 0x047a, 0x0002, 0x0000, + 0x0218, 0x0003, 0x001c, 0x1d9d, 0x1daf, 0x20a5, 0x0001, 0x021f, + 0x0001, 0x0010, 0x0aed, 0x0003, 0x0000, 0x0000, 0x0226, 0x0001, + 0x0228, 0x0002, 0x001e, 0x0495, 0x048c, 0x0003, 0x0000, 0x0000, + 0x0230, 0x0002, 0x0233, 0x0237, 0x0002, 0x0000, 0x1d76, 0x1d76, + 0x0002, 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x0000, 0x0000, 0x023f, + 0x0001, 0x0241, 0x0002, 0x001e, 0x049e, 0x049e, 0x0003, 0x0000, + // Entry 14100 - 1413F + 0x0000, 0x0249, 0x0002, 0x024c, 0x0250, 0x0002, 0x0000, 0x1d97, + 0x1d97, 0x0002, 0x0000, 0x1da0, 0x1da0, 0x0003, 0x0000, 0x0000, + 0x0258, 0x0001, 0x025a, 0x0002, 0x001e, 0x04a9, 0x04a9, 0x0003, + 0x0000, 0x0000, 0x0262, 0x0002, 0x0265, 0x0269, 0x0002, 0x0000, + 0x1db4, 0x1db4, 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0004, 0x0000, + 0x0000, 0x0272, 0x027d, 0x0002, 0x0000, 0x0275, 0x0002, 0x0000, + 0x0278, 0x0003, 0x001e, 0xffff, 0x04b2, 0x04cc, 0x0002, 0x0000, + 0x0280, 0x0003, 0x031a, 0x03b0, 0x0284, 0x0094, 0x001e, 0xffff, + // Entry 14140 - 1417F + 0x04e5, 0x04fd, 0x0516, 0x0544, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x059b, 0x05d8, 0xffff, 0xffff, 0x061a, + 0xffff, 0x0668, 0x06d2, 0x0745, 0x07ac, 0x080e, 0x085d, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x08aa, 0x08e4, 0x090f, 0xffff, + 0xffff, 0xffff, 0x0943, 0x095e, 0x0987, 0x09d4, 0xffff, 0x0a1c, + 0x0a2a, 0xffff, 0x0a5f, 0x0aa7, 0x0ace, 0x0b28, 0x0b6c, 0x0baa, + 0x0c0d, 0x0c64, 0x0c92, 0x0cae, 0x0ce4, 0x0cf7, 0x0d17, 0x0d4b, + 0x0d65, 0xffff, 0xffff, 0x0d85, 0x0d9e, 0xffff, 0xffff, 0xffff, + // Entry 14180 - 141BF + 0xffff, 0x0dad, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0dd6, + 0x0e19, 0xffff, 0xffff, 0x0e4b, 0x0e68, 0xffff, 0x0e87, 0x0eaa, + 0x0ee6, 0x0efa, 0x0f30, 0x0f68, 0x0f93, 0xffff, 0xffff, 0x0fc9, + 0x0fe5, 0x1011, 0x1047, 0xffff, 0xffff, 0xffff, 0x1065, 0xffff, + 0x1097, 0xffff, 0x10bd, 0x1117, 0xffff, 0x1157, 0x1164, 0x119a, + 0x11fa, 0x1243, 0xffff, 0x1271, 0x1280, 0x12ad, 0x12f1, 0xffff, + 0x1321, 0xffff, 0x133a, 0x134b, 0xffff, 0x135b, 0x136c, 0x138d, + 0xffff, 0x13d1, 0x1401, 0xffff, 0x1414, 0x142f, 0x144a, 0x145a, + // Entry 141C0 - 141FF + 0x1468, 0xffff, 0x1478, 0x148c, 0x14aa, 0x14da, 0x14fe, 0x153e, + 0x155d, 0x15a5, 0x15f1, 0x1625, 0x164b, 0x169a, 0x16d4, 0x16e3, + 0x16f8, 0x1720, 0x176a, 0x0094, 0x001e, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0529, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x058e, 0x05c9, 0xffff, 0xffff, 0x060a, 0xffff, 0x064e, + 0x06b0, 0x072a, 0x078f, 0x07fa, 0x084a, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0897, 0xffff, 0x08ff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0976, 0x09bd, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14200 - 1423F + 0x0a45, 0xffff, 0x0ab7, 0x0b10, 0xffff, 0x0b90, 0x0bf2, 0x0c57, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0d07, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0dc6, 0x0e0a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e96, 0xffff, 0xffff, + 0x0f1e, 0xffff, 0x0f82, 0xffff, 0xffff, 0xffff, 0xffff, 0x1000, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1056, 0xffff, 0xffff, 0xffff, + 0x10a5, 0x1101, 0xffff, 0xffff, 0xffff, 0x117e, 0x11e6, 0x1236, + // Entry 14240 - 1427F + 0xffff, 0xffff, 0xffff, 0x129c, 0x12e3, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x137c, 0xffff, 0x13c3, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x149c, 0xffff, 0x14e8, 0xffff, 0x154d, 0x1591, + 0x15e1, 0xffff, 0x1637, 0x1687, 0xffff, 0xffff, 0xffff, 0x1710, + 0x1754, 0x0094, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0x0569, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05b2, + 0x05f1, 0xffff, 0xffff, 0x0634, 0xffff, 0x068c, 0x06fe, 0x076a, + // Entry 14280 - 142BF + 0x07d3, 0x082c, 0x087a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x08c7, 0xffff, 0x0929, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x09a2, 0x09f5, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a83, 0xffff, + 0x0aef, 0x0b4a, 0xffff, 0x0bce, 0x0c32, 0x0c7b, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0d31, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0df0, 0x0e32, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0ec8, 0xffff, 0xffff, 0x0f4c, 0xffff, + // Entry 142C0 - 142FF + 0x0fae, 0xffff, 0xffff, 0xffff, 0xffff, 0x102c, 0xffff, 0xffff, + 0xffff, 0xffff, 0x107e, 0xffff, 0xffff, 0xffff, 0x10df, 0x1137, + 0xffff, 0xffff, 0xffff, 0x11c0, 0x1218, 0x125a, 0xffff, 0xffff, + 0xffff, 0x12c8, 0x1309, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x13a8, 0xffff, 0x13e9, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x14c2, 0xffff, 0x151e, 0xffff, 0x1577, 0x15c3, 0x160b, 0xffff, + 0x1669, 0x16b7, 0xffff, 0xffff, 0xffff, 0x173a, 0x178a, 0x0002, + // Entry 14300 - 1433F + 0x0003, 0x0049, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000c, 0x0004, 0x0000, 0x0000, 0x0000, 0x0011, + 0x0002, 0x0014, 0x002a, 0x0003, 0x0018, 0x0000, 0x0021, 0x0002, + 0x001b, 0x001e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x0024, 0x0027, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0003, 0x002e, 0x0037, 0x0040, 0x0002, 0x0031, 0x0034, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x003a, + 0x003d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + // Entry 14340 - 1437F + 0x0043, 0x0046, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x005d, 0x0002, 0x0000, 0x0060, 0x0005, + 0x001e, 0x0236, 0x023b, 0x023f, 0x022f, 0x0247, 0x0002, 0x0003, + 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0020, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x001d, 0x0000, 0x0000, 0x001a, + // Entry 14380 - 143BF + 0x0001, 0x001e, 0x17aa, 0x0001, 0x001e, 0x17b4, 0x0008, 0x0029, + 0x0000, 0x003d, 0x0056, 0x0000, 0x00ba, 0x00c5, 0x0000, 0x0001, + 0x002b, 0x0002, 0x0000, 0x002e, 0x000d, 0x0000, 0xffff, 0x214e, + 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, + 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x0040, 0x004b, 0x0003, 0x0000, + 0x0000, 0x0044, 0x0005, 0x001e, 0xffff, 0x0375, 0x17c3, 0x0393, + 0x01f7, 0x0003, 0x0000, 0x0000, 0x004f, 0x0005, 0x001e, 0xffff, + 0x0375, 0x17c3, 0x0393, 0x01f7, 0x0002, 0x0059, 0x009b, 0x0003, + // Entry 143C0 - 143FF + 0x005d, 0x0000, 0x007c, 0x0009, 0x0067, 0x006d, 0x0000, 0x0070, + 0x0000, 0x0076, 0x0079, 0x006a, 0x0073, 0x0001, 0x0010, 0x0268, + 0x0001, 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, + 0x1410, 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, + 0x001c, 0x1420, 0x0009, 0x0086, 0x008c, 0x0000, 0x008f, 0x0000, + 0x0095, 0x0098, 0x0089, 0x0092, 0x0001, 0x0010, 0x0268, 0x0001, + 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, + 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, + // Entry 14400 - 1443F + 0x1420, 0x0003, 0x009f, 0x00a8, 0x00b1, 0x0002, 0x00a2, 0x00a5, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x00ab, + 0x00ae, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + 0x00b4, 0x00b7, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0004, 0x00c2, 0x0000, 0x0000, 0x00bf, 0x0001, 0x001e, 0x17d2, + 0x0001, 0x001e, 0x17da, 0x0004, 0x00d3, 0x00cd, 0x00ca, 0x00d0, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0013, 0x0000, 0x0000, 0x0000, + // Entry 14440 - 1447F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ea, + 0x0002, 0x0000, 0x00ed, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, + 0x022f, 0x0247, 0x0003, 0x0004, 0x0000, 0x00a8, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x001b, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, + 0x0001, 0x0018, 0x0001, 0x001e, 0x0218, 0x0008, 0x0024, 0x0000, + 0x0000, 0x006b, 0x0000, 0x00a3, 0x0000, 0x0000, 0x0002, 0x0027, + // Entry 14480 - 144BF + 0x0049, 0x0003, 0x002b, 0x0000, 0x003a, 0x000d, 0x001c, 0xffff, + 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, + 0x20b9, 0x12f2, 0x12f7, 0x12fc, 0x000d, 0x001c, 0xffff, 0x1301, + 0x1307, 0x130f, 0x1315, 0x131b, 0x0606, 0x060c, 0x1320, 0x20be, + 0x1332, 0x133a, 0x1344, 0x0003, 0x004d, 0x0000, 0x005c, 0x000d, + 0x001e, 0xffff, 0x17e3, 0x17e8, 0x17ed, 0x17f2, 0x17f7, 0x17fc, + 0x1801, 0x1806, 0x180b, 0x1810, 0x1815, 0x181a, 0x000d, 0x001e, + 0xffff, 0x181f, 0x1825, 0x182d, 0x1833, 0x1839, 0x183e, 0x1844, + // Entry 144C0 - 144FF + 0x184a, 0x1851, 0x185b, 0x1863, 0x186d, 0x0002, 0x006e, 0x0084, + 0x0003, 0x0072, 0x0000, 0x007b, 0x0002, 0x0075, 0x0078, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x007e, 0x0081, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x0088, + 0x0091, 0x009a, 0x0002, 0x008b, 0x008e, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0002, 0x0094, 0x0097, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x009d, 0x00a0, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0001, 0x00a5, 0x0001, + // Entry 14500 - 1453F + 0x001c, 0x04c7, 0x0004, 0x0000, 0x0000, 0x0000, 0x00ad, 0x0001, + 0x00af, 0x0003, 0x00b3, 0x0197, 0x0125, 0x0070, 0x001e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14540 - 1457F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1877, 0x0070, + // Entry 14580 - 145BF + 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 145C0 - 145FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1877, 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14600 - 1463F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14640 - 1467F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x187b, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, + // Entry 14680 - 146BF + 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x001f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0014, 0x0000, 0x0000, 0x0004, 0x001c, 0x0000, 0x0000, 0x0019, + 0x0001, 0x001e, 0x17aa, 0x0001, 0x001e, 0x17b4, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0028, 0x0000, 0x0060, 0x006b, 0x0000, 0x0002, + 0x002b, 0x0041, 0x0003, 0x002f, 0x0000, 0x0038, 0x0002, 0x0032, + 0x0035, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + // Entry 146C0 - 146FF + 0x003b, 0x003e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0003, 0x0045, 0x004e, 0x0057, 0x0002, 0x0048, 0x004b, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x0051, 0x0054, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x005a, + 0x005d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0004, + 0x0068, 0x0000, 0x0000, 0x0065, 0x0001, 0x001e, 0x17d2, 0x0001, + 0x001e, 0x17da, 0x0004, 0x0079, 0x0073, 0x0070, 0x0076, 0x0001, + 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, + // Entry 14700 - 1473F + 0x0001, 0x0002, 0x0478, 0x0002, 0x0003, 0x009c, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0008, + 0x0015, 0x003a, 0x0000, 0x005b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0002, 0x0018, 0x0029, 0x0001, 0x001a, 0x000d, 0x001c, 0xffff, + 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, + 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0001, 0x002b, 0x000d, 0x001c, + 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, + 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x003d, 0x004c, + // Entry 14740 - 1477F + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0043, 0x0007, 0x0005, + 0x1256, 0x2122, 0x2125, 0x125f, 0x2128, 0x1265, 0x2144, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0052, 0x0007, 0x0016, 0x0361, + 0x2b6f, 0x2b47, 0x035e, 0x2b72, 0x2b75, 0x0367, 0x0002, 0x005e, + 0x0074, 0x0003, 0x0062, 0x0000, 0x006b, 0x0002, 0x0065, 0x0068, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x006e, + 0x0071, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, + 0x0078, 0x0081, 0x0093, 0x0002, 0x007b, 0x007e, 0x0001, 0x0010, + // Entry 14780 - 147BF + 0x0268, 0x0001, 0x0010, 0x026e, 0x0008, 0x008a, 0x0090, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x008d, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, 0x026e, 0x0002, 0x0096, + 0x0099, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0040, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 147C0 - 147FF + 0x00e7, 0x0000, 0x0000, 0x00ef, 0x0000, 0x0000, 0x00f7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0111, 0x0120, + 0x0002, 0x0000, 0x00e0, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, + 0x1880, 0x0247, 0x0002, 0x0000, 0x00ea, 0x0003, 0x001c, 0x1893, + 0x18a2, 0x18ac, 0x0002, 0x0000, 0x00f2, 0x0003, 0x001c, 0x196f, + 0x197e, 0x1988, 0x0002, 0x0000, 0x00fa, 0x0003, 0x001c, 0x1a50, + // Entry 14800 - 1483F + 0x1a5f, 0x1a69, 0x0003, 0x0103, 0x0000, 0x0106, 0x0001, 0x001e, + 0x0171, 0x0002, 0x0109, 0x010d, 0x0002, 0x001e, 0x0176, 0x0176, + 0x0002, 0x001e, 0x0189, 0x0189, 0x0003, 0x0000, 0x0000, 0x0115, + 0x0002, 0x0118, 0x011c, 0x0002, 0x001e, 0x0176, 0x0176, 0x0002, + 0x001e, 0x0189, 0x0189, 0x0001, 0x0122, 0x0001, 0x001d, 0x000b, + 0x0002, 0x0003, 0x0049, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000c, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0011, 0x0002, 0x0014, 0x002a, 0x0003, 0x0018, 0x0000, 0x0021, + // Entry 14840 - 1487F + 0x0002, 0x001b, 0x001e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x0024, 0x0027, 0x0001, 0x0010, 0x0268, 0x0001, + 0x0010, 0x026e, 0x0003, 0x002e, 0x0037, 0x0040, 0x0002, 0x0031, + 0x0034, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + 0x003a, 0x003d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0002, 0x0043, 0x0046, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 14880 - 148BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x007f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0089, 0x0002, + 0x0000, 0x0082, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, 0x022f, + 0x0247, 0x0001, 0x008b, 0x0001, 0x0010, 0x0aed, 0x0003, 0x0004, + 0x0000, 0x0078, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 148C0 - 148FF + 0x0000, 0x0000, 0x000d, 0x0008, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0000, 0x0067, 0x0000, 0x0002, 0x0019, 0x0048, 0x0003, + 0x001d, 0x0026, 0x003f, 0x0002, 0x0020, 0x0023, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0009, 0x0000, 0x0000, 0x0000, + 0x0033, 0x0000, 0x0039, 0x003c, 0x0030, 0x0036, 0x0001, 0x001c, + 0x1402, 0x0001, 0x001c, 0x1410, 0x0001, 0x001e, 0x023f, 0x0001, + 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, 0x0002, 0x0042, 0x0045, + 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x004c, + // Entry 14900 - 1493F + 0x0055, 0x005e, 0x0002, 0x004f, 0x0052, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0002, 0x0058, 0x005b, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x0061, 0x0064, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0004, 0x0075, 0x006f, + 0x006c, 0x0072, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0000, + 0x0000, 0x007d, 0x0095, 0x0001, 0x007f, 0x0003, 0x0083, 0x008f, + 0x0089, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, + // Entry 14940 - 1497F + 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, + 0xffff, 0xffff, 0x05a8, 0x0002, 0x0098, 0x015f, 0x0003, 0x009c, + 0x011e, 0x00dd, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14980 - 149BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16e2, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x2780, 0x0978, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 149C0 - 149FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x2784, + 0x097c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14A00 - 14A3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0000, 0x0000, + 0x0163, 0x001f, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x188e, 0x0003, 0x0004, 0x0000, 0x0091, 0x0008, 0x0000, + // Entry 14A40 - 14A7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0004, + 0x0012, 0x0000, 0x0000, 0x0059, 0x0002, 0x0015, 0x0037, 0x0003, + 0x0019, 0x0000, 0x0028, 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, + 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, 0x20b9, 0x12f2, + 0x12f7, 0x12fc, 0x000d, 0x001c, 0xffff, 0x1301, 0x1307, 0x130f, + 0x1315, 0x131b, 0x0606, 0x060c, 0x1320, 0x20be, 0x1332, 0x133a, + 0x1344, 0x0003, 0x003b, 0x0000, 0x004a, 0x000d, 0x001e, 0xffff, + 0x17e3, 0x17e8, 0x17ed, 0x17f2, 0x17f7, 0x17fc, 0x1801, 0x1806, + // Entry 14A80 - 14ABF + 0x180b, 0x1810, 0x1815, 0x181a, 0x000d, 0x001e, 0xffff, 0x181f, + 0x1825, 0x182d, 0x1833, 0x1839, 0x183e, 0x1844, 0x184a, 0x1851, + 0x185b, 0x1863, 0x186d, 0x0002, 0x005c, 0x0072, 0x0003, 0x0060, + 0x0000, 0x0069, 0x0002, 0x0063, 0x0066, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0002, 0x006c, 0x006f, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x0076, 0x007f, 0x0088, + 0x0002, 0x0079, 0x007c, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, + 0x026e, 0x0002, 0x0082, 0x0085, 0x0001, 0x0010, 0x0268, 0x0001, + // Entry 14AC0 - 14AFF + 0x0010, 0x026e, 0x0002, 0x008b, 0x008e, 0x0001, 0x0010, 0x0268, + 0x0001, 0x0010, 0x026e, 0x0004, 0x0000, 0x0000, 0x0000, 0x0096, + 0x0001, 0x0098, 0x0003, 0x009c, 0x01b4, 0x0128, 0x008a, 0x001e, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14B00 - 14B3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14B40 - 14B7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x189f, 0x008a, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14B80 - 14BBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14BC0 - 14BFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x189f, 0x008a, 0x001e, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14C00 - 14C3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14C40 - 14C7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x18a3, 0x0003, 0x0004, 0x00d7, 0x0143, 0x0008, 0x0000, + // Entry 14C80 - 14CBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0008, + 0x0016, 0x004b, 0x006c, 0x0085, 0x0000, 0x0000, 0x00c6, 0x0000, + 0x0002, 0x0019, 0x003a, 0x0002, 0x001c, 0x002b, 0x000d, 0x001c, + 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, + 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x000d, 0x0000, 0xffff, + 0x214e, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, + 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x0001, 0x003c, 0x000d, 0x001c, + 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, + // Entry 14CC0 - 14CFF + 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x004e, 0x005d, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0054, 0x0007, 0x0016, + 0x0361, 0x2b6f, 0x2b47, 0x035e, 0x2b72, 0x2b75, 0x0367, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0063, 0x0007, 0x0016, 0x0361, + 0x2b6f, 0x2b47, 0x035e, 0x2b72, 0x2b75, 0x0367, 0x0002, 0x006f, + 0x007a, 0x0003, 0x0000, 0x0000, 0x0073, 0x0005, 0x0005, 0xffff, + 0x12b0, 0x2147, 0x12cb, 0x2155, 0x0003, 0x0000, 0x0000, 0x007e, + 0x0005, 0x0005, 0xffff, 0x12b0, 0x2147, 0x12cb, 0x2155, 0x0002, + // Entry 14D00 - 14D3F + 0x0088, 0x009e, 0x0003, 0x008c, 0x0000, 0x0095, 0x0002, 0x008f, + 0x0092, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, + 0x0098, 0x009b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + 0x0003, 0x00a2, 0x00ab, 0x00bd, 0x0002, 0x00a5, 0x00a8, 0x0001, + 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0008, 0x00b4, 0x00ba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00b7, 0x0001, 0x0010, + 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, 0x026e, 0x0002, + 0x00c0, 0x00c3, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, + // Entry 14D40 - 14D7F + 0x0004, 0x00d4, 0x00ce, 0x00cb, 0x00d1, 0x0001, 0x0002, 0x0453, + 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + 0x0478, 0x0033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x010b, 0x0000, 0x0000, 0x0113, 0x0000, 0x0000, + 0x011b, 0x0000, 0x0000, 0x0123, 0x0000, 0x0000, 0x012b, 0x0000, + // Entry 14D80 - 14DBF + 0x0000, 0x0133, 0x0000, 0x0000, 0x013b, 0x0002, 0x0000, 0x010e, + 0x0003, 0x001e, 0x18a8, 0x18b5, 0x18bd, 0x0002, 0x0000, 0x0116, + 0x0003, 0x001e, 0x18cc, 0x18d9, 0x18e1, 0x0002, 0x0000, 0x011e, + 0x0003, 0x001e, 0x18f0, 0x18fd, 0x1905, 0x0002, 0x0000, 0x0126, + 0x0003, 0x001e, 0x1914, 0x1921, 0x1929, 0x0002, 0x0000, 0x012e, + 0x0003, 0x001e, 0x1938, 0x1945, 0x194d, 0x0002, 0x0000, 0x0136, + 0x0003, 0x001e, 0x195c, 0x1969, 0x1971, 0x0002, 0x0000, 0x013e, + 0x0003, 0x001e, 0x1980, 0x198d, 0x1995, 0x0004, 0x0000, 0x0000, + // Entry 14DC0 - 14DFF + 0x0000, 0x0148, 0x0001, 0x014a, 0x0003, 0x0000, 0x0000, 0x014e, + 0x008d, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14E00 - 14E3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 14E40 - 14E7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x19a4, 0x0003, + 0x0004, 0x02a6, 0x068c, 0x0008, 0x0000, 0x000d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0058, 0x0083, 0x000a, 0x0018, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x0001, + 0x001a, 0x0003, 0x0000, 0x0000, 0x001e, 0x000d, 0x001e, 0xffff, + 0x19a8, 0x19b4, 0x19be, 0x19c9, 0x19d4, 0x19de, 0x19e8, 0x19f5, + // Entry 14E80 - 14EBF + 0x1a02, 0x1a0f, 0x1a1b, 0x1a30, 0x0006, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0034, 0x0001, 0x0036, 0x0003, 0x003a, 0x0000, + 0x0049, 0x000d, 0x001e, 0xffff, 0x1a45, 0x1a4a, 0x1a50, 0x1a57, + 0x1a60, 0x1a68, 0x1a6d, 0x1a74, 0x1a7b, 0x1a7f, 0x1a84, 0x1a89, + 0x000d, 0x001e, 0xffff, 0x1a45, 0x1a4a, 0x1a50, 0x1a57, 0x1a60, + 0x1a68, 0x1a6d, 0x1a74, 0x1a7b, 0x1a7f, 0x1a84, 0x1a89, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0000, 0x0072, + 0x0004, 0x006f, 0x0069, 0x0066, 0x006c, 0x0001, 0x0013, 0x06bb, + // Entry 14EC0 - 14EFF + 0x0001, 0x0013, 0x0477, 0x0001, 0x0016, 0x02aa, 0x0001, 0x001e, + 0x1a8e, 0x0004, 0x0080, 0x007a, 0x0077, 0x007d, 0x0001, 0x001e, + 0x1a9c, 0x0001, 0x001e, 0x1a9c, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0008, 0x008c, 0x00f1, 0x0148, 0x017d, 0x024e, + 0x0273, 0x0284, 0x0295, 0x0002, 0x008f, 0x00c0, 0x0003, 0x0093, + 0x00a2, 0x00b1, 0x000d, 0x001e, 0xffff, 0x1aac, 0x1ab1, 0x1ab7, + 0x1abe, 0x1ac2, 0x1ac6, 0x1acc, 0x1ad2, 0x1ad6, 0x1adb, 0x0342, + 0x1adf, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x1edb, 0x22d9, 0x2382, + // Entry 14F00 - 14F3F + 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, + 0x000d, 0x001e, 0xffff, 0x1ae4, 0x1aec, 0x1ab7, 0x1af5, 0x1ac2, + 0x1ac6, 0x1acc, 0x1afc, 0x1b03, 0x1b0d, 0x1b16, 0x1b1f, 0x0003, + 0x00c4, 0x00d3, 0x00e2, 0x000d, 0x001e, 0xffff, 0x1aac, 0x1ab1, + 0x1ab7, 0x1abe, 0x1ac2, 0x1ac6, 0x1acc, 0x1ad2, 0x1ad6, 0x1adb, + 0x0342, 0x1adf, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x1edb, 0x22d9, + 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, + 0x22f0, 0x000d, 0x001e, 0xffff, 0x1ae4, 0x1aec, 0x1ab7, 0x1af5, + // Entry 14F40 - 14F7F + 0x1ac2, 0x1ac6, 0x1acc, 0x1afc, 0x1b03, 0x1b0d, 0x1b16, 0x1b1f, + 0x0002, 0x00f4, 0x011e, 0x0005, 0x00fa, 0x0103, 0x0115, 0x0000, + 0x010c, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, 0x2157, 0x22ee, + 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, 0x2157, + 0x22ee, 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, + 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x001e, 0x1b29, 0x1b34, + 0x1b3f, 0x1b4a, 0x1b55, 0x1b60, 0x1b66, 0x0005, 0x0124, 0x012d, + 0x013f, 0x0000, 0x0136, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, + // Entry 14F80 - 14FBF + 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, 0x214e, + 0x04dd, 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, + 0x214e, 0x04dd, 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x001e, + 0x1b29, 0x1b34, 0x1b3f, 0x1b4a, 0x1b55, 0x1b60, 0x1b66, 0x0002, + 0x014b, 0x0164, 0x0003, 0x014f, 0x0156, 0x015d, 0x0005, 0x0000, + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0015, 0xffff, 0x00f9, + 0x0104, 0x010f, 0x011a, 0x0003, 0x0168, 0x016f, 0x0176, 0x0005, + // Entry 14FC0 - 14FFF + 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, + 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0015, 0xffff, + 0x00f9, 0x0104, 0x010f, 0x011a, 0x0002, 0x0180, 0x01e7, 0x0003, + 0x0184, 0x01a5, 0x01c6, 0x0008, 0x0190, 0x0196, 0x018d, 0x0199, + 0x019c, 0x019f, 0x01a2, 0x0193, 0x0001, 0x001e, 0x1b6f, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x001e, 0x1b79, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x001e, 0x1b85, 0x0001, 0x001e, 0x1b8e, 0x0001, 0x001e, + 0x1b9d, 0x0001, 0x001e, 0x1ba4, 0x0008, 0x01b1, 0x01b7, 0x01ae, + // Entry 15000 - 1503F + 0x01ba, 0x01bd, 0x01c0, 0x01c3, 0x01b4, 0x0001, 0x001e, 0x1b6f, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x001e, 0x1b79, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x001e, 0x1b85, 0x0001, 0x001e, 0x1b8e, 0x0001, + 0x001e, 0x1b9d, 0x0001, 0x001e, 0x1ba4, 0x0008, 0x01d2, 0x01d8, + 0x01cf, 0x01db, 0x01de, 0x01e1, 0x01e4, 0x01d5, 0x0001, 0x001e, + 0x1b6f, 0x0001, 0x0000, 0x04ef, 0x0001, 0x001e, 0x1b79, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x001e, 0x1b85, 0x0001, 0x001e, 0x1b8e, + 0x0001, 0x001e, 0x1b9d, 0x0001, 0x001e, 0x1ba4, 0x0003, 0x01eb, + // Entry 15040 - 1507F + 0x020c, 0x022d, 0x0008, 0x01f7, 0x01fd, 0x01f4, 0x0200, 0x0203, + 0x0206, 0x0209, 0x01fa, 0x0001, 0x001e, 0x1bac, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x001e, 0x1bb5, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x001e, 0x1bbf, 0x0001, 0x001e, 0x1bc6, 0x0001, 0x001e, 0x1bd4, + 0x0001, 0x001e, 0x1bda, 0x0008, 0x0218, 0x021e, 0x0215, 0x0221, + 0x0224, 0x0227, 0x022a, 0x021b, 0x0001, 0x001e, 0x1bac, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x001e, 0x1bb5, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x001e, 0x1bbf, 0x0001, 0x001e, 0x1bc6, 0x0001, 0x001e, + // Entry 15080 - 150BF + 0x1bd4, 0x0001, 0x001e, 0x1bda, 0x0008, 0x0239, 0x023f, 0x0236, + 0x0242, 0x0245, 0x0248, 0x024b, 0x023c, 0x0001, 0x001e, 0x1bac, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x001e, 0x1bb5, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x001e, 0x1bbf, 0x0001, 0x001e, 0x1bc6, 0x0001, + 0x001e, 0x1bd4, 0x0001, 0x001e, 0x1bda, 0x0003, 0x025d, 0x0268, + 0x0252, 0x0002, 0x0255, 0x0259, 0x0002, 0x001e, 0x1bdf, 0x1c03, + 0x0002, 0x001e, 0x1bed, 0x1c14, 0x0002, 0x0260, 0x0264, 0x0002, + 0x0015, 0x01eb, 0x236d, 0x0002, 0x001e, 0x1c2c, 0x1c32, 0x0002, + // Entry 150C0 - 150FF + 0x026b, 0x026f, 0x0002, 0x0015, 0x01eb, 0x236d, 0x0002, 0x001e, + 0x1c2c, 0x1c32, 0x0004, 0x0281, 0x027b, 0x0278, 0x027e, 0x0001, + 0x0016, 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, + 0x0001, 0x0007, 0x0277, 0x0004, 0x0292, 0x028c, 0x0289, 0x028f, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x02a3, 0x029d, 0x029a, + 0x02a0, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02e7, 0x0000, + // Entry 15100 - 1513F + 0x0000, 0x02ec, 0x0303, 0x0315, 0x0327, 0x033e, 0x0355, 0x036c, + 0x0383, 0x0395, 0x03a7, 0x03c2, 0x03d8, 0x0000, 0x0000, 0x0000, + 0x03ee, 0x0407, 0x0419, 0x0000, 0x0000, 0x0000, 0x042b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0444, 0x0458, 0x046c, + 0x0480, 0x0494, 0x04a8, 0x04bc, 0x04d0, 0x04e4, 0x04f8, 0x050c, + 0x0520, 0x0534, 0x0548, 0x055c, 0x0570, 0x0584, 0x0598, 0x05ac, + 0x05c0, 0x0000, 0x05d4, 0x0000, 0x05d9, 0x05ef, 0x0601, 0x0613, + 0x0629, 0x063b, 0x064d, 0x0663, 0x0675, 0x0687, 0x0001, 0x02e9, + // Entry 15140 - 1517F + 0x0001, 0x001e, 0x1c38, 0x0003, 0x02f0, 0x02f3, 0x02f8, 0x0001, + 0x001e, 0x1c3f, 0x0003, 0x001e, 0x1c45, 0x1c53, 0x1c63, 0x0002, + 0x02fb, 0x02ff, 0x0002, 0x001e, 0x1c73, 0x1c73, 0x0002, 0x001e, + 0x1c85, 0x1c85, 0x0003, 0x0307, 0x0000, 0x030a, 0x0001, 0x0000, + 0x1f9c, 0x0002, 0x030d, 0x0311, 0x0002, 0x001e, 0x1c94, 0x1c94, + 0x0002, 0x001e, 0x1ca2, 0x1ca2, 0x0003, 0x0319, 0x0000, 0x031c, + 0x0001, 0x0000, 0x1f9c, 0x0002, 0x031f, 0x0323, 0x0002, 0x001e, + 0x1c94, 0x1c94, 0x0002, 0x001e, 0x1c85, 0x1c85, 0x0003, 0x032b, + // Entry 15180 - 151BF + 0x032e, 0x0333, 0x0001, 0x000d, 0x03b7, 0x0003, 0x001e, 0x1cad, + 0x1cbd, 0x1ccf, 0x0002, 0x0336, 0x033a, 0x0002, 0x001e, 0x1ce1, + 0x1ce1, 0x0002, 0x001e, 0x1cf6, 0x1cf6, 0x0003, 0x0342, 0x0345, + 0x034a, 0x0001, 0x001e, 0x1d08, 0x0003, 0x001e, 0x1d0b, 0x1d16, + 0x1d23, 0x0002, 0x034d, 0x0351, 0x0002, 0x001e, 0x1d30, 0x1d30, + 0x0002, 0x001e, 0x1d3f, 0x1d3f, 0x0003, 0x0359, 0x035c, 0x0361, + 0x0001, 0x001e, 0x1d08, 0x0003, 0x001e, 0x1d0b, 0x1d16, 0x1d23, + 0x0002, 0x0364, 0x0368, 0x0002, 0x001e, 0x1d4b, 0x1d4b, 0x0002, + // Entry 151C0 - 151FF + 0x001e, 0x1d53, 0x1d53, 0x0003, 0x0370, 0x0373, 0x0378, 0x0001, + 0x001e, 0x1d5b, 0x0003, 0x001e, 0x1d5f, 0x1d6b, 0x1d79, 0x0002, + 0x037b, 0x037f, 0x0002, 0x001e, 0x1d87, 0x1d87, 0x0002, 0x001e, + 0x1d97, 0x1d97, 0x0003, 0x0387, 0x0000, 0x038a, 0x0001, 0x0000, + 0x1ffe, 0x0002, 0x038d, 0x0391, 0x0002, 0x001e, 0x1d87, 0x1d87, + 0x0002, 0x001e, 0x1d97, 0x1d97, 0x0003, 0x0399, 0x0000, 0x039c, + 0x0001, 0x0000, 0x1ffe, 0x0002, 0x039f, 0x03a3, 0x0002, 0x001e, + 0x1da4, 0x1da4, 0x0002, 0x001e, 0x1db2, 0x1db2, 0x0004, 0x03ac, + // Entry 15200 - 1523F + 0x03af, 0x03b4, 0x03bf, 0x0001, 0x001e, 0x1dbd, 0x0003, 0x001e, + 0x1dc4, 0x1dd3, 0x1de4, 0x0002, 0x03b7, 0x03bb, 0x0002, 0x001e, + 0x1df5, 0x1df5, 0x0002, 0x001e, 0x1e09, 0x1e09, 0x0001, 0x001e, + 0x1e1a, 0x0004, 0x03c7, 0x0000, 0x03ca, 0x03d5, 0x0001, 0x001e, + 0x1e25, 0x0002, 0x03cd, 0x03d1, 0x0002, 0x001e, 0x1e2a, 0x1e2a, + 0x0002, 0x001e, 0x1e3b, 0x1e3b, 0x0001, 0x001e, 0x1e49, 0x0004, + 0x03dd, 0x0000, 0x03e0, 0x03eb, 0x0001, 0x001e, 0x1e25, 0x0002, + 0x03e3, 0x03e7, 0x0002, 0x001e, 0x1e2a, 0x1e2a, 0x0002, 0x001e, + // Entry 15240 - 1527F + 0x1e3b, 0x1e3b, 0x0001, 0x001e, 0x1e1a, 0x0003, 0x03f2, 0x03f5, + 0x03fc, 0x0001, 0x001e, 0x1e52, 0x0005, 0x001e, 0x1e61, 0x1e66, + 0x1e6c, 0x1e58, 0x1e72, 0x0002, 0x03ff, 0x0403, 0x0002, 0x001e, + 0x1e7c, 0x1e7c, 0x0002, 0x001e, 0x1e8f, 0x1e8f, 0x0003, 0x040b, + 0x0000, 0x040e, 0x0001, 0x0000, 0x21ec, 0x0002, 0x0411, 0x0415, + 0x0002, 0x001e, 0x1e9f, 0x1e9f, 0x0002, 0x001e, 0x1ead, 0x1ead, + 0x0003, 0x041d, 0x0000, 0x0420, 0x0001, 0x0000, 0x21ec, 0x0002, + 0x0423, 0x0427, 0x0002, 0x001e, 0x1e9f, 0x1e9f, 0x0002, 0x001e, + // Entry 15280 - 152BF + 0x1ead, 0x1ead, 0x0001, 0x042d, 0x0001, 0x001e, 0x1eb8, 0x0003, + 0x0000, 0x0434, 0x0439, 0x0003, 0x001e, 0x1ec5, 0x1ed8, 0x1eed, + 0x0002, 0x043c, 0x0440, 0x0002, 0x001e, 0x1f02, 0x1f02, 0x0002, + 0x001e, 0x1f1a, 0x1f1a, 0x0003, 0x0000, 0x0448, 0x044d, 0x0003, + 0x001e, 0x1ec5, 0x1ed8, 0x1eed, 0x0002, 0x0450, 0x0454, 0x0002, + 0x001e, 0x1f02, 0x1f02, 0x0002, 0x001e, 0x1f1a, 0x1f1a, 0x0003, + 0x0000, 0x045c, 0x0461, 0x0003, 0x001e, 0x1ec5, 0x1ed8, 0x1eed, + 0x0002, 0x0464, 0x0468, 0x0002, 0x001e, 0x1f02, 0x1f02, 0x0002, + // Entry 152C0 - 152FF + 0x001e, 0x1f1a, 0x1f1a, 0x0003, 0x0000, 0x0470, 0x0475, 0x0003, + 0x001e, 0x1f2f, 0x1f42, 0x1f57, 0x0002, 0x0478, 0x047c, 0x0002, + 0x001e, 0x1f6c, 0x1f6c, 0x0002, 0x001e, 0x1f84, 0x1f84, 0x0003, + 0x0000, 0x0484, 0x0489, 0x0003, 0x001e, 0x1f2f, 0x1f42, 0x1f57, + 0x0002, 0x048c, 0x0490, 0x0002, 0x001e, 0x1f6c, 0x1f6c, 0x0002, + 0x001e, 0x1f84, 0x1f84, 0x0003, 0x0000, 0x0498, 0x049d, 0x0003, + 0x001e, 0x1f2f, 0x1f42, 0x1f57, 0x0002, 0x04a0, 0x04a4, 0x0002, + 0x001e, 0x1f6c, 0x1f6c, 0x0002, 0x001e, 0x1f84, 0x1f84, 0x0003, + // Entry 15300 - 1533F + 0x0000, 0x04ac, 0x04b1, 0x0003, 0x001e, 0x1f99, 0x1fac, 0x1fc1, + 0x0002, 0x04b4, 0x04b8, 0x0002, 0x001e, 0x1fd6, 0x1fd6, 0x0002, + 0x001f, 0x0000, 0x0000, 0x0003, 0x0000, 0x04c0, 0x04c5, 0x0003, + 0x001e, 0x1f99, 0x1fac, 0x1fc1, 0x0002, 0x04c8, 0x04cc, 0x0002, + 0x001e, 0x1fd6, 0x1fd6, 0x0002, 0x001f, 0x0000, 0x0000, 0x0003, + 0x0000, 0x04d4, 0x04d9, 0x0003, 0x001e, 0x1f99, 0x1fac, 0x1fc1, + 0x0002, 0x04dc, 0x04e0, 0x0002, 0x001e, 0x1fd6, 0x1fd6, 0x0002, + 0x001f, 0x0000, 0x0000, 0x0003, 0x0000, 0x04e8, 0x04ed, 0x0003, + // Entry 15340 - 1537F + 0x001f, 0x0015, 0x0028, 0x003d, 0x0002, 0x04f0, 0x04f4, 0x0002, + 0x001f, 0x0052, 0x0052, 0x0002, 0x001f, 0x006a, 0x006a, 0x0003, + 0x0000, 0x04fc, 0x0501, 0x0003, 0x001f, 0x0015, 0x0028, 0x003d, + 0x0002, 0x0504, 0x0508, 0x0002, 0x001f, 0x0052, 0x0052, 0x0002, + 0x001f, 0x006a, 0x006a, 0x0003, 0x0000, 0x0510, 0x0515, 0x0003, + 0x001f, 0x0015, 0x0028, 0x003d, 0x0002, 0x0518, 0x051c, 0x0002, + 0x001f, 0x0052, 0x0052, 0x0002, 0x001f, 0x006a, 0x006a, 0x0003, + 0x0000, 0x0524, 0x0529, 0x0003, 0x001f, 0x007f, 0x0092, 0x00a7, + // Entry 15380 - 153BF + 0x0002, 0x052c, 0x0530, 0x0002, 0x001f, 0x00bc, 0x00bc, 0x0002, + 0x001f, 0x00d4, 0x00d4, 0x0003, 0x0000, 0x0538, 0x053d, 0x0003, + 0x001f, 0x007f, 0x0092, 0x00a7, 0x0002, 0x0540, 0x0544, 0x0002, + 0x001f, 0x00bc, 0x00bc, 0x0002, 0x001f, 0x00d4, 0x00d4, 0x0003, + 0x0000, 0x054c, 0x0551, 0x0003, 0x001f, 0x007f, 0x0092, 0x00a7, + 0x0002, 0x0554, 0x0558, 0x0002, 0x001f, 0x00bc, 0x00bc, 0x0002, + 0x001f, 0x00d4, 0x00d4, 0x0003, 0x0000, 0x0560, 0x0565, 0x0003, + 0x001f, 0x00e9, 0x00f7, 0x0107, 0x0002, 0x0568, 0x056c, 0x0002, + // Entry 153C0 - 153FF + 0x001f, 0x0117, 0x0117, 0x0002, 0x001f, 0x0129, 0x0129, 0x0003, + 0x0000, 0x0574, 0x0579, 0x0003, 0x001f, 0x00e9, 0x00f7, 0x0107, + 0x0002, 0x057c, 0x0580, 0x0002, 0x001f, 0x0117, 0x0117, 0x0002, + 0x001f, 0x0129, 0x0129, 0x0003, 0x0000, 0x0588, 0x058d, 0x0003, + 0x001f, 0x00e9, 0x00f7, 0x0107, 0x0002, 0x0590, 0x0594, 0x0002, + 0x001f, 0x0117, 0x0117, 0x0002, 0x001f, 0x0129, 0x0129, 0x0003, + 0x0000, 0x059c, 0x05a1, 0x0003, 0x001f, 0x0138, 0x0149, 0x015c, + 0x0002, 0x05a4, 0x05a8, 0x0002, 0x001f, 0x016f, 0x016f, 0x0002, + // Entry 15400 - 1543F + 0x001f, 0x0185, 0x0185, 0x0003, 0x0000, 0x05b0, 0x05b5, 0x0003, + 0x001f, 0x0138, 0x0149, 0x015c, 0x0002, 0x05b8, 0x05bc, 0x0002, + 0x001f, 0x016f, 0x016f, 0x0002, 0x001f, 0x0185, 0x0185, 0x0003, + 0x0000, 0x05c4, 0x05c9, 0x0003, 0x001f, 0x0138, 0x0149, 0x015c, + 0x0002, 0x05cc, 0x05d0, 0x0002, 0x001f, 0x016f, 0x016f, 0x0002, + 0x001f, 0x0185, 0x0185, 0x0001, 0x05d6, 0x0001, 0x001f, 0x0198, + 0x0003, 0x05dd, 0x05e0, 0x05e4, 0x0001, 0x001f, 0x01ad, 0x0002, + 0x001f, 0xffff, 0x01b2, 0x0002, 0x05e7, 0x05eb, 0x0002, 0x001f, + // Entry 15440 - 1547F + 0x01c3, 0x01c3, 0x0002, 0x001f, 0x01d5, 0x01d5, 0x0003, 0x05f3, + 0x0000, 0x05f6, 0x0001, 0x0000, 0x2000, 0x0002, 0x05f9, 0x05fd, + 0x0002, 0x001f, 0x01e4, 0x01e4, 0x0002, 0x001f, 0x01f2, 0x01f2, + 0x0003, 0x0605, 0x0000, 0x0608, 0x0001, 0x0000, 0x2000, 0x0002, + 0x060b, 0x060f, 0x0002, 0x001f, 0x01e4, 0x01e4, 0x0002, 0x001f, + 0x01f2, 0x01f2, 0x0003, 0x0617, 0x061a, 0x061e, 0x0001, 0x0010, + 0x0b77, 0x0002, 0x001f, 0xffff, 0x01fd, 0x0002, 0x0621, 0x0625, + 0x0002, 0x001f, 0x020f, 0x020f, 0x0002, 0x001f, 0x0222, 0x0222, + // Entry 15480 - 154BF + 0x0003, 0x062d, 0x0000, 0x0630, 0x0001, 0x000b, 0x1250, 0x0002, + 0x0633, 0x0637, 0x0002, 0x001f, 0x0232, 0x0232, 0x0002, 0x001f, + 0x0242, 0x0242, 0x0003, 0x063f, 0x0000, 0x0642, 0x0001, 0x000b, + 0x1250, 0x0002, 0x0645, 0x0649, 0x0002, 0x001f, 0x0232, 0x0232, + 0x0002, 0x001f, 0x0242, 0x0242, 0x0003, 0x0651, 0x0654, 0x0658, + 0x0001, 0x0015, 0x0ad8, 0x0002, 0x001f, 0xffff, 0x024f, 0x0002, + 0x065b, 0x065f, 0x0002, 0x001f, 0x0256, 0x0256, 0x0002, 0x001f, + 0x026a, 0x026a, 0x0003, 0x0667, 0x0000, 0x066a, 0x0001, 0x001f, + // Entry 154C0 - 154FF + 0x027b, 0x0002, 0x066d, 0x0671, 0x0002, 0x001f, 0x027f, 0x027f, + 0x0002, 0x001f, 0x028f, 0x028f, 0x0003, 0x0679, 0x0000, 0x067c, + 0x0001, 0x0000, 0x2002, 0x0002, 0x067f, 0x0683, 0x0002, 0x001f, + 0x029c, 0x029c, 0x0002, 0x001f, 0x02aa, 0x02aa, 0x0001, 0x0689, + 0x0001, 0x001f, 0x02b5, 0x0004, 0x0691, 0x0696, 0x069b, 0x06aa, + 0x0003, 0x001c, 0x0baf, 0x20c8, 0x20cf, 0x0003, 0x001f, 0x02c0, + 0x02c6, 0x02cf, 0x0002, 0x0000, 0x069e, 0x0003, 0x0000, 0x06a5, + 0x06a2, 0x0001, 0x001f, 0x02d8, 0x0003, 0x001f, 0xffff, 0x02f2, + // Entry 15500 - 1553F + 0x0300, 0x0002, 0x0000, 0x06ad, 0x0003, 0x06b1, 0x07f1, 0x0751, + 0x009e, 0x001f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0380, 0x03c8, + 0x0425, 0x045b, 0x049d, 0x04d6, 0x0524, 0x0569, 0x059c, 0x061d, + 0x064d, 0x0683, 0x06d1, 0x0704, 0x0734, 0x077c, 0x07dc, 0x0821, + 0x0872, 0x08b7, 0x08ed, 0xffff, 0xffff, 0x0942, 0xffff, 0x0983, + 0xffff, 0x09e1, 0x0a14, 0x0a44, 0x0a6e, 0xffff, 0xffff, 0x0ace, + 0x0b01, 0x0b48, 0xffff, 0xffff, 0xffff, 0x0ba7, 0xffff, 0x0bfc, + 0x0c3b, 0xffff, 0x0c95, 0x0cdd, 0x0d28, 0xffff, 0xffff, 0xffff, + // Entry 15540 - 1557F + 0xffff, 0x0db5, 0xffff, 0xffff, 0x0e08, 0x0e50, 0xffff, 0xffff, + 0x0eda, 0x0f1f, 0x0f55, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0fe7, 0x1014, 0x1047, 0x107a, 0x10aa, 0xffff, 0xffff, + 0x111c, 0xffff, 0x1151, 0xffff, 0xffff, 0x11b6, 0xffff, 0x120c, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1285, 0xffff, 0x12ca, 0x130c, + 0x1369, 0x13a8, 0xffff, 0xffff, 0xffff, 0x13f4, 0x1439, 0x1475, + 0xffff, 0xffff, 0x14d4, 0x1528, 0x1567, 0x1591, 0xffff, 0xffff, + 0x15e7, 0x161a, 0x1644, 0xffff, 0x168f, 0xffff, 0xffff, 0xffff, + // Entry 15580 - 155BF + 0xffff, 0xffff, 0x1780, 0x17b6, 0x17e3, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x187b, 0xffff, 0xffff, 0x18c6, + 0xffff, 0x18fb, 0xffff, 0x194b, 0x197b, 0x19b7, 0xffff, 0x19f5, + 0x1a34, 0xffff, 0xffff, 0xffff, 0x1a9c, 0x1acf, 0xffff, 0xffff, + 0x030d, 0x03f5, 0x05c3, 0x05ed, 0xffff, 0xffff, 0xffff, 0x172a, + 0x009e, 0x001f, 0x0334, 0x0344, 0x0355, 0x0365, 0x0394, 0x03d3, + 0x0433, 0x046d, 0x04ac, 0x04ec, 0x0537, 0x0576, 0x05a5, 0x0629, + 0x065b, 0x0699, 0x06de, 0x0710, 0x0748, 0x0798, 0x07ef, 0x0838, + // Entry 155C0 - 155FF + 0x0885, 0x08c5, 0x08fd, 0x0929, 0x0935, 0x0950, 0x0978, 0x0997, + 0x09cb, 0x09ee, 0x0a20, 0x0a4e, 0x0a7f, 0x0aad, 0x0abd, 0x0adb, + 0x0b12, 0x0b52, 0x0b72, 0x0b7d, 0x0b98, 0x0bbb, 0x0bef, 0x0c0d, + 0x0c4b, 0x0c77, 0x0ca9, 0x0cf2, 0x0d33, 0x0d55, 0x0d6c, 0x0d97, + 0x0da6, 0x0dc1, 0x0de5, 0x0df9, 0x0e1c, 0x0e68, 0x0eb6, 0x0ecf, + 0x0eed, 0x0f2d, 0x0f5f, 0x0f7f, 0x0f89, 0x0f9b, 0x0fa9, 0x0fbd, + 0x0fd0, 0x0ff2, 0x1021, 0x1054, 0x1086, 0x10c8, 0x10f2, 0x1105, + 0x1126, 0x1146, 0x1162, 0x1190, 0x11a2, 0x11c8, 0x11f8, 0x1219, + // Entry 15600 - 1563F + 0x123f, 0x1252, 0x125f, 0x1270, 0x1294, 0x12be, 0x12dc, 0x1327, + 0x137a, 0x13b3, 0x13d5, 0x13df, 0x13e9, 0x1407, 0x1449, 0x1487, + 0x14b7, 0x14c0, 0x14ec, 0x1539, 0x1571, 0x159f, 0x15c7, 0x15d1, + 0x15f4, 0x1624, 0x1652, 0x167a, 0x16b1, 0x1701, 0x170f, 0x171b, + 0x1766, 0x1774, 0x178e, 0x17c1, 0x17ed, 0x180d, 0x181b, 0x1831, + 0x1846, 0x1859, 0x1866, 0x1870, 0x1886, 0x18a8, 0x18ba, 0x18d0, + 0x18f0, 0x190e, 0x1940, 0x1957, 0x198b, 0x19c3, 0x19e7, 0x1a06, + 0x1a43, 0x1a6d, 0x1a79, 0x1a86, 0x1aa9, 0x1ae2, 0x0ea4, 0xffff, + // Entry 15640 - 1567F + 0x0316, 0x0401, 0x05cd, 0x05f9, 0xffff, 0xffff, 0xffff, 0x173a, + 0x009e, 0x001f, 0xffff, 0xffff, 0xffff, 0xffff, 0x03b0, 0x03e6, + 0x0449, 0x0487, 0x04c3, 0x050a, 0x0552, 0x058b, 0x05b6, 0x063d, + 0x0671, 0x06b7, 0x06f3, 0x0724, 0x0764, 0x07bc, 0x080a, 0x0857, + 0x08a0, 0x08db, 0x0915, 0xffff, 0xffff, 0x0966, 0xffff, 0x09b3, + 0xffff, 0x0a03, 0x0a34, 0x0a60, 0x0a98, 0xffff, 0xffff, 0x0af0, + 0x0b2b, 0x0b64, 0xffff, 0xffff, 0xffff, 0x0bd7, 0xffff, 0x0c26, + 0x0c63, 0xffff, 0x0cc5, 0x0d0f, 0x0d46, 0xffff, 0xffff, 0xffff, + // Entry 15680 - 156BF + 0xffff, 0x0dd5, 0xffff, 0xffff, 0x0e38, 0x0e88, 0xffff, 0xffff, + 0x0f08, 0x0f43, 0x0f71, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1005, 0x1036, 0x1069, 0x109a, 0x10df, 0xffff, 0xffff, + 0x1138, 0xffff, 0x117b, 0xffff, 0xffff, 0x11e2, 0xffff, 0x122e, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ab, 0xffff, 0x12f6, 0x134a, + 0x1393, 0x13c6, 0xffff, 0xffff, 0xffff, 0x1422, 0x1461, 0x14a1, + 0xffff, 0xffff, 0x150c, 0x1552, 0x1583, 0x15b5, 0xffff, 0xffff, + 0x1609, 0x1636, 0x1668, 0xffff, 0x16db, 0xffff, 0xffff, 0xffff, + // Entry 156C0 - 156FF + 0xffff, 0xffff, 0x17a4, 0x17d4, 0x17ff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1899, 0xffff, 0xffff, 0x18e2, + 0xffff, 0x1929, 0xffff, 0x196b, 0x19a3, 0x19d7, 0xffff, 0x1a1f, + 0x1a5a, 0xffff, 0xffff, 0xffff, 0x1abe, 0x1afd, 0xffff, 0xffff, + 0x0327, 0x0415, 0x05df, 0x060d, 0xffff, 0xffff, 0xffff, 0x1752, + 0x0003, 0x0004, 0x0247, 0x062d, 0x0012, 0x0017, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0024, 0x004f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0239, 0x0005, + // Entry 15700 - 1573F + 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, + 0x0021, 0x0001, 0x001f, 0x1b14, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, 0x0035, + 0x0032, 0x0038, 0x0001, 0x001f, 0x1b17, 0x0001, 0x001f, 0x1b3b, + 0x0001, 0x001f, 0x1b59, 0x0001, 0x0000, 0x04af, 0x0004, 0x004c, + 0x0046, 0x0043, 0x0049, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0058, 0x00bd, 0x0114, 0x0149, 0x01ec, 0x0206, 0x0217, 0x0228, + // Entry 15740 - 1577F + 0x0002, 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, 0x000d, + 0x001f, 0xffff, 0x1b75, 0x1b7a, 0x1b7f, 0x1b84, 0x1b89, 0x1b8e, + 0x1b93, 0x1b98, 0x1b9d, 0x1ba2, 0x1ba7, 0x1bac, 0x000d, 0x0000, + 0xffff, 0x22ea, 0x22ec, 0x22d9, 0x2382, 0x22d9, 0x214e, 0x22ea, + 0x2382, 0x2055, 0x22ea, 0x2382, 0x2382, 0x000d, 0x001f, 0xffff, + 0x1bb1, 0x1bbb, 0x1bc3, 0x1bcb, 0x1bd3, 0x1bdb, 0x1be2, 0x1bea, + 0x1bf2, 0x1bf9, 0x1bff, 0x1c06, 0x0003, 0x0090, 0x009f, 0x00ae, + 0x000d, 0x001f, 0xffff, 0x1b75, 0x1b7a, 0x1b7f, 0x1b84, 0x1b89, + // Entry 15780 - 157BF + 0x1b8e, 0x1b93, 0x1b98, 0x1b9d, 0x1ba2, 0x1ba7, 0x1bac, 0x000d, + 0x0000, 0xffff, 0x22ea, 0x22ec, 0x22d9, 0x2382, 0x22d9, 0x214e, + 0x22ea, 0x2382, 0x2055, 0x22ea, 0x2382, 0x2382, 0x000d, 0x001f, + 0xffff, 0x1bb1, 0x1c0e, 0x1c16, 0x1c1e, 0x1c26, 0x1c2e, 0x1c35, + 0x1c3d, 0x1c45, 0x1c4c, 0x1c52, 0x1c59, 0x0002, 0x00c0, 0x00ea, + 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, 0x001f, + 0x1c61, 0x1c65, 0x1c69, 0x1c6d, 0x1c71, 0x1c75, 0x1c79, 0x0007, + 0x0000, 0x2055, 0x2382, 0x2382, 0x2382, 0x22ec, 0x22ec, 0x228e, + // Entry 157C0 - 157FF + 0x0007, 0x001f, 0x1c61, 0x1c65, 0x1c69, 0x1c6d, 0x1c71, 0x1c75, + 0x1c79, 0x0007, 0x001f, 0x1c7d, 0x1c85, 0x1c90, 0x1c9a, 0x1ca5, + 0x1cae, 0x1cb7, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, 0x0102, + 0x0007, 0x001f, 0x1c61, 0x1c65, 0x1c69, 0x1c6d, 0x1c71, 0x1c75, + 0x1c79, 0x0007, 0x0000, 0x2055, 0x2382, 0x2382, 0x2382, 0x22ec, + 0x22ec, 0x228e, 0x0007, 0x001f, 0x1c61, 0x1c65, 0x1c69, 0x1c6d, + 0x1c71, 0x1c75, 0x1c79, 0x0007, 0x001f, 0x1cc1, 0x1cc9, 0x1cd4, + 0x1cde, 0x1ce9, 0x1cf2, 0x1cfb, 0x0002, 0x0117, 0x0130, 0x0003, + // Entry 15800 - 1583F + 0x011b, 0x0122, 0x0129, 0x0005, 0x001f, 0xffff, 0x1d05, 0x1d09, + 0x1d0d, 0x1d11, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x001f, 0xffff, 0x1d15, 0x1d24, 0x1d33, 0x1d42, + 0x0003, 0x0134, 0x013b, 0x0142, 0x0005, 0x001f, 0xffff, 0x1d05, + 0x1d09, 0x1d0d, 0x1d11, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x001f, 0xffff, 0x1d15, 0x1d24, 0x1d33, + 0x1d42, 0x0002, 0x014c, 0x019c, 0x0003, 0x0150, 0x0000, 0x0176, + 0x000a, 0x015e, 0x0161, 0x015b, 0x0164, 0x016a, 0x0170, 0x0173, + // Entry 15840 - 1587F + 0x0000, 0x0167, 0x016d, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x001f, 0x1d5a, 0x0001, + 0x001f, 0x1d60, 0x0001, 0x001f, 0x1d68, 0x0001, 0x001f, 0x1d70, + 0x0001, 0x001f, 0x1d78, 0x0001, 0x001f, 0x1d80, 0x000a, 0x0184, + 0x0187, 0x0181, 0x018a, 0x0190, 0x0196, 0x0199, 0x0000, 0x018d, + 0x0193, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x001f, 0x1d85, 0x0001, 0x001f, 0x1d60, + 0x0001, 0x001f, 0x1d90, 0x0001, 0x001f, 0x1d9a, 0x0001, 0x001f, + // Entry 15880 - 158BF + 0x1da7, 0x0001, 0x001f, 0x1db1, 0x0003, 0x01a0, 0x0000, 0x01c6, + 0x000a, 0x01ae, 0x01b1, 0x01ab, 0x01b4, 0x01ba, 0x01c0, 0x01c3, + 0x0000, 0x01b7, 0x01bd, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x001f, 0x1d5a, 0x0001, + 0x001f, 0x1db8, 0x0001, 0x001f, 0x1d68, 0x0001, 0x001f, 0x1d70, + 0x0001, 0x001f, 0x1d78, 0x0001, 0x001f, 0x1dbe, 0x000a, 0x01d4, + 0x01d7, 0x01d1, 0x01da, 0x01e0, 0x01e6, 0x01e9, 0x0000, 0x01dd, + 0x01e3, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, 0x04ef, 0x0001, + // Entry 158C0 - 158FF + 0x0000, 0x04f2, 0x0001, 0x001f, 0x1dc3, 0x0001, 0x001f, 0x1db8, + 0x0001, 0x001f, 0x1dcd, 0x0001, 0x001f, 0x1dd6, 0x0001, 0x001f, + 0x1de2, 0x0001, 0x001f, 0x1dbe, 0x0003, 0x01fb, 0x0000, 0x01f0, + 0x0002, 0x01f3, 0x01f7, 0x0002, 0x001f, 0x1deb, 0x1e02, 0x0002, + 0x001f, 0x1df0, 0x1e11, 0x0002, 0x01fe, 0x0202, 0x0002, 0x001f, + 0x1deb, 0x1e21, 0x0002, 0x001f, 0x1e1b, 0x1e26, 0x0004, 0x0214, + 0x020e, 0x020b, 0x0211, 0x0001, 0x001f, 0x1e2a, 0x0001, 0x001f, + 0x1e42, 0x0001, 0x0000, 0x0514, 0x0001, 0x001f, 0x1e54, 0x0004, + // Entry 15900 - 1593F + 0x0225, 0x021f, 0x021c, 0x0222, 0x0001, 0x001f, 0x1e5b, 0x0001, + 0x001f, 0x1e6b, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0236, 0x0230, 0x022d, 0x0233, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x023f, 0x0001, + 0x0241, 0x0001, 0x0243, 0x0002, 0x001f, 0x1e78, 0x1e88, 0x0040, + 0x0288, 0x0000, 0x0000, 0x028d, 0x02a4, 0x02bb, 0x02d2, 0x02e9, + 0x02fb, 0x030d, 0x0324, 0x0336, 0x0348, 0x0363, 0x0379, 0x0000, + // Entry 15940 - 1597F + 0x0000, 0x0000, 0x038f, 0x03a8, 0x03ba, 0x0000, 0x0000, 0x0000, + 0x03cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d1, 0x03e5, + 0x03f9, 0x040d, 0x0421, 0x0435, 0x0449, 0x045d, 0x0471, 0x0485, + 0x0499, 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, + 0x0539, 0x054d, 0x0561, 0x0000, 0x0575, 0x0000, 0x057a, 0x0590, + 0x05a2, 0x05b4, 0x05ca, 0x05dc, 0x05ee, 0x0604, 0x0616, 0x0628, + 0x0001, 0x028a, 0x0001, 0x001f, 0x1e8f, 0x0003, 0x0291, 0x0294, + 0x0299, 0x0001, 0x001f, 0x1e94, 0x0003, 0x001f, 0x1e9a, 0x1ea8, + // Entry 15980 - 159BF + 0x1eaf, 0x0002, 0x029c, 0x02a0, 0x0002, 0x001f, 0x1ebe, 0x1ebe, + 0x0002, 0x001f, 0x1ecd, 0x1ecd, 0x0003, 0x02a8, 0x02ab, 0x02b0, + 0x0001, 0x001f, 0x1e94, 0x0003, 0x001f, 0x1e9a, 0x1ea8, 0x1eaf, + 0x0002, 0x02b3, 0x02b7, 0x0002, 0x001f, 0x1ebe, 0x1ebe, 0x0002, + 0x001f, 0x1ecd, 0x1ecd, 0x0003, 0x02bf, 0x02c2, 0x02c7, 0x0001, + 0x001f, 0x1e94, 0x0003, 0x001f, 0x1e9a, 0x1ea8, 0x1eaf, 0x0002, + 0x02ca, 0x02ce, 0x0002, 0x001f, 0x1ebe, 0x1ebe, 0x0002, 0x001f, + 0x1ecd, 0x1ecd, 0x0003, 0x02d6, 0x02d9, 0x02de, 0x0001, 0x001f, + // Entry 159C0 - 159FF + 0x1edc, 0x0003, 0x001f, 0x1ee8, 0x1efc, 0x1f0b, 0x0002, 0x02e1, + 0x02e5, 0x0002, 0x001f, 0x1f20, 0x1f20, 0x0002, 0x001f, 0x1f35, + 0x1f35, 0x0003, 0x02ed, 0x0000, 0x02f0, 0x0001, 0x001f, 0x1f4a, + 0x0002, 0x02f3, 0x02f7, 0x0002, 0x001f, 0x1f20, 0x1f20, 0x0002, + 0x001f, 0x1f35, 0x1f35, 0x0003, 0x02ff, 0x0000, 0x0302, 0x0001, + 0x001f, 0x1f4a, 0x0002, 0x0305, 0x0309, 0x0002, 0x001f, 0x1f20, + 0x1f20, 0x0002, 0x001f, 0x1f35, 0x1f35, 0x0003, 0x0311, 0x0314, + 0x0319, 0x0001, 0x001f, 0x1f53, 0x0003, 0x001f, 0x1f5d, 0x1f6f, + // Entry 15A00 - 15A3F + 0x1f7c, 0x0002, 0x031c, 0x0320, 0x0002, 0x001f, 0x1f8f, 0x1f8f, + 0x0002, 0x001f, 0x1fa2, 0x1fa2, 0x0003, 0x0328, 0x0000, 0x032b, + 0x0001, 0x001f, 0x1fb5, 0x0002, 0x032e, 0x0332, 0x0002, 0x001f, + 0x1f8f, 0x1f8f, 0x0002, 0x001f, 0x1fa2, 0x1fa2, 0x0003, 0x033a, + 0x0000, 0x033d, 0x0001, 0x001f, 0x1fb5, 0x0002, 0x0340, 0x0344, + 0x0002, 0x001f, 0x1f8f, 0x1f8f, 0x0002, 0x001f, 0x1fa2, 0x1fa2, + 0x0004, 0x034d, 0x0350, 0x0355, 0x0360, 0x0001, 0x001f, 0x1fba, + 0x0003, 0x001f, 0x1fc0, 0x1fce, 0x1fd7, 0x0002, 0x0358, 0x035c, + // Entry 15A40 - 15A7F + 0x0002, 0x001f, 0x1fe6, 0x1fe6, 0x0002, 0x0020, 0x0000, 0x0000, + 0x0001, 0x0020, 0x000f, 0x0004, 0x0368, 0x0000, 0x036b, 0x0376, + 0x0001, 0x0020, 0x0019, 0x0002, 0x036e, 0x0372, 0x0002, 0x001f, + 0x1fe6, 0x1fe6, 0x0002, 0x0020, 0x0000, 0x0000, 0x0001, 0x0020, + 0x000f, 0x0004, 0x037e, 0x0000, 0x0381, 0x038c, 0x0001, 0x0020, + 0x0019, 0x0002, 0x0384, 0x0388, 0x0002, 0x001f, 0x1fe6, 0x1fe6, + 0x0002, 0x0020, 0x0000, 0x0000, 0x0001, 0x0020, 0x000f, 0x0003, + 0x0393, 0x0396, 0x039d, 0x0001, 0x0020, 0x001e, 0x0005, 0x0020, + // Entry 15A80 - 15ABF + 0x002e, 0x0033, 0x0038, 0x0024, 0x003e, 0x0002, 0x03a0, 0x03a4, + 0x0002, 0x0020, 0x0043, 0x0043, 0x0002, 0x0020, 0x0052, 0x0052, + 0x0003, 0x03ac, 0x0000, 0x03af, 0x0001, 0x0020, 0x0061, 0x0002, + 0x03b2, 0x03b6, 0x0002, 0x0020, 0x0043, 0x0043, 0x0002, 0x0020, + 0x0052, 0x0052, 0x0003, 0x03be, 0x0000, 0x03c1, 0x0001, 0x0020, + 0x0061, 0x0002, 0x03c4, 0x03c8, 0x0002, 0x0020, 0x0043, 0x0043, + 0x0002, 0x0020, 0x0052, 0x0052, 0x0001, 0x03ce, 0x0001, 0x0020, + 0x0065, 0x0003, 0x0000, 0x03d5, 0x03da, 0x0003, 0x0020, 0x006e, + // Entry 15AC0 - 15AFF + 0x007e, 0x0089, 0x0002, 0x03dd, 0x03e1, 0x0002, 0x0020, 0x009a, + 0x009a, 0x0002, 0x0020, 0x00ab, 0x00ab, 0x0003, 0x0000, 0x03e9, + 0x03ee, 0x0003, 0x0020, 0x006e, 0x007e, 0x0089, 0x0002, 0x03f1, + 0x03f5, 0x0002, 0x0020, 0x009a, 0x009a, 0x0002, 0x0020, 0x00ab, + 0x00ab, 0x0003, 0x0000, 0x03fd, 0x0402, 0x0003, 0x0020, 0x006e, + 0x007e, 0x0089, 0x0002, 0x0405, 0x0409, 0x0002, 0x0020, 0x009a, + 0x009a, 0x0002, 0x0020, 0x00ab, 0x00ab, 0x0003, 0x0000, 0x0411, + 0x0416, 0x0003, 0x0020, 0x00bc, 0x00cf, 0x00dd, 0x0002, 0x0419, + // Entry 15B00 - 15B3F + 0x041d, 0x0002, 0x0020, 0x00f1, 0x00f1, 0x0002, 0x0020, 0x0105, + 0x0105, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x0020, 0x00bc, + 0x00cf, 0x00dd, 0x0002, 0x042d, 0x0431, 0x0002, 0x0020, 0x00f1, + 0x00f1, 0x0002, 0x0020, 0x0105, 0x0105, 0x0003, 0x0000, 0x0439, + 0x043e, 0x0003, 0x0020, 0x00bc, 0x00cf, 0x00dd, 0x0002, 0x0441, + 0x0445, 0x0002, 0x0020, 0x00f1, 0x00f1, 0x0002, 0x0020, 0x0105, + 0x0105, 0x0003, 0x0000, 0x044d, 0x0452, 0x0003, 0x0020, 0x0119, + 0x012b, 0x0138, 0x0002, 0x0455, 0x0459, 0x0002, 0x0020, 0x014b, + // Entry 15B40 - 15B7F + 0x014b, 0x0002, 0x0020, 0x015e, 0x015e, 0x0003, 0x0000, 0x0461, + 0x0466, 0x0003, 0x0020, 0x0119, 0x012b, 0x0138, 0x0002, 0x0469, + 0x046d, 0x0002, 0x0020, 0x014b, 0x014b, 0x0002, 0x0020, 0x015e, + 0x015e, 0x0003, 0x0000, 0x0475, 0x047a, 0x0003, 0x0020, 0x0119, + 0x012b, 0x0138, 0x0002, 0x047d, 0x0481, 0x0002, 0x0020, 0x014b, + 0x014b, 0x0002, 0x0020, 0x015e, 0x015e, 0x0003, 0x0000, 0x0489, + 0x048e, 0x0003, 0x0020, 0x0171, 0x0184, 0x0192, 0x0002, 0x0491, + 0x0495, 0x0002, 0x0020, 0x01a6, 0x01a6, 0x0002, 0x0020, 0x01ba, + // Entry 15B80 - 15BBF + 0x01ba, 0x0003, 0x0000, 0x049d, 0x04a2, 0x0003, 0x0020, 0x0171, + 0x0184, 0x0192, 0x0002, 0x04a5, 0x04a9, 0x0002, 0x0020, 0x01a6, + 0x01a6, 0x0002, 0x0020, 0x01ba, 0x01ba, 0x0003, 0x0000, 0x04b1, + 0x04b6, 0x0003, 0x0020, 0x0171, 0x0184, 0x0192, 0x0002, 0x04b9, + 0x04bd, 0x0002, 0x0020, 0x01a6, 0x01a6, 0x0002, 0x0020, 0x01ba, + 0x01ba, 0x0003, 0x0000, 0x04c5, 0x04ca, 0x0003, 0x0020, 0x01ce, + 0x01df, 0x01eb, 0x0002, 0x04cd, 0x04d1, 0x0002, 0x0020, 0x01fd, + 0x01fd, 0x0002, 0x0020, 0x020f, 0x020f, 0x0003, 0x0000, 0x04d9, + // Entry 15BC0 - 15BFF + 0x04de, 0x0003, 0x0020, 0x01ce, 0x01df, 0x01eb, 0x0002, 0x04e1, + 0x04e5, 0x0002, 0x0020, 0x01fd, 0x01fd, 0x0002, 0x0020, 0x020f, + 0x020f, 0x0003, 0x0000, 0x04ed, 0x04f2, 0x0003, 0x0020, 0x01ce, + 0x01df, 0x01eb, 0x0002, 0x04f5, 0x04f9, 0x0002, 0x0020, 0x01fd, + 0x01fd, 0x0002, 0x0020, 0x020f, 0x020f, 0x0003, 0x0000, 0x0501, + 0x0506, 0x0003, 0x0020, 0x0221, 0x0232, 0x023e, 0x0002, 0x0509, + 0x050d, 0x0002, 0x0020, 0x0250, 0x0250, 0x0002, 0x0020, 0x0262, + 0x0262, 0x0003, 0x0000, 0x0515, 0x051a, 0x0003, 0x0020, 0x0221, + // Entry 15C00 - 15C3F + 0x0232, 0x023e, 0x0002, 0x051d, 0x0521, 0x0002, 0x0020, 0x0250, + 0x0250, 0x0002, 0x0020, 0x0262, 0x0262, 0x0003, 0x0000, 0x0529, + 0x052e, 0x0003, 0x0020, 0x0221, 0x0232, 0x023e, 0x0002, 0x0531, + 0x0535, 0x0002, 0x0020, 0x0250, 0x0250, 0x0002, 0x0020, 0x0262, + 0x0262, 0x0003, 0x0000, 0x053d, 0x0542, 0x0003, 0x0020, 0x0274, + 0x0286, 0x0293, 0x0002, 0x0545, 0x0549, 0x0002, 0x0020, 0x02a6, + 0x02a6, 0x0002, 0x0020, 0x02b9, 0x02b9, 0x0003, 0x0000, 0x0551, + 0x0556, 0x0003, 0x0020, 0x0274, 0x0286, 0x0293, 0x0002, 0x0559, + // Entry 15C40 - 15C7F + 0x055d, 0x0002, 0x0020, 0x02a6, 0x02a6, 0x0002, 0x0020, 0x02b9, + 0x02b9, 0x0003, 0x0000, 0x0565, 0x056a, 0x0003, 0x0020, 0x0274, + 0x0286, 0x0293, 0x0002, 0x056d, 0x0571, 0x0002, 0x0020, 0x02a6, + 0x02a6, 0x0002, 0x0020, 0x02b9, 0x02b9, 0x0001, 0x0577, 0x0001, + 0x0020, 0x02cc, 0x0003, 0x057e, 0x0581, 0x0585, 0x0001, 0x0020, + 0x02d3, 0x0002, 0x0020, 0xffff, 0x02d9, 0x0002, 0x0588, 0x058c, + 0x0002, 0x0020, 0x02e6, 0x02e6, 0x0002, 0x0020, 0x02f5, 0x02f5, + 0x0003, 0x0594, 0x0000, 0x0597, 0x0001, 0x0000, 0x2143, 0x0002, + // Entry 15C80 - 15CBF + 0x059a, 0x059e, 0x0002, 0x0020, 0x02e6, 0x02e6, 0x0002, 0x0020, + 0x02f5, 0x02f5, 0x0003, 0x05a6, 0x0000, 0x05a9, 0x0001, 0x0000, + 0x2143, 0x0002, 0x05ac, 0x05b0, 0x0002, 0x0020, 0x02e6, 0x02e6, + 0x0002, 0x0020, 0x02f5, 0x02f5, 0x0003, 0x05b8, 0x05bb, 0x05bf, + 0x0001, 0x0020, 0x0304, 0x0002, 0x0020, 0xffff, 0x030c, 0x0002, + 0x05c2, 0x05c6, 0x0002, 0x0020, 0x031b, 0x031b, 0x0002, 0x0020, + 0x032c, 0x032c, 0x0003, 0x05ce, 0x0000, 0x05d1, 0x0001, 0x000b, + 0x1250, 0x0002, 0x05d4, 0x05d8, 0x0002, 0x0020, 0x031b, 0x031b, + // Entry 15CC0 - 15CFF + 0x0002, 0x0020, 0x032c, 0x032c, 0x0003, 0x05e0, 0x0000, 0x05e3, + 0x0001, 0x000b, 0x1250, 0x0002, 0x05e6, 0x05ea, 0x0002, 0x0020, + 0x031b, 0x031b, 0x0002, 0x0020, 0x032c, 0x032c, 0x0003, 0x05f2, + 0x05f5, 0x05f9, 0x0001, 0x0020, 0x033d, 0x0002, 0x0020, 0xffff, + 0x0346, 0x0002, 0x05fc, 0x0600, 0x0002, 0x0020, 0x034c, 0x034c, + 0x0002, 0x0020, 0x035e, 0x035e, 0x0003, 0x0608, 0x0000, 0x060b, + 0x0001, 0x0000, 0x2002, 0x0002, 0x060e, 0x0612, 0x0002, 0x0020, + 0x034c, 0x034c, 0x0002, 0x0020, 0x035e, 0x035e, 0x0003, 0x061a, + // Entry 15D00 - 15D3F + 0x0000, 0x061d, 0x0001, 0x0000, 0x2002, 0x0002, 0x0620, 0x0624, + 0x0002, 0x0020, 0x034c, 0x034c, 0x0002, 0x0020, 0x035e, 0x035e, + 0x0001, 0x062a, 0x0001, 0x0020, 0x0370, 0x0004, 0x0632, 0x0637, + 0x063c, 0x064b, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x2392, 0x0003, + 0x0020, 0x037a, 0x038f, 0x03a5, 0x0002, 0x0000, 0x063f, 0x0003, + 0x0000, 0x0646, 0x0643, 0x0001, 0x0020, 0x03bd, 0x0003, 0x0020, + 0xffff, 0x03d9, 0x03ef, 0x0002, 0x0814, 0x064e, 0x0003, 0x06e8, + 0x077e, 0x0652, 0x0094, 0x0020, 0x040d, 0x0420, 0x0438, 0x044f, + // Entry 15D40 - 15D7F + 0x0481, 0x04d8, 0x0523, 0x0581, 0x05f8, 0x0673, 0x06f1, 0x075a, + 0x0799, 0x07d2, 0x0816, 0x0873, 0x08d6, 0x091c, 0x0973, 0x09db, + 0x0a49, 0x0aaa, 0x0b07, 0x0b4e, 0x0b94, 0x0bcc, 0x0bdb, 0x0c00, + 0x0c32, 0x0c5f, 0x0c95, 0x0cc0, 0x0cfe, 0x0d38, 0x0d77, 0x0dad, + 0x0dc6, 0x0def, 0x0e38, 0x0e90, 0x0ec2, 0x0ed1, 0x0eec, 0x0f1b, + 0x0f55, 0x0f7f, 0x0fd6, 0x1014, 0x104e, 0x10ad, 0x1100, 0x112a, + 0x1143, 0x117d, 0x1191, 0x11b3, 0x11e3, 0x11fd, 0x1239, 0x12ac, + 0x1302, 0x131a, 0x134f, 0x13bc, 0x13fc, 0x1428, 0x1436, 0x144c, + // Entry 15D80 - 15DBF + 0x145e, 0x1479, 0x1493, 0x14bd, 0x14fc, 0x153d, 0x157b, 0x15cc, + 0x161e, 0x1639, 0x1665, 0x1691, 0x16b9, 0x16f3, 0x1707, 0x1730, + 0x1764, 0x1791, 0x17c1, 0x17d2, 0x17e4, 0x17f6, 0x1822, 0x1854, + 0x1886, 0x18f8, 0x1959, 0x19a1, 0x19cd, 0x19df, 0x19ed, 0x1a14, + 0x1a6b, 0x1abc, 0x1af2, 0x1aff, 0x1b35, 0x1b96, 0x1be2, 0x1c1f, + 0x1c51, 0x1c5f, 0x1c8a, 0x1cc9, 0x1d06, 0x1d3c, 0x1d7c, 0x1dd8, + 0x1dea, 0x1df9, 0x1e0c, 0x1e26, 0x1e4b, 0x1e8c, 0x1ec8, 0x1ef4, + 0x1f10, 0x1f2d, 0x1f47, 0x1f5c, 0x1f6c, 0x1f7a, 0x1f98, 0x1fc6, + // Entry 15DC0 - 15DFF + 0x1fda, 0x1ff8, 0x2024, 0x2048, 0x2082, 0x20a1, 0x20e4, 0x212a, + 0x215a, 0x2185, 0x21d2, 0x2208, 0x2218, 0x222c, 0x225f, 0x22ac, + 0x0094, 0x0020, 0xffff, 0xffff, 0xffff, 0xffff, 0x0467, 0x04c5, + 0x050e, 0x055d, 0x05d5, 0x064e, 0x06cd, 0x0749, 0x078c, 0x07c3, + 0x0800, 0x0852, 0x08c6, 0x0906, 0x0958, 0x09b9, 0x0a2f, 0x0a8d, + 0x0af4, 0x0b3d, 0x0b80, 0xffff, 0xffff, 0x0bef, 0xffff, 0x0c4c, + 0xffff, 0x0cb0, 0x0cf0, 0x0d2a, 0x0d64, 0xffff, 0xffff, 0x0dde, + 0x0e21, 0x0e7f, 0xffff, 0xffff, 0xffff, 0x0f06, 0xffff, 0x0f67, + // Entry 15E00 - 15E3F + 0x0fbf, 0xffff, 0x1034, 0x1092, 0x10f3, 0xffff, 0xffff, 0xffff, + 0xffff, 0x11a3, 0xffff, 0xffff, 0x1219, 0x1289, 0xffff, 0xffff, + 0x1329, 0x13ab, 0x13ee, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x14b0, 0x14e7, 0x152e, 0x156b, 0x15ab, 0xffff, 0xffff, + 0x1657, 0xffff, 0x16a0, 0xffff, 0xffff, 0x171e, 0xffff, 0x177d, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1811, 0xffff, 0x1864, 0x18da, + 0x1944, 0x1993, 0xffff, 0xffff, 0xffff, 0x19fb, 0x1a54, 0x1aa9, + 0xffff, 0xffff, 0x1b19, 0x1b7d, 0x1bd0, 0x1c0e, 0xffff, 0xffff, + // Entry 15E40 - 15E7F + 0x1c79, 0x1cbc, 0x1cf3, 0xffff, 0x1d56, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1e36, 0x1e7d, 0x1eba, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1f89, 0xffff, 0xffff, 0x1fea, + 0xffff, 0x2033, 0xffff, 0x2091, 0x20d1, 0x211a, 0xffff, 0x216c, + 0x21bf, 0xffff, 0xffff, 0xffff, 0x224a, 0x2291, 0x0094, 0x0020, + 0xffff, 0xffff, 0xffff, 0xffff, 0x04a5, 0x04f5, 0x0542, 0x05ab, + 0x0625, 0x06a2, 0x071f, 0x0775, 0x07b0, 0x07eb, 0x0836, 0x089f, + 0x08f0, 0x093c, 0x0998, 0x0a07, 0x0a6d, 0x0ad1, 0x0b24, 0x0b69, + // Entry 15E80 - 15EBF + 0x0bb2, 0xffff, 0xffff, 0x0c1b, 0xffff, 0x0c7c, 0xffff, 0x0cda, + 0x0d16, 0x0d50, 0x0d94, 0xffff, 0xffff, 0x0e0a, 0x0e59, 0x0eab, + 0xffff, 0xffff, 0xffff, 0x0f3a, 0xffff, 0x0fa1, 0x0ff7, 0xffff, + 0x1072, 0x10d2, 0x1117, 0xffff, 0xffff, 0xffff, 0xffff, 0x11cd, + 0xffff, 0xffff, 0x1263, 0x12d9, 0xffff, 0xffff, 0x137f, 0x13d7, + 0x1414, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x14d4, + 0x1517, 0x1556, 0x1595, 0x15f7, 0xffff, 0xffff, 0x167d, 0xffff, + 0x16d8, 0xffff, 0xffff, 0x174c, 0xffff, 0x17ab, 0xffff, 0xffff, + // Entry 15EC0 - 15EFF + 0xffff, 0xffff, 0x183d, 0xffff, 0x18b2, 0x1920, 0x1978, 0x19b9, + 0xffff, 0xffff, 0xffff, 0x1a36, 0x1a8c, 0x1ad9, 0xffff, 0xffff, + 0x1b5b, 0x1bb5, 0x1bfa, 0x1c3a, 0xffff, 0xffff, 0x1ca5, 0x1ce0, + 0x1d23, 0xffff, 0x1dac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1e66, 0x1ea5, 0x1ee0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1fb1, 0xffff, 0xffff, 0x2010, 0xffff, 0x2067, + 0xffff, 0x20bb, 0x2101, 0x2144, 0xffff, 0x21a4, 0x21ef, 0xffff, + 0xffff, 0xffff, 0x227a, 0x22cd, 0x0003, 0x0818, 0x0887, 0x084b, + // Entry 15F00 - 15F3F + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, + 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 15F40 - 15F7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2788, 0x0031, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 15F80 - 15FBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, + 0xffff, 0x13e3, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, + // Entry 15FC0 - 15FFF + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, + 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, + 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + 0x000d, 0x0021, 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, + 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002d, 0x000d, + 0x0021, 0xffff, 0x0032, 0x003d, 0x0049, 0x0055, 0x0061, 0x006d, + 0x007b, 0x008b, 0x0096, 0x00a3, 0x00af, 0x00c4, 0x0002, 0x0000, + 0x0057, 0x000d, 0x0000, 0xffff, 0x1f98, 0x2145, 0x200a, 0x1f96, + // Entry 16000 - 1603F + 0x2000, 0x2002, 0x2004, 0x1f9a, 0x22e1, 0x1f9c, 0x2008, 0x2145, + 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, + 0x0021, 0x00d9, 0x00e0, 0x00e7, 0x00eb, 0x00ef, 0x00f3, 0x00f8, + 0x0007, 0x0021, 0x00fd, 0x0107, 0x0110, 0x012c, 0x0148, 0x0162, + 0x016b, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2002, 0x1f9a, + 0x2002, 0x2002, 0x2002, 0x2006, 0x2002, 0x0001, 0x008d, 0x0003, + 0x0091, 0x0000, 0x0098, 0x0005, 0x0021, 0xffff, 0x0174, 0x0178, + 0x017c, 0x0180, 0x0005, 0x0021, 0xffff, 0x0185, 0x0199, 0x01ae, + // Entry 16040 - 1607F + 0x01c3, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, + 0x00a8, 0x00ab, 0x0001, 0x0021, 0x01d8, 0x0001, 0x0021, 0x01e3, + 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0021, 0x01d8, 0x0001, 0x0021, + 0x01e3, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, + 0x0021, 0x01f0, 0x0205, 0x0001, 0x00c3, 0x0002, 0x0021, 0x021a, + 0x021e, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, + 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, + // Entry 16080 - 160BF + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, + 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 160C0 - 160FF + 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, + 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0021, + 0x0222, 0x0001, 0x0131, 0x0001, 0x0021, 0x0228, 0x0001, 0x0136, + 0x0001, 0x0021, 0x022f, 0x0001, 0x013b, 0x0001, 0x0021, 0x0235, + 0x0002, 0x0141, 0x0144, 0x0001, 0x0021, 0x023f, 0x0003, 0x0021, + 0x0245, 0x024d, 0x0252, 0x0001, 0x014b, 0x0001, 0x0021, 0x025a, + 0x0001, 0x0150, 0x0001, 0x0021, 0x026e, 0x0001, 0x0155, 0x0001, + 0x0021, 0x0284, 0x0001, 0x015a, 0x0001, 0x0021, 0x028a, 0x0001, + // Entry 16100 - 1613F + 0x015f, 0x0001, 0x0021, 0x0293, 0x0001, 0x0164, 0x0001, 0x0021, + 0x029d, 0x0003, 0x0004, 0x0410, 0x083a, 0x0011, 0x0000, 0x0016, + 0x0000, 0x0000, 0x0000, 0x0000, 0x003b, 0x0066, 0x0289, 0x0000, + 0x02f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0383, 0x000a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0021, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0028, 0x0001, 0x002a, 0x0001, 0x002c, 0x000d, 0x0021, 0xffff, + 0x02aa, 0x02b1, 0x02b8, 0x02bf, 0x02ca, 0x02d5, 0x02dc, 0x02e3, + // Entry 16140 - 1617F + 0x02e8, 0x02f3, 0x02fc, 0x0301, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0044, 0x0000, 0x0055, 0x0004, 0x0052, 0x004c, + 0x0049, 0x004f, 0x0001, 0x0000, 0x0489, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0021, 0x0308, 0x0004, 0x0063, + 0x005d, 0x005a, 0x0060, 0x0001, 0x0021, 0x0310, 0x0001, 0x0021, + 0x0310, 0x0001, 0x0021, 0x0323, 0x0001, 0x0021, 0x0323, 0x0008, + 0x006f, 0x00d4, 0x012b, 0x0160, 0x0231, 0x0256, 0x0267, 0x0278, + 0x0002, 0x0072, 0x00a3, 0x0003, 0x0076, 0x0085, 0x0094, 0x000d, + // Entry 16180 - 161BF + 0x0021, 0xffff, 0x0330, 0x033f, 0x034c, 0x0355, 0x0360, 0x0367, + 0x0370, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x000d, 0x0021, + 0xffff, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x03be, 0x03b8, 0x03b8, + 0x03c4, 0x03c7, 0x03c4, 0x03ca, 0x03cd, 0x000d, 0x0021, 0xffff, + 0x0330, 0x033f, 0x034c, 0x0355, 0x0360, 0x0367, 0x0370, 0x037d, + 0x0384, 0x0393, 0x039e, 0x03ab, 0x0003, 0x00a7, 0x00b6, 0x00c5, + 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x034c, 0x0355, 0x03e8, + 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x000d, + // Entry 161C0 - 161FF + 0x0021, 0xffff, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x03be, 0x03b8, + 0x03b8, 0x03c4, 0x03c7, 0x03c4, 0x03ca, 0x03cd, 0x000d, 0x0021, + 0xffff, 0x03d0, 0x03dd, 0x034c, 0x0355, 0x03e8, 0x0367, 0x03ed, + 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x0002, 0x00d7, 0x0101, + 0x0005, 0x00dd, 0x00e6, 0x00f8, 0x0000, 0x00ef, 0x0007, 0x0021, + 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, 0x044b, 0x0007, + 0x0013, 0x006d, 0x30c1, 0x30c4, 0x0076, 0x0079, 0x30c7, 0x007f, + 0x0007, 0x0021, 0x0454, 0x0459, 0x045e, 0x0463, 0x0468, 0x046d, + // Entry 16200 - 1623F + 0x0470, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, + 0x0442, 0x044b, 0x0005, 0x0107, 0x0110, 0x0122, 0x0000, 0x0119, + 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, + 0x044b, 0x0007, 0x0013, 0x006d, 0x30c1, 0x30c4, 0x0076, 0x0079, + 0x30ca, 0x30cd, 0x0007, 0x0021, 0x0454, 0x0459, 0x045e, 0x0463, + 0x0468, 0x0473, 0x0476, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, + 0x0422, 0x0433, 0x0442, 0x044b, 0x0002, 0x012e, 0x0147, 0x0003, + 0x0132, 0x0139, 0x0140, 0x0005, 0x0021, 0xffff, 0x0479, 0x0483, + // Entry 16240 - 1627F + 0x048d, 0x0497, 0x0005, 0x0021, 0xffff, 0x04a1, 0x04a4, 0x04a7, + 0x04aa, 0x0005, 0x0021, 0xffff, 0x04ad, 0x04c6, 0x04df, 0x04f8, + 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, 0x0021, 0xffff, 0x0479, + 0x0483, 0x048d, 0x0497, 0x0005, 0x0021, 0xffff, 0x04a1, 0x04a4, + 0x04a7, 0x04aa, 0x0005, 0x0021, 0xffff, 0x04ad, 0x04c6, 0x04df, + 0x04f8, 0x0002, 0x0163, 0x01ca, 0x0003, 0x0167, 0x0188, 0x01a9, + 0x0008, 0x0173, 0x0179, 0x0170, 0x017c, 0x017f, 0x0182, 0x0185, + 0x0176, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x0525, 0x0001, + // Entry 16280 - 162BF + 0x0021, 0x052c, 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x053a, + 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x0541, 0x0001, 0x0021, + 0x0548, 0x0008, 0x0194, 0x019a, 0x0191, 0x019d, 0x01a0, 0x01a3, + 0x01a6, 0x0197, 0x0001, 0x0021, 0x03ca, 0x0001, 0x0021, 0x054d, + 0x0001, 0x0021, 0x0550, 0x0001, 0x0003, 0x0236, 0x0001, 0x0003, + 0x030a, 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x0553, 0x0001, + 0x0021, 0x0476, 0x0008, 0x01b5, 0x01bb, 0x01b2, 0x01be, 0x01c1, + 0x01c4, 0x01c7, 0x01b8, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, + // Entry 162C0 - 162FF + 0x0556, 0x0001, 0x0021, 0x052c, 0x0001, 0x0021, 0x056a, 0x0001, + 0x0021, 0x053a, 0x0001, 0x0021, 0x0541, 0x0001, 0x0021, 0x0541, + 0x0001, 0x0021, 0x0548, 0x0003, 0x01ce, 0x01ef, 0x0210, 0x0008, + 0x01da, 0x01e0, 0x01d7, 0x01e3, 0x01e6, 0x01e9, 0x01ec, 0x01dd, + 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x0525, 0x0001, 0x0021, + 0x0550, 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x053a, 0x0001, + 0x0021, 0x0533, 0x0001, 0x0021, 0x0541, 0x0001, 0x0021, 0x0548, + 0x0008, 0x01fb, 0x0201, 0x01f8, 0x0204, 0x0207, 0x020a, 0x020d, + // Entry 16300 - 1633F + 0x01fe, 0x0001, 0x0021, 0x03ca, 0x0001, 0x0021, 0x0525, 0x0001, + 0x0021, 0x0550, 0x0001, 0x0021, 0x0533, 0x0001, 0x0003, 0x030a, + 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x0553, 0x0001, 0x0021, + 0x0476, 0x0008, 0x021c, 0x0222, 0x0219, 0x0225, 0x0228, 0x022b, + 0x022e, 0x021f, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x0556, + 0x0001, 0x0021, 0x052c, 0x0001, 0x0021, 0x056a, 0x0001, 0x0021, + 0x053a, 0x0001, 0x0021, 0x056a, 0x0001, 0x0021, 0x0541, 0x0001, + 0x0021, 0x0548, 0x0003, 0x0240, 0x024b, 0x0235, 0x0002, 0x0238, + // Entry 16340 - 1637F + 0x023c, 0x0002, 0x0021, 0x057b, 0x05b4, 0x0002, 0x0021, 0x0592, + 0x05c1, 0x0002, 0x0243, 0x0247, 0x0002, 0x0021, 0x05d7, 0x05e7, + 0x0002, 0x0021, 0x05de, 0x05eb, 0x0002, 0x024e, 0x0252, 0x0002, + 0x0021, 0x054d, 0x03be, 0x0002, 0x0021, 0x05de, 0x05eb, 0x0004, + 0x0264, 0x025e, 0x025b, 0x0261, 0x0001, 0x0001, 0x1fa2, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0021, 0x05f2, + 0x0004, 0x0275, 0x026f, 0x026c, 0x0272, 0x0001, 0x001c, 0x14d2, + 0x0001, 0x0021, 0x05f8, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, + // Entry 16380 - 163BF + 0x00a1, 0x0004, 0x0286, 0x0280, 0x027d, 0x0283, 0x0001, 0x0021, + 0x0310, 0x0001, 0x0021, 0x0310, 0x0001, 0x0021, 0x0323, 0x0001, + 0x0021, 0x0323, 0x0001, 0x028b, 0x0002, 0x028e, 0x02c2, 0x0003, + 0x0292, 0x02a2, 0x02b2, 0x000e, 0x0021, 0x0645, 0x0604, 0x060d, + 0x0618, 0x0621, 0x0628, 0x0631, 0x063a, 0x065d, 0x0668, 0x0671, + 0x067c, 0x0685, 0x068a, 0x000e, 0x0013, 0x30d9, 0x01cb, 0x01c8, + 0x01bf, 0x30d0, 0x30d3, 0x30d6, 0x30d9, 0x30dc, 0x30df, 0x30c4, + 0x01cb, 0x30d6, 0x30df, 0x000e, 0x0021, 0x0645, 0x0604, 0x060d, + // Entry 163C0 - 163FF + 0x0618, 0x0621, 0x0628, 0x0631, 0x063a, 0x065d, 0x0668, 0x0671, + 0x067c, 0x0685, 0x068a, 0x0003, 0x02c6, 0x02d6, 0x02e6, 0x000e, + 0x0021, 0x0645, 0x0604, 0x060d, 0x0618, 0x0621, 0x0628, 0x0631, + 0x063a, 0x065d, 0x0668, 0x0671, 0x067c, 0x0685, 0x068a, 0x000e, + 0x0013, 0x30d9, 0x01cb, 0x01c8, 0x01bf, 0x30d0, 0x30d3, 0x30d6, + 0x30d9, 0x30dc, 0x30df, 0x30c4, 0x01cb, 0x30d6, 0x30df, 0x000e, + 0x0021, 0x0645, 0x0604, 0x060d, 0x0618, 0x0621, 0x0628, 0x0631, + 0x063a, 0x065d, 0x0668, 0x0671, 0x067c, 0x0685, 0x068a, 0x0008, + // Entry 16400 - 1643F + 0x02ff, 0x0000, 0x0000, 0x0000, 0x0364, 0x0372, 0x0000, 0x9006, + 0x0002, 0x0302, 0x0333, 0x0003, 0x0306, 0x0315, 0x0324, 0x000d, + 0x0003, 0xffff, 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, 0x2135, + 0x04fb, 0x0502, 0x050d, 0x0518, 0x214d, 0x215c, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0003, 0xffff, + 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, 0x2135, 0x04fb, 0x0502, + 0x050d, 0x0518, 0x214d, 0x215c, 0x0003, 0x0337, 0x0346, 0x0355, + // Entry 16440 - 1647F + 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, + 0x2135, 0x04fb, 0x0502, 0x050d, 0x0518, 0x2169, 0x2176, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0003, + 0xffff, 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, 0x2135, 0x04fb, + 0x0502, 0x050d, 0x0518, 0x2169, 0x2176, 0x0003, 0x036d, 0x0000, + 0x0368, 0x0001, 0x036a, 0x0001, 0x0021, 0x0695, 0x0001, 0x036f, + 0x0001, 0x0021, 0x06a7, 0x0004, 0x0380, 0x037a, 0x0377, 0x037d, + // Entry 16480 - 164BF + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0021, 0x0308, 0x0008, 0x038c, 0x0000, 0x0000, + 0x0000, 0x03f1, 0x03ff, 0x0000, 0x9006, 0x0002, 0x038f, 0x03c0, + 0x0003, 0x0393, 0x03a2, 0x03b1, 0x000d, 0x0021, 0xffff, 0x06b1, + 0x06c0, 0x06d1, 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, 0x070b, + 0x0712, 0x0717, 0x0720, 0x000d, 0x0021, 0xffff, 0x03bb, 0x072b, + 0x072e, 0x0731, 0x03be, 0x0734, 0x03be, 0x0737, 0x0737, 0x073a, + 0x073d, 0x072b, 0x000d, 0x0021, 0xffff, 0x06b1, 0x06c0, 0x06d1, + // Entry 164C0 - 164FF + 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, 0x070b, 0x0712, 0x0717, + 0x0720, 0x0003, 0x03c4, 0x03d3, 0x03e2, 0x000d, 0x0021, 0xffff, + 0x06b1, 0x06c0, 0x06d1, 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, + 0x070b, 0x0712, 0x0717, 0x0720, 0x000d, 0x0021, 0xffff, 0x03bb, + 0x072b, 0x072e, 0x0731, 0x03be, 0x0734, 0x03be, 0x0737, 0x0737, + 0x073a, 0x073d, 0x072b, 0x000d, 0x0021, 0xffff, 0x06b1, 0x06c0, + 0x06d1, 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, 0x070b, 0x0712, + 0x0717, 0x0720, 0x0003, 0x03fa, 0x0000, 0x03f5, 0x0001, 0x03f7, + // Entry 16500 - 1653F + 0x0001, 0x0021, 0x0740, 0x0001, 0x03fc, 0x0001, 0x0021, 0x0752, + 0x0004, 0x040d, 0x0407, 0x0404, 0x040a, 0x0001, 0x0000, 0x04fc, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0021, + 0x05f2, 0x0040, 0x0451, 0x0000, 0x0000, 0x0456, 0x046d, 0x0484, + 0x049b, 0x04b2, 0x04c9, 0x04e0, 0x04f7, 0x050e, 0x0525, 0x0540, + 0x055b, 0x0000, 0x0000, 0x0000, 0x0576, 0x058f, 0x05a8, 0x0000, + 0x0000, 0x0000, 0x05c1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05c6, 0x05da, 0x05ee, 0x0602, 0x0616, 0x062a, 0x063e, 0x0652, + // Entry 16540 - 1657F + 0x0666, 0x067a, 0x068e, 0x06a2, 0x06b6, 0x06ca, 0x06de, 0x06f2, + 0x0706, 0x071a, 0x072e, 0x0742, 0x0756, 0x0000, 0x076a, 0x0000, + 0x076f, 0x0785, 0x079b, 0x07b1, 0x07c7, 0x07dd, 0x07f3, 0x0809, + 0x081f, 0x0835, 0x0001, 0x0453, 0x0001, 0x0021, 0x075c, 0x0003, + 0x045a, 0x045d, 0x0462, 0x0001, 0x0021, 0x0765, 0x0003, 0x0021, + 0x076c, 0x077e, 0x0789, 0x0002, 0x0465, 0x0469, 0x0002, 0x0021, + 0x079b, 0x079b, 0x0002, 0x0021, 0x07ad, 0x07ad, 0x0003, 0x0471, + 0x0474, 0x0479, 0x0001, 0x0021, 0x0765, 0x0003, 0x0021, 0x076c, + // Entry 16580 - 165BF + 0x077e, 0x0789, 0x0002, 0x047c, 0x0480, 0x0002, 0x0021, 0x079b, + 0x079b, 0x0002, 0x0021, 0x07ad, 0x07ad, 0x0003, 0x0488, 0x048b, + 0x0490, 0x0001, 0x0021, 0x0765, 0x0003, 0x0021, 0x076c, 0x077e, + 0x0789, 0x0002, 0x0493, 0x0497, 0x0002, 0x0021, 0x079b, 0x079b, + 0x0002, 0x0021, 0x07ad, 0x07ad, 0x0003, 0x049f, 0x04a2, 0x04a7, + 0x0001, 0x0021, 0x07bf, 0x0003, 0x0021, 0x07cf, 0x07ec, 0x0809, + 0x0002, 0x04aa, 0x04ae, 0x0002, 0x0021, 0x0826, 0x0826, 0x0002, + 0x0021, 0x0843, 0x0843, 0x0003, 0x04b6, 0x04b9, 0x04be, 0x0001, + // Entry 165C0 - 165FF + 0x0021, 0x07bf, 0x0003, 0x0021, 0x07cf, 0x07ec, 0x0809, 0x0002, + 0x04c1, 0x04c5, 0x0002, 0x0021, 0x0826, 0x0826, 0x0002, 0x0021, + 0x0843, 0x0843, 0x0003, 0x04cd, 0x04d0, 0x04d5, 0x0001, 0x0021, + 0x07bf, 0x0003, 0x0021, 0x07cf, 0x07ec, 0x0809, 0x0002, 0x04d8, + 0x04dc, 0x0002, 0x0021, 0x0826, 0x0826, 0x0002, 0x0021, 0x0843, + 0x0843, 0x0003, 0x04e4, 0x04e7, 0x04ec, 0x0001, 0x0021, 0x0860, + 0x0003, 0x0021, 0x0867, 0x0879, 0x0887, 0x0002, 0x04ef, 0x04f3, + 0x0002, 0x0021, 0x0899, 0x0899, 0x0002, 0x0021, 0x08ab, 0x08ab, + // Entry 16600 - 1663F + 0x0003, 0x04fb, 0x04fe, 0x0503, 0x0001, 0x0021, 0x0860, 0x0003, + 0x0021, 0x08bd, 0x0879, 0x0887, 0x0002, 0x0506, 0x050a, 0x0002, + 0x0021, 0x0899, 0x0899, 0x0002, 0x0021, 0x08ab, 0x08ab, 0x0003, + 0x0512, 0x0515, 0x051a, 0x0001, 0x0021, 0x0860, 0x0003, 0x0021, + 0x08bd, 0x0879, 0x0887, 0x0002, 0x051d, 0x0521, 0x0002, 0x0021, + 0x0899, 0x0899, 0x0002, 0x0021, 0x08ab, 0x08ab, 0x0004, 0x052a, + 0x052d, 0x0532, 0x053d, 0x0001, 0x0021, 0x08cb, 0x0003, 0x0021, + 0x08d4, 0x08ea, 0x08fa, 0x0002, 0x0535, 0x0539, 0x0002, 0x0021, + // Entry 16640 - 1667F + 0x0910, 0x0910, 0x0002, 0x0021, 0x0924, 0x0924, 0x0001, 0x0021, + 0x0938, 0x0004, 0x0545, 0x0548, 0x054d, 0x0558, 0x0001, 0x0021, + 0x08cb, 0x0003, 0x0021, 0x08d4, 0x08ea, 0x08fa, 0x0002, 0x0550, + 0x0554, 0x0002, 0x0021, 0x0910, 0x0910, 0x0002, 0x0021, 0x0924, + 0x0924, 0x0001, 0x0021, 0x0938, 0x0004, 0x0560, 0x0563, 0x0568, + 0x0573, 0x0001, 0x0021, 0x08cb, 0x0003, 0x0021, 0x08d4, 0x08ea, + 0x08fa, 0x0002, 0x056b, 0x056f, 0x0002, 0x0021, 0x0910, 0x0910, + 0x0002, 0x0021, 0x0924, 0x0924, 0x0001, 0x0021, 0x0938, 0x0003, + // Entry 16680 - 166BF + 0x057a, 0x057d, 0x0584, 0x0001, 0x0021, 0x0947, 0x0005, 0x0021, + 0x095b, 0x0966, 0x0971, 0x094e, 0x097a, 0x0002, 0x0587, 0x058b, + 0x0002, 0x0021, 0x098a, 0x098a, 0x0002, 0x0021, 0x099c, 0x099c, + 0x0003, 0x0593, 0x0596, 0x059d, 0x0001, 0x0021, 0x0947, 0x0005, + 0x0021, 0x095b, 0x0966, 0x0971, 0x094e, 0x097a, 0x0002, 0x05a0, + 0x05a4, 0x0002, 0x0021, 0x098a, 0x098a, 0x0002, 0x0021, 0x099c, + 0x099c, 0x0003, 0x05ac, 0x05af, 0x05b6, 0x0001, 0x0021, 0x0947, + 0x0005, 0x0021, 0x095b, 0x0966, 0x0971, 0x094e, 0x097a, 0x0002, + // Entry 166C0 - 166FF + 0x05b9, 0x05bd, 0x0002, 0x0021, 0x098a, 0x098a, 0x0002, 0x0021, + 0x099c, 0x099c, 0x0001, 0x05c3, 0x0001, 0x0021, 0x09ae, 0x0003, + 0x0000, 0x05ca, 0x05cf, 0x0003, 0x0021, 0x09be, 0x09d8, 0x09ec, + 0x0002, 0x05d2, 0x05d6, 0x0002, 0x0021, 0x0a06, 0x0a06, 0x0002, + 0x0021, 0x0a20, 0x0a20, 0x0003, 0x0000, 0x05de, 0x05e3, 0x0003, + 0x0021, 0x09be, 0x09d8, 0x09ec, 0x0002, 0x05e6, 0x05ea, 0x0002, + 0x0021, 0x0a06, 0x0a06, 0x0002, 0x0021, 0x0a20, 0x0a20, 0x0003, + 0x0000, 0x05f2, 0x05f7, 0x0003, 0x0021, 0x09be, 0x09d8, 0x09ec, + // Entry 16700 - 1673F + 0x0002, 0x05fa, 0x05fe, 0x0002, 0x0021, 0x0a06, 0x0a06, 0x0002, + 0x0021, 0x0a20, 0x0a20, 0x0003, 0x0000, 0x0606, 0x060b, 0x0003, + 0x0021, 0x0a3a, 0x0a54, 0x0a68, 0x0002, 0x060e, 0x0612, 0x0002, + 0x0021, 0x0a82, 0x0a82, 0x0002, 0x0021, 0x0a9c, 0x0a9c, 0x0003, + 0x0000, 0x061a, 0x061f, 0x0003, 0x0021, 0x0a3a, 0x0a54, 0x0a68, + 0x0002, 0x0622, 0x0626, 0x0002, 0x0021, 0x0a82, 0x0a82, 0x0002, + 0x0021, 0x0a9c, 0x0a9c, 0x0003, 0x0000, 0x062e, 0x0633, 0x0003, + 0x0021, 0x0a3a, 0x0a54, 0x0a68, 0x0002, 0x0636, 0x063a, 0x0002, + // Entry 16740 - 1677F + 0x0021, 0x0a82, 0x0a82, 0x0002, 0x0021, 0x0a9c, 0x0a9c, 0x0003, + 0x0000, 0x0642, 0x0647, 0x0003, 0x0021, 0x0ab6, 0x0ad3, 0x0aea, + 0x0002, 0x064a, 0x064e, 0x0002, 0x0021, 0x0b07, 0x0b07, 0x0002, + 0x0021, 0x0b24, 0x0b24, 0x0003, 0x0000, 0x0656, 0x065b, 0x0003, + 0x0021, 0x0ab6, 0x0ad3, 0x0aea, 0x0002, 0x065e, 0x0662, 0x0002, + 0x0021, 0x0b07, 0x0b07, 0x0002, 0x0021, 0x0b24, 0x0b24, 0x0003, + 0x0000, 0x066a, 0x066f, 0x0003, 0x0021, 0x0ab6, 0x0ad3, 0x0aea, + 0x0002, 0x0672, 0x0676, 0x0002, 0x0021, 0x0b07, 0x0b07, 0x0002, + // Entry 16780 - 167BF + 0x0021, 0x0b24, 0x0b24, 0x0003, 0x0000, 0x067e, 0x0683, 0x0003, + 0x0021, 0x0b41, 0x0b5f, 0x0b77, 0x0002, 0x0686, 0x068a, 0x0002, + 0x0021, 0x0b95, 0x0b95, 0x0002, 0x0021, 0x0bb3, 0x0bb3, 0x0003, + 0x0000, 0x0692, 0x0697, 0x0003, 0x0021, 0x0b41, 0x0b5f, 0x0b77, + 0x0002, 0x069a, 0x069e, 0x0002, 0x0021, 0x0b95, 0x0b95, 0x0002, + 0x0021, 0x0bb3, 0x0bb3, 0x0003, 0x0000, 0x06a6, 0x06ab, 0x0003, + 0x0021, 0x0b41, 0x0b5f, 0x0b77, 0x0002, 0x06ae, 0x06b2, 0x0002, + 0x0021, 0x0b95, 0x0b95, 0x0002, 0x0021, 0x0bb3, 0x0bb3, 0x0003, + // Entry 167C0 - 167FF + 0x0000, 0x06ba, 0x06bf, 0x0003, 0x0021, 0x0bd1, 0x0bed, 0x0c03, + 0x0002, 0x06c2, 0x06c6, 0x0002, 0x0021, 0x0c1f, 0x0c1f, 0x0002, + 0x0021, 0x0c3b, 0x0c3b, 0x0003, 0x0000, 0x06ce, 0x06d3, 0x0003, + 0x0021, 0x0bd1, 0x0bed, 0x0c03, 0x0002, 0x06d6, 0x06da, 0x0002, + 0x0021, 0x0c1f, 0x0c1f, 0x0002, 0x0021, 0x0c3b, 0x0c3b, 0x0003, + 0x0000, 0x06e2, 0x06e7, 0x0003, 0x0021, 0x0bd1, 0x0bed, 0x0c03, + 0x0002, 0x06ea, 0x06ee, 0x0002, 0x0021, 0x0c1f, 0x0c1f, 0x0002, + 0x0021, 0x0c3b, 0x0c3b, 0x0003, 0x0000, 0x06f6, 0x06fb, 0x0003, + // Entry 16800 - 1683F + 0x0021, 0x0c57, 0x0c6d, 0x0c7d, 0x0002, 0x06fe, 0x0702, 0x0002, + 0x0021, 0x0c93, 0x0c93, 0x0002, 0x0021, 0x0ca9, 0x0ca9, 0x0003, + 0x0000, 0x070a, 0x070f, 0x0003, 0x0021, 0x0c57, 0x0c6d, 0x0c7d, + 0x0002, 0x0712, 0x0716, 0x0002, 0x0021, 0x0c93, 0x0c93, 0x0002, + 0x0021, 0x0ca9, 0x0ca9, 0x0003, 0x0000, 0x071e, 0x0723, 0x0003, + 0x0021, 0x0c57, 0x0c6d, 0x0c7d, 0x0002, 0x0726, 0x072a, 0x0002, + 0x0021, 0x0c93, 0x0c93, 0x0002, 0x0021, 0x0ca9, 0x0ca9, 0x0003, + 0x0000, 0x0732, 0x0737, 0x0003, 0x0021, 0x0cbf, 0x0cd5, 0x0ce5, + // Entry 16840 - 1687F + 0x0002, 0x073a, 0x073e, 0x0002, 0x0021, 0x0cfb, 0x0cfb, 0x0002, + 0x0021, 0x0d11, 0x0d11, 0x0003, 0x0000, 0x0746, 0x074b, 0x0003, + 0x0021, 0x0cbf, 0x0cd5, 0x0ce5, 0x0002, 0x074e, 0x0752, 0x0002, + 0x0021, 0x0cfb, 0x0cfb, 0x0002, 0x0021, 0x0d11, 0x0d11, 0x0003, + 0x0000, 0x075a, 0x075f, 0x0003, 0x0021, 0x0cbf, 0x0cd5, 0x0ce5, + 0x0002, 0x0762, 0x0766, 0x0002, 0x0021, 0x0cfb, 0x0cfb, 0x0002, + 0x0021, 0x0d11, 0x0d11, 0x0001, 0x076c, 0x0001, 0x0021, 0x0d27, + 0x0003, 0x0773, 0x0776, 0x077a, 0x0001, 0x0021, 0x0d3f, 0x0002, + // Entry 16880 - 168BF + 0x0021, 0xffff, 0x0d48, 0x0002, 0x077d, 0x0781, 0x0002, 0x0021, + 0x0d5a, 0x0d5a, 0x0002, 0x0021, 0x0d6e, 0x0d6e, 0x0003, 0x0789, + 0x078c, 0x0790, 0x0001, 0x0021, 0x0d3f, 0x0002, 0x0021, 0xffff, + 0x0d48, 0x0002, 0x0793, 0x0797, 0x0002, 0x0021, 0x0d5a, 0x0d5a, + 0x0002, 0x0021, 0x0d6e, 0x0d6e, 0x0003, 0x079f, 0x07a2, 0x07a6, + 0x0001, 0x0021, 0x0d3f, 0x0002, 0x0021, 0xffff, 0x0d48, 0x0002, + 0x07a9, 0x07ad, 0x0002, 0x0021, 0x0d5a, 0x0d5a, 0x0002, 0x0021, + 0x0d6e, 0x0d6e, 0x0003, 0x07b5, 0x07b8, 0x07bc, 0x0001, 0x0021, + // Entry 168C0 - 168FF + 0x0d82, 0x0002, 0x0021, 0xffff, 0x0d8d, 0x0002, 0x07bf, 0x07c3, + 0x0002, 0x0021, 0x0da1, 0x0da1, 0x0002, 0x0021, 0x0db7, 0x0db7, + 0x0003, 0x07cb, 0x07ce, 0x07d2, 0x0001, 0x0021, 0x0d82, 0x0002, + 0x0021, 0xffff, 0x0d8d, 0x0002, 0x07d5, 0x07d9, 0x0002, 0x0021, + 0x0da1, 0x0da1, 0x0002, 0x0021, 0x0db7, 0x0db7, 0x0003, 0x07e1, + 0x07e4, 0x07e8, 0x0001, 0x0021, 0x0d82, 0x0002, 0x0021, 0xffff, + 0x0d8d, 0x0002, 0x07eb, 0x07ef, 0x0002, 0x0021, 0x0da1, 0x0da1, + 0x0002, 0x0021, 0x0db7, 0x0db7, 0x0003, 0x07f7, 0x07fa, 0x07fe, + // Entry 16900 - 1693F + 0x0001, 0x0021, 0x0dcd, 0x0002, 0x0021, 0xffff, 0x0dd8, 0x0002, + 0x0801, 0x0805, 0x0002, 0x0021, 0x0de3, 0x0de3, 0x0002, 0x0021, + 0x0df9, 0x0df9, 0x0003, 0x080d, 0x0810, 0x0814, 0x0001, 0x0021, + 0x0dcd, 0x0002, 0x0021, 0xffff, 0x0dd8, 0x0002, 0x0817, 0x081b, + 0x0002, 0x0021, 0x0de3, 0x0de3, 0x0002, 0x0021, 0x0df9, 0x0df9, + 0x0003, 0x0823, 0x0826, 0x082a, 0x0001, 0x0021, 0x0dcd, 0x0002, + 0x0021, 0xffff, 0x0dd8, 0x0002, 0x082d, 0x0831, 0x0002, 0x0021, + 0x0de3, 0x0de3, 0x0002, 0x0021, 0x0df9, 0x0df9, 0x0001, 0x0837, + // Entry 16940 - 1697F + 0x0001, 0x0021, 0x0e0f, 0x0004, 0x083f, 0x0844, 0x0849, 0x0858, + 0x0003, 0x001c, 0x0baf, 0x20d3, 0x20e6, 0x0003, 0x0021, 0x0e27, + 0x0e32, 0x0e4e, 0x0002, 0x0000, 0x084c, 0x0003, 0x0000, 0x0853, + 0x0850, 0x0001, 0x0021, 0x0e62, 0x0003, 0x0021, 0xffff, 0x0e83, + 0x0eac, 0x0002, 0x0000, 0x085b, 0x0003, 0x08ff, 0x099f, 0x085f, + 0x009e, 0x0021, 0x0ec9, 0x0ee3, 0x0f00, 0x0f1b, 0x0f5c, 0x0fc0, + 0x1072, 0x10d1, 0x1140, 0x11b5, 0x1234, 0x1298, 0x12ea, 0x133a, + 0x1398, 0x1401, 0x1471, 0x14d3, 0x153e, 0x15c2, 0x164b, 0x16c2, + // Entry 16980 - 169BF + 0x1741, 0x17b9, 0x1809, 0x184f, 0x1861, 0x188d, 0x18d7, 0x1915, + 0x195d, 0x198f, 0x19e3, 0x1a2b, 0x1a7b, 0x1ac9, 0x1aea, 0x1b1b, + 0x1b76, 0x1bd2, 0x1c0c, 0x1c1e, 0x1c3d, 0x1c77, 0x1ccf, 0x1d00, + 0x1d69, 0x1db5, 0x1e13, 0x1e80, 0x1eec, 0x1f26, 0x1f45, 0x1f8c, + 0x1fa6, 0x1fd0, 0x2016, 0x2035, 0x2068, 0x20d9, 0x2146, 0x2168, + 0x219b, 0x220e, 0x2266, 0x22a0, 0x22ae, 0x22cb, 0x22e1, 0x2300, + 0x231d, 0x234c, 0x23a2, 0x2402, 0x2458, 0x24c5, 0x2545, 0x2564, + 0x2591, 0x25c7, 0x25f9, 0x264f, 0x267b, 0x26a8, 0x273c, 0x2773, + // Entry 169C0 - 169FF + 0x27b9, 0x27cb, 0x27df, 0x27f5, 0x2826, 0x2864, 0x289a, 0x2911, + 0x297c, 0x29e4, 0x2a1e, 0x2a34, 0x2a48, 0x2a7b, 0x2af2, 0x2b56, + 0x2ba8, 0x2bba, 0x2c05, 0x2cbd, 0x2d21, 0x2d75, 0x2dbb, 0x2dcf, + 0x2e09, 0x2e61, 0x2ead, 0x2ef3, 0x2f39, 0x2fa1, 0x2fb9, 0x2fcd, + 0x3061, 0x3077, 0x309f, 0x30f9, 0x314d, 0x318b, 0x319b, 0x31b1, + 0x31d0, 0x31f1, 0x3207, 0x3217, 0x323d, 0x327b, 0x3295, 0x32bd, + 0x32fb, 0x3327, 0x3375, 0x339f, 0x33fd, 0x345b, 0x349d, 0x34d2, + 0x3542, 0x358c, 0x359e, 0x35b9, 0x35f1, 0x3655, 0x212d, 0x2c73, + // Entry 16A00 - 16A3F + 0xffff, 0x1018, 0xffff, 0xffff, 0xffff, 0x2669, 0x26fa, 0x3009, + 0x009e, 0x0021, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f41, 0x0fac, + 0x105e, 0x10b4, 0x1125, 0x1190, 0x1219, 0x1284, 0x12da, 0x1324, + 0x1380, 0x13e2, 0x1459, 0x14bb, 0x151d, 0x159a, 0x162c, 0x16a3, + 0x171a, 0x17a9, 0x17f3, 0xffff, 0xffff, 0x1875, 0xffff, 0x18fe, + 0xffff, 0x197a, 0x19d3, 0x1a1d, 0x1a61, 0xffff, 0xffff, 0x1b07, + 0x1b5d, 0x1bc2, 0xffff, 0xffff, 0xffff, 0x1c58, 0xffff, 0x1ce5, + 0x1d50, 0xffff, 0x1dfa, 0x1e5f, 0x1edc, 0xffff, 0xffff, 0xffff, + // Entry 16A40 - 16A7F + 0xffff, 0x1fba, 0xffff, 0xffff, 0x204b, 0x20bc, 0xffff, 0xffff, + 0x217a, 0x21f7, 0x2256, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x233a, 0x238a, 0x23ec, 0x2448, 0x2492, 0xffff, 0xffff, + 0x2583, 0xffff, 0x25db, 0xffff, 0xffff, 0x2696, 0xffff, 0x275d, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2814, 0xffff, 0x2878, 0x28f8, + 0x295d, 0x29d4, 0xffff, 0xffff, 0xffff, 0x2a58, 0x2adb, 0x2b3a, + 0xffff, 0xffff, 0x2bdb, 0x2ca1, 0x2d0f, 0x2d5f, 0xffff, 0xffff, + 0x2df1, 0x2e53, 0x2e97, 0xffff, 0x2f12, 0xffff, 0xffff, 0xffff, + // Entry 16A80 - 16ABF + 0xffff, 0xffff, 0x3089, 0x30e5, 0x313b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x322b, 0xffff, 0xffff, 0x32ab, + 0xffff, 0x330d, 0xffff, 0x3389, 0x33e5, 0x3447, 0xffff, 0x34b3, + 0x352a, 0xffff, 0xffff, 0xffff, 0x35db, 0x3637, 0xffff, 0xffff, + 0xffff, 0x1002, 0xffff, 0xffff, 0xffff, 0xffff, 0x26e6, 0x2fea, + 0x009e, 0x0021, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f80, 0x0fdd, + 0x108f, 0x10f7, 0x1164, 0x11e3, 0x1258, 0x12b5, 0x1303, 0x1359, + 0x13b9, 0x1429, 0x1492, 0x14f4, 0x1568, 0x15f3, 0x1673, 0x16ea, + // Entry 16AC0 - 16AFF + 0x1771, 0x17d2, 0x1828, 0xffff, 0xffff, 0x18ae, 0xffff, 0x1935, + 0xffff, 0x19ad, 0x19fc, 0x1a42, 0x1a9e, 0xffff, 0xffff, 0x1b38, + 0x1b98, 0x1beb, 0xffff, 0xffff, 0xffff, 0x1c9f, 0xffff, 0x1d24, + 0x1d8b, 0xffff, 0x1e35, 0x1eaa, 0x1f05, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1fef, 0xffff, 0xffff, 0x208e, 0x20ff, 0xffff, 0xffff, + 0x21c5, 0x222e, 0x227f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2367, 0x23c3, 0x2421, 0x2471, 0x2501, 0xffff, 0xffff, + 0x25a8, 0xffff, 0x2620, 0xffff, 0xffff, 0x26c3, 0xffff, 0x2792, + // Entry 16B00 - 16B3F + 0xffff, 0xffff, 0xffff, 0xffff, 0x2841, 0xffff, 0x28c5, 0x2933, + 0x29a4, 0x29fd, 0xffff, 0xffff, 0xffff, 0x2aa7, 0x2b12, 0x2b7b, + 0xffff, 0xffff, 0x2c38, 0x2ce2, 0x2d3c, 0x2d94, 0xffff, 0xffff, + 0x2e2a, 0x2e78, 0x2ecc, 0xffff, 0x2f69, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x30be, 0x3116, 0x3168, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3258, 0xffff, 0xffff, 0x32d8, + 0xffff, 0x334a, 0xffff, 0x33be, 0x341e, 0x3478, 0xffff, 0x34fa, + 0x3563, 0xffff, 0xffff, 0xffff, 0x3610, 0x367c, 0xffff, 0xffff, + // Entry 16B40 - 16B7F + 0xffff, 0x1037, 0xffff, 0xffff, 0xffff, 0xffff, 0x2717, 0x3031, + 0x0001, 0x0002, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0141, 0x0008, 0x001d, 0x0000, 0x0082, + 0x00a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0020, 0x0051, + 0x0003, 0x0024, 0x0033, 0x0042, 0x000d, 0x0003, 0xffff, 0x0d4a, + 0x2181, 0x218e, 0x2197, 0x21a2, 0x21a7, 0x21ae, 0x21b5, 0x21be, + 0x21cb, 0x21d8, 0x21e3, 0x000d, 0x0021, 0xffff, 0x0473, 0x03bb, + // Entry 16B80 - 16BBF + 0x03be, 0x072b, 0x03be, 0x0473, 0x0473, 0x072b, 0x36ab, 0x072b, + 0x36ae, 0x073a, 0x000d, 0x0022, 0xffff, 0x0000, 0x000b, 0x0018, + 0x0021, 0x002c, 0x0031, 0x0038, 0x0043, 0x004c, 0x0059, 0x0066, + 0x0071, 0x0003, 0x0055, 0x0064, 0x0073, 0x000d, 0x0022, 0xffff, + 0x0000, 0x000b, 0x0018, 0x0021, 0x002c, 0x0031, 0x0038, 0x0043, + 0x004c, 0x0059, 0x0066, 0x0071, 0x000d, 0x0021, 0xffff, 0x0473, + 0x03bb, 0x03be, 0x072b, 0x03be, 0x0473, 0x0473, 0x072b, 0x36ab, + 0x072b, 0x36ae, 0x073a, 0x000d, 0x0022, 0xffff, 0x0000, 0x000b, + // Entry 16BC0 - 16BFF + 0x0018, 0x0021, 0x002c, 0x0031, 0x0038, 0x0043, 0x004c, 0x0059, + 0x0066, 0x0071, 0x0002, 0x0085, 0x0097, 0x0003, 0x0089, 0x0000, + 0x0090, 0x0005, 0x0022, 0xffff, 0x007c, 0x0081, 0x0086, 0x008b, + 0x0005, 0x0022, 0xffff, 0x0090, 0x009e, 0x00ac, 0x00ba, 0x0003, + 0x009b, 0x0000, 0x00a2, 0x0005, 0x0022, 0xffff, 0x007c, 0x0081, + 0x0086, 0x008b, 0x0005, 0x0022, 0xffff, 0x0090, 0x009e, 0x00ac, + 0x00ba, 0x0002, 0x00ac, 0x0101, 0x0003, 0x00b0, 0x00cb, 0x00e6, + 0x0008, 0x0000, 0x0000, 0x00b9, 0x00bf, 0x00c2, 0x00c5, 0x00c8, + // Entry 16C00 - 16C3F + 0x00bc, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x052c, 0x0001, + 0x0021, 0x053a, 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, + 0x0001, 0x0021, 0x0548, 0x0008, 0x0000, 0x0000, 0x00d4, 0x00da, + 0x00dd, 0x00e0, 0x00e3, 0x00d7, 0x0001, 0x0021, 0x36ae, 0x0001, + 0x0021, 0x0550, 0x0001, 0x0003, 0x030a, 0x0001, 0x0021, 0x0533, + 0x0001, 0x0021, 0x0734, 0x0001, 0x0021, 0x0734, 0x0008, 0x0000, + 0x0000, 0x00ef, 0x00f5, 0x00f8, 0x00fb, 0x00fe, 0x00f2, 0x0001, + 0x0021, 0x0515, 0x0001, 0x0021, 0x052c, 0x0001, 0x0021, 0x053a, + // Entry 16C40 - 16C7F + 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0021, + 0x0548, 0x0003, 0x0105, 0x0119, 0x012d, 0x0007, 0x0000, 0x0000, + 0x0000, 0x010d, 0x0110, 0x0113, 0x0116, 0x0001, 0x0021, 0x053a, + 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0021, + 0x0548, 0x0007, 0x0000, 0x0000, 0x0000, 0x0121, 0x0124, 0x0127, + 0x012a, 0x0001, 0x0003, 0x030a, 0x0001, 0x0022, 0x00cc, 0x0001, + 0x0022, 0x00e1, 0x0001, 0x0021, 0x0734, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0135, 0x0138, 0x013b, 0x013e, 0x0001, 0x0021, 0x053a, + // Entry 16C80 - 16CBF + 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0021, + 0x0548, 0x0001, 0x0143, 0x0002, 0x0146, 0x0159, 0x0003, 0x0000, + 0x0000, 0x014a, 0x000d, 0x0022, 0xffff, 0x00e8, 0x00ef, 0x00f6, + 0x00ff, 0x010a, 0x0111, 0x011e, 0x0129, 0x0132, 0x0139, 0x0140, + 0x0147, 0x0002, 0x0000, 0x015c, 0x000d, 0x0013, 0xffff, 0x01c8, + 0x30e2, 0x30e5, 0x30e8, 0x30eb, 0x30e8, 0x30ee, 0x30f1, 0x30f4, + 0x30e5, 0x30f7, 0x01c8, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + // Entry 16CC0 - 16CFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, + 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, + 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, + 0x0045, 0x000d, 0x0022, 0xffff, 0x014e, 0x0152, 0x0156, 0x015a, + 0x015e, 0x0162, 0x0166, 0x016a, 0x016e, 0x0172, 0x0176, 0x017a, + 0x000d, 0x0022, 0xffff, 0x017e, 0x0184, 0x018a, 0x0190, 0x0198, + // Entry 16D00 - 16D3F + 0x019f, 0x01a5, 0x01ab, 0x01b0, 0x01b7, 0x01c0, 0x01c6, 0x0002, + 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2002, 0x200c, 0x1f9a, + 0x2002, 0x2008, 0x1ffe, 0x1f9a, 0x214a, 0x2002, 0x2333, 0x214a, + 0x2145, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, + 0x0007, 0x0022, 0x01cc, 0x01d0, 0x01d5, 0x01d9, 0x01dd, 0x01e1, + 0x01e5, 0x0007, 0x0022, 0x01e9, 0x01ee, 0x01f6, 0x01ff, 0x0209, + 0x0213, 0x021a, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2008, + 0x1f9c, 0x1f9a, 0x1f96, 0x1f96, 0x1f9a, 0x2143, 0x0001, 0x008d, + // Entry 16D40 - 16D7F + 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x001c, 0xffff, 0x13ba, + 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0022, 0xffff, 0x0225, 0x022e, + 0x0237, 0x0240, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, + 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0022, 0x0249, 0x0001, 0x0022, + 0x0250, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0022, 0x0249, 0x0001, + 0x0022, 0x0250, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, + 0x0002, 0x0022, 0x0259, 0x0263, 0x0001, 0x00c3, 0x0002, 0x0022, + 0x026f, 0x0273, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, + // Entry 16D80 - 16DBF + 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, + 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, + 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, + 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 16DC0 - 16DFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, + 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, + 0x0022, 0x0277, 0x0001, 0x0131, 0x0001, 0x0022, 0x027f, 0x0001, + 0x0136, 0x0001, 0x0022, 0x0288, 0x0001, 0x013b, 0x0001, 0x0022, + 0x028e, 0x0002, 0x0141, 0x0144, 0x0001, 0x0022, 0x0296, 0x0003, + 0x0022, 0x029e, 0x02a5, 0x02ac, 0x0001, 0x014b, 0x0001, 0x0022, + // Entry 16E00 - 16E3F + 0x02b4, 0x0001, 0x0150, 0x0001, 0x0022, 0x02c4, 0x0001, 0x0155, + 0x0001, 0x0022, 0x02cb, 0x0001, 0x015a, 0x0001, 0x0022, 0x02d1, + 0x0001, 0x015f, 0x0001, 0x0022, 0x02d8, 0x0001, 0x0164, 0x0001, + 0x0022, 0x02e1, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0003, 0x0004, + // Entry 16E40 - 16E7F + 0x0356, 0x0780, 0x0012, 0x0017, 0x0038, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0052, 0x007d, 0x02b8, 0x0000, 0x0305, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0330, 0x0000, 0x0348, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, + 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, 0x0004, 0x0035, 0x002f, + 0x002c, 0x0032, 0x0001, 0x0022, 0x02ef, 0x0001, 0x0013, 0x0477, + 0x0001, 0x0008, 0x0627, 0x0001, 0x0008, 0x062f, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0000, 0x0000, 0x0004, + // Entry 16E80 - 16EBF + 0x004f, 0x0049, 0x0046, 0x004c, 0x0001, 0x0022, 0x0300, 0x0001, + 0x0017, 0x03cc, 0x0001, 0x0017, 0x03cc, 0x0001, 0x0017, 0x03cc, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x0000, + 0x006c, 0x0004, 0x0069, 0x0063, 0x0060, 0x0066, 0x0001, 0x0022, + 0x02ef, 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, 0x0001, + 0x0008, 0x062f, 0x0004, 0x007a, 0x0074, 0x0071, 0x0077, 0x0001, + 0x0022, 0x030b, 0x0001, 0x0022, 0x030b, 0x0001, 0x0022, 0x030b, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0086, 0x00eb, 0x0142, 0x0177, + // Entry 16EC0 - 16EFF + 0x0260, 0x0285, 0x0296, 0x02a7, 0x0002, 0x0089, 0x00ba, 0x0003, + 0x008d, 0x009c, 0x00ab, 0x000d, 0x0022, 0xffff, 0x0319, 0x0321, + 0x0329, 0x0332, 0x033a, 0x0342, 0x034a, 0x0353, 0x0359, 0x0360, + 0x0367, 0x0370, 0x000d, 0x0000, 0xffff, 0x04dd, 0x19c7, 0x22d9, + 0x19c7, 0x04dd, 0x2157, 0x19c7, 0x214e, 0x22dd, 0x228e, 0x22d9, + 0x1e5d, 0x000d, 0x0022, 0xffff, 0x0378, 0x0383, 0x038e, 0x039a, + 0x03a5, 0x03b0, 0x03bb, 0x03c7, 0x03d0, 0x03da, 0x03e4, 0x03f0, + 0x0003, 0x00be, 0x00cd, 0x00dc, 0x000d, 0x0022, 0xffff, 0x03fb, + // Entry 16F00 - 16F3F + 0x0401, 0x0407, 0x040e, 0x0414, 0x041a, 0x0420, 0x0427, 0x042b, + 0x0430, 0x0435, 0x043c, 0x000d, 0x0000, 0xffff, 0x04dd, 0x19c7, + 0x22d9, 0x19c7, 0x04dd, 0x2157, 0x19c7, 0x214e, 0x22dd, 0x228e, + 0x22d9, 0x1e5d, 0x000d, 0x0022, 0xffff, 0x0442, 0x044b, 0x0454, + 0x045e, 0x0467, 0x0470, 0x0479, 0x0483, 0x048a, 0x0492, 0x049a, + 0x04a4, 0x0002, 0x00ee, 0x0118, 0x0005, 0x00f4, 0x00fd, 0x010f, + 0x0000, 0x0106, 0x0007, 0x0022, 0x04ad, 0x04b0, 0x04b3, 0x04b6, + 0x04b9, 0x04bc, 0x04bf, 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, + // Entry 16F40 - 16F7F + 0x2157, 0x04dd, 0x21e5, 0x228e, 0x0007, 0x0022, 0x04ad, 0x04b0, + 0x04b3, 0x04b6, 0x04b9, 0x04bc, 0x04bf, 0x0007, 0x0022, 0x04c2, + 0x04ce, 0x04da, 0x04e4, 0x04f2, 0x04fc, 0x0508, 0x0005, 0x011e, + 0x0127, 0x0139, 0x0000, 0x0130, 0x0007, 0x0022, 0x04ad, 0x04b0, + 0x04b3, 0x04b6, 0x04b9, 0x04bc, 0x04bf, 0x0007, 0x0000, 0x22dd, + 0x22d9, 0x04dd, 0x2157, 0x04dd, 0x21e5, 0x228e, 0x0007, 0x0022, + 0x04ad, 0x04b0, 0x04b3, 0x04b6, 0x04b9, 0x04bc, 0x04bf, 0x0007, + 0x0022, 0x0513, 0x051d, 0x0527, 0x052f, 0x053b, 0x0543, 0x054d, + // Entry 16F80 - 16FBF + 0x0002, 0x0145, 0x015e, 0x0003, 0x0149, 0x0150, 0x0157, 0x0005, + 0x0022, 0xffff, 0x0556, 0x055f, 0x0568, 0x0571, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0022, 0xffff, + 0x057a, 0x0588, 0x0596, 0x05a4, 0x0003, 0x0162, 0x0169, 0x0170, + 0x0005, 0x0022, 0xffff, 0x0556, 0x055f, 0x0568, 0x0571, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0022, + 0xffff, 0x057a, 0x0588, 0x0596, 0x05a4, 0x0002, 0x017a, 0x01ed, + 0x0003, 0x017e, 0x01a3, 0x01c8, 0x0009, 0x018b, 0x0191, 0x0188, + // Entry 16FC0 - 16FFF + 0x0194, 0x019a, 0x019d, 0x01a0, 0x018e, 0x0197, 0x0001, 0x0022, + 0x05b2, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, 0x05c3, 0x0001, + 0x0022, 0x05cb, 0x0001, 0x0022, 0x05cf, 0x0001, 0x0022, 0x05d7, + 0x0001, 0x0022, 0x05de, 0x0001, 0x0022, 0x05e5, 0x0001, 0x0022, + 0x05ed, 0x0009, 0x01b0, 0x01b6, 0x01ad, 0x01b9, 0x01bf, 0x01c2, + 0x01c5, 0x01b3, 0x01bc, 0x0001, 0x0022, 0x05f5, 0x0001, 0x0022, + 0x05bf, 0x0001, 0x0022, 0x05f9, 0x0001, 0x0022, 0x05cb, 0x0001, + 0x0022, 0x05cf, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, 0x05cb, + // Entry 17000 - 1703F + 0x0001, 0x0022, 0x05e5, 0x0001, 0x0022, 0x05ed, 0x0009, 0x01d5, + 0x01db, 0x01d2, 0x01de, 0x01e4, 0x01e7, 0x01ea, 0x01d8, 0x01e1, + 0x0001, 0x0022, 0x05b2, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, + 0x05fd, 0x0001, 0x0022, 0x05cb, 0x0001, 0x0022, 0x05cf, 0x0001, + 0x0022, 0x060e, 0x0001, 0x0022, 0x061e, 0x0001, 0x0022, 0x05e5, + 0x0001, 0x0022, 0x05ed, 0x0003, 0x01f1, 0x0216, 0x023b, 0x0009, + 0x01fe, 0x0204, 0x01fb, 0x0207, 0x020d, 0x0210, 0x0213, 0x0201, + 0x020a, 0x0001, 0x0022, 0x062e, 0x0001, 0x0022, 0x05bf, 0x0001, + // Entry 17040 - 1707F + 0x0022, 0x05c3, 0x0001, 0x0022, 0x05cb, 0x0001, 0x0022, 0x0637, + 0x0001, 0x0022, 0x05d7, 0x0001, 0x0022, 0x05de, 0x0001, 0x0022, + 0x063c, 0x0001, 0x0022, 0x0641, 0x0009, 0x0223, 0x0229, 0x0220, + 0x022c, 0x0232, 0x0235, 0x0238, 0x0226, 0x022f, 0x0001, 0x0022, + 0x05f5, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, 0x05f9, 0x0001, + 0x0022, 0x05cb, 0x0001, 0x0022, 0x0637, 0x0001, 0x0022, 0x05bf, + 0x0001, 0x0022, 0x05cb, 0x0001, 0x0022, 0x063c, 0x0001, 0x0022, + 0x0641, 0x0009, 0x0248, 0x024e, 0x0245, 0x0251, 0x0257, 0x025a, + // Entry 17080 - 170BF + 0x025d, 0x024b, 0x0254, 0x0001, 0x0022, 0x062e, 0x0001, 0x0022, + 0x05bf, 0x0001, 0x0022, 0x0645, 0x0001, 0x0022, 0x05cb, 0x0001, + 0x0022, 0x0637, 0x0001, 0x0022, 0x0652, 0x0001, 0x0022, 0x065e, + 0x0001, 0x0022, 0x063c, 0x0001, 0x0022, 0x0641, 0x0003, 0x026f, + 0x027a, 0x0264, 0x0002, 0x0267, 0x026b, 0x0002, 0x0022, 0x066a, + 0x069d, 0x0002, 0x0022, 0x0686, 0x06bb, 0x0002, 0x0272, 0x0276, + 0x0002, 0x0022, 0x06d4, 0x06de, 0x0002, 0x0022, 0x06d9, 0x06e3, + 0x0002, 0x027d, 0x0281, 0x0002, 0x0015, 0x01eb, 0x2371, 0x0002, + // Entry 170C0 - 170FF + 0x0022, 0x06e8, 0x06ec, 0x0004, 0x0293, 0x028d, 0x028a, 0x0290, + 0x0001, 0x0022, 0x06f0, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0017, + 0x03cc, 0x0001, 0x0017, 0x03cc, 0x0004, 0x02a4, 0x029e, 0x029b, + 0x02a1, 0x0001, 0x001c, 0x045a, 0x0001, 0x001c, 0x0467, 0x0001, + 0x001c, 0x0471, 0x0001, 0x001c, 0x0479, 0x0004, 0x02b5, 0x02af, + 0x02ac, 0x02b2, 0x0001, 0x0022, 0x030b, 0x0001, 0x0022, 0x030b, + 0x0001, 0x0022, 0x030b, 0x0001, 0x0000, 0x03c6, 0x0001, 0x02ba, + 0x0002, 0x02bd, 0x02d1, 0x0003, 0x0000, 0x0000, 0x02c1, 0x000e, + // Entry 17100 - 1713F + 0x0022, 0x0758, 0x06ff, 0x070c, 0x071a, 0x0727, 0x0733, 0x0740, + 0x074d, 0x0766, 0x0772, 0x077e, 0x078a, 0x0797, 0x079f, 0x0003, + 0x02d5, 0x02e5, 0x02f5, 0x000e, 0x0022, 0x07e0, 0x07aa, 0x07b2, + 0x07bb, 0x07c3, 0x07ca, 0x07d2, 0x07da, 0x07e9, 0x07f0, 0x07f7, + 0x07fe, 0x0806, 0x0809, 0x000e, 0x0000, 0x2382, 0x04dd, 0x19c7, + 0x2157, 0x04dd, 0x22dd, 0x2382, 0x2382, 0x22ee, 0x2055, 0x22dd, + 0x04dd, 0x2382, 0x214e, 0x000e, 0x0022, 0x085a, 0x080f, 0x081a, + 0x0826, 0x0831, 0x083b, 0x0846, 0x0851, 0x0866, 0x0870, 0x087a, + // Entry 17140 - 1717F + 0x0884, 0x088f, 0x0895, 0x0001, 0x0307, 0x0002, 0x030a, 0x031d, + 0x0003, 0x0000, 0x0000, 0x030e, 0x000d, 0x0022, 0xffff, 0x089e, + 0x08a7, 0x08ad, 0x08be, 0x08cf, 0x08de, 0x08f0, 0x08f8, 0x0902, + 0x090a, 0x0912, 0x0920, 0x0003, 0x0000, 0x0000, 0x0321, 0x000d, + 0x0022, 0xffff, 0x089e, 0x08a7, 0x08ad, 0x08be, 0x08cf, 0x08de, + 0x08f0, 0x08f8, 0x0902, 0x090a, 0x0912, 0x0920, 0x0006, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0337, 0x0004, 0x0345, 0x033f, + 0x033c, 0x0342, 0x0001, 0x0022, 0x02ef, 0x0001, 0x0013, 0x0477, + // Entry 17180 - 171BF + 0x0001, 0x0008, 0x0627, 0x0001, 0x0008, 0x062f, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x034e, 0x0001, 0x0350, 0x0001, 0x0352, + 0x0002, 0x0000, 0x1a20, 0x2290, 0x0040, 0x0397, 0x0000, 0x0000, + 0x039c, 0x03b3, 0x03ca, 0x03e1, 0x03f8, 0x040f, 0x0426, 0x043d, + 0x0454, 0x046b, 0x0486, 0x04a1, 0x0000, 0x0000, 0x0000, 0x04bc, + 0x04d5, 0x04ee, 0x0000, 0x0000, 0x0000, 0x0507, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x050c, 0x0520, 0x0534, 0x0548, 0x055c, + 0x0570, 0x0584, 0x0598, 0x05ac, 0x05c0, 0x05d4, 0x05e8, 0x05fc, + // Entry 171C0 - 171FF + 0x0610, 0x0624, 0x0638, 0x064c, 0x0660, 0x0674, 0x0688, 0x069c, + 0x0000, 0x06b0, 0x0000, 0x06b5, 0x06cb, 0x06e1, 0x06f7, 0x070d, + 0x0723, 0x0739, 0x074f, 0x0765, 0x077b, 0x0001, 0x0399, 0x0001, + 0x0022, 0x092e, 0x0003, 0x03a0, 0x03a3, 0x03a8, 0x0001, 0x0022, + 0x0938, 0x0003, 0x0022, 0x093e, 0x094b, 0x0959, 0x0002, 0x03ab, + 0x03af, 0x0002, 0x0022, 0x0965, 0x0965, 0x0002, 0x0022, 0x098b, + 0x097a, 0x0003, 0x03b7, 0x03ba, 0x03bf, 0x0001, 0x0000, 0x1f94, + 0x0003, 0x0022, 0x099d, 0x09a5, 0x09ae, 0x0002, 0x03c2, 0x03c6, + // Entry 17200 - 1723F + 0x0002, 0x0022, 0x09b5, 0x09b5, 0x0002, 0x0022, 0x09c5, 0x09c5, + 0x0003, 0x03ce, 0x03d1, 0x03d6, 0x0001, 0x0000, 0x1f94, 0x0003, + 0x0022, 0x099d, 0x09a5, 0x09ae, 0x0002, 0x03d9, 0x03dd, 0x0002, + 0x0022, 0x09b5, 0x09b5, 0x0002, 0x0022, 0x09c5, 0x09c5, 0x0003, + 0x03e5, 0x03e8, 0x03ed, 0x0001, 0x0022, 0x09d2, 0x0003, 0x0022, + 0x09e2, 0x09f9, 0x0a11, 0x0002, 0x03f0, 0x03f4, 0x0002, 0x0022, + 0x0a27, 0x0a27, 0x0002, 0x0022, 0x0a61, 0x0a46, 0x0003, 0x03fc, + 0x03ff, 0x0404, 0x0001, 0x0022, 0x0a7d, 0x0003, 0x0022, 0x0a88, + // Entry 17240 - 1727F + 0x0a9e, 0x0ab5, 0x0002, 0x0407, 0x040b, 0x0002, 0x0022, 0x0aca, + 0x0aca, 0x0002, 0x0022, 0x0afc, 0x0ae6, 0x0003, 0x0413, 0x0416, + 0x041b, 0x0001, 0x0022, 0x0b15, 0x0003, 0x0022, 0x0b1b, 0x0b27, + 0x0b34, 0x0002, 0x041e, 0x0422, 0x0002, 0x0022, 0x0b3f, 0x0b3f, + 0x0002, 0x0022, 0x0b53, 0x0b53, 0x0003, 0x042a, 0x042d, 0x0432, + 0x0001, 0x0022, 0x0b64, 0x0003, 0x0022, 0x0b6d, 0x0b7a, 0x0b89, + 0x0002, 0x0435, 0x0439, 0x0002, 0x0022, 0x0b95, 0x0b95, 0x0002, + 0x0022, 0x0bc1, 0x0bad, 0x0003, 0x0441, 0x0444, 0x0449, 0x0001, + // Entry 17280 - 172BF + 0x0022, 0x0bd6, 0x0003, 0x0022, 0x0bd9, 0x0be2, 0x0bed, 0x0002, + 0x044c, 0x0450, 0x0002, 0x0022, 0x0bf5, 0x0bf5, 0x0002, 0x0022, + 0x0c06, 0x0c06, 0x0003, 0x0458, 0x045b, 0x0460, 0x0001, 0x0022, + 0x0bd6, 0x0003, 0x0022, 0x0bd9, 0x0be2, 0x0bed, 0x0002, 0x0463, + 0x0467, 0x0002, 0x0022, 0x0bf5, 0x0bf5, 0x0002, 0x0022, 0x0c06, + 0x0c06, 0x0004, 0x0470, 0x0473, 0x0478, 0x0483, 0x0001, 0x0022, + 0x0c14, 0x0003, 0x0022, 0x0c1b, 0x0c2a, 0x0c3b, 0x0002, 0x047b, + 0x047f, 0x0002, 0x0022, 0x0c49, 0x0c49, 0x0002, 0x0022, 0x0c70, + // Entry 172C0 - 172FF + 0x0c5e, 0x0001, 0x0022, 0x0c83, 0x0004, 0x048b, 0x048e, 0x0493, + 0x049e, 0x0001, 0x0022, 0x0c99, 0x0003, 0x0022, 0x0c9c, 0x0ca5, + 0x0cb0, 0x0002, 0x0496, 0x049a, 0x0002, 0x0022, 0x0cb8, 0x0cb8, + 0x0002, 0x0022, 0x0cc9, 0x0cc9, 0x0001, 0x0022, 0x0c83, 0x0004, + 0x04a6, 0x04a9, 0x04ae, 0x04b9, 0x0001, 0x0022, 0x0c99, 0x0003, + 0x0022, 0x0c9c, 0x0ca5, 0x0cb0, 0x0002, 0x04b1, 0x04b5, 0x0002, + 0x0022, 0x0cb8, 0x0cb8, 0x0002, 0x0022, 0x0cc9, 0x0cc9, 0x0001, + 0x0022, 0x0c83, 0x0003, 0x04c0, 0x04c3, 0x04ca, 0x0001, 0x0022, + // Entry 17300 - 1733F + 0x0cd7, 0x0005, 0x0022, 0x0cf1, 0x0cf7, 0x0d01, 0x0cdf, 0x0d0a, + 0x0002, 0x04cd, 0x04d1, 0x0002, 0x0022, 0x0d16, 0x0d16, 0x0002, + 0x0022, 0x0d40, 0x0d2d, 0x0003, 0x04d9, 0x04dc, 0x04e3, 0x0001, + 0x0022, 0x0d55, 0x0005, 0x0022, 0x0cf1, 0x0cf7, 0x0d61, 0x0d58, + 0x0d67, 0x0002, 0x04e6, 0x04ea, 0x0002, 0x0022, 0x0d70, 0x0d70, + 0x0002, 0x0022, 0x0d81, 0x0d81, 0x0003, 0x04f2, 0x04f5, 0x04fc, + 0x0001, 0x0022, 0x0d55, 0x0005, 0x0022, 0x0cf1, 0x0cf7, 0x0d61, + 0x0d58, 0x0d67, 0x0002, 0x04ff, 0x0503, 0x0002, 0x0022, 0x0d70, + // Entry 17340 - 1737F + 0x0d70, 0x0002, 0x0022, 0x0d81, 0x0d81, 0x0001, 0x0509, 0x0001, + 0x0022, 0x0d8f, 0x0003, 0x0000, 0x0510, 0x0515, 0x0003, 0x0022, + 0x0d9d, 0x0daf, 0x0dc2, 0x0002, 0x0518, 0x051c, 0x0002, 0x0022, + 0x0dd3, 0x0dd3, 0x0002, 0x0022, 0x0e01, 0x0dec, 0x0003, 0x0000, + 0x0524, 0x0529, 0x0003, 0x0022, 0x0e18, 0x0e21, 0x0e2b, 0x0002, + 0x052c, 0x0530, 0x0002, 0x0022, 0x0e33, 0x0e33, 0x0002, 0x0022, + 0x0e44, 0x0e44, 0x0003, 0x0000, 0x0538, 0x053d, 0x0003, 0x0022, + 0x0e18, 0x0e21, 0x0e2b, 0x0002, 0x0540, 0x0544, 0x0002, 0x0022, + // Entry 17380 - 173BF + 0x0e33, 0x0e33, 0x0002, 0x0022, 0x0e44, 0x0e44, 0x0003, 0x0000, + 0x054c, 0x0551, 0x0003, 0x0022, 0x0e52, 0x0e64, 0x0e77, 0x0002, + 0x0554, 0x0558, 0x0002, 0x0022, 0x0e88, 0x0e88, 0x0002, 0x0022, + 0x0eb6, 0x0ea1, 0x0003, 0x0000, 0x0560, 0x0565, 0x0003, 0x0022, + 0x0ecd, 0x0ed6, 0x0ee0, 0x0002, 0x0568, 0x056c, 0x0002, 0x0022, + 0x0ee8, 0x0ee8, 0x0002, 0x0022, 0x0ef9, 0x0ef9, 0x0003, 0x0000, + 0x0574, 0x0579, 0x0003, 0x0022, 0x0ecd, 0x0ed6, 0x0ee0, 0x0002, + 0x057c, 0x0580, 0x0002, 0x0022, 0x0ee8, 0x0ee8, 0x0002, 0x0022, + // Entry 173C0 - 173FF + 0x0ef9, 0x0ef9, 0x0003, 0x0000, 0x0588, 0x058d, 0x0003, 0x0022, + 0x0f07, 0x0f17, 0x0f28, 0x0002, 0x0590, 0x0594, 0x0002, 0x0022, + 0x0f37, 0x0f37, 0x0002, 0x0022, 0x0f61, 0x0f4e, 0x0003, 0x0000, + 0x059c, 0x05a1, 0x0003, 0x0022, 0x0f76, 0x0f7f, 0x0f89, 0x0002, + 0x05a4, 0x05a8, 0x0002, 0x0022, 0x0f91, 0x0f91, 0x0002, 0x0022, + 0x0fa2, 0x0fa2, 0x0003, 0x0000, 0x05b0, 0x05b5, 0x0003, 0x0022, + 0x0f76, 0x0f7f, 0x0f89, 0x0002, 0x05b8, 0x05bc, 0x0002, 0x0022, + 0x0f91, 0x0f91, 0x0002, 0x0022, 0x0fa2, 0x0fa2, 0x0003, 0x0000, + // Entry 17400 - 1743F + 0x05c4, 0x05c9, 0x0003, 0x0022, 0x0fb0, 0x0fc4, 0x0fd9, 0x0002, + 0x05cc, 0x05d0, 0x0002, 0x0022, 0x0fec, 0x0fec, 0x0002, 0x0022, + 0x101d, 0x1006, 0x0003, 0x0000, 0x05d8, 0x05dd, 0x0003, 0x0022, + 0x1035, 0x103e, 0x1048, 0x0002, 0x05e0, 0x05e4, 0x0002, 0x0022, + 0x1050, 0x1050, 0x0002, 0x0022, 0x1061, 0x1061, 0x0003, 0x0000, + 0x05ec, 0x05f1, 0x0003, 0x0022, 0x1035, 0x103e, 0x1048, 0x0002, + 0x05f4, 0x05f8, 0x0002, 0x0022, 0x1050, 0x1050, 0x0002, 0x0022, + 0x1061, 0x1061, 0x0003, 0x0000, 0x0600, 0x0605, 0x0003, 0x0022, + // Entry 17440 - 1747F + 0x106f, 0x107f, 0x1090, 0x0002, 0x0608, 0x060c, 0x0002, 0x0022, + 0x109f, 0x109f, 0x0002, 0x0022, 0x10c9, 0x10b6, 0x0003, 0x0000, + 0x0614, 0x0619, 0x0003, 0x0022, 0x10de, 0x10e7, 0x10f1, 0x0002, + 0x061c, 0x0620, 0x0002, 0x0022, 0x10f9, 0x10f9, 0x0002, 0x0022, + 0x110a, 0x110a, 0x0003, 0x0000, 0x0628, 0x062d, 0x0003, 0x0022, + 0x10de, 0x10e7, 0x10f1, 0x0002, 0x0630, 0x0634, 0x0002, 0x0022, + 0x10f9, 0x10f9, 0x0002, 0x0022, 0x110a, 0x110a, 0x0003, 0x0000, + 0x063c, 0x0641, 0x0003, 0x0022, 0x1118, 0x112a, 0x113d, 0x0002, + // Entry 17480 - 174BF + 0x0644, 0x0648, 0x0002, 0x0022, 0x114e, 0x114e, 0x0002, 0x0022, + 0x117c, 0x1167, 0x0003, 0x0000, 0x0650, 0x0655, 0x0003, 0x0022, + 0x1193, 0x119c, 0x11a6, 0x0002, 0x0658, 0x065c, 0x0002, 0x0022, + 0x11ae, 0x11ae, 0x0002, 0x0022, 0x11bf, 0x11bf, 0x0003, 0x0000, + 0x0664, 0x0669, 0x0003, 0x0022, 0x1193, 0x119c, 0x11a6, 0x0002, + 0x066c, 0x0670, 0x0002, 0x0022, 0x11ae, 0x11ae, 0x0002, 0x0022, + 0x11bf, 0x11bf, 0x0003, 0x0000, 0x0678, 0x067d, 0x0003, 0x0022, + 0x11cd, 0x11de, 0x11f0, 0x0002, 0x0680, 0x0684, 0x0002, 0x0022, + // Entry 174C0 - 174FF + 0x1200, 0x1200, 0x0002, 0x0022, 0x122c, 0x1218, 0x0003, 0x0000, + 0x068c, 0x0691, 0x0003, 0x0022, 0x1242, 0x124b, 0x1255, 0x0002, + 0x0694, 0x0698, 0x0002, 0x0022, 0x125d, 0x125d, 0x0002, 0x0022, + 0x126e, 0x126e, 0x0003, 0x0000, 0x06a0, 0x06a5, 0x0003, 0x0022, + 0x1242, 0x124b, 0x1255, 0x0002, 0x06a8, 0x06ac, 0x0002, 0x0022, + 0x125d, 0x125d, 0x0002, 0x0022, 0x126e, 0x126e, 0x0001, 0x06b2, + 0x0001, 0x0022, 0x127c, 0x0003, 0x06b9, 0x06bc, 0x06c0, 0x0001, + 0x0022, 0x128c, 0x0002, 0x0022, 0xffff, 0x1292, 0x0002, 0x06c3, + // Entry 17500 - 1753F + 0x06c7, 0x0002, 0x0022, 0x12a8, 0x12a8, 0x0002, 0x0022, 0x12ce, + 0x12bd, 0x0003, 0x06cf, 0x06d2, 0x06d6, 0x0001, 0x0000, 0x2000, + 0x0002, 0x0022, 0xffff, 0x12e0, 0x0002, 0x06d9, 0x06dd, 0x0002, + 0x0022, 0x12f1, 0x12f1, 0x0002, 0x0022, 0x1301, 0x1301, 0x0003, + 0x06e5, 0x06e8, 0x06ec, 0x0001, 0x0000, 0x2000, 0x0002, 0x0022, + 0xffff, 0x12e0, 0x0002, 0x06ef, 0x06f3, 0x0002, 0x0022, 0x12f1, + 0x12f1, 0x0002, 0x0022, 0x1301, 0x1301, 0x0003, 0x06fb, 0x06fe, + 0x0702, 0x0001, 0x0022, 0x130e, 0x0002, 0x0022, 0xffff, 0x1317, + // Entry 17540 - 1757F + 0x0002, 0x0705, 0x0709, 0x0002, 0x0022, 0x132f, 0x132f, 0x0002, + 0x0022, 0x135a, 0x1346, 0x0003, 0x0711, 0x0714, 0x0718, 0x0001, + 0x000b, 0x1250, 0x0002, 0x0022, 0xffff, 0x136f, 0x0002, 0x071b, + 0x071f, 0x0002, 0x0022, 0x1382, 0x1382, 0x0002, 0x0022, 0x1394, + 0x1394, 0x0003, 0x0727, 0x072a, 0x072e, 0x0001, 0x000b, 0x1250, + 0x0002, 0x0022, 0xffff, 0x136f, 0x0002, 0x0731, 0x0735, 0x0002, + 0x0022, 0x1382, 0x1382, 0x0002, 0x0022, 0x1394, 0x1394, 0x0003, + 0x073d, 0x0740, 0x0744, 0x0001, 0x0022, 0x13a3, 0x0002, 0x0022, + // Entry 17580 - 175BF + 0xffff, 0x13ab, 0x0002, 0x0747, 0x074b, 0x0002, 0x0022, 0x13af, + 0x13af, 0x0002, 0x0022, 0x13d9, 0x13c6, 0x0003, 0x0753, 0x0756, + 0x075a, 0x0001, 0x0000, 0x2002, 0x0002, 0x0022, 0xffff, 0x13ab, + 0x0002, 0x075d, 0x0761, 0x0002, 0x0022, 0x13ed, 0x13ed, 0x0002, + 0x0022, 0x13fd, 0x13fd, 0x0003, 0x0769, 0x076c, 0x0770, 0x0001, + 0x0000, 0x2002, 0x0002, 0x0022, 0xffff, 0x13ab, 0x0002, 0x0773, + 0x0777, 0x0002, 0x0022, 0x13ed, 0x13ed, 0x0002, 0x0022, 0x13fd, + 0x13fd, 0x0001, 0x077d, 0x0001, 0x0022, 0x140a, 0x0004, 0x0785, + // Entry 175C0 - 175FF + 0x078a, 0x078f, 0x079e, 0x0003, 0x0022, 0x1417, 0x1423, 0x142a, + 0x0003, 0x0022, 0x142e, 0x1440, 0x1450, 0x0002, 0x0000, 0x0792, + 0x0003, 0x0000, 0x0799, 0x0796, 0x0001, 0x0022, 0x1463, 0x0003, + 0x0022, 0xffff, 0x1476, 0x148b, 0x0002, 0x0000, 0x07a1, 0x0003, + 0x07a5, 0x08e5, 0x0845, 0x009e, 0x0022, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1517, 0x1560, 0x15c8, 0x15ff, 0x165d, 0x16bb, 0x1701, + 0x1768, 0x179f, 0x183e, 0x1884, 0x18c4, 0x1919, 0x1950, 0x199f, + 0x19ee, 0x1a5b, 0x1aa7, 0x1af9, 0x1b42, 0x1b76, 0xffff, 0xffff, + // Entry 17600 - 1763F + 0x1bd5, 0xffff, 0x1c1c, 0xffff, 0x1c75, 0x1caf, 0x1ce0, 0x1d11, + 0xffff, 0xffff, 0x1d75, 0x1daf, 0x1df5, 0xffff, 0xffff, 0xffff, + 0x1e5e, 0xffff, 0x1ebf, 0x1f08, 0xffff, 0x1f69, 0x1fb5, 0x2007, + 0xffff, 0xffff, 0xffff, 0xffff, 0x20a9, 0xffff, 0xffff, 0x210d, + 0x215c, 0xffff, 0xffff, 0x21ea, 0x223f, 0x227c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2322, 0x2353, 0x238d, 0x23c4, + 0x23f8, 0xffff, 0xffff, 0x2466, 0xffff, 0x24a4, 0xffff, 0xffff, + 0x251a, 0xffff, 0x259e, 0xffff, 0xffff, 0xffff, 0xffff, 0x261f, + // Entry 17640 - 1767F + 0xffff, 0x2670, 0x26bf, 0x271a, 0x275d, 0xffff, 0xffff, 0xffff, + 0x27bc, 0x280b, 0x2857, 0xffff, 0xffff, 0x28c1, 0x2934, 0x297a, + 0x29ab, 0xffff, 0xffff, 0x2a0d, 0x2a47, 0x2a75, 0xffff, 0x2acc, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bcc, 0x2c06, 0x2c3a, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2cdd, + 0xffff, 0xffff, 0x2d33, 0xffff, 0x2d71, 0xffff, 0x2dc7, 0x2dfe, + 0x2e41, 0xffff, 0x2e88, 0x2ece, 0xffff, 0xffff, 0xffff, 0x2f40, + 0x2f7a, 0xffff, 0xffff, 0x149e, 0x1594, 0x17cd, 0x1807, 0xffff, + // Entry 17680 - 176BF + 0xffff, 0x2557, 0x2b6b, 0x009e, 0x0022, 0x14cc, 0x14de, 0x14f1, + 0x1503, 0x152b, 0x156d, 0x15d6, 0x161a, 0x1678, 0x16ce, 0x171f, + 0x1776, 0x17aa, 0x1851, 0x1895, 0x18dc, 0x1927, 0x1966, 0x19b5, + 0x1a0e, 0x1a70, 0x1abe, 0x1b0d, 0x1b4f, 0x1b88, 0x1bb9, 0x1bc7, + 0x1be4, 0x1c0f, 0x1c2c, 0x1c65, 0x1c84, 0x1cbb, 0x1cec, 0x1d22, + 0x1d51, 0x1d62, 0x1d84, 0x1dc2, 0x1e01, 0x1e26, 0x1e33, 0x1e4c, + 0x1e75, 0x1eb0, 0x1ed3, 0x1f1b, 0x1f4e, 0x1f7e, 0x1fcc, 0x2014, + 0x203b, 0x2051, 0x2083, 0x209a, 0x20b7, 0x20e0, 0x20f4, 0x2123, + // Entry 176C0 - 176FF + 0x2174, 0x21bd, 0x21dd, 0x2202, 0x224f, 0x2288, 0x22ad, 0x22b9, + 0x22d0, 0x22e0, 0x22f6, 0x230b, 0x232e, 0x2362, 0x239b, 0x23d1, + 0x2409, 0x2438, 0x244e, 0x2472, 0x2497, 0x24b7, 0x24ea, 0x2509, + 0x252a, 0x2588, 0x25ad, 0x25d8, 0x25e6, 0x25f7, 0x2608, 0x2631, + 0x2662, 0x2686, 0x26d9, 0x272c, 0x276b, 0x2794, 0x27a3, 0x27af, + 0x27d2, 0x2820, 0x286b, 0x28a0, 0x28ab, 0x28db, 0x2947, 0x2986, + 0x29bb, 0x29e8, 0x29f4, 0x2a1c, 0x2a52, 0x2a87, 0x2ab8, 0x2aed, + 0x2b3c, 0x2b4c, 0x2b5a, 0x2bae, 0x2bbe, 0x2bdb, 0x2c13, 0x2c46, + // Entry 17700 - 1773F + 0x2c6b, 0x2c7c, 0x2c8c, 0x2ca0, 0x2cb5, 0x2cc4, 0x2cd0, 0x2cea, + 0x2d11, 0x2d25, 0x2d3f, 0x2d64, 0x2d85, 0x2dba, 0x2dd5, 0x2e10, + 0x2e4f, 0x2e78, 0x2e9b, 0x2edf, 0x2f0e, 0x2f1c, 0x2f27, 0x2f4f, + 0x2f8f, 0x21b1, 0x291c, 0x14a9, 0x15a1, 0x17dc, 0x1815, 0x1c59, + 0x24f9, 0x2563, 0x2b7d, 0x009e, 0x0022, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1547, 0x1582, 0x15ec, 0x163d, 0x169b, 0x16e9, 0x1745, + 0x178c, 0x17bd, 0x186c, 0x18ae, 0x18fc, 0x193d, 0x1984, 0x19d3, + 0x1a36, 0x1a8d, 0x1add, 0x1b29, 0x1b64, 0x1ba2, 0xffff, 0xffff, + // Entry 17740 - 1777F + 0x1bfb, 0xffff, 0x1c44, 0xffff, 0x1c9b, 0x1ccf, 0x1d00, 0x1d3b, + 0xffff, 0xffff, 0x1d9b, 0x1ddd, 0x1e15, 0xffff, 0xffff, 0xffff, + 0x1e94, 0xffff, 0x1eef, 0x1f36, 0xffff, 0x1f9b, 0x1feb, 0x2029, + 0xffff, 0xffff, 0xffff, 0xffff, 0x20cd, 0xffff, 0xffff, 0x2141, + 0x2194, 0xffff, 0xffff, 0x2222, 0x2267, 0x229c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2342, 0x2379, 0x23b1, 0x23e6, + 0x2422, 0xffff, 0xffff, 0x2486, 0xffff, 0x24d2, 0xffff, 0xffff, + 0x2542, 0xffff, 0x25c4, 0xffff, 0xffff, 0xffff, 0xffff, 0x264b, + // Entry 17780 - 177BF + 0xffff, 0x26a4, 0x26fb, 0x2746, 0x2781, 0xffff, 0xffff, 0xffff, + 0x27f0, 0x283d, 0x2887, 0xffff, 0xffff, 0x28fd, 0x2962, 0x299a, + 0x29d3, 0xffff, 0xffff, 0x2a33, 0x2a65, 0x2aa1, 0xffff, 0x2b16, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bf2, 0x2c28, 0x2c5a, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2cff, + 0xffff, 0xffff, 0x2d53, 0xffff, 0x2da1, 0xffff, 0x2deb, 0x2e2a, + 0x2e65, 0xffff, 0x2eb6, 0x2ef8, 0xffff, 0xffff, 0xffff, 0x2f66, + 0x2fac, 0xffff, 0xffff, 0x14bc, 0x15b6, 0x17f3, 0x182b, 0xffff, + // Entry 177C0 - 177FF + 0xffff, 0x2577, 0x2b97, 0x0003, 0x0004, 0x0268, 0x067a, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x000c, + 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, + 0x0012, 0x0203, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + 0x0023, 0x0000, 0x0001, 0x0023, 0x0000, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, + // Entry 17800 - 1783F + 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, 0x0003, + 0x0048, 0x0057, 0x0066, 0x000d, 0x0023, 0xffff, 0x000f, 0x0013, + 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x0033, + 0x0037, 0x003b, 0x000d, 0x0023, 0xffff, 0x000f, 0x0013, 0x0017, + 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x0033, 0x0037, + 0x003b, 0x000d, 0x001e, 0xffff, 0x181f, 0x1fee, 0x1ff6, 0x1833, + 0x1839, 0x1ffc, 0x2002, 0x184a, 0x2008, 0x2012, 0x201a, 0x2024, + 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0023, 0xffff, 0x000f, + // Entry 17840 - 1787F + 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, + 0x0033, 0x0037, 0x003b, 0x000d, 0x0000, 0xffff, 0x214e, 0x21e5, + 0x22d9, 0x2382, 0x22d9, 0x239b, 0x239f, 0x23a3, 0x23a7, 0x23ab, + 0x23af, 0x23b3, 0x000d, 0x001e, 0xffff, 0x181f, 0x1fee, 0x1ff6, + 0x1833, 0x1839, 0x1ffc, 0x2002, 0x184a, 0x2008, 0x2012, 0x201a, + 0x2024, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, + 0x0000, 0x00c1, 0x0007, 0x0023, 0x003f, 0x0043, 0x0017, 0x0047, + 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, 0x003f, 0x0043, 0x0017, + // Entry 17880 - 178BF + 0x0047, 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, 0x0057, 0x005a, + 0x005d, 0x0060, 0x0063, 0x0066, 0x0069, 0x0007, 0x0023, 0x006c, + 0x0073, 0x0079, 0x0080, 0x008b, 0x0093, 0x009c, 0x0005, 0x00d9, + 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0023, 0x003f, 0x0043, + 0x0017, 0x0047, 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, 0x003f, + 0x0043, 0x0017, 0x0047, 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, + 0x0057, 0x005a, 0x005d, 0x0060, 0x0063, 0x0066, 0x0069, 0x0007, + 0x0023, 0x006c, 0x0073, 0x0079, 0x0080, 0x008b, 0x0093, 0x009c, + // Entry 178C0 - 178FF + 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, + 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0023, 0xffff, + 0x00a3, 0x00b1, 0x00bf, 0x00cd, 0x0003, 0x011d, 0x0124, 0x012b, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0023, + 0xffff, 0x00a3, 0x00b1, 0x00bf, 0x00cd, 0x0002, 0x0135, 0x01a8, + 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, 0x0143, + // Entry 17900 - 1793F + 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, 0x0023, + 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0023, 0x00e9, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0023, 0x00fa, 0x0001, 0x0023, 0x0105, + 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, 0x011c, 0x0001, 0x0023, + 0x0125, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, 0x017d, + 0x0180, 0x016e, 0x0177, 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, + 0x2337, 0x0001, 0x0023, 0x00e9, 0x0001, 0x0000, 0x233a, 0x0001, + 0x0023, 0x012a, 0x0001, 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, + // Entry 17940 - 1797F + 0x0001, 0x0023, 0x011c, 0x0001, 0x0023, 0x0125, 0x0009, 0x0190, + 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, 0x019c, + 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0023, + 0x00e9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0023, 0x00fa, 0x0001, + 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, 0x011c, + 0x0001, 0x0023, 0x0130, 0x0003, 0x01ac, 0x01d1, 0x01f6, 0x0009, + 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, 0x01bc, + 0x01c5, 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, + // Entry 17980 - 179BF + 0x0023, 0x00e9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0023, 0x012a, + 0x0001, 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, + 0x0138, 0x0001, 0x0023, 0x0125, 0x0009, 0x01de, 0x01e4, 0x01db, + 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, 0x0023, + 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0023, 0x00e9, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0023, 0x012a, 0x0001, 0x0023, 0x0105, + 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, 0x0138, 0x0001, 0x0023, + 0x0125, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, 0x0215, + // Entry 179C0 - 179FF + 0x0218, 0x0206, 0x020f, 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0023, 0x00e9, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0023, 0x012a, 0x0001, 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, + 0x0001, 0x0023, 0x0138, 0x0001, 0x0023, 0x0125, 0x0003, 0x022a, + 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, 0x0009, 0x0078, + 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x022d, 0x0231, + 0x0002, 0x0009, 0x0078, 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, + 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x000c, 0x03c9, + // Entry 17A00 - 17A3F + 0x0001, 0x000c, 0x03d9, 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, + 0x03ec, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, 0x0002, + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, 0x0001, + 0x0023, 0x0000, 0x0001, 0x0023, 0x0000, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0040, 0x02a9, 0x0000, 0x0000, 0x02ae, + 0x02c5, 0x02dc, 0x02f3, 0x030a, 0x0321, 0x0338, 0x034f, 0x0366, + 0x037d, 0x0398, 0x03b3, 0x0000, 0x0000, 0x0000, 0x03ce, 0x03e7, + // Entry 17A40 - 17A7F + 0x0400, 0x0000, 0x0000, 0x0000, 0x0419, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x041e, 0x0432, 0x0446, 0x045a, 0x046e, 0x0482, + 0x0496, 0x04aa, 0x04be, 0x04d2, 0x04e6, 0x04fa, 0x050e, 0x0522, + 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, 0x059a, 0x05ae, 0x0000, + 0x05c2, 0x0000, 0x05c7, 0x05dd, 0x05ef, 0x0601, 0x0617, 0x0629, + 0x063b, 0x0651, 0x0663, 0x0675, 0x0001, 0x02ab, 0x0001, 0x0023, + 0x013e, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0023, 0x0146, + 0x0003, 0x0023, 0x014b, 0x015a, 0x0167, 0x0002, 0x02bd, 0x02c1, + // Entry 17A80 - 17ABF + 0x0002, 0x0023, 0x0183, 0x0177, 0x0002, 0x0023, 0x01ab, 0x0194, + 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x0023, 0x0146, 0x0003, + 0x0023, 0x014b, 0x015a, 0x0167, 0x0002, 0x02d4, 0x02d8, 0x0002, + 0x0023, 0x0183, 0x0177, 0x0002, 0x0023, 0x01ab, 0x0194, 0x0003, + 0x02e0, 0x02e3, 0x02e8, 0x0001, 0x0023, 0x0146, 0x0003, 0x0023, + 0x014b, 0x015a, 0x0167, 0x0002, 0x02eb, 0x02ef, 0x0002, 0x0023, + 0x0183, 0x0177, 0x0002, 0x0023, 0x01ab, 0x0194, 0x0003, 0x02f7, + 0x02fa, 0x02ff, 0x0001, 0x0000, 0x1a6a, 0x0003, 0x0023, 0x01c7, + // Entry 17AC0 - 17AFF + 0x01d9, 0x01e9, 0x0002, 0x0302, 0x0306, 0x0002, 0x0023, 0x020b, + 0x01fc, 0x0002, 0x0023, 0x0239, 0x021f, 0x0003, 0x030e, 0x0311, + 0x0316, 0x0001, 0x001b, 0x035f, 0x0003, 0x0023, 0x01c7, 0x01d9, + 0x01e9, 0x0002, 0x0319, 0x031d, 0x0002, 0x0023, 0x020b, 0x020b, + 0x0002, 0x0023, 0x0239, 0x021f, 0x0003, 0x0325, 0x0328, 0x032d, + 0x0001, 0x001b, 0x035f, 0x0003, 0x0023, 0x01c7, 0x01d9, 0x01e9, + 0x0002, 0x0330, 0x0334, 0x0002, 0x0023, 0x020b, 0x01fc, 0x0002, + 0x0023, 0x0239, 0x021f, 0x0003, 0x033c, 0x033f, 0x0344, 0x0001, + // Entry 17B00 - 17B3F + 0x0023, 0x0258, 0x0003, 0x0023, 0x025e, 0x026e, 0x027c, 0x0002, + 0x0347, 0x034b, 0x0002, 0x0023, 0x029a, 0x028d, 0x0002, 0x0023, + 0x02c4, 0x02ac, 0x0003, 0x0353, 0x0356, 0x035b, 0x0001, 0x0023, + 0x0258, 0x0003, 0x0023, 0x025e, 0x026e, 0x027c, 0x0002, 0x035e, + 0x0362, 0x0002, 0x0023, 0x029a, 0x028d, 0x0002, 0x0023, 0x02c4, + 0x02ac, 0x0003, 0x036a, 0x036d, 0x0372, 0x0001, 0x0023, 0x0258, + 0x0003, 0x0023, 0x025e, 0x026e, 0x027c, 0x0002, 0x0375, 0x0379, + 0x0002, 0x0023, 0x029a, 0x028d, 0x0002, 0x0023, 0x02c4, 0x02ac, + // Entry 17B40 - 17B7F + 0x0004, 0x0382, 0x0385, 0x038a, 0x0395, 0x0001, 0x0023, 0x02e1, + 0x0003, 0x0023, 0x02e8, 0x02fc, 0x030c, 0x0002, 0x038d, 0x0391, + 0x0002, 0x0023, 0x032c, 0x031e, 0x0002, 0x0023, 0x0358, 0x033f, + 0x0001, 0x0023, 0x0376, 0x0004, 0x039d, 0x03a0, 0x03a5, 0x03b0, + 0x0001, 0x0023, 0x02e1, 0x0003, 0x0023, 0x0384, 0x0395, 0x030c, + 0x0002, 0x03a8, 0x03ac, 0x0002, 0x0023, 0x032c, 0x031e, 0x0002, + 0x0023, 0x0358, 0x033f, 0x0001, 0x0023, 0x0376, 0x0004, 0x03b8, + 0x03bb, 0x03c0, 0x03cb, 0x0001, 0x0023, 0x02e1, 0x0003, 0x0023, + // Entry 17B80 - 17BBF + 0x0384, 0x0395, 0x030c, 0x0002, 0x03c3, 0x03c7, 0x0002, 0x0023, + 0x032c, 0x031e, 0x0002, 0x0023, 0x0358, 0x033f, 0x0001, 0x0023, + 0x0376, 0x0003, 0x03d2, 0x03d5, 0x03dc, 0x0001, 0x0023, 0x03a4, + 0x0005, 0x0023, 0x03bf, 0x03c7, 0x03d4, 0x03a9, 0x03da, 0x0002, + 0x03df, 0x03e3, 0x0002, 0x0023, 0x03f1, 0x03e5, 0x0002, 0x0023, + 0x0419, 0x0402, 0x0003, 0x03eb, 0x03ee, 0x03f5, 0x0001, 0x0023, + 0x03a4, 0x0005, 0x0023, 0x03bf, 0x03c7, 0x03d4, 0x03a9, 0x03da, + 0x0002, 0x03f8, 0x03fc, 0x0002, 0x0023, 0x03f1, 0x03f1, 0x0002, + // Entry 17BC0 - 17BFF + 0x0023, 0x0419, 0x0419, 0x0003, 0x0404, 0x0407, 0x040e, 0x0001, + 0x0023, 0x03a4, 0x0005, 0x0023, 0x03bf, 0x03c7, 0x03d4, 0x03a9, + 0x03da, 0x0002, 0x0411, 0x0415, 0x0002, 0x0023, 0x03f1, 0x03e5, + 0x0002, 0x0023, 0x0419, 0x0402, 0x0001, 0x041b, 0x0001, 0x0023, + 0x0435, 0x0003, 0x0000, 0x0422, 0x0427, 0x0003, 0x0023, 0x0384, + 0x0444, 0x044e, 0x0002, 0x042a, 0x042e, 0x0002, 0x0023, 0x046e, + 0x0460, 0x0002, 0x0023, 0x049a, 0x0481, 0x0003, 0x0000, 0x0436, + 0x043b, 0x0003, 0x0023, 0x04b8, 0x04c7, 0x04d4, 0x0002, 0x043e, + // Entry 17C00 - 17C3F + 0x0442, 0x0002, 0x0023, 0x046e, 0x0460, 0x0002, 0x0023, 0x049a, + 0x0481, 0x0003, 0x0000, 0x044a, 0x044f, 0x0003, 0x0023, 0x04b8, + 0x04c7, 0x04d4, 0x0002, 0x0452, 0x0456, 0x0002, 0x0023, 0x046e, + 0x031e, 0x0002, 0x0023, 0x049a, 0x0481, 0x0003, 0x0000, 0x045e, + 0x0463, 0x0003, 0x0023, 0x04e4, 0x04f4, 0x0502, 0x0002, 0x0466, + 0x046a, 0x0002, 0x0023, 0x0520, 0x0513, 0x0002, 0x0023, 0x054a, + 0x0532, 0x0003, 0x0000, 0x0472, 0x0477, 0x0003, 0x0023, 0x0567, + 0x0576, 0x0583, 0x0002, 0x047a, 0x047e, 0x0002, 0x0023, 0x0520, + // Entry 17C40 - 17C7F + 0x0513, 0x0002, 0x0023, 0x054a, 0x0532, 0x0003, 0x0000, 0x0486, + 0x048b, 0x0003, 0x0023, 0x0567, 0x0576, 0x0583, 0x0002, 0x048e, + 0x0492, 0x0002, 0x0023, 0x0513, 0x0513, 0x0002, 0x0023, 0x054a, + 0x0532, 0x0003, 0x0000, 0x049a, 0x049f, 0x0003, 0x0023, 0x0593, + 0x05a4, 0x05b3, 0x0002, 0x04a2, 0x04a6, 0x0002, 0x0023, 0x05d3, + 0x05c5, 0x0002, 0x0023, 0x05ff, 0x05e6, 0x0003, 0x0000, 0x04ae, + 0x04b3, 0x0003, 0x0023, 0x061d, 0x062c, 0x0639, 0x0002, 0x04b6, + 0x04ba, 0x0002, 0x0023, 0x05d3, 0x05c5, 0x0002, 0x0023, 0x05ff, + // Entry 17C80 - 17CBF + 0x05e6, 0x0003, 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0023, 0x061d, + 0x062c, 0x0639, 0x0002, 0x04ca, 0x04ce, 0x0002, 0x0023, 0x0649, + 0x05c5, 0x0002, 0x0023, 0x05ff, 0x05e6, 0x0003, 0x0000, 0x04d6, + 0x04db, 0x0003, 0x0023, 0x066a, 0x067f, 0x0692, 0x0002, 0x04de, + 0x04e2, 0x0002, 0x0023, 0x06ba, 0x06a8, 0x0002, 0x0023, 0x06ee, + 0x06d1, 0x0003, 0x0000, 0x04ea, 0x04ef, 0x0003, 0x0023, 0x0710, + 0x071f, 0x072c, 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0023, 0x06ba, + 0x06a8, 0x0002, 0x0023, 0x06ee, 0x06d1, 0x0003, 0x0000, 0x04fe, + // Entry 17CC0 - 17CFF + 0x0503, 0x0003, 0x0023, 0x0710, 0x071f, 0x072c, 0x0002, 0x0506, + 0x050a, 0x0002, 0x0023, 0x06ba, 0x06a8, 0x0002, 0x0023, 0x06ee, + 0x06d1, 0x0003, 0x0000, 0x0512, 0x0517, 0x0003, 0x0023, 0x073c, + 0x074e, 0x075e, 0x0002, 0x051a, 0x051e, 0x0002, 0x0023, 0x0780, + 0x0771, 0x0002, 0x0023, 0x07ae, 0x0794, 0x0003, 0x0000, 0x0526, + 0x052b, 0x0003, 0x0023, 0x07cd, 0x07dc, 0x07e9, 0x0002, 0x052e, + 0x0532, 0x0002, 0x0023, 0x0780, 0x0771, 0x0002, 0x0023, 0x07ae, + 0x0794, 0x0003, 0x0000, 0x053a, 0x053f, 0x0003, 0x0023, 0x07cd, + // Entry 17D00 - 17D3F + 0x07dc, 0x07e9, 0x0002, 0x0542, 0x0546, 0x0002, 0x0023, 0x0780, + 0x0771, 0x0002, 0x0023, 0x07ae, 0x0794, 0x0003, 0x0000, 0x054e, + 0x0553, 0x0003, 0x0023, 0x07f9, 0x080c, 0x081d, 0x0002, 0x0556, + 0x055a, 0x0002, 0x0023, 0x0841, 0x0831, 0x0002, 0x0023, 0x0871, + 0x0856, 0x0003, 0x0000, 0x0562, 0x0567, 0x0003, 0x0023, 0x0891, + 0x08a0, 0x08ad, 0x0002, 0x056a, 0x056e, 0x0002, 0x0023, 0x0841, + 0x0831, 0x0002, 0x0023, 0x0871, 0x0856, 0x0003, 0x0000, 0x0576, + 0x057b, 0x0003, 0x0023, 0x0891, 0x08a0, 0x08ad, 0x0002, 0x057e, + // Entry 17D40 - 17D7F + 0x0582, 0x0002, 0x0023, 0x0841, 0x0831, 0x0002, 0x0023, 0x0871, + 0x0856, 0x0003, 0x0000, 0x058a, 0x058f, 0x0003, 0x0023, 0x08bd, + 0x08ce, 0x08dd, 0x0002, 0x0592, 0x0596, 0x0002, 0x0023, 0x08fd, + 0x08ef, 0x0002, 0x0023, 0x0929, 0x0910, 0x0003, 0x0000, 0x059e, + 0x05a3, 0x0003, 0x0023, 0x0947, 0x0956, 0x0963, 0x0002, 0x05a6, + 0x05aa, 0x0002, 0x0023, 0x08fd, 0x08ef, 0x0002, 0x0023, 0x0929, + 0x0910, 0x0003, 0x0000, 0x05b2, 0x05b7, 0x0003, 0x0023, 0x0947, + 0x0956, 0x0963, 0x0002, 0x05ba, 0x05be, 0x0002, 0x0023, 0x0973, + // Entry 17D80 - 17DBF + 0x08ef, 0x0002, 0x0023, 0x0929, 0x0910, 0x0001, 0x05c4, 0x0001, + 0x0007, 0x07cc, 0x0003, 0x05cb, 0x05ce, 0x05d2, 0x0001, 0x0023, + 0x0994, 0x0002, 0x0023, 0xffff, 0x0999, 0x0002, 0x05d5, 0x05d9, + 0x0002, 0x0023, 0x09b2, 0x09a6, 0x0002, 0x0023, 0x09da, 0x09c3, + 0x0003, 0x05e1, 0x0000, 0x05e4, 0x0001, 0x0023, 0x0994, 0x0002, + 0x05e7, 0x05eb, 0x0002, 0x0023, 0x09b2, 0x09a6, 0x0002, 0x0023, + 0x09da, 0x09c3, 0x0003, 0x05f3, 0x0000, 0x05f6, 0x0001, 0x0023, + 0x0994, 0x0002, 0x05f9, 0x05fd, 0x0002, 0x0023, 0x09b2, 0x09a6, + // Entry 17DC0 - 17DFF + 0x0002, 0x0023, 0x0a09, 0x09f6, 0x0003, 0x0605, 0x0608, 0x060c, + 0x0001, 0x001c, 0x0b08, 0x0002, 0x0023, 0xffff, 0x0a21, 0x0002, + 0x060f, 0x0613, 0x0002, 0x0023, 0x0a3f, 0x0a31, 0x0002, 0x0023, + 0x0a6b, 0x0a52, 0x0003, 0x061b, 0x0000, 0x061e, 0x0001, 0x0001, + 0x075a, 0x0002, 0x0621, 0x0625, 0x0002, 0x0023, 0x0a95, 0x0a89, + 0x0002, 0x0023, 0x0abd, 0x0aa6, 0x0003, 0x062d, 0x0000, 0x0630, + 0x0001, 0x0001, 0x075a, 0x0002, 0x0633, 0x0637, 0x0002, 0x0023, + 0x0a95, 0x0a89, 0x0002, 0x0023, 0x0abd, 0x0aa6, 0x0003, 0x063f, + // Entry 17E00 - 17E3F + 0x0642, 0x0646, 0x0001, 0x001c, 0x1f87, 0x0002, 0x0023, 0xffff, + 0x0ad9, 0x0002, 0x0649, 0x064d, 0x0002, 0x0023, 0x0aef, 0x0ae0, + 0x0002, 0x0023, 0x0b1d, 0x0b03, 0x0003, 0x0655, 0x0000, 0x0658, + 0x0001, 0x001e, 0x0171, 0x0002, 0x065b, 0x065f, 0x0002, 0x0023, + 0x0b48, 0x0b3c, 0x0002, 0x0023, 0x0b70, 0x0b59, 0x0003, 0x0667, + 0x0000, 0x066a, 0x0001, 0x001e, 0x0171, 0x0002, 0x066d, 0x0671, + 0x0002, 0x0023, 0x0b48, 0x0b3c, 0x0002, 0x0023, 0x0b70, 0x0b88, + 0x0001, 0x0677, 0x0001, 0x001b, 0x0ab4, 0x0004, 0x067f, 0x0684, + // Entry 17E40 - 17E7F + 0x0689, 0x0694, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x23b7, 0x0003, + 0x0000, 0x1de0, 0x23bb, 0x23d0, 0x0002, 0x0000, 0x068c, 0x0002, + 0x0000, 0x068f, 0x0003, 0x0023, 0xffff, 0x0b9b, 0x0bb7, 0x0002, + 0x0000, 0x0697, 0x0003, 0x0731, 0x07c7, 0x069b, 0x0094, 0x0023, + 0x0bd3, 0x0be7, 0x0bfe, 0x0c17, 0x0c45, 0x0c9e, 0x0ce0, 0x0d26, + 0x0d67, 0x0da8, 0x0deb, 0x0e31, 0x0e6c, 0x0ea7, 0x0eec, 0x0f44, + 0x0fa4, 0x0fee, 0x1041, 0x10ad, 0x1127, 0x118d, 0x11ea, 0x1237, + 0x1280, 0x12be, 0x12cd, 0x12ee, 0x1328, 0x1355, 0x1393, 0x13c0, + // Entry 17E80 - 17EBF + 0x1403, 0x1445, 0x1489, 0x14c7, 0x14e0, 0x1507, 0x1556, 0x15b1, + 0x15e0, 0x15ee, 0x1609, 0x1632, 0x1676, 0x169d, 0x16fc, 0x1746, + 0x177f, 0x17e2, 0x1839, 0x186b, 0x1881, 0x18a8, 0x18ba, 0x18da, + 0x1912, 0x192a, 0x195a, 0x19c6, 0x1a16, 0x1a23, 0x1a4a, 0x1aa4, + 0x1aed, 0x1b1f, 0x1b3a, 0x1b4f, 0x1b61, 0x1b7c, 0x1b99, 0x1bc3, + 0x1c02, 0x1c49, 0x1c8a, 0x1cdc, 0x1d2e, 0x1d4b, 0x1d76, 0x1da7, + 0x1dca, 0x1e0a, 0x1e1c, 0x1e43, 0x1e7d, 0x1ea6, 0x1ede, 0x1eef, + 0x1f00, 0x1f12, 0x1f3d, 0x1f79, 0x1faa, 0x201e, 0x207c, 0x20c9, + // Entry 17EC0 - 17EFF + 0x20ff, 0x210f, 0x211d, 0x2141, 0x2199, 0x21eb, 0x222a, 0x2237, + 0x226a, 0x22ce, 0x231b, 0x235e, 0x2398, 0x23a6, 0x23d0, 0x2417, + 0x245b, 0x2497, 0x24d1, 0x252a, 0x253b, 0x254a, 0x255c, 0x256c, + 0x258d, 0x25d6, 0x260c, 0x263d, 0x2650, 0x266e, 0x2686, 0x269c, + 0x26ad, 0x26bb, 0x26d9, 0x270c, 0x271f, 0x273d, 0x2771, 0x2794, + 0x27d6, 0x27f5, 0x2840, 0x288e, 0x28c6, 0x28ec, 0x293e, 0x297a, + 0x2989, 0x299d, 0x29c7, 0x2a15, 0x0094, 0x0023, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0c2c, 0x0c8f, 0x0cd1, 0x0d16, 0x0d5a, 0x0d99, + // Entry 17F00 - 17F3F + 0x0dda, 0x0e22, 0x0e5f, 0x0e98, 0x0eda, 0x0f28, 0x0f94, 0x0fdc, + 0x1027, 0x1087, 0x110b, 0x1171, 0x11d7, 0x1228, 0x126d, 0xffff, + 0xffff, 0x12dd, 0xffff, 0x1342, 0xffff, 0x13b0, 0x13f5, 0x1437, + 0x1476, 0xffff, 0xffff, 0x14f6, 0x1541, 0x15a4, 0xffff, 0xffff, + 0xffff, 0x161c, 0xffff, 0x1686, 0x16e3, 0xffff, 0x1766, 0x17c9, + 0x182c, 0xffff, 0xffff, 0xffff, 0xffff, 0x18ca, 0xffff, 0xffff, + 0x193e, 0x19aa, 0xffff, 0xffff, 0x1a32, 0x1a92, 0x1ae0, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1bb6, 0x1bf2, 0x1c3a, + // Entry 17F40 - 17F7F + 0x1c7c, 0x1cbb, 0xffff, 0xffff, 0x1d68, 0xffff, 0x1db6, 0xffff, + 0xffff, 0x1e31, 0xffff, 0x1e96, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1f2b, 0xffff, 0x1f88, 0x2003, 0x2069, 0x20ba, 0xffff, 0xffff, + 0xffff, 0x212b, 0x2185, 0x21d6, 0xffff, 0xffff, 0x224e, 0x22ba, + 0x230e, 0x234d, 0xffff, 0xffff, 0x23bf, 0x240a, 0x2449, 0xffff, + 0x24af, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x257c, 0x25c7, + 0x25fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x26ca, 0xffff, 0xffff, 0x272f, 0xffff, 0x277f, 0xffff, 0x27e5, + // Entry 17F80 - 17FBF + 0x282d, 0x287e, 0xffff, 0x28d8, 0x292c, 0xffff, 0xffff, 0xffff, + 0x29b7, 0x29ff, 0x0094, 0x0023, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0c6a, 0x0cb9, 0x0cfb, 0x0d41, 0x0d83, 0x0dc2, 0x0e08, 0x0e49, + 0x0e85, 0x0ec2, 0x0f0a, 0x0f6c, 0x0fc0, 0x100c, 0x1064, 0x10dc, + 0x114c, 0x11b2, 0x1209, 0x1252, 0x129f, 0xffff, 0xffff, 0x130b, + 0xffff, 0x1374, 0xffff, 0x13dc, 0x141d, 0x145f, 0x14a8, 0xffff, + 0xffff, 0x1524, 0x1577, 0x15ca, 0xffff, 0xffff, 0xffff, 0x1654, + 0xffff, 0x16c0, 0x1721, 0xffff, 0x17a4, 0x1807, 0x1852, 0xffff, + // Entry 17FC0 - 17FFF + 0xffff, 0xffff, 0xffff, 0x18f6, 0xffff, 0xffff, 0x1982, 0x19ee, + 0xffff, 0xffff, 0x1a6e, 0x1ac2, 0x1b06, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1bdc, 0x1c1e, 0x1c64, 0x1ca4, 0x1d06, + 0xffff, 0xffff, 0x1d90, 0xffff, 0x1dea, 0xffff, 0xffff, 0x1e61, + 0xffff, 0x1ec2, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f5b, 0xffff, + 0x1fd8, 0x2045, 0x209b, 0x20e4, 0xffff, 0xffff, 0xffff, 0x2163, + 0x21b9, 0x220c, 0xffff, 0xffff, 0x2292, 0x22ee, 0x2334, 0x237b, + 0xffff, 0xffff, 0x23ed, 0x2430, 0x2479, 0xffff, 0x24ff, 0xffff, + // Entry 18000 - 1803F + 0xffff, 0xffff, 0xffff, 0xffff, 0x25aa, 0x25ee, 0x2626, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x26f4, 0xffff, + 0xffff, 0x2757, 0xffff, 0x27b5, 0xffff, 0x2811, 0x285f, 0x28aa, + 0xffff, 0x290c, 0x295c, 0xffff, 0xffff, 0xffff, 0x29e3, 0x2a37, + 0x0003, 0x0004, 0x01cb, 0x05bf, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, + 0x001e, 0x001b, 0x0021, 0x0001, 0x0024, 0x0000, 0x0001, 0x0013, + // Entry 18040 - 1807F + 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, 0x001e, 0x1a8e, 0x0004, + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0015, 0x0238, 0x0001, + 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, 0x0198, 0x01a9, + 0x01ba, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, + 0x000d, 0x0015, 0xffff, 0x000b, 0x2375, 0x237a, 0x001a, 0x237f, + 0x2383, 0x2388, 0x002d, 0x238d, 0x0037, 0x2392, 0x2397, 0x000d, + 0x0000, 0xffff, 0x1e5d, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, + // Entry 18080 - 180BF + 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x000d, + 0xffff, 0x0089, 0x0090, 0x31f1, 0x31f6, 0x31fd, 0x00a3, 0x00a8, + 0x3201, 0x3208, 0x315b, 0x3212, 0x321b, 0x0003, 0x0079, 0x0088, + 0x0097, 0x000d, 0x000d, 0xffff, 0x0059, 0x3224, 0x3228, 0x322c, + 0x31fd, 0x3230, 0x3234, 0x3238, 0x323c, 0x3240, 0x3244, 0x3248, + 0x000d, 0x0000, 0xffff, 0x1e5d, 0x22e6, 0x22d9, 0x2382, 0x22d9, + 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, + 0x000d, 0xffff, 0x0089, 0x0090, 0x31f1, 0x31f6, 0x31fd, 0x00a3, + // Entry 180C0 - 180FF + 0x00a8, 0x3201, 0x3208, 0x315b, 0x3212, 0x321b, 0x0002, 0x00a9, + 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, + 0x0024, 0x0013, 0x0018, 0x001e, 0x0024, 0x0029, 0x002f, 0x0035, + 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, 0x22d9, 0x19c7, 0x22e6, + 0x228e, 0x0007, 0x0024, 0x003a, 0x003e, 0x0043, 0x0048, 0x004c, + 0x0051, 0x0055, 0x0007, 0x0024, 0x0059, 0x0064, 0x006f, 0x0079, + 0x0083, 0x008d, 0x009b, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, + 0x00eb, 0x0007, 0x0024, 0x00a7, 0x00ab, 0x00b0, 0x00b5, 0x00b9, + // Entry 18100 - 1813F + 0x00be, 0x00c3, 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, 0x22d9, + 0x19c7, 0x22e6, 0x228e, 0x0007, 0x0022, 0x04ad, 0x2fc6, 0x2fca, + 0x2fce, 0x2fd1, 0x2fd5, 0x2fd8, 0x0007, 0x0024, 0x0059, 0x0064, + 0x006f, 0x0079, 0x0083, 0x008d, 0x009b, 0x0002, 0x0100, 0x0119, + 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0024, 0xffff, 0x00c7, + 0x00d2, 0x00dd, 0x00e8, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0024, 0xffff, 0x00f3, 0x0107, 0x011b, + 0x012f, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0024, 0xffff, + // Entry 18140 - 1817F + 0x00c7, 0x00d2, 0x00dd, 0x00e8, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0024, 0xffff, 0x00f3, 0x0107, + 0x011b, 0x012f, 0x0002, 0x0135, 0x0154, 0x0003, 0x0139, 0x0142, + 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0145, 0x0148, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x014e, 0x0151, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0158, 0x0161, 0x016a, + 0x0002, 0x015b, 0x015e, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + // Entry 18180 - 181BF + 0x04f2, 0x0002, 0x0164, 0x0167, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x016d, 0x0170, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0003, 0x0182, 0x018d, 0x0177, 0x0002, + 0x017a, 0x017e, 0x0002, 0x0024, 0x0143, 0x0169, 0x0002, 0x0024, + 0x014e, 0x0175, 0x0002, 0x0185, 0x0189, 0x0002, 0x0015, 0x0194, + 0x01b8, 0x0002, 0x0024, 0x018b, 0x0197, 0x0002, 0x0190, 0x0194, + 0x0002, 0x0015, 0x01e3, 0x01eb, 0x0002, 0x0024, 0x01a1, 0x01a5, + 0x0004, 0x01a6, 0x01a0, 0x019d, 0x01a3, 0x0001, 0x0016, 0x0460, + // Entry 181C0 - 181FF + 0x0001, 0x0013, 0x06b1, 0x0001, 0x0016, 0x0470, 0x0001, 0x0007, + 0x0277, 0x0004, 0x01b7, 0x01b1, 0x01ae, 0x01b4, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x01c8, 0x01c2, 0x01bf, 0x01c5, 0x0001, + 0x0015, 0x0238, 0x0001, 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0040, 0x020c, 0x0000, 0x0000, 0x0211, + 0x0228, 0x023a, 0x024c, 0x0263, 0x0275, 0x0287, 0x029e, 0x02b0, + 0x02c2, 0x02dd, 0x02f3, 0x0000, 0x0000, 0x0000, 0x0309, 0x0322, + // Entry 18200 - 1823F + 0x0334, 0x0000, 0x0000, 0x0000, 0x0346, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x034b, 0x035f, 0x0373, 0x0387, 0x039b, 0x03af, + 0x03c3, 0x03d7, 0x03eb, 0x03ff, 0x0413, 0x0427, 0x043b, 0x044f, + 0x0463, 0x0477, 0x048b, 0x049f, 0x04b3, 0x04c7, 0x04db, 0x0000, + 0x04ef, 0x0000, 0x04f4, 0x050a, 0x0520, 0x0536, 0x054c, 0x0562, + 0x0578, 0x058e, 0x05a4, 0x05ba, 0x0001, 0x020e, 0x0001, 0x0024, + 0x01a8, 0x0003, 0x0215, 0x0218, 0x021d, 0x0001, 0x0024, 0x01b7, + 0x0003, 0x0024, 0x01bb, 0x01c4, 0x01cb, 0x0002, 0x0220, 0x0224, + // Entry 18240 - 1827F + 0x0002, 0x0024, 0x01d6, 0x01d6, 0x0002, 0x0024, 0x01e1, 0x01e1, + 0x0003, 0x022c, 0x0000, 0x022f, 0x0001, 0x0024, 0x01b7, 0x0002, + 0x0232, 0x0236, 0x0002, 0x0024, 0x01d6, 0x01d6, 0x0002, 0x0024, + 0x01e1, 0x01e1, 0x0003, 0x023e, 0x0000, 0x0241, 0x0001, 0x0024, + 0x01b7, 0x0002, 0x0244, 0x0248, 0x0002, 0x0024, 0x01d6, 0x01d6, + 0x0002, 0x0024, 0x01e1, 0x01e1, 0x0003, 0x0250, 0x0253, 0x0258, + 0x0001, 0x0024, 0x01f1, 0x0003, 0x0024, 0x0202, 0x021a, 0x0232, + 0x0002, 0x025b, 0x025f, 0x0002, 0x0024, 0x025e, 0x0248, 0x0002, + // Entry 18280 - 182BF + 0x0024, 0x0291, 0x0276, 0x0003, 0x0267, 0x0000, 0x026a, 0x0001, + 0x0024, 0x02ae, 0x0002, 0x026d, 0x0271, 0x0002, 0x0024, 0x02b6, + 0x02b6, 0x0002, 0x0024, 0x02c5, 0x02c5, 0x0003, 0x0279, 0x0000, + 0x027c, 0x0001, 0x0024, 0x02ae, 0x0002, 0x027f, 0x0283, 0x0002, + 0x0024, 0x02b6, 0x02b6, 0x0002, 0x0024, 0x02c5, 0x02c5, 0x0003, + 0x028b, 0x028e, 0x0293, 0x0001, 0x0024, 0x02d9, 0x0003, 0x0024, + 0x02e3, 0x02f4, 0x0304, 0x0002, 0x0296, 0x029a, 0x0002, 0x0024, + 0x0322, 0x0313, 0x0002, 0x0024, 0x0347, 0x0333, 0x0003, 0x02a2, + // Entry 182C0 - 182FF + 0x0000, 0x02a5, 0x0001, 0x0024, 0x035d, 0x0002, 0x02a8, 0x02ac, + 0x0002, 0x0024, 0x0363, 0x0363, 0x0002, 0x0024, 0x0370, 0x0370, + 0x0003, 0x02b4, 0x0000, 0x02b7, 0x0001, 0x0024, 0x035d, 0x0002, + 0x02ba, 0x02be, 0x0002, 0x0024, 0x0363, 0x0363, 0x0002, 0x0024, + 0x0370, 0x0370, 0x0004, 0x02c7, 0x02ca, 0x02cf, 0x02da, 0x0001, + 0x0024, 0x0382, 0x0003, 0x0024, 0x0387, 0x0395, 0x039f, 0x0002, + 0x02d2, 0x02d6, 0x0002, 0x0024, 0x03b7, 0x03ab, 0x0002, 0x0024, + 0x03d5, 0x03c4, 0x0001, 0x0024, 0x03e7, 0x0004, 0x02e2, 0x0000, + // Entry 18300 - 1833F + 0x02e5, 0x02f0, 0x0001, 0x0024, 0x03f7, 0x0002, 0x02e8, 0x02ec, + 0x0002, 0x0024, 0x03fb, 0x03fb, 0x0002, 0x0024, 0x0406, 0x0406, + 0x0001, 0x0024, 0x03e7, 0x0004, 0x02f8, 0x0000, 0x02fb, 0x0306, + 0x0001, 0x0013, 0x0641, 0x0002, 0x02fe, 0x0302, 0x0002, 0x0024, + 0x0416, 0x0416, 0x0002, 0x0024, 0x0420, 0x0420, 0x0001, 0x0024, + 0x03e7, 0x0003, 0x030d, 0x0310, 0x0317, 0x0001, 0x0024, 0x042f, + 0x0005, 0x0024, 0x0440, 0x0449, 0x0450, 0x0435, 0x045a, 0x0002, + 0x031a, 0x031e, 0x0002, 0x0024, 0x0473, 0x0468, 0x0002, 0x0024, + // Entry 18340 - 1837F + 0x0492, 0x0480, 0x0003, 0x0326, 0x0000, 0x0329, 0x0001, 0x0024, + 0x04a4, 0x0002, 0x032c, 0x0330, 0x0002, 0x0024, 0x04a8, 0x04a8, + 0x0002, 0x0024, 0x04b3, 0x04b3, 0x0003, 0x0338, 0x0000, 0x033b, + 0x0001, 0x0001, 0x0279, 0x0002, 0x033e, 0x0342, 0x0002, 0x0024, + 0x04c3, 0x04c3, 0x0002, 0x0024, 0x04cd, 0x04cd, 0x0001, 0x0348, + 0x0001, 0x0024, 0x04dc, 0x0003, 0x0000, 0x034f, 0x0354, 0x0003, + 0x0024, 0x04ea, 0x04fc, 0x050c, 0x0002, 0x0357, 0x035b, 0x0002, + 0x0024, 0x0536, 0x0526, 0x0002, 0x0024, 0x055e, 0x0548, 0x0003, + // Entry 18380 - 183BF + 0x0000, 0x0363, 0x0368, 0x0003, 0x0024, 0x0576, 0x0584, 0x0590, + 0x0002, 0x036b, 0x036f, 0x0002, 0x0024, 0x05a4, 0x05a4, 0x0002, + 0x0024, 0x05b0, 0x05b0, 0x0003, 0x0000, 0x0377, 0x037c, 0x0003, + 0x0024, 0x05c2, 0x05cf, 0x05da, 0x0002, 0x037f, 0x0383, 0x0002, + 0x0024, 0x05ed, 0x05ed, 0x0002, 0x0024, 0x05f8, 0x05f8, 0x0003, + 0x0000, 0x038b, 0x0390, 0x0003, 0x0024, 0x0609, 0x061b, 0x062b, + 0x0002, 0x0393, 0x0397, 0x0002, 0x0024, 0x0655, 0x0645, 0x0002, + 0x0024, 0x067d, 0x0667, 0x0003, 0x0000, 0x039f, 0x03a4, 0x0003, + // Entry 183C0 - 183FF + 0x0024, 0x0695, 0x06a4, 0x06b1, 0x0002, 0x03a7, 0x03ab, 0x0002, + 0x0024, 0x06c6, 0x06c6, 0x0002, 0x0024, 0x06d3, 0x06d3, 0x0003, + 0x0000, 0x03b3, 0x03b8, 0x0003, 0x0024, 0x06e6, 0x06f4, 0x0700, + 0x0002, 0x03bb, 0x03bf, 0x0002, 0x0024, 0x0714, 0x0714, 0x0002, + 0x0024, 0x0720, 0x0720, 0x0003, 0x0000, 0x03c7, 0x03cc, 0x0003, + 0x0024, 0x0732, 0x0743, 0x0752, 0x0002, 0x03cf, 0x03d3, 0x0002, + 0x0024, 0x077a, 0x076b, 0x0002, 0x0024, 0x07a0, 0x078b, 0x0003, + 0x0000, 0x03db, 0x03e0, 0x0003, 0x0024, 0x07b7, 0x07c6, 0x07d3, + // Entry 18400 - 1843F + 0x0002, 0x03e3, 0x03e7, 0x0002, 0x0024, 0x07e8, 0x07e8, 0x0002, + 0x0024, 0x07f5, 0x07f5, 0x0003, 0x0000, 0x03ef, 0x03f4, 0x0003, + 0x0024, 0x0808, 0x0816, 0x0822, 0x0002, 0x03f7, 0x03fb, 0x0002, + 0x0024, 0x0836, 0x0836, 0x0002, 0x0024, 0x0842, 0x0842, 0x0003, + 0x0000, 0x0403, 0x0408, 0x0003, 0x0024, 0x0854, 0x0865, 0x0874, + 0x0002, 0x040b, 0x040f, 0x0002, 0x0024, 0x089c, 0x088d, 0x0002, + 0x0024, 0x08c2, 0x08ad, 0x0003, 0x0000, 0x0417, 0x041c, 0x0003, + 0x0024, 0x08d9, 0x08e7, 0x08f3, 0x0002, 0x041f, 0x0423, 0x0002, + // Entry 18440 - 1847F + 0x0024, 0x0907, 0x0907, 0x0002, 0x0024, 0x0913, 0x0913, 0x0003, + 0x0000, 0x042b, 0x0430, 0x0003, 0x0024, 0x0925, 0x0932, 0x093d, + 0x0002, 0x0433, 0x0437, 0x0002, 0x0024, 0x0950, 0x0950, 0x0002, + 0x0024, 0x095b, 0x095b, 0x0003, 0x0000, 0x043f, 0x0444, 0x0003, + 0x0024, 0x096c, 0x097d, 0x098c, 0x0002, 0x0447, 0x044b, 0x0002, + 0x0024, 0x09b4, 0x09a5, 0x0002, 0x0024, 0x09da, 0x09c5, 0x0003, + 0x0000, 0x0453, 0x0458, 0x0003, 0x0024, 0x09f1, 0x0a00, 0x0a0d, + 0x0002, 0x045b, 0x045f, 0x0002, 0x0024, 0x0a22, 0x0a22, 0x0002, + // Entry 18480 - 184BF + 0x0024, 0x0a2f, 0x0a2f, 0x0003, 0x0000, 0x0467, 0x046c, 0x0003, + 0x0024, 0x0a42, 0x0a50, 0x0a5c, 0x0002, 0x046f, 0x0473, 0x0002, + 0x0024, 0x0a70, 0x0a70, 0x0002, 0x0024, 0x0a7c, 0x0a7c, 0x0003, + 0x0000, 0x047b, 0x0480, 0x0003, 0x0024, 0x0a8e, 0x0aa3, 0x0ab6, + 0x0002, 0x0483, 0x0487, 0x0002, 0x0024, 0x0ae6, 0x0ad3, 0x0002, + 0x0024, 0x0b14, 0x0afb, 0x0003, 0x0000, 0x048f, 0x0494, 0x0003, + 0x0024, 0x0b2f, 0x0b3e, 0x0b4b, 0x0002, 0x0497, 0x049b, 0x0002, + 0x0024, 0x0b60, 0x0b60, 0x0002, 0x0024, 0x0b6d, 0x0b6d, 0x0003, + // Entry 184C0 - 184FF + 0x0000, 0x04a3, 0x04a8, 0x0003, 0x0024, 0x0b80, 0x0b8d, 0x0b98, + 0x0002, 0x04ab, 0x04af, 0x0002, 0x0024, 0x0bab, 0x0bab, 0x0002, + 0x0024, 0x0bb6, 0x0bb6, 0x0003, 0x0000, 0x04b7, 0x04bc, 0x0003, + 0x0024, 0x0bc7, 0x0bda, 0x0beb, 0x0002, 0x04bf, 0x04c3, 0x0002, + 0x0024, 0x0c17, 0x0c06, 0x0002, 0x0024, 0x0c41, 0x0c2a, 0x0003, + 0x0000, 0x04cb, 0x04d0, 0x0003, 0x0024, 0x0c5a, 0x0c68, 0x0c74, + 0x0002, 0x04d3, 0x04d7, 0x0002, 0x0024, 0x0c88, 0x0c88, 0x0002, + 0x0024, 0x0c94, 0x0c94, 0x0003, 0x0000, 0x04df, 0x04e4, 0x0003, + // Entry 18500 - 1853F + 0x0024, 0x0ca6, 0x0cb3, 0x0cbe, 0x0002, 0x04e7, 0x04eb, 0x0002, + 0x0024, 0x0cd1, 0x0cd1, 0x0002, 0x0024, 0x0cdc, 0x0cdc, 0x0001, + 0x04f1, 0x0001, 0x0007, 0x07cc, 0x0003, 0x04f8, 0x04fb, 0x04ff, + 0x0001, 0x0024, 0x0ced, 0x0002, 0x0024, 0xffff, 0x0cf3, 0x0002, + 0x0502, 0x0506, 0x0002, 0x0024, 0x0d0e, 0x0d01, 0x0002, 0x0024, + 0x0d2e, 0x0d1c, 0x0003, 0x050e, 0x0511, 0x0515, 0x0001, 0x0015, + 0x0a42, 0x0002, 0x0024, 0xffff, 0x0cf3, 0x0002, 0x0518, 0x051c, + 0x0002, 0x0024, 0x0d41, 0x0d41, 0x0002, 0x0024, 0x0d4b, 0x0d4b, + // Entry 18540 - 1857F + 0x0003, 0x0524, 0x0527, 0x052b, 0x0001, 0x0015, 0x0a42, 0x0002, + 0x0024, 0xffff, 0x0cf3, 0x0002, 0x052e, 0x0532, 0x0002, 0x0024, + 0x0d41, 0x0d41, 0x0002, 0x0024, 0x0d4b, 0x0d4b, 0x0003, 0x053a, + 0x053d, 0x0541, 0x0001, 0x0024, 0x0d5a, 0x0002, 0x0024, 0xffff, + 0x0d63, 0x0002, 0x0544, 0x0548, 0x0002, 0x0024, 0x0d81, 0x0d73, + 0x0002, 0x0024, 0x0da4, 0x0d91, 0x0003, 0x0550, 0x0553, 0x0557, + 0x0001, 0x0001, 0x075a, 0x0002, 0x0024, 0xffff, 0x0d63, 0x0002, + 0x055a, 0x055e, 0x0002, 0x0024, 0x0db9, 0x0db9, 0x0002, 0x0024, + // Entry 18580 - 185BF + 0x0dc5, 0x0dc5, 0x0003, 0x0566, 0x0569, 0x056d, 0x0001, 0x0001, + 0x077c, 0x0002, 0x0024, 0xffff, 0x0d63, 0x0002, 0x0570, 0x0574, + 0x0002, 0x0024, 0x0dd6, 0x0dd6, 0x0002, 0x0024, 0x0de0, 0x0de0, + 0x0003, 0x057c, 0x057f, 0x0583, 0x0001, 0x0015, 0x0ad8, 0x0002, + 0x0024, 0xffff, 0x0def, 0x0002, 0x0586, 0x058a, 0x0002, 0x0024, + 0x0df3, 0x0df3, 0x0002, 0x0024, 0x0e01, 0x0e01, 0x0003, 0x0592, + 0x0595, 0x0599, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0024, 0xffff, + 0x0def, 0x0002, 0x059c, 0x05a0, 0x0002, 0x0024, 0x0e14, 0x0e14, + // Entry 185C0 - 185FF + 0x0002, 0x0024, 0x0e20, 0x0e20, 0x0003, 0x05a8, 0x05ab, 0x05af, + 0x0001, 0x0001, 0x07f5, 0x0002, 0x0024, 0xffff, 0x0def, 0x0002, + 0x05b2, 0x05b6, 0x0002, 0x0024, 0x0e31, 0x0e31, 0x0002, 0x0024, + 0x0e3b, 0x0e3b, 0x0001, 0x05bc, 0x0001, 0x0024, 0x0e4a, 0x0004, + 0x05c4, 0x05c9, 0x05ce, 0x05d9, 0x0003, 0x0000, 0x1dc7, 0x238b, + 0x23b7, 0x0003, 0x0024, 0x0e56, 0x0e60, 0x0e70, 0x0002, 0x0000, + 0x05d1, 0x0002, 0x0000, 0x05d4, 0x0003, 0x0024, 0xffff, 0x0e81, + 0x0e9d, 0x0002, 0x0000, 0x05dc, 0x0003, 0x0676, 0x070c, 0x05e0, + // Entry 18600 - 1863F + 0x0094, 0x0024, 0x0eb0, 0x0ec1, 0x0ed2, 0x0ee5, 0x0f12, 0x0f52, + 0x0f87, 0x0fbe, 0x0ff5, 0x102d, 0x1066, 0xffff, 0x109a, 0x10cb, + 0x1104, 0x1148, 0x1191, 0x11c9, 0x1209, 0x125b, 0x12b5, 0x1307, + 0x1353, 0x1392, 0x13d0, 0x13ff, 0x140b, 0x1428, 0x1453, 0x1484, + 0x14c3, 0x14e7, 0x151b, 0x1549, 0x157d, 0x15ac, 0x15bd, 0x15df, + 0x161d, 0x165b, 0x167e, 0x168a, 0x16a3, 0x16c8, 0x16fb, 0x171a, + 0x175c, 0x178f, 0x17bc, 0x1806, 0x184c, 0x186f, 0x1884, 0x18b1, + 0x18c1, 0x18dd, 0x1906, 0x191b, 0x1949, 0x19a1, 0x19e0, 0x19f2, + // Entry 18640 - 1867F + 0x1a15, 0x1a5e, 0x1a96, 0x1ab9, 0x1ac5, 0x1ad4, 0x1ae3, 0x1af8, + 0x1b0f, 0x1b31, 0x1b62, 0x1b99, 0x1bce, 0xffff, 0x1bf3, 0x1c0a, + 0x1c2d, 0x1c52, 0x1c71, 0x1ca2, 0x1cb1, 0x1cd3, 0x1d00, 0x1d24, + 0x1d4d, 0x1d5c, 0x1d70, 0x1d80, 0x1da6, 0x1dd3, 0x1df7, 0x1e48, + 0x1e92, 0x1ece, 0x1ef5, 0x1f0b, 0x1f17, 0x1f37, 0x1f7d, 0x1fbf, + 0x1ff2, 0x1ffd, 0x202b, 0x207e, 0x20ba, 0x20ec, 0x2117, 0x2123, + 0x2148, 0x217e, 0x21b5, 0x21ea, 0x221b, 0x2260, 0x2276, 0x2283, + 0x2293, 0x22a2, 0x22bf, 0xffff, 0x22f6, 0x231b, 0x2331, 0x2340, + // Entry 18680 - 186BF + 0x2355, 0x2370, 0x237e, 0x238a, 0x23a4, 0x23cb, 0x23de, 0x23f8, + 0x241d, 0x243c, 0x246f, 0x248a, 0x24c4, 0x2501, 0x252a, 0x254c, + 0x258d, 0x25ba, 0x25c7, 0x25d7, 0x2604, 0x2641, 0x0094, 0x0024, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0eff, 0x0f45, 0x0f79, 0x0fb0, + 0x0fe7, 0x101e, 0x1058, 0xffff, 0x108f, 0x10bd, 0x10f4, 0x1131, + 0x1183, 0x11ba, 0x11f4, 0x1240, 0x129e, 0x12f0, 0x1342, 0x1382, + 0x13bf, 0xffff, 0xffff, 0x1419, 0xffff, 0x146b, 0xffff, 0x14d9, + 0x1510, 0x153e, 0x156c, 0xffff, 0xffff, 0x15d0, 0x160a, 0x1650, + // Entry 186C0 - 186FF + 0xffff, 0xffff, 0xffff, 0x16b5, 0xffff, 0x1709, 0x1749, 0xffff, + 0x17a9, 0x17ef, 0x1841, 0xffff, 0xffff, 0xffff, 0xffff, 0x18cf, + 0xffff, 0xffff, 0x1930, 0x1988, 0xffff, 0xffff, 0x19ff, 0x1a4e, + 0x1a8b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b26, + 0x1b54, 0x1b8b, 0x1bc2, 0xffff, 0xffff, 0xffff, 0x1c21, 0xffff, + 0x1c5f, 0xffff, 0xffff, 0x1cc3, 0xffff, 0x1d16, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1d96, 0xffff, 0x1de0, 0x1e32, 0x1e81, 0x1ec1, + 0xffff, 0xffff, 0xffff, 0x1f23, 0x1f6c, 0x1fac, 0xffff, 0xffff, + // Entry 18700 - 1873F + 0x2011, 0x206c, 0x20af, 0x20dd, 0xffff, 0xffff, 0x2139, 0x2173, + 0x21a1, 0xffff, 0x21ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x22b0, 0xffff, 0x22ea, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2397, 0xffff, 0xffff, 0x23ec, 0xffff, 0x2429, + 0xffff, 0x247c, 0x24b3, 0x24f3, 0xffff, 0x253a, 0x257d, 0xffff, + 0xffff, 0xffff, 0x25f6, 0x262d, 0x0094, 0x0024, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0f2c, 0x0f66, 0x0f9c, 0x0fd3, 0x100a, 0x1043, + 0x107b, 0xffff, 0x10ac, 0x10e0, 0x111b, 0x1166, 0x11a6, 0x11df, + // Entry 18740 - 1877F + 0x1225, 0x127d, 0x12d3, 0x1325, 0x136b, 0x13a9, 0x13e8, 0xffff, + 0xffff, 0x143e, 0xffff, 0x14a4, 0xffff, 0x14fc, 0x152d, 0x155b, + 0x1595, 0xffff, 0xffff, 0x15f5, 0x1637, 0x166d, 0xffff, 0xffff, + 0xffff, 0x16e2, 0xffff, 0x1732, 0x1776, 0xffff, 0x17d6, 0x1824, + 0x185e, 0xffff, 0xffff, 0xffff, 0xffff, 0x18f2, 0xffff, 0xffff, + 0x1969, 0x19c1, 0xffff, 0xffff, 0x1a32, 0x1a75, 0x1aa8, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b43, 0x1b77, 0x1bae, + 0x1be1, 0xffff, 0xffff, 0xffff, 0x1c40, 0xffff, 0x1c8a, 0xffff, + // Entry 18780 - 187BF + 0xffff, 0x1cea, 0xffff, 0x1d39, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1dbd, 0xffff, 0x1e15, 0x1e65, 0x1eaa, 0x1ee2, 0xffff, 0xffff, + 0xffff, 0x1f52, 0x1f95, 0x1fd9, 0xffff, 0xffff, 0x204c, 0x2097, + 0x20cc, 0x2102, 0xffff, 0xffff, 0x215e, 0x2190, 0x21d0, 0xffff, + 0x223e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22d5, 0xffff, + 0x2309, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x23b8, 0xffff, 0xffff, 0x240b, 0xffff, 0x2456, 0xffff, 0x249f, + 0x24dc, 0x2516, 0xffff, 0x2565, 0x25a4, 0xffff, 0xffff, 0xffff, + // Entry 187C0 - 187FF + 0x2619, 0x265c, 0x0003, 0x0004, 0x09e8, 0x0dde, 0x0012, 0x0017, + 0x0044, 0x0135, 0x01b6, 0x02a7, 0x0000, 0x02f7, 0x0322, 0x0545, + 0x05d6, 0x0648, 0x0000, 0x0000, 0x0000, 0x0000, 0x06ce, 0x09cd, + 0x09da, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0033, + 0x0000, 0x9006, 0x0003, 0x0029, 0x002e, 0x0024, 0x0001, 0x0026, + 0x0001, 0x0025, 0x0000, 0x0001, 0x002b, 0x0001, 0x0025, 0x0010, + 0x0001, 0x0030, 0x0001, 0x0025, 0x0018, 0x0004, 0x0041, 0x003b, + 0x0038, 0x003e, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, + // Entry 18800 - 1883F + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x000a, 0x004f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0124, 0x0000, 0x0000, 0x0000, + 0x00b4, 0x0002, 0x0052, 0x0083, 0x0003, 0x0056, 0x0065, 0x0074, + 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, 0x0029, 0x002f, 0x0035, + 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, 0x005a, 0x0061, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0025, + 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, 0x008c, 0x0094, 0x009d, + // Entry 18840 - 1887F + 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x0003, 0x0087, 0x0096, + 0x00a5, 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, 0x0029, 0x002f, + 0x0035, 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, 0x005a, 0x0061, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x0025, 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, 0x008c, 0x0094, + 0x009d, 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x0006, 0x00bb, + 0x0000, 0x0000, 0x0000, 0x00ce, 0x0111, 0x0001, 0x00bd, 0x0001, + // Entry 18880 - 188BF + 0x00bf, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, + 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, + 0x0001, 0x00d0, 0x0001, 0x00d2, 0x003d, 0x0000, 0xffff, 0x01bd, + 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, + 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, + 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, + 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, + 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, + // Entry 188C0 - 188FF + 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, + 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, + 0x0381, 0x0389, 0x0390, 0x0001, 0x0113, 0x0001, 0x0115, 0x000d, + 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, + 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0004, 0x0132, + 0x012c, 0x0129, 0x012f, 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, + 0x0026, 0x0001, 0x0010, 0x002f, 0x0001, 0x0002, 0x01fb, 0x0005, + 0x013b, 0x0000, 0x0000, 0x0000, 0x01a6, 0x0002, 0x013e, 0x0172, + // Entry 18900 - 1893F + 0x0003, 0x0142, 0x0152, 0x0162, 0x000e, 0x0025, 0xffff, 0x00e8, + 0x00ed, 0x00f3, 0x00f9, 0x00fe, 0x0104, 0x010a, 0x0111, 0x0118, + 0x011e, 0x0126, 0x012c, 0x0131, 0x000e, 0x0000, 0xffff, 0x04dd, + 0x23d9, 0x19c7, 0x2157, 0x04dd, 0x2382, 0x23d9, 0x23d9, 0x23d9, + 0x23d9, 0x2382, 0x22d9, 0x22ee, 0x000e, 0x0025, 0xffff, 0x00e8, + 0x0137, 0x013e, 0x0146, 0x014c, 0x0153, 0x015b, 0x0165, 0x016f, + 0x0177, 0x0182, 0x0188, 0x018e, 0x0003, 0x0176, 0x0186, 0x0196, + 0x000e, 0x0025, 0xffff, 0x00e8, 0x00ed, 0x00f3, 0x00f9, 0x00fe, + // Entry 18940 - 1897F + 0x0104, 0x010a, 0x0111, 0x0118, 0x011e, 0x0126, 0x012c, 0x0131, + 0x000e, 0x0000, 0xffff, 0x04dd, 0x23d9, 0x19c7, 0x2157, 0x04dd, + 0x2382, 0x23d9, 0x23d9, 0x23d9, 0x23d9, 0x2382, 0x22d9, 0x22ee, + 0x000e, 0x0025, 0xffff, 0x00e8, 0x0137, 0x013e, 0x0146, 0x014c, + 0x0153, 0x015b, 0x0165, 0x016f, 0x0177, 0x0182, 0x0188, 0x018e, + 0x0003, 0x01b0, 0x0000, 0x01aa, 0x0001, 0x01ac, 0x0002, 0x0025, + 0x0196, 0x01a8, 0x0001, 0x01b2, 0x0002, 0x0025, 0x01bb, 0x01c2, + 0x000a, 0x01c1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0296, 0x0000, + // Entry 18980 - 189BF + 0x0000, 0x0000, 0x0226, 0x0002, 0x01c4, 0x01f5, 0x0003, 0x01c8, + 0x01d7, 0x01e6, 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, 0x0029, + 0x002f, 0x0035, 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, 0x005a, + 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x000d, 0x0025, 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, 0x008c, + 0x0094, 0x009d, 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x0003, + 0x01f9, 0x0208, 0x0217, 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, + // Entry 189C0 - 189FF + 0x0029, 0x002f, 0x0035, 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, + 0x005a, 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0025, 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, + 0x008c, 0x0094, 0x009d, 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, + 0x0006, 0x022d, 0x0000, 0x0000, 0x0000, 0x0240, 0x0283, 0x0001, + 0x022f, 0x0001, 0x0231, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, + 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, + // Entry 18A00 - 18A3F + 0x2226, 0x0085, 0x0001, 0x0242, 0x0001, 0x0244, 0x003d, 0x0000, + 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, + 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, + 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, + 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, + 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, + 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, + 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, + // Entry 18A40 - 18A7F + 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, 0x0285, 0x0001, + 0x0287, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, + 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, + 0x0004, 0x02a4, 0x029e, 0x029b, 0x02a1, 0x0001, 0x0025, 0x00da, + 0x0001, 0x0010, 0x0026, 0x0001, 0x0010, 0x002f, 0x0001, 0x0002, + 0x01fb, 0x0005, 0x02ad, 0x0000, 0x0000, 0x0000, 0x02e7, 0x0002, + 0x02b0, 0x02d4, 0x0003, 0x02b4, 0x0000, 0x02c4, 0x000e, 0x0025, + 0xffff, 0x01c9, 0x01cf, 0x01d4, 0x01d9, 0x01de, 0x01e2, 0x01e8, + // Entry 18A80 - 18ABF + 0x01ee, 0x01f3, 0x01f8, 0x01fe, 0x0203, 0x0209, 0x000e, 0x0025, + 0xffff, 0x020e, 0x021a, 0x0221, 0x0227, 0x01de, 0x022f, 0x0238, + 0x0241, 0x0249, 0x0251, 0x0258, 0x025f, 0x0268, 0x0002, 0x0000, + 0x02d7, 0x000e, 0x0000, 0xffff, 0x22d9, 0x04dd, 0x19c7, 0x04dd, + 0x04dd, 0x23db, 0x22d9, 0x22d9, 0x2281, 0x22dd, 0x19c7, 0x22ee, + 0x21e5, 0x0003, 0x02f1, 0x0000, 0x02eb, 0x0001, 0x02ed, 0x0002, + 0x0025, 0x0271, 0x0287, 0x0001, 0x02f3, 0x0002, 0x0025, 0x029e, + 0x02a7, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, + // Entry 18AC0 - 18AFF + 0x0000, 0x0311, 0x0004, 0x030e, 0x0308, 0x0305, 0x030b, 0x0001, + 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0004, 0x031f, 0x0319, 0x0316, 0x031c, + 0x0001, 0x0025, 0x02b0, 0x0001, 0x0025, 0x02b0, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x032b, 0x0390, 0x03e7, + 0x041c, 0x04ed, 0x0512, 0x0523, 0x0534, 0x0002, 0x032e, 0x035f, + 0x0003, 0x0332, 0x0341, 0x0350, 0x000d, 0x0025, 0xffff, 0x02bd, + 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, 0x02dd, 0x02e3, 0x02e9, + // Entry 18B00 - 18B3F + 0x02ef, 0x02f4, 0x02f9, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x22e6, + 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, + 0x22ee, 0x22f0, 0x000d, 0x0025, 0xffff, 0x02ff, 0x0307, 0x02ca, + 0x0310, 0x02d4, 0x02d8, 0x0316, 0x02e3, 0x031e, 0x0328, 0x0330, + 0x0339, 0x0003, 0x0363, 0x0372, 0x0381, 0x000d, 0x0025, 0xffff, + 0x02bd, 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, 0x02dd, 0x02e3, + 0x02e9, 0x02ef, 0x02f4, 0x02f9, 0x000d, 0x0000, 0xffff, 0x1e5d, + 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, + // Entry 18B40 - 18B7F + 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0025, 0xffff, 0x02ff, 0x0307, + 0x02ca, 0x0310, 0x02d4, 0x02d8, 0x0316, 0x02e3, 0x031e, 0x0328, + 0x0330, 0x0339, 0x0002, 0x0393, 0x03bd, 0x0005, 0x0399, 0x03a2, + 0x03b4, 0x0000, 0x03ab, 0x0007, 0x0025, 0x0343, 0x0348, 0x034d, + 0x0352, 0x0357, 0x035c, 0x0361, 0x0007, 0x0000, 0x22f0, 0x228e, + 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0007, 0x0018, 0x0000, + 0x4a33, 0x4a36, 0x4a26, 0x4a39, 0x4a2d, 0x4a3c, 0x0007, 0x0025, + 0x0366, 0x036f, 0x0375, 0x037b, 0x0384, 0x038a, 0x0393, 0x0005, + // Entry 18B80 - 18BBF + 0x03c3, 0x03cc, 0x03de, 0x0000, 0x03d5, 0x0007, 0x0025, 0x0343, + 0x0348, 0x034d, 0x0352, 0x0357, 0x035c, 0x0361, 0x0007, 0x0000, + 0x22f0, 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0007, + 0x0018, 0x0000, 0x4a33, 0x4a36, 0x4a26, 0x4a39, 0x4a2d, 0x4a3c, + 0x0007, 0x0025, 0x0366, 0x036f, 0x0375, 0x037b, 0x0384, 0x038a, + 0x0393, 0x0002, 0x03ea, 0x0403, 0x0003, 0x03ee, 0x03f5, 0x03fc, + 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0005, + // Entry 18BC0 - 18BFF + 0xffff, 0x12b0, 0x2163, 0x2170, 0x217d, 0x0003, 0x0407, 0x040e, + 0x0415, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0005, 0xffff, 0x12b0, 0x2163, 0x2170, 0x217d, 0x0002, 0x041f, + 0x0486, 0x0003, 0x0423, 0x0444, 0x0465, 0x0008, 0x042f, 0x0435, + 0x042c, 0x0438, 0x043b, 0x043e, 0x0441, 0x0432, 0x0001, 0x0025, + 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, + // Entry 18C00 - 18C3F + 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x0450, + 0x0456, 0x044d, 0x0459, 0x045c, 0x045f, 0x0462, 0x0453, 0x0001, + 0x0025, 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, + 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, + 0x0471, 0x0477, 0x046e, 0x047a, 0x047d, 0x0480, 0x0483, 0x0474, + 0x0001, 0x0025, 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, + 0x03a1, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0025, 0x03b6, 0x0001, + // Entry 18C40 - 18C7F + 0x0025, 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, 0x03da, + 0x0003, 0x048a, 0x04ab, 0x04cc, 0x0008, 0x0496, 0x049c, 0x0493, + 0x049f, 0x04a2, 0x04a5, 0x04a8, 0x0499, 0x0001, 0x0025, 0x039a, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, 0x0001, + 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x04b7, 0x04bd, + 0x04b4, 0x04c0, 0x04c3, 0x04c6, 0x04c9, 0x04ba, 0x0001, 0x0025, + 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, 0x0001, + // Entry 18C80 - 18CBF + 0x0000, 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, + 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x04d8, + 0x04de, 0x04d5, 0x04e1, 0x04e4, 0x04e7, 0x04ea, 0x04db, 0x0001, + 0x0025, 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0025, 0x03e2, 0x0001, 0x0025, + 0x03e8, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0003, + 0x04fc, 0x0507, 0x04f1, 0x0002, 0x04f4, 0x04f8, 0x0002, 0x0025, + 0x03f4, 0x041f, 0x0002, 0x0025, 0x0408, 0x0434, 0x0002, 0x04ff, + // Entry 18CC0 - 18CFF + 0x0503, 0x0002, 0x0025, 0x0448, 0x0452, 0x0002, 0x0010, 0x02ea, + 0x02f1, 0x0002, 0x050a, 0x050e, 0x0002, 0x0025, 0x0448, 0x0452, + 0x0002, 0x0010, 0x02ea, 0x02f1, 0x0004, 0x0520, 0x051a, 0x0517, + 0x051d, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0531, 0x052b, + 0x0528, 0x052e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0542, + 0x053c, 0x0539, 0x053f, 0x0001, 0x0025, 0x02b0, 0x0001, 0x0025, + // Entry 18D00 - 18D3F + 0x02b0, 0x0001, 0x0025, 0x02b0, 0x0001, 0x0000, 0x03c6, 0x0006, + 0x054c, 0x0000, 0x0000, 0x0000, 0x05b7, 0x05c5, 0x0002, 0x054f, + 0x0583, 0x0003, 0x0553, 0x0563, 0x0573, 0x000e, 0x0025, 0x0482, + 0x045c, 0x0461, 0x0466, 0x046b, 0x0471, 0x0478, 0x047d, 0x0488, + 0x048d, 0x0492, 0x0497, 0x049c, 0x049f, 0x000e, 0x0000, 0x2382, + 0x04dd, 0x19c7, 0x2157, 0x04dd, 0x22dd, 0x2382, 0x2382, 0x22ee, + 0x2055, 0x22dd, 0x04dd, 0x2382, 0x214e, 0x000e, 0x0025, 0x04d7, + 0x04a4, 0x04ac, 0x04b3, 0x04ba, 0x04c2, 0x04cb, 0x04d2, 0x04df, + // Entry 18D40 - 18D7F + 0x04e6, 0x04eb, 0x04f1, 0x04f8, 0x04fb, 0x0003, 0x0587, 0x0597, + 0x05a7, 0x000e, 0x0025, 0x0482, 0x045c, 0x0461, 0x0466, 0x046b, + 0x0471, 0x0478, 0x047d, 0x0488, 0x048d, 0x0492, 0x0497, 0x049c, + 0x049f, 0x000e, 0x0000, 0x2382, 0x04dd, 0x19c7, 0x2157, 0x04dd, + 0x22dd, 0x2382, 0x2382, 0x22ee, 0x2055, 0x22dd, 0x04dd, 0x2382, + 0x214e, 0x000e, 0x0025, 0x04d7, 0x04a4, 0x04ac, 0x04b3, 0x04ba, + 0x04c2, 0x04cb, 0x04d2, 0x04df, 0x04e6, 0x04eb, 0x04f1, 0x04f8, + 0x04fb, 0x0003, 0x05c0, 0x0000, 0x05bb, 0x0001, 0x05bd, 0x0001, + // Entry 18D80 - 18DBF + 0x0025, 0x0502, 0x0001, 0x05c2, 0x0001, 0x0000, 0x04ef, 0x0004, + 0x05d3, 0x05cd, 0x05ca, 0x05d0, 0x0001, 0x0001, 0x1f7d, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, + 0x0005, 0x05dc, 0x0000, 0x0000, 0x0000, 0x0641, 0x0002, 0x05df, + 0x0610, 0x0003, 0x05e3, 0x05f2, 0x0601, 0x000d, 0x0025, 0xffff, + 0x050d, 0x0513, 0x0518, 0x051e, 0x0525, 0x052c, 0x0532, 0x0539, + 0x053f, 0x0545, 0x054a, 0x0550, 0x000d, 0x0014, 0xffff, 0x146a, + 0x37e2, 0x37e4, 0x37e6, 0x37e9, 0x37eb, 0x37e6, 0x37ed, 0x37ef, + // Entry 18DC0 - 18DFF + 0x37f1, 0x37ef, 0x37f1, 0x000d, 0x0025, 0xffff, 0x0557, 0x055f, + 0x0569, 0x0573, 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, 0x05b1, + 0x054a, 0x05b7, 0x0003, 0x0614, 0x0623, 0x0632, 0x000d, 0x0025, + 0xffff, 0x050d, 0x0513, 0x0518, 0x051e, 0x0525, 0x052c, 0x0532, + 0x0539, 0x053f, 0x0545, 0x054a, 0x0550, 0x000d, 0x0014, 0xffff, + 0x146a, 0x37e2, 0x37e4, 0x37e6, 0x37e9, 0x37eb, 0x37e6, 0x37ed, + 0x37ef, 0x37f1, 0x37ef, 0x37f1, 0x000d, 0x0025, 0xffff, 0x0557, + 0x055f, 0x0569, 0x0573, 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, + // Entry 18E00 - 18E3F + 0x05b1, 0x054a, 0x05b7, 0x0001, 0x0643, 0x0001, 0x0645, 0x0001, + 0x0025, 0x05c0, 0x0008, 0x0651, 0x0000, 0x0000, 0x0000, 0x06b6, + 0x06bd, 0x0000, 0x9006, 0x0002, 0x0654, 0x0685, 0x0003, 0x0658, + 0x0667, 0x0676, 0x000d, 0x0025, 0xffff, 0x05c5, 0x05cb, 0x05d0, + 0x05d9, 0x05e2, 0x05ed, 0x05f8, 0x05fd, 0x0603, 0x0608, 0x060e, + 0x0617, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x000d, 0x0025, 0xffff, 0x0620, 0x062a, 0x0630, 0x063e, 0x064e, + // Entry 18E40 - 18E7F + 0x065e, 0x0671, 0x0677, 0x0680, 0x0688, 0x0690, 0x069e, 0x0003, + 0x0689, 0x0698, 0x06a7, 0x000d, 0x0025, 0xffff, 0x05c5, 0x05cb, + 0x05d0, 0x05d9, 0x06ac, 0x06b6, 0x05f8, 0x05fd, 0x0603, 0x0608, + 0x06c0, 0x06ca, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0025, 0xffff, 0x0620, 0x062a, 0x0630, 0x063e, + 0x064e, 0x065e, 0x0671, 0x0677, 0x0680, 0x0688, 0x0690, 0x069e, + 0x0001, 0x06b8, 0x0001, 0x06ba, 0x0001, 0x0000, 0x06c8, 0x0004, + // Entry 18E80 - 18EBF + 0x06cb, 0x06c5, 0x06c2, 0x06c8, 0x0001, 0x0001, 0x1f7d, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x06d7, 0x09ab, 0x0000, + 0x09bc, 0x0003, 0x07cb, 0x08bb, 0x06db, 0x0001, 0x06dd, 0x00ec, + 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, + 0x0750, 0x0762, 0x0775, 0x23dd, 0x23f1, 0x240a, 0x2424, 0x243c, + 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, + 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, + // Entry 18EC0 - 18EFF + 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, + 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, + 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, + 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, + 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, + 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, + 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, + 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, + // Entry 18F00 - 18F3F + 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, + 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, + 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, + 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, + 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, + 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, + 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, + 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x2454, 0x1374, 0x1388, + // Entry 18F40 - 18F7F + 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, + 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, + 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, + 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, + 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, + 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, + 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, + 0x1847, 0x2468, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, + // Entry 18F80 - 18FBF + 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, + 0x1997, 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x07cd, 0x00ec, + 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, + 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, + 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, + 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, + 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, + 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, + // Entry 18FC0 - 18FFF + 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, + 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, + 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, + 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, + 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, + 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, + 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, + 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, + // Entry 19000 - 1903F + 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, + 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, + 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, + 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, + 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, + 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, + 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, + 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, + // Entry 19040 - 1907F + 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, + 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, + 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, + 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, + 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, + 0x1847, 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, + 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, + 0x1997, 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x08bd, 0x00ec, + // Entry 19080 - 190BF + 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, + 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, + 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, + 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, + 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, + 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, + 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, + 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, + // Entry 190C0 - 190FF + 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, + 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, + 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, + 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, + 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, + 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, + 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, + 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, + // Entry 19100 - 1913F + 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, + 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, + 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, + 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, + 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, + 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, + 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, + 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, + // Entry 19140 - 1917F + 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, + 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, + 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, + 0x1847, 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, + 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, + 0x1997, 0x247f, 0x04dd, 0x2481, 0x19c7, 0x0004, 0x09b9, 0x09b3, + 0x09b0, 0x09b6, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x09ca, + // Entry 19180 - 191BF + 0x09c4, 0x09c1, 0x09c7, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x09d3, 0x0001, 0x09d5, 0x0001, + 0x09d7, 0x0001, 0x0000, 0x1a1d, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x09e0, 0x0001, 0x09e2, 0x0001, 0x09e4, 0x0002, 0x0025, + 0x06d4, 0x06de, 0x0040, 0x0a29, 0x0000, 0x0000, 0x0a2e, 0x0a45, + 0x0a57, 0x0a69, 0x0a80, 0x0a97, 0x0aae, 0x0ac5, 0x0ad7, 0x0ae9, + 0x0b04, 0x0b1a, 0x0000, 0x0000, 0x0000, 0x0b30, 0x0b49, 0x0b5b, + // Entry 191C0 - 191FF + 0x0000, 0x0000, 0x0000, 0x0b6d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0b72, 0x0b86, 0x0b9a, 0x0bae, 0x0bc2, 0x0bd6, 0x0bea, + 0x0bfe, 0x0c12, 0x0c26, 0x0c3a, 0x0c4e, 0x0c62, 0x0c76, 0x0c8a, + 0x0c9e, 0x0cb2, 0x0cc6, 0x0cda, 0x0cee, 0x0d02, 0x0000, 0x0d16, + 0x0000, 0x0d1b, 0x0d31, 0x0d47, 0x0d5d, 0x0d73, 0x0d89, 0x0d9f, + 0x0db5, 0x0dc7, 0x0dd9, 0x0001, 0x0a2b, 0x0001, 0x0025, 0x06e2, + 0x0003, 0x0a32, 0x0a35, 0x0a3a, 0x0001, 0x0025, 0x06e7, 0x0003, + 0x0025, 0x06ee, 0x0703, 0x0710, 0x0002, 0x0a3d, 0x0a41, 0x0002, + // Entry 19200 - 1923F + 0x0025, 0x0731, 0x0725, 0x0002, 0x0025, 0x074c, 0x073e, 0x0003, + 0x0a49, 0x0000, 0x0a4c, 0x0001, 0x0025, 0x075b, 0x0002, 0x0a4f, + 0x0a53, 0x0002, 0x0025, 0x075e, 0x075e, 0x0002, 0x0025, 0x0769, + 0x0769, 0x0003, 0x0a5b, 0x0000, 0x0a5e, 0x0001, 0x0000, 0x1f9c, + 0x0002, 0x0a61, 0x0a65, 0x0002, 0x0025, 0x0776, 0x0776, 0x0002, + 0x001e, 0x03c7, 0x03c7, 0x0003, 0x0a6d, 0x0a70, 0x0a75, 0x0001, + 0x0005, 0x1c6d, 0x0003, 0x0025, 0x077d, 0x0792, 0x079f, 0x0002, + 0x0a78, 0x0a7c, 0x0002, 0x0025, 0x07c8, 0x07b5, 0x0002, 0x0025, + // Entry 19240 - 1927F + 0x07f1, 0x07dc, 0x0003, 0x0a84, 0x0a87, 0x0a8c, 0x0001, 0x000b, + 0x0c78, 0x0003, 0x0025, 0x0807, 0x0816, 0x081f, 0x0002, 0x0a8f, + 0x0a93, 0x0002, 0x0025, 0x082f, 0x082f, 0x0002, 0x0025, 0x083e, + 0x083e, 0x0003, 0x0a9b, 0x0a9e, 0x0aa3, 0x0001, 0x000b, 0x0c78, + 0x0003, 0x0025, 0x084f, 0x0859, 0x0861, 0x0002, 0x0aa6, 0x0aaa, + 0x0002, 0x000b, 0x0c9c, 0x0c9c, 0x0002, 0x000b, 0x0ca7, 0x0ca7, + 0x0003, 0x0ab2, 0x0ab5, 0x0aba, 0x0001, 0x0025, 0x086c, 0x0003, + 0x0025, 0x0871, 0x0881, 0x088c, 0x0002, 0x0abd, 0x0ac1, 0x0002, + // Entry 19280 - 192BF + 0x0025, 0x089d, 0x089d, 0x0002, 0x0025, 0x08ab, 0x08ab, 0x0003, + 0x0ac9, 0x0000, 0x0acc, 0x0001, 0x0001, 0x077c, 0x0002, 0x0acf, + 0x0ad3, 0x0002, 0x0025, 0x08bb, 0x08bb, 0x0002, 0x0025, 0x08c7, + 0x08c7, 0x0003, 0x0adb, 0x0000, 0x0ade, 0x0001, 0x0001, 0x077c, + 0x0002, 0x0ae1, 0x0ae5, 0x0002, 0x0025, 0x08d5, 0x08d5, 0x0002, + 0x0025, 0x08dd, 0x08dd, 0x0004, 0x0aee, 0x0af1, 0x0af6, 0x0b01, + 0x0001, 0x0025, 0x08e5, 0x0003, 0x0025, 0x08ed, 0x0902, 0x0910, + 0x0002, 0x0af9, 0x0afd, 0x0002, 0x0025, 0x0936, 0x0925, 0x0002, + // Entry 192C0 - 192FF + 0x0025, 0x095b, 0x0948, 0x0001, 0x0025, 0x096f, 0x0004, 0x0b09, + 0x0000, 0x0b0c, 0x0b17, 0x0001, 0x001c, 0x175b, 0x0002, 0x0b0f, + 0x0b13, 0x0002, 0x0025, 0x0981, 0x0981, 0x0002, 0x0025, 0x098f, + 0x098f, 0x0001, 0x0025, 0x099f, 0x0004, 0x0b1f, 0x0000, 0x0b22, + 0x0b2d, 0x0001, 0x001c, 0x175b, 0x0002, 0x0b25, 0x0b29, 0x0002, + 0x001e, 0x03f1, 0x03f1, 0x0002, 0x001e, 0x03fb, 0x03fb, 0x0001, + 0x0025, 0x099f, 0x0003, 0x0b34, 0x0b37, 0x0b3e, 0x0001, 0x0025, + 0x09ab, 0x0005, 0x0025, 0x09bb, 0x09c0, 0x09ce, 0x09b0, 0x09d5, + // Entry 19300 - 1933F + 0x0002, 0x0b41, 0x0b45, 0x0002, 0x0025, 0x09f1, 0x09e3, 0x0002, + 0x0025, 0x0a10, 0x0a00, 0x0003, 0x0b4d, 0x0000, 0x0b50, 0x0001, + 0x0000, 0x214a, 0x0002, 0x0b53, 0x0b57, 0x0002, 0x0025, 0x0a21, + 0x0a21, 0x0002, 0x0025, 0x0a2d, 0x0a2d, 0x0003, 0x0b5f, 0x0000, + 0x0b62, 0x0001, 0x0000, 0x214a, 0x0002, 0x0b65, 0x0b69, 0x0002, + 0x0025, 0x0a3b, 0x0a3b, 0x0002, 0x0025, 0x0a42, 0x0a42, 0x0001, + 0x0b6f, 0x0001, 0x0025, 0x0a49, 0x0003, 0x0000, 0x0b76, 0x0b7b, + 0x0003, 0x0025, 0x0a5c, 0x0a6d, 0x0a79, 0x0002, 0x0b7e, 0x0b82, + // Entry 19340 - 1937F + 0x0002, 0x0025, 0x0a9d, 0x0a8b, 0x0002, 0x0025, 0x0ac4, 0x0ab0, + 0x0003, 0x0000, 0x0b8a, 0x0b8f, 0x0003, 0x0025, 0x0ad9, 0x0ae6, + 0x0aee, 0x0002, 0x0b92, 0x0b96, 0x0002, 0x0025, 0x0afc, 0x0afc, + 0x0002, 0x0025, 0x0b0a, 0x0b0a, 0x0003, 0x0000, 0x0b9e, 0x0ba3, + 0x0003, 0x0025, 0x0b1a, 0x0b23, 0x0b2a, 0x0002, 0x0ba6, 0x0baa, + 0x0002, 0x0025, 0x0b34, 0x0b34, 0x0002, 0x0025, 0x0b40, 0x0b40, + 0x0003, 0x0000, 0x0bb2, 0x0bb7, 0x0003, 0x0025, 0x0b4e, 0x0b5c, + 0x0b65, 0x0002, 0x0bba, 0x0bbe, 0x0002, 0x0025, 0x0b83, 0x0b74, + // Entry 19380 - 193BF + 0x0002, 0x0025, 0x0ba4, 0x0b93, 0x0003, 0x0000, 0x0bc6, 0x0bcb, + 0x0003, 0x0025, 0x0bb6, 0x0bc3, 0x0bcb, 0x0002, 0x0bce, 0x0bd2, + 0x0002, 0x0025, 0x0bd9, 0x0bd9, 0x0002, 0x0025, 0x0be7, 0x0be7, + 0x0003, 0x0000, 0x0bda, 0x0bdf, 0x0003, 0x0025, 0x0bf7, 0x0c00, + 0x0c07, 0x0002, 0x0be2, 0x0be6, 0x0002, 0x0025, 0x0c11, 0x0c11, + 0x0002, 0x0025, 0x0c1d, 0x0c1d, 0x0003, 0x0000, 0x0bee, 0x0bf3, + 0x0003, 0x0025, 0x0c2b, 0x0c39, 0x0c42, 0x0002, 0x0bf6, 0x0bfa, + 0x0002, 0x0025, 0x0c60, 0x0c51, 0x0002, 0x0025, 0x0c81, 0x0c70, + // Entry 193C0 - 193FF + 0x0003, 0x0000, 0x0c02, 0x0c07, 0x0003, 0x0025, 0x0c93, 0x0ca0, + 0x0ca8, 0x0002, 0x0c0a, 0x0c0e, 0x0002, 0x0025, 0x0cb6, 0x0cb6, + 0x0002, 0x0025, 0x0cc4, 0x0cc4, 0x0003, 0x0000, 0x0c16, 0x0c1b, + 0x0003, 0x0025, 0x0cd4, 0x0cdd, 0x0ce4, 0x0002, 0x0c1e, 0x0c22, + 0x0002, 0x0025, 0x0cee, 0x0cee, 0x0002, 0x0025, 0x0cfa, 0x0cfa, + 0x0003, 0x0000, 0x0c2a, 0x0c2f, 0x0003, 0x0025, 0x0d08, 0x0d19, + 0x0d25, 0x0002, 0x0c32, 0x0c36, 0x0002, 0x0025, 0x0d49, 0x0d37, + 0x0002, 0x0025, 0x0d70, 0x0d5c, 0x0003, 0x0000, 0x0c3e, 0x0c43, + // Entry 19400 - 1943F + 0x0003, 0x0025, 0x0d85, 0x0d92, 0x0d9a, 0x0002, 0x0c46, 0x0c4a, + 0x0002, 0x0025, 0x0da8, 0x0da8, 0x0002, 0x0025, 0x0db6, 0x0db6, + 0x0003, 0x0000, 0x0c52, 0x0c57, 0x0003, 0x0025, 0x0dc6, 0x0dcf, + 0x0dd6, 0x0002, 0x0c5a, 0x0c5e, 0x0002, 0x0025, 0x0de0, 0x0de0, + 0x0002, 0x0025, 0x0dec, 0x0dec, 0x0003, 0x0000, 0x0c66, 0x0c6b, + 0x0003, 0x0025, 0x0dfa, 0x0e08, 0x0e11, 0x0002, 0x0c6e, 0x0c72, + 0x0002, 0x0025, 0x0e2f, 0x0e20, 0x0002, 0x0025, 0x0e50, 0x0e3f, + 0x0003, 0x0000, 0x0c7a, 0x0c7f, 0x0003, 0x0025, 0x0e62, 0x0e6f, + // Entry 19440 - 1947F + 0x0e77, 0x0002, 0x0c82, 0x0c86, 0x0002, 0x0025, 0x0e85, 0x0e85, + 0x0002, 0x0025, 0x0e93, 0x0e93, 0x0003, 0x0000, 0x0c8e, 0x0c93, + 0x0003, 0x0025, 0x0ea3, 0x0eac, 0x0eb3, 0x0002, 0x0c96, 0x0c9a, + 0x0002, 0x0025, 0x0ebd, 0x0ebd, 0x0002, 0x0025, 0x0ec9, 0x0ec9, + 0x0003, 0x0000, 0x0ca2, 0x0ca7, 0x0003, 0x0025, 0x0ed7, 0x0ee8, + 0x0ef4, 0x0002, 0x0caa, 0x0cae, 0x0002, 0x0025, 0x0f18, 0x0f06, + 0x0002, 0x0025, 0x0f3f, 0x0f2b, 0x0003, 0x0000, 0x0cb6, 0x0cbb, + 0x0003, 0x0025, 0x0f54, 0x0f61, 0x0f69, 0x0002, 0x0cbe, 0x0cc2, + // Entry 19480 - 194BF + 0x0002, 0x0025, 0x0f77, 0x0f77, 0x0002, 0x0025, 0x0f85, 0x0f85, + 0x0003, 0x0000, 0x0cca, 0x0ccf, 0x0003, 0x0025, 0x0f95, 0x0f9e, + 0x0fa5, 0x0002, 0x0cd2, 0x0cd6, 0x0002, 0x0025, 0x0faf, 0x0faf, + 0x0002, 0x0025, 0x0fbb, 0x0fbb, 0x0003, 0x0000, 0x0cde, 0x0ce3, + 0x0003, 0x0025, 0x0fc9, 0x0fd8, 0x0fe2, 0x0002, 0x0ce6, 0x0cea, + 0x0002, 0x0025, 0x1002, 0x0ff2, 0x0002, 0x0025, 0x1025, 0x1013, + 0x0003, 0x0000, 0x0cf2, 0x0cf7, 0x0003, 0x0025, 0x1038, 0x1045, + 0x104d, 0x0002, 0x0cfa, 0x0cfe, 0x0002, 0x0025, 0x105b, 0x105b, + // Entry 194C0 - 194FF + 0x0002, 0x0025, 0x105b, 0x105b, 0x0003, 0x0000, 0x0d06, 0x0d0b, + 0x0003, 0x0025, 0x1069, 0x1072, 0x1079, 0x0002, 0x0d0e, 0x0d12, + 0x0002, 0x0025, 0x1083, 0x1083, 0x0002, 0x0025, 0x108f, 0x108f, + 0x0001, 0x0d18, 0x0001, 0x0025, 0x109d, 0x0003, 0x0d1f, 0x0d22, + 0x0d26, 0x0001, 0x0025, 0x10a4, 0x0002, 0x0025, 0xffff, 0x10aa, + 0x0002, 0x0d29, 0x0d2d, 0x0002, 0x0025, 0x10c8, 0x10b9, 0x0002, + 0x0025, 0x10e9, 0x10d8, 0x0003, 0x0d35, 0x0d38, 0x0d3c, 0x0001, + 0x0000, 0x2143, 0x0002, 0x0025, 0xffff, 0x10fb, 0x0002, 0x0d3f, + // Entry 19500 - 1953F + 0x0d43, 0x0002, 0x0025, 0x1103, 0x1103, 0x0002, 0x0025, 0x110f, + 0x110f, 0x0003, 0x0d4b, 0x0d4e, 0x0d52, 0x0001, 0x0000, 0x2143, + 0x0002, 0x0025, 0xffff, 0x10fb, 0x0002, 0x0d55, 0x0d59, 0x0002, + 0x0025, 0x111d, 0x111d, 0x0002, 0x0025, 0x1127, 0x1127, 0x0003, + 0x0d61, 0x0d64, 0x0d68, 0x0001, 0x001b, 0x09f7, 0x0002, 0x0025, + 0xffff, 0x1133, 0x0002, 0x0d6b, 0x0d6f, 0x0002, 0x0025, 0x1153, + 0x1143, 0x0002, 0x0025, 0x1176, 0x1164, 0x0003, 0x0d77, 0x0d7a, + 0x0d7e, 0x0001, 0x000b, 0x1250, 0x0002, 0x0025, 0xffff, 0x1189, + // Entry 19540 - 1957F + 0x0002, 0x0d81, 0x0d85, 0x0002, 0x0025, 0x1193, 0x1193, 0x0002, + 0x0025, 0x11a1, 0x11a1, 0x0003, 0x0d8d, 0x0d90, 0x0d94, 0x0001, + 0x000b, 0x1250, 0x0002, 0x0025, 0xffff, 0x1189, 0x0002, 0x0d97, + 0x0d9b, 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, + 0x11b1, 0x0003, 0x0da3, 0x0da6, 0x0daa, 0x0001, 0x0025, 0x11c8, + 0x0002, 0x0025, 0xffff, 0x11d0, 0x0002, 0x0dad, 0x0db1, 0x0002, + 0x0025, 0x11ec, 0x11db, 0x0002, 0x0025, 0x1211, 0x11fe, 0x0003, + 0x0db9, 0x0000, 0x0dbc, 0x0001, 0x0000, 0x2002, 0x0002, 0x0dbf, + // Entry 19580 - 195BF + 0x0dc3, 0x0002, 0x0025, 0x1225, 0x1225, 0x0002, 0x0025, 0x1231, + 0x1231, 0x0003, 0x0dcb, 0x0000, 0x0dce, 0x0001, 0x0000, 0x2002, + 0x0002, 0x0dd1, 0x0dd5, 0x0002, 0x0000, 0x1db4, 0x1db4, 0x0002, + 0x0000, 0x1dbb, 0x1dbb, 0x0001, 0x0ddb, 0x0001, 0x0025, 0x123f, + 0x0004, 0x0de3, 0x0de8, 0x0ded, 0x0dfc, 0x0003, 0x001c, 0x0baf, + 0x20f5, 0x20fc, 0x0003, 0x0025, 0x124e, 0x125a, 0x1270, 0x0002, + 0x0000, 0x0df0, 0x0003, 0x0000, 0x0df7, 0x0df4, 0x0001, 0x0025, + 0x1285, 0x0003, 0x0025, 0xffff, 0x12a0, 0x12bc, 0x0002, 0x0fe0, + // Entry 195C0 - 195FF + 0x0dff, 0x0003, 0x0e03, 0x0f41, 0x0ea2, 0x009d, 0x0025, 0xffff, + 0xffff, 0xffff, 0xffff, 0x13a7, 0x1416, 0x14bd, 0x1511, 0x157e, + 0x15ee, 0x1647, 0x16bd, 0x1702, 0x17ce, 0x181c, 0x1870, 0x18d6, + 0x1927, 0x198c, 0x1a01, 0x1a88, 0x1b00, 0x1b7e, 0x1bdb, 0x1c23, + 0xffff, 0xffff, 0x1c93, 0xffff, 0x1cec, 0xffff, 0x1d47, 0x1da1, + 0x1de0, 0x1e25, 0xffff, 0xffff, 0x1ea5, 0x1eed, 0x1f3e, 0xffff, + 0xffff, 0xffff, 0x1fcb, 0xffff, 0x204b, 0x20ab, 0xffff, 0x2126, + 0x2192, 0x21f2, 0xffff, 0xffff, 0xffff, 0xffff, 0x22ce, 0xffff, + // Entry 19600 - 1963F + 0xffff, 0x234f, 0x23c9, 0xffff, 0xffff, 0x2476, 0x24f9, 0x2544, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2619, 0x265b, + 0x26a6, 0x26ee, 0x272d, 0xffff, 0xffff, 0x27e5, 0xffff, 0x283d, + 0xffff, 0xffff, 0x28d2, 0xffff, 0x2978, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2a18, 0xffff, 0x2a6d, 0x2af0, 0x2b67, 0x2bbb, 0xffff, + 0xffff, 0xffff, 0x2c2d, 0x2c9c, 0x2d08, 0xffff, 0xffff, 0x2d91, + 0x2e1c, 0x2e70, 0x2eac, 0xffff, 0xffff, 0x2f2c, 0x2f74, 0x2fb6, + 0xffff, 0x3022, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3117, + // Entry 19640 - 1967F + 0x3162, 0x31a4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3270, 0xffff, 0xffff, 0x32d8, 0xffff, 0x3328, 0xffff, + 0x3390, 0x33e1, 0x3441, 0xffff, 0x3499, 0x34ea, 0xffff, 0xffff, + 0xffff, 0x3576, 0x35be, 0xffff, 0xffff, 0x12d7, 0x1472, 0x1741, + 0x1786, 0xffff, 0xffff, 0x291d, 0x009d, 0x0025, 0x131f, 0x1338, + 0x135b, 0x1380, 0x13c6, 0x142a, 0x14d3, 0x1531, 0x159f, 0x1602, + 0x166a, 0x16ce, 0x1711, 0x17e2, 0x1833, 0x188c, 0x18ec, 0x193f, + 0x19ad, 0x1a28, 0x1aaa, 0x1b24, 0x1b98, 0x1bed, 0x1c37, 0x1c71, + // Entry 19680 - 196BF + 0x1c82, 0x1ca5, 0x1cdb, 0x1cfe, 0x1d34, 0x1d5f, 0x1db0, 0x1df2, + 0x1e39, 0x1e73, 0x1e8f, 0x1eb7, 0x1f02, 0x1f4c, 0x1f88, 0x1f97, + 0x1fb3, 0x1fe8, 0x2034, 0x2065, 0x20c7, 0x2111, 0x2144, 0x21ac, + 0x2208, 0x2246, 0x2264, 0x229b, 0x22b6, 0x22e3, 0x231c, 0x2334, + 0x236d, 0x23e9, 0x2457, 0x2466, 0x2497, 0x250c, 0x2552, 0x2580, + 0x2592, 0x25ad, 0x25c1, 0x25dd, 0x25fa, 0x262b, 0x266e, 0x26b8, + 0x26fd, 0x274f, 0x27a5, 0x27c4, 0x27f8, 0x282d, 0x2853, 0x2891, + 0x28b6, 0x28e5, 0x295c, 0x2989, 0x29bd, 0x29d2, 0x29e5, 0x29ff, + // Entry 196C0 - 196FF + 0x2a29, 0x2a5d, 0x2a8c, 0x2b0c, 0x2b7d, 0x2bcb, 0x2bfd, 0x2c0e, + 0x2c1d, 0x2c4d, 0x2cba, 0x2d1d, 0x2d67, 0x2d77, 0x2dae, 0x2e32, + 0x2e7e, 0x2ebe, 0x2ef4, 0x2f05, 0x2f3e, 0x2f84, 0x2fcc, 0x300a, + 0x3044, 0x30a8, 0x30c1, 0x30de, 0x30f1, 0x3106, 0x312a, 0x3172, + 0x31b4, 0x31e6, 0x31fb, 0x320e, 0x3226, 0x323f, 0x3251, 0x3260, + 0x3280, 0x32b2, 0x32c7, 0x32e8, 0x3319, 0x333f, 0x337f, 0x33a5, + 0x33fb, 0x3452, 0x3486, 0x34ae, 0x34fd, 0x3535, 0x3545, 0x355c, + 0x3588, 0x35d6, 0x2449, 0x2dfa, 0x12e9, 0x1485, 0x1752, 0x1798, + // Entry 19700 - 1973F + 0xffff, 0x28a7, 0x292c, 0x009d, 0x0025, 0xffff, 0xffff, 0xffff, + 0xffff, 0x13ed, 0x1446, 0x14f1, 0x1559, 0x15c8, 0x161e, 0x1695, + 0x16e7, 0x1728, 0x17fe, 0x184f, 0x18b0, 0x190a, 0x195f, 0x19d6, + 0x1a57, 0x1ad4, 0x1b50, 0x1bba, 0x1c07, 0x1c53, 0xffff, 0xffff, + 0x1cbf, 0xffff, 0x1d18, 0xffff, 0x1d7f, 0x1dc7, 0x1e0c, 0x1e55, + 0xffff, 0xffff, 0x1ed1, 0x1f1f, 0x1f62, 0xffff, 0xffff, 0xffff, + 0x200d, 0xffff, 0x2087, 0x20eb, 0xffff, 0x216a, 0x21ce, 0x2226, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2300, 0xffff, 0xffff, 0x2393, + // Entry 19740 - 1977F + 0x2411, 0xffff, 0xffff, 0x24c0, 0x2527, 0x2568, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2642, 0x2689, 0x26d2, 0x2714, + 0x2779, 0xffff, 0xffff, 0x2813, 0xffff, 0x2871, 0xffff, 0xffff, + 0x2900, 0xffff, 0x29a2, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a42, + 0xffff, 0x2ab3, 0x2b30, 0x2b9b, 0x2be3, 0xffff, 0xffff, 0xffff, + 0x2c75, 0x2ce0, 0x2d3a, 0xffff, 0xffff, 0x2dd3, 0x2e50, 0x2e94, + 0x2ed8, 0xffff, 0xffff, 0x2f58, 0x2f9c, 0x2fea, 0xffff, 0x306e, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3145, 0x318a, 0x31cc, + // Entry 19780 - 197BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3298, + 0xffff, 0xffff, 0x3300, 0xffff, 0x335e, 0xffff, 0x33c2, 0x341d, + 0x346b, 0xffff, 0x34cb, 0x3518, 0xffff, 0xffff, 0xffff, 0x35a2, + 0x35f6, 0xffff, 0xffff, 0x1303, 0x14a0, 0x176b, 0x17b2, 0xffff, + 0xffff, 0x2943, 0x0003, 0x0fe4, 0x10ce, 0x1059, 0x0073, 0x0025, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1464, 0xffff, 0x1573, + 0x15e3, 0x163c, 0x16b2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1981, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 197C0 - 197FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f7a, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x23bb, 0x243b, 0xffff, 0xffff, 0x24eb, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19800 - 1983F + 0xffff, 0xffff, 0xffff, 0xffff, 0x2adc, 0x2b56, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d59, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x309a, 0x0073, 0x0025, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1468, 0xffff, 0x1576, 0x15e6, 0x163f, 0x16b5, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1984, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19840 - 1987F + 0xffff, 0xffff, 0xffff, 0xffff, 0x1f7e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x23bf, + 0x243f, 0xffff, 0xffff, 0x24ef, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2ae2, 0x2b5b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19880 - 198BF + 0xffff, 0xffff, 0x2d5d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x309e, + 0x0073, 0x0025, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x146d, + 0xffff, 0x157a, 0x15ea, 0x1643, 0x16b9, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1988, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1f83, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 198C0 - 198FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x23c4, 0x2444, 0xffff, 0xffff, + 0x24f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ae9, 0x2b61, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d62, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19900 - 1993F + 0xffff, 0xffff, 0xffff, 0xffff, 0x30a3, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, + 0x0000, 0x0001, 0x0016, 0x0001, 0x001e, 0x0218, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0026, 0x0001, 0x0023, + 0x0001, 0x001c, 0x04c7, 0x0003, 0x0000, 0x0000, 0x002a, 0x0001, + 0x0026, 0x0000, 0x0003, 0x0004, 0x011c, 0x019c, 0x000b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x001e, 0x0000, + // Entry 19940 - 1997F + 0x0000, 0x010e, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0019, 0x0000, 0x0000, 0x0001, 0x001b, 0x0001, 0x0026, 0x001b, + 0x0008, 0x0027, 0x0000, 0x0000, 0x004c, 0x00f1, 0x00fc, 0x0101, + 0x0106, 0x0002, 0x002a, 0x003b, 0x0001, 0x002c, 0x000d, 0x0025, + 0xffff, 0x02bd, 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, 0x3618, + 0x02e3, 0x02e9, 0x02ef, 0x02f4, 0x02f9, 0x0001, 0x003d, 0x000d, + 0x0025, 0xffff, 0x02bd, 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, + 0x3618, 0x02e3, 0x02e9, 0x02ef, 0x02f4, 0x02f9, 0x0002, 0x004f, + // Entry 19980 - 199BF + 0x00b6, 0x0003, 0x0053, 0x0074, 0x0095, 0x0008, 0x005f, 0x0065, + 0x005c, 0x0068, 0x006b, 0x006e, 0x0071, 0x0062, 0x0001, 0x0025, + 0x039a, 0x0001, 0x001c, 0x0494, 0x0001, 0x0025, 0x03a1, 0x0001, + 0x001c, 0x0499, 0x0001, 0x0026, 0x002a, 0x0001, 0x0025, 0x03e8, + 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, 0x03b6, 0x0008, 0x0080, + 0x0086, 0x007d, 0x0089, 0x008c, 0x008f, 0x0092, 0x0083, 0x0001, + 0x0025, 0x039a, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0025, 0x03a1, + 0x0001, 0x0000, 0x21ec, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, + // Entry 199C0 - 199FF + 0x03e8, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, + 0x00a1, 0x00a7, 0x009e, 0x00aa, 0x00ad, 0x00b0, 0x00b3, 0x00a4, + 0x0001, 0x0025, 0x039a, 0x0001, 0x001c, 0x0494, 0x0001, 0x0025, + 0x03a1, 0x0001, 0x001c, 0x0499, 0x0001, 0x0025, 0x03b6, 0x0001, + 0x0025, 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, 0x03b6, + 0x0003, 0x00ba, 0x00d4, 0x00e8, 0x0007, 0x00c2, 0x00c5, 0x0000, + 0x00c8, 0x00cb, 0x00ce, 0x00d1, 0x0001, 0x001c, 0x0494, 0x0001, + 0x001c, 0x0499, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03e8, + // Entry 19A00 - 19A3F + 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0007, 0x0000, + 0x0000, 0x0000, 0x00dc, 0x00df, 0x00e2, 0x00e5, 0x0001, 0x0010, + 0x029b, 0x0001, 0x0025, 0x03e8, 0x0001, 0x0025, 0x03ac, 0x0001, + 0x0025, 0x03b1, 0x0002, 0x00eb, 0x00ee, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0003, 0x0000, 0x0000, 0x00f5, 0x0002, + 0x0000, 0x00f8, 0x0002, 0x0026, 0x0032, 0x004d, 0x0001, 0x00fe, + 0x0001, 0x001c, 0x071c, 0x0001, 0x0103, 0x0001, 0x0026, 0x0065, + 0x0004, 0x0000, 0x0000, 0x0000, 0x010b, 0x0001, 0x0000, 0x03c6, + // Entry 19A40 - 19A7F + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, + 0x9006, 0x0001, 0x0119, 0x0001, 0x0026, 0x006f, 0x003f, 0x0000, + 0x0000, 0x0000, 0x015c, 0x016b, 0x0000, 0x0170, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 19A80 - 19ABF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0178, + 0x0000, 0x0000, 0x0187, 0x0000, 0x0000, 0x0192, 0x0003, 0x0000, + 0x0000, 0x0160, 0x0002, 0x0163, 0x0167, 0x0002, 0x0026, 0x008a, + 0x007d, 0x0002, 0x0026, 0x00a7, 0x0098, 0x0001, 0x016d, 0x0001, + 0x0000, 0x1f9c, 0x0002, 0x0000, 0x0173, 0x0003, 0x0025, 0x077d, + 0x361f, 0x079f, 0x0003, 0x0000, 0x0000, 0x017c, 0x0002, 0x017f, + 0x0183, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, 0x0000, 0x1d7d, + 0x1d7d, 0x0003, 0x0000, 0x0000, 0x018b, 0x0002, 0x0000, 0x018e, + // Entry 19AC0 - 19AFF + 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0000, 0x0000, 0x0196, + 0x0001, 0x0198, 0x0002, 0x0026, 0x00bf, 0x00b7, 0x0004, 0x0000, + 0x01a1, 0x01a6, 0x01b1, 0x0003, 0x0026, 0xffff, 0x00c6, 0x00db, + 0x0002, 0x0000, 0x01a9, 0x0002, 0x0000, 0x01ac, 0x0003, 0x0026, + 0xffff, 0x00ef, 0x010a, 0x0002, 0x0395, 0x01b4, 0x0003, 0x01b8, + 0x02f6, 0x0257, 0x009d, 0x0025, 0xffff, 0xffff, 0xffff, 0xffff, + 0x13a7, 0x1416, 0x14bd, 0x3687, 0x36af, 0x15ee, 0x36d9, 0x16bd, + 0x1702, 0x17ce, 0x181c, 0x1870, 0x18d6, 0x1927, 0x198c, 0x1a01, + // Entry 19B00 - 19B3F + 0x1a88, 0x1b00, 0x1b7e, 0x1bdb, 0x1c23, 0xffff, 0xffff, 0x1c93, + 0xffff, 0x1cec, 0xffff, 0x1d47, 0x1da1, 0x3727, 0x1e25, 0xffff, + 0xffff, 0x1ea5, 0x1eed, 0x1f3e, 0xffff, 0xffff, 0xffff, 0x1fcb, + 0xffff, 0x204b, 0x20ab, 0xffff, 0x2126, 0x2192, 0x21f2, 0xffff, + 0xffff, 0xffff, 0xffff, 0x22ce, 0xffff, 0xffff, 0x234f, 0x23c9, + 0xffff, 0xffff, 0x3768, 0x24f9, 0x2544, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2619, 0x265b, 0x26a6, 0x26ee, 0x272d, + 0xffff, 0xffff, 0x27e5, 0xffff, 0x283d, 0xffff, 0xffff, 0x28d2, + // Entry 19B40 - 19B7F + 0xffff, 0x2978, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a18, 0xffff, + 0x2a6d, 0x2af0, 0x2b67, 0x2bbb, 0xffff, 0xffff, 0xffff, 0x2c2d, + 0x2c9c, 0x2d08, 0xffff, 0xffff, 0x2d91, 0x2e1c, 0x37b5, 0x2eac, + 0xffff, 0xffff, 0x2f2c, 0x2f74, 0x2fb6, 0xffff, 0x3022, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3117, 0xffff, 0x31a4, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3270, 0xffff, + 0xffff, 0x32d8, 0xffff, 0x3328, 0xffff, 0x3390, 0x33e1, 0x3441, + 0xffff, 0x3499, 0x34ea, 0xffff, 0xffff, 0xffff, 0x3576, 0x35be, + // Entry 19B80 - 19BBF + 0xffff, 0xffff, 0x12d7, 0x1472, 0x1741, 0x1786, 0xffff, 0xffff, + 0x291d, 0x009d, 0x0025, 0xffff, 0x362f, 0x364a, 0x3666, 0x13c6, + 0x142a, 0x14d3, 0x3697, 0x36c0, 0x1602, 0x36ec, 0x16ce, 0x1711, + 0x17e2, 0x1833, 0x188c, 0x18ec, 0x193f, 0x19ad, 0x1a28, 0x1aaa, + 0x1b24, 0x1b98, 0x1bed, 0x1c37, 0xffff, 0xffff, 0x1ca5, 0xffff, + 0x1cfe, 0xffff, 0x3707, 0x1db0, 0x3736, 0x1e39, 0xffff, 0xffff, + 0x1eb7, 0x1f02, 0x1f4c, 0xffff, 0xffff, 0xffff, 0x1fe8, 0xffff, + 0x2065, 0x20c7, 0xffff, 0x2144, 0x21ac, 0x2208, 0x374d, 0xffff, + // Entry 19BC0 - 19BFF + 0xffff, 0xffff, 0x22e3, 0xffff, 0xffff, 0x236d, 0x23e9, 0xffff, + 0xffff, 0x3787, 0x250c, 0x2552, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x262b, 0x266e, 0x26b8, 0x26fd, 0x274f, 0xffff, + 0xffff, 0x27f8, 0xffff, 0x2853, 0xffff, 0xffff, 0x28e5, 0xffff, + 0x2989, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a29, 0xffff, 0x2a8c, + 0x2b0c, 0x2b7d, 0x2bcb, 0xffff, 0xffff, 0xffff, 0x2c4d, 0x2cba, + 0x2d1d, 0xffff, 0xffff, 0x2dae, 0x2e32, 0x37c4, 0x2ebe, 0xffff, + 0xffff, 0x2f3e, 0x2f84, 0x2fcc, 0xffff, 0x3044, 0xffff, 0xffff, + // Entry 19C00 - 19C3F + 0xffff, 0x37db, 0xffff, 0x312a, 0xffff, 0x31b4, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3280, 0xffff, 0xffff, + 0x32e8, 0xffff, 0x333f, 0xffff, 0x33a5, 0x33fb, 0x3452, 0xffff, + 0x34ae, 0x34fd, 0xffff, 0xffff, 0xffff, 0x3588, 0x35d6, 0xffff, + 0xffff, 0x12e9, 0x1485, 0x1752, 0x1798, 0xffff, 0xffff, 0x292c, + 0x009d, 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, 0x013f, 0x0167, + 0x01a0, 0x01bf, 0x01dc, 0x01fa, 0x021b, 0x023b, 0x0255, 0x02a2, + 0x02bf, 0x02df, 0x0304, 0x0320, 0x0341, 0x036b, 0x039b, 0x03c6, + // Entry 19C40 - 19C7F + 0x03f3, 0x0413, 0x042e, 0xffff, 0xffff, 0x044b, 0xffff, 0x0466, + 0xffff, 0x0481, 0x04a2, 0x04ba, 0x04d2, 0xffff, 0xffff, 0x04ef, + 0x050a, 0x0528, 0xffff, 0xffff, 0xffff, 0x053f, 0xffff, 0x0565, + 0x0588, 0xffff, 0x05ad, 0x05d4, 0x05f7, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0616, 0xffff, 0xffff, 0x0631, 0x0658, 0xffff, 0xffff, + 0x0681, 0x06a9, 0x06c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x06dc, 0x06f4, 0x0710, 0x072b, 0x0743, 0xffff, 0xffff, + 0x076e, 0xffff, 0x0787, 0xffff, 0xffff, 0x07a6, 0xffff, 0x07da, + // Entry 19C80 - 19CBF + 0xffff, 0xffff, 0xffff, 0xffff, 0x07f4, 0xffff, 0x080e, 0x0836, + 0x085b, 0x087a, 0xffff, 0xffff, 0xffff, 0x0893, 0x08b9, 0x08e0, + 0xffff, 0xffff, 0x0902, 0x0928, 0x0947, 0x095f, 0xffff, 0xffff, + 0x097a, 0x0995, 0x09ae, 0xffff, 0x09cd, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x09f8, 0xffff, 0x0a14, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0a2d, 0xffff, 0xffff, 0x0a46, + 0xffff, 0x0a5e, 0xffff, 0x0a7e, 0x0a9c, 0x0abf, 0xffff, 0x0ad9, + 0x0af7, 0xffff, 0xffff, 0xffff, 0x0b13, 0x0b2e, 0xffff, 0xffff, + // Entry 19CC0 - 19CFF + 0x0124, 0x0184, 0x026d, 0x0287, 0xffff, 0xffff, 0x07c2, 0x0003, + 0x0399, 0x0469, 0x0401, 0x0066, 0x0025, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1573, 0x15e3, 0x163c, 0x16b2, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19D00 - 19D3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x37ae, 0x0066, 0x0025, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1576, 0x15e6, 0x163f, 0x16b5, + // Entry 19D40 - 19D7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19D80 - 19DBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x37b1, 0x0066, 0x0026, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x01d8, 0x01f6, 0x0217, 0x0237, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19DC0 - 19DFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19E00 - 19E3F + 0xffff, 0xffff, 0x08fe, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, + 0x0017, 0x0035, 0x0002, 0x0000, 0x001a, 0x0008, 0x0000, 0x0000, + 0x0023, 0x0029, 0x002c, 0x002f, 0x0032, 0x0026, 0x0001, 0x0001, + 0x075a, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0010, 0x029b, 0x0001, + 0x0025, 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, + 0x0002, 0x0000, 0x0038, 0x0003, 0x0000, 0x0000, 0x003c, 0x0001, + // Entry 19E40 - 19E7F + 0x0001, 0x075a, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x001e, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0003, 0x001b, + 0x0000, 0x0018, 0x0001, 0x0005, 0x0625, 0x0001, 0x001e, 0x1a8e, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0027, 0x0000, 0x0090, 0x009a, + 0x0000, 0x0002, 0x002a, 0x007f, 0x0003, 0x002e, 0x0049, 0x0064, + 0x0008, 0x0000, 0x0000, 0x0037, 0x003d, 0x0040, 0x0043, 0x0046, + 0x003a, 0x0001, 0x0001, 0x075a, 0x0001, 0x0025, 0x03a1, 0x0001, + // Entry 19E80 - 19EBF + 0x0026, 0x002a, 0x0001, 0x0026, 0x0b4f, 0x0001, 0x0025, 0x03d2, + 0x0001, 0x0026, 0x002a, 0x0008, 0x0000, 0x0000, 0x0052, 0x0058, + 0x005b, 0x005e, 0x0061, 0x0055, 0x0001, 0x0001, 0x075a, 0x0001, + 0x0025, 0x03a1, 0x0001, 0x0026, 0x002a, 0x0001, 0x0026, 0x0b4f, + 0x0001, 0x0025, 0x03d2, 0x0001, 0x0026, 0x002a, 0x0008, 0x0000, + 0x0000, 0x006d, 0x0073, 0x0076, 0x0079, 0x007c, 0x0070, 0x0001, + 0x0025, 0x039a, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0025, 0x03b6, + 0x0001, 0x0025, 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, + // Entry 19EC0 - 19EFF + 0x03b6, 0x0002, 0x0082, 0x0089, 0x0003, 0x0000, 0x0000, 0x0086, + 0x0001, 0x0001, 0x075a, 0x0003, 0x0000, 0x0000, 0x008d, 0x0001, + 0x0001, 0x075a, 0x0003, 0x0097, 0x0000, 0x0094, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0007, 0x0277, 0x0003, 0x0000, 0x0000, 0x009e, + 0x0001, 0x0026, 0x0b5c, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, + 0x0017, 0x0036, 0x0003, 0x001b, 0x0024, 0x002d, 0x0002, 0x001e, + // Entry 19F00 - 19F3F + 0x0021, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, 0x0002, + 0x0027, 0x002a, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, + 0x0002, 0x0030, 0x0033, 0x0001, 0x0025, 0x03e2, 0x0001, 0x0025, + 0x03ac, 0x0003, 0x003a, 0x0043, 0x004c, 0x0002, 0x003d, 0x0040, + 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, 0x0002, 0x0046, + 0x0049, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, 0x0002, + 0x004f, 0x0052, 0x0001, 0x0025, 0x03e2, 0x0001, 0x0025, 0x03ac, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 19F40 - 19F7F + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, + 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + // Entry 19F80 - 19FBF + 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, 0x0000, 0x000f, 0x0034, + 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 19FC0 - 19FFF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0b6e, 0x0002, 0x0003, 0x0032, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0004, 0x0000, 0x0000, 0x0000, 0x0011, 0x0001, 0x0013, + 0x0003, 0x0000, 0x0000, 0x0017, 0x0008, 0x0000, 0x0000, 0x0020, + 0x0026, 0x0029, 0x002c, 0x002f, 0x0023, 0x0001, 0x0025, 0x039a, + 0x0001, 0x0025, 0x03a1, 0x0001, 0x0025, 0x03b6, 0x0001, 0x0025, + 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0026, 0x0b72, 0x003f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1A000 - 1A03F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0072, 0x0077, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x007c, 0x0000, 0x0000, 0x0084, 0x0000, 0x0000, 0x008c, 0x0000, + 0x0000, 0x0094, 0x0000, 0x0000, 0x009c, 0x0000, 0x0000, 0x00a4, + 0x0000, 0x0000, 0x00ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x00b4, + 0x00b9, 0x0000, 0x00be, 0x00c3, 0x0000, 0x0000, 0x00c8, 0x0001, + 0x0074, 0x0001, 0x0026, 0x0b7d, 0x0001, 0x0079, 0x0001, 0x0026, + // Entry 1A040 - 1A07F + 0x0b7d, 0x0002, 0x0000, 0x007f, 0x0003, 0x0026, 0x0b81, 0x0b8d, + 0x0b94, 0x0002, 0x0000, 0x0087, 0x0003, 0x0026, 0x0ba1, 0x0bad, + 0x0bb4, 0x0002, 0x0000, 0x008f, 0x0003, 0x0026, 0x0bc1, 0x0bcd, + 0x0bd4, 0x0002, 0x0000, 0x0097, 0x0003, 0x0026, 0x0be1, 0x0bed, + 0x0bf4, 0x0002, 0x0000, 0x009f, 0x0003, 0x0026, 0x0c01, 0x0c0d, + 0x0c14, 0x0002, 0x0000, 0x00a7, 0x0003, 0x0026, 0x0c21, 0x0c2d, + 0x0c34, 0x0002, 0x0000, 0x00af, 0x0003, 0x0026, 0x0c41, 0x0c4d, + 0x0c54, 0x0001, 0x00b6, 0x0001, 0x001c, 0x0091, 0x0001, 0x00bb, + // Entry 1A080 - 1A0BF + 0x0001, 0x001c, 0x0091, 0x0001, 0x00c0, 0x0001, 0x0001, 0x075a, + 0x0001, 0x00c5, 0x0001, 0x0001, 0x075a, 0x0001, 0x00ca, 0x0001, + 0x001b, 0x0a96, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0010, 0x0000, + 0x0000, 0x0035, 0x0002, 0x0013, 0x0024, 0x0001, 0x0015, 0x000d, + 0x0015, 0xffff, 0x000b, 0x239c, 0x23a2, 0x23a7, 0x23ac, 0x23b0, + 0x23b5, 0x23bb, 0x23c1, 0x23c7, 0x23cc, 0x23d1, 0x0001, 0x0026, + 0x000d, 0x0015, 0xffff, 0x000b, 0x239c, 0x23a2, 0x23a7, 0x23ac, + // Entry 1A0C0 - 1A0FF + 0x23b0, 0x23b5, 0x23bb, 0x23c1, 0x23c7, 0x23cc, 0x23d1, 0x0001, + 0x0037, 0x0003, 0x0000, 0x0000, 0x003b, 0x0002, 0x003e, 0x0041, + 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0008, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, + 0x0000, 0x002d, 0x0002, 0x0017, 0x0022, 0x0003, 0x0000, 0x0000, + 0x001b, 0x0005, 0x0026, 0xffff, 0x0c61, 0x0c72, 0x0c85, 0x0c98, + 0x0003, 0x0000, 0x0000, 0x0026, 0x0005, 0x0005, 0xffff, 0x12b0, + // Entry 1A100 - 1A13F + 0x218a, 0x219a, 0x21aa, 0x0004, 0x0035, 0x0000, 0x0000, 0x0032, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0002, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, + // Entry 1A140 - 1A17F + 0x0000, 0x0010, 0x0002, 0x0013, 0x0030, 0x0001, 0x0015, 0x0008, + 0x0000, 0x0000, 0x001e, 0x0024, 0x0027, 0x002a, 0x002d, 0x0021, + 0x0001, 0x0001, 0x075a, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0010, + 0x029b, 0x0001, 0x0025, 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, + 0x0025, 0x03b1, 0x0002, 0x0033, 0x003a, 0x0003, 0x0000, 0x0000, + 0x0037, 0x0001, 0x0001, 0x075a, 0x0003, 0x0000, 0x0000, 0x003e, + 0x0001, 0x0001, 0x075a, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, + // Entry 1A180 - 1A1BF + 0x0000, 0x0000, 0x0010, 0x0002, 0x0013, 0x004c, 0x0002, 0x0016, + 0x0031, 0x0008, 0x0000, 0x0000, 0x001f, 0x0025, 0x0028, 0x002b, + 0x002e, 0x0022, 0x0001, 0x0001, 0x075a, 0x0001, 0x0025, 0x03a1, + 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, 0x0001, 0x0025, + 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x0000, 0x0000, 0x003a, + 0x0040, 0x0043, 0x0046, 0x0049, 0x003d, 0x0001, 0x0001, 0x075a, + 0x0001, 0x0025, 0x03a1, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, + 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0002, + // Entry 1A1C0 - 1A1FF + 0x004f, 0x0056, 0x0003, 0x0000, 0x0000, 0x0053, 0x0001, 0x0001, + 0x075a, 0x0003, 0x0000, 0x0000, 0x005a, 0x0001, 0x0001, 0x075a, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, + // Entry 1A200 - 1A23F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, + 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, + // Entry 1A240 - 1A27F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, + 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0003, 0x0004, 0x0146, 0x0220, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, + 0x001e, 0x001b, 0x0021, 0x0001, 0x0026, 0x0cab, 0x0001, 0x0026, + // Entry 1A280 - 1A2BF + 0x0cc6, 0x0001, 0x0010, 0x02f4, 0x0001, 0x001c, 0x14e1, 0x0008, + 0x0030, 0x0095, 0x00d6, 0x0104, 0x011c, 0x0124, 0x0135, 0x0000, + 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, 0x0055, 0x000d, + 0x0026, 0xffff, 0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, + 0x0cf4, 0x0cf8, 0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x000d, 0x0000, + 0xffff, 0x22db, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x228e, + 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, 0xffff, + 0x0d0c, 0x0d13, 0x0d1b, 0x0d21, 0x0cec, 0x0d28, 0x0cf4, 0x0d2d, + // Entry 1A2C0 - 1A2FF + 0x0d33, 0x0d3c, 0x0d43, 0x0d4c, 0x0003, 0x0068, 0x0077, 0x0086, + 0x000d, 0x0026, 0xffff, 0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, + 0x0cf0, 0x0cf4, 0x0cf8, 0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x000d, + 0x0000, 0xffff, 0x22db, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, + 0x228e, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, + 0xffff, 0x0d0c, 0x0d13, 0x0d1b, 0x0d21, 0x0cec, 0x0d28, 0x0cf4, + 0x0d2d, 0x0d33, 0x0d3c, 0x0d43, 0x0d4c, 0x0002, 0x0098, 0x00b7, + 0x0003, 0x009c, 0x00a5, 0x00ae, 0x0007, 0x0005, 0x123c, 0x21ba, + // Entry 1A300 - 1A33F + 0x21be, 0x21c2, 0x21c6, 0x21ca, 0x21ce, 0x0007, 0x0000, 0x22f0, + 0x228e, 0x247f, 0x247f, 0x2483, 0x2485, 0x2481, 0x0007, 0x0026, + 0x0d55, 0x0d5d, 0x0d63, 0x0d6b, 0x0d73, 0x0d79, 0x0d80, 0x0003, + 0x00bb, 0x00c4, 0x00cd, 0x0007, 0x0005, 0x123c, 0x21ba, 0x21be, + 0x21c2, 0x21c6, 0x21ca, 0x21ce, 0x0007, 0x0000, 0x22f0, 0x228e, + 0x247f, 0x247f, 0x2483, 0x2485, 0x2481, 0x0007, 0x0026, 0x0d55, + 0x0d5d, 0x0d63, 0x0d6b, 0x0d73, 0x0d79, 0x0d80, 0x0002, 0x00d9, + 0x00f2, 0x0003, 0x00dd, 0x00e4, 0x00eb, 0x0005, 0x001c, 0xffff, + // Entry 1A340 - 1A37F + 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0026, 0xffff, 0x0d87, 0x0d96, + 0x0da7, 0x0db8, 0x0003, 0x00f6, 0x0000, 0x00fd, 0x0005, 0x001c, + 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0026, 0xffff, + 0x0d87, 0x0d96, 0x0da7, 0x0db8, 0x0001, 0x0106, 0x0003, 0x010a, + 0x0000, 0x0113, 0x0002, 0x010d, 0x0110, 0x0001, 0x0026, 0x0dc8, + 0x0001, 0x0026, 0x0dcb, 0x0002, 0x0116, 0x0119, 0x0001, 0x0026, + 0x0dc8, 0x0001, 0x0026, 0x0dcb, 0x0001, 0x011e, 0x0001, 0x0120, + // Entry 1A380 - 1A3BF + 0x0002, 0x0026, 0x0dce, 0x0dd2, 0x0004, 0x0132, 0x012c, 0x0129, + 0x012f, 0x0001, 0x0026, 0x0dd6, 0x0001, 0x0026, 0x0def, 0x0001, + 0x0002, 0x0860, 0x0001, 0x0014, 0x146e, 0x0004, 0x0143, 0x013d, + 0x013a, 0x0140, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0187, + 0x0000, 0x0000, 0x018c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x019e, 0x0000, 0x0000, 0x01b0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x01c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01db, + // Entry 1A3C0 - 1A3FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01e0, 0x0000, 0x01e5, 0x0000, 0x0000, + 0x01f7, 0x0000, 0x0000, 0x0209, 0x0000, 0x0000, 0x021b, 0x0001, + 0x0189, 0x0001, 0x0026, 0x0e03, 0x0003, 0x0190, 0x0000, 0x0193, + 0x0001, 0x0025, 0x075b, 0x0002, 0x0196, 0x019a, 0x0002, 0x0026, + 0x0e14, 0x0e07, 0x0002, 0x0026, 0x0e32, 0x0e23, 0x0003, 0x01a2, + // Entry 1A400 - 1A43F + 0x0000, 0x01a5, 0x0001, 0x0026, 0x0e43, 0x0002, 0x01a8, 0x01ac, + 0x0002, 0x0026, 0x0e48, 0x0e48, 0x0002, 0x0026, 0x0e57, 0x0e57, + 0x0003, 0x01b4, 0x0000, 0x01b7, 0x0001, 0x0026, 0x0e68, 0x0002, + 0x01ba, 0x01be, 0x0002, 0x0026, 0x0e84, 0x0e71, 0x0002, 0x0026, + 0x0ead, 0x0e98, 0x0003, 0x01c6, 0x01c9, 0x01d0, 0x0001, 0x0026, + 0x0ec3, 0x0005, 0x0026, 0x0ed5, 0x0ed9, 0x0ede, 0x0ec7, 0x0ee4, + 0x0002, 0x01d3, 0x01d7, 0x0002, 0x0026, 0x0f03, 0x0ef1, 0x0002, + 0x0026, 0x0f2a, 0x0f16, 0x0001, 0x01dd, 0x0001, 0x0026, 0x0f3f, + // Entry 1A440 - 1A47F + 0x0001, 0x01e2, 0x0001, 0x0026, 0x0f4f, 0x0003, 0x01e9, 0x0000, + 0x01ec, 0x0001, 0x0026, 0x0f5b, 0x0002, 0x01ef, 0x01f3, 0x0002, + 0x0026, 0x0f6d, 0x0f5f, 0x0002, 0x0026, 0x0f8c, 0x0f7c, 0x0003, + 0x01fb, 0x0000, 0x01fe, 0x0001, 0x0026, 0x0f9d, 0x0002, 0x0201, + 0x0205, 0x0002, 0x0026, 0x0fb5, 0x0fa4, 0x0002, 0x0026, 0x0fda, + 0x0fc7, 0x0003, 0x020d, 0x0000, 0x0210, 0x0001, 0x0026, 0x0fee, + 0x0002, 0x0213, 0x0217, 0x0002, 0x0026, 0x1006, 0x0ff5, 0x0002, + 0x0026, 0x102b, 0x1018, 0x0001, 0x021d, 0x0001, 0x001b, 0x0abe, + // Entry 1A480 - 1A4BF + 0x0004, 0x0225, 0x0000, 0x0000, 0x0229, 0x0002, 0x0000, 0x1dc7, + 0x238b, 0x0002, 0x0356, 0x022c, 0x0003, 0x0230, 0x02f4, 0x0292, + 0x0060, 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x103f, + // Entry 1A4C0 - 1A4FF + 0x1094, 0xffff, 0x10ec, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1147, 0x0060, 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1A500 - 1A53F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1056, 0x10ac, 0xffff, 0x1105, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1A540 - 1A57F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1155, 0x0060, 0x0026, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1A580 - 1A5BF + 0xffff, 0xffff, 0xffff, 0x1076, 0x10cd, 0xffff, 0x1127, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x116c, 0x0003, 0x035a, + 0x03c9, 0x038d, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1A5C0 - 1A5FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1A600 - 1A63F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x278c, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1A640 - 1A67F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x06a6, 0x0810, + 0x0012, 0x0017, 0x0038, 0x010a, 0x0177, 0x022a, 0x0000, 0x0297, + 0x02f2, 0x0485, 0x04ef, 0x0561, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05e7, 0x0612, 0x0684, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, + // Entry 1A680 - 1A6BF + 0x0001, 0x0000, 0x0000, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0026, 0x1181, 0x000a, 0x0043, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00f9, 0x0000, 0x0000, 0x0000, 0x006a, 0x0002, + 0x0046, 0x0058, 0x0002, 0x0000, 0x0049, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x0002, 0x0000, 0x005b, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + // Entry 1A6C0 - 1A6FF + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0006, 0x0071, + 0x0000, 0x0000, 0x0084, 0x00a3, 0x00e6, 0x0001, 0x0073, 0x0001, + 0x0075, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, + 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, + 0x0001, 0x0086, 0x0003, 0x0000, 0x0000, 0x008a, 0x0017, 0x0026, + 0xffff, 0x1190, 0x11a6, 0x11b1, 0x11c6, 0x11d2, 0xffff, 0x11e3, + 0xffff, 0xffff, 0x11f9, 0x1204, 0x120a, 0x120f, 0x1224, 0x1238, + 0x1243, 0x124e, 0x125b, 0x1269, 0x127e, 0x128a, 0x1296, 0x0001, + // Entry 1A700 - 1A73F + 0x00a5, 0x0001, 0x00a7, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, + 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, + 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, + 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, + 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, + 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, + 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, + 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, + // Entry 1A740 - 1A77F + 0x0389, 0x0390, 0x0001, 0x00e8, 0x0001, 0x00ea, 0x000d, 0x0026, + 0xffff, 0x12a1, 0x12a6, 0x12ab, 0x12b1, 0x12b6, 0x12bc, 0x12c2, + 0x12c9, 0x12ce, 0x12d2, 0x12d9, 0x12de, 0x0004, 0x0107, 0x0101, + 0x00fe, 0x0104, 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, 0x0026, + 0x0001, 0x0010, 0x002f, 0x0001, 0x001e, 0x0206, 0x0001, 0x010c, + 0x0002, 0x010f, 0x0143, 0x0003, 0x0113, 0x0123, 0x0133, 0x000e, + 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x1302, + 0x1309, 0x1312, 0x131d, 0x1325, 0x132f, 0x1334, 0x133a, 0x000e, + // Entry 1A780 - 1A7BF + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, + 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x1302, + 0x1309, 0x1312, 0x131d, 0x1325, 0x132f, 0x1334, 0x133a, 0x0003, + 0x0147, 0x0157, 0x0167, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, + 0x12ef, 0x12f5, 0x12fc, 0x1302, 0x1309, 0x1312, 0x131d, 0x1325, + 0x132f, 0x1334, 0x133a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + // Entry 1A7C0 - 1A7FF + 0x2220, 0x2398, 0x0422, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, + 0x12ef, 0x12f5, 0x12fc, 0x1302, 0x1309, 0x1312, 0x131d, 0x1325, + 0x132f, 0x1334, 0x133a, 0x000a, 0x0182, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0219, 0x0000, 0x0000, 0x0000, 0x01a9, 0x0002, 0x0185, + 0x0197, 0x0002, 0x0000, 0x0188, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x0002, 0x0000, 0x019a, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + // Entry 1A800 - 1A83F + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0006, 0x01b0, 0x0000, + 0x0000, 0x0000, 0x01c3, 0x0206, 0x0001, 0x01b2, 0x0001, 0x01b4, + 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, + 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, + 0x01c5, 0x0001, 0x01c7, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, + 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, + 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, + 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, + // Entry 1A840 - 1A87F + 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, + 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, + 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, + 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, + 0x0389, 0x0390, 0x0001, 0x0208, 0x0001, 0x020a, 0x000d, 0x0026, + 0xffff, 0x12a1, 0x12a6, 0x12ab, 0x12b1, 0x12b6, 0x12bc, 0x12c2, + 0x12c9, 0x12ce, 0x12d2, 0x12d9, 0x12de, 0x0004, 0x0227, 0x0221, + 0x021e, 0x0224, 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, 0x0026, + // Entry 1A880 - 1A8BF + 0x0001, 0x0010, 0x002f, 0x0001, 0x001e, 0x0206, 0x0001, 0x022c, + 0x0002, 0x022f, 0x0263, 0x0003, 0x0233, 0x0243, 0x0253, 0x000e, + 0x0026, 0xffff, 0x133f, 0x134b, 0x1352, 0x1358, 0x135f, 0x1366, + 0x136f, 0x1378, 0x1380, 0x1387, 0x138d, 0x1393, 0x139b, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, + 0x0026, 0xffff, 0x133f, 0x134b, 0x1352, 0x1358, 0x135f, 0x1366, + 0x136f, 0x1378, 0x1380, 0x1387, 0x138d, 0x1393, 0x139b, 0x0003, + // Entry 1A8C0 - 1A8FF + 0x0267, 0x0277, 0x0287, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, + 0x1352, 0x1358, 0x135f, 0x1366, 0x136f, 0x1378, 0x1380, 0x1387, + 0x138d, 0x1393, 0x139b, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x0422, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, + 0x1352, 0x1358, 0x135f, 0x1366, 0x136f, 0x1378, 0x1380, 0x1387, + 0x138d, 0x1393, 0x139b, 0x0008, 0x02a0, 0x0000, 0x0000, 0x0000, + 0x02c8, 0x02d0, 0x0000, 0x02e1, 0x0002, 0x02a3, 0x02b6, 0x0003, + // Entry 1A900 - 1A93F + 0x0000, 0x0000, 0x02a7, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, + 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, + 0x002b, 0x002f, 0x0002, 0x0000, 0x02b9, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x0001, 0x02ca, 0x0001, 0x02cc, + 0x0002, 0x0000, 0x0425, 0x042a, 0x0004, 0x02de, 0x02d8, 0x02d5, + 0x02db, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, 0x02ef, 0x02e9, + // Entry 1A940 - 1A97F + 0x02e6, 0x02ec, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x02fb, + 0x0360, 0x03b7, 0x03ec, 0x042d, 0x0452, 0x0463, 0x0474, 0x0002, + 0x02fe, 0x032f, 0x0003, 0x0302, 0x0311, 0x0320, 0x000d, 0x0005, + 0xffff, 0x0636, 0x20fa, 0x21d2, 0x2102, 0x21d6, 0x210a, 0x210e, + 0x2112, 0x2116, 0x21da, 0x21de, 0x21e2, 0x000d, 0x0000, 0xffff, + 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x2483, 0x2382, + 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, 0xffff, 0x13a4, + // Entry 1A980 - 1A9BF + 0x13af, 0x13ba, 0x13c0, 0x13c6, 0x13cc, 0x13d1, 0x13d6, 0x13df, + 0x13e9, 0x13f1, 0x13fa, 0x0003, 0x0333, 0x0342, 0x0351, 0x000d, + 0x0005, 0xffff, 0x0636, 0x20fa, 0x21d2, 0x2102, 0x21d6, 0x210a, + 0x210e, 0x2112, 0x2116, 0x21da, 0x21de, 0x21e2, 0x000d, 0x0000, + 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x2483, + 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, 0xffff, + 0x13a4, 0x13af, 0x13ba, 0x13c0, 0x13c6, 0x13cc, 0x13d1, 0x13d6, + 0x13df, 0x13e9, 0x13f1, 0x13fa, 0x0002, 0x0363, 0x038d, 0x0005, + // Entry 1A9C0 - 1A9FF + 0x0369, 0x0372, 0x0384, 0x0000, 0x037b, 0x0007, 0x0000, 0x006f, + 0x2487, 0x248a, 0x248d, 0x2490, 0x2493, 0x2496, 0x0007, 0x0000, + 0x2481, 0x247f, 0x04dd, 0x2159, 0x04dd, 0x22e6, 0x2481, 0x0007, + 0x0000, 0x006f, 0x2487, 0x248a, 0x248d, 0x2490, 0x2493, 0x2496, + 0x0007, 0x0026, 0x1403, 0x1409, 0x1411, 0x1419, 0x1422, 0x142d, + 0x1433, 0x0005, 0x0393, 0x039c, 0x03ae, 0x0000, 0x03a5, 0x0007, + 0x0000, 0x006f, 0x2487, 0x248a, 0x248d, 0x2490, 0x2493, 0x2496, + 0x0007, 0x0000, 0x2481, 0x247f, 0x04dd, 0x2159, 0x04dd, 0x22e6, + // Entry 1AA00 - 1AA3F + 0x2481, 0x0007, 0x0000, 0x006f, 0x2487, 0x248a, 0x248d, 0x2490, + 0x2493, 0x2496, 0x0007, 0x0026, 0x1403, 0x1409, 0x1411, 0x1419, + 0x1422, 0x142d, 0x1433, 0x0002, 0x03ba, 0x03d3, 0x0003, 0x03be, + 0x03c5, 0x03cc, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, + 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0026, 0xffff, 0x1439, 0x1447, 0x1455, 0x1463, 0x0003, + 0x03d7, 0x03de, 0x03e5, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, + 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + // Entry 1AA40 - 1AA7F + 0x2335, 0x0005, 0x0026, 0xffff, 0x1439, 0x1447, 0x1455, 0x1463, + 0x0002, 0x03ef, 0x040e, 0x0003, 0x03f3, 0x03fc, 0x0405, 0x0002, + 0x03f6, 0x03f9, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + 0x0002, 0x03ff, 0x0402, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0002, 0x0408, 0x040b, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0003, 0x0412, 0x041b, 0x0424, 0x0002, 0x0415, + 0x0418, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, + 0x041e, 0x0421, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + // Entry 1AA80 - 1AABF + 0x0002, 0x0427, 0x042a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0003, 0x043c, 0x0447, 0x0431, 0x0002, 0x0434, 0x0438, + 0x0002, 0x0026, 0x1471, 0x1497, 0x0002, 0x0026, 0x147e, 0x14a3, + 0x0002, 0x043f, 0x0443, 0x0002, 0x0015, 0x0194, 0x23d7, 0x0002, + 0x0026, 0x14b7, 0x14be, 0x0002, 0x044a, 0x044e, 0x0002, 0x0026, + 0x14c3, 0x14cc, 0x0002, 0x0026, 0x14c8, 0x14d1, 0x0004, 0x0460, + 0x045a, 0x0457, 0x045d, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, + 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x001e, 0x0206, 0x0004, + // Entry 1AAC0 - 1AAFF + 0x0471, 0x046b, 0x0468, 0x046e, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0482, 0x047c, 0x0479, 0x047f, 0x0001, 0x0026, 0x14d4, + 0x0001, 0x0026, 0x14d4, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0006, 0x048c, 0x0000, 0x0000, 0x0000, 0x04d7, 0x04de, + 0x0002, 0x048f, 0x04b3, 0x0003, 0x0493, 0x0000, 0x04a3, 0x000e, + 0x0026, 0x1512, 0x14e1, 0x14e9, 0x14f2, 0x14f9, 0x14ff, 0x1506, + 0x150d, 0x1519, 0x151f, 0x1524, 0x152a, 0x1532, 0x1535, 0x000e, + // Entry 1AB00 - 1AB3F + 0x0026, 0x1512, 0x14e1, 0x14e9, 0x14f2, 0x14f9, 0x14ff, 0x1506, + 0x150d, 0x1519, 0x151f, 0x1524, 0x152a, 0x1532, 0x1535, 0x0003, + 0x04b7, 0x0000, 0x04c7, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, + 0x14f2, 0x14f9, 0x14ff, 0x1506, 0x150d, 0x1519, 0x151f, 0x1524, + 0x152a, 0x1532, 0x1535, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, + 0x14f2, 0x14f9, 0x14ff, 0x1506, 0x150d, 0x1519, 0x151f, 0x1524, + 0x152a, 0x1532, 0x1535, 0x0001, 0x04d9, 0x0001, 0x04db, 0x0001, + 0x0000, 0x04ef, 0x0004, 0x04ec, 0x04e6, 0x04e3, 0x04e9, 0x0001, + // Entry 1AB40 - 1AB7F + 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0026, 0x1181, 0x0005, 0x04f5, 0x0000, 0x0000, 0x0000, + 0x055a, 0x0002, 0x04f8, 0x0529, 0x0003, 0x04fc, 0x050b, 0x051a, + 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, + 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, + 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, 0x24c0, 0x24cc, + // Entry 1AB80 - 1ABBF + 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x0003, 0x052d, 0x053c, + 0x054b, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, + 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, 0x24c0, + 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x0001, 0x055c, + 0x0001, 0x055e, 0x0001, 0x0025, 0x05c0, 0x0008, 0x056a, 0x0000, + // Entry 1ABC0 - 1ABFF + 0x0000, 0x0000, 0x05cf, 0x05d6, 0x0000, 0x9006, 0x0002, 0x056d, + 0x059e, 0x0003, 0x0571, 0x0580, 0x058f, 0x000d, 0x0026, 0xffff, + 0x153c, 0x1542, 0x1547, 0x154e, 0x1556, 0x155e, 0x1567, 0x156c, + 0x1571, 0x1576, 0x157c, 0x1586, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x000d, 0x0026, 0xffff, 0x1590, 0x159a, + 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x15e2, 0x15e8, 0x15f2, 0x15fa, + 0x1601, 0x1610, 0x0003, 0x05a2, 0x05b1, 0x05c0, 0x000d, 0x0026, + // Entry 1AC00 - 1AC3F + 0xffff, 0x153c, 0x1542, 0x1547, 0x154e, 0x1556, 0x155e, 0x1567, + 0x156c, 0x1571, 0x1576, 0x157c, 0x1586, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0026, 0xffff, 0x1590, + 0x159a, 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x15e2, 0x15e8, 0x15f2, + 0x15fa, 0x1601, 0x1610, 0x0001, 0x05d1, 0x0001, 0x05d3, 0x0001, + 0x0026, 0x161d, 0x0004, 0x05e4, 0x05de, 0x05db, 0x05e1, 0x0001, + 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + // Entry 1AC40 - 1AC7F + 0x0001, 0x0026, 0x1181, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x05f0, 0x0000, 0x0601, 0x0004, 0x05fe, 0x05f8, 0x05f5, + 0x05fb, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, 0x060f, 0x0609, + 0x0606, 0x060c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0618, + 0x0000, 0x0000, 0x0000, 0x067d, 0x0002, 0x061b, 0x064c, 0x0003, + 0x061f, 0x062e, 0x063d, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, + // Entry 1AC80 - 1ACBF + 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, + 0x1a0f, 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, + 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, + 0x0003, 0x0650, 0x065f, 0x066e, 0x000d, 0x0000, 0xffff, 0x19c9, + 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, + 0x1a0b, 0x1a0f, 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 1ACC0 - 1ACFF + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, + 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, + 0x1a16, 0x0001, 0x067f, 0x0001, 0x0681, 0x0001, 0x0000, 0x1a1d, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x068d, 0x0695, 0x0000, + 0x9006, 0x0001, 0x068f, 0x0001, 0x0691, 0x0002, 0x0000, 0x1a20, + 0x2290, 0x0004, 0x06a3, 0x069d, 0x069a, 0x06a0, 0x0001, 0x0001, + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + // Entry 1AD00 - 1AD3F + 0x0026, 0x1181, 0x0040, 0x06e7, 0x0000, 0x0000, 0x06ec, 0x0000, + 0x0000, 0x0703, 0x071a, 0x0731, 0x0748, 0x0000, 0x0000, 0x075f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0776, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x078f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0794, 0x0000, 0x0000, 0x079c, 0x0000, 0x0000, 0x07a4, + 0x0000, 0x0000, 0x07ac, 0x0000, 0x0000, 0x07b4, 0x0000, 0x0000, + 0x07bc, 0x0000, 0x0000, 0x07c4, 0x0000, 0x0000, 0x0000, 0x07cc, + 0x0000, 0x07d1, 0x0000, 0x0000, 0x07e3, 0x0000, 0x0000, 0x07f5, + // Entry 1AD40 - 1AD7F + 0x0000, 0x0000, 0x080b, 0x0001, 0x06e9, 0x0001, 0x0026, 0x162c, + 0x0003, 0x06f0, 0x06f3, 0x06f8, 0x0001, 0x0026, 0x1635, 0x0003, + 0x0026, 0x163a, 0x1647, 0x1650, 0x0002, 0x06fb, 0x06ff, 0x0002, + 0x0026, 0x165e, 0x165e, 0x0002, 0x0026, 0x166b, 0x166b, 0x0003, + 0x0707, 0x070a, 0x070f, 0x0001, 0x0026, 0x1678, 0x0003, 0x0026, + 0x1683, 0x1696, 0x16a5, 0x0002, 0x0712, 0x0716, 0x0002, 0x0026, + 0x16b9, 0x16b9, 0x0002, 0x0026, 0x16cc, 0x16cc, 0x0003, 0x071e, + 0x0721, 0x0726, 0x0001, 0x0026, 0x16df, 0x0003, 0x0026, 0x1683, + // Entry 1AD80 - 1ADBF + 0x1696, 0x16a5, 0x0002, 0x0729, 0x072d, 0x0002, 0x0026, 0x16b9, + 0x16b9, 0x0002, 0x0026, 0x16cc, 0x16cc, 0x0003, 0x0735, 0x0738, + 0x073d, 0x0001, 0x0026, 0x16df, 0x0003, 0x0026, 0x1683, 0x1696, + 0x16a5, 0x0002, 0x0740, 0x0744, 0x0002, 0x0026, 0x16b9, 0x16b9, + 0x0002, 0x0026, 0x16cc, 0x16cc, 0x0003, 0x074c, 0x074f, 0x0754, + 0x0001, 0x0026, 0x16ea, 0x0003, 0x0026, 0x16f1, 0x1700, 0x170d, + 0x0002, 0x0757, 0x075b, 0x0002, 0x0026, 0x172d, 0x171e, 0x0002, + 0x0026, 0x174c, 0x173d, 0x0003, 0x0763, 0x0766, 0x076b, 0x0001, + // Entry 1ADC0 - 1ADFF + 0x0026, 0x175c, 0x0003, 0x0026, 0x1761, 0x176e, 0x1779, 0x0002, + 0x076e, 0x0772, 0x0002, 0x0026, 0x1795, 0x1788, 0x0002, 0x0026, + 0x17b0, 0x17a3, 0x0003, 0x077a, 0x077d, 0x0784, 0x0001, 0x0026, + 0x17be, 0x0005, 0x0026, 0x17ce, 0x17d7, 0x17df, 0x17c2, 0x17e6, + 0x0002, 0x0787, 0x078b, 0x0002, 0x0026, 0x17fc, 0x17f0, 0x0002, + 0x0026, 0x1816, 0x180a, 0x0001, 0x0791, 0x0001, 0x0026, 0x1824, + 0x0002, 0x0000, 0x0797, 0x0003, 0x0026, 0x1834, 0x1843, 0x184f, + 0x0002, 0x0000, 0x079f, 0x0003, 0x0026, 0x1864, 0x1875, 0x1883, + // Entry 1AE00 - 1AE3F + 0x0002, 0x0000, 0x07a7, 0x0003, 0x0026, 0x189a, 0x18ab, 0x18b9, + 0x0002, 0x0000, 0x07af, 0x0003, 0x0026, 0x18d0, 0x18e2, 0x18f1, + 0x0002, 0x0000, 0x07b7, 0x0003, 0x0026, 0x1909, 0x191d, 0x192e, + 0x0002, 0x0000, 0x07bf, 0x0003, 0x0026, 0x1948, 0x1957, 0x1963, + 0x0002, 0x0000, 0x07c7, 0x0003, 0x0026, 0x1978, 0x1987, 0x1993, + 0x0001, 0x07ce, 0x0001, 0x0007, 0x07cc, 0x0003, 0x07d5, 0x0000, + 0x07d8, 0x0001, 0x0026, 0x19a8, 0x0002, 0x07db, 0x07df, 0x0002, + 0x0026, 0x19ad, 0x19ad, 0x0002, 0x0026, 0x19ba, 0x19ba, 0x0003, + // Entry 1AE40 - 1AE7F + 0x07e7, 0x0000, 0x07ea, 0x0001, 0x0026, 0x19c7, 0x0002, 0x07ed, + 0x07f1, 0x0002, 0x0026, 0x19dd, 0x19ce, 0x0002, 0x0026, 0x19fc, + 0x19ed, 0x0003, 0x07f9, 0x07fc, 0x0800, 0x0001, 0x0026, 0x1a0c, + 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, 0x0803, 0x0807, 0x0002, + 0x0026, 0x1a24, 0x1a14, 0x0002, 0x0026, 0x1a45, 0x1a35, 0x0001, + 0x080d, 0x0001, 0x0000, 0x1dc2, 0x0004, 0x0815, 0x081a, 0x081f, + 0x082a, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x24f5, 0x0003, 0x0026, + 0x1a56, 0x1a5f, 0x1a6d, 0x0002, 0x0000, 0x0822, 0x0002, 0x0000, + // Entry 1AE80 - 1AEBF + 0x0825, 0x0003, 0x0026, 0xffff, 0x1a7f, 0x1a91, 0x0002, 0x0a11, + 0x082d, 0x0003, 0x0831, 0x0971, 0x08d1, 0x009e, 0x0026, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b24, 0x1b74, 0x1bde, 0x1c13, 0x1c48, + 0x1c7d, 0x1cb5, 0x1cea, 0xffff, 0x1d80, 0x1db8, 0x1df9, 0x1e49, + 0x1e81, 0x1eb9, 0x1f0f, 0x1f86, 0x1fd6, 0x2026, 0x2076, 0x20a8, + 0xffff, 0xffff, 0x2105, 0xffff, 0x215a, 0xffff, 0x21ac, 0x21e1, + 0x221c, 0x2254, 0xffff, 0xffff, 0x22bd, 0x2304, 0x234e, 0xffff, + 0xffff, 0xffff, 0x23bf, 0xffff, 0x241f, 0x2472, 0xffff, 0x24bf, + // Entry 1AEC0 - 1AEFF + 0x250c, 0x255f, 0xffff, 0xffff, 0xffff, 0xffff, 0x25fe, 0xffff, + 0xffff, 0x2663, 0x26b6, 0xffff, 0xffff, 0x273f, 0x2792, 0x27d0, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2876, 0x28ae, + 0x28e6, 0x2927, 0x295f, 0xffff, 0xffff, 0x29f0, 0xffff, 0x2a3c, + 0xffff, 0xffff, 0x2aac, 0xffff, 0x2b53, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2bd7, 0xffff, 0xffff, 0xffff, 0x2c2a, 0x2c6b, 0xffff, + 0xffff, 0xffff, 0x2ccc, 0x2d19, 0x2d63, 0xffff, 0xffff, 0x2dd2, + 0x2e45, 0x2e86, 0x2eb2, 0xffff, 0xffff, 0x2f1d, 0x2f67, 0x2fa5, + // Entry 1AF00 - 1AF3F + 0xffff, 0x2ff9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x30de, + 0x3116, 0x3148, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3207, 0xffff, 0xffff, 0x3260, 0xffff, 0x32ab, 0xffff, + 0x32fb, 0x3342, 0x337d, 0xffff, 0x33d7, 0x3418, 0xffff, 0xffff, + 0xffff, 0x348b, 0x34c3, 0xffff, 0xffff, 0x1aa2, 0x1ba6, 0x1d1c, + 0x1d4b, 0xffff, 0xffff, 0x2b05, 0x3086, 0x009e, 0x0026, 0x1ace, + 0x1ade, 0x1af8, 0x1b0e, 0x1b3a, 0x1b80, 0x1beb, 0x1c20, 0x1c55, + 0x1c8b, 0x1cc2, 0x1cf6, 0xffff, 0x1d8e, 0x1dc9, 0x1e0f, 0x1e57, + // Entry 1AF40 - 1AF7F + 0x1e8f, 0x1ed1, 0x1f32, 0x1f9c, 0x1fec, 0x203c, 0x2082, 0x20b7, + 0x20e3, 0x20f3, 0x2118, 0x214c, 0x216c, 0x219e, 0x21b9, 0x21f0, + 0x222a, 0x2265, 0x2295, 0x22a9, 0x22d0, 0x2316, 0x235d, 0x2389, + 0x2394, 0x23ac, 0x23d4, 0x240c, 0x2436, 0x2487, 0xffff, 0x24d4, + 0x2523, 0x256c, 0x2594, 0x25aa, 0x25d0, 0x25e8, 0x260d, 0x2639, + 0x264f, 0x267a, 0x26cd, 0x271e, 0x2730, 0x2756, 0x27a2, 0x27da, + 0x27fc, 0x280b, 0x281f, 0x2830, 0x284a, 0x2860, 0x2884, 0x28bc, + 0x28f7, 0x2935, 0x297e, 0x29ca, 0x29dd, 0x2a00, 0x2a2e, 0x2a4d, + // Entry 1AF80 - 1AFBF + 0x2a7d, 0x2a98, 0x2ac5, 0x2b3a, 0x2b60, 0x2b88, 0x2b98, 0x2ba8, + 0x2bc0, 0x2bea, 0x2c1e, 0xffff, 0xffff, 0x2c3b, 0x2c77, 0x2c9d, + 0x2cad, 0x2cbe, 0x2ce1, 0x2d2d, 0x2d78, 0x2db0, 0x2dbc, 0x2deb, + 0x2e56, 0x2e90, 0x2ec4, 0x2ef6, 0x2f03, 0x2f31, 0x2f77, 0x2fb5, + 0x2fe3, 0x3017, 0x3061, 0x3079, 0xffff, 0x30c1, 0x30d1, 0x30ec, + 0x3122, 0x3158, 0x3186, 0x3195, 0x31ae, 0x31c5, 0x31d9, 0x31ea, + 0x31f5, 0x3213, 0x3239, 0x3249, 0x3270, 0x329e, 0x32bb, 0x32e9, + 0x330e, 0x3351, 0x3390, 0x33c4, 0x33e8, 0x3427, 0x3453, 0x345f, + // Entry 1AFC0 - 1AFFF + 0x3473, 0x3499, 0x34d8, 0x2709, 0x2e2b, 0x1aac, 0x1bb4, 0x1d27, + 0x1d58, 0xffff, 0x2a8d, 0x2b12, 0x3095, 0x009e, 0x0026, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b58, 0x1b94, 0x1c00, 0x1c35, 0x1c6a, + 0x1ca1, 0x1cd7, 0x1d0a, 0xffff, 0x1da4, 0x1de2, 0x1e2d, 0x1e6d, + 0x1ea5, 0x1ef1, 0x1f5d, 0x1fba, 0x200a, 0x205a, 0x2096, 0x20ce, + 0xffff, 0xffff, 0x2133, 0xffff, 0x2186, 0xffff, 0x21ce, 0x2207, + 0x2240, 0x227e, 0xffff, 0xffff, 0x22eb, 0x2330, 0x2374, 0xffff, + 0xffff, 0xffff, 0x23f1, 0xffff, 0x2455, 0x24a4, 0xffff, 0x24f1, + // Entry 1B000 - 1B03F + 0x2542, 0x2581, 0xffff, 0xffff, 0xffff, 0xffff, 0x2624, 0xffff, + 0xffff, 0x2699, 0x26ec, 0xffff, 0xffff, 0x2775, 0x27ba, 0x27ec, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x289a, 0x28d2, + 0x2910, 0x294b, 0x29a5, 0xffff, 0xffff, 0x2a18, 0xffff, 0x2a66, + 0xffff, 0xffff, 0x2ae6, 0xffff, 0x2b75, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2c05, 0xffff, 0xffff, 0xffff, 0x2c54, 0x2c8b, 0xffff, + 0xffff, 0xffff, 0x2cfe, 0x2d49, 0x2d95, 0xffff, 0xffff, 0x2e0c, + 0x2e6f, 0x2ea2, 0x2ede, 0xffff, 0xffff, 0x2f4d, 0x2f8f, 0x2fcd, + // Entry 1B040 - 1B07F + 0xffff, 0x303d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3102, + 0x3136, 0x3170, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3227, 0xffff, 0xffff, 0x3288, 0xffff, 0x32d3, 0xffff, + 0x3329, 0x3368, 0x33ab, 0xffff, 0x3401, 0x343e, 0xffff, 0xffff, + 0xffff, 0x34af, 0x34f5, 0xffff, 0xffff, 0x1abe, 0x1bca, 0x1d3a, + 0x1d6d, 0xffff, 0xffff, 0x2b27, 0x30ac, 0x0003, 0x0a15, 0x0a7b, + 0x0a48, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1B080 - 1B0BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1B0C0 - 1B0FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1B100 - 1B13F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, + 0xffff, 0x13e3, 0x0003, 0x0004, 0x0209, 0x079b, 0x0008, 0x000d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x004b, 0x0076, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0029, 0x0000, 0x003a, + 0x0003, 0x001f, 0x0024, 0x001a, 0x0001, 0x001c, 0x0001, 0x0027, + 0x0000, 0x0001, 0x0021, 0x0001, 0x0027, 0x0000, 0x0001, 0x0026, + 0x0001, 0x0027, 0x0000, 0x0004, 0x0037, 0x0031, 0x002e, 0x0034, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + // Entry 1B140 - 1B17F + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0048, 0x0042, 0x003f, + 0x0045, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0054, 0x0000, 0x0065, 0x0004, 0x0062, + 0x005c, 0x0059, 0x005f, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, + 0x0073, 0x006d, 0x006a, 0x0070, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 1B180 - 1B1BF + 0x0008, 0x007f, 0x00e4, 0x013b, 0x0170, 0x01b1, 0x01d6, 0x01e7, + 0x01f8, 0x0002, 0x0082, 0x00b3, 0x0003, 0x0086, 0x0095, 0x00a4, + 0x000d, 0x0027, 0xffff, 0x0003, 0x0007, 0x000d, 0x0014, 0x0018, + 0x001d, 0x0023, 0x0029, 0x002e, 0x0035, 0x003c, 0x0041, 0x000d, + 0x0000, 0xffff, 0x214e, 0x22e6, 0x247f, 0x2382, 0x24f9, 0x247f, + 0x2055, 0x228e, 0x247f, 0x22f0, 0x2481, 0x22ee, 0x000d, 0x0027, + 0xffff, 0x0046, 0x004e, 0x000d, 0x0056, 0x005f, 0x0069, 0x0023, + 0x0073, 0x007b, 0x008a, 0x009c, 0x00a4, 0x0003, 0x00b7, 0x00c6, + // Entry 1B1C0 - 1B1FF + 0x00d5, 0x000d, 0x0027, 0xffff, 0x0003, 0x0007, 0x000d, 0x0014, + 0x0018, 0x001d, 0x0023, 0x0029, 0x002e, 0x0035, 0x003c, 0x0041, + 0x000d, 0x0000, 0xffff, 0x214e, 0x22e6, 0x247f, 0x2382, 0x24f9, + 0x247f, 0x2055, 0x228e, 0x247f, 0x22f0, 0x2481, 0x22ee, 0x000d, + 0x0027, 0xffff, 0x0046, 0x004e, 0x000d, 0x0056, 0x005f, 0x0069, + 0x0023, 0x0073, 0x007b, 0x008a, 0x009c, 0x00a4, 0x0002, 0x00e7, + 0x0111, 0x0005, 0x00ed, 0x00f6, 0x0108, 0x0000, 0x00ff, 0x0007, + 0x0027, 0x00ac, 0x00b1, 0x00b6, 0x00bd, 0x00c3, 0x00c9, 0x00cf, + // Entry 1B200 - 1B23F + 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, 0x22f0, 0x2382, + 0x2481, 0x0007, 0x0016, 0x0361, 0x2b78, 0x2b7b, 0x2b7f, 0x2b83, + 0x2b87, 0x2b8a, 0x0007, 0x0027, 0x00d4, 0x00e2, 0x00ec, 0x00f7, + 0x0105, 0x0110, 0x011b, 0x0005, 0x0117, 0x0120, 0x0132, 0x0000, + 0x0129, 0x0007, 0x0027, 0x00ac, 0x00b1, 0x00b6, 0x00bd, 0x00c3, + 0x00c9, 0x00cf, 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, + 0x22f0, 0x2382, 0x2481, 0x0007, 0x0016, 0x0361, 0x2b78, 0x2b7b, + 0x2b7f, 0x2b83, 0x2b87, 0x2b8a, 0x0007, 0x0027, 0x00d4, 0x00e2, + // Entry 1B240 - 1B27F + 0x00ec, 0x00f7, 0x0105, 0x0110, 0x011b, 0x0002, 0x013e, 0x0157, + 0x0003, 0x0142, 0x0149, 0x0150, 0x0005, 0x0005, 0xffff, 0x070e, + 0x0711, 0x0714, 0x0717, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0027, 0xffff, 0x0128, 0x0134, 0x0140, + 0x014c, 0x0003, 0x015b, 0x0162, 0x0169, 0x0005, 0x0005, 0xffff, + 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0027, 0xffff, 0x0128, 0x0134, + 0x0140, 0x014c, 0x0002, 0x0173, 0x0192, 0x0003, 0x0177, 0x0180, + // Entry 1B280 - 1B2BF + 0x0189, 0x0002, 0x017a, 0x017d, 0x0001, 0x001c, 0x0494, 0x0001, + 0x001c, 0x0499, 0x0002, 0x0183, 0x0186, 0x0001, 0x0000, 0x1f9c, + 0x0001, 0x0000, 0x21ec, 0x0002, 0x018c, 0x018f, 0x0001, 0x001c, + 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x0196, 0x019f, 0x01a8, + 0x0002, 0x0199, 0x019c, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0002, 0x01a2, 0x01a5, 0x0001, 0x0000, 0x1f9c, 0x0001, + 0x0000, 0x21ec, 0x0002, 0x01ab, 0x01ae, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0003, 0x01c0, 0x01cb, 0x01b5, 0x0002, + // Entry 1B2C0 - 1B2FF + 0x01b8, 0x01bc, 0x0002, 0x0027, 0x0158, 0x0177, 0x0002, 0x0027, + 0x0167, 0x0183, 0x0002, 0x01c3, 0x01c7, 0x0002, 0x0027, 0x018c, + 0x0193, 0x0002, 0x0027, 0x018f, 0x0196, 0x0002, 0x01ce, 0x01d2, + 0x0002, 0x0027, 0x018c, 0x0193, 0x0002, 0x0027, 0x018f, 0x0196, + 0x0004, 0x01e4, 0x01de, 0x01db, 0x01e1, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, + 0x0860, 0x0004, 0x01f5, 0x01ef, 0x01ec, 0x01f2, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + // Entry 1B300 - 1B33F + 0x0000, 0x0546, 0x0004, 0x0206, 0x0200, 0x01fd, 0x0203, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0040, 0x024a, 0x0000, 0x0000, 0x024f, + 0x026e, 0x028d, 0x02ac, 0x02cb, 0x02ea, 0x0309, 0x0328, 0x0347, + 0x0366, 0x0389, 0x03ac, 0x0000, 0x0000, 0x0000, 0x03cf, 0x03f0, + 0x0411, 0x0000, 0x0000, 0x0000, 0x0432, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0437, 0x0453, 0x046f, 0x048b, 0x04a7, 0x04c3, + 0x04df, 0x04fb, 0x0517, 0x0533, 0x054f, 0x056b, 0x0587, 0x05a3, + // Entry 1B340 - 1B37F + 0x05bf, 0x05db, 0x05f7, 0x0613, 0x062f, 0x064b, 0x0667, 0x0000, + 0x0683, 0x0000, 0x0688, 0x06a6, 0x06c4, 0x06e2, 0x0700, 0x071e, + 0x073c, 0x075a, 0x0778, 0x0796, 0x0001, 0x024c, 0x0001, 0x0027, + 0x0199, 0x0003, 0x0253, 0x0256, 0x025b, 0x0001, 0x0027, 0x019d, + 0x0003, 0x0027, 0x01a4, 0x01ad, 0x01bc, 0x0002, 0x025e, 0x0266, + 0x0006, 0x0027, 0x0212, 0x01d4, 0xffff, 0x01d4, 0x01e9, 0x01fd, + 0x0006, 0x0027, 0x0261, 0x0226, 0xffff, 0x0226, 0x023a, 0x024d, + 0x0003, 0x0272, 0x0275, 0x027a, 0x0001, 0x000b, 0x0b8f, 0x0003, + // Entry 1B380 - 1B3BF + 0x0027, 0x01a4, 0x0274, 0x0280, 0x0002, 0x027d, 0x0285, 0x0006, + 0x0027, 0x0295, 0x0295, 0xffff, 0x02a6, 0x0295, 0x02b8, 0x0006, + 0x0027, 0x02db, 0x02ca, 0xffff, 0x02ca, 0x02db, 0x02eb, 0x0003, + 0x0291, 0x0294, 0x0299, 0x0001, 0x000b, 0x0b8f, 0x0003, 0x0027, + 0x01a4, 0x0274, 0x0280, 0x0002, 0x029c, 0x02a4, 0x0006, 0x0027, + 0x0306, 0x02fc, 0xffff, 0x02fc, 0x0306, 0x030f, 0x0006, 0x0027, + 0x0323, 0x0319, 0xffff, 0x0319, 0x0323, 0x032c, 0x0003, 0x02b0, + 0x02b3, 0x02b8, 0x0001, 0x0027, 0x0336, 0x0003, 0x0027, 0x033e, + // Entry 1B3C0 - 1B3FF + 0x0353, 0x0362, 0x0002, 0x02bb, 0x02c3, 0x0006, 0x0027, 0x037a, + 0x037a, 0xffff, 0x037a, 0x037a, 0x037a, 0x0006, 0x0027, 0x038f, + 0x038f, 0xffff, 0x038f, 0x038f, 0x038f, 0x0003, 0x02cf, 0x02d2, + 0x02d7, 0x0001, 0x0027, 0x03a3, 0x0003, 0x0027, 0x033e, 0x0353, + 0x0362, 0x0002, 0x02da, 0x02e2, 0x0006, 0x0027, 0x037a, 0x037a, + 0xffff, 0x037a, 0x037a, 0x037a, 0x0006, 0x0027, 0x038f, 0x038f, + 0xffff, 0x038f, 0x038f, 0x038f, 0x0003, 0x02ee, 0x02f1, 0x02f6, + 0x0001, 0x0027, 0x03a3, 0x0003, 0x0027, 0x033e, 0x0353, 0x0362, + // Entry 1B400 - 1B43F + 0x0002, 0x02f9, 0x0301, 0x0006, 0x0027, 0x03ab, 0x03ab, 0xffff, + 0x03ab, 0x03ab, 0x03ab, 0x0006, 0x0027, 0x03b2, 0x03b2, 0xffff, + 0x03b2, 0x03b2, 0x03b2, 0x0003, 0x030d, 0x0310, 0x0315, 0x0001, + 0x0027, 0x03b9, 0x0003, 0x0027, 0x03bd, 0x03cf, 0x03db, 0x0002, + 0x0318, 0x0320, 0x0006, 0x0027, 0x0402, 0x03f0, 0xffff, 0x03f0, + 0x03f0, 0x0402, 0x0006, 0x0027, 0x0424, 0x0413, 0xffff, 0x0413, + 0x0413, 0x0424, 0x0003, 0x032c, 0x032f, 0x0334, 0x0001, 0x0027, + 0x0434, 0x0003, 0x0027, 0x03bd, 0x03cf, 0x03db, 0x0002, 0x0337, + // Entry 1B440 - 1B47F + 0x033f, 0x0006, 0x0027, 0x0402, 0x03f0, 0xffff, 0x03f0, 0x03f0, + 0x0402, 0x0006, 0x0027, 0x0424, 0x0413, 0xffff, 0x0413, 0x0413, + 0x0424, 0x0003, 0x034b, 0x034e, 0x0353, 0x0001, 0x0027, 0x0434, + 0x0003, 0x0027, 0x03bd, 0x03cf, 0x03db, 0x0002, 0x0356, 0x035e, + 0x0006, 0x0027, 0x0442, 0x0438, 0xffff, 0x0438, 0x0438, 0x0442, + 0x0006, 0x0027, 0x0455, 0x044b, 0xffff, 0x044b, 0x044b, 0x0455, + 0x0004, 0x036b, 0x036e, 0x0373, 0x0386, 0x0001, 0x0027, 0x045e, + 0x0003, 0x0027, 0x0468, 0x0480, 0x0492, 0x0002, 0x0376, 0x037e, + // Entry 1B480 - 1B4BF + 0x0006, 0x0027, 0x04ad, 0x04ad, 0xffff, 0x04c4, 0x04dc, 0x04dc, + 0x0006, 0x0027, 0x04f4, 0x04f4, 0xffff, 0x050a, 0x0521, 0x0521, + 0x0001, 0x0027, 0x0538, 0x0004, 0x038e, 0x0391, 0x0396, 0x03a9, + 0x0001, 0x0027, 0x0546, 0x0003, 0x0027, 0x054c, 0x0560, 0x056e, + 0x0002, 0x0399, 0x03a1, 0x0006, 0x0027, 0x0585, 0x0585, 0xffff, + 0x0598, 0x0585, 0x0585, 0x0006, 0x0027, 0x05ac, 0x05ac, 0xffff, + 0x05ac, 0x05ac, 0x05ac, 0x0001, 0x0027, 0x0538, 0x0004, 0x03b1, + 0x03b4, 0x03b9, 0x03cc, 0x0001, 0x0027, 0x0546, 0x0003, 0x0027, + // Entry 1B4C0 - 1B4FF + 0x054c, 0x0560, 0x056e, 0x0002, 0x03bc, 0x03c4, 0x0006, 0x0027, + 0x05be, 0x05be, 0xffff, 0x05be, 0x05be, 0x05be, 0x0006, 0x0027, + 0x05c9, 0x05c9, 0xffff, 0x05c9, 0x05c9, 0x05c9, 0x0001, 0x0027, + 0x0538, 0x0003, 0x03d3, 0x03d6, 0x03dd, 0x0001, 0x0027, 0x05d4, + 0x0005, 0x0027, 0x05e3, 0x05e9, 0x05ef, 0x05d8, 0x05f8, 0x0002, + 0x03e0, 0x03e8, 0x0006, 0x0027, 0x0606, 0x0606, 0xffff, 0x0606, + 0x0606, 0x0606, 0x0006, 0x0027, 0x0617, 0x0617, 0xffff, 0x0617, + 0x0617, 0x0617, 0x0003, 0x03f4, 0x03f7, 0x03fe, 0x0001, 0x0027, + // Entry 1B500 - 1B53F + 0x05d4, 0x0005, 0x0027, 0x05e3, 0x05e9, 0x05ef, 0x05d8, 0x05f8, + 0x0002, 0x0401, 0x0409, 0x0006, 0x0027, 0x0606, 0x0606, 0xffff, + 0x0606, 0x0606, 0x0606, 0x0006, 0x0027, 0x0617, 0x0617, 0xffff, + 0x0617, 0x0617, 0x0617, 0x0003, 0x0415, 0x0418, 0x041f, 0x0001, + 0x0027, 0x05d4, 0x0005, 0x0027, 0x05e3, 0x05e9, 0x05ef, 0x05d8, + 0x05f8, 0x0002, 0x0422, 0x042a, 0x0006, 0x0027, 0x0627, 0x0627, + 0xffff, 0x0627, 0x0627, 0x0627, 0x0006, 0x0027, 0x0630, 0x0630, + 0xffff, 0x0630, 0x0630, 0x0630, 0x0001, 0x0434, 0x0001, 0x0027, + // Entry 1B540 - 1B57F + 0x0639, 0x0003, 0x0000, 0x043b, 0x0440, 0x0003, 0x0027, 0x064b, + 0x0661, 0x0671, 0x0002, 0x0443, 0x044b, 0x0006, 0x0027, 0x068a, + 0x068a, 0xffff, 0x06a5, 0x06c1, 0x06c1, 0x0006, 0x0027, 0x06dd, + 0x06dd, 0xffff, 0x0701, 0x0726, 0x0726, 0x0003, 0x0000, 0x0457, + 0x045c, 0x0003, 0x0027, 0x074b, 0x075e, 0x076b, 0x0002, 0x045f, + 0x0467, 0x0006, 0x0027, 0x0781, 0x0781, 0xffff, 0x0799, 0x07b2, + 0x07b2, 0x0006, 0x0027, 0x07cb, 0x07cb, 0xffff, 0x07eb, 0x080c, + 0x080c, 0x0003, 0x0000, 0x0473, 0x0478, 0x0003, 0x0027, 0x082d, + // Entry 1B580 - 1B5BF + 0x083f, 0x084b, 0x0002, 0x047b, 0x0483, 0x0006, 0x0027, 0x085d, + 0x085d, 0xffff, 0x0868, 0x0868, 0x0874, 0x0006, 0x0027, 0x0880, + 0x0880, 0xffff, 0x0892, 0x0892, 0x08a5, 0x0003, 0x0000, 0x048f, + 0x0494, 0x0003, 0x0027, 0x08b8, 0x08ca, 0x08d6, 0x0002, 0x0497, + 0x049f, 0x0006, 0x0027, 0x08eb, 0x08eb, 0xffff, 0x0902, 0x091a, + 0x091a, 0x0006, 0x0027, 0x0932, 0x0932, 0xffff, 0x0952, 0x0973, + 0x0973, 0x0003, 0x0000, 0x04ab, 0x04b0, 0x0003, 0x0027, 0x08b8, + 0x08ca, 0x08d6, 0x0002, 0x04b3, 0x04bb, 0x0006, 0x0027, 0x08eb, + // Entry 1B5C0 - 1B5FF + 0x08eb, 0xffff, 0x0902, 0x091a, 0x091a, 0x0006, 0x0027, 0x0932, + 0x0932, 0xffff, 0x0952, 0x0973, 0x0973, 0x0003, 0x0000, 0x04c7, + 0x04cc, 0x0003, 0x0027, 0x08b8, 0x08ca, 0x0994, 0x0002, 0x04cf, + 0x04d7, 0x0006, 0x0027, 0x09a6, 0x09a6, 0xffff, 0x09a6, 0x09a6, + 0x09a6, 0x0006, 0x0027, 0x09b0, 0x09b0, 0xffff, 0x09b0, 0x09b0, + 0x09b0, 0x0003, 0x0000, 0x04e3, 0x04e8, 0x0003, 0x0027, 0x09c1, + 0x09d6, 0x09e5, 0x0002, 0x04eb, 0x04f3, 0x0006, 0x0027, 0x09fd, + 0x09fd, 0xffff, 0x0a16, 0x0a30, 0x0a30, 0x0006, 0x0027, 0x0a4a, + // Entry 1B600 - 1B63F + 0x0a4a, 0xffff, 0x0a6b, 0x0a8d, 0x0a8d, 0x0003, 0x0000, 0x04ff, + 0x0504, 0x0003, 0x0027, 0x09c1, 0x09d6, 0x09e5, 0x0002, 0x0507, + 0x050f, 0x0006, 0x0027, 0x09fd, 0x09fd, 0xffff, 0x0a16, 0x0a30, + 0x0a30, 0x0006, 0x0027, 0x0a4a, 0x0a4a, 0xffff, 0x0a6b, 0x0a8d, + 0x0a8d, 0x0003, 0x0000, 0x051b, 0x0520, 0x0003, 0x0027, 0x09c1, + 0x09d6, 0x0aaf, 0x0002, 0x0523, 0x052b, 0x0006, 0x0027, 0x0ad1, + 0x0ac4, 0xffff, 0x0ac4, 0x0ac4, 0x0ad1, 0x0006, 0x0027, 0x0af1, + 0x0add, 0xffff, 0x0add, 0x0add, 0x0af1, 0x0003, 0x0000, 0x0537, + // Entry 1B640 - 1B67F + 0x053c, 0x0003, 0x0027, 0x0b04, 0x0b1c, 0x0b2e, 0x0002, 0x053f, + 0x0547, 0x0006, 0x0027, 0x0b49, 0x0b49, 0xffff, 0x0b66, 0x0b84, + 0x0b84, 0x0006, 0x0027, 0x0ba2, 0x0ba2, 0xffff, 0x0bc6, 0x0beb, + 0x0beb, 0x0003, 0x0000, 0x0553, 0x0558, 0x0003, 0x0027, 0x0c10, + 0x0c25, 0x0c34, 0x0002, 0x055b, 0x0563, 0x0006, 0x0027, 0x0b49, + 0x0b49, 0xffff, 0x0b66, 0x0b84, 0x0b84, 0x0006, 0x0027, 0x0ba2, + 0x0ba2, 0xffff, 0x0bc6, 0x0beb, 0x0beb, 0x0003, 0x0000, 0x056f, + 0x0574, 0x0003, 0x0027, 0x0c10, 0x0c25, 0x0c4c, 0x0002, 0x0577, + // Entry 1B680 - 1B6BF + 0x057f, 0x0006, 0x0027, 0x0c80, 0x0c60, 0xffff, 0x0c60, 0x0c60, + 0x0c70, 0x0006, 0x0027, 0x0cbd, 0x0c8f, 0xffff, 0x0c8f, 0x0c8f, + 0x0ca6, 0x0003, 0x0000, 0x058b, 0x0590, 0x0003, 0x0027, 0x0cd3, + 0x0ceb, 0x0cfd, 0x0002, 0x0593, 0x059b, 0x0006, 0x0027, 0x0d18, + 0x0d18, 0xffff, 0x0d35, 0x0d53, 0x0d53, 0x0006, 0x0027, 0x0d71, + 0x0d71, 0xffff, 0x0d92, 0x0db4, 0x0db4, 0x0003, 0x0000, 0x05a7, + 0x05ac, 0x0003, 0x0027, 0x0dd6, 0x0dea, 0x0df8, 0x0002, 0x05af, + 0x05b7, 0x0006, 0x0027, 0x0d18, 0x0d18, 0xffff, 0x0d35, 0x0d53, + // Entry 1B6C0 - 1B6FF + 0x0d53, 0x0006, 0x0027, 0x0d71, 0x0d71, 0xffff, 0x0d92, 0x0db4, + 0x0db4, 0x0003, 0x0000, 0x05c3, 0x05c8, 0x0003, 0x0027, 0x0dd6, + 0x0dea, 0x0e0f, 0x0002, 0x05cb, 0x05d3, 0x0006, 0x0027, 0x0e23, + 0x0e23, 0xffff, 0x0e33, 0x0e33, 0x0e44, 0x0006, 0x0027, 0x0e55, + 0x0e55, 0xffff, 0x0e6c, 0x0e6c, 0x0e84, 0x0003, 0x0000, 0x05df, + 0x05e4, 0x0003, 0x0027, 0x0e9c, 0x0eaf, 0x0ebc, 0x0002, 0x05e7, + 0x05ef, 0x0006, 0x0027, 0x0ed2, 0x0ed2, 0xffff, 0x0eea, 0x0f03, + 0x0f03, 0x0006, 0x0027, 0x0f1c, 0x0f1c, 0xffff, 0x0f3d, 0x0f5f, + // Entry 1B700 - 1B73F + 0x0f5f, 0x0003, 0x0000, 0x05fb, 0x0600, 0x0003, 0x0027, 0x0e9c, + 0x0eaf, 0x0ebc, 0x0002, 0x0603, 0x060b, 0x0006, 0x0027, 0x0ed2, + 0x0ed2, 0xffff, 0x0eea, 0x0f03, 0x0f03, 0x0006, 0x0027, 0x0f1c, + 0x0f1c, 0xffff, 0x0f3d, 0x0f5f, 0x0f5f, 0x0003, 0x0000, 0x0617, + 0x061c, 0x0003, 0x0027, 0x0e9c, 0x0eaf, 0x0f81, 0x0002, 0x061f, + 0x0627, 0x0006, 0x0027, 0x0f94, 0x0f94, 0xffff, 0x0f94, 0x0f94, + 0x0f94, 0x0006, 0x0027, 0x0f9f, 0x0f9f, 0xffff, 0x0f9f, 0x0f9f, + 0x0f9f, 0x0003, 0x0000, 0x0633, 0x0638, 0x0003, 0x0027, 0x0fb1, + // Entry 1B740 - 1B77F + 0x0fc6, 0x0fd5, 0x0002, 0x063b, 0x0643, 0x0006, 0x0027, 0x0fed, + 0x0fed, 0xffff, 0x1007, 0x1022, 0x1022, 0x0006, 0x0027, 0x103d, + 0x103d, 0xffff, 0x1060, 0x1084, 0x1084, 0x0003, 0x0000, 0x064f, + 0x0654, 0x0003, 0x0027, 0x10a8, 0x10bb, 0x10c8, 0x0002, 0x0657, + 0x065f, 0x0006, 0x0027, 0x0fed, 0x0fed, 0xffff, 0x1007, 0x1022, + 0x1022, 0x0006, 0x0027, 0x103d, 0x103d, 0xffff, 0x1060, 0x1084, + 0x1084, 0x0003, 0x0000, 0x066b, 0x0670, 0x0003, 0x0027, 0x10de, + 0x10f0, 0x10fc, 0x0002, 0x0673, 0x067b, 0x0006, 0x0027, 0x110e, + // Entry 1B780 - 1B7BF + 0x110e, 0xffff, 0x111b, 0x111b, 0x110e, 0x0006, 0x0027, 0x1129, + 0x1129, 0xffff, 0x113d, 0x113d, 0x1129, 0x0001, 0x0685, 0x0001, + 0x001e, 0x002c, 0x0003, 0x068c, 0x068f, 0x0693, 0x0001, 0x0027, + 0x1152, 0x0002, 0x0027, 0xffff, 0x1157, 0x0002, 0x0696, 0x069e, + 0x0006, 0x0027, 0x1163, 0x1163, 0xffff, 0x1163, 0x117f, 0x119d, + 0x0006, 0x0027, 0x11bc, 0x11bc, 0xffff, 0x11bc, 0x11d7, 0x11f4, + 0x0003, 0x06aa, 0x06ad, 0x06b1, 0x0001, 0x0027, 0x1212, 0x0002, + 0x0027, 0xffff, 0x1157, 0x0002, 0x06b4, 0x06bc, 0x0006, 0x0027, + // Entry 1B7C0 - 1B7FF + 0x1217, 0x1217, 0xffff, 0x1217, 0x1229, 0x123d, 0x0006, 0x0027, + 0x1252, 0x1252, 0xffff, 0x1252, 0x1263, 0x1276, 0x0003, 0x06c8, + 0x06cb, 0x06cf, 0x0001, 0x0000, 0x2010, 0x0002, 0x0027, 0xffff, + 0x1157, 0x0002, 0x06d2, 0x06da, 0x0006, 0x0027, 0x128a, 0x128a, + 0xffff, 0x128a, 0x128a, 0x128a, 0x0006, 0x0027, 0x1291, 0x1291, + 0xffff, 0x1291, 0x1291, 0x1291, 0x0003, 0x06e6, 0x06e9, 0x06ed, + 0x0001, 0x0027, 0x1298, 0x0002, 0x0027, 0xffff, 0x12a2, 0x0002, + 0x06f0, 0x06f8, 0x0006, 0x0027, 0x12b3, 0x12b3, 0xffff, 0x12b3, + // Entry 1B800 - 1B83F + 0x12b3, 0x12b3, 0x0006, 0x0027, 0x12ca, 0x12ca, 0xffff, 0x12ca, + 0x12ca, 0x12ca, 0x0003, 0x0704, 0x0707, 0x070b, 0x0001, 0x0027, + 0x12e0, 0x0002, 0x0027, 0xffff, 0x12a2, 0x0002, 0x070e, 0x0716, + 0x0006, 0x0027, 0x12e7, 0x12e7, 0xffff, 0x12e7, 0x12e7, 0x12e7, + 0x0006, 0x0027, 0x12fb, 0x12fb, 0xffff, 0x12fb, 0x12fb, 0x12fb, + 0x0003, 0x0722, 0x0725, 0x0729, 0x0001, 0x0000, 0x1f96, 0x0002, + 0x0027, 0xffff, 0x12a2, 0x0002, 0x072c, 0x0734, 0x0006, 0x0027, + 0x130e, 0x130e, 0xffff, 0x130e, 0x130e, 0x130e, 0x0006, 0x0027, + // Entry 1B840 - 1B87F + 0x1315, 0x1315, 0xffff, 0x1315, 0x1315, 0x1315, 0x0003, 0x0740, + 0x0743, 0x0747, 0x0001, 0x0027, 0x131c, 0x0002, 0x0027, 0xffff, + 0x1324, 0x0002, 0x074a, 0x0752, 0x0006, 0x0027, 0x132a, 0x132a, + 0xffff, 0x133f, 0x133f, 0x132a, 0x0006, 0x0027, 0x1355, 0x1355, + 0xffff, 0x1369, 0x1369, 0x1355, 0x0003, 0x075e, 0x0761, 0x0765, + 0x0001, 0x0027, 0x137e, 0x0002, 0x0027, 0xffff, 0x1324, 0x0002, + 0x0768, 0x0770, 0x0006, 0x0027, 0x1384, 0x1384, 0xffff, 0x1397, + 0x1397, 0x1384, 0x0006, 0x0027, 0x13ab, 0x13ab, 0xffff, 0x13bd, + // Entry 1B880 - 1B8BF + 0x13bd, 0x13ab, 0x0003, 0x077c, 0x077f, 0x0783, 0x0001, 0x0000, + 0x2002, 0x0002, 0x0027, 0xffff, 0x1324, 0x0002, 0x0786, 0x078e, + 0x0006, 0x0026, 0x00bf, 0x00bf, 0xffff, 0x00bf, 0x00bf, 0x00bf, + 0x0006, 0x0000, 0x1dbb, 0x1dbb, 0xffff, 0x1dbb, 0x1dbb, 0x1dbb, + 0x0001, 0x0798, 0x0001, 0x0027, 0x13d0, 0x0004, 0x07a0, 0x07a5, + 0x07aa, 0x07bd, 0x0003, 0x0000, 0x1dc7, 0x24fd, 0x2504, 0x0003, + 0x0000, 0x1de0, 0x2508, 0x23d0, 0x0002, 0x07b5, 0x07ad, 0x0002, + 0x0000, 0x07b0, 0x0003, 0x0027, 0xffff, 0x13da, 0x13f8, 0x0002, + // Entry 1B8C0 - 1B8FF + 0x0000, 0x07b8, 0x0003, 0x0027, 0xffff, 0x13f4, 0x1416, 0x0002, + 0x09a4, 0x07c0, 0x0003, 0x07c4, 0x0904, 0x0864, 0x009e, 0x0027, + 0xffff, 0xffff, 0xffff, 0xffff, 0x14af, 0x150c, 0x1578, 0x15c3, + 0x15ff, 0x1641, 0x1689, 0x16e3, 0x1719, 0x17b2, 0x17f4, 0x1845, + 0x18ae, 0x18f9, 0x1944, 0x199e, 0x1a13, 0x1a79, 0x1adc, 0x1b36, + 0x1b75, 0xffff, 0xffff, 0x1be7, 0xffff, 0x1c40, 0xffff, 0x1cb2, + 0x1ceb, 0x1d24, 0x1d60, 0xffff, 0xffff, 0x1dc9, 0x1e0e, 0x1e5f, + 0xffff, 0xffff, 0xffff, 0x1edd, 0xffff, 0x1f41, 0x1f8f, 0xffff, + // Entry 1B900 - 1B93F + 0x2004, 0x205b, 0x20bb, 0xffff, 0xffff, 0xffff, 0xffff, 0x2159, + 0xffff, 0xffff, 0x21c1, 0x222a, 0xffff, 0xffff, 0x22d5, 0x2329, + 0x2368, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2427, + 0x246f, 0x24a8, 0x24e1, 0x2529, 0xffff, 0xffff, 0x25cf, 0xffff, + 0x261b, 0xffff, 0xffff, 0x2698, 0xffff, 0x2724, 0xffff, 0xffff, + 0xffff, 0xffff, 0x27b5, 0xffff, 0x281e, 0x288d, 0x290b, 0x2950, + 0xffff, 0xffff, 0xffff, 0x29aa, 0x2a04, 0x2a5e, 0xffff, 0xffff, + 0x2acd, 0x2b50, 0x2b95, 0x2bc5, 0xffff, 0xffff, 0x2c3a, 0x2c76, + // Entry 1B940 - 1B97F + 0x2cb2, 0xffff, 0x2d37, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2e31, 0x2e70, 0x2ea9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2f65, 0xffff, 0xffff, 0x2fcc, 0xffff, 0x300b, + 0xffff, 0x3079, 0x30af, 0x3115, 0xffff, 0x3160, 0x31a5, 0xffff, + 0xffff, 0xffff, 0x3221, 0x325d, 0xffff, 0xffff, 0x141b, 0x1542, + 0x1749, 0x177c, 0xffff, 0xffff, 0x26d7, 0x2dd0, 0x009e, 0x0027, + 0x144b, 0x1460, 0x1474, 0x148c, 0x14c6, 0x1516, 0x1589, 0x15cf, + 0x160d, 0x1651, 0x169f, 0x16ed, 0x1721, 0x17c0, 0x1807, 0x1860, + // Entry 1B980 - 1B9BF + 0x18bf, 0x190a, 0x195a, 0x19bd, 0x1a2d, 0x1a92, 0x1af2, 0x1b43, + 0x1b89, 0x1bc9, 0x1bd9, 0x1bf5, 0x1c29, 0x1c4e, 0x1c96, 0x1cbd, + 0x1cf6, 0x1d30, 0x1d6e, 0x1da2, 0x1db7, 0x1dd8, 0x1e1f, 0x1e69, + 0x1e95, 0x1ea9, 0x1eca, 0x1ef2, 0x1f34, 0x1f53, 0x1fa5, 0x1fe9, + 0x2019, 0x2073, 0x20c6, 0x20f4, 0x210a, 0x2136, 0x214d, 0x2168, + 0x219e, 0x21ae, 0x21dc, 0x2244, 0x22a7, 0x22c7, 0x22e9, 0x2336, + 0x2370, 0x2398, 0x23b3, 0x23ca, 0x23db, 0x23f2, 0x240d, 0x2437, + 0x247a, 0x24b3, 0x24f1, 0x2546, 0x2598, 0x25b4, 0x25dd, 0x2611, + // Entry 1B9C0 - 1B9FF + 0x262a, 0x2660, 0x2683, 0x26a5, 0x270d, 0x2730, 0x2760, 0x2770, + 0x2787, 0x27a0, 0x27c9, 0x2809, 0x283b, 0x28af, 0x291a, 0x295b, + 0x2989, 0x2995, 0x299f, 0x29c0, 0x2a1a, 0x2a72, 0x2ab2, 0x2aba, + 0x2ae5, 0x2b5f, 0x2b9d, 0x2bd7, 0x2c13, 0x2c25, 0x2c46, 0x2c82, + 0x2cce, 0x2d1e, 0x2d53, 0x2da3, 0x2db7, 0x2dc3, 0x2e0f, 0x2e1b, + 0x2e3e, 0x2e7b, 0x2eb3, 0x2edf, 0x2eef, 0x2f0c, 0x2f22, 0x2f37, + 0x2f43, 0x2f57, 0x2f70, 0x2f9e, 0x2fb7, 0x2fd6, 0x3002, 0x3024, + 0x306e, 0x3083, 0x30c9, 0x3121, 0x3151, 0x316f, 0x31b2, 0x31e4, + // Entry 1BA00 - 1BA3F + 0x31f9, 0x3209, 0x322d, 0x326e, 0x2290, 0x2b2d, 0x1423, 0x154c, + 0x1752, 0x1786, 0x1c82, 0x2674, 0x26e1, 0x2ddd, 0x009e, 0x0027, + 0xffff, 0xffff, 0xffff, 0xffff, 0x14eb, 0x152e, 0x15a8, 0x15e9, + 0x1629, 0x166f, 0x16c3, 0x1705, 0x1737, 0x17dc, 0x1828, 0x1889, + 0x18de, 0x1929, 0x197e, 0x19ea, 0x1a55, 0x1ab9, 0x1b16, 0x1b5e, + 0x1bab, 0xffff, 0xffff, 0x1c11, 0xffff, 0x1c6a, 0xffff, 0x1cd6, + 0x1d0f, 0x1d4a, 0x1d8a, 0xffff, 0xffff, 0x1df5, 0x1e3e, 0x1e81, + 0xffff, 0xffff, 0xffff, 0x1f15, 0xffff, 0x1f73, 0x1fc9, 0xffff, + // Entry 1BA40 - 1BA7F + 0x203c, 0x2099, 0x20df, 0xffff, 0xffff, 0xffff, 0xffff, 0x2185, + 0xffff, 0xffff, 0x2205, 0x226c, 0xffff, 0xffff, 0x230b, 0x2351, + 0x2386, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2455, + 0x2493, 0x24cc, 0x250f, 0x2571, 0xffff, 0xffff, 0x25f9, 0xffff, + 0x2647, 0xffff, 0xffff, 0x26c0, 0xffff, 0x274a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x27eb, 0xffff, 0x2866, 0x28df, 0x2937, 0x2974, + 0xffff, 0xffff, 0xffff, 0x29e4, 0x2a3e, 0x2a94, 0xffff, 0xffff, + 0x2b0b, 0x2b7c, 0x2bb3, 0x2bf7, 0xffff, 0xffff, 0x2c60, 0x2c9c, + // Entry 1BA80 - 1BABF + 0x2cf8, 0xffff, 0x2d7d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2e59, 0x2e94, 0x2ecb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2f89, 0xffff, 0xffff, 0x2fee, 0xffff, 0x304b, + 0xffff, 0x309b, 0x30f1, 0x313b, 0xffff, 0x318c, 0x31cd, 0xffff, + 0xffff, 0xffff, 0x3247, 0x328d, 0xffff, 0xffff, 0x1439, 0x1564, + 0x1769, 0x179e, 0xffff, 0xffff, 0x26f9, 0x2df8, 0x0003, 0x09a8, + 0x0a17, 0x09db, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1BAC0 - 1BAFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1BB00 - 1BB3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2790, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1BB40 - 1BB7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x01ff, 0x059f, + 0x0012, 0x0017, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, + 0x004b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01cf, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9006, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0029, 0x0000, 0x003a, 0x0004, 0x0037, 0x0031, + // Entry 1BB80 - 1BBBF + 0x002e, 0x0034, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0004, 0x0048, + 0x0042, 0x003f, 0x0045, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0054, 0x00b9, 0x0110, 0x0145, 0x0186, 0x019c, 0x01ad, 0x01be, + 0x0002, 0x0057, 0x0088, 0x0003, 0x005b, 0x006a, 0x0079, 0x000d, + 0x0028, 0xffff, 0x0000, 0x0005, 0x000b, 0x0011, 0x0016, 0x001c, + 0x0022, 0x0027, 0x002d, 0x0032, 0x0038, 0x003d, 0x000d, 0x0000, + // Entry 1BBC0 - 1BBFF + 0xffff, 0x22e6, 0x2281, 0x247f, 0x2281, 0x24fb, 0x2511, 0x2055, + 0x228e, 0x2481, 0x22f0, 0x2481, 0x22f0, 0x000d, 0x0028, 0xffff, + 0x0043, 0x0054, 0x0062, 0x006e, 0x007c, 0x008b, 0x0099, 0x00a5, + 0x00b4, 0x00c3, 0x00d1, 0x00e0, 0x0003, 0x008c, 0x009b, 0x00aa, + 0x000d, 0x0028, 0xffff, 0x0000, 0x0005, 0x000b, 0x0011, 0x0016, + 0x001c, 0x0022, 0x0027, 0x002d, 0x0032, 0x0038, 0x003d, 0x000d, + 0x0000, 0xffff, 0x22e6, 0x2281, 0x247f, 0x2281, 0x24fb, 0x2511, + 0x2055, 0x228e, 0x2481, 0x22f0, 0x2481, 0x22f0, 0x000d, 0x0028, + // Entry 1BC00 - 1BC3F + 0xffff, 0x00f0, 0x00fe, 0x0109, 0x0112, 0x011d, 0x0129, 0x0137, + 0x0143, 0x0150, 0x015d, 0x0169, 0x0176, 0x0002, 0x00bc, 0x00e6, + 0x0005, 0x00c2, 0x00cb, 0x00dd, 0x0000, 0x00d4, 0x0007, 0x0028, + 0x0184, 0x0188, 0x018c, 0x0190, 0x0194, 0x0198, 0x019c, 0x0007, + 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, 0x2382, 0x19c7, 0x2481, + 0x0007, 0x0028, 0x01a0, 0x01a4, 0x01a7, 0x01ab, 0x01ae, 0x01b1, + 0x01b4, 0x0007, 0x0028, 0x01b7, 0x01c4, 0x01cc, 0x01d5, 0x01df, + 0x01e9, 0x01f2, 0x0005, 0x00ec, 0x00f5, 0x0107, 0x0000, 0x00fe, + // Entry 1BC40 - 1BC7F + 0x0007, 0x0028, 0x0184, 0x0188, 0x018c, 0x0190, 0x0194, 0x0198, + 0x019c, 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, 0x2382, + 0x19c7, 0x2481, 0x0007, 0x0028, 0x01a0, 0x01a4, 0x01a7, 0x01ab, + 0x01ae, 0x01b1, 0x01b4, 0x0007, 0x0028, 0x01b7, 0x01c4, 0x01cc, + 0x01d5, 0x01df, 0x01e9, 0x01f2, 0x0002, 0x0113, 0x012c, 0x0003, + 0x0117, 0x011e, 0x0125, 0x0005, 0x0028, 0xffff, 0x01fe, 0x0201, + 0x0204, 0x0207, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0028, 0xffff, 0x020a, 0x0217, 0x0224, 0x0230, + // Entry 1BC80 - 1BCBF + 0x0003, 0x0130, 0x0137, 0x013e, 0x0005, 0x0028, 0xffff, 0x01fe, + 0x0201, 0x0204, 0x0207, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0028, 0xffff, 0x020a, 0x0217, 0x0224, + 0x0230, 0x0002, 0x0148, 0x0167, 0x0003, 0x014c, 0x0155, 0x015e, + 0x0002, 0x014f, 0x0152, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, + 0x2006, 0x0002, 0x0158, 0x015b, 0x0001, 0x0000, 0x1f9a, 0x0001, + 0x0000, 0x2006, 0x0002, 0x0161, 0x0164, 0x0001, 0x0000, 0x1f9a, + 0x0001, 0x0000, 0x2006, 0x0003, 0x016b, 0x0174, 0x017d, 0x0002, + // Entry 1BCC0 - 1BCFF + 0x016e, 0x0171, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, 0x2006, + 0x0002, 0x0177, 0x017a, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, + 0x2006, 0x0002, 0x0180, 0x0183, 0x0001, 0x0000, 0x1f9a, 0x0001, + 0x0000, 0x2006, 0x0003, 0x0190, 0x0196, 0x018a, 0x0001, 0x018c, + 0x0002, 0x0028, 0x023d, 0x024a, 0x0001, 0x0192, 0x0002, 0x0027, + 0x018c, 0x0193, 0x0001, 0x0198, 0x0002, 0x0000, 0x223e, 0x2382, + 0x0004, 0x01aa, 0x01a4, 0x01a1, 0x01a7, 0x0001, 0x0028, 0x025e, + 0x0001, 0x0028, 0x0271, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, + // Entry 1BD00 - 1BD3F + 0x0860, 0x0004, 0x01bb, 0x01b5, 0x01b2, 0x01b8, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x01cc, 0x01c6, 0x01c3, 0x01c9, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x01d8, 0x0000, 0x0000, 0x01ee, 0x0003, 0x01e2, 0x01e8, 0x01dc, + 0x0001, 0x01de, 0x0002, 0x0028, 0x027e, 0x028e, 0x0001, 0x01e4, + 0x0002, 0x0028, 0x0297, 0x028e, 0x0001, 0x01ea, 0x0002, 0x0028, + // Entry 1BD40 - 1BD7F + 0x0297, 0x028e, 0x0004, 0x01fc, 0x01f6, 0x01f3, 0x01f9, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0040, 0x0240, 0x0000, 0x0000, 0x0245, + 0x0263, 0x0281, 0x029f, 0x02bc, 0x02d9, 0x02f6, 0x0313, 0x0330, + 0x034d, 0x036a, 0x0387, 0x0000, 0x0000, 0x0000, 0x03a4, 0x03c4, + 0x03e4, 0x0000, 0x0000, 0x0000, 0x0404, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0409, 0x0411, 0x0419, 0x0421, 0x0429, 0x0431, + 0x0439, 0x0441, 0x0449, 0x0451, 0x0459, 0x0461, 0x0469, 0x0471, + // Entry 1BD80 - 1BDBF + 0x0479, 0x0481, 0x0489, 0x0491, 0x0499, 0x04a1, 0x04a9, 0x0000, + 0x04b1, 0x0000, 0x04b6, 0x04ce, 0x04e6, 0x04fe, 0x0516, 0x052e, + 0x0546, 0x0562, 0x057e, 0x059a, 0x0001, 0x0242, 0x0001, 0x0028, + 0x029e, 0x0003, 0x0249, 0x024c, 0x0252, 0x0001, 0x0028, 0x02a3, + 0x0004, 0x0028, 0x02bb, 0x02c5, 0x02d1, 0x02ac, 0x0002, 0x0255, + 0x025c, 0x0005, 0x0028, 0x0315, 0x02e2, 0xffff, 0x02e2, 0x02f9, + 0x0005, 0x0028, 0x035d, 0x032b, 0xffff, 0x032b, 0x0341, 0x0003, + 0x0267, 0x026a, 0x0270, 0x0001, 0x0028, 0x0372, 0x0004, 0x0028, + // Entry 1BDC0 - 1BDFF + 0x02bb, 0x02c5, 0x02d1, 0x02ac, 0x0002, 0x0273, 0x027a, 0x0005, + 0x0028, 0x0386, 0x0378, 0xffff, 0x0378, 0x0386, 0x0005, 0x0028, + 0x03a0, 0x0393, 0xffff, 0x0393, 0x03a0, 0x0003, 0x0285, 0x0288, + 0x028e, 0x0001, 0x000b, 0x0b8f, 0x0004, 0x0028, 0x03b6, 0x03be, + 0x03c5, 0x03ac, 0x0002, 0x0291, 0x0298, 0x0005, 0x0027, 0x0306, + 0x02fc, 0xffff, 0x02fc, 0x0306, 0x0005, 0x0027, 0x0323, 0x0319, + 0xffff, 0x0319, 0x0323, 0x0003, 0x02a3, 0x02a6, 0x02ab, 0x0001, + 0x0028, 0x03d1, 0x0003, 0x0028, 0x03da, 0x03f1, 0x0401, 0x0002, + // Entry 1BE00 - 1BE3F + 0x02ae, 0x02b5, 0x0005, 0x0028, 0x0441, 0x0412, 0xffff, 0x0412, + 0x0429, 0x0005, 0x0028, 0x0486, 0x0457, 0xffff, 0x0457, 0x046e, + 0x0003, 0x02c0, 0x02c3, 0x02c8, 0x0001, 0x0028, 0x049c, 0x0003, + 0x0028, 0x04a3, 0x04b7, 0x04c5, 0x0002, 0x02cb, 0x02d2, 0x0005, + 0x0028, 0x04e3, 0x04d4, 0xffff, 0x04d4, 0x04e3, 0x0005, 0x0028, + 0x04ff, 0x04f1, 0xffff, 0x04f1, 0x04ff, 0x0003, 0x02dd, 0x02e0, + 0x02e5, 0x0001, 0x0028, 0x050c, 0x0003, 0x0028, 0x050f, 0x0516, + 0x0520, 0x0002, 0x02e8, 0x02ef, 0x0005, 0x0028, 0x0528, 0x0528, + // Entry 1BE40 - 1BE7F + 0xffff, 0x0528, 0x0528, 0x0005, 0x0028, 0x0530, 0x0530, 0xffff, + 0x0530, 0x0530, 0x0003, 0x02fa, 0x02fd, 0x0302, 0x0001, 0x0028, + 0x0538, 0x0003, 0x0028, 0x053e, 0x0552, 0x055f, 0x0002, 0x0305, + 0x030c, 0x0005, 0x0028, 0x0597, 0x056d, 0xffff, 0x056d, 0x0582, + 0x0005, 0x0028, 0x05d2, 0x05ab, 0xffff, 0x05ab, 0x05be, 0x0003, + 0x0317, 0x031a, 0x031f, 0x0001, 0x0028, 0x0538, 0x0003, 0x0028, + 0x05e4, 0x0552, 0x055f, 0x0002, 0x0322, 0x0329, 0x0005, 0x0028, + 0x0606, 0x05f7, 0xffff, 0x05f7, 0x0606, 0x0005, 0x0028, 0x0622, + // Entry 1BE80 - 1BEBF + 0x0614, 0xffff, 0x0614, 0x0622, 0x0003, 0x0334, 0x0337, 0x033c, + 0x0001, 0x0028, 0x062f, 0x0003, 0x0028, 0x0634, 0x063d, 0x0649, + 0x0002, 0x033f, 0x0346, 0x0005, 0x0028, 0x065e, 0x0653, 0xffff, + 0x0653, 0x065e, 0x0005, 0x0028, 0x0673, 0x0668, 0xffff, 0x0668, + 0x0673, 0x0003, 0x0351, 0x0354, 0x0359, 0x0001, 0x0028, 0x067d, + 0x0003, 0x0028, 0x0687, 0x06a1, 0x06b4, 0x0002, 0x035c, 0x0363, + 0x0005, 0x0028, 0x06c6, 0x06c6, 0xffff, 0x06dd, 0x06f5, 0x0005, + 0x0028, 0x070f, 0x070f, 0xffff, 0x0725, 0x073c, 0x0003, 0x036e, + // Entry 1BEC0 - 1BEFF + 0x0371, 0x0376, 0x0001, 0x0028, 0x0755, 0x0003, 0x0028, 0x075d, + 0x076f, 0x0780, 0x0002, 0x0379, 0x0380, 0x0005, 0x0028, 0x07a0, + 0x0790, 0xffff, 0x0790, 0x07a0, 0x0005, 0x0028, 0x07be, 0x07af, + 0xffff, 0x07af, 0x07be, 0x0003, 0x038b, 0x038e, 0x0393, 0x0001, + 0x0028, 0x07cc, 0x0003, 0x0028, 0x07d0, 0x07d8, 0x07e5, 0x0002, + 0x0396, 0x039d, 0x0005, 0x0028, 0x07ee, 0x07ee, 0xffff, 0x07ee, + 0x07ee, 0x0005, 0x0028, 0x07f7, 0x07f7, 0xffff, 0x07f7, 0x07f7, + 0x0003, 0x03a8, 0x03ab, 0x03b3, 0x0001, 0x0028, 0x0800, 0x0006, + // Entry 1BF00 - 1BF3F + 0x0028, 0x0813, 0x081a, 0x0823, 0x0806, 0x082f, 0x0838, 0x0002, + 0x03b6, 0x03bd, 0x0005, 0x0028, 0x0844, 0x0844, 0xffff, 0x0844, + 0x0857, 0x0005, 0x0028, 0x086e, 0x086e, 0xffff, 0x086e, 0x0880, + 0x0003, 0x03c8, 0x03cb, 0x03d3, 0x0001, 0x0028, 0x0896, 0x0006, + 0x0028, 0x0813, 0x081a, 0x0823, 0x0806, 0x082f, 0x0838, 0x0002, + 0x03d6, 0x03dd, 0x0005, 0x0028, 0x089a, 0x089a, 0xffff, 0x089a, + 0x08a5, 0x0005, 0x0028, 0x08b1, 0x08b1, 0xffff, 0x08b1, 0x08bb, + 0x0003, 0x03e8, 0x03eb, 0x03f3, 0x0001, 0x0028, 0x0896, 0x0006, + // Entry 1BF40 - 1BF7F + 0x0028, 0x0813, 0x081a, 0x0823, 0x0806, 0x082f, 0x0838, 0x0002, + 0x03f6, 0x03fd, 0x0005, 0x0028, 0x08c6, 0x08c6, 0xffff, 0x08c6, + 0x08c6, 0x0005, 0x0028, 0x08cf, 0x08cf, 0xffff, 0x08cf, 0x08cf, + 0x0001, 0x0406, 0x0001, 0x0028, 0x08d8, 0x0002, 0x0000, 0x040c, + 0x0003, 0x0028, 0x08ec, 0x01b7, 0x0904, 0x0002, 0x0000, 0x0414, + 0x0003, 0x0028, 0x091d, 0x092c, 0x0931, 0x0002, 0x0000, 0x041c, + 0x0003, 0x0028, 0x0941, 0x094a, 0x094f, 0x0002, 0x0000, 0x0424, + 0x0003, 0x0028, 0x0958, 0x01c4, 0x096b, 0x0002, 0x0000, 0x042c, + // Entry 1BF80 - 1BFBF + 0x0003, 0x0028, 0x097f, 0x098e, 0x0993, 0x0002, 0x0000, 0x0434, + 0x0003, 0x0028, 0x09a3, 0x09ab, 0x09af, 0x0002, 0x0000, 0x043c, + 0x0003, 0x0028, 0x09b7, 0x01cc, 0x09cb, 0x0002, 0x0000, 0x0444, + 0x0003, 0x0028, 0x09e0, 0x09ef, 0x09f4, 0x0002, 0x0000, 0x044c, + 0x0003, 0x0028, 0x0a04, 0x0a0d, 0x0a12, 0x0002, 0x0000, 0x0454, + 0x0003, 0x0028, 0x0a1b, 0x01d5, 0x0a30, 0x0002, 0x0000, 0x045c, + 0x0003, 0x0028, 0x0a46, 0x0a55, 0x0a5a, 0x0002, 0x0000, 0x0464, + 0x0003, 0x0028, 0x0a6a, 0x0a72, 0x0a76, 0x0002, 0x0000, 0x046c, + // Entry 1BFC0 - 1BFFF + 0x0003, 0x0028, 0x0a7e, 0x01df, 0x0a93, 0x0002, 0x0000, 0x0474, + 0x0003, 0x0028, 0x0aa9, 0x0ab8, 0x0abd, 0x0002, 0x0000, 0x047c, + 0x0003, 0x0028, 0x0acd, 0x0ad5, 0x0ad9, 0x0002, 0x0000, 0x0484, + 0x0003, 0x0028, 0x0ae1, 0x01e9, 0x0af5, 0x0002, 0x0000, 0x048c, + 0x0003, 0x0028, 0x0b0a, 0x0b19, 0x0b1e, 0x0002, 0x0000, 0x0494, + 0x0003, 0x0028, 0x0b2e, 0x0b36, 0x0b3a, 0x0002, 0x0000, 0x049c, + 0x0003, 0x0028, 0x0b42, 0x01f2, 0x0b59, 0x0002, 0x0000, 0x04a4, + 0x0003, 0x0028, 0x0b71, 0x0b80, 0x0b85, 0x0002, 0x0000, 0x04ac, + // Entry 1C000 - 1C03F + 0x0003, 0x0028, 0x0b95, 0x0b9d, 0x0ba1, 0x0001, 0x04b3, 0x0001, + 0x0028, 0x0ba9, 0x0003, 0x04ba, 0x0000, 0x04bd, 0x0001, 0x0028, + 0x0bad, 0x0002, 0x04c0, 0x04c7, 0x0005, 0x0028, 0x0bbb, 0x0bbb, + 0xffff, 0x0bbb, 0x0bd6, 0x0005, 0x0028, 0x0bf4, 0x0bf4, 0xffff, + 0x0bf4, 0x0c0e, 0x0003, 0x04d2, 0x0000, 0x04d5, 0x0001, 0x0027, + 0x1212, 0x0002, 0x04d8, 0x04df, 0x0005, 0x0028, 0x0c2b, 0x0c2b, + 0xffff, 0x0c2b, 0x0c37, 0x0005, 0x0028, 0x0c44, 0x0c44, 0xffff, + 0x0c44, 0x0c4f, 0x0003, 0x04ea, 0x0000, 0x04ed, 0x0001, 0x0000, + // Entry 1C040 - 1C07F + 0x2010, 0x0002, 0x04f0, 0x04f7, 0x0005, 0x0028, 0x0c5b, 0x0c5b, + 0xffff, 0x0c5b, 0x0c5b, 0x0005, 0x0028, 0x0c63, 0x0c63, 0xffff, + 0x0c63, 0x0c63, 0x0003, 0x0502, 0x0000, 0x0505, 0x0001, 0x0028, + 0x0c6b, 0x0002, 0x0508, 0x050f, 0x0005, 0x0028, 0x0ca1, 0x0c73, + 0xffff, 0x0c73, 0x0c89, 0x0005, 0x0028, 0x0ce2, 0x0cb6, 0xffff, + 0x0cb6, 0x0ccb, 0x0003, 0x051a, 0x0000, 0x051d, 0x0001, 0x0028, + 0x0cf6, 0x0002, 0x0520, 0x0527, 0x0005, 0x0028, 0x0d0a, 0x0cfc, + 0xffff, 0x0cfc, 0x0d0a, 0x0005, 0x0028, 0x0d24, 0x0d17, 0xffff, + // Entry 1C080 - 1C0BF + 0x0d17, 0x0d24, 0x0003, 0x0532, 0x0000, 0x0535, 0x0001, 0x0000, + 0x1f9a, 0x0002, 0x0538, 0x053f, 0x0005, 0x0000, 0x1ace, 0x1ace, + 0xffff, 0x1ace, 0x1ace, 0x0005, 0x0000, 0x1ad5, 0x1ad5, 0xffff, + 0x1ad5, 0x1ad5, 0x0003, 0x054a, 0x054d, 0x0551, 0x0001, 0x0028, + 0x0d30, 0x0002, 0x0028, 0xffff, 0x0d35, 0x0002, 0x0554, 0x055b, + 0x0005, 0x0028, 0x0d40, 0x0d40, 0xffff, 0x0d52, 0x0d65, 0x0005, + 0x0028, 0x0d79, 0x0d79, 0xffff, 0x0d8a, 0x0d9c, 0x0003, 0x0566, + 0x0569, 0x056d, 0x0001, 0x0028, 0x0d30, 0x0002, 0x0028, 0xffff, + // Entry 1C0C0 - 1C0FF + 0x0d35, 0x0002, 0x0570, 0x0577, 0x0005, 0x0028, 0x0daf, 0x0daf, + 0xffff, 0x0dbb, 0x0dc8, 0x0005, 0x0028, 0x0dd5, 0x0dd5, 0xffff, + 0x0de0, 0x0dec, 0x0003, 0x0582, 0x0585, 0x0589, 0x0001, 0x0000, + 0x2008, 0x0002, 0x0028, 0xffff, 0x0d35, 0x0002, 0x058c, 0x0593, + 0x0005, 0x0000, 0x1b48, 0x1b48, 0xffff, 0x1b48, 0x1b48, 0x0005, + 0x0000, 0x1b4f, 0x1b4f, 0xffff, 0x1b4f, 0x1b4f, 0x0001, 0x059c, + 0x0001, 0x0028, 0x0df8, 0x0004, 0x05a4, 0x05a9, 0x05ae, 0x05cf, + 0x0003, 0x0000, 0x1dc7, 0x238b, 0x24f5, 0x0003, 0x0000, 0x1de0, + // Entry 1C100 - 1C13F + 0x2514, 0x2529, 0x0002, 0x05b9, 0x05b1, 0x0002, 0x0000, 0x05b4, + 0x0003, 0x0028, 0xffff, 0x0e04, 0x0e23, 0x0003, 0x05c3, 0x05bd, + 0x05c9, 0x0004, 0x0028, 0xffff, 0x0e1f, 0x0e39, 0x0e48, 0x0004, + 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, + 0xffff, 0xffff, 0x05a4, 0x0002, 0x07b6, 0x05d2, 0x0003, 0x05d6, + 0x0716, 0x0676, 0x009e, 0x0028, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0ec0, 0x0f06, 0x0f68, 0x0f9c, 0x1009, 0x1073, 0x10dd, 0x1132, + 0x1163, 0x11ed, 0x1221, 0x126d, 0x12d4, 0x130e, 0x135d, 0x13b2, + // Entry 1C140 - 1C17F + 0x141c, 0x146e, 0x14c0, 0x1506, 0x1561, 0xffff, 0xffff, 0x15b8, + 0xffff, 0x1610, 0xffff, 0x1674, 0x16a8, 0x16dc, 0x1713, 0xffff, + 0xffff, 0x177a, 0x17b4, 0x1800, 0xffff, 0xffff, 0xffff, 0x1864, + 0xffff, 0x18c4, 0x1928, 0xffff, 0x19ac, 0x1a0d, 0x1a74, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b02, 0xffff, 0xffff, 0x1b78, 0x1bd3, + 0xffff, 0xffff, 0x1c57, 0x1ce2, 0x1d1c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1dd5, 0x1e09, 0x1e3d, 0x1e71, 0x1eb1, + 0xffff, 0xffff, 0x1f48, 0xffff, 0x1f8a, 0xffff, 0xffff, 0x1ffa, + // Entry 1C180 - 1C1BF + 0xffff, 0x2081, 0xffff, 0xffff, 0xffff, 0xffff, 0x2113, 0xffff, + 0x2183, 0x21e7, 0x225a, 0x2297, 0xffff, 0xffff, 0xffff, 0x22ec, + 0x233e, 0x238d, 0xffff, 0xffff, 0x23f5, 0x2471, 0x24b1, 0x24dc, + 0xffff, 0xffff, 0x2540, 0x257d, 0x25ae, 0xffff, 0x2624, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x270b, 0x2742, 0x2773, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x281e, 0xffff, + 0xffff, 0x286e, 0xffff, 0x28a6, 0xffff, 0x28fb, 0x2935, 0x2975, + 0xffff, 0x29bc, 0x29fc, 0xffff, 0xffff, 0xffff, 0x2a68, 0x2a9c, + // Entry 1C1C0 - 1C1FF + 0xffff, 0xffff, 0x0e4c, 0x0f37, 0x118e, 0x11bc, 0xffff, 0xffff, + 0x2034, 0x26b3, 0x009e, 0x0028, 0x0e77, 0x0e89, 0x0e9c, 0x0eae, + 0x0ed2, 0x0f11, 0x0f74, 0x0fbb, 0x1027, 0x1091, 0x10f4, 0x113d, + 0x116c, 0x11f9, 0x1235, 0x128a, 0x12e2, 0x1323, 0x1374, 0x13d0, + 0x1432, 0x1484, 0x14d2, 0x151f, 0x1570, 0x159e, 0x15aa, 0x15c6, + 0x15f2, 0x1624, 0x1667, 0x1680, 0x16b4, 0x16e9, 0x1722, 0x1750, + 0x1766, 0x1788, 0x17c6, 0x180a, 0x182e, 0x1839, 0x1850, 0x187a, + 0x18b6, 0x18e0, 0x1943, 0x1989, 0x19c7, 0x1a2a, 0x1a7e, 0x1aa2, + // Entry 1C200 - 1C23F + 0x1abc, 0x1ae6, 0x1af5, 0x1b15, 0x1b4b, 0x1b64, 0x1b91, 0x1bec, + 0x1c37, 0x1c48, 0x1c80, 0x1cf0, 0x1d25, 0x1d47, 0x1d5a, 0x1d72, + 0x1d86, 0x1da1, 0x1dbb, 0x1de1, 0x1e15, 0x1e49, 0x1e81, 0x1ece, + 0x1f18, 0x1f30, 0x1f55, 0x1f7f, 0x1f9a, 0x1fca, 0x1fe5, 0x2008, + 0x206b, 0x208d, 0x20b5, 0x20c5, 0x20e1, 0x20fc, 0x212f, 0x2177, + 0x219f, 0x2208, 0x2269, 0x22a2, 0x22c8, 0x22d5, 0x22e0, 0x2302, + 0x2353, 0x23a1, 0x23d9, 0x23e2, 0x240d, 0x2481, 0x24ba, 0x24eb, + 0x2519, 0x2524, 0x254f, 0x2588, 0x25c9, 0x260f, 0x2643, 0x2691, + // Entry 1C240 - 1C27F + 0x26a7, 0xffff, 0x26f3, 0x26ff, 0x2718, 0x274d, 0x277f, 0x27a7, + 0x27c2, 0x27d1, 0x27e7, 0x27fb, 0x2808, 0x2813, 0x2829, 0x284f, + 0x2862, 0x2878, 0x289c, 0x28b9, 0x28ef, 0x2909, 0x2945, 0x2981, + 0x29a9, 0x29cc, 0x2a0a, 0x2a36, 0x2a41, 0x2a51, 0x2a74, 0x2aae, + 0x1c2e, 0x244d, 0x0e55, 0x0f42, 0x1198, 0x11c7, 0x165c, 0x1fdb, + 0x2041, 0x26c3, 0x009e, 0x0028, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0ee8, 0x0f20, 0x0f84, 0x0fde, 0x1049, 0x10b3, 0x110f, 0x114c, + 0x1179, 0x1209, 0x124d, 0x12ab, 0x12f4, 0x133c, 0x138f, 0x13f2, + // Entry 1C280 - 1C2BF + 0x144c, 0x149e, 0x14e8, 0x153c, 0x1583, 0xffff, 0xffff, 0x15d8, + 0xffff, 0x163c, 0xffff, 0x1690, 0x16c4, 0x16fa, 0x1735, 0xffff, + 0xffff, 0x179a, 0x17dc, 0x1818, 0xffff, 0xffff, 0xffff, 0x1894, + 0xffff, 0x1900, 0x1962, 0xffff, 0x19e6, 0x1a4b, 0x1a8c, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b2c, 0xffff, 0xffff, 0x1bae, 0x1c09, + 0xffff, 0xffff, 0x1cad, 0x1d02, 0x1d32, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1df1, 0x1e25, 0x1e59, 0x1e95, 0x1eef, + 0xffff, 0xffff, 0x1f66, 0xffff, 0x1fae, 0xffff, 0xffff, 0x201a, + // Entry 1C2C0 - 1C2FF + 0xffff, 0x209d, 0xffff, 0xffff, 0xffff, 0xffff, 0x214f, 0xffff, + 0x21bf, 0x222d, 0x227c, 0x22b1, 0xffff, 0xffff, 0xffff, 0x231c, + 0x236c, 0x23b9, 0xffff, 0xffff, 0x2429, 0x2495, 0x24c7, 0x24fe, + 0xffff, 0xffff, 0x2562, 0x2597, 0x25e8, 0xffff, 0x2666, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2729, 0x275c, 0x278f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2838, 0xffff, + 0xffff, 0x2886, 0xffff, 0x28d0, 0xffff, 0x291b, 0x2959, 0x2991, + 0xffff, 0x29e0, 0x2a1c, 0xffff, 0xffff, 0xffff, 0x2a84, 0x2ac4, + // Entry 1C300 - 1C33F + 0xffff, 0xffff, 0x0e62, 0x0f51, 0x11a6, 0x11d6, 0xffff, 0xffff, + 0x2052, 0x26d7, 0x0003, 0x07ba, 0x083c, 0x07fb, 0x003f, 0x0006, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06eb, 0xffff, 0x07ec, + 0x0861, 0x08f1, 0x0975, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0c14, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, + // Entry 1C340 - 1C37F + 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2798, 0x003f, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06ef, 0xffff, + 0x07ef, 0x0864, 0x2780, 0x0978, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + // Entry 1C380 - 1C3BF + 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2794, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e6, + 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06f4, + 0xffff, 0x07f3, 0x0868, 0x2784, 0x097c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + // Entry 1C3C0 - 1C3FF + 0x1355, 0xffff, 0x13e3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x16eb, 0x0003, 0x0004, 0x0256, 0x0650, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0029, 0x0000, 0x0001, + 0x001c, 0x12a6, 0x0001, 0x0029, 0x001b, 0x0001, 0x0002, 0x04f7, + 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0029, 0x002f, + // Entry 1C400 - 1C43F + 0x0001, 0x0029, 0x002f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0209, 0x0223, + 0x0234, 0x0245, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, + 0x0066, 0x000d, 0x0029, 0xffff, 0x003d, 0x0042, 0x0047, 0x004c, + 0x0051, 0x0056, 0x005c, 0x0061, 0x0066, 0x006b, 0x0070, 0x0075, + 0x000d, 0x0029, 0xffff, 0x007a, 0x007d, 0x0080, 0x0083, 0x0080, + 0x007a, 0x007a, 0x0083, 0x0086, 0x0089, 0x008c, 0x008f, 0x000d, + 0x0029, 0xffff, 0x0092, 0x009a, 0x00a3, 0x00a9, 0x0051, 0x0056, + // Entry 1C440 - 1C47F + 0x00af, 0x00b5, 0x00bc, 0x00c5, 0x00cd, 0x00d6, 0x0003, 0x0079, + 0x0088, 0x0097, 0x000d, 0x0029, 0xffff, 0x00df, 0x00e4, 0x00e9, + 0x00ee, 0x00f3, 0x00f8, 0x00fe, 0x0103, 0x0108, 0x010d, 0x0112, + 0x0117, 0x000d, 0x0000, 0xffff, 0x2068, 0x22e6, 0x247f, 0x2382, + 0x247f, 0x2068, 0x2068, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, + 0x000d, 0x0029, 0xffff, 0x011c, 0x0124, 0x012d, 0x0133, 0x00f3, + 0x00f8, 0x0139, 0x013f, 0x0146, 0x014f, 0x0157, 0x0160, 0x0002, + 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, + // Entry 1C480 - 1C4BF + 0x0007, 0x001c, 0x134e, 0x2100, 0x2105, 0x210a, 0x2110, 0x2115, + 0x1368, 0x0007, 0x0029, 0x008f, 0x0169, 0x0080, 0x0080, 0x007a, + 0x016c, 0x0086, 0x0007, 0x001c, 0x134e, 0x2100, 0x2105, 0x210a, + 0x2110, 0x2115, 0x1368, 0x0007, 0x001c, 0x1383, 0x2100, 0x1391, + 0x211a, 0x2124, 0x212a, 0x13b2, 0x0005, 0x00d9, 0x00e2, 0x00f4, + 0x0000, 0x00eb, 0x0007, 0x0029, 0x016f, 0x0174, 0x00e9, 0x0179, + 0x017f, 0x0184, 0x0189, 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, + 0x247f, 0x2068, 0x2485, 0x2481, 0x0007, 0x0016, 0x0361, 0x2b8d, + // Entry 1C4C0 - 1C4FF + 0x2b90, 0x2b93, 0x2b97, 0x2b9a, 0x2b9d, 0x0007, 0x0029, 0x018f, + 0x0174, 0x0197, 0x019e, 0x01a8, 0x01ae, 0x01b5, 0x0002, 0x0100, + 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x001c, 0xffff, + 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0029, 0xffff, 0x01bd, 0x01cc, + 0x01db, 0x01ea, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x001c, + 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0029, 0xffff, 0x01bd, + // Entry 1C500 - 1C53F + 0x01cc, 0x01db, 0x01ea, 0x0002, 0x0135, 0x019f, 0x0003, 0x0139, + 0x015b, 0x017d, 0x0009, 0x0146, 0x0149, 0x0143, 0x014c, 0x0152, + 0x0155, 0x0158, 0x0000, 0x014f, 0x0001, 0x0029, 0x01f9, 0x0001, + 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0029, 0x0202, + 0x0001, 0x0029, 0x020f, 0x0001, 0x0029, 0x0219, 0x0001, 0x0029, + 0x0226, 0x0001, 0x0029, 0x01f9, 0x0009, 0x0168, 0x016b, 0x0165, + 0x016e, 0x0174, 0x0177, 0x017a, 0x0000, 0x0171, 0x0001, 0x0029, + 0x01f9, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, + // Entry 1C540 - 1C57F + 0x0029, 0x0202, 0x0001, 0x0029, 0x020f, 0x0001, 0x0029, 0x0219, + 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0009, 0x018a, + 0x018d, 0x0187, 0x0190, 0x0196, 0x0199, 0x019c, 0x0000, 0x0193, + 0x0001, 0x0029, 0x01f9, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0001, 0x0029, 0x0202, 0x0001, 0x0029, 0x020f, 0x0001, + 0x0029, 0x0219, 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, + 0x0003, 0x01a3, 0x01c5, 0x01e7, 0x0009, 0x01b0, 0x01b3, 0x01ad, + 0x01b6, 0x01bc, 0x01bf, 0x01c2, 0x0000, 0x01b9, 0x0001, 0x0029, + // Entry 1C580 - 1C5BF + 0x022f, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, + 0x001c, 0x1436, 0x0001, 0x0029, 0x023a, 0x0001, 0x001c, 0x142c, + 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0009, 0x01d2, + 0x01d5, 0x01cf, 0x01d8, 0x01de, 0x01e1, 0x01e4, 0x0000, 0x01db, + 0x0001, 0x0029, 0x022f, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0001, 0x001c, 0x1436, 0x0001, 0x0029, 0x023a, 0x0001, + 0x001c, 0x142c, 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, + 0x0009, 0x01f4, 0x01f7, 0x01f1, 0x01fa, 0x0200, 0x0203, 0x0206, + // Entry 1C5C0 - 1C5FF + 0x0000, 0x01fd, 0x0001, 0x0029, 0x022f, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0001, 0x001c, 0x1436, 0x0001, 0x0029, + 0x023a, 0x0001, 0x001c, 0x142c, 0x0001, 0x0005, 0x130a, 0x0001, + 0x0029, 0x0241, 0x0003, 0x0218, 0x0000, 0x020d, 0x0002, 0x0210, + 0x0214, 0x0002, 0x001c, 0x1446, 0x2131, 0x0002, 0x0029, 0x0247, + 0x025b, 0x0002, 0x021b, 0x021f, 0x0002, 0x0029, 0x0269, 0x0275, + 0x0002, 0x0029, 0x026e, 0x027a, 0x0004, 0x0231, 0x022b, 0x0228, + 0x022e, 0x0001, 0x001c, 0x14a6, 0x0001, 0x001c, 0x14bf, 0x0001, + // Entry 1C600 - 1C63F + 0x0029, 0x027f, 0x0001, 0x0014, 0x146e, 0x0004, 0x0242, 0x023c, + 0x0239, 0x023f, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0253, + 0x024d, 0x024a, 0x0250, 0x0001, 0x0029, 0x0291, 0x0001, 0x0029, + 0x0291, 0x0001, 0x0029, 0x029e, 0x0001, 0x0029, 0x029e, 0x0040, + 0x0297, 0x0000, 0x0000, 0x029c, 0x02b3, 0x02ca, 0x02e1, 0x02f8, + 0x030f, 0x0326, 0x033d, 0x0354, 0x0366, 0x0381, 0x039c, 0x0000, + 0x0000, 0x0000, 0x03b2, 0x03cb, 0x03dd, 0x0000, 0x0000, 0x0000, + // Entry 1C640 - 1C67F + 0x03ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f4, 0x0408, + 0x041c, 0x0430, 0x0444, 0x0458, 0x046c, 0x0480, 0x0494, 0x04a8, + 0x04bc, 0x04d0, 0x04e4, 0x04f8, 0x050c, 0x0520, 0x0534, 0x0548, + 0x055c, 0x0570, 0x0584, 0x0000, 0x0598, 0x0000, 0x059d, 0x05b3, + 0x05c5, 0x05d7, 0x05ed, 0x05ff, 0x0611, 0x0627, 0x0639, 0x064b, + 0x0001, 0x0299, 0x0001, 0x0001, 0x0040, 0x0003, 0x02a0, 0x02a3, + 0x02a8, 0x0001, 0x0029, 0x02a7, 0x0003, 0x0029, 0x02ab, 0x02b8, + 0x02c1, 0x0002, 0x02ab, 0x02af, 0x0002, 0x0029, 0x02db, 0x02d0, + // Entry 1C680 - 1C6BF + 0x0002, 0x0029, 0x02f3, 0x02e7, 0x0003, 0x02b7, 0x02ba, 0x02bf, + 0x0001, 0x0029, 0x02a7, 0x0003, 0x0029, 0x0300, 0x02b8, 0x030b, + 0x0002, 0x02c2, 0x02c6, 0x0002, 0x0029, 0x02db, 0x02d0, 0x0002, + 0x0029, 0x02f3, 0x02e7, 0x0003, 0x02ce, 0x02d1, 0x02d6, 0x0001, + 0x0029, 0x0083, 0x0003, 0x0029, 0x0300, 0x02b8, 0x030b, 0x0002, + 0x02d9, 0x02dd, 0x0002, 0x0005, 0x1c58, 0x1c58, 0x0002, 0x0005, + 0x1c62, 0x1c62, 0x0003, 0x02e5, 0x02e8, 0x02ed, 0x0001, 0x0005, + 0x1c6d, 0x0003, 0x0029, 0x0318, 0x032b, 0x033a, 0x0002, 0x02f0, + // Entry 1C6C0 - 1C6FF + 0x02f4, 0x0002, 0x0005, 0x1cbd, 0x1cac, 0x0002, 0x0005, 0x1ce1, + 0x1ccf, 0x0003, 0x02fc, 0x02ff, 0x0304, 0x0001, 0x000b, 0x0c78, + 0x0003, 0x0029, 0x034f, 0x035c, 0x0367, 0x0002, 0x0307, 0x030b, + 0x0002, 0x0005, 0x1d1a, 0x1d1a, 0x0002, 0x0005, 0x1d27, 0x1d27, + 0x0003, 0x0313, 0x0316, 0x031b, 0x0001, 0x000b, 0x0c78, 0x0003, + 0x0029, 0x034f, 0x035c, 0x0367, 0x0002, 0x031e, 0x0322, 0x0002, + 0x0005, 0x1d1a, 0x1d1a, 0x0002, 0x0005, 0x1d27, 0x1d27, 0x0003, + 0x032a, 0x032d, 0x0332, 0x0001, 0x0005, 0x1006, 0x0003, 0x0029, + // Entry 1C700 - 1C73F + 0x0376, 0x0383, 0x038c, 0x0002, 0x0335, 0x0339, 0x0002, 0x0005, + 0x1d7e, 0x1d73, 0x0002, 0x0005, 0x1d97, 0x1d8b, 0x0003, 0x0341, + 0x0344, 0x0349, 0x0001, 0x0005, 0x1006, 0x0003, 0x0029, 0x039b, + 0x03a5, 0x03ad, 0x0002, 0x034c, 0x0350, 0x0002, 0x0005, 0x21e6, + 0x1d73, 0x0002, 0x0005, 0x21f2, 0x1d8b, 0x0003, 0x0358, 0x0000, + 0x035b, 0x0001, 0x0029, 0x0080, 0x0002, 0x035e, 0x0362, 0x0002, + 0x0005, 0x1db7, 0x1db7, 0x0002, 0x0005, 0x1dc1, 0x1dc1, 0x0004, + 0x036b, 0x036e, 0x0373, 0x037e, 0x0001, 0x001c, 0x16c6, 0x0003, + // Entry 1C740 - 1C77F + 0x0029, 0x03b9, 0x03c9, 0x03d5, 0x0002, 0x0376, 0x037a, 0x0002, + 0x0029, 0x03f5, 0x03e7, 0x0002, 0x0029, 0x0413, 0x0404, 0x0001, + 0x0029, 0x0423, 0x0004, 0x0386, 0x0389, 0x038e, 0x0399, 0x0001, + 0x001c, 0x175b, 0x0003, 0x0029, 0x0433, 0x043f, 0x0449, 0x0002, + 0x0391, 0x0395, 0x0002, 0x001e, 0x03e5, 0x03e5, 0x0002, 0x0029, + 0x0457, 0x0457, 0x0001, 0x0029, 0x0423, 0x0004, 0x03a1, 0x0000, + 0x03a4, 0x03af, 0x0001, 0x001c, 0x175b, 0x0002, 0x03a7, 0x03ab, + 0x0002, 0x001e, 0x03e5, 0x03e5, 0x0002, 0x0029, 0x0457, 0x0457, + // Entry 1C780 - 1C7BF + 0x0001, 0x0029, 0x0423, 0x0003, 0x03b6, 0x03b9, 0x03c0, 0x0001, + 0x0005, 0x1ece, 0x0005, 0x0029, 0x046c, 0x0471, 0x023a, 0x0464, + 0x0476, 0x0002, 0x03c3, 0x03c7, 0x0002, 0x0005, 0x2137, 0x1ef6, + 0x0002, 0x0005, 0x21ff, 0x1f0f, 0x0003, 0x03cf, 0x0000, 0x03d2, + 0x0001, 0x0000, 0x2008, 0x0002, 0x03d5, 0x03d9, 0x0002, 0x0005, + 0x2137, 0x1ef6, 0x0002, 0x0005, 0x21ff, 0x1f0f, 0x0003, 0x03e1, + 0x0000, 0x03e4, 0x0001, 0x0000, 0x2008, 0x0002, 0x03e7, 0x03eb, + 0x0002, 0x0029, 0x0483, 0x0483, 0x0002, 0x0029, 0x048c, 0x048c, + // Entry 1C7C0 - 1C7FF + 0x0001, 0x03f1, 0x0001, 0x0029, 0x0496, 0x0003, 0x0000, 0x03f8, + 0x03fd, 0x0003, 0x0029, 0x04a5, 0x04b6, 0x04c3, 0x0002, 0x0400, + 0x0404, 0x0002, 0x001e, 0x000f, 0x0000, 0x0002, 0x0029, 0x04e6, + 0x04d6, 0x0003, 0x0000, 0x040c, 0x0411, 0x0003, 0x0029, 0x04f7, + 0x0505, 0x050f, 0x0002, 0x0414, 0x0418, 0x0002, 0x0029, 0x051f, + 0x051f, 0x0002, 0x0029, 0x052b, 0x052b, 0x0003, 0x0000, 0x0420, + 0x0425, 0x0003, 0x0029, 0x0538, 0x0505, 0x0544, 0x0002, 0x0428, + 0x042c, 0x0002, 0x0029, 0x051f, 0x051f, 0x0002, 0x0029, 0x052b, + // Entry 1C800 - 1C83F + 0x052b, 0x0003, 0x0000, 0x0434, 0x0439, 0x0003, 0x0029, 0x0552, + 0x0560, 0x056a, 0x0002, 0x043c, 0x0440, 0x0002, 0x0029, 0x057a, + 0x057a, 0x0002, 0x0029, 0x0586, 0x0586, 0x0003, 0x0000, 0x0448, + 0x044d, 0x0003, 0x0029, 0x0593, 0x0560, 0x059f, 0x0002, 0x0450, + 0x0454, 0x0002, 0x0029, 0x057a, 0x057a, 0x0002, 0x0029, 0x0586, + 0x0586, 0x0003, 0x0000, 0x045c, 0x0461, 0x0003, 0x0029, 0x0593, + 0x0560, 0x059f, 0x0002, 0x0464, 0x0468, 0x0002, 0x0029, 0x057a, + 0x057a, 0x0002, 0x0029, 0x0586, 0x0586, 0x0003, 0x0000, 0x0470, + // Entry 1C840 - 1C87F + 0x0475, 0x0003, 0x0029, 0x05ad, 0x05bd, 0x05c9, 0x0002, 0x0478, + 0x047c, 0x0002, 0x0029, 0x05db, 0x05db, 0x0002, 0x0006, 0x00fe, + 0x00fe, 0x0003, 0x0000, 0x0484, 0x0489, 0x0003, 0x0029, 0x05e9, + 0x05f7, 0x0601, 0x0002, 0x048c, 0x0490, 0x0002, 0x0029, 0x0611, + 0x0611, 0x0002, 0x0029, 0x061d, 0x061d, 0x0003, 0x0000, 0x0498, + 0x049d, 0x0003, 0x0029, 0x062a, 0x05f7, 0x0636, 0x0002, 0x04a0, + 0x04a4, 0x0002, 0x0029, 0x0611, 0x0611, 0x0002, 0x0029, 0x061d, + 0x061d, 0x0003, 0x0000, 0x04ac, 0x04b1, 0x0003, 0x0029, 0x0644, + // Entry 1C880 - 1C8BF + 0x0657, 0x0666, 0x0002, 0x04b4, 0x04b8, 0x0002, 0x0029, 0x067b, + 0x067b, 0x0002, 0x0029, 0x068c, 0x068c, 0x0003, 0x0000, 0x04c0, + 0x04c5, 0x0003, 0x0029, 0x069e, 0x06ad, 0x06b8, 0x0002, 0x04c8, + 0x04cc, 0x0002, 0x0029, 0x06c9, 0x06c9, 0x0002, 0x0029, 0x06d6, + 0x06d6, 0x0003, 0x0000, 0x04d4, 0x04d9, 0x0003, 0x0029, 0x06e4, + 0x06ad, 0x06f1, 0x0002, 0x04dc, 0x04e0, 0x0002, 0x0029, 0x06c9, + 0x06c9, 0x0002, 0x0029, 0x06d6, 0x06d6, 0x0003, 0x0000, 0x04e8, + 0x04ed, 0x0003, 0x0029, 0x0700, 0x070f, 0x071a, 0x0002, 0x04f0, + // Entry 1C8C0 - 1C8FF + 0x04f4, 0x0002, 0x0029, 0x072b, 0x072b, 0x0002, 0x0029, 0x0738, + 0x0738, 0x0003, 0x0000, 0x04fc, 0x0501, 0x0003, 0x0029, 0x0746, + 0x0754, 0x075e, 0x0002, 0x0504, 0x0508, 0x0002, 0x0029, 0x076e, + 0x076e, 0x0002, 0x0029, 0x077a, 0x077a, 0x0003, 0x0000, 0x0510, + 0x0515, 0x0003, 0x0029, 0x0787, 0x0754, 0x0793, 0x0002, 0x0518, + 0x051c, 0x0002, 0x0029, 0x076e, 0x076e, 0x0002, 0x0029, 0x077a, + 0x077a, 0x0003, 0x0000, 0x0524, 0x0529, 0x0003, 0x0029, 0x07a1, + 0x07b1, 0x07bd, 0x0002, 0x052c, 0x0530, 0x0002, 0x0029, 0x07cf, + // Entry 1C900 - 1C93F + 0x07cf, 0x0002, 0x0029, 0x07dd, 0x07dd, 0x0003, 0x0000, 0x0538, + 0x053d, 0x0003, 0x0029, 0x07ec, 0x07fa, 0x0804, 0x0002, 0x0540, + 0x0544, 0x0002, 0x0029, 0x0814, 0x0814, 0x0002, 0x0029, 0x0820, + 0x0820, 0x0003, 0x0000, 0x054c, 0x0551, 0x0003, 0x0029, 0x082d, + 0x07fa, 0x0839, 0x0002, 0x0554, 0x0558, 0x0002, 0x0029, 0x0814, + 0x0814, 0x0002, 0x0029, 0x0820, 0x0820, 0x0003, 0x0000, 0x0560, + 0x0565, 0x0003, 0x0029, 0x0847, 0x0858, 0x0865, 0x0002, 0x0568, + 0x056c, 0x0002, 0x0029, 0x0887, 0x0878, 0x0002, 0x0029, 0x08a7, + // Entry 1C940 - 1C97F + 0x0897, 0x0003, 0x0000, 0x0574, 0x0579, 0x0003, 0x0029, 0x08b8, + 0x08c7, 0x08d2, 0x0002, 0x057c, 0x0580, 0x0002, 0x0029, 0x08e3, + 0x08e3, 0x0002, 0x0029, 0x08f0, 0x08f0, 0x0003, 0x0000, 0x0588, + 0x058d, 0x0003, 0x0029, 0x08fe, 0x08c7, 0x090b, 0x0002, 0x0590, + 0x0594, 0x0002, 0x0029, 0x08e3, 0x08e3, 0x0002, 0x0029, 0x08f0, + 0x08f0, 0x0001, 0x059a, 0x0001, 0x001e, 0x002c, 0x0003, 0x05a1, + 0x05a4, 0x05a8, 0x0001, 0x0006, 0x03db, 0x0002, 0x0029, 0xffff, + 0x091a, 0x0002, 0x05ab, 0x05af, 0x0002, 0x0006, 0x279c, 0x03ea, + // Entry 1C980 - 1C9BF + 0x0002, 0x0006, 0x27a9, 0x0403, 0x0003, 0x05b7, 0x0000, 0x05ba, + 0x0001, 0x0000, 0x2143, 0x0002, 0x05bd, 0x05c1, 0x0002, 0x001e, + 0x048c, 0x048c, 0x0002, 0x0029, 0x0925, 0x0925, 0x0003, 0x05c9, + 0x0000, 0x05cc, 0x0001, 0x0000, 0x2143, 0x0002, 0x05cf, 0x05d3, + 0x0002, 0x001e, 0x048c, 0x048c, 0x0002, 0x0029, 0x0925, 0x0925, + 0x0003, 0x05db, 0x05de, 0x05e2, 0x0001, 0x001c, 0x0b08, 0x0002, + 0x0029, 0xffff, 0x092f, 0x0002, 0x05e5, 0x05e9, 0x0002, 0x0029, + 0x094a, 0x093c, 0x0002, 0x0029, 0x0968, 0x0959, 0x0003, 0x05f1, + // Entry 1C9C0 - 1C9FF + 0x0000, 0x05f4, 0x0001, 0x000b, 0x1250, 0x0002, 0x05f7, 0x05fb, + 0x0002, 0x001e, 0x049e, 0x049e, 0x0002, 0x0029, 0x0978, 0x0978, + 0x0003, 0x0603, 0x0000, 0x0606, 0x0001, 0x000b, 0x1250, 0x0002, + 0x0609, 0x060d, 0x0002, 0x001e, 0x049e, 0x049e, 0x0002, 0x0029, + 0x0978, 0x0978, 0x0003, 0x0615, 0x0618, 0x061c, 0x0001, 0x001c, + 0x1f87, 0x0002, 0x0006, 0xffff, 0x04b8, 0x0002, 0x061f, 0x0623, + 0x0002, 0x0029, 0x0993, 0x0984, 0x0002, 0x0029, 0x09b3, 0x09a3, + 0x0003, 0x062b, 0x0000, 0x062e, 0x0001, 0x0000, 0x2002, 0x0002, + // Entry 1CA00 - 1CA3F + 0x0631, 0x0635, 0x0002, 0x001e, 0x04a9, 0x04a9, 0x0002, 0x0029, + 0x09c4, 0x09c4, 0x0003, 0x063d, 0x0000, 0x0640, 0x0001, 0x0000, + 0x2002, 0x0002, 0x0643, 0x0647, 0x0002, 0x001e, 0x04a9, 0x04a9, + 0x0002, 0x0029, 0x09c4, 0x09c4, 0x0001, 0x064d, 0x0001, 0x0029, + 0x09ce, 0x0004, 0x0655, 0x065a, 0x065f, 0x066e, 0x0003, 0x0000, + 0x1dc7, 0x238b, 0x2536, 0x0003, 0x0029, 0x09db, 0x09ea, 0x0a03, + 0x0002, 0x0000, 0x0662, 0x0003, 0x0000, 0x0669, 0x0666, 0x0001, + 0x0029, 0x0a1c, 0x0003, 0x0029, 0xffff, 0x0a37, 0x0a54, 0x0002, + // Entry 1CA40 - 1CA7F + 0x0837, 0x0671, 0x0003, 0x070b, 0x07a1, 0x0675, 0x0094, 0x0029, + 0x0a70, 0x0a87, 0x0aa2, 0x0abe, 0x0b00, 0x0b62, 0x0bae, 0x0c09, + 0x0c7b, 0x0cf2, 0x0d70, 0x0dde, 0x0e26, 0x0e69, 0x0eb0, 0x0f0e, + 0x0f75, 0x0fc5, 0x1022, 0x1098, 0x111a, 0x118a, 0x11f5, 0x124a, + 0x129a, 0x12da, 0x12ec, 0x1313, 0x134f, 0x1382, 0x13c2, 0x13f0, + 0x143b, 0x1482, 0x14ce, 0x150e, 0x1527, 0x1553, 0x15a6, 0x15fe, + 0x1632, 0x1643, 0x1661, 0x1692, 0x16da, 0x1707, 0x176a, 0x17b4, + 0x17f2, 0x185b, 0x18b6, 0x18ec, 0x1908, 0x193c, 0x1953, 0x1979, + // Entry 1CA80 - 1CABF + 0x19b3, 0x19cd, 0x1a0f, 0x1a85, 0x1add, 0x1af8, 0x1b26, 0x1b85, + 0x1bd3, 0x1c07, 0x1c22, 0x1c3d, 0x1c52, 0x1c6f, 0x1c8d, 0x1cbe, + 0x1d07, 0x1d53, 0x1d9d, 0x1dfa, 0x1e58, 0x1e79, 0x1ead, 0x1ee3, + 0x1f0c, 0x1f4e, 0x1f68, 0x1f98, 0x1fd6, 0x2003, 0x203d, 0x2051, + 0x2066, 0x207c, 0x20ab, 0x20e7, 0x2115, 0x217f, 0x21e7, 0x223e, + 0x2278, 0x228c, 0x229d, 0x22c8, 0x2329, 0x2384, 0x23c2, 0x23d2, + 0x240b, 0x2474, 0x24c6, 0x2510, 0x2550, 0x2561, 0x2593, 0x25e0, + 0x262b, 0x2669, 0x26a5, 0x26ff, 0x2713, 0x2726, 0x273b, 0x274f, + // Entry 1CAC0 - 1CAFF + 0x2776, 0x27c5, 0x280e, 0x2844, 0x2859, 0x2877, 0x2892, 0x28ac, + 0x28c0, 0x28d1, 0x28f6, 0x292e, 0x2946, 0x296b, 0x29a1, 0x29cc, + 0x2a14, 0x2a39, 0x2a8b, 0x2ae2, 0x2b1c, 0x2b48, 0x2ba0, 0x2be0, + 0x2bf2, 0x2c07, 0x2c35, 0x2c88, 0x0094, 0x0029, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0ae2, 0x0b50, 0x0b9a, 0x0bea, 0x0c5b, 0x0ccf, + 0x0d4c, 0x0dcc, 0x0e16, 0x0e5a, 0x0e9b, 0x0eee, 0x0f62, 0x0faf, + 0x1005, 0x1070, 0x10fc, 0x116a, 0x11de, 0x1237, 0x1284, 0xffff, + 0xffff, 0x12ff, 0xffff, 0x136c, 0xffff, 0x13dd, 0x142a, 0x1471, + // Entry 1CB00 - 1CB3F + 0x14b8, 0xffff, 0xffff, 0x153f, 0x158f, 0x15ee, 0xffff, 0xffff, + 0xffff, 0x1678, 0xffff, 0x16ed, 0x174f, 0xffff, 0x17d5, 0x1840, + 0x18a5, 0xffff, 0xffff, 0xffff, 0xffff, 0x1966, 0xffff, 0xffff, + 0x19ef, 0x1a63, 0xffff, 0xffff, 0x1b0b, 0x1b70, 0x1bc3, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cad, 0x1cf4, 0x1d41, + 0x1d8b, 0x1dd5, 0xffff, 0xffff, 0x1e9c, 0xffff, 0x1ef5, 0xffff, + 0xffff, 0x1f83, 0xffff, 0x1ff0, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2097, 0xffff, 0x20f9, 0x2161, 0x21cf, 0x222b, 0xffff, 0xffff, + // Entry 1CB40 - 1CB7F + 0xffff, 0x22ae, 0x2310, 0x236f, 0xffff, 0xffff, 0x23ec, 0x245d, + 0x24b6, 0x24fa, 0xffff, 0xffff, 0x257f, 0x25cf, 0x2616, 0xffff, + 0x2682, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2762, 0x27b3, + 0x27fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x28e4, 0xffff, 0xffff, 0x295a, 0xffff, 0x29b2, 0xffff, 0x2a26, + 0x2a73, 0x2acf, 0xffff, 0x2b31, 0x2b8a, 0xffff, 0xffff, 0xffff, + 0x2c22, 0x2c6f, 0x0094, 0x0029, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0b28, 0x0b7e, 0x0bcc, 0x0c32, 0x0ca5, 0x0d1f, 0x0d9e, 0x0dfa, + // Entry 1CB80 - 1CBBF + 0x0e40, 0x0e82, 0x0ecf, 0x0f38, 0x0f92, 0x0fe5, 0x1049, 0x10ca, + 0x1142, 0x11b4, 0x1216, 0x1267, 0x12ba, 0xffff, 0xffff, 0x1331, + 0xffff, 0x13a2, 0xffff, 0x140d, 0x1456, 0x149d, 0x14ee, 0xffff, + 0xffff, 0x1571, 0x15c7, 0x1618, 0xffff, 0xffff, 0xffff, 0x16b6, + 0xffff, 0x172b, 0x178f, 0xffff, 0x1819, 0x1880, 0x18d1, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1996, 0xffff, 0xffff, 0x1a39, 0x1ab1, + 0xffff, 0xffff, 0x1b4b, 0x1ba4, 0x1bed, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1cd9, 0x1d24, 0x1d6f, 0x1db9, 0x1e29, + // Entry 1CBC0 - 1CBFF + 0xffff, 0xffff, 0x1ec8, 0xffff, 0x1f2d, 0xffff, 0xffff, 0x1fb7, + 0xffff, 0x2020, 0xffff, 0xffff, 0xffff, 0xffff, 0x20c9, 0xffff, + 0x213b, 0x21a7, 0x2209, 0x225b, 0xffff, 0xffff, 0xffff, 0x22ec, + 0x234c, 0x23a3, 0xffff, 0xffff, 0x2434, 0x2495, 0x24e0, 0x2530, + 0xffff, 0xffff, 0x25b1, 0x25fb, 0x264a, 0xffff, 0x26d2, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2795, 0x27e1, 0x2829, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2912, 0xffff, + 0xffff, 0x2986, 0xffff, 0x29f0, 0xffff, 0x2a56, 0x2aad, 0x2aff, + // Entry 1CC00 - 1CC3F + 0xffff, 0x2b69, 0x2bc0, 0xffff, 0xffff, 0xffff, 0x2c52, 0x2cab, + 0x0003, 0x083b, 0x08aa, 0x086e, 0x0031, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, + // Entry 1CC40 - 1CC7F + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x27b7, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, + // Entry 1CC80 - 1CCBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, + 0x0173, 0x023d, 0x0008, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0025, 0x003f, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1CCC0 - 1CCFF + 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, + 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, + 0x0001, 0x0017, 0x03cc, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x002e, 0x0000, 0x0000, 0x0004, 0x003c, 0x0036, 0x0033, + 0x0039, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, + 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, 0x0008, 0x0048, 0x007f, + 0x00a4, 0x00b8, 0x012c, 0x0151, 0x0162, 0x0000, 0x0002, 0x004b, + 0x006d, 0x0003, 0x004f, 0x0000, 0x005e, 0x000d, 0x0005, 0xffff, + // Entry 1CD00 - 1CD3F + 0x0636, 0x20fa, 0x220d, 0x2102, 0x21d6, 0x210a, 0x210e, 0x2112, + 0x2116, 0x21da, 0x21de, 0x2212, 0x000d, 0x0016, 0xffff, 0x02c1, + 0x2ba1, 0x2ba9, 0x2baf, 0x2bb5, 0x2bb9, 0x2bbe, 0x2bc3, 0x2bcc, + 0x2bd7, 0x2be0, 0x2bea, 0x0002, 0x0000, 0x0070, 0x000d, 0x0000, + 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x2483, + 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x0082, 0x0098, + 0x0003, 0x0086, 0x0000, 0x008f, 0x0007, 0x001c, 0x0108, 0x2143, + 0x2148, 0x214c, 0x2150, 0x2154, 0x2158, 0x0007, 0x002a, 0x0000, + // Entry 1CD40 - 1CD7F + 0x0008, 0x0012, 0x001c, 0x0025, 0x002f, 0x0037, 0x0002, 0x0000, + 0x009b, 0x0007, 0x0000, 0x2481, 0x247f, 0x22f0, 0x247f, 0x22f0, + 0x22e6, 0x2481, 0x0001, 0x00a6, 0x0003, 0x00aa, 0x0000, 0x00b1, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, + 0x0016, 0xffff, 0x036a, 0x0375, 0x0380, 0x038b, 0x0002, 0x00bb, + 0x0105, 0x0003, 0x00bf, 0x0000, 0x00e2, 0x000a, 0x00cd, 0x00d0, + 0x00ca, 0x00d3, 0x00d6, 0x00dc, 0x00df, 0x0000, 0x0000, 0x00d9, + 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x002a, + // Entry 1CD80 - 1CDBF + 0x0041, 0x0001, 0x002a, 0x0046, 0x0001, 0x002a, 0x004f, 0x0001, + 0x002a, 0x0057, 0x0001, 0x002a, 0x0063, 0x0001, 0x002a, 0x006a, + 0x000a, 0x00f0, 0x00f3, 0x00ed, 0x00f6, 0x00f9, 0x00ff, 0x0102, + 0x0000, 0x0000, 0x00fc, 0x0001, 0x0016, 0x0396, 0x0001, 0x002a, + 0x0071, 0x0001, 0x002a, 0x0057, 0x0001, 0x002a, 0x0046, 0x0001, + 0x002a, 0x004f, 0x0001, 0x002a, 0x0057, 0x0001, 0x002a, 0x0063, + 0x0001, 0x002a, 0x006a, 0x0003, 0x0000, 0x0000, 0x0109, 0x000a, + 0x0117, 0x011a, 0x0114, 0x011d, 0x0120, 0x0126, 0x0129, 0x0000, + // Entry 1CDC0 - 1CDFF + 0x0000, 0x0123, 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03eb, + 0x0001, 0x002a, 0x007e, 0x0001, 0x002a, 0x0087, 0x0001, 0x0016, + 0x03f5, 0x0001, 0x002a, 0x007e, 0x0001, 0x002a, 0x008d, 0x0001, + 0x0016, 0x040d, 0x0003, 0x013b, 0x0146, 0x0130, 0x0002, 0x0133, + 0x0137, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x002a, 0x0093, + 0x00b6, 0x0002, 0x013e, 0x0142, 0x0002, 0x0016, 0x0413, 0x0434, + 0x0002, 0x002a, 0x00d5, 0x00de, 0x0002, 0x0149, 0x014d, 0x0002, + 0x0016, 0x0413, 0x0434, 0x0002, 0x002a, 0x00e4, 0x00e8, 0x0004, + // Entry 1CE00 - 1CE3F + 0x015f, 0x0159, 0x0156, 0x015c, 0x0001, 0x0016, 0x0460, 0x0001, + 0x0013, 0x06b1, 0x0001, 0x0016, 0x0470, 0x0001, 0x0007, 0x0277, + 0x0004, 0x0170, 0x016a, 0x0167, 0x016d, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0040, 0x01b4, 0x0000, 0x0000, 0x01b9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01c4, 0x0000, 0x0000, 0x01cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01da, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1CE40 - 1CE7F + 0x01ec, 0x0000, 0x0000, 0x01f4, 0x0000, 0x0000, 0x01fc, 0x0000, + 0x0000, 0x0204, 0x0000, 0x0000, 0x020c, 0x0000, 0x0000, 0x0214, + 0x0000, 0x0000, 0x021c, 0x0000, 0x0000, 0x0000, 0x0224, 0x0000, + 0x0229, 0x0000, 0x0000, 0x022e, 0x0000, 0x0000, 0x0233, 0x0000, + 0x0000, 0x0238, 0x0001, 0x01b6, 0x0001, 0x0016, 0x0478, 0x0002, + 0x01bc, 0x01bf, 0x0001, 0x002a, 0x00eb, 0x0003, 0x002a, 0x00f0, + 0x00fc, 0x0107, 0x0002, 0x01c7, 0x01ca, 0x0001, 0x002a, 0x0115, + 0x0003, 0x002a, 0x011b, 0x0128, 0x0134, 0x0002, 0x01d2, 0x01d5, + // Entry 1CE80 - 1CEBF + 0x0001, 0x002a, 0x0143, 0x0003, 0x002a, 0x0149, 0x0156, 0x0162, + 0x0002, 0x01dd, 0x01e0, 0x0001, 0x0016, 0x06ae, 0x0005, 0x002a, + 0x017d, 0x0186, 0x018b, 0x0171, 0x0191, 0x0001, 0x01e9, 0x0001, + 0x002a, 0x019c, 0x0002, 0x0000, 0x01ef, 0x0003, 0x002a, 0x01a5, + 0x01ba, 0x01ce, 0x0002, 0x0000, 0x01f7, 0x0003, 0x002a, 0x01e5, + 0x01fc, 0x0212, 0x0002, 0x0000, 0x01ff, 0x0003, 0x002a, 0x022b, + 0x0242, 0x0258, 0x0002, 0x0000, 0x0207, 0x0003, 0x002a, 0x0271, + 0x0287, 0x029c, 0x0002, 0x0000, 0x020f, 0x0003, 0x002a, 0x02b4, + // Entry 1CEC0 - 1CEFF + 0x02cb, 0x02e1, 0x0002, 0x0000, 0x0217, 0x0003, 0x002a, 0x02fa, + 0x030f, 0x0323, 0x0002, 0x0000, 0x021f, 0x0003, 0x002a, 0x033a, + 0x0351, 0x0367, 0x0001, 0x0226, 0x0001, 0x002a, 0x0380, 0x0001, + 0x022b, 0x0001, 0x002a, 0x038d, 0x0001, 0x0230, 0x0001, 0x002a, + 0x0395, 0x0001, 0x0235, 0x0001, 0x0009, 0x030c, 0x0001, 0x023a, + 0x0001, 0x0000, 0x1dc2, 0x0004, 0x0242, 0x0000, 0x0000, 0x0246, + 0x0002, 0x0000, 0x1dc7, 0x238b, 0x0002, 0x041b, 0x0249, 0x0003, + 0x024d, 0x0381, 0x02e7, 0x0098, 0x002a, 0xffff, 0xffff, 0xffff, + // Entry 1CF00 - 1CF3F + 0xffff, 0x0426, 0x047e, 0x04e6, 0x0520, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0572, 0x05ca, 0xffff, 0x061f, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1CF40 - 1CF7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0677, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1CF80 - 1CFBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x039d, 0x04b2, 0x0098, 0x002a, 0x03cb, + 0x03de, 0x03f7, 0x040e, 0x043e, 0x048a, 0x04f4, 0x0536, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1CFC0 - 1CFFF + 0xffff, 0xffff, 0xffff, 0xffff, 0x058a, 0x05e1, 0xffff, 0x0637, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0685, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1D000 - 1D03F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03a7, 0x04be, 0x0098, + 0x002a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0460, 0x04a0, 0x050c, + 0x0556, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1D040 - 1D07F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05ac, 0x0602, + 0xffff, 0x0659, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1D080 - 1D0BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x069d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1D0C0 - 1D0FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03bb, + 0x04d4, 0x0003, 0x041f, 0x0485, 0x0452, 0x0031, 0x0016, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, + // Entry 1D100 - 1D13F + 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, + 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1D140 - 1D17F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0003, 0x0004, + 0x0249, 0x0651, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000f, 0x003a, 0x0000, 0x0240, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0029, 0x0004, 0x0026, + // Entry 1D180 - 1D1BF + 0x0020, 0x001d, 0x0023, 0x0001, 0x002a, 0x06b1, 0x0001, 0x002a, + 0x06c3, 0x0001, 0x002a, 0x06cf, 0x0001, 0x002a, 0x06da, 0x0004, + 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0043, 0x00a8, 0x00ff, 0x0134, 0x01ed, 0x020d, 0x021e, + 0x022f, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, + 0x000d, 0x002a, 0xffff, 0x06e8, 0x06fb, 0x070e, 0x071e, 0x0731, + 0x0738, 0x0742, 0x0752, 0x0762, 0x0772, 0x0782, 0x078c, 0x000d, + // Entry 1D1C0 - 1D1FF + 0x002a, 0xffff, 0x0799, 0x07a0, 0x07a7, 0x07ae, 0x0731, 0x07b2, + 0x07b9, 0x07c0, 0x07c4, 0x07c0, 0x07c8, 0x07cc, 0x000d, 0x002a, + 0xffff, 0x07d3, 0x07ef, 0x070e, 0x071e, 0x0731, 0x0738, 0x0742, + 0x0752, 0x080b, 0x0827, 0x083d, 0x0853, 0x0003, 0x007b, 0x008a, + 0x0099, 0x000d, 0x002a, 0xffff, 0x06e8, 0x06fb, 0x070e, 0x071e, + 0x0731, 0x0738, 0x0742, 0x0752, 0x0762, 0x0772, 0x0782, 0x078c, + 0x000d, 0x002a, 0xffff, 0x0799, 0x07a0, 0x07a7, 0x07ae, 0x0731, + 0x07b2, 0x07b9, 0x07c0, 0x07c4, 0x07c0, 0x07c8, 0x07cc, 0x000d, + // Entry 1D200 - 1D23F + 0x002a, 0xffff, 0x07d3, 0x07ef, 0x070e, 0x071e, 0x0731, 0x0738, + 0x0742, 0x0752, 0x080b, 0x0827, 0x083d, 0x0853, 0x0002, 0x00ab, + 0x00d5, 0x0005, 0x00b1, 0x00ba, 0x00cc, 0x0000, 0x00c3, 0x0007, + 0x002a, 0x086c, 0x0876, 0x0880, 0x088d, 0x0897, 0x08a4, 0x08b4, + 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, 0x08d0, 0x08d7, 0x08de, + 0x08e5, 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, 0x08d0, 0x08d7, + 0x08de, 0x08e5, 0x0007, 0x002a, 0x08e9, 0x08fc, 0x090f, 0x0925, + 0x0938, 0x094e, 0x0967, 0x0005, 0x00db, 0x00e4, 0x00f6, 0x0000, + // Entry 1D240 - 1D27F + 0x00ed, 0x0007, 0x002a, 0x086c, 0x0876, 0x0880, 0x088d, 0x0897, + 0x08a4, 0x08b4, 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, 0x08d0, + 0x08d7, 0x08de, 0x08e5, 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, + 0x08d0, 0x08d7, 0x08de, 0x08e5, 0x0007, 0x002a, 0x08e9, 0x08fc, + 0x090f, 0x0925, 0x0938, 0x094e, 0x0967, 0x0002, 0x0102, 0x011b, + 0x0003, 0x0106, 0x010d, 0x0114, 0x0005, 0x0000, 0xffff, 0x04e3, + 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x002a, 0xffff, 0x097a, 0x09a0, 0x09c3, + // Entry 1D280 - 1D2BF + 0x09ec, 0x0003, 0x011f, 0x0126, 0x012d, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x002a, 0xffff, 0x097a, 0x09a0, + 0x09c3, 0x09ec, 0x0002, 0x0137, 0x0192, 0x0003, 0x013b, 0x0158, + 0x0175, 0x0007, 0x0146, 0x0149, 0x0143, 0x014c, 0x014f, 0x0152, + 0x0155, 0x0001, 0x002a, 0x0a0f, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, 0x0001, 0x002a, 0x0a3e, + 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, 0x0a5e, 0x0007, 0x0163, + // Entry 1D2C0 - 1D2FF + 0x0166, 0x0160, 0x0169, 0x016c, 0x016f, 0x0172, 0x0001, 0x002a, + 0x0a71, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x002a, 0x0a2e, 0x0001, 0x002a, 0x0a3e, 0x0001, 0x002a, 0x0a4e, + 0x0001, 0x002a, 0x0a5e, 0x0007, 0x0180, 0x0183, 0x017d, 0x0186, + 0x0189, 0x018c, 0x018f, 0x0001, 0x002a, 0x0a0f, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, 0x0001, + 0x002a, 0x0a3e, 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, 0x0a5e, + 0x0003, 0x0196, 0x01b3, 0x01d0, 0x0007, 0x01a1, 0x01a4, 0x019e, + // Entry 1D300 - 1D33F + 0x01a7, 0x01aa, 0x01ad, 0x01b0, 0x0001, 0x002a, 0x0a0f, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, + 0x0001, 0x002a, 0x0a3e, 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, + 0x0a5e, 0x0007, 0x01be, 0x01c1, 0x01bb, 0x01c4, 0x01c7, 0x01ca, + 0x01cd, 0x0001, 0x002a, 0x0a0f, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, 0x0001, 0x002a, 0x0a3e, + 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, 0x0a5e, 0x0007, 0x01db, + 0x01de, 0x01d8, 0x01e1, 0x01e4, 0x01e7, 0x01ea, 0x0001, 0x002a, + // Entry 1D340 - 1D37F + 0x0a0f, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x002a, 0x0a88, 0x0001, 0x002a, 0x0a95, 0x0001, 0x002a, 0x0aa2, + 0x0001, 0x002a, 0x0aaf, 0x0003, 0x01fc, 0x0207, 0x01f1, 0x0002, + 0x01f4, 0x01f8, 0x0002, 0x002a, 0x0ac2, 0x0b18, 0x0002, 0x002a, + 0x0ae8, 0x0b2b, 0x0002, 0x01ff, 0x0203, 0x0002, 0x002a, 0x0b4b, + 0x0b79, 0x0002, 0x002a, 0x0b66, 0x0b82, 0x0001, 0x0209, 0x0002, + 0x002a, 0x0b91, 0x0ba0, 0x0004, 0x021b, 0x0215, 0x0212, 0x0218, + 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, + // Entry 1D380 - 1D3BF + 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x022c, 0x0226, 0x0223, + 0x0229, 0x0001, 0x002a, 0x0ba7, 0x0001, 0x002a, 0x0bb7, 0x0001, + 0x002a, 0x0bc4, 0x0001, 0x002a, 0x0bcf, 0x0004, 0x023d, 0x0237, + 0x0234, 0x023a, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0040, + 0x028a, 0x0000, 0x0000, 0x028f, 0x02a6, 0x02bd, 0x02d4, 0x02eb, + 0x02fd, 0x030f, 0x0326, 0x033d, 0x0354, 0x036f, 0x038a, 0x0000, + // Entry 1D3C0 - 1D3FF + 0x0000, 0x0000, 0x03a5, 0x03be, 0x03d7, 0x0000, 0x0000, 0x0000, + 0x03f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f5, 0x0409, + 0x041d, 0x0431, 0x0445, 0x0459, 0x046d, 0x0481, 0x0495, 0x04a9, + 0x04bd, 0x04d1, 0x04e5, 0x04f9, 0x050d, 0x0521, 0x0535, 0x0549, + 0x055d, 0x0571, 0x0585, 0x0000, 0x0599, 0x0000, 0x059e, 0x05b4, + 0x05c6, 0x05d8, 0x05ee, 0x0600, 0x0612, 0x0628, 0x063a, 0x064c, + 0x0001, 0x028c, 0x0001, 0x002a, 0x0bd7, 0x0003, 0x0293, 0x0296, + 0x029b, 0x0001, 0x002a, 0x0be1, 0x0003, 0x002a, 0x0bee, 0x0c08, + // Entry 1D400 - 1D43F + 0x0c1c, 0x0002, 0x029e, 0x02a2, 0x0002, 0x002a, 0x0c39, 0x0c39, + 0x0002, 0x002a, 0x0c53, 0x0c53, 0x0003, 0x02aa, 0x02ad, 0x02b2, + 0x0001, 0x002a, 0x0c77, 0x0003, 0x002a, 0x0bee, 0x0c08, 0x0c1c, + 0x0002, 0x02b5, 0x02b9, 0x0002, 0x002a, 0x0c39, 0x0c39, 0x0002, + 0x002a, 0x0c53, 0x0c53, 0x0003, 0x02c1, 0x02c4, 0x02c9, 0x0001, + 0x002a, 0x0c77, 0x0003, 0x002a, 0x0bee, 0x0c08, 0x0c1c, 0x0002, + 0x02cc, 0x02d0, 0x0002, 0x002a, 0x0c7c, 0x0c39, 0x0002, 0x002a, + 0x0caf, 0x0c8e, 0x0003, 0x02d8, 0x02db, 0x02e0, 0x0001, 0x002a, + // Entry 1D440 - 1D47F + 0x0cc1, 0x0003, 0x002a, 0x0cdd, 0x0d0f, 0x0d2f, 0x0002, 0x02e3, + 0x02e7, 0x0002, 0x002a, 0x0d5e, 0x0d5e, 0x0002, 0x002a, 0x0d87, + 0x0d87, 0x0003, 0x02ef, 0x0000, 0x02f2, 0x0001, 0x002a, 0x0dba, + 0x0002, 0x02f5, 0x02f9, 0x0002, 0x002a, 0x0dd1, 0x0dd1, 0x0002, + 0x002a, 0x0df4, 0x0df4, 0x0003, 0x0301, 0x0000, 0x0304, 0x0001, + 0x002a, 0x0dba, 0x0002, 0x0307, 0x030b, 0x0002, 0x002a, 0x0dd1, + 0x0dd1, 0x0002, 0x002a, 0x0df4, 0x0df4, 0x0003, 0x0313, 0x0316, + 0x031b, 0x0001, 0x002a, 0x0e21, 0x0003, 0x002a, 0x0e31, 0x0e4b, + // Entry 1D480 - 1D4BF + 0x0e5f, 0x0002, 0x031e, 0x0322, 0x0002, 0x002a, 0x0e7c, 0x0e7c, + 0x0002, 0x002a, 0x0e99, 0x0e99, 0x0003, 0x032a, 0x032d, 0x0332, + 0x0001, 0x002a, 0x0ec0, 0x0003, 0x002a, 0x0e31, 0x0e4b, 0x0e5f, + 0x0002, 0x0335, 0x0339, 0x0002, 0x002a, 0x0e7c, 0x0e7c, 0x0002, + 0x002a, 0x0e99, 0x0e99, 0x0003, 0x0341, 0x0344, 0x0349, 0x0001, + 0x002a, 0x0ec0, 0x0003, 0x002a, 0x0e31, 0x0e4b, 0x0e5f, 0x0002, + 0x034c, 0x0350, 0x0002, 0x002a, 0x0e7c, 0x0e7c, 0x0002, 0x002a, + 0x0e99, 0x0e99, 0x0004, 0x0359, 0x035c, 0x0361, 0x036c, 0x0001, + // Entry 1D4C0 - 1D4FF + 0x002a, 0x0ec5, 0x0003, 0x002a, 0x0ee1, 0x0f04, 0x0f21, 0x0002, + 0x0364, 0x0368, 0x0002, 0x002a, 0x0f47, 0x0f47, 0x0002, 0x002a, + 0x0f6d, 0x0f6d, 0x0001, 0x002a, 0x0f9d, 0x0004, 0x0374, 0x0377, + 0x037c, 0x0387, 0x0001, 0x002a, 0x0fc7, 0x0003, 0x002a, 0x0ee1, + 0x0f04, 0x0f21, 0x0002, 0x037f, 0x0383, 0x0002, 0x002a, 0x0fcf, + 0x0fcf, 0x0002, 0x002a, 0x0fe5, 0x0fe5, 0x0001, 0x002a, 0x0f9d, + 0x0004, 0x038f, 0x0392, 0x0397, 0x03a2, 0x0001, 0x002a, 0x0fc7, + 0x0003, 0x002a, 0x0ee1, 0x0f04, 0x0f21, 0x0002, 0x039a, 0x039e, + // Entry 1D500 - 1D53F + 0x0002, 0x002a, 0x0fcf, 0x0fcf, 0x0002, 0x002a, 0x0fe5, 0x0fe5, + 0x0001, 0x002a, 0x0f9d, 0x0003, 0x03a9, 0x03ac, 0x03b3, 0x0001, + 0x002a, 0x1004, 0x0005, 0x002a, 0x1034, 0x1047, 0x1051, 0x1011, + 0x106a, 0x0002, 0x03b6, 0x03ba, 0x0002, 0x002a, 0x1083, 0x1083, + 0x0002, 0x002a, 0x109d, 0x109d, 0x0003, 0x03c2, 0x03c5, 0x03cc, + 0x0001, 0x002a, 0x1004, 0x0005, 0x002a, 0x1034, 0x1047, 0x1051, + 0x1011, 0x106a, 0x0002, 0x03cf, 0x03d3, 0x0002, 0x002a, 0x1083, + 0x1083, 0x0002, 0x002a, 0x109d, 0x109d, 0x0003, 0x03db, 0x03de, + // Entry 1D540 - 1D57F + 0x03e5, 0x0001, 0x002a, 0x1004, 0x0005, 0x002a, 0x1034, 0x1047, + 0x1051, 0x1011, 0x106a, 0x0002, 0x03e8, 0x03ec, 0x0002, 0x002a, + 0x10c1, 0x10c1, 0x0002, 0x002a, 0x10d3, 0x10d3, 0x0001, 0x03f2, + 0x0001, 0x002a, 0x10e5, 0x0003, 0x0000, 0x03f9, 0x03fe, 0x0003, + 0x002a, 0x1111, 0x1131, 0x114b, 0x0002, 0x0401, 0x0405, 0x0002, + 0x002a, 0x116e, 0x116e, 0x0002, 0x002a, 0x1186, 0x1186, 0x0003, + 0x0000, 0x040d, 0x0412, 0x0003, 0x002a, 0x1111, 0x1131, 0x114b, + 0x0002, 0x0415, 0x0419, 0x0002, 0x002a, 0x116e, 0x116e, 0x0002, + // Entry 1D580 - 1D5BF + 0x002a, 0x1186, 0x1186, 0x0003, 0x0000, 0x0421, 0x0426, 0x0003, + 0x002a, 0x119e, 0x11b3, 0x11c1, 0x0002, 0x0429, 0x042d, 0x0002, + 0x002a, 0x116e, 0x116e, 0x0002, 0x002a, 0x1186, 0x1186, 0x0003, + 0x0000, 0x0435, 0x043a, 0x0003, 0x002a, 0x11d8, 0x11f8, 0x1212, + 0x0002, 0x043d, 0x0441, 0x0002, 0x002a, 0x1235, 0x1235, 0x0002, + 0x002a, 0x124d, 0x124d, 0x0003, 0x0000, 0x0449, 0x044e, 0x0003, + 0x002a, 0x11d8, 0x11f8, 0x1212, 0x0002, 0x0451, 0x0455, 0x0002, + 0x002a, 0x1235, 0x1235, 0x0002, 0x002a, 0x124d, 0x124d, 0x0003, + // Entry 1D5C0 - 1D5FF + 0x0000, 0x045d, 0x0462, 0x0003, 0x002a, 0x11d8, 0x11f8, 0x1212, + 0x0002, 0x0465, 0x0469, 0x0002, 0x002a, 0x1235, 0x1235, 0x0002, + 0x002a, 0x124d, 0x124d, 0x0003, 0x0000, 0x0471, 0x0476, 0x0003, + 0x002a, 0x1265, 0x1288, 0x12a5, 0x0002, 0x0479, 0x047d, 0x0002, + 0x002a, 0x12cb, 0x12cb, 0x0002, 0x002a, 0x12e6, 0x12e6, 0x0003, + 0x0000, 0x0485, 0x048a, 0x0003, 0x002a, 0x1265, 0x1288, 0x12a5, + 0x0002, 0x048d, 0x0491, 0x0002, 0x002a, 0x12cb, 0x12cb, 0x0002, + 0x002a, 0x12e6, 0x12e6, 0x0003, 0x0000, 0x0499, 0x049e, 0x0003, + // Entry 1D600 - 1D63F + 0x002a, 0x1265, 0x1288, 0x12a5, 0x0002, 0x04a1, 0x04a5, 0x0002, + 0x002a, 0x12cb, 0x12cb, 0x0002, 0x002a, 0x12e6, 0x12e6, 0x0003, + 0x0000, 0x04ad, 0x04b2, 0x0003, 0x002a, 0x1301, 0x1321, 0x133b, + 0x0002, 0x04b5, 0x04b9, 0x0002, 0x002a, 0x135e, 0x135e, 0x0002, + 0x002a, 0x1376, 0x1376, 0x0003, 0x0000, 0x04c1, 0x04c6, 0x0003, + 0x002a, 0x1301, 0x1321, 0x133b, 0x0002, 0x04c9, 0x04cd, 0x0002, + 0x002a, 0x135e, 0x135e, 0x0002, 0x002a, 0x1376, 0x1376, 0x0003, + 0x0000, 0x04d5, 0x04da, 0x0003, 0x002a, 0x1301, 0x1321, 0x133b, + // Entry 1D640 - 1D67F + 0x0002, 0x04dd, 0x04e1, 0x0002, 0x002a, 0x135e, 0x135e, 0x0002, + 0x002a, 0x1376, 0x1376, 0x0003, 0x0000, 0x04e9, 0x04ee, 0x0003, + 0x002a, 0x138e, 0x13b1, 0x13ce, 0x0002, 0x04f1, 0x04f5, 0x0002, + 0x002a, 0x13f4, 0x13f4, 0x0002, 0x002a, 0x140f, 0x140f, 0x0003, + 0x0000, 0x04fd, 0x0502, 0x0003, 0x002a, 0x138e, 0x13b1, 0x13ce, + 0x0002, 0x0505, 0x0509, 0x0002, 0x002a, 0x13f4, 0x13f4, 0x0002, + 0x002a, 0x140f, 0x140f, 0x0003, 0x0000, 0x0511, 0x0516, 0x0003, + 0x002a, 0x138e, 0x13b1, 0x13ce, 0x0002, 0x0519, 0x051d, 0x0002, + // Entry 1D680 - 1D6BF + 0x002a, 0x13f4, 0x13f4, 0x0002, 0x002a, 0x140f, 0x140f, 0x0003, + 0x0000, 0x0525, 0x052a, 0x0003, 0x002a, 0x142a, 0x1450, 0x1470, + 0x0002, 0x052d, 0x0531, 0x0002, 0x002a, 0x1499, 0x1499, 0x0002, + 0x002a, 0x14b7, 0x14b7, 0x0003, 0x0000, 0x0539, 0x053e, 0x0003, + 0x002a, 0x142a, 0x1450, 0x1470, 0x0002, 0x0541, 0x0545, 0x0002, + 0x002a, 0x1499, 0x1499, 0x0002, 0x002a, 0x14b7, 0x14b7, 0x0003, + 0x0000, 0x054d, 0x0552, 0x0003, 0x002a, 0x142a, 0x1450, 0x1470, + 0x0002, 0x0555, 0x0559, 0x0002, 0x002a, 0x1499, 0x1499, 0x0002, + // Entry 1D6C0 - 1D6FF + 0x002a, 0x14b7, 0x14b7, 0x0003, 0x0000, 0x0561, 0x0566, 0x0003, + 0x002a, 0x14d5, 0x14f5, 0x150f, 0x0002, 0x0569, 0x056d, 0x0002, + 0x002a, 0x1532, 0x1532, 0x0002, 0x002a, 0x154a, 0x154a, 0x0003, + 0x0000, 0x0575, 0x057a, 0x0003, 0x002a, 0x14d5, 0x14f5, 0x150f, + 0x0002, 0x057d, 0x0581, 0x0002, 0x002a, 0x1532, 0x1532, 0x0002, + 0x002a, 0x154a, 0x154a, 0x0003, 0x0000, 0x0589, 0x058e, 0x0003, + 0x002a, 0x14d5, 0x14f5, 0x150f, 0x0002, 0x0591, 0x0595, 0x0002, + 0x002a, 0x1532, 0x1532, 0x0002, 0x002a, 0x154a, 0x154a, 0x0001, + // Entry 1D700 - 1D73F + 0x059b, 0x0001, 0x0007, 0x07cc, 0x0003, 0x05a2, 0x05a5, 0x05a9, + 0x0001, 0x002a, 0x1562, 0x0002, 0x002a, 0xffff, 0x156f, 0x0002, + 0x05ac, 0x05b0, 0x0002, 0x002a, 0x1580, 0x1580, 0x0002, 0x002a, + 0x159a, 0x159a, 0x0003, 0x05b8, 0x0000, 0x05bb, 0x0001, 0x002a, + 0x15be, 0x0002, 0x05be, 0x05c2, 0x0002, 0x002a, 0x1580, 0x1580, + 0x0002, 0x002a, 0x159a, 0x159a, 0x0003, 0x05ca, 0x0000, 0x05cd, + 0x0001, 0x002a, 0x15be, 0x0002, 0x05d0, 0x05d4, 0x0002, 0x002a, + 0x1580, 0x1580, 0x0002, 0x002a, 0x159a, 0x159a, 0x0003, 0x05dc, + // Entry 1D740 - 1D77F + 0x05df, 0x05e3, 0x0001, 0x002a, 0x15c3, 0x0002, 0x002a, 0xffff, + 0x15d3, 0x0002, 0x05e6, 0x05ea, 0x0002, 0x002a, 0x15e7, 0x15e7, + 0x0002, 0x002a, 0x1604, 0x1604, 0x0003, 0x05f2, 0x0000, 0x05f5, + 0x0001, 0x002a, 0x162b, 0x0002, 0x05f8, 0x05fc, 0x0002, 0x002a, + 0x15e7, 0x15e7, 0x0002, 0x002a, 0x1604, 0x1604, 0x0003, 0x0604, + 0x0000, 0x0607, 0x0001, 0x002a, 0x162b, 0x0002, 0x060a, 0x060e, + 0x0002, 0x002a, 0x15e7, 0x15e7, 0x0002, 0x002a, 0x1604, 0x1604, + 0x0003, 0x0616, 0x0619, 0x061d, 0x0001, 0x002a, 0x1633, 0x0002, + // Entry 1D780 - 1D7BF + 0x002a, 0xffff, 0x1646, 0x0002, 0x0620, 0x0624, 0x0002, 0x002a, + 0x1656, 0x1656, 0x0002, 0x002a, 0x1673, 0x1673, 0x0003, 0x062c, + 0x0000, 0x062f, 0x0001, 0x002a, 0x169a, 0x0002, 0x0632, 0x0636, + 0x0002, 0x002a, 0x1656, 0x1656, 0x0002, 0x002a, 0x1673, 0x1673, + 0x0003, 0x063e, 0x0000, 0x0641, 0x0001, 0x002a, 0x169a, 0x0002, + 0x0644, 0x0648, 0x0002, 0x002a, 0x1656, 0x1656, 0x0002, 0x002a, + 0x1673, 0x1673, 0x0001, 0x064e, 0x0001, 0x002a, 0x16a2, 0x0004, + 0x0656, 0x065b, 0x0660, 0x066f, 0x0003, 0x0000, 0x1dc7, 0x238b, + // Entry 1D7C0 - 1D7FF + 0x253a, 0x0003, 0x002a, 0x16b6, 0x16c4, 0x16cd, 0x0002, 0x0000, + 0x0663, 0x0003, 0x0000, 0x066a, 0x0667, 0x0001, 0x002a, 0x16e8, + 0x0003, 0x002a, 0xffff, 0x1721, 0x1757, 0x0002, 0x0856, 0x0672, + 0x0003, 0x0676, 0x07b6, 0x0716, 0x009e, 0x002a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x18b5, 0x1971, 0x1a8c, 0x1b06, 0x1bf5, 0x1ce7, + 0x1de2, 0x1edd, 0x1f66, 0x20ef, 0x2169, 0x2210, 0x22f9, 0x238e, + 0x2429, 0x24fd, 0x2613, 0x2702, 0x27f1, 0x287d, 0x28f7, 0xffff, + 0xffff, 0x29d2, 0xffff, 0x2aa9, 0xffff, 0x2b62, 0x2bd3, 0x2c3b, + // Entry 1D800 - 1D83F + 0x2c91, 0xffff, 0xffff, 0x2d8c, 0x2e18, 0x2ed8, 0xffff, 0xffff, + 0xffff, 0x2fcf, 0xffff, 0x30a5, 0x3158, 0xffff, 0x3269, 0x3337, + 0x340e, 0xffff, 0xffff, 0xffff, 0xffff, 0x3551, 0xffff, 0xffff, + 0x3658, 0x3726, 0xffff, 0xffff, 0x3871, 0x3924, 0x39b3, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3b67, 0x3bc6, 0x3c64, + 0x3cd5, 0x3d3d, 0xffff, 0xffff, 0x3ee9, 0xffff, 0x3f74, 0xffff, + 0xffff, 0x40af, 0xffff, 0x41f4, 0xffff, 0xffff, 0xffff, 0xffff, + 0x4304, 0xffff, 0x43a7, 0x4490, 0x4555, 0x45ea, 0xffff, 0xffff, + // Entry 1D840 - 1D87F + 0xffff, 0x46c7, 0x478c, 0x482a, 0xffff, 0xffff, 0x4945, 0x4a76, + 0x4b26, 0x4b9d, 0xffff, 0xffff, 0x4c7d, 0x4d09, 0x4d71, 0xffff, + 0x4e39, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x508a, 0x5104, + 0x5184, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x5308, 0xffff, 0xffff, 0x53c2, 0xffff, 0x544a, 0xffff, 0x5526, + 0x55a9, 0x5659, 0xffff, 0x56f0, 0x57a9, 0xffff, 0xffff, 0xffff, + 0x58d7, 0x596c, 0xffff, 0xffff, 0x177e, 0x19fa, 0x1fdd, 0x2066, + 0xffff, 0xffff, 0x4144, 0x4f9d, 0x009e, 0x002a, 0x17ec, 0x1818, + // Entry 1D880 - 1D8BF + 0x1845, 0x1875, 0x18e8, 0x1991, 0x1aa9, 0x1b43, 0x1c38, 0x1d2d, + 0x1e28, 0x1efa, 0x1f80, 0x210f, 0x2195, 0x2252, 0x231f, 0x23b4, + 0x2462, 0x254c, 0x2655, 0x2744, 0x2814, 0x289a, 0x2920, 0x2995, + 0x29af, 0x29fb, 0x2a70, 0x2acd, 0x2b38, 0x2b7f, 0x2bea, 0x2c4f, + 0x2cb7, 0x2d26, 0x2d5c, 0x2daf, 0x2e48, 0x2ef5, 0x2f49, 0x2f63, + 0x2fa5, 0x2fff, 0x3082, 0x30d5, 0x318e, 0x321d, 0x32a2, 0x3373, + 0x3425, 0x3476, 0x34a6, 0x3508, 0x352e, 0x357a, 0x35ef, 0x3625, + 0x3691, 0x3762, 0x3833, 0x3857, 0x38a4, 0x3948, 0x39cd, 0x3a24, + // Entry 1D8C0 - 1D8FF + 0x3a4e, 0x3a81, 0x3aaa, 0x3ae3, 0x3b25, 0x3b7e, 0x3bef, 0x3c81, + 0x3cef, 0x3d94, 0x3e74, 0x3ead, 0x3f06, 0x3f5a, 0x3faf, 0x403c, + 0x407c, 0x40d3, 0x41bb, 0x420e, 0x4265, 0x4285, 0x42a2, 0x42cb, + 0x4327, 0x4390, 0x43ec, 0x44c9, 0x457c, 0x4607, 0x4673, 0x4696, + 0x46ad, 0x46fd, 0x47b8, 0x4862, 0x48fb, 0x4912, 0x498b, 0x4aa5, + 0x4b43, 0x4bc3, 0x4c32, 0x4c49, 0x4ca0, 0x4d20, 0x4d94, 0x4dfd, + 0x4e83, 0x4f31, 0x4f57, 0x4f71, 0x504a, 0x506d, 0x50a7, 0x511e, + 0x519b, 0x51ec, 0x5209, 0x5239, 0x5272, 0x52ae, 0x52ce, 0x52eb, + // Entry 1D900 - 1D93F + 0x5325, 0x5379, 0x53a5, 0x53dc, 0x5433, 0x547f, 0x550c, 0x5546, + 0x55d8, 0x5673, 0x56ca, 0x5722, 0x57d5, 0x5850, 0x5870, 0x589a, + 0x58fd, 0x599e, 0x37fd, 0x4a31, 0x1792, 0x1a1a, 0x1ffa, 0x2083, + 0xffff, 0x4065, 0x415b, 0x4fc6, 0x009e, 0x002a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1928, 0x19cd, 0x1ad3, 0x1bab, 0x1c97, 0x1d8f, + 0x1e8a, 0x1f33, 0x1fb6, 0x213c, 0x21ce, 0x22a1, 0x2352, 0x23f6, + 0x24b7, 0x25b7, 0x26b3, 0x27a2, 0x2844, 0x28c4, 0x2956, 0xffff, + 0xffff, 0x2a31, 0xffff, 0x2afe, 0xffff, 0x2ba9, 0x2c0e, 0x2c70, + // Entry 1D940 - 1D97F + 0x2cea, 0xffff, 0xffff, 0x2ddf, 0x2e85, 0x2f1f, 0xffff, 0xffff, + 0xffff, 0x303c, 0xffff, 0x3112, 0x31d1, 0xffff, 0x32e8, 0x33bc, + 0x3449, 0xffff, 0xffff, 0xffff, 0xffff, 0x35b0, 0xffff, 0xffff, + 0x36d7, 0x37ab, 0xffff, 0xffff, 0x38e4, 0x3979, 0x39f4, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3ba2, 0x3c25, 0x3cab, + 0x3d16, 0x3e07, 0xffff, 0xffff, 0x3f30, 0xffff, 0x3ff1, 0xffff, + 0xffff, 0x4113, 0xffff, 0x4235, 0xffff, 0xffff, 0xffff, 0xffff, + 0x4357, 0xffff, 0x443e, 0x450f, 0x45b0, 0x4640, 0xffff, 0xffff, + // Entry 1D980 - 1D9BF + 0xffff, 0x4740, 0x47f1, 0x48b6, 0xffff, 0xffff, 0x49de, 0x4ae1, + 0x4b6a, 0x4bf6, 0xffff, 0xffff, 0x4cd0, 0x4d44, 0x4dc4, 0xffff, + 0x4eda, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x50d1, 0x5154, + 0x51bf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x534f, 0xffff, 0xffff, 0x5403, 0xffff, 0x54c1, 0xffff, 0x5573, + 0x5614, 0x569a, 0xffff, 0x5761, 0x580e, 0xffff, 0xffff, 0xffff, + 0x5930, 0x59dd, 0xffff, 0xffff, 0x17c2, 0x1a56, 0x2033, 0x20bc, + 0xffff, 0xffff, 0x418e, 0x500b, 0x0003, 0x0000, 0x0000, 0x085a, + // Entry 1D9C0 - 1D9FF + 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1DA00 - 1DA3F + 0xffff, 0xffff, 0xffff, 0x0000, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x002b, 0xffff, 0x0000, 0x0004, 0x0008, + // Entry 1DA40 - 1DA7F + 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, + 0x002c, 0x000d, 0x002b, 0xffff, 0x0030, 0x0039, 0x0042, 0x0048, + 0x0010, 0x0050, 0x0055, 0x005c, 0x0063, 0x006c, 0x0074, 0x007c, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x24fb, 0x22e6, + 0x247f, 0x2382, 0x247f, 0x2483, 0x24fb, 0x2382, 0x2481, 0x22ec, + 0x22ee, 0x22f0, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x002b, 0x0084, 0x0088, 0x008c, 0x0090, 0x0094, + 0x0098, 0x009c, 0x0007, 0x002b, 0x00a0, 0x00aa, 0x00b4, 0x00bd, + // Entry 1DA80 - 1DABF + 0x00c7, 0x00cf, 0x00d6, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2382, 0x2055, 0x214e, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x002b, 0xffff, + 0x00de, 0x00e1, 0x00e4, 0x00e7, 0x0005, 0x002b, 0xffff, 0x00ea, + 0x00fd, 0x010c, 0x011b, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0016, 0x2b90, 0x0001, + 0x0016, 0x0358, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x002b, 0x0128, + 0x0001, 0x002b, 0x012f, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + // Entry 1DAC0 - 1DAFF + 0x00bd, 0x0002, 0x002b, 0x0133, 0x0142, 0x0001, 0x00c3, 0x0002, + 0x002b, 0x0151, 0x0154, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1DB00 - 1DB3F + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, + 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, + 0x0001, 0x002b, 0x0157, 0x0001, 0x0131, 0x0001, 0x0012, 0x017b, + 0x0001, 0x0136, 0x0001, 0x002b, 0x015d, 0x0001, 0x013b, 0x0001, + // Entry 1DB40 - 1DB7F + 0x002b, 0x0167, 0x0002, 0x0141, 0x0144, 0x0001, 0x002b, 0x0170, + 0x0003, 0x002b, 0x0177, 0x017d, 0x0128, 0x0001, 0x014b, 0x0001, + 0x002b, 0x0182, 0x0001, 0x0150, 0x0001, 0x002b, 0x0193, 0x0001, + 0x0155, 0x0001, 0x002b, 0x01a8, 0x0001, 0x015a, 0x0001, 0x002b, + 0x01ad, 0x0001, 0x015f, 0x0001, 0x002b, 0x01b5, 0x0001, 0x0164, + 0x0001, 0x002b, 0x01be, 0x0003, 0x0004, 0x0000, 0x00ab, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, + // Entry 1DB80 - 1DBBF + 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0000, 0x1dfa, 0x0001, + 0x0000, 0x1e0b, 0x0001, 0x002b, 0x01ce, 0x0001, 0x001c, 0x14e1, + 0x0007, 0x002d, 0x0051, 0x0000, 0x0069, 0x0081, 0x0089, 0x009a, + 0x0001, 0x002f, 0x0003, 0x0033, 0x0000, 0x0042, 0x000d, 0x002b, + 0xffff, 0x01da, 0x01e1, 0x01e9, 0x01f0, 0x01f7, 0x01ff, 0x0208, + 0x0211, 0x021b, 0x0224, 0x022d, 0x0236, 0x000d, 0x002b, 0xffff, + 0x0240, 0x024e, 0x01e9, 0x025e, 0x01f7, 0x0265, 0x0271, 0x0211, + 0x027f, 0x028b, 0x0299, 0x02a4, 0x0001, 0x0053, 0x0003, 0x0057, + // Entry 1DBC0 - 1DBFF + 0x0000, 0x0060, 0x0007, 0x002b, 0x02b3, 0x02b7, 0x02bb, 0x02bf, + 0x02c4, 0x02c9, 0x02cd, 0x0007, 0x002b, 0x02d1, 0x02da, 0x02e2, + 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0001, 0x006b, 0x0003, 0x006f, + 0x0000, 0x0078, 0x0002, 0x0072, 0x0075, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0002, 0x007b, 0x007e, 0x0001, 0x001c, + 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0083, 0x0001, 0x0085, + 0x0002, 0x0027, 0x018c, 0x0193, 0x0004, 0x0097, 0x0091, 0x008e, + 0x0094, 0x0001, 0x002b, 0x030a, 0x0001, 0x0001, 0x002d, 0x0001, + // Entry 1DC00 - 1DC3F + 0x002b, 0x0319, 0x0001, 0x0014, 0x146e, 0x0004, 0x00a8, 0x00a2, + 0x009f, 0x00a5, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, + 0x0000, 0x0000, 0x00b0, 0x0001, 0x00b2, 0x0003, 0x00b6, 0x0125, + 0x00e9, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1DC40 - 1DC7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1DC80 - 1DCBF + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27bb, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + // Entry 1DCC0 - 1DCFF + 0x1355, 0xffff, 0x13e3, 0x0002, 0x0003, 0x018a, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x018e, + 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0005, + 0x0827, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0158, 0x0168, + 0x0179, 0x0000, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, + 0x0054, 0x000d, 0x0005, 0xffff, 0x0636, 0x2216, 0x221a, 0x221e, + // Entry 1DD00 - 1DD3F + 0x2222, 0x2226, 0x222a, 0x222e, 0x2232, 0x2236, 0x223a, 0x223e, + 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, + 0x23db, 0x23db, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, + 0x002b, 0xffff, 0x0323, 0x032b, 0x0335, 0x033b, 0x0343, 0x0348, + 0x034d, 0x0352, 0x0359, 0x0361, 0x0368, 0x0370, 0x0003, 0x0067, + 0x0076, 0x0085, 0x000d, 0x0005, 0xffff, 0x0636, 0x2216, 0x221a, + 0x221e, 0x2222, 0x2226, 0x222a, 0x222e, 0x2232, 0x2236, 0x223a, + 0x223e, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, + // Entry 1DD40 - 1DD7F + 0x247f, 0x23db, 0x23db, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, + 0x000d, 0x002b, 0xffff, 0x0323, 0x032b, 0x0335, 0x033b, 0x0343, + 0x0348, 0x034d, 0x0352, 0x0359, 0x0361, 0x0368, 0x0370, 0x0002, + 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, 0x00af, + 0x0007, 0x002b, 0x0378, 0x037c, 0x0380, 0x0384, 0x0388, 0x038c, + 0x0390, 0x0007, 0x0000, 0x228e, 0x228e, 0x04dd, 0x228e, 0x2382, + 0x2483, 0x2382, 0x0007, 0x002b, 0x0394, 0x0397, 0x039a, 0x039d, + 0x03a0, 0x03a3, 0x03a6, 0x0007, 0x002b, 0x03a9, 0x03b0, 0x03b8, + // Entry 1DD80 - 1DDBF + 0x03bf, 0x03c6, 0x03ce, 0x03d7, 0x0005, 0x00c7, 0x00d0, 0x00e2, + 0x0000, 0x00d9, 0x0007, 0x002b, 0x0378, 0x037c, 0x0380, 0x0384, + 0x0388, 0x038c, 0x0390, 0x0007, 0x0000, 0x228e, 0x228e, 0x04dd, + 0x228e, 0x2382, 0x2483, 0x2382, 0x0007, 0x002b, 0x0394, 0x0397, + 0x039a, 0x039d, 0x03a0, 0x03a3, 0x03a6, 0x0007, 0x002b, 0x03a9, + 0x03b0, 0x03b8, 0x03bf, 0x03c6, 0x03ce, 0x03d7, 0x0002, 0x00ee, + 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, + // Entry 1DDC0 - 1DDFF + 0x0035, 0x0037, 0x2335, 0x0005, 0x002b, 0xffff, 0x03de, 0x03ed, + 0x03fb, 0x0408, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, 0x0000, + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x002b, 0xffff, 0x03de, + 0x03ed, 0x03fb, 0x0408, 0x0002, 0x0123, 0x0139, 0x0003, 0x0127, + 0x0000, 0x0130, 0x0002, 0x012a, 0x012d, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x0133, 0x0136, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x013d, 0x0146, 0x014f, + // Entry 1DE00 - 1DE3F + 0x0002, 0x0140, 0x0143, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0002, 0x0149, 0x014c, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0152, 0x0155, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0003, 0x0162, 0x0000, 0x015c, 0x0001, + 0x015e, 0x0002, 0x002b, 0x0417, 0x042c, 0x0001, 0x0164, 0x0002, + 0x002b, 0x0441, 0x0446, 0x0004, 0x0176, 0x0170, 0x016d, 0x0173, + 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, + 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x0187, 0x0181, 0x017e, + // Entry 1DE40 - 1DE7F + 0x0184, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x01cb, 0x0000, + 0x0000, 0x01d0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d5, + 0x0000, 0x0000, 0x01da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x01df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 1DE80 - 1DEBF + 0x0000, 0x0000, 0x01ef, 0x0000, 0x01f4, 0x0000, 0x0000, 0x01f9, + 0x0000, 0x0000, 0x01fe, 0x0000, 0x0000, 0x0203, 0x0001, 0x01cd, + 0x0001, 0x002b, 0x044b, 0x0001, 0x01d2, 0x0001, 0x002b, 0x0452, + 0x0001, 0x01d7, 0x0001, 0x002b, 0x045a, 0x0001, 0x01dc, 0x0001, + 0x002b, 0x045f, 0x0002, 0x01e2, 0x01e5, 0x0001, 0x002b, 0x0464, + 0x0003, 0x002b, 0x046a, 0x046f, 0x0473, 0x0001, 0x01ec, 0x0001, + 0x002b, 0x0478, 0x0001, 0x01f1, 0x0001, 0x002b, 0x047d, 0x0001, + 0x01f6, 0x0001, 0x002b, 0x0482, 0x0001, 0x01fb, 0x0001, 0x002b, + // Entry 1DEC0 - 1DEFF + 0x0486, 0x0001, 0x0200, 0x0001, 0x002b, 0x048c, 0x0001, 0x0205, + 0x0001, 0x002b, 0x0495, 0x0003, 0x0004, 0x0000, 0x01a3, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, + 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0005, 0x0625, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, 0x0827, + 0x0008, 0x002e, 0x0093, 0x00ea, 0x011f, 0x0160, 0x0170, 0x0181, + 0x0192, 0x0002, 0x0031, 0x0062, 0x0003, 0x0035, 0x0044, 0x0053, + // Entry 1DF00 - 1DF3F + 0x000d, 0x002b, 0xffff, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x0010, + 0x04b0, 0x04b5, 0x04ba, 0x04c0, 0x04c5, 0x04cb, 0x04d0, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x002b, + 0xffff, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x0010, 0x04f8, 0x04fd, + 0x0503, 0x050c, 0x0517, 0x0521, 0x052a, 0x0003, 0x0066, 0x0075, + 0x0084, 0x000d, 0x002b, 0xffff, 0x049b, 0x04a0, 0x04a5, 0x04aa, + 0x0010, 0x04b0, 0x04b5, 0x04ba, 0x04c0, 0x04c5, 0x04cb, 0x04d0, + // Entry 1DF40 - 1DF7F + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x002b, 0xffff, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x0010, 0x04f8, + 0x04fd, 0x0503, 0x050c, 0x0517, 0x0521, 0x052a, 0x0002, 0x0096, + 0x00c0, 0x0005, 0x009c, 0x00a5, 0x00b7, 0x0000, 0x00ae, 0x0007, + 0x002b, 0x0533, 0x0536, 0x0539, 0x053c, 0x053f, 0x0542, 0x0545, + 0x0007, 0x0000, 0x2481, 0x247f, 0x04dd, 0x2159, 0x04dd, 0x22e6, + 0x2481, 0x0007, 0x002b, 0x0533, 0x0536, 0x0539, 0x053c, 0x053f, + // Entry 1DF80 - 1DFBF + 0x0542, 0x0545, 0x0007, 0x002b, 0x0548, 0x0550, 0x055a, 0x0563, + 0x056d, 0x0576, 0x0580, 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, + 0x00d8, 0x0007, 0x002b, 0x0533, 0x0536, 0x0539, 0x053c, 0x053f, + 0x0542, 0x0545, 0x0007, 0x0000, 0x2481, 0x247f, 0x04dd, 0x2159, + 0x04dd, 0x22e6, 0x2481, 0x0007, 0x002b, 0x0533, 0x0536, 0x0539, + 0x053c, 0x053f, 0x0542, 0x0545, 0x0007, 0x002b, 0x0548, 0x0550, + 0x055a, 0x0563, 0x056d, 0x0576, 0x0580, 0x0002, 0x00ed, 0x0106, + 0x0003, 0x00f1, 0x00f8, 0x00ff, 0x0005, 0x0000, 0xffff, 0x04e3, + // Entry 1DFC0 - 1DFFF + 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, + 0x04ec, 0x0003, 0x010a, 0x0111, 0x0118, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, + 0x04e9, 0x04ec, 0x0002, 0x0122, 0x0141, 0x0003, 0x0126, 0x012f, + 0x0138, 0x0002, 0x0129, 0x012c, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0132, 0x0135, 0x0001, 0x0000, 0x04ef, + // Entry 1E000 - 1E03F + 0x0001, 0x0000, 0x04f2, 0x0002, 0x013b, 0x013e, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0145, 0x014e, 0x0157, + 0x0002, 0x0148, 0x014b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0002, 0x0151, 0x0154, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x015a, 0x015d, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0003, 0x016a, 0x0000, 0x0164, 0x0001, + 0x0166, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, 0x016c, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0004, 0x017e, 0x0178, 0x0175, 0x017b, + // Entry 1E040 - 1E07F + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0000, 0x237b, 0x0004, 0x018f, 0x0189, 0x0186, + 0x018c, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, + 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x01a0, 0x019a, + 0x0197, 0x019d, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0004, 0x0000, + 0x0000, 0x01a8, 0x01c0, 0x0001, 0x01aa, 0x0003, 0x01ae, 0x01ba, + 0x01b4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, + // Entry 1E080 - 1E0BF + 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0028, 0xffff, + 0xffff, 0xffff, 0x0e48, 0x0001, 0x01c2, 0x0003, 0x01c6, 0x0248, + 0x0207, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x06eb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1E0C0 - 1E0FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2798, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x06ef, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1E100 - 1E13F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x06f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1E140 - 1E17F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0004, 0x03cb, 0x090f, + 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0040, 0x0263, 0x0000, 0x02ef, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0375, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001e, + 0x0000, 0x002f, 0x0004, 0x002c, 0x0026, 0x0023, 0x0029, 0x0001, + 0x002b, 0x0589, 0x0001, 0x002b, 0x059c, 0x0001, 0x002b, 0x05a9, + // Entry 1E180 - 1E1BF + 0x0001, 0x0008, 0x062f, 0x0004, 0x003d, 0x0037, 0x0034, 0x003a, + 0x0001, 0x002b, 0x05b5, 0x0001, 0x002b, 0x05b5, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0049, 0x00ae, 0x0105, + 0x013a, 0x0217, 0x0230, 0x0241, 0x0252, 0x0002, 0x004c, 0x007d, + 0x0003, 0x0050, 0x005f, 0x006e, 0x000d, 0x002b, 0xffff, 0x05c6, + 0x05cf, 0x05d8, 0x05df, 0x05e8, 0x05ef, 0x05f8, 0x0601, 0x060a, + 0x0613, 0x061c, 0x0625, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + // Entry 1E1C0 - 1E1FF + 0x2220, 0x2398, 0x000d, 0x002b, 0xffff, 0x062e, 0x0639, 0x05d8, + 0x0646, 0x05e8, 0x05ef, 0x05f8, 0x0651, 0x065e, 0x066b, 0x067a, + 0x0687, 0x0003, 0x0081, 0x0090, 0x009f, 0x000d, 0x002b, 0xffff, + 0x05c6, 0x05cf, 0x05d8, 0x05df, 0x05e8, 0x05ef, 0x05f8, 0x0601, + 0x060a, 0x0613, 0x061c, 0x0625, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x000d, 0x002b, 0xffff, 0x062e, 0x0639, + 0x05d8, 0x0646, 0x05e8, 0x05ef, 0x05f8, 0x0651, 0x065e, 0x066b, + // Entry 1E200 - 1E23F + 0x067a, 0x0687, 0x0002, 0x00b1, 0x00db, 0x0005, 0x00b7, 0x00c0, + 0x00d2, 0x0000, 0x00c9, 0x0007, 0x002b, 0x0692, 0x069e, 0x06aa, + 0x06b6, 0x06c2, 0x06ce, 0x06da, 0x0007, 0x002b, 0x06e1, 0x06e6, + 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, 0x0007, 0x002b, 0x06e1, + 0x06e6, 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, 0x0007, 0x002b, + 0x0704, 0x0716, 0x0724, 0x0736, 0x0748, 0x075a, 0x076a, 0x0005, + 0x00e1, 0x00ea, 0x00fc, 0x0000, 0x00f3, 0x0007, 0x002b, 0x0692, + 0x069e, 0x06aa, 0x06b6, 0x06c2, 0x06ce, 0x06da, 0x0007, 0x002b, + // Entry 1E240 - 1E27F + 0x06e1, 0x06e6, 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, 0x0007, + 0x002b, 0x06e1, 0x06e6, 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, + 0x0007, 0x002b, 0x0704, 0x0716, 0x0724, 0x0736, 0x0748, 0x075a, + 0x076a, 0x0002, 0x0108, 0x0121, 0x0003, 0x010c, 0x0113, 0x011a, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x002b, + 0xffff, 0x0778, 0x0785, 0x0792, 0x079f, 0x0003, 0x0125, 0x012c, + 0x0133, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, + // Entry 1E280 - 1E2BF + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x002b, 0xffff, 0x0778, 0x0785, 0x0792, 0x079f, 0x0002, 0x013d, + 0x01b0, 0x0003, 0x0141, 0x0168, 0x0189, 0x000b, 0x0150, 0x0153, + 0x014d, 0x0156, 0x0159, 0x015f, 0x0162, 0x0000, 0x0000, 0x015c, + 0x0165, 0x0001, 0x002b, 0x07ac, 0x0001, 0x002b, 0x07b5, 0x0001, + 0x002b, 0x07c2, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, + 0x0001, 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, + 0x0800, 0x0001, 0x002b, 0x0809, 0x000b, 0x0000, 0x0000, 0x0174, + // Entry 1E2C0 - 1E2FF + 0x0177, 0x017a, 0x0180, 0x0183, 0x0000, 0x0000, 0x017d, 0x0186, + 0x0001, 0x002b, 0x07ac, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, + 0x07d6, 0x0001, 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, + 0x002b, 0x0800, 0x0001, 0x002b, 0x0809, 0x000b, 0x0198, 0x019b, + 0x0195, 0x019e, 0x01a1, 0x01a7, 0x01aa, 0x0000, 0x0000, 0x01a4, + 0x01ad, 0x0001, 0x002b, 0x07ac, 0x0001, 0x002b, 0x07b5, 0x0001, + 0x002b, 0x07c2, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, + 0x0001, 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, + // Entry 1E300 - 1E33F + 0x0800, 0x0001, 0x002b, 0x0809, 0x0003, 0x01b4, 0x01d5, 0x01f6, + 0x000b, 0x0000, 0x0000, 0x01c0, 0x01c3, 0x01c6, 0x01cc, 0x01cf, + 0x0000, 0x0000, 0x01c9, 0x01d2, 0x0001, 0x002b, 0x07ac, 0x0001, + 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, 0x0001, 0x002b, 0x07e3, + 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, 0x0800, 0x0001, 0x002b, + 0x0809, 0x000b, 0x0000, 0x0000, 0x01e1, 0x01e4, 0x01e7, 0x01ed, + 0x01f0, 0x0000, 0x0000, 0x01ea, 0x01f3, 0x0001, 0x002b, 0x07ac, + 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, 0x0001, 0x002b, + // Entry 1E340 - 1E37F + 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, 0x0800, 0x0001, + 0x002b, 0x0809, 0x000b, 0x0000, 0x0000, 0x0202, 0x0205, 0x0208, + 0x020e, 0x0211, 0x0000, 0x0000, 0x020b, 0x0214, 0x0001, 0x002b, + 0x07ac, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, 0x0001, + 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, 0x0800, + 0x0001, 0x002b, 0x0809, 0x0003, 0x0225, 0x0000, 0x021b, 0x0002, + 0x021e, 0x0222, 0x0002, 0x002b, 0x081d, 0x0840, 0x0001, 0x002b, + 0x0833, 0x0002, 0x0228, 0x022c, 0x0002, 0x002b, 0x0833, 0x0840, + // Entry 1E380 - 1E3BF + 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x023e, 0x0238, 0x0235, + 0x023b, 0x0001, 0x002b, 0x084d, 0x0001, 0x002b, 0x085e, 0x0001, + 0x002b, 0x0869, 0x0001, 0x0017, 0x03cc, 0x0004, 0x024f, 0x0249, + 0x0246, 0x024c, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, + 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0260, + 0x025a, 0x0257, 0x025d, 0x0001, 0x002b, 0x05b5, 0x0001, 0x002b, + 0x05b5, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, + 0x026c, 0x0000, 0x0000, 0x0000, 0x02d7, 0x02de, 0x0000, 0x9006, + // Entry 1E3C0 - 1E3FF + 0x0002, 0x026f, 0x02a3, 0x0003, 0x0273, 0x0283, 0x0293, 0x000e, + 0x002b, 0x08af, 0x0873, 0x087c, 0x0885, 0x088e, 0x0895, 0x089c, + 0x08a8, 0x08bb, 0x08c4, 0x08cd, 0x08d6, 0x08df, 0x08e4, 0x000e, + 0x002b, 0x091e, 0x08ed, 0x08f4, 0x08fb, 0x0902, 0x0909, 0x0910, + 0x0917, 0x0925, 0x092c, 0x0933, 0x093a, 0x08df, 0x0941, 0x000e, + 0x002b, 0x08af, 0x0873, 0x0948, 0x0885, 0x088e, 0x0895, 0x089c, + 0x08a8, 0x08bb, 0x08c4, 0x0953, 0x08d6, 0x08df, 0x08e4, 0x0003, + 0x02a7, 0x02b7, 0x02c7, 0x000e, 0x002b, 0x08af, 0x0873, 0x087c, + // Entry 1E400 - 1E43F + 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x08cd, + 0x08d6, 0x08df, 0x08e4, 0x000e, 0x002b, 0x091e, 0x08ed, 0x08f4, + 0x08fb, 0x0902, 0x0909, 0x0910, 0x0917, 0x0925, 0x092c, 0x0933, + 0x093a, 0x08df, 0x0941, 0x000e, 0x002b, 0x08af, 0x0873, 0x0948, + 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x0953, + 0x08d6, 0x08df, 0x08e4, 0x0001, 0x02d9, 0x0001, 0x02db, 0x0001, + 0x002b, 0x095e, 0x0004, 0x02ec, 0x02e6, 0x02e3, 0x02e9, 0x0001, + 0x002b, 0x084d, 0x0001, 0x002b, 0x085e, 0x0001, 0x002b, 0x085e, + // Entry 1E440 - 1E47F + 0x0001, 0x002b, 0x085e, 0x0008, 0x02f8, 0x0000, 0x0000, 0x0000, + 0x035d, 0x0364, 0x0000, 0x9006, 0x0002, 0x02fb, 0x032c, 0x0003, + 0x02ff, 0x030e, 0x031d, 0x000d, 0x002b, 0xffff, 0x0969, 0x0974, + 0x097b, 0x0989, 0x0997, 0x09ab, 0x09bf, 0x09c8, 0x09d3, 0x09de, + 0x09e9, 0x09ff, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x002b, 0xffff, 0x0969, 0x0974, 0x0a17, 0x0a2e, + 0x0a45, 0x0a62, 0x09bf, 0x09c8, 0x09d3, 0x09de, 0x09e9, 0x09ff, + // Entry 1E480 - 1E4BF + 0x0003, 0x0330, 0x033f, 0x034e, 0x000d, 0x002b, 0xffff, 0x0969, + 0x0974, 0x097b, 0x0989, 0x0997, 0x09ab, 0x09bf, 0x09c8, 0x09d3, + 0x09de, 0x09e9, 0x09ff, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x000d, 0x002b, 0xffff, 0x0969, 0x0974, 0x0a81, + 0x0a99, 0x0ab1, 0x0acf, 0x09bf, 0x09c8, 0x09d3, 0x09de, 0x09e9, + 0x09ff, 0x0001, 0x035f, 0x0001, 0x0361, 0x0001, 0x002b, 0x0aef, + 0x0004, 0x0372, 0x036c, 0x0369, 0x036f, 0x0001, 0x002b, 0x0589, + // Entry 1E4C0 - 1E4FF + 0x0001, 0x002b, 0x059c, 0x0001, 0x002b, 0x05a9, 0x0001, 0x001c, + 0x14e1, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x037b, 0x0001, + 0x037d, 0x0001, 0x037f, 0x004a, 0x002b, 0x0b03, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b0e, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1E500 - 1E53F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b1b, 0x0040, + 0x040c, 0x0000, 0x0000, 0x0411, 0x0430, 0x044a, 0x0464, 0x0483, + 0x049d, 0x04b7, 0x04d6, 0x04f0, 0x050a, 0x052d, 0x054b, 0x0000, + 0x0000, 0x0000, 0x0569, 0x058a, 0x05a4, 0x0000, 0x0000, 0x0000, + 0x05be, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05c3, 0x05df, + // Entry 1E540 - 1E57F + 0x05fb, 0x0617, 0x0633, 0x064f, 0x066b, 0x0687, 0x06a3, 0x06bf, + 0x06db, 0x06f7, 0x0713, 0x072f, 0x074b, 0x0767, 0x0783, 0x079f, + 0x07bb, 0x07d7, 0x07f3, 0x0000, 0x080f, 0x0000, 0x0814, 0x0832, + 0x084c, 0x0866, 0x0884, 0x089e, 0x08b8, 0x08d6, 0x08f0, 0x090a, + 0x0001, 0x040e, 0x0001, 0x002b, 0x0b28, 0x0003, 0x0415, 0x0418, + 0x041d, 0x0001, 0x002b, 0x0b33, 0x0003, 0x002b, 0x0b3a, 0x0b4e, + 0x0b57, 0x0002, 0x0420, 0x0428, 0x0006, 0x002b, 0x0ba3, 0x0b69, + 0xffff, 0x0b79, 0xffff, 0x0b8f, 0x0006, 0x002b, 0x0bf3, 0x0bb9, + // Entry 1E580 - 1E5BF + 0xffff, 0x0bc9, 0xffff, 0x0bdf, 0x0003, 0x0434, 0x0000, 0x0437, + 0x0001, 0x002b, 0x0c09, 0x0002, 0x043a, 0x0442, 0x0006, 0x002b, + 0x0ba3, 0x0b69, 0xffff, 0x0b79, 0xffff, 0x0b8f, 0x0006, 0x002b, + 0x0bf3, 0x0bb9, 0xffff, 0x0bc9, 0xffff, 0x0bdf, 0x0003, 0x044e, + 0x0000, 0x0451, 0x0001, 0x002b, 0x0c09, 0x0002, 0x0454, 0x045c, + 0x0006, 0x002b, 0x0ba3, 0x0b69, 0xffff, 0x0b79, 0xffff, 0x0b8f, + 0x0006, 0x002b, 0x0bf3, 0x0bb9, 0xffff, 0x0bc9, 0xffff, 0x0bdf, + 0x0003, 0x0468, 0x046b, 0x0470, 0x0001, 0x002b, 0x0c10, 0x0003, + // Entry 1E5C0 - 1E5FF + 0x002b, 0x0c1b, 0x0c33, 0x0c43, 0x0002, 0x0473, 0x047b, 0x0006, + 0x002b, 0x0c8a, 0x0c57, 0xffff, 0x0c6b, 0xffff, 0x0c8a, 0x0006, + 0x002b, 0x0cdd, 0x0ca6, 0xffff, 0x0cbe, 0xffff, 0x0cdd, 0x0003, + 0x0487, 0x0000, 0x048a, 0x0001, 0x002b, 0x0cf9, 0x0002, 0x048d, + 0x0495, 0x0006, 0x002b, 0x0d2d, 0x0d02, 0xffff, 0x0d14, 0xffff, + 0x0d2d, 0x0006, 0x002b, 0x0d72, 0x0d43, 0xffff, 0x0d59, 0xffff, + 0x0d72, 0x0003, 0x04a1, 0x0000, 0x04a4, 0x0001, 0x002b, 0x0cf9, + 0x0002, 0x04a7, 0x04af, 0x0006, 0x002b, 0x0d2d, 0x0d02, 0xffff, + // Entry 1E600 - 1E63F + 0x0d14, 0xffff, 0x0d2d, 0x0006, 0x002b, 0x0d72, 0x0d43, 0xffff, + 0x0d59, 0xffff, 0x0d72, 0x0003, 0x04bb, 0x04be, 0x04c3, 0x0001, + 0x002b, 0x0d88, 0x0003, 0x002b, 0x0d91, 0x0da5, 0x0db0, 0x0002, + 0x04c6, 0x04ce, 0x0006, 0x002b, 0x0dec, 0x0dc2, 0xffff, 0x0dd4, + 0xffff, 0x0dec, 0x0006, 0x002b, 0x0e30, 0x0e06, 0xffff, 0x0e18, + 0xffff, 0x0e30, 0x0003, 0x04da, 0x0000, 0x04dd, 0x0001, 0x002b, + 0x0e4a, 0x0002, 0x04e0, 0x04e8, 0x0006, 0x002b, 0x0dec, 0x0dc2, + 0xffff, 0x0dd4, 0xffff, 0x0dec, 0x0006, 0x002b, 0x0e30, 0x0e06, + // Entry 1E640 - 1E67F + 0xffff, 0x0e18, 0xffff, 0x0e30, 0x0003, 0x04f4, 0x0000, 0x04f7, + 0x0001, 0x002b, 0x0e4a, 0x0002, 0x04fa, 0x0502, 0x0006, 0x002b, + 0x0e61, 0x0e51, 0xffff, 0x0dd4, 0xffff, 0x0e61, 0x0006, 0x002b, + 0x0e85, 0x0e75, 0xffff, 0x0e18, 0xffff, 0x0e85, 0x0004, 0x050f, + 0x0512, 0x0517, 0x052a, 0x0001, 0x002b, 0x0e99, 0x0003, 0x002b, + 0x0ea2, 0x0eb6, 0x0ec1, 0x0002, 0x051a, 0x0522, 0x0006, 0x002b, + 0x0efd, 0x0ed3, 0xffff, 0x0ee5, 0xffff, 0x0efd, 0x0006, 0x002b, + 0x0f41, 0x0f17, 0xffff, 0x0f29, 0xffff, 0x0f41, 0x0001, 0x002b, + // Entry 1E680 - 1E6BF + 0x0f5b, 0x0004, 0x0532, 0x0000, 0x0535, 0x0548, 0x0001, 0x002b, + 0x0909, 0x0002, 0x0538, 0x0540, 0x0006, 0x002b, 0x0f7b, 0x0f6b, + 0xffff, 0x0ee5, 0xffff, 0x0f7b, 0x0006, 0x002b, 0x0f9f, 0x0f8f, + 0xffff, 0x0f29, 0xffff, 0x0f9f, 0x0001, 0x002b, 0x0f5b, 0x0004, + 0x0550, 0x0000, 0x0553, 0x0566, 0x0001, 0x002b, 0x0909, 0x0002, + 0x0556, 0x055e, 0x0006, 0x002b, 0x0f7b, 0x0f6b, 0xffff, 0x0ee5, + 0xffff, 0x0f7b, 0x0006, 0x002b, 0x0f9f, 0x0f17, 0xffff, 0x0f29, + 0xffff, 0x0f9f, 0x0001, 0x002b, 0x0fb3, 0x0003, 0x056d, 0x0570, + // Entry 1E6C0 - 1E6FF + 0x0577, 0x0001, 0x002b, 0x0fc7, 0x0005, 0x002b, 0x0fd9, 0x0fe4, + 0x0fed, 0x0fce, 0x0ff4, 0x0002, 0x057a, 0x0582, 0x0006, 0x002b, + 0x102d, 0x1003, 0xffff, 0x1017, 0xffff, 0x102d, 0x0006, 0x002b, + 0x106d, 0x1043, 0xffff, 0x1057, 0xffff, 0x106d, 0x0003, 0x058e, + 0x0000, 0x0591, 0x0001, 0x002b, 0x0fc7, 0x0002, 0x0594, 0x059c, + 0x0006, 0x002b, 0x102d, 0x0fed, 0xffff, 0x1017, 0xffff, 0x1083, + 0x0006, 0x002b, 0x1097, 0x0fd9, 0xffff, 0x1057, 0xffff, 0x106d, + 0x0003, 0x05a8, 0x0000, 0x05ab, 0x0001, 0x002b, 0x0fc7, 0x0002, + // Entry 1E700 - 1E73F + 0x05ae, 0x05b6, 0x0006, 0x002b, 0x10ab, 0x0fed, 0xffff, 0x1017, + 0xffff, 0x102d, 0x0006, 0x002b, 0x1097, 0x0fd9, 0xffff, 0x1057, + 0xffff, 0x10bf, 0x0001, 0x05c0, 0x0001, 0x002b, 0x10d3, 0x0003, + 0x0000, 0x05c7, 0x05cc, 0x0003, 0x002b, 0x10e5, 0x1102, 0x111d, + 0x0002, 0x05cf, 0x05d7, 0x0006, 0x002b, 0x1157, 0x1138, 0xffff, + 0x1157, 0xffff, 0x1157, 0x0006, 0x002b, 0x1195, 0x1176, 0xffff, + 0x1195, 0xffff, 0x1195, 0x0003, 0x0000, 0x05e3, 0x05e8, 0x0003, + 0x002b, 0x11b4, 0x0692, 0x11c9, 0x0002, 0x05eb, 0x05f3, 0x0006, + // Entry 1E740 - 1E77F + 0x002b, 0x1157, 0x1138, 0xffff, 0x1157, 0xffff, 0x1157, 0x0006, + 0x002b, 0x1195, 0x1176, 0xffff, 0x1195, 0xffff, 0x1195, 0x0003, + 0x0000, 0x05ff, 0x0604, 0x0003, 0x002b, 0x11b4, 0x0692, 0x11c9, + 0x0002, 0x0607, 0x060f, 0x0006, 0x002b, 0x1157, 0x1138, 0xffff, + 0x1157, 0xffff, 0x1157, 0x0006, 0x002b, 0x1195, 0x1176, 0xffff, + 0x1195, 0xffff, 0x1195, 0x0003, 0x0000, 0x061b, 0x0620, 0x0003, + 0x002b, 0x11dc, 0x0716, 0x11f3, 0x0002, 0x0623, 0x062b, 0x0006, + 0x002b, 0x1223, 0x1208, 0xffff, 0x1223, 0xffff, 0x1223, 0x0006, + // Entry 1E780 - 1E7BF + 0x002b, 0x1259, 0x123e, 0xffff, 0x1259, 0xffff, 0x1259, 0x0003, + 0x0000, 0x0637, 0x063c, 0x0003, 0x002b, 0x1274, 0x069e, 0x1289, + 0x0002, 0x063f, 0x0647, 0x0006, 0x002b, 0x1223, 0x1208, 0xffff, + 0x1223, 0xffff, 0x1223, 0x0006, 0x002b, 0x1259, 0x123e, 0xffff, + 0x1259, 0xffff, 0x1259, 0x0003, 0x0000, 0x0653, 0x0658, 0x0003, + 0x002b, 0x1274, 0x069e, 0x1289, 0x0002, 0x065b, 0x0663, 0x0006, + 0x002b, 0x1223, 0x1208, 0xffff, 0x1223, 0xffff, 0x1223, 0x0006, + 0x002b, 0x1259, 0x123e, 0xffff, 0x1259, 0xffff, 0x1259, 0x0003, + // Entry 1E7C0 - 1E7FF + 0x0000, 0x066f, 0x0674, 0x0003, 0x002b, 0x129c, 0x0724, 0x12b7, + 0x0002, 0x0677, 0x067f, 0x0006, 0x002b, 0x12ef, 0x12d0, 0xffff, + 0x12ef, 0xffff, 0x12ef, 0x0006, 0x002b, 0x132d, 0x130e, 0xffff, + 0x132d, 0xffff, 0x132d, 0x0003, 0x0000, 0x068b, 0x0690, 0x0003, + 0x002b, 0x134c, 0x06aa, 0x1361, 0x0002, 0x0693, 0x069b, 0x0006, + 0x002b, 0x12ef, 0x12d0, 0xffff, 0x12ef, 0xffff, 0x12ef, 0x0006, + 0x002b, 0x132d, 0x130e, 0xffff, 0x132d, 0xffff, 0x132d, 0x0003, + 0x0000, 0x06a7, 0x06ac, 0x0003, 0x002b, 0x134c, 0x06aa, 0x1361, + // Entry 1E800 - 1E83F + 0x0002, 0x06af, 0x06b7, 0x0006, 0x002b, 0x12ef, 0x12d0, 0xffff, + 0x12ef, 0xffff, 0x12ef, 0x0006, 0x002b, 0x132d, 0x130e, 0xffff, + 0x132d, 0xffff, 0x132d, 0x0003, 0x0000, 0x06c3, 0x06c8, 0x0003, + 0x002b, 0x1374, 0x0736, 0x138f, 0x0002, 0x06cb, 0x06d3, 0x0006, + 0x002b, 0x13c7, 0x13a8, 0xffff, 0x13c7, 0xffff, 0x13c7, 0x0006, + 0x002b, 0x1405, 0x13e6, 0xffff, 0x1405, 0xffff, 0x1405, 0x0003, + 0x0000, 0x06df, 0x06e4, 0x0003, 0x002b, 0x1424, 0x06b6, 0x1439, + 0x0002, 0x06e7, 0x06ef, 0x0006, 0x002b, 0x13c7, 0x13a8, 0xffff, + // Entry 1E840 - 1E87F + 0x13c7, 0xffff, 0x13c7, 0x0006, 0x002b, 0x1405, 0x13e6, 0xffff, + 0x1405, 0xffff, 0x1405, 0x0003, 0x0000, 0x06fb, 0x0700, 0x0003, + 0x002b, 0x1424, 0x06b6, 0x1439, 0x0002, 0x0703, 0x070b, 0x0006, + 0x002b, 0x13c7, 0x13a8, 0xffff, 0x13c7, 0xffff, 0x13c7, 0x0006, + 0x002b, 0x1405, 0x13e6, 0xffff, 0x1405, 0xffff, 0x1405, 0x0003, + 0x0000, 0x0717, 0x071c, 0x0003, 0x002b, 0x144c, 0x0748, 0x1467, + 0x0002, 0x071f, 0x0727, 0x0006, 0x002b, 0x149f, 0x1480, 0xffff, + 0x149f, 0xffff, 0x149f, 0x0006, 0x002b, 0x14dd, 0x14be, 0xffff, + // Entry 1E880 - 1E8BF + 0x14dd, 0xffff, 0x14dd, 0x0003, 0x0000, 0x0733, 0x0738, 0x0003, + 0x002b, 0x14fc, 0x06c2, 0x1511, 0x0002, 0x073b, 0x0743, 0x0006, + 0x002b, 0x149f, 0x1480, 0xffff, 0x149f, 0xffff, 0x149f, 0x0006, + 0x002b, 0x14dd, 0x14be, 0xffff, 0x14dd, 0xffff, 0x14dd, 0x0003, + 0x0000, 0x074f, 0x0754, 0x0003, 0x002b, 0x14fc, 0x06c2, 0x1511, + 0x0002, 0x0757, 0x075f, 0x0006, 0x002b, 0x149f, 0x1480, 0xffff, + 0x149f, 0xffff, 0x149f, 0x0006, 0x002b, 0x14dd, 0x14be, 0xffff, + 0x14dd, 0xffff, 0x14dd, 0x0003, 0x0000, 0x076b, 0x0770, 0x0003, + // Entry 1E8C0 - 1E8FF + 0x002b, 0x1524, 0x075a, 0x153d, 0x0002, 0x0773, 0x077b, 0x0006, + 0x002b, 0x156f, 0x1554, 0xffff, 0x156f, 0xffff, 0x156f, 0x0006, + 0x002b, 0x15a5, 0x158a, 0xffff, 0x15a5, 0xffff, 0x15a5, 0x0003, + 0x0000, 0x0787, 0x078c, 0x0003, 0x002b, 0x15c0, 0x06ce, 0x15d5, + 0x0002, 0x078f, 0x0797, 0x0006, 0x002b, 0x156f, 0x1554, 0xffff, + 0x156f, 0xffff, 0x156f, 0x0006, 0x002b, 0x15a5, 0x158a, 0xffff, + 0x15a5, 0xffff, 0x15a5, 0x0003, 0x0000, 0x07a3, 0x07a8, 0x0003, + 0x002b, 0x15c0, 0x06ce, 0x15ea, 0x0002, 0x07ab, 0x07b3, 0x0006, + // Entry 1E900 - 1E93F + 0x002b, 0x156f, 0x1554, 0xffff, 0x156f, 0xffff, 0x156f, 0x0006, + 0x002b, 0x15a5, 0x158a, 0xffff, 0x15a5, 0xffff, 0x15a5, 0x0003, + 0x0000, 0x07bf, 0x07c4, 0x0003, 0x002b, 0x15fd, 0x076a, 0x1614, + 0x0002, 0x07c7, 0x07cf, 0x0006, 0x002b, 0x163d, 0x1629, 0xffff, + 0x163d, 0xffff, 0x163d, 0x0006, 0x002b, 0x1669, 0x1655, 0xffff, + 0x1669, 0xffff, 0x1669, 0x0003, 0x0000, 0x07db, 0x07e0, 0x0003, + 0x002b, 0x1681, 0x06da, 0x1693, 0x0002, 0x07e3, 0x07eb, 0x0006, + 0x002b, 0x163d, 0x1629, 0xffff, 0x163d, 0xffff, 0x163d, 0x0006, + // Entry 1E940 - 1E97F + 0x002b, 0x1669, 0x1655, 0xffff, 0x1669, 0xffff, 0x1669, 0x0003, + 0x0000, 0x07f7, 0x07fc, 0x0003, 0x002b, 0x1681, 0x06da, 0x1693, + 0x0002, 0x07ff, 0x0807, 0x0006, 0x002b, 0x163d, 0x1629, 0xffff, + 0x163d, 0xffff, 0x163d, 0x0006, 0x002b, 0x1669, 0x1655, 0xffff, + 0x1669, 0xffff, 0x1669, 0x0001, 0x0811, 0x0001, 0x002b, 0x16a3, + 0x0003, 0x0818, 0x081b, 0x081f, 0x0001, 0x002b, 0x16bb, 0x0002, + 0x002b, 0xffff, 0x16c2, 0x0002, 0x0822, 0x082a, 0x0006, 0x002b, + 0x16f6, 0x16d0, 0xffff, 0x16e0, 0xffff, 0x16f6, 0x0006, 0x002b, + // Entry 1E980 - 1E9BF + 0x1732, 0x170c, 0xffff, 0x171c, 0xffff, 0x1732, 0x0003, 0x0836, + 0x0000, 0x0839, 0x0001, 0x002b, 0x16bb, 0x0002, 0x083c, 0x0844, + 0x0006, 0x002b, 0x1748, 0x16d0, 0xffff, 0x16e0, 0xffff, 0x1748, + 0x0006, 0x002b, 0x175c, 0x170c, 0xffff, 0x171c, 0xffff, 0x175c, + 0x0003, 0x0850, 0x0000, 0x0853, 0x0001, 0x002b, 0x1770, 0x0002, + 0x0856, 0x085e, 0x0006, 0x002b, 0x1748, 0x16d0, 0xffff, 0x16e0, + 0xffff, 0x1748, 0x0006, 0x002b, 0x175c, 0x170c, 0xffff, 0x171c, + 0xffff, 0x175c, 0x0003, 0x086a, 0x086d, 0x0871, 0x0001, 0x002b, + // Entry 1E9C0 - 1E9FF + 0x1777, 0x0002, 0x002b, 0xffff, 0x177e, 0x0002, 0x0874, 0x087c, + 0x0006, 0x002b, 0x17b5, 0x178c, 0xffff, 0x179c, 0xffff, 0x17b5, + 0x0006, 0x002b, 0x17f4, 0x17cb, 0xffff, 0x17db, 0xffff, 0x17f4, + 0x0003, 0x0888, 0x0000, 0x088b, 0x0001, 0x002b, 0x180a, 0x0002, + 0x088e, 0x0896, 0x0006, 0x002b, 0x1828, 0x178c, 0xffff, 0x1811, + 0xffff, 0x1828, 0x0006, 0x002b, 0x183c, 0x17cb, 0xffff, 0x183c, + 0xffff, 0x183c, 0x0003, 0x08a2, 0x0000, 0x08a5, 0x0001, 0x002b, + 0x180a, 0x0002, 0x08a8, 0x08b0, 0x0006, 0x002b, 0x1828, 0x178c, + // Entry 1EA00 - 1EA3F + 0xffff, 0x1811, 0xffff, 0x1828, 0x0006, 0x002b, 0x183c, 0x17cb, + 0xffff, 0x1850, 0xffff, 0x183c, 0x0003, 0x08bc, 0x08bf, 0x08c3, + 0x0001, 0x002b, 0x1867, 0x0002, 0x002b, 0xffff, 0x1872, 0x0002, + 0x08c6, 0x08ce, 0x0006, 0x002b, 0x18ac, 0x187d, 0xffff, 0x1891, + 0xffff, 0x18ac, 0x0006, 0x002b, 0x18f3, 0x18c4, 0xffff, 0x18d8, + 0xffff, 0x18f3, 0x0003, 0x08da, 0x0000, 0x08dd, 0x0001, 0x002b, + 0x0c09, 0x0002, 0x08e0, 0x08e8, 0x0006, 0x002b, 0x1932, 0x190b, + 0xffff, 0x191b, 0xffff, 0x1932, 0x0006, 0x002b, 0x196d, 0x1946, + // Entry 1EA40 - 1EA7F + 0xffff, 0x1956, 0xffff, 0x196d, 0x0003, 0x08f4, 0x0000, 0x08f7, + 0x0001, 0x002b, 0x0c09, 0x0002, 0x08fa, 0x0902, 0x0006, 0x002b, + 0x1932, 0x190b, 0xffff, 0x191b, 0xffff, 0x1932, 0x0006, 0x002b, + 0x196d, 0x1946, 0xffff, 0x1956, 0xffff, 0x196d, 0x0001, 0x090c, + 0x0001, 0x002b, 0x1981, 0x0004, 0x0914, 0x0919, 0x091e, 0x092d, + 0x0003, 0x002b, 0x198a, 0x199e, 0x19a8, 0x0003, 0x002b, 0x19ac, + 0x19b9, 0x19cf, 0x0002, 0x0000, 0x0921, 0x0003, 0x0000, 0x0928, + 0x0925, 0x0001, 0x002b, 0x19e7, 0x0003, 0x002b, 0xffff, 0x1a0c, + // Entry 1EA80 - 1EABF + 0x1a2b, 0x0002, 0x0000, 0x0930, 0x0003, 0x09d3, 0x0a72, 0x0934, + 0x009d, 0x002b, 0x1a48, 0x1a62, 0x1a81, 0x1aa0, 0x1ade, 0x1b44, + 0x1b96, 0x1bf3, 0x1c60, 0x1cdc, 0x1d61, 0x1dc3, 0x1e0d, 0x1e63, + 0x1ecd, 0x1f38, 0x1fa8, 0x2013, 0x20a0, 0x2126, 0x21b5, 0x2232, + 0x22aa, 0x231f, 0x2393, 0x23d3, 0x23e7, 0x2417, 0x245b, 0x2499, + 0x24db, 0x2509, 0x255d, 0x25a9, 0x25f7, 0x263f, 0x265e, 0x2693, + 0x26f2, 0x2753, 0x278b, 0x27a1, 0x27c8, 0x27fe, 0x2844, 0x287b, + 0x28ec, 0x293e, 0x2971, 0x29e0, 0x2a42, 0x2a7e, 0x2aa1, 0x2aef, + // Entry 1EAC0 - 1EAFF + 0x2b0e, 0x2b43, 0x2b87, 0x2ba4, 0x2be0, 0x2c57, 0x2cad, 0x2cce, + 0x2d14, 0x2da7, 0x2e03, 0x2e3b, 0x2e4d, 0x2e74, 0x2e8d, 0x2eb2, + 0x2ed7, 0x2f10, 0x2f66, 0x2fc2, 0x300e, 0x3073, 0x30e5, 0x3104, + 0x3139, 0x3179, 0x31ad, 0x31fd, 0x3219, 0x3252, 0x32ec, 0x3316, + 0x334e, 0x3362, 0x3389, 0x33a4, 0x33d9, 0x3425, 0x3463, 0x34e6, + 0x3553, 0x35b3, 0x35f3, 0x3609, 0x361d, 0x3652, 0x36c7, 0x3731, + 0x3785, 0x3799, 0x37e0, 0x3868, 0x38d0, 0x3922, 0x3962, 0x3974, + 0x39b8, 0x3a0c, 0x3a5e, 0x3aae, 0x3af3, 0x3b57, 0x3b6d, 0x3b83, + // Entry 1EB00 - 1EB3F + 0x3b9f, 0x3bb7, 0x3be1, 0x3c2f, 0x3c77, 0x3cb3, 0x3cce, 0x3ce6, + 0x3cff, 0x3d22, 0x3d3a, 0x3d50, 0x3d7a, 0x3dba, 0x3dd6, 0x3e00, + 0x3e3c, 0x3e6c, 0x3ebc, 0x3eee, 0x3f56, 0x3fb8, 0x3ff8, 0x402e, + 0x4098, 0x40e0, 0x40f6, 0x410f, 0x414a, 0x41a8, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32b8, 0x009d, + 0x002b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1abf, 0x1b30, 0x1b80, + 0x1bd6, 0x1c41, 0x1cb2, 0x1d44, 0x1daf, 0x1dfb, 0x1e45, 0x1eb3, + 0x1f15, 0x1f92, 0x1fe8, 0x207d, 0x20fa, 0x2192, 0x220f, 0x228c, + // Entry 1EB40 - 1EB7F + 0x22fa, 0x237d, 0xffff, 0xffff, 0x23ff, 0xffff, 0x2482, 0xffff, + 0x24f3, 0x2549, 0x2599, 0x25dd, 0xffff, 0xffff, 0x2679, 0x26db, + 0x2741, 0xffff, 0xffff, 0xffff, 0x27e5, 0xffff, 0x285c, 0x28cd, + 0xffff, 0x2952, 0x29c3, 0x2a2e, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2b2b, 0xffff, 0xffff, 0x2bbf, 0x2c36, 0xffff, 0xffff, 0x2ce2, + 0x2d8c, 0x2df1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2efc, 0x2f4c, 0x2fae, 0x2ffe, 0x3042, 0xffff, 0xffff, 0x3123, + 0xffff, 0x318f, 0xffff, 0xffff, 0x3232, 0xffff, 0x3304, 0xffff, + // Entry 1EB80 - 1EBBF + 0xffff, 0xffff, 0xffff, 0x33bd, 0xffff, 0x343b, 0x34c7, 0x3538, + 0x359d, 0xffff, 0xffff, 0xffff, 0x362f, 0x36ac, 0x3711, 0xffff, + 0xffff, 0x37b6, 0x3848, 0x38bc, 0x390c, 0xffff, 0xffff, 0x39a0, + 0x39fc, 0x3a40, 0xffff, 0x3acb, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3bcd, 0x3c1d, 0x3c63, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3d64, 0xffff, 0xffff, 0x3dec, 0xffff, + 0x3e4e, 0xffff, 0x3ed2, 0x3f3a, 0x3fa2, 0xffff, 0x4010, 0x407e, + 0xffff, 0xffff, 0xffff, 0x4134, 0x418a, 0xffff, 0xffff, 0xffff, + // Entry 1EBC0 - 1EBFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32a6, 0x009d, 0x002b, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1b08, 0x1b63, 0x1bb7, 0x1c1b, + 0x1c8a, 0x1d11, 0x1d89, 0x1de0, 0x1e2a, 0x1e8c, 0x1ef2, 0x1f66, + 0x1fc9, 0x2049, 0x20ce, 0x215d, 0x21e3, 0x2260, 0x22d3, 0x234f, + 0x23b4, 0xffff, 0xffff, 0x243a, 0xffff, 0x24bb, 0xffff, 0x252a, + 0x257c, 0x25c4, 0x261c, 0xffff, 0xffff, 0x26b8, 0x2714, 0x2770, + 0xffff, 0xffff, 0xffff, 0x2822, 0xffff, 0x28a5, 0x2916, 0xffff, + 0x299b, 0x2a08, 0x2a61, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b66, + // Entry 1EC00 - 1EC3F + 0xffff, 0xffff, 0x2c0c, 0x2c83, 0xffff, 0xffff, 0x2d51, 0x2dcd, + 0x2e20, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f2f, + 0x2f8b, 0x2fe1, 0x3029, 0x30ad, 0xffff, 0xffff, 0x315a, 0xffff, + 0x31d6, 0xffff, 0xffff, 0x327d, 0xffff, 0x3333, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3400, 0xffff, 0x3496, 0x3510, 0x3579, 0x35d4, + 0xffff, 0xffff, 0xffff, 0x3680, 0x36ed, 0x375c, 0xffff, 0xffff, + 0x3815, 0x3893, 0x38ef, 0x3943, 0xffff, 0xffff, 0x39db, 0x3a27, + 0x3a87, 0xffff, 0x3b26, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1EC40 - 1EC7F + 0x3c00, 0x3c4a, 0x3c96, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3d9b, 0xffff, 0xffff, 0x3e1f, 0xffff, 0x3e95, + 0xffff, 0x3f15, 0x3f7d, 0x3fd9, 0xffff, 0x4057, 0x40bd, 0xffff, + 0xffff, 0xffff, 0x416b, 0x41d1, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x32d3, 0x0003, 0x0004, 0x03ee, + 0x07c8, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + 0x002e, 0x0059, 0x0000, 0x0256, 0x02c8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x02df, 0x03d7, 0x0001, 0x0018, 0x0001, 0x001a, 0x0003, + // Entry 1EC80 - 1ECBF + 0x0000, 0x0000, 0x001e, 0x000e, 0x002c, 0xffff, 0x0000, 0x0019, + 0x002f, 0x003c, 0x004c, 0x0053, 0x0069, 0x007f, 0x009b, 0x00ab, + 0x00b5, 0x00c5, 0x00d8, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0037, 0x0000, 0x0048, 0x0004, 0x0045, 0x003f, 0x003c, + 0x0042, 0x0001, 0x002c, 0x00eb, 0x0001, 0x002c, 0x00fc, 0x0001, + 0x0007, 0x001d, 0x0001, 0x002c, 0x0107, 0x0004, 0x0056, 0x0050, + 0x004d, 0x0053, 0x0001, 0x002c, 0x010f, 0x0001, 0x002c, 0x010f, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0062, + // Entry 1ECC0 - 1ECFF + 0x00c7, 0x011e, 0x0153, 0x0209, 0x0223, 0x0234, 0x0245, 0x0002, + 0x0065, 0x0096, 0x0003, 0x0069, 0x0078, 0x0087, 0x000d, 0x002c, + 0xffff, 0x011e, 0x0128, 0x0135, 0x0145, 0x0158, 0x015f, 0x0169, + 0x0176, 0x0180, 0x018d, 0x01a0, 0x01aa, 0x000d, 0x000c, 0xffff, + 0x0126, 0x4e36, 0x0131, 0x014e, 0x4e3d, 0x4e41, 0x013c, 0x014e, + 0x4e48, 0x014e, 0x0152, 0x0156, 0x000d, 0x002c, 0xffff, 0x01b7, + 0x01c7, 0x0135, 0x0145, 0x0158, 0x015f, 0x01da, 0x01ea, 0x01fa, + 0x020d, 0x0223, 0x0233, 0x0003, 0x009a, 0x00a9, 0x00b8, 0x000d, + // Entry 1ED00 - 1ED3F + 0x002c, 0xffff, 0x011e, 0x0128, 0x0135, 0x0145, 0x0158, 0x015f, + 0x0169, 0x0176, 0x0180, 0x018d, 0x01a0, 0x01aa, 0x000d, 0x000c, + 0xffff, 0x0126, 0x4e36, 0x0131, 0x014e, 0x4e3d, 0x4e41, 0x013c, + 0x014e, 0x4e48, 0x014e, 0x0152, 0x0156, 0x000d, 0x002c, 0xffff, + 0x01b7, 0x01c7, 0x0135, 0x0145, 0x0158, 0x015f, 0x01da, 0x01ea, + 0x01fa, 0x020d, 0x0223, 0x0233, 0x0002, 0x00ca, 0x00f4, 0x0005, + 0x00d0, 0x00d9, 0x00eb, 0x0000, 0x00e2, 0x0007, 0x002c, 0x0246, + 0x0250, 0x025a, 0x0267, 0x0271, 0x027e, 0x028e, 0x0007, 0x000c, + // Entry 1ED40 - 1ED7F + 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, + 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, + 0x0007, 0x002c, 0x0298, 0x02ab, 0x02be, 0x02d4, 0x02e7, 0x02fd, + 0x0316, 0x0005, 0x00fa, 0x0103, 0x0115, 0x0000, 0x010c, 0x0007, + 0x002c, 0x0246, 0x0250, 0x025a, 0x0267, 0x0271, 0x027e, 0x028e, + 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, + 0x4e64, 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, + 0x4e5d, 0x4e64, 0x0007, 0x002c, 0x0298, 0x02ab, 0x02be, 0x02d4, + // Entry 1ED80 - 1EDBF + 0x02e7, 0x02fd, 0x0316, 0x0002, 0x0121, 0x013a, 0x0003, 0x0125, + 0x012c, 0x0133, 0x0005, 0x002c, 0xffff, 0x0329, 0x0331, 0x0339, + 0x0341, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x002c, 0xffff, 0x0349, 0x0369, 0x038c, 0x03af, 0x0003, + 0x013e, 0x0145, 0x014c, 0x0005, 0x002c, 0xffff, 0x0329, 0x0331, + 0x0339, 0x0341, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x002c, 0xffff, 0x0349, 0x0369, 0x038c, 0x03af, + 0x0002, 0x0156, 0x01b1, 0x0003, 0x015a, 0x0177, 0x0194, 0x0007, + // Entry 1EDC0 - 1EDFF + 0x0165, 0x0168, 0x0162, 0x016b, 0x016e, 0x0171, 0x0174, 0x0001, + 0x002c, 0x03cf, 0x0001, 0x002c, 0x03ee, 0x0001, 0x002c, 0x040a, + 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x040a, 0x0001, 0x002c, + 0x042d, 0x0001, 0x002c, 0x0437, 0x0007, 0x0182, 0x0185, 0x017f, + 0x0188, 0x018b, 0x018e, 0x0191, 0x0001, 0x002c, 0x03cf, 0x0001, + 0x002c, 0x0441, 0x0001, 0x000c, 0x014e, 0x0001, 0x002c, 0x0420, + 0x0001, 0x002c, 0x040a, 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, + 0x042d, 0x0007, 0x019f, 0x01a2, 0x019c, 0x01a5, 0x01a8, 0x01ab, + // Entry 1EE00 - 1EE3F + 0x01ae, 0x0001, 0x002c, 0x03cf, 0x0001, 0x002c, 0x03ee, 0x0001, + 0x002c, 0x040a, 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x040a, + 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, 0x0437, 0x0003, 0x01b5, + 0x01cf, 0x01ec, 0x0007, 0x01bd, 0x01c0, 0x0000, 0x01c3, 0x01c6, + 0x01c9, 0x01cc, 0x0001, 0x002c, 0x03ee, 0x0001, 0x002c, 0x040a, + 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x0448, 0x0001, 0x002c, + 0x042d, 0x0001, 0x002c, 0x0437, 0x0007, 0x01da, 0x01dd, 0x01d7, + 0x01e0, 0x01e3, 0x01e6, 0x01e9, 0x0001, 0x002c, 0x0458, 0x0001, + // Entry 1EE40 - 1EE7F + 0x002c, 0x0441, 0x0001, 0x000c, 0x014e, 0x0001, 0x002c, 0x0420, + 0x0001, 0x002c, 0x040a, 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, + 0x0437, 0x0007, 0x01f7, 0x01fa, 0x01f4, 0x01fd, 0x0200, 0x0203, + 0x0206, 0x0001, 0x002c, 0x03cf, 0x0001, 0x002c, 0x03ee, 0x0001, + 0x002c, 0x040a, 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x0448, + 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, 0x0437, 0x0003, 0x0218, + 0x0000, 0x020d, 0x0002, 0x0210, 0x0214, 0x0002, 0x002c, 0x046c, + 0x04a3, 0x0002, 0x002c, 0x0486, 0x04b7, 0x0002, 0x021b, 0x021f, + // Entry 1EE80 - 1EEBF + 0x0002, 0x002c, 0x046c, 0x04c4, 0x0002, 0x002c, 0x0486, 0x04b7, + 0x0004, 0x0231, 0x022b, 0x0228, 0x022e, 0x0001, 0x0005, 0x0773, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x0860, 0x0001, 0x0000, + 0x237b, 0x0004, 0x0242, 0x023c, 0x0239, 0x023f, 0x0001, 0x0002, + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0004, 0x0253, 0x024d, 0x024a, 0x0250, 0x0001, + 0x002c, 0x010f, 0x0001, 0x002c, 0x010f, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0005, 0x025c, 0x0000, 0x0000, 0x0000, + // Entry 1EEC0 - 1EEFF + 0x02c1, 0x0002, 0x025f, 0x0290, 0x0003, 0x0263, 0x0272, 0x0281, + 0x000d, 0x002c, 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, 0x051a, + 0x052d, 0x0543, 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x002c, + 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, 0x051a, 0x052d, 0x0543, + 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, 0x0003, 0x0294, 0x02a3, + 0x02b2, 0x000d, 0x002c, 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, + // Entry 1EF00 - 1EF3F + 0x051a, 0x052d, 0x0543, 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x002c, 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, 0x051a, 0x052d, + 0x0543, 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, 0x0001, 0x02c3, + 0x0001, 0x02c5, 0x0001, 0x002c, 0x05af, 0x0001, 0x02ca, 0x0001, + 0x02cc, 0x0003, 0x0000, 0x0000, 0x02d0, 0x000d, 0x002c, 0xffff, + 0x05b6, 0x05cc, 0x05d6, 0x05f3, 0x0616, 0x0639, 0x0662, 0x066c, + // Entry 1EF40 - 1EF7F + 0x0679, 0x0689, 0x069c, 0x06b6, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x02e5, 0x0001, 0x02e7, 0x0001, 0x02e9, 0x00ec, 0x002c, + 0x06d9, 0x06f5, 0x0714, 0x0733, 0x074c, 0x0768, 0x0781, 0x079a, + 0x07b3, 0x07cc, 0x07e8, 0x080d, 0x0845, 0x0877, 0x08a9, 0x08de, + 0x0910, 0x0929, 0x0942, 0x0967, 0x0983, 0x09a2, 0x09be, 0x09d7, + 0x09f6, 0x0a12, 0x0a2e, 0x0a47, 0x0a63, 0x0a82, 0x0aa1, 0x0ac6, + 0x0ae2, 0x0afb, 0x0b14, 0x0b30, 0x0b52, 0x0b7a, 0x0b9c, 0x0bb2, + 0x0bcb, 0x0be7, 0x0c09, 0x0c26, 0x0c42, 0x0c61, 0x0c7a, 0x0c96, + // Entry 1EF80 - 1EFBF + 0x0cad, 0x0cc6, 0x0ceb, 0x0d0a, 0x0d24, 0x0d3f, 0x0d60, 0x0d81, + 0x0da2, 0x0dbd, 0x0dd8, 0x0dff, 0x0e20, 0x0e44, 0x0e5c, 0x0e7a, + 0x0e98, 0x0ebf, 0x0ee0, 0x0efb, 0x0f22, 0x0f3a, 0x0f58, 0x0f76, + 0x0f91, 0x0fa9, 0x0fca, 0x0fe5, 0x1000, 0x101b, 0x103f, 0x105b, + 0x1079, 0x1095, 0x10b0, 0x10ce, 0x10ec, 0x110a, 0x1125, 0x1140, + 0x1158, 0x1173, 0x1194, 0x11b5, 0x11d6, 0x11f7, 0x1215, 0x1230, + 0x1254, 0x126c, 0x128a, 0x12a5, 0x12c4, 0x12dc, 0x12f7, 0x1312, + 0x132d, 0x1348, 0x1363, 0x138d, 0x13ab, 0x13cf, 0x13ea, 0x140e, + // Entry 1EFC0 - 1EFFF + 0x1432, 0x144e, 0x146c, 0x1496, 0x14b4, 0x14d5, 0x14ea, 0x150e, + 0x152f, 0x154d, 0x156b, 0x1586, 0x15ad, 0x15d7, 0x15f5, 0x161f, + 0x1638, 0x1656, 0x1677, 0x1692, 0x16b0, 0x16ce, 0x16e9, 0x1707, + 0x1723, 0x173e, 0x175a, 0x1778, 0x1793, 0x17a8, 0x17c3, 0x17de, + 0x17ff, 0x181d, 0x183e, 0x185c, 0x1874, 0x188f, 0x18ad, 0x18c8, + 0x18ec, 0x1907, 0x1928, 0x194c, 0x196a, 0x198b, 0x19a9, 0x19ca, + 0x19e8, 0x1a0c, 0x1a2a, 0x1a48, 0x1a6f, 0x1a8a, 0x1aa8, 0x1ac9, + 0x1ae7, 0x1afc, 0x1b1d, 0x1b32, 0x1b4d, 0x1b6b, 0x1b92, 0x1bb1, + // Entry 1F000 - 1F03F + 0x1bd2, 0x1bf9, 0x1c14, 0x1c35, 0x1c53, 0x1c71, 0x1c8c, 0x1cb0, + 0x1cd1, 0x1cf2, 0x1d0d, 0x1d2b, 0x1d43, 0x1d61, 0x1d88, 0x1da9, + 0x1dc4, 0x1de2, 0x1e00, 0x1e1e, 0x1e42, 0x1e60, 0x1e7e, 0x1e9d, + 0x1eb8, 0x1ed6, 0x1eeb, 0x1f15, 0x1f33, 0x1f51, 0x1f6c, 0x1f8a, + 0x1fab, 0x1fcf, 0x1fea, 0x200b, 0x202c, 0x204d, 0x206b, 0x208c, + 0x20ab, 0x20d2, 0x20f0, 0x210c, 0x212d, 0x214e, 0x216f, 0x218d, + 0x21ae, 0x21cc, 0x21e7, 0x2202, 0x2220, 0x223f, 0x2263, 0x2281, + 0x229c, 0x22a9, 0x22b9, 0x22c6, 0x0001, 0x03d9, 0x0001, 0x03db, + // Entry 1F040 - 1F07F + 0x0003, 0x0000, 0x0000, 0x03df, 0x000d, 0x002d, 0xffff, 0x0000, + 0x0019, 0x003e, 0x0057, 0x0061, 0x0074, 0x008d, 0x009a, 0x00a4, + 0x00b1, 0x00b8, 0x00c5, 0x0040, 0x042f, 0x0000, 0x0000, 0x0434, + 0x044b, 0x045d, 0x046f, 0x0486, 0x049d, 0x04b4, 0x04cb, 0x04dd, + 0x04ef, 0x050a, 0x0520, 0x0000, 0x0000, 0x0000, 0x0536, 0x054f, + 0x0561, 0x0000, 0x0000, 0x0000, 0x0573, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0578, 0x058c, 0x05a0, 0x05b4, 0x05c8, 0x05dc, + 0x05f0, 0x0604, 0x0618, 0x062c, 0x0640, 0x0654, 0x0668, 0x067c, + // Entry 1F080 - 1F0BF + 0x0690, 0x06a4, 0x06b8, 0x06cc, 0x06e0, 0x06f4, 0x0708, 0x0000, + 0x0710, 0x0000, 0x0715, 0x072b, 0x073d, 0x074f, 0x0765, 0x0777, + 0x0789, 0x079f, 0x07b1, 0x07c3, 0x0001, 0x0431, 0x0001, 0x002d, + 0x00de, 0x0003, 0x0438, 0x043b, 0x0440, 0x0001, 0x002d, 0x00e8, + 0x0003, 0x002d, 0x00f5, 0x0112, 0x0126, 0x0002, 0x0443, 0x0447, + 0x0002, 0x002d, 0x0140, 0x0140, 0x0002, 0x002d, 0x015b, 0x015b, + 0x0003, 0x044f, 0x0000, 0x0452, 0x0001, 0x002d, 0x00e8, 0x0002, + 0x0455, 0x0459, 0x0002, 0x002d, 0x0140, 0x0140, 0x0002, 0x002d, + // Entry 1F0C0 - 1F0FF + 0x015b, 0x015b, 0x0003, 0x0461, 0x0000, 0x0464, 0x0001, 0x002d, + 0x00e8, 0x0002, 0x0467, 0x046b, 0x0002, 0x002d, 0x0140, 0x0140, + 0x0002, 0x002d, 0x015b, 0x015b, 0x0003, 0x0473, 0x0476, 0x047b, + 0x0001, 0x002d, 0x0179, 0x0003, 0x002d, 0x018c, 0x01af, 0x01c9, + 0x0002, 0x047e, 0x0482, 0x0002, 0x002d, 0x020a, 0x01e9, 0x0002, + 0x002d, 0x0234, 0x0234, 0x0003, 0x048a, 0x048d, 0x0492, 0x0001, + 0x002d, 0x0179, 0x0003, 0x002d, 0x018c, 0x01af, 0x01c9, 0x0002, + 0x0495, 0x0499, 0x0002, 0x002d, 0x020a, 0x01e9, 0x0002, 0x002d, + // Entry 1F100 - 1F13F + 0x0258, 0x0234, 0x0003, 0x04a1, 0x04a4, 0x04a9, 0x0001, 0x002d, + 0x0179, 0x0003, 0x002d, 0x018c, 0x01af, 0x01c9, 0x0002, 0x04ac, + 0x04b0, 0x0002, 0x002d, 0x0285, 0x0285, 0x0002, 0x002d, 0x029b, + 0x029b, 0x0003, 0x04b8, 0x04bb, 0x04c0, 0x0001, 0x002d, 0x02b4, + 0x0003, 0x002d, 0x02be, 0x02d8, 0x02e9, 0x0002, 0x04c3, 0x04c7, + 0x0002, 0x002d, 0x0300, 0x0300, 0x0002, 0x002d, 0x0318, 0x0318, + 0x0003, 0x04cf, 0x0000, 0x04d2, 0x0001, 0x002d, 0x02b4, 0x0002, + 0x04d5, 0x04d9, 0x0002, 0x002d, 0x0300, 0x0300, 0x0002, 0x002d, + // Entry 1F140 - 1F17F + 0x0318, 0x0318, 0x0003, 0x04e1, 0x0000, 0x04e4, 0x0001, 0x002d, + 0x02b4, 0x0002, 0x04e7, 0x04eb, 0x0002, 0x002d, 0x0300, 0x0300, + 0x0002, 0x002d, 0x0318, 0x0318, 0x0004, 0x04f4, 0x04f7, 0x04fc, + 0x0507, 0x0001, 0x002d, 0x0333, 0x0003, 0x002d, 0x0346, 0x0369, + 0x0383, 0x0002, 0x04ff, 0x0503, 0x0002, 0x002d, 0x03a3, 0x03a3, + 0x0002, 0x002d, 0x03c4, 0x03c4, 0x0001, 0x002d, 0x03e8, 0x0004, + 0x050f, 0x0000, 0x0512, 0x051d, 0x0001, 0x002d, 0x0333, 0x0002, + 0x0515, 0x0519, 0x0002, 0x002d, 0x03a3, 0x03a3, 0x0002, 0x002d, + // Entry 1F180 - 1F1BF + 0x03c4, 0x03c4, 0x0001, 0x002d, 0x03e8, 0x0004, 0x0525, 0x0000, + 0x0528, 0x0533, 0x0001, 0x002d, 0x0333, 0x0002, 0x052b, 0x052f, + 0x0002, 0x002d, 0x03a3, 0x03a3, 0x0002, 0x002d, 0x03c4, 0x03c4, + 0x0001, 0x0000, 0x1b0d, 0x0003, 0x053a, 0x053d, 0x0544, 0x0001, + 0x002d, 0x0406, 0x0005, 0x002d, 0x042d, 0x0434, 0x042d, 0x0410, + 0x043b, 0x0002, 0x0547, 0x054b, 0x0002, 0x002d, 0x044b, 0x044b, + 0x0002, 0x002d, 0x0463, 0x0463, 0x0003, 0x0553, 0x0000, 0x0556, + 0x0001, 0x002d, 0x0406, 0x0002, 0x0559, 0x055d, 0x0002, 0x002d, + // Entry 1F1C0 - 1F1FF + 0x044b, 0x044b, 0x0002, 0x002d, 0x0463, 0x0463, 0x0003, 0x0565, + 0x0000, 0x0568, 0x0001, 0x002d, 0x0406, 0x0002, 0x056b, 0x056f, + 0x0002, 0x002d, 0x044b, 0x044b, 0x0002, 0x002d, 0x0463, 0x0463, + 0x0001, 0x0575, 0x0001, 0x002d, 0x047e, 0x0003, 0x0000, 0x057c, + 0x0581, 0x0003, 0x002d, 0x04a2, 0x04c5, 0x04df, 0x0002, 0x0584, + 0x0588, 0x0002, 0x002d, 0x04ff, 0x04ff, 0x0002, 0x002d, 0x0520, + 0x0520, 0x0003, 0x0000, 0x0590, 0x0595, 0x0003, 0x002d, 0x0547, + 0x0562, 0x0574, 0x0002, 0x0598, 0x059c, 0x0002, 0x002d, 0x04ff, + // Entry 1F200 - 1F23F + 0x04ff, 0x0002, 0x002d, 0x0520, 0x0520, 0x0003, 0x0000, 0x05a4, + 0x05a9, 0x0003, 0x002d, 0x0547, 0x0562, 0x0574, 0x0002, 0x05ac, + 0x05b0, 0x0002, 0x002d, 0x04ff, 0x04ff, 0x0002, 0x002d, 0x0520, + 0x0520, 0x0003, 0x0000, 0x05b8, 0x05bd, 0x0003, 0x002d, 0x058c, + 0x05af, 0x05c9, 0x0002, 0x05c0, 0x05c4, 0x0002, 0x002d, 0x05e9, + 0x05e9, 0x0002, 0x002d, 0x060a, 0x060a, 0x0003, 0x0000, 0x05cc, + 0x05d1, 0x0003, 0x002d, 0x0631, 0x064c, 0x065e, 0x0002, 0x05d4, + 0x05d8, 0x0002, 0x002d, 0x05e9, 0x05e9, 0x0002, 0x002d, 0x060a, + // Entry 1F240 - 1F27F + 0x060a, 0x0003, 0x0000, 0x05e0, 0x05e5, 0x0003, 0x002d, 0x0631, + 0x064c, 0x065e, 0x0002, 0x05e8, 0x05ec, 0x0002, 0x002d, 0x05e9, + 0x05e9, 0x0002, 0x002d, 0x060a, 0x060a, 0x0003, 0x0000, 0x05f4, + 0x05f9, 0x0003, 0x002d, 0x0676, 0x069c, 0x06b9, 0x0002, 0x05fc, + 0x0600, 0x0002, 0x002d, 0x06dc, 0x06dc, 0x0002, 0x002d, 0x0700, + 0x0700, 0x0003, 0x0000, 0x0608, 0x060d, 0x0003, 0x002d, 0x072a, + 0x0748, 0x075d, 0x0002, 0x0610, 0x0614, 0x0002, 0x002d, 0x06dc, + 0x06dc, 0x0002, 0x002d, 0x0700, 0x0700, 0x0003, 0x0000, 0x061c, + // Entry 1F280 - 1F2BF + 0x0621, 0x0003, 0x002d, 0x072a, 0x0748, 0x075d, 0x0002, 0x0624, + 0x0628, 0x0002, 0x002d, 0x06dc, 0x06dc, 0x0002, 0x002d, 0x0700, + 0x0700, 0x0003, 0x0000, 0x0630, 0x0635, 0x0003, 0x002d, 0x0778, + 0x079b, 0x07b5, 0x0002, 0x0638, 0x063c, 0x0002, 0x002d, 0x07d5, + 0x07d5, 0x0002, 0x002d, 0x07f6, 0x07f6, 0x0003, 0x0000, 0x0644, + 0x0649, 0x0003, 0x002d, 0x081d, 0x0838, 0x084a, 0x0002, 0x064c, + 0x0650, 0x0002, 0x002d, 0x07d5, 0x07d5, 0x0002, 0x002d, 0x07f6, + 0x07f6, 0x0003, 0x0000, 0x0658, 0x065d, 0x0003, 0x002d, 0x081d, + // Entry 1F2C0 - 1F2FF + 0x0838, 0x084a, 0x0002, 0x0660, 0x0664, 0x0002, 0x002d, 0x07d5, + 0x07d5, 0x0002, 0x002d, 0x07f6, 0x07f6, 0x0003, 0x0000, 0x066c, + 0x0671, 0x0003, 0x002d, 0x0862, 0x0888, 0x08a5, 0x0002, 0x0674, + 0x0678, 0x0002, 0x002d, 0x08c8, 0x08c8, 0x0002, 0x002d, 0x08ec, + 0x08ec, 0x0003, 0x0000, 0x0680, 0x0685, 0x0003, 0x002d, 0x0916, + 0x0934, 0x0949, 0x0002, 0x0688, 0x068c, 0x0002, 0x0000, 0x1cb9, + 0x1cb9, 0x0002, 0x0000, 0x1cc8, 0x1cc8, 0x0003, 0x0000, 0x0694, + 0x0699, 0x0003, 0x002d, 0x0916, 0x0934, 0x0949, 0x0002, 0x069c, + // Entry 1F300 - 1F33F + 0x06a0, 0x0002, 0x0000, 0x1cb9, 0x1cb9, 0x0002, 0x0000, 0x1cc8, + 0x1cc8, 0x0003, 0x0000, 0x06a8, 0x06ad, 0x0003, 0x002d, 0x0964, + 0x098d, 0x09ad, 0x0002, 0x06b0, 0x06b4, 0x0002, 0x002d, 0x09d3, + 0x09d3, 0x0002, 0x002d, 0x09fa, 0x09fa, 0x0003, 0x0000, 0x06bc, + 0x06c1, 0x0003, 0x002d, 0x0a27, 0x0a48, 0x0a60, 0x0002, 0x06c4, + 0x06c8, 0x0002, 0x0000, 0x1cfb, 0x1cfb, 0x0002, 0x0000, 0x1d08, + 0x1d08, 0x0003, 0x0000, 0x06d0, 0x06d5, 0x0003, 0x002d, 0x0a27, + 0x0a48, 0x0a60, 0x0002, 0x06d8, 0x06dc, 0x0002, 0x0000, 0x1cfb, + // Entry 1F340 - 1F37F + 0x1cfb, 0x0002, 0x0000, 0x1d08, 0x1d08, 0x0003, 0x0000, 0x06e4, + 0x06e9, 0x0003, 0x002d, 0x0a7e, 0x0aa1, 0x0abb, 0x0002, 0x06ec, + 0x06f0, 0x0002, 0x002d, 0x0adb, 0x0adb, 0x0002, 0x002d, 0x0afc, + 0x0afc, 0x0003, 0x0000, 0x06f8, 0x06fd, 0x0003, 0x002d, 0x0b23, + 0x0b3e, 0x0b50, 0x0002, 0x0700, 0x0704, 0x0002, 0x002d, 0x0adb, + 0x0adb, 0x0002, 0x002d, 0x0afc, 0x0afc, 0x0002, 0x0000, 0x070b, + 0x0003, 0x002d, 0x0b23, 0x0b3e, 0x0b50, 0x0001, 0x0712, 0x0001, + 0x002d, 0x0b68, 0x0003, 0x0719, 0x071c, 0x0720, 0x0001, 0x002d, + // Entry 1F380 - 1F3BF + 0x0b9a, 0x0002, 0x002d, 0xffff, 0x0ba7, 0x0002, 0x0723, 0x0727, + 0x0002, 0x002d, 0x0bbb, 0x0bbb, 0x0002, 0x002d, 0x0bd6, 0x0bd6, + 0x0003, 0x072f, 0x0000, 0x0732, 0x0001, 0x002d, 0x0bf4, 0x0002, + 0x0735, 0x0739, 0x0002, 0x002d, 0x0bfc, 0x0bfc, 0x0002, 0x002d, + 0x0c12, 0x0c12, 0x0003, 0x0741, 0x0000, 0x0744, 0x0001, 0x002d, + 0x0bf4, 0x0002, 0x0747, 0x074b, 0x0002, 0x002d, 0x0bfc, 0x0bfc, + 0x0002, 0x002d, 0x0c12, 0x0c12, 0x0003, 0x0753, 0x0756, 0x075a, + 0x0001, 0x002d, 0x0c2b, 0x0002, 0x002d, 0xffff, 0x0c38, 0x0002, + // Entry 1F3C0 - 1F3FF + 0x075d, 0x0761, 0x0002, 0x002d, 0x0c4c, 0x0c4c, 0x0002, 0x002d, + 0x0c67, 0x0c67, 0x0003, 0x0769, 0x0000, 0x076c, 0x0001, 0x002d, + 0x0c85, 0x0002, 0x076f, 0x0773, 0x0002, 0x002d, 0x0c8d, 0x0c8d, + 0x0002, 0x002d, 0x0ca3, 0x0ca3, 0x0003, 0x077b, 0x0000, 0x077e, + 0x0001, 0x002d, 0x0c85, 0x0002, 0x0781, 0x0785, 0x0002, 0x002d, + 0x0c8d, 0x0c8d, 0x0002, 0x002d, 0x0ca3, 0x0ca3, 0x0003, 0x078d, + 0x0790, 0x0794, 0x0001, 0x002d, 0x0cbc, 0x0002, 0x002d, 0xffff, + 0x0ccc, 0x0002, 0x0797, 0x079b, 0x0002, 0x002d, 0x0cd3, 0x0cd3, + // Entry 1F400 - 1F43F + 0x0002, 0x002d, 0x0cf1, 0x0cf1, 0x0003, 0x07a3, 0x0000, 0x07a6, + 0x0001, 0x002d, 0x0d12, 0x0002, 0x07a9, 0x07ad, 0x0002, 0x002d, + 0x0d1a, 0x0d1a, 0x0002, 0x002d, 0x0d30, 0x0d30, 0x0003, 0x07b5, + 0x0000, 0x07b8, 0x0001, 0x002d, 0x0d12, 0x0002, 0x07bb, 0x07bf, + 0x0002, 0x002d, 0x0d1a, 0x0d1a, 0x0002, 0x002d, 0x0d30, 0x0d30, + 0x0001, 0x07c5, 0x0001, 0x002d, 0x0d49, 0x0004, 0x07cd, 0x07d2, + 0x07d7, 0x07e6, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x253e, 0x0003, + 0x002d, 0x0d69, 0x0d77, 0x0d98, 0x0002, 0x0000, 0x07da, 0x0003, + // Entry 1F440 - 1F47F + 0x0000, 0x07e1, 0x07de, 0x0001, 0x002d, 0x0db3, 0x0003, 0x002d, + 0xffff, 0x0df2, 0x0e37, 0x0002, 0x09af, 0x07e9, 0x0003, 0x0883, + 0x0919, 0x07ed, 0x0094, 0x002d, 0x0e5e, 0x0e8d, 0x0ebd, 0x0ef3, + 0x0f5f, 0x101d, 0x10a0, 0x1158, 0x1256, 0x134b, 0x1446, 0x1518, + 0x15a1, 0x1603, 0x1674, 0x1737, 0x180d, 0x18ae, 0x1950, 0x1a67, + 0x1b88, 0x1c74, 0x1d44, 0x1de2, 0x1e7d, 0x1f01, 0x1f1b, 0x1f67, + 0x1feb, 0x2048, 0x20bc, 0x20fd, 0x2162, 0x21d6, 0x2244, 0x22c2, + 0x22f2, 0x234b, 0x23f3, 0x24b5, 0x250f, 0x2529, 0x255f, 0x25b6, + // Entry 1F480 - 1F4BF + 0x263c, 0x268c, 0x2751, 0x27e9, 0x285f, 0x293f, 0x2a09, 0x2a6f, + 0x2aa2, 0x2afe, 0x2b2b, 0x2b6e, 0x2be6, 0x2c25, 0x2c8e, 0x2d6e, + 0x2e18, 0x2e3f, 0x2e8b, 0x2f2d, 0x2fc1, 0x3027, 0x3051, 0x307e, + 0x30a4, 0x30da, 0x3116, 0x316c, 0x31e3, 0x3287, 0x3301, 0x33a9, + 0x3483, 0x34bc, 0x3518, 0x3578, 0x35cd, 0x366f, 0x369e, 0x36f8, + 0x3766, 0x37b6, 0x3828, 0x3848, 0x3865, 0x3888, 0x38de, 0x394a, + 0x39b0, 0x3a9b, 0x3b51, 0x3be8, 0x3c54, 0x3c77, 0x3c8e, 0x3cde, + 0x3da8, 0x3e55, 0x3edf, 0x3ef6, 0x3f72, 0x406e, 0x4121, 0x41b3, + // Entry 1F4C0 - 1F4FF + 0x4231, 0x4248, 0x429f, 0x432e, 0x43b1, 0x4429, 0x44ac, 0x4554, + 0x4577, 0x4594, 0x45bd, 0x45e0, 0x461a, 0x46a0, 0x471d, 0x476b, + 0x4788, 0x47ab, 0x47e4, 0x481d, 0x483d, 0x485a, 0x4891, 0x48e5, + 0x4911, 0x494b, 0x49b1, 0x49fa, 0x4a96, 0x4ad3, 0x4b77, 0x4c2a, + 0x4c96, 0x4cf1, 0x4db3, 0x4e3d, 0x4e5d, 0x4e81, 0x4ee4, 0x4f94, + 0x0094, 0x002d, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f29, 0x0ffd, + 0x1083, 0x110c, 0x1210, 0x1302, 0x13fd, 0x14f8, 0x158a, 0x15ef, + 0x164b, 0x16f8, 0x17e7, 0x188b, 0x1914, 0x1a06, 0x1b49, 0x1c32, + // Entry 1F500 - 1F53F + 0x1d1e, 0x1dc2, 0x1e54, 0xffff, 0xffff, 0x1f3e, 0xffff, 0x2027, + 0xffff, 0x20e6, 0x214b, 0x21c2, 0x221e, 0xffff, 0xffff, 0x2328, + 0x23c3, 0x2498, 0xffff, 0xffff, 0xffff, 0x258c, 0xffff, 0x265f, + 0x271e, 0xffff, 0x2829, 0x2900, 0x29ef, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2b4b, 0xffff, 0xffff, 0x2c55, 0x2d32, 0xffff, 0xffff, + 0x2e5c, 0x2f09, 0x2fa7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3155, 0x31ba, 0x3267, 0x32e7, 0x3355, 0xffff, 0xffff, + 0x34f8, 0xffff, 0x3595, 0xffff, 0xffff, 0x36d1, 0xffff, 0x3796, + // Entry 1F540 - 1F57F + 0xffff, 0xffff, 0xffff, 0xffff, 0x38c1, 0xffff, 0x3967, 0x3a62, + 0x3b2d, 0x3bcb, 0xffff, 0xffff, 0xffff, 0x3ca8, 0x3d7c, 0x3e20, + 0xffff, 0xffff, 0x3f26, 0x403c, 0x4104, 0x418d, 0xffff, 0xffff, + 0x427c, 0x4317, 0x438e, 0xffff, 0x4468, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x45fd, 0x4686, 0x4706, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4877, 0xffff, 0xffff, 0x4931, + 0xffff, 0x49c5, 0xffff, 0x4ab3, 0x4b45, 0x4c0d, 0xffff, 0x4cbf, + 0x4d87, 0xffff, 0xffff, 0xffff, 0x4ebe, 0x4f62, 0x0094, 0x002d, + // Entry 1F580 - 1F5BF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0fa2, 0x104d, 0x10ca, 0x11b1, + 0x12a9, 0x13a1, 0x149c, 0x1545, 0x15c5, 0x1624, 0x16aa, 0x1783, + 0x1840, 0x18de, 0x19a8, 0x1ad5, 0x1bda, 0x1cc6, 0x1d77, 0x1e0f, + 0x1eb3, 0xffff, 0xffff, 0x1f9d, 0xffff, 0x2076, 0xffff, 0x2121, + 0x2186, 0x21f7, 0x2277, 0xffff, 0xffff, 0x237b, 0x2430, 0x24df, + 0xffff, 0xffff, 0xffff, 0x25ed, 0xffff, 0x26c6, 0x2791, 0xffff, + 0x28a2, 0x298b, 0x2a30, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b9e, + 0xffff, 0xffff, 0x2cd4, 0x2db7, 0xffff, 0xffff, 0x2ec7, 0x2f5e, + // Entry 1F5C0 - 1F5FF + 0x2fe8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3190, + 0x3219, 0x32b4, 0x3328, 0x340a, 0xffff, 0xffff, 0x3545, 0xffff, + 0x3612, 0xffff, 0xffff, 0x372c, 0xffff, 0x37e3, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3908, 0xffff, 0x3a06, 0x3ae1, 0x3b82, 0x3c12, + 0xffff, 0xffff, 0xffff, 0x3d21, 0x3de1, 0x3e97, 0xffff, 0xffff, + 0x3fcb, 0x40ad, 0x414b, 0x41e6, 0xffff, 0xffff, 0x42cf, 0x4352, + 0x43e1, 0xffff, 0x44fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x4644, 0x46c7, 0x4741, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1F600 - 1F63F + 0xffff, 0xffff, 0x48b8, 0xffff, 0xffff, 0x4972, 0xffff, 0x4a3c, + 0xffff, 0x4b00, 0x4bb6, 0x4c54, 0xffff, 0x4d30, 0x4dec, 0xffff, + 0xffff, 0xffff, 0x4f17, 0x4fd3, 0x0003, 0x0000, 0x0000, 0x09b3, + 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 1F640 - 1F67F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, 0x0004, 0x05bc, 0x0adc, + 0x0012, 0x0017, 0x0024, 0x0000, 0x0000, 0x0061, 0x0000, 0x00ce, + 0x00f9, 0x0317, 0x0324, 0x0396, 0x0000, 0x0000, 0x0000, 0x0000, + 0x041c, 0x0539, 0x05ab, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, + // Entry 1F680 - 1F6BF + 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0050, 0x0000, + 0x0000, 0x0000, 0x002f, 0x0004, 0x0034, 0x0000, 0x0000, 0x0047, + 0x0001, 0x0036, 0x0001, 0x0038, 0x000d, 0x0000, 0xffff, 0x005a, + 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, + 0x007e, 0x2226, 0x0085, 0x0001, 0x0049, 0x0001, 0x004b, 0x0003, + 0x0000, 0xffff, 0x0089, 0x0097, 0x0004, 0x005e, 0x0058, 0x0055, + 0x005b, 0x0001, 0x002e, 0x0000, 0x0001, 0x002e, 0x000c, 0x0001, + 0x002e, 0x000c, 0x0001, 0x002e, 0x000c, 0x0001, 0x0063, 0x0002, + // Entry 1F6C0 - 1F6FF + 0x0066, 0x009a, 0x0003, 0x006a, 0x007a, 0x008a, 0x000e, 0x0000, + 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, + 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, + 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, + 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x0003, 0x009e, + 0x00ae, 0x00be, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, + // Entry 1F700 - 1F73F + 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, + 0x0479, 0x0481, 0x000e, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, + 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, 0x325b, 0x325f, + 0x3263, 0x3267, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, + 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, + 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00d7, 0x0000, 0x00e8, 0x0004, 0x00e5, 0x00df, 0x00dc, 0x00e2, + 0x0001, 0x002e, 0x0015, 0x0001, 0x002e, 0x0028, 0x0001, 0x002e, + // Entry 1F740 - 1F77F + 0x0035, 0x0001, 0x002e, 0x0041, 0x0004, 0x00f6, 0x00f0, 0x00ed, + 0x00f3, 0x0001, 0x000d, 0x004d, 0x0001, 0x000d, 0x004d, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0102, 0x0167, + 0x01be, 0x01f3, 0x02c4, 0x02e4, 0x02f5, 0x0306, 0x0002, 0x0105, + 0x0136, 0x0003, 0x0109, 0x0118, 0x0127, 0x000d, 0x002e, 0xffff, + 0x0052, 0x0056, 0x005b, 0x0060, 0x0064, 0x0068, 0x006c, 0x0070, + 0x0074, 0x0078, 0x007c, 0x0080, 0x000d, 0x000d, 0xffff, 0x0130, + 0x0133, 0x0136, 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, + // Entry 1F780 - 1F7BF + 0x325b, 0x325f, 0x3263, 0x000d, 0x002e, 0xffff, 0x0084, 0x008e, + 0x0097, 0x009f, 0x00a7, 0x00af, 0x00b6, 0x00bd, 0x00c6, 0x00cc, + 0x00d6, 0x00e0, 0x0003, 0x013a, 0x0149, 0x0158, 0x000d, 0x002e, + 0xffff, 0x0052, 0x0056, 0x005b, 0x0060, 0x0064, 0x0068, 0x006c, + 0x0070, 0x0074, 0x0078, 0x007c, 0x0080, 0x000d, 0x000d, 0xffff, + 0x0130, 0x0133, 0x0136, 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, + 0x3258, 0x325b, 0x325f, 0x3263, 0x000d, 0x002e, 0xffff, 0x00e9, + 0x00f3, 0x00fc, 0x0104, 0x010c, 0x0114, 0x011b, 0x0122, 0x012a, + // Entry 1F7C0 - 1F7FF + 0x0130, 0x0139, 0x0141, 0x0002, 0x016a, 0x0194, 0x0005, 0x0170, + 0x0179, 0x018b, 0x0000, 0x0182, 0x0007, 0x000d, 0x00d8, 0x00dc, + 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x0000, 0x22ee, + 0x255c, 0x22ea, 0x2481, 0x21e9, 0x255c, 0x2481, 0x0007, 0x000d, + 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, + 0x000d, 0x00f5, 0x00fe, 0x010a, 0x0111, 0x0119, 0x0123, 0x0129, + 0x0005, 0x019a, 0x01a3, 0x01b5, 0x0000, 0x01ac, 0x0007, 0x000d, + 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, + // Entry 1F800 - 1F83F + 0x0000, 0x1f96, 0x21ec, 0x2010, 0x2002, 0x21ee, 0x21ec, 0x2002, + 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, + 0x00f1, 0x0007, 0x000d, 0x00f5, 0x00fe, 0x010a, 0x0111, 0x0119, + 0x0123, 0x0129, 0x0002, 0x01c1, 0x01da, 0x0003, 0x01c5, 0x01cc, + 0x01d3, 0x0005, 0x002e, 0xffff, 0x014a, 0x014e, 0x0152, 0x0156, + 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, + 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0003, 0x01de, + 0x01e5, 0x01ec, 0x0005, 0x002e, 0xffff, 0x015a, 0x0161, 0x0168, + // Entry 1F840 - 1F87F + 0x016f, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, + 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0002, + 0x01f6, 0x025d, 0x0003, 0x01fa, 0x021b, 0x023c, 0x0008, 0x0206, + 0x020c, 0x0203, 0x020f, 0x0212, 0x0215, 0x0218, 0x0209, 0x0001, + 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, 0x0189, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, 0x000d, + 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, 0x0008, + 0x0227, 0x022d, 0x0224, 0x0230, 0x0233, 0x0236, 0x0239, 0x022a, + // Entry 1F880 - 1F8BF + 0x0001, 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, + 0x0189, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, + 0x000d, 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, + 0x0008, 0x0248, 0x024e, 0x0245, 0x0251, 0x0254, 0x0257, 0x025a, + 0x024b, 0x0001, 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x000d, 0x0189, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, + 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, + 0x0176, 0x0003, 0x0261, 0x0282, 0x02a3, 0x0008, 0x026d, 0x0273, + // Entry 1F8C0 - 1F8FF + 0x026a, 0x0276, 0x0279, 0x027c, 0x027f, 0x0270, 0x0001, 0x000d, + 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, 0x0189, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, 0x000d, 0x018f, + 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, 0x0008, 0x028e, + 0x0294, 0x028b, 0x0297, 0x029a, 0x029d, 0x02a0, 0x0291, 0x0001, + 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, 0x0189, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, 0x000d, + 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, 0x0008, + // Entry 1F900 - 1F93F + 0x02af, 0x02b5, 0x02ac, 0x02b8, 0x02bb, 0x02be, 0x02c1, 0x02b2, + 0x0001, 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, + 0x0189, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, + 0x000d, 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, + 0x0003, 0x02d3, 0x02de, 0x02c8, 0x0002, 0x02cb, 0x02cf, 0x0002, + 0x002e, 0x017c, 0x0189, 0x0002, 0x000d, 0x01bd, 0x01cc, 0x0002, + 0x02d6, 0x02da, 0x0002, 0x002e, 0x0198, 0x01aa, 0x0002, 0x002e, + 0x01a0, 0x01b2, 0x0001, 0x02e0, 0x0002, 0x000d, 0x01e4, 0x326b, + // Entry 1F940 - 1F97F + 0x0004, 0x02f2, 0x02ec, 0x02e9, 0x02ef, 0x0001, 0x000d, 0x01ef, + 0x0001, 0x000d, 0x0200, 0x0001, 0x002e, 0x01b8, 0x0001, 0x002e, + 0x01c2, 0x0004, 0x0303, 0x02fd, 0x02fa, 0x0300, 0x0001, 0x001f, + 0x1e5b, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x0314, 0x030e, 0x030b, 0x0311, 0x0001, + 0x000d, 0x004d, 0x0001, 0x000d, 0x004d, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x031d, 0x0001, 0x031f, 0x0001, 0x0321, 0x0001, 0x0000, 0x04ef, + // Entry 1F980 - 1F9BF + 0x0005, 0x032a, 0x0000, 0x0000, 0x0000, 0x038f, 0x0002, 0x032d, + 0x035e, 0x0003, 0x0331, 0x0340, 0x034f, 0x000d, 0x0000, 0xffff, + 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, + 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, + 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, + 0x05f2, 0x05f8, 0x0003, 0x0362, 0x0371, 0x0380, 0x000d, 0x0000, + // Entry 1F9C0 - 1F9FF + 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, + 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x000d, 0xffff, + 0x0130, 0x0133, 0x0136, 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, + 0x3258, 0x325b, 0x325f, 0x3263, 0x000d, 0x0000, 0xffff, 0x05a2, + 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, + 0x05ec, 0x05f2, 0x05f8, 0x0001, 0x0391, 0x0001, 0x0393, 0x0001, + 0x0000, 0x0601, 0x0008, 0x039f, 0x0000, 0x0000, 0x0000, 0x0404, + 0x040b, 0x0000, 0x9006, 0x0002, 0x03a2, 0x03d3, 0x0003, 0x03a6, + // Entry 1FA00 - 1FA3F + 0x03b5, 0x03c4, 0x000d, 0x0000, 0xffff, 0x0606, 0x255e, 0x2563, + 0x256a, 0x061f, 0x0626, 0x2572, 0x0633, 0x2577, 0x063d, 0x0643, + 0x064d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x000d, 0x0000, 0xffff, 0x0657, 0x257c, 0x0666, 0x066f, 0x0679, + 0x0682, 0x2582, 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, 0x0003, + 0x03d7, 0x03e6, 0x03f5, 0x000d, 0x0000, 0xffff, 0x0606, 0x255e, + 0x2563, 0x256a, 0x061f, 0x0626, 0x2572, 0x0633, 0x2577, 0x063d, + // Entry 1FA40 - 1FA7F + 0x0643, 0x064d, 0x000d, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, + 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, 0x325b, 0x325f, + 0x3263, 0x000d, 0x0000, 0xffff, 0x0657, 0x257c, 0x0666, 0x066f, + 0x0679, 0x0682, 0x2582, 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, + 0x0001, 0x0406, 0x0001, 0x0408, 0x0001, 0x0000, 0x06c8, 0x0004, + 0x0419, 0x0413, 0x0410, 0x0416, 0x0001, 0x002e, 0x0015, 0x0001, + 0x002e, 0x0028, 0x0001, 0x002e, 0x01cd, 0x0001, 0x002e, 0x01d8, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0425, 0x0517, 0x0000, + // Entry 1FA80 - 1FABF + 0x0528, 0x0001, 0x0427, 0x0001, 0x0429, 0x00ec, 0x002e, 0x01e7, + 0x01f9, 0x020d, 0x0221, 0x0235, 0x0248, 0x025a, 0x026c, 0x027e, + 0x0291, 0x02a3, 0x02b7, 0x02d2, 0x02ee, 0x0308, 0x0322, 0x033a, + 0x034c, 0x035f, 0x0373, 0x0386, 0x0399, 0x03ad, 0x03bf, 0x03d1, + 0x03e3, 0x03f5, 0x0408, 0x041b, 0x042e, 0x0440, 0x0454, 0x0468, + 0x0479, 0x048c, 0x04a0, 0x04b4, 0x04c9, 0x04dd, 0x04ee, 0x0501, + 0x0512, 0x0526, 0x0539, 0x054c, 0x055f, 0x0571, 0x0583, 0x0595, + 0x05a6, 0x05bc, 0x05d1, 0x05e6, 0x05fb, 0x0610, 0x0625, 0x0638, + // Entry 1FAC0 - 1FAFF + 0x064c, 0x0662, 0x067a, 0x0691, 0x06a7, 0x06bc, 0x06d0, 0x06e5, + 0x06fb, 0x0710, 0x0725, 0x073d, 0x0750, 0x0765, 0x0779, 0x078c, + 0x07a1, 0x07b8, 0x07cc, 0x07e1, 0x07f6, 0x080b, 0x0820, 0x0835, + 0x084a, 0x085d, 0x0871, 0x0885, 0x089b, 0x08b2, 0x08c5, 0x08d8, + 0x08ec, 0x0901, 0x0916, 0x092b, 0x0940, 0x0954, 0x0968, 0x097e, + 0x0991, 0x09a7, 0x09bb, 0x09d0, 0x09e3, 0x09f8, 0x0a0c, 0x0a21, + 0x0a35, 0x0a48, 0x0a5f, 0x0a73, 0x0a89, 0x0a9e, 0x0ab3, 0x0ac9, + 0x0ade, 0x0af4, 0x0b0b, 0x0b20, 0x0b37, 0x0b4b, 0x0b60, 0x0b75, + // Entry 1FB00 - 1FB3F + 0x0b89, 0x0b9d, 0x0bb1, 0x0bc7, 0x0bde, 0x0bf2, 0x0c09, 0x0c1d, + 0x0c31, 0x0c46, 0x0c5a, 0x0c70, 0x0c85, 0x0c9a, 0x0cb0, 0x0cc5, + 0x0cdb, 0x0cf0, 0x0d04, 0x0d18, 0x0d2d, 0x0d41, 0x0d56, 0x0d6b, + 0x0d7f, 0x0d94, 0x0da8, 0x0dbd, 0x0dd2, 0x0de7, 0x0dfb, 0x0e11, + 0x0e28, 0x0e3d, 0x0e53, 0x0e68, 0x0e7c, 0x0e90, 0x0ea6, 0x0ebc, + 0x0ed2, 0x0ee8, 0x0efc, 0x0f13, 0x0f27, 0x0f3d, 0x0f53, 0x0f67, + 0x0f7b, 0x0f91, 0x0fa4, 0x0fbb, 0x0fd0, 0x0fe6, 0x0ffb, 0x1011, + 0x1028, 0x103e, 0x1055, 0x106b, 0x1081, 0x1095, 0x10aa, 0x10c1, + // Entry 1FB40 - 1FB7F + 0x10d6, 0x10ea, 0x10fe, 0x1113, 0x1127, 0x113e, 0x1153, 0x1167, + 0x117c, 0x1190, 0x11a6, 0x11bc, 0x11d2, 0x11e6, 0x11fb, 0x1210, + 0x1224, 0x1239, 0x1250, 0x1264, 0x1279, 0x128d, 0x12a1, 0x12b7, + 0x12cd, 0x12e1, 0x12f8, 0x130e, 0x1323, 0x1338, 0x134d, 0x1362, + 0x1379, 0x138d, 0x13a1, 0x13b6, 0x13cb, 0x13e0, 0x13f4, 0x1409, + 0x141e, 0x1432, 0x1445, 0x1459, 0x146e, 0x1484, 0x1498, 0x14ac, + 0x14b2, 0x14ba, 0x14c1, 0x0004, 0x0525, 0x051f, 0x051c, 0x0522, + 0x0001, 0x002e, 0x0015, 0x0001, 0x002e, 0x0028, 0x0001, 0x002e, + // Entry 1FB80 - 1FBBF + 0x01cd, 0x0001, 0x002e, 0x01d8, 0x0004, 0x0536, 0x0530, 0x052d, + 0x0533, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x053f, 0x0000, + 0x0000, 0x0000, 0x05a4, 0x0002, 0x0542, 0x0573, 0x0003, 0x0546, + 0x0555, 0x0564, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, + 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, + 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + // Entry 1FBC0 - 1FBFF + 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, + 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, + 0x0577, 0x0586, 0x0595, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, + 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, + 0x1a0f, 0x1a16, 0x000d, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, + 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, 0x325b, 0x325f, + 0x3263, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, + 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, + // Entry 1FC00 - 1FC3F + 0x0001, 0x05a6, 0x0001, 0x05a8, 0x0001, 0x0000, 0x1a1d, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x05b4, 0x0000, 0x0000, 0x9006, + 0x0001, 0x05b6, 0x0001, 0x05b8, 0x0002, 0x000d, 0x02da, 0x326e, + 0x0040, 0x05fd, 0x0000, 0x0000, 0x0602, 0x061f, 0x063c, 0x0659, + 0x0676, 0x0693, 0x06b0, 0x06cd, 0x06ea, 0x0707, 0x0728, 0x0749, + 0x0000, 0x0000, 0x0000, 0x076a, 0x0789, 0x07a8, 0x0000, 0x0000, + 0x0000, 0x07c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07cc, + 0x07e6, 0x0800, 0x081a, 0x0834, 0x084e, 0x0868, 0x0882, 0x089c, + // Entry 1FC40 - 1FC7F + 0x08b6, 0x08d0, 0x08ea, 0x0904, 0x091e, 0x0938, 0x0952, 0x096c, + 0x0986, 0x09a0, 0x09ba, 0x09d4, 0x0000, 0x09ee, 0x0000, 0x09f3, + 0x0a0f, 0x0a27, 0x0a3f, 0x0a5b, 0x0a73, 0x0a8b, 0x0aa7, 0x0abf, + 0x0ad7, 0x0001, 0x05ff, 0x0001, 0x0001, 0x0040, 0x0003, 0x0606, + 0x0609, 0x060e, 0x0001, 0x000d, 0x02ee, 0x0003, 0x000d, 0x02f5, + 0x0304, 0x030f, 0x0002, 0x0611, 0x0618, 0x0005, 0x000d, 0x033c, + 0x0320, 0xffff, 0xffff, 0x032e, 0x0005, 0x000d, 0x036c, 0x034a, + 0xffff, 0xffff, 0x035b, 0x0003, 0x0623, 0x0626, 0x062b, 0x0001, + // Entry 1FC80 - 1FCBF + 0x000d, 0x039d, 0x0003, 0x002e, 0x14c8, 0x14d5, 0x14de, 0x0002, + 0x062e, 0x0635, 0x0005, 0x000d, 0x03a0, 0x03a0, 0xffff, 0xffff, + 0x03a0, 0x0005, 0x000d, 0x03aa, 0x03aa, 0xffff, 0xffff, 0x03aa, + 0x0003, 0x0640, 0x0643, 0x0648, 0x0001, 0x000d, 0x039d, 0x0003, + 0x002e, 0x14ed, 0x14f8, 0x14ff, 0x0002, 0x064b, 0x0652, 0x0005, + 0x002e, 0x150c, 0x150c, 0xffff, 0xffff, 0x150c, 0x0005, 0x002e, + 0x1514, 0x1514, 0xffff, 0xffff, 0x1514, 0x0003, 0x065d, 0x0660, + 0x0665, 0x0001, 0x000d, 0x03b7, 0x0003, 0x002e, 0x151c, 0x152c, + // Entry 1FCC0 - 1FCFF + 0x1539, 0x0002, 0x0668, 0x066f, 0x0005, 0x000d, 0x0400, 0x03f1, + 0xffff, 0xffff, 0x0400, 0x0005, 0x000d, 0x0422, 0x0410, 0xffff, + 0xffff, 0x0422, 0x0003, 0x067a, 0x067d, 0x0682, 0x0001, 0x000d, + 0x043e, 0x0003, 0x002e, 0x154b, 0x1557, 0x1560, 0x0002, 0x0685, + 0x068c, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, 0x0442, + 0x0005, 0x000d, 0x044d, 0x044d, 0xffff, 0xffff, 0x044d, 0x0003, + 0x0697, 0x069a, 0x069f, 0x0001, 0x000d, 0x043e, 0x0003, 0x002e, + 0x154b, 0x1557, 0x1560, 0x0002, 0x06a2, 0x06a9, 0x0005, 0x002e, + // Entry 1FD00 - 1FD3F + 0x156e, 0x156e, 0xffff, 0xffff, 0x156e, 0x0005, 0x000d, 0x0435, + 0x0435, 0xffff, 0xffff, 0x0435, 0x0003, 0x06b4, 0x06b7, 0x06bc, + 0x0001, 0x000d, 0x045b, 0x0003, 0x000d, 0x0462, 0x0471, 0x047d, + 0x0002, 0x06bf, 0x06c6, 0x0005, 0x000d, 0x04ab, 0x048e, 0xffff, + 0xffff, 0x049c, 0x0005, 0x000d, 0x04dd, 0x04ba, 0xffff, 0xffff, + 0x04cb, 0x0003, 0x06d1, 0x06d4, 0x06d9, 0x0001, 0x000d, 0x04ef, + 0x0003, 0x002e, 0x1577, 0x1583, 0x158c, 0x0002, 0x06dc, 0x06e3, + 0x0005, 0x000d, 0x04f3, 0x04f3, 0xffff, 0xffff, 0x04f3, 0x0005, + // Entry 1FD40 - 1FD7F + 0x000d, 0x04fe, 0x04fe, 0xffff, 0xffff, 0x04fe, 0x0003, 0x06ee, + 0x06f1, 0x06f6, 0x0001, 0x0029, 0x0080, 0x0003, 0x002e, 0x1577, + 0x1583, 0x158c, 0x0002, 0x06f9, 0x0700, 0x0005, 0x002e, 0x159a, + 0x159a, 0xffff, 0xffff, 0x159a, 0x0005, 0x002e, 0x15a3, 0x15a3, + 0xffff, 0xffff, 0x15a3, 0x0004, 0x070c, 0x070f, 0x0714, 0x0725, + 0x0001, 0x002e, 0x15ac, 0x0003, 0x002e, 0x15b3, 0x15c2, 0x15ce, + 0x0002, 0x0717, 0x071e, 0x0005, 0x002e, 0x15fb, 0x15df, 0xffff, + 0xffff, 0x15ed, 0x0005, 0x002e, 0x162c, 0x160a, 0xffff, 0xffff, + // Entry 1FD80 - 1FDBF + 0x161b, 0x0001, 0x002e, 0x163e, 0x0004, 0x072d, 0x0730, 0x0735, + 0x0746, 0x0001, 0x002e, 0x164c, 0x0003, 0x002e, 0x1650, 0x165c, + 0x1665, 0x0002, 0x0738, 0x073f, 0x0005, 0x002e, 0x1673, 0x1673, + 0xffff, 0xffff, 0x1673, 0x0005, 0x002e, 0x167e, 0x167e, 0xffff, + 0xffff, 0x167e, 0x0001, 0x002e, 0x163e, 0x0004, 0x074e, 0x0751, + 0x0756, 0x0767, 0x0001, 0x002e, 0x164c, 0x0003, 0x002e, 0x1650, + 0x165c, 0x1665, 0x0002, 0x0759, 0x0760, 0x0005, 0x002e, 0x168c, + 0x168c, 0xffff, 0xffff, 0x168c, 0x0005, 0x002e, 0x1695, 0x1695, + // Entry 1FDC0 - 1FDFF + 0xffff, 0xffff, 0x1695, 0x0001, 0x002e, 0x163e, 0x0003, 0x076e, + 0x0771, 0x0778, 0x0001, 0x000d, 0x05d4, 0x0005, 0x000d, 0x05e3, + 0x05ea, 0x05f0, 0x05d8, 0x05f6, 0x0002, 0x077b, 0x0782, 0x0005, + 0x000d, 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x000d, + 0x0626, 0x0618, 0xffff, 0xffff, 0x0626, 0x0003, 0x078d, 0x0790, + 0x0797, 0x0001, 0x0029, 0x008f, 0x0005, 0x000d, 0x05e3, 0x05ea, + 0x05f0, 0x05d8, 0x05f6, 0x0002, 0x079a, 0x07a1, 0x0005, 0x000d, + 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x000d, 0x0626, + // Entry 1FE00 - 1FE3F + 0x0618, 0xffff, 0xffff, 0x0626, 0x0003, 0x07ac, 0x07af, 0x07b6, + 0x0001, 0x0029, 0x008f, 0x0005, 0x000d, 0x05e3, 0x05ea, 0x05f0, + 0x05d8, 0x05f6, 0x0002, 0x07b9, 0x07c0, 0x0005, 0x002e, 0x169e, + 0x169e, 0xffff, 0xffff, 0x169e, 0x0005, 0x002e, 0x16a7, 0x16a7, + 0xffff, 0xffff, 0x16a7, 0x0001, 0x07c9, 0x0001, 0x002e, 0x16b3, + 0x0003, 0x0000, 0x07d0, 0x07d5, 0x0003, 0x000d, 0x065a, 0x066b, + 0x0678, 0x0002, 0x07d8, 0x07df, 0x0005, 0x000d, 0x06ab, 0x068b, + 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, 0x06e1, 0x06bb, 0xffff, + // Entry 1FE40 - 1FE7F + 0xffff, 0x06ce, 0x0003, 0x0000, 0x07ea, 0x07ef, 0x0003, 0x000d, + 0x06f4, 0x0701, 0x070a, 0x0002, 0x07f2, 0x07f9, 0x0005, 0x000d, + 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, 0x06e1, + 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, 0x0804, 0x0809, + 0x0003, 0x000d, 0x06f4, 0x0701, 0x070a, 0x0002, 0x080c, 0x0813, + 0x0005, 0x000d, 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, + 0x000d, 0x06e1, 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, + 0x081e, 0x0823, 0x0003, 0x000d, 0x0719, 0x072d, 0x073e, 0x0002, + // Entry 1FE80 - 1FEBF + 0x0826, 0x082d, 0x0005, 0x000d, 0x077a, 0x0754, 0xffff, 0xffff, + 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, 0xffff, 0xffff, 0x07a4, + 0x0003, 0x0000, 0x0838, 0x083d, 0x0003, 0x000d, 0x07d1, 0x07de, + 0x3275, 0x0002, 0x0840, 0x0847, 0x0005, 0x000d, 0x077a, 0x0754, + 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, 0xffff, + 0xffff, 0x07a4, 0x0003, 0x0000, 0x0852, 0x0857, 0x0003, 0x000d, + 0x07d1, 0x07de, 0x3275, 0x0002, 0x085a, 0x0861, 0x0005, 0x000d, + 0x077a, 0x0754, 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, + // Entry 1FEC0 - 1FEFF + 0x078e, 0xffff, 0xffff, 0x07a4, 0x0003, 0x0000, 0x086c, 0x0871, + 0x0003, 0x000d, 0x07f6, 0x0805, 0x0811, 0x0002, 0x0874, 0x087b, + 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, 0x0830, 0x0005, + 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, 0x085e, 0x0003, 0x0000, + 0x0886, 0x088b, 0x0003, 0x000d, 0x0881, 0x088e, 0x0898, 0x0002, + 0x088e, 0x0895, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, + 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, 0x085e, + 0x0003, 0x0000, 0x08a0, 0x08a5, 0x0003, 0x000d, 0x0881, 0x088e, + // Entry 1FF00 - 1FF3F + 0x0898, 0x0002, 0x08a8, 0x08af, 0x0005, 0x000d, 0x083e, 0x0822, + 0xffff, 0xffff, 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, + 0xffff, 0x085e, 0x0003, 0x0000, 0x08ba, 0x08bf, 0x0003, 0x000d, + 0x08a7, 0x08b7, 0x08c3, 0x0002, 0x08c2, 0x08c9, 0x0005, 0x000d, + 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, 0x0005, 0x000d, 0x0926, + 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, 0x0000, 0x08d4, 0x08d9, + 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, 0x0002, 0x08dc, 0x08e3, + 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, 0x0005, + // Entry 1FF40 - 1FF7F + 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, 0x0000, + 0x08ee, 0x08f3, 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, 0x0002, + 0x08f6, 0x08fd, 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, + 0x08e4, 0x0005, 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, + 0x0003, 0x0000, 0x0908, 0x090d, 0x0003, 0x000d, 0x095d, 0x096f, + 0x097e, 0x0002, 0x0910, 0x0917, 0x0005, 0x000d, 0x09b4, 0x0992, + 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, 0x09ee, 0x09c6, 0xffff, + 0xffff, 0x09da, 0x0003, 0x0000, 0x0922, 0x0927, 0x0003, 0x000d, + // Entry 1FF80 - 1FFBF + 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x092a, 0x0931, 0x0005, 0x000d, + 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, 0x09ee, + 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, 0x093c, 0x0941, + 0x0003, 0x000d, 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x0944, 0x094b, + 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, + 0x000d, 0x09ee, 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, + 0x0956, 0x095b, 0x0003, 0x000d, 0x0a2c, 0x0a3a, 0x0a45, 0x0002, + 0x095e, 0x0965, 0x0005, 0x000d, 0x0a6f, 0x0a55, 0xffff, 0xffff, + // Entry 1FFC0 - 1FFFF + 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, 0xffff, 0xffff, 0x0a8d, + 0x0003, 0x0000, 0x0970, 0x0975, 0x0003, 0x000d, 0x0aae, 0x0abb, + 0x0ac5, 0x0002, 0x0978, 0x097f, 0x0005, 0x000d, 0x0a6f, 0x0a55, + 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, 0xffff, + 0xffff, 0x0a8d, 0x0003, 0x0000, 0x098a, 0x098f, 0x0003, 0x000d, + 0x0aae, 0x0abb, 0x0ac5, 0x0002, 0x0992, 0x0999, 0x0005, 0x000d, + 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, + 0x0a7d, 0xffff, 0xffff, 0x0a8d, 0x0003, 0x0000, 0x09a4, 0x09a9, + // Entry 20000 - 2003F + 0x0003, 0x000d, 0x0ad4, 0x0ae3, 0x0aee, 0x0002, 0x09ac, 0x09b3, + 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, 0x0b0d, 0x0005, + 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, 0x0b3a, 0x0003, 0x0000, + 0x09be, 0x09c3, 0x0003, 0x000d, 0x0b5c, 0x0b69, 0x0b72, 0x0002, + 0x09c6, 0x09cd, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, + 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, 0x0b3a, + 0x0003, 0x0000, 0x09d8, 0x09dd, 0x0003, 0x000d, 0x0b5c, 0x0b69, + 0x0b72, 0x0002, 0x09e0, 0x09e7, 0x0005, 0x000d, 0x0b1b, 0x0aff, + // Entry 20040 - 2007F + 0xffff, 0xffff, 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, + 0xffff, 0x0b3a, 0x0001, 0x09f0, 0x0001, 0x0007, 0x07cc, 0x0003, + 0x09f7, 0x09fa, 0x09fe, 0x0001, 0x000d, 0x0b99, 0x0002, 0x000d, + 0xffff, 0x0b9d, 0x0002, 0x0a01, 0x0a08, 0x0005, 0x000d, 0x0bbd, + 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, 0x0bc9, + 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0a13, 0x0000, 0x0a16, 0x0001, + 0x0000, 0x2143, 0x0002, 0x0a19, 0x0a20, 0x0005, 0x0013, 0x0f1e, + 0x0f1e, 0xffff, 0xffff, 0x0f1e, 0x0005, 0x002e, 0x16c0, 0x16c0, + // Entry 20080 - 200BF + 0xffff, 0xffff, 0x16c0, 0x0003, 0x0a2b, 0x0000, 0x0a2e, 0x0001, + 0x0000, 0x2143, 0x0002, 0x0a31, 0x0a38, 0x0005, 0x0000, 0x1d76, + 0x1d76, 0xffff, 0xffff, 0x1d76, 0x0005, 0x0000, 0x1d7d, 0x1d7d, + 0xffff, 0xffff, 0x1d7d, 0x0003, 0x0a43, 0x0a46, 0x0a4a, 0x0001, + 0x000d, 0x0bf5, 0x0002, 0x000d, 0xffff, 0x0bfc, 0x0002, 0x0a4d, + 0x0a54, 0x0005, 0x000d, 0x0c23, 0x0c07, 0xffff, 0xffff, 0x0c15, + 0x0005, 0x000d, 0x0c53, 0x0c31, 0xffff, 0xffff, 0x0c42, 0x0003, + 0x0a5f, 0x0000, 0x0a62, 0x0001, 0x000b, 0x1250, 0x0002, 0x0a65, + // Entry 200C0 - 200FF + 0x0a6c, 0x0005, 0x0013, 0x0f75, 0x0f75, 0xffff, 0xffff, 0x0f75, + 0x0005, 0x002e, 0x16cc, 0x16cc, 0xffff, 0xffff, 0x16cc, 0x0003, + 0x0a77, 0x0000, 0x0a7a, 0x0001, 0x000b, 0x1250, 0x0002, 0x0a7d, + 0x0a84, 0x0005, 0x0000, 0x1d97, 0x1d97, 0xffff, 0xffff, 0x1d97, + 0x0005, 0x0025, 0x11bf, 0x11bf, 0xffff, 0xffff, 0x11bf, 0x0003, + 0x0a8f, 0x0a92, 0x0a96, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x002e, + 0xffff, 0x16da, 0x0002, 0x0a99, 0x0aa0, 0x0005, 0x000d, 0x0caa, + 0x0c8c, 0xffff, 0xffff, 0x0c9b, 0x0005, 0x000d, 0x0cdd, 0x0cb9, + // Entry 20100 - 2013F + 0xffff, 0xffff, 0x0ccb, 0x0003, 0x0aab, 0x0000, 0x0aae, 0x0001, + 0x0000, 0x2002, 0x0002, 0x0ab1, 0x0ab8, 0x0005, 0x0013, 0x0fcd, + 0x0fcd, 0xffff, 0xffff, 0x0fcd, 0x0005, 0x002e, 0x16de, 0x16de, + 0xffff, 0xffff, 0x16de, 0x0003, 0x0ac3, 0x0000, 0x0ac6, 0x0001, + 0x0000, 0x2002, 0x0002, 0x0ac9, 0x0ad0, 0x0005, 0x0026, 0x00bf, + 0x00bf, 0xffff, 0xffff, 0x00bf, 0x0005, 0x0000, 0x1dbb, 0x1dbb, + 0xffff, 0xffff, 0x1dbb, 0x0001, 0x0ad9, 0x0001, 0x000d, 0x0d0a, + 0x0004, 0x0ae1, 0x0ae6, 0x0aeb, 0x0afa, 0x0003, 0x000d, 0x0d19, + // Entry 20140 - 2017F + 0x3284, 0x328b, 0x0003, 0x0000, 0x1de0, 0x21f1, 0x2205, 0x0002, + 0x0000, 0x0aee, 0x0003, 0x0000, 0x0af5, 0x0af2, 0x0001, 0x002e, + 0x16ea, 0x0003, 0x002e, 0xffff, 0x1708, 0x1721, 0x0002, 0x0ce1, + 0x0afd, 0x0003, 0x0b01, 0x0c41, 0x0ba1, 0x009e, 0x002e, 0xffff, + 0xffff, 0xffff, 0xffff, 0x17d1, 0x182b, 0x18b8, 0x1900, 0x194b, + 0x1990, 0x19d8, 0x1a23, 0x1a6b, 0x1b46, 0x1b88, 0x1bd6, 0x1c3c, + 0x1c81, 0x1cc9, 0x1d29, 0x1dad, 0x1e10, 0x1e70, 0x1eca, 0x1f0c, + 0xffff, 0xffff, 0x1f81, 0xffff, 0x1fec, 0xffff, 0x2081, 0x20c6, + // Entry 20180 - 201BF + 0x2111, 0x2153, 0xffff, 0xffff, 0x21d8, 0x2226, 0x2290, 0xffff, + 0xffff, 0xffff, 0x2319, 0xffff, 0x2389, 0x23e3, 0xffff, 0x2460, + 0x24ba, 0x2508, 0xffff, 0xffff, 0xffff, 0xffff, 0x25b2, 0xffff, + 0xffff, 0x2628, 0x268e, 0xffff, 0xffff, 0x273b, 0x279b, 0x27e9, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28be, 0x2900, + 0x2945, 0x298d, 0x29d2, 0xffff, 0xffff, 0x2a80, 0xffff, 0x2ad4, + 0xffff, 0xffff, 0x2b5f, 0xffff, 0x2c16, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2cb5, 0xffff, 0x2d15, 0x2d8a, 0x2df3, 0x2e47, 0xffff, + // Entry 201C0 - 201FF + 0xffff, 0xffff, 0x2ec2, 0x2f1c, 0x2f70, 0xffff, 0xffff, 0x2fee, + 0x3088, 0x30d9, 0x3115, 0xffff, 0xffff, 0x318d, 0x31db, 0x3223, + 0xffff, 0x3284, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x33ab, + 0x33f6, 0x343b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x350e, 0xffff, 0xffff, 0x357f, 0xffff, 0x35ca, 0xffff, + 0x3634, 0x367f, 0x36d3, 0xffff, 0x372c, 0x3783, 0xffff, 0xffff, + 0xffff, 0x3817, 0x385c, 0xffff, 0xffff, 0x173a, 0x1870, 0x1aa7, + 0x1af5, 0xffff, 0xffff, 0x2bb9, 0x3330, 0x009e, 0x002e, 0x1773, + // Entry 20200 - 2023F + 0x1789, 0x17a1, 0x17ba, 0x17e9, 0x183c, 0x18ca, 0x1913, 0x195c, + 0x19a2, 0x19eb, 0x1a35, 0x1a79, 0x1b56, 0x1b9c, 0x1bf2, 0x1c4d, + 0x1c93, 0x1ce3, 0x1d4f, 0x1dc8, 0x1e2a, 0x1e88, 0x1eda, 0x1f21, + 0x1f5d, 0x1f6e, 0x1f95, 0x1fcf, 0x2009, 0x2065, 0x2092, 0x20d9, + 0x2121, 0x2169, 0x21a7, 0x21c0, 0x21ec, 0x223d, 0x22a1, 0x22d5, + 0x22e4, 0x2300, 0x2332, 0x2376, 0x23a1, 0x23fc, 0x2440, 0x2478, + 0x24ce, 0x2519, 0x254d, 0x2567, 0x258e, 0x25a1, 0x25c4, 0x25fa, + 0x2614, 0x2644, 0x26a9, 0x270c, 0x2729, 0x2755, 0x27af, 0x27f9, + // Entry 20240 - 2027F + 0x282b, 0x283c, 0x2855, 0x2869, 0x2885, 0x28a2, 0x28ce, 0x2911, + 0x2957, 0x299e, 0x29f3, 0x2a47, 0x2a64, 0x2a91, 0x2ac5, 0x2ae9, + 0x2b25, 0x2b4c, 0x2b77, 0x2bfe, 0x2c29, 0x2c61, 0x2c74, 0x2c86, + 0x2c9b, 0x2cc9, 0x2d03, 0x2d36, 0x2da7, 0x2e09, 0x2e59, 0x2e8f, + 0x2ea2, 0x2eb1, 0x2eda, 0x2f32, 0x2f88, 0x2fca, 0x2fd8, 0x3010, + 0x309d, 0x30e7, 0x3129, 0x3163, 0x3172, 0x31a1, 0x31ed, 0x3236, + 0x326e, 0x32a5, 0x32f9, 0x330b, 0x331b, 0x338a, 0x339b, 0x33be, + 0x3407, 0x344d, 0x3483, 0x3496, 0x34aa, 0x34c4, 0x34dc, 0x34ef, + // Entry 20280 - 202BF + 0x34fd, 0x3520, 0x3556, 0x356e, 0x358d, 0x35bb, 0x35e2, 0x3624, + 0x3647, 0x3695, 0x36e4, 0x3718, 0x3743, 0x3798, 0x37d4, 0x37e6, + 0x37f9, 0x3828, 0x3874, 0x26f1, 0x3066, 0x1747, 0x1882, 0x1abb, + 0x1b0a, 0x2055, 0x2b3a, 0x2bca, 0x3348, 0x009e, 0x002e, 0xffff, + 0xffff, 0xffff, 0xffff, 0x180c, 0x1858, 0x18e7, 0x1931, 0x1978, + 0x19bf, 0x1a09, 0x1a52, 0x1a92, 0x1b71, 0x1bbb, 0x1c19, 0x1c69, + 0x1cb0, 0x1d08, 0x1d80, 0x1dee, 0x1e4f, 0x1eab, 0x1ef5, 0x1f41, + 0xffff, 0xffff, 0x1fb4, 0xffff, 0x2031, 0xffff, 0x20ae, 0x20f7, + // Entry 202C0 - 202FF + 0x213c, 0x218a, 0xffff, 0xffff, 0x220b, 0x225f, 0x22bd, 0xffff, + 0xffff, 0xffff, 0x2356, 0xffff, 0x23c4, 0x2420, 0xffff, 0x249b, + 0x24ed, 0x2535, 0xffff, 0xffff, 0xffff, 0xffff, 0x25e1, 0xffff, + 0xffff, 0x266b, 0x26cf, 0xffff, 0xffff, 0x277a, 0x27ce, 0x2814, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28e9, 0x292d, + 0x2974, 0x29ba, 0x2a1f, 0xffff, 0xffff, 0x2aad, 0xffff, 0x2b09, + 0xffff, 0xffff, 0x2b9a, 0xffff, 0x2c47, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2ce8, 0xffff, 0x2d62, 0x2dcf, 0x2e2a, 0x2e76, 0xffff, + // Entry 20300 - 2033F + 0xffff, 0xffff, 0x2efd, 0x2f53, 0x2fab, 0xffff, 0xffff, 0x303d, + 0x30bd, 0x3100, 0x3148, 0xffff, 0xffff, 0x31c0, 0x320a, 0x3254, + 0xffff, 0x32d1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x33dc, + 0x3423, 0x346a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x353d, 0xffff, 0xffff, 0x35a6, 0xffff, 0x3605, 0xffff, + 0x3665, 0x36b6, 0x3700, 0xffff, 0x3765, 0x37b8, 0xffff, 0xffff, + 0xffff, 0x3844, 0x3897, 0xffff, 0xffff, 0x175f, 0x189f, 0x1ada, + 0x1b2a, 0xffff, 0xffff, 0x2be6, 0x336b, 0x0003, 0x0ce5, 0x0d54, + // Entry 20340 - 2037F + 0x0d18, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 20380 - 203BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27bf, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 203C0 - 203FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0006, 0x0000, + 0x0012, 0x0021, 0x0000, 0x0000, 0x002c, 0x0002, 0x0000, 0x0015, + 0x0002, 0x0000, 0x0018, 0x0007, 0x0000, 0x22ee, 0x255c, 0x22ea, + // Entry 20400 - 2043F + 0x2481, 0x21e9, 0x255c, 0x2481, 0x0001, 0x0023, 0x0001, 0x0025, + 0x0005, 0x002e, 0xffff, 0x015a, 0x0161, 0x0168, 0x016f, 0x0001, + 0x002e, 0x0001, 0x002f, 0x0000, 0x0003, 0x0004, 0x01a0, 0x04f1, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, + 0x0001, 0x0017, 0x0235, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + // Entry 20440 - 2047F + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x0153, 0x016d, 0x017e, 0x018f, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, 0x000b, + 0x23dd, 0x2358, 0x001a, 0x23e2, 0x2383, 0x2388, 0x2363, 0x238d, + 0x0037, 0x2368, 0x23e7, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, + 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, + 0x1f96, 0x2008, 0x000d, 0x0017, 0xffff, 0x0242, 0x024a, 0x0253, + // Entry 20480 - 204BF + 0x025a, 0x28f8, 0x0266, 0x026d, 0x0274, 0x027c, 0x0286, 0x028e, + 0x0297, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x000d, 0xffff, + 0x0059, 0x3224, 0x3179, 0x322c, 0x328f, 0x3230, 0x3234, 0x317e, + 0x323c, 0x3240, 0x3182, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, + 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, + 0x1f98, 0x1f96, 0x2008, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, + 0x3186, 0x318c, 0x3293, 0x3192, 0x3198, 0x319e, 0x3208, 0x315b, + 0x31a5, 0x316c, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + // Entry 204C0 - 204FF + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0022, 0x01d9, 0x2fdb, 0x2fe0, + 0x2fe4, 0x2fe8, 0x2fed, 0x2ff1, 0x0007, 0x0000, 0x1f96, 0x21ec, + 0x22df, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, 0x0017, 0x02a0, + 0x02a3, 0x28fd, 0x02aa, 0x2900, 0x2904, 0x2907, 0x0007, 0x002f, + 0x000a, 0x0014, 0x001f, 0x0026, 0x002d, 0x0037, 0x003d, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0022, 0x01d9, + 0x2fdb, 0x2fe0, 0x2fe4, 0x2fe8, 0x2fed, 0x2ff1, 0x0007, 0x0000, + 0x1f96, 0x21ec, 0x22df, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, + // Entry 20500 - 2053F + 0x0017, 0x02a0, 0x02a3, 0x28fd, 0x02aa, 0x2900, 0x2904, 0x2907, + 0x0007, 0x002f, 0x000a, 0x0014, 0x001f, 0x0026, 0x002d, 0x0037, + 0x003d, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0017, + 0xffff, 0x02f2, 0x02fd, 0x0308, 0x0313, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + // Entry 20540 - 2057F + 0x0017, 0xffff, 0x02f2, 0x02fd, 0x0308, 0x0313, 0x0001, 0x0134, + 0x0003, 0x0138, 0x0141, 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, + 0x0017, 0x031e, 0x0001, 0x002f, 0x0044, 0x0002, 0x0144, 0x0147, + 0x0001, 0x0013, 0x061b, 0x0001, 0x002f, 0x004f, 0x0002, 0x014d, + 0x0150, 0x0001, 0x0017, 0x031e, 0x0001, 0x002f, 0x0044, 0x0003, + 0x0162, 0x0000, 0x0157, 0x0002, 0x015a, 0x015e, 0x0002, 0x002f, + 0x0054, 0x008f, 0x0002, 0x002f, 0x0072, 0x00a9, 0x0002, 0x0165, + 0x0169, 0x0002, 0x002f, 0x00c0, 0x00d7, 0x0002, 0x002f, 0x00cb, + // Entry 20580 - 205BF + 0x00e1, 0x0004, 0x017b, 0x0175, 0x0172, 0x0178, 0x0001, 0x0016, + 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0017, 0x03cc, 0x0001, + 0x0008, 0x0620, 0x0004, 0x018c, 0x0186, 0x0183, 0x0189, 0x0001, + 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, + 0x0001, 0x002f, 0x00e9, 0x0004, 0x019d, 0x0197, 0x0194, 0x019a, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x01e1, 0x0000, 0x0000, + 0x01e6, 0x0203, 0x021b, 0x0233, 0x024b, 0x0263, 0x027b, 0x0298, + // Entry 205C0 - 205FF + 0x02b0, 0x02c8, 0x02e5, 0x02fd, 0x0000, 0x0000, 0x0000, 0x0315, + 0x0332, 0x034a, 0x0000, 0x0000, 0x0000, 0x0362, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0367, 0x036f, 0x0377, 0x037f, 0x0387, + 0x038f, 0x0397, 0x039f, 0x03a7, 0x03af, 0x03b7, 0x03bf, 0x03c7, + 0x03cf, 0x03d7, 0x03df, 0x03e7, 0x03ef, 0x03f7, 0x03ff, 0x0407, + 0x0000, 0x040f, 0x0000, 0x0414, 0x042c, 0x0444, 0x045c, 0x0474, + 0x048c, 0x04a4, 0x04bc, 0x04d4, 0x04ec, 0x0001, 0x01e3, 0x0001, + 0x002f, 0x00f7, 0x0003, 0x01ea, 0x01ed, 0x01f2, 0x0001, 0x0017, + // Entry 20600 - 2063F + 0x03d9, 0x0003, 0x002f, 0x00fc, 0x0101, 0x0108, 0x0002, 0x01f5, + 0x01fc, 0x0005, 0x0017, 0x041b, 0x03f3, 0xffff, 0x290a, 0x040e, + 0x0005, 0x002f, 0x0133, 0x010f, 0xffff, 0x0120, 0x0133, 0x0003, + 0x0207, 0x0000, 0x020a, 0x0001, 0x0029, 0x0169, 0x0002, 0x020d, + 0x0214, 0x0005, 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, + 0x0005, 0x0013, 0x078d, 0x078d, 0xffff, 0x078d, 0x078d, 0x0003, + 0x021f, 0x0000, 0x0222, 0x0001, 0x0029, 0x0169, 0x0002, 0x0225, + 0x022c, 0x0005, 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, + // Entry 20640 - 2067F + 0x0005, 0x0013, 0x078d, 0x078d, 0xffff, 0x078d, 0x078d, 0x0003, + 0x0237, 0x0000, 0x023a, 0x0001, 0x0017, 0x046c, 0x0002, 0x023d, + 0x0244, 0x0005, 0x0017, 0x04a3, 0x0474, 0xffff, 0x2918, 0x0493, + 0x0005, 0x002f, 0x016f, 0x0145, 0xffff, 0x0159, 0x016f, 0x0003, + 0x024f, 0x0000, 0x0252, 0x0001, 0x0017, 0x04f2, 0x0002, 0x0255, + 0x025c, 0x0005, 0x0017, 0x04f9, 0x04f9, 0xffff, 0x04f9, 0x04f9, + 0x0005, 0x002f, 0x0184, 0x0184, 0xffff, 0x0184, 0x0184, 0x0003, + 0x0267, 0x0000, 0x026a, 0x0001, 0x0001, 0x0117, 0x0002, 0x026d, + // Entry 20680 - 206BF + 0x0274, 0x0005, 0x0017, 0x0518, 0x0518, 0xffff, 0x0518, 0x0518, + 0x0005, 0x002f, 0x0195, 0x0195, 0xffff, 0x0195, 0x0195, 0x0003, + 0x027f, 0x0282, 0x0287, 0x0001, 0x002f, 0x01a3, 0x0003, 0x002f, + 0x01aa, 0x01b9, 0x01c7, 0x0002, 0x028a, 0x0291, 0x0005, 0x002f, + 0x0206, 0x01d9, 0xffff, 0x01e7, 0x01f7, 0x0005, 0x002f, 0x023e, + 0x0216, 0xffff, 0x0229, 0x023e, 0x0003, 0x029c, 0x0000, 0x029f, + 0x0001, 0x0013, 0x08df, 0x0002, 0x02a2, 0x02a9, 0x0005, 0x0013, + 0x08e5, 0x08e5, 0xffff, 0x08e5, 0x08e5, 0x0005, 0x0013, 0x08f2, + // Entry 206C0 - 206FF + 0x08f2, 0xffff, 0x08f2, 0x08f2, 0x0003, 0x02b4, 0x0000, 0x02b7, + 0x0001, 0x0013, 0x08df, 0x0002, 0x02ba, 0x02c1, 0x0005, 0x0013, + 0x08e5, 0x08e5, 0xffff, 0x08e5, 0x08e5, 0x0005, 0x0013, 0x08f2, + 0x08f2, 0xffff, 0x08f2, 0x08f2, 0x0003, 0x02cc, 0x02cf, 0x02d4, + 0x0001, 0x002f, 0x0252, 0x0003, 0x002f, 0x025b, 0x026c, 0x027c, + 0x0002, 0x02d7, 0x02de, 0x0005, 0x002f, 0x02c3, 0x0290, 0xffff, + 0x02a0, 0x02b2, 0x0005, 0x002f, 0x0301, 0x02d5, 0xffff, 0x02ea, + 0x0301, 0x0003, 0x02e9, 0x0000, 0x02ec, 0x0001, 0x002f, 0x0317, + // Entry 20700 - 2073F + 0x0002, 0x02ef, 0x02f6, 0x0005, 0x002f, 0x031e, 0x031e, 0xffff, + 0x031e, 0x031e, 0x0005, 0x002f, 0x032c, 0x032c, 0xffff, 0x032c, + 0x032c, 0x0003, 0x0301, 0x0000, 0x0304, 0x0001, 0x002f, 0x0317, + 0x0002, 0x0307, 0x030e, 0x0005, 0x002f, 0x031e, 0x031e, 0xffff, + 0x031e, 0x031e, 0x0005, 0x002f, 0x032c, 0x032c, 0xffff, 0x032c, + 0x032c, 0x0003, 0x0319, 0x031c, 0x0321, 0x0001, 0x002f, 0x033d, + 0x0003, 0x002f, 0x0344, 0x034b, 0x0353, 0x0002, 0x0324, 0x032b, + 0x0005, 0x002f, 0x0380, 0x035a, 0xffff, 0x0368, 0x0375, 0x0005, + // Entry 20740 - 2077F + 0x002f, 0x03af, 0x038d, 0xffff, 0x039d, 0x03af, 0x0003, 0x0336, + 0x0000, 0x0339, 0x0001, 0x002f, 0x033d, 0x0002, 0x033c, 0x0343, + 0x0005, 0x002f, 0x03c0, 0x035a, 0xffff, 0x03c0, 0x0375, 0x0005, + 0x002f, 0x03cc, 0x03cc, 0xffff, 0x03cc, 0x03cc, 0x0003, 0x034e, + 0x0000, 0x0351, 0x0001, 0x0000, 0x2008, 0x0002, 0x0354, 0x035b, + 0x0005, 0x002e, 0x169e, 0x169e, 0xffff, 0x169e, 0x169e, 0x0005, + 0x002f, 0x03db, 0x03db, 0xffff, 0x03db, 0x03db, 0x0001, 0x0364, + 0x0001, 0x002f, 0x03e7, 0x0002, 0x0000, 0x036a, 0x0003, 0x002f, + // Entry 20780 - 207BF + 0x03f8, 0x040a, 0x0419, 0x0002, 0x0000, 0x0372, 0x0003, 0x002f, + 0x042e, 0x043b, 0x0445, 0x0002, 0x0000, 0x037a, 0x0003, 0x002f, + 0x0455, 0x0461, 0x046a, 0x0002, 0x0000, 0x0382, 0x0003, 0x002f, + 0x0479, 0x048c, 0x049c, 0x0002, 0x0000, 0x038a, 0x0003, 0x002f, + 0x04b2, 0x04c0, 0x04cb, 0x0002, 0x0000, 0x0392, 0x0003, 0x002f, + 0x04dc, 0x04e9, 0x04f3, 0x0002, 0x0000, 0x039a, 0x0003, 0x002f, + 0x0503, 0x0512, 0x051e, 0x0002, 0x0000, 0x03a2, 0x0003, 0x002f, + 0x0530, 0x053d, 0x0547, 0x0002, 0x0000, 0x03aa, 0x0003, 0x002f, + // Entry 207C0 - 207FF + 0x0557, 0x0563, 0x056c, 0x0002, 0x0000, 0x03b2, 0x0003, 0x002f, + 0x057b, 0x058a, 0x0596, 0x0002, 0x0000, 0x03ba, 0x0003, 0x002f, + 0x05a8, 0x05b5, 0x05bf, 0x0002, 0x0000, 0x03c2, 0x0003, 0x002f, + 0x05cf, 0x05db, 0x05e4, 0x0002, 0x0000, 0x03ca, 0x0003, 0x002f, + 0x05f3, 0x0605, 0x0616, 0x0002, 0x0000, 0x03d2, 0x0003, 0x002f, + 0x062b, 0x0639, 0x0646, 0x0002, 0x0000, 0x03da, 0x0003, 0x002f, + 0x0657, 0x0664, 0x0670, 0x0002, 0x0000, 0x03e2, 0x0003, 0x002f, + 0x0680, 0x068e, 0x069b, 0x0002, 0x0000, 0x03ea, 0x0003, 0x002f, + // Entry 20800 - 2083F + 0x06ac, 0x06b9, 0x06c5, 0x0002, 0x0000, 0x03f2, 0x0003, 0x002f, + 0x06d5, 0x06e1, 0x06ec, 0x0002, 0x0000, 0x03fa, 0x0003, 0x002f, + 0x06fb, 0x070a, 0x0716, 0x0002, 0x0000, 0x0402, 0x0003, 0x002f, + 0x0728, 0x0735, 0x073f, 0x0002, 0x0000, 0x040a, 0x0003, 0x002f, + 0x074f, 0x075b, 0x0764, 0x0001, 0x0411, 0x0001, 0x0017, 0x0abe, + 0x0003, 0x0418, 0x0000, 0x041b, 0x0001, 0x002f, 0x0773, 0x0002, + 0x041e, 0x0425, 0x0005, 0x002f, 0x07ad, 0x077c, 0xffff, 0x078c, + 0x079d, 0x0005, 0x002f, 0x07e5, 0x07bc, 0xffff, 0x07cf, 0x07e5, + // Entry 20840 - 2087F + 0x0003, 0x0430, 0x0000, 0x0433, 0x0001, 0x002f, 0x07fa, 0x0002, + 0x0436, 0x043d, 0x0005, 0x002f, 0x0801, 0x0801, 0xffff, 0x0801, + 0x0801, 0x0005, 0x002f, 0x080f, 0x080f, 0xffff, 0x080f, 0x080f, + 0x0003, 0x0448, 0x0000, 0x044b, 0x0001, 0x0000, 0x2143, 0x0002, + 0x044e, 0x0455, 0x0005, 0x0013, 0x0f1e, 0x0f1e, 0xffff, 0x0f1e, + 0x0f1e, 0x0005, 0x0013, 0x0f27, 0x0f27, 0xffff, 0x0f27, 0x0f27, + 0x0003, 0x0460, 0x0000, 0x0463, 0x0001, 0x000d, 0x0bf5, 0x0002, + 0x0466, 0x046d, 0x0005, 0x000d, 0x31bd, 0x0c07, 0xffff, 0x3298, + // Entry 20880 - 208BF + 0x3108, 0x0005, 0x002f, 0x0845, 0x0820, 0xffff, 0x0831, 0x0845, + 0x0003, 0x0478, 0x0000, 0x047b, 0x0001, 0x0001, 0x075a, 0x0002, + 0x047e, 0x0485, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0x0c64, + 0x0c64, 0x0005, 0x002f, 0x0858, 0x0858, 0xffff, 0x0858, 0x0858, + 0x0003, 0x0490, 0x0000, 0x0493, 0x0001, 0x0000, 0x1f9a, 0x0002, + 0x0496, 0x049d, 0x0005, 0x0017, 0x0bd3, 0x0bd3, 0xffff, 0x0bd3, + 0x0bd3, 0x0005, 0x002f, 0x0867, 0x0867, 0xffff, 0x0867, 0x0867, + 0x0003, 0x04a8, 0x0000, 0x04ab, 0x0001, 0x000d, 0x0c7f, 0x0002, + // Entry 208C0 - 208FF + 0x04ae, 0x04b5, 0x0005, 0x000d, 0x31dc, 0x0c8c, 0xffff, 0x32a7, + 0x3123, 0x0005, 0x002f, 0x089a, 0x0873, 0xffff, 0x0885, 0x089a, + 0x0003, 0x04c0, 0x0000, 0x04c3, 0x0001, 0x0001, 0x07d3, 0x0002, + 0x04c6, 0x04cd, 0x0005, 0x000d, 0x0cef, 0x0cef, 0xffff, 0x0cef, + 0x0cef, 0x0005, 0x002f, 0x08ae, 0x08ae, 0xffff, 0x08ae, 0x08ae, + 0x0003, 0x04d8, 0x0000, 0x04db, 0x0001, 0x0000, 0x2002, 0x0002, + 0x04de, 0x04e5, 0x0005, 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0x0fcd, + 0x0fcd, 0x0005, 0x0013, 0x0fd6, 0x0fd6, 0xffff, 0x0fd6, 0x0fd6, + // Entry 20900 - 2093F + 0x0001, 0x04ee, 0x0001, 0x002f, 0x08bd, 0x0004, 0x04f6, 0x04fb, + 0x0500, 0x050b, 0x0003, 0x0000, 0x1dc7, 0x2593, 0x259a, 0x0003, + 0x002f, 0x08cb, 0x08dd, 0x08ed, 0x0002, 0x0000, 0x0503, 0x0002, + 0x0000, 0x0506, 0x0003, 0x002f, 0xffff, 0x08fd, 0x0912, 0x0002, + 0x06d4, 0x050e, 0x0003, 0x05a8, 0x063e, 0x0512, 0x0094, 0x002f, + 0x0924, 0x0933, 0x0949, 0x095d, 0x0983, 0x09ca, 0x0a0a, 0x0a5b, + 0x0ac9, 0x0b34, 0x0b9f, 0xffff, 0x0bfc, 0x0c35, 0x0c72, 0x0cbd, + 0x0d0b, 0x0d49, 0x0d93, 0x0df5, 0x0e5d, 0x0eb3, 0x0f06, 0x0f4f, + // Entry 20940 - 2097F + 0x0f8e, 0x0fc6, 0x0fd5, 0x0ff4, 0x1026, 0x1045, 0x1077, 0x1098, + 0x10d7, 0x1110, 0x114f, 0x1187, 0x119b, 0x11c1, 0x1208, 0x1251, + 0x127d, 0x128a, 0x12a5, 0x12d0, 0x130c, 0x1332, 0x1385, 0x13c1, + 0x13e9, 0x1434, 0x1477, 0x14a7, 0x14be, 0x14f3, 0x1504, 0x1523, + 0x1553, 0x156b, 0x1596, 0x15f2, 0x1634, 0x164a, 0x1670, 0x16c3, + 0x1705, 0x1733, 0x1740, 0x1755, 0x1766, 0x177d, 0x178e, 0x17b0, + 0x17ea, 0x1827, 0x1865, 0xffff, 0x1893, 0x18aa, 0x18ce, 0x18fc, + 0x191d, 0x1953, 0x1961, 0x198b, 0x19c5, 0x19e9, 0x1a1b, 0x1a2b, + // Entry 20980 - 209BF + 0x1a3b, 0x1a4c, 0x1a76, 0x1aaa, 0x1ad5, 0x1b36, 0x1b89, 0x1bd0, + 0x1c00, 0x1c10, 0x1c1e, 0x1c40, 0x1c8e, 0x1cdd, 0x1d19, 0x1d26, + 0x1d57, 0x1db9, 0x1dfa, 0x1e33, 0x1e67, 0x1e75, 0x1e9e, 0x1edf, + 0x1f1b, 0x1f4d, 0x1f86, 0x1fda, 0x1ff3, 0xffff, 0x2002, 0x2012, + 0x2033, 0xffff, 0x2075, 0x20a3, 0x20b4, 0x20c5, 0x20dd, 0x20f2, + 0x2102, 0x2110, 0x212e, 0x215e, 0x216e, 0x218c, 0x21ba, 0x21d8, + 0x220a, 0x2229, 0x2269, 0x22a7, 0x22d9, 0x22fe, 0x234a, 0x2380, + 0x238f, 0x239e, 0x23c7, 0x240b, 0x0094, 0x002f, 0xffff, 0xffff, + // Entry 209C0 - 209FF + 0xffff, 0xffff, 0x0970, 0x09bb, 0x09fa, 0x0a3c, 0x0aab, 0x0b17, + 0x0b80, 0xffff, 0x0bef, 0x0c28, 0x0c61, 0x0ca6, 0x0cfd, 0x0d39, + 0x0d7b, 0x0dd5, 0x0e46, 0x0e9d, 0x0ef1, 0x0f42, 0x0f7b, 0xffff, + 0xffff, 0x0fe4, 0xffff, 0x1035, 0xffff, 0x1088, 0x10ca, 0x1103, + 0x113c, 0xffff, 0xffff, 0x11b1, 0x11f3, 0x1244, 0xffff, 0xffff, + 0xffff, 0x12bb, 0xffff, 0x131c, 0x1370, 0xffff, 0x13d5, 0x1423, + 0x1468, 0xffff, 0xffff, 0xffff, 0xffff, 0x1514, 0xffff, 0xffff, + 0x157d, 0x15da, 0xffff, 0xffff, 0x1658, 0x16b2, 0x16f7, 0xffff, + // Entry 20A00 - 20A3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17a3, 0x17dc, 0x1818, + 0x1857, 0xffff, 0xffff, 0xffff, 0x18c0, 0xffff, 0x190b, 0xffff, + 0xffff, 0x1977, 0xffff, 0x19d9, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1a65, 0xffff, 0x1ab9, 0x1b1f, 0x1b76, 0x1bc1, 0xffff, 0xffff, + 0xffff, 0x1c2c, 0x1c7a, 0x1cc8, 0xffff, 0xffff, 0x1d38, 0x1da7, + 0x1def, 0x1e22, 0xffff, 0xffff, 0x1e8d, 0x1ed2, 0x1f0b, 0xffff, + 0x1f65, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2022, 0xffff, + 0x2067, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 20A40 - 20A7F + 0x211f, 0xffff, 0xffff, 0x217e, 0xffff, 0x21c8, 0xffff, 0x2219, + 0x225b, 0x2297, 0xffff, 0x22ea, 0x2338, 0xffff, 0xffff, 0xffff, + 0x23b9, 0x23f5, 0x0094, 0x002f, 0xffff, 0xffff, 0xffff, 0xffff, + 0x09a1, 0x09e4, 0x0a25, 0x0a85, 0x0af2, 0x0b5c, 0x0bc9, 0xffff, + 0x0c14, 0x0c4d, 0x0c8e, 0x0cdf, 0x0d24, 0x0d64, 0x0db6, 0x0e20, + 0x0e7f, 0x0ed4, 0x0f26, 0x0f67, 0x0fac, 0xffff, 0xffff, 0x100f, + 0xffff, 0x1060, 0xffff, 0x10b3, 0x10ef, 0x1128, 0x116d, 0xffff, + 0xffff, 0x11dc, 0x1228, 0x1269, 0xffff, 0xffff, 0xffff, 0x12f0, + // Entry 20A80 - 20ABF + 0xffff, 0x1353, 0x13a5, 0xffff, 0x1408, 0x1450, 0x1491, 0xffff, + 0xffff, 0xffff, 0xffff, 0x153d, 0xffff, 0xffff, 0x15ba, 0x1615, + 0xffff, 0xffff, 0x1693, 0x16df, 0x171e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x17c8, 0x1803, 0x1841, 0x187e, 0xffff, + 0xffff, 0xffff, 0x18e7, 0xffff, 0x193a, 0xffff, 0xffff, 0x19aa, + 0xffff, 0x1a04, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a92, 0xffff, + 0x1afc, 0x1b58, 0x1ba7, 0x1bea, 0xffff, 0xffff, 0xffff, 0x1c5f, + 0x1cad, 0x1cfd, 0xffff, 0xffff, 0x1d81, 0x1dd6, 0x1e10, 0x1e4f, + // Entry 20AC0 - 20AFF + 0xffff, 0xffff, 0x1eba, 0x1ef7, 0x1f36, 0xffff, 0x1fb2, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x204f, 0xffff, 0x208e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2148, 0xffff, + 0xffff, 0x21a5, 0xffff, 0x21f3, 0xffff, 0x2244, 0x2282, 0x22c2, + 0xffff, 0x231d, 0x2367, 0xffff, 0xffff, 0xffff, 0x23e0, 0x242c, + 0x0003, 0x06d8, 0x073e, 0x070b, 0x0031, 0x0016, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 20B00 - 20B3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, + 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 20B40 - 20B7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, + 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 20B80 - 20BBF + 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0003, 0x0004, 0x04df, + 0x08f1, 0x0012, 0x0017, 0x0024, 0x006c, 0x0000, 0x00b8, 0x0000, + 0x0104, 0x012f, 0x037e, 0x03d6, 0x041e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0472, 0x048a, 0x04d2, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0016, + 0x01fe, 0x0001, 0x0026, 0x0002, 0x0029, 0x004a, 0x0002, 0x002c, + 0x003b, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + // Entry 20BC0 - 20BFF + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0003, + 0x004e, 0x0000, 0x005d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x0001, 0x006e, 0x0002, 0x0071, 0x0094, 0x0002, 0x0074, + 0x0084, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, + // Entry 20C00 - 20C3F + 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, + 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x0422, 0x0003, 0x0098, 0x0000, 0x00a8, 0x000e, 0x0000, 0xffff, + 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, + 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, + 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, + 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x0001, 0x00ba, 0x0002, + // Entry 20C40 - 20C7F + 0x00bd, 0x00e0, 0x0002, 0x00c0, 0x00d0, 0x000e, 0x0000, 0xffff, + 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, + 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x0003, 0x00e4, 0x0000, + 0x00f4, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, + 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, + 0x0481, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, + // Entry 20C80 - 20CBF + 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, + 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010d, + 0x0000, 0x011e, 0x0004, 0x011b, 0x0115, 0x0112, 0x0118, 0x0001, + 0x0030, 0x0000, 0x0001, 0x0030, 0x0013, 0x0001, 0x0030, 0x0020, + 0x0001, 0x0030, 0x002c, 0x0004, 0x012c, 0x0126, 0x0123, 0x0129, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0138, 0x019d, 0x01f4, + 0x0229, 0x0330, 0x034b, 0x035c, 0x036d, 0x0002, 0x013b, 0x016c, + // Entry 20CC0 - 20CFF + 0x0003, 0x013f, 0x014e, 0x015d, 0x000d, 0x0015, 0xffff, 0x000b, + 0x23ec, 0x23f2, 0x23f9, 0x23ff, 0x2405, 0x240b, 0x002d, 0x2411, + 0x0037, 0x2418, 0x23e7, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, + 0x247f, 0x25b6, 0x247f, 0x2483, 0x2483, 0x2382, 0x25b9, 0x22ec, + 0x22ee, 0x22f0, 0x000d, 0x0030, 0xffff, 0x003b, 0x0043, 0x004c, + 0x0055, 0x005e, 0x0065, 0x006d, 0x0075, 0x007f, 0x008a, 0x0093, + 0x009c, 0x0003, 0x0170, 0x017f, 0x018e, 0x000d, 0x0015, 0xffff, + 0x000b, 0x23ec, 0x23f2, 0x23f9, 0x23ff, 0x2405, 0x240b, 0x002d, + // Entry 20D00 - 20D3F + 0x2411, 0x0037, 0x2418, 0x23e7, 0x000d, 0x0000, 0xffff, 0x2483, + 0x22e6, 0x247f, 0x25b6, 0x247f, 0x2483, 0x2483, 0x2382, 0x25b9, + 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0030, 0xffff, 0x003b, 0x0043, + 0x004c, 0x0055, 0x005e, 0x0065, 0x006d, 0x0075, 0x007f, 0x008a, + 0x0093, 0x009c, 0x0002, 0x01a0, 0x01ca, 0x0005, 0x01a6, 0x01af, + 0x01c1, 0x0000, 0x01b8, 0x0007, 0x0000, 0x2485, 0x19c7, 0x25bc, + 0x25be, 0x25c2, 0x255c, 0x25c5, 0x0007, 0x0000, 0x2485, 0x19c7, + 0x25bc, 0x25b9, 0x25c2, 0x255c, 0x25b9, 0x0007, 0x0000, 0x2485, + // Entry 20D40 - 20D7F + 0x19c7, 0x25bc, 0x25be, 0x25c2, 0x255c, 0x25c5, 0x0007, 0x0030, + 0x00a5, 0x00af, 0x00b7, 0x00bc, 0x00c3, 0x00d0, 0x00d8, 0x0005, + 0x01d0, 0x01d9, 0x01eb, 0x0000, 0x01e2, 0x0007, 0x0000, 0x2485, + 0x19c7, 0x25bc, 0x25be, 0x25c2, 0x255c, 0x25c5, 0x0007, 0x0000, + 0x2485, 0x19c7, 0x25bc, 0x25b9, 0x25c2, 0x255c, 0x25b9, 0x0007, + 0x0000, 0x2485, 0x19c7, 0x25bc, 0x25be, 0x25c2, 0x255c, 0x25c5, + 0x0007, 0x0030, 0x00a5, 0x00af, 0x00b7, 0x00bc, 0x00c3, 0x00d0, + 0x00d8, 0x0002, 0x01f7, 0x0210, 0x0003, 0x01fb, 0x0202, 0x0209, + // Entry 20D80 - 20DBF + 0x0005, 0x0030, 0xffff, 0x00e0, 0x00e3, 0x00e6, 0x00e9, 0x0005, + 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0030, + 0xffff, 0x00ec, 0x00f9, 0x0107, 0x0116, 0x0003, 0x0214, 0x021b, + 0x0222, 0x0005, 0x0030, 0xffff, 0x00e0, 0x00e3, 0x00e6, 0x00e9, + 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, + 0x0030, 0xffff, 0x0124, 0x0131, 0x013e, 0x014b, 0x0002, 0x022c, + 0x02ae, 0x0003, 0x0230, 0x025a, 0x0284, 0x000b, 0x023f, 0x0245, + 0x023c, 0x0248, 0x024e, 0x0251, 0x0254, 0x0242, 0x024b, 0x0000, + // Entry 20DC0 - 20DFF + 0x0257, 0x0001, 0x0030, 0x0158, 0x0001, 0x0030, 0x0160, 0x0001, + 0x0030, 0x0164, 0x0001, 0x0030, 0x0169, 0x0001, 0x0030, 0x016d, + 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x0174, 0x0001, 0x0030, + 0x017e, 0x0001, 0x0030, 0x0183, 0x0001, 0x0030, 0x0183, 0x000b, + 0x0269, 0x026f, 0x0266, 0x0272, 0x0278, 0x027b, 0x027e, 0x026c, + 0x0275, 0x0000, 0x0281, 0x0001, 0x0030, 0x0158, 0x0001, 0x0030, + 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, 0x0169, 0x0001, + 0x0030, 0x016d, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x0174, + // Entry 20E00 - 20E3F + 0x0001, 0x0030, 0x0174, 0x0001, 0x0030, 0x0183, 0x0001, 0x0030, + 0x0183, 0x000b, 0x0293, 0x0299, 0x0290, 0x029c, 0x02a2, 0x02a5, + 0x02a8, 0x0296, 0x029f, 0x0000, 0x02ab, 0x0001, 0x0030, 0x0158, + 0x0001, 0x0030, 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, + 0x0169, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x016d, 0x0001, + 0x0030, 0x0174, 0x0001, 0x0030, 0x017e, 0x0001, 0x0030, 0x0183, + 0x0001, 0x0030, 0x0183, 0x0003, 0x02b2, 0x02dc, 0x0306, 0x000b, + 0x02c1, 0x02c7, 0x02be, 0x02ca, 0x02d0, 0x02d3, 0x02d6, 0x02c4, + // Entry 20E40 - 20E7F + 0x02cd, 0x0000, 0x02d9, 0x0001, 0x0030, 0x0158, 0x0001, 0x0030, + 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, 0x0169, 0x0001, + 0x0030, 0x016d, 0x0001, 0x0030, 0x018c, 0x0001, 0x0030, 0x0174, + 0x0001, 0x0030, 0x017e, 0x0001, 0x0030, 0x0197, 0x0001, 0x0030, + 0x019e, 0x000b, 0x02eb, 0x02f1, 0x02e8, 0x02f4, 0x02fa, 0x02fd, + 0x0300, 0x02ee, 0x02f7, 0x0000, 0x0303, 0x0001, 0x0030, 0x0158, + 0x0001, 0x0030, 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, + 0x0169, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x018c, 0x0001, + // Entry 20E80 - 20EBF + 0x0030, 0x0174, 0x0001, 0x0030, 0x017e, 0x0001, 0x0030, 0x0197, + 0x0001, 0x0030, 0x019e, 0x000b, 0x0315, 0x031b, 0x0312, 0x031e, + 0x0324, 0x0327, 0x032a, 0x0318, 0x0321, 0x0000, 0x032d, 0x0001, + 0x0030, 0x0158, 0x0001, 0x0030, 0x0160, 0x0001, 0x0030, 0x0164, + 0x0001, 0x0030, 0x0169, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, + 0x018c, 0x0001, 0x0030, 0x0174, 0x0001, 0x0030, 0x017e, 0x0001, + 0x0030, 0x0197, 0x0001, 0x0030, 0x019e, 0x0003, 0x033f, 0x0345, + 0x0334, 0x0002, 0x0337, 0x033b, 0x0002, 0x0030, 0x01a5, 0x01c5, + // Entry 20EC0 - 20EFF + 0x0002, 0x0030, 0x01bf, 0x01e0, 0x0001, 0x0341, 0x0002, 0x0030, + 0x01bf, 0x01e0, 0x0001, 0x0347, 0x0002, 0x0030, 0x01e7, 0x01eb, + 0x0004, 0x0359, 0x0353, 0x0350, 0x0356, 0x0001, 0x0030, 0x01f0, + 0x0001, 0x0030, 0x0201, 0x0001, 0x0030, 0x020c, 0x0001, 0x0030, + 0x0216, 0x0004, 0x036a, 0x0364, 0x0361, 0x0367, 0x0001, 0x0005, + 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, + 0x0005, 0x00a1, 0x0004, 0x037b, 0x0375, 0x0372, 0x0378, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 20F00 - 20F3F + 0x0001, 0x0000, 0x03c6, 0x0005, 0x0384, 0x0000, 0x0000, 0x0000, + 0x03cf, 0x0002, 0x0387, 0x03ab, 0x0003, 0x038b, 0x0000, 0x039b, + 0x000e, 0x0030, 0x0257, 0x0221, 0x0227, 0x022f, 0x0238, 0x0241, + 0x0247, 0x0250, 0x0261, 0x0269, 0x026f, 0x0277, 0x027d, 0x0281, + 0x000e, 0x0030, 0x0257, 0x0221, 0x0227, 0x022f, 0x0238, 0x0241, + 0x0247, 0x0250, 0x0261, 0x0269, 0x026f, 0x0277, 0x027d, 0x0281, + 0x0003, 0x03af, 0x0000, 0x03bf, 0x000e, 0x0030, 0x0257, 0x0221, + 0x0227, 0x022f, 0x0238, 0x0241, 0x0247, 0x0250, 0x0261, 0x0269, + // Entry 20F40 - 20F7F + 0x026f, 0x0277, 0x027d, 0x0281, 0x000e, 0x0030, 0x0257, 0x0221, + 0x0227, 0x022f, 0x0238, 0x0241, 0x0247, 0x0250, 0x0261, 0x0269, + 0x026f, 0x0277, 0x027d, 0x0281, 0x0001, 0x03d1, 0x0001, 0x03d3, + 0x0001, 0x0030, 0x0286, 0x0001, 0x03d8, 0x0002, 0x03db, 0x03fc, + 0x0002, 0x03de, 0x03ed, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, + 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, + 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + // Entry 20F80 - 20FBF + 0x2398, 0x0003, 0x0400, 0x0000, 0x040f, 0x000d, 0x0000, 0xffff, + 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, + 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, + 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, + 0x05ec, 0x05f2, 0x05f8, 0x0005, 0x0424, 0x0000, 0x0000, 0x0000, + 0x046b, 0x0002, 0x0427, 0x0449, 0x0003, 0x042b, 0x0000, 0x043a, + 0x000d, 0x0030, 0xffff, 0x028a, 0x028f, 0x0294, 0x029c, 0x02a4, + 0x02ac, 0x02b5, 0x02ba, 0x02bf, 0x02c4, 0x02c9, 0x02d2, 0x000d, + // Entry 20FC0 - 20FFF + 0x0030, 0xffff, 0x02db, 0x02e4, 0x02ea, 0x02f9, 0x0309, 0x031b, + 0x032e, 0x0335, 0x033c, 0x0345, 0x034d, 0x0358, 0x0003, 0x0000, + 0x044d, 0x045c, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0030, 0xffff, 0x02db, 0x02e4, 0x0364, 0x036c, + 0x0375, 0x0380, 0x032e, 0x0335, 0x033c, 0x0345, 0x034d, 0x0358, + 0x0001, 0x046d, 0x0001, 0x046f, 0x0001, 0x0030, 0x038c, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0479, 0x0004, 0x0487, + // Entry 21000 - 2103F + 0x0481, 0x047e, 0x0484, 0x0001, 0x0030, 0x0000, 0x0001, 0x0030, + 0x0013, 0x0001, 0x0030, 0x038f, 0x0001, 0x0030, 0x039a, 0x0001, + 0x048c, 0x0002, 0x048f, 0x04b0, 0x0002, 0x0492, 0x04a1, 0x000d, + 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, + 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0003, 0x04b4, 0x0000, + 0x04c3, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, + // Entry 21040 - 2107F + 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, + 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, + 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x04d8, 0x0001, 0x04da, 0x0001, + 0x04dc, 0x0001, 0x0030, 0x03a9, 0x0040, 0x0520, 0x0000, 0x0000, + 0x0525, 0x053c, 0x0553, 0x056a, 0x0581, 0x0598, 0x05af, 0x05c6, + 0x05dd, 0x05f4, 0x060f, 0x062a, 0x0000, 0x0000, 0x0000, 0x0645, + 0x065e, 0x0677, 0x0000, 0x0000, 0x0000, 0x0690, 0x0000, 0x0000, + // Entry 21080 - 210BF + 0x0000, 0x0000, 0x0000, 0x0695, 0x06a9, 0x06bd, 0x06d1, 0x06e5, + 0x06f9, 0x070d, 0x0721, 0x0735, 0x0749, 0x075d, 0x0771, 0x0785, + 0x0799, 0x07ad, 0x07c1, 0x07d5, 0x07e9, 0x07fd, 0x0811, 0x0825, + 0x0000, 0x0839, 0x0000, 0x083e, 0x0854, 0x0866, 0x0878, 0x088e, + 0x08a0, 0x08b2, 0x08c8, 0x08da, 0x08ec, 0x0001, 0x0522, 0x0001, + 0x0030, 0x03b7, 0x0003, 0x0529, 0x052c, 0x0531, 0x0001, 0x0030, + 0x03bc, 0x0003, 0x0030, 0x03c0, 0x03cc, 0x03d6, 0x0002, 0x0534, + 0x0538, 0x0002, 0x0030, 0x03e6, 0x03e6, 0x0002, 0x0030, 0x03f5, + // Entry 210C0 - 210FF + 0x03f5, 0x0003, 0x0540, 0x0543, 0x0548, 0x0001, 0x0030, 0x03bc, + 0x0003, 0x0030, 0x03c0, 0x03cc, 0x03d6, 0x0002, 0x054b, 0x054f, + 0x0002, 0x0030, 0x03e6, 0x03e6, 0x0002, 0x0030, 0x03f5, 0x03f5, + 0x0003, 0x0557, 0x055a, 0x055f, 0x0001, 0x0030, 0x03bc, 0x0003, + 0x0030, 0x03c0, 0x03cc, 0x03d6, 0x0002, 0x0562, 0x0566, 0x0002, + 0x0030, 0x03e6, 0x03e6, 0x0002, 0x0030, 0x03f5, 0x03f5, 0x0003, + 0x056e, 0x0571, 0x0576, 0x0001, 0x0030, 0x0409, 0x0003, 0x0030, + 0x0413, 0x0425, 0x0434, 0x0002, 0x0579, 0x057d, 0x0002, 0x0030, + // Entry 21100 - 2113F + 0x044a, 0x044a, 0x0002, 0x0030, 0x045f, 0x045f, 0x0003, 0x0585, + 0x0588, 0x058d, 0x0001, 0x0030, 0x0409, 0x0003, 0x0030, 0x0413, + 0x0425, 0x0434, 0x0002, 0x0590, 0x0594, 0x0002, 0x0030, 0x044a, + 0x044a, 0x0002, 0x0030, 0x045f, 0x045f, 0x0003, 0x059c, 0x059f, + 0x05a4, 0x0001, 0x0030, 0x0409, 0x0003, 0x0030, 0x0413, 0x0425, + 0x0434, 0x0002, 0x05a7, 0x05ab, 0x0002, 0x0030, 0x044a, 0x044a, + 0x0002, 0x0030, 0x045f, 0x045f, 0x0003, 0x05b3, 0x05b6, 0x05bb, + 0x0001, 0x0030, 0x0479, 0x0003, 0x0030, 0x0480, 0x048f, 0x049b, + // Entry 21140 - 2117F + 0x0002, 0x05be, 0x05c2, 0x0002, 0x0030, 0x04ae, 0x04ae, 0x0002, + 0x0030, 0x04c0, 0x04c0, 0x0003, 0x05ca, 0x05cd, 0x05d2, 0x0001, + 0x0030, 0x0479, 0x0003, 0x0030, 0x0480, 0x048f, 0x049b, 0x0002, + 0x05d5, 0x05d9, 0x0002, 0x0030, 0x04ae, 0x04ae, 0x0002, 0x0030, + 0x04c0, 0x04c0, 0x0003, 0x05e1, 0x05e4, 0x05e9, 0x0001, 0x0030, + 0x0479, 0x0003, 0x0030, 0x0480, 0x048f, 0x049b, 0x0002, 0x05ec, + 0x05f0, 0x0002, 0x0030, 0x04ae, 0x04ae, 0x0002, 0x0030, 0x04c0, + 0x04c0, 0x0004, 0x05f9, 0x05fc, 0x0601, 0x060c, 0x0001, 0x0030, + // Entry 21180 - 211BF + 0x04d7, 0x0003, 0x0030, 0x04dc, 0x04e9, 0x04f3, 0x0002, 0x0604, + 0x0608, 0x0002, 0x0030, 0x0504, 0x0504, 0x0002, 0x0030, 0x0514, + 0x0514, 0x0001, 0x0030, 0x0529, 0x0004, 0x0614, 0x0617, 0x061c, + 0x0627, 0x0001, 0x0030, 0x04d7, 0x0003, 0x0030, 0x04dc, 0x04e9, + 0x04f3, 0x0002, 0x061f, 0x0623, 0x0002, 0x0030, 0x0504, 0x0504, + 0x0002, 0x0030, 0x0514, 0x0514, 0x0001, 0x0030, 0x0529, 0x0004, + 0x062f, 0x0632, 0x0637, 0x0642, 0x0001, 0x0030, 0x04d7, 0x0003, + 0x0030, 0x04dc, 0x04e9, 0x04f3, 0x0002, 0x063a, 0x063e, 0x0002, + // Entry 211C0 - 211FF + 0x0030, 0x0504, 0x0504, 0x0002, 0x0030, 0x0514, 0x0514, 0x0001, + 0x0030, 0x0529, 0x0003, 0x0649, 0x064c, 0x0653, 0x0001, 0x0030, + 0x0532, 0x0005, 0x0030, 0x0543, 0x054a, 0x054d, 0x0536, 0x0554, + 0x0002, 0x0656, 0x065a, 0x0002, 0x0030, 0x0560, 0x0560, 0x0002, + 0x0030, 0x056f, 0x056f, 0x0003, 0x0662, 0x0665, 0x066c, 0x0001, + 0x0030, 0x0532, 0x0005, 0x0030, 0x0543, 0x054a, 0x054d, 0x0536, + 0x0554, 0x0002, 0x066f, 0x0673, 0x0002, 0x0030, 0x0560, 0x0560, + 0x0002, 0x0030, 0x0583, 0x0583, 0x0003, 0x067b, 0x067e, 0x0685, + // Entry 21200 - 2123F + 0x0001, 0x0030, 0x0532, 0x0005, 0x0030, 0x0543, 0x054a, 0x054d, + 0x0536, 0x0554, 0x0002, 0x0688, 0x068c, 0x0002, 0x0030, 0x0560, + 0x0560, 0x0002, 0x0030, 0x0583, 0x0583, 0x0001, 0x0692, 0x0001, + 0x0030, 0x058d, 0x0003, 0x0000, 0x0699, 0x069e, 0x0003, 0x0030, + 0x0598, 0x05aa, 0x05b9, 0x0002, 0x06a1, 0x06a5, 0x0002, 0x0030, + 0x05cf, 0x05cf, 0x0002, 0x0030, 0x05e4, 0x05e4, 0x0003, 0x0000, + 0x06ad, 0x06b2, 0x0003, 0x0030, 0x0598, 0x05aa, 0x05b9, 0x0002, + 0x06b5, 0x06b9, 0x0002, 0x0030, 0x05cf, 0x05cf, 0x0002, 0x0030, + // Entry 21240 - 2127F + 0x05e4, 0x05e4, 0x0003, 0x0000, 0x06c1, 0x06c6, 0x0003, 0x0030, + 0x0598, 0x05aa, 0x05b9, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x0030, + 0x05cf, 0x05cf, 0x0002, 0x0030, 0x05e4, 0x05e4, 0x0003, 0x0000, + 0x06d5, 0x06da, 0x0003, 0x0030, 0x05fe, 0x060e, 0x061b, 0x0002, + 0x06dd, 0x06e1, 0x0002, 0x0030, 0x062f, 0x062f, 0x0002, 0x0030, + 0x0642, 0x0642, 0x0003, 0x0000, 0x06e9, 0x06ee, 0x0003, 0x0030, + 0x05fe, 0x060e, 0x061b, 0x0002, 0x06f1, 0x06f5, 0x0002, 0x0030, + 0x062f, 0x062f, 0x0002, 0x0030, 0x0642, 0x0642, 0x0003, 0x0000, + // Entry 21280 - 212BF + 0x06fd, 0x0702, 0x0003, 0x0030, 0x05fe, 0x060e, 0x061b, 0x0002, + 0x0705, 0x0709, 0x0002, 0x0030, 0x062f, 0x062f, 0x0002, 0x0030, + 0x0642, 0x0642, 0x0003, 0x0000, 0x0711, 0x0716, 0x0003, 0x0030, + 0x065a, 0x0667, 0x0671, 0x0002, 0x0719, 0x071d, 0x0002, 0x0030, + 0x0682, 0x0682, 0x0002, 0x0030, 0x0692, 0x0692, 0x0003, 0x0000, + 0x0725, 0x072a, 0x0003, 0x0030, 0x065a, 0x0667, 0x0671, 0x0002, + 0x072d, 0x0731, 0x0002, 0x0030, 0x0682, 0x0682, 0x0002, 0x0030, + 0x0692, 0x0692, 0x0003, 0x0000, 0x0739, 0x073e, 0x0003, 0x0030, + // Entry 212C0 - 212FF + 0x065a, 0x0667, 0x0671, 0x0002, 0x0741, 0x0745, 0x0002, 0x0030, + 0x0682, 0x0682, 0x0002, 0x0030, 0x0692, 0x0692, 0x0003, 0x0000, + 0x074d, 0x0752, 0x0003, 0x0030, 0x06a6, 0x06b5, 0x06c1, 0x0002, + 0x0755, 0x0759, 0x0002, 0x0030, 0x06d4, 0x06d4, 0x0002, 0x0030, + 0x06e6, 0x06e6, 0x0003, 0x0000, 0x0761, 0x0766, 0x0003, 0x0030, + 0x06a6, 0x06b5, 0x06c1, 0x0002, 0x0769, 0x076d, 0x0002, 0x0030, + 0x06d4, 0x06d4, 0x0002, 0x0030, 0x06e6, 0x06e6, 0x0003, 0x0000, + 0x0775, 0x077a, 0x0003, 0x0030, 0x06a6, 0x06b5, 0x06c1, 0x0002, + // Entry 21300 - 2133F + 0x077d, 0x0781, 0x0002, 0x0030, 0x06d4, 0x06d4, 0x0002, 0x0030, + 0x06e6, 0x06e6, 0x0003, 0x0000, 0x0789, 0x078e, 0x0003, 0x0030, + 0x06fe, 0x0713, 0x0725, 0x0002, 0x0791, 0x0795, 0x0002, 0x0030, + 0x073e, 0x073e, 0x0002, 0x0030, 0x0756, 0x0756, 0x0003, 0x0000, + 0x079d, 0x07a2, 0x0003, 0x0030, 0x06fe, 0x0713, 0x0725, 0x0002, + 0x07a5, 0x07a9, 0x0002, 0x0030, 0x073e, 0x073e, 0x0002, 0x0030, + 0x0756, 0x0756, 0x0003, 0x0000, 0x07b1, 0x07b6, 0x0003, 0x0030, + 0x06fe, 0x0713, 0x0725, 0x0002, 0x07b9, 0x07bd, 0x0002, 0x0030, + // Entry 21340 - 2137F + 0x073e, 0x073e, 0x0002, 0x0030, 0x0756, 0x0756, 0x0003, 0x0000, + 0x07c5, 0x07ca, 0x0003, 0x0030, 0x0773, 0x0783, 0x0790, 0x0002, + 0x07cd, 0x07d1, 0x0002, 0x0030, 0x07a4, 0x07a4, 0x0002, 0x0030, + 0x07b7, 0x07b7, 0x0003, 0x0000, 0x07d9, 0x07de, 0x0003, 0x0030, + 0x0773, 0x0783, 0x0790, 0x0002, 0x07e1, 0x07e5, 0x0002, 0x0030, + 0x07a4, 0x07a4, 0x0002, 0x0030, 0x07b7, 0x07b7, 0x0003, 0x0000, + 0x07ed, 0x07f2, 0x0003, 0x0030, 0x0773, 0x0783, 0x0790, 0x0002, + 0x07f5, 0x07f9, 0x0002, 0x0030, 0x07a4, 0x07a4, 0x0002, 0x0030, + // Entry 21380 - 213BF + 0x07b7, 0x07b7, 0x0003, 0x0000, 0x0801, 0x0806, 0x0003, 0x0030, + 0x07cf, 0x07df, 0x07ec, 0x0002, 0x0809, 0x080d, 0x0002, 0x0030, + 0x0800, 0x0800, 0x0002, 0x0030, 0x0813, 0x0813, 0x0003, 0x0000, + 0x0815, 0x081a, 0x0003, 0x0030, 0x07cf, 0x07df, 0x07ec, 0x0002, + 0x081d, 0x0821, 0x0002, 0x0030, 0x0800, 0x0800, 0x0002, 0x0030, + 0x0813, 0x0813, 0x0003, 0x0000, 0x0829, 0x082e, 0x0003, 0x0030, + 0x07cf, 0x07df, 0x07ec, 0x0002, 0x0831, 0x0835, 0x0002, 0x0030, + 0x0800, 0x0800, 0x0002, 0x0030, 0x0813, 0x0813, 0x0001, 0x083b, + // Entry 213C0 - 213FF + 0x0001, 0x0030, 0x082b, 0x0003, 0x0842, 0x0845, 0x0849, 0x0001, + 0x0030, 0x0833, 0x0002, 0x0030, 0xffff, 0x0838, 0x0002, 0x084c, + 0x0850, 0x0002, 0x0030, 0x084a, 0x084a, 0x0002, 0x0030, 0x085a, + 0x085a, 0x0003, 0x0858, 0x0000, 0x085b, 0x0001, 0x0030, 0x0833, + 0x0002, 0x085e, 0x0862, 0x0002, 0x0030, 0x084a, 0x084a, 0x0002, + 0x0030, 0x085a, 0x085a, 0x0003, 0x086a, 0x0000, 0x086d, 0x0001, + 0x0030, 0x0833, 0x0002, 0x0870, 0x0874, 0x0002, 0x0030, 0x084a, + 0x084a, 0x0002, 0x0030, 0x085a, 0x085a, 0x0003, 0x087c, 0x087f, + // Entry 21400 - 2143F + 0x0883, 0x0001, 0x0030, 0x0870, 0x0002, 0x0030, 0xffff, 0x0875, + 0x0002, 0x0886, 0x088a, 0x0002, 0x0030, 0x0885, 0x0885, 0x0002, + 0x0030, 0x0895, 0x0895, 0x0003, 0x0892, 0x0000, 0x0895, 0x0001, + 0x0030, 0x0870, 0x0002, 0x0898, 0x089c, 0x0002, 0x0030, 0x0885, + 0x0885, 0x0002, 0x0030, 0x0895, 0x0895, 0x0003, 0x08a4, 0x0000, + 0x08a7, 0x0001, 0x0030, 0x0870, 0x0002, 0x08aa, 0x08ae, 0x0002, + 0x0030, 0x0885, 0x0885, 0x0002, 0x0030, 0x0895, 0x0895, 0x0003, + 0x08b6, 0x08b9, 0x08bd, 0x0001, 0x0030, 0x08aa, 0x0002, 0x0030, + // Entry 21440 - 2147F + 0xffff, 0x08b5, 0x0002, 0x08c0, 0x08c4, 0x0002, 0x0030, 0x08ba, + 0x08ba, 0x0002, 0x0030, 0x08d0, 0x08d0, 0x0003, 0x08cc, 0x0000, + 0x08cf, 0x0001, 0x0030, 0x08aa, 0x0002, 0x08d2, 0x08d6, 0x0002, + 0x0030, 0x08ba, 0x08ba, 0x0002, 0x0030, 0x08d0, 0x08d0, 0x0003, + 0x08de, 0x0000, 0x08e1, 0x0001, 0x0030, 0x08aa, 0x0002, 0x08e4, + 0x08e8, 0x0002, 0x0030, 0x08ba, 0x08ba, 0x0002, 0x0030, 0x08d0, + 0x08d0, 0x0001, 0x08ee, 0x0001, 0x0030, 0x08eb, 0x0004, 0x08f6, + 0x08fb, 0x0900, 0x090f, 0x0003, 0x0000, 0x1dc7, 0x2593, 0x259a, + // Entry 21480 - 214BF + 0x0003, 0x0030, 0x08f5, 0x08fe, 0x090e, 0x0002, 0x0000, 0x0903, + 0x0003, 0x0000, 0x090a, 0x0907, 0x0001, 0x0030, 0x091c, 0x0003, + 0x0030, 0xffff, 0x0933, 0x0944, 0x0002, 0x0af6, 0x0912, 0x0003, + 0x0916, 0x0a56, 0x09b6, 0x009e, 0x0030, 0xffff, 0xffff, 0xffff, + 0xffff, 0x09dd, 0x0a2b, 0x0a91, 0x0ace, 0x0b31, 0x0b88, 0x0bc7, + 0x0c15, 0x0c4a, 0x0cdb, 0x0d06, 0x0d46, 0x0da0, 0x0def, 0x0e3d, + 0x0e98, 0x0f08, 0x0f5d, 0x0fb5, 0x0ffe, 0x1031, 0xffff, 0xffff, + 0x1090, 0xffff, 0x10e6, 0xffff, 0x115c, 0x1193, 0x11c9, 0x11fa, + // Entry 214C0 - 214FF + 0xffff, 0xffff, 0x1278, 0x12b2, 0x1300, 0xffff, 0xffff, 0xffff, + 0x1371, 0xffff, 0x13d9, 0x142d, 0xffff, 0x1488, 0x14d9, 0x152e, + 0xffff, 0xffff, 0xffff, 0xffff, 0x15bc, 0xffff, 0xffff, 0x162d, + 0x1681, 0xffff, 0xffff, 0x1711, 0x175b, 0x179a, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x184d, 0x187e, 0x18b8, 0x18ec, + 0x191d, 0xffff, 0xffff, 0x19b7, 0xffff, 0x19f5, 0xffff, 0xffff, + 0x1a71, 0xffff, 0x1b10, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ba0, + 0xffff, 0x1bef, 0x1c4c, 0x1cb5, 0x1cf8, 0xffff, 0xffff, 0xffff, + // Entry 21500 - 2153F + 0x1d56, 0x1da2, 0x1de5, 0xffff, 0xffff, 0x1e4c, 0x1ec8, 0x1f11, + 0x1f42, 0xffff, 0xffff, 0x1fa6, 0x1fe0, 0x200e, 0xffff, 0x207d, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x217f, 0x21b9, 0x21ef, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22a6, + 0xffff, 0xffff, 0x22fb, 0xffff, 0x2337, 0xffff, 0x2393, 0x23ca, + 0x2413, 0xffff, 0x245a, 0x24a3, 0xffff, 0xffff, 0xffff, 0x251c, + 0x2556, 0xffff, 0xffff, 0x0954, 0x0a61, 0x0c78, 0x0ca8, 0xffff, + 0xffff, 0x1ac3, 0x2126, 0x009e, 0x0030, 0x097e, 0x0991, 0x09ac, + // Entry 21540 - 2157F + 0x09c5, 0x09f6, 0x0a39, 0x0aa1, 0x0aeb, 0x0b4a, 0x0b99, 0x0bdd, + 0x0c22, 0x0c55, 0x0ce5, 0x0d17, 0x0d63, 0x0db6, 0x0e05, 0x0e57, + 0x0eb9, 0x0f20, 0x0f76, 0x0fc9, 0x100e, 0x1041, 0x106e, 0x107b, + 0x10a0, 0x10cd, 0x1105, 0x1146, 0x116a, 0x11a4, 0x11d5, 0x120c, + 0x123d, 0x125b, 0x1287, 0x12c6, 0x1310, 0x1333, 0x133f, 0x1359, + 0x138c, 0x13c5, 0x13f4, 0x1446, 0x147b, 0x14a2, 0x14f1, 0x153a, + 0x155f, 0x1574, 0x1597, 0x15ae, 0x15ca, 0x15f3, 0x160a, 0x1648, + 0x169d, 0x16e8, 0x16fe, 0x1728, 0x176f, 0x17a5, 0x17c8, 0x17da, + // Entry 21580 - 215BF + 0x17ef, 0x17ff, 0x1818, 0x182f, 0x1859, 0x188d, 0x18c5, 0x18f8, + 0x193c, 0x1986, 0x199e, 0x19c3, 0x19e8, 0x1a09, 0x1a3e, 0x1a5e, + 0x1a88, 0x1af3, 0x1b1f, 0x1b49, 0x1b58, 0x1b6f, 0x1b88, 0x1bb5, + 0x1be2, 0x1c0a, 0x1c6b, 0x1cc7, 0x1d06, 0x1d2f, 0x1d3d, 0x1d49, + 0x1d6b, 0x1db4, 0x1df8, 0x1e2a, 0x1e35, 0x1e67, 0x1edc, 0x1f1d, + 0x1f53, 0x1f82, 0x1f8e, 0x1fb5, 0x1feb, 0x2025, 0x2060, 0x209e, + 0x20ec, 0x2104, 0x2118, 0x2162, 0x2171, 0x218e, 0x21c7, 0x21fc, + 0x2223, 0x223c, 0x2253, 0x226a, 0x227e, 0x228e, 0x229a, 0x22b2, + // Entry 215C0 - 215FF + 0x22d7, 0x22ed, 0x2307, 0x232c, 0x234d, 0x2386, 0x23a1, 0x23de, + 0x2421, 0x244a, 0x246e, 0x24b4, 0x24e3, 0x24f1, 0x2503, 0x252b, + 0x256b, 0x16d8, 0x1eaa, 0x095e, 0x0a6d, 0x0c84, 0x0cb5, 0xffff, + 0x1a52, 0x1acf, 0x2136, 0x009e, 0x0030, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0a10, 0x0a4c, 0x0ab7, 0x0b0d, 0x0b68, 0x0baf, 0x0bf8, + 0x0c35, 0x0c66, 0x0cf5, 0x0d2e, 0x0d81, 0x0dd2, 0x0e20, 0x0e77, + 0x0ee0, 0x0f3e, 0x0f95, 0x0fe3, 0x101f, 0x1057, 0xffff, 0xffff, + 0x10b6, 0xffff, 0x1125, 0xffff, 0x117e, 0x11b6, 0x11e7, 0x1224, + // Entry 21600 - 2163F + 0xffff, 0xffff, 0x129c, 0x12e0, 0x1321, 0xffff, 0xffff, 0xffff, + 0x13a8, 0xffff, 0x1410, 0x1460, 0xffff, 0x14bd, 0x150f, 0x154c, + 0xffff, 0xffff, 0xffff, 0xffff, 0x15de, 0xffff, 0xffff, 0x1664, + 0x16ba, 0xffff, 0xffff, 0x1741, 0x1784, 0x17b6, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x186b, 0x18a2, 0x18d8, 0x190a, + 0x1960, 0xffff, 0xffff, 0x19d5, 0xffff, 0x1a23, 0xffff, 0xffff, + 0x1aa5, 0xffff, 0x1b33, 0xffff, 0xffff, 0xffff, 0xffff, 0x1bcb, + 0xffff, 0x1c2a, 0x1c8f, 0x1cdf, 0x1d1a, 0xffff, 0xffff, 0xffff, + // Entry 21640 - 2167F + 0x1d86, 0x1dcc, 0x1e10, 0xffff, 0xffff, 0x1e88, 0x1ef6, 0x1f2f, + 0x1f6a, 0xffff, 0xffff, 0x1fca, 0x1ffc, 0x2042, 0xffff, 0x20c4, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21a3, 0x21da, 0x220f, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22c4, + 0xffff, 0xffff, 0x2319, 0xffff, 0x2369, 0xffff, 0x23b5, 0x23f8, + 0x2435, 0xffff, 0x2488, 0x24cb, 0xffff, 0xffff, 0xffff, 0x2540, + 0x2586, 0xffff, 0xffff, 0x096d, 0x0a7e, 0x0c95, 0x0cc7, 0xffff, + 0xffff, 0x1ae0, 0x214b, 0x0003, 0x0afa, 0x0b69, 0x0b2d, 0x0031, + // Entry 21680 - 216BF + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 216C0 - 216FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27c3, 0x0031, 0x0006, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 21700 - 2173F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, + 0x13e3, 0x0003, 0x0004, 0x024f, 0x0643, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0031, 0x0000, 0x0001, + // Entry 21740 - 2177F + 0x0031, 0x0016, 0x0001, 0x0031, 0x0027, 0x0001, 0x001e, 0x1a8e, + 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0203, 0x021c, + 0x022d, 0x023e, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, + 0x0066, 0x000d, 0x0031, 0xffff, 0x0037, 0x003e, 0x0045, 0x004c, + 0x0053, 0x005a, 0x0061, 0x0068, 0x006f, 0x0076, 0x007d, 0x0084, + 0x000d, 0x0031, 0xffff, 0x008b, 0x008e, 0x0091, 0x0094, 0x0091, + // Entry 21780 - 217BF + 0x008b, 0x008b, 0x0097, 0x009a, 0x008b, 0x009d, 0x00a0, 0x000d, + 0x0031, 0xffff, 0x00a3, 0x00b4, 0x00c5, 0x00d0, 0x00dd, 0x00ea, + 0x00f9, 0x0108, 0x0119, 0x012e, 0x0143, 0x0156, 0x0003, 0x0079, + 0x0088, 0x0097, 0x000d, 0x0031, 0xffff, 0x0037, 0x003e, 0x0045, + 0x004c, 0x0053, 0x005a, 0x0061, 0x0068, 0x006f, 0x0076, 0x007d, + 0x0084, 0x000d, 0x0031, 0xffff, 0x008b, 0x008e, 0x0091, 0x0094, + 0x0091, 0x008b, 0x008b, 0x0097, 0x009a, 0x008b, 0x009d, 0x00a0, + 0x000d, 0x0031, 0xffff, 0x016b, 0x017a, 0x0189, 0x0192, 0x019d, + // Entry 217C0 - 217FF + 0x01a8, 0x01b5, 0x01c2, 0x01d1, 0x01e4, 0x01f7, 0x0208, 0x0002, + 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, + 0x0007, 0x0031, 0x021b, 0x0222, 0x0229, 0x0230, 0x0237, 0x023e, + 0x0245, 0x0007, 0x0031, 0x024c, 0x024f, 0x024f, 0x0252, 0x008b, + 0x0255, 0x0258, 0x0007, 0x0031, 0x025b, 0x0260, 0x0265, 0x026a, + 0x026f, 0x0274, 0x0279, 0x0007, 0x0031, 0x027e, 0x028b, 0x02a0, + 0x02b3, 0x02c8, 0x02db, 0x02e8, 0x0005, 0x00d9, 0x00e2, 0x00f4, + 0x0000, 0x00eb, 0x0007, 0x0031, 0x021b, 0x0222, 0x0229, 0x0230, + // Entry 21800 - 2183F + 0x0237, 0x023e, 0x0245, 0x0007, 0x0031, 0x024c, 0x024f, 0x024f, + 0x0252, 0x008b, 0x0255, 0x0258, 0x0007, 0x0031, 0x025b, 0x0260, + 0x0265, 0x026a, 0x026f, 0x0274, 0x0279, 0x0007, 0x0031, 0x027e, + 0x028b, 0x02a0, 0x02b3, 0x02c8, 0x02db, 0x02e8, 0x0002, 0x0100, + 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0031, 0xffff, + 0x02f3, 0x0304, 0x0315, 0x0326, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0031, 0xffff, 0x0337, 0x034f, + 0x0367, 0x037f, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0031, + // Entry 21840 - 2187F + 0xffff, 0x02f3, 0x0304, 0x0315, 0x0326, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0031, 0xffff, 0x0337, + 0x034f, 0x0367, 0x037f, 0x0002, 0x0135, 0x019c, 0x0003, 0x0139, + 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, 0x014e, 0x0151, + 0x0154, 0x0157, 0x0148, 0x0001, 0x0031, 0x0397, 0x0001, 0x0031, + 0x03a8, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0031, 0x03b8, 0x0001, + 0x0031, 0x03bd, 0x0001, 0x0031, 0x03d0, 0x0001, 0x0031, 0x03dd, + 0x0001, 0x0031, 0x03ee, 0x0008, 0x0166, 0x016c, 0x0163, 0x016f, + // Entry 21880 - 218BF + 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x0031, 0x03fb, 0x0001, + 0x0031, 0x0403, 0x0001, 0x0031, 0x0406, 0x0001, 0x0031, 0x040e, + 0x0001, 0x0031, 0x0411, 0x0001, 0x0031, 0x0418, 0x0001, 0x0031, + 0x0222, 0x0001, 0x0031, 0x041f, 0x0008, 0x0187, 0x018d, 0x0184, + 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, 0x0031, 0x0397, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0031, 0x03bd, 0x0001, 0x0031, 0x03d0, 0x0001, + 0x0031, 0x03dd, 0x0001, 0x0031, 0x03ee, 0x0003, 0x01a0, 0x01c1, + // Entry 218C0 - 218FF + 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, 0x01b8, 0x01bb, + 0x01be, 0x01af, 0x0001, 0x0031, 0x0397, 0x0001, 0x0031, 0x03a8, + 0x0001, 0x0031, 0x03ad, 0x0001, 0x0031, 0x03b8, 0x0001, 0x0031, + 0x0426, 0x0001, 0x0031, 0x0433, 0x0001, 0x0031, 0x043e, 0x0001, + 0x0031, 0x0449, 0x0008, 0x01cd, 0x01d3, 0x01ca, 0x01d6, 0x01d9, + 0x01dc, 0x01df, 0x01d0, 0x0001, 0x0031, 0x0397, 0x0001, 0x0031, + 0x03a8, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0031, 0x03b8, 0x0001, + 0x0031, 0x0426, 0x0001, 0x0031, 0x0433, 0x0001, 0x0031, 0x043e, + // Entry 21900 - 2193F + 0x0001, 0x0031, 0x0449, 0x0008, 0x01ee, 0x01f4, 0x01eb, 0x01f7, + 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0031, 0x0397, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0031, 0x0426, 0x0001, 0x0031, 0x0433, 0x0001, 0x0031, + 0x043e, 0x0001, 0x0031, 0x0449, 0x0003, 0x0212, 0x0000, 0x0207, + 0x0002, 0x020a, 0x020e, 0x0002, 0x0031, 0x0454, 0x049d, 0x0002, + 0x0031, 0x0470, 0x04b9, 0x0002, 0x0215, 0x0219, 0x0002, 0x0031, + 0x04d7, 0x04f1, 0x0001, 0x0031, 0x04e1, 0x0004, 0x022a, 0x0224, + // Entry 21940 - 2197F + 0x0221, 0x0227, 0x0001, 0x0031, 0x04f8, 0x0001, 0x0031, 0x050b, + 0x0001, 0x0031, 0x051a, 0x0001, 0x0007, 0x0277, 0x0004, 0x023b, + 0x0235, 0x0232, 0x0238, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x024c, 0x0246, 0x0243, 0x0249, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0040, 0x0290, 0x0000, 0x0000, 0x0295, 0x02ac, 0x02be, 0x02d0, + 0x02e7, 0x02f9, 0x030b, 0x0322, 0x0339, 0x0350, 0x036b, 0x0381, + // Entry 21980 - 219BF + 0x0000, 0x0000, 0x0000, 0x0397, 0x03b0, 0x03c9, 0x0000, 0x0000, + 0x0000, 0x03e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03e7, + 0x03fb, 0x040f, 0x0423, 0x0437, 0x044b, 0x045f, 0x0473, 0x0487, + 0x049b, 0x04af, 0x04c3, 0x04d7, 0x04eb, 0x04ff, 0x0513, 0x0527, + 0x053b, 0x054f, 0x0563, 0x0577, 0x0000, 0x058b, 0x0000, 0x0590, + 0x05a6, 0x05b8, 0x05ca, 0x05e0, 0x05f2, 0x0604, 0x061a, 0x062c, + 0x063e, 0x0001, 0x0292, 0x0001, 0x0031, 0x0528, 0x0003, 0x0299, + 0x029c, 0x02a1, 0x0001, 0x0031, 0x0541, 0x0003, 0x0031, 0x054a, + // Entry 219C0 - 219FF + 0x0560, 0x0570, 0x0002, 0x02a4, 0x02a8, 0x0002, 0x0031, 0x0586, + 0x0586, 0x0002, 0x0031, 0x0597, 0x0597, 0x0003, 0x02b0, 0x0000, + 0x02b3, 0x0001, 0x0031, 0x05ad, 0x0002, 0x02b6, 0x02ba, 0x0002, + 0x0031, 0x0586, 0x0586, 0x0002, 0x0031, 0x05b0, 0x05b0, 0x0003, + 0x02c2, 0x0000, 0x02c5, 0x0001, 0x0031, 0x05ad, 0x0002, 0x02c8, + 0x02cc, 0x0002, 0x0031, 0x05c0, 0x05c0, 0x0002, 0x0031, 0x05c8, + 0x05c8, 0x0003, 0x02d4, 0x02d7, 0x02dc, 0x0001, 0x0031, 0x05d0, + 0x0003, 0x0031, 0x05e1, 0x05ff, 0x0617, 0x0002, 0x02df, 0x02e3, + // Entry 21A00 - 21A3F + 0x0002, 0x0031, 0x0635, 0x0635, 0x0002, 0x0031, 0x064e, 0x064e, + 0x0003, 0x02eb, 0x0000, 0x02ee, 0x0001, 0x0031, 0x066c, 0x0002, + 0x02f1, 0x02f5, 0x0002, 0x0031, 0x0675, 0x0675, 0x0002, 0x0031, + 0x0687, 0x0687, 0x0003, 0x02fd, 0x0000, 0x0300, 0x0001, 0x0031, + 0x066c, 0x0002, 0x0303, 0x0307, 0x0002, 0x0031, 0x069d, 0x069d, + 0x0002, 0x0031, 0x06ab, 0x06ab, 0x0003, 0x030f, 0x0312, 0x0317, + 0x0001, 0x0031, 0x06b9, 0x0003, 0x0031, 0x06c2, 0x06d8, 0x06e8, + 0x0002, 0x031a, 0x031e, 0x0002, 0x0031, 0x06fe, 0x06fe, 0x0002, + // Entry 21A40 - 21A7F + 0x0031, 0x070d, 0x070d, 0x0003, 0x0326, 0x0329, 0x032e, 0x0001, + 0x0031, 0x0723, 0x0003, 0x0031, 0x072a, 0x06d8, 0x06e8, 0x0002, + 0x0331, 0x0335, 0x0002, 0x0031, 0x06fe, 0x06fe, 0x0002, 0x0031, + 0x070d, 0x070d, 0x0003, 0x033d, 0x0340, 0x0345, 0x0001, 0x0031, + 0x0723, 0x0003, 0x0031, 0x072a, 0x06d8, 0x06e8, 0x0002, 0x0348, + 0x034c, 0x0002, 0x0031, 0x0740, 0x0740, 0x0002, 0x0031, 0x0748, + 0x0748, 0x0004, 0x0355, 0x0358, 0x035d, 0x0368, 0x0001, 0x0031, + 0x02e8, 0x0003, 0x0031, 0x0750, 0x0768, 0x077a, 0x0002, 0x0360, + // Entry 21A80 - 21ABF + 0x0364, 0x0002, 0x0031, 0x0792, 0x0792, 0x0002, 0x0031, 0x07a5, + 0x07a5, 0x0001, 0x0031, 0x07bd, 0x0004, 0x0370, 0x0000, 0x0373, + 0x037e, 0x0001, 0x0031, 0x07d5, 0x0002, 0x0376, 0x037a, 0x0002, + 0x0031, 0x07dc, 0x07dc, 0x0002, 0x0031, 0x07ec, 0x07ec, 0x0001, + 0x0031, 0x0800, 0x0004, 0x0386, 0x0000, 0x0389, 0x0394, 0x0001, + 0x0031, 0x07d5, 0x0002, 0x038c, 0x0390, 0x0002, 0x0031, 0x0815, + 0x0815, 0x0002, 0x0031, 0x07ec, 0x07ec, 0x0001, 0x0031, 0x0800, + 0x0003, 0x039b, 0x039e, 0x03a5, 0x0001, 0x0031, 0x0827, 0x0005, + // Entry 21AC0 - 21AFF + 0x0031, 0x084c, 0x0855, 0x0860, 0x082c, 0x0869, 0x0002, 0x03a8, + 0x03ac, 0x0002, 0x0031, 0x0889, 0x0889, 0x0002, 0x0031, 0x0896, + 0x0896, 0x0003, 0x03b4, 0x03b7, 0x03be, 0x0001, 0x0031, 0x0827, + 0x0005, 0x0031, 0x084c, 0x0855, 0x0860, 0x082c, 0x0869, 0x0002, + 0x03c1, 0x03c5, 0x0002, 0x0031, 0x0889, 0x0889, 0x0002, 0x0031, + 0x0896, 0x0896, 0x0003, 0x03cd, 0x03d0, 0x03d7, 0x0001, 0x0031, + 0x0827, 0x0005, 0x0031, 0x084c, 0x0855, 0x0860, 0x082c, 0x0869, + 0x0002, 0x03da, 0x03de, 0x0002, 0x0031, 0x0889, 0x0889, 0x0002, + // Entry 21B00 - 21B3F + 0x0031, 0x0896, 0x0896, 0x0001, 0x03e4, 0x0001, 0x0031, 0x08a8, + 0x0003, 0x0000, 0x03eb, 0x03f0, 0x0003, 0x0031, 0x08bc, 0x08d6, + 0x08ea, 0x0002, 0x03f3, 0x03f7, 0x0002, 0x0031, 0x0904, 0x0904, + 0x0002, 0x0031, 0x091e, 0x091e, 0x0003, 0x0000, 0x03ff, 0x0404, + 0x0003, 0x0031, 0x0938, 0x0948, 0x0956, 0x0002, 0x0407, 0x040b, + 0x0002, 0x0031, 0x0966, 0x0966, 0x0002, 0x0031, 0x097a, 0x097a, + 0x0003, 0x0000, 0x0413, 0x0418, 0x0003, 0x0031, 0x0938, 0x0948, + 0x0956, 0x0002, 0x041b, 0x041f, 0x0002, 0x0031, 0x098e, 0x098e, + // Entry 21B40 - 21B7F + 0x0002, 0x0031, 0x099a, 0x099a, 0x0003, 0x0000, 0x0427, 0x042c, + 0x0003, 0x0031, 0x09a6, 0x09c8, 0x09e4, 0x0002, 0x042f, 0x0433, + 0x0002, 0x0031, 0x0a06, 0x0a06, 0x0002, 0x0031, 0x0a28, 0x0a28, + 0x0003, 0x0000, 0x043b, 0x0440, 0x0003, 0x0031, 0x0a4a, 0x0a5a, + 0x0a68, 0x0002, 0x0443, 0x0447, 0x0002, 0x0031, 0x0a78, 0x0a78, + 0x0002, 0x0031, 0x0a8c, 0x0a8c, 0x0003, 0x0000, 0x044f, 0x0454, + 0x0003, 0x0031, 0x0a4a, 0x0a5a, 0x0a68, 0x0002, 0x0457, 0x045b, + 0x0002, 0x0031, 0x0aa0, 0x0aa0, 0x0002, 0x0031, 0x0aac, 0x0aac, + // Entry 21B80 - 21BBF + 0x0003, 0x0000, 0x0463, 0x0468, 0x0003, 0x0031, 0x0ab8, 0x0ad8, + 0x0af2, 0x0002, 0x046b, 0x046f, 0x0002, 0x0031, 0x0b12, 0x0b12, + 0x0002, 0x0031, 0x0b32, 0x0b32, 0x0003, 0x0000, 0x0477, 0x047c, + 0x0003, 0x0031, 0x0b52, 0x0b62, 0x0b70, 0x0002, 0x047f, 0x0483, + 0x0002, 0x0031, 0x0b80, 0x0b80, 0x0002, 0x0031, 0x0b94, 0x0b94, + 0x0003, 0x0000, 0x048b, 0x0490, 0x0003, 0x0031, 0x0b52, 0x0b62, + 0x0b70, 0x0002, 0x0493, 0x0497, 0x0002, 0x0031, 0x0ba8, 0x0ba8, + 0x0002, 0x0031, 0x0bb4, 0x0bb4, 0x0003, 0x0000, 0x049f, 0x04a4, + // Entry 21BC0 - 21BFF + 0x0003, 0x0031, 0x0bc0, 0x0be2, 0x0bfe, 0x0002, 0x04a7, 0x04ab, + 0x0002, 0x0031, 0x0c20, 0x0c20, 0x0002, 0x0031, 0x0c42, 0x0c42, + 0x0003, 0x0000, 0x04b3, 0x04b8, 0x0003, 0x0031, 0x0c64, 0x0c74, + 0x0c82, 0x0002, 0x04bb, 0x04bf, 0x0002, 0x0031, 0x0c92, 0x0c92, + 0x0002, 0x0031, 0x0ca6, 0x0ca6, 0x0003, 0x0000, 0x04c7, 0x04cc, + 0x0003, 0x0031, 0x0c64, 0x0c74, 0x0c82, 0x0002, 0x04cf, 0x04d3, + 0x0002, 0x0031, 0x0cba, 0x0cba, 0x0002, 0x0031, 0x0cc6, 0x0cc6, + 0x0003, 0x0000, 0x04db, 0x04e0, 0x0003, 0x0031, 0x0cd2, 0x0cf2, + // Entry 21C00 - 21C3F + 0x0d0c, 0x0002, 0x04e3, 0x04e7, 0x0002, 0x0031, 0x0d2c, 0x0d2c, + 0x0002, 0x0031, 0x0d4c, 0x0d4c, 0x0003, 0x0000, 0x04ef, 0x04f4, + 0x0003, 0x0031, 0x0d6c, 0x0d7c, 0x0d8a, 0x0002, 0x04f7, 0x04fb, + 0x0002, 0x0031, 0x0d9a, 0x0d9a, 0x0002, 0x0031, 0x0dae, 0x0dae, + 0x0003, 0x0000, 0x0503, 0x0508, 0x0003, 0x0031, 0x0d6c, 0x0d7c, + 0x0d8a, 0x0002, 0x050b, 0x050f, 0x0002, 0x0031, 0x0dc2, 0x0dc2, + 0x0002, 0x0031, 0x0dce, 0x0dce, 0x0003, 0x0000, 0x0517, 0x051c, + 0x0003, 0x0031, 0x0dda, 0x0df4, 0x0e08, 0x0002, 0x051f, 0x0523, + // Entry 21C40 - 21C7F + 0x0002, 0x0031, 0x0e22, 0x0e22, 0x0002, 0x0031, 0x0e3c, 0x0e3c, + 0x0003, 0x0000, 0x052b, 0x0530, 0x0003, 0x0031, 0x0e56, 0x0e68, + 0x0e78, 0x0002, 0x0533, 0x0537, 0x0002, 0x0031, 0x0e8a, 0x0e8a, + 0x0002, 0x0031, 0x0ea0, 0x0ea0, 0x0003, 0x0000, 0x053f, 0x0544, + 0x0003, 0x0031, 0x0e56, 0x0e68, 0x0e78, 0x0002, 0x0547, 0x054b, + 0x0002, 0x0031, 0x0e8a, 0x0e8a, 0x0002, 0x0031, 0x0ea0, 0x0ea0, + 0x0003, 0x0000, 0x0553, 0x0558, 0x0003, 0x0031, 0x0eb6, 0x0ed5, + 0x0eee, 0x0002, 0x055b, 0x055f, 0x0002, 0x0031, 0x0f0d, 0x0f0d, + // Entry 21C80 - 21CBF + 0x0002, 0x0031, 0x0f2a, 0x0f2a, 0x0003, 0x0000, 0x0567, 0x056c, + 0x0003, 0x0031, 0x0f47, 0x0f57, 0x0f65, 0x0002, 0x056f, 0x0573, + 0x0002, 0x0031, 0x0f75, 0x0f75, 0x0002, 0x0031, 0x0f89, 0x0f89, + 0x0003, 0x0000, 0x057b, 0x0580, 0x0003, 0x0031, 0x0f47, 0x0f57, + 0x0f65, 0x0002, 0x0583, 0x0587, 0x0002, 0x0031, 0x0f9d, 0x0f9d, + 0x0002, 0x0031, 0x0fa7, 0x0fa7, 0x0001, 0x058d, 0x0001, 0x0031, + 0x0fb1, 0x0003, 0x0594, 0x0597, 0x059b, 0x0001, 0x0031, 0x0fbb, + 0x0002, 0x0031, 0xffff, 0x0fc2, 0x0002, 0x059e, 0x05a2, 0x0002, + // Entry 21CC0 - 21CFF + 0x0031, 0x0fd4, 0x0fd4, 0x0002, 0x0031, 0x0fe3, 0x0fe3, 0x0003, + 0x05aa, 0x0000, 0x05ad, 0x0001, 0x0031, 0x0ff7, 0x0002, 0x05b0, + 0x05b4, 0x0002, 0x0031, 0x0ffa, 0x0ffa, 0x0002, 0x0031, 0x1006, + 0x1006, 0x0003, 0x05bc, 0x0000, 0x05bf, 0x0001, 0x0031, 0x0ff7, + 0x0002, 0x05c2, 0x05c6, 0x0002, 0x0031, 0x0ffa, 0x0ffa, 0x0002, + 0x0031, 0x1006, 0x1006, 0x0003, 0x05ce, 0x05d1, 0x05d5, 0x0001, + 0x0031, 0x1016, 0x0002, 0x0031, 0xffff, 0x101f, 0x0002, 0x05d8, + 0x05dc, 0x0002, 0x0031, 0x1033, 0x1033, 0x0002, 0x0031, 0x1044, + // Entry 21D00 - 21D3F + 0x1044, 0x0003, 0x05e4, 0x0000, 0x05e7, 0x0001, 0x0031, 0x105a, + 0x0002, 0x05ea, 0x05ee, 0x0002, 0x0031, 0x105d, 0x105d, 0x0002, + 0x0031, 0x1069, 0x1069, 0x0003, 0x05f6, 0x0000, 0x05f9, 0x0001, + 0x0031, 0x105a, 0x0002, 0x05fc, 0x0600, 0x0002, 0x0031, 0x105d, + 0x105d, 0x0002, 0x0031, 0x1069, 0x1069, 0x0003, 0x0608, 0x060b, + 0x060f, 0x0001, 0x0031, 0x1079, 0x0002, 0x0031, 0xffff, 0x108a, + 0x0002, 0x0612, 0x0616, 0x0002, 0x0031, 0x1093, 0x1093, 0x0002, + 0x0031, 0x10ac, 0x10ac, 0x0003, 0x061e, 0x0000, 0x0621, 0x0001, + // Entry 21D40 - 21D7F + 0x0031, 0x10ca, 0x0002, 0x0624, 0x0628, 0x0002, 0x0031, 0x10cd, + 0x10cd, 0x0002, 0x0031, 0x10dd, 0x10dd, 0x0003, 0x0630, 0x0000, + 0x0633, 0x0001, 0x0031, 0x10ca, 0x0002, 0x0636, 0x063a, 0x0002, + 0x0031, 0x10f1, 0x10f1, 0x0002, 0x0031, 0x10fd, 0x10fd, 0x0001, + 0x0640, 0x0001, 0x0031, 0x110d, 0x0004, 0x0648, 0x064d, 0x0652, + 0x0661, 0x0003, 0x0000, 0x1dc7, 0x2593, 0x25c9, 0x0003, 0x0000, + 0x1de0, 0x25cd, 0x23d0, 0x0002, 0x0000, 0x0655, 0x0003, 0x0000, + 0x065c, 0x0659, 0x0001, 0x0031, 0x1125, 0x0003, 0x0031, 0xffff, + // Entry 21D80 - 21DBF + 0x1168, 0x119d, 0x0002, 0x0000, 0x0664, 0x0003, 0x06fe, 0x0794, + 0x0668, 0x0094, 0x0031, 0x11d2, 0x11f6, 0x122d, 0x125e, 0x12c2, + 0x1368, 0x13f0, 0x148f, 0x1556, 0x1607, 0x16ab, 0xffff, 0x1749, + 0x17d4, 0x187e, 0x1923, 0x19d5, 0x1a5d, 0x1b00, 0x1bea, 0x1cdf, + 0x1da6, 0x1e58, 0x1eed, 0x1f91, 0x1ffb, 0x2019, 0x205f, 0x20c9, + 0x210e, 0x217a, 0x21bf, 0x2245, 0x22bd, 0x2347, 0x23b1, 0x23e5, + 0x243c, 0x24d5, 0x2573, 0x25d1, 0x25ef, 0x2623, 0x2675, 0x26e1, + 0x2738, 0x27f9, 0x287d, 0x28ca, 0x2985, 0x2a2f, 0x2a85, 0x2aba, + // Entry 21DC0 - 21DFF + 0x2b0d, 0x2b46, 0x2b93, 0x2bf5, 0x2c26, 0x2c7f, 0x2d4c, 0x2de0, + 0x2e16, 0x2e67, 0x2f0b, 0x2f87, 0x2fdd, 0x3012, 0x3045, 0x306d, + 0x30aa, 0x30e1, 0x3132, 0x31aa, 0x3230, 0x32b4, 0xffff, 0x331a, + 0x334f, 0x33a2, 0x3400, 0x3448, 0x34ba, 0x34dc, 0x3528, 0x3590, + 0x35dd, 0x363f, 0x3663, 0x3687, 0x36ba, 0x3711, 0x377b, 0x37dc, + 0x38c3, 0x3992, 0x3a22, 0x3a84, 0x3aa4, 0x3ac4, 0x3b0d, 0x3bb4, + 0x3c5a, 0x3cd8, 0x3cf6, 0x3d59, 0x3e17, 0x3ea3, 0x3f1b, 0x3f81, + 0x3fa1, 0x3ff7, 0x4079, 0x40f9, 0x4167, 0x41c7, 0x424f, 0x426f, + // Entry 21E00 - 21E3F + 0x4296, 0x42b6, 0x42da, 0x431a, 0xffff, 0x439a, 0x43f8, 0x442b, + 0x444f, 0x4480, 0x44b3, 0x44d5, 0x44f3, 0x452d, 0x458b, 0x45af, + 0x45f1, 0x464f, 0x4695, 0x470b, 0x4753, 0x47e3, 0x4877, 0x48e5, + 0x4935, 0x49cb, 0x4a35, 0x4a53, 0x4a78, 0x4ace, 0x4b60, 0x0094, + 0x0031, 0xffff, 0xffff, 0xffff, 0xffff, 0x1291, 0x1346, 0x13ce, + 0x1456, 0x1523, 0x15de, 0x167b, 0xffff, 0x172d, 0x17a3, 0x1858, + 0x18ec, 0x19b3, 0x1a3b, 0x1ac3, 0x1b9c, 0x1ca8, 0x1d6f, 0x1e36, + 0x1ebe, 0x1f6d, 0xffff, 0xffff, 0x203b, 0xffff, 0x20e9, 0xffff, + // Entry 21E40 - 21E7F + 0x219a, 0x222b, 0x229b, 0x2323, 0xffff, 0xffff, 0x2416, 0x24aa, + 0x2555, 0xffff, 0xffff, 0xffff, 0x2650, 0xffff, 0x2701, 0x27c8, + 0xffff, 0x2899, 0x294e, 0x2a15, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2b73, 0xffff, 0xffff, 0x2c46, 0x2d13, 0xffff, 0xffff, 0x2e36, + 0x2eeb, 0x2f6d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3118, 0x3188, 0x3210, 0x3292, 0xffff, 0xffff, 0xffff, 0x3384, + 0xffff, 0x3420, 0xffff, 0xffff, 0x3505, 0xffff, 0x35bd, 0xffff, + 0xffff, 0xffff, 0xffff, 0x36ed, 0xffff, 0x379b, 0x3880, 0x396b, + // Entry 21E80 - 21EBF + 0x3a02, 0xffff, 0xffff, 0xffff, 0x3ae0, 0x3b89, 0x3c2c, 0xffff, + 0xffff, 0x3d1f, 0x3def, 0x3e89, 0x3ef9, 0xffff, 0xffff, 0x3fd5, + 0x405d, 0x40d3, 0xffff, 0x4194, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x42fa, 0xffff, 0x437c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x450f, 0xffff, 0xffff, 0x45d3, 0xffff, + 0x466b, 0xffff, 0x472f, 0x47bd, 0x4851, 0xffff, 0x490d, 0x49a7, + 0xffff, 0xffff, 0xffff, 0x4aac, 0x4b34, 0x0094, 0x0031, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1304, 0x139b, 0x1423, 0x14d9, 0x159a, + // Entry 21EC0 - 21EFF + 0x1641, 0x16ec, 0xffff, 0x1776, 0x1816, 0x18b5, 0x196b, 0x1a08, + 0x1a90, 0x1b4e, 0x1c49, 0x1d27, 0x1dee, 0x1e8b, 0x1f2d, 0x1fc6, + 0xffff, 0xffff, 0x2094, 0xffff, 0x2144, 0xffff, 0x21f5, 0x2270, + 0x22f0, 0x237c, 0xffff, 0xffff, 0x2473, 0x2511, 0x25a2, 0xffff, + 0xffff, 0xffff, 0x26ab, 0xffff, 0x2780, 0x283b, 0xffff, 0x290c, + 0x29cd, 0x2a5a, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bc4, 0xffff, + 0xffff, 0x2cc9, 0x2d96, 0xffff, 0xffff, 0x2ea9, 0x2f3c, 0x2fb2, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x315d, 0x31dd, + // Entry 21F00 - 21F3F + 0x3261, 0x32e7, 0xffff, 0xffff, 0xffff, 0x33d1, 0xffff, 0x3481, + 0xffff, 0xffff, 0x355c, 0xffff, 0x360e, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3746, 0xffff, 0x382e, 0x3917, 0x39ca, 0x3a53, 0xffff, + 0xffff, 0xffff, 0x3b4b, 0x3bf0, 0x3c99, 0xffff, 0xffff, 0x3da4, + 0x3e50, 0x3ece, 0x3f4e, 0xffff, 0xffff, 0x402a, 0x40a6, 0x4130, + 0xffff, 0x420b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x434b, + 0xffff, 0x43c9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x455c, 0xffff, 0xffff, 0x4620, 0xffff, 0x46d0, 0xffff, + // Entry 21F40 - 21F7F + 0x4788, 0x481a, 0x48ae, 0xffff, 0x496e, 0x4a00, 0xffff, 0xffff, + 0xffff, 0x4b01, 0x4b9d, 0x0003, 0x0004, 0x07cc, 0x0b4e, 0x0012, + 0x0017, 0x0038, 0x0144, 0x01b1, 0x01f5, 0x0000, 0x0262, 0x028d, + 0x04ab, 0x0523, 0x0595, 0x0000, 0x0000, 0x0000, 0x0000, 0x061b, + 0x0738, 0x07aa, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, + 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, + 0x0000, 0x0000, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + // Entry 21F80 - 21FBF + 0x0001, 0x0000, 0x236f, 0x000a, 0x0043, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0133, 0x0000, 0x0000, 0x0000, 0x00a8, 0x0002, 0x0046, + 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + // Entry 21FC0 - 21FFF + 0x2220, 0x2398, 0x0003, 0x007b, 0x008a, 0x0099, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x0006, 0x00af, 0x0000, 0x0000, 0x00c2, + 0x00dd, 0x0120, 0x0001, 0x00b1, 0x0001, 0x00b3, 0x000d, 0x0000, + // Entry 22000 - 2203F + 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x25d6, + 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x00c4, 0x0001, + 0x00c6, 0x0015, 0x0032, 0xffff, 0x0000, 0x0011, 0x001b, 0x002b, + 0xffff, 0x003f, 0x004d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x005f, 0x0071, 0x007d, 0x0087, 0x009c, 0x00a9, 0x00ba, 0x00cd, + 0x0001, 0x00df, 0x0001, 0x00e1, 0x003d, 0x0000, 0xffff, 0x01bd, + 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, + 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, + // Entry 22040 - 2207F + 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, + 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, + 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, + 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, + 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, + 0x0381, 0x0389, 0x0390, 0x0001, 0x0122, 0x0001, 0x0124, 0x000d, + 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, + 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0004, 0x0141, + // Entry 22080 - 220BF + 0x013b, 0x0138, 0x013e, 0x0001, 0x0032, 0x00df, 0x0001, 0x0032, + 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, + 0x0146, 0x0002, 0x0149, 0x017d, 0x0003, 0x014d, 0x015d, 0x016d, + 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, + 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, + 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, + // Entry 220C0 - 220FF + 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, + 0x0003, 0x0181, 0x0191, 0x01a1, 0x000e, 0x0000, 0xffff, 0x03ce, + 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, + 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, 0x03ce, + 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, + 0x040b, 0x0411, 0x0416, 0x041c, 0x000a, 0x0000, 0x0000, 0x0000, + // Entry 22100 - 2213F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01bc, 0x0004, + 0x0000, 0x0000, 0x0000, 0x01c1, 0x0001, 0x01c3, 0x0003, 0x01c7, + 0x0000, 0x01de, 0x0015, 0x0032, 0xffff, 0x0000, 0x0011, 0x001b, + 0x002b, 0xffff, 0x003f, 0x004d, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x005f, 0x0071, 0x0106, 0x0087, 0x009c, 0x00a9, 0xffff, + 0x00cd, 0x0015, 0x0032, 0xffff, 0x0000, 0x0011, 0x001b, 0x002b, + 0xffff, 0x003f, 0x004d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x005f, 0x0071, 0x0106, 0x0087, 0x009c, 0x00a9, 0xffff, 0x00cd, + // Entry 22140 - 2217F + 0x0001, 0x01f7, 0x0002, 0x01fa, 0x022e, 0x0003, 0x01fe, 0x020e, + 0x021e, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, + 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, + 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, + 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, + 0x0481, 0x0003, 0x0232, 0x0242, 0x0252, 0x000e, 0x0000, 0xffff, + // Entry 22180 - 221BF + 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, + 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, + 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, + 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x026b, 0x0000, 0x027c, 0x0004, 0x0279, + 0x0273, 0x0270, 0x0276, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, + // Entry 221C0 - 221FF + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x001c, 0x14e1, 0x0004, + 0x028a, 0x0284, 0x0281, 0x0287, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0296, 0x02fb, 0x0352, 0x0387, 0x0458, 0x0478, 0x0489, + 0x049a, 0x0002, 0x0299, 0x02ca, 0x0003, 0x029d, 0x02ac, 0x02bb, + 0x000d, 0x0005, 0xffff, 0x0636, 0x2242, 0x221a, 0x2246, 0x224a, + 0x224e, 0x210e, 0x2252, 0x2256, 0x2236, 0x21de, 0x21e2, 0x000d, + 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, + // Entry 22200 - 2223F + 0x2483, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0005, + 0xffff, 0x0666, 0x066e, 0x225a, 0x2260, 0x224a, 0x2266, 0x226b, + 0x2270, 0x2278, 0x2282, 0x228a, 0x2293, 0x0003, 0x02ce, 0x02dd, + 0x02ec, 0x000d, 0x0005, 0xffff, 0x0636, 0x2242, 0x221a, 0x2246, + 0x224a, 0x224e, 0x210e, 0x2252, 0x2256, 0x2236, 0x21de, 0x21e2, + 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, + 0x2483, 0x2483, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, + 0x0005, 0xffff, 0x0666, 0x066e, 0x225a, 0x2260, 0x224a, 0x2266, + // Entry 22240 - 2227F + 0x226b, 0x2270, 0x2278, 0x2282, 0x228a, 0x2293, 0x0002, 0x02fe, + 0x0328, 0x0005, 0x0304, 0x030d, 0x031f, 0x0000, 0x0316, 0x0007, + 0x0032, 0x0112, 0x0116, 0x011a, 0x011e, 0x0122, 0x0126, 0x012a, + 0x0007, 0x0000, 0x247f, 0x2481, 0x2481, 0x223e, 0x25bc, 0x2483, + 0x2481, 0x0007, 0x0032, 0x0112, 0x0116, 0x011a, 0x011e, 0x0122, + 0x0126, 0x012a, 0x0007, 0x0032, 0x012e, 0x0135, 0x013b, 0x0142, + 0x0147, 0x014d, 0x0153, 0x0005, 0x032e, 0x0337, 0x0349, 0x0000, + 0x0340, 0x0007, 0x0032, 0x0112, 0x0116, 0x011a, 0x011e, 0x0122, + // Entry 22280 - 222BF + 0x0126, 0x012a, 0x0007, 0x0000, 0x247f, 0x2481, 0x2481, 0x223e, + 0x25bc, 0x2483, 0x2481, 0x0007, 0x0032, 0x0112, 0x0116, 0x011a, + 0x011e, 0x0122, 0x0126, 0x012a, 0x0007, 0x0032, 0x012e, 0x0135, + 0x013b, 0x0142, 0x0147, 0x014d, 0x0153, 0x0002, 0x0355, 0x036e, + 0x0003, 0x0359, 0x0360, 0x0367, 0x0005, 0x0000, 0xffff, 0x1f17, + 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0032, 0xffff, 0x0159, 0x0166, 0x0173, + 0x0180, 0x0003, 0x0372, 0x0379, 0x0380, 0x0005, 0x0000, 0xffff, + // Entry 222C0 - 222FF + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0032, 0xffff, 0x0159, 0x0166, + 0x0173, 0x0180, 0x0002, 0x038a, 0x03f1, 0x0003, 0x038e, 0x03af, + 0x03d0, 0x0008, 0x039a, 0x03a0, 0x0397, 0x03a3, 0x03a6, 0x03a9, + 0x03ac, 0x039d, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0032, + 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, 0x0001, + 0x0032, 0x01b6, 0x0008, 0x03bb, 0x03c1, 0x03b8, 0x03c4, 0x03c7, + // Entry 22300 - 2233F + 0x03ca, 0x03cd, 0x03be, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0032, 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, + 0x0001, 0x0032, 0x01b6, 0x0008, 0x03dc, 0x03e2, 0x03d9, 0x03e5, + 0x03e8, 0x03eb, 0x03ee, 0x03df, 0x0001, 0x0032, 0x018d, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, + 0x01b1, 0x0001, 0x0032, 0x01b6, 0x0003, 0x03f5, 0x0416, 0x0437, + // Entry 22340 - 2237F + 0x0008, 0x0401, 0x0407, 0x03fe, 0x040a, 0x040d, 0x0410, 0x0413, + 0x0404, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0032, 0x01a6, + 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, 0x0001, 0x0032, + 0x01b6, 0x0008, 0x0422, 0x0428, 0x041f, 0x042b, 0x042e, 0x0431, + 0x0434, 0x0425, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0032, + 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, 0x0001, + // Entry 22380 - 223BF + 0x0032, 0x01b6, 0x0008, 0x0443, 0x0449, 0x0440, 0x044c, 0x044f, + 0x0452, 0x0455, 0x0446, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0032, 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, + 0x0001, 0x0032, 0x01b6, 0x0003, 0x0467, 0x0472, 0x045c, 0x0002, + 0x045f, 0x0463, 0x0002, 0x0032, 0x01bc, 0x01dc, 0x0002, 0x0032, + 0x01cb, 0x01e3, 0x0002, 0x046a, 0x046e, 0x0002, 0x0032, 0x01ec, + 0x01f3, 0x0002, 0x0032, 0x01ef, 0x01f5, 0x0001, 0x0474, 0x0002, + // Entry 223C0 - 223FF + 0x0032, 0x01ec, 0x01f3, 0x0004, 0x0486, 0x0480, 0x047d, 0x0483, + 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0014, 0x146e, 0x0004, 0x0497, 0x0491, 0x048e, + 0x0494, 0x0001, 0x0015, 0x0210, 0x0001, 0x0015, 0x021e, 0x0001, + 0x0015, 0x0229, 0x0001, 0x0015, 0x0232, 0x0004, 0x04a8, 0x04a2, + 0x049f, 0x04a5, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x04b1, + 0x0000, 0x0000, 0x0000, 0x051c, 0x0002, 0x04b4, 0x04e8, 0x0003, + // Entry 22400 - 2243F + 0x04b8, 0x04c8, 0x04d8, 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, + 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, + 0x260b, 0x2611, 0x2614, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, + 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, + 0x260b, 0x2611, 0x2614, 0x0003, 0x04ec, 0x04fc, 0x050c, 0x000e, + 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, + // Entry 22440 - 2247F + 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, 0x000e, + 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, + 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, + 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, 0x0001, + 0x051e, 0x0001, 0x0520, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0529, + 0x0000, 0x0000, 0x0000, 0x058e, 0x0002, 0x052c, 0x055d, 0x0003, + 0x0530, 0x053f, 0x054e, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, + // Entry 22480 - 224BF + 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, + 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, + 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, + 0x0003, 0x0561, 0x0570, 0x057f, 0x000d, 0x0000, 0xffff, 0x05a2, + 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, + 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 224C0 - 224FF + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, + 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, + 0x05f8, 0x0001, 0x0590, 0x0001, 0x0592, 0x0001, 0x0025, 0x05c0, + 0x0008, 0x059e, 0x0000, 0x0000, 0x0000, 0x0603, 0x060a, 0x0000, + 0x9006, 0x0002, 0x05a1, 0x05d2, 0x0003, 0x05a5, 0x05b4, 0x05c3, + 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, 0x061f, + 0x0626, 0x2572, 0x0633, 0x261e, 0x2623, 0x0643, 0x064d, 0x000d, + // Entry 22500 - 2253F + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, + 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, 0x2582, + 0x262f, 0x2639, 0x2642, 0x06ab, 0x06ba, 0x0003, 0x05d6, 0x05e5, + 0x05f4, 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, + 0x061f, 0x0626, 0x2572, 0x0633, 0x261e, 0x2623, 0x0643, 0x064d, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + // Entry 22540 - 2257F + 0x0000, 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, + 0x2582, 0x262f, 0x2639, 0x2642, 0x06ab, 0x06ba, 0x0001, 0x0605, + 0x0001, 0x0607, 0x0001, 0x0000, 0x06c8, 0x0004, 0x0618, 0x0612, + 0x060f, 0x0615, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0624, 0x0716, 0x0000, 0x0727, 0x0001, + 0x0626, 0x0001, 0x0628, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, + 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x23dd, + // Entry 22580 - 225BF + 0x23f1, 0x240a, 0x2424, 0x243c, 0x20d7, 0x081e, 0x20ed, 0x0843, + 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x2649, 0x265b, + 0x08ed, 0x266e, 0x0914, 0x2681, 0x093a, 0x094e, 0x095f, 0x2695, + 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x26a9, + 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x26ba, 0x0a7b, 0x0a8c, 0x0aa2, + 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, + 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, + 0x0c0b, 0x26ca, 0x0c37, 0x0c4c, 0x26dd, 0x0c74, 0x26f0, 0x0c9f, + // Entry 225C0 - 225FF + 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, 0x2707, 0x271a, 0x0d47, + 0x0d5b, 0x0d6f, 0x0d85, 0x272d, 0x0db0, 0x0dc3, 0x2740, 0x0def, + 0x0e04, 0x0e19, 0x2755, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, + 0x2769, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x277c, + 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x2793, 0x27a6, 0x0fe6, + 0x0ffd, 0x27bc, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, + 0x27d3, 0x10b8, 0x10cf, 0x10e3, 0x2122, 0x1110, 0x1124, 0x1139, + 0x114d, 0x1163, 0x1178, 0x118d, 0x27e9, 0x11ba, 0x27fc, 0x11e7, + // Entry 22600 - 2263F + 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x280f, + 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x2823, 0x1308, 0x2839, 0x1335, + 0x134b, 0x2454, 0x1374, 0x1388, 0x139e, 0x13b4, 0xffff, 0x13e0, + 0x13f4, 0x140b, 0xffff, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, + 0x149c, 0x14b3, 0x14c8, 0x284e, 0xffff, 0x150b, 0x1522, 0x1538, + 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, + 0x15f8, 0x160d, 0x1621, 0x2861, 0x164d, 0x1661, 0x1676, 0x168a, + 0x16a0, 0x16b6, 0x2876, 0x288a, 0x16f7, 0x170c, 0x289d, 0x28b2, + // Entry 22640 - 2267F + 0x174a, 0x175e, 0x1773, 0x28c9, 0x179b, 0x17b1, 0x17c7, 0x17db, + 0x17f2, 0x1808, 0x181d, 0x1832, 0x28dd, 0x2468, 0x1874, 0x28f0, + 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, + 0x1942, 0x2902, 0x196d, 0x1983, 0x1997, 0x2915, 0x291b, 0x2923, + 0x292a, 0x0004, 0x0724, 0x071e, 0x071b, 0x0721, 0x0001, 0x0010, + 0x0003, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0000, 0x236f, 0x0004, 0x0735, 0x072f, 0x072c, 0x0732, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 22680 - 226BF + 0x0001, 0x0000, 0x03c6, 0x0005, 0x073e, 0x0000, 0x0000, 0x0000, + 0x07a3, 0x0002, 0x0741, 0x0772, 0x0003, 0x0745, 0x0754, 0x0763, + 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, + 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, + 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, + 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, 0x0776, 0x0785, + // Entry 226C0 - 226FF + 0x0794, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, + 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, + 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0001, 0x07a5, + 0x0001, 0x07a7, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x07b3, 0x07bb, 0x0000, 0x9006, 0x0001, 0x07b5, + // Entry 22700 - 2273F + 0x0001, 0x07b7, 0x0002, 0x0032, 0x01f8, 0x0207, 0x0004, 0x07c9, + 0x07c3, 0x07c0, 0x07c6, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0040, + 0x080d, 0x0000, 0x0000, 0x0812, 0x0827, 0x0837, 0x0847, 0x085c, + 0x086c, 0x087c, 0x0891, 0x08a1, 0x08b1, 0x08ca, 0x08de, 0x0000, + 0x0000, 0x0000, 0x08f2, 0x0909, 0x0919, 0x0000, 0x0000, 0x0000, + 0x0929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x092e, 0x0940, + 0x0952, 0x0964, 0x0976, 0x0988, 0x099a, 0x09ac, 0x09be, 0x09d0, + // Entry 22740 - 2277F + 0x09e2, 0x09f4, 0x0a06, 0x0a18, 0x0a2a, 0x0a3c, 0x0a4e, 0x0a60, + 0x0a72, 0x0a84, 0x0a96, 0x0000, 0x0aa8, 0x0000, 0x0aad, 0x0ac1, + 0x0ad1, 0x0ae1, 0x0af5, 0x0b05, 0x0b15, 0x0b29, 0x0b39, 0x0b49, + 0x0001, 0x080f, 0x0001, 0x0000, 0x1a35, 0x0003, 0x0816, 0x0819, + 0x081e, 0x0001, 0x0032, 0x020e, 0x0003, 0x0032, 0x0214, 0x021f, + 0x0229, 0x0002, 0x0821, 0x0824, 0x0001, 0x0032, 0x0235, 0x0001, + 0x0032, 0x0245, 0x0003, 0x082b, 0x0000, 0x082e, 0x0001, 0x0032, + 0x0259, 0x0002, 0x0831, 0x0834, 0x0001, 0x0032, 0x025e, 0x0001, + // Entry 22780 - 227BF + 0x0032, 0x026a, 0x0003, 0x083b, 0x0000, 0x083e, 0x0001, 0x0032, + 0x0259, 0x0002, 0x0841, 0x0844, 0x0001, 0x0032, 0x0277, 0x0001, + 0x0032, 0x0280, 0x0003, 0x084b, 0x084e, 0x0853, 0x0001, 0x0032, + 0x0289, 0x0003, 0x0032, 0x0291, 0x029e, 0x02aa, 0x0002, 0x0856, + 0x0859, 0x0001, 0x0032, 0x02bd, 0x0001, 0x0032, 0x02cf, 0x0003, + 0x0860, 0x0000, 0x0863, 0x0001, 0x0032, 0x02e5, 0x0002, 0x0866, + 0x0869, 0x0001, 0x0032, 0x02eb, 0x0001, 0x0032, 0x02f9, 0x0003, + 0x0870, 0x0000, 0x0873, 0x0001, 0x0032, 0x02e5, 0x0002, 0x0876, + // Entry 227C0 - 227FF + 0x0879, 0x0001, 0x0032, 0x0308, 0x0001, 0x0032, 0x0313, 0x0003, + 0x0880, 0x0883, 0x0888, 0x0001, 0x0032, 0x031e, 0x0003, 0x0032, + 0x0324, 0x032f, 0x0339, 0x0002, 0x088b, 0x088e, 0x0001, 0x0032, + 0x034a, 0x0001, 0x0032, 0x035a, 0x0003, 0x0895, 0x0000, 0x0898, + 0x0001, 0x0032, 0x036e, 0x0002, 0x089b, 0x089e, 0x0001, 0x0032, + 0x0373, 0x0001, 0x0032, 0x037f, 0x0003, 0x08a5, 0x0000, 0x08a8, + 0x0001, 0x0032, 0x036e, 0x0002, 0x08ab, 0x08ae, 0x0001, 0x0032, + 0x038c, 0x0001, 0x0032, 0x0396, 0x0004, 0x08b6, 0x08b9, 0x08be, + // Entry 22800 - 2283F + 0x08c7, 0x0001, 0x0032, 0x012e, 0x0003, 0x0032, 0x03a0, 0x03ac, + 0x03b7, 0x0002, 0x08c1, 0x08c4, 0x0001, 0x0032, 0x03c4, 0x0001, + 0x0032, 0x03d5, 0x0001, 0x0032, 0x03ea, 0x0004, 0x08cf, 0x0000, + 0x08d2, 0x08db, 0x0001, 0x0032, 0x03f8, 0x0002, 0x08d5, 0x08d8, + 0x0001, 0x0032, 0x03fd, 0x0001, 0x0032, 0x0409, 0x0001, 0x0032, + 0x0416, 0x0004, 0x08e3, 0x0000, 0x08e6, 0x08ef, 0x0001, 0x0032, + 0x03f8, 0x0002, 0x08e9, 0x08ec, 0x0001, 0x0032, 0x0421, 0x0001, + 0x0032, 0x042b, 0x0001, 0x0032, 0x0435, 0x0003, 0x08f6, 0x08f9, + // Entry 22840 - 2287F + 0x0900, 0x0001, 0x0032, 0x043d, 0x0005, 0x0032, 0x044f, 0x0457, + 0x0460, 0x0442, 0x0466, 0x0002, 0x0903, 0x0906, 0x0001, 0x0032, + 0x046b, 0x0001, 0x0032, 0x047a, 0x0003, 0x090d, 0x0000, 0x0910, + 0x0001, 0x0000, 0x2143, 0x0002, 0x0913, 0x0916, 0x0001, 0x0032, + 0x048d, 0x0001, 0x0032, 0x0499, 0x0003, 0x091d, 0x0000, 0x0920, + 0x0001, 0x0000, 0x2143, 0x0002, 0x0923, 0x0926, 0x0001, 0x0000, + 0x1d76, 0x0001, 0x0000, 0x1d7d, 0x0001, 0x092b, 0x0001, 0x0032, + 0x04a4, 0x0003, 0x0000, 0x0932, 0x0937, 0x0003, 0x0032, 0x04b8, + // Entry 22880 - 228BF + 0x04c9, 0x04d9, 0x0002, 0x093a, 0x093d, 0x0001, 0x0032, 0x04f0, + 0x0001, 0x0032, 0x0506, 0x0003, 0x0000, 0x0944, 0x0949, 0x0003, + 0x0032, 0x0520, 0x052a, 0x0533, 0x0002, 0x094c, 0x094f, 0x0001, + 0x0032, 0x0543, 0x0001, 0x0032, 0x0550, 0x0003, 0x0000, 0x0956, + 0x095b, 0x0003, 0x0032, 0x0520, 0x052a, 0x0533, 0x0002, 0x095e, + 0x0961, 0x0001, 0x0032, 0x055e, 0x0001, 0x0032, 0x0568, 0x0003, + 0x0000, 0x0968, 0x096d, 0x0003, 0x0032, 0x0572, 0x057d, 0x0587, + 0x0002, 0x0970, 0x0973, 0x0001, 0x0032, 0x0598, 0x0001, 0x0032, + // Entry 228C0 - 228FF + 0x05a8, 0x0003, 0x0000, 0x097a, 0x097f, 0x0003, 0x0032, 0x05b7, + 0x05c1, 0x05ca, 0x0002, 0x0982, 0x0985, 0x0001, 0x0032, 0x05da, + 0x0001, 0x0032, 0x05e7, 0x0003, 0x0000, 0x098c, 0x0991, 0x0003, + 0x0032, 0x05b7, 0x05c1, 0x05ca, 0x0002, 0x0994, 0x0997, 0x0001, + 0x0032, 0x05f5, 0x0001, 0x0032, 0x05ff, 0x0003, 0x0000, 0x099e, + 0x09a3, 0x0003, 0x0032, 0x0609, 0x0615, 0x0620, 0x0002, 0x09a6, + 0x09a9, 0x0001, 0x0032, 0x0632, 0x0001, 0x0032, 0x0643, 0x0003, + 0x0000, 0x09b0, 0x09b5, 0x0003, 0x0032, 0x0653, 0x065d, 0x0666, + // Entry 22900 - 2293F + 0x0002, 0x09b8, 0x09bb, 0x0001, 0x0032, 0x0676, 0x0001, 0x0032, + 0x0683, 0x0003, 0x0000, 0x09c2, 0x09c7, 0x0003, 0x0032, 0x0653, + 0x065d, 0x0666, 0x0002, 0x09ca, 0x09cd, 0x0001, 0x0032, 0x0691, + 0x0001, 0x0032, 0x069b, 0x0003, 0x0000, 0x09d4, 0x09d9, 0x0003, + 0x0032, 0x06a5, 0x06af, 0x06b8, 0x0002, 0x09dc, 0x09df, 0x0001, + 0x0032, 0x06c8, 0x0001, 0x0032, 0x06d7, 0x0003, 0x0000, 0x09e6, + 0x09eb, 0x0003, 0x0032, 0x06e5, 0x06ef, 0x06f8, 0x0002, 0x09ee, + 0x09f1, 0x0001, 0x0032, 0x0708, 0x0001, 0x0032, 0x0715, 0x0003, + // Entry 22940 - 2297F + 0x0000, 0x09f8, 0x09fd, 0x0003, 0x0032, 0x06e5, 0x06ef, 0x06f8, + 0x0002, 0x0a00, 0x0a03, 0x0001, 0x0032, 0x0723, 0x0001, 0x0032, + 0x072d, 0x0003, 0x0000, 0x0a0a, 0x0a0f, 0x0003, 0x0032, 0x0737, + 0x0742, 0x074c, 0x0002, 0x0a12, 0x0a15, 0x0001, 0x0032, 0x075d, + 0x0001, 0x0032, 0x076d, 0x0003, 0x0000, 0x0a1c, 0x0a21, 0x0003, + 0x0032, 0x077c, 0x0786, 0x078f, 0x0002, 0x0a24, 0x0a27, 0x0001, + 0x0032, 0x079f, 0x0001, 0x0032, 0x07ac, 0x0003, 0x0000, 0x0a2e, + 0x0a33, 0x0003, 0x0032, 0x077c, 0x0786, 0x078f, 0x0002, 0x0a36, + // Entry 22980 - 229BF + 0x0a39, 0x0001, 0x0032, 0x07ba, 0x0001, 0x0032, 0x07c4, 0x0003, + 0x0000, 0x0a40, 0x0a45, 0x0003, 0x0032, 0x07ce, 0x07d9, 0x07e3, + 0x0002, 0x0a48, 0x0a4b, 0x0001, 0x0032, 0x07f4, 0x0001, 0x0032, + 0x0804, 0x0003, 0x0000, 0x0a52, 0x0a57, 0x0003, 0x0032, 0x0813, + 0x081d, 0x0826, 0x0002, 0x0a5a, 0x0a5d, 0x0001, 0x0032, 0x0836, + 0x0001, 0x0032, 0x0843, 0x0003, 0x0000, 0x0a64, 0x0a69, 0x0003, + 0x0032, 0x0813, 0x081d, 0x0826, 0x0002, 0x0a6c, 0x0a6f, 0x0001, + 0x0032, 0x0851, 0x0001, 0x0032, 0x085b, 0x0003, 0x0000, 0x0a76, + // Entry 229C0 - 229FF + 0x0a7b, 0x0003, 0x0032, 0x0865, 0x0870, 0x087a, 0x0002, 0x0a7e, + 0x0a81, 0x0001, 0x0032, 0x088b, 0x0001, 0x0032, 0x089b, 0x0003, + 0x0000, 0x0a88, 0x0a8d, 0x0003, 0x0032, 0x08aa, 0x08b4, 0x08bd, + 0x0002, 0x0a90, 0x0a93, 0x0001, 0x0032, 0x08cd, 0x0001, 0x0032, + 0x08da, 0x0003, 0x0000, 0x0a9a, 0x0a9f, 0x0003, 0x0032, 0x08aa, + 0x08b4, 0x08bd, 0x0002, 0x0aa2, 0x0aa5, 0x0001, 0x0032, 0x08e8, + 0x0001, 0x0032, 0x08f2, 0x0001, 0x0aaa, 0x0001, 0x0007, 0x07cc, + 0x0003, 0x0ab1, 0x0ab4, 0x0ab8, 0x0001, 0x0032, 0x08fc, 0x0002, + // Entry 22A00 - 22A3F + 0x0032, 0xffff, 0x0900, 0x0002, 0x0abb, 0x0abe, 0x0001, 0x0032, + 0x0908, 0x0001, 0x0032, 0x0916, 0x0003, 0x0ac5, 0x0000, 0x0ac8, + 0x0001, 0x0032, 0x0928, 0x0002, 0x0acb, 0x0ace, 0x0001, 0x0032, + 0x0908, 0x0001, 0x0032, 0x092c, 0x0003, 0x0ad5, 0x0000, 0x0ad8, + 0x0001, 0x0000, 0x214a, 0x0002, 0x0adb, 0x0ade, 0x0001, 0x0032, + 0x0939, 0x0001, 0x0032, 0x0942, 0x0003, 0x0ae5, 0x0ae8, 0x0aec, + 0x0001, 0x0032, 0x094b, 0x0002, 0x0032, 0xffff, 0x0951, 0x0002, + 0x0aef, 0x0af2, 0x0001, 0x0032, 0x095b, 0x0001, 0x0032, 0x096b, + // Entry 22A40 - 22A7F + 0x0003, 0x0af9, 0x0000, 0x0afc, 0x0001, 0x0032, 0x097f, 0x0002, + 0x0aff, 0x0b02, 0x0001, 0x0032, 0x0984, 0x0001, 0x0032, 0x0990, + 0x0003, 0x0b09, 0x0000, 0x0b0c, 0x0001, 0x0000, 0x1f9a, 0x0002, + 0x0b0f, 0x0b12, 0x0001, 0x0032, 0x099d, 0x0001, 0x0032, 0x09a6, + 0x0003, 0x0b19, 0x0b1c, 0x0b20, 0x0001, 0x0032, 0x09af, 0x0002, + 0x0032, 0xffff, 0x09b5, 0x0002, 0x0b23, 0x0b26, 0x0001, 0x0032, + 0x09be, 0x0001, 0x0032, 0x09ce, 0x0003, 0x0b2d, 0x0000, 0x0b30, + 0x0001, 0x0032, 0x09e2, 0x0002, 0x0b33, 0x0b36, 0x0001, 0x0032, + // Entry 22A80 - 22ABF + 0x09e7, 0x0001, 0x0032, 0x09f3, 0x0003, 0x0b3d, 0x0000, 0x0b40, + 0x0001, 0x0000, 0x2008, 0x0002, 0x0b43, 0x0b46, 0x0001, 0x0032, + 0x0a00, 0x0001, 0x0032, 0x0a09, 0x0001, 0x0b4b, 0x0001, 0x0032, + 0x0a12, 0x0004, 0x0b53, 0x0b58, 0x0b5d, 0x0b6c, 0x0003, 0x0008, + 0x1d98, 0x4f1f, 0x4f26, 0x0003, 0x0032, 0x0a1d, 0x0a27, 0x0a3d, + 0x0002, 0x0000, 0x0b60, 0x0003, 0x0000, 0x0b67, 0x0b64, 0x0001, + 0x0032, 0x0a4f, 0x0003, 0x0032, 0xffff, 0x0a6d, 0x0a87, 0x0002, + 0x0d53, 0x0b6f, 0x0003, 0x0b73, 0x0cb3, 0x0c13, 0x009e, 0x0032, + // Entry 22AC0 - 22AFF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0b28, 0x0b75, 0x0beb, 0x0c26, + 0x0c61, 0x0c99, 0x0ce0, 0x0d1e, 0x0d59, 0x0e01, 0x0e36, 0x0e7a, + 0x0ee5, 0x0f23, 0x0f64, 0x0fbd, 0x1028, 0x107e, 0x10d4, 0x111b, + 0x1156, 0xffff, 0xffff, 0x11b8, 0xffff, 0x120b, 0xffff, 0x127e, + 0x12bc, 0x12f1, 0x1332, 0xffff, 0xffff, 0x13a1, 0x13e2, 0x142d, + 0xffff, 0xffff, 0xffff, 0x1499, 0xffff, 0x14f4, 0x1541, 0xffff, + 0x15a2, 0x15ec, 0x164b, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e0, + 0xffff, 0xffff, 0x1745, 0x179b, 0xffff, 0xffff, 0x181d, 0x1873, + // Entry 22B00 - 22B3F + 0x18b7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x196e, + 0x19a3, 0x19e1, 0x1a1c, 0x1a57, 0xffff, 0xffff, 0x1af6, 0xffff, + 0x1b3b, 0xffff, 0xffff, 0x1bb1, 0xffff, 0x1c47, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1cc7, 0xffff, 0x1d18, 0x1d77, 0x1dcd, 0x1e14, + 0xffff, 0xffff, 0xffff, 0x1e75, 0x1ec8, 0x1f18, 0xffff, 0xffff, + 0x1f88, 0x2003, 0x204d, 0x2082, 0xffff, 0xffff, 0x20e2, 0x2123, + 0x2158, 0xffff, 0x21b1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x22b1, 0x22f2, 0x232d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 22B40 - 22B7F + 0xffff, 0xffff, 0x23e4, 0xffff, 0xffff, 0x243e, 0xffff, 0x2482, + 0xffff, 0x24dc, 0x251a, 0x2561, 0xffff, 0x25af, 0x25f9, 0xffff, + 0xffff, 0xffff, 0x2677, 0x26b5, 0xffff, 0xffff, 0x0a9e, 0x0bb0, + 0x0d8e, 0x0dc6, 0xffff, 0xffff, 0x1bf5, 0x2251, 0x009e, 0x0032, + 0x0ad3, 0x0ae4, 0x0af8, 0x0b0b, 0x0b3b, 0x0b82, 0x0bf8, 0x0c33, + 0x0c6d, 0x0caa, 0x0cee, 0x0d2b, 0x0d64, 0x0e0c, 0x0e46, 0x0e97, + 0x0ef3, 0x0f32, 0x0f7b, 0x0fda, 0x103e, 0x1094, 0x10e5, 0x1128, + 0x1167, 0x119d, 0x11aa, 0x11c5, 0x11f3, 0x121f, 0x1267, 0x128c, + // Entry 22B80 - 22BBF + 0x12c7, 0x1300, 0x1343, 0x1379, 0x138b, 0x13b0, 0x13f2, 0x1438, + 0x1462, 0x146e, 0x1487, 0x14ac, 0x14e6, 0x1507, 0x1553, 0x158b, + 0x15b4, 0x1605, 0x1656, 0x1680, 0x1695, 0x16c2, 0x16d2, 0x16ee, + 0x171e, 0x1731, 0x175b, 0x17b1, 0x17fc, 0x1810, 0x1833, 0x1883, + 0x18c2, 0x18ec, 0x18f8, 0x190e, 0x191e, 0x193a, 0x1954, 0x1979, + 0x19b1, 0x19ee, 0x1a29, 0x1a76, 0x1ac8, 0x1adf, 0x1b02, 0x1b2e, + 0x1b4d, 0x1b85, 0x1ba1, 0x1bc1, 0x1c2d, 0x1c55, 0x1c85, 0x1c94, + 0x1ca3, 0x1cb3, 0x1cd7, 0x1d0b, 0x1d31, 0x1d8d, 0x1dde, 0x1e21, + // Entry 22BC0 - 22BFF + 0x1e4f, 0x1e5d, 0x1e69, 0x1e8a, 0x1edc, 0x1f2b, 0x1f65, 0x1f70, + 0x1fa2, 0x2015, 0x2058, 0x2091, 0x20c3, 0x20cf, 0x20f1, 0x212e, + 0x2167, 0x2199, 0x21d1, 0x2225, 0x2234, 0x2241, 0x2295, 0x22a3, + 0x22c0, 0x22ff, 0x2339, 0x2365, 0x2376, 0x238e, 0x23a6, 0x23bc, + 0x23cb, 0x23d7, 0x23f1, 0x241f, 0x2430, 0x244a, 0x2476, 0x2495, + 0x24cf, 0x24ea, 0x252b, 0x256f, 0x259f, 0x25c1, 0x2609, 0x263d, + 0x264a, 0x265f, 0x2685, 0x26c9, 0x17f1, 0x1fea, 0x0aa9, 0x0bbd, + 0x0d9a, 0x0dd3, 0x125b, 0x1b95, 0x1c01, 0x2261, 0x009e, 0x0032, + // Entry 22C00 - 22C3F + 0xffff, 0xffff, 0xffff, 0xffff, 0x0b56, 0x0b97, 0x0c0d, 0x0c48, + 0x0c81, 0x0cc3, 0x0d04, 0x0d40, 0x0d77, 0x0e1f, 0x0e5e, 0x0ebc, + 0x0f09, 0x0f49, 0x0f9a, 0x0fff, 0x105c, 0x10b2, 0x10fe, 0x113d, + 0x1180, 0xffff, 0xffff, 0x11da, 0xffff, 0x123b, 0xffff, 0x12a2, + 0x12da, 0x1317, 0x135c, 0xffff, 0xffff, 0x13c7, 0x140a, 0x144b, + 0xffff, 0xffff, 0xffff, 0x14c7, 0xffff, 0x1522, 0x156d, 0xffff, + 0x15ce, 0x1626, 0x1669, 0xffff, 0xffff, 0xffff, 0xffff, 0x1704, + 0xffff, 0xffff, 0x1779, 0x17cf, 0xffff, 0xffff, 0x1851, 0x189b, + // Entry 22C40 - 22C7F + 0x18d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x198c, + 0x19c7, 0x1a03, 0x1a3e, 0x1a9d, 0xffff, 0xffff, 0x1b16, 0xffff, + 0x1b67, 0xffff, 0xffff, 0x1bd9, 0xffff, 0x1c6b, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1cef, 0xffff, 0x1d52, 0x1dab, 0x1df7, 0x1e36, + 0xffff, 0xffff, 0xffff, 0x1ea7, 0x1ef8, 0x1f46, 0xffff, 0xffff, + 0x1fc4, 0x202f, 0x206b, 0x20a8, 0xffff, 0xffff, 0x2108, 0x2141, + 0x217e, 0xffff, 0x21f9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x22d7, 0x2314, 0x234d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 22C80 - 22CBF + 0xffff, 0xffff, 0x2406, 0xffff, 0xffff, 0x245e, 0xffff, 0x24b0, + 0xffff, 0x2500, 0x2544, 0x2585, 0xffff, 0x25db, 0x2621, 0xffff, + 0xffff, 0xffff, 0x269b, 0x26e5, 0xffff, 0xffff, 0x0abc, 0x0bd2, + 0x0dae, 0x0de8, 0xffff, 0xffff, 0x1c15, 0x2279, 0x0003, 0x0000, + 0x0000, 0x0d57, 0x0047, 0x0032, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 22CC0 - 22CFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1935, 0x1950, 0x196a, 0x0002, 0x0003, 0x01b9, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + // Entry 22D00 - 22D3F + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, + 0x04f7, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0161, 0x0186, + 0x0197, 0x01a8, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, + 0x0054, 0x000d, 0x0033, 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, + 0x0010, 0x0014, 0x0018, 0x001c, 0x0024, 0x0028, 0x002e, 0x0032, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + // Entry 22D40 - 22D7F + 0x0033, 0xffff, 0x0036, 0x0043, 0x0051, 0x005a, 0x0010, 0x0060, + 0x0065, 0x006d, 0x007a, 0x0083, 0x008c, 0x0094, 0x0003, 0x0067, + 0x0076, 0x0085, 0x000d, 0x0033, 0xffff, 0x0000, 0x0004, 0x0008, + 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0024, 0x0028, 0x002e, + 0x0032, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x000d, 0x0033, 0xffff, 0x0036, 0x0043, 0x0051, 0x005a, 0x0010, + 0x0060, 0x0065, 0x006d, 0x007a, 0x0083, 0x008c, 0x0094, 0x0002, + // Entry 22D80 - 22DBF + 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, 0x00af, + 0x0007, 0x0033, 0x009c, 0x00a2, 0x00a8, 0x00ac, 0x00b0, 0x00b8, + 0x00bf, 0x0007, 0x0000, 0x2481, 0x2931, 0x04dd, 0x2159, 0x04dd, + 0x22e6, 0x2481, 0x0007, 0x0033, 0x009c, 0x00a2, 0x00a8, 0x00ac, + 0x00b0, 0x00b8, 0x00bf, 0x0007, 0x0033, 0x00c3, 0x00d3, 0x00db, + 0x00e3, 0x00ec, 0x00f8, 0x0102, 0x0005, 0x00c7, 0x00d0, 0x00e2, + 0x0000, 0x00d9, 0x0007, 0x0033, 0x009c, 0x00a2, 0x00a8, 0x00ac, + 0x00b0, 0x00b8, 0x00bf, 0x0007, 0x0000, 0x2481, 0x2931, 0x04dd, + // Entry 22DC0 - 22DFF + 0x2159, 0x04dd, 0x22e6, 0x2481, 0x0007, 0x0033, 0x009c, 0x00a2, + 0x00a8, 0x00ac, 0x00b0, 0x00b8, 0x00bf, 0x0007, 0x0033, 0x00c3, + 0x00d3, 0x00db, 0x00e3, 0x00ec, 0x00f8, 0x0102, 0x0002, 0x00ee, + 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0033, 0xffff, + 0x010c, 0x0111, 0x0116, 0x011b, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x0120, 0x012a, + 0x0134, 0x013e, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, 0x0033, + 0xffff, 0x010c, 0x0111, 0x0116, 0x011b, 0x0005, 0x0000, 0xffff, + // Entry 22E00 - 22E3F + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x0120, + 0x012a, 0x0134, 0x013e, 0x0002, 0x0123, 0x0142, 0x0003, 0x0127, + 0x0130, 0x0139, 0x0002, 0x012a, 0x012d, 0x0001, 0x000b, 0x0a70, + 0x0001, 0x0033, 0x0148, 0x0002, 0x0133, 0x0136, 0x0001, 0x000b, + 0x0a70, 0x0001, 0x0033, 0x0148, 0x0002, 0x013c, 0x013f, 0x0001, + 0x000b, 0x0a70, 0x0001, 0x0033, 0x0148, 0x0003, 0x0146, 0x014f, + 0x0158, 0x0002, 0x0149, 0x014c, 0x0001, 0x000b, 0x0a70, 0x0001, + 0x0033, 0x0148, 0x0002, 0x0152, 0x0155, 0x0001, 0x000b, 0x0a70, + // Entry 22E40 - 22E7F + 0x0001, 0x0033, 0x0148, 0x0002, 0x015b, 0x015e, 0x0001, 0x000b, + 0x0a70, 0x0001, 0x0033, 0x0148, 0x0003, 0x0170, 0x017b, 0x0165, + 0x0002, 0x0168, 0x016c, 0x0002, 0x0033, 0x014d, 0x0159, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0173, 0x0177, 0x0002, 0x0033, + 0x0166, 0x016b, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x017e, + 0x0182, 0x0002, 0x0033, 0x0166, 0x016b, 0x0002, 0x0000, 0x04f5, + 0x04f9, 0x0004, 0x0194, 0x018e, 0x018b, 0x0191, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + // Entry 22E80 - 22EBF + 0x0002, 0x0860, 0x0004, 0x01a5, 0x019f, 0x019c, 0x01a2, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x01b6, 0x01b0, 0x01ad, 0x01b3, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x01fa, 0x0000, 0x0000, + 0x01ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0204, 0x0000, + 0x0000, 0x0209, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x020e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0219, 0x0000, 0x0000, + // Entry 22EC0 - 22EFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x021e, 0x0000, 0x0223, 0x0000, 0x0000, 0x0228, 0x0000, + 0x0000, 0x022d, 0x0000, 0x0000, 0x0232, 0x0001, 0x01fc, 0x0001, + 0x0033, 0x0170, 0x0001, 0x0201, 0x0001, 0x0033, 0x0175, 0x0001, + 0x0206, 0x0001, 0x0033, 0x017b, 0x0001, 0x020b, 0x0001, 0x0033, + 0x0182, 0x0002, 0x0211, 0x0214, 0x0001, 0x0033, 0x0186, 0x0003, + // Entry 22F00 - 22F3F + 0x0033, 0x0193, 0x019d, 0x01a3, 0x0001, 0x021b, 0x0001, 0x0033, + 0x01a8, 0x0001, 0x0220, 0x0001, 0x0033, 0x01b9, 0x0001, 0x0225, + 0x0001, 0x0033, 0x01d6, 0x0001, 0x022a, 0x0001, 0x0033, 0x01de, + 0x0001, 0x022f, 0x0001, 0x0033, 0x01e4, 0x0001, 0x0234, 0x0001, + 0x0033, 0x01ed, 0x0003, 0x0004, 0x0144, 0x01c4, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0008, + 0x0016, 0x007b, 0x00bc, 0x00f1, 0x0109, 0x0111, 0x0122, 0x0133, + 0x0002, 0x0019, 0x004a, 0x0003, 0x001d, 0x002c, 0x003b, 0x000d, + // Entry 22F40 - 22F7F + 0x0033, 0xffff, 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, 0x021d, + 0x0224, 0x022b, 0x0232, 0x0239, 0x0240, 0x024a, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0033, 0xffff, + 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, 0x022b, + 0x0232, 0x0239, 0x0240, 0x024a, 0x0003, 0x004e, 0x005d, 0x006c, + 0x000d, 0x0033, 0xffff, 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, + 0x021d, 0x0224, 0x022b, 0x0232, 0x0239, 0x0240, 0x024a, 0x000d, + // Entry 22F80 - 22FBF + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0033, + 0xffff, 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, + 0x022b, 0x0232, 0x0239, 0x0240, 0x024a, 0x0002, 0x007e, 0x009d, + 0x0003, 0x0082, 0x008b, 0x0094, 0x0007, 0x0033, 0x0254, 0x025b, + 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0007, 0x0033, 0x0285, + 0x0289, 0x028d, 0x0291, 0x0295, 0x0299, 0x029d, 0x0007, 0x0033, + 0x02a1, 0x02ab, 0x02b5, 0x02bf, 0x02c9, 0x02d3, 0x02dd, 0x0003, + // Entry 22FC0 - 22FFF + 0x00a1, 0x00aa, 0x00b3, 0x0007, 0x0033, 0x0254, 0x025b, 0x0262, + 0x0269, 0x0270, 0x0277, 0x027e, 0x0007, 0x0033, 0x0285, 0x0289, + 0x028d, 0x0291, 0x0295, 0x0299, 0x029d, 0x0007, 0x0033, 0x02a1, + 0x02ab, 0x02b5, 0x02bf, 0x02c9, 0x02d3, 0x02dd, 0x0002, 0x00bf, + 0x00d8, 0x0003, 0x00c3, 0x00ca, 0x00d1, 0x0005, 0x0033, 0xffff, + 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x02e7, 0x02ee, + 0x02f5, 0x02fc, 0x0003, 0x00dc, 0x00e3, 0x00ea, 0x0005, 0x0033, + // Entry 23000 - 2303F + 0xffff, 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x02e7, + 0x02ee, 0x02f5, 0x02fc, 0x0001, 0x00f3, 0x0003, 0x00f7, 0x0000, + 0x0100, 0x0002, 0x00fa, 0x00fd, 0x0001, 0x0033, 0x0303, 0x0001, + 0x0033, 0x030a, 0x0002, 0x0103, 0x0106, 0x0001, 0x0033, 0x0303, + 0x0001, 0x0033, 0x030a, 0x0001, 0x010b, 0x0001, 0x010d, 0x0002, + 0x0033, 0x0311, 0x031b, 0x0004, 0x011f, 0x0119, 0x0116, 0x011c, + 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, + // Entry 23040 - 2307F + 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0130, 0x012a, 0x0127, + 0x012d, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, + 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0141, 0x013b, + 0x0138, 0x013e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x0185, + 0x0000, 0x0000, 0x018a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x018f, 0x0000, 0x0000, 0x0194, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0199, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a6, + // Entry 23080 - 230BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01ab, 0x0000, 0x01b0, 0x0000, 0x0000, + 0x01b5, 0x0000, 0x0000, 0x01ba, 0x0000, 0x0000, 0x01bf, 0x0001, + 0x0187, 0x0001, 0x0033, 0x0325, 0x0001, 0x018c, 0x0001, 0x0033, + 0x032c, 0x0001, 0x0191, 0x0001, 0x0033, 0x0330, 0x0001, 0x0196, + 0x0001, 0x0033, 0x0254, 0x0002, 0x019c, 0x019f, 0x0001, 0x0033, + // Entry 230C0 - 230FF + 0x028d, 0x0005, 0x0033, 0x0341, 0x034b, 0x0352, 0x0334, 0x035c, + 0x0001, 0x01a8, 0x0001, 0x0033, 0x0262, 0x0001, 0x01ad, 0x0001, + 0x0033, 0x0366, 0x0001, 0x01b2, 0x0001, 0x0033, 0x0374, 0x0001, + 0x01b7, 0x0001, 0x0033, 0x037b, 0x0001, 0x01bc, 0x0001, 0x0033, + 0x037f, 0x0001, 0x01c1, 0x0001, 0x0033, 0x0383, 0x0004, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0003, 0x0004, 0x025b, 0x055d, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + // Entry 23100 - 2313F + 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0013, + 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, 0x0001, + 0x0008, 0x062f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + 0x0015, 0x0238, 0x0001, 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, + 0x0203, 0x0228, 0x0239, 0x024a, 0x0002, 0x0044, 0x0075, 0x0003, + 0x0048, 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, 0x000b, 0x23dd, + 0x241d, 0x001a, 0x2422, 0x2405, 0x240b, 0x2427, 0x238d, 0x0037, + // Entry 23140 - 2317F + 0x242e, 0x2397, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x2931, + 0x2382, 0x2931, 0x2483, 0x2483, 0x25b6, 0x2481, 0x22ec, 0x22ee, + 0x22f0, 0x000d, 0x0033, 0xffff, 0x0390, 0x0398, 0x03a1, 0x03a6, + 0x03ad, 0x03b2, 0x03b9, 0x03c0, 0x03c8, 0x03d2, 0x03db, 0x03e5, + 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0015, 0xffff, 0x000b, + 0x23dd, 0x241d, 0x001a, 0x2434, 0x2405, 0x240b, 0x2427, 0x238d, + 0x0037, 0x242e, 0x2397, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, + 0x2931, 0x2382, 0x2931, 0x2483, 0x2483, 0x25b6, 0x2481, 0x22ec, + // Entry 23180 - 231BF + 0x22ee, 0x22f0, 0x000d, 0x0033, 0xffff, 0x0390, 0x0398, 0x03a1, + 0x03a6, 0x03ee, 0x03b2, 0x03b9, 0x03c0, 0x03c8, 0x03d2, 0x03db, + 0x03e5, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, + 0x0000, 0x00c1, 0x0007, 0x0024, 0x0013, 0x0018, 0x2676, 0x267c, + 0x2682, 0x2687, 0x268d, 0x0007, 0x0000, 0x2481, 0x2931, 0x2933, + 0x2931, 0x22e6, 0x22e6, 0x228e, 0x0007, 0x0024, 0x003a, 0x003e, + 0x2692, 0x0048, 0x2697, 0x269b, 0x26a0, 0x0007, 0x0024, 0x0059, + 0x26a4, 0x26af, 0x26bd, 0x26cb, 0x26d7, 0x26e3, 0x0005, 0x00d9, + // Entry 231C0 - 231FF + 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0024, 0x0013, 0x0018, + 0x2676, 0x267c, 0x2682, 0x2687, 0x268d, 0x0007, 0x0000, 0x2481, + 0x2931, 0x2933, 0x2931, 0x22e6, 0x22e6, 0x228e, 0x0007, 0x0024, + 0x003a, 0x003e, 0x2692, 0x0048, 0x2697, 0x269b, 0x26a0, 0x0007, + 0x0024, 0x0059, 0x26a4, 0x26af, 0x26bd, 0x26cb, 0x26d7, 0x26e3, + 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, + 0x0033, 0xffff, 0x03f3, 0x03f6, 0x03f9, 0x03fc, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, + // Entry 23200 - 2323F + 0x03ff, 0x040f, 0x041f, 0x042f, 0x0003, 0x011d, 0x0124, 0x012b, + 0x0005, 0x0033, 0xffff, 0x03f3, 0x03f6, 0x03f9, 0x03fc, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, + 0xffff, 0x03ff, 0x040f, 0x041f, 0x042f, 0x0002, 0x0135, 0x019c, + 0x0003, 0x0139, 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, + 0x014e, 0x0151, 0x0154, 0x0157, 0x0148, 0x0001, 0x0033, 0x043f, + 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x044b, 0x0001, 0x0033, + 0x0451, 0x0001, 0x0033, 0x0456, 0x0001, 0x0033, 0x0461, 0x0001, + // Entry 23240 - 2327F + 0x0033, 0x0469, 0x0001, 0x0033, 0x0471, 0x0008, 0x0166, 0x016c, + 0x0163, 0x016f, 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x0033, + 0x047c, 0x0001, 0x0029, 0x007d, 0x0001, 0x0006, 0x041e, 0x0001, + 0x0033, 0x0480, 0x0001, 0x0033, 0x0483, 0x0001, 0x0033, 0x0488, + 0x0001, 0x000d, 0x043e, 0x0001, 0x0029, 0x008c, 0x0008, 0x0187, + 0x018d, 0x0184, 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, + 0x0033, 0x048c, 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x0497, + 0x0001, 0x0033, 0x0451, 0x0001, 0x0033, 0x0456, 0x0001, 0x0033, + // Entry 23280 - 232BF + 0x049f, 0x0001, 0x0033, 0x04aa, 0x0001, 0x0033, 0x0471, 0x0003, + 0x01a0, 0x01c1, 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, + 0x01b8, 0x01bb, 0x01be, 0x01af, 0x0001, 0x0033, 0x043f, 0x0001, + 0x0033, 0x0446, 0x0001, 0x0033, 0x044b, 0x0001, 0x0033, 0x0451, + 0x0001, 0x0033, 0x04b6, 0x0001, 0x0033, 0x0461, 0x0001, 0x000d, + 0x043e, 0x0001, 0x0033, 0x04bc, 0x0008, 0x01cd, 0x01d3, 0x01ca, + 0x01d6, 0x01d9, 0x01dc, 0x01df, 0x01d0, 0x0001, 0x0033, 0x047c, + 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x04c2, 0x0001, 0x0033, + // Entry 232C0 - 232FF + 0x0451, 0x0001, 0x0033, 0x0483, 0x0001, 0x0033, 0x0488, 0x0001, + 0x000d, 0x043e, 0x0001, 0x0029, 0x008c, 0x0008, 0x01ee, 0x01f4, + 0x01eb, 0x01f7, 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0033, + 0x048c, 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x0497, 0x0001, + 0x0033, 0x0451, 0x0001, 0x0033, 0x04c6, 0x0001, 0x0033, 0x04ce, + 0x0001, 0x0033, 0x04dc, 0x0001, 0x0033, 0x04bc, 0x0003, 0x0212, + 0x021d, 0x0207, 0x0002, 0x020a, 0x020e, 0x0002, 0x0033, 0x04e3, + 0x0507, 0x0002, 0x0033, 0x04ef, 0x0513, 0x0002, 0x0215, 0x0219, + // Entry 23300 - 2333F + 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0033, 0x0525, 0x052c, + 0x0002, 0x0220, 0x0224, 0x0002, 0x0033, 0x0531, 0x0536, 0x0002, + 0x0015, 0x01d7, 0x01de, 0x0004, 0x0236, 0x0230, 0x022d, 0x0233, + 0x0001, 0x0016, 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, + 0x0207, 0x0001, 0x0017, 0x03cc, 0x0004, 0x0247, 0x0241, 0x023e, + 0x0244, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0258, 0x0252, + 0x024f, 0x0255, 0x0001, 0x0015, 0x0238, 0x0001, 0x0015, 0x0238, + // Entry 23340 - 2337F + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x029c, + 0x0000, 0x0000, 0x02a1, 0x02b8, 0x02cf, 0x02e6, 0x02fd, 0x0314, + 0x032b, 0x0342, 0x0359, 0x0370, 0x0387, 0x039e, 0x0000, 0x0000, + 0x0000, 0x03b5, 0x03ce, 0x03e7, 0x0000, 0x0000, 0x0000, 0x0400, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0405, 0x040d, 0x0415, + 0x041d, 0x0425, 0x042d, 0x0435, 0x043d, 0x0445, 0x044d, 0x0455, + 0x045d, 0x0465, 0x046d, 0x0475, 0x047d, 0x0485, 0x048d, 0x0495, + 0x049d, 0x04a5, 0x0000, 0x04ad, 0x0000, 0x04b2, 0x04c4, 0x04d6, + // Entry 23380 - 233BF + 0x04e8, 0x04fa, 0x050c, 0x051e, 0x0534, 0x0546, 0x0558, 0x0001, + 0x029e, 0x0001, 0x0033, 0x053b, 0x0003, 0x02a5, 0x02a8, 0x02ad, + 0x0001, 0x0024, 0x01b7, 0x0003, 0x0033, 0x0544, 0x0556, 0x0565, + 0x0002, 0x02b0, 0x02b4, 0x0002, 0x0033, 0x0574, 0x0574, 0x0002, + 0x0033, 0x0591, 0x0582, 0x0003, 0x02bc, 0x02bf, 0x02c4, 0x0001, + 0x0024, 0x01b7, 0x0003, 0x0033, 0x0544, 0x0556, 0x0565, 0x0002, + 0x02c7, 0x02cb, 0x0002, 0x0033, 0x0574, 0x0574, 0x0002, 0x0033, + 0x0591, 0x0582, 0x0003, 0x02d3, 0x02d6, 0x02db, 0x0001, 0x0024, + // Entry 233C0 - 233FF + 0x01b7, 0x0003, 0x0033, 0x0544, 0x0556, 0x0565, 0x0002, 0x02de, + 0x02e2, 0x0002, 0x0033, 0x0574, 0x0574, 0x0002, 0x0033, 0x0591, + 0x0591, 0x0003, 0x02ea, 0x02ed, 0x02f2, 0x0001, 0x0033, 0x05a1, + 0x0003, 0x0033, 0x05b2, 0x05cd, 0x05e5, 0x0002, 0x02f5, 0x02f9, + 0x0002, 0x0033, 0x0616, 0x05fd, 0x0002, 0x0033, 0x064a, 0x0630, + 0x0003, 0x0301, 0x0304, 0x0309, 0x0001, 0x0033, 0x0665, 0x0003, + 0x0033, 0x0672, 0x0684, 0x0693, 0x0002, 0x030c, 0x0310, 0x0002, + 0x0033, 0x06a2, 0x06a2, 0x0002, 0x0033, 0x06b4, 0x06b4, 0x0003, + // Entry 23400 - 2343F + 0x0318, 0x031b, 0x0320, 0x0001, 0x0024, 0x02ae, 0x0003, 0x0033, + 0x0672, 0x0684, 0x0693, 0x0002, 0x0323, 0x0327, 0x0002, 0x0033, + 0x06a2, 0x06a2, 0x0002, 0x0033, 0x06b4, 0x06b4, 0x0003, 0x032f, + 0x0332, 0x0337, 0x0001, 0x0033, 0x06c6, 0x0003, 0x0033, 0x06d0, + 0x06e6, 0x06fa, 0x0002, 0x033a, 0x033e, 0x0002, 0x0033, 0x071f, + 0x070d, 0x0002, 0x0033, 0x0745, 0x0732, 0x0003, 0x0346, 0x0349, + 0x034e, 0x0001, 0x0024, 0x0018, 0x0003, 0x0033, 0x0759, 0x076c, + 0x077d, 0x0002, 0x0351, 0x0355, 0x0002, 0x0033, 0x078d, 0x078d, + // Entry 23440 - 2347F + 0x0002, 0x0033, 0x079d, 0x079d, 0x0003, 0x035d, 0x0360, 0x0365, + 0x0001, 0x0024, 0x0018, 0x0003, 0x0033, 0x0759, 0x076c, 0x077d, + 0x0002, 0x0368, 0x036c, 0x0002, 0x0033, 0x078d, 0x078d, 0x0002, + 0x0033, 0x079d, 0x079d, 0x0003, 0x0374, 0x0377, 0x037c, 0x0001, + 0x0024, 0x0382, 0x0003, 0x0033, 0x07ad, 0x07bf, 0x07d0, 0x0002, + 0x037f, 0x0383, 0x0002, 0x0033, 0x07ee, 0x07df, 0x0002, 0x0033, + 0x080d, 0x07fe, 0x0003, 0x038b, 0x038e, 0x0393, 0x0001, 0x0024, + 0x0382, 0x0003, 0x0033, 0x07ad, 0x07bf, 0x07d0, 0x0002, 0x0396, + // Entry 23480 - 234BF + 0x039a, 0x0002, 0x0033, 0x07ee, 0x07ee, 0x0002, 0x0033, 0x080d, + 0x07fe, 0x0003, 0x03a2, 0x03a5, 0x03aa, 0x0001, 0x0029, 0x016c, + 0x0003, 0x0033, 0x07ad, 0x07bf, 0x07d0, 0x0002, 0x03ad, 0x03b1, + 0x0002, 0x0033, 0x0827, 0x081d, 0x0002, 0x0033, 0x083c, 0x0832, + 0x0003, 0x03b9, 0x03bc, 0x03c3, 0x0001, 0x0024, 0x042f, 0x0005, + 0x0033, 0x0853, 0x085b, 0x0862, 0x0847, 0x086c, 0x0002, 0x03c6, + 0x03ca, 0x0002, 0x0033, 0x0889, 0x087b, 0x0002, 0x0033, 0x08a7, + 0x0898, 0x0003, 0x03d2, 0x03d5, 0x03dc, 0x0001, 0x0024, 0x042f, + // Entry 234C0 - 234FF + 0x0005, 0x0033, 0x0853, 0x085b, 0x0862, 0x0847, 0x086c, 0x0002, + 0x03df, 0x03e3, 0x0002, 0x0033, 0x0889, 0x087b, 0x0002, 0x0033, + 0x08a7, 0x08a7, 0x0003, 0x03eb, 0x03ee, 0x03f5, 0x0001, 0x0029, + 0x008f, 0x0005, 0x0033, 0x0853, 0x085b, 0x0862, 0x0847, 0x086c, + 0x0002, 0x03f8, 0x03fc, 0x0002, 0x0033, 0x08c1, 0x08b8, 0x0002, + 0x0033, 0x08d5, 0x08cb, 0x0001, 0x0402, 0x0001, 0x0033, 0x08e1, + 0x0002, 0x0000, 0x0408, 0x0003, 0x0033, 0x08eb, 0x08fe, 0x091a, + 0x0002, 0x0000, 0x0410, 0x0003, 0x0033, 0x092a, 0x0939, 0x0945, + // Entry 23500 - 2353F + 0x0002, 0x0000, 0x0418, 0x0003, 0x0033, 0x092a, 0x0939, 0x0951, + 0x0002, 0x0000, 0x0420, 0x0003, 0x0033, 0x095a, 0x096d, 0x0989, + 0x0002, 0x0000, 0x0428, 0x0003, 0x0033, 0x0999, 0x09a9, 0x09b6, + 0x0002, 0x0000, 0x0430, 0x0003, 0x0033, 0x09c3, 0x09a9, 0x09d3, + 0x0002, 0x0000, 0x0438, 0x0003, 0x0033, 0x09dd, 0x09f3, 0x0a12, + 0x0002, 0x0000, 0x0440, 0x0003, 0x0033, 0x0a25, 0x0a35, 0x0a42, + 0x0002, 0x0000, 0x0448, 0x0003, 0x0033, 0x0a25, 0x0a35, 0x0a55, + 0x0002, 0x0000, 0x0450, 0x0003, 0x0033, 0x0a5f, 0x0a7f, 0x0a9e, + // Entry 23540 - 2357F + 0x0002, 0x0000, 0x0458, 0x0003, 0x0033, 0x0abb, 0x0acb, 0x0ad8, + 0x0002, 0x0000, 0x0460, 0x0003, 0x0033, 0x0abb, 0x0acb, 0x0aeb, + 0x0002, 0x0000, 0x0468, 0x0003, 0x0033, 0x0af5, 0x0b13, 0x0b30, + 0x0002, 0x0000, 0x0470, 0x0003, 0x0033, 0x0b4b, 0x0b5a, 0x0b66, + 0x0002, 0x0000, 0x0478, 0x0003, 0x0033, 0x0b4b, 0x0b5a, 0x0b78, + 0x0002, 0x0000, 0x0480, 0x0003, 0x0033, 0x0b81, 0x0b95, 0x0ba5, + 0x0002, 0x0000, 0x0488, 0x0003, 0x0033, 0x0bb6, 0x0bc6, 0x0bcf, + 0x0002, 0x0000, 0x0490, 0x0003, 0x0033, 0x0bb6, 0x0bc6, 0x0bcf, + // Entry 23580 - 235BF + 0x0002, 0x0000, 0x0498, 0x0003, 0x0033, 0x0bdc, 0x0bf0, 0x0c00, + 0x0002, 0x0000, 0x04a0, 0x0003, 0x0033, 0x0c11, 0x0c20, 0x0c28, + 0x0002, 0x0000, 0x04a8, 0x0003, 0x0033, 0x0c11, 0x0c20, 0x0c28, + 0x0001, 0x04af, 0x0001, 0x0033, 0x0c34, 0x0003, 0x04b6, 0x0000, + 0x04b9, 0x0001, 0x0033, 0x0c3e, 0x0002, 0x04bc, 0x04c0, 0x0002, + 0x0033, 0x0c60, 0x0c4a, 0x0002, 0x0033, 0x0c8e, 0x0c78, 0x0003, + 0x04c8, 0x0000, 0x04cb, 0x0001, 0x0033, 0x0ca6, 0x0002, 0x04ce, + 0x04d2, 0x0002, 0x0033, 0x0cac, 0x0cac, 0x0002, 0x0033, 0x0cbc, + // Entry 235C0 - 235FF + 0x0cbc, 0x0003, 0x04da, 0x0000, 0x04dd, 0x0001, 0x0033, 0x0ca6, + 0x0002, 0x04e0, 0x04e4, 0x0002, 0x0033, 0x0ccc, 0x0ccc, 0x0002, + 0x0033, 0x0cd7, 0x0cd7, 0x0003, 0x04ec, 0x0000, 0x04ef, 0x0001, + 0x0033, 0x0ce2, 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0033, 0x0cfe, + 0x0ceb, 0x0002, 0x0033, 0x0d25, 0x0d12, 0x0003, 0x04fe, 0x0000, + 0x0501, 0x0001, 0x0033, 0x0d39, 0x0002, 0x0504, 0x0508, 0x0002, + 0x0033, 0x0d3f, 0x0d3f, 0x0002, 0x0033, 0x0d4f, 0x0d4f, 0x0003, + 0x0510, 0x0000, 0x0513, 0x0001, 0x0033, 0x0d39, 0x0002, 0x0516, + // Entry 23600 - 2363F + 0x051a, 0x0002, 0x0033, 0x0d5f, 0x0d5f, 0x0002, 0x0033, 0x0d6a, + 0x0d6a, 0x0003, 0x0522, 0x0525, 0x0529, 0x0001, 0x0033, 0x0d75, + 0x0002, 0x0033, 0xffff, 0x0d7e, 0x0002, 0x052c, 0x0530, 0x0002, + 0x0033, 0x0d97, 0x0d84, 0x0002, 0x0033, 0x0dbe, 0x0dab, 0x0003, + 0x0538, 0x0000, 0x053b, 0x0001, 0x0001, 0x07d3, 0x0002, 0x053e, + 0x0542, 0x0002, 0x0033, 0x0dd2, 0x0dd2, 0x0002, 0x0033, 0x0de1, + 0x0de1, 0x0003, 0x054a, 0x0000, 0x054d, 0x0001, 0x0001, 0x07d3, + 0x0002, 0x0550, 0x0554, 0x0002, 0x0033, 0x0df0, 0x0df0, 0x0002, + // Entry 23640 - 2367F + 0x0033, 0x0dfa, 0x0dfa, 0x0001, 0x055a, 0x0001, 0x0033, 0x0e04, + 0x0004, 0x0562, 0x0567, 0x056c, 0x057b, 0x0003, 0x0000, 0x1dc7, + 0x2936, 0x293d, 0x0003, 0x0000, 0x1de0, 0x2941, 0x2952, 0x0002, + 0x0000, 0x056f, 0x0003, 0x0000, 0x0576, 0x0573, 0x0001, 0x0033, + 0x0e0f, 0x0003, 0x0033, 0xffff, 0x0e2f, 0x0e47, 0x0002, 0x0000, + 0x057e, 0x0003, 0x0618, 0x06ae, 0x0582, 0x0094, 0x0033, 0x0e5e, + 0x0e6e, 0x0e80, 0x0e94, 0x0ebc, 0x0f08, 0x0f41, 0x0fad, 0x103f, + 0x10bf, 0x1117, 0x116b, 0x11a6, 0x11dd, 0x121b, 0x1266, 0x12b6, + // Entry 23680 - 236BF + 0x1304, 0x1365, 0x13c7, 0x1436, 0x1493, 0x14e8, 0x1531, 0x1576, + 0x15aa, 0x15b6, 0x15d4, 0x1606, 0x1629, 0x166b, 0x168f, 0x16c8, + 0x16fd, 0x173b, 0x176f, 0x177f, 0x179f, 0x17e3, 0x1829, 0x1853, + 0x185f, 0x187b, 0x18a3, 0x18d7, 0x18f6, 0x1942, 0x197e, 0x19ad, + 0x19fc, 0x1a49, 0x1a81, 0x1a9c, 0x1add, 0x1aed, 0x1b09, 0x1b39, + 0x1b50, 0x1b7e, 0x1bd7, 0x1c19, 0x1c36, 0x1c5f, 0x1cb1, 0x1cee, + 0x1d16, 0x1d24, 0x1d36, 0x1d46, 0x1d5c, 0x1d74, 0x1d98, 0x1dd3, + 0x1e0f, 0x1e49, 0x1e95, 0x1ee5, 0x1eff, 0x1f25, 0x1f51, 0x1f73, + // Entry 236C0 - 236FF + 0x1fa9, 0x1fb9, 0x1fe1, 0x201d, 0x2043, 0x2071, 0x207f, 0x2091, + 0x20af, 0x20d7, 0x210b, 0x2136, 0x2199, 0x220a, 0x224c, 0x2278, + 0x2286, 0x2293, 0x22b9, 0x2314, 0x236a, 0x23a6, 0x23b1, 0x23e4, + 0x243f, 0x2485, 0x24bb, 0x24eb, 0x24f6, 0x2521, 0x255c, 0x2597, + 0x25cf, 0x2602, 0x2654, 0x2663, 0xffff, 0x2670, 0x267f, 0x269f, + 0x26df, 0x2718, 0x2744, 0x2759, 0x2768, 0x277b, 0x2790, 0x279e, + 0x27aa, 0x27c6, 0x27f2, 0x2806, 0x2820, 0x284a, 0x286a, 0x28a4, + 0x28c1, 0x2905, 0x294b, 0x297d, 0x29a2, 0x29eb, 0x2a1d, 0x2a2a, + // Entry 23700 - 2373F + 0x2a3d, 0x2a72, 0x2ab7, 0x0094, 0x0033, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0ea8, 0x0ef8, 0x0f34, 0x0f81, 0x1011, 0x10a7, 0x10fb, + 0x115b, 0x1197, 0x11d0, 0x120b, 0x124f, 0x12a8, 0x12e6, 0x134c, + 0x13a3, 0x141b, 0x1478, 0x14d5, 0x1522, 0x1565, 0xffff, 0xffff, + 0x15c5, 0xffff, 0x1613, 0xffff, 0x1681, 0x16bd, 0x16f2, 0x1727, + 0xffff, 0xffff, 0x178f, 0x17d3, 0x181e, 0xffff, 0xffff, 0xffff, + 0x1893, 0xffff, 0x18e4, 0x192e, 0xffff, 0x1999, 0x19e9, 0x1a38, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1afb, 0xffff, 0xffff, 0x1b67, + // Entry 23740 - 2377F + 0x1bc0, 0xffff, 0xffff, 0x1c44, 0x1ca1, 0x1ce3, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1d8c, 0x1dc2, 0x1e01, 0x1e3d, + 0x1e73, 0xffff, 0xffff, 0x1f19, 0xffff, 0x1f5e, 0xffff, 0xffff, + 0x1fc9, 0xffff, 0x2032, 0xffff, 0xffff, 0xffff, 0xffff, 0x20c7, + 0xffff, 0x2118, 0x217e, 0x21f5, 0x2240, 0xffff, 0xffff, 0xffff, + 0x229e, 0x22fb, 0x2352, 0xffff, 0xffff, 0x23c7, 0x242a, 0x2475, + 0x24ad, 0xffff, 0xffff, 0x2513, 0x2551, 0x2586, 0xffff, 0x25df, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x268d, 0x26cf, 0x270b, + // Entry 23780 - 237BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27b9, + 0xffff, 0xffff, 0x2815, 0xffff, 0x2856, 0xffff, 0x28b2, 0x28f3, + 0x293b, 0xffff, 0x298d, 0x29d8, 0xffff, 0xffff, 0xffff, 0x2a5f, + 0x2aa0, 0x0094, 0x0033, 0xffff, 0xffff, 0xffff, 0xffff, 0x0edb, + 0x0f1f, 0x0f62, 0x0fe0, 0x1074, 0x10de, 0x113a, 0x1182, 0x11bc, + 0x11f5, 0x1236, 0x1288, 0x12cf, 0x1329, 0x1385, 0x13f2, 0x1458, + 0x14b5, 0x1506, 0x154c, 0x1591, 0xffff, 0xffff, 0x15ee, 0xffff, + 0x164b, 0xffff, 0x16a7, 0x16de, 0x1713, 0x1756, 0xffff, 0xffff, + // Entry 237C0 - 237FF + 0x17ba, 0x17ff, 0x183f, 0xffff, 0xffff, 0xffff, 0x18be, 0xffff, + 0x1913, 0x1961, 0xffff, 0x19cc, 0x1a1b, 0x1a66, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1b22, 0xffff, 0xffff, 0x1ba0, 0x1bf9, 0xffff, + 0xffff, 0x1c81, 0x1ccb, 0x1d03, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1dae, 0x1deb, 0x1e27, 0x1e5f, 0x1ebe, 0xffff, + 0xffff, 0x1f3c, 0xffff, 0x1f8f, 0xffff, 0xffff, 0x2000, 0xffff, + 0x205b, 0xffff, 0xffff, 0xffff, 0xffff, 0x20f2, 0xffff, 0x215b, + 0x21c8, 0x2226, 0x2263, 0xffff, 0xffff, 0xffff, 0x22db, 0x2334, + // Entry 23800 - 2383F + 0x2389, 0xffff, 0xffff, 0x2408, 0x245b, 0x249a, 0x24d4, 0xffff, + 0xffff, 0x253a, 0x2572, 0x25b4, 0xffff, 0x262c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x26b8, 0x26f6, 0x272f, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27dd, 0xffff, 0xffff, + 0x2836, 0xffff, 0x2888, 0xffff, 0x28db, 0x2921, 0x2965, 0xffff, + 0x29be, 0x2a05, 0xffff, 0xffff, 0xffff, 0x2a8a, 0x2ad5, 0x0003, + 0x0004, 0x02ca, 0x06b0, 0x0012, 0x0017, 0x0024, 0x0000, 0x0000, + 0x0000, 0x0000, 0x003c, 0x0067, 0x028a, 0x0000, 0x0297, 0x0000, + // Entry 23840 - 2387F + 0x0000, 0x0000, 0x0000, 0x02a4, 0x0000, 0x02bc, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, + 0x0001, 0x0005, 0x07fd, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x002b, 0x0004, 0x0039, 0x0033, 0x0030, 0x0036, 0x0001, + 0x0025, 0x00da, 0x0001, 0x0034, 0x0000, 0x0001, 0x0034, 0x000a, + 0x0001, 0x0014, 0x146e, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0045, 0x0000, 0x0056, 0x0004, 0x0053, 0x004d, 0x004a, + 0x0050, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0000, 0x1e0b, 0x0001, + // Entry 23880 - 238BF + 0x0000, 0x1e17, 0x0001, 0x001c, 0x14e1, 0x0004, 0x0064, 0x005e, + 0x005b, 0x0061, 0x0001, 0x0034, 0x0013, 0x0001, 0x0034, 0x0013, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0070, + 0x00d5, 0x012c, 0x0161, 0x0232, 0x0257, 0x0268, 0x0279, 0x0002, + 0x0073, 0x00a4, 0x0003, 0x0077, 0x0086, 0x0095, 0x000d, 0x0005, + 0xffff, 0x1026, 0x229c, 0x21be, 0x22a0, 0x22a4, 0x22a8, 0x22ac, + 0x22b0, 0x1124, 0x22b4, 0x22b8, 0x22bc, 0x000d, 0x0000, 0xffff, + 0x2281, 0x22e6, 0x2931, 0x2382, 0x2931, 0x2281, 0x228e, 0x2382, + // Entry 238C0 - 238FF + 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0034, 0xffff, 0x0022, + 0x002a, 0x0033, 0x0039, 0x0040, 0x0047, 0x004e, 0x0055, 0x005c, + 0x0066, 0x006e, 0x0077, 0x0003, 0x00a8, 0x00b7, 0x00c6, 0x000d, + 0x0005, 0xffff, 0x1026, 0x229c, 0x21be, 0x22a0, 0x22a4, 0x22a8, + 0x22ac, 0x22b0, 0x1124, 0x22b4, 0x22b8, 0x22bc, 0x000d, 0x0000, + 0xffff, 0x2281, 0x22e6, 0x2931, 0x2382, 0x2931, 0x2281, 0x228e, + 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0034, 0xffff, + 0x0022, 0x002a, 0x0033, 0x0039, 0x0040, 0x0047, 0x004e, 0x0055, + // Entry 23900 - 2393F + 0x005c, 0x0066, 0x006e, 0x0077, 0x0002, 0x00d8, 0x0102, 0x0005, + 0x00de, 0x00e7, 0x00f9, 0x0000, 0x00f0, 0x0007, 0x0005, 0x123c, + 0x21ba, 0x21be, 0x22c0, 0x22c4, 0x22c8, 0x21ce, 0x0007, 0x0000, + 0x22f0, 0x228e, 0x2931, 0x2931, 0x2281, 0x2485, 0x2481, 0x0007, + 0x0005, 0x123c, 0x21ba, 0x21be, 0x22c0, 0x22c4, 0x22c8, 0x21ce, + 0x0007, 0x0034, 0x0080, 0x0089, 0x0091, 0x009a, 0x00a5, 0x00ae, + 0x00b7, 0x0005, 0x0108, 0x0111, 0x0123, 0x0000, 0x011a, 0x0007, + 0x0005, 0x123c, 0x21ba, 0x21be, 0x22c0, 0x22c4, 0x22c8, 0x21ce, + // Entry 23940 - 2397F + 0x0007, 0x0000, 0x22f0, 0x228e, 0x2931, 0x2931, 0x2281, 0x2485, + 0x2481, 0x0007, 0x0005, 0x123c, 0x21ba, 0x21be, 0x22c0, 0x22c4, + 0x22c8, 0x21ce, 0x0007, 0x0034, 0x0080, 0x0089, 0x0091, 0x009a, + 0x00a5, 0x00ae, 0x00b7, 0x0002, 0x012f, 0x0148, 0x0003, 0x0133, + 0x013a, 0x0141, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, + 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, 0x0003, + 0x014c, 0x0153, 0x015a, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, + // Entry 23980 - 239BF + 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, + 0x0002, 0x0164, 0x01cb, 0x0003, 0x0168, 0x0189, 0x01aa, 0x0008, + 0x0174, 0x017a, 0x0171, 0x017d, 0x0180, 0x0183, 0x0186, 0x0177, + 0x0001, 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0034, + 0x0101, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, 0x010d, 0x0001, + 0x0034, 0x0118, 0x0001, 0x0034, 0x0127, 0x0001, 0x0034, 0x012f, + 0x0008, 0x0195, 0x019b, 0x0192, 0x019e, 0x01a1, 0x01a4, 0x01a7, + // Entry 239C0 - 239FF + 0x0198, 0x0001, 0x0034, 0x00f6, 0x0001, 0x0029, 0x0080, 0x0001, + 0x0034, 0x0101, 0x0001, 0x0026, 0x0dcb, 0x0001, 0x0034, 0x0138, + 0x0001, 0x0034, 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, + 0x0150, 0x0008, 0x01b6, 0x01bc, 0x01b3, 0x01bf, 0x01c2, 0x01c5, + 0x01c8, 0x01b9, 0x0001, 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0034, 0x0101, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, + 0x010d, 0x0001, 0x0034, 0x0118, 0x0001, 0x0034, 0x0127, 0x0001, + 0x0034, 0x012f, 0x0003, 0x01cf, 0x01f0, 0x0211, 0x0008, 0x01db, + // Entry 23A00 - 23A3F + 0x01e1, 0x01d8, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01de, 0x0001, + 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0034, 0x0101, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, 0x0138, 0x0001, 0x0034, + 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, 0x0150, 0x0008, + 0x01fc, 0x0202, 0x01f9, 0x0205, 0x0208, 0x020b, 0x020e, 0x01ff, + 0x0001, 0x0034, 0x00f6, 0x0001, 0x0029, 0x0080, 0x0001, 0x0034, + 0x0101, 0x0001, 0x0026, 0x0dcb, 0x0001, 0x0034, 0x0138, 0x0001, + 0x0034, 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, 0x0150, + // Entry 23A40 - 23A7F + 0x0008, 0x021d, 0x0223, 0x021a, 0x0226, 0x0229, 0x022c, 0x022f, + 0x0220, 0x0001, 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0034, 0x0101, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, 0x0138, + 0x0001, 0x0034, 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, + 0x0150, 0x0003, 0x0241, 0x024c, 0x0236, 0x0002, 0x0239, 0x023d, + 0x0002, 0x0034, 0x0156, 0x0177, 0x0002, 0x0034, 0x0164, 0x0183, + 0x0002, 0x0244, 0x0248, 0x0002, 0x0029, 0x0269, 0x0275, 0x0002, + 0x0034, 0x018f, 0x0196, 0x0002, 0x024f, 0x0253, 0x0002, 0x0010, + // Entry 23A80 - 23ABF + 0x02e7, 0x02ee, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0265, + 0x025f, 0x025c, 0x0262, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, + 0x1fb0, 0x0001, 0x0001, 0x0037, 0x0001, 0x0014, 0x146e, 0x0004, + 0x0276, 0x0270, 0x026d, 0x0273, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0287, 0x0281, 0x027e, 0x0284, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0290, 0x0001, + // Entry 23AC0 - 23AFF + 0x0292, 0x0001, 0x0294, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x029d, 0x0001, 0x029f, 0x0001, 0x02a1, + 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x02ab, 0x0004, 0x02b9, 0x02b3, 0x02b0, 0x02b6, 0x0001, + 0x0001, 0x1f7d, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x0000, 0x1e17, + 0x0001, 0x001c, 0x14e1, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x02c2, 0x0001, 0x02c4, 0x0001, 0x02c6, 0x0002, 0x0034, 0x019b, + 0x01ab, 0x0040, 0x030b, 0x0000, 0x0000, 0x0310, 0x0327, 0x0339, + // Entry 23B00 - 23B3F + 0x034b, 0x0362, 0x0379, 0x0390, 0x03a7, 0x03b9, 0x03cb, 0x03e6, + 0x03fc, 0x0000, 0x0000, 0x0000, 0x0412, 0x042b, 0x043d, 0x0000, + 0x0000, 0x0000, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0454, 0x0468, 0x047c, 0x0490, 0x04a4, 0x04b8, 0x04cc, 0x04e0, + 0x04f4, 0x0508, 0x051c, 0x0530, 0x0544, 0x0558, 0x056c, 0x0580, + 0x0594, 0x05a8, 0x05bc, 0x05d0, 0x05e4, 0x0000, 0x05f8, 0x0000, + 0x05fd, 0x0613, 0x0625, 0x0637, 0x064d, 0x065f, 0x0671, 0x0687, + 0x0699, 0x06ab, 0x0001, 0x030d, 0x0001, 0x0001, 0x0040, 0x0003, + // Entry 23B40 - 23B7F + 0x0314, 0x0317, 0x031c, 0x0001, 0x0034, 0x01b2, 0x0003, 0x0034, + 0x01b7, 0x01c3, 0x01d0, 0x0002, 0x031f, 0x0323, 0x0002, 0x0034, + 0x01eb, 0x01de, 0x0002, 0x0034, 0x0204, 0x01f8, 0x0003, 0x032b, + 0x0000, 0x032e, 0x0001, 0x0034, 0x01b2, 0x0002, 0x0331, 0x0335, + 0x0002, 0x0034, 0x01eb, 0x01de, 0x0002, 0x0034, 0x0204, 0x01f8, + 0x0003, 0x033d, 0x0000, 0x0340, 0x0001, 0x0034, 0x01b2, 0x0002, + 0x0343, 0x0347, 0x0002, 0x0034, 0x01eb, 0x01de, 0x0002, 0x0034, + 0x0204, 0x01f8, 0x0003, 0x034f, 0x0352, 0x0357, 0x0001, 0x0005, + // Entry 23B80 - 23BBF + 0x1c6d, 0x0003, 0x0034, 0x0210, 0x0221, 0x0232, 0x0002, 0x035a, + 0x035e, 0x0002, 0x0034, 0x0257, 0x0245, 0x0002, 0x0034, 0x027a, + 0x0269, 0x0003, 0x0366, 0x0369, 0x036e, 0x0001, 0x000b, 0x0c78, + 0x0003, 0x0034, 0x028b, 0x0298, 0x02a5, 0x0002, 0x0371, 0x0375, + 0x0002, 0x0034, 0x02b4, 0x02b4, 0x0002, 0x0034, 0x02c2, 0x02c2, + 0x0003, 0x037d, 0x0380, 0x0385, 0x0001, 0x000b, 0x0c78, 0x0003, + 0x0034, 0x028b, 0x0298, 0x02a5, 0x0002, 0x0388, 0x038c, 0x0002, + 0x0034, 0x02b4, 0x02b4, 0x0002, 0x0034, 0x02c2, 0x02c2, 0x0003, + // Entry 23BC0 - 23BFF + 0x0394, 0x0397, 0x039c, 0x0001, 0x0034, 0x02cf, 0x0003, 0x0034, + 0x02d4, 0x02e0, 0x02ec, 0x0002, 0x039f, 0x03a3, 0x0002, 0x0034, + 0x0307, 0x02fa, 0x0002, 0x0034, 0x0320, 0x0314, 0x0003, 0x03ab, + 0x0000, 0x03ae, 0x0001, 0x0034, 0x02cf, 0x0002, 0x03b1, 0x03b5, + 0x0002, 0x0034, 0x0307, 0x02fa, 0x0002, 0x0034, 0x0320, 0x0314, + 0x0003, 0x03bd, 0x0000, 0x03c0, 0x0001, 0x0034, 0x02cf, 0x0002, + 0x03c3, 0x03c7, 0x0002, 0x0034, 0x0307, 0x02fa, 0x0002, 0x0034, + 0x0320, 0x0314, 0x0004, 0x03d0, 0x03d3, 0x03d8, 0x03e3, 0x0001, + // Entry 23C00 - 23C3F + 0x0034, 0x032c, 0x0003, 0x0034, 0x0336, 0x0347, 0x0358, 0x0002, + 0x03db, 0x03df, 0x0002, 0x0034, 0x037d, 0x036b, 0x0002, 0x0034, + 0x03a0, 0x038f, 0x0001, 0x0034, 0x03b1, 0x0004, 0x03eb, 0x0000, + 0x03ee, 0x03f9, 0x0001, 0x0034, 0x03c6, 0x0002, 0x03f1, 0x03f5, + 0x0002, 0x0034, 0x03cc, 0x03cc, 0x0002, 0x0034, 0x03da, 0x03da, + 0x0001, 0x0034, 0x03b1, 0x0004, 0x0401, 0x0000, 0x0404, 0x040f, + 0x0001, 0x0034, 0x03c6, 0x0002, 0x0407, 0x040b, 0x0002, 0x0034, + 0x03cc, 0x03cc, 0x0002, 0x0034, 0x03da, 0x03da, 0x0001, 0x0034, + // Entry 23C40 - 23C7F + 0x03b1, 0x0003, 0x0416, 0x0419, 0x0420, 0x0001, 0x0034, 0x03e7, + 0x0005, 0x0034, 0x03fd, 0x0402, 0x0407, 0x03ee, 0x040e, 0x0002, + 0x0423, 0x0427, 0x0002, 0x0034, 0x0428, 0x0419, 0x0002, 0x0034, + 0x0445, 0x0437, 0x0003, 0x042f, 0x0000, 0x0432, 0x0001, 0x0000, + 0x200e, 0x0002, 0x0435, 0x0439, 0x0002, 0x0034, 0x045d, 0x0453, + 0x0002, 0x0034, 0x0471, 0x0468, 0x0003, 0x0441, 0x0000, 0x0444, + 0x0001, 0x0000, 0x200e, 0x0002, 0x0447, 0x044b, 0x0002, 0x0034, + 0x045d, 0x0453, 0x0002, 0x0034, 0x0471, 0x0468, 0x0001, 0x0451, + // Entry 23C80 - 23CBF + 0x0001, 0x0034, 0x047b, 0x0003, 0x0000, 0x0458, 0x045d, 0x0003, + 0x0034, 0x0492, 0x04a2, 0x04b2, 0x0002, 0x0460, 0x0464, 0x0002, + 0x0034, 0x04d5, 0x04c4, 0x0002, 0x0034, 0x04f7, 0x04e7, 0x0003, + 0x0000, 0x046c, 0x0471, 0x0003, 0x0034, 0x0508, 0x0514, 0x0520, + 0x0002, 0x0474, 0x0478, 0x0002, 0x0034, 0x052e, 0x052e, 0x0002, + 0x0034, 0x053b, 0x053b, 0x0003, 0x0000, 0x0480, 0x0485, 0x0003, + 0x0034, 0x0547, 0x0551, 0x055b, 0x0002, 0x0488, 0x048c, 0x0002, + 0x0034, 0x0567, 0x0567, 0x0002, 0x0034, 0x0573, 0x0573, 0x0003, + // Entry 23CC0 - 23CFF + 0x0000, 0x0494, 0x0499, 0x0003, 0x0034, 0x057e, 0x058d, 0x059c, + 0x0002, 0x049c, 0x04a0, 0x0002, 0x0034, 0x05ad, 0x05ad, 0x0002, + 0x0034, 0x05bd, 0x05bd, 0x0003, 0x0000, 0x04a8, 0x04ad, 0x0003, + 0x0034, 0x05cc, 0x05d8, 0x05e4, 0x0002, 0x04b0, 0x04b4, 0x0002, + 0x0034, 0x05f2, 0x05f2, 0x0002, 0x0034, 0x05ff, 0x05ff, 0x0003, + 0x0000, 0x04bc, 0x04c1, 0x0003, 0x0034, 0x060b, 0x0615, 0x061f, + 0x0002, 0x04c4, 0x04c8, 0x0002, 0x0034, 0x062b, 0x062b, 0x0002, + 0x0034, 0x0637, 0x0637, 0x0003, 0x0000, 0x04d0, 0x04d5, 0x0003, + // Entry 23D00 - 23D3F + 0x0034, 0x0642, 0x0652, 0x0662, 0x0002, 0x04d8, 0x04dc, 0x0002, + 0x0034, 0x0674, 0x0674, 0x0002, 0x0034, 0x0685, 0x0685, 0x0003, + 0x0000, 0x04e4, 0x04e9, 0x0003, 0x0034, 0x0695, 0x06a1, 0x06ad, + 0x0002, 0x04ec, 0x04f0, 0x0002, 0x0034, 0x06bb, 0x06bb, 0x0002, + 0x0034, 0x06c8, 0x06c8, 0x0003, 0x0000, 0x04f8, 0x04fd, 0x0003, + 0x0034, 0x06d4, 0x06de, 0x06e8, 0x0002, 0x0500, 0x0504, 0x0002, + 0x0034, 0x06f4, 0x06f4, 0x0002, 0x0034, 0x0700, 0x0700, 0x0003, + 0x0000, 0x050c, 0x0511, 0x0003, 0x0034, 0x070b, 0x071d, 0x072f, + // Entry 23D40 - 23D7F + 0x0002, 0x0514, 0x0518, 0x0002, 0x0034, 0x0743, 0x0743, 0x0002, + 0x0034, 0x0756, 0x0756, 0x0003, 0x0000, 0x0520, 0x0525, 0x0003, + 0x0034, 0x0768, 0x0774, 0x0780, 0x0002, 0x0528, 0x052c, 0x0002, + 0x0034, 0x078e, 0x078e, 0x0002, 0x0034, 0x079b, 0x079b, 0x0003, + 0x0000, 0x0534, 0x0539, 0x0003, 0x0034, 0x07a7, 0x07b1, 0x07bb, + 0x0002, 0x053c, 0x0540, 0x0002, 0x0034, 0x07c7, 0x07c7, 0x0002, + 0x0034, 0x07d3, 0x07d3, 0x0003, 0x0000, 0x0548, 0x054d, 0x0003, + 0x0034, 0x07de, 0x07ee, 0x07fe, 0x0002, 0x0550, 0x0554, 0x0002, + // Entry 23D80 - 23DBF + 0x0034, 0x0810, 0x0810, 0x0002, 0x0034, 0x0821, 0x0821, 0x0003, + 0x0000, 0x055c, 0x0561, 0x0003, 0x0034, 0x0831, 0x083d, 0x0849, + 0x0002, 0x0564, 0x0568, 0x0002, 0x0034, 0x0857, 0x0857, 0x0002, + 0x0034, 0x0864, 0x0864, 0x0003, 0x0000, 0x0570, 0x0575, 0x0003, + 0x0034, 0x0870, 0x087a, 0x0884, 0x0002, 0x0578, 0x057c, 0x0002, + 0x0034, 0x0890, 0x0890, 0x0002, 0x0034, 0x089c, 0x089c, 0x0003, + 0x0000, 0x0584, 0x0589, 0x0003, 0x0034, 0x08a7, 0x08b7, 0x08c7, + 0x0002, 0x058c, 0x0590, 0x0002, 0x0034, 0x08d9, 0x08d9, 0x0002, + // Entry 23DC0 - 23DFF + 0x0034, 0x08ea, 0x08ea, 0x0003, 0x0000, 0x0598, 0x059d, 0x0003, + 0x0034, 0x08fa, 0x0906, 0x0912, 0x0002, 0x05a0, 0x05a4, 0x0002, + 0x0034, 0x0920, 0x0920, 0x0002, 0x0034, 0x092d, 0x092d, 0x0003, + 0x0000, 0x05ac, 0x05b1, 0x0003, 0x0034, 0x0939, 0x0943, 0x094d, + 0x0002, 0x05b4, 0x05b8, 0x0002, 0x0034, 0x0959, 0x0959, 0x0002, + 0x0034, 0x0965, 0x0965, 0x0003, 0x0000, 0x05c0, 0x05c5, 0x0003, + 0x0034, 0x0970, 0x097e, 0x098c, 0x0002, 0x05c8, 0x05cc, 0x0002, + 0x0034, 0x09ab, 0x099c, 0x0002, 0x0034, 0x09c8, 0x09ba, 0x0003, + // Entry 23E00 - 23E3F + 0x0000, 0x05d4, 0x05d9, 0x0003, 0x0034, 0x09d6, 0x09e2, 0x09ee, + 0x0002, 0x05dc, 0x05e0, 0x0002, 0x0034, 0x09fc, 0x09fc, 0x0002, + 0x0034, 0x0a09, 0x0a09, 0x0003, 0x0000, 0x05e8, 0x05ed, 0x0003, + 0x0034, 0x0a15, 0x0a1f, 0x0a29, 0x0002, 0x05f0, 0x05f4, 0x0002, + 0x0034, 0x0a35, 0x0a35, 0x0002, 0x0034, 0x0a41, 0x0a41, 0x0001, + 0x05fa, 0x0001, 0x0007, 0x07cc, 0x0003, 0x0601, 0x0604, 0x0608, + 0x0001, 0x0034, 0x0a4c, 0x0002, 0x0034, 0xffff, 0x0a50, 0x0002, + 0x060b, 0x060f, 0x0002, 0x0034, 0x0a68, 0x0a5c, 0x0002, 0x0034, + // Entry 23E40 - 23E7F + 0x0a7f, 0x0a74, 0x0003, 0x0617, 0x0000, 0x061a, 0x0001, 0x0006, + 0x041e, 0x0002, 0x061d, 0x0621, 0x0002, 0x0034, 0x0a8a, 0x0a8a, + 0x0002, 0x0034, 0x0a95, 0x0a95, 0x0003, 0x0629, 0x0000, 0x062c, + 0x0001, 0x0000, 0x2143, 0x0002, 0x062f, 0x0633, 0x0002, 0x0034, + 0x0a9f, 0x0a9f, 0x0002, 0x0034, 0x0aa9, 0x0aa9, 0x0003, 0x063b, + 0x063e, 0x0642, 0x0001, 0x001c, 0x0b08, 0x0002, 0x0034, 0xffff, + 0x0ab2, 0x0002, 0x0645, 0x0649, 0x0002, 0x0034, 0x0acf, 0x0ac0, + 0x0002, 0x0034, 0x0aec, 0x0ade, 0x0003, 0x0651, 0x0000, 0x0654, + // Entry 23E80 - 23EBF + 0x0001, 0x0001, 0x075a, 0x0002, 0x0657, 0x065b, 0x0002, 0x0034, + 0x0afa, 0x0afa, 0x0002, 0x0034, 0x0b07, 0x0b07, 0x0003, 0x0663, + 0x0000, 0x0666, 0x0001, 0x0000, 0x1f9a, 0x0002, 0x0669, 0x066d, + 0x0002, 0x0034, 0x0b13, 0x0b13, 0x0002, 0x0034, 0x0b1f, 0x0b1f, + 0x0003, 0x0675, 0x0678, 0x067c, 0x0001, 0x0034, 0x0b2a, 0x0002, + 0x0034, 0xffff, 0x0a4c, 0x0002, 0x067f, 0x0683, 0x0002, 0x0034, + 0x0b42, 0x0b32, 0x0002, 0x0034, 0x0b61, 0x0b52, 0x0003, 0x068b, + 0x0000, 0x068e, 0x0001, 0x001b, 0x0a96, 0x0002, 0x0691, 0x0695, + // Entry 23EC0 - 23EFF + 0x0002, 0x0034, 0x0b70, 0x0b70, 0x0002, 0x0034, 0x0b7d, 0x0b7d, + 0x0003, 0x069d, 0x0000, 0x06a0, 0x0001, 0x0000, 0x2002, 0x0002, + 0x06a3, 0x06a7, 0x0002, 0x0034, 0x0b89, 0x0b89, 0x0002, 0x0034, + 0x0b93, 0x0b93, 0x0001, 0x06ad, 0x0001, 0x0034, 0x0b9c, 0x0004, + 0x06b5, 0x06ba, 0x06bf, 0x06ce, 0x0003, 0x0000, 0x1dc7, 0x2936, + 0x293d, 0x0003, 0x0034, 0x0ba8, 0x0bb0, 0x0bc0, 0x0002, 0x0000, + 0x06c2, 0x0003, 0x0000, 0x06c9, 0x06c6, 0x0001, 0x0034, 0x0bd2, + 0x0003, 0x0034, 0xffff, 0x0bee, 0x0c09, 0x0002, 0x0897, 0x06d1, + // Entry 23F00 - 23F3F + 0x0003, 0x076b, 0x0801, 0x06d5, 0x0094, 0x0034, 0x0c23, 0x0c3a, + 0x0c55, 0x0c71, 0x0cad, 0x0d0b, 0x0d54, 0x0d9f, 0x0de3, 0x0e31, + 0x0e8a, 0x0ed2, 0x0f0a, 0x0f3c, 0x0f75, 0x0fd0, 0x1035, 0x1080, + 0x10d8, 0x114a, 0x11c5, 0x1234, 0x129d, 0x12ed, 0x1334, 0x136a, + 0x1379, 0x139b, 0x13cb, 0x13f7, 0x142b, 0x144d, 0x148e, 0x14c7, + 0x1507, 0x153b, 0x1556, 0x157f, 0x15ca, 0x1616, 0x163e, 0x164b, + 0x1665, 0x1691, 0x16d7, 0x1705, 0x1767, 0x17af, 0x17f7, 0x185c, + 0x18ad, 0x18db, 0x18f5, 0x1924, 0x1938, 0x1959, 0x198d, 0x19a5, + // Entry 23F40 - 23F7F + 0x19e4, 0x1a56, 0x1aaa, 0x1ab8, 0x1ae9, 0x1b4a, 0x1b88, 0x1bb0, + 0x1bca, 0x1be4, 0x1bf8, 0x1c16, 0x1c35, 0x1c66, 0x1ca5, 0x1ce2, + 0x1d21, 0x1d73, 0x1dc3, 0x1de0, 0x1e0b, 0x1e33, 0x1e55, 0x1e8b, + 0x1ea0, 0x1ecf, 0x1f01, 0x1f2b, 0x1f59, 0x1f6b, 0x1f7d, 0x1f90, + 0x1fbd, 0x1ff5, 0x2024, 0x2091, 0x20e9, 0x212a, 0x2154, 0x2167, + 0x2174, 0x219c, 0x21f8, 0x2249, 0x227b, 0x2287, 0x22ba, 0x2313, + 0x2355, 0x238e, 0x23c0, 0x23cd, 0x23fb, 0x243b, 0x247b, 0x24b3, + 0x24ef, 0x253d, 0x2550, 0x255f, 0x2570, 0x2580, 0x259f, 0x25dd, + // Entry 23F80 - 23FBF + 0x2616, 0x2640, 0x2655, 0x2666, 0x267f, 0x2699, 0x26aa, 0x26b7, + 0x26d3, 0x26ff, 0x2712, 0x272e, 0x2758, 0x277b, 0x27b5, 0x27d6, + 0x2822, 0x286e, 0x289e, 0x28c3, 0x290a, 0x293c, 0x294a, 0x2963, + 0x2989, 0x29cb, 0x0094, 0x0034, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0c8f, 0x0cf9, 0x0d3f, 0x0d8e, 0x0dd1, 0x0e17, 0x0e75, 0x0ec4, + 0x0efe, 0x0f32, 0x0f60, 0x0faf, 0x1022, 0x106b, 0x10ba, 0x1124, + 0x11a6, 0x1213, 0x1286, 0x12db, 0x1321, 0xffff, 0xffff, 0x138b, + 0xffff, 0x13e5, 0xffff, 0x143b, 0x1481, 0x14b8, 0x14f5, 0xffff, + // Entry 23FC0 - 23FFF + 0xffff, 0x156c, 0x15b5, 0x160a, 0xffff, 0xffff, 0xffff, 0x1676, + 0xffff, 0x16ea, 0x174b, 0xffff, 0x17d9, 0x1843, 0x189e, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1947, 0xffff, 0xffff, 0x19c4, 0x1a34, + 0xffff, 0xffff, 0x1ac9, 0x1b39, 0x1b7c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1c56, 0x1c96, 0x1cd3, 0x1d10, 0x1d53, + 0xffff, 0xffff, 0x1dff, 0xffff, 0x1e42, 0xffff, 0xffff, 0x1ebe, + 0xffff, 0x1f1c, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fa9, 0xffff, + 0x2003, 0x2076, 0x20d7, 0x211d, 0xffff, 0xffff, 0xffff, 0x2182, + // Entry 24000 - 2403F + 0x21e0, 0x2238, 0xffff, 0xffff, 0x229f, 0x2300, 0x2349, 0x237d, + 0xffff, 0xffff, 0x23ea, 0x242d, 0x2467, 0xffff, 0x24d0, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x258f, 0x25cf, 0x2609, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x26c5, 0xffff, + 0xffff, 0x2721, 0xffff, 0x2766, 0xffff, 0x27c3, 0x280c, 0x285e, + 0xffff, 0x28b0, 0x28f9, 0xffff, 0xffff, 0xffff, 0x297a, 0x29b7, + 0x0094, 0x0034, 0xffff, 0xffff, 0xffff, 0xffff, 0x0cd4, 0x0d26, + 0x0d72, 0x0db9, 0x0dfe, 0x0e54, 0x0ea8, 0x0ee9, 0x0f1f, 0x0f4f, + // Entry 24040 - 2407F + 0x0f93, 0x0ffa, 0x1051, 0x109e, 0x10ff, 0x1179, 0x11ed, 0x125e, + 0x12bd, 0x1308, 0x1350, 0xffff, 0xffff, 0x13b4, 0xffff, 0x1412, + 0xffff, 0x1468, 0x14a4, 0x14df, 0x1522, 0xffff, 0xffff, 0x159b, + 0x15e8, 0x162b, 0xffff, 0xffff, 0xffff, 0x16b5, 0xffff, 0x1729, + 0x178c, 0xffff, 0x181e, 0x187e, 0x18c5, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1974, 0xffff, 0xffff, 0x1a0d, 0x1a81, 0xffff, 0xffff, + 0x1b12, 0x1b64, 0x1b9d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1c7f, 0x1cbd, 0x1cfa, 0x1d3b, 0x1d9c, 0xffff, 0xffff, + // Entry 24080 - 240BF + 0x1e20, 0xffff, 0x1e71, 0xffff, 0xffff, 0x1ee9, 0xffff, 0x1f43, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1fda, 0xffff, 0x204e, 0x20b5, + 0x2104, 0x2140, 0xffff, 0xffff, 0xffff, 0x21bf, 0x2219, 0x2263, + 0xffff, 0xffff, 0x22de, 0x232f, 0x236a, 0x23a8, 0xffff, 0xffff, + 0x2415, 0x2452, 0x2498, 0xffff, 0x2517, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x25b8, 0x25f4, 0x262c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x26ea, 0xffff, 0xffff, 0x2744, + 0xffff, 0x2799, 0xffff, 0x27f2, 0x2841, 0x2887, 0xffff, 0x28df, + // Entry 240C0 - 240FF + 0x2924, 0xffff, 0xffff, 0xffff, 0x29a1, 0x29e8, 0x0003, 0x089b, + 0x0901, 0x08ce, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, + // Entry 24100 - 2413F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 24140 - 2417F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0025, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0004, + 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0005, 0x0625, 0x0001, + // Entry 24180 - 241BF + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0013, 0x048d, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002e, 0x0000, + 0x0000, 0x0004, 0x0039, 0x0000, 0x0033, 0x0036, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0007, 0x0277, 0x0003, + 0x0004, 0x09c3, 0x0d71, 0x0012, 0x0017, 0x003f, 0x0162, 0x01cf, + 0x02c0, 0x0000, 0x032d, 0x0358, 0x059f, 0x0629, 0x069b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0721, 0x092f, 0x09a1, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0020, 0x002e, 0x0000, 0x9006, 0x0003, + // Entry 241C0 - 241FF + 0x0029, 0x0000, 0x0024, 0x0001, 0x0026, 0x0001, 0x0035, 0x0000, + 0x0001, 0x002b, 0x0001, 0x0000, 0x0000, 0x0004, 0x003c, 0x0036, + 0x0033, 0x0039, 0x0001, 0x0035, 0x0007, 0x0001, 0x0035, 0x001c, + 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x002d, 0x000a, 0x004a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, 0x00af, + 0x00c2, 0x0002, 0x004d, 0x007e, 0x0003, 0x0051, 0x0060, 0x006f, + 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, + 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, + // Entry 24200 - 2423F + 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, + 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, + 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0003, 0x0082, 0x0091, + 0x00a0, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, + 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, + 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, + 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, + // Entry 24240 - 2427F + 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, + 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0003, 0x00b3, + 0x00be, 0x00b8, 0x0003, 0x0035, 0xffff, 0xffff, 0x00c6, 0x0004, + 0x0035, 0xffff, 0xffff, 0xffff, 0x00c6, 0x0002, 0x0035, 0xffff, + 0x00c6, 0x0006, 0x00c9, 0x0000, 0x0000, 0x00dc, 0x00fb, 0x013e, + 0x0001, 0x00cb, 0x0001, 0x00cd, 0x000d, 0x0035, 0xffff, 0x00cd, + 0x00d1, 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, + 0x00f1, 0x00f5, 0x00f9, 0x0001, 0x00de, 0x0001, 0x00e0, 0x0019, + // Entry 24280 - 242BF + 0x0035, 0xffff, 0x00fd, 0x0104, 0x010b, 0x0112, 0x0119, 0x0120, + 0x0127, 0x012e, 0x0135, 0x013c, 0x0143, 0x014a, 0x0151, 0x0158, + 0x015f, 0x0166, 0x016d, 0x0174, 0x017b, 0x0182, 0x0189, 0x0190, + 0x0197, 0x019e, 0x0001, 0x00fd, 0x0001, 0x00ff, 0x003d, 0x0035, + 0xffff, 0x01a5, 0x01ac, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, + 0x01d6, 0x01dd, 0x01e4, 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, + 0x020e, 0x0215, 0x021c, 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, + 0x0246, 0x024d, 0x0254, 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, + // Entry 242C0 - 242FF + 0x027e, 0x0285, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, + 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, + 0x02ee, 0x02f5, 0x02fc, 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, + 0x0326, 0x032d, 0x0334, 0x033b, 0x0342, 0x0001, 0x0140, 0x0001, + 0x0142, 0x000d, 0x0035, 0xffff, 0x0349, 0x034d, 0x0351, 0x0355, + 0x0359, 0x035d, 0x0361, 0x0365, 0x0369, 0x036d, 0x0371, 0x0375, + 0x0004, 0x015f, 0x0159, 0x0156, 0x015c, 0x0001, 0x0035, 0x0379, + 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, + // Entry 24300 - 2433F + 0x0395, 0x0001, 0x0164, 0x0002, 0x0167, 0x019b, 0x0003, 0x016b, + 0x017b, 0x018b, 0x000e, 0x0035, 0xffff, 0x039b, 0x03a5, 0x03ac, + 0x03b9, 0x03c6, 0x03d0, 0x03e0, 0x03f3, 0x0403, 0x0413, 0x0420, + 0x042d, 0x0437, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x0422, 0x000e, 0x0035, 0xffff, 0x039b, 0x03a5, 0x03ac, + 0x03b9, 0x03c6, 0x03d0, 0x03e0, 0x03f3, 0x0403, 0x0413, 0x0420, + 0x042d, 0x0437, 0x0003, 0x019f, 0x01af, 0x01bf, 0x000e, 0x0035, + // Entry 24340 - 2437F + 0xffff, 0x039b, 0x03a5, 0x03ac, 0x03b9, 0x03c6, 0x03d0, 0x03e0, + 0x03f3, 0x0403, 0x0413, 0x0420, 0x042d, 0x0437, 0x000e, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0035, + 0xffff, 0x039b, 0x03a5, 0x03ac, 0x03b9, 0x03c6, 0x03d0, 0x03e0, + 0x03f3, 0x0403, 0x0413, 0x0420, 0x042d, 0x0437, 0x000a, 0x01da, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02af, 0x0000, 0x0000, 0x0000, + 0x023f, 0x0002, 0x01dd, 0x020e, 0x0003, 0x01e1, 0x01f0, 0x01ff, + // Entry 24380 - 243BF + 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, + 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, + 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, + 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, + 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0003, 0x0212, 0x0221, + 0x0230, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, + 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, + // Entry 243C0 - 243FF + 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, + 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, + 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, + 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0006, 0x0246, + 0x0000, 0x0000, 0x0000, 0x0259, 0x029c, 0x0001, 0x0248, 0x0001, + 0x024a, 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, + 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, + 0x0001, 0x025b, 0x0001, 0x025d, 0x003d, 0x0035, 0xffff, 0x01a5, + // Entry 24400 - 2443F + 0x01ac, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, + 0x01e4, 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, + 0x021c, 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, + 0x0254, 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, + 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, + 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, + 0x02fc, 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, + 0x0334, 0x033b, 0x0342, 0x0001, 0x029e, 0x0001, 0x02a0, 0x000d, + // Entry 24440 - 2447F + 0x0035, 0xffff, 0x0349, 0x034d, 0x0351, 0x0355, 0x0359, 0x035d, + 0x0361, 0x0365, 0x0369, 0x036d, 0x0371, 0x0375, 0x0004, 0x02bd, + 0x02b7, 0x02b4, 0x02ba, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, + 0x0389, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, 0x0395, 0x0001, + 0x02c2, 0x0002, 0x02c5, 0x02f9, 0x0003, 0x02c9, 0x02d9, 0x02e9, + 0x000e, 0x0035, 0xffff, 0x0441, 0x0451, 0x045e, 0x0468, 0x0475, + 0x047c, 0x048f, 0x049c, 0x04a9, 0x04b6, 0x04bd, 0x04c7, 0x04d4, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + // Entry 24480 - 244BF + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, + 0x000e, 0x0035, 0xffff, 0x0441, 0x0451, 0x045e, 0x0468, 0x0475, + 0x047c, 0x048f, 0x049c, 0x04a9, 0x04b6, 0x04bd, 0x04c7, 0x04d4, + 0x0003, 0x02fd, 0x030d, 0x031d, 0x000e, 0x0035, 0xffff, 0x0441, + 0x0451, 0x045e, 0x0468, 0x0475, 0x047c, 0x048f, 0x049c, 0x04a9, + 0x04b6, 0x04bd, 0x04c7, 0x04d4, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0035, 0xffff, 0x0441, + // Entry 244C0 - 244FF + 0x0451, 0x045e, 0x0468, 0x0475, 0x047c, 0x048f, 0x049c, 0x04a9, + 0x04b6, 0x04bd, 0x04c7, 0x04d4, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0336, 0x0000, 0x0347, 0x0004, 0x0344, 0x033e, + 0x033b, 0x0341, 0x0001, 0x0035, 0x04e1, 0x0001, 0x0035, 0x04f5, + 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x0503, 0x0004, 0x0355, + 0x034f, 0x034c, 0x0352, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0361, 0x03c6, 0x041d, 0x0452, 0x0547, 0x056c, 0x057d, 0x058e, + // Entry 24500 - 2453F + 0x0002, 0x0364, 0x0395, 0x0003, 0x0368, 0x0377, 0x0386, 0x000d, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x0003, 0x0399, 0x03a8, 0x03b7, + 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, + // Entry 24540 - 2457F + 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, + 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, + 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x0002, 0x03c9, 0x03f3, + 0x0005, 0x03cf, 0x03d8, 0x03ea, 0x0000, 0x03e1, 0x0007, 0x0035, + 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, 0x0561, 0x0007, + 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, 0x0561, + // Entry 24580 - 245BF + 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, + 0x0561, 0x0007, 0x0035, 0x0565, 0x056f, 0x0579, 0x0583, 0x058d, + 0x0597, 0x05a1, 0x0005, 0x03f9, 0x0402, 0x0414, 0x0000, 0x040b, + 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, + 0x0561, 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, + 0x055d, 0x0561, 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, + 0x0559, 0x055d, 0x0561, 0x0007, 0x0035, 0x0565, 0x056f, 0x0579, + 0x0583, 0x058d, 0x0597, 0x05a1, 0x0002, 0x0420, 0x0439, 0x0003, + // Entry 245C0 - 245FF + 0x0424, 0x042b, 0x0432, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, + 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0035, 0xffff, 0x05ab, 0x05b9, 0x05c7, 0x05d5, + 0x0003, 0x043d, 0x0444, 0x044b, 0x0005, 0x0000, 0xffff, 0x04e3, + 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0035, 0xffff, 0x05ab, 0x05b9, 0x05c7, + 0x05d5, 0x0002, 0x0455, 0x04ce, 0x0003, 0x0459, 0x0480, 0x04a7, + 0x000b, 0x0468, 0x046e, 0x0465, 0x0471, 0x0474, 0x0477, 0x047a, + // Entry 24600 - 2463F + 0x046b, 0x0000, 0x0000, 0x047d, 0x0001, 0x0035, 0x05e3, 0x0001, + 0x0035, 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, + 0x0001, 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, + 0x060a, 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x000b, + 0x048f, 0x0495, 0x048c, 0x0498, 0x049b, 0x049e, 0x04a1, 0x0492, + 0x0000, 0x0000, 0x04a4, 0x0001, 0x0035, 0x05e3, 0x0001, 0x0035, + 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, 0x0001, + 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, 0x060a, + // Entry 24640 - 2467F + 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x000b, 0x04b6, + 0x04bc, 0x04b3, 0x04bf, 0x04c2, 0x04c5, 0x04c8, 0x04b9, 0x0000, + 0x0000, 0x04cb, 0x0001, 0x0035, 0x05e3, 0x0001, 0x0035, 0x05ed, + 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, 0x0001, 0x0035, + 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, 0x060a, 0x0001, + 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x0003, 0x04d2, 0x04f9, + 0x0520, 0x000b, 0x04e1, 0x04e7, 0x04de, 0x04ea, 0x04ed, 0x04f0, + 0x04f3, 0x04e4, 0x0000, 0x0000, 0x04f6, 0x0001, 0x0035, 0x05e3, + // Entry 24680 - 246BF + 0x0001, 0x0035, 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, + 0x05fb, 0x0001, 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, + 0x0035, 0x060a, 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, + 0x000b, 0x0508, 0x050e, 0x0505, 0x0511, 0x0514, 0x0517, 0x051a, + 0x050b, 0x0000, 0x0000, 0x051d, 0x0001, 0x0035, 0x05e3, 0x0001, + 0x0035, 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, + 0x0001, 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, + 0x060a, 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x000b, + // Entry 246C0 - 246FF + 0x052f, 0x0535, 0x052c, 0x0538, 0x053b, 0x053e, 0x0541, 0x0532, + 0x0000, 0x0000, 0x0544, 0x0001, 0x0035, 0x05e3, 0x0001, 0x0035, + 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, 0x0001, + 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, 0x060a, + 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x0003, 0x0556, + 0x0561, 0x054b, 0x0002, 0x054e, 0x0552, 0x0002, 0x0035, 0x061c, + 0x0636, 0x0002, 0x0035, 0x0626, 0x063d, 0x0002, 0x0559, 0x055d, + 0x0002, 0x0035, 0x061c, 0x0636, 0x0002, 0x0035, 0x0626, 0x063d, + // Entry 24700 - 2473F + 0x0002, 0x0564, 0x0568, 0x0002, 0x0009, 0x0078, 0x5433, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0004, 0x057a, 0x0574, 0x0571, 0x0577, + 0x0001, 0x0035, 0x064a, 0x0001, 0x0035, 0x065b, 0x0001, 0x001c, + 0x0596, 0x0001, 0x001c, 0x0596, 0x0004, 0x058b, 0x0585, 0x0582, + 0x0588, 0x0001, 0x0035, 0x0668, 0x0001, 0x0005, 0x008f, 0x0001, + 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x059c, 0x0596, + 0x0593, 0x0599, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x05a6, + // Entry 24740 - 2477F + 0x0000, 0x0000, 0x0000, 0x0611, 0x0618, 0x0002, 0x05a9, 0x05dd, + 0x0003, 0x05ad, 0x05bd, 0x05cd, 0x000e, 0x0035, 0x06d3, 0x067c, + 0x0689, 0x0696, 0x06a3, 0x06b0, 0x06bd, 0x06c9, 0x06e0, 0x06ea, + 0x06f4, 0x06fe, 0x0708, 0x070f, 0x000e, 0x0000, 0x003f, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0035, 0x06d3, 0x067c, + 0x0689, 0x0696, 0x06a3, 0x06b0, 0x06bd, 0x06c9, 0x06e0, 0x06ea, + 0x06f4, 0x06fe, 0x0708, 0x070f, 0x0003, 0x05e1, 0x05f1, 0x0601, + // Entry 24780 - 247BF + 0x000e, 0x0035, 0x06d3, 0x067c, 0x0689, 0x0696, 0x06a3, 0x06b0, + 0x06bd, 0x06c9, 0x06e0, 0x06ea, 0x06f4, 0x06fe, 0x0708, 0x070f, + 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, + 0x000e, 0x0035, 0x06d3, 0x067c, 0x0689, 0x0696, 0x06a3, 0x06b0, + 0x06bd, 0x06c9, 0x06e0, 0x06ea, 0x06f4, 0x06fe, 0x0708, 0x070f, + 0x0001, 0x0613, 0x0001, 0x0615, 0x0001, 0x0000, 0x04ef, 0x0004, + 0x0626, 0x0620, 0x061d, 0x0623, 0x0001, 0x0035, 0x0719, 0x0001, + // Entry 247C0 - 247FF + 0x0035, 0x04f5, 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x002d, + 0x0005, 0x062f, 0x0000, 0x0000, 0x0000, 0x0694, 0x0002, 0x0632, + 0x0663, 0x0003, 0x0636, 0x0645, 0x0654, 0x000d, 0x0035, 0xffff, + 0x072b, 0x0738, 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, 0x078c, + 0x079c, 0x07af, 0x07b9, 0x07c3, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, 0x072b, 0x0738, + 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, 0x078c, 0x079c, 0x07af, + // Entry 24800 - 2483F + 0x07b9, 0x07c3, 0x0003, 0x0667, 0x0676, 0x0685, 0x000d, 0x0035, + 0xffff, 0x072b, 0x0738, 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, + 0x078c, 0x079c, 0x07af, 0x07b9, 0x07c3, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, 0x072b, + 0x0738, 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, 0x078c, 0x079c, + 0x07af, 0x07b9, 0x07c3, 0x0001, 0x0696, 0x0001, 0x0698, 0x0001, + 0x0035, 0x07d0, 0x0008, 0x06a4, 0x0000, 0x0000, 0x0000, 0x0709, + // Entry 24840 - 2487F + 0x0710, 0x0000, 0x9006, 0x0002, 0x06a7, 0x06d8, 0x0003, 0x06ab, + 0x06ba, 0x06c9, 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, 0x07f4, + 0x0816, 0x0838, 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, 0x08bc, + 0x08cf, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, 0x07f4, 0x0816, 0x0838, + 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, 0x08bc, 0x08cf, 0x0003, + 0x06dc, 0x06eb, 0x06fa, 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, + // Entry 24880 - 248BF + 0x07f4, 0x0816, 0x0838, 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, + 0x08bc, 0x08cf, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, 0x07f4, 0x0816, + 0x0838, 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, 0x08bc, 0x08cf, + 0x0001, 0x070b, 0x0001, 0x070d, 0x0001, 0x0000, 0x06c8, 0x0004, + 0x071e, 0x0718, 0x0715, 0x071b, 0x0001, 0x0035, 0x0719, 0x0001, + 0x0035, 0x04f5, 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x002d, + // Entry 248C0 - 248FF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x072a, 0x090d, 0x0000, + 0x091e, 0x0002, 0x072d, 0x081d, 0x0001, 0x072f, 0x00ec, 0x0035, + 0x08e5, 0x08ec, 0x08f3, 0x08fa, 0x0901, 0x0908, 0x090f, 0x0916, + 0x091d, 0x0924, 0x092b, 0x0932, 0x093f, 0x094c, 0x0959, 0x0966, + 0x0973, 0x097a, 0x0981, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, + 0x09ab, 0x09b2, 0x09b9, 0x09c0, 0x09c7, 0x09ce, 0x09d5, 0x09dc, + 0x09e3, 0x09ea, 0x09f1, 0x09f8, 0x09ff, 0x0a06, 0x0a0d, 0x0a14, + 0x0a1b, 0x0a22, 0x0a29, 0x0a30, 0x0a37, 0x0a3e, 0x0a45, 0x0a4c, + // Entry 24900 - 2493F + 0x0a53, 0x0a5a, 0x0a61, 0x0a68, 0x0a6f, 0x0a76, 0x0a7d, 0x0a84, + 0x0a8b, 0x0a92, 0x0a99, 0x0aa0, 0x0aa7, 0x0aae, 0x0ab5, 0x0abc, + 0x0ac3, 0x0aca, 0x0ad1, 0x0ad8, 0x0adf, 0x0ae6, 0x0aed, 0x0af4, + 0x0afb, 0x0b02, 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, + 0x0b33, 0x0b3a, 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, + 0x0b6b, 0x0b72, 0x0b79, 0x0b80, 0x0b87, 0x0b8e, 0x0b95, 0x0b9c, + 0x0ba3, 0x0baa, 0x0bb1, 0x0bb8, 0x0bbf, 0x0bc6, 0x0bcd, 0x0bd4, + 0x0bdb, 0x0be2, 0x0be9, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, + // Entry 24940 - 2497F + 0x0c13, 0x0c1a, 0x0c21, 0x0c28, 0x0c2f, 0x0c36, 0x0c3d, 0x0c44, + 0x0c4b, 0x0c52, 0x0c59, 0x0c60, 0x0c67, 0x0c6e, 0x0c75, 0x0c7c, + 0x0c83, 0x0c8a, 0x0c91, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x0cb4, + 0x0cbb, 0x0cc2, 0x0cc9, 0x0cd0, 0x0cd7, 0x0cde, 0x0ce5, 0x0cec, + 0x0cf3, 0x0cfa, 0x0d01, 0x0d08, 0x0d0f, 0x0d16, 0x0d1d, 0x0d24, + 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d47, 0x0d4e, 0x0d55, 0x0d5c, + 0x0d63, 0x0d6a, 0x0d71, 0x0d78, 0x0d7f, 0x0d86, 0x0d8d, 0x0d94, + 0x0d9b, 0x0da2, 0x0da9, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x0dcc, + // Entry 24980 - 249BF + 0x0dd3, 0x0dda, 0x0de1, 0x0de8, 0x0def, 0x0df6, 0x0dfd, 0x0e04, + 0x0e0b, 0x0e12, 0x0e19, 0x0e20, 0x0e27, 0x0e2e, 0x0e35, 0x0e3c, + 0x0e43, 0x0e4a, 0x0e51, 0x0e58, 0x0e5f, 0x0e66, 0x0e6d, 0x0e74, + 0x0e7b, 0x0e82, 0x0e89, 0x0e90, 0x0e97, 0x0e9e, 0x0ea5, 0x0eac, + 0x0eb3, 0x0eba, 0x0ec1, 0x0ec8, 0x0ecf, 0x0ed6, 0x0edd, 0x0ee4, + 0x0eeb, 0x0ef2, 0x0ef9, 0x0f00, 0x0f07, 0x0f0e, 0x0f15, 0x0f1c, + 0x0f23, 0x0f2a, 0x0f31, 0x0f38, 0x0f3f, 0x0f46, 0x0f4d, 0x0f54, + 0x0f5b, 0x0f62, 0x0f69, 0x0f70, 0x0001, 0x081f, 0x00ec, 0x0035, + // Entry 249C0 - 249FF + 0x08e5, 0x08ec, 0x08f3, 0x08fa, 0x0901, 0x0908, 0x090f, 0x0916, + 0x091d, 0x0924, 0x092b, 0x0932, 0x093f, 0x094c, 0x0959, 0x0966, + 0x0973, 0x097a, 0x0981, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, + 0x09ab, 0x09b2, 0x09b9, 0x09c0, 0x09c7, 0x09ce, 0x09d5, 0x09dc, + 0x09e3, 0x09ea, 0x09f1, 0x09f8, 0x09ff, 0x0a06, 0x0a0d, 0x0a14, + 0x0a1b, 0x0a22, 0x0a29, 0x0a30, 0x0a37, 0x0a3e, 0x0a45, 0x0a4c, + 0x0a53, 0x0a5a, 0x0a61, 0x0a68, 0x0a6f, 0x0a76, 0x0a7d, 0x0a84, + 0x0a8b, 0x0a92, 0x0a99, 0x0aa0, 0x0aa7, 0x0aae, 0x0ab5, 0x0abc, + // Entry 24A00 - 24A3F + 0x0ac3, 0x0aca, 0x0ad1, 0x0ad8, 0x0adf, 0x0ae6, 0x0aed, 0x0af4, + 0x0afb, 0x0b02, 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, + 0x0b33, 0x0b3a, 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, + 0x0b6b, 0x0b72, 0x0b79, 0x0b80, 0x0b87, 0x0b8e, 0x0b95, 0x0b9c, + 0x0ba3, 0x0baa, 0x0bb1, 0x0bb8, 0x0bbf, 0x0bc6, 0x0bcd, 0x0bd4, + 0x0bdb, 0x0be2, 0x0be9, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, + 0x0c13, 0x0c1a, 0x0c21, 0x0c28, 0x0c2f, 0x0c36, 0x0c3d, 0x0c44, + 0x0c4b, 0x0c52, 0x0c59, 0x0c60, 0x0c67, 0x0c6e, 0x0c75, 0x0c7c, + // Entry 24A40 - 24A7F + 0x0c83, 0x0c8a, 0x0c91, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x0cb4, + 0x0cbb, 0x0cc2, 0x0cc9, 0x0cd0, 0x0cd7, 0x0cde, 0x0ce5, 0x0cec, + 0x0cf3, 0x0cfa, 0x0d01, 0x0d08, 0x0d0f, 0x0d16, 0x0d1d, 0x0d24, + 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d47, 0x0d4e, 0x0d55, 0x0d5c, + 0x0d63, 0x0d6a, 0x0d71, 0x0d78, 0x0d7f, 0x0d86, 0x0d8d, 0x0d94, + 0x0d9b, 0x0da2, 0x0da9, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x0dcc, + 0x0dd3, 0x0dda, 0x0de1, 0x0de8, 0x0def, 0x0df6, 0x0dfd, 0x0e04, + 0x0e0b, 0x0e12, 0x0e19, 0x0e20, 0x0e27, 0x0e2e, 0x0e35, 0x0e3c, + // Entry 24A80 - 24ABF + 0x0e43, 0x0e4a, 0x0e51, 0x0e58, 0x0e5f, 0x0e66, 0x0e6d, 0x0e74, + 0x0e7b, 0x0e82, 0x0e89, 0x0e90, 0x0e97, 0x0e9e, 0x0ea5, 0x0eac, + 0x0eb3, 0x0eba, 0x0ec1, 0x0ec8, 0x0ecf, 0x0ed6, 0x0edd, 0x0ee4, + 0x0eeb, 0x0ef2, 0x0ef9, 0x0f00, 0x0f07, 0x0f0e, 0x0f15, 0x0f1c, + 0x0f23, 0x0f2a, 0x0f31, 0x0f38, 0x0f3f, 0x0f46, 0x0f4d, 0x0f54, + 0x0f77, 0x0f79, 0x0f7b, 0x0f7d, 0x0004, 0x091b, 0x0915, 0x0912, + 0x0918, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, + 0x0035, 0x04f5, 0x0001, 0x0035, 0x0f7f, 0x0004, 0x092c, 0x0926, + // Entry 24AC0 - 24AFF + 0x0923, 0x0929, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0935, + 0x0000, 0x0000, 0x0000, 0x099a, 0x0002, 0x0938, 0x0969, 0x0003, + 0x093c, 0x094b, 0x095a, 0x000d, 0x0035, 0xffff, 0x0f8a, 0x0fa9, + 0x0fc8, 0x0fd8, 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, 0x1035, + 0x103c, 0x1049, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0035, 0xffff, 0x0f8a, 0x0fa9, 0x0fc8, 0x0fd8, + // Entry 24B00 - 24B3F + 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, 0x1035, 0x103c, 0x1049, + 0x0003, 0x096d, 0x097c, 0x098b, 0x000d, 0x0035, 0xffff, 0x0f8a, + 0x0fa9, 0x0fc8, 0x0fd8, 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, + 0x1035, 0x103c, 0x1049, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, 0x0f8a, 0x0fa9, 0x0fc8, + 0x0fd8, 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, 0x1035, 0x103c, + 0x1049, 0x0001, 0x099c, 0x0001, 0x099e, 0x0001, 0x0000, 0x1a1d, + // Entry 24B40 - 24B7F + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x09aa, 0x09b2, 0x0000, + 0x9006, 0x0001, 0x09ac, 0x0001, 0x09ae, 0x0002, 0x0035, 0x105c, + 0x1066, 0x0004, 0x09c0, 0x09ba, 0x09b7, 0x09bd, 0x0001, 0x0035, + 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x002d, 0x0001, + 0x0035, 0x002d, 0x0040, 0x0a04, 0x0000, 0x0000, 0x0a09, 0x0a1e, + 0x0a33, 0x0a48, 0x0a5d, 0x0a6d, 0x0a7d, 0x0a92, 0x0aa7, 0x0abc, + 0x0ad5, 0x0aee, 0x0000, 0x0000, 0x0000, 0x0b07, 0x0b1e, 0x0b35, + 0x0000, 0x0000, 0x0000, 0x0b4c, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 24B80 - 24BBF + 0x0000, 0x0b51, 0x0b63, 0x0b75, 0x0b87, 0x0b99, 0x0bab, 0x0bbd, + 0x0bcf, 0x0be1, 0x0bf3, 0x0c05, 0x0c17, 0x0c29, 0x0c3b, 0x0c4d, + 0x0c5f, 0x0c71, 0x0c83, 0x0c95, 0x0ca7, 0x0cb9, 0x0000, 0x0ccb, + 0x0000, 0x0cd0, 0x0ce4, 0x0cf4, 0x0d04, 0x0d18, 0x0d28, 0x0d38, + 0x0d4c, 0x0d5c, 0x0d6c, 0x0001, 0x0a06, 0x0001, 0x0035, 0x106d, + 0x0003, 0x0a0d, 0x0a10, 0x0a15, 0x0001, 0x0035, 0x1074, 0x0003, + 0x0035, 0x1078, 0x107f, 0x1086, 0x0002, 0x0a18, 0x0a1b, 0x0001, + 0x0035, 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x0a22, 0x0a25, + // Entry 24BC0 - 24BFF + 0x0a2a, 0x0001, 0x0035, 0x1074, 0x0003, 0x0035, 0x1078, 0x107f, + 0x1086, 0x0002, 0x0a2d, 0x0a30, 0x0001, 0x0035, 0x108d, 0x0001, + 0x0035, 0x1098, 0x0003, 0x0a37, 0x0a3a, 0x0a3f, 0x0001, 0x0035, + 0x1074, 0x0003, 0x0035, 0x1078, 0x107f, 0x1086, 0x0002, 0x0a42, + 0x0a45, 0x0001, 0x0035, 0x10a3, 0x0001, 0x0035, 0x10ad, 0x0003, + 0x0a4c, 0x0a4f, 0x0a54, 0x0001, 0x0035, 0x10b7, 0x0003, 0x0035, + 0x10c1, 0x10ce, 0x10db, 0x0002, 0x0a57, 0x0a5a, 0x0001, 0x0035, + 0x10e8, 0x0001, 0x0035, 0x10f9, 0x0003, 0x0a61, 0x0000, 0x0a64, + // Entry 24C00 - 24C3F + 0x0001, 0x0035, 0x10b7, 0x0002, 0x0a67, 0x0a6a, 0x0001, 0x0035, + 0x10e8, 0x0001, 0x0035, 0x10f9, 0x0003, 0x0a71, 0x0000, 0x0a74, + 0x0001, 0x0035, 0x10b7, 0x0002, 0x0a77, 0x0a7a, 0x0001, 0x0035, + 0x110a, 0x0001, 0x0035, 0x111a, 0x0003, 0x0a81, 0x0a84, 0x0a89, + 0x0001, 0x0035, 0x054d, 0x0003, 0x0035, 0x112a, 0x1131, 0x1138, + 0x0002, 0x0a8c, 0x0a8f, 0x0001, 0x0035, 0x113f, 0x0001, 0x0035, + 0x114d, 0x0003, 0x0a96, 0x0a99, 0x0a9e, 0x0001, 0x0035, 0x054d, + 0x0003, 0x0035, 0x112a, 0x1131, 0x1138, 0x0002, 0x0aa1, 0x0aa4, + // Entry 24C40 - 24C7F + 0x0001, 0x0035, 0x113f, 0x0001, 0x0035, 0x114d, 0x0003, 0x0aab, + 0x0aae, 0x0ab3, 0x0001, 0x0035, 0x054d, 0x0003, 0x0035, 0x112a, + 0x1131, 0x1138, 0x0002, 0x0ab6, 0x0ab9, 0x0001, 0x0035, 0x115b, + 0x0001, 0x0035, 0x1168, 0x0004, 0x0ac1, 0x0ac4, 0x0ac9, 0x0ad2, + 0x0001, 0x0035, 0x1175, 0x0003, 0x0035, 0x1179, 0x1180, 0x1187, + 0x0002, 0x0acc, 0x0acf, 0x0001, 0x0035, 0x118e, 0x0001, 0x0035, + 0x119c, 0x0001, 0x0035, 0x11aa, 0x0004, 0x0ada, 0x0add, 0x0ae2, + 0x0aeb, 0x0001, 0x0035, 0x1175, 0x0003, 0x0035, 0x1179, 0x1180, + // Entry 24C80 - 24CBF + 0x1187, 0x0002, 0x0ae5, 0x0ae8, 0x0001, 0x0035, 0x118e, 0x0001, + 0x0035, 0x119c, 0x0001, 0x0035, 0x11aa, 0x0004, 0x0af3, 0x0af6, + 0x0afb, 0x0b04, 0x0001, 0x0035, 0x1175, 0x0003, 0x0035, 0x1179, + 0x1180, 0x1187, 0x0002, 0x0afe, 0x0b01, 0x0001, 0x0035, 0x11b8, + 0x0001, 0x0035, 0x11c5, 0x0001, 0x0035, 0x11d2, 0x0003, 0x0b0b, + 0x0b0e, 0x0b15, 0x0001, 0x0035, 0x0549, 0x0005, 0x0035, 0x11e9, + 0x11f0, 0x11f7, 0x11df, 0x11fe, 0x0002, 0x0b18, 0x0b1b, 0x0001, + 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0b22, 0x0b25, + // Entry 24CC0 - 24CFF + 0x0b2c, 0x0001, 0x0035, 0x0549, 0x0005, 0x0035, 0x11e9, 0x11f0, + 0x11f7, 0x11df, 0x11fe, 0x0002, 0x0b2f, 0x0b32, 0x0001, 0x0035, + 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0b39, 0x0b3c, 0x0b43, + 0x0001, 0x0035, 0x0549, 0x0005, 0x0035, 0x11e9, 0x11f0, 0x11f7, + 0x11df, 0x11fe, 0x0002, 0x0b46, 0x0b49, 0x0001, 0x0035, 0x121e, + 0x0001, 0x0035, 0x1228, 0x0001, 0x0b4e, 0x0001, 0x0035, 0x1232, + 0x0003, 0x0000, 0x0b55, 0x0b5a, 0x0003, 0x0035, 0x1239, 0x124c, + 0x125f, 0x0002, 0x0b5d, 0x0b60, 0x0001, 0x0035, 0x1272, 0x0001, + // Entry 24D00 - 24D3F + 0x0035, 0x1289, 0x0003, 0x0000, 0x0b67, 0x0b6c, 0x0003, 0x0035, + 0x12a0, 0x12b0, 0x12c0, 0x0002, 0x0b6f, 0x0b72, 0x0001, 0x0035, + 0x12d0, 0x0001, 0x0035, 0x12e4, 0x0003, 0x0000, 0x0b79, 0x0b7e, + 0x0003, 0x0035, 0x12a0, 0x12b0, 0x12c0, 0x0002, 0x0b81, 0x0b84, + 0x0001, 0x0035, 0x12f8, 0x0001, 0x0035, 0x130b, 0x0003, 0x0000, + 0x0b8b, 0x0b90, 0x0003, 0x0035, 0x131e, 0x1331, 0x1344, 0x0002, + 0x0b93, 0x0b96, 0x0001, 0x0035, 0x1357, 0x0001, 0x0035, 0x136e, + 0x0003, 0x0000, 0x0b9d, 0x0ba2, 0x0003, 0x0035, 0x1385, 0x1395, + // Entry 24D40 - 24D7F + 0x13a5, 0x0002, 0x0ba5, 0x0ba8, 0x0001, 0x0035, 0x13b5, 0x0001, + 0x0035, 0x13c9, 0x0003, 0x0000, 0x0baf, 0x0bb4, 0x0003, 0x0035, + 0x1385, 0x1395, 0x13a5, 0x0002, 0x0bb7, 0x0bba, 0x0001, 0x0035, + 0x13dd, 0x0001, 0x0035, 0x13f0, 0x0003, 0x0000, 0x0bc1, 0x0bc6, + 0x0003, 0x0035, 0x1403, 0x1416, 0x1429, 0x0002, 0x0bc9, 0x0bcc, + 0x0001, 0x0035, 0x143c, 0x0001, 0x0035, 0x1453, 0x0003, 0x0000, + 0x0bd3, 0x0bd8, 0x0003, 0x0035, 0x146a, 0x147a, 0x148a, 0x0002, + 0x0bdb, 0x0bde, 0x0001, 0x0035, 0x149a, 0x0001, 0x0035, 0x14ae, + // Entry 24D80 - 24DBF + 0x0003, 0x0000, 0x0be5, 0x0bea, 0x0003, 0x0035, 0x146a, 0x147a, + 0x148a, 0x0002, 0x0bed, 0x0bf0, 0x0001, 0x0035, 0x14c2, 0x0001, + 0x0035, 0x14d5, 0x0003, 0x0000, 0x0bf7, 0x0bfc, 0x0003, 0x0035, + 0x14e8, 0x14fb, 0x150e, 0x0002, 0x0bff, 0x0c02, 0x0001, 0x0035, + 0x1521, 0x0001, 0x0035, 0x1538, 0x0003, 0x0000, 0x0c09, 0x0c0e, + 0x0003, 0x0035, 0x154f, 0x155f, 0x156f, 0x0002, 0x0c11, 0x0c14, + 0x0001, 0x0035, 0x157f, 0x0001, 0x0035, 0x1593, 0x0003, 0x0000, + 0x0c1b, 0x0c20, 0x0003, 0x0035, 0x154f, 0x155f, 0x156f, 0x0002, + // Entry 24DC0 - 24DFF + 0x0c23, 0x0c26, 0x0001, 0x0035, 0x15a7, 0x0001, 0x0035, 0x15ba, + 0x0003, 0x0000, 0x0c2d, 0x0c32, 0x0003, 0x0035, 0x15cd, 0x15e0, + 0x15f3, 0x0002, 0x0c35, 0x0c38, 0x0001, 0x0035, 0x1606, 0x0001, + 0x0035, 0x161d, 0x0003, 0x0000, 0x0c3f, 0x0c44, 0x0003, 0x0035, + 0x1634, 0x1644, 0x1654, 0x0002, 0x0c47, 0x0c4a, 0x0001, 0x0035, + 0x1664, 0x0001, 0x0035, 0x1678, 0x0003, 0x0000, 0x0c51, 0x0c56, + 0x0003, 0x0035, 0x1634, 0x1644, 0x1654, 0x0002, 0x0c59, 0x0c5c, + 0x0001, 0x0035, 0x168c, 0x0001, 0x0035, 0x169f, 0x0003, 0x0000, + // Entry 24E00 - 24E3F + 0x0c63, 0x0c68, 0x0003, 0x0035, 0x16b2, 0x16c5, 0x16d8, 0x0002, + 0x0c6b, 0x0c6e, 0x0001, 0x0035, 0x16eb, 0x0001, 0x0035, 0x1702, + 0x0003, 0x0000, 0x0c75, 0x0c7a, 0x0003, 0x0035, 0x1719, 0x1729, + 0x1739, 0x0002, 0x0c7d, 0x0c80, 0x0001, 0x0035, 0x1749, 0x0001, + 0x0035, 0x175d, 0x0003, 0x0000, 0x0c87, 0x0c8c, 0x0003, 0x0035, + 0x1719, 0x1729, 0x1739, 0x0002, 0x0c8f, 0x0c92, 0x0001, 0x0035, + 0x1771, 0x0001, 0x0035, 0x1784, 0x0003, 0x0000, 0x0c99, 0x0c9e, + 0x0003, 0x0035, 0x1797, 0x17aa, 0x17bd, 0x0002, 0x0ca1, 0x0ca4, + // Entry 24E40 - 24E7F + 0x0001, 0x0035, 0x17d0, 0x0001, 0x0035, 0x17e7, 0x0003, 0x0000, + 0x0cab, 0x0cb0, 0x0003, 0x0035, 0x17fe, 0x180e, 0x181e, 0x0002, + 0x0cb3, 0x0cb6, 0x0001, 0x0035, 0x182e, 0x0001, 0x0035, 0x1842, + 0x0003, 0x0000, 0x0cbd, 0x0cc2, 0x0003, 0x0035, 0x17fe, 0x180e, + 0x181e, 0x0002, 0x0cc5, 0x0cc8, 0x0001, 0x0035, 0x1856, 0x0001, + 0x0035, 0x1869, 0x0001, 0x0ccd, 0x0001, 0x0035, 0x187c, 0x0003, + 0x0cd4, 0x0cd7, 0x0cdb, 0x0001, 0x0035, 0x188a, 0x0002, 0x0035, + 0xffff, 0x188e, 0x0002, 0x0cde, 0x0ce1, 0x0001, 0x0035, 0x189d, + // Entry 24E80 - 24EBF + 0x0001, 0x0035, 0x18ab, 0x0003, 0x0ce8, 0x0000, 0x0ceb, 0x0001, + 0x0035, 0x188a, 0x0002, 0x0cee, 0x0cf1, 0x0001, 0x0035, 0x189d, + 0x0001, 0x0035, 0x18ab, 0x0003, 0x0cf8, 0x0000, 0x0cfb, 0x0001, + 0x0035, 0x188a, 0x0002, 0x0cfe, 0x0d01, 0x0001, 0x0035, 0x18b9, + 0x0001, 0x0035, 0x18c6, 0x0003, 0x0d08, 0x0d0b, 0x0d0f, 0x0001, + 0x0035, 0x18d3, 0x0002, 0x0035, 0xffff, 0x18d7, 0x0002, 0x0d12, + 0x0d15, 0x0001, 0x0035, 0x18e3, 0x0001, 0x0035, 0x18ee, 0x0003, + 0x0d1c, 0x0000, 0x0d1f, 0x0001, 0x0035, 0x18d3, 0x0002, 0x0d22, + // Entry 24EC0 - 24EFF + 0x0d25, 0x0001, 0x0035, 0x18e3, 0x0001, 0x0035, 0x18ee, 0x0003, + 0x0d2c, 0x0000, 0x0d2f, 0x0001, 0x0035, 0x18d3, 0x0002, 0x0d32, + 0x0d35, 0x0001, 0x0035, 0x18f9, 0x0001, 0x0035, 0x1903, 0x0003, + 0x0d3c, 0x0d3f, 0x0d43, 0x0001, 0x0035, 0x190d, 0x0002, 0x0035, + 0xffff, 0x1911, 0x0002, 0x0d46, 0x0d49, 0x0001, 0x0035, 0x1915, + 0x0001, 0x0035, 0x1920, 0x0003, 0x0d50, 0x0000, 0x0d53, 0x0001, + 0x0035, 0x190d, 0x0002, 0x0d56, 0x0d59, 0x0001, 0x0035, 0x1915, + 0x0001, 0x0035, 0x1920, 0x0003, 0x0d60, 0x0000, 0x0d63, 0x0001, + // Entry 24F00 - 24F3F + 0x0035, 0x190d, 0x0002, 0x0d66, 0x0d69, 0x0001, 0x0035, 0x192b, + 0x0001, 0x0035, 0x1935, 0x0001, 0x0d6e, 0x0001, 0x0035, 0x193f, + 0x0004, 0x0d76, 0x0d7b, 0x0d80, 0x0d8f, 0x0003, 0x0000, 0x1dc7, + 0x2936, 0x293d, 0x0003, 0x0035, 0x1952, 0x195c, 0x1969, 0x0002, + 0x0000, 0x0d83, 0x0003, 0x0000, 0x0d8a, 0x0d87, 0x0001, 0x0035, + 0x1976, 0x0003, 0x0035, 0xffff, 0x1986, 0x1996, 0x0002, 0x0f76, + 0x0d92, 0x0003, 0x0d96, 0x0ed6, 0x0e36, 0x009e, 0x0035, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1a4c, 0x1a94, 0x1b1b, 0x1b5a, 0x1bab, + // Entry 24F40 - 24F7F + 0x1bfc, 0x1c4d, 0x1ca7, 0x1cef, 0x1da3, 0x1de2, 0x1e33, 0x1e96, + 0x1ede, 0x1f14, 0x1f80, 0x1ff5, 0x2061, 0x20cd, 0x2130, 0x216f, + 0xffff, 0xffff, 0x21ef, 0xffff, 0x225f, 0xffff, 0x22dc, 0x231b, + 0x2348, 0x2375, 0xffff, 0xffff, 0x23fe, 0x2446, 0x248e, 0xffff, + 0xffff, 0xffff, 0x252d, 0xffff, 0x2594, 0x25ee, 0xffff, 0x265b, + 0x26ac, 0x2718, 0xffff, 0xffff, 0xffff, 0xffff, 0x27b5, 0xffff, + 0xffff, 0x2832, 0x289e, 0xffff, 0xffff, 0x293d, 0x29bb, 0x29e8, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ab7, 0x2aed, + // Entry 24F80 - 24FBF + 0x2b3e, 0x2b86, 0x2bb3, 0xffff, 0xffff, 0x2c9f, 0xffff, 0x2cdf, + 0xffff, 0xffff, 0x2d81, 0xffff, 0x2e1b, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2eb8, 0xffff, 0x2f22, 0x2f7c, 0x2fd6, 0x3030, 0xffff, + 0xffff, 0xffff, 0x30a8, 0x310b, 0x316e, 0xffff, 0xffff, 0x320f, + 0x32c4, 0x3327, 0x3366, 0xffff, 0xffff, 0x33e0, 0x3428, 0x345e, + 0xffff, 0x34c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x35ea, + 0x3629, 0x365f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3735, 0xffff, 0xffff, 0x378e, 0xffff, 0x37d7, 0xffff, + // Entry 24FC0 - 24FFF + 0x384a, 0x3892, 0x38ec, 0xffff, 0x3941, 0x399b, 0xffff, 0xffff, + 0xffff, 0x3a46, 0x3a8e, 0xffff, 0xffff, 0x19b2, 0x1ad3, 0x1d25, + 0x1d64, 0xffff, 0xffff, 0x2dc9, 0x3576, 0x009e, 0x0035, 0x19e8, + 0x1a04, 0x1a1d, 0x1a33, 0x1a62, 0x1aa7, 0x1b2e, 0x1b73, 0x1bc4, + 0x1c15, 0x1c69, 0x1cbd, 0x1cff, 0x1db6, 0x1dfb, 0x1e52, 0x1eac, + 0x1eee, 0x1f36, 0x1fa5, 0x2017, 0x2083, 0x20ec, 0x2143, 0x218b, + 0x21c9, 0x21dc, 0x2205, 0x2237, 0x2278, 0x22c9, 0x22ef, 0x2328, + 0x2355, 0x2391, 0x23cf, 0x23e8, 0x2414, 0x245c, 0x24a1, 0x24cd, + // Entry 25000 - 2503F + 0x24e6, 0x2514, 0x2546, 0x257e, 0x25b0, 0x2607, 0x263f, 0x2674, + 0x26ce, 0x272b, 0x2757, 0x276d, 0x2786, 0x279c, 0x27cb, 0x27fd, + 0x2819, 0x2854, 0x28c0, 0x291a, 0x292a, 0x2965, 0x29c8, 0x29f8, + 0x2a1e, 0x2a31, 0x2a44, 0x2a5a, 0x2a79, 0x2a98, 0x2ac7, 0x2b06, + 0x2b54, 0x2b93, 0x2bed, 0x2c67, 0x2c83, 0x2cac, 0x2ccc, 0x2cfe, + 0x2d42, 0x2d6b, 0x2d97, 0x2dff, 0x2e2e, 0x2e5a, 0x2e70, 0x2e86, + 0x2e9c, 0x2ed1, 0x2f09, 0x2f3e, 0x2f98, 0x2ff2, 0x3043, 0x306f, + 0x3085, 0x3095, 0x30c7, 0x312a, 0x3193, 0x31e3, 0x31f3, 0x3240, + // Entry 25040 - 2507F + 0x32e3, 0x333a, 0x337c, 0x33ae, 0x33be, 0x33f6, 0x3438, 0x3474, + 0x34a6, 0x34ed, 0x3543, 0x3559, 0x3569, 0x35be, 0x35d4, 0x35fd, + 0x3639, 0x366f, 0x3695, 0x36ab, 0x36c7, 0x36e0, 0x36ff, 0x3712, + 0x3725, 0x3742, 0x3762, 0x377b, 0x379e, 0x37c4, 0x37f6, 0x383a, + 0x3860, 0x38ae, 0x38ff, 0x392b, 0x395d, 0x39b7, 0x39f5, 0x3a11, + 0x3a27, 0x3a5c, 0x3aad, 0x290a, 0x32a8, 0x19c2, 0x1ae9, 0x1d38, + 0x1d77, 0x22b0, 0x2d5b, 0x2dd9, 0x358c, 0x009e, 0x0035, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1a7b, 0x1abd, 0x1b44, 0x1b8f, 0x1be0, + // Entry 25080 - 250BF + 0x1c31, 0x1c88, 0x1cd6, 0x1d12, 0x1dcc, 0x1e17, 0x1e74, 0x1ec5, + 0x1f01, 0x1f5b, 0x1fcd, 0x203c, 0x20a8, 0x210e, 0x2159, 0x21aa, + 0xffff, 0xffff, 0x221e, 0xffff, 0x2294, 0xffff, 0x2305, 0x2338, + 0x2365, 0x23b0, 0xffff, 0xffff, 0x242d, 0x2475, 0x24b7, 0xffff, + 0xffff, 0xffff, 0x2562, 0xffff, 0x25cf, 0x2623, 0xffff, 0x2690, + 0x26f3, 0x2741, 0xffff, 0xffff, 0xffff, 0xffff, 0x27e4, 0xffff, + 0xffff, 0x2879, 0x28e5, 0xffff, 0xffff, 0x2990, 0x29d8, 0x2a0b, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ada, 0x2b22, + // Entry 250C0 - 250FF + 0x2b6d, 0x2ba3, 0x2c2a, 0xffff, 0xffff, 0x2cbc, 0xffff, 0x2d20, + 0xffff, 0xffff, 0x2db0, 0xffff, 0x2e44, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2eed, 0xffff, 0x2f5d, 0x2fb7, 0x3011, 0x3059, 0xffff, + 0xffff, 0xffff, 0x30e9, 0x314c, 0x31bb, 0xffff, 0xffff, 0x3274, + 0x3305, 0x3350, 0x3395, 0xffff, 0xffff, 0x340f, 0x344b, 0x348d, + 0xffff, 0x3518, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3613, + 0x364c, 0x3682, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3752, 0xffff, 0xffff, 0x37b1, 0xffff, 0x3818, 0xffff, + // Entry 25100 - 2513F + 0x3879, 0x38cd, 0x3915, 0xffff, 0x397c, 0x39d6, 0xffff, 0xffff, + 0xffff, 0x3a75, 0x3acf, 0xffff, 0xffff, 0x19d5, 0x1b02, 0x1d4e, + 0x1d8d, 0xffff, 0xffff, 0x2dec, 0x35a5, 0x0003, 0x0f7a, 0x1014, + 0x0fc7, 0x004b, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 25140 - 2517F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x004b, 0x0036, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 25180 - 251BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0000, 0x004b, 0x0036, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 251C0 - 251FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0004, + // Entry 25200 - 2523F + 0x0003, 0x0004, 0x0142, 0x01dc, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, + 0x001e, 0x001b, 0x0021, 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, + 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0041, 0x00a6, 0x0000, 0x00e7, 0x00ff, 0x010f, 0x0120, + // Entry 25240 - 2527F + 0x0131, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, + 0x000d, 0x0036, 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, 0x004f, + 0x005d, 0x0077, 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0036, + 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, 0x004f, 0x005d, 0x0077, + 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, 0x0003, 0x0079, 0x0088, + 0x0097, 0x000d, 0x0036, 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, + // Entry 25280 - 252BF + 0x004f, 0x005d, 0x0077, 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x0036, 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, 0x004f, 0x005d, + 0x0077, 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, 0x0002, 0x00a9, + 0x00c8, 0x0003, 0x00ad, 0x00b6, 0x00bf, 0x0007, 0x0036, 0x00f6, + 0x00ff, 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, 0x0007, 0x0036, + 0x0148, 0x014e, 0x0154, 0x0158, 0x015e, 0x0164, 0x0168, 0x0007, + // Entry 252C0 - 252FF + 0x0036, 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, + 0x0003, 0x00cc, 0x00d5, 0x00de, 0x0007, 0x0036, 0x00f6, 0x00ff, + 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, 0x0007, 0x0036, 0x0148, + 0x014e, 0x0154, 0x0158, 0x015e, 0x0164, 0x0168, 0x0007, 0x0036, + 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, 0x0001, + 0x00e9, 0x0003, 0x00ed, 0x0000, 0x00f6, 0x0002, 0x00f0, 0x00f3, + 0x0001, 0x0036, 0x016c, 0x0001, 0x0036, 0x0179, 0x0002, 0x00f9, + 0x00fc, 0x0001, 0x0036, 0x016c, 0x0001, 0x0036, 0x0179, 0x0003, + // Entry 25300 - 2533F + 0x0109, 0x0000, 0x0103, 0x0001, 0x0105, 0x0002, 0x0036, 0x018a, + 0x01c9, 0x0001, 0x010b, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, + 0x011d, 0x0117, 0x0114, 0x011a, 0x0001, 0x0002, 0x043a, 0x0001, + 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, + 0x0004, 0x012e, 0x0128, 0x0125, 0x012b, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0004, 0x013f, 0x0139, 0x0136, 0x013c, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + // Entry 25340 - 2537F + 0x0000, 0x03c6, 0x003a, 0x0000, 0x0000, 0x0000, 0x017d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x018c, 0x0000, 0x0000, 0x019b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01aa, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x01be, 0x0000, 0x0000, 0x01cd, 0x0003, 0x0000, 0x0000, + // Entry 25380 - 253BF + 0x0181, 0x0002, 0x0184, 0x0188, 0x0002, 0x0036, 0x0207, 0x0207, + 0x0002, 0x0036, 0x0218, 0x0218, 0x0003, 0x0000, 0x0000, 0x0190, + 0x0002, 0x0193, 0x0197, 0x0002, 0x0036, 0x0234, 0x0234, 0x0002, + 0x0036, 0x0242, 0x0242, 0x0003, 0x0000, 0x0000, 0x019f, 0x0002, + 0x01a2, 0x01a6, 0x0002, 0x0036, 0x025f, 0x025f, 0x0002, 0x0036, + 0x0272, 0x0272, 0x0003, 0x0000, 0x01ae, 0x01b3, 0x0003, 0x0000, + 0x1b2f, 0x2965, 0x1b3f, 0x0002, 0x01b6, 0x01ba, 0x0002, 0x0036, + 0x028f, 0x028f, 0x0002, 0x0036, 0x02a1, 0x02a1, 0x0003, 0x0000, + // Entry 253C0 - 253FF + 0x0000, 0x01c2, 0x0002, 0x01c5, 0x01c9, 0x0002, 0x0036, 0x02bf, + 0x02bf, 0x0002, 0x0036, 0x02ce, 0x02ce, 0x0003, 0x0000, 0x0000, + 0x01d1, 0x0002, 0x01d4, 0x01d8, 0x0002, 0x0036, 0x02e7, 0x02e7, + 0x0002, 0x0036, 0x02f7, 0x02f7, 0x0004, 0x01e1, 0x01e6, 0x0000, + 0x0000, 0x0003, 0x0000, 0x1dc7, 0x2936, 0x293d, 0x0001, 0x0000, + 0x1de0, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, + // Entry 25400 - 2543F + 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, + 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, + 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, + 0x0005, 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x224a, 0x224e, + 0x22d4, 0x22d8, 0x22dc, 0x2236, 0x22e0, 0x21e2, 0x000d, 0x0005, + 0xffff, 0x0666, 0x066e, 0x22e4, 0x22ea, 0x224a, 0x22f2, 0x22f8, + 0x22ff, 0x2306, 0x230f, 0x2316, 0x06ae, 0x0002, 0x0000, 0x0057, + // Entry 25440 - 2547F + 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x296e, 0x2382, 0x296e, + 0x2483, 0x2483, 0x2382, 0x2970, 0x22ec, 0x22ee, 0x22f0, 0x0002, + 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, + 0x06b6, 0x06ba, 0x06be, 0x06c2, 0x231e, 0x2322, 0x06ce, 0x0007, + 0x0036, 0x0313, 0x031d, 0x0327, 0x032f, 0x0338, 0x0341, 0x0348, + 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2483, 0x2483, 0x2483, + 0x2483, 0x2382, 0x2055, 0x2483, 0x0001, 0x008d, 0x0003, 0x0091, + 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, + // Entry 25480 - 254BF + 0x0717, 0x0005, 0x0005, 0xffff, 0x071a, 0x0721, 0x0728, 0x072f, + 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, + 0x00ab, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, 0x0002, + 0x00b1, 0x00b4, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, + 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0036, + 0x0361, 0x0371, 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, + 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, + // Entry 254C0 - 254FF + 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 25500 - 2553F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, + 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, + 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, 0x0036, 0x0381, + 0x0001, 0x0131, 0x0001, 0x0036, 0x0387, 0x0001, 0x0136, 0x0001, + 0x0016, 0x0207, 0x0001, 0x013b, 0x0001, 0x0036, 0x038c, 0x0002, + 0x0141, 0x0144, 0x0001, 0x0036, 0x0393, 0x0003, 0x0036, 0x0399, + 0x039e, 0x03a2, 0x0001, 0x014b, 0x0001, 0x0036, 0x03a8, 0x0001, + 0x0150, 0x0001, 0x0009, 0x0308, 0x0001, 0x0155, 0x0001, 0x0036, + // Entry 25540 - 2557F + 0x03b5, 0x0001, 0x015a, 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, + 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, 0x0395, 0x079d, 0x0011, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0041, + 0x0259, 0x0000, 0x02b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0323, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001f, + 0x0000, 0x0030, 0x0004, 0x002d, 0x0027, 0x0024, 0x002a, 0x0001, + 0x0036, 0x03c9, 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, + 0x0001, 0x001e, 0x1a8e, 0x0004, 0x003e, 0x0038, 0x0035, 0x003b, + // Entry 25580 - 255BF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x004a, 0x00af, 0x0106, + 0x013b, 0x020c, 0x0226, 0x0237, 0x0248, 0x0002, 0x004d, 0x007e, + 0x0003, 0x0051, 0x0060, 0x006f, 0x000d, 0x0036, 0xffff, 0x03dc, + 0x03e6, 0x03f0, 0x03fa, 0x0404, 0x040e, 0x0418, 0x0422, 0x042c, + 0x0436, 0x0440, 0x044a, 0x000d, 0x0036, 0xffff, 0x0454, 0x0458, + 0x045c, 0x0460, 0x045c, 0x0454, 0x0454, 0x0460, 0x0464, 0x0468, + 0x046c, 0x0470, 0x000d, 0x0036, 0xffff, 0x0474, 0x048a, 0x04a6, + // Entry 255C0 - 255FF + 0x04b6, 0x04c9, 0x04d9, 0x04ec, 0x04ff, 0x0515, 0x0534, 0x0550, + 0x0569, 0x0003, 0x0082, 0x0091, 0x00a0, 0x000d, 0x0036, 0xffff, + 0x03dc, 0x03e6, 0x03f0, 0x03fa, 0x0404, 0x040e, 0x0418, 0x0422, + 0x042c, 0x0436, 0x0440, 0x044a, 0x000d, 0x0036, 0xffff, 0x0454, + 0x0458, 0x045c, 0x0460, 0x045c, 0x0454, 0x0454, 0x0460, 0x0464, + 0x0468, 0x046c, 0x0470, 0x000d, 0x0036, 0xffff, 0x0474, 0x048a, + 0x04a6, 0x04b6, 0x04c9, 0x04d9, 0x04ec, 0x04ff, 0x0515, 0x0534, + 0x0550, 0x0569, 0x0002, 0x00b2, 0x00dc, 0x0005, 0x00b8, 0x00c1, + // Entry 25600 - 2563F + 0x00d3, 0x0000, 0x00ca, 0x0007, 0x0036, 0x0585, 0x058f, 0x0599, + 0x05a3, 0x05ad, 0x05b7, 0x05c1, 0x0007, 0x0036, 0x05cb, 0x0468, + 0x0464, 0x0468, 0x05cf, 0x05d3, 0x05d7, 0x0007, 0x0036, 0x05db, + 0x05e2, 0x05e9, 0x05f0, 0x05f7, 0x05fe, 0x0605, 0x0007, 0x0036, + 0x060c, 0x061c, 0x0635, 0x0651, 0x066d, 0x0689, 0x06a5, 0x0005, + 0x00e2, 0x00eb, 0x00fd, 0x0000, 0x00f4, 0x0007, 0x0036, 0x0585, + 0x058f, 0x0599, 0x05a3, 0x05ad, 0x05b7, 0x05c1, 0x0007, 0x0036, + 0x05cb, 0x0468, 0x0464, 0x0468, 0x05cf, 0x05d3, 0x05d7, 0x0007, + // Entry 25640 - 2567F + 0x0036, 0x05db, 0x05e2, 0x05e9, 0x05f0, 0x05f7, 0x05fe, 0x0605, + 0x0007, 0x0036, 0x060c, 0x061c, 0x0635, 0x0651, 0x066d, 0x0689, + 0x06a5, 0x0002, 0x0109, 0x0122, 0x0003, 0x010d, 0x0114, 0x011b, + 0x0005, 0x0036, 0xffff, 0x06b8, 0x06c2, 0x06cd, 0x06d9, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0036, + 0xffff, 0x06e4, 0x06ff, 0x071b, 0x0738, 0x0003, 0x0126, 0x012d, + 0x0134, 0x0005, 0x0036, 0xffff, 0x06b8, 0x06c2, 0x06cd, 0x06d9, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + // Entry 25680 - 256BF + 0x0036, 0xffff, 0x06e4, 0x06ff, 0x071b, 0x0738, 0x0002, 0x013e, + 0x01a5, 0x0003, 0x0142, 0x0163, 0x0184, 0x0008, 0x014e, 0x0154, + 0x014b, 0x0157, 0x015a, 0x015d, 0x0160, 0x0151, 0x0001, 0x0036, + 0x0754, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x076d, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0036, 0x077e, 0x0001, 0x0036, 0x0789, + 0x0001, 0x0036, 0x07a0, 0x0001, 0x0036, 0x07ab, 0x0008, 0x016f, + 0x0175, 0x016c, 0x0178, 0x017b, 0x017e, 0x0181, 0x0172, 0x0001, + 0x0036, 0x0754, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0036, 0x076d, + // Entry 256C0 - 256FF + 0x0001, 0x0000, 0x21ec, 0x0001, 0x0036, 0x077e, 0x0001, 0x0036, + 0x0789, 0x0001, 0x0036, 0x07a0, 0x0001, 0x0036, 0x07ab, 0x0008, + 0x0190, 0x0196, 0x018d, 0x0199, 0x019c, 0x019f, 0x01a2, 0x0193, + 0x0001, 0x0036, 0x0754, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, + 0x07b6, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0036, 0x07cc, 0x0001, + 0x0036, 0x07dc, 0x0001, 0x0036, 0x07fb, 0x0001, 0x0036, 0x0811, + 0x0003, 0x01a9, 0x01ca, 0x01eb, 0x0008, 0x01b5, 0x01bb, 0x01b2, + 0x01be, 0x01c1, 0x01c4, 0x01c7, 0x01b8, 0x0001, 0x0036, 0x0821, + // Entry 25700 - 2573F + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x0837, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0036, 0x084a, 0x0001, 0x0036, 0x0857, 0x0001, + 0x0036, 0x0876, 0x0001, 0x0036, 0x0889, 0x0008, 0x01d6, 0x01dc, + 0x01d3, 0x01df, 0x01e2, 0x01e5, 0x01e8, 0x01d9, 0x0001, 0x0036, + 0x0821, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x0837, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0036, 0x084a, 0x0001, 0x0036, 0x0857, + 0x0001, 0x0036, 0x0876, 0x0001, 0x0036, 0x0889, 0x0008, 0x01f7, + 0x01fd, 0x01f4, 0x0200, 0x0203, 0x0206, 0x0209, 0x01fa, 0x0001, + // Entry 25740 - 2577F + 0x0036, 0x0821, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x0837, + 0x0001, 0x0036, 0x0896, 0x0001, 0x0036, 0x084a, 0x0001, 0x0036, + 0x0857, 0x0001, 0x0036, 0x0876, 0x0001, 0x0036, 0x0889, 0x0003, + 0x021b, 0x0000, 0x0210, 0x0002, 0x0213, 0x0217, 0x0002, 0x0036, + 0x08ba, 0x0915, 0x0002, 0x0036, 0x08f2, 0x094d, 0x0002, 0x021e, + 0x0222, 0x0002, 0x0036, 0x0967, 0x098f, 0x0002, 0x0036, 0x0974, + 0x099c, 0x0004, 0x0234, 0x022e, 0x022b, 0x0231, 0x0001, 0x0036, + 0x09ae, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0036, 0x09bf, 0x0001, + // Entry 25780 - 257BF + 0x0007, 0x0277, 0x0004, 0x0245, 0x023f, 0x023c, 0x0242, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x0256, 0x0250, 0x024d, 0x0253, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, 0x025f, 0x0000, 0x0000, + 0x0000, 0x02aa, 0x0002, 0x0262, 0x0286, 0x0003, 0x0266, 0x0000, + 0x0276, 0x000e, 0x0036, 0x0a4c, 0x09c8, 0x09db, 0x09f1, 0x0a07, + 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, + // Entry 257C0 - 257FF + 0x0aaf, 0x000e, 0x0036, 0x0a4c, 0x09c8, 0x09db, 0x09f1, 0x0a07, + 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, + 0x0aaf, 0x0003, 0x028a, 0x0000, 0x029a, 0x000e, 0x0036, 0x0a4c, + 0x09c8, 0x09db, 0x09f1, 0x0a07, 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, + 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, 0x0aaf, 0x000e, 0x0036, 0x0a4c, + 0x09c8, 0x09db, 0x09f1, 0x0a07, 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, + 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, 0x0aaf, 0x0001, 0x02ac, 0x0001, + 0x02ae, 0x0001, 0x0000, 0x04ef, 0x0005, 0x02b7, 0x0000, 0x0000, + // Entry 25800 - 2583F + 0x0000, 0x031c, 0x0002, 0x02ba, 0x02eb, 0x0003, 0x02be, 0x02cd, + 0x02dc, 0x000d, 0x0036, 0xffff, 0x0abf, 0x0aca, 0x0ad5, 0x0ae2, + 0x0af0, 0x0afd, 0x0b0b, 0x0b16, 0x0b21, 0x0b2c, 0x0b37, 0x0b46, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, + 0x0036, 0xffff, 0x0b55, 0x0b6e, 0x0b81, 0x0ba5, 0x0bc9, 0x0bf3, + 0x0c1d, 0x0c30, 0x0c43, 0x0c5c, 0x0c6f, 0x0c89, 0x0003, 0x02ef, + 0x02fe, 0x030d, 0x000d, 0x0036, 0xffff, 0x0abf, 0x0aca, 0x0ad5, + // Entry 25840 - 2587F + 0x0ae2, 0x0af0, 0x0afd, 0x0b0b, 0x0b16, 0x0b21, 0x0b2c, 0x0b37, + 0x0b46, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, + 0x000d, 0x0036, 0xffff, 0x0b55, 0x0b6e, 0x0b81, 0x0ba5, 0x0bc9, + 0x0bf3, 0x0c1d, 0x0c30, 0x0c43, 0x0c5c, 0x0c6f, 0x0c89, 0x0001, + 0x031e, 0x0001, 0x0320, 0x0001, 0x0000, 0x06c8, 0x0005, 0x0329, + 0x0000, 0x0000, 0x0000, 0x038e, 0x0002, 0x032c, 0x035d, 0x0003, + 0x0330, 0x033f, 0x034e, 0x000d, 0x0036, 0xffff, 0x0ca0, 0x0cbf, + // Entry 25880 - 258BF + 0x0ce1, 0x0cf7, 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, 0x0d66, + 0x0d70, 0x0d86, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, + 0x2398, 0x000d, 0x0036, 0xffff, 0x0ca0, 0x0cbf, 0x0ce1, 0x0cf7, + 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, 0x0d66, 0x0d70, 0x0d86, + 0x0003, 0x0361, 0x0370, 0x037f, 0x000d, 0x0036, 0xffff, 0x0ca0, + 0x0cbf, 0x0ce1, 0x0cf7, 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, + 0x0d66, 0x0d70, 0x0d86, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 258C0 - 258FF + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x2220, 0x2398, 0x000d, 0x0036, 0xffff, 0x0ca0, 0x0cbf, 0x0ce1, + 0x0cf7, 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, 0x0d66, 0x0d70, + 0x0d86, 0x0001, 0x0390, 0x0001, 0x0392, 0x0001, 0x0000, 0x1a1d, + 0x0040, 0x03d6, 0x0000, 0x0000, 0x03db, 0x03f2, 0x0409, 0x0420, + 0x0437, 0x0449, 0x045b, 0x0472, 0x0489, 0x04a0, 0x04bb, 0x04d6, + 0x0000, 0x0000, 0x0000, 0x04f1, 0x050a, 0x0523, 0x0000, 0x0000, + 0x0000, 0x053c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0541, + // Entry 25900 - 2593F + 0x0555, 0x0569, 0x057d, 0x0591, 0x05a5, 0x05b9, 0x05cd, 0x05e1, + 0x05f5, 0x0609, 0x061d, 0x0631, 0x0645, 0x0659, 0x066d, 0x0681, + 0x0695, 0x06a9, 0x06bd, 0x06d1, 0x0000, 0x06e5, 0x0000, 0x06ea, + 0x0700, 0x0712, 0x0724, 0x073a, 0x074c, 0x075e, 0x0774, 0x0786, + 0x0798, 0x0001, 0x03d8, 0x0001, 0x0036, 0x0d9c, 0x0003, 0x03df, + 0x03e2, 0x03e7, 0x0001, 0x0036, 0x0dac, 0x0003, 0x0036, 0x0db9, + 0x0dd6, 0x0dea, 0x0002, 0x03ea, 0x03ee, 0x0002, 0x0036, 0x0e0d, + 0x0e0d, 0x0002, 0x0036, 0x0e2d, 0x0e2d, 0x0003, 0x03f6, 0x03f9, + // Entry 25940 - 2597F + 0x03fe, 0x0001, 0x0036, 0x0e48, 0x0003, 0x0036, 0x0db9, 0x0dd6, + 0x0dea, 0x0002, 0x0401, 0x0405, 0x0002, 0x0036, 0x0e4d, 0x0e4d, + 0x0002, 0x0036, 0x0e2d, 0x0e2d, 0x0003, 0x040d, 0x0410, 0x0415, + 0x0001, 0x0036, 0x0e48, 0x0003, 0x0036, 0x0db9, 0x0dd6, 0x0dea, + 0x0002, 0x0418, 0x041c, 0x0002, 0x0036, 0x0e4d, 0x0e4d, 0x0002, + 0x0036, 0x0e2d, 0x0e2d, 0x0003, 0x0424, 0x0427, 0x042c, 0x0001, + 0x0036, 0x0e61, 0x0003, 0x0036, 0x0e7a, 0x0ea6, 0x0ec9, 0x0002, + 0x042f, 0x0433, 0x0002, 0x0036, 0x0ef8, 0x0ef8, 0x0002, 0x0036, + // Entry 25980 - 259BF + 0x0f18, 0x0f18, 0x0003, 0x043b, 0x0000, 0x043e, 0x0001, 0x0036, + 0x0f42, 0x0002, 0x0441, 0x0445, 0x0002, 0x0036, 0x0ef8, 0x0ef8, + 0x0002, 0x0036, 0x0f53, 0x0f53, 0x0003, 0x044d, 0x0000, 0x0450, + 0x0001, 0x0036, 0x0f42, 0x0002, 0x0453, 0x0457, 0x0002, 0x0036, + 0x0ef8, 0x0ef8, 0x0002, 0x0036, 0x0f53, 0x0f53, 0x0003, 0x045f, + 0x0462, 0x0467, 0x0001, 0x0036, 0x0f72, 0x0003, 0x0036, 0x0f7c, + 0x0f99, 0x0fb0, 0x0002, 0x046a, 0x046e, 0x0002, 0x0036, 0x0fd3, + 0x0fd3, 0x0002, 0x0036, 0x0fe7, 0x0fe7, 0x0003, 0x0476, 0x0479, + // Entry 259C0 - 259FF + 0x047e, 0x0001, 0x0036, 0x0f72, 0x0003, 0x0036, 0x0f7c, 0x0f99, + 0x0fb0, 0x0002, 0x0481, 0x0485, 0x0002, 0x0036, 0x0fd3, 0x0fd3, + 0x0002, 0x0036, 0x0fe7, 0x0fe7, 0x0003, 0x048d, 0x0490, 0x0495, + 0x0001, 0x0036, 0x0f72, 0x0003, 0x0036, 0x0f7c, 0x0f99, 0x0fb0, + 0x0002, 0x0498, 0x049c, 0x0002, 0x0036, 0x0fd3, 0x0fd3, 0x0002, + 0x0036, 0x0fe7, 0x0fe7, 0x0004, 0x04a5, 0x04a8, 0x04ad, 0x04b8, + 0x0001, 0x0036, 0x060c, 0x0003, 0x0036, 0x1002, 0x1028, 0x1045, + 0x0002, 0x04b0, 0x04b4, 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, + // Entry 25A00 - 25A3F + 0x0036, 0x108b, 0x108b, 0x0001, 0x0036, 0x10ac, 0x0004, 0x04c0, + 0x04c3, 0x04c8, 0x04d3, 0x0001, 0x0036, 0x10cd, 0x0003, 0x0036, + 0x1002, 0x1028, 0x1045, 0x0002, 0x04cb, 0x04cf, 0x0002, 0x0036, + 0x1071, 0x1071, 0x0002, 0x0036, 0x10d5, 0x10d5, 0x0001, 0x0036, + 0x10ac, 0x0004, 0x04db, 0x04de, 0x04e3, 0x04ee, 0x0001, 0x0036, + 0x10cd, 0x0003, 0x0036, 0x1002, 0x1028, 0x1045, 0x0002, 0x04e6, + 0x04ea, 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, 0x0036, 0x108b, + 0x108b, 0x0001, 0x0036, 0x10ac, 0x0003, 0x04f5, 0x04f8, 0x04ff, + // Entry 25A40 - 25A7F + 0x0001, 0x0036, 0x10eb, 0x0005, 0x0036, 0x110e, 0x111e, 0x112b, + 0x10f5, 0x1138, 0x0002, 0x0502, 0x0506, 0x0002, 0x0036, 0x1142, + 0x1142, 0x0002, 0x0036, 0x1156, 0x1156, 0x0003, 0x050e, 0x0511, + 0x0518, 0x0001, 0x0036, 0x10eb, 0x0005, 0x0036, 0x110e, 0x111e, + 0x112b, 0x10f5, 0x1138, 0x0002, 0x051b, 0x051f, 0x0002, 0x0036, + 0x1142, 0x1142, 0x0002, 0x0036, 0x1156, 0x1156, 0x0003, 0x0527, + 0x052a, 0x0531, 0x0001, 0x0036, 0x10eb, 0x0005, 0x0036, 0x110e, + 0x111e, 0x112b, 0x10f5, 0x1138, 0x0002, 0x0534, 0x0538, 0x0002, + // Entry 25A80 - 25ABF + 0x0036, 0x1142, 0x1142, 0x0002, 0x0036, 0x1156, 0x1156, 0x0001, + 0x053e, 0x0001, 0x0036, 0x1171, 0x0003, 0x0000, 0x0545, 0x054a, + 0x0003, 0x0036, 0x118e, 0x11b1, 0x11cb, 0x0002, 0x054d, 0x0551, + 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, 0x0036, 0x11f4, 0x108b, + 0x0003, 0x0000, 0x0559, 0x055e, 0x0003, 0x0036, 0x118e, 0x11b1, + 0x11cb, 0x0002, 0x0561, 0x0565, 0x0002, 0x0036, 0x1071, 0x1071, + 0x0002, 0x0036, 0x108b, 0x108b, 0x0003, 0x0000, 0x056d, 0x0572, + 0x0003, 0x0036, 0x118e, 0x11b1, 0x11cb, 0x0002, 0x0575, 0x0579, + // Entry 25AC0 - 25AFF + 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, 0x0036, 0x11f4, 0x108b, + 0x0003, 0x0000, 0x0581, 0x0586, 0x0003, 0x0036, 0x1212, 0x123b, + 0x125b, 0x0002, 0x0589, 0x058d, 0x0002, 0x0036, 0x128a, 0x128a, + 0x0002, 0x0036, 0x12aa, 0x12aa, 0x0003, 0x0000, 0x0595, 0x059a, + 0x0003, 0x0036, 0x12d4, 0x12ec, 0x12fe, 0x0002, 0x059d, 0x05a1, + 0x0002, 0x0036, 0x128a, 0x128a, 0x0002, 0x0036, 0x12aa, 0x12aa, + 0x0003, 0x0000, 0x05a9, 0x05ae, 0x0003, 0x0036, 0x1314, 0x1327, + 0x1336, 0x0002, 0x05b1, 0x05b5, 0x0002, 0x0036, 0x128a, 0x128a, + // Entry 25B00 - 25B3F + 0x0002, 0x0036, 0x12aa, 0x12aa, 0x0003, 0x0000, 0x05bd, 0x05c2, + 0x0003, 0x0036, 0x1349, 0x1375, 0x1398, 0x0002, 0x05c5, 0x05c9, + 0x0002, 0x0036, 0x13ca, 0x13ca, 0x0002, 0x0036, 0x13ed, 0x13ed, + 0x0003, 0x0000, 0x05d1, 0x05d6, 0x0003, 0x0036, 0x141a, 0x1432, + 0x1444, 0x0002, 0x05d9, 0x05dd, 0x0002, 0x0036, 0x13ca, 0x13ca, + 0x0002, 0x0036, 0x13ed, 0x13ed, 0x0003, 0x0000, 0x05e5, 0x05ea, + 0x0003, 0x0036, 0x145a, 0x146c, 0x147b, 0x0002, 0x05ed, 0x05f1, + 0x0002, 0x0036, 0x13ca, 0x13ca, 0x0002, 0x0036, 0x13ed, 0x13ed, + // Entry 25B40 - 25B7F + 0x0003, 0x0000, 0x05f9, 0x05fe, 0x0003, 0x0036, 0x1490, 0x14bc, + 0x14df, 0x0002, 0x0601, 0x0605, 0x0002, 0x0036, 0x1511, 0x1511, + 0x0002, 0x0036, 0x1534, 0x1534, 0x0003, 0x0000, 0x060d, 0x0612, + 0x0003, 0x0036, 0x1561, 0x1579, 0x158b, 0x0002, 0x0615, 0x0619, + 0x0002, 0x0036, 0x1511, 0x1511, 0x0002, 0x0036, 0x1534, 0x1534, + 0x0003, 0x0000, 0x0621, 0x0626, 0x0003, 0x0036, 0x15a1, 0x15b6, + 0x15c5, 0x0002, 0x0629, 0x062d, 0x0002, 0x0036, 0x1511, 0x1511, + 0x0002, 0x0036, 0x1534, 0x1534, 0x0003, 0x0000, 0x0635, 0x063a, + // Entry 25B80 - 25BBF + 0x0003, 0x0036, 0x15d8, 0x1604, 0x1627, 0x0002, 0x063d, 0x0641, + 0x0002, 0x0036, 0x1659, 0x1659, 0x0002, 0x0036, 0x167c, 0x167c, + 0x0003, 0x0000, 0x0649, 0x064e, 0x0003, 0x0036, 0x16a9, 0x16c1, + 0x16d3, 0x0002, 0x0651, 0x0655, 0x0002, 0x0036, 0x1659, 0x1659, + 0x0002, 0x0036, 0x167c, 0x167c, 0x0003, 0x0000, 0x065d, 0x0662, + 0x0003, 0x0036, 0x16e9, 0x16fe, 0x170d, 0x0002, 0x0665, 0x0669, + 0x0002, 0x0036, 0x1659, 0x1659, 0x0002, 0x0036, 0x167c, 0x167c, + 0x0003, 0x0000, 0x0671, 0x0676, 0x0003, 0x0036, 0x1720, 0x174c, + // Entry 25BC0 - 25BFF + 0x176f, 0x0002, 0x0679, 0x067d, 0x0002, 0x0036, 0x17a1, 0x17a1, + 0x0002, 0x0036, 0x17c4, 0x17c4, 0x0003, 0x0000, 0x0685, 0x068a, + 0x0003, 0x0036, 0x17f1, 0x1809, 0x181b, 0x0002, 0x068d, 0x0691, + 0x0002, 0x0036, 0x17a1, 0x17a1, 0x0002, 0x0036, 0x17c4, 0x17c4, + 0x0003, 0x0000, 0x0699, 0x069e, 0x0003, 0x0036, 0x1831, 0x1846, + 0x1855, 0x0002, 0x06a1, 0x06a5, 0x0002, 0x0036, 0x17a1, 0x17a1, + 0x0002, 0x0036, 0x17c4, 0x17c4, 0x0003, 0x0000, 0x06ad, 0x06b2, + 0x0003, 0x0036, 0x1868, 0x188b, 0x18a5, 0x0002, 0x06b5, 0x06b9, + // Entry 25C00 - 25C3F + 0x0002, 0x0036, 0x18ce, 0x18ce, 0x0002, 0x0036, 0x18e8, 0x18e8, + 0x0003, 0x0000, 0x06c1, 0x06c6, 0x0003, 0x0036, 0x190c, 0x1924, + 0x1936, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x0036, 0x18ce, 0x18ce, + 0x0002, 0x0036, 0x18e8, 0x18e8, 0x0003, 0x0000, 0x06d5, 0x06da, + 0x0003, 0x0036, 0x194c, 0x1961, 0x1970, 0x0002, 0x06dd, 0x06e1, + 0x0002, 0x0036, 0x18ce, 0x18ce, 0x0002, 0x0036, 0x18e8, 0x18e8, + 0x0001, 0x06e7, 0x0001, 0x0036, 0x1983, 0x0003, 0x06ee, 0x06f1, + 0x06f5, 0x0001, 0x0036, 0x19a9, 0x0002, 0x0036, 0xffff, 0x19b9, + // Entry 25C40 - 25C7F + 0x0002, 0x06f8, 0x06fc, 0x0002, 0x0036, 0x19d3, 0x19d3, 0x0002, + 0x0036, 0x19ea, 0x19ea, 0x0003, 0x0704, 0x0000, 0x0707, 0x0001, + 0x0036, 0x1a0b, 0x0002, 0x070a, 0x070e, 0x0002, 0x0036, 0x19d3, + 0x19d3, 0x0002, 0x0036, 0x1a13, 0x1a13, 0x0003, 0x0716, 0x0000, + 0x0719, 0x0001, 0x0036, 0x1a0b, 0x0002, 0x071c, 0x0720, 0x0002, + 0x0036, 0x19d3, 0x19d3, 0x0002, 0x0036, 0x1a13, 0x1a13, 0x0003, + 0x0728, 0x072b, 0x072f, 0x0001, 0x0036, 0x1a28, 0x0002, 0x0036, + 0xffff, 0x1a35, 0x0002, 0x0732, 0x0736, 0x0002, 0x0036, 0x1a4c, + // Entry 25C80 - 25CBF + 0x1a4c, 0x0002, 0x0036, 0x1a60, 0x1a60, 0x0003, 0x073e, 0x0000, + 0x0741, 0x0001, 0x0036, 0x1a7e, 0x0002, 0x0744, 0x0748, 0x0002, + 0x0036, 0x1a4c, 0x1a4c, 0x0002, 0x0036, 0x1a86, 0x1a86, 0x0003, + 0x0750, 0x0000, 0x0753, 0x0001, 0x0036, 0x1a7e, 0x0002, 0x0756, + 0x075a, 0x0002, 0x0036, 0x1a4c, 0x1a4c, 0x0002, 0x0036, 0x1a86, + 0x1a86, 0x0003, 0x0762, 0x0765, 0x0769, 0x0001, 0x0036, 0x1a9b, + 0x0002, 0x0036, 0xffff, 0x1aa8, 0x0002, 0x076c, 0x0770, 0x0002, + 0x0036, 0x1ab5, 0x1ab5, 0x0002, 0x0036, 0x1ac9, 0x1ac9, 0x0003, + // Entry 25CC0 - 25CFF + 0x0778, 0x0000, 0x077b, 0x0001, 0x0036, 0x1ae7, 0x0002, 0x077e, + 0x0782, 0x0002, 0x0036, 0x1ab5, 0x1ab5, 0x0002, 0x0036, 0x1aef, + 0x1aef, 0x0003, 0x078a, 0x0000, 0x078d, 0x0001, 0x0036, 0x1ae7, + 0x0002, 0x0790, 0x0794, 0x0002, 0x0036, 0x1ab5, 0x1ab5, 0x0002, + 0x0036, 0x1aef, 0x1aef, 0x0001, 0x079a, 0x0001, 0x0036, 0x1b04, + 0x0004, 0x07a2, 0x07a7, 0x07ac, 0x07bb, 0x0003, 0x0000, 0x1dc7, + 0x2936, 0x293d, 0x0003, 0x0036, 0x1b2d, 0x1b3c, 0x1b63, 0x0002, + 0x0000, 0x07af, 0x0003, 0x0000, 0x07b6, 0x07b3, 0x0001, 0x0036, + // Entry 25D00 - 25D3F + 0x1b93, 0x0003, 0x0036, 0xffff, 0x1bde, 0x1c20, 0x0002, 0x0000, + 0x07be, 0x0003, 0x0858, 0x08ee, 0x07c2, 0x0094, 0x0036, 0x1c68, + 0x1c8e, 0x1ccd, 0x1d0c, 0x1d7b, 0x1e48, 0x1ee9, 0x1fcb, 0x211d, + 0x2272, 0x23c2, 0xffff, 0x24e1, 0x2573, 0x261d, 0x26ec, 0x27ce, + 0x288e, 0x298f, 0x2ac2, 0x2c15, 0x2d22, 0x2e10, 0x2ee5, 0x2fc4, + 0x3057, 0x3077, 0x30c0, 0x3147, 0x31b0, 0x323f, 0x327f, 0x3314, + 0x33a3, 0x3450, 0x34e3, 0x3516, 0x357b, 0x363b, 0x371b, 0x378a, + 0x37aa, 0x37dd, 0x3858, 0x390b, 0x3970, 0x3a68, 0x3b21, 0x3baf, + // Entry 25D40 - 25D7F + 0x3ca4, 0x3d89, 0x3df8, 0x3e3a, 0x3ea2, 0x3ece, 0x3f20, 0x3fb3, + 0x3ff8, 0x407f, 0x4195, 0x425a, 0x42b2, 0x430f, 0x43ea, 0x448e, + 0x4503, 0x4526, 0x457e, 0x45aa, 0x45f2, 0x463a, 0x4699, 0x473a, + 0x47e4, 0x4888, 0xffff, 0x4909, 0x494e, 0x49aa, 0x4a1f, 0x4a6e, + 0x4b0d, 0x4b36, 0x4b96, 0x4c19, 0x4c7e, 0x4d05, 0x4d2b, 0x4d54, + 0x4d96, 0x4dfb, 0x4e7c, 0x4ef4, 0x4ff7, 0x50f7, 0x51af, 0x5230, + 0x5256, 0x5273, 0x52cc, 0x53af, 0x548b, 0x5530, 0x554a, 0x55cc, + 0x56bf, 0x577b, 0x5819, 0x58a6, 0x58c3, 0x5929, 0x59ca, 0x5a65, + // Entry 25D80 - 25DBF + 0x5af8, 0x5b84, 0x5c53, 0x5c79, 0x5c99, 0x5cbf, 0x5ce8, 0x5d2e, + 0xffff, 0x5dd2, 0x5e47, 0x5e89, 0x5eb2, 0x5ef7, 0x5f30, 0x5f56, + 0x5f73, 0x5fb0, 0x602b, 0x6051, 0x6091, 0x6106, 0x614f, 0x61e2, + 0x6225, 0x62cc, 0x6376, 0x63f7, 0x6452, 0x651d, 0x65b0, 0x65d3, + 0x6609, 0x6669, 0x6725, 0x0094, 0x0036, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1d42, 0x1e28, 0x1ec3, 0x1f70, 0x20bc, 0x221a, 0x235d, + 0xffff, 0x24c7, 0x2550, 0x25f4, 0x26aa, 0x27ab, 0x284f, 0x2947, + 0x2a5a, 0x2bcd, 0x2ce0, 0x2de1, 0x2ea9, 0x2f98, 0xffff, 0xffff, + // Entry 25DC0 - 25DFF + 0x309a, 0xffff, 0x3186, 0xffff, 0x325f, 0x32fa, 0x3383, 0x3424, + 0xffff, 0xffff, 0x3555, 0x3602, 0x3701, 0xffff, 0xffff, 0xffff, + 0x381c, 0xffff, 0x3931, 0x3a29, 0xffff, 0x3b76, 0x3c5c, 0x3d6f, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3ef4, 0xffff, 0xffff, 0x4034, + 0x4150, 0xffff, 0xffff, 0x42d2, 0x43c4, 0x4471, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x467c, 0x4714, 0x47c1, 0x4865, + 0xffff, 0xffff, 0xffff, 0x498d, 0xffff, 0x4a3c, 0xffff, 0xffff, + 0x4b72, 0xffff, 0x4c58, 0xffff, 0xffff, 0xffff, 0xffff, 0x4dd8, + // Entry 25E00 - 25E3F + 0xffff, 0x4e9f, 0x4fab, 0x50ca, 0x518c, 0xffff, 0xffff, 0xffff, + 0x5293, 0x5379, 0x5456, 0xffff, 0xffff, 0x5589, 0x568d, 0x575e, + 0x57f0, 0xffff, 0xffff, 0x5903, 0x59b0, 0x5a39, 0xffff, 0x5b3a, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5d08, 0xffff, 0x5db5, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5f90, + 0xffff, 0xffff, 0x6074, 0xffff, 0x6123, 0xffff, 0x6202, 0x62a6, + 0x6353, 0xffff, 0x6420, 0x64f1, 0xffff, 0xffff, 0xffff, 0x6643, + 0x66f0, 0x0094, 0x0036, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dd6, + // Entry 25E40 - 25E7F + 0x1e8a, 0x1f31, 0x2048, 0x21a0, 0x22ec, 0x2449, 0xffff, 0x251d, + 0x25b8, 0x2668, 0x2750, 0x2813, 0x28ef, 0x29f9, 0x2b4c, 0x2c7f, + 0x2d86, 0x2e61, 0x2f43, 0x3012, 0xffff, 0xffff, 0x3108, 0xffff, + 0x31fc, 0xffff, 0x32c1, 0x3350, 0x33e5, 0x349e, 0xffff, 0xffff, + 0x35c3, 0x3696, 0x3757, 0xffff, 0xffff, 0xffff, 0x38b6, 0xffff, + 0x39d1, 0x3ac9, 0xffff, 0x3c0a, 0x3d0e, 0x3dc5, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3f6e, 0xffff, 0xffff, 0x40ec, 0x41fc, 0xffff, + 0xffff, 0x436e, 0x4432, 0x44cd, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 25E80 - 25EBF + 0xffff, 0xffff, 0x46d8, 0x4782, 0x4829, 0x48cd, 0xffff, 0xffff, + 0xffff, 0x49e9, 0xffff, 0x4ac2, 0xffff, 0xffff, 0x4bdc, 0xffff, + 0x4cc6, 0xffff, 0xffff, 0xffff, 0xffff, 0x4e40, 0xffff, 0x4f43, + 0x5065, 0x5146, 0x51f4, 0xffff, 0xffff, 0xffff, 0x5327, 0x5407, + 0x54e2, 0xffff, 0xffff, 0x5631, 0x5713, 0x57ba, 0x5864, 0xffff, + 0xffff, 0x5971, 0x5a06, 0x5ab3, 0xffff, 0x5bf0, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x5d76, 0xffff, 0x5e11, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5ff2, 0xffff, 0xffff, + // Entry 25EC0 - 25EFF + 0x60d0, 0xffff, 0x619d, 0xffff, 0x626a, 0x6314, 0x63bb, 0xffff, + 0x64a6, 0x656b, 0xffff, 0xffff, 0xffff, 0x66b1, 0x677c, 0x0002, + 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, + 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1fc1, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, + 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, + // Entry 25F00 - 25F3F + 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0037, 0xffff, + 0x0000, 0x0004, 0x0008, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, + 0x0022, 0x0026, 0x002a, 0x002e, 0x000d, 0x0037, 0xffff, 0x0033, + 0x003c, 0x0044, 0x004c, 0x0053, 0x0059, 0x005f, 0x0065, 0x006b, + 0x0075, 0x007d, 0x0088, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, + 0xffff, 0x23db, 0x22e6, 0x296e, 0x23db, 0x296e, 0x23db, 0x23db, + 0x2972, 0x24fb, 0x2975, 0x22ee, 0x22f0, 0x0002, 0x0069, 0x007f, + 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0037, 0x0094, 0x0098, + // Entry 25F40 - 25F7F + 0x009c, 0x00a3, 0x00a9, 0x00ad, 0x00b4, 0x0007, 0x0037, 0x00b8, + 0x00bf, 0x00c6, 0x00d0, 0x00d9, 0x00e0, 0x00ea, 0x0002, 0x0000, + 0x0082, 0x0007, 0x0000, 0x23db, 0x2970, 0x25bc, 0x25bc, 0x2970, + 0x2970, 0x2970, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, + 0x0005, 0x0037, 0xffff, 0x00f1, 0x00f8, 0x00ff, 0x0106, 0x0005, + 0x0037, 0xffff, 0x010d, 0x0121, 0x0136, 0x014e, 0x0001, 0x00a1, + 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, + 0x0037, 0x0165, 0x0001, 0x0037, 0x016d, 0x0002, 0x00b1, 0x00b4, + // Entry 25F80 - 25FBF + 0x0001, 0x0037, 0x0165, 0x0001, 0x0037, 0x016d, 0x0003, 0x00c1, + 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0037, 0x0177, 0x018c, + 0x0001, 0x00c3, 0x0002, 0x0037, 0x01a1, 0x01ab, 0x0004, 0x00d5, + 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, + 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, + 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, + // Entry 25FC0 - 25FFF + 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, + 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, + 0x0162, 0x0001, 0x012c, 0x0001, 0x0037, 0x01b5, 0x0001, 0x0131, + // Entry 26000 - 2603F + 0x0001, 0x0037, 0x01bc, 0x0001, 0x0136, 0x0001, 0x0037, 0x01c4, + 0x0001, 0x013b, 0x0001, 0x0037, 0x01ca, 0x0002, 0x0141, 0x0144, + 0x0001, 0x0037, 0x01d0, 0x0003, 0x0037, 0x01d4, 0x01dd, 0x01e3, + 0x0001, 0x014b, 0x0001, 0x0037, 0x01ea, 0x0001, 0x0150, 0x0001, + 0x0037, 0x01f8, 0x0001, 0x0155, 0x0001, 0x0037, 0x020c, 0x0001, + 0x015a, 0x0001, 0x0037, 0x0213, 0x0001, 0x015f, 0x0001, 0x0037, + 0x021b, 0x0001, 0x0164, 0x0001, 0x0037, 0x0222, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 26040 - 2607F + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0019, 0xffff, 0x0003, + 0x2420, 0x2424, 0x000f, 0x2429, 0x242d, 0x2431, 0x2435, 0x2439, + 0x243d, 0x2442, 0x2447, 0x000d, 0x0037, 0xffff, 0x0232, 0x023f, + // Entry 26080 - 260BF + 0x024d, 0x025d, 0x026a, 0x0279, 0x028c, 0x029b, 0x02ab, 0x02b9, + 0x02c8, 0x02e0, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + 0x296e, 0x25bc, 0x25bc, 0x25bc, 0x25bc, 0x2975, 0x296e, 0x22ee, + 0x25bc, 0x2977, 0x2977, 0x2977, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0037, 0x02f7, 0x02fb, 0x02ff, + 0x0303, 0x0308, 0x030c, 0x0310, 0x0007, 0x0037, 0x0314, 0x031e, + 0x032f, 0x0338, 0x0343, 0x034b, 0x0355, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x23db, 0x2159, 0x214e, 0x2382, 0x2382, 0x2382, + // Entry 260C0 - 260FF + 0x2382, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + 0x0009, 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0037, + 0xffff, 0x0363, 0x0370, 0x037e, 0x038e, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, + 0x039b, 0x0001, 0x0037, 0x03a6, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0037, 0x039b, 0x0001, 0x0037, 0x03a6, 0x0003, 0x00c1, 0x0000, + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0037, 0x03b0, 0x03be, 0x0001, + 0x00c3, 0x0002, 0x0037, 0x03ce, 0x03d1, 0x0004, 0x00d5, 0x00cf, + // Entry 26100 - 2613F + 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 26140 - 2617F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, + 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, + 0x0001, 0x012c, 0x0001, 0x0037, 0x03d4, 0x0001, 0x0131, 0x0001, + 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0037, 0x03dc, 0x0001, + 0x013b, 0x0001, 0x0037, 0x03e1, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0019, 0x01e1, 0x0003, 0x0037, 0x03e8, 0x03ee, 0x03f9, 0x0001, + // Entry 26180 - 261BF + 0x014b, 0x0001, 0x0037, 0x03ff, 0x0001, 0x0150, 0x0001, 0x0037, + 0x0409, 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, 0x0001, 0x015a, + 0x0001, 0x0037, 0x041e, 0x0001, 0x015f, 0x0001, 0x000a, 0x01c8, + 0x0001, 0x0164, 0x0001, 0x0037, 0x0427, 0x0002, 0x0003, 0x00e9, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + // Entry 261C0 - 261FF + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, + 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, + 0x22d0, 0x2246, 0x224a, 0x224e, 0x22d4, 0x22d8, 0x22dc, 0x2236, + 0x22e0, 0x21e2, 0x000d, 0x0037, 0xffff, 0x0438, 0x0445, 0x0453, + 0x0461, 0x0472, 0x0482, 0x0499, 0x04b3, 0x04cd, 0x04e8, 0x0502, + 0x0521, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, + 0x22e6, 0x296e, 0x2382, 0x296e, 0x2483, 0x2483, 0x2382, 0x2970, + // Entry 26200 - 2623F + 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x0037, 0x0540, 0x0544, 0x0548, 0x054c, + 0x0550, 0x0554, 0x0558, 0x0007, 0x0037, 0x055c, 0x056b, 0x057a, + 0x058c, 0x059d, 0x05b7, 0x05d2, 0x0002, 0x0000, 0x0082, 0x0007, + 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0033, + 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0009, + 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0009, 0xffff, + 0x0266, 0x026d, 0x0274, 0x027b, 0x0001, 0x00a1, 0x0003, 0x00a5, + // Entry 26240 - 2627F + 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, 0x05e1, + 0x0001, 0x0037, 0x05e6, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0037, + 0x05e1, 0x0001, 0x0037, 0x05e6, 0x0003, 0x00c1, 0x0000, 0x00bb, + 0x0001, 0x00bd, 0x0002, 0x0037, 0x05ec, 0x05fb, 0x0001, 0x00c3, + 0x0002, 0x0037, 0x0609, 0x060c, 0x0004, 0x00d5, 0x00cf, 0x00cc, + 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, + 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + // Entry 26280 - 262BF + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, + 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, + // Entry 262C0 - 262FF + 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, + 0x012c, 0x0001, 0x0037, 0x060f, 0x0001, 0x0131, 0x0001, 0x0005, + 0x0787, 0x0001, 0x0136, 0x0001, 0x0037, 0x0616, 0x0001, 0x013b, + 0x0001, 0x0037, 0x061c, 0x0002, 0x0141, 0x0144, 0x0001, 0x0037, + 0x0623, 0x0003, 0x0037, 0x062a, 0x062f, 0x0634, 0x0001, 0x014b, + 0x0001, 0x0037, 0x063a, 0x0001, 0x0150, 0x0001, 0x0037, 0x064c, + 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, 0x0001, 0x015a, 0x0001, + 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, 0x0001, + // Entry 26300 - 2633F + 0x0164, 0x0001, 0x0037, 0x0657, 0x0003, 0x0004, 0x01a0, 0x0431, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0037, 0x0666, 0x0001, 0x0037, 0x0681, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0000, 0x236f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, + // Entry 26340 - 2637F + 0x0132, 0x0153, 0x016d, 0x017e, 0x018f, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0005, 0xffff, 0x0636, + 0x22cc, 0x221a, 0x2326, 0x232a, 0x224e, 0x22d4, 0x22d8, 0x232e, + 0x2332, 0x2336, 0x233a, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, + 0x296e, 0x2382, 0x296e, 0x2483, 0x2483, 0x2382, 0x2970, 0x22ec, + 0x22ee, 0x22f0, 0x000d, 0x0037, 0xffff, 0x0696, 0x069d, 0x06a5, + 0x06ab, 0x06b1, 0x06b6, 0x06bc, 0x06c2, 0x06c9, 0x06d2, 0x06d9, + 0x06e2, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0005, 0xffff, + // Entry 26380 - 263BF + 0x0636, 0x22cc, 0x221a, 0x2326, 0x232a, 0x224e, 0x22d4, 0x22d8, + 0x232e, 0x2332, 0x2336, 0x233a, 0x000d, 0x0000, 0xffff, 0x2483, + 0x22e6, 0x296e, 0x2382, 0x296e, 0x2483, 0x2483, 0x2382, 0x2970, + 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0037, 0xffff, 0x0696, 0x069d, + 0x06a5, 0x06ab, 0x06b1, 0x06b6, 0x06bc, 0x06c2, 0x06c9, 0x06d2, + 0x06d9, 0x06e2, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0001, 0x1ff3, 0x200d, 0x2011, + 0x2015, 0x2019, 0x201d, 0x2021, 0x0007, 0x0000, 0x22f0, 0x2970, + // Entry 263C0 - 263FF + 0x2975, 0x25bc, 0x25bc, 0x2970, 0x2970, 0x0007, 0x0037, 0x06eb, + 0x06ee, 0x06f1, 0x06f4, 0x06f7, 0x06fa, 0x06fd, 0x0007, 0x0037, + 0x0700, 0x0708, 0x0715, 0x0720, 0x072c, 0x0737, 0x0742, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0001, 0x1ff3, + 0x200d, 0x2011, 0x2015, 0x2019, 0x201d, 0x2021, 0x0007, 0x0000, + 0x22f0, 0x2970, 0x2975, 0x25bc, 0x25bc, 0x2970, 0x2970, 0x0007, + 0x0037, 0x06eb, 0x06ee, 0x06f1, 0x06f4, 0x06f7, 0x06fa, 0x06fd, + 0x0007, 0x0037, 0x0700, 0x0708, 0x0715, 0x0720, 0x072c, 0x0737, + // Entry 26400 - 2643F + 0x0749, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0037, + 0xffff, 0x0751, 0x075f, 0x076d, 0x077b, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0037, 0xffff, 0x0751, 0x075f, 0x076d, 0x077b, 0x0001, 0x0134, + 0x0003, 0x0138, 0x0141, 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, + // Entry 26440 - 2647F + 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x0144, 0x0147, + 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0002, 0x014d, + 0x0150, 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0003, + 0x0162, 0x0000, 0x0157, 0x0002, 0x015a, 0x015e, 0x0002, 0x0037, + 0x0789, 0x07ac, 0x0002, 0x0037, 0x0799, 0x07bd, 0x0002, 0x0165, + 0x0169, 0x0002, 0x0002, 0x0434, 0x4c28, 0x0002, 0x0037, 0x07c7, + 0x07cb, 0x0004, 0x017b, 0x0175, 0x0172, 0x0178, 0x0001, 0x0037, + 0x07ce, 0x0001, 0x0037, 0x07e7, 0x0001, 0x0001, 0x1fb9, 0x0001, + // Entry 26480 - 264BF + 0x0002, 0x01fb, 0x0004, 0x018c, 0x0186, 0x0183, 0x0189, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x019d, 0x0197, 0x0194, 0x019a, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x01e1, 0x0000, 0x0000, + 0x01e6, 0x01fb, 0x020b, 0x021b, 0x022b, 0x023b, 0x024b, 0x0260, + 0x0270, 0x0280, 0x0295, 0x02a5, 0x0000, 0x0000, 0x0000, 0x02b5, + 0x02ca, 0x02da, 0x0000, 0x0000, 0x0000, 0x02ea, 0x0000, 0x0000, + // Entry 264C0 - 264FF + 0x0000, 0x0000, 0x0000, 0x02ef, 0x02f7, 0x02ff, 0x0307, 0x030f, + 0x0317, 0x031f, 0x0327, 0x032f, 0x0337, 0x033f, 0x0347, 0x034f, + 0x0357, 0x035f, 0x0367, 0x036f, 0x0377, 0x037f, 0x0387, 0x038f, + 0x0000, 0x0397, 0x0000, 0x039c, 0x03ac, 0x03bc, 0x03cc, 0x03dc, + 0x03ec, 0x03fc, 0x040c, 0x041c, 0x042c, 0x0001, 0x01e3, 0x0001, + 0x0000, 0x1a35, 0x0003, 0x01ea, 0x01ed, 0x01f2, 0x0001, 0x0037, + 0x07fa, 0x0003, 0x0037, 0x07fe, 0x0809, 0x0813, 0x0002, 0x01f5, + 0x01f8, 0x0001, 0x0037, 0x0820, 0x0001, 0x0037, 0x082e, 0x0003, + // Entry 26500 - 2653F + 0x01ff, 0x0000, 0x0202, 0x0001, 0x0037, 0x083c, 0x0002, 0x0205, + 0x0208, 0x0001, 0x0037, 0x0820, 0x0001, 0x0037, 0x082e, 0x0003, + 0x020f, 0x0000, 0x0212, 0x0001, 0x0037, 0x083c, 0x0002, 0x0215, + 0x0218, 0x0001, 0x0037, 0x0820, 0x0001, 0x0037, 0x082e, 0x0003, + 0x021f, 0x0000, 0x0222, 0x0001, 0x0037, 0x0840, 0x0002, 0x0225, + 0x0228, 0x0001, 0x0037, 0x084a, 0x0001, 0x0037, 0x085e, 0x0003, + 0x022f, 0x0000, 0x0232, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0235, + 0x0238, 0x0001, 0x0037, 0x0872, 0x0001, 0x0037, 0x0882, 0x0003, + // Entry 26540 - 2657F + 0x023f, 0x0000, 0x0242, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0245, + 0x0248, 0x0001, 0x0037, 0x0872, 0x0001, 0x0037, 0x0882, 0x0003, + 0x024f, 0x0252, 0x0257, 0x0001, 0x001e, 0x0287, 0x0003, 0x0037, + 0x0892, 0x089d, 0x08a7, 0x0002, 0x025a, 0x025d, 0x0001, 0x0037, + 0x08b4, 0x0001, 0x0037, 0x08c2, 0x0003, 0x0264, 0x0000, 0x0267, + 0x0001, 0x0005, 0x1006, 0x0002, 0x026a, 0x026d, 0x0001, 0x0037, + 0x08b4, 0x0001, 0x0037, 0x08c2, 0x0003, 0x0274, 0x0000, 0x0277, + 0x0001, 0x0005, 0x1006, 0x0002, 0x027a, 0x027d, 0x0001, 0x0037, + // Entry 26580 - 265BF + 0x08b4, 0x0001, 0x0037, 0x08c2, 0x0003, 0x0284, 0x0287, 0x028c, + 0x0001, 0x0037, 0x08d0, 0x0003, 0x0037, 0x08d7, 0x08e5, 0x08f2, + 0x0002, 0x028f, 0x0292, 0x0001, 0x0037, 0x0902, 0x0001, 0x0037, + 0x0913, 0x0003, 0x0299, 0x0000, 0x029c, 0x0001, 0x0037, 0x0924, + 0x0002, 0x029f, 0x02a2, 0x0001, 0x0037, 0x0929, 0x0001, 0x0037, + 0x0938, 0x0003, 0x02a9, 0x0000, 0x02ac, 0x0001, 0x0037, 0x0924, + 0x0002, 0x02af, 0x02b2, 0x0001, 0x0037, 0x0929, 0x0001, 0x0037, + 0x0938, 0x0003, 0x02b9, 0x02bc, 0x02c1, 0x0001, 0x0028, 0x0194, + // Entry 265C0 - 265FF + 0x0003, 0x0037, 0x0947, 0x094c, 0x0950, 0x0002, 0x02c4, 0x02c7, + 0x0001, 0x0037, 0x0956, 0x0001, 0x0037, 0x0964, 0x0003, 0x02ce, + 0x0000, 0x02d1, 0x0001, 0x0010, 0x05f5, 0x0002, 0x02d4, 0x02d7, + 0x0001, 0x0037, 0x0956, 0x0001, 0x0037, 0x0964, 0x0003, 0x02de, + 0x0000, 0x02e1, 0x0001, 0x0010, 0x05f5, 0x0002, 0x02e4, 0x02e7, + 0x0001, 0x0037, 0x0956, 0x0001, 0x0037, 0x0964, 0x0001, 0x02ec, + 0x0001, 0x0037, 0x0972, 0x0002, 0x0000, 0x02f2, 0x0003, 0x0037, + 0x0980, 0x098f, 0x099d, 0x0002, 0x0000, 0x02fa, 0x0003, 0x0037, + // Entry 26600 - 2663F + 0x09ae, 0x09ba, 0x09c5, 0x0002, 0x0000, 0x0302, 0x0003, 0x0037, + 0x09ae, 0x09ba, 0x09c5, 0x0002, 0x0000, 0x030a, 0x0003, 0x0037, + 0x09d3, 0x09e7, 0x09fa, 0x0002, 0x0000, 0x0312, 0x0003, 0x0037, + 0x0a10, 0x0a1c, 0x0a27, 0x0002, 0x0000, 0x031a, 0x0003, 0x0037, + 0x0a10, 0x0a1c, 0x0a27, 0x0002, 0x0000, 0x0322, 0x0003, 0x0037, + 0x0a35, 0x0a47, 0x0a58, 0x0002, 0x0000, 0x032a, 0x0003, 0x0037, + 0x0a6c, 0x0a78, 0x0a83, 0x0002, 0x0000, 0x0332, 0x0003, 0x0037, + 0x0a6c, 0x0a78, 0x0a83, 0x0002, 0x0000, 0x033a, 0x0003, 0x0037, + // Entry 26640 - 2667F + 0x0a91, 0x0aa4, 0x0ab6, 0x0002, 0x0000, 0x0342, 0x0003, 0x0037, + 0x0acb, 0x0ad7, 0x0ae2, 0x0002, 0x0000, 0x034a, 0x0003, 0x0037, + 0x0acb, 0x0ad7, 0x0ae2, 0x0002, 0x0000, 0x0352, 0x0003, 0x0037, + 0x0af0, 0x0b02, 0x0b13, 0x0002, 0x0000, 0x035a, 0x0003, 0x0037, + 0x0b27, 0x0b33, 0x0b3e, 0x0002, 0x0000, 0x0362, 0x0003, 0x0037, + 0x0b27, 0x0b33, 0x0b3e, 0x0002, 0x0000, 0x036a, 0x0003, 0x0037, + 0x0b4c, 0x0b5e, 0x0b6f, 0x0002, 0x0000, 0x0372, 0x0003, 0x0037, + 0x0b83, 0x0b8f, 0x0b9a, 0x0002, 0x0000, 0x037a, 0x0003, 0x0037, + // Entry 26680 - 266BF + 0x0b83, 0x0b8f, 0x0b9a, 0x0002, 0x0000, 0x0382, 0x0003, 0x0037, + 0x0ba8, 0x0bb6, 0x0bc3, 0x0002, 0x0000, 0x038a, 0x0003, 0x0037, + 0x0bd3, 0x0bdf, 0x0bea, 0x0002, 0x0000, 0x0392, 0x0003, 0x0037, + 0x0bd3, 0x0bdf, 0x0bea, 0x0001, 0x0399, 0x0001, 0x0007, 0x2388, + 0x0003, 0x03a0, 0x0000, 0x03a3, 0x0001, 0x0037, 0x0bf8, 0x0002, + 0x03a6, 0x03a9, 0x0001, 0x0037, 0x0bfc, 0x0001, 0x0037, 0x0c0a, + 0x0003, 0x03b0, 0x0000, 0x03b3, 0x0001, 0x0034, 0x0a4c, 0x0002, + 0x03b6, 0x03b9, 0x0001, 0x0037, 0x0bfc, 0x0001, 0x0037, 0x0c0a, + // Entry 266C0 - 266FF + 0x0003, 0x03c0, 0x0000, 0x03c3, 0x0001, 0x0000, 0x2143, 0x0002, + 0x03c6, 0x03c9, 0x0001, 0x0037, 0x0bfc, 0x0001, 0x0037, 0x0c0a, + 0x0003, 0x03d0, 0x0000, 0x03d3, 0x0001, 0x0037, 0x0c18, 0x0002, + 0x03d6, 0x03d9, 0x0001, 0x0037, 0x0c1f, 0x0001, 0x0037, 0x0c30, + 0x0003, 0x03e0, 0x0000, 0x03e3, 0x0001, 0x000b, 0x1250, 0x0002, + 0x03e6, 0x03e9, 0x0001, 0x0037, 0x0c41, 0x0001, 0x0037, 0x0c4f, + 0x0003, 0x03f0, 0x0000, 0x03f3, 0x0001, 0x0000, 0x1f9a, 0x0002, + 0x03f6, 0x03f9, 0x0001, 0x0037, 0x0c5d, 0x0001, 0x0037, 0x0c69, + // Entry 26700 - 2673F + 0x0003, 0x0400, 0x0000, 0x0403, 0x0001, 0x0037, 0x0c75, 0x0002, + 0x0406, 0x0409, 0x0001, 0x0037, 0x0c7d, 0x0001, 0x0037, 0x0c8f, + 0x0003, 0x0410, 0x0000, 0x0413, 0x0001, 0x0001, 0x200d, 0x0002, + 0x0416, 0x0419, 0x0001, 0x0037, 0x0ca1, 0x0001, 0x0037, 0x0caf, + 0x0003, 0x0420, 0x0000, 0x0423, 0x0001, 0x0000, 0x2002, 0x0002, + 0x0426, 0x0429, 0x0001, 0x0037, 0x0cbd, 0x0001, 0x0037, 0x0cc9, + 0x0001, 0x042e, 0x0001, 0x0037, 0x0cd5, 0x0004, 0x0436, 0x043b, + 0x0000, 0x0440, 0x0003, 0x0000, 0x1dc7, 0x2936, 0x293d, 0x0003, + // Entry 26740 - 2677F + 0x0037, 0x0cdf, 0x0cea, 0x0cfe, 0x0002, 0x0000, 0x0443, 0x0003, + 0x047a, 0x04ad, 0x0447, 0x0031, 0x0037, 0xffff, 0x0d12, 0x0d28, + 0x0d3f, 0x0d6c, 0xffff, 0xffff, 0x0dba, 0x0df1, 0x0e2d, 0x0e6f, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0eb2, 0x0eff, + 0x0f64, 0x0fd4, 0x1035, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1093, 0x10e8, 0xffff, 0x1140, 0x0031, 0x0037, + // Entry 26780 - 267BF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0d54, 0xffff, 0xffff, 0x0dae, + 0x0de4, 0x0e1d, 0x0e5f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0ea1, 0x0ee6, 0x0f43, 0x0fba, 0x101a, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x107d, 0x10d1, 0xffff, + 0x1128, 0x0031, 0x0037, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d8c, + 0xffff, 0xffff, 0x0dce, 0x0e06, 0x0e45, 0x0e87, 0xffff, 0xffff, + // Entry 267C0 - 267FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0ecb, 0x0f20, 0x0f8e, 0x0ff6, + 0x1058, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x10b1, 0x1107, 0xffff, 0x1160, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, + // Entry 26800 - 2683F + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, + 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0017, 0xffff, 0x00ac, 0x00b1, 0x2929, + 0x00b9, 0x292d, 0x00c0, 0x00c5, 0x2930, 0x00cd, 0x2933, 0x00d1, + 0x00d5, 0x000d, 0x0017, 0xffff, 0x00d9, 0x00e2, 0x00ec, 0x00f2, + 0x292d, 0x00f9, 0x0101, 0x2930, 0x0108, 0x0112, 0x011b, 0x0125, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x012f, 0x2937, + // Entry 26840 - 2687F + 0x2939, 0x293b, 0x2939, 0x012f, 0x012f, 0x293d, 0x293f, 0x2941, + 0x2943, 0x2945, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0005, 0x231e, 0x20e2, 0x20e6, 0x233e, 0x20ee, + 0x2342, 0x2346, 0x0007, 0x0017, 0x0142, 0x2947, 0x294d, 0x0159, + 0x2955, 0x295f, 0x2966, 0x0002, 0x0000, 0x0082, 0x0007, 0x0035, + 0x0f7d, 0x3af1, 0x3af1, 0x3af3, 0x3af3, 0x3af3, 0x3af5, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0017, 0xffff, + 0x0177, 0x017a, 0x017d, 0x0180, 0x0005, 0x0017, 0xffff, 0x0183, + // Entry 26880 - 268BF + 0x018c, 0x0195, 0x019e, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, 0x1182, 0x0001, + 0x0037, 0x1189, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0037, 0x1182, + 0x0001, 0x0037, 0x1189, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + 0x00bd, 0x0002, 0x0017, 0x01bb, 0x296e, 0x0001, 0x00c3, 0x0002, + 0x0017, 0x01d2, 0x01d5, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, + 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, + // Entry 268C0 - 268FF + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 26900 - 2693F + 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, + 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, + 0x0001, 0x0017, 0x01d8, 0x0001, 0x0131, 0x0001, 0x0017, 0x01de, + 0x0001, 0x0136, 0x0001, 0x0017, 0x01e4, 0x0001, 0x013b, 0x0001, + 0x0017, 0x01ea, 0x0002, 0x0141, 0x0144, 0x0001, 0x0037, 0x1190, + 0x0003, 0x0023, 0x0066, 0x2a59, 0x2a5e, 0x0001, 0x014b, 0x0001, + 0x0037, 0x1196, 0x0001, 0x0150, 0x0001, 0x0017, 0x021a, 0x0001, + 0x0155, 0x0001, 0x0017, 0x0220, 0x0001, 0x015a, 0x0001, 0x0017, + // Entry 26940 - 2697F + 0x0227, 0x0001, 0x015f, 0x0001, 0x0017, 0x022c, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0037, 0xffff, 0x11a9, + // Entry 26980 - 269BF + 0x11ad, 0x11b1, 0x11b5, 0x11b9, 0x11bd, 0x11c1, 0x11c5, 0x11c9, + 0x11cd, 0x11d1, 0x11d5, 0x000d, 0x0037, 0xffff, 0x11d9, 0x11e3, + 0x11f2, 0x1203, 0x1211, 0x1221, 0x1235, 0x1248, 0x1258, 0x1267, + 0x1277, 0x1290, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + 0x2483, 0x25bc, 0x2281, 0x25bc, 0x2281, 0x2281, 0x297a, 0x25bc, + 0x25bc, 0x2055, 0x2055, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0037, 0x129a, 0x129e, 0x12a2, + 0x12a6, 0x12aa, 0x12ae, 0x12b2, 0x0007, 0x0019, 0x0128, 0x244c, + // Entry 269C0 - 269FF + 0x0139, 0x2457, 0x014c, 0x0155, 0x2461, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x25bc, 0x297e, 0x297e, 0x297e, 0x2980, 0x297e, + 0x297e, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0037, + 0xffff, 0x12b6, 0x12c4, 0x12d2, 0x12e2, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, + 0x12ef, 0x0001, 0x0037, 0x12f6, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0037, 0x12ef, 0x0001, 0x0037, 0x12f6, 0x0003, 0x00c1, 0x0000, + // Entry 26A00 - 26A3F + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0019, 0x01ad, 0x01bd, 0x0001, + 0x00c3, 0x0002, 0x0019, 0x01ce, 0x01d1, 0x0004, 0x00d5, 0x00cf, + 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + // Entry 26A40 - 26A7F + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, + 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, + 0x0001, 0x012c, 0x0001, 0x0037, 0x1301, 0x0001, 0x0131, 0x0001, + 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, + // Entry 26A80 - 26ABF + 0x013b, 0x0001, 0x0019, 0x0128, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0019, 0x01e1, 0x0003, 0x0037, 0x130a, 0x130e, 0x1318, 0x0001, + 0x014b, 0x0001, 0x0019, 0x0205, 0x0001, 0x0150, 0x0001, 0x0019, + 0x021b, 0x0001, 0x0155, 0x0001, 0x0019, 0x0221, 0x0001, 0x015a, + 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, 0x0001, 0x0037, 0x1320, + 0x0003, 0x0004, 0x025d, 0x0651, 0x0008, 0x0000, 0x0000, 0x000d, + 0x0000, 0x0000, 0x0000, 0x0024, 0x004f, 0x0001, 0x000f, 0x0001, + 0x0011, 0x0002, 0x0000, 0x0014, 0x000e, 0x0000, 0xffff, 0x0033, + // Entry 26AC0 - 26AFF + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x2220, 0x2398, 0x0422, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, 0x0035, + 0x0032, 0x0038, 0x0001, 0x0037, 0x1333, 0x0001, 0x0037, 0x134a, + 0x0001, 0x0037, 0x135b, 0x0001, 0x0007, 0x0027, 0x0004, 0x004c, + 0x0046, 0x0043, 0x0049, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0058, 0x00bd, 0x0114, 0x0149, 0x021a, 0x022a, 0x023b, 0x024c, + // Entry 26B00 - 26B3F + 0x0002, 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, 0x000d, + 0x0037, 0xffff, 0x1365, 0x136d, 0x1375, 0x137d, 0x1385, 0x138d, + 0x1395, 0x139d, 0x13a5, 0x13ad, 0x13b5, 0x13bd, 0x000d, 0x0037, + 0xffff, 0x13c5, 0x13c8, 0x13cb, 0x13ce, 0x13d1, 0x13d1, 0x13d4, + 0x13d7, 0x13c5, 0x13c5, 0x13c5, 0x13da, 0x000d, 0x0037, 0xffff, + 0x13dd, 0x13ea, 0x13f5, 0x1402, 0x140d, 0x1418, 0x1425, 0x1430, + 0x143b, 0x144c, 0x1457, 0x1464, 0x0003, 0x0090, 0x009f, 0x00ae, + 0x000d, 0x0037, 0xffff, 0x1477, 0x147f, 0x1487, 0x148f, 0x1497, + // Entry 26B40 - 26B7F + 0x149f, 0x14a7, 0x14af, 0x14b7, 0x14bf, 0x14c7, 0x14cf, 0x000d, + 0x0037, 0xffff, 0x13c5, 0x13c8, 0x13cb, 0x13ce, 0x13d1, 0x13d1, + 0x13d4, 0x13d7, 0x13c5, 0x13c5, 0x13c5, 0x13da, 0x000d, 0x0037, + 0xffff, 0x14d7, 0x14e4, 0x14ef, 0x14fc, 0x1507, 0x1512, 0x151f, + 0x152a, 0x1535, 0x1546, 0x1551, 0x155e, 0x0002, 0x00c0, 0x00ea, + 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, 0x0037, + 0x1571, 0x1576, 0x157b, 0x1580, 0x1585, 0x158a, 0x158f, 0x0007, + 0x0037, 0x13da, 0x1594, 0x13ce, 0x13ce, 0x1597, 0x13da, 0x13ce, + // Entry 26B80 - 26BBF + 0x0007, 0x0037, 0x1571, 0x1576, 0x157b, 0x1580, 0x1585, 0x158a, + 0x158f, 0x0007, 0x0037, 0x159a, 0x15ab, 0x15bc, 0x15cd, 0x15de, + 0x15ef, 0x15f8, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, 0x0102, + 0x0007, 0x0037, 0x1571, 0x1576, 0x157b, 0x1580, 0x1585, 0x158a, + 0x158f, 0x0007, 0x0037, 0x13da, 0x1594, 0x13ce, 0x13ce, 0x1597, + 0x13da, 0x13ce, 0x0007, 0x0037, 0x1571, 0x1576, 0x157b, 0x1580, + 0x1585, 0x158a, 0x158f, 0x0007, 0x0037, 0x1603, 0x1614, 0x1625, + 0x1636, 0x1647, 0x1658, 0x1661, 0x0002, 0x0117, 0x0130, 0x0003, + // Entry 26BC0 - 26BFF + 0x011b, 0x0122, 0x0129, 0x0005, 0x0037, 0xffff, 0x166c, 0x1673, + 0x167c, 0x1687, 0x0005, 0x0000, 0xffff, 0x2055, 0x2982, 0x2985, + 0x2989, 0x0005, 0x0037, 0xffff, 0x168e, 0x169c, 0x16ac, 0x16be, + 0x0003, 0x0134, 0x013b, 0x0142, 0x0005, 0x0037, 0xffff, 0x166c, + 0x1673, 0x167c, 0x1687, 0x0005, 0x0000, 0xffff, 0x2055, 0x2982, + 0x2985, 0x2989, 0x0005, 0x0037, 0xffff, 0x168e, 0x169c, 0x16ac, + 0x16be, 0x0002, 0x014c, 0x01b3, 0x0003, 0x0150, 0x0171, 0x0192, + 0x0008, 0x015c, 0x0162, 0x0159, 0x0165, 0x0168, 0x016b, 0x016e, + // Entry 26C00 - 26C3F + 0x015f, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0037, 0x16e0, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, 0x16eb, + 0x0001, 0x0037, 0x16f6, 0x0001, 0x0037, 0x1712, 0x0001, 0x0037, + 0x171d, 0x0008, 0x017d, 0x0183, 0x017a, 0x0186, 0x0189, 0x018c, + 0x018f, 0x0180, 0x0001, 0x0037, 0x171d, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0037, 0x16e0, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, + 0x16eb, 0x0001, 0x0037, 0x16f6, 0x0001, 0x0037, 0x1712, 0x0001, + 0x0037, 0x171d, 0x0008, 0x019e, 0x01a4, 0x019b, 0x01a7, 0x01aa, + // Entry 26C40 - 26C7F + 0x01ad, 0x01b0, 0x01a1, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0037, 0x16e0, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0037, 0x16eb, 0x0001, 0x0037, 0x16f6, 0x0001, 0x0037, 0x1712, + 0x0001, 0x0037, 0x171d, 0x0003, 0x01b7, 0x01d8, 0x01f9, 0x0008, + 0x01c3, 0x01c9, 0x01c0, 0x01cc, 0x01cf, 0x01d2, 0x01d5, 0x01c6, + 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0037, + 0x1728, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, 0x1735, 0x0001, + 0x0037, 0x173c, 0x0001, 0x0037, 0x1754, 0x0001, 0x0037, 0x175b, + // Entry 26C80 - 26CBF + 0x0008, 0x01e4, 0x01ea, 0x01e1, 0x01ed, 0x01f0, 0x01f3, 0x01f6, + 0x01e7, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0037, 0x1728, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, 0x1735, + 0x0001, 0x0037, 0x173c, 0x0001, 0x0037, 0x1754, 0x0001, 0x0037, + 0x175b, 0x0008, 0x0205, 0x020b, 0x0202, 0x020e, 0x0211, 0x0214, + 0x0217, 0x0208, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0037, 0x1728, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, + 0x1735, 0x0001, 0x0037, 0x173c, 0x0001, 0x0037, 0x1754, 0x0001, + // Entry 26CC0 - 26CFF + 0x0037, 0x175b, 0x0003, 0x0224, 0x0000, 0x021e, 0x0001, 0x0220, + 0x0002, 0x0037, 0x1762, 0x1791, 0x0001, 0x0226, 0x0002, 0x0037, + 0x17b1, 0x17bb, 0x0004, 0x0238, 0x0232, 0x022f, 0x0235, 0x0001, + 0x0037, 0x17c2, 0x0001, 0x0037, 0x17d7, 0x0001, 0x0037, 0x17e6, + 0x0001, 0x0007, 0x0277, 0x0004, 0x0249, 0x0243, 0x0240, 0x0246, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x025a, 0x0254, 0x0251, + 0x0257, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, + // Entry 26D00 - 26D3F + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x029e, 0x0000, + 0x0000, 0x02a3, 0x02ba, 0x02cc, 0x02de, 0x02f5, 0x0307, 0x0319, + 0x0330, 0x0347, 0x035e, 0x0379, 0x038f, 0x0000, 0x0000, 0x0000, + 0x03a5, 0x03be, 0x03d7, 0x0000, 0x0000, 0x0000, 0x03f0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x03f5, 0x0409, 0x041d, 0x0431, + 0x0445, 0x0459, 0x046d, 0x0481, 0x0495, 0x04a9, 0x04bd, 0x04d1, + 0x04e5, 0x04f9, 0x050d, 0x0521, 0x0535, 0x0549, 0x055d, 0x0571, + 0x0585, 0x0000, 0x0599, 0x0000, 0x059e, 0x05b4, 0x05c6, 0x05d8, + // Entry 26D40 - 26D7F + 0x05ee, 0x0600, 0x0612, 0x0628, 0x063a, 0x064c, 0x0001, 0x02a0, + 0x0001, 0x0037, 0x17f5, 0x0003, 0x02a7, 0x02aa, 0x02af, 0x0001, + 0x0037, 0x1800, 0x0003, 0x0037, 0x1807, 0x181f, 0x1833, 0x0002, + 0x02b2, 0x02b6, 0x0002, 0x0037, 0x1847, 0x1847, 0x0002, 0x0037, + 0x1863, 0x1863, 0x0003, 0x02be, 0x0000, 0x02c1, 0x0001, 0x0037, + 0x1879, 0x0002, 0x02c4, 0x02c8, 0x0002, 0x0037, 0x187d, 0x187d, + 0x0002, 0x0037, 0x1890, 0x1890, 0x0003, 0x02d0, 0x0000, 0x02d3, + 0x0001, 0x0037, 0x1879, 0x0002, 0x02d6, 0x02da, 0x0002, 0x0037, + // Entry 26D80 - 26DBF + 0x187d, 0x187d, 0x0002, 0x0037, 0x1890, 0x1890, 0x0003, 0x02e2, + 0x02e5, 0x02ea, 0x0001, 0x0037, 0x18a3, 0x0003, 0x0037, 0x18ae, + 0x18c4, 0x18d6, 0x0002, 0x02ed, 0x02f1, 0x0002, 0x0037, 0x18ee, + 0x18ee, 0x0002, 0x0037, 0x190e, 0x190e, 0x0003, 0x02f9, 0x0000, + 0x02fc, 0x0001, 0x0011, 0x0255, 0x0002, 0x02ff, 0x0303, 0x0002, + 0x0037, 0x1928, 0x1928, 0x0002, 0x0037, 0x193b, 0x193b, 0x0003, + 0x030b, 0x0000, 0x030e, 0x0001, 0x0011, 0x0255, 0x0002, 0x0311, + 0x0315, 0x0002, 0x0037, 0x1928, 0x1928, 0x0002, 0x0037, 0x193b, + // Entry 26DC0 - 26DFF + 0x193b, 0x0003, 0x031d, 0x0320, 0x0325, 0x0001, 0x0037, 0x194e, + 0x0003, 0x0037, 0x1953, 0x1963, 0x196f, 0x0002, 0x0328, 0x032c, + 0x0002, 0x0037, 0x1981, 0x1981, 0x0002, 0x0037, 0x199b, 0x199b, + 0x0003, 0x0334, 0x0337, 0x033c, 0x0001, 0x0037, 0x194e, 0x0003, + 0x0037, 0x1953, 0x1963, 0x196f, 0x0002, 0x033f, 0x0343, 0x0002, + 0x0037, 0x1981, 0x1981, 0x0002, 0x0037, 0x199b, 0x199b, 0x0003, + 0x034b, 0x034e, 0x0353, 0x0001, 0x0037, 0x194e, 0x0003, 0x0037, + 0x1953, 0x1963, 0x196f, 0x0002, 0x0356, 0x035a, 0x0002, 0x0037, + // Entry 26E00 - 26E3F + 0x1981, 0x1981, 0x0002, 0x0037, 0x199b, 0x199b, 0x0004, 0x0363, + 0x0366, 0x036b, 0x0376, 0x0001, 0x0037, 0x19af, 0x0003, 0x0037, + 0x19b8, 0x19cc, 0x19dc, 0x0002, 0x036e, 0x0372, 0x0002, 0x0037, + 0x19f2, 0x19f2, 0x0002, 0x0037, 0x1a10, 0x1a10, 0x0001, 0x0037, + 0x1a28, 0x0004, 0x037e, 0x0000, 0x0381, 0x038c, 0x0001, 0x0037, + 0x1a39, 0x0002, 0x0384, 0x0388, 0x0002, 0x0037, 0x1a3f, 0x1a3f, + 0x0002, 0x0037, 0x1a54, 0x1a54, 0x0001, 0x0037, 0x1a28, 0x0004, + 0x0394, 0x0000, 0x0397, 0x03a2, 0x0001, 0x0037, 0x1a39, 0x0002, + // Entry 26E40 - 26E7F + 0x039a, 0x039e, 0x0002, 0x0037, 0x1a3f, 0x1a3f, 0x0002, 0x0037, + 0x1a54, 0x1a54, 0x0001, 0x0037, 0x1a28, 0x0003, 0x03a9, 0x03ac, + 0x03b3, 0x0001, 0x0037, 0x1a69, 0x0005, 0x0037, 0x1a83, 0x1a8c, + 0x1a97, 0x1a70, 0x1aa2, 0x0002, 0x03b6, 0x03ba, 0x0002, 0x0037, + 0x1ab5, 0x1ab5, 0x0002, 0x0037, 0x1ad1, 0x1ad1, 0x0003, 0x03c2, + 0x03c5, 0x03cc, 0x0001, 0x0037, 0x1a69, 0x0005, 0x0037, 0x1a83, + 0x1a8c, 0x1a97, 0x1ae7, 0x1aa2, 0x0002, 0x03cf, 0x03d3, 0x0002, + 0x0037, 0x1ab5, 0x1ab5, 0x0002, 0x0037, 0x1ad1, 0x1ad1, 0x0003, + // Entry 26E80 - 26EBF + 0x03db, 0x03de, 0x03e5, 0x0001, 0x0037, 0x1a69, 0x0005, 0x0037, + 0x1a83, 0x1a8c, 0x1a97, 0x1ae7, 0x1aa2, 0x0002, 0x03e8, 0x03ec, + 0x0002, 0x0037, 0x1ab5, 0x1ab5, 0x0002, 0x0037, 0x1ad1, 0x1ad1, + 0x0001, 0x03f2, 0x0001, 0x0037, 0x1aff, 0x0003, 0x0000, 0x03f9, + 0x03fe, 0x0003, 0x0037, 0x1b11, 0x1b2d, 0x1b45, 0x0002, 0x0401, + 0x0405, 0x0002, 0x0037, 0x1b63, 0x1b63, 0x0002, 0x0037, 0x1b89, + 0x1b89, 0x0003, 0x0000, 0x040d, 0x0412, 0x0003, 0x0037, 0x1ba9, + 0x1bbc, 0x1bcb, 0x0002, 0x0415, 0x0419, 0x0002, 0x0037, 0x1b63, + // Entry 26EC0 - 26EFF + 0x1b63, 0x0002, 0x0037, 0x1b89, 0x1b89, 0x0003, 0x0000, 0x0421, + 0x0426, 0x0003, 0x0037, 0x1be0, 0x1bf0, 0x1bfc, 0x0002, 0x0429, + 0x042d, 0x0002, 0x0037, 0x1b63, 0x1b63, 0x0002, 0x0037, 0x1b89, + 0x1b89, 0x0003, 0x0000, 0x0435, 0x043a, 0x0003, 0x0037, 0x1c0e, + 0x1c2a, 0x1c42, 0x0002, 0x043d, 0x0441, 0x0002, 0x0037, 0x1c60, + 0x1c60, 0x0002, 0x0037, 0x1c86, 0x1c86, 0x0003, 0x0000, 0x0449, + 0x044e, 0x0003, 0x0037, 0x1ca6, 0x1cb9, 0x1cc8, 0x0002, 0x0451, + 0x0455, 0x0002, 0x0037, 0x1c60, 0x1c60, 0x0002, 0x0037, 0x1c86, + // Entry 26F00 - 26F3F + 0x1c86, 0x0003, 0x0000, 0x045d, 0x0462, 0x0003, 0x0037, 0x1cdd, + 0x1ced, 0x1cf9, 0x0002, 0x0465, 0x0469, 0x0002, 0x0037, 0x1c60, + 0x1c60, 0x0002, 0x0037, 0x1c86, 0x1c86, 0x0003, 0x0000, 0x0471, + 0x0476, 0x0003, 0x0037, 0x1d0b, 0x1d27, 0x1d3f, 0x0002, 0x0479, + 0x047d, 0x0002, 0x0037, 0x1d5d, 0x1d5d, 0x0002, 0x0037, 0x1d83, + 0x1d83, 0x0003, 0x0000, 0x0485, 0x048a, 0x0003, 0x0037, 0x1da3, + 0x1db6, 0x1dc5, 0x0002, 0x048d, 0x0491, 0x0002, 0x0037, 0x1d5d, + 0x1d5d, 0x0002, 0x0037, 0x1d83, 0x1d83, 0x0003, 0x0000, 0x0499, + // Entry 26F40 - 26F7F + 0x049e, 0x0003, 0x0037, 0x1dda, 0x1dea, 0x1df6, 0x0002, 0x04a1, + 0x04a5, 0x0002, 0x0037, 0x1d5d, 0x1d5d, 0x0002, 0x0037, 0x1d83, + 0x1d83, 0x0003, 0x0000, 0x04ad, 0x04b2, 0x0003, 0x0037, 0x1e08, + 0x1e24, 0x1e3c, 0x0002, 0x04b5, 0x04b9, 0x0002, 0x0037, 0x1e5a, + 0x1e5a, 0x0002, 0x0037, 0x1e80, 0x1e80, 0x0003, 0x0000, 0x04c1, + 0x04c6, 0x0003, 0x0037, 0x1ea0, 0x1eb3, 0x1ec2, 0x0002, 0x04c9, + 0x04cd, 0x0002, 0x0037, 0x1e5a, 0x1e5a, 0x0002, 0x0037, 0x1e80, + 0x1e80, 0x0003, 0x0000, 0x04d5, 0x04da, 0x0003, 0x0037, 0x1ed7, + // Entry 26F80 - 26FBF + 0x1ee7, 0x1ef3, 0x0002, 0x04dd, 0x04e1, 0x0002, 0x0037, 0x1e5a, + 0x1e5a, 0x0002, 0x0037, 0x1e80, 0x1e80, 0x0003, 0x0000, 0x04e9, + 0x04ee, 0x0003, 0x0037, 0x1f05, 0x1f21, 0x1f39, 0x0002, 0x04f1, + 0x04f5, 0x0002, 0x0037, 0x1f57, 0x1f57, 0x0002, 0x0037, 0x1f7d, + 0x1f7d, 0x0003, 0x0000, 0x04fd, 0x0502, 0x0003, 0x0037, 0x1f9d, + 0x1fb0, 0x1fbf, 0x0002, 0x0505, 0x0509, 0x0002, 0x0037, 0x1f57, + 0x1f57, 0x0002, 0x0037, 0x1f7d, 0x1f7d, 0x0003, 0x0000, 0x0511, + 0x0516, 0x0003, 0x0037, 0x1fd4, 0x1fe4, 0x1ff0, 0x0002, 0x0519, + // Entry 26FC0 - 26FFF + 0x051d, 0x0002, 0x0037, 0x1f57, 0x1f57, 0x0002, 0x0037, 0x1f7d, + 0x1f7d, 0x0003, 0x0000, 0x0525, 0x052a, 0x0003, 0x0038, 0x0000, + 0x0014, 0x0024, 0x0002, 0x052d, 0x0531, 0x0002, 0x0038, 0x003a, + 0x003a, 0x0002, 0x0038, 0x0058, 0x0058, 0x0003, 0x0000, 0x0539, + 0x053e, 0x0003, 0x0038, 0x0070, 0x0083, 0x0092, 0x0002, 0x0541, + 0x0545, 0x0002, 0x0038, 0x003a, 0x003a, 0x0002, 0x0038, 0x0058, + 0x0058, 0x0003, 0x0000, 0x054d, 0x0552, 0x0003, 0x0038, 0x00a7, + 0x00b7, 0x00c3, 0x0002, 0x0555, 0x0559, 0x0002, 0x0038, 0x003a, + // Entry 27000 - 2703F + 0x003a, 0x0002, 0x0038, 0x0058, 0x0058, 0x0003, 0x0000, 0x0561, + 0x0566, 0x0003, 0x0038, 0x00d5, 0x00eb, 0x00fd, 0x0002, 0x0569, + 0x056d, 0x0002, 0x0038, 0x0115, 0x0115, 0x0002, 0x0038, 0x0135, + 0x0135, 0x0003, 0x0000, 0x0575, 0x057a, 0x0003, 0x0038, 0x014f, + 0x0162, 0x0171, 0x0002, 0x057d, 0x0581, 0x0002, 0x0038, 0x0115, + 0x0115, 0x0002, 0x0038, 0x0135, 0x0135, 0x0003, 0x0000, 0x0589, + 0x058e, 0x0003, 0x0038, 0x0186, 0x0196, 0x01a2, 0x0002, 0x0591, + 0x0595, 0x0002, 0x0038, 0x0115, 0x0115, 0x0002, 0x0038, 0x0135, + // Entry 27040 - 2707F + 0x0135, 0x0001, 0x059b, 0x0001, 0x0038, 0x01b4, 0x0003, 0x05a2, + 0x05a5, 0x05a9, 0x0001, 0x0038, 0x01be, 0x0002, 0x0038, 0xffff, + 0x01c9, 0x0002, 0x05ac, 0x05b0, 0x0002, 0x0038, 0x01db, 0x01db, + 0x0002, 0x0038, 0x01fb, 0x01fb, 0x0003, 0x05b8, 0x0000, 0x05bb, + 0x0001, 0x0038, 0x0215, 0x0002, 0x05be, 0x05c2, 0x0002, 0x0038, + 0x021c, 0x021c, 0x0002, 0x0038, 0x0233, 0x0233, 0x0003, 0x05ca, + 0x0000, 0x05cd, 0x0001, 0x0038, 0x0215, 0x0002, 0x05d0, 0x05d4, + 0x0002, 0x0038, 0x021c, 0x021c, 0x0002, 0x0038, 0x0233, 0x0233, + // Entry 27080 - 270BF + 0x0003, 0x05dc, 0x05df, 0x05e3, 0x0001, 0x000f, 0x0182, 0x0002, + 0x0038, 0xffff, 0x024a, 0x0002, 0x05e6, 0x05ea, 0x0002, 0x0038, + 0x025c, 0x025c, 0x0002, 0x0038, 0x027c, 0x027c, 0x0003, 0x05f2, + 0x0000, 0x05f5, 0x0001, 0x0009, 0x18ed, 0x0002, 0x05f8, 0x05fc, + 0x0002, 0x0038, 0x0296, 0x0296, 0x0002, 0x0038, 0x02ad, 0x02ad, + 0x0003, 0x0604, 0x0000, 0x0607, 0x0001, 0x0009, 0x18ed, 0x0002, + 0x060a, 0x060e, 0x0002, 0x0038, 0x0296, 0x0296, 0x0002, 0x0038, + 0x02ad, 0x02ad, 0x0003, 0x0616, 0x0619, 0x061d, 0x0001, 0x000f, + // Entry 270C0 - 270FF + 0x01e5, 0x0002, 0x0038, 0xffff, 0x02c4, 0x0002, 0x0620, 0x0624, + 0x0002, 0x0038, 0x02cf, 0x02cf, 0x0002, 0x0038, 0x02f1, 0x02f1, + 0x0003, 0x062c, 0x0000, 0x062f, 0x0001, 0x000e, 0x01f0, 0x0002, + 0x0632, 0x0636, 0x0002, 0x0038, 0x030d, 0x030d, 0x0002, 0x0038, + 0x0324, 0x0324, 0x0003, 0x063e, 0x0000, 0x0641, 0x0001, 0x000e, + 0x01f0, 0x0002, 0x0644, 0x0648, 0x0002, 0x0038, 0x030d, 0x030d, + 0x0002, 0x0038, 0x0324, 0x0324, 0x0001, 0x064e, 0x0001, 0x0038, + 0x033b, 0x0004, 0x0656, 0x065b, 0x0660, 0x066f, 0x0003, 0x0000, + // Entry 27100 - 2713F + 0x1dc7, 0x2936, 0x293d, 0x0003, 0x0038, 0x0355, 0x0366, 0x0382, + 0x0002, 0x0000, 0x0663, 0x0003, 0x0000, 0x066a, 0x0667, 0x0001, + 0x0038, 0x03a8, 0x0003, 0x0038, 0xffff, 0x03e7, 0x0416, 0x0002, + 0x0838, 0x0672, 0x0003, 0x070c, 0x07a2, 0x0676, 0x0094, 0x0038, + 0x043f, 0x045f, 0x0488, 0x04ad, 0x04fd, 0x0581, 0x05ef, 0x0681, + 0x0757, 0x0821, 0x08f4, 0xffff, 0x09b8, 0x0a2b, 0x0ab9, 0x0b44, + 0x0bd6, 0x0c4e, 0x0cdd, 0x0d95, 0x0e54, 0x0ef5, 0x0f8d, 0x1018, + 0x10a6, 0x1106, 0x111e, 0x1158, 0x11b4, 0x1204, 0x1266, 0x12af, + // Entry 27140 - 2717F + 0x1315, 0x1379, 0x13e9, 0x1449, 0x147a, 0x14c7, 0x154e, 0x15eb, + 0x1637, 0x1651, 0x167b, 0x16c1, 0x1727, 0x176c, 0x1803, 0x186d, + 0x18c0, 0x1959, 0x19ef, 0x1a3f, 0x1a6c, 0x1aca, 0x1aea, 0x1b1e, + 0x1b72, 0x1ba5, 0x1bee, 0x1c95, 0x1d0f, 0x1d38, 0x1d8f, 0x1e45, + 0x1eb3, 0x1eff, 0x1f32, 0x1f5b, 0x1f7b, 0x1faa, 0x1fd5, 0x2016, + 0x207e, 0x20f2, 0x2166, 0xffff, 0x21be, 0x21e9, 0x222c, 0x227c, + 0x22b8, 0x231c, 0x233e, 0x2388, 0x23e2, 0x2427, 0x247f, 0x249d, + 0x24d0, 0x2501, 0x2552, 0x25ae, 0x2602, 0x26c8, 0x276d, 0x27e9, + // Entry 27180 - 271BF + 0x283d, 0x2857, 0x286f, 0x28b0, 0x2949, 0x29dd, 0x2a49, 0x2a5f, + 0x2ab8, 0x2b5c, 0x2bd2, 0x2c3c, 0x2c98, 0x2cb0, 0x2d00, 0x2d72, + 0x2ddc, 0x2e38, 0x2e9e, 0x2f28, 0x2f44, 0x2f5e, 0x2f7a, 0x2f96, + 0x2fcc, 0xffff, 0x303c, 0x308c, 0x30a8, 0x30db, 0x310e, 0x313b, + 0x3157, 0x316d, 0x319f, 0x31f3, 0x3213, 0x3247, 0x3297, 0x32d3, + 0x333f, 0x3375, 0x33ed, 0x3469, 0x34c1, 0x3505, 0x358d, 0x35ed, + 0x3607, 0x362e, 0x3678, 0x36f2, 0x0094, 0x0038, 0xffff, 0xffff, + 0xffff, 0xffff, 0x04d8, 0x0567, 0x05d5, 0x0643, 0x071d, 0x07eb, + // Entry 271C0 - 271FF + 0x08ad, 0xffff, 0x09a2, 0x0a04, 0x0a99, 0x0b19, 0x0bba, 0x0c2e, + 0x0cae, 0x0d5b, 0x0e29, 0x0eca, 0x0f6b, 0x0ff1, 0x1086, 0xffff, + 0xffff, 0x113a, 0xffff, 0x11e3, 0xffff, 0x1297, 0x12ff, 0x1361, + 0x13c9, 0xffff, 0xffff, 0x14a9, 0x1523, 0x15d5, 0xffff, 0xffff, + 0xffff, 0x169e, 0xffff, 0x1743, 0x17de, 0xffff, 0x189b, 0x192a, + 0x19d7, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b04, 0xffff, 0xffff, + 0x1bc1, 0x1c68, 0xffff, 0xffff, 0x1d52, 0x1e29, 0x1e9d, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2000, 0x2062, 0x20d6, + // Entry 27200 - 2723F + 0x214a, 0xffff, 0xffff, 0xffff, 0x2214, 0xffff, 0x2296, 0xffff, + 0xffff, 0x236b, 0xffff, 0x240b, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2534, 0xffff, 0x25c8, 0x2696, 0x274c, 0x27cf, 0xffff, 0xffff, + 0xffff, 0x2887, 0x2922, 0x29b7, 0xffff, 0xffff, 0x2a86, 0x2b3c, + 0x2bbc, 0x2c1e, 0xffff, 0xffff, 0x2ce2, 0x2d5c, 0x2dbe, 0xffff, + 0x2e69, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2fb0, 0xffff, + 0x3024, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3185, 0xffff, 0xffff, 0x322f, 0xffff, 0x32ad, 0xffff, 0x3359, + // Entry 27240 - 2727F + 0x33cd, 0x344d, 0xffff, 0x34e1, 0x356d, 0xffff, 0xffff, 0xffff, + 0x365e, 0x36cc, 0x0094, 0x0038, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0537, 0x05b0, 0x061e, 0x06d4, 0x07a6, 0x086c, 0x0950, 0xffff, + 0x09e3, 0x0a67, 0x0aee, 0x0b84, 0x0c07, 0x0c83, 0x0d21, 0x0de4, + 0x0e94, 0x0f35, 0x0fc4, 0x1054, 0x10db, 0xffff, 0xffff, 0x118b, + 0xffff, 0x123a, 0xffff, 0x12dc, 0x1340, 0x13a6, 0x141e, 0xffff, + 0xffff, 0x14fa, 0x158e, 0x1616, 0xffff, 0xffff, 0xffff, 0x16f9, + 0xffff, 0x17aa, 0x183d, 0xffff, 0x18fa, 0x199d, 0x1a1c, 0xffff, + // Entry 27280 - 272BF + 0xffff, 0xffff, 0xffff, 0x1b4d, 0xffff, 0xffff, 0x1c30, 0x1cd7, + 0xffff, 0xffff, 0x1de1, 0x1e76, 0x1ede, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2041, 0x20af, 0x2123, 0x2197, 0xffff, + 0xffff, 0xffff, 0x2259, 0xffff, 0x22ef, 0xffff, 0xffff, 0x23ba, + 0xffff, 0x2458, 0xffff, 0xffff, 0xffff, 0xffff, 0x2585, 0xffff, + 0x2651, 0x270f, 0x27a3, 0x2818, 0xffff, 0xffff, 0xffff, 0x28ee, + 0x2985, 0x2a18, 0xffff, 0xffff, 0x2aff, 0x2b91, 0x2bfd, 0x2c6f, + 0xffff, 0xffff, 0x2d33, 0x2d9d, 0x2e0f, 0xffff, 0x2ee8, 0xffff, + // Entry 272C0 - 272FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x2ffd, 0xffff, 0x3069, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31ce, 0xffff, + 0xffff, 0x3274, 0xffff, 0x330e, 0xffff, 0x33a6, 0x3422, 0x349a, + 0xffff, 0x353e, 0x35c2, 0xffff, 0xffff, 0xffff, 0x36a7, 0x372d, + 0x0003, 0x083c, 0x089e, 0x086d, 0x002f, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 27300 - 2733F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1351, 0x002f, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 27340 - 2737F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1351, 0x002f, 0x0006, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1355, 0x0002, + 0x0003, 0x00ed, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 27380 - 273BF + 0x0000, 0x000c, 0x0037, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0000, 0x0026, 0x0004, 0x0023, 0x001d, 0x001a, + 0x0020, 0x0001, 0x0000, 0x1dfa, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0039, 0x0000, 0x0004, 0x0034, 0x002e, + 0x002b, 0x0031, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0040, + 0x0069, 0x0000, 0x0000, 0x0000, 0x00c0, 0x00d1, 0x00dc, 0x0002, + 0x0043, 0x0056, 0x0003, 0x0000, 0x0000, 0x0047, 0x000d, 0x0039, + // Entry 273C0 - 273FF + 0xffff, 0x000e, 0x0014, 0x001a, 0x002d, 0x003e, 0x004e, 0x0061, + 0x006a, 0x006e, 0x0074, 0x007b, 0x007e, 0x0003, 0x0000, 0x0000, + 0x005a, 0x000d, 0x0039, 0xffff, 0x000e, 0x0014, 0x001a, 0x002d, + 0x003e, 0x004e, 0x0061, 0x006a, 0x006e, 0x0074, 0x007b, 0x007e, + 0x0002, 0x006c, 0x0096, 0x0005, 0x0072, 0x007b, 0x008d, 0x0000, + 0x0084, 0x0007, 0x0039, 0x0089, 0x0090, 0x0096, 0x009c, 0x00a9, + 0x00ae, 0x00bb, 0x0007, 0x0017, 0x2907, 0x297b, 0x297e, 0x2981, + 0x2985, 0x2988, 0x298b, 0x0007, 0x0039, 0x0089, 0x0090, 0x0096, + // Entry 27400 - 2743F + 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0007, 0x0039, 0x0089, 0x0090, + 0x0096, 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0005, 0x009c, 0x00a5, + 0x00b7, 0x0000, 0x00ae, 0x0007, 0x0039, 0x0089, 0x0090, 0x0096, + 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0007, 0x0017, 0x2907, 0x297b, + 0x297e, 0x2981, 0x2985, 0x2988, 0x298b, 0x0007, 0x0017, 0x2907, + 0x297b, 0x297e, 0x2981, 0x2985, 0x2988, 0x298b, 0x0007, 0x0039, + 0x0089, 0x0090, 0x0096, 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0004, + 0x00ce, 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x002b, 0x030a, 0x0001, + // Entry 27440 - 2747F + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0039, 0x00c9, + 0x0004, 0x00d9, 0x0000, 0x0000, 0x00d6, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x00ea, 0x00e4, 0x00e1, 0x00e7, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0013, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0101, + 0x0002, 0x0000, 0x0104, 0x0003, 0x0039, 0x00d1, 0x00d6, 0x00db, + // Entry 27480 - 274BF + 0x0003, 0x0004, 0x0190, 0x02b5, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, + 0x001e, 0x001b, 0x0021, 0x0001, 0x0000, 0x1dfa, 0x0001, 0x0000, + 0x1e0b, 0x0001, 0x002b, 0x01ce, 0x0001, 0x0000, 0x04af, 0x0004, + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0041, 0x00a6, 0x00eb, 0x0120, 0x0138, 0x015d, 0x016e, + // Entry 274C0 - 274FF + 0x017f, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, + 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x32bc, 0x32c0, 0x3175, + 0x3230, 0x3234, 0x3238, 0x323c, 0x3240, 0x32c4, 0x0085, 0x000d, + 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, + 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0039, + 0xffff, 0x00e5, 0x00ed, 0x00f6, 0x00fd, 0x0104, 0x0109, 0x010e, + 0x0113, 0x011d, 0x0128, 0x0131, 0x013b, 0x0003, 0x0079, 0x0088, + 0x0097, 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x32bc, 0x32c0, + // Entry 27500 - 2753F + 0x3175, 0x3230, 0x3234, 0x3238, 0x323c, 0x3240, 0x32c4, 0x0085, + 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, + 0x0039, 0xffff, 0x00e5, 0x00ed, 0x00f6, 0x00fd, 0x0104, 0x0109, + 0x010e, 0x0113, 0x011d, 0x0128, 0x0131, 0x013b, 0x0002, 0x00a9, + 0x00ca, 0x0005, 0x00af, 0x0000, 0x00c1, 0x0000, 0x00b8, 0x0007, + 0x0001, 0x2021, 0x2025, 0x2029, 0x202d, 0x2031, 0x2035, 0x2039, + 0x0007, 0x0001, 0x2021, 0x2025, 0x2029, 0x202d, 0x2031, 0x2035, + // Entry 27540 - 2757F + 0x2039, 0x0007, 0x0039, 0x0145, 0x014c, 0x015b, 0x0169, 0x0179, + 0x0188, 0x0198, 0x0005, 0x0000, 0x00d0, 0x00e2, 0x0000, 0x00d9, + 0x0007, 0x0000, 0x298e, 0x2980, 0x297a, 0x255c, 0x298e, 0x2992, + 0x2980, 0x0007, 0x0001, 0x2021, 0x2025, 0x2029, 0x202d, 0x2031, + 0x2035, 0x2039, 0x0007, 0x0039, 0x0145, 0x014c, 0x015b, 0x0169, + 0x0179, 0x0188, 0x0198, 0x0002, 0x00ee, 0x0107, 0x0003, 0x00f2, + 0x00f9, 0x0100, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, + 0x01b0, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, 0x01b0, + // Entry 27580 - 275BF + 0x0005, 0x0039, 0xffff, 0x01b3, 0x01cc, 0x01e5, 0x01fe, 0x0003, + 0x010b, 0x0112, 0x0119, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, + 0x01ad, 0x01b0, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, + 0x01b0, 0x0005, 0x0039, 0xffff, 0x01b3, 0x01cc, 0x01e5, 0x01fe, + 0x0001, 0x0122, 0x0003, 0x0126, 0x0000, 0x012f, 0x0002, 0x0129, + 0x012c, 0x0001, 0x0039, 0x0217, 0x0001, 0x0039, 0x021c, 0x0002, + 0x0132, 0x0135, 0x0001, 0x0039, 0x0221, 0x0001, 0x0039, 0x0234, + 0x0003, 0x0147, 0x0152, 0x013c, 0x0002, 0x013f, 0x0143, 0x0002, + // Entry 275C0 - 275FF + 0x0039, 0x0249, 0x026c, 0x0002, 0x0015, 0x019a, 0x01be, 0x0002, + 0x014a, 0x014e, 0x0002, 0x0039, 0x0291, 0x029b, 0x0002, 0x0015, + 0x01d7, 0x01de, 0x0002, 0x0155, 0x0159, 0x0002, 0x0039, 0x02a7, + 0x02ad, 0x0002, 0x0015, 0x01d7, 0x01de, 0x0004, 0x016b, 0x0165, + 0x0162, 0x0168, 0x0001, 0x002b, 0x030a, 0x0001, 0x0001, 0x002d, + 0x0001, 0x002b, 0x0319, 0x0001, 0x0000, 0x051c, 0x0004, 0x017c, + 0x0176, 0x0173, 0x0179, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, + 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, + // Entry 27600 - 2763F + 0x018d, 0x0187, 0x0184, 0x018a, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0040, 0x01d1, 0x0000, 0x0000, 0x01d6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01ed, 0x0000, 0x0000, 0x0204, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0234, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0239, + 0x0000, 0x0000, 0x0241, 0x0000, 0x0000, 0x0249, 0x0000, 0x0000, + 0x0251, 0x0000, 0x0000, 0x0259, 0x0000, 0x0000, 0x0261, 0x0000, + // Entry 27640 - 2767F + 0x0000, 0x0269, 0x0000, 0x0000, 0x0000, 0x0271, 0x0000, 0x0276, + 0x0000, 0x0000, 0x0288, 0x0000, 0x0000, 0x029a, 0x0000, 0x0000, + 0x02b0, 0x0001, 0x01d3, 0x0001, 0x0015, 0x0246, 0x0003, 0x01da, + 0x01dd, 0x01e2, 0x0001, 0x0039, 0x02b3, 0x0003, 0x0039, 0x02b9, + 0x02c9, 0x02d5, 0x0002, 0x01e5, 0x01e9, 0x0002, 0x0039, 0x02e2, + 0x02e2, 0x0002, 0x0039, 0x02ef, 0x02ef, 0x0003, 0x01f1, 0x01f4, + 0x01f9, 0x0001, 0x0039, 0x0303, 0x0003, 0x0039, 0x030b, 0x031d, + 0x032b, 0x0002, 0x01fc, 0x0200, 0x0002, 0x0039, 0x033a, 0x033a, + // Entry 27680 - 276BF + 0x0002, 0x0039, 0x0349, 0x0349, 0x0003, 0x0208, 0x020b, 0x0210, + 0x0001, 0x0039, 0x035f, 0x0003, 0x0039, 0x0371, 0x038d, 0x03a5, + 0x0002, 0x0213, 0x0217, 0x0002, 0x0039, 0x03be, 0x03be, 0x0002, + 0x0039, 0x03d7, 0x03d7, 0x0003, 0x021f, 0x0222, 0x0229, 0x0001, + 0x0039, 0x03f7, 0x0005, 0x0039, 0x0408, 0x0411, 0x0418, 0x03fd, + 0x041e, 0x0002, 0x022c, 0x0230, 0x0002, 0x0039, 0x0427, 0x0427, + 0x0002, 0x0039, 0x043d, 0x043d, 0x0001, 0x0236, 0x0001, 0x0039, + 0x045a, 0x0002, 0x0000, 0x023c, 0x0003, 0x0039, 0x0474, 0x0497, + // Entry 276C0 - 276FF + 0x04b6, 0x0002, 0x0000, 0x0244, 0x0003, 0x0039, 0x04d6, 0x0501, + 0x0528, 0x0002, 0x0000, 0x024c, 0x0003, 0x0039, 0x0550, 0x057a, + 0x05a0, 0x0002, 0x0000, 0x0254, 0x0003, 0x0039, 0x05c7, 0x05f3, + 0x061b, 0x0002, 0x0000, 0x025c, 0x0003, 0x0039, 0x0644, 0x066f, + 0x0696, 0x0002, 0x0000, 0x0264, 0x0003, 0x0039, 0x06be, 0x06ea, + 0x0712, 0x0002, 0x0000, 0x026c, 0x0003, 0x0039, 0x073b, 0x0766, + 0x078d, 0x0001, 0x0273, 0x0001, 0x0039, 0x07b5, 0x0003, 0x027a, + 0x0000, 0x027d, 0x0001, 0x0039, 0x07c5, 0x0002, 0x0280, 0x0284, + // Entry 27700 - 2773F + 0x0002, 0x0039, 0x07dc, 0x07dc, 0x0002, 0x0039, 0x07fa, 0x07fa, + 0x0003, 0x028c, 0x0000, 0x028f, 0x0001, 0x0039, 0x081f, 0x0002, + 0x0292, 0x0296, 0x0002, 0x0039, 0x0827, 0x0827, 0x0002, 0x0039, + 0x0836, 0x0836, 0x0003, 0x029e, 0x02a1, 0x02a5, 0x0001, 0x0039, + 0x084c, 0x0002, 0x0039, 0xffff, 0x0854, 0x0002, 0x02a8, 0x02ac, + 0x0002, 0x0039, 0x0860, 0x0860, 0x0002, 0x0039, 0x086f, 0x086f, + 0x0001, 0x02b2, 0x0001, 0x0039, 0x0885, 0x0004, 0x02ba, 0x02bf, + 0x0000, 0x0000, 0x0003, 0x001c, 0x0baf, 0x215c, 0x2163, 0x0001, + // Entry 27740 - 2777F + 0x0000, 0x1de0, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, + 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, + 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + 0x000d, 0x0009, 0xffff, 0x01f0, 0x5436, 0x543b, 0x543f, 0x5443, + // Entry 27780 - 277BF + 0x5447, 0x544b, 0x544f, 0x5453, 0x5457, 0x545b, 0x545f, 0x000d, + 0x0039, 0xffff, 0x089e, 0x08a5, 0x08b2, 0x08bb, 0x08c5, 0x08cc, + 0x08d2, 0x08de, 0x08e6, 0x08ed, 0x08f4, 0x0906, 0x0002, 0x0000, + 0x0057, 0x000d, 0x0000, 0xffff, 0x297a, 0x297e, 0x2992, 0x2055, + 0x297a, 0x255c, 0x297e, 0x223e, 0x24f9, 0x214e, 0x25bc, 0x25bc, + 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, + 0x0039, 0x091d, 0x0921, 0x0925, 0x0929, 0x092d, 0x0931, 0x0935, + 0x0007, 0x0039, 0x0939, 0x0941, 0x0948, 0x0952, 0x095a, 0x0966, + // Entry 277C0 - 277FF + 0x096d, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2992, 0x2992, + 0x2990, 0x298e, 0x2980, 0x297a, 0x2994, 0x0001, 0x008d, 0x0003, + 0x0091, 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, 0x070e, 0x0711, + 0x0714, 0x0717, 0x0005, 0x0039, 0xffff, 0x0972, 0x097d, 0x098f, + 0x099f, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, + 0x00a8, 0x00ab, 0x0001, 0x0039, 0x09b3, 0x0001, 0x0039, 0x09b7, + 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0039, 0x09bd, 0x0001, 0x0039, + 0x09c4, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, + // Entry 27800 - 2783F + 0x0039, 0x09cf, 0x09e1, 0x0001, 0x00c3, 0x0002, 0x0000, 0x04ef, + 0x2996, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, + 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, + // Entry 27840 - 2787F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, + 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0039, + 0x09f1, 0x0001, 0x0131, 0x0001, 0x0039, 0x09f8, 0x0001, 0x0136, + 0x0001, 0x0039, 0x09ff, 0x0001, 0x013b, 0x0001, 0x0039, 0x0a06, + // Entry 27880 - 278BF + 0x0002, 0x0141, 0x0144, 0x0001, 0x0039, 0x0a0c, 0x0003, 0x0039, + 0x0a12, 0x0a17, 0x0a1d, 0x0001, 0x014b, 0x0001, 0x0039, 0x0a23, + 0x0001, 0x0150, 0x0001, 0x0039, 0x0a31, 0x0001, 0x0155, 0x0001, + 0x0039, 0x0a37, 0x0001, 0x015a, 0x0001, 0x0039, 0x0a3c, 0x0001, + 0x015f, 0x0001, 0x0039, 0x0a44, 0x0001, 0x0164, 0x0001, 0x0039, + 0x0a4d, 0x0003, 0x0004, 0x0253, 0x060b, 0x0008, 0x000d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x001a, 0x0045, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0013, 0x0001, 0x0015, 0x0001, 0x0017, + // Entry 278C0 - 278FF + 0x0001, 0x0039, 0x0a5a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0023, 0x0000, 0x0034, 0x0004, 0x0031, 0x002b, 0x0028, + 0x002e, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0004, 0x0042, 0x003c, + 0x0039, 0x003f, 0x0001, 0x0039, 0x0a63, 0x0001, 0x0039, 0x0a63, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x004e, + 0x00b3, 0x010a, 0x013f, 0x0210, 0x0220, 0x0231, 0x0242, 0x0002, + 0x0051, 0x0082, 0x0003, 0x0055, 0x0064, 0x0073, 0x000d, 0x0039, + // Entry 27900 - 2793F + 0xffff, 0x0a81, 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, 0x0adb, + 0x0aee, 0x0afb, 0x0b0b, 0x0b18, 0x0b31, 0x000d, 0x0039, 0xffff, + 0x0b3e, 0x0b42, 0x0b3e, 0x0b3e, 0x0b46, 0x0b3e, 0x0b42, 0x0b4a, + 0x0b42, 0x0b4e, 0x0b52, 0x0b56, 0x000d, 0x0039, 0xffff, 0x0a81, + 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, 0x0adb, 0x0aee, 0x0afb, + 0x0b0b, 0x0b18, 0x0b31, 0x0003, 0x0086, 0x0095, 0x00a4, 0x000d, + 0x0039, 0xffff, 0x0a81, 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, + 0x0adb, 0x0aee, 0x0afb, 0x0b0b, 0x0b18, 0x0b31, 0x000d, 0x0039, + // Entry 27940 - 2797F + 0xffff, 0x0b3e, 0x0b42, 0x0b3e, 0x0b3e, 0x0b46, 0x0b3e, 0x0b42, + 0x0b4a, 0x0b42, 0x0b4e, 0x0b52, 0x0b56, 0x000d, 0x0039, 0xffff, + 0x0a81, 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, 0x0adb, 0x0aee, + 0x0afb, 0x0b0b, 0x0b18, 0x0b31, 0x0002, 0x00b6, 0x00e0, 0x0005, + 0x00bc, 0x00c5, 0x00d7, 0x0000, 0x00ce, 0x0007, 0x0039, 0x0b5a, + 0x0b70, 0x0b80, 0x0b93, 0x0b9d, 0x0bbc, 0x0bcc, 0x0007, 0x0039, + 0x0bd9, 0x0bdd, 0x0bd9, 0x0be1, 0x0be1, 0x0b4a, 0x0b4a, 0x0007, + 0x0039, 0x0be5, 0x0bdd, 0x0bd9, 0x0bec, 0x0bf3, 0x0bfd, 0x0b4a, + // Entry 27980 - 279BF + 0x0007, 0x0039, 0x0b5a, 0x0b70, 0x0b80, 0x0b93, 0x0b9d, 0x0bbc, + 0x0bcc, 0x0005, 0x00e6, 0x00ef, 0x0101, 0x0000, 0x00f8, 0x0007, + 0x0039, 0x0b5a, 0x0b70, 0x0b80, 0x0b93, 0x0b9d, 0x0bbc, 0x0bcc, + 0x0007, 0x0039, 0x0bd9, 0x0bdd, 0x0bd9, 0x0be1, 0x0be1, 0x0b4a, + 0x0b4a, 0x0007, 0x0039, 0x0be5, 0x0bdd, 0x0bd9, 0x0bec, 0x0bf3, + 0x0bfd, 0x0b4a, 0x0007, 0x0039, 0x0b5a, 0x0b70, 0x0b80, 0x0b93, + 0x0b9d, 0x0bbc, 0x0bcc, 0x0002, 0x010d, 0x0126, 0x0003, 0x0111, + 0x0118, 0x011f, 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, 0x0c40, + // Entry 279C0 - 279FF + 0x0c5e, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, 0x0c40, 0x0c5e, 0x0003, + 0x012a, 0x0131, 0x0138, 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, + 0x0c40, 0x0c5e, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, 0x0c40, 0x0c5e, + 0x0002, 0x0142, 0x01a9, 0x0003, 0x0146, 0x0167, 0x0188, 0x0008, + 0x0152, 0x0158, 0x014f, 0x015b, 0x015e, 0x0161, 0x0164, 0x0155, + 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0039, + // Entry 27A00 - 27A3F + 0x0c95, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, 0x0001, + 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, 0x0cde, + 0x0008, 0x0173, 0x0179, 0x0170, 0x017c, 0x017f, 0x0182, 0x0185, + 0x0176, 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x1f9c, 0x0001, + 0x0039, 0x0c95, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0039, 0x0cb1, + 0x0001, 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, + 0x0cde, 0x0008, 0x0194, 0x019a, 0x0191, 0x019d, 0x01a0, 0x01a3, + 0x01a6, 0x0197, 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, + // Entry 27A40 - 27A7F + 0x0001, 0x0039, 0x0c95, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, + 0x0cb1, 0x0001, 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, + 0x0039, 0x0cde, 0x0003, 0x01ad, 0x01ce, 0x01ef, 0x0008, 0x01b9, + 0x01bf, 0x01b6, 0x01c2, 0x01c5, 0x01c8, 0x01cb, 0x01bc, 0x0001, + 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0039, 0x0ce8, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, 0x0001, 0x0039, + 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, 0x0cde, 0x0008, + 0x01da, 0x01e0, 0x01d7, 0x01e3, 0x01e6, 0x01e9, 0x01ec, 0x01dd, + // Entry 27A80 - 27ABF + 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0039, + 0x0ce8, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, 0x0001, + 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, 0x0cde, + 0x0008, 0x01fb, 0x0201, 0x01f8, 0x0204, 0x0207, 0x020a, 0x020d, + 0x01fe, 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0039, 0x0ce8, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, + 0x0001, 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, + 0x0cde, 0x0003, 0x021a, 0x0000, 0x0214, 0x0001, 0x0216, 0x0002, + // Entry 27AC0 - 27AFF + 0x0039, 0x0d07, 0x0d38, 0x0001, 0x021c, 0x0002, 0x0039, 0x0d5d, + 0x0d70, 0x0004, 0x022e, 0x0228, 0x0225, 0x022b, 0x0001, 0x0001, + 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0000, 0x237b, 0x0004, 0x023f, 0x0239, 0x0236, 0x023c, 0x0001, + 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, + 0x0001, 0x0002, 0x0478, 0x0004, 0x0250, 0x024a, 0x0247, 0x024d, + 0x0001, 0x0039, 0x0a63, 0x0001, 0x0039, 0x0a63, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x0294, 0x0000, 0x0000, + // Entry 27B00 - 27B3F + 0x0299, 0x02ae, 0x02c3, 0x02d8, 0x02ed, 0x0302, 0x0317, 0x032c, + 0x0341, 0x0356, 0x036f, 0x0388, 0x0000, 0x0000, 0x0000, 0x03a1, + 0x03b8, 0x03cf, 0x0000, 0x0000, 0x0000, 0x03e6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x03eb, 0x03fd, 0x040f, 0x0421, 0x0433, + 0x0445, 0x0457, 0x0469, 0x047b, 0x048d, 0x049f, 0x04b1, 0x04c3, + 0x04d5, 0x04e7, 0x04f9, 0x050b, 0x051d, 0x052f, 0x0541, 0x0553, + 0x0000, 0x0565, 0x0000, 0x056a, 0x057e, 0x058e, 0x059e, 0x05b2, + 0x05c2, 0x05d2, 0x05e6, 0x05f6, 0x0606, 0x0001, 0x0296, 0x0001, + // Entry 27B40 - 27B7F + 0x0039, 0x0d79, 0x0003, 0x029d, 0x02a0, 0x02a5, 0x0001, 0x0039, + 0x0d89, 0x0003, 0x0039, 0x0d99, 0x0db5, 0x0dd1, 0x0002, 0x02a8, + 0x02ab, 0x0001, 0x0039, 0x0df3, 0x0001, 0x0039, 0x0e10, 0x0003, + 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0039, 0x0d89, 0x0003, 0x0039, + 0x0d99, 0x0db5, 0x0dd1, 0x0002, 0x02bd, 0x02c0, 0x0001, 0x0039, + 0x0df3, 0x0001, 0x0039, 0x0e10, 0x0003, 0x02c7, 0x02ca, 0x02cf, + 0x0001, 0x0039, 0x0d89, 0x0003, 0x0039, 0x0d99, 0x0db5, 0x0dd1, + 0x0002, 0x02d2, 0x02d5, 0x0001, 0x0039, 0x0df3, 0x0001, 0x0039, + // Entry 27B80 - 27BBF + 0x0e10, 0x0003, 0x02dc, 0x02df, 0x02e4, 0x0001, 0x0039, 0x0e30, + 0x0003, 0x0039, 0x0e46, 0x0e68, 0x0e8a, 0x0002, 0x02e7, 0x02ea, + 0x0001, 0x0039, 0x0eb2, 0x0001, 0x0039, 0x0ed5, 0x0003, 0x02f1, + 0x02f4, 0x02f9, 0x0001, 0x0039, 0x0e30, 0x0003, 0x0039, 0x0e46, + 0x0e68, 0x0e8a, 0x0002, 0x02fc, 0x02ff, 0x0001, 0x0039, 0x0eb2, + 0x0001, 0x0039, 0x0ed5, 0x0003, 0x0306, 0x0309, 0x030e, 0x0001, + 0x0039, 0x0e30, 0x0003, 0x0039, 0x0e46, 0x0e68, 0x0e8a, 0x0002, + 0x0311, 0x0314, 0x0001, 0x0039, 0x0eb2, 0x0001, 0x0039, 0x0ed5, + // Entry 27BC0 - 27BFF + 0x0003, 0x031b, 0x031e, 0x0323, 0x0001, 0x0039, 0x0efb, 0x0003, + 0x0039, 0x0f02, 0x0f15, 0x0f28, 0x0002, 0x0326, 0x0329, 0x0001, + 0x0039, 0x0f41, 0x0001, 0x0039, 0x0f55, 0x0003, 0x0330, 0x0333, + 0x0338, 0x0001, 0x0039, 0x0efb, 0x0003, 0x0039, 0x0f02, 0x0f15, + 0x0f28, 0x0002, 0x033b, 0x033e, 0x0001, 0x0039, 0x0f41, 0x0001, + 0x0039, 0x0f55, 0x0003, 0x0345, 0x0348, 0x034d, 0x0001, 0x0039, + 0x0efb, 0x0003, 0x0039, 0x0f02, 0x0f15, 0x0f28, 0x0002, 0x0350, + 0x0353, 0x0001, 0x0039, 0x0f41, 0x0001, 0x0039, 0x0f55, 0x0004, + // Entry 27C00 - 27C3F + 0x035b, 0x035e, 0x0363, 0x036c, 0x0001, 0x0039, 0x0f69, 0x0003, + 0x0039, 0x0f7f, 0x0fa1, 0x0fc3, 0x0002, 0x0366, 0x0369, 0x0001, + 0x0039, 0x0feb, 0x0001, 0x0039, 0x100e, 0x0001, 0x0039, 0x1034, + 0x0004, 0x0374, 0x0377, 0x037c, 0x0385, 0x0001, 0x0039, 0x0f69, + 0x0003, 0x0039, 0x0f7f, 0x0fa1, 0x0fc3, 0x0002, 0x037f, 0x0382, + 0x0001, 0x0039, 0x0feb, 0x0001, 0x0039, 0x100e, 0x0001, 0x0039, + 0x1034, 0x0004, 0x038d, 0x0390, 0x0395, 0x039e, 0x0001, 0x0039, + 0x0f69, 0x0003, 0x0039, 0x0f7f, 0x0fa1, 0x0fc3, 0x0002, 0x0398, + // Entry 27C40 - 27C7F + 0x039b, 0x0001, 0x0039, 0x0feb, 0x0001, 0x0039, 0x100e, 0x0001, + 0x0039, 0x1034, 0x0003, 0x03a5, 0x03a8, 0x03af, 0x0001, 0x0039, + 0x1054, 0x0005, 0x0039, 0x1083, 0x109c, 0x10b5, 0x1061, 0x10d4, + 0x0002, 0x03b2, 0x03b5, 0x0001, 0x0039, 0x10f3, 0x0001, 0x0039, + 0x110d, 0x0003, 0x03bc, 0x03bf, 0x03c6, 0x0001, 0x0039, 0x1054, + 0x0005, 0x0039, 0x1083, 0x109c, 0x112a, 0x1061, 0x10d4, 0x0002, + 0x03c9, 0x03cc, 0x0001, 0x0039, 0x10f3, 0x0001, 0x0039, 0x1146, + 0x0003, 0x03d3, 0x03d6, 0x03dd, 0x0001, 0x0039, 0x1054, 0x0005, + // Entry 27C80 - 27CBF + 0x0039, 0x1083, 0x109c, 0x112a, 0x1061, 0x10d4, 0x0002, 0x03e0, + 0x03e3, 0x0001, 0x0039, 0x10f3, 0x0001, 0x0039, 0x1146, 0x0001, + 0x03e8, 0x0001, 0x0039, 0x1166, 0x0003, 0x0000, 0x03ef, 0x03f4, + 0x0003, 0x0039, 0x1194, 0x11c5, 0x11f6, 0x0002, 0x03f7, 0x03fa, + 0x0001, 0x0039, 0x122d, 0x0001, 0x0039, 0x1272, 0x0003, 0x0000, + 0x0401, 0x0406, 0x0003, 0x0039, 0x1194, 0x11c5, 0x11f6, 0x0002, + 0x0409, 0x040c, 0x0001, 0x0039, 0x122d, 0x0001, 0x0039, 0x1272, + 0x0003, 0x0000, 0x0413, 0x0418, 0x0003, 0x0039, 0x1194, 0x11c5, + // Entry 27CC0 - 27CFF + 0x11f6, 0x0002, 0x041b, 0x041e, 0x0001, 0x0039, 0x122d, 0x0001, + 0x0039, 0x1272, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x0039, + 0x12b7, 0x12e2, 0x130d, 0x0002, 0x042d, 0x0430, 0x0001, 0x0039, + 0x133e, 0x0001, 0x0039, 0x137d, 0x0003, 0x0000, 0x0437, 0x043c, + 0x0003, 0x0039, 0x12b7, 0x12e2, 0x130d, 0x0002, 0x043f, 0x0442, + 0x0001, 0x0039, 0x133e, 0x0001, 0x0039, 0x137d, 0x0003, 0x0000, + 0x0449, 0x044e, 0x0003, 0x0039, 0x12b7, 0x12e2, 0x130d, 0x0002, + 0x0451, 0x0454, 0x0001, 0x0039, 0x133e, 0x0001, 0x0039, 0x137d, + // Entry 27D00 - 27D3F + 0x0003, 0x0000, 0x045b, 0x0460, 0x0003, 0x0039, 0x13bc, 0x13ea, + 0x1418, 0x0002, 0x0463, 0x0466, 0x0001, 0x0039, 0x144c, 0x0001, + 0x0039, 0x148e, 0x0003, 0x0000, 0x046d, 0x0472, 0x0003, 0x0039, + 0x13bc, 0x13ea, 0x1418, 0x0002, 0x0475, 0x0478, 0x0001, 0x0039, + 0x144c, 0x0001, 0x0039, 0x148e, 0x0003, 0x0000, 0x047f, 0x0484, + 0x0003, 0x0039, 0x13bc, 0x13ea, 0x1418, 0x0002, 0x0487, 0x048a, + 0x0001, 0x0039, 0x144c, 0x0001, 0x0039, 0x148e, 0x0003, 0x0000, + 0x0491, 0x0496, 0x0003, 0x0039, 0x14d0, 0x14f5, 0x151a, 0x0002, + // Entry 27D40 - 27D7F + 0x0499, 0x049c, 0x0001, 0x0039, 0x1545, 0x0001, 0x0039, 0x157e, + 0x0003, 0x0000, 0x04a3, 0x04a8, 0x0003, 0x0039, 0x14d0, 0x14f5, + 0x151a, 0x0002, 0x04ab, 0x04ae, 0x0001, 0x0039, 0x1545, 0x0001, + 0x0039, 0x157e, 0x0003, 0x0000, 0x04b5, 0x04ba, 0x0003, 0x0039, + 0x14d0, 0x14f5, 0x151a, 0x0002, 0x04bd, 0x04c0, 0x0001, 0x0039, + 0x1545, 0x0001, 0x0039, 0x157e, 0x0003, 0x0000, 0x04c7, 0x04cc, + 0x0003, 0x0039, 0x15b7, 0x15f1, 0x162b, 0x0002, 0x04cf, 0x04d2, + 0x0001, 0x0039, 0x166b, 0x0001, 0x0039, 0x16b9, 0x0003, 0x0000, + // Entry 27D80 - 27DBF + 0x04d9, 0x04de, 0x0003, 0x0039, 0x15b7, 0x15f1, 0x162b, 0x0002, + 0x04e1, 0x04e4, 0x0001, 0x0039, 0x166b, 0x0001, 0x0039, 0x16b9, + 0x0003, 0x0000, 0x04eb, 0x04f0, 0x0003, 0x0039, 0x15b7, 0x15f1, + 0x162b, 0x0002, 0x04f3, 0x04f6, 0x0001, 0x0039, 0x166b, 0x0001, + 0x0039, 0x16b9, 0x0003, 0x0000, 0x04fd, 0x0502, 0x0003, 0x0039, + 0x1707, 0x1732, 0x175d, 0x0002, 0x0505, 0x0508, 0x0001, 0x0039, + 0x178e, 0x0001, 0x0039, 0x17cd, 0x0003, 0x0000, 0x050f, 0x0514, + 0x0003, 0x0039, 0x1707, 0x1732, 0x175d, 0x0002, 0x0517, 0x051a, + // Entry 27DC0 - 27DFF + 0x0001, 0x0039, 0x178e, 0x0001, 0x0039, 0x17cd, 0x0003, 0x0000, + 0x0521, 0x0526, 0x0003, 0x0039, 0x1707, 0x1732, 0x175d, 0x0002, + 0x0529, 0x052c, 0x0001, 0x0039, 0x178e, 0x0001, 0x0039, 0x17cd, + 0x0003, 0x0000, 0x0533, 0x0538, 0x0003, 0x0039, 0x180c, 0x1834, + 0x185c, 0x0002, 0x053b, 0x053e, 0x0001, 0x0039, 0x188a, 0x0001, + 0x0039, 0x18c6, 0x0003, 0x0000, 0x0545, 0x054a, 0x0003, 0x0039, + 0x180c, 0x1834, 0x185c, 0x0002, 0x054d, 0x0550, 0x0001, 0x0039, + 0x188a, 0x0001, 0x0039, 0x18c6, 0x0003, 0x0000, 0x0557, 0x055c, + // Entry 27E00 - 27E3F + 0x0003, 0x0039, 0x180c, 0x1834, 0x185c, 0x0002, 0x055f, 0x0562, + 0x0001, 0x0039, 0x188a, 0x0001, 0x0039, 0x18c6, 0x0001, 0x0567, + 0x0001, 0x0039, 0x1902, 0x0003, 0x056e, 0x0571, 0x0575, 0x0001, + 0x0039, 0x1922, 0x0002, 0x0039, 0xffff, 0x192f, 0x0002, 0x0578, + 0x057b, 0x0001, 0x0039, 0x1945, 0x0001, 0x0039, 0x197e, 0x0003, + 0x0582, 0x0000, 0x0585, 0x0001, 0x0039, 0x1922, 0x0002, 0x0588, + 0x058b, 0x0001, 0x0039, 0x199b, 0x0001, 0x0039, 0x197e, 0x0003, + 0x0592, 0x0000, 0x0595, 0x0001, 0x0039, 0x1922, 0x0002, 0x0598, + // Entry 27E40 - 27E7F + 0x059b, 0x0001, 0x0039, 0x199b, 0x0001, 0x0039, 0x197e, 0x0003, + 0x05a2, 0x05a5, 0x05a9, 0x0001, 0x0039, 0x19b5, 0x0002, 0x0039, + 0xffff, 0x19c2, 0x0002, 0x05ac, 0x05af, 0x0001, 0x0039, 0x19d8, + 0x0001, 0x0039, 0x19f2, 0x0003, 0x05b6, 0x0000, 0x05b9, 0x0001, + 0x0039, 0x19b5, 0x0002, 0x05bc, 0x05bf, 0x0001, 0x0039, 0x19d8, + 0x0001, 0x0039, 0x1a0f, 0x0003, 0x05c6, 0x0000, 0x05c9, 0x0001, + 0x0039, 0x19b5, 0x0002, 0x05cc, 0x05cf, 0x0001, 0x0039, 0x19d8, + 0x0001, 0x0039, 0x1a0f, 0x0003, 0x05d6, 0x05d9, 0x05dd, 0x0001, + // Entry 27E80 - 27EBF + 0x0039, 0x1a2f, 0x0002, 0x0039, 0xffff, 0x1a42, 0x0002, 0x05e0, + 0x05e3, 0x0001, 0x0039, 0x1a4f, 0x0001, 0x0039, 0x1a6f, 0x0003, + 0x05ea, 0x0000, 0x05ed, 0x0001, 0x0039, 0x1a2f, 0x0002, 0x05f0, + 0x05f3, 0x0001, 0x0039, 0x1a4f, 0x0001, 0x0039, 0x1a6f, 0x0003, + 0x05fa, 0x0000, 0x05fd, 0x0001, 0x0039, 0x1a2f, 0x0002, 0x0600, + 0x0603, 0x0001, 0x0039, 0x1a4f, 0x0001, 0x0039, 0x1a6f, 0x0001, + 0x0608, 0x0001, 0x0039, 0x1a92, 0x0004, 0x0610, 0x0615, 0x061a, + 0x0625, 0x0003, 0x0000, 0x1dc7, 0x2999, 0x29b6, 0x0003, 0x0039, + // Entry 27EC0 - 27EFF + 0x1aae, 0x1acb, 0x1b03, 0x0002, 0x0000, 0x061d, 0x0002, 0x0000, + 0x0620, 0x0003, 0x0039, 0xffff, 0x1b3b, 0x1ba2, 0x0002, 0x0000, + 0x0628, 0x0003, 0x06c2, 0x0758, 0x062c, 0x0094, 0x0039, 0x1bee, + 0x1c37, 0x1c80, 0x1ccc, 0x1d6a, 0x1e72, 0x1f3e, 0x2040, 0x21ae, + 0x2325, 0x249c, 0xffff, 0x25dd, 0x2694, 0x2757, 0x2844, 0x2940, + 0x2a06, 0x2af3, 0x2c46, 0x2dc0, 0x2ee9, 0x2ffd, 0x30db, 0x31a1, + 0x3248, 0x326d, 0x32d5, 0x338b, 0x33ff, 0x3494, 0x34f0, 0x3595, + 0x3625, 0x36d3, 0x3774, 0x37b4, 0x3819, 0x38e2, 0x39c3, 0x3a49, + // Entry 27F00 - 27F3F + 0x3a71, 0x3aba, 0x3b3a, 0x3bf0, 0x3c64, 0x3d66, 0x3e34, 0x3ed2, + 0x3fce, 0x40ac, 0x4144, 0x418a, 0x41f5, 0x422c, 0x4288, 0x432c, + 0x4363, 0x43e0, 0x4500, 0x45b6, 0x45f3, 0x466e, 0x4760, 0x4811, + 0x488b, 0x48b3, 0x48f9, 0x492a, 0x497c, 0x49ce, 0x4a4e, 0x4b0b, + 0x4bd1, 0x4c9d, 0xffff, 0x4d20, 0x4d72, 0x4df8, 0x4e7e, 0x4ee0, + 0x4f87, 0x4fbe, 0x5011, 0x5094, 0x5108, 0x51af, 0x51e0, 0x5211, + 0x5251, 0x52a7, 0x5336, 0x53b3, 0x54d3, 0x55ea, 0x56c2, 0x5752, + 0x5777, 0x579c, 0x57f5, 0x58ce, 0x59ac, 0x5a53, 0x5a7b, 0x5b10, + // Entry 27F40 - 27F7F + 0x5c39, 0x5d0e, 0x5dc2, 0x5e69, 0x5e8e, 0x5f02, 0x5fd4, 0x6091, + 0x6135, 0x61c5, 0x62a7, 0x62cf, 0x62fd, 0x632b, 0x6359, 0x63be, + 0xffff, 0x6487, 0x650d, 0x653b, 0x656f, 0x65ac, 0x65ec, 0x661a, + 0x664b, 0x669e, 0x6724, 0x6758, 0x67ab, 0x6837, 0x689f, 0x6958, + 0x69c3, 0x6ab3, 0x6b9a, 0x6c32, 0x6cb5, 0x6db1, 0x6e64, 0x6e95, + 0x6ec0, 0x6f35, 0x7007, 0x0094, 0x0039, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1d1e, 0x1e41, 0x1f0d, 0x1fd9, 0x2144, 0x22b2, 0x2435, + 0xffff, 0x25b2, 0x2666, 0x2726, 0x27f5, 0x2915, 0x29cf, 0x2aaa, + // Entry 27F80 - 27FBF + 0x2bc7, 0x2d71, 0x2e94, 0x2fc0, 0x30b0, 0x316a, 0xffff, 0xffff, + 0x3298, 0xffff, 0x33d1, 0xffff, 0x34c8, 0x3576, 0x3603, 0x369f, + 0xffff, 0xffff, 0x37e8, 0x38b4, 0x399b, 0xffff, 0xffff, 0xffff, + 0x3afd, 0xffff, 0x3c24, 0x3d1d, 0xffff, 0x3e8f, 0x3f91, 0x4081, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4254, 0xffff, 0xffff, 0x438e, + 0x44bd, 0xffff, 0xffff, 0x4624, 0x4735, 0x47ef, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4a20, 0x4ae0, 0x4b9a, 0x4c75, + 0xffff, 0xffff, 0xffff, 0x4dd0, 0xffff, 0x4ea9, 0xffff, 0xffff, + // Entry 27FC0 - 27FFF + 0x4fec, 0xffff, 0x50d1, 0xffff, 0xffff, 0xffff, 0xffff, 0x527c, + 0xffff, 0x5367, 0x547e, 0x55b0, 0x5697, 0xffff, 0xffff, 0xffff, + 0x57c4, 0x5897, 0x5972, 0xffff, 0xffff, 0x5ab8, 0x5bfc, 0x5cec, + 0x5d8b, 0xffff, 0xffff, 0x5ec8, 0x5fac, 0x605d, 0xffff, 0x6169, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x638a, 0xffff, 0x645f, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6676, + 0xffff, 0xffff, 0x6783, 0xffff, 0x685f, 0xffff, 0x6989, 0x6a73, + 0x6b6c, 0xffff, 0x6c72, 0x6d74, 0xffff, 0xffff, 0xffff, 0x6f0a, + // Entry 28000 - 2803F + 0x6fc4, 0x0094, 0x0039, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dd1, + 0x1ebe, 0x1f8a, 0x20c2, 0x2233, 0x23a7, 0x2521, 0xffff, 0x2620, + 0x26dd, 0x27a6, 0x28ab, 0x2986, 0x2a58, 0x2b5a, 0x2cda, 0x2e2a, + 0x2f56, 0x3055, 0x3121, 0x31f3, 0xffff, 0xffff, 0x332d, 0xffff, + 0x3448, 0xffff, 0x3533, 0x35cc, 0x3662, 0x3722, 0xffff, 0xffff, + 0x3865, 0x392b, 0x3a06, 0xffff, 0xffff, 0xffff, 0x3b95, 0xffff, + 0x3cbf, 0x3dcd, 0xffff, 0x3f30, 0x4026, 0x40f5, 0xffff, 0xffff, + 0xffff, 0xffff, 0x42d7, 0xffff, 0xffff, 0x4453, 0x455b, 0xffff, + // Entry 28040 - 2807F + 0xffff, 0x46d3, 0x47a6, 0x484b, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4a97, 0x4b51, 0x4c23, 0x4ce0, 0xffff, 0xffff, + 0xffff, 0x4e3b, 0xffff, 0x4f32, 0xffff, 0xffff, 0x5054, 0xffff, + 0x515a, 0xffff, 0xffff, 0xffff, 0xffff, 0x52ed, 0xffff, 0x5417, + 0x5540, 0x563f, 0x5708, 0xffff, 0xffff, 0xffff, 0x5841, 0x5920, + 0x5a04, 0xffff, 0xffff, 0x5b86, 0x5c91, 0x5d4b, 0x5e14, 0xffff, + 0xffff, 0x5f57, 0x6017, 0x60e0, 0xffff, 0x6236, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x640d, 0xffff, 0x64c7, 0xffff, 0xffff, + // Entry 28080 - 280BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x66e1, 0xffff, 0xffff, + 0x67f1, 0xffff, 0x68f7, 0xffff, 0x6a18, 0x6b0e, 0x6be6, 0xffff, + 0x6d13, 0x6e09, 0xffff, 0xffff, 0xffff, 0x6f7b, 0x7065, 0x0003, + 0x0004, 0x0238, 0x064a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, + 0x001b, 0x0021, 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, + 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, + // Entry 280C0 - 280FF + 0x002f, 0x002c, 0x0032, 0x0001, 0x003a, 0x0000, 0x0001, 0x003a, + 0x0000, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0041, 0x00a6, 0x00fd, 0x0132, 0x01eb, 0x0205, 0x0216, 0x0227, + 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, + 0x003a, 0xffff, 0x0017, 0x001e, 0x002e, 0x0041, 0x0051, 0x0058, + 0x0065, 0x0072, 0x0079, 0x008f, 0x009f, 0x00ac, 0x000d, 0x003a, + 0xffff, 0x00bc, 0x00c0, 0x00c7, 0x00ce, 0x0051, 0x00d2, 0x00d9, + 0x00e0, 0x00e4, 0x00eb, 0x00ef, 0x00f3, 0x000d, 0x003a, 0xffff, + // Entry 28100 - 2813F + 0x00fa, 0x010a, 0x002e, 0x0123, 0x0051, 0x0058, 0x0065, 0x0139, + 0x014c, 0x016b, 0x0184, 0x019a, 0x0003, 0x0079, 0x0088, 0x0097, + 0x000d, 0x003a, 0xffff, 0x0017, 0x001e, 0x002e, 0x0041, 0x0051, + 0x0058, 0x0065, 0x0072, 0x0079, 0x008f, 0x009f, 0x00ac, 0x000d, + 0x003a, 0xffff, 0x00bc, 0x00c0, 0x00c7, 0x00ce, 0x0051, 0x00d2, + 0x00d9, 0x00e0, 0x00e4, 0x00eb, 0x00ef, 0x00f3, 0x000d, 0x003a, + 0xffff, 0x00fa, 0x010a, 0x002e, 0x0123, 0x0051, 0x0058, 0x0065, + 0x0139, 0x014c, 0x016b, 0x0184, 0x019a, 0x0002, 0x00a9, 0x00d3, + // Entry 28140 - 2817F + 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x003a, + 0x01b3, 0x01c0, 0x01ca, 0x01d7, 0x01e1, 0x01ee, 0x01fe, 0x0007, + 0x003a, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, 0x022b, 0x0232, + 0x0007, 0x003a, 0x01b3, 0x01c0, 0x01ca, 0x01d7, 0x01e1, 0x01ee, + 0x01fe, 0x0007, 0x003a, 0x0236, 0x024c, 0x025f, 0x0275, 0x0288, + 0x029e, 0x02b7, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, + 0x0007, 0x003a, 0x01b3, 0x01c0, 0x01ca, 0x01d7, 0x01e1, 0x01ee, + 0x01fe, 0x0007, 0x003a, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, + // Entry 28180 - 281BF + 0x022b, 0x0232, 0x0007, 0x003a, 0x01b3, 0x01c0, 0x01ca, 0x01d7, + 0x01e1, 0x01ee, 0x01fe, 0x0007, 0x003a, 0x0236, 0x024c, 0x025f, + 0x0275, 0x0288, 0x029e, 0x02b7, 0x0002, 0x0100, 0x0119, 0x0003, + 0x0104, 0x010b, 0x0112, 0x0005, 0x003a, 0xffff, 0x02ca, 0x02d9, + 0x02e8, 0x02f7, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x003a, 0xffff, 0x0306, 0x032a, 0x034e, 0x0372, + 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x003a, 0xffff, 0x02ca, + 0x02d9, 0x02e8, 0x02f7, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 281C0 - 281FF + 0x0037, 0x2335, 0x0005, 0x003a, 0xffff, 0x0306, 0x032a, 0x034e, + 0x0372, 0x0002, 0x0135, 0x0190, 0x0003, 0x0139, 0x0156, 0x0173, + 0x0007, 0x0144, 0x0147, 0x0141, 0x014a, 0x014d, 0x0150, 0x0153, + 0x0001, 0x003a, 0x0396, 0x0001, 0x003a, 0x03b6, 0x0001, 0x003a, + 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, + 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, 0x0007, 0x0161, 0x0164, + 0x015e, 0x0167, 0x016a, 0x016d, 0x0170, 0x0001, 0x003a, 0x0437, + 0x0001, 0x003a, 0x0456, 0x0001, 0x003a, 0x00eb, 0x0001, 0x003a, + // Entry 28200 - 2823F + 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, + 0x003a, 0x0424, 0x0007, 0x017e, 0x0181, 0x017b, 0x0184, 0x0187, + 0x018a, 0x018d, 0x0001, 0x003a, 0x0396, 0x0001, 0x003a, 0x03b6, + 0x0001, 0x003a, 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, 0x003a, + 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, 0x0003, + 0x0194, 0x01b1, 0x01ce, 0x0007, 0x019f, 0x01a2, 0x019c, 0x01a5, + 0x01a8, 0x01ab, 0x01ae, 0x0001, 0x003a, 0x0437, 0x0001, 0x003a, + 0x03b6, 0x0001, 0x003a, 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, + // Entry 28240 - 2827F + 0x003a, 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, + 0x0007, 0x01bc, 0x01bf, 0x01b9, 0x01c2, 0x01c5, 0x01c8, 0x01cb, + 0x0001, 0x003a, 0x0437, 0x0001, 0x003a, 0x03b6, 0x0001, 0x003a, + 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, + 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, 0x0007, 0x01d9, 0x01dc, + 0x01d6, 0x01df, 0x01e2, 0x01e5, 0x01e8, 0x0001, 0x003a, 0x0437, + 0x0001, 0x003a, 0x03b6, 0x0001, 0x003a, 0x03d2, 0x0001, 0x003a, + 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, + // Entry 28280 - 282BF + 0x003a, 0x0424, 0x0003, 0x01fa, 0x0000, 0x01ef, 0x0002, 0x01f2, + 0x01f6, 0x0002, 0x003a, 0x045d, 0x04a1, 0x0002, 0x003a, 0x0483, + 0x04be, 0x0002, 0x01fd, 0x0201, 0x0002, 0x003a, 0x04db, 0x04ef, + 0x0002, 0x003a, 0x0483, 0x04be, 0x0004, 0x0213, 0x020d, 0x020a, + 0x0210, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, 0x0001, + 0x000c, 0x03e3, 0x0001, 0x0000, 0x237b, 0x0004, 0x0224, 0x021e, + 0x021b, 0x0221, 0x0001, 0x002a, 0x0ba7, 0x0001, 0x002a, 0x0bb7, + 0x0001, 0x002a, 0x0bc4, 0x0001, 0x002a, 0x0bcf, 0x0004, 0x0235, + // Entry 282C0 - 282FF + 0x022f, 0x022c, 0x0232, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x0279, 0x0000, 0x0000, 0x027e, 0x0295, 0x02ac, 0x02c3, 0x02da, + 0x02f1, 0x0308, 0x031f, 0x0336, 0x034d, 0x0368, 0x0383, 0x0000, + 0x0000, 0x0000, 0x039e, 0x03b7, 0x03d0, 0x0000, 0x0000, 0x0000, + 0x03e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ee, 0x0402, + 0x0416, 0x042a, 0x043e, 0x0452, 0x0466, 0x047a, 0x048e, 0x04a2, + 0x04b6, 0x04ca, 0x04de, 0x04f2, 0x0506, 0x051a, 0x052e, 0x0542, + // Entry 28300 - 2833F + 0x0556, 0x056a, 0x057e, 0x0000, 0x0592, 0x0000, 0x0597, 0x05ad, + 0x05bf, 0x05d1, 0x05e7, 0x05f9, 0x060b, 0x0621, 0x0633, 0x0645, + 0x0001, 0x027b, 0x0001, 0x003a, 0x0500, 0x0003, 0x0282, 0x0285, + 0x028a, 0x0001, 0x003a, 0x050a, 0x0003, 0x003a, 0x0517, 0x0537, + 0x0548, 0x0002, 0x028d, 0x0291, 0x0002, 0x003a, 0x0588, 0x0568, + 0x0002, 0x003a, 0x05cf, 0x05ab, 0x0003, 0x0299, 0x029c, 0x02a1, + 0x0001, 0x003a, 0x050a, 0x0003, 0x003a, 0x05f6, 0x0537, 0x0548, + 0x0002, 0x02a4, 0x02a8, 0x0002, 0x003a, 0x0588, 0x0568, 0x0002, + // Entry 28340 - 2837F + 0x003a, 0x05cf, 0x05ab, 0x0003, 0x02b0, 0x02b3, 0x02b8, 0x0001, + 0x003a, 0x050a, 0x0003, 0x003a, 0x05f6, 0x0537, 0x0548, 0x0002, + 0x02bb, 0x02bf, 0x0002, 0x003a, 0x0588, 0x0568, 0x0002, 0x003a, + 0x05cf, 0x05ab, 0x0003, 0x02c7, 0x02ca, 0x02cf, 0x0001, 0x003a, + 0x0610, 0x0003, 0x003a, 0x062c, 0x065b, 0x067b, 0x0002, 0x02d2, + 0x02d6, 0x0002, 0x003a, 0x06d9, 0x06aa, 0x0002, 0x003a, 0x073e, + 0x070b, 0x0003, 0x02de, 0x02e1, 0x02e6, 0x0001, 0x003a, 0x0610, + 0x0003, 0x003a, 0x0774, 0x065b, 0x067b, 0x0002, 0x02e9, 0x02ed, + // Entry 28380 - 283BF + 0x0002, 0x003a, 0x06d9, 0x079d, 0x0002, 0x003a, 0x073e, 0x07c5, + 0x0003, 0x02f5, 0x02f8, 0x02fd, 0x0001, 0x003a, 0x0610, 0x0003, + 0x003a, 0x0774, 0x065b, 0x067b, 0x0002, 0x0300, 0x0304, 0x0002, + 0x003a, 0x06d9, 0x06d9, 0x0002, 0x003a, 0x07ee, 0x073e, 0x0003, + 0x030c, 0x030f, 0x0314, 0x0001, 0x003a, 0x0811, 0x0003, 0x003a, + 0x0824, 0x0844, 0x085b, 0x0002, 0x0317, 0x031b, 0x0002, 0x003a, + 0x08a1, 0x0881, 0x0002, 0x003a, 0x08ca, 0x08ca, 0x0003, 0x0323, + 0x0326, 0x032b, 0x0001, 0x003a, 0x0811, 0x0003, 0x003a, 0x0824, + // Entry 283C0 - 283FF + 0x0844, 0x085b, 0x0002, 0x032e, 0x0332, 0x0002, 0x003a, 0x08a1, + 0x0881, 0x0002, 0x003a, 0x08ca, 0x08f7, 0x0003, 0x033a, 0x033d, + 0x0342, 0x0001, 0x003a, 0x0811, 0x0003, 0x003a, 0x0824, 0x0844, + 0x085b, 0x0002, 0x0345, 0x0349, 0x0002, 0x003a, 0x08a1, 0x0881, + 0x0002, 0x003a, 0x08ca, 0x091e, 0x0004, 0x0352, 0x0355, 0x035a, + 0x0365, 0x0001, 0x003a, 0x0942, 0x0003, 0x003a, 0x094c, 0x0963, + 0x0971, 0x0002, 0x035d, 0x0361, 0x0002, 0x003a, 0x09ab, 0x098e, + 0x0002, 0x003a, 0x09ec, 0x09cb, 0x0001, 0x003a, 0x0a10, 0x0004, + // Entry 28400 - 2843F + 0x036d, 0x0370, 0x0375, 0x0380, 0x0001, 0x003a, 0x0942, 0x0003, + 0x003a, 0x094c, 0x0963, 0x0971, 0x0002, 0x0378, 0x037c, 0x0002, + 0x003a, 0x09ab, 0x098e, 0x0002, 0x003a, 0x09ec, 0x09cb, 0x0001, + 0x003a, 0x0a10, 0x0004, 0x0388, 0x038b, 0x0390, 0x039b, 0x0001, + 0x003a, 0x0942, 0x0003, 0x003a, 0x094c, 0x0963, 0x0971, 0x0002, + 0x0393, 0x0397, 0x0002, 0x003a, 0x09ab, 0x098e, 0x0002, 0x003a, + 0x09ec, 0x09cb, 0x0001, 0x003a, 0x0a10, 0x0003, 0x03a2, 0x03a5, + 0x03ac, 0x0001, 0x003a, 0x0a1e, 0x0005, 0x003a, 0x0a3b, 0x0a4e, + // Entry 28440 - 2847F + 0x0a5b, 0x0a28, 0x0a68, 0x0002, 0x03af, 0x03b3, 0x0002, 0x003a, + 0x0a9e, 0x0a81, 0x0002, 0x003a, 0x0adf, 0x0abe, 0x0003, 0x03bb, + 0x03be, 0x03c5, 0x0001, 0x003a, 0x0a1e, 0x0005, 0x003a, 0x0a3b, + 0x0a4e, 0x0a5b, 0x0a28, 0x0a68, 0x0002, 0x03c8, 0x03cc, 0x0002, + 0x003a, 0x0a9e, 0x0a81, 0x0002, 0x003a, 0x0adf, 0x0adf, 0x0003, + 0x03d4, 0x03d7, 0x03de, 0x0001, 0x003a, 0x0a1e, 0x0005, 0x003a, + 0x0a3b, 0x0a4e, 0x0a5b, 0x0a28, 0x0a68, 0x0002, 0x03e1, 0x03e5, + 0x0002, 0x003a, 0x0a9e, 0x0a81, 0x0002, 0x003a, 0x0adf, 0x0adf, + // Entry 28480 - 284BF + 0x0001, 0x03eb, 0x0001, 0x003a, 0x0b03, 0x0003, 0x0000, 0x03f2, + 0x03f7, 0x0003, 0x003a, 0x0b1a, 0x0b3d, 0x0b57, 0x0002, 0x03fa, + 0x03fe, 0x0002, 0x003a, 0x0ba6, 0x0b80, 0x0002, 0x003a, 0x0bfc, + 0x0bcf, 0x0003, 0x0000, 0x0406, 0x040b, 0x0003, 0x003a, 0x0b1a, + 0x0b3d, 0x0b57, 0x0002, 0x040e, 0x0412, 0x0002, 0x003a, 0x0ba6, + 0x0ba6, 0x0002, 0x003a, 0x0bfc, 0x0bfc, 0x0003, 0x0000, 0x041a, + 0x041f, 0x0003, 0x003a, 0x0b1a, 0x0b3d, 0x0b57, 0x0002, 0x0422, + 0x0426, 0x0002, 0x003a, 0x0ba6, 0x0ba6, 0x0002, 0x003a, 0x0bfc, + // Entry 284C0 - 284FF + 0x0bfc, 0x0003, 0x0000, 0x042e, 0x0433, 0x0003, 0x003a, 0x0c2c, + 0x0c4c, 0x0c63, 0x0002, 0x0436, 0x043a, 0x0002, 0x003a, 0x0cac, + 0x0c89, 0x0002, 0x003a, 0x0cac, 0x0cd2, 0x0003, 0x0000, 0x0442, + 0x0447, 0x0003, 0x003a, 0x0c2c, 0x0c4c, 0x0c63, 0x0002, 0x044a, + 0x044e, 0x0002, 0x003a, 0x0cac, 0x0cac, 0x0002, 0x003a, 0x0cfc, + 0x0cfc, 0x0003, 0x0000, 0x0456, 0x045b, 0x0003, 0x003a, 0x0c2c, + 0x0c4c, 0x0c63, 0x0002, 0x045e, 0x0462, 0x0002, 0x003a, 0x0cac, + 0x0cac, 0x0002, 0x003a, 0x0cfc, 0x0cfc, 0x0003, 0x0000, 0x046a, + // Entry 28500 - 2853F + 0x046f, 0x0003, 0x003a, 0x0d29, 0x0d4c, 0x0d66, 0x0002, 0x0472, + 0x0476, 0x0002, 0x003a, 0x0db5, 0x0d8f, 0x0002, 0x003a, 0x0e0b, + 0x0dde, 0x0003, 0x0000, 0x047e, 0x0483, 0x0003, 0x003a, 0x0d29, + 0x0d4c, 0x0d66, 0x0002, 0x0486, 0x048a, 0x0002, 0x003a, 0x0db5, + 0x0db5, 0x0002, 0x003a, 0x0e0b, 0x0e0b, 0x0003, 0x0000, 0x0492, + 0x0497, 0x0003, 0x003a, 0x0d29, 0x0d4c, 0x0d66, 0x0002, 0x049a, + 0x049e, 0x0002, 0x003a, 0x0db5, 0x0db5, 0x0002, 0x003a, 0x0e0b, + 0x0e0b, 0x0003, 0x0000, 0x04a6, 0x04ab, 0x0003, 0x003a, 0x0e3b, + // Entry 28540 - 2857F + 0x0e5b, 0x0e72, 0x0002, 0x04ae, 0x04b2, 0x0002, 0x003a, 0x0ebb, + 0x0e98, 0x0002, 0x003a, 0x0f0b, 0x0ee1, 0x0003, 0x0000, 0x04ba, + 0x04bf, 0x0003, 0x003a, 0x0e3b, 0x0e5b, 0x0e72, 0x0002, 0x04c2, + 0x04c6, 0x0002, 0x003a, 0x0ebb, 0x0ebb, 0x0002, 0x003a, 0x0f0b, + 0x0f0b, 0x0003, 0x0000, 0x04ce, 0x04d3, 0x0003, 0x003a, 0x0e3b, + 0x0e5b, 0x0e72, 0x0002, 0x04d6, 0x04da, 0x0002, 0x003a, 0x0ebb, + 0x0ebb, 0x0002, 0x003a, 0x0f0b, 0x0f0b, 0x0003, 0x0000, 0x04e2, + 0x04e7, 0x0003, 0x003a, 0x0f38, 0x0f5b, 0x0f75, 0x0002, 0x04ea, + // Entry 28580 - 285BF + 0x04ee, 0x0002, 0x003a, 0x0fc4, 0x0f9e, 0x0002, 0x003a, 0x101a, + 0x0fed, 0x0003, 0x0000, 0x04f6, 0x04fb, 0x0003, 0x003a, 0x0f38, + 0x0f5b, 0x0f75, 0x0002, 0x04fe, 0x0502, 0x0002, 0x003a, 0x0fc4, + 0x0fc4, 0x0002, 0x003a, 0x101a, 0x101a, 0x0003, 0x0000, 0x050a, + 0x050f, 0x0003, 0x003a, 0x0f38, 0x0f5b, 0x0f75, 0x0002, 0x0512, + 0x0516, 0x0002, 0x003a, 0x0fc4, 0x0fc4, 0x0002, 0x003a, 0x101a, + 0x101a, 0x0003, 0x0000, 0x051e, 0x0523, 0x0003, 0x003a, 0x104a, + 0x1070, 0x108d, 0x0002, 0x0526, 0x052a, 0x0002, 0x003a, 0x10e2, + // Entry 285C0 - 285FF + 0x10b9, 0x0002, 0x003a, 0x1141, 0x1111, 0x0003, 0x0000, 0x0532, + 0x0537, 0x0003, 0x003a, 0x104a, 0x1070, 0x108d, 0x0002, 0x053a, + 0x053e, 0x0002, 0x003a, 0x10e2, 0x10e2, 0x0002, 0x003a, 0x1141, + 0x1141, 0x0003, 0x0000, 0x0546, 0x054b, 0x0003, 0x003a, 0x104a, + 0x1070, 0x108d, 0x0002, 0x054e, 0x0552, 0x0002, 0x003a, 0x10e2, + 0x10e2, 0x0002, 0x003a, 0x1141, 0x1141, 0x0003, 0x0000, 0x055a, + 0x055f, 0x0003, 0x003a, 0x1174, 0x1194, 0x11ab, 0x0002, 0x0562, + 0x0566, 0x0002, 0x003a, 0x11f4, 0x11d1, 0x0002, 0x003a, 0x1244, + // Entry 28600 - 2863F + 0x121a, 0x0003, 0x0000, 0x056e, 0x0573, 0x0003, 0x003a, 0x1174, + 0x1194, 0x11ab, 0x0002, 0x0576, 0x057a, 0x0002, 0x003a, 0x11f4, + 0x11f4, 0x0002, 0x003a, 0x1244, 0x1244, 0x0003, 0x0000, 0x0582, + 0x0587, 0x0003, 0x003a, 0x1174, 0x1194, 0x11ab, 0x0002, 0x058a, + 0x058e, 0x0002, 0x003a, 0x11f4, 0x11f4, 0x0002, 0x003a, 0x1244, + 0x1244, 0x0001, 0x0594, 0x0001, 0x003a, 0x1271, 0x0003, 0x059b, + 0x059e, 0x05a2, 0x0001, 0x003a, 0x12a3, 0x0002, 0x003a, 0xffff, + 0x12b0, 0x0002, 0x05a5, 0x05a9, 0x0002, 0x003a, 0x12e1, 0x12c1, + // Entry 28640 - 2867F + 0x0002, 0x003a, 0x1325, 0x1304, 0x0003, 0x05b1, 0x0000, 0x05b4, + 0x0001, 0x003a, 0x12a3, 0x0002, 0x05b7, 0x05bb, 0x0002, 0x003a, + 0x12e1, 0x12c1, 0x0002, 0x003a, 0x1325, 0x1304, 0x0003, 0x05c3, + 0x0000, 0x05c6, 0x0001, 0x003a, 0x12a3, 0x0002, 0x05c9, 0x05cd, + 0x0002, 0x003a, 0x12e1, 0x12c1, 0x0002, 0x003a, 0x1325, 0x1304, + 0x0003, 0x05d5, 0x05d8, 0x05dc, 0x0001, 0x003a, 0x134c, 0x0002, + 0x003a, 0xffff, 0x135c, 0x0002, 0x05df, 0x05e3, 0x0002, 0x003a, + 0x1393, 0x1370, 0x0002, 0x003a, 0x13b9, 0x13b9, 0x0003, 0x05eb, + // Entry 28680 - 286BF + 0x0000, 0x05ee, 0x0001, 0x003a, 0x134c, 0x0002, 0x05f1, 0x05f5, + 0x0002, 0x003a, 0x1393, 0x1370, 0x0002, 0x003a, 0x13b9, 0x13e3, + 0x0003, 0x05fd, 0x0000, 0x0600, 0x0001, 0x003a, 0x134c, 0x0002, + 0x0603, 0x0607, 0x0002, 0x003a, 0x1393, 0x1370, 0x0002, 0x003a, + 0x13b9, 0x13e3, 0x0003, 0x060f, 0x0612, 0x0616, 0x0001, 0x003a, + 0x140a, 0x0002, 0x003a, 0xffff, 0x1420, 0x0002, 0x0619, 0x061d, + 0x0002, 0x003a, 0x1453, 0x1427, 0x0002, 0x003a, 0x14ac, 0x1482, + 0x0003, 0x0625, 0x0000, 0x0628, 0x0001, 0x003a, 0x140a, 0x0002, + // Entry 286C0 - 286FF + 0x062b, 0x062f, 0x0002, 0x003a, 0x1453, 0x1427, 0x0002, 0x003a, + 0x14ac, 0x1482, 0x0003, 0x0637, 0x0000, 0x063a, 0x0001, 0x003a, + 0x140a, 0x0002, 0x063d, 0x0641, 0x0002, 0x003a, 0x1453, 0x1427, + 0x0002, 0x003a, 0x14ac, 0x1482, 0x0001, 0x0647, 0x0001, 0x003a, + 0x14dc, 0x0004, 0x064f, 0x0654, 0x0659, 0x0664, 0x0003, 0x0000, + 0x1dc7, 0x29cf, 0x29d6, 0x0003, 0x003a, 0x14f0, 0x14fe, 0x1519, + 0x0002, 0x0000, 0x065c, 0x0002, 0x0000, 0x065f, 0x0003, 0x003a, + 0xffff, 0x1540, 0x1576, 0x0002, 0x084b, 0x0667, 0x0003, 0x066b, + // Entry 28700 - 2873F + 0x07ab, 0x070b, 0x009e, 0x003a, 0xffff, 0xffff, 0xffff, 0xffff, + 0x16ef, 0x17b4, 0x18c6, 0x1952, 0x1a47, 0x1b36, 0x1c1c, 0x1d1d, + 0x1da3, 0x1f1d, 0x1fac, 0x2053, 0x2133, 0x21c8, 0x2269, 0x2352, + 0x2477, 0x2557, 0x2640, 0x26e7, 0x276a, 0xffff, 0xffff, 0x2851, + 0xffff, 0x2934, 0xffff, 0x2a08, 0x2a7c, 0x2aed, 0x2b58, 0xffff, + 0xffff, 0x2c80, 0x2d15, 0x2de4, 0xffff, 0xffff, 0xffff, 0x2ee5, + 0xffff, 0x2fbe, 0x3083, 0xffff, 0x31a0, 0x3277, 0x3384, 0xffff, + 0xffff, 0xffff, 0xffff, 0x34d9, 0xffff, 0xffff, 0x35f2, 0x36ed, + // Entry 28740 - 2877F + 0xffff, 0xffff, 0x3874, 0x3945, 0x39ef, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3b9a, 0x3c0e, 0x3cbe, 0x3d44, 0x3db8, + 0xffff, 0xffff, 0x3f82, 0xffff, 0x4022, 0xffff, 0xffff, 0x417b, + 0xffff, 0x42e1, 0xffff, 0xffff, 0xffff, 0xffff, 0x440f, 0xffff, + 0x44be, 0x4586, 0x4669, 0x471c, 0xffff, 0xffff, 0xffff, 0x47f9, + 0x48d3, 0x498f, 0xffff, 0xffff, 0x4ab9, 0x4bfa, 0x4cce, 0x4d5a, + 0xffff, 0xffff, 0x4e4f, 0x4edb, 0x4f4c, 0xffff, 0x501a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x52a4, 0x535d, 0x53c5, 0xffff, + // Entry 28780 - 287BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5567, 0xffff, + 0xffff, 0x561e, 0xffff, 0x56af, 0xffff, 0x57b2, 0x583e, 0x5900, + 0xffff, 0x59a3, 0x5a6e, 0xffff, 0xffff, 0xffff, 0x5bbd, 0x5c5b, + 0xffff, 0xffff, 0x15a9, 0x183a, 0x1e17, 0x1e91, 0xffff, 0xffff, + 0x4225, 0x51ba, 0x009e, 0x003a, 0x161a, 0x1646, 0x1673, 0x16a3, + 0x1722, 0x17d4, 0x18e6, 0x1995, 0x1a8a, 0x1b76, 0x1c65, 0x1d3d, + 0x1dbd, 0x1f40, 0x1fd5, 0x208f, 0x2156, 0x21f1, 0x22a8, 0x23a7, + 0x24b3, 0x2596, 0x2669, 0x2704, 0x2793, 0x2811, 0x282e, 0x287d, + // Entry 287C0 - 287FF + 0x28fb, 0x295b, 0x29d5, 0x2a22, 0x2a93, 0x2b04, 0x2b87, 0x2c17, + 0x2c4d, 0x2ca3, 0x2d42, 0x2e01, 0x2e61, 0x2e7e, 0x2eb8, 0x2f12, + 0x2f98, 0x2ff1, 0x30b9, 0x3151, 0x31d9, 0x32c2, 0x339b, 0x33f5, + 0x3425, 0x3487, 0x34b0, 0x34fc, 0x356e, 0x35aa, 0x3637, 0x3735, + 0x3827, 0x385a, 0x38ad, 0x396f, 0x3a09, 0x3a69, 0x3a9f, 0x3acf, + 0x3af2, 0x3b28, 0x3b61, 0x3bb4, 0x3c3a, 0x3cde, 0x3d5e, 0x3e1b, + 0x3f0d, 0x3f46, 0x3fa2, 0x4008, 0x4060, 0x4108, 0x414e, 0x41a5, + 0x429f, 0x42fe, 0x4364, 0x4384, 0x43ad, 0x43d9, 0x442f, 0x449b, + // Entry 28800 - 2883F + 0x44f4, 0x45c5, 0x4696, 0x4739, 0x479f, 0x47c8, 0x47df, 0x4832, + 0x4905, 0x49cd, 0x4a6f, 0x4a86, 0x4aff, 0x4c32, 0x4cee, 0x4d80, + 0x4df8, 0x4e15, 0x4e6f, 0x4ef2, 0x4f6f, 0x4fe1, 0x5070, 0x5142, + 0x516e, 0x518b, 0x5261, 0x5287, 0x52d3, 0x5371, 0x53df, 0x543f, + 0x5462, 0x54a1, 0x54d4, 0x550a, 0x552d, 0x554a, 0x557e, 0x55d2, + 0x55fb, 0x5638, 0x5698, 0x56ed, 0x5795, 0x57d2, 0x5870, 0x591a, + 0x597a, 0x59d8, 0x5a9d, 0x5b27, 0x5b4a, 0x5b71, 0x5be3, 0x5c90, + 0x37f1, 0x4bb4, 0x15c0, 0x185a, 0x1e31, 0x1eb1, 0xffff, 0x4137, + // Entry 28840 - 2887F + 0x423f, 0x51e3, 0x009e, 0x003a, 0xffff, 0xffff, 0xffff, 0xffff, + 0x176e, 0x180a, 0x191f, 0x19f1, 0x1ae6, 0x1bcf, 0x1cc7, 0x1d76, + 0x1df0, 0x1f7c, 0x2017, 0x20e4, 0x2192, 0x2233, 0x2303, 0x2415, + 0x250b, 0x25f1, 0x26ab, 0x273a, 0x27d5, 0xffff, 0xffff, 0x28bf, + 0xffff, 0x299b, 0xffff, 0x2a55, 0x2ac3, 0x2b34, 0x2bd5, 0xffff, + 0xffff, 0x2cdf, 0x2d88, 0x2e37, 0xffff, 0xffff, 0xffff, 0x2f58, + 0xffff, 0x303d, 0x3108, 0xffff, 0x322b, 0x3326, 0x33cb, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3538, 0xffff, 0xffff, 0x3695, 0x3796, + // Entry 28880 - 288BF + 0xffff, 0xffff, 0x38ff, 0x39b2, 0x3a3c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3be7, 0x3c7f, 0x3d17, 0x3d91, 0x3e97, + 0xffff, 0xffff, 0x3fdb, 0xffff, 0x40b7, 0xffff, 0xffff, 0x41e8, + 0xffff, 0x4334, 0xffff, 0xffff, 0xffff, 0xffff, 0x4468, 0xffff, + 0x4543, 0x461d, 0x46dc, 0x476f, 0xffff, 0xffff, 0xffff, 0x4884, + 0x4950, 0x4a24, 0xffff, 0xffff, 0x4b5e, 0x4c83, 0x4d27, 0x4dbf, + 0xffff, 0xffff, 0x4ea8, 0x4f22, 0x4fab, 0xffff, 0x50df, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x531b, 0x539e, 0x5412, 0xffff, + // Entry 288C0 - 288FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x55ae, 0xffff, + 0xffff, 0x566b, 0xffff, 0x5744, 0xffff, 0x580b, 0x58bb, 0x594d, + 0xffff, 0x5a26, 0x5ae5, 0xffff, 0xffff, 0xffff, 0x5c22, 0x5cde, + 0xffff, 0xffff, 0x15f0, 0x1893, 0x1e64, 0x1eea, 0xffff, 0xffff, + 0x4272, 0x5225, 0x0003, 0x0000, 0x0000, 0x084f, 0x0042, 0x000b, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 28900 - 2893F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0000, 0x0003, 0x0004, 0x0709, 0x0a8b, 0x0012, 0x0017, + 0x0024, 0x00f2, 0x013f, 0x0284, 0x0000, 0x02d1, 0x02fc, 0x052c, + 0x0000, 0x0584, 0x0000, 0x0000, 0x0000, 0x0000, 0x05ba, 0x06b2, + // Entry 28940 - 2897F + 0x06fb, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, + 0x001f, 0x0001, 0x0021, 0x0001, 0x003b, 0x0000, 0x000a, 0x002f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x00e1, 0x0000, 0x0000, 0x0066, + 0x0079, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, + 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, + 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, + 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x0002, 0x0000, + // Entry 28980 - 289BF + 0x0057, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x0003, 0x006a, 0x0075, 0x006f, 0x0003, 0x003b, 0xffff, 0xffff, + 0x0046, 0x0004, 0x003b, 0xffff, 0xffff, 0xffff, 0x0046, 0x0002, + 0x003b, 0xffff, 0x0046, 0x0005, 0x0000, 0x0000, 0x0000, 0x007f, + 0x009e, 0x0001, 0x0081, 0x0001, 0x0083, 0x0019, 0x003b, 0xffff, + 0x004d, 0x0054, 0x005b, 0x0062, 0x0069, 0x0070, 0x0077, 0x007e, + 0x0085, 0x008c, 0x0093, 0x009a, 0x00a1, 0x00a8, 0x00af, 0x00b6, + // Entry 289C0 - 289FF + 0x00bd, 0x00c4, 0x00cb, 0x00d2, 0x00d9, 0x00e0, 0x00e7, 0x00ee, + 0x0001, 0x00a0, 0x0001, 0x00a2, 0x003d, 0x003b, 0xffff, 0x00f5, + 0x00fc, 0x0103, 0x010a, 0x0111, 0x0118, 0x011f, 0x0126, 0x012d, + 0x0134, 0x013b, 0x0142, 0x0149, 0x0150, 0x0157, 0x015e, 0x0165, + 0x016c, 0x0173, 0x017a, 0x0181, 0x0188, 0x018f, 0x0196, 0x019d, + 0x01a4, 0x01ab, 0x01b2, 0x01b9, 0x01c0, 0x01c7, 0x01ce, 0x01d5, + 0x01dc, 0x01e3, 0x01ea, 0x01f1, 0x01f8, 0x01ff, 0x0206, 0x020d, + 0x0214, 0x021b, 0x0222, 0x0229, 0x0230, 0x0237, 0x023e, 0x0245, + // Entry 28A00 - 28A3F + 0x024c, 0x0253, 0x025a, 0x0261, 0x0268, 0x026f, 0x0276, 0x027d, + 0x0284, 0x028b, 0x0292, 0x0004, 0x00ef, 0x00e9, 0x00e6, 0x00ec, + 0x0001, 0x003b, 0x0299, 0x0001, 0x003b, 0x02ac, 0x0001, 0x003b, + 0x02ba, 0x0001, 0x003b, 0x02ba, 0x0001, 0x00f4, 0x0002, 0x00f7, + 0x011b, 0x0003, 0x00fb, 0x0000, 0x010b, 0x000e, 0x003b, 0xffff, + 0x02c3, 0x02ca, 0x02d4, 0x02de, 0x02eb, 0x02f5, 0x02ff, 0x030c, + 0x031c, 0x0326, 0x0333, 0x033d, 0x0347, 0x000e, 0x003b, 0xffff, + 0x02c3, 0x02ca, 0x02d4, 0x02de, 0x02eb, 0x02f5, 0x02ff, 0x030c, + // Entry 28A40 - 28A7F + 0x031c, 0x0326, 0x0333, 0x033d, 0x0347, 0x0003, 0x011f, 0x0000, + 0x012f, 0x000e, 0x003b, 0xffff, 0x02c3, 0x02ca, 0x02d4, 0x02de, + 0x02eb, 0x02f5, 0x02ff, 0x030c, 0x031c, 0x0326, 0x0333, 0x033d, + 0x0347, 0x000e, 0x003b, 0xffff, 0x02c3, 0x02ca, 0x02d4, 0x02de, + 0x02eb, 0x02f5, 0x02ff, 0x030c, 0x031c, 0x0326, 0x0333, 0x033d, + 0x0347, 0x000a, 0x014a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0273, + 0x0000, 0x0000, 0x01af, 0x01c2, 0x0002, 0x014d, 0x017e, 0x0003, + 0x0151, 0x0160, 0x016f, 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, + // Entry 28A80 - 28ABF + 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, + 0x003a, 0x0040, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, + 0x2398, 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, + 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, + 0x0003, 0x0182, 0x0191, 0x01a0, 0x000d, 0x003b, 0xffff, 0x0007, + 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, + 0x0034, 0x003a, 0x0040, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 28AC0 - 28AFF + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x29da, 0x2398, 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, + 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, + 0x0040, 0x0003, 0x01b3, 0x01be, 0x01b8, 0x0003, 0x003b, 0xffff, + 0xffff, 0x0046, 0x0004, 0x003b, 0xffff, 0xffff, 0xffff, 0x0046, + 0x0002, 0x003b, 0xffff, 0x0046, 0x0006, 0x01c9, 0x0000, 0x0000, + 0x01ed, 0x020c, 0x024f, 0x0001, 0x01cb, 0x0003, 0x01cf, 0x0000, + 0x01de, 0x000d, 0x003b, 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, + // Entry 28B00 - 28B3F + 0x035e, 0x0362, 0x0366, 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, + 0x000d, 0x003b, 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, 0x035e, + 0x0362, 0x0366, 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, 0x0001, + 0x01ef, 0x0001, 0x01f1, 0x0019, 0x003b, 0xffff, 0x004d, 0x0054, + 0x005b, 0x0062, 0x0069, 0x0070, 0x0077, 0x007e, 0x0085, 0x008c, + 0x0093, 0x009a, 0x00a1, 0x00a8, 0x00af, 0x00b6, 0x00bd, 0x00c4, + 0x00cb, 0x00d2, 0x00d9, 0x00e0, 0x00e7, 0x00ee, 0x0001, 0x020e, + 0x0001, 0x0210, 0x003d, 0x003b, 0xffff, 0x00f5, 0x00fc, 0x0103, + // Entry 28B40 - 28B7F + 0x010a, 0x0111, 0x0118, 0x011f, 0x0126, 0x012d, 0x0134, 0x013b, + 0x0142, 0x0149, 0x0150, 0x0157, 0x015e, 0x0165, 0x016c, 0x0173, + 0x017a, 0x0181, 0x0188, 0x018f, 0x0196, 0x019d, 0x01a4, 0x01ab, + 0x01b2, 0x01b9, 0x01c0, 0x01c7, 0x01ce, 0x01d5, 0x01dc, 0x01e3, + 0x01ea, 0x01f1, 0x01f8, 0x01ff, 0x0206, 0x020d, 0x0214, 0x021b, + 0x0222, 0x0229, 0x0230, 0x0237, 0x023e, 0x0245, 0x024c, 0x0253, + 0x025a, 0x0261, 0x0268, 0x026f, 0x0276, 0x027d, 0x0284, 0x028b, + 0x0292, 0x0001, 0x0251, 0x0003, 0x0255, 0x0000, 0x0264, 0x000d, + // Entry 28B80 - 28BBF + 0x003b, 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, 0x035e, 0x0362, + 0x0366, 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, 0x000d, 0x003b, + 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, 0x035e, 0x0362, 0x0366, + 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, 0x0004, 0x0281, 0x027b, + 0x0278, 0x027e, 0x0001, 0x003b, 0x0299, 0x0001, 0x003b, 0x02ac, + 0x0001, 0x003b, 0x02ba, 0x0001, 0x003b, 0x02ba, 0x0001, 0x0286, + 0x0002, 0x0289, 0x02ad, 0x0003, 0x028d, 0x0000, 0x029d, 0x000e, + 0x003b, 0xffff, 0x037e, 0x038b, 0x0395, 0x039f, 0x03ac, 0x03b3, + // Entry 28BC0 - 28BFF + 0x03c0, 0x03cd, 0x03da, 0x03e4, 0x03eb, 0x03f2, 0x03fc, 0x000e, + 0x003b, 0xffff, 0x037e, 0x038b, 0x0395, 0x039f, 0x03ac, 0x03b3, + 0x03c0, 0x03cd, 0x03da, 0x03e4, 0x03eb, 0x03f2, 0x03fc, 0x0003, + 0x02b1, 0x0000, 0x02c1, 0x000e, 0x003b, 0xffff, 0x037e, 0x038b, + 0x0395, 0x039f, 0x03ac, 0x03b3, 0x03c0, 0x03cd, 0x03da, 0x03e4, + 0x03eb, 0x03f2, 0x03fc, 0x000e, 0x003b, 0xffff, 0x037e, 0x038b, + 0x0395, 0x039f, 0x03ac, 0x03b3, 0x03c0, 0x03cd, 0x03da, 0x03e4, + 0x03eb, 0x03f2, 0x03fc, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 28C00 - 28C3F + 0x0000, 0x02da, 0x0000, 0x02eb, 0x0004, 0x02e8, 0x02e2, 0x02df, + 0x02e5, 0x0001, 0x003b, 0x0406, 0x0001, 0x003b, 0x041c, 0x0001, + 0x003b, 0x042d, 0x0001, 0x003b, 0x042d, 0x0004, 0x02f9, 0x02f3, + 0x02f0, 0x02f6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0305, + 0x036a, 0x03c1, 0x03f6, 0x04df, 0x04f9, 0x050a, 0x051b, 0x0002, + 0x0308, 0x0339, 0x0003, 0x030c, 0x031b, 0x032a, 0x000d, 0x003b, + 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, + // Entry 28C40 - 28C7F + 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, 0xffff, + 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, + 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, 0xffff, 0x0007, + 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, + 0x0034, 0x003a, 0x0040, 0x0003, 0x033d, 0x034c, 0x035b, 0x000d, + 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, + 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, + 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, + // Entry 28C80 - 28CBF + 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, 0xffff, + 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, + 0x002f, 0x0034, 0x003a, 0x0040, 0x0002, 0x036d, 0x0397, 0x0005, + 0x0373, 0x037c, 0x038e, 0x0000, 0x0385, 0x0007, 0x003b, 0x0438, + 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, 0x0007, 0x003b, + 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, 0x0007, + 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, + 0x0007, 0x003b, 0x0454, 0x045e, 0x0468, 0x0472, 0x047c, 0x0486, + // Entry 28CC0 - 28CFF + 0x0490, 0x0005, 0x039d, 0x03a6, 0x03b8, 0x0000, 0x03af, 0x0007, + 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, + 0x0007, 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, + 0x0450, 0x0007, 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, + 0x044c, 0x0450, 0x0007, 0x003b, 0x0454, 0x045e, 0x0468, 0x0472, + 0x047c, 0x0486, 0x0490, 0x0002, 0x03c4, 0x03dd, 0x0003, 0x03c8, + 0x03cf, 0x03d6, 0x0005, 0x003b, 0xffff, 0x049a, 0x04a2, 0x04aa, + 0x04b2, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 28D00 - 28D3F + 0x0005, 0x003b, 0xffff, 0x04ba, 0x04c8, 0x04d6, 0x04e4, 0x0003, + 0x03e1, 0x03e8, 0x03ef, 0x0005, 0x003b, 0xffff, 0x049a, 0x04a2, + 0x04aa, 0x04b2, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x003b, 0xffff, 0x04ba, 0x04c8, 0x04d6, 0x04e4, + 0x0002, 0x03f9, 0x046c, 0x0003, 0x03fd, 0x0422, 0x0447, 0x0009, + 0x040a, 0x0410, 0x0407, 0x0413, 0x0419, 0x041c, 0x041f, 0x040d, + 0x0416, 0x0001, 0x003b, 0x04f2, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x003b, 0x04f9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x003b, 0x0500, + // Entry 28D40 - 28D7F + 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, + 0x0515, 0x0001, 0x003b, 0x051c, 0x0009, 0x042f, 0x0435, 0x042c, + 0x0438, 0x043e, 0x0441, 0x0444, 0x0432, 0x043b, 0x0001, 0x003b, + 0x04f2, 0x0001, 0x0000, 0x04ef, 0x0001, 0x003b, 0x04f9, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, + 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, + 0x051c, 0x0009, 0x0454, 0x045a, 0x0451, 0x045d, 0x0463, 0x0466, + 0x0469, 0x0457, 0x0460, 0x0001, 0x003b, 0x04f2, 0x0001, 0x003b, + // Entry 28D80 - 28DBF + 0x0507, 0x0001, 0x003b, 0x04f9, 0x0001, 0x003b, 0x050e, 0x0001, + 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x050e, + 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, 0x051c, 0x0003, 0x0470, + 0x0495, 0x04ba, 0x0009, 0x047d, 0x0483, 0x047a, 0x0486, 0x048c, + 0x048f, 0x0492, 0x0480, 0x0489, 0x0001, 0x003b, 0x04f2, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x003b, 0x04f9, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, + 0x050e, 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, 0x051c, 0x0009, + // Entry 28DC0 - 28DFF + 0x04a2, 0x04a8, 0x049f, 0x04ab, 0x04b1, 0x04b4, 0x04b7, 0x04a5, + 0x04ae, 0x0001, 0x003b, 0x04f2, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x003b, 0x04f9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x003b, 0x0500, + 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, + 0x0515, 0x0001, 0x003b, 0x051c, 0x0009, 0x04c7, 0x04cd, 0x04c4, + 0x04d0, 0x04d6, 0x04d9, 0x04dc, 0x04ca, 0x04d3, 0x0001, 0x003b, + 0x04f2, 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x04f9, 0x0001, + 0x003b, 0x050e, 0x0001, 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, + // Entry 28E00 - 28E3F + 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, + 0x051c, 0x0003, 0x04ee, 0x0000, 0x04e3, 0x0002, 0x04e6, 0x04ea, + 0x0002, 0x003b, 0x0520, 0x052a, 0x0002, 0x0000, 0x04f5, 0x04f9, + 0x0002, 0x04f1, 0x04f5, 0x0002, 0x0009, 0x0078, 0x5433, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0507, 0x0501, 0x04fe, 0x0504, + 0x0001, 0x003b, 0x0531, 0x0001, 0x003b, 0x0545, 0x0001, 0x003b, + 0x02ba, 0x0001, 0x003b, 0x0554, 0x0004, 0x0518, 0x0512, 0x050f, + 0x0515, 0x0001, 0x003b, 0x055e, 0x0001, 0x003b, 0x0574, 0x0001, + // Entry 28E40 - 28E7F + 0x003b, 0x0587, 0x0001, 0x003b, 0x0591, 0x0004, 0x0529, 0x0523, + 0x0520, 0x0526, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0532, + 0x0000, 0x0000, 0x0000, 0x057d, 0x0002, 0x0535, 0x0559, 0x0003, + 0x0539, 0x0000, 0x0549, 0x000e, 0x003b, 0x05e9, 0x0598, 0x05a5, + 0x05b2, 0x05bf, 0x05c9, 0x05d3, 0x05df, 0x05f5, 0x05ff, 0x060c, + 0x0616, 0x0623, 0x062a, 0x000e, 0x003b, 0x05e9, 0x0598, 0x05a5, + 0x05b2, 0x05bf, 0x05c9, 0x05d3, 0x05df, 0x05f5, 0x05ff, 0x060c, + // Entry 28E80 - 28EBF + 0x0616, 0x0623, 0x062a, 0x0003, 0x055d, 0x0000, 0x056d, 0x000e, + 0x003b, 0x05e9, 0x0598, 0x05a5, 0x05b2, 0x05bf, 0x05c9, 0x05d3, + 0x05df, 0x05f5, 0x05ff, 0x060c, 0x0616, 0x0623, 0x062a, 0x000e, + 0x003b, 0x05e9, 0x0598, 0x05a5, 0x05b2, 0x05bf, 0x05c9, 0x05d3, + 0x05df, 0x05f5, 0x05ff, 0x060c, 0x0616, 0x0623, 0x062a, 0x0001, + 0x057f, 0x0001, 0x0581, 0x0001, 0x0000, 0x04ef, 0x0005, 0x058a, + 0x0000, 0x0000, 0x0000, 0x05b3, 0x0002, 0x058d, 0x05a0, 0x0003, + 0x0000, 0x0000, 0x0591, 0x000d, 0x003b, 0xffff, 0x0634, 0x063e, + // Entry 28EC0 - 28EFF + 0x0648, 0x065a, 0x066c, 0x0681, 0x0696, 0x069d, 0x06a7, 0x06b1, + 0x06b8, 0x06c7, 0x0003, 0x0000, 0x0000, 0x05a4, 0x000d, 0x003b, + 0xffff, 0x0634, 0x063e, 0x0648, 0x065a, 0x066c, 0x0681, 0x0696, + 0x069d, 0x06a7, 0x06b1, 0x06b8, 0x06c7, 0x0001, 0x05b5, 0x0001, + 0x05b7, 0x0001, 0x0000, 0x06c8, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x05c0, 0x0001, 0x05c2, 0x0001, 0x05c4, 0x00ec, 0x003b, + 0x06d6, 0x06ec, 0x0702, 0x0718, 0x072b, 0x0741, 0x0757, 0x076a, + 0x0780, 0x0793, 0x07a6, 0x07b9, 0x07d2, 0x07eb, 0x0804, 0x081d, + // Entry 28F00 - 28F3F + 0x0839, 0x084c, 0x085f, 0x0875, 0x088b, 0x089e, 0x08b1, 0x08c4, + 0x08d7, 0x08ea, 0x0900, 0x0913, 0x0926, 0x0939, 0x094c, 0x095f, + 0x0975, 0x0988, 0x099b, 0x09b1, 0x09c4, 0x09da, 0x09f0, 0x0a03, + 0x0a16, 0x0a29, 0x0a3f, 0x0a52, 0x0a65, 0x0a78, 0x0a8e, 0x0aa1, + 0x0ab7, 0x0acd, 0x0ae3, 0x0af9, 0x0b0d, 0x0b22, 0x0b37, 0x0b4c, + 0x0b61, 0x0b76, 0x0b8b, 0x0ba3, 0x0bb8, 0x0bd0, 0x0be8, 0x0bfd, + 0x0c15, 0x0c2d, 0x0c42, 0x0c57, 0x0c6f, 0x0c87, 0x0c9f, 0x0cb4, + 0x0cc9, 0x0ce1, 0x0cf9, 0x0d0e, 0x0d23, 0x0d38, 0x0d4d, 0x0d65, + // Entry 28F40 - 28F7F + 0x0d7d, 0x0d95, 0x0daa, 0x0dbf, 0x0dd7, 0x0dec, 0x0e01, 0x0e16, + 0x0e2e, 0x0e43, 0x0e58, 0x0e6d, 0x0e85, 0x0e9a, 0x0eaf, 0x0ec7, + 0x0ee2, 0x0ef7, 0x0f0c, 0x0f24, 0x0f39, 0x0f4e, 0x0f63, 0x0f78, + 0x0f8d, 0x0fa2, 0x0fba, 0x0fd2, 0x0fe7, 0x0ffc, 0x1011, 0x1026, + 0x103b, 0x1053, 0x1068, 0x1080, 0x1095, 0x10aa, 0x10bf, 0x10d4, + 0x10ec, 0x1104, 0x1119, 0x1131, 0x1149, 0x1161, 0x1179, 0x1191, + 0x11a6, 0x11bb, 0x11d0, 0x11e5, 0x11fa, 0x120f, 0x1224, 0x1239, + 0x124e, 0x1263, 0x127b, 0x1290, 0x12a5, 0x12ba, 0x12d2, 0x12e7, + // Entry 28F80 - 28FBF + 0x12fc, 0x1311, 0x1329, 0x133e, 0x1353, 0x1368, 0x137d, 0x1392, + 0x13a7, 0x13bc, 0x13d4, 0x13ec, 0x1401, 0x1416, 0x142b, 0x1443, + 0x145b, 0x1473, 0x1488, 0x149d, 0x14b5, 0x14ca, 0x14df, 0x14fa, + 0x150f, 0x1524, 0x153f, 0x1557, 0x156c, 0x1584, 0x159c, 0x15b1, + 0x15c9, 0x15e1, 0x15f6, 0x160e, 0x1623, 0x1638, 0x164d, 0x1665, + 0x167b, 0x1693, 0x16ab, 0x16c0, 0x16d8, 0x16f3, 0x170b, 0x1720, + 0x1735, 0x1750, 0x1765, 0x177a, 0x1792, 0x17aa, 0x17bf, 0x17d7, + 0x17ec, 0x1804, 0x1819, 0x1834, 0x1849, 0x185e, 0x1873, 0x1888, + // Entry 28FC0 - 28FFF + 0x189d, 0x18b5, 0x18cd, 0x18e5, 0x18fa, 0x190f, 0x1924, 0x1939, + 0x194e, 0x1966, 0x197e, 0x1996, 0x19ae, 0x19c6, 0x19db, 0x19f0, + 0x1a08, 0x1a1d, 0x1a32, 0x1a4a, 0x1a62, 0x1a77, 0x1a8c, 0x1aa1, + 0x1ab9, 0x1ac3, 0x1acd, 0x1ad4, 0x0001, 0x06b4, 0x0002, 0x06b7, + 0x06d9, 0x0003, 0x06bb, 0x0000, 0x06ca, 0x000d, 0x003b, 0xffff, + 0x1ae1, 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, 0x1b35, 0x1b3f, + 0x1b46, 0x1b50, 0x1b57, 0x1b61, 0x000d, 0x003b, 0xffff, 0x1ae1, + 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, 0x1b35, 0x1b3f, 0x1b46, + // Entry 29000 - 2903F + 0x1b50, 0x1b57, 0x1b61, 0x0003, 0x06dd, 0x0000, 0x06ec, 0x000d, + 0x003b, 0xffff, 0x1ae1, 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, + 0x1b35, 0x1b3f, 0x1b46, 0x1b50, 0x1b57, 0x1b61, 0x000d, 0x003b, + 0xffff, 0x1ae1, 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, 0x1b35, + 0x1b3f, 0x1b46, 0x1b50, 0x1b57, 0x1b61, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0701, 0x0001, 0x0703, 0x0001, 0x0705, 0x0002, + 0x003b, 0x1b6e, 0x1b7e, 0x0040, 0x074a, 0x0000, 0x0000, 0x074f, + 0x0764, 0x0774, 0x0784, 0x0799, 0x07a9, 0x07b9, 0x07ce, 0x07de, + // Entry 29040 - 2907F + 0x07ee, 0x0807, 0x081b, 0x0000, 0x0000, 0x0000, 0x082f, 0x0846, + 0x0856, 0x0000, 0x0000, 0x0000, 0x0866, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x086b, 0x087d, 0x088f, 0x08a1, 0x08b3, 0x08c5, + 0x08d7, 0x08e9, 0x08fb, 0x090d, 0x091f, 0x0931, 0x0943, 0x0955, + 0x0967, 0x0979, 0x098b, 0x099d, 0x09af, 0x09c1, 0x09d3, 0x0000, + 0x09e5, 0x0000, 0x09ea, 0x09fe, 0x0a0e, 0x0a1e, 0x0a32, 0x0a42, + 0x0a52, 0x0a66, 0x0a76, 0x0a86, 0x0001, 0x074c, 0x0001, 0x003b, + 0x1b8b, 0x0003, 0x0753, 0x0756, 0x075b, 0x0001, 0x003b, 0x1b92, + // Entry 29080 - 290BF + 0x0003, 0x003b, 0x1b96, 0x1b9d, 0x1ba4, 0x0002, 0x075e, 0x0761, + 0x0001, 0x003b, 0x1bab, 0x0001, 0x003b, 0x1bb6, 0x0003, 0x0768, + 0x0000, 0x076b, 0x0001, 0x003b, 0x1b92, 0x0002, 0x076e, 0x0771, + 0x0001, 0x003b, 0x1bab, 0x0001, 0x003b, 0x1bb6, 0x0003, 0x0778, + 0x0000, 0x077b, 0x0001, 0x003b, 0x1b92, 0x0002, 0x077e, 0x0781, + 0x0001, 0x003b, 0x1bab, 0x0001, 0x003b, 0x1bb6, 0x0003, 0x0788, + 0x078b, 0x0790, 0x0001, 0x003b, 0x1bc1, 0x0003, 0x003b, 0x1bc8, + 0x1bd6, 0x1be4, 0x0002, 0x0793, 0x0796, 0x0001, 0x003b, 0x1bf2, + // Entry 290C0 - 290FF + 0x0001, 0x003b, 0x1c00, 0x0003, 0x079d, 0x0000, 0x07a0, 0x0001, + 0x003b, 0x1bc1, 0x0002, 0x07a3, 0x07a6, 0x0001, 0x003b, 0x1bf2, + 0x0001, 0x003b, 0x1c00, 0x0003, 0x07ad, 0x0000, 0x07b0, 0x0001, + 0x003b, 0x1bc1, 0x0002, 0x07b3, 0x07b6, 0x0001, 0x003b, 0x1bf2, + 0x0001, 0x003b, 0x1c00, 0x0003, 0x07bd, 0x07c0, 0x07c5, 0x0001, + 0x003b, 0x043c, 0x0003, 0x003b, 0x1c0e, 0x1c18, 0x1c23, 0x0002, + 0x07c8, 0x07cb, 0x0001, 0x003b, 0x1c2e, 0x0001, 0x003b, 0x1c3c, + 0x0003, 0x07d2, 0x0000, 0x07d5, 0x0001, 0x003b, 0x043c, 0x0002, + // Entry 29100 - 2913F + 0x07d8, 0x07db, 0x0001, 0x003b, 0x1c2e, 0x0001, 0x003b, 0x1c3c, + 0x0003, 0x07e2, 0x0000, 0x07e5, 0x0001, 0x003b, 0x043c, 0x0002, + 0x07e8, 0x07eb, 0x0001, 0x003b, 0x1c2e, 0x0001, 0x003b, 0x1c3c, + 0x0004, 0x07f3, 0x07f6, 0x07fb, 0x0804, 0x0001, 0x003b, 0x1c4a, + 0x0003, 0x003b, 0x1c4e, 0x1c58, 0x1c63, 0x0002, 0x07fe, 0x0801, + 0x0001, 0x003b, 0x1c6e, 0x0001, 0x003b, 0x1c79, 0x0001, 0x003b, + 0x1c84, 0x0004, 0x080c, 0x0000, 0x080f, 0x0818, 0x0001, 0x003b, + 0x1c4a, 0x0002, 0x0812, 0x0815, 0x0001, 0x003b, 0x1c6e, 0x0001, + // Entry 29140 - 2917F + 0x003b, 0x1c79, 0x0001, 0x003b, 0x1c84, 0x0004, 0x0820, 0x0000, + 0x0823, 0x082c, 0x0001, 0x003b, 0x1c4a, 0x0002, 0x0826, 0x0829, + 0x0001, 0x003b, 0x1c6e, 0x0001, 0x003b, 0x1c79, 0x0001, 0x003b, + 0x1c84, 0x0003, 0x0833, 0x0836, 0x083d, 0x0001, 0x003b, 0x0438, + 0x0005, 0x003b, 0x1c9c, 0x1ca3, 0x1caa, 0x1c92, 0x1cb1, 0x0002, + 0x0840, 0x0843, 0x0001, 0x003b, 0x1cb8, 0x0001, 0x003b, 0x1cc3, + 0x0003, 0x084a, 0x0000, 0x084d, 0x0001, 0x003b, 0x0438, 0x0002, + 0x0850, 0x0853, 0x0001, 0x003b, 0x1cb8, 0x0001, 0x003b, 0x1cc3, + // Entry 29180 - 291BF + 0x0003, 0x085a, 0x0000, 0x085d, 0x0001, 0x003b, 0x0438, 0x0002, + 0x0860, 0x0863, 0x0001, 0x003b, 0x1cb8, 0x0001, 0x003b, 0x1cc3, + 0x0001, 0x0868, 0x0001, 0x003b, 0x1cce, 0x0003, 0x0000, 0x086f, + 0x0874, 0x0003, 0x003b, 0x1cd5, 0x1ce6, 0x1cf7, 0x0002, 0x0877, + 0x087a, 0x0001, 0x003b, 0x1d08, 0x0001, 0x003b, 0x1d1d, 0x0003, + 0x0000, 0x0881, 0x0886, 0x0003, 0x003b, 0x1cd5, 0x1ce6, 0x1cf7, + 0x0002, 0x0889, 0x088c, 0x0001, 0x003b, 0x1d08, 0x0001, 0x003b, + 0x1d1d, 0x0003, 0x0000, 0x0893, 0x0898, 0x0003, 0x003b, 0x1cd5, + // Entry 291C0 - 291FF + 0x1ce6, 0x1cf7, 0x0002, 0x089b, 0x089e, 0x0001, 0x003b, 0x1d08, + 0x0001, 0x003b, 0x1d1d, 0x0003, 0x0000, 0x08a5, 0x08aa, 0x0003, + 0x003b, 0x1d32, 0x1d43, 0x1d54, 0x0002, 0x08ad, 0x08b0, 0x0001, + 0x003b, 0x1d65, 0x0001, 0x003b, 0x1d7a, 0x0003, 0x0000, 0x08b7, + 0x08bc, 0x0003, 0x003b, 0x1d32, 0x1d43, 0x1d54, 0x0002, 0x08bf, + 0x08c2, 0x0001, 0x003b, 0x1d65, 0x0001, 0x003b, 0x1d7a, 0x0003, + 0x0000, 0x08c9, 0x08ce, 0x0003, 0x003b, 0x1d32, 0x1d43, 0x1d54, + 0x0002, 0x08d1, 0x08d4, 0x0001, 0x003b, 0x1d65, 0x0001, 0x003b, + // Entry 29200 - 2923F + 0x1d7a, 0x0003, 0x0000, 0x08db, 0x08e0, 0x0003, 0x003b, 0x1d8f, + 0x1da0, 0x1db1, 0x0002, 0x08e3, 0x08e6, 0x0001, 0x003b, 0x1dc2, + 0x0001, 0x003b, 0x1dd7, 0x0003, 0x0000, 0x08ed, 0x08f2, 0x0003, + 0x003b, 0x1d8f, 0x1da0, 0x1db1, 0x0002, 0x08f5, 0x08f8, 0x0001, + 0x003b, 0x1dc2, 0x0001, 0x003b, 0x1dd7, 0x0003, 0x0000, 0x08ff, + 0x0904, 0x0003, 0x003b, 0x1d8f, 0x1da0, 0x1db1, 0x0002, 0x0907, + 0x090a, 0x0001, 0x003b, 0x1dc2, 0x0001, 0x003b, 0x1dd7, 0x0003, + 0x0000, 0x0911, 0x0916, 0x0003, 0x003b, 0x1dec, 0x1dfd, 0x1e0e, + // Entry 29240 - 2927F + 0x0002, 0x0919, 0x091c, 0x0001, 0x003b, 0x1e1f, 0x0001, 0x003b, + 0x1e34, 0x0003, 0x0000, 0x0923, 0x0928, 0x0003, 0x003b, 0x1dec, + 0x1dfd, 0x1e0e, 0x0002, 0x092b, 0x092e, 0x0001, 0x003b, 0x1e1f, + 0x0001, 0x003b, 0x1e34, 0x0003, 0x0000, 0x0935, 0x093a, 0x0003, + 0x003b, 0x1dec, 0x1dfd, 0x1e0e, 0x0002, 0x093d, 0x0940, 0x0001, + 0x003b, 0x1e1f, 0x0001, 0x003b, 0x1e34, 0x0003, 0x0000, 0x0947, + 0x094c, 0x0003, 0x003b, 0x1e49, 0x1e5a, 0x1e6b, 0x0002, 0x094f, + 0x0952, 0x0001, 0x003b, 0x1e7c, 0x0001, 0x003b, 0x1e91, 0x0003, + // Entry 29280 - 292BF + 0x0000, 0x0959, 0x095e, 0x0003, 0x003b, 0x1e49, 0x1e5a, 0x1e6b, + 0x0002, 0x0961, 0x0964, 0x0001, 0x003b, 0x1e7c, 0x0001, 0x003b, + 0x1e91, 0x0003, 0x0000, 0x096b, 0x0970, 0x0003, 0x003b, 0x1e49, + 0x1e5a, 0x1e6b, 0x0002, 0x0973, 0x0976, 0x0001, 0x003b, 0x1e7c, + 0x0001, 0x003b, 0x1e91, 0x0003, 0x0000, 0x097d, 0x0982, 0x0003, + 0x003b, 0x1ea6, 0x1eb7, 0x1ec8, 0x0002, 0x0985, 0x0988, 0x0001, + 0x003b, 0x1ed9, 0x0001, 0x003b, 0x1eee, 0x0003, 0x0000, 0x098f, + 0x0994, 0x0003, 0x003b, 0x1ea6, 0x1eb7, 0x1ec8, 0x0002, 0x0997, + // Entry 292C0 - 292FF + 0x099a, 0x0001, 0x003b, 0x1ed9, 0x0001, 0x003b, 0x1eee, 0x0003, + 0x0000, 0x09a1, 0x09a6, 0x0003, 0x003b, 0x1ea6, 0x1eb7, 0x1ec8, + 0x0002, 0x09a9, 0x09ac, 0x0001, 0x003b, 0x1ed9, 0x0001, 0x003b, + 0x1eee, 0x0003, 0x0000, 0x09b3, 0x09b8, 0x0003, 0x003b, 0x1f03, + 0x1f14, 0x1f25, 0x0002, 0x09bb, 0x09be, 0x0001, 0x003b, 0x1f36, + 0x0001, 0x003b, 0x1f4b, 0x0003, 0x0000, 0x09c5, 0x09ca, 0x0003, + 0x003b, 0x1f03, 0x1f14, 0x1f25, 0x0002, 0x09cd, 0x09d0, 0x0001, + 0x003b, 0x1f36, 0x0001, 0x003b, 0x1f4b, 0x0003, 0x0000, 0x09d7, + // Entry 29300 - 2933F + 0x09dc, 0x0003, 0x003b, 0x1f03, 0x1f14, 0x1f25, 0x0002, 0x09df, + 0x09e2, 0x0001, 0x003b, 0x1f36, 0x0001, 0x003b, 0x1f4b, 0x0001, + 0x09e7, 0x0001, 0x003b, 0x1f60, 0x0003, 0x09ee, 0x09f1, 0x09f5, + 0x0001, 0x003b, 0x1f6e, 0x0002, 0x003b, 0xffff, 0x1f72, 0x0002, + 0x09f8, 0x09fb, 0x0001, 0x003b, 0x1f80, 0x0001, 0x003b, 0x1f8e, + 0x0003, 0x0a02, 0x0000, 0x0a05, 0x0001, 0x003b, 0x1f6e, 0x0002, + 0x0a08, 0x0a0b, 0x0001, 0x003b, 0x1f80, 0x0001, 0x003b, 0x1f8e, + 0x0003, 0x0a12, 0x0000, 0x0a15, 0x0001, 0x003b, 0x1f6e, 0x0002, + // Entry 29340 - 2937F + 0x0a18, 0x0a1b, 0x0001, 0x003b, 0x1f80, 0x0001, 0x003b, 0x1f8e, + 0x0003, 0x0a22, 0x0a25, 0x0a29, 0x0001, 0x003b, 0x1f9c, 0x0002, + 0x003b, 0xffff, 0x1fa0, 0x0002, 0x0a2c, 0x0a2f, 0x0001, 0x003b, + 0x1fab, 0x0001, 0x003b, 0x1fb6, 0x0003, 0x0a36, 0x0000, 0x0a39, + 0x0001, 0x003b, 0x1f9c, 0x0002, 0x0a3c, 0x0a3f, 0x0001, 0x003b, + 0x1fab, 0x0001, 0x003b, 0x1fb6, 0x0003, 0x0a46, 0x0000, 0x0a49, + 0x0001, 0x003b, 0x1f9c, 0x0002, 0x0a4c, 0x0a4f, 0x0001, 0x003b, + 0x1fab, 0x0001, 0x003b, 0x1fb6, 0x0003, 0x0a56, 0x0a59, 0x0a5d, + // Entry 29380 - 293BF + 0x0001, 0x003b, 0x1fc1, 0x0002, 0x003b, 0xffff, 0x1fc5, 0x0002, + 0x0a60, 0x0a63, 0x0001, 0x003b, 0x1fcc, 0x0001, 0x003b, 0x1fd7, + 0x0003, 0x0a6a, 0x0000, 0x0a6d, 0x0001, 0x003b, 0x1fc1, 0x0002, + 0x0a70, 0x0a73, 0x0001, 0x003b, 0x1fcc, 0x0001, 0x003b, 0x1fd7, + 0x0003, 0x0a7a, 0x0000, 0x0a7d, 0x0001, 0x003b, 0x1fc1, 0x0002, + 0x0a80, 0x0a83, 0x0001, 0x003b, 0x1fcc, 0x0001, 0x003b, 0x1fd7, + 0x0001, 0x0a88, 0x0001, 0x003b, 0x1fe2, 0x0004, 0x0a90, 0x0a95, + 0x0a9a, 0x0aa9, 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x29d6, 0x0003, + // Entry 293C0 - 293FF + 0x003b, 0x1fec, 0x1ff7, 0x200c, 0x0002, 0x0000, 0x0a9d, 0x0003, + 0x0000, 0x0aa4, 0x0aa1, 0x0001, 0x003c, 0x0000, 0x0003, 0x003c, + 0xffff, 0x0011, 0x0029, 0x0002, 0x0000, 0x0aac, 0x0003, 0x0ab0, + 0x0bf0, 0x0b50, 0x009e, 0x003c, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00e2, 0x0134, 0x01cb, 0x020b, 0x024e, 0x0291, 0x02d4, 0x0320, + 0x0369, 0x0445, 0x048e, 0x04e0, 0x0547, 0x0599, 0x05dd, 0x0656, + 0x06d8, 0x0751, 0x07ca, 0x0825, 0x086e, 0xffff, 0xffff, 0x08e2, + 0xffff, 0x0948, 0xffff, 0x09bf, 0x09f6, 0x0a2d, 0x0a64, 0xffff, + // Entry 29400 - 2943F + 0xffff, 0x0adf, 0x0b28, 0x0b72, 0xffff, 0xffff, 0xffff, 0x0be8, + 0xffff, 0x0c45, 0x0c91, 0xffff, 0x0ce9, 0x0d29, 0x0d87, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0e37, 0xffff, 0xffff, 0x0eaf, 0x0f0d, + 0xffff, 0xffff, 0x0fa5, 0x1003, 0x103a, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x110d, 0x1144, 0x1196, 0x11df, 0x1216, + 0xffff, 0xffff, 0x12e6, 0xffff, 0x1346, 0xffff, 0xffff, 0x13f7, + 0xffff, 0x149b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1533, 0xffff, + 0x158a, 0x15e8, 0x1646, 0x1698, 0xffff, 0xffff, 0xffff, 0x1711, + // Entry 29440 - 2947F + 0x176c, 0x17b5, 0xffff, 0xffff, 0x1829, 0x18c1, 0x1925, 0x1965, + 0xffff, 0xffff, 0x19d9, 0x1a22, 0x1a59, 0xffff, 0x1ab1, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1bd5, 0x1c15, 0x1c55, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1d20, 0xffff, + 0xffff, 0x1d82, 0xffff, 0x1dc7, 0xffff, 0x1e3c, 0x1e85, 0x1ee0, + 0xffff, 0x1f40, 0x1fa4, 0xffff, 0xffff, 0xffff, 0x203c, 0x2085, + 0xffff, 0xffff, 0x0040, 0x017d, 0x03a9, 0x03f7, 0xffff, 0xffff, + 0x1443, 0x1b5a, 0x009e, 0x003c, 0x0080, 0x009a, 0x00b4, 0x00cb, + // Entry 29480 - 294BF + 0x00f9, 0x0148, 0x01dc, 0x021d, 0x0260, 0x02a3, 0x02e9, 0x0334, + 0x037a, 0x0459, 0x04a5, 0x04fe, 0x055e, 0x05aa, 0x0601, 0x067d, + 0x06fc, 0x0775, 0x07e4, 0x0839, 0x0885, 0x08c0, 0x08ce, 0x08f9, + 0x0934, 0x0960, 0x09ae, 0x09cd, 0x0a04, 0x0a3b, 0x0a78, 0x0aad, + 0x0ac7, 0x0af3, 0x0b3a, 0x0b80, 0x0ba9, 0x0bbd, 0x0bd4, 0x0bfc, + 0x0c31, 0x0c5a, 0x0ca2, 0x0cd1, 0x0cfa, 0x0d44, 0x0d95, 0x0dbe, + 0x0ddf, 0x0e0f, 0x0e26, 0x0e4b, 0x0e80, 0x0e98, 0x0eca, 0x0f28, + 0x0f7d, 0x0f91, 0x0fc0, 0x1011, 0x104b, 0x107a, 0x108b, 0x109c, + // Entry 294C0 - 294FF + 0x10b3, 0x10d1, 0x10ef, 0x111b, 0x115b, 0x11aa, 0x11ed, 0x1243, + 0x12aa, 0x12c8, 0x12fa, 0x132f, 0x1366, 0x13b3, 0x13e2, 0x140c, + 0x1487, 0x14ac, 0x14db, 0x14f2, 0x1503, 0x151e, 0x1547, 0x157c, + 0x15a5, 0x1603, 0x165d, 0x16ac, 0x16e1, 0x16f2, 0x1703, 0x172b, + 0x1780, 0x17cc, 0x1807, 0x1818, 0x184b, 0x18de, 0x1936, 0x1979, + 0x19ae, 0x19bf, 0x19ed, 0x1a30, 0x1a6a, 0x1a99, 0x1ad5, 0x1b2a, + 0x1b3b, 0x1b4c, 0x1bb0, 0x1bc4, 0x1be6, 0x1c26, 0x1c66, 0x1c95, + 0x1ca6, 0x1cbd, 0x1cd5, 0x1cf0, 0x1d01, 0x1d0f, 0x1d2e, 0x1d57, + // Entry 29500 - 2953F + 0x1d6e, 0x1d90, 0x1db9, 0x1de4, 0x1e2b, 0x1e50, 0x1e9f, 0x1ef4, + 0x1f29, 0x1f5d, 0x1fbb, 0x1ff6, 0x2007, 0x201b, 0x2050, 0x20a2, + 0x0f6b, 0x189c, 0x0051, 0x0195, 0x03c1, 0x040f, 0x099d, 0x13cd, + 0x1454, 0x1b71, 0x009e, 0x003c, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0113, 0x015f, 0x01f0, 0x0232, 0x0275, 0x02b8, 0x0301, 0x034b, + 0x038e, 0x0470, 0x04bf, 0x051f, 0x0578, 0x05be, 0x0628, 0x06a7, + 0x0723, 0x079c, 0x0801, 0x0850, 0x089f, 0xffff, 0xffff, 0x0913, + 0xffff, 0x097b, 0xffff, 0x09de, 0x0a15, 0x0a4c, 0x0a8f, 0xffff, + // Entry 29540 - 2957F + 0xffff, 0x0b0a, 0x0b4f, 0x0b91, 0xffff, 0xffff, 0xffff, 0x0c13, + 0xffff, 0x0c72, 0x0cb6, 0xffff, 0x0d0e, 0x0d62, 0x0da6, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0e62, 0xffff, 0xffff, 0x0ee8, 0x0f46, + 0xffff, 0xffff, 0x0fde, 0x1022, 0x105f, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x112c, 0x1175, 0x11c1, 0x11fe, 0x1273, + 0xffff, 0xffff, 0x1311, 0xffff, 0x1389, 0xffff, 0xffff, 0x1424, + 0xffff, 0x14c0, 0xffff, 0xffff, 0xffff, 0xffff, 0x155e, 0xffff, + 0x15c3, 0x1621, 0x1677, 0x16c3, 0xffff, 0xffff, 0xffff, 0x1748, + // Entry 29580 - 295BF + 0x1797, 0x17e6, 0xffff, 0xffff, 0x1870, 0x18fe, 0x194a, 0x1990, + 0xffff, 0xffff, 0x1a04, 0x1a41, 0x1a7e, 0xffff, 0x1afc, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1bfa, 0x1c3a, 0x1c7a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1d3f, 0xffff, + 0xffff, 0x1da1, 0xffff, 0x1e04, 0xffff, 0x1e67, 0x1ebc, 0x1f0b, + 0xffff, 0x1f7d, 0x1fd5, 0xffff, 0xffff, 0xffff, 0x2067, 0x20c2, + 0xffff, 0xffff, 0x0065, 0x01b0, 0x03dc, 0x042a, 0xffff, 0xffff, + 0x146c, 0x1b8f, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, + // Entry 295C0 - 295FF + 0x0000, 0x0000, 0x0009, 0x0002, 0x0000, 0x000c, 0x0003, 0x0010, + 0x00b2, 0x0061, 0x004f, 0x003d, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 29600 - 2963F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0000, 0x004f, 0x003d, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 29640 - 2967F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x000e, 0x004f, 0x003d, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 29680 - 296BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0003, 0x0004, 0x0000, + // Entry 296C0 - 296FF + 0x009c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0001, + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0005, 0x01ac, 0x0001, + 0x0005, 0x01b6, 0x0007, 0x002d, 0x0042, 0x0000, 0x005a, 0x0072, + 0x007a, 0x008b, 0x0001, 0x002f, 0x0003, 0x0000, 0x0000, 0x0033, + 0x000d, 0x003d, 0xffff, 0x0037, 0x0050, 0x006f, 0x007f, 0x0092, + 0x0099, 0x00a3, 0x00b0, 0x00c0, 0x00dc, 0x00f2, 0x010e, 0x0001, + // Entry 29700 - 2973F + 0x0044, 0x0003, 0x0048, 0x0000, 0x0051, 0x0007, 0x002c, 0x0246, + 0x0250, 0x22d9, 0x0267, 0x0271, 0x027e, 0x028e, 0x0007, 0x003d, + 0x0124, 0x0140, 0x0153, 0x0166, 0x0179, 0x018f, 0x01a8, 0x0001, + 0x005c, 0x0003, 0x0060, 0x0000, 0x0069, 0x0002, 0x0063, 0x0066, + 0x0001, 0x003d, 0x01bb, 0x0001, 0x003d, 0x01c7, 0x0002, 0x006c, + 0x006f, 0x0001, 0x003d, 0x01bb, 0x0001, 0x003d, 0x01c7, 0x0001, + 0x0074, 0x0001, 0x0076, 0x0002, 0x003d, 0x01d3, 0x01f8, 0x0004, + 0x0088, 0x0082, 0x007f, 0x0085, 0x0001, 0x0001, 0x1fa2, 0x0001, + // Entry 29740 - 2977F + 0x0001, 0x1fb0, 0x0001, 0x0005, 0x04ec, 0x0001, 0x003d, 0x0217, + 0x0004, 0x0099, 0x0093, 0x0090, 0x0096, 0x0001, 0x0002, 0x0453, + 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + 0x0478, 0x0004, 0x0000, 0x0000, 0x0000, 0x00a1, 0x0002, 0x00ec, + 0x00a4, 0x0003, 0x0000, 0x0000, 0x00a8, 0x0042, 0x003d, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 29780 - 297BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x021e, 0x0003, 0x0000, 0x0000, 0x00f0, 0x0042, 0x000b, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 297C0 - 297FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0000, 0x0003, 0x0004, 0x00fe, 0x017c, 0x000a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x003a, 0x0000, 0x00e7, + // Entry 29800 - 2983F + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, + 0x0029, 0x0004, 0x0026, 0x0020, 0x001d, 0x0023, 0x0001, 0x003d, + 0x023b, 0x0001, 0x003d, 0x024c, 0x0001, 0x003d, 0x0257, 0x0001, + 0x003d, 0x0261, 0x0004, 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0043, 0x006b, 0x0090, 0x0000, + 0x00a4, 0x00b4, 0x00c5, 0x00d6, 0x0002, 0x0046, 0x0059, 0x0003, + 0x0000, 0x0000, 0x004a, 0x000d, 0x003d, 0xffff, 0x0268, 0x0273, + // Entry 29840 - 2987F + 0x027e, 0x0289, 0x0294, 0x029b, 0x02a4, 0x02b3, 0x02bc, 0x02c7, + 0x02d6, 0x02e1, 0x0002, 0x0000, 0x005c, 0x000d, 0x0013, 0xffff, + 0x30e5, 0x30fa, 0x30ee, 0x30eb, 0x30ee, 0x30e5, 0x30e5, 0x30eb, + 0x30e8, 0x30e8, 0x30eb, 0x30fd, 0x0002, 0x006e, 0x0084, 0x0003, + 0x0072, 0x0000, 0x007b, 0x0007, 0x003d, 0x02ec, 0x02f9, 0x030e, + 0x031d, 0x032a, 0x033d, 0x0346, 0x0007, 0x003d, 0x0351, 0x0360, + 0x030e, 0x031d, 0x032a, 0x033d, 0x0346, 0x0002, 0x0000, 0x0087, + 0x0007, 0x0013, 0x30eb, 0x3100, 0x3103, 0x3103, 0x3103, 0x30e5, + // Entry 29880 - 298BF + 0x3103, 0x0001, 0x0092, 0x0003, 0x0096, 0x0000, 0x009d, 0x0005, + 0x003d, 0xffff, 0x0377, 0x0382, 0x039a, 0x03b2, 0x0005, 0x003d, + 0xffff, 0x03ca, 0x0382, 0x039a, 0x03b2, 0x0003, 0x00ae, 0x0000, + 0x00a8, 0x0001, 0x00aa, 0x0002, 0x003d, 0x03e4, 0x03f8, 0x0001, + 0x00b0, 0x0002, 0x003d, 0x040e, 0x0418, 0x0004, 0x00c2, 0x00bc, + 0x00b9, 0x00bf, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, + 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x00d3, + 0x00cd, 0x00ca, 0x00d0, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, + // Entry 298C0 - 298FF + 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, + 0x00e4, 0x00de, 0x00db, 0x00e1, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x00e9, 0x0001, 0x00eb, 0x0003, 0x0000, 0x0000, 0x00ef, + 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, 0x21ea, 0x2200, 0x211f, + 0x2135, 0x04fb, 0x0502, 0x050d, 0x0518, 0x2218, 0x2228, 0x0040, + 0x013f, 0x0000, 0x0000, 0x0144, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0149, 0x0000, 0x0000, 0x014e, 0x0000, 0x0000, 0x0000, + // Entry 29900 - 2993F + 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x015e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0163, 0x0000, 0x0168, 0x0000, + 0x0000, 0x016d, 0x0000, 0x0000, 0x0172, 0x0000, 0x0000, 0x0177, + 0x0001, 0x0141, 0x0001, 0x003d, 0x0422, 0x0001, 0x0146, 0x0001, + 0x003d, 0x0429, 0x0001, 0x014b, 0x0001, 0x003d, 0x0430, 0x0001, + // Entry 29940 - 2997F + 0x0150, 0x0001, 0x003d, 0x043b, 0x0002, 0x0156, 0x0159, 0x0001, + 0x003d, 0x0446, 0x0003, 0x003d, 0x044d, 0x0456, 0x045d, 0x0001, + 0x0160, 0x0001, 0x003d, 0x0466, 0x0001, 0x0165, 0x0001, 0x003d, + 0x0478, 0x0001, 0x016a, 0x0001, 0x003d, 0x0486, 0x0001, 0x016f, + 0x0001, 0x003d, 0x0495, 0x0001, 0x0174, 0x0001, 0x003d, 0x04a0, + 0x0001, 0x0179, 0x0001, 0x003d, 0x04af, 0x0004, 0x0181, 0x0000, + 0x0185, 0x0190, 0x0002, 0x0000, 0x1dc7, 0x29cf, 0x0002, 0x0000, + 0x0188, 0x0002, 0x0000, 0x018b, 0x0003, 0x003d, 0xffff, 0x04b6, + // Entry 29980 - 299BF + 0x04db, 0x0002, 0x0000, 0x0193, 0x0003, 0x0197, 0x02d7, 0x0237, + 0x009e, 0x003d, 0xffff, 0xffff, 0xffff, 0xffff, 0x05ef, 0x0678, + 0x0760, 0x07ce, 0x0830, 0x0892, 0x0900, 0x096e, 0xffff, 0x0ab0, + 0x0b2a, 0x0baa, 0x0c4b, 0x0cbf, 0x0d3f, 0x0de0, 0x0ea2, 0x0f43, + 0x0fe8, 0x1062, 0x10c8, 0xffff, 0xffff, 0x1176, 0xffff, 0x1221, + 0xffff, 0x12ac, 0x1314, 0x136a, 0x13cc, 0xffff, 0xffff, 0x1487, + 0x14fb, 0x1585, 0xffff, 0xffff, 0xffff, 0x1650, 0xffff, 0x16d4, + 0x1757, 0xffff, 0x17da, 0x1865, 0x18cd, 0xffff, 0xffff, 0xffff, + // Entry 299C0 - 299FF + 0xffff, 0x19bf, 0xffff, 0xffff, 0x1a88, 0x1b32, 0xffff, 0xffff, + 0x1c2f, 0x1cd6, 0x1d4f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1e90, 0x1efe, 0x1f6c, 0x1fe6, 0x204e, 0xffff, 0xffff, + 0x211a, 0xffff, 0x219a, 0xffff, 0xffff, 0x2283, 0xffff, 0x2357, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2440, 0xffff, 0xffff, 0xffff, + 0x24be, 0x2532, 0xffff, 0xffff, 0xffff, 0x25e2, 0x2677, 0x26ef, + 0xffff, 0xffff, 0x27b5, 0x2846, 0x28c6, 0x2922, 0xffff, 0xffff, + 0x29d2, 0x2a40, 0x2a9c, 0xffff, 0x2b3f, 0xffff, 0xffff, 0xffff, + // Entry 29A00 - 29A3F + 0xffff, 0xffff, 0x2cd1, 0x2d45, 0x2da7, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f22, + 0xffff, 0x2f9e, 0xffff, 0x3046, 0x30c0, 0x3144, 0xffff, 0x31e2, + 0x3262, 0xffff, 0xffff, 0xffff, 0x3341, 0x33ab, 0xffff, 0xffff, + 0x04fe, 0x06ec, 0x09e0, 0x0a48, 0xffff, 0xffff, 0x22ef, 0x2c2d, + 0x009e, 0x003d, 0x0560, 0x0580, 0x05a5, 0x05ca, 0x0614, 0x0694, + 0x077c, 0x07e4, 0x0846, 0x08ac, 0x091a, 0x098c, 0xffff, 0x0ace, + 0x0b4c, 0x0bd7, 0x0c69, 0x0cdf, 0x0d6a, 0x0e16, 0x0ecd, 0x0f6e, + // Entry 29A40 - 29A7F + 0x1008, 0x107e, 0x10e8, 0x1142, 0x115a, 0x1196, 0x11f0, 0x123c, + 0x1283, 0x12c6, 0x1328, 0x1380, 0x13ec, 0x1446, 0x1460, 0x14a5, + 0x151e, 0x159d, 0x15ed, 0x1603, 0x162d, 0x166a, 0x16b8, 0x16f7, + 0x177a, 0xffff, 0x17ff, 0x187f, 0x18e3, 0x1929, 0x1956, 0x197d, + 0x19a1, 0x19df, 0x1a39, 0x1a60, 0x1ab8, 0x1b62, 0x1bf4, 0x1c17, + 0x1c5e, 0x1cf5, 0x1d63, 0x1da5, 0x1dba, 0x1de5, 0x1e05, 0x1e32, + 0x1e61, 0x1eac, 0x1f1a, 0x1f8a, 0x1ffe, 0x206a, 0x20bc, 0x20eb, + 0x2132, 0x2182, 0x21c0, 0x2226, 0x225c, 0x22a0, 0xffff, 0x2371, + // Entry 29A80 - 29ABF + 0x23bf, 0x23db, 0x23f9, 0x2419, 0x245a, 0x24a8, 0xffff, 0xffff, + 0x24dc, 0x254a, 0x2590, 0x25ac, 0x25c8, 0x260b, 0x2695, 0x2716, + 0x2785, 0x279b, 0x27cf, 0x2868, 0x28dc, 0x293e, 0x2990, 0x29a6, + 0x29ee, 0x2a56, 0x2abc, 0x2b16, 0x2b73, 0x2bfb, 0x2c17, 0xffff, + 0x2c95, 0x2cb5, 0x2cef, 0x2d5d, 0x2dbf, 0x2e09, 0x2e25, 0x2e45, + 0x2e79, 0x2ea0, 0x2eba, 0x2ed0, 0xffff, 0x2ee8, 0x2f08, 0x2f3c, + 0x2f8a, 0x2fc4, 0x302a, 0x3066, 0x30e2, 0x3164, 0x31be, 0x3204, + 0x3280, 0x32d6, 0x32ee, 0x330f, 0x335b, 0x33d3, 0x1bdc, 0x281d, + // Entry 29AC0 - 29AFF + 0x0516, 0x070a, 0x09fa, 0x0a62, 0xffff, 0x2244, 0x2309, 0x2c47, + 0x009e, 0x003d, 0xffff, 0xffff, 0xffff, 0xffff, 0x0648, 0x06bf, + 0x07a7, 0x0809, 0x086b, 0x08d5, 0x0943, 0x09b9, 0xffff, 0x0afb, + 0x0b7d, 0x0c13, 0x0c96, 0x0d0e, 0x0da4, 0x0e5b, 0x0f07, 0x0faa, + 0x1037, 0x10a9, 0x1117, 0xffff, 0xffff, 0x11c5, 0xffff, 0x1266, + 0xffff, 0x12ef, 0x134b, 0x13a5, 0x141b, 0xffff, 0xffff, 0x14d2, + 0x1550, 0x15c4, 0xffff, 0xffff, 0xffff, 0x1693, 0xffff, 0x1729, + 0x17ac, 0xffff, 0x1833, 0x18a8, 0x1908, 0xffff, 0xffff, 0xffff, + // Entry 29B00 - 29B3F + 0xffff, 0x1a0e, 0xffff, 0xffff, 0x1af7, 0x1ba1, 0xffff, 0xffff, + 0x1c9c, 0x1d23, 0x1d86, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1ed7, 0x1f45, 0x1fb7, 0x2025, 0x2095, 0xffff, 0xffff, + 0x2159, 0xffff, 0x21f5, 0xffff, 0xffff, 0x22cc, 0xffff, 0x239a, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2483, 0xffff, 0xffff, 0xffff, + 0x2509, 0x256f, 0xffff, 0xffff, 0xffff, 0x2643, 0x26c2, 0x274c, + 0xffff, 0xffff, 0x27f8, 0x2899, 0x2901, 0x2969, 0xffff, 0xffff, + 0x2a19, 0x2a7b, 0x2aeb, 0xffff, 0x2bb6, 0xffff, 0xffff, 0xffff, + // Entry 29B40 - 29B7F + 0xffff, 0xffff, 0x2d1c, 0x2d84, 0x2de6, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f65, + 0xffff, 0x2ff9, 0xffff, 0x3095, 0x3113, 0x3193, 0xffff, 0x3235, + 0x32ad, 0xffff, 0xffff, 0xffff, 0x3384, 0x340a, 0xffff, 0xffff, + 0x053d, 0x0737, 0x0a23, 0x0a8b, 0xffff, 0xffff, 0x2332, 0x2c70, + 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, + // Entry 29B80 - 29BBF + 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, + 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, + 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, + 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x224a, 0x224e, 0x22d4, + 0x22d8, 0x22dc, 0x234a, 0x22e0, 0x21e2, 0x000d, 0x003e, 0xffff, + 0x0000, 0x0008, 0x0011, 0x0017, 0x001e, 0x0022, 0x0027, 0x002d, + 0x0034, 0x003d, 0x0044, 0x004c, 0x0002, 0x0000, 0x0057, 0x000d, + // Entry 29BC0 - 29BFF + 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, + 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x0002, 0x0069, + 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, 0x06b6, + 0x06ba, 0x234e, 0x06c2, 0x231e, 0x2322, 0x06ce, 0x0007, 0x003e, + 0x0054, 0x005d, 0x0067, 0x006f, 0x0079, 0x0082, 0x0089, 0x0002, + 0x0000, 0x0082, 0x0007, 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, + 0x2980, 0x2055, 0x0033, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, + 0x0098, 0x0005, 0x0009, 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, + // Entry 29C00 - 29C3F + 0x0005, 0x003e, 0xffff, 0x0093, 0x00a0, 0x00ad, 0x00bf, 0x0001, + 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, + 0x0001, 0x003e, 0x00cb, 0x0001, 0x003e, 0x00d1, 0x0002, 0x00b1, + 0x00b4, 0x0001, 0x003e, 0x00cb, 0x0001, 0x003e, 0x00d1, 0x0003, + 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x003e, 0x00da, + 0x00ea, 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, + 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, + // Entry 29C40 - 29C7F + 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 29C80 - 29CBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, + 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, + 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x003e, 0x00fa, 0x0001, + 0x0131, 0x0001, 0x003e, 0x0100, 0x0001, 0x0136, 0x0001, 0x003e, + 0x010a, 0x0001, 0x013b, 0x0001, 0x003e, 0x0113, 0x0002, 0x0141, + 0x0144, 0x0001, 0x003e, 0x0118, 0x0003, 0x003e, 0x011d, 0x0122, + 0x0129, 0x0001, 0x014b, 0x0001, 0x003e, 0x012f, 0x0001, 0x0150, + 0x0001, 0x003e, 0x013f, 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, + // Entry 29CC0 - 29CFF + 0x0001, 0x015a, 0x0001, 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, + 0x0009, 0x030c, 0x0001, 0x0164, 0x0001, 0x003e, 0x0147, 0x0002, + 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, + 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0053, + 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, 0x0031, + // Entry 29D00 - 29D3F + 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x003e, 0xffff, 0x014e, + 0x0152, 0x0156, 0x015a, 0x015e, 0x0162, 0x0166, 0x016a, 0x016e, + 0x0172, 0x0177, 0x017c, 0x000d, 0x003e, 0xffff, 0x0181, 0x0196, + 0x01ab, 0x01be, 0x01cf, 0x01e2, 0x01f8, 0x020f, 0x0224, 0x0239, + 0x024c, 0x0269, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, 0x0000, + 0x0063, 0x0007, 0x0021, 0x00d9, 0x36b1, 0x36b6, 0x36ba, 0x36bf, + 0x36c5, 0x36ca, 0x0007, 0x003e, 0x0287, 0x0291, 0x0299, 0x02a0, + 0x02ab, 0x02b4, 0x02bc, 0x0002, 0x0000, 0x006f, 0x0007, 0x0000, + // Entry 29D40 - 29D7F + 0x2002, 0x200a, 0x1f9a, 0x1f9a, 0x214a, 0x214a, 0x2002, 0x0001, + 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x003e, 0xffff, + 0x02c3, 0x02c6, 0x02c9, 0x02cc, 0x0005, 0x003e, 0xffff, 0x02cf, + 0x02f2, 0x0311, 0x032e, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, + 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x003e, 0x0349, 0x0001, + 0x003e, 0x0353, 0x0002, 0x009e, 0x00a1, 0x0001, 0x003e, 0x0349, + 0x0001, 0x003e, 0x0353, 0x0003, 0x00ae, 0x0000, 0x00a8, 0x0001, + 0x00aa, 0x0002, 0x003e, 0x035e, 0x0376, 0x0001, 0x00b0, 0x0002, + // Entry 29D80 - 29DBF + 0x003e, 0x0390, 0x0395, 0x0004, 0x00c2, 0x00bc, 0x00b9, 0x00bf, + 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00d3, 0x00cd, 0x00ca, + 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, 0x0000, + 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, + 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, 0x0000, + // Entry 29DC0 - 29DFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013b, 0x0000, 0x0140, 0x0000, 0x0000, 0x0145, + 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x014f, 0x0001, 0x0119, + 0x0001, 0x003e, 0x039a, 0x0001, 0x011e, 0x0001, 0x003e, 0x03a5, + 0x0001, 0x0123, 0x0001, 0x003e, 0x03aa, 0x0001, 0x0128, 0x0001, + 0x003e, 0x03b2, 0x0002, 0x012e, 0x0131, 0x0001, 0x003e, 0x03bc, + // Entry 29E00 - 29E3F + 0x0003, 0x003e, 0x03c3, 0x03ce, 0x03d9, 0x0001, 0x0138, 0x0001, + 0x003e, 0x03e4, 0x0001, 0x013d, 0x0001, 0x003e, 0x03f9, 0x0001, + 0x0142, 0x0001, 0x003e, 0x0410, 0x0001, 0x0147, 0x0001, 0x003e, + 0x041a, 0x0001, 0x014c, 0x0001, 0x003e, 0x0422, 0x0001, 0x0151, + 0x0001, 0x003e, 0x0427, 0x0003, 0x0004, 0x015b, 0x0288, 0x0008, + 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001b, 0x0035, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0003, + 0x0000, 0x0000, 0x0018, 0x0001, 0x0013, 0x06bb, 0x0008, 0x0000, + // Entry 29E40 - 29E7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x0000, 0x0000, 0x0004, + 0x0032, 0x002c, 0x0029, 0x002f, 0x0001, 0x003e, 0x042d, 0x0001, + 0x0013, 0x0477, 0x0001, 0x003e, 0x0445, 0x0001, 0x003e, 0x0451, + 0x0008, 0x003e, 0x0084, 0x00c0, 0x00ee, 0x0114, 0x0139, 0x014a, + 0x0000, 0x0002, 0x0041, 0x0063, 0x0003, 0x0045, 0x0000, 0x0054, + 0x000d, 0x0005, 0xffff, 0x0636, 0x2352, 0x2357, 0x2246, 0x232a, + 0x224e, 0x22d4, 0x235c, 0x2360, 0x234a, 0x22e0, 0x2212, 0x000d, + 0x003e, 0xffff, 0x045f, 0x0467, 0x0470, 0x0477, 0x047e, 0x0482, + // Entry 29E80 - 29EBF + 0x0488, 0x048e, 0x0495, 0x04a0, 0x04a9, 0x04b3, 0x0002, 0x0066, + 0x0075, 0x000d, 0x0000, 0xffff, 0x1e22, 0x29dd, 0x29e3, 0x2347, + 0x29e9, 0x29ed, 0x29f2, 0x29f7, 0x29fc, 0x2a02, 0x2a07, 0x2a0c, + 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2483, 0x2483, 0x2990, 0x298e, 0x2990, 0x297e, 0x297c, 0x0002, + 0x0087, 0x00a8, 0x0005, 0x008d, 0x0000, 0x009f, 0x0000, 0x0096, + 0x0007, 0x001c, 0x0108, 0x2167, 0x216b, 0x216f, 0x2150, 0x2154, + 0x2158, 0x0007, 0x0016, 0x2b50, 0x0358, 0x035b, 0x2bf4, 0x2bf7, + // Entry 29EC0 - 29EFF + 0x0364, 0x2bfa, 0x0007, 0x003e, 0x04bd, 0x04c7, 0x04d1, 0x04dc, + 0x04e4, 0x04f1, 0x04fb, 0x0005, 0x0000, 0x00ae, 0x0000, 0x0000, + 0x00b7, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, + 0x298c, 0x298e, 0x0007, 0x0016, 0x2b50, 0x0358, 0x035b, 0x2bf4, + 0x2bf7, 0x0364, 0x2bfa, 0x0002, 0x00c3, 0x00dc, 0x0003, 0x00c7, + 0x00ce, 0x00d5, 0x0005, 0x003e, 0xffff, 0x0505, 0x050a, 0x050f, + 0x0514, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x003e, 0xffff, 0x0519, 0x0525, 0x0531, 0x053d, 0x0003, + // Entry 29F00 - 29F3F + 0x0000, 0x00e0, 0x00e7, 0x0005, 0x003e, 0xffff, 0x0549, 0x054c, + 0x054f, 0x0552, 0x0005, 0x003e, 0xffff, 0x0519, 0x0525, 0x0531, + 0x053d, 0x0002, 0x00f1, 0x0107, 0x0003, 0x00f5, 0x0000, 0x00fe, + 0x0002, 0x00f8, 0x00fb, 0x0001, 0x003e, 0x0555, 0x0001, 0x003e, + 0x055a, 0x0002, 0x0101, 0x0104, 0x0001, 0x003e, 0x055f, 0x0001, + 0x003e, 0x0571, 0x0003, 0x0000, 0x0000, 0x010b, 0x0002, 0x010e, + 0x0111, 0x0001, 0x003e, 0x0582, 0x0001, 0x003e, 0x058f, 0x0003, + 0x0123, 0x012e, 0x0118, 0x0002, 0x011b, 0x011f, 0x0002, 0x003e, + // Entry 29F40 - 29F7F + 0x059b, 0x05ce, 0x0002, 0x003e, 0x05a8, 0x05da, 0x0002, 0x0126, + 0x012a, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x003e, 0x05fe, + 0x0605, 0x0002, 0x0131, 0x0135, 0x0002, 0x003e, 0x060b, 0x060e, + 0x0002, 0x002a, 0x00e4, 0x00e8, 0x0004, 0x0147, 0x0141, 0x013e, + 0x0144, 0x0001, 0x003e, 0x0611, 0x0001, 0x0013, 0x06b1, 0x0001, + 0x003e, 0x0627, 0x0001, 0x0013, 0x0357, 0x0004, 0x0158, 0x0152, + 0x014f, 0x0155, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x019c, + // Entry 29F80 - 29FBF + 0x0000, 0x0000, 0x01a1, 0x01ba, 0x01bf, 0x01c4, 0x01c9, 0x01ce, + 0x01d3, 0x01de, 0x01e3, 0x01e8, 0x01f3, 0x01f8, 0x0000, 0x0000, + 0x0000, 0x01fd, 0x020a, 0x020f, 0x0000, 0x0000, 0x0000, 0x0214, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0219, 0x0000, 0x0000, + 0x0221, 0x0000, 0x0000, 0x0229, 0x0000, 0x0000, 0x0231, 0x0000, + 0x0000, 0x0239, 0x0000, 0x0000, 0x0241, 0x0000, 0x0000, 0x0249, + 0x0000, 0x0000, 0x0000, 0x0251, 0x0000, 0x0256, 0x025b, 0x0260, + 0x0265, 0x026a, 0x026f, 0x0274, 0x0279, 0x027e, 0x0283, 0x0001, + // Entry 29FC0 - 29FFF + 0x019e, 0x0001, 0x003e, 0x0631, 0x0003, 0x01a5, 0x01a8, 0x01ad, + 0x0001, 0x003e, 0x0637, 0x0003, 0x003e, 0x063c, 0x0646, 0x0650, + 0x0002, 0x01b0, 0x01b5, 0x0003, 0x003e, 0x0675, 0x0669, 0x065a, + 0x0003, 0x003e, 0x06a2, 0x0694, 0x0682, 0x0001, 0x01bc, 0x0001, + 0x003e, 0x06b1, 0x0001, 0x01c1, 0x0001, 0x003e, 0x06b1, 0x0001, + 0x01c6, 0x0001, 0x003e, 0x06b4, 0x0001, 0x01cb, 0x0001, 0x003e, + 0x06bd, 0x0001, 0x01d0, 0x0001, 0x003e, 0x06bd, 0x0002, 0x01d6, + 0x01d9, 0x0001, 0x003e, 0x06c0, 0x0003, 0x003e, 0x06c6, 0x06d4, + // Entry 2A000 - 2A03F + 0x06e0, 0x0001, 0x01e0, 0x0001, 0x003e, 0x06c0, 0x0001, 0x01e5, + 0x0001, 0x001c, 0x010c, 0x0002, 0x01eb, 0x01ee, 0x0001, 0x003e, + 0x06ef, 0x0003, 0x003e, 0x06f4, 0x06fe, 0x0706, 0x0001, 0x01f5, + 0x0001, 0x001c, 0x0113, 0x0001, 0x01fa, 0x0001, 0x001c, 0x0113, + 0x0002, 0x0200, 0x0203, 0x0001, 0x003e, 0x0715, 0x0005, 0x003e, + 0x0727, 0x072f, 0x0735, 0x071b, 0x073b, 0x0001, 0x020c, 0x0001, + 0x003e, 0x0747, 0x0001, 0x0211, 0x0001, 0x003e, 0x0747, 0x0001, + 0x0216, 0x0001, 0x003e, 0x074a, 0x0002, 0x0000, 0x021c, 0x0003, + // Entry 2A040 - 2A07F + 0x003e, 0x0755, 0x076c, 0x0782, 0x0002, 0x0000, 0x0224, 0x0003, + 0x003e, 0x079b, 0x07b2, 0x07c8, 0x0002, 0x0000, 0x022c, 0x0003, + 0x003e, 0x07e1, 0x07f9, 0x0810, 0x0002, 0x0000, 0x0234, 0x0003, + 0x003e, 0x082a, 0x083f, 0x0853, 0x0002, 0x0000, 0x023c, 0x0003, + 0x003e, 0x086a, 0x0884, 0x089d, 0x0002, 0x0000, 0x0244, 0x0003, + 0x003e, 0x08b9, 0x08d0, 0x08e6, 0x0002, 0x0000, 0x024c, 0x0003, + 0x003e, 0x08ff, 0x0916, 0x092c, 0x0001, 0x0253, 0x0001, 0x003e, + 0x0945, 0x0001, 0x0258, 0x0001, 0x002a, 0x038d, 0x0001, 0x025d, + // Entry 2A080 - 2A0BF + 0x0001, 0x0016, 0x0f1c, 0x0001, 0x0262, 0x0001, 0x003e, 0x094f, + 0x0001, 0x0267, 0x0001, 0x003e, 0x0952, 0x0001, 0x026c, 0x0001, + 0x0001, 0x075a, 0x0001, 0x0271, 0x0001, 0x0029, 0x0080, 0x0001, + 0x0276, 0x0001, 0x003e, 0x0959, 0x0001, 0x027b, 0x0001, 0x0001, + 0x07d3, 0x0001, 0x0280, 0x0001, 0x0029, 0x0086, 0x0001, 0x0285, + 0x0001, 0x003e, 0x0960, 0x0004, 0x028d, 0x0291, 0x0296, 0x02a1, + 0x0002, 0x0000, 0x1dc7, 0x29cf, 0x0003, 0x003e, 0x0969, 0x0976, + 0x0989, 0x0002, 0x0000, 0x0299, 0x0002, 0x0000, 0x029c, 0x0003, + // Entry 2A0C0 - 2A0FF + 0x003e, 0xffff, 0x09a0, 0x09c0, 0x0002, 0x03e0, 0x02a4, 0x0003, + 0x0326, 0x0383, 0x02a8, 0x007c, 0x003e, 0xffff, 0x09d7, 0x09f4, + 0x0a0c, 0x0a3f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0a98, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0ae6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0b40, 0x0b9b, 0xffff, 0x0bf1, 0xffff, 0xffff, + // Entry 2A100 - 2A13F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c32, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c4e, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c7f, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A140 - 2A17F + 0xffff, 0xffff, 0xffff, 0x0cb8, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0cc9, 0x005b, 0x003e, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a25, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0a86, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0acf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0b27, 0x0b85, 0xffff, 0x0bda, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A180 - 2A1BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c6c, 0x005b, 0x003e, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0a66, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0ab7, + // Entry 2A1C0 - 2A1FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b0a, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b66, 0x0bbe, 0xffff, + 0x0c15, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A200 - 2A23F + 0xffff, 0xffff, 0x0c9f, 0x0003, 0x03e4, 0x044a, 0x0417, 0x0031, + 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, + 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A240 - 2A27F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A280 - 2A2BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, + 0x0003, 0x0004, 0x00ab, 0x0106, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, + 0x001f, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + // Entry 2A2C0 - 2A2FF + 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0007, 0x002d, 0x0051, + 0x0000, 0x0069, 0x0081, 0x0089, 0x009a, 0x0001, 0x002f, 0x0003, + 0x0033, 0x0000, 0x0042, 0x000d, 0x003e, 0xffff, 0x0ce1, 0x0ce5, + 0x0ce9, 0x0ced, 0x0cf1, 0x0cf4, 0x0cf8, 0x0cfc, 0x0d00, 0x0d04, + 0x0d08, 0x0d0b, 0x000d, 0x003e, 0xffff, 0x0d0f, 0x0d1a, 0x0d26, + 0x0d31, 0x0d3b, 0x0d42, 0x0d4f, 0x0d5d, 0x0d65, 0x0d73, 0x0d7d, + 0x0d84, 0x0001, 0x0053, 0x0003, 0x0057, 0x0000, 0x0060, 0x0007, + 0x000b, 0x09c9, 0x2770, 0x2774, 0x2778, 0x277c, 0x2755, 0x2742, + // Entry 2A300 - 2A33F + 0x0007, 0x003e, 0x0d91, 0x0d98, 0x0d9f, 0x0da9, 0x0db3, 0x0dba, + 0x0dc4, 0x0001, 0x006b, 0x0003, 0x006f, 0x0000, 0x0078, 0x0002, + 0x0072, 0x0075, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, + 0x0002, 0x007b, 0x007e, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0001, 0x0083, 0x0001, 0x0085, 0x0002, 0x0027, 0x018c, + 0x32a8, 0x0004, 0x0097, 0x0091, 0x008e, 0x0094, 0x0001, 0x0001, + 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x0860, 0x0004, 0x00a8, 0x00a2, 0x009f, 0x00a5, 0x0001, + // Entry 2A340 - 2A37F + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0037, 0x0000, 0x0000, 0x0000, 0x00e3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e8, 0x0000, 0x0000, + 0x00ed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x00f7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2A380 - 2A3BF + 0x00fc, 0x0000, 0x0101, 0x0001, 0x00e5, 0x0001, 0x003e, 0x0dce, + 0x0001, 0x00ea, 0x0001, 0x003e, 0x0dd6, 0x0001, 0x00ef, 0x0001, + 0x003e, 0x0dda, 0x0001, 0x00f4, 0x0001, 0x003e, 0x0de2, 0x0001, + 0x00f9, 0x0001, 0x003e, 0x0de7, 0x0001, 0x00fe, 0x0001, 0x0007, + 0x07cc, 0x0001, 0x0103, 0x0001, 0x003e, 0x0df7, 0x0004, 0x0000, + 0x0000, 0x0000, 0x010b, 0x0001, 0x010d, 0x0003, 0x0111, 0x0180, + 0x0144, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A3C0 - 2A3FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A400 - 2A43F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27c7, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2A440 - 2A47F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x0250, 0x0662, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x003e, + 0x0dfb, 0x0001, 0x003e, 0x0e12, 0x0001, 0x0016, 0x02aa, 0x0001, + 0x001e, 0x1a8e, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + // Entry 2A480 - 2A4BF + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, + 0x0203, 0x021d, 0x022e, 0x023f, 0x0002, 0x0044, 0x0075, 0x0003, + 0x0048, 0x0057, 0x0066, 0x000d, 0x003e, 0xffff, 0x0e23, 0x0e2b, + 0x0e33, 0x0e3b, 0x0e43, 0x0e4a, 0x0e52, 0x0e5a, 0x0e62, 0x0e6a, + 0x0e72, 0x0e7a, 0x000d, 0x003e, 0xffff, 0x0e82, 0x0e85, 0x0e88, + 0x0e8b, 0x0e88, 0x0e8e, 0x0e8e, 0x0e8b, 0x0e91, 0x0e94, 0x0e97, + 0x0e9a, 0x000d, 0x0011, 0xffff, 0x0054, 0x0061, 0x0070, 0x0079, + // Entry 2A4C0 - 2A4FF + 0x38f8, 0x0086, 0x008f, 0x0098, 0x00a5, 0x00b6, 0x00c5, 0x00d2, + 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x003e, 0xffff, 0x0e9d, + 0x0ea4, 0x0eab, 0x0eb2, 0x0eb9, 0x0ec0, 0x0ec7, 0x0ece, 0x0ed5, + 0x0edc, 0x0ee3, 0x0eea, 0x000d, 0x003e, 0xffff, 0x0e82, 0x0e85, + 0x0e88, 0x0e8b, 0x0e88, 0x0e8e, 0x0e8e, 0x0e8b, 0x0e91, 0x0e94, + 0x0e97, 0x0e9a, 0x000d, 0x003e, 0xffff, 0x0ef1, 0x0efe, 0x0f0d, + 0x0f16, 0x0eb9, 0x0f23, 0x0f2c, 0x0f35, 0x0f42, 0x0f53, 0x0f62, + 0x0f6f, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, + // Entry 2A500 - 2A53F + 0x0000, 0x00c1, 0x0007, 0x003e, 0x0f7e, 0x0f86, 0x0f8e, 0x0f98, + 0x0fa2, 0x0fac, 0x0fb5, 0x0007, 0x0037, 0x13da, 0x2002, 0x13d4, + 0x13d4, 0x1597, 0x13da, 0x2005, 0x0007, 0x003e, 0x0f7e, 0x0f86, + 0x0f8e, 0x0f98, 0x0fa2, 0x0fac, 0x0fb5, 0x0007, 0x003e, 0x0fbd, + 0x0fce, 0x0fdf, 0x0ff0, 0x1001, 0x0fac, 0x1012, 0x0005, 0x00d9, + 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x003e, 0x0f7e, 0x0f86, + 0x0f8e, 0x0f98, 0x0fa2, 0x0fac, 0x0fb5, 0x0007, 0x0037, 0x13da, + 0x2002, 0x13d4, 0x13d4, 0x1597, 0x13da, 0x2005, 0x0007, 0x003e, + // Entry 2A540 - 2A57F + 0x101f, 0x1024, 0x102a, 0x1030, 0x1036, 0x103c, 0x1042, 0x0007, + 0x003e, 0x0fbd, 0x0fce, 0x0fdf, 0x0ff0, 0x1001, 0x0fac, 0x1012, + 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, + 0x003e, 0xffff, 0x1048, 0x1052, 0x105c, 0x1066, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x003e, 0xffff, + 0x1070, 0x107f, 0x108e, 0x109d, 0x0003, 0x011d, 0x0124, 0x012b, + 0x0005, 0x003e, 0xffff, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x003e, + // Entry 2A580 - 2A5BF + 0xffff, 0x1070, 0x107f, 0x108e, 0x109d, 0x0002, 0x0135, 0x019c, + 0x0003, 0x0139, 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, + 0x014e, 0x0151, 0x0154, 0x0157, 0x0148, 0x0001, 0x003e, 0x10c4, + 0x0001, 0x003e, 0x10d8, 0x0001, 0x003e, 0x10dd, 0x0001, 0x003e, + 0x10eb, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, 0x0001, + 0x003e, 0x111e, 0x0001, 0x003e, 0x112d, 0x0008, 0x0166, 0x016c, + 0x0163, 0x016f, 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x003e, + 0x1141, 0x0001, 0x003e, 0x10d8, 0x0001, 0x0008, 0x4eae, 0x0001, + // Entry 2A5C0 - 2A5FF + 0x003e, 0x10eb, 0x0001, 0x003e, 0x114f, 0x0001, 0x003e, 0x115d, + 0x0001, 0x003e, 0x116d, 0x0001, 0x0037, 0x175b, 0x0008, 0x0187, + 0x018d, 0x0184, 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, + 0x003e, 0x10c4, 0x0001, 0x003e, 0x1176, 0x0001, 0x003e, 0x10dd, + 0x0001, 0x003e, 0x1181, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, + 0x1106, 0x0001, 0x003e, 0x111e, 0x0001, 0x003e, 0x112d, 0x0003, + 0x01a0, 0x01c1, 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, + 0x01b8, 0x01bb, 0x01be, 0x01af, 0x0001, 0x003e, 0x10c4, 0x0001, + // Entry 2A600 - 2A63F + 0x003e, 0x10d8, 0x0001, 0x003e, 0x10dd, 0x0001, 0x003e, 0x10eb, + 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, 0x0001, 0x003e, + 0x119d, 0x0001, 0x0037, 0x175b, 0x0008, 0x01cd, 0x01d3, 0x01ca, + 0x01d6, 0x01d9, 0x01dc, 0x01df, 0x01d0, 0x0001, 0x003e, 0x10c4, + 0x0001, 0x003e, 0x10d8, 0x0001, 0x003e, 0x10dd, 0x0001, 0x003e, + 0x10eb, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, 0x0001, + 0x003e, 0x119d, 0x0001, 0x0037, 0x175b, 0x0008, 0x01ee, 0x01f4, + 0x01eb, 0x01f7, 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x003e, + // Entry 2A640 - 2A67F + 0x10c4, 0x0001, 0x003e, 0x1176, 0x0001, 0x003e, 0x10dd, 0x0001, + 0x003e, 0x1181, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, + 0x0001, 0x003e, 0x119d, 0x0001, 0x0037, 0x175b, 0x0003, 0x0211, + 0x0217, 0x0207, 0x0002, 0x020a, 0x020e, 0x0002, 0x003e, 0x11ae, + 0x11df, 0x0001, 0x003e, 0x11d5, 0x0001, 0x0213, 0x0002, 0x003e, + 0x11d5, 0x11f7, 0x0001, 0x0219, 0x0002, 0x003e, 0x11d5, 0x11f7, + 0x0004, 0x022b, 0x0225, 0x0222, 0x0228, 0x0001, 0x003e, 0x11fe, + 0x0001, 0x003e, 0x1214, 0x0001, 0x003e, 0x1224, 0x0001, 0x0000, + // Entry 2A680 - 2A6BF + 0x237b, 0x0004, 0x023c, 0x0236, 0x0233, 0x0239, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x024d, 0x0247, 0x0244, 0x024a, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0040, 0x0291, 0x0000, 0x0000, 0x0296, + 0x02ad, 0x02c4, 0x02db, 0x02f2, 0x0309, 0x0320, 0x0337, 0x034e, + 0x0365, 0x0380, 0x039b, 0x0000, 0x0000, 0x0000, 0x03b6, 0x03cf, + 0x03e8, 0x0000, 0x0000, 0x0000, 0x0401, 0x0000, 0x0000, 0x0000, + // Entry 2A6C0 - 2A6FF + 0x0000, 0x0000, 0x0406, 0x041a, 0x042e, 0x0442, 0x0456, 0x046a, + 0x047e, 0x0492, 0x04a6, 0x04ba, 0x04ce, 0x04e2, 0x04f6, 0x050a, + 0x051e, 0x0532, 0x0546, 0x055a, 0x056e, 0x0582, 0x0596, 0x0000, + 0x05aa, 0x0000, 0x05af, 0x05c5, 0x05d7, 0x05e9, 0x05ff, 0x0611, + 0x0623, 0x0639, 0x064b, 0x065d, 0x0001, 0x0293, 0x0001, 0x003e, + 0x1233, 0x0003, 0x029a, 0x029d, 0x02a2, 0x0001, 0x0037, 0x1800, + 0x0003, 0x003e, 0x123e, 0x124b, 0x1256, 0x0002, 0x02a5, 0x02a9, + 0x0002, 0x003e, 0x126c, 0x126c, 0x0002, 0x003e, 0x1288, 0x1288, + // Entry 2A700 - 2A73F + 0x0003, 0x02b1, 0x02b4, 0x02b9, 0x0001, 0x0037, 0x1879, 0x0003, + 0x003e, 0x123e, 0x124b, 0x1256, 0x0002, 0x02bc, 0x02c0, 0x0002, + 0x003e, 0x129e, 0x129e, 0x0002, 0x003e, 0x1288, 0x1288, 0x0003, + 0x02c8, 0x02cb, 0x02d0, 0x0001, 0x0037, 0x1879, 0x0003, 0x003e, + 0x123e, 0x124b, 0x1256, 0x0002, 0x02d3, 0x02d7, 0x0002, 0x003e, + 0x129e, 0x129e, 0x0002, 0x003e, 0x1288, 0x1288, 0x0003, 0x02df, + 0x02e2, 0x02e7, 0x0001, 0x003e, 0x12b5, 0x0003, 0x003e, 0x12c2, + 0x12dc, 0x12f0, 0x0002, 0x02ea, 0x02ee, 0x0002, 0x003e, 0x130c, + // Entry 2A740 - 2A77F + 0x130c, 0x0002, 0x003e, 0x132e, 0x132e, 0x0003, 0x02f6, 0x02f9, + 0x02fe, 0x0001, 0x003e, 0x134a, 0x0003, 0x003e, 0x1354, 0x136b, + 0x137c, 0x0002, 0x0301, 0x0305, 0x0002, 0x003e, 0x130c, 0x130c, + 0x0002, 0x003e, 0x1395, 0x1395, 0x0003, 0x030d, 0x0310, 0x0315, + 0x0001, 0x003e, 0x134a, 0x0003, 0x003e, 0x1354, 0x136b, 0x137c, + 0x0002, 0x0318, 0x031c, 0x0002, 0x003e, 0x13ae, 0x13ae, 0x0002, + 0x003e, 0x1395, 0x1395, 0x0003, 0x0324, 0x0327, 0x032c, 0x0001, + 0x0037, 0x194e, 0x0003, 0x003e, 0x13c7, 0x13db, 0x13eb, 0x0002, + // Entry 2A780 - 2A7BF + 0x032f, 0x0333, 0x0002, 0x003e, 0x1401, 0x1401, 0x0002, 0x003e, + 0x141b, 0x141b, 0x0003, 0x033b, 0x033e, 0x0343, 0x0001, 0x0037, + 0x194e, 0x0003, 0x003e, 0x13c7, 0x13db, 0x13eb, 0x0002, 0x0346, + 0x034a, 0x0002, 0x003e, 0x142f, 0x142f, 0x0002, 0x003e, 0x141b, + 0x141b, 0x0003, 0x0352, 0x0355, 0x035a, 0x0001, 0x0037, 0x194e, + 0x0003, 0x003e, 0x13c7, 0x13db, 0x13eb, 0x0002, 0x035d, 0x0361, + 0x0002, 0x003e, 0x1446, 0x1446, 0x0002, 0x003e, 0x145b, 0x145b, + 0x0004, 0x036a, 0x036d, 0x0372, 0x037d, 0x0001, 0x0037, 0x19af, + // Entry 2A7C0 - 2A7FF + 0x0003, 0x003e, 0x146d, 0x1485, 0x149b, 0x0002, 0x0375, 0x0379, + 0x0002, 0x003e, 0x14b7, 0x14b7, 0x0002, 0x003e, 0x14d5, 0x14d5, + 0x0001, 0x003e, 0x14ed, 0x0004, 0x0385, 0x0388, 0x038d, 0x0398, + 0x0001, 0x003e, 0x1507, 0x0003, 0x003e, 0x150e, 0x1521, 0x1532, + 0x0002, 0x0390, 0x0394, 0x0002, 0x003e, 0x1549, 0x1549, 0x0002, + 0x003e, 0x1560, 0x1560, 0x0001, 0x003e, 0x14ed, 0x0004, 0x03a0, + 0x03a3, 0x03a8, 0x03b3, 0x0001, 0x003e, 0x1507, 0x0003, 0x003e, + 0x150e, 0x1521, 0x1532, 0x0002, 0x03ab, 0x03af, 0x0002, 0x003e, + // Entry 2A800 - 2A83F + 0x1549, 0x1549, 0x0002, 0x003e, 0x1560, 0x1560, 0x0001, 0x003e, + 0x14ed, 0x0003, 0x03ba, 0x03bd, 0x03c4, 0x0001, 0x0037, 0x1a69, + 0x0005, 0x003e, 0x158f, 0x159a, 0x15a5, 0x1577, 0x15b0, 0x0002, + 0x03c7, 0x03cb, 0x0002, 0x003e, 0x15c3, 0x15c3, 0x0002, 0x003e, + 0x15df, 0x15df, 0x0003, 0x03d3, 0x03d6, 0x03dd, 0x0001, 0x0037, + 0x1a69, 0x0005, 0x003e, 0x158f, 0x159a, 0x15a5, 0x1577, 0x15b0, + 0x0002, 0x03e0, 0x03e4, 0x0002, 0x003e, 0x15f5, 0x15f5, 0x0002, + 0x003e, 0x15df, 0x15df, 0x0003, 0x03ec, 0x03ef, 0x03f6, 0x0001, + // Entry 2A840 - 2A87F + 0x0037, 0x1a69, 0x0005, 0x003e, 0x158f, 0x159a, 0x15a5, 0x1577, + 0x15b0, 0x0002, 0x03f9, 0x03fd, 0x0002, 0x003e, 0x15f5, 0x15f5, + 0x0002, 0x003e, 0x15df, 0x15df, 0x0001, 0x0403, 0x0001, 0x003e, + 0x160c, 0x0003, 0x0000, 0x040a, 0x040f, 0x0003, 0x003e, 0x1624, + 0x1644, 0x1662, 0x0002, 0x0412, 0x0416, 0x0002, 0x003e, 0x1686, + 0x1686, 0x0002, 0x003e, 0x16ac, 0x16ac, 0x0003, 0x0000, 0x041e, + 0x0423, 0x0003, 0x003e, 0x16cc, 0x16e1, 0x16f4, 0x0002, 0x0426, + 0x042a, 0x0002, 0x003e, 0x170d, 0x170d, 0x0002, 0x003e, 0x172a, + // Entry 2A880 - 2A8BF + 0x172a, 0x0003, 0x0000, 0x0432, 0x0437, 0x0003, 0x003e, 0x16cc, + 0x16e1, 0x16f4, 0x0002, 0x043a, 0x043e, 0x0002, 0x003e, 0x170d, + 0x170d, 0x0002, 0x003e, 0x172a, 0x172a, 0x0003, 0x0000, 0x0446, + 0x044b, 0x0003, 0x003e, 0x1747, 0x1767, 0x1785, 0x0002, 0x044e, + 0x0452, 0x0002, 0x003e, 0x17a9, 0x17a9, 0x0002, 0x003e, 0x17cf, + 0x17cf, 0x0003, 0x0000, 0x045a, 0x045f, 0x0003, 0x003e, 0x17ef, + 0x1804, 0x1817, 0x0002, 0x0462, 0x0466, 0x0002, 0x003e, 0x1830, + 0x1830, 0x0002, 0x003e, 0x1847, 0x1847, 0x0003, 0x0000, 0x046e, + // Entry 2A8C0 - 2A8FF + 0x0473, 0x0003, 0x003e, 0x185e, 0x186f, 0x187e, 0x0002, 0x0476, + 0x047a, 0x0002, 0x003e, 0x1893, 0x1893, 0x0002, 0x003e, 0x18a6, + 0x18a6, 0x0003, 0x0000, 0x0482, 0x0487, 0x0003, 0x003e, 0x18b9, + 0x18d9, 0x18f7, 0x0002, 0x048a, 0x048e, 0x0002, 0x003e, 0x191b, + 0x191b, 0x0002, 0x003e, 0x1941, 0x1941, 0x0003, 0x0000, 0x0496, + 0x049b, 0x0003, 0x003e, 0x1961, 0x1976, 0x1989, 0x0002, 0x049e, + 0x04a2, 0x0002, 0x003e, 0x19a2, 0x19a2, 0x0002, 0x003e, 0x19b9, + 0x19b9, 0x0003, 0x0000, 0x04aa, 0x04af, 0x0003, 0x003e, 0x1961, + // Entry 2A900 - 2A93F + 0x1976, 0x1989, 0x0002, 0x04b2, 0x04b6, 0x0002, 0x003e, 0x19a2, + 0x19a2, 0x0002, 0x003e, 0x19b9, 0x19b9, 0x0003, 0x0000, 0x04be, + 0x04c3, 0x0003, 0x003e, 0x19d0, 0x19f0, 0x1a0e, 0x0002, 0x04c6, + 0x04ca, 0x0002, 0x003e, 0x1a32, 0x1a32, 0x0002, 0x003e, 0x1a58, + 0x1a58, 0x0003, 0x0000, 0x04d2, 0x04d7, 0x0003, 0x003e, 0x1a78, + 0x1a8d, 0x1aa0, 0x0002, 0x04da, 0x04de, 0x0002, 0x003e, 0x1ab9, + 0x1ab9, 0x0002, 0x003e, 0x1ad0, 0x1ad0, 0x0003, 0x0000, 0x04e6, + 0x04eb, 0x0003, 0x003e, 0x1ae7, 0x1af8, 0x1b07, 0x0002, 0x04ee, + // Entry 2A940 - 2A97F + 0x04f2, 0x0002, 0x003e, 0x1b1c, 0x1b1c, 0x0002, 0x003e, 0x1b2f, + 0x1b2f, 0x0003, 0x0000, 0x04fa, 0x04ff, 0x0003, 0x003e, 0x1b42, + 0x1b62, 0x1b80, 0x0002, 0x0502, 0x0506, 0x0002, 0x003e, 0x1ba4, + 0x1ba4, 0x0002, 0x003e, 0x1bca, 0x1bca, 0x0003, 0x0000, 0x050e, + 0x0513, 0x0003, 0x003e, 0x1bea, 0x1bff, 0x1c12, 0x0002, 0x0516, + 0x051a, 0x0002, 0x003e, 0x1c2b, 0x1c2b, 0x0002, 0x003e, 0x1c44, + 0x1c44, 0x0003, 0x0000, 0x0522, 0x0527, 0x0003, 0x003e, 0x1c5d, + 0x1c6e, 0x1c7d, 0x0002, 0x052a, 0x052e, 0x0002, 0x003e, 0x1c92, + // Entry 2A980 - 2A9BF + 0x1c92, 0x0002, 0x003e, 0x1ca5, 0x1ca5, 0x0003, 0x0000, 0x0536, + 0x053b, 0x0003, 0x003e, 0x1cb8, 0x1cd5, 0x1cf0, 0x0002, 0x053e, + 0x0542, 0x0002, 0x003e, 0x1d11, 0x1d11, 0x0002, 0x003e, 0x1d2f, + 0x1d2f, 0x0003, 0x0000, 0x054a, 0x054f, 0x0003, 0x003e, 0x1d47, + 0x1d47, 0x1d58, 0x0002, 0x0552, 0x0556, 0x0002, 0x003e, 0x1d6d, + 0x1d6d, 0x0002, 0x003e, 0x1d81, 0x1d81, 0x0003, 0x0000, 0x055e, + 0x0563, 0x0003, 0x003e, 0x1d93, 0x1da3, 0x1db1, 0x0002, 0x0566, + 0x056a, 0x0002, 0x003e, 0x1dc5, 0x1dc5, 0x0002, 0x003e, 0x1d81, + // Entry 2A9C0 - 2A9FF + 0x1d81, 0x0003, 0x0000, 0x0572, 0x0577, 0x0003, 0x003e, 0x1dd7, + 0x1df3, 0x1e0d, 0x0002, 0x057a, 0x057e, 0x0002, 0x003e, 0x1e2d, + 0x1e2d, 0x0002, 0x003e, 0x1e4f, 0x1e4f, 0x0003, 0x0000, 0x0586, + 0x058b, 0x0003, 0x003e, 0x1e6b, 0x1e7e, 0x1e8f, 0x0002, 0x058e, + 0x0592, 0x0002, 0x003e, 0x1ea6, 0x1ea6, 0x0002, 0x003e, 0x1ebd, + 0x1ebd, 0x0003, 0x0000, 0x059a, 0x059f, 0x0003, 0x003e, 0x1e6b, + 0x1e7e, 0x1e8f, 0x0002, 0x05a2, 0x05a6, 0x0002, 0x003e, 0x1ea6, + 0x1ea6, 0x0002, 0x003e, 0x1ebd, 0x1ebd, 0x0001, 0x05ac, 0x0001, + // Entry 2AA00 - 2AA3F + 0x003e, 0x1ed2, 0x0003, 0x05b3, 0x05b6, 0x05ba, 0x0001, 0x003e, + 0x1edc, 0x0002, 0x003e, 0xffff, 0x1ee5, 0x0002, 0x05bd, 0x05c1, + 0x0002, 0x003e, 0x1efb, 0x1efb, 0x0002, 0x003e, 0x1f19, 0x1f19, + 0x0003, 0x05c9, 0x0000, 0x05cc, 0x0001, 0x003e, 0x1f31, 0x0002, + 0x05cf, 0x05d3, 0x0002, 0x003e, 0x1f36, 0x1f36, 0x0002, 0x003e, + 0x1f4f, 0x1f4f, 0x0003, 0x05db, 0x0000, 0x05de, 0x0001, 0x003e, + 0x1f31, 0x0002, 0x05e1, 0x05e5, 0x0002, 0x003e, 0x1f68, 0x1f68, + 0x0002, 0x003e, 0x1f79, 0x1f79, 0x0003, 0x05ed, 0x05f0, 0x05f4, + // Entry 2AA40 - 2AA7F + 0x0001, 0x003e, 0x1f8a, 0x0002, 0x003e, 0xffff, 0x1f95, 0x0002, + 0x05f7, 0x05fb, 0x0002, 0x003e, 0x1fad, 0x1fad, 0x0002, 0x003e, + 0x1fcd, 0x1fcd, 0x0003, 0x0603, 0x0000, 0x0606, 0x0001, 0x003e, + 0x1fe7, 0x0002, 0x0609, 0x060d, 0x0002, 0x003f, 0x0000, 0x0000, + 0x0002, 0x003f, 0x0017, 0x0017, 0x0003, 0x0615, 0x0000, 0x0618, + 0x0001, 0x003f, 0x002e, 0x0002, 0x061b, 0x061f, 0x0002, 0x003f, + 0x0032, 0x0032, 0x0002, 0x003f, 0x0047, 0x0047, 0x0003, 0x0627, + 0x062a, 0x062e, 0x0001, 0x000f, 0x01e5, 0x0002, 0x003f, 0xffff, + // Entry 2AA80 - 2AABF + 0x005c, 0x0002, 0x0631, 0x0635, 0x0002, 0x003f, 0x0065, 0x0065, + 0x0002, 0x003f, 0x0087, 0x0087, 0x0003, 0x063d, 0x0000, 0x0640, + 0x0001, 0x0011, 0x0d52, 0x0002, 0x0643, 0x0647, 0x0002, 0x003f, + 0x00a3, 0x00a3, 0x0002, 0x003f, 0x00ba, 0x00ba, 0x0003, 0x064f, + 0x0000, 0x0652, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0655, 0x0659, + 0x0002, 0x003f, 0x00d1, 0x00d1, 0x0002, 0x003f, 0x00e6, 0x00e6, + 0x0001, 0x065f, 0x0001, 0x003f, 0x00fb, 0x0004, 0x0667, 0x066c, + 0x0671, 0x067c, 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x2a11, 0x0003, + // Entry 2AAC0 - 2AAFF + 0x003f, 0x0115, 0x012a, 0x0133, 0x0002, 0x0000, 0x0674, 0x0002, + 0x0000, 0x0677, 0x0003, 0x003f, 0xffff, 0x013c, 0x0169, 0x0002, + 0x0000, 0x067f, 0x0003, 0x0719, 0x07af, 0x0683, 0x0094, 0x003f, + 0x0194, 0x01ba, 0x01eb, 0x0214, 0x0268, 0x02ec, 0x035c, 0x03eb, + 0x04b8, 0x0575, 0x0637, 0xffff, 0x06eb, 0x0751, 0x07c3, 0x0850, + 0x08e4, 0x095c, 0x09f1, 0x0ab5, 0x0b7c, 0x0c1d, 0x0cb5, 0x0d2f, + 0x0d9d, 0x0df9, 0x0e15, 0x0e57, 0x0eb1, 0x0f09, 0x0f67, 0x0fa3, + 0x1007, 0x106d, 0x10db, 0x1137, 0x1168, 0x11bd, 0x1246, 0x12dd, + // Entry 2AB00 - 2AB3F + 0x1327, 0x1343, 0x136d, 0x13c1, 0x142d, 0x147e, 0x151d, 0x1583, + 0x15e8, 0x1687, 0x1727, 0x176f, 0x179c, 0x17e9, 0x180d, 0x1849, + 0x1899, 0x18b9, 0x1909, 0x19b2, 0x1a2a, 0x1a64, 0x1aab, 0x1b33, + 0x1ba1, 0x1be9, 0x1c05, 0x1c2a, 0x1c4e, 0x1c85, 0x1cb4, 0x1cfd, + 0x1d6b, 0x1ddb, 0x1e49, 0xffff, 0x1e95, 0x1ec4, 0x1f0f, 0x1f59, + 0x1f9d, 0x1ffd, 0x2023, 0x2075, 0x20cb, 0x210b, 0x215f, 0x2181, + 0x21a1, 0x21c3, 0x221c, 0x2274, 0x22ca, 0x2385, 0x242a, 0x24a6, + 0x24f6, 0x2516, 0x2532, 0x257b, 0x2614, 0x26a4, 0x270a, 0x2724, + // Entry 2AB40 - 2AB7F + 0x277a, 0x2824, 0x28a2, 0x290c, 0x2964, 0x2980, 0x29d4, 0x2a48, + 0x2acb, 0x2b53, 0x2bc1, 0x2c49, 0x2c6b, 0x2c89, 0x2ca7, 0x2cc7, + 0x2d05, 0xffff, 0x2d75, 0x2dc1, 0x2ddf, 0x2e01, 0x2e38, 0x2e63, + 0x2e85, 0x2e9f, 0x2ed9, 0x2f27, 0x2f4b, 0x2f87, 0x2fd3, 0x3015, + 0x3079, 0x30b7, 0x3131, 0x31ad, 0x3201, 0x324d, 0x32d5, 0x3331, + 0x334f, 0x3380, 0x33d0, 0x344a, 0x0094, 0x003f, 0xffff, 0xffff, + 0xffff, 0xffff, 0x023f, 0x02ce, 0x033e, 0x03ae, 0x047f, 0x0540, + 0x05f5, 0xffff, 0x06d1, 0x0733, 0x079f, 0x0821, 0x08c4, 0x0938, + // Entry 2AB80 - 2ABBF + 0x09ba, 0x0a73, 0x0b4d, 0x0bee, 0x0c8f, 0x0d15, 0x0d79, 0xffff, + 0xffff, 0x0e35, 0xffff, 0x0ee4, 0xffff, 0x0f87, 0x0fed, 0x1051, + 0x10b7, 0xffff, 0xffff, 0x119b, 0x1217, 0x12c3, 0xffff, 0xffff, + 0xffff, 0x1394, 0xffff, 0x144d, 0x14f4, 0xffff, 0x15bf, 0x164e, + 0x170d, 0xffff, 0xffff, 0xffff, 0xffff, 0x182b, 0xffff, 0xffff, + 0x18d8, 0x1981, 0xffff, 0xffff, 0x1a82, 0x1b13, 0x1b87, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ce3, 0x1d4b, 0x1dbd, + 0x1e2d, 0xffff, 0xffff, 0xffff, 0x1ef3, 0xffff, 0x1f77, 0xffff, + // Entry 2ABC0 - 2ABFF + 0xffff, 0x2054, 0xffff, 0x20eb, 0xffff, 0xffff, 0xffff, 0xffff, + 0x21fa, 0xffff, 0x2292, 0x2350, 0x2405, 0x2488, 0xffff, 0xffff, + 0xffff, 0x254e, 0x25e9, 0x267c, 0xffff, 0xffff, 0x2744, 0x27fc, + 0x2888, 0x28ea, 0xffff, 0xffff, 0x29b2, 0x2a2e, 0x2a92, 0xffff, + 0x2b88, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ce5, 0xffff, + 0x2d59, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2ebb, 0xffff, 0xffff, 0x2f6b, 0xffff, 0x2fed, 0xffff, 0x3097, + 0x310d, 0x318d, 0xffff, 0x3225, 0x32b1, 0xffff, 0xffff, 0xffff, + // Entry 2AC00 - 2AC3F + 0x33b2, 0x3420, 0x0094, 0x003f, 0xffff, 0xffff, 0xffff, 0xffff, + 0x029a, 0x0315, 0x0385, 0x0437, 0x04fc, 0x05b5, 0x0684, 0xffff, + 0x070e, 0x0778, 0x07f2, 0x088a, 0x090d, 0x098b, 0x0a31, 0x0b00, + 0x0bb4, 0x0c55, 0x0ce4, 0x0d52, 0x0dca, 0xffff, 0xffff, 0x0e84, + 0xffff, 0x0f37, 0xffff, 0x0fc6, 0x102c, 0x1092, 0x1108, 0xffff, + 0xffff, 0x11ea, 0x127e, 0x1302, 0xffff, 0xffff, 0xffff, 0x13f7, + 0xffff, 0x14b8, 0x154f, 0xffff, 0x161a, 0x16c9, 0x174a, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1870, 0xffff, 0xffff, 0x1945, 0x19ee, + // Entry 2AC40 - 2AC7F + 0xffff, 0xffff, 0x1adf, 0x1b5c, 0x1bc4, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1d20, 0x1d94, 0x1e04, 0x1e6e, 0xffff, + 0xffff, 0xffff, 0x1f34, 0xffff, 0x1fcc, 0xffff, 0xffff, 0x209f, + 0xffff, 0x2134, 0xffff, 0xffff, 0xffff, 0xffff, 0x2247, 0xffff, + 0x230d, 0x23c5, 0x2458, 0x24cd, 0xffff, 0xffff, 0xffff, 0x25b1, + 0x2648, 0x26d7, 0xffff, 0xffff, 0x27bb, 0x2855, 0x28c5, 0x2937, + 0xffff, 0xffff, 0x2a01, 0x2a6d, 0x2b0f, 0xffff, 0x2c05, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2d2e, 0xffff, 0x2d9a, 0xffff, + // Entry 2AC80 - 2ACBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f00, 0xffff, + 0xffff, 0x2fac, 0xffff, 0x3046, 0xffff, 0x30e2, 0x315e, 0x31d6, + 0xffff, 0x327e, 0x3302, 0xffff, 0xffff, 0xffff, 0x33f7, 0x347d, + 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, + // Entry 2ACC0 - 2ACFF + 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, + 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0040, + 0xffff, 0x0000, 0x000a, 0x0011, 0x0018, 0x001f, 0x0029, 0x0031, + 0x003c, 0x0045, 0x004c, 0x0051, 0x0057, 0x000d, 0x0040, 0xffff, + 0x005f, 0x006c, 0x0076, 0x0080, 0x0089, 0x0097, 0x00a2, 0x00b0, + 0x00bc, 0x00c6, 0x00ce, 0x00d7, 0x0002, 0x0000, 0x0057, 0x000d, + 0x0000, 0xffff, 0x298c, 0x297e, 0x25bc, 0x2055, 0x2055, 0x2055, + 0x297a, 0x2485, 0x298e, 0x2055, 0x298e, 0x298e, 0x0002, 0x0069, + // Entry 2AD00 - 2AD3F + 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0040, 0x00e2, + 0x00e9, 0x00f0, 0x00f5, 0x00fc, 0x0100, 0x0104, 0x0007, 0x0040, + 0x010b, 0x0116, 0x0120, 0x0129, 0x0134, 0x013e, 0x0146, 0x0002, + 0x0000, 0x0082, 0x0007, 0x0000, 0x255c, 0x2992, 0x214e, 0x2990, + 0x2980, 0x2055, 0x297a, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, + 0x0098, 0x0005, 0x0040, 0xffff, 0x0151, 0x0158, 0x015f, 0x0166, + 0x0005, 0x0040, 0xffff, 0x016d, 0x0179, 0x0185, 0x0191, 0x0001, + 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, + // Entry 2AD40 - 2AD7F + 0x0001, 0x0040, 0x019d, 0x0001, 0x0040, 0x01a1, 0x0002, 0x00b1, + 0x00b4, 0x0001, 0x0040, 0x019d, 0x0001, 0x0040, 0x01a1, 0x0003, + 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0040, 0x01a5, + 0x01be, 0x0001, 0x00c3, 0x0002, 0x0040, 0x01d5, 0x01d9, 0x0004, + 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, + 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + // Entry 2AD80 - 2ADBF + 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, + 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, + // Entry 2ADC0 - 2ADFF + 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0040, 0x01dc, 0x0001, + 0x0131, 0x0001, 0x0040, 0x01e7, 0x0001, 0x0136, 0x0001, 0x0040, + 0x01ef, 0x0001, 0x013b, 0x0001, 0x0040, 0x01f7, 0x0002, 0x0141, + 0x0144, 0x0001, 0x0040, 0x01fe, 0x0003, 0x0040, 0x0204, 0x020a, + 0x0211, 0x0001, 0x014b, 0x0001, 0x0040, 0x021d, 0x0001, 0x0150, + 0x0001, 0x0040, 0x022c, 0x0001, 0x0155, 0x0001, 0x0040, 0x0240, + 0x0001, 0x015a, 0x0001, 0x0040, 0x0245, 0x0001, 0x015f, 0x0001, + 0x0040, 0x024d, 0x0001, 0x0164, 0x0001, 0x0040, 0x0257, 0x0003, + // Entry 2AE00 - 2AE3F + 0x0004, 0x024d, 0x050e, 0x0012, 0x0017, 0x0024, 0x0000, 0x005a, + 0x0000, 0x0000, 0x007f, 0x00aa, 0x020d, 0x0000, 0x021a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0227, 0x0000, 0x023f, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, + 0x0001, 0x0000, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0049, 0x0000, 0x0000, 0x0000, 0x002f, 0x0006, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0036, 0x0001, 0x0038, 0x0001, + 0x003a, 0x000d, 0x001b, 0xffff, 0x00cd, 0x278e, 0x2793, 0x2799, + // Entry 2AE40 - 2AE7F + 0x27a6, 0x27ad, 0x27b6, 0x27bd, 0x27c3, 0x27c6, 0x27cb, 0x27d0, + 0x0004, 0x0057, 0x0051, 0x004e, 0x0054, 0x0001, 0x0016, 0x0288, + 0x0001, 0x0016, 0x0298, 0x0001, 0x0016, 0x02a2, 0x0001, 0x0007, + 0x0277, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0065, 0x0006, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x006c, 0x0001, 0x006e, 0x0001, 0x0070, 0x000d, + 0x001b, 0xffff, 0x00cd, 0x278e, 0x2793, 0x2799, 0x27a6, 0x27ad, + 0x27b6, 0x27bd, 0x27c3, 0x27c6, 0x27cb, 0x27d0, 0x0008, 0x0000, + // Entry 2AE80 - 2AEBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0088, 0x0000, 0x0099, 0x0004, + 0x0096, 0x0090, 0x008d, 0x0093, 0x0001, 0x0013, 0x06bb, 0x0001, + 0x0013, 0x0477, 0x0001, 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, + 0x0004, 0x00a7, 0x00a1, 0x009e, 0x00a4, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0008, 0x00b3, 0x0118, 0x016f, 0x01a4, 0x01c5, 0x01da, + 0x01eb, 0x01fc, 0x0002, 0x00b6, 0x00e7, 0x0003, 0x00ba, 0x00c9, + 0x00d8, 0x000d, 0x0000, 0xffff, 0x1e22, 0x2a15, 0x2a1a, 0x2a20, + // Entry 2AEC0 - 2AEFF + 0x2a25, 0x2a29, 0x2a2e, 0x2350, 0x2355, 0x2a02, 0x2a07, 0x2a0c, + 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, + 0x0016, 0xffff, 0x02c1, 0x2ba1, 0x2bfd, 0x2c04, 0x2c0c, 0x2c10, + 0x2c15, 0x2c1a, 0x2c21, 0x2c2b, 0x2c33, 0x2c3c, 0x0003, 0x00eb, + 0x00fa, 0x0109, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x2365, + 0x2326, 0x236a, 0x224e, 0x22d4, 0x2112, 0x22dc, 0x234a, 0x22e0, + 0x2212, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, + // Entry 2AF00 - 2AF3F + 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, + 0x000d, 0x0016, 0xffff, 0x02c1, 0x2ba1, 0x2bfd, 0x2c04, 0x2c45, + 0x2c10, 0x2c15, 0x2c1a, 0x2c21, 0x2c2b, 0x2c33, 0x2c3c, 0x0002, + 0x011b, 0x0145, 0x0005, 0x0121, 0x012a, 0x013c, 0x0000, 0x0133, + 0x0007, 0x0040, 0x026e, 0x0273, 0x0279, 0x027f, 0x0285, 0x028a, + 0x028f, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, + 0x298c, 0x298e, 0x0007, 0x0000, 0x1ebf, 0x2a33, 0x2a38, 0x2a3d, + 0x1ecf, 0x2a42, 0x2a46, 0x0007, 0x0040, 0x0294, 0x029c, 0x02a5, + // Entry 2AF40 - 2AF7F + 0x02b0, 0x02ba, 0x02c6, 0x02ce, 0x0005, 0x014b, 0x0154, 0x0166, + 0x0000, 0x015d, 0x0007, 0x0040, 0x02d8, 0x02dc, 0x02e1, 0x02e6, + 0x02eb, 0x02ef, 0x02f3, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, + 0x297a, 0x297c, 0x298c, 0x298e, 0x0007, 0x0000, 0x1ebf, 0x2a33, + 0x2a38, 0x2a3d, 0x1ecf, 0x2a42, 0x2a46, 0x0007, 0x0040, 0x0294, + 0x029c, 0x02a5, 0x02b0, 0x02ba, 0x02c6, 0x02ce, 0x0002, 0x0172, + 0x018b, 0x0003, 0x0176, 0x017d, 0x0184, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, + // Entry 2AF80 - 2AFBF + 0x0035, 0x0037, 0x2335, 0x0005, 0x0016, 0xffff, 0x036a, 0x0375, + 0x0380, 0x038b, 0x0003, 0x018f, 0x0196, 0x019d, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0016, 0xffff, 0x036a, + 0x0375, 0x0380, 0x038b, 0x0001, 0x01a6, 0x0003, 0x01aa, 0x01b3, + 0x01bc, 0x0002, 0x01ad, 0x01b0, 0x0001, 0x0040, 0x02f7, 0x0001, + 0x0040, 0x02fd, 0x0002, 0x01b6, 0x01b9, 0x0001, 0x001b, 0x03f4, + 0x0001, 0x0040, 0x0307, 0x0002, 0x01bf, 0x01c2, 0x0001, 0x0040, + // Entry 2AFC0 - 2AFFF + 0x02f7, 0x0001, 0x0040, 0x02fd, 0x0003, 0x01cf, 0x0000, 0x01c9, + 0x0001, 0x01cb, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x01d2, + 0x01d6, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x0040, 0x030e, + 0x0317, 0x0004, 0x01e8, 0x01e2, 0x01df, 0x01e5, 0x0001, 0x0016, + 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, 0x0001, + 0x0007, 0x0277, 0x0004, 0x01f9, 0x01f3, 0x01f0, 0x01f6, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x020a, 0x0204, 0x0201, 0x0207, + // Entry 2B000 - 2B03F + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0213, 0x0001, 0x0215, 0x0001, 0x0217, 0x0001, 0x0000, + 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0220, 0x0001, + 0x0222, 0x0001, 0x0224, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x022e, 0x0004, 0x023c, 0x0236, + 0x0233, 0x0239, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, + 0x0001, 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, 0x0005, 0x0000, + // Entry 2B040 - 2B07F + 0x0000, 0x0000, 0x0000, 0x0245, 0x0001, 0x0247, 0x0001, 0x0249, + 0x0002, 0x0000, 0x1a20, 0x2a4a, 0x0040, 0x028e, 0x0000, 0x0000, + 0x0293, 0x02aa, 0x02bc, 0x02ce, 0x02e0, 0x02f2, 0x0304, 0x031b, + 0x032d, 0x033f, 0x0356, 0x0368, 0x0000, 0x0000, 0x0000, 0x037a, + 0x0391, 0x03a3, 0x0000, 0x0000, 0x0000, 0x03b5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x03ba, 0x03c2, 0x03ca, 0x03d2, 0x03da, + 0x03e2, 0x03ea, 0x03f2, 0x03fa, 0x0402, 0x040a, 0x0412, 0x041a, + 0x0422, 0x042a, 0x0432, 0x043a, 0x0442, 0x044a, 0x0452, 0x045a, + // Entry 2B080 - 2B0BF + 0x0000, 0x0462, 0x0000, 0x0467, 0x0479, 0x048b, 0x049d, 0x04af, + 0x04c1, 0x04d3, 0x04e5, 0x04f7, 0x0509, 0x0001, 0x0290, 0x0001, + 0x0040, 0x0320, 0x0003, 0x0297, 0x029a, 0x029f, 0x0001, 0x0040, + 0x0326, 0x0003, 0x0040, 0x032b, 0x0337, 0x0342, 0x0002, 0x02a2, + 0x02a6, 0x0002, 0x0040, 0x035b, 0x034f, 0x0002, 0x0040, 0x0378, + 0x0369, 0x0003, 0x02ae, 0x0000, 0x02b1, 0x0001, 0x003e, 0x06b1, + 0x0002, 0x02b4, 0x02b8, 0x0002, 0x0040, 0x0393, 0x0389, 0x0002, + 0x0040, 0x03ac, 0x039f, 0x0003, 0x02c0, 0x0000, 0x02c3, 0x0001, + // Entry 2B0C0 - 2B0FF + 0x003e, 0x06b1, 0x0002, 0x02c6, 0x02ca, 0x0002, 0x0040, 0x03bb, + 0x03bb, 0x0002, 0x0040, 0x03c3, 0x03c3, 0x0003, 0x02d2, 0x0000, + 0x02d5, 0x0001, 0x0016, 0x04e2, 0x0002, 0x02d8, 0x02dc, 0x0002, + 0x0040, 0x03da, 0x03cb, 0x0002, 0x0040, 0x03ff, 0x03ed, 0x0003, + 0x02e4, 0x0000, 0x02e7, 0x0001, 0x003e, 0x06bd, 0x0002, 0x02ea, + 0x02ee, 0x0002, 0x0040, 0x041f, 0x0415, 0x0002, 0x0040, 0x0438, + 0x042b, 0x0003, 0x02f6, 0x0000, 0x02f9, 0x0001, 0x003e, 0x06bd, + 0x0002, 0x02fc, 0x0300, 0x0002, 0x0040, 0x0447, 0x0447, 0x0002, + // Entry 2B100 - 2B13F + 0x0040, 0x044f, 0x044f, 0x0003, 0x0308, 0x030b, 0x0310, 0x0001, + 0x0040, 0x0457, 0x0003, 0x0040, 0x045d, 0x046b, 0x0477, 0x0002, + 0x0313, 0x0317, 0x0002, 0x0040, 0x0493, 0x0486, 0x0002, 0x0040, + 0x04b3, 0x04a3, 0x0003, 0x031f, 0x0000, 0x0322, 0x0001, 0x001c, + 0x010c, 0x0002, 0x0325, 0x0329, 0x0002, 0x0040, 0x04d0, 0x04c6, + 0x0002, 0x0040, 0x04e9, 0x04dc, 0x0003, 0x0331, 0x0000, 0x0334, + 0x0001, 0x001c, 0x010c, 0x0002, 0x0337, 0x033b, 0x0002, 0x0040, + 0x04f8, 0x04f8, 0x0002, 0x0040, 0x0500, 0x0500, 0x0003, 0x0343, + // Entry 2B140 - 2B17F + 0x0346, 0x034b, 0x0001, 0x003e, 0x06ef, 0x0003, 0x0040, 0x0508, + 0x0514, 0x051e, 0x0002, 0x034e, 0x0352, 0x0002, 0x0040, 0x0537, + 0x052b, 0x0002, 0x0040, 0x0556, 0x0547, 0x0003, 0x035a, 0x0000, + 0x035d, 0x0001, 0x001c, 0x0113, 0x0002, 0x0360, 0x0364, 0x0002, + 0x0040, 0x0573, 0x0569, 0x0002, 0x0040, 0x058c, 0x057f, 0x0003, + 0x036c, 0x0000, 0x036f, 0x0001, 0x001c, 0x0113, 0x0002, 0x0372, + 0x0376, 0x0002, 0x0040, 0x059b, 0x059b, 0x0002, 0x0040, 0x05a3, + 0x05a3, 0x0003, 0x037e, 0x0381, 0x0386, 0x0001, 0x0040, 0x05ab, + // Entry 2B180 - 2B1BF + 0x0003, 0x0040, 0x05af, 0x05b9, 0x05be, 0x0002, 0x0389, 0x038d, + 0x0002, 0x0040, 0x05ce, 0x05c3, 0x0002, 0x0040, 0x05ea, 0x05dc, + 0x0003, 0x0395, 0x0000, 0x0398, 0x0001, 0x003e, 0x0747, 0x0002, + 0x039b, 0x039f, 0x0002, 0x0040, 0x0605, 0x05fb, 0x0002, 0x0040, + 0x061e, 0x0611, 0x0003, 0x03a7, 0x0000, 0x03aa, 0x0001, 0x003e, + 0x0747, 0x0002, 0x03ad, 0x03b1, 0x0002, 0x0040, 0x062d, 0x062d, + 0x0002, 0x0040, 0x0635, 0x0635, 0x0001, 0x03b7, 0x0001, 0x0040, + 0x063d, 0x0002, 0x0000, 0x03bd, 0x0003, 0x0040, 0x0647, 0x0657, + // Entry 2B1C0 - 2B1FF + 0x0665, 0x0002, 0x0000, 0x03c5, 0x0003, 0x0040, 0x0676, 0x0683, + 0x068e, 0x0002, 0x0000, 0x03cd, 0x0003, 0x0040, 0x069c, 0x06a8, + 0x06b2, 0x0002, 0x0000, 0x03d5, 0x0003, 0x0040, 0x06bf, 0x06d0, + 0x06df, 0x0002, 0x0000, 0x03dd, 0x0003, 0x0040, 0x06f1, 0x06ff, + 0x070b, 0x0002, 0x0000, 0x03e5, 0x0003, 0x0040, 0x071a, 0x0727, + 0x0732, 0x0002, 0x0000, 0x03ed, 0x0003, 0x0040, 0x0740, 0x0754, + 0x0766, 0x0002, 0x0000, 0x03f5, 0x0003, 0x0040, 0x077b, 0x0789, + 0x0795, 0x0002, 0x0000, 0x03fd, 0x0003, 0x0040, 0x077b, 0x0789, + // Entry 2B200 - 2B23F + 0x0795, 0x0002, 0x0000, 0x0405, 0x0003, 0x0040, 0x07a4, 0x07b6, + 0x07c6, 0x0002, 0x0000, 0x040d, 0x0003, 0x0040, 0x07d9, 0x07e7, + 0x07f3, 0x0002, 0x0000, 0x0415, 0x0003, 0x0040, 0x0802, 0x080f, + 0x081a, 0x0002, 0x0000, 0x041d, 0x0003, 0x0040, 0x0828, 0x083d, + 0x0850, 0x0002, 0x0000, 0x0425, 0x0003, 0x0040, 0x0866, 0x0874, + 0x0880, 0x0002, 0x0000, 0x042d, 0x0003, 0x0040, 0x088f, 0x089c, + 0x08a7, 0x0002, 0x0000, 0x0435, 0x0003, 0x0040, 0x08b5, 0x08c5, + 0x08d3, 0x0002, 0x0000, 0x043d, 0x0003, 0x0040, 0x08e4, 0x08f1, + // Entry 2B240 - 2B27F + 0x08fc, 0x0002, 0x0000, 0x0445, 0x0003, 0x0040, 0x090a, 0x0916, + 0x0920, 0x0002, 0x0000, 0x044d, 0x0003, 0x0040, 0x092d, 0x093f, + 0x094f, 0x0002, 0x0000, 0x0455, 0x0003, 0x0040, 0x0962, 0x096f, + 0x097a, 0x0002, 0x0000, 0x045d, 0x0003, 0x0040, 0x0988, 0x0994, + 0x099e, 0x0001, 0x0464, 0x0001, 0x0040, 0x09ab, 0x0003, 0x046b, + 0x0000, 0x046e, 0x0001, 0x0040, 0x09bb, 0x0002, 0x0471, 0x0475, + 0x0002, 0x0040, 0x09ce, 0x09c1, 0x0002, 0x0040, 0x09ef, 0x09df, + 0x0003, 0x047d, 0x0000, 0x0480, 0x0001, 0x0040, 0x0a03, 0x0002, + // Entry 2B280 - 2B2BF + 0x0483, 0x0487, 0x0002, 0x0040, 0x0a12, 0x0a07, 0x0002, 0x0040, + 0x0a2d, 0x0a1f, 0x0003, 0x048f, 0x0000, 0x0492, 0x0001, 0x0040, + 0x0a03, 0x0002, 0x0495, 0x0499, 0x0002, 0x0040, 0x0a3d, 0x0a3d, + 0x0002, 0x0040, 0x0a46, 0x0a46, 0x0003, 0x04a1, 0x0000, 0x04a4, + 0x0001, 0x0040, 0x0a4f, 0x0002, 0x04a7, 0x04ab, 0x0002, 0x0040, + 0x0a64, 0x0a56, 0x0002, 0x0040, 0x0a87, 0x0a76, 0x0003, 0x04b3, + 0x0000, 0x04b6, 0x0001, 0x0016, 0x0f87, 0x0002, 0x04b9, 0x04bd, + 0x0002, 0x0040, 0x0aa8, 0x0a9c, 0x0002, 0x0040, 0x0ac5, 0x0ab6, + // Entry 2B2C0 - 2B2FF + 0x0003, 0x04c5, 0x0000, 0x04c8, 0x0001, 0x0016, 0x0f87, 0x0002, + 0x04cb, 0x04cf, 0x0002, 0x0032, 0x055e, 0x055e, 0x0002, 0x0032, + 0x0568, 0x0568, 0x0003, 0x04d7, 0x0000, 0x04da, 0x0001, 0x0040, + 0x0ad6, 0x0002, 0x04dd, 0x04e1, 0x0002, 0x0040, 0x0aeb, 0x0add, + 0x0002, 0x0040, 0x0b0e, 0x0afd, 0x0003, 0x04e9, 0x0000, 0x04ec, + 0x0001, 0x0016, 0x0ffe, 0x0002, 0x04ef, 0x04f3, 0x0002, 0x0040, + 0x0b2f, 0x0b23, 0x0002, 0x0040, 0x0b4c, 0x0b3d, 0x0003, 0x04fb, + 0x0000, 0x04fe, 0x0001, 0x0016, 0x0ffe, 0x0002, 0x0501, 0x0505, + // Entry 2B300 - 2B33F + 0x0002, 0x0040, 0x0b5d, 0x0b5d, 0x0002, 0x0040, 0x0b67, 0x0b67, + 0x0001, 0x050b, 0x0001, 0x0040, 0x0b71, 0x0004, 0x0513, 0x0518, + 0x051d, 0x0528, 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x2a11, 0x0003, + 0x0040, 0x0b7a, 0x0b84, 0x0b94, 0x0002, 0x0000, 0x0520, 0x0002, + 0x0000, 0x0523, 0x0003, 0x0040, 0xffff, 0x0ba4, 0x0bb9, 0x0002, + 0x0000, 0x052b, 0x0003, 0x052f, 0x0663, 0x05c9, 0x0098, 0x0040, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0c4f, 0x0c9d, 0x0d03, 0x0d3c, + 0x0da1, 0x0e12, 0x0e5d, 0x0ed1, 0xffff, 0x0f04, 0x0f3d, 0x0f82, + // Entry 2B340 - 2B37F + 0x0fd3, 0x100f, 0x1048, 0x109f, 0x1108, 0x1153, 0x11a1, 0x11f5, + 0x1228, 0xffff, 0xffff, 0x128a, 0xffff, 0x12d3, 0xffff, 0x131e, + 0x1354, 0x1393, 0x13d2, 0xffff, 0xffff, 0x143d, 0x1485, 0x14c7, + 0xffff, 0xffff, 0xffff, 0x1537, 0xffff, 0x1594, 0x15eb, 0xffff, + 0x1636, 0x1684, 0x16d2, 0xffff, 0xffff, 0xffff, 0xffff, 0x176d, + 0xffff, 0xffff, 0x17d8, 0x181d, 0xffff, 0xffff, 0x1888, 0x18d3, + 0x190f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x19b4, + 0x19ed, 0x1a23, 0x1a62, 0x1a9e, 0xffff, 0xffff, 0x1b09, 0xffff, + // Entry 2B380 - 2B3BF + 0x1b55, 0xffff, 0xffff, 0x1bbd, 0xffff, 0x1c0e, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1c8a, 0xffff, 0x1cd3, 0x1d21, 0x1d7a, 0x1dbc, + 0xffff, 0xffff, 0xffff, 0x1e21, 0x1e6c, 0x1eae, 0xffff, 0xffff, + 0x1f10, 0x1f6a, 0x1fac, 0x1fd9, 0xffff, 0xffff, 0x2040, 0x208b, + 0x20ca, 0xffff, 0x212a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x21d0, 0x2209, 0x223c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x22e5, 0xffff, 0xffff, 0x233a, 0xffff, 0x2385, + 0xffff, 0x23d7, 0x241e, 0x245d, 0xffff, 0x24a3, 0x24e5, 0xffff, + // Entry 2B3C0 - 2B3FF + 0xffff, 0xffff, 0x2555, 0x258b, 0xffff, 0xffff, 0x0bcc, 0x0cd0, + 0x0098, 0x0040, 0x0bf9, 0x0c0b, 0x0c24, 0x0c39, 0x0c65, 0x0caa, + 0x0d12, 0x0d59, 0x0dc2, 0x0e27, 0x0e7f, 0x0ede, 0xffff, 0x0f13, + 0x0f50, 0x0f99, 0x0fe3, 0x101e, 0x1061, 0x10be, 0x111d, 0x1169, + 0x11b9, 0x1202, 0x123a, 0x126a, 0x1277, 0x129a, 0x12c6, 0x12e3, + 0x130f, 0x132c, 0x1365, 0x13a4, 0x13e3, 0x1411, 0x142a, 0x1451, + 0x1497, 0x14d7, 0x1503, 0x150f, 0x1528, 0x154b, 0x157f, 0x15ad, + 0x1600, 0xffff, 0x164c, 0x169a, 0x16e0, 0x1708, 0x1722, 0x174f, + // Entry 2B400 - 2B43F + 0x175f, 0x177d, 0x17a9, 0x17bf, 0x17eb, 0x1831, 0x1870, 0x187b, + 0x189d, 0x18e3, 0x191a, 0x193c, 0x194a, 0x1960, 0x1970, 0x1989, + 0x199e, 0x19c3, 0x19fb, 0x1a34, 0x1a72, 0x1ab0, 0x1ae0, 0x1af4, + 0x1b1a, 0x1b48, 0x1b67, 0x1b97, 0x1ba9, 0x1bcd, 0x1bf9, 0x1c1c, + 0x1c44, 0x1c55, 0x1c64, 0x1c74, 0x1c9a, 0x1cc6, 0x1ce9, 0x1d3a, + 0x1d8c, 0x1dcb, 0x1df5, 0x1e03, 0x1e0f, 0x1e36, 0x1e7e, 0x1ec0, + 0x1ef0, 0x1efb, 0x1f2a, 0x1f7c, 0x1fb7, 0x1fec, 0x201e, 0x202a, + 0x2055, 0x209c, 0x20df, 0x2115, 0x2148, 0x2190, 0x21a6, 0xffff, + // Entry 2B440 - 2B47F + 0x21b3, 0x21c2, 0x21df, 0x2216, 0x2248, 0x226c, 0x227d, 0x2294, + 0x22a9, 0x22bd, 0x22cc, 0x22d8, 0x22f2, 0x2318, 0x232c, 0x234b, + 0x2379, 0x2398, 0x23ca, 0x23eb, 0x242f, 0x246b, 0x2493, 0x24b5, + 0x24f5, 0x2521, 0x252e, 0x253f, 0x2563, 0x25a0, 0x1865, 0xffff, + 0x0bd7, 0x0cdd, 0x0098, 0x0040, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0c81, 0x0cbd, 0x0d27, 0x0d7d, 0x0dea, 0x0e42, 0x0ea8, 0x0ef1, + 0xffff, 0x0f28, 0x0f69, 0x0fb6, 0x0ff9, 0x1033, 0x1080, 0x10e3, + 0x1138, 0x1185, 0x11d7, 0x1215, 0x1252, 0xffff, 0xffff, 0x12b0, + // Entry 2B480 - 2B4BF + 0xffff, 0x12f9, 0xffff, 0x1340, 0x137c, 0x13bb, 0x13fa, 0xffff, + 0xffff, 0x146b, 0x14af, 0x14ed, 0xffff, 0xffff, 0xffff, 0x1565, + 0xffff, 0x15cc, 0x161b, 0xffff, 0x1668, 0x16b6, 0x16f4, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1793, 0xffff, 0xffff, 0x1804, 0x184b, + 0xffff, 0xffff, 0x18b8, 0x18f9, 0x192b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x19d8, 0x1a0f, 0x1a4b, 0x1a88, 0x1ac8, + 0xffff, 0xffff, 0x1b31, 0xffff, 0x1b7f, 0xffff, 0xffff, 0x1be3, + 0xffff, 0x1c30, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cb0, 0xffff, + // Entry 2B4C0 - 2B4FF + 0x1d05, 0x1d5a, 0x1da4, 0x1de0, 0xffff, 0xffff, 0xffff, 0x1e51, + 0x1e96, 0x1ed8, 0xffff, 0xffff, 0x1f4a, 0x1f94, 0x1fc8, 0x2005, + 0xffff, 0xffff, 0x2070, 0x20b3, 0x20fa, 0xffff, 0x216c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x21f4, 0x2229, 0x225a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2305, 0xffff, + 0xffff, 0x2362, 0xffff, 0x23b1, 0xffff, 0x2404, 0x2446, 0x247f, + 0xffff, 0x24cd, 0x250b, 0xffff, 0xffff, 0xffff, 0x2577, 0x25bb, + 0xffff, 0xffff, 0x0be8, 0x0cf0, 0x0002, 0x0003, 0x00d1, 0x0008, + // Entry 2B500 - 2B53F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, + 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, + 0x2372, 0x2376, 0x237a, 0x22d4, 0x222e, 0x237e, 0x2382, 0x22e0, + // Entry 2B540 - 2B57F + 0x21e2, 0x000d, 0x0041, 0xffff, 0x0000, 0x000a, 0x0014, 0x001b, + 0x0021, 0x0027, 0x002d, 0x0035, 0x003d, 0x0048, 0x0051, 0x0059, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, + 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, + 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0032, 0x012a, 0x2705, 0x2709, 0x270d, 0x2711, + 0x2715, 0x2719, 0x0007, 0x0041, 0x0061, 0x006a, 0x0071, 0x007b, + 0x0085, 0x008d, 0x0098, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + // Entry 2B580 - 2B5BF + 0x298e, 0x24f9, 0x2994, 0x2994, 0x2994, 0x2994, 0x2994, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0041, 0xffff, + 0x00a3, 0x00a8, 0x00ad, 0x00b2, 0x0005, 0x0041, 0xffff, 0x00b7, + 0x00c1, 0x00cb, 0x00d5, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, + 0x00a5, 0x0002, 0x0041, 0x00df, 0x00f4, 0x0001, 0x00ab, 0x0002, + 0x0009, 0x0078, 0x5463, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00ce, 0x00c8, 0x00c5, + // Entry 2B5C0 - 2B5FF + 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, + 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, + 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2B600 - 2B63F + 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, + 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, 0x0114, + 0x0001, 0x0041, 0x0109, 0x0001, 0x0119, 0x0001, 0x0005, 0x0787, + 0x0001, 0x011e, 0x0001, 0x0041, 0x0111, 0x0001, 0x0123, 0x0001, + 0x0041, 0x0061, 0x0002, 0x0129, 0x012c, 0x0001, 0x0041, 0x0117, + 0x0003, 0x0041, 0x011e, 0x0124, 0x012d, 0x0001, 0x0133, 0x0001, + 0x0041, 0x0132, 0x0001, 0x0138, 0x0001, 0x0007, 0x07cc, 0x0001, + 0x013d, 0x0001, 0x0041, 0x014b, 0x0001, 0x0142, 0x0001, 0x0041, + // Entry 2B640 - 2B67F + 0x0151, 0x0001, 0x0147, 0x0001, 0x0041, 0x0159, 0x0001, 0x014c, + 0x0001, 0x0041, 0x0163, 0x0002, 0x0003, 0x007b, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0024, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + 0x001b, 0x0018, 0x001e, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, + 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, 0x0012, 0x0203, 0x0007, + 0x002c, 0x0041, 0x0000, 0x0000, 0x0000, 0x0059, 0x006a, 0x0001, + 0x002e, 0x0003, 0x0000, 0x0000, 0x0032, 0x000d, 0x0041, 0xffff, + // Entry 2B680 - 2B6BF + 0x016e, 0x017f, 0x0193, 0x01aa, 0x01bb, 0x01cf, 0x01e7, 0x01fb, + 0x020b, 0x021e, 0x0235, 0x0243, 0x0001, 0x0043, 0x0003, 0x0000, + 0x0047, 0x0050, 0x0007, 0x0000, 0x2980, 0x2159, 0x297e, 0x23db, + 0x2992, 0x22db, 0x2990, 0x0007, 0x0041, 0x0257, 0x0268, 0x0278, + 0x0287, 0x0295, 0x02a2, 0x02b2, 0x0004, 0x0067, 0x0061, 0x005e, + 0x0064, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, 0x0001, + 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x0078, 0x0072, + 0x006f, 0x0075, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + // Entry 2B6C0 - 2B6FF + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x0000, + 0x0000, 0x0000, 0x00b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00ce, 0x0000, 0x0000, 0x00e3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00f8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, + 0x011a, 0x0000, 0x0000, 0x0122, 0x0000, 0x0000, 0x012a, 0x0000, + 0x0000, 0x0132, 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x0142, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, + // Entry 2B700 - 2B73F + 0x015a, 0x0000, 0x0000, 0x016a, 0x0003, 0x00bd, 0x00c0, 0x00c5, + 0x0001, 0x0041, 0x02c4, 0x0003, 0x0041, 0x02cd, 0x02e5, 0x02f7, + 0x0002, 0x00c8, 0x00cb, 0x0001, 0x0041, 0x0314, 0x0001, 0x0041, + 0x0337, 0x0003, 0x00d2, 0x00d5, 0x00da, 0x0001, 0x0041, 0x035a, + 0x0003, 0x0041, 0x035e, 0x0371, 0x037e, 0x0002, 0x00dd, 0x00e0, + 0x0001, 0x0041, 0x0396, 0x0001, 0x0041, 0x03ba, 0x0003, 0x00e7, + 0x00ea, 0x00ef, 0x0001, 0x0041, 0x03de, 0x0003, 0x0041, 0x03e3, + 0x03f7, 0x0405, 0x0002, 0x00f2, 0x00f5, 0x0001, 0x0041, 0x041e, + // Entry 2B740 - 2B77F + 0x0001, 0x0041, 0x043d, 0x0003, 0x00fc, 0x00ff, 0x0104, 0x0001, + 0x0041, 0x045c, 0x0003, 0x0041, 0x0465, 0x0471, 0x0483, 0x0002, + 0x0107, 0x010a, 0x0001, 0x0041, 0x0499, 0x0001, 0x0041, 0x04bb, + 0x0001, 0x010f, 0x0001, 0x0041, 0x04de, 0x0002, 0x0000, 0x0115, + 0x0003, 0x0041, 0x04ec, 0x050d, 0x0528, 0x0002, 0x0000, 0x011d, + 0x0003, 0x0041, 0x0544, 0x0564, 0x057e, 0x0002, 0x0000, 0x0125, + 0x0003, 0x0041, 0x0599, 0x05b7, 0x05cf, 0x0002, 0x0000, 0x012d, + 0x0003, 0x0041, 0x05e8, 0x0605, 0x061c, 0x0002, 0x0000, 0x0135, + // Entry 2B780 - 2B7BF + 0x0003, 0x0041, 0x0634, 0x0650, 0x0666, 0x0002, 0x0000, 0x013d, + 0x0003, 0x0041, 0x067d, 0x069e, 0x06b5, 0x0002, 0x0000, 0x0145, + 0x0003, 0x0041, 0x06cf, 0x06f1, 0x070d, 0x0003, 0x014e, 0x0000, + 0x0151, 0x0001, 0x0041, 0x072a, 0x0002, 0x0154, 0x0157, 0x0001, + 0x0041, 0x0733, 0x0001, 0x0041, 0x0756, 0x0003, 0x015e, 0x0000, + 0x0161, 0x0001, 0x0041, 0x0779, 0x0002, 0x0164, 0x0167, 0x0001, + 0x0041, 0x0790, 0x0001, 0x0041, 0x07b9, 0x0003, 0x016e, 0x0000, + 0x0171, 0x0001, 0x0041, 0x07e3, 0x0002, 0x0174, 0x0177, 0x0001, + // Entry 2B7C0 - 2B7FF + 0x0041, 0x07e9, 0x0001, 0x0041, 0x0809, 0x0003, 0x0004, 0x00ea, + 0x0168, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x0030, 0x0067, 0x008c, + 0x00a0, 0x00b8, 0x00c8, 0x00d9, 0x0000, 0x0002, 0x0033, 0x0055, + 0x0003, 0x0037, 0x0000, 0x0046, 0x000d, 0x0007, 0xffff, 0x0035, + // Entry 2B800 - 2B83F + 0x238e, 0x2392, 0x2396, 0x239a, 0x239e, 0x23a2, 0x23a6, 0x23aa, + 0x23ae, 0x23b3, 0x23b7, 0x000d, 0x0041, 0xffff, 0x082a, 0x083b, + 0x084f, 0x0863, 0x0875, 0x0889, 0x089d, 0x08af, 0x08c1, 0x08d2, + 0x08e3, 0x0902, 0x0002, 0x0000, 0x0058, 0x000d, 0x0000, 0xffff, + 0x2333, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x2333, 0x2333, 0x1f9c, + 0x2002, 0x2a51, 0x1f96, 0x2008, 0x0002, 0x006a, 0x0080, 0x0003, + 0x006e, 0x0000, 0x0077, 0x0007, 0x0041, 0x091f, 0x0923, 0x0927, + 0x092b, 0x092f, 0x0933, 0x0937, 0x0007, 0x0041, 0x093b, 0x0942, + // Entry 2B840 - 2B87F + 0x0955, 0x096b, 0x0981, 0x0995, 0x09aa, 0x0002, 0x0000, 0x0083, + 0x0007, 0x0000, 0x22e1, 0x2333, 0x1f9a, 0x1f9a, 0x1f9a, 0x1f9a, + 0x21ec, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, 0x0099, 0x0005, + 0x0041, 0xffff, 0x09b4, 0x09b8, 0x09bc, 0x09c0, 0x0005, 0x0041, + 0xffff, 0x09c4, 0x09de, 0x09fb, 0x0a18, 0x0001, 0x00a2, 0x0003, + 0x00a6, 0x0000, 0x00af, 0x0002, 0x00a9, 0x00ac, 0x0001, 0x0041, + 0x0a33, 0x0001, 0x0041, 0x0a40, 0x0002, 0x00b2, 0x00b5, 0x0001, + 0x0041, 0x0a33, 0x0001, 0x0041, 0x0a40, 0x0003, 0x00c2, 0x0000, + // Entry 2B880 - 2B8BF + 0x00bc, 0x0001, 0x00be, 0x0002, 0x0041, 0x0a48, 0x0a5d, 0x0001, + 0x00c4, 0x0002, 0x0041, 0x0a72, 0x0a7d, 0x0004, 0x00d6, 0x00d0, + 0x00cd, 0x00d3, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e7, + 0x00e1, 0x00de, 0x00e4, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012b, 0x0000, 0x0000, 0x0130, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0135, 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x0000, + // Entry 2B8C0 - 2B8FF + 0x0000, 0x0000, 0x013f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x014a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x014f, 0x0000, 0x0154, 0x0000, + 0x0000, 0x0159, 0x0000, 0x0000, 0x015e, 0x0000, 0x0000, 0x0163, + 0x0001, 0x012d, 0x0001, 0x0041, 0x0a88, 0x0001, 0x0132, 0x0001, + 0x0041, 0x0a90, 0x0001, 0x0137, 0x0001, 0x0041, 0x0a96, 0x0001, + // Entry 2B900 - 2B93F + 0x013c, 0x0001, 0x0041, 0x0a9e, 0x0002, 0x0142, 0x0145, 0x0001, + 0x0041, 0x0aa7, 0x0003, 0x0041, 0x0ab0, 0x0abe, 0x0ac7, 0x0001, + 0x014c, 0x0001, 0x0041, 0x0ad4, 0x0001, 0x0151, 0x0001, 0x0041, + 0x0ae9, 0x0001, 0x0156, 0x0001, 0x0041, 0x0afb, 0x0001, 0x015b, + 0x0001, 0x0041, 0x0b02, 0x0001, 0x0160, 0x0001, 0x0041, 0x0b0a, + 0x0001, 0x0165, 0x0001, 0x0041, 0x0b17, 0x0004, 0x0000, 0x016d, + 0x0000, 0x0170, 0x0001, 0x0041, 0x0b29, 0x0002, 0x0000, 0x0173, + 0x0003, 0x0000, 0x0000, 0x0177, 0x007c, 0x0041, 0xffff, 0x0b37, + // Entry 2B940 - 2B97F + 0x0b4d, 0x0b6c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b87, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2B980 - 2B9BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0b9a, 0x0003, 0x0004, 0x06f9, 0x0a89, 0x0012, 0x0017, + // Entry 2B9C0 - 2B9FF + 0x0024, 0x0115, 0x0000, 0x0182, 0x0000, 0x01ef, 0x021a, 0x0432, + 0x048a, 0x04fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0582, 0x067a, + 0x06ec, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, + 0x001f, 0x0001, 0x0021, 0x0001, 0x0041, 0x0bad, 0x000a, 0x002f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0000, 0x0000, 0x0000, + 0x0094, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, 0x0054, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, + // Entry 2BA00 - 2BA3F + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0003, 0x0067, 0x0076, + 0x0085, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, + // Entry 2BA40 - 2BA7F + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0006, 0x009b, + 0x0000, 0x0000, 0x0000, 0x00ae, 0x00f1, 0x0001, 0x009d, 0x0001, + 0x009f, 0x000d, 0x0041, 0xffff, 0x0bb6, 0x0bbd, 0x0bc4, 0x0bce, + 0x0bdb, 0x0be8, 0x0bf2, 0x0bf9, 0x0c06, 0x0c16, 0x0c1d, 0x0c27, + 0x0001, 0x00b0, 0x0001, 0x00b2, 0x003d, 0x0041, 0xffff, 0x0c2e, + 0x0c3f, 0x0c4d, 0x0c61, 0x0c78, 0x0c8c, 0x0c9a, 0x0cab, 0x0cc2, + 0x0cd6, 0x0ce7, 0x0cf5, 0x0d03, 0x0d14, 0x0d25, 0x0d36, 0x0d4a, + // Entry 2BA80 - 2BABF + 0x0d5e, 0x0d6f, 0x0d80, 0x0d97, 0x0dab, 0x0db9, 0x0dca, 0x0ddb, + 0x0de9, 0x0df7, 0x0e0b, 0x0e22, 0x0e3b, 0x0e4c, 0x0e5a, 0x0e6e, + 0x0e82, 0x0e93, 0x0ea1, 0x0eaf, 0x0ec0, 0x0ed1, 0x0ee5, 0x0efc, + 0x0f0d, 0x0f1b, 0x0f2c, 0x0f43, 0x0f54, 0x0f62, 0x0f73, 0x0f84, + 0x0f95, 0x0fa6, 0x0fba, 0x0fce, 0x0fe7, 0x0ff8, 0x1006, 0x101a, + 0x102e, 0x103f, 0x1050, 0x0001, 0x00f3, 0x0001, 0x00f5, 0x000d, + 0x0041, 0xffff, 0x1066, 0x106d, 0x1080, 0x108d, 0x10a0, 0x10b3, + 0x10ba, 0x10c4, 0x10ce, 0x10d8, 0x10eb, 0x10f2, 0x0004, 0x0112, + // Entry 2BAC0 - 2BAFF + 0x010c, 0x0109, 0x010f, 0x0001, 0x0032, 0x00df, 0x0001, 0x0032, + 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, + 0x0117, 0x0002, 0x011a, 0x014e, 0x0003, 0x011e, 0x012e, 0x013e, + 0x000e, 0x0041, 0xffff, 0x10f9, 0x1106, 0x1113, 0x1120, 0x112a, + 0x1137, 0x1147, 0x115d, 0x1176, 0x1189, 0x119c, 0x11ac, 0x11bc, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, + 0x000e, 0x0041, 0xffff, 0x10f9, 0x1106, 0x1113, 0x1120, 0x112a, + // Entry 2BB00 - 2BB3F + 0x11cc, 0x1147, 0x115d, 0x1176, 0x1189, 0x119c, 0x11ac, 0x11dc, + 0x0003, 0x0152, 0x0162, 0x0172, 0x000e, 0x0041, 0xffff, 0x10f9, + 0x1106, 0x1113, 0x1120, 0x112a, 0x1137, 0x1147, 0x115d, 0x1176, + 0x1189, 0x119c, 0x11ac, 0x11dc, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0041, 0xffff, 0x10f9, + 0x1106, 0x1113, 0x1120, 0x112a, 0x1137, 0x1147, 0x115d, 0x1176, + 0x1189, 0x119c, 0x11ac, 0x11dc, 0x0001, 0x0184, 0x0002, 0x0187, + // Entry 2BB40 - 2BB7F + 0x01bb, 0x0003, 0x018b, 0x019b, 0x01ab, 0x000e, 0x0041, 0xffff, + 0x11ec, 0x1208, 0x1218, 0x1225, 0x1235, 0x123f, 0x1255, 0x126b, + 0x127e, 0x1291, 0x129e, 0x12ab, 0x12be, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0041, 0xffff, + 0x11ec, 0x1208, 0x1218, 0x1225, 0x1235, 0x123f, 0x1255, 0x126b, + 0x127e, 0x1291, 0x129e, 0x12ab, 0x12be, 0x0003, 0x01bf, 0x01cf, + 0x01df, 0x000e, 0x0041, 0xffff, 0x11ec, 0x1208, 0x1218, 0x1225, + // Entry 2BB80 - 2BBBF + 0x1235, 0x123f, 0x1255, 0x126b, 0x127e, 0x1291, 0x129e, 0x12ab, + 0x12be, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x0422, 0x000e, 0x0041, 0xffff, 0x11ec, 0x1208, 0x1218, 0x1225, + 0x1235, 0x123f, 0x1255, 0x126b, 0x127e, 0x1291, 0x129e, 0x12ab, + 0x12be, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f8, + 0x0000, 0x0209, 0x0004, 0x0206, 0x0200, 0x01fd, 0x0203, 0x0001, + 0x0041, 0x12d4, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + // Entry 2BBC0 - 2BBFF + 0x0001, 0x0000, 0x236f, 0x0004, 0x0217, 0x0211, 0x020e, 0x0214, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0223, 0x0288, 0x02df, + 0x0314, 0x03e5, 0x03ff, 0x0410, 0x0421, 0x0002, 0x0226, 0x0257, + 0x0003, 0x022a, 0x0239, 0x0248, 0x000d, 0x0041, 0xffff, 0x12ea, + 0x12f3, 0x12fc, 0x1305, 0x130e, 0x1317, 0x1323, 0x132c, 0x1335, + 0x133e, 0x1347, 0x1350, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + // Entry 2BC00 - 2BC3F + 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, 0x10a0, 0x1359, 0x1369, + 0x1376, 0x1383, 0x1399, 0x13ac, 0x13c2, 0x13d2, 0x13e2, 0x13ef, + 0x13ff, 0x0003, 0x025b, 0x026a, 0x0279, 0x000d, 0x0041, 0xffff, + 0x12ea, 0x12f3, 0x12fc, 0x1305, 0x130e, 0x1317, 0x1323, 0x132c, + 0x1335, 0x133e, 0x1347, 0x1350, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, 0x10a0, 0x1359, + 0x1369, 0x1376, 0x1383, 0x1399, 0x13ac, 0x13c2, 0x13d2, 0x13e2, + // Entry 2BC40 - 2BC7F + 0x13ef, 0x13ff, 0x0002, 0x028b, 0x02b5, 0x0005, 0x0291, 0x029a, + 0x02ac, 0x0000, 0x02a3, 0x0007, 0x0041, 0x140f, 0x141f, 0x1429, + 0x143c, 0x1446, 0x1456, 0x1460, 0x0007, 0x0041, 0x146d, 0x1474, + 0x1478, 0x147c, 0x1480, 0x1487, 0x148e, 0x0007, 0x0041, 0x1492, + 0x149a, 0x149f, 0x14a4, 0x14a9, 0x14b1, 0x14b9, 0x0007, 0x0041, + 0x14be, 0x14d7, 0x14ea, 0x1506, 0x1519, 0x1532, 0x1545, 0x0005, + 0x02bb, 0x02c4, 0x02d6, 0x0000, 0x02cd, 0x0007, 0x0041, 0x140f, + 0x141f, 0x1429, 0x143c, 0x1446, 0x1456, 0x1460, 0x0007, 0x0041, + // Entry 2BC80 - 2BCBF + 0x146d, 0x1474, 0x1478, 0x147c, 0x1480, 0x1487, 0x148e, 0x0007, + 0x0041, 0x1492, 0x149a, 0x149f, 0x14a4, 0x14a9, 0x14b1, 0x14b9, + 0x0007, 0x0041, 0x14be, 0x14d7, 0x14ea, 0x1506, 0x1519, 0x1532, + 0x1545, 0x0002, 0x02e2, 0x02fb, 0x0003, 0x02e6, 0x02ed, 0x02f4, + 0x0005, 0x0041, 0xffff, 0x155b, 0x1563, 0x156b, 0x1573, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0041, + 0xffff, 0x157b, 0x1590, 0x15a5, 0x15ba, 0x0003, 0x02ff, 0x0306, + 0x030d, 0x0005, 0x0041, 0xffff, 0x15cf, 0x15d4, 0x15d9, 0x15de, + // Entry 2BCC0 - 2BCFF + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0041, 0xffff, 0x157b, 0x1590, 0x15a5, 0x15ba, 0x0002, 0x0317, + 0x037e, 0x0003, 0x031b, 0x033c, 0x035d, 0x0008, 0x0327, 0x032d, + 0x0324, 0x0330, 0x0333, 0x0336, 0x0339, 0x032a, 0x0001, 0x0041, + 0x15e3, 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, 0x1612, 0x0001, + 0x0041, 0x1628, 0x0001, 0x0041, 0x1641, 0x0001, 0x0041, 0x165a, + 0x0001, 0x0041, 0x1670, 0x0001, 0x0041, 0x1683, 0x0008, 0x0348, + 0x034e, 0x0345, 0x0351, 0x0354, 0x0357, 0x035a, 0x034b, 0x0001, + // Entry 2BD00 - 2BD3F + 0x0041, 0x1696, 0x0001, 0x0041, 0x169d, 0x0001, 0x0041, 0x16a4, + 0x0001, 0x0041, 0x16a8, 0x0001, 0x0041, 0x1641, 0x0001, 0x0041, + 0x1612, 0x0001, 0x0041, 0x1670, 0x0001, 0x0041, 0x16b2, 0x0008, + 0x0369, 0x036f, 0x0366, 0x0372, 0x0375, 0x0378, 0x037b, 0x036c, + 0x0001, 0x0041, 0x15e3, 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, + 0x1612, 0x0001, 0x0041, 0x1628, 0x0001, 0x0041, 0x1641, 0x0001, + 0x0041, 0x165a, 0x0001, 0x0041, 0x1670, 0x0001, 0x0041, 0x16c6, + 0x0003, 0x0382, 0x03a3, 0x03c4, 0x0008, 0x038e, 0x0394, 0x038b, + // Entry 2BD40 - 2BD7F + 0x0397, 0x039a, 0x039d, 0x03a0, 0x0391, 0x0001, 0x0041, 0x16e2, + 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, 0x16fb, 0x0001, 0x0041, + 0x1628, 0x0001, 0x0041, 0x1708, 0x0001, 0x0041, 0x171b, 0x0001, + 0x0041, 0x1725, 0x0001, 0x0041, 0x172f, 0x0008, 0x03af, 0x03b5, + 0x03ac, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x03b2, 0x0001, 0x0041, + 0x1696, 0x0001, 0x0041, 0x169d, 0x0001, 0x0041, 0x1612, 0x0001, + 0x0041, 0x16a8, 0x0001, 0x0041, 0x1748, 0x0001, 0x0041, 0x148e, + 0x0001, 0x0041, 0x174c, 0x0001, 0x0041, 0x1750, 0x0008, 0x03d0, + // Entry 2BD80 - 2BDBF + 0x03d6, 0x03cd, 0x03d9, 0x03dc, 0x03df, 0x03e2, 0x03d3, 0x0001, + 0x0041, 0x15e3, 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, 0x1612, + 0x0001, 0x0041, 0x1628, 0x0001, 0x0041, 0x1708, 0x0001, 0x0041, + 0x171b, 0x0001, 0x0041, 0x1725, 0x0001, 0x0041, 0x172f, 0x0003, + 0x03f4, 0x0000, 0x03e9, 0x0002, 0x03ec, 0x03f0, 0x0002, 0x0041, + 0x1757, 0x17bc, 0x0002, 0x0041, 0x1788, 0x17e1, 0x0002, 0x03f7, + 0x03fb, 0x0002, 0x0041, 0x1809, 0x183d, 0x0002, 0x0041, 0x181f, + 0x1846, 0x0004, 0x040d, 0x0407, 0x0404, 0x040a, 0x0001, 0x0041, + // Entry 2BDC0 - 2BDFF + 0x1858, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x01fb, 0x0004, 0x041e, 0x0418, 0x0415, 0x041b, 0x0001, + 0x0041, 0x186f, 0x0001, 0x0041, 0x18a5, 0x0001, 0x0005, 0x0099, + 0x0001, 0x0005, 0x00a1, 0x0004, 0x042f, 0x0429, 0x0426, 0x042c, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, 0x0438, 0x0000, 0x0000, + 0x0000, 0x0483, 0x0002, 0x043b, 0x045f, 0x0003, 0x043f, 0x0000, + 0x044f, 0x000e, 0x0041, 0x194a, 0x18d8, 0x18eb, 0x18fb, 0x190e, + // Entry 2BE00 - 2BE3F + 0x191e, 0x192e, 0x193d, 0x195a, 0x196d, 0x197d, 0x198d, 0x199a, + 0x19a4, 0x000e, 0x0041, 0x194a, 0x18d8, 0x18eb, 0x18fb, 0x190e, + 0x191e, 0x192e, 0x193d, 0x195a, 0x196d, 0x197d, 0x198d, 0x199a, + 0x19a4, 0x0003, 0x0463, 0x0000, 0x0473, 0x000e, 0x0041, 0x194a, + 0x18d8, 0x18eb, 0x18fb, 0x190e, 0x191e, 0x192e, 0x193d, 0x195a, + 0x196d, 0x197d, 0x198d, 0x199a, 0x19a4, 0x000e, 0x0041, 0x194a, + 0x18d8, 0x18eb, 0x18fb, 0x190e, 0x191e, 0x192e, 0x193d, 0x195a, + 0x196d, 0x197d, 0x198d, 0x199a, 0x19a4, 0x0001, 0x0485, 0x0001, + // Entry 2BE40 - 2BE7F + 0x0487, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0490, 0x0000, 0x0000, + 0x0000, 0x04f5, 0x0002, 0x0493, 0x04c4, 0x0003, 0x0497, 0x04a6, + 0x04b5, 0x000d, 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, 0x19e4, + 0x19f4, 0x1a0d, 0x1a1d, 0x1a33, 0x1a49, 0x1a6b, 0x1a78, 0x1a85, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, + 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, 0x19e4, 0x19f4, 0x1a0d, + 0x1a1d, 0x1a33, 0x1a49, 0x1a9b, 0x1a78, 0x1a85, 0x0003, 0x04c8, + // Entry 2BE80 - 2BEBF + 0x04d7, 0x04e6, 0x000d, 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, + 0x19e4, 0x19f4, 0x1a0d, 0x1a1d, 0x1a33, 0x1a49, 0x1a9b, 0x1a78, + 0x1a85, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x000d, 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, 0x19e4, 0x19f4, + 0x1a0d, 0x1a1d, 0x1a33, 0x1a49, 0x1a9b, 0x1a78, 0x1a85, 0x0001, + 0x04f7, 0x0001, 0x04f9, 0x0001, 0x0041, 0x1305, 0x0008, 0x0505, + 0x0000, 0x0000, 0x0000, 0x056a, 0x0571, 0x0000, 0x9006, 0x0002, + // Entry 2BEC0 - 2BEFF + 0x0508, 0x0539, 0x0003, 0x050c, 0x051b, 0x052a, 0x000d, 0x0041, + 0xffff, 0x1aae, 0x1abe, 0x1acb, 0x1add, 0x1aef, 0x1afe, 0x1b0d, + 0x1b1a, 0x1b27, 0x1b3a, 0x1b47, 0x1b5d, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, 0x1b70, + 0x1b86, 0x1acb, 0x1b96, 0x1ba8, 0x1bbd, 0x1bd2, 0x1be2, 0x1bf2, + 0x1c08, 0x1c1e, 0x1c3a, 0x0003, 0x053d, 0x054c, 0x055b, 0x000d, + 0x0041, 0xffff, 0x1aae, 0x1abe, 0x1c56, 0x1add, 0x1aef, 0x1afe, + // Entry 2BF00 - 2BF3F + 0x1b0d, 0x1c68, 0x1b27, 0x1b3a, 0x1b47, 0x1b5d, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, + 0x1b70, 0x1b86, 0x1acb, 0x1b96, 0x1ba8, 0x1bbd, 0x1bd2, 0x1be2, + 0x1bf2, 0x1c08, 0x1c1e, 0x1c3a, 0x0001, 0x056c, 0x0001, 0x056e, + 0x0001, 0x0000, 0x06c8, 0x0004, 0x057f, 0x0579, 0x0576, 0x057c, + 0x0001, 0x0002, 0x043a, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, + 0x0514, 0x0001, 0x0000, 0x051c, 0x0005, 0x0000, 0x0000, 0x0000, + // Entry 2BF40 - 2BF7F + 0x0000, 0x0588, 0x0001, 0x058a, 0x0001, 0x058c, 0x00ec, 0x0041, + 0x1c6f, 0x1c8e, 0x1cad, 0x1ccc, 0x1ce5, 0x1d04, 0x1d20, 0x1d39, + 0x1d58, 0x1d71, 0x1d8d, 0x1daf, 0x1de1, 0x1e10, 0x1e3f, 0x1e74, + 0x1ea3, 0x1ebc, 0x1edc, 0x1f04, 0x1f23, 0x1f3f, 0x1f5e, 0x1f77, + 0x1f90, 0x1fac, 0x1fce, 0x1ff0, 0x200c, 0x202b, 0x2047, 0x2066, + 0x2085, 0x20a4, 0x20c3, 0x20dc, 0x20fe, 0x2126, 0x214e, 0x2167, + 0x2180, 0x2199, 0x21c1, 0x21e7, 0x2206, 0x222b, 0x2247, 0x2263, + 0x2283, 0x229c, 0x22be, 0x22e0, 0x22fa, 0x2318, 0x2336, 0x2357, + // Entry 2BF80 - 2BFBF + 0x2375, 0x2393, 0x23b4, 0x23db, 0x23f9, 0x2420, 0x243e, 0x245f, + 0x247a, 0x24a1, 0x24c5, 0x24e3, 0x250d, 0x252b, 0x254f, 0x256d, + 0x2588, 0x25a9, 0x25d0, 0x25ee, 0x260c, 0x262a, 0x264e, 0x2670, + 0x268e, 0x26b0, 0x26d1, 0x26f2, 0x2713, 0x2737, 0x2758, 0x2779, + 0x2794, 0x27b2, 0x27d6, 0x27f7, 0x2815, 0x2833, 0x2854, 0x286f, + 0x2896, 0x28b1, 0x28d2, 0x28f0, 0x2912, 0x292d, 0x294e, 0x2972, + 0x2990, 0x29ae, 0x29cc, 0x29f9, 0x2a17, 0x2a3b, 0x2a56, 0x2a7a, + 0x2a9e, 0x2ac3, 0x2ae7, 0x2b14, 0x2b38, 0x2b59, 0x2b7a, 0x2b9e, + // Entry 2BFC0 - 2BFFF + 0x2bbf, 0x2be0, 0x2bfe, 0x2c1f, 0x2c46, 0x2c70, 0x2c8e, 0x2cb8, + 0x2cda, 0x2cf8, 0x2d19, 0x2d34, 0x2d52, 0x2d70, 0x2d8b, 0x2da9, + 0x2dc8, 0x2de3, 0x2e02, 0x2e20, 0x2e3b, 0x2e50, 0x2e71, 0x2e8c, + 0x2ead, 0x2ecb, 0x2eec, 0x2f0a, 0x2f25, 0x2f40, 0x2f5e, 0x2f79, + 0x2f9a, 0x2fb5, 0x2fd6, 0x2ffa, 0x3018, 0x3039, 0x3060, 0x3081, + 0x309c, 0x30c0, 0x30de, 0x30ff, 0x3120, 0x313b, 0x315c, 0x317d, + 0x3198, 0x31ad, 0x31ce, 0x31e9, 0x3204, 0x3222, 0x3243, 0x3265, + 0x3286, 0x32aa, 0x32c5, 0x32e6, 0x3304, 0x3322, 0x3340, 0x335e, + // Entry 2C000 - 2C03F + 0x337c, 0x33a3, 0x33be, 0x33dc, 0x33f7, 0x3412, 0x3436, 0x345a, + 0x3475, 0x3496, 0x34b7, 0x34d8, 0x34fc, 0x3517, 0x3538, 0x3557, + 0x3572, 0x358a, 0x359f, 0x35c3, 0x35e1, 0x3602, 0x3623, 0x3644, + 0x3662, 0x3689, 0x36a4, 0x36c5, 0x36e3, 0x3707, 0x3725, 0x3749, + 0x376b, 0x378c, 0x37aa, 0x37cc, 0x37ed, 0x380b, 0x3829, 0x3847, + 0x3865, 0x3886, 0x38a1, 0x38bc, 0x38dd, 0x3905, 0x3923, 0x3941, + 0x395c, 0x3969, 0x3976, 0x3983, 0x0005, 0x0680, 0x0000, 0x0000, + 0x0000, 0x06e5, 0x0002, 0x0683, 0x06b4, 0x0003, 0x0687, 0x0696, + // Entry 2C040 - 2C07F + 0x06a5, 0x000d, 0x0042, 0xffff, 0x0000, 0x0019, 0x003b, 0x004e, + 0x0058, 0x006b, 0x0081, 0x008b, 0x009b, 0x00a8, 0x00b2, 0x00c5, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, + 0x0042, 0xffff, 0x00d8, 0x0019, 0x003b, 0x004e, 0x0058, 0x006b, + 0x0081, 0x008b, 0x00f1, 0x00a8, 0x0101, 0x00c5, 0x0003, 0x06b8, + 0x06c7, 0x06d6, 0x000d, 0x0042, 0xffff, 0x00d8, 0x0114, 0x003b, + 0x004e, 0x0058, 0x0136, 0x0081, 0x008b, 0x009b, 0x00a8, 0x00b2, + // Entry 2C080 - 2C0BF + 0x00c5, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x000d, 0x0042, 0xffff, 0x00d8, 0x0019, 0x003b, 0x004e, 0x0058, + 0x006b, 0x0081, 0x008b, 0x00f1, 0x00a8, 0x0101, 0x00c5, 0x0001, + 0x06e7, 0x0001, 0x06e9, 0x0001, 0x0042, 0x014c, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x06f2, 0x0001, 0x06f4, 0x0001, 0x06f6, + 0x0001, 0x0042, 0x0165, 0x0040, 0x073a, 0x0000, 0x0000, 0x073f, + 0x0754, 0x0764, 0x0774, 0x0789, 0x0799, 0x07a9, 0x07be, 0x07ce, + // Entry 2C0C0 - 2C0FF + 0x07de, 0x07f7, 0x080b, 0x0000, 0x0000, 0x0000, 0x081f, 0x0836, + 0x084d, 0x0000, 0x0000, 0x0000, 0x0864, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0869, 0x087b, 0x088d, 0x089f, 0x08b1, 0x08c3, + 0x08d5, 0x08e7, 0x08f9, 0x090b, 0x091d, 0x092f, 0x0941, 0x0953, + 0x0965, 0x0977, 0x0989, 0x099b, 0x09ad, 0x09bf, 0x09d1, 0x0000, + 0x09e3, 0x0000, 0x09e8, 0x09fc, 0x0a0c, 0x0a1c, 0x0a30, 0x0a40, + 0x0a50, 0x0a64, 0x0a74, 0x0a84, 0x0001, 0x073c, 0x0001, 0x0042, + 0x0179, 0x0003, 0x0743, 0x0746, 0x074b, 0x0001, 0x0042, 0x0186, + // Entry 2C100 - 2C13F + 0x0003, 0x0042, 0x018d, 0x019d, 0x01ad, 0x0002, 0x074e, 0x0751, + 0x0001, 0x0042, 0x01bd, 0x0001, 0x0042, 0x01d8, 0x0003, 0x0758, + 0x0000, 0x075b, 0x0001, 0x0042, 0x0186, 0x0002, 0x075e, 0x0761, + 0x0001, 0x0042, 0x01bd, 0x0001, 0x0042, 0x01d8, 0x0003, 0x0768, + 0x0000, 0x076b, 0x0001, 0x0042, 0x0186, 0x0002, 0x076e, 0x0771, + 0x0001, 0x0042, 0x01bd, 0x0001, 0x0042, 0x01d8, 0x0003, 0x0778, + 0x077b, 0x0780, 0x0001, 0x0042, 0x01ef, 0x0003, 0x0042, 0x0202, + 0x022a, 0x0246, 0x0002, 0x0783, 0x0786, 0x0001, 0x0042, 0x0262, + // Entry 2C140 - 2C17F + 0x0001, 0x0042, 0x0289, 0x0003, 0x078d, 0x0000, 0x0790, 0x0001, + 0x0042, 0x02ac, 0x0002, 0x0793, 0x0796, 0x0001, 0x0042, 0x02b4, + 0x0001, 0x0042, 0x02c7, 0x0003, 0x079d, 0x0000, 0x07a0, 0x0001, + 0x0042, 0x02ac, 0x0002, 0x07a3, 0x07a6, 0x0001, 0x0042, 0x02b4, + 0x0001, 0x0042, 0x02c7, 0x0003, 0x07ad, 0x07b0, 0x07b5, 0x0001, + 0x0042, 0x02e0, 0x0003, 0x0042, 0x02f0, 0x030c, 0x0325, 0x0002, + 0x07b8, 0x07bb, 0x0001, 0x0042, 0x033e, 0x0001, 0x0042, 0x0362, + 0x0003, 0x07c2, 0x0000, 0x07c5, 0x0001, 0x0042, 0x0382, 0x0002, + // Entry 2C180 - 2C1BF + 0x07c8, 0x07cb, 0x0001, 0x0042, 0x0387, 0x0001, 0x0042, 0x03a0, + 0x0003, 0x07d2, 0x0000, 0x07d5, 0x0001, 0x0042, 0x0382, 0x0002, + 0x07d8, 0x07db, 0x0001, 0x0042, 0x0387, 0x0001, 0x0042, 0x03a0, + 0x0004, 0x07e3, 0x07e6, 0x07eb, 0x07f4, 0x0001, 0x0041, 0x140f, + 0x0003, 0x0042, 0x03b6, 0x03d2, 0x03eb, 0x0002, 0x07ee, 0x07f1, + 0x0001, 0x0042, 0x0404, 0x0001, 0x0042, 0x0428, 0x0001, 0x0042, + 0x0448, 0x0004, 0x07fc, 0x0000, 0x07ff, 0x0808, 0x0001, 0x0041, + 0x149f, 0x0002, 0x0802, 0x0805, 0x0001, 0x0042, 0x0462, 0x0001, + // Entry 2C1C0 - 2C1FF + 0x0042, 0x047e, 0x0001, 0x0042, 0x0448, 0x0004, 0x0810, 0x0000, + 0x0813, 0x081c, 0x0001, 0x0041, 0x149f, 0x0002, 0x0816, 0x0819, + 0x0001, 0x0042, 0x0462, 0x0001, 0x0042, 0x047e, 0x0001, 0x0042, + 0x0448, 0x0003, 0x0823, 0x0826, 0x082d, 0x0001, 0x0042, 0x0497, + 0x0005, 0x0042, 0x04b7, 0x04ca, 0x04dd, 0x04a1, 0x04f3, 0x0002, + 0x0830, 0x0833, 0x0001, 0x0042, 0x0503, 0x0001, 0x0042, 0x0521, + 0x0003, 0x083a, 0x083d, 0x0844, 0x0001, 0x0042, 0x0497, 0x0005, + 0x0042, 0x04b7, 0x04ca, 0x04dd, 0x04a1, 0x04f3, 0x0002, 0x0847, + // Entry 2C200 - 2C23F + 0x084a, 0x0001, 0x0042, 0x0503, 0x0001, 0x0042, 0x0521, 0x0003, + 0x0851, 0x0854, 0x085b, 0x0001, 0x0042, 0x0497, 0x0005, 0x0042, + 0x04b7, 0x04ca, 0x04dd, 0x04a1, 0x04f3, 0x0002, 0x085e, 0x0861, + 0x0001, 0x0042, 0x0503, 0x0001, 0x0042, 0x0521, 0x0001, 0x0866, + 0x0001, 0x0042, 0x053b, 0x0003, 0x0000, 0x086d, 0x0872, 0x0003, + 0x0042, 0x055d, 0x0582, 0x05a4, 0x0002, 0x0875, 0x0878, 0x0001, + 0x0042, 0x05c6, 0x0001, 0x0042, 0x05ea, 0x0003, 0x0000, 0x087f, + 0x0884, 0x0003, 0x0042, 0x0613, 0x0632, 0x064e, 0x0002, 0x0887, + // Entry 2C240 - 2C27F + 0x088a, 0x0001, 0x0042, 0x05c6, 0x0001, 0x0042, 0x05ea, 0x0003, + 0x0000, 0x0891, 0x0896, 0x0003, 0x0042, 0x066a, 0x067f, 0x0691, + 0x0002, 0x0899, 0x089c, 0x0001, 0x0042, 0x05c6, 0x0001, 0x0042, + 0x05ea, 0x0003, 0x0000, 0x08a3, 0x08a8, 0x0003, 0x0042, 0x06a3, + 0x06c2, 0x06de, 0x0002, 0x08ab, 0x08ae, 0x0001, 0x0042, 0x06fa, + 0x0001, 0x0042, 0x0718, 0x0003, 0x0000, 0x08b5, 0x08ba, 0x0003, + 0x0042, 0x073b, 0x0751, 0x0764, 0x0002, 0x08bd, 0x08c0, 0x0001, + 0x0042, 0x06fa, 0x0001, 0x0042, 0x0718, 0x0003, 0x0000, 0x08c7, + // Entry 2C280 - 2C2BF + 0x08cc, 0x0003, 0x0042, 0x0777, 0x0789, 0x0798, 0x0002, 0x08cf, + 0x08d2, 0x0001, 0x0042, 0x06fa, 0x0001, 0x0042, 0x0718, 0x0003, + 0x0000, 0x08d9, 0x08de, 0x0003, 0x0042, 0x07a7, 0x07cf, 0x07f4, + 0x0002, 0x08e1, 0x08e4, 0x0001, 0x0042, 0x0819, 0x0001, 0x0042, + 0x0840, 0x0003, 0x0000, 0x08eb, 0x08f0, 0x0003, 0x0042, 0x086c, + 0x088b, 0x08a7, 0x0002, 0x08f3, 0x08f6, 0x0001, 0x0042, 0x0819, + 0x0001, 0x0042, 0x0840, 0x0003, 0x0000, 0x08fd, 0x0902, 0x0003, + 0x0042, 0x086c, 0x088b, 0x08a7, 0x0002, 0x0905, 0x0908, 0x0001, + // Entry 2C2C0 - 2C2FF + 0x0042, 0x0819, 0x0001, 0x0042, 0x0840, 0x0003, 0x0000, 0x090f, + 0x0914, 0x0003, 0x0042, 0x08c3, 0x08e2, 0x08fe, 0x0002, 0x0917, + 0x091a, 0x0001, 0x0042, 0x091a, 0x0001, 0x0042, 0x0938, 0x0003, + 0x0000, 0x0921, 0x0926, 0x0003, 0x0042, 0x095b, 0x0971, 0x0984, + 0x0002, 0x0929, 0x092c, 0x0001, 0x0042, 0x091a, 0x0001, 0x0042, + 0x0938, 0x0003, 0x0000, 0x0933, 0x0938, 0x0003, 0x0042, 0x0997, + 0x09ac, 0x09be, 0x0002, 0x093b, 0x093e, 0x0001, 0x0042, 0x091a, + 0x0001, 0x0042, 0x0938, 0x0003, 0x0000, 0x0945, 0x094a, 0x0003, + // Entry 2C300 - 2C33F + 0x0042, 0x09d0, 0x09f5, 0x0a17, 0x0002, 0x094d, 0x0950, 0x0001, + 0x0042, 0x0a39, 0x0001, 0x0042, 0x0a5d, 0x0003, 0x0000, 0x0957, + 0x095c, 0x0003, 0x0042, 0x0a86, 0x0aa2, 0x0abb, 0x0002, 0x095f, + 0x0962, 0x0001, 0x0042, 0x0a39, 0x0001, 0x0042, 0x0a5d, 0x0003, + 0x0000, 0x0969, 0x096e, 0x0003, 0x0042, 0x0ad4, 0x0ae9, 0x0afb, + 0x0002, 0x0971, 0x0974, 0x0001, 0x0042, 0x0a39, 0x0001, 0x0042, + 0x0a5d, 0x0003, 0x0000, 0x097b, 0x0980, 0x0003, 0x0042, 0x0b0d, + 0x0b2c, 0x0b48, 0x0002, 0x0983, 0x0986, 0x0001, 0x0042, 0x0b64, + // Entry 2C340 - 2C37F + 0x0001, 0x0042, 0x0b8b, 0x0003, 0x0000, 0x098d, 0x0992, 0x0003, + 0x0042, 0x0bae, 0x0bc4, 0x0bd7, 0x0002, 0x0995, 0x0998, 0x0001, + 0x0042, 0x0b64, 0x0001, 0x0042, 0x0b8b, 0x0003, 0x0000, 0x099f, + 0x09a4, 0x0003, 0x0042, 0x0bea, 0x0bff, 0x0c11, 0x0002, 0x09a7, + 0x09aa, 0x0001, 0x0042, 0x0b64, 0x0001, 0x0042, 0x0b8b, 0x0003, + 0x0000, 0x09b1, 0x09b6, 0x0003, 0x0042, 0x0c23, 0x0c45, 0x0c64, + 0x0002, 0x09b9, 0x09bc, 0x0001, 0x0042, 0x0c83, 0x0001, 0x0042, + 0x0ca4, 0x0003, 0x0000, 0x09c3, 0x09c8, 0x0003, 0x0042, 0x0cca, + // Entry 2C380 - 2C3BF + 0x0ce3, 0x0cf9, 0x0002, 0x09cb, 0x09ce, 0x0001, 0x0042, 0x0c83, + 0x0001, 0x0042, 0x0ca4, 0x0003, 0x0000, 0x09d5, 0x09da, 0x0003, + 0x0042, 0x0d0f, 0x0d21, 0x0d30, 0x0002, 0x09dd, 0x09e0, 0x0001, + 0x0042, 0x0c83, 0x0001, 0x0042, 0x0ca4, 0x0001, 0x09e5, 0x0001, + 0x0042, 0x0d3f, 0x0003, 0x09ec, 0x09ef, 0x09f3, 0x0001, 0x0042, + 0x0d71, 0x0002, 0x0042, 0xffff, 0x0d87, 0x0002, 0x09f6, 0x09f9, + 0x0001, 0x0042, 0x0da6, 0x0001, 0x0042, 0x0dd0, 0x0003, 0x0a00, + 0x0000, 0x0a03, 0x0001, 0x0042, 0x0df6, 0x0002, 0x0a06, 0x0a09, + // Entry 2C3C0 - 2C3FF + 0x0001, 0x0042, 0x0dfe, 0x0001, 0x0042, 0x0e1a, 0x0003, 0x0a10, + 0x0000, 0x0a13, 0x0001, 0x0042, 0x0df6, 0x0002, 0x0a16, 0x0a19, + 0x0001, 0x0042, 0x0dfe, 0x0001, 0x0042, 0x0e1a, 0x0003, 0x0a20, + 0x0a23, 0x0a27, 0x0001, 0x0042, 0x0e33, 0x0002, 0x0042, 0xffff, + 0x0e40, 0x0002, 0x0a2a, 0x0a2d, 0x0001, 0x0042, 0x0e56, 0x0001, + 0x0042, 0x0e79, 0x0003, 0x0a34, 0x0000, 0x0a37, 0x0001, 0x0042, + 0x0e96, 0x0002, 0x0a3a, 0x0a3d, 0x0001, 0x0042, 0x0e9e, 0x0001, + 0x0042, 0x0eb1, 0x0003, 0x0a44, 0x0000, 0x0a47, 0x0001, 0x0042, + // Entry 2C400 - 2C43F + 0x0e96, 0x0002, 0x0a4a, 0x0a4d, 0x0001, 0x0042, 0x0e9e, 0x0001, + 0x0042, 0x0eb1, 0x0003, 0x0a54, 0x0a57, 0x0a5b, 0x0001, 0x0042, + 0x0eca, 0x0002, 0x0042, 0xffff, 0x0edd, 0x0002, 0x0a5e, 0x0a61, + 0x0001, 0x0042, 0x0ef0, 0x0001, 0x0042, 0x0f17, 0x0003, 0x0a68, + 0x0000, 0x0a6b, 0x0001, 0x0042, 0x0f3a, 0x0002, 0x0a6e, 0x0a71, + 0x0001, 0x0042, 0x0f42, 0x0001, 0x0042, 0x0f55, 0x0003, 0x0a78, + 0x0000, 0x0a7b, 0x0001, 0x0042, 0x0f3a, 0x0002, 0x0a7e, 0x0a81, + 0x0001, 0x0042, 0x0f42, 0x0001, 0x0042, 0x0f55, 0x0001, 0x0a86, + // Entry 2C440 - 2C47F + 0x0001, 0x0042, 0x0f6e, 0x0004, 0x0a8e, 0x0a93, 0x0a98, 0x0aa3, + 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x2a11, 0x0003, 0x0042, 0x0f84, + 0x0f95, 0x0fbb, 0x0002, 0x0000, 0x0a9b, 0x0002, 0x0000, 0x0a9e, + 0x0003, 0x0042, 0xffff, 0x0fe4, 0x102d, 0x0002, 0x0000, 0x0aa6, + 0x0003, 0x0aaa, 0x0bea, 0x0b4a, 0x009e, 0x0042, 0xffff, 0xffff, + 0xffff, 0xffff, 0x120a, 0x1342, 0x1462, 0x152e, 0x159d, 0x1642, + 0x16e7, 0xffff, 0x177a, 0x1927, 0x19d8, 0x1abf, 0x1bf1, 0x1c87, + 0x1d3e, 0x1e3a, 0x1f9c, 0x20dd, 0x2221, 0x22db, 0x23aa, 0xffff, + // Entry 2C480 - 2C4BF + 0xffff, 0x24b2, 0xffff, 0x25d3, 0xffff, 0x26dd, 0x2788, 0x282a, + 0x28ae, 0xffff, 0xffff, 0x29d0, 0x2a6c, 0x2b4a, 0xffff, 0xffff, + 0xffff, 0x2c4f, 0xffff, 0x2d67, 0x2e3c, 0xffff, 0x2fb7, 0x30ce, + 0x31f7, 0xffff, 0xffff, 0xffff, 0xffff, 0x335f, 0xffff, 0xffff, + 0x3448, 0x3538, 0xffff, 0xffff, 0x367c, 0x373f, 0x37fc, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a3a, 0x3ae5, 0x3bb7, + 0x3c77, 0xffff, 0xffff, 0xffff, 0x3dea, 0xffff, 0x3eba, 0xffff, + 0xffff, 0x4031, 0xffff, 0x41cd, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2C4C0 - 2C4FF + 0x4327, 0xffff, 0x442a, 0x4535, 0x4619, 0x46cc, 0xffff, 0xffff, + 0xffff, 0x47ef, 0x48b2, 0x497e, 0xffff, 0xffff, 0x4aa0, 0x4bd0, + 0x4cd5, 0x4d92, 0xffff, 0xffff, 0x4eab, 0x4f77, 0x5022, 0xffff, + 0x512e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x53bc, 0xffff, + 0x5482, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x562b, 0xffff, 0xffff, 0x5720, 0xffff, 0x57ba, 0xffff, 0x5893, + 0x5962, 0x5a2e, 0xffff, 0x5b0a, 0x5bbb, 0xffff, 0xffff, 0xffff, + 0x5cd8, 0x5d65, 0xffff, 0xffff, 0x1076, 0x13d5, 0x17fb, 0x1891, + // Entry 2C500 - 2C53F + 0xffff, 0xffff, 0x40fd, 0x52cf, 0x009e, 0x0042, 0x1115, 0x1144, + 0x117e, 0x11d0, 0x125c, 0x1364, 0x1496, 0x1544, 0x15c5, 0x166a, + 0x1709, 0xffff, 0x1796, 0x1955, 0x1a0c, 0x1b11, 0x1c13, 0x1cb5, + 0x1d7e, 0x1e9b, 0x1ff1, 0x2135, 0x224f, 0x230c, 0x23d6, 0x245f, + 0x2484, 0x24e9, 0x2587, 0x25fe, 0x26b2, 0x2702, 0x27aa, 0x2846, + 0x28df, 0x295f, 0x299c, 0x29f5, 0x2a9a, 0x2b66, 0x2bd4, 0x2bf0, + 0x2c1b, 0x2c89, 0x2d39, 0x2d98, 0x2e85, 0x2f59, 0x3000, 0x311d, + 0x3210, 0x3272, 0x32b2, 0x3306, 0x3340, 0x337b, 0x33e3, 0x341d, + // Entry 2C540 - 2C57F + 0x348e, 0x3575, 0x3632, 0x365a, 0x36ae, 0x3767, 0x3821, 0x38b3, + 0x38d3, 0x3913, 0x3938, 0x397e, 0x39dc, 0x3a5f, 0x3b19, 0x3beb, + 0x3ca2, 0xffff, 0x3d34, 0x3d8f, 0x3e0c, 0x3e9e, 0x3efa, 0x3fb6, + 0x3ffa, 0x405c, 0x418a, 0x41f5, 0x4275, 0x42a3, 0x42c2, 0x42e7, + 0x435e, 0x440e, 0x4479, 0x4572, 0x4645, 0x46f4, 0x4780, 0x479c, + 0x47c7, 0x4820, 0x48e3, 0x49b2, 0x4a44, 0x4a63, 0x4add, 0x4c13, + 0x4d00, 0x4dc0, 0x4e64, 0x4e83, 0x4ed9, 0x4f99, 0x5056, 0x50fa, + 0x5187, 0x526f, 0x5294, 0x52b0, 0x5365, 0x539c, 0x53ea, 0xffff, + // Entry 2C580 - 2C5BF + 0x549e, 0x5506, 0x5537, 0x5565, 0x559f, 0x55c4, 0x55f2, 0x560c, + 0x564d, 0x56d0, 0x56fb, 0x573c, 0x57a4, 0x57e8, 0x5874, 0x58c4, + 0x5996, 0x5a53, 0x5acd, 0x5b35, 0x5be0, 0x5c5a, 0x5c7a, 0x5c9c, + 0x5cf7, 0x5d99, 0x361c, 0x4b87, 0x109b, 0x13f4, 0x181d, 0x18b3, + 0x2699, 0x3fde, 0x411c, 0x52f1, 0x009e, 0x0042, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12cf, 0x139e, 0x14e2, 0x1572, 0x1605, 0x16aa, + 0x1743, 0xffff, 0x17ca, 0x19a1, 0x1a64, 0x1b81, 0x1c4d, 0x1cfb, + 0x1ddf, 0x1f1d, 0x206a, 0x21ae, 0x2295, 0x235b, 0x241a, 0xffff, + // Entry 2C5C0 - 2C5FF + 0xffff, 0x2526, 0xffff, 0x264d, 0xffff, 0x2748, 0x27ea, 0x2874, + 0x291c, 0xffff, 0xffff, 0x2a2f, 0x2ae0, 0x2ba3, 0xffff, 0xffff, + 0xffff, 0x2ce1, 0xffff, 0x2de7, 0x2ef2, 0xffff, 0x3067, 0x318a, + 0x3241, 0xffff, 0xffff, 0xffff, 0xffff, 0x33af, 0xffff, 0xffff, + 0x34e3, 0x35ca, 0xffff, 0xffff, 0x36f8, 0x37b0, 0x386a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3aa2, 0x3b68, 0x3c3d, + 0x3cee, 0xffff, 0xffff, 0xffff, 0x3e58, 0xffff, 0x3f58, 0xffff, + 0xffff, 0x40a8, 0xffff, 0x4235, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2C600 - 2C63F + 0x43b3, 0xffff, 0x44e6, 0x45c7, 0x4689, 0x473a, 0xffff, 0xffff, + 0xffff, 0x4869, 0x4932, 0x4a07, 0xffff, 0xffff, 0x4b32, 0x4c74, + 0x4d49, 0x4e0f, 0xffff, 0xffff, 0x4f28, 0x4fdf, 0x50a8, 0xffff, + 0x51fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5436, 0xffff, + 0x54d2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x5690, 0xffff, 0xffff, 0x5770, 0xffff, 0x582e, 0xffff, 0x5913, + 0x59e2, 0x5a90, 0xffff, 0x5b78, 0x5c1d, 0xffff, 0xffff, 0xffff, + 0x5d2e, 0x5de5, 0xffff, 0xffff, 0x10d8, 0x142b, 0x1857, 0x18ed, + // Entry 2C640 - 2C67F + 0xffff, 0xffff, 0x4153, 0x532b, 0x0003, 0x0004, 0x012e, 0x0201, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, + 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x0000, 0x00a6, + // Entry 2C680 - 2C6BF + 0x00db, 0x00f3, 0x00fb, 0x010c, 0x011d, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0043, 0xffff, 0x0000, + 0x000d, 0x001a, 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, 0x0056, + 0x0065, 0x0074, 0x0081, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x29da, 0x2398, 0x000d, 0x0043, 0xffff, 0x0000, 0x000d, 0x001a, + 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, 0x0056, 0x0065, 0x0074, + 0x0081, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0043, 0xffff, + // Entry 2C6C0 - 2C6FF + 0x0000, 0x000d, 0x001a, 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, + 0x0056, 0x0065, 0x0074, 0x0081, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x29da, 0x2398, 0x000d, 0x0043, 0xffff, 0x0000, 0x000d, + 0x001a, 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, 0x0056, 0x0065, + 0x0074, 0x0081, 0x0002, 0x00a9, 0x00c2, 0x0003, 0x00ad, 0x00b4, + 0x00bb, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + // Entry 2C700 - 2C73F + 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0003, 0x00c6, + 0x00cd, 0x00d4, 0x0005, 0x0043, 0xffff, 0x008e, 0x00a2, 0x00a5, + 0x00a8, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0043, 0xffff, 0x008e, 0x00ab, 0x00c1, 0x00d7, 0x0001, + 0x00dd, 0x0003, 0x00e1, 0x0000, 0x00ea, 0x0002, 0x00e4, 0x00e7, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x00ed, + 0x00f0, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x00f5, 0x0001, 0x00f7, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, + // Entry 2C740 - 2C77F + 0x0109, 0x0103, 0x0100, 0x0106, 0x0001, 0x0000, 0x04fc, 0x0001, + 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, + 0x0004, 0x011a, 0x0114, 0x0111, 0x0117, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0004, 0x012b, 0x0125, 0x0122, 0x0128, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0040, 0x016f, 0x0000, 0x0000, 0x0174, 0x0179, + 0x017e, 0x0183, 0x0188, 0x018d, 0x0192, 0x0197, 0x019c, 0x01a1, + // Entry 2C780 - 2C7BF + 0x01a6, 0x01ab, 0x0000, 0x0000, 0x0000, 0x01b0, 0x01bb, 0x01c0, + 0x0000, 0x0000, 0x0000, 0x01c5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ca, + 0x0000, 0x01cf, 0x01d4, 0x01d9, 0x01de, 0x01e3, 0x01e8, 0x01ed, + 0x01f2, 0x01f7, 0x01fc, 0x0001, 0x0171, 0x0001, 0x0043, 0x00ed, + 0x0001, 0x0176, 0x0001, 0x0021, 0x0765, 0x0001, 0x017b, 0x0001, + // Entry 2C7C0 - 2C7FF + 0x0021, 0x0765, 0x0001, 0x0180, 0x0001, 0x0021, 0x0765, 0x0001, + 0x0185, 0x0001, 0x0043, 0x00f6, 0x0001, 0x018a, 0x0001, 0x0043, + 0x00f6, 0x0001, 0x018f, 0x0001, 0x0043, 0x00f6, 0x0001, 0x0194, + 0x0001, 0x0043, 0x0101, 0x0001, 0x0199, 0x0001, 0x0043, 0x0101, + 0x0001, 0x019e, 0x0001, 0x0043, 0x0101, 0x0001, 0x01a3, 0x0001, + 0x0043, 0x0106, 0x0001, 0x01a8, 0x0001, 0x0043, 0x0106, 0x0001, + 0x01ad, 0x0001, 0x0043, 0x0106, 0x0002, 0x01b3, 0x01b6, 0x0001, + 0x0043, 0x0111, 0x0003, 0x0043, 0x011a, 0x0127, 0x0132, 0x0001, + // Entry 2C800 - 2C83F + 0x01bd, 0x0001, 0x0043, 0x0111, 0x0001, 0x01c2, 0x0001, 0x0043, + 0x0111, 0x0001, 0x01c7, 0x0001, 0x0043, 0x013f, 0x0001, 0x01cc, + 0x0001, 0x0043, 0x0153, 0x0001, 0x01d1, 0x0001, 0x0043, 0x0163, + 0x0001, 0x01d6, 0x0001, 0x0043, 0x0163, 0x0001, 0x01db, 0x0001, + 0x0043, 0x0163, 0x0001, 0x01e0, 0x0001, 0x0043, 0x016c, 0x0001, + 0x01e5, 0x0001, 0x0043, 0x016c, 0x0001, 0x01ea, 0x0001, 0x0043, + 0x016c, 0x0001, 0x01ef, 0x0001, 0x0043, 0x0177, 0x0001, 0x01f4, + 0x0001, 0x0043, 0x0177, 0x0001, 0x01f9, 0x0001, 0x0043, 0x0177, + // Entry 2C840 - 2C87F + 0x0001, 0x01fe, 0x0001, 0x0043, 0x0182, 0x0004, 0x0000, 0x0206, + 0x0000, 0x0209, 0x0001, 0x0000, 0x1de0, 0x0002, 0x0000, 0x020c, + 0x0003, 0x0210, 0x0224, 0x021a, 0x0008, 0x0043, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x018f, 0x0008, 0x0043, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x01a9, + 0x0008, 0x0043, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x01da, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + // Entry 2C880 - 2C8BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0003, 0x0004, + 0x08c7, 0x0e0b, 0x0012, 0x0017, 0x0024, 0x0158, 0x01d9, 0x030d, + 0x038e, 0x03a2, 0x03cd, 0x05f0, 0x067a, 0x06dd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x074f, 0x0847, 0x08b9, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, + 0x0000, 0x0000, 0x000a, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2C8C0 - 2C8FF + 0x0136, 0x0000, 0x0147, 0x0094, 0x00a7, 0x0002, 0x0032, 0x0063, + 0x0003, 0x0036, 0x0045, 0x0054, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, + 0x2398, 0x0003, 0x0067, 0x0076, 0x0085, 0x000d, 0x0000, 0xffff, + // Entry 2C900 - 2C93F + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x29da, 0x2398, 0x0003, 0x0098, 0x00a3, 0x009d, 0x0003, 0x0000, + 0xffff, 0xffff, 0x004e, 0x0004, 0x0000, 0xffff, 0xffff, 0xffff, + 0x004e, 0x0002, 0x0000, 0xffff, 0x0055, 0x0006, 0x00ae, 0x0000, + // Entry 2C940 - 2C97F + 0x0000, 0x00c1, 0x00e0, 0x0123, 0x0001, 0x00b0, 0x0001, 0x00b2, + 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, + 0x2a54, 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, + 0x00c3, 0x0001, 0x00c5, 0x0019, 0x0043, 0xffff, 0x0203, 0x0216, + 0x0225, 0x023a, 0x0250, 0x0258, 0x0266, 0x0277, 0x027f, 0x0293, + 0x02a9, 0x02bc, 0x02cd, 0x02dd, 0x02f0, 0x02fb, 0x030e, 0x031a, + 0x0322, 0x0333, 0x0346, 0x0357, 0x036d, 0x037f, 0x0001, 0x00e2, + 0x0001, 0x00e4, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, + // Entry 2C980 - 2C9BF + 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, + 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, + 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, + 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, + 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, + 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, + 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, + 0x0390, 0x0001, 0x0125, 0x0001, 0x0127, 0x000d, 0x0043, 0xffff, + // Entry 2C9C0 - 2C9FF + 0x038f, 0x0398, 0x039f, 0x03a6, 0x03af, 0x03b8, 0x03c0, 0x03c7, + 0x03cd, 0x03da, 0x03e1, 0x03e6, 0x0004, 0x0144, 0x013e, 0x013b, + 0x0141, 0x0001, 0x0043, 0x03ee, 0x0001, 0x0032, 0x00ef, 0x0001, + 0x0032, 0x00f8, 0x0001, 0x0000, 0x051c, 0x0004, 0x0155, 0x014f, + 0x014c, 0x0152, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x015e, + 0x0000, 0x0000, 0x0000, 0x01c9, 0x0002, 0x0161, 0x0195, 0x0003, + 0x0165, 0x0175, 0x0185, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, + // Entry 2CA00 - 2CA3F + 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, + 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, + 0x29da, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, + 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, + 0x0411, 0x0416, 0x041c, 0x0003, 0x0199, 0x01a9, 0x01b9, 0x000e, + 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, + 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, + // Entry 2CA40 - 2CA7F + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, + 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, + 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x0003, + 0x01d3, 0x0000, 0x01cd, 0x0001, 0x01cf, 0x0002, 0x0000, 0x0425, + 0x042a, 0x0001, 0x01d5, 0x0002, 0x0000, 0x0425, 0x042a, 0x000a, + 0x01e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x02eb, 0x0000, 0x02fc, + 0x0249, 0x025c, 0x0002, 0x01e7, 0x0218, 0x0003, 0x01eb, 0x01fa, + // Entry 2CA80 - 2CABF + 0x0209, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0003, 0x021c, + 0x022b, 0x023a, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, + // Entry 2CAC0 - 2CAFF + 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0003, + 0x024d, 0x0258, 0x0252, 0x0003, 0x0000, 0xffff, 0xffff, 0x004e, + 0x0004, 0x0000, 0xffff, 0xffff, 0xffff, 0x004e, 0x0002, 0x0000, + 0xffff, 0x0055, 0x0006, 0x0263, 0x0000, 0x0000, 0x0276, 0x0295, + 0x02d8, 0x0001, 0x0265, 0x0001, 0x0267, 0x000d, 0x0000, 0xffff, + // Entry 2CB00 - 2CB3F + 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x2a54, 0x25d6, 0x0075, + 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x0278, 0x0001, 0x027a, + 0x0019, 0x0043, 0xffff, 0x0203, 0x0216, 0x0225, 0x023a, 0x0250, + 0x0258, 0x0266, 0x0277, 0x027f, 0x0293, 0x02a9, 0x02bc, 0x02cd, + 0x02dd, 0x02f0, 0x02fb, 0x030e, 0x031a, 0x0322, 0x0333, 0x0346, + 0x0357, 0x036d, 0x037f, 0x0001, 0x0297, 0x0001, 0x0299, 0x003d, + 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, + 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, + // Entry 2CB40 - 2CB7F + 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, + 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, + 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, + 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, + 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, + 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, 0x02da, + 0x0001, 0x02dc, 0x000d, 0x0043, 0xffff, 0x038f, 0x0398, 0x039f, + 0x03a6, 0x03af, 0x03b8, 0x03c0, 0x03c7, 0x03cd, 0x03da, 0x03e1, + // Entry 2CB80 - 2CBBF + 0x03e6, 0x0004, 0x02f9, 0x02f3, 0x02f0, 0x02f6, 0x0001, 0x0043, + 0x03ee, 0x0001, 0x0032, 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, + 0x0000, 0x051c, 0x0004, 0x030a, 0x0304, 0x0301, 0x0307, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0005, 0x0313, 0x0000, 0x0000, 0x0000, + 0x037e, 0x0002, 0x0316, 0x034a, 0x0003, 0x031a, 0x032a, 0x033a, + 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, + 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, + // Entry 2CBC0 - 2CBFF + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, + 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, + 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, + 0x0003, 0x034e, 0x035e, 0x036e, 0x000e, 0x0000, 0xffff, 0x042f, + 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, + 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + // Entry 2CC00 - 2CC3F + 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, + 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, + 0x046e, 0x2556, 0x0479, 0x0481, 0x0003, 0x0388, 0x0000, 0x0382, + 0x0001, 0x0384, 0x0002, 0x0000, 0x0425, 0x042a, 0x0001, 0x038a, + 0x0002, 0x0000, 0x0425, 0x042a, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0394, 0x0003, 0x039d, 0x0000, 0x0398, 0x0001, 0x039a, + 0x0001, 0x0000, 0x0425, 0x0001, 0x039f, 0x0001, 0x0000, 0x0425, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ab, 0x0000, + // Entry 2CC40 - 2CC7F + 0x03bc, 0x0004, 0x03b9, 0x03b3, 0x03b0, 0x03b6, 0x0001, 0x0043, + 0x03fd, 0x0001, 0x0043, 0x040e, 0x0001, 0x0043, 0x0419, 0x0001, + 0x0043, 0x0423, 0x0004, 0x03ca, 0x03c4, 0x03c1, 0x03c7, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x03d6, 0x043b, 0x0492, 0x04c7, + 0x0598, 0x05bd, 0x05ce, 0x05df, 0x0002, 0x03d9, 0x040a, 0x0003, + 0x03dd, 0x03ec, 0x03fb, 0x000d, 0x0043, 0xffff, 0x042d, 0x0433, + 0x0438, 0x043d, 0x0442, 0x0447, 0x044e, 0x0454, 0x045a, 0x0460, + // Entry 2CC80 - 2CCBF + 0x0466, 0x046d, 0x000d, 0x0000, 0xffff, 0x298e, 0x2485, 0x25bc, + 0x24f9, 0x2281, 0x24f9, 0x2994, 0x223e, 0x223e, 0x298e, 0x2994, + 0x2281, 0x000d, 0x0043, 0xffff, 0x0474, 0x047b, 0x0483, 0x0488, + 0x0493, 0x049d, 0x04a7, 0x04ae, 0x04ba, 0x04c3, 0x04ca, 0x04d5, + 0x0003, 0x040e, 0x041d, 0x042c, 0x000d, 0x0043, 0xffff, 0x042d, + 0x0433, 0x0438, 0x043d, 0x0442, 0x0447, 0x044e, 0x0454, 0x045a, + 0x0460, 0x0466, 0x046d, 0x000d, 0x0000, 0xffff, 0x298e, 0x2485, + 0x25bc, 0x24f9, 0x2281, 0x24f9, 0x2994, 0x223e, 0x223e, 0x298e, + // Entry 2CCC0 - 2CCFF + 0x2994, 0x2281, 0x000d, 0x0043, 0xffff, 0x04df, 0x04e6, 0x04ee, + 0x04f4, 0x04fd, 0x0506, 0x0510, 0x0516, 0x0521, 0x052b, 0x0532, + 0x053c, 0x0002, 0x043e, 0x0468, 0x0005, 0x0444, 0x044d, 0x045f, + 0x0000, 0x0456, 0x0007, 0x0043, 0x0544, 0x0547, 0x054a, 0x054d, + 0x0550, 0x0553, 0x0556, 0x0007, 0x0000, 0x298e, 0x255c, 0x2980, + 0x2992, 0x25bc, 0x255c, 0x2a57, 0x0007, 0x0043, 0x055a, 0x055d, + 0x0560, 0x0563, 0x0566, 0x0569, 0x056c, 0x0007, 0x0043, 0x0570, + 0x057c, 0x0588, 0x0594, 0x05a2, 0x05b1, 0x05be, 0x0005, 0x046e, + // Entry 2CD00 - 2CD3F + 0x0477, 0x0489, 0x0000, 0x0480, 0x0007, 0x0043, 0x0544, 0x0547, + 0x054a, 0x054d, 0x0550, 0x0553, 0x0556, 0x0007, 0x0000, 0x298e, + 0x255c, 0x2980, 0x2992, 0x25bc, 0x255c, 0x2a57, 0x0007, 0x0043, + 0x055a, 0x055d, 0x0560, 0x0563, 0x0566, 0x0569, 0x056c, 0x0007, + 0x0043, 0x0570, 0x057c, 0x0588, 0x0594, 0x05a2, 0x05b1, 0x05be, + 0x0002, 0x0495, 0x04ae, 0x0003, 0x0499, 0x04a0, 0x04a7, 0x0005, + 0x0043, 0xffff, 0x05cc, 0x05d1, 0x05d7, 0x05de, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0043, 0xffff, + // Entry 2CD40 - 2CD7F + 0x05e4, 0x05f0, 0x05fd, 0x060b, 0x0003, 0x04b2, 0x04b9, 0x04c0, + 0x0005, 0x0043, 0xffff, 0x0618, 0x0620, 0x0629, 0x0633, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0043, + 0xffff, 0x05e4, 0x05f0, 0x05fd, 0x060b, 0x0002, 0x04ca, 0x0531, + 0x0003, 0x04ce, 0x04ef, 0x0510, 0x0008, 0x04da, 0x04e0, 0x04d7, + 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x04dd, 0x0001, 0x0043, 0x063c, + 0x0001, 0x0043, 0x0648, 0x0001, 0x0043, 0x0653, 0x0001, 0x0043, + 0x065b, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0668, 0x0001, + // Entry 2CD80 - 2CDBF + 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x04fb, 0x0501, + 0x04f8, 0x0504, 0x0507, 0x050a, 0x050d, 0x04fe, 0x0001, 0x0043, + 0x063c, 0x0001, 0x0043, 0x0680, 0x0001, 0x0043, 0x0653, 0x0001, + 0x002f, 0x004f, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0668, + 0x0001, 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x051c, + 0x0522, 0x0519, 0x0525, 0x0528, 0x052b, 0x052e, 0x051f, 0x0001, + 0x0043, 0x063c, 0x0001, 0x0043, 0x0648, 0x0001, 0x0043, 0x0653, + 0x0001, 0x0043, 0x065b, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, + // Entry 2CDC0 - 2CDFF + 0x0668, 0x0001, 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0003, + 0x0535, 0x0556, 0x0577, 0x0008, 0x0541, 0x0547, 0x053e, 0x054a, + 0x054d, 0x0550, 0x0553, 0x0544, 0x0001, 0x0043, 0x063c, 0x0001, + 0x0043, 0x0648, 0x0001, 0x0043, 0x0687, 0x0001, 0x0043, 0x065b, + 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0693, 0x0001, 0x0043, + 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x0562, 0x0568, 0x055f, + 0x056b, 0x056e, 0x0571, 0x0574, 0x0565, 0x0001, 0x0043, 0x063c, + 0x0001, 0x0043, 0x0680, 0x0001, 0x0043, 0x0687, 0x0001, 0x002f, + // Entry 2CE00 - 2CE3F + 0x004f, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0693, 0x0001, + 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x0583, 0x0589, + 0x0580, 0x058c, 0x058f, 0x0592, 0x0595, 0x0586, 0x0001, 0x0043, + 0x063c, 0x0001, 0x0043, 0x0648, 0x0001, 0x0043, 0x0687, 0x0001, + 0x0043, 0x065b, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0693, + 0x0001, 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0003, 0x05a7, + 0x05b2, 0x059c, 0x0002, 0x059f, 0x05a3, 0x0002, 0x0043, 0x0699, + 0x06bb, 0x0002, 0x0043, 0x06a8, 0x06c7, 0x0002, 0x05aa, 0x05ae, + // Entry 2CE40 - 2CE7F + 0x0002, 0x002e, 0x0198, 0x38b6, 0x0002, 0x0043, 0x06d4, 0x06c7, + 0x0002, 0x05b5, 0x05b9, 0x0002, 0x002e, 0x0198, 0x38b6, 0x0002, + 0x0043, 0x06de, 0x06e3, 0x0004, 0x05cb, 0x05c5, 0x05c2, 0x05c8, + 0x0001, 0x0043, 0x06e8, 0x0001, 0x0043, 0x0701, 0x0001, 0x0000, + 0x051c, 0x0001, 0x0000, 0x051c, 0x0004, 0x05dc, 0x05d6, 0x05d3, + 0x05d9, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x05ed, 0x05e7, + 0x05e4, 0x05ea, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 2CE80 - 2CEBF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x05f7, + 0x0000, 0x0000, 0x0000, 0x0662, 0x0669, 0x0002, 0x05fa, 0x062e, + 0x0003, 0x05fe, 0x060e, 0x061e, 0x000e, 0x0000, 0x25f2, 0x054c, + 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, + 0x2605, 0x260b, 0x2611, 0x2614, 0x000e, 0x0000, 0x003f, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0000, 0x25f2, 0x054c, + 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, + // Entry 2CEC0 - 2CEFF + 0x2605, 0x260b, 0x2611, 0x2614, 0x0003, 0x0632, 0x0642, 0x0652, + 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, + 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, + 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, + 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, + 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, + 0x0001, 0x0664, 0x0001, 0x0666, 0x0001, 0x0000, 0x04ef, 0x0004, + // Entry 2CF00 - 2CF3F + 0x0677, 0x0671, 0x066e, 0x0674, 0x0001, 0x0043, 0x03fd, 0x0001, + 0x0043, 0x040e, 0x0001, 0x0043, 0x0419, 0x0001, 0x0043, 0x0423, + 0x0005, 0x0680, 0x0000, 0x0000, 0x0000, 0x06d6, 0x0002, 0x0683, + 0x06a5, 0x0003, 0x0687, 0x0000, 0x0696, 0x000d, 0x0000, 0xffff, + 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, + 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, + 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, + 0x05ec, 0x05f2, 0x05f8, 0x0003, 0x06a9, 0x06b8, 0x06c7, 0x000d, + // Entry 2CF40 - 2CF7F + 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, + 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, + 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, + 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x0001, 0x06d8, 0x0001, 0x06da, + 0x0001, 0x0000, 0x0601, 0x0005, 0x06e3, 0x0000, 0x0000, 0x0000, + 0x0748, 0x0002, 0x06e6, 0x0717, 0x0003, 0x06ea, 0x06f9, 0x0708, + // Entry 2CF80 - 2CFBF + 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, 0x061f, + 0x0626, 0x2572, 0x0633, 0x261e, 0x063d, 0x0643, 0x064d, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, + 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, 0x2582, + 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, 0x0003, 0x071b, 0x072a, + 0x0739, 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, + 0x061f, 0x0626, 0x2572, 0x0633, 0x261e, 0x063d, 0x0643, 0x064d, + // Entry 2CFC0 - 2CFFF + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, + 0x0000, 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, + 0x2582, 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, 0x0001, 0x074a, + 0x0001, 0x074c, 0x0001, 0x0000, 0x06c8, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0755, 0x0001, 0x0757, 0x0001, 0x0759, 0x00ec, + 0x0000, 0x06cb, 0x2a5a, 0x2a6e, 0x2a81, 0x2a94, 0x072c, 0x2aa6, + 0x0750, 0x2ab7, 0x0775, 0x2ac8, 0x2adb, 0x2af4, 0x2b0d, 0x2b26, + // Entry 2D000 - 2D03F + 0x2b3f, 0x2b58, 0x2b69, 0x2b7b, 0x2b8f, 0x2ba1, 0x2bb3, 0x2bc6, + 0x2bd8, 0x08b5, 0x2649, 0x2be9, 0x2bfb, 0x266e, 0x2c0d, 0x2c1f, + 0x2c32, 0x094e, 0x2c45, 0x2c57, 0x2c6a, 0x2c7d, 0x09ae, 0x2c92, + 0x2ca2, 0x2cb3, 0x09f7, 0x2cc3, 0x2cd6, 0x0a33, 0x0a46, 0x2ce8, + 0x2cf9, 0x0a7b, 0x2d0b, 0x2d20, 0x2d34, 0x2d47, 0x2d5b, 0x2d6f, + 0x2d83, 0x2d98, 0x2daf, 0x2dc4, 0x2ddb, 0x0b77, 0x2df0, 0x0ba2, + 0x2e04, 0x2e18, 0x2e30, 0x2e44, 0x2e58, 0x2e6f, 0x2e81, 0x2e95, + 0x26dd, 0x2eab, 0x2ebf, 0x2ed5, 0x2ee8, 0x2efe, 0x2f12, 0x0cf2, + // Entry 2D040 - 2D07F + 0x2f26, 0x2f3a, 0x271a, 0x2f4f, 0x2f65, 0x2f7b, 0x2f90, 0x272d, + 0x2fa5, 0x2fba, 0x2fcf, 0x2fe3, 0x0e04, 0x2ff7, 0x2755, 0x300b, + 0x3021, 0x3037, 0x3049, 0x0e96, 0x305e, 0x3073, 0x3085, 0x0ee9, + 0x3099, 0x30af, 0x30c2, 0x30d7, 0x30ee, 0x3104, 0x3119, 0x312f, + 0x3143, 0x3158, 0x316d, 0x3182, 0x3199, 0x31ad, 0x31c2, 0x31d5, + 0x1051, 0x1066, 0x107a, 0x31e9, 0x27d3, 0x31fe, 0x10cf, 0x3215, + 0x322c, 0x323f, 0x1124, 0x3255, 0x326a, 0x327f, 0x3293, 0x32a7, + 0x32bc, 0x32d0, 0x32e4, 0x32f9, 0x330f, 0x3322, 0x1224, 0x3334, + // Entry 2D080 - 2D0BF + 0x124d, 0x1262, 0x3348, 0x280f, 0x335f, 0x3372, 0x3386, 0x339a, + 0x33af, 0x33c6, 0x2839, 0x1335, 0x33db, 0x33ef, 0x1374, 0x3402, + 0x3417, 0x13b4, 0x342c, 0x3441, 0x3457, 0x346d, 0x3480, 0x1435, + 0x144b, 0x3495, 0x1473, 0x34a6, 0x34b8, 0x34cd, 0x14c8, 0x34e1, + 0x34f6, 0x350b, 0x3521, 0x3535, 0x354b, 0x3560, 0x3575, 0x158f, + 0x3588, 0x15bb, 0x359d, 0x15e4, 0x35b0, 0x160d, 0x35c4, 0x2861, + 0x35da, 0x1661, 0x1676, 0x35ef, 0x16a0, 0x3604, 0x3619, 0x362d, + 0x3642, 0x170c, 0x3656, 0x3668, 0x367f, 0x175e, 0x3695, 0x36a8, + // Entry 2D0C0 - 2D0FF + 0x36bc, 0x17b1, 0x36d2, 0x36e5, 0x36fb, 0x1808, 0x370f, 0x3723, + 0x3737, 0x374c, 0x3762, 0x3776, 0x189e, 0x18b3, 0x378a, 0x18dd, + 0x18f1, 0x379e, 0x37b2, 0x192f, 0x1942, 0x37c5, 0x37da, 0x37ef, + 0x3805, 0x3819, 0x3821, 0x3828, 0x292a, 0x0005, 0x084d, 0x0000, + 0x0000, 0x0000, 0x08b2, 0x0002, 0x0850, 0x0881, 0x0003, 0x0854, + 0x0863, 0x0872, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, + 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, + 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 2D100 - 2D13F + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, + 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, + 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, + 0x0885, 0x0894, 0x08a3, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, + 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, + 0x1a0f, 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, + 0x2398, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, + // Entry 2D140 - 2D17F + 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, + 0x0001, 0x08b4, 0x0001, 0x08b6, 0x0001, 0x0000, 0x1a1d, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x08bf, 0x0001, 0x08c1, 0x0001, + 0x08c3, 0x0002, 0x0043, 0x0714, 0x0722, 0x0040, 0x0908, 0x0000, + 0x0000, 0x090d, 0x092c, 0x0946, 0x0960, 0x097f, 0x0999, 0x09b3, + 0x09d2, 0x09ec, 0x0a06, 0x0a29, 0x0a47, 0x0000, 0x0000, 0x0000, + 0x0a65, 0x0a86, 0x0aa0, 0x0000, 0x0000, 0x0000, 0x0aba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0abf, 0x0adb, 0x0af7, 0x0b13, + // Entry 2D180 - 2D1BF + 0x0b2f, 0x0b4b, 0x0b67, 0x0b83, 0x0b9f, 0x0bbb, 0x0bd7, 0x0bf3, + 0x0c0f, 0x0c2b, 0x0c47, 0x0c63, 0x0c7f, 0x0c9b, 0x0cb7, 0x0cd3, + 0x0cef, 0x0000, 0x0d0b, 0x0000, 0x0d10, 0x0d2e, 0x0d48, 0x0d62, + 0x0d80, 0x0d9a, 0x0db4, 0x0dd2, 0x0dec, 0x0e06, 0x0001, 0x090a, + 0x0001, 0x0001, 0x0040, 0x0003, 0x0911, 0x0914, 0x0919, 0x0001, + 0x0043, 0x0729, 0x0003, 0x0043, 0x072f, 0x0743, 0x0751, 0x0002, + 0x091c, 0x0924, 0x0006, 0x0043, 0x075f, 0x075f, 0xffff, 0xffff, + 0x075f, 0x075f, 0x0006, 0x0043, 0x077d, 0x076c, 0xffff, 0xffff, + // Entry 2D1C0 - 2D1FF + 0x076c, 0x077d, 0x0003, 0x0930, 0x0000, 0x0933, 0x0001, 0x0029, + 0x0080, 0x0002, 0x0936, 0x093e, 0x0006, 0x0043, 0x078e, 0x078e, + 0xffff, 0xffff, 0x078e, 0x078e, 0x0006, 0x0043, 0x077d, 0x0798, + 0xffff, 0xffff, 0x0798, 0x0798, 0x0003, 0x094a, 0x0000, 0x094d, + 0x0001, 0x0029, 0x0080, 0x0002, 0x0950, 0x0958, 0x0006, 0x0043, + 0x078e, 0x078e, 0xffff, 0xffff, 0x078e, 0x078e, 0x0006, 0x0043, + 0x0798, 0x0798, 0xffff, 0xffff, 0x0798, 0x0798, 0x0003, 0x0964, + 0x0967, 0x096c, 0x0001, 0x0043, 0x07a6, 0x0003, 0x0043, 0x07b0, + // Entry 2D200 - 2D23F + 0x07c4, 0x07d3, 0x0002, 0x096f, 0x0977, 0x0006, 0x0043, 0x07f5, + 0x07e3, 0xffff, 0xffff, 0x07f5, 0x07e3, 0x0006, 0x0043, 0x084a, + 0x0808, 0xffff, 0xffff, 0x081d, 0x0834, 0x0003, 0x0983, 0x0000, + 0x0986, 0x0001, 0x0043, 0x0861, 0x0002, 0x0989, 0x0991, 0x0006, + 0x0043, 0x0867, 0x0867, 0xffff, 0xffff, 0x0867, 0x0867, 0x0006, + 0x0043, 0x0874, 0x0874, 0xffff, 0xffff, 0x0874, 0x0874, 0x0003, + 0x099d, 0x0000, 0x09a0, 0x0001, 0x0043, 0x0861, 0x0002, 0x09a3, + 0x09ab, 0x0006, 0x0043, 0x0867, 0x0867, 0xffff, 0xffff, 0x0867, + // Entry 2D240 - 2D27F + 0x0867, 0x0006, 0x0043, 0x0874, 0x0874, 0xffff, 0xffff, 0x0874, + 0x0874, 0x0003, 0x09b7, 0x09ba, 0x09bf, 0x0001, 0x0043, 0x0885, + 0x0003, 0x0043, 0x088c, 0x08a0, 0x08ae, 0x0002, 0x09c2, 0x09ca, + 0x0006, 0x0043, 0x08cd, 0x08bd, 0xffff, 0xffff, 0x08cd, 0x08bd, + 0x0006, 0x0043, 0x091b, 0x08de, 0xffff, 0xffff, 0x08f2, 0x0907, + 0x0003, 0x09d6, 0x0000, 0x09d9, 0x0001, 0x0043, 0x0930, 0x0002, + 0x09dc, 0x09e4, 0x0006, 0x0043, 0x0936, 0x0936, 0xffff, 0xffff, + 0x0936, 0x0936, 0x0006, 0x0043, 0x0943, 0x0943, 0xffff, 0xffff, + // Entry 2D280 - 2D2BF + 0x0943, 0x0943, 0x0003, 0x09f0, 0x0000, 0x09f3, 0x0001, 0x0043, + 0x0930, 0x0002, 0x09f6, 0x09fe, 0x0006, 0x0043, 0x0936, 0x0936, + 0xffff, 0xffff, 0x0936, 0x0936, 0x0006, 0x0043, 0x0943, 0x0943, + 0xffff, 0xffff, 0x0943, 0x0943, 0x0004, 0x0a0b, 0x0a0e, 0x0a13, + 0x0a26, 0x0001, 0x0043, 0x0954, 0x0003, 0x0043, 0x095d, 0x0972, + 0x0981, 0x0002, 0x0a16, 0x0a1e, 0x0006, 0x0043, 0x09a1, 0x0990, + 0xffff, 0xffff, 0x09a1, 0x0990, 0x0006, 0x0043, 0x09f0, 0x09b3, + 0xffff, 0xffff, 0x09c7, 0x09db, 0x0001, 0x0043, 0x0a06, 0x0004, + // Entry 2D2C0 - 2D2FF + 0x0a2e, 0x0000, 0x0a31, 0x0a44, 0x0001, 0x0043, 0x0a13, 0x0002, + 0x0a34, 0x0a3c, 0x0006, 0x0043, 0x0a18, 0x0a18, 0xffff, 0xffff, + 0x0a18, 0x0a18, 0x0006, 0x0043, 0x0a24, 0x0a24, 0xffff, 0xffff, + 0x0a24, 0x0a24, 0x0001, 0x0043, 0x0a06, 0x0004, 0x0a4c, 0x0000, + 0x0a4f, 0x0a62, 0x0001, 0x0043, 0x0a13, 0x0002, 0x0a52, 0x0a5a, + 0x0006, 0x0043, 0x0a18, 0x0a18, 0xffff, 0xffff, 0x0a18, 0x0a18, + 0x0006, 0x0043, 0x0a24, 0x0a24, 0xffff, 0xffff, 0x0a24, 0x0a24, + 0x0001, 0x0043, 0x0a06, 0x0003, 0x0a69, 0x0a6c, 0x0a73, 0x0001, + // Entry 2D300 - 2D33F + 0x0043, 0x0693, 0x0005, 0x0043, 0x0a3d, 0x0a43, 0x0a4d, 0x0a34, + 0x0a53, 0x0002, 0x0a76, 0x0a7e, 0x0006, 0x0043, 0x0a67, 0x0a59, + 0xffff, 0xffff, 0x0a67, 0x0a59, 0x0006, 0x0043, 0x0aab, 0x0a75, + 0xffff, 0xffff, 0x0a87, 0x0a99, 0x0003, 0x0a8a, 0x0000, 0x0a8d, + 0x0001, 0x0029, 0x008f, 0x0002, 0x0a90, 0x0a98, 0x0006, 0x0043, + 0x0abd, 0x0abd, 0xffff, 0xffff, 0x0abd, 0x0abd, 0x0006, 0x0043, + 0x0ac7, 0x0ac7, 0xffff, 0xffff, 0x0ac7, 0x0ac7, 0x0003, 0x0aa4, + 0x0000, 0x0aa7, 0x0001, 0x0029, 0x008f, 0x0002, 0x0aaa, 0x0ab2, + // Entry 2D340 - 2D37F + 0x0006, 0x0043, 0x0abd, 0x0abd, 0xffff, 0xffff, 0x0abd, 0x0abd, + 0x0006, 0x0043, 0x0ac7, 0x0ac7, 0xffff, 0xffff, 0x0ac7, 0x0ac7, + 0x0001, 0x0abc, 0x0001, 0x0043, 0x0ad5, 0x0003, 0x0000, 0x0ac3, + 0x0ac8, 0x0003, 0x0043, 0x0ae5, 0x0afc, 0x0b0d, 0x0002, 0x0acb, + 0x0ad3, 0x0006, 0x0043, 0x0b32, 0x0b1f, 0xffff, 0xffff, 0x0b32, + 0x0b1f, 0x0006, 0x0043, 0x0b8c, 0x0b46, 0xffff, 0xffff, 0x0b5d, + 0x0b75, 0x0003, 0x0000, 0x0adf, 0x0ae4, 0x0003, 0x0043, 0x0ba4, + 0x0bb5, 0x0bc0, 0x0002, 0x0ae7, 0x0aef, 0x0006, 0x0043, 0x0b32, + // Entry 2D380 - 2D3BF + 0x0b1f, 0xffff, 0xffff, 0x0b32, 0x0b1f, 0x0006, 0x0043, 0x0b8c, + 0x0b46, 0xffff, 0xffff, 0x0b5d, 0x0b75, 0x0003, 0x0000, 0x0afb, + 0x0b00, 0x0003, 0x0043, 0x0ba4, 0x0bb5, 0x0bc0, 0x0002, 0x0b03, + 0x0b0b, 0x0006, 0x0043, 0x0b32, 0x0b1f, 0xffff, 0xffff, 0x0b32, + 0x0b1f, 0x0006, 0x0043, 0x0b8c, 0x0b46, 0xffff, 0xffff, 0x0b5d, + 0x0b75, 0x0003, 0x0000, 0x0b17, 0x0b1c, 0x0003, 0x0043, 0x0bcc, + 0x0be3, 0x0bf4, 0x0002, 0x0b1f, 0x0b27, 0x0006, 0x0043, 0x0c19, + 0x0c06, 0xffff, 0xffff, 0x0c19, 0x0c06, 0x0006, 0x0043, 0x0c73, + // Entry 2D3C0 - 2D3FF + 0x0c2d, 0xffff, 0xffff, 0x0c44, 0x0c5c, 0x0003, 0x0000, 0x0b33, + 0x0b38, 0x0003, 0x0043, 0x0c8b, 0x0c9c, 0x0ca7, 0x0002, 0x0b3b, + 0x0b43, 0x0006, 0x0043, 0x0c19, 0x0c06, 0xffff, 0xffff, 0x0c19, + 0x0c06, 0x0006, 0x0043, 0x0c73, 0x0c2d, 0xffff, 0xffff, 0x0c44, + 0x0c5c, 0x0003, 0x0000, 0x0b4f, 0x0b54, 0x0003, 0x0043, 0x0c8b, + 0x0c9c, 0x0ca7, 0x0002, 0x0b57, 0x0b5f, 0x0006, 0x0043, 0x0c19, + 0x0c06, 0xffff, 0xffff, 0x0c19, 0x0c06, 0x0006, 0x0043, 0x0c73, + 0x0c2d, 0xffff, 0xffff, 0x0c44, 0x0c5c, 0x0003, 0x0000, 0x0b6b, + // Entry 2D400 - 2D43F + 0x0b70, 0x0003, 0x0043, 0x0cb3, 0x0cca, 0x0cdb, 0x0002, 0x0b73, + 0x0b7b, 0x0006, 0x0043, 0x0d00, 0x0ced, 0xffff, 0xffff, 0x0d00, + 0x0ced, 0x0006, 0x0043, 0x0d5a, 0x0d14, 0xffff, 0xffff, 0x0d2b, + 0x0d43, 0x0003, 0x0000, 0x0b87, 0x0b8c, 0x0003, 0x0043, 0x0d72, + 0x0d83, 0x0d8e, 0x0002, 0x0b8f, 0x0b97, 0x0006, 0x0043, 0x0d00, + 0x0ced, 0xffff, 0xffff, 0x0d00, 0x0ced, 0x0006, 0x0043, 0x0d5a, + 0x0d14, 0xffff, 0xffff, 0x0d2b, 0x0d43, 0x0003, 0x0000, 0x0ba3, + 0x0ba8, 0x0003, 0x0043, 0x0d72, 0x0d83, 0x0d8e, 0x0002, 0x0bab, + // Entry 2D440 - 2D47F + 0x0bb3, 0x0006, 0x0043, 0x0d00, 0x0ced, 0xffff, 0xffff, 0x0d00, + 0x0ced, 0x0006, 0x0043, 0x0d5a, 0x0d14, 0xffff, 0xffff, 0x0d2b, + 0x0d43, 0x0003, 0x0000, 0x0bbf, 0x0bc4, 0x0003, 0x0043, 0x0d9a, + 0x0db3, 0x0dc6, 0x0002, 0x0bc7, 0x0bcf, 0x0006, 0x0043, 0x0def, + 0x0dda, 0xffff, 0xffff, 0x0def, 0x0dda, 0x0006, 0x0043, 0x0e51, + 0x0e05, 0xffff, 0xffff, 0x0e1e, 0x0e38, 0x0003, 0x0000, 0x0bdb, + 0x0be0, 0x0003, 0x0043, 0x0e6b, 0x0e7d, 0x0e89, 0x0002, 0x0be3, + 0x0beb, 0x0006, 0x0043, 0x0def, 0x0dda, 0xffff, 0xffff, 0x0def, + // Entry 2D480 - 2D4BF + 0x0dda, 0x0006, 0x0043, 0x0e51, 0x0e05, 0xffff, 0xffff, 0x0e1e, + 0x0e38, 0x0003, 0x0000, 0x0bf7, 0x0bfc, 0x0003, 0x0043, 0x0e6b, + 0x0e7d, 0x0e89, 0x0002, 0x0bff, 0x0c07, 0x0006, 0x0043, 0x0def, + 0x0dda, 0xffff, 0xffff, 0x0def, 0x0dda, 0x0006, 0x0043, 0x0e51, + 0x0e05, 0xffff, 0xffff, 0x0e1e, 0x0e38, 0x0003, 0x0000, 0x0c13, + 0x0c18, 0x0003, 0x0043, 0x0e96, 0x0eb0, 0x0ec4, 0x0002, 0x0c1b, + 0x0c23, 0x0006, 0x0043, 0x0eef, 0x0ed9, 0xffff, 0xffff, 0x0eef, + 0x0ed9, 0x0006, 0x0043, 0x0f55, 0x0f06, 0xffff, 0xffff, 0x0f20, + // Entry 2D4C0 - 2D4FF + 0x0f3b, 0x0003, 0x0000, 0x0c2f, 0x0c34, 0x0003, 0x0043, 0x0f70, + 0x0f81, 0x0f8c, 0x0002, 0x0c37, 0x0c3f, 0x0006, 0x0043, 0x0eef, + 0x0ed9, 0xffff, 0xffff, 0x0eef, 0x0ed9, 0x0006, 0x0043, 0x0f55, + 0x0f06, 0xffff, 0xffff, 0x0f20, 0x0f3b, 0x0003, 0x0000, 0x0c4b, + 0x0c50, 0x0003, 0x0043, 0x0f70, 0x0f81, 0x0f8c, 0x0002, 0x0c53, + 0x0c5b, 0x0006, 0x0043, 0x0eef, 0x0ed9, 0xffff, 0xffff, 0x0eef, + 0x0ed9, 0x0006, 0x0043, 0x0f55, 0x0f06, 0xffff, 0xffff, 0x0f20, + 0x0f3b, 0x0003, 0x0000, 0x0c67, 0x0c6c, 0x0003, 0x0043, 0x0f98, + // Entry 2D500 - 2D53F + 0x0fb0, 0x0fc2, 0x0002, 0x0c6f, 0x0c77, 0x0006, 0x0043, 0x0fe9, + 0x0fd5, 0xffff, 0xffff, 0x0fe9, 0x0fd5, 0x0006, 0x0043, 0x1047, + 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102f, 0x0003, 0x0000, 0x0c83, + 0x0c88, 0x0003, 0x0043, 0x1060, 0x1072, 0x107e, 0x0002, 0x0c8b, + 0x0c93, 0x0006, 0x0043, 0x0fe9, 0x0fd5, 0xffff, 0xffff, 0x0fe9, + 0x0fd5, 0x0006, 0x0043, 0x1047, 0x0ffe, 0xffff, 0xffff, 0x1016, + 0x102f, 0x0003, 0x0000, 0x0c9f, 0x0ca4, 0x0003, 0x0043, 0x1060, + 0x1072, 0x107e, 0x0002, 0x0ca7, 0x0caf, 0x0006, 0x0043, 0x0fe9, + // Entry 2D540 - 2D57F + 0x0fd5, 0xffff, 0xffff, 0x0fe9, 0x0fd5, 0x0006, 0x0043, 0x1047, + 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102f, 0x0003, 0x0000, 0x0cbb, + 0x0cc0, 0x0003, 0x0043, 0x108b, 0x10a4, 0x10b7, 0x0002, 0x0cc3, + 0x0ccb, 0x0006, 0x0043, 0x10e0, 0x10cb, 0xffff, 0xffff, 0x10e0, + 0x10cb, 0x0006, 0x0043, 0x1142, 0x10f6, 0xffff, 0xffff, 0x110f, + 0x1129, 0x0003, 0x0000, 0x0cd7, 0x0cdc, 0x0003, 0x0043, 0x115c, + 0x116f, 0x117c, 0x0002, 0x0cdf, 0x0ce7, 0x0006, 0x0043, 0x10e0, + 0x10cb, 0xffff, 0xffff, 0x10e0, 0x10cb, 0x0006, 0x0043, 0x1142, + // Entry 2D580 - 2D5BF + 0x10f6, 0xffff, 0xffff, 0x110f, 0x1129, 0x0003, 0x0000, 0x0cf3, + 0x0cf8, 0x0003, 0x0043, 0x115c, 0x116f, 0x117c, 0x0002, 0x0cfb, + 0x0d03, 0x0006, 0x0043, 0x10e0, 0x10cb, 0xffff, 0xffff, 0x10e0, + 0x10cb, 0x0006, 0x0043, 0x1142, 0x10f6, 0xffff, 0xffff, 0x110f, + 0x1129, 0x0001, 0x0d0d, 0x0001, 0x0043, 0x118a, 0x0003, 0x0d14, + 0x0d17, 0x0d1b, 0x0001, 0x0043, 0x11a1, 0x0002, 0x0043, 0xffff, + 0x11a9, 0x0002, 0x0d1e, 0x0d26, 0x0006, 0x0043, 0x11c8, 0x11b8, + 0xffff, 0xffff, 0x11c8, 0x11b8, 0x0006, 0x0043, 0x1214, 0x11d8, + // Entry 2D5C0 - 2D5FF + 0xffff, 0xffff, 0x11ec, 0x1200, 0x0003, 0x0d32, 0x0000, 0x0d35, + 0x0001, 0x0043, 0x1228, 0x0002, 0x0d38, 0x0d40, 0x0006, 0x0043, + 0x122d, 0x122d, 0xffff, 0xffff, 0x122d, 0x122d, 0x0006, 0x0043, + 0x1239, 0x1239, 0xffff, 0xffff, 0x1239, 0x1239, 0x0003, 0x0d4c, + 0x0000, 0x0d4f, 0x0001, 0x0000, 0x2143, 0x0002, 0x0d52, 0x0d5a, + 0x0006, 0x0043, 0x122d, 0x122d, 0xffff, 0xffff, 0x122d, 0x122d, + 0x0006, 0x0043, 0x1239, 0x1239, 0xffff, 0xffff, 0x1239, 0x1239, + 0x0003, 0x0d66, 0x0d69, 0x0d6d, 0x0001, 0x0043, 0x1249, 0x0002, + // Entry 2D600 - 2D63F + 0x0043, 0xffff, 0x1251, 0x0002, 0x0d70, 0x0d78, 0x0006, 0x0043, + 0x126f, 0x125f, 0xffff, 0xffff, 0x126f, 0x125f, 0x0006, 0x0043, + 0x12ba, 0x1280, 0xffff, 0xffff, 0x1293, 0x12a6, 0x0003, 0x0d84, + 0x0000, 0x0d87, 0x0001, 0x0001, 0x075a, 0x0002, 0x0d8a, 0x0d92, + 0x0006, 0x0043, 0x12cf, 0x12cf, 0xffff, 0xffff, 0x12cf, 0x12cf, + 0x0006, 0x0043, 0x12db, 0x12db, 0xffff, 0xffff, 0x12db, 0x12db, + 0x0003, 0x0d9e, 0x0000, 0x0da1, 0x0001, 0x0001, 0x075a, 0x0002, + 0x0da4, 0x0dac, 0x0006, 0x0043, 0x12cf, 0x12cf, 0xffff, 0xffff, + // Entry 2D640 - 2D67F + 0x12cf, 0x12cf, 0x0006, 0x0043, 0x12db, 0x12db, 0xffff, 0xffff, + 0x12db, 0x12db, 0x0003, 0x0db8, 0x0dbb, 0x0dbf, 0x0001, 0x0043, + 0x12eb, 0x0002, 0x0043, 0xffff, 0x12f4, 0x0002, 0x0dc2, 0x0dca, + 0x0006, 0x0043, 0x130b, 0x12fa, 0xffff, 0xffff, 0x130b, 0x12fa, + 0x0006, 0x0043, 0x135b, 0x131e, 0xffff, 0xffff, 0x1332, 0x1346, + 0x0003, 0x0dd6, 0x0000, 0x0dd9, 0x0001, 0x0001, 0x07d3, 0x0002, + 0x0ddc, 0x0de4, 0x0006, 0x0043, 0x1372, 0x1372, 0xffff, 0xffff, + 0x1372, 0x1372, 0x0006, 0x0043, 0x137e, 0x137e, 0xffff, 0xffff, + // Entry 2D680 - 2D6BF + 0x137e, 0x137e, 0x0003, 0x0df0, 0x0000, 0x0df3, 0x0001, 0x0000, + 0x2002, 0x0002, 0x0df6, 0x0dfe, 0x0006, 0x0043, 0x138e, 0x138e, + 0xffff, 0xffff, 0x138e, 0x138e, 0x0006, 0x0043, 0x1397, 0x1397, + 0xffff, 0xffff, 0x1397, 0x1397, 0x0001, 0x0e08, 0x0001, 0x0043, + 0x13a4, 0x0004, 0x0e10, 0x0e15, 0x0e1a, 0x0e29, 0x0003, 0x001c, + 0x0baf, 0x2173, 0x217a, 0x0003, 0x0043, 0x13b1, 0x13bd, 0x13d1, + 0x0002, 0x0000, 0x0e1d, 0x0003, 0x0000, 0x0e24, 0x0e21, 0x0001, + 0x0043, 0x13e5, 0x0003, 0x0043, 0xffff, 0x1404, 0x141e, 0x0002, + // Entry 2D6C0 - 2D6FF + 0x0000, 0x0e2c, 0x0003, 0x0e30, 0x0f70, 0x0ed0, 0x009e, 0x0043, + 0xffff, 0xffff, 0xffff, 0xffff, 0x14c3, 0x1518, 0x1595, 0x15d8, + 0x164b, 0x16bb, 0x172e, 0x17c2, 0x1805, 0x18b6, 0x18f6, 0x193c, + 0x199a, 0x19e0, 0x1a1d, 0x1a87, 0x1b09, 0x1b64, 0x1bc5, 0x1c14, + 0x1c60, 0xffff, 0xffff, 0x1cc8, 0xffff, 0x1d2b, 0xffff, 0x1da3, + 0x1de0, 0x1e1d, 0x1e5a, 0xffff, 0xffff, 0x1ece, 0x1f14, 0x1f61, + 0xffff, 0xffff, 0xffff, 0x1fd6, 0xffff, 0x2035, 0x208a, 0xffff, + 0x20f9, 0x214e, 0x21a4, 0xffff, 0xffff, 0xffff, 0xffff, 0x2247, + // Entry 2D700 - 2D73F + 0xffff, 0xffff, 0x22ae, 0x230c, 0xffff, 0xffff, 0x23a5, 0x23fe, + 0x243e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2502, + 0x2539, 0x2579, 0x25b9, 0x25fc, 0xffff, 0xffff, 0x26a6, 0xffff, + 0x26f6, 0xffff, 0xffff, 0x2775, 0xffff, 0x2805, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2892, 0xffff, 0x28e9, 0x295f, 0x29d5, 0x2a1e, + 0xffff, 0xffff, 0xffff, 0x2a86, 0x2aed, 0x2b51, 0xffff, 0xffff, + 0x2bc4, 0x2c48, 0x2c94, 0x2ccb, 0xffff, 0xffff, 0x2d3c, 0x2d85, + 0x2db9, 0xffff, 0x2e11, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2D740 - 2D77F + 0x2f0e, 0x2f51, 0x2f8e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3049, 0xffff, 0xffff, 0x30b3, 0xffff, 0x30fa, + 0xffff, 0x315a, 0x31a0, 0x31e9, 0xffff, 0x3238, 0x3284, 0xffff, + 0xffff, 0xffff, 0x3306, 0x3346, 0xffff, 0xffff, 0x1435, 0x1558, + 0x183f, 0x1876, 0xffff, 0xffff, 0x27b8, 0x2ea9, 0x009e, 0x0043, + 0x146b, 0x147e, 0x1498, 0x14ad, 0x14da, 0x1528, 0x15a6, 0x15f9, + 0x166b, 0x16dc, 0x175a, 0x17d3, 0x1813, 0x18c6, 0x1908, 0x1956, + 0x19ac, 0x19ef, 0x1a3b, 0x1aad, 0x1b22, 0x1b7f, 0x1bda, 0x1c28, + // Entry 2D780 - 2D7BF + 0x1c73, 0x1ca9, 0x1cb7, 0x1cda, 0x1d0e, 0x1d44, 0x1d94, 0x1db2, + 0x1def, 0x1e2c, 0x1e6d, 0x1ea3, 0x1eb9, 0x1ee0, 0x1f26, 0x1f6e, + 0x1f98, 0x1fa7, 0x1fc2, 0x1feb, 0x2025, 0x204c, 0x209f, 0x20d9, + 0x2110, 0x2165, 0x21b3, 0x21e1, 0x21fd, 0x2227, 0x2238, 0x2257, + 0x2287, 0x229d, 0x22c8, 0x2328, 0x237d, 0x2396, 0x23bc, 0x240e, + 0x244b, 0x2475, 0x2484, 0x249d, 0x24b0, 0x24ce, 0x24e7, 0x250f, + 0x2549, 0x2589, 0x25ca, 0x261e, 0x2672, 0x268b, 0x26b6, 0x26e6, + 0x270a, 0x2742, 0x2762, 0x2786, 0x27ef, 0x2815, 0x2845, 0x2857, + // Entry 2D7C0 - 2D7FF + 0x2867, 0x287c, 0x28a5, 0x28db, 0x290b, 0x2981, 0x29e8, 0x2a2d, + 0x2a5b, 0x2a6b, 0x2a78, 0x2aa3, 0x2b09, 0x2b66, 0x2ba0, 0x2bae, + 0x2be0, 0x2c5c, 0x2ca1, 0x2cdc, 0x2d0e, 0x2d1b, 0x2d4f, 0x2d91, + 0x2dca, 0x2dfc, 0x2e2e, 0x2e78, 0x2e88, 0x2e98, 0x2eef, 0x2eff, + 0x2f1f, 0x2f60, 0x2f9b, 0x2fc5, 0x2fd7, 0x2fe9, 0x3000, 0x301b, + 0x302b, 0x3039, 0x305b, 0x308f, 0x30a4, 0x30c1, 0x30ed, 0x3110, + 0x314c, 0x316c, 0x31b3, 0x31f8, 0x3226, 0x324c, 0x3296, 0x32ca, + 0x32d9, 0x32ec, 0x3316, 0x335c, 0x2370, 0x2c28, 0x1440, 0x1567, + // Entry 2D800 - 2D83F + 0x184c, 0x1886, 0x1d86, 0x2754, 0x27c5, 0x2ebb, 0x009e, 0x0043, + 0xffff, 0xffff, 0xffff, 0xffff, 0x14f9, 0x1540, 0x15bf, 0x1622, + 0x1693, 0x1705, 0x178e, 0x17ec, 0x1829, 0x18de, 0x1922, 0x1978, + 0x19c6, 0x1a06, 0x1a61, 0x1adb, 0x1b43, 0x1ba2, 0x1bf7, 0x1c44, + 0x1c8e, 0xffff, 0xffff, 0x1cf4, 0xffff, 0x1d65, 0xffff, 0x1dc9, + 0x1e06, 0x1e43, 0x1e88, 0xffff, 0xffff, 0x1efa, 0x1f40, 0x1f83, + 0xffff, 0xffff, 0xffff, 0x2008, 0xffff, 0x206b, 0x20bc, 0xffff, + 0x212f, 0x2185, 0x21ca, 0xffff, 0xffff, 0xffff, 0xffff, 0x226f, + // Entry 2D840 - 2D87F + 0xffff, 0xffff, 0x22ea, 0x234c, 0xffff, 0xffff, 0x23dd, 0x2426, + 0x2460, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2524, + 0x2561, 0x25a1, 0x25e3, 0x2648, 0xffff, 0xffff, 0x26ce, 0xffff, + 0x2726, 0xffff, 0xffff, 0x279f, 0xffff, 0x282d, 0xffff, 0xffff, + 0xffff, 0xffff, 0x28c0, 0xffff, 0x2935, 0x29ab, 0x2a03, 0x2a44, + 0xffff, 0xffff, 0xffff, 0x2ac8, 0x2b2d, 0x2b83, 0xffff, 0xffff, + 0x2c04, 0x2c78, 0x2cb6, 0x2cf5, 0xffff, 0xffff, 0x2d6a, 0x2da5, + 0x2de3, 0xffff, 0x2e53, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2D880 - 2D8BF + 0x2f38, 0x2f77, 0x2fb0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3075, 0xffff, 0xffff, 0x30d7, 0xffff, 0x312e, + 0xffff, 0x3186, 0x31ce, 0x320f, 0xffff, 0x3268, 0x32b0, 0xffff, + 0xffff, 0xffff, 0x332e, 0x337a, 0xffff, 0xffff, 0x1458, 0x157e, + 0x1861, 0x189e, 0xffff, 0xffff, 0x27da, 0x2ed5, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + // Entry 2D8C0 - 2D8FF + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0044, 0xffff, 0x0000, + 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0021, + 0x0025, 0x0029, 0x002d, 0x000d, 0x0044, 0xffff, 0x0031, 0x0038, + 0x0040, 0x0048, 0x0050, 0x005d, 0x0065, 0x0075, 0x0080, 0x008a, + 0x0093, 0x00a0, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + // Entry 2D900 - 2D93F + 0x24fb, 0x2994, 0x2994, 0x297a, 0x2994, 0x2994, 0x25bc, 0x2994, + 0x2994, 0x2994, 0x25bc, 0x24fb, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0044, 0x0010, 0x00a7, 0x00ab, + 0x00af, 0x00b3, 0x00b7, 0x00bb, 0x0007, 0x0044, 0x00bf, 0x00c7, + 0x00ce, 0x00d7, 0x00df, 0x00e6, 0x00ee, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x2994, 0x297e, 0x297e, 0x297e, 0x297e, 0x297e, + 0x2994, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + 0x0044, 0xffff, 0x00f6, 0x00f9, 0x00fc, 0x00ff, 0x0005, 0x0044, + // Entry 2D940 - 2D97F + 0xffff, 0x0102, 0x010a, 0x0112, 0x011a, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0044, + 0x0122, 0x0001, 0x0044, 0x0128, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0044, 0x0122, 0x0001, 0x0044, 0x0128, 0x0003, 0x00c1, 0x0000, + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0044, 0x012f, 0x0144, 0x0001, + 0x00c3, 0x0002, 0x0044, 0x0159, 0x0163, 0x0004, 0x00d5, 0x00cf, + 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, + // Entry 2D980 - 2D9BF + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2D9C0 - 2D9FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, + 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, + 0x0001, 0x012c, 0x0001, 0x0044, 0x016e, 0x0001, 0x0131, 0x0001, + 0x0044, 0x0178, 0x0001, 0x0136, 0x0001, 0x0044, 0x0181, 0x0001, + 0x013b, 0x0001, 0x0044, 0x00ee, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0044, 0x0188, 0x0003, 0x0044, 0x018f, 0x0198, 0x019d, 0x0001, + 0x014b, 0x0001, 0x0044, 0x01a4, 0x0001, 0x0150, 0x0001, 0x0044, + 0x01b7, 0x0001, 0x0155, 0x0001, 0x0044, 0x01c9, 0x0001, 0x015a, + // Entry 2DA00 - 2DA3F + 0x0001, 0x0044, 0x01ce, 0x0001, 0x015f, 0x0001, 0x0044, 0x01d6, + 0x0001, 0x0164, 0x0001, 0x0044, 0x01e2, 0x0002, 0x0003, 0x00e9, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, + 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + // Entry 2DA40 - 2DA7F + 0x0036, 0x0000, 0x0045, 0x000d, 0x0044, 0xffff, 0x01e9, 0x01ed, + 0x01f1, 0x01f5, 0x01f9, 0x01fd, 0x0201, 0x0205, 0x0209, 0x020d, + 0x0211, 0x0215, 0x000d, 0x0044, 0xffff, 0x0219, 0x0228, 0x0236, + 0x0243, 0x0255, 0x0263, 0x0273, 0x0283, 0x0291, 0x02a0, 0x02ad, + 0x02bf, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x24fb, + 0x223e, 0x297c, 0x297e, 0x24f9, 0x382e, 0x24f9, 0x24f9, 0x24fb, + 0x255c, 0x24fb, 0x255c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x0044, 0x02d5, 0x02d9, 0x02dd, 0x02e1, + // Entry 2DA80 - 2DABF + 0x02e5, 0x02e9, 0x02ed, 0x0007, 0x0044, 0x02f1, 0x02f9, 0x0303, + 0x030e, 0x0318, 0x0327, 0x0332, 0x0002, 0x0000, 0x0082, 0x0007, + 0x0000, 0x2483, 0x2159, 0x2992, 0x2992, 0x2992, 0x2992, 0x297e, + 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0044, + 0xffff, 0x0338, 0x033d, 0x0342, 0x0347, 0x0005, 0x0044, 0xffff, + 0x034c, 0x035a, 0x0368, 0x0376, 0x0001, 0x00a1, 0x0003, 0x00a5, + 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0044, 0x0384, + 0x0001, 0x0044, 0x0387, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0044, + // Entry 2DAC0 - 2DAFF + 0x0384, 0x0001, 0x0044, 0x0387, 0x0003, 0x00c1, 0x0000, 0x00bb, + 0x0001, 0x00bd, 0x0002, 0x0044, 0x038a, 0x039d, 0x0001, 0x00c3, + 0x0002, 0x0009, 0x0078, 0x5463, 0x0004, 0x00d5, 0x00cf, 0x00cc, + 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, + 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, + 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2DB00 - 2DB3F + 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, + 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, + 0x012c, 0x0001, 0x0044, 0x03af, 0x0001, 0x0131, 0x0001, 0x0044, + // Entry 2DB40 - 2DB7F + 0x03b5, 0x0001, 0x0136, 0x0001, 0x0044, 0x03ba, 0x0001, 0x013b, + 0x0001, 0x000a, 0x00dd, 0x0002, 0x0141, 0x0144, 0x0001, 0x0044, + 0x03be, 0x0003, 0x0044, 0x03c8, 0x03ce, 0x03d6, 0x0001, 0x014b, + 0x0001, 0x0044, 0x03db, 0x0001, 0x0150, 0x0001, 0x0044, 0x03ea, + 0x0001, 0x0155, 0x0001, 0x0044, 0x0400, 0x0001, 0x015a, 0x0001, + 0x0044, 0x0404, 0x0001, 0x015f, 0x0001, 0x0044, 0x040b, 0x0001, + 0x0164, 0x0001, 0x0044, 0x041b, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + // Entry 2DB80 - 2DBBF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, + 0x2246, 0x2386, 0x224e, 0x22d4, 0x22d8, 0x22dc, 0x234a, 0x22e0, + 0x21e2, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x238a, 0x067d, + // Entry 2DBC0 - 2DBFF + 0x2386, 0x2390, 0x2395, 0x239b, 0x23a2, 0x23ab, 0x23b2, 0x23ba, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, + 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, + 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0044, 0x0423, 0x0426, 0x0429, 0x042c, 0x042f, + 0x0432, 0x0435, 0x0007, 0x0044, 0x0438, 0x0441, 0x044a, 0x0452, + 0x045b, 0x046a, 0x047a, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x298e, 0x297a, 0x2992, 0x2159, 0x2992, 0x298c, 0x298e, 0x0001, + // Entry 2DC00 - 2DC3F + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0044, 0xffff, 0x0483, + 0x0490, 0x049f, 0x04ae, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x001c, 0x0494, 0x0001, + 0x001c, 0x0499, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + 0x00bd, 0x0002, 0x0044, 0x04bc, 0x04d0, 0x0001, 0x00c3, 0x0002, + 0x0009, 0x0078, 0x5463, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + // Entry 2DC40 - 2DC7F + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2DC80 - 2DCBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, + 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, + 0x0001, 0x0044, 0x04e4, 0x0001, 0x0131, 0x0001, 0x0044, 0x04ec, + 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, 0x013b, 0x0001, + 0x0044, 0x04f3, 0x0002, 0x0141, 0x0144, 0x0001, 0x0044, 0x04fa, + 0x0003, 0x0044, 0x0501, 0x0509, 0x050e, 0x0001, 0x014b, 0x0001, + // Entry 2DCC0 - 2DCFF + 0x0044, 0x0515, 0x0001, 0x0150, 0x0001, 0x0044, 0x051d, 0x0001, + 0x0155, 0x0001, 0x0044, 0x0529, 0x0001, 0x015a, 0x0001, 0x0044, + 0x052e, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, 0x0001, 0x0164, + 0x0001, 0x0044, 0x0536, 0x0003, 0x0004, 0x0283, 0x06b9, 0x000b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, + 0x0254, 0x0000, 0x026c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, + 0x0024, 0x0001, 0x0044, 0x053e, 0x0001, 0x0044, 0x0558, 0x0001, + // Entry 2DD00 - 2DD3F + 0x0044, 0x056c, 0x0001, 0x001e, 0x1a8e, 0x0004, 0x0038, 0x0032, + 0x002f, 0x0035, 0x0001, 0x0044, 0x057f, 0x0001, 0x0044, 0x057f, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0044, + 0x00a9, 0x0100, 0x0135, 0x0206, 0x0221, 0x0232, 0x0243, 0x0002, + 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0025, + 0xffff, 0x02bd, 0x37f0, 0x37f6, 0x37fc, 0x3801, 0x3807, 0x380d, + 0x3813, 0x3818, 0x381e, 0x3823, 0x3828, 0x000d, 0x0000, 0xffff, + 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, + // Entry 2DD40 - 2DD7F + 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0044, 0xffff, 0x0590, + 0x059a, 0x05a5, 0x05ab, 0x05b4, 0x05ba, 0x05c2, 0x05ca, 0x05d2, + 0x05dd, 0x05e6, 0x05f0, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, + 0x0025, 0xffff, 0x02bd, 0x37f0, 0x382d, 0x37fc, 0x3833, 0x3807, + 0x380d, 0x3813, 0x3818, 0x381e, 0x3823, 0x3828, 0x000d, 0x0000, + 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, + 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0044, 0xffff, + 0x0590, 0x059a, 0x05fa, 0x05ab, 0x0600, 0x05ba, 0x05c2, 0x05ca, + // Entry 2DD80 - 2DDBF + 0x05d2, 0x05dd, 0x05e6, 0x05f0, 0x0002, 0x00ac, 0x00d6, 0x0005, + 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0044, 0x0606, + 0x060e, 0x0615, 0x061b, 0x0623, 0x062c, 0x0634, 0x0007, 0x0000, + 0x298e, 0x255c, 0x2990, 0x2992, 0x24fb, 0x255c, 0x298e, 0x0007, + 0x0044, 0x063b, 0x063e, 0x0641, 0x0644, 0x0647, 0x064a, 0x064d, + 0x0007, 0x0044, 0x0650, 0x065b, 0x0665, 0x066e, 0x0679, 0x0685, + 0x0690, 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, + 0x0044, 0x069a, 0x06a2, 0x06a9, 0x06af, 0x06b7, 0x06c0, 0x06c8, + // Entry 2DDC0 - 2DDFF + 0x0007, 0x0000, 0x298e, 0x255c, 0x2990, 0x2992, 0x24fb, 0x255c, + 0x298e, 0x0007, 0x0044, 0x063b, 0x063e, 0x0641, 0x0644, 0x0647, + 0x064a, 0x064d, 0x0007, 0x0044, 0x06cf, 0x06da, 0x06e4, 0x06ed, + 0x06f8, 0x0704, 0x070f, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, + 0x010e, 0x0115, 0x0005, 0x0044, 0xffff, 0x0719, 0x0722, 0x072b, + 0x0734, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, + 0x0005, 0x0044, 0xffff, 0x073d, 0x074b, 0x0759, 0x0767, 0x0003, + 0x0120, 0x0127, 0x012e, 0x0005, 0x0044, 0xffff, 0x0719, 0x0722, + // Entry 2DE00 - 2DE3F + 0x072b, 0x0734, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, + 0x0139, 0x0005, 0x0044, 0xffff, 0x073d, 0x074b, 0x0759, 0x0767, + 0x0002, 0x0138, 0x019f, 0x0003, 0x013c, 0x015d, 0x017e, 0x0008, + 0x0148, 0x014e, 0x0145, 0x0151, 0x0154, 0x0157, 0x015a, 0x014b, + 0x0001, 0x0044, 0x0775, 0x0001, 0x0044, 0x077f, 0x0001, 0x0044, + 0x0789, 0x0001, 0x0044, 0x078f, 0x0001, 0x0044, 0x0796, 0x0001, + 0x0044, 0x079f, 0x0001, 0x0044, 0x07a9, 0x0001, 0x0044, 0x07b1, + 0x0008, 0x0169, 0x016f, 0x0166, 0x0172, 0x0175, 0x0178, 0x017b, + // Entry 2DE40 - 2DE7F + 0x016c, 0x0001, 0x0044, 0x0775, 0x0001, 0x0044, 0x077f, 0x0001, + 0x0044, 0x0789, 0x0001, 0x0044, 0x078f, 0x0001, 0x0044, 0x0796, + 0x0001, 0x0044, 0x07b8, 0x0001, 0x0044, 0x07a9, 0x0001, 0x0044, + 0x07b1, 0x0008, 0x018a, 0x0190, 0x0187, 0x0193, 0x0196, 0x0199, + 0x019c, 0x018d, 0x0001, 0x0044, 0x0775, 0x0001, 0x0044, 0x07c6, + 0x0001, 0x0044, 0x07d7, 0x0001, 0x0044, 0x07b8, 0x0001, 0x0044, + 0x0796, 0x0001, 0x0044, 0x07b8, 0x0001, 0x0044, 0x07a9, 0x0001, + 0x0044, 0x07b1, 0x0003, 0x01a3, 0x01c4, 0x01e5, 0x0008, 0x01af, + // Entry 2DE80 - 2DEBF + 0x01b5, 0x01ac, 0x01b8, 0x01bb, 0x01be, 0x01c1, 0x01b2, 0x0001, + 0x0044, 0x07e5, 0x0001, 0x0044, 0x077f, 0x0001, 0x0044, 0x0789, + 0x0001, 0x0044, 0x079f, 0x0001, 0x0044, 0x07ee, 0x0001, 0x0044, + 0x07f4, 0x0001, 0x0044, 0x0801, 0x0001, 0x0044, 0x0808, 0x0008, + 0x01d0, 0x01d6, 0x01cd, 0x01d9, 0x01dc, 0x01df, 0x01e2, 0x01d3, + 0x0001, 0x0044, 0x07e5, 0x0001, 0x0044, 0x077f, 0x0001, 0x0044, + 0x0789, 0x0001, 0x0044, 0x078f, 0x0001, 0x0044, 0x07ee, 0x0001, + 0x0044, 0x079f, 0x0001, 0x0044, 0x0801, 0x0001, 0x0044, 0x0808, + // Entry 2DEC0 - 2DEFF + 0x0008, 0x01f1, 0x01f7, 0x01ee, 0x01fa, 0x01fd, 0x0200, 0x0203, + 0x01f4, 0x0001, 0x0044, 0x07e5, 0x0001, 0x0044, 0x080e, 0x0001, + 0x0044, 0x081e, 0x0001, 0x0044, 0x07f4, 0x0001, 0x0044, 0x07ee, + 0x0001, 0x0044, 0x07f4, 0x0001, 0x0044, 0x0801, 0x0001, 0x0044, + 0x0808, 0x0003, 0x0210, 0x0216, 0x020a, 0x0001, 0x020c, 0x0002, + 0x0044, 0x082b, 0x083d, 0x0001, 0x0212, 0x0002, 0x0044, 0x0849, + 0x0851, 0x0002, 0x0219, 0x021d, 0x0002, 0x0044, 0x0849, 0x0851, + 0x0002, 0x0044, 0x0857, 0x085c, 0x0004, 0x022f, 0x0229, 0x0226, + // Entry 2DF00 - 2DF3F + 0x022c, 0x0001, 0x0044, 0x0860, 0x0001, 0x0044, 0x0878, 0x0001, + 0x0044, 0x088a, 0x0001, 0x0007, 0x0277, 0x0004, 0x0240, 0x023a, + 0x0237, 0x023d, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0251, + 0x024b, 0x0248, 0x024e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0256, 0x0001, 0x0258, 0x0003, 0x0000, 0x0000, 0x025c, 0x000e, + 0x0044, 0x08d2, 0x089b, 0x08a2, 0x08ab, 0x08b4, 0x08bb, 0x08c3, + // Entry 2DF40 - 2DF7F + 0x08cc, 0x08db, 0x08e2, 0x08e8, 0x08ef, 0x08f6, 0x08fa, 0x0001, + 0x026e, 0x0001, 0x0270, 0x0003, 0x0000, 0x0000, 0x0274, 0x000d, + 0x0044, 0xffff, 0x0900, 0x0909, 0x0910, 0x0919, 0x0922, 0x0930, + 0x093e, 0x0947, 0x094f, 0x0959, 0x0962, 0x096e, 0x0040, 0x02c4, + 0x0000, 0x0000, 0x02c9, 0x02e2, 0x02f6, 0x030a, 0x0323, 0x0337, + 0x034b, 0x0364, 0x0378, 0x038c, 0x03a9, 0x03c1, 0x0000, 0x0000, + 0x0000, 0x03d9, 0x03f4, 0x0408, 0x0000, 0x0000, 0x0000, 0x041c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0421, 0x0437, 0x044d, + // Entry 2DF80 - 2DFBF + 0x0463, 0x0479, 0x048f, 0x04a5, 0x04bb, 0x04d1, 0x04e7, 0x04fd, + 0x0513, 0x0529, 0x053f, 0x0555, 0x056b, 0x0581, 0x0597, 0x05ad, + 0x05c3, 0x05d9, 0x0000, 0x05ef, 0x0000, 0x05f4, 0x060c, 0x0620, + 0x0634, 0x064c, 0x0660, 0x0674, 0x068c, 0x06a0, 0x06b4, 0x0001, + 0x02c6, 0x0001, 0x0044, 0x097c, 0x0003, 0x02cd, 0x02d0, 0x02d5, + 0x0001, 0x0044, 0x0981, 0x0003, 0x0044, 0x0986, 0x099a, 0x09a7, + 0x0002, 0x02d8, 0x02dd, 0x0003, 0x0044, 0x09b8, 0x09c8, 0x09b8, + 0x0003, 0x0044, 0x09d6, 0x09e7, 0x09d6, 0x0003, 0x02e6, 0x0000, + // Entry 2DFC0 - 2DFFF + 0x02e9, 0x0001, 0x000d, 0x039d, 0x0002, 0x02ec, 0x02f1, 0x0003, + 0x0044, 0x09f6, 0x09f6, 0x09f6, 0x0003, 0x0044, 0x0a02, 0x0a02, + 0x0a02, 0x0003, 0x02fa, 0x0000, 0x02fd, 0x0001, 0x000d, 0x039d, + 0x0002, 0x0300, 0x0305, 0x0003, 0x0044, 0x09f6, 0x09f6, 0x09f6, + 0x0003, 0x0044, 0x0a02, 0x0a02, 0x0a02, 0x0003, 0x030e, 0x0311, + 0x0316, 0x0001, 0x0044, 0x0a0f, 0x0003, 0x0044, 0x0a1a, 0x0a30, + 0x0a40, 0x0002, 0x0319, 0x031e, 0x0003, 0x0044, 0x0a55, 0x0a6d, + 0x0a55, 0x0003, 0x0044, 0x0a83, 0x0a9c, 0x0a83, 0x0003, 0x0327, + // Entry 2E000 - 2E03F + 0x0000, 0x032a, 0x0001, 0x0044, 0x0ab3, 0x0002, 0x032d, 0x0332, + 0x0003, 0x0044, 0x0ab8, 0x0ab8, 0x0ab8, 0x0003, 0x0044, 0x0ac7, + 0x0ac7, 0x0ac7, 0x0003, 0x033b, 0x0000, 0x033e, 0x0001, 0x0044, + 0x0ab3, 0x0002, 0x0341, 0x0346, 0x0003, 0x0044, 0x0ab8, 0x0ab8, + 0x0ab8, 0x0003, 0x0044, 0x0ac7, 0x0ac7, 0x0ac7, 0x0003, 0x034f, + 0x0352, 0x0357, 0x0001, 0x0044, 0x0ad7, 0x0003, 0x0044, 0x0ae0, + 0x0af7, 0x0b07, 0x0002, 0x035a, 0x035f, 0x0003, 0x0044, 0x0b1b, + 0x0b2f, 0x0b1b, 0x0003, 0x0044, 0x0b41, 0x0b56, 0x0b41, 0x0003, + // Entry 2E040 - 2E07F + 0x0368, 0x0000, 0x036b, 0x0001, 0x0044, 0x0b69, 0x0002, 0x036e, + 0x0373, 0x0003, 0x0044, 0x0b6f, 0x0b6f, 0x0b6f, 0x0003, 0x0044, + 0x0b7e, 0x0b7e, 0x0b7e, 0x0003, 0x037c, 0x0000, 0x037f, 0x0001, + 0x0044, 0x0b69, 0x0002, 0x0382, 0x0387, 0x0003, 0x0044, 0x0b6f, + 0x0b6f, 0x0b6f, 0x0003, 0x0044, 0x0b7e, 0x0b7e, 0x0b7e, 0x0004, + 0x0391, 0x0394, 0x0399, 0x03a6, 0x0001, 0x0044, 0x0b8e, 0x0003, + 0x0044, 0x0b97, 0x0baf, 0x0bc0, 0x0002, 0x039c, 0x03a1, 0x0003, + 0x0044, 0x0bd5, 0x0be9, 0x0bd5, 0x0003, 0x0044, 0x0bfc, 0x0c11, + // Entry 2E080 - 2E0BF + 0x0bfc, 0x0001, 0x0044, 0x0c25, 0x0004, 0x03ae, 0x0000, 0x03b1, + 0x03be, 0x0001, 0x0044, 0x0c33, 0x0002, 0x03b4, 0x03b9, 0x0003, + 0x0044, 0x0c38, 0x0c38, 0x0c38, 0x0003, 0x0044, 0x0c46, 0x0c46, + 0x0c46, 0x0001, 0x0044, 0x0c25, 0x0004, 0x03c6, 0x0000, 0x03c9, + 0x03d6, 0x0001, 0x0044, 0x0c33, 0x0002, 0x03cc, 0x03d1, 0x0003, + 0x0044, 0x0c38, 0x0c38, 0x0c38, 0x0003, 0x0044, 0x0c46, 0x0c46, + 0x0c46, 0x0001, 0x0044, 0x0c25, 0x0003, 0x03dd, 0x03e0, 0x03e7, + 0x0001, 0x0043, 0x0693, 0x0005, 0x0044, 0x0c5e, 0x0c64, 0x0c6c, + // Entry 2E0C0 - 2E0FF + 0x0c55, 0x0c71, 0x0002, 0x03ea, 0x03ef, 0x0003, 0x0044, 0x0c78, + 0x0c89, 0x0c78, 0x0003, 0x0044, 0x0c99, 0x0cab, 0x0c99, 0x0003, + 0x03f8, 0x0000, 0x03fb, 0x0001, 0x0029, 0x008f, 0x0002, 0x03fe, + 0x0403, 0x0003, 0x0044, 0x0cbc, 0x0cc8, 0x0cbc, 0x0003, 0x0044, + 0x0cd5, 0x0ce2, 0x0cd5, 0x0003, 0x040c, 0x0000, 0x040f, 0x0001, + 0x0029, 0x008f, 0x0002, 0x0412, 0x0417, 0x0003, 0x0044, 0x0cbc, + 0x0cc8, 0x0cbc, 0x0003, 0x0044, 0x0cd5, 0x0ce2, 0x0cd5, 0x0001, + 0x041e, 0x0001, 0x0044, 0x0cf0, 0x0003, 0x0000, 0x0425, 0x042a, + // Entry 2E100 - 2E13F + 0x0003, 0x0044, 0x0d00, 0x0d1a, 0x0d2d, 0x0002, 0x042d, 0x0432, + 0x0003, 0x0044, 0x0d44, 0x0d5a, 0x0d44, 0x0003, 0x0044, 0x0d6f, + 0x0d86, 0x0d6f, 0x0003, 0x0000, 0x043b, 0x0440, 0x0003, 0x0044, + 0x0d9c, 0x0da9, 0x0db8, 0x0002, 0x0443, 0x0448, 0x0003, 0x0044, + 0x0d44, 0x0d5a, 0x0d44, 0x0003, 0x0044, 0x0d6f, 0x0d86, 0x0d6f, + 0x0003, 0x0000, 0x0451, 0x0456, 0x0003, 0x0044, 0x0d9c, 0x0da9, + 0x0db8, 0x0002, 0x0459, 0x045e, 0x0003, 0x0044, 0x0d44, 0x0d5a, + 0x0d44, 0x0003, 0x0044, 0x0d6f, 0x0d86, 0x0d6f, 0x0003, 0x0000, + // Entry 2E140 - 2E17F + 0x0467, 0x046c, 0x0003, 0x0044, 0x0dc6, 0x0ddf, 0x0df1, 0x0002, + 0x046f, 0x0474, 0x0003, 0x0044, 0x0e07, 0x0e1c, 0x0e07, 0x0003, + 0x0044, 0x0e30, 0x0e46, 0x0e30, 0x0003, 0x0000, 0x047d, 0x0482, + 0x0003, 0x0044, 0x0e5b, 0x0e67, 0x0e75, 0x0002, 0x0485, 0x048a, + 0x0003, 0x0044, 0x0e07, 0x0e1c, 0x0e07, 0x0003, 0x0044, 0x0e30, + 0x0e46, 0x0e30, 0x0003, 0x0000, 0x0493, 0x0498, 0x0003, 0x0044, + 0x0e5b, 0x0e67, 0x0e75, 0x0002, 0x049b, 0x04a0, 0x0003, 0x0044, + 0x0e07, 0x0e1c, 0x0e07, 0x0003, 0x0044, 0x0e30, 0x0e46, 0x0e30, + // Entry 2E180 - 2E1BF + 0x0003, 0x0000, 0x04a9, 0x04ae, 0x0003, 0x0044, 0x0e82, 0x0e9a, + 0x0eab, 0x0002, 0x04b1, 0x04b6, 0x0003, 0x0044, 0x0ec0, 0x0ed4, + 0x0ec0, 0x0003, 0x0044, 0x0ee7, 0x0efc, 0x0ee7, 0x0003, 0x0000, + 0x04bf, 0x04c4, 0x0003, 0x0044, 0x0f10, 0x0f1b, 0x0f28, 0x0002, + 0x04c7, 0x04cc, 0x0003, 0x0044, 0x0ec0, 0x0ed4, 0x0ec0, 0x0003, + 0x0044, 0x0ee7, 0x0efc, 0x0ee7, 0x0003, 0x0000, 0x04d5, 0x04da, + 0x0003, 0x0044, 0x0f10, 0x0f1b, 0x0f28, 0x0002, 0x04dd, 0x04e2, + 0x0003, 0x0044, 0x0ec0, 0x0ed4, 0x0ec0, 0x0003, 0x0044, 0x0ee7, + // Entry 2E1C0 - 2E1FF + 0x0efc, 0x0ee7, 0x0003, 0x0000, 0x04eb, 0x04f0, 0x0003, 0x0044, + 0x0f34, 0x0f4e, 0x0f61, 0x0002, 0x04f3, 0x04f8, 0x0003, 0x0044, + 0x0f78, 0x0f8e, 0x0f78, 0x0003, 0x0044, 0x0fa3, 0x0fba, 0x0fa3, + 0x0003, 0x0000, 0x0501, 0x0506, 0x0003, 0x0044, 0x0fd0, 0x0fdd, + 0x0fec, 0x0002, 0x0509, 0x050e, 0x0003, 0x0044, 0x0f78, 0x0f8e, + 0x0f78, 0x0003, 0x0044, 0x0fa3, 0x0fba, 0x0fa3, 0x0003, 0x0000, + 0x0517, 0x051c, 0x0003, 0x0044, 0x0fd0, 0x0fdd, 0x0fec, 0x0002, + 0x051f, 0x0524, 0x0003, 0x0044, 0x0f78, 0x0f8e, 0x0f78, 0x0003, + // Entry 2E200 - 2E23F + 0x0044, 0x0fa3, 0x0fba, 0x0fa3, 0x0003, 0x0000, 0x052d, 0x0532, + 0x0003, 0x0044, 0x0ffa, 0x1015, 0x1029, 0x0002, 0x0535, 0x053a, + 0x0003, 0x0044, 0x1041, 0x1058, 0x1041, 0x0003, 0x0044, 0x106e, + 0x1086, 0x106e, 0x0003, 0x0000, 0x0543, 0x0548, 0x0003, 0x0044, + 0x109d, 0x10ab, 0x10bb, 0x0002, 0x054b, 0x0550, 0x0003, 0x0044, + 0x1041, 0x1058, 0x1041, 0x0003, 0x0044, 0x106e, 0x1086, 0x106e, + 0x0003, 0x0000, 0x0559, 0x055e, 0x0003, 0x0044, 0x109d, 0x10ab, + 0x10bb, 0x0002, 0x0561, 0x0566, 0x0003, 0x0044, 0x1041, 0x1058, + // Entry 2E240 - 2E27F + 0x1041, 0x0003, 0x0044, 0x106e, 0x1086, 0x106e, 0x0003, 0x0000, + 0x056f, 0x0574, 0x0003, 0x0044, 0x10ca, 0x10e4, 0x10f7, 0x0002, + 0x0577, 0x057c, 0x0003, 0x0044, 0x110e, 0x1124, 0x110e, 0x0003, + 0x0044, 0x1139, 0x1150, 0x1139, 0x0003, 0x0000, 0x0585, 0x058a, + 0x0003, 0x0044, 0x1166, 0x1173, 0x1182, 0x0002, 0x058d, 0x0592, + 0x0003, 0x0044, 0x110e, 0x1124, 0x110e, 0x0003, 0x0044, 0x1139, + 0x1150, 0x1139, 0x0003, 0x0000, 0x059b, 0x05a0, 0x0003, 0x0044, + 0x1166, 0x1173, 0x1182, 0x0002, 0x05a3, 0x05a8, 0x0003, 0x0044, + // Entry 2E280 - 2E2BF + 0x110e, 0x1124, 0x110e, 0x0003, 0x0044, 0x1139, 0x1150, 0x1139, + 0x0003, 0x0000, 0x05b1, 0x05b6, 0x0003, 0x0044, 0x1190, 0x11a9, + 0x11bb, 0x0002, 0x05b9, 0x05be, 0x0003, 0x0044, 0x11d1, 0x11e6, + 0x11d1, 0x0003, 0x0044, 0x11fa, 0x1210, 0x11fa, 0x0003, 0x0000, + 0x05c7, 0x05cc, 0x0003, 0x0044, 0x1225, 0x1231, 0x123f, 0x0002, + 0x05cf, 0x05d4, 0x0003, 0x0044, 0x11d1, 0x11e6, 0x11d1, 0x0003, + 0x0044, 0x11fa, 0x1210, 0x11fa, 0x0003, 0x0000, 0x05dd, 0x05e2, + 0x0003, 0x0044, 0x1225, 0x1231, 0x123f, 0x0002, 0x05e5, 0x05ea, + // Entry 2E2C0 - 2E2FF + 0x0003, 0x0044, 0x11d1, 0x11e6, 0x11d1, 0x0003, 0x0044, 0x11fa, + 0x1210, 0x11fa, 0x0001, 0x05f1, 0x0001, 0x0044, 0x124c, 0x0003, + 0x05f8, 0x05fb, 0x05ff, 0x0001, 0x0044, 0x126b, 0x0002, 0x0044, + 0xffff, 0x1273, 0x0002, 0x0602, 0x0607, 0x0003, 0x0044, 0x1282, + 0x1294, 0x1282, 0x0003, 0x0044, 0x12a5, 0x12b8, 0x12a5, 0x0003, + 0x0610, 0x0000, 0x0613, 0x0001, 0x0044, 0x12ca, 0x0002, 0x0616, + 0x061b, 0x0003, 0x0044, 0x12ce, 0x12ce, 0x12ce, 0x0003, 0x0044, + 0x12dc, 0x12dc, 0x12dc, 0x0003, 0x0624, 0x0000, 0x0627, 0x0001, + // Entry 2E300 - 2E33F + 0x0000, 0x2143, 0x0002, 0x062a, 0x062f, 0x0003, 0x0044, 0x12eb, + 0x12eb, 0x12eb, 0x0003, 0x0044, 0x12f6, 0x12f6, 0x12f6, 0x0003, + 0x0638, 0x063b, 0x063f, 0x0001, 0x0044, 0x1302, 0x0002, 0x0044, + 0xffff, 0x130b, 0x0002, 0x0642, 0x0647, 0x0003, 0x0044, 0x131b, + 0x132e, 0x131b, 0x0003, 0x0044, 0x1340, 0x1354, 0x1340, 0x0003, + 0x0650, 0x0000, 0x0653, 0x0001, 0x0001, 0x075a, 0x0002, 0x0656, + 0x065b, 0x0003, 0x0044, 0x1367, 0x1367, 0x1367, 0x0003, 0x0044, + 0x1375, 0x1375, 0x1375, 0x0003, 0x0664, 0x0000, 0x0667, 0x0001, + // Entry 2E340 - 2E37F + 0x0041, 0x092f, 0x0002, 0x066a, 0x066f, 0x0003, 0x0044, 0x1384, + 0x1391, 0x1384, 0x0003, 0x0044, 0x139f, 0x139f, 0x139f, 0x0003, + 0x0678, 0x067b, 0x067f, 0x0001, 0x0044, 0x13ae, 0x0002, 0x0044, + 0xffff, 0x13b7, 0x0002, 0x0682, 0x0687, 0x0003, 0x0044, 0x13bd, + 0x13d0, 0x13bd, 0x0003, 0x0044, 0x13e2, 0x13f6, 0x13e2, 0x0003, + 0x0690, 0x0000, 0x0693, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0696, + 0x069b, 0x0003, 0x0044, 0x1409, 0x1409, 0x1409, 0x0003, 0x0044, + 0x1417, 0x1417, 0x1417, 0x0003, 0x06a4, 0x0000, 0x06a7, 0x0001, + // Entry 2E380 - 2E3BF + 0x0000, 0x2002, 0x0002, 0x06aa, 0x06af, 0x0003, 0x0044, 0x1426, + 0x1426, 0x1426, 0x0003, 0x0044, 0x1432, 0x143f, 0x1432, 0x0001, + 0x06b6, 0x0001, 0x0044, 0x144b, 0x0004, 0x06be, 0x06c3, 0x06c8, + 0x06d7, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0044, + 0x1457, 0x1468, 0x147b, 0x0002, 0x0000, 0x06cb, 0x0003, 0x0000, + 0x06d2, 0x06cf, 0x0001, 0x0044, 0x1490, 0x0003, 0x0044, 0xffff, + 0x14b2, 0x14d0, 0x0002, 0x08a0, 0x06da, 0x0003, 0x0774, 0x080a, + 0x06de, 0x0094, 0x0044, 0x14e5, 0x14f9, 0x1510, 0x1526, 0x1558, + // Entry 2E3C0 - 2E3FF + 0x15a0, 0x15dc, 0x161b, 0x165d, 0x1696, 0x16d2, 0x171a, 0x1754, + 0x1796, 0x17e9, 0x1834, 0x1884, 0x18c6, 0x1916, 0x198a, 0x1a03, + 0x1a65, 0x1ac0, 0x1b0c, 0x1b50, 0x1b85, 0x1b94, 0x1bb7, 0x1bea, + 0x1c16, 0x1c47, 0x1c6c, 0x1ca7, 0x1ce0, 0x1d1e, 0x1d53, 0x1d6b, + 0x1d99, 0x1dda, 0x1e15, 0x1e3c, 0x1e4b, 0x1e5f, 0x1e8a, 0x1ec5, + 0x1eeb, 0x1f3b, 0x1f74, 0x1fa9, 0x1fff, 0x2059, 0x2082, 0x2099, + 0x20d1, 0x20e0, 0x2102, 0x212f, 0x2143, 0x216b, 0x21c1, 0x21fe, + 0x2214, 0x2239, 0x2284, 0x22c0, 0x22e9, 0x22fe, 0x2314, 0x2326, + // Entry 2E400 - 2E43F + 0x2341, 0x235b, 0x2382, 0x23bd, 0x23fc, 0x243a, 0x2489, 0x24dc, + 0x24f6, 0x251d, 0x2548, 0x2569, 0x25a0, 0x25b4, 0x25dd, 0x261a, + 0x2640, 0x266f, 0x2680, 0x2692, 0x26a7, 0x26ce, 0x2701, 0x272d, + 0x27a1, 0x2814, 0x2856, 0x2883, 0x2891, 0x289d, 0x28c2, 0x2911, + 0x295e, 0x2999, 0x29a4, 0x29d5, 0x2a2e, 0x2a72, 0x2aad, 0x2ae0, + 0x2aec, 0x2b16, 0x2b52, 0x2b87, 0x2bb6, 0x2be8, 0x2c33, 0x2c44, + 0x2c52, 0x2c62, 0x2c72, 0x2c91, 0x2cd0, 0x2d07, 0x2d2e, 0x2d43, + 0x2d55, 0x2d6a, 0x2d84, 0x2d94, 0x2da1, 0x2dba, 0x2de3, 0x2df9, + // Entry 2E440 - 2E47F + 0x2e14, 0x2e3d, 0x2e61, 0x2e9c, 0x2eb9, 0x2efc, 0x2f41, 0x2f6c, + 0x2f92, 0x2fdb, 0x300e, 0x301d, 0x302f, 0x3058, 0x309d, 0x0094, + 0x0044, 0xffff, 0xffff, 0xffff, 0xffff, 0x1543, 0x1591, 0x15cd, + 0x1609, 0x164e, 0x168a, 0x16bd, 0x170b, 0x1747, 0x177d, 0x17d7, + 0x181c, 0x1873, 0x18b5, 0x18f7, 0x1963, 0x19e7, 0x1a4a, 0x1aaa, + 0x1afb, 0x1b3d, 0xffff, 0xffff, 0x1ba5, 0xffff, 0x1c05, 0xffff, + 0x1c5d, 0x1c99, 0x1cd2, 0x1d0b, 0xffff, 0xffff, 0x1d88, 0x1dca, + 0x1e09, 0xffff, 0xffff, 0xffff, 0x1e74, 0xffff, 0x1ed5, 0x1f26, + // Entry 2E480 - 2E4BF + 0xffff, 0x1f95, 0x1fe0, 0x204c, 0xffff, 0xffff, 0xffff, 0xffff, + 0x20f3, 0xffff, 0xffff, 0x2153, 0x21aa, 0xffff, 0xffff, 0x2223, + 0x2274, 0x22b3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2374, 0x23ad, 0x23ec, 0x242b, 0x2467, 0xffff, 0xffff, 0x250f, + 0xffff, 0x2555, 0xffff, 0xffff, 0x25c6, 0xffff, 0x2630, 0xffff, + 0xffff, 0xffff, 0xffff, 0x26bc, 0xffff, 0x270f, 0x2778, 0x2802, + 0x2847, 0xffff, 0xffff, 0xffff, 0x28ac, 0x28fd, 0x2948, 0xffff, + 0xffff, 0x29ba, 0x2a1a, 0x2a65, 0x2a9b, 0xffff, 0xffff, 0x2b05, + // Entry 2E4C0 - 2E4FF + 0x2b47, 0x2b77, 0xffff, 0x2bca, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2c80, 0x2cc2, 0x2cfb, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2dad, 0xffff, 0xffff, 0x2e07, 0xffff, + 0x2e4b, 0xffff, 0x2ea9, 0x2ee8, 0x2f33, 0xffff, 0x2f7e, 0x2fc9, + 0xffff, 0xffff, 0xffff, 0x3048, 0x3087, 0x0094, 0x0044, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1574, 0x15b6, 0x15f2, 0x1634, 0x1673, + 0x16a9, 0x16ee, 0x1730, 0x1768, 0x17b6, 0x1802, 0x1853, 0x189c, + 0x18de, 0x193c, 0x19b8, 0x1a26, 0x1a87, 0x1add, 0x1b24, 0x1b6a, + // Entry 2E500 - 2E53F + 0xffff, 0xffff, 0x1bd0, 0xffff, 0x1c2e, 0xffff, 0x1c82, 0x1cbc, + 0x1cf5, 0x1d38, 0xffff, 0xffff, 0x1db1, 0x1df1, 0x1e28, 0xffff, + 0xffff, 0xffff, 0x1ea7, 0xffff, 0x1f08, 0x1f57, 0xffff, 0x1fc4, + 0x2025, 0x206d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2118, 0xffff, + 0xffff, 0x218a, 0x21df, 0xffff, 0xffff, 0x2256, 0x229b, 0x22d4, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2397, 0x23d4, + 0x2413, 0x2450, 0x24b2, 0xffff, 0xffff, 0x2532, 0xffff, 0x2584, + 0xffff, 0xffff, 0x25fb, 0xffff, 0x2657, 0xffff, 0xffff, 0xffff, + // Entry 2E540 - 2E57F + 0xffff, 0x26e7, 0xffff, 0x2752, 0x27d1, 0x282d, 0x286c, 0xffff, + 0xffff, 0xffff, 0x28df, 0x292c, 0x297b, 0xffff, 0xffff, 0x29f7, + 0x2a49, 0x2a86, 0x2ac6, 0xffff, 0xffff, 0x2b2e, 0x2b64, 0x2b9e, + 0xffff, 0x2c0d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ca9, + 0x2ce5, 0x2d1a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2dce, 0xffff, 0xffff, 0x2e28, 0xffff, 0x2e7e, 0xffff, + 0x2ed0, 0x2f17, 0x2f56, 0xffff, 0x2fad, 0x2ff4, 0xffff, 0xffff, + 0xffff, 0x306f, 0x30ba, 0x0003, 0x08a4, 0x090a, 0x08d7, 0x0031, + // Entry 2E580 - 2E5BF + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2E5C0 - 2E5FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2E600 - 2E63F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, + 0x0002, 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, + // Entry 2E640 - 2E67F + 0x0053, 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, + 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x0045, 0xffff, + 0x0000, 0x0004, 0x0009, 0x000f, 0x0013, 0x0018, 0x001c, 0x0021, + 0x0028, 0x002d, 0x0032, 0x0039, 0x000d, 0x0045, 0xffff, 0x0040, + 0x004b, 0x0051, 0x0064, 0x007f, 0x009b, 0x00a8, 0x00b4, 0x00cb, + 0x00d4, 0x00dd, 0x00e9, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, + 0x0000, 0x0063, 0x0007, 0x0005, 0x06b6, 0x06ba, 0x06be, 0x06c2, + 0x23c2, 0x2322, 0x06ce, 0x0007, 0x0045, 0x00f7, 0x0102, 0x010c, + // Entry 2E680 - 2E6BF + 0x0113, 0x011e, 0x0128, 0x012f, 0x0002, 0x0000, 0x006f, 0x0007, + 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0033, + 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x002b, + 0xffff, 0x00de, 0x00e1, 0x00e4, 0x00e7, 0x0005, 0x0045, 0xffff, + 0x0139, 0x0141, 0x0149, 0x0151, 0x0001, 0x008e, 0x0003, 0x0092, + 0x0000, 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x0045, 0x0159, + 0x0001, 0x0045, 0x0166, 0x0002, 0x009e, 0x00a1, 0x0001, 0x0045, + 0x0159, 0x0001, 0x0045, 0x0166, 0x0003, 0x00ae, 0x0000, 0x00a8, + // Entry 2E6C0 - 2E6FF + 0x0001, 0x00aa, 0x0002, 0x0045, 0x0170, 0x0181, 0x0001, 0x00b0, + 0x0002, 0x0037, 0x03ce, 0x2008, 0x0004, 0x00c2, 0x00bc, 0x00b9, + 0x00bf, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00d3, 0x00cd, + 0x00ca, 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, + 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2E700 - 2E73F + 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x013b, 0x0000, 0x0140, 0x0000, 0x0000, + 0x0145, 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x014f, 0x0001, + 0x0119, 0x0001, 0x0045, 0x0191, 0x0001, 0x011e, 0x0001, 0x0045, + 0x019b, 0x0001, 0x0123, 0x0001, 0x0045, 0x01a4, 0x0001, 0x0128, + // Entry 2E740 - 2E77F + 0x0001, 0x0045, 0x01ad, 0x0002, 0x012e, 0x0131, 0x0001, 0x0045, + 0x01b5, 0x0003, 0x0045, 0x01c3, 0x01ca, 0x01d2, 0x0001, 0x0138, + 0x0001, 0x0045, 0x01df, 0x0001, 0x013d, 0x0001, 0x0045, 0x01f5, + 0x0001, 0x0142, 0x0001, 0x0045, 0x020c, 0x0001, 0x0147, 0x0001, + 0x0045, 0x0216, 0x0001, 0x014c, 0x0001, 0x0009, 0x030c, 0x0001, + 0x0151, 0x0001, 0x0045, 0x0222, 0x0002, 0x0003, 0x00e2, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + // Entry 2E780 - 2E7BF + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x0098, 0x00b0, + 0x00c0, 0x00d1, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0045, 0xffff, 0x0237, 0x023b, 0x023f, + 0x0243, 0x0248, 0x024e, 0x0252, 0x0256, 0x025a, 0x025e, 0x0262, + 0x0266, 0x000d, 0x0045, 0xffff, 0x026a, 0x0273, 0x027e, 0x0284, + 0x028c, 0x0292, 0x0298, 0x02a0, 0x02a7, 0x02b0, 0x02b8, 0x02c0, + // Entry 2E7C0 - 2E7FF + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, + 0x297a, 0x2977, 0x297a, 0x297e, 0x297e, 0x2980, 0x298e, 0x2990, + 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0045, 0x02c8, 0x02cc, 0x02d0, 0x02d4, 0x02d8, + 0x02dc, 0x02e0, 0x0007, 0x0019, 0x0128, 0x246c, 0x2475, 0x247b, + 0x2483, 0x2488, 0x248f, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x25bc, 0x297a, 0x2159, 0x2159, 0x2159, 0x2159, 0x2483, 0x0001, + 0x008d, 0x0003, 0x0000, 0x0000, 0x0091, 0x0005, 0x0045, 0xffff, + // Entry 2E800 - 2E83F + 0x02e4, 0x02f6, 0x030a, 0x031e, 0x0001, 0x009a, 0x0003, 0x009e, + 0x0000, 0x00a7, 0x0002, 0x00a1, 0x00a4, 0x0001, 0x0045, 0x032f, + 0x0001, 0x0045, 0x0333, 0x0002, 0x00aa, 0x00ad, 0x0001, 0x0045, + 0x032f, 0x0001, 0x0045, 0x0333, 0x0003, 0x00ba, 0x0000, 0x00b4, + 0x0001, 0x00b6, 0x0002, 0x0045, 0x0337, 0x0348, 0x0001, 0x00bc, + 0x0002, 0x0019, 0x01ce, 0x2498, 0x0004, 0x00ce, 0x00c8, 0x00c5, + 0x00cb, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00df, 0x00d9, + // Entry 2E840 - 2E87F + 0x00d6, 0x00dc, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0123, + 0x0000, 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x012d, 0x0000, 0x0000, 0x0132, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0142, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2E880 - 2E8BF + 0x0000, 0x0000, 0x0000, 0x0147, 0x0000, 0x014c, 0x0000, 0x0000, + 0x0151, 0x0000, 0x0000, 0x0156, 0x0000, 0x0000, 0x015b, 0x0001, + 0x0125, 0x0001, 0x0045, 0x0359, 0x0001, 0x012a, 0x0001, 0x0005, + 0x0787, 0x0001, 0x012f, 0x0001, 0x0019, 0x01db, 0x0001, 0x0134, + 0x0001, 0x0019, 0x0128, 0x0002, 0x013a, 0x013d, 0x0001, 0x0045, + 0x0360, 0x0003, 0x0019, 0x01eb, 0x249b, 0x24a1, 0x0001, 0x0144, + 0x0001, 0x0045, 0x0367, 0x0001, 0x0149, 0x0001, 0x0019, 0x01e1, + 0x0001, 0x014e, 0x0001, 0x0045, 0x0379, 0x0001, 0x0153, 0x0001, + // Entry 2E8C0 - 2E8FF + 0x0045, 0x0380, 0x0001, 0x0158, 0x0001, 0x0009, 0x00ba, 0x0001, + 0x015d, 0x0001, 0x0045, 0x0388, 0x0002, 0x0003, 0x00d1, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, + 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, + 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + // Entry 2E900 - 2E93F + 0x0000, 0x0045, 0x000d, 0x000a, 0xffff, 0x0000, 0x5dc3, 0x5dc7, + 0x5dcb, 0x5dcf, 0x5dd2, 0x5dd6, 0x5dda, 0x5dde, 0x5de2, 0x5de6, + 0x5dea, 0x000d, 0x0045, 0xffff, 0x0399, 0x03a0, 0x03a8, 0x03ad, + 0x03b3, 0x03b6, 0x03ba, 0x03c0, 0x03c4, 0x03cb, 0x03d1, 0x03d7, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2004, 0x2006, + 0x1f9a, 0x1f9c, 0x1f9a, 0x2004, 0x2004, 0x1f98, 0x2002, 0x1f98, + 0x1f96, 0x2008, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0045, 0x03dd, 0x03e1, 0x03e5, 0x03e9, 0x03ed, + // Entry 2E940 - 2E97F + 0x03f0, 0x03f4, 0x0007, 0x0045, 0x03f8, 0x03ff, 0x0405, 0x040b, + 0x0414, 0x0419, 0x0422, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x2008, 0x200a, 0x1f9a, 0x1f9a, 0x2004, 0x1f94, 0x2002, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x001c, 0xffff, + 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0045, 0xffff, 0x0428, + 0x0432, 0x043d, 0x0448, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, + 0x00a5, 0x0002, 0x0045, 0x0453, 0x0463, 0x0001, 0x00ab, 0x0002, + 0x0045, 0x0473, 0x047b, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, + // Entry 2E980 - 2E9BF + 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, + 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00ce, 0x00c8, 0x00c5, + 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, + 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, + 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2E9C0 - 2E9FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, + 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, 0x0114, + 0x0001, 0x0045, 0x0483, 0x0001, 0x0119, 0x0001, 0x0045, 0x0489, + 0x0001, 0x011e, 0x0001, 0x0045, 0x048e, 0x0001, 0x0123, 0x0001, + 0x0045, 0x0492, 0x0002, 0x0129, 0x012c, 0x0001, 0x0045, 0x0499, + 0x0003, 0x0045, 0x049e, 0x04a2, 0x04a8, 0x0001, 0x0133, 0x0001, + // Entry 2EA00 - 2EA3F + 0x0045, 0x04ae, 0x0001, 0x0138, 0x0001, 0x0045, 0x04bc, 0x0001, + 0x013d, 0x0001, 0x0045, 0x04d0, 0x0001, 0x0142, 0x0001, 0x0045, + 0x04d4, 0x0001, 0x0147, 0x0001, 0x0045, 0x04da, 0x0001, 0x014c, + 0x0001, 0x0045, 0x04e1, 0x0002, 0x0003, 0x01a5, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, + // Entry 2EA40 - 2EA7F + 0x236f, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0158, 0x0172, + 0x0183, 0x0194, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, + 0x0054, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, 0x2246, + 0x23c6, 0x23ca, 0x23ce, 0x23d2, 0x22dc, 0x234a, 0x22e0, 0x21e2, + 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, + 0x0045, 0xffff, 0x04ee, 0x04f6, 0x04ff, 0x0506, 0x050d, 0x0511, + 0x0516, 0x051c, 0x0526, 0x0530, 0x0538, 0x0541, 0x0003, 0x0067, + // Entry 2EA80 - 2EABF + 0x0076, 0x0085, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, + 0x2246, 0x23d6, 0x23ca, 0x23ce, 0x23d2, 0x22dc, 0x234a, 0x22e0, + 0x21e2, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, + 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, + 0x000d, 0x0045, 0xffff, 0x04ee, 0x04f6, 0x04ff, 0x0506, 0x054a, + 0x0511, 0x0516, 0x051c, 0x0526, 0x0530, 0x0538, 0x0541, 0x0002, + 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, 0x00af, + 0x0007, 0x0045, 0x054e, 0x0553, 0x0559, 0x055d, 0x0562, 0x0567, + // Entry 2EAC0 - 2EAFF + 0x056b, 0x0007, 0x0000, 0x2980, 0x2980, 0x2992, 0x2980, 0x2980, + 0x22db, 0x2980, 0x0007, 0x0045, 0x054e, 0x0553, 0x0559, 0x055d, + 0x0562, 0x0567, 0x056b, 0x0007, 0x0045, 0x0570, 0x0578, 0x0584, + 0x058b, 0x0594, 0x059e, 0x05a3, 0x0005, 0x00c7, 0x00d0, 0x00e2, + 0x0000, 0x00d9, 0x0007, 0x0045, 0x054e, 0x0553, 0x0559, 0x055d, + 0x0562, 0x0567, 0x056b, 0x0007, 0x0000, 0x2980, 0x2980, 0x2992, + 0x2980, 0x2980, 0x22db, 0x2980, 0x0007, 0x0045, 0x054e, 0x0553, + 0x0559, 0x055d, 0x0562, 0x0567, 0x056b, 0x0007, 0x0045, 0x0570, + // Entry 2EB00 - 2EB3F + 0x0578, 0x0584, 0x058b, 0x0594, 0x059e, 0x05a3, 0x0002, 0x00ee, + 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x001c, 0xffff, + 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0045, 0xffff, 0x05ac, 0x05c1, + 0x05d4, 0x05e8, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, 0x001c, + 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0045, 0xffff, 0x05ac, + 0x05c1, 0x05d4, 0x05e8, 0x0002, 0x0123, 0x0139, 0x0003, 0x0127, + // Entry 2EB40 - 2EB7F + 0x0000, 0x0130, 0x0002, 0x012a, 0x012d, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x0133, 0x0136, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x013d, 0x0146, 0x014f, + 0x0002, 0x0140, 0x0143, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0002, 0x0149, 0x014c, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0152, 0x0155, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0003, 0x0167, 0x0000, 0x015c, 0x0002, + 0x015f, 0x0163, 0x0002, 0x0045, 0x05fd, 0x060b, 0x0002, 0x0000, + // Entry 2EB80 - 2EBBF + 0x04f5, 0x04f9, 0x0002, 0x016a, 0x016e, 0x0002, 0x0009, 0x0078, + 0x5463, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0180, 0x017a, + 0x0177, 0x017d, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0191, + 0x018b, 0x0188, 0x018e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x01a2, 0x019c, 0x0199, 0x019f, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 2EBC0 - 2EBFF + 0x003d, 0x01e3, 0x0000, 0x0000, 0x01e8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01ed, 0x0000, 0x0000, 0x01f2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01f7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0202, 0x0000, 0x0207, + 0x0000, 0x0000, 0x020c, 0x0000, 0x0000, 0x0211, 0x0001, 0x01e5, + // Entry 2EC00 - 2EC3F + 0x0001, 0x0000, 0x1a35, 0x0001, 0x01ea, 0x0001, 0x0045, 0x0619, + 0x0001, 0x01ef, 0x0001, 0x0045, 0x061f, 0x0001, 0x01f4, 0x0001, + 0x0045, 0x0626, 0x0002, 0x01fa, 0x01fd, 0x0001, 0x0045, 0x0631, + 0x0003, 0x0045, 0x0637, 0x063d, 0x0642, 0x0001, 0x0204, 0x0001, + 0x0007, 0x07cc, 0x0001, 0x0209, 0x0001, 0x0037, 0x0bf8, 0x0001, + 0x020e, 0x0001, 0x0045, 0x064d, 0x0001, 0x0213, 0x0001, 0x0045, + 0x0655, 0x0002, 0x0003, 0x00d5, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, + // Entry 2EC40 - 2EC7F + 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, + 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, + 0x002f, 0x0066, 0x0000, 0x008b, 0x00a3, 0x00b3, 0x00c4, 0x0000, + 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, + 0x0045, 0xffff, 0x065e, 0x0662, 0x0666, 0x066a, 0x066e, 0x0672, + 0x0676, 0x067a, 0x067e, 0x0682, 0x0686, 0x068a, 0x000d, 0x0045, + 0xffff, 0x068e, 0x069e, 0x06af, 0x06c0, 0x06d3, 0x06e5, 0x06fd, + // Entry 2EC80 - 2ECBF + 0x070b, 0x0719, 0x0727, 0x0735, 0x074b, 0x0002, 0x0000, 0x0057, + 0x000d, 0x0000, 0xffff, 0x25bc, 0x382e, 0x223e, 0x24fb, 0x2992, + 0x297a, 0x298e, 0x297e, 0x2992, 0x25bc, 0x297a, 0x23db, 0x0002, + 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0045, + 0x0676, 0x0765, 0x0769, 0x076d, 0x0771, 0x0775, 0x0779, 0x0007, + 0x0045, 0x077d, 0x0784, 0x078d, 0x0795, 0x079e, 0x07a8, 0x07af, + 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x298e, 0x2483, 0x2483, + 0x2483, 0x2980, 0x2055, 0x2483, 0x0001, 0x008d, 0x0003, 0x0091, + // Entry 2ECC0 - 2ECFF + 0x0000, 0x009a, 0x0002, 0x0094, 0x0097, 0x0001, 0x0045, 0x07b8, + 0x0001, 0x0045, 0x07c1, 0x0002, 0x009d, 0x00a0, 0x0001, 0x0045, + 0x07b8, 0x0001, 0x0045, 0x07c1, 0x0003, 0x00ad, 0x0000, 0x00a7, + 0x0001, 0x00a9, 0x0002, 0x0045, 0x07ce, 0x07dc, 0x0001, 0x00af, + 0x0002, 0x0045, 0x07e7, 0x07ea, 0x0004, 0x00c1, 0x00bb, 0x00b8, + 0x00be, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00d2, 0x00cc, + 0x00c9, 0x00cf, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + // Entry 2ED00 - 2ED3F + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x003d, 0x0113, + 0x0000, 0x0000, 0x0118, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x011d, 0x0000, 0x0000, 0x0122, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0132, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0137, 0x0000, 0x0000, + // Entry 2ED40 - 2ED7F + 0x013c, 0x0000, 0x0000, 0x0141, 0x0001, 0x0115, 0x0001, 0x0045, + 0x07ed, 0x0001, 0x011a, 0x0001, 0x0045, 0x07f7, 0x0001, 0x011f, + 0x0001, 0x0045, 0x07fc, 0x0001, 0x0124, 0x0001, 0x0045, 0x0802, + 0x0002, 0x012a, 0x012d, 0x0001, 0x0045, 0x080e, 0x0003, 0x0045, + 0x0815, 0x081f, 0x0828, 0x0001, 0x0134, 0x0001, 0x0045, 0x0831, + 0x0001, 0x0139, 0x0001, 0x0045, 0x084a, 0x0001, 0x013e, 0x0001, + 0x0045, 0x084f, 0x0001, 0x0143, 0x0001, 0x0045, 0x0857, 0x0003, + 0x0004, 0x0150, 0x0210, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 2ED80 - 2EDBF + 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, + 0x001b, 0x0021, 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, 0x049a, + 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, + 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0041, 0x00a6, 0x0000, 0x00fd, 0x0115, 0x011d, 0x012e, 0x013f, + 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, + // Entry 2EDC0 - 2EDFF + 0x0045, 0xffff, 0x0860, 0x0868, 0x0876, 0x0887, 0x0896, 0x08a0, + 0x08b0, 0x08c4, 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x000d, 0x0044, + 0xffff, 0x00f6, 0x30d8, 0x00fc, 0x30db, 0x30de, 0x30e1, 0x30e4, + 0x30e7, 0x30ea, 0x30ed, 0x30f0, 0x30f3, 0x000d, 0x0045, 0xffff, + 0x0902, 0x0868, 0x0876, 0x0887, 0x0896, 0x08a0, 0x08b0, 0x08c4, + 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x0003, 0x0079, 0x0088, 0x0097, + 0x000d, 0x0045, 0xffff, 0x0860, 0x0868, 0x0876, 0x0887, 0x0896, + 0x08a0, 0x08b0, 0x08c4, 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x000d, + // Entry 2EE00 - 2EE3F + 0x0044, 0xffff, 0x00f6, 0x30d8, 0x00fc, 0x30db, 0x30de, 0x30e1, + 0x30e4, 0x30e7, 0x30ea, 0x30ed, 0x30f0, 0x30f3, 0x000d, 0x0045, + 0xffff, 0x0902, 0x0868, 0x0876, 0x0887, 0x0896, 0x08a0, 0x08b0, + 0x08c4, 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x0002, 0x00a9, 0x00d3, + 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0045, + 0x0910, 0x0917, 0x091e, 0x0925, 0x092c, 0x0933, 0x093a, 0x0007, + 0x0017, 0x0177, 0x298e, 0x017d, 0x0180, 0x2991, 0x2994, 0x2997, + 0x0007, 0x0000, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + // Entry 2EE40 - 2EE7F + 0x003f, 0x0007, 0x0045, 0x0910, 0x0917, 0x091e, 0x0925, 0x092c, + 0x0933, 0x093a, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, + 0x0007, 0x0045, 0x0910, 0x0917, 0x091e, 0x0925, 0x092c, 0x0933, + 0x093a, 0x0007, 0x0017, 0x0177, 0x298e, 0x017d, 0x0180, 0x2991, + 0x2994, 0x2997, 0x0007, 0x0000, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0007, 0x0045, 0x0910, 0x0917, 0x091e, + 0x0925, 0x092c, 0x0933, 0x093a, 0x0001, 0x00ff, 0x0003, 0x0103, + 0x0000, 0x010c, 0x0002, 0x0106, 0x0109, 0x0001, 0x0000, 0x04ef, + // Entry 2EE80 - 2EEBF + 0x0001, 0x0000, 0x04f2, 0x0002, 0x010f, 0x0112, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0117, 0x0001, 0x0119, + 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x012b, 0x0125, 0x0122, + 0x0128, 0x0001, 0x0002, 0x043a, 0x0001, 0x0000, 0x050b, 0x0001, + 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x013c, 0x0136, + 0x0133, 0x0139, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x014d, + 0x0147, 0x0144, 0x014a, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 2EEC0 - 2EEFF + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x0191, 0x0000, 0x0000, 0x0196, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x019b, 0x0000, 0x0000, 0x01ad, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x01cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01d0, 0x0000, 0x01d5, 0x0000, + // Entry 2EF00 - 2EF3F + 0x0000, 0x01e7, 0x0000, 0x0000, 0x01f9, 0x0000, 0x0000, 0x020b, + 0x0001, 0x0193, 0x0001, 0x0000, 0x1a35, 0x0001, 0x0198, 0x0001, + 0x0045, 0x0941, 0x0003, 0x019f, 0x0000, 0x01a2, 0x0001, 0x0045, + 0x0948, 0x0002, 0x01a5, 0x01a9, 0x0002, 0x0000, 0x1ace, 0x1ace, + 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0001, 0x01af, 0x0001, 0x0045, + 0x094e, 0x0003, 0x01b6, 0x01b9, 0x01c0, 0x0001, 0x0045, 0x0953, + 0x0005, 0x0045, 0x0959, 0x0960, 0x096c, 0xffff, 0x0970, 0x0002, + 0x01c3, 0x01c7, 0x0002, 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, + // Entry 2EF40 - 2EF7F + 0x1b4f, 0x1b4f, 0x0001, 0x01cd, 0x0001, 0x0045, 0x0978, 0x0001, + 0x01d2, 0x0001, 0x0000, 0x1d5d, 0x0003, 0x01d9, 0x0000, 0x01dc, + 0x0001, 0x0000, 0x1d67, 0x0002, 0x01df, 0x01e3, 0x0002, 0x0000, + 0x1d76, 0x1d76, 0x0002, 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x01eb, + 0x0000, 0x01ee, 0x0001, 0x0000, 0x1d84, 0x0002, 0x01f1, 0x01f5, + 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, + 0x0003, 0x01fd, 0x0000, 0x0200, 0x0001, 0x0000, 0x1da9, 0x0002, + 0x0203, 0x0207, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, 0x0000, + // Entry 2EF80 - 2EFBF + 0x1dbb, 0x1dbb, 0x0001, 0x020d, 0x0001, 0x0000, 0x1dc2, 0x0004, + 0x0215, 0x021a, 0x0000, 0x0000, 0x0003, 0x0000, 0x1dc7, 0x3839, + 0x3840, 0x0001, 0x0000, 0x1de0, 0x0003, 0x0004, 0x0268, 0x0670, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0045, 0x0987, 0x0001, 0x0045, 0x099f, 0x0001, 0x0045, 0x09b1, + 0x0001, 0x0045, 0x09ba, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + // Entry 2EFC0 - 2EFFF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0045, 0xffff, 0x09c7, + 0x09cf, 0x09d7, 0x09df, 0x09e7, 0x09ee, 0x09f6, 0x09fe, 0x0a06, + 0x0a10, 0x0a18, 0x0a22, 0x000d, 0x000e, 0xffff, 0x01e4, 0x01e7, + 0x01ea, 0x01ed, 0x01ea, 0x01e4, 0x01e4, 0x01ed, 0x01f0, 0x01f3, + 0x01f6, 0x01f9, 0x000d, 0x0045, 0xffff, 0x0a2a, 0x0a39, 0x0a4a, + // Entry 2F000 - 2F03F + 0x0a53, 0x09e7, 0x0a5e, 0x0a67, 0x0a70, 0x0a7d, 0x0a90, 0x0aa1, + 0x0ab0, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0045, 0xffff, + 0x09c7, 0x09cf, 0x09d7, 0x09df, 0x09e7, 0x09ee, 0x09f6, 0x09fe, + 0x0a06, 0x0a10, 0x0a18, 0x0a22, 0x000d, 0x000e, 0xffff, 0x01e4, + 0x01e7, 0x01ea, 0x01ed, 0x01ea, 0x01e4, 0x01e4, 0x01ed, 0x01f0, + 0x01f3, 0x01f6, 0x01f9, 0x000d, 0x0045, 0xffff, 0x0a2a, 0x0a39, + 0x0a4a, 0x0a53, 0x09e7, 0x0a5e, 0x0a67, 0x0a70, 0x0a7d, 0x0a90, + 0x0aa1, 0x0ab0, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + // Entry 2F040 - 2F07F + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0045, 0x0ac1, 0x0ac9, 0x0ad1, + 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, 0x0007, 0x000e, 0x01f6, 0x0292, + 0x2025, 0x01f0, 0x0298, 0x0292, 0x01f0, 0x0007, 0x0045, 0x0ac1, + 0x0ac9, 0x0af7, 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, 0x0007, 0x0045, + 0x0aff, 0x0b0c, 0x0b21, 0x0b30, 0x0b3b, 0x0b4c, 0x0b57, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0045, 0x0ac1, + 0x0ac9, 0x0af7, 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, 0x0007, 0x000e, + 0x01f6, 0x0292, 0x2025, 0x01f0, 0x0298, 0x0292, 0x01f0, 0x0007, + // Entry 2F080 - 2F0BF + 0x0045, 0x0ac1, 0x0ac9, 0x0af7, 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, + 0x0007, 0x0045, 0x0aff, 0x0b0c, 0x0b21, 0x0b30, 0x0b3b, 0x0b4c, + 0x0b57, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x0045, 0xffff, 0x0b64, 0x0b72, 0x0b80, 0x0b8e, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0045, + 0xffff, 0x0b9c, 0x0bba, 0x0bda, 0x0bfa, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x0045, 0xffff, 0x0b64, 0x0b72, 0x0b80, 0x0b8e, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + // Entry 2F0C0 - 2F0FF + 0x0045, 0xffff, 0x0b9c, 0x0bba, 0x0bda, 0x0bfa, 0x0002, 0x0135, + 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, + 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, + 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0c39, + 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, 0x0c54, 0x0001, 0x0045, + 0x0c2b, 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, 0x0c61, 0x0001, + 0x0045, 0x0c70, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, + 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x0045, 0x0c79, 0x0001, + // Entry 2F100 - 2F13F + 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0c83, 0x0001, 0x0045, 0x0c4a, + 0x0001, 0x0045, 0x0c8d, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, + 0x0c4a, 0x0001, 0x0045, 0x0c96, 0x0001, 0x0045, 0x0c70, 0x0009, + 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, + 0x019c, 0x0001, 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c9e, 0x0001, + 0x0045, 0x0c39, 0x0001, 0x0045, 0x0cb3, 0x0001, 0x0045, 0x0c54, + 0x0001, 0x0045, 0x0c9e, 0x0001, 0x0045, 0x0cb3, 0x0001, 0x0045, + 0x0c61, 0x0001, 0x0045, 0x0cc4, 0x0003, 0x01ac, 0x01d1, 0x01f6, + // Entry 2F140 - 2F17F + 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, + 0x01bc, 0x01c5, 0x0001, 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c2b, + 0x0001, 0x0045, 0x0c39, 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, + 0x0c54, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0c4a, 0x0001, + 0x0045, 0x0c61, 0x0001, 0x0045, 0x0cc4, 0x0009, 0x01de, 0x01e4, + 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, + 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0cd6, + 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, 0x0c54, 0x0001, 0x0045, + // Entry 2F180 - 2F1BF + 0x0c9e, 0x0001, 0x0045, 0x0cb3, 0x0001, 0x0045, 0x0c61, 0x0001, + 0x0045, 0x0cc4, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, + 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x0045, 0x0ce3, 0x0001, + 0x0045, 0x0c9e, 0x0001, 0x0045, 0x0c39, 0x0001, 0x0045, 0x0cb3, + 0x0001, 0x0045, 0x0c54, 0x0001, 0x0045, 0x0c9e, 0x0001, 0x0045, + 0x0cb3, 0x0001, 0x0045, 0x0c61, 0x0001, 0x0045, 0x0cc4, 0x0003, + 0x0225, 0x022f, 0x021f, 0x0001, 0x0221, 0x0002, 0x0045, 0x0cf5, + 0x0d12, 0x0002, 0x0228, 0x022c, 0x0002, 0x0009, 0x064e, 0x5466, + // Entry 2F1C0 - 2F1FF + 0x0001, 0x0045, 0x0d2b, 0x0001, 0x0231, 0x0002, 0x0009, 0x064e, + 0x5466, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x0001, + 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, 0x0045, 0x0d38, 0x0001, + 0x0045, 0x0d3f, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, 0x0000, + // Entry 2F200 - 2F23F + 0x02ae, 0x02c5, 0x02dc, 0x02f3, 0x030a, 0x031c, 0x032e, 0x0345, + 0x035c, 0x0373, 0x038e, 0x03a9, 0x0000, 0x0000, 0x0000, 0x03c4, + 0x03dd, 0x03f6, 0x0000, 0x0000, 0x0000, 0x040f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0414, 0x0428, 0x043c, 0x0450, 0x0464, + 0x0478, 0x048c, 0x04a0, 0x04b4, 0x04c8, 0x04dc, 0x04f0, 0x0504, + 0x0518, 0x052c, 0x0540, 0x0554, 0x0568, 0x057c, 0x0590, 0x05a4, + 0x0000, 0x05b8, 0x0000, 0x05bd, 0x05d3, 0x05e5, 0x05f7, 0x060d, + 0x061f, 0x0631, 0x0647, 0x0659, 0x066b, 0x0001, 0x02ab, 0x0001, + // Entry 2F240 - 2F27F + 0x0009, 0x0877, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0009, + 0x087e, 0x0003, 0x0045, 0x0d47, 0x0d65, 0x0d7b, 0x0002, 0x02bd, + 0x02c1, 0x0002, 0x000e, 0x2028, 0x1e65, 0x0002, 0x0045, 0x0db3, + 0x0d99, 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x0045, 0x0dcd, + 0x0003, 0x0045, 0x0d47, 0x0d65, 0x0d7b, 0x0002, 0x02d4, 0x02d8, + 0x0002, 0x000e, 0x2028, 0x1e65, 0x0002, 0x0045, 0x0db3, 0x0d99, + 0x0003, 0x02e0, 0x02e3, 0x02e8, 0x0001, 0x0045, 0x0dcd, 0x0003, + 0x0045, 0x0d47, 0x0d65, 0x0d7b, 0x0002, 0x02eb, 0x02ef, 0x0002, + // Entry 2F280 - 2F2BF + 0x000e, 0x2028, 0x2028, 0x0002, 0x0045, 0x0db3, 0x0db3, 0x0003, + 0x02f7, 0x02fa, 0x02ff, 0x0001, 0x0045, 0x0dd5, 0x0003, 0x0045, + 0x0dea, 0x0e14, 0x0e30, 0x0002, 0x0302, 0x0306, 0x0002, 0x0045, + 0x0e74, 0x0e56, 0x0002, 0x0045, 0x0eb4, 0x0e92, 0x0003, 0x030e, + 0x0000, 0x0311, 0x0001, 0x0045, 0x0ed6, 0x0002, 0x0314, 0x0318, + 0x0002, 0x0045, 0x0e74, 0x0ee4, 0x0002, 0x0045, 0x0eb4, 0x0efb, + 0x0003, 0x0320, 0x0000, 0x0323, 0x0001, 0x0045, 0x0ed6, 0x0002, + 0x0326, 0x032a, 0x0002, 0x0045, 0x0e74, 0x0e74, 0x0002, 0x0045, + // Entry 2F2C0 - 2F2FF + 0x0eb4, 0x0eb4, 0x0003, 0x0332, 0x0335, 0x033a, 0x0001, 0x0009, + 0x0b35, 0x0003, 0x0045, 0x0f16, 0x0f32, 0x0f46, 0x0002, 0x033d, + 0x0341, 0x0002, 0x000e, 0x1f3d, 0x1f13, 0x0002, 0x0045, 0x0f7a, + 0x0f62, 0x0003, 0x0349, 0x034c, 0x0351, 0x0001, 0x0008, 0x0e09, + 0x0003, 0x0045, 0x0f16, 0x0f32, 0x0f46, 0x0002, 0x0354, 0x0358, + 0x0002, 0x000e, 0x1f3d, 0x1f13, 0x0002, 0x0045, 0x0f7a, 0x0f62, + 0x0003, 0x0360, 0x0363, 0x0368, 0x0001, 0x0008, 0x0e09, 0x0003, + 0x0045, 0x0f16, 0x0f32, 0x0f46, 0x0002, 0x036b, 0x036f, 0x0002, + // Entry 2F300 - 2F33F + 0x000e, 0x1f3d, 0x1f13, 0x0002, 0x0045, 0x0f7a, 0x0f62, 0x0004, + 0x0378, 0x037b, 0x0380, 0x038b, 0x0001, 0x0045, 0x0aff, 0x0003, + 0x0045, 0x0f94, 0x0fb4, 0x0fcc, 0x0002, 0x0383, 0x0387, 0x0002, + 0x0045, 0x1004, 0x0fec, 0x0002, 0x0045, 0x1038, 0x101c, 0x0001, + 0x0045, 0x1054, 0x0004, 0x0393, 0x0396, 0x039b, 0x03a6, 0x0001, + 0x0045, 0x1067, 0x0003, 0x0045, 0x0f94, 0x0fb4, 0x0fcc, 0x0002, + 0x039e, 0x03a2, 0x0002, 0x0045, 0x1004, 0x0fec, 0x0002, 0x0045, + 0x1038, 0x101c, 0x0001, 0x0045, 0x1054, 0x0004, 0x03ae, 0x03b1, + // Entry 2F340 - 2F37F + 0x03b6, 0x03c1, 0x0001, 0x0045, 0x1067, 0x0003, 0x0045, 0x0f94, + 0x0fb4, 0x0fcc, 0x0002, 0x03b9, 0x03bd, 0x0002, 0x0045, 0x1004, + 0x0fec, 0x0002, 0x0045, 0x1038, 0x101c, 0x0001, 0x0045, 0x1054, + 0x0003, 0x03c8, 0x03cb, 0x03d2, 0x0001, 0x0009, 0x0e55, 0x0005, + 0x0045, 0x107e, 0x1089, 0x1094, 0x106f, 0x109d, 0x0002, 0x03d5, + 0x03d9, 0x0002, 0x0045, 0x10bc, 0x10ac, 0x0002, 0x0045, 0x10e2, + 0x10ce, 0x0003, 0x03e1, 0x03e4, 0x03eb, 0x0001, 0x0009, 0x0e55, + 0x0005, 0x0045, 0x107e, 0x1089, 0x1094, 0x106f, 0x109d, 0x0002, + // Entry 2F380 - 2F3BF + 0x03ee, 0x03f2, 0x0002, 0x0045, 0x10bc, 0x10ac, 0x0002, 0x0045, + 0x10e2, 0x10ce, 0x0003, 0x03fa, 0x03fd, 0x0404, 0x0001, 0x0009, + 0x0e55, 0x0005, 0x0045, 0x107e, 0x1089, 0x1094, 0x106f, 0x109d, + 0x0002, 0x0407, 0x040b, 0x0002, 0x0045, 0x10bc, 0x10ac, 0x0002, + 0x0045, 0x10e2, 0x10ce, 0x0001, 0x0411, 0x0001, 0x0045, 0x10f8, + 0x0003, 0x0000, 0x0418, 0x041d, 0x0003, 0x0045, 0x1115, 0x1133, + 0x1149, 0x0002, 0x0420, 0x0424, 0x0002, 0x0045, 0x117d, 0x1167, + 0x0002, 0x0045, 0x11ad, 0x1193, 0x0003, 0x0000, 0x042c, 0x0431, + // Entry 2F3C0 - 2F3FF + 0x0003, 0x0045, 0x1115, 0x1133, 0x1149, 0x0002, 0x0434, 0x0438, + 0x0002, 0x0045, 0x117d, 0x1167, 0x0002, 0x0045, 0x11ad, 0x1193, + 0x0003, 0x0000, 0x0440, 0x0445, 0x0003, 0x0045, 0x1115, 0x1133, + 0x1149, 0x0002, 0x0448, 0x044c, 0x0002, 0x0045, 0x117d, 0x1167, + 0x0002, 0x0045, 0x11ad, 0x1193, 0x0003, 0x0000, 0x0454, 0x0459, + 0x0003, 0x0045, 0x11c7, 0x11ed, 0x120b, 0x0002, 0x045c, 0x0460, + 0x0002, 0x0045, 0x124f, 0x1231, 0x0002, 0x0045, 0x1291, 0x126f, + 0x0003, 0x0000, 0x0468, 0x046d, 0x0003, 0x0045, 0x11c7, 0x11ed, + // Entry 2F400 - 2F43F + 0x120b, 0x0002, 0x0470, 0x0474, 0x0002, 0x0045, 0x124f, 0x1231, + 0x0002, 0x0045, 0x1291, 0x126f, 0x0003, 0x0000, 0x047c, 0x0481, + 0x0003, 0x0045, 0x11c7, 0x11ed, 0x120b, 0x0002, 0x0484, 0x0488, + 0x0002, 0x0045, 0x124f, 0x1231, 0x0002, 0x0045, 0x1291, 0x126f, + 0x0003, 0x0000, 0x0490, 0x0495, 0x0003, 0x0045, 0x12b5, 0x12d5, + 0x12ed, 0x0002, 0x0498, 0x049c, 0x0002, 0x0045, 0x1325, 0x130d, + 0x0002, 0x0045, 0x135b, 0x133f, 0x0003, 0x0000, 0x04a4, 0x04a9, + 0x0003, 0x0045, 0x1379, 0x12d5, 0x12ed, 0x0002, 0x04ac, 0x04b0, + // Entry 2F440 - 2F47F + 0x0002, 0x0045, 0x1325, 0x130d, 0x0002, 0x0045, 0x135b, 0x133f, + 0x0003, 0x0000, 0x04b8, 0x04bd, 0x0003, 0x0045, 0x12b5, 0x12d5, + 0x12ed, 0x0002, 0x04c0, 0x04c4, 0x0002, 0x0045, 0x1325, 0x130d, + 0x0002, 0x0045, 0x135b, 0x133f, 0x0003, 0x0000, 0x04cc, 0x04d1, + 0x0003, 0x0045, 0x1387, 0x13a3, 0x13b7, 0x0002, 0x04d4, 0x04d8, + 0x0002, 0x0045, 0x13e7, 0x13d3, 0x0002, 0x0045, 0x1413, 0x13fb, + 0x0003, 0x0000, 0x04e0, 0x04e5, 0x0003, 0x0045, 0x1387, 0x13a3, + 0x13b7, 0x0002, 0x04e8, 0x04ec, 0x0002, 0x0045, 0x13e7, 0x13d3, + // Entry 2F480 - 2F4BF + 0x0002, 0x0045, 0x1413, 0x13fb, 0x0003, 0x0000, 0x04f4, 0x04f9, + 0x0003, 0x0045, 0x1387, 0x13a3, 0x13b7, 0x0002, 0x04fc, 0x0500, + 0x0002, 0x0045, 0x13e7, 0x13d3, 0x0002, 0x0045, 0x1413, 0x13fb, + 0x0003, 0x0000, 0x0508, 0x050d, 0x0003, 0x0045, 0x142b, 0x144d, + 0x1467, 0x0002, 0x0510, 0x0514, 0x0002, 0x0045, 0x14a3, 0x1489, + 0x0002, 0x0045, 0x14dd, 0x14bf, 0x0003, 0x0000, 0x051c, 0x0521, + 0x0003, 0x0045, 0x142b, 0x144d, 0x1467, 0x0002, 0x0524, 0x0528, + 0x0002, 0x0045, 0x14a3, 0x1489, 0x0002, 0x0045, 0x14dd, 0x14bf, + // Entry 2F4C0 - 2F4FF + 0x0003, 0x0000, 0x0530, 0x0535, 0x0003, 0x0045, 0x142b, 0x144d, + 0x1467, 0x0002, 0x0538, 0x053c, 0x0002, 0x0045, 0x14a3, 0x1489, + 0x0002, 0x0045, 0x14dd, 0x14bf, 0x0003, 0x0000, 0x0544, 0x0549, + 0x0003, 0x0045, 0x14fd, 0x1519, 0x152d, 0x0002, 0x054c, 0x0550, + 0x0002, 0x0045, 0x155d, 0x1549, 0x0002, 0x0045, 0x1573, 0x1573, + 0x0003, 0x0000, 0x0558, 0x055d, 0x0003, 0x0045, 0x14fd, 0x1519, + 0x152d, 0x0002, 0x0560, 0x0564, 0x0002, 0x0045, 0x155d, 0x1549, + 0x0002, 0x0045, 0x1573, 0x1573, 0x0003, 0x0000, 0x056c, 0x0571, + // Entry 2F500 - 2F53F + 0x0003, 0x0045, 0x14fd, 0x1519, 0x152d, 0x0002, 0x0574, 0x0578, + 0x0002, 0x0045, 0x155d, 0x1549, 0x0002, 0x0045, 0x1573, 0x1573, + 0x0003, 0x0000, 0x0580, 0x0585, 0x0003, 0x0045, 0x158d, 0x15ab, + 0x15c1, 0x0002, 0x0588, 0x058c, 0x0002, 0x0045, 0x15f5, 0x15df, + 0x0002, 0x0045, 0x1625, 0x160b, 0x0003, 0x0000, 0x0594, 0x0599, + 0x0003, 0x0045, 0x158d, 0x15ab, 0x15c1, 0x0002, 0x059c, 0x05a0, + 0x0002, 0x0045, 0x15f5, 0x15df, 0x0002, 0x0045, 0x1625, 0x160b, + 0x0003, 0x0000, 0x05a8, 0x05ad, 0x0003, 0x0045, 0x158d, 0x15ab, + // Entry 2F540 - 2F57F + 0x15c1, 0x0002, 0x05b0, 0x05b4, 0x0002, 0x0045, 0x15f5, 0x15df, + 0x0002, 0x0045, 0x1625, 0x160b, 0x0001, 0x05ba, 0x0001, 0x0045, + 0x163f, 0x0003, 0x05c1, 0x05c4, 0x05c8, 0x0001, 0x0009, 0x17ad, + 0x0002, 0x0045, 0xffff, 0x1665, 0x0002, 0x05cb, 0x05cf, 0x0002, + 0x0045, 0x1680, 0x1670, 0x0002, 0x0045, 0x16a6, 0x1692, 0x0003, + 0x05d7, 0x0000, 0x05da, 0x0001, 0x0009, 0x17ad, 0x0002, 0x05dd, + 0x05e1, 0x0002, 0x0045, 0x1680, 0x1670, 0x0002, 0x0045, 0x16a6, + 0x1692, 0x0003, 0x05e9, 0x0000, 0x05ec, 0x0001, 0x0009, 0x17ad, + // Entry 2F580 - 2F5BF + 0x0002, 0x05ef, 0x05f3, 0x0002, 0x0045, 0x1680, 0x1670, 0x0002, + 0x0045, 0x16a6, 0x1692, 0x0003, 0x05fb, 0x05fe, 0x0602, 0x0001, + 0x0009, 0x185b, 0x0002, 0x0045, 0xffff, 0x16bc, 0x0002, 0x0605, + 0x0609, 0x0002, 0x000f, 0x3ba7, 0x01a1, 0x0002, 0x0045, 0x16ec, + 0x16d2, 0x0003, 0x0611, 0x0000, 0x0614, 0x0001, 0x0011, 0x0ce0, + 0x0002, 0x0617, 0x061b, 0x0002, 0x000f, 0x3ba7, 0x01a1, 0x0002, + 0x0045, 0x16ec, 0x16d2, 0x0003, 0x0623, 0x0000, 0x0626, 0x0001, + 0x0011, 0x0ce0, 0x0002, 0x0629, 0x062d, 0x0002, 0x000f, 0x3ba7, + // Entry 2F5C0 - 2F5FF + 0x01a1, 0x0002, 0x0045, 0x16ec, 0x16d2, 0x0003, 0x0635, 0x0638, + 0x063c, 0x0001, 0x0008, 0x1ca4, 0x0002, 0x0009, 0xffff, 0x1940, + 0x0002, 0x063f, 0x0643, 0x0002, 0x0045, 0x171e, 0x1706, 0x0002, + 0x0045, 0x1752, 0x1736, 0x0003, 0x064b, 0x0000, 0x064e, 0x0001, + 0x0011, 0x0d52, 0x0002, 0x0651, 0x0655, 0x0002, 0x0045, 0x171e, + 0x1706, 0x0002, 0x0045, 0x1752, 0x1736, 0x0003, 0x065d, 0x0000, + 0x0660, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0663, 0x0667, 0x0002, + 0x0045, 0x171e, 0x1706, 0x0002, 0x0045, 0x1752, 0x1736, 0x0001, + // Entry 2F600 - 2F63F + 0x066d, 0x0001, 0x0045, 0x176e, 0x0004, 0x0675, 0x067a, 0x067f, + 0x068e, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0045, + 0x178a, 0x179e, 0x17a7, 0x0002, 0x0000, 0x0682, 0x0003, 0x0000, + 0x0689, 0x0686, 0x0001, 0x0045, 0x17b0, 0x0003, 0x0045, 0xffff, + 0x17eb, 0x1814, 0x0002, 0x0860, 0x0691, 0x0003, 0x0695, 0x07c7, + 0x072e, 0x0097, 0x000f, 0xffff, 0xffff, 0xffff, 0xffff, 0x3c7e, + 0x3cef, 0x3d3e, 0x3d8d, 0x065e, 0x06e1, 0x0770, 0x3e24, 0x3e75, + 0x3ec0, 0x3f09, 0x3f64, 0x3fdd, 0x4034, 0x4085, 0x410a, 0x41b3, + // Entry 2F640 - 2F67F + 0x4230, 0x42ad, 0x430c, 0x435b, 0xffff, 0xffff, 0x43f2, 0xffff, + 0x447d, 0xffff, 0x4501, 0x454c, 0x4593, 0x45da, 0xffff, 0xffff, + 0x4699, 0x46f4, 0x475d, 0xffff, 0xffff, 0xffff, 0x4813, 0xffff, + 0x48b7, 0x18eb, 0xffff, 0x199e, 0x4944, 0x49cd, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4a84, 0xffff, 0xffff, 0x4b33, 0x4ba8, 0xffff, + 0xffff, 0x4c72, 0x4d01, 0x4d5a, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4ea9, 0x4ef0, 0x4f43, 0x4f92, 0xffff, 0xffff, + 0xffff, 0x504d, 0xffff, 0x50b7, 0xffff, 0xffff, 0x516b, 0xffff, + // Entry 2F680 - 2F6BF + 0x51f0, 0xffff, 0xffff, 0xffff, 0xffff, 0x52d6, 0xffff, 0x534c, + 0x53d5, 0x545a, 0x54b7, 0xffff, 0xffff, 0xffff, 0x555b, 0x55cc, + 0x5629, 0xffff, 0xffff, 0x56d7, 0x5752, 0x57b5, 0x57fc, 0xffff, + 0xffff, 0x58a1, 0x58f8, 0x593f, 0xffff, 0x59c6, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x5ad5, 0x335e, 0x5b28, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5c6e, 0xffff, 0xffff, + 0x5d01, 0xffff, 0x5d65, 0xffff, 0x5de9, 0x5e3c, 0x5e9b, 0xffff, + 0x5f11, 0x5f74, 0xffff, 0xffff, 0xffff, 0x6041, 0x6094, 0xffff, + // Entry 2F6C0 - 2F6FF + 0xffff, 0x02ab, 0x0097, 0x000f, 0x3bbd, 0x3be2, 0x3c0e, 0x3c3c, + 0x3cac, 0x3d0c, 0x3d5b, 0x3dce, 0x0678, 0x06ff, 0x078e, 0x3e42, + 0x3e90, 0x3eda, 0x3f2c, 0x3f96, 0x3ffe, 0x4052, 0x40bd, 0x4154, + 0x41e7, 0x4264, 0x42d2, 0x4329, 0x437e, 0x43b6, 0x43d1, 0x4415, + 0x444d, 0x44a6, 0x44e4, 0x451c, 0x4565, 0x45ac, 0x45fd, 0x4635, + 0x4665, 0x46bc, 0x471e, 0x4776, 0x47a4, 0x47c1, 0x47e9, 0x484b, + 0x4898, 0x48df, 0x1915, 0x491c, 0x19c8, 0x497e, 0x49e6, 0x4a14, + 0x1bb1, 0x4a46, 0x4a69, 0x4aa3, 0x4ad7, 0x4b09, 0x4b63, 0x4bd8, + // Entry 2F700 - 2F73F + 0x4c1d, 0x4c53, 0x4caf, 0x4d23, 0x4d73, 0x4da1, 0x4dbe, 0x4de8, + 0x4e09, 0x4e41, 0x4e75, 0x4ec2, 0x4f0f, 0x4f60, 0x4fb3, 0xffff, + 0x4fe9, 0x501b, 0x506a, 0x509c, 0x50de, 0x511a, 0x513d, 0x518b, + 0x51c0, 0x520f, 0x5243, 0x5264, 0x5283, 0x52a4, 0x52f9, 0x5331, + 0x5386, 0x540d, 0x547e, 0x54d4, 0x5506, 0x5525, 0x5540, 0x5589, + 0x55f0, 0x5650, 0x568c, 0x56a5, 0x570a, 0x5779, 0x57ce, 0x581d, + 0x5853, 0x586e, 0x58c2, 0x5911, 0x5960, 0x5996, 0x59ff, 0x5a48, + 0x5a67, 0x5a84, 0x5a97, 0x5ab8, 0x5af4, 0x3376, 0x5b43, 0x5b73, + // Entry 2F740 - 2F77F + 0x5b92, 0x5bb3, 0x5beb, 0x5c15, 0x5c34, 0x5c51, 0x5c8b, 0x5cbd, + 0x5ce2, 0x5d1c, 0x5d4c, 0x5d8e, 0x5dcc, 0x5e08, 0x5e61, 0x5eba, + 0x5eee, 0x5f38, 0x5f97, 0x5fcf, 0x5fec, 0x6016, 0x6060, 0x60bd, + 0xffff, 0xffff, 0x02bf, 0x0097, 0x0045, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1876, 0x18c7, 0x1907, 0x1947, 0x1988, 0x19c5, 0x1a06, + 0x1a47, 0x1a70, 0x1a96, 0x1ad3, 0x1b19, 0x1b6e, 0x1b9a, 0x1bdb, + 0x1c36, 0x1ca3, 0x1cfa, 0x1d51, 0x1d81, 0x1da9, 0xffff, 0xffff, + 0x1dd7, 0xffff, 0x1e1d, 0xffff, 0x1e51, 0x1e8f, 0x1ecb, 0x1f07, + // Entry 2F780 - 2F7BF + 0xffff, 0xffff, 0x1f35, 0x1f7b, 0x1fb0, 0xffff, 0xffff, 0xffff, + 0x1fec, 0xffff, 0x202f, 0x2062, 0xffff, 0x2097, 0x20cc, 0x2129, + 0xffff, 0xffff, 0xffff, 0xffff, 0x214d, 0xffff, 0xffff, 0x2177, + 0x21ca, 0xffff, 0xffff, 0x221d, 0x227d, 0x22aa, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x22ce, 0x230a, 0x2334, 0x2374, + 0xffff, 0xffff, 0xffff, 0x23b8, 0xffff, 0x23f8, 0xffff, 0xffff, + 0x242a, 0xffff, 0x246d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2497, + 0xffff, 0x24dd, 0x253a, 0x257d, 0x25ac, 0xffff, 0xffff, 0xffff, + // Entry 2F7C0 - 2F7FF + 0x25ec, 0x2625, 0x266c, 0xffff, 0xffff, 0x26b6, 0x270c, 0x273e, + 0x2762, 0xffff, 0xffff, 0x278e, 0x27d2, 0x280e, 0xffff, 0x283a, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2891, 0x28bb, 0x28f6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x291c, + 0xffff, 0xffff, 0x295c, 0xffff, 0x2982, 0xffff, 0x29b6, 0x29f8, + 0x2a28, 0xffff, 0x2a52, 0x2a84, 0xffff, 0xffff, 0xffff, 0x2aca, + 0x2af4, 0xffff, 0xffff, 0x183f, 0x0003, 0x0864, 0x08ca, 0x0897, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2F800 - 2F83F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, + 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2F840 - 2F87F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 2F880 - 2F8BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, + 0x13e3, 0x0003, 0x0004, 0x030b, 0x0713, 0x000b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, 0x0000, 0x02a1, + 0x02d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, + 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, + 0x0046, 0x0000, 0x0001, 0x0046, 0x0012, 0x0001, 0x0046, 0x001e, + 0x0001, 0x0000, 0x04af, 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, + // Entry 2F8C0 - 2F8FF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, 0x00a9, 0x0100, + 0x0135, 0x0254, 0x026e, 0x027f, 0x0290, 0x0002, 0x0047, 0x0078, + 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0046, 0xffff, 0x0029, + 0x0033, 0x0046, 0x0050, 0x0060, 0x006d, 0x0077, 0x0084, 0x008b, + 0x00a4, 0x00b4, 0x00be, 0x000d, 0x0046, 0xffff, 0x00cb, 0x00cf, + 0x00d3, 0x00da, 0x00de, 0x006d, 0x00e5, 0x00ec, 0x00f0, 0x00f7, + 0x00fb, 0x00ff, 0x000d, 0x0046, 0xffff, 0x0106, 0x0119, 0x0135, + // Entry 2F900 - 2F93F + 0x014b, 0x0060, 0x006d, 0x0077, 0x015e, 0x0177, 0x0196, 0x01af, + 0x01bf, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, 0x0046, 0xffff, + 0x0029, 0x0033, 0x0046, 0x0050, 0x0060, 0x006d, 0x0077, 0x0084, + 0x008b, 0x00a4, 0x00b4, 0x00be, 0x000d, 0x0046, 0xffff, 0x00cb, + 0x01d2, 0x00d3, 0x00da, 0x00de, 0x006d, 0x00e5, 0x00ec, 0x00f0, + 0x00f7, 0x00fb, 0x00ff, 0x000d, 0x0046, 0xffff, 0x0106, 0x0119, + 0x0135, 0x014b, 0x0060, 0x006d, 0x0077, 0x015e, 0x0177, 0x0196, + 0x01af, 0x01bf, 0x0002, 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, + // Entry 2F940 - 2F97F + 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0046, 0x01d9, 0x01e6, 0x01f9, + 0x0209, 0x0216, 0x0229, 0x023c, 0x0007, 0x0046, 0x0246, 0x024a, + 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, 0x0007, 0x0046, 0x0277, + 0x024a, 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, 0x0007, 0x0046, + 0x027e, 0x029a, 0x02bc, 0x02d8, 0x02f4, 0x0313, 0x0338, 0x0005, + 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, 0x0046, 0x01d9, + 0x01e6, 0x01f9, 0x0209, 0x0216, 0x0229, 0x023c, 0x0007, 0x0046, + 0x0277, 0x024a, 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, 0x0007, + // Entry 2F980 - 2F9BF + 0x0046, 0x0277, 0x024a, 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, + 0x0007, 0x0046, 0x027e, 0x029a, 0x0354, 0x02d8, 0x02f4, 0x0313, + 0x0338, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, + 0x0005, 0x0046, 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0046, + 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, 0x0003, 0x0120, 0x0127, + 0x012e, 0x0005, 0x0046, 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + // Entry 2F9C0 - 2F9FF + 0x0046, 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, 0x0002, 0x0138, + 0x01c6, 0x0003, 0x013c, 0x016a, 0x0198, 0x000c, 0x014c, 0x0152, + 0x0149, 0x0155, 0x015b, 0x0161, 0x0167, 0x014f, 0x0158, 0x015e, + 0x0000, 0x0164, 0x0001, 0x0046, 0x03f3, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0046, 0x0415, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0046, + 0x0422, 0x0001, 0x0046, 0x043b, 0x0001, 0x0046, 0x044e, 0x0001, + 0x0046, 0x046d, 0x0001, 0x0046, 0x0492, 0x0001, 0x0046, 0x04b1, + 0x0001, 0x0046, 0x04c4, 0x000c, 0x017a, 0x0180, 0x0177, 0x0183, + // Entry 2FA00 - 2FA3F + 0x0189, 0x018f, 0x0195, 0x017d, 0x0186, 0x018c, 0x0000, 0x0192, + 0x0001, 0x0046, 0x04d7, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, + 0x0415, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, + 0x0046, 0x043b, 0x0001, 0x0046, 0x04db, 0x0001, 0x0046, 0x04ee, + 0x0001, 0x0046, 0x0501, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, + 0x04c4, 0x000c, 0x01a8, 0x01ae, 0x01a5, 0x01b1, 0x01b7, 0x01bd, + 0x01c3, 0x01ab, 0x01b4, 0x01ba, 0x0000, 0x01c0, 0x0001, 0x0046, + 0x03f3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, 0x0415, 0x0001, + // Entry 2FA40 - 2FA7F + 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, 0x0046, 0x043b, + 0x0001, 0x0046, 0x044e, 0x0001, 0x0046, 0x046d, 0x0001, 0x0046, + 0x0492, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, 0x04c4, 0x0003, + 0x01ca, 0x01f8, 0x0226, 0x000c, 0x01da, 0x01e0, 0x01d7, 0x01e3, + 0x01e9, 0x01ef, 0x01f5, 0x01dd, 0x01e6, 0x01ec, 0x0000, 0x01f2, + 0x0001, 0x0046, 0x03f3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, + 0x0415, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, + 0x0046, 0x043b, 0x0001, 0x0046, 0x044e, 0x0001, 0x0046, 0x046d, + // Entry 2FA80 - 2FABF + 0x0001, 0x0046, 0x0492, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, + 0x04c4, 0x000c, 0x0208, 0x020e, 0x0205, 0x0211, 0x0217, 0x021d, + 0x0223, 0x020b, 0x0214, 0x021a, 0x0000, 0x0220, 0x0001, 0x0046, + 0x03f3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, 0x0415, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, 0x0046, 0x043b, + 0x0001, 0x0046, 0x044e, 0x0001, 0x0046, 0x046d, 0x0001, 0x0046, + 0x0492, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, 0x04c4, 0x000c, + 0x0236, 0x023c, 0x0233, 0x023f, 0x0245, 0x024b, 0x0251, 0x0239, + // Entry 2FAC0 - 2FAFF + 0x0242, 0x0248, 0x0000, 0x024e, 0x0001, 0x0046, 0x03f3, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0046, 0x0415, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0046, 0x0422, 0x0001, 0x0046, 0x043b, 0x0001, 0x0046, + 0x044e, 0x0001, 0x0046, 0x046d, 0x0001, 0x0046, 0x0492, 0x0001, + 0x0046, 0x04b1, 0x0001, 0x0046, 0x04c4, 0x0003, 0x0263, 0x0000, + 0x0258, 0x0002, 0x025b, 0x025f, 0x0002, 0x0046, 0x0508, 0x0556, + 0x0002, 0x0046, 0x0543, 0x0579, 0x0002, 0x0266, 0x026a, 0x0002, + 0x0046, 0x0585, 0x05aa, 0x0002, 0x0046, 0x059a, 0x05b4, 0x0004, + // Entry 2FB00 - 2FB3F + 0x027c, 0x0276, 0x0273, 0x0279, 0x0001, 0x0046, 0x05be, 0x0001, + 0x0046, 0x05ce, 0x0001, 0x0046, 0x05d8, 0x0001, 0x0000, 0x237b, + 0x0004, 0x028d, 0x0287, 0x0284, 0x028a, 0x0001, 0x0002, 0x0453, + 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + 0x0478, 0x0004, 0x029e, 0x0298, 0x0295, 0x029b, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0005, 0x02a7, 0x0000, 0x0000, 0x0000, 0x02cf, + 0x0002, 0x02aa, 0x02bd, 0x0003, 0x0000, 0x0000, 0x02ae, 0x000d, + // Entry 2FB40 - 2FB7F + 0x0046, 0xffff, 0x05e1, 0x05f4, 0x0607, 0x0620, 0x0630, 0x0646, + 0x0662, 0x0678, 0x0694, 0x06b0, 0x06bd, 0x06ca, 0x0002, 0x0000, + 0x02c0, 0x000d, 0x0046, 0xffff, 0x06dd, 0x0501, 0x06e4, 0x06f1, + 0x06f5, 0x0702, 0x06f1, 0x0709, 0x00d3, 0x0710, 0x00d3, 0x00cf, + 0x0001, 0x02d1, 0x0001, 0x02d3, 0x0001, 0x0046, 0x0717, 0x0005, + 0x02dc, 0x0000, 0x0000, 0x0000, 0x0304, 0x0002, 0x02df, 0x02f2, + 0x0003, 0x0000, 0x0000, 0x02e3, 0x000d, 0x0046, 0xffff, 0x071e, + 0x072e, 0x0738, 0x075b, 0x077b, 0x079e, 0x07be, 0x07cb, 0x07db, + // Entry 2FB80 - 2FBBF + 0x07eb, 0x07fe, 0x0815, 0x0002, 0x0000, 0x02f5, 0x000d, 0x0046, + 0xffff, 0x082f, 0x0836, 0x083a, 0x083a, 0x00cb, 0x00cb, 0x083a, + 0x0273, 0x083a, 0x0273, 0x083e, 0x083e, 0x0001, 0x0306, 0x0001, + 0x0308, 0x0001, 0x0046, 0x0845, 0x0040, 0x034c, 0x0000, 0x0000, + 0x0351, 0x0368, 0x037f, 0x0396, 0x03ad, 0x03bf, 0x03d1, 0x03e8, + 0x03ff, 0x0416, 0x0431, 0x044c, 0x0000, 0x0000, 0x0000, 0x0467, + 0x0480, 0x0499, 0x0000, 0x0000, 0x0000, 0x04b2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x04b7, 0x04cb, 0x04df, 0x04f3, 0x0507, + // Entry 2FBC0 - 2FBFF + 0x051b, 0x052f, 0x0543, 0x0557, 0x056b, 0x057f, 0x0593, 0x05a7, + 0x05bb, 0x05cf, 0x05e3, 0x05f7, 0x060b, 0x061f, 0x0633, 0x0647, + 0x0000, 0x065b, 0x0000, 0x0660, 0x0676, 0x0688, 0x069a, 0x06b0, + 0x06c2, 0x06d4, 0x06ea, 0x06fc, 0x070e, 0x0001, 0x034e, 0x0001, + 0x0046, 0x0852, 0x0003, 0x0355, 0x0358, 0x035d, 0x0001, 0x0046, + 0x086b, 0x0003, 0x0046, 0x0878, 0x0898, 0x08ac, 0x0002, 0x0360, + 0x0364, 0x0002, 0x0046, 0x08cb, 0x08cb, 0x0002, 0x0046, 0x08e8, + 0x08e8, 0x0003, 0x036c, 0x036f, 0x0374, 0x0001, 0x0046, 0x090c, + // Entry 2FC00 - 2FC3F + 0x0003, 0x0046, 0x0878, 0x0898, 0x08ac, 0x0002, 0x0377, 0x037b, + 0x0002, 0x0046, 0x08cb, 0x08cb, 0x0002, 0x0046, 0x08e8, 0x08e8, + 0x0003, 0x0383, 0x0386, 0x038b, 0x0001, 0x0046, 0x090c, 0x0003, + 0x0046, 0x0878, 0x0898, 0x08ac, 0x0002, 0x038e, 0x0392, 0x0002, + 0x0046, 0x08cb, 0x08cb, 0x0002, 0x0046, 0x08e8, 0x08e8, 0x0003, + 0x039a, 0x039d, 0x03a2, 0x0001, 0x0046, 0x0911, 0x0003, 0x0046, + 0x091e, 0x093e, 0x094f, 0x0002, 0x03a5, 0x03a9, 0x0002, 0x0046, + 0x096f, 0x096f, 0x0002, 0x0046, 0x098c, 0x098c, 0x0003, 0x03b1, + // Entry 2FC40 - 2FC7F + 0x0000, 0x03b4, 0x0001, 0x0046, 0x0911, 0x0002, 0x03b7, 0x03bb, + 0x0002, 0x0046, 0x096f, 0x096f, 0x0002, 0x0046, 0x098c, 0x098c, + 0x0003, 0x03c3, 0x0000, 0x03c6, 0x0001, 0x0046, 0x0911, 0x0002, + 0x03c9, 0x03cd, 0x0002, 0x0046, 0x096f, 0x096f, 0x0002, 0x0046, + 0x098c, 0x098c, 0x0003, 0x03d5, 0x03d8, 0x03dd, 0x0001, 0x0046, + 0x09b0, 0x0003, 0x0046, 0x09bd, 0x09dd, 0x09ee, 0x0002, 0x03e0, + 0x03e4, 0x0002, 0x0046, 0x0a0e, 0x0a0e, 0x0002, 0x0046, 0x0a2b, + 0x0a2b, 0x0003, 0x03ec, 0x03ef, 0x03f4, 0x0001, 0x0046, 0x0a4f, + // Entry 2FC80 - 2FCBF + 0x0003, 0x0046, 0x09bd, 0x09dd, 0x09ee, 0x0002, 0x03f7, 0x03fb, + 0x0002, 0x0046, 0x0a0e, 0x0a0e, 0x0002, 0x0046, 0x0a2b, 0x0a2b, + 0x0003, 0x0403, 0x0406, 0x040b, 0x0001, 0x0046, 0x0a4f, 0x0003, + 0x0046, 0x09bd, 0x09dd, 0x09ee, 0x0002, 0x040e, 0x0412, 0x0002, + 0x0046, 0x0a0e, 0x0a0e, 0x0002, 0x0046, 0x0a2b, 0x0a2b, 0x0004, + 0x041b, 0x041e, 0x0423, 0x042e, 0x0001, 0x0046, 0x0a57, 0x0003, + 0x0046, 0x0a64, 0x0a87, 0x0a98, 0x0002, 0x0426, 0x042a, 0x0002, + 0x0046, 0x0ab8, 0x0ab8, 0x0002, 0x0046, 0x0ad2, 0x0ad2, 0x0001, + // Entry 2FCC0 - 2FCFF + 0x0046, 0x0af6, 0x0004, 0x0436, 0x0439, 0x043e, 0x0449, 0x0001, + 0x0046, 0x0b1a, 0x0003, 0x0046, 0x0a64, 0x0a87, 0x0a98, 0x0002, + 0x0441, 0x0445, 0x0002, 0x0046, 0x0ab8, 0x0ab8, 0x0002, 0x0046, + 0x0ad2, 0x0ad2, 0x0001, 0x0046, 0x0af6, 0x0004, 0x0451, 0x0454, + 0x0459, 0x0464, 0x0001, 0x0046, 0x0b1a, 0x0003, 0x0046, 0x0a64, + 0x0a87, 0x0a98, 0x0002, 0x045c, 0x0460, 0x0002, 0x0046, 0x0ab8, + 0x0ab8, 0x0002, 0x0046, 0x0ad2, 0x0ad2, 0x0001, 0x0046, 0x0af6, + 0x0003, 0x046b, 0x046e, 0x0475, 0x0001, 0x0046, 0x0b1f, 0x0005, + // Entry 2FD00 - 2FD3F + 0x0046, 0x0b54, 0x0b67, 0x0b77, 0x0b2f, 0x0b84, 0x0002, 0x0478, + 0x047c, 0x0002, 0x0046, 0x0ba0, 0x0ba0, 0x0002, 0x0046, 0x0bc0, + 0x0bc0, 0x0003, 0x0484, 0x0487, 0x048e, 0x0001, 0x0046, 0x0b1f, + 0x0005, 0x0046, 0x0b54, 0x0b67, 0x0b77, 0x0b2f, 0x0b84, 0x0002, + 0x0491, 0x0495, 0x0002, 0x0046, 0x0ba0, 0x0ba0, 0x0002, 0x0046, + 0x0bc0, 0x0bc0, 0x0003, 0x049d, 0x04a0, 0x04a7, 0x0001, 0x0046, + 0x0b1f, 0x0005, 0x0046, 0x0b54, 0x0b67, 0x0b77, 0x0b2f, 0x0b84, + 0x0002, 0x04aa, 0x04ae, 0x0002, 0x0046, 0x0ba0, 0x0ba0, 0x0002, + // Entry 2FD40 - 2FD7F + 0x0046, 0x0bc0, 0x0bc0, 0x0001, 0x04b4, 0x0001, 0x0046, 0x0be7, + 0x0003, 0x0000, 0x04bb, 0x04c0, 0x0003, 0x0046, 0x0c10, 0x0c3c, + 0x0c59, 0x0002, 0x04c3, 0x04c7, 0x0002, 0x0046, 0x0c85, 0x0c85, + 0x0002, 0x0046, 0x0cab, 0x0cab, 0x0003, 0x0000, 0x04cf, 0x04d4, + 0x0003, 0x0046, 0x0cdb, 0x0cfb, 0x0d0c, 0x0002, 0x04d7, 0x04db, + 0x0002, 0x0046, 0x0c85, 0x0c85, 0x0002, 0x0046, 0x0cab, 0x0cab, + 0x0003, 0x0000, 0x04e3, 0x04e8, 0x0003, 0x0046, 0x0cdb, 0x0cfb, + 0x0d0c, 0x0002, 0x04eb, 0x04ef, 0x0002, 0x0046, 0x0c85, 0x0c85, + // Entry 2FD80 - 2FDBF + 0x0002, 0x0046, 0x0cab, 0x0cab, 0x0003, 0x0000, 0x04f7, 0x04fc, + 0x0003, 0x0046, 0x0d2c, 0x0d5e, 0x0d81, 0x0002, 0x04ff, 0x0503, + 0x0002, 0x0046, 0x0db3, 0x0db3, 0x0002, 0x0046, 0x0ddf, 0x0ddf, + 0x0003, 0x0000, 0x050b, 0x0510, 0x0003, 0x0046, 0x0e15, 0x0e3b, + 0x0e52, 0x0002, 0x0513, 0x0517, 0x0002, 0x0046, 0x0db3, 0x0db3, + 0x0002, 0x0046, 0x0ddf, 0x0ddf, 0x0003, 0x0000, 0x051f, 0x0524, + 0x0003, 0x0046, 0x0e15, 0x0e3b, 0x0e52, 0x0002, 0x0527, 0x052b, + 0x0002, 0x0046, 0x0db3, 0x0db3, 0x0002, 0x0046, 0x0ddf, 0x0ddf, + // Entry 2FDC0 - 2FDFF + 0x0003, 0x0000, 0x0533, 0x0538, 0x0003, 0x0046, 0x0e78, 0x0ea7, + 0x0ec7, 0x0002, 0x053b, 0x053f, 0x0002, 0x0046, 0x0ef6, 0x0ef6, + 0x0002, 0x0046, 0x0f1f, 0x0f1f, 0x0003, 0x0000, 0x0547, 0x054c, + 0x0003, 0x0046, 0x0f52, 0x0f75, 0x0f89, 0x0002, 0x054f, 0x0553, + 0x0002, 0x0046, 0x0ef6, 0x0ef6, 0x0002, 0x0046, 0x0f1f, 0x0f1f, + 0x0003, 0x0000, 0x055b, 0x0560, 0x0003, 0x0046, 0x0f52, 0x0f75, + 0x0f89, 0x0002, 0x0563, 0x0567, 0x0002, 0x0046, 0x0ef6, 0x0ef6, + 0x0002, 0x0046, 0x0f1f, 0x0f1f, 0x0003, 0x0000, 0x056f, 0x0574, + // Entry 2FE00 - 2FE3F + 0x0003, 0x0046, 0x0fac, 0x0fd8, 0x0ff5, 0x0002, 0x0577, 0x057b, + 0x0002, 0x0046, 0x1021, 0x1021, 0x0002, 0x0046, 0x1047, 0x1047, + 0x0003, 0x0000, 0x0583, 0x0588, 0x0003, 0x0046, 0x1077, 0x1097, + 0x10a8, 0x0002, 0x058b, 0x058f, 0x0002, 0x0046, 0x1021, 0x1021, + 0x0002, 0x0046, 0x1047, 0x1047, 0x0003, 0x0000, 0x0597, 0x059c, + 0x0003, 0x0046, 0x1077, 0x1097, 0x10a8, 0x0002, 0x059f, 0x05a3, + 0x0002, 0x0046, 0x1021, 0x1021, 0x0002, 0x0046, 0x1047, 0x1047, + 0x0003, 0x0000, 0x05ab, 0x05b0, 0x0003, 0x0046, 0x10c8, 0x10f7, + // Entry 2FE40 - 2FE7F + 0x1117, 0x0002, 0x05b3, 0x05b7, 0x0002, 0x0046, 0x1146, 0x1146, + 0x0002, 0x0046, 0x116f, 0x116f, 0x0003, 0x0000, 0x05bf, 0x05c4, + 0x0003, 0x0046, 0x11a2, 0x11c8, 0x11df, 0x0002, 0x05c7, 0x05cb, + 0x0002, 0x0046, 0x1146, 0x1146, 0x0002, 0x0046, 0x116f, 0x116f, + 0x0003, 0x0000, 0x05d3, 0x05d8, 0x0003, 0x0046, 0x11a2, 0x11c8, + 0x11df, 0x0002, 0x05db, 0x05df, 0x0002, 0x0046, 0x1146, 0x1146, + 0x0002, 0x0046, 0x116f, 0x116f, 0x0003, 0x0000, 0x05e7, 0x05ec, + 0x0003, 0x0046, 0x1205, 0x123a, 0x1260, 0x0002, 0x05ef, 0x05f3, + // Entry 2FE80 - 2FEBF + 0x0002, 0x0046, 0x1295, 0x1295, 0x0002, 0x0046, 0x12c4, 0x12c4, + 0x0003, 0x0000, 0x05fb, 0x0600, 0x0003, 0x0046, 0x12fd, 0x1323, + 0x133a, 0x0002, 0x0603, 0x0607, 0x0002, 0x0046, 0x1295, 0x1295, + 0x0002, 0x0046, 0x12c4, 0x12c4, 0x0003, 0x0000, 0x060f, 0x0614, + 0x0003, 0x0046, 0x12fd, 0x1323, 0x133a, 0x0002, 0x0617, 0x061b, + 0x0002, 0x0046, 0x1295, 0x1295, 0x0002, 0x0046, 0x12c4, 0x12c4, + 0x0003, 0x0000, 0x0623, 0x0628, 0x0003, 0x0046, 0x1360, 0x138c, + 0x13a9, 0x0002, 0x062b, 0x062f, 0x0002, 0x0046, 0x13d5, 0x13d5, + // Entry 2FEC0 - 2FEFF + 0x0002, 0x0046, 0x13fb, 0x13fb, 0x0003, 0x0000, 0x0637, 0x063c, + 0x0003, 0x0046, 0x142b, 0x1448, 0x1456, 0x0002, 0x063f, 0x0643, + 0x0002, 0x0046, 0x13d5, 0x13d5, 0x0002, 0x0046, 0x13fb, 0x13fb, + 0x0003, 0x0000, 0x064b, 0x0650, 0x0003, 0x0046, 0x142b, 0x1448, + 0x1456, 0x0002, 0x0653, 0x0657, 0x0002, 0x0046, 0x13d5, 0x13d5, + 0x0002, 0x0046, 0x13fb, 0x13fb, 0x0001, 0x065d, 0x0001, 0x0007, + 0x07cc, 0x0003, 0x0664, 0x0667, 0x066b, 0x0001, 0x0046, 0x1473, + 0x0002, 0x0046, 0xffff, 0x148c, 0x0002, 0x066e, 0x0672, 0x0002, + // Entry 2FF00 - 2FF3F + 0x0046, 0x14af, 0x14af, 0x0002, 0x0046, 0x14d2, 0x14d2, 0x0003, + 0x067a, 0x0000, 0x067d, 0x0001, 0x0046, 0x1502, 0x0002, 0x0680, + 0x0684, 0x0002, 0x0046, 0x14af, 0x14af, 0x0002, 0x0046, 0x14d2, + 0x14d2, 0x0003, 0x068c, 0x0000, 0x068f, 0x0001, 0x0046, 0x1502, + 0x0002, 0x0692, 0x0696, 0x0002, 0x0046, 0x14af, 0x14af, 0x0002, + 0x0046, 0x14d2, 0x14d2, 0x0003, 0x069e, 0x06a1, 0x06a5, 0x0001, + 0x0046, 0x1507, 0x0002, 0x0046, 0xffff, 0x1520, 0x0002, 0x06a8, + 0x06ac, 0x0002, 0x0046, 0x1540, 0x1540, 0x0002, 0x0046, 0x1560, + // Entry 2FF40 - 2FF7F + 0x1560, 0x0003, 0x06b4, 0x0000, 0x06b7, 0x0001, 0x0046, 0x1590, + 0x0002, 0x06ba, 0x06be, 0x0002, 0x0046, 0x1540, 0x1540, 0x0002, + 0x0046, 0x1560, 0x1560, 0x0003, 0x06c6, 0x0000, 0x06c9, 0x0001, + 0x0046, 0x1590, 0x0002, 0x06cc, 0x06d0, 0x0002, 0x0046, 0x1540, + 0x1540, 0x0002, 0x0046, 0x1560, 0x1560, 0x0003, 0x06d8, 0x06db, + 0x06df, 0x0001, 0x0046, 0x1598, 0x0002, 0x0046, 0xffff, 0x15b1, + 0x0002, 0x06e2, 0x06e6, 0x0002, 0x0046, 0x15c4, 0x15c4, 0x0002, + 0x0046, 0x15e4, 0x15e4, 0x0003, 0x06ee, 0x0000, 0x06f1, 0x0001, + // Entry 2FF80 - 2FFBF + 0x0046, 0x1614, 0x0002, 0x06f4, 0x06f8, 0x0002, 0x0046, 0x15c4, + 0x15c4, 0x0002, 0x0046, 0x15e4, 0x15e4, 0x0003, 0x0700, 0x0000, + 0x0703, 0x0001, 0x0046, 0x1614, 0x0002, 0x0706, 0x070a, 0x0002, + 0x0046, 0x15c4, 0x15c4, 0x0002, 0x0046, 0x15e4, 0x15e4, 0x0001, + 0x0710, 0x0001, 0x0046, 0x161c, 0x0004, 0x0718, 0x071d, 0x0722, + 0x0731, 0x0003, 0x0000, 0x1dc7, 0x3844, 0x385b, 0x0003, 0x0046, + 0x1633, 0x1644, 0x166e, 0x0002, 0x0000, 0x0725, 0x0003, 0x0000, + 0x072c, 0x0729, 0x0001, 0x0046, 0x16a4, 0x0003, 0x0046, 0xffff, + // Entry 2FFC0 - 2FFFF + 0x16f5, 0x1743, 0x0002, 0x0918, 0x0734, 0x0003, 0x0738, 0x0878, + 0x07d8, 0x009e, 0x0046, 0xffff, 0xffff, 0xffff, 0xffff, 0x1930, + 0x1a3d, 0x1b79, 0x1c17, 0x1d4b, 0x1e7f, 0x1faa, 0x20d5, 0x2176, + 0x2344, 0x23eb, 0x24a4, 0x25b1, 0x2661, 0x2747, 0x2851, 0x29b2, + 0x2ac5, 0x2bea, 0x2ca3, 0x2d4a, 0xffff, 0xffff, 0x2e5b, 0xffff, + 0x2f53, 0xffff, 0x305a, 0x3101, 0x3196, 0x3219, 0xffff, 0xffff, + 0x335f, 0x340f, 0x3511, 0xffff, 0xffff, 0xffff, 0x363f, 0xffff, + 0x374b, 0x3843, 0xffff, 0x398f, 0x3a9c, 0x3bc4, 0xffff, 0xffff, + // Entry 30000 - 3003F + 0xffff, 0xffff, 0x3d31, 0xffff, 0xffff, 0x3e68, 0x3f75, 0xffff, + 0xffff, 0x412f, 0x4206, 0x42d1, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x44d3, 0x455f, 0x4612, 0x46c2, 0x4760, 0xffff, + 0xffff, 0x4939, 0xffff, 0x49f4, 0xffff, 0xffff, 0x4b74, 0xffff, + 0x4cec, 0xffff, 0xffff, 0xffff, 0xffff, 0x4e38, 0xffff, 0x4f14, + 0x5063, 0x5161, 0x521d, 0xffff, 0xffff, 0xffff, 0x532a, 0x5413, + 0x54de, 0xffff, 0xffff, 0x5641, 0x5791, 0x587d, 0x593f, 0xffff, + 0xffff, 0x5a70, 0x5b20, 0x5bb5, 0xffff, 0x5cb9, 0xffff, 0xffff, + // Entry 30040 - 3007F + 0xffff, 0xffff, 0xffff, 0x5f6a, 0x6011, 0x60a0, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x627e, 0xffff, 0xffff, + 0x6392, 0xffff, 0x6447, 0xffff, 0x6571, 0x6621, 0x6719, 0xffff, + 0x67f2, 0x68f3, 0xffff, 0xffff, 0xffff, 0x6a72, 0x6b3d, 0xffff, + 0xffff, 0x1785, 0x1ae1, 0x2202, 0x229a, 0xffff, 0xffff, 0x4c30, + 0x5e74, 0x009e, 0x0046, 0x182f, 0x1864, 0x1897, 0x18d3, 0x1972, + 0x1a60, 0x1b96, 0x1c69, 0x1d9d, 0x1ece, 0x1ff9, 0x20f5, 0x2190, + 0x2367, 0x2411, 0x24e6, 0x25d4, 0x2699, 0x2789, 0x28b2, 0x29f7, + // Entry 30080 - 300BF + 0x2b10, 0x2c10, 0x2cc3, 0x2d76, 0x2e15, 0x2e38, 0x2e81, 0x2f14, + 0x2f7d, 0x3018, 0x307a, 0x311b, 0x31ad, 0x3245, 0x32e1, 0x3320, + 0x3382, 0x3448, 0x352e, 0x35a6, 0x35c6, 0x360c, 0x3675, 0x3728, + 0x3787, 0x387f, 0x393b, 0x39d1, 0x3ae7, 0x3bde, 0x3c59, 0x3c89, + 0x3cdf, 0x3d0b, 0x3d57, 0x3dea, 0x3e2f, 0x3eaa, 0x3fbd, 0x40d6, + 0x4115, 0x4162, 0x4232, 0x42eb, 0x4366, 0x43ae, 0x43ed, 0x4410, + 0x4449, 0x448b, 0x44ed, 0x4582, 0x4638, 0x46e2, 0x47ba, 0x48af, + 0x48f1, 0x4959, 0x49d7, 0x4a35, 0x4afe, 0x4b44, 0x4b9e, 0x4cb6, + // Entry 300C0 - 300FF + 0x4d09, 0x4d8a, 0x4daa, 0x4ddc, 0x4e02, 0x4e61, 0x4efa, 0x4f6e, + 0x50a2, 0x5188, 0x523d, 0x52c7, 0x52ed, 0x5307, 0x5360, 0x5442, + 0x551f, 0x55df, 0x55ff, 0x567e, 0x57c9, 0x58a6, 0x596e, 0x5a13, + 0x5a30, 0x5a93, 0x5b3a, 0x5bde, 0x5c77, 0x5d0c, 0x5df0, 0x5e19, + 0x5e3f, 0x5f27, 0x5f4d, 0x5f8a, 0x602b, 0x60ba, 0x6138, 0x615b, + 0x61a9, 0x61df, 0x621b, 0x6244, 0x625e, 0x62a7, 0x6337, 0x636c, + 0x63ac, 0x6427, 0x6488, 0x6551, 0x6594, 0x665c, 0x673c, 0x67c9, + 0x6830, 0x6922, 0x69c7, 0x69f3, 0x6a26, 0x6a9e, 0x6b7b, 0x4094, + // Entry 30100 - 3013F + 0x573f, 0x17a8, 0x1afe, 0x221f, 0x22bd, 0xffff, 0x4b2a, 0x4c47, + 0x5e9a, 0x009e, 0x0046, 0xffff, 0xffff, 0xffff, 0xffff, 0x19d9, + 0x1aa5, 0x1bd8, 0x1ce0, 0x1e14, 0x1f42, 0x206d, 0x213a, 0x21cf, + 0x23af, 0x245c, 0x254d, 0x261c, 0x26f6, 0x27f3, 0x2938, 0x2a64, + 0x2b83, 0x2c5b, 0x2d08, 0x2dc7, 0xffff, 0xffff, 0x2ecc, 0xffff, + 0x2fcc, 0xffff, 0x30bf, 0x315a, 0x31e9, 0x3296, 0xffff, 0xffff, + 0x33ca, 0x34a6, 0x3570, 0xffff, 0xffff, 0xffff, 0x36d0, 0xffff, + 0x37e8, 0x38e0, 0xffff, 0x3a38, 0x3b57, 0x3c1d, 0xffff, 0xffff, + // Entry 30140 - 3017F + 0xffff, 0xffff, 0x3da2, 0xffff, 0xffff, 0x3f11, 0x402a, 0xffff, + 0xffff, 0x41ba, 0x4283, 0x432a, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x452c, 0x45ca, 0x4683, 0x4727, 0x4839, 0xffff, + 0xffff, 0x499e, 0xffff, 0x4a9b, 0xffff, 0xffff, 0x4bed, 0xffff, + 0x4d4b, 0xffff, 0xffff, 0xffff, 0xffff, 0x4eaf, 0xffff, 0x4ff0, + 0x5109, 0x51d4, 0x5282, 0xffff, 0xffff, 0xffff, 0x53bb, 0x5496, + 0x5585, 0xffff, 0xffff, 0x56e0, 0x5823, 0x58f4, 0x59c2, 0xffff, + 0xffff, 0x5adb, 0x5b79, 0x5c2c, 0xffff, 0x5d84, 0xffff, 0xffff, + // Entry 30180 - 301BF + 0xffff, 0xffff, 0xffff, 0x5fcf, 0x606a, 0x60f9, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x62f5, 0xffff, 0xffff, + 0x63eb, 0xffff, 0x64ee, 0xffff, 0x65dc, 0x66bc, 0x6784, 0xffff, + 0x6893, 0x6976, 0xffff, 0xffff, 0xffff, 0x6aef, 0x6bde, 0xffff, + 0xffff, 0x17f0, 0x1b40, 0x2261, 0x2305, 0xffff, 0xffff, 0x4c83, + 0x5ee5, 0x0003, 0x0000, 0x0000, 0x091c, 0x0042, 0x000b, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 301C0 - 301FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0000, 0x0003, 0x0004, 0x0256, 0x0632, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, + // Entry 30200 - 3023F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0047, 0x0000, 0x0001, + 0x0047, 0x0024, 0x0001, 0x0047, 0x0042, 0x0001, 0x0000, 0x051c, + 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, + 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0203, 0x0223, + 0x0234, 0x0245, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, + 0x0066, 0x000d, 0x0047, 0xffff, 0x0049, 0x0055, 0x0061, 0x006d, + // Entry 30240 - 3027F + 0x0079, 0x0085, 0x0091, 0x009d, 0x00a9, 0x00b5, 0x00c2, 0x00cf, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0047, 0xffff, 0x00dc, 0x00f6, 0x0112, 0x0130, 0x014e, 0x0168, + 0x0186, 0x01a0, 0x01bc, 0x01d4, 0x01f0, 0x0215, 0x0003, 0x0079, + 0x0088, 0x0097, 0x000d, 0x0047, 0xffff, 0x0049, 0x0055, 0x0061, + 0x006d, 0x0079, 0x0085, 0x0091, 0x009d, 0x00a9, 0x00b5, 0x00c2, + 0x00cf, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 30280 - 302BF + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x000d, 0x0047, 0xffff, 0x00dc, 0x00f6, 0x0112, 0x0130, 0x014e, + 0x0168, 0x0186, 0x01a0, 0x01bc, 0x01d4, 0x01f0, 0x0215, 0x0002, + 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, + 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, 0x0250, 0x0255, + 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, 0x0250, + 0x0255, 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, + 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x025f, 0x0266, 0x0271, + // Entry 302C0 - 302FF + 0x027e, 0x028b, 0x0296, 0x02a3, 0x0005, 0x00d9, 0x00e2, 0x00f4, + 0x0000, 0x00eb, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, + 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, + 0x024b, 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, + 0x0246, 0x024b, 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x025f, + 0x0266, 0x0271, 0x027e, 0x028b, 0x0296, 0x02a3, 0x0002, 0x0100, + 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0047, 0xffff, + 0x02ae, 0x02b2, 0x02b6, 0x02ba, 0x0005, 0x0000, 0xffff, 0x0033, + // Entry 30300 - 3033F + 0x0035, 0x0037, 0x2335, 0x0005, 0x0047, 0xffff, 0x02be, 0x02d0, + 0x02e2, 0x02f4, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0047, + 0xffff, 0x02ae, 0x02b2, 0x02b6, 0x02ba, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0047, 0xffff, 0x02be, + 0x02d0, 0x02e2, 0x02f4, 0x0002, 0x0135, 0x019c, 0x0003, 0x0139, + 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, 0x014e, 0x0151, + 0x0154, 0x0157, 0x0148, 0x0001, 0x0047, 0x0306, 0x0001, 0x0047, + 0x0318, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, 0x0001, + // Entry 30340 - 3037F + 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, 0x0344, + 0x0001, 0x0047, 0x034d, 0x0008, 0x0166, 0x016c, 0x0163, 0x016f, + 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x0047, 0x0306, 0x0001, + 0x0047, 0x0356, 0x0001, 0x0047, 0x035b, 0x0001, 0x0047, 0x0360, + 0x0001, 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, + 0x0344, 0x0001, 0x0047, 0x034d, 0x0008, 0x0187, 0x018d, 0x0184, + 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, 0x0047, 0x0306, + 0x0001, 0x0047, 0x0365, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, + // Entry 30380 - 303BF + 0x036b, 0x0001, 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, + 0x0047, 0x0344, 0x0001, 0x0047, 0x034d, 0x0003, 0x01a0, 0x01c1, + 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, 0x01b8, 0x01bb, + 0x01be, 0x01af, 0x0001, 0x0047, 0x0306, 0x0001, 0x0047, 0x0318, + 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, 0x0001, 0x0047, + 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, 0x0344, 0x0001, + 0x0047, 0x034d, 0x0008, 0x01cd, 0x01d3, 0x01ca, 0x01d6, 0x01d9, + 0x01dc, 0x01df, 0x01d0, 0x0001, 0x0047, 0x0306, 0x0001, 0x0047, + // Entry 303C0 - 303FF + 0x0318, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, 0x0001, + 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, 0x0344, + 0x0001, 0x0047, 0x034d, 0x0008, 0x01ee, 0x01f4, 0x01eb, 0x01f7, + 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0047, 0x0306, 0x0001, + 0x0047, 0x0318, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, + 0x0001, 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, + 0x0344, 0x0001, 0x0047, 0x034d, 0x0003, 0x0212, 0x021d, 0x0207, + 0x0002, 0x020a, 0x020e, 0x0002, 0x0047, 0x0371, 0x039b, 0x0002, + // Entry 30400 - 3043F + 0x0047, 0x0394, 0x03b3, 0x0002, 0x0215, 0x0219, 0x0002, 0x0047, + 0x03b8, 0x03c1, 0x0002, 0x0047, 0x0394, 0x03b3, 0x0001, 0x021f, + 0x0002, 0x0047, 0x03c8, 0x03cf, 0x0004, 0x0231, 0x022b, 0x0228, + 0x022e, 0x0001, 0x0047, 0x03d4, 0x0001, 0x0047, 0x03f7, 0x0001, + 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0242, 0x023c, + 0x0239, 0x023f, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0253, + 0x024d, 0x024a, 0x0250, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 30440 - 3047F + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0040, + 0x0297, 0x0000, 0x0000, 0x029c, 0x02b3, 0x02c5, 0x02d7, 0x02ee, + 0x0300, 0x0312, 0x0329, 0x033b, 0x034d, 0x0368, 0x037e, 0x0000, + 0x0000, 0x0000, 0x0394, 0x03ad, 0x03bf, 0x0000, 0x0000, 0x0000, + 0x03d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d6, 0x03ea, + 0x03fe, 0x0412, 0x0426, 0x043a, 0x044e, 0x0462, 0x0476, 0x048a, + 0x049e, 0x04b2, 0x04c6, 0x04da, 0x04ee, 0x0502, 0x0516, 0x052a, + 0x053e, 0x0552, 0x0566, 0x0000, 0x057a, 0x0000, 0x057f, 0x0595, + // Entry 30480 - 304BF + 0x05a7, 0x05b9, 0x05cf, 0x05e1, 0x05f3, 0x0609, 0x061b, 0x062d, + 0x0001, 0x0299, 0x0001, 0x0047, 0x041e, 0x0003, 0x02a0, 0x02a3, + 0x02a8, 0x0001, 0x0047, 0x0427, 0x0003, 0x0047, 0x042e, 0x0446, + 0x0454, 0x0002, 0x02ab, 0x02af, 0x0002, 0x0047, 0x0464, 0x0464, + 0x0002, 0x0047, 0x0480, 0x0480, 0x0003, 0x02b7, 0x0000, 0x02ba, + 0x0001, 0x0047, 0x0427, 0x0002, 0x02bd, 0x02c1, 0x0002, 0x0047, + 0x0464, 0x0464, 0x0002, 0x0047, 0x0480, 0x0480, 0x0003, 0x02c9, + 0x0000, 0x02cc, 0x0001, 0x0047, 0x0427, 0x0002, 0x02cf, 0x02d3, + // Entry 304C0 - 304FF + 0x0002, 0x0047, 0x049a, 0x049a, 0x0002, 0x0047, 0x04a8, 0x04a8, + 0x0003, 0x02db, 0x02de, 0x02e3, 0x0001, 0x0047, 0x04c0, 0x0003, + 0x0047, 0x04cd, 0x04eb, 0x04ff, 0x0002, 0x02e6, 0x02ea, 0x0002, + 0x0047, 0x051f, 0x051f, 0x0002, 0x0047, 0x053d, 0x053d, 0x0003, + 0x02f2, 0x0000, 0x02f5, 0x0001, 0x0047, 0x04c0, 0x0002, 0x02f8, + 0x02fc, 0x0002, 0x0047, 0x051f, 0x051f, 0x0002, 0x0047, 0x053d, + 0x053d, 0x0003, 0x0304, 0x0000, 0x0307, 0x0001, 0x0047, 0x04c0, + 0x0002, 0x030a, 0x030e, 0x0002, 0x0047, 0x051f, 0x051f, 0x0002, + // Entry 30500 - 3053F + 0x0047, 0x053d, 0x053d, 0x0003, 0x0316, 0x0319, 0x031e, 0x0001, + 0x0047, 0x0559, 0x0003, 0x0047, 0x0560, 0x0578, 0x0586, 0x0002, + 0x0321, 0x0325, 0x0002, 0x0047, 0x0596, 0x0596, 0x0002, 0x0047, + 0x05b0, 0x05b0, 0x0003, 0x032d, 0x0000, 0x0330, 0x0001, 0x0047, + 0x0559, 0x0002, 0x0333, 0x0337, 0x0002, 0x0047, 0x0596, 0x0596, + 0x0002, 0x0047, 0x05b0, 0x05b0, 0x0003, 0x033f, 0x0000, 0x0342, + 0x0001, 0x0047, 0x0559, 0x0002, 0x0345, 0x0349, 0x0002, 0x0047, + 0x05c8, 0x05c8, 0x0002, 0x0047, 0x05b0, 0x05b0, 0x0004, 0x0352, + // Entry 30540 - 3057F + 0x0355, 0x035a, 0x0365, 0x0001, 0x0047, 0x05d6, 0x0003, 0x0047, + 0x05ec, 0x0613, 0x0630, 0x0002, 0x035d, 0x0361, 0x0002, 0x0047, + 0x064f, 0x064f, 0x0002, 0x0047, 0x0669, 0x0669, 0x0001, 0x0047, + 0x0681, 0x0004, 0x036d, 0x0000, 0x0370, 0x037b, 0x0001, 0x0047, + 0x06a2, 0x0002, 0x0373, 0x0377, 0x0002, 0x0047, 0x064f, 0x064f, + 0x0002, 0x0047, 0x0669, 0x0669, 0x0001, 0x0047, 0x0681, 0x0004, + 0x0383, 0x0000, 0x0386, 0x0391, 0x0001, 0x0047, 0x06a2, 0x0002, + 0x0389, 0x038d, 0x0002, 0x0047, 0x064f, 0x064f, 0x0002, 0x0047, + // Entry 30580 - 305BF + 0x0669, 0x0669, 0x0001, 0x0047, 0x0681, 0x0003, 0x0398, 0x039b, + 0x03a2, 0x0001, 0x0047, 0x033b, 0x0005, 0x0047, 0x06b7, 0x06c6, + 0x06d5, 0x06a6, 0x06e4, 0x0002, 0x03a5, 0x03a9, 0x0002, 0x0047, + 0x06f5, 0x06f5, 0x0002, 0x0047, 0x0711, 0x0711, 0x0003, 0x03b1, + 0x0000, 0x03b4, 0x0001, 0x0047, 0x033b, 0x0002, 0x03b7, 0x03bb, + 0x0002, 0x0047, 0x072b, 0x072b, 0x0002, 0x0047, 0x0711, 0x0711, + 0x0003, 0x03c3, 0x0000, 0x03c6, 0x0001, 0x0047, 0x033b, 0x0002, + 0x03c9, 0x03cd, 0x0002, 0x0047, 0x072b, 0x072b, 0x0002, 0x0047, + // Entry 305C0 - 305FF + 0x0711, 0x0711, 0x0001, 0x03d3, 0x0001, 0x0047, 0x073a, 0x0003, + 0x0000, 0x03da, 0x03df, 0x0003, 0x0047, 0x0745, 0x0768, 0x0781, + 0x0002, 0x03e2, 0x03e6, 0x0002, 0x0047, 0x079c, 0x079c, 0x0002, + 0x0047, 0x07b4, 0x07b4, 0x0003, 0x0000, 0x03ee, 0x03f3, 0x0003, + 0x0047, 0x07d9, 0x07f2, 0x0801, 0x0002, 0x03f6, 0x03fa, 0x0002, + 0x0047, 0x079c, 0x079c, 0x0002, 0x0047, 0x07b4, 0x07b4, 0x0003, + 0x0000, 0x0402, 0x0407, 0x0003, 0x0047, 0x07d9, 0x0812, 0x0801, + 0x0002, 0x040a, 0x040e, 0x0002, 0x0047, 0x079c, 0x079c, 0x0002, + // Entry 30600 - 3063F + 0x0047, 0x07b4, 0x07b4, 0x0003, 0x0000, 0x0416, 0x041b, 0x0003, + 0x0047, 0x0820, 0x0847, 0x0864, 0x0002, 0x041e, 0x0422, 0x0002, + 0x0047, 0x0883, 0x0883, 0x0002, 0x0047, 0x089f, 0x089f, 0x0003, + 0x0000, 0x042a, 0x042f, 0x0003, 0x0047, 0x08c8, 0x0847, 0x0864, + 0x0002, 0x0432, 0x0436, 0x0002, 0x0047, 0x0883, 0x0883, 0x0002, + 0x0047, 0x089f, 0x089f, 0x0003, 0x0000, 0x043e, 0x0443, 0x0003, + 0x0047, 0x08c8, 0x08e4, 0x08f6, 0x0002, 0x0446, 0x044a, 0x0002, + 0x0047, 0x0883, 0x0883, 0x0002, 0x0047, 0x089f, 0x089f, 0x0003, + // Entry 30640 - 3067F + 0x0000, 0x0452, 0x0457, 0x0003, 0x0047, 0x090a, 0x0933, 0x0952, + 0x0002, 0x045a, 0x045e, 0x0002, 0x0047, 0x0973, 0x0973, 0x0002, + 0x0047, 0x0991, 0x0991, 0x0003, 0x0000, 0x0466, 0x046b, 0x0003, + 0x0047, 0x09bc, 0x09da, 0x09ee, 0x0002, 0x046e, 0x0472, 0x0002, + 0x0047, 0x0973, 0x0973, 0x0002, 0x0047, 0x0991, 0x0991, 0x0003, + 0x0000, 0x047a, 0x047f, 0x0003, 0x0047, 0x09bc, 0x09da, 0x09ee, + 0x0002, 0x0482, 0x0486, 0x0002, 0x0047, 0x0973, 0x0973, 0x0002, + 0x0047, 0x0991, 0x0991, 0x0003, 0x0000, 0x048e, 0x0493, 0x0003, + // Entry 30680 - 306BF + 0x0047, 0x0a04, 0x0a2d, 0x0a4c, 0x0002, 0x0496, 0x049a, 0x0002, + 0x0047, 0x0a6d, 0x0a6d, 0x0002, 0x0047, 0x0a8b, 0x0a8b, 0x0003, + 0x0000, 0x04a2, 0x04a7, 0x0003, 0x0047, 0x0ab6, 0x0ad4, 0x0ae8, + 0x0002, 0x04aa, 0x04ae, 0x0002, 0x0047, 0x0a6d, 0x0a6d, 0x0002, + 0x0047, 0x0a8b, 0x0a8b, 0x0003, 0x0000, 0x04b6, 0x04bb, 0x0003, + 0x0047, 0x0afe, 0x0b14, 0x0b20, 0x0002, 0x04be, 0x04c2, 0x0002, + 0x0047, 0x0a6d, 0x0a6d, 0x0002, 0x0047, 0x0a8b, 0x0a8b, 0x0003, + 0x0000, 0x04ca, 0x04cf, 0x0003, 0x0047, 0x0b2e, 0x0b55, 0x0b72, + // Entry 306C0 - 306FF + 0x0002, 0x04d2, 0x04d6, 0x0002, 0x0047, 0x0b91, 0x0b91, 0x0002, + 0x0047, 0x0bad, 0x0bad, 0x0003, 0x0000, 0x04de, 0x04e3, 0x0003, + 0x0047, 0x0bd6, 0x0bf2, 0x0c04, 0x0002, 0x04e6, 0x04ea, 0x0002, + 0x0047, 0x0b91, 0x0b91, 0x0002, 0x0047, 0x0bad, 0x0bad, 0x0003, + 0x0000, 0x04f2, 0x04f7, 0x0003, 0x0047, 0x0c18, 0x0c2e, 0x0c3a, + 0x0002, 0x04fa, 0x04fe, 0x0002, 0x0047, 0x0b91, 0x0b91, 0x0002, + 0x0047, 0x0bad, 0x0bad, 0x0003, 0x0000, 0x0506, 0x050b, 0x0003, + 0x0047, 0x0c48, 0x0c71, 0x0c90, 0x0002, 0x050e, 0x0512, 0x0002, + // Entry 30700 - 3073F + 0x0047, 0x0cb1, 0x0cb1, 0x0002, 0x0047, 0x0ccf, 0x0ccf, 0x0003, + 0x0000, 0x051a, 0x051f, 0x0003, 0x0047, 0x0c48, 0x0c71, 0x0c90, + 0x0002, 0x0522, 0x0526, 0x0002, 0x0047, 0x0cb1, 0x0cb1, 0x0002, + 0x0047, 0x0ccf, 0x0ccf, 0x0003, 0x0000, 0x052e, 0x0533, 0x0003, + 0x0047, 0x0c48, 0x0c71, 0x0c90, 0x0002, 0x0536, 0x053a, 0x0002, + 0x0047, 0x0cb1, 0x0cb1, 0x0002, 0x0047, 0x0ccf, 0x0ccf, 0x0003, + 0x0000, 0x0542, 0x0547, 0x0003, 0x0047, 0x0cfa, 0x0d21, 0x0d3e, + 0x0002, 0x054a, 0x054e, 0x0002, 0x0047, 0x0d5d, 0x0d5d, 0x0002, + // Entry 30740 - 3077F + 0x0047, 0x0d79, 0x0d79, 0x0003, 0x0000, 0x0556, 0x055b, 0x0003, + 0x0047, 0x0da2, 0x0dbe, 0x0dd0, 0x0002, 0x055e, 0x0562, 0x0002, + 0x0047, 0x0d5d, 0x0d5d, 0x0002, 0x0047, 0x0d79, 0x0d79, 0x0003, + 0x0000, 0x056a, 0x056f, 0x0003, 0x0047, 0x0da2, 0x0dbe, 0x0dd0, + 0x0002, 0x0572, 0x0576, 0x0002, 0x0047, 0x0d5d, 0x0d5d, 0x0002, + 0x0047, 0x0d79, 0x0d79, 0x0001, 0x057c, 0x0001, 0x0047, 0x0de4, + 0x0003, 0x0583, 0x0586, 0x058a, 0x0001, 0x0047, 0x0df2, 0x0002, + 0x0047, 0xffff, 0x0df9, 0x0002, 0x058d, 0x0591, 0x0002, 0x0047, + // Entry 30780 - 307BF + 0x0e07, 0x0e07, 0x0002, 0x0047, 0x0e23, 0x0e23, 0x0003, 0x0599, + 0x0000, 0x059c, 0x0001, 0x0047, 0x0e3d, 0x0002, 0x059f, 0x05a3, + 0x0002, 0x0047, 0x0e41, 0x0e41, 0x0002, 0x0047, 0x0e54, 0x0e54, + 0x0003, 0x05ab, 0x0000, 0x05ae, 0x0001, 0x0047, 0x0e3d, 0x0002, + 0x05b1, 0x05b5, 0x0002, 0x0047, 0x0e41, 0x0e41, 0x0002, 0x0047, + 0x0e54, 0x0e54, 0x0003, 0x05bd, 0x05c0, 0x05c4, 0x0001, 0x000f, + 0x0182, 0x0002, 0x0047, 0xffff, 0x0e65, 0x0002, 0x05c7, 0x05cb, + 0x0002, 0x0047, 0x0e77, 0x0e77, 0x0002, 0x0047, 0x0e95, 0x0e95, + // Entry 307C0 - 307FF + 0x0003, 0x05d3, 0x0000, 0x05d6, 0x0001, 0x0011, 0x0ce0, 0x0002, + 0x05d9, 0x05dd, 0x0002, 0x0047, 0x0eb1, 0x0eb1, 0x0002, 0x0047, + 0x0ec8, 0x0ec8, 0x0003, 0x05e5, 0x0000, 0x05e8, 0x0001, 0x0011, + 0x0ce0, 0x0002, 0x05eb, 0x05ef, 0x0002, 0x0047, 0x0eb1, 0x0eb1, + 0x0002, 0x0047, 0x0ec8, 0x0ec8, 0x0003, 0x05f7, 0x05fa, 0x05fe, + 0x0001, 0x000f, 0x01e5, 0x0002, 0x0047, 0xffff, 0x0edd, 0x0002, + 0x0601, 0x0605, 0x0002, 0x0047, 0x0ee6, 0x0ee6, 0x0002, 0x0047, + 0x0f06, 0x0f06, 0x0003, 0x060d, 0x0000, 0x0610, 0x0001, 0x0011, + // Entry 30800 - 3083F + 0x0d52, 0x0002, 0x0613, 0x0617, 0x0002, 0x0047, 0x0f24, 0x0f24, + 0x0002, 0x0047, 0x0f3b, 0x0f3b, 0x0003, 0x061f, 0x0000, 0x0622, + 0x0001, 0x0011, 0x0d52, 0x0002, 0x0625, 0x0629, 0x0002, 0x0047, + 0x0f24, 0x0f24, 0x0002, 0x0047, 0x0f3b, 0x0f3b, 0x0001, 0x062f, + 0x0001, 0x0047, 0x0f50, 0x0004, 0x0637, 0x063c, 0x0641, 0x0650, + 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0047, 0x0f64, + 0x0f78, 0x0f81, 0x0002, 0x0000, 0x0644, 0x0003, 0x0000, 0x064b, + 0x0648, 0x0001, 0x0047, 0x0f8a, 0x0003, 0x0047, 0xffff, 0x0fbc, + // Entry 30840 - 3087F + 0x0fdf, 0x0002, 0x0000, 0x0653, 0x0003, 0x06ed, 0x0783, 0x0657, + 0x0094, 0x0047, 0x1008, 0x1026, 0x1045, 0x1066, 0x10bf, 0x113b, + 0x119b, 0x11ef, 0x1242, 0x12a8, 0x1307, 0xffff, 0x137b, 0x13d9, + 0x1435, 0x14aa, 0x152a, 0x158c, 0x15f9, 0x1696, 0x174f, 0x17f6, + 0x189a, 0x1904, 0x1966, 0x19c0, 0x19d4, 0x1a06, 0x1a54, 0x1aa0, + 0x1af8, 0x1b2c, 0x1b86, 0x1bde, 0x1c46, 0x1ca4, 0x1cc5, 0x1cfa, + 0x1d5f, 0x1dcc, 0x1e0a, 0x1e22, 0x1e4a, 0x1e8a, 0x1ee6, 0x1f1d, + 0x1f90, 0x1fe8, 0x2035, 0x20c4, 0x2154, 0x219e, 0x21c9, 0x2202, + // Entry 30880 - 308BF + 0x2220, 0x2252, 0x2298, 0x22b9, 0x2307, 0x2394, 0x2400, 0x2429, + 0x2466, 0x24e1, 0x254d, 0x258f, 0x25ab, 0x25d4, 0x2608, 0x262b, + 0x2650, 0x268b, 0x26e3, 0x274b, 0x27ab, 0xffff, 0x27e9, 0x280e, + 0x2853, 0x28a5, 0x28e1, 0x293f, 0x295d, 0x2997, 0x29ef, 0x2a2a, + 0x2a74, 0x2a8c, 0x2aa8, 0x2ac4, 0x2b05, 0x2b57, 0x2b9d, 0x2c4b, + 0x2cef, 0x2d69, 0x2dbb, 0x2dd5, 0x2def, 0x2e28, 0x2ead, 0x2f2e, + 0x2f92, 0x2faa, 0x2ffd, 0x309f, 0x3117, 0x3177, 0x31c5, 0x31df, + 0x3223, 0x3289, 0x32ed, 0x333b, 0x3389, 0x3405, 0x3421, 0x343d, + // Entry 308C0 - 308FF + 0x3455, 0x346d, 0x34a1, 0xffff, 0x3505, 0x3553, 0x356d, 0x3589, + 0x35b2, 0x35d3, 0x35ed, 0x3605, 0x3635, 0x367b, 0x3699, 0x36d1, + 0x371f, 0x3757, 0x37b5, 0x37e9, 0x3851, 0x38c5, 0x391b, 0x395d, + 0x39dd, 0x3a33, 0x3a4d, 0x3a68, 0x3aaa, 0x3b12, 0x0094, 0x0047, + 0xffff, 0xffff, 0xffff, 0xffff, 0x109a, 0x1123, 0x1185, 0x11e1, + 0x1225, 0x1296, 0x12e6, 0xffff, 0x1363, 0x13c5, 0x141b, 0x1483, + 0x1512, 0x1574, 0x15d6, 0x1659, 0x172a, 0x17cd, 0x187c, 0x18f0, + 0x1946, 0xffff, 0xffff, 0x19ec, 0xffff, 0x1a81, 0xffff, 0x1b16, + // Entry 30900 - 3093F + 0x1b72, 0x1bc8, 0x1c24, 0xffff, 0xffff, 0x1ce2, 0x1d44, 0x1dba, + 0xffff, 0xffff, 0xffff, 0x1e69, 0xffff, 0x1f00, 0x1f71, 0xffff, + 0x2012, 0x2095, 0x213c, 0xffff, 0xffff, 0xffff, 0xffff, 0x223c, + 0xffff, 0xffff, 0x22e2, 0x236b, 0xffff, 0xffff, 0x2445, 0x24c2, + 0x2539, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2679, + 0x26c9, 0x2731, 0x2799, 0xffff, 0xffff, 0xffff, 0x2837, 0xffff, + 0x28bf, 0xffff, 0xffff, 0x2978, 0xffff, 0x2a12, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2ae9, 0xffff, 0x2b6d, 0x2c17, 0x2ccd, 0x2d4d, + // Entry 30940 - 3097F + 0xffff, 0xffff, 0xffff, 0x2e03, 0x2e8c, 0x2f09, 0xffff, 0xffff, + 0x2fcb, 0x307b, 0x3101, 0x315d, 0xffff, 0xffff, 0x3209, 0x3271, + 0x32d3, 0xffff, 0x335a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3489, 0xffff, 0x34eb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x361f, 0xffff, 0xffff, 0x36b7, 0xffff, 0x3735, + 0xffff, 0x37d1, 0x3833, 0x38a7, 0xffff, 0x3939, 0x39bf, 0xffff, + 0xffff, 0xffff, 0x3a96, 0x3aec, 0x0094, 0x0047, 0xffff, 0xffff, + 0xffff, 0xffff, 0x10f5, 0x1164, 0x11c2, 0x120e, 0x1270, 0x12cb, + // Entry 30980 - 309BF + 0x1339, 0xffff, 0x13a4, 0x13fe, 0x1460, 0x14e2, 0x1553, 0x15b5, + 0x162d, 0x16e4, 0x1792, 0x183d, 0x18c9, 0x1929, 0x1997, 0xffff, + 0xffff, 0x1a31, 0xffff, 0x1ad0, 0xffff, 0x1b53, 0x1bab, 0x1c05, + 0x1c79, 0xffff, 0xffff, 0x1d23, 0x1d8b, 0x1def, 0xffff, 0xffff, + 0xffff, 0x1ebc, 0xffff, 0x1f4b, 0x1fc0, 0xffff, 0x2069, 0x2104, + 0x217d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2279, 0xffff, 0xffff, + 0x233d, 0x23ce, 0xffff, 0xffff, 0x2498, 0x2511, 0x2572, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x26ae, 0x270e, 0x2776, + // Entry 309C0 - 309FF + 0x27ce, 0xffff, 0xffff, 0xffff, 0x2880, 0xffff, 0x2914, 0xffff, + 0xffff, 0x29c7, 0xffff, 0x2a53, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2b32, 0xffff, 0x2bde, 0x2c90, 0x2d22, 0x2d96, 0xffff, 0xffff, + 0xffff, 0x2e5e, 0x2edf, 0x2f64, 0xffff, 0xffff, 0x3040, 0x30d4, + 0x313e, 0x31a2, 0xffff, 0xffff, 0x324e, 0x32b2, 0x3318, 0xffff, + 0x33cd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x34ca, 0xffff, + 0x3530, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x365c, 0xffff, 0xffff, 0x36fc, 0xffff, 0x378a, 0xffff, 0x3812, + // Entry 30A00 - 30A3F + 0x3880, 0x38f4, 0xffff, 0x3992, 0x3a0c, 0xffff, 0xffff, 0xffff, + 0x3acf, 0x3b49, 0x0003, 0x0004, 0x028c, 0x068e, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, + 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x018e, + 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, + 0x236f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0048, + 0x0000, 0x0001, 0x0048, 0x0000, 0x0001, 0x0005, 0x0846, 0x0001, + // Entry 30A40 - 30A7F + 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x023f, + 0x0259, 0x026a, 0x027b, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, + 0x0057, 0x0066, 0x000d, 0x0048, 0xffff, 0x0018, 0x0025, 0x0038, + 0x0048, 0x0058, 0x005f, 0x0069, 0x0076, 0x007d, 0x0090, 0x00a0, + 0x00b6, 0x000d, 0x0048, 0xffff, 0x00c6, 0x00cd, 0x00d4, 0x00db, + 0x0058, 0x00df, 0x00e6, 0x00ed, 0x00f1, 0x00ed, 0x00f5, 0x00fc, + 0x000d, 0x003d, 0xffff, 0x0037, 0x0050, 0x343b, 0x007f, 0x344b, + 0x3452, 0x345c, 0x3469, 0x3479, 0x3492, 0x00f2, 0x010e, 0x0003, + // Entry 30A80 - 30ABF + 0x0079, 0x0088, 0x0097, 0x000d, 0x0048, 0xffff, 0x0018, 0x0025, + 0x0103, 0x0048, 0x0113, 0x011a, 0x0124, 0x0076, 0x007d, 0x0090, + 0x00a0, 0x00b6, 0x000d, 0x0048, 0xffff, 0x00c6, 0x00cd, 0x00d4, + 0x00db, 0x0113, 0x00df, 0x00e6, 0x00ed, 0x00f1, 0x00ed, 0x00f5, + 0x00fc, 0x000d, 0x003d, 0xffff, 0x0037, 0x0050, 0x34a8, 0x007f, + 0x34b8, 0x34bf, 0x34c9, 0x3469, 0x3479, 0x3492, 0x00f2, 0x010e, + 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, + 0x00c1, 0x0007, 0x002c, 0x0246, 0x0250, 0x22d9, 0x0267, 0x0271, + // Entry 30AC0 - 30AFF + 0x027e, 0x028e, 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, + 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, + 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x002c, 0x0298, 0x22e6, + 0x22f9, 0x230f, 0x2322, 0x2338, 0x2351, 0x0005, 0x00d9, 0x00e2, + 0x00f4, 0x0000, 0x00eb, 0x0007, 0x002c, 0x0246, 0x0250, 0x22d9, + 0x0267, 0x0271, 0x027e, 0x028e, 0x0007, 0x000c, 0x0246, 0x4e4f, + 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x000c, 0x0246, + 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x002c, + // Entry 30B00 - 30B3F + 0x0298, 0x22e6, 0x22f9, 0x230f, 0x2322, 0x2338, 0x2351, 0x0002, + 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0048, + 0xffff, 0x0131, 0x013b, 0x0145, 0x014f, 0x0005, 0x0048, 0xffff, + 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x0048, 0xffff, 0x0169, + 0x018c, 0x01b5, 0x01d8, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, + 0x0048, 0xffff, 0x0131, 0x013b, 0x0145, 0x014f, 0x0005, 0x0048, + 0xffff, 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x0048, 0xffff, + 0x0169, 0x018c, 0x01b5, 0x01d8, 0x0002, 0x0135, 0x01ba, 0x0003, + // Entry 30B40 - 30B7F + 0x0139, 0x0164, 0x018f, 0x000c, 0x0149, 0x014f, 0x0146, 0x0152, + 0x0158, 0x015b, 0x0161, 0x014c, 0x0155, 0x0000, 0x0000, 0x015e, + 0x0001, 0x0048, 0x01fe, 0x0001, 0x003d, 0x01bb, 0x0001, 0x0048, + 0x021a, 0x0001, 0x0048, 0x0233, 0x0001, 0x0048, 0x023c, 0x0001, + 0x0048, 0x0249, 0x0001, 0x0048, 0x0256, 0x0001, 0x0048, 0x0266, + 0x0001, 0x0048, 0x0282, 0x0001, 0x0048, 0x0298, 0x000c, 0x0174, + 0x017a, 0x0171, 0x017d, 0x0183, 0x0186, 0x018c, 0x0177, 0x0180, + 0x0000, 0x0000, 0x0189, 0x0001, 0x0048, 0x02a8, 0x0001, 0x0048, + // Entry 30B80 - 30BBF + 0x00f1, 0x0001, 0x0048, 0x02b4, 0x0001, 0x0048, 0x02bb, 0x0001, + 0x0048, 0x02c2, 0x0001, 0x0048, 0x00f1, 0x0001, 0x0048, 0x02b4, + 0x0001, 0x0048, 0x02bb, 0x0001, 0x0048, 0x02c6, 0x0001, 0x0048, + 0x02cd, 0x000c, 0x019f, 0x01a5, 0x019c, 0x01a8, 0x01ae, 0x01b1, + 0x01b7, 0x01a2, 0x01ab, 0x0000, 0x0000, 0x01b4, 0x0001, 0x0048, + 0x01fe, 0x0001, 0x003d, 0x01bb, 0x0001, 0x0048, 0x021a, 0x0001, + 0x0048, 0x0233, 0x0001, 0x0048, 0x023c, 0x0001, 0x0048, 0x0249, + 0x0001, 0x0048, 0x0256, 0x0001, 0x0048, 0x0266, 0x0001, 0x0048, + // Entry 30BC0 - 30BFF + 0x0282, 0x0001, 0x0048, 0x0298, 0x0003, 0x01be, 0x01e9, 0x0214, + 0x000c, 0x01ce, 0x01d4, 0x01cb, 0x01d7, 0x01dd, 0x01e0, 0x01e6, + 0x01d1, 0x01da, 0x0000, 0x0000, 0x01e3, 0x0001, 0x0048, 0x01fe, + 0x0001, 0x003d, 0x01bb, 0x0001, 0x0048, 0x021a, 0x0001, 0x0048, + 0x0233, 0x0001, 0x0048, 0x023c, 0x0001, 0x0048, 0x0249, 0x0001, + 0x0048, 0x0256, 0x0001, 0x0048, 0x0266, 0x0001, 0x0048, 0x0282, + 0x0001, 0x0048, 0x0298, 0x000c, 0x01f9, 0x01ff, 0x01f6, 0x0202, + 0x0208, 0x020b, 0x0211, 0x01fc, 0x0205, 0x0000, 0x0000, 0x020e, + // Entry 30C00 - 30C3F + 0x0001, 0x0048, 0x02a8, 0x0001, 0x003d, 0x01bb, 0x0001, 0x000c, + 0x4e3d, 0x0001, 0x0048, 0x0233, 0x0001, 0x0048, 0x02c2, 0x0001, + 0x0048, 0x00f1, 0x0001, 0x0048, 0x02b4, 0x0001, 0x0048, 0x02bb, + 0x0001, 0x0048, 0x02c6, 0x0001, 0x0048, 0x0298, 0x000c, 0x0224, + 0x022a, 0x0221, 0x022d, 0x0233, 0x0236, 0x023c, 0x0227, 0x0230, + 0x0000, 0x0000, 0x0239, 0x0001, 0x0048, 0x01fe, 0x0001, 0x003d, + 0x01bb, 0x0001, 0x0048, 0x021a, 0x0001, 0x0048, 0x0233, 0x0001, + 0x0048, 0x023c, 0x0001, 0x0048, 0x0249, 0x0001, 0x0048, 0x0256, + // Entry 30C40 - 30C7F + 0x0001, 0x0048, 0x0266, 0x0001, 0x0048, 0x0282, 0x0001, 0x0048, + 0x0298, 0x0003, 0x024e, 0x0000, 0x0243, 0x0002, 0x0246, 0x024a, + 0x0002, 0x0048, 0x02d4, 0x0319, 0x0002, 0x0048, 0x02f6, 0x032c, + 0x0002, 0x0251, 0x0255, 0x0002, 0x0048, 0x034b, 0x0379, 0x0002, + 0x0048, 0x035d, 0x0383, 0x0004, 0x0267, 0x0261, 0x025e, 0x0264, + 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, + 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x0278, 0x0272, 0x026f, + 0x0275, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, + // Entry 30C80 - 30CBF + 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0289, 0x0283, + 0x0280, 0x0286, 0x0001, 0x0048, 0x0399, 0x0001, 0x0048, 0x0399, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x02cd, + 0x0000, 0x0000, 0x02d2, 0x02e9, 0x0300, 0x0317, 0x032e, 0x0345, + 0x035c, 0x0373, 0x038a, 0x03a1, 0x03bc, 0x03d7, 0x0000, 0x0000, + 0x0000, 0x03f2, 0x0409, 0x041b, 0x0000, 0x0000, 0x0000, 0x042d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0432, 0x0446, 0x045a, + 0x046e, 0x0482, 0x0496, 0x04aa, 0x04be, 0x04d2, 0x04e6, 0x04fa, + // Entry 30CC0 - 30CFF + 0x050e, 0x0522, 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, 0x059a, + 0x05ae, 0x05c2, 0x0000, 0x05d6, 0x0000, 0x05db, 0x05f1, 0x0603, + 0x0615, 0x062b, 0x063d, 0x064f, 0x0665, 0x0677, 0x0689, 0x0001, + 0x02cf, 0x0001, 0x002d, 0x00de, 0x0003, 0x02d6, 0x02d9, 0x02de, + 0x0001, 0x002d, 0x00e8, 0x0003, 0x0048, 0x03ae, 0x03cb, 0x03df, + 0x0002, 0x02e1, 0x02e5, 0x0002, 0x0048, 0x041f, 0x03fc, 0x0002, + 0x0048, 0x046b, 0x0445, 0x0003, 0x02ed, 0x02f0, 0x02f5, 0x0001, + 0x002d, 0x00e8, 0x0003, 0x0048, 0x03ae, 0x03cb, 0x03df, 0x0002, + // Entry 30D00 - 30D3F + 0x02f8, 0x02fc, 0x0002, 0x0048, 0x041f, 0x03fc, 0x0002, 0x0048, + 0x046b, 0x0445, 0x0003, 0x0304, 0x0307, 0x030c, 0x0001, 0x002d, + 0x00e8, 0x0003, 0x0048, 0x03ae, 0x03cb, 0x03df, 0x0002, 0x030f, + 0x0313, 0x0002, 0x0048, 0x0494, 0x0494, 0x0002, 0x0048, 0x04a6, + 0x04a6, 0x0003, 0x031b, 0x031e, 0x0323, 0x0001, 0x002d, 0x0179, + 0x0003, 0x0048, 0x04b8, 0x04db, 0x04f5, 0x0002, 0x0326, 0x032a, + 0x0002, 0x0048, 0x053e, 0x0518, 0x0002, 0x0048, 0x0590, 0x0567, + 0x0003, 0x0332, 0x0335, 0x033a, 0x0001, 0x002d, 0x0179, 0x0003, + // Entry 30D40 - 30D7F + 0x0048, 0x04b8, 0x04db, 0x04f5, 0x0002, 0x033d, 0x0341, 0x0002, + 0x0048, 0x053e, 0x0518, 0x0002, 0x0048, 0x0590, 0x0567, 0x0003, + 0x0349, 0x034c, 0x0351, 0x0001, 0x002d, 0x0179, 0x0003, 0x0048, + 0x04b8, 0x04db, 0x04f5, 0x0002, 0x0354, 0x0358, 0x0002, 0x0048, + 0x053e, 0x0518, 0x0002, 0x0048, 0x0590, 0x0567, 0x0003, 0x0360, + 0x0363, 0x0368, 0x0001, 0x0048, 0x05bc, 0x0003, 0x0048, 0x05cc, + 0x05ec, 0x0603, 0x0002, 0x036b, 0x036f, 0x0002, 0x0048, 0x064c, + 0x0623, 0x0002, 0x0048, 0x06a4, 0x0678, 0x0003, 0x0377, 0x037a, + // Entry 30D80 - 30DBF + 0x037f, 0x0001, 0x0048, 0x05bc, 0x0003, 0x0048, 0x05cc, 0x05ec, + 0x0603, 0x0002, 0x0382, 0x0386, 0x0002, 0x0048, 0x0623, 0x0623, + 0x0002, 0x0048, 0x0678, 0x0678, 0x0003, 0x038e, 0x0391, 0x0396, + 0x0001, 0x0048, 0x05bc, 0x0003, 0x0048, 0x05cc, 0x05ec, 0x0603, + 0x0002, 0x0399, 0x039d, 0x0002, 0x0048, 0x064c, 0x0623, 0x0002, + 0x0048, 0x06a4, 0x0678, 0x0004, 0x03a6, 0x03a9, 0x03ae, 0x03b9, + 0x0001, 0x0048, 0x06d3, 0x0003, 0x0048, 0x06e3, 0x0703, 0x071a, + 0x0002, 0x03b1, 0x03b5, 0x0002, 0x0048, 0x0763, 0x073a, 0x0002, + // Entry 30DC0 - 30DFF + 0x0048, 0x07bb, 0x078f, 0x0001, 0x0048, 0x07ea, 0x0004, 0x03c1, + 0x03c4, 0x03c9, 0x03d4, 0x0001, 0x0048, 0x06d3, 0x0003, 0x0048, + 0x06e3, 0x0703, 0x071a, 0x0002, 0x03cc, 0x03d0, 0x0002, 0x0048, + 0x0763, 0x073a, 0x0002, 0x0048, 0x07bb, 0x078f, 0x0001, 0x0048, + 0x07ea, 0x0004, 0x03dc, 0x03df, 0x03e4, 0x03ef, 0x0001, 0x0048, + 0x06d3, 0x0003, 0x0048, 0x06e3, 0x0703, 0x071a, 0x0002, 0x03e7, + 0x03eb, 0x0002, 0x0048, 0x0763, 0x073a, 0x0002, 0x0048, 0x07bb, + 0x078f, 0x0001, 0x0048, 0x07ea, 0x0003, 0x03f6, 0x03f9, 0x03fe, + // Entry 30E00 - 30E3F + 0x0001, 0x0048, 0x0805, 0x0003, 0x0048, 0x0812, 0x081c, 0x0823, + 0x0002, 0x0401, 0x0405, 0x0002, 0x0048, 0x0856, 0x0833, 0x0002, + 0x0048, 0x08a2, 0x087c, 0x0003, 0x040d, 0x0000, 0x0410, 0x0001, + 0x0048, 0x0805, 0x0002, 0x0413, 0x0417, 0x0002, 0x0048, 0x0856, + 0x0833, 0x0002, 0x0048, 0x08a2, 0x087c, 0x0003, 0x041f, 0x0000, + 0x0422, 0x0001, 0x0048, 0x0805, 0x0002, 0x0425, 0x0429, 0x0002, + 0x0048, 0x0856, 0x0833, 0x0002, 0x0048, 0x08a2, 0x087c, 0x0001, + 0x042f, 0x0001, 0x0048, 0x08cb, 0x0003, 0x0000, 0x0436, 0x043b, + // Entry 30E40 - 30E7F + 0x0003, 0x0048, 0x08f4, 0x0917, 0x0931, 0x0002, 0x043e, 0x0442, + 0x0002, 0x0048, 0x0981, 0x0954, 0x0002, 0x0048, 0x09d5, 0x09ab, + 0x0003, 0x0000, 0x044a, 0x044f, 0x0003, 0x0048, 0x09fc, 0x0a17, + 0x0a29, 0x0002, 0x0452, 0x0456, 0x0002, 0x0048, 0x0a80, 0x0a44, + 0x0002, 0x0048, 0x0ae8, 0x0abf, 0x0003, 0x0000, 0x045e, 0x0463, + 0x0003, 0x0048, 0x0b17, 0x0b2b, 0x0b36, 0x0002, 0x0466, 0x046a, + 0x0002, 0x0048, 0x0954, 0x0954, 0x0002, 0x0048, 0x0ae8, 0x0abf, + 0x0003, 0x0000, 0x0472, 0x0477, 0x0003, 0x0048, 0x0b4a, 0x0b6d, + // Entry 30E80 - 30EBF + 0x0b87, 0x0002, 0x047a, 0x047e, 0x0002, 0x0048, 0x0baa, 0x0baa, + 0x0002, 0x0048, 0x0c00, 0x0bd7, 0x0003, 0x0000, 0x0486, 0x048b, + 0x0003, 0x0048, 0x0c2f, 0x0c4a, 0x0c5c, 0x0002, 0x048e, 0x0492, + 0x0002, 0x0048, 0x0c77, 0x0baa, 0x0002, 0x0048, 0x0c00, 0x0ca1, + 0x0003, 0x0000, 0x049a, 0x049f, 0x0003, 0x0048, 0x0ccd, 0x0ce4, + 0x0cf2, 0x0002, 0x04a2, 0x04a6, 0x0002, 0x0048, 0x0d45, 0x0d09, + 0x0002, 0x0048, 0x0c00, 0x0ca1, 0x0003, 0x0000, 0x04ae, 0x04b3, + 0x0003, 0x0048, 0x0d84, 0x0daa, 0x0dc7, 0x0002, 0x04b6, 0x04ba, + // Entry 30EC0 - 30EFF + 0x0002, 0x0048, 0x0e1d, 0x0ded, 0x0002, 0x0048, 0x0e76, 0x0e4a, + 0x0003, 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0048, 0x0ea8, 0x0ec6, + 0x0edb, 0x0002, 0x04ca, 0x04ce, 0x0002, 0x0048, 0x0f35, 0x0ef9, + 0x0002, 0x0048, 0x0e76, 0x0f77, 0x0003, 0x0000, 0x04d6, 0x04db, + 0x0003, 0x0048, 0x0fa6, 0x0fbd, 0x0fcb, 0x0002, 0x04de, 0x04e2, + 0x0002, 0x0048, 0x0f35, 0x0fe2, 0x0002, 0x0048, 0x0e76, 0x0e4a, + 0x0003, 0x0000, 0x04ea, 0x04ef, 0x0003, 0x0048, 0x1021, 0x1044, + 0x105e, 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0048, 0x10ae, 0x1081, + // Entry 30F00 - 30F3F + 0x0002, 0x0048, 0x1101, 0x10d8, 0x0003, 0x0000, 0x04fe, 0x0503, + 0x0003, 0x0048, 0x1130, 0x114b, 0x115d, 0x0002, 0x0506, 0x050a, + 0x0002, 0x0048, 0x10ae, 0x10ae, 0x0002, 0x0048, 0x1101, 0x10d8, + 0x0003, 0x0000, 0x0512, 0x0517, 0x0003, 0x0048, 0x1178, 0x118f, + 0x119d, 0x0002, 0x051a, 0x051e, 0x0002, 0x0048, 0x10ae, 0x1081, + 0x0002, 0x0048, 0x1101, 0x10d8, 0x0003, 0x0000, 0x0526, 0x052b, + 0x0003, 0x0048, 0x11b4, 0x11da, 0x11f7, 0x0002, 0x052e, 0x0532, + 0x0002, 0x0048, 0x124d, 0x121d, 0x0002, 0x0048, 0x12a6, 0x127a, + // Entry 30F40 - 30F7F + 0x0003, 0x0000, 0x053a, 0x053f, 0x0003, 0x0048, 0x12d8, 0x12f6, + 0x130b, 0x0002, 0x0542, 0x0546, 0x0002, 0x0048, 0x124d, 0x121d, + 0x0002, 0x0048, 0x12a6, 0x127a, 0x0003, 0x0000, 0x054e, 0x0553, + 0x0003, 0x0048, 0x1329, 0x1340, 0x134e, 0x0002, 0x0556, 0x055a, + 0x0002, 0x0048, 0x124d, 0x121d, 0x0002, 0x0048, 0x12a6, 0x127a, + 0x0003, 0x0000, 0x0562, 0x0567, 0x0003, 0x0048, 0x1365, 0x138e, + 0x13ae, 0x0002, 0x056a, 0x056e, 0x0002, 0x0048, 0x140a, 0x13d7, + 0x0002, 0x0048, 0x1469, 0x143a, 0x0003, 0x0000, 0x0576, 0x057b, + // Entry 30F80 - 30FBF + 0x0003, 0x0048, 0x149e, 0x14bf, 0x14d7, 0x0002, 0x057e, 0x0582, + 0x0002, 0x0048, 0x140a, 0x13d7, 0x0002, 0x0048, 0x1469, 0x143a, + 0x0003, 0x0000, 0x058a, 0x058f, 0x0003, 0x0048, 0x14f8, 0x150f, + 0x151d, 0x0002, 0x0592, 0x0596, 0x0002, 0x0048, 0x140a, 0x13d7, + 0x0002, 0x0048, 0x1469, 0x143a, 0x0003, 0x0000, 0x059e, 0x05a3, + 0x0003, 0x0048, 0x1534, 0x1557, 0x1571, 0x0002, 0x05a6, 0x05aa, + 0x0002, 0x0048, 0x15c1, 0x1594, 0x0002, 0x0048, 0x1614, 0x15eb, + 0x0003, 0x0000, 0x05b2, 0x05b7, 0x0003, 0x0048, 0x1643, 0x165e, + // Entry 30FC0 - 30FFF + 0x1670, 0x0002, 0x05ba, 0x05be, 0x0002, 0x0048, 0x16b5, 0x168b, + 0x0002, 0x0048, 0x1706, 0x16dc, 0x0003, 0x0000, 0x05c6, 0x05cb, + 0x0003, 0x0048, 0x172d, 0x1741, 0x174c, 0x0002, 0x05ce, 0x05d2, + 0x0002, 0x0048, 0x16b5, 0x168b, 0x0002, 0x0048, 0x1706, 0x16dc, + 0x0001, 0x05d8, 0x0001, 0x0048, 0x1760, 0x0003, 0x05df, 0x05e2, + 0x05e6, 0x0001, 0x0048, 0x1777, 0x0002, 0x0048, 0xffff, 0x1781, + 0x0002, 0x05e9, 0x05ed, 0x0002, 0x0048, 0x17b1, 0x1791, 0x0002, + 0x0048, 0x17f7, 0x17d4, 0x0003, 0x05f5, 0x0000, 0x05f8, 0x0001, + // Entry 31000 - 3103F + 0x0048, 0x1777, 0x0002, 0x05fb, 0x05ff, 0x0002, 0x0048, 0x17b1, + 0x1791, 0x0002, 0x0048, 0x17f7, 0x17d4, 0x0003, 0x0607, 0x0000, + 0x060a, 0x0001, 0x0048, 0x1777, 0x0002, 0x060d, 0x0611, 0x0002, + 0x0048, 0x17b1, 0x1791, 0x0002, 0x0048, 0x17f7, 0x17d4, 0x0003, + 0x0619, 0x061c, 0x0620, 0x0001, 0x0048, 0x181d, 0x0002, 0x0048, + 0xffff, 0x182d, 0x0002, 0x0623, 0x0627, 0x0002, 0x0048, 0x1870, + 0x184a, 0x0002, 0x0048, 0x18c2, 0x1899, 0x0003, 0x062f, 0x0000, + 0x0632, 0x0001, 0x002d, 0x0c85, 0x0002, 0x0635, 0x0639, 0x0002, + // Entry 31040 - 3107F + 0x0048, 0x18ee, 0x18ee, 0x0002, 0x0048, 0x1910, 0x1910, 0x0003, + 0x0641, 0x0000, 0x0644, 0x0001, 0x002d, 0x0c85, 0x0002, 0x0647, + 0x064b, 0x0002, 0x0048, 0x18ee, 0x18ee, 0x0002, 0x0048, 0x1910, + 0x1910, 0x0003, 0x0653, 0x0656, 0x065a, 0x0001, 0x0048, 0x1935, + 0x0002, 0x0048, 0xffff, 0x1945, 0x0002, 0x065d, 0x0661, 0x0002, + 0x0048, 0x197b, 0x1955, 0x0002, 0x0048, 0x19cd, 0x19a4, 0x0003, + 0x0669, 0x0000, 0x066c, 0x0001, 0x002d, 0x0d12, 0x0002, 0x066f, + 0x0673, 0x0002, 0x0048, 0x19f9, 0x19f9, 0x0002, 0x0048, 0x1a15, + // Entry 31080 - 310BF + 0x1a15, 0x0003, 0x067b, 0x0000, 0x067e, 0x0001, 0x002d, 0x0d12, + 0x0002, 0x0681, 0x0685, 0x0002, 0x0048, 0x19f9, 0x19f9, 0x0002, + 0x0048, 0x1a15, 0x1a15, 0x0001, 0x068b, 0x0001, 0x0048, 0x1a34, + 0x0004, 0x0693, 0x0698, 0x069d, 0x06a8, 0x0003, 0x0000, 0x1dc7, + 0x3877, 0x3880, 0x0003, 0x0048, 0x1a54, 0x1a62, 0x1a92, 0x0002, + 0x0000, 0x06a0, 0x0002, 0x0000, 0x06a3, 0x0003, 0x0048, 0xffff, + 0x1ab3, 0x1ae9, 0x0002, 0x088f, 0x06ab, 0x0003, 0x06af, 0x07ef, + 0x074f, 0x009e, 0x0048, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c4c, + // Entry 310C0 - 310FF + 0x1d0e, 0x1e3a, 0x1ec9, 0x1f67, 0x200e, 0x20a3, 0x2138, 0x21c9, + 0x2395, 0x242a, 0x24ce, 0x25b4, 0x264f, 0x26ed, 0x27cd, 0x28e6, + 0x29cf, 0x2ac1, 0x2b53, 0x2be5, 0xffff, 0xffff, 0x2cc3, 0xffff, + 0x2da0, 0xffff, 0x2e77, 0x2ef1, 0x2f5f, 0x2fd9, 0xffff, 0xffff, + 0x30c5, 0x3157, 0x31f0, 0xffff, 0xffff, 0xffff, 0x3308, 0xffff, + 0x33c0, 0x3482, 0xffff, 0x3590, 0x365b, 0x3702, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3842, 0xffff, 0xffff, 0x3937, 0x39f9, 0xffff, + 0xffff, 0x3b31, 0x3bdb, 0x3c70, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31100 - 3113F + 0xffff, 0xffff, 0x3e38, 0x3eb2, 0x3f4d, 0x3fd8, 0x4052, 0xffff, + 0xffff, 0x4212, 0xffff, 0x42be, 0xffff, 0xffff, 0x43f3, 0xffff, + 0x4546, 0xffff, 0xffff, 0xffff, 0xffff, 0x4659, 0xffff, 0x46f0, + 0x47c7, 0x48a7, 0x4945, 0xffff, 0xffff, 0xffff, 0x4a19, 0x4ae4, + 0x4b8b, 0xffff, 0xffff, 0x4c91, 0x4dba, 0x4e79, 0x4ef9, 0xffff, + 0xffff, 0x4fdf, 0x5071, 0x50df, 0xffff, 0x51a1, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x5418, 0x548f, 0x5514, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x56aa, 0xffff, 0xffff, + // Entry 31140 - 3117F + 0x5779, 0xffff, 0x5804, 0xffff, 0x58e9, 0x5972, 0x5a1f, 0xffff, + 0x5ad4, 0x5b93, 0xffff, 0xffff, 0xffff, 0x5ccd, 0x5d5f, 0xffff, + 0xffff, 0x1b16, 0x1da3, 0x224c, 0x22ec, 0xffff, 0xffff, 0x449d, + 0x531d, 0x009e, 0x0048, 0x1b7a, 0x1ba6, 0x1bd6, 0x1c06, 0x1c7f, + 0x1d2e, 0x1e5a, 0x1eec, 0x1f8d, 0x202e, 0x20c3, 0x2158, 0x21e3, + 0x23b5, 0x2453, 0x250d, 0x25da, 0x2672, 0x2726, 0x2819, 0x2922, + 0x2a0e, 0x2ae4, 0x2b76, 0x2c0b, 0x2c80, 0x2c9a, 0x2cec, 0x2d67, + 0x2dca, 0x2e47, 0x2e8e, 0x2f08, 0x2f76, 0x2fff, 0x3074, 0x309e, + // Entry 31180 - 311BF + 0x30e8, 0x3178, 0x320d, 0x327c, 0x329c, 0x32de, 0x332c, 0x339d, + 0x33f3, 0x34b5, 0x3544, 0x35c6, 0x3685, 0x3719, 0x3770, 0x379d, + 0x37f9, 0x381f, 0x3865, 0x38d4, 0x3904, 0x396a, 0x3a2f, 0x3aed, + 0x3b17, 0x3b58, 0x3bff, 0x3c90, 0x3cf9, 0x3d29, 0x3d55, 0x3d7b, + 0x3db4, 0x3df9, 0x3e4f, 0x3ed8, 0x3f63, 0x3fef, 0x40b0, 0x41a3, + 0x41d9, 0x422f, 0x429e, 0x42f6, 0x438f, 0x43cf, 0x441a, 0x4519, + 0x4563, 0x45c6, 0x45e6, 0x4603, 0x462f, 0x4676, 0x46d9, 0x4726, + 0x4800, 0x48ce, 0x4962, 0x49c5, 0x49e8, 0x49ff, 0x4a4f, 0x4b0a, + // Entry 311C0 - 311FF + 0x4bbb, 0x4c50, 0x4c6a, 0x4cd4, 0x4dec, 0x4e96, 0x4f1f, 0x4f94, + 0x4fab, 0x5002, 0x5088, 0x5102, 0x5171, 0x51eb, 0x52b4, 0x52d7, + 0x52f4, 0x53d8, 0x53fb, 0x5432, 0x54a9, 0x552e, 0x5597, 0x55b7, + 0x55ed, 0x561a, 0x5650, 0x5670, 0x568d, 0x56c4, 0x572d, 0x5759, + 0x5793, 0x57f0, 0x5839, 0x58cc, 0x5909, 0x599e, 0x5a3f, 0x5aa8, + 0x5b06, 0x5bc5, 0x5c52, 0x5c78, 0x5c96, 0x5cf0, 0x5d8b, 0x3ac4, + 0x4d83, 0x1b2a, 0x1dc3, 0x226f, 0x2312, 0xffff, 0x43b8, 0x44b4, + 0x5349, 0x009e, 0x0048, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cc5, + // Entry 31200 - 3123F + 0x1d61, 0x1e90, 0x1f22, 0x1fc6, 0x2061, 0x20f6, 0x2187, 0x2210, + 0x23e8, 0x248f, 0x255f, 0x2613, 0x26a8, 0x2772, 0x2878, 0x2971, + 0x2a60, 0x2b1a, 0x2bac, 0x2c44, 0xffff, 0xffff, 0x2d28, 0xffff, + 0x2e07, 0xffff, 0x2eb8, 0x2f32, 0x2fa0, 0x3038, 0xffff, 0xffff, + 0x311e, 0x31ac, 0x323d, 0xffff, 0xffff, 0xffff, 0x3363, 0xffff, + 0x3439, 0x34fb, 0xffff, 0x360f, 0x36c2, 0x3743, 0xffff, 0xffff, + 0xffff, 0xffff, 0x389b, 0xffff, 0xffff, 0x39b0, 0x3a78, 0xffff, + 0xffff, 0x3b92, 0x3c36, 0x3cc3, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31240 - 3127F + 0xffff, 0xffff, 0x3e79, 0x3f11, 0x3f96, 0x4019, 0x4120, 0xffff, + 0xffff, 0x425f, 0xffff, 0x4341, 0xffff, 0xffff, 0x4454, 0xffff, + 0x4593, 0xffff, 0xffff, 0xffff, 0xffff, 0x46a6, 0xffff, 0x476f, + 0x484c, 0x4908, 0x4992, 0xffff, 0xffff, 0xffff, 0x4a98, 0x4b43, + 0x4bfe, 0xffff, 0xffff, 0x4d2a, 0x4e31, 0x4ec6, 0x4f58, 0xffff, + 0xffff, 0x5038, 0x50b2, 0x5138, 0xffff, 0x5248, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x545f, 0x54d5, 0x555b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x56f1, 0xffff, 0xffff, + // Entry 31280 - 312BF + 0x57c0, 0xffff, 0x5881, 0xffff, 0x593c, 0x59dd, 0x5a72, 0xffff, + 0x5b4b, 0x5c0a, 0xffff, 0xffff, 0xffff, 0x5d26, 0x5dca, 0xffff, + 0xffff, 0x1b50, 0x1df5, 0x22a4, 0x234a, 0xffff, 0xffff, 0x44dd, + 0x5387, 0x0003, 0x0000, 0x0000, 0x0893, 0x0042, 0x000b, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 312C0 - 312FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0000, 0x0003, 0x0004, 0x0301, 0x06b9, 0x0012, 0x0017, 0x0024, + 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1, 0x00cc, 0x0000, 0x0000, + 0x02ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x02db, 0x0000, 0x02f3, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, + // Entry 31300 - 3133F + 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, 0x002b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0090, 0x0002, 0x002e, 0x005f, 0x0003, + 0x0032, 0x0041, 0x0050, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, + 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x23da, 0x22dc, 0x234a, + 0x22e0, 0x23de, 0x000d, 0x0049, 0xffff, 0x0000, 0x0003, 0x0006, + 0x0009, 0x000c, 0x000f, 0x0012, 0x0015, 0x0018, 0x001b, 0x001e, + 0x0021, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x22d0, 0x2260, + 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, 0x23f1, 0x23f9, 0x2402, + // Entry 31340 - 3137F + 0x0003, 0x0063, 0x0072, 0x0081, 0x000d, 0x0005, 0xffff, 0x0636, + 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x23da, 0x22dc, + 0x234a, 0x22e0, 0x23de, 0x000d, 0x0049, 0xffff, 0x0000, 0x0024, + 0x0006, 0x0009, 0x000c, 0x000f, 0x0012, 0x0015, 0x0018, 0x001b, + 0x001e, 0x0021, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x22d0, + 0x2260, 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, 0x23f1, 0x23f9, + 0x2402, 0x0004, 0x009e, 0x0098, 0x0095, 0x009b, 0x0001, 0x0032, + 0x00df, 0x0001, 0x0032, 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, + // Entry 31380 - 313BF + 0x0032, 0x0100, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00aa, 0x0000, 0x00bb, 0x0004, 0x00b8, 0x00b2, 0x00af, 0x00b5, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0010, + 0x02f4, 0x0001, 0x001c, 0x04b3, 0x0004, 0x00c9, 0x00c3, 0x00c0, + 0x00c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x00d5, 0x013a, + 0x0191, 0x01c6, 0x028b, 0x029b, 0x02ac, 0x02bd, 0x0002, 0x00d8, + 0x0109, 0x0003, 0x00dc, 0x00eb, 0x00fa, 0x000d, 0x0005, 0xffff, + // Entry 313C0 - 313FF + 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x23da, + 0x22dc, 0x234a, 0x22e0, 0x23de, 0x000d, 0x0000, 0xffff, 0x2483, + 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2990, 0x298e, + 0x2990, 0x297e, 0x297c, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, + 0x22d0, 0x2260, 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, 0x23f1, + 0x23f9, 0x2402, 0x0003, 0x010d, 0x011c, 0x012b, 0x000d, 0x0005, + 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, + 0x23da, 0x22dc, 0x234a, 0x22e0, 0x23de, 0x000d, 0x0000, 0xffff, + // Entry 31400 - 3143F + 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2990, + 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0005, 0xffff, 0x0666, + 0x066e, 0x22d0, 0x2260, 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, + 0x23f1, 0x23f9, 0x2402, 0x0002, 0x013d, 0x0167, 0x0005, 0x0143, + 0x014c, 0x015e, 0x0000, 0x0155, 0x0007, 0x0049, 0x0027, 0x002b, + 0x002f, 0x0033, 0x0037, 0x003b, 0x003f, 0x0007, 0x0000, 0x2980, + 0x2055, 0x298e, 0x223e, 0x25bc, 0x2483, 0x298e, 0x0007, 0x0049, + 0x0043, 0x0046, 0x0049, 0x004c, 0x004f, 0x000f, 0x0052, 0x0007, + // Entry 31440 - 3147F + 0x0049, 0x0055, 0x005a, 0x0060, 0x0067, 0x006c, 0x0073, 0x007a, + 0x0005, 0x016d, 0x0176, 0x0188, 0x0000, 0x017f, 0x0007, 0x0049, + 0x0027, 0x002b, 0x002f, 0x0033, 0x0037, 0x003b, 0x003f, 0x0007, + 0x0000, 0x2980, 0x2055, 0x298e, 0x223e, 0x25bc, 0x2483, 0x298e, + 0x0007, 0x0049, 0x0043, 0x0046, 0x0049, 0x004c, 0x004f, 0x000f, + 0x0052, 0x0007, 0x0049, 0x0055, 0x005a, 0x0060, 0x0067, 0x006c, + 0x0073, 0x007a, 0x0002, 0x0194, 0x01ad, 0x0003, 0x0198, 0x019f, + 0x01a6, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, 0x01b0, + // Entry 31480 - 314BF + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0049, 0xffff, 0x0080, 0x008d, 0x0097, 0x00a1, 0x0003, 0x01b1, + 0x01b8, 0x01bf, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, + 0x01b0, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0049, 0xffff, 0x0080, 0x008d, 0x0097, 0x00a1, 0x0002, + 0x01c9, 0x022a, 0x0003, 0x01cd, 0x01ec, 0x020b, 0x0009, 0x01d7, + 0x01da, 0x0000, 0x01dd, 0x01e3, 0x01e6, 0x01e9, 0x0000, 0x01e0, + 0x0001, 0x0049, 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, 0x0032, + // Entry 314C0 - 314FF + 0x01a6, 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, + 0x0049, 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x01f6, 0x01f9, + 0x0000, 0x01fc, 0x0202, 0x0205, 0x0208, 0x0000, 0x01ff, 0x0001, + 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0032, 0x01a6, + 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, 0x0049, + 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x0215, 0x0218, 0x0000, + 0x021b, 0x0221, 0x0224, 0x0227, 0x0000, 0x021e, 0x0001, 0x0049, + 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, 0x0032, 0x01a6, 0x0001, + // Entry 31500 - 3153F + 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, 0x0049, 0x00b2, + 0x0001, 0x0032, 0x01b6, 0x0003, 0x022e, 0x024d, 0x026c, 0x0009, + 0x0238, 0x023b, 0x0000, 0x023e, 0x0244, 0x0247, 0x024a, 0x0000, + 0x0241, 0x0001, 0x0049, 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, + 0x0032, 0x018d, 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, + 0x0001, 0x0049, 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x0257, + 0x025a, 0x0000, 0x025d, 0x0263, 0x0266, 0x0269, 0x0000, 0x0260, + 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0032, + // Entry 31540 - 3157F + 0x01a6, 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, + 0x0049, 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x0276, 0x0279, + 0x0000, 0x027c, 0x0282, 0x0285, 0x0288, 0x0000, 0x027f, 0x0001, + 0x0049, 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, 0x0032, 0x018d, + 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, 0x0049, + 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0003, 0x0295, 0x0000, 0x028f, + 0x0001, 0x0291, 0x0002, 0x0049, 0x00b9, 0x00be, 0x0001, 0x0297, + 0x0002, 0x0049, 0x00b9, 0x00be, 0x0004, 0x02a9, 0x02a3, 0x02a0, + // Entry 31580 - 315BF + 0x02a6, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x001c, 0x04c7, 0x0004, 0x02ba, 0x02b4, + 0x02b1, 0x02b7, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x02cb, + 0x02c5, 0x02c2, 0x02c8, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02d4, 0x0001, 0x02d6, 0x0001, + 0x02d8, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, + // Entry 315C0 - 315FF + 0x0000, 0x0000, 0x02e2, 0x0004, 0x02f0, 0x02ea, 0x02e7, 0x02ed, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0010, + 0x02f4, 0x0001, 0x001c, 0x04b3, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x02f9, 0x0001, 0x02fb, 0x0001, 0x02fd, 0x0002, 0x0000, + 0x1a20, 0x3886, 0x0040, 0x0342, 0x0000, 0x0000, 0x0347, 0x035c, + 0x0371, 0x0386, 0x039b, 0x03b0, 0x03c5, 0x03da, 0x03ef, 0x0404, + 0x041d, 0x0436, 0x0000, 0x0000, 0x0000, 0x044f, 0x0466, 0x047d, + 0x0000, 0x0000, 0x0000, 0x0494, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 31600 - 3163F + 0x0000, 0x0499, 0x04ab, 0x04bd, 0x04cf, 0x04e1, 0x04f3, 0x0505, + 0x0517, 0x0529, 0x053b, 0x054d, 0x055f, 0x0571, 0x0583, 0x0595, + 0x05a7, 0x05b9, 0x05cb, 0x05dd, 0x05ef, 0x0601, 0x0000, 0x0613, + 0x0000, 0x0618, 0x062c, 0x063c, 0x064c, 0x0660, 0x0670, 0x0680, + 0x0694, 0x06a4, 0x06b4, 0x0001, 0x0344, 0x0001, 0x0000, 0x1a35, + 0x0003, 0x034b, 0x034e, 0x0353, 0x0001, 0x0032, 0x020e, 0x0003, + 0x0032, 0x0214, 0x021f, 0x0229, 0x0002, 0x0356, 0x0359, 0x0001, + 0x0049, 0x00c1, 0x0001, 0x0049, 0x00d0, 0x0003, 0x0360, 0x0363, + // Entry 31640 - 3167F + 0x0368, 0x0001, 0x0049, 0x00df, 0x0003, 0x0049, 0x00e3, 0x00ed, + 0x00f5, 0x0002, 0x036b, 0x036e, 0x0001, 0x0049, 0x00ff, 0x0001, + 0x0032, 0x026a, 0x0003, 0x0375, 0x0378, 0x037d, 0x0001, 0x0049, + 0x00df, 0x0003, 0x0049, 0x00e3, 0x00ed, 0x00f5, 0x0002, 0x0380, + 0x0383, 0x0001, 0x0049, 0x00ff, 0x0001, 0x0032, 0x026a, 0x0003, + 0x038a, 0x038d, 0x0392, 0x0001, 0x0049, 0x010d, 0x0003, 0x0049, + 0x0118, 0x0128, 0x0137, 0x0002, 0x0395, 0x0398, 0x0001, 0x0049, + 0x014d, 0x0001, 0x0049, 0x0162, 0x0003, 0x039f, 0x03a2, 0x03a7, + // Entry 31680 - 316BF + 0x0001, 0x0049, 0x0176, 0x0003, 0x0049, 0x017b, 0x0186, 0x018f, + 0x0002, 0x03aa, 0x03ad, 0x0001, 0x0049, 0x019f, 0x0001, 0x0049, + 0x0162, 0x0003, 0x03b4, 0x03b7, 0x03bc, 0x0001, 0x0049, 0x0176, + 0x0003, 0x0049, 0x017b, 0x0186, 0x018f, 0x0002, 0x03bf, 0x03c2, + 0x0001, 0x0049, 0x019f, 0x0001, 0x0049, 0x0162, 0x0003, 0x03c9, + 0x03cc, 0x03d1, 0x0001, 0x0032, 0x031e, 0x0003, 0x0032, 0x0324, + 0x032f, 0x271d, 0x0002, 0x03d4, 0x03d7, 0x0001, 0x0049, 0x01b2, + 0x0001, 0x0049, 0x01c2, 0x0003, 0x03de, 0x03e1, 0x03e6, 0x0001, + // Entry 316C0 - 316FF + 0x0049, 0x01d1, 0x0003, 0x0049, 0x01d5, 0x01de, 0x01e6, 0x0002, + 0x03e9, 0x03ec, 0x0001, 0x0032, 0x0373, 0x0001, 0x0032, 0x037f, + 0x0003, 0x03f3, 0x03f6, 0x03fb, 0x0001, 0x0049, 0x01d1, 0x0003, + 0x0049, 0x01d5, 0x01de, 0x01e6, 0x0002, 0x03fe, 0x0401, 0x0001, + 0x0032, 0x0373, 0x0001, 0x0049, 0x01c2, 0x0004, 0x0409, 0x040c, + 0x0411, 0x041a, 0x0001, 0x0032, 0x012e, 0x0003, 0x0032, 0x03a0, + 0x03ac, 0x03b7, 0x0002, 0x0414, 0x0417, 0x0001, 0x0049, 0x01f0, + 0x0001, 0x0049, 0x0201, 0x0001, 0x0032, 0x03ea, 0x0004, 0x0422, + // Entry 31700 - 3173F + 0x0425, 0x042a, 0x0433, 0x0001, 0x0049, 0x0211, 0x0003, 0x0049, + 0x0215, 0x021f, 0x0227, 0x0002, 0x042d, 0x0430, 0x0001, 0x0049, + 0x0231, 0x0001, 0x0049, 0x023d, 0x0001, 0x0032, 0x03ea, 0x0004, + 0x043b, 0x043e, 0x0443, 0x044c, 0x0001, 0x0049, 0x0211, 0x0003, + 0x0049, 0x0215, 0x021f, 0x0227, 0x0002, 0x0446, 0x0449, 0x0001, + 0x0049, 0x0231, 0x0001, 0x0049, 0x023d, 0x0001, 0x0032, 0x03ea, + 0x0003, 0x0453, 0x0456, 0x045d, 0x0001, 0x0032, 0x043d, 0x0005, + 0x0049, 0x0253, 0x025b, 0x0264, 0x024a, 0x0269, 0x0002, 0x0460, + // Entry 31740 - 3177F + 0x0463, 0x0001, 0x0049, 0x026e, 0x0001, 0x0049, 0x027d, 0x0003, + 0x046a, 0x046d, 0x0474, 0x0001, 0x0049, 0x028b, 0x0005, 0x0049, + 0x0290, 0x025b, 0x0264, 0x024a, 0x0269, 0x0002, 0x0477, 0x047a, + 0x0001, 0x0049, 0x0296, 0x0001, 0x0049, 0x027d, 0x0003, 0x0481, + 0x0484, 0x048b, 0x0001, 0x0049, 0x028b, 0x0005, 0x0049, 0x0290, + 0x025b, 0x0264, 0x024a, 0x0269, 0x0002, 0x048e, 0x0491, 0x0001, + 0x0049, 0x0296, 0x0001, 0x0049, 0x027d, 0x0001, 0x0496, 0x0001, + 0x0049, 0x02a3, 0x0003, 0x0000, 0x049d, 0x04a2, 0x0003, 0x0049, + // Entry 31780 - 317BF + 0x02b5, 0x02bf, 0x02c8, 0x0002, 0x04a5, 0x04a8, 0x0001, 0x0049, + 0x02d3, 0x0001, 0x0049, 0x02e1, 0x0003, 0x0000, 0x04af, 0x04b4, + 0x0003, 0x0049, 0x02f4, 0x02fd, 0x0305, 0x0002, 0x04b7, 0x04ba, + 0x0001, 0x0049, 0x02d3, 0x0001, 0x0049, 0x02e1, 0x0003, 0x0000, + 0x04c1, 0x04c6, 0x0003, 0x0049, 0x030f, 0x0318, 0x0320, 0x0002, + 0x04c9, 0x04cc, 0x0001, 0x0049, 0x02d3, 0x0001, 0x0049, 0x02e1, + 0x0003, 0x0000, 0x04d3, 0x04d8, 0x0003, 0x0049, 0x032a, 0x0335, + 0x033f, 0x0002, 0x04db, 0x04de, 0x0001, 0x0049, 0x034b, 0x0001, + // Entry 317C0 - 317FF + 0x0049, 0x035a, 0x0003, 0x0000, 0x04e5, 0x04ea, 0x0003, 0x0049, + 0x036e, 0x0377, 0x037f, 0x0002, 0x04ed, 0x04f0, 0x0001, 0x0049, + 0x034b, 0x0001, 0x0049, 0x035a, 0x0003, 0x0000, 0x04f7, 0x04fc, + 0x0003, 0x0049, 0x036e, 0x0377, 0x037f, 0x0002, 0x04ff, 0x0502, + 0x0001, 0x0049, 0x034b, 0x0001, 0x0049, 0x035a, 0x0003, 0x0000, + 0x0509, 0x050e, 0x0003, 0x0032, 0x0609, 0x0615, 0x2729, 0x0002, + 0x0511, 0x0514, 0x0001, 0x0049, 0x0389, 0x0001, 0x0049, 0x0399, + 0x0003, 0x0000, 0x051b, 0x0520, 0x0003, 0x0049, 0x03ae, 0x03b7, + // Entry 31800 - 3183F + 0x03bf, 0x0002, 0x0523, 0x0526, 0x0001, 0x0049, 0x0389, 0x0001, + 0x0049, 0x0399, 0x0003, 0x0000, 0x052d, 0x0532, 0x0003, 0x0049, + 0x03ae, 0x03b7, 0x03bf, 0x0002, 0x0535, 0x0538, 0x0001, 0x0049, + 0x0389, 0x0001, 0x0049, 0x0399, 0x0003, 0x0000, 0x053f, 0x0544, + 0x0003, 0x0032, 0x06a5, 0x06af, 0x2736, 0x0002, 0x0547, 0x054a, + 0x0001, 0x0049, 0x03c9, 0x0001, 0x0049, 0x03d7, 0x0003, 0x0000, + 0x0551, 0x0556, 0x0003, 0x0049, 0x03ea, 0x03f3, 0x03fb, 0x0002, + 0x0559, 0x055c, 0x0001, 0x0049, 0x03c9, 0x0001, 0x0049, 0x03d7, + // Entry 31840 - 3187F + 0x0003, 0x0000, 0x0563, 0x0568, 0x0003, 0x0049, 0x03ea, 0x03f3, + 0x03fb, 0x0002, 0x056b, 0x056e, 0x0001, 0x0049, 0x03c9, 0x0001, + 0x0049, 0x03d7, 0x0003, 0x0000, 0x0575, 0x057a, 0x0003, 0x0049, + 0x0405, 0x0411, 0x041c, 0x0002, 0x057d, 0x0580, 0x0001, 0x0049, + 0x0429, 0x0001, 0x0049, 0x0439, 0x0003, 0x0000, 0x0587, 0x058c, + 0x0003, 0x0049, 0x044e, 0x0457, 0x045f, 0x0002, 0x058f, 0x0592, + 0x0001, 0x0049, 0x0429, 0x0001, 0x0049, 0x0439, 0x0003, 0x0000, + 0x0599, 0x059e, 0x0003, 0x0049, 0x044e, 0x0457, 0x045f, 0x0002, + // Entry 31880 - 318BF + 0x05a1, 0x05a4, 0x0001, 0x0049, 0x0429, 0x0001, 0x0049, 0x0439, + 0x0003, 0x0000, 0x05ab, 0x05b0, 0x0003, 0x0049, 0x0469, 0x0475, + 0x0480, 0x0002, 0x05b3, 0x05b6, 0x0001, 0x0049, 0x048d, 0x0001, + 0x0049, 0x049d, 0x0003, 0x0000, 0x05bd, 0x05c2, 0x0003, 0x0049, + 0x04b2, 0x04bb, 0x04c3, 0x0002, 0x05c5, 0x05c8, 0x0001, 0x0049, + 0x048d, 0x0001, 0x0049, 0x049d, 0x0003, 0x0000, 0x05cf, 0x05d4, + 0x0003, 0x0049, 0x04b2, 0x04bb, 0x04c3, 0x0002, 0x05d7, 0x05da, + 0x0001, 0x0049, 0x048d, 0x0001, 0x0049, 0x049d, 0x0003, 0x0000, + // Entry 318C0 - 318FF + 0x05e1, 0x05e6, 0x0003, 0x0032, 0x0865, 0x0870, 0x2741, 0x0002, + 0x05e9, 0x05ec, 0x0001, 0x0049, 0x04cd, 0x0001, 0x0049, 0x04dc, + 0x0003, 0x0000, 0x05f3, 0x05f8, 0x0003, 0x0049, 0x04f0, 0x04f9, + 0x0501, 0x0002, 0x05fb, 0x05fe, 0x0001, 0x0049, 0x04cd, 0x0001, + 0x0049, 0x04dc, 0x0003, 0x0000, 0x0605, 0x060a, 0x0003, 0x0049, + 0x04f0, 0x04f9, 0x0501, 0x0002, 0x060d, 0x0610, 0x0001, 0x0049, + 0x04cd, 0x0001, 0x0049, 0x04dc, 0x0001, 0x0615, 0x0001, 0x0049, + 0x050b, 0x0003, 0x061c, 0x061f, 0x0623, 0x0001, 0x0032, 0x08fc, + // Entry 31900 - 3193F + 0x0002, 0x0032, 0xffff, 0x0900, 0x0002, 0x0626, 0x0629, 0x0001, + 0x0049, 0x0512, 0x0001, 0x0032, 0x092c, 0x0003, 0x0630, 0x0000, + 0x0633, 0x0001, 0x0032, 0x0928, 0x0002, 0x0636, 0x0639, 0x0001, + 0x0049, 0x0520, 0x0001, 0x0032, 0x092c, 0x0003, 0x0640, 0x0000, + 0x0643, 0x0001, 0x0032, 0x0928, 0x0002, 0x0646, 0x0649, 0x0001, + 0x0049, 0x0520, 0x0001, 0x0032, 0x092c, 0x0003, 0x0650, 0x0653, + 0x0657, 0x0001, 0x0045, 0x04d4, 0x0002, 0x0049, 0xffff, 0x052c, + 0x0002, 0x065a, 0x065d, 0x0001, 0x0049, 0x053b, 0x0001, 0x0049, + // Entry 31940 - 3197F + 0x054b, 0x0003, 0x0664, 0x0000, 0x0667, 0x0001, 0x0041, 0x092f, + 0x0002, 0x066a, 0x066d, 0x0001, 0x0049, 0x055a, 0x0001, 0x0049, + 0x0566, 0x0003, 0x0674, 0x0000, 0x0677, 0x0001, 0x0041, 0x092f, + 0x0002, 0x067a, 0x067d, 0x0001, 0x0049, 0x055a, 0x0001, 0x0049, + 0x0566, 0x0003, 0x0684, 0x0687, 0x068b, 0x0001, 0x0007, 0x07d2, + 0x0002, 0x0032, 0xffff, 0x09b5, 0x0002, 0x068e, 0x0691, 0x0001, + 0x0049, 0x00c1, 0x0001, 0x0049, 0x0573, 0x0003, 0x0698, 0x0000, + 0x069b, 0x0001, 0x0007, 0x0802, 0x0002, 0x069e, 0x06a1, 0x0001, + // Entry 31980 - 319BF + 0x0049, 0x0581, 0x0001, 0x0049, 0x0573, 0x0003, 0x06a8, 0x0000, + 0x06ab, 0x0001, 0x0007, 0x0802, 0x0002, 0x06ae, 0x06b1, 0x0001, + 0x0049, 0x0581, 0x0001, 0x0049, 0x0573, 0x0001, 0x06b6, 0x0001, + 0x0049, 0x058e, 0x0004, 0x06be, 0x06c3, 0x06c8, 0x06d7, 0x0003, + 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0032, 0x0a1d, 0x274d, + 0x275d, 0x0002, 0x0000, 0x06cb, 0x0003, 0x0000, 0x06d2, 0x06cf, + 0x0001, 0x0049, 0x0598, 0x0003, 0x0049, 0xffff, 0x05b0, 0x05ca, + 0x0002, 0x08a0, 0x06da, 0x0003, 0x0774, 0x080a, 0x06de, 0x0094, + // Entry 319C0 - 319FF + 0x0049, 0x05e4, 0x05f6, 0x060a, 0x061d, 0x0639, 0x0653, 0x0667, + 0x067b, 0x068e, 0x06a1, 0x06ba, 0x06cf, 0x06e3, 0x06f7, 0x0709, + 0x0720, 0x073d, 0x0752, 0x0768, 0x0786, 0x07aa, 0x07c7, 0x07e4, + 0x07fc, 0x0810, 0x0828, 0x0835, 0x0843, 0x0859, 0x0871, 0x088c, + 0x08a2, 0x08b7, 0x08ca, 0x08dd, 0x08f5, 0x090b, 0x0921, 0x0937, + 0x0953, 0x0965, 0x0971, 0x098a, 0x099c, 0x09b6, 0x09c4, 0x09df, + 0x09f9, 0x0a12, 0x0a2c, 0x0a4c, 0x0a5e, 0x0a74, 0x0a99, 0x0aa9, + 0x0ab7, 0x0acc, 0x0ae4, 0x0af8, 0x0b15, 0x0b32, 0x0b3e, 0x0b4b, + // Entry 31A00 - 31A3F + 0x0b68, 0x0b7f, 0x0b91, 0x0ba4, 0x0bb7, 0x0bc7, 0x0bde, 0x0bf4, + 0x0c0a, 0x0c1c, 0x0c31, 0x0c45, 0x0c58, 0x0c7e, 0x0c95, 0x0cac, + 0x0cbf, 0x0ccc, 0x0ce5, 0x0cf5, 0x0d0a, 0x0d21, 0x0d37, 0x0d4c, + 0x0d5b, 0x0d6a, 0x0d7a, 0x0d93, 0x0daa, 0x0db7, 0x0dd6, 0x0df2, + 0x0e0a, 0x0e1e, 0x0e2c, 0x0e38, 0x0e44, 0x0e5f, 0x0e78, 0x0e92, + 0x0e9d, 0x0eb5, 0x0ed6, 0x0eef, 0x0f01, 0x0f17, 0x0f23, 0x0f3a, + 0x0f50, 0x0f62, 0x0f78, 0x0f90, 0x0fb7, 0x0fc6, 0x0fd3, 0x0fe3, + 0x0ff1, 0x0fff, 0x1015, 0x1029, 0x103c, 0x104d, 0x1064, 0x107c, + // Entry 31A40 - 31A7F + 0x1092, 0x10a1, 0x10ad, 0x10ba, 0x10ce, 0x10df, 0x10ed, 0x1100, + 0x110c, 0x1126, 0x1133, 0x1148, 0x1160, 0x1175, 0x1185, 0x119e, + 0x11b5, 0x11c2, 0x11d3, 0x11eb, 0x1200, 0x0094, 0x0032, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0b28, 0x0b75, 0x0beb, 0x2781, 0x0c61, + 0x27b2, 0x0ce0, 0x0d1e, 0x0d59, 0x0e01, 0x0e36, 0x2817, 0x0ee5, + 0x0f23, 0x2864, 0x0fbd, 0x28bb, 0x28ed, 0x10d4, 0x111b, 0x1156, + 0xffff, 0xffff, 0x291f, 0xffff, 0x120b, 0xffff, 0x127e, 0x295d, + 0x2981, 0x1332, 0xffff, 0xffff, 0x299f, 0x29c9, 0x2a07, 0xffff, + // Entry 31A80 - 31ABF + 0xffff, 0xffff, 0x2a23, 0xffff, 0x2a55, 0x2a89, 0xffff, 0x2abb, + 0x15ec, 0x164b, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e0, 0xffff, + 0xffff, 0x1745, 0x179b, 0xffff, 0xffff, 0x181d, 0x1873, 0x18b7, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x196e, 0x19a3, + 0x19e1, 0x2b2d, 0x2b4b, 0xffff, 0xffff, 0x1af6, 0xffff, 0x1b3b, + 0xffff, 0xffff, 0x1bb1, 0xffff, 0x1c47, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1cc7, 0xffff, 0x2b92, 0x2bc8, 0x1dcd, 0x2bf8, 0xffff, + 0xffff, 0xffff, 0x2c1e, 0x2c52, 0x1f18, 0xffff, 0xffff, 0x1f88, + // Entry 31AC0 - 31AFF + 0x2003, 0x204d, 0x2082, 0xffff, 0xffff, 0x20e2, 0x2123, 0x2158, + 0xffff, 0x21b1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22b1, + 0x22f2, 0x232d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x23e4, 0xffff, 0xffff, 0x243e, 0xffff, 0x2482, 0xffff, + 0x24dc, 0x251a, 0x2561, 0xffff, 0x25af, 0x25f9, 0xffff, 0xffff, + 0xffff, 0x2677, 0x26b5, 0x0094, 0x0032, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0b56, 0x276e, 0x0c0d, 0x278d, 0x27a0, 0x27c4, 0x27e1, + 0x0d40, 0x27f5, 0x2806, 0x0e5e, 0x282d, 0x0f09, 0x284f, 0x287b, + // Entry 31B00 - 31B3F + 0x2898, 0x28d1, 0x2903, 0x10fe, 0x113d, 0x1180, 0xffff, 0xffff, + 0x292e, 0xffff, 0x123b, 0xffff, 0x2949, 0x2969, 0x298d, 0x135c, + 0xffff, 0xffff, 0x29ae, 0x29de, 0x2a12, 0xffff, 0xffff, 0xffff, + 0x2a36, 0xffff, 0x2a69, 0x2a9c, 0xffff, 0x2ace, 0x1626, 0x1669, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1704, 0xffff, 0xffff, 0x1779, + 0x17cf, 0xffff, 0xffff, 0x2aed, 0x189b, 0x18d5, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2b09, 0x19c7, 0x2b1a, 0x2b39, + 0x1a9d, 0xffff, 0xffff, 0x2b6a, 0xffff, 0x1b67, 0xffff, 0xffff, + // Entry 31B40 - 31B7F + 0x2b7c, 0xffff, 0x1c6b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cef, + 0xffff, 0x2baa, 0x2bdd, 0x1df7, 0x2c05, 0xffff, 0xffff, 0xffff, + 0x2c32, 0x2c64, 0x2c7c, 0xffff, 0xffff, 0x1fc4, 0x202f, 0x206b, + 0x20a8, 0xffff, 0xffff, 0x2108, 0x2141, 0x217e, 0xffff, 0x2c95, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22d7, 0x2314, 0x234d, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2cbb, + 0xffff, 0xffff, 0x245e, 0xffff, 0x24b0, 0xffff, 0x2500, 0x2544, + 0x2585, 0xffff, 0x25db, 0x2621, 0xffff, 0xffff, 0xffff, 0x269b, + // Entry 31B80 - 31BBF + 0x26e5, 0x0003, 0x0000, 0x0000, 0x08a4, 0x007d, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31BC0 - 31BFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04a6, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31C00 - 31C3F + 0xffff, 0xffff, 0xffff, 0x0584, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0003, 0x0000, + 0x0000, 0x0016, 0x0001, 0x0000, 0x1e0b, 0x0006, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0020, 0x0003, 0x0000, 0x0000, 0x0024, + 0x0001, 0x0001, 0x002d, 0x0003, 0x0004, 0x01af, 0x026f, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x002c, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + // Entry 31C40 - 31C7F + 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0049, + 0x121b, 0x0001, 0x0049, 0x1234, 0x0001, 0x0000, 0x1e17, 0x0001, + 0x0002, 0x04f7, 0x0001, 0x0029, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0035, 0x009a, 0x00f1, 0x0126, 0x0167, 0x017c, 0x018d, 0x019e, + 0x0002, 0x0038, 0x0069, 0x0003, 0x003c, 0x004b, 0x005a, 0x000d, + 0x0005, 0xffff, 0x0636, 0x240b, 0x236e, 0x2246, 0x240f, 0x2413, + 0x2418, 0x241c, 0x232e, 0x2420, 0x22e0, 0x2424, 0x000d, 0x0000, + 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x388d, 0x2994, + // Entry 31C80 - 31CBF + 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0049, 0xffff, + 0x1247, 0x124e, 0x1253, 0x1259, 0x125f, 0x1265, 0x126c, 0x1272, + 0x127a, 0x1284, 0x128c, 0x1295, 0x0003, 0x006d, 0x007c, 0x008b, + 0x000d, 0x0005, 0xffff, 0x0636, 0x240b, 0x236e, 0x2246, 0x240f, + 0x2413, 0x2418, 0x241c, 0x232e, 0x2420, 0x22e0, 0x2424, 0x000d, + 0x0049, 0xffff, 0x0000, 0x129f, 0x12a2, 0x0009, 0x12a5, 0x12a8, + 0x12ac, 0x12af, 0x12b2, 0x12b5, 0x001e, 0x12b8, 0x000d, 0x0049, + 0xffff, 0x1247, 0x124e, 0x1253, 0x1259, 0x125f, 0x1265, 0x126c, + // Entry 31CC0 - 31CFF + 0x1272, 0x127a, 0x1284, 0x128c, 0x1295, 0x0002, 0x009d, 0x00c7, + 0x0005, 0x00a3, 0x00ac, 0x00be, 0x0000, 0x00b5, 0x0007, 0x0049, + 0x12bc, 0x12c1, 0x12c5, 0x12c9, 0x12cd, 0x12d2, 0x12d7, 0x0007, + 0x0049, 0x12db, 0x12df, 0x12e1, 0x12e4, 0x12e7, 0x12eb, 0x12ef, + 0x0007, 0x0049, 0x12bc, 0x12c1, 0x12c5, 0x12c9, 0x12cd, 0x12d2, + 0x12d7, 0x0007, 0x0049, 0x12f2, 0x12fb, 0x1304, 0x130e, 0x1318, + 0x1322, 0x132e, 0x0005, 0x00cd, 0x00d6, 0x00e8, 0x0000, 0x00df, + 0x0007, 0x0049, 0x12bc, 0x12c1, 0x12c5, 0x12c9, 0x12cd, 0x12d2, + // Entry 31D00 - 31D3F + 0x12d7, 0x0007, 0x0049, 0x12db, 0x1336, 0x12e1, 0x12e4, 0x12e7, + 0x12eb, 0x12ef, 0x0007, 0x0049, 0x12bc, 0x12c1, 0x12c5, 0x12c9, + 0x12cd, 0x12d2, 0x12d7, 0x0007, 0x0049, 0x12f2, 0x12fb, 0x1304, + 0x130e, 0x1318, 0x1322, 0x132e, 0x0002, 0x00f4, 0x010d, 0x0003, + 0x00f8, 0x00ff, 0x0106, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, + 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0049, 0xffff, 0x1339, 0x1343, 0x134d, 0x1357, + 0x0003, 0x0111, 0x0118, 0x011f, 0x0005, 0x0000, 0xffff, 0x1f17, + // Entry 31D40 - 31D7F + 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0049, 0xffff, 0x1339, 0x1343, 0x134d, + 0x1357, 0x0002, 0x0129, 0x0148, 0x0003, 0x012d, 0x0136, 0x013f, + 0x0002, 0x0130, 0x0133, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0002, 0x0139, 0x013c, 0x0001, 0x0000, 0x2337, 0x0001, + 0x0000, 0x233a, 0x0002, 0x0142, 0x0145, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0003, 0x014c, 0x0155, 0x015e, 0x0002, + 0x014f, 0x0152, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + // Entry 31D80 - 31DBF + 0x0002, 0x0158, 0x015b, 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, + 0x233a, 0x0002, 0x0161, 0x0164, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0003, 0x0171, 0x0000, 0x016b, 0x0001, 0x016d, + 0x0002, 0x0049, 0x1364, 0x1371, 0x0002, 0x0174, 0x0178, 0x0002, + 0x0049, 0x137d, 0x1384, 0x0002, 0x0049, 0x1380, 0x1387, 0x0004, + 0x018a, 0x0184, 0x0181, 0x0187, 0x0001, 0x0049, 0x138a, 0x0001, + 0x0049, 0x13a1, 0x0001, 0x0001, 0x0037, 0x0001, 0x0002, 0x0860, + 0x0004, 0x019b, 0x0195, 0x0192, 0x0198, 0x0001, 0x0000, 0x0524, + // Entry 31DC0 - 31DFF + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0004, 0x01ac, 0x01a6, 0x01a3, 0x01a9, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0040, 0x01f0, 0x0000, 0x0000, 0x01f5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x020c, 0x0000, 0x0000, 0x0217, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0222, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x022d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0232, 0x0000, 0x0000, 0x023a, 0x0000, 0x0000, 0x0000, + // Entry 31E00 - 31E3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0242, + 0x0000, 0x0247, 0x0000, 0x0000, 0x024c, 0x0251, 0x0256, 0x025b, + 0x0260, 0x0265, 0x026a, 0x0001, 0x01f2, 0x0001, 0x0049, 0x13b2, + 0x0003, 0x01f9, 0x01fc, 0x0201, 0x0001, 0x0049, 0x13b8, 0x0003, + 0x0049, 0x13bd, 0x13d2, 0x13de, 0x0002, 0x0000, 0x0204, 0x0006, + 0x0049, 0x13fd, 0x13f0, 0xffff, 0xffff, 0x13fd, 0x13fd, 0x0002, + 0x020f, 0x0212, 0x0001, 0x0049, 0x140a, 0x0003, 0x0049, 0x1410, + // Entry 31E40 - 31E7F + 0x1424, 0x1431, 0x0002, 0x021a, 0x021d, 0x0001, 0x0049, 0x1445, + 0x0003, 0x0049, 0x144e, 0x1467, 0x1477, 0x0002, 0x0225, 0x0228, + 0x0001, 0x0049, 0x003b, 0x0003, 0x0049, 0x148d, 0x1497, 0x149d, + 0x0001, 0x022f, 0x0001, 0x0049, 0x14a4, 0x0002, 0x0000, 0x0235, + 0x0003, 0x0049, 0x14b5, 0x14c9, 0x14d6, 0x0002, 0x0000, 0x023d, + 0x0003, 0x0049, 0x14e7, 0x14fb, 0x1508, 0x0001, 0x0244, 0x0001, + 0x0049, 0x1519, 0x0001, 0x0249, 0x0001, 0x0049, 0x151f, 0x0001, + 0x024e, 0x0001, 0x0049, 0x1527, 0x0001, 0x0253, 0x0001, 0x0001, + // Entry 31E80 - 31EBF + 0x075a, 0x0001, 0x0258, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x025d, + 0x0001, 0x0049, 0x152e, 0x0001, 0x0262, 0x0001, 0x0001, 0x07d3, + 0x0001, 0x0267, 0x0001, 0x0000, 0x2002, 0x0001, 0x026c, 0x0001, + 0x0049, 0x1536, 0x0004, 0x0274, 0x0279, 0x0000, 0x027e, 0x0003, + 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0049, 0x153c, 0x154b, + 0x1554, 0x0002, 0x0315, 0x0281, 0x0003, 0x0285, 0x02e5, 0x02b5, + 0x002e, 0x0049, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31EC0 - 31EFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1566, + 0x002e, 0x0049, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31F00 - 31F3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x157d, + 0x002e, 0x0049, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x159d, + // Entry 31F40 - 31F7F + 0x0003, 0x0319, 0x0388, 0x034c, 0x0031, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x003a, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31F80 - 31FBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + 0xffff, 0x27cb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x27cf, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 31FC0 - 31FFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + // Entry 32000 - 3203F + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0049, 0xffff, 0x15bd, + 0x15c1, 0x15c5, 0x15c9, 0x15cd, 0x15d1, 0x15d5, 0x15d9, 0x15dd, + 0x15e1, 0x15e5, 0x15e9, 0x000d, 0x0049, 0xffff, 0x15ed, 0x15f6, + 0x1604, 0x160f, 0x161b, 0x162e, 0x1641, 0x1651, 0x165b, 0x1669, + 0x1676, 0x1683, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + // Entry 32040 - 3207F + 0x2990, 0x2980, 0x2055, 0x298c, 0x297c, 0x24f9, 0x2994, 0x297a, + 0x214e, 0x382e, 0x2159, 0x23db, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0049, 0x168d, 0x1691, 0x1695, + 0x1699, 0x169d, 0x16a1, 0x16a5, 0x0007, 0x0049, 0x16a9, 0x16b5, + 0x16c0, 0x16cc, 0x16d5, 0x16e4, 0x16ee, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x23db, 0x2994, 0x22db, 0x2990, 0x2980, 0x2281, + 0x214e, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + 0x0033, 0xffff, 0x03f3, 0x03f6, 0x03f9, 0x03fc, 0x0005, 0x0049, + // Entry 32080 - 320BF + 0xffff, 0x16fa, 0x1717, 0x1738, 0x1759, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0049, + 0x177b, 0x0001, 0x0049, 0x1781, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0049, 0x177b, 0x0001, 0x0049, 0x1781, 0x0003, 0x00c1, 0x0000, + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0049, 0x1787, 0x1795, 0x0001, + 0x00c3, 0x0002, 0x0016, 0x01fb, 0x2c49, 0x0004, 0x00d5, 0x00cf, + 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, + // Entry 320C0 - 320FF + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 32100 - 3213F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, + 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, + 0x0001, 0x012c, 0x0001, 0x0049, 0x17a0, 0x0001, 0x0131, 0x0001, + 0x0049, 0x17ad, 0x0001, 0x0136, 0x0001, 0x0049, 0x17b2, 0x0001, + 0x013b, 0x0001, 0x0049, 0x17b7, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0049, 0x17bc, 0x0003, 0x0049, 0x17ce, 0x17d5, 0x17e1, 0x0001, + 0x014b, 0x0001, 0x0049, 0x17ec, 0x0001, 0x0150, 0x0001, 0x0049, + 0x17f9, 0x0001, 0x0155, 0x0001, 0x0049, 0x1803, 0x0001, 0x015a, + // Entry 32140 - 3217F + 0x0001, 0x0049, 0x1817, 0x0001, 0x015f, 0x0001, 0x0049, 0x1832, + 0x0003, 0x0004, 0x0250, 0x05dc, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, + 0x001e, 0x001b, 0x0021, 0x0001, 0x0049, 0x1841, 0x0001, 0x0049, + 0x1852, 0x0001, 0x0007, 0x001d, 0x0001, 0x0049, 0x185e, 0x0004, + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 32180 - 321BF + 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0203, 0x021d, 0x022e, + 0x023f, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, + 0x000d, 0x0049, 0xffff, 0x186d, 0x1877, 0x187e, 0x1888, 0x188c, + 0x1893, 0x18a0, 0x18a7, 0x18ab, 0x18b5, 0x18c5, 0x18cf, 0x000d, + 0x0049, 0xffff, 0x18d6, 0x18da, 0x18de, 0x1888, 0x18de, 0x18d6, + 0x18d6, 0x18a7, 0x18e2, 0x18e6, 0x18ea, 0x18ee, 0x000d, 0x0049, + 0xffff, 0x18f2, 0x190b, 0x187e, 0x192a, 0x188c, 0x1893, 0x1937, + 0x194d, 0x195d, 0x1976, 0x1995, 0x19ae, 0x0003, 0x0079, 0x0088, + // Entry 321C0 - 321FF + 0x0097, 0x000d, 0x0049, 0xffff, 0x186d, 0x1877, 0x187e, 0x1888, + 0x188c, 0x1893, 0x18a0, 0x18a7, 0x18ab, 0x18b5, 0x18c5, 0x18cf, + 0x000d, 0x0049, 0xffff, 0x18d6, 0x18da, 0x18de, 0x1888, 0x18de, + 0x18d6, 0x18d6, 0x18a7, 0x18e2, 0x18e6, 0x18ea, 0x18ee, 0x000d, + 0x0049, 0xffff, 0x18f2, 0x190b, 0x187e, 0x192a, 0x188c, 0x1893, + 0x1937, 0x194d, 0x195d, 0x1976, 0x1995, 0x19ae, 0x0002, 0x00a9, + 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, + 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, 0x1a22, 0x1a3b, 0x1a4e, + // Entry 32200 - 3223F + 0x0007, 0x0049, 0x1a58, 0x1a58, 0x18e6, 0x1a5c, 0x1a60, 0x1a64, + 0x18e2, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, 0x1a22, + 0x1a3b, 0x1a4e, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, + 0x1a22, 0x1a3b, 0x1a4e, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, + 0x00eb, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, 0x1a22, + 0x1a3b, 0x1a4e, 0x0007, 0x0049, 0x1a58, 0x1a58, 0x18e6, 0x1a5c, + 0x1a60, 0x1a64, 0x18e2, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, + 0x1a09, 0x1a22, 0x1a3b, 0x1a4e, 0x0007, 0x0049, 0x19c4, 0x19e0, + // Entry 32240 - 3227F + 0x19f6, 0x1a09, 0x1a22, 0x1a3b, 0x1a4e, 0x0002, 0x0100, 0x0119, + 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0049, 0xffff, 0x1a68, + 0x1a8b, 0x1ab4, 0x1ada, 0x0005, 0x0049, 0xffff, 0x1b06, 0x1b0a, + 0x1a58, 0x18e2, 0x0005, 0x0049, 0xffff, 0x1a68, 0x1a8b, 0x1ab4, + 0x1ada, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0049, 0xffff, + 0x1a68, 0x1a8b, 0x1ab4, 0x1ada, 0x0005, 0x0049, 0xffff, 0x1b06, + 0x1b0a, 0x1a58, 0x18e2, 0x0005, 0x0049, 0xffff, 0x1a68, 0x1a8b, + 0x1ab4, 0x1ada, 0x0002, 0x0135, 0x019c, 0x0003, 0x0139, 0x015a, + // Entry 32280 - 322BF + 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, 0x014e, 0x0151, 0x0154, + 0x0157, 0x0148, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, 0x1b33, + 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, + 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, 0x0001, + 0x0049, 0x1b7c, 0x0008, 0x0166, 0x016c, 0x0163, 0x016f, 0x0172, + 0x0175, 0x0178, 0x0169, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, + 0x1b33, 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, + 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, + // Entry 322C0 - 322FF + 0x0001, 0x0049, 0x1b7c, 0x0008, 0x0187, 0x018d, 0x0184, 0x0190, + 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, 0x0049, 0x1b11, 0x0001, + 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, + 0x0001, 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, + 0x1b5f, 0x0001, 0x0049, 0x1b7c, 0x0003, 0x01a0, 0x01c1, 0x01e2, + 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, 0x01b8, 0x01bb, 0x01be, + 0x01af, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, 0x1b33, 0x0001, + 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, 0x1b33, + // Entry 32300 - 3233F + 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, + 0x1b7c, 0x0008, 0x01cd, 0x01d3, 0x01ca, 0x01d6, 0x01d9, 0x01dc, + 0x01df, 0x01d0, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, 0x1b33, + 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, + 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, 0x0001, + 0x0049, 0x1b7c, 0x0008, 0x01ee, 0x01f4, 0x01eb, 0x01f7, 0x01fa, + 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, + 0x1b33, 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, + // Entry 32340 - 3237F + 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, + 0x0001, 0x0049, 0x1b7c, 0x0003, 0x0212, 0x0000, 0x0207, 0x0002, + 0x020a, 0x020e, 0x0002, 0x0049, 0x1b80, 0x1bfa, 0x0002, 0x0049, + 0x1bbb, 0x1c13, 0x0002, 0x0215, 0x0219, 0x0002, 0x0049, 0x1c2c, + 0x1c4f, 0x0002, 0x0049, 0x1c39, 0x1c5c, 0x0004, 0x022b, 0x0225, + 0x0222, 0x0228, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x001e, 0x0206, 0x0004, 0x023c, + 0x0236, 0x0233, 0x0239, 0x0001, 0x0049, 0x1c6c, 0x0001, 0x0049, + // Entry 32380 - 323BF + 0x1c7a, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x024d, 0x0247, 0x0244, 0x024a, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0040, 0x0291, 0x0000, 0x0000, 0x0296, 0x02ab, 0x02bb, 0x02cb, + 0x02e0, 0x02f5, 0x030a, 0x031f, 0x032f, 0x033f, 0x0358, 0x036c, + 0x0000, 0x0000, 0x0000, 0x0380, 0x0397, 0x03a7, 0x0000, 0x0000, + 0x0000, 0x03b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03bc, + 0x03ce, 0x03e0, 0x03f2, 0x0404, 0x0416, 0x0428, 0x043a, 0x044c, + // Entry 323C0 - 323FF + 0x045e, 0x0470, 0x0482, 0x0494, 0x04a6, 0x04b8, 0x04ca, 0x04dc, + 0x04ee, 0x0500, 0x0512, 0x0524, 0x0000, 0x0536, 0x0000, 0x053b, + 0x054f, 0x055f, 0x056f, 0x0583, 0x0593, 0x05a3, 0x05b7, 0x05c7, + 0x05d7, 0x0001, 0x0293, 0x0001, 0x0049, 0x1c85, 0x0003, 0x029a, + 0x029d, 0x02a2, 0x0001, 0x0049, 0x1c92, 0x0003, 0x0049, 0x1c9f, + 0x1cb8, 0x1cce, 0x0002, 0x02a5, 0x02a8, 0x0001, 0x0049, 0x1ced, + 0x0001, 0x0049, 0x1d10, 0x0003, 0x02af, 0x0000, 0x02b2, 0x0001, + 0x0049, 0x1c92, 0x0002, 0x02b5, 0x02b8, 0x0001, 0x0049, 0x1ced, + // Entry 32400 - 3243F + 0x0001, 0x0049, 0x1d10, 0x0003, 0x02bf, 0x0000, 0x02c2, 0x0001, + 0x0049, 0x1c92, 0x0002, 0x02c5, 0x02c8, 0x0001, 0x0049, 0x1ced, + 0x0001, 0x0049, 0x1d10, 0x0003, 0x02cf, 0x02d2, 0x02d7, 0x0001, + 0x0049, 0x1d43, 0x0003, 0x0049, 0x1d5c, 0x1d97, 0x1dba, 0x0002, + 0x02da, 0x02dd, 0x0001, 0x0049, 0x1de6, 0x0001, 0x0049, 0x1e1f, + 0x0003, 0x02e4, 0x02e7, 0x02ec, 0x0001, 0x0049, 0x1d43, 0x0003, + 0x0049, 0x1e80, 0x1eb7, 0x1ed9, 0x0002, 0x02ef, 0x02f2, 0x0001, + 0x0049, 0x1f13, 0x0001, 0x0049, 0x1e1f, 0x0003, 0x02f9, 0x02fc, + // Entry 32440 - 3247F + 0x0301, 0x0001, 0x0049, 0x1d43, 0x0003, 0x0049, 0x1e80, 0x1eb7, + 0x1ed9, 0x0002, 0x0304, 0x0307, 0x0001, 0x0049, 0x1f13, 0x0001, + 0x0049, 0x1e1f, 0x0003, 0x030e, 0x0311, 0x0316, 0x0001, 0x0049, + 0x1f52, 0x0003, 0x0049, 0x1f56, 0x1f7b, 0x1f88, 0x0002, 0x0319, + 0x031c, 0x0001, 0x0049, 0x1f9e, 0x0001, 0x0049, 0x1fb8, 0x0003, + 0x0323, 0x0000, 0x0326, 0x0001, 0x0049, 0x1f52, 0x0002, 0x0329, + 0x032c, 0x0001, 0x0049, 0x1f9e, 0x0001, 0x0049, 0x1fb8, 0x0003, + 0x0333, 0x0000, 0x0336, 0x0001, 0x0049, 0x1f52, 0x0002, 0x0339, + // Entry 32480 - 324BF + 0x033c, 0x0001, 0x0049, 0x1f9e, 0x0001, 0x0049, 0x1fb8, 0x0004, + 0x0344, 0x0347, 0x034c, 0x0355, 0x0001, 0x0049, 0x1fe2, 0x0003, + 0x004a, 0x0000, 0x003e, 0x0064, 0x0002, 0x034f, 0x0352, 0x0001, + 0x004a, 0x0093, 0x0001, 0x004a, 0x00b3, 0x0001, 0x004a, 0x00e3, + 0x0004, 0x035d, 0x0000, 0x0360, 0x0369, 0x0001, 0x0049, 0x1fe2, + 0x0002, 0x0363, 0x0366, 0x0001, 0x004a, 0x0093, 0x0001, 0x004a, + 0x00b3, 0x0001, 0x004a, 0x00e3, 0x0004, 0x0371, 0x0000, 0x0374, + 0x037d, 0x0001, 0x0049, 0x1fe2, 0x0002, 0x0377, 0x037a, 0x0001, + // Entry 324C0 - 324FF + 0x004a, 0x0093, 0x0001, 0x004a, 0x00b3, 0x0001, 0x004a, 0x00e3, + 0x0003, 0x0384, 0x0387, 0x038e, 0x0001, 0x004a, 0x011f, 0x0005, + 0x004a, 0x013f, 0x014f, 0x015c, 0x0129, 0x0175, 0x0002, 0x0391, + 0x0394, 0x0001, 0x004a, 0x018e, 0x0001, 0x004a, 0x01ae, 0x0003, + 0x039b, 0x0000, 0x039e, 0x0001, 0x004a, 0x011f, 0x0002, 0x03a1, + 0x03a4, 0x0001, 0x004a, 0x018e, 0x0001, 0x004a, 0x01ae, 0x0003, + 0x03ab, 0x0000, 0x03ae, 0x0001, 0x004a, 0x011f, 0x0002, 0x03b1, + 0x03b4, 0x0001, 0x004a, 0x018e, 0x0001, 0x004a, 0x01ae, 0x0001, + // Entry 32500 - 3253F + 0x03b9, 0x0001, 0x004a, 0x01de, 0x0003, 0x0000, 0x03c0, 0x03c5, + 0x0003, 0x004a, 0x01e8, 0x022f, 0x0257, 0x0002, 0x03c8, 0x03cb, + 0x0001, 0x004a, 0x028f, 0x0001, 0x004a, 0x02cb, 0x0003, 0x0000, + 0x03d2, 0x03d7, 0x0003, 0x004a, 0x01e8, 0x022f, 0x0257, 0x0002, + 0x03da, 0x03dd, 0x0001, 0x004a, 0x028f, 0x0001, 0x004a, 0x02cb, + 0x0003, 0x0000, 0x03e4, 0x03e9, 0x0003, 0x004a, 0x01e8, 0x022f, + 0x0257, 0x0002, 0x03ec, 0x03ef, 0x0001, 0x004a, 0x028f, 0x0001, + 0x004a, 0x02cb, 0x0003, 0x0000, 0x03f6, 0x03fb, 0x0003, 0x004a, + // Entry 32540 - 3257F + 0x0317, 0x0358, 0x037a, 0x0002, 0x03fe, 0x0401, 0x0001, 0x004a, + 0x03ac, 0x0001, 0x004a, 0x03e2, 0x0003, 0x0000, 0x0408, 0x040d, + 0x0003, 0x004a, 0x0317, 0x0358, 0x037a, 0x0002, 0x0410, 0x0413, + 0x0001, 0x004a, 0x03ac, 0x0001, 0x004a, 0x03e2, 0x0003, 0x0000, + 0x041a, 0x041f, 0x0003, 0x004a, 0x0317, 0x0358, 0x037a, 0x0002, + 0x0422, 0x0425, 0x0001, 0x004a, 0x03ac, 0x0001, 0x004a, 0x03e2, + 0x0003, 0x0000, 0x042c, 0x0431, 0x0003, 0x004a, 0x0428, 0x0466, + 0x0485, 0x0002, 0x0434, 0x0437, 0x0001, 0x004a, 0x04b4, 0x0001, + // Entry 32580 - 325BF + 0x004a, 0x04e7, 0x0003, 0x0000, 0x043e, 0x0443, 0x0003, 0x004a, + 0x0428, 0x0466, 0x0485, 0x0002, 0x0446, 0x0449, 0x0001, 0x004a, + 0x04b4, 0x0001, 0x004a, 0x04e7, 0x0003, 0x0000, 0x0450, 0x0455, + 0x0003, 0x004a, 0x0428, 0x0466, 0x0485, 0x0002, 0x0458, 0x045b, + 0x0001, 0x004a, 0x04b4, 0x0001, 0x004a, 0x04e7, 0x0003, 0x0000, + 0x0462, 0x0467, 0x0003, 0x004a, 0x052a, 0x056e, 0x0593, 0x0002, + 0x046a, 0x046d, 0x0001, 0x004a, 0x05c8, 0x0001, 0x004a, 0x0601, + 0x0003, 0x0000, 0x0474, 0x0479, 0x0003, 0x004a, 0x052a, 0x056e, + // Entry 325C0 - 325FF + 0x0593, 0x0002, 0x047c, 0x047f, 0x0001, 0x004a, 0x05c8, 0x0001, + 0x004a, 0x0601, 0x0003, 0x0000, 0x0486, 0x048b, 0x0003, 0x004a, + 0x052a, 0x056e, 0x0593, 0x0002, 0x048e, 0x0491, 0x0001, 0x004a, + 0x05c8, 0x0001, 0x004a, 0x0601, 0x0003, 0x0000, 0x0498, 0x049d, + 0x0003, 0x004a, 0x064a, 0x068e, 0x06b3, 0x0002, 0x04a0, 0x04a3, + 0x0001, 0x004a, 0x06e8, 0x0001, 0x004a, 0x0721, 0x0003, 0x0000, + 0x04aa, 0x04af, 0x0003, 0x004a, 0x064a, 0x068e, 0x06b3, 0x0002, + 0x04b2, 0x04b5, 0x0001, 0x004a, 0x06e8, 0x0001, 0x004a, 0x0721, + // Entry 32600 - 3263F + 0x0003, 0x0000, 0x04bc, 0x04c1, 0x0003, 0x004a, 0x064a, 0x068e, + 0x06b3, 0x0002, 0x04c4, 0x04c7, 0x0001, 0x004a, 0x06e8, 0x0001, + 0x004a, 0x0721, 0x0003, 0x0000, 0x04ce, 0x04d3, 0x0003, 0x004a, + 0x076a, 0x07a8, 0x07c7, 0x0002, 0x04d6, 0x04d9, 0x0001, 0x004a, + 0x07f6, 0x0001, 0x004a, 0x0829, 0x0003, 0x0000, 0x04e0, 0x04e5, + 0x0003, 0x004a, 0x076a, 0x07a8, 0x07c7, 0x0002, 0x04e8, 0x04eb, + 0x0001, 0x004a, 0x07f6, 0x0001, 0x004a, 0x0829, 0x0003, 0x0000, + 0x04f2, 0x04f7, 0x0003, 0x004a, 0x076a, 0x07a8, 0x07c7, 0x0002, + // Entry 32640 - 3267F + 0x04fa, 0x04fd, 0x0001, 0x004a, 0x07f6, 0x0001, 0x004a, 0x0829, + 0x0003, 0x0000, 0x0504, 0x0509, 0x0003, 0x004a, 0x087e, 0x08b3, + 0x08c9, 0x0002, 0x050c, 0x050f, 0x0001, 0x004a, 0x08ef, 0x0001, + 0x004a, 0x0919, 0x0003, 0x0000, 0x0516, 0x051b, 0x0003, 0x004a, + 0x087e, 0x08b3, 0x08c9, 0x0002, 0x051e, 0x0521, 0x0001, 0x004a, + 0x08ef, 0x0001, 0x004a, 0x0919, 0x0003, 0x0000, 0x0528, 0x052d, + 0x0003, 0x004a, 0x087e, 0x08b3, 0x08c9, 0x0002, 0x0530, 0x0533, + 0x0001, 0x004a, 0x08ef, 0x0001, 0x004a, 0x0919, 0x0001, 0x0538, + // Entry 32680 - 326BF + 0x0001, 0x004a, 0x0965, 0x0003, 0x053f, 0x0542, 0x0546, 0x0001, + 0x004a, 0x097f, 0x0002, 0x004a, 0xffff, 0x098c, 0x0002, 0x0549, + 0x054c, 0x0001, 0x004a, 0x09a2, 0x0001, 0x004a, 0x09c5, 0x0003, + 0x0553, 0x0000, 0x0556, 0x0001, 0x004a, 0x097f, 0x0002, 0x0559, + 0x055c, 0x0001, 0x004a, 0x09a2, 0x0001, 0x004a, 0x09c5, 0x0003, + 0x0563, 0x0000, 0x0566, 0x0001, 0x004a, 0x097f, 0x0002, 0x0569, + 0x056c, 0x0001, 0x004a, 0x09a2, 0x0001, 0x004a, 0x09c5, 0x0003, + 0x0573, 0x0576, 0x057a, 0x0001, 0x004a, 0x09f8, 0x0002, 0x004a, + // Entry 326C0 - 326FF + 0xffff, 0x0a08, 0x0002, 0x057d, 0x0580, 0x0001, 0x004a, 0x0a1b, + 0x0001, 0x004a, 0x0a41, 0x0003, 0x0587, 0x0000, 0x058a, 0x0001, + 0x004a, 0x09f8, 0x0002, 0x058d, 0x0590, 0x0001, 0x004a, 0x0a1b, + 0x0001, 0x004a, 0x0a41, 0x0003, 0x0597, 0x0000, 0x059a, 0x0001, + 0x004a, 0x09f8, 0x0002, 0x059d, 0x05a0, 0x0001, 0x004a, 0x0a1b, + 0x0001, 0x004a, 0x0a41, 0x0003, 0x05a7, 0x05aa, 0x05ae, 0x0001, + 0x004a, 0x0a77, 0x0002, 0x004a, 0xffff, 0x0a8d, 0x0002, 0x05b1, + 0x05b4, 0x0001, 0x004a, 0x0a97, 0x0001, 0x004a, 0x0ac3, 0x0003, + // Entry 32700 - 3273F + 0x05bb, 0x0000, 0x05be, 0x0001, 0x004a, 0x0a77, 0x0002, 0x05c1, + 0x05c4, 0x0001, 0x004a, 0x0a97, 0x0001, 0x004a, 0x0ac3, 0x0003, + 0x05cb, 0x0000, 0x05ce, 0x0001, 0x004a, 0x0a77, 0x0002, 0x05d1, + 0x05d4, 0x0001, 0x004a, 0x0a97, 0x0001, 0x004a, 0x0ac3, 0x0001, + 0x05d9, 0x0001, 0x004a, 0x0aff, 0x0004, 0x05e1, 0x05e6, 0x05eb, + 0x05fa, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3890, 0x0003, 0x004a, + 0x0b0c, 0x0b23, 0x0b5f, 0x0002, 0x0000, 0x05ee, 0x0003, 0x0000, + 0x05f5, 0x05f2, 0x0001, 0x004a, 0x0b85, 0x0003, 0x004a, 0xffff, + // Entry 32740 - 3277F + 0x0bd9, 0x0c16, 0x0002, 0x0000, 0x05fd, 0x0003, 0x06a0, 0x073f, + 0x0601, 0x009d, 0x004a, 0x0c5c, 0x0c97, 0x0cc9, 0x0cfe, 0x0d6b, + 0x0e2b, 0x0ede, 0x0faa, 0x10e3, 0x1225, 0x135e, 0xffff, 0x144e, + 0x14de, 0x1587, 0x1666, 0x1756, 0x1817, 0x1900, 0x1a2a, 0x1b56, + 0x1c41, 0x1d14, 0x1dde, 0x1eab, 0x1f4c, 0x1f6f, 0x1fcd, 0x203e, + 0x20af, 0x213a, 0x2190, 0x2226, 0x22b4, 0x2356, 0x23e8, 0x2425, + 0x248e, 0x254e, 0x2615, 0x269b, 0x26c0, 0x270a, 0x2770, 0x27fc, + 0x2868, 0x2943, 0x29cc, 0x2a59, 0x2b29, 0x2bf8, 0x2c60, 0x2ca2, + // Entry 32780 - 327BF + 0x2d16, 0x2d50, 0x2dab, 0x2e34, 0x2e74, 0x2eed, 0x2fdc, 0x3091, + 0x30c3, 0x3143, 0x324b, 0x32f9, 0x3367, 0x339f, 0x33e1, 0x3425, + 0x347f, 0x34dc, 0x355f, 0x35f5, 0x3698, 0x3732, 0xffff, 0x379d, + 0x37db, 0x384a, 0x38cd, 0x3938, 0x39d0, 0x3a34, 0x3aa5, 0x3bca, + 0x3c36, 0x3cb0, 0x3cdc, 0x3d0e, 0x3d3f, 0x3dab, 0x3e2e, 0x3eaa, + 0x3fc4, 0x40b0, 0x4149, 0x41c5, 0x41eb, 0x4210, 0x427f, 0x4364, + 0x441f, 0x44c3, 0x44e8, 0x457a, 0x4685, 0x475d, 0x480c, 0x488f, + 0x48b5, 0x491f, 0x49bf, 0x4a5c, 0x4ae5, 0x4b7a, 0x4c60, 0x4c92, + // Entry 327C0 - 327FF + 0x4cc0, 0x4cec, 0x4d12, 0x4d63, 0xffff, 0x4e04, 0x4e80, 0x4ea6, + 0x4ed2, 0x4f18, 0x4f59, 0x4f87, 0x4fac, 0x4ff7, 0x506e, 0x50a9, + 0x50fa, 0x5168, 0x51cb, 0x5272, 0x52c3, 0x5372, 0x542f, 0x54a3, + 0x551c, 0x5600, 0x5692, 0x56c3, 0x56fa, 0x5776, 0x5839, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a02, 0x3b59, + 0x009d, 0x004a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d33, 0x0e00, + 0x0eb5, 0x0f54, 0x108a, 0x11c9, 0x1311, 0xffff, 0x142c, 0x14b8, + 0x154f, 0x161b, 0x1721, 0x17e5, 0x18af, 0x19c7, 0x1b15, 0x1bfd, + // Entry 32800 - 3283F + 0x1cdc, 0x1da9, 0x1e6d, 0xffff, 0xffff, 0x1fa7, 0xffff, 0x207c, + 0xffff, 0x2168, 0x2203, 0x2291, 0x231f, 0xffff, 0xffff, 0x245f, + 0x2511, 0x25ec, 0xffff, 0xffff, 0xffff, 0x273c, 0xffff, 0x2828, + 0x2911, 0xffff, 0x2a24, 0x2ae8, 0x2bd6, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2d79, 0xffff, 0xffff, 0x2eaf, 0x2f9a, 0xffff, 0xffff, + 0x30f2, 0x3219, 0x32d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x353c, 0x35ca, 0x366f, 0x370f, 0xffff, 0xffff, 0xffff, + 0x381b, 0xffff, 0x38fe, 0xffff, 0xffff, 0x3a71, 0xffff, 0x3c0b, + // Entry 32840 - 3287F + 0xffff, 0xffff, 0xffff, 0xffff, 0x3d7c, 0xffff, 0x3e59, 0x3f80, + 0x4082, 0x4130, 0xffff, 0xffff, 0xffff, 0x4233, 0x4335, 0x43e7, + 0xffff, 0xffff, 0x4528, 0x4642, 0x472f, 0x47dd, 0xffff, 0xffff, + 0x48f3, 0x499c, 0x4a2a, 0xffff, 0x4b22, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4d3a, 0xffff, 0x4dd9, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4fce, 0xffff, 0xffff, 0x50d5, + 0xffff, 0x518a, 0xffff, 0x529a, 0x533a, 0x5407, 0xffff, 0x54d8, + 0x55c9, 0xffff, 0xffff, 0xffff, 0x5748, 0x57f6, 0xffff, 0xffff, + // Entry 32880 - 328BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3b33, 0x009d, + 0x004a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0db2, 0x0e65, 0x0f16, + 0x100f, 0x114b, 0x1290, 0x13ba, 0xffff, 0x147f, 0x1513, 0x15ce, + 0x16c0, 0x179a, 0x1858, 0x1960, 0x1a9c, 0x1ba6, 0x1c94, 0x1d5b, + 0x1e22, 0x1ef8, 0xffff, 0xffff, 0x2002, 0xffff, 0x20f1, 0xffff, + 0x21c7, 0x2258, 0x22e6, 0x239c, 0xffff, 0xffff, 0x24cc, 0x259a, + 0x264d, 0xffff, 0xffff, 0xffff, 0x27b3, 0xffff, 0x28b9, 0x2984, + 0xffff, 0x2a9d, 0x2b7c, 0x2c29, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 328C0 - 328FF + 0x2dec, 0xffff, 0xffff, 0x2f3a, 0x302d, 0xffff, 0xffff, 0x31a3, + 0x328c, 0x332d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3591, 0x362f, 0x36d0, 0x3764, 0xffff, 0xffff, 0xffff, 0x3888, + 0xffff, 0x3981, 0xffff, 0xffff, 0x3ae8, 0xffff, 0x3c70, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3de9, 0xffff, 0x3f0a, 0x4018, 0x40ed, + 0x4183, 0xffff, 0xffff, 0xffff, 0x42d7, 0x43a2, 0x4466, 0xffff, + 0xffff, 0x45db, 0x46d7, 0x479a, 0x484a, 0xffff, 0xffff, 0x495a, + 0x49f1, 0x4a9d, 0xffff, 0x4be1, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 32900 - 3293F + 0xffff, 0x4d9a, 0xffff, 0x4e3e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x502f, 0xffff, 0xffff, 0x512e, 0xffff, + 0x521b, 0xffff, 0x52fb, 0x53b9, 0x5466, 0xffff, 0x556f, 0x5646, + 0xffff, 0xffff, 0xffff, 0x57b3, 0x588b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3b8e, 0x0003, 0x0004, + 0x0074, 0x0305, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000d, 0x0005, 0x0013, 0x0000, 0x0000, 0x0000, + 0x005a, 0x0002, 0x0016, 0x0038, 0x0003, 0x001a, 0x0000, 0x0029, + // Entry 32940 - 3297F + 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, 0x0355, 0x03e8, + 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x000d, + 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, 0x0355, 0x03e8, 0x0367, + 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x0003, 0x003c, + 0x0000, 0x004b, 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, + 0x0355, 0x03e8, 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, + 0x03ab, 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, 0x0355, + 0x03e8, 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, + // Entry 32980 - 329BF + 0x0003, 0x0069, 0x0000, 0x005e, 0x0002, 0x0061, 0x0065, 0x0002, + 0x004b, 0x0000, 0x0031, 0x0002, 0x004b, 0x0012, 0x0043, 0x0002, + 0x006c, 0x0070, 0x0002, 0x004b, 0x0050, 0x005d, 0x0002, 0x004b, + 0x0056, 0x0061, 0x0040, 0x00b5, 0x0000, 0x0000, 0x00ba, 0x00cf, + 0x00df, 0x00ef, 0x00ff, 0x010f, 0x011f, 0x0134, 0x0144, 0x0154, + 0x0169, 0x0179, 0x0000, 0x0000, 0x0000, 0x0189, 0x019e, 0x01ae, + 0x0000, 0x0000, 0x0000, 0x01be, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x01c3, 0x01cb, 0x01d3, 0x01db, 0x01e3, 0x01eb, 0x01f3, + // Entry 329C0 - 329FF + 0x01fb, 0x0203, 0x020b, 0x0213, 0x021b, 0x0223, 0x022b, 0x0233, + 0x023b, 0x0243, 0x024b, 0x0253, 0x025b, 0x0263, 0x0000, 0x026b, + 0x0000, 0x0270, 0x0280, 0x0290, 0x02a0, 0x02b0, 0x02c0, 0x02d0, + 0x02e0, 0x02f0, 0x0300, 0x0001, 0x00b7, 0x0001, 0x004b, 0x0064, + 0x0003, 0x00be, 0x00c1, 0x00c6, 0x0001, 0x0021, 0x0765, 0x0003, + 0x004b, 0x006f, 0x007c, 0x0087, 0x0002, 0x00c9, 0x00cc, 0x0001, + 0x004b, 0x0097, 0x0001, 0x0021, 0x07ad, 0x0003, 0x00d3, 0x0000, + 0x00d6, 0x0001, 0x0021, 0x0765, 0x0002, 0x00d9, 0x00dc, 0x0001, + // Entry 32A00 - 32A3F + 0x004b, 0x0097, 0x0001, 0x0021, 0x07ad, 0x0003, 0x00e3, 0x0000, + 0x00e6, 0x0001, 0x0021, 0x0765, 0x0002, 0x00e9, 0x00ec, 0x0001, + 0x004b, 0x0097, 0x0001, 0x0021, 0x07ad, 0x0003, 0x00f3, 0x0000, + 0x00f6, 0x0001, 0x004b, 0x00a9, 0x0002, 0x00f9, 0x00fc, 0x0001, + 0x004b, 0x00b0, 0x0001, 0x004b, 0x00c2, 0x0003, 0x0103, 0x0000, + 0x0106, 0x0001, 0x004b, 0x00a9, 0x0002, 0x0109, 0x010c, 0x0001, + 0x004b, 0x00b0, 0x0001, 0x004b, 0x00c2, 0x0003, 0x0113, 0x0000, + 0x0116, 0x0001, 0x004b, 0x00a9, 0x0002, 0x0119, 0x011c, 0x0001, + // Entry 32A40 - 32A7F + 0x004b, 0x00b0, 0x0001, 0x004b, 0x00c2, 0x0003, 0x0123, 0x0126, + 0x012b, 0x0001, 0x0021, 0x0860, 0x0003, 0x004b, 0x00d4, 0x00e2, + 0x00f0, 0x0002, 0x012e, 0x0131, 0x0001, 0x004b, 0x0100, 0x0001, + 0x0021, 0x08ab, 0x0003, 0x0138, 0x0000, 0x013b, 0x0001, 0x0021, + 0x0860, 0x0002, 0x013e, 0x0141, 0x0001, 0x004b, 0x0100, 0x0001, + 0x0021, 0x08ab, 0x0003, 0x0148, 0x0000, 0x014b, 0x0001, 0x0021, + 0x0860, 0x0002, 0x014e, 0x0151, 0x0001, 0x004b, 0x0100, 0x0001, + 0x0021, 0x08ab, 0x0003, 0x0158, 0x015b, 0x0160, 0x0001, 0x0021, + // Entry 32A80 - 32ABF + 0x08cb, 0x0003, 0x004b, 0x0112, 0x0124, 0x0134, 0x0002, 0x0163, + 0x0166, 0x0001, 0x004b, 0x0146, 0x0001, 0x0021, 0x0924, 0x0003, + 0x016d, 0x0000, 0x0170, 0x0001, 0x0021, 0x08cb, 0x0002, 0x0173, + 0x0176, 0x0001, 0x004b, 0x0146, 0x0001, 0x0021, 0x0924, 0x0003, + 0x017d, 0x0000, 0x0180, 0x0001, 0x0021, 0x08cb, 0x0002, 0x0183, + 0x0186, 0x0001, 0x004b, 0x0146, 0x0001, 0x0021, 0x0924, 0x0003, + 0x018d, 0x0190, 0x0195, 0x0001, 0x0021, 0x0947, 0x0003, 0x0021, + 0x095b, 0x36d7, 0x36e4, 0x0002, 0x0198, 0x019b, 0x0001, 0x004b, + // Entry 32AC0 - 32AFF + 0x015a, 0x0001, 0x0021, 0x099c, 0x0003, 0x01a2, 0x0000, 0x01a5, + 0x0001, 0x0021, 0x0947, 0x0002, 0x01a8, 0x01ab, 0x0001, 0x004b, + 0x015a, 0x0001, 0x0021, 0x099c, 0x0003, 0x01b2, 0x0000, 0x01b5, + 0x0001, 0x0021, 0x0947, 0x0002, 0x01b8, 0x01bb, 0x0001, 0x004b, + 0x015a, 0x0001, 0x0021, 0x099c, 0x0001, 0x01c0, 0x0001, 0x004b, + 0x016c, 0x0002, 0x0000, 0x01c6, 0x0003, 0x004b, 0x0183, 0x0199, + 0x01ad, 0x0002, 0x0000, 0x01ce, 0x0003, 0x004b, 0x01c3, 0x0199, + 0x01d7, 0x0002, 0x0000, 0x01d6, 0x0003, 0x004b, 0x0183, 0x0199, + // Entry 32B00 - 32B3F + 0x01ad, 0x0002, 0x0000, 0x01de, 0x0003, 0x004b, 0x01eb, 0x0201, + 0x0215, 0x0002, 0x0000, 0x01e6, 0x0003, 0x004b, 0x01eb, 0x0201, + 0x0215, 0x0002, 0x0000, 0x01ee, 0x0003, 0x004b, 0x01eb, 0x0201, + 0x0215, 0x0002, 0x0000, 0x01f6, 0x0003, 0x004b, 0x022b, 0x0244, + 0x025b, 0x0002, 0x0000, 0x01fe, 0x0003, 0x004b, 0x022b, 0x0244, + 0x025b, 0x0002, 0x0000, 0x0206, 0x0003, 0x004b, 0x022b, 0x0244, + 0x025b, 0x0002, 0x0000, 0x020e, 0x0003, 0x004b, 0x0274, 0x028c, + 0x02a2, 0x0002, 0x0000, 0x0216, 0x0003, 0x004b, 0x0274, 0x028c, + // Entry 32B40 - 32B7F + 0x02a2, 0x0002, 0x0000, 0x021e, 0x0003, 0x004b, 0x0274, 0x028c, + 0x02a2, 0x0002, 0x0000, 0x0226, 0x0003, 0x004b, 0x02ba, 0x02d2, + 0x02e8, 0x0002, 0x0000, 0x022e, 0x0003, 0x004b, 0x02ba, 0x02d2, + 0x02e8, 0x0002, 0x0000, 0x0236, 0x0003, 0x004b, 0x02ba, 0x02d2, + 0x02e8, 0x0002, 0x0000, 0x023e, 0x0003, 0x004b, 0x0300, 0x0312, + 0x0322, 0x0002, 0x0000, 0x0246, 0x0003, 0x004b, 0x0300, 0x0312, + 0x0322, 0x0002, 0x0000, 0x024e, 0x0003, 0x004b, 0x0300, 0x0312, + 0x0322, 0x0002, 0x0000, 0x0256, 0x0003, 0x004b, 0x0334, 0x0346, + // Entry 32B80 - 32BBF + 0x0356, 0x0002, 0x0000, 0x025e, 0x0003, 0x004b, 0x0334, 0x0346, + 0x0356, 0x0002, 0x0000, 0x0266, 0x0003, 0x004b, 0x0334, 0x0346, + 0x0356, 0x0001, 0x026d, 0x0001, 0x004b, 0x0368, 0x0003, 0x0274, + 0x0000, 0x0277, 0x0001, 0x004b, 0x037a, 0x0002, 0x027a, 0x027d, + 0x0001, 0x004b, 0x0385, 0x0001, 0x004b, 0x039b, 0x0003, 0x0284, + 0x0000, 0x0287, 0x0001, 0x0021, 0x0d3f, 0x0002, 0x028a, 0x028d, + 0x0001, 0x004b, 0x03b1, 0x0001, 0x0021, 0x0d6e, 0x0003, 0x0294, + 0x0000, 0x0297, 0x0001, 0x0021, 0x0d3f, 0x0002, 0x029a, 0x029d, + // Entry 32BC0 - 32BFF + 0x0001, 0x004b, 0x03b1, 0x0001, 0x0021, 0x0d6e, 0x0003, 0x02a4, + 0x0000, 0x02a7, 0x0001, 0x0021, 0x0d82, 0x0002, 0x02aa, 0x02ad, + 0x0001, 0x004b, 0x03c5, 0x0001, 0x004b, 0x03db, 0x0003, 0x02b4, + 0x0000, 0x02b7, 0x0001, 0x004b, 0x03ef, 0x0002, 0x02ba, 0x02bd, + 0x0001, 0x004b, 0x03f8, 0x0001, 0x004b, 0x03db, 0x0003, 0x02c4, + 0x0000, 0x02c7, 0x0001, 0x004b, 0x03ef, 0x0002, 0x02ca, 0x02cd, + 0x0001, 0x004b, 0x03f8, 0x0001, 0x004b, 0x03db, 0x0003, 0x02d4, + 0x0000, 0x02d7, 0x0001, 0x0021, 0x0dcd, 0x0002, 0x02da, 0x02dd, + // Entry 32C00 - 32C3F + 0x0001, 0x004b, 0x040c, 0x0001, 0x0021, 0x0df9, 0x0003, 0x02e4, + 0x0000, 0x02e7, 0x0001, 0x0021, 0x0dcd, 0x0002, 0x02ea, 0x02ed, + 0x0001, 0x004b, 0x040c, 0x0001, 0x0021, 0x0df9, 0x0003, 0x02f4, + 0x0000, 0x02f7, 0x0001, 0x0021, 0x0dcd, 0x0002, 0x02fa, 0x02fd, + 0x0001, 0x004b, 0x040c, 0x0001, 0x0021, 0x0df9, 0x0001, 0x0302, + 0x0001, 0x004b, 0x0422, 0x0004, 0x030a, 0x030f, 0x0000, 0x0000, + 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3890, 0x0003, 0x0000, 0x1de0, + 0x3894, 0x389d, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, + // Entry 32C40 - 32C7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, + 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, + 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, 0x2246, 0x2429, + 0x224e, 0x22d4, 0x2112, 0x22dc, 0x211a, 0x22e0, 0x0662, 0x000d, + // Entry 32C80 - 32CBF + 0x004b, 0xffff, 0x0438, 0x0441, 0x044f, 0x045d, 0x046b, 0x0477, + 0x0481, 0x048c, 0x049f, 0x04b4, 0x04c3, 0x04cf, 0x0002, 0x0000, + 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, + 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, + 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, + 0x0040, 0x02d8, 0x25d6, 0x25d9, 0x25dc, 0x25df, 0x25e2, 0x25e5, + 0x0007, 0x004b, 0x04df, 0x04eb, 0x04f7, 0x0504, 0x0511, 0x0520, + 0x052d, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x298e, 0x297a, + // Entry 32CC0 - 32CFF + 0x214e, 0x2159, 0x297c, 0x298c, 0x2980, 0x0001, 0x008d, 0x0003, + 0x0091, 0x0000, 0x0098, 0x0005, 0x004b, 0xffff, 0x053b, 0x053f, + 0x0543, 0x0547, 0x0005, 0x004b, 0xffff, 0x054b, 0x0558, 0x0567, + 0x0576, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, + 0x00a8, 0x00ab, 0x0001, 0x004b, 0x0585, 0x0001, 0x004b, 0x058e, + 0x0002, 0x00b1, 0x00b4, 0x0001, 0x004b, 0x0585, 0x0001, 0x004b, + 0x058e, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, + 0x004b, 0x0595, 0x05a4, 0x0001, 0x00c3, 0x0002, 0x0009, 0x0078, + // Entry 32D00 - 32D3F + 0x5463, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, + 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, + 0x0001, 0x0002, 0x0478, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, + 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, + // Entry 32D40 - 32D7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, + 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x004b, + 0x05b6, 0x0001, 0x0131, 0x0001, 0x004b, 0x05c1, 0x0001, 0x0136, + 0x0001, 0x004b, 0x05c7, 0x0001, 0x013b, 0x0001, 0x004b, 0x05cf, + 0x0002, 0x0141, 0x0144, 0x0001, 0x004b, 0x05d6, 0x0003, 0x0000, + // Entry 32D80 - 32DBF + 0x1b2f, 0x38a6, 0x1b3f, 0x0001, 0x014b, 0x0001, 0x004b, 0x05dc, + 0x0001, 0x0150, 0x0001, 0x004b, 0x05e9, 0x0001, 0x0155, 0x0001, + 0x004b, 0x05f6, 0x0001, 0x015a, 0x0001, 0x004b, 0x05fb, 0x0001, + 0x015f, 0x0001, 0x004b, 0x0600, 0x0001, 0x0164, 0x0001, 0x004b, + 0x0608, 0x0003, 0x0004, 0x0890, 0x0c91, 0x0012, 0x0017, 0x0027, + 0x010b, 0x0000, 0x0195, 0x021f, 0x0238, 0x0263, 0x0490, 0x050b, + 0x058c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0601, 0x07fe, 0x087f, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, + // Entry 32DC0 - 32DFF + 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, + 0x000a, 0x0032, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e9, 0x0000, + 0x00fa, 0x005a, 0x006e, 0x0002, 0x0035, 0x0048, 0x0003, 0x0000, + 0x0000, 0x0039, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, 0x000b, + 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, + 0x002f, 0x0002, 0x0000, 0x004b, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x0003, 0x005e, 0x0069, 0x0063, 0x0003, + // Entry 32E00 - 32E3F + 0x0000, 0x004e, 0x0055, 0x004e, 0x0004, 0x0000, 0xffff, 0xffff, + 0xffff, 0x004e, 0x0003, 0x0000, 0x004e, 0x0055, 0x004e, 0x0005, + 0x0074, 0x0000, 0x0000, 0x0087, 0x00a6, 0x0001, 0x0076, 0x0001, + 0x0078, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, + 0x006a, 0x2a54, 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, + 0x0001, 0x0089, 0x0001, 0x008b, 0x0019, 0x004b, 0xffff, 0x0616, + 0x0620, 0x0629, 0x063a, 0x0648, 0x0656, 0x065f, 0x066b, 0x0676, + 0x0681, 0x068f, 0x069b, 0x06a6, 0x06b1, 0x06bc, 0x06c6, 0x06d5, + // Entry 32E40 - 32E7F + 0x06de, 0x06ec, 0x06f8, 0x0702, 0x070b, 0x0719, 0x0725, 0x0001, + 0x00a8, 0x0001, 0x00aa, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, + 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, + 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, + 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, + 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, + 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, + 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, + // Entry 32E80 - 32EBF + 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, + 0x0389, 0x0390, 0x0004, 0x00f7, 0x00f1, 0x00ee, 0x00f4, 0x0001, + 0x004b, 0x0730, 0x0001, 0x004b, 0x0742, 0x0001, 0x004b, 0x074f, + 0x0001, 0x004b, 0x0758, 0x0004, 0x0108, 0x0102, 0x00ff, 0x0105, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0114, 0x0000, 0x0000, + 0x0000, 0x017f, 0x0000, 0x0000, 0x9006, 0x0002, 0x0117, 0x014b, + 0x0003, 0x011b, 0x012b, 0x013b, 0x000e, 0x0025, 0xffff, 0x00e8, + // Entry 32EC0 - 32EFF + 0x3839, 0x383e, 0x3844, 0x384a, 0x384f, 0x3856, 0x385f, 0x016f, + 0x3869, 0x386f, 0x3874, 0x387a, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0025, 0xffff, 0x00e8, + 0x3839, 0x383e, 0x3844, 0x384a, 0x384f, 0x3856, 0x385f, 0x016f, + 0x3869, 0x386f, 0x3874, 0x387a, 0x0003, 0x014f, 0x015f, 0x016f, + 0x000e, 0x0025, 0xffff, 0x00e8, 0x3839, 0x383e, 0x3844, 0x384a, + 0x384f, 0x3856, 0x385f, 0x016f, 0x3869, 0x386f, 0x3874, 0x387a, + // Entry 32F00 - 32F3F + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, + 0x000e, 0x0025, 0xffff, 0x00e8, 0x3839, 0x383e, 0x3844, 0x384a, + 0x384f, 0x3856, 0x385f, 0x016f, 0x3869, 0x386f, 0x3874, 0x387a, + 0x0003, 0x0189, 0x018f, 0x0183, 0x0001, 0x0185, 0x0002, 0x004b, + 0x075e, 0x076b, 0x0001, 0x018b, 0x0002, 0x004b, 0x0778, 0x0780, + 0x0001, 0x0191, 0x0002, 0x004b, 0x0788, 0x078c, 0x0008, 0x019e, + 0x0000, 0x0000, 0x0000, 0x0209, 0x0000, 0x0000, 0x9006, 0x0002, + // Entry 32F40 - 32F7F + 0x01a1, 0x01d5, 0x0003, 0x01a5, 0x01b5, 0x01c5, 0x000e, 0x004b, + 0xffff, 0x0790, 0x0799, 0x07a0, 0x07a6, 0x07ad, 0x07b1, 0x07b9, + 0x07c1, 0x07c8, 0x07cf, 0x07d4, 0x07da, 0x07e2, 0x000e, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x004b, + 0xffff, 0x0790, 0x0799, 0x07a0, 0x07a6, 0x07ad, 0x07b1, 0x07b9, + 0x07c1, 0x07c8, 0x07cf, 0x07d4, 0x07da, 0x07e2, 0x0003, 0x01d9, + 0x01e9, 0x01f9, 0x000e, 0x004b, 0xffff, 0x0790, 0x0799, 0x07a0, + // Entry 32F80 - 32FBF + 0x07a6, 0x07ad, 0x07b1, 0x07b9, 0x07c1, 0x07c8, 0x07cf, 0x07d4, + 0x07da, 0x07e2, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x0422, 0x000e, 0x004b, 0xffff, 0x0790, 0x0799, 0x07a0, + 0x07a6, 0x07ad, 0x07b1, 0x07b9, 0x07c1, 0x07c8, 0x07cf, 0x07d4, + 0x07da, 0x07e2, 0x0003, 0x0213, 0x0219, 0x020d, 0x0001, 0x020f, + 0x0002, 0x004b, 0x075e, 0x076b, 0x0001, 0x0215, 0x0002, 0x004b, + 0x0778, 0x0780, 0x0001, 0x021b, 0x0002, 0x004b, 0x0788, 0x078c, + // Entry 32FC0 - 32FFF + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0225, 0x0003, 0x022e, + 0x0233, 0x0229, 0x0001, 0x022b, 0x0001, 0x004b, 0x075e, 0x0001, + 0x0230, 0x0001, 0x004b, 0x0778, 0x0001, 0x0235, 0x0001, 0x004b, + 0x0788, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0241, + 0x0000, 0x0252, 0x0004, 0x024f, 0x0249, 0x0246, 0x024c, 0x0001, + 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, + 0x0001, 0x0008, 0x0627, 0x0004, 0x0260, 0x025a, 0x0257, 0x025d, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 33000 - 3303F + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x026c, 0x02d1, 0x0328, + 0x035d, 0x0434, 0x0459, 0x046a, 0x047f, 0x0002, 0x026f, 0x02a0, + 0x0003, 0x0273, 0x0282, 0x0291, 0x000d, 0x0015, 0xffff, 0x000b, + 0x23dd, 0x241d, 0x2439, 0x243e, 0x2383, 0x2388, 0x2442, 0x238d, + 0x2447, 0x244c, 0x2397, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, + 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, + 0x297e, 0x297c, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, 0x32c8, + 0x009d, 0x32cd, 0x32d1, 0x32d6, 0x3201, 0x32db, 0x315b, 0x32e5, + // Entry 33040 - 3307F + 0x32ee, 0x0003, 0x02a4, 0x02b3, 0x02c2, 0x000d, 0x000d, 0xffff, + 0x0059, 0x32b8, 0x32f7, 0x32c0, 0x32cd, 0x3230, 0x3234, 0x3238, + 0x32fb, 0x32ff, 0x3303, 0x3307, 0x000d, 0x0000, 0xffff, 0x2483, + 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, + 0x2990, 0x297e, 0x297c, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, + 0x32c8, 0x009d, 0x32cd, 0x32d1, 0x32d6, 0x3201, 0x32db, 0x315b, + 0x32e5, 0x32ee, 0x0002, 0x02d4, 0x02fe, 0x0005, 0x02da, 0x02e3, + 0x02f5, 0x0000, 0x02ec, 0x0007, 0x0015, 0x004a, 0x0050, 0x0055, + // Entry 33080 - 330BF + 0x005a, 0x005f, 0x0064, 0x0069, 0x0007, 0x0000, 0x298e, 0x297a, + 0x38ae, 0x2990, 0x38ae, 0x298c, 0x2994, 0x0007, 0x004b, 0x07ea, + 0x07ef, 0x07f3, 0x07f7, 0x07fb, 0x07ff, 0x0803, 0x0007, 0x0015, + 0x0086, 0x008e, 0x0095, 0x009d, 0x00a4, 0x00ac, 0x00b3, 0x0005, + 0x0304, 0x030d, 0x031f, 0x0000, 0x0316, 0x0007, 0x0015, 0x004a, + 0x0050, 0x0055, 0x005a, 0x005f, 0x0064, 0x0069, 0x0007, 0x0000, + 0x298e, 0x297a, 0x38ae, 0x2990, 0x38ae, 0x298c, 0x2994, 0x0007, + 0x004b, 0x07ea, 0x07ef, 0x07f3, 0x07f7, 0x07fb, 0x07ff, 0x0803, + // Entry 330C0 - 330FF + 0x0007, 0x0015, 0x0086, 0x008e, 0x0095, 0x009d, 0x00a4, 0x00ac, + 0x00b3, 0x0002, 0x032b, 0x0344, 0x0003, 0x032f, 0x0336, 0x033d, + 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, + 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0015, + 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0003, 0x0348, 0x034f, + 0x0356, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, + 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, + 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0002, 0x0360, + // Entry 33100 - 3313F + 0x03ca, 0x0003, 0x0364, 0x0386, 0x03a8, 0x0009, 0x0371, 0x0374, + 0x036e, 0x0377, 0x037d, 0x0380, 0x0383, 0x0000, 0x037a, 0x0001, + 0x004b, 0x0808, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, + 0x0001, 0x0033, 0x04b6, 0x0001, 0x004b, 0x080e, 0x0001, 0x004b, + 0x0814, 0x0001, 0x004b, 0x081c, 0x0001, 0x004b, 0x0822, 0x0009, + 0x0393, 0x0396, 0x0390, 0x0399, 0x039f, 0x03a2, 0x03a5, 0x0000, + 0x039c, 0x0001, 0x0033, 0x047c, 0x0001, 0x0000, 0x1f9c, 0x0001, + 0x0000, 0x21ec, 0x0001, 0x004b, 0x0827, 0x0001, 0x004b, 0x082b, + // Entry 33140 - 3317F + 0x0001, 0x004b, 0x082f, 0x0001, 0x000d, 0x043e, 0x0001, 0x004b, + 0x0833, 0x0009, 0x03b5, 0x03b8, 0x03b2, 0x03bb, 0x03c1, 0x03c4, + 0x03c7, 0x0000, 0x03be, 0x0001, 0x004b, 0x0837, 0x0001, 0x001c, + 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004b, 0x083f, 0x0001, + 0x004b, 0x0848, 0x0001, 0x004b, 0x0854, 0x0001, 0x004b, 0x0862, + 0x0001, 0x004b, 0x086a, 0x0003, 0x03ce, 0x03f0, 0x0412, 0x0009, + 0x03db, 0x03de, 0x03d8, 0x03e1, 0x03e7, 0x03ea, 0x03ed, 0x0000, + 0x03e4, 0x0001, 0x004b, 0x0808, 0x0001, 0x001c, 0x0494, 0x0001, + // Entry 33180 - 331BF + 0x001c, 0x0499, 0x0001, 0x0033, 0x04b6, 0x0001, 0x004b, 0x080e, + 0x0001, 0x004b, 0x0814, 0x0001, 0x004b, 0x081c, 0x0001, 0x004b, + 0x0822, 0x0009, 0x03fd, 0x0400, 0x03fa, 0x0403, 0x0409, 0x040c, + 0x040f, 0x0000, 0x0406, 0x0001, 0x0033, 0x047c, 0x0001, 0x001c, + 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004b, 0x0827, 0x0001, + 0x004b, 0x082b, 0x0001, 0x004b, 0x082f, 0x0001, 0x000d, 0x043e, + 0x0001, 0x004b, 0x0833, 0x0009, 0x041f, 0x0422, 0x041c, 0x0425, + 0x042b, 0x042e, 0x0431, 0x0000, 0x0428, 0x0001, 0x004b, 0x0837, + // Entry 331C0 - 331FF + 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0026, + 0x17df, 0x0001, 0x0015, 0x0174, 0x0001, 0x004b, 0x0871, 0x0001, + 0x004b, 0x081c, 0x0001, 0x004b, 0x0822, 0x0003, 0x0443, 0x044e, + 0x0438, 0x0002, 0x043b, 0x043f, 0x0002, 0x004b, 0x087d, 0x08a0, + 0x0002, 0x004b, 0x088a, 0x08ae, 0x0002, 0x0446, 0x044a, 0x0002, + 0x0015, 0x0194, 0x01b8, 0x0002, 0x004b, 0x08c5, 0x08ca, 0x0002, + 0x0451, 0x0455, 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x004b, + 0x08c5, 0x08cf, 0x0004, 0x0467, 0x0461, 0x045e, 0x0464, 0x0001, + // Entry 33200 - 3323F + 0x0013, 0x06a2, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, + 0x0001, 0x0016, 0x0470, 0x0004, 0x047b, 0x0473, 0x046f, 0x0477, + 0x0002, 0x0000, 0x0524, 0x38b0, 0x0002, 0x0000, 0x0532, 0x38be, + 0x0002, 0x0000, 0x053d, 0x38c9, 0x0002, 0x0000, 0x0546, 0x38d2, + 0x0004, 0x048d, 0x0487, 0x0484, 0x048a, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0008, 0x0499, 0x0000, 0x0000, 0x0000, 0x0504, 0x0000, + 0x0000, 0x9006, 0x0002, 0x049c, 0x04d0, 0x0003, 0x04a0, 0x04b0, + // Entry 33240 - 3327F + 0x04c0, 0x000e, 0x004b, 0x0902, 0x08d3, 0x08da, 0x08e2, 0x08e9, + 0x08ef, 0x08f6, 0x08fd, 0x090a, 0x0910, 0x0915, 0x091b, 0x0921, + 0x0924, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x0422, 0x000e, 0x004b, 0x0902, 0x08d3, 0x08da, 0x08e2, 0x08e9, + 0x08ef, 0x08f6, 0x08fd, 0x090a, 0x0910, 0x0915, 0x091b, 0x0921, + 0x0924, 0x0003, 0x04d4, 0x04e4, 0x04f4, 0x000e, 0x004b, 0x0902, + 0x08d3, 0x08da, 0x08e2, 0x08e9, 0x08ef, 0x08f6, 0x08fd, 0x090a, + // Entry 33280 - 332BF + 0x0910, 0x0915, 0x091b, 0x0921, 0x0924, 0x000e, 0x0000, 0x003f, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x004b, 0x0902, + 0x08d3, 0x08da, 0x08e2, 0x08e9, 0x08ef, 0x08f6, 0x08fd, 0x090a, + 0x0910, 0x0915, 0x091b, 0x0921, 0x0924, 0x0001, 0x0506, 0x0001, + 0x0508, 0x0001, 0x0000, 0x04ef, 0x0008, 0x0514, 0x0000, 0x0000, + 0x0000, 0x0579, 0x0000, 0x0000, 0x9006, 0x0002, 0x0517, 0x0548, + 0x0003, 0x051b, 0x052a, 0x0539, 0x000d, 0x0025, 0xffff, 0x0557, + // Entry 332C0 - 332FF + 0x3880, 0x3889, 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, 0x38b7, + 0x38c2, 0x38c8, 0x38ce, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, + 0x3871, 0x3874, 0x000d, 0x0025, 0xffff, 0x0557, 0x3880, 0x3889, + 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, 0x38b7, 0x38c2, 0x38c8, + 0x38ce, 0x0003, 0x054c, 0x055b, 0x056a, 0x000d, 0x0025, 0xffff, + 0x0557, 0x3880, 0x3889, 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, + 0x38b7, 0x38c2, 0x38c8, 0x38ce, 0x000d, 0x0000, 0xffff, 0x0033, + // Entry 33300 - 3333F + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0025, 0xffff, 0x0557, 0x3880, + 0x3889, 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, 0x38b7, 0x38c2, + 0x38c8, 0x38ce, 0x0003, 0x0582, 0x0587, 0x057d, 0x0001, 0x057f, + 0x0001, 0x004b, 0x0929, 0x0001, 0x0584, 0x0001, 0x004b, 0x0929, + 0x0001, 0x0589, 0x0001, 0x004b, 0x0929, 0x0008, 0x0595, 0x0000, + 0x0000, 0x0000, 0x05fa, 0x0000, 0x0000, 0x9006, 0x0002, 0x0598, + 0x05c9, 0x0003, 0x059c, 0x05ab, 0x05ba, 0x000d, 0x000d, 0xffff, + // Entry 33340 - 3337F + 0x021e, 0x330b, 0x3310, 0x3317, 0x331f, 0x3326, 0x332e, 0x3333, + 0x3338, 0x333d, 0x3343, 0x334d, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0022, 0xffff, 0x089e, 0x2ff5, + 0x2ffb, 0x3004, 0x300e, 0x3017, 0x3021, 0x3027, 0x3030, 0x3038, + 0x3040, 0x304f, 0x0003, 0x05cd, 0x05dc, 0x05eb, 0x000d, 0x000d, + 0xffff, 0x021e, 0x330b, 0x3310, 0x3317, 0x331f, 0x3326, 0x332e, + 0x3333, 0x3338, 0x333d, 0x3343, 0x3357, 0x000d, 0x0000, 0xffff, + // Entry 33380 - 333BF + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0022, 0xffff, 0x089e, + 0x2ff5, 0x2ffb, 0x3004, 0x300e, 0x3017, 0x3021, 0x3027, 0x3030, + 0x3038, 0x3040, 0x304f, 0x0001, 0x05fc, 0x0001, 0x05fe, 0x0001, + 0x0000, 0x06c8, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x060a, + 0x07ed, 0x0000, 0x9006, 0x0002, 0x060d, 0x06fd, 0x0001, 0x060f, + 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, + 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, + // Entry 333C0 - 333FF + 0x20bf, 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, + 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, + 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, + 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, + 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, + 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, + 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, + 0x0c4c, 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, + // Entry 33400 - 3343F + 0x210f, 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, + 0x0d9c, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, + 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, + 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, + 0x0f8f, 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, + 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, + 0x10e3, 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, + 0x118d, 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, + // Entry 33440 - 3347F + 0x1238, 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, + 0x12df, 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, + 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, + 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, + 0x14de, 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, + 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, + 0x1638, 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, + 0x16e0, 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, + // Entry 33480 - 334BF + 0x1787, 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, + 0x1832, 0x1847, 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, + 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, + 0x1983, 0x1997, 0x2915, 0x291b, 0x2923, 0x292a, 0x0001, 0x06ff, + 0x00ec, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 334C0 - 334FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 33500 - 3353F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 33540 - 3357F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 33580 - 335BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x297a, 0x38ae, 0x298e, 0x38d8, 0x0004, 0x07fb, + 0x07f5, 0x07f2, 0x07f8, 0x0001, 0x0013, 0x0466, 0x0001, 0x0013, + 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, 0x004b, 0x092e, 0x0008, + 0x0807, 0x0000, 0x0000, 0x0000, 0x086c, 0x0000, 0x0000, 0x9006, + 0x0002, 0x080a, 0x083b, 0x0003, 0x080e, 0x081d, 0x082c, 0x000d, + 0x004b, 0xffff, 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, 0x095f, + 0x0969, 0x096e, 0x0973, 0x0978, 0x097c, 0x0983, 0x000d, 0x0000, + // Entry 335C0 - 335FF + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x004b, 0xffff, + 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, 0x095f, 0x0969, 0x096e, + 0x0973, 0x0978, 0x097c, 0x0983, 0x0003, 0x083f, 0x084e, 0x085d, + 0x000d, 0x004b, 0xffff, 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, + 0x095f, 0x0969, 0x096e, 0x0973, 0x0978, 0x097c, 0x0983, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x004b, + // Entry 33600 - 3363F + 0xffff, 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, 0x095f, 0x0969, + 0x096e, 0x0973, 0x0978, 0x097c, 0x0983, 0x0003, 0x0875, 0x087a, + 0x0870, 0x0001, 0x0872, 0x0001, 0x0000, 0x1a1d, 0x0001, 0x0877, + 0x0001, 0x0000, 0x1a1d, 0x0001, 0x087c, 0x0001, 0x0000, 0x1a1d, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0888, 0x0000, 0x0000, + 0x9006, 0x0001, 0x088a, 0x0001, 0x088c, 0x0002, 0x0000, 0x1a20, + 0x2a4a, 0x0040, 0x08d1, 0x0000, 0x0000, 0x08d6, 0x08ed, 0x08ff, + 0x0911, 0x0928, 0x093f, 0x0956, 0x096d, 0x0984, 0x099b, 0x09b6, + // Entry 33640 - 3367F + 0x09d1, 0x0000, 0x0000, 0x0000, 0x09ec, 0x0a05, 0x0a1e, 0x0000, + 0x0000, 0x0000, 0x0a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0a35, 0x0a49, 0x0a5d, 0x0a71, 0x0a85, 0x0a99, 0x0aad, 0x0ac1, + 0x0ad5, 0x0ae9, 0x0afd, 0x0b11, 0x0b25, 0x0b39, 0x0b4d, 0x0b61, + 0x0b75, 0x0b89, 0x0b9d, 0x0bb1, 0x0bc5, 0x0000, 0x0bd9, 0x0000, + 0x0bde, 0x0bf4, 0x0c06, 0x0c18, 0x0c2e, 0x0c40, 0x0c52, 0x0c68, + 0x0c7a, 0x0c8c, 0x0001, 0x08d3, 0x0001, 0x004b, 0x098a, 0x0003, + 0x08da, 0x08dd, 0x08e2, 0x0001, 0x0015, 0x024b, 0x0003, 0x004b, + // Entry 33680 - 336BF + 0x0994, 0x099b, 0x09a1, 0x0002, 0x08e5, 0x08e9, 0x0002, 0x0015, + 0x026b, 0x026b, 0x0002, 0x0015, 0x0276, 0x0276, 0x0003, 0x08f1, + 0x0000, 0x08f4, 0x0001, 0x0015, 0x024b, 0x0002, 0x08f7, 0x08fb, + 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x0015, 0x0276, 0x0276, + 0x0003, 0x0903, 0x0000, 0x0906, 0x0001, 0x0015, 0x024b, 0x0002, + 0x0909, 0x090d, 0x0002, 0x004b, 0x09ab, 0x09ab, 0x0002, 0x004b, + 0x09b4, 0x09b4, 0x0003, 0x0915, 0x0918, 0x091d, 0x0001, 0x000d, + 0x03b7, 0x0003, 0x004b, 0x09bf, 0x09cf, 0x09df, 0x0002, 0x0920, + // Entry 336C0 - 336FF + 0x0924, 0x0002, 0x0015, 0x02c3, 0x02b4, 0x0002, 0x0015, 0x02ea, + 0x02d4, 0x0003, 0x092c, 0x092f, 0x0934, 0x0001, 0x000d, 0x043e, + 0x0003, 0x004b, 0x09ed, 0x09f9, 0x0a03, 0x0002, 0x0937, 0x093b, + 0x0002, 0x004b, 0x0a0d, 0x0a0d, 0x0002, 0x004b, 0x0a18, 0x0a18, + 0x0003, 0x0943, 0x0946, 0x094b, 0x0001, 0x000d, 0x043e, 0x0003, + 0x004b, 0x09ed, 0x09f9, 0x0a03, 0x0002, 0x094e, 0x0952, 0x0002, + 0x002e, 0x156e, 0x156e, 0x0002, 0x004b, 0x0a2a, 0x0a2a, 0x0003, + 0x095a, 0x095d, 0x0962, 0x0001, 0x0015, 0x0349, 0x0003, 0x004b, + // Entry 33700 - 3373F + 0x0a35, 0x0a44, 0x0a53, 0x0002, 0x0965, 0x0969, 0x0002, 0x0015, + 0x0387, 0x0379, 0x0002, 0x0015, 0x03ac, 0x0397, 0x0003, 0x0971, + 0x0974, 0x0979, 0x0001, 0x004b, 0x0a60, 0x0003, 0x004b, 0x0a65, + 0x0a71, 0x0a7b, 0x0002, 0x097c, 0x0980, 0x0002, 0x0015, 0x03e3, + 0x03e3, 0x0002, 0x0015, 0x03fa, 0x03fa, 0x0003, 0x0988, 0x098b, + 0x0990, 0x0001, 0x0001, 0x017d, 0x0003, 0x004b, 0x0a65, 0x0a71, + 0x0a7b, 0x0002, 0x0993, 0x0997, 0x0002, 0x004b, 0x0a85, 0x0a85, + 0x0002, 0x004b, 0x0a8e, 0x0a8e, 0x0004, 0x09a0, 0x09a3, 0x09a8, + // Entry 33740 - 3377F + 0x09b3, 0x0001, 0x004b, 0x0a97, 0x0003, 0x004b, 0x0a9b, 0x0aa7, + 0x0ab2, 0x0002, 0x09ab, 0x09af, 0x0002, 0x004b, 0x0ac7, 0x0abc, + 0x0002, 0x004b, 0x0ae5, 0x0ad3, 0x0001, 0x004b, 0x0af8, 0x0004, + 0x09bb, 0x09be, 0x09c3, 0x09ce, 0x0001, 0x004b, 0x0a97, 0x0003, + 0x004b, 0x0a9b, 0x0aa7, 0x0ab2, 0x0002, 0x09c6, 0x09ca, 0x0002, + 0x004b, 0x0b01, 0x0b01, 0x0002, 0x004b, 0x0b0b, 0x0b0b, 0x0001, + 0x004b, 0x0af8, 0x0004, 0x09d6, 0x09d9, 0x09de, 0x09e9, 0x0001, + 0x0001, 0x071d, 0x0003, 0x004b, 0x0a9b, 0x0aa7, 0x0ab2, 0x0002, + // Entry 33780 - 337BF + 0x09e1, 0x09e5, 0x0002, 0x0028, 0x0c5b, 0x0c5b, 0x0002, 0x0028, + 0x0c63, 0x0c63, 0x0001, 0x004b, 0x0b1c, 0x0003, 0x09f0, 0x09f3, + 0x09fa, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, 0x04a0, + 0x04a6, 0x048e, 0x04af, 0x0002, 0x09fd, 0x0a01, 0x0002, 0x004b, + 0x0b23, 0x0b23, 0x0002, 0x004b, 0x0b30, 0x0b30, 0x0003, 0x0a09, + 0x0a0c, 0x0a13, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, + 0x04a0, 0x04a6, 0x048e, 0x04af, 0x0002, 0x0a16, 0x0a1a, 0x0002, + 0x004b, 0x0b44, 0x0b44, 0x0002, 0x004b, 0x0b4e, 0x0b4e, 0x0003, + // Entry 337C0 - 337FF + 0x0a22, 0x0000, 0x0a25, 0x0001, 0x0029, 0x008f, 0x0002, 0x0a28, + 0x0a2c, 0x0002, 0x004b, 0x0b5f, 0x0b5f, 0x0002, 0x004b, 0x0b67, + 0x0b67, 0x0001, 0x0a32, 0x0001, 0x004b, 0x0b6f, 0x0003, 0x0000, + 0x0a39, 0x0a3e, 0x0003, 0x004b, 0x0b76, 0x0b87, 0x0b9a, 0x0002, + 0x0a41, 0x0a45, 0x0002, 0x0015, 0x2451, 0x0529, 0x0002, 0x0015, + 0x2462, 0x0548, 0x0003, 0x0000, 0x0a4d, 0x0a52, 0x0003, 0x004b, + 0x0bac, 0x0bb7, 0x0bc3, 0x0002, 0x0a55, 0x0a59, 0x0002, 0x004b, + 0x0bcf, 0x0bcf, 0x0002, 0x004b, 0x0bdc, 0x0bdc, 0x0003, 0x0000, + // Entry 33800 - 3383F + 0x0a61, 0x0a66, 0x0003, 0x004b, 0x0bf0, 0x0bfa, 0x0c05, 0x0002, + 0x0a69, 0x0a6d, 0x0002, 0x004b, 0x0c10, 0x0c10, 0x0002, 0x004b, + 0x0c1c, 0x0c1c, 0x0003, 0x0000, 0x0a75, 0x0a7a, 0x0003, 0x004b, + 0x0c2f, 0x0c3f, 0x0c51, 0x0002, 0x0a7d, 0x0a81, 0x0002, 0x0015, + 0x247a, 0x05e1, 0x0002, 0x0015, 0x248a, 0x05fe, 0x0003, 0x0000, + 0x0a89, 0x0a8e, 0x0003, 0x004b, 0x0c62, 0x0c6c, 0x0c77, 0x0002, + 0x0a91, 0x0a95, 0x0002, 0x004b, 0x0c82, 0x0c82, 0x0002, 0x004b, + 0x0c8e, 0x0c8e, 0x0003, 0x0000, 0x0a9d, 0x0aa2, 0x0003, 0x004b, + // Entry 33840 - 3387F + 0x0ca1, 0x0caa, 0x0cb4, 0x0002, 0x0aa5, 0x0aa9, 0x0002, 0x004b, + 0x0cbe, 0x0cbe, 0x0002, 0x004b, 0x0cc9, 0x0cc9, 0x0003, 0x0000, + 0x0ab1, 0x0ab6, 0x0003, 0x004b, 0x0cdb, 0x0cec, 0x0cff, 0x0002, + 0x0ab9, 0x0abd, 0x0002, 0x0015, 0x24a1, 0x0692, 0x0002, 0x0015, + 0x24b2, 0x06b1, 0x0003, 0x0000, 0x0ac5, 0x0aca, 0x0003, 0x004b, + 0x0d11, 0x0d1b, 0x0d26, 0x0002, 0x0acd, 0x0ad1, 0x0002, 0x004b, + 0x0d31, 0x0d31, 0x0002, 0x004b, 0x0d3d, 0x0d3d, 0x0003, 0x0000, + 0x0ad9, 0x0ade, 0x0003, 0x004b, 0x0d50, 0x0d59, 0x0d63, 0x0002, + // Entry 33880 - 338BF + 0x0ae1, 0x0ae5, 0x0002, 0x004b, 0x0d6d, 0x0d6d, 0x0002, 0x004b, + 0x0d78, 0x0d78, 0x0003, 0x0000, 0x0aed, 0x0af2, 0x0003, 0x004b, + 0x0d8a, 0x0d9a, 0x0dac, 0x0002, 0x0af5, 0x0af9, 0x0002, 0x0015, + 0x24ca, 0x0744, 0x0002, 0x0015, 0x24da, 0x0761, 0x0003, 0x0000, + 0x0b01, 0x0b06, 0x0003, 0x004b, 0x0dbd, 0x0dc7, 0x0dd2, 0x0002, + 0x0b09, 0x0b0d, 0x0002, 0x004b, 0x0ddd, 0x0ddd, 0x0002, 0x004b, + 0x0de9, 0x0de9, 0x0003, 0x0000, 0x0b15, 0x0b1a, 0x0003, 0x004b, + 0x0dfc, 0x0e05, 0x0e0f, 0x0002, 0x0b1d, 0x0b21, 0x0002, 0x004b, + // Entry 338C0 - 338FF + 0x0e19, 0x0e19, 0x0002, 0x004b, 0x0e24, 0x0e24, 0x0003, 0x0000, + 0x0b29, 0x0b2e, 0x0003, 0x004b, 0x0e36, 0x0e47, 0x0e5a, 0x0002, + 0x0b31, 0x0b35, 0x0002, 0x0015, 0x24f1, 0x07f5, 0x0002, 0x0015, + 0x2502, 0x0814, 0x0003, 0x0000, 0x0b3d, 0x0b42, 0x0003, 0x004b, + 0x0e6c, 0x0e76, 0x0e81, 0x0002, 0x0b45, 0x0b49, 0x0002, 0x004b, + 0x0e8c, 0x0e8c, 0x0002, 0x004b, 0x0e98, 0x0e98, 0x0003, 0x0000, + 0x0b51, 0x0b56, 0x0003, 0x004b, 0x0eab, 0x0eb4, 0x0ebe, 0x0002, + 0x0b59, 0x0b5d, 0x0002, 0x004b, 0x0ec8, 0x0ec8, 0x0002, 0x004b, + // Entry 33900 - 3393F + 0x0ed3, 0x0ed3, 0x0003, 0x0000, 0x0b65, 0x0b6a, 0x0003, 0x004b, + 0x0ee5, 0x0ef5, 0x0f07, 0x0002, 0x0b6d, 0x0b71, 0x0002, 0x0015, + 0x251a, 0x08a7, 0x0002, 0x0015, 0x252a, 0x08c4, 0x0003, 0x0000, + 0x0b79, 0x0b7e, 0x0003, 0x004b, 0x0f18, 0x0f22, 0x0f2d, 0x0002, + 0x0b81, 0x0b85, 0x0002, 0x004b, 0x0f38, 0x0f38, 0x0002, 0x004b, + 0x0f44, 0x0f44, 0x0003, 0x0000, 0x0b8d, 0x0b92, 0x0003, 0x004b, + 0x0f57, 0x0f60, 0x0f6a, 0x0002, 0x0b95, 0x0b99, 0x0002, 0x004b, + 0x0f74, 0x0f74, 0x0002, 0x004b, 0x0f7f, 0x0f7f, 0x0003, 0x0000, + // Entry 33940 - 3397F + 0x0ba1, 0x0ba6, 0x0003, 0x004b, 0x0f91, 0x0fa2, 0x0fb5, 0x0002, + 0x0ba9, 0x0bad, 0x0002, 0x0015, 0x2541, 0x0958, 0x0002, 0x0015, + 0x2552, 0x0977, 0x0003, 0x0000, 0x0bb5, 0x0bba, 0x0003, 0x004b, + 0x0fc7, 0x0fd2, 0x0fde, 0x0002, 0x0bbd, 0x0bc1, 0x0002, 0x004b, + 0x0fea, 0x0fea, 0x0002, 0x004b, 0x0ff7, 0x0ff7, 0x0003, 0x0000, + 0x0bc9, 0x0bce, 0x0003, 0x004b, 0x100b, 0x1015, 0x1020, 0x0002, + 0x0bd1, 0x0bd5, 0x0002, 0x004b, 0x102b, 0x102b, 0x0002, 0x004b, + 0x1037, 0x1037, 0x0001, 0x0bdb, 0x0001, 0x001e, 0x002c, 0x0003, + // Entry 33980 - 339BF + 0x0be2, 0x0be5, 0x0be9, 0x0001, 0x0015, 0x09e9, 0x0002, 0x004b, + 0xffff, 0x104a, 0x0002, 0x0bec, 0x0bf0, 0x0002, 0x0015, 0x0a0e, + 0x0a02, 0x0002, 0x0015, 0x0a2e, 0x0a1b, 0x0003, 0x0bf8, 0x0000, + 0x0bfb, 0x0001, 0x0000, 0x2000, 0x0002, 0x0bfe, 0x0c02, 0x0002, + 0x004b, 0x1056, 0x1056, 0x0002, 0x004b, 0x105f, 0x105f, 0x0003, + 0x0c0a, 0x0000, 0x0c0d, 0x0001, 0x0000, 0x2000, 0x0002, 0x0c10, + 0x0c14, 0x0002, 0x004b, 0x106f, 0x106f, 0x0002, 0x004b, 0x1076, + 0x1076, 0x0003, 0x0c1c, 0x0c1f, 0x0c23, 0x0001, 0x004b, 0x107d, + // Entry 339C0 - 339FF + 0x0002, 0x004b, 0xffff, 0x1084, 0x0002, 0x0c26, 0x0c2a, 0x0002, + 0x004b, 0x10a1, 0x1093, 0x0002, 0x004b, 0x10c6, 0x10b1, 0x0003, + 0x0c32, 0x0000, 0x0c35, 0x0001, 0x0041, 0x092f, 0x0002, 0x0c38, + 0x0c3c, 0x0002, 0x004b, 0x10dd, 0x10dd, 0x0002, 0x004b, 0x10e8, + 0x10e8, 0x0003, 0x0c44, 0x0000, 0x0c47, 0x0001, 0x0000, 0x1f9a, + 0x0002, 0x0c4a, 0x0c4e, 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, + 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0c56, 0x0c59, 0x0c5d, 0x0001, + 0x0015, 0x0ad8, 0x0002, 0x004b, 0xffff, 0x10fa, 0x0002, 0x0c60, + // Entry 33A00 - 33A3F + 0x0c64, 0x0002, 0x0015, 0x0af0, 0x0ae2, 0x0002, 0x0015, 0x0b15, + 0x0b00, 0x0003, 0x0c6c, 0x0000, 0x0c6f, 0x0001, 0x001f, 0x027b, + 0x0002, 0x0c72, 0x0c76, 0x0002, 0x004b, 0x10fe, 0x10fe, 0x0002, + 0x004b, 0x1109, 0x1109, 0x0003, 0x0c7e, 0x0000, 0x0c81, 0x0001, + 0x0000, 0x2002, 0x0002, 0x0c84, 0x0c88, 0x0002, 0x0026, 0x00bf, + 0x00bf, 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0001, 0x0c8e, 0x0001, + 0x004b, 0x111b, 0x0004, 0x0c96, 0x0c9b, 0x0ca0, 0x0caf, 0x0003, + 0x0000, 0x1dc7, 0x3839, 0x3890, 0x0003, 0x004b, 0x1124, 0x1135, + // Entry 33A40 - 33A7F + 0x1147, 0x0002, 0x0000, 0x0ca3, 0x0003, 0x0000, 0x0caa, 0x0ca7, + 0x0001, 0x004b, 0x1159, 0x0003, 0x004b, 0xffff, 0x1171, 0x1183, + 0x0002, 0x0e96, 0x0cb2, 0x0003, 0x0cb6, 0x0df6, 0x0d56, 0x009e, + 0x0015, 0xffff, 0xffff, 0xffff, 0xffff, 0x256a, 0x257c, 0x2589, + 0x259f, 0x25c6, 0x25f2, 0x2615, 0x2647, 0x265c, 0x266e, 0x267a, + 0x2689, 0x269c, 0x26a8, 0x26c0, 0x26d5, 0x26ef, 0x2701, 0x2713, + 0x2726, 0x2732, 0xffff, 0xffff, 0x2744, 0xffff, 0x275a, 0xffff, + 0x2772, 0x2787, 0x2794, 0x27a1, 0xffff, 0xffff, 0x27ba, 0x27ca, + // Entry 33A80 - 33ABF + 0x27e2, 0xffff, 0xffff, 0xffff, 0x27ee, 0xffff, 0x2806, 0x281b, + 0xffff, 0x282d, 0x283f, 0x285c, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2869, 0xffff, 0xffff, 0x2876, 0x288a, 0xffff, 0xffff, 0x289e, + 0x28be, 0x28d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x28e7, 0x28f2, 0x2907, 0x2914, 0x2920, 0xffff, 0xffff, 0x2949, + 0xffff, 0x2956, 0xffff, 0xffff, 0x296f, 0xffff, 0x2995, 0xffff, + 0xffff, 0xffff, 0xffff, 0x29aa, 0xffff, 0x29b8, 0x29d9, 0x2a07, + 0x2a1f, 0xffff, 0xffff, 0xffff, 0x2a33, 0x2a41, 0x2a52, 0xffff, + // Entry 33AC0 - 33AFF + 0xffff, 0x2a6c, 0x2a8d, 0x2aa6, 0x2ab8, 0xffff, 0xffff, 0x2ac7, + 0x2ad8, 0x2ae5, 0xffff, 0x2af4, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2b1a, 0x2b30, 0x2b45, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2b52, 0xffff, 0xffff, 0x2b66, 0xffff, + 0x2b73, 0xffff, 0x2b81, 0x2b91, 0x2b9e, 0xffff, 0x2bac, 0x2bc5, + 0xffff, 0xffff, 0xffff, 0x2bdc, 0x2bf1, 0xffff, 0xffff, 0x0b8e, + 0x0c69, 0x0de0, 0x0e0a, 0xffff, 0xffff, 0x298b, 0x1f84, 0x009e, + 0x004b, 0x11b0, 0x11bd, 0x11d2, 0x11e4, 0x11f6, 0x1226, 0x1272, + // Entry 33B00 - 33B3F + 0x12a0, 0x12f0, 0x134a, 0x1392, 0x13f8, 0x142e, 0x149e, 0x14c4, + 0x14ee, 0x1520, 0x1544, 0x1582, 0x15b8, 0x15f8, 0x1628, 0x1658, + 0x168a, 0x16ae, 0x16de, 0x16eb, 0x16fa, 0x1728, 0x1747, 0x1783, + 0x1799, 0x17c5, 0x17eb, 0x1811, 0x1845, 0x1860, 0x1879, 0x18a5, + 0x18dc, 0x1900, 0x1913, 0x1933, 0x1946, 0x1978, 0x1989, 0x19bf, + 0x19ef, 0x1a07, 0x1a37, 0x1a73, 0x1a99, 0x1ab4, 0x1adc, 0x1afa, + 0x1b0f, 0x1b35, 0x1b50, 0x1b64, 0x1b98, 0x1bd5, 0x1bee, 0x1bfa, + 0x1c3c, 0x1c6a, 0x1c92, 0x1c9d, 0x1cb5, 0x1cc6, 0x1cdc, 0x1cef, + // Entry 33B40 - 33B7F + 0x1d02, 0x1d24, 0x1d50, 0x1d76, 0x1d9a, 0x1df8, 0x1e0d, 0x1e22, + 0x1e48, 0x1e5c, 0x1e90, 0x1ea8, 0x1ec1, 0x1f1f, 0x1f3a, 0x1f66, + 0x1f74, 0x1f82, 0x1f9f, 0x1fbb, 0x1fe3, 0x1ff7, 0x203b, 0x2099, + 0x20cb, 0x20f5, 0x2103, 0x210f, 0x211b, 0x2143, 0x2171, 0x21a7, + 0x21b9, 0x21d2, 0x2229, 0x225d, 0x2283, 0x22ad, 0x22ba, 0x22c7, + 0x22f5, 0x231b, 0x2345, 0x2360, 0x23ae, 0x23c4, 0x23d9, 0x241c, + 0x2432, 0x2447, 0x2475, 0x24ab, 0x24d1, 0x24e1, 0x24f0, 0x250b, + 0x2525, 0x2533, 0x2546, 0x2553, 0x257d, 0x258c, 0x25a1, 0x25c7, + // Entry 33B80 - 33BBF + 0x25e0, 0x2608, 0x2614, 0x2640, 0x2666, 0x268e, 0x269f, 0x26d3, + 0x2703, 0x2717, 0x2730, 0x2755, 0x2781, 0x1bcc, 0x2216, 0x1192, + 0x124c, 0x1454, 0x1478, 0x1779, 0x1e9e, 0x1efb, 0x23f0, 0x009e, + 0x004b, 0xffff, 0xffff, 0xffff, 0xffff, 0x120e, 0x1239, 0x1289, + 0x12c8, 0x131d, 0x136e, 0x13c5, 0x1413, 0x1441, 0x14b2, 0x14d9, + 0x1507, 0x1532, 0x1564, 0x159d, 0x15d8, 0x1610, 0x1640, 0x1671, + 0x169c, 0x16c6, 0xffff, 0xffff, 0x1711, 0xffff, 0x1760, 0xffff, + 0x17af, 0x17d8, 0x17fe, 0x182b, 0xffff, 0xffff, 0x188f, 0x18be, + // Entry 33BC0 - 33BFF + 0x18ee, 0xffff, 0xffff, 0xffff, 0x195f, 0xffff, 0x19a4, 0x19d7, + 0xffff, 0x1a1f, 0x1a55, 0x1a86, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1b22, 0xffff, 0xffff, 0x1b7e, 0x1bb2, 0xffff, 0xffff, 0x1c1b, + 0x1c53, 0x1c7e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1d13, 0x1d3a, 0x1d63, 0x1d88, 0x1dc9, 0xffff, 0xffff, 0x1e35, + 0xffff, 0x1e76, 0xffff, 0xffff, 0x1ede, 0xffff, 0x1f50, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1fcf, 0xffff, 0x2019, 0x206a, 0x20b2, + 0x20e0, 0xffff, 0xffff, 0xffff, 0x212f, 0x215a, 0x218c, 0xffff, + // Entry 33C00 - 33C3F + 0xffff, 0x21f4, 0x2243, 0x2270, 0x2298, 0xffff, 0xffff, 0x22de, + 0x2308, 0x2330, 0xffff, 0x2387, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x245e, 0x2490, 0x24be, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2568, 0xffff, 0xffff, 0x25b4, 0xffff, + 0x25f4, 0xffff, 0x262a, 0x2653, 0x267a, 0xffff, 0x26b9, 0x26eb, + 0xffff, 0xffff, 0xffff, 0x276b, 0x279d, 0xffff, 0xffff, 0x11a1, + 0x1260, 0x1467, 0x148c, 0xffff, 0xffff, 0x1f0e, 0x2407, 0x0003, + 0x0e9a, 0x0f1c, 0x0edb, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, + // Entry 33C40 - 33C7F + 0xffff, 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2798, 0x003f, 0x0006, 0xffff, 0xffff, + // Entry 33C80 - 33CBF + 0xffff, 0xffff, 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x2780, + 0x0978, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27d3, + 0xffff, 0xffff, 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, + // Entry 33CC0 - 33CFF + 0xffff, 0xffff, 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, + 0x2784, 0x097c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0c1b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x16eb, 0x0002, 0x0003, + // Entry 33D00 - 33D3F + 0x00d1, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, + 0x0000, 0x009f, 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x004c, 0xffff, 0x0000, + 0x0004, 0x0009, 0x000d, 0x0011, 0x0015, 0x001a, 0x001e, 0x0022, + // Entry 33D40 - 33D7F + 0x0027, 0x002b, 0x002f, 0x000d, 0x004c, 0xffff, 0x0034, 0x003f, + 0x0049, 0x0053, 0x005a, 0x0065, 0x006f, 0x0079, 0x0084, 0x008d, + 0x0094, 0x009a, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + 0x22db, 0x297e, 0x297a, 0x297a, 0x297e, 0x297e, 0x297e, 0x297e, + 0x297a, 0x297a, 0x2994, 0x297a, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0040, 0x02d8, 0x25e9, 0x25ed, + 0x25f1, 0x25f5, 0x25f9, 0x25fd, 0x0007, 0x004c, 0x00a4, 0x00aa, + 0x00b0, 0x00b7, 0x00c0, 0x00c5, 0x00cd, 0x0002, 0x0000, 0x0082, + // Entry 33D80 - 33DBF + 0x0007, 0x0000, 0x298e, 0x297a, 0x298e, 0x298e, 0x298e, 0x298e, + 0x297a, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x004c, + 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x00eb, 0x0003, 0x00a9, 0x0000, + 0x00a3, 0x0001, 0x00a5, 0x0002, 0x004c, 0x00f2, 0x0105, 0x0001, + 0x00ab, 0x0002, 0x0009, 0x0078, 0x5463, 0x0004, 0x00bd, 0x00b7, + 0x00b4, 0x00ba, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00ce, + // Entry 33DC0 - 33DFF + 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0117, 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x012c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 33E00 - 33E3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, + 0x0000, 0x0136, 0x0000, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, + 0x0001, 0x0114, 0x0001, 0x004c, 0x0115, 0x0001, 0x0119, 0x0001, + 0x004c, 0x011d, 0x0001, 0x011e, 0x0001, 0x004c, 0x0129, 0x0002, + 0x0124, 0x0127, 0x0001, 0x004c, 0x012f, 0x0003, 0x004c, 0x0136, + 0x013c, 0x0144, 0x0001, 0x012e, 0x0001, 0x004c, 0x014b, 0x0001, + 0x0133, 0x0001, 0x004c, 0x0159, 0x0001, 0x0138, 0x0001, 0x004c, + 0x015f, 0x0001, 0x013d, 0x0001, 0x004c, 0x0167, 0x0001, 0x0142, + // Entry 33E40 - 33E7F + 0x0001, 0x004c, 0x0170, 0x0003, 0x0004, 0x018c, 0x0271, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x004c, + 0x017a, 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, + 0x004c, 0x0191, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00e7, 0x011c, + // Entry 33E80 - 33EBF + 0x0134, 0x0159, 0x016a, 0x017b, 0x0002, 0x0044, 0x0075, 0x0003, + 0x0048, 0x0057, 0x0066, 0x000d, 0x0000, 0xffff, 0x1e22, 0x2a15, + 0x38da, 0x2347, 0x29e9, 0x38e0, 0x38e5, 0x2350, 0x2355, 0x2a02, + 0x2a07, 0x2a0c, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, + 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, + 0x297c, 0x000d, 0x004c, 0xffff, 0x019f, 0x01a7, 0x01b0, 0x01b6, + 0x01bc, 0x01c0, 0x01c5, 0x01ca, 0x01d1, 0x01db, 0x01e3, 0x01ec, + 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0000, 0xffff, 0x1e22, + // Entry 33EC0 - 33EFF + 0x2a15, 0x38ea, 0x2347, 0x38f0, 0x38f4, 0x38f9, 0x2350, 0x2355, + 0x2a02, 0x2a07, 0x2a0c, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, + 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, + 0x297e, 0x297c, 0x000d, 0x004c, 0xffff, 0x019f, 0x01a7, 0x01f5, + 0x01b6, 0x01fb, 0x01ff, 0x0204, 0x01ca, 0x01d1, 0x01db, 0x01e3, + 0x01ec, 0x0002, 0x00a9, 0x00c8, 0x0003, 0x00ad, 0x00b6, 0x00bf, + 0x0007, 0x004c, 0x0209, 0x020e, 0x0212, 0x0216, 0x021a, 0x021e, + 0x0222, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, + // Entry 33F00 - 33F3F + 0x298c, 0x298e, 0x0007, 0x004c, 0x0226, 0x022f, 0x0237, 0x0240, + 0x024b, 0x0256, 0x025e, 0x0003, 0x00cc, 0x00d5, 0x00de, 0x0007, + 0x004c, 0x0209, 0x020e, 0x0212, 0x0216, 0x021a, 0x021e, 0x0222, + 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, 0x298c, + 0x298e, 0x0007, 0x004c, 0x0226, 0x022f, 0x0237, 0x0240, 0x024b, + 0x0256, 0x025e, 0x0002, 0x00ea, 0x0103, 0x0003, 0x00ee, 0x00f5, + 0x00fc, 0x0005, 0x004c, 0xffff, 0x0269, 0x026d, 0x0271, 0x0275, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, + // Entry 33F40 - 33F7F + 0x004c, 0xffff, 0x0279, 0x0285, 0x0291, 0x029d, 0x0003, 0x0107, + 0x010e, 0x0115, 0x0005, 0x004c, 0xffff, 0x02a9, 0x02ae, 0x02b4, + 0x02bb, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, + 0x0005, 0x004c, 0xffff, 0x0279, 0x0285, 0x0291, 0x029d, 0x0001, + 0x011e, 0x0003, 0x0122, 0x0000, 0x012b, 0x0002, 0x0125, 0x0128, + 0x0001, 0x004c, 0x02c1, 0x0001, 0x004c, 0x02c4, 0x0002, 0x012e, + 0x0131, 0x0001, 0x004c, 0x02c1, 0x0001, 0x004c, 0x02c4, 0x0003, + 0x0143, 0x014e, 0x0138, 0x0002, 0x013b, 0x013f, 0x0002, 0x004c, + // Entry 33F80 - 33FBF + 0x02c7, 0x02e3, 0x0002, 0x004c, 0x02d5, 0x02ef, 0x0002, 0x0146, + 0x014a, 0x0002, 0x004c, 0x02ff, 0x030d, 0x0002, 0x004c, 0x0306, + 0x0314, 0x0002, 0x0151, 0x0155, 0x0002, 0x003e, 0x060b, 0x060e, + 0x0002, 0x004c, 0x031b, 0x031f, 0x0004, 0x0167, 0x0161, 0x015e, + 0x0164, 0x0001, 0x004c, 0x0323, 0x0001, 0x0013, 0x06b1, 0x0001, + 0x0015, 0x0207, 0x0001, 0x0008, 0x09eb, 0x0004, 0x0178, 0x0172, + 0x016f, 0x0175, 0x0001, 0x004c, 0x0338, 0x0001, 0x004c, 0x034f, + 0x0001, 0x004c, 0x0363, 0x0001, 0x004c, 0x0373, 0x0004, 0x0189, + // Entry 33FC0 - 33FFF + 0x0183, 0x0180, 0x0186, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, + 0x01cd, 0x0000, 0x0000, 0x01d2, 0x01dd, 0x01e2, 0x01e7, 0x01ec, + 0x01f1, 0x01f6, 0x0201, 0x0206, 0x020b, 0x0216, 0x021b, 0x0000, + 0x0000, 0x0000, 0x0220, 0x022b, 0x0230, 0x0000, 0x0000, 0x0000, + 0x0235, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 34000 - 3403F + 0x0000, 0x0000, 0x0000, 0x0000, 0x023a, 0x0000, 0x023f, 0x0244, + 0x0249, 0x024e, 0x0253, 0x0258, 0x025d, 0x0262, 0x0267, 0x026c, + 0x0001, 0x01cf, 0x0001, 0x004c, 0x037e, 0x0002, 0x01d5, 0x01d8, + 0x0001, 0x003e, 0x0637, 0x0003, 0x004c, 0x0383, 0x0391, 0x039a, + 0x0001, 0x01df, 0x0001, 0x003e, 0x06b1, 0x0001, 0x01e4, 0x0001, + 0x003e, 0x06b1, 0x0001, 0x01e9, 0x0001, 0x004c, 0x03a7, 0x0001, + 0x01ee, 0x0001, 0x0016, 0x055d, 0x0001, 0x01f3, 0x0001, 0x003e, + 0x06bd, 0x0002, 0x01f9, 0x01fc, 0x0001, 0x004c, 0x03b0, 0x0003, + // Entry 34040 - 3407F + 0x004c, 0x03b6, 0x03c5, 0x03d1, 0x0001, 0x0203, 0x0001, 0x001c, + 0x010c, 0x0001, 0x0208, 0x0001, 0x001c, 0x010c, 0x0002, 0x020e, + 0x0211, 0x0001, 0x0000, 0x1adc, 0x0003, 0x004c, 0x03df, 0x03ed, + 0x03f8, 0x0001, 0x0218, 0x0001, 0x004c, 0x0405, 0x0001, 0x021d, + 0x0001, 0x004c, 0x0405, 0x0002, 0x0223, 0x0226, 0x0001, 0x0040, + 0x05ab, 0x0003, 0x004c, 0x0409, 0x0412, 0x041a, 0x0001, 0x022d, + 0x0001, 0x0040, 0x05ab, 0x0001, 0x0232, 0x0001, 0x003e, 0x0747, + 0x0001, 0x0237, 0x0001, 0x004c, 0x0421, 0x0001, 0x023c, 0x0001, + // Entry 34080 - 340BF + 0x004c, 0x042a, 0x0001, 0x0241, 0x0001, 0x004c, 0x0432, 0x0001, + 0x0246, 0x0001, 0x0040, 0x0a03, 0x0001, 0x024b, 0x0001, 0x0000, + 0x2143, 0x0001, 0x0250, 0x0001, 0x004c, 0x0439, 0x0001, 0x0255, + 0x0001, 0x0016, 0x0f87, 0x0001, 0x025a, 0x0001, 0x0001, 0x075a, + 0x0001, 0x025f, 0x0001, 0x004c, 0x0440, 0x0001, 0x0264, 0x0001, + 0x0016, 0x0ffe, 0x0001, 0x0269, 0x0001, 0x0000, 0x2002, 0x0001, + 0x026e, 0x0001, 0x004c, 0x0447, 0x0004, 0x0276, 0x027b, 0x0000, + 0x0280, 0x0003, 0x0008, 0x1d98, 0x4f2a, 0x4f31, 0x0003, 0x004c, + // Entry 340C0 - 340FF + 0x0452, 0x045b, 0x046a, 0x0002, 0x0000, 0x0283, 0x0003, 0x02e9, + 0x034b, 0x0287, 0x0060, 0x004c, 0xffff, 0x047b, 0x0494, 0x04a9, + 0x04d5, 0xffff, 0xffff, 0x052c, 0x0598, 0x05fd, 0x0661, 0xffff, + 0xffff, 0x06bb, 0xffff, 0xffff, 0xffff, 0x0704, 0x076b, 0x07c8, + 0x0825, 0x0872, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x08b5, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x08f3, 0x094b, 0xffff, 0x099b, 0xffff, 0xffff, 0xffff, + // Entry 34100 - 3413F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09d5, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09eb, 0xffff, 0x09f7, + 0x0a10, 0x0a28, 0x0a3c, 0xffff, 0xffff, 0x0a5c, 0x0a91, 0xffff, + 0xffff, 0xffff, 0x0acd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0b07, 0x0060, 0x004c, 0xffff, 0xffff, + 0xffff, 0xffff, 0x04c0, 0xffff, 0xffff, 0x050d, 0x057a, 0x05e2, + 0x0643, 0xffff, 0xffff, 0x06ad, 0xffff, 0xffff, 0xffff, 0x06e5, + // Entry 34140 - 3417F + 0x0752, 0x07ab, 0x0810, 0x085d, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x08aa, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x08d9, 0x0935, 0xffff, 0x0985, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a50, + 0x0a82, 0xffff, 0xffff, 0xffff, 0x0abd, 0xffff, 0xffff, 0xffff, + // Entry 34180 - 341BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0afb, 0x0060, 0x004c, + 0xffff, 0xffff, 0xffff, 0xffff, 0x04f2, 0xffff, 0xffff, 0x0554, + 0x05be, 0x0621, 0x0688, 0xffff, 0xffff, 0x06d1, 0xffff, 0xffff, + 0xffff, 0x072c, 0x078c, 0x07ed, 0x0842, 0x088f, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x08c8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0915, 0x0969, 0xffff, + // Entry 341C0 - 341FF + 0x09b9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0a70, 0x0aa8, 0xffff, 0xffff, 0xffff, 0x0ae5, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b1b, + 0x0003, 0x0004, 0x0287, 0x0663, 0x000a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000f, 0x003a, 0x0000, 0x0270, 0x0008, + // Entry 34200 - 3423F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0029, + 0x0004, 0x0026, 0x0020, 0x001d, 0x0023, 0x0001, 0x0000, 0x0489, + 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, + 0x04af, 0x0004, 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, 0x004c, + 0x0b2d, 0x0001, 0x004c, 0x0b2d, 0x0001, 0x004c, 0x0b3a, 0x0001, + 0x004c, 0x0b3a, 0x0008, 0x0043, 0x00a8, 0x00ff, 0x0134, 0x0223, + 0x023d, 0x024e, 0x025f, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, + 0x0059, 0x0068, 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, 0x2380, + // Entry 34240 - 3427F + 0x2390, 0x23a3, 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, 0x23f9, + 0x2412, 0x000d, 0x0048, 0xffff, 0x0159, 0x015d, 0x0161, 0x0165, + 0x5e0c, 0x5e10, 0x5e14, 0x5e18, 0x5e1c, 0x5e20, 0x5e27, 0x5e2e, + 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, 0x2380, 0x2390, 0x0158, + 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, 0x23f9, 0x2412, 0x0003, + 0x007b, 0x008a, 0x0099, 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, + 0x2380, 0x2390, 0x23a3, 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, + 0x23f9, 0x2412, 0x000d, 0x0048, 0xffff, 0x0159, 0x015d, 0x0161, + // Entry 34280 - 342BF + 0x0165, 0x5e0c, 0x5e10, 0x5e14, 0x5e18, 0x5e1c, 0x5e20, 0x5e27, + 0x5e2e, 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, 0x2380, 0x2390, + 0x23a3, 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, 0x23f9, 0x2412, + 0x0002, 0x00ab, 0x00d5, 0x0005, 0x00b1, 0x00ba, 0x00cc, 0x0000, + 0x00c3, 0x0007, 0x004c, 0x0b42, 0x0b4c, 0x0b56, 0x0b66, 0x0b70, + 0x0b7d, 0x0b8d, 0x0007, 0x000c, 0x0143, 0x4e4f, 0x4e3d, 0x0255, + 0x025c, 0x4e5d, 0x4e64, 0x0007, 0x004c, 0x0b42, 0x0b4c, 0x0b56, + 0x0b66, 0x0b70, 0x0b7d, 0x0b8d, 0x0007, 0x004c, 0x0b97, 0x0baa, + // Entry 342C0 - 342FF + 0x0bbd, 0x0bd6, 0x0be9, 0x0bff, 0x0c18, 0x0005, 0x00db, 0x00e4, + 0x00f6, 0x0000, 0x00ed, 0x0007, 0x004c, 0x0b42, 0x0b4c, 0x0b56, + 0x0b66, 0x0b70, 0x0b7d, 0x0b8d, 0x0007, 0x000c, 0x0143, 0x4e4f, + 0x4e3d, 0x0255, 0x025c, 0x4e5d, 0x4e64, 0x0007, 0x004c, 0x0b42, + 0x0b4c, 0x0b56, 0x0b66, 0x0b70, 0x0b7d, 0x0b8d, 0x0007, 0x004c, + 0x0b97, 0x0baa, 0x0bbd, 0x0bd6, 0x0be9, 0x0bff, 0x0c18, 0x0002, + 0x0102, 0x011b, 0x0003, 0x0106, 0x010d, 0x0114, 0x0005, 0x004c, + 0xffff, 0x0c2b, 0x0c48, 0x0c68, 0x0c88, 0x0005, 0x0048, 0xffff, + // Entry 34300 - 3433F + 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x004c, 0xffff, 0x0c2b, + 0x0c48, 0x0c68, 0x0c88, 0x0003, 0x011f, 0x0126, 0x012d, 0x0005, + 0x004c, 0xffff, 0x0c2b, 0x0c48, 0x0c68, 0x0c88, 0x0005, 0x0048, + 0xffff, 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x004c, 0xffff, + 0x0c2b, 0x0c48, 0x0c68, 0x0c88, 0x0002, 0x0137, 0x01ad, 0x0003, + 0x013b, 0x0161, 0x0187, 0x000a, 0x0149, 0x014f, 0x0146, 0x0152, + 0x0155, 0x015b, 0x015e, 0x014c, 0x0000, 0x0158, 0x0001, 0x004c, + 0x0ca2, 0x0001, 0x002c, 0x03ee, 0x0001, 0x0048, 0x021a, 0x0001, + // Entry 34340 - 3437F + 0x002c, 0x040a, 0x0001, 0x004c, 0x0cb8, 0x0001, 0x004c, 0x0cc8, + 0x0001, 0x004c, 0x0cde, 0x0001, 0x004c, 0x0ceb, 0x0001, 0x002c, + 0x0437, 0x000a, 0x016f, 0x0175, 0x016c, 0x0178, 0x017b, 0x0181, + 0x0184, 0x0172, 0x0000, 0x017e, 0x0001, 0x004c, 0x0ca2, 0x0001, + 0x002c, 0x03ee, 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, + 0x0001, 0x004c, 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, + 0x0cde, 0x0001, 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x000a, + 0x0195, 0x019b, 0x0192, 0x019e, 0x01a1, 0x01a7, 0x01aa, 0x0198, + // Entry 34380 - 343BF + 0x0000, 0x01a4, 0x0001, 0x004c, 0x0ca2, 0x0001, 0x002c, 0x03ee, + 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, 0x0001, 0x004c, + 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, 0x0cde, 0x0001, + 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x0003, 0x01b1, 0x01d7, + 0x01fd, 0x000a, 0x01bf, 0x01c5, 0x01bc, 0x01c8, 0x01cb, 0x01d1, + 0x01d4, 0x01c2, 0x0000, 0x01ce, 0x0001, 0x004c, 0x0ca2, 0x0001, + 0x002c, 0x03ee, 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, + 0x0001, 0x004c, 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, + // Entry 343C0 - 343FF + 0x0cde, 0x0001, 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x000a, + 0x01e5, 0x01eb, 0x01e2, 0x01ee, 0x01f1, 0x01f7, 0x01fa, 0x01e8, + 0x0000, 0x01f4, 0x0001, 0x004c, 0x0ca2, 0x0001, 0x002c, 0x03ee, + 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, 0x0001, 0x004c, + 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, 0x0cde, 0x0001, + 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x000a, 0x020b, 0x0211, + 0x0208, 0x0214, 0x0217, 0x021d, 0x0220, 0x020e, 0x0000, 0x021a, + 0x0001, 0x004c, 0x0ca2, 0x0001, 0x002c, 0x03ee, 0x0001, 0x0048, + // Entry 34400 - 3443F + 0x021a, 0x0001, 0x002c, 0x040a, 0x0001, 0x004c, 0x0cb8, 0x0001, + 0x004c, 0x0cc8, 0x0001, 0x004c, 0x0cde, 0x0001, 0x004c, 0x0ceb, + 0x0001, 0x002c, 0x0437, 0x0003, 0x0232, 0x0000, 0x0227, 0x0002, + 0x022a, 0x022e, 0x0002, 0x004c, 0x0cfe, 0x0d37, 0x0002, 0x004c, + 0x0d18, 0x0d41, 0x0002, 0x0235, 0x0239, 0x0002, 0x004c, 0x0cfe, + 0x0d37, 0x0002, 0x004c, 0x0d18, 0x0d41, 0x0004, 0x024b, 0x0245, + 0x0242, 0x0248, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, + 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x025c, + // Entry 34440 - 3447F + 0x0256, 0x0253, 0x0259, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x026d, 0x0267, 0x0264, 0x026a, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0272, 0x0001, 0x0274, 0x0003, 0x0000, 0x0000, 0x0278, + 0x000d, 0x002c, 0xffff, 0x04e4, 0x242b, 0x2435, 0x2442, 0x244f, + 0x2459, 0x2466, 0x247c, 0x248c, 0x058f, 0x2496, 0x24a6, 0x0040, + 0x02c8, 0x0000, 0x0000, 0x02cd, 0x02e4, 0x02f6, 0x0308, 0x031f, + // Entry 34480 - 344BF + 0x0331, 0x0343, 0x035a, 0x036c, 0x037e, 0x0399, 0x03af, 0x0000, + 0x0000, 0x0000, 0x03c5, 0x03de, 0x03f0, 0x0000, 0x0000, 0x0000, + 0x0402, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0407, 0x041b, + 0x042f, 0x0443, 0x0457, 0x046b, 0x047f, 0x0493, 0x04a7, 0x04bb, + 0x04cf, 0x04e3, 0x04f7, 0x050b, 0x051f, 0x0533, 0x0547, 0x055b, + 0x056f, 0x0583, 0x0597, 0x0000, 0x05ab, 0x0000, 0x05b0, 0x05c6, + 0x05d8, 0x05ea, 0x0600, 0x0612, 0x0624, 0x063a, 0x064c, 0x065e, + 0x0001, 0x02ca, 0x0001, 0x0048, 0x0812, 0x0003, 0x02d1, 0x02d4, + // Entry 344C0 - 344FF + 0x02d9, 0x0001, 0x002d, 0x00e8, 0x0003, 0x004c, 0x0d55, 0x0d69, + 0x0d7d, 0x0002, 0x02dc, 0x02e0, 0x0002, 0x004c, 0x0d9a, 0x0d9a, + 0x0002, 0x004c, 0x0db1, 0x0db1, 0x0003, 0x02e8, 0x0000, 0x02eb, + 0x0001, 0x004c, 0x0dcc, 0x0002, 0x02ee, 0x02f2, 0x0002, 0x004c, + 0x0d9a, 0x0d9a, 0x0002, 0x004c, 0x0db1, 0x0db1, 0x0003, 0x02fa, + 0x0000, 0x02fd, 0x0001, 0x004c, 0x0dcc, 0x0002, 0x0300, 0x0304, + 0x0002, 0x004c, 0x0d9a, 0x0d9a, 0x0002, 0x004c, 0x0db1, 0x0db1, + 0x0003, 0x030c, 0x030f, 0x0314, 0x0001, 0x004c, 0x0dd9, 0x0003, + // Entry 34500 - 3453F + 0x004c, 0x0de6, 0x0e09, 0x0e1d, 0x0002, 0x0317, 0x031b, 0x0002, + 0x004c, 0x0e52, 0x0e3a, 0x0002, 0x004c, 0x0e68, 0x0e68, 0x0003, + 0x0323, 0x0000, 0x0326, 0x0001, 0x004c, 0x0dd9, 0x0002, 0x0329, + 0x032d, 0x0002, 0x004c, 0x0e52, 0x0e52, 0x0002, 0x004c, 0x0e68, + 0x0e68, 0x0003, 0x0335, 0x0000, 0x0338, 0x0001, 0x004c, 0x0dd9, + 0x0002, 0x033b, 0x033f, 0x0002, 0x004c, 0x0e52, 0x0e52, 0x0002, + 0x004c, 0x0e68, 0x0e68, 0x0003, 0x0347, 0x034a, 0x034f, 0x0001, + 0x0048, 0x05bc, 0x0003, 0x004c, 0x0e82, 0x0e99, 0x0eb0, 0x0002, + // Entry 34540 - 3457F + 0x0352, 0x0356, 0x0002, 0x004c, 0x0ed0, 0x0ed0, 0x0002, 0x004c, + 0x0eea, 0x0eea, 0x0003, 0x035e, 0x0000, 0x0361, 0x0001, 0x0048, + 0x05bc, 0x0002, 0x0364, 0x0368, 0x0002, 0x004c, 0x0ed0, 0x0ed0, + 0x0002, 0x004c, 0x0eea, 0x0eea, 0x0003, 0x0370, 0x0000, 0x0373, + 0x0001, 0x0048, 0x05bc, 0x0002, 0x0376, 0x037a, 0x0002, 0x004c, + 0x0ed0, 0x0ed0, 0x0002, 0x004c, 0x0eea, 0x0eea, 0x0004, 0x0383, + 0x0386, 0x038b, 0x0396, 0x0001, 0x004c, 0x0f0e, 0x0003, 0x004c, + 0x0f1e, 0x0f35, 0x0f4c, 0x0002, 0x038e, 0x0392, 0x0002, 0x004c, + // Entry 34580 - 345BF + 0x0f69, 0x0f69, 0x0002, 0x004c, 0x0f83, 0x0f83, 0x0001, 0x004c, + 0x0fa7, 0x0004, 0x039e, 0x0000, 0x03a1, 0x03ac, 0x0001, 0x004c, + 0x0f0e, 0x0002, 0x03a4, 0x03a8, 0x0002, 0x004c, 0x0f69, 0x0f69, + 0x0002, 0x004c, 0x0f83, 0x0f83, 0x0001, 0x004c, 0x0fc1, 0x0004, + 0x03b4, 0x0000, 0x03b7, 0x03c2, 0x0001, 0x004c, 0x0f0e, 0x0002, + 0x03ba, 0x03be, 0x0002, 0x004c, 0x0f69, 0x0f69, 0x0002, 0x004c, + 0x0f83, 0x0f83, 0x0001, 0x004c, 0x0fc1, 0x0003, 0x03c9, 0x03cc, + 0x03d3, 0x0001, 0x004c, 0x0fdc, 0x0005, 0x004c, 0x0ff6, 0x1003, + // Entry 345C0 - 345FF + 0x100a, 0x0fe6, 0x1017, 0x0002, 0x03d6, 0x03da, 0x0002, 0x004c, + 0x1027, 0x1027, 0x0002, 0x004c, 0x103b, 0x103b, 0x0003, 0x03e2, + 0x0000, 0x03e5, 0x0001, 0x004c, 0x0fdc, 0x0002, 0x03e8, 0x03ec, + 0x0002, 0x004c, 0x1027, 0x1027, 0x0002, 0x004c, 0x103b, 0x103b, + 0x0003, 0x03f4, 0x0000, 0x03f7, 0x0001, 0x004c, 0x0fdc, 0x0002, + 0x03fa, 0x03fe, 0x0002, 0x004c, 0x1027, 0x1027, 0x0002, 0x004c, + 0x103b, 0x103b, 0x0001, 0x0404, 0x0001, 0x004c, 0x1059, 0x0003, + 0x0000, 0x040b, 0x0410, 0x0003, 0x004c, 0x1079, 0x1093, 0x10ad, + // Entry 34600 - 3463F + 0x0002, 0x0413, 0x0417, 0x0002, 0x004c, 0x10ed, 0x10d0, 0x0002, + 0x004c, 0x1139, 0x1113, 0x0003, 0x0000, 0x041f, 0x0424, 0x0003, + 0x004c, 0x1079, 0x1093, 0x10ad, 0x0002, 0x0427, 0x042b, 0x0002, + 0x004c, 0x10ed, 0x10ed, 0x0002, 0x004c, 0x1139, 0x1139, 0x0003, + 0x0000, 0x0433, 0x0438, 0x0003, 0x004c, 0x1079, 0x1093, 0x10ad, + 0x0002, 0x043b, 0x043f, 0x0002, 0x004c, 0x10ed, 0x10ed, 0x0002, + 0x004c, 0x1139, 0x1139, 0x0003, 0x0000, 0x0447, 0x044c, 0x0003, + 0x004c, 0x1169, 0x1183, 0x119d, 0x0002, 0x044f, 0x0453, 0x0002, + // Entry 34640 - 3467F + 0x004c, 0x11e6, 0x11c0, 0x0002, 0x004c, 0x11e6, 0x11e6, 0x0003, + 0x0000, 0x045b, 0x0460, 0x0003, 0x004c, 0x1169, 0x1183, 0x119d, + 0x0002, 0x0463, 0x0467, 0x0002, 0x004c, 0x11e6, 0x11e6, 0x0002, + 0x004c, 0x120b, 0x120b, 0x0003, 0x0000, 0x046f, 0x0474, 0x0003, + 0x004c, 0x1169, 0x1183, 0x119d, 0x0002, 0x0477, 0x047b, 0x0002, + 0x004c, 0x11e6, 0x11e6, 0x0002, 0x004c, 0x120b, 0x120b, 0x0003, + 0x0000, 0x0483, 0x0488, 0x0003, 0x004c, 0x123a, 0x1257, 0x1274, + 0x0002, 0x048b, 0x048f, 0x0002, 0x004c, 0x12b9, 0x129a, 0x0002, + // Entry 34680 - 346BF + 0x004c, 0x130b, 0x12e2, 0x0003, 0x0000, 0x0497, 0x049c, 0x0003, + 0x004c, 0x123a, 0x1257, 0x1274, 0x0002, 0x049f, 0x04a3, 0x0002, + 0x004c, 0x12b9, 0x12b9, 0x0002, 0x004c, 0x1335, 0x130b, 0x0003, + 0x0000, 0x04ab, 0x04b0, 0x0003, 0x004c, 0x123a, 0x1257, 0x1274, + 0x0002, 0x04b3, 0x04b7, 0x0002, 0x004c, 0x12b9, 0x12b9, 0x0002, + 0x004c, 0x1335, 0x1335, 0x0003, 0x0000, 0x04bf, 0x04c4, 0x0003, + 0x004c, 0x1368, 0x1382, 0x139c, 0x0002, 0x04c7, 0x04cb, 0x0002, + 0x004c, 0x13dc, 0x13bf, 0x0002, 0x004c, 0x142e, 0x1408, 0x0003, + // Entry 346C0 - 346FF + 0x0000, 0x04d3, 0x04d8, 0x0003, 0x004c, 0x1368, 0x1382, 0x139c, + 0x0002, 0x04db, 0x04df, 0x0002, 0x004c, 0x1483, 0x145d, 0x0002, + 0x004c, 0x142e, 0x142e, 0x0003, 0x0000, 0x04e7, 0x04ec, 0x0003, + 0x004c, 0x1368, 0x1382, 0x139c, 0x0002, 0x04ef, 0x04f3, 0x0002, + 0x004c, 0x1483, 0x1483, 0x0002, 0x004c, 0x142e, 0x142e, 0x0003, + 0x0000, 0x04fb, 0x0500, 0x0003, 0x004c, 0x14a8, 0x14c5, 0x14e2, + 0x0002, 0x0503, 0x0507, 0x0002, 0x004c, 0x1508, 0x1508, 0x0002, + 0x004c, 0x1559, 0x1530, 0x0003, 0x0000, 0x050f, 0x0514, 0x0003, + // Entry 34700 - 3473F + 0x004c, 0x14a8, 0x14c5, 0x14e2, 0x0002, 0x0517, 0x051b, 0x0002, + 0x004c, 0x1508, 0x1508, 0x0002, 0x004c, 0x1559, 0x1559, 0x0003, + 0x0000, 0x0523, 0x0528, 0x0003, 0x004c, 0x14a8, 0x14c5, 0x14e2, + 0x0002, 0x052b, 0x052f, 0x0002, 0x004c, 0x1508, 0x1508, 0x0002, + 0x004c, 0x1559, 0x1559, 0x0003, 0x0000, 0x0537, 0x053c, 0x0003, + 0x004c, 0x158b, 0x15ab, 0x15cb, 0x0002, 0x053f, 0x0543, 0x0002, + 0x004c, 0x1616, 0x15f4, 0x0002, 0x004c, 0x166d, 0x1641, 0x0003, + 0x0000, 0x054b, 0x0550, 0x0003, 0x004c, 0x158b, 0x15ab, 0x15cb, + // Entry 34740 - 3477F + 0x0002, 0x0553, 0x0557, 0x0002, 0x004c, 0x1616, 0x1616, 0x0002, + 0x004c, 0x166d, 0x166d, 0x0003, 0x0000, 0x055f, 0x0564, 0x0003, + 0x004c, 0x158b, 0x15ab, 0x15cb, 0x0002, 0x0567, 0x056b, 0x0002, + 0x004c, 0x1616, 0x1616, 0x0002, 0x004c, 0x166d, 0x166d, 0x0003, + 0x0000, 0x0573, 0x0578, 0x0003, 0x004c, 0x16a2, 0x16bc, 0x16d6, + 0x0002, 0x057b, 0x057f, 0x0002, 0x004c, 0x1715, 0x16f9, 0x0002, + 0x004c, 0x1760, 0x173a, 0x0003, 0x0000, 0x0587, 0x058c, 0x0003, + 0x004c, 0x16a2, 0x16bc, 0x16d6, 0x0002, 0x058f, 0x0593, 0x0002, + // Entry 34780 - 347BF + 0x004c, 0x1715, 0x1715, 0x0002, 0x004c, 0x1760, 0x1760, 0x0003, + 0x0000, 0x059b, 0x05a0, 0x0003, 0x004c, 0x16a2, 0x16bc, 0x16d6, + 0x0002, 0x05a3, 0x05a7, 0x0002, 0x004c, 0x1715, 0x1715, 0x0002, + 0x004c, 0x1760, 0x1760, 0x0001, 0x05ad, 0x0001, 0x004c, 0x178f, + 0x0003, 0x05b4, 0x05b7, 0x05bb, 0x0001, 0x004c, 0x17c3, 0x0002, + 0x004c, 0xffff, 0x17d3, 0x0002, 0x05be, 0x05c2, 0x0002, 0x004c, + 0x17ea, 0x17ea, 0x0002, 0x004c, 0x1804, 0x1804, 0x0003, 0x05ca, + 0x0000, 0x05cd, 0x0001, 0x004c, 0x17c3, 0x0002, 0x05d0, 0x05d4, + // Entry 347C0 - 347FF + 0x0002, 0x004c, 0x17ea, 0x17ea, 0x0002, 0x004c, 0x1804, 0x1804, + 0x0003, 0x05dc, 0x0000, 0x05df, 0x0001, 0x004c, 0x17c3, 0x0002, + 0x05e2, 0x05e6, 0x0002, 0x004c, 0x17ea, 0x17ea, 0x0002, 0x004c, + 0x1804, 0x1804, 0x0003, 0x05ee, 0x05f1, 0x05f5, 0x0001, 0x004c, + 0x1828, 0x0002, 0x004c, 0xffff, 0x1838, 0x0002, 0x05f8, 0x05fc, + 0x0002, 0x004c, 0x1858, 0x1858, 0x0002, 0x004c, 0x1872, 0x1872, + 0x0003, 0x0604, 0x0000, 0x0607, 0x0001, 0x004c, 0x1828, 0x0002, + 0x060a, 0x060e, 0x0002, 0x004c, 0x1858, 0x1858, 0x0002, 0x004c, + // Entry 34800 - 3483F + 0x1872, 0x1872, 0x0003, 0x0616, 0x0000, 0x0619, 0x0001, 0x004c, + 0x1828, 0x0002, 0x061c, 0x0620, 0x0002, 0x004c, 0x1858, 0x1858, + 0x0002, 0x004c, 0x1872, 0x1872, 0x0003, 0x0628, 0x062b, 0x062f, + 0x0001, 0x004c, 0x1896, 0x0002, 0x002d, 0xffff, 0x0ccc, 0x0002, + 0x0632, 0x0636, 0x0002, 0x004c, 0x18ac, 0x18ac, 0x0002, 0x004c, + 0x18cc, 0x18cc, 0x0003, 0x063e, 0x0000, 0x0641, 0x0001, 0x004c, + 0x1896, 0x0002, 0x0644, 0x0648, 0x0002, 0x004c, 0x18ac, 0x18ac, + 0x0002, 0x004c, 0x18cc, 0x18cc, 0x0003, 0x0650, 0x0000, 0x0653, + // Entry 34840 - 3487F + 0x0001, 0x004c, 0x1896, 0x0002, 0x0656, 0x065a, 0x0002, 0x004c, + 0x18ac, 0x18ac, 0x0002, 0x004c, 0x18cc, 0x18cc, 0x0001, 0x0660, + 0x0001, 0x002d, 0x0d49, 0x0004, 0x0668, 0x066d, 0x0672, 0x0681, + 0x0003, 0x0000, 0x1dc7, 0x3839, 0x38fe, 0x0003, 0x002d, 0x0d69, + 0x502a, 0x5035, 0x0002, 0x0000, 0x0675, 0x0003, 0x0000, 0x067c, + 0x0679, 0x0001, 0x004c, 0x18f6, 0x0003, 0x004c, 0xffff, 0x1926, + 0x196b, 0x0002, 0x0000, 0x0684, 0x0003, 0x071e, 0x07b4, 0x0688, + 0x0094, 0x004c, 0x1992, 0x19be, 0x19fa, 0x1a2d, 0x1a93, 0x1b4e, + // Entry 34880 - 348BF + 0x1bc8, 0x1c54, 0x1cd7, 0x1d48, 0x1dc2, 0xffff, 0x1e42, 0x1ea7, + 0x1f18, 0x1fdb, 0x20b1, 0x2158, 0x220c, 0x2314, 0x2429, 0x2503, + 0x25c4, 0x265c, 0x26f4, 0x2772, 0x278f, 0x27db, 0x285f, 0x28bf, + 0x2939, 0x2983, 0x29e8, 0x2a5c, 0x2ac4, 0x2b42, 0x2b72, 0x2bc5, + 0x2c70, 0x2d11, 0x2d71, 0x2d8b, 0x2dcb, 0x2e1f, 0x2e90, 0x2ef2, + 0x2fd8, 0x3076, 0x30ec, 0x31b3, 0x326e, 0x32ce, 0x3301, 0x335a, + 0x3383, 0x33cc, 0x343e, 0x346e, 0x34e3, 0x35f0, 0x36b8, 0x36dc, + 0x3726, 0x37b1, 0x382b, 0x3891, 0x38bb, 0x38eb, 0x3914, 0x395c, + // Entry 348C0 - 348FF + 0x399b, 0x39f7, 0x3a6e, 0x3b0f, 0x3b7d, 0xffff, 0x3bcb, 0x3c04, + 0x3c60, 0x3cc0, 0x3d0c, 0x3d9c, 0x3dc8, 0x3e10, 0x3e72, 0x3ec2, + 0x3f34, 0x3f54, 0x3f7a, 0x3f9d, 0x3fe4, 0x4050, 0x40b0, 0x41a1, + 0x4260, 0x42fa, 0x4360, 0x4383, 0x439d, 0x43f0, 0x44c0, 0x4582, + 0x461b, 0x4632, 0x46a8, 0x4798, 0x484b, 0x48e0, 0x4964, 0x497e, + 0x49d5, 0x4a64, 0x4ae7, 0x4b5f, 0x4be2, 0x4ca8, 0x4cc8, 0x4ce5, + 0x4d08, 0x4d2b, 0x4d68, 0xffff, 0x4df4, 0x4e42, 0x4e6b, 0x4e9b, + 0x4ec8, 0x4efb, 0x4f1e, 0x4f3b, 0x4f75, 0x4fc9, 0x4ff2, 0x502c, + // Entry 34900 - 3493F + 0x5092, 0x50de, 0x5187, 0x51c4, 0x5265, 0x5315, 0x5387, 0x53e5, + 0x54a7, 0x5531, 0x5551, 0x5572, 0x55c6, 0x566a, 0x0094, 0x004c, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1a60, 0x1b2b, 0x1bae, 0x1c2e, + 0x1cba, 0x1d2b, 0x1d9c, 0xffff, 0x1e28, 0x1e90, 0x1eef, 0x1f9c, + 0x208b, 0x212f, 0x21c4, 0x22b6, 0x23ea, 0x24c1, 0x25a1, 0x263c, + 0x26ce, 0xffff, 0xffff, 0x27b2, 0xffff, 0x289b, 0xffff, 0x2969, + 0x29d1, 0x2a48, 0x2a9e, 0xffff, 0xffff, 0x2b99, 0x2c4f, 0x2cee, + 0xffff, 0xffff, 0xffff, 0x2df8, 0xffff, 0x2eb3, 0x2fa2, 0xffff, + // Entry 34940 - 3497F + 0x30b3, 0x317a, 0x3257, 0xffff, 0xffff, 0xffff, 0xffff, 0x33ac, + 0xffff, 0xffff, 0x349b, 0x35a5, 0xffff, 0xffff, 0x36f9, 0x379a, + 0x3811, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x39dd, + 0x3a45, 0x3af2, 0x3b63, 0xffff, 0xffff, 0xffff, 0x3c3d, 0xffff, + 0x3cdd, 0xffff, 0xffff, 0x3dec, 0xffff, 0x3ea2, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3fc7, 0xffff, 0x406a, 0x4162, 0x4239, 0x42e0, + 0xffff, 0xffff, 0xffff, 0x43ba, 0x448e, 0x453e, 0xffff, 0xffff, + 0x4662, 0x4766, 0x482e, 0x48b7, 0xffff, 0xffff, 0x49b2, 0x4a4d, + // Entry 34980 - 349BF + 0x4ac4, 0xffff, 0x4b8c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x4d48, 0xffff, 0x4dda, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4f58, 0xffff, 0xffff, 0x5012, 0xffff, 0x50a9, + 0xffff, 0x51a4, 0x5236, 0x52f5, 0xffff, 0x53b3, 0x547b, 0xffff, + 0xffff, 0xffff, 0x55a6, 0x5638, 0x0094, 0x004c, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1ad3, 0x1b7e, 0x1bef, 0x1c87, 0x1d01, 0x1d72, + 0x1df5, 0xffff, 0x1e69, 0x1ecb, 0x1f4e, 0x2027, 0x20e4, 0x218e, + 0x2261, 0x237f, 0x2475, 0x2552, 0x25f4, 0x2689, 0x2727, 0xffff, + // Entry 349C0 - 349FF + 0xffff, 0x2811, 0xffff, 0x28f0, 0xffff, 0x29aa, 0x2a0c, 0x2a7d, + 0x2af7, 0xffff, 0xffff, 0x2bfe, 0x2c9e, 0x2d41, 0xffff, 0xffff, + 0xffff, 0x2e53, 0xffff, 0x2f3e, 0x301b, 0xffff, 0x3132, 0x31f9, + 0x3292, 0xffff, 0xffff, 0xffff, 0xffff, 0x33f9, 0xffff, 0xffff, + 0x3538, 0x3648, 0xffff, 0xffff, 0x3760, 0x37d5, 0x3852, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a1e, 0x3aa4, 0x3b39, + 0x3ba4, 0xffff, 0xffff, 0xffff, 0x3c90, 0xffff, 0x3d48, 0xffff, + 0xffff, 0x3e41, 0xffff, 0x3eef, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 34A00 - 34A3F + 0x400e, 0xffff, 0x4109, 0x41ed, 0x4294, 0x4321, 0xffff, 0xffff, + 0xffff, 0x4433, 0x44ff, 0x45d0, 0xffff, 0xffff, 0x46fb, 0x47d7, + 0x4875, 0x4916, 0xffff, 0xffff, 0x4a05, 0x4a88, 0x4b17, 0xffff, + 0x4c45, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4d95, 0xffff, + 0x4e1b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x4f9f, 0xffff, 0xffff, 0x5053, 0xffff, 0x5120, 0xffff, 0x51f1, + 0x52a1, 0x5342, 0xffff, 0x5424, 0x54e0, 0xffff, 0xffff, 0xffff, + 0x55f3, 0x56a9, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, + // Entry 34A40 - 34A7F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0002, 0x0453, 0x0001, + 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, + 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, + 0x0000, 0x0000, 0x0031, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 34A80 - 34ABF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, + 0x0004, 0x07c7, 0x0be1, 0x0012, 0x0017, 0x0038, 0x013e, 0x0000, + 0x01c8, 0x0000, 0x025e, 0x0289, 0x0494, 0x051e, 0x0590, 0x0000, + // Entry 34AC0 - 34AFF + 0x0000, 0x0000, 0x0000, 0x0616, 0x0733, 0x07a5, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, + 0x0022, 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, 0x0004, 0x0035, + 0x002f, 0x002c, 0x0032, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x000a, + 0x0043, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, 0x0000, 0x012d, + 0x007a, 0x008d, 0x0002, 0x0046, 0x0068, 0x0003, 0x004a, 0x0000, + 0x0059, 0x000d, 0x004d, 0xffff, 0x0000, 0x0006, 0x000c, 0x0012, + // Entry 34B00 - 34B3F + 0x0018, 0x001e, 0x0024, 0x002a, 0x0030, 0x0036, 0x003d, 0x0044, + 0x000d, 0x004d, 0xffff, 0x004b, 0x0053, 0x005b, 0x0063, 0x006b, + 0x0073, 0x007b, 0x0083, 0x008b, 0x0093, 0x009c, 0x00a5, 0x0002, + 0x0000, 0x006b, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x0003, 0x007e, 0x0089, 0x0083, 0x0003, 0x0000, 0xffff, + 0xffff, 0x004e, 0x0004, 0x0000, 0xffff, 0xffff, 0xffff, 0x004e, + 0x0002, 0x0000, 0xffff, 0x0055, 0x0006, 0x0094, 0x0000, 0x0000, + // Entry 34B40 - 34B7F + 0x00a7, 0x00c6, 0x0109, 0x0001, 0x0096, 0x0001, 0x0098, 0x000d, + 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x2a54, + 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x00a9, + 0x0001, 0x00ab, 0x0019, 0x004d, 0xffff, 0x00ae, 0x00c1, 0x00cc, + 0x00de, 0x00e8, 0x00f8, 0x0102, 0x0115, 0x011f, 0x012b, 0x0135, + 0x013a, 0x013f, 0x0153, 0x0166, 0x0171, 0x017c, 0x0187, 0x0194, + 0x01a8, 0x01b6, 0x01c3, 0x01ce, 0x01d3, 0x0001, 0x00c8, 0x0001, + 0x00ca, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, + // Entry 34B80 - 34BBF + 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, + 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, + 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, + 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, + 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, + 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, + 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, + 0x0001, 0x010b, 0x0001, 0x010d, 0x000d, 0x001b, 0xffff, 0x00cd, + // Entry 34BC0 - 34BFF + 0x27d9, 0x27dc, 0x27e3, 0x27ea, 0x27f0, 0x27f6, 0x27fc, 0x2801, + 0x2805, 0x27cb, 0x280a, 0x0004, 0x012a, 0x0124, 0x0121, 0x0127, + 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, 0x0026, 0x0001, 0x0010, + 0x002f, 0x0001, 0x001e, 0x0206, 0x0004, 0x013b, 0x0135, 0x0132, + 0x0138, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0147, 0x0000, + 0x0000, 0x0000, 0x01b2, 0x0000, 0x0000, 0x9006, 0x0002, 0x014a, + 0x017e, 0x0003, 0x014e, 0x015e, 0x016e, 0x000e, 0x0026, 0xffff, + // Entry 34C00 - 34C3F + 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x3510, 0x3517, 0x1312, + 0x3520, 0x1325, 0x132f, 0x1334, 0x133a, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0026, 0xffff, + 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x3510, 0x3517, 0x1312, + 0x3520, 0x1325, 0x132f, 0x1334, 0x133a, 0x0003, 0x0182, 0x0192, + 0x01a2, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, + 0x12fc, 0x3510, 0x3517, 0x1312, 0x3520, 0x1325, 0x132f, 0x1334, + // Entry 34C40 - 34C7F + 0x133a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x0422, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, + 0x12fc, 0x3510, 0x3517, 0x1312, 0x3520, 0x1325, 0x132f, 0x1334, + 0x133a, 0x0003, 0x01bc, 0x01c2, 0x01b6, 0x0001, 0x01b8, 0x0002, + 0x0000, 0x0425, 0x042a, 0x0001, 0x01be, 0x0002, 0x0000, 0x0425, + 0x042a, 0x0001, 0x01c4, 0x0002, 0x0000, 0x0425, 0x042a, 0x0008, + 0x01d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x023c, 0x0000, 0x024d, + // Entry 34C80 - 34CBF + 0x0002, 0x01d4, 0x0208, 0x0003, 0x01d8, 0x01e8, 0x01f8, 0x000e, + 0x0026, 0xffff, 0x133f, 0x134b, 0x3528, 0x352e, 0x135f, 0x1366, + 0x136f, 0x1378, 0x3535, 0x1387, 0x353c, 0x1393, 0x139b, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, + 0x0026, 0xffff, 0x133f, 0x134b, 0x3528, 0x352e, 0x135f, 0x1366, + 0x136f, 0x1378, 0x3535, 0x1387, 0x353c, 0x1393, 0x139b, 0x0003, + 0x020c, 0x021c, 0x022c, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, + // Entry 34CC0 - 34CFF + 0x3528, 0x352e, 0x135f, 0x1366, 0x136f, 0x1378, 0x3535, 0x1387, + 0x353c, 0x1393, 0x139b, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, + 0x3871, 0x3874, 0x0422, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, + 0x3528, 0x352e, 0x135f, 0x1366, 0x136f, 0x1378, 0x3535, 0x1387, + 0x353c, 0x1393, 0x139b, 0x0004, 0x024a, 0x0244, 0x0241, 0x0247, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, 0x025b, 0x0255, 0x0252, + // Entry 34D00 - 34D3F + 0x0258, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0267, 0x0000, 0x0278, 0x0004, 0x0275, + 0x026f, 0x026c, 0x0272, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, + 0x0286, 0x0280, 0x027d, 0x0283, 0x0001, 0x0026, 0x14d4, 0x0001, + 0x0026, 0x14d4, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0292, 0x02f7, 0x034e, 0x0383, 0x043c, 0x0461, 0x0472, + // Entry 34D40 - 34D7F + 0x0483, 0x0002, 0x0295, 0x02c6, 0x0003, 0x0299, 0x02a8, 0x02b7, + 0x000d, 0x0015, 0xffff, 0x000b, 0x23dd, 0x2c0c, 0x2439, 0x2c11, + 0x2383, 0x2388, 0x2442, 0x238d, 0x2447, 0x244c, 0x2c15, 0x000d, + 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, + 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0039, + 0xffff, 0x00e5, 0x00ed, 0x70c9, 0x70cf, 0x70d5, 0x70d9, 0x70de, + 0x70e3, 0x70ec, 0x70f6, 0x70fe, 0x7107, 0x0003, 0x02ca, 0x02d9, + 0x02e8, 0x000d, 0x0015, 0xffff, 0x000b, 0x23dd, 0x2c0c, 0x2439, + // Entry 34D80 - 34DBF + 0x2c1a, 0x2383, 0x2388, 0x2442, 0x238d, 0x2447, 0x244c, 0x2c15, + 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, + 0x0039, 0xffff, 0x00e5, 0x00ed, 0x70c9, 0x70cf, 0x7110, 0x70d9, + 0x70de, 0x70e3, 0x70ec, 0x70f6, 0x70fe, 0x7107, 0x0002, 0x02fa, + 0x0324, 0x0005, 0x0300, 0x0309, 0x031b, 0x0000, 0x0312, 0x0007, + 0x004d, 0x01d8, 0x01db, 0x01de, 0x01e1, 0x01e4, 0x01e7, 0x01ea, + 0x0007, 0x0000, 0x22db, 0x297a, 0x297c, 0x2159, 0x297c, 0x2485, + // Entry 34DC0 - 34DFF + 0x22db, 0x0007, 0x004d, 0x01d8, 0x01db, 0x01de, 0x01e1, 0x01e4, + 0x01e7, 0x01ea, 0x0007, 0x004d, 0x01ed, 0x01f4, 0x01fc, 0x0204, + 0x020d, 0x0217, 0x021f, 0x0005, 0x032a, 0x0333, 0x0345, 0x0000, + 0x033c, 0x0007, 0x004d, 0x01d8, 0x01db, 0x01de, 0x01e1, 0x01e4, + 0x01e7, 0x01ea, 0x0007, 0x0000, 0x22db, 0x297a, 0x297c, 0x2159, + 0x297c, 0x2485, 0x22db, 0x0007, 0x004d, 0x01d8, 0x01db, 0x01de, + 0x01e1, 0x01e4, 0x01e7, 0x01ea, 0x0007, 0x004d, 0x01ed, 0x01f4, + 0x01fc, 0x0204, 0x020d, 0x0217, 0x021f, 0x0002, 0x0351, 0x036a, + // Entry 34E00 - 34E3F + 0x0003, 0x0355, 0x035c, 0x0363, 0x0005, 0x0000, 0xffff, 0x1f17, + 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x004d, 0xffff, 0x0228, 0x0234, 0x0240, + 0x024c, 0x0003, 0x036e, 0x0375, 0x037c, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x004d, 0xffff, 0x0228, 0x0234, + 0x0240, 0x024c, 0x0002, 0x0386, 0x03e1, 0x0003, 0x038a, 0x03a7, + 0x03c4, 0x0007, 0x0395, 0x0398, 0x0392, 0x039b, 0x039e, 0x03a1, + // Entry 34E40 - 34E7F + 0x03a4, 0x0001, 0x004d, 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, + 0x001c, 0x0499, 0x0001, 0x004d, 0x0264, 0x0001, 0x0000, 0x1fa5, + 0x0001, 0x004d, 0x026c, 0x0001, 0x004d, 0x0272, 0x0007, 0x03b2, + 0x03b5, 0x03af, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x0001, 0x004d, + 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, + 0x004d, 0x0278, 0x0001, 0x004d, 0x0286, 0x0001, 0x004d, 0x0293, + 0x0001, 0x004d, 0x029f, 0x0007, 0x03cf, 0x03d2, 0x03cc, 0x03d5, + 0x03d8, 0x03db, 0x03de, 0x0001, 0x004d, 0x0258, 0x0001, 0x001c, + // Entry 34E80 - 34EBF + 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004d, 0x0278, 0x0001, + 0x004d, 0x0286, 0x0001, 0x004d, 0x0293, 0x0001, 0x004d, 0x029f, + 0x0003, 0x03e5, 0x0402, 0x041f, 0x0007, 0x03f0, 0x03f3, 0x03ed, + 0x03f6, 0x03f9, 0x03fc, 0x03ff, 0x0001, 0x004d, 0x0258, 0x0001, + 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004d, 0x0264, + 0x0001, 0x0000, 0x1fa5, 0x0001, 0x004d, 0x026c, 0x0001, 0x004d, + 0x0272, 0x0007, 0x040d, 0x0410, 0x040a, 0x0413, 0x0416, 0x0419, + 0x041c, 0x0001, 0x004d, 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, + // Entry 34EC0 - 34EFF + 0x001c, 0x0499, 0x0001, 0x004d, 0x0264, 0x0001, 0x0000, 0x1fa5, + 0x0001, 0x004d, 0x026c, 0x0001, 0x004d, 0x0272, 0x0007, 0x042a, + 0x042d, 0x0427, 0x0430, 0x0433, 0x0436, 0x0439, 0x0001, 0x004d, + 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, + 0x004d, 0x0264, 0x0001, 0x0000, 0x1fa5, 0x0001, 0x004d, 0x026c, + 0x0001, 0x004d, 0x0272, 0x0003, 0x044b, 0x0456, 0x0440, 0x0002, + 0x0443, 0x0447, 0x0002, 0x0000, 0x1fb5, 0x3902, 0x0002, 0x004d, + 0x02ab, 0x02c5, 0x0002, 0x044e, 0x0452, 0x0002, 0x004c, 0x02ff, + // Entry 34F00 - 34F3F + 0x030d, 0x0002, 0x0001, 0x0005, 0x203d, 0x0002, 0x0459, 0x045d, + 0x0002, 0x0001, 0x0000, 0x000c, 0x0002, 0x0001, 0x0016, 0x2042, + 0x0004, 0x046f, 0x0469, 0x0466, 0x046c, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x001e, + 0x0206, 0x0004, 0x0480, 0x047a, 0x0477, 0x047d, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x0491, 0x048b, 0x0488, 0x048e, 0x0001, + 0x0026, 0x14d4, 0x0001, 0x0026, 0x14d4, 0x0001, 0x0000, 0x03c6, + // Entry 34F40 - 34F7F + 0x0001, 0x0000, 0x03c6, 0x0006, 0x049b, 0x0000, 0x0000, 0x0000, + 0x0506, 0x050d, 0x0002, 0x049e, 0x04d2, 0x0003, 0x04a2, 0x04b2, + 0x04c2, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, 0x3542, 0x3549, + 0x14ff, 0x1506, 0x354f, 0x3554, 0x151f, 0x355a, 0x152a, 0x3560, + 0x1535, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x0422, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, 0x3542, 0x3549, + 0x14ff, 0x1506, 0x354f, 0x3554, 0x151f, 0x355a, 0x152a, 0x3560, + // Entry 34F80 - 34FBF + 0x1535, 0x0003, 0x04d6, 0x04e6, 0x04f6, 0x000e, 0x0026, 0x1512, + 0x14e1, 0x14e9, 0x3542, 0x3549, 0x14ff, 0x1506, 0x354f, 0x3554, + 0x151f, 0x355a, 0x152a, 0x3560, 0x1535, 0x000e, 0x0000, 0x003f, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0026, 0x1512, + 0x14e1, 0x14e9, 0x3542, 0x3549, 0x14ff, 0x1506, 0x354f, 0x3554, + 0x151f, 0x355a, 0x152a, 0x3560, 0x1535, 0x0001, 0x0508, 0x0001, + 0x050a, 0x0001, 0x0000, 0x04ef, 0x0004, 0x051b, 0x0515, 0x0512, + // Entry 34FC0 - 34FFF + 0x0518, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0005, 0x0524, 0x0000, + 0x0000, 0x0000, 0x0589, 0x0002, 0x0527, 0x0558, 0x0003, 0x052b, + 0x053a, 0x0549, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, + 0x24ac, 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, + 0x24eb, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, + // Entry 35000 - 3503F + 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x0003, + 0x055c, 0x056b, 0x057a, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, + 0x24a3, 0x24ac, 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, + 0x24e4, 0x24eb, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, + 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, + 0x0001, 0x058b, 0x0001, 0x058d, 0x0001, 0x0025, 0x05c0, 0x0008, + // Entry 35040 - 3507F + 0x0599, 0x0000, 0x0000, 0x0000, 0x05fe, 0x0605, 0x0000, 0x9006, + 0x0002, 0x059c, 0x05cd, 0x0003, 0x05a0, 0x05af, 0x05be, 0x000d, + 0x0026, 0xffff, 0x153c, 0x3563, 0x3568, 0x356f, 0x1556, 0x155e, + 0x3577, 0x156c, 0x357c, 0x1576, 0x157c, 0x1586, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0026, 0xffff, + 0x1590, 0x3581, 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x3587, 0x15e8, + 0x358d, 0x15fa, 0x1601, 0x1610, 0x0003, 0x05d1, 0x05e0, 0x05ef, + // Entry 35080 - 350BF + 0x000d, 0x0026, 0xffff, 0x153c, 0x3563, 0x3568, 0x356f, 0x1556, + 0x155e, 0x3577, 0x156c, 0x357c, 0x1576, 0x157c, 0x1586, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0026, + 0xffff, 0x1590, 0x3581, 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x3587, + 0x15e8, 0x358d, 0x15fa, 0x1601, 0x1610, 0x0001, 0x0600, 0x0001, + 0x0602, 0x0001, 0x0026, 0x161d, 0x0004, 0x0613, 0x060d, 0x060a, + 0x0610, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, + // Entry 350C0 - 350FF + 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x061f, 0x0711, 0x0000, 0x0722, 0x0001, 0x0621, + 0x0001, 0x0623, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, + 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, + 0x208d, 0x20a7, 0x20bf, 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, + 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, + 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, + 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, + // Entry 35100 - 3513F + 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, + 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, + 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, + 0x0c23, 0x0c37, 0x0c4c, 0x26dd, 0x0c74, 0x26f0, 0x0c9f, 0x0cb3, + 0x0cc8, 0x0cdd, 0x210f, 0x0d07, 0x2707, 0x271a, 0x0d47, 0x0d5b, + 0x0d6f, 0x0d85, 0x272d, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, + 0x0e19, 0x2755, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, + 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, + // Entry 35140 - 3517F + 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x2793, 0x27a6, 0x0fe6, 0x0ffd, + 0x27bc, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, 0x27d3, + 0x10b8, 0x10cf, 0x10e3, 0x2122, 0x1110, 0x1124, 0x1139, 0x114d, + 0x1163, 0x1178, 0x118d, 0x27e9, 0x11ba, 0x27fc, 0x11e7, 0x11fb, + 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x280f, 0x12a0, + 0x12b5, 0x12ca, 0x12df, 0x2823, 0x1308, 0x2839, 0x1335, 0x134b, + 0x2454, 0x1374, 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, + 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, + // Entry 35180 - 351BF + 0x14b3, 0x14c8, 0x284e, 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, + 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, + 0x160d, 0x1621, 0x2861, 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, + 0x16b6, 0x2876, 0x288a, 0x16f7, 0x170c, 0x289d, 0x28b2, 0x174a, + 0x175e, 0x1773, 0x28c9, 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, + 0x1808, 0x181d, 0x1832, 0x28dd, 0x2468, 0x1874, 0x28f0, 0x189e, + 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, + 0x2902, 0x196d, 0x1983, 0x1997, 0x2915, 0x291b, 0x2923, 0x292a, + // Entry 351C0 - 351FF + 0x0004, 0x071f, 0x0719, 0x0716, 0x071c, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, + 0x1181, 0x0004, 0x0730, 0x072a, 0x0727, 0x072d, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0005, 0x0739, 0x0000, 0x0000, 0x0000, 0x079e, + 0x0002, 0x073c, 0x076d, 0x0003, 0x0740, 0x074f, 0x075e, 0x000d, + 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, + 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, 0x0000, + // Entry 35200 - 3523F + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, + 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, + 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, 0x0771, 0x0780, 0x078f, + 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, + 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, + // Entry 35240 - 3527F + 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, + 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0001, 0x07a0, 0x0001, + 0x07a2, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x07ae, 0x07b6, 0x0000, 0x9006, 0x0001, 0x07b0, 0x0001, + 0x07b2, 0x0002, 0x004d, 0x02d8, 0x02e4, 0x0004, 0x07c4, 0x07be, + 0x07bb, 0x07c1, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0040, 0x0808, + 0x0000, 0x0000, 0x080d, 0x0824, 0x083b, 0x0852, 0x0869, 0x0880, + // Entry 35280 - 352BF + 0x0897, 0x08ae, 0x08c5, 0x08dc, 0x08f7, 0x0912, 0x0000, 0x0000, + 0x0000, 0x092d, 0x0946, 0x095f, 0x0000, 0x0000, 0x0000, 0x0978, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x097d, 0x0991, 0x09a5, + 0x09b9, 0x09cd, 0x09e1, 0x09f5, 0x0a09, 0x0a1d, 0x0a31, 0x0a45, + 0x0a59, 0x0a6d, 0x0a81, 0x0a95, 0x0aa9, 0x0abd, 0x0ad1, 0x0ae5, + 0x0af9, 0x0b0d, 0x0000, 0x0b21, 0x0000, 0x0b26, 0x0b3c, 0x0b4e, + 0x0b60, 0x0b76, 0x0b88, 0x0b9a, 0x0bb0, 0x0bc6, 0x0bdc, 0x0001, + 0x080a, 0x0001, 0x004d, 0x02eb, 0x0003, 0x0811, 0x0814, 0x0819, + // Entry 352C0 - 352FF + 0x0001, 0x0001, 0x0044, 0x0003, 0x004d, 0x02f4, 0x02ff, 0x0308, + 0x0002, 0x081c, 0x0820, 0x0002, 0x004d, 0x0315, 0x0315, 0x0002, + 0x004d, 0x0323, 0x0323, 0x0003, 0x0828, 0x082b, 0x0830, 0x0001, + 0x004d, 0x0334, 0x0003, 0x004d, 0x02f4, 0x02ff, 0x0308, 0x0002, + 0x0833, 0x0837, 0x0002, 0x004d, 0x0315, 0x0315, 0x0002, 0x004d, + 0x0323, 0x0323, 0x0003, 0x083f, 0x0842, 0x0847, 0x0001, 0x004d, + 0x0334, 0x0003, 0x004d, 0x02f4, 0x02ff, 0x0308, 0x0002, 0x084a, + 0x084e, 0x0002, 0x004d, 0x0315, 0x0315, 0x0002, 0x004d, 0x0323, + // Entry 35300 - 3533F + 0x0323, 0x0003, 0x0856, 0x0859, 0x085e, 0x0001, 0x0001, 0x0091, + 0x0003, 0x004d, 0x0337, 0x0346, 0x0353, 0x0002, 0x0861, 0x0865, + 0x0002, 0x004d, 0x0376, 0x0364, 0x0002, 0x004d, 0x039e, 0x0389, + 0x0003, 0x086d, 0x0870, 0x0875, 0x0001, 0x0001, 0x0091, 0x0003, + 0x004d, 0x0337, 0x0346, 0x0353, 0x0002, 0x0878, 0x087c, 0x0002, + 0x004d, 0x0376, 0x0364, 0x0002, 0x004d, 0x039e, 0x0389, 0x0003, + 0x0884, 0x0887, 0x088c, 0x0001, 0x0001, 0x0091, 0x0003, 0x004d, + 0x0337, 0x0346, 0x0353, 0x0002, 0x088f, 0x0893, 0x0002, 0x004d, + // Entry 35340 - 3537F + 0x0376, 0x0364, 0x0002, 0x004d, 0x039e, 0x0389, 0x0003, 0x089b, + 0x089e, 0x08a3, 0x0001, 0x0001, 0x011b, 0x0003, 0x004d, 0x03b4, + 0x03c1, 0x03cc, 0x0002, 0x08a6, 0x08aa, 0x0002, 0x004d, 0x03ea, + 0x03db, 0x0002, 0x004d, 0x040d, 0x03fb, 0x0003, 0x08b2, 0x08b5, + 0x08ba, 0x0001, 0x004d, 0x0421, 0x0003, 0x004d, 0x03b4, 0x03c1, + 0x03cc, 0x0002, 0x08bd, 0x08c1, 0x0002, 0x004d, 0x03ea, 0x03db, + 0x0002, 0x004d, 0x040d, 0x03fb, 0x0003, 0x08c9, 0x08cc, 0x08d1, + 0x0001, 0x004d, 0x0421, 0x0003, 0x004d, 0x03b4, 0x03c1, 0x03cc, + // Entry 35380 - 353BF + 0x0002, 0x08d4, 0x08d8, 0x0002, 0x004d, 0x03ea, 0x03db, 0x0002, + 0x004d, 0x040d, 0x03fb, 0x0004, 0x08e1, 0x08e4, 0x08e9, 0x08f4, + 0x0001, 0x0001, 0x019c, 0x0003, 0x004d, 0x0425, 0x0431, 0x043b, + 0x0002, 0x08ec, 0x08f0, 0x0002, 0x004d, 0x0457, 0x0449, 0x0002, + 0x004d, 0x0477, 0x0466, 0x0001, 0x004d, 0x0489, 0x0004, 0x08fc, + 0x08ff, 0x0904, 0x090f, 0x0001, 0x001c, 0x0079, 0x0003, 0x004d, + 0x0425, 0x0431, 0x043b, 0x0002, 0x0907, 0x090b, 0x0002, 0x004d, + 0x0457, 0x0449, 0x0002, 0x004d, 0x0477, 0x0466, 0x0001, 0x004d, + // Entry 353C0 - 353FF + 0x0489, 0x0004, 0x0917, 0x091a, 0x091f, 0x092a, 0x0001, 0x001c, + 0x0079, 0x0003, 0x004d, 0x0425, 0x0431, 0x043b, 0x0002, 0x0922, + 0x0926, 0x0002, 0x004d, 0x0457, 0x0449, 0x0002, 0x004d, 0x0477, + 0x0466, 0x0001, 0x004d, 0x0489, 0x0003, 0x0931, 0x0934, 0x093b, + 0x0001, 0x0001, 0x0230, 0x0005, 0x0026, 0x17ce, 0x17d7, 0x3595, + 0x17c2, 0x359c, 0x0002, 0x093e, 0x0942, 0x0002, 0x004d, 0x04a6, + 0x0499, 0x0002, 0x004d, 0x04c5, 0x04b5, 0x0003, 0x094a, 0x094d, + 0x0954, 0x0001, 0x0001, 0x0230, 0x0005, 0x0026, 0x17ce, 0x17d7, + // Entry 35400 - 3543F + 0x3595, 0x17c2, 0x359c, 0x0002, 0x0957, 0x095b, 0x0002, 0x004d, + 0x04d7, 0x0499, 0x0002, 0x004d, 0x04e4, 0x04b5, 0x0003, 0x0963, + 0x0966, 0x096d, 0x0001, 0x0001, 0x0230, 0x0005, 0x0026, 0x17ce, + 0x17d7, 0x3595, 0x17c2, 0x359c, 0x0002, 0x0970, 0x0974, 0x0002, + 0x004d, 0x04d7, 0x0499, 0x0002, 0x004d, 0x04e4, 0x04b5, 0x0001, + 0x097a, 0x0001, 0x004d, 0x04f4, 0x0003, 0x0000, 0x0981, 0x0986, + 0x0003, 0x004d, 0x0504, 0x0515, 0x0521, 0x0002, 0x0989, 0x098d, + 0x0002, 0x004d, 0x0546, 0x0536, 0x0002, 0x004d, 0x056b, 0x0558, + // Entry 35440 - 3547F + 0x0003, 0x0000, 0x0995, 0x099a, 0x0003, 0x004d, 0x0580, 0x058f, + 0x0599, 0x0002, 0x099d, 0x09a1, 0x0002, 0x004d, 0x05ac, 0x05ac, + 0x0002, 0x004d, 0x05ba, 0x05ba, 0x0003, 0x0000, 0x09a9, 0x09ae, + 0x0003, 0x004d, 0x05cb, 0x05d8, 0x05e0, 0x0002, 0x09b1, 0x09b5, + 0x0002, 0x004d, 0x05f1, 0x05f1, 0x0002, 0x004d, 0x05fd, 0x05fd, + 0x0003, 0x0000, 0x09bd, 0x09c2, 0x0003, 0x004d, 0x060c, 0x061e, + 0x062b, 0x0002, 0x09c5, 0x09c9, 0x0002, 0x004d, 0x0652, 0x0641, + 0x0002, 0x004d, 0x0679, 0x0665, 0x0003, 0x0000, 0x09d1, 0x09d6, + // Entry 35480 - 354BF + 0x0003, 0x004d, 0x068f, 0x069f, 0x06aa, 0x0002, 0x09d9, 0x09dd, + 0x0002, 0x004d, 0x06be, 0x06be, 0x0002, 0x004d, 0x06cd, 0x06cd, + 0x0003, 0x0000, 0x09e5, 0x09ea, 0x0003, 0x004d, 0x06df, 0x06ec, + 0x06f4, 0x0002, 0x09ed, 0x09f1, 0x0002, 0x004d, 0x0705, 0x0705, + 0x0002, 0x004d, 0x0711, 0x0711, 0x0003, 0x0000, 0x09f9, 0x09fe, + 0x0003, 0x004d, 0x0720, 0x0732, 0x073f, 0x0002, 0x0a01, 0x0a05, + 0x0002, 0x004d, 0x0766, 0x0755, 0x0002, 0x004d, 0x078d, 0x0779, + 0x0003, 0x0000, 0x0a0d, 0x0a12, 0x0003, 0x004d, 0x07a3, 0x07b3, + // Entry 354C0 - 354FF + 0x07be, 0x0002, 0x0a15, 0x0a19, 0x0002, 0x004d, 0x07d2, 0x07d2, + 0x0002, 0x004d, 0x07e1, 0x07e1, 0x0003, 0x0000, 0x0a21, 0x0a26, + 0x0003, 0x004d, 0x07f3, 0x0800, 0x0808, 0x0002, 0x0a29, 0x0a2d, + 0x0002, 0x004d, 0x0819, 0x0819, 0x0002, 0x004d, 0x0825, 0x0825, + 0x0003, 0x0000, 0x0a35, 0x0a3a, 0x0003, 0x004d, 0x0834, 0x0847, + 0x0855, 0x0002, 0x0a3d, 0x0a41, 0x0002, 0x004d, 0x087e, 0x086c, + 0x0002, 0x004d, 0x08a7, 0x0892, 0x0003, 0x0000, 0x0a49, 0x0a4e, + 0x0003, 0x004d, 0x08be, 0x08cf, 0x08db, 0x0002, 0x0a51, 0x0a55, + // Entry 35500 - 3553F + 0x0002, 0x004d, 0x08f0, 0x08f0, 0x0002, 0x004d, 0x0900, 0x0900, + 0x0003, 0x0000, 0x0a5d, 0x0a62, 0x0003, 0x004d, 0x0913, 0x0920, + 0x0928, 0x0002, 0x0a65, 0x0a69, 0x0002, 0x004d, 0x0939, 0x0939, + 0x0002, 0x004d, 0x0945, 0x0945, 0x0003, 0x0000, 0x0a71, 0x0a76, + 0x0003, 0x004d, 0x0954, 0x0968, 0x0977, 0x0002, 0x0a79, 0x0a7d, + 0x0002, 0x004d, 0x09a2, 0x098f, 0x0002, 0x004d, 0x09cd, 0x09b7, + 0x0003, 0x0000, 0x0a85, 0x0a8a, 0x0003, 0x004d, 0x09e5, 0x09f7, + 0x0a04, 0x0002, 0x0a8d, 0x0a91, 0x0002, 0x004d, 0x0a1a, 0x0a1a, + // Entry 35540 - 3557F + 0x0002, 0x004d, 0x0a2b, 0x0a2b, 0x0003, 0x0000, 0x0a99, 0x0a9e, + 0x0003, 0x004d, 0x0a3f, 0x0a4c, 0x0a54, 0x0002, 0x0aa1, 0x0aa5, + 0x0002, 0x004d, 0x0a65, 0x0a65, 0x0002, 0x004d, 0x0a71, 0x0a71, + 0x0003, 0x0000, 0x0aad, 0x0ab2, 0x0003, 0x004d, 0x0a80, 0x0a92, + 0x0a9f, 0x0002, 0x0ab5, 0x0ab9, 0x0002, 0x004d, 0x0ac6, 0x0ab5, + 0x0002, 0x004d, 0x0aed, 0x0ad9, 0x0003, 0x0000, 0x0ac1, 0x0ac6, + 0x0003, 0x004d, 0x0b03, 0x0b13, 0x0b1e, 0x0002, 0x0ac9, 0x0acd, + 0x0002, 0x004d, 0x0b32, 0x0b32, 0x0002, 0x004d, 0x0b41, 0x0b41, + // Entry 35580 - 355BF + 0x0003, 0x0000, 0x0ad5, 0x0ada, 0x0003, 0x004d, 0x0b53, 0x0b60, + 0x0b68, 0x0002, 0x0add, 0x0ae1, 0x0002, 0x004d, 0x0b79, 0x0b79, + 0x0002, 0x004d, 0x0b85, 0x0b85, 0x0003, 0x0000, 0x0ae9, 0x0aee, + 0x0003, 0x004d, 0x0b94, 0x0ba7, 0x0bb5, 0x0002, 0x0af1, 0x0af5, + 0x0002, 0x004d, 0x0bde, 0x0bcc, 0x0002, 0x004d, 0x0c07, 0x0bf2, + 0x0003, 0x0000, 0x0afd, 0x0b02, 0x0003, 0x004d, 0x0c1e, 0x0c2f, + 0x0c3b, 0x0002, 0x0b05, 0x0b09, 0x0002, 0x004d, 0x0c50, 0x0c50, + 0x0002, 0x004d, 0x0c60, 0x0c60, 0x0003, 0x0000, 0x0b11, 0x0b16, + // Entry 355C0 - 355FF + 0x0003, 0x004d, 0x0c73, 0x0c80, 0x0c88, 0x0002, 0x0b19, 0x0b1d, + 0x0002, 0x004d, 0x0c99, 0x0c99, 0x0002, 0x004d, 0x0ca5, 0x0ca5, + 0x0001, 0x0b23, 0x0001, 0x004d, 0x0cb4, 0x0003, 0x0b2a, 0x0b2d, + 0x0b31, 0x0001, 0x0001, 0x06f2, 0x0002, 0x004d, 0xffff, 0x0cbc, + 0x0002, 0x0b34, 0x0b38, 0x0002, 0x004d, 0x0ccb, 0x0ccb, 0x0002, + 0x004d, 0x0cd8, 0x0cd8, 0x0003, 0x0b40, 0x0000, 0x0b43, 0x0001, + 0x0001, 0x06f2, 0x0002, 0x0b46, 0x0b4a, 0x0002, 0x004d, 0x0ccb, + 0x0ccb, 0x0002, 0x004d, 0x0cd8, 0x0cd8, 0x0003, 0x0b52, 0x0000, + // Entry 35600 - 3563F + 0x0b55, 0x0001, 0x0001, 0x06f2, 0x0002, 0x0b58, 0x0b5c, 0x0002, + 0x004d, 0x0ccb, 0x0ccb, 0x0002, 0x004d, 0x0cd8, 0x0cd8, 0x0003, + 0x0b64, 0x0b67, 0x0b6b, 0x0001, 0x0001, 0x0720, 0x0002, 0x004d, + 0xffff, 0x0ce8, 0x0002, 0x0b6e, 0x0b72, 0x0002, 0x004d, 0x0d0a, + 0x0cfa, 0x0002, 0x004d, 0x0d2e, 0x0d1b, 0x0003, 0x0b7a, 0x0000, + 0x0b7d, 0x0001, 0x0041, 0x092f, 0x0002, 0x0b80, 0x0b84, 0x0002, + 0x004d, 0x0d42, 0x0d42, 0x0002, 0x004d, 0x0d50, 0x0d50, 0x0003, + 0x0b8c, 0x0000, 0x0b8f, 0x0001, 0x0041, 0x092f, 0x0002, 0x0b92, + // Entry 35640 - 3567F + 0x0b96, 0x0002, 0x004d, 0x0d42, 0x0d42, 0x0002, 0x004d, 0x0d50, + 0x0d50, 0x0003, 0x0b9e, 0x0ba1, 0x0ba5, 0x0001, 0x0025, 0x11c8, + 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, 0x0ba8, 0x0bac, 0x0002, + 0x004d, 0x0d72, 0x0d61, 0x0002, 0x004d, 0x0d98, 0x0d84, 0x0003, + 0x0bb4, 0x0bb7, 0x0bbb, 0x0001, 0x001c, 0x00c0, 0x0002, 0x0015, + 0xffff, 0x0adf, 0x0002, 0x0bbe, 0x0bc2, 0x0002, 0x004d, 0x0dad, + 0x0dad, 0x0002, 0x004d, 0x0dbb, 0x0dbb, 0x0003, 0x0bca, 0x0bcd, + 0x0bd1, 0x0001, 0x0000, 0x2002, 0x0002, 0x0015, 0xffff, 0x0adf, + // Entry 35680 - 356BF + 0x0002, 0x0bd4, 0x0bd8, 0x0002, 0x004d, 0x0dad, 0x0dad, 0x0002, + 0x004d, 0x0dbb, 0x0dbb, 0x0001, 0x0bde, 0x0001, 0x004d, 0x0dcc, + 0x0004, 0x0be6, 0x0beb, 0x0bf0, 0x0c15, 0x0003, 0x0000, 0x1dc7, + 0x3839, 0x38fe, 0x0003, 0x004d, 0x0dd5, 0x0dde, 0x0dec, 0x0002, + 0x0bff, 0x0bf3, 0x0003, 0x0000, 0x0bfa, 0x0bf7, 0x0001, 0x004d, + 0x0dfe, 0x0003, 0x004d, 0xffff, 0x0e19, 0x0e2a, 0x0003, 0x0c03, + 0x0c0f, 0x0c09, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, + 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0028, + // Entry 356C0 - 356FF + 0xffff, 0xffff, 0xffff, 0x0e48, 0x0002, 0x0dfc, 0x0c18, 0x0003, + 0x0c1c, 0x0d5c, 0x0cbc, 0x009e, 0x004d, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0eb8, 0x0f05, 0x0f6f, 0x0fa4, 0x0fd9, 0x100e, 0x1046, + 0x107b, 0x10ad, 0x113d, 0x1178, 0x11b9, 0x1209, 0x1241, 0x1279, + 0x12d2, 0x134c, 0x139f, 0x13f2, 0x143f, 0x1471, 0xffff, 0xffff, + 0x14cc, 0xffff, 0x151e, 0xffff, 0x157e, 0x15b3, 0x15ee, 0x1623, + 0xffff, 0xffff, 0x168e, 0x16d2, 0x171c, 0xffff, 0xffff, 0xffff, + 0x178a, 0xffff, 0x17e0, 0x182d, 0xffff, 0x1893, 0x18da, 0x192a, + // Entry 35700 - 3573F + 0xffff, 0xffff, 0xffff, 0xffff, 0x19c9, 0xffff, 0xffff, 0x1a30, + 0x1a80, 0xffff, 0xffff, 0x1b07, 0x1b5d, 0x1b9b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1c43, 0x1c78, 0x1cb0, 0x1cf4, + 0x1d29, 0xffff, 0xffff, 0x1dba, 0xffff, 0x1e03, 0xffff, 0xffff, + 0x1e73, 0xffff, 0x1f16, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f9a, + 0xffff, 0x1fea, 0x2046, 0x209c, 0x20dd, 0xffff, 0xffff, 0xffff, + 0x213d, 0x2193, 0x21e0, 0xffff, 0xffff, 0x2245, 0x22b8, 0x22f9, + 0x2325, 0xffff, 0xffff, 0x238e, 0x23d5, 0x2410, 0xffff, 0x2463, + // Entry 35740 - 3577F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2555, 0x258d, 0x25bf, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x267a, + 0xffff, 0xffff, 0x26d2, 0xffff, 0x271a, 0xffff, 0x2769, 0x27ad, + 0x27e8, 0xffff, 0x283e, 0x287f, 0xffff, 0xffff, 0xffff, 0x28f1, + 0x2929, 0xffff, 0xffff, 0x0e3a, 0x0f37, 0x10d9, 0x1108, 0xffff, + 0xffff, 0x1ec9, 0x24fd, 0x009e, 0x004d, 0x0e66, 0x0e75, 0x0e8e, + 0x0ea3, 0x0ecd, 0x0f11, 0x0f7c, 0x0fb1, 0x0fe6, 0x101c, 0x1053, + 0x1087, 0x10b7, 0x114c, 0x1189, 0x11cf, 0x1217, 0x124f, 0x1292, + // Entry 35780 - 357BF + 0x12f6, 0x1363, 0x13b6, 0x1407, 0x144b, 0x1480, 0x14ac, 0x14bb, + 0x14de, 0x1510, 0x1531, 0x1570, 0x158b, 0x15c2, 0x15fb, 0x1634, + 0x1664, 0x167b, 0x16a0, 0x16e4, 0x172a, 0x1754, 0x175f, 0x1777, + 0x179c, 0x17ce, 0x17f5, 0x1840, 0x1874, 0x18a6, 0x18f0, 0x1938, + 0x1962, 0x1976, 0x199d, 0x19b4, 0x19d9, 0x1a07, 0x1a1c, 0x1a46, + 0x1a96, 0x1ae6, 0x1af9, 0x1b1f, 0x1b6d, 0x1ba5, 0x1bc7, 0x1bd4, + 0x1be9, 0x1bfa, 0x1c15, 0x1c2c, 0x1c50, 0x1c86, 0x1cc2, 0x1d01, + 0x1d48, 0x1d94, 0x1da7, 0x1dc9, 0x1df5, 0x1e14, 0x1e44, 0x1e60, + // Entry 357C0 - 357FF + 0x1e8b, 0x1efe, 0x1f23, 0x1f4b, 0x1f5c, 0x1f6d, 0x1f84, 0x1fac, + 0x1fde, 0x2004, 0x205e, 0x20ad, 0x20e9, 0x210f, 0x211f, 0x212f, + 0x2155, 0x21a8, 0x21f2, 0x2224, 0x2230, 0x225e, 0x22c9, 0x2303, + 0x2336, 0x2366, 0x2373, 0x23a1, 0x23e4, 0x2420, 0x244e, 0x2481, + 0x24cb, 0x24e1, 0x24ee, 0x2538, 0x2548, 0x2563, 0x2599, 0x25ce, + 0x25fa, 0x2609, 0x2623, 0x2639, 0x264e, 0x265e, 0x2669, 0x2686, + 0x26ac, 0x26bc, 0x26e1, 0x270d, 0x272a, 0x2758, 0x277b, 0x27bc, + 0x27fa, 0x282c, 0x284f, 0x288e, 0x28ba, 0x28c6, 0x28d9, 0x28ff, + // Entry 35800 - 3583F + 0x293e, 0x1ad0, 0x229e, 0x0e44, 0x0f45, 0x10e4, 0x1115, 0x1565, + 0x1e55, 0x1ed6, 0x250c, 0x009e, 0x004d, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0eeb, 0x0f26, 0x0f92, 0x0fc7, 0x0ffc, 0x1033, 0x1069, + 0x109c, 0x10ca, 0x1164, 0x11a3, 0x11ee, 0x122e, 0x1266, 0x12b4, + 0x1323, 0x1383, 0x13d6, 0x1425, 0x1460, 0x1498, 0xffff, 0xffff, + 0x14f9, 0xffff, 0x154d, 0xffff, 0x15a1, 0x15da, 0x1611, 0x164e, + 0xffff, 0xffff, 0x16bb, 0x16ff, 0x1741, 0xffff, 0xffff, 0xffff, + 0x17b7, 0xffff, 0x1813, 0x185c, 0xffff, 0x18c2, 0x190f, 0x194f, + // Entry 35840 - 3587F + 0xffff, 0xffff, 0xffff, 0xffff, 0x19f2, 0xffff, 0xffff, 0x1a65, + 0x1ab5, 0xffff, 0xffff, 0x1b40, 0x1b86, 0x1bb8, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1c66, 0x1c9d, 0x1cdd, 0x1d17, + 0x1d70, 0xffff, 0xffff, 0x1de1, 0xffff, 0x1e2e, 0xffff, 0xffff, + 0x1eac, 0xffff, 0x1f39, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fc7, + 0xffff, 0x2027, 0x207f, 0x20c7, 0x20fe, 0xffff, 0xffff, 0xffff, + 0x2176, 0x21c6, 0x220d, 0xffff, 0xffff, 0x2280, 0x22e3, 0x2316, + 0x2350, 0xffff, 0xffff, 0x23bd, 0x23fc, 0x2439, 0xffff, 0x24a8, + // Entry 35880 - 358BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x257a, 0x25ae, 0x25e6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x269b, + 0xffff, 0xffff, 0x26f9, 0xffff, 0x2743, 0xffff, 0x2796, 0x27d4, + 0x2815, 0xffff, 0x2869, 0x28a6, 0xffff, 0xffff, 0xffff, 0x2916, + 0x295c, 0xffff, 0xffff, 0x0e57, 0x0f5c, 0x10f8, 0x112b, 0xffff, + 0xffff, 0x1eec, 0x2524, 0x0003, 0x0e00, 0x0e66, 0x0e33, 0x0031, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 358C0 - 358FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 35900 - 3593F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 35940 - 3597F + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0019, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0014, 0x0000, 0x0000, 0x0001, 0x0016, 0x0001, 0x001e, + 0x0218, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0022, + 0x0000, 0x0000, 0x0001, 0x0024, 0x0001, 0x001c, 0x04c7, 0x0003, + 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, + 0x0001, 0x000b, 0x0003, 0x0000, 0x0000, 0x000f, 0x0080, 0x004e, + // Entry 35980 - 359BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 359C0 - 359FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, + // Entry 35A00 - 35A3F + 0x0002, 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, + 0x0053, 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, + 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x004e, 0xffff, + 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, + // Entry 35A40 - 35A7F + 0x0024, 0x0028, 0x002d, 0x0032, 0x000d, 0x004e, 0xffff, 0x0037, + 0x0047, 0x0054, 0x0061, 0x006d, 0x007a, 0x0088, 0x009b, 0x00a9, + 0x00b9, 0x00c4, 0x00d6, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, + 0x0000, 0x0063, 0x0007, 0x0021, 0x00d9, 0x00e0, 0x00e7, 0x00eb, + 0x00ef, 0x36ef, 0x36f3, 0x0007, 0x0021, 0x00fd, 0x36f7, 0x3701, + 0x3717, 0x372e, 0x3744, 0x3757, 0x0002, 0x0000, 0x006f, 0x0007, + 0x0000, 0x2002, 0x1f9a, 0x2002, 0x2002, 0x2002, 0x1f9a, 0x2002, + 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x001c, + // Entry 35A80 - 35ABF + 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x004e, 0xffff, + 0x00e0, 0x00ed, 0x00fa, 0x0107, 0x0001, 0x008e, 0x0003, 0x0092, + 0x0000, 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x004e, 0x0113, + 0x0001, 0x004e, 0x0119, 0x0002, 0x009e, 0x00a1, 0x0001, 0x004e, + 0x0113, 0x0001, 0x004e, 0x0119, 0x0003, 0x00ae, 0x0000, 0x00a8, + 0x0001, 0x00aa, 0x0002, 0x004e, 0x011f, 0x012c, 0x0001, 0x00b0, + 0x0002, 0x004e, 0x0138, 0x013b, 0x0004, 0x00c2, 0x00bc, 0x00b9, + 0x00bf, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, + // Entry 35AC0 - 35AFF + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00d3, 0x00cd, + 0x00ca, 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, + 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 35B00 - 35B3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, + 0x0140, 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, + 0x0119, 0x0001, 0x004e, 0x013e, 0x0001, 0x011e, 0x0001, 0x004e, + 0x014c, 0x0001, 0x0123, 0x0001, 0x004e, 0x0151, 0x0001, 0x0128, + 0x0001, 0x0021, 0x0235, 0x0002, 0x012e, 0x0131, 0x0001, 0x004e, + 0x0158, 0x0003, 0x004e, 0x015d, 0x0165, 0x016a, 0x0001, 0x0138, + 0x0001, 0x004e, 0x0173, 0x0001, 0x013d, 0x0001, 0x004e, 0x018d, + // Entry 35B40 - 35B7F + 0x0001, 0x0142, 0x0001, 0x004e, 0x0193, 0x0001, 0x0147, 0x0001, + 0x004e, 0x019b, 0x0001, 0x014c, 0x0001, 0x004e, 0x01a2, 0x0003, + 0x0004, 0x01cf, 0x02f4, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, + 0x001b, 0x0021, 0x0001, 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, + 0x0001, 0x0015, 0x0000, 0x0001, 0x0008, 0x0627, 0x0004, 0x0035, + 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 35B80 - 35BBF + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, 0x0198, 0x01a9, 0x01be, + 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, + 0x0015, 0xffff, 0x000b, 0x23dd, 0x2c1e, 0x2439, 0x2c23, 0x2c27, + 0x2c2c, 0x2442, 0x238d, 0x2447, 0x244c, 0x2397, 0x000d, 0x0000, + 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, + 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x000d, 0xffff, + 0x0089, 0x0090, 0x3361, 0x3366, 0x336c, 0x3370, 0x3375, 0x3201, + // Entry 35BC0 - 35BFF + 0x337a, 0x3384, 0x338c, 0x32ee, 0x0003, 0x0079, 0x0088, 0x0097, + 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x32f7, 0x32c0, 0x336c, + 0x3230, 0x3234, 0x3238, 0x32fb, 0x32ff, 0x3303, 0x3307, 0x000d, + 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, + 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x000d, + 0xffff, 0x0089, 0x0090, 0x3361, 0x3366, 0x336c, 0x3370, 0x3375, + 0x3201, 0x337a, 0x3384, 0x338c, 0x32ee, 0x0002, 0x00a9, 0x00d3, + 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x004b, + // Entry 35C00 - 35C3F + 0x07ea, 0x27b9, 0x27be, 0x07f7, 0x07fb, 0x07ff, 0x27c2, 0x0007, + 0x0000, 0x298e, 0x297a, 0x38ae, 0x2990, 0x38ae, 0x298c, 0x2994, + 0x0007, 0x004b, 0x07ea, 0x27b9, 0x27be, 0x07f7, 0x07fb, 0x07ff, + 0x27c2, 0x0007, 0x0015, 0x0086, 0x2c31, 0x2c39, 0x009d, 0x00a4, + 0x00ac, 0x2c40, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, + 0x0007, 0x0015, 0x00bb, 0x2c48, 0x2c4d, 0x00c8, 0x00cc, 0x00d0, + 0x2c51, 0x0007, 0x0000, 0x298e, 0x297a, 0x38ae, 0x2990, 0x38ae, + 0x298c, 0x2994, 0x0007, 0x004b, 0x07ea, 0x27b9, 0x27be, 0x07f7, + // Entry 35C40 - 35C7F + 0x07fb, 0x07ff, 0x27c2, 0x0007, 0x0015, 0x0086, 0x2c31, 0x2c39, + 0x009d, 0x00a4, 0x00ac, 0x2c40, 0x0002, 0x0100, 0x0119, 0x0003, + 0x0104, 0x010b, 0x0112, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, + 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, + 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0000, 0xffff, 0x1f17, + 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, + // Entry 35C80 - 35CBF + 0x011a, 0x0002, 0x0135, 0x0154, 0x0003, 0x0139, 0x0142, 0x014b, + 0x0002, 0x013c, 0x013f, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, + 0x01b5, 0x0002, 0x0145, 0x0148, 0x0001, 0x004e, 0x01b0, 0x0001, + 0x004e, 0x01b5, 0x0002, 0x014e, 0x0151, 0x0001, 0x0015, 0x0174, + 0x0001, 0x004b, 0x0871, 0x0003, 0x0158, 0x0161, 0x016a, 0x0002, + 0x015b, 0x015e, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, 0x01b5, + 0x0002, 0x0164, 0x0167, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, + 0x01b5, 0x0002, 0x016d, 0x0170, 0x0001, 0x004e, 0x01b0, 0x0001, + // Entry 35CC0 - 35CFF + 0x004e, 0x01b5, 0x0003, 0x0182, 0x018d, 0x0177, 0x0002, 0x017a, + 0x017e, 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01d7, + 0x01de, 0x0002, 0x0185, 0x0189, 0x0002, 0x0015, 0x0194, 0x01b8, + 0x0002, 0x0015, 0x01d7, 0x01de, 0x0002, 0x0190, 0x0194, 0x0002, + 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01e7, 0x01ef, 0x0004, + 0x01a6, 0x01a0, 0x019d, 0x01a3, 0x0001, 0x0013, 0x06a2, 0x0001, + 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, 0x0001, 0x0016, 0x0470, + 0x0004, 0x01ba, 0x01b2, 0x01ae, 0x01b6, 0x0002, 0x004e, 0x01ba, + // Entry 35D00 - 35D3F + 0x01ce, 0x0002, 0x0000, 0x0532, 0x38be, 0x0002, 0x0000, 0x053d, + 0x38c9, 0x0002, 0x0000, 0x0546, 0x38d2, 0x0004, 0x01cc, 0x01c6, + 0x01c3, 0x01c9, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0015, 0x0238, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x0210, + 0x0000, 0x0000, 0x0215, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x022c, 0x0000, 0x0000, 0x0243, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x025e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0277, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x027c, 0x0000, 0x0000, + // Entry 35D40 - 35D7F + 0x0284, 0x0000, 0x0000, 0x028c, 0x0000, 0x0000, 0x0294, 0x0000, + 0x0000, 0x029c, 0x0000, 0x0000, 0x02a4, 0x0000, 0x0000, 0x02ac, + 0x0000, 0x0000, 0x0000, 0x02b4, 0x0000, 0x02b9, 0x0000, 0x0000, + 0x02cb, 0x0000, 0x0000, 0x02dd, 0x0000, 0x0000, 0x02ef, 0x0001, + 0x0212, 0x0001, 0x0015, 0x0246, 0x0003, 0x0219, 0x021c, 0x0221, + 0x0001, 0x0015, 0x024b, 0x0003, 0x004b, 0x0994, 0x27c6, 0x09a1, + 0x0002, 0x0224, 0x0228, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, + 0x0015, 0x0276, 0x0276, 0x0003, 0x0230, 0x0233, 0x0238, 0x0001, + // Entry 35D80 - 35DBF + 0x004e, 0x01e2, 0x0003, 0x004e, 0x01e9, 0x01f8, 0x0205, 0x0002, + 0x023b, 0x023f, 0x0002, 0x0015, 0x0387, 0x0379, 0x0002, 0x0015, + 0x03ac, 0x0397, 0x0004, 0x0248, 0x024b, 0x0250, 0x025b, 0x0001, + 0x004e, 0x0212, 0x0003, 0x004b, 0x0a9b, 0x27d0, 0x0ab2, 0x0002, + 0x0253, 0x0257, 0x0002, 0x004b, 0x0ac7, 0x0abc, 0x0002, 0x004b, + 0x0ae5, 0x0ad3, 0x0001, 0x004e, 0x0217, 0x0003, 0x0262, 0x0265, + 0x026c, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, 0x04a0, + 0x2c55, 0x048e, 0x2c5e, 0x0002, 0x026f, 0x0273, 0x0002, 0x004b, + // Entry 35DC0 - 35DFF + 0x0b23, 0x0b23, 0x0002, 0x004b, 0x0b30, 0x0b30, 0x0001, 0x0279, + 0x0001, 0x004e, 0x0224, 0x0002, 0x0000, 0x027f, 0x0003, 0x004e, + 0x022c, 0x0241, 0x0254, 0x0002, 0x0000, 0x0287, 0x0003, 0x004e, + 0x0267, 0x027c, 0x028f, 0x0002, 0x0000, 0x028f, 0x0003, 0x004e, + 0x02a2, 0x02b6, 0x02c8, 0x0002, 0x0000, 0x0297, 0x0003, 0x004e, + 0x02da, 0x02ee, 0x0300, 0x0002, 0x0000, 0x029f, 0x0003, 0x004e, + 0x0313, 0x0328, 0x033b, 0x0002, 0x0000, 0x02a7, 0x0003, 0x004e, + 0x034e, 0x0362, 0x0374, 0x0002, 0x0000, 0x02af, 0x0003, 0x004e, + // Entry 35E00 - 35E3F + 0x0386, 0x039b, 0x03ae, 0x0001, 0x02b6, 0x0001, 0x004e, 0x03c1, + 0x0003, 0x02bd, 0x0000, 0x02c0, 0x0001, 0x0015, 0x09e9, 0x0002, + 0x02c3, 0x02c7, 0x0002, 0x0015, 0x0a0e, 0x0a02, 0x0002, 0x0015, + 0x0a2e, 0x0a1b, 0x0003, 0x02cf, 0x0000, 0x02d2, 0x0001, 0x004b, + 0x107d, 0x0002, 0x02d5, 0x02d9, 0x0002, 0x004b, 0x10a1, 0x1093, + 0x0002, 0x004b, 0x10c6, 0x10b1, 0x0003, 0x02e1, 0x0000, 0x02e4, + 0x0001, 0x0015, 0x0ad8, 0x0002, 0x02e7, 0x02eb, 0x0002, 0x0015, + 0x0af0, 0x0ae2, 0x0002, 0x0015, 0x0b15, 0x0b00, 0x0001, 0x02f1, + // Entry 35E40 - 35E7F + 0x0001, 0x004e, 0x03cf, 0x0004, 0x02f9, 0x0000, 0x0000, 0x02fd, + 0x0002, 0x0000, 0x1dc7, 0x3839, 0x0002, 0x03a6, 0x0300, 0x0003, + 0x0340, 0x0373, 0x0304, 0x003a, 0x004b, 0xffff, 0x11bd, 0x27da, + 0x11e4, 0x27ec, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2806, + 0x2823, 0x2845, 0x285f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 35E80 - 35EBF + 0xffff, 0xffff, 0x2879, 0x2896, 0x28b0, 0x28bf, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28d9, 0x0031, + 0x0015, 0xffff, 0xffff, 0xffff, 0xffff, 0x256a, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x26c0, 0x26d5, 0x2c6b, 0x2701, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2806, 0x2c7d, + // Entry 35EC0 - 35EFF + 0xffff, 0x282d, 0x0031, 0x004e, 0xffff, 0xffff, 0xffff, 0xffff, + 0x03d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03ec, 0x0407, + 0x0427, 0x043f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0457, 0x0472, 0xffff, 0x048a, 0x0003, 0x03aa, 0x0419, + 0x03dd, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 35F00 - 35F3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x12ea, 0x1351, 0xffff, 0x27cb, 0x003a, 0x0006, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 35F40 - 35F7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27d7, + 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 35F80 - 35FBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, + 0x1355, 0xffff, 0x13e3, 0x0002, 0x0003, 0x0108, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0030, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0026, + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x004e, 0x04a2, + 0x0001, 0x004e, 0x04c5, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x001c, + // Entry 35FC0 - 35FFF + 0x14e1, 0x0003, 0x0000, 0x002d, 0x002a, 0x0001, 0x004c, 0x0b3a, + 0x0001, 0x0005, 0x0846, 0x0008, 0x0039, 0x0080, 0x0000, 0x00c5, + 0x00dd, 0x00ed, 0x0000, 0x00fe, 0x0002, 0x003c, 0x005e, 0x0003, + 0x0040, 0x0000, 0x004f, 0x000d, 0x004e, 0xffff, 0x04e1, 0x04f7, + 0x0509, 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, 0x0576, 0x058c, + 0x05a2, 0x05b1, 0x000d, 0x004e, 0xffff, 0x04e1, 0x04f7, 0x0509, + 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, 0x0576, 0x058c, 0x05a2, + 0x05b1, 0x0003, 0x0062, 0x0000, 0x0071, 0x000d, 0x004e, 0xffff, + // Entry 36000 - 3603F + 0x04e1, 0x04f7, 0x0509, 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, + 0x0576, 0x058c, 0x05a2, 0x05b1, 0x000d, 0x004e, 0xffff, 0x04e1, + 0x04f7, 0x0509, 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, 0x0576, + 0x058c, 0x05a2, 0x05b1, 0x0002, 0x0083, 0x00a4, 0x0005, 0x0089, + 0x0000, 0x009b, 0x0000, 0x0092, 0x0007, 0x004e, 0x05bb, 0x05d2, + 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, 0x004e, 0x05bb, + 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, 0x004e, + 0x05bb, 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0005, + // Entry 36040 - 3607F + 0x00aa, 0x0000, 0x00bc, 0x0000, 0x00b3, 0x0007, 0x004e, 0x05bb, + 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, 0x004e, + 0x05bb, 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, + 0x004e, 0x05bb, 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, + 0x0001, 0x00c7, 0x0003, 0x00cb, 0x0000, 0x00d4, 0x0002, 0x00ce, + 0x00d1, 0x0001, 0x004e, 0x0659, 0x0001, 0x004e, 0x0666, 0x0002, + 0x00d7, 0x00da, 0x0001, 0x004e, 0x0659, 0x0001, 0x004e, 0x0666, + 0x0003, 0x00e7, 0x0000, 0x00e1, 0x0001, 0x00e3, 0x0002, 0x004e, + // Entry 36080 - 360BF + 0x0671, 0x0681, 0x0001, 0x00e9, 0x0002, 0x004e, 0x0698, 0x069f, + 0x0004, 0x00fb, 0x00f5, 0x00f2, 0x00f8, 0x0001, 0x004e, 0x06a8, + 0x0001, 0x004e, 0x06c9, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0014, + 0x146e, 0x0003, 0x0000, 0x0105, 0x0102, 0x0001, 0x004c, 0x0b3a, + 0x0001, 0x0005, 0x0846, 0x0037, 0x0140, 0x0000, 0x0000, 0x0145, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0155, 0x0000, 0x0000, 0x0000, + // Entry 360C0 - 360FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x015a, 0x0001, 0x0142, 0x0001, 0x004e, 0x06e3, + 0x0001, 0x0147, 0x0001, 0x004e, 0x06f2, 0x0002, 0x014d, 0x0150, + 0x0001, 0x004e, 0x06f9, 0x0003, 0x004e, 0x0702, 0x071c, 0x072a, + 0x0001, 0x0157, 0x0001, 0x004e, 0x0743, 0x0001, 0x015c, 0x0001, + 0x004e, 0x0750, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, + // Entry 36100 - 3613F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x001c, 0x04b3, + 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, + 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, + 0x000d, 0x004e, 0xffff, 0x075d, 0x0762, 0x0767, 0x0772, 0x0777, + 0x077c, 0x0780, 0x0784, 0x0789, 0x078f, 0x0793, 0x0797, 0x000d, + // Entry 36140 - 3617F + 0x004e, 0xffff, 0x079b, 0x0762, 0x07aa, 0x0772, 0x07b7, 0x07bd, + 0x07c6, 0x07d3, 0x07dd, 0x07e4, 0x0793, 0x07ea, 0x0002, 0x0000, + 0x0057, 0x000d, 0x0000, 0xffff, 0x38ae, 0x255c, 0x297c, 0x2281, + 0x297c, 0x25bc, 0x255c, 0x38ae, 0x38ae, 0x2994, 0x25bc, 0x38ae, + 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, + 0x004e, 0x07fd, 0x0803, 0x0808, 0x080d, 0x0815, 0x081c, 0x0823, + 0x0007, 0x004e, 0x082b, 0x0838, 0x0843, 0x084f, 0x085e, 0x086c, + 0x087a, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x24fb, 0x2483, + // Entry 36180 - 361BF + 0x223e, 0x297c, 0x390e, 0x297c, 0x24f9, 0x0001, 0x008d, 0x0003, + 0x0091, 0x0000, 0x0098, 0x0005, 0x002b, 0xffff, 0x0536, 0x0539, + 0x053c, 0x053f, 0x0005, 0x004e, 0xffff, 0x0889, 0x089f, 0x08b6, + 0x08d5, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, + 0x00a8, 0x00ab, 0x0001, 0x004e, 0x08f1, 0x0001, 0x004e, 0x08f4, + 0x0002, 0x00b1, 0x00b4, 0x0001, 0x004e, 0x08f1, 0x0001, 0x004e, + 0x08f4, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, + 0x004e, 0x08f8, 0x090c, 0x0001, 0x00c3, 0x0002, 0x0037, 0x0609, + // Entry 361C0 - 361FF + 0x200b, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, + 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x001c, 0x04c0, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, + 0x004e, 0x091b, 0x0001, 0x004e, 0x092a, 0x0001, 0x0002, 0x046e, + 0x0001, 0x0002, 0x0478, 0x003d, 0x0127, 0x0000, 0x0000, 0x012c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, + 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0146, 0x0000, 0x0000, 0x0000, + // Entry 36200 - 3623F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x014b, 0x0000, 0x0000, 0x0150, 0x0000, 0x0000, + 0x0155, 0x0001, 0x0129, 0x0001, 0x004e, 0x0936, 0x0001, 0x012e, + 0x0001, 0x004e, 0x0947, 0x0001, 0x0133, 0x0001, 0x004e, 0x0780, + 0x0001, 0x0138, 0x0001, 0x004e, 0x094f, 0x0002, 0x013e, 0x0141, + 0x0001, 0x004e, 0x07fd, 0x0003, 0x004e, 0x0955, 0x0959, 0x095f, + // Entry 36240 - 3627F + 0x0001, 0x0148, 0x0001, 0x004e, 0x0964, 0x0001, 0x014d, 0x0001, + 0x004e, 0x0970, 0x0001, 0x0152, 0x0001, 0x0045, 0x04d4, 0x0001, + 0x0157, 0x0001, 0x004e, 0x0976, 0x0002, 0x0003, 0x00d1, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, + // Entry 36280 - 362BF + 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0012, 0xffff, 0x0000, 0x0004, 0x0008, + 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, + 0x002c, 0x000d, 0x0012, 0xffff, 0x0030, 0x003c, 0x0047, 0x0053, + 0x005c, 0x0068, 0x0074, 0x0081, 0x008d, 0x0098, 0x00a2, 0x00b5, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, + 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, + 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + // Entry 362C0 - 362FF + 0x0076, 0x0007, 0x0012, 0x00c8, 0x00cc, 0x00d0, 0x00d4, 0x00d8, + 0x46a1, 0x00e0, 0x0007, 0x0012, 0x00e4, 0x00ea, 0x00f6, 0x0101, + 0x010d, 0x0116, 0x0122, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x298e, 0x25bc, 0x223e, 0x298e, 0x297e, 0x38ae, 0x297a, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0012, 0xffff, 0x012e, + 0x0136, 0x013e, 0x0146, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, + 0x00a5, 0x0002, 0x0012, 0x014e, 0x0162, 0x0001, 0x00ab, 0x0002, + // Entry 36300 - 3633F + 0x0009, 0x0078, 0x5463, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00ce, 0x00c8, 0x00c5, + 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, + 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, + 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, + // Entry 36340 - 3637F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, + 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, 0x0114, + 0x0001, 0x0012, 0x0173, 0x0001, 0x0119, 0x0001, 0x0012, 0x017b, + 0x0001, 0x011e, 0x0001, 0x0012, 0x0182, 0x0001, 0x0123, 0x0001, + 0x0012, 0x0189, 0x0002, 0x0129, 0x012c, 0x0001, 0x0012, 0x0190, + // Entry 36380 - 363BF + 0x0003, 0x0012, 0x0198, 0x01a4, 0x01ad, 0x0001, 0x0133, 0x0001, + 0x0012, 0x01b9, 0x0001, 0x0138, 0x0001, 0x0012, 0x01ce, 0x0001, + 0x013d, 0x0001, 0x0012, 0x01e1, 0x0001, 0x0142, 0x0001, 0x0012, + 0x01e8, 0x0001, 0x0147, 0x0001, 0x0012, 0x01f1, 0x0001, 0x014c, + 0x0001, 0x004e, 0x0980, 0x0003, 0x0004, 0x0000, 0x0197, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x000c, + // Entry 363C0 - 363FF + 0x0000, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0001, + 0x001c, 0x14e1, 0x0008, 0x0030, 0x0095, 0x00e3, 0x0118, 0x0150, + 0x0164, 0x0175, 0x0186, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, + 0x0046, 0x0055, 0x000d, 0x004e, 0xffff, 0x098b, 0x098f, 0x0993, + 0x0997, 0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b3, + 0x09b7, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, + 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, + 0x000d, 0x004e, 0xffff, 0x09bb, 0x09c3, 0x09cf, 0x09db, 0x09e0, + // Entry 36400 - 3643F + 0x09e7, 0x09f2, 0x09fd, 0x0a05, 0x0a0e, 0x0a1b, 0x0a23, 0x0003, + 0x0068, 0x0077, 0x0086, 0x000d, 0x004e, 0xffff, 0x098b, 0x098f, + 0x0993, 0x0997, 0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, + 0x09b3, 0x09b7, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, + 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, + 0x297c, 0x000d, 0x004e, 0xffff, 0x09bb, 0x09c3, 0x09cf, 0x09db, + 0x09e0, 0x09e7, 0x09f2, 0x09fd, 0x0a05, 0x0a0e, 0x0a1b, 0x0a23, + 0x0002, 0x0098, 0x00b9, 0x0005, 0x009e, 0x0000, 0x00b0, 0x0000, + // Entry 36440 - 3647F + 0x00a7, 0x0007, 0x004e, 0x0a2a, 0x0a2e, 0x0a32, 0x0a36, 0x0a3a, + 0x0a3e, 0x0a42, 0x0007, 0x004e, 0x0a2a, 0x0a2e, 0x0a32, 0x0a36, + 0x0a3a, 0x0a3e, 0x0a42, 0x0007, 0x004e, 0x0a46, 0x0a4e, 0x0a56, + 0x0a5e, 0x0a65, 0x0a6d, 0x0a75, 0x0005, 0x00bf, 0x00c8, 0x00da, + 0x0000, 0x00d1, 0x0007, 0x004e, 0x0a2a, 0x0a2e, 0x0a32, 0x0a36, + 0x0a3a, 0x0a3e, 0x0a42, 0x0007, 0x0000, 0x298e, 0x297a, 0x38ae, + 0x2159, 0x38ae, 0x298c, 0x298e, 0x0007, 0x004e, 0x0a2a, 0x0a2e, + 0x0a32, 0x0a36, 0x0a3a, 0x0a3e, 0x0a42, 0x0007, 0x004e, 0x0a46, + // Entry 36480 - 364BF + 0x0a4e, 0x0a56, 0x0a5e, 0x0a65, 0x0a6d, 0x0a75, 0x0002, 0x00e6, + 0x00ff, 0x0003, 0x00ea, 0x00f1, 0x00f8, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x0a7d, 0x0a88, + 0x0a93, 0x0a9e, 0x0003, 0x0103, 0x010a, 0x0111, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x0a7d, + 0x0a88, 0x0a93, 0x0a9e, 0x0002, 0x011b, 0x0131, 0x0003, 0x011f, + // Entry 364C0 - 364FF + 0x0000, 0x0128, 0x0002, 0x0122, 0x0125, 0x0001, 0x004e, 0x0aa9, + 0x0001, 0x004e, 0x0aac, 0x0002, 0x012b, 0x012e, 0x0001, 0x004e, + 0x0aa9, 0x0001, 0x004e, 0x0aac, 0x0003, 0x0135, 0x013e, 0x0147, + 0x0002, 0x0138, 0x013b, 0x0001, 0x004e, 0x0aa9, 0x0001, 0x004e, + 0x0aac, 0x0002, 0x0141, 0x0144, 0x0001, 0x004e, 0x0aa9, 0x0001, + 0x004e, 0x0aac, 0x0002, 0x014a, 0x014d, 0x0001, 0x004e, 0x0aa9, + 0x0001, 0x004e, 0x0aac, 0x0003, 0x015e, 0x0000, 0x0154, 0x0002, + 0x0157, 0x015a, 0x0001, 0x004e, 0x0aaf, 0x0002, 0x0000, 0x04f5, + // Entry 36500 - 3653F + 0x04f9, 0x0001, 0x0160, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, + 0x0172, 0x016c, 0x0169, 0x016f, 0x0001, 0x000c, 0x03c9, 0x0001, + 0x0001, 0x002d, 0x0001, 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, + 0x0004, 0x0183, 0x017d, 0x017a, 0x0180, 0x0001, 0x0002, 0x0453, + 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + 0x0478, 0x0004, 0x0194, 0x018e, 0x018b, 0x0191, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0004, 0x019c, 0x0000, 0x0000, 0x0000, 0x0002, + // Entry 36540 - 3657F + 0x0000, 0x1dc7, 0x3839, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0013, + 0x0028, 0x0037, 0x0000, 0x0042, 0x0000, 0x004e, 0x0002, 0x0000, + 0x0016, 0x0002, 0x0000, 0x0019, 0x000d, 0x0000, 0xffff, 0x2980, + 0x2281, 0x24f9, 0x214e, 0x24fb, 0x2159, 0x2980, 0x38d8, 0x298c, + 0x2990, 0x298e, 0x297a, 0x0002, 0x0000, 0x002b, 0x0002, 0x0000, + 0x002e, 0x0007, 0x0000, 0x297c, 0x2159, 0x3911, 0x223e, 0x25bc, + 0x2483, 0x298e, 0x0001, 0x0039, 0x0001, 0x003b, 0x0005, 0x0000, + // Entry 36580 - 365BF + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0001, 0x0044, 0x0002, + 0x0047, 0x004a, 0x0001, 0x004e, 0x0ac0, 0x0002, 0x0000, 0x04f5, + 0x3913, 0x0004, 0x005c, 0x0056, 0x0053, 0x0059, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x00f7, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, + 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x0625, + // Entry 365C0 - 365FF + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, + 0x01b6, 0x0008, 0x0030, 0x0086, 0x0000, 0x00b4, 0x0000, 0x00d5, + 0x00e6, 0x0000, 0x0002, 0x0033, 0x0055, 0x0003, 0x0037, 0x0000, + 0x0046, 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, 0x0aef, 0x0b05, + 0x0b18, 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, 0x0b7e, 0x0b94, + 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, 0x0aef, 0x0b05, 0x0b18, + 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, 0x0b7e, 0x0b94, 0x0003, + 0x0059, 0x0068, 0x0077, 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, + // Entry 36600 - 3663F + 0x0aef, 0x0b05, 0x0b18, 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, + 0x0b7e, 0x0b94, 0x000d, 0x004e, 0xffff, 0x0bad, 0x0bb4, 0x0bbb, + 0x0bc2, 0x0b18, 0x0bc6, 0x0bc6, 0x0bc2, 0x0bcd, 0x0bc2, 0x0bd4, + 0x0bd8, 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, 0x0aef, 0x0b05, + 0x0b18, 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, 0x0b7e, 0x0b94, + 0x0002, 0x0089, 0x009f, 0x0003, 0x008d, 0x0000, 0x0096, 0x0007, + 0x004e, 0x0bdf, 0x0be9, 0x0bf3, 0x0c03, 0x0c0d, 0x0c1a, 0x0c2a, + 0x0007, 0x004e, 0x0c34, 0x0c47, 0x0c5a, 0x0c73, 0x0c86, 0x0c9c, + // Entry 36640 - 3667F + 0x0cb5, 0x0002, 0x00a2, 0x00ab, 0x0007, 0x004e, 0x0bdf, 0x0be9, + 0x0bf3, 0x0c03, 0x0c0d, 0x0c1a, 0x0c2a, 0x0007, 0x004e, 0x0cc8, + 0x0ccc, 0x0cd3, 0x0cd7, 0x0cde, 0x0ce5, 0x0cec, 0x0001, 0x00b6, + 0x0003, 0x00ba, 0x00c3, 0x00cc, 0x0002, 0x00bd, 0x00c0, 0x0001, + 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x00c6, 0x00c9, + 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x00cf, + 0x00d2, 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0004, + 0x00e3, 0x00dd, 0x00da, 0x00e0, 0x0001, 0x0005, 0x0773, 0x0001, + // Entry 36680 - 366BF + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x003d, 0x0217, + 0x0004, 0x00f4, 0x00ee, 0x00eb, 0x00f1, 0x0001, 0x0002, 0x0453, + 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + 0x0478, 0x0004, 0x0000, 0x0000, 0x0000, 0x00fc, 0x0002, 0x013b, + 0x00ff, 0x0003, 0x0000, 0x0000, 0x0103, 0x0036, 0x004e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 366C0 - 366FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0cf0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0d35, 0x0003, 0x0000, 0x0000, + 0x013f, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 36700 - 3673F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, 0x0004, 0x016f, + 0x0217, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, + // Entry 36740 - 3677F + 0x0001, 0x004e, 0x0d5e, 0x0001, 0x004e, 0x0d77, 0x0001, 0x004e, + 0x0d8a, 0x0001, 0x0013, 0x048d, 0x0004, 0x0035, 0x002f, 0x002c, + 0x0032, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, + 0x00e7, 0x011c, 0x0134, 0x013c, 0x014d, 0x015e, 0x0002, 0x0044, + 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x003e, 0xffff, + 0x0e23, 0x1fef, 0x1ff7, 0x1fff, 0x2007, 0x2010, 0x2019, 0x2022, + 0x0e62, 0x202a, 0x0e72, 0x2032, 0x000d, 0x003e, 0xffff, 0x0e82, + // Entry 36780 - 367BF + 0x0e85, 0x0e88, 0x0e8b, 0x0e88, 0x203a, 0x203a, 0x0e8b, 0x0e91, + 0x0e94, 0x0e97, 0x203d, 0x000d, 0x004e, 0xffff, 0x0d9c, 0x0da9, + 0x0db8, 0x0dc9, 0x0dd6, 0x0ddf, 0x0de8, 0x0df1, 0x0e00, 0x0e11, + 0x0e20, 0x0e2d, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x004e, + 0xffff, 0x0e3c, 0x0e44, 0x0e4e, 0x0e58, 0x0e60, 0x0e67, 0x0e70, + 0x0e79, 0x0e81, 0x0e8b, 0x0e93, 0x0e9d, 0x000d, 0x003e, 0xffff, + 0x0e82, 0x0e85, 0x0e88, 0x0e8b, 0x0e88, 0x203a, 0x203a, 0x0e8b, + 0x0e91, 0x0e94, 0x0e97, 0x203d, 0x000d, 0x003e, 0xffff, 0x0ef1, + // Entry 367C0 - 367FF + 0x0efe, 0x2040, 0x0f16, 0x204d, 0x2054, 0x205d, 0x0f35, 0x0f42, + 0x0f53, 0x0f62, 0x0f6f, 0x0002, 0x00a9, 0x00c8, 0x0003, 0x00ad, + 0x00b6, 0x00bf, 0x0007, 0x004e, 0x0ea5, 0x0eac, 0x0eb3, 0x0eba, + 0x0ec1, 0x0ec8, 0x0ecf, 0x0007, 0x004e, 0x0ed6, 0x0ed9, 0x0edc, + 0x0edf, 0x0ee2, 0x0ee5, 0x0ee8, 0x0007, 0x004e, 0x0eeb, 0x0efe, + 0x0f11, 0x0f1e, 0x0f2f, 0x0f40, 0x0f53, 0x0003, 0x00cc, 0x00d5, + 0x00de, 0x0007, 0x004e, 0x0f5e, 0x0f65, 0x0f6c, 0x0f73, 0x0f7a, + 0x0f81, 0x0f88, 0x0007, 0x004e, 0x0ed6, 0x0ed9, 0x0edc, 0x0edf, + // Entry 36800 - 3683F + 0x0ee2, 0x0ee5, 0x0ee8, 0x0007, 0x004e, 0x0f8f, 0x0fa2, 0x0fb5, + 0x0fc2, 0x0fd3, 0x0fe4, 0x0ff7, 0x0002, 0x00ea, 0x0103, 0x0003, + 0x00ee, 0x00f5, 0x00fc, 0x0005, 0x004e, 0xffff, 0x1002, 0x100f, + 0x101c, 0x1029, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x004e, 0xffff, 0x1036, 0x104c, 0x1062, 0x1078, + 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, 0x004e, 0xffff, 0x1002, + 0x100f, 0x101c, 0x1029, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x1036, 0x104c, 0x1062, + // Entry 36840 - 3687F + 0x1078, 0x0001, 0x011e, 0x0003, 0x0122, 0x0000, 0x012b, 0x0002, + 0x0125, 0x0128, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + 0x0002, 0x012e, 0x0131, 0x0001, 0x004e, 0x108e, 0x0001, 0x004e, + 0x10ac, 0x0001, 0x0136, 0x0001, 0x0138, 0x0002, 0x004e, 0x10ca, + 0x10d4, 0x0004, 0x014a, 0x0144, 0x0141, 0x0147, 0x0001, 0x004e, + 0x10db, 0x0001, 0x004e, 0x10f2, 0x0001, 0x004e, 0x1103, 0x0001, + 0x0007, 0x0277, 0x0004, 0x015b, 0x0155, 0x0152, 0x0158, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + // Entry 36880 - 368BF + 0x0001, 0x0000, 0x0546, 0x0004, 0x016c, 0x0166, 0x0163, 0x0169, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x01b0, 0x0000, 0x0000, + 0x01b5, 0x0000, 0x0000, 0x01ba, 0x01bf, 0x01c4, 0x01c9, 0x0000, + 0x0000, 0x01ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ec, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 368C0 - 368FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x01f1, 0x0000, 0x01f6, 0x0000, 0x0000, 0x0208, 0x0000, + 0x0000, 0x020d, 0x0000, 0x0000, 0x0212, 0x0001, 0x01b2, 0x0001, + 0x004e, 0x1113, 0x0001, 0x01b7, 0x0001, 0x004e, 0x111a, 0x0001, + 0x01bc, 0x0001, 0x0008, 0x0b3d, 0x0001, 0x01c1, 0x0001, 0x0008, + 0x0ca5, 0x0001, 0x01c6, 0x0001, 0x0008, 0x0ca5, 0x0001, 0x01cb, + 0x0001, 0x004e, 0x111f, 0x0001, 0x01d0, 0x0001, 0x004e, 0x1126, + 0x0003, 0x01d7, 0x01da, 0x01e1, 0x0001, 0x004e, 0x1133, 0x0005, + // Entry 36900 - 3693F + 0x004e, 0x114d, 0x1156, 0x115f, 0x113a, 0x1166, 0x0002, 0x01e4, + 0x01e8, 0x0002, 0x004e, 0x1175, 0x1175, 0x0002, 0x004e, 0x11a5, + 0x118d, 0x0001, 0x01ee, 0x0001, 0x004e, 0x11bd, 0x0001, 0x01f3, + 0x0001, 0x004e, 0x11d5, 0x0003, 0x01fa, 0x0000, 0x01fd, 0x0001, + 0x004e, 0x11eb, 0x0002, 0x0200, 0x0204, 0x0002, 0x004e, 0x11f6, + 0x11f6, 0x0002, 0x004e, 0x1212, 0x1212, 0x0001, 0x020a, 0x0001, + 0x004e, 0x122e, 0x0001, 0x020f, 0x0001, 0x004e, 0x1239, 0x0001, + 0x0214, 0x0001, 0x004e, 0x1246, 0x0004, 0x021c, 0x0221, 0x0000, + // Entry 36940 - 3697F + 0x0224, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3916, 0x0001, 0x004e, + 0x1260, 0x0002, 0x0000, 0x0227, 0x0003, 0x022b, 0x02ef, 0x028d, + 0x0060, 0x004e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1271, + // Entry 36980 - 369BF + 0x1330, 0xffff, 0x13dd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x149c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1565, 0x0060, 0x004e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 369C0 - 369FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12a4, 0x135d, 0xffff, 0x1410, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x14c2, 0xffff, 0x1534, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 36A00 - 36A3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1583, 0x0060, 0x004e, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 36A40 - 36A7F + 0xffff, 0xffff, 0xffff, 0x12ec, 0x139f, 0xffff, 0x1458, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x14fd, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x15b6, 0x0003, 0x0004, + 0x02b7, 0x06b9, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 36A80 - 36ABF + 0x0000, 0x000f, 0x003a, 0x0000, 0x0245, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0029, 0x0004, 0x0026, + 0x0020, 0x001d, 0x0023, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, + 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x0043, 0x00a8, 0x00ff, 0x0134, 0x01ed, 0x0212, 0x0223, + 0x0234, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, + // Entry 36AC0 - 36AFF + 0x000d, 0x004e, 0xffff, 0x15e5, 0x15ec, 0x15f6, 0x1603, 0x1613, + 0x161a, 0x1624, 0x1631, 0x1638, 0x1642, 0x164f, 0x1659, 0x000d, + 0x004e, 0xffff, 0x1663, 0x1667, 0x166e, 0x1675, 0x1679, 0x167d, + 0x1684, 0x1675, 0x168b, 0x1675, 0x168f, 0x1693, 0x000d, 0x004e, + 0xffff, 0x1697, 0x16a7, 0x15f6, 0x16ba, 0x1613, 0x161a, 0x16cd, + 0x16dd, 0x16ea, 0x16fa, 0x170d, 0x171d, 0x0003, 0x007b, 0x008a, + 0x0099, 0x000d, 0x004e, 0xffff, 0x15e5, 0x15ec, 0x15f6, 0x1603, + 0x1613, 0x161a, 0x1624, 0x1631, 0x1638, 0x1642, 0x164f, 0x1659, + // Entry 36B00 - 36B3F + 0x000d, 0x004e, 0xffff, 0x1663, 0x1667, 0x166e, 0x1675, 0x1679, + 0x167d, 0x1684, 0x1675, 0x168b, 0x1675, 0x168f, 0x1693, 0x000d, + 0x004e, 0xffff, 0x1697, 0x16a7, 0x15f6, 0x16ba, 0x1613, 0x161a, + 0x16cd, 0x16dd, 0x16ea, 0x16fa, 0x170d, 0x171d, 0x0002, 0x00ab, + 0x00d5, 0x0005, 0x00b1, 0x00ba, 0x00cc, 0x0000, 0x00c3, 0x0007, + 0x004e, 0x172d, 0x1734, 0x173e, 0x174b, 0x1758, 0x1762, 0x1775, + 0x0007, 0x004e, 0x178b, 0x178f, 0x1796, 0x179d, 0x17a7, 0x17ae, + 0x17bb, 0x0007, 0x004e, 0x172d, 0x1734, 0x17c2, 0x174b, 0x1758, + // Entry 36B40 - 36B7F + 0x17cc, 0x17dc, 0x0007, 0x004e, 0x17ec, 0x17fc, 0x180f, 0x1825, + 0x183b, 0x184e, 0x186a, 0x0005, 0x00db, 0x00e4, 0x00f6, 0x0000, + 0x00ed, 0x0007, 0x004e, 0x172d, 0x1734, 0x173e, 0x174b, 0x1758, + 0x1762, 0x1775, 0x0007, 0x004e, 0x178b, 0x178f, 0x1796, 0x179d, + 0x17a7, 0x17ae, 0x17bb, 0x0007, 0x004e, 0x172d, 0x1734, 0x17c2, + 0x174b, 0x1758, 0x17cc, 0x17dc, 0x0007, 0x004e, 0x17ec, 0x17fc, + 0x180f, 0x1825, 0x183b, 0x184e, 0x186a, 0x0002, 0x0102, 0x011b, + 0x0003, 0x0106, 0x010d, 0x0114, 0x0005, 0x004e, 0xffff, 0x1889, + // Entry 36B80 - 36BBF + 0x189d, 0x18b1, 0x18c5, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x18d9, 0x18fc, 0x191c, + 0x193c, 0x0003, 0x011f, 0x0126, 0x012d, 0x0005, 0x004e, 0xffff, + 0x1889, 0x189d, 0x18b1, 0x18c5, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x18d9, 0x18fc, + 0x191c, 0x193c, 0x0002, 0x0137, 0x0192, 0x0003, 0x013b, 0x0158, + 0x0175, 0x0007, 0x0146, 0x0149, 0x0143, 0x014c, 0x014f, 0x0152, + 0x0155, 0x0001, 0x004e, 0x195c, 0x0001, 0x004e, 0x1973, 0x0001, + // Entry 36BC0 - 36BFF + 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, + 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, 0x19ca, 0x0007, 0x0163, + 0x0166, 0x0160, 0x0169, 0x016c, 0x016f, 0x0172, 0x0001, 0x004e, + 0x195c, 0x0001, 0x004e, 0x19da, 0x0001, 0x004e, 0x19df, 0x0001, + 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, 0x0001, 0x004e, 0x19b7, + 0x0001, 0x004e, 0x19ca, 0x0007, 0x0180, 0x0183, 0x017d, 0x0186, + 0x0189, 0x018c, 0x018f, 0x0001, 0x004e, 0x195c, 0x0001, 0x004e, + 0x1973, 0x0001, 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, 0x0001, + // Entry 36C00 - 36C3F + 0x004e, 0x19a1, 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, 0x19ca, + 0x0003, 0x0196, 0x01b3, 0x01d0, 0x0007, 0x01a1, 0x01a4, 0x019e, + 0x01a7, 0x01aa, 0x01ad, 0x01b0, 0x0001, 0x004e, 0x195c, 0x0001, + 0x004e, 0x1973, 0x0001, 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, + 0x0001, 0x004e, 0x19a1, 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, + 0x19ca, 0x0007, 0x01be, 0x01c1, 0x01bb, 0x01c4, 0x01c7, 0x01ca, + 0x01cd, 0x0001, 0x004e, 0x195c, 0x0001, 0x004e, 0x1973, 0x0001, + 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, + // Entry 36C40 - 36C7F + 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, 0x19ca, 0x0007, 0x01db, + 0x01de, 0x01d8, 0x01e1, 0x01e4, 0x01e7, 0x01ea, 0x0001, 0x004e, + 0x195c, 0x0001, 0x004e, 0x1973, 0x0001, 0x004e, 0x1982, 0x0001, + 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, 0x0001, 0x004e, 0x19e7, + 0x0001, 0x004e, 0x19f4, 0x0003, 0x01fc, 0x0207, 0x01f1, 0x0002, + 0x01f4, 0x01f8, 0x0002, 0x004e, 0x19fe, 0x1a3f, 0x0002, 0x004e, + 0x1a18, 0x1a56, 0x0002, 0x01ff, 0x0203, 0x0002, 0x004e, 0x1a70, + 0x1a92, 0x0002, 0x004e, 0x1a7d, 0x1a9c, 0x0002, 0x020a, 0x020e, + // Entry 36C80 - 36CBF + 0x0002, 0x004e, 0x1aa9, 0x1a92, 0x0002, 0x004e, 0x1ab5, 0x1ac8, + 0x0004, 0x0220, 0x021a, 0x0217, 0x021d, 0x0001, 0x0005, 0x0773, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, + 0x237b, 0x0004, 0x0231, 0x022b, 0x0228, 0x022e, 0x0001, 0x0002, + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0004, 0x0242, 0x023c, 0x0239, 0x023f, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0005, 0x024b, 0x0000, 0x0000, 0x0000, + // Entry 36CC0 - 36CFF + 0x02b0, 0x0002, 0x024e, 0x027f, 0x0003, 0x0252, 0x0261, 0x0270, + 0x000d, 0x004e, 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, 0x1b02, + 0x1b0f, 0x1b1f, 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, 0x000d, + 0x004e, 0xffff, 0x1b67, 0x1b6b, 0x1b6f, 0x1b73, 0x1b77, 0x1b7b, + 0x1b7f, 0x1b83, 0x1b87, 0x1b8b, 0x1b92, 0x1b99, 0x000d, 0x004e, + 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, 0x1b02, 0x1b0f, 0x1b1f, + 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, 0x0003, 0x0283, 0x0292, + 0x02a1, 0x000d, 0x004e, 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, + // Entry 36D00 - 36D3F + 0x1b02, 0x1b0f, 0x1b1f, 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, + 0x000d, 0x004e, 0xffff, 0x1b67, 0x1b6b, 0x1b6f, 0x1b73, 0x1b77, + 0x1b7b, 0x1b7f, 0x1b83, 0x1b87, 0x1b8b, 0x1b92, 0x1b99, 0x000d, + 0x004e, 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, 0x1b02, 0x1b0f, + 0x1b1f, 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, 0x0001, 0x02b2, + 0x0001, 0x02b4, 0x0001, 0x004e, 0x1ba0, 0x0040, 0x02f8, 0x0000, + 0x0000, 0x02fd, 0x0314, 0x032b, 0x0342, 0x0359, 0x0370, 0x0387, + 0x039e, 0x03b5, 0x03cc, 0x03e7, 0x0402, 0x0000, 0x0000, 0x0000, + // Entry 36D40 - 36D7F + 0x041d, 0x0434, 0x0446, 0x0000, 0x0000, 0x0000, 0x0458, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x045d, 0x0471, 0x0485, 0x0499, + 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, 0x0539, + 0x054d, 0x0561, 0x0575, 0x0589, 0x059d, 0x05b1, 0x05c5, 0x05d9, + 0x05ed, 0x0000, 0x0601, 0x0000, 0x0606, 0x061c, 0x062e, 0x0640, + 0x0656, 0x0668, 0x067a, 0x0690, 0x06a2, 0x06b4, 0x0001, 0x02fa, + 0x0001, 0x004e, 0x1bad, 0x0003, 0x0301, 0x0304, 0x0309, 0x0001, + 0x004e, 0x1bba, 0x0003, 0x004e, 0x1bc4, 0x1bde, 0x1bef, 0x0002, + // Entry 36D80 - 36DBF + 0x030c, 0x0310, 0x0002, 0x004e, 0x1c21, 0x1c06, 0x0002, 0x004e, + 0x1c42, 0x1c42, 0x0003, 0x0318, 0x031b, 0x0320, 0x0001, 0x004e, + 0x1bba, 0x0003, 0x004e, 0x1bc4, 0x1bde, 0x1bef, 0x0002, 0x0323, + 0x0327, 0x0002, 0x004e, 0x1c21, 0x1c06, 0x0002, 0x004e, 0x1c42, + 0x1c42, 0x0003, 0x032f, 0x0332, 0x0337, 0x0001, 0x004e, 0x1bba, + 0x0003, 0x004e, 0x1bc4, 0x1bde, 0x1bef, 0x0002, 0x033a, 0x033e, + 0x0002, 0x004e, 0x1c21, 0x1c06, 0x0002, 0x004e, 0x1c42, 0x1c42, + 0x0003, 0x0346, 0x0349, 0x034e, 0x0001, 0x004e, 0x1c63, 0x0003, + // Entry 36DC0 - 36DFF + 0x004e, 0x1c76, 0x1c99, 0x1cb3, 0x0002, 0x0351, 0x0355, 0x0002, + 0x004e, 0x1cf7, 0x1cd3, 0x0002, 0x004e, 0x1d4b, 0x1d21, 0x0003, + 0x035d, 0x0360, 0x0365, 0x0001, 0x004e, 0x1c63, 0x0003, 0x004e, + 0x1c76, 0x1d7b, 0x1cb3, 0x0002, 0x0368, 0x036c, 0x0002, 0x004e, + 0x1cf7, 0x1cd3, 0x0002, 0x004e, 0x1d4b, 0x1d21, 0x0003, 0x0374, + 0x0377, 0x037c, 0x0001, 0x004e, 0x1c63, 0x0003, 0x004e, 0x1c76, + 0x1d7b, 0x1cb3, 0x0002, 0x037f, 0x0383, 0x0002, 0x004e, 0x1cf7, + 0x1cf7, 0x0002, 0x004e, 0x1d4b, 0x1d4b, 0x0003, 0x038b, 0x038e, + // Entry 36E00 - 36E3F + 0x0393, 0x0001, 0x004e, 0x1d95, 0x0003, 0x004e, 0x1da5, 0x1dc5, + 0x1ddc, 0x0002, 0x0396, 0x039a, 0x0002, 0x004e, 0x1e1a, 0x1df9, + 0x0002, 0x004e, 0x1e68, 0x1e41, 0x0003, 0x03a2, 0x03a5, 0x03aa, + 0x0001, 0x004e, 0x1d95, 0x0003, 0x004e, 0x1da5, 0x1dc5, 0x1ddc, + 0x0002, 0x03ad, 0x03b1, 0x0002, 0x004e, 0x1e1a, 0x1df9, 0x0002, + 0x004e, 0x1e68, 0x1e41, 0x0003, 0x03b9, 0x03bc, 0x03c1, 0x0001, + 0x004e, 0x1d95, 0x0003, 0x004e, 0x1da5, 0x1dc5, 0x1ddc, 0x0002, + 0x03c4, 0x03c8, 0x0002, 0x004e, 0x1e1a, 0x1df9, 0x0002, 0x004e, + // Entry 36E40 - 36E7F + 0x1e68, 0x1e41, 0x0004, 0x03d1, 0x03d4, 0x03d9, 0x03e4, 0x0001, + 0x004e, 0x1e8f, 0x0003, 0x004e, 0x1e9f, 0x1ebf, 0x1ed6, 0x0002, + 0x03dc, 0x03e0, 0x0002, 0x004e, 0x1f14, 0x1ef3, 0x0002, 0x004e, + 0x1f62, 0x1f3b, 0x0001, 0x004e, 0x1f89, 0x0004, 0x03ec, 0x03ef, + 0x03f4, 0x03ff, 0x0001, 0x004e, 0x1e8f, 0x0003, 0x004e, 0x1e9f, + 0x1ebf, 0x1ed6, 0x0002, 0x03f7, 0x03fb, 0x0002, 0x004e, 0x1f14, + 0x1ef3, 0x0002, 0x004e, 0x1f62, 0x1f3b, 0x0001, 0x004e, 0x1f89, + 0x0004, 0x0407, 0x040a, 0x040f, 0x041a, 0x0001, 0x004e, 0x1e8f, + // Entry 36E80 - 36EBF + 0x0003, 0x004e, 0x1e9f, 0x1ebf, 0x1ed6, 0x0002, 0x0412, 0x0416, + 0x0002, 0x004e, 0x1f14, 0x1ef3, 0x0002, 0x004e, 0x1f62, 0x1f3b, + 0x0001, 0x004e, 0x1f89, 0x0003, 0x0421, 0x0424, 0x0429, 0x0001, + 0x004e, 0x1fa4, 0x0003, 0x004e, 0x1fae, 0x1fce, 0x1fd8, 0x0002, + 0x042c, 0x0430, 0x0002, 0x004f, 0x001b, 0x0000, 0x0002, 0x004f, + 0x003c, 0x003c, 0x0003, 0x0438, 0x0000, 0x043b, 0x0001, 0x004e, + 0x1fa4, 0x0002, 0x043e, 0x0442, 0x0002, 0x004f, 0x001b, 0x0000, + 0x0002, 0x004f, 0x003c, 0x003c, 0x0003, 0x044a, 0x0000, 0x044d, + // Entry 36EC0 - 36EFF + 0x0001, 0x004e, 0x1fa4, 0x0002, 0x0450, 0x0454, 0x0002, 0x004f, + 0x001b, 0x0000, 0x0002, 0x004f, 0x003c, 0x003c, 0x0001, 0x045a, + 0x0001, 0x004f, 0x005d, 0x0003, 0x0000, 0x0461, 0x0466, 0x0003, + 0x004f, 0x007e, 0x009e, 0x00b5, 0x0002, 0x0469, 0x046d, 0x0002, + 0x004f, 0x00f3, 0x00d2, 0x0002, 0x004f, 0x011a, 0x011a, 0x0003, + 0x0000, 0x0475, 0x047a, 0x0003, 0x004f, 0x0141, 0x0158, 0x0166, + 0x0002, 0x047d, 0x0481, 0x0002, 0x004f, 0x00f3, 0x00f3, 0x0002, + 0x004f, 0x011a, 0x011a, 0x0003, 0x0000, 0x0489, 0x048e, 0x0003, + // Entry 36F00 - 36F3F + 0x004f, 0x0141, 0x0158, 0x0166, 0x0002, 0x0491, 0x0495, 0x0002, + 0x004f, 0x00f3, 0x00f3, 0x0002, 0x004f, 0x011a, 0x011a, 0x0003, + 0x0000, 0x049d, 0x04a2, 0x0003, 0x004f, 0x017a, 0x019d, 0x01b7, + 0x0002, 0x04a5, 0x04a9, 0x0002, 0x004f, 0x01fb, 0x01d7, 0x0002, + 0x004f, 0x0225, 0x0225, 0x0003, 0x0000, 0x04b1, 0x04b6, 0x0003, + 0x004f, 0x024f, 0x0269, 0x027a, 0x0002, 0x04b9, 0x04bd, 0x0002, + 0x004f, 0x01fb, 0x01fb, 0x0002, 0x004f, 0x0225, 0x0225, 0x0003, + 0x0000, 0x04c5, 0x04ca, 0x0003, 0x004f, 0x024f, 0x0269, 0x027a, + // Entry 36F40 - 36F7F + 0x0002, 0x04cd, 0x04d1, 0x0002, 0x004f, 0x01fb, 0x01fb, 0x0002, + 0x004f, 0x0225, 0x0225, 0x0003, 0x0000, 0x04d9, 0x04de, 0x0003, + 0x004f, 0x0291, 0x02b7, 0x02d4, 0x0002, 0x04e1, 0x04e5, 0x0002, + 0x004f, 0x031e, 0x02f7, 0x0002, 0x004f, 0x034b, 0x034b, 0x0003, + 0x0000, 0x04ed, 0x04f2, 0x0003, 0x004f, 0x0378, 0x0395, 0x03a9, + 0x0002, 0x04f5, 0x04f9, 0x0002, 0x004f, 0x031e, 0x031e, 0x0002, + 0x004f, 0x034b, 0x034b, 0x0003, 0x0000, 0x0501, 0x0506, 0x0003, + 0x004f, 0x0378, 0x0395, 0x03a9, 0x0002, 0x0509, 0x050d, 0x0002, + // Entry 36F80 - 36FBF + 0x004f, 0x031e, 0x031e, 0x0002, 0x004f, 0x034b, 0x034b, 0x0003, + 0x0000, 0x0515, 0x051a, 0x0003, 0x004f, 0x03c3, 0x03e9, 0x0406, + 0x0002, 0x051d, 0x0521, 0x0002, 0x004f, 0x0450, 0x0429, 0x0002, + 0x004f, 0x047d, 0x047d, 0x0003, 0x0000, 0x0529, 0x052e, 0x0003, + 0x004f, 0x04aa, 0x04c7, 0x04db, 0x0002, 0x0531, 0x0535, 0x0002, + 0x004f, 0x0450, 0x0450, 0x0002, 0x004f, 0x047d, 0x047d, 0x0003, + 0x0000, 0x053d, 0x0542, 0x0003, 0x004f, 0x04aa, 0x04c7, 0x04db, + 0x0002, 0x0545, 0x0549, 0x0002, 0x004f, 0x0450, 0x0450, 0x0002, + // Entry 36FC0 - 36FFF + 0x004f, 0x047d, 0x047d, 0x0003, 0x0000, 0x0551, 0x0556, 0x0003, + 0x004f, 0x04f5, 0x0518, 0x0532, 0x0002, 0x0559, 0x055d, 0x0002, + 0x004f, 0x0576, 0x0552, 0x0002, 0x004f, 0x05a0, 0x05a0, 0x0003, + 0x0000, 0x0565, 0x056a, 0x0003, 0x004f, 0x05ca, 0x05e4, 0x05f5, + 0x0002, 0x056d, 0x0571, 0x0002, 0x004f, 0x0576, 0x0576, 0x0002, + 0x004f, 0x05a0, 0x05a0, 0x0003, 0x0000, 0x0579, 0x057e, 0x0003, + 0x004f, 0x05ca, 0x05e4, 0x05f5, 0x0002, 0x0581, 0x0585, 0x0002, + 0x004f, 0x0576, 0x0576, 0x0002, 0x004f, 0x05a0, 0x05a0, 0x0003, + // Entry 37000 - 3703F + 0x0000, 0x058d, 0x0592, 0x0003, 0x004f, 0x060c, 0x0638, 0x065b, + 0x0002, 0x0595, 0x0599, 0x0002, 0x004f, 0x06b1, 0x0684, 0x0002, + 0x004f, 0x06e4, 0x06e4, 0x0003, 0x0000, 0x05a1, 0x05a6, 0x0003, + 0x004f, 0x0717, 0x073a, 0x0754, 0x0002, 0x05a9, 0x05ad, 0x0002, + 0x004f, 0x06b1, 0x06b1, 0x0002, 0x004f, 0x06e4, 0x06e4, 0x0003, + 0x0000, 0x05b5, 0x05ba, 0x0003, 0x004f, 0x0774, 0x0791, 0x07a5, + 0x0002, 0x05bd, 0x05c1, 0x0002, 0x004f, 0x06b1, 0x06b1, 0x0002, + 0x004f, 0x06e4, 0x06e4, 0x0003, 0x0000, 0x05c9, 0x05ce, 0x0003, + // Entry 37040 - 3707F + 0x004f, 0x07bf, 0x07ee, 0x0814, 0x0002, 0x05d1, 0x05d5, 0x0002, + 0x004f, 0x0870, 0x0840, 0x0002, 0x004f, 0x08a6, 0x08a6, 0x0003, + 0x0000, 0x05dd, 0x05e2, 0x0003, 0x004f, 0x08dc, 0x0902, 0x091f, + 0x0002, 0x05e5, 0x05e9, 0x0002, 0x004f, 0x0870, 0x0870, 0x0002, + 0x004f, 0x08a6, 0x08a6, 0x0003, 0x0000, 0x05f1, 0x05f6, 0x0003, + 0x004f, 0x0942, 0x0962, 0x0979, 0x0002, 0x05f9, 0x05fd, 0x0002, + 0x004f, 0x0870, 0x0870, 0x0002, 0x004f, 0x08a6, 0x08a6, 0x0001, + 0x0603, 0x0001, 0x004f, 0x0996, 0x0003, 0x060a, 0x060d, 0x0611, + // Entry 37080 - 370BF + 0x0001, 0x004f, 0x09b4, 0x0002, 0x004f, 0xffff, 0x09c1, 0x0002, + 0x0614, 0x0618, 0x0002, 0x004f, 0x09f3, 0x09d5, 0x0002, 0x004f, + 0x0a3b, 0x0a17, 0x0003, 0x0620, 0x0000, 0x0623, 0x0001, 0x004f, + 0x09b4, 0x0002, 0x0626, 0x062a, 0x0002, 0x004f, 0x09f3, 0x09d5, + 0x0002, 0x004f, 0x0a3b, 0x0a17, 0x0003, 0x0632, 0x0000, 0x0635, + 0x0001, 0x004f, 0x0a5f, 0x0002, 0x0638, 0x063c, 0x0002, 0x004f, + 0x09f3, 0x09d5, 0x0002, 0x004f, 0x0a3b, 0x0a17, 0x0003, 0x0644, + 0x0647, 0x064b, 0x0001, 0x004f, 0x0a66, 0x0002, 0x004f, 0xffff, + // Entry 370C0 - 370FF + 0x0a73, 0x0002, 0x064e, 0x0652, 0x0002, 0x004f, 0x0aa5, 0x0a87, + 0x0002, 0x004f, 0x0ac9, 0x0ac9, 0x0003, 0x065a, 0x0000, 0x065d, + 0x0001, 0x004f, 0x0a66, 0x0002, 0x0660, 0x0664, 0x0002, 0x004f, + 0x0aa5, 0x0a87, 0x0002, 0x004f, 0x0ac9, 0x0ac9, 0x0003, 0x066c, + 0x0000, 0x066f, 0x0001, 0x004f, 0x0a66, 0x0002, 0x0672, 0x0676, + 0x0002, 0x004f, 0x0aa5, 0x0a87, 0x0002, 0x004f, 0x0ac9, 0x0ac9, + 0x0003, 0x067e, 0x0681, 0x0685, 0x0001, 0x004f, 0x0aed, 0x0002, + 0x004f, 0xffff, 0x0afd, 0x0002, 0x0688, 0x068c, 0x0002, 0x004f, + // Entry 37100 - 3713F + 0x0b28, 0x0b07, 0x0002, 0x004f, 0x0b4f, 0x0b4f, 0x0003, 0x0694, + 0x0000, 0x0697, 0x0001, 0x004f, 0x0aed, 0x0002, 0x069a, 0x069e, + 0x0002, 0x004f, 0x0b28, 0x0b07, 0x0002, 0x004f, 0x0b4f, 0x0b4f, + 0x0003, 0x06a6, 0x0000, 0x06a9, 0x0001, 0x004f, 0x0aed, 0x0002, + 0x06ac, 0x06b0, 0x0002, 0x004f, 0x0b28, 0x0b07, 0x0002, 0x004f, + 0x0b4f, 0x0b4f, 0x0001, 0x06b6, 0x0001, 0x004f, 0x0b76, 0x0004, + 0x06be, 0x06c3, 0x06c8, 0x06d3, 0x0003, 0x0000, 0x1dc7, 0x3839, + 0x3916, 0x0003, 0x004f, 0x0b96, 0x0ba7, 0x0bce, 0x0002, 0x0000, + // Entry 37140 - 3717F + 0x06cb, 0x0002, 0x0000, 0x06ce, 0x0003, 0x004f, 0xffff, 0x0bef, + 0x0c2f, 0x0002, 0x08ba, 0x06d6, 0x0003, 0x077a, 0x081a, 0x06da, + 0x009e, 0x004f, 0x0c5f, 0x0c8e, 0x0cc1, 0x0cf1, 0x0d64, 0x0e0e, + 0x0f1e, 0x0fcb, 0x10b7, 0x11a3, 0x129b, 0xffff, 0x1367, 0x14dd, + 0x155d, 0x1609, 0x16c2, 0x1758, 0x1809, 0x18fc, 0x19fc, 0x1ad6, + 0x1ba0, 0x1c42, 0x1cd5, 0x1d51, 0x1d6e, 0x1dbd, 0x1e3f, 0x1e99, + 0x1f1f, 0x1f69, 0x1fdd, 0x2052, 0x20cc, 0x2142, 0x2178, 0x21c8, + 0x2265, 0x2310, 0x2370, 0x238d, 0x23c9, 0x2423, 0x24a7, 0x24f1, + // Entry 37180 - 371BF + 0x2596, 0x261a, 0x267e, 0x273e, 0x2800, 0x286a, 0x289a, 0x28ed, + 0x2913, 0x2956, 0x29c0, 0x29f3, 0x2a5c, 0x2b31, 0x2be7, 0x2c11, + 0x2c6a, 0x2d29, 0x2dbb, 0x2e19, 0x2e46, 0x2e79, 0x2ea2, 0x2edb, + 0x2f17, 0x2f6d, 0x2fea, 0x307d, 0x3103, 0xffff, 0x315d, 0x3199, + 0x31f5, 0x325b, 0x32aa, 0x3338, 0x337b, 0x33cf, 0x34bb, 0x3514, + 0x357e, 0x35a1, 0x35c1, 0x35e7, 0x363d, 0x36ad, 0x3707, 0x37e6, + 0x38a2, 0x3931, 0x3995, 0x39b8, 0x39d5, 0x3a25, 0x3ae1, 0x3b91, + 0x3c1b, 0x3c32, 0x3ca5, 0x3dc1, 0x3e63, 0x3ee7, 0x3f5d, 0x3f77, + // Entry 371C0 - 371FF + 0x3fce, 0x4058, 0x40dc, 0x4152, 0x41cc, 0x4280, 0x42a3, 0x42c3, + 0x4391, 0x43b7, 0x43f4, 0xffff, 0x4475, 0x44d5, 0x44f5, 0x452b, + 0x4561, 0x4591, 0x45b4, 0x45d1, 0x460b, 0x4665, 0x4691, 0x46d1, + 0x4735, 0x477e, 0x480c, 0x484c, 0x48e5, 0x4990, 0x4a00, 0x4a58, + 0x4b06, 0x4b88, 0x4ba8, 0x4bd2, 0x4c2c, 0x4cc2, 0x2bcd, 0x3d4f, + 0xffff, 0x0e94, 0x13de, 0x145f, 0x1f05, 0x3361, 0x345d, 0x4315, + 0x009e, 0x004f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d34, 0x0dee, + 0x0efe, 0x0f88, 0x1077, 0x115d, 0x1255, 0xffff, 0x134d, 0x14c3, + // Entry 37200 - 3723F + 0x1537, 0x15d3, 0x169f, 0x1732, 0x17ca, 0x18ad, 0x19c0, 0x1a9a, + 0x1b74, 0x1c22, 0x1cac, 0xffff, 0xffff, 0x1d91, 0xffff, 0x1e78, + 0xffff, 0x1f4f, 0x1fc3, 0x203b, 0x20a6, 0xffff, 0xffff, 0x21a5, + 0x2238, 0x22f3, 0xffff, 0xffff, 0xffff, 0x23f6, 0xffff, 0x24ca, + 0x2569, 0xffff, 0x2651, 0x2702, 0x27e0, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2936, 0xffff, 0xffff, 0x2a23, 0x2af8, 0xffff, 0xffff, + 0x2c31, 0x2d02, 0x2da1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2f53, 0x2fc7, 0x305a, 0x30e9, 0xffff, 0xffff, 0xffff, + // Entry 37240 - 3727F + 0x31d5, 0xffff, 0x3278, 0xffff, 0xffff, 0x33a8, 0xffff, 0x34f4, + 0xffff, 0xffff, 0xffff, 0xffff, 0x361a, 0xffff, 0x36c7, 0x37ad, + 0x387e, 0x3914, 0xffff, 0xffff, 0xffff, 0x39f2, 0x3ab5, 0x3b5f, + 0xffff, 0xffff, 0x3c65, 0x3d92, 0x3e49, 0x3ec1, 0xffff, 0xffff, + 0x3fab, 0x403e, 0x40b6, 0xffff, 0x4185, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x43d7, 0xffff, 0x4458, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x45f1, 0xffff, 0xffff, 0x46b4, + 0xffff, 0x474c, 0xffff, 0x482c, 0x48b6, 0x496d, 0xffff, 0x4a2c, + // Entry 37280 - 372BF + 0x4ada, 0xffff, 0xffff, 0xffff, 0x4c0c, 0x4c96, 0xffff, 0xffff, + 0xffff, 0x0e74, 0x13c1, 0x1442, 0xffff, 0xffff, 0x3443, 0x42ec, + 0x009e, 0x004f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0da4, 0x0e3e, + 0x0f4e, 0x101e, 0x1107, 0x11f9, 0x12f1, 0xffff, 0x1391, 0x1507, + 0x1593, 0x164f, 0x16f5, 0x178e, 0x1858, 0x195b, 0x1a48, 0x1b22, + 0x1bdc, 0x1c72, 0x1d0e, 0xffff, 0xffff, 0x1df9, 0xffff, 0x1eca, + 0xffff, 0x1f93, 0x2007, 0x2079, 0x2102, 0xffff, 0xffff, 0x21fb, + 0x22a2, 0x233d, 0xffff, 0xffff, 0xffff, 0x2460, 0xffff, 0x2528, + // Entry 372C0 - 372FF + 0x25d3, 0xffff, 0x26bb, 0x278a, 0x2830, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2986, 0xffff, 0xffff, 0x2aa5, 0x2b7a, 0xffff, 0xffff, + 0x2cb3, 0x2d60, 0x2de5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2f97, 0x301d, 0x30b0, 0x312d, 0xffff, 0xffff, 0xffff, + 0x3225, 0xffff, 0x32ec, 0xffff, 0xffff, 0x3406, 0xffff, 0x3544, + 0xffff, 0xffff, 0xffff, 0xffff, 0x3670, 0xffff, 0x3757, 0x382f, + 0x38d6, 0x395e, 0xffff, 0xffff, 0xffff, 0x3a68, 0x3b1d, 0x3bd3, + 0xffff, 0xffff, 0x3cf5, 0x3e00, 0x3e8d, 0x3f1d, 0xffff, 0xffff, + // Entry 37300 - 3733F + 0x4001, 0x4082, 0x4112, 0xffff, 0x4223, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x4421, 0xffff, 0x44a2, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4635, 0xffff, 0xffff, 0x46fe, + 0xffff, 0x47c0, 0xffff, 0x487c, 0x4924, 0x49c3, 0xffff, 0x4a94, + 0x4b42, 0xffff, 0xffff, 0xffff, 0x4c5c, 0x4cfe, 0xffff, 0xffff, + 0xffff, 0x0ec4, 0x140b, 0x148c, 0xffff, 0xffff, 0x3487, 0x434e, + 0x0003, 0x0000, 0x0000, 0x08be, 0x0042, 0x000b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 37340 - 3737F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, + 0x0002, 0x0003, 0x0092, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 37380 - 373BF + 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, + 0x001a, 0x0020, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, + 0x0044, 0x0053, 0x0000, 0x0060, 0x0070, 0x0081, 0x0000, 0x0001, + 0x0031, 0x0003, 0x0000, 0x0000, 0x0035, 0x000d, 0x0022, 0xffff, + 0x0000, 0x305d, 0x0018, 0x3068, 0x3073, 0x0031, 0x3078, 0x3085, + 0x308e, 0x0059, 0x3099, 0x30a4, 0x0001, 0x0046, 0x0003, 0x0000, + // Entry 373C0 - 373FF + 0x0000, 0x004a, 0x0007, 0x0050, 0x0000, 0x000b, 0x0012, 0x001b, + 0x0024, 0x0031, 0x003a, 0x0001, 0x0055, 0x0003, 0x0000, 0x0000, + 0x0059, 0x0005, 0x0050, 0xffff, 0x0043, 0x005b, 0x0071, 0x0087, + 0x0003, 0x006a, 0x0000, 0x0064, 0x0001, 0x0066, 0x0002, 0x0050, + 0x009f, 0x00b0, 0x0001, 0x006c, 0x0002, 0x0050, 0x009f, 0x00b0, + 0x0004, 0x007e, 0x0078, 0x0075, 0x007b, 0x0001, 0x0001, 0x001d, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, + 0x0860, 0x0004, 0x008f, 0x0089, 0x0086, 0x008c, 0x0001, 0x0002, + // Entry 37400 - 3743F + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0040, 0x0000, 0x0000, 0x0000, 0x00d3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x00d8, 0x0000, 0x0000, 0x00dd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x00e7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 37440 - 3747F + 0x0000, 0x00ec, 0x0000, 0x0000, 0x00f1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00f6, 0x0001, 0x00d5, 0x0001, 0x0050, 0x00b5, + 0x0001, 0x00da, 0x0001, 0x0050, 0x00be, 0x0001, 0x00df, 0x0001, + 0x0050, 0x003a, 0x0001, 0x00e4, 0x0001, 0x0050, 0x00c9, 0x0001, + 0x00e9, 0x0001, 0x0050, 0x00d0, 0x0001, 0x00ee, 0x0001, 0x0050, + 0x00e3, 0x0001, 0x00f3, 0x0001, 0x0050, 0x00ee, 0x0001, 0x00f8, + 0x0001, 0x0050, 0x00f5, 0x0003, 0x0004, 0x04db, 0x0a29, 0x0012, + 0x0017, 0x0024, 0x0082, 0x0000, 0x00ce, 0x0000, 0x011a, 0x0145, + // Entry 37480 - 374BF + 0x0370, 0x03bd, 0x0405, 0x0000, 0x0000, 0x0000, 0x0000, 0x045d, + 0x0475, 0x04cd, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, + 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, + 0x002b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0071, 0x0002, 0x002e, + 0x004f, 0x0002, 0x0031, 0x0040, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, + // Entry 374C0 - 374FF + 0x3871, 0x3874, 0x0003, 0x0053, 0x0000, 0x0062, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x0004, 0x007f, 0x0079, 0x0076, + 0x007c, 0x0001, 0x0050, 0x00fc, 0x0001, 0x0010, 0x0026, 0x0001, + 0x0010, 0x002f, 0x0001, 0x0016, 0x0470, 0x0001, 0x0084, 0x0002, + 0x0087, 0x00aa, 0x0002, 0x008a, 0x009a, 0x000e, 0x0000, 0xffff, + // Entry 37500 - 3753F + 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x391a, 0x3921, 0x03f9, + 0x392a, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x0003, 0x00ae, 0x0000, + 0x00be, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, + 0x03e4, 0x391a, 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, + 0x041c, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, + 0x03e4, 0x391a, 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, + // Entry 37540 - 3757F + 0x041c, 0x0001, 0x00d0, 0x0002, 0x00d3, 0x00f6, 0x0002, 0x00d6, + 0x00e6, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x3932, 0x3938, + 0x044c, 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, 0x3946, 0x0479, + 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x0422, 0x0003, 0x00fa, 0x0000, 0x010a, 0x000e, 0x0000, 0xffff, + 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, + 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, + // Entry 37580 - 375BF + 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, + 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0123, 0x0000, 0x0134, 0x0004, 0x0131, + 0x012b, 0x0128, 0x012e, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0016, 0x02aa, 0x0004, + 0x0142, 0x013c, 0x0139, 0x013f, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x014e, 0x01b3, 0x020a, 0x023f, 0x0328, 0x033d, 0x034e, + // Entry 375C0 - 375FF + 0x035f, 0x0002, 0x0151, 0x0182, 0x0003, 0x0155, 0x0164, 0x0173, + 0x000d, 0x0050, 0xffff, 0x010b, 0x010f, 0x0113, 0x0117, 0x011b, + 0x011f, 0x0123, 0x0127, 0x012b, 0x012f, 0x0134, 0x0138, 0x000d, + 0x0000, 0xffff, 0x2002, 0x200a, 0x1f9a, 0x1ffe, 0x1f9a, 0x200c, + 0x200a, 0x2002, 0x22df, 0x21ec, 0x200a, 0x200e, 0x000d, 0x0050, + 0xffff, 0x013c, 0x0145, 0x014c, 0x0152, 0x015b, 0x0160, 0x0168, + 0x016e, 0x0177, 0x0181, 0x018f, 0x0199, 0x0003, 0x0186, 0x0195, + 0x01a4, 0x000d, 0x0050, 0xffff, 0x010b, 0x010f, 0x0113, 0x0117, + // Entry 37600 - 3763F + 0x011b, 0x011f, 0x0123, 0x0127, 0x012b, 0x012f, 0x0134, 0x0138, + 0x000d, 0x0000, 0xffff, 0x298e, 0x2994, 0x297a, 0x25bc, 0x297a, + 0x24fb, 0x2994, 0x298e, 0x2159, 0x255c, 0x2994, 0x2281, 0x000d, + 0x0050, 0xffff, 0x01a1, 0x01aa, 0x01af, 0x01b6, 0x011b, 0x01c0, + 0x01c9, 0x01d0, 0x01da, 0x01e4, 0x01f1, 0x01fa, 0x0002, 0x01b6, + 0x01e0, 0x0005, 0x01bc, 0x01c5, 0x01d7, 0x0000, 0x01ce, 0x0007, + 0x0050, 0x0204, 0x020b, 0x0210, 0x0214, 0x0219, 0x021e, 0x0222, + 0x0007, 0x0000, 0x1f96, 0x21ec, 0x22df, 0x394c, 0x200c, 0x21ec, + // Entry 37640 - 3767F + 0x2002, 0x0007, 0x0050, 0x0227, 0x022b, 0x022f, 0x0233, 0x0238, + 0x023c, 0x0241, 0x0007, 0x0050, 0x0245, 0x024f, 0x025d, 0x0264, + 0x026b, 0x0274, 0x027c, 0x0005, 0x01e6, 0x01ef, 0x0201, 0x0000, + 0x01f8, 0x0007, 0x0050, 0x0204, 0x020b, 0x0210, 0x0214, 0x0219, + 0x021e, 0x0222, 0x0007, 0x0000, 0x297e, 0x255c, 0x2159, 0x394f, + 0x24fb, 0x255c, 0x298e, 0x0007, 0x0050, 0x0227, 0x022b, 0x022f, + 0x0233, 0x0238, 0x023c, 0x0241, 0x0007, 0x0050, 0x0245, 0x024f, + 0x025d, 0x0264, 0x026b, 0x0274, 0x027c, 0x0002, 0x020d, 0x0226, + // Entry 37680 - 376BF + 0x0003, 0x0211, 0x0218, 0x021f, 0x0005, 0x0050, 0xffff, 0x0283, + 0x0289, 0x0290, 0x0298, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0050, 0xffff, 0x029f, 0x02aa, 0x02b6, + 0x02c3, 0x0003, 0x022a, 0x0231, 0x0238, 0x0005, 0x0050, 0xffff, + 0x0283, 0x0289, 0x0290, 0x0298, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0050, 0xffff, 0x029f, 0x02aa, + 0x02b6, 0x02c3, 0x0002, 0x0242, 0x02b5, 0x0003, 0x0246, 0x026b, + 0x0290, 0x0009, 0x0253, 0x0259, 0x0250, 0x025c, 0x0262, 0x0265, + // Entry 376C0 - 376FF + 0x0268, 0x0256, 0x025f, 0x0001, 0x0050, 0x02cf, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0050, 0x02db, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0050, 0x02e7, 0x0001, 0x0050, 0x02ec, 0x0001, 0x0050, 0x02fd, + 0x0001, 0x0050, 0x030a, 0x0001, 0x0050, 0x0314, 0x0009, 0x0278, + 0x027e, 0x0275, 0x0281, 0x0287, 0x028a, 0x028d, 0x027b, 0x0284, + 0x0001, 0x0050, 0x031b, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0050, + 0x0325, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0050, 0x02e7, 0x0001, + 0x0050, 0x032d, 0x0001, 0x0050, 0x0339, 0x0001, 0x0050, 0x0342, + // Entry 37700 - 3773F + 0x0001, 0x0050, 0x0314, 0x0009, 0x029d, 0x02a3, 0x029a, 0x02a6, + 0x02ac, 0x02af, 0x02b2, 0x02a0, 0x02a9, 0x0001, 0x0050, 0x02cf, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0050, 0x02db, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0050, 0x02e7, 0x0001, 0x0050, 0x02ec, 0x0001, + 0x0050, 0x02fd, 0x0001, 0x0050, 0x030a, 0x0001, 0x0050, 0x0314, + 0x0003, 0x02b9, 0x02de, 0x0303, 0x0009, 0x02c6, 0x02cc, 0x02c3, + 0x02cf, 0x02d5, 0x02d8, 0x02db, 0x02c9, 0x02d2, 0x0001, 0x0050, + 0x0349, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0050, 0x0352, 0x0001, + // Entry 37740 - 3777F + 0x0000, 0x04f2, 0x0001, 0x0050, 0x02e7, 0x0001, 0x0050, 0x035c, + 0x0001, 0x0050, 0x036b, 0x0001, 0x0050, 0x0377, 0x0001, 0x0013, + 0x067f, 0x0009, 0x02eb, 0x02f1, 0x02e8, 0x02f4, 0x02fa, 0x02fd, + 0x0300, 0x02ee, 0x02f7, 0x0001, 0x0050, 0x0380, 0x0001, 0x0000, + 0x1f9c, 0x0001, 0x0050, 0x0388, 0x0001, 0x0000, 0x21ec, 0x0001, + 0x0050, 0x02e7, 0x0001, 0x0050, 0x038e, 0x0001, 0x0050, 0x0399, + 0x0001, 0x0050, 0x0342, 0x0001, 0x0013, 0x067f, 0x0009, 0x0310, + 0x0316, 0x030d, 0x0319, 0x031f, 0x0322, 0x0325, 0x0313, 0x031c, + // Entry 37780 - 377BF + 0x0001, 0x0050, 0x0349, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0050, + 0x0352, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0050, 0x02e7, 0x0001, + 0x0050, 0x035c, 0x0001, 0x0050, 0x036b, 0x0001, 0x0050, 0x0377, + 0x0001, 0x0013, 0x067f, 0x0003, 0x0337, 0x0000, 0x032c, 0x0002, + 0x032f, 0x0333, 0x0002, 0x0050, 0x03a1, 0x03ba, 0x0002, 0x0050, + 0x03b3, 0x03c5, 0x0001, 0x0339, 0x0002, 0x0050, 0x03b3, 0x03c5, + 0x0004, 0x034b, 0x0345, 0x0342, 0x0348, 0x0001, 0x0005, 0x0773, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0016, + // Entry 377C0 - 377FF + 0x0470, 0x0004, 0x035c, 0x0356, 0x0353, 0x0359, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x036d, 0x0367, 0x0364, 0x036a, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0372, 0x0002, 0x0375, 0x0399, + 0x0003, 0x0379, 0x0000, 0x0389, 0x000e, 0x0050, 0x03f9, 0x03ca, + 0x03d1, 0x03da, 0x03e1, 0x03e7, 0x03ed, 0x03f4, 0x0401, 0x0407, + 0x040c, 0x0412, 0x0418, 0x041b, 0x000e, 0x0050, 0x03f9, 0x03ca, + // Entry 37800 - 3783F + 0x03d1, 0x03da, 0x03e1, 0x03e7, 0x03ed, 0x03f4, 0x0401, 0x0407, + 0x040c, 0x0412, 0x0418, 0x041b, 0x0003, 0x039d, 0x0000, 0x03ad, + 0x000e, 0x0050, 0x03f9, 0x03ca, 0x03d1, 0x03da, 0x03e1, 0x03e7, + 0x03ed, 0x03f4, 0x0401, 0x0407, 0x040c, 0x0412, 0x0418, 0x041b, + 0x000e, 0x0050, 0x03f9, 0x03ca, 0x03d1, 0x03da, 0x03e1, 0x03e7, + 0x03ed, 0x03f4, 0x0401, 0x0407, 0x040c, 0x0412, 0x0418, 0x041b, + 0x0001, 0x03bf, 0x0002, 0x03c2, 0x03e3, 0x0002, 0x03c5, 0x03d4, + 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, + // Entry 37840 - 3787F + 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x03e7, + 0x0000, 0x03f6, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, + 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, + 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, + 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, + 0x0001, 0x0407, 0x0002, 0x040a, 0x043b, 0x0003, 0x040e, 0x041d, + // Entry 37880 - 378BF + 0x042c, 0x000d, 0x0000, 0xffff, 0x0606, 0x3952, 0x3957, 0x395e, + 0x3966, 0x396e, 0x3977, 0x397b, 0x3980, 0x3985, 0x398b, 0x3994, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0000, 0xffff, 0x0657, 0x399d, 0x0666, 0x066f, 0x39a3, 0x39ae, + 0x39ba, 0x39c2, 0x39c9, 0x39d1, 0x39d9, 0x39e4, 0x0003, 0x043f, + 0x0000, 0x044e, 0x000d, 0x0000, 0xffff, 0x0606, 0x3952, 0x3957, + 0x395e, 0x3966, 0x396e, 0x3977, 0x397b, 0x3980, 0x3985, 0x398b, + // Entry 378C0 - 378FF + 0x3994, 0x000d, 0x0000, 0xffff, 0x0657, 0x399d, 0x0666, 0x066f, + 0x39a3, 0x39ae, 0x39ba, 0x39c2, 0x39c9, 0x39d1, 0x39d9, 0x39e4, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0464, 0x0004, + 0x0472, 0x046c, 0x0469, 0x046f, 0x0001, 0x0005, 0x0625, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0016, 0x02aa, + 0x0001, 0x0477, 0x0002, 0x047a, 0x04ab, 0x0003, 0x047e, 0x048d, + 0x049c, 0x000d, 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, 0x043f, + 0x0443, 0x044b, 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, 0x0473, + // Entry 37900 - 3793F + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, 0x043f, 0x0443, 0x044b, + 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, 0x0473, 0x0003, 0x04af, + 0x0000, 0x04be, 0x000d, 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, + 0x043f, 0x0443, 0x044b, 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, + 0x0473, 0x000d, 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, 0x043f, + 0x0443, 0x044b, 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, 0x0473, + // Entry 37940 - 3797F + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x04d3, 0x0001, 0x04d5, + 0x0001, 0x04d7, 0x0002, 0x0050, 0x047a, 0x0484, 0x0040, 0x051c, + 0x0000, 0x0000, 0x0521, 0x0540, 0x055a, 0x0574, 0x0593, 0x05b2, + 0x05d1, 0x05f0, 0x060a, 0x0624, 0x0647, 0x0665, 0x0000, 0x0000, + 0x0000, 0x0683, 0x06a4, 0x06be, 0x0000, 0x0000, 0x0000, 0x06d8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x06dd, 0x06f9, 0x0715, + 0x0731, 0x074d, 0x0769, 0x0785, 0x07a1, 0x07bd, 0x07d9, 0x07f5, + 0x0811, 0x082d, 0x0849, 0x0865, 0x0881, 0x089d, 0x08b9, 0x08d5, + // Entry 37980 - 379BF + 0x08f1, 0x090d, 0x0000, 0x0929, 0x0000, 0x092e, 0x094c, 0x0966, + 0x0980, 0x099e, 0x09b8, 0x09d2, 0x09f0, 0x0a0a, 0x0a24, 0x0001, + 0x051e, 0x0001, 0x0001, 0x0040, 0x0003, 0x0525, 0x0528, 0x052d, + 0x0001, 0x0013, 0x06e7, 0x0003, 0x0050, 0x0488, 0x0498, 0x04a3, + 0x0002, 0x0530, 0x0538, 0x0006, 0x0013, 0x0727, 0x0710, 0xffff, + 0xffff, 0x3106, 0x3112, 0x0006, 0x0050, 0x04dd, 0x04b5, 0xffff, + 0xffff, 0x04c2, 0x04d0, 0x0003, 0x0544, 0x0000, 0x0547, 0x0001, + 0x0013, 0x062a, 0x0002, 0x054a, 0x0552, 0x0006, 0x0013, 0x0727, + // Entry 379C0 - 379FF + 0x0710, 0xffff, 0xffff, 0x3106, 0x3112, 0x0006, 0x0050, 0x04dd, + 0x04b5, 0xffff, 0xffff, 0x04c2, 0x04d0, 0x0003, 0x055e, 0x0000, + 0x0561, 0x0001, 0x0013, 0x062a, 0x0002, 0x0564, 0x056c, 0x0006, + 0x0013, 0x0727, 0x0710, 0xffff, 0xffff, 0x3106, 0x3112, 0x0006, + 0x0050, 0x04dd, 0x04b5, 0xffff, 0xffff, 0x04c2, 0x04d0, 0x0003, + 0x0578, 0x057b, 0x0580, 0x0001, 0x0050, 0x04eb, 0x0003, 0x0050, + 0x04f4, 0x0508, 0x0517, 0x0002, 0x0583, 0x058b, 0x0006, 0x0050, + 0x0561, 0x052d, 0xffff, 0xffff, 0x053d, 0x054e, 0x0006, 0x0050, + // Entry 37A00 - 37A3F + 0x05ac, 0x0572, 0xffff, 0xffff, 0x0584, 0x0597, 0x0003, 0x0597, + 0x059a, 0x059f, 0x0001, 0x0001, 0x0117, 0x0003, 0x0050, 0x04f4, + 0x0508, 0x0517, 0x0002, 0x05a2, 0x05aa, 0x0006, 0x0017, 0x0518, + 0x0518, 0xffff, 0xffff, 0x0518, 0x0518, 0x0006, 0x0050, 0x05bf, + 0x05bf, 0xffff, 0xffff, 0x05bf, 0x05bf, 0x0003, 0x05b6, 0x05b9, + 0x05be, 0x0001, 0x0001, 0x0117, 0x0003, 0x0050, 0x04f4, 0x0508, + 0x0517, 0x0002, 0x05c1, 0x05c9, 0x0006, 0x0050, 0x05cc, 0x05cc, + 0xffff, 0xffff, 0x05cc, 0x05cc, 0x0006, 0x0050, 0x05d5, 0x05d5, + // Entry 37A40 - 37A7F + 0xffff, 0xffff, 0x05d5, 0x05d5, 0x0003, 0x05d5, 0x05d8, 0x05dd, + 0x0001, 0x0050, 0x05e0, 0x0003, 0x0050, 0x05e9, 0x05fe, 0x060e, + 0x0002, 0x05e0, 0x05e8, 0x0006, 0x0050, 0x0657, 0x0625, 0xffff, + 0xffff, 0x0635, 0x0646, 0x0006, 0x0050, 0x06a0, 0x0668, 0xffff, + 0xffff, 0x067a, 0x068d, 0x0003, 0x05f4, 0x0000, 0x05f7, 0x0001, + 0x0050, 0x06b3, 0x0002, 0x05fa, 0x0602, 0x0006, 0x0050, 0x06b9, + 0x06b9, 0xffff, 0xffff, 0x06b9, 0x06b9, 0x0006, 0x0050, 0x06c6, + 0x06c6, 0xffff, 0xffff, 0x06c6, 0x06c6, 0x0003, 0x060e, 0x0000, + // Entry 37A80 - 37ABF + 0x0611, 0x0001, 0x0050, 0x06d5, 0x0002, 0x0614, 0x061c, 0x0006, + 0x0050, 0x06d8, 0x06d8, 0xffff, 0xffff, 0x06d8, 0x06d8, 0x0006, + 0x0050, 0x06e3, 0x06e3, 0xffff, 0xffff, 0x06e3, 0x06e3, 0x0004, + 0x0629, 0x062c, 0x0631, 0x0644, 0x0001, 0x0050, 0x06f0, 0x0003, + 0x0050, 0x06f9, 0x070d, 0x071c, 0x0002, 0x0634, 0x063c, 0x0006, + 0x0050, 0x0761, 0x0732, 0xffff, 0xffff, 0x0742, 0x0752, 0x0006, + 0x0050, 0x07a6, 0x0771, 0xffff, 0xffff, 0x0783, 0x0795, 0x0001, + 0x0050, 0x07b8, 0x0004, 0x064c, 0x0000, 0x064f, 0x0662, 0x0001, + // Entry 37AC0 - 37AFF + 0x0050, 0x07c5, 0x0002, 0x0652, 0x065a, 0x0006, 0x0050, 0x07d8, + 0x07cb, 0xffff, 0xffff, 0x07d8, 0x07d8, 0x0006, 0x0050, 0x07f3, + 0x07e4, 0xffff, 0xffff, 0x07f3, 0x07f3, 0x0001, 0x0050, 0x07b8, + 0x0004, 0x066a, 0x0000, 0x066d, 0x0680, 0x0001, 0x0050, 0x07c5, + 0x0002, 0x0670, 0x0678, 0x0006, 0x0050, 0x07d8, 0x07cb, 0xffff, + 0xffff, 0x07d8, 0x07d8, 0x0006, 0x0050, 0x07f3, 0x07e4, 0xffff, + 0xffff, 0x07f3, 0x07f3, 0x0001, 0x0050, 0x07b8, 0x0003, 0x0687, + 0x068a, 0x0691, 0x0001, 0x0050, 0x0801, 0x0005, 0x0050, 0x0815, + // Entry 37B00 - 37B3F + 0x081d, 0x0825, 0x0808, 0x082b, 0x0002, 0x0694, 0x069c, 0x0006, + 0x0050, 0x084d, 0x0834, 0xffff, 0xffff, 0x0842, 0x0842, 0x0006, + 0x0050, 0x0876, 0x0859, 0xffff, 0xffff, 0x0869, 0x0869, 0x0003, + 0x06a8, 0x0000, 0x06ab, 0x0001, 0x0050, 0x0801, 0x0002, 0x06ae, + 0x06b6, 0x0006, 0x0050, 0x084d, 0x0834, 0xffff, 0xffff, 0x0842, + 0x0842, 0x0006, 0x0050, 0x0876, 0x0859, 0xffff, 0xffff, 0x0869, + 0x0869, 0x0003, 0x06c2, 0x0000, 0x06c5, 0x0001, 0x0050, 0x0801, + 0x0002, 0x06c8, 0x06d0, 0x0006, 0x0050, 0x084d, 0x0834, 0xffff, + // Entry 37B40 - 37B7F + 0xffff, 0x0842, 0x0842, 0x0006, 0x0050, 0x0876, 0x0859, 0xffff, + 0xffff, 0x0869, 0x0869, 0x0001, 0x06da, 0x0001, 0x0050, 0x0884, + 0x0003, 0x0000, 0x06e1, 0x06e6, 0x0003, 0x0050, 0x0894, 0x08aa, + 0x08bb, 0x0002, 0x06e9, 0x06f1, 0x0006, 0x0050, 0x0906, 0x08d3, + 0xffff, 0xffff, 0x08e5, 0x08f6, 0x0006, 0x0050, 0x0950, 0x0917, + 0xffff, 0xffff, 0x092b, 0x093e, 0x0003, 0x0000, 0x06fd, 0x0702, + 0x0003, 0x0050, 0x0894, 0x08aa, 0x08bb, 0x0002, 0x0705, 0x070d, + 0x0006, 0x0050, 0x0906, 0x08d3, 0xffff, 0xffff, 0x08e5, 0x08f6, + // Entry 37B80 - 37BBF + 0x0006, 0x0050, 0x0950, 0x0917, 0xffff, 0xffff, 0x092b, 0x093e, + 0x0003, 0x0000, 0x0719, 0x071e, 0x0003, 0x0050, 0x0894, 0x08aa, + 0x08bb, 0x0002, 0x0721, 0x0729, 0x0006, 0x0050, 0x0906, 0x08d3, + 0xffff, 0xffff, 0x08e5, 0x08f6, 0x0006, 0x0050, 0x0950, 0x0917, + 0xffff, 0xffff, 0x092b, 0x093e, 0x0003, 0x0000, 0x0735, 0x073a, + 0x0003, 0x0050, 0x0963, 0x097b, 0x098f, 0x0002, 0x073d, 0x0745, + 0x0006, 0x0050, 0x09ea, 0x09a9, 0xffff, 0xffff, 0x09be, 0x09d3, + 0x0006, 0x0050, 0x0a46, 0x09ff, 0xffff, 0xffff, 0x0a16, 0x0a2d, + // Entry 37BC0 - 37BFF + 0x0003, 0x0000, 0x0751, 0x0756, 0x0003, 0x0050, 0x0963, 0x097b, + 0x098f, 0x0002, 0x0759, 0x0761, 0x0006, 0x0050, 0x09ea, 0x09a9, + 0xffff, 0xffff, 0x09be, 0x09d3, 0x0006, 0x0050, 0x0a46, 0x09ff, + 0xffff, 0xffff, 0x0a16, 0x0a2d, 0x0003, 0x0000, 0x076d, 0x0772, + 0x0003, 0x0050, 0x0963, 0x097b, 0x098f, 0x0002, 0x0775, 0x077d, + 0x0006, 0x0050, 0x09ea, 0x09a9, 0xffff, 0xffff, 0x09be, 0x09d3, + 0x0006, 0x0050, 0x0a46, 0x09ff, 0xffff, 0xffff, 0x0a16, 0x0a2d, + 0x0003, 0x0000, 0x0789, 0x078e, 0x0003, 0x0050, 0x0a5d, 0x0a6e, + // Entry 37C00 - 37C3F + 0x0a7b, 0x0002, 0x0791, 0x0799, 0x0006, 0x0050, 0x0aba, 0x0a8e, + 0xffff, 0xffff, 0x0a9c, 0x0aaa, 0x0006, 0x0050, 0x0afa, 0x0ac8, + 0xffff, 0xffff, 0x0ad8, 0x0ae8, 0x0003, 0x0000, 0x07a5, 0x07aa, + 0x0003, 0x0050, 0x0a5d, 0x0a6e, 0x0a7b, 0x0002, 0x07ad, 0x07b5, + 0x0006, 0x0050, 0x0aba, 0x0a8e, 0xffff, 0xffff, 0x0a9c, 0x0aaa, + 0x0006, 0x0050, 0x0afa, 0x0ac8, 0xffff, 0xffff, 0x0ad8, 0x0ae8, + 0x0003, 0x0000, 0x07c1, 0x07c6, 0x0003, 0x0050, 0x0a5d, 0x0a6e, + 0x0a7b, 0x0002, 0x07c9, 0x07d1, 0x0006, 0x0050, 0x0aba, 0x0a8e, + // Entry 37C40 - 37C7F + 0xffff, 0xffff, 0x0a9c, 0x0aaa, 0x0006, 0x0050, 0x0afa, 0x0ac8, + 0xffff, 0xffff, 0x0ad8, 0x0ae8, 0x0003, 0x0000, 0x07dd, 0x07e2, + 0x0003, 0x0050, 0x0b0a, 0x0b1d, 0x0b2b, 0x0002, 0x07e5, 0x07ed, + 0x0006, 0x0050, 0x0b4f, 0x0b40, 0xffff, 0xffff, 0x0b4f, 0x0b5d, + 0x0006, 0x0050, 0x0b7c, 0x0b6b, 0xffff, 0xffff, 0x0b7c, 0x0b8c, + 0x0003, 0x0000, 0x07f9, 0x07fe, 0x0003, 0x0050, 0x0b0a, 0x0b1d, + 0x0b2b, 0x0002, 0x0801, 0x0809, 0x0006, 0x0050, 0x0b4f, 0x0b40, + 0xffff, 0xffff, 0x0b4f, 0x0b5d, 0x0006, 0x0050, 0x0b7c, 0x0b6b, + // Entry 37C80 - 37CBF + 0xffff, 0xffff, 0x0b7c, 0x0b8c, 0x0003, 0x0000, 0x0815, 0x081a, + 0x0003, 0x0050, 0x0b0a, 0x0b1d, 0x0b2b, 0x0002, 0x081d, 0x0825, + 0x0006, 0x0050, 0x0b4f, 0x0b40, 0xffff, 0xffff, 0x0b4f, 0x0b5d, + 0x0006, 0x0050, 0x0b7c, 0x0b6b, 0xffff, 0xffff, 0x0b7c, 0x0b8c, + 0x0003, 0x0000, 0x0831, 0x0836, 0x0003, 0x0050, 0x0b9c, 0x0baf, + 0x0bbe, 0x0002, 0x0839, 0x0841, 0x0006, 0x0050, 0x0c05, 0x0bd3, + 0xffff, 0xffff, 0x0be3, 0x0bf3, 0x0006, 0x0050, 0x0c4d, 0x0c15, + 0xffff, 0xffff, 0x0c27, 0x0c39, 0x0003, 0x0000, 0x084d, 0x0852, + // Entry 37CC0 - 37CFF + 0x0003, 0x0050, 0x0b9c, 0x0baf, 0x0bbe, 0x0002, 0x0855, 0x085d, + 0x0006, 0x0050, 0x0c05, 0x0bd3, 0xffff, 0xffff, 0x0be3, 0x0bf3, + 0x0006, 0x0050, 0x0c4d, 0x0c15, 0xffff, 0xffff, 0x0c27, 0x0c39, + 0x0003, 0x0000, 0x0869, 0x086e, 0x0003, 0x0050, 0x0b9c, 0x0baf, + 0x0bbe, 0x0002, 0x0871, 0x0879, 0x0006, 0x0050, 0x0c05, 0x0bd3, + 0xffff, 0xffff, 0x0be3, 0x0bf3, 0x0006, 0x0050, 0x0c4d, 0x0c15, + 0xffff, 0xffff, 0x0c27, 0x0c39, 0x0003, 0x0000, 0x0885, 0x088a, + 0x0003, 0x0050, 0x0c5f, 0x0c71, 0x0c7f, 0x0002, 0x088d, 0x0895, + // Entry 37D00 - 37D3F + 0x0006, 0x0050, 0x0cc2, 0x0c93, 0xffff, 0xffff, 0x0ca2, 0x0cb1, + 0x0006, 0x0050, 0x0d06, 0x0cd1, 0xffff, 0xffff, 0x0ce2, 0x0cf3, + 0x0003, 0x0000, 0x08a1, 0x08a6, 0x0003, 0x0050, 0x0c5f, 0x0c71, + 0x0c7f, 0x0002, 0x08a9, 0x08b1, 0x0006, 0x0050, 0x0cc2, 0x0c93, + 0xffff, 0xffff, 0x0ca2, 0x0cb1, 0x0006, 0x0050, 0x0d06, 0x0cd1, + 0xffff, 0xffff, 0x0ce2, 0x0cf3, 0x0003, 0x0000, 0x08bd, 0x08c2, + 0x0003, 0x0050, 0x0c5f, 0x0c71, 0x0c7f, 0x0002, 0x08c5, 0x08cd, + 0x0006, 0x0050, 0x0cc2, 0x0c93, 0xffff, 0xffff, 0x0ca2, 0x0cb1, + // Entry 37D40 - 37D7F + 0x0006, 0x0050, 0x0d06, 0x0cd1, 0xffff, 0xffff, 0x0ce2, 0x0cf3, + 0x0003, 0x0000, 0x08d9, 0x08de, 0x0003, 0x0050, 0x0d17, 0x0d2a, + 0x0d38, 0x0002, 0x08e1, 0x08e9, 0x0006, 0x0050, 0x0d5c, 0x0d4d, + 0xffff, 0xffff, 0x0d5c, 0x0d6a, 0x0006, 0x0050, 0x0d89, 0x0d78, + 0xffff, 0xffff, 0x0d89, 0x0d99, 0x0003, 0x0000, 0x08f5, 0x08fa, + 0x0003, 0x0050, 0x0d17, 0x0d2a, 0x0d38, 0x0002, 0x08fd, 0x0905, + 0x0006, 0x0050, 0x0d5c, 0x0d4d, 0xffff, 0xffff, 0x0d5c, 0x0d6a, + 0x0006, 0x0050, 0x0d89, 0x0d78, 0xffff, 0xffff, 0x0d89, 0x0d99, + // Entry 37D80 - 37DBF + 0x0003, 0x0000, 0x0911, 0x0916, 0x0003, 0x0050, 0x0d17, 0x0d2a, + 0x0d38, 0x0002, 0x0919, 0x0921, 0x0006, 0x0050, 0x0d5c, 0x0d4d, + 0xffff, 0xffff, 0x0d5c, 0x0d6a, 0x0006, 0x0050, 0x0d89, 0x0d78, + 0xffff, 0xffff, 0x0d89, 0x0d99, 0x0001, 0x092b, 0x0001, 0x0050, + 0x0da9, 0x0003, 0x0932, 0x0935, 0x0939, 0x0001, 0x0050, 0x0dc9, + 0x0002, 0x0050, 0xffff, 0x0dd1, 0x0002, 0x093c, 0x0944, 0x0006, + 0x0050, 0x0dec, 0x0ddc, 0xffff, 0xffff, 0x0dec, 0x0dfb, 0x0006, + 0x0050, 0x0e1b, 0x0e09, 0xffff, 0xffff, 0x0e1b, 0x0e2c, 0x0003, + // Entry 37DC0 - 37DFF + 0x0950, 0x0000, 0x0953, 0x0001, 0x0050, 0x0e3c, 0x0002, 0x0956, + 0x095e, 0x0006, 0x0050, 0x0e42, 0x0e42, 0xffff, 0xffff, 0x0e42, + 0x0e42, 0x0006, 0x0050, 0x0e4f, 0x0e4f, 0xffff, 0xffff, 0x0e4f, + 0x0e4f, 0x0003, 0x096a, 0x0000, 0x096d, 0x0001, 0x000d, 0x039d, + 0x0002, 0x0970, 0x0978, 0x0006, 0x000d, 0x03a0, 0x03a0, 0xffff, + 0xffff, 0x03a0, 0x03a0, 0x0006, 0x0050, 0x0e5e, 0x0e5e, 0xffff, + 0xffff, 0x0e5e, 0x0e5e, 0x0003, 0x0984, 0x0987, 0x098b, 0x0001, + 0x000d, 0x0bf5, 0x0002, 0x0050, 0xffff, 0x0e6a, 0x0002, 0x098e, + // Entry 37E00 - 37E3F + 0x0996, 0x0006, 0x0050, 0x0e83, 0x0e74, 0xffff, 0xffff, 0x0e83, + 0x0e91, 0x0006, 0x0050, 0x0eaf, 0x0e9e, 0xffff, 0xffff, 0x0eaf, + 0x0ebf, 0x0003, 0x09a2, 0x0000, 0x09a5, 0x0001, 0x0041, 0x092f, + 0x0002, 0x09a8, 0x09b0, 0x0006, 0x0013, 0x0f75, 0x0f75, 0xffff, + 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0050, 0x0ece, 0x0ece, 0xffff, + 0xffff, 0x0ece, 0x0ece, 0x0003, 0x09bc, 0x0000, 0x09bf, 0x0001, + 0x0041, 0x092f, 0x0002, 0x09c2, 0x09ca, 0x0006, 0x0013, 0x0f75, + 0x0f75, 0xffff, 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0050, 0x0ece, + // Entry 37E40 - 37E7F + 0x0ece, 0xffff, 0xffff, 0x0ece, 0x0ece, 0x0003, 0x09d6, 0x09d9, + 0x09dd, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x0050, 0xffff, 0x0edb, + 0x0002, 0x09e0, 0x09e8, 0x0006, 0x0050, 0x0ef1, 0x0ee1, 0xffff, + 0xffff, 0x0ef1, 0x0f00, 0x0006, 0x0050, 0x0f20, 0x0f0e, 0xffff, + 0xffff, 0x0f20, 0x0f31, 0x0003, 0x09f4, 0x0000, 0x09f7, 0x0001, + 0x0001, 0x07d3, 0x0002, 0x09fa, 0x0a02, 0x0006, 0x000d, 0x0cef, + 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0cef, 0x0006, 0x0050, 0x0f41, + 0x0f41, 0xffff, 0xffff, 0x0f41, 0x0f41, 0x0003, 0x0a0e, 0x0000, + // Entry 37E80 - 37EBF + 0x0a11, 0x0001, 0x0000, 0x2002, 0x0002, 0x0a14, 0x0a1c, 0x0006, + 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0xffff, 0x0fcd, 0x0fcd, 0x0006, + 0x0050, 0x0f4f, 0x0f4f, 0xffff, 0xffff, 0x0f4f, 0x0f4f, 0x0001, + 0x0a26, 0x0001, 0x0050, 0x0f5a, 0x0004, 0x0a2e, 0x0a33, 0x0a38, + 0x0a47, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3916, 0x0003, 0x0050, + 0x0f69, 0x0f73, 0x0f84, 0x0002, 0x0000, 0x0a3b, 0x0003, 0x0000, + 0x0a42, 0x0a3f, 0x0001, 0x0050, 0x0f9b, 0x0003, 0x0050, 0xffff, + 0x0fb9, 0x0fce, 0x0002, 0x0c10, 0x0a4a, 0x0003, 0x0ae4, 0x0b7a, + // Entry 37EC0 - 37EFF + 0x0a4e, 0x0094, 0x0050, 0x0fe4, 0x0fef, 0x1009, 0x1023, 0x1059, + 0x10a6, 0x10e4, 0x1131, 0x1194, 0x11e9, 0x1225, 0x1263, 0x1292, + 0x12cf, 0x131f, 0x1367, 0x13b7, 0x13f7, 0x1444, 0x14b1, 0x1528, + 0x158b, 0x15e0, 0x1620, 0x1657, 0x168d, 0x1694, 0x16a6, 0x16da, + 0x1707, 0x175d, 0x176e, 0x17a4, 0x17d6, 0x180d, 0x1843, 0x185c, + 0x1874, 0x18b2, 0x18ef, 0x1919, 0x191f, 0x1932, 0x1953, 0x1997, + 0x19b8, 0x1a15, 0x1a59, 0x1a92, 0x1ae0, 0x1b1b, 0x1b49, 0x1b5a, + 0x1b8a, 0x1b94, 0x1ba3, 0x1bd1, 0x1be0, 0x1c06, 0x1c65, 0x1caf, + // Entry 37F00 - 37F3F + 0x1cbd, 0x1cd2, 0x1d17, 0x1d4f, 0x1d7b, 0x1d89, 0x1d98, 0x1daa, + 0x1dbe, 0x1dd2, 0x1deb, 0x1e1c, 0x1e51, 0x1e87, 0x1ed6, 0x1f26, + 0x1f3a, 0x1f54, 0x1f80, 0x1f93, 0x1fcb, 0x1fd5, 0x1ffe, 0x2032, + 0x2044, 0x2074, 0x207c, 0x2085, 0x208d, 0x20a7, 0x20db, 0x20fd, + 0x216c, 0x21bc, 0x2204, 0x2236, 0x223d, 0x2243, 0x2258, 0x22a4, + 0x22f0, 0x2330, 0x2335, 0x2351, 0x23a5, 0x23e2, 0x2415, 0x2447, + 0x244d, 0x2468, 0x249f, 0x24d2, 0x2504, 0x2523, 0x2573, 0x257c, + 0x2584, 0x258e, 0x2596, 0x25a7, 0x25e5, 0x2615, 0x2641, 0x2649, + // Entry 37F40 - 37F7F + 0x2652, 0x2661, 0x2675, 0x267d, 0x2683, 0x2691, 0x26bf, 0x26cc, + 0x26da, 0x2706, 0x2719, 0x2753, 0x2762, 0x279d, 0x27db, 0x280b, + 0x2822, 0x2867, 0x289d, 0x28a4, 0x28a9, 0x28c0, 0x28fc, 0x0094, + 0x0050, 0xffff, 0xffff, 0xffff, 0xffff, 0x103f, 0x109f, 0x10d4, + 0x1116, 0x1179, 0x11dc, 0x1215, 0x1257, 0x128d, 0x12bc, 0x1315, + 0x1353, 0x13af, 0x13e7, 0x1429, 0x148c, 0x150d, 0x1570, 0x15d3, + 0x161a, 0x164c, 0xffff, 0xffff, 0x169c, 0xffff, 0x16ec, 0xffff, + 0x1766, 0x179e, 0x17d0, 0x1802, 0xffff, 0xffff, 0x186b, 0x18a6, + // Entry 37F80 - 37FBF + 0x18ea, 0xffff, 0xffff, 0xffff, 0x1941, 0xffff, 0x199f, 0x19fc, + 0xffff, 0x1a79, 0x1ad6, 0x1b14, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1b9c, 0xffff, 0xffff, 0x1bf1, 0x1c50, 0xffff, 0xffff, 0x1cc4, + 0x1d0e, 0x1d49, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1de6, 0x1e15, 0x1e4a, 0x1e7f, 0x1eb7, 0xffff, 0xffff, 0x1f4e, + 0xffff, 0x1f87, 0xffff, 0xffff, 0x1ff4, 0xffff, 0x203c, 0xffff, + 0xffff, 0xffff, 0xffff, 0x209d, 0xffff, 0x20e2, 0x2153, 0x21b0, + 0x21f4, 0xffff, 0xffff, 0xffff, 0x2249, 0x2296, 0x22e0, 0xffff, + // Entry 37FC0 - 37FFF + 0xffff, 0x233d, 0x2399, 0x23dd, 0x240c, 0xffff, 0xffff, 0x245f, + 0x249a, 0x24c9, 0xffff, 0x250b, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x259e, 0x25d9, 0x260f, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x268a, 0xffff, 0xffff, 0x26d4, 0xffff, + 0x270c, 0xffff, 0x275a, 0x2792, 0x27d3, 0xffff, 0x2815, 0x285c, + 0xffff, 0xffff, 0xffff, 0x28b9, 0x28ee, 0x0094, 0x0050, 0xffff, + 0xffff, 0xffff, 0xffff, 0x107f, 0x10c0, 0x1100, 0x1158, 0x11bb, + 0x1202, 0x1241, 0x127b, 0x12aa, 0x12f5, 0x133c, 0x138e, 0x13d2, + // Entry 38000 - 3803F + 0x1413, 0x146b, 0x14e2, 0x154f, 0x15b2, 0x1600, 0x1639, 0x1675, + 0xffff, 0xffff, 0x16c3, 0xffff, 0x1735, 0xffff, 0x1789, 0x17bd, + 0x17ef, 0x182b, 0xffff, 0xffff, 0x1890, 0x18d1, 0x1907, 0xffff, + 0xffff, 0xffff, 0x1978, 0xffff, 0x19dd, 0x1a3a, 0xffff, 0x1ab7, + 0x1afd, 0x1b35, 0xffff, 0xffff, 0xffff, 0xffff, 0x1bbd, 0xffff, + 0xffff, 0x1c2e, 0x1c8d, 0xffff, 0xffff, 0x1cf3, 0x1d33, 0x1d68, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e03, 0x1e36, + 0x1e6b, 0x1ea2, 0x1f01, 0xffff, 0xffff, 0x1f6d, 0xffff, 0x1fb2, + // Entry 38040 - 3807F + 0xffff, 0xffff, 0x201b, 0xffff, 0x205f, 0xffff, 0xffff, 0xffff, + 0xffff, 0x20c4, 0xffff, 0x212b, 0x2191, 0x21db, 0x2220, 0xffff, + 0xffff, 0xffff, 0x227a, 0x22c5, 0x2313, 0xffff, 0xffff, 0x2378, + 0x23c4, 0x23fa, 0x2431, 0xffff, 0xffff, 0x2484, 0x24b7, 0x24ee, + 0xffff, 0x254e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x25c3, + 0x25fd, 0x262e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x26ab, 0xffff, 0xffff, 0x26f3, 0xffff, 0x2739, 0xffff, + 0x277d, 0x27bb, 0x27f6, 0xffff, 0x2842, 0x2885, 0xffff, 0xffff, + // Entry 38080 - 380BF + 0xffff, 0x28da, 0x291d, 0x0003, 0x0c14, 0x0c7a, 0x0c47, 0x0031, + 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, + 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 380C0 - 380FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38100 - 3813F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, + 0x0003, 0x0004, 0x016f, 0x0248, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, + 0x001e, 0x001b, 0x0021, 0x0001, 0x0051, 0x0000, 0x0001, 0x0051, + // Entry 38140 - 3817F + 0x001b, 0x0001, 0x0051, 0x0030, 0x0001, 0x001e, 0x1a8e, 0x0004, + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0041, 0x00a6, 0x00e7, 0x011c, 0x0134, 0x013c, 0x014d, + 0x015e, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, + 0x000d, 0x0051, 0xffff, 0x0040, 0x0044, 0x0048, 0x004d, 0x0051, + 0x0055, 0x005a, 0x005f, 0x0063, 0x0067, 0x006b, 0x006f, 0x000d, + 0x0000, 0xffff, 0x223e, 0x2159, 0x255c, 0x298e, 0x22db, 0x298e, + // Entry 38180 - 381BF + 0x2994, 0x297c, 0x298e, 0x298e, 0x2994, 0x298e, 0x000d, 0x0051, + 0xffff, 0x0073, 0x0078, 0x0082, 0x0089, 0x0090, 0x0098, 0x00a1, + 0x00a7, 0x00ae, 0x00b6, 0x00bf, 0x00ca, 0x0003, 0x0079, 0x0088, + 0x0097, 0x000d, 0x0051, 0xffff, 0x0040, 0x0044, 0x0048, 0x004d, + 0x0051, 0x0055, 0x005a, 0x005f, 0x0063, 0x0067, 0x006b, 0x006f, + 0x000d, 0x0000, 0xffff, 0x223e, 0x2159, 0x255c, 0x298e, 0x22db, + 0x298e, 0x2994, 0x297c, 0x298e, 0x298e, 0x2994, 0x298e, 0x000d, + 0x0051, 0xffff, 0x0073, 0x0078, 0x0082, 0x0089, 0x0090, 0x0098, + // Entry 381C0 - 381FF + 0x00a1, 0x00a7, 0x00ae, 0x00b6, 0x00bf, 0x00ca, 0x0002, 0x00a9, + 0x00c8, 0x0003, 0x00ad, 0x00b6, 0x00bf, 0x0007, 0x0051, 0x00d2, + 0x00d6, 0x00da, 0x00de, 0x00e2, 0x00e6, 0x00eb, 0x0007, 0x0000, + 0x297e, 0x255c, 0x2159, 0x255c, 0x25bc, 0x255c, 0x298e, 0x0007, + 0x0051, 0x00ef, 0x00f7, 0x0101, 0x010c, 0x0119, 0x0124, 0x012e, + 0x0003, 0x00cc, 0x00d5, 0x00de, 0x0007, 0x0051, 0x00d2, 0x00d6, + 0x00da, 0x00de, 0x00e2, 0x00e6, 0x00eb, 0x0007, 0x0000, 0x297e, + 0x255c, 0x2159, 0x255c, 0x25bc, 0x255c, 0x298e, 0x0007, 0x0051, + // Entry 38200 - 3823F + 0x00ef, 0x00f7, 0x0101, 0x010c, 0x0119, 0x0124, 0x012e, 0x0002, + 0x00ea, 0x0103, 0x0003, 0x00ee, 0x00f5, 0x00fc, 0x0005, 0x0051, + 0xffff, 0x0138, 0x013e, 0x0144, 0x014a, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0051, 0xffff, 0x0150, + 0x015c, 0x0168, 0x0174, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, + 0x0051, 0xffff, 0x0180, 0x0189, 0x0192, 0x019b, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0051, 0xffff, + 0x0150, 0x015c, 0x0168, 0x0174, 0x0001, 0x011e, 0x0003, 0x0122, + // Entry 38240 - 3827F + 0x0000, 0x012b, 0x0002, 0x0125, 0x0128, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x012e, 0x0131, 0x0001, 0x0051, + 0x01a4, 0x0001, 0x0051, 0x01b0, 0x0001, 0x0136, 0x0001, 0x0138, + 0x0002, 0x0009, 0x0078, 0x5463, 0x0004, 0x014a, 0x0144, 0x0141, + 0x0147, 0x0001, 0x0051, 0x01bf, 0x0001, 0x0051, 0x01d8, 0x0001, + 0x0051, 0x01eb, 0x0001, 0x0007, 0x0277, 0x0004, 0x015b, 0x0155, + 0x0152, 0x0158, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x016c, + // Entry 38280 - 382BF + 0x0166, 0x0163, 0x0169, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x01b0, 0x0000, 0x0000, 0x01b5, 0x01c0, 0x01c5, 0x01ca, 0x01cf, + 0x01d4, 0x01d9, 0x01de, 0x01e3, 0x01e8, 0x01ed, 0x01f2, 0x0000, + 0x0000, 0x0000, 0x01f7, 0x0202, 0x0207, 0x0000, 0x0000, 0x0000, + 0x020c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 382C0 - 382FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0211, 0x0000, 0x0216, 0x021b, + 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239, 0x023e, 0x0243, + 0x0001, 0x01b2, 0x0001, 0x0044, 0x097c, 0x0002, 0x01b8, 0x01bb, + 0x0001, 0x0051, 0x01f9, 0x0003, 0x0051, 0x0200, 0x0212, 0x021c, + 0x0001, 0x01c2, 0x0001, 0x0029, 0x0080, 0x0001, 0x01c7, 0x0001, + 0x0029, 0x0080, 0x0001, 0x01cc, 0x0001, 0x0051, 0x0226, 0x0001, + 0x01d1, 0x0001, 0x0051, 0x022f, 0x0001, 0x01d6, 0x0001, 0x0051, + 0x022f, 0x0001, 0x01db, 0x0001, 0x0051, 0x0235, 0x0001, 0x01e0, + // Entry 38300 - 3833F + 0x0001, 0x0051, 0x023c, 0x0001, 0x01e5, 0x0001, 0x0051, 0x023c, + 0x0001, 0x01ea, 0x0001, 0x0051, 0x0241, 0x0001, 0x01ef, 0x0001, + 0x0051, 0x024a, 0x0001, 0x01f4, 0x0001, 0x0051, 0x024a, 0x0002, + 0x01fa, 0x01fd, 0x0001, 0x0051, 0x024f, 0x0003, 0x0051, 0x0256, + 0x025d, 0x01a4, 0x0001, 0x0204, 0x0001, 0x0029, 0x008f, 0x0001, + 0x0209, 0x0001, 0x0029, 0x008f, 0x0001, 0x020e, 0x0001, 0x0051, + 0x0269, 0x0001, 0x0213, 0x0001, 0x0051, 0x027a, 0x0001, 0x0218, + 0x0001, 0x0051, 0x0297, 0x0001, 0x021d, 0x0001, 0x0044, 0x12ca, + // Entry 38340 - 3837F + 0x0001, 0x0222, 0x0001, 0x0044, 0x12ca, 0x0001, 0x0227, 0x0001, + 0x0051, 0x029f, 0x0001, 0x022c, 0x0001, 0x0001, 0x075a, 0x0001, + 0x0231, 0x0001, 0x0001, 0x075a, 0x0001, 0x0236, 0x0001, 0x0051, + 0x02a7, 0x0001, 0x023b, 0x0001, 0x0001, 0x07d3, 0x0001, 0x0240, + 0x0001, 0x0001, 0x07d3, 0x0001, 0x0245, 0x0001, 0x0051, 0x02b0, + 0x0004, 0x024d, 0x0252, 0x0000, 0x0257, 0x0003, 0x0000, 0x1dc7, + 0x3839, 0x3916, 0x0003, 0x0051, 0x02bc, 0x02c8, 0x02db, 0x0002, + 0x0000, 0x025a, 0x0003, 0x025e, 0x02cd, 0x0291, 0x0031, 0x0051, + // Entry 38380 - 383BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x02ef, + 0x0352, 0x03b5, 0x040f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0475, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04bd, 0x051d, 0xffff, + 0x057d, 0x003a, 0x0051, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x030b, 0x036e, 0x03ce, 0x042c, 0xffff, 0xffff, + // Entry 383C0 - 383FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x0488, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x04d8, 0x0538, 0xffff, 0x0599, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x05e0, 0x0031, 0x0051, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x032f, 0x0392, + 0x03ef, 0x0451, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38400 - 3843F + 0x04a3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x04fb, 0x055b, 0xffff, 0x05bd, + 0x0003, 0x0004, 0x0000, 0x01e5, 0x0011, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0030, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x019c, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x001f, 0x0000, 0x0000, 0x0004, + // Entry 38440 - 3847F + 0x002d, 0x0027, 0x0024, 0x002a, 0x0001, 0x0051, 0x05f1, 0x0001, + 0x0051, 0x0607, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0051, 0x0618, + 0x0008, 0x0039, 0x009e, 0x00e3, 0x0118, 0x0159, 0x0169, 0x017a, + 0x018b, 0x0002, 0x003c, 0x006d, 0x0003, 0x0040, 0x004f, 0x005e, + 0x000d, 0x0051, 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, 0x0650, + 0x0655, 0x065c, 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0051, + // Entry 38480 - 384BF + 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, 0x0650, 0x0655, 0x065c, + 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, 0x0003, 0x0071, 0x0080, + 0x008f, 0x000d, 0x0051, 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, + 0x0650, 0x0655, 0x065c, 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0051, 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, 0x0650, 0x0655, + 0x065c, 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, 0x0002, 0x00a1, + // Entry 384C0 - 384FF + 0x00c2, 0x0005, 0x00a7, 0x0000, 0x00b9, 0x0000, 0x00b0, 0x0007, + 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, 0x044b, + 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, + 0x044b, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, + 0x0442, 0x044b, 0x0005, 0x00c8, 0x0000, 0x00da, 0x0000, 0x00d1, + 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, + 0x044b, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, + 0x0442, 0x044b, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, + // Entry 38500 - 3853F + 0x0433, 0x0442, 0x044b, 0x0002, 0x00e6, 0x00ff, 0x0003, 0x00ea, + 0x00f1, 0x00f8, 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, 0x06c4, + 0x06d4, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, 0x06c4, 0x06d4, 0x0003, + 0x0103, 0x010a, 0x0111, 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, + 0x06c4, 0x06d4, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, 0x06c4, 0x06d4, + 0x0002, 0x011b, 0x013a, 0x0003, 0x011f, 0x0128, 0x0131, 0x0002, + // Entry 38540 - 3857F + 0x0122, 0x0125, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, 0x06eb, + 0x0002, 0x012b, 0x012e, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, + 0x06eb, 0x0002, 0x0134, 0x0137, 0x0001, 0x0051, 0x06e4, 0x0001, + 0x0051, 0x06eb, 0x0003, 0x013e, 0x0147, 0x0150, 0x0002, 0x0141, + 0x0144, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, 0x06eb, 0x0002, + 0x014a, 0x014d, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, 0x06eb, + 0x0002, 0x0153, 0x0156, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, + 0x06eb, 0x0003, 0x0163, 0x0000, 0x015d, 0x0001, 0x015f, 0x0002, + // Entry 38580 - 385BF + 0x0051, 0x06f2, 0x0716, 0x0001, 0x0165, 0x0002, 0x0051, 0x073a, + 0x0757, 0x0004, 0x0177, 0x0171, 0x016e, 0x0174, 0x0001, 0x0051, + 0x075b, 0x0001, 0x0051, 0x076f, 0x0001, 0x0000, 0x0514, 0x0001, + 0x0021, 0x05f2, 0x0004, 0x0188, 0x0182, 0x017f, 0x0185, 0x0001, + 0x001c, 0x14d2, 0x0001, 0x0021, 0x05f8, 0x0001, 0x0005, 0x0099, + 0x0001, 0x0005, 0x00a1, 0x0004, 0x0199, 0x0193, 0x0190, 0x0196, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x019e, 0x0002, 0x01a1, + // Entry 385C0 - 385FF + 0x01c3, 0x0003, 0x01a5, 0x0000, 0x01b4, 0x000d, 0x0051, 0xffff, + 0x077e, 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, 0x07b8, 0x07bf, + 0x07c6, 0x07d1, 0x07de, 0x07eb, 0x000d, 0x0051, 0xffff, 0x077e, + 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, 0x07b8, 0x07bf, 0x07c6, + 0x07d1, 0x07de, 0x07eb, 0x0003, 0x01c7, 0x0000, 0x01d6, 0x000d, + 0x0051, 0xffff, 0x077e, 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, + 0x07b8, 0x07bf, 0x07c6, 0x07d1, 0x07de, 0x07eb, 0x000d, 0x0051, + 0xffff, 0x077e, 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, 0x07b8, + // Entry 38600 - 3863F + 0x07bf, 0x07c6, 0x07d1, 0x07de, 0x07eb, 0x0004, 0x0000, 0x01ea, + 0x0000, 0x01ed, 0x0001, 0x0051, 0x07f0, 0x0002, 0x0000, 0x01f0, + 0x0003, 0x01f4, 0x0328, 0x028e, 0x0098, 0x0051, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38640 - 3867F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x081c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38680 - 386BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0803, 0x0098, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 386C0 - 386FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x217e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x21db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38700 - 3873F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38740 - 3877F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x0098, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x21ad, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 38780 - 387BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 387C0 - 387FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0x0003, 0x0004, 0x048c, 0x0868, 0x0012, 0x0017, + 0x0024, 0x00a1, 0x0000, 0x00ed, 0x0000, 0x0139, 0x0164, 0x037c, + 0x03c9, 0x0411, 0x0000, 0x0000, 0x0000, 0x0000, 0x041e, 0x0436, + 0x047e, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, + // Entry 38800 - 3883F + 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, 0x002b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0090, 0x0002, 0x002e, 0x005f, + 0x0003, 0x0032, 0x0041, 0x0050, 0x000d, 0x0051, 0xffff, 0x083d, + 0x0844, 0x084b, 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, 0x0875, + 0x087c, 0x0884, 0x088c, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, + 0x3871, 0x3874, 0x000d, 0x0051, 0xffff, 0x083d, 0x0844, 0x084b, + 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, 0x0875, 0x087c, 0x0884, + // Entry 38840 - 3887F + 0x088c, 0x0003, 0x0063, 0x0072, 0x0081, 0x000d, 0x0051, 0xffff, + 0x083d, 0x0844, 0x084b, 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, + 0x0875, 0x087c, 0x0884, 0x088c, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0051, 0xffff, 0x083d, 0x0844, + 0x084b, 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, 0x0875, 0x087c, + 0x0884, 0x088c, 0x0004, 0x009e, 0x0098, 0x0095, 0x009b, 0x0001, + 0x0051, 0x0894, 0x0001, 0x0051, 0x08ad, 0x0001, 0x0051, 0x08c0, + // Entry 38880 - 388BF + 0x0001, 0x0014, 0x146e, 0x0001, 0x00a3, 0x0002, 0x00a6, 0x00c9, + 0x0002, 0x00a9, 0x00b9, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, + 0x03d8, 0x03de, 0x03e4, 0x391a, 0x3921, 0x03f9, 0x392a, 0x040b, + 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, + 0x3871, 0x3874, 0x0422, 0x0003, 0x00cd, 0x0000, 0x00dd, 0x000e, + 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x391a, + 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, + // Entry 388C0 - 388FF + 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x391a, + 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, 0x041c, 0x0001, + 0x00ef, 0x0002, 0x00f2, 0x0115, 0x0002, 0x00f5, 0x0105, 0x000e, + 0x0000, 0xffff, 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x0450, + 0x0458, 0x0460, 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x0003, + 0x0119, 0x0000, 0x0129, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, + // Entry 38900 - 3893F + 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, + 0x3946, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, + 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, + 0x3946, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0142, 0x0000, 0x0153, 0x0004, 0x0150, 0x014a, 0x0147, + 0x014d, 0x0001, 0x001c, 0x128b, 0x0001, 0x001c, 0x12a6, 0x0001, + 0x0010, 0x02f4, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0161, 0x015b, + 0x0158, 0x015e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 38940 - 3897F + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x016d, + 0x01d2, 0x0229, 0x025e, 0x032f, 0x0349, 0x035a, 0x036b, 0x0002, + 0x0170, 0x01a1, 0x0003, 0x0174, 0x0183, 0x0192, 0x000d, 0x000d, + 0xffff, 0x0059, 0x3395, 0x3399, 0x339d, 0x336c, 0x3230, 0x3234, + 0x33a1, 0x33a5, 0x33a9, 0x3303, 0x33ad, 0x000d, 0x0000, 0xffff, + 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, + 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0051, 0xffff, 0x08c8, + 0x08d0, 0x08da, 0x08e1, 0x08e7, 0x08ec, 0x08f2, 0x08f8, 0x08ff, + // Entry 38980 - 389BF + 0x0908, 0x0910, 0x0919, 0x0003, 0x01a5, 0x01b4, 0x01c3, 0x000d, + 0x000d, 0xffff, 0x0059, 0x3395, 0x3399, 0x339d, 0x336c, 0x3230, + 0x3234, 0x33a1, 0x33a5, 0x33a9, 0x3303, 0x33ad, 0x000d, 0x0000, + 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, + 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0051, 0xffff, + 0x08c8, 0x08d0, 0x08da, 0x08e1, 0x08e7, 0x08ec, 0x08f2, 0x08f8, + 0x08ff, 0x0908, 0x0910, 0x0919, 0x0002, 0x01d5, 0x01ff, 0x0005, + 0x01db, 0x01e4, 0x01f6, 0x0000, 0x01ed, 0x0007, 0x0005, 0x123c, + // Entry 389C0 - 389FF + 0x242d, 0x2431, 0x2435, 0x2439, 0x243d, 0x1251, 0x0007, 0x0000, + 0x297c, 0x298e, 0x38ae, 0x3911, 0x3911, 0x298e, 0x298e, 0x0007, + 0x0005, 0x123c, 0x242d, 0x2431, 0x2435, 0x2439, 0x243d, 0x1251, + 0x0007, 0x001c, 0x1383, 0x21f1, 0x21ff, 0x220c, 0x2219, 0x2226, + 0x13b2, 0x0005, 0x0205, 0x020e, 0x0220, 0x0000, 0x0217, 0x0007, + 0x0005, 0x123c, 0x242d, 0x2431, 0x2435, 0x2439, 0x243d, 0x1251, + 0x0007, 0x0000, 0x297c, 0x298e, 0x38ae, 0x3911, 0x3911, 0x298e, + 0x298e, 0x0007, 0x0005, 0x123c, 0x242d, 0x2431, 0x2435, 0x2439, + // Entry 38A00 - 38A3F + 0x243d, 0x1251, 0x0007, 0x001c, 0x1383, 0x21f1, 0x21ff, 0x220c, + 0x2219, 0x2226, 0x13b2, 0x0002, 0x022c, 0x0245, 0x0003, 0x0230, + 0x0237, 0x023e, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, + 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, 0x0003, + 0x0249, 0x0250, 0x0257, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, + 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, + // Entry 38A40 - 38A7F + 0x0002, 0x0261, 0x02c8, 0x0003, 0x0265, 0x0286, 0x02a7, 0x0008, + 0x0271, 0x0277, 0x026e, 0x027a, 0x027d, 0x0280, 0x0283, 0x0274, + 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0051, + 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0936, 0x0001, + 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0001, 0x0029, 0x0202, + 0x0008, 0x0292, 0x0298, 0x028f, 0x029b, 0x029e, 0x02a1, 0x02a4, + 0x0295, 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0051, 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0936, + // Entry 38A80 - 38ABF + 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0001, 0x0029, + 0x0202, 0x0008, 0x02b3, 0x02b9, 0x02b0, 0x02bc, 0x02bf, 0x02c2, + 0x02c5, 0x02b6, 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0051, 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, + 0x0936, 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0001, + 0x0029, 0x0202, 0x0003, 0x02cc, 0x02ed, 0x030e, 0x0008, 0x02d8, + 0x02de, 0x02d5, 0x02e1, 0x02e4, 0x02e7, 0x02ea, 0x02db, 0x0001, + 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0051, 0x092d, + // Entry 38AC0 - 38AFF + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0940, 0x0001, 0x0005, + 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, 0x001c, 0x1436, 0x0008, + 0x02f9, 0x02ff, 0x02f6, 0x0302, 0x0305, 0x0308, 0x030b, 0x02fc, + 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0051, + 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0940, 0x0001, + 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, 0x001c, 0x1436, + 0x0008, 0x031a, 0x0320, 0x0317, 0x0323, 0x0326, 0x0329, 0x032c, + 0x031d, 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, + // Entry 38B00 - 38B3F + 0x0051, 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0940, + 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, 0x001c, + 0x1436, 0x0003, 0x033e, 0x0000, 0x0333, 0x0002, 0x0336, 0x033a, + 0x0002, 0x001c, 0x1446, 0x2232, 0x0002, 0x0051, 0x0947, 0x095a, + 0x0002, 0x0341, 0x0345, 0x0002, 0x0029, 0x0269, 0x0275, 0x0002, + 0x0010, 0x02ea, 0x02f1, 0x0004, 0x0357, 0x0351, 0x034e, 0x0354, + 0x0001, 0x001c, 0x14a6, 0x0001, 0x001c, 0x14bf, 0x0001, 0x0029, + 0x027f, 0x0001, 0x0002, 0x0860, 0x0004, 0x0368, 0x0362, 0x035f, + // Entry 38B40 - 38B7F + 0x0365, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0379, 0x0373, + 0x0370, 0x0376, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x037e, + 0x0002, 0x0381, 0x03a5, 0x0003, 0x0385, 0x0000, 0x0395, 0x000e, + 0x0000, 0x3a0d, 0x054c, 0x0553, 0x39f4, 0x39fb, 0x0568, 0x3a01, + 0x3a08, 0x3a15, 0x2600, 0x3a1b, 0x3a21, 0x3a27, 0x3a2a, 0x000e, + 0x0000, 0x3a0d, 0x054c, 0x0553, 0x39f4, 0x39fb, 0x0568, 0x3a01, + // Entry 38B80 - 38BBF + 0x3a08, 0x3a15, 0x2600, 0x3a1b, 0x3a21, 0x3a27, 0x3a2a, 0x0003, + 0x03a9, 0x0000, 0x03b9, 0x000e, 0x0000, 0x3a0d, 0x054c, 0x0553, + 0x39f4, 0x39fb, 0x0568, 0x3a01, 0x3a08, 0x3a15, 0x2600, 0x3a1b, + 0x3a21, 0x3a27, 0x3a2a, 0x000e, 0x0000, 0x3a0d, 0x054c, 0x0553, + 0x39f4, 0x39fb, 0x0568, 0x3a01, 0x3a08, 0x3a15, 0x2600, 0x3a1b, + 0x3a21, 0x3a27, 0x3a2a, 0x0001, 0x03cb, 0x0002, 0x03ce, 0x03ef, + 0x0002, 0x03d1, 0x03e0, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, + 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, + // Entry 38BC0 - 38BFF + 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x0003, 0x03f3, 0x0000, 0x0402, 0x000d, 0x0000, 0xffff, + 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, + 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, + 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, + 0x05ec, 0x05f2, 0x05f8, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0417, 0x0001, 0x0419, 0x0001, 0x041b, 0x0001, 0x0000, 0x06c8, + // Entry 38C00 - 38C3F + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0425, 0x0004, + 0x0433, 0x042d, 0x042a, 0x0430, 0x0001, 0x001c, 0x128b, 0x0001, + 0x001c, 0x12a6, 0x0001, 0x0010, 0x02f4, 0x0001, 0x001c, 0x14e1, + 0x0001, 0x0438, 0x0002, 0x043b, 0x045c, 0x0002, 0x043e, 0x044d, + 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x3a2f, 0x19eb, + 0x19f2, 0x3a33, 0x1a01, 0x1a06, 0x1a0b, 0x3a38, 0x3a3f, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x0460, + // Entry 38C40 - 38C7F + 0x0000, 0x046f, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, + 0x3a2f, 0x19eb, 0x19f2, 0x3a33, 0x1a01, 0x1a06, 0x1a0b, 0x3a38, + 0x3a3f, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x3a2f, + 0x19eb, 0x19f2, 0x3a33, 0x1a01, 0x1a06, 0x1a0b, 0x3a38, 0x3a3f, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0484, 0x0001, 0x0486, + 0x0001, 0x0488, 0x0002, 0x0051, 0x0964, 0x0974, 0x0040, 0x04cd, + 0x0000, 0x0000, 0x04d2, 0x04e9, 0x04fb, 0x050d, 0x0524, 0x0536, + 0x0548, 0x055f, 0x0571, 0x0583, 0x059e, 0x05b4, 0x0000, 0x0000, + // Entry 38C80 - 38CBF + 0x0000, 0x05ca, 0x05e3, 0x05f5, 0x0000, 0x0000, 0x0000, 0x0607, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x0620, 0x0634, + 0x0648, 0x065c, 0x0670, 0x0684, 0x0698, 0x06ac, 0x06c0, 0x06d4, + 0x06e8, 0x06fc, 0x0710, 0x0724, 0x0738, 0x074c, 0x0760, 0x0774, + 0x0788, 0x079c, 0x0000, 0x07b0, 0x0000, 0x07b5, 0x07cb, 0x07dd, + 0x07ef, 0x0805, 0x0817, 0x0829, 0x083f, 0x0851, 0x0863, 0x0001, + 0x04cf, 0x0001, 0x0001, 0x0040, 0x0003, 0x04d6, 0x04d9, 0x04de, + 0x0001, 0x0029, 0x02a7, 0x0003, 0x0051, 0x097b, 0x0987, 0x0990, + // Entry 38CC0 - 38CFF + 0x0002, 0x04e1, 0x04e5, 0x0002, 0x0051, 0x09a8, 0x099d, 0x0002, + 0x0051, 0x09c0, 0x09b4, 0x0003, 0x04ed, 0x0000, 0x04f0, 0x0001, + 0x0029, 0x02a7, 0x0002, 0x04f3, 0x04f7, 0x0002, 0x0051, 0x09a8, + 0x099d, 0x0002, 0x0051, 0x09c0, 0x09b4, 0x0003, 0x04ff, 0x0000, + 0x0502, 0x0001, 0x0029, 0x02a7, 0x0002, 0x0505, 0x0509, 0x0002, + 0x0051, 0x09d6, 0x09cd, 0x0002, 0x0051, 0x09e9, 0x09e0, 0x0003, + 0x0511, 0x0514, 0x0519, 0x0001, 0x0005, 0x1c6d, 0x0003, 0x0051, + 0x09f3, 0x0a05, 0x0a14, 0x0002, 0x051c, 0x0520, 0x0002, 0x0051, + // Entry 38D00 - 38D3F + 0x0a38, 0x0a27, 0x0002, 0x0051, 0x0a5c, 0x0a4a, 0x0003, 0x0528, + 0x0000, 0x052b, 0x0001, 0x000b, 0x0c78, 0x0002, 0x052e, 0x0532, + 0x0002, 0x0051, 0x0a7c, 0x0a6f, 0x0002, 0x0051, 0x0a98, 0x0a8a, + 0x0003, 0x053a, 0x0000, 0x053d, 0x0001, 0x000b, 0x0c78, 0x0002, + 0x0540, 0x0544, 0x0002, 0x000b, 0x2780, 0x0c9c, 0x0002, 0x000b, + 0x278c, 0x0ca7, 0x0003, 0x054c, 0x054f, 0x0554, 0x0001, 0x0026, + 0x0e43, 0x0003, 0x0051, 0x0aa7, 0x0ab4, 0x0abe, 0x0002, 0x0557, + 0x055b, 0x0002, 0x0051, 0x0ad8, 0x0acc, 0x0002, 0x0051, 0x0af2, + // Entry 38D40 - 38D7F + 0x0ae5, 0x0003, 0x0563, 0x0000, 0x0566, 0x0001, 0x0026, 0x0e43, + 0x0002, 0x0569, 0x056d, 0x0002, 0x0051, 0x0ad8, 0x0acc, 0x0002, + 0x0051, 0x0af2, 0x0ae5, 0x0003, 0x0575, 0x0000, 0x0578, 0x0001, + 0x0026, 0x0e43, 0x0002, 0x057b, 0x057f, 0x0002, 0x0051, 0x0b0a, + 0x0b00, 0x0002, 0x0051, 0x0b1f, 0x0b15, 0x0004, 0x0588, 0x058b, + 0x0590, 0x059b, 0x0001, 0x001c, 0x16c6, 0x0003, 0x0051, 0x0b2a, + 0x0b39, 0x0b45, 0x0002, 0x0593, 0x0597, 0x0002, 0x0051, 0x0b63, + 0x0b55, 0x0002, 0x0051, 0x0b81, 0x0b72, 0x0001, 0x0051, 0x0b91, + // Entry 38D80 - 38DBF + 0x0004, 0x05a3, 0x0000, 0x05a6, 0x05b1, 0x0001, 0x001c, 0x175b, + 0x0002, 0x05a9, 0x05ad, 0x0002, 0x0051, 0x0ba1, 0x0ba1, 0x0002, + 0x0051, 0x0bad, 0x0bad, 0x0001, 0x0051, 0x0b91, 0x0004, 0x05b9, + 0x0000, 0x05bc, 0x05c7, 0x0001, 0x001c, 0x175b, 0x0002, 0x05bf, + 0x05c3, 0x0002, 0x001e, 0x03f1, 0x03f1, 0x0002, 0x001e, 0x03fb, + 0x03fb, 0x0001, 0x0051, 0x0b91, 0x0003, 0x05ce, 0x05d1, 0x05d8, + 0x0001, 0x0010, 0x05f5, 0x0005, 0x0051, 0x0bc4, 0x0bca, 0x0bcf, + 0x0bba, 0x0bd7, 0x0002, 0x05db, 0x05df, 0x0002, 0x0051, 0x0bf4, + // Entry 38DC0 - 38DFF + 0x0be9, 0x0002, 0x0051, 0x0c0c, 0x0c00, 0x0003, 0x05e7, 0x0000, + 0x05ea, 0x0001, 0x0010, 0x05f5, 0x0002, 0x05ed, 0x05f1, 0x0002, + 0x0051, 0x0bf4, 0x0be9, 0x0002, 0x0051, 0x0c0c, 0x0c00, 0x0003, + 0x05f9, 0x0000, 0x05fc, 0x0001, 0x0010, 0x05f5, 0x0002, 0x05ff, + 0x0603, 0x0002, 0x0051, 0x0c22, 0x0c19, 0x0002, 0x0051, 0x0c35, + 0x0c2c, 0x0001, 0x0609, 0x0001, 0x0051, 0x0c3f, 0x0003, 0x0000, + 0x0610, 0x0615, 0x0003, 0x0051, 0x0c4d, 0x0c5d, 0x0c6a, 0x0002, + 0x0618, 0x061c, 0x0002, 0x0051, 0x0c8a, 0x0c7b, 0x0002, 0x0051, + // Entry 38E00 - 38E3F + 0x0caa, 0x0c9a, 0x0003, 0x0000, 0x0624, 0x0629, 0x0003, 0x0051, + 0x0cbb, 0x0cc8, 0x0cd2, 0x0002, 0x062c, 0x0630, 0x0002, 0x0051, + 0x0c8a, 0x0c8a, 0x0002, 0x0051, 0x0caa, 0x0caa, 0x0003, 0x0000, + 0x0638, 0x063d, 0x0003, 0x0051, 0x0cbb, 0x0cc8, 0x0cd2, 0x0002, + 0x0640, 0x0644, 0x0002, 0x0051, 0x0c8a, 0x0c8a, 0x0002, 0x0051, + 0x0caa, 0x0caa, 0x0003, 0x0000, 0x064c, 0x0651, 0x0003, 0x0051, + 0x0ce0, 0x0cf6, 0x0d09, 0x0002, 0x0654, 0x0658, 0x0002, 0x0051, + 0x0d35, 0x0d20, 0x0002, 0x0051, 0x0d62, 0x0d4c, 0x0003, 0x0000, + // Entry 38E40 - 38E7F + 0x0660, 0x0665, 0x0003, 0x0051, 0x0d7a, 0x0d87, 0x0d91, 0x0002, + 0x0668, 0x066c, 0x0002, 0x0051, 0x0d35, 0x0d35, 0x0002, 0x0051, + 0x0d62, 0x0d62, 0x0003, 0x0000, 0x0674, 0x0679, 0x0003, 0x0051, + 0x0d7a, 0x0d87, 0x0d91, 0x0002, 0x067c, 0x0680, 0x0002, 0x0051, + 0x0d35, 0x0d35, 0x0002, 0x0051, 0x0d62, 0x0d62, 0x0003, 0x0000, + 0x0688, 0x068d, 0x0003, 0x0051, 0x0d9f, 0x0db4, 0x0dc6, 0x0002, + 0x0690, 0x0694, 0x0002, 0x0051, 0x0df0, 0x0ddc, 0x0002, 0x0051, + 0x0e1b, 0x0e06, 0x0003, 0x0000, 0x069c, 0x06a1, 0x0003, 0x0051, + // Entry 38E80 - 38EBF + 0x0e32, 0x0e3f, 0x0e49, 0x0002, 0x06a4, 0x06a8, 0x0002, 0x0051, + 0x0df0, 0x0df0, 0x0002, 0x0051, 0x0e1b, 0x0e1b, 0x0003, 0x0000, + 0x06b0, 0x06b5, 0x0003, 0x0051, 0x0e32, 0x0e3f, 0x0e49, 0x0002, + 0x06b8, 0x06bc, 0x0002, 0x0051, 0x0df0, 0x0df0, 0x0002, 0x0051, + 0x0e1b, 0x0e1b, 0x0003, 0x0000, 0x06c4, 0x06c9, 0x0003, 0x0051, + 0x0e57, 0x0e6c, 0x0e7e, 0x0002, 0x06cc, 0x06d0, 0x0002, 0x0051, + 0x0e94, 0x0e94, 0x0002, 0x0051, 0x0eaa, 0x0eaa, 0x0003, 0x0000, + 0x06d8, 0x06dd, 0x0003, 0x0051, 0x0ec1, 0x0ece, 0x0ed8, 0x0002, + // Entry 38EC0 - 38EFF + 0x06e0, 0x06e4, 0x0002, 0x0051, 0x0e94, 0x0e94, 0x0002, 0x0051, + 0x0eaa, 0x0eaa, 0x0003, 0x0000, 0x06ec, 0x06f1, 0x0003, 0x0051, + 0x0ec1, 0x0ece, 0x0ed8, 0x0002, 0x06f4, 0x06f8, 0x0002, 0x0051, + 0x0e94, 0x0e94, 0x0002, 0x0051, 0x0eaa, 0x0eaa, 0x0003, 0x0000, + 0x0700, 0x0705, 0x0003, 0x0051, 0x0ee6, 0x0efb, 0x0f0d, 0x0002, + 0x0708, 0x070c, 0x0002, 0x0051, 0x0f23, 0x0f23, 0x0002, 0x0051, + 0x0f39, 0x0f39, 0x0003, 0x0000, 0x0714, 0x0719, 0x0003, 0x0051, + 0x0f50, 0x0f5d, 0x0f67, 0x0002, 0x071c, 0x0720, 0x0002, 0x0051, + // Entry 38F00 - 38F3F + 0x0f23, 0x0f23, 0x0002, 0x0051, 0x0f39, 0x0f39, 0x0003, 0x0000, + 0x0728, 0x072d, 0x0003, 0x0051, 0x0f50, 0x0f5d, 0x0f67, 0x0002, + 0x0730, 0x0734, 0x0002, 0x0051, 0x0f23, 0x0f23, 0x0002, 0x0051, + 0x0f39, 0x0f39, 0x0003, 0x0000, 0x073c, 0x0741, 0x0003, 0x0051, + 0x0f72, 0x0f86, 0x0f97, 0x0002, 0x0744, 0x0748, 0x0002, 0x0051, + 0x0fac, 0x0fac, 0x0002, 0x0051, 0x0fc1, 0x0fc1, 0x0003, 0x0000, + 0x0750, 0x0755, 0x0003, 0x0051, 0x0fd7, 0x0fe4, 0x0fee, 0x0002, + 0x0758, 0x075c, 0x0002, 0x0051, 0x0fac, 0x0fac, 0x0002, 0x0051, + // Entry 38F40 - 38F7F + 0x0fc1, 0x0fc1, 0x0003, 0x0000, 0x0764, 0x0769, 0x0003, 0x0051, + 0x0fd7, 0x0fe4, 0x0fee, 0x0002, 0x076c, 0x0770, 0x0002, 0x0051, + 0x0fac, 0x0fac, 0x0002, 0x0051, 0x0fc1, 0x0fc1, 0x0003, 0x0000, + 0x0778, 0x077d, 0x0003, 0x0051, 0x0ffc, 0x100c, 0x1019, 0x0002, + 0x0780, 0x0784, 0x0002, 0x0051, 0x1039, 0x102a, 0x0002, 0x0051, + 0x1059, 0x1049, 0x0003, 0x0000, 0x078c, 0x0791, 0x0003, 0x0051, + 0x106a, 0x1078, 0x1083, 0x0002, 0x0794, 0x0798, 0x0002, 0x0051, + 0x1039, 0x1039, 0x0002, 0x0051, 0x1059, 0x1059, 0x0003, 0x0000, + // Entry 38F80 - 38FBF + 0x07a0, 0x07a5, 0x0003, 0x0051, 0x106a, 0x1078, 0x1083, 0x0002, + 0x07a8, 0x07ac, 0x0002, 0x0051, 0x1039, 0x1039, 0x0002, 0x0051, + 0x1059, 0x1059, 0x0001, 0x07b2, 0x0001, 0x0007, 0x07cc, 0x0003, + 0x07b9, 0x07bc, 0x07c0, 0x0001, 0x0006, 0x03db, 0x0002, 0x0006, + 0xffff, 0x03e0, 0x0002, 0x07c3, 0x07c7, 0x0002, 0x0051, 0x109e, + 0x1092, 0x0002, 0x0051, 0x10b8, 0x10ab, 0x0003, 0x07cf, 0x0000, + 0x07d2, 0x0001, 0x0000, 0x2143, 0x0002, 0x07d5, 0x07d9, 0x0002, + 0x0051, 0x10c6, 0x10c6, 0x0002, 0x0051, 0x10cf, 0x10cf, 0x0003, + // Entry 38FC0 - 38FFF + 0x07e1, 0x0000, 0x07e4, 0x0001, 0x0000, 0x2143, 0x0002, 0x07e7, + 0x07eb, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, 0x0000, 0x1d7d, + 0x1d7d, 0x0003, 0x07f3, 0x07f6, 0x07fa, 0x0001, 0x001c, 0x0b08, + 0x0002, 0x001c, 0xffff, 0x1f10, 0x0002, 0x07fd, 0x0801, 0x0002, + 0x0051, 0x10e7, 0x10d9, 0x0002, 0x0051, 0x1105, 0x10f6, 0x0003, + 0x0809, 0x0000, 0x080c, 0x0001, 0x0001, 0x075a, 0x0002, 0x080f, + 0x0813, 0x0002, 0x0051, 0x1121, 0x1115, 0x0002, 0x0051, 0x113b, + 0x112e, 0x0003, 0x081b, 0x0000, 0x081e, 0x0001, 0x0000, 0x1f9a, + // Entry 39000 - 3903F + 0x0002, 0x0821, 0x0825, 0x0002, 0x0000, 0x1ace, 0x1ace, 0x0002, + 0x0000, 0x1ad5, 0x1ad5, 0x0003, 0x082d, 0x0830, 0x0834, 0x0001, + 0x001c, 0x1f87, 0x0002, 0x0006, 0xffff, 0x04b8, 0x0002, 0x0837, + 0x083b, 0x0002, 0x0051, 0x1158, 0x1149, 0x0002, 0x0051, 0x1178, + 0x1168, 0x0003, 0x0843, 0x0000, 0x0846, 0x0001, 0x001e, 0x0171, + 0x0002, 0x0849, 0x084d, 0x0002, 0x0051, 0x1195, 0x1189, 0x0002, + 0x0051, 0x11a2, 0x11a2, 0x0003, 0x0855, 0x0000, 0x0858, 0x0001, + 0x0000, 0x2002, 0x0002, 0x085b, 0x085f, 0x0002, 0x0026, 0x00bf, + // Entry 39040 - 3907F + 0x00bf, 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0001, 0x0865, 0x0001, + 0x0051, 0x11af, 0x0004, 0x086d, 0x0872, 0x0877, 0x0886, 0x0003, + 0x0000, 0x1dc7, 0x3839, 0x3916, 0x0003, 0x0051, 0x11bd, 0x11ca, + 0x11d3, 0x0002, 0x0000, 0x087a, 0x0003, 0x0000, 0x0881, 0x087e, + 0x0001, 0x0029, 0x0a1c, 0x0003, 0x0051, 0xffff, 0x11dc, 0x11fa, + 0x0002, 0x0a6d, 0x0889, 0x0003, 0x088d, 0x09cd, 0x092d, 0x009e, + 0x0051, 0xffff, 0xffff, 0xffff, 0xffff, 0x12c8, 0x1334, 0x13ca, + 0x141b, 0x1460, 0x14a8, 0x14f9, 0x154d, 0x1598, 0x1670, 0x16be, + // Entry 39080 - 390BF + 0x1712, 0x1784, 0x17d5, 0x182c, 0x189b, 0x1925, 0x1997, 0x1a0c, + 0x1a69, 0x1aba, 0xffff, 0xffff, 0x1b39, 0xffff, 0x1bab, 0xffff, + 0x1c17, 0x1c65, 0x1cad, 0x1cf5, 0xffff, 0xffff, 0x1d7f, 0x1dd3, + 0x1e32, 0xffff, 0xffff, 0xffff, 0x1ec0, 0xffff, 0x1f3a, 0x1f9d, + 0xffff, 0x2025, 0x208e, 0x20f4, 0xffff, 0xffff, 0xffff, 0xffff, + 0x21ab, 0xffff, 0xffff, 0x223b, 0x22b0, 0xffff, 0xffff, 0x2369, + 0x23e4, 0x2438, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2529, 0x256e, 0x25bc, 0x2607, 0x2652, 0xffff, 0xffff, 0x2718, + // Entry 390C0 - 390FF + 0xffff, 0x2776, 0xffff, 0xffff, 0x2813, 0xffff, 0x28ca, 0xffff, + 0xffff, 0xffff, 0xffff, 0x297c, 0xffff, 0x29f8, 0x2a6a, 0x2adf, + 0x2b36, 0xffff, 0xffff, 0xffff, 0x2bb9, 0x2c1f, 0x2c82, 0xffff, + 0xffff, 0x2d03, 0x2d99, 0x2df3, 0x2e38, 0xffff, 0xffff, 0x2ebf, + 0x2f10, 0x2f55, 0xffff, 0x2fc6, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3106, 0x3157, 0x31a2, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3297, 0xffff, 0xffff, 0x330f, 0xffff, + 0x3369, 0xffff, 0x33df, 0x342d, 0x348a, 0xffff, 0x34ee, 0x3548, + // Entry 39100 - 3913F + 0xffff, 0xffff, 0xffff, 0x35e6, 0x3634, 0xffff, 0xffff, 0x1216, + 0x137f, 0x15dd, 0x1625, 0xffff, 0xffff, 0x2867, 0x3082, 0x009e, + 0x0051, 0x125b, 0x1274, 0x1290, 0x12ad, 0x12e6, 0x1347, 0x13df, + 0x142c, 0x1472, 0x14bd, 0x150f, 0x1560, 0x15a9, 0x1684, 0x16d4, + 0x1732, 0x1799, 0x17ec, 0x184b, 0x18c3, 0x1945, 0x19b8, 0x1a25, + 0x1a7e, 0x1ad1, 0x1b11, 0x1b24, 0x1b4f, 0x1b8d, 0x1bc2, 0x1c02, + 0x1c2b, 0x1c77, 0x1cbf, 0x1d0c, 0x1d4c, 0x1d67, 0x1d95, 0x1deb, + 0x1e43, 0x1e77, 0x1e89, 0x1ea8, 0x1edc, 0x1f26, 0x1f55, 0x1fb9, + // Entry 39140 - 3917F + 0x2003, 0x2042, 0x20aa, 0x2105, 0x2139, 0x2155, 0x2180, 0x2197, + 0x21c0, 0x21fc, 0x2218, 0x225c, 0x22d3, 0x2344, 0x2356, 0x238c, + 0x23fa, 0x2449, 0x247d, 0x2498, 0x24b3, 0x24c9, 0x24e8, 0x2508, + 0x253a, 0x2582, 0x25cf, 0x261a, 0x2677, 0x26d3, 0x26f5, 0x272b, + 0x2763, 0x278e, 0x27d0, 0x27fb, 0x2829, 0x28af, 0x28de, 0x2918, + 0x292d, 0x2949, 0x2960, 0x2999, 0x29e5, 0x2a18, 0x2a8b, 0x2af6, + 0x2b49, 0x2b81, 0x2b95, 0x2ba7, 0x2bd5, 0x2c3a, 0x2c99, 0x2cd9, + 0x2cea, 0x2d23, 0x2db1, 0x2e04, 0x2e4f, 0x2e8f, 0x2ea1, 0x2ed4, + // Entry 39180 - 391BF + 0x2f21, 0x2f6c, 0x2fac, 0x2fea, 0x3044, 0x3059, 0x306c, 0x30d6, + 0x30f2, 0x311b, 0x316a, 0x31b4, 0x31ea, 0x3208, 0x3226, 0x3242, + 0x325e, 0x3273, 0x3285, 0x32aa, 0x32e2, 0x32fb, 0x3321, 0x3357, + 0x3384, 0x33cc, 0x33f3, 0x3446, 0x349e, 0x34d8, 0x3506, 0x355f, + 0x359f, 0x35b2, 0x35ca, 0x35fa, 0x364e, 0x232b, 0x2d75, 0x1227, + 0x1392, 0x15ef, 0x1638, 0xffff, 0x27e9, 0x2879, 0x3098, 0x009e, + 0x0051, 0xffff, 0xffff, 0xffff, 0xffff, 0x130c, 0x1362, 0x13fc, + 0x1445, 0x148c, 0x14da, 0x152d, 0x157b, 0x15c2, 0x16a0, 0x16f2, + // Entry 391C0 - 391FF + 0x175a, 0x17b6, 0x180b, 0x1872, 0x18f3, 0x196d, 0x19e1, 0x1a46, + 0x1a9b, 0x1af0, 0xffff, 0xffff, 0x1b6d, 0xffff, 0x1be1, 0xffff, + 0x1c47, 0x1c91, 0x1cd9, 0x1d2b, 0xffff, 0xffff, 0x1db3, 0x1e0b, + 0x1e5c, 0xffff, 0xffff, 0xffff, 0x1f00, 0xffff, 0x1f78, 0x1fdd, + 0xffff, 0x2067, 0x20ce, 0x211e, 0xffff, 0xffff, 0xffff, 0xffff, + 0x21dd, 0xffff, 0xffff, 0x2285, 0x22fe, 0xffff, 0xffff, 0x23b7, + 0x2418, 0x2462, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2553, 0x259e, 0x25ea, 0x2635, 0x26a4, 0xffff, 0xffff, 0x2746, + // Entry 39200 - 3923F + 0xffff, 0x27ae, 0xffff, 0xffff, 0x2847, 0xffff, 0x28fa, 0xffff, + 0xffff, 0xffff, 0xffff, 0x29be, 0xffff, 0x2a40, 0x2ab4, 0x2b15, + 0x2b64, 0xffff, 0xffff, 0xffff, 0x2bf9, 0x2c5d, 0x2cb8, 0xffff, + 0xffff, 0x2d4b, 0x2dd1, 0x2e1d, 0x2e6e, 0xffff, 0xffff, 0x2ef1, + 0x2f3a, 0x2f8b, 0xffff, 0x3016, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3138, 0x3185, 0x31ce, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x32c5, 0xffff, 0xffff, 0x333b, 0xffff, + 0x33a7, 0xffff, 0x340f, 0x3467, 0x34ba, 0xffff, 0x3526, 0x357e, + // Entry 39240 - 3927F + 0xffff, 0xffff, 0xffff, 0x3616, 0x3670, 0xffff, 0xffff, 0x1240, + 0x13ad, 0x1609, 0x1653, 0xffff, 0xffff, 0x2893, 0x30b6, 0x0003, + 0x0a71, 0x0ba3, 0x0b0a, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2243, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x224c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39280 - 392BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 392C0 - 392FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x01ea, 0x0097, 0x001c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2243, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39300 - 3933F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x224c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39340 - 3937F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39380 - 393BF + 0xffff, 0xffff, 0xffff, 0xffff, 0x01ea, 0x0097, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2247, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2250, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 393C0 - 393FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39400 - 3943F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ee, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39440 - 3947F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, + 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39480 - 394BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 394C0 - 394FF + 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39500 - 3953F + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, + 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + // Entry 39540 - 3957F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, + // Entry 39580 - 395BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, + 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 395C0 - 395FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + // Entry 39600 - 3963F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0004, + 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0000, 0x0000, 0x0000, + // Entry 39640 - 3967F + 0x002b, 0x0001, 0x002d, 0x0003, 0x0031, 0x0097, 0x0064, 0x0031, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, + 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39680 - 396BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 396C0 - 396FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, + 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0009, 0x0001, 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, + 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39700 - 3973F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, + 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39740 - 3977F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39780 - 397BF + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, + 0x0003, 0x0004, 0x015f, 0x03d1, 0x0012, 0x0017, 0x0023, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0057, 0x0076, 0x012f, 0x0000, 0x013b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0147, 0x0000, 0x0153, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001e, 0x0001, 0x0020, + 0x0001, 0x0010, 0x004c, 0x0006, 0x002a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x004f, 0x0002, 0x002d, 0x003e, 0x0001, 0x002f, 0x000d, + 0x0044, 0xffff, 0x00f6, 0x00f9, 0x00fc, 0x00ff, 0x30f6, 0x30f9, + // Entry 397C0 - 397FF + 0x30fc, 0x30ff, 0x3102, 0x3105, 0x3109, 0x310d, 0x0001, 0x0040, + 0x000d, 0x0044, 0xffff, 0x00f6, 0x00f9, 0x00fc, 0x00ff, 0x30f6, + 0x30f9, 0x30fc, 0x30ff, 0x3102, 0x3105, 0x3109, 0x310d, 0x0004, + 0x0000, 0x0000, 0x0000, 0x0054, 0x0001, 0x0052, 0x0000, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x0000, 0x0065, + 0x0001, 0x0062, 0x0001, 0x0010, 0x004c, 0x0004, 0x0073, 0x006d, + 0x006a, 0x0070, 0x0001, 0x0052, 0x0012, 0x0001, 0x0052, 0x0012, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0000, + // Entry 39800 - 3983F + 0x007f, 0x0098, 0x00b1, 0x010a, 0x0113, 0x0000, 0x011e, 0x0002, + 0x0082, 0x008d, 0x0001, 0x0084, 0x0007, 0x001c, 0x1383, 0x2255, + 0x225d, 0x2264, 0x226b, 0x2272, 0x13b2, 0x0001, 0x008f, 0x0007, + 0x001c, 0x1383, 0x2255, 0x225d, 0x2264, 0x226b, 0x2272, 0x13b2, + 0x0002, 0x009b, 0x00a6, 0x0003, 0x0000, 0x0000, 0x009f, 0x0005, + 0x0029, 0xffff, 0x01bd, 0x01cc, 0x01db, 0x01ea, 0x0003, 0x0000, + 0x0000, 0x00aa, 0x0005, 0x0029, 0xffff, 0x01bd, 0x01cc, 0x01db, + 0x01ea, 0x0002, 0x00b4, 0x00eb, 0x0003, 0x00b8, 0x00c1, 0x00e2, + // Entry 39840 - 3987F + 0x0002, 0x00bb, 0x00be, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0008, 0x00cd, 0x00d3, 0x00ca, 0x00d6, 0x00d9, 0x00dc, + 0x00df, 0x00d0, 0x0001, 0x0051, 0x0922, 0x0001, 0x001c, 0x0494, + 0x0001, 0x0051, 0x092d, 0x0001, 0x001c, 0x0499, 0x0001, 0x0051, + 0x0940, 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, + 0x001c, 0x1436, 0x0002, 0x00e5, 0x00e8, 0x0001, 0x0051, 0x0936, + 0x0001, 0x0029, 0x0226, 0x0003, 0x00ef, 0x00f8, 0x0101, 0x0002, + 0x00f2, 0x00f5, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, + // Entry 39880 - 398BF + 0x0002, 0x00fb, 0x00fe, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, + 0x0499, 0x0002, 0x0104, 0x0107, 0x0001, 0x0051, 0x0940, 0x0001, + 0x0005, 0x130a, 0x0001, 0x010c, 0x0002, 0x0000, 0x010f, 0x0002, + 0x0029, 0x026e, 0x027a, 0x0004, 0x011b, 0x0000, 0x0000, 0x0118, + 0x0001, 0x0002, 0x0860, 0x0001, 0x0014, 0x146e, 0x0004, 0x012c, + 0x0126, 0x0123, 0x0129, 0x0001, 0x0052, 0x0012, 0x0001, 0x0052, + 0x0012, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, 0x0001, 0x0138, + // Entry 398C0 - 398FF + 0x0001, 0x0010, 0x004c, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0142, 0x0001, 0x0144, 0x0001, 0x0010, 0x004c, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0001, 0x0150, + 0x0001, 0x0010, 0x004c, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x015a, 0x0001, 0x015c, 0x0001, 0x0010, 0x004c, 0x003e, + 0x0000, 0x0000, 0x0000, 0x019e, 0x01a8, 0x0000, 0x01b2, 0x01c1, + 0x01d5, 0x01e9, 0x01f3, 0x0000, 0x01fd, 0x0207, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0215, 0x021f, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 39900 - 3993F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0229, 0x0233, + 0x0242, 0x0251, 0x025b, 0x026f, 0x027e, 0x0288, 0x029c, 0x02ab, + 0x02ba, 0x02ce, 0x02dd, 0x02ec, 0x0300, 0x0314, 0x0323, 0x0337, + 0x0346, 0x0350, 0x0364, 0x0000, 0x0000, 0x0000, 0x0373, 0x037d, + 0x0000, 0x0387, 0x0391, 0x03a3, 0x03b5, 0x03bf, 0x0003, 0x0000, + 0x0000, 0x01a2, 0x0001, 0x01a4, 0x0002, 0x0052, 0x0032, 0x0020, + 0x0003, 0x0000, 0x0000, 0x01ac, 0x0001, 0x01ae, 0x0002, 0x0052, + 0x0032, 0x0020, 0x0003, 0x0000, 0x01b6, 0x01bb, 0x0003, 0x0052, + // Entry 39940 - 3997F + 0x0045, 0x0057, 0x0066, 0x0001, 0x01bd, 0x0002, 0x001c, 0x15df, + 0x15c7, 0x0003, 0x0000, 0x01c5, 0x01ca, 0x0003, 0x0052, 0x0079, + 0x0087, 0x0092, 0x0002, 0x01cd, 0x01d1, 0x0002, 0x001c, 0x161f, + 0x161f, 0x0002, 0x0051, 0x0a8a, 0x0a8a, 0x0003, 0x0000, 0x01d9, + 0x01de, 0x0003, 0x0052, 0x0079, 0x0087, 0x0092, 0x0002, 0x01e1, + 0x01e5, 0x0002, 0x000b, 0x0c9c, 0x0c9c, 0x0002, 0x000b, 0x0ca7, + 0x0ca7, 0x0003, 0x0000, 0x0000, 0x01ed, 0x0001, 0x01ef, 0x0002, + 0x0052, 0x00b4, 0x00a1, 0x0003, 0x0000, 0x0000, 0x01f7, 0x0001, + // Entry 39980 - 399BF + 0x01f9, 0x0002, 0x0052, 0x00b4, 0x00a1, 0x0003, 0x0000, 0x0000, + 0x0201, 0x0001, 0x0203, 0x0002, 0x001c, 0x1712, 0x16fd, 0x0004, + 0x0000, 0x0000, 0x020c, 0x0212, 0x0001, 0x020e, 0x0002, 0x001c, + 0x1760, 0x1760, 0x0001, 0x0052, 0x00c8, 0x0003, 0x0000, 0x0000, + 0x0219, 0x0001, 0x021b, 0x0002, 0x0052, 0x00e8, 0x00d6, 0x0003, + 0x0000, 0x0000, 0x0223, 0x0001, 0x0225, 0x0002, 0x0052, 0x00e8, + 0x00d6, 0x0003, 0x0000, 0x0000, 0x022d, 0x0001, 0x022f, 0x0002, + 0x001c, 0x1859, 0x1843, 0x0003, 0x0000, 0x0237, 0x023c, 0x0003, + // Entry 399C0 - 399FF + 0x0051, 0x0c4d, 0x0c5d, 0x0c6a, 0x0001, 0x023e, 0x0002, 0x001c, + 0x1859, 0x1843, 0x0003, 0x0000, 0x0000, 0x0246, 0x0002, 0x0249, + 0x024d, 0x0002, 0x001c, 0x18bd, 0x18bd, 0x0002, 0x0052, 0x00fb, + 0x00fb, 0x0003, 0x0000, 0x0000, 0x0255, 0x0001, 0x0257, 0x0002, + 0x0052, 0x0124, 0x0108, 0x0003, 0x0000, 0x025f, 0x0264, 0x0003, + 0x0052, 0x0142, 0x0152, 0x015f, 0x0002, 0x0267, 0x026b, 0x0002, + 0x0052, 0x0186, 0x0170, 0x0002, 0x0052, 0x01ad, 0x019d, 0x0003, + 0x0000, 0x0000, 0x0273, 0x0002, 0x0276, 0x027a, 0x0002, 0x001e, + // Entry 39A00 - 39A3F + 0x0176, 0x0176, 0x0002, 0x0051, 0x11a2, 0x11a2, 0x0003, 0x0000, + 0x0000, 0x0282, 0x0001, 0x0284, 0x0002, 0x0052, 0x01d9, 0x01be, + 0x0003, 0x0000, 0x028c, 0x0291, 0x0003, 0x0052, 0x01f6, 0x0205, + 0x0211, 0x0002, 0x0294, 0x0298, 0x0002, 0x0052, 0x0236, 0x0221, + 0x0002, 0x0052, 0x025b, 0x024c, 0x0003, 0x0000, 0x0000, 0x02a0, + 0x0002, 0x02a3, 0x02a7, 0x0002, 0x0052, 0x026b, 0x026b, 0x0002, + 0x0052, 0x027e, 0x027e, 0x0003, 0x0000, 0x0000, 0x02af, 0x0002, + 0x02b2, 0x02b6, 0x0002, 0x0052, 0x02a6, 0x028b, 0x0002, 0x0052, + // Entry 39A40 - 39A7F + 0x02d8, 0x02c3, 0x0003, 0x0000, 0x02be, 0x02c3, 0x0003, 0x0052, + 0x02ef, 0x02fe, 0x030a, 0x0002, 0x02c6, 0x02ca, 0x0002, 0x0052, + 0x02a6, 0x028b, 0x0002, 0x0052, 0x02d8, 0x02c3, 0x0003, 0x0000, + 0x0000, 0x02d2, 0x0002, 0x02d5, 0x02d9, 0x0002, 0x0052, 0x031a, + 0x031a, 0x0002, 0x0052, 0x032d, 0x032d, 0x0003, 0x0000, 0x0000, + 0x02e1, 0x0002, 0x02e4, 0x02e8, 0x0002, 0x0052, 0x0355, 0x033a, + 0x0002, 0x0052, 0x0387, 0x0372, 0x0003, 0x0000, 0x02f0, 0x02f5, + 0x0003, 0x0052, 0x039e, 0x03ad, 0x03b9, 0x0002, 0x02f8, 0x02fc, + // Entry 39A80 - 39ABF + 0x0002, 0x0052, 0x03de, 0x03c9, 0x0002, 0x0052, 0x0403, 0x03f4, + 0x0003, 0x0000, 0x0304, 0x0309, 0x0003, 0x0051, 0x0f50, 0x0f5d, + 0x3694, 0x0002, 0x030c, 0x0310, 0x0002, 0x0052, 0x0413, 0x0413, + 0x0002, 0x0052, 0x0426, 0x0426, 0x0003, 0x0000, 0x0000, 0x0318, + 0x0002, 0x031b, 0x031f, 0x0002, 0x0052, 0x044d, 0x0433, 0x0002, + 0x0052, 0x047d, 0x0469, 0x0003, 0x0000, 0x0327, 0x032c, 0x0003, + 0x0052, 0x0493, 0x04a1, 0x04ac, 0x0002, 0x032f, 0x0333, 0x0002, + 0x0052, 0x04cf, 0x04bb, 0x0002, 0x0052, 0x04f2, 0x04e4, 0x0003, + // Entry 39AC0 - 39AFF + 0x0000, 0x0000, 0x033b, 0x0002, 0x033e, 0x0342, 0x0002, 0x0052, + 0x0501, 0x0501, 0x0002, 0x0052, 0x0514, 0x0514, 0x0003, 0x0000, + 0x0000, 0x034a, 0x0001, 0x034c, 0x0002, 0x001c, 0x1de6, 0x1dd0, + 0x0003, 0x0000, 0x0354, 0x0359, 0x0003, 0x0051, 0x0ffc, 0x100c, + 0x1019, 0x0002, 0x035c, 0x0360, 0x0002, 0x001c, 0x1de6, 0x1dd0, + 0x0002, 0x0051, 0x1059, 0x1049, 0x0003, 0x0000, 0x0000, 0x0368, + 0x0002, 0x036b, 0x036f, 0x0002, 0x001c, 0x1e4d, 0x1e4d, 0x0002, + 0x0052, 0x0521, 0x0521, 0x0003, 0x0000, 0x0000, 0x0377, 0x0001, + // Entry 39B00 - 39B3F + 0x0379, 0x0002, 0x001c, 0x1ec4, 0x1eb1, 0x0003, 0x0000, 0x0000, + 0x0381, 0x0001, 0x0383, 0x0002, 0x001c, 0x1ef5, 0x1ef5, 0x0003, + 0x0000, 0x0000, 0x038b, 0x0001, 0x038d, 0x0002, 0x001c, 0x1f31, + 0x1f1c, 0x0003, 0x0395, 0x0000, 0x0398, 0x0001, 0x0041, 0x092f, + 0x0002, 0x039b, 0x039f, 0x0002, 0x001c, 0x1f68, 0x1f68, 0x0002, + 0x0052, 0x052f, 0x052f, 0x0003, 0x03a7, 0x0000, 0x03aa, 0x0001, + 0x0041, 0x092f, 0x0002, 0x03ad, 0x03b1, 0x0002, 0x0000, 0x1d97, + 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0000, 0x0000, + // Entry 39B40 - 39B7F + 0x03b9, 0x0001, 0x03bb, 0x0002, 0x001c, 0x1fab, 0x1f95, 0x0003, + 0x03c3, 0x0000, 0x03c6, 0x0001, 0x0000, 0x2002, 0x0002, 0x03c9, + 0x03cd, 0x0002, 0x001c, 0x1fe5, 0x1fe5, 0x0002, 0x0052, 0x053b, + 0x053b, 0x0004, 0x0000, 0x03d6, 0x03db, 0x03e6, 0x0003, 0x0006, + 0x053b, 0x27db, 0x27db, 0x0002, 0x0000, 0x03de, 0x0002, 0x0000, + 0x03e1, 0x0003, 0x0052, 0xffff, 0x0545, 0x055f, 0x0002, 0x05cd, + 0x03e9, 0x0003, 0x03ed, 0x052d, 0x048d, 0x009e, 0x0052, 0xffff, + 0xffff, 0xffff, 0xffff, 0x060f, 0x066f, 0x06ed, 0x0732, 0x076b, + // Entry 39B80 - 39BBF + 0x07a7, 0x07ec, 0x0834, 0x0873, 0x0927, 0x0969, 0x09b1, 0x0a17, + 0x0a5c, 0x0aa7, 0x0b0a, 0x0b8b, 0x0bf1, 0x0c5a, 0x0ca8, 0x0ced, + 0xffff, 0xffff, 0x0d58, 0xffff, 0x0dba, 0xffff, 0x0e1e, 0x0e60, + 0x0e9c, 0x0ed8, 0xffff, 0xffff, 0x0f4e, 0x0f96, 0x0fe4, 0xffff, + 0xffff, 0xffff, 0x105a, 0xffff, 0x10c4, 0x111b, 0xffff, 0x1195, + 0x11f2, 0x124c, 0xffff, 0xffff, 0xffff, 0xffff, 0x12f3, 0xffff, + 0xffff, 0x1361, 0x13cd, 0xffff, 0xffff, 0x1476, 0x14d0, 0x1518, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x15e5, 0x1621, + // Entry 39BC0 - 39BFF + 0x1663, 0x16a2, 0x16e1, 0xffff, 0xffff, 0x1793, 0xffff, 0x17e1, + 0xffff, 0xffff, 0x186a, 0xffff, 0x1905, 0xffff, 0xffff, 0xffff, + 0xffff, 0x199b, 0xffff, 0x19f2, 0x1a58, 0x1abb, 0x1b06, 0xffff, + 0xffff, 0xffff, 0x1b74, 0x1bce, 0x1c25, 0xffff, 0xffff, 0x1c92, + 0x1d18, 0x1d66, 0x1d9f, 0xffff, 0xffff, 0x1e12, 0x1e57, 0x1e90, + 0xffff, 0x1ef1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ffb, + 0x2040, 0x207f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2145, 0xffff, 0xffff, 0x21a9, 0xffff, 0x21f3, 0xffff, + // Entry 39C00 - 39C3F + 0x225c, 0x229e, 0x22ef, 0xffff, 0x2343, 0x2391, 0xffff, 0xffff, + 0xffff, 0x2415, 0x2457, 0xffff, 0xffff, 0x0579, 0x06ae, 0x08ac, + 0x08e8, 0xffff, 0xffff, 0x18b2, 0x1f92, 0x009e, 0x0052, 0x05b2, + 0x05c7, 0x05df, 0x05f8, 0x0629, 0x067e, 0x06fe, 0x073f, 0x0779, + 0x07b8, 0x07fe, 0x0843, 0x0880, 0x0937, 0x097b, 0x09cd, 0x0a28, + 0x0a6f, 0x0ac2, 0x0b2f, 0x0ba7, 0x0c0e, 0x0c6e, 0x0cb9, 0x0d00, + 0x0d38, 0x0d47, 0x0d6a, 0x0da0, 0x0dcd, 0x0e05, 0x0e2e, 0x0e6e, + 0x0eaa, 0x0eeb, 0x0f23, 0x0f39, 0x0f60, 0x0faa, 0x0ff1, 0x101d, + // Entry 39C40 - 39C7F + 0x102b, 0x1046, 0x1072, 0x10b4, 0x10db, 0x1133, 0x1175, 0x11ae, + 0x120a, 0x1259, 0x1285, 0x129d, 0x12cf, 0x12e3, 0x1304, 0x1338, + 0x134f, 0x137f, 0x13ec, 0x1451, 0x1467, 0x148e, 0x14e2, 0x1525, + 0x1551, 0x1568, 0x157f, 0x1591, 0x15ac, 0x15c8, 0x15f3, 0x1631, + 0x1672, 0x16b1, 0x1702, 0x1756, 0x1774, 0x17a2, 0x17d2, 0x17f5, + 0x182f, 0x1856, 0x187c, 0x18ee, 0x1915, 0x1947, 0x1958, 0x196a, + 0x1983, 0x19ad, 0x19e3, 0x1a0e, 0x1a73, 0x1ace, 0x1b16, 0x1b48, + 0x1b58, 0x1b66, 0x1b8c, 0x1be5, 0x1c38, 0x1c70, 0x1c7d, 0x1cae, + // Entry 39C80 - 39CBF + 0x1d2c, 0x1d73, 0x1db2, 0x1dea, 0x1df8, 0x1e23, 0x1e64, 0x1ea3, + 0x1edb, 0x1f10, 0x1f60, 0x1f71, 0x1f80, 0x1fda, 0x1feb, 0x200c, + 0x204f, 0x208d, 0x20bb, 0x20ce, 0x20e8, 0x2100, 0x2118, 0x2129, + 0x2137, 0x2154, 0x2184, 0x2199, 0x21b7, 0x21e5, 0x220b, 0x224d, + 0x226c, 0x22b3, 0x22ff, 0x2331, 0x2357, 0x23a4, 0x23dc, 0x23eb, + 0x23fd, 0x2425, 0x246d, 0x143c, 0x1cf8, 0x0586, 0x06bd, 0x08ba, + 0x08f7, 0xffff, 0x1844, 0x18c0, 0x1fa4, 0x009e, 0x0052, 0xffff, + 0xffff, 0xffff, 0xffff, 0x064b, 0x0695, 0x0717, 0x0754, 0x078f, + // Entry 39CC0 - 39CFF + 0x07d1, 0x0818, 0x085a, 0x0895, 0x094f, 0x0995, 0x09f1, 0x0a41, + 0x0a8a, 0x0ae5, 0x0b5c, 0x0bcb, 0x0c33, 0x0c8a, 0x0cd2, 0x0d1b, + 0xffff, 0xffff, 0x0d84, 0xffff, 0x0de8, 0xffff, 0x0e46, 0x0e84, + 0x0ec0, 0x0f06, 0xffff, 0xffff, 0x0f7a, 0x0fc6, 0x1006, 0xffff, + 0xffff, 0xffff, 0x1092, 0xffff, 0x10fa, 0x1153, 0xffff, 0x11cf, + 0x122a, 0x126e, 0xffff, 0xffff, 0xffff, 0xffff, 0x131d, 0xffff, + 0xffff, 0x13a5, 0x1413, 0xffff, 0xffff, 0x14ae, 0x14fc, 0x153a, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1609, 0x1649, + // Entry 39D00 - 39D3F + 0x1689, 0x16c8, 0x172b, 0xffff, 0xffff, 0x17b9, 0xffff, 0x1811, + 0xffff, 0xffff, 0x1896, 0xffff, 0x192d, 0xffff, 0xffff, 0xffff, + 0xffff, 0x19c7, 0xffff, 0x1a32, 0x1a96, 0x1ae9, 0x1b2e, 0xffff, + 0xffff, 0xffff, 0x1bac, 0x1c04, 0x1c53, 0xffff, 0xffff, 0x1cd2, + 0x1d48, 0x1d88, 0x1dcd, 0xffff, 0xffff, 0x1e3c, 0x1e79, 0x1ebe, + 0xffff, 0x1f37, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2025, + 0x2066, 0x20a3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x216b, 0xffff, 0xffff, 0x21cd, 0xffff, 0x222b, 0xffff, + // Entry 39D40 - 39D7F + 0x2284, 0x22d0, 0x2317, 0xffff, 0x2373, 0x23bf, 0xffff, 0xffff, + 0xffff, 0x243d, 0x248b, 0xffff, 0xffff, 0x059b, 0x06d4, 0x08d0, + 0x090e, 0xffff, 0xffff, 0x18d6, 0x1fbe, 0x0003, 0x05d1, 0x0703, + 0x066a, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2278, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39D80 - 39DBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39DC0 - 39DFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x00db, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39E00 - 39E3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2278, 0xffff, 0xffff, 0xffff, 0x00db, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39E40 - 39E7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39E80 - 39EBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x227d, 0xffff, 0xffff, 0xffff, + 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, 0xffff, 0xffff, + // Entry 39EC0 - 39EFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39F00 - 39F3F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x00db, 0x0003, 0x0000, 0x0000, 0x0004, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, + 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39F40 - 39F7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + // Entry 39F80 - 39FBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, + 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 39FC0 - 39FFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0000, 0x0000, 0x0004, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, + 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A000 - 3A03F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, + // Entry 3A040 - 3A07F + 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0004, 0x0000, 0x019b, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3A080 - 3A0BF + 0x000d, 0x0008, 0x0016, 0x007b, 0x00d2, 0x0107, 0x0148, 0x0168, + 0x0179, 0x018a, 0x0002, 0x0019, 0x004a, 0x0003, 0x001d, 0x002c, + 0x003b, 0x000d, 0x0053, 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, + 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002c, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0053, 0xffff, 0x0030, 0x003c, 0x0048, 0x0055, 0x005c, 0x0064, + 0x006f, 0x007a, 0x0087, 0x0091, 0x009a, 0x00a5, 0x0003, 0x004e, + // Entry 3A0C0 - 3A0FF + 0x005d, 0x006c, 0x000d, 0x0053, 0xffff, 0x0000, 0x0004, 0x0008, + 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, + 0x002c, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x000d, 0x0053, 0xffff, 0x0030, 0x003c, 0x0048, 0x0055, 0x005c, + 0x0064, 0x006f, 0x007a, 0x0087, 0x0091, 0x009a, 0x00a5, 0x0002, + 0x007e, 0x00a8, 0x0005, 0x0084, 0x008d, 0x009f, 0x0000, 0x0096, + 0x0007, 0x0053, 0x00b1, 0x00b5, 0x00b9, 0x00bd, 0x00c2, 0x00c6, + // Entry 3A100 - 3A13F + 0x00ca, 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, 0x2068, 0x2483, + 0x2485, 0x298e, 0x0007, 0x0053, 0x00b1, 0x00b5, 0x00b9, 0x00bd, + 0x00c2, 0x00c6, 0x00ca, 0x0007, 0x0029, 0x018f, 0x2cce, 0x0197, + 0x2cd4, 0x2cdf, 0x2ce6, 0x01b5, 0x0005, 0x00ae, 0x00b7, 0x00c9, + 0x0000, 0x00c0, 0x0007, 0x0053, 0x00b1, 0x00b5, 0x00b9, 0x00bd, + 0x00c2, 0x00c6, 0x00ca, 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, + 0x2068, 0x2483, 0x2485, 0x298e, 0x0007, 0x0053, 0x00b1, 0x00b5, + 0x00b9, 0x00bd, 0x00c2, 0x00c6, 0x00ca, 0x0007, 0x0029, 0x018f, + // Entry 3A140 - 3A17F + 0x2cce, 0x0197, 0x2cd4, 0x2cdf, 0x2ce6, 0x01b5, 0x0002, 0x00d5, + 0x00ee, 0x0003, 0x00d9, 0x00e0, 0x00e7, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, + 0x3833, 0x3836, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, + 0x3830, 0x3833, 0x3836, 0x0002, 0x010a, 0x0129, 0x0003, 0x010e, + // Entry 3A180 - 3A1BF + 0x0117, 0x0120, 0x0002, 0x0111, 0x0114, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0002, 0x011a, 0x011d, 0x0001, 0x001c, + 0x0494, 0x0001, 0x001c, 0x0499, 0x0002, 0x0123, 0x0126, 0x0001, + 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x012d, 0x0136, + 0x013f, 0x0002, 0x0130, 0x0133, 0x0001, 0x001c, 0x0494, 0x0001, + 0x001c, 0x0499, 0x0002, 0x0139, 0x013c, 0x0001, 0x001c, 0x0494, + 0x0001, 0x001c, 0x0499, 0x0002, 0x0142, 0x0145, 0x0001, 0x001c, + 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x0157, 0x0162, 0x014c, + // Entry 3A1C0 - 3A1FF + 0x0002, 0x014f, 0x0153, 0x0002, 0x0000, 0x04f5, 0x3a46, 0x0002, + 0x0000, 0xffff, 0x04f9, 0x0002, 0x015a, 0x015e, 0x0002, 0x0000, + 0x04f5, 0x3a46, 0x0002, 0x0000, 0xffff, 0x04f9, 0x0001, 0x0164, + 0x0002, 0x0010, 0xffff, 0x02ee, 0x0004, 0x0176, 0x0170, 0x016d, + 0x0173, 0x0001, 0x0005, 0x04d2, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0187, 0x0181, + 0x017e, 0x0184, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0198, + // Entry 3A200 - 3A23F + 0x0192, 0x018f, 0x0195, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0019, + 0x0347, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0004, + 0x0000, 0x0000, 0x0000, 0x01a0, 0x0001, 0x01a2, 0x0003, 0x01a6, + 0x028a, 0x0218, 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A240 - 3A27F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A280 - 3A2BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1877, 0x0070, 0x001e, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A2C0 - 3A2FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1877, 0x0070, 0x001e, + // Entry 3A300 - 3A33F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A340 - 3A37F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x187b, + 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, + 0x0009, 0x0001, 0x000b, 0x0003, 0x0081, 0x00f3, 0x000f, 0x0070, + // Entry 3A380 - 3A3BF + 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x01b8, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A3C0 - 3A3FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x202e, 0x0070, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A400 - 3A43F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A440 - 3A47F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x00db, 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A480 - 3A4BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A4C0 - 3A4FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, 0x0003, 0x0000, 0x0000, + 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, + 0x0003, 0x0081, 0x00f3, 0x000f, 0x0070, 0x001e, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A500 - 3A53F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x02b8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A540 - 3A57F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, 0x0070, 0x001e, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A580 - 3A5BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A5C0 - 3A5FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, + 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3A600 - 3A63F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x202e, 0x0003, 0x0004, 0x01af, 0x022f, 0x0008, 0x0000, + // Entry 3A640 - 3A67F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, + 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0053, 0x00ce, + 0x0001, 0x0053, 0x00ea, 0x0001, 0x0005, 0x01ac, 0x0001, 0x0026, + 0x1181, 0x0008, 0x0030, 0x0095, 0x00ec, 0x0121, 0x0162, 0x017c, + 0x018d, 0x019e, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, + 0x0055, 0x000d, 0x0053, 0xffff, 0x00fa, 0x0101, 0x0107, 0x010c, + 0x0111, 0x0116, 0x011d, 0x0122, 0x0128, 0x012e, 0x0133, 0x0138, + // Entry 3A680 - 3A6BF + 0x000d, 0x0000, 0xffff, 0x298e, 0x298c, 0x297a, 0x2980, 0x297a, + 0x22db, 0x298c, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, + 0x0053, 0xffff, 0x013d, 0x0145, 0x0107, 0x014c, 0x0111, 0x0153, + 0x015d, 0x0122, 0x0165, 0x016f, 0x0177, 0x0180, 0x0003, 0x0068, + 0x0077, 0x0086, 0x000d, 0x0053, 0xffff, 0x00fa, 0x0101, 0x0107, + 0x010c, 0x0111, 0x0116, 0x011d, 0x0122, 0x0128, 0x012e, 0x0133, + 0x0138, 0x000d, 0x0000, 0xffff, 0x298e, 0x298c, 0x297a, 0x2980, + 0x297a, 0x22db, 0x298c, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, + // Entry 3A6C0 - 3A6FF + 0x000d, 0x0053, 0xffff, 0x013d, 0x0145, 0x0107, 0x014c, 0x0111, + 0x0153, 0x015d, 0x0122, 0x0165, 0x016f, 0x0177, 0x0180, 0x0002, + 0x0098, 0x00c2, 0x0005, 0x009e, 0x00a7, 0x00b9, 0x0000, 0x00b0, + 0x0007, 0x0037, 0x06eb, 0x200f, 0x2013, 0x2016, 0x2019, 0x201d, + 0x2020, 0x0007, 0x0000, 0x297c, 0x2281, 0x297a, 0x297a, 0x2281, + 0x2485, 0x298e, 0x0007, 0x0037, 0x06eb, 0x200f, 0x2013, 0x2016, + 0x2019, 0x201d, 0x2020, 0x0007, 0x0053, 0x0189, 0x0192, 0x019c, + 0x01a2, 0x01aa, 0x01b2, 0x01bb, 0x0005, 0x00c8, 0x00d1, 0x00e3, + // Entry 3A700 - 3A73F + 0x0000, 0x00da, 0x0007, 0x0037, 0x06eb, 0x200f, 0x2013, 0x2016, + 0x2019, 0x201d, 0x2020, 0x0007, 0x0000, 0x297c, 0x2281, 0x297a, + 0x297a, 0x2281, 0x2485, 0x298e, 0x0007, 0x0037, 0x06eb, 0x200f, + 0x2013, 0x2016, 0x2019, 0x201d, 0x2020, 0x0007, 0x0053, 0x0189, + 0x0192, 0x019c, 0x01a2, 0x01aa, 0x01b2, 0x01bb, 0x0002, 0x00ef, + 0x0108, 0x0003, 0x00f3, 0x00fa, 0x0101, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0053, 0xffff, 0x01c1, 0x01cc, + // Entry 3A740 - 3A77F + 0x01d7, 0x01e2, 0x0003, 0x010c, 0x0113, 0x011a, 0x0005, 0x0000, + 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0053, 0xffff, 0x01c1, + 0x01cc, 0x01d7, 0x01e2, 0x0002, 0x0124, 0x0143, 0x0003, 0x0128, + 0x0131, 0x013a, 0x0002, 0x012b, 0x012e, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x0134, 0x0137, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x013d, 0x0140, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0147, 0x0150, + // Entry 3A780 - 3A7BF + 0x0159, 0x0002, 0x014a, 0x014d, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0153, 0x0156, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x015c, 0x015f, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0171, 0x0000, 0x0166, + 0x0002, 0x0169, 0x016d, 0x0002, 0x0053, 0x01ed, 0x01fb, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0174, 0x0178, 0x0002, 0x0053, + 0x020b, 0x0213, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x018a, + 0x0184, 0x0181, 0x0187, 0x0001, 0x0053, 0x021a, 0x0001, 0x0053, + // Entry 3A7C0 - 3A7FF + 0x0234, 0x0001, 0x0005, 0x04ec, 0x0001, 0x001e, 0x0206, 0x0004, + 0x019b, 0x0195, 0x0192, 0x0198, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x01ac, 0x01a6, 0x01a3, 0x01a9, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0040, 0x01f0, 0x0000, 0x0000, 0x01f5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01fa, 0x0000, 0x0000, 0x01ff, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0204, 0x0000, 0x0000, 0x0000, + // Entry 3A800 - 3A83F + 0x0000, 0x0000, 0x0211, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0216, 0x0000, + 0x021b, 0x0000, 0x0000, 0x0220, 0x0000, 0x0000, 0x0225, 0x0000, + 0x0000, 0x022a, 0x0001, 0x01f2, 0x0001, 0x0053, 0x0242, 0x0001, + 0x01f7, 0x0001, 0x0053, 0x0248, 0x0001, 0x01fc, 0x0001, 0x0053, + 0x024c, 0x0001, 0x0201, 0x0001, 0x0053, 0x0251, 0x0002, 0x0207, + // Entry 3A840 - 3A87F + 0x020a, 0x0001, 0x0016, 0x06ae, 0x0005, 0x0053, 0x025e, 0x0262, + 0x0265, 0x0256, 0x026c, 0x0001, 0x0213, 0x0001, 0x0053, 0x0276, + 0x0001, 0x0218, 0x0001, 0x0053, 0x0285, 0x0001, 0x021d, 0x0001, + 0x0053, 0x0294, 0x0001, 0x0222, 0x0001, 0x000d, 0x0bf5, 0x0001, + 0x0227, 0x0001, 0x0053, 0x0298, 0x0001, 0x022c, 0x0001, 0x0053, + 0x02a0, 0x0004, 0x0234, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, + 0x1dc7, 0x3839, 0x0002, 0x0003, 0x00c9, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + // Entry 3A880 - 3A8BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, + 0x0008, 0x002f, 0x0053, 0x006b, 0x007f, 0x0097, 0x00a7, 0x00b8, + 0x0000, 0x0001, 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, + 0x0053, 0xffff, 0x02af, 0x02b4, 0x02b9, 0x02be, 0x02c3, 0x02c8, + 0x02cd, 0x02d2, 0x02d7, 0x02dc, 0x02e1, 0x02e6, 0x000d, 0x0053, + 0xffff, 0x02eb, 0x02f1, 0x02fa, 0x0304, 0x030e, 0x0315, 0x031d, + // Entry 3A8C0 - 3A8FF + 0x0326, 0x0331, 0x033a, 0x0343, 0x034c, 0x0001, 0x0055, 0x0003, + 0x0059, 0x0000, 0x0062, 0x0007, 0x0053, 0x0355, 0x0359, 0x035e, + 0x0363, 0x0368, 0x036d, 0x0372, 0x0007, 0x0053, 0x0377, 0x0384, + 0x0390, 0x039d, 0x03aa, 0x03b5, 0x03c2, 0x0001, 0x006d, 0x0003, + 0x0071, 0x0000, 0x0078, 0x0005, 0x0053, 0xffff, 0x03d2, 0x03d5, + 0x03d8, 0x03db, 0x0005, 0x0053, 0xffff, 0x03de, 0x03f8, 0x0413, + 0x042e, 0x0001, 0x0081, 0x0003, 0x0085, 0x0000, 0x008e, 0x0002, + 0x0088, 0x008b, 0x0001, 0x0053, 0x0447, 0x0001, 0x0053, 0x044d, + // Entry 3A900 - 3A93F + 0x0002, 0x0091, 0x0094, 0x0001, 0x0053, 0x0447, 0x0001, 0x0053, + 0x044d, 0x0003, 0x00a1, 0x0000, 0x009b, 0x0001, 0x009d, 0x0002, + 0x0053, 0x0453, 0x0461, 0x0001, 0x00a3, 0x0002, 0x0053, 0x046f, + 0x0475, 0x0004, 0x00b5, 0x00af, 0x00ac, 0x00b2, 0x0001, 0x0001, + 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x01fb, 0x0004, 0x00c6, 0x00c0, 0x00bd, 0x00c3, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0040, 0x010a, 0x0000, 0x0000, 0x010f, + // Entry 3A940 - 3A97F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0114, 0x0000, 0x0000, + 0x0119, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0129, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x012e, 0x0000, 0x0133, 0x0000, 0x0000, 0x0138, 0x0000, 0x0000, + 0x013d, 0x0000, 0x0000, 0x0142, 0x0001, 0x010c, 0x0001, 0x0053, + // Entry 3A980 - 3A9BF + 0x047a, 0x0001, 0x0111, 0x0001, 0x0009, 0x0085, 0x0001, 0x0116, + 0x0001, 0x0053, 0x0480, 0x0001, 0x011b, 0x0001, 0x0053, 0x0487, + 0x0002, 0x0121, 0x0124, 0x0001, 0x0053, 0x0495, 0x0003, 0x0053, + 0x049b, 0x04a8, 0x04b1, 0x0001, 0x012b, 0x0001, 0x0053, 0x04be, + 0x0001, 0x0130, 0x0001, 0x0053, 0x04d0, 0x0001, 0x0135, 0x0001, + 0x0053, 0x04d8, 0x0001, 0x013a, 0x0001, 0x0053, 0x04de, 0x0001, + 0x013f, 0x0001, 0x0053, 0x04e6, 0x0001, 0x0144, 0x0001, 0x0053, + 0x04ef, 0x0003, 0x0004, 0x0339, 0x082d, 0x000b, 0x0010, 0x0024, + // Entry 3A9C0 - 3A9FF + 0x006c, 0x0000, 0x0084, 0x0000, 0x009c, 0x00c7, 0x02df, 0x0000, + 0x032c, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0003, + 0x001f, 0x0000, 0x001a, 0x0001, 0x001c, 0x0001, 0x0053, 0x0501, + 0x0001, 0x0021, 0x0001, 0x0053, 0x050e, 0x0001, 0x0026, 0x0002, + 0x0029, 0x004a, 0x0002, 0x002c, 0x003b, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + // Entry 3AA00 - 3AA3F + 0x386e, 0x3871, 0x3874, 0x0003, 0x004e, 0x0000, 0x005d, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0001, 0x006e, 0x0001, + 0x0070, 0x0003, 0x0000, 0x0000, 0x0074, 0x000e, 0x0000, 0xffff, + 0x03ce, 0x03d3, 0x3a4b, 0x03de, 0x03e4, 0x391a, 0x3921, 0x03f9, + 0x392a, 0x040b, 0x0411, 0x3a52, 0x3a59, 0x0001, 0x0086, 0x0001, + // Entry 3AA40 - 3AA7F + 0x0088, 0x0003, 0x0000, 0x0000, 0x008c, 0x000e, 0x004b, 0xffff, + 0x0790, 0x28ed, 0x07a0, 0x07a6, 0x28f4, 0x07b1, 0x07b9, 0x07c1, + 0x07c8, 0x07cf, 0x07d4, 0x28f8, 0x07e2, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x00a5, 0x0000, 0x00b6, 0x0004, 0x00b3, + 0x00ad, 0x00aa, 0x00b0, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0016, 0x02aa, 0x0001, 0x001e, 0x1a8e, 0x0004, + 0x00c4, 0x00be, 0x00bb, 0x00c1, 0x0001, 0x0053, 0x0513, 0x0001, + 0x0053, 0x0513, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + // Entry 3AA80 - 3AABF + 0x0008, 0x00d0, 0x0135, 0x018c, 0x01c1, 0x0292, 0x02ac, 0x02bd, + 0x02ce, 0x0002, 0x00d3, 0x0104, 0x0003, 0x00d7, 0x00e6, 0x00f5, + 0x000d, 0x0053, 0xffff, 0x0520, 0x0525, 0x052a, 0x052f, 0x0534, + 0x0538, 0x053d, 0x0542, 0x0547, 0x012e, 0x0133, 0x0138, 0x000d, + 0x0000, 0xffff, 0x2055, 0x298c, 0x297a, 0x2980, 0x297a, 0x2055, + 0x2055, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0053, + 0xffff, 0x054d, 0x0556, 0x0560, 0x0567, 0x0534, 0x056f, 0x0575, + 0x057b, 0x0582, 0x058d, 0x0597, 0x05a1, 0x0003, 0x0108, 0x0117, + // Entry 3AAC0 - 3AAFF + 0x0126, 0x000d, 0x0053, 0xffff, 0x0520, 0x0525, 0x052a, 0x052f, + 0x0534, 0x0538, 0x053d, 0x0542, 0x0547, 0x012e, 0x0133, 0x0138, + 0x000d, 0x0000, 0xffff, 0x2055, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2055, 0x2055, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, + 0x0053, 0xffff, 0x054d, 0x0556, 0x0560, 0x0567, 0x0534, 0x056f, + 0x0575, 0x057b, 0x0582, 0x058d, 0x0597, 0x05a1, 0x0002, 0x0138, + 0x0162, 0x0005, 0x013e, 0x0147, 0x0159, 0x0000, 0x0150, 0x0007, + 0x0053, 0x05ab, 0x05b0, 0x052a, 0x05b5, 0x05ba, 0x05be, 0x05c3, + // Entry 3AB00 - 3AB3F + 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, 0x297a, 0x2483, 0x2485, + 0x298e, 0x0007, 0x0030, 0x0169, 0x25a2, 0x25a6, 0x25aa, 0x25ae, + 0x25b2, 0x25b6, 0x0007, 0x0053, 0x05c9, 0x05d3, 0x05d8, 0x05df, + 0x05e8, 0x05ec, 0x05f3, 0x0005, 0x0168, 0x0171, 0x0183, 0x0000, + 0x017a, 0x0007, 0x0053, 0x05ab, 0x05b0, 0x052a, 0x05b5, 0x05e8, + 0x05be, 0x05c3, 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, 0x297a, + 0x2483, 0x2485, 0x298e, 0x0007, 0x0030, 0x0169, 0x25a2, 0x25a6, + 0x25aa, 0x25bb, 0x25b2, 0x25b6, 0x0007, 0x0053, 0x05c9, 0x05d3, + // Entry 3AB40 - 3AB7F + 0x05d8, 0x05df, 0x05fe, 0x05ec, 0x05f3, 0x0002, 0x018f, 0x01a8, + 0x0003, 0x0193, 0x019a, 0x01a1, 0x0005, 0x0053, 0xffff, 0x0602, + 0x060a, 0x0613, 0x061d, 0x0005, 0x0000, 0xffff, 0x2055, 0x2982, + 0x2985, 0x2989, 0x0005, 0x0053, 0xffff, 0x0626, 0x0633, 0x0648, + 0x065e, 0x0003, 0x01ac, 0x01b3, 0x01ba, 0x0005, 0x0053, 0xffff, + 0x0602, 0x060a, 0x0613, 0x061d, 0x0005, 0x0000, 0xffff, 0x2055, + 0x2982, 0x2985, 0x2989, 0x0005, 0x0053, 0xffff, 0x0626, 0x0633, + 0x0648, 0x065e, 0x0002, 0x01c4, 0x022b, 0x0003, 0x01c8, 0x01e9, + // Entry 3AB80 - 3ABBF + 0x020a, 0x0008, 0x01d4, 0x01da, 0x01d1, 0x01dd, 0x01e0, 0x01e3, + 0x01e6, 0x01d7, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, 0x0494, + 0x0001, 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, 0x0053, + 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, + 0x0053, 0x06a8, 0x0008, 0x01f5, 0x01fb, 0x01f2, 0x01fe, 0x0201, + 0x0204, 0x0207, 0x01f8, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, + 0x0494, 0x0001, 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, + 0x0053, 0x06b0, 0x0001, 0x0053, 0x06bc, 0x0001, 0x0053, 0x06a2, + // Entry 3ABC0 - 3ABFF + 0x0001, 0x0053, 0x06a8, 0x0008, 0x0216, 0x021c, 0x0213, 0x021f, + 0x0222, 0x0225, 0x0228, 0x0219, 0x0001, 0x0053, 0x06ca, 0x0001, + 0x001c, 0x0494, 0x0001, 0x0053, 0x06dc, 0x0001, 0x001c, 0x0499, + 0x0001, 0x0053, 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, + 0x06a2, 0x0001, 0x0053, 0x06a8, 0x0003, 0x022f, 0x0250, 0x0271, + 0x0008, 0x023b, 0x0241, 0x0238, 0x0244, 0x0247, 0x024a, 0x024d, + 0x023e, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, 0x0494, 0x0001, + 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, 0x0053, 0x068a, + // Entry 3AC00 - 3AC3F + 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, 0x0053, + 0x06a8, 0x0008, 0x025c, 0x0262, 0x0259, 0x0265, 0x0268, 0x026b, + 0x026e, 0x025f, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, 0x0494, + 0x0001, 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, 0x0053, + 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, + 0x0053, 0x06a8, 0x0008, 0x027d, 0x0283, 0x027a, 0x0286, 0x0289, + 0x028c, 0x028f, 0x0280, 0x0001, 0x0053, 0x06ca, 0x0001, 0x001c, + 0x0494, 0x0001, 0x0053, 0x06dc, 0x0001, 0x001c, 0x0499, 0x0001, + // Entry 3AC40 - 3AC7F + 0x0053, 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, + 0x0001, 0x0053, 0x06a8, 0x0003, 0x02a1, 0x0000, 0x0296, 0x0002, + 0x0299, 0x029d, 0x0002, 0x0053, 0x06e7, 0x0712, 0x0002, 0x0053, + 0x06fb, 0x0720, 0x0002, 0x02a4, 0x02a8, 0x0002, 0x0053, 0x072d, + 0x073b, 0x0002, 0x0053, 0x0734, 0x0741, 0x0004, 0x02ba, 0x02b4, + 0x02b1, 0x02b7, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0016, 0x0470, 0x0004, 0x02cb, + 0x02c5, 0x02c2, 0x02c8, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + // Entry 3AC80 - 3ACBF + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x02dc, 0x02d6, 0x02d3, 0x02d9, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x02e1, 0x0002, 0x02e4, 0x0308, 0x0003, 0x02e8, 0x0000, + 0x02f8, 0x000e, 0x0053, 0x0776, 0x0746, 0x074e, 0x0756, 0x075d, + 0x0763, 0x076a, 0x0771, 0x077e, 0x0784, 0x0789, 0x078f, 0x0796, + 0x0799, 0x000e, 0x0053, 0x0776, 0x0746, 0x074e, 0x0756, 0x075d, + 0x0763, 0x076a, 0x0771, 0x077e, 0x0784, 0x0789, 0x078f, 0x0796, + // Entry 3ACC0 - 3ACFF + 0x0799, 0x0003, 0x030c, 0x0000, 0x031c, 0x000e, 0x0053, 0x0776, + 0x0746, 0x074e, 0x0756, 0x075d, 0x0763, 0x076a, 0x0771, 0x077e, + 0x0784, 0x0789, 0x078f, 0x0796, 0x0799, 0x000e, 0x0053, 0x0776, + 0x0746, 0x074e, 0x0756, 0x075d, 0x0763, 0x076a, 0x0771, 0x077e, + 0x0784, 0x0789, 0x078f, 0x0796, 0x0799, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0332, 0x0001, 0x0334, 0x0001, 0x0336, 0x0001, + 0x0000, 0x06c8, 0x0040, 0x037a, 0x0000, 0x0000, 0x037f, 0x039c, + 0x03b4, 0x03cc, 0x03e9, 0x0406, 0x0423, 0x0440, 0x0458, 0x0470, + // Entry 3AD00 - 3AD3F + 0x0491, 0x04ad, 0x0000, 0x0000, 0x0000, 0x04c9, 0x04e8, 0x0500, + 0x0000, 0x0000, 0x0000, 0x0518, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x051d, 0x0537, 0x0551, 0x056b, 0x0585, 0x059f, 0x05b9, + 0x05d3, 0x05ed, 0x0607, 0x0621, 0x063b, 0x0655, 0x066f, 0x0689, + 0x06a3, 0x06bd, 0x06d7, 0x06f1, 0x070b, 0x0725, 0x0000, 0x073f, + 0x0000, 0x0744, 0x0760, 0x0778, 0x0790, 0x07ac, 0x07c4, 0x07dc, + 0x07f8, 0x0810, 0x0828, 0x0001, 0x037c, 0x0001, 0x0053, 0x079e, + 0x0003, 0x0383, 0x0386, 0x038b, 0x0001, 0x0043, 0x054a, 0x0003, + // Entry 3AD40 - 3AD7F + 0x0053, 0x07a3, 0x07af, 0x07bb, 0x0002, 0x038e, 0x0395, 0x0005, + 0x0053, 0x07e2, 0x07c7, 0xffff, 0xffff, 0x07d4, 0x0005, 0x0053, + 0x080c, 0x07f3, 0xffff, 0xffff, 0x07ff, 0x0003, 0x03a0, 0x0000, + 0x03a3, 0x0001, 0x0043, 0x054a, 0x0002, 0x03a6, 0x03ad, 0x0005, + 0x0053, 0x07d4, 0x07c7, 0xffff, 0xffff, 0x07d4, 0x0005, 0x0053, + 0x080c, 0x07f3, 0xffff, 0xffff, 0x07ff, 0x0003, 0x03b8, 0x0000, + 0x03bb, 0x0001, 0x0043, 0x054a, 0x0002, 0x03be, 0x03c5, 0x0005, + 0x0053, 0x0824, 0x081c, 0xffff, 0xffff, 0x0824, 0x0005, 0x0053, + // Entry 3AD80 - 3ADBF + 0x0835, 0x082d, 0xffff, 0xffff, 0x0835, 0x0003, 0x03d0, 0x03d3, + 0x03d8, 0x0001, 0x0053, 0x083e, 0x0003, 0x0053, 0x0848, 0x085a, + 0x086c, 0x0002, 0x03db, 0x03e2, 0x0005, 0x0053, 0x08a6, 0x087e, + 0xffff, 0xffff, 0x0892, 0x0005, 0x0053, 0x08e3, 0x08bd, 0xffff, + 0xffff, 0x08d0, 0x0003, 0x03ed, 0x03f0, 0x03f5, 0x0001, 0x000b, + 0x0c78, 0x0003, 0x0053, 0x08f9, 0x0906, 0x0913, 0x0002, 0x03f8, + 0x03ff, 0x0005, 0x0053, 0x0920, 0x0920, 0xffff, 0xffff, 0x0920, + 0x0005, 0x0053, 0x0930, 0x0930, 0xffff, 0xffff, 0x0930, 0x0003, + // Entry 3ADC0 - 3ADFF + 0x040a, 0x040d, 0x0412, 0x0001, 0x000b, 0x0c78, 0x0003, 0x0053, + 0x08f9, 0x0906, 0x0913, 0x0002, 0x0415, 0x041c, 0x0005, 0x000b, + 0x0c9c, 0x0c9c, 0xffff, 0xffff, 0x0c9c, 0x0005, 0x000b, 0x0ca7, + 0x0ca7, 0xffff, 0xffff, 0x0ca7, 0x0003, 0x0427, 0x042a, 0x042f, + 0x0001, 0x0053, 0x093f, 0x0003, 0x0053, 0x0945, 0x0953, 0x0960, + 0x0002, 0x0432, 0x0439, 0x0005, 0x0053, 0x098d, 0x096e, 0xffff, + 0xffff, 0x097e, 0x0005, 0x0053, 0x09bc, 0x099f, 0xffff, 0xffff, + 0x09ae, 0x0003, 0x0444, 0x0000, 0x0447, 0x0001, 0x0053, 0x093f, + // Entry 3AE00 - 3AE3F + 0x0002, 0x044a, 0x0451, 0x0005, 0x0053, 0x097e, 0x096e, 0xffff, + 0xffff, 0x097e, 0x0005, 0x0053, 0x09ae, 0x099f, 0xffff, 0xffff, + 0x09ae, 0x0003, 0x045c, 0x0000, 0x045f, 0x0001, 0x0053, 0x093f, + 0x0002, 0x0462, 0x0469, 0x0005, 0x0053, 0x09d8, 0x09cd, 0xffff, + 0xffff, 0x09d8, 0x0005, 0x0053, 0x09ed, 0x09e2, 0xffff, 0xffff, + 0x09ed, 0x0004, 0x0475, 0x0478, 0x047d, 0x048e, 0x0001, 0x0053, + 0x09f7, 0x0003, 0x0053, 0x0a05, 0x0a1b, 0x0a30, 0x0002, 0x0480, + 0x0487, 0x0005, 0x0053, 0x0a75, 0x0a46, 0xffff, 0xffff, 0x0a5e, + // Entry 3AE40 - 3AE7F + 0x0005, 0x0053, 0x0abc, 0x0a8f, 0xffff, 0xffff, 0x0aa6, 0x0001, + 0x0053, 0x0ad5, 0x0004, 0x0496, 0x0000, 0x0499, 0x04aa, 0x0001, + 0x0053, 0x0ae9, 0x0002, 0x049c, 0x04a3, 0x0005, 0x0053, 0x0af0, + 0x0af0, 0xffff, 0xffff, 0x0af0, 0x0005, 0x0053, 0x0b01, 0x0b01, + 0xffff, 0xffff, 0x0b01, 0x0001, 0x0053, 0x0b11, 0x0004, 0x04b2, + 0x0000, 0x04b5, 0x04c6, 0x0001, 0x0053, 0x0ae9, 0x0002, 0x04b8, + 0x04bf, 0x0005, 0x0053, 0x0b1f, 0x0b1f, 0xffff, 0xffff, 0x0b1f, + 0x0005, 0x0053, 0x0b2b, 0x0b2b, 0xffff, 0xffff, 0x0b2b, 0x0001, + // Entry 3AE80 - 3AEBF + 0x0053, 0x0b11, 0x0003, 0x04cd, 0x04d0, 0x04d7, 0x0001, 0x0000, + 0x005a, 0x0005, 0x0053, 0x0b43, 0x0b48, 0x0b4c, 0x0b37, 0x0b53, + 0x0002, 0x04da, 0x04e1, 0x0005, 0x0053, 0x0b79, 0x0b5d, 0xffff, + 0xffff, 0x0b6a, 0x0005, 0x0053, 0x0ba5, 0x0b8b, 0xffff, 0xffff, + 0x0b97, 0x0003, 0x04ec, 0x0000, 0x04ef, 0x0001, 0x0000, 0x005a, + 0x0002, 0x04f2, 0x04f9, 0x0005, 0x0053, 0x0b6a, 0x0b5d, 0xffff, + 0xffff, 0x0b6a, 0x0005, 0x0053, 0x0b97, 0x0b8b, 0xffff, 0xffff, + 0x0b97, 0x0003, 0x0504, 0x0000, 0x0507, 0x0001, 0x0000, 0x005a, + // Entry 3AEC0 - 3AEFF + 0x0002, 0x050a, 0x0511, 0x0005, 0x0053, 0x0bbe, 0x0bb6, 0xffff, + 0xffff, 0x0bbe, 0x0005, 0x0053, 0x0bd0, 0x0bc8, 0xffff, 0xffff, + 0x0bd0, 0x0001, 0x051a, 0x0001, 0x0053, 0x0bda, 0x0003, 0x0000, + 0x0521, 0x0526, 0x0003, 0x0053, 0x0bed, 0x0bff, 0x0c10, 0x0002, + 0x0529, 0x0530, 0x0005, 0x0053, 0x0c67, 0x0c22, 0xffff, 0xffff, + 0x0c45, 0x0005, 0x0053, 0x0ccf, 0x0c8c, 0xffff, 0xffff, 0x0cae, + 0x0003, 0x0000, 0x053b, 0x0540, 0x0003, 0x0053, 0x0cf3, 0x0d01, + 0x0d0e, 0x0002, 0x0543, 0x054a, 0x0005, 0x0053, 0x0d1c, 0x0d1c, + // Entry 3AF00 - 3AF3F + 0xffff, 0xffff, 0x0d1c, 0x0005, 0x0053, 0x0d38, 0x0d38, 0xffff, + 0xffff, 0x0d38, 0x0003, 0x0000, 0x0555, 0x055a, 0x0003, 0x0053, + 0x0d53, 0x0d60, 0x0d6c, 0x0002, 0x055d, 0x0564, 0x0005, 0x0053, + 0x0d79, 0x0d79, 0xffff, 0xffff, 0x0d79, 0x0005, 0x0053, 0x0d89, + 0x0d89, 0xffff, 0xffff, 0x0d89, 0x0003, 0x0000, 0x056f, 0x0574, + 0x0003, 0x0053, 0x0d99, 0x0da8, 0x0db6, 0x0002, 0x0577, 0x057e, + 0x0005, 0x0053, 0x0e00, 0x0dc5, 0xffff, 0xffff, 0x0de3, 0x0005, + 0x0053, 0x0e59, 0x0e20, 0xffff, 0xffff, 0x0e3d, 0x0003, 0x0000, + // Entry 3AF40 - 3AF7F + 0x0589, 0x058e, 0x0003, 0x0053, 0x0e78, 0x0e86, 0x0e93, 0x0002, + 0x0591, 0x0598, 0x0005, 0x0053, 0x0ea1, 0x0ea1, 0xffff, 0xffff, + 0x0ea1, 0x0005, 0x0053, 0x0eb8, 0x0eb8, 0xffff, 0xffff, 0x0eb8, + 0x0003, 0x0000, 0x05a3, 0x05a8, 0x0003, 0x0053, 0x0ece, 0x0edb, + 0x0ee7, 0x0002, 0x05ab, 0x05b2, 0x0005, 0x0053, 0x0ef4, 0x0ef4, + 0xffff, 0xffff, 0x0ef4, 0x0005, 0x0053, 0x0f04, 0x0f04, 0xffff, + 0xffff, 0x0f04, 0x0003, 0x0000, 0x05bd, 0x05c2, 0x0003, 0x0053, + 0x0f14, 0x0f25, 0x0f35, 0x0002, 0x05c5, 0x05cc, 0x0005, 0x0053, + // Entry 3AF80 - 3AFBF + 0x0f85, 0x0f46, 0xffff, 0xffff, 0x0f66, 0x0005, 0x0053, 0x0fe4, + 0x0fa7, 0xffff, 0xffff, 0x0fc6, 0x0003, 0x0000, 0x05d7, 0x05dc, + 0x0003, 0x0053, 0x1005, 0x1013, 0x1020, 0x0002, 0x05df, 0x05e6, + 0x0005, 0x0053, 0x102e, 0x102e, 0xffff, 0xffff, 0x102e, 0x0005, + 0x0053, 0x1047, 0x1047, 0xffff, 0xffff, 0x1047, 0x0003, 0x0000, + 0x05f1, 0x05f6, 0x0003, 0x0053, 0x105f, 0x106c, 0x1078, 0x0002, + 0x05f9, 0x0600, 0x0005, 0x0053, 0x1085, 0x1085, 0xffff, 0xffff, + 0x1085, 0x0005, 0x0053, 0x1095, 0x1095, 0xffff, 0xffff, 0x1095, + // Entry 3AFC0 - 3AFFF + 0x0003, 0x0000, 0x060b, 0x0610, 0x0003, 0x0053, 0x10a5, 0x10b8, + 0x10ca, 0x0002, 0x0613, 0x061a, 0x0005, 0x0053, 0x1120, 0x10dd, + 0xffff, 0xffff, 0x10ff, 0x0005, 0x0053, 0x1185, 0x1144, 0xffff, + 0xffff, 0x1165, 0x0003, 0x0000, 0x0625, 0x062a, 0x0003, 0x0053, + 0x11a8, 0x11b6, 0x11c3, 0x0002, 0x062d, 0x0634, 0x0005, 0x0053, + 0x11d1, 0x11d1, 0xffff, 0xffff, 0x11d1, 0x0005, 0x0053, 0x11ec, + 0x11ec, 0xffff, 0xffff, 0x11ec, 0x0003, 0x0000, 0x063f, 0x0644, + 0x0003, 0x0053, 0x1206, 0x1213, 0x121f, 0x0002, 0x0647, 0x064e, + // Entry 3B000 - 3B03F + 0x0005, 0x0053, 0x122c, 0x122c, 0xffff, 0xffff, 0x122c, 0x0005, + 0x0053, 0x123c, 0x123c, 0xffff, 0xffff, 0x123c, 0x0003, 0x0000, + 0x0659, 0x065e, 0x0003, 0x0053, 0x124c, 0x125a, 0x1267, 0x0002, + 0x0661, 0x0668, 0x0005, 0x0053, 0x12ae, 0x1275, 0xffff, 0xffff, + 0x1292, 0x0005, 0x0053, 0x1304, 0x12cd, 0xffff, 0xffff, 0x12e9, + 0x0003, 0x0000, 0x0673, 0x0678, 0x0003, 0x0053, 0x1322, 0x132f, + 0x1267, 0x0002, 0x067b, 0x0682, 0x0005, 0x0053, 0x133b, 0x133b, + 0xffff, 0xffff, 0x133b, 0x0005, 0x0053, 0x1351, 0x1351, 0xffff, + // Entry 3B040 - 3B07F + 0xffff, 0x1351, 0x0003, 0x0000, 0x068d, 0x0692, 0x0003, 0x0053, + 0x1366, 0x1373, 0x137f, 0x0002, 0x0695, 0x069c, 0x0005, 0x0053, + 0x138c, 0x138c, 0xffff, 0xffff, 0x138c, 0x0005, 0x0053, 0x139c, + 0x139c, 0xffff, 0xffff, 0x139c, 0x0003, 0x0000, 0x06a7, 0x06ac, + 0x0003, 0x0053, 0x13ac, 0x13bd, 0x13cd, 0x0002, 0x06af, 0x06b6, + 0x0005, 0x0053, 0x141d, 0x13de, 0xffff, 0xffff, 0x13fe, 0x0005, + 0x0053, 0x147c, 0x143f, 0xffff, 0xffff, 0x145e, 0x0003, 0x0000, + 0x06c1, 0x06c6, 0x0003, 0x0053, 0x149d, 0x14ab, 0x14b8, 0x0002, + // Entry 3B080 - 3B0BF + 0x06c9, 0x06d0, 0x0005, 0x0053, 0x14c6, 0x14c6, 0xffff, 0xffff, + 0x14c6, 0x0005, 0x0053, 0x14df, 0x14df, 0xffff, 0xffff, 0x14df, + 0x0003, 0x0000, 0x06db, 0x06e0, 0x0003, 0x0053, 0x14f7, 0x1504, + 0x1510, 0x0002, 0x06e3, 0x06ea, 0x0005, 0x0053, 0x151d, 0x151d, + 0xffff, 0xffff, 0x151d, 0x0005, 0x0053, 0x152d, 0x152d, 0xffff, + 0xffff, 0x152d, 0x0003, 0x0000, 0x06f5, 0x06fa, 0x0003, 0x0053, + 0x153d, 0x1550, 0x1562, 0x0002, 0x06fd, 0x0704, 0x0005, 0x0053, + 0x15bc, 0x1575, 0xffff, 0xffff, 0x1599, 0x0005, 0x0053, 0x1627, + // Entry 3B0C0 - 3B0FF + 0x15e2, 0xffff, 0xffff, 0x1605, 0x0003, 0x0000, 0x070f, 0x0714, + 0x0003, 0x0053, 0x164c, 0x165b, 0x1669, 0x0002, 0x0717, 0x071e, + 0x0005, 0x0053, 0x1678, 0x1678, 0xffff, 0xffff, 0x1678, 0x0005, + 0x0053, 0x1695, 0x1695, 0xffff, 0xffff, 0x1695, 0x0003, 0x0000, + 0x0729, 0x072e, 0x0003, 0x0053, 0x16b1, 0x16bf, 0x16cc, 0x0002, + 0x0731, 0x0738, 0x0005, 0x0053, 0x16da, 0x16da, 0xffff, 0xffff, + 0x16da, 0x0005, 0x0053, 0x16eb, 0x16eb, 0xffff, 0xffff, 0x16eb, + 0x0001, 0x0741, 0x0001, 0x0053, 0x16fc, 0x0003, 0x0748, 0x074b, + // Entry 3B100 - 3B13F + 0x074f, 0x0001, 0x0053, 0x1705, 0x0002, 0x0053, 0xffff, 0x170a, + 0x0002, 0x0752, 0x0759, 0x0005, 0x0053, 0x1733, 0x1716, 0xffff, + 0xffff, 0x1725, 0x0005, 0x0053, 0x175f, 0x1744, 0xffff, 0xffff, + 0x1752, 0x0003, 0x0764, 0x0000, 0x0767, 0x0001, 0x0000, 0x2143, + 0x0002, 0x076a, 0x0771, 0x0005, 0x0053, 0x176f, 0x176f, 0xffff, + 0xffff, 0x176f, 0x0005, 0x0053, 0x177b, 0x177b, 0xffff, 0xffff, + 0x177b, 0x0003, 0x077c, 0x0000, 0x077f, 0x0001, 0x0000, 0x2143, + 0x0002, 0x0782, 0x0789, 0x0005, 0x0000, 0x1d76, 0x1d76, 0xffff, + // Entry 3B140 - 3B17F + 0xffff, 0x1d76, 0x0005, 0x0000, 0x1d7d, 0x1d7d, 0xffff, 0xffff, + 0x1d7d, 0x0003, 0x0794, 0x0797, 0x079b, 0x0001, 0x0010, 0x0b77, + 0x0002, 0x0053, 0xffff, 0x1786, 0x0002, 0x079e, 0x07a5, 0x0005, + 0x0053, 0x17b6, 0x1795, 0xffff, 0xffff, 0x17a5, 0x0005, 0x0053, + 0x17e9, 0x17ca, 0xffff, 0xffff, 0x17d9, 0x0003, 0x07b0, 0x0000, + 0x07b3, 0x0001, 0x0001, 0x075a, 0x0002, 0x07b6, 0x07bd, 0x0005, + 0x0053, 0x17fc, 0x17fc, 0xffff, 0xffff, 0x17fc, 0x0005, 0x0053, + 0x180b, 0x180b, 0xffff, 0xffff, 0x180b, 0x0003, 0x07c8, 0x0000, + // Entry 3B180 - 3B1BF + 0x07cb, 0x0001, 0x0000, 0x1f9a, 0x0002, 0x07ce, 0x07d5, 0x0005, + 0x0000, 0x1ace, 0x1ace, 0xffff, 0xffff, 0x1ace, 0x0005, 0x0000, + 0x1ad5, 0x1ad5, 0xffff, 0xffff, 0x1ad5, 0x0003, 0x07e0, 0x07e3, + 0x07e7, 0x0001, 0x0053, 0x1819, 0x0002, 0x0053, 0xffff, 0x1822, + 0x0002, 0x07ea, 0x07f1, 0x0005, 0x0053, 0x184c, 0x1827, 0xffff, + 0xffff, 0x183a, 0x0005, 0x0053, 0x1884, 0x1861, 0xffff, 0xffff, + 0x1873, 0x0003, 0x07fc, 0x0000, 0x07ff, 0x0001, 0x001b, 0x0a96, + 0x0002, 0x0802, 0x0809, 0x0005, 0x0053, 0x1898, 0x1898, 0xffff, + // Entry 3B1C0 - 3B1FF + 0xffff, 0x1898, 0x0005, 0x0053, 0x18a7, 0x18a7, 0xffff, 0xffff, + 0x18a7, 0x0003, 0x0814, 0x0000, 0x0817, 0x0001, 0x0000, 0x2002, + 0x0002, 0x081a, 0x0821, 0x0005, 0x0026, 0x00bf, 0x00bf, 0xffff, + 0xffff, 0x00bf, 0x0005, 0x0000, 0x1dbb, 0x1dbb, 0xffff, 0xffff, + 0x1dbb, 0x0001, 0x082a, 0x0001, 0x0053, 0x18b5, 0x0004, 0x0832, + 0x0837, 0x083c, 0x084b, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3916, + 0x0003, 0x0053, 0x18be, 0x18ca, 0x18df, 0x0002, 0x0000, 0x083f, + 0x0003, 0x0000, 0x0846, 0x0843, 0x0001, 0x0053, 0x18f4, 0x0003, + // Entry 3B200 - 3B23F + 0x0053, 0xffff, 0x190f, 0x1927, 0x0002, 0x0a26, 0x084e, 0x0003, + 0x0852, 0x098a, 0x08ee, 0x009a, 0x0053, 0xffff, 0xffff, 0xffff, + 0xffff, 0x19c2, 0x1a20, 0x1a92, 0x1ad5, 0x1b41, 0x1bb0, 0x1c2f, + 0x1cac, 0x1ceb, 0x1d97, 0x1dca, 0x1e0d, 0x1e74, 0x1eb1, 0x1f31, + 0x1f8f, 0x200e, 0x206f, 0x20d6, 0x2128, 0x2164, 0xffff, 0xffff, + 0x21cb, 0xffff, 0x2225, 0xffff, 0x2284, 0x22c6, 0x2302, 0x2339, + 0xffff, 0xffff, 0x23b1, 0x23f1, 0x2440, 0xffff, 0xffff, 0xffff, + 0x24b2, 0xffff, 0x251f, 0x2574, 0xffff, 0x25e4, 0x2636, 0x2696, + // Entry 3B240 - 3B27F + 0xffff, 0xffff, 0xffff, 0xffff, 0x273f, 0xffff, 0xffff, 0x27a4, + 0x2808, 0xffff, 0xffff, 0x2899, 0x28f3, 0x293b, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x29e8, 0x2a25, 0x2a67, 0x2aaa, + 0x2ae7, 0xffff, 0xffff, 0x2b93, 0xffff, 0x2bd9, 0xffff, 0xffff, + 0x2c52, 0xffff, 0x2cac, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d3d, + 0xffff, 0x2d94, 0x2dfb, 0x2e62, 0x2ead, 0xffff, 0xffff, 0xffff, + 0x2f16, 0x2f65, 0x2fb1, 0xffff, 0xffff, 0x3025, 0x308b, 0x30d9, + 0x3112, 0xffff, 0xffff, 0x3183, 0x31c8, 0x3201, 0xffff, 0x325c, + // Entry 3B280 - 3B2BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3326, 0x3368, 0x33a7, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x345f, + 0xffff, 0xffff, 0x34c2, 0xffff, 0x350c, 0xffff, 0x356c, 0x35b2, + 0x35fd, 0xffff, 0x364e, 0x369c, 0xffff, 0xffff, 0xffff, 0x371e, + 0x3760, 0xffff, 0xffff, 0x193f, 0x1a5f, 0x1d24, 0x1d5c, 0x009a, + 0x0053, 0x196c, 0x197f, 0x1994, 0x19aa, 0x19da, 0x1a2f, 0x1aa1, + 0x1af3, 0x1b60, 0x1bd1, 0x1c50, 0x1cbb, 0x1cf8, 0x1da2, 0x1dd9, + 0x1e28, 0x1e81, 0x1ed3, 0x1f49, 0x1fb2, 0x2027, 0x208a, 0x20ea, + // Entry 3B2C0 - 3B2FF + 0x2136, 0x2177, 0x21af, 0x21be, 0x21d9, 0x220b, 0x2239, 0x2273, + 0x2294, 0x22d4, 0x230d, 0x234c, 0x2384, 0x239d, 0x23bf, 0x2404, + 0x244a, 0x2474, 0x2482, 0x249d, 0x24cb, 0x250f, 0x2534, 0x2587, + 0x25c3, 0x25f8, 0x2650, 0x26a3, 0x26cf, 0x26e8, 0x271d, 0x272f, + 0x274c, 0x277c, 0x2792, 0x27be, 0x2824, 0x2872, 0x288a, 0x28b1, + 0x2905, 0x2948, 0x2974, 0x297f, 0x2994, 0x29a3, 0x29bb, 0x29d1, + 0x29f5, 0x2a35, 0x2a76, 0x2ab7, 0x2b08, 0x2b5c, 0x2b77, 0x2b9e, + 0x2bca, 0x2bed, 0x2c27, 0x2c3c, 0x2c64, 0x2c9a, 0x2cbc, 0x2cee, + // Entry 3B300 - 3B33F + 0x2cff, 0x2d0f, 0x2d26, 0x2d4f, 0x2d85, 0x2daf, 0x2e16, 0x2e75, + 0x2eba, 0x2eea, 0x2efa, 0x2f08, 0x2f29, 0x2f77, 0x2fc6, 0x3002, + 0x300f, 0x3041, 0x309f, 0x30e6, 0x3123, 0x315b, 0x3169, 0x3194, + 0x31d5, 0x3212, 0x3246, 0x327e, 0x32d4, 0x32e5, 0x32f4, 0x3306, + 0x3316, 0x3336, 0x3377, 0x33b5, 0x33e3, 0x33f6, 0x3408, 0x341e, + 0x3432, 0x3442, 0x3450, 0x346e, 0x349e, 0x34b2, 0x34d0, 0x34fe, + 0x3521, 0x355d, 0x357c, 0x35c5, 0x360d, 0x363f, 0x3662, 0x36ae, + 0x36e4, 0x36f3, 0x3704, 0x372e, 0x3775, 0xffff, 0xffff, 0x1948, + // Entry 3B340 - 3B37F + 0x1a6a, 0x1d2e, 0x1d67, 0x009a, 0x0053, 0xffff, 0xffff, 0xffff, + 0xffff, 0x19fd, 0x1a47, 0x1abb, 0x1b1a, 0x1b88, 0x1c00, 0x1c7e, + 0x1cd3, 0x1d0e, 0x1db6, 0x1df3, 0x1e4e, 0x1e99, 0x1f02, 0x1f6c, + 0x1fe0, 0x204b, 0x20b0, 0x2109, 0x214d, 0x2193, 0xffff, 0xffff, + 0x21f2, 0xffff, 0x2256, 0xffff, 0x22ad, 0x22eb, 0x2323, 0x2368, + 0xffff, 0xffff, 0x23d8, 0x2422, 0x245f, 0xffff, 0xffff, 0xffff, + 0x24ed, 0xffff, 0x2554, 0x25a5, 0xffff, 0x2617, 0x2673, 0x26b9, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2764, 0xffff, 0xffff, 0x27e3, + // Entry 3B380 - 3B3BF + 0x284b, 0xffff, 0xffff, 0x28d2, 0x2920, 0x295e, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2a0d, 0x2a4e, 0x2a90, 0x2acf, + 0x2b32, 0xffff, 0xffff, 0x2bb4, 0xffff, 0x2c0a, 0xffff, 0xffff, + 0x2c7f, 0xffff, 0x2cd5, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d6a, + 0xffff, 0x2dd5, 0x2e3c, 0x2e91, 0x2ed2, 0xffff, 0xffff, 0xffff, + 0x2f47, 0x2f94, 0x2fe4, 0xffff, 0xffff, 0x3066, 0x30bc, 0x30fc, + 0x313f, 0xffff, 0xffff, 0x31ae, 0x31eb, 0x322c, 0xffff, 0x32a9, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x334f, 0x338f, 0x33cc, + // Entry 3B3C0 - 3B3FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3486, + 0xffff, 0xffff, 0x34e7, 0xffff, 0x353f, 0xffff, 0x3597, 0x35e1, + 0x3626, 0xffff, 0x367f, 0x36c9, 0xffff, 0xffff, 0xffff, 0x3747, + 0x3793, 0xffff, 0xffff, 0x195a, 0x1a7e, 0x1d41, 0x1d7b, 0x0003, + 0x0a2a, 0x0a99, 0x0a5d, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3B400 - 3B43F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3B440 - 3B47F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, + 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x229e, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3B480 - 3B4BF + 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0005, 0x0000, 0x0011, 0x0056, 0x007d, 0x00e1, 0x0002, 0x0014, + 0x0035, 0x0005, 0x001a, 0x0023, 0x0000, 0x0000, 0x002c, 0x0007, + 0x0054, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, + 0x0007, 0x0000, 0x297c, 0x2994, 0x3a62, 0x3a65, 0x2483, 0x2485, + 0x298e, 0x0007, 0x003e, 0x0d08, 0x2066, 0x2069, 0x206c, 0x206f, + 0x2072, 0x2075, 0x0005, 0x003b, 0x0044, 0x0000, 0x0000, 0x004d, + // Entry 3B4C0 - 3B4FF + 0x0007, 0x0054, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, + 0x0018, 0x0007, 0x0000, 0x297c, 0x2994, 0x3a68, 0x3a6b, 0x2483, + 0x2485, 0x298e, 0x0007, 0x003e, 0x0d08, 0x2066, 0x2079, 0x207c, + 0x206f, 0x2072, 0x2075, 0x0002, 0x0059, 0x006b, 0x0003, 0x005d, + 0x0000, 0x0064, 0x0005, 0x0054, 0xffff, 0x001d, 0x0025, 0x002d, + 0x0035, 0x0005, 0x0054, 0xffff, 0x003d, 0x004a, 0x0057, 0x0064, + 0x0003, 0x006f, 0x0000, 0x0076, 0x0005, 0x0054, 0xffff, 0x0071, + 0x0079, 0x0081, 0x0089, 0x0005, 0x0054, 0xffff, 0x0091, 0x009e, + // Entry 3B500 - 3B53F + 0x00ab, 0x00b8, 0x0002, 0x0080, 0x00ba, 0x0003, 0x0000, 0x0084, + 0x009f, 0x0008, 0x0000, 0x0000, 0x008d, 0x0093, 0x0096, 0x0099, + 0x009c, 0x0090, 0x0001, 0x0053, 0x0673, 0x0001, 0x0053, 0x0682, + 0x0001, 0x0053, 0x06b0, 0x0001, 0x0053, 0x06bc, 0x0001, 0x0054, + 0x00c5, 0x0001, 0x0054, 0x00cc, 0x0008, 0x0000, 0x0000, 0x00a8, + 0x00ae, 0x00b1, 0x00b4, 0x00b7, 0x00ab, 0x0001, 0x0053, 0x0673, + 0x0001, 0x0053, 0x0682, 0x0001, 0x0053, 0x068a, 0x0001, 0x0053, + 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, 0x0053, 0x06a8, 0x0003, + // Entry 3B540 - 3B57F + 0x0000, 0x00be, 0x00d2, 0x0007, 0x0000, 0x0000, 0x0000, 0x00c6, + 0x00c9, 0x00cc, 0x00cf, 0x0001, 0x0053, 0x06b0, 0x0001, 0x0053, + 0x06bc, 0x0001, 0x0054, 0x00c5, 0x0001, 0x0054, 0x00cc, 0x0008, + 0x0000, 0x0000, 0x00db, 0x0000, 0x0000, 0x0000, 0x0000, 0x00de, + 0x0001, 0x0053, 0x0673, 0x0001, 0x0053, 0x0682, 0x0001, 0x00e3, + 0x0002, 0x0000, 0x00e6, 0x0001, 0x0054, 0x00d3, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3B580 - 3B5BF + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0044, 0xffff, 0x00f6, + 0x00f9, 0x00fc, 0x00ff, 0x30f6, 0x30f9, 0x30fc, 0x30ff, 0x3102, + 0x3105, 0x3109, 0x310d, 0x000d, 0x0054, 0xffff, 0x00db, 0x00eb, + 0x00fa, 0x010a, 0x0119, 0x0127, 0x0135, 0x0143, 0x0151, 0x015f, + // Entry 3B5C0 - 3B5FF + 0x016e, 0x0185, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, + 0x25bc, 0x25bc, 0x25bc, 0x25bc, 0x38ae, 0x298e, 0x298e, 0x297e, + 0x38ae, 0x2055, 0x2055, 0x2055, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0054, 0x019d, 0x01a1, 0x01a5, + 0x01a9, 0x01ae, 0x01b2, 0x01b6, 0x0007, 0x0054, 0x01ba, 0x01c4, + 0x01ce, 0x01d7, 0x01e1, 0x01ea, 0x01f1, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0033, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + // Entry 3B600 - 3B63F + 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0054, + 0xffff, 0x01fb, 0x020a, 0x0218, 0x0227, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0054, + 0x0235, 0x0001, 0x0054, 0x0240, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0054, 0x0235, 0x0001, 0x0054, 0x0240, 0x0003, 0x00c1, 0x0000, + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0054, 0x0248, 0x0258, 0x0001, + 0x00c3, 0x0002, 0x0005, 0x076d, 0x0770, 0x0004, 0x00d5, 0x00cf, + 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + // Entry 3B640 - 3B67F + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3B680 - 3B6BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, + 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, + 0x0001, 0x012c, 0x0001, 0x0036, 0x0381, 0x0001, 0x0131, 0x0001, + 0x0054, 0x0268, 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, + 0x013b, 0x0001, 0x0054, 0x026e, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0036, 0x0393, 0x0003, 0x0054, 0x0274, 0x0279, 0x027e, 0x0001, + 0x014b, 0x0001, 0x0054, 0x0287, 0x0001, 0x0150, 0x0001, 0x0054, + // Entry 3B6C0 - 3B6FF + 0x0295, 0x0001, 0x0155, 0x0001, 0x0044, 0x0529, 0x0001, 0x015a, + 0x0001, 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, + 0x0001, 0x0164, 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, 0x05dd, + 0x0b2b, 0x0012, 0x0017, 0x0024, 0x0084, 0x0000, 0x00e1, 0x0000, + 0x013e, 0x0169, 0x0382, 0x03cf, 0x0427, 0x0000, 0x0000, 0x0000, + 0x0000, 0x047f, 0x0577, 0x05cf, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, + 0x0000, 0x0008, 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0073, + // Entry 3B700 - 3B73F + 0x0000, 0x0000, 0x0002, 0x0030, 0x0051, 0x0002, 0x0033, 0x0042, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x0055, + 0x0000, 0x0064, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 3B740 - 3B77F + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x0004, 0x0081, 0x007b, 0x0078, 0x007e, 0x0001, 0x0050, 0x00fc, + 0x0001, 0x0010, 0x0026, 0x0001, 0x0016, 0x02a2, 0x0001, 0x0016, + 0x0470, 0x0001, 0x0086, 0x0002, 0x0089, 0x00bd, 0x0003, 0x008d, + 0x009d, 0x00ad, 0x000e, 0x0054, 0xffff, 0x029c, 0x02a3, 0x02ac, + 0x02b7, 0x02c2, 0x02cb, 0x02d6, 0x02e7, 0x02f6, 0x0303, 0x030e, + 0x0317, 0x0322, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + // Entry 3B780 - 3B7BF + 0x3874, 0x0422, 0x000e, 0x0054, 0xffff, 0x029c, 0x02a3, 0x02ac, + 0x02b7, 0x02c2, 0x02cb, 0x02d6, 0x02e7, 0x02f6, 0x0303, 0x030e, + 0x0317, 0x0322, 0x0003, 0x00c1, 0x0000, 0x00d1, 0x000e, 0x0054, + 0xffff, 0x029c, 0x02a3, 0x02ac, 0x02b7, 0x02c2, 0x02cb, 0x02d6, + 0x02e7, 0x02f6, 0x0303, 0x030e, 0x0317, 0x0322, 0x000e, 0x0054, + 0xffff, 0x029c, 0x02a3, 0x02ac, 0x02b7, 0x02c2, 0x02cb, 0x02d6, + 0x02e7, 0x02f6, 0x0303, 0x030e, 0x0317, 0x0322, 0x0001, 0x00e3, + 0x0002, 0x00e6, 0x011a, 0x0003, 0x00ea, 0x00fa, 0x010a, 0x000e, + // Entry 3B7C0 - 3B7FF + 0x000e, 0xffff, 0x0098, 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x203e, + 0x204b, 0x205a, 0x0100, 0x2067, 0x2070, 0x207b, 0x2088, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, + 0x000e, 0xffff, 0x0098, 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x203e, + 0x204b, 0x205a, 0x0100, 0x2067, 0x2070, 0x207b, 0x2088, 0x0003, + 0x011e, 0x0000, 0x012e, 0x000e, 0x000e, 0xffff, 0x0098, 0x00a9, + 0x00b6, 0x00c1, 0x00ce, 0x203e, 0x204b, 0x205a, 0x0100, 0x2067, + // Entry 3B800 - 3B83F + 0x2070, 0x207b, 0x2088, 0x000e, 0x000e, 0xffff, 0x0098, 0x00a9, + 0x00b6, 0x00c1, 0x00ce, 0x203e, 0x204b, 0x205a, 0x0100, 0x2067, + 0x2070, 0x207b, 0x2088, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0147, 0x0000, 0x0158, 0x0004, 0x0155, 0x014f, 0x014c, + 0x0152, 0x0001, 0x0009, 0x0323, 0x0001, 0x0009, 0x033a, 0x0001, + 0x0054, 0x032b, 0x0001, 0x0016, 0x02aa, 0x0004, 0x0166, 0x0160, + 0x015d, 0x0163, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0172, + // Entry 3B840 - 3B87F + 0x01d7, 0x022e, 0x0263, 0x0334, 0x034f, 0x0360, 0x0371, 0x0002, + 0x0175, 0x01a6, 0x0003, 0x0179, 0x0188, 0x0197, 0x000d, 0x003e, + 0xffff, 0x0e23, 0x207f, 0x1ff7, 0x1fff, 0x2089, 0x0e4a, 0x0e52, + 0x2022, 0x2090, 0x202a, 0x209a, 0x2032, 0x000d, 0x003e, 0xffff, + 0x0e82, 0x0e85, 0x20a4, 0x0e8b, 0x20a4, 0x203a, 0x203a, 0x0e8b, + 0x20a7, 0x0e94, 0x0e97, 0x20aa, 0x000d, 0x0054, 0xffff, 0x033b, + 0x0348, 0x0357, 0x0362, 0x036f, 0x0376, 0x037f, 0x0388, 0x0397, + 0x03a8, 0x03b7, 0x03c4, 0x0003, 0x01aa, 0x01b9, 0x01c8, 0x000d, + // Entry 3B880 - 3B8BF + 0x003e, 0xffff, 0x0e23, 0x207f, 0x20ad, 0x1fff, 0x20b6, 0x20bd, + 0x20c6, 0x2022, 0x2090, 0x202a, 0x209a, 0x2032, 0x000d, 0x003e, + 0xffff, 0x0e82, 0x0e85, 0x20a4, 0x0e8b, 0x20a4, 0x203a, 0x203a, + 0x0e8b, 0x20a7, 0x0e94, 0x0e97, 0x20aa, 0x000d, 0x0011, 0xffff, + 0x0054, 0x0061, 0x38ff, 0x0079, 0x3908, 0x390f, 0x3918, 0x3921, + 0x00a5, 0x00b6, 0x00c5, 0x00d2, 0x0002, 0x01da, 0x0204, 0x0005, + 0x01e0, 0x01e9, 0x01fb, 0x0000, 0x01f2, 0x0007, 0x0054, 0x03d3, + 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, 0x0007, 0x0054, + // Entry 3B8C0 - 3B8FF + 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, 0x0007, + 0x0054, 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, + 0x0007, 0x0054, 0x03f6, 0x040d, 0x0424, 0x0433, 0x043e, 0x044d, + 0x045c, 0x0005, 0x020a, 0x0213, 0x0225, 0x0000, 0x021c, 0x0007, + 0x0054, 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, + 0x0007, 0x0014, 0x02b6, 0x02b3, 0x02b6, 0x37f3, 0x02b9, 0x02b3, + 0x37f3, 0x0007, 0x0054, 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, + 0x03ec, 0x03f1, 0x0007, 0x0054, 0x03f6, 0x040d, 0x0424, 0x0433, + // Entry 3B900 - 3B93F + 0x043e, 0x044d, 0x045c, 0x0002, 0x0231, 0x024a, 0x0003, 0x0235, + 0x023c, 0x0243, 0x0005, 0x0054, 0xffff, 0x046b, 0x0476, 0x0481, + 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, 0x04d3, 0x0003, + 0x024e, 0x0255, 0x025c, 0x0005, 0x0054, 0xffff, 0x046b, 0x0476, + 0x0481, 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, 0x04d3, + 0x0002, 0x0266, 0x02cd, 0x0003, 0x026a, 0x028b, 0x02ac, 0x0008, + // Entry 3B940 - 3B97F + 0x0276, 0x027c, 0x0273, 0x027f, 0x0282, 0x0285, 0x0288, 0x0279, + 0x0001, 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, 0x0054, + 0x04e7, 0x0001, 0x0014, 0x040b, 0x0001, 0x0054, 0x04f1, 0x0001, + 0x0054, 0x04fa, 0x0001, 0x0054, 0x0501, 0x0001, 0x0054, 0x050e, + 0x0008, 0x0297, 0x029d, 0x0294, 0x02a0, 0x02a3, 0x02a6, 0x02a9, + 0x029a, 0x0001, 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, + 0x0054, 0x04e7, 0x0001, 0x0014, 0x040b, 0x0001, 0x0054, 0x04f1, + 0x0001, 0x0054, 0x04fa, 0x0001, 0x0054, 0x0501, 0x0001, 0x0054, + // Entry 3B980 - 3B9BF + 0x050e, 0x0008, 0x02b8, 0x02be, 0x02b5, 0x02c1, 0x02c4, 0x02c7, + 0x02ca, 0x02bb, 0x0001, 0x0054, 0x0517, 0x0001, 0x0014, 0x0406, + 0x0001, 0x0054, 0x0526, 0x0001, 0x0014, 0x040b, 0x0001, 0x0054, + 0x04f1, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0054, 0x0501, 0x0001, + 0x0054, 0x050e, 0x0003, 0x02d1, 0x02f2, 0x0313, 0x0008, 0x02dd, + 0x02e3, 0x02da, 0x02e6, 0x02e9, 0x02ec, 0x02ef, 0x02e0, 0x0001, + 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, 0x0054, 0x04e7, + 0x0001, 0x0014, 0x040b, 0x0001, 0x0045, 0x0c8d, 0x0001, 0x0054, + // Entry 3B9C0 - 3B9FF + 0x0535, 0x0001, 0x0045, 0x0c96, 0x0001, 0x0054, 0x053e, 0x0008, + 0x02fe, 0x0304, 0x02fb, 0x0307, 0x030a, 0x030d, 0x0310, 0x0301, + 0x0001, 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, 0x0054, + 0x04e7, 0x0001, 0x0014, 0x040b, 0x0001, 0x0045, 0x0c8d, 0x0001, + 0x0054, 0x0535, 0x0001, 0x0045, 0x0c96, 0x0001, 0x0054, 0x053e, + 0x0008, 0x031f, 0x0325, 0x031c, 0x0328, 0x032b, 0x032e, 0x0331, + 0x0322, 0x0001, 0x0054, 0x0517, 0x0001, 0x0014, 0x0406, 0x0001, + 0x0054, 0x0526, 0x0001, 0x0014, 0x040b, 0x0001, 0x0045, 0x0c8d, + // Entry 3BA00 - 3BA3F + 0x0001, 0x0054, 0x0535, 0x0001, 0x0054, 0x0547, 0x0001, 0x0054, + 0x053e, 0x0003, 0x0343, 0x0349, 0x0338, 0x0002, 0x033b, 0x033f, + 0x0002, 0x0054, 0x0552, 0x0592, 0x0002, 0x0054, 0x057b, 0x05bb, + 0x0001, 0x0345, 0x0002, 0x0054, 0x05cd, 0x05da, 0x0001, 0x034b, + 0x0002, 0x0054, 0x05e2, 0x05ee, 0x0004, 0x035d, 0x0357, 0x0354, + 0x035a, 0x0001, 0x0008, 0x09c0, 0x0001, 0x0008, 0x09d5, 0x0001, + 0x0054, 0x05f5, 0x0001, 0x0016, 0x0470, 0x0004, 0x036e, 0x0368, + 0x0365, 0x036b, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, + // Entry 3BA40 - 3BA7F + 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x037f, + 0x0379, 0x0376, 0x037c, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0384, 0x0002, 0x0387, 0x03ab, 0x0003, 0x038b, 0x0000, 0x039b, + 0x000e, 0x0054, 0x0654, 0x0603, 0x0610, 0x061d, 0x062a, 0x0635, + 0x0640, 0x064b, 0x0660, 0x066b, 0x0672, 0x067d, 0x068a, 0x068f, + 0x000e, 0x0054, 0x0654, 0x0603, 0x0610, 0x061d, 0x062a, 0x0635, + 0x0640, 0x064b, 0x0660, 0x066b, 0x0672, 0x067d, 0x068a, 0x068f, + // Entry 3BA80 - 3BABF + 0x0003, 0x03af, 0x0000, 0x03bf, 0x000e, 0x0054, 0x0654, 0x0603, + 0x0610, 0x061d, 0x062a, 0x0635, 0x0640, 0x064b, 0x0660, 0x066b, + 0x0672, 0x067d, 0x068a, 0x068f, 0x000e, 0x0054, 0x0654, 0x0603, + 0x0610, 0x061d, 0x062a, 0x0635, 0x0640, 0x064b, 0x0660, 0x066b, + 0x0672, 0x067d, 0x068a, 0x068f, 0x0001, 0x03d1, 0x0002, 0x03d4, + 0x0405, 0x0003, 0x03d8, 0x03e7, 0x03f6, 0x000d, 0x0054, 0xffff, + 0x0698, 0x06a5, 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, 0x06fd, + 0x070c, 0x0721, 0x072c, 0x0737, 0x000d, 0x0000, 0xffff, 0x0033, + // Entry 3BAC0 - 3BAFF + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0054, 0xffff, 0x0698, 0x06a5, + 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, 0x06fd, 0x070c, 0x0721, + 0x072c, 0x0737, 0x0003, 0x0409, 0x0000, 0x0418, 0x000d, 0x0054, + 0xffff, 0x0698, 0x06a5, 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, + 0x06fd, 0x070c, 0x0721, 0x072c, 0x0737, 0x000d, 0x0054, 0xffff, + 0x0698, 0x06a5, 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, 0x06fd, + 0x070c, 0x0721, 0x072c, 0x0737, 0x0001, 0x0429, 0x0002, 0x042c, + // Entry 3BB00 - 3BB3F + 0x045d, 0x0003, 0x0430, 0x043f, 0x044e, 0x000d, 0x0054, 0xffff, + 0x0748, 0x0759, 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, 0x07e5, + 0x07f2, 0x0801, 0x0810, 0x0824, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0054, 0xffff, 0x0748, 0x0759, + 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, 0x07e5, 0x07f2, 0x0801, + 0x0810, 0x0824, 0x0003, 0x0461, 0x0000, 0x0470, 0x000d, 0x0054, + 0xffff, 0x0748, 0x0759, 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, + // Entry 3BB40 - 3BB7F + 0x07e5, 0x07f2, 0x0801, 0x0810, 0x0824, 0x000d, 0x0054, 0xffff, + 0x0748, 0x0759, 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, 0x07e5, + 0x07f2, 0x0801, 0x0810, 0x0824, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0485, 0x0001, 0x0487, 0x0001, 0x0489, 0x00ec, 0x0054, + 0x083a, 0x085c, 0x0880, 0x08a4, 0x08c4, 0x08e6, 0x0906, 0x0926, + 0x0948, 0x0966, 0x098a, 0x09ae, 0x09d2, 0x09ff, 0x0a2c, 0x0a59, + 0x0a84, 0x0aa4, 0x0ac6, 0x0aea, 0x0b0c, 0x0b2e, 0x0b52, 0x0b72, + 0x0b92, 0x0bb6, 0x0bd8, 0x0bfc, 0x0c1e, 0x0c42, 0x0c64, 0x0c88, + // Entry 3BB80 - 3BBBF + 0x0cac, 0x0ccc, 0x0cee, 0x0d12, 0x0d36, 0x0d5e, 0x0d84, 0x0da2, + 0x0dc2, 0x0de2, 0x0e08, 0x0e2c, 0x0e52, 0x0e76, 0x0e98, 0x0eba, + 0x0eda, 0x0efa, 0x0f1e, 0x0f42, 0x0f63, 0x0f87, 0x0fa9, 0x0fcf, + 0x0ff3, 0x1019, 0x103d, 0x1063, 0x1085, 0x10ab, 0x10cd, 0x10f1, + 0x1115, 0x113d, 0x115f, 0x1181, 0x11a7, 0x11c9, 0x11ed, 0x1213, + 0x1235, 0x1257, 0x127d, 0x129f, 0x12c3, 0x12e5, 0x130b, 0x1331, + 0x1353, 0x1379, 0x139b, 0x13c1, 0x13e7, 0x140b, 0x142d, 0x144f, + 0x1473, 0x1497, 0x14b9, 0x14db, 0x1501, 0x1525, 0x1549, 0x156f, + // Entry 3BBC0 - 3BBFF + 0x1595, 0x15b5, 0x15d9, 0x15fd, 0x1623, 0x1643, 0x1665, 0x1689, + 0x16ad, 0x16cd, 0x16f1, 0x1719, 0x173f, 0x1763, 0x1787, 0x17ad, + 0x17d1, 0x17f7, 0x181b, 0x1843, 0x1867, 0x1889, 0x18ab, 0x18d1, + 0x18f7, 0x191b, 0x193f, 0x1963, 0x198b, 0x19b3, 0x19d7, 0x19ff, + 0x1a21, 0x1a47, 0x1a6d, 0x1a91, 0x1ab5, 0x1ad9, 0x1afb, 0x1b1f, + 0x1b43, 0x1b65, 0x1b8b, 0x1bb1, 0x1bd3, 0x1bf3, 0x1c17, 0x1c39, + 0x1c5f, 0x1c83, 0x1cab, 0x1ccf, 0x1cef, 0x1d11, 0x1d35, 0x1d57, + 0x1d7b, 0x1d9d, 0x1dc3, 0x1deb, 0x1e0f, 0x1e33, 0x1e57, 0x1e7d, + // Entry 3BC00 - 3BC3F + 0x1ea1, 0x1ec9, 0x1eed, 0x1f13, 0x1f39, 0x1f5b, 0x1f7f, 0x1fa7, + 0x1fcb, 0x1feb, 0x2013, 0x2033, 0x2055, 0x2077, 0x209d, 0x20c3, + 0x20e9, 0x210f, 0x2131, 0x2157, 0x217b, 0x219f, 0x21c1, 0x21e7, + 0x2209, 0x222f, 0x2251, 0x2275, 0x2297, 0x22bb, 0x22e1, 0x2307, + 0x232b, 0x2351, 0x2375, 0x2399, 0x23c1, 0x23e5, 0x2409, 0x242f, + 0x2451, 0x2475, 0x2493, 0x24bb, 0x24e1, 0x2507, 0x2529, 0x254d, + 0x2571, 0x2599, 0x25bb, 0x25e1, 0x2603, 0x2629, 0x264d, 0x266f, + 0x2695, 0x26bb, 0x26df, 0x2703, 0x2729, 0x274f, 0x2771, 0x2795, + // Entry 3BC40 - 3BC7F + 0x27bb, 0x27df, 0x2801, 0x2823, 0x2847, 0x286d, 0x2891, 0x28b7, + 0x28d9, 0x28f1, 0x2909, 0x2914, 0x0001, 0x0579, 0x0002, 0x057c, + 0x05ad, 0x0003, 0x0580, 0x058f, 0x059e, 0x000d, 0x0055, 0xffff, + 0x0000, 0x0013, 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, 0x0063, + 0x006c, 0x0075, 0x007c, 0x0089, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x000d, 0x0055, 0xffff, 0x0000, 0x0013, + 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, 0x0063, 0x006c, 0x0075, + // Entry 3BC80 - 3BCBF + 0x007c, 0x0089, 0x0003, 0x05b1, 0x0000, 0x05c0, 0x000d, 0x0055, + 0xffff, 0x0000, 0x0013, 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, + 0x0063, 0x006c, 0x0075, 0x007c, 0x0089, 0x000d, 0x0055, 0xffff, + 0x0000, 0x0013, 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, 0x0063, + 0x006c, 0x0075, 0x007c, 0x0089, 0x0005, 0x0000, 0x0000, 0x0000, + 0x0000, 0x05d5, 0x0001, 0x05d7, 0x0001, 0x05d9, 0x0002, 0x0000, + 0x1a20, 0x3a6e, 0x0040, 0x061e, 0x0000, 0x0000, 0x0623, 0x0642, + 0x065c, 0x0676, 0x0695, 0x06b4, 0x06d3, 0x06f2, 0x070c, 0x0726, + // Entry 3BCC0 - 3BCFF + 0x0749, 0x0767, 0x0000, 0x0000, 0x0000, 0x0785, 0x07a6, 0x07c0, + 0x0000, 0x0000, 0x0000, 0x07da, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x07df, 0x07fb, 0x0817, 0x0833, 0x084f, 0x086b, 0x0887, + 0x08a3, 0x08bf, 0x08db, 0x08f7, 0x0913, 0x092f, 0x094b, 0x0967, + 0x0983, 0x099f, 0x09bb, 0x09d7, 0x09f3, 0x0a0f, 0x0000, 0x0a2b, + 0x0000, 0x0a30, 0x0a4e, 0x0a68, 0x0a82, 0x0aa0, 0x0aba, 0x0ad4, + 0x0af2, 0x0b0c, 0x0b26, 0x0001, 0x0620, 0x0001, 0x0008, 0x0a02, + 0x0003, 0x0627, 0x062a, 0x062f, 0x0001, 0x0008, 0x0a09, 0x0003, + // Entry 3BD00 - 3BD3F + 0x0055, 0x0096, 0x00b1, 0x00c6, 0x0002, 0x0632, 0x063a, 0x0006, + 0x0055, 0x00fb, 0x00e5, 0xffff, 0xffff, 0x00fb, 0x0113, 0x0006, + 0x0055, 0x013f, 0x0129, 0xffff, 0xffff, 0x013f, 0x0157, 0x0003, + 0x0646, 0x0000, 0x0649, 0x0001, 0x0008, 0x0b17, 0x0002, 0x064c, + 0x0654, 0x0006, 0x0055, 0x016d, 0x016d, 0xffff, 0xffff, 0x016d, + 0x0180, 0x0006, 0x0055, 0x0193, 0x0193, 0xffff, 0xffff, 0x0193, + 0x01a6, 0x0003, 0x0660, 0x0000, 0x0663, 0x0001, 0x0008, 0x0b17, + 0x0002, 0x0666, 0x066e, 0x0006, 0x0055, 0x01b9, 0x01b9, 0xffff, + // Entry 3BD40 - 3BD7F + 0xffff, 0x01b9, 0x01c2, 0x0006, 0x0055, 0x01cb, 0x01cb, 0xffff, + 0xffff, 0x01cb, 0x01d4, 0x0003, 0x067a, 0x067d, 0x0682, 0x0001, + 0x0008, 0x0b3d, 0x0003, 0x0055, 0x01dd, 0x0200, 0x0223, 0x0002, + 0x0685, 0x068d, 0x0006, 0x0055, 0x0268, 0x024a, 0xffff, 0xffff, + 0x0268, 0x0288, 0x0006, 0x0055, 0x02c8, 0x02aa, 0xffff, 0xffff, + 0x02c8, 0x02e8, 0x0003, 0x0699, 0x069c, 0x06a1, 0x0001, 0x0008, + 0x0ca5, 0x0003, 0x0055, 0x030a, 0x0323, 0x0338, 0x0002, 0x06a4, + 0x06ac, 0x0006, 0x0055, 0x0351, 0x0351, 0xffff, 0xffff, 0x0351, + // Entry 3BD80 - 3BDBF + 0x0351, 0x0006, 0x0055, 0x0366, 0x0366, 0xffff, 0xffff, 0x0366, + 0x0366, 0x0003, 0x06b8, 0x06bb, 0x06c0, 0x0001, 0x0008, 0x0ca5, + 0x0003, 0x0055, 0x037b, 0x038b, 0x0399, 0x0002, 0x06c3, 0x06cb, + 0x0006, 0x0055, 0x03a9, 0x03a9, 0xffff, 0xffff, 0x03a9, 0x03a9, + 0x0006, 0x0055, 0x03b4, 0x03b4, 0xffff, 0xffff, 0x03b4, 0x03b4, + 0x0003, 0x06d7, 0x06da, 0x06df, 0x0001, 0x0008, 0x0cd1, 0x0003, + 0x0055, 0x03bf, 0x03de, 0x03f7, 0x0002, 0x06e2, 0x06ea, 0x0006, + 0x0055, 0x0434, 0x041a, 0xffff, 0xffff, 0x0434, 0x0450, 0x0006, + // Entry 3BDC0 - 3BDFF + 0x0055, 0x0488, 0x046e, 0xffff, 0xffff, 0x0488, 0x04a4, 0x0003, + 0x06f6, 0x0000, 0x06f9, 0x0001, 0x0008, 0x0e09, 0x0002, 0x06fc, + 0x0704, 0x0006, 0x0055, 0x04c2, 0x04c2, 0xffff, 0xffff, 0x04c2, + 0x04c2, 0x0006, 0x0055, 0x04d9, 0x04d9, 0xffff, 0xffff, 0x04d9, + 0x04d9, 0x0003, 0x0710, 0x0000, 0x0713, 0x0001, 0x0008, 0x0e09, + 0x0002, 0x0716, 0x071e, 0x0006, 0x0055, 0x04f0, 0x04f0, 0xffff, + 0xffff, 0x04f0, 0x04f0, 0x0006, 0x0055, 0x04fd, 0x04fd, 0xffff, + 0xffff, 0x04fd, 0x04fd, 0x0004, 0x072b, 0x072e, 0x0733, 0x0746, + // Entry 3BE00 - 3BE3F + 0x0001, 0x0009, 0x0458, 0x0003, 0x0055, 0x050a, 0x052b, 0x0546, + 0x0002, 0x0736, 0x073e, 0x0006, 0x0055, 0x0587, 0x056b, 0xffff, + 0xffff, 0x0587, 0x05a3, 0x0006, 0x0055, 0x05db, 0x05bf, 0xffff, + 0xffff, 0x05db, 0x05f7, 0x0001, 0x0055, 0x0613, 0x0004, 0x074e, + 0x0000, 0x0751, 0x0764, 0x0001, 0x0045, 0x0ac1, 0x0002, 0x0754, + 0x075c, 0x0006, 0x0055, 0x0629, 0x0629, 0xffff, 0xffff, 0x0629, + 0x0629, 0x0006, 0x0055, 0x0640, 0x0640, 0xffff, 0xffff, 0x0640, + 0x0640, 0x0001, 0x0055, 0x0657, 0x0004, 0x076c, 0x0000, 0x076f, + // Entry 3BE40 - 3BE7F + 0x0782, 0x0001, 0x0045, 0x0ac1, 0x0002, 0x0772, 0x077a, 0x0006, + 0x0055, 0x0668, 0x0668, 0xffff, 0xffff, 0x0668, 0x0668, 0x0006, + 0x0055, 0x0675, 0x0675, 0xffff, 0xffff, 0x0675, 0x0675, 0x0001, + 0x0055, 0x0657, 0x0003, 0x0789, 0x078c, 0x0793, 0x0001, 0x0054, + 0x0535, 0x0005, 0x0055, 0x0695, 0x06a0, 0x06af, 0x0682, 0x06bc, + 0x0002, 0x0796, 0x079e, 0x0006, 0x0055, 0x06eb, 0x06d3, 0xffff, + 0xffff, 0x06eb, 0x0701, 0x0006, 0x0055, 0x0731, 0x0719, 0xffff, + 0xffff, 0x0731, 0x0747, 0x0003, 0x07aa, 0x0000, 0x07ad, 0x0001, + // Entry 3BE80 - 3BEBF + 0x0055, 0x075f, 0x0002, 0x07b0, 0x07b8, 0x0006, 0x0055, 0x0778, + 0x0765, 0xffff, 0xffff, 0x0778, 0x0778, 0x0006, 0x0055, 0x07a1, + 0x078d, 0xffff, 0xffff, 0x07a1, 0x07a1, 0x0003, 0x07c4, 0x0000, + 0x07c7, 0x0001, 0x0055, 0x075f, 0x0002, 0x07ca, 0x07d2, 0x0006, + 0x0055, 0x07b6, 0x07b6, 0xffff, 0xffff, 0x07b6, 0x07b6, 0x0006, + 0x0055, 0x07bf, 0x07bf, 0xffff, 0xffff, 0x07bf, 0x07bf, 0x0001, + 0x07dc, 0x0001, 0x0055, 0x07c8, 0x0003, 0x0000, 0x07e3, 0x07e8, + 0x0003, 0x0055, 0x07de, 0x0807, 0x0828, 0x0002, 0x07eb, 0x07f3, + // Entry 3BEC0 - 3BEFF + 0x0006, 0x0055, 0x087b, 0x0855, 0xffff, 0xffff, 0x087b, 0x08a1, + 0x0006, 0x0055, 0x08ed, 0x08c7, 0xffff, 0xffff, 0x08ed, 0x0913, + 0x0003, 0x0000, 0x07ff, 0x0804, 0x0003, 0x0055, 0x0939, 0x094c, + 0x095c, 0x0002, 0x0807, 0x080f, 0x0006, 0x0055, 0x096f, 0x096f, + 0xffff, 0xffff, 0x096f, 0x096f, 0x0006, 0x0055, 0x0984, 0x0984, + 0xffff, 0xffff, 0x0984, 0x0984, 0x0003, 0x0000, 0x081b, 0x0820, + 0x0003, 0x0055, 0x0939, 0x094c, 0x095c, 0x0002, 0x0823, 0x082b, + 0x0006, 0x0055, 0x0999, 0x0999, 0xffff, 0xffff, 0x0999, 0x0999, + // Entry 3BF00 - 3BF3F + 0x0006, 0x0055, 0x09a4, 0x09a4, 0xffff, 0xffff, 0x09a4, 0x09a4, + 0x0003, 0x0000, 0x0837, 0x083c, 0x0003, 0x0055, 0x09af, 0x09d8, + 0x09fb, 0x0002, 0x083f, 0x0847, 0x0006, 0x0055, 0x0a4e, 0x0a28, + 0xffff, 0xffff, 0x0a4e, 0x0a76, 0x0006, 0x0055, 0x0ac6, 0x0aa0, + 0xffff, 0xffff, 0x0ac6, 0x0aee, 0x0003, 0x0000, 0x0853, 0x0858, + 0x0003, 0x0055, 0x0b18, 0x0b2b, 0x0b3d, 0x0002, 0x085b, 0x0863, + 0x0006, 0x0055, 0x0b50, 0x0b50, 0xffff, 0xffff, 0x0b50, 0x0b50, + 0x0006, 0x0055, 0x0b65, 0x0b65, 0xffff, 0xffff, 0x0b65, 0x0b65, + // Entry 3BF40 - 3BF7F + 0x0003, 0x0000, 0x086f, 0x0874, 0x0003, 0x0055, 0x0b18, 0x0b2b, + 0x0b3d, 0x0002, 0x0877, 0x087f, 0x0006, 0x0055, 0x0b7a, 0x0b7a, + 0xffff, 0xffff, 0x0b7a, 0x0b7a, 0x0006, 0x0055, 0x0b85, 0x0b85, + 0xffff, 0xffff, 0x0b85, 0x0b85, 0x0003, 0x0000, 0x088b, 0x0890, + 0x0003, 0x0055, 0x0b90, 0x0bb1, 0x0bcc, 0x0002, 0x0893, 0x089b, + 0x0006, 0x0055, 0x0c0f, 0x0bf1, 0xffff, 0xffff, 0x0c0f, 0x0c2f, + 0x0006, 0x0055, 0x0c6f, 0x0c51, 0xffff, 0xffff, 0x0c6f, 0x0c8f, + 0x0003, 0x0000, 0x08a7, 0x08ac, 0x0003, 0x0055, 0x0cb1, 0x0cc4, + // Entry 3BF80 - 3BFBF + 0x0cd6, 0x0002, 0x08af, 0x08b7, 0x0006, 0x0055, 0x0ce9, 0x0ce9, + 0xffff, 0xffff, 0x0ce9, 0x0ce9, 0x0006, 0x0055, 0x0cfe, 0x0cfe, + 0xffff, 0xffff, 0x0cfe, 0x0cfe, 0x0003, 0x0000, 0x08c3, 0x08c8, + 0x0003, 0x0055, 0x0cb1, 0x0cc4, 0x0cd6, 0x0002, 0x08cb, 0x08d3, + 0x0006, 0x0055, 0x0d13, 0x0d13, 0xffff, 0xffff, 0x0d13, 0x0d13, + 0x0006, 0x0055, 0x0d1e, 0x0d1e, 0xffff, 0xffff, 0x0d1e, 0x0d1e, + 0x0003, 0x0000, 0x08df, 0x08e4, 0x0003, 0x0055, 0x0d29, 0x0d46, + 0x0d5b, 0x0002, 0x08e7, 0x08ef, 0x0006, 0x0055, 0x0d96, 0x0d7c, + // Entry 3BFC0 - 3BFFF + 0xffff, 0xffff, 0x0d96, 0x0db0, 0x0006, 0x0055, 0x0de2, 0x0dc8, + 0xffff, 0xffff, 0x0de2, 0x0dfc, 0x0003, 0x0000, 0x08fb, 0x0900, + 0x0003, 0x0055, 0x0e14, 0x0e27, 0x0e37, 0x0002, 0x0903, 0x090b, + 0x0006, 0x0055, 0x0e4a, 0x0e4a, 0xffff, 0xffff, 0x0e4a, 0x0e4a, + 0x0006, 0x0055, 0x0e5f, 0x0e5f, 0xffff, 0xffff, 0x0e5f, 0x0e5f, + 0x0003, 0x0000, 0x0917, 0x091c, 0x0003, 0x0055, 0x0e14, 0x0e27, + 0x0e37, 0x0002, 0x091f, 0x0927, 0x0006, 0x0055, 0x0e74, 0x0e74, + 0xffff, 0xffff, 0x0e74, 0x0e74, 0x0006, 0x0055, 0x0e7f, 0x0e7f, + // Entry 3C000 - 3C03F + 0xffff, 0xffff, 0x0e7f, 0x0e7f, 0x0003, 0x0000, 0x0933, 0x0938, + 0x0003, 0x0055, 0x0e8a, 0x0eab, 0x0ec6, 0x0002, 0x093b, 0x0943, + 0x0006, 0x0055, 0x0f09, 0x0eeb, 0xffff, 0xffff, 0x0f09, 0x0f29, + 0x0006, 0x0055, 0x0f69, 0x0f4b, 0xffff, 0xffff, 0x0f69, 0x0f89, + 0x0003, 0x0000, 0x094f, 0x0954, 0x0003, 0x0055, 0x0fab, 0x0fbe, + 0x0fd0, 0x0002, 0x0957, 0x095f, 0x0006, 0x0055, 0x0fe3, 0x0fe3, + 0xffff, 0xffff, 0x0fe3, 0x0fe3, 0x0006, 0x0055, 0x0ff8, 0x0ff8, + 0xffff, 0xffff, 0x0ff8, 0x0ff8, 0x0003, 0x0000, 0x096b, 0x0970, + // Entry 3C040 - 3C07F + 0x0003, 0x0055, 0x0fab, 0x0fbe, 0x0fd0, 0x0002, 0x0973, 0x097b, + 0x0006, 0x0055, 0x100d, 0x100d, 0xffff, 0xffff, 0x100d, 0x100d, + 0x0006, 0x0055, 0x1018, 0x1018, 0xffff, 0xffff, 0x1018, 0x1018, + 0x0003, 0x0000, 0x0987, 0x098c, 0x0003, 0x0055, 0x1023, 0x1044, + 0x105d, 0x0002, 0x098f, 0x0997, 0x0006, 0x0055, 0x10a0, 0x1082, + 0xffff, 0xffff, 0x10a0, 0x10be, 0x0006, 0x0055, 0x10f8, 0x10da, + 0xffff, 0xffff, 0x10f8, 0x1116, 0x0003, 0x0000, 0x09a3, 0x09a8, + 0x0003, 0x0055, 0x1132, 0x1145, 0x1155, 0x0002, 0x09ab, 0x09b3, + // Entry 3C080 - 3C0BF + 0x0006, 0x0055, 0x1168, 0x1168, 0xffff, 0xffff, 0x1168, 0x1168, + 0x0006, 0x0055, 0x117d, 0x117d, 0xffff, 0xffff, 0x117d, 0x117d, + 0x0003, 0x0000, 0x09bf, 0x09c4, 0x0003, 0x0055, 0x1132, 0x1145, + 0x1155, 0x0002, 0x09c7, 0x09cf, 0x0006, 0x0055, 0x1192, 0x1192, + 0xffff, 0xffff, 0x1192, 0x1192, 0x0006, 0x0055, 0x119d, 0x119d, + 0xffff, 0xffff, 0x119d, 0x119d, 0x0003, 0x0000, 0x09db, 0x09e0, + 0x0003, 0x0055, 0x11a8, 0x11c9, 0x11e2, 0x0002, 0x09e3, 0x09eb, + 0x0006, 0x0055, 0x1225, 0x1207, 0xffff, 0xffff, 0x1225, 0x1243, + // Entry 3C0C0 - 3C0FF + 0x0006, 0x0055, 0x127d, 0x125f, 0xffff, 0xffff, 0x127d, 0x129b, + 0x0003, 0x0000, 0x09f7, 0x09fc, 0x0003, 0x0055, 0x12b7, 0x12ca, + 0x12da, 0x0002, 0x09ff, 0x0a07, 0x0006, 0x0055, 0x12ed, 0x12ed, + 0xffff, 0xffff, 0x12ed, 0x12ed, 0x0006, 0x0055, 0x1302, 0x1302, + 0xffff, 0xffff, 0x1302, 0x1302, 0x0003, 0x0000, 0x0a13, 0x0a18, + 0x0003, 0x0055, 0x12b7, 0x12ca, 0x12da, 0x0002, 0x0a1b, 0x0a23, + 0x0006, 0x0055, 0x1317, 0x1317, 0xffff, 0xffff, 0x1317, 0x1317, + 0x0006, 0x0055, 0x1322, 0x1322, 0xffff, 0xffff, 0x1322, 0x1322, + // Entry 3C100 - 3C13F + 0x0001, 0x0a2d, 0x0001, 0x0014, 0x0531, 0x0003, 0x0a34, 0x0a37, + 0x0a3b, 0x0001, 0x0009, 0x17ad, 0x0002, 0x0055, 0xffff, 0x132d, + 0x0002, 0x0a3e, 0x0a46, 0x0006, 0x0055, 0x1358, 0x1342, 0xffff, + 0xffff, 0x1358, 0x1370, 0x0006, 0x0055, 0x13a0, 0x138a, 0xffff, + 0xffff, 0x13a0, 0x13b8, 0x0003, 0x0a52, 0x0000, 0x0a55, 0x0001, + 0x0055, 0x13d2, 0x0002, 0x0a58, 0x0a60, 0x0006, 0x0055, 0x13ea, + 0x13d6, 0xffff, 0xffff, 0x13ea, 0x13ea, 0x0006, 0x0055, 0x1411, + 0x13fd, 0xffff, 0xffff, 0x1411, 0x1411, 0x0003, 0x0a6c, 0x0000, + // Entry 3C140 - 3C17F + 0x0a6f, 0x0001, 0x000e, 0x0298, 0x0002, 0x0a72, 0x0a7a, 0x0006, + 0x0055, 0x1424, 0x1424, 0xffff, 0xffff, 0x1424, 0x1424, 0x0006, + 0x0055, 0x142d, 0x142d, 0xffff, 0xffff, 0x142d, 0x142d, 0x0003, + 0x0a86, 0x0a89, 0x0a8d, 0x0001, 0x0009, 0x185b, 0x0002, 0x0055, + 0xffff, 0x1436, 0x0002, 0x0a90, 0x0a98, 0x0006, 0x0055, 0x1469, + 0x144d, 0xffff, 0xffff, 0x1469, 0x1485, 0x0006, 0x0055, 0x14bb, + 0x149f, 0xffff, 0xffff, 0x14bb, 0x14d7, 0x0003, 0x0aa4, 0x0000, + 0x0aa7, 0x0001, 0x0011, 0x0ce0, 0x0002, 0x0aaa, 0x0ab2, 0x0006, + // Entry 3C180 - 3C1BF + 0x0055, 0x14f1, 0x14f1, 0xffff, 0xffff, 0x14f1, 0x14f1, 0x0006, + 0x0055, 0x1508, 0x1508, 0xffff, 0xffff, 0x1508, 0x1508, 0x0003, + 0x0abe, 0x0000, 0x0ac1, 0x0001, 0x0009, 0x18ed, 0x0002, 0x0ac4, + 0x0acc, 0x0006, 0x0055, 0x151f, 0x151f, 0xffff, 0xffff, 0x151f, + 0x151f, 0x0006, 0x0055, 0x152c, 0x152c, 0xffff, 0xffff, 0x152c, + 0x152c, 0x0003, 0x0ad8, 0x0adb, 0x0adf, 0x0001, 0x0008, 0x1ca4, + 0x0002, 0x0055, 0xffff, 0x1539, 0x0002, 0x0ae2, 0x0aea, 0x0006, + 0x0055, 0x1564, 0x1546, 0xffff, 0xffff, 0x1564, 0x1582, 0x0006, + // Entry 3C1C0 - 3C1FF + 0x0055, 0x15bc, 0x159e, 0xffff, 0xffff, 0x15bc, 0x15da, 0x0003, + 0x0af6, 0x0000, 0x0af9, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0afc, + 0x0b04, 0x0006, 0x0055, 0x15f6, 0x15f6, 0xffff, 0xffff, 0x15f6, + 0x15f6, 0x0006, 0x0055, 0x160e, 0x160e, 0xffff, 0xffff, 0x160e, + 0x160e, 0x0003, 0x0b10, 0x0000, 0x0b13, 0x0001, 0x000e, 0x01f0, + 0x0002, 0x0b16, 0x0b1e, 0x0006, 0x0055, 0x1625, 0x1625, 0xffff, + 0xffff, 0x1625, 0x1625, 0x0006, 0x0055, 0x1632, 0x1632, 0xffff, + 0xffff, 0x1632, 0x1632, 0x0001, 0x0b28, 0x0001, 0x0055, 0x163f, + // Entry 3C200 - 3C23F + 0x0004, 0x0b30, 0x0b35, 0x0b3a, 0x0b49, 0x0003, 0x0000, 0x1dc7, + 0x3839, 0x3a75, 0x0003, 0x0000, 0x1de0, 0x3a79, 0x3a82, 0x0002, + 0x0000, 0x0b3d, 0x0003, 0x0000, 0x0b44, 0x0b41, 0x0001, 0x0055, + 0x1657, 0x0003, 0x0055, 0xffff, 0x1696, 0x16cc, 0x0002, 0x0000, + 0x0b4c, 0x0003, 0x0b50, 0x0c90, 0x0bf0, 0x009e, 0x0055, 0xffff, + 0xffff, 0xffff, 0xffff, 0x17d1, 0x1867, 0x193f, 0x19ae, 0x1a5c, + 0x1afe, 0x1b85, 0x1c1b, 0x1c92, 0x1dbc, 0x1e5e, 0x1ed3, 0x1f7b, + 0x1fe4, 0x207a, 0x2134, 0x222d, 0x22db, 0x2383, 0x2404, 0x248b, + // Entry 3C240 - 3C27F + 0xffff, 0xffff, 0x251a, 0xffff, 0x25ab, 0xffff, 0x263d, 0x269a, + 0x26f1, 0x274e, 0xffff, 0xffff, 0x27f7, 0x2866, 0x28f2, 0xffff, + 0xffff, 0xffff, 0x2991, 0xffff, 0x2a0f, 0x2ab7, 0xffff, 0x2b6d, + 0x2c03, 0x2ca2, 0xffff, 0xffff, 0xffff, 0xffff, 0x2daa, 0xffff, + 0xffff, 0x2e56, 0x2f08, 0xffff, 0xffff, 0x2fec, 0x309d, 0x3106, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x320d, 0x3264, + 0x32cd, 0x3336, 0x3399, 0xffff, 0xffff, 0x34af, 0xffff, 0x3519, + 0xffff, 0xffff, 0x35c8, 0xffff, 0x36a2, 0xffff, 0xffff, 0xffff, + // Entry 3C280 - 3C2BF + 0xffff, 0x376e, 0xffff, 0x37ea, 0x38d4, 0x39b5, 0x3a2d, 0xffff, + 0xffff, 0xffff, 0x3ab3, 0x3b49, 0x3bd9, 0xffff, 0xffff, 0x3c78, + 0x3d51, 0x3dd2, 0x3e29, 0xffff, 0xffff, 0x3eca, 0x3f39, 0x3f90, + 0xffff, 0x401a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x417b, + 0x41e4, 0x425f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x4354, 0xffff, 0xffff, 0x43e3, 0xffff, 0x4449, 0xffff, + 0x44cb, 0x4534, 0x45af, 0xffff, 0x462b, 0x46ac, 0xffff, 0xffff, + 0xffff, 0x4754, 0x47b7, 0xffff, 0xffff, 0x1700, 0x18ca, 0x1ce9, + // Entry 3C2C0 - 3C2FF + 0x1d50, 0xffff, 0xffff, 0x3634, 0x40e7, 0x009e, 0x0055, 0x1760, + 0x1775, 0x1799, 0x17b9, 0x17ef, 0x1874, 0x1950, 0x19d4, 0x1a7e, + 0x1b1f, 0x1bab, 0x1c3a, 0x1c9b, 0x1dde, 0x1e71, 0x1ef7, 0x1f8a, + 0x200a, 0x20a4, 0x217b, 0x2253, 0x22ff, 0x239a, 0x241d, 0x249e, + 0x2500, 0x250b, 0x252b, 0x2589, 0x25bf, 0x262e, 0x2648, 0x26a3, + 0x26fc, 0x2761, 0x27c3, 0x27dc, 0x2808, 0x287e, 0x28fb, 0x2949, + 0x2956, 0x2973, 0x29a2, 0x2a00, 0x2a33, 0x2ad7, 0x2b53, 0x2b8b, + 0x2c24, 0x2cad, 0x2cff, 0x2d23, 0x2d7a, 0x2d9d, 0x2db7, 0x2e0d, + // Entry 3C300 - 3C33F + 0x2e26, 0x2e7e, 0x2f2e, 0x2fbf, 0x2fdf, 0x301b, 0x30ac, 0x310f, + 0x315d, 0x3168, 0x3186, 0x3199, 0x31c3, 0x31e9, 0x3216, 0x3273, + 0x32dc, 0x3343, 0x33c9, 0x3465, 0x348b, 0x34ba, 0x350c, 0x352e, + 0x3594, 0x35b7, 0x35d8, 0x3691, 0x36b1, 0x370b, 0x371c, 0x372d, + 0x374a, 0x377f, 0x37dd, 0x382c, 0x3913, 0x39c9, 0x3a3a, 0x3a90, + 0x3a9d, 0x3aa8, 0x3ad1, 0x3b65, 0x3bf2, 0x3c60, 0x3c69, 0x3c9d, + 0x3d68, 0x3ddb, 0x3e3a, 0x3e98, 0x3ea3, 0x3edb, 0x3f42, 0x3fa3, + 0x4005, 0x403c, 0x40bc, 0x40cb, 0x40d8, 0x415f, 0x416e, 0x418a, + // Entry 3C340 - 3C37F + 0x41ff, 0x426a, 0x42bc, 0x42e2, 0x42f3, 0x4317, 0x4331, 0x4340, + 0x4349, 0x4363, 0x43bd, 0x43d4, 0x43ee, 0x4440, 0x445c, 0x44be, + 0x44da, 0x4549, 0x45be, 0x4618, 0x4642, 0x46bf, 0x4721, 0x472e, + 0x4737, 0x4761, 0x47d0, 0x2fb6, 0x3d23, 0x1714, 0x18e5, 0x1cff, + 0x1d68, 0x2623, 0x35a5, 0x363f, 0x40fb, 0x009e, 0x0055, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1830, 0x18a4, 0x1984, 0x1a1d, 0x1ac3, + 0x1b57, 0x1be8, 0x1c6b, 0x1cc7, 0x1e23, 0x1ea7, 0x1f3e, 0x1fbc, + 0x2047, 0x20f1, 0x21d9, 0x229c, 0x2346, 0x23d4, 0x2459, 0x24d4, + // Entry 3C380 - 3C3BF + 0xffff, 0xffff, 0x255f, 0xffff, 0x25f6, 0xffff, 0x2676, 0x26cf, + 0x272a, 0x2797, 0xffff, 0xffff, 0x283c, 0x28b9, 0x2927, 0xffff, + 0xffff, 0xffff, 0x29d6, 0xffff, 0x2a7a, 0x2b1a, 0xffff, 0x2bcc, + 0x2c68, 0x2cdb, 0xffff, 0xffff, 0xffff, 0xffff, 0x2de7, 0xffff, + 0xffff, 0x2ec7, 0x2f77, 0xffff, 0xffff, 0x3061, 0x30de, 0x313b, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3242, 0x32a5, + 0x330e, 0x3373, 0x341c, 0xffff, 0xffff, 0x34e8, 0xffff, 0x3566, + 0xffff, 0xffff, 0x360b, 0xffff, 0x36e3, 0xffff, 0xffff, 0xffff, + // Entry 3C3C0 - 3C3FF + 0xffff, 0x37b3, 0xffff, 0x3885, 0x3969, 0x3a00, 0x3a6a, 0xffff, + 0xffff, 0xffff, 0x3b12, 0x3ba4, 0x3c2e, 0xffff, 0xffff, 0x3ce5, + 0x3da2, 0x3e07, 0x3e6e, 0xffff, 0xffff, 0x3f0f, 0x3f6e, 0x3fd9, + 0xffff, 0x4081, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x41bc, + 0x4234, 0x4298, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x4395, 0xffff, 0xffff, 0x441c, 0xffff, 0x4492, 0xffff, + 0x450c, 0x4581, 0x45f0, 0xffff, 0x467c, 0x46f5, 0xffff, 0xffff, + 0xffff, 0x4791, 0x480c, 0xffff, 0xffff, 0x173f, 0x1917, 0x1d2d, + // Entry 3C400 - 3C43F + 0x1d97, 0xffff, 0xffff, 0x366d, 0x4132, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0025, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, + 0x0000, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0008, 0x0000, 0x0000, 0x0000, 0x002e, 0x0000, + 0x0000, 0x0087, 0x0000, 0x0002, 0x0031, 0x0068, 0x0003, 0x0035, + 0x003e, 0x005f, 0x0002, 0x0038, 0x003b, 0x0001, 0x0000, 0x04ef, + // Entry 3C440 - 3C47F + 0x0001, 0x0000, 0x04f2, 0x0008, 0x004a, 0x0050, 0x0047, 0x0053, + 0x0056, 0x0059, 0x005c, 0x004d, 0x0001, 0x0045, 0x0c79, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0054, 0x04e7, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0054, 0x04f1, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0045, + 0x0c96, 0x0001, 0x0054, 0x050e, 0x0002, 0x0062, 0x0065, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x006c, 0x0075, + 0x007e, 0x0002, 0x006f, 0x0072, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0078, 0x007b, 0x0001, 0x0000, 0x04ef, + // Entry 3C480 - 3C4BF + 0x0001, 0x0000, 0x04f2, 0x0002, 0x0081, 0x0084, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0004, 0x0095, 0x008f, 0x008c, + 0x0092, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, + 0x01a3, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0002, + 0x028a, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, + // Entry 3C4C0 - 3C4FF + 0x0002, 0x029c, 0x0008, 0x002e, 0x0093, 0x00ea, 0x011f, 0x0160, + 0x0170, 0x0181, 0x0192, 0x0002, 0x0031, 0x0062, 0x0003, 0x0035, + 0x0044, 0x0053, 0x000d, 0x0056, 0xffff, 0x0000, 0x0005, 0x000a, + 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x0028, 0x002d, 0x0032, + 0x0037, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x000d, 0x0056, 0xffff, 0x003c, 0x0045, 0x0051, 0x0059, 0x005e, + 0x0068, 0x006f, 0x0078, 0x007f, 0x0085, 0x008e, 0x0099, 0x0003, + // Entry 3C500 - 3C53F + 0x0066, 0x0075, 0x0084, 0x000d, 0x0056, 0xffff, 0x0000, 0x0005, + 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x0028, 0x002d, + 0x0032, 0x0037, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x000d, 0x0056, 0xffff, 0x003c, 0x0045, 0x0051, 0x0059, + 0x005e, 0x0068, 0x006f, 0x0078, 0x007f, 0x0085, 0x008e, 0x0099, + 0x0002, 0x0096, 0x00c0, 0x0005, 0x009c, 0x00a5, 0x00b7, 0x0000, + 0x00ae, 0x0007, 0x0056, 0x00a1, 0x00a6, 0x00ab, 0x00b0, 0x0023, + // Entry 3C540 - 3C57F + 0x00b5, 0x00ba, 0x0007, 0x0000, 0x298e, 0x297a, 0x38ae, 0x2159, + 0x38ae, 0x298c, 0x298e, 0x0007, 0x0056, 0x00a1, 0x00a6, 0x00ab, + 0x00b0, 0x0023, 0x00b5, 0x00ba, 0x0007, 0x0056, 0x00bf, 0x00cb, + 0x00d6, 0x00e2, 0x00ee, 0x00f8, 0x0104, 0x0005, 0x00c6, 0x00cf, + 0x00e1, 0x0000, 0x00d8, 0x0007, 0x0056, 0x00a1, 0x00a6, 0x00ab, + 0x00b0, 0x0023, 0x00b5, 0x00ba, 0x0007, 0x0000, 0x298e, 0x297a, + 0x38ae, 0x2159, 0x38ae, 0x298c, 0x298e, 0x0007, 0x0056, 0x00a1, + 0x00a6, 0x00ab, 0x00b0, 0x0023, 0x00b5, 0x00ba, 0x0007, 0x0056, + // Entry 3C580 - 3C5BF + 0x00bf, 0x00cb, 0x00d6, 0x00e2, 0x00ee, 0x00f8, 0x0104, 0x0002, + 0x00ed, 0x0106, 0x0003, 0x00f1, 0x00f8, 0x00ff, 0x0005, 0x0053, + 0xffff, 0x03d2, 0x03d5, 0x03d8, 0x03db, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, 0xffff, 0x0113, + 0x0127, 0x013c, 0x0151, 0x0003, 0x010a, 0x0111, 0x0118, 0x0005, + 0x0053, 0xffff, 0x03d2, 0x03d5, 0x03d8, 0x03db, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, 0xffff, + 0x0113, 0x0127, 0x013c, 0x0151, 0x0002, 0x0122, 0x0141, 0x0003, + // Entry 3C5C0 - 3C5FF + 0x0126, 0x012f, 0x0138, 0x0002, 0x0129, 0x012c, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x0132, 0x0135, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x013b, 0x013e, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0145, + 0x014e, 0x0157, 0x0002, 0x0148, 0x014b, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x0151, 0x0154, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x015a, 0x015d, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x016a, 0x0000, + // Entry 3C600 - 3C63F + 0x0164, 0x0001, 0x0166, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, + 0x016c, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x017e, 0x0178, + 0x0175, 0x017b, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, + 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x018f, + 0x0189, 0x0186, 0x018c, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x01a0, 0x019a, 0x0197, 0x019d, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 3C640 - 3C67F + 0x0004, 0x01a8, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x1dc7, + 0x3839, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, + 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, + 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, + 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, + // Entry 3C680 - 3C6BF + 0x0005, 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, + 0x22d4, 0x22d8, 0x22dc, 0x234a, 0x22e0, 0x21e2, 0x000d, 0x0005, + 0xffff, 0x0666, 0x066e, 0x2441, 0x22ea, 0x2386, 0x22f2, 0x22f8, + 0x22ff, 0x2447, 0x23ab, 0x2450, 0x23ba, 0x0002, 0x0000, 0x0057, + 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, + 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x0002, + 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, + 0x06b6, 0x2458, 0x245c, 0x2460, 0x2464, 0x2468, 0x246c, 0x0007, + // Entry 3C6C0 - 3C6FF + 0x0036, 0x0313, 0x031d, 0x67ca, 0x032f, 0x67d2, 0x67db, 0x67e2, + 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2483, 0x2483, 0x2483, + 0x2483, 0x2980, 0x2055, 0x2483, 0x0001, 0x008d, 0x0003, 0x0091, + 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, + 0x0717, 0x0005, 0x0005, 0xffff, 0x071a, 0x0721, 0x0728, 0x072f, + 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, + 0x00ab, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, 0x0002, + 0x00b1, 0x00b4, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, + // Entry 3C700 - 3C73F + 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0036, + 0x0361, 0x0371, 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, + 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, + 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, + // Entry 3C740 - 3C77F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, + 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, + 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, 0x0036, 0x0381, + 0x0001, 0x0131, 0x0001, 0x0036, 0x0387, 0x0001, 0x0136, 0x0001, + // Entry 3C780 - 3C7BF + 0x0016, 0x0207, 0x0001, 0x013b, 0x0001, 0x0036, 0x038c, 0x0002, + 0x0141, 0x0144, 0x0001, 0x0036, 0x0393, 0x0003, 0x0036, 0x0399, + 0x039e, 0x03a2, 0x0001, 0x014b, 0x0001, 0x0036, 0x03a8, 0x0001, + 0x0150, 0x0001, 0x0009, 0x0308, 0x0001, 0x0155, 0x0001, 0x0036, + 0x03b5, 0x0001, 0x015a, 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, + 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, 0x01c0, 0x046c, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, + // Entry 3C7C0 - 3C7FF + 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0056, + 0x0164, 0x0001, 0x0046, 0x0012, 0x0001, 0x0046, 0x001e, 0x0001, + 0x0056, 0x0189, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, + 0x0173, 0x018d, 0x019e, 0x01af, 0x0002, 0x0044, 0x0075, 0x0003, + 0x0048, 0x0057, 0x0066, 0x000d, 0x0056, 0xffff, 0x0196, 0x019f, + 0x01a8, 0x01af, 0x01b6, 0x01bd, 0x01c4, 0x01cb, 0x01d2, 0x01d9, + // Entry 3C800 - 3C83F + 0x01e0, 0x01e7, 0x000d, 0x0037, 0xffff, 0x13d7, 0x2023, 0x2026, + 0x2029, 0x202c, 0x1597, 0x2023, 0x202f, 0x1597, 0x202f, 0x2032, + 0x202f, 0x000d, 0x0056, 0xffff, 0x01ee, 0x0201, 0x0210, 0x0226, + 0x023a, 0x024a, 0x025a, 0x0268, 0x0282, 0x029a, 0x02ab, 0x02bc, + 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0056, 0xffff, 0x0196, + 0x019f, 0x01a8, 0x01af, 0x01b6, 0x01bd, 0x01c4, 0x01cb, 0x01d2, + 0x01d9, 0x01e0, 0x01e7, 0x000d, 0x0037, 0xffff, 0x13d7, 0x2023, + 0x2026, 0x2029, 0x202c, 0x1597, 0x2023, 0x202f, 0x1597, 0x202f, + // Entry 3C840 - 3C87F + 0x2032, 0x202f, 0x000d, 0x0056, 0xffff, 0x02cd, 0x02e0, 0x02ef, + 0x0305, 0x0319, 0x0327, 0x0335, 0x0341, 0x0359, 0x036f, 0x0380, + 0x02bc, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, + 0x0000, 0x00c1, 0x0007, 0x0056, 0x0391, 0x0396, 0x039b, 0x03a0, + 0x03a5, 0x03aa, 0x03af, 0x0007, 0x0037, 0x1597, 0x1597, 0x2023, + 0x2032, 0x2035, 0x1597, 0x2032, 0x0007, 0x0056, 0x0391, 0x0396, + 0x039b, 0x03a0, 0x03a5, 0x03aa, 0x03af, 0x0007, 0x0056, 0x03b4, + 0x03cd, 0x03e6, 0x03ff, 0x040c, 0x041b, 0x042c, 0x0005, 0x00d9, + // Entry 3C880 - 3C8BF + 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0056, 0x0391, 0x0396, + 0x039b, 0x03a0, 0x03a5, 0x03aa, 0x03af, 0x0007, 0x0037, 0x1597, + 0x1597, 0x2023, 0x2032, 0x2035, 0x1597, 0x2032, 0x0007, 0x0056, + 0x0391, 0x0396, 0x039b, 0x03a0, 0x03a5, 0x03aa, 0x03af, 0x0007, + 0x0056, 0x03b4, 0x03cd, 0x03e6, 0x03ff, 0x040c, 0x041b, 0x042c, + 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, + 0x0056, 0xffff, 0x043b, 0x0447, 0x0451, 0x045b, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, 0xffff, + // Entry 3C8C0 - 3C8FF + 0x0465, 0x047f, 0x0497, 0x04af, 0x0003, 0x011d, 0x0124, 0x012b, + 0x0005, 0x0056, 0xffff, 0x043b, 0x0447, 0x0451, 0x045b, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, + 0xffff, 0x0465, 0x047f, 0x0497, 0x04af, 0x0002, 0x0135, 0x0154, + 0x0003, 0x0139, 0x0142, 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, + 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x0145, 0x0148, + 0x0001, 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x014e, + 0x0151, 0x0001, 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0003, + // Entry 3C900 - 3C93F + 0x0158, 0x0161, 0x016a, 0x0002, 0x015b, 0x015e, 0x0001, 0x0056, + 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x0164, 0x0167, 0x0001, + 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x016d, 0x0170, + 0x0001, 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0003, 0x0182, + 0x0000, 0x0177, 0x0002, 0x017a, 0x017e, 0x0002, 0x0056, 0x04d1, + 0x0506, 0x0002, 0x0056, 0x04dd, 0x050d, 0x0002, 0x0185, 0x0189, + 0x0002, 0x0056, 0x04d1, 0x0506, 0x0002, 0x0000, 0x04f5, 0x04f9, + 0x0004, 0x019b, 0x0195, 0x0192, 0x0198, 0x0001, 0x0056, 0x0529, + // Entry 3C940 - 3C97F + 0x0001, 0x0046, 0x05ce, 0x0001, 0x0046, 0x05d8, 0x0001, 0x001f, + 0x1e54, 0x0004, 0x01ac, 0x01a6, 0x01a3, 0x01a9, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x01bd, 0x01b7, 0x01b4, 0x01ba, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0040, 0x0201, 0x0000, 0x0000, 0x0206, + 0x0000, 0x0000, 0x021b, 0x0230, 0x0240, 0x0250, 0x0000, 0x0000, + 0x0265, 0x027e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0286, 0x0000, + // Entry 3C980 - 3C9BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x02a2, 0x02b4, 0x02c6, 0x02d8, 0x02ea, 0x02fc, + 0x030e, 0x0320, 0x0332, 0x0344, 0x0356, 0x0368, 0x037a, 0x038c, + 0x039e, 0x03b0, 0x03c2, 0x03d4, 0x03e6, 0x03f8, 0x040a, 0x0000, + 0x041c, 0x0000, 0x0421, 0x0000, 0x0000, 0x0435, 0x0000, 0x0000, + 0x0449, 0x045d, 0x0000, 0x0467, 0x0001, 0x0203, 0x0001, 0x0056, + 0x054c, 0x0003, 0x020a, 0x020d, 0x0212, 0x0001, 0x0056, 0x0555, + 0x0003, 0x0056, 0x055c, 0x056d, 0x0578, 0x0002, 0x0215, 0x0218, + // Entry 3C9C0 - 3C9FF + 0x0001, 0x0056, 0x0583, 0x0001, 0x0056, 0x0596, 0x0003, 0x021f, + 0x0222, 0x0227, 0x0001, 0x0056, 0x05bd, 0x0003, 0x0056, 0x05cc, + 0x05ec, 0x0604, 0x0002, 0x022a, 0x022d, 0x0001, 0x0056, 0x0622, + 0x0001, 0x0056, 0x0641, 0x0003, 0x0234, 0x0000, 0x0237, 0x0001, + 0x0056, 0x0674, 0x0002, 0x023a, 0x023d, 0x0001, 0x0056, 0x0622, + 0x0001, 0x0056, 0x067c, 0x0003, 0x0244, 0x0000, 0x0247, 0x0001, + 0x0056, 0x0674, 0x0002, 0x024a, 0x024d, 0x0001, 0x0056, 0x0622, + 0x0001, 0x0056, 0x067c, 0x0003, 0x0254, 0x0257, 0x025c, 0x0001, + // Entry 3CA00 - 3CA3F + 0x0056, 0x06a4, 0x0003, 0x0056, 0x06a9, 0x06bb, 0x06c5, 0x0002, + 0x025f, 0x0262, 0x0001, 0x0056, 0x06db, 0x0001, 0x0056, 0x06ec, + 0x0004, 0x026a, 0x026d, 0x0272, 0x027b, 0x0001, 0x0056, 0x0711, + 0x0003, 0x0056, 0x0720, 0x073c, 0x0750, 0x0002, 0x0275, 0x0278, + 0x0001, 0x0056, 0x076a, 0x0001, 0x0056, 0x0785, 0x0001, 0x0056, + 0x07b4, 0x0004, 0x0000, 0x0000, 0x0000, 0x0283, 0x0001, 0x0056, + 0x07b4, 0x0003, 0x028a, 0x028d, 0x0294, 0x0001, 0x0056, 0x07cb, + 0x0005, 0x0056, 0x07e8, 0x07f7, 0x0802, 0x07d2, 0x080f, 0x0002, + // Entry 3CA40 - 3CA7F + 0x0297, 0x029a, 0x0001, 0x0056, 0x081a, 0x0001, 0x0056, 0x082d, + 0x0001, 0x029f, 0x0001, 0x0056, 0x0854, 0x0003, 0x0000, 0x02a6, + 0x02ab, 0x0003, 0x0056, 0x086c, 0x0892, 0x08b0, 0x0002, 0x02ae, + 0x02b1, 0x0001, 0x0056, 0x08d4, 0x0001, 0x0056, 0x08f7, 0x0003, + 0x0000, 0x02b8, 0x02bd, 0x0003, 0x0056, 0x0930, 0x0943, 0x094e, + 0x0002, 0x02c0, 0x02c3, 0x0001, 0x0056, 0x08d4, 0x0001, 0x0056, + 0x095f, 0x0003, 0x0000, 0x02ca, 0x02cf, 0x0003, 0x0056, 0x0930, + 0x0943, 0x094e, 0x0002, 0x02d2, 0x02d5, 0x0001, 0x0056, 0x08d4, + // Entry 3CA80 - 3CABF + 0x0001, 0x0056, 0x095f, 0x0003, 0x0000, 0x02dc, 0x02e1, 0x0003, + 0x0056, 0x0985, 0x09ab, 0x09c9, 0x0002, 0x02e4, 0x02e7, 0x0001, + 0x0056, 0x09ed, 0x0001, 0x0056, 0x0a12, 0x0003, 0x0000, 0x02ee, + 0x02f3, 0x0003, 0x0056, 0x0a4b, 0x0a5e, 0x0a69, 0x0002, 0x02f6, + 0x02f9, 0x0001, 0x0056, 0x09ed, 0x0001, 0x0056, 0x0a7a, 0x0003, + 0x0000, 0x0300, 0x0305, 0x0003, 0x0056, 0x0a4b, 0x0a5e, 0x0a69, + 0x0002, 0x0308, 0x030b, 0x0001, 0x0056, 0x09ed, 0x0001, 0x0056, + 0x0a7a, 0x0003, 0x0000, 0x0312, 0x0317, 0x0003, 0x0056, 0x0aa0, + // Entry 3CAC0 - 3CAFF + 0x0ac6, 0x0ae4, 0x0002, 0x031a, 0x031d, 0x0001, 0x0056, 0x0b08, + 0x0001, 0x0056, 0x0b2d, 0x0003, 0x0000, 0x0324, 0x0329, 0x0003, + 0x0056, 0x0b66, 0x0b79, 0x0b84, 0x0002, 0x032c, 0x032f, 0x0001, + 0x0056, 0x0b08, 0x0001, 0x0056, 0x0b95, 0x0003, 0x0000, 0x0336, + 0x033b, 0x0003, 0x0056, 0x0b66, 0x0b79, 0x0b84, 0x0002, 0x033e, + 0x0341, 0x0001, 0x0056, 0x0b08, 0x0001, 0x0056, 0x0b95, 0x0003, + 0x0000, 0x0348, 0x034d, 0x0003, 0x0056, 0x0bbb, 0x0bd5, 0x0be7, + 0x0002, 0x0350, 0x0353, 0x0001, 0x0056, 0x0bff, 0x0001, 0x0056, + // Entry 3CB00 - 3CB3F + 0x0c16, 0x0003, 0x0000, 0x035a, 0x035f, 0x0003, 0x0056, 0x0c43, + 0x0c56, 0x0c61, 0x0002, 0x0362, 0x0365, 0x0001, 0x0056, 0x0bff, + 0x0001, 0x0056, 0x0c72, 0x0003, 0x0000, 0x036c, 0x0371, 0x0003, + 0x0056, 0x0c43, 0x0c56, 0x0c61, 0x0002, 0x0374, 0x0377, 0x0001, + 0x0056, 0x0bff, 0x0001, 0x0056, 0x0c72, 0x0003, 0x0000, 0x037e, + 0x0383, 0x0003, 0x0056, 0x0c98, 0x0cb4, 0x0cc8, 0x0002, 0x0386, + 0x0389, 0x0001, 0x0056, 0x0ce2, 0x0001, 0x0056, 0x0cfd, 0x0003, + 0x0000, 0x0390, 0x0395, 0x0003, 0x0056, 0x0d2c, 0x0d3f, 0x0d4a, + // Entry 3CB40 - 3CB7F + 0x0002, 0x0398, 0x039b, 0x0001, 0x0056, 0x0ce2, 0x0001, 0x0056, + 0x0d5b, 0x0003, 0x0000, 0x03a2, 0x03a7, 0x0003, 0x0056, 0x0d2c, + 0x0d3f, 0x0d4a, 0x0002, 0x03aa, 0x03ad, 0x0001, 0x0056, 0x0ce2, + 0x0001, 0x0056, 0x0d5b, 0x0003, 0x0000, 0x03b4, 0x03b9, 0x0003, + 0x0056, 0x0d81, 0x0d9f, 0x0db5, 0x0002, 0x03bc, 0x03bf, 0x0001, + 0x0056, 0x0dd1, 0x0001, 0x0056, 0x0dec, 0x0003, 0x0000, 0x03c6, + 0x03cb, 0x0003, 0x0056, 0x0e1d, 0x0e30, 0x0e3b, 0x0002, 0x03ce, + 0x03d1, 0x0001, 0x0056, 0x0dd1, 0x0001, 0x0056, 0x0e4c, 0x0003, + // Entry 3CB80 - 3CBBF + 0x0000, 0x03d8, 0x03dd, 0x0003, 0x0056, 0x0e1d, 0x0e30, 0x0e3b, + 0x0002, 0x03e0, 0x03e3, 0x0001, 0x0056, 0x0dd1, 0x0001, 0x0056, + 0x0e4c, 0x0003, 0x0000, 0x03ea, 0x03ef, 0x0003, 0x0056, 0x0e72, + 0x0e8e, 0x0ea2, 0x0002, 0x03f2, 0x03f5, 0x0001, 0x0056, 0x0ebc, + 0x0001, 0x0056, 0x0ed5, 0x0003, 0x0000, 0x03fc, 0x0401, 0x0003, + 0x0056, 0x0f04, 0x0f17, 0x0f22, 0x0002, 0x0404, 0x0407, 0x0001, + 0x0056, 0x0ebc, 0x0001, 0x0056, 0x0f33, 0x0003, 0x0000, 0x040e, + 0x0413, 0x0003, 0x0056, 0x0f04, 0x0f17, 0x0f22, 0x0002, 0x0416, + // Entry 3CBC0 - 3CBFF + 0x0419, 0x0001, 0x0056, 0x0ebc, 0x0001, 0x0056, 0x0f33, 0x0001, + 0x041e, 0x0001, 0x0056, 0x0f59, 0x0003, 0x0425, 0x0428, 0x042c, + 0x0001, 0x0056, 0x0f63, 0x0002, 0x0056, 0xffff, 0x0f6c, 0x0002, + 0x042f, 0x0432, 0x0001, 0x0056, 0x0f7e, 0x0001, 0x0056, 0x0f93, + 0x0003, 0x0439, 0x043c, 0x0440, 0x0001, 0x0056, 0x0fbc, 0x0002, + 0x0056, 0xffff, 0x0fcb, 0x0002, 0x0443, 0x0446, 0x0001, 0x0056, + 0x0fe3, 0x0001, 0x0056, 0x0ffe, 0x0003, 0x044d, 0x0450, 0x0454, + 0x0001, 0x0056, 0x102d, 0x0002, 0x0056, 0xffff, 0x103e, 0x0002, + // Entry 3CC00 - 3CC3F + 0x0457, 0x045a, 0x0001, 0x0056, 0x104d, 0x0001, 0x0056, 0x106a, + 0x0003, 0x0000, 0x0000, 0x0461, 0x0002, 0x0000, 0x0464, 0x0001, + 0x0056, 0x109b, 0x0001, 0x0469, 0x0001, 0x0056, 0x10c3, 0x0004, + 0x0000, 0x0000, 0x0000, 0x0471, 0x0002, 0x0000, 0x0474, 0x0003, + 0x0478, 0x05a4, 0x050e, 0x0094, 0x0056, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x10db, 0xffff, 0xffff, 0x1131, 0xffff, 0x118d, + 0xffff, 0x1216, 0x129f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3CC40 - 3CC7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x132e, 0x1384, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x13f2, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x147d, 0xffff, 0xffff, 0x14d3, + 0xffff, 0xffff, 0xffff, 0x158b, 0xffff, 0x15e7, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1685, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3CC80 - 3CCBF + 0xffff, 0xffff, 0xffff, 0x16ed, 0x1764, 0xffff, 0xffff, 0xffff, + 0xffff, 0x17c6, 0xffff, 0xffff, 0xffff, 0xffff, 0x1845, 0x18cb, + 0x1927, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1995, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x19fd, 0x1a83, 0xffff, 0xffff, 0xffff, 0x1af1, + 0x1b65, 0x0094, 0x0056, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3CCC0 - 3CCFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x10ef, 0xffff, 0xffff, 0x1147, 0xffff, 0x11b2, 0xffff, 0x123b, + 0x12c6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1342, 0x13a0, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x140c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x145a, 0xffff, 0xffff, 0xffff, + // Entry 3CD00 - 3CD3F + 0xffff, 0xffff, 0x1491, 0xffff, 0xffff, 0x14ed, 0xffff, 0x153b, + 0x1562, 0x15a1, 0xffff, 0x1609, 0x1667, 0xffff, 0xffff, 0xffff, + 0x169f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x170c, 0x177c, 0xffff, 0xffff, 0xffff, 0xffff, 0x17e9, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1869, 0x18e1, 0x1943, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x19af, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3CD40 - 3CD7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1a1d, 0x1a9f, 0xffff, 0xffff, 0xffff, 0x1b0f, 0x1b87, 0x0094, + 0x0056, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x110e, 0xffff, + 0xffff, 0x1168, 0xffff, 0x11e2, 0xffff, 0x126b, 0x12f8, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1361, 0x13c7, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3CD80 - 3CDBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1431, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x14b0, 0xffff, 0xffff, 0x1512, 0xffff, 0xffff, 0xffff, 0x15c2, + 0xffff, 0x1636, 0xffff, 0xffff, 0xffff, 0xffff, 0x16c4, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1736, + 0x179f, 0xffff, 0xffff, 0xffff, 0xffff, 0x1815, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1898, 0x1902, 0x196a, 0xffff, 0xffff, 0xffff, + // Entry 3CDC0 - 3CDFF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x19d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a4e, 0x1ac6, + 0xffff, 0xffff, 0xffff, 0x1b38, 0x1bb4, 0x0002, 0x0003, 0x00e9, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + // Entry 3CE00 - 3CE3F + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, + 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0056, 0xffff, 0x1be5, 0x1be9, + 0x1bed, 0x1bf1, 0x1bf5, 0x1bf9, 0x1bfd, 0x1c01, 0x1c05, 0x1c09, + 0x1c0d, 0x1c11, 0x000d, 0x0056, 0xffff, 0x1c15, 0x1c21, 0x1c2f, + 0x1c3d, 0x1c4f, 0x1c5c, 0x1c68, 0x1c75, 0x1c83, 0x1c90, 0x1c9e, + 0x1cb0, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2990, + // Entry 3CE40 - 3CE7F + 0x2159, 0x2990, 0x2990, 0x2055, 0x2055, 0x298e, 0x2055, 0x298e, + 0x38ae, 0x38ae, 0x38ae, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x0056, 0x1cc4, 0x1cc8, 0x1bf1, 0x1ccc, + 0x1bf9, 0x1bfd, 0x1cd0, 0x0007, 0x0056, 0x1cd4, 0x1ce2, 0x1cf1, + 0x1d05, 0x1d14, 0x1d22, 0x1d31, 0x0002, 0x0000, 0x0082, 0x0007, + 0x0000, 0x2980, 0x25bc, 0x2990, 0x2055, 0x2055, 0x298e, 0x25bc, + 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0005, + 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0005, 0xffff, + // Entry 3CE80 - 3CEBF + 0x071a, 0x0721, 0x0728, 0x072f, 0x0001, 0x00a1, 0x0003, 0x00a5, + 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0056, 0x1d3f, + 0x0001, 0x0056, 0x1d47, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0056, + 0x1d3f, 0x0001, 0x0056, 0x1d47, 0x0003, 0x00c1, 0x0000, 0x00bb, + 0x0001, 0x00bd, 0x0002, 0x0056, 0x1d4d, 0x1d5e, 0x0001, 0x00c3, + 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, 0x00cf, 0x00cc, + 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, + // Entry 3CEC0 - 3CEFF + 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, + 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3CF00 - 3CF3F + 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, + 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, + 0x012c, 0x0001, 0x0056, 0x1d6f, 0x0001, 0x0131, 0x0001, 0x0056, + 0x1d77, 0x0001, 0x0136, 0x0001, 0x0056, 0x1d7c, 0x0001, 0x013b, + 0x0001, 0x0056, 0x1d81, 0x0002, 0x0141, 0x0144, 0x0001, 0x0056, + 0x1d8c, 0x0003, 0x0056, 0x1d92, 0x1d9b, 0x1d9f, 0x0001, 0x014b, + 0x0001, 0x0056, 0x1da7, 0x0001, 0x0150, 0x0001, 0x0056, 0x1dad, + 0x0001, 0x0155, 0x0001, 0x0056, 0x1db2, 0x0001, 0x015a, 0x0001, + // Entry 3CF40 - 3CF7F + 0x0056, 0x1dba, 0x0001, 0x015f, 0x0001, 0x0016, 0x022e, 0x0002, + 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, + 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0053, + 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, 0x0031, + 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x0056, 0xffff, 0x1dc3, + // Entry 3CF80 - 3CFBF + 0x1dc7, 0x1dcb, 0x1dcf, 0x1dd3, 0x1dd7, 0x1ddb, 0x1ddf, 0x1de3, + 0x1de7, 0x1deb, 0x1def, 0x000d, 0x0056, 0xffff, 0x1df3, 0x1e00, + 0x1e08, 0x1e11, 0x1e17, 0x1e27, 0x1e2f, 0x1e39, 0x1e42, 0x1e4b, + 0x1e51, 0x1e60, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, 0x0000, + 0x0063, 0x0007, 0x0009, 0x01f0, 0x546d, 0x5471, 0x5475, 0x5479, + 0x547d, 0x5481, 0x0007, 0x0056, 0x1e68, 0x1e70, 0x1e79, 0x1e81, + 0x1e8a, 0x1e94, 0x1e9b, 0x0002, 0x0000, 0x006f, 0x0007, 0x0000, + 0x297a, 0x2483, 0x2483, 0x2483, 0x2980, 0x2055, 0x2483, 0x0001, + // Entry 3CFC0 - 3CFFF + 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x0009, 0xffff, + 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0009, 0xffff, 0x0266, + 0x026d, 0x0274, 0x027b, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, + 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x0056, 0x1ea4, 0x0001, + 0x0056, 0x1eae, 0x0002, 0x009e, 0x00a1, 0x0001, 0x0056, 0x1ea4, + 0x0001, 0x0056, 0x1eae, 0x0003, 0x00ae, 0x0000, 0x00a8, 0x0001, + 0x00aa, 0x0002, 0x0056, 0x1eb8, 0x1ecb, 0x0001, 0x00b0, 0x0002, + 0x0002, 0x0434, 0x4c2b, 0x0004, 0x00c2, 0x00bc, 0x00b9, 0x00bf, + // Entry 3D000 - 3D03F + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00d3, 0x00cd, 0x00ca, + 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, 0x0000, + 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, + 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3D040 - 3D07F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013b, 0x0000, 0x0140, 0x0000, 0x0000, 0x0145, + 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x014f, 0x0001, 0x0119, + 0x0001, 0x0056, 0x1edf, 0x0001, 0x011e, 0x0001, 0x0056, 0x1eec, + 0x0001, 0x0123, 0x0001, 0x0056, 0x1ef3, 0x0001, 0x0128, 0x0001, + 0x0056, 0x1ef9, 0x0002, 0x012e, 0x0131, 0x0001, 0x0056, 0x1f01, + 0x0003, 0x0056, 0x1f08, 0x1f0e, 0x1f1a, 0x0001, 0x0138, 0x0001, + // Entry 3D080 - 3D0BF + 0x0056, 0x1f24, 0x0001, 0x013d, 0x0001, 0x0056, 0x1f37, 0x0001, + 0x0142, 0x0001, 0x0056, 0x1f4b, 0x0001, 0x0147, 0x0001, 0x0056, + 0x1db2, 0x0001, 0x014c, 0x0001, 0x0056, 0x1f53, 0x0001, 0x0151, + 0x0001, 0x0056, 0x1f5c, 0x0003, 0x0004, 0x019c, 0x0296, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0008, 0x0016, 0x007b, 0x00d2, 0x0107, 0x0148, 0x0169, 0x017a, + 0x018b, 0x0002, 0x0019, 0x004a, 0x0003, 0x001d, 0x002c, 0x003b, + 0x000d, 0x0056, 0xffff, 0x1f6f, 0x1f76, 0x1f7b, 0x1f80, 0x1f84, + // Entry 3D0C0 - 3D0FF + 0x1f89, 0x1f8e, 0x1f93, 0x1f98, 0x1f9f, 0x1fa4, 0x1faa, 0x000d, + 0x0000, 0xffff, 0x2990, 0x2281, 0x297e, 0x24fb, 0x297a, 0x2281, + 0x298e, 0x24f9, 0x21e9, 0x2281, 0x298e, 0x2483, 0x000d, 0x0056, + 0xffff, 0x1faf, 0x1fc0, 0x1fcd, 0x1fdb, 0x1fe8, 0x1ff5, 0x2002, + 0x2010, 0x201c, 0x202a, 0x2038, 0x2046, 0x0003, 0x004e, 0x005d, + 0x006c, 0x000d, 0x0056, 0xffff, 0x1f6f, 0x1f76, 0x1f7b, 0x1f80, + 0x1f84, 0x1f89, 0x1f8e, 0x1f93, 0x1f98, 0x1f9f, 0x1fa4, 0x1faa, + 0x000d, 0x0000, 0xffff, 0x2990, 0x2281, 0x297e, 0x24fb, 0x297a, + // Entry 3D100 - 3D13F + 0x2281, 0x298e, 0x24f9, 0x21e9, 0x2281, 0x298e, 0x2483, 0x000d, + 0x0056, 0xffff, 0x1faf, 0x1fc0, 0x1fcd, 0x1fdb, 0x1fe8, 0x1ff5, + 0x2002, 0x2010, 0x201c, 0x202a, 0x2038, 0x2046, 0x0002, 0x007e, + 0x00a8, 0x0005, 0x0084, 0x008d, 0x009f, 0x0000, 0x0096, 0x0007, + 0x0057, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, + 0x0007, 0x0000, 0x298e, 0x2485, 0x297a, 0x2281, 0x297c, 0x24f9, + 0x2994, 0x0007, 0x0057, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, + 0x0019, 0x001e, 0x0007, 0x0057, 0x0023, 0x002f, 0x003a, 0x0048, + // Entry 3D140 - 3D17F + 0x0054, 0x005e, 0x0068, 0x0005, 0x00ae, 0x00b7, 0x00c9, 0x0000, + 0x00c0, 0x0007, 0x0057, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, + 0x0019, 0x001e, 0x0007, 0x0000, 0x298e, 0x2485, 0x297a, 0x2281, + 0x297c, 0x24f9, 0x2994, 0x0007, 0x0057, 0x0000, 0x0005, 0x000a, + 0x000f, 0x0014, 0x0019, 0x001e, 0x0007, 0x0057, 0x0023, 0x002f, + 0x003a, 0x0048, 0x0054, 0x005e, 0x0068, 0x0002, 0x00d5, 0x00ee, + 0x0003, 0x00d9, 0x00e0, 0x00e7, 0x0005, 0x0000, 0xffff, 0x04e3, + 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 3D180 - 3D1BF + 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, + 0x3836, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, + 0x3833, 0x3836, 0x0002, 0x010a, 0x0129, 0x0003, 0x010e, 0x0117, + 0x0120, 0x0002, 0x0111, 0x0114, 0x0001, 0x0057, 0x0073, 0x0001, + 0x0053, 0x050e, 0x0002, 0x011a, 0x011d, 0x0001, 0x0057, 0x0073, + 0x0001, 0x0053, 0x050e, 0x0002, 0x0123, 0x0126, 0x0001, 0x0057, + // Entry 3D1C0 - 3D1FF + 0x0078, 0x0001, 0x0057, 0x0085, 0x0003, 0x012d, 0x0136, 0x013f, + 0x0002, 0x0130, 0x0133, 0x0001, 0x0057, 0x0073, 0x0001, 0x0053, + 0x050e, 0x0002, 0x0139, 0x013c, 0x0001, 0x0057, 0x0073, 0x0001, + 0x0053, 0x050e, 0x0002, 0x0142, 0x0145, 0x0001, 0x0057, 0x0093, + 0x0001, 0x0057, 0x009f, 0x0003, 0x0157, 0x0162, 0x014c, 0x0002, + 0x014f, 0x0153, 0x0002, 0x0057, 0x00ac, 0x00bc, 0x0002, 0x0000, + 0x04f5, 0x04f9, 0x0002, 0x015a, 0x015e, 0x0002, 0x0057, 0x00cf, + 0x00d5, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0000, 0x0165, + // Entry 3D200 - 3D23F + 0x0002, 0x0057, 0x00db, 0x00e0, 0x0004, 0x0177, 0x0171, 0x016e, + 0x0174, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, + 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0188, 0x0182, + 0x017f, 0x0185, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0199, + 0x0193, 0x0190, 0x0196, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, + 0x01dd, 0x0000, 0x0000, 0x01e2, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3D240 - 3D27F + 0x0000, 0x01f8, 0x0000, 0x0000, 0x020e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0224, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0246, 0x0000, 0x024b, 0x0000, + 0x0000, 0x0261, 0x0000, 0x0000, 0x0277, 0x0000, 0x0000, 0x0291, + 0x0001, 0x01df, 0x0001, 0x0030, 0x03b7, 0x0003, 0x01e6, 0x0000, + // Entry 3D280 - 3D2BF + 0x01e9, 0x0001, 0x0057, 0x00e4, 0x0002, 0x01ec, 0x01f2, 0x0004, + 0x0057, 0x0100, 0x00eb, 0xffff, 0x0100, 0x0004, 0x0057, 0x0126, + 0x0116, 0xffff, 0x0126, 0x0003, 0x01fc, 0x0000, 0x01ff, 0x0001, + 0x0057, 0x0137, 0x0002, 0x0202, 0x0208, 0x0004, 0x0057, 0x013e, + 0x013e, 0xffff, 0x013e, 0x0004, 0x0057, 0x0159, 0x0159, 0xffff, + 0x0159, 0x0003, 0x0212, 0x0000, 0x0215, 0x0001, 0x0057, 0x016f, + 0x0002, 0x0218, 0x021e, 0x0004, 0x0057, 0x018c, 0x0177, 0xffff, + 0x018c, 0x0004, 0x0057, 0x01b2, 0x01a2, 0xffff, 0x01b2, 0x0003, + // Entry 3D2C0 - 3D2FF + 0x0228, 0x022b, 0x0232, 0x0001, 0x0057, 0x01c3, 0x0005, 0x0057, + 0x01d7, 0x01dc, 0x01e1, 0x01ca, 0x01e8, 0x0002, 0x0235, 0x023b, + 0x0004, 0x0057, 0x0226, 0x01f7, 0xffff, 0x020e, 0x0004, 0x0057, + 0x0250, 0x023e, 0xffff, 0x0250, 0x0001, 0x0243, 0x0001, 0x0057, + 0x0263, 0x0001, 0x0248, 0x0001, 0x0057, 0x0271, 0x0003, 0x024f, + 0x0000, 0x0252, 0x0001, 0x0057, 0x0285, 0x0002, 0x0255, 0x025b, + 0x0004, 0x0057, 0x02a2, 0x028c, 0xffff, 0x02a2, 0x0004, 0x0057, + 0x02ca, 0x02b9, 0xffff, 0x02ca, 0x0003, 0x0265, 0x0000, 0x0268, + // Entry 3D300 - 3D33F + 0x0001, 0x0057, 0x02dc, 0x0002, 0x026b, 0x0271, 0x0004, 0x0057, + 0x02fc, 0x02e5, 0xffff, 0x02fc, 0x0004, 0x0057, 0x0326, 0x0314, + 0xffff, 0x0326, 0x0003, 0x027b, 0x027e, 0x0282, 0x0001, 0x000d, + 0x0c7f, 0x0002, 0x0057, 0xffff, 0x0339, 0x0002, 0x0285, 0x028b, + 0x0004, 0x0057, 0x0353, 0x033c, 0xffff, 0x0353, 0x0004, 0x0057, + 0x037d, 0x036b, 0xffff, 0x037d, 0x0001, 0x0293, 0x0001, 0x0057, + 0x0390, 0x0004, 0x029b, 0x02a0, 0x0000, 0x02a5, 0x0003, 0x001c, + 0x0baf, 0x22a2, 0x22a9, 0x0003, 0x0057, 0x039d, 0x03a7, 0x03b7, + // Entry 3D340 - 3D37F + 0x0002, 0x03d2, 0x02a8, 0x0003, 0x02ac, 0x0370, 0x030e, 0x0060, + 0x0057, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03cb, 0x041a, + 0xffff, 0x046c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3D380 - 3D3BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x04d2, 0x0060, 0x0057, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3D3C0 - 3D3FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x03e0, 0x0430, 0xffff, 0x0481, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x04bb, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3D400 - 3D43F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x04df, 0x0060, 0x0057, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x03ff, 0x0450, 0xffff, 0x04a0, 0xffff, 0xffff, + // Entry 3D440 - 3D47F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x04f6, 0x0003, 0x03d6, 0x0445, + 0x0409, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3D480 - 3D4BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3D4C0 - 3D4FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22ad, + 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3D500 - 3D53F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2287, + 0x2290, 0xffff, 0x2299, 0x0003, 0x0004, 0x0035, 0x0088, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0002, 0x0000, 0x0010, 0x0002, 0x0013, 0x0029, 0x0003, 0x0000, + 0x0017, 0x0020, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x2281, + 0x297c, 0x24f9, 0x2994, 0x0007, 0x0057, 0x0023, 0x0509, 0x0515, + 0x0524, 0x052f, 0x053a, 0x0545, 0x0002, 0x0000, 0x002c, 0x0007, + // Entry 3D540 - 3D57F + 0x0000, 0x298e, 0x297a, 0x297c, 0x2281, 0x297c, 0x24f9, 0x2994, + 0x0019, 0x004f, 0x0000, 0x0000, 0x0054, 0x006f, 0x0074, 0x0079, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0083, 0x0001, 0x0051, 0x0001, 0x0057, 0x0551, 0x0003, + 0x0058, 0x005b, 0x0060, 0x0001, 0x0057, 0x055a, 0x0003, 0x0057, + 0x0560, 0x056c, 0x0576, 0x0002, 0x0063, 0x0069, 0x0004, 0x0057, + 0x0583, 0x0583, 0xffff, 0x0583, 0x0004, 0x0057, 0x0592, 0x0592, + // Entry 3D580 - 3D5BF + 0xffff, 0x0592, 0x0001, 0x0071, 0x0001, 0x0001, 0x008e, 0x0001, + 0x0076, 0x0001, 0x0001, 0x008e, 0x0001, 0x007b, 0x0001, 0x0057, + 0x05a1, 0x0001, 0x0080, 0x0001, 0x0057, 0x05b2, 0x0001, 0x0085, + 0x0001, 0x0057, 0x05b9, 0x0004, 0x008d, 0x0000, 0x0000, 0x0000, + 0x0003, 0x001c, 0xffff, 0xffff, 0x22ad, 0x0002, 0x0003, 0x00bd, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + // Entry 3D5C0 - 3D5FF + 0x001c, 0x128b, 0x0001, 0x001c, 0x12a6, 0x0001, 0x0029, 0x001b, + 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x0000, 0x0000, + 0x008b, 0x009b, 0x00ac, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x2470, + 0x2474, 0x2326, 0x2478, 0x224e, 0x22d4, 0x2112, 0x232e, 0x2332, + 0x22e0, 0x0662, 0x000d, 0x0057, 0xffff, 0x05c6, 0x05ce, 0x05d7, + 0x05dd, 0x05e3, 0x05e8, 0x05ee, 0x05f4, 0x05fc, 0x0605, 0x060c, + 0x0615, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, + // Entry 3D600 - 3D63F + 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, + 0x2990, 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x0018, 0x02ce, 0x4a3f, 0x4a43, 0x4a47, + 0x4a4b, 0x4a4f, 0x4a53, 0x0007, 0x0057, 0x061e, 0x0626, 0x062e, + 0x0636, 0x063e, 0x0645, 0x064e, 0x0002, 0x0000, 0x0082, 0x0007, + 0x0000, 0x297c, 0x255c, 0x24fb, 0x38ae, 0x297e, 0x298e, 0x298e, + 0x0003, 0x0095, 0x0000, 0x008f, 0x0001, 0x0091, 0x0002, 0x0057, + 0x0655, 0x0665, 0x0001, 0x0097, 0x0002, 0x0057, 0x0671, 0x0674, + // Entry 3D640 - 3D67F + 0x0004, 0x00a9, 0x00a3, 0x00a0, 0x00a6, 0x0001, 0x001c, 0x14a6, + 0x0001, 0x001c, 0x14bf, 0x0001, 0x0029, 0x027f, 0x0001, 0x0002, + 0x01fb, 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x003d, 0x0000, 0x0000, 0x0000, 0x00fb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0105, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3D680 - 3D6BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0110, 0x0000, 0x0000, 0x0115, 0x0000, 0x0000, 0x011a, + 0x0001, 0x00fd, 0x0001, 0x0057, 0x0677, 0x0001, 0x0102, 0x0001, + 0x0041, 0x0111, 0x0002, 0x0108, 0x010b, 0x0001, 0x0057, 0x067d, + 0x0003, 0x0057, 0x0684, 0x0689, 0x068e, 0x0001, 0x0112, 0x0001, + 0x0057, 0x0697, 0x0001, 0x0117, 0x0001, 0x001e, 0x02a9, 0x0001, + // Entry 3D6C0 - 3D6FF + 0x011c, 0x0001, 0x001e, 0x02b0, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, + 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0017, 0xffff, 0x00ac, 0x00b1, 0x299a, + // Entry 3D700 - 3D73F + 0x00b9, 0x299e, 0x00c0, 0x00c5, 0x2930, 0x00cd, 0x29a1, 0x00d1, + 0x00d5, 0x000d, 0x0017, 0xffff, 0x00d9, 0x00e2, 0x00ec, 0x00f2, + 0x299e, 0x00f9, 0x0101, 0x2930, 0x0108, 0x0112, 0x011b, 0x0125, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x012f, 0x29a5, + 0x29a7, 0x29a9, 0x29a7, 0x012f, 0x012f, 0x29ab, 0x29ad, 0x29af, + 0x29b1, 0x29b3, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0009, 0x5479, 0x5485, 0x5489, 0x548d, 0x5491, + 0x5495, 0x5499, 0x0007, 0x0017, 0x0142, 0x0149, 0x0150, 0x0159, + // Entry 3D740 - 3D77F + 0x2955, 0x0169, 0x0170, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, + 0x38d8, 0x38ae, 0x38ae, 0x2994, 0x2994, 0x2994, 0x3a8b, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0017, 0xffff, + 0x0177, 0x298e, 0x017d, 0x0180, 0x0005, 0x0017, 0xffff, 0x0183, + 0x018c, 0x0195, 0x019e, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, 0x1182, 0x0001, + 0x0037, 0x1189, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0037, 0x1182, + 0x0001, 0x0037, 0x1189, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + // Entry 3D780 - 3D7BF + 0x00bd, 0x0002, 0x0017, 0x01bb, 0x01c5, 0x0001, 0x00c3, 0x0002, + 0x0017, 0x01d2, 0x01d5, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, + 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3D7C0 - 3D7FF + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, + 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, + 0x0001, 0x0017, 0x01d8, 0x0001, 0x0131, 0x0001, 0x0017, 0x01de, + 0x0001, 0x0136, 0x0001, 0x0017, 0x01e4, 0x0001, 0x013b, 0x0001, + // Entry 3D800 - 3D83F + 0x0017, 0x01ea, 0x0002, 0x0141, 0x0144, 0x0001, 0x0017, 0x01ef, + 0x0003, 0x0023, 0x0066, 0x2a59, 0x2a5e, 0x0001, 0x014b, 0x0001, + 0x0037, 0x1196, 0x0001, 0x0150, 0x0001, 0x0017, 0x021a, 0x0001, + 0x0155, 0x0001, 0x0017, 0x0220, 0x0001, 0x015a, 0x0001, 0x0017, + 0x0227, 0x0001, 0x015f, 0x0001, 0x0017, 0x022c, 0x0002, 0x0003, + 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + // Entry 3D840 - 3D87F + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1fc1, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, + 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0057, 0xffff, 0x069c, + 0x06a0, 0x06a4, 0x06a9, 0x06ad, 0x06b2, 0x06b7, 0x06bb, 0x06c0, + 0x06c4, 0x06c8, 0x06cc, 0x000d, 0x0057, 0xffff, 0x06d0, 0x06d7, + 0x06e2, 0x06eb, 0x06f3, 0x06fd, 0x0704, 0x070b, 0x0715, 0x071b, + 0x0724, 0x0730, 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, + // Entry 3D880 - 3D8BF + 0x29b1, 0x29a5, 0x29a7, 0x29b1, 0x29b5, 0x29a5, 0x29b7, 0x29b9, + 0x29a7, 0x29b1, 0x29b1, 0x29b9, 0x0002, 0x0069, 0x007f, 0x0003, + 0x006d, 0x0000, 0x0076, 0x0007, 0x0057, 0x0738, 0x073c, 0x0740, + 0x0744, 0x0748, 0x074c, 0x0751, 0x0007, 0x0057, 0x0756, 0x0761, + 0x076d, 0x0779, 0x0787, 0x0793, 0x079d, 0x0002, 0x0000, 0x0082, + 0x0007, 0x0017, 0x29b9, 0x29bb, 0x29bd, 0x29bb, 0x29b9, 0x29bf, + 0x29c1, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, + 0x0057, 0xffff, 0x07a6, 0x07ad, 0x07b4, 0x07bb, 0x0005, 0x0057, + // Entry 3D8C0 - 3D8FF + 0xffff, 0x07c2, 0x07d4, 0x07e6, 0x07f8, 0x0001, 0x00a1, 0x0003, + 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0057, + 0x080c, 0x0001, 0x0057, 0x080f, 0x0002, 0x00b1, 0x00b4, 0x0001, + 0x0057, 0x080c, 0x0001, 0x0057, 0x080f, 0x0003, 0x00c1, 0x0000, + 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0057, 0x0812, 0x0823, 0x0001, + 0x00c3, 0x0002, 0x0057, 0x0838, 0x083c, 0x0004, 0x00d5, 0x00cf, + 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, + // Entry 3D900 - 3D93F + 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, + 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3D940 - 3D97F + 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, + 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, + 0x0001, 0x012c, 0x0001, 0x0057, 0x0840, 0x0001, 0x0131, 0x0001, + 0x0057, 0x084b, 0x0001, 0x0136, 0x0001, 0x0057, 0x0850, 0x0001, + 0x013b, 0x0001, 0x0057, 0x0854, 0x0002, 0x0141, 0x0144, 0x0001, + 0x0057, 0x085c, 0x0003, 0x0057, 0x0860, 0x0867, 0x086e, 0x0001, + 0x014b, 0x0001, 0x0057, 0x0879, 0x0001, 0x0150, 0x0001, 0x0057, + 0x0880, 0x0001, 0x0155, 0x0001, 0x0057, 0x0887, 0x0001, 0x015a, + // Entry 3D980 - 3D9BF + 0x0001, 0x0057, 0x088f, 0x0001, 0x015f, 0x0001, 0x0057, 0x089e, + 0x0001, 0x0164, 0x0001, 0x0057, 0x08ad, 0x0002, 0x0003, 0x00cb, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, + 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x007e, 0x0092, + 0x00aa, 0x00ba, 0x0000, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + // Entry 3D9C0 - 3D9FF + 0x0036, 0x0000, 0x0045, 0x000d, 0x0057, 0xffff, 0x08b9, 0x08c3, + 0x08cd, 0x08d7, 0x08e1, 0x08eb, 0x08f5, 0x08ff, 0x0909, 0x0913, + 0x091d, 0x0927, 0x000d, 0x0057, 0xffff, 0x0931, 0x0944, 0x0954, + 0x0961, 0x0971, 0x0981, 0x0991, 0x09a4, 0x09b1, 0x09ca, 0x09da, + 0x09f3, 0x0002, 0x0000, 0x0057, 0x000d, 0x0057, 0xffff, 0x0a0c, + 0x0a10, 0x0a14, 0x0a0c, 0x0a14, 0x0a18, 0x0a18, 0x0a1c, 0x0a20, + 0x0a24, 0x0a28, 0x0a2c, 0x0001, 0x0068, 0x0003, 0x006c, 0x0000, + 0x0075, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, 0x0a4e, 0x0a58, + // Entry 3DA00 - 3DA3F + 0x0a62, 0x0a6f, 0x0007, 0x0057, 0x0a7c, 0x0a8f, 0x0a9f, 0x0ab2, + 0x0ac2, 0x0ad2, 0x0ae5, 0x0001, 0x0080, 0x0003, 0x0084, 0x0000, + 0x008b, 0x0005, 0x0057, 0xffff, 0x0afb, 0x0b04, 0x0b0d, 0x0b16, + 0x0005, 0x0057, 0xffff, 0x0b1f, 0x0b3a, 0x0b55, 0x0b70, 0x0001, + 0x0094, 0x0003, 0x0098, 0x0000, 0x00a1, 0x0002, 0x009b, 0x009e, + 0x0001, 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x00a4, + 0x00a7, 0x0001, 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0003, + 0x00b4, 0x0000, 0x00ae, 0x0001, 0x00b0, 0x0002, 0x0057, 0x0bb7, + // Entry 3DA40 - 3DA7F + 0x0bd2, 0x0001, 0x00b6, 0x0002, 0x0057, 0x0bf3, 0x0bfd, 0x0004, + 0x00c8, 0x00c2, 0x00bf, 0x00c5, 0x0001, 0x0001, 0x1fa2, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, + 0x0040, 0x010c, 0x0000, 0x0000, 0x0111, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x011b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3DA80 - 3DABF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0130, 0x0000, 0x0135, + 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x013f, 0x0000, 0x0000, + 0x0144, 0x0001, 0x010e, 0x0001, 0x0057, 0x0c07, 0x0001, 0x0113, + 0x0001, 0x0057, 0x0c17, 0x0001, 0x0118, 0x0001, 0x0057, 0x0c2d, + 0x0001, 0x011d, 0x0001, 0x0057, 0x0c3d, 0x0002, 0x0123, 0x0126, + 0x0001, 0x0057, 0x0c53, 0x0003, 0x0057, 0x0c5d, 0x0c6d, 0x0c7a, + 0x0001, 0x012d, 0x0001, 0x0057, 0x0c8a, 0x0001, 0x0132, 0x0001, + // Entry 3DAC0 - 3DAFF + 0x0057, 0x0cae, 0x0001, 0x0137, 0x0001, 0x0057, 0x0cf9, 0x0001, + 0x013c, 0x0001, 0x0057, 0x0d0f, 0x0001, 0x0141, 0x0001, 0x0057, + 0x0d25, 0x0001, 0x0146, 0x0001, 0x0057, 0x0d38, 0x0002, 0x0003, + 0x00cb, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1fc1, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x007e, + // Entry 3DB00 - 3DB3F + 0x0092, 0x00aa, 0x00ba, 0x0000, 0x0000, 0x0002, 0x0032, 0x0054, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0057, 0xffff, 0x0d5c, + 0x0d60, 0x0d66, 0x0d6c, 0x0d70, 0x0d74, 0x0d78, 0x0d7c, 0x0d81, + 0x0d85, 0x0d89, 0x0d8d, 0x000d, 0x0057, 0xffff, 0x0d91, 0x0d98, + 0x0da2, 0x0dab, 0x0db1, 0x0db7, 0x0dbd, 0x0dc4, 0x0dca, 0x0dd3, + 0x0dd9, 0x0de2, 0x0002, 0x0000, 0x0057, 0x000d, 0x0057, 0xffff, + 0x0deb, 0x0ded, 0x0def, 0x0deb, 0x0def, 0x0df1, 0x0df1, 0x0df3, + 0x0df6, 0x0df8, 0x0dfa, 0x0dfc, 0x0001, 0x0068, 0x0003, 0x006c, + // Entry 3DB40 - 3DB7F + 0x0000, 0x0075, 0x0007, 0x0057, 0x0dfe, 0x0e02, 0x0e06, 0x0e0a, + 0x0e10, 0x0e14, 0x0e19, 0x0007, 0x0057, 0x0e20, 0x0e27, 0x0e2d, + 0x0e34, 0x0e3c, 0x0e42, 0x0e4a, 0x0001, 0x0080, 0x0003, 0x0084, + 0x0000, 0x008b, 0x0005, 0x0057, 0xffff, 0x0e54, 0x0e59, 0x0e5e, + 0x0e63, 0x0005, 0x0057, 0xffff, 0x0e68, 0x0e77, 0x0e86, 0x0e95, + 0x0001, 0x0094, 0x0003, 0x0098, 0x0000, 0x00a1, 0x0002, 0x009b, + 0x009e, 0x0001, 0x0057, 0x0ea4, 0x0001, 0x0057, 0x0eab, 0x0002, + 0x00a4, 0x00a7, 0x0001, 0x0057, 0x0ea4, 0x0001, 0x0057, 0x0eab, + // Entry 3DB80 - 3DBBF + 0x0003, 0x00b4, 0x0000, 0x00ae, 0x0001, 0x00b0, 0x0002, 0x0057, + 0x0eb5, 0x0ec1, 0x0001, 0x00b6, 0x0002, 0x0057, 0x0ecf, 0x0ed4, + 0x0004, 0x00c8, 0x00c2, 0x00bf, 0x00c5, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, + 0x01fb, 0x0040, 0x010c, 0x0000, 0x0000, 0x0111, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x011b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3DBC0 - 3DBFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0130, 0x0000, + 0x0135, 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x013f, 0x0000, + 0x0000, 0x0144, 0x0001, 0x010e, 0x0001, 0x0057, 0x0ed9, 0x0001, + 0x0113, 0x0001, 0x0057, 0x0edf, 0x0001, 0x0118, 0x0001, 0x0057, + 0x0ee8, 0x0001, 0x011d, 0x0001, 0x0057, 0x0eee, 0x0002, 0x0123, + 0x0126, 0x0001, 0x0057, 0x0ef6, 0x0003, 0x0057, 0x0efa, 0x0f02, + // Entry 3DC00 - 3DC3F + 0x0f07, 0x0001, 0x012d, 0x0001, 0x0057, 0x0f0d, 0x0001, 0x0132, + 0x0001, 0x0057, 0x0f1b, 0x0001, 0x0137, 0x0001, 0x0057, 0x0f3b, + 0x0001, 0x013c, 0x0001, 0x0057, 0x0f43, 0x0001, 0x0141, 0x0001, + 0x0057, 0x0f4b, 0x0001, 0x0146, 0x0001, 0x0057, 0x0f52, 0x0003, + 0x0004, 0x0286, 0x068a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, + 0x001b, 0x0021, 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, + // Entry 3DC40 - 3DC7F + 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, + 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0239, 0x0253, 0x0264, 0x0275, + 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, + 0x0057, 0xffff, 0x0f62, 0x0f69, 0x0f73, 0x0f86, 0x0f9f, 0x0fac, + 0x0fb9, 0x0fc6, 0x0fd0, 0x0fdd, 0x0fe7, 0x0ff4, 0x000d, 0x0057, + 0xffff, 0x1001, 0x1005, 0x100c, 0x1013, 0x1017, 0x101e, 0x101e, + // Entry 3DC80 - 3DCBF + 0x1013, 0x1025, 0x102c, 0x1030, 0x1037, 0x000d, 0x0057, 0xffff, + 0x103e, 0x1051, 0x0f73, 0x0f86, 0x0f9f, 0x0fac, 0x0fb9, 0x106a, + 0x1080, 0x10a2, 0x10bb, 0x10d7, 0x0003, 0x0079, 0x0088, 0x0097, + 0x000d, 0x0057, 0xffff, 0x0f62, 0x0f69, 0x10f3, 0x0f86, 0x0f9f, + 0x0fac, 0x0fb9, 0x0fc6, 0x0fd0, 0x0fdd, 0x0fe7, 0x0ff4, 0x000d, + 0x0057, 0xffff, 0x1001, 0x1005, 0x100c, 0x1013, 0x1017, 0x101e, + 0x101e, 0x1013, 0x1025, 0x102c, 0x1030, 0x1037, 0x000d, 0x0057, + 0xffff, 0x103e, 0x1051, 0x0f73, 0x0f86, 0x0f9f, 0x0fac, 0x0fb9, + // Entry 3DCC0 - 3DCFF + 0x106a, 0x1080, 0x10a2, 0x10bb, 0x10d7, 0x0002, 0x00a9, 0x00d3, + 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0057, + 0x1100, 0x1110, 0x1120, 0x112a, 0x113a, 0x1150, 0x115d, 0x0007, + 0x0057, 0x1167, 0x116b, 0x1013, 0x116f, 0x1173, 0x1180, 0x1187, + 0x0007, 0x0057, 0x118e, 0x1198, 0x11a2, 0x11a9, 0x11b3, 0x1150, + 0x115d, 0x0007, 0x0057, 0x1100, 0x1110, 0x11c3, 0x112a, 0x11df, + 0x120a, 0x1223, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, + 0x0007, 0x0057, 0x1100, 0x1110, 0x1120, 0x112a, 0x113a, 0x1150, + // Entry 3DD00 - 3DD3F + 0x115d, 0x0007, 0x0057, 0x1167, 0x116b, 0x1013, 0x116f, 0x1173, + 0x1180, 0x1187, 0x0007, 0x0057, 0x118e, 0x1198, 0x11a2, 0x11a9, + 0x11b3, 0x1150, 0x115d, 0x0007, 0x0057, 0x1100, 0x1110, 0x11c3, + 0x112a, 0x11df, 0x120a, 0x1223, 0x0002, 0x0100, 0x0119, 0x0003, + 0x0104, 0x010b, 0x0112, 0x0005, 0x0057, 0xffff, 0x123f, 0x124e, + 0x125d, 0x126c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0057, 0xffff, 0x127b, 0x129a, 0x12b9, 0x12d8, + 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0057, 0xffff, 0x123f, + // Entry 3DD40 - 3DD7F + 0x124e, 0x125d, 0x126c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0057, 0xffff, 0x127b, 0x129a, 0x12b9, + 0x12d8, 0x0002, 0x0135, 0x01b7, 0x0003, 0x0139, 0x0163, 0x018d, + 0x000b, 0x0148, 0x014e, 0x0145, 0x0151, 0x0157, 0x015a, 0x015d, + 0x014b, 0x0154, 0x0000, 0x0160, 0x0001, 0x0057, 0x12f7, 0x0001, + 0x0057, 0x130a, 0x0001, 0x0057, 0x1316, 0x0001, 0x0057, 0x1335, + 0x0001, 0x0057, 0x133e, 0x0001, 0x0057, 0x1351, 0x0001, 0x0057, + 0x135b, 0x0001, 0x0057, 0x1368, 0x0001, 0x0057, 0x1372, 0x0001, + // Entry 3DD80 - 3DDBF + 0x0057, 0x1379, 0x000b, 0x0172, 0x0178, 0x016f, 0x017b, 0x0181, + 0x0184, 0x0187, 0x0175, 0x017e, 0x0000, 0x018a, 0x0001, 0x0057, + 0x1017, 0x0001, 0x0057, 0x1005, 0x0001, 0x0057, 0x1399, 0x0001, + 0x0057, 0x139d, 0x0001, 0x0057, 0x13a1, 0x0001, 0x0057, 0x13a8, + 0x0001, 0x0057, 0x13ac, 0x0001, 0x0057, 0x13b0, 0x0001, 0x0057, + 0x1372, 0x0001, 0x0057, 0x1017, 0x000b, 0x019c, 0x01a2, 0x0199, + 0x01a5, 0x01ab, 0x01ae, 0x01b1, 0x019f, 0x01a8, 0x0000, 0x01b4, + 0x0001, 0x0057, 0x12f7, 0x0001, 0x0057, 0x130a, 0x0001, 0x0057, + // Entry 3DDC0 - 3DDFF + 0x1316, 0x0001, 0x0057, 0x1335, 0x0001, 0x0057, 0x133e, 0x0001, + 0x0057, 0x1351, 0x0001, 0x0057, 0x135b, 0x0001, 0x0057, 0x1368, + 0x0001, 0x0057, 0x1372, 0x0001, 0x0057, 0x1379, 0x0003, 0x01bb, + 0x01e5, 0x020f, 0x000b, 0x01ca, 0x01d0, 0x01c7, 0x01d3, 0x01d9, + 0x01dc, 0x01df, 0x01cd, 0x01d6, 0x0000, 0x01e2, 0x0001, 0x0057, + 0x12f7, 0x0001, 0x0057, 0x130a, 0x0001, 0x0057, 0x1316, 0x0001, + 0x0057, 0x1335, 0x0001, 0x0057, 0x133e, 0x0001, 0x0057, 0x1351, + 0x0001, 0x0057, 0x135b, 0x0001, 0x0057, 0x1368, 0x0001, 0x0057, + // Entry 3DE00 - 3DE3F + 0x1372, 0x0001, 0x0057, 0x1379, 0x000b, 0x01f4, 0x01fa, 0x01f1, + 0x01fd, 0x0203, 0x0206, 0x0209, 0x01f7, 0x0200, 0x0000, 0x020c, + 0x0001, 0x0057, 0x12f7, 0x0001, 0x0057, 0x130a, 0x0001, 0x0057, + 0x1316, 0x0001, 0x0057, 0x1335, 0x0001, 0x0057, 0x133e, 0x0001, + 0x0057, 0x1351, 0x0001, 0x0057, 0x135b, 0x0001, 0x0057, 0x1368, + 0x0001, 0x0057, 0x1372, 0x0001, 0x0057, 0x1379, 0x000b, 0x021e, + 0x0224, 0x021b, 0x0227, 0x022d, 0x0230, 0x0233, 0x0221, 0x022a, + 0x0000, 0x0236, 0x0001, 0x0057, 0x12f7, 0x0001, 0x0057, 0x130a, + // Entry 3DE40 - 3DE7F + 0x0001, 0x0057, 0x1316, 0x0001, 0x0057, 0x1335, 0x0001, 0x0057, + 0x133e, 0x0001, 0x0057, 0x1351, 0x0001, 0x0057, 0x135b, 0x0001, + 0x0057, 0x1368, 0x0001, 0x0057, 0x1372, 0x0001, 0x0057, 0x1379, + 0x0003, 0x0248, 0x0000, 0x023d, 0x0002, 0x0240, 0x0244, 0x0002, + 0x0057, 0x13b4, 0x1407, 0x0002, 0x0057, 0x13e0, 0x1430, 0x0002, + 0x024b, 0x024f, 0x0002, 0x0057, 0x144a, 0x146f, 0x0002, 0x0057, + 0x1462, 0x1484, 0x0004, 0x0261, 0x025b, 0x0258, 0x025e, 0x0001, + 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, + // Entry 3DE80 - 3DEBF + 0x0001, 0x0000, 0x051c, 0x0004, 0x0272, 0x026c, 0x0269, 0x026f, + 0x0001, 0x0000, 0x38b0, 0x0001, 0x0000, 0x38be, 0x0001, 0x0000, + 0x38c9, 0x0001, 0x0000, 0x38d2, 0x0004, 0x0283, 0x027d, 0x027a, + 0x0280, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02c7, 0x0000, + 0x0000, 0x02cc, 0x02e3, 0x02fa, 0x0311, 0x0328, 0x033f, 0x0356, + 0x036d, 0x0384, 0x039b, 0x03b6, 0x03d1, 0x0000, 0x0000, 0x0000, + 0x03ec, 0x0405, 0x0417, 0x0000, 0x0000, 0x0000, 0x0429, 0x0000, + // Entry 3DEC0 - 3DEFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x042e, 0x0442, 0x0456, 0x046a, + 0x047e, 0x0492, 0x04a6, 0x04ba, 0x04ce, 0x04e2, 0x04f6, 0x050a, + 0x051e, 0x0532, 0x0546, 0x055a, 0x056e, 0x0582, 0x0596, 0x05aa, + 0x05be, 0x0000, 0x05d2, 0x0000, 0x05d7, 0x05ed, 0x05ff, 0x0611, + 0x0627, 0x0639, 0x064b, 0x0661, 0x0673, 0x0685, 0x0001, 0x02c9, + 0x0001, 0x0057, 0x1492, 0x0003, 0x02d0, 0x02d3, 0x02d8, 0x0001, + 0x0057, 0x149f, 0x0003, 0x0057, 0x14af, 0x14cc, 0x14e0, 0x0002, + 0x02db, 0x02df, 0x0002, 0x0057, 0x14f4, 0x14f4, 0x0002, 0x0057, + // Entry 3DF00 - 3DF3F + 0x150e, 0x150e, 0x0003, 0x02e7, 0x02ea, 0x02ef, 0x0001, 0x0057, + 0x152c, 0x0003, 0x0057, 0x14af, 0x14cc, 0x14e0, 0x0002, 0x02f2, + 0x02f6, 0x0002, 0x0057, 0x14f4, 0x14f4, 0x0002, 0x0057, 0x150e, + 0x150e, 0x0003, 0x02fe, 0x0301, 0x0306, 0x0001, 0x0057, 0x152c, + 0x0003, 0x0057, 0x14af, 0x14cc, 0x14e0, 0x0002, 0x0309, 0x030d, + 0x0002, 0x0057, 0x14f4, 0x14f4, 0x0002, 0x0057, 0x150e, 0x150e, + 0x0003, 0x0315, 0x0318, 0x031d, 0x0001, 0x0057, 0x1537, 0x0003, + 0x0057, 0x154d, 0x1576, 0x1596, 0x0002, 0x0320, 0x0324, 0x0002, + // Entry 3DF40 - 3DF7F + 0x0057, 0x15b6, 0x15b6, 0x0002, 0x0057, 0x15d9, 0x15d9, 0x0003, + 0x032c, 0x032f, 0x0334, 0x0001, 0x0057, 0x1600, 0x0003, 0x0057, + 0x160e, 0x162f, 0x1647, 0x0002, 0x0337, 0x033b, 0x0002, 0x0057, + 0x165f, 0x165f, 0x0002, 0x0057, 0x167d, 0x167d, 0x0003, 0x0343, + 0x0346, 0x034b, 0x0001, 0x0057, 0x1600, 0x0003, 0x0057, 0x160e, + 0x162f, 0x1647, 0x0002, 0x034e, 0x0352, 0x0002, 0x0057, 0x165f, + 0x165f, 0x0002, 0x0057, 0x167d, 0x167d, 0x0003, 0x035a, 0x035d, + 0x0362, 0x0001, 0x0057, 0x169f, 0x0003, 0x0057, 0x16ac, 0x16cc, + // Entry 3DF80 - 3DFBF + 0x16e3, 0x0002, 0x0365, 0x0369, 0x0002, 0x0057, 0x16fa, 0x16fa, + 0x0002, 0x0057, 0x1714, 0x1714, 0x0003, 0x0371, 0x0374, 0x0379, + 0x0001, 0x0057, 0x1732, 0x0003, 0x0057, 0x173d, 0x175b, 0x1770, + 0x0002, 0x037c, 0x0380, 0x0002, 0x0057, 0x16fa, 0x16fa, 0x0002, + 0x0057, 0x1714, 0x1714, 0x0003, 0x0388, 0x038b, 0x0390, 0x0001, + 0x0057, 0x1732, 0x0003, 0x0057, 0x173d, 0x175b, 0x1770, 0x0002, + 0x0393, 0x0397, 0x0002, 0x0057, 0x16fa, 0x16fa, 0x0002, 0x0057, + 0x1714, 0x1714, 0x0004, 0x03a0, 0x03a3, 0x03a8, 0x03b3, 0x0001, + // Entry 3DFC0 - 3DFFF + 0x0057, 0x1785, 0x0003, 0x0057, 0x1792, 0x17b2, 0x17c9, 0x0002, + 0x03ab, 0x03af, 0x0002, 0x0057, 0x17e0, 0x17e0, 0x0002, 0x0057, + 0x17fa, 0x17fa, 0x0001, 0x0057, 0x1818, 0x0004, 0x03bb, 0x03be, + 0x03c3, 0x03ce, 0x0001, 0x0057, 0x1836, 0x0003, 0x0057, 0x1841, + 0x185f, 0x1874, 0x0002, 0x03c6, 0x03ca, 0x0002, 0x0057, 0x17e0, + 0x17e0, 0x0002, 0x0057, 0x17fa, 0x17fa, 0x0001, 0x0057, 0x1818, + 0x0004, 0x03d6, 0x03d9, 0x03de, 0x03e9, 0x0001, 0x0057, 0x1836, + 0x0003, 0x0057, 0x1841, 0x185f, 0x1874, 0x0002, 0x03e1, 0x03e5, + // Entry 3E000 - 3E03F + 0x0002, 0x0057, 0x17e0, 0x17e0, 0x0002, 0x0057, 0x17fa, 0x17fa, + 0x0001, 0x0057, 0x1818, 0x0003, 0x03f0, 0x03f3, 0x03fa, 0x0001, + 0x0057, 0x1889, 0x0005, 0x0057, 0x18a9, 0x18b3, 0x18ba, 0x1896, + 0x18c4, 0x0002, 0x03fd, 0x0401, 0x0002, 0x0057, 0x18da, 0x18da, + 0x0002, 0x0057, 0x18ee, 0x18ee, 0x0003, 0x0409, 0x0000, 0x040c, + 0x0001, 0x0057, 0x1889, 0x0002, 0x040f, 0x0413, 0x0002, 0x0057, + 0x18da, 0x18da, 0x0002, 0x0057, 0x18ee, 0x18ee, 0x0003, 0x041b, + 0x0000, 0x041e, 0x0001, 0x0057, 0x1889, 0x0002, 0x0421, 0x0425, + // Entry 3E040 - 3E07F + 0x0002, 0x0057, 0x18da, 0x18da, 0x0002, 0x0057, 0x18ee, 0x18ee, + 0x0001, 0x042b, 0x0001, 0x0057, 0x190c, 0x0003, 0x0000, 0x0432, + 0x0437, 0x0003, 0x0057, 0x1929, 0x194c, 0x1963, 0x0002, 0x043a, + 0x043e, 0x0002, 0x0057, 0x19a0, 0x197d, 0x0002, 0x0057, 0x19f1, + 0x19ca, 0x0003, 0x0000, 0x0446, 0x044b, 0x0003, 0x0057, 0x1929, + 0x194c, 0x1963, 0x0002, 0x044e, 0x0452, 0x0002, 0x0057, 0x19a0, + 0x19a0, 0x0002, 0x0057, 0x19f1, 0x19f1, 0x0003, 0x0000, 0x045a, + 0x045f, 0x0003, 0x0057, 0x1929, 0x194c, 0x1963, 0x0002, 0x0462, + // Entry 3E080 - 3E0BF + 0x0466, 0x0002, 0x0057, 0x19a0, 0x19a0, 0x0002, 0x0057, 0x19f1, + 0x19f1, 0x0003, 0x0000, 0x046e, 0x0473, 0x0003, 0x0057, 0x1a1f, + 0x1a42, 0x1a59, 0x0002, 0x0476, 0x047a, 0x0002, 0x0057, 0x1a96, + 0x1a73, 0x0002, 0x0057, 0x1ae7, 0x1ac0, 0x0003, 0x0000, 0x0482, + 0x0487, 0x0003, 0x0057, 0x1a1f, 0x1a42, 0x1a59, 0x0002, 0x048a, + 0x048e, 0x0002, 0x0057, 0x1a96, 0x1a96, 0x0002, 0x0057, 0x1ae7, + 0x1ae7, 0x0003, 0x0000, 0x0496, 0x049b, 0x0003, 0x0057, 0x1a1f, + 0x1a42, 0x1a59, 0x0002, 0x049e, 0x04a2, 0x0002, 0x0057, 0x1a96, + // Entry 3E0C0 - 3E0FF + 0x1a96, 0x0002, 0x0057, 0x1ae7, 0x1ae7, 0x0003, 0x0000, 0x04aa, + 0x04af, 0x0003, 0x0057, 0x1b15, 0x1b44, 0x1b67, 0x0002, 0x04b2, + 0x04b6, 0x0002, 0x0057, 0x1bbc, 0x1b8d, 0x0002, 0x0057, 0x1c25, + 0x1bf2, 0x0003, 0x0000, 0x04be, 0x04c3, 0x0003, 0x0057, 0x1b15, + 0x1b44, 0x1b67, 0x0002, 0x04c6, 0x04ca, 0x0002, 0x0057, 0x1bbc, + 0x1bbc, 0x0002, 0x0057, 0x1c25, 0x1c25, 0x0003, 0x0000, 0x04d2, + 0x04d7, 0x0003, 0x0057, 0x1b15, 0x1b44, 0x1b67, 0x0002, 0x04da, + 0x04de, 0x0002, 0x0057, 0x1bbc, 0x1bbc, 0x0002, 0x0057, 0x1c25, + // Entry 3E100 - 3E13F + 0x1c25, 0x0003, 0x0000, 0x04e6, 0x04eb, 0x0003, 0x0057, 0x1c5f, + 0x1c82, 0x1c99, 0x0002, 0x04ee, 0x04f2, 0x0002, 0x0057, 0x1cd6, + 0x1cb3, 0x0002, 0x0057, 0x1d27, 0x1d00, 0x0003, 0x0000, 0x04fa, + 0x04ff, 0x0003, 0x0057, 0x1c5f, 0x1c82, 0x1c99, 0x0002, 0x0502, + 0x0506, 0x0002, 0x0057, 0x1cd6, 0x1cd6, 0x0002, 0x0057, 0x1d27, + 0x1d27, 0x0003, 0x0000, 0x050e, 0x0513, 0x0003, 0x0057, 0x1c5f, + 0x1c82, 0x1c99, 0x0002, 0x0516, 0x051a, 0x0002, 0x0057, 0x1cd6, + 0x1cd6, 0x0002, 0x0057, 0x1d27, 0x1d27, 0x0003, 0x0000, 0x0522, + // Entry 3E140 - 3E17F + 0x0527, 0x0003, 0x0057, 0x1d55, 0x1d93, 0x1dc5, 0x0002, 0x052a, + 0x052e, 0x0002, 0x0057, 0x1e38, 0x1dfa, 0x0002, 0x0057, 0x1ebf, + 0x1e7d, 0x0003, 0x0000, 0x0536, 0x053b, 0x0003, 0x0057, 0x1d55, + 0x1d93, 0x1dc5, 0x0002, 0x053e, 0x0542, 0x0002, 0x0057, 0x1e38, + 0x1e38, 0x0002, 0x0057, 0x1ebf, 0x1ebf, 0x0003, 0x0000, 0x054a, + 0x054f, 0x0003, 0x0057, 0x1d55, 0x1d93, 0x1dc5, 0x0002, 0x0552, + 0x0556, 0x0002, 0x0057, 0x1e38, 0x1e38, 0x0002, 0x0057, 0x1ebf, + 0x1ebf, 0x0003, 0x0000, 0x055e, 0x0563, 0x0003, 0x0057, 0x1f08, + // Entry 3E180 - 3E1BF + 0x1f34, 0x1f54, 0x0002, 0x0566, 0x056a, 0x0002, 0x0057, 0x1fa1, + 0x1f77, 0x0002, 0x0057, 0x1fff, 0x1fd2, 0x0003, 0x0000, 0x0572, + 0x0577, 0x0003, 0x0057, 0x1f08, 0x1f34, 0x1f54, 0x0002, 0x057a, + 0x057e, 0x0002, 0x0057, 0x1fa1, 0x1fa1, 0x0002, 0x0057, 0x1fff, + 0x1fff, 0x0003, 0x0000, 0x0586, 0x058b, 0x0003, 0x0057, 0x1f08, + 0x1f34, 0x1f54, 0x0002, 0x058e, 0x0592, 0x0002, 0x0057, 0x1fa1, + 0x1fa1, 0x0002, 0x0057, 0x1fff, 0x1fff, 0x0003, 0x0000, 0x059a, + 0x059f, 0x0003, 0x0058, 0x0000, 0x002f, 0x0052, 0x0002, 0x05a2, + // Entry 3E1C0 - 3E1FF + 0x05a6, 0x0002, 0x0058, 0x00a6, 0x0078, 0x0002, 0x0058, 0x010e, + 0x00dd, 0x0003, 0x0000, 0x05ae, 0x05b3, 0x0003, 0x0058, 0x0000, + 0x002f, 0x0052, 0x0002, 0x05b6, 0x05ba, 0x0002, 0x0058, 0x00a6, + 0x00a6, 0x0002, 0x0058, 0x010e, 0x010e, 0x0003, 0x0000, 0x05c2, + 0x05c7, 0x0003, 0x0058, 0x0000, 0x002f, 0x0052, 0x0002, 0x05ca, + 0x05ce, 0x0002, 0x0058, 0x00a6, 0x00a6, 0x0002, 0x0058, 0x010e, + 0x010e, 0x0001, 0x05d4, 0x0001, 0x0058, 0x0148, 0x0003, 0x05db, + 0x05de, 0x05e2, 0x0001, 0x0058, 0x015b, 0x0002, 0x0058, 0xffff, + // Entry 3E200 - 3E23F + 0x0165, 0x0002, 0x05e5, 0x05e9, 0x0002, 0x0058, 0x0179, 0x0179, + 0x0002, 0x0058, 0x0193, 0x0193, 0x0003, 0x05f1, 0x0000, 0x05f4, + 0x0001, 0x0058, 0x015b, 0x0002, 0x05f7, 0x05fb, 0x0002, 0x0058, + 0x0179, 0x0179, 0x0002, 0x0058, 0x0193, 0x0193, 0x0003, 0x0603, + 0x0000, 0x0606, 0x0001, 0x0058, 0x01b1, 0x0002, 0x0609, 0x060d, + 0x0002, 0x0058, 0x0179, 0x0179, 0x0002, 0x0058, 0x0193, 0x0193, + 0x0003, 0x0615, 0x0618, 0x061c, 0x0001, 0x0058, 0x01b8, 0x0002, + 0x0058, 0xffff, 0x01d4, 0x0002, 0x061f, 0x0623, 0x0002, 0x0058, + // Entry 3E240 - 3E27F + 0x01fa, 0x01fa, 0x0002, 0x0058, 0x0223, 0x0223, 0x0003, 0x062b, + 0x0000, 0x062e, 0x0001, 0x0058, 0x0250, 0x0002, 0x0631, 0x0635, + 0x0002, 0x0058, 0x01fa, 0x01fa, 0x0002, 0x0058, 0x0223, 0x0223, + 0x0003, 0x063d, 0x0000, 0x0640, 0x0001, 0x0058, 0x025e, 0x0002, + 0x0643, 0x0647, 0x0002, 0x0058, 0x01fa, 0x01fa, 0x0002, 0x0058, + 0x0223, 0x0223, 0x0003, 0x064f, 0x0652, 0x0656, 0x0001, 0x0058, + 0x0265, 0x0002, 0x0058, 0xffff, 0x0278, 0x0002, 0x0659, 0x065d, + 0x0002, 0x0058, 0x0285, 0x0285, 0x0002, 0x0058, 0x02a5, 0x02a5, + // Entry 3E280 - 3E2BF + 0x0003, 0x0665, 0x0000, 0x0668, 0x0001, 0x0058, 0x02c9, 0x0002, + 0x066b, 0x066f, 0x0002, 0x0058, 0x0285, 0x0285, 0x0002, 0x0058, + 0x02a5, 0x02a5, 0x0003, 0x0677, 0x0000, 0x067a, 0x0001, 0x0058, + 0x02d4, 0x0002, 0x067d, 0x0681, 0x0002, 0x0058, 0x0285, 0x0285, + 0x0002, 0x0058, 0x02a5, 0x02a5, 0x0001, 0x0687, 0x0001, 0x0058, + 0x02d8, 0x0004, 0x068f, 0x0694, 0x0699, 0x06a4, 0x0003, 0x0008, + 0x1d98, 0x4f35, 0x4f51, 0x0003, 0x0058, 0x02f2, 0x0306, 0x0333, + 0x0002, 0x0000, 0x069c, 0x0002, 0x0000, 0x069f, 0x0003, 0x0058, + // Entry 3E2C0 - 3E2FF + 0xffff, 0x0357, 0x039c, 0x0002, 0x0000, 0x06a7, 0x0003, 0x0749, + 0x07df, 0x06ab, 0x009c, 0x0058, 0x03d8, 0x040a, 0x044c, 0x0494, + 0x0512, 0x05d9, 0x066e, 0x072c, 0x083f, 0x0955, 0x0a62, 0xffff, + 0x0b4f, 0x0bcc, 0x0c5b, 0x0d1e, 0x0dee, 0x0ea1, 0x0f7c, 0x1083, + 0x11b3, 0x12c6, 0x13ae, 0x1461, 0x14ff, 0x1577, 0x1597, 0x15e6, + 0x1658, 0x16c3, 0x173b, 0x177b, 0x17f5, 0x186f, 0x18f5, 0x1982, + 0x19c1, 0x1a23, 0x1ad4, 0x1b8a, 0x1c05, 0x1c28, 0x1c6d, 0x1cdc, + 0x1d68, 0x1dca, 0x1ea4, 0x1f4b, 0x1fcd, 0x209e, 0x2159, 0x21bc, + // Entry 3E300 - 3E33F + 0x21ec, 0x2257, 0x227d, 0x22d8, 0x235f, 0x239b, 0x2425, 0x2523, + 0x25cd, 0x25ed, 0x264c, 0x271c, 0x27ae, 0x281d, 0x2849, 0x287f, + 0x28a8, 0x28f3, 0x2944, 0x29a9, 0x2a2f, 0x2ae5, 0x2b74, 0xffff, + 0x2bce, 0x2c10, 0x2c72, 0x2ce4, 0x2d48, 0x2df3, 0x2e52, 0x2eb2, + 0x2f2f, 0x2f8e, 0x2ffd, 0x302c, 0x305b, 0x308d, 0x30e6, 0x3152, + 0x31ab, 0x327c, 0x3359, 0x3408, 0x347d, 0x34a9, 0x34cc, 0x3525, + 0x35e9, 0x3690, 0x3729, 0x3746, 0x37cb, 0x38c1, 0x3980, 0x3a21, + 0x3a9f, 0x3abf, 0x3b28, 0x3bb7, 0x3c3d, 0x3cb2, 0x3d38, 0x3dfb, + // Entry 3E340 - 3E37F + 0x3e2a, 0x3e4a, 0x3e7c, 0x3ea8, 0x3eee, 0xffff, 0x3f80, 0x3fef, + 0x4018, 0x4047, 0x407d, 0x40b0, 0x40d6, 0x40f9, 0x413f, 0x41a5, + 0x41d4, 0x421d, 0x4286, 0x42de, 0x437d, 0x43c6, 0x446d, 0x4523, + 0x458f, 0x45f6, 0x46c7, 0x4760, 0x4789, 0x47b6, 0x481f, 0x48db, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e25, + 0x0094, 0x0058, 0xffff, 0xffff, 0xffff, 0xffff, 0x04d3, 0x05b6, + 0x0648, 0x06e0, 0x07ed, 0x090c, 0x0a10, 0xffff, 0x0b2f, 0x0bac, + 0x0c2c, 0x0cdf, 0x0dc2, 0x0e6f, 0x0f2e, 0x1025, 0x115f, 0x127b, + // Entry 3E380 - 3E3BF + 0x137c, 0x143b, 0x14d6, 0xffff, 0xffff, 0x15c0, 0xffff, 0x169a, + 0xffff, 0x175b, 0x17d8, 0x1855, 0x18c3, 0xffff, 0xffff, 0x19f4, + 0x1aa7, 0x1b61, 0xffff, 0xffff, 0xffff, 0x1ca9, 0xffff, 0x1d91, + 0x1e65, 0xffff, 0x1f97, 0x2062, 0x213c, 0xffff, 0xffff, 0xffff, + 0xffff, 0x22a9, 0xffff, 0xffff, 0x23da, 0x24e1, 0xffff, 0xffff, + 0x260a, 0x26f9, 0x278b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x298c, 0x29fd, 0x2abc, 0x2b57, 0xffff, 0xffff, 0xffff, + 0x2c49, 0xffff, 0x2d07, 0xffff, 0xffff, 0x2e82, 0xffff, 0x2f6b, + // Entry 3E3C0 - 3E3FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x30c3, 0xffff, 0x3178, 0x323a, + 0x3329, 0x33e2, 0xffff, 0xffff, 0xffff, 0x34ec, 0x35c0, 0x3658, + 0xffff, 0xffff, 0x377f, 0x3889, 0x395a, 0x39f5, 0xffff, 0xffff, + 0x3b02, 0x3b9a, 0x3c17, 0xffff, 0x3ceb, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3ecb, 0xffff, 0x3f5d, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x411c, 0xffff, 0xffff, 0x41fd, + 0xffff, 0x42a3, 0xffff, 0x43a0, 0x4438, 0x4500, 0xffff, 0x45be, + 0x468f, 0xffff, 0xffff, 0xffff, 0x47f3, 0x48a0, 0x0094, 0x0058, + // Entry 3E400 - 3E43F + 0xffff, 0xffff, 0xffff, 0xffff, 0x0561, 0x060c, 0x06a4, 0x0788, + 0x08a1, 0x09ae, 0x0ac4, 0xffff, 0x0b7f, 0x0bfc, 0x0c9a, 0x0d6d, + 0x0e2a, 0x0ee3, 0x0fc7, 0x10f1, 0x1217, 0x1321, 0x13f0, 0x1497, + 0x1538, 0xffff, 0xffff, 0x161c, 0xffff, 0x16fc, 0xffff, 0x17ab, + 0x1822, 0x1899, 0x1937, 0xffff, 0xffff, 0x1a62, 0x1b11, 0x1bc3, + 0xffff, 0xffff, 0xffff, 0x1d1f, 0xffff, 0x1e13, 0x1ef3, 0xffff, + 0x2013, 0x20ea, 0x2186, 0xffff, 0xffff, 0xffff, 0xffff, 0x2317, + 0xffff, 0xffff, 0x2480, 0x2575, 0xffff, 0xffff, 0x269e, 0x274f, + // Entry 3E440 - 3E47F + 0x27e1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x29d6, + 0x2a71, 0x2b1e, 0x2ba1, 0xffff, 0xffff, 0xffff, 0x2cab, 0xffff, + 0x2d99, 0xffff, 0xffff, 0x2ef2, 0xffff, 0x2fc1, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3119, 0xffff, 0x31ee, 0x32ce, 0x3399, 0x343e, + 0xffff, 0xffff, 0xffff, 0x356e, 0x3622, 0x36d8, 0xffff, 0xffff, + 0x3827, 0x3909, 0x39b6, 0x3a5d, 0xffff, 0xffff, 0x3b5e, 0x3be4, + 0x3c73, 0xffff, 0x3d95, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3f21, 0xffff, 0x3fb3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3E480 - 3E4BF + 0xffff, 0xffff, 0x4172, 0xffff, 0xffff, 0x424d, 0xffff, 0x4329, + 0xffff, 0x43fc, 0x44b2, 0x4556, 0xffff, 0x463e, 0x470f, 0xffff, + 0xffff, 0xffff, 0x485b, 0x4926, 0x0003, 0x0004, 0x0268, 0x07b6, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0059, 0x0000, 0x0001, 0x0013, 0x0483, 0x0001, 0x0013, 0x0483, + 0x0001, 0x0008, 0x062f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + // Entry 3E4C0 - 3E4FF + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x000d, 0xffff, 0x0059, + 0x32b8, 0x3399, 0x32c0, 0x33b1, 0x33b6, 0x33bb, 0x3238, 0x32fb, + 0x32ff, 0x3303, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, + 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, + 0x3a8f, 0x3a91, 0x000d, 0x0059, 0xffff, 0x0010, 0x0019, 0x0023, + // Entry 3E500 - 3E53F + 0x0029, 0x0031, 0x0037, 0x003d, 0x0043, 0x004b, 0x0055, 0x005e, + 0x0067, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x000d, 0xffff, + 0x0059, 0x32b8, 0x3399, 0x32c0, 0x33b1, 0x33b6, 0x33bb, 0x3238, + 0x32fb, 0x32ff, 0x3303, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, + 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, + 0x1f98, 0x3a8f, 0x3a91, 0x000d, 0x0030, 0xffff, 0x003b, 0x0043, + 0x25bf, 0x25c5, 0x25cc, 0x25d1, 0x25d6, 0x25db, 0x25e2, 0x25ec, + 0x25f5, 0x25fe, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + // Entry 3E540 - 3E57F + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0013, 0x0587, 0x058a, 0x311d, + 0x3120, 0x3123, 0x3127, 0x312a, 0x0007, 0x0000, 0x3a8f, 0x21ec, + 0x2010, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, 0x0013, 0x0587, + 0x058a, 0x311d, 0x3120, 0x3123, 0x3127, 0x312a, 0x0007, 0x0059, + 0x0070, 0x0078, 0x0081, 0x0088, 0x008f, 0x0098, 0x009f, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0013, 0x0587, + 0x058a, 0x311d, 0x3120, 0x3123, 0x3127, 0x312a, 0x0007, 0x0000, + 0x3a8f, 0x21ec, 0x2010, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, + // Entry 3E580 - 3E5BF + 0x0013, 0x0587, 0x058a, 0x311d, 0x3120, 0x3123, 0x3127, 0x312a, + 0x0007, 0x0059, 0x0070, 0x0078, 0x0081, 0x0088, 0x008f, 0x0098, + 0x009f, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0059, + 0xffff, 0x00a6, 0x00b4, 0x00c2, 0x00d0, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + // Entry 3E5C0 - 3E5FF + 0x0059, 0xffff, 0x00a6, 0x00b4, 0x00c2, 0x00d0, 0x0002, 0x0135, + 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, + 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, + 0x0059, 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0059, 0x00e6, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, 0x0657, 0x0001, 0x0059, + 0x00ed, 0x0001, 0x0059, 0x00f4, 0x0001, 0x0013, 0x0671, 0x0001, + 0x0013, 0x0678, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, + 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x0059, 0x00de, 0x0001, + // Entry 3E600 - 3E63F + 0x0000, 0x04ef, 0x0001, 0x0059, 0x00fb, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, 0x061b, 0x0001, 0x002f, + 0x004f, 0x0001, 0x0013, 0x062d, 0x0001, 0x0013, 0x0633, 0x0009, + 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, + 0x019c, 0x0001, 0x0059, 0x0100, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0059, 0x010a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, 0x0657, + 0x0001, 0x0059, 0x0115, 0x0001, 0x0059, 0x0120, 0x0001, 0x0013, + 0x0671, 0x0001, 0x0013, 0x0678, 0x0003, 0x01ac, 0x01d1, 0x01f6, + // Entry 3E640 - 3E67F + 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, + 0x01bc, 0x01c5, 0x0001, 0x0059, 0x012b, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0013, 0x0620, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, + 0x0657, 0x0001, 0x0059, 0x00ed, 0x0001, 0x0059, 0x00f4, 0x0001, + 0x0013, 0x0671, 0x0001, 0x0013, 0x067f, 0x0009, 0x01de, 0x01e4, + 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, + 0x0059, 0x012b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0013, 0x0620, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, + // Entry 3E680 - 3E6BF + 0x061b, 0x0001, 0x002f, 0x004f, 0x0001, 0x0013, 0x062d, 0x0001, + 0x0013, 0x067f, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, + 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x0059, 0x0131, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0059, 0x0138, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0013, 0x0657, 0x0001, 0x0059, 0x0141, 0x0001, 0x0059, + 0x014c, 0x0001, 0x0013, 0x0671, 0x0001, 0x0013, 0x067f, 0x0003, + 0x022a, 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, 0x0059, + 0x0157, 0x017d, 0x0002, 0x0059, 0x0164, 0x0189, 0x0002, 0x022d, + // Entry 3E6C0 - 3E6FF + 0x0231, 0x0002, 0x0059, 0x019c, 0x01b0, 0x0002, 0x0059, 0x01a5, + 0x01b7, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x0016, + 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0013, 0x0357, 0x0001, + 0x0013, 0x0357, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, + 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, + 0x0001, 0x0005, 0x00a1, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, 0x0000, + // Entry 3E700 - 3E73F + 0x02ae, 0x02cd, 0x02e7, 0x0301, 0x0320, 0x033f, 0x035e, 0x037d, + 0x0397, 0x03b1, 0x03d4, 0x03f2, 0x0000, 0x0000, 0x0000, 0x0410, + 0x0431, 0x044b, 0x0000, 0x0000, 0x0000, 0x0465, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x046a, 0x0486, 0x04a2, 0x04be, 0x04da, + 0x04f6, 0x0512, 0x052e, 0x054a, 0x0566, 0x0582, 0x059e, 0x05ba, + 0x05d6, 0x05f2, 0x060e, 0x062a, 0x0646, 0x0662, 0x067e, 0x069a, + 0x0000, 0x06b6, 0x0000, 0x06bb, 0x06d9, 0x06f3, 0x070d, 0x072b, + 0x0745, 0x075f, 0x077d, 0x0797, 0x07b1, 0x0001, 0x02ab, 0x0001, + // Entry 3E740 - 3E77F + 0x0013, 0x06dc, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0013, + 0x06e7, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x312d, 0x0002, 0x02bd, + 0x02c5, 0x0006, 0x0059, 0x01dd, 0x01bd, 0xffff, 0xffff, 0x01c7, + 0x01d2, 0x0006, 0x0059, 0x01f8, 0x01e9, 0xffff, 0xffff, 0x01f8, + 0x0207, 0x0003, 0x02d1, 0x0000, 0x02d4, 0x0001, 0x0013, 0x062a, + 0x0002, 0x02d7, 0x02df, 0x0006, 0x0059, 0x0215, 0x0215, 0xffff, + 0xffff, 0x0215, 0x0215, 0x0006, 0x0059, 0x021e, 0x021e, 0xffff, + 0xffff, 0x021e, 0x021e, 0x0003, 0x02eb, 0x0000, 0x02ee, 0x0001, + // Entry 3E780 - 3E7BF + 0x0013, 0x062a, 0x0002, 0x02f1, 0x02f9, 0x0006, 0x0059, 0x0215, + 0x0215, 0xffff, 0xffff, 0x0215, 0x0215, 0x0006, 0x0059, 0x021e, + 0x021e, 0xffff, 0xffff, 0x021e, 0x021e, 0x0003, 0x0305, 0x0308, + 0x030d, 0x0001, 0x0059, 0x022a, 0x0003, 0x0059, 0x0235, 0x0248, + 0x0259, 0x0002, 0x0310, 0x0318, 0x0006, 0x0059, 0x02a1, 0x026c, + 0xffff, 0xffff, 0x027d, 0x028f, 0x0006, 0x0059, 0x02ca, 0x02b4, + 0xffff, 0xffff, 0x02ca, 0x02e0, 0x0003, 0x0324, 0x0327, 0x032c, + 0x0001, 0x0000, 0x3911, 0x0003, 0x0059, 0x02f5, 0x0307, 0x0317, + // Entry 3E7C0 - 3E7FF + 0x0002, 0x032f, 0x0337, 0x0006, 0x0059, 0x0329, 0x0329, 0xffff, + 0xffff, 0x0329, 0x0329, 0x0006, 0x0059, 0x0339, 0x0339, 0xffff, + 0xffff, 0x0339, 0x0339, 0x0003, 0x0343, 0x0346, 0x034b, 0x0001, + 0x0000, 0x3911, 0x0003, 0x0059, 0x02f5, 0x0307, 0x0317, 0x0002, + 0x034e, 0x0356, 0x0006, 0x0059, 0x0329, 0x0329, 0xffff, 0xffff, + 0x0329, 0x0329, 0x0006, 0x0059, 0x0339, 0x0339, 0xffff, 0xffff, + 0x0339, 0x0339, 0x0003, 0x0362, 0x0365, 0x036a, 0x0001, 0x0059, + 0x034c, 0x0003, 0x0059, 0x0353, 0x0362, 0x036f, 0x0002, 0x036d, + // Entry 3E800 - 3E83F + 0x0375, 0x0006, 0x0059, 0x03a7, 0x037e, 0xffff, 0xffff, 0x038b, + 0x0399, 0x0006, 0x0059, 0x03c8, 0x03b6, 0xffff, 0xffff, 0x03c8, + 0x03da, 0x0003, 0x0381, 0x0000, 0x0384, 0x0001, 0x0059, 0x03eb, + 0x0002, 0x0387, 0x038f, 0x0006, 0x0059, 0x03f0, 0x03f0, 0xffff, + 0xffff, 0x03f0, 0x03f0, 0x0006, 0x0059, 0x03fb, 0x03fb, 0xffff, + 0xffff, 0x03fb, 0x03fb, 0x0003, 0x039b, 0x0000, 0x039e, 0x0001, + 0x0059, 0x03eb, 0x0002, 0x03a1, 0x03a9, 0x0006, 0x0059, 0x03f0, + 0x03f0, 0xffff, 0xffff, 0x03f0, 0x03f0, 0x0006, 0x0059, 0x03fb, + // Entry 3E840 - 3E87F + 0x03fb, 0xffff, 0xffff, 0x03fb, 0x03fb, 0x0004, 0x03b6, 0x03b9, + 0x03be, 0x03d1, 0x0001, 0x0059, 0x0409, 0x0003, 0x0059, 0x0413, + 0x0425, 0x0435, 0x0002, 0x03c1, 0x03c9, 0x0006, 0x0059, 0x0476, + 0x0447, 0xffff, 0xffff, 0x0457, 0x0466, 0x0006, 0x0059, 0x049b, + 0x0487, 0xffff, 0xffff, 0x049b, 0x04b0, 0x0001, 0x0059, 0x04c3, + 0x0004, 0x03d9, 0x0000, 0x03dc, 0x03ef, 0x0001, 0x0059, 0x04d6, + 0x0002, 0x03df, 0x03e7, 0x0006, 0x0059, 0x04dd, 0x04dd, 0xffff, + 0xffff, 0x04dd, 0x04dd, 0x0006, 0x0059, 0x04ea, 0x04ea, 0xffff, + // Entry 3E880 - 3E8BF + 0xffff, 0x04ea, 0x04ea, 0x0001, 0x0059, 0x04fa, 0x0004, 0x03f7, + 0x0000, 0x03fa, 0x040d, 0x0001, 0x0059, 0x04d6, 0x0002, 0x03fd, + 0x0405, 0x0006, 0x0059, 0x04dd, 0x04dd, 0xffff, 0xffff, 0x04dd, + 0x04dd, 0x0006, 0x0059, 0x04ea, 0x04ea, 0xffff, 0xffff, 0x04ea, + 0x04ea, 0x0001, 0x0059, 0x04fa, 0x0003, 0x0414, 0x0417, 0x041e, + 0x0001, 0x0059, 0x050a, 0x0005, 0x0059, 0x051b, 0x0522, 0x0527, + 0x050f, 0x052e, 0x0002, 0x0421, 0x0429, 0x0006, 0x0059, 0x0557, + 0x0537, 0xffff, 0xffff, 0x0542, 0x054c, 0x0006, 0x0059, 0x0571, + // Entry 3E8C0 - 3E8FF + 0x0562, 0xffff, 0xffff, 0x0571, 0x0581, 0x0003, 0x0435, 0x0000, + 0x0438, 0x0001, 0x0029, 0x008f, 0x0002, 0x043b, 0x0443, 0x0006, + 0x0059, 0x058f, 0x058f, 0xffff, 0xffff, 0x058f, 0x058f, 0x0006, + 0x0059, 0x0598, 0x0598, 0xffff, 0xffff, 0x0598, 0x0598, 0x0003, + 0x044f, 0x0000, 0x0452, 0x0001, 0x0029, 0x008f, 0x0002, 0x0455, + 0x045d, 0x0006, 0x0059, 0x058f, 0x058f, 0xffff, 0xffff, 0x058f, + 0x058f, 0x0006, 0x0059, 0x0598, 0x0598, 0xffff, 0xffff, 0x0598, + 0x0598, 0x0001, 0x0467, 0x0001, 0x0059, 0x05a4, 0x0003, 0x0000, + // Entry 3E900 - 3E93F + 0x046e, 0x0473, 0x0003, 0x0059, 0x05b3, 0x05c3, 0x05d1, 0x0002, + 0x0476, 0x047e, 0x0006, 0x0059, 0x05fc, 0x05e1, 0xffff, 0xffff, + 0x05ef, 0x05ef, 0x0006, 0x0059, 0x061c, 0x060a, 0xffff, 0xffff, + 0x061c, 0x062f, 0x0003, 0x0000, 0x048a, 0x048f, 0x0003, 0x0059, + 0x063f, 0x064c, 0x0657, 0x0002, 0x0492, 0x049a, 0x0006, 0x0059, + 0x0664, 0x0664, 0xffff, 0xffff, 0x0664, 0x0664, 0x0006, 0x0059, + 0x066f, 0x066f, 0xffff, 0xffff, 0x066f, 0x066f, 0x0003, 0x0000, + 0x04a6, 0x04ab, 0x0003, 0x0059, 0x067d, 0x0689, 0x0693, 0x0002, + // Entry 3E940 - 3E97F + 0x04ae, 0x04b6, 0x0006, 0x0059, 0x069f, 0x069f, 0xffff, 0xffff, + 0x069f, 0x069f, 0x0006, 0x0059, 0x06a9, 0x06a9, 0xffff, 0xffff, + 0x06a9, 0x06a9, 0x0003, 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0059, + 0x06b6, 0x06c7, 0x06d6, 0x0002, 0x04ca, 0x04d2, 0x0006, 0x0059, + 0x0714, 0x06e7, 0xffff, 0xffff, 0x06f6, 0x0705, 0x0006, 0x0059, + 0x0737, 0x0724, 0xffff, 0xffff, 0x0737, 0x074b, 0x0003, 0x0000, + 0x04de, 0x04e3, 0x0003, 0x0059, 0x075d, 0x076b, 0x0777, 0x0002, + 0x04e6, 0x04ee, 0x0006, 0x0059, 0x0785, 0x0785, 0xffff, 0xffff, + // Entry 3E980 - 3E9BF + 0x0785, 0x0785, 0x0006, 0x0059, 0x0791, 0x0791, 0xffff, 0xffff, + 0x0791, 0x0791, 0x0003, 0x0000, 0x04fa, 0x04ff, 0x0003, 0x0059, + 0x07a0, 0x07ac, 0x07b6, 0x0002, 0x0502, 0x050a, 0x0006, 0x0059, + 0x07c2, 0x07c2, 0xffff, 0xffff, 0x07c2, 0x07c2, 0x0006, 0x0059, + 0x07cc, 0x07cc, 0xffff, 0xffff, 0x07cc, 0x07cc, 0x0003, 0x0000, + 0x0516, 0x051b, 0x0003, 0x0059, 0x07d9, 0x07e8, 0x07f5, 0x0002, + 0x051e, 0x0526, 0x0006, 0x0059, 0x082b, 0x0804, 0xffff, 0xffff, + 0x0811, 0x081e, 0x0006, 0x0059, 0x084a, 0x0839, 0xffff, 0xffff, + // Entry 3E9C0 - 3E9FF + 0x084a, 0x085c, 0x0003, 0x0000, 0x0532, 0x0537, 0x0003, 0x0059, + 0x086c, 0x087a, 0x0886, 0x0002, 0x053a, 0x0542, 0x0006, 0x0059, + 0x0894, 0x0894, 0xffff, 0xffff, 0x0894, 0x0894, 0x0006, 0x0059, + 0x08a0, 0x08a0, 0xffff, 0xffff, 0x08a0, 0x08a0, 0x0003, 0x0000, + 0x054e, 0x0553, 0x0003, 0x0059, 0x08af, 0x08bb, 0x08c5, 0x0002, + 0x0556, 0x055e, 0x0006, 0x0059, 0x08d1, 0x08d1, 0xffff, 0xffff, + 0x08d1, 0x08d1, 0x0006, 0x0059, 0x08db, 0x08db, 0xffff, 0xffff, + 0x08db, 0x08db, 0x0003, 0x0000, 0x056a, 0x056f, 0x0003, 0x0059, + // Entry 3EA00 - 3EA3F + 0x08e8, 0x08f7, 0x0904, 0x0002, 0x0572, 0x057a, 0x0006, 0x0059, + 0x092d, 0x0913, 0xffff, 0xffff, 0x0920, 0x0920, 0x0006, 0x0059, + 0x094b, 0x093a, 0xffff, 0xffff, 0x094b, 0x095d, 0x0003, 0x0000, + 0x0586, 0x058b, 0x0003, 0x0059, 0x096d, 0x097a, 0x0985, 0x0002, + 0x058e, 0x0596, 0x0006, 0x0059, 0x0992, 0x0992, 0xffff, 0xffff, + 0x0992, 0x0992, 0x0006, 0x0059, 0x099d, 0x099d, 0xffff, 0xffff, + 0x099d, 0x099d, 0x0003, 0x0000, 0x05a2, 0x05a7, 0x0003, 0x0059, + 0x09ab, 0x09b7, 0x09c1, 0x0002, 0x05aa, 0x05b2, 0x0006, 0x0059, + // Entry 3EA40 - 3EA7F + 0x09cd, 0x09cd, 0xffff, 0xffff, 0x09cd, 0x09cd, 0x0006, 0x0059, + 0x09d7, 0x09d7, 0xffff, 0xffff, 0x09d7, 0x09d7, 0x0003, 0x0000, + 0x05be, 0x05c3, 0x0003, 0x0059, 0x09e4, 0x09f5, 0x0a04, 0x0002, + 0x05c6, 0x05ce, 0x0006, 0x0059, 0x0a42, 0x0a15, 0xffff, 0xffff, + 0x0a24, 0x0a33, 0x0006, 0x0059, 0x0a65, 0x0a52, 0xffff, 0xffff, + 0x0a65, 0x0a79, 0x0003, 0x0000, 0x05da, 0x05df, 0x0003, 0x0059, + 0x0a8b, 0x0a98, 0x0aa3, 0x0002, 0x05e2, 0x05ea, 0x0006, 0x0059, + 0x0ab0, 0x0ab0, 0xffff, 0xffff, 0x0ab0, 0x0ab0, 0x0006, 0x0059, + // Entry 3EA80 - 3EABF + 0x0abb, 0x0abb, 0xffff, 0xffff, 0x0abb, 0x0abb, 0x0003, 0x0000, + 0x05f6, 0x05fb, 0x0003, 0x0059, 0x0a8b, 0x0a98, 0x0aa3, 0x0002, + 0x05fe, 0x0606, 0x0006, 0x0059, 0x0ab0, 0x0ab0, 0xffff, 0xffff, + 0x0ab0, 0x0ab0, 0x0006, 0x0059, 0x0abb, 0x0abb, 0xffff, 0xffff, + 0x0abb, 0x0abb, 0x0003, 0x0000, 0x0612, 0x0617, 0x0003, 0x0059, + 0x0ac9, 0x0ad8, 0x0ae5, 0x0002, 0x061a, 0x0622, 0x0006, 0x0059, + 0x0b1b, 0x0af4, 0xffff, 0xffff, 0x0b01, 0x0b0e, 0x0006, 0x0059, + 0x0b3a, 0x0b29, 0xffff, 0xffff, 0x0b3a, 0x0b4c, 0x0003, 0x0000, + // Entry 3EAC0 - 3EAFF + 0x062e, 0x0633, 0x0003, 0x0059, 0x0b5c, 0x0b68, 0x0b72, 0x0002, + 0x0636, 0x063e, 0x0006, 0x0059, 0x0b7e, 0x0b7e, 0xffff, 0xffff, + 0x0b7e, 0x0b7e, 0x0006, 0x0059, 0x0b88, 0x0b88, 0xffff, 0xffff, + 0x0b88, 0x0b88, 0x0003, 0x0000, 0x064a, 0x064f, 0x0003, 0x0059, + 0x0b5c, 0x0b68, 0x0b72, 0x0002, 0x0652, 0x065a, 0x0006, 0x0059, + 0x0b7e, 0x0b7e, 0xffff, 0xffff, 0x0b7e, 0x0b7e, 0x0006, 0x0059, + 0x0b88, 0x0b88, 0xffff, 0xffff, 0x0b88, 0x0b88, 0x0003, 0x0000, + 0x0666, 0x066b, 0x0003, 0x0059, 0x0b95, 0x0ba4, 0x0bb1, 0x0002, + // Entry 3EB00 - 3EB3F + 0x066e, 0x0676, 0x0006, 0x0059, 0x0bda, 0x0bc0, 0xffff, 0xffff, + 0x0bcd, 0x0bcd, 0x0006, 0x0059, 0x0bf8, 0x0be7, 0xffff, 0xffff, + 0x0bf8, 0x0c0a, 0x0003, 0x0000, 0x0682, 0x0687, 0x0003, 0x0059, + 0x0c1a, 0x0c26, 0x0c30, 0x0002, 0x068a, 0x0692, 0x0006, 0x0059, + 0x0c3c, 0x0c3c, 0xffff, 0xffff, 0x0c3c, 0x0c3c, 0x0006, 0x0059, + 0x0c46, 0x0c46, 0xffff, 0xffff, 0x0c46, 0x0c46, 0x0003, 0x0000, + 0x069e, 0x06a3, 0x0003, 0x0059, 0x0c1a, 0x0c26, 0x0c30, 0x0002, + 0x06a6, 0x06ae, 0x0006, 0x0059, 0x0c3c, 0x0c3c, 0xffff, 0xffff, + // Entry 3EB40 - 3EB7F + 0x0c3c, 0x0c3c, 0x0006, 0x0059, 0x0c46, 0x0c46, 0xffff, 0xffff, + 0x0c46, 0x0c46, 0x0001, 0x06b8, 0x0001, 0x0059, 0x0c53, 0x0003, + 0x06bf, 0x06c2, 0x06c6, 0x0001, 0x0013, 0x0eac, 0x0002, 0x0059, + 0xffff, 0x0c5f, 0x0002, 0x06c9, 0x06d1, 0x0006, 0x0059, 0x0c88, + 0x0c6e, 0xffff, 0xffff, 0x0c7b, 0x0c7b, 0x0006, 0x0059, 0x0ca6, + 0x0c95, 0xffff, 0xffff, 0x0ca6, 0x0c95, 0x0003, 0x06dd, 0x0000, + 0x06e0, 0x0001, 0x0000, 0x2143, 0x0002, 0x06e3, 0x06eb, 0x0006, + 0x0059, 0x0cb8, 0x0cb8, 0xffff, 0xffff, 0x0cb8, 0x0cb8, 0x0006, + // Entry 3EB80 - 3EBBF + 0x0059, 0x0cc0, 0x0cc0, 0xffff, 0xffff, 0x0cc0, 0x0cc0, 0x0003, + 0x06f7, 0x0000, 0x06fa, 0x0001, 0x0000, 0x2143, 0x0002, 0x06fd, + 0x0705, 0x0006, 0x0059, 0x0cb8, 0x0cb8, 0xffff, 0xffff, 0x0cb8, + 0x0cb8, 0x0006, 0x0059, 0x0cc0, 0x0cc0, 0xffff, 0xffff, 0x0cc0, + 0x0cc0, 0x0003, 0x0711, 0x0714, 0x0718, 0x0001, 0x0059, 0x0ccb, + 0x0002, 0x0059, 0xffff, 0x0cd3, 0x0002, 0x071b, 0x0723, 0x0006, + 0x0059, 0x0cff, 0x0ce3, 0xffff, 0xffff, 0x0cf1, 0x0cf1, 0x0006, + 0x0059, 0x0d1e, 0x0d0c, 0xffff, 0xffff, 0x0d1e, 0x0d31, 0x0003, + // Entry 3EBC0 - 3EBFF + 0x072f, 0x0000, 0x0732, 0x0001, 0x0041, 0x092f, 0x0002, 0x0735, + 0x073d, 0x0006, 0x0059, 0x0d42, 0x0d42, 0xffff, 0xffff, 0x0d42, + 0x0d42, 0x0006, 0x0059, 0x0d4c, 0x0d4c, 0xffff, 0xffff, 0x0d4c, + 0x0d4c, 0x0003, 0x0749, 0x0000, 0x074c, 0x0001, 0x0041, 0x092f, + 0x0002, 0x074f, 0x0757, 0x0006, 0x0059, 0x0d42, 0x0d42, 0xffff, + 0xffff, 0x0d42, 0x0d42, 0x0006, 0x0059, 0x0d4c, 0x0d4c, 0xffff, + 0xffff, 0x0d4c, 0x0d4c, 0x0003, 0x0763, 0x0766, 0x076a, 0x0001, + 0x000d, 0x0c7f, 0x0002, 0x0050, 0xffff, 0x0edb, 0x0002, 0x076d, + // Entry 3EC00 - 3EC3F + 0x0775, 0x0006, 0x0059, 0x0d75, 0x0d59, 0xffff, 0xffff, 0x0d67, + 0x0d67, 0x0006, 0x0059, 0x0d95, 0x0d83, 0xffff, 0xffff, 0x0d95, + 0x0da8, 0x0003, 0x0781, 0x0000, 0x0784, 0x0001, 0x0000, 0x2002, + 0x0002, 0x0787, 0x078f, 0x0006, 0x0059, 0x0db9, 0x0db9, 0xffff, + 0xffff, 0x0db9, 0x0db9, 0x0006, 0x0059, 0x0dc1, 0x0dc1, 0xffff, + 0xffff, 0x0dc1, 0x0dc1, 0x0003, 0x079b, 0x0000, 0x079e, 0x0001, + 0x0000, 0x2002, 0x0002, 0x07a1, 0x07a9, 0x0006, 0x0059, 0x0db9, + 0x0db9, 0xffff, 0xffff, 0x0db9, 0x0db9, 0x0006, 0x0059, 0x0dc1, + // Entry 3EC40 - 3EC7F + 0x0dc1, 0xffff, 0xffff, 0x0dc1, 0x0dc1, 0x0001, 0x07b3, 0x0001, + 0x0013, 0x0fe2, 0x0004, 0x07bb, 0x07c0, 0x07c5, 0x07d4, 0x0003, + 0x0000, 0x1dc7, 0x3839, 0x3a93, 0x0003, 0x0059, 0x0dcc, 0x0de0, + 0x0de9, 0x0002, 0x0000, 0x07c8, 0x0003, 0x0000, 0x07cf, 0x07cc, + 0x0001, 0x0059, 0x0df2, 0x0003, 0x0059, 0xffff, 0x0e0e, 0x0e23, + 0x0002, 0x099d, 0x07d7, 0x0003, 0x0871, 0x0907, 0x07db, 0x0094, + 0x0059, 0x0e3c, 0x0e4b, 0x0e5f, 0x0e75, 0x0e9c, 0x0eea, 0x0f2e, + 0x0f82, 0x0ff6, 0x1067, 0x10d7, 0x113f, 0x1181, 0x11bf, 0x1201, + // Entry 3EC80 - 3ECBF + 0x1252, 0x12a7, 0x12ea, 0x1337, 0x139a, 0x1409, 0x1467, 0x14c1, + 0x150f, 0x1553, 0x158f, 0x159f, 0x15c1, 0x15f5, 0x1616, 0x164c, + 0x167b, 0x16bf, 0x16fd, 0x1741, 0x177d, 0x1797, 0x17c3, 0x1814, + 0x1869, 0x189b, 0x18b2, 0x18d4, 0x1908, 0x1956, 0x197d, 0x19d2, + 0x1a14, 0x1a37, 0x1a89, 0x1ad2, 0x1b08, 0x1b22, 0x1b58, 0x1b69, + 0x1b8a, 0x1bbe, 0x1bda, 0x1c03, 0x1c58, 0x1c96, 0x1cbb, 0x1ce2, + 0x1d37, 0x1d7c, 0x1dae, 0x1dbc, 0x1dd2, 0x1de4, 0x1dfb, 0x1e14, + 0x1e3a, 0x1e79, 0x1ebb, 0x1efe, 0x1f4f, 0x1fa5, 0x1fc1, 0x1fec, + // Entry 3ECC0 - 3ECFF + 0x2020, 0x2043, 0x207d, 0x208d, 0x20c1, 0x2105, 0x212d, 0x2163, + 0x2175, 0x2185, 0x2195, 0x21c5, 0x21ff, 0x2235, 0x22a0, 0x22fe, + 0x234a, 0x237e, 0x238f, 0x239e, 0x23c2, 0x2415, 0x2469, 0x24a9, + 0x24b8, 0x24ed, 0x255e, 0x25a4, 0x25e2, 0x261a, 0x2629, 0x2653, + 0x269b, 0x26e0, 0x2716, 0x274a, 0x2790, 0x27ad, 0x27bc, 0x27d0, + 0x27e2, 0x280c, 0x2853, 0x2894, 0x28c6, 0x28d7, 0x28f6, 0x2914, + 0x2929, 0x293a, 0x294e, 0x296f, 0x29a7, 0x29b7, 0x29d7, 0x2a09, + 0x2a29, 0x2a5f, 0x2a7f, 0x2ac3, 0x2b03, 0x2b37, 0x2b5d, 0x2bac, + // Entry 3ED00 - 3ED3F + 0x2be6, 0x2bfa, 0x2c0c, 0x2c39, 0x2c81, 0x0094, 0x0059, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0e87, 0x0eda, 0x0f1e, 0x0f62, 0x0fd6, + 0x104a, 0x10b5, 0x112f, 0x1173, 0x11b1, 0x11ef, 0x1239, 0x1298, + 0x12d9, 0x1320, 0x1379, 0x13f0, 0x144f, 0x14ab, 0x1501, 0x153f, + 0xffff, 0xffff, 0x15b1, 0xffff, 0x1605, 0xffff, 0x166a, 0x16b1, + 0x16ef, 0x172d, 0xffff, 0xffff, 0x17b1, 0x17fb, 0x185a, 0xffff, + 0xffff, 0xffff, 0x18eb, 0xffff, 0x1968, 0x19bb, 0xffff, 0x1a21, + 0x1a77, 0x1ac1, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b7a, 0xffff, + // Entry 3ED40 - 3ED7F + 0xffff, 0x1bed, 0x1c43, 0xffff, 0xffff, 0x1cca, 0x1d26, 0x1d6d, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e2c, 0x1e6a, + 0x1eab, 0x1eef, 0x1f30, 0xffff, 0xffff, 0x1fdc, 0xffff, 0x2030, + 0xffff, 0xffff, 0x20a9, 0xffff, 0x211c, 0xffff, 0xffff, 0xffff, + 0xffff, 0x21b2, 0xffff, 0x2217, 0x2285, 0x22ea, 0x233a, 0xffff, + 0xffff, 0xffff, 0x23ad, 0x2400, 0x2453, 0xffff, 0xffff, 0x24c8, + 0x254b, 0x2598, 0x25d0, 0xffff, 0xffff, 0x2641, 0x268b, 0x26cf, + 0xffff, 0x2731, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27fa, + // Entry 3ED80 - 3EDBF + 0x2844, 0x2885, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x295d, 0xffff, 0xffff, 0x29c8, 0xffff, 0x2a18, 0xffff, + 0x2a6e, 0x2ab5, 0x2af3, 0xffff, 0x2b49, 0x2b99, 0xffff, 0xffff, + 0xffff, 0x2c2a, 0x2c6b, 0x0094, 0x0059, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0ebe, 0x0f07, 0x0f4b, 0x0faf, 0x1023, 0x1091, 0x1106, + 0x115c, 0x119c, 0x11da, 0x1220, 0x1278, 0x12c3, 0x1308, 0x135b, + 0x13c8, 0x142f, 0x148c, 0x14e4, 0x152a, 0x1574, 0xffff, 0xffff, + 0x15de, 0xffff, 0x1634, 0xffff, 0x1699, 0x16da, 0x1718, 0x1762, + // Entry 3EDC0 - 3EDFF + 0xffff, 0xffff, 0x17e2, 0x183a, 0x1885, 0xffff, 0xffff, 0xffff, + 0x1932, 0xffff, 0x199f, 0x19f6, 0xffff, 0x1a5a, 0x1aa8, 0x1af0, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1ba7, 0xffff, 0xffff, 0x1c26, + 0x1c7a, 0xffff, 0xffff, 0x1d07, 0x1d55, 0x1d98, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1e55, 0x1e95, 0x1ed8, 0x1f1a, + 0x1f7b, 0xffff, 0xffff, 0x2009, 0xffff, 0x2063, 0xffff, 0xffff, + 0x20e6, 0xffff, 0x214b, 0xffff, 0xffff, 0xffff, 0xffff, 0x21e5, + 0xffff, 0x2260, 0x22c8, 0x231f, 0x2367, 0xffff, 0xffff, 0xffff, + // Entry 3EE00 - 3EE3F + 0x23e4, 0x2437, 0x248c, 0xffff, 0xffff, 0x251f, 0x257e, 0x25bd, + 0x2601, 0xffff, 0xffff, 0x2672, 0x26b8, 0x26fe, 0xffff, 0x2770, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x282b, 0x286f, 0x28b0, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x298e, + 0xffff, 0xffff, 0x29f3, 0xffff, 0x2a47, 0xffff, 0x2a9d, 0x2ade, + 0x2b20, 0xffff, 0x2b7e, 0x2bcc, 0xffff, 0xffff, 0xffff, 0x2c55, + 0x2ca4, 0x0003, 0x09a1, 0x0a01, 0x09d1, 0x002e, 0x0013, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3EE40 - 3EE7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3EE80 - 3EEBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3EEC0 - 3EEFF + 0xffff, 0xffff, 0xffff, 0xffff, 0x1d03, 0x0003, 0x0004, 0x0268, + 0x075c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, + 0x0001, 0x0024, 0x0000, 0x0001, 0x005a, 0x0000, 0x0001, 0x0015, + 0x0000, 0x0001, 0x005a, 0x000d, 0x0004, 0x0035, 0x002f, 0x002c, + 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, + // Entry 3EF00 - 3EF3F + 0x00fd, 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, + 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, + 0x000b, 0x2c8f, 0x2c94, 0x2c99, 0x2c9e, 0x2383, 0x2388, 0x2ca2, + 0x238d, 0x2447, 0x2ca7, 0x2cac, 0x000d, 0x0000, 0xffff, 0x214a, + 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, + 0x1f98, 0x3a8f, 0x3a91, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, + 0x33c0, 0x3366, 0x33c6, 0x3192, 0x3198, 0x00ad, 0x33ca, 0x3384, + 0x33d4, 0x33dd, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0015, + // Entry 3EF40 - 3EF7F + 0xffff, 0x000b, 0x2c8f, 0x2c94, 0x2c99, 0x2cb1, 0x2383, 0x2388, + 0x2ca2, 0x238d, 0x2447, 0x2ca7, 0x2cac, 0x000d, 0x0000, 0xffff, + 0x214a, 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, + 0x2002, 0x1f98, 0x3a8f, 0x3a91, 0x000d, 0x000d, 0xffff, 0x0089, + 0x0090, 0x33c0, 0x3366, 0x33e6, 0x3192, 0x3198, 0x00ad, 0x33ca, + 0x3384, 0x33d4, 0x33dd, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, + 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0044, 0x0c33, 0x3111, + 0x3116, 0x311b, 0x3120, 0x3126, 0x312b, 0x0007, 0x0000, 0x3a8f, + // Entry 3EF80 - 3EFBF + 0x21ec, 0x2000, 0x2002, 0x21ee, 0x21ec, 0x2002, 0x0007, 0x0044, + 0x0c33, 0x3111, 0x3116, 0x311b, 0x3120, 0x3126, 0x312b, 0x0007, + 0x005a, 0x001d, 0x0025, 0x0030, 0x0036, 0x003c, 0x0045, 0x004b, + 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0044, + 0x0c33, 0x3111, 0x3116, 0x311b, 0x3120, 0x3126, 0x312b, 0x0007, + 0x0000, 0x3a8f, 0x21ec, 0x2000, 0x2002, 0x21ee, 0x21ec, 0x2002, + 0x0007, 0x0044, 0x0c33, 0x3111, 0x3116, 0x311b, 0x3120, 0x3126, + 0x312b, 0x0007, 0x005a, 0x001d, 0x0025, 0x0030, 0x0036, 0x003c, + // Entry 3EFC0 - 3EFFF + 0x0045, 0x004b, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, + 0x0112, 0x0005, 0x005a, 0xffff, 0x0052, 0x005b, 0x0064, 0x006d, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x005a, 0xffff, 0x0076, 0x0085, 0x0094, 0x00a3, 0x0003, 0x011d, + 0x0124, 0x012b, 0x0005, 0x005a, 0xffff, 0x0052, 0x005b, 0x0064, + 0x006d, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x005a, 0xffff, 0x0076, 0x0085, 0x0094, 0x00a3, 0x0002, + 0x0135, 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, + // Entry 3F000 - 3F03F + 0x014c, 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, + 0x0001, 0x005a, 0x00b2, 0x0001, 0x0013, 0x061b, 0x0001, 0x005a, + 0x00b9, 0x0001, 0x002f, 0x004f, 0x0001, 0x005a, 0x00c0, 0x0001, + 0x0013, 0x061b, 0x0001, 0x002f, 0x004f, 0x0001, 0x005a, 0x00c6, + 0x0001, 0x005a, 0x00cd, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, + 0x017a, 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x005a, 0x00d2, + 0x0001, 0x0000, 0x3a91, 0x0001, 0x005a, 0x00d8, 0x0001, 0x0000, + 0x21ec, 0x0001, 0x005a, 0x00de, 0x0001, 0x0000, 0x3a91, 0x0001, + // Entry 3F040 - 3F07F + 0x0000, 0x21ec, 0x0001, 0x005a, 0x00e1, 0x0001, 0x0013, 0x058a, + 0x0009, 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, + 0x0193, 0x019c, 0x0001, 0x005a, 0x00e4, 0x0001, 0x0013, 0x061b, + 0x0001, 0x005a, 0x00ee, 0x0001, 0x002f, 0x004f, 0x0001, 0x005a, + 0x00f6, 0x0001, 0x005a, 0x00fe, 0x0001, 0x005a, 0x0107, 0x0001, + 0x005a, 0x0110, 0x0001, 0x005a, 0x0118, 0x0003, 0x01ac, 0x01d1, + 0x01f6, 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, + 0x01ce, 0x01bc, 0x01c5, 0x0001, 0x0059, 0x012b, 0x0001, 0x0013, + // Entry 3F080 - 3F0BF + 0x061b, 0x0001, 0x005a, 0x0120, 0x0001, 0x002f, 0x004f, 0x0001, + 0x005a, 0x0126, 0x0001, 0x0013, 0x061b, 0x0001, 0x002f, 0x004f, + 0x0001, 0x005a, 0x00c6, 0x0001, 0x005a, 0x00cd, 0x0009, 0x01de, + 0x01e4, 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, + 0x0001, 0x005a, 0x00d2, 0x0001, 0x0000, 0x3a91, 0x0001, 0x005a, + 0x00d8, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0000, 0x214a, 0x0001, + 0x0000, 0x3a91, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0000, 0x1f94, + 0x0001, 0x0000, 0x3a8f, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, + // Entry 3F0C0 - 3F0FF + 0x0212, 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x005a, 0x012b, + 0x0001, 0x005a, 0x0133, 0x0001, 0x005a, 0x013c, 0x0001, 0x005a, + 0x0143, 0x0001, 0x0050, 0x0825, 0x0001, 0x005a, 0x0133, 0x0001, + 0x005a, 0x0143, 0x0001, 0x0013, 0x0671, 0x0001, 0x005a, 0x00cd, + 0x0003, 0x022a, 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, + 0x005a, 0x014c, 0x0170, 0x0002, 0x005a, 0x015b, 0x017c, 0x0002, + 0x022d, 0x0231, 0x0002, 0x002e, 0x0198, 0x38bd, 0x0002, 0x005a, + 0x018e, 0x019a, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, + // Entry 3F100 - 3F13F + 0x005a, 0x01a5, 0x0001, 0x005a, 0x01b6, 0x0001, 0x0015, 0x0207, + 0x0001, 0x005a, 0x01c1, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0265, 0x025f, 0x025c, + 0x0262, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, + 0x0000, 0x02ae, 0x02cb, 0x02e3, 0x02fb, 0x0318, 0x0335, 0x0352, + 0x036f, 0x0387, 0x039f, 0x03c0, 0x03dc, 0x0000, 0x0000, 0x0000, + // Entry 3F140 - 3F17F + 0x03f8, 0x0417, 0x042f, 0x0000, 0x0000, 0x0000, 0x0447, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x044c, 0x0466, 0x0480, 0x049a, + 0x04b4, 0x04ce, 0x04e8, 0x0502, 0x051c, 0x0536, 0x0550, 0x056a, + 0x0584, 0x059e, 0x05b8, 0x05d2, 0x05ec, 0x0606, 0x0620, 0x063a, + 0x0654, 0x0000, 0x066e, 0x0000, 0x0673, 0x068f, 0x06a7, 0x06bf, + 0x06db, 0x06f3, 0x070b, 0x0727, 0x073f, 0x0757, 0x0001, 0x02ab, + 0x0001, 0x002f, 0x00f7, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, + 0x005a, 0x01cb, 0x0003, 0x005a, 0x01d0, 0x01d5, 0x01db, 0x0002, + // Entry 3F180 - 3F1BF + 0x02bd, 0x02c4, 0x0005, 0x005a, 0x0214, 0x01ea, 0xffff, 0x01f8, + 0x0206, 0x0005, 0x005a, 0x0240, 0x0221, 0xffff, 0x0230, 0x0240, + 0x0003, 0x02cf, 0x0000, 0x02d2, 0x0001, 0x005a, 0x01cb, 0x0002, + 0x02d5, 0x02dc, 0x0005, 0x005a, 0x0214, 0x01ea, 0xffff, 0x01f8, + 0x0206, 0x0005, 0x005a, 0x0240, 0x0221, 0xffff, 0x0230, 0x0240, + 0x0003, 0x02e7, 0x0000, 0x02ea, 0x0001, 0x005a, 0x01cb, 0x0002, + 0x02ed, 0x02f4, 0x0005, 0x005a, 0x0214, 0x01ea, 0xffff, 0x01f8, + 0x0206, 0x0005, 0x005a, 0x0240, 0x0221, 0xffff, 0x0230, 0x0240, + // Entry 3F1C0 - 3F1FF + 0x0003, 0x02ff, 0x0302, 0x0307, 0x0001, 0x005a, 0x024e, 0x0003, + 0x005a, 0x025a, 0x026d, 0x027c, 0x0002, 0x030a, 0x0311, 0x0005, + 0x005a, 0x02d1, 0x0292, 0xffff, 0x02a7, 0x02bc, 0x0005, 0x005a, + 0x0313, 0x02e6, 0xffff, 0x02fc, 0x0313, 0x0003, 0x031c, 0x031f, + 0x0324, 0x0001, 0x005a, 0x0328, 0x0003, 0x005a, 0x025a, 0x026d, + 0x027c, 0x0002, 0x0327, 0x032e, 0x0005, 0x005a, 0x0331, 0x0331, + 0xffff, 0x0331, 0x0331, 0x0005, 0x005a, 0x0343, 0x0343, 0xffff, + 0x0343, 0x0343, 0x0003, 0x0339, 0x033c, 0x0341, 0x0001, 0x005a, + // Entry 3F200 - 3F23F + 0x0355, 0x0003, 0x005a, 0x025a, 0x026d, 0x027c, 0x0002, 0x0344, + 0x034b, 0x0005, 0x005a, 0x035c, 0x035c, 0xffff, 0x035c, 0x035c, + 0x0005, 0x005a, 0x036c, 0x036c, 0xffff, 0x036c, 0x036c, 0x0003, + 0x0356, 0x0359, 0x035e, 0x0001, 0x005a, 0x037c, 0x0003, 0x005a, + 0x0382, 0x0392, 0x039b, 0x0002, 0x0361, 0x0368, 0x0005, 0x005a, + 0x03da, 0x03ab, 0xffff, 0x03ba, 0x03ca, 0x0005, 0x005a, 0x040e, + 0x03eb, 0xffff, 0x03fc, 0x040e, 0x0003, 0x0373, 0x0000, 0x0376, + 0x0001, 0x0059, 0x03eb, 0x0002, 0x0379, 0x0380, 0x0005, 0x005a, + // Entry 3F240 - 3F27F + 0x041e, 0x041e, 0xffff, 0x041e, 0x03ca, 0x0005, 0x0059, 0x03fb, + 0x03fb, 0xffff, 0x03fb, 0x03fb, 0x0003, 0x038b, 0x0000, 0x038e, + 0x0001, 0x0059, 0x03eb, 0x0002, 0x0391, 0x0398, 0x0005, 0x005a, + 0x041e, 0x041e, 0xffff, 0x041e, 0x041e, 0x0005, 0x0059, 0x03fb, + 0x03fb, 0xffff, 0x03fb, 0x03fb, 0x0004, 0x03a4, 0x03a7, 0x03ac, + 0x03bd, 0x0001, 0x005a, 0x042c, 0x0003, 0x005a, 0x0432, 0x0442, + 0x044b, 0x0002, 0x03af, 0x03b6, 0x0005, 0x005a, 0x0488, 0x045b, + 0xffff, 0x046a, 0x0479, 0x0005, 0x005a, 0x04b9, 0x0498, 0xffff, + // Entry 3F280 - 3F2BF + 0x04a8, 0x04b9, 0x0001, 0x005a, 0x04c8, 0x0004, 0x03c5, 0x0000, + 0x03c8, 0x03d9, 0x0001, 0x005a, 0x04d4, 0x0002, 0x03cb, 0x03d2, + 0x0005, 0x005a, 0x04d9, 0x04d9, 0xffff, 0x04d9, 0x04d9, 0x0005, + 0x005a, 0x04e7, 0x04e7, 0xffff, 0x04e7, 0x04e7, 0x0001, 0x005a, + 0x04c8, 0x0004, 0x03e1, 0x0000, 0x03e4, 0x03f5, 0x0001, 0x005a, + 0x04d4, 0x0002, 0x03e7, 0x03ee, 0x0005, 0x005a, 0x04d9, 0x04d9, + 0xffff, 0x04d9, 0x04d9, 0x0005, 0x005a, 0x04e7, 0x04e7, 0xffff, + 0x04e7, 0x04e7, 0x0001, 0x005a, 0x04c8, 0x0003, 0x03fc, 0x03ff, + // Entry 3F2C0 - 3F2FF + 0x0406, 0x0001, 0x000d, 0x05d4, 0x0005, 0x005a, 0x0507, 0x050f, + 0x0515, 0x04f5, 0x051b, 0x0002, 0x0409, 0x0410, 0x0005, 0x005a, + 0x0545, 0x0529, 0xffff, 0x0536, 0x0545, 0x0005, 0x005a, 0x0573, + 0x0552, 0xffff, 0x0562, 0x0573, 0x0003, 0x041b, 0x0000, 0x041e, + 0x0001, 0x000d, 0x05d4, 0x0002, 0x0421, 0x0428, 0x0005, 0x005a, + 0x0545, 0x0529, 0xffff, 0x0536, 0x0545, 0x0005, 0x005a, 0x0573, + 0x0552, 0xffff, 0x0562, 0x0573, 0x0003, 0x0433, 0x0000, 0x0436, + 0x0001, 0x000d, 0x05d4, 0x0002, 0x0439, 0x0440, 0x0005, 0x005a, + // Entry 3F300 - 3F33F + 0x0545, 0x0529, 0xffff, 0x0536, 0x0545, 0x0005, 0x005a, 0x0573, + 0x0552, 0xffff, 0x0562, 0x0573, 0x0001, 0x0449, 0x0001, 0x005a, + 0x0582, 0x0003, 0x0000, 0x0450, 0x0455, 0x0003, 0x005a, 0x058e, + 0x05a0, 0x05ab, 0x0002, 0x0458, 0x045f, 0x0005, 0x005a, 0x05f0, + 0x05bd, 0xffff, 0x05ce, 0x05df, 0x0005, 0x005a, 0x0624, 0x0600, + 0xffff, 0x0611, 0x0624, 0x0003, 0x0000, 0x046a, 0x046f, 0x0003, + 0x005a, 0x0637, 0x0646, 0x064e, 0x0002, 0x0472, 0x0479, 0x0005, + 0x005a, 0x05f0, 0x05bd, 0xffff, 0x05ce, 0x05df, 0x0005, 0x005a, + // Entry 3F340 - 3F37F + 0x0624, 0x0600, 0xffff, 0x0611, 0x0624, 0x0003, 0x0000, 0x0484, + 0x0489, 0x0003, 0x005a, 0x065d, 0x0646, 0x066a, 0x0002, 0x048c, + 0x0493, 0x0005, 0x005a, 0x05f0, 0x05bd, 0xffff, 0x05ce, 0x05df, + 0x0005, 0x005a, 0x0624, 0x0600, 0xffff, 0x0611, 0x0624, 0x0003, + 0x0000, 0x049e, 0x04a3, 0x0003, 0x005a, 0x0675, 0x068a, 0x0698, + 0x0002, 0x04a6, 0x04ad, 0x0005, 0x005a, 0x06e9, 0x06ad, 0xffff, + 0x06c1, 0x06d5, 0x0005, 0x005a, 0x0729, 0x06fe, 0xffff, 0x0713, + 0x0729, 0x0003, 0x0000, 0x04b8, 0x04bd, 0x0003, 0x005a, 0x073d, + // Entry 3F380 - 3F3BF + 0x074c, 0x0754, 0x0002, 0x04c0, 0x04c7, 0x0005, 0x005a, 0x06e9, + 0x06ad, 0xffff, 0x06c1, 0x06d5, 0x0005, 0x005a, 0x0729, 0x06fe, + 0xffff, 0x0713, 0x0729, 0x0003, 0x0000, 0x04d2, 0x04d7, 0x0003, + 0x005a, 0x0763, 0x074c, 0x0770, 0x0002, 0x04da, 0x04e1, 0x0005, + 0x005a, 0x06e9, 0x06ad, 0xffff, 0x06c1, 0x06d5, 0x0005, 0x005a, + 0x0729, 0x06fe, 0xffff, 0x0713, 0x0729, 0x0003, 0x0000, 0x04ec, + 0x04f1, 0x0003, 0x005a, 0x077b, 0x078b, 0x0794, 0x0002, 0x04f4, + 0x04fb, 0x0005, 0x005a, 0x07d1, 0x07a4, 0xffff, 0x07b3, 0x07c2, + // Entry 3F3C0 - 3F3FF + 0x0005, 0x005a, 0x0802, 0x07e1, 0xffff, 0x07f1, 0x0802, 0x0003, + 0x0000, 0x0506, 0x050b, 0x0003, 0x005a, 0x0811, 0x0820, 0x0828, + 0x0002, 0x050e, 0x0515, 0x0005, 0x005a, 0x07d1, 0x07a4, 0xffff, + 0x07b3, 0x07c2, 0x0005, 0x005a, 0x0802, 0x07e1, 0xffff, 0x07f1, + 0x0802, 0x0003, 0x0000, 0x0520, 0x0525, 0x0003, 0x005a, 0x0837, + 0x0820, 0x0844, 0x0002, 0x0528, 0x052f, 0x0005, 0x005a, 0x07d1, + 0x07a4, 0xffff, 0x07b3, 0x07c2, 0x0005, 0x005a, 0x0802, 0x07e1, + 0xffff, 0x07f1, 0x0802, 0x0003, 0x0000, 0x053a, 0x053f, 0x0003, + // Entry 3F400 - 3F43F + 0x005a, 0x084f, 0x085f, 0x0868, 0x0002, 0x0542, 0x0549, 0x0005, + 0x005a, 0x08a5, 0x0878, 0xffff, 0x0887, 0x0896, 0x0005, 0x005a, + 0x08d3, 0x08b3, 0xffff, 0x08c2, 0x08d3, 0x0003, 0x0000, 0x0554, + 0x0559, 0x0003, 0x005a, 0x08e4, 0x08f3, 0x08fb, 0x0002, 0x055c, + 0x0563, 0x0005, 0x005a, 0x08a5, 0x0878, 0xffff, 0x0887, 0x0896, + 0x0005, 0x005a, 0x08d3, 0x08b3, 0xffff, 0x08c2, 0x08d3, 0x0003, + 0x0000, 0x056e, 0x0573, 0x0003, 0x005a, 0x090a, 0x08f3, 0x0917, + 0x0002, 0x0576, 0x057d, 0x0005, 0x005a, 0x08a5, 0x0878, 0xffff, + // Entry 3F440 - 3F47F + 0x0887, 0x0896, 0x0005, 0x005a, 0x08d3, 0x08b3, 0xffff, 0x08c2, + 0x08d3, 0x0003, 0x0000, 0x0588, 0x058d, 0x0003, 0x005a, 0x0922, + 0x0935, 0x0941, 0x0002, 0x0590, 0x0597, 0x0005, 0x005a, 0x098a, + 0x0954, 0xffff, 0x0966, 0x0978, 0x0005, 0x005a, 0x09c4, 0x099d, + 0xffff, 0x09b0, 0x09c4, 0x0003, 0x0000, 0x05a2, 0x05a7, 0x0003, + 0x005a, 0x09d6, 0x09e6, 0x09ef, 0x0002, 0x05aa, 0x05b1, 0x0005, + 0x005a, 0x098a, 0x0954, 0xffff, 0x0966, 0x0978, 0x0005, 0x005a, + 0x09c4, 0x099d, 0xffff, 0x09b0, 0x09c4, 0x0003, 0x0000, 0x05bc, + // Entry 3F480 - 3F4BF + 0x05c1, 0x0003, 0x005a, 0x09ff, 0x09e6, 0x0a0d, 0x0002, 0x05c4, + 0x05cb, 0x0005, 0x005a, 0x098a, 0x0954, 0xffff, 0x0966, 0x0978, + 0x0005, 0x005a, 0x09c4, 0x099d, 0xffff, 0x09b0, 0x09c4, 0x0003, + 0x0000, 0x05d6, 0x05db, 0x0003, 0x005a, 0x0a19, 0x0a29, 0x0a32, + 0x0002, 0x05de, 0x05e5, 0x0005, 0x005a, 0x0a6f, 0x0a42, 0xffff, + 0x0a51, 0x0a60, 0x0005, 0x005a, 0x0aa0, 0x0a7f, 0xffff, 0x0a8f, + 0x0aa0, 0x0003, 0x0000, 0x05f0, 0x05f5, 0x0003, 0x005a, 0x0aaf, + 0x0abe, 0x0ac6, 0x0002, 0x05f8, 0x05ff, 0x0005, 0x005a, 0x0a6f, + // Entry 3F4C0 - 3F4FF + 0x0a42, 0xffff, 0x0a51, 0x0a60, 0x0005, 0x005a, 0x0aa0, 0x0a7f, + 0xffff, 0x0a8f, 0x0aa0, 0x0003, 0x0000, 0x060a, 0x060f, 0x0003, + 0x005a, 0x0ad5, 0x0abe, 0x0ae2, 0x0002, 0x0612, 0x0619, 0x0005, + 0x005a, 0x0a6f, 0x0a42, 0xffff, 0x0a51, 0x0a60, 0x0005, 0x005a, + 0x0aa0, 0x0a7f, 0xffff, 0x0a8f, 0x0aa0, 0x0003, 0x0000, 0x0624, + 0x0629, 0x0003, 0x005a, 0x0aed, 0x0afe, 0x0b08, 0x0002, 0x062c, + 0x0633, 0x0005, 0x005a, 0x0b49, 0x0b19, 0xffff, 0x0b29, 0x0b39, + 0x0005, 0x005a, 0x0b7a, 0x0b58, 0xffff, 0x0b68, 0x0b7a, 0x0003, + // Entry 3F500 - 3F53F + 0x0000, 0x063e, 0x0643, 0x0003, 0x005a, 0x0b8c, 0x0b9b, 0x0ba3, + 0x0002, 0x0646, 0x064d, 0x0005, 0x005a, 0x0b49, 0x0b19, 0xffff, + 0x0b29, 0x0b39, 0x0005, 0x005a, 0x0b7a, 0x0b58, 0xffff, 0x0b68, + 0x0b7a, 0x0003, 0x0000, 0x0658, 0x065d, 0x0003, 0x005a, 0x0bb2, + 0x0b9b, 0x0bbf, 0x0002, 0x0660, 0x0667, 0x0005, 0x005a, 0x0b49, + 0x0b19, 0xffff, 0x0b29, 0x0b39, 0x0005, 0x005a, 0x0b7a, 0x0b58, + 0xffff, 0x0b68, 0x0b7a, 0x0001, 0x0670, 0x0001, 0x005a, 0x0bca, + 0x0003, 0x0677, 0x067a, 0x067e, 0x0001, 0x0053, 0x0294, 0x0002, + // Entry 3F540 - 3F57F + 0x005a, 0xffff, 0x0bd2, 0x0002, 0x0681, 0x0688, 0x0005, 0x005a, + 0x0c03, 0x0bdc, 0xffff, 0x0be9, 0x0bf6, 0x0005, 0x005a, 0x0c2b, + 0x0c0f, 0xffff, 0x0c1c, 0x0c2b, 0x0003, 0x0693, 0x0000, 0x0696, + 0x0001, 0x0053, 0x0294, 0x0002, 0x0699, 0x06a0, 0x0005, 0x005a, + 0x0c03, 0x0bdc, 0xffff, 0x0be9, 0x0bf6, 0x0005, 0x005a, 0x0c2b, + 0x0c0f, 0xffff, 0x0c1c, 0x0c2b, 0x0003, 0x06ab, 0x0000, 0x06ae, + 0x0001, 0x0000, 0x2143, 0x0002, 0x06b1, 0x06b8, 0x0005, 0x005a, + 0x0c3a, 0x0c3a, 0xffff, 0x0c3a, 0x0c3a, 0x0005, 0x0059, 0x0cc0, + // Entry 3F580 - 3F5BF + 0x0cc0, 0xffff, 0x0cc0, 0x0cc0, 0x0003, 0x06c3, 0x06c6, 0x06ca, + 0x0001, 0x000d, 0x0bf5, 0x0002, 0x005a, 0xffff, 0x0c45, 0x0002, + 0x06cd, 0x06d4, 0x0005, 0x005a, 0x0c7f, 0x0c4f, 0xffff, 0x0c5f, + 0x0c6f, 0x0005, 0x005a, 0x0cb0, 0x0c8e, 0xffff, 0x0c9e, 0x0cb0, + 0x0003, 0x06df, 0x0000, 0x06e2, 0x0001, 0x0001, 0x075a, 0x0002, + 0x06e5, 0x06ec, 0x0005, 0x005a, 0x0cc2, 0x0cc2, 0xffff, 0x0cc2, + 0x0cc2, 0x0005, 0x005a, 0x0cd0, 0x0cd0, 0xffff, 0x0cd0, 0x0cd0, + 0x0003, 0x06f7, 0x0000, 0x06fa, 0x0001, 0x0041, 0x092f, 0x0002, + // Entry 3F5C0 - 3F5FF + 0x06fd, 0x0704, 0x0005, 0x005a, 0x0cde, 0x0cde, 0xffff, 0x0cde, + 0x0cde, 0x0005, 0x0059, 0x0d4c, 0x0d4c, 0xffff, 0x0d4c, 0x0d4c, + 0x0003, 0x070f, 0x0712, 0x0716, 0x0001, 0x000d, 0x0c7f, 0x0002, + 0x005a, 0xffff, 0x0ceb, 0x0002, 0x0719, 0x0720, 0x0005, 0x005a, + 0x0d23, 0x0cf0, 0xffff, 0x0d01, 0x0d12, 0x0005, 0x005a, 0x0d57, + 0x0d33, 0xffff, 0x0d44, 0x0d57, 0x0003, 0x072b, 0x0000, 0x072e, + 0x0001, 0x0001, 0x07d3, 0x0002, 0x0731, 0x0738, 0x0005, 0x005a, + 0x0d6a, 0x0d6a, 0xffff, 0x0d6a, 0x0d6a, 0x0005, 0x0059, 0x0dc1, + // Entry 3F600 - 3F63F + 0x0dc1, 0xffff, 0x0dc1, 0x0dc1, 0x0003, 0x0743, 0x0000, 0x0746, + 0x0001, 0x0000, 0x2002, 0x0002, 0x0749, 0x0750, 0x0005, 0x005a, + 0x0d6a, 0x0d6a, 0xffff, 0x0d6a, 0x0d6a, 0x0005, 0x0059, 0x0dc1, + 0x0dc1, 0xffff, 0x0dc1, 0x0dc1, 0x0001, 0x0759, 0x0001, 0x005a, + 0x0d75, 0x0004, 0x0761, 0x0766, 0x076b, 0x077a, 0x0003, 0x0008, + 0x1d98, 0x4f6a, 0x4f71, 0x0003, 0x005a, 0x0d82, 0x0d8b, 0x0d9c, + 0x0002, 0x0000, 0x076e, 0x0003, 0x0000, 0x0775, 0x0772, 0x0001, + 0x005a, 0x0db0, 0x0003, 0x005a, 0xffff, 0x0dce, 0x0de5, 0x0002, + // Entry 3F640 - 3F67F + 0x0000, 0x077d, 0x0003, 0x0817, 0x08ad, 0x0781, 0x0094, 0x005a, + 0x0dfb, 0x0e0e, 0x0e25, 0x0e3a, 0x0e63, 0x0eae, 0x0eec, 0x0f2c, + 0x0f6a, 0x0fa3, 0x0fde, 0x1020, 0x105c, 0x1092, 0x10d0, 0x111e, + 0x1171, 0x11af, 0x11fa, 0x1263, 0x12d2, 0x132d, 0x1385, 0x13cf, + 0x140e, 0x1445, 0x1453, 0x1472, 0x14a3, 0x14c2, 0x14f5, 0x151e, + 0x155c, 0x1597, 0x15d9, 0x1612, 0x1628, 0x164e, 0x1697, 0x16e7, + 0x1716, 0x1722, 0x173b, 0x1768, 0x17ab, 0x17d0, 0x1822, 0x185f, + 0x1891, 0x18e8, 0x193f, 0x1972, 0x198a, 0x19b0, 0x19c0, 0x19df, + // Entry 3F680 - 3F6BF + 0x1a10, 0x1a27, 0x1a58, 0x1ab3, 0x1af6, 0x1b0f, 0x1b35, 0x1b87, + 0x1bc9, 0x1bf6, 0x1c0f, 0x1c25, 0x1c37, 0x1c52, 0x1c6c, 0x1c93, + 0x1cce, 0x1d0c, 0x1d4b, 0x1d98, 0x1de7, 0x1e01, 0x1e29, 0x1e58, + 0x1e7a, 0x1eb1, 0x1ec5, 0x1ef1, 0x1f2e, 0x1f50, 0x1f83, 0x1f93, + 0x1fa2, 0x1fb7, 0x1fe0, 0x2015, 0x2040, 0x20a4, 0x20fb, 0x2141, + 0x2172, 0x2182, 0x2191, 0x21b5, 0x2207, 0x2255, 0x2292, 0x22a0, + 0x22d2, 0x232d, 0x236f, 0x23a9, 0x23de, 0x23ec, 0x240c, 0x244f, + 0x248e, 0x24c1, 0x24f5, 0x2546, 0x2557, 0x2565, 0x2577, 0x2587, + // Entry 3F6C0 - 3F6FF + 0x25a6, 0x25e7, 0x2625, 0x2656, 0x2666, 0x2682, 0x2699, 0x26af, + 0x26bf, 0x26cb, 0x26ea, 0x271b, 0x2730, 0x274f, 0x2780, 0x27a6, + 0x27e3, 0x2803, 0x2849, 0x2893, 0x28c8, 0x28ed, 0x293a, 0x2971, + 0x2980, 0x2990, 0x29b5, 0x29fa, 0x0094, 0x005a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0e4e, 0x0ea0, 0x0edd, 0x0f1d, 0x0f5d, 0x0f97, + 0x0fce, 0x1011, 0x1051, 0x1085, 0x10bf, 0x1105, 0x1163, 0x11a0, + 0x11e0, 0x1241, 0x12ba, 0x1315, 0x1370, 0x13c2, 0x13fc, 0xffff, + 0xffff, 0x1463, 0xffff, 0x14b2, 0xffff, 0x150f, 0x154f, 0x1589, + // Entry 3F700 - 3F73F + 0x15c6, 0xffff, 0xffff, 0x163d, 0x1683, 0x16d9, 0xffff, 0xffff, + 0xffff, 0x1750, 0xffff, 0x17bb, 0x180d, 0xffff, 0x187c, 0x18ce, + 0x192f, 0xffff, 0xffff, 0xffff, 0xffff, 0x19d0, 0xffff, 0xffff, + 0x1a40, 0x1a9b, 0xffff, 0xffff, 0x1b1e, 0x1b76, 0x1bbc, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c86, 0x1cc0, 0x1cfd, + 0x1d3d, 0x1d7a, 0xffff, 0xffff, 0x1e1b, 0xffff, 0x1e68, 0xffff, + 0xffff, 0x1edc, 0xffff, 0x1f40, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1fcf, 0xffff, 0x2024, 0x208b, 0x20e9, 0x2132, 0xffff, 0xffff, + // Entry 3F740 - 3F77F + 0xffff, 0x219f, 0x21f4, 0x2240, 0xffff, 0xffff, 0x22b7, 0x231b, + 0x2364, 0x2398, 0xffff, 0xffff, 0x23fb, 0x2441, 0x247e, 0xffff, + 0x24d6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2596, 0x25d9, + 0x2616, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x26db, 0xffff, 0xffff, 0x2740, 0xffff, 0x2791, 0xffff, 0x27f3, + 0x2836, 0x2882, 0xffff, 0x28d9, 0x2928, 0xffff, 0xffff, 0xffff, + 0x29a7, 0x29e4, 0x0094, 0x005a, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0e83, 0x0ec7, 0x0f06, 0x0f46, 0x0f82, 0x0fba, 0x0ff9, 0x103a, + // Entry 3F780 - 3F7BF + 0x1072, 0x10aa, 0x10ec, 0x1142, 0x118a, 0x11c9, 0x121f, 0x1290, + 0x12f5, 0x1350, 0x13a5, 0x13e7, 0x142b, 0xffff, 0xffff, 0x148c, + 0xffff, 0x14dd, 0xffff, 0x1538, 0x1574, 0x15b0, 0x15f7, 0xffff, + 0xffff, 0x166a, 0x16b6, 0x1700, 0xffff, 0xffff, 0xffff, 0x178b, + 0xffff, 0x17f0, 0x1842, 0xffff, 0x18b1, 0x190d, 0x195a, 0xffff, + 0xffff, 0xffff, 0xffff, 0x19f9, 0xffff, 0xffff, 0x1a7b, 0x1ad6, + 0xffff, 0xffff, 0x1b57, 0x1ba3, 0x1be1, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1cab, 0x1ce7, 0x1d26, 0x1d64, 0x1dc1, + // Entry 3F7C0 - 3F7FF + 0xffff, 0xffff, 0x1e42, 0xffff, 0x1e97, 0xffff, 0xffff, 0x1f11, + 0xffff, 0x1f6b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ffc, 0xffff, + 0x2067, 0x20c8, 0x2118, 0x215b, 0xffff, 0xffff, 0xffff, 0x21d6, + 0x2225, 0x2275, 0xffff, 0xffff, 0x22f8, 0x234a, 0x2385, 0x23c5, + 0xffff, 0xffff, 0x2428, 0x2468, 0x24a9, 0xffff, 0x251f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x25c1, 0x2600, 0x263f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2704, 0xffff, + 0xffff, 0x2769, 0xffff, 0x27c6, 0xffff, 0x281e, 0x2867, 0x28af, + // Entry 3F800 - 3F83F + 0xffff, 0x290c, 0x2957, 0xffff, 0xffff, 0xffff, 0x29ce, 0x2a1b, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0036, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0014, 0x0000, 0x0025, 0x0004, 0x0022, 0x001c, 0x0019, + 0x001f, 0x0001, 0x005b, 0x0000, 0x0001, 0x005b, 0x0011, 0x0001, + 0x0008, 0x0627, 0x0001, 0x0008, 0x062f, 0x0004, 0x0033, 0x002d, + 0x002a, 0x0030, 0x0001, 0x005b, 0x001d, 0x0001, 0x005b, 0x001d, + 0x0001, 0x005b, 0x001d, 0x0001, 0x0000, 0x03c6, 0x0008, 0x003f, + // Entry 3F840 - 3F87F + 0x00a4, 0x00fb, 0x0130, 0x0171, 0x018b, 0x019c, 0x01ad, 0x0002, + 0x0042, 0x0073, 0x0003, 0x0046, 0x0055, 0x0064, 0x000d, 0x005b, + 0xffff, 0x002b, 0x0031, 0x0038, 0x0041, 0x004a, 0x0050, 0x0055, + 0x005c, 0x0062, 0x006b, 0x0074, 0x007c, 0x000d, 0x0017, 0xffff, + 0x29ab, 0x29b9, 0x29c3, 0x29c6, 0x29c8, 0x29b9, 0x29bb, 0x29bf, + 0x29ca, 0x29cd, 0x29bb, 0x29cf, 0x000d, 0x005b, 0xffff, 0x0084, + 0x0096, 0x00a4, 0x00b4, 0x00c4, 0x00d1, 0x00dd, 0x00eb, 0x00f8, + 0x0108, 0x0118, 0x0127, 0x0003, 0x0077, 0x0086, 0x0095, 0x000d, + // Entry 3F880 - 3F8BF + 0x005b, 0xffff, 0x002b, 0x0031, 0x0038, 0x0041, 0x004a, 0x0050, + 0x0055, 0x005c, 0x0062, 0x006b, 0x0074, 0x007c, 0x000d, 0x0017, + 0xffff, 0x29ab, 0x29b9, 0x29c3, 0x29c6, 0x29c8, 0x29b9, 0x29bb, + 0x29bf, 0x29ca, 0x29cd, 0x29bb, 0x29cf, 0x000d, 0x005b, 0xffff, + 0x0084, 0x0096, 0x00a4, 0x00b4, 0x00c4, 0x00d1, 0x00dd, 0x00eb, + 0x00f8, 0x0108, 0x0118, 0x0127, 0x0002, 0x00a7, 0x00d1, 0x0005, + 0x00ad, 0x00b6, 0x00c8, 0x0000, 0x00bf, 0x0007, 0x005b, 0x0136, + 0x013a, 0x013e, 0x0142, 0x0146, 0x014a, 0x014f, 0x0007, 0x0000, + // Entry 3F8C0 - 3F8FF + 0x21ec, 0x3a97, 0x3a99, 0x3a9b, 0x3a9d, 0x3a97, 0x3a9f, 0x0007, + 0x005b, 0x0154, 0x0157, 0x015a, 0x015d, 0x0160, 0x0163, 0x0167, + 0x0007, 0x005b, 0x016b, 0x0176, 0x0182, 0x018e, 0x0196, 0x01a1, + 0x01af, 0x0005, 0x00d7, 0x00e0, 0x00f2, 0x0000, 0x00e9, 0x0007, + 0x005b, 0x0136, 0x013a, 0x013e, 0x0142, 0x0146, 0x014a, 0x014f, + 0x0007, 0x0017, 0x29bb, 0x29d1, 0x29d3, 0x29d5, 0x29d3, 0x29a5, + 0x29bb, 0x0007, 0x005b, 0x0154, 0x0157, 0x015a, 0x015d, 0x0160, + 0x0163, 0x0167, 0x0007, 0x005b, 0x01b9, 0x01c3, 0x01ce, 0x01d9, + // Entry 3F900 - 3F93F + 0x01e2, 0x01ee, 0x01fb, 0x0002, 0x00fe, 0x0117, 0x0003, 0x0102, + 0x0109, 0x0110, 0x0005, 0x005b, 0xffff, 0x0206, 0x0211, 0x021c, + 0x0227, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x005b, 0xffff, 0x0232, 0x0242, 0x0252, 0x0262, 0x0003, + 0x011b, 0x0122, 0x0129, 0x0005, 0x005b, 0xffff, 0x0206, 0x0211, + 0x021c, 0x0227, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x005b, 0xffff, 0x0232, 0x0242, 0x0252, 0x0262, + 0x0002, 0x0133, 0x0152, 0x0003, 0x0137, 0x0140, 0x0149, 0x0002, + // Entry 3F940 - 3F97F + 0x013a, 0x013d, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, 0x0272, + 0x0002, 0x0143, 0x0146, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, + 0x0272, 0x0002, 0x014c, 0x014f, 0x0001, 0x0022, 0x05cb, 0x0001, + 0x005b, 0x0272, 0x0003, 0x0156, 0x015f, 0x0168, 0x0002, 0x0159, + 0x015c, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, 0x0272, 0x0002, + 0x0162, 0x0165, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, 0x0272, + 0x0002, 0x016b, 0x016e, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, + 0x0272, 0x0003, 0x0180, 0x0000, 0x0175, 0x0002, 0x0178, 0x017c, + // Entry 3F980 - 3F9BF + 0x0002, 0x005b, 0x0276, 0x02ac, 0x0002, 0x005b, 0x028d, 0x02c3, + 0x0002, 0x0183, 0x0187, 0x0002, 0x005b, 0x02e2, 0x02ee, 0x0002, + 0x005b, 0x02e7, 0x02f3, 0x0004, 0x0199, 0x0193, 0x0190, 0x0196, + 0x0001, 0x005b, 0x02fa, 0x0001, 0x005b, 0x030a, 0x0001, 0x005b, + 0x0314, 0x0001, 0x0017, 0x03cc, 0x0004, 0x01aa, 0x01a4, 0x01a1, + 0x01a7, 0x0001, 0x001c, 0x045a, 0x0001, 0x001c, 0x0467, 0x0001, + 0x001c, 0x0471, 0x0001, 0x001c, 0x0479, 0x0004, 0x01bb, 0x01b5, + 0x01b2, 0x01b8, 0x0001, 0x005b, 0x001d, 0x0001, 0x005b, 0x001d, + // Entry 3F9C0 - 3F9FF + 0x0001, 0x005b, 0x001d, 0x0001, 0x0000, 0x03c6, 0x0002, 0x0003, + 0x01ba, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000c, 0x0037, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0015, 0x0000, 0x0026, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, + 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0034, 0x002e, 0x002b, + 0x0031, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0040, 0x00a5, + // Entry 3FA00 - 3FA3F + 0x00fc, 0x0131, 0x0172, 0x0187, 0x0198, 0x01a9, 0x0002, 0x0043, + 0x0074, 0x0003, 0x0047, 0x0056, 0x0065, 0x000d, 0x005b, 0xffff, + 0x031d, 0x0321, 0x0325, 0x0329, 0x032d, 0x0331, 0x0335, 0x0339, + 0x033d, 0x0341, 0x0345, 0x0349, 0x000d, 0x0017, 0xffff, 0x29b1, + 0x29d7, 0x29d7, 0x29d7, 0x29c6, 0x29c6, 0x29c6, 0x29b1, 0x29d9, + 0x29d9, 0x29d1, 0x29db, 0x000d, 0x005b, 0xffff, 0x034d, 0x0353, + 0x035b, 0x0362, 0x036b, 0x0374, 0x037c, 0x0387, 0x0393, 0x039b, + 0x03a4, 0x03ab, 0x0003, 0x0078, 0x0087, 0x0096, 0x000d, 0x005b, + // Entry 3FA40 - 3FA7F + 0xffff, 0x031d, 0x0321, 0x0325, 0x0329, 0x032d, 0x0331, 0x0335, + 0x0339, 0x033d, 0x0341, 0x0345, 0x0349, 0x000d, 0x0017, 0xffff, + 0x29b1, 0x29d7, 0x29d7, 0x29d7, 0x29c6, 0x29c6, 0x29c6, 0x29b1, + 0x29d9, 0x29d9, 0x29d1, 0x29db, 0x000d, 0x005b, 0xffff, 0x034d, + 0x0353, 0x035b, 0x0362, 0x036b, 0x0374, 0x037c, 0x0387, 0x0393, + 0x039b, 0x03a4, 0x03ab, 0x0002, 0x00a8, 0x00d2, 0x0005, 0x00ae, + 0x00b7, 0x00c9, 0x0000, 0x00c0, 0x0007, 0x005b, 0x03b1, 0x03b5, + 0x03b9, 0x03bd, 0x03c1, 0x03c5, 0x03c9, 0x0007, 0x0017, 0x29bb, + // Entry 3FA80 - 3FABF + 0x29d1, 0x29c6, 0x29c6, 0x29c6, 0x29c6, 0x29d1, 0x0007, 0x0044, + 0x063b, 0x3130, 0x3133, 0x3136, 0x3139, 0x313c, 0x313f, 0x0007, + 0x005b, 0x03cd, 0x03d4, 0x03dc, 0x03e4, 0x03ec, 0x03f2, 0x03fb, + 0x0005, 0x00d8, 0x00e1, 0x00f3, 0x0000, 0x00ea, 0x0007, 0x005b, + 0x03b1, 0x03b5, 0x03b9, 0x03bd, 0x03c1, 0x03c5, 0x03c9, 0x0007, + 0x0017, 0x29bb, 0x29d1, 0x29c6, 0x29c6, 0x29c6, 0x29c6, 0x29d1, + 0x0007, 0x0044, 0x063b, 0x3130, 0x3133, 0x3136, 0x3139, 0x313c, + 0x313f, 0x0007, 0x005b, 0x03cd, 0x03d4, 0x03dc, 0x03e4, 0x03ec, + // Entry 3FAC0 - 3FAFF + 0x03f2, 0x03fb, 0x0002, 0x00ff, 0x0118, 0x0003, 0x0103, 0x010a, + 0x0111, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x004c, 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x00eb, 0x0003, 0x011c, + 0x0123, 0x012a, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, + 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x004c, 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x00eb, 0x0002, + 0x0134, 0x0153, 0x0003, 0x0138, 0x0141, 0x014a, 0x0002, 0x013b, + // Entry 3FB00 - 3FB3F + 0x013e, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, + 0x0144, 0x0147, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, + 0x0002, 0x014d, 0x0150, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0003, 0x0157, 0x0160, 0x0169, 0x0002, 0x015a, 0x015d, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x0163, + 0x0166, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, + 0x016c, 0x016f, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + 0x0003, 0x017c, 0x0000, 0x0176, 0x0001, 0x0178, 0x0002, 0x005b, + // Entry 3FB40 - 3FB7F + 0x0404, 0x0416, 0x0002, 0x017f, 0x0183, 0x0002, 0x0009, 0x0078, + 0x549d, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0195, 0x018f, + 0x018c, 0x0192, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, + 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x01a6, + 0x01a0, 0x019d, 0x01a3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x01b7, 0x01b1, 0x01ae, 0x01b4, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + // Entry 3FB80 - 3FBBF + 0x0040, 0x01fb, 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0205, 0x0000, 0x0000, 0x020a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x020f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x021a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x021f, + 0x0000, 0x0000, 0x0224, 0x0000, 0x0000, 0x0229, 0x0000, 0x0000, + // Entry 3FBC0 - 3FBFF + 0x022e, 0x0001, 0x01fd, 0x0001, 0x005b, 0x042a, 0x0001, 0x0202, + 0x0001, 0x005b, 0x0431, 0x0001, 0x0207, 0x0001, 0x0009, 0x02be, + 0x0001, 0x020c, 0x0001, 0x005b, 0x0436, 0x0002, 0x0212, 0x0215, + 0x0001, 0x005b, 0x043c, 0x0003, 0x005b, 0x0441, 0x0448, 0x044e, + 0x0001, 0x021c, 0x0001, 0x005b, 0x0457, 0x0001, 0x0221, 0x0001, + 0x002b, 0x0482, 0x0001, 0x0226, 0x0001, 0x0009, 0x00b3, 0x0001, + 0x022b, 0x0001, 0x0009, 0x00ba, 0x0001, 0x0230, 0x0001, 0x005b, + 0x0464, 0x0003, 0x0004, 0x0155, 0x035e, 0x0008, 0x0000, 0x0000, + // Entry 3FC00 - 3FC3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x005b, 0x046a, 0x0001, + 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0001, 0x001c, 0x14e1, + 0x0008, 0x0030, 0x0076, 0x00c4, 0x00eb, 0x0123, 0x0133, 0x0144, + 0x0000, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, 0x0055, + 0x000d, 0x005b, 0xffff, 0x047d, 0x0481, 0x0485, 0x0489, 0x048d, + 0x0491, 0x0495, 0x0499, 0x049d, 0x04a1, 0x04a5, 0x04a9, 0x000d, + // Entry 3FC40 - 3FC7F + 0x0017, 0xffff, 0x29d7, 0x29dd, 0x29bb, 0x29a9, 0x29bb, 0x29dd, + 0x29d3, 0x29bb, 0x29bb, 0x29d3, 0x29d7, 0x29dd, 0x000d, 0x005b, + 0xffff, 0x04ad, 0x04bb, 0x04c8, 0x04d8, 0x04e5, 0x04f3, 0x0500, + 0x050f, 0x051f, 0x052f, 0x053d, 0x0553, 0x0002, 0x0000, 0x0067, + 0x000d, 0x0017, 0xffff, 0x29d7, 0x29dd, 0x29bb, 0x29a9, 0x29bb, + 0x29dd, 0x29d3, 0x29bb, 0x29bb, 0x29d3, 0x29d7, 0x29dd, 0x0002, + 0x0079, 0x00a3, 0x0005, 0x007f, 0x0088, 0x009a, 0x0000, 0x0091, + 0x0007, 0x005b, 0x056a, 0x056e, 0x0572, 0x0576, 0x057a, 0x057e, + // Entry 3FC80 - 3FCBF + 0x0582, 0x0007, 0x0017, 0x29a9, 0x29df, 0x29d3, 0x29a9, 0x29e1, + 0x29cf, 0x29bb, 0x0007, 0x005b, 0x056a, 0x056e, 0x0572, 0x0576, + 0x057a, 0x057e, 0x0582, 0x0007, 0x005b, 0x0586, 0x058b, 0x0592, + 0x059a, 0x05a1, 0x05a9, 0x05af, 0x0005, 0x0000, 0x00a9, 0x00bb, + 0x0000, 0x00b2, 0x0007, 0x0017, 0x29a9, 0x29df, 0x29d3, 0x29a9, + 0x29e1, 0x29cf, 0x29bb, 0x0007, 0x005b, 0x056a, 0x056e, 0x0572, + 0x0576, 0x057a, 0x057e, 0x0582, 0x0007, 0x005b, 0x0586, 0x058b, + 0x0592, 0x059a, 0x05a1, 0x05a9, 0x05af, 0x0002, 0x00c7, 0x00e0, + // Entry 3FCC0 - 3FCFF + 0x0003, 0x00cb, 0x00d2, 0x00d9, 0x0005, 0x0005, 0xffff, 0x070e, + 0x0711, 0x0714, 0x0717, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x005b, 0xffff, 0x05b5, 0x05c1, 0x05cd, + 0x05d9, 0x0003, 0x0000, 0x0000, 0x00e4, 0x0005, 0x005b, 0xffff, + 0x05b5, 0x05c1, 0x05cd, 0x05d9, 0x0002, 0x00ee, 0x010d, 0x0003, + 0x00f2, 0x00fb, 0x0104, 0x0002, 0x00f5, 0x00f8, 0x0001, 0x0028, + 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0002, 0x00fe, 0x0101, 0x0001, + 0x0028, 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0002, 0x0107, 0x010a, + // Entry 3FD00 - 3FD3F + 0x0001, 0x0028, 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0003, 0x0111, + 0x0000, 0x011a, 0x0002, 0x0114, 0x0117, 0x0001, 0x0028, 0x07cc, + 0x0001, 0x005b, 0x05e5, 0x0002, 0x011d, 0x0120, 0x0001, 0x0028, + 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0003, 0x012d, 0x0000, 0x0127, + 0x0001, 0x0129, 0x0002, 0x005b, 0x05e9, 0x05ec, 0x0001, 0x012f, + 0x0002, 0x005b, 0x05e9, 0x05ec, 0x0004, 0x0141, 0x013b, 0x0138, + 0x013e, 0x0001, 0x005b, 0x05ef, 0x0001, 0x0001, 0x002d, 0x0001, + 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, 0x0004, 0x0152, 0x014c, + // Entry 3FD40 - 3FD7F + 0x0149, 0x014f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0040, 0x0196, + 0x0000, 0x0000, 0x019b, 0x01ad, 0x01bc, 0x01cb, 0x01dd, 0x01ec, + 0x01fb, 0x020d, 0x021c, 0x022b, 0x0241, 0x0254, 0x0000, 0x0000, + 0x0000, 0x0267, 0x027e, 0x0290, 0x0000, 0x0000, 0x0000, 0x029f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02a4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 3FD80 - 3FDBF + 0x0000, 0x0000, 0x0000, 0x02b8, 0x0000, 0x02bd, 0x02d3, 0x02e2, + 0x02f1, 0x0307, 0x0316, 0x0325, 0x033b, 0x034a, 0x0359, 0x0001, + 0x0198, 0x0001, 0x0000, 0x1a35, 0x0003, 0x019f, 0x0000, 0x01a2, + 0x0001, 0x0000, 0x1a39, 0x0002, 0x01a5, 0x01a9, 0x0002, 0x0000, + 0x1a5c, 0x1a5c, 0x0002, 0x0000, 0x1a63, 0x1a63, 0x0003, 0x0000, + 0x0000, 0x01b1, 0x0002, 0x01b4, 0x01b8, 0x0002, 0x0000, 0x1a5c, + 0x1a5c, 0x0002, 0x0000, 0x1a63, 0x1a63, 0x0003, 0x0000, 0x0000, + 0x01c0, 0x0002, 0x01c3, 0x01c7, 0x0002, 0x0000, 0x1a5c, 0x1a5c, + // Entry 3FDC0 - 3FDFF + 0x0002, 0x0000, 0x1a63, 0x1a63, 0x0003, 0x01cf, 0x0000, 0x01d2, + 0x0001, 0x0000, 0x1a6a, 0x0002, 0x01d5, 0x01d9, 0x0002, 0x0000, + 0x1a99, 0x1a99, 0x0002, 0x0000, 0x1aa0, 0x1aa0, 0x0003, 0x0000, + 0x0000, 0x01e1, 0x0002, 0x01e4, 0x01e8, 0x0002, 0x0000, 0x1a99, + 0x1a99, 0x0002, 0x0000, 0x1aa0, 0x1aa0, 0x0003, 0x0000, 0x0000, + 0x01f0, 0x0002, 0x01f3, 0x01f7, 0x0002, 0x0000, 0x1a99, 0x1a99, + 0x0002, 0x0000, 0x1aa0, 0x1aa0, 0x0003, 0x01ff, 0x0000, 0x0202, + 0x0001, 0x0000, 0x1aa7, 0x0002, 0x0205, 0x0209, 0x0002, 0x0000, + // Entry 3FE00 - 3FE3F + 0x1ace, 0x1ace, 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0003, 0x0000, + 0x0000, 0x0211, 0x0002, 0x0214, 0x0218, 0x0002, 0x0000, 0x1ace, + 0x1ace, 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0003, 0x0000, 0x0000, + 0x0220, 0x0002, 0x0223, 0x0227, 0x0002, 0x0000, 0x1ace, 0x1ace, + 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0004, 0x0230, 0x0000, 0x0233, + 0x023e, 0x0001, 0x0000, 0x1adc, 0x0002, 0x0236, 0x023a, 0x0002, + 0x0000, 0x1aff, 0x1aff, 0x0002, 0x0000, 0x1b06, 0x1b06, 0x0001, + 0x0000, 0x1b0d, 0x0004, 0x0000, 0x0000, 0x0246, 0x0251, 0x0002, + // Entry 3FE40 - 3FE7F + 0x0249, 0x024d, 0x0002, 0x0000, 0x1aff, 0x1aff, 0x0002, 0x0000, + 0x1b06, 0x1b06, 0x0001, 0x0000, 0x1b0d, 0x0004, 0x0000, 0x0000, + 0x0259, 0x0264, 0x0002, 0x025c, 0x0260, 0x0002, 0x0000, 0x1aff, + 0x1aff, 0x0002, 0x0000, 0x1b06, 0x1b06, 0x0001, 0x0000, 0x1b0d, + 0x0003, 0x026b, 0x026e, 0x0273, 0x0001, 0x0000, 0x1b2b, 0x0003, + 0x005b, 0x0600, 0x0607, 0x060e, 0x0002, 0x0276, 0x027a, 0x0002, + 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, 0x1b4f, 0x1b4f, 0x0003, + 0x0282, 0x0000, 0x0285, 0x0001, 0x0000, 0x1b2b, 0x0002, 0x0288, + // Entry 3FE80 - 3FEBF + 0x028c, 0x0002, 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, 0x1b4f, + 0x1b4f, 0x0003, 0x0000, 0x0000, 0x0294, 0x0002, 0x0297, 0x029b, + 0x0002, 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, 0x1b4f, 0x1b4f, + 0x0001, 0x02a1, 0x0001, 0x0000, 0x1b62, 0x0003, 0x0000, 0x02a8, + 0x02ad, 0x0003, 0x0000, 0x1b83, 0x1b8f, 0x1b9b, 0x0002, 0x02b0, + 0x02b4, 0x0002, 0x0000, 0x1ba7, 0x1ba7, 0x0002, 0x0000, 0x1bb4, + 0x1bb4, 0x0001, 0x02ba, 0x0001, 0x0000, 0x1d5d, 0x0003, 0x02c1, + 0x02c4, 0x02c8, 0x0001, 0x0000, 0x1d67, 0x0002, 0x0000, 0xffff, + // Entry 3FEC0 - 3FEFF + 0x1d6c, 0x0002, 0x02cb, 0x02cf, 0x0002, 0x0000, 0x1d76, 0x1d76, + 0x0002, 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x0000, 0x0000, 0x02d7, + 0x0002, 0x02da, 0x02de, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, + 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x0000, 0x0000, 0x02e6, 0x0002, + 0x02e9, 0x02ed, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, 0x0000, + 0x1d7d, 0x1d7d, 0x0003, 0x02f5, 0x02f8, 0x02fc, 0x0001, 0x0000, + 0x1d84, 0x0002, 0x0000, 0xffff, 0x1d8b, 0x0002, 0x02ff, 0x0303, + 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, + // Entry 3FF00 - 3FF3F + 0x0003, 0x0000, 0x0000, 0x030b, 0x0002, 0x030e, 0x0312, 0x0002, + 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, + 0x0000, 0x0000, 0x031a, 0x0002, 0x031d, 0x0321, 0x0002, 0x0000, + 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0329, + 0x032c, 0x0330, 0x0001, 0x0000, 0x1da9, 0x0002, 0x000d, 0xffff, + 0x3182, 0x0002, 0x0333, 0x0337, 0x0002, 0x0026, 0x00bf, 0x00bf, + 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0003, 0x0000, 0x0000, 0x033f, + 0x0002, 0x0342, 0x0346, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, + // Entry 3FF40 - 3FF7F + 0x0000, 0x1dbb, 0x1dbb, 0x0003, 0x0000, 0x0000, 0x034e, 0x0002, + 0x0351, 0x0355, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, 0x0000, + 0x1dbb, 0x1dbb, 0x0001, 0x035b, 0x0001, 0x0000, 0x1dc2, 0x0004, + 0x0000, 0x0000, 0x0000, 0x0363, 0x0002, 0x0000, 0x0366, 0x0003, + 0x036a, 0x03ca, 0x0392, 0x0026, 0x005b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3FF80 - 3FFBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0614, 0x0036, 0x005b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0626, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 3FFC0 - 3FFFF + 0xffff, 0xffff, 0x0664, 0x0026, 0x005b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0648, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, + // Entry 40000 - 4003F + 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, + 0x0004, 0x0273, 0x064d, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, + 0x001b, 0x0021, 0x0001, 0x005b, 0x0676, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0008, 0x062f, 0x0004, 0x0035, + 0x002f, 0x002c, 0x0032, 0x0001, 0x005b, 0x0686, 0x0001, 0x005b, + // Entry 40040 - 4007F + 0x0686, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, + 0x0041, 0x00a6, 0x00fd, 0x0132, 0x021b, 0x0240, 0x0251, 0x0262, + 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, + 0x000d, 0xffff, 0x0059, 0x33ea, 0x3399, 0x33ee, 0x33f2, 0x33f6, + 0x33fa, 0x33fe, 0x3402, 0x3406, 0x340a, 0x340f, 0x000d, 0x0000, + 0xffff, 0x214a, 0x2002, 0x3a8d, 0x21ec, 0x3a8d, 0x3aa1, 0x3aa3, + 0x200e, 0x2002, 0x2000, 0x3a8f, 0x3a91, 0x000d, 0x005b, 0xffff, + 0x0694, 0x069a, 0x06a1, 0x06a6, 0x06ac, 0x06b0, 0x06b8, 0x06bf, + // Entry 40080 - 400BF + 0x06c5, 0x06cd, 0x06d3, 0x06db, 0x0003, 0x0079, 0x0088, 0x0097, + 0x000d, 0x0005, 0xffff, 0x0636, 0x247c, 0x2480, 0x2484, 0x2488, + 0x248c, 0x2490, 0x2494, 0x2498, 0x249c, 0x24a0, 0x24a5, 0x000d, + 0x0017, 0xffff, 0x29cf, 0x29bb, 0x29d1, 0x29bf, 0x29d1, 0x29e4, + 0x29d7, 0x29d9, 0x29bb, 0x29d3, 0x29b1, 0x29b3, 0x000d, 0x005b, + 0xffff, 0x06e3, 0x06e9, 0x06f0, 0x06f5, 0x06fb, 0x06ff, 0x0707, + 0x070e, 0x0714, 0x071c, 0x0722, 0x072a, 0x0002, 0x00a9, 0x00d3, + 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x005b, + // Entry 400C0 - 400FF + 0x0732, 0x0736, 0x073b, 0x073f, 0x0744, 0x0748, 0x074c, 0x0007, + 0x0017, 0x29b3, 0x29e6, 0x29d1, 0x29d1, 0x29e8, 0x29bf, 0x29bb, + 0x0007, 0x005b, 0x0732, 0x0736, 0x073b, 0x073f, 0x0744, 0x0748, + 0x074c, 0x0007, 0x005b, 0x0750, 0x0757, 0x0760, 0x0769, 0x0775, + 0x077d, 0x0786, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, + 0x0007, 0x005b, 0x0732, 0x0736, 0x073b, 0x073f, 0x0744, 0x0748, + 0x074c, 0x0007, 0x0017, 0x29b3, 0x29e6, 0x29d1, 0x29d1, 0x29e8, + 0x29bf, 0x29bb, 0x0007, 0x005b, 0x0732, 0x0736, 0x073b, 0x073f, + // Entry 40100 - 4013F + 0x0744, 0x0748, 0x074c, 0x0007, 0x005b, 0x0790, 0x0797, 0x07a0, + 0x07a9, 0x07b5, 0x07bd, 0x07c6, 0x0002, 0x0100, 0x0119, 0x0003, + 0x0104, 0x010b, 0x0112, 0x0005, 0x005b, 0xffff, 0x07d0, 0x07dc, + 0x07e9, 0x07f7, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x005b, 0xffff, 0x0804, 0x0816, 0x0828, 0x083b, + 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x005b, 0xffff, 0x084f, + 0x085b, 0x0868, 0x0876, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x005b, 0xffff, 0x0883, 0x0895, 0x08a7, + // Entry 40140 - 4017F + 0x08b9, 0x0002, 0x0135, 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, + 0x0009, 0x0146, 0x014c, 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, + 0x0149, 0x0152, 0x0001, 0x005b, 0x08c9, 0x0001, 0x005b, 0x08d5, + 0x0001, 0x005b, 0x08e1, 0x0001, 0x005b, 0x08ed, 0x0001, 0x005b, + 0x08f8, 0x0001, 0x005b, 0x08d5, 0x0001, 0x005b, 0x08ed, 0x0001, + 0x005b, 0x0905, 0x0001, 0x005b, 0x0911, 0x0009, 0x016b, 0x0171, + 0x0168, 0x0174, 0x017a, 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, + 0x005b, 0x08c9, 0x0001, 0x005b, 0x08d5, 0x0001, 0x005b, 0x08e1, + // Entry 40180 - 401BF + 0x0001, 0x005b, 0x08ed, 0x0001, 0x005b, 0x08f8, 0x0001, 0x005b, + 0x08d5, 0x0001, 0x005b, 0x08ed, 0x0001, 0x005b, 0x0905, 0x0001, + 0x005b, 0x0911, 0x0009, 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, + 0x01a2, 0x01a5, 0x0193, 0x019c, 0x0001, 0x005b, 0x08c9, 0x0001, + 0x005b, 0x08d5, 0x0001, 0x005b, 0x08e1, 0x0001, 0x005b, 0x08ed, + 0x0001, 0x005b, 0x08f8, 0x0001, 0x005b, 0x08d5, 0x0001, 0x005b, + 0x08ed, 0x0001, 0x005b, 0x0905, 0x0001, 0x005b, 0x0911, 0x0003, + 0x01ac, 0x01d1, 0x01f6, 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, + // Entry 401C0 - 401FF + 0x01c8, 0x01cb, 0x01ce, 0x01bc, 0x01c5, 0x0001, 0x005b, 0x091a, + 0x0001, 0x005b, 0x0923, 0x0001, 0x005b, 0x092c, 0x0001, 0x005b, + 0x0935, 0x0001, 0x005b, 0x093d, 0x0001, 0x005b, 0x0923, 0x0001, + 0x005b, 0x0935, 0x0001, 0x005b, 0x0946, 0x0001, 0x005b, 0x094f, + 0x0009, 0x01de, 0x01e4, 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, + 0x01e1, 0x01ea, 0x0001, 0x005b, 0x091a, 0x0001, 0x005b, 0x0923, + 0x0001, 0x005b, 0x092c, 0x0001, 0x005b, 0x0935, 0x0001, 0x005b, + 0x093d, 0x0001, 0x005b, 0x0923, 0x0001, 0x005b, 0x0935, 0x0001, + // Entry 40200 - 4023F + 0x005b, 0x0946, 0x0001, 0x005b, 0x094f, 0x0009, 0x0203, 0x0209, + 0x0200, 0x020c, 0x0212, 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, + 0x005b, 0x091a, 0x0001, 0x005b, 0x0923, 0x0001, 0x005b, 0x092c, + 0x0001, 0x005b, 0x0935, 0x0001, 0x005b, 0x093d, 0x0001, 0x005b, + 0x0923, 0x0001, 0x005b, 0x0935, 0x0001, 0x005b, 0x0946, 0x0001, + 0x005b, 0x094f, 0x0003, 0x022a, 0x0235, 0x021f, 0x0002, 0x0222, + 0x0226, 0x0002, 0x005b, 0x0955, 0x0974, 0x0002, 0x005b, 0x0963, + 0x0982, 0x0002, 0x022d, 0x0231, 0x0002, 0x005b, 0x098e, 0x099a, + // Entry 40240 - 4027F + 0x0002, 0x005b, 0x0993, 0x09a0, 0x0002, 0x0238, 0x023c, 0x0002, + 0x005b, 0x098e, 0x099a, 0x0002, 0x005b, 0x0993, 0x09a0, 0x0004, + 0x024e, 0x0248, 0x0245, 0x024b, 0x0001, 0x0005, 0x0773, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0008, 0x0620, + 0x0004, 0x025f, 0x0259, 0x0256, 0x025c, 0x0001, 0x005b, 0x09a5, + 0x0001, 0x005b, 0x09b5, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, + 0x0478, 0x0004, 0x0270, 0x026a, 0x0267, 0x026d, 0x0001, 0x005b, + 0x0686, 0x0001, 0x005b, 0x0686, 0x0001, 0x0005, 0x0846, 0x0001, + // Entry 40280 - 402BF + 0x0005, 0x0846, 0x0040, 0x02b4, 0x0000, 0x0000, 0x02b9, 0x02d0, + 0x02e2, 0x02f4, 0x030b, 0x031d, 0x032f, 0x0346, 0x0358, 0x036a, + 0x0385, 0x039b, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03c8, 0x03da, + 0x0000, 0x0000, 0x0000, 0x03ec, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x03f1, 0x0405, 0x0419, 0x042d, 0x0441, 0x0455, 0x0469, + 0x047d, 0x0491, 0x04a5, 0x04b9, 0x04cd, 0x04e1, 0x04f5, 0x0509, + 0x051d, 0x0531, 0x0545, 0x0559, 0x056d, 0x0581, 0x0000, 0x0595, + 0x0000, 0x059a, 0x05b0, 0x05c2, 0x05d4, 0x05ea, 0x05fc, 0x060e, + // Entry 402C0 - 402FF + 0x0624, 0x0636, 0x0648, 0x0001, 0x02b6, 0x0001, 0x005b, 0x09c2, + 0x0003, 0x02bd, 0x02c0, 0x02c5, 0x0001, 0x005b, 0x09c7, 0x0003, + 0x005b, 0x09cb, 0x09da, 0x09e5, 0x0002, 0x02c8, 0x02cc, 0x0002, + 0x005b, 0x0a04, 0x09f7, 0x0002, 0x005b, 0x0a27, 0x0a15, 0x0003, + 0x02d4, 0x0000, 0x02d7, 0x0001, 0x005b, 0x09c7, 0x0002, 0x02da, + 0x02de, 0x0002, 0x005b, 0x0a04, 0x09f7, 0x0002, 0x005b, 0x0a27, + 0x0a15, 0x0003, 0x02e6, 0x0000, 0x02e9, 0x0001, 0x005b, 0x09c7, + 0x0002, 0x02ec, 0x02f0, 0x0002, 0x005b, 0x0a04, 0x09f7, 0x0002, + // Entry 40300 - 4033F + 0x005b, 0x0a27, 0x0a15, 0x0003, 0x02f8, 0x02fb, 0x0300, 0x0001, + 0x005b, 0x0a3a, 0x0003, 0x005b, 0x0a43, 0x0a57, 0x0a67, 0x0002, + 0x0303, 0x0307, 0x0002, 0x005b, 0x0a90, 0x0a7e, 0x0002, 0x005b, + 0x0abc, 0x0aa5, 0x0003, 0x030f, 0x0000, 0x0312, 0x0001, 0x005b, + 0x0a3a, 0x0002, 0x0315, 0x0319, 0x0002, 0x005b, 0x0a90, 0x0a7e, + 0x0002, 0x005b, 0x0abc, 0x0aa5, 0x0003, 0x0321, 0x0000, 0x0324, + 0x0001, 0x005b, 0x0a3a, 0x0002, 0x0327, 0x032b, 0x0002, 0x005b, + 0x0a90, 0x0a7e, 0x0002, 0x005b, 0x0abc, 0x0aa5, 0x0003, 0x0333, + // Entry 40340 - 4037F + 0x0336, 0x033b, 0x0001, 0x005b, 0x0ad5, 0x0003, 0x005b, 0x0ada, + 0x0aea, 0x0af6, 0x0002, 0x033e, 0x0342, 0x0002, 0x005b, 0x0b17, + 0x0b09, 0x0002, 0x005b, 0x0b26, 0x0b26, 0x0003, 0x034a, 0x0000, + 0x034d, 0x0001, 0x005b, 0x0ad5, 0x0002, 0x0350, 0x0354, 0x0002, + 0x005b, 0x0b17, 0x0b09, 0x0002, 0x005b, 0x0b26, 0x0b26, 0x0003, + 0x035c, 0x0000, 0x035f, 0x0001, 0x005b, 0x0ad5, 0x0002, 0x0362, + 0x0366, 0x0002, 0x005b, 0x0b17, 0x0b09, 0x0002, 0x005b, 0x0b26, + 0x0b26, 0x0004, 0x036f, 0x0372, 0x0377, 0x0382, 0x0001, 0x005b, + // Entry 40380 - 403BF + 0x0b39, 0x0003, 0x005b, 0x0b3f, 0x0b4f, 0x0b5c, 0x0002, 0x037a, + 0x037e, 0x0002, 0x005b, 0x0b7b, 0x0b6e, 0x0002, 0x005b, 0x0b8b, + 0x0b8b, 0x0001, 0x005b, 0x0b9f, 0x0004, 0x038a, 0x0000, 0x038d, + 0x0398, 0x0001, 0x005b, 0x0b39, 0x0002, 0x0390, 0x0394, 0x0002, + 0x005b, 0x0b7b, 0x0b6e, 0x0002, 0x005b, 0x0b8b, 0x0b8b, 0x0001, + 0x005b, 0x0b9f, 0x0004, 0x03a0, 0x0000, 0x03a3, 0x03ae, 0x0001, + 0x005b, 0x0b39, 0x0002, 0x03a6, 0x03aa, 0x0002, 0x005b, 0x0b7b, + 0x0b6e, 0x0002, 0x005b, 0x0b8b, 0x0b8b, 0x0001, 0x005b, 0x0b9f, + // Entry 403C0 - 403FF + 0x0003, 0x03b5, 0x03b8, 0x03bd, 0x0001, 0x005b, 0x0baa, 0x0003, + 0x005b, 0x0bb0, 0x0bb4, 0x0bb8, 0x0002, 0x03c0, 0x03c4, 0x0002, + 0x005b, 0x0bcc, 0x0bbf, 0x0002, 0x005b, 0x0bdc, 0x0bdc, 0x0003, + 0x03cc, 0x0000, 0x03cf, 0x0001, 0x005b, 0x0baa, 0x0002, 0x03d2, + 0x03d6, 0x0002, 0x005b, 0x0bcc, 0x0bbf, 0x0002, 0x005b, 0x0bdc, + 0x0bdc, 0x0003, 0x03de, 0x0000, 0x03e1, 0x0001, 0x005b, 0x0baa, + 0x0002, 0x03e4, 0x03e8, 0x0002, 0x005b, 0x0bcc, 0x0bbf, 0x0002, + 0x005b, 0x0bdc, 0x0bdc, 0x0001, 0x03ee, 0x0001, 0x005b, 0x0bf0, + // Entry 40400 - 4043F + 0x0003, 0x0000, 0x03f5, 0x03fa, 0x0003, 0x005b, 0x0bff, 0x0c14, + 0x0c24, 0x0002, 0x03fd, 0x0401, 0x0002, 0x005b, 0x0c4d, 0x0c3b, + 0x0002, 0x005b, 0x0c79, 0x0c61, 0x0003, 0x0000, 0x0409, 0x040e, + 0x0003, 0x005b, 0x0bff, 0x0c14, 0x0c24, 0x0002, 0x0411, 0x0415, + 0x0002, 0x005b, 0x0c4d, 0x0c3b, 0x0002, 0x005b, 0x0c79, 0x0c61, + 0x0003, 0x0000, 0x041d, 0x0422, 0x0003, 0x005b, 0x0bff, 0x0c14, + 0x0c24, 0x0002, 0x0425, 0x0429, 0x0002, 0x005b, 0x0c4d, 0x0c3b, + 0x0002, 0x005b, 0x0c79, 0x0c61, 0x0003, 0x0000, 0x0431, 0x0436, + // Entry 40440 - 4047F + 0x0003, 0x005b, 0x0c93, 0x0ca8, 0x0cba, 0x0002, 0x0439, 0x043d, + 0x0002, 0x005b, 0x0ce3, 0x0cd1, 0x0002, 0x005b, 0x0d0f, 0x0cf7, + 0x0003, 0x0000, 0x0445, 0x044a, 0x0003, 0x005b, 0x0c93, 0x0ca8, + 0x0cba, 0x0002, 0x044d, 0x0451, 0x0002, 0x005b, 0x0ce3, 0x0cd1, + 0x0002, 0x005b, 0x0d0f, 0x0cf7, 0x0003, 0x0000, 0x0459, 0x045e, + 0x0003, 0x005b, 0x0c93, 0x0ca8, 0x0cba, 0x0002, 0x0461, 0x0465, + 0x0002, 0x005b, 0x0ce3, 0x0cd1, 0x0002, 0x005b, 0x0d0f, 0x0cf7, + 0x0003, 0x0000, 0x046d, 0x0472, 0x0003, 0x005b, 0x0d29, 0x0d3e, + // Entry 40480 - 404BF + 0x0d50, 0x0002, 0x0475, 0x0479, 0x0002, 0x005b, 0x0d79, 0x0d67, + 0x0002, 0x005b, 0x0da5, 0x0d8d, 0x0003, 0x0000, 0x0481, 0x0486, + 0x0003, 0x005b, 0x0d29, 0x0d3e, 0x0d50, 0x0002, 0x0489, 0x048d, + 0x0002, 0x005b, 0x0d79, 0x0d67, 0x0002, 0x005b, 0x0da5, 0x0d8d, + 0x0003, 0x0000, 0x0495, 0x049a, 0x0003, 0x005b, 0x0d29, 0x0d3e, + 0x0d50, 0x0002, 0x049d, 0x04a1, 0x0002, 0x005b, 0x0d79, 0x0d67, + 0x0002, 0x005b, 0x0da5, 0x0d8d, 0x0003, 0x0000, 0x04a9, 0x04ae, + 0x0003, 0x005b, 0x0dbf, 0x0dd7, 0x0dec, 0x0002, 0x04b1, 0x04b5, + // Entry 404C0 - 404FF + 0x0002, 0x005b, 0x0e1b, 0x0e06, 0x0002, 0x005b, 0x0e4d, 0x0e32, + 0x0003, 0x0000, 0x04bd, 0x04c2, 0x0003, 0x005b, 0x0dbf, 0x0dd7, + 0x0dec, 0x0002, 0x04c5, 0x04c9, 0x0002, 0x005b, 0x0e1b, 0x0e06, + 0x0002, 0x005b, 0x0e4d, 0x0e32, 0x0003, 0x0000, 0x04d1, 0x04d6, + 0x0003, 0x005b, 0x0dbf, 0x0dd7, 0x0dec, 0x0002, 0x04d9, 0x04dd, + 0x0002, 0x005b, 0x0e1b, 0x0e06, 0x0002, 0x005b, 0x0e4d, 0x0e32, + 0x0003, 0x0000, 0x04e5, 0x04ea, 0x0003, 0x005b, 0x0e6a, 0x0e7e, + 0x0e8f, 0x0002, 0x04ed, 0x04f1, 0x0002, 0x005b, 0x0eb7, 0x0ea5, + // Entry 40500 - 4053F + 0x0002, 0x005b, 0x0ee3, 0x0ecb, 0x0003, 0x0000, 0x04f9, 0x04fe, + 0x0003, 0x005b, 0x0e6a, 0x0e7e, 0x0e8f, 0x0002, 0x0501, 0x0505, + 0x0002, 0x005b, 0x0eb7, 0x0ea5, 0x0002, 0x005b, 0x0ee3, 0x0ecb, + 0x0003, 0x0000, 0x050d, 0x0512, 0x0003, 0x005b, 0x0e6a, 0x0e7e, + 0x0e8f, 0x0002, 0x0515, 0x0519, 0x0002, 0x005b, 0x0eb7, 0x0ea5, + 0x0002, 0x005b, 0x0ee3, 0x0ecb, 0x0003, 0x0000, 0x0521, 0x0526, + 0x0003, 0x005b, 0x0efd, 0x0f12, 0x0f24, 0x0002, 0x0529, 0x052d, + 0x0002, 0x005b, 0x0f4e, 0x0f3b, 0x0002, 0x005b, 0x0f7c, 0x0f63, + // Entry 40540 - 4057F + 0x0003, 0x0000, 0x0535, 0x053a, 0x0003, 0x005b, 0x0efd, 0x0f12, + 0x0f24, 0x0002, 0x053d, 0x0541, 0x0002, 0x005b, 0x0f4e, 0x0f3b, + 0x0002, 0x005b, 0x0f7c, 0x0f63, 0x0003, 0x0000, 0x0549, 0x054e, + 0x0003, 0x005b, 0x0efd, 0x0f12, 0x0f24, 0x0002, 0x0551, 0x0555, + 0x0002, 0x005b, 0x0f4e, 0x0f3b, 0x0002, 0x005b, 0x0f7c, 0x0f63, + 0x0003, 0x0000, 0x055d, 0x0562, 0x0003, 0x005b, 0x0f97, 0x0fad, + 0x0fc0, 0x0002, 0x0565, 0x0569, 0x0002, 0x005b, 0x0feb, 0x0fd8, + 0x0002, 0x005b, 0x1019, 0x1000, 0x0003, 0x0000, 0x0571, 0x0576, + // Entry 40580 - 405BF + 0x0003, 0x005b, 0x0f97, 0x0fad, 0x0fc0, 0x0002, 0x0579, 0x057d, + 0x0002, 0x005b, 0x0feb, 0x0fd8, 0x0002, 0x005b, 0x1019, 0x1000, + 0x0003, 0x0000, 0x0585, 0x058a, 0x0003, 0x005b, 0x0f97, 0x0fad, + 0x0fc0, 0x0002, 0x058d, 0x0591, 0x0002, 0x005b, 0x0feb, 0x0fd8, + 0x0002, 0x005b, 0x1019, 0x1000, 0x0001, 0x0597, 0x0001, 0x005b, + 0x1034, 0x0003, 0x059e, 0x05a1, 0x05a5, 0x0001, 0x005b, 0x1045, + 0x0002, 0x005b, 0xffff, 0x104a, 0x0002, 0x05a8, 0x05ac, 0x0002, + 0x005b, 0x1062, 0x1056, 0x0002, 0x005b, 0x1071, 0x1071, 0x0003, + // Entry 405C0 - 405FF + 0x05b4, 0x0000, 0x05b7, 0x0001, 0x005b, 0x1045, 0x0002, 0x05ba, + 0x05be, 0x0002, 0x005b, 0x1062, 0x1056, 0x0002, 0x005b, 0x1071, + 0x1071, 0x0003, 0x05c6, 0x0000, 0x05c9, 0x0001, 0x005b, 0x1045, + 0x0002, 0x05cc, 0x05d0, 0x0002, 0x005b, 0x1062, 0x1056, 0x0002, + 0x005b, 0x1071, 0x1071, 0x0003, 0x05d8, 0x05db, 0x05df, 0x0001, + 0x005b, 0x1084, 0x0002, 0x005b, 0xffff, 0x108c, 0x0002, 0x05e2, + 0x05e6, 0x0002, 0x005b, 0x10aa, 0x109b, 0x0002, 0x005b, 0x10d1, + 0x10bb, 0x0003, 0x05ee, 0x0000, 0x05f1, 0x0001, 0x0001, 0x075a, + // Entry 40600 - 4063F + 0x0002, 0x05f4, 0x05f8, 0x0002, 0x005b, 0x10e6, 0x10e6, 0x0002, + 0x005b, 0x10f3, 0x10f3, 0x0003, 0x0600, 0x0000, 0x0603, 0x0001, + 0x0001, 0x075a, 0x0002, 0x0606, 0x060a, 0x0002, 0x005b, 0x10e6, + 0x10e6, 0x0002, 0x005b, 0x10f3, 0x10f3, 0x0003, 0x0612, 0x0615, + 0x0619, 0x0001, 0x005b, 0x1106, 0x0002, 0x005b, 0xffff, 0x110f, + 0x0002, 0x061c, 0x0620, 0x0002, 0x005b, 0x1124, 0x1114, 0x0002, + 0x005b, 0x114d, 0x1136, 0x0003, 0x0628, 0x0000, 0x062b, 0x0001, + 0x0001, 0x07d3, 0x0002, 0x062e, 0x0632, 0x0002, 0x005b, 0x1163, + // Entry 40640 - 4067F + 0x1163, 0x0002, 0x005b, 0x1170, 0x1170, 0x0003, 0x063a, 0x0000, + 0x063d, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0640, 0x0644, 0x0002, + 0x005b, 0x1163, 0x1163, 0x0002, 0x005b, 0x1170, 0x1170, 0x0001, + 0x064a, 0x0001, 0x005b, 0x1183, 0x0004, 0x0652, 0x0657, 0x065c, + 0x066b, 0x0003, 0x0000, 0x1dc7, 0x3aa5, 0x3abb, 0x0003, 0x005b, + 0x118e, 0x1197, 0x11a7, 0x0002, 0x0000, 0x065f, 0x0003, 0x0000, + 0x0666, 0x0663, 0x0001, 0x005b, 0x11ba, 0x0003, 0x005b, 0xffff, + 0x11d6, 0x11eb, 0x0002, 0x0000, 0x066e, 0x0003, 0x0672, 0x07b2, + // Entry 40680 - 406BF + 0x0712, 0x009e, 0x005b, 0xffff, 0xffff, 0xffff, 0xffff, 0x12b2, + 0x1317, 0x1391, 0x13d2, 0x142b, 0x1481, 0x14e9, 0x156c, 0x15aa, + 0x1652, 0x1681, 0x16cb, 0x173c, 0x177d, 0x17c1, 0x1823, 0x18ac, + 0x190b, 0x1979, 0x19c6, 0x1a01, 0xffff, 0xffff, 0x1a69, 0xffff, + 0x1ac3, 0xffff, 0x1b3b, 0x1b76, 0x1bab, 0x1be3, 0xffff, 0xffff, + 0x1c63, 0x1ca7, 0x1cee, 0xffff, 0xffff, 0xffff, 0x1d64, 0xffff, + 0x1dd9, 0x1e32, 0xffff, 0x1eab, 0x1f10, 0x1f66, 0xffff, 0xffff, + 0xffff, 0xffff, 0x200a, 0xffff, 0xffff, 0x2087, 0x20e6, 0xffff, + // Entry 406C0 - 406FF + 0xffff, 0x217e, 0x21e6, 0x222d, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x22f7, 0x232f, 0x2370, 0x23ae, 0x23ef, 0xffff, + 0xffff, 0x249c, 0xffff, 0x24df, 0xffff, 0xffff, 0x2573, 0xffff, + 0x2606, 0xffff, 0xffff, 0xffff, 0xffff, 0x2697, 0xffff, 0x26ed, + 0x2761, 0x27e4, 0x282e, 0xffff, 0xffff, 0xffff, 0x2896, 0x28f2, + 0x2948, 0xffff, 0xffff, 0x29ed, 0x2a79, 0x2ac6, 0x2afe, 0xffff, + 0xffff, 0x2b6b, 0x2bac, 0x2be7, 0xffff, 0x2c40, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2d3d, 0x2d7e, 0x2dbc, 0xffff, 0xffff, + // Entry 40700 - 4073F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e6f, 0xffff, 0xffff, + 0x2ecd, 0xffff, 0x2f15, 0xffff, 0x2f75, 0x2fb3, 0x2ffd, 0xffff, + 0x3053, 0x30a0, 0xffff, 0xffff, 0xffff, 0x3126, 0x3167, 0xffff, + 0xffff, 0x1206, 0x1356, 0x15df, 0x1617, 0xffff, 0xffff, 0x25b7, + 0x2cd9, 0x009e, 0x005b, 0x1250, 0x1263, 0x127b, 0x1292, 0x12ce, + 0x1326, 0x13a1, 0x13ea, 0x1442, 0x149e, 0x150f, 0x157b, 0x15b6, + 0x165c, 0x1694, 0x16eb, 0x174c, 0x178e, 0x17dc, 0x184b, 0x18c6, + 0x192a, 0x198d, 0x19d4, 0x1a14, 0x1a4b, 0x1a59, 0x1a79, 0x1aaa, + // Entry 40740 - 4077F + 0x1adc, 0x1b2c, 0x1b49, 0x1b82, 0x1bb8, 0x1bf6, 0x1c2d, 0x1c4f, + 0x1c74, 0x1cb9, 0x1cfb, 0x1d26, 0x1d35, 0x1d4f, 0x1d80, 0x1dc9, + 0x1df1, 0x1e49, 0x1e88, 0x1ec7, 0x1f27, 0x1f73, 0x1f9e, 0x1fb7, + 0x1fe8, 0x1ffa, 0x201c, 0x2051, 0x2067, 0x20a1, 0x2105, 0x2161, + 0x216e, 0x219b, 0x21f8, 0x223a, 0x2265, 0x227d, 0x2292, 0x22a3, + 0x22be, 0x22d8, 0x2304, 0x233f, 0x237f, 0x23be, 0x2410, 0x2463, + 0x247d, 0x24a8, 0x24d1, 0x24f3, 0x252c, 0x254d, 0x2584, 0x25ef, + 0x2616, 0x2647, 0x2658, 0x2667, 0x267e, 0x26a9, 0x26de, 0x270e, + // Entry 40780 - 407BF + 0x2787, 0x27f7, 0x283c, 0x2869, 0x2879, 0x2888, 0x28af, 0x2909, + 0x296d, 0x29c8, 0x29d6, 0x2a09, 0x2a8d, 0x2ad3, 0x2b0f, 0x2b42, + 0x2b4f, 0x2b7b, 0x2bba, 0x2bf8, 0x2c2b, 0x2c5e, 0x2cab, 0x2cbb, + 0x2cca, 0x2d1d, 0x2d2d, 0x2d4d, 0x2d8d, 0x2dc9, 0x2df4, 0x2e04, + 0x2e15, 0x2e2b, 0x2e44, 0x2e54, 0x2e61, 0x2e7d, 0x2eaa, 0x2ebe, + 0x2edb, 0x2f08, 0x2f2a, 0x2f65, 0x2f84, 0x2fc6, 0x300e, 0x3041, + 0x3067, 0x30b2, 0x30e7, 0x30f6, 0x310a, 0x3136, 0x317c, 0x2154, + 0x2a52, 0x1219, 0x1364, 0x15ec, 0x1625, 0x1b1f, 0x253e, 0x25c4, + // Entry 407C0 - 407FF + 0x2cea, 0x009e, 0x005b, 0xffff, 0xffff, 0xffff, 0xffff, 0x12f4, + 0x133f, 0x13bb, 0x140c, 0x1463, 0x14c5, 0x153f, 0x1594, 0x15cc, + 0x1670, 0x16b1, 0x1715, 0x1766, 0x17a9, 0x1801, 0x187d, 0x18ea, + 0x1953, 0x19ab, 0x19ec, 0x1a31, 0xffff, 0xffff, 0x1a93, 0xffff, + 0x1aff, 0xffff, 0x1b61, 0x1b98, 0x1bcf, 0x1c13, 0xffff, 0xffff, + 0x1c8f, 0x1cd5, 0x1d12, 0xffff, 0xffff, 0xffff, 0x1da6, 0xffff, + 0x1e13, 0x1e6a, 0xffff, 0x1eed, 0x1f48, 0x1f8a, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2038, 0xffff, 0xffff, 0x20c5, 0x212e, 0xffff, + // Entry 40800 - 4083F + 0xffff, 0x21c2, 0x2214, 0x2251, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x231b, 0x2359, 0x2398, 0x23d8, 0x243b, 0xffff, + 0xffff, 0x24be, 0xffff, 0x2511, 0xffff, 0xffff, 0x259f, 0xffff, + 0x2630, 0xffff, 0xffff, 0xffff, 0xffff, 0x26c5, 0xffff, 0x2739, + 0x27b7, 0x2814, 0x2854, 0xffff, 0xffff, 0xffff, 0x28d2, 0x292a, + 0x299c, 0xffff, 0xffff, 0x2a2f, 0x2aab, 0x2aea, 0x2b2a, 0xffff, + 0xffff, 0x2b95, 0x2bd2, 0x2c13, 0xffff, 0x2c86, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2d67, 0x2da6, 0x2de0, 0xffff, 0xffff, + // Entry 40840 - 4087F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e95, 0xffff, 0xffff, + 0x2ef3, 0xffff, 0x2f49, 0xffff, 0x2f9d, 0x2fe3, 0x3029, 0xffff, + 0x3085, 0x30ce, 0xffff, 0xffff, 0xffff, 0x3150, 0x319b, 0xffff, + 0xffff, 0x1236, 0x137c, 0x1603, 0x163d, 0xffff, 0xffff, 0x25db, + 0x2d05, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, + 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + // Entry 40880 - 408BF + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, + 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0003, 0x0004, 0x044c, 0x0940, 0x0012, 0x0017, 0x0000, + 0x0024, 0x0000, 0x003c, 0x0000, 0x0054, 0x007f, 0x0293, 0x02ab, + 0x02cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0312, 0x041c, 0x043e, + // Entry 408C0 - 408FF + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, + 0x0001, 0x0021, 0x0001, 0x000e, 0x0000, 0x0001, 0x0026, 0x0001, + 0x0028, 0x0003, 0x0000, 0x0000, 0x002c, 0x000e, 0x000e, 0xffff, + 0x0005, 0x000e, 0x0017, 0x0022, 0x002d, 0x2099, 0x20a4, 0x0052, + 0x0063, 0x0070, 0x007b, 0x0084, 0x20b5, 0x0001, 0x003e, 0x0001, + 0x0040, 0x0003, 0x0000, 0x0000, 0x0044, 0x000e, 0x000e, 0xffff, + 0x0098, 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x00d5, 0x00e4, 0x00f3, + 0x0100, 0x010d, 0x0116, 0x0121, 0x012e, 0x0008, 0x0000, 0x0000, + // Entry 40900 - 4093F + 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, 0x006e, 0x0004, 0x006b, + 0x0065, 0x0062, 0x0068, 0x0001, 0x002e, 0x0015, 0x0001, 0x002e, + 0x0028, 0x0001, 0x005c, 0x0000, 0x0001, 0x000e, 0x013d, 0x0004, + 0x007c, 0x0076, 0x0073, 0x0079, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0088, 0x00ed, 0x0144, 0x0179, 0x024a, 0x0260, 0x0271, + 0x0282, 0x0002, 0x008b, 0x00bc, 0x0003, 0x008f, 0x009e, 0x00ad, + 0x000d, 0x0008, 0xffff, 0x0000, 0x4eb3, 0x4f75, 0x4f7c, 0x4f83, + // Entry 40940 - 4097F + 0x4ec8, 0x4ecf, 0x4f8a, 0x4edd, 0x4f91, 0x4eeb, 0x4ef2, 0x000d, + 0x000e, 0xffff, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01ea, 0x01e4, + 0x01e4, 0x01ed, 0x01f0, 0x01f3, 0x01f6, 0x01f9, 0x000d, 0x000e, + 0xffff, 0x014a, 0x0157, 0x20be, 0x20c7, 0x20d2, 0x20d9, 0x20e0, + 0x20e7, 0x01a0, 0x01b3, 0x01c2, 0x01d3, 0x0003, 0x00c0, 0x00cf, + 0x00de, 0x000d, 0x0008, 0xffff, 0x0000, 0x4eb3, 0x4f75, 0x4f7c, + 0x4f98, 0x4f9f, 0x4fa6, 0x4f8a, 0x4edd, 0x4f91, 0x4eeb, 0x4ef2, + 0x000d, 0x000e, 0xffff, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01ea, + // Entry 40980 - 409BF + 0x01e4, 0x01e4, 0x01ed, 0x01f0, 0x01f3, 0x01f6, 0x01f9, 0x000d, + 0x000e, 0xffff, 0x014a, 0x0157, 0x20be, 0x20c7, 0x20f4, 0x20fb, + 0x2102, 0x20e7, 0x01a0, 0x01b3, 0x01c2, 0x01d3, 0x0002, 0x00f0, + 0x011a, 0x0005, 0x00f6, 0x00ff, 0x0111, 0x0000, 0x0108, 0x0007, + 0x000e, 0x01fc, 0x0203, 0x020a, 0x2109, 0x0218, 0x021f, 0x0226, + 0x0007, 0x000e, 0x01f6, 0x0292, 0x0295, 0x01f0, 0x0298, 0x0292, + 0x01f0, 0x0007, 0x005c, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, + 0x0023, 0x0028, 0x0007, 0x000e, 0x022d, 0x023a, 0x024d, 0x2110, + // Entry 409C0 - 409FF + 0x0269, 0x027a, 0x0285, 0x0005, 0x0120, 0x0129, 0x013b, 0x0000, + 0x0132, 0x0007, 0x000e, 0x01fc, 0x0203, 0x020a, 0x2109, 0x0218, + 0x021f, 0x0226, 0x0007, 0x000e, 0x01f6, 0x0292, 0x0295, 0x01f0, + 0x0298, 0x0292, 0x01f0, 0x0007, 0x005c, 0x000a, 0x000f, 0x0014, + 0x0019, 0x001e, 0x0023, 0x0028, 0x0007, 0x000e, 0x022d, 0x023a, + 0x024d, 0x2110, 0x0269, 0x027a, 0x0285, 0x0002, 0x0147, 0x0160, + 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, 0x000e, 0xffff, 0x029b, + 0x029f, 0x02a3, 0x02a7, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, + // Entry 40A00 - 40A3F + 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x002d, 0x0045, 0x005f, + 0x0079, 0x0003, 0x0164, 0x016b, 0x0172, 0x0005, 0x000e, 0xffff, + 0x029b, 0x029f, 0x02a3, 0x02a7, 0x0005, 0x000d, 0xffff, 0x0130, + 0x0133, 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x002d, 0x0045, + 0x005f, 0x0079, 0x0002, 0x017c, 0x01e3, 0x0003, 0x0180, 0x01a1, + 0x01c2, 0x0008, 0x018c, 0x0192, 0x0189, 0x0195, 0x0198, 0x019b, + 0x019e, 0x018f, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, 0x032d, + 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, + // Entry 40A40 - 40A7F + 0x00bd, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x00ca, 0x0001, + 0x005c, 0x00d5, 0x0008, 0x01ad, 0x01b3, 0x01aa, 0x01b6, 0x01b9, + 0x01bc, 0x01bf, 0x01b0, 0x0001, 0x005c, 0x00de, 0x0001, 0x0000, + 0x1f9c, 0x0001, 0x005c, 0x00ec, 0x0001, 0x0000, 0x21ec, 0x0001, + 0x005c, 0x00fa, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x00ca, + 0x0001, 0x005c, 0x00d5, 0x0008, 0x01ce, 0x01d4, 0x01cb, 0x01d7, + 0x01da, 0x01dd, 0x01e0, 0x01d1, 0x0001, 0x005c, 0x0097, 0x0001, + 0x000e, 0x032d, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, + // Entry 40A80 - 40ABF + 0x0001, 0x005c, 0x00bd, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, + 0x00ca, 0x0001, 0x005c, 0x00d5, 0x0003, 0x01e7, 0x0208, 0x0229, + 0x0008, 0x01f3, 0x01f9, 0x01f0, 0x01fc, 0x01ff, 0x0202, 0x0205, + 0x01f6, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, 0x032d, 0x0001, + 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x0107, + 0x0001, 0x000e, 0x033f, 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, + 0x011b, 0x0008, 0x0214, 0x021a, 0x0211, 0x021d, 0x0220, 0x0223, + 0x0226, 0x0217, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, 0x032d, + // Entry 40AC0 - 40AFF + 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, + 0x00bd, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x00ca, 0x0001, + 0x005c, 0x00d5, 0x0008, 0x0235, 0x023b, 0x0232, 0x023e, 0x0241, + 0x0244, 0x0247, 0x0238, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, + 0x032d, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, + 0x005c, 0x0107, 0x0001, 0x000e, 0x033f, 0x0001, 0x005c, 0x0112, + 0x0001, 0x005c, 0x011b, 0x0003, 0x0254, 0x025a, 0x024e, 0x0001, + 0x0250, 0x0002, 0x005c, 0x0122, 0x0139, 0x0001, 0x0256, 0x0002, + // Entry 40B00 - 40B3F + 0x000e, 0x0375, 0x0381, 0x0001, 0x025c, 0x0002, 0x000e, 0x0389, + 0x211b, 0x0004, 0x026e, 0x0268, 0x0265, 0x026b, 0x0001, 0x000e, + 0x039a, 0x0001, 0x000e, 0x03ac, 0x0001, 0x000e, 0x03b8, 0x0001, + 0x000d, 0x0216, 0x0004, 0x027f, 0x0279, 0x0276, 0x027c, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x0290, 0x028a, 0x0287, 0x028d, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0295, 0x0001, 0x0297, + // Entry 40B40 - 40B7F + 0x0003, 0x0000, 0x0000, 0x029b, 0x000e, 0x000e, 0x2166, 0x03c1, + 0x2122, 0x212f, 0x213c, 0x2147, 0x2152, 0x215d, 0x2172, 0x0427, + 0x217d, 0x043b, 0x2188, 0x044b, 0x0005, 0x02b1, 0x0000, 0x0000, + 0x0000, 0x02c6, 0x0001, 0x02b3, 0x0003, 0x0000, 0x0000, 0x02b7, + 0x000d, 0x000e, 0xffff, 0x0454, 0x0461, 0x0470, 0x047f, 0x218d, + 0x0499, 0x04a4, 0x219c, 0x04c0, 0x21ab, 0x04dc, 0x04e5, 0x0001, + 0x02c8, 0x0001, 0x02ca, 0x0001, 0x000e, 0x04f4, 0x0005, 0x02d3, + 0x0000, 0x0000, 0x0000, 0x030b, 0x0002, 0x02d6, 0x02f8, 0x0003, + // Entry 40B80 - 40BBF + 0x02da, 0x0000, 0x02e9, 0x000d, 0x000e, 0xffff, 0x04fd, 0x0505, + 0x050d, 0x0517, 0x0521, 0x052b, 0x0535, 0x053d, 0x0543, 0x054b, + 0x0551, 0x055c, 0x000d, 0x000e, 0xffff, 0x0567, 0x21b6, 0x0581, + 0x058e, 0x059c, 0x05ab, 0x05bb, 0x05c6, 0x21c1, 0x05e2, 0x05ed, + 0x0601, 0x0003, 0x0000, 0x0000, 0x02fc, 0x000d, 0x000e, 0xffff, + 0x0613, 0x0622, 0x062d, 0x0638, 0x0643, 0x0652, 0x0661, 0x05c6, + 0x066c, 0x067b, 0x0686, 0x0696, 0x0001, 0x030d, 0x0001, 0x030f, + 0x0001, 0x000e, 0x06a6, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 40BC0 - 40BFF + 0x0319, 0x040b, 0x0001, 0x031b, 0x0001, 0x031d, 0x00ec, 0x000e, + 0x06ab, 0x06c2, 0x06db, 0x06f4, 0x0709, 0x0720, 0x0737, 0x074c, + 0x0763, 0x0778, 0x078f, 0x07a8, 0x07ca, 0x07ea, 0x080a, 0x082a, + 0x084a, 0x085f, 0x0873, 0x088e, 0x08a5, 0x08bc, 0x08d3, 0x08e8, + 0x08fd, 0x0912, 0x0929, 0x0940, 0x0957, 0x0970, 0x0985, 0x099e, + 0x09b5, 0x09ca, 0x09df, 0x09f6, 0x0a0f, 0x0a2c, 0x0a47, 0x0a5a, + 0x0a6f, 0x0a82, 0x0a9d, 0x0ab3, 0x0aca, 0x0ae3, 0x0afa, 0x0b0f, + 0x0b23, 0x0b38, 0x0b53, 0x0b6c, 0x0b82, 0x0b9b, 0x0bb2, 0x0bcb, + // Entry 40C00 - 40C3F + 0x0be2, 0x0bf9, 0x0c12, 0x0c2f, 0x0c48, 0x0c65, 0x0c7c, 0x0c95, + 0x0cae, 0x0ccb, 0x0ce4, 0x0cfb, 0x0d18, 0x0d2f, 0x0d48, 0x0d61, + 0x0d78, 0x0d8f, 0x0daa, 0x0dc1, 0x0dd8, 0x0def, 0x0e08, 0x0e20, + 0x0e39, 0x0e51, 0x0e68, 0x0e81, 0x0e9a, 0x0eb3, 0x0ecc, 0x0ee3, + 0x0efa, 0x0f11, 0x0f28, 0x0f41, 0x0f5c, 0x0f75, 0x0f8e, 0x0fa7, + 0x0fc4, 0x0fd9, 0x0ff2, 0x100b, 0x1023, 0x1038, 0x104f, 0x1068, + 0x107f, 0x1096, 0x10ad, 0x10cc, 0x10e5, 0x1100, 0x1117, 0x1130, + 0x114b, 0x1163, 0x117c, 0x119b, 0x11b4, 0x11cd, 0x11e0, 0x11f9, + // Entry 40C40 - 40C7F + 0x1214, 0x122d, 0x1246, 0x125d, 0x127a, 0x1299, 0x12b2, 0x12d1, + 0x12e5, 0x12fc, 0x1317, 0x132e, 0x1347, 0x1360, 0x1377, 0x1390, + 0x13a6, 0x13bd, 0x13d5, 0x13ee, 0x1405, 0x1418, 0x1431, 0x1448, + 0x1463, 0x147c, 0x1497, 0x14b0, 0x14c5, 0x14dc, 0x14f5, 0x150c, + 0x1527, 0x153e, 0x1559, 0x1576, 0x158f, 0x15a6, 0x15bf, 0x15da, + 0x15f3, 0x1610, 0x1627, 0x163e, 0x165b, 0x1672, 0x168b, 0x16a8, + 0x16c1, 0x16d4, 0x16f1, 0x1706, 0x171d, 0x1736, 0x1753, 0x176b, + 0x1786, 0x17a3, 0x17ba, 0x17d5, 0x17ee, 0x1807, 0x181e, 0x1839, + // Entry 40C80 - 40CBF + 0x1852, 0x186d, 0x1884, 0x189d, 0x18b4, 0x18cd, 0x18ea, 0x1905, + 0x191c, 0x1937, 0x1950, 0x1969, 0x1986, 0x199f, 0x19b8, 0x19d0, + 0x19e7, 0x1a00, 0x1a13, 0x1a32, 0x1a49, 0x1a64, 0x1a7b, 0x1a94, + 0x1aad, 0x1aca, 0x1ae1, 0x1afc, 0x1b15, 0x1b30, 0x1b49, 0x1b62, + 0x1b7a, 0x1b97, 0x1bb0, 0x1bc6, 0x1be1, 0x1bfc, 0x1c15, 0x1c2e, + 0x1c49, 0x1c62, 0x1c79, 0x1c90, 0x1ca9, 0x1cc1, 0x1cdc, 0x1cf5, + 0x1d0e, 0x1d19, 0x1d24, 0x1d2d, 0x0004, 0x0419, 0x0413, 0x0410, + 0x0416, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, + // Entry 40CC0 - 40CFF + 0x000c, 0x001e, 0x0001, 0x000e, 0x1d3a, 0x0005, 0x0422, 0x0000, + 0x0000, 0x0000, 0x0437, 0x0001, 0x0424, 0x0003, 0x0000, 0x0000, + 0x0428, 0x000d, 0x000e, 0xffff, 0x1d43, 0x21d0, 0x1d6b, 0x21e5, + 0x21ec, 0x1d8c, 0x21f9, 0x2202, 0x1daf, 0x1db8, 0x220b, 0x1dcc, + 0x0001, 0x0439, 0x0001, 0x043b, 0x0001, 0x000e, 0x1dd9, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0444, 0x0001, 0x0446, 0x0001, + 0x0448, 0x0002, 0x000e, 0x1dde, 0x1dea, 0x0040, 0x048d, 0x0000, + 0x0000, 0x0492, 0x04af, 0x04c7, 0x04df, 0x04fc, 0x0519, 0x0536, + // Entry 40D00 - 40D3F + 0x0553, 0x056b, 0x0583, 0x05a4, 0x05c0, 0x0000, 0x0000, 0x0000, + 0x05dc, 0x05fb, 0x0613, 0x0000, 0x0000, 0x0000, 0x062b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0630, 0x064a, 0x0664, 0x067e, + 0x0698, 0x06b2, 0x06cc, 0x06e6, 0x0700, 0x071a, 0x0734, 0x074e, + 0x0768, 0x0782, 0x079c, 0x07b6, 0x07d0, 0x07ea, 0x0804, 0x081e, + 0x0838, 0x0000, 0x0852, 0x0000, 0x0857, 0x0873, 0x088b, 0x08a3, + 0x08bf, 0x08d7, 0x08ef, 0x090b, 0x0923, 0x093b, 0x0001, 0x048f, + 0x0001, 0x0009, 0x0877, 0x0003, 0x0496, 0x0499, 0x049e, 0x0001, + // Entry 40D40 - 40D7F + 0x0009, 0x087e, 0x0003, 0x005c, 0x0149, 0x0163, 0x0177, 0x0002, + 0x04a1, 0x04a8, 0x0005, 0x000e, 0x1e65, 0x1e39, 0xffff, 0xffff, + 0x1e4f, 0x0005, 0x000e, 0x1eab, 0x1e93, 0xffff, 0xffff, 0x1e93, + 0x0003, 0x04b3, 0x0000, 0x04b6, 0x0001, 0x0045, 0x0dcd, 0x0002, + 0x04b9, 0x04c0, 0x0005, 0x005c, 0x0193, 0x0193, 0xffff, 0xffff, + 0x0193, 0x0005, 0x005c, 0x01a4, 0x01a4, 0xffff, 0xffff, 0x01a4, + 0x0003, 0x04cb, 0x0000, 0x04ce, 0x0001, 0x0008, 0x0b17, 0x0002, + 0x04d1, 0x04d8, 0x0005, 0x005c, 0x01b7, 0x01b7, 0xffff, 0xffff, + // Entry 40D80 - 40DBF + 0x01b7, 0x0005, 0x005c, 0x01c4, 0x01c4, 0xffff, 0xffff, 0x01c4, + 0x0003, 0x04e3, 0x04e6, 0x04eb, 0x0001, 0x0008, 0x0b3d, 0x0003, + 0x005c, 0x01d3, 0x01f3, 0x020d, 0x0002, 0x04ee, 0x04f5, 0x0005, + 0x005c, 0x0247, 0x022f, 0xffff, 0xffff, 0x0247, 0x0005, 0x005c, + 0x0261, 0x0261, 0xffff, 0xffff, 0x0261, 0x0003, 0x0500, 0x0503, + 0x0508, 0x0001, 0x0008, 0x0ca5, 0x0003, 0x005c, 0x01d3, 0x01f3, + 0x020d, 0x0002, 0x050b, 0x0512, 0x0005, 0x005c, 0x027d, 0x027d, + 0xffff, 0xffff, 0x027d, 0x0005, 0x005c, 0x028c, 0x028c, 0xffff, + // Entry 40DC0 - 40DFF + 0xffff, 0x028c, 0x0003, 0x051d, 0x0520, 0x0525, 0x0001, 0x0008, + 0x0ca5, 0x0003, 0x005c, 0x01d3, 0x01f3, 0x020d, 0x0002, 0x0528, + 0x052f, 0x0005, 0x005c, 0x027d, 0x027d, 0xffff, 0xffff, 0x027d, + 0x0005, 0x005c, 0x028c, 0x028c, 0xffff, 0xffff, 0x028c, 0x0003, + 0x053a, 0x053d, 0x0542, 0x0001, 0x0009, 0x0b35, 0x0003, 0x005c, + 0x029d, 0x02b9, 0x02cf, 0x0002, 0x0545, 0x054c, 0x0005, 0x000e, + 0x1f3d, 0x1f13, 0xffff, 0xffff, 0x1f27, 0x0005, 0x000e, 0x1f81, + 0x1f69, 0xffff, 0xffff, 0x1f69, 0x0003, 0x0557, 0x0000, 0x055a, + // Entry 40E00 - 40E3F + 0x0001, 0x0008, 0x0e09, 0x0002, 0x055d, 0x0564, 0x0005, 0x005c, + 0x02ed, 0x02ed, 0xffff, 0xffff, 0x02ed, 0x0005, 0x005c, 0x02fe, + 0x02fe, 0xffff, 0xffff, 0x02fe, 0x0003, 0x056f, 0x0000, 0x0572, + 0x0001, 0x003f, 0x002e, 0x0002, 0x0575, 0x057c, 0x0005, 0x005c, + 0x0311, 0x0311, 0xffff, 0xffff, 0x0311, 0x0005, 0x005c, 0x031e, + 0x031e, 0xffff, 0xffff, 0x031e, 0x0004, 0x0588, 0x058b, 0x0590, + 0x05a1, 0x0001, 0x000e, 0x022d, 0x0003, 0x005c, 0x032d, 0x0347, + 0x035b, 0x0002, 0x0593, 0x059a, 0x0005, 0x000e, 0x200f, 0x1fe3, + // Entry 40E40 - 40E7F + 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, 0x0030, 0x0018, 0xffff, + 0xffff, 0x0018, 0x0001, 0x005c, 0x0377, 0x0004, 0x05a9, 0x0000, + 0x05ac, 0x05bd, 0x0001, 0x0045, 0x0ac1, 0x0002, 0x05af, 0x05b6, + 0x0005, 0x005c, 0x039f, 0x039f, 0xffff, 0xffff, 0x039f, 0x0005, + 0x005c, 0x03b0, 0x03b0, 0xffff, 0xffff, 0x03b0, 0x0001, 0x005c, + 0x0377, 0x0004, 0x05c5, 0x0000, 0x05c8, 0x05d9, 0x0001, 0x005c, + 0x03c3, 0x0002, 0x05cb, 0x05d2, 0x0005, 0x005c, 0x03c7, 0x03c7, + 0xffff, 0xffff, 0x03c7, 0x0005, 0x005c, 0x03d4, 0x03d4, 0xffff, + // Entry 40E80 - 40EBF + 0xffff, 0x03d4, 0x0001, 0x005c, 0x0377, 0x0003, 0x05e0, 0x05e3, + 0x05ea, 0x0001, 0x000f, 0x0048, 0x0005, 0x000f, 0x0060, 0x0069, + 0x0074, 0x004f, 0x007f, 0x0002, 0x05ed, 0x05f4, 0x0005, 0x000f, + 0x00a4, 0x0094, 0xffff, 0xffff, 0x00a4, 0x0005, 0x000f, 0x00c8, + 0x00c8, 0xffff, 0xffff, 0x00c8, 0x0003, 0x05ff, 0x0000, 0x0602, + 0x0001, 0x0008, 0x10aa, 0x0002, 0x0605, 0x060c, 0x0005, 0x005c, + 0x03e3, 0x03e3, 0xffff, 0xffff, 0x03e3, 0x0005, 0x005c, 0x03f0, + 0x03f0, 0xffff, 0xffff, 0x03f0, 0x0003, 0x0617, 0x0000, 0x061a, + // Entry 40EC0 - 40EFF + 0x0001, 0x0008, 0x10aa, 0x0002, 0x061d, 0x0624, 0x0005, 0x005c, + 0x03e3, 0x03e3, 0xffff, 0xffff, 0x03e3, 0x0005, 0x005c, 0x03f0, + 0x03f0, 0xffff, 0xffff, 0x03f0, 0x0001, 0x062d, 0x0001, 0x000f, + 0x00dc, 0x0003, 0x0000, 0x0634, 0x0639, 0x0003, 0x005c, 0x032d, + 0x03ff, 0x035b, 0x0002, 0x063c, 0x0643, 0x0005, 0x000e, 0x200f, + 0x1fe3, 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, 0x0030, 0x0018, + 0xffff, 0xffff, 0x0018, 0x0003, 0x0000, 0x064e, 0x0653, 0x0003, + 0x005c, 0x040f, 0x0423, 0x042d, 0x0002, 0x0656, 0x065d, 0x0005, + // Entry 40F00 - 40F3F + 0x000e, 0x200f, 0x1fe3, 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, + 0x0030, 0x0018, 0xffff, 0xffff, 0x0018, 0x0003, 0x0000, 0x0668, + 0x066d, 0x0003, 0x005c, 0x040f, 0x0423, 0x042d, 0x0002, 0x0670, + 0x0677, 0x0005, 0x000e, 0x200f, 0x1fe3, 0xffff, 0xffff, 0x1ff9, + 0x0005, 0x000f, 0x0030, 0x0018, 0xffff, 0xffff, 0x0018, 0x0003, + 0x0000, 0x0682, 0x0687, 0x0003, 0x005c, 0x0443, 0x0465, 0x047b, + 0x0002, 0x068a, 0x0691, 0x0005, 0x005c, 0x04d7, 0x049f, 0xffff, + 0xffff, 0x04bb, 0x0005, 0x005c, 0x0513, 0x04f5, 0xffff, 0xffff, + // Entry 40F40 - 40F7F + 0x04f5, 0x0003, 0x0000, 0x069c, 0x06a1, 0x0003, 0x005c, 0x0533, + 0x0549, 0x0553, 0x0002, 0x06a4, 0x06ab, 0x0005, 0x005c, 0x04d7, + 0x049f, 0xffff, 0xffff, 0x04bb, 0x0005, 0x005c, 0x0513, 0x04f5, + 0xffff, 0xffff, 0x04f5, 0x0003, 0x0000, 0x06b6, 0x06bb, 0x0003, + 0x005c, 0x0533, 0x0549, 0x0553, 0x0002, 0x06be, 0x06c5, 0x0005, + 0x005c, 0x04d7, 0x049f, 0xffff, 0xffff, 0x056b, 0x0005, 0x005c, + 0x0513, 0x04f5, 0xffff, 0xffff, 0x04f5, 0x0003, 0x0000, 0x06d0, + 0x06d5, 0x0003, 0x005c, 0x0586, 0x05a2, 0x05b2, 0x0002, 0x06d8, + // Entry 40F80 - 40FBF + 0x06df, 0x0005, 0x005c, 0x05fc, 0x05d0, 0xffff, 0xffff, 0x05e6, + 0x0005, 0x005c, 0x062c, 0x0614, 0xffff, 0xffff, 0x0614, 0x0003, + 0x0000, 0x06ea, 0x06ef, 0x0003, 0x005c, 0x0646, 0x065c, 0x0666, + 0x0002, 0x06f2, 0x06f9, 0x0005, 0x005c, 0x05fc, 0x05d0, 0xffff, + 0xffff, 0x05e6, 0x0005, 0x005c, 0x062c, 0x0614, 0xffff, 0xffff, + 0x0614, 0x0003, 0x0000, 0x0704, 0x0709, 0x0003, 0x005c, 0x0646, + 0x065c, 0x0666, 0x0002, 0x070c, 0x0713, 0x0005, 0x005c, 0x05fc, + 0x05d0, 0xffff, 0xffff, 0x05e6, 0x0005, 0x005c, 0x062c, 0x0614, + // Entry 40FC0 - 40FFF + 0xffff, 0xffff, 0x0614, 0x0003, 0x0000, 0x071e, 0x0723, 0x0003, + 0x005c, 0x067e, 0x0696, 0x06a4, 0x0002, 0x0726, 0x072d, 0x0005, + 0x005c, 0x06e6, 0x06be, 0xffff, 0xffff, 0x06d2, 0x0005, 0x005c, + 0x0710, 0x06fa, 0xffff, 0xffff, 0x06fa, 0x0003, 0x0000, 0x0738, + 0x073d, 0x0003, 0x005c, 0x0726, 0x073a, 0x0744, 0x0002, 0x0740, + 0x0747, 0x0005, 0x005c, 0x06e6, 0x06be, 0xffff, 0xffff, 0x06d2, + 0x0005, 0x005c, 0x0710, 0x06fa, 0xffff, 0xffff, 0x06fa, 0x0003, + 0x0000, 0x0752, 0x0757, 0x0003, 0x005c, 0x0726, 0x073a, 0x0744, + // Entry 41000 - 4103F + 0x0002, 0x075a, 0x0761, 0x0005, 0x005c, 0x06e6, 0x06be, 0xffff, + 0xffff, 0x06d2, 0x0005, 0x005c, 0x0710, 0x06fa, 0xffff, 0xffff, + 0x06fa, 0x0003, 0x0000, 0x076c, 0x0771, 0x0003, 0x005c, 0x075a, + 0x077a, 0x078e, 0x0002, 0x0774, 0x077b, 0x0005, 0x005c, 0x07e4, + 0x07b0, 0xffff, 0xffff, 0x07ca, 0x0005, 0x005c, 0x081c, 0x0800, + 0xffff, 0xffff, 0x0800, 0x0003, 0x0000, 0x0786, 0x078b, 0x0003, + 0x005c, 0x083a, 0x0850, 0x085a, 0x0002, 0x078e, 0x0795, 0x0005, + 0x005c, 0x07e4, 0x07b0, 0xffff, 0xffff, 0x07ca, 0x0005, 0x005c, + // Entry 41040 - 4107F + 0x081c, 0x0800, 0xffff, 0xffff, 0x0800, 0x0003, 0x0000, 0x07a0, + 0x07a5, 0x0003, 0x005c, 0x083a, 0x0850, 0x085a, 0x0002, 0x07a8, + 0x07af, 0x0005, 0x005c, 0x07e4, 0x07b0, 0xffff, 0xffff, 0x07ca, + 0x0005, 0x005c, 0x081c, 0x0800, 0xffff, 0xffff, 0x0800, 0x0003, + 0x0000, 0x07ba, 0x07bf, 0x0003, 0x005c, 0x0872, 0x088c, 0x089a, + 0x0002, 0x07c2, 0x07c9, 0x0005, 0x005c, 0x08de, 0x08b6, 0xffff, + 0xffff, 0x08ca, 0x0005, 0x005c, 0x090a, 0x08f4, 0xffff, 0xffff, + 0x08f4, 0x0003, 0x0000, 0x07d4, 0x07d9, 0x0003, 0x005c, 0x0922, + // Entry 41080 - 410BF + 0x0938, 0x0942, 0x0002, 0x07dc, 0x07e3, 0x0005, 0x005c, 0x08de, + 0x08b6, 0xffff, 0xffff, 0x08ca, 0x0005, 0x005c, 0x090a, 0x08f4, + 0xffff, 0xffff, 0x08f4, 0x0003, 0x0000, 0x07ee, 0x07f3, 0x0003, + 0x005c, 0x0922, 0x0938, 0x0942, 0x0002, 0x07f6, 0x07fd, 0x0005, + 0x005c, 0x08de, 0x08b6, 0xffff, 0xffff, 0x08ca, 0x0005, 0x005c, + 0x090a, 0x08f4, 0xffff, 0xffff, 0x08f4, 0x0003, 0x0000, 0x0808, + 0x080d, 0x0003, 0x005c, 0x095a, 0x0974, 0x0984, 0x0002, 0x0810, + 0x0817, 0x0005, 0x005c, 0x09cc, 0x09a0, 0xffff, 0xffff, 0x09b6, + // Entry 410C0 - 410FF + 0x0005, 0x005c, 0x09fa, 0x09e2, 0xffff, 0xffff, 0x09e2, 0x0003, + 0x0000, 0x0822, 0x0827, 0x0003, 0x005c, 0x0a12, 0x0a26, 0x0a30, + 0x0002, 0x082a, 0x0831, 0x0005, 0x005c, 0x09cc, 0x09a0, 0xffff, + 0xffff, 0x09b6, 0x0005, 0x005c, 0x09fa, 0x09e2, 0xffff, 0xffff, + 0x09e2, 0x0003, 0x0000, 0x083c, 0x0841, 0x0003, 0x005c, 0x0a12, + 0x0a26, 0x0a30, 0x0002, 0x0844, 0x084b, 0x0005, 0x005c, 0x09cc, + 0x09a0, 0xffff, 0xffff, 0x09b6, 0x0005, 0x005c, 0x09fa, 0x09e2, + 0xffff, 0xffff, 0x09e2, 0x0001, 0x0854, 0x0001, 0x005c, 0x0a46, + // Entry 41100 - 4113F + 0x0003, 0x085b, 0x085e, 0x0862, 0x0001, 0x005c, 0x0a68, 0x0002, + 0x005c, 0xffff, 0x0a6f, 0x0002, 0x0865, 0x086c, 0x0005, 0x000f, + 0x0136, 0x0114, 0xffff, 0xffff, 0x0124, 0x0005, 0x000f, 0x016e, + 0x015a, 0xffff, 0xffff, 0x015a, 0x0003, 0x0877, 0x0000, 0x087a, + 0x0001, 0x0055, 0x13d2, 0x0002, 0x087d, 0x0884, 0x0005, 0x005c, + 0x0a81, 0x0a81, 0xffff, 0xffff, 0x0a81, 0x0005, 0x005c, 0x0a8e, + 0x0a8e, 0xffff, 0xffff, 0x0a8e, 0x0003, 0x088f, 0x0000, 0x0892, + 0x0001, 0x0055, 0x13d2, 0x0002, 0x0895, 0x089c, 0x0005, 0x005c, + // Entry 41140 - 4117F + 0x0a81, 0x0a81, 0xffff, 0xffff, 0x0a81, 0x0005, 0x005c, 0x0a8e, + 0x0a8e, 0xffff, 0xffff, 0x0a8e, 0x0003, 0x08a7, 0x08aa, 0x08ae, + 0x0001, 0x000f, 0x0182, 0x0002, 0x005c, 0xffff, 0x0a9d, 0x0002, + 0x08b1, 0x08b8, 0x0005, 0x000f, 0x01a1, 0x018d, 0xffff, 0xffff, + 0x01a1, 0x0005, 0x000f, 0x01cd, 0x01cd, 0xffff, 0xffff, 0x01cd, + 0x0003, 0x08c3, 0x0000, 0x08c6, 0x0001, 0x0011, 0x0ce0, 0x0002, + 0x08c9, 0x08d0, 0x0005, 0x005c, 0x0ab3, 0x0ab3, 0xffff, 0xffff, + 0x0ab3, 0x0005, 0x005c, 0x0ac4, 0x0ac4, 0xffff, 0xffff, 0x0ac4, + // Entry 41180 - 411BF + 0x0003, 0x08db, 0x0000, 0x08de, 0x0001, 0x0011, 0x0ce0, 0x0002, + 0x08e1, 0x08e8, 0x0005, 0x005c, 0x0ab3, 0x0ab3, 0xffff, 0xffff, + 0x0ab3, 0x0005, 0x005c, 0x0ac4, 0x0ac4, 0xffff, 0xffff, 0x0ac4, + 0x0003, 0x08f3, 0x08f6, 0x08fa, 0x0001, 0x000f, 0x01e5, 0x0002, + 0x005c, 0xffff, 0x0ad7, 0x0002, 0x08fd, 0x0904, 0x0005, 0x005c, + 0x0b10, 0x0ae0, 0xffff, 0xffff, 0x0af8, 0x0005, 0x000f, 0x026a, + 0x0250, 0xffff, 0xffff, 0x0250, 0x0003, 0x090f, 0x0000, 0x0912, + 0x0001, 0x0011, 0x0d52, 0x0002, 0x0915, 0x091c, 0x0005, 0x005c, + // Entry 411C0 - 411FF + 0x0b28, 0x0b28, 0xffff, 0xffff, 0x0b28, 0x0005, 0x005c, 0x0b39, + 0x0b39, 0xffff, 0xffff, 0x0b39, 0x0003, 0x0927, 0x0000, 0x092a, + 0x0001, 0x005c, 0x0b4c, 0x0002, 0x092d, 0x0934, 0x0005, 0x005c, + 0x0b50, 0x0b50, 0xffff, 0xffff, 0x0b50, 0x0005, 0x005c, 0x0b5d, + 0x0b5d, 0xffff, 0xffff, 0x0b5d, 0x0001, 0x093d, 0x0001, 0x0045, + 0x176e, 0x0004, 0x0945, 0x094a, 0x094f, 0x095e, 0x0003, 0x0000, + 0x1dc7, 0x3acc, 0x3ad3, 0x0003, 0x0000, 0x1de0, 0x3ad7, 0x3af2, + 0x0002, 0x0000, 0x0952, 0x0003, 0x0000, 0x0959, 0x0956, 0x0001, + // Entry 41200 - 4123F + 0x005c, 0x0b6c, 0x0003, 0x005c, 0xffff, 0x0ba7, 0x0be5, 0x0002, + 0x0b45, 0x0961, 0x0003, 0x0965, 0x0aa5, 0x0a05, 0x009e, 0x000f, + 0xffff, 0xffff, 0xffff, 0xffff, 0x03bd, 0x611b, 0x0552, 0x618f, + 0x6266, 0x6331, 0x6408, 0x07ff, 0x64df, 0x0982, 0x0a11, 0x0aa0, + 0x6556, 0x4034, 0x0c6c, 0x0d46, 0x0e4d, 0x0f1b, 0x0fe9, 0x107e, + 0x10f5, 0xffff, 0xffff, 0x11b6, 0xffff, 0x6623, 0xffff, 0x1323, + 0x139a, 0x140b, 0x1482, 0xffff, 0xffff, 0x156a, 0x15f9, 0x16a6, + 0xffff, 0xffff, 0xffff, 0x177a, 0xffff, 0x183e, 0x18eb, 0xffff, + // Entry 41240 - 4127F + 0x199e, 0x1a51, 0x1b13, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c2e, + 0xffff, 0xffff, 0x1cff, 0x1db5, 0xffff, 0xffff, 0x1ec4, 0x1f80, + 0x200f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2197, + 0x2208, 0x2285, 0x2314, 0x239d, 0xffff, 0xffff, 0x6827, 0xffff, + 0x2582, 0xffff, 0xffff, 0x267b, 0xffff, 0x2798, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2892, 0xffff, 0x6919, 0x69e2, 0x293d, 0x29cf, + 0xffff, 0xffff, 0xffff, 0x2a94, 0x2b44, 0x2bdc, 0xffff, 0xffff, + 0x2cb2, 0x2dad, 0x2e48, 0x2eb9, 0xffff, 0xffff, 0x2f86, 0x300f, + // Entry 41280 - 412BF + 0x3080, 0xffff, 0x312e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x32db, 0x335e, 0x33db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x6b14, 0xffff, 0xffff, 0x35ea, 0xffff, 0x3675, + 0xffff, 0x372e, 0x37b1, 0x3846, 0xffff, 0x38e7, 0x3982, 0xffff, + 0xffff, 0xffff, 0x3a7d, 0x3b00, 0xffff, 0xffff, 0x02ab, 0x04d5, + 0x087c, 0x08ff, 0xffff, 0xffff, 0x2701, 0x321a, 0x009e, 0x000f, + 0x60fb, 0x0342, 0x036f, 0x0398, 0x03e6, 0x6128, 0x056a, 0x61cc, + 0x629f, 0x636e, 0x6445, 0x0817, 0x64f5, 0x09a0, 0x0a2f, 0x0acd, + // Entry 412C0 - 412FF + 0x6574, 0x4052, 0x0ca3, 0x0d8c, 0x0e80, 0x0f4e, 0x1009, 0x1094, + 0x1113, 0x1184, 0x119a, 0x11d4, 0x1245, 0x6652, 0x130b, 0x1339, + 0x13ae, 0x141f, 0x14a0, 0x66e5, 0x1538, 0x1588, 0x161e, 0x16ba, + 0x1717, 0x172f, 0x1755, 0x17a1, 0x1824, 0x1866, 0x1915, 0x670c, + 0x19c8, 0x1a80, 0x1b27, 0x1b84, 0x1bb1, 0x1bf4, 0x672d, 0x1c48, + 0x1cb1, 0x6747, 0x1d2a, 0x1de0, 0x6773, 0x1eaa, 0x1ef1, 0x1f9d, + 0x2023, 0x2080, 0x20b1, 0x20de, 0x20fa, 0x2131, 0x2164, 0x21ab, + 0x2220, 0x22a3, 0x2330, 0x23d8, 0x2481, 0x24b4, 0x24ff, 0x256c, + // Entry 41300 - 4133F + 0x25a4, 0x6843, 0x6861, 0x2696, 0x68b8, 0x27b2, 0x2819, 0x2835, + 0x284f, 0x2867, 0x28b2, 0x2927, 0x6943, 0x6a02, 0x295c, 0x29e7, + 0x2a4c, 0x2a68, 0x2a7e, 0x2abd, 0x2b65, 0x2bfe, 0x2c77, 0x2c8b, + 0x2ce0, 0x2dcf, 0x2e5c, 0x2ed5, 0x2f42, 0x2f58, 0x2fa2, 0x3023, + 0x309c, 0x3109, 0x315b, 0x31e8, 0x6ada, 0x6af2, 0x32a9, 0x32c3, + 0x32f5, 0x3376, 0x33f1, 0x3452, 0x346c, 0x349d, 0x34ca, 0x34ef, + 0x3509, 0x351d, 0x6b2c, 0x35b0, 0x35d0, 0x3600, 0x6b7c, 0x3699, + 0x3716, 0x3748, 0x37d1, 0x3860, 0x38c9, 0x3909, 0x39a0, 0x3a11, + // Entry 41340 - 4137F + 0x3a29, 0x3a4a, 0x3a97, 0x3b26, 0x1e6b, 0x2d71, 0x02bf, 0x04ed, + 0x0896, 0x0919, 0xffff, 0x263d, 0x2717, 0x3238, 0x009e, 0x000f, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0424, 0x6156, 0x0597, 0x621e, + 0x62ed, 0x63c0, 0x6497, 0x0844, 0x6520, 0x09d3, 0x0a62, 0x0b0f, + 0x65a7, 0x65e5, 0x0cef, 0x0de7, 0x0ec8, 0x0f96, 0x103e, 0x10bf, + 0x1146, 0xffff, 0xffff, 0x1207, 0xffff, 0x6696, 0xffff, 0x1364, + 0x13d7, 0x144e, 0x14d3, 0xffff, 0xffff, 0x15bb, 0x1658, 0x16e3, + 0xffff, 0xffff, 0xffff, 0x17dd, 0xffff, 0x18a3, 0x1954, 0xffff, + // Entry 41380 - 413BF + 0x1a07, 0x1ac4, 0x1b50, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c77, + 0xffff, 0xffff, 0x1d6a, 0x1e20, 0xffff, 0xffff, 0x1f33, 0x678f, + 0x204c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21d4, + 0x224d, 0x22d6, 0x2361, 0x67cc, 0xffff, 0xffff, 0x2530, 0xffff, + 0x25db, 0xffff, 0xffff, 0x26c6, 0xffff, 0x68df, 0xffff, 0xffff, + 0xffff, 0xffff, 0x28e7, 0xffff, 0x698d, 0x6a42, 0x2990, 0x2a14, + 0xffff, 0xffff, 0xffff, 0x2afb, 0x2b9b, 0x2c35, 0xffff, 0xffff, + 0x2d23, 0x2e06, 0x2e85, 0x2f06, 0xffff, 0xffff, 0x2fd3, 0x304c, + // Entry 413C0 - 413FF + 0x30cd, 0xffff, 0x6a8d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3324, 0x33a3, 0x341c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x6b59, 0xffff, 0xffff, 0x362b, 0xffff, 0x36d2, + 0xffff, 0x3777, 0x3806, 0x388f, 0xffff, 0x3940, 0x39d3, 0xffff, + 0xffff, 0xffff, 0x3ac6, 0x3b61, 0xffff, 0xffff, 0x02e8, 0x051a, + 0x08c5, 0x0948, 0xffff, 0xffff, 0x6882, 0x326b, 0x0003, 0x0b49, + 0x0bb8, 0x0b7c, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 41400 - 4143F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 41440 - 4147F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x22b1, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 41480 - 414BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2287, 0x2290, 0xffff, 0x2299, 0x0001, 0x0002, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, 0x00dc, 0x0000, 0x0000, + 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, 0x000d, 0x0045, + 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, 0x2b41, 0x2b48, 0x2b4f, + // Entry 414C0 - 414FF + 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, 0x0001, 0x0033, 0x000d, + 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, 0x2b41, 0x2b48, + 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, 0x0002, 0x0045, + 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, 0x0007, 0x0045, 0x0ac1, + 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0007, 0x005c, + 0x0c10, 0x0c1f, 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, 0x0c6a, 0x0003, + 0x005f, 0x0000, 0x0068, 0x0007, 0x0045, 0x0ac1, 0x0ac9, 0x2b76, + 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0007, 0x005c, 0x0c10, 0x0c1f, + // Entry 41500 - 4153F + 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, 0x0c6a, 0x0002, 0x0074, 0x00bd, + 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, 0x0084, 0x008a, 0x0081, + 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, 0x0001, 0x005c, 0x0097, + 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, + 0x00ad, 0x0001, 0x005c, 0x0107, 0x0001, 0x005c, 0x0c8d, 0x0001, + 0x005c, 0x0112, 0x0001, 0x005c, 0x00d5, 0x0008, 0x0000, 0x0000, + 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00a5, 0x0001, 0x005c, + 0x0097, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x0107, 0x0001, + // Entry 41540 - 4157F + 0x005c, 0x0c8d, 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, 0x011b, + 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, + 0x00ad, 0x0003, 0x00c1, 0x00ca, 0x00d3, 0x0002, 0x00c4, 0x00c7, + 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00ad, 0x0002, 0x00cd, + 0x00d0, 0x0001, 0x000e, 0x01ed, 0x0001, 0x0000, 0x21ec, 0x0002, + 0x00d6, 0x00d9, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00ad, + 0x0003, 0x0000, 0x0000, 0x00e0, 0x0002, 0x00e3, 0x00e6, 0x0001, + 0x005c, 0x0c9a, 0x0002, 0x005c, 0xffff, 0x0139, 0x0001, 0x0002, + // Entry 41580 - 415BF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, + 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, 0x00dc, + 0x0000, 0x0000, 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, + 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, 0x2b41, + 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, 0x0001, + 0x0033, 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, + 0x2b41, 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, + // Entry 415C0 - 415FF + 0x0002, 0x0045, 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, 0x0007, + 0x0045, 0x0ac1, 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, + 0x0007, 0x005c, 0x0c10, 0x0c1f, 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, + 0x0c6a, 0x0003, 0x005f, 0x0000, 0x0068, 0x0007, 0x0045, 0x0ac1, + 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0007, 0x005c, + 0x0c10, 0x0c1f, 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, 0x0c6a, 0x0002, + 0x0074, 0x00bd, 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, 0x0084, + 0x008a, 0x0081, 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, 0x0001, + // Entry 41600 - 4163F + 0x005c, 0x0097, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00a2, + 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x0107, 0x0001, 0x005c, + 0x0c8d, 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, 0x00d5, 0x0008, + 0x0000, 0x0000, 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00a5, + 0x0001, 0x005c, 0x0097, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, + 0x0107, 0x0001, 0x005c, 0x0c8d, 0x0001, 0x005c, 0x0112, 0x0001, + 0x005c, 0x011b, 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005c, 0x0c77, + 0x0001, 0x005c, 0x00ad, 0x0003, 0x00c1, 0x00ca, 0x00d3, 0x0002, + // Entry 41640 - 4167F + 0x00c4, 0x00c7, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00ad, + 0x0002, 0x00cd, 0x00d0, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, + 0x21ec, 0x0002, 0x00d6, 0x00d9, 0x0001, 0x005c, 0x0c77, 0x0001, + 0x005c, 0x00ad, 0x0003, 0x0000, 0x0000, 0x00e0, 0x0001, 0x00e2, + 0x0001, 0x005c, 0x0c9a, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, + 0x0019, 0x003e, 0x0000, 0x0057, 0x0002, 0x001c, 0x002d, 0x0001, + // Entry 41680 - 416BF + 0x001e, 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, + 0x2b41, 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, + 0x0001, 0x002f, 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, + 0x2b39, 0x2b41, 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, + 0x2b6e, 0x0002, 0x0041, 0x004c, 0x0001, 0x0043, 0x0007, 0x0045, + 0x0ac1, 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0001, + 0x004e, 0x0007, 0x0045, 0x0ac1, 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, + 0x0ae7, 0x2b82, 0x0002, 0x005a, 0x0093, 0x0002, 0x005d, 0x0078, + // Entry 416C0 - 416FF + 0x0008, 0x0000, 0x0000, 0x0066, 0x006c, 0x006f, 0x0072, 0x0075, + 0x0069, 0x0001, 0x005c, 0x0097, 0x0001, 0x005c, 0x00a2, 0x0001, + 0x005c, 0x0107, 0x0001, 0x005c, 0x0c8d, 0x0001, 0x005c, 0x00ca, + 0x0001, 0x005c, 0x00d5, 0x0008, 0x0000, 0x0000, 0x0081, 0x0087, + 0x008a, 0x008d, 0x0090, 0x0084, 0x0001, 0x005c, 0x0097, 0x0001, + 0x005c, 0x00a2, 0x0001, 0x005c, 0x0107, 0x0001, 0x005c, 0x0c8d, + 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, 0x011b, 0x0002, 0x0000, + 0x0096, 0x0002, 0x0099, 0x009c, 0x0001, 0x0000, 0x1f9c, 0x0001, + // Entry 41700 - 4173F + 0x0000, 0x21ec, 0x0003, 0x0004, 0x044c, 0x0940, 0x0012, 0x0017, + 0x0000, 0x0024, 0x0000, 0x003c, 0x0000, 0x0054, 0x007f, 0x0293, + 0x02ab, 0x02cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0312, 0x041c, + 0x043e, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, + 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0001, 0x0026, + 0x0001, 0x0028, 0x0003, 0x0000, 0x0000, 0x002c, 0x000e, 0x005c, + 0xffff, 0x0cb5, 0x0cba, 0x0cbf, 0x0cc5, 0x0ccb, 0x0cd0, 0x0cd7, + 0x0ce0, 0x0ce9, 0x0cf1, 0x0cf7, 0x0cfc, 0x0d02, 0x0001, 0x003e, + // Entry 41740 - 4177F + 0x0001, 0x0040, 0x0003, 0x0000, 0x0000, 0x0044, 0x000e, 0x0000, + 0xffff, 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x3b17, 0x0458, + 0x0460, 0x393f, 0x046e, 0x3946, 0x3b1f, 0x0481, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, 0x006e, 0x0004, + 0x006b, 0x0065, 0x0062, 0x0068, 0x0001, 0x002e, 0x0015, 0x0001, + 0x002e, 0x0028, 0x0001, 0x005c, 0x0000, 0x0001, 0x000e, 0x013d, + 0x0004, 0x007c, 0x0076, 0x0073, 0x0079, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 41780 - 417BF + 0x03c6, 0x0008, 0x0088, 0x00ed, 0x0144, 0x0179, 0x024a, 0x0260, + 0x0271, 0x0282, 0x0002, 0x008b, 0x00bc, 0x0003, 0x008f, 0x009e, + 0x00ad, 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x3399, 0x32c0, + 0x3413, 0x3230, 0x3234, 0x0075, 0x32fb, 0x32ff, 0x3303, 0x0085, + 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, + 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x3a8f, 0x3a91, 0x000d, + 0x000d, 0xffff, 0x0089, 0x0090, 0x0098, 0x3366, 0x3413, 0x3230, + 0x3234, 0x00ad, 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0003, 0x00c0, + // Entry 417C0 - 417FF + 0x00cf, 0x00de, 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x3399, + 0x32c0, 0x3413, 0x3230, 0x3234, 0x0075, 0x32fb, 0x32ff, 0x3303, + 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x3a8d, 0x1f9c, + 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x3a8f, 0x3a91, + 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, 0x0098, 0x3366, 0x3413, + 0x3230, 0x3234, 0x00ad, 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0002, + 0x00f0, 0x011a, 0x0005, 0x00f6, 0x00ff, 0x0111, 0x0000, 0x0108, + 0x0007, 0x000d, 0x00d8, 0x3417, 0x00e0, 0x341b, 0x00e8, 0x00ed, + // Entry 41800 - 4183F + 0x00f1, 0x0007, 0x0000, 0x3a8f, 0x21ec, 0x2010, 0x2002, 0x21ee, + 0x21ec, 0x2002, 0x0007, 0x0013, 0x0587, 0x058a, 0x311d, 0x3139, + 0x313c, 0x3140, 0x3143, 0x0007, 0x005a, 0x001d, 0x2a39, 0x2a44, + 0x0036, 0x2a4b, 0x2a55, 0x2a5b, 0x0005, 0x0120, 0x0129, 0x013b, + 0x0000, 0x0132, 0x0007, 0x000d, 0x00d8, 0x3417, 0x00e0, 0x341b, + 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x0000, 0x3a8f, 0x21ec, 0x2010, + 0x2002, 0x21ee, 0x21ec, 0x2002, 0x0007, 0x0013, 0x0587, 0x058a, + 0x311d, 0x3139, 0x313c, 0x3140, 0x3143, 0x0007, 0x005a, 0x001d, + // Entry 41840 - 4187F + 0x2a39, 0x2a44, 0x0036, 0x2a4b, 0x2a55, 0x2a5b, 0x0002, 0x0147, + 0x0160, 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, 0x0130, + 0x0133, 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x0d07, 0x0d14, + 0x0d22, 0x0d31, 0x0003, 0x0164, 0x016b, 0x0172, 0x0005, 0x0000, + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, + 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x0d07, + 0x0d14, 0x0d22, 0x0d31, 0x0002, 0x017c, 0x01e3, 0x0003, 0x0180, + // Entry 41880 - 418BF + 0x01a1, 0x01c2, 0x0008, 0x018c, 0x0192, 0x0189, 0x0195, 0x0198, + 0x019b, 0x019e, 0x018f, 0x0001, 0x000d, 0x0177, 0x0001, 0x005c, + 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, + 0x000d, 0x0197, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x005c, 0x0d55, + 0x0001, 0x002e, 0x0176, 0x0008, 0x01ad, 0x01b3, 0x01aa, 0x01b6, + 0x01b9, 0x01bc, 0x01bf, 0x01b0, 0x0001, 0x005c, 0x0d5c, 0x0001, + 0x0000, 0x1f9c, 0x0001, 0x005c, 0x0d65, 0x0001, 0x0000, 0x21ec, + 0x0001, 0x005c, 0x0d6d, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x005c, + // Entry 418C0 - 418FF + 0x0d55, 0x0001, 0x002e, 0x0176, 0x0008, 0x01ce, 0x01d4, 0x01cb, + 0x01d7, 0x01da, 0x01dd, 0x01e0, 0x01d1, 0x0001, 0x000d, 0x0177, + 0x0001, 0x005c, 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, + 0x0d4c, 0x0001, 0x000d, 0x0197, 0x0001, 0x005c, 0x0d4c, 0x0001, + 0x005c, 0x0d55, 0x0001, 0x002e, 0x0176, 0x0003, 0x01e7, 0x0208, + 0x0229, 0x0008, 0x01f3, 0x01f9, 0x01f0, 0x01fc, 0x01ff, 0x0202, + 0x0205, 0x01f6, 0x0001, 0x000d, 0x0177, 0x0001, 0x005c, 0x0d42, + 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x0050, + // Entry 41900 - 4193F + 0x0825, 0x0001, 0x000d, 0x018f, 0x0001, 0x005c, 0x0d74, 0x0001, + 0x005c, 0x0d7a, 0x0008, 0x0214, 0x021a, 0x0211, 0x021d, 0x0220, + 0x0223, 0x0226, 0x0217, 0x0001, 0x000d, 0x0177, 0x0001, 0x005c, + 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, + 0x000d, 0x0197, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x005c, 0x0d55, + 0x0001, 0x002e, 0x0176, 0x0008, 0x0235, 0x023b, 0x0232, 0x023e, + 0x0241, 0x0244, 0x0247, 0x0238, 0x0001, 0x000d, 0x0177, 0x0001, + 0x005c, 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, + // Entry 41940 - 4197F + 0x0001, 0x0050, 0x0825, 0x0001, 0x000d, 0x018f, 0x0001, 0x005c, + 0x0d74, 0x0001, 0x005c, 0x0d7a, 0x0003, 0x0254, 0x025a, 0x024e, + 0x0001, 0x0250, 0x0002, 0x005c, 0x0d7f, 0x0d8c, 0x0001, 0x0256, + 0x0002, 0x000d, 0x01d5, 0x341f, 0x0001, 0x025c, 0x0002, 0x0050, + 0x03b3, 0x03c5, 0x0004, 0x026e, 0x0268, 0x0265, 0x026b, 0x0001, + 0x000e, 0x039a, 0x0001, 0x000e, 0x03ac, 0x0001, 0x000e, 0x03b8, + 0x0001, 0x000d, 0x0216, 0x0004, 0x027f, 0x0279, 0x0276, 0x027c, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + // Entry 41980 - 419BF + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0290, 0x028a, 0x0287, + 0x028d, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0295, 0x0001, + 0x0297, 0x0003, 0x0000, 0x0000, 0x029b, 0x000e, 0x005c, 0x0dc4, + 0x0d95, 0x0d9c, 0x0da4, 0x0dab, 0x0db1, 0x0db8, 0x0dbf, 0x0dcc, + 0x0dd2, 0x0dd7, 0x0ddd, 0x0de3, 0x0de6, 0x0005, 0x02b1, 0x0000, + 0x0000, 0x0000, 0x02c6, 0x0001, 0x02b3, 0x0003, 0x0000, 0x0000, + 0x02b7, 0x000d, 0x005c, 0xffff, 0x0deb, 0x0df3, 0x0dfb, 0x0e03, + // Entry 419C0 - 419FF + 0x0e09, 0x0e11, 0x0e17, 0x0e1e, 0x0e26, 0x0e2f, 0x0e35, 0x0e3a, + 0x0001, 0x02c8, 0x0001, 0x02ca, 0x0001, 0x0025, 0x05c0, 0x0005, + 0x02d3, 0x0000, 0x0000, 0x0000, 0x030b, 0x0002, 0x02d6, 0x02f8, + 0x0003, 0x02da, 0x0000, 0x02e9, 0x000d, 0x0000, 0xffff, 0x0606, + 0x3952, 0x3b26, 0x3b2d, 0x3b34, 0x3b3d, 0x3b46, 0x3b4d, 0x3980, + 0x3b52, 0x3b57, 0x3b5e, 0x000d, 0x005c, 0xffff, 0x0e42, 0x0e4a, + 0x0e50, 0x0e59, 0x0e63, 0x0e6c, 0x0e76, 0x0e7d, 0x0e86, 0x0e8e, + 0x0e95, 0x0ea2, 0x0003, 0x0000, 0x0000, 0x02fc, 0x000d, 0x005c, + // Entry 41A00 - 41A3F + 0xffff, 0x0eae, 0x0eb6, 0x0ebc, 0x0ec3, 0x0eca, 0x0ed5, 0x0ee0, + 0x0e7d, 0x0ee8, 0x0ef0, 0x0ef7, 0x0f00, 0x0001, 0x030d, 0x0001, + 0x030f, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0319, 0x040b, 0x0001, 0x031b, 0x0001, 0x031d, 0x00ec, + 0x0000, 0x06cb, 0x2a5a, 0x2a6e, 0x2a81, 0x2a94, 0x072c, 0x2aa6, + 0x0750, 0x2ab7, 0x0775, 0x2ac8, 0x3b65, 0x3b7c, 0x3b93, 0x3baa, + 0x3bc1, 0x2b58, 0x3bd8, 0x2b7b, 0x2b8f, 0x2ba1, 0x2bb3, 0x2bc6, + 0x2bd8, 0x08b5, 0x2649, 0x2be9, 0x2bfb, 0x266e, 0x2c0d, 0x2c1f, + // Entry 41A40 - 41A7F + 0x2c32, 0x3be8, 0x2c45, 0x2c57, 0x2c6a, 0x2c7d, 0x09ae, 0x2c92, + 0x2ca2, 0x2cb3, 0x09f7, 0x26a9, 0x2cd6, 0x0a33, 0x0a46, 0x2ce8, + 0x26ba, 0x0a7b, 0x2d0b, 0x2d20, 0x2d34, 0x2d47, 0x2d5b, 0x2d6f, + 0x3bfa, 0x0b1e, 0x2daf, 0x2dc4, 0x2ddb, 0x0b77, 0x2df0, 0x3c0e, + 0x2e04, 0x3c23, 0x2e30, 0x2e44, 0x2e58, 0x3c3a, 0x2e81, 0x3c4e, + 0x26dd, 0x2eab, 0x2ebf, 0x2ed5, 0x3c63, 0x2efe, 0x2f12, 0x210f, + 0x2f26, 0x3c78, 0x271a, 0x3c8c, 0x3ca1, 0x2f7b, 0x3cb6, 0x272d, + 0x3ccc, 0x3ce0, 0x2fcf, 0x2fe3, 0x0e04, 0x2ff7, 0x2755, 0x3cf4, + // Entry 41A80 - 41ABF + 0x3021, 0x3037, 0x3049, 0x0e96, 0x2769, 0x3073, 0x3085, 0x0ee9, + 0x3d09, 0x30af, 0x3d1e, 0x30d7, 0x3d32, 0x3104, 0x3d47, 0x312f, + 0x3143, 0x2793, 0x316d, 0x3182, 0x3199, 0x31ad, 0x3d5c, 0x3d6e, + 0x1051, 0x1066, 0x107a, 0x3d83, 0x27d3, 0x31fe, 0x10cf, 0x3215, + 0x3d97, 0x1110, 0x1124, 0x3da8, 0x326a, 0x327f, 0x3293, 0x32a7, + 0x3dbc, 0x32d0, 0x27fc, 0x3dce, 0x330f, 0x3322, 0x1224, 0x3334, + 0x124d, 0x1262, 0x3de3, 0x280f, 0x335f, 0x3372, 0x3386, 0x3df9, + 0x3e0d, 0x33c6, 0x2839, 0x1335, 0x33db, 0x33ef, 0x1374, 0x3402, + // Entry 41AC0 - 41AFF + 0x3417, 0x13b4, 0x3e23, 0x13e0, 0x3457, 0x346d, 0x3480, 0x1435, + 0x144b, 0x3495, 0x1473, 0x34a6, 0x34b8, 0x34cd, 0x14c8, 0x284e, + 0x34f6, 0x350b, 0x3521, 0x3535, 0x354b, 0x3560, 0x3575, 0x158f, + 0x3588, 0x15bb, 0x359d, 0x15e4, 0x35b0, 0x160d, 0x35c4, 0x2861, + 0x3e37, 0x1661, 0x1676, 0x35ef, 0x16a0, 0x3604, 0x3619, 0x288a, + 0x3642, 0x170c, 0x3656, 0x3668, 0x174a, 0x175e, 0x3695, 0x36a8, + 0x3e4b, 0x17b1, 0x36d2, 0x36e5, 0x36fb, 0x1808, 0x370f, 0x3723, + 0x28dd, 0x374c, 0x3762, 0x28f0, 0x189e, 0x18b3, 0x378a, 0x18dd, + // Entry 41B00 - 41B3F + 0x18f1, 0x379e, 0x37b2, 0x192f, 0x1942, 0x2902, 0x37da, 0x3e5f, + 0x3805, 0x3e74, 0x3821, 0x3828, 0x3e7b, 0x0004, 0x0419, 0x0413, + 0x0410, 0x0416, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, + 0x0001, 0x000c, 0x001e, 0x0001, 0x000e, 0x1d3a, 0x0005, 0x0422, + 0x0000, 0x0000, 0x0000, 0x0437, 0x0001, 0x0424, 0x0003, 0x0000, + 0x0000, 0x0428, 0x000d, 0x005c, 0xffff, 0x0f0b, 0x0f15, 0x0f21, + 0x0f28, 0x0f2c, 0x0f33, 0x0f3d, 0x0f42, 0x0f47, 0x0f4c, 0x0f50, + 0x0f57, 0x0001, 0x0439, 0x0001, 0x043b, 0x0001, 0x0000, 0x1a1d, + // Entry 41B40 - 41B7F + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0444, 0x0001, 0x0446, + 0x0001, 0x0448, 0x0002, 0x005c, 0x0f5e, 0x0f65, 0x0040, 0x048d, + 0x0000, 0x0000, 0x0492, 0x04af, 0x04c7, 0x04df, 0x04fc, 0x0519, + 0x0536, 0x0553, 0x056b, 0x0583, 0x05a4, 0x05c0, 0x0000, 0x0000, + 0x0000, 0x05dc, 0x05fb, 0x0613, 0x0000, 0x0000, 0x0000, 0x062b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0630, 0x064a, 0x0664, + 0x067e, 0x0698, 0x06b2, 0x06cc, 0x06e6, 0x0700, 0x071a, 0x0734, + 0x074e, 0x0768, 0x0782, 0x079c, 0x07b6, 0x07d0, 0x07ea, 0x0804, + // Entry 41B80 - 41BBF + 0x081e, 0x0838, 0x0000, 0x0852, 0x0000, 0x0857, 0x0873, 0x088b, + 0x08a3, 0x08bf, 0x08d7, 0x08ef, 0x090b, 0x0923, 0x093b, 0x0001, + 0x048f, 0x0001, 0x0001, 0x0040, 0x0003, 0x0496, 0x0499, 0x049e, + 0x0001, 0x000d, 0x02ee, 0x0003, 0x000d, 0x02f5, 0x0304, 0x3425, + 0x0002, 0x04a1, 0x04a8, 0x0005, 0x000d, 0x033c, 0x0320, 0xffff, + 0xffff, 0x032e, 0x0005, 0x005c, 0x0f77, 0x0f68, 0xffff, 0xffff, + 0x0f68, 0x0003, 0x04b3, 0x0000, 0x04b6, 0x0001, 0x000d, 0x037d, + 0x0002, 0x04b9, 0x04c0, 0x0005, 0x000d, 0x0382, 0x0382, 0xffff, + // Entry 41BC0 - 41BFF + 0xffff, 0x0382, 0x0005, 0x005c, 0x0f86, 0x0f86, 0xffff, 0xffff, + 0x0f86, 0x0003, 0x04cb, 0x0000, 0x04ce, 0x0001, 0x000d, 0x039d, + 0x0002, 0x04d1, 0x04d8, 0x0005, 0x000d, 0x03a0, 0x03a0, 0xffff, + 0xffff, 0x03a0, 0x0005, 0x005c, 0x0f93, 0x0f93, 0xffff, 0xffff, + 0x0f93, 0x0003, 0x04e3, 0x04e6, 0x04eb, 0x0001, 0x000d, 0x03b7, + 0x0003, 0x005c, 0x0f9e, 0x0fb0, 0x0fbe, 0x0002, 0x04ee, 0x04f5, + 0x0005, 0x000d, 0x0400, 0x03f1, 0xffff, 0xffff, 0x0400, 0x0005, + 0x005c, 0x0fd1, 0x0fd1, 0xffff, 0xffff, 0x0fd1, 0x0003, 0x0500, + // Entry 41C00 - 41C3F + 0x0503, 0x0508, 0x0001, 0x000d, 0x043e, 0x0003, 0x005c, 0x0f9e, + 0x0fb0, 0x0fbe, 0x0002, 0x050b, 0x0512, 0x0005, 0x000d, 0x0442, + 0x0442, 0xffff, 0xffff, 0x0442, 0x0005, 0x005c, 0x0fe2, 0x0fe2, + 0xffff, 0xffff, 0x0fe2, 0x0003, 0x051d, 0x0520, 0x0525, 0x0001, + 0x000d, 0x043e, 0x0003, 0x005c, 0x0f9e, 0x0fb0, 0x0fbe, 0x0002, + 0x0528, 0x052f, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, + 0x0442, 0x0005, 0x005c, 0x0fe2, 0x0fe2, 0xffff, 0xffff, 0x0fe2, + 0x0003, 0x053a, 0x053d, 0x0542, 0x0001, 0x005a, 0x037c, 0x0003, + // Entry 41C40 - 41C7F + 0x005c, 0x0fee, 0x0ffe, 0x100a, 0x0002, 0x0545, 0x054c, 0x0005, + 0x005c, 0x1036, 0x101b, 0xffff, 0xffff, 0x1028, 0x0005, 0x005c, + 0x1053, 0x1044, 0xffff, 0xffff, 0x1044, 0x0003, 0x0557, 0x0000, + 0x055a, 0x0001, 0x0059, 0x03eb, 0x0002, 0x055d, 0x0564, 0x0005, + 0x005c, 0x1062, 0x1062, 0xffff, 0xffff, 0x1062, 0x0005, 0x005c, + 0x106e, 0x106e, 0xffff, 0xffff, 0x106e, 0x0003, 0x056f, 0x0000, + 0x0572, 0x0001, 0x0029, 0x0080, 0x0002, 0x0575, 0x057c, 0x0005, + 0x005c, 0x107b, 0x107b, 0xffff, 0xffff, 0x107b, 0x0005, 0x005c, + // Entry 41C80 - 41CBF + 0x1085, 0x1085, 0xffff, 0xffff, 0x1085, 0x0004, 0x0588, 0x058b, + 0x0590, 0x05a1, 0x0001, 0x005a, 0x001d, 0x0003, 0x005c, 0x1090, + 0x10a0, 0x10ac, 0x0002, 0x0593, 0x059a, 0x0005, 0x005c, 0x10db, + 0x10bd, 0xffff, 0xffff, 0x10cc, 0x0005, 0x005c, 0x10fa, 0x10ea, + 0xffff, 0xffff, 0x10ea, 0x0001, 0x005c, 0x110a, 0x0004, 0x05a9, + 0x0000, 0x05ac, 0x05bd, 0x0001, 0x0044, 0x0c33, 0x0002, 0x05af, + 0x05b6, 0x0005, 0x005c, 0x1125, 0x1125, 0xffff, 0xffff, 0x1125, + 0x0005, 0x005c, 0x1131, 0x1131, 0xffff, 0xffff, 0x1131, 0x0001, + // Entry 41CC0 - 41CFF + 0x005c, 0x110a, 0x0004, 0x05c5, 0x0000, 0x05c8, 0x05d9, 0x0001, + 0x0029, 0x008c, 0x0002, 0x05cb, 0x05d2, 0x0005, 0x005c, 0x113e, + 0x113e, 0xffff, 0xffff, 0x113e, 0x0005, 0x005c, 0x1148, 0x1148, + 0xffff, 0xffff, 0x1148, 0x0001, 0x005c, 0x110a, 0x0003, 0x05e0, + 0x05e3, 0x05ea, 0x0001, 0x000d, 0x05d4, 0x0005, 0x005c, 0x115d, + 0x1163, 0x1169, 0x1153, 0x116f, 0x0002, 0x05ed, 0x05f4, 0x0005, + 0x000d, 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x005c, + 0x117a, 0x117a, 0xffff, 0xffff, 0x117a, 0x0003, 0x05ff, 0x0000, + // Entry 41D00 - 41D3F + 0x0602, 0x0001, 0x0029, 0x008f, 0x0002, 0x0605, 0x060c, 0x0005, + 0x000d, 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x005c, + 0x1187, 0x1187, 0xffff, 0xffff, 0x1187, 0x0003, 0x0617, 0x0000, + 0x061a, 0x0001, 0x0029, 0x008f, 0x0002, 0x061d, 0x0624, 0x0005, + 0x000d, 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x005c, + 0x1187, 0x1187, 0xffff, 0xffff, 0x1187, 0x0001, 0x062d, 0x0001, + 0x005c, 0x1192, 0x0003, 0x0000, 0x0634, 0x0639, 0x0003, 0x005c, + 0x1090, 0x11a0, 0x10ac, 0x0002, 0x063c, 0x0643, 0x0005, 0x005c, + // Entry 41D40 - 41D7F + 0x10db, 0x10bd, 0xffff, 0xffff, 0x10cc, 0x0005, 0x005c, 0x10fa, + 0x10ea, 0xffff, 0xffff, 0x10ea, 0x0003, 0x0000, 0x064e, 0x0653, + 0x0003, 0x005c, 0x11aa, 0x11b6, 0x11bc, 0x0002, 0x0656, 0x065d, + 0x0005, 0x005c, 0x10db, 0x10bd, 0xffff, 0xffff, 0x10cc, 0x0005, + 0x005c, 0x10fa, 0x10ea, 0xffff, 0xffff, 0x10ea, 0x0003, 0x0000, + 0x0668, 0x066d, 0x0003, 0x005c, 0x11aa, 0x11b6, 0x11bc, 0x0002, + 0x0670, 0x0677, 0x0005, 0x005c, 0x10db, 0x10bd, 0xffff, 0xffff, + 0x10cc, 0x0005, 0x005c, 0x10fa, 0x10ea, 0xffff, 0xffff, 0x10ea, + // Entry 41D80 - 41DBF + 0x0003, 0x0000, 0x0682, 0x0687, 0x0003, 0x005c, 0x11c9, 0x11dd, + 0x11ea, 0x0002, 0x068a, 0x0691, 0x0005, 0x005c, 0x1223, 0x11ff, + 0xffff, 0xffff, 0x1211, 0x0005, 0x005c, 0x1249, 0x1236, 0xffff, + 0xffff, 0x1236, 0x0003, 0x0000, 0x069c, 0x06a1, 0x0003, 0x005c, + 0x125d, 0x126a, 0x1270, 0x0002, 0x06a4, 0x06ab, 0x0005, 0x005c, + 0x1223, 0x11ff, 0xffff, 0xffff, 0x1211, 0x0005, 0x005c, 0x1249, + 0x1236, 0xffff, 0xffff, 0x1236, 0x0003, 0x0000, 0x06b6, 0x06bb, + 0x0003, 0x005c, 0x125d, 0x126a, 0x1270, 0x0002, 0x06be, 0x06c5, + // Entry 41DC0 - 41DFF + 0x0005, 0x005c, 0x1223, 0x11ff, 0xffff, 0xffff, 0x1211, 0x0005, + 0x005c, 0x1249, 0x1236, 0xffff, 0xffff, 0x1236, 0x0003, 0x0000, + 0x06d0, 0x06d5, 0x0003, 0x005c, 0x127e, 0x128e, 0x1297, 0x0002, + 0x06d8, 0x06df, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, + 0x0830, 0x0005, 0x005c, 0x12b7, 0x12a8, 0xffff, 0xffff, 0x12a8, + 0x0003, 0x0000, 0x06ea, 0x06ef, 0x0003, 0x005c, 0x12c7, 0x12d4, + 0x12da, 0x0002, 0x06f2, 0x06f9, 0x0005, 0x000d, 0x083e, 0x0822, + 0xffff, 0xffff, 0x0830, 0x0005, 0x005c, 0x12b7, 0x12a8, 0xffff, + // Entry 41E00 - 41E3F + 0xffff, 0x12a8, 0x0003, 0x0000, 0x0704, 0x0709, 0x0003, 0x005c, + 0x12c7, 0x12d4, 0x12da, 0x0002, 0x070c, 0x0713, 0x0005, 0x000d, + 0x083e, 0x0822, 0xffff, 0xffff, 0x0830, 0x0005, 0x005c, 0x12b7, + 0x12a8, 0xffff, 0xffff, 0x12a8, 0x0003, 0x0000, 0x071e, 0x0723, + 0x0003, 0x005c, 0x12e8, 0x12f6, 0x12fe, 0x0002, 0x0726, 0x072d, + 0x0005, 0x005c, 0x1327, 0x130d, 0xffff, 0xffff, 0x131a, 0x0005, + 0x005c, 0x1342, 0x1334, 0xffff, 0xffff, 0x1334, 0x0003, 0x0000, + 0x0738, 0x073d, 0x0003, 0x005c, 0x1350, 0x135c, 0x1362, 0x0002, + // Entry 41E40 - 41E7F + 0x0740, 0x0747, 0x0005, 0x005c, 0x1327, 0x130d, 0xffff, 0xffff, + 0x131a, 0x0005, 0x005c, 0x1342, 0x1334, 0xffff, 0xffff, 0x1334, + 0x0003, 0x0000, 0x0752, 0x0757, 0x0003, 0x005c, 0x1350, 0x135c, + 0x1362, 0x0002, 0x075a, 0x0761, 0x0005, 0x005c, 0x1327, 0x130d, + 0xffff, 0xffff, 0x131a, 0x0005, 0x005c, 0x1342, 0x1334, 0xffff, + 0xffff, 0x1334, 0x0003, 0x0000, 0x076c, 0x0771, 0x0003, 0x005c, + 0x136f, 0x1382, 0x138e, 0x0002, 0x0774, 0x077b, 0x0005, 0x000d, + 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x005c, 0x13b4, + // Entry 41E80 - 41EBF + 0x13a2, 0xffff, 0xffff, 0x13a2, 0x0003, 0x0000, 0x0786, 0x078b, + 0x0003, 0x005c, 0x13c7, 0x13d5, 0x13dc, 0x0002, 0x078e, 0x0795, + 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, + 0x005c, 0x13b4, 0x13a2, 0xffff, 0xffff, 0x13a2, 0x0003, 0x0000, + 0x07a0, 0x07a5, 0x0003, 0x005c, 0x13c7, 0x13d5, 0x13dc, 0x0002, + 0x07a8, 0x07af, 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, + 0x09a3, 0x0005, 0x005c, 0x13b4, 0x13a2, 0xffff, 0xffff, 0x13a2, + 0x0003, 0x0000, 0x07ba, 0x07bf, 0x0003, 0x005c, 0x13eb, 0x13fa, + // Entry 41EC0 - 41EFF + 0x1402, 0x0002, 0x07c2, 0x07c9, 0x0005, 0x000d, 0x0a6f, 0x0a55, + 0xffff, 0xffff, 0x0a62, 0x0005, 0x005c, 0x1420, 0x1412, 0xffff, + 0xffff, 0x1412, 0x0003, 0x0000, 0x07d4, 0x07d9, 0x0003, 0x005c, + 0x142f, 0x143c, 0x1442, 0x0002, 0x07dc, 0x07e3, 0x0005, 0x000d, + 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x005c, 0x1420, + 0x1412, 0xffff, 0xffff, 0x1412, 0x0003, 0x0000, 0x07ee, 0x07f3, + 0x0003, 0x005c, 0x142f, 0x143c, 0x1442, 0x0002, 0x07f6, 0x07fd, + 0x0005, 0x000d, 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, + // Entry 41F00 - 41F3F + 0x005c, 0x1420, 0x1412, 0xffff, 0xffff, 0x1412, 0x0003, 0x0000, + 0x0808, 0x080d, 0x0003, 0x005c, 0x1450, 0x145f, 0x1468, 0x0002, + 0x0810, 0x0817, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, + 0x0b0d, 0x0005, 0x005c, 0x1487, 0x1478, 0xffff, 0xffff, 0x1478, + 0x0003, 0x0000, 0x0822, 0x0827, 0x0003, 0x005c, 0x1496, 0x14a2, + 0x14a8, 0x0002, 0x082a, 0x0831, 0x0005, 0x000d, 0x0b1b, 0x0aff, + 0xffff, 0xffff, 0x0b0d, 0x0005, 0x005c, 0x1487, 0x1478, 0xffff, + 0xffff, 0x1478, 0x0003, 0x0000, 0x083c, 0x0841, 0x0003, 0x005c, + // Entry 41F40 - 41F7F + 0x1496, 0x14a2, 0x14a8, 0x0002, 0x0844, 0x084b, 0x0005, 0x000d, + 0x0b1b, 0x0aff, 0xffff, 0xffff, 0x0b0d, 0x0005, 0x005c, 0x1487, + 0x1478, 0xffff, 0xffff, 0x1478, 0x0001, 0x0854, 0x0001, 0x005c, + 0x14b5, 0x0003, 0x085b, 0x085e, 0x0862, 0x0001, 0x000d, 0x0b99, + 0x0002, 0x005c, 0xffff, 0x14c8, 0x0002, 0x0865, 0x086c, 0x0005, + 0x000d, 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x005c, + 0x14df, 0x14d2, 0xffff, 0xffff, 0x14d2, 0x0003, 0x0877, 0x0000, + 0x087a, 0x0001, 0x005c, 0x14ec, 0x0002, 0x087d, 0x0884, 0x0005, + // Entry 41F80 - 41FBF + 0x005c, 0x14f0, 0x14f0, 0xffff, 0xffff, 0x14f0, 0x0005, 0x005c, + 0x14fb, 0x14fb, 0xffff, 0xffff, 0x14fb, 0x0003, 0x088f, 0x0000, + 0x0892, 0x0001, 0x005c, 0x14ec, 0x0002, 0x0895, 0x089c, 0x0005, + 0x005c, 0x14f0, 0x14f0, 0xffff, 0xffff, 0x14f0, 0x0005, 0x005c, + 0x14fb, 0x14fb, 0xffff, 0xffff, 0x14fb, 0x0003, 0x08a7, 0x08aa, + 0x08ae, 0x0001, 0x0010, 0x0b77, 0x0002, 0x005c, 0xffff, 0x1507, + 0x0002, 0x08b1, 0x08b8, 0x0005, 0x0050, 0x2938, 0x0e91, 0xffff, + 0xffff, 0x2938, 0x0005, 0x005c, 0x1513, 0x1513, 0xffff, 0xffff, + // Entry 41FC0 - 41FFF + 0x1513, 0x0003, 0x08c3, 0x0000, 0x08c6, 0x0001, 0x0001, 0x075a, + 0x0002, 0x08c9, 0x08d0, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, + 0xffff, 0x0c64, 0x0005, 0x005c, 0x1522, 0x1522, 0xffff, 0xffff, + 0x1522, 0x0003, 0x08db, 0x0000, 0x08de, 0x0001, 0x0001, 0x075a, + 0x0002, 0x08e1, 0x08e8, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, + 0xffff, 0x0c64, 0x0005, 0x005c, 0x1522, 0x1522, 0xffff, 0xffff, + 0x1522, 0x0003, 0x08f3, 0x08f6, 0x08fa, 0x0001, 0x0015, 0x0ad8, + 0x0002, 0x000d, 0xffff, 0x0c87, 0x0002, 0x08fd, 0x0904, 0x0005, + // Entry 42000 - 4203F + 0x000d, 0x0caa, 0x0c8c, 0xffff, 0xffff, 0x0c9b, 0x0005, 0x005c, + 0x153f, 0x152f, 0xffff, 0xffff, 0x152f, 0x0003, 0x090f, 0x0000, + 0x0912, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0915, 0x091c, 0x0005, + 0x000d, 0x0cef, 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0005, 0x005c, + 0x154f, 0x154f, 0xffff, 0xffff, 0x154f, 0x0003, 0x0927, 0x0000, + 0x092a, 0x0001, 0x0029, 0x0086, 0x0002, 0x092d, 0x0934, 0x0005, + 0x005c, 0x155c, 0x155c, 0xffff, 0xffff, 0x155c, 0x0005, 0x005c, + 0x1566, 0x1566, 0xffff, 0xffff, 0x1566, 0x0001, 0x093d, 0x0001, + // Entry 42040 - 4207F + 0x000d, 0x0d0a, 0x0004, 0x0945, 0x094a, 0x094f, 0x095e, 0x0003, + 0x0000, 0x1dc7, 0x3acc, 0x3e82, 0x0003, 0x0000, 0x1de0, 0x3e86, + 0x3e98, 0x0002, 0x0000, 0x0952, 0x0003, 0x0000, 0x0959, 0x0956, + 0x0001, 0x005c, 0x1571, 0x0003, 0x005c, 0xffff, 0x1590, 0x15b4, + 0x0002, 0x0b45, 0x0961, 0x0003, 0x0965, 0x0aa5, 0x0a05, 0x009e, + 0x005c, 0xffff, 0xffff, 0xffff, 0xffff, 0x1663, 0x16c7, 0x1752, + 0x1798, 0x180d, 0x187f, 0x18f4, 0x196c, 0x19b2, 0x1a87, 0x1ad6, + 0x1b25, 0x1b8c, 0x1bdb, 0x1c2a, 0x1ca0, 0x1d2e, 0x1da1, 0x1e11, + // Entry 42080 - 420BF + 0x1e69, 0x1eac, 0xffff, 0xffff, 0x1f19, 0xffff, 0x1f7f, 0xffff, + 0x1ff7, 0x203d, 0x2080, 0x20c3, 0xffff, 0xffff, 0x2148, 0x2197, + 0x21f7, 0xffff, 0xffff, 0xffff, 0x226f, 0xffff, 0x22e1, 0x2342, + 0xffff, 0x23b9, 0x241a, 0x2484, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2526, 0xffff, 0xffff, 0x259e, 0x2605, 0xffff, 0xffff, 0x269c, + 0x2703, 0x2752, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2827, 0x2867, 0x28ad, 0x28fc, 0x2948, 0xffff, 0xffff, 0x29fe, + 0xffff, 0x2a57, 0xffff, 0xffff, 0x2adf, 0xffff, 0x2b83, 0xffff, + // Entry 420C0 - 420FF + 0xffff, 0xffff, 0xffff, 0x2c0e, 0xffff, 0x2c6c, 0x2cd9, 0x2d3a, + 0x2d8c, 0xffff, 0xffff, 0xffff, 0x2df9, 0x2e5a, 0x2eaf, 0xffff, + 0xffff, 0x2f27, 0x2fb4, 0x3009, 0x3049, 0xffff, 0xffff, 0x30ba, + 0x3106, 0x3146, 0xffff, 0x31a6, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x32a8, 0x32f1, 0x3337, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x33fb, 0xffff, 0xffff, 0x3455, 0xffff, + 0x34a4, 0xffff, 0x3509, 0x3552, 0x35a4, 0xffff, 0x35fd, 0x3652, + 0xffff, 0xffff, 0xffff, 0x36dc, 0x3725, 0xffff, 0xffff, 0x15cb, + // Entry 42100 - 4213F + 0x170c, 0x19f5, 0x1a3e, 0xffff, 0xffff, 0x2b2b, 0x323e, 0x009e, + 0x005c, 0x160b, 0x161c, 0x1635, 0x164d, 0x167a, 0x16cf, 0x175f, + 0x17b9, 0x182d, 0x18a0, 0x1916, 0x1979, 0x19be, 0x1a97, 0x1ae6, + 0x1b3d, 0x1b9c, 0x1beb, 0x1c47, 0x1cc5, 0x1d4a, 0x1dbc, 0x1e24, + 0x1e75, 0x1ebd, 0x1efe, 0x1f0a, 0x1f29, 0x1f68, 0x1f98, 0x1fe9, + 0x2004, 0x2049, 0x208b, 0x20d4, 0x2115, 0x212c, 0x2158, 0x21ab, + 0x2202, 0x2237, 0x2244, 0x225a, 0x2286, 0x22d3, 0x22f7, 0x2359, + 0x23a6, 0x23cf, 0x2433, 0x2491, 0x24ca, 0x24e2, 0x2508, 0x2518, + // Entry 42140 - 4217F + 0x2534, 0x256f, 0x2584, 0x25b6, 0x261c, 0x267f, 0x268e, 0x26b4, + 0x2713, 0x275d, 0x2792, 0x27ac, 0x27c4, 0x27d3, 0x27f0, 0x280c, + 0x2832, 0x2874, 0x28bd, 0x290b, 0x2968, 0x29c7, 0x29e3, 0x2a0d, + 0x2a4a, 0x2a69, 0x2aac, 0x2acd, 0x2aee, 0x2b6e, 0x2b91, 0x2bcc, + 0x2bdb, 0x2be9, 0x2bf6, 0x2c1f, 0x2c60, 0x2c82, 0x2ceb, 0x2d4b, + 0x2d99, 0x2dd2, 0x2de1, 0x2ded, 0x2e0f, 0x2e6c, 0x2ec2, 0x2f07, + 0x2f12, 0x2f41, 0x2fc6, 0x3014, 0x3058, 0x3095, 0x30a1, 0x30c9, + 0x3111, 0x3155, 0x3192, 0x31bf, 0x3210, 0x321e, 0x322b, 0x328d, + // Entry 42180 - 421BF + 0x329b, 0x32b6, 0x32fe, 0x3343, 0x337a, 0x3389, 0x33a3, 0x33bb, + 0x33d4, 0x33e2, 0x33ee, 0x3408, 0x3434, 0x3447, 0x3461, 0x3498, + 0x34b7, 0x34fc, 0x3517, 0x3563, 0x35b2, 0x35ed, 0x360f, 0x3662, + 0x36a1, 0x36ae, 0x36c0, 0x36ea, 0x3739, 0x2669, 0x2f94, 0x15d6, + 0x1719, 0x1a03, 0x1a4c, 0xffff, 0x2abc, 0x2b37, 0x324e, 0x009e, + 0x005c, 0xffff, 0xffff, 0xffff, 0xffff, 0x169c, 0x16e9, 0x1777, + 0x17e5, 0x1858, 0x18cc, 0x1943, 0x1991, 0x19d5, 0x1ab2, 0x1b01, + 0x1b60, 0x1bb7, 0x1c06, 0x1c6f, 0x1cf5, 0x1d71, 0x1de2, 0x1e42, + // Entry 421C0 - 421FF + 0x1e8c, 0x1ed9, 0xffff, 0xffff, 0x1f44, 0xffff, 0x1fbc, 0xffff, + 0x201c, 0x2060, 0x20a4, 0x20f0, 0xffff, 0xffff, 0x2173, 0x21ca, + 0x2218, 0xffff, 0xffff, 0xffff, 0x22a8, 0xffff, 0x2318, 0x237b, + 0xffff, 0x23f0, 0x2457, 0x24a9, 0xffff, 0xffff, 0xffff, 0xffff, + 0x254d, 0xffff, 0xffff, 0x25d9, 0x263e, 0xffff, 0xffff, 0x26d7, + 0x272e, 0x2773, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2848, 0x288c, 0x28d8, 0x2925, 0x2993, 0xffff, 0xffff, 0x2a27, + 0xffff, 0x2a86, 0xffff, 0xffff, 0x2b08, 0xffff, 0x2baa, 0xffff, + // Entry 42200 - 4223F + 0xffff, 0xffff, 0xffff, 0x2c3b, 0xffff, 0x2ca9, 0x2d0e, 0x2d67, + 0x2db1, 0xffff, 0xffff, 0xffff, 0x2e30, 0x2e89, 0x2ee0, 0xffff, + 0xffff, 0x2f66, 0x2fe3, 0x302a, 0x3072, 0xffff, 0xffff, 0x30e3, + 0x3127, 0x316f, 0xffff, 0x31e3, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x32cf, 0x3316, 0x335a, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3420, 0xffff, 0xffff, 0x3478, 0xffff, + 0x34d5, 0xffff, 0x3530, 0x357f, 0x35cb, 0xffff, 0x362c, 0x367d, + 0xffff, 0xffff, 0xffff, 0x3703, 0x3758, 0xffff, 0xffff, 0x15ec, + // Entry 42240 - 4227F + 0x1731, 0x1a1c, 0x1a65, 0xffff, 0xffff, 0x2b4e, 0x3269, 0x0003, + 0x0b49, 0x0bb8, 0x0b7c, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, + // Entry 42280 - 422BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, + 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x22b5, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 422C0 - 422FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, 0x0001, 0x0002, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 42300 - 4233F + 0x0000, 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, 0x00dc, 0x0000, + 0x0000, 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, 0x000d, + 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, 0x2c99, 0x2cba, 0x2cbe, + 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, 0x2cac, 0x0001, 0x0033, + 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, 0x2c99, 0x2cba, + 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, 0x2cac, 0x0002, + 0x0045, 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, 0x0007, 0x0044, + 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, 0x0007, + // Entry 42340 - 4237F + 0x000d, 0x00f5, 0x3435, 0x3440, 0x0111, 0x3447, 0x3451, 0x3457, + 0x0003, 0x005f, 0x0000, 0x0068, 0x0007, 0x0044, 0x0c33, 0x3111, + 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, 0x0007, 0x000d, 0x00f5, + 0x3435, 0x3440, 0x0111, 0x3447, 0x3451, 0x3457, 0x0002, 0x0074, + 0x00bd, 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, 0x0084, 0x008a, + 0x0081, 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, 0x0001, 0x000d, + 0x0177, 0x0001, 0x005d, 0x0000, 0x0001, 0x000d, 0x0189, 0x0001, + 0x005c, 0x0d4c, 0x0001, 0x0050, 0x0825, 0x0001, 0x005d, 0x000c, + // Entry 42380 - 423BF + 0x0001, 0x005c, 0x0d74, 0x0001, 0x002e, 0x0176, 0x0008, 0x0000, + 0x0000, 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00a5, 0x0001, + 0x000d, 0x0177, 0x0001, 0x000d, 0x0189, 0x0001, 0x0050, 0x0825, + 0x0001, 0x005d, 0x000c, 0x0001, 0x005c, 0x0d74, 0x0001, 0x005c, + 0x0d7a, 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005d, 0x0000, 0x0001, + 0x005c, 0x0d4c, 0x0003, 0x00c1, 0x00ca, 0x00d3, 0x0002, 0x00c4, + 0x00c7, 0x0001, 0x005d, 0x0000, 0x0001, 0x005c, 0x0d4c, 0x0002, + 0x00cd, 0x00d0, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, + // Entry 423C0 - 423FF + 0x0002, 0x00d6, 0x00d9, 0x0001, 0x005d, 0x0000, 0x0001, 0x005c, + 0x0d4c, 0x0003, 0x0000, 0x0000, 0x00e0, 0x0002, 0x00e3, 0x00e6, + 0x0001, 0x000d, 0x01bd, 0x0002, 0x005c, 0xffff, 0x0d8c, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000b, 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, + 0x00dc, 0x0000, 0x0000, 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, + 0x0022, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, 0x2c99, + // Entry 42400 - 4243F + 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, 0x2cac, + 0x0001, 0x0033, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, + 0x2c99, 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, + 0x2cac, 0x0002, 0x0045, 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, + 0x0007, 0x0044, 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, + 0x314a, 0x0007, 0x000d, 0x00f5, 0x3435, 0x3440, 0x0111, 0x3447, + 0x3451, 0x3457, 0x0003, 0x005f, 0x0000, 0x0068, 0x0007, 0x0044, + 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, 0x0007, + // Entry 42440 - 4247F + 0x000d, 0x00f5, 0x3435, 0x3440, 0x0111, 0x3447, 0x3451, 0x3457, + 0x0002, 0x0074, 0x00bd, 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, + 0x0084, 0x008a, 0x0081, 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, + 0x0001, 0x000d, 0x0177, 0x0001, 0x005d, 0x0000, 0x0001, 0x000d, + 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x0050, 0x0825, 0x0001, + 0x005d, 0x000c, 0x0001, 0x005c, 0x0d74, 0x0001, 0x002e, 0x0176, + 0x0008, 0x0000, 0x0000, 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, + 0x00a5, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x0189, 0x0001, + // Entry 42480 - 424BF + 0x0050, 0x0825, 0x0001, 0x005d, 0x000c, 0x0001, 0x005c, 0x0d74, + 0x0001, 0x005c, 0x0d7a, 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005d, + 0x0000, 0x0001, 0x005c, 0x0d4c, 0x0003, 0x00c1, 0x00ca, 0x00d3, + 0x0002, 0x00c4, 0x00c7, 0x0001, 0x005d, 0x0000, 0x0001, 0x005c, + 0x0d4c, 0x0002, 0x00cd, 0x00d0, 0x0001, 0x0000, 0x1f9c, 0x0001, + 0x0000, 0x21ec, 0x0002, 0x00d6, 0x00d9, 0x0001, 0x005d, 0x0000, + 0x0001, 0x005c, 0x0d4c, 0x0003, 0x0000, 0x0000, 0x00e0, 0x0001, + 0x00e2, 0x0001, 0x000d, 0x01bd, 0x0001, 0x0002, 0x0008, 0x0000, + // Entry 424C0 - 424FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0004, 0x0019, 0x003e, 0x0000, 0x0057, 0x0002, 0x001c, 0x002d, + 0x0001, 0x001e, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, + 0x2c99, 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, + 0x2cac, 0x0001, 0x002f, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, + 0x2cb5, 0x2c99, 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, + 0x2ca7, 0x2cac, 0x0002, 0x0041, 0x004c, 0x0001, 0x0043, 0x0007, + // Entry 42500 - 4253F + 0x0044, 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, + 0x0001, 0x004e, 0x0007, 0x0044, 0x0c33, 0x3111, 0x3142, 0x3146, + 0x3120, 0x3126, 0x314a, 0x0002, 0x005a, 0x0093, 0x0002, 0x005d, + 0x0078, 0x0008, 0x0000, 0x0000, 0x0066, 0x006c, 0x006f, 0x0072, + 0x0075, 0x0069, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x0189, + 0x0001, 0x0050, 0x0825, 0x0001, 0x005d, 0x000c, 0x0001, 0x005c, + 0x0d55, 0x0001, 0x002e, 0x0176, 0x0008, 0x0000, 0x0000, 0x0081, + 0x0087, 0x008a, 0x008d, 0x0090, 0x0084, 0x0001, 0x000d, 0x0177, + // Entry 42540 - 4257F + 0x0001, 0x000d, 0x0189, 0x0001, 0x0050, 0x0825, 0x0001, 0x005d, + 0x000c, 0x0001, 0x005c, 0x0d74, 0x0001, 0x005c, 0x0d7a, 0x0002, + 0x0000, 0x0096, 0x0002, 0x0099, 0x009c, 0x0001, 0x0000, 0x1f9c, + 0x0001, 0x0000, 0x21ec, 0x0003, 0x0004, 0x05ea, 0x0a14, 0x0012, + 0x0017, 0x0027, 0x003e, 0x008b, 0x00df, 0x0000, 0x012c, 0x0157, + 0x0384, 0x03df, 0x043d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0476, + 0x0582, 0x05d9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, + 0x0000, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, + // Entry 42580 - 425BF + 0x0000, 0x0000, 0x0001, 0x0029, 0x0001, 0x002b, 0x0003, 0x0000, + 0x0000, 0x002f, 0x000d, 0x005d, 0xffff, 0x0014, 0x0025, 0x0034, + 0x0044, 0x0055, 0x0064, 0x0075, 0x0085, 0x0097, 0x00a7, 0x00b7, + 0x00c6, 0x0001, 0x0040, 0x0002, 0x0043, 0x0067, 0x0003, 0x0047, + 0x0000, 0x0057, 0x000e, 0x0025, 0xffff, 0x00e8, 0x0137, 0x013e, + 0x3844, 0x014c, 0x0153, 0x015b, 0x0165, 0x016f, 0x0177, 0x0182, + 0x0188, 0x018e, 0x000e, 0x0025, 0xffff, 0x00e8, 0x0137, 0x013e, + 0x3844, 0x014c, 0x0153, 0x015b, 0x0165, 0x016f, 0x0177, 0x0182, + // Entry 425C0 - 425FF + 0x0188, 0x018e, 0x0003, 0x006b, 0x0000, 0x007b, 0x000e, 0x0000, + 0xffff, 0x03ce, 0x3eae, 0x3eb5, 0x3ebd, 0x3ec3, 0x3eca, 0x3ed2, + 0x3edc, 0x392a, 0x3ee6, 0x3ef1, 0x3ef7, 0x3efd, 0x000e, 0x0000, + 0xffff, 0x03ce, 0x3eae, 0x3eb5, 0x3ebd, 0x3ec3, 0x3eca, 0x3ed2, + 0x3edc, 0x392a, 0x3ee6, 0x3ef1, 0x3ef7, 0x3efd, 0x000a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0096, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x009c, 0x0001, + 0x009e, 0x0001, 0x00a0, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, + // Entry 42600 - 4263F + 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, + 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, + 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, + 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, + 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, + 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, + 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, + 0x0389, 0x0390, 0x0001, 0x00e1, 0x0002, 0x00e4, 0x0108, 0x0003, + // Entry 42640 - 4267F + 0x00e8, 0x0000, 0x00f8, 0x000e, 0x0025, 0xffff, 0x020e, 0x021a, + 0x38d7, 0x0227, 0x38dd, 0x022f, 0x0238, 0x0241, 0x0249, 0x0251, + 0x0258, 0x025f, 0x0268, 0x000e, 0x0025, 0xffff, 0x020e, 0x021a, + 0x38d7, 0x0227, 0x38dd, 0x022f, 0x0238, 0x0241, 0x0249, 0x0251, + 0x0258, 0x025f, 0x0268, 0x0003, 0x010c, 0x0000, 0x011c, 0x000e, + 0x0026, 0xffff, 0x133f, 0x134b, 0x35a7, 0x35ad, 0x35b5, 0x1366, + 0x136f, 0x1378, 0x35b9, 0x35c1, 0x35c8, 0x35cf, 0x35d8, 0x000e, + 0x0026, 0xffff, 0x133f, 0x134b, 0x35a7, 0x35ad, 0x35b5, 0x1366, + // Entry 42680 - 426BF + 0x136f, 0x1378, 0x35b9, 0x35c1, 0x35c8, 0x35cf, 0x35d8, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0135, 0x0000, 0x0146, + 0x0004, 0x0143, 0x013d, 0x013a, 0x0140, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x001c, + 0x04e0, 0x0004, 0x0154, 0x014e, 0x014b, 0x0151, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0008, 0x0160, 0x01c5, 0x021c, 0x0251, 0x0328, + 0x034d, 0x035e, 0x0373, 0x0002, 0x0163, 0x0194, 0x0003, 0x0167, + // Entry 426C0 - 426FF + 0x0176, 0x0185, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2ccc, + 0x2c99, 0x2cba, 0x2cd1, 0x2cd6, 0x2cdb, 0x238d, 0x2447, 0x2ca7, + 0x2cac, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29a5, 0x29d1, 0x29a9, + 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, 0x29af, 0x29b1, 0x29b3, + 0x000d, 0x0039, 0xffff, 0x00e5, 0x00ed, 0x7114, 0x7119, 0x711f, + 0x7123, 0x7128, 0x712d, 0x7135, 0x713f, 0x7147, 0x7150, 0x0003, + 0x0198, 0x01a7, 0x01b6, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, + 0x2ce0, 0x2c99, 0x2ce5, 0x2ce9, 0x2cee, 0x2cdb, 0x238d, 0x2447, + // Entry 42700 - 4273F + 0x2ca7, 0x2cac, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29a5, 0x29d1, + 0x29a9, 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, 0x29af, 0x29b1, + 0x29b3, 0x000d, 0x0039, 0xffff, 0x00e5, 0x00ed, 0x7159, 0x7119, + 0x715e, 0x7162, 0x7167, 0x712d, 0x7135, 0x713f, 0x7147, 0x7150, + 0x0002, 0x01c8, 0x01f2, 0x0005, 0x01ce, 0x01d7, 0x01e9, 0x0000, + 0x01e0, 0x0007, 0x005d, 0x00d6, 0x00db, 0x00e0, 0x00e4, 0x00e8, + 0x00ed, 0x00f1, 0x0007, 0x0017, 0x29bb, 0x29d1, 0x29d3, 0x29af, + 0x29d3, 0x29a5, 0x29dd, 0x0007, 0x005d, 0x00f6, 0x00fa, 0x00fe, + // Entry 42740 - 4277F + 0x0101, 0x0104, 0x0107, 0x010a, 0x0007, 0x005d, 0x010e, 0x0116, + 0x011e, 0x0125, 0x012c, 0x0134, 0x013b, 0x0005, 0x01f8, 0x0201, + 0x0213, 0x0000, 0x020a, 0x0007, 0x005d, 0x00d6, 0x00db, 0x00e0, + 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x0017, 0x29bb, 0x29d1, + 0x29d3, 0x29af, 0x29d3, 0x29a5, 0x29dd, 0x0007, 0x005d, 0x00f6, + 0x00fa, 0x00fe, 0x0101, 0x0104, 0x0107, 0x010a, 0x0007, 0x005d, + 0x010e, 0x0116, 0x011e, 0x0125, 0x012c, 0x0134, 0x013b, 0x0002, + 0x021f, 0x0238, 0x0003, 0x0223, 0x022a, 0x0231, 0x0005, 0x0000, + // Entry 42780 - 427BF + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005d, 0xffff, 0x0143, + 0x0151, 0x015f, 0x016d, 0x0003, 0x023c, 0x0243, 0x024a, 0x0005, + 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005d, 0xffff, + 0x0143, 0x0151, 0x015f, 0x016d, 0x0002, 0x0254, 0x02be, 0x0003, + 0x0258, 0x027a, 0x029c, 0x0009, 0x0265, 0x0268, 0x0262, 0x026b, + 0x0271, 0x0274, 0x0277, 0x0000, 0x026e, 0x0001, 0x004b, 0x0837, + // Entry 427C0 - 427FF + 0x0001, 0x005d, 0x017b, 0x0001, 0x005d, 0x017e, 0x0001, 0x005d, + 0x0181, 0x0001, 0x005d, 0x018b, 0x0001, 0x005d, 0x0196, 0x0001, + 0x005d, 0x01a2, 0x0001, 0x005d, 0x01af, 0x0009, 0x0287, 0x028a, + 0x0284, 0x028d, 0x0293, 0x0296, 0x0299, 0x0000, 0x0290, 0x0001, + 0x004b, 0x0808, 0x0001, 0x005d, 0x017b, 0x0001, 0x005d, 0x017e, + 0x0001, 0x005d, 0x0181, 0x0001, 0x005d, 0x018b, 0x0001, 0x005d, + 0x0196, 0x0001, 0x005d, 0x01a2, 0x0001, 0x005d, 0x01af, 0x0009, + 0x02a9, 0x02ac, 0x02a6, 0x02af, 0x02b5, 0x02b8, 0x02bb, 0x0000, + // Entry 42800 - 4283F + 0x02b2, 0x0001, 0x004b, 0x0837, 0x0001, 0x005d, 0x017b, 0x0001, + 0x005d, 0x017e, 0x0001, 0x005d, 0x01ba, 0x0001, 0x005d, 0x01c7, + 0x0001, 0x005d, 0x01d8, 0x0001, 0x005d, 0x01a2, 0x0001, 0x005d, + 0x01af, 0x0003, 0x02c2, 0x02e4, 0x0306, 0x0009, 0x02cf, 0x02d2, + 0x02cc, 0x02d5, 0x02db, 0x02de, 0x02e1, 0x0000, 0x02d8, 0x0001, + 0x004b, 0x0837, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, 0x01b5, + 0x0001, 0x005d, 0x01ea, 0x0001, 0x005d, 0x01f1, 0x0001, 0x005d, + 0x01f8, 0x0001, 0x005d, 0x0200, 0x0001, 0x004b, 0x0822, 0x0009, + // Entry 42840 - 4287F + 0x02f1, 0x02f4, 0x02ee, 0x02f7, 0x02fd, 0x0300, 0x0303, 0x0000, + 0x02fa, 0x0001, 0x004b, 0x0808, 0x0001, 0x005d, 0x017b, 0x0001, + 0x005d, 0x017e, 0x0001, 0x0033, 0x04b6, 0x0001, 0x005d, 0x01f1, + 0x0001, 0x005d, 0x01f8, 0x0001, 0x005d, 0x0200, 0x0001, 0x004b, + 0x0822, 0x0009, 0x0313, 0x0316, 0x0310, 0x0319, 0x031f, 0x0322, + 0x0325, 0x0000, 0x031c, 0x0001, 0x004b, 0x0837, 0x0001, 0x005d, + 0x0207, 0x0001, 0x0015, 0x017e, 0x0001, 0x005d, 0x01ea, 0x0001, + 0x005d, 0x0207, 0x0001, 0x0015, 0x017e, 0x0001, 0x005d, 0x0200, + // Entry 42880 - 428BF + 0x0001, 0x004b, 0x0822, 0x0003, 0x0337, 0x0342, 0x032c, 0x0002, + 0x032f, 0x0333, 0x0002, 0x005d, 0x0212, 0x0242, 0x0002, 0x005d, + 0x0220, 0x0250, 0x0002, 0x033a, 0x033e, 0x0002, 0x0015, 0x0194, + 0x01b8, 0x0002, 0x0015, 0x01d7, 0x01de, 0x0002, 0x0345, 0x0349, + 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01e7, 0x01ef, + 0x0004, 0x035b, 0x0355, 0x0352, 0x0358, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, + 0x051c, 0x0004, 0x036f, 0x0367, 0x0363, 0x036b, 0x0002, 0x004e, + // Entry 428C0 - 428FF + 0x01ba, 0x01ce, 0x0002, 0x0000, 0x0532, 0x38be, 0x0002, 0x0000, + 0x053d, 0x38c9, 0x0002, 0x0000, 0x0546, 0x38d2, 0x0004, 0x0381, + 0x037b, 0x0378, 0x037e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x038d, 0x0000, 0x0000, 0x0000, 0x03d8, 0x0000, 0x0000, 0x9006, + 0x0002, 0x0390, 0x03b4, 0x0003, 0x0394, 0x0000, 0x03a4, 0x000e, + 0x005d, 0x02a2, 0x026c, 0x0274, 0x027d, 0x0285, 0x028c, 0x0294, + 0x029c, 0x02ab, 0x02b2, 0x02b9, 0x02c0, 0x02c8, 0x02cb, 0x000e, + // Entry 42900 - 4293F + 0x005d, 0x02a2, 0x026c, 0x0274, 0x027d, 0x0285, 0x028c, 0x0294, + 0x029c, 0x02ab, 0x02b2, 0x02b9, 0x02c0, 0x02c8, 0x02cb, 0x0003, + 0x03b8, 0x0000, 0x03c8, 0x000e, 0x005d, 0x0307, 0x02d1, 0x02d9, + 0x02e2, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0310, 0x0317, 0x031e, + 0x0325, 0x032d, 0x0330, 0x000e, 0x005d, 0x0307, 0x02d1, 0x02d9, + 0x02e2, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0310, 0x0317, 0x031e, + 0x0325, 0x032d, 0x0330, 0x0001, 0x03da, 0x0001, 0x03dc, 0x0001, + 0x0000, 0x04ef, 0x0008, 0x03e8, 0x0000, 0x0000, 0x0000, 0x042f, + // Entry 42940 - 4297F + 0x0000, 0x0000, 0x9006, 0x0002, 0x03eb, 0x040d, 0x0003, 0x03ef, + 0x0000, 0x03fe, 0x000d, 0x0025, 0xffff, 0x0557, 0x055f, 0x0569, + 0x0573, 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, 0x05b1, 0x054a, + 0x05b7, 0x000d, 0x0025, 0xffff, 0x0557, 0x055f, 0x0569, 0x0573, + 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, 0x05b1, 0x054a, 0x05b7, + 0x0003, 0x0411, 0x0000, 0x0420, 0x000d, 0x0000, 0xffff, 0x05a2, + 0x3f05, 0x3f0f, 0x3f19, 0x3f23, 0x3f2d, 0x3f38, 0x3f40, 0x3f48, + 0x3f57, 0x3f5d, 0x3f63, 0x000d, 0x0000, 0xffff, 0x05a2, 0x3f05, + // Entry 42980 - 429BF + 0x3f0f, 0x3f19, 0x3f23, 0x3f2d, 0x3f38, 0x3f40, 0x3f48, 0x3f57, + 0x3f5d, 0x3f63, 0x0003, 0x0438, 0x0000, 0x0433, 0x0001, 0x0435, + 0x0001, 0x005d, 0x0336, 0x0001, 0x043a, 0x0001, 0x0025, 0x05c0, + 0x0008, 0x0446, 0x0000, 0x0000, 0x0000, 0x046f, 0x0000, 0x0000, + 0x9006, 0x0002, 0x0449, 0x045c, 0x0003, 0x0000, 0x0000, 0x044d, + 0x000d, 0x0022, 0xffff, 0x089e, 0x2ff5, 0x08ad, 0x08be, 0x30af, + 0x30bc, 0x3021, 0x30cc, 0x3030, 0x3038, 0x30d6, 0x30e4, 0x0003, + 0x0000, 0x0000, 0x0460, 0x000d, 0x0000, 0xffff, 0x0657, 0x3f6c, + // Entry 429C0 - 429FF + 0x3f72, 0x3f83, 0x3f94, 0x3fa1, 0x3fb1, 0x3fb7, 0x3fc1, 0x06a3, + 0x3fc9, 0x3fd7, 0x0001, 0x0471, 0x0001, 0x0473, 0x0001, 0x0000, + 0x06c8, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x047f, 0x0000, + 0x0000, 0x0571, 0x0001, 0x0481, 0x0001, 0x0483, 0x00ec, 0x0000, + 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, + 0x0762, 0x0775, 0x23dd, 0x3fe3, 0x3ffe, 0x401a, 0x4034, 0x0806, + 0x081e, 0x0830, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, + 0x08b5, 0x2649, 0x265b, 0x08ed, 0x266e, 0x0914, 0x2681, 0x093a, + // Entry 42A00 - 42A3F + 0x094e, 0x095f, 0x2695, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, + 0x09e6, 0x09f7, 0x2cc3, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x2cf9, + 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, + 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, + 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x26ca, 0x0c37, 0x0c4c, 0x26dd, + 0x0c74, 0x26f0, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x0cf2, 0x0d07, + 0x2f3a, 0x271a, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x272d, 0x0db0, + 0x0dc3, 0x2740, 0x0def, 0x0e04, 0x0e19, 0x2755, 0x0e43, 0x0e57, + // Entry 42A40 - 42A7F + 0x0e6d, 0x0e80, 0x0e96, 0x305e, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, + 0x0f12, 0x0f26, 0x277c, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, + 0x3158, 0x27a6, 0x0fe6, 0x0ffd, 0x27bc, 0x1028, 0x103c, 0x1051, + 0x1066, 0x107a, 0x108e, 0x27d3, 0x10b8, 0x10cf, 0x10e3, 0x404e, + 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x4062, + 0x11ba, 0x32e4, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, + 0x1262, 0x1276, 0x280f, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x2823, + 0x1308, 0x2839, 0x1335, 0x134b, 0x2454, 0x1374, 0x1388, 0x139e, + // Entry 42A80 - 42ABF + 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, + 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x34e1, 0x14f5, + 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, + 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x2861, 0x164d, + 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x2876, 0x362d, 0x16f7, + 0x170c, 0x289d, 0x28b2, 0x174a, 0x175e, 0x1773, 0x28c9, 0x179b, + 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x3737, + 0x2468, 0x1874, 0x3776, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, + // Entry 42AC0 - 42AFF + 0x1906, 0x191b, 0x192f, 0x1942, 0x37c5, 0x196d, 0x1983, 0x1997, + 0x2915, 0x291b, 0x2923, 0x292a, 0x0004, 0x057f, 0x0579, 0x0576, + 0x057c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x058b, 0x0000, + 0x0000, 0x0000, 0x05d2, 0x0000, 0x0000, 0x9006, 0x0002, 0x058e, + 0x05b0, 0x0003, 0x0592, 0x0000, 0x05a1, 0x000d, 0x004b, 0xffff, + 0x0936, 0x0940, 0x28ff, 0x0954, 0x2908, 0x095f, 0x0969, 0x2910, + 0x2917, 0x0978, 0x097c, 0x0983, 0x000d, 0x004b, 0xffff, 0x0936, + // Entry 42B00 - 42B3F + 0x0940, 0x28ff, 0x0954, 0x2908, 0x095f, 0x0969, 0x2910, 0x2917, + 0x0978, 0x097c, 0x0983, 0x0003, 0x05b4, 0x0000, 0x05c3, 0x000d, + 0x0000, 0xffff, 0x19c9, 0x19d3, 0x4077, 0x4080, 0x4084, 0x19f2, + 0x408c, 0x4091, 0x4098, 0x1a0b, 0x409e, 0x40a5, 0x000d, 0x0000, + 0xffff, 0x19c9, 0x19d3, 0x4077, 0x4080, 0x4084, 0x19f2, 0x408c, + 0x4091, 0x4098, 0x1a0b, 0x409e, 0x40a5, 0x0001, 0x05d4, 0x0001, + 0x05d6, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x05e2, 0x0000, 0x0000, 0x9006, 0x0001, 0x05e4, 0x0001, + // Entry 42B40 - 42B7F + 0x05e6, 0x0002, 0x005d, 0x0340, 0x034b, 0x0040, 0x062b, 0x0000, + 0x0000, 0x0630, 0x0647, 0x065e, 0x0675, 0x068c, 0x06a3, 0x06ba, + 0x06d1, 0x06e8, 0x06ff, 0x071a, 0x0735, 0x0000, 0x0000, 0x0000, + 0x0750, 0x0769, 0x0782, 0x0000, 0x0000, 0x0000, 0x079b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x07a0, 0x07b4, 0x07c8, 0x07dc, + 0x07f0, 0x0804, 0x0818, 0x082c, 0x0840, 0x0854, 0x0868, 0x087c, + 0x0890, 0x08a4, 0x08b8, 0x08cc, 0x08e0, 0x08f4, 0x0908, 0x091c, + 0x0930, 0x0000, 0x0944, 0x0000, 0x0949, 0x095f, 0x0975, 0x098b, + // Entry 42B80 - 42BBF + 0x09a1, 0x09b7, 0x09cd, 0x09e3, 0x09f9, 0x0a0f, 0x0001, 0x062d, + 0x0001, 0x0001, 0x0040, 0x0003, 0x0634, 0x0637, 0x063c, 0x0001, + 0x0015, 0x024b, 0x0003, 0x005d, 0x0350, 0x0357, 0x035d, 0x0002, + 0x063f, 0x0643, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x005d, + 0x0368, 0x0368, 0x0003, 0x064b, 0x064e, 0x0653, 0x0001, 0x0015, + 0x024b, 0x0003, 0x005d, 0x0350, 0x0357, 0x035d, 0x0002, 0x0656, + 0x065a, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x005d, 0x0368, + 0x0368, 0x0003, 0x0662, 0x0665, 0x066a, 0x0001, 0x0015, 0x024b, + // Entry 42BC0 - 42BFF + 0x0003, 0x005d, 0x0350, 0x0357, 0x035d, 0x0002, 0x066d, 0x0671, + 0x0002, 0x004b, 0x09ab, 0x09ab, 0x0002, 0x005d, 0x037b, 0x037b, + 0x0003, 0x0679, 0x067c, 0x0681, 0x0001, 0x000d, 0x03b7, 0x0003, + 0x005d, 0x0386, 0x0397, 0x03a5, 0x0002, 0x0684, 0x0688, 0x0002, + 0x0015, 0x02b4, 0x02b4, 0x0002, 0x005d, 0x03b4, 0x03b4, 0x0003, + 0x0690, 0x0693, 0x0698, 0x0001, 0x000d, 0x043e, 0x0003, 0x005d, + 0x03cb, 0x03d6, 0x03e0, 0x0002, 0x069b, 0x069f, 0x0002, 0x004b, + 0x0a0d, 0x0a0d, 0x0002, 0x005d, 0x03eb, 0x03eb, 0x0003, 0x06a7, + // Entry 42C00 - 42C3F + 0x06aa, 0x06af, 0x0001, 0x000d, 0x043e, 0x0003, 0x005d, 0x03cb, + 0x03d6, 0x03e0, 0x0002, 0x06b2, 0x06b6, 0x0002, 0x002e, 0x156e, + 0x156e, 0x0002, 0x005d, 0x03fe, 0x03fe, 0x0003, 0x06be, 0x06c1, + 0x06c6, 0x0001, 0x004e, 0x01e2, 0x0003, 0x005d, 0x0408, 0x0418, + 0x0425, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x005d, 0x0441, 0x0433, + 0x0002, 0x005d, 0x0467, 0x0451, 0x0003, 0x06d5, 0x06d8, 0x06dd, + 0x0001, 0x0000, 0x3a8d, 0x0003, 0x005d, 0x047f, 0x048c, 0x0498, + 0x0002, 0x06e0, 0x06e4, 0x0002, 0x005d, 0x04a5, 0x04a5, 0x0002, + // Entry 42C40 - 42C7F + 0x005d, 0x04b2, 0x04b2, 0x0003, 0x06ec, 0x06ef, 0x06f4, 0x0001, + 0x005d, 0x00db, 0x0003, 0x005d, 0x047f, 0x048c, 0x0498, 0x0002, + 0x06f7, 0x06fb, 0x0002, 0x005d, 0x04c7, 0x04c7, 0x0002, 0x005d, + 0x04d2, 0x04d2, 0x0004, 0x0704, 0x0707, 0x070c, 0x0717, 0x0001, + 0x005d, 0x04de, 0x0003, 0x005d, 0x04e4, 0x04f2, 0x04fe, 0x0002, + 0x070f, 0x0713, 0x0002, 0x005d, 0x0518, 0x050b, 0x0002, 0x005d, + 0x053b, 0x0526, 0x0001, 0x005d, 0x0551, 0x0004, 0x071f, 0x0722, + 0x0727, 0x0732, 0x0001, 0x0000, 0x1f94, 0x0003, 0x005d, 0x0561, + // Entry 42C80 - 42CBF + 0x056b, 0x0574, 0x0002, 0x072a, 0x072e, 0x0002, 0x005d, 0x057e, + 0x057e, 0x0002, 0x005d, 0x0588, 0x0588, 0x0001, 0x005d, 0x0551, + 0x0004, 0x073a, 0x073d, 0x0742, 0x074d, 0x0001, 0x0000, 0x1f94, + 0x0003, 0x005d, 0x0561, 0x056b, 0x0574, 0x0002, 0x0745, 0x0749, + 0x0002, 0x005d, 0x059a, 0x059a, 0x0002, 0x005d, 0x05a2, 0x05a2, + 0x0001, 0x005d, 0x0551, 0x0003, 0x0754, 0x0757, 0x075e, 0x0001, + 0x0051, 0x005f, 0x0005, 0x005d, 0x05b7, 0x05be, 0x05c4, 0x05ab, + 0x05cd, 0x0002, 0x0761, 0x0765, 0x0002, 0x0015, 0x2cf3, 0x04bc, + // Entry 42CC0 - 42CFF + 0x0002, 0x005d, 0x05ee, 0x05db, 0x0003, 0x076d, 0x0770, 0x0777, + 0x0001, 0x0051, 0x005f, 0x0005, 0x005d, 0x05b7, 0x05be, 0x05c4, + 0x05ab, 0x05cd, 0x0002, 0x077a, 0x077e, 0x0002, 0x005d, 0x0603, + 0x0603, 0x0002, 0x005d, 0x061d, 0x060c, 0x0003, 0x0786, 0x0789, + 0x0790, 0x0001, 0x0051, 0x005f, 0x0005, 0x005d, 0x05b7, 0x05be, + 0x05c4, 0x05ab, 0x05cd, 0x0002, 0x0793, 0x0797, 0x0002, 0x0000, + 0x1b48, 0x1b48, 0x0002, 0x005d, 0x0630, 0x0630, 0x0001, 0x079d, + 0x0001, 0x005d, 0x0639, 0x0003, 0x0000, 0x07a4, 0x07a9, 0x0003, + // Entry 42D00 - 42D3F + 0x005d, 0x0642, 0x0658, 0x066c, 0x0002, 0x07ac, 0x07b0, 0x0002, + 0x005d, 0x0690, 0x0681, 0x0002, 0x005d, 0x06b8, 0x06a1, 0x0003, + 0x0000, 0x07b8, 0x07bd, 0x0003, 0x005d, 0x06d1, 0x06e5, 0x06f7, + 0x0002, 0x07c0, 0x07c4, 0x0002, 0x005d, 0x070a, 0x070a, 0x0002, + 0x005d, 0x0717, 0x0717, 0x0003, 0x0000, 0x07cc, 0x07d1, 0x0003, + 0x005d, 0x072a, 0x0737, 0x0743, 0x0002, 0x07d4, 0x07d8, 0x0002, + 0x005d, 0x0750, 0x0750, 0x0002, 0x005d, 0x075a, 0x075a, 0x0003, + 0x0000, 0x07e0, 0x07e5, 0x0003, 0x005d, 0x0766, 0x077c, 0x0790, + // Entry 42D40 - 42D7F + 0x0002, 0x07e8, 0x07ec, 0x0002, 0x005d, 0x07b4, 0x07a5, 0x0002, + 0x005d, 0x07dc, 0x07c5, 0x0003, 0x0000, 0x07f4, 0x07f9, 0x0003, + 0x005d, 0x07f5, 0x0809, 0x081b, 0x0002, 0x07fc, 0x0800, 0x0002, + 0x005d, 0x082e, 0x082e, 0x0002, 0x005d, 0x083c, 0x083c, 0x0003, + 0x0000, 0x0808, 0x080d, 0x0003, 0x005d, 0x047f, 0x048c, 0x0498, + 0x0002, 0x0810, 0x0814, 0x0002, 0x005d, 0x0850, 0x0850, 0x0002, + 0x005d, 0x085a, 0x085a, 0x0003, 0x0000, 0x081c, 0x0821, 0x0003, + 0x005d, 0x0867, 0x087c, 0x088f, 0x0002, 0x0824, 0x0828, 0x0002, + // Entry 42D80 - 42DBF + 0x005d, 0x08b1, 0x08a3, 0x0002, 0x005d, 0x08d7, 0x08c1, 0x0003, + 0x0000, 0x0830, 0x0835, 0x0003, 0x005d, 0x08ef, 0x0902, 0x0913, + 0x0002, 0x0838, 0x083c, 0x0002, 0x005d, 0x0925, 0x0925, 0x0002, + 0x005d, 0x0931, 0x0931, 0x0003, 0x0000, 0x0844, 0x0849, 0x0003, + 0x005d, 0x0943, 0x094f, 0x095a, 0x0002, 0x084c, 0x0850, 0x0002, + 0x005d, 0x0966, 0x0966, 0x0002, 0x005d, 0x096f, 0x096f, 0x0003, + 0x0000, 0x0858, 0x085d, 0x0003, 0x005d, 0x097a, 0x098f, 0x09a2, + 0x0002, 0x0860, 0x0864, 0x0002, 0x0015, 0x2d00, 0x0744, 0x0002, + // Entry 42DC0 - 42DFF + 0x005d, 0x09cc, 0x09b6, 0x0003, 0x0000, 0x086c, 0x0871, 0x0003, + 0x005d, 0x09e4, 0x09f7, 0x0a08, 0x0002, 0x0874, 0x0878, 0x0002, + 0x004b, 0x0ddd, 0x0ddd, 0x0002, 0x005d, 0x0a1a, 0x0a1a, 0x0003, + 0x0000, 0x0880, 0x0885, 0x0003, 0x005d, 0x0a2c, 0x0a38, 0x0a43, + 0x0002, 0x0888, 0x088c, 0x0002, 0x005d, 0x0a4f, 0x0a4f, 0x0002, + 0x005d, 0x0a58, 0x0a58, 0x0003, 0x0000, 0x0894, 0x0899, 0x0003, + 0x005d, 0x0a63, 0x0a79, 0x0a8d, 0x0002, 0x089c, 0x08a0, 0x0002, + 0x0015, 0x2d10, 0x07f5, 0x0002, 0x005d, 0x0ab9, 0x0aa2, 0x0003, + // Entry 42E00 - 42E3F + 0x0000, 0x08a8, 0x08ad, 0x0003, 0x005d, 0x0ad2, 0x0ae6, 0x0af8, + 0x0002, 0x08b0, 0x08b4, 0x0002, 0x005d, 0x0b0b, 0x0b0b, 0x0002, + 0x005d, 0x0b18, 0x0b18, 0x0003, 0x0000, 0x08bc, 0x08c1, 0x0003, + 0x005d, 0x0b2b, 0x0b38, 0x0b44, 0x0002, 0x08c4, 0x08c8, 0x0002, + 0x005d, 0x0b51, 0x0b51, 0x0002, 0x005d, 0x0b5b, 0x0b5b, 0x0003, + 0x0000, 0x08d0, 0x08d5, 0x0003, 0x005d, 0x0b67, 0x0b7c, 0x0b8f, + 0x0002, 0x08d8, 0x08dc, 0x0002, 0x0015, 0x2d21, 0x08a7, 0x0002, + 0x005d, 0x0bb9, 0x0ba3, 0x0003, 0x0000, 0x08e4, 0x08e9, 0x0003, + // Entry 42E40 - 42E7F + 0x005d, 0x0bd1, 0x0be4, 0x0bf5, 0x0002, 0x08ec, 0x08f0, 0x0002, + 0x004b, 0x0f38, 0x0f38, 0x0002, 0x005d, 0x0c19, 0x0c07, 0x0003, + 0x0000, 0x08f8, 0x08fd, 0x0003, 0x005d, 0x0c2c, 0x0c38, 0x0c43, + 0x0002, 0x0900, 0x0904, 0x0002, 0x005d, 0x0c4f, 0x0c4f, 0x0002, + 0x005d, 0x0c58, 0x0c58, 0x0003, 0x0000, 0x090c, 0x0911, 0x0003, + 0x005d, 0x0c63, 0x0c79, 0x0c8d, 0x0002, 0x0914, 0x0918, 0x0002, + 0x005d, 0x0cb1, 0x0ca2, 0x0002, 0x005d, 0x0cd9, 0x0cc2, 0x0003, + 0x0000, 0x0920, 0x0925, 0x0003, 0x005d, 0x0cf2, 0x0d06, 0x0d18, + // Entry 42E80 - 42EBF + 0x0002, 0x0928, 0x092c, 0x0002, 0x005d, 0x0d2b, 0x0d2b, 0x0002, + 0x005d, 0x0d38, 0x0d38, 0x0003, 0x0000, 0x0934, 0x0939, 0x0003, + 0x005d, 0x0d4b, 0x0d58, 0x0d64, 0x0002, 0x093c, 0x0940, 0x0002, + 0x005d, 0x0d71, 0x0d71, 0x0002, 0x005d, 0x0d7b, 0x0d7b, 0x0001, + 0x0946, 0x0001, 0x005d, 0x0d87, 0x0003, 0x094d, 0x0950, 0x0954, + 0x0001, 0x005d, 0x0d8d, 0x0002, 0x005d, 0xffff, 0x0d93, 0x0002, + 0x0957, 0x095b, 0x0002, 0x005d, 0x0dac, 0x0d9f, 0x0002, 0x005d, + 0x0dcf, 0x0dba, 0x0003, 0x0963, 0x0966, 0x096a, 0x0001, 0x005d, + // Entry 42EC0 - 42EFF + 0x0de5, 0x0002, 0x005d, 0xffff, 0x0d93, 0x0002, 0x096d, 0x0971, + 0x0002, 0x005d, 0x0de9, 0x0de9, 0x0002, 0x005d, 0x0df4, 0x0df4, + 0x0003, 0x0979, 0x097c, 0x0980, 0x0001, 0x0000, 0x2143, 0x0002, + 0x005d, 0xffff, 0x0d93, 0x0002, 0x0983, 0x0987, 0x0002, 0x0000, + 0x1d76, 0x1d76, 0x0002, 0x005d, 0x0e07, 0x0e07, 0x0003, 0x098f, + 0x0992, 0x0996, 0x0001, 0x0010, 0x0b77, 0x0002, 0x005d, 0xffff, + 0x0e10, 0x0002, 0x0999, 0x099d, 0x0002, 0x0015, 0x2d31, 0x0a65, + 0x0002, 0x005d, 0x0e31, 0x0e1c, 0x0003, 0x09a5, 0x09a8, 0x09ac, + // Entry 42F00 - 42F3F + 0x0001, 0x0041, 0x092f, 0x0002, 0x005d, 0xffff, 0x0e10, 0x0002, + 0x09af, 0x09b3, 0x0002, 0x005d, 0x0e48, 0x0e48, 0x0002, 0x005d, + 0x0e54, 0x0e54, 0x0003, 0x09bb, 0x09be, 0x09c2, 0x0001, 0x0000, + 0x3a8d, 0x0002, 0x005d, 0xffff, 0x0e10, 0x0002, 0x09c5, 0x09c9, + 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x005d, 0x0e68, 0x0e68, + 0x0003, 0x09d1, 0x09d4, 0x09d8, 0x0001, 0x0015, 0x0ad8, 0x0002, + 0x0015, 0xffff, 0x0adf, 0x0002, 0x09db, 0x09df, 0x0002, 0x0015, + 0x0af0, 0x0ae2, 0x0002, 0x005d, 0x0e89, 0x0e73, 0x0003, 0x09e7, + // Entry 42F40 - 42F7F + 0x09ea, 0x09ee, 0x0001, 0x001f, 0x027b, 0x0002, 0x0015, 0xffff, + 0x0adf, 0x0002, 0x09f1, 0x09f5, 0x0002, 0x005d, 0x0ead, 0x0ea1, + 0x0002, 0x005d, 0x0eb8, 0x0eb8, 0x0003, 0x09fd, 0x0a00, 0x0a04, + 0x0001, 0x0000, 0x2002, 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, + 0x0a07, 0x0a0b, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, 0x005d, + 0x0ecc, 0x0ecc, 0x0001, 0x0a11, 0x0001, 0x005d, 0x0ed5, 0x0004, + 0x0a19, 0x0a1e, 0x0a23, 0x0a48, 0x0003, 0x001c, 0x0baf, 0x22b9, + 0x22b5, 0x0003, 0x005d, 0x0edd, 0x0ee4, 0x0ef4, 0x0002, 0x0a32, + // Entry 42F80 - 42FBF + 0x0a26, 0x0003, 0x0000, 0x0a2d, 0x0a2a, 0x0001, 0x005d, 0x0f04, + 0x0003, 0x005d, 0xffff, 0x0f1f, 0x0f32, 0x0003, 0x0a36, 0x0a42, + 0x0a3c, 0x0004, 0x005d, 0xffff, 0xffff, 0xffff, 0x0f46, 0x0004, + 0x005d, 0xffff, 0xffff, 0xffff, 0x0f52, 0x0004, 0x005d, 0xffff, + 0xffff, 0xffff, 0x0f64, 0x0002, 0x0c2f, 0x0a4b, 0x0003, 0x0a4f, + 0x0b8f, 0x0aef, 0x009e, 0x005d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1006, 0x104b, 0x10a3, 0x10d7, 0x1131, 0x1182, 0x11cb, 0x121f, + 0x1249, 0x12c5, 0x1304, 0x1349, 0x1391, 0x13c4, 0x141b, 0x1469, + // Entry 42FC0 - 42FFF + 0x14c6, 0x150b, 0x1553, 0x1598, 0x15c8, 0xffff, 0xffff, 0x1626, + 0xffff, 0x1664, 0xffff, 0x16b0, 0x16e1, 0x1714, 0x1747, 0xffff, + 0xffff, 0x17a0, 0x17dc, 0x1818, 0xffff, 0xffff, 0xffff, 0x1879, + 0xffff, 0x18bd, 0x1908, 0xffff, 0x1959, 0x199e, 0x19e9, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1a5a, 0xffff, 0xffff, 0x1aa6, 0x1af1, + 0xffff, 0xffff, 0x0f46, 0x1b8b, 0x1bbf, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1c66, 0x1c93, 0x1cc4, 0x1cfa, 0x1d2a, + 0xffff, 0xffff, 0x1d86, 0xffff, 0x1dc3, 0xffff, 0xffff, 0x1e2b, + // Entry 43000 - 4303F + 0xffff, 0x1e96, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f04, 0xffff, + 0x1f45, 0x1f96, 0x1ff4, 0x2031, 0xffff, 0xffff, 0xffff, 0x2085, + 0x20cb, 0x210a, 0xffff, 0xffff, 0x2162, 0x21cb, 0x2208, 0x2230, + 0xffff, 0xffff, 0x2288, 0x22c7, 0x22fa, 0xffff, 0x2340, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x240e, 0x2442, 0x246c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x24fd, 0xffff, + 0xffff, 0x2546, 0xffff, 0x257a, 0xffff, 0x25ba, 0x25f6, 0x2629, + 0xffff, 0x266b, 0x26a8, 0xffff, 0xffff, 0xffff, 0x2717, 0x2748, + // Entry 43040 - 4307F + 0xffff, 0xffff, 0x0f76, 0x1079, 0x1271, 0x1298, 0xffff, 0xffff, + 0x1e62, 0x23c4, 0x009e, 0x005d, 0x0fc1, 0x0fce, 0x0fe3, 0x0ff5, + 0x1019, 0x1055, 0x10af, 0x10f1, 0x1148, 0x1195, 0x11e3, 0x1229, + 0x1251, 0x12d6, 0x1317, 0x135d, 0x139e, 0x13dd, 0x1431, 0x1484, + 0x14d9, 0x151f, 0x1566, 0x15a4, 0x15da, 0x160a, 0x1617, 0x1632, + 0x165a, 0x1671, 0x16a4, 0x16bb, 0x16ee, 0x1721, 0x1755, 0x1781, + 0x178d, 0x17b0, 0x17ec, 0x1824, 0x1848, 0x1851, 0x1868, 0x1884, + 0x18ac, 0x18d2, 0x191a, 0x194a, 0x196c, 0x19b3, 0x19f1, 0x1a11, + // Entry 43080 - 430BF + 0x1a23, 0x1a41, 0x1a4f, 0x1a67, 0x1a8d, 0x1a99, 0x1abb, 0x1b07, + 0x1b47, 0x1b59, 0x1b63, 0x1b97, 0x1bc8, 0x1bea, 0x1bf5, 0x1c18, + 0x1c29, 0x1c3f, 0x1c52, 0x1c71, 0x1c9e, 0x1cd2, 0x1d06, 0x1d37, + 0x1d5d, 0x1d71, 0x1d93, 0x1db9, 0x1dd2, 0x1e00, 0x1e1b, 0x1e38, + 0x1e89, 0x1ea1, 0x1ec7, 0x1ed5, 0x1ee3, 0x1ef0, 0x1f11, 0x1f3b, + 0x1f5c, 0x1fae, 0x2003, 0x203b, 0x205f, 0x206d, 0x2076, 0x2097, + 0x20dc, 0x211a, 0x214a, 0x2152, 0x2179, 0x21da, 0x2210, 0x223f, + 0x2269, 0x2272, 0x2299, 0x22d4, 0x2309, 0x2333, 0x235b, 0x23a1, + // Entry 430C0 - 430FF + 0x23ad, 0x23b7, 0x23f7, 0x2403, 0x241a, 0x244c, 0x2479, 0x249f, + 0x24af, 0x24bc, 0x24cf, 0x24df, 0x24ea, 0x24f3, 0x2507, 0x252b, + 0x253b, 0x254f, 0x2571, 0x2588, 0x25b0, 0x25ca, 0x2603, 0x2634, + 0x265a, 0x267a, 0x26b5, 0x26df, 0x26e9, 0x26f9, 0x2722, 0x2759, + 0x1b3f, 0x21b7, 0x0f8b, 0x1083, 0x127a, 0x12a3, 0x169b, 0x1e0e, + 0x1e6b, 0x23d1, 0x009e, 0x005d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1032, 0x1067, 0x10c3, 0x1111, 0x1165, 0x11b0, 0x1201, 0x1239, + 0x1261, 0x12ed, 0x1330, 0x1377, 0x13b1, 0x13fc, 0x144d, 0x14a5, + // Entry 43100 - 4313F + 0x14f2, 0x1539, 0x157f, 0x15b6, 0x15f2, 0xffff, 0xffff, 0x1646, + 0xffff, 0x1686, 0xffff, 0x16ce, 0x1701, 0x1734, 0x176b, 0xffff, + 0xffff, 0x17c6, 0x1802, 0x1836, 0xffff, 0xffff, 0xffff, 0x1898, + 0xffff, 0x18ed, 0x1932, 0xffff, 0x1985, 0x19ce, 0x1a01, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1a7a, 0xffff, 0xffff, 0x1ad6, 0x1b23, + 0xffff, 0xffff, 0x1b77, 0x1bab, 0x1bd9, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1c82, 0x1cb1, 0x1ce6, 0x1d18, 0x1d4a, + 0xffff, 0xffff, 0x1da6, 0xffff, 0x1de9, 0xffff, 0xffff, 0x1e4d, + // Entry 43140 - 4317F + 0xffff, 0x1eb4, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f26, 0xffff, + 0x1f79, 0x1fd1, 0x201a, 0x204d, 0xffff, 0xffff, 0xffff, 0x20b1, + 0x20f3, 0x2132, 0xffff, 0xffff, 0x2198, 0x21f1, 0x2220, 0x2254, + 0xffff, 0xffff, 0x22b0, 0x22e7, 0x231e, 0xffff, 0x237e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x242e, 0x245c, 0x248c, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2519, 0xffff, + 0xffff, 0x2560, 0xffff, 0x259c, 0xffff, 0x25e0, 0x2616, 0x2647, + 0xffff, 0x2691, 0x26ca, 0xffff, 0xffff, 0xffff, 0x2735, 0x2772, + // Entry 43180 - 431BF + 0xffff, 0xffff, 0x0fa6, 0x1093, 0x1289, 0x12b4, 0xffff, 0xffff, + 0x1e7a, 0x23e4, 0x0003, 0x0c33, 0x0ca2, 0x0c66, 0x0031, 0x001c, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, + // Entry 431C0 - 431FF + 0x2295, 0x003a, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x22b5, 0x0031, 0x001c, 0xffff, + // Entry 43200 - 4323F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0006, 0x0000, 0x0000, 0x0012, 0x0000, + // Entry 43240 - 4327F + 0x0000, 0x0027, 0x0002, 0x0015, 0x001e, 0x0001, 0x0017, 0x0005, + 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0001, 0x0020, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0001, + 0x0029, 0x0001, 0x0005, 0x04ec, 0x0003, 0x0004, 0x0268, 0x0644, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + // Entry 43280 - 432BF + 0x0001, 0x0002, 0x04f7, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0005, 0xffff, 0x0636, + 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x22d8, 0x22dc, + 0x24a9, 0x22e0, 0x21e2, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29a5, + 0x29d1, 0x29a9, 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, 0x29af, + // Entry 432C0 - 432FF + 0x29b1, 0x29b3, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x2441, + 0x067d, 0x2386, 0x24ad, 0x2395, 0x239b, 0x2447, 0x23ab, 0x2450, + 0x23ba, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0005, 0xffff, + 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x22d8, + 0x22dc, 0x24a9, 0x22e0, 0x21e2, 0x000d, 0x0017, 0xffff, 0x29cf, + 0x29a5, 0x29d1, 0x29a9, 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, + 0x29af, 0x29b1, 0x29b3, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, + 0x2441, 0x067d, 0x2386, 0x24ad, 0x2395, 0x239b, 0x2447, 0x23ab, + // Entry 43300 - 4333F + 0x2450, 0x23ba, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0005, 0x06d2, 0x24b2, 0x24bb, + 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0007, 0x0017, 0x29bb, 0x29d1, + 0x29d3, 0x29d5, 0x29d3, 0x29a5, 0x29bb, 0x0007, 0x0005, 0x06d2, + 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0007, 0x0005, + 0x06d2, 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0005, 0x06d2, + 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0007, 0x0017, + // Entry 43340 - 4337F + 0x29bb, 0x29d1, 0x29d3, 0x29d5, 0x29d3, 0x29a5, 0x29bb, 0x0007, + 0x0005, 0x06d2, 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, + 0x0007, 0x0005, 0x06d2, 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, + 0x24dc, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x005e, 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005e, + 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x005e, 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, + // Entry 43380 - 433BF + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x005e, 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, 0x0002, 0x0135, + 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, + 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, + 0x005e, 0x0028, 0x0001, 0x0000, 0x04ef, 0x0001, 0x005e, 0x003a, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, + 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, + 0x005e, 0x006b, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, + // Entry 433C0 - 433FF + 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x005e, 0x0028, 0x0001, + 0x0000, 0x2337, 0x0001, 0x005e, 0x003a, 0x0001, 0x0000, 0x233a, + 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, + 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, 0x005e, 0x006b, 0x0009, + 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, + 0x019c, 0x0001, 0x005e, 0x0028, 0x0001, 0x005e, 0x0071, 0x0001, + 0x005e, 0x003a, 0x0001, 0x005e, 0x0079, 0x0001, 0x005e, 0x004d, + 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, 0x005e, + // Entry 43400 - 4343F + 0x0065, 0x0001, 0x005e, 0x006b, 0x0003, 0x01ac, 0x01d1, 0x01f6, + 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, + 0x01bc, 0x01c5, 0x0001, 0x005e, 0x0028, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x005e, 0x003a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x005e, + 0x004d, 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, + 0x005e, 0x0065, 0x0001, 0x005e, 0x006b, 0x0009, 0x01de, 0x01e4, + 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, + 0x005e, 0x0028, 0x0001, 0x0000, 0x2337, 0x0001, 0x005e, 0x003a, + // Entry 43440 - 4347F + 0x0001, 0x0000, 0x233a, 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, + 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, + 0x005e, 0x006b, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, + 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x005e, 0x0028, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x005e, 0x003a, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, + 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, 0x005e, 0x006b, 0x0003, + 0x022a, 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, 0x0016, + // Entry 43480 - 434BF + 0x01db, 0x01eb, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x022d, + 0x0231, 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0002, 0x0000, 0x04f5, + 0x04f9, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x0005, + 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0002, 0x0860, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 434C0 - 434FF + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, 0x0000, + 0x02ae, 0x02c5, 0x02d7, 0x02e9, 0x0300, 0x0312, 0x0324, 0x033b, + 0x034d, 0x035f, 0x037a, 0x0390, 0x0000, 0x0000, 0x0000, 0x03a6, + 0x03bf, 0x03d1, 0x0000, 0x0000, 0x0000, 0x03e3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x03e8, 0x03fc, 0x0410, 0x0424, 0x0438, + 0x044c, 0x0460, 0x0474, 0x0488, 0x049c, 0x04b0, 0x04c4, 0x04d8, + 0x04ec, 0x0500, 0x0514, 0x0528, 0x053c, 0x0550, 0x0564, 0x0578, + 0x0000, 0x058c, 0x0000, 0x0591, 0x05a7, 0x05b9, 0x05cb, 0x05e1, + // Entry 43500 - 4353F + 0x05f3, 0x0605, 0x061b, 0x062d, 0x063f, 0x0001, 0x02ab, 0x0001, + 0x005e, 0x0080, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x005e, + 0x0085, 0x0003, 0x005e, 0x008b, 0x009a, 0x00a4, 0x0002, 0x02bd, + 0x02c1, 0x0002, 0x005e, 0x00c2, 0x00af, 0x0002, 0x005e, 0x00e8, + 0x00d5, 0x0003, 0x02c9, 0x0000, 0x02cc, 0x0001, 0x005e, 0x0085, + 0x0002, 0x02cf, 0x02d3, 0x0002, 0x005e, 0x00c2, 0x00af, 0x0002, + 0x005e, 0x00e8, 0x00d5, 0x0003, 0x02db, 0x0000, 0x02de, 0x0001, + 0x005e, 0x0085, 0x0002, 0x02e1, 0x02e5, 0x0002, 0x005e, 0x00c2, + // Entry 43540 - 4357F + 0x00af, 0x0002, 0x005e, 0x00e8, 0x00d5, 0x0003, 0x02ed, 0x02f0, + 0x02f5, 0x0001, 0x005e, 0x00fc, 0x0003, 0x005e, 0x0101, 0x0119, + 0x012b, 0x0002, 0x02f8, 0x02fc, 0x0002, 0x005e, 0x0144, 0x0144, + 0x0002, 0x005e, 0x0169, 0x0156, 0x0003, 0x0304, 0x0000, 0x0307, + 0x0001, 0x005e, 0x00fc, 0x0002, 0x030a, 0x030e, 0x0002, 0x005e, + 0x0144, 0x0144, 0x0002, 0x005e, 0x0169, 0x0156, 0x0003, 0x0316, + 0x0000, 0x0319, 0x0001, 0x005e, 0x00fc, 0x0002, 0x031c, 0x0320, + 0x0002, 0x005e, 0x0144, 0x0144, 0x0002, 0x005e, 0x0169, 0x0156, + // Entry 43580 - 435BF + 0x0003, 0x0328, 0x032b, 0x0330, 0x0001, 0x005e, 0x017d, 0x0003, + 0x005e, 0x0183, 0x0192, 0x019c, 0x0002, 0x0333, 0x0337, 0x0002, + 0x005e, 0x01ba, 0x01a7, 0x0002, 0x005e, 0x01e0, 0x01cd, 0x0003, + 0x033f, 0x0000, 0x0342, 0x0001, 0x005e, 0x017d, 0x0002, 0x0345, + 0x0349, 0x0002, 0x005e, 0x01ba, 0x01a7, 0x0002, 0x005e, 0x01e0, + 0x01cd, 0x0003, 0x0351, 0x0000, 0x0354, 0x0001, 0x005e, 0x017d, + 0x0002, 0x0357, 0x035b, 0x0002, 0x005e, 0x01ba, 0x01a7, 0x0002, + 0x005e, 0x01e0, 0x01cd, 0x0004, 0x0364, 0x0367, 0x036c, 0x0377, + // Entry 435C0 - 435FF + 0x0001, 0x005e, 0x01f4, 0x0003, 0x005e, 0x01f9, 0x0208, 0x0211, + 0x0002, 0x036f, 0x0373, 0x0002, 0x005e, 0x021c, 0x021c, 0x0002, + 0x005e, 0x0241, 0x022e, 0x0001, 0x005e, 0x0255, 0x0004, 0x037f, + 0x0000, 0x0382, 0x038d, 0x0001, 0x005e, 0x01f4, 0x0002, 0x0385, + 0x0389, 0x0002, 0x005e, 0x021c, 0x021c, 0x0002, 0x005e, 0x0241, + 0x022e, 0x0001, 0x005e, 0x0255, 0x0004, 0x0395, 0x0000, 0x0398, + 0x03a3, 0x0001, 0x005e, 0x01f4, 0x0002, 0x039b, 0x039f, 0x0002, + 0x005e, 0x021c, 0x021c, 0x0002, 0x005e, 0x0241, 0x022e, 0x0001, + // Entry 43600 - 4363F + 0x005e, 0x0255, 0x0003, 0x03aa, 0x03ad, 0x03b4, 0x0001, 0x005e, + 0x0261, 0x0005, 0x005e, 0x026b, 0x0270, 0x0274, 0x0266, 0x027a, + 0x0002, 0x03b7, 0x03bb, 0x0002, 0x005e, 0x0286, 0x0286, 0x0002, + 0x005e, 0x02ab, 0x0298, 0x0003, 0x03c3, 0x0000, 0x03c6, 0x0001, + 0x005e, 0x0261, 0x0002, 0x03c9, 0x03cd, 0x0002, 0x005e, 0x0286, + 0x0286, 0x0002, 0x005e, 0x02ab, 0x0298, 0x0003, 0x03d5, 0x0000, + 0x03d8, 0x0001, 0x005e, 0x0261, 0x0002, 0x03db, 0x03df, 0x0002, + 0x005e, 0x0286, 0x0286, 0x0002, 0x005e, 0x02ab, 0x0298, 0x0001, + // Entry 43640 - 4367F + 0x03e5, 0x0001, 0x005e, 0x02bf, 0x0003, 0x0000, 0x03ec, 0x03f1, + 0x0003, 0x005e, 0x02cc, 0x02df, 0x02ec, 0x0002, 0x03f4, 0x03f8, + 0x0002, 0x005e, 0x02fb, 0x02fb, 0x0002, 0x005e, 0x0328, 0x0311, + 0x0003, 0x0000, 0x0400, 0x0405, 0x0003, 0x005e, 0x02cc, 0x02df, + 0x02ec, 0x0002, 0x0408, 0x040c, 0x0002, 0x005e, 0x02fb, 0x02fb, + 0x0002, 0x005e, 0x0328, 0x0311, 0x0003, 0x0000, 0x0414, 0x0419, + 0x0003, 0x005e, 0x02cc, 0x02df, 0x02ec, 0x0002, 0x041c, 0x0420, + 0x0002, 0x005e, 0x02fb, 0x02fb, 0x0002, 0x005e, 0x0328, 0x0311, + // Entry 43680 - 436BF + 0x0003, 0x0000, 0x0428, 0x042d, 0x0003, 0x005e, 0x0340, 0x0353, + 0x0360, 0x0002, 0x0430, 0x0434, 0x0002, 0x005e, 0x036f, 0x036f, + 0x0002, 0x005e, 0x039c, 0x0385, 0x0003, 0x0000, 0x043c, 0x0441, + 0x0003, 0x005e, 0x0340, 0x0353, 0x0360, 0x0002, 0x0444, 0x0448, + 0x0002, 0x005e, 0x036f, 0x036f, 0x0002, 0x005e, 0x039c, 0x0385, + 0x0003, 0x0000, 0x0450, 0x0455, 0x0003, 0x005e, 0x0340, 0x0353, + 0x0360, 0x0002, 0x0458, 0x045c, 0x0002, 0x005e, 0x036f, 0x036f, + 0x0002, 0x005e, 0x039c, 0x0385, 0x0003, 0x0000, 0x0464, 0x0469, + // Entry 436C0 - 436FF + 0x0003, 0x005e, 0x03b4, 0x03c6, 0x03d2, 0x0002, 0x046c, 0x0470, + 0x0002, 0x005e, 0x03e0, 0x03e0, 0x0002, 0x005e, 0x040b, 0x03f5, + 0x0003, 0x0000, 0x0478, 0x047d, 0x0003, 0x005e, 0x03b4, 0x03c6, + 0x03d2, 0x0002, 0x0480, 0x0484, 0x0002, 0x005e, 0x03e0, 0x03e0, + 0x0002, 0x005e, 0x040b, 0x03f5, 0x0003, 0x0000, 0x048c, 0x0491, + 0x0003, 0x005e, 0x03b4, 0x03c6, 0x03d2, 0x0002, 0x0494, 0x0498, + 0x0002, 0x005e, 0x03e0, 0x03e0, 0x0002, 0x005e, 0x040b, 0x03f5, + 0x0003, 0x0000, 0x04a0, 0x04a5, 0x0003, 0x005e, 0x0422, 0x0435, + // Entry 43700 - 4373F + 0x0442, 0x0002, 0x04a8, 0x04ac, 0x0002, 0x005e, 0x0451, 0x0451, + 0x0002, 0x005e, 0x047e, 0x0467, 0x0003, 0x0000, 0x04b4, 0x04b9, + 0x0003, 0x005e, 0x0422, 0x0435, 0x0442, 0x0002, 0x04bc, 0x04c0, + 0x0002, 0x005e, 0x0451, 0x0451, 0x0002, 0x005e, 0x047e, 0x0467, + 0x0003, 0x0000, 0x04c8, 0x04cd, 0x0003, 0x005e, 0x0422, 0x0435, + 0x0442, 0x0002, 0x04d0, 0x04d4, 0x0002, 0x005e, 0x0451, 0x0451, + 0x0002, 0x005e, 0x047e, 0x0467, 0x0003, 0x0000, 0x04dc, 0x04e1, + 0x0003, 0x005e, 0x0496, 0x04a9, 0x04b6, 0x0002, 0x04e4, 0x04e8, + // Entry 43740 - 4377F + 0x0002, 0x005e, 0x04c5, 0x04c5, 0x0002, 0x005e, 0x04f2, 0x04db, + 0x0003, 0x0000, 0x04f0, 0x04f5, 0x0003, 0x005e, 0x0496, 0x04a9, + 0x04b6, 0x0002, 0x04f8, 0x04fc, 0x0002, 0x005e, 0x04c5, 0x04c5, + 0x0002, 0x005e, 0x04f2, 0x04db, 0x0003, 0x0000, 0x0504, 0x0509, + 0x0003, 0x005e, 0x0496, 0x04a9, 0x04b6, 0x0002, 0x050c, 0x0510, + 0x0002, 0x005e, 0x04c5, 0x04c5, 0x0002, 0x005e, 0x04f2, 0x04db, + 0x0003, 0x0000, 0x0518, 0x051d, 0x0003, 0x005e, 0x050a, 0x051b, + 0x0526, 0x0002, 0x0520, 0x0524, 0x0002, 0x005e, 0x0533, 0x0533, + // Entry 43780 - 437BF + 0x0002, 0x005e, 0x055c, 0x0547, 0x0003, 0x0000, 0x052c, 0x0531, + 0x0003, 0x005e, 0x050a, 0x051b, 0x0526, 0x0002, 0x0534, 0x0538, + 0x0002, 0x005e, 0x0533, 0x0533, 0x0002, 0x005e, 0x055c, 0x0547, + 0x0003, 0x0000, 0x0540, 0x0545, 0x0003, 0x005e, 0x050a, 0x051b, + 0x0526, 0x0002, 0x0548, 0x054c, 0x0002, 0x005e, 0x0533, 0x0533, + 0x0002, 0x005e, 0x055c, 0x0547, 0x0003, 0x0000, 0x0554, 0x0559, + 0x0003, 0x005e, 0x0572, 0x0585, 0x0592, 0x0002, 0x055c, 0x0560, + 0x0002, 0x005e, 0x05a1, 0x05a1, 0x0002, 0x005e, 0x05ce, 0x05b7, + // Entry 437C0 - 437FF + 0x0003, 0x0000, 0x0568, 0x056d, 0x0003, 0x005e, 0x0572, 0x0585, + 0x0592, 0x0002, 0x0570, 0x0574, 0x0002, 0x005e, 0x05a1, 0x05a1, + 0x0002, 0x005e, 0x05ce, 0x05b7, 0x0003, 0x0000, 0x057c, 0x0581, + 0x0003, 0x005e, 0x0572, 0x0585, 0x0592, 0x0002, 0x0584, 0x0588, + 0x0002, 0x005e, 0x05a1, 0x05a1, 0x0002, 0x005e, 0x05ce, 0x05b7, + 0x0001, 0x058e, 0x0001, 0x0007, 0x07cc, 0x0003, 0x0595, 0x0598, + 0x059c, 0x0001, 0x0044, 0x0400, 0x0002, 0x005e, 0xffff, 0x05e6, + 0x0002, 0x059f, 0x05a3, 0x0002, 0x005e, 0x05ee, 0x05ee, 0x0002, + // Entry 43800 - 4383F + 0x005e, 0x0611, 0x05ff, 0x0003, 0x05ab, 0x0000, 0x05ae, 0x0001, + 0x0044, 0x0400, 0x0002, 0x05b1, 0x05b5, 0x0002, 0x005e, 0x05ee, + 0x05ee, 0x0002, 0x005e, 0x0611, 0x05ff, 0x0003, 0x05bd, 0x0000, + 0x05c0, 0x0001, 0x0044, 0x0400, 0x0002, 0x05c3, 0x05c7, 0x0002, + 0x005e, 0x05ee, 0x05ee, 0x0002, 0x005e, 0x0636, 0x0624, 0x0003, + 0x05cf, 0x05d2, 0x05d6, 0x0001, 0x0044, 0x0404, 0x0002, 0x005e, + 0xffff, 0x0649, 0x0002, 0x05d9, 0x05dd, 0x0002, 0x005e, 0x0654, + 0x0654, 0x0002, 0x005e, 0x067d, 0x0668, 0x0003, 0x05e5, 0x0000, + // Entry 43840 - 4387F + 0x05e8, 0x0001, 0x005e, 0x0693, 0x0002, 0x05eb, 0x05ef, 0x0002, + 0x005e, 0x0654, 0x0654, 0x0002, 0x005e, 0x067d, 0x0668, 0x0003, + 0x05f7, 0x0000, 0x05fa, 0x0001, 0x005e, 0x0693, 0x0002, 0x05fd, + 0x0601, 0x0002, 0x005e, 0x0654, 0x0654, 0x0002, 0x005e, 0x067d, + 0x0668, 0x0003, 0x0609, 0x060c, 0x0610, 0x0001, 0x005e, 0x0697, + 0x0002, 0x005e, 0xffff, 0x069f, 0x0002, 0x0613, 0x0617, 0x0002, + 0x005e, 0x06a9, 0x06a9, 0x0002, 0x005e, 0x06d4, 0x06be, 0x0003, + 0x061f, 0x0000, 0x0622, 0x0001, 0x001f, 0x027b, 0x0002, 0x0625, + // Entry 43880 - 438BF + 0x0629, 0x0002, 0x005e, 0x06a9, 0x06a9, 0x0002, 0x005e, 0x0701, + 0x06eb, 0x0003, 0x0631, 0x0000, 0x0634, 0x0001, 0x001f, 0x027b, + 0x0002, 0x0637, 0x063b, 0x0002, 0x005e, 0x06a9, 0x06a9, 0x0002, + 0x005e, 0x0701, 0x06eb, 0x0001, 0x0641, 0x0001, 0x005e, 0x0718, + 0x0004, 0x0649, 0x064e, 0x0653, 0x065e, 0x0003, 0x0000, 0x1dc7, + 0x40ac, 0x40b4, 0x0003, 0x005e, 0x0724, 0x072f, 0x0744, 0x0002, + 0x0000, 0x0656, 0x0002, 0x0000, 0x0659, 0x0003, 0x005e, 0xffff, + 0x075a, 0x077e, 0x0002, 0x0000, 0x0661, 0x0003, 0x06fb, 0x0791, + // Entry 438C0 - 438FF + 0x0665, 0x0094, 0x005e, 0x07a1, 0x07b4, 0x07ca, 0x07e2, 0x0817, + 0x0872, 0x08b1, 0x08f6, 0x0934, 0x097b, 0x09c0, 0x0a03, 0x0a42, + 0x0a7c, 0x0abf, 0x0b1d, 0x0b84, 0x0bcd, 0x0c1d, 0x0c87, 0x0d00, + 0x0d6b, 0x0dc7, 0x0e17, 0x0e5f, 0x0e9d, 0x0eab, 0x0eca, 0x0f07, + 0x0f32, 0x0f73, 0x0f9a, 0x0fd7, 0x101c, 0x105c, 0x109a, 0x10b6, + 0x10de, 0x1132, 0x1187, 0x11b4, 0x11c1, 0x11db, 0x120b, 0x1257, + 0x127b, 0x12da, 0x132a, 0x136a, 0x13d5, 0x1431, 0x1463, 0x147d, + 0x14a5, 0x14b6, 0x14d2, 0x1506, 0x1520, 0x154c, 0x15ba, 0x160d, + // Entry 43900 - 4393F + 0x1621, 0x1646, 0x169a, 0x16e2, 0x1714, 0x1729, 0x173d, 0x174e, + 0x1767, 0x1786, 0x17b1, 0x17ea, 0x1834, 0x1871, 0x18bd, 0x1914, + 0x1930, 0x1959, 0x1985, 0x19a6, 0x19e8, 0x19f9, 0x1a21, 0x1a55, + 0x1a80, 0x1abb, 0x1acb, 0x1adb, 0x1aec, 0x1b18, 0x1b57, 0x1b87, + 0x1bf7, 0x1c52, 0x1c9e, 0x1cd7, 0x1ce6, 0x1cf3, 0x1d15, 0x1d6c, + 0x1db8, 0x1df5, 0x1e01, 0x1e36, 0x1e99, 0x1ee8, 0x1f2d, 0x1f67, + 0x1f74, 0x1f9c, 0x1fe5, 0x202b, 0x2067, 0x20a1, 0x20f6, 0x2106, + 0x2114, 0x2125, 0x2134, 0x2153, 0x219e, 0x21de, 0x2212, 0x2225, + // Entry 43940 - 4397F + 0x223e, 0x2258, 0x226c, 0x227c, 0x2289, 0x22a5, 0x22d3, 0x22e5, + 0x2301, 0x2335, 0x2356, 0x239b, 0x23b8, 0x2405, 0x2455, 0x248d, + 0x24b1, 0x2505, 0x2544, 0x2552, 0x2569, 0x2590, 0x25e0, 0x0094, + 0x005e, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff, 0x0864, 0x08a3, + 0x08ea, 0x0923, 0x096b, 0x09b0, 0x09f5, 0x0a36, 0x0a6c, 0x0aae, + 0x0afe, 0x0b75, 0x0bbc, 0x0c04, 0x0c61, 0x0ce5, 0x0d50, 0x0db3, + 0x0e09, 0x0e4d, 0xffff, 0xffff, 0x0eba, 0xffff, 0x0f20, 0xffff, + 0x0f8b, 0x0fca, 0x100e, 0x104a, 0xffff, 0xffff, 0x10ce, 0x111b, + // Entry 43980 - 439BF + 0x117b, 0xffff, 0xffff, 0xffff, 0x11f2, 0xffff, 0x1266, 0x12bf, + 0xffff, 0x134f, 0x13ba, 0x1425, 0xffff, 0xffff, 0xffff, 0xffff, + 0x14c5, 0xffff, 0xffff, 0x1531, 0x159f, 0xffff, 0xffff, 0x162f, + 0x1689, 0x16d6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x17a5, 0x17db, 0x1825, 0x1864, 0x189d, 0xffff, 0xffff, 0x194c, + 0xffff, 0x1993, 0xffff, 0xffff, 0x1a10, 0xffff, 0x1a71, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b07, 0xffff, 0x1b65, 0x1bdd, 0x1c40, + 0x1c90, 0xffff, 0xffff, 0xffff, 0x1d00, 0x1d59, 0x1da4, 0xffff, + // Entry 439C0 - 439FF + 0xffff, 0x1e1b, 0x1e86, 0x1edc, 0x1f1d, 0xffff, 0xffff, 0x1f8c, + 0x1fd9, 0x201a, 0xffff, 0x2081, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2143, 0x2190, 0x21d1, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2297, 0xffff, 0xffff, 0x22f4, 0xffff, + 0x2342, 0xffff, 0x23a9, 0x23f3, 0x2446, 0xffff, 0x249e, 0x24f4, + 0xffff, 0xffff, 0xffff, 0x2581, 0x25cb, 0x0094, 0x005e, 0xffff, + 0xffff, 0xffff, 0xffff, 0x083a, 0x088b, 0x08ca, 0x090d, 0x0950, + 0x0996, 0x09db, 0x0a1c, 0x0a56, 0x0a94, 0x0adb, 0x0b44, 0x0b9b, + // Entry 43A00 - 43A3F + 0x0be9, 0x0c3e, 0x0cb5, 0x0d27, 0x0d8e, 0x0de3, 0x0e2d, 0x0e79, + 0xffff, 0xffff, 0x0ee5, 0xffff, 0x0f4f, 0xffff, 0x0fb1, 0x0fef, + 0x1032, 0x1076, 0xffff, 0xffff, 0x10f9, 0x1151, 0x119e, 0xffff, + 0xffff, 0xffff, 0x122c, 0xffff, 0x1298, 0x12fd, 0xffff, 0x138d, + 0x13f8, 0x1445, 0xffff, 0xffff, 0xffff, 0xffff, 0x14e7, 0xffff, + 0xffff, 0x1572, 0x15e0, 0xffff, 0xffff, 0x1668, 0x16b3, 0x16f6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17c5, 0x1804, + 0x184b, 0x1886, 0x18e8, 0xffff, 0xffff, 0x196e, 0xffff, 0x19c3, + // Entry 43A40 - 43A7F + 0xffff, 0xffff, 0x1a3a, 0xffff, 0x1a9a, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1b34, 0xffff, 0x1bb1, 0x1c1c, 0x1c6c, 0x1cb7, 0xffff, + 0xffff, 0xffff, 0x1d32, 0x1d87, 0x1dd7, 0xffff, 0xffff, 0x1e59, + 0x1eb7, 0x1eff, 0x1f45, 0xffff, 0xffff, 0x1fb7, 0x1ffc, 0x2044, + 0xffff, 0x20cc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x216e, + 0x21b7, 0x21f3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x22bb, 0xffff, 0xffff, 0x2316, 0xffff, 0x2375, 0xffff, + 0x23d2, 0x2422, 0x246c, 0xffff, 0x24cf, 0x2521, 0xffff, 0xffff, + // Entry 43A80 - 43ABF + 0xffff, 0x25aa, 0x2600, 0x0002, 0x0003, 0x0014, 0x0007, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, + 0x0055, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x005a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x005f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 43AC0 - 43AFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0064, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0069, + 0x0001, 0x0057, 0x0001, 0x005f, 0x0000, 0x0001, 0x005c, 0x0001, + 0x0016, 0x020c, 0x0001, 0x0061, 0x0001, 0x005f, 0x0007, 0x0001, + 0x0066, 0x0001, 0x005f, 0x0014, 0x0001, 0x006b, 0x0001, 0x0016, + 0x022e, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000b, 0x0025, 0x0008, 0x0000, 0x0000, 0x0000, + // Entry 43B00 - 43B3F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, + 0x0019, 0x001f, 0x0001, 0x005f, 0x0021, 0x0001, 0x005f, 0x0021, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0000, + 0x0000, 0x0000, 0x002e, 0x0000, 0x0000, 0x0000, 0x004a, 0x0002, + 0x0031, 0x003e, 0x0003, 0x0000, 0x0000, 0x0035, 0x0002, 0x0038, + 0x003b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, + 0x0000, 0x0041, 0x0002, 0x0044, 0x0047, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0004, 0x0058, 0x0052, 0x004f, 0x0055, + // Entry 43B40 - 43B7F + 0x0001, 0x005f, 0x0021, 0x0001, 0x005f, 0x0021, 0x0001, 0x0005, + 0x0846, 0x0001, 0x0005, 0x0846, 0x0003, 0x0004, 0x031b, 0x072d, + 0x0008, 0x0000, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, 0x008a, + 0x00b5, 0x0006, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0079, + 0x0002, 0x0017, 0x0048, 0x0003, 0x001b, 0x002a, 0x0039, 0x000d, + 0x005f, 0xffff, 0x002f, 0x0037, 0x003f, 0x0047, 0x004f, 0x0057, + 0x005f, 0x0067, 0x006f, 0x0077, 0x0080, 0x0089, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + // Entry 43B80 - 43BBF + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x005f, 0xffff, + 0x0092, 0x00a3, 0x00b4, 0x00c5, 0x00d6, 0x00e7, 0x00f8, 0x0109, + 0x011a, 0x012b, 0x013d, 0x014f, 0x0003, 0x004c, 0x005b, 0x006a, + 0x000d, 0x005f, 0xffff, 0x002f, 0x0037, 0x003f, 0x0047, 0x004f, + 0x0057, 0x005f, 0x0067, 0x006f, 0x0077, 0x0080, 0x0089, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x005f, + 0xffff, 0x0092, 0x00a3, 0x00b4, 0x00c5, 0x00d6, 0x00e7, 0x00f8, + // Entry 43BC0 - 43BFF + 0x0109, 0x011a, 0x012b, 0x013d, 0x014f, 0x0004, 0x0087, 0x0081, + 0x007e, 0x0084, 0x0001, 0x0043, 0x03ee, 0x0001, 0x005f, 0x0161, + 0x0001, 0x005f, 0x016b, 0x0001, 0x0005, 0x04ec, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0093, 0x0000, 0x00a4, 0x0004, + 0x00a1, 0x009b, 0x0098, 0x009e, 0x0001, 0x0005, 0x018e, 0x0001, + 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, 0x236f, + 0x0004, 0x00b2, 0x00ac, 0x00a9, 0x00af, 0x0001, 0x005f, 0x0174, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + // Entry 43C00 - 43C3F + 0x0846, 0x0008, 0x00be, 0x0123, 0x017a, 0x01af, 0x02ce, 0x02e8, + 0x02f9, 0x030a, 0x0002, 0x00c1, 0x00f2, 0x0003, 0x00c5, 0x00d4, + 0x00e3, 0x000d, 0x005f, 0xffff, 0x018c, 0x0194, 0x01a2, 0x01b0, + 0x01bb, 0x01c2, 0x01cf, 0x01dc, 0x01e4, 0x01f2, 0x01fd, 0x0205, + 0x000d, 0x005f, 0xffff, 0x0210, 0x0214, 0x021b, 0x0222, 0x01bb, + 0x0226, 0x0226, 0x022d, 0x0231, 0x0238, 0x023c, 0x0240, 0x000d, + 0x005f, 0xffff, 0x0247, 0x0257, 0x0270, 0x0283, 0x01bb, 0x01c2, + 0x01cf, 0x0296, 0x02a9, 0x02c8, 0x02e1, 0x02f7, 0x0003, 0x00f6, + // Entry 43C40 - 43C7F + 0x0105, 0x0114, 0x000d, 0x005f, 0xffff, 0x018c, 0x0194, 0x01a2, + 0x01b0, 0x01bb, 0x01c2, 0x01cf, 0x01dc, 0x01e4, 0x01f2, 0x01fd, + 0x0205, 0x000d, 0x005f, 0xffff, 0x0210, 0x0214, 0x021b, 0x0222, + 0x01bb, 0x0226, 0x0226, 0x022d, 0x0231, 0x0238, 0x023c, 0x0240, + 0x000d, 0x005f, 0xffff, 0x0247, 0x0257, 0x0270, 0x0283, 0x01bb, + 0x01c2, 0x01cf, 0x0296, 0x02a9, 0x02c8, 0x02e1, 0x02f7, 0x0002, + 0x0126, 0x0150, 0x0005, 0x012c, 0x0135, 0x0147, 0x0000, 0x013e, + 0x0007, 0x005f, 0x0310, 0x031e, 0x032c, 0x033a, 0x0345, 0x0353, + // Entry 43C80 - 43CBF + 0x0361, 0x0007, 0x005f, 0x036b, 0x0372, 0x0231, 0x0379, 0x0380, + 0x0387, 0x038e, 0x0007, 0x005f, 0x036b, 0x0372, 0x0231, 0x0379, + 0x0380, 0x0387, 0x038e, 0x0007, 0x005f, 0x0392, 0x03a5, 0x03bb, + 0x03d4, 0x03e4, 0x03fa, 0x0361, 0x0005, 0x0156, 0x015f, 0x0171, + 0x0000, 0x0168, 0x0007, 0x005f, 0x0310, 0x031e, 0x032c, 0x033a, + 0x0345, 0x0353, 0x0361, 0x0007, 0x005f, 0x036b, 0x0372, 0x0231, + 0x0379, 0x0380, 0x0387, 0x038e, 0x0007, 0x005f, 0x036b, 0x0372, + 0x0231, 0x0379, 0x0380, 0x0387, 0x038e, 0x0007, 0x005f, 0x0392, + // Entry 43CC0 - 43CFF + 0x03a5, 0x03bb, 0x03d4, 0x03e4, 0x03fa, 0x0361, 0x0002, 0x017d, + 0x0196, 0x0003, 0x0181, 0x0188, 0x018f, 0x0005, 0x005f, 0xffff, + 0x040d, 0x041c, 0x042b, 0x043a, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x005f, 0xffff, 0x0449, 0x0478, + 0x04aa, 0x04dc, 0x0003, 0x019a, 0x01a1, 0x01a8, 0x0005, 0x005f, + 0xffff, 0x040d, 0x041c, 0x042b, 0x043a, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005f, 0xffff, 0x0449, + 0x0478, 0x04aa, 0x04dc, 0x0002, 0x01b2, 0x0240, 0x0003, 0x01b6, + // Entry 43D00 - 43D3F + 0x01e4, 0x0212, 0x000c, 0x01c6, 0x01cc, 0x01c3, 0x01cf, 0x01d5, + 0x01db, 0x01e1, 0x01c9, 0x01d2, 0x01d8, 0x0000, 0x01de, 0x0001, + 0x005f, 0x050e, 0x0001, 0x005f, 0x0527, 0x0001, 0x005f, 0x0540, + 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x056f, 0x0001, 0x005f, + 0x0585, 0x0001, 0x005f, 0x0592, 0x0001, 0x005f, 0x0556, 0x0001, + 0x005f, 0x05a5, 0x0001, 0x005f, 0x05b2, 0x0001, 0x005f, 0x05cf, + 0x000c, 0x01f4, 0x01fa, 0x01f1, 0x01fd, 0x0203, 0x0209, 0x020f, + 0x01f7, 0x0200, 0x0206, 0x0000, 0x020c, 0x0001, 0x005f, 0x05dc, + // Entry 43D40 - 43D7F + 0x0001, 0x005f, 0x05e7, 0x0001, 0x005f, 0x05f2, 0x0001, 0x005f, + 0x05fd, 0x0001, 0x005f, 0x0608, 0x0001, 0x005f, 0x0613, 0x0001, + 0x005f, 0x061b, 0x0001, 0x005f, 0x0626, 0x0001, 0x005f, 0x0634, + 0x0001, 0x005f, 0x063c, 0x0001, 0x005f, 0x0654, 0x000c, 0x0222, + 0x0228, 0x021f, 0x022b, 0x0231, 0x0237, 0x023d, 0x0225, 0x022e, + 0x0234, 0x0000, 0x023a, 0x0001, 0x005f, 0x050e, 0x0001, 0x005f, + 0x0527, 0x0001, 0x005f, 0x0540, 0x0001, 0x005f, 0x0556, 0x0001, + 0x005f, 0x056f, 0x0001, 0x005f, 0x0585, 0x0001, 0x005f, 0x0592, + // Entry 43D80 - 43DBF + 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x05a5, 0x0001, 0x005f, + 0x05b2, 0x0001, 0x005f, 0x05cf, 0x0003, 0x0244, 0x0272, 0x02a0, + 0x000c, 0x0254, 0x025a, 0x0251, 0x025d, 0x0263, 0x0269, 0x026f, + 0x0257, 0x0260, 0x0266, 0x0000, 0x026c, 0x0001, 0x005f, 0x050e, + 0x0001, 0x005f, 0x0527, 0x0001, 0x005f, 0x0540, 0x0001, 0x005f, + 0x0556, 0x0001, 0x005f, 0x056f, 0x0001, 0x005f, 0x0585, 0x0001, + 0x005f, 0x0592, 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x05a5, + 0x0001, 0x005f, 0x05b2, 0x0001, 0x005f, 0x05cf, 0x000c, 0x0282, + // Entry 43DC0 - 43DFF + 0x0288, 0x027f, 0x028b, 0x0291, 0x0297, 0x029d, 0x0285, 0x028e, + 0x0294, 0x0000, 0x029a, 0x0001, 0x005f, 0x05dc, 0x0001, 0x005f, + 0x05e7, 0x0001, 0x005f, 0x05f2, 0x0001, 0x005f, 0x05fd, 0x0001, + 0x005f, 0x0608, 0x0001, 0x005f, 0x0613, 0x0001, 0x005f, 0x061b, + 0x0001, 0x005f, 0x0626, 0x0001, 0x005f, 0x0634, 0x0001, 0x005f, + 0x063c, 0x0001, 0x005f, 0x065c, 0x000c, 0x02b0, 0x02b6, 0x02ad, + 0x02b9, 0x02bf, 0x02c5, 0x02cb, 0x02b3, 0x02bc, 0x02c2, 0x0000, + 0x02c8, 0x0001, 0x005f, 0x050e, 0x0001, 0x005f, 0x0527, 0x0001, + // Entry 43E00 - 43E3F + 0x005f, 0x0540, 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x056f, + 0x0001, 0x005f, 0x0585, 0x0001, 0x005f, 0x0592, 0x0001, 0x005f, + 0x0556, 0x0001, 0x005f, 0x05a5, 0x0001, 0x005f, 0x05b2, 0x0001, + 0x005f, 0x05cf, 0x0003, 0x02dd, 0x0000, 0x02d2, 0x0002, 0x02d5, + 0x02d9, 0x0002, 0x005f, 0x0661, 0x06ab, 0x0002, 0x005f, 0x0699, + 0x06ce, 0x0002, 0x02e0, 0x02e4, 0x0002, 0x005f, 0x06d9, 0x06e8, + 0x0002, 0x005f, 0x0699, 0x06ce, 0x0004, 0x02f6, 0x02f0, 0x02ed, + 0x02f3, 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, + // Entry 43E40 - 43E7F + 0x0002, 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x0307, 0x0301, + 0x02fe, 0x0304, 0x0001, 0x005f, 0x06f7, 0x0001, 0x005f, 0x0706, + 0x0001, 0x003b, 0x0587, 0x0001, 0x003b, 0x0591, 0x0004, 0x0318, + 0x0312, 0x030f, 0x0315, 0x0001, 0x005f, 0x0712, 0x0001, 0x005f, + 0x0712, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, + 0x035c, 0x0000, 0x0000, 0x0361, 0x0378, 0x038f, 0x03a6, 0x03bd, + 0x03d4, 0x03eb, 0x0402, 0x0419, 0x0430, 0x044b, 0x0466, 0x0000, + 0x0000, 0x0000, 0x0481, 0x049a, 0x04b3, 0x0000, 0x0000, 0x0000, + // Entry 43E80 - 43EBF + 0x04cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04d1, 0x04e5, + 0x04f9, 0x050d, 0x0521, 0x0535, 0x0549, 0x055d, 0x0571, 0x0585, + 0x0599, 0x05ad, 0x05c1, 0x05d5, 0x05e9, 0x05fd, 0x0611, 0x0625, + 0x0639, 0x064d, 0x0661, 0x0000, 0x0675, 0x0000, 0x067a, 0x0690, + 0x06a2, 0x06b4, 0x06ca, 0x06dc, 0x06ee, 0x0704, 0x0716, 0x0728, + 0x0001, 0x035e, 0x0001, 0x005f, 0x0730, 0x0003, 0x0365, 0x0368, + 0x036d, 0x0001, 0x005f, 0x0740, 0x0003, 0x005f, 0x0750, 0x0770, + 0x078d, 0x0002, 0x0370, 0x0374, 0x0002, 0x005f, 0x07ca, 0x07b0, + // Entry 43EC0 - 43EFF + 0x0002, 0x005f, 0x081a, 0x07ed, 0x0003, 0x037c, 0x037f, 0x0384, + 0x0001, 0x005f, 0x0740, 0x0003, 0x005f, 0x0750, 0x0770, 0x078d, + 0x0002, 0x0387, 0x038b, 0x0002, 0x005f, 0x07ca, 0x07b0, 0x0002, + 0x005f, 0x081a, 0x07ed, 0x0003, 0x0393, 0x0396, 0x039b, 0x0001, + 0x005f, 0x0850, 0x0003, 0x005f, 0x0750, 0x0770, 0x078d, 0x0002, + 0x039e, 0x03a2, 0x0002, 0x005f, 0x0855, 0x0855, 0x0002, 0x005f, + 0x085e, 0x085e, 0x0003, 0x03aa, 0x03ad, 0x03b2, 0x0001, 0x005f, + 0x0874, 0x0003, 0x005f, 0x088d, 0x08b6, 0x08dc, 0x0002, 0x03b5, + // Entry 43F00 - 43F3F + 0x03b9, 0x0002, 0x005f, 0x092c, 0x0908, 0x0002, 0x005f, 0x098e, + 0x0958, 0x0003, 0x03c1, 0x03c4, 0x03c9, 0x0001, 0x005f, 0x09cd, + 0x0003, 0x005f, 0x09db, 0x08b6, 0x08dc, 0x0002, 0x03cc, 0x03d0, + 0x0002, 0x005f, 0x0a04, 0x0a04, 0x0002, 0x005f, 0x0a16, 0x0a16, + 0x0003, 0x03d8, 0x03db, 0x03e0, 0x0001, 0x005f, 0x0613, 0x0003, + 0x005f, 0x09db, 0x08b6, 0x08dc, 0x0002, 0x03e3, 0x03e7, 0x0002, + 0x005f, 0x0a35, 0x0a35, 0x0002, 0x005f, 0x0a41, 0x0a41, 0x0003, + 0x03ef, 0x03f2, 0x03f7, 0x0001, 0x005f, 0x0a5a, 0x0003, 0x005f, + // Entry 43F40 - 43F7F + 0x0a6a, 0x0a8a, 0x0aa7, 0x0002, 0x03fa, 0x03fe, 0x0002, 0x005f, + 0x0aea, 0x0aca, 0x0002, 0x005f, 0x0b40, 0x0b0d, 0x0003, 0x0406, + 0x0409, 0x040e, 0x0001, 0x005f, 0x0b76, 0x0003, 0x005f, 0x0a6a, + 0x0a8a, 0x0aa7, 0x0002, 0x0411, 0x0415, 0x0002, 0x005f, 0x0b81, + 0x0b81, 0x0002, 0x005f, 0x0b90, 0x0b90, 0x0003, 0x041d, 0x0420, + 0x0425, 0x0001, 0x005f, 0x0634, 0x0003, 0x005f, 0x0a6a, 0x0a8a, + 0x0aa7, 0x0002, 0x0428, 0x042c, 0x0002, 0x005f, 0x0bac, 0x0bac, + 0x0002, 0x005f, 0x0bb8, 0x0bb8, 0x0004, 0x0435, 0x0438, 0x043d, + // Entry 43F80 - 43FBF + 0x0448, 0x0001, 0x005f, 0x0bd1, 0x0003, 0x005f, 0x0be1, 0x0c01, + 0x0c1e, 0x0002, 0x0440, 0x0444, 0x0002, 0x005f, 0x0c61, 0x0c41, + 0x0002, 0x005f, 0x0cbd, 0x0c84, 0x0001, 0x005f, 0x0cf3, 0x0004, + 0x0450, 0x0453, 0x0458, 0x0463, 0x0001, 0x005f, 0x0bd1, 0x0003, + 0x005f, 0x0be1, 0x0c01, 0x0c1e, 0x0002, 0x045b, 0x045f, 0x0002, + 0x005f, 0x0d12, 0x0d12, 0x0002, 0x005f, 0x0d21, 0x0d21, 0x0001, + 0x005f, 0x0cf3, 0x0004, 0x046b, 0x046e, 0x0473, 0x047e, 0x0001, + 0x005f, 0x0d3d, 0x0003, 0x005f, 0x0be1, 0x0c01, 0x0c1e, 0x0002, + // Entry 43FC0 - 43FFF + 0x0476, 0x047a, 0x0002, 0x005f, 0x0d45, 0x0d45, 0x0002, 0x005f, + 0x0d51, 0x0d51, 0x0001, 0x005f, 0x0cf3, 0x0003, 0x0485, 0x0488, + 0x048f, 0x0001, 0x005f, 0x0d6a, 0x0005, 0x005f, 0x0da7, 0x0dba, + 0x0dca, 0x0d77, 0x0dd7, 0x0002, 0x0492, 0x0496, 0x0002, 0x005f, + 0x0e11, 0x0dfa, 0x0002, 0x005f, 0x0e5b, 0x0e31, 0x0003, 0x049e, + 0x04a1, 0x04a8, 0x0001, 0x005f, 0x0d6a, 0x0005, 0x005f, 0x0da7, + 0x0dba, 0x0dca, 0x0d77, 0x0dd7, 0x0002, 0x04ab, 0x04af, 0x0002, + 0x005f, 0x0e11, 0x0dfa, 0x0002, 0x005f, 0x0e5b, 0x0e31, 0x0003, + // Entry 44000 - 4403F + 0x04b7, 0x04ba, 0x04c1, 0x0001, 0x005f, 0x0e8e, 0x0005, 0x005f, + 0x0da7, 0x0dba, 0x0dca, 0x0d77, 0x0dd7, 0x0002, 0x04c4, 0x04c8, + 0x0002, 0x005f, 0x0e96, 0x0e96, 0x0002, 0x005f, 0x0ea2, 0x0ea2, + 0x0001, 0x04ce, 0x0001, 0x005f, 0x0ebb, 0x0003, 0x0000, 0x04d5, + 0x04da, 0x0003, 0x005f, 0x0ee4, 0x0f07, 0x0f27, 0x0002, 0x04dd, + 0x04e1, 0x0002, 0x005f, 0x0f6a, 0x0f4d, 0x0002, 0x005f, 0x0fc6, + 0x0f90, 0x0003, 0x0000, 0x04e9, 0x04ee, 0x0003, 0x005f, 0x1005, + 0x1023, 0x103e, 0x0002, 0x04f1, 0x04f5, 0x0002, 0x005f, 0x105f, + // Entry 44040 - 4407F + 0x105f, 0x0002, 0x005f, 0x1071, 0x1071, 0x0003, 0x0000, 0x04fd, + 0x0502, 0x0003, 0x005f, 0x1090, 0x10a8, 0x10bd, 0x0002, 0x0505, + 0x0509, 0x0002, 0x005f, 0x10d8, 0x10d8, 0x0002, 0x005f, 0x10e4, + 0x10e4, 0x0003, 0x0000, 0x0511, 0x0516, 0x0003, 0x005f, 0x10fd, + 0x1123, 0x1146, 0x0002, 0x0519, 0x051d, 0x0002, 0x005f, 0x118f, + 0x116f, 0x0002, 0x005f, 0x11eb, 0x11b8, 0x0003, 0x0000, 0x0525, + 0x052a, 0x0003, 0x005f, 0x1227, 0x1245, 0x1260, 0x0002, 0x052d, + 0x0531, 0x0002, 0x005f, 0x1281, 0x1281, 0x0002, 0x005f, 0x1293, + // Entry 44080 - 440BF + 0x1293, 0x0003, 0x0000, 0x0539, 0x053e, 0x0003, 0x005f, 0x1227, + 0x1245, 0x1260, 0x0002, 0x0541, 0x0545, 0x0002, 0x005f, 0x1281, + 0x1281, 0x0002, 0x005f, 0x1293, 0x1293, 0x0003, 0x0000, 0x054d, + 0x0552, 0x0003, 0x005f, 0x12b2, 0x12db, 0x1301, 0x0002, 0x0555, + 0x0559, 0x0002, 0x005f, 0x1350, 0x132d, 0x0002, 0x005f, 0x13ac, + 0x137c, 0x0003, 0x0000, 0x0561, 0x0566, 0x0003, 0x005f, 0x13e5, + 0x1403, 0x141e, 0x0002, 0x0569, 0x056d, 0x0002, 0x005f, 0x143f, + 0x143f, 0x0002, 0x005f, 0x1451, 0x1451, 0x0003, 0x0000, 0x0575, + // Entry 440C0 - 440FF + 0x057a, 0x0003, 0x005f, 0x13e5, 0x1403, 0x141e, 0x0002, 0x057d, + 0x0581, 0x0002, 0x005f, 0x1350, 0x143f, 0x0002, 0x005f, 0x1490, + 0x1451, 0x0003, 0x0000, 0x0589, 0x058e, 0x0003, 0x005f, 0x14b5, + 0x14d5, 0x14f2, 0x0002, 0x0591, 0x0595, 0x0002, 0x005f, 0x152f, + 0x1515, 0x0002, 0x005f, 0x157f, 0x1552, 0x0003, 0x0000, 0x059d, + 0x05a2, 0x0003, 0x005f, 0x15b5, 0x15d0, 0x15e8, 0x0002, 0x05a5, + 0x05a9, 0x0002, 0x005f, 0x1606, 0x1606, 0x0002, 0x005f, 0x157f, + 0x157f, 0x0003, 0x0000, 0x05b1, 0x05b6, 0x0003, 0x005f, 0x15b5, + // Entry 44100 - 4413F + 0x15d0, 0x15e8, 0x0002, 0x05b9, 0x05bd, 0x0002, 0x005f, 0x1606, + 0x1606, 0x0002, 0x005f, 0x1615, 0x1615, 0x0003, 0x0000, 0x05c5, + 0x05ca, 0x0003, 0x005f, 0x1631, 0x1657, 0x167a, 0x0002, 0x05cd, + 0x05d1, 0x0002, 0x005f, 0x16c3, 0x16a3, 0x0002, 0x005f, 0x171f, + 0x16ec, 0x0003, 0x0000, 0x05d9, 0x05de, 0x0003, 0x005f, 0x175b, + 0x1779, 0x1794, 0x0002, 0x05e1, 0x05e5, 0x0002, 0x005f, 0x17b5, + 0x17b5, 0x0002, 0x005f, 0x17c7, 0x17c7, 0x0003, 0x0000, 0x05ed, + 0x05f2, 0x0003, 0x005f, 0x175b, 0x1779, 0x1794, 0x0002, 0x05f5, + // Entry 44140 - 4417F + 0x05f9, 0x0002, 0x005f, 0x17b5, 0x17b5, 0x0002, 0x005f, 0x17c7, + 0x17c7, 0x0003, 0x0000, 0x0601, 0x0606, 0x0003, 0x005f, 0x17e6, + 0x1809, 0x1829, 0x0002, 0x0609, 0x060d, 0x0002, 0x005f, 0x1872, + 0x184f, 0x0002, 0x005f, 0x18c8, 0x1898, 0x0003, 0x0000, 0x0615, + 0x061a, 0x0003, 0x005f, 0x1901, 0x191f, 0x193a, 0x0002, 0x061d, + 0x0621, 0x0002, 0x005f, 0x195b, 0x195b, 0x0002, 0x005f, 0x196d, + 0x196d, 0x0003, 0x0000, 0x0629, 0x062e, 0x0003, 0x005f, 0x1901, + 0x191f, 0x193a, 0x0002, 0x0631, 0x0635, 0x0002, 0x005f, 0x195b, + // Entry 44180 - 441BF + 0x195b, 0x0002, 0x005f, 0x196d, 0x196d, 0x0003, 0x0000, 0x063d, + 0x0642, 0x0003, 0x005f, 0x198c, 0x19a6, 0x19bd, 0x0002, 0x0645, + 0x0649, 0x0002, 0x005f, 0x19f4, 0x19da, 0x0002, 0x005f, 0x1a38, + 0x1a11, 0x0003, 0x0000, 0x0651, 0x0656, 0x0003, 0x005f, 0x198c, + 0x19a6, 0x19bd, 0x0002, 0x0659, 0x065d, 0x0002, 0x005f, 0x1a68, + 0x1a68, 0x0002, 0x005f, 0x1a77, 0x1a77, 0x0003, 0x0000, 0x0665, + 0x066a, 0x0003, 0x005f, 0x198c, 0x19a6, 0x19bd, 0x0002, 0x066d, + 0x0671, 0x0002, 0x005f, 0x1a68, 0x1a68, 0x0002, 0x005f, 0x1a77, + // Entry 441C0 - 441FF + 0x1a77, 0x0001, 0x0677, 0x0001, 0x005f, 0x1a93, 0x0003, 0x067e, + 0x0681, 0x0685, 0x0001, 0x005f, 0x1ac5, 0x0002, 0x005f, 0xffff, + 0x1acf, 0x0002, 0x0688, 0x068c, 0x0002, 0x005f, 0x1b0b, 0x1b0b, + 0x0002, 0x005f, 0x1b34, 0x1b34, 0x0003, 0x0694, 0x0000, 0x0697, + 0x0001, 0x005f, 0x1b5e, 0x0002, 0x069a, 0x069e, 0x0002, 0x005f, + 0x1b69, 0x1b69, 0x0002, 0x005f, 0x1b78, 0x1b78, 0x0003, 0x06a6, + 0x0000, 0x06a9, 0x0001, 0x005f, 0x1b94, 0x0002, 0x06ac, 0x06b0, + 0x0002, 0x005f, 0x1b99, 0x1b99, 0x0002, 0x005f, 0x1ba2, 0x1ba2, + // Entry 44200 - 4423F + 0x0003, 0x06b8, 0x06bb, 0x06bf, 0x0001, 0x005f, 0x1bb8, 0x0002, + 0x005f, 0xffff, 0x1bce, 0x0002, 0x06c2, 0x06c6, 0x0002, 0x005f, + 0x1c2d, 0x1c07, 0x0002, 0x005f, 0x1c8f, 0x1c56, 0x0003, 0x06ce, + 0x0000, 0x06d1, 0x0001, 0x005f, 0x1ccb, 0x0002, 0x06d4, 0x06d8, + 0x0002, 0x005f, 0x1cd9, 0x1cd9, 0x0002, 0x005f, 0x1ceb, 0x1ceb, + 0x0003, 0x06e0, 0x0000, 0x06e3, 0x0001, 0x005f, 0x1ccb, 0x0002, + 0x06e6, 0x06ea, 0x0002, 0x005f, 0x1d0a, 0x1d0a, 0x0002, 0x005f, + 0x1d16, 0x1d16, 0x0003, 0x06f2, 0x06f5, 0x06f9, 0x0001, 0x005f, + // Entry 44240 - 4427F + 0x1d2f, 0x0002, 0x005f, 0xffff, 0x1d42, 0x0002, 0x06fc, 0x0700, + 0x0002, 0x005f, 0x1d7b, 0x1d58, 0x0002, 0x005f, 0x1dd1, 0x1da1, + 0x0003, 0x0708, 0x0000, 0x070b, 0x0001, 0x005f, 0x1e0a, 0x0002, + 0x070e, 0x0712, 0x0002, 0x005f, 0x1e18, 0x1e18, 0x0002, 0x005f, + 0x1e2a, 0x1e2a, 0x0003, 0x071a, 0x0000, 0x071d, 0x0001, 0x005f, + 0x1e49, 0x0002, 0x0720, 0x0724, 0x0002, 0x005f, 0x1e51, 0x1e51, + 0x0002, 0x005f, 0x1e5d, 0x1e5d, 0x0001, 0x072a, 0x0001, 0x005f, + 0x1e76, 0x0004, 0x0732, 0x0737, 0x073c, 0x0747, 0x0003, 0x0000, + // Entry 44280 - 442BF + 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x005f, 0x1e96, 0x1eaa, 0x1ed1, + 0x0002, 0x0000, 0x073f, 0x0002, 0x0000, 0x0742, 0x0003, 0x005f, + 0xffff, 0x1efb, 0x1f37, 0x0002, 0x092e, 0x074a, 0x0003, 0x074e, + 0x088e, 0x07ee, 0x009e, 0x005f, 0xffff, 0xffff, 0xffff, 0xffff, + 0x20f5, 0x21de, 0x22ff, 0x2394, 0x2426, 0x24e5, 0x2592, 0x262d, + 0x26b6, 0x2839, 0x28cb, 0x2984, 0x2a9a, 0x2b38, 0x2bf7, 0x2cf2, + 0x2e50, 0x2f78, 0x3097, 0x3147, 0x31d6, 0xffff, 0xffff, 0x32b7, + 0xffff, 0x33a9, 0xffff, 0x3495, 0x3530, 0x35aa, 0x3621, 0xffff, + // Entry 442C0 - 442FF + 0xffff, 0x3752, 0x37f9, 0x38bf, 0xffff, 0xffff, 0xffff, 0x39f9, + 0xffff, 0x3ad5, 0x3bac, 0xffff, 0x3cf9, 0x3df4, 0x3eef, 0xffff, + 0xffff, 0xffff, 0xffff, 0x4069, 0xffff, 0xffff, 0x418b, 0x428f, + 0xffff, 0xffff, 0x4407, 0x44db, 0x4579, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x4790, 0x4819, 0x48d2, 0x496d, 0x4a08, + 0xffff, 0xffff, 0x4bc6, 0xffff, 0x4c72, 0xffff, 0xffff, 0x4dd7, + 0xffff, 0x4f52, 0xffff, 0xffff, 0xffff, 0xffff, 0x509e, 0xffff, + 0x5165, 0x5254, 0x5343, 0x53ed, 0xffff, 0xffff, 0xffff, 0x54e5, + // Entry 44300 - 4433F + 0x55b3, 0x567b, 0xffff, 0xffff, 0x57cf, 0x5925, 0x59f9, 0x5a8e, + 0xffff, 0xffff, 0x5b9e, 0x5c33, 0x5cad, 0xffff, 0x5d9f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x605f, 0x60eb, 0x6156, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6331, 0xffff, + 0xffff, 0x6424, 0xffff, 0x64cd, 0xffff, 0x65d6, 0x666b, 0x6736, + 0xffff, 0x6806, 0x68da, 0xffff, 0xffff, 0xffff, 0x6a44, 0x6aeb, + 0xffff, 0xffff, 0x1f6d, 0x2279, 0x273f, 0x27b3, 0xffff, 0xffff, + 0x4e90, 0x5f6f, 0x009e, 0x005f, 0x1fe1, 0x201c, 0x205e, 0x20a3, + // Entry 44340 - 4437F + 0x2137, 0x2204, 0x2325, 0x23b7, 0x2458, 0x2511, 0x25b8, 0x2650, + 0x26d6, 0x285c, 0x28fd, 0x29d5, 0x2ac3, 0x2b6a, 0x2c39, 0x2d59, + 0x2ea1, 0x2fc6, 0x30c6, 0x316a, 0x31fc, 0x326b, 0x328e, 0x32e6, + 0x3367, 0x33d9, 0x345c, 0x34bb, 0x354d, 0x35c4, 0x3653, 0x36da, + 0x3719, 0x377e, 0x382c, 0x38e2, 0x3951, 0x3974, 0x39c0, 0x3a29, + 0x3aac, 0x3b11, 0x3bf7, 0x3cb0, 0x3d41, 0x3e3c, 0x3f0f, 0x3f72, + 0x3fab, 0x4017, 0x403d, 0x4092, 0x4107, 0x4149, 0x41d6, 0x42d7, + 0x43ab, 0x43e7, 0x4440, 0x4504, 0x459c, 0x4605, 0x463e, 0x4686, + // Entry 44380 - 443BF + 0x46af, 0x46f1, 0x4742, 0x47b0, 0x484b, 0x48f8, 0x4993, 0x4a6b, + 0x4b45, 0x4b87, 0x4be6, 0x4c4f, 0x4cb0, 0x4d4f, 0x4da4, 0x4e07, + 0x4f16, 0x4f72, 0x4fd5, 0x4ff8, 0x502d, 0x5062, 0x50ca, 0x5145, + 0x51a7, 0x5296, 0x5370, 0x5410, 0x5479, 0x54a5, 0x54c5, 0x551e, + 0x55e8, 0x56c2, 0x5779, 0x5796, 0x581b, 0x5960, 0x5a1f, 0x5abd, + 0x5b3e, 0x5b5e, 0x5bc4, 0x5c50, 0x5cdc, 0x5d5d, 0x5dff, 0x5ee8, + 0x5f1d, 0x5f40, 0x6010, 0x603c, 0x6082, 0x6108, 0x6176, 0x61df, + 0x6208, 0x6250, 0x6289, 0x62c5, 0x62ee, 0x6311, 0x6354, 0x63c3, + // Entry 443C0 - 443FF + 0x63f5, 0x6447, 0x64b0, 0x650e, 0x65b3, 0x65fc, 0x66a3, 0x6762, + 0x67dd, 0x6841, 0x690f, 0x699c, 0x69c5, 0x69ef, 0x6a70, 0x6b29, + 0x438a, 0x58dc, 0x1f8d, 0x229f, 0x275f, 0x27d9, 0xffff, 0x4d84, + 0x4eb6, 0x5f9e, 0x009e, 0x005f, 0xffff, 0xffff, 0xffff, 0xffff, + 0x218f, 0x2240, 0x2361, 0x23f0, 0x24a0, 0x2553, 0x25f4, 0x2680, + 0x270c, 0x2895, 0x2945, 0x2a3c, 0x2b02, 0x2bb2, 0x2c97, 0x2dd6, + 0x2f0e, 0x3030, 0x310b, 0x31a3, 0x3238, 0xffff, 0xffff, 0x332b, + 0xffff, 0x341f, 0xffff, 0x34f7, 0x3580, 0x35f4, 0x369b, 0xffff, + // Entry 44400 - 4443F + 0xffff, 0x37c0, 0x3875, 0x391b, 0xffff, 0xffff, 0xffff, 0x3a6f, + 0xffff, 0x3b63, 0x3c58, 0xffff, 0x3d9f, 0x3e9a, 0x3f45, 0xffff, + 0xffff, 0xffff, 0xffff, 0x40d1, 0xffff, 0xffff, 0x4237, 0x4335, + 0xffff, 0xffff, 0x448f, 0x4543, 0x45d5, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x47e6, 0x4893, 0x4934, 0x49cf, 0x4ad5, + 0xffff, 0xffff, 0x4c1c, 0xffff, 0x4d04, 0xffff, 0xffff, 0x4e4d, + 0xffff, 0x4fa8, 0xffff, 0xffff, 0xffff, 0xffff, 0x510c, 0xffff, + 0x51ff, 0x52ee, 0x53b3, 0x5449, 0xffff, 0xffff, 0xffff, 0x556d, + // Entry 44440 - 4447F + 0x5633, 0x571f, 0xffff, 0xffff, 0x5880, 0x59b1, 0x5a5b, 0x5b02, + 0xffff, 0xffff, 0x5c00, 0x5c83, 0x5d21, 0xffff, 0x5e75, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x60bb, 0x612c, 0x61ac, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x638d, 0xffff, + 0xffff, 0x6480, 0xffff, 0x6565, 0xffff, 0x6638, 0x66f1, 0x67a4, + 0xffff, 0x6892, 0x695a, 0xffff, 0xffff, 0xffff, 0x6ab2, 0x6b7d, + 0xffff, 0xffff, 0x1fb4, 0x22cc, 0x2786, 0x2806, 0xffff, 0xffff, + 0x4ee3, 0x5fd4, 0x0003, 0x0000, 0x0000, 0x0932, 0x0042, 0x000b, + // Entry 44480 - 444BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 444C0 - 444FF + 0xffff, 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, + 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0000, + 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, + 0x000b, 0x0003, 0x0000, 0x0000, 0x000f, 0x007d, 0x001e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 44500 - 4453F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x202e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 44540 - 4457F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2038, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x203c, 0x0003, 0x0000, 0x0000, 0x0004, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, + // Entry 44580 - 445BF + 0x0000, 0x0000, 0x000f, 0x007d, 0x001e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 445C0 - 445FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2038, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 44600 - 4463F + 0xffff, 0x203c, 0x0003, 0x0004, 0x0274, 0x0672, 0x000b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, 0x0000, + 0x023b, 0x025d, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, 0x0024, + 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, + 0x1f98, 0x0001, 0x001e, 0x01bc, 0x0004, 0x0038, 0x0032, 0x002f, + 0x0035, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, 0x00a9, + // Entry 44640 - 4467F + 0x0100, 0x0135, 0x01ee, 0x0208, 0x0219, 0x022a, 0x0002, 0x0047, + 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0060, 0xffff, + 0x0000, 0x0007, 0x0017, 0x002a, 0x003a, 0x0041, 0x004e, 0x005b, + 0x0062, 0x0078, 0x0088, 0x0092, 0x000d, 0x0060, 0xffff, 0x00a2, + 0x00a6, 0x00ad, 0x00b4, 0x003a, 0x00b8, 0x00bf, 0x00c6, 0x00ca, + 0x00d1, 0x00d5, 0x00d9, 0x000d, 0x0060, 0xffff, 0x00e0, 0x00f0, + 0x0017, 0x0109, 0x003a, 0x0041, 0x004e, 0x011f, 0x0132, 0x0151, + 0x016a, 0x017d, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, 0x0060, + // Entry 44680 - 446BF + 0xffff, 0x0000, 0x0007, 0x0017, 0x002a, 0x003a, 0x0041, 0x004e, + 0x011f, 0x0062, 0x0078, 0x0088, 0x0092, 0x000d, 0x0060, 0xffff, + 0x00a2, 0x00a6, 0x00ad, 0x00b4, 0x003a, 0x00b8, 0x00bf, 0x00c6, + 0x00ca, 0x00d1, 0x00d5, 0x00d9, 0x000d, 0x0060, 0xffff, 0x00e0, + 0x00f0, 0x0017, 0x0109, 0x003a, 0x0041, 0x004e, 0x011f, 0x0132, + 0x0151, 0x016a, 0x017d, 0x0002, 0x00ac, 0x00d6, 0x0005, 0x00b2, + 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0060, 0x0196, 0x01a0, + 0x01aa, 0x01b7, 0x01c1, 0x01ce, 0x01de, 0x0007, 0x0060, 0x00c6, + // Entry 446C0 - 446FF + 0x01e8, 0x01ef, 0x01f3, 0x01fa, 0x0201, 0x0208, 0x0007, 0x0060, + 0x0196, 0x01a0, 0x020c, 0x01b7, 0x01c1, 0x01ce, 0x01de, 0x0007, + 0x0060, 0x0213, 0x0229, 0x023f, 0x0258, 0x026e, 0x0287, 0x02a3, + 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, 0x0060, + 0x0196, 0x01a0, 0x01aa, 0x01b7, 0x01c1, 0x01ce, 0x01de, 0x0007, + 0x0060, 0x00c6, 0x01e8, 0x01ef, 0x01f3, 0x01fa, 0x0201, 0x0208, + 0x0007, 0x0060, 0x0196, 0x01a0, 0x020c, 0x01b7, 0x01c1, 0x01ce, + 0x01de, 0x0007, 0x0060, 0x0213, 0x0229, 0x023f, 0x0258, 0x026e, + // Entry 44700 - 4473F + 0x0287, 0x02a3, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, 0x010e, + 0x0115, 0x0005, 0x0060, 0xffff, 0x02b9, 0x02c7, 0x02d5, 0x02e3, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0060, 0xffff, 0x02f1, 0x030f, 0x032d, 0x034b, 0x0003, 0x0120, + 0x0127, 0x012e, 0x0005, 0x0060, 0xffff, 0x02b9, 0x02c7, 0x02d5, + 0x02e3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x0060, 0xffff, 0x0369, 0x0398, 0x03c7, 0x03f3, 0x0002, + 0x0138, 0x0193, 0x0003, 0x013c, 0x0159, 0x0176, 0x0007, 0x0147, + // Entry 44740 - 4477F + 0x014a, 0x0144, 0x014d, 0x0150, 0x0153, 0x0156, 0x0001, 0x0060, + 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, + 0x0001, 0x0060, 0x0486, 0x0007, 0x0164, 0x0167, 0x0161, 0x016a, + 0x016d, 0x0170, 0x0173, 0x0001, 0x0060, 0x0425, 0x0001, 0x0060, + 0x0499, 0x0001, 0x0060, 0x049d, 0x0001, 0x0060, 0x0444, 0x0001, + 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, + 0x0007, 0x0181, 0x0184, 0x017e, 0x0187, 0x018a, 0x018d, 0x0190, + // Entry 44780 - 447BF + 0x0001, 0x0060, 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0001, 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, 0x0001, + 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, 0x0003, 0x0197, 0x01b4, + 0x01d1, 0x0007, 0x01a2, 0x01a5, 0x019f, 0x01a8, 0x01ab, 0x01ae, + 0x01b1, 0x0001, 0x0060, 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0001, 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, + 0x0001, 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, 0x0007, 0x01bf, + 0x01c2, 0x01bc, 0x01c5, 0x01c8, 0x01cb, 0x01ce, 0x0001, 0x0060, + // Entry 447C0 - 447FF + 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, + 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, + 0x0001, 0x0060, 0x0486, 0x0007, 0x01dc, 0x01df, 0x01d9, 0x01e2, + 0x01e5, 0x01e8, 0x01eb, 0x0001, 0x0060, 0x0425, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0060, 0x0444, 0x0001, + 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, + 0x0003, 0x01fd, 0x0000, 0x01f2, 0x0002, 0x01f5, 0x01f9, 0x0002, + 0x0060, 0x04a4, 0x0512, 0x0002, 0x0060, 0x04d0, 0x0535, 0x0002, + // Entry 44800 - 4483F + 0x0200, 0x0204, 0x0002, 0x0060, 0x0558, 0x056b, 0x0002, 0x0000, + 0x04f5, 0x04f9, 0x0004, 0x0216, 0x0210, 0x020d, 0x0213, 0x0001, + 0x0060, 0x057b, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, + 0x0001, 0x001e, 0x0206, 0x0004, 0x0227, 0x0221, 0x021e, 0x0224, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0238, 0x0232, 0x022f, + 0x0235, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0241, 0x0000, + // Entry 44840 - 4487F + 0x0000, 0x0000, 0x0256, 0x0001, 0x0243, 0x0003, 0x0000, 0x0000, + 0x0247, 0x000d, 0x0060, 0xffff, 0x058b, 0x059e, 0x05b1, 0x05ca, + 0x05da, 0x05f0, 0x0609, 0x0622, 0x063b, 0x0657, 0x066a, 0x0677, + 0x0001, 0x0258, 0x0001, 0x025a, 0x0001, 0x0060, 0x068d, 0x0001, + 0x025f, 0x0001, 0x0261, 0x0003, 0x0000, 0x0000, 0x0265, 0x000d, + 0x0000, 0xffff, 0x0657, 0x3f6c, 0x40bf, 0x40c8, 0x40d2, 0x40db, + 0x3fb1, 0x0692, 0x3fc1, 0x06a3, 0x06ab, 0x06ba, 0x0040, 0x02b5, + 0x0000, 0x0000, 0x02ba, 0x02d1, 0x02e3, 0x02f5, 0x030c, 0x031e, + // Entry 44880 - 448BF + 0x0330, 0x0347, 0x035e, 0x0375, 0x0390, 0x03ab, 0x0000, 0x0000, + 0x0000, 0x03c6, 0x03df, 0x03f8, 0x0000, 0x0000, 0x0000, 0x0411, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0416, 0x042a, 0x043e, + 0x0452, 0x0466, 0x047a, 0x048e, 0x04a2, 0x04b6, 0x04ca, 0x04de, + 0x04f2, 0x0506, 0x051a, 0x052e, 0x0542, 0x0556, 0x056a, 0x057e, + 0x0592, 0x05a6, 0x0000, 0x05ba, 0x0000, 0x05bf, 0x05d5, 0x05e7, + 0x05f9, 0x060f, 0x0621, 0x0633, 0x0649, 0x065b, 0x066d, 0x0001, + 0x02b7, 0x0001, 0x0060, 0x0694, 0x0003, 0x02be, 0x02c1, 0x02c6, + // Entry 448C0 - 448FF + 0x0001, 0x0060, 0x06af, 0x0003, 0x0060, 0x06c8, 0x06e8, 0x0705, + 0x0002, 0x02c9, 0x02cd, 0x0002, 0x0060, 0x0754, 0x0731, 0x0002, + 0x0060, 0x07ad, 0x077d, 0x0003, 0x02d5, 0x0000, 0x02d8, 0x0001, + 0x0060, 0x07e0, 0x0002, 0x02db, 0x02df, 0x0002, 0x0060, 0x07e8, + 0x07e8, 0x0002, 0x0060, 0x07fa, 0x07fa, 0x0003, 0x02e7, 0x0000, + 0x02ea, 0x0001, 0x0060, 0x07e0, 0x0002, 0x02ed, 0x02f1, 0x0002, + 0x0060, 0x07e8, 0x07e8, 0x0002, 0x0060, 0x07fa, 0x07fa, 0x0003, + 0x02f9, 0x02fc, 0x0301, 0x0001, 0x0060, 0x0819, 0x0003, 0x0060, + // Entry 44900 - 4493F + 0x0838, 0x085e, 0x0881, 0x0002, 0x0304, 0x0308, 0x0002, 0x0060, + 0x08dc, 0x08b3, 0x0002, 0x0060, 0x0941, 0x090b, 0x0003, 0x0310, + 0x0000, 0x0313, 0x0001, 0x0060, 0x097a, 0x0002, 0x0316, 0x031a, + 0x0002, 0x0060, 0x09a6, 0x0988, 0x0002, 0x0060, 0x09ca, 0x09ca, + 0x0003, 0x0322, 0x0000, 0x0325, 0x0001, 0x0060, 0x097a, 0x0002, + 0x0328, 0x032c, 0x0002, 0x0060, 0x09a6, 0x0988, 0x0002, 0x0060, + 0x09ca, 0x09ca, 0x0003, 0x0334, 0x0337, 0x033c, 0x0001, 0x0060, + 0x09f5, 0x0003, 0x0060, 0x09ff, 0x0a10, 0x0a1e, 0x0002, 0x033f, + // Entry 44940 - 4497F + 0x0343, 0x0002, 0x0060, 0x0a4f, 0x0a3b, 0x0002, 0x0060, 0x0a8a, + 0x0a69, 0x0003, 0x034b, 0x034e, 0x0353, 0x0001, 0x0060, 0x09f5, + 0x0003, 0x0060, 0x09ff, 0x0a10, 0x0a1e, 0x0002, 0x0356, 0x035a, + 0x0002, 0x0060, 0x0a4f, 0x0a3b, 0x0002, 0x0060, 0x0a8a, 0x0a69, + 0x0003, 0x0362, 0x0365, 0x036a, 0x0001, 0x0060, 0x0aae, 0x0003, + 0x0060, 0x09ff, 0x0a10, 0x0a1e, 0x0002, 0x036d, 0x0371, 0x0002, + 0x0060, 0x0a4f, 0x0a3b, 0x0002, 0x0060, 0x0a8a, 0x0a69, 0x0004, + 0x037a, 0x037d, 0x0382, 0x038d, 0x0001, 0x0060, 0x0ab5, 0x0003, + // Entry 44980 - 449BF + 0x0060, 0x0ac5, 0x0ad9, 0x0aea, 0x0002, 0x0385, 0x0389, 0x0002, + 0x0060, 0x0b21, 0x0b0a, 0x0002, 0x0060, 0x0b62, 0x0b3e, 0x0001, + 0x0060, 0x0b89, 0x0004, 0x0395, 0x0398, 0x039d, 0x03a8, 0x0001, + 0x0060, 0x0ab5, 0x0003, 0x0060, 0x0ac5, 0x0ad9, 0x0aea, 0x0002, + 0x03a0, 0x03a4, 0x0002, 0x0060, 0x0b21, 0x0b0a, 0x0002, 0x0060, + 0x0b62, 0x0b3e, 0x0001, 0x0060, 0x0b89, 0x0004, 0x03b0, 0x03b3, + 0x03b8, 0x03c3, 0x0001, 0x0060, 0x0b9a, 0x0003, 0x0060, 0x0ac5, + 0x0ad9, 0x0aea, 0x0002, 0x03bb, 0x03bf, 0x0002, 0x0060, 0x0b21, + // Entry 449C0 - 449FF + 0x0b0a, 0x0002, 0x0060, 0x0b62, 0x0b3e, 0x0001, 0x0060, 0x0b89, + 0x0003, 0x03ca, 0x03cd, 0x03d4, 0x0001, 0x0060, 0x0ba1, 0x0005, + 0x0060, 0x0bbe, 0x0bce, 0x0bdf, 0x0bae, 0x0bec, 0x0002, 0x03d7, + 0x03db, 0x0002, 0x0060, 0x0c1c, 0x0c05, 0x0002, 0x0060, 0x0c5d, + 0x0c39, 0x0003, 0x03e3, 0x03e6, 0x03ed, 0x0001, 0x0060, 0x0ba1, + 0x0005, 0x0060, 0x0bbe, 0x0bce, 0x0bdf, 0x0bae, 0x0bec, 0x0002, + 0x03f0, 0x03f4, 0x0002, 0x0060, 0x0c1c, 0x0c05, 0x0002, 0x0060, + 0x0c5d, 0x0c39, 0x0003, 0x03fc, 0x03ff, 0x0406, 0x0001, 0x0060, + // Entry 44A00 - 44A3F + 0x0c84, 0x0005, 0x0060, 0x0bbe, 0x0bce, 0x0bdf, 0x0bae, 0x0bec, + 0x0002, 0x0409, 0x040d, 0x0002, 0x0060, 0x0c1c, 0x0c8b, 0x0002, + 0x0060, 0x0c5d, 0x0c5d, 0x0001, 0x0413, 0x0001, 0x0060, 0x0c9d, + 0x0003, 0x0000, 0x041a, 0x041f, 0x0003, 0x0060, 0x0cbd, 0x0cda, + 0x0cf4, 0x0002, 0x0422, 0x0426, 0x0002, 0x0060, 0x0d3d, 0x0d1d, + 0x0002, 0x0060, 0x0d63, 0x0d63, 0x0003, 0x0000, 0x042e, 0x0433, + 0x0003, 0x0060, 0x0d93, 0x0da5, 0x0db4, 0x0002, 0x0436, 0x043a, + 0x0002, 0x0060, 0x0d3d, 0x0d3d, 0x0002, 0x0060, 0x0d63, 0x0d63, + // Entry 44A40 - 44A7F + 0x0003, 0x0000, 0x0442, 0x0447, 0x0003, 0x0060, 0x0dd2, 0x0ddd, + 0x0de5, 0x0002, 0x044a, 0x044e, 0x0002, 0x0060, 0x0d3d, 0x0d3d, + 0x0002, 0x0060, 0x0d63, 0x0d63, 0x0003, 0x0000, 0x0456, 0x045b, + 0x0003, 0x0060, 0x0dfc, 0x0e19, 0x0e33, 0x0002, 0x045e, 0x0462, + 0x0002, 0x0060, 0x0e7c, 0x0e5c, 0x0002, 0x0060, 0x0ecc, 0x0e9f, + 0x0003, 0x0000, 0x046a, 0x046f, 0x0003, 0x0060, 0x0efc, 0x0f0e, + 0x0f1d, 0x0002, 0x0472, 0x0476, 0x0002, 0x0060, 0x0e7c, 0x0e7c, + 0x0002, 0x0060, 0x0ecc, 0x0ecc, 0x0003, 0x0000, 0x047e, 0x0483, + // Entry 44A80 - 44ABF + 0x0003, 0x0060, 0x0f3b, 0x0f49, 0x0f54, 0x0002, 0x0486, 0x048a, + 0x0002, 0x0060, 0x0e7c, 0x0e7c, 0x0002, 0x0060, 0x0ecc, 0x0ecc, + 0x0003, 0x0000, 0x0492, 0x0497, 0x0003, 0x0060, 0x0f6e, 0x0f8e, + 0x0fab, 0x0002, 0x049a, 0x049e, 0x0002, 0x0060, 0x0ffa, 0x0fd7, + 0x0002, 0x0060, 0x1050, 0x1020, 0x0003, 0x0000, 0x04a6, 0x04ab, + 0x0003, 0x0060, 0x1083, 0x1098, 0x10aa, 0x0002, 0x04ae, 0x04b2, + 0x0002, 0x0060, 0x0ffa, 0x0ffa, 0x0002, 0x0060, 0x1050, 0x1050, + 0x0003, 0x0000, 0x04ba, 0x04bf, 0x0003, 0x0060, 0x10cb, 0x10d9, + // Entry 44AC0 - 44AFF + 0x10e4, 0x0002, 0x04c2, 0x04c6, 0x0002, 0x0060, 0x0ffa, 0x0ffa, + 0x0002, 0x0060, 0x1050, 0x1050, 0x0003, 0x0000, 0x04ce, 0x04d3, + 0x0003, 0x0060, 0x10fe, 0x111b, 0x1135, 0x0002, 0x04d6, 0x04da, + 0x0002, 0x0060, 0x117e, 0x115e, 0x0002, 0x0060, 0x11ce, 0x11a1, + 0x0003, 0x0000, 0x04e2, 0x04e7, 0x0003, 0x0060, 0x11fe, 0x1210, + 0x121f, 0x0002, 0x04ea, 0x04ee, 0x0002, 0x0060, 0x117e, 0x117e, + 0x0002, 0x0060, 0x11ce, 0x11ce, 0x0003, 0x0000, 0x04f6, 0x04fb, + 0x0003, 0x0060, 0x123d, 0x124b, 0x1256, 0x0002, 0x04fe, 0x0502, + // Entry 44B00 - 44B3F + 0x0002, 0x0060, 0x117e, 0x117e, 0x0002, 0x0060, 0x11ce, 0x11ce, + 0x0003, 0x0000, 0x050a, 0x050f, 0x0003, 0x0060, 0x1270, 0x1290, + 0x12ad, 0x0002, 0x0512, 0x0516, 0x0002, 0x0060, 0x12fc, 0x12d9, + 0x0002, 0x0060, 0x1352, 0x1322, 0x0003, 0x0000, 0x051e, 0x0523, + 0x0003, 0x0060, 0x1385, 0x139a, 0x13ac, 0x0002, 0x0526, 0x052a, + 0x0002, 0x0060, 0x12fc, 0x12fc, 0x0002, 0x0060, 0x1352, 0x1352, + 0x0003, 0x0000, 0x0532, 0x0537, 0x0003, 0x0060, 0x13cd, 0x13db, + 0x13e6, 0x0002, 0x053a, 0x053e, 0x0002, 0x0060, 0x12fc, 0x12fc, + // Entry 44B40 - 44B7F + 0x0002, 0x0060, 0x1352, 0x1352, 0x0003, 0x0000, 0x0546, 0x054b, + 0x0003, 0x0060, 0x1400, 0x1423, 0x1443, 0x0002, 0x054e, 0x0552, + 0x0002, 0x0060, 0x1498, 0x1472, 0x0002, 0x0060, 0x14f4, 0x14c1, + 0x0003, 0x0000, 0x055a, 0x055f, 0x0003, 0x0060, 0x152a, 0x1542, + 0x1557, 0x0002, 0x0562, 0x0566, 0x0002, 0x0060, 0x1498, 0x1498, + 0x0002, 0x0060, 0x14f4, 0x14f4, 0x0003, 0x0000, 0x056e, 0x0573, + 0x0003, 0x0060, 0x157b, 0x1589, 0x1594, 0x0002, 0x0576, 0x057a, + 0x0002, 0x0060, 0x1498, 0x1498, 0x0002, 0x0060, 0x14f4, 0x14f4, + // Entry 44B80 - 44BBF + 0x0003, 0x0000, 0x0582, 0x0587, 0x0003, 0x0060, 0x15ae, 0x15cb, + 0x15e5, 0x0002, 0x058a, 0x058e, 0x0002, 0x0060, 0x162e, 0x160e, + 0x0002, 0x0060, 0x167e, 0x1651, 0x0003, 0x0000, 0x0596, 0x059b, + 0x0003, 0x0060, 0x16ae, 0x16c0, 0x16cf, 0x0002, 0x059e, 0x05a2, + 0x0002, 0x0060, 0x162e, 0x162e, 0x0002, 0x0060, 0x167e, 0x167e, + 0x0003, 0x0000, 0x05aa, 0x05af, 0x0003, 0x0060, 0x16ed, 0x16f8, + 0x1700, 0x0002, 0x05b2, 0x05b6, 0x0002, 0x0060, 0x162e, 0x162e, + 0x0002, 0x0060, 0x167e, 0x167e, 0x0001, 0x05bc, 0x0001, 0x0007, + // Entry 44BC0 - 44BFF + 0x07cc, 0x0003, 0x05c3, 0x05c6, 0x05ca, 0x0001, 0x0060, 0x1717, + 0x0002, 0x0060, 0xffff, 0x1721, 0x0002, 0x05cd, 0x05d1, 0x0002, + 0x0060, 0x1743, 0x172f, 0x0002, 0x0060, 0x177e, 0x175d, 0x0003, + 0x05d9, 0x0000, 0x05dc, 0x0001, 0x0060, 0x17a2, 0x0002, 0x05df, + 0x05e3, 0x0002, 0x0060, 0x17aa, 0x17aa, 0x0002, 0x0060, 0x17bc, + 0x17bc, 0x0003, 0x05eb, 0x0000, 0x05ee, 0x0001, 0x0060, 0x17db, + 0x0002, 0x05f1, 0x05f5, 0x0002, 0x0060, 0x17aa, 0x17aa, 0x0002, + 0x0060, 0x17bc, 0x175d, 0x0003, 0x05fd, 0x0600, 0x0604, 0x0001, + // Entry 44C00 - 44C3F + 0x0060, 0x17e2, 0x0002, 0x0060, 0xffff, 0x17f8, 0x0002, 0x0607, + 0x060b, 0x0002, 0x0060, 0x182c, 0x180f, 0x0002, 0x0060, 0x1879, + 0x184f, 0x0003, 0x0613, 0x0000, 0x0616, 0x0001, 0x0060, 0x18a6, + 0x0002, 0x0619, 0x061d, 0x0002, 0x0060, 0x18b4, 0x18b4, 0x0002, + 0x0060, 0x18cc, 0x18cc, 0x0003, 0x0625, 0x0000, 0x0628, 0x0001, + 0x0060, 0x18f1, 0x0002, 0x062b, 0x062f, 0x0002, 0x0060, 0x18f8, + 0x18f8, 0x0002, 0x0060, 0x1904, 0x1904, 0x0003, 0x0637, 0x063a, + 0x063e, 0x0001, 0x0060, 0x1910, 0x0002, 0x0060, 0xffff, 0x1920, + // Entry 44C40 - 44C7F + 0x0002, 0x0641, 0x0645, 0x0002, 0x0060, 0x1956, 0x193c, 0x0002, + 0x0060, 0x199a, 0x1973, 0x0003, 0x064d, 0x0000, 0x0650, 0x0001, + 0x0060, 0x19c4, 0x0002, 0x0653, 0x0657, 0x0002, 0x0060, 0x19cf, + 0x19cf, 0x0002, 0x0060, 0x19e5, 0x19e5, 0x0003, 0x065f, 0x0000, + 0x0662, 0x0001, 0x0060, 0x19c4, 0x0002, 0x0665, 0x0669, 0x0002, + 0x0060, 0x19cf, 0x1a07, 0x0002, 0x0060, 0x19e5, 0x1973, 0x0001, + 0x066f, 0x0001, 0x0060, 0x1a13, 0x0004, 0x0677, 0x067c, 0x0681, + 0x068c, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0060, + // Entry 44C80 - 44CBF + 0x1a2d, 0x1a3e, 0x1a5c, 0x0002, 0x0000, 0x0684, 0x0002, 0x0000, + 0x0687, 0x0003, 0x0060, 0xffff, 0x1a89, 0x1abf, 0x0002, 0x0873, + 0x068f, 0x0003, 0x0693, 0x07d3, 0x0733, 0x009e, 0x0060, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1c68, 0x1d36, 0x1e5d, 0x1ef2, 0x1f72, + 0x1ffb, 0x209f, 0x2131, 0x21cf, 0x2379, 0x242d, 0x24dd, 0x25c6, + 0x266d, 0x271a, 0x2800, 0x2925, 0x2a14, 0x2b09, 0x2bb9, 0x2c4e, + 0xffff, 0xffff, 0x2d44, 0xffff, 0x2e2d, 0xffff, 0x2f1f, 0x2fb8, + 0x3032, 0x30c2, 0xffff, 0xffff, 0x31e1, 0x327f, 0x3336, 0xffff, + // Entry 44CC0 - 44CFF + 0xffff, 0xffff, 0x3460, 0xffff, 0x3539, 0x362b, 0xffff, 0x3757, + 0x3837, 0x3929, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a93, 0xffff, + 0xffff, 0x3ba6, 0x3cb3, 0xffff, 0xffff, 0x3e52, 0x3f48, 0x3fe6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x41b8, 0x4251, + 0x4313, 0x43d0, 0x4469, 0xffff, 0xffff, 0x4651, 0xffff, 0x4722, + 0xffff, 0xffff, 0x487e, 0xffff, 0x49ea, 0xffff, 0xffff, 0xffff, + 0xffff, 0x4b27, 0xffff, 0x4bdf, 0x4cb3, 0x4d99, 0x4e43, 0xffff, + 0xffff, 0xffff, 0x4f2f, 0x5006, 0x50e7, 0xffff, 0xffff, 0x521a, + // Entry 44D00 - 44D3F + 0x5367, 0x543b, 0x54d0, 0xffff, 0xffff, 0x55e0, 0x5675, 0x56ef, + 0xffff, 0x57d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5a98, + 0x5b2d, 0x5bb0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x5d6a, 0xffff, 0xffff, 0x5e4c, 0xffff, 0x5ee6, 0xffff, + 0x5fec, 0x6081, 0x614c, 0xffff, 0x61f5, 0x62c9, 0xffff, 0xffff, + 0xffff, 0x641b, 0x64cb, 0xffff, 0xffff, 0x1af8, 0x1dc8, 0x224f, + 0x22e4, 0xffff, 0xffff, 0x492e, 0x599f, 0x009e, 0x0060, 0x1b72, + 0x1ba4, 0x1be0, 0x1c16, 0x1c9e, 0x1d59, 0x1e80, 0x1f0f, 0x1f92, + // Entry 44D40 - 44D7F + 0x2024, 0x20c2, 0x2151, 0x21ec, 0x239f, 0x2459, 0x251c, 0x25ef, + 0x2699, 0x2759, 0x2855, 0x2967, 0x2a56, 0x2b35, 0x2bdc, 0x2c7a, + 0x2cfe, 0x2d1e, 0x2d70, 0x2df4, 0x2e5a, 0x2ee0, 0x2f3c, 0x2fd2, + 0x304c, 0x30f1, 0x317b, 0x31b1, 0x3207, 0x32a9, 0x3356, 0x33bf, + 0x33df, 0x342d, 0x348d, 0x3513, 0x357b, 0x3667, 0x370b, 0x3793, + 0x3879, 0x3943, 0x39a3, 0x39d6, 0x3a41, 0x3a6d, 0x3ab9, 0x3b31, + 0x3b6a, 0x3bf1, 0x3cfe, 0x3dfc, 0x3e35, 0x3e8e, 0x3f6e, 0x4006, + 0x4072, 0x4095, 0x40cf, 0x40f5, 0x413a, 0x4179, 0x41d5, 0x4283, + // Entry 44D80 - 44DBF + 0x433c, 0x43ed, 0x44d2, 0x45d0, 0x4612, 0x4674, 0x46fc, 0x4760, + 0x4808, 0x4854, 0x48ab, 0x49b1, 0x4a0a, 0x4a76, 0x4a99, 0x4ac2, + 0x4af4, 0x4b4a, 0x4bbc, 0x4c18, 0x4cf2, 0x4dc3, 0x4e63, 0x4ecf, + 0x4ef5, 0x4f0f, 0x4f68, 0x503b, 0x5126, 0x51cd, 0x51e7, 0x5263, + 0x539f, 0x545e, 0x54fc, 0x5580, 0x55a0, 0x5603, 0x568f, 0x571b, + 0x579f, 0x583a, 0x592a, 0x5953, 0x5973, 0x5a4f, 0x5a78, 0x5abb, + 0x5b4a, 0x5bcd, 0x5c33, 0x5c59, 0x5c9b, 0x5cce, 0x5d07, 0x5d2d, + 0x5d4d, 0x5d84, 0x5df7, 0x5e26, 0x5e69, 0x5ecf, 0x5f24, 0x5fcc, + // Entry 44DC0 - 44DFF + 0x600f, 0x60b6, 0x6169, 0x61cf, 0x622d, 0x62fb, 0x638b, 0x63b1, + 0x63d8, 0x6447, 0x6503, 0x3dc0, 0x5321, 0x1b12, 0x1deb, 0x2272, + 0x2307, 0xffff, 0x483a, 0x494b, 0x59cb, 0x009e, 0x0060, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1cf0, 0x1d98, 0x1ebf, 0x1f48, 0x1fce, + 0x2069, 0x2101, 0x2196, 0x2225, 0x23e1, 0x24a1, 0x2577, 0x2634, + 0x26e1, 0x27b4, 0x28c3, 0x29c5, 0x2ab7, 0x2b7d, 0x2c1b, 0x2cc2, + 0xffff, 0xffff, 0x2db8, 0xffff, 0x2ea3, 0xffff, 0x2f75, 0x3008, + 0x3082, 0x313c, 0xffff, 0xffff, 0x3249, 0x32ef, 0x3392, 0xffff, + // Entry 44E00 - 44E3F + 0xffff, 0xffff, 0x34d6, 0xffff, 0x35d9, 0x36bf, 0xffff, 0x37eb, + 0x38d7, 0x3979, 0xffff, 0xffff, 0xffff, 0xffff, 0x3afb, 0xffff, + 0xffff, 0x3c58, 0x3d65, 0xffff, 0xffff, 0x3ee6, 0x3fb0, 0x4042, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x420e, 0x42d1, + 0x4381, 0x4426, 0x4557, 0xffff, 0xffff, 0x46b3, 0xffff, 0x47ba, + 0xffff, 0xffff, 0x48f4, 0xffff, 0x4a46, 0xffff, 0xffff, 0xffff, + 0xffff, 0x4b89, 0xffff, 0x4c6d, 0x4d4d, 0x4e09, 0x4e9f, 0xffff, + 0xffff, 0xffff, 0x4fbd, 0x508c, 0x5181, 0xffff, 0xffff, 0x52c8, + // Entry 44E40 - 44E7F + 0x53f3, 0x549d, 0x5544, 0xffff, 0xffff, 0x5642, 0x56c5, 0x5763, + 0xffff, 0x58bb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5afa, + 0x5b83, 0x5c06, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x5dba, 0xffff, 0xffff, 0x5ea2, 0xffff, 0x5f7e, 0xffff, + 0x604e, 0x6107, 0x61a2, 0xffff, 0x6281, 0x6349, 0xffff, 0xffff, + 0xffff, 0x648f, 0x6557, 0xffff, 0xffff, 0x1b48, 0x1e2a, 0x22b1, + 0x2346, 0xffff, 0xffff, 0x4984, 0x5a13, 0x0003, 0x0000, 0x0000, + 0x0877, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 44E80 - 44EBF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0002, 0x0003, 0x00e9, + // Entry 44EC0 - 44EFF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, + 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0045, 0xffff, 0x0666, 0x2b8a, + 0x065e, 0x2b8e, 0x2b92, 0x2b96, 0x2b9a, 0x2b9e, 0x2ba2, 0x2ba6, + // Entry 44F00 - 44F3F + 0x2baa, 0x2bae, 0x000d, 0x0061, 0xffff, 0x0000, 0x0006, 0x000b, + 0x0015, 0x0020, 0x0027, 0x003a, 0x0040, 0x0047, 0x0053, 0x005a, + 0x0061, 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29cd, + 0x29d1, 0x29d7, 0x29b3, 0x29d1, 0x29d1, 0x29cf, 0x29bf, 0x29bb, + 0x29d3, 0x29dd, 0x29bf, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x0049, 0x003b, 0x1fec, 0x1ff0, 0x1ff4, + 0x1ff8, 0x1ffc, 0x2000, 0x0007, 0x0061, 0x0066, 0x0070, 0x007c, + 0x0084, 0x008c, 0x0099, 0x00a2, 0x0002, 0x0000, 0x0082, 0x0007, + // Entry 44F40 - 44F7F + 0x0017, 0x29cf, 0x29b5, 0x29a9, 0x29ab, 0x29ab, 0x29d7, 0x29bb, + 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0061, 0xffff, + 0x00ad, 0x00b8, 0x00c4, 0x00d0, 0x0001, 0x00a1, 0x0003, 0x00a5, + 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0061, 0x00e1, + 0x0001, 0x0061, 0x00eb, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0061, + 0x00e1, 0x0001, 0x0061, 0x00eb, 0x0003, 0x00c1, 0x0000, 0x00bb, + 0x0001, 0x00bd, 0x0002, 0x0056, 0x1d4d, 0x1d5e, 0x0001, 0x00c3, + // Entry 44F80 - 44FBF + 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, 0x00cf, 0x00cc, + 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, + 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, + 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, + 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 44FC0 - 44FFF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, + 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, + 0x012c, 0x0001, 0x0061, 0x00f2, 0x0001, 0x0131, 0x0001, 0x0061, + 0x00f7, 0x0001, 0x0136, 0x0001, 0x0061, 0x00fc, 0x0001, 0x013b, + 0x0001, 0x0061, 0x0101, 0x0002, 0x0141, 0x0144, 0x0001, 0x0061, + // Entry 45000 - 4503F + 0x0107, 0x0003, 0x0061, 0x010e, 0x0113, 0x0118, 0x0001, 0x014b, + 0x0001, 0x0061, 0x011c, 0x0001, 0x0150, 0x0001, 0x0061, 0x0122, + 0x0001, 0x0155, 0x0001, 0x0056, 0x1db2, 0x0001, 0x015a, 0x0001, + 0x0061, 0x0127, 0x0001, 0x015f, 0x0001, 0x0016, 0x022e, 0x0003, + 0x0004, 0x08c7, 0x0c75, 0x0012, 0x0017, 0x003f, 0x0138, 0x01a5, + 0x0296, 0x0000, 0x0303, 0x032e, 0x058d, 0x0617, 0x0689, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0716, 0x0833, 0x08a5, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0020, 0x002e, 0x0000, 0x9006, 0x0003, + // Entry 45040 - 4507F + 0x0029, 0x0000, 0x0024, 0x0001, 0x0026, 0x0001, 0x0061, 0x0130, + 0x0001, 0x002b, 0x0001, 0x0061, 0x014f, 0x0004, 0x003c, 0x0036, + 0x0033, 0x0039, 0x0001, 0x0061, 0x0158, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, 0x237b, 0x000a, 0x004a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, + 0x00af, 0x0002, 0x004d, 0x007e, 0x0003, 0x0051, 0x0060, 0x006f, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + // Entry 45080 - 450BF + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x0082, 0x0091, + 0x00a0, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + // Entry 450C0 - 450FF + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0006, 0x00b6, + 0x0000, 0x0000, 0x00c9, 0x00d1, 0x0114, 0x0001, 0x00b8, 0x0001, + 0x00ba, 0x000d, 0x0061, 0xffff, 0x0171, 0x017e, 0x018b, 0x0198, + 0x01a8, 0x01b5, 0x01c2, 0x01cc, 0x01d9, 0x01e6, 0x01f6, 0x01fd, + 0x0001, 0x00cb, 0x0001, 0x00cd, 0x0002, 0x0061, 0xffff, 0x020a, + 0x0001, 0x00d3, 0x0001, 0x00d5, 0x003d, 0x0061, 0xffff, 0x021d, + 0x0239, 0x024f, 0x0268, 0x0281, 0x0297, 0x02ad, 0x02c3, 0x02d9, + // Entry 45100 - 4513F + 0x02f5, 0x0314, 0x032a, 0x0340, 0x035f, 0x0375, 0x038b, 0x03a4, + 0x03bd, 0x03d3, 0x03ec, 0x0405, 0x0421, 0x043a, 0x044d, 0x0463, + 0x0479, 0x048f, 0x04a8, 0x04c1, 0x04dd, 0x04f3, 0x050c, 0x0522, + 0x053b, 0x0554, 0x0564, 0x057a, 0x0593, 0x05a9, 0x05c5, 0x05e1, + 0x05fd, 0x0613, 0x0629, 0x063f, 0x0655, 0x066e, 0x0681, 0x0697, + 0x06b3, 0x06cf, 0x06eb, 0x0704, 0x071d, 0x0733, 0x0746, 0x075c, + 0x0775, 0x078e, 0x07a4, 0x0001, 0x0116, 0x0001, 0x0118, 0x000d, + 0x0061, 0xffff, 0x07bd, 0x07c7, 0x07d1, 0x07de, 0x07f4, 0x0804, + // Entry 45140 - 4517F + 0x080b, 0x0815, 0x081f, 0x0829, 0x0845, 0x0855, 0x0004, 0x0135, + 0x012f, 0x012c, 0x0132, 0x0001, 0x0061, 0x085f, 0x0001, 0x0032, + 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, + 0x013a, 0x0002, 0x013d, 0x0171, 0x0003, 0x0141, 0x0151, 0x0161, + 0x000e, 0x0061, 0xffff, 0x086e, 0x087e, 0x088b, 0x08a1, 0x08b1, + 0x08be, 0x08d7, 0x08f0, 0x090c, 0x0922, 0x0935, 0x0945, 0x0955, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, + // Entry 45180 - 451BF + 0x000e, 0x0061, 0xffff, 0x086e, 0x087e, 0x088b, 0x08a1, 0x08b1, + 0x08be, 0x08d7, 0x08f0, 0x090c, 0x0922, 0x0935, 0x0945, 0x0955, + 0x0003, 0x0175, 0x0185, 0x0195, 0x000e, 0x0061, 0xffff, 0x086e, + 0x087e, 0x088b, 0x08a1, 0x08b1, 0x08be, 0x08d7, 0x08f0, 0x090c, + 0x0922, 0x0935, 0x0945, 0x0955, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0061, 0xffff, 0x086e, + 0x087e, 0x088b, 0x08a1, 0x08b1, 0x08be, 0x08d7, 0x08f0, 0x090c, + // Entry 451C0 - 451FF + 0x0922, 0x0935, 0x0945, 0x0955, 0x000a, 0x01b0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0285, 0x0000, 0x0000, 0x0000, 0x0215, 0x0002, + 0x01b3, 0x01e4, 0x0003, 0x01b7, 0x01c6, 0x01d5, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, + // Entry 45200 - 4523F + 0x386e, 0x3871, 0x3874, 0x0003, 0x01e8, 0x01f7, 0x0206, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, + 0x2396, 0x386e, 0x3871, 0x3874, 0x0006, 0x021c, 0x0000, 0x0000, + 0x0000, 0x022f, 0x0272, 0x0001, 0x021e, 0x0001, 0x0220, 0x000d, + // Entry 45240 - 4527F + 0x0061, 0xffff, 0x0171, 0x017e, 0x018b, 0x0198, 0x01a8, 0x01b5, + 0x01c2, 0x01cc, 0x01d9, 0x01e6, 0x01f6, 0x01fd, 0x0001, 0x0231, + 0x0001, 0x0233, 0x003d, 0x0061, 0xffff, 0x021d, 0x0239, 0x024f, + 0x0268, 0x0281, 0x0297, 0x02ad, 0x02c3, 0x02d9, 0x02f5, 0x0314, + 0x032a, 0x0340, 0x035f, 0x0375, 0x038b, 0x03a4, 0x03bd, 0x03d3, + 0x03ec, 0x0405, 0x0421, 0x043a, 0x044d, 0x0463, 0x0479, 0x048f, + 0x04a8, 0x04c1, 0x04dd, 0x04f3, 0x050c, 0x0522, 0x053b, 0x0554, + 0x0564, 0x057a, 0x0593, 0x05a9, 0x05c5, 0x05e1, 0x05fd, 0x0613, + // Entry 45280 - 452BF + 0x0629, 0x063f, 0x0655, 0x066e, 0x0681, 0x0697, 0x06b3, 0x06cf, + 0x06eb, 0x0704, 0x071d, 0x0733, 0x0746, 0x075c, 0x0775, 0x078e, + 0x07a4, 0x0001, 0x0274, 0x0001, 0x0276, 0x000d, 0x0061, 0xffff, + 0x07bd, 0x07c7, 0x07d1, 0x07de, 0x07f4, 0x0804, 0x080b, 0x0815, + 0x081f, 0x0829, 0x0845, 0x0855, 0x0004, 0x0293, 0x028d, 0x028a, + 0x0290, 0x0001, 0x0061, 0x085f, 0x0001, 0x0032, 0x00ef, 0x0001, + 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, 0x0298, 0x0002, + 0x029b, 0x02cf, 0x0003, 0x029f, 0x02af, 0x02bf, 0x000e, 0x0061, + // Entry 452C0 - 452FF + 0xffff, 0x0962, 0x097e, 0x0991, 0x09a4, 0x09ba, 0x09ca, 0x09e0, + 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, 0x0a3f, 0x0a4f, 0x000e, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0061, + 0xffff, 0x0962, 0x097e, 0x0991, 0x09a4, 0x09ba, 0x09ca, 0x09e0, + 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, 0x0a3f, 0x0a4f, 0x0003, 0x02d3, + 0x02e3, 0x02f3, 0x000e, 0x0061, 0xffff, 0x0962, 0x097e, 0x0991, + 0x09a4, 0x09ba, 0x09ca, 0x09e0, 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, + // Entry 45300 - 4533F + 0x0a3f, 0x0a4f, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x0422, 0x000e, 0x0061, 0xffff, 0x0962, 0x097e, 0x0991, + 0x09a4, 0x09ba, 0x09ca, 0x09e0, 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, + 0x0a3f, 0x0a4f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x030c, 0x0000, 0x031d, 0x0004, 0x031a, 0x0314, 0x0311, 0x0317, + 0x0001, 0x0061, 0x0158, 0x0001, 0x0061, 0x0a65, 0x0001, 0x0061, + 0x0a70, 0x0001, 0x0010, 0x004c, 0x0004, 0x032b, 0x0325, 0x0322, + // Entry 45340 - 4537F + 0x0328, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0337, 0x039c, + 0x03f3, 0x0428, 0x0535, 0x055a, 0x056b, 0x057c, 0x0002, 0x033a, + 0x036b, 0x0003, 0x033e, 0x034d, 0x035c, 0x000d, 0x0061, 0xffff, + 0x0a7a, 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, 0x0ac2, + 0x0acb, 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, 0x0a7a, + 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, 0x0ac2, 0x0acb, + 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, 0x0aef, 0x0b02, + // Entry 45380 - 453BF + 0x0b21, 0x0b34, 0x0b47, 0x0b5d, 0x0b76, 0x0b8c, 0x0ba2, 0x0bb8, + 0x0bcb, 0x0be7, 0x0003, 0x036f, 0x037e, 0x038d, 0x000d, 0x0061, + 0xffff, 0x0a7a, 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, + 0x0ac2, 0x0acb, 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, + 0x0a7a, 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, 0x0ac2, + 0x0acb, 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, 0x0aef, + 0x0b02, 0x0b21, 0x0b34, 0x0b47, 0x0b5d, 0x0b76, 0x0b8c, 0x0ba2, + 0x0bb8, 0x0bcb, 0x0be7, 0x0002, 0x039f, 0x03c9, 0x0005, 0x03a5, + // Entry 453C0 - 453FF + 0x03ae, 0x03c0, 0x0000, 0x03b7, 0x0007, 0x0061, 0x0bfd, 0x0c05, + 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, 0x0c21, 0x0007, 0x0061, 0x0c26, + 0x0c2d, 0x0c31, 0x0c35, 0x0c39, 0x0c40, 0x0c44, 0x0007, 0x0061, + 0x0bfd, 0x0c05, 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, 0x0c21, 0x0007, + 0x0061, 0x0c48, 0x0c67, 0x0c83, 0x0c9f, 0x0cb2, 0x0cd4, 0x0ced, + 0x0005, 0x03cf, 0x03d8, 0x03ea, 0x0000, 0x03e1, 0x0007, 0x0061, + 0x0bfd, 0x0c05, 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, 0x0c21, 0x0007, + 0x0061, 0x0c26, 0x0c2d, 0x0c31, 0x0c35, 0x0c39, 0x0c40, 0x0c44, + // Entry 45400 - 4543F + 0x0007, 0x0061, 0x0bfd, 0x0c05, 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, + 0x0c21, 0x0007, 0x0061, 0x0c48, 0x0c67, 0x0c83, 0x0c9f, 0x0cb2, + 0x0cd4, 0x0ced, 0x0002, 0x03f6, 0x040f, 0x0003, 0x03fa, 0x0401, + 0x0408, 0x0005, 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, 0x0d45, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, 0x0d45, 0x0003, 0x0413, + 0x041a, 0x0421, 0x0005, 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, + 0x0d45, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 45440 - 4547F + 0x0005, 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, 0x0d45, 0x0002, + 0x042b, 0x04b0, 0x0003, 0x042f, 0x045a, 0x0485, 0x000c, 0x043f, + 0x0445, 0x043c, 0x0448, 0x044b, 0x0451, 0x0457, 0x0442, 0x0000, + 0x044e, 0x0000, 0x0454, 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, + 0x0d76, 0x0001, 0x0061, 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, + 0x0061, 0x0dc7, 0x0001, 0x0061, 0x0de3, 0x0001, 0x0061, 0x0dff, + 0x0001, 0x0061, 0x0e0c, 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, + 0x0e32, 0x000c, 0x046a, 0x0470, 0x0467, 0x0473, 0x0476, 0x047c, + // Entry 45480 - 454BF + 0x0482, 0x046d, 0x0000, 0x0479, 0x0000, 0x047f, 0x0001, 0x0061, + 0x0d5a, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x3a8f, 0x0001, + 0x0000, 0x21ec, 0x0001, 0x0061, 0x0e48, 0x0001, 0x0061, 0x0d95, + 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, 0x0e55, 0x0001, 0x0061, + 0x0e28, 0x0001, 0x0061, 0x0e32, 0x000c, 0x0495, 0x049b, 0x0492, + 0x049e, 0x04a1, 0x04a7, 0x04ad, 0x0498, 0x0000, 0x04a4, 0x0000, + 0x04aa, 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, 0x0d76, 0x0001, + 0x0061, 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, 0x0061, 0x0dc7, + // Entry 454C0 - 454FF + 0x0001, 0x0061, 0x0de3, 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, + 0x0e0c, 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, 0x0e32, 0x0003, + 0x04b4, 0x04df, 0x050a, 0x000c, 0x04c4, 0x04ca, 0x04c1, 0x04cd, + 0x04d0, 0x04d6, 0x04dc, 0x04c7, 0x0000, 0x04d3, 0x0000, 0x04d9, + 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, 0x0d76, 0x0001, 0x0061, + 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, 0x0061, 0x0dc7, 0x0001, + 0x0061, 0x0de3, 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, 0x0e0c, + 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, 0x0e32, 0x000c, 0x04ef, + // Entry 45500 - 4553F + 0x04f5, 0x04ec, 0x04f8, 0x04fb, 0x0501, 0x0507, 0x04f2, 0x0000, + 0x04fe, 0x0000, 0x0504, 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, + 0x0d76, 0x0001, 0x0061, 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, + 0x0061, 0x0e48, 0x0001, 0x0061, 0x0e62, 0x0001, 0x0061, 0x0dff, + 0x0001, 0x0061, 0x0e55, 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, + 0x0e32, 0x000c, 0x051a, 0x0520, 0x0517, 0x0523, 0x0526, 0x052c, + 0x0532, 0x051d, 0x0000, 0x0529, 0x0000, 0x052f, 0x0001, 0x0061, + 0x0d5a, 0x0001, 0x0061, 0x0d76, 0x0001, 0x0061, 0x0d95, 0x0001, + // Entry 45540 - 4557F + 0x0061, 0x0da8, 0x0001, 0x0061, 0x0dc7, 0x0001, 0x0061, 0x0de3, + 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, 0x0e0c, 0x0001, 0x0061, + 0x0e28, 0x0001, 0x0061, 0x0e32, 0x0003, 0x0544, 0x054f, 0x0539, + 0x0002, 0x053c, 0x0540, 0x0002, 0x0061, 0x0e81, 0x0ee6, 0x0002, + 0x0061, 0x0eb8, 0x0f0b, 0x0002, 0x0547, 0x054b, 0x0002, 0x0061, + 0x0f2d, 0x0f56, 0x0002, 0x0061, 0x0f49, 0x0f5f, 0x0002, 0x0552, + 0x0556, 0x0002, 0x0061, 0x0f68, 0x0f56, 0x0002, 0x0061, 0x0f49, + 0x0f5f, 0x0004, 0x0568, 0x0562, 0x055f, 0x0565, 0x0001, 0x0061, + // Entry 45580 - 455BF + 0x0158, 0x0001, 0x0061, 0x0a65, 0x0001, 0x0001, 0x1fb9, 0x0001, + 0x0000, 0x237b, 0x0004, 0x0579, 0x0573, 0x0570, 0x0576, 0x0001, + 0x0061, 0x0f7e, 0x0001, 0x0061, 0x0fbe, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x058a, 0x0584, 0x0581, 0x0587, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x0594, 0x0000, 0x0000, + 0x0000, 0x05ff, 0x0606, 0x0002, 0x0597, 0x05cb, 0x0003, 0x059b, + 0x05ab, 0x05bb, 0x000e, 0x0061, 0x1076, 0x0ffb, 0x100b, 0x101b, + // Entry 455C0 - 455FF + 0x102e, 0x103e, 0x104e, 0x1063, 0x108c, 0x109f, 0x10b2, 0x10c2, + 0x10d2, 0x10dc, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x0422, 0x000e, 0x0061, 0x1076, 0x0ffb, 0x100b, 0x101b, + 0x102e, 0x103e, 0x104e, 0x1063, 0x108c, 0x109f, 0x10b2, 0x10c2, + 0x10d2, 0x10dc, 0x0003, 0x05cf, 0x05df, 0x05ef, 0x000e, 0x0061, + 0x1076, 0x0ffb, 0x100b, 0x101b, 0x102e, 0x103e, 0x104e, 0x1063, + 0x108c, 0x109f, 0x10b2, 0x10c2, 0x10d2, 0x10dc, 0x000e, 0x0000, + // Entry 45600 - 4563F + 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0061, + 0x1076, 0x0ffb, 0x100b, 0x101b, 0x102e, 0x103e, 0x104e, 0x1063, + 0x108c, 0x109f, 0x10b2, 0x10c2, 0x10d2, 0x10dc, 0x0001, 0x0601, + 0x0001, 0x0603, 0x0001, 0x0061, 0x10ef, 0x0004, 0x0614, 0x060e, + 0x060b, 0x0611, 0x0001, 0x0061, 0x0158, 0x0001, 0x0061, 0x0a65, + 0x0001, 0x0061, 0x0a70, 0x0001, 0x0010, 0x004c, 0x0005, 0x061d, + 0x0000, 0x0000, 0x0000, 0x0682, 0x0002, 0x0620, 0x0651, 0x0003, + // Entry 45640 - 4567F + 0x0624, 0x0633, 0x0642, 0x000d, 0x0061, 0xffff, 0x10f8, 0x1108, + 0x111b, 0x112b, 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, 0x119d, + 0x11ad, 0x11ba, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x000d, 0x0061, 0xffff, 0x10f8, 0x1108, 0x111b, 0x112b, + 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, 0x119d, 0x11ad, 0x11ba, + 0x0003, 0x0655, 0x0664, 0x0673, 0x000d, 0x0061, 0xffff, 0x10f8, + 0x1108, 0x111b, 0x112b, 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, + // Entry 45680 - 456BF + 0x119d, 0x11ad, 0x11ba, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, + 0x3871, 0x3874, 0x000d, 0x0061, 0xffff, 0x10f8, 0x1108, 0x111b, + 0x112b, 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, 0x119d, 0x11ad, + 0x11ba, 0x0001, 0x0684, 0x0001, 0x0686, 0x0001, 0x0061, 0x11cd, + 0x0008, 0x0692, 0x0000, 0x0000, 0x0000, 0x06f7, 0x0705, 0x0000, + 0x9006, 0x0002, 0x0695, 0x06c6, 0x0003, 0x0699, 0x06a8, 0x06b7, + 0x000d, 0x0061, 0xffff, 0x11d6, 0x11e7, 0x11f5, 0x1204, 0x1214, + // Entry 456C0 - 456FF + 0x1229, 0x123f, 0x124d, 0x125b, 0x126f, 0x127d, 0x1294, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0061, + 0xffff, 0x12a8, 0x12c4, 0x11f5, 0x1204, 0x1214, 0x1229, 0x12d7, + 0x12e7, 0x12fd, 0x1313, 0x1326, 0x1348, 0x0003, 0x06ca, 0x06d9, + 0x06e8, 0x000d, 0x0061, 0xffff, 0x11d6, 0x11e7, 0x11f5, 0x1204, + 0x1214, 0x1229, 0x123f, 0x124d, 0x125b, 0x126f, 0x127d, 0x1294, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + // Entry 45700 - 4573F + 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, + 0x0061, 0xffff, 0x12a8, 0x12c4, 0x11f5, 0x1204, 0x1214, 0x1229, + 0x12d7, 0x12e7, 0x12fd, 0x1313, 0x1326, 0x1348, 0x0003, 0x0700, + 0x0000, 0x06fb, 0x0001, 0x06fd, 0x0001, 0x0061, 0x1367, 0x0001, + 0x0702, 0x0001, 0x0061, 0x1395, 0x0004, 0x0713, 0x070d, 0x070a, + 0x0710, 0x0001, 0x0061, 0x0158, 0x0001, 0x0061, 0x0a65, 0x0001, + 0x0061, 0x0a70, 0x0001, 0x0010, 0x004c, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x071f, 0x0811, 0x0000, 0x0822, 0x0001, 0x0721, + // Entry 45740 - 4577F + 0x0001, 0x0723, 0x00ec, 0x0061, 0x139e, 0x13bd, 0x13dc, 0x13fb, + 0x1414, 0x1433, 0x144f, 0x1468, 0x1481, 0x149a, 0x14b6, 0x14de, + 0x1514, 0x1547, 0x157a, 0x15b3, 0x15e0, 0x15f9, 0x1618, 0x1646, + 0x1665, 0x1681, 0x16a0, 0x16b9, 0x16d2, 0x16ee, 0x1710, 0x1732, + 0x174e, 0x176d, 0x1789, 0x17ae, 0x17cd, 0x17ec, 0x180b, 0x1824, + 0x184c, 0x187a, 0x18a2, 0x18bb, 0x18d4, 0x18f0, 0x1918, 0x193d, + 0x195c, 0x1981, 0x199d, 0x19b9, 0x19d8, 0x19f1, 0x1a19, 0x1a3b, + 0x1a55, 0x1a73, 0x1a8e, 0x1aaf, 0x1acd, 0x1aeb, 0x1b0c, 0x1b36, + // Entry 45780 - 457BF + 0x1b54, 0x1b7b, 0x1b96, 0x1bb7, 0x1bd2, 0x1bfc, 0x1c20, 0x1c3b, + 0x1c65, 0x1c83, 0x1ca7, 0x1cc5, 0x1ce3, 0x1cfe, 0x1d22, 0x1d3d, + 0x1d58, 0x1d73, 0x1d97, 0x1db8, 0x1dd6, 0x1df7, 0x1e18, 0x1e39, + 0x1e5a, 0x1e7b, 0x1e96, 0x1eba, 0x1ed5, 0x1ef0, 0x1f11, 0x1f32, + 0x1f50, 0x1f6e, 0x1f92, 0x1fad, 0x1fd7, 0x1ff2, 0x2010, 0x202e, + 0x204f, 0x206a, 0x2088, 0x20ac, 0x20c7, 0x20e2, 0x20fd, 0x212d, + 0x214b, 0x216f, 0x218a, 0x21ae, 0x21d2, 0x21f3, 0x2214, 0x2244, + 0x2265, 0x2283, 0x229e, 0x22c2, 0x22e6, 0x2304, 0x2322, 0x233d, + // Entry 457C0 - 457FF + 0x2364, 0x2391, 0x23ac, 0x23d9, 0x23fa, 0x2418, 0x243c, 0x2457, + 0x2478, 0x2499, 0x24b4, 0x24d5, 0x24f3, 0x250e, 0x252c, 0x254d, + 0x256b, 0x2586, 0x25a4, 0x25c2, 0x25e9, 0x260a, 0x262e, 0x264f, + 0x266a, 0x2685, 0x26a3, 0x26c4, 0x26ee, 0x2709, 0x272d, 0x2757, + 0x2778, 0x2799, 0x27c0, 0x27e4, 0x27ff, 0x2829, 0x2847, 0x2868, + 0x2892, 0x28ad, 0x28ce, 0x28f2, 0x290d, 0x2928, 0x294c, 0x2967, + 0x2982, 0x29a6, 0x29c7, 0x29e8, 0x2a0c, 0x2a39, 0x2a54, 0x2a78, + 0x2a96, 0x2ab4, 0x2ad2, 0x2af0, 0x2b14, 0x2b3e, 0x2b59, 0x2b77, + // Entry 45800 - 4583F + 0x2b92, 0x2bb3, 0x2be0, 0x2c01, 0x2c1c, 0x2c40, 0x2c61, 0x2c82, + 0x2ca9, 0x2cc4, 0x2ce5, 0x2d03, 0x2d1e, 0x2d3c, 0x2d57, 0x2d81, + 0x2d9f, 0x2dc0, 0x2de1, 0x2e02, 0x2e26, 0x2e50, 0x2e6b, 0x2e8f, + 0x2eb3, 0x2ed7, 0x2ef5, 0x2f1f, 0x2f43, 0x2f6d, 0x2f88, 0x2fa6, + 0x2fc7, 0x2fe5, 0x3009, 0x3027, 0x3045, 0x3066, 0x3081, 0x309c, + 0x30ba, 0x30de, 0x30ff, 0x3120, 0x313b, 0x3148, 0x315b, 0x3168, + 0x0004, 0x081f, 0x0819, 0x0816, 0x081c, 0x0001, 0x0062, 0x0000, + 0x0001, 0x0062, 0x0028, 0x0001, 0x0061, 0x0a70, 0x0001, 0x001c, + // Entry 45840 - 4587F + 0x12bb, 0x0004, 0x0830, 0x082a, 0x0827, 0x082d, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0005, 0x0839, 0x0000, 0x0000, 0x0000, 0x089e, + 0x0002, 0x083c, 0x086d, 0x0003, 0x0840, 0x084f, 0x085e, 0x000d, + 0x0062, 0xffff, 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, 0x00bf, + 0x00db, 0x00eb, 0x00fb, 0x010e, 0x011b, 0x0131, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, + 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0062, 0xffff, + // Entry 45880 - 458BF + 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, 0x00bf, 0x00db, 0x00eb, + 0x00fb, 0x010e, 0x011b, 0x0131, 0x0003, 0x0871, 0x0880, 0x088f, + 0x000d, 0x0062, 0xffff, 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, + 0x00bf, 0x00db, 0x00eb, 0x00fb, 0x010e, 0x011b, 0x0131, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, + 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0062, + 0xffff, 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, 0x00bf, 0x00db, + 0x00eb, 0x00fb, 0x010e, 0x011b, 0x0131, 0x0001, 0x08a0, 0x0001, + // Entry 458C0 - 458FF + 0x08a2, 0x0001, 0x0062, 0x014a, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x08ae, 0x08b6, 0x0000, 0x9006, 0x0001, 0x08b0, 0x0001, + 0x08b2, 0x0002, 0x0062, 0x016c, 0x0194, 0x0004, 0x08c4, 0x08be, + 0x08bb, 0x08c1, 0x0001, 0x0062, 0x0000, 0x0001, 0x0062, 0x0028, + 0x0001, 0x0061, 0x0a70, 0x0001, 0x0010, 0x004c, 0x0040, 0x0908, + 0x0000, 0x0000, 0x090d, 0x0922, 0x0937, 0x094c, 0x0961, 0x0971, + 0x0981, 0x0996, 0x09ab, 0x09c0, 0x09d9, 0x09f2, 0x0000, 0x0000, + 0x0000, 0x0a0b, 0x0a22, 0x0a39, 0x0000, 0x0000, 0x0000, 0x0a50, + // Entry 45900 - 4593F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a55, 0x0a67, 0x0a79, + 0x0a8b, 0x0a9d, 0x0aaf, 0x0ac1, 0x0ad3, 0x0ae5, 0x0af7, 0x0b09, + 0x0b1b, 0x0b2d, 0x0b3f, 0x0b51, 0x0b63, 0x0b75, 0x0b87, 0x0b99, + 0x0bab, 0x0bbd, 0x0000, 0x0bcf, 0x0000, 0x0bd4, 0x0be8, 0x0bf8, + 0x0c08, 0x0c1c, 0x0c2c, 0x0c3c, 0x0c50, 0x0c60, 0x0c70, 0x0001, + 0x090a, 0x0001, 0x0062, 0x01aa, 0x0003, 0x0911, 0x0914, 0x0919, + 0x0001, 0x0062, 0x01b7, 0x0003, 0x0062, 0x01be, 0x01da, 0x01ea, + 0x0002, 0x091c, 0x091f, 0x0001, 0x0062, 0x01fd, 0x0001, 0x0062, + // Entry 45940 - 4597F + 0x0218, 0x0003, 0x0926, 0x0929, 0x092e, 0x0001, 0x0062, 0x01b7, + 0x0003, 0x0062, 0x01be, 0x01da, 0x01ea, 0x0002, 0x0931, 0x0934, + 0x0001, 0x0062, 0x0238, 0x0001, 0x0062, 0x0218, 0x0003, 0x093b, + 0x093e, 0x0943, 0x0001, 0x0062, 0x01b7, 0x0003, 0x0062, 0x01be, + 0x01da, 0x01ea, 0x0002, 0x0946, 0x0949, 0x0001, 0x0062, 0x0238, + 0x0001, 0x0062, 0x0218, 0x0003, 0x0950, 0x0953, 0x0958, 0x0001, + 0x0062, 0x024a, 0x0003, 0x0062, 0x025d, 0x0285, 0x02a1, 0x0002, + 0x095b, 0x095e, 0x0001, 0x0062, 0x02c0, 0x0001, 0x0062, 0x02e7, + // Entry 45980 - 459BF + 0x0003, 0x0965, 0x0000, 0x0968, 0x0001, 0x0062, 0x024a, 0x0002, + 0x096b, 0x096e, 0x0001, 0x0062, 0x0313, 0x0001, 0x0062, 0x02e7, + 0x0003, 0x0975, 0x0000, 0x0978, 0x0001, 0x0062, 0x024a, 0x0002, + 0x097b, 0x097e, 0x0001, 0x0062, 0x0313, 0x0001, 0x0062, 0x02e7, + 0x0003, 0x0985, 0x0988, 0x098d, 0x0001, 0x0062, 0x0331, 0x0003, + 0x0062, 0x0341, 0x0366, 0x037f, 0x0002, 0x0990, 0x0993, 0x0001, + 0x0062, 0x039b, 0x0001, 0x0062, 0x03bf, 0x0003, 0x099a, 0x099d, + 0x09a2, 0x0001, 0x0062, 0x0331, 0x0003, 0x0062, 0x0341, 0x0366, + // Entry 459C0 - 459FF + 0x037f, 0x0002, 0x09a5, 0x09a8, 0x0001, 0x0062, 0x03ee, 0x0001, + 0x0062, 0x0409, 0x0003, 0x09af, 0x09b2, 0x09b7, 0x0001, 0x0062, + 0x0331, 0x0003, 0x0062, 0x0341, 0x0366, 0x037f, 0x0002, 0x09ba, + 0x09bd, 0x0001, 0x0062, 0x03ee, 0x0001, 0x0062, 0x0409, 0x0004, + 0x09c5, 0x09c8, 0x09cd, 0x09d6, 0x0001, 0x0062, 0x0432, 0x0003, + 0x0062, 0x0448, 0x0473, 0x0492, 0x0002, 0x09d0, 0x09d3, 0x0001, + 0x0062, 0x04b4, 0x0001, 0x0062, 0x04de, 0x0001, 0x0062, 0x0513, + 0x0004, 0x09de, 0x09e1, 0x09e6, 0x09ef, 0x0001, 0x0062, 0x0432, + // Entry 45A00 - 45A3F + 0x0003, 0x0062, 0x0448, 0x0473, 0x0492, 0x0002, 0x09e9, 0x09ec, + 0x0001, 0x0062, 0x055c, 0x0001, 0x0062, 0x057d, 0x0001, 0x0062, + 0x0513, 0x0004, 0x09f7, 0x09fa, 0x09ff, 0x0a08, 0x0001, 0x0062, + 0x0432, 0x0003, 0x0062, 0x0448, 0x0473, 0x0492, 0x0002, 0x0a02, + 0x0a05, 0x0001, 0x0062, 0x055c, 0x0001, 0x0062, 0x057d, 0x0001, + 0x0062, 0x0513, 0x0003, 0x0a0f, 0x0a12, 0x0a19, 0x0001, 0x0062, + 0x05ac, 0x0005, 0x0062, 0x05d8, 0x05f1, 0x0604, 0x05b6, 0x061d, + 0x0002, 0x0a1c, 0x0a1f, 0x0001, 0x0062, 0x0636, 0x0001, 0x0062, + // Entry 45A40 - 45A7F + 0x0654, 0x0003, 0x0a26, 0x0a29, 0x0a30, 0x0001, 0x0062, 0x05ac, + 0x0005, 0x0062, 0x05d8, 0x05f1, 0x0604, 0x05b6, 0x061d, 0x0002, + 0x0a33, 0x0a36, 0x0001, 0x0062, 0x067d, 0x0001, 0x0062, 0x0692, + 0x0003, 0x0a3d, 0x0a40, 0x0a47, 0x0001, 0x0062, 0x05ac, 0x0005, + 0x0062, 0x05d8, 0x05f1, 0x0604, 0x05b6, 0x061d, 0x0002, 0x0a4a, + 0x0a4d, 0x0001, 0x0062, 0x067d, 0x0001, 0x0062, 0x0692, 0x0001, + 0x0a52, 0x0001, 0x0062, 0x06b5, 0x0003, 0x0000, 0x0a59, 0x0a5e, + 0x0003, 0x0062, 0x06da, 0x070e, 0x0736, 0x0002, 0x0a61, 0x0a64, + // Entry 45A80 - 45ABF + 0x0001, 0x0062, 0x0761, 0x0001, 0x0062, 0x07a9, 0x0003, 0x0000, + 0x0a6b, 0x0a70, 0x0003, 0x0062, 0x06da, 0x070e, 0x0736, 0x0002, + 0x0a73, 0x0a76, 0x0001, 0x0062, 0x0761, 0x0001, 0x0062, 0x07a9, + 0x0003, 0x0000, 0x0a7d, 0x0a82, 0x0003, 0x0062, 0x06da, 0x070e, + 0x0736, 0x0002, 0x0a85, 0x0a88, 0x0001, 0x0062, 0x0761, 0x0001, + 0x0062, 0x07a9, 0x0003, 0x0000, 0x0a8f, 0x0a94, 0x0003, 0x0062, + 0x0806, 0x082e, 0x084a, 0x0002, 0x0a97, 0x0a9a, 0x0001, 0x0062, + 0x0869, 0x0001, 0x0062, 0x0890, 0x0003, 0x0000, 0x0aa1, 0x0aa6, + // Entry 45AC0 - 45AFF + 0x0003, 0x0062, 0x0806, 0x082e, 0x084a, 0x0002, 0x0aa9, 0x0aac, + 0x0001, 0x0062, 0x08bc, 0x0001, 0x0062, 0x0890, 0x0003, 0x0000, + 0x0ab3, 0x0ab8, 0x0003, 0x0062, 0x08dd, 0x082e, 0x084a, 0x0002, + 0x0abb, 0x0abe, 0x0001, 0x0062, 0x08bc, 0x0001, 0x0062, 0x0890, + 0x0003, 0x0000, 0x0ac5, 0x0aca, 0x0003, 0x0062, 0x090b, 0x0933, + 0x094f, 0x0002, 0x0acd, 0x0ad0, 0x0001, 0x0062, 0x096e, 0x0001, + 0x0062, 0x0995, 0x0003, 0x0000, 0x0ad7, 0x0adc, 0x0003, 0x0062, + 0x090b, 0x0933, 0x094f, 0x0002, 0x0adf, 0x0ae2, 0x0001, 0x0062, + // Entry 45B00 - 45B3F + 0x09c1, 0x0001, 0x0062, 0x0995, 0x0003, 0x0000, 0x0ae9, 0x0aee, + 0x0003, 0x0062, 0x09e2, 0x0933, 0x094f, 0x0002, 0x0af1, 0x0af4, + 0x0001, 0x0062, 0x09c1, 0x0001, 0x0062, 0x0995, 0x0003, 0x0000, + 0x0afb, 0x0b00, 0x0003, 0x0062, 0x0a10, 0x0a2f, 0x0a42, 0x0002, + 0x0b03, 0x0b06, 0x0001, 0x0062, 0x0a58, 0x0001, 0x0062, 0x0a76, + 0x0003, 0x0000, 0x0b0d, 0x0b12, 0x0003, 0x0062, 0x0a10, 0x0a2f, + 0x0a42, 0x0002, 0x0b15, 0x0b18, 0x0001, 0x0062, 0x0a99, 0x0001, + 0x0062, 0x0a76, 0x0003, 0x0000, 0x0b1f, 0x0b24, 0x0003, 0x0062, + // Entry 45B40 - 45B7F + 0x0ab1, 0x0a2f, 0x0a42, 0x0002, 0x0b27, 0x0b2a, 0x0001, 0x0062, + 0x0a58, 0x0001, 0x0062, 0x0a76, 0x0003, 0x0000, 0x0b31, 0x0b36, + 0x0003, 0x0062, 0x0ad6, 0x0afb, 0x0b14, 0x0002, 0x0b39, 0x0b3c, + 0x0001, 0x0062, 0x0b30, 0x0001, 0x0062, 0x0b54, 0x0003, 0x0000, + 0x0b43, 0x0b48, 0x0003, 0x0062, 0x0ad6, 0x0afb, 0x0b14, 0x0002, + 0x0b4b, 0x0b4e, 0x0001, 0x0062, 0x0b7d, 0x0001, 0x0062, 0x0b54, + 0x0003, 0x0000, 0x0b55, 0x0b5a, 0x0003, 0x0062, 0x0b9b, 0x0afb, + 0x0b14, 0x0002, 0x0b5d, 0x0b60, 0x0001, 0x0062, 0x0b7d, 0x0001, + // Entry 45B80 - 45BBF + 0x0062, 0x0b54, 0x0003, 0x0000, 0x0b67, 0x0b6c, 0x0003, 0x0062, + 0x0bc6, 0x0beb, 0x0c04, 0x0002, 0x0b6f, 0x0b72, 0x0001, 0x0062, + 0x0c20, 0x0001, 0x0062, 0x0c44, 0x0003, 0x0000, 0x0b79, 0x0b7e, + 0x0003, 0x0062, 0x0bc6, 0x0beb, 0x0c04, 0x0002, 0x0b81, 0x0b84, + 0x0001, 0x0062, 0x0c6d, 0x0001, 0x0062, 0x0c44, 0x0003, 0x0000, + 0x0b8b, 0x0b90, 0x0003, 0x0062, 0x0c8b, 0x0beb, 0x0c04, 0x0002, + 0x0b93, 0x0b96, 0x0001, 0x0062, 0x0c6d, 0x0001, 0x0062, 0x0c44, + 0x0003, 0x0000, 0x0b9d, 0x0ba2, 0x0003, 0x0062, 0x0cb6, 0x0cdb, + // Entry 45BC0 - 45BFF + 0x0cf4, 0x0002, 0x0ba5, 0x0ba8, 0x0001, 0x0062, 0x0d10, 0x0001, + 0x0062, 0x0d34, 0x0003, 0x0000, 0x0baf, 0x0bb4, 0x0003, 0x0062, + 0x0cb6, 0x0cdb, 0x0cf4, 0x0002, 0x0bb7, 0x0bba, 0x0001, 0x0062, + 0x0d5d, 0x0001, 0x0062, 0x0d34, 0x0003, 0x0000, 0x0bc1, 0x0bc6, + 0x0003, 0x0062, 0x0d7b, 0x0cdb, 0x0cf4, 0x0002, 0x0bc9, 0x0bcc, + 0x0001, 0x0062, 0x0d5d, 0x0001, 0x0062, 0x0d34, 0x0001, 0x0bd1, + 0x0001, 0x0062, 0x0da6, 0x0003, 0x0bd8, 0x0bdb, 0x0bdf, 0x0001, + 0x0062, 0x0dbc, 0x0002, 0x0062, 0xffff, 0x0dd2, 0x0002, 0x0be2, + // Entry 45C00 - 45C3F + 0x0be5, 0x0001, 0x0062, 0x0df1, 0x0001, 0x0062, 0x0e1b, 0x0003, + 0x0bec, 0x0000, 0x0bef, 0x0001, 0x0062, 0x0e50, 0x0002, 0x0bf2, + 0x0bf5, 0x0001, 0x0062, 0x0e58, 0x0001, 0x0062, 0x0e6b, 0x0003, + 0x0bfc, 0x0000, 0x0bff, 0x0001, 0x0062, 0x0e50, 0x0002, 0x0c02, + 0x0c05, 0x0001, 0x0062, 0x0e58, 0x0001, 0x0062, 0x0e6b, 0x0003, + 0x0c0c, 0x0c0f, 0x0c13, 0x0001, 0x0062, 0x0e8d, 0x0002, 0x0062, + 0xffff, 0x0e9a, 0x0002, 0x0c16, 0x0c19, 0x0001, 0x0062, 0x0eb0, + 0x0001, 0x0062, 0x0ed1, 0x0003, 0x0c20, 0x0000, 0x0c23, 0x0001, + // Entry 45C40 - 45C7F + 0x0062, 0x0efd, 0x0002, 0x0c26, 0x0c29, 0x0001, 0x0062, 0x0f02, + 0x0001, 0x0062, 0x0f1a, 0x0003, 0x0c30, 0x0000, 0x0c33, 0x0001, + 0x0062, 0x0efd, 0x0002, 0x0c36, 0x0c39, 0x0001, 0x0062, 0x0f02, + 0x0001, 0x0062, 0x0f1a, 0x0003, 0x0c40, 0x0c43, 0x0c47, 0x0001, + 0x0062, 0x0f40, 0x0002, 0x0062, 0xffff, 0x0f53, 0x0002, 0x0c4a, + 0x0c4d, 0x0001, 0x0062, 0x0f66, 0x0001, 0x0062, 0x0f8d, 0x0003, + 0x0c54, 0x0000, 0x0c57, 0x0001, 0x0062, 0x0fbf, 0x0002, 0x0c5a, + 0x0c5d, 0x0001, 0x0062, 0x0fc6, 0x0001, 0x0062, 0x0fe4, 0x0003, + // Entry 45C80 - 45CBF + 0x0c64, 0x0000, 0x0c67, 0x0001, 0x0062, 0x0fbf, 0x0002, 0x0c6a, + 0x0c6d, 0x0001, 0x0062, 0x0fc6, 0x0001, 0x0062, 0x0fe4, 0x0001, + 0x0c72, 0x0001, 0x0062, 0x1010, 0x0004, 0x0c7a, 0x0c7f, 0x0c84, + 0x0c93, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0062, + 0x1026, 0x1036, 0x1058, 0x0002, 0x0000, 0x0c87, 0x0003, 0x0000, + 0x0c8e, 0x0c8b, 0x0001, 0x0062, 0x107d, 0x0003, 0x0062, 0xffff, + 0x10b1, 0x10e5, 0x0002, 0x0000, 0x0c96, 0x0003, 0x0c9a, 0x0dda, + 0x0d3a, 0x009e, 0x0062, 0xffff, 0xffff, 0xffff, 0xffff, 0x1261, + // Entry 45CC0 - 45CFF + 0x1330, 0x1456, 0x14e6, 0x15f1, 0x1720, 0x1834, 0x193f, 0x19d8, + 0x1b7c, 0x1c00, 0x1cb4, 0x1dd4, 0x1e7f, 0x1f27, 0x2029, 0x2185, + 0x2299, 0x23a4, 0x2461, 0x24f1, 0xffff, 0xffff, 0x25d4, 0xffff, + 0x26b0, 0xffff, 0x2796, 0x2811, 0x2886, 0x28ef, 0xffff, 0xffff, + 0x29f9, 0x2a9b, 0x2b5e, 0xffff, 0xffff, 0xffff, 0x2c72, 0xffff, + 0x2d57, 0x2df9, 0xffff, 0x2efc, 0x2fb9, 0x30ac, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3206, 0xffff, 0xffff, 0x3313, 0x33fd, 0xffff, + 0xffff, 0x3532, 0x3601, 0x3688, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 45D00 - 45D3F + 0xffff, 0xffff, 0x386b, 0x38f8, 0x39a3, 0x3a39, 0x3ac6, 0xffff, + 0xffff, 0x3c23, 0xffff, 0x3cc3, 0xffff, 0xffff, 0x3df2, 0xffff, + 0x3f49, 0xffff, 0xffff, 0xffff, 0xffff, 0x408b, 0xffff, 0x4158, + 0x4287, 0x435c, 0x4410, 0xffff, 0xffff, 0xffff, 0x44e2, 0x45a8, + 0x4650, 0xffff, 0xffff, 0x4766, 0x48ae, 0x4962, 0x49e9, 0xffff, + 0xffff, 0x4acf, 0x4b68, 0x4bdd, 0xffff, 0x4cc2, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x4f2e, 0x4fbe, 0x5045, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x51db, 0xffff, 0xffff, + // Entry 45D40 - 45D7F + 0x529a, 0xffff, 0x532e, 0xffff, 0x541c, 0x54b5, 0x5569, 0xffff, + 0x562d, 0x56e1, 0xffff, 0xffff, 0xffff, 0x57fe, 0x5897, 0xffff, + 0xffff, 0x1122, 0x13c6, 0x1a5c, 0x1aec, 0xffff, 0xffff, 0x3e91, + 0x4e2d, 0x009e, 0x0062, 0x11a0, 0x11ce, 0x11fc, 0x1236, 0x1298, + 0x1352, 0x1478, 0x1532, 0x1649, 0x176f, 0x1880, 0x1964, 0x19f7, + 0x1b9b, 0x1c2e, 0x1d00, 0x1dff, 0x1ea7, 0x1f5e, 0x2090, 0x21c8, + 0x22d9, 0x23d5, 0x2483, 0x2519, 0x2593, 0x25af, 0x25fc, 0x2676, + 0x26d8, 0x2771, 0x27b2, 0x282a, 0x289c, 0x2917, 0x2991, 0x29c5, + // Entry 45D80 - 45DBF + 0x2a21, 0x2ac9, 0x2b7a, 0x2be2, 0x2bfe, 0x2c3b, 0x2ca3, 0x2d2f, + 0x2d7f, 0x2e2d, 0x2ebf, 0x2f2d, 0x2ffc, 0x30c5, 0x3121, 0x3152, + 0x31b6, 0x31de, 0x322b, 0x329f, 0x32df, 0x3353, 0x343a, 0x34f4, + 0x3510, 0x356a, 0x3620, 0x36a4, 0x3706, 0x3728, 0x3762, 0x3787, + 0x37ca, 0x381c, 0x388d, 0x3923, 0x39c8, 0x3a5b, 0x3aeb, 0x3ba6, + 0x3be6, 0x3c42, 0x3ca7, 0x3cf1, 0x3d77, 0x3dc1, 0x3e1a, 0x3f18, + 0x3f6b, 0x3fd9, 0x3ffe, 0x4023, 0x404b, 0x40b3, 0x4136, 0x41b0, + 0x42c1, 0x438a, 0x442c, 0x448e, 0x44a7, 0x44c6, 0x4516, 0x45d3, + // Entry 45DC0 - 45DFF + 0x4684, 0x4713, 0x4732, 0x47a9, 0x48dc, 0x4981, 0x4a0e, 0x4a82, + 0x4a9e, 0x4af4, 0x4b81, 0x4c08, 0x4c88, 0x4d08, 0x4dc4, 0x4de9, + 0x4e08, 0x4eea, 0x4f0f, 0x4f50, 0x4fdd, 0x5061, 0x50c3, 0x50e5, + 0x510a, 0x5144, 0x5178, 0x519d, 0x51bc, 0x51f4, 0x524d, 0x5278, + 0x52b6, 0x5318, 0x5365, 0x53fd, 0x5441, 0x54e3, 0x558e, 0x5602, + 0x565b, 0x5709, 0x5783, 0x57a2, 0x57c4, 0x5823, 0x58ce, 0x34de, + 0x4862, 0x113e, 0x13e8, 0x1a7e, 0x1b0e, 0x2752, 0x3da5, 0x3eb0, + 0x4e5e, 0x009e, 0x0062, 0xffff, 0xffff, 0xffff, 0xffff, 0x12e4, + // Entry 45E00 - 45E3F + 0x1389, 0x14af, 0x1593, 0x16b6, 0x17d3, 0x18e1, 0x199e, 0x1a2b, + 0x1bcf, 0x1c71, 0x1d6a, 0x1e3f, 0x1ee4, 0x1fc5, 0x210c, 0x2232, + 0x2340, 0x241b, 0x24ba, 0x2556, 0xffff, 0xffff, 0x2639, 0xffff, + 0x2715, 0xffff, 0x27e3, 0x2858, 0x28c7, 0x2954, 0xffff, 0xffff, + 0x2a5e, 0x2b0c, 0x2bab, 0xffff, 0xffff, 0xffff, 0x2ce9, 0xffff, + 0x2dbc, 0x2e76, 0xffff, 0x2f73, 0x3054, 0x30f3, 0xffff, 0xffff, + 0xffff, 0xffff, 0x3265, 0xffff, 0xffff, 0x33a8, 0x348c, 0xffff, + 0xffff, 0x35b7, 0x3654, 0x36d5, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 45E40 - 45E7F + 0xffff, 0xffff, 0x38c4, 0x3963, 0x3a02, 0x3a92, 0x3b3e, 0xffff, + 0xffff, 0x3c76, 0xffff, 0x3d34, 0xffff, 0xffff, 0x3e57, 0xffff, + 0x3fa2, 0xffff, 0xffff, 0xffff, 0xffff, 0x40f0, 0xffff, 0x421d, + 0x4310, 0x43cd, 0x445d, 0xffff, 0xffff, 0xffff, 0x455f, 0x4613, + 0x46cd, 0xffff, 0xffff, 0x4801, 0x491f, 0x49b5, 0x4a48, 0xffff, + 0xffff, 0x4b2e, 0x4baf, 0x4c48, 0xffff, 0x4d63, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x4f87, 0x5011, 0x5092, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5222, 0xffff, 0xffff, + // Entry 45E80 - 45EBF + 0x52e7, 0xffff, 0x53b1, 0xffff, 0x547b, 0x5526, 0x55c8, 0xffff, + 0x569e, 0x5746, 0xffff, 0xffff, 0xffff, 0x585d, 0x591a, 0xffff, + 0xffff, 0x116f, 0x141f, 0x1ab5, 0x1b45, 0xffff, 0xffff, 0x3ee4, + 0x4ea4, 0x0003, 0x0004, 0x0000, 0x0186, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, + 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0000, 0x0489, 0x0001, + 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0001, 0x001c, 0x14e1, + // Entry 45EC0 - 45EFF + 0x0008, 0x0030, 0x0095, 0x00ec, 0x0121, 0x0139, 0x0153, 0x0164, + 0x0175, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, 0x0055, + 0x000d, 0x0063, 0xffff, 0x0000, 0x0007, 0x000e, 0x0015, 0x001c, + 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, 0x004d, 0x000d, + 0x0063, 0xffff, 0x0054, 0x0058, 0x005c, 0x0060, 0x0064, 0x0068, + 0x006c, 0x0070, 0x005c, 0x0054, 0x0074, 0x0078, 0x000d, 0x0063, + 0xffff, 0x0000, 0x007c, 0x0089, 0x0096, 0x00a3, 0x0023, 0x00b0, + 0x00ba, 0x00c4, 0x00d4, 0x00e1, 0x00eb, 0x0003, 0x0068, 0x0077, + // Entry 45F00 - 45F3F + 0x0086, 0x000d, 0x0063, 0xffff, 0x0000, 0x0007, 0x000e, 0x0015, + 0x001c, 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, 0x004d, + 0x000d, 0x0063, 0xffff, 0x0054, 0x0058, 0x005c, 0x0060, 0x0064, + 0x0068, 0x006c, 0x0070, 0x005c, 0x0054, 0x0074, 0x0078, 0x000d, + 0x0063, 0xffff, 0x0000, 0x007c, 0x0089, 0x0096, 0x00a3, 0x0023, + 0x00b0, 0x00ba, 0x00c4, 0x00d4, 0x00e1, 0x00eb, 0x0002, 0x0098, + 0x00c2, 0x0005, 0x009e, 0x00a7, 0x00b9, 0x0000, 0x00b0, 0x0007, + 0x0063, 0x00f8, 0x00ff, 0x0106, 0x010d, 0x0114, 0x011b, 0x0122, + // Entry 45F40 - 45F7F + 0x0007, 0x0063, 0x0068, 0x0068, 0x0068, 0x0129, 0x006c, 0x012d, + 0x0131, 0x0007, 0x0063, 0x00f8, 0x00ff, 0x0106, 0x010d, 0x0114, + 0x011b, 0x0122, 0x0007, 0x0063, 0x0135, 0x0142, 0x014c, 0x0156, + 0x0160, 0x016a, 0x0174, 0x0005, 0x00c8, 0x00d1, 0x00e3, 0x0000, + 0x00da, 0x0007, 0x0063, 0x00f8, 0x00ff, 0x0106, 0x010d, 0x0114, + 0x011b, 0x0122, 0x0007, 0x0063, 0x0068, 0x0068, 0x017e, 0x0129, + 0x006c, 0x012d, 0x0131, 0x0007, 0x0063, 0x00f8, 0x00ff, 0x0106, + 0x010d, 0x0114, 0x011b, 0x0122, 0x0007, 0x0063, 0x0135, 0x0142, + // Entry 45F80 - 45FBF + 0x0182, 0x0156, 0x018c, 0x016a, 0x0174, 0x0002, 0x00ef, 0x0108, + 0x0003, 0x00f3, 0x00fa, 0x0101, 0x0005, 0x0063, 0xffff, 0x0196, + 0x019b, 0x01a0, 0x01a5, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x01aa, 0x01c1, 0x01d8, + 0x01ef, 0x0003, 0x010c, 0x0113, 0x011a, 0x0005, 0x0063, 0xffff, + 0x0196, 0x019b, 0x01a0, 0x01a5, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x01aa, 0x01c1, + 0x01d8, 0x01ef, 0x0001, 0x0123, 0x0003, 0x0127, 0x0000, 0x0130, + // Entry 45FC0 - 45FFF + 0x0002, 0x012a, 0x012d, 0x0001, 0x0063, 0x0206, 0x0001, 0x0063, + 0x021a, 0x0002, 0x0133, 0x0136, 0x0001, 0x0063, 0x0206, 0x0001, + 0x0063, 0x021a, 0x0003, 0x0148, 0x0000, 0x013d, 0x0002, 0x0140, + 0x0144, 0x0002, 0x0002, 0x0505, 0x4c2e, 0x0002, 0x0063, 0x022e, + 0x023a, 0x0002, 0x014b, 0x014f, 0x0002, 0x0002, 0x0505, 0x0847, + 0x0002, 0x0063, 0x022e, 0x023a, 0x0004, 0x0161, 0x015b, 0x0158, + 0x015e, 0x0001, 0x0063, 0x0246, 0x0001, 0x0001, 0x002d, 0x0001, + 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, 0x0004, 0x0172, 0x016c, + // Entry 46000 - 4603F + 0x0169, 0x016f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0183, + 0x017d, 0x017a, 0x0180, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0004, + 0x018b, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x1dc7, 0x40b8, + 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x001b, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0014, 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x0018, + // Entry 46040 - 4607F + 0x0001, 0x0063, 0x0267, 0x0005, 0x0000, 0x0021, 0x0000, 0x0000, + 0x0030, 0x0002, 0x0000, 0x0024, 0x0002, 0x0000, 0x0027, 0x0007, + 0x0063, 0x0068, 0x0068, 0x0068, 0x0129, 0x006c, 0x012d, 0x0131, + 0x0003, 0x0000, 0x0000, 0x0034, 0x0002, 0x0037, 0x003a, 0x0001, + 0x0002, 0x081c, 0x0002, 0x0063, 0x0288, 0x02ac, 0x0003, 0x0004, + 0x00e4, 0x02fd, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000d, 0x005d, 0x0008, 0x0000, 0x0016, 0x0000, 0x0000, + 0x0000, 0x003b, 0x004c, 0x0000, 0x0002, 0x0019, 0x002f, 0x0003, + // Entry 46080 - 460BF + 0x001d, 0x0000, 0x0026, 0x0007, 0x0063, 0x02d0, 0x02d4, 0x02d7, + 0x02da, 0x02de, 0x02e1, 0x02e4, 0x0007, 0x0063, 0x02e8, 0x02f3, + 0x02fc, 0x0305, 0x0310, 0x031a, 0x031f, 0x0002, 0x0000, 0x0032, + 0x0007, 0x0063, 0x0326, 0x0329, 0x032b, 0x032d, 0x0330, 0x0332, + 0x0334, 0x0004, 0x0049, 0x0043, 0x0040, 0x0046, 0x0001, 0x0063, + 0x0337, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x001e, 0x1a8e, 0x0004, 0x005a, 0x0054, 0x0051, 0x0057, 0x0001, + 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, + // Entry 460C0 - 460FF + 0x0001, 0x0000, 0x0546, 0x0008, 0x0066, 0x009d, 0x0000, 0x0000, + 0x0000, 0x00c2, 0x00d3, 0x0000, 0x0002, 0x0069, 0x008b, 0x0003, + 0x006d, 0x0000, 0x007c, 0x000d, 0x0063, 0xffff, 0x0347, 0x034c, + 0x0350, 0x0355, 0x0359, 0x035e, 0x0364, 0x036a, 0x036e, 0x0372, + 0x0376, 0x037b, 0x000d, 0x0063, 0xffff, 0x037f, 0x0387, 0x0350, + 0x038e, 0x0359, 0x035e, 0x0364, 0x0394, 0x039b, 0x03a5, 0x03ae, + 0x03b6, 0x0002, 0x0000, 0x008e, 0x000d, 0x0063, 0xffff, 0x0326, + 0x03bd, 0x03bf, 0x0332, 0x03bf, 0x03c1, 0x03c1, 0x0332, 0x032b, + // Entry 46100 - 4613F + 0x03c3, 0x03c5, 0x0329, 0x0002, 0x00a0, 0x00b6, 0x0003, 0x00a4, + 0x0000, 0x00ad, 0x0007, 0x0063, 0x02d0, 0x02d4, 0x02d7, 0x02da, + 0x02de, 0x02e1, 0x02e4, 0x0007, 0x0063, 0x02e8, 0x02f3, 0x02fc, + 0x0305, 0x0310, 0x031a, 0x031f, 0x0002, 0x0000, 0x00b9, 0x0007, + 0x0063, 0x0326, 0x0329, 0x032b, 0x032d, 0x0330, 0x0332, 0x0334, + 0x0004, 0x00d0, 0x00ca, 0x00c7, 0x00cd, 0x0001, 0x0063, 0x03c7, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0016, + 0x0470, 0x0004, 0x00e1, 0x00db, 0x00d8, 0x00de, 0x0001, 0x0000, + // Entry 46140 - 4617F + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0040, 0x0125, 0x0000, 0x0000, 0x012a, 0x0141, + 0x0153, 0x0165, 0x0177, 0x0189, 0x019b, 0x01b2, 0x01c4, 0x01d6, + 0x01ed, 0x01ff, 0x0000, 0x0000, 0x0000, 0x0211, 0x0228, 0x023a, + 0x0000, 0x0000, 0x0000, 0x024c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0251, + // Entry 46180 - 461BF + 0x0000, 0x0256, 0x0268, 0x027a, 0x028c, 0x029e, 0x02b0, 0x02c2, + 0x02d4, 0x02e6, 0x02f8, 0x0001, 0x0127, 0x0001, 0x0063, 0x03d5, + 0x0003, 0x012e, 0x0131, 0x0136, 0x0001, 0x0063, 0x03dd, 0x0003, + 0x0063, 0x03e2, 0x03ee, 0x03f7, 0x0002, 0x0139, 0x013d, 0x0002, + 0x0063, 0x0403, 0x0403, 0x0002, 0x0063, 0x040f, 0x040f, 0x0003, + 0x0145, 0x0000, 0x0148, 0x0001, 0x0063, 0x041d, 0x0002, 0x014b, + 0x014f, 0x0002, 0x0063, 0x0421, 0x0421, 0x0002, 0x0063, 0x042c, + 0x042c, 0x0003, 0x0157, 0x0000, 0x015a, 0x0001, 0x0063, 0x041d, + // Entry 461C0 - 461FF + 0x0002, 0x015d, 0x0161, 0x0002, 0x0063, 0x0421, 0x0421, 0x0002, + 0x0063, 0x042c, 0x042c, 0x0003, 0x0169, 0x0000, 0x016c, 0x0001, + 0x0063, 0x0438, 0x0002, 0x016f, 0x0173, 0x0002, 0x0063, 0x0441, + 0x0441, 0x0002, 0x0063, 0x0452, 0x0452, 0x0003, 0x017b, 0x0000, + 0x017e, 0x0001, 0x0063, 0x0465, 0x0002, 0x0181, 0x0185, 0x0002, + 0x0063, 0x046c, 0x046c, 0x0002, 0x0063, 0x047a, 0x047a, 0x0003, + 0x018d, 0x0000, 0x0190, 0x0001, 0x0063, 0x0465, 0x0002, 0x0193, + 0x0197, 0x0002, 0x0063, 0x048a, 0x048a, 0x0002, 0x0063, 0x0495, + // Entry 46200 - 4623F + 0x0495, 0x0003, 0x019f, 0x01a2, 0x01a7, 0x0001, 0x0063, 0x04a2, + 0x0003, 0x0063, 0x04a6, 0x04b1, 0x04b9, 0x0002, 0x01aa, 0x01ae, + 0x0002, 0x0063, 0x04c4, 0x04c4, 0x0002, 0x0063, 0x04cf, 0x04cf, + 0x0003, 0x01b6, 0x0000, 0x01b9, 0x0001, 0x0063, 0x04a2, 0x0002, + 0x01bc, 0x01c0, 0x0002, 0x0063, 0x04c4, 0x04c4, 0x0002, 0x0063, + 0x04cf, 0x04cf, 0x0003, 0x01c8, 0x0000, 0x01cb, 0x0001, 0x0063, + 0x04a2, 0x0002, 0x01ce, 0x01d2, 0x0002, 0x0063, 0x04c4, 0x04c4, + 0x0002, 0x0063, 0x04cf, 0x04cf, 0x0003, 0x01da, 0x01dd, 0x01e2, + // Entry 46240 - 4627F + 0x0001, 0x0063, 0x04dc, 0x0003, 0x0063, 0x04e2, 0x04ef, 0x04f9, + 0x0002, 0x01e5, 0x01e9, 0x0002, 0x0063, 0x0506, 0x0506, 0x0002, + 0x0063, 0x0513, 0x0513, 0x0003, 0x01f1, 0x0000, 0x01f4, 0x0001, + 0x0063, 0x0522, 0x0002, 0x01f7, 0x01fb, 0x0002, 0x0063, 0x0527, + 0x0527, 0x0002, 0x0063, 0x0533, 0x0533, 0x0003, 0x0203, 0x0000, + 0x0206, 0x0001, 0x0063, 0x0522, 0x0002, 0x0209, 0x020d, 0x0002, + 0x0063, 0x0541, 0x0541, 0x0002, 0x0063, 0x054b, 0x054b, 0x0003, + 0x0215, 0x0218, 0x021d, 0x0001, 0x0063, 0x0557, 0x0003, 0x0063, + // Entry 46280 - 462BF + 0x055c, 0x0563, 0x056c, 0x0002, 0x0220, 0x0224, 0x0002, 0x0063, + 0x0572, 0x0572, 0x0002, 0x0063, 0x057e, 0x057e, 0x0003, 0x022c, + 0x0000, 0x022f, 0x0001, 0x0063, 0x0557, 0x0002, 0x0232, 0x0236, + 0x0002, 0x0063, 0x058c, 0x058c, 0x0002, 0x0063, 0x0596, 0x0596, + 0x0003, 0x023e, 0x0000, 0x0241, 0x0001, 0x0063, 0x0557, 0x0002, + 0x0244, 0x0248, 0x0002, 0x0063, 0x058c, 0x058c, 0x0002, 0x0063, + 0x0596, 0x0596, 0x0001, 0x024e, 0x0001, 0x0063, 0x05a2, 0x0001, + 0x0253, 0x0001, 0x0063, 0x05b3, 0x0003, 0x025a, 0x0000, 0x025d, + // Entry 462C0 - 462FF + 0x0001, 0x0063, 0x05c2, 0x0002, 0x0260, 0x0264, 0x0002, 0x0063, + 0x05c8, 0x05c8, 0x0002, 0x0063, 0x05d5, 0x05d5, 0x0003, 0x026c, + 0x0000, 0x026f, 0x0001, 0x0063, 0x05e4, 0x0002, 0x0272, 0x0276, + 0x0002, 0x0063, 0x05e9, 0x05e9, 0x0002, 0x0063, 0x05f5, 0x05f5, + 0x0003, 0x027e, 0x0000, 0x0281, 0x0001, 0x0063, 0x05e4, 0x0002, + 0x0284, 0x0288, 0x0002, 0x0063, 0x05e9, 0x05e9, 0x0002, 0x0063, + 0x05f5, 0x05f5, 0x0003, 0x0290, 0x0000, 0x0293, 0x0001, 0x0010, + 0x0b77, 0x0002, 0x0296, 0x029a, 0x0002, 0x0063, 0x0603, 0x0603, + // Entry 46300 - 4633F + 0x0002, 0x0063, 0x0610, 0x0610, 0x0003, 0x02a2, 0x0000, 0x02a5, + 0x0001, 0x0001, 0x075a, 0x0002, 0x02a8, 0x02ac, 0x0002, 0x0063, + 0x061f, 0x061f, 0x0002, 0x0063, 0x062b, 0x062b, 0x0003, 0x02b4, + 0x0000, 0x02b7, 0x0001, 0x0001, 0x075a, 0x0002, 0x02ba, 0x02be, + 0x0002, 0x0063, 0x061f, 0x061f, 0x0002, 0x0063, 0x062b, 0x062b, + 0x0003, 0x02c6, 0x0000, 0x02c9, 0x0001, 0x0063, 0x0639, 0x0002, + 0x02cc, 0x02d0, 0x0002, 0x0063, 0x0640, 0x0640, 0x0002, 0x0063, + 0x064e, 0x064e, 0x0003, 0x02d8, 0x0000, 0x02db, 0x0001, 0x0001, + // Entry 46340 - 4637F + 0x07d3, 0x0002, 0x02de, 0x02e2, 0x0002, 0x0063, 0x065e, 0x065e, + 0x0002, 0x0063, 0x066a, 0x066a, 0x0003, 0x02ea, 0x0000, 0x02ed, + 0x0001, 0x0001, 0x07d3, 0x0002, 0x02f0, 0x02f4, 0x0002, 0x0063, + 0x065e, 0x065e, 0x0002, 0x0063, 0x066a, 0x066a, 0x0001, 0x02fa, + 0x0001, 0x0063, 0x0678, 0x0004, 0x0302, 0x0307, 0x030c, 0x0317, + 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0063, 0x0689, + 0x0693, 0x06a5, 0x0002, 0x0000, 0x030f, 0x0002, 0x0000, 0x0312, + 0x0003, 0x0063, 0xffff, 0x06b8, 0x06d8, 0x0002, 0x04e0, 0x031a, + // Entry 46380 - 463BF + 0x0003, 0x03b4, 0x044a, 0x031e, 0x0094, 0x0063, 0x06f2, 0x06fd, + 0x070c, 0x071d, 0x074d, 0x0795, 0x07cd, 0x080c, 0x085a, 0x08ad, + 0x0900, 0xffff, 0x093e, 0x0974, 0x09b9, 0x09fe, 0x0a4e, 0x0a8b, + 0x0ad0, 0x0b3a, 0x0bb7, 0x0c16, 0x0c6b, 0x0cad, 0x0cef, 0x0d22, + 0x0d28, 0x0d3d, 0x0d70, 0x0d8e, 0x0dc1, 0x0dd1, 0x0e02, 0x0e32, + 0x0e69, 0x0e9e, 0x0eac, 0x0ec5, 0x0f05, 0x0f41, 0x0f68, 0x0f70, + 0x0f82, 0x0f9e, 0x0fd3, 0x0fec, 0x103e, 0x1081, 0x10ac, 0x1100, + 0x1144, 0x116b, 0x117a, 0x1199, 0x11ab, 0x11bc, 0x11eb, 0x11fc, + // Entry 463C0 - 463FF + 0x1230, 0x1292, 0x12dd, 0x12f9, 0x130e, 0x134d, 0x137f, 0x13a6, + 0x13b0, 0x13bd, 0x13c9, 0x13dd, 0x13f3, 0x1410, 0x1443, 0x1479, + 0x14b3, 0xffff, 0x14e6, 0x14fb, 0x1518, 0x1545, 0x155b, 0x1592, + 0x159d, 0x15b4, 0x15e3, 0x15f4, 0x1621, 0x162d, 0x1637, 0x1646, + 0x1660, 0x1691, 0x16aa, 0x1702, 0x1758, 0x1792, 0x17bd, 0x17c5, + 0x17cb, 0x17e3, 0x1835, 0x1882, 0x18bb, 0x18c0, 0x18dd, 0x1930, + 0x1969, 0x199a, 0x19cb, 0x19d1, 0x19f2, 0x1a28, 0x1a5b, 0x1a90, + 0x1ab4, 0x1afb, 0x1b03, 0xffff, 0x1b0a, 0x1b15, 0x1b24, 0xffff, + // Entry 46400 - 4643F + 0x1b57, 0x1b80, 0x1b91, 0x1ba9, 0x1bb9, 0x1bcc, 0x1bd4, 0x1bdb, + 0x1bec, 0x1c1b, 0x1c27, 0x1c35, 0x1c5e, 0x1c72, 0x1cb4, 0x1cc4, + 0x1cff, 0x1d3c, 0x1d69, 0x1d7f, 0x1dbe, 0x1def, 0x1df6, 0x1e02, + 0x1e1c, 0x1e5a, 0x0094, 0x0063, 0xffff, 0xffff, 0xffff, 0xffff, + 0x073c, 0x078c, 0x07c4, 0x07fc, 0x0849, 0x0899, 0x08f2, 0xffff, + 0x0939, 0x0965, 0x09af, 0x09ea, 0x0a43, 0x0a81, 0x0abc, 0x0b15, + 0x0ba1, 0x0c00, 0x0c5f, 0x0ca0, 0x0ce4, 0xffff, 0xffff, 0x0d32, + 0xffff, 0x0d83, 0xffff, 0x0dca, 0x0dfc, 0x0e2b, 0x0e5d, 0xffff, + // Entry 46440 - 4647F + 0xffff, 0x0eba, 0x0ef8, 0x0f3c, 0xffff, 0xffff, 0xffff, 0x0f92, + 0xffff, 0x0fdb, 0x102b, 0xffff, 0x1099, 0x10ef, 0x113f, 0xffff, + 0xffff, 0xffff, 0xffff, 0x11b3, 0xffff, 0xffff, 0x1219, 0x127b, + 0xffff, 0xffff, 0x1301, 0x1345, 0x137a, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1409, 0x143b, 0x1470, 0x14a8, 0xffff, + 0xffff, 0xffff, 0x1510, 0xffff, 0x154e, 0xffff, 0xffff, 0x15ab, + 0xffff, 0x15ec, 0xffff, 0xffff, 0xffff, 0xffff, 0x1656, 0xffff, + 0x1698, 0x16eb, 0x174d, 0x178b, 0xffff, 0xffff, 0xffff, 0x17d1, + // Entry 46480 - 464BF + 0x1824, 0x1874, 0xffff, 0xffff, 0x18c8, 0x1924, 0x1964, 0x1990, + 0xffff, 0xffff, 0x19e8, 0x1a23, 0x1a4f, 0xffff, 0x1a9f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1b1c, 0xffff, 0x1b51, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1be3, 0xffff, + 0xffff, 0x1c2f, 0xffff, 0x1c64, 0xffff, 0x1cbb, 0x1cf3, 0x1d34, + 0xffff, 0x1d73, 0x1db4, 0xffff, 0xffff, 0xffff, 0x1e13, 0x1e4b, + 0x0094, 0x0063, 0xffff, 0xffff, 0xffff, 0xffff, 0x076d, 0x07ad, + 0x07e5, 0x082b, 0x087a, 0x08d0, 0x091d, 0xffff, 0x0952, 0x0992, + // Entry 464C0 - 464FF + 0x09d2, 0x0a21, 0x0a68, 0x0aa4, 0x0af3, 0x0b6e, 0x0bdc, 0x0c3b, + 0x0c86, 0x0cc9, 0x0d09, 0xffff, 0xffff, 0x0d57, 0xffff, 0x0da8, + 0xffff, 0x0de7, 0x0e17, 0x0e48, 0x0e84, 0xffff, 0xffff, 0x0edf, + 0x0f21, 0x0f55, 0xffff, 0xffff, 0xffff, 0x0fb9, 0xffff, 0x100c, + 0x1060, 0xffff, 0x10ce, 0x1120, 0x1158, 0xffff, 0xffff, 0xffff, + 0xffff, 0x11d4, 0xffff, 0xffff, 0x1256, 0x12b8, 0xffff, 0xffff, + 0x132a, 0x1364, 0x1393, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1426, 0x145a, 0x1491, 0x14cd, 0xffff, 0xffff, 0xffff, + // Entry 46500 - 4653F + 0x152f, 0xffff, 0x1577, 0xffff, 0xffff, 0x15cc, 0xffff, 0x160b, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1679, 0xffff, 0x16cb, 0x1728, + 0x1772, 0x17a8, 0xffff, 0xffff, 0xffff, 0x1804, 0x1855, 0x189f, + 0xffff, 0xffff, 0x1901, 0x194b, 0x197d, 0x19b3, 0xffff, 0xffff, + 0x1a0b, 0x1a3c, 0x1a76, 0xffff, 0x1ad8, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1b3b, 0xffff, 0x1b6c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1c04, 0xffff, 0xffff, 0x1c4a, + 0xffff, 0x1c8f, 0xffff, 0x1cdc, 0x1d1a, 0x1d53, 0xffff, 0x1d9a, + // Entry 46540 - 4657F + 0x1dd7, 0xffff, 0xffff, 0xffff, 0x1e34, 0x1e78, 0x0003, 0x04e4, + 0x05f8, 0x056e, 0x0088, 0x0063, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 46580 - 465BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 465C0 - 465FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1cab, 0x0088, 0x0063, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 46600 - 4663F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 46640 - 4667F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cab, 0x0088, 0x0063, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 46680 - 466BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 466C0 - 466FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1caf, + 0x0003, 0x0004, 0x01bb, 0x0583, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, + // Entry 46700 - 4673F + 0x001e, 0x001b, 0x0021, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, 0x0827, 0x0004, + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, 0x0188, 0x0199, + 0x01aa, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, + 0x000d, 0x0063, 0xffff, 0x1e95, 0x1e9a, 0x1e9f, 0x1ea5, 0x1eab, + 0x1eaf, 0x1eb3, 0x1eb7, 0x1ebd, 0x1ec1, 0x1ec7, 0x1ecc, 0x000d, + // Entry 46740 - 4677F + 0x0063, 0xffff, 0x032b, 0x03bd, 0x03bf, 0x1ed1, 0x03bf, 0x032b, + 0x032b, 0x0332, 0x032b, 0x03c3, 0x03c5, 0x1ed3, 0x000d, 0x0063, + 0xffff, 0x1ed5, 0x1ede, 0x1ee7, 0x1eef, 0x1eab, 0x1ef9, 0x1efe, + 0x1f05, 0x1f0e, 0x1f17, 0x1f21, 0x1f29, 0x0003, 0x0079, 0x0088, + 0x0097, 0x000d, 0x0063, 0xffff, 0x1e95, 0x1e9a, 0x1e9f, 0x1ea5, + 0x1eab, 0x1eaf, 0x1eb3, 0x1eb7, 0x1ebd, 0x1ec1, 0x1ec7, 0x1ecc, + 0x000d, 0x0063, 0xffff, 0x032b, 0x03bd, 0x03bf, 0x1ed1, 0x03bf, + 0x032b, 0x032b, 0x0332, 0x032b, 0x03c3, 0x03c5, 0x1ed3, 0x000d, + // Entry 46780 - 467BF + 0x0063, 0xffff, 0x1ed5, 0x1ede, 0x1ee7, 0x1eef, 0x1eab, 0x1ef9, + 0x1efe, 0x1f05, 0x1f0e, 0x1f17, 0x1f21, 0x1f29, 0x0002, 0x00a9, + 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, + 0x0063, 0x1f31, 0x1f36, 0x1f3b, 0x1f40, 0x1f44, 0x1f4a, 0x1f4e, + 0x0007, 0x0063, 0x032b, 0x03bf, 0x1ed3, 0x0330, 0x1ed3, 0x03bd, + 0x1ed3, 0x0007, 0x0063, 0x1f31, 0x1f36, 0x1f3b, 0x1f40, 0x1f44, + 0x1f4a, 0x1f4e, 0x0007, 0x0063, 0x1f52, 0x1f5a, 0x1f62, 0x1f6a, + 0x1f73, 0x1f81, 0x1f89, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, + // Entry 467C0 - 467FF + 0x00eb, 0x0007, 0x0063, 0x1f31, 0x1f36, 0x1f3b, 0x1f40, 0x1f44, + 0x1f4a, 0x1f4e, 0x0007, 0x0063, 0x032b, 0x03bf, 0x1ed3, 0x0330, + 0x1ed3, 0x03bd, 0x1ed3, 0x0007, 0x0063, 0x1f31, 0x1f36, 0x1f3b, + 0x1f40, 0x1f44, 0x1f4a, 0x1f4e, 0x0007, 0x0063, 0x1f52, 0x1f5a, + 0x1f62, 0x1f6a, 0x1f73, 0x1f81, 0x1f89, 0x0002, 0x0100, 0x0119, + 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0000, 0xffff, 0x1f17, + 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x1f92, 0x1fa1, 0x1faa, + // Entry 46800 - 4683F + 0x1fb5, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x1fbf, 0x1fc7, + 0x1fcf, 0x1fd7, 0x0002, 0x0135, 0x0154, 0x0003, 0x0139, 0x0142, + 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x0145, 0x0148, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0002, 0x014e, 0x0151, 0x0001, 0x0063, + 0x1fdf, 0x0001, 0x0063, 0x1fea, 0x0003, 0x0158, 0x0161, 0x016a, + // Entry 46840 - 4687F + 0x0002, 0x015b, 0x015e, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, + 0x04f2, 0x0002, 0x0164, 0x0167, 0x0001, 0x0000, 0x04ef, 0x0001, + 0x0000, 0x04f2, 0x0002, 0x016d, 0x0170, 0x0001, 0x0063, 0x1ff1, + 0x0001, 0x0063, 0x1ff4, 0x0003, 0x0182, 0x0000, 0x0177, 0x0002, + 0x017a, 0x017e, 0x0002, 0x0064, 0x0000, 0x0009, 0x0002, 0x0005, + 0x076d, 0x24e5, 0x0001, 0x0184, 0x0002, 0x0005, 0x076d, 0x24e5, + 0x0004, 0x0196, 0x0190, 0x018d, 0x0193, 0x0001, 0x0001, 0x1fa2, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, + // Entry 46880 - 468BF + 0x237b, 0x0004, 0x01a7, 0x01a1, 0x019e, 0x01a4, 0x0001, 0x0002, + 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, + 0x0002, 0x0478, 0x0004, 0x01b8, 0x01b2, 0x01af, 0x01b5, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0000, 0x03c6, 0x0040, 0x01fc, 0x0000, 0x0000, 0x0201, + 0x0216, 0x022b, 0x0240, 0x0255, 0x026a, 0x027f, 0x0294, 0x02a9, + 0x02be, 0x02d7, 0x02f0, 0x0000, 0x0000, 0x0000, 0x0309, 0x0320, + 0x0337, 0x0000, 0x0000, 0x0000, 0x034e, 0x0000, 0x0000, 0x0000, + // Entry 468C0 - 468FF + 0x0000, 0x0000, 0x0353, 0x0365, 0x0377, 0x0389, 0x039b, 0x03ad, + 0x03bf, 0x03d1, 0x03e3, 0x03f5, 0x0407, 0x0419, 0x042b, 0x043d, + 0x044f, 0x0461, 0x0473, 0x0485, 0x0497, 0x04a9, 0x04bb, 0x0000, + 0x04cd, 0x0000, 0x04d2, 0x04e6, 0x04fa, 0x050e, 0x0522, 0x0536, + 0x054a, 0x055e, 0x056e, 0x057e, 0x0001, 0x01fe, 0x0001, 0x0064, + 0x001a, 0x0003, 0x0205, 0x0208, 0x020d, 0x0001, 0x0064, 0x0021, + 0x0003, 0x0064, 0x0027, 0x0036, 0x0040, 0x0002, 0x0210, 0x0213, + 0x0001, 0x0064, 0x004e, 0x0001, 0x0064, 0x0063, 0x0003, 0x021a, + // Entry 46900 - 4693F + 0x021d, 0x0222, 0x0001, 0x0064, 0x0021, 0x0003, 0x0064, 0x0027, + 0x0036, 0x0040, 0x0002, 0x0225, 0x0228, 0x0001, 0x0064, 0x004e, + 0x0001, 0x0064, 0x0063, 0x0003, 0x022f, 0x0232, 0x0237, 0x0001, + 0x0064, 0x0021, 0x0003, 0x0064, 0x0027, 0x0036, 0x0040, 0x0002, + 0x023a, 0x023d, 0x0001, 0x0064, 0x004e, 0x0001, 0x0064, 0x0063, + 0x0003, 0x0244, 0x0247, 0x024c, 0x0001, 0x0064, 0x007a, 0x0003, + 0x0064, 0x0080, 0x008f, 0x009d, 0x0002, 0x024f, 0x0252, 0x0001, + 0x0064, 0x00a8, 0x0001, 0x0064, 0x00bd, 0x0003, 0x0259, 0x025c, + // Entry 46940 - 4697F + 0x0261, 0x0001, 0x0064, 0x007a, 0x0003, 0x0064, 0x0080, 0x008f, + 0x009d, 0x0002, 0x0264, 0x0267, 0x0001, 0x0064, 0x00a8, 0x0001, + 0x0064, 0x00bd, 0x0003, 0x026e, 0x0271, 0x0276, 0x0001, 0x0064, + 0x007a, 0x0003, 0x0064, 0x0080, 0x008f, 0x009d, 0x0002, 0x0279, + 0x027c, 0x0001, 0x0064, 0x00a8, 0x0001, 0x0064, 0x00bd, 0x0003, + 0x0283, 0x0286, 0x028b, 0x0001, 0x0064, 0x00d4, 0x0003, 0x0064, + 0x00dc, 0x00ed, 0x00f9, 0x0002, 0x028e, 0x0291, 0x0001, 0x0064, + 0x0109, 0x0001, 0x0064, 0x0120, 0x0003, 0x0298, 0x029b, 0x02a0, + // Entry 46980 - 469BF + 0x0001, 0x0064, 0x00d4, 0x0003, 0x0064, 0x00dc, 0x00ed, 0x00f9, + 0x0002, 0x02a3, 0x02a6, 0x0001, 0x0064, 0x0109, 0x0001, 0x0064, + 0x0120, 0x0003, 0x02ad, 0x02b0, 0x02b5, 0x0001, 0x0064, 0x00d4, + 0x0003, 0x0064, 0x00dc, 0x00ed, 0x00f9, 0x0002, 0x02b8, 0x02bb, + 0x0001, 0x0064, 0x0109, 0x0001, 0x0064, 0x0120, 0x0004, 0x02c3, + 0x02c6, 0x02cb, 0x02d4, 0x0001, 0x0064, 0x0139, 0x0003, 0x0064, + 0x013e, 0x014c, 0x0155, 0x0002, 0x02ce, 0x02d1, 0x0001, 0x0064, + 0x0162, 0x0001, 0x0064, 0x0176, 0x0001, 0x0064, 0x018c, 0x0004, + // Entry 469C0 - 469FF + 0x02dc, 0x02df, 0x02e4, 0x02ed, 0x0001, 0x0064, 0x0139, 0x0003, + 0x0064, 0x013e, 0x014c, 0x0155, 0x0002, 0x02e7, 0x02ea, 0x0001, + 0x0064, 0x0162, 0x0001, 0x0064, 0x0176, 0x0001, 0x0064, 0x018c, + 0x0004, 0x02f5, 0x02f8, 0x02fd, 0x0306, 0x0001, 0x0064, 0x0139, + 0x0003, 0x0064, 0x013e, 0x014c, 0x0155, 0x0002, 0x0300, 0x0303, + 0x0001, 0x0064, 0x0162, 0x0001, 0x0064, 0x0176, 0x0001, 0x0064, + 0x018c, 0x0003, 0x030d, 0x0310, 0x0317, 0x0001, 0x0064, 0x01a2, + 0x0005, 0x0064, 0x01b3, 0x01bc, 0x01c6, 0x01a8, 0x01d4, 0x0002, + // Entry 46A00 - 46A3F + 0x031a, 0x031d, 0x0001, 0x0064, 0x01e4, 0x0001, 0x0064, 0x01f9, + 0x0003, 0x0324, 0x0327, 0x032e, 0x0001, 0x0064, 0x01a2, 0x0005, + 0x0064, 0x01b3, 0x01bc, 0x01c6, 0x01a8, 0x01d4, 0x0002, 0x0331, + 0x0334, 0x0001, 0x0064, 0x01e4, 0x0001, 0x0064, 0x01f9, 0x0003, + 0x033b, 0x033e, 0x0345, 0x0001, 0x0064, 0x01a2, 0x0005, 0x0064, + 0x01b3, 0x01bc, 0x01c6, 0x01a8, 0x01d4, 0x0002, 0x0348, 0x034b, + 0x0001, 0x0064, 0x01e4, 0x0001, 0x0064, 0x01f9, 0x0001, 0x0350, + 0x0001, 0x0064, 0x0210, 0x0003, 0x0000, 0x0357, 0x035c, 0x0003, + // Entry 46A40 - 46A7F + 0x0064, 0x0221, 0x0232, 0x023e, 0x0002, 0x035f, 0x0362, 0x0001, + 0x0064, 0x024e, 0x0001, 0x0064, 0x0274, 0x0003, 0x0000, 0x0369, + 0x036e, 0x0003, 0x0064, 0x0221, 0x0232, 0x023e, 0x0002, 0x0371, + 0x0374, 0x0001, 0x0064, 0x029a, 0x0001, 0x0064, 0x02b9, 0x0003, + 0x0000, 0x037b, 0x0380, 0x0003, 0x0064, 0x0221, 0x0232, 0x023e, + 0x0002, 0x0383, 0x0386, 0x0001, 0x0064, 0x029a, 0x0001, 0x0064, + 0x02b9, 0x0003, 0x0000, 0x038d, 0x0392, 0x0003, 0x0064, 0x02d8, + 0x02e9, 0x02f5, 0x0002, 0x0395, 0x0398, 0x0001, 0x0064, 0x0305, + // Entry 46A80 - 46ABF + 0x0001, 0x0064, 0x032b, 0x0003, 0x0000, 0x039f, 0x03a4, 0x0003, + 0x0064, 0x02d8, 0x02e9, 0x02f5, 0x0002, 0x03a7, 0x03aa, 0x0001, + 0x0064, 0x0351, 0x0001, 0x0064, 0x0370, 0x0003, 0x0000, 0x03b1, + 0x03b6, 0x0003, 0x0064, 0x02d8, 0x02e9, 0x02f5, 0x0002, 0x03b9, + 0x03bc, 0x0001, 0x0064, 0x0351, 0x0001, 0x0064, 0x0370, 0x0003, + 0x0000, 0x03c3, 0x03c8, 0x0003, 0x0064, 0x038f, 0x03a0, 0x03ac, + 0x0002, 0x03cb, 0x03ce, 0x0001, 0x0064, 0x03bc, 0x0001, 0x0064, + 0x03e2, 0x0003, 0x0000, 0x03d5, 0x03da, 0x0003, 0x0064, 0x038f, + // Entry 46AC0 - 46AFF + 0x03a0, 0x03ac, 0x0002, 0x03dd, 0x03e0, 0x0001, 0x0064, 0x0408, + 0x0001, 0x0064, 0x0427, 0x0003, 0x0000, 0x03e7, 0x03ec, 0x0003, + 0x0064, 0x038f, 0x03a0, 0x03ac, 0x0002, 0x03ef, 0x03f2, 0x0001, + 0x0064, 0x0408, 0x0001, 0x0064, 0x0427, 0x0003, 0x0000, 0x03f9, + 0x03fe, 0x0003, 0x0064, 0x0446, 0x0458, 0x0465, 0x0002, 0x0401, + 0x0404, 0x0001, 0x0064, 0x0476, 0x0001, 0x0064, 0x049d, 0x0003, + 0x0000, 0x040b, 0x0410, 0x0003, 0x0064, 0x0446, 0x0458, 0x0465, + 0x0002, 0x0413, 0x0416, 0x0001, 0x0064, 0x04c4, 0x0001, 0x0064, + // Entry 46B00 - 46B3F + 0x04e4, 0x0003, 0x0000, 0x041d, 0x0422, 0x0003, 0x0064, 0x0446, + 0x0458, 0x0465, 0x0002, 0x0425, 0x0428, 0x0001, 0x0064, 0x04c4, + 0x0001, 0x0064, 0x04e4, 0x0003, 0x0000, 0x042f, 0x0434, 0x0003, + 0x0064, 0x0504, 0x051b, 0x052d, 0x0002, 0x0437, 0x043a, 0x0001, + 0x0064, 0x0543, 0x0001, 0x0064, 0x056f, 0x0003, 0x0000, 0x0441, + 0x0446, 0x0003, 0x0064, 0x0504, 0x051b, 0x052d, 0x0002, 0x0449, + 0x044c, 0x0001, 0x0064, 0x059b, 0x0001, 0x0064, 0x05c0, 0x0003, + 0x0000, 0x0453, 0x0458, 0x0003, 0x0064, 0x0504, 0x051b, 0x052d, + // Entry 46B40 - 46B7F + 0x0002, 0x045b, 0x045e, 0x0001, 0x0064, 0x059b, 0x0001, 0x0064, + 0x05c0, 0x0003, 0x0000, 0x0465, 0x046a, 0x0003, 0x0064, 0x05e5, + 0x05f6, 0x0602, 0x0002, 0x046d, 0x0470, 0x0001, 0x0064, 0x0612, + 0x0001, 0x0064, 0x0638, 0x0003, 0x0000, 0x0477, 0x047c, 0x0003, + 0x0064, 0x05e5, 0x05f6, 0x0602, 0x0002, 0x047f, 0x0482, 0x0001, + 0x0064, 0x065e, 0x0001, 0x0064, 0x067d, 0x0003, 0x0000, 0x0489, + 0x048e, 0x0003, 0x0064, 0x05e5, 0x05f6, 0x0602, 0x0002, 0x0491, + 0x0494, 0x0001, 0x0064, 0x065e, 0x0001, 0x0064, 0x067d, 0x0003, + // Entry 46B80 - 46BBF + 0x0000, 0x049b, 0x04a0, 0x0003, 0x0064, 0x069c, 0x06ae, 0x06bb, + 0x0002, 0x04a3, 0x04a6, 0x0001, 0x0064, 0x06cc, 0x0001, 0x0064, + 0x06f3, 0x0003, 0x0000, 0x04ad, 0x04b2, 0x0003, 0x0064, 0x069c, + 0x06ae, 0x06bb, 0x0002, 0x04b5, 0x04b8, 0x0001, 0x0064, 0x071a, + 0x0001, 0x0064, 0x073a, 0x0003, 0x0000, 0x04bf, 0x04c4, 0x0003, + 0x0064, 0x069c, 0x06ae, 0x06bb, 0x0002, 0x04c7, 0x04ca, 0x0001, + 0x0064, 0x071a, 0x0001, 0x0064, 0x073a, 0x0001, 0x04cf, 0x0001, + 0x0007, 0x07cc, 0x0003, 0x04d6, 0x04d9, 0x04dd, 0x0001, 0x0064, + // Entry 46BC0 - 46BFF + 0x075a, 0x0002, 0x0064, 0xffff, 0x075f, 0x0002, 0x04e0, 0x04e3, + 0x0001, 0x0064, 0x076f, 0x0001, 0x0064, 0x0783, 0x0003, 0x04ea, + 0x04ed, 0x04f1, 0x0001, 0x0064, 0x075a, 0x0002, 0x0064, 0xffff, + 0x075f, 0x0002, 0x04f4, 0x04f7, 0x0001, 0x0064, 0x076f, 0x0001, + 0x0064, 0x0783, 0x0003, 0x04fe, 0x0501, 0x0505, 0x0001, 0x0064, + 0x075a, 0x0002, 0x0064, 0xffff, 0x075f, 0x0002, 0x0508, 0x050b, + 0x0001, 0x0064, 0x076f, 0x0001, 0x0064, 0x0783, 0x0003, 0x0512, + 0x0515, 0x0519, 0x0001, 0x000a, 0x01c1, 0x0002, 0x0064, 0xffff, + // Entry 46C00 - 46C3F + 0x0799, 0x0002, 0x051c, 0x051f, 0x0001, 0x0064, 0x07ab, 0x0001, + 0x0064, 0x07c1, 0x0003, 0x0526, 0x0529, 0x052d, 0x0001, 0x000a, + 0x01c1, 0x0002, 0x0064, 0xffff, 0x0799, 0x0002, 0x0530, 0x0533, + 0x0001, 0x0064, 0x07ab, 0x0001, 0x0064, 0x07c1, 0x0003, 0x053a, + 0x053d, 0x0541, 0x0001, 0x000a, 0x01c1, 0x0002, 0x0064, 0xffff, + 0x0799, 0x0002, 0x0544, 0x0547, 0x0001, 0x0064, 0x07ab, 0x0001, + 0x0064, 0x07c1, 0x0003, 0x054e, 0x0551, 0x0555, 0x0001, 0x0064, + 0x07d9, 0x0002, 0x0064, 0xffff, 0x07e0, 0x0002, 0x0558, 0x055b, + // Entry 46C40 - 46C7F + 0x0001, 0x0064, 0x07ea, 0x0001, 0x0064, 0x0800, 0x0003, 0x0562, + 0x0000, 0x0565, 0x0001, 0x0064, 0x07d9, 0x0002, 0x0568, 0x056b, + 0x0001, 0x0064, 0x07ea, 0x0001, 0x0064, 0x0800, 0x0003, 0x0572, + 0x0000, 0x0575, 0x0001, 0x0064, 0x07d9, 0x0002, 0x0578, 0x057b, + 0x0001, 0x0064, 0x07ea, 0x0001, 0x0064, 0x0800, 0x0001, 0x0580, + 0x0001, 0x0064, 0x0818, 0x0004, 0x0588, 0x058d, 0x0592, 0x059d, + 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0064, 0x0827, + 0x0831, 0x0841, 0x0002, 0x0000, 0x0595, 0x0002, 0x0000, 0x0598, + // Entry 46C80 - 46CBF + 0x0003, 0x0064, 0xffff, 0x0852, 0x0872, 0x0002, 0x0000, 0x05a0, + 0x0003, 0x05a4, 0x06e4, 0x0644, 0x009e, 0x0064, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0946, 0x09ad, 0x0a51, 0x0aa6, 0x0b1f, 0x0b9e, + 0x0c23, 0x0ca8, 0x0d0f, 0x0df6, 0x0e45, 0x0e9d, 0x0f0a, 0x0f5c, + 0x0ff0, 0x1060, 0x10e5, 0x115b, 0x11d1, 0x122c, 0x1281, 0xffff, + 0xffff, 0x12ff, 0xffff, 0x1362, 0xffff, 0x13dc, 0x142b, 0x146e, + 0x14b7, 0xffff, 0xffff, 0x153b, 0x158d, 0x15eb, 0xffff, 0xffff, + 0xffff, 0x1670, 0xffff, 0x16cf, 0x172d, 0xffff, 0x17af, 0x1813, + // Entry 46CC0 - 46CFF + 0x1880, 0xffff, 0xffff, 0xffff, 0xffff, 0x1926, 0xffff, 0xffff, + 0x199f, 0x1a06, 0xffff, 0xffff, 0x1a9d, 0x1ae9, 0x1b41, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c1f, 0x1c6e, 0x1cde, + 0x1d30, 0x1d7c, 0xffff, 0xffff, 0x1e34, 0xffff, 0x1e8e, 0xffff, + 0xffff, 0x1f46, 0xffff, 0x2002, 0xffff, 0xffff, 0xffff, 0xffff, + 0x20b8, 0xffff, 0x211e, 0x219a, 0x2207, 0x2268, 0xffff, 0xffff, + 0xffff, 0x22f6, 0x235d, 0x23af, 0xffff, 0xffff, 0x2437, 0x24c5, + 0x2538, 0x259f, 0xffff, 0xffff, 0x261c, 0x266b, 0x26b1, 0xffff, + // Entry 46D00 - 46D3F + 0x271f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x282b, 0x2892, + 0x28f0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x29cd, 0xffff, 0xffff, 0x2a3b, 0xffff, 0x2a90, 0xffff, 0x2b05, + 0x2b57, 0x2bb5, 0xffff, 0x2c14, 0x2c8a, 0xffff, 0xffff, 0xffff, + 0x2d38, 0x2dab, 0xffff, 0xffff, 0x0892, 0x09ff, 0x0d52, 0x0da1, + 0xffff, 0xffff, 0x1fa7, 0x27b6, 0x009e, 0x0064, 0x08e1, 0x08fb, + 0x0913, 0x092d, 0x0960, 0x09c0, 0x0a65, 0x0ac6, 0x0b41, 0x0bc2, + 0x0c47, 0x0cc2, 0x0d1d, 0x0e08, 0x0e5a, 0x0eb9, 0x0f1d, 0x0f85, + // Entry 46D40 - 46D7F + 0x100d, 0x1084, 0x1104, 0x117a, 0x11e7, 0x1240, 0x1297, 0x12dc, + 0x12ed, 0x1312, 0x1351, 0x1378, 0x13cc, 0x13ee, 0x1439, 0x147e, + 0x14cc, 0x150f, 0x1527, 0x154e, 0x15a4, 0x15fa, 0x1631, 0x1641, + 0x165a, 0x1681, 0x16bc, 0x16e6, 0x1746, 0x1791, 0x17c8, 0x182f, + 0x188e, 0x18c3, 0x18e1, 0x1900, 0x1914, 0x1937, 0x1972, 0x1984, + 0x19b9, 0x1a20, 0x1a7c, 0x1a8d, 0x1aae, 0x1afe, 0x1b51, 0x1b8a, + 0x1b9c, 0x1bb3, 0x1bca, 0x1be5, 0x1c02, 0x1c31, 0x1c8b, 0x1cf1, + 0x1d41, 0x1d9f, 0x1dfe, 0x1e19, 0x1e44, 0x1e7d, 0x1eae, 0x1f07, + // Entry 46D80 - 46DBF + 0x1f2e, 0x1f5e, 0x1fed, 0x201b, 0x2066, 0x2078, 0x208c, 0x209f, + 0x20cc, 0x210d, 0x213f, 0x21b6, 0x221f, 0x2280, 0x22c9, 0x22d7, + 0x22e6, 0x2310, 0x2370, 0x23c9, 0x2416, 0x2425, 0x2456, 0x24e3, + 0x2552, 0x25b4, 0x25f7, 0x2606, 0x262e, 0x267a, 0x26c4, 0x2703, + 0x273d, 0x2792, 0x27a4, 0xffff, 0x2808, 0x281b, 0x2845, 0x28a9, + 0x2902, 0x293f, 0x295a, 0x296c, 0x2987, 0x299c, 0x29ae, 0x29bd, + 0x29dd, 0x2a16, 0x2a2a, 0x2a4a, 0x2a81, 0x2aa9, 0x2af4, 0x2b18, + 0x2b6e, 0x2bc6, 0x2c01, 0x2c33, 0x2ca7, 0x2cfa, 0x2d0c, 0x2d1e, + // Entry 46DC0 - 46DFF + 0x2d56, 0x2dcd, 0x1a6d, 0x24ad, 0x08a4, 0x0a12, 0x0d64, 0x0db5, + 0x13bd, 0x1f1c, 0x1fb6, 0x27c9, 0x009e, 0x0064, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0987, 0x09e0, 0x0a86, 0x0af3, 0x0b70, 0x0bf3, + 0x0c78, 0x0ce9, 0x0d38, 0x0e27, 0x0e7c, 0x0ee2, 0x0f3d, 0x0fbb, + 0x1037, 0x10b5, 0x1130, 0x11a6, 0x120a, 0x1261, 0x12ba, 0xffff, + 0xffff, 0x1332, 0xffff, 0x139b, 0xffff, 0x140d, 0x1454, 0x149b, + 0x14ee, 0xffff, 0xffff, 0x156e, 0x15c8, 0x1616, 0xffff, 0xffff, + 0xffff, 0x169f, 0xffff, 0x170a, 0x176c, 0xffff, 0x17ee, 0x1858, + // Entry 46E00 - 46E3F + 0x18a9, 0xffff, 0xffff, 0xffff, 0xffff, 0x1955, 0xffff, 0xffff, + 0x19e0, 0x1a47, 0xffff, 0xffff, 0x1acc, 0x1b20, 0x1b6e, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c50, 0x1cb5, 0x1d11, + 0x1d5f, 0x1dcf, 0xffff, 0xffff, 0x1e61, 0xffff, 0x1edb, 0xffff, + 0xffff, 0x1f83, 0xffff, 0x2041, 0xffff, 0xffff, 0xffff, 0xffff, + 0x20ed, 0xffff, 0x216d, 0x21df, 0x2244, 0x22a5, 0xffff, 0xffff, + 0xffff, 0x2337, 0x2390, 0x23f0, 0xffff, 0xffff, 0x2482, 0x250e, + 0x2579, 0x25d6, 0xffff, 0xffff, 0x264d, 0x2696, 0x26e4, 0xffff, + // Entry 46E40 - 46E7F + 0x2768, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x286c, 0x28cd, + 0x2921, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x29fa, 0xffff, 0xffff, 0x2a66, 0xffff, 0x2acf, 0xffff, 0x2b38, + 0x2b92, 0x2be4, 0xffff, 0x2c5f, 0x2cd1, 0xffff, 0xffff, 0xffff, + 0x2d81, 0x2dfc, 0xffff, 0xffff, 0x08c3, 0x0a32, 0x0d83, 0x0dd6, + 0xffff, 0xffff, 0x1fd2, 0x27e9, 0x0003, 0x0004, 0x0370, 0x076e, + 0x0012, 0x0017, 0x0000, 0x0024, 0x0000, 0x003c, 0x0000, 0x0054, + 0x007f, 0x02c7, 0x0000, 0x02df, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 46E80 - 46EBF + 0x0333, 0x034b, 0x0362, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, + 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, + 0x0001, 0x0026, 0x0001, 0x0028, 0x0003, 0x0000, 0x0000, 0x002c, + 0x000e, 0x0065, 0xffff, 0x0000, 0x0005, 0x000b, 0x0011, 0x0018, + 0x001e, 0x0025, 0x002e, 0x0036, 0x003f, 0x0044, 0x0049, 0x0051, + 0x0001, 0x003e, 0x0001, 0x0040, 0x0003, 0x0000, 0x0000, 0x0044, + 0x000e, 0x0000, 0xffff, 0x042f, 0x40e5, 0x40ec, 0x3938, 0x4080, + 0x40f2, 0x40fa, 0x4102, 0x410a, 0x046e, 0x3946, 0x4111, 0x4118, + // Entry 46EC0 - 46EFF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, + 0x006e, 0x0004, 0x006b, 0x0065, 0x0062, 0x0068, 0x0001, 0x0065, + 0x0057, 0x0001, 0x002c, 0x00fc, 0x0001, 0x0007, 0x001d, 0x0001, + 0x0065, 0x0067, 0x0004, 0x007c, 0x0076, 0x0073, 0x0079, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0088, 0x00ed, 0x0144, 0x0179, + 0x027a, 0x0294, 0x02a5, 0x02b6, 0x0002, 0x008b, 0x00bc, 0x0003, + 0x008f, 0x009e, 0x00ad, 0x000d, 0x0065, 0xffff, 0x0074, 0x0078, + // Entry 46F00 - 46F3F + 0x007d, 0x0081, 0x0085, 0x0089, 0x008d, 0x0091, 0x0096, 0x009a, + 0x009e, 0x00a2, 0x000d, 0x0063, 0xffff, 0x03c3, 0x0334, 0x03bf, + 0x03c5, 0x03bf, 0x1ff7, 0x1ed3, 0x0332, 0x1ed1, 0x1ed1, 0x1ff9, + 0x0332, 0x000d, 0x0065, 0xffff, 0x00a6, 0x00ab, 0x00b2, 0x00b7, + 0x00bd, 0x00c4, 0x00cc, 0x00d3, 0x00dc, 0x00e3, 0x00e8, 0x00ef, + 0x0003, 0x00c0, 0x00cf, 0x00de, 0x000d, 0x0065, 0xffff, 0x0074, + 0x0078, 0x007d, 0x0081, 0x0085, 0x0089, 0x008d, 0x0091, 0x0096, + 0x009a, 0x009e, 0x00a2, 0x000d, 0x0063, 0xffff, 0x03c3, 0x0334, + // Entry 46F40 - 46F7F + 0x03bf, 0x03c5, 0x03bf, 0x1ff7, 0x1ed3, 0x0332, 0x1ed1, 0x1ed1, + 0x1ff9, 0x0332, 0x000d, 0x0065, 0xffff, 0x00a6, 0x00ab, 0x00b2, + 0x00b7, 0x00bd, 0x00c4, 0x00cc, 0x00d3, 0x00dc, 0x00e3, 0x00e8, + 0x00ef, 0x0002, 0x00f0, 0x011a, 0x0005, 0x00f6, 0x00ff, 0x0111, + 0x0000, 0x0108, 0x0007, 0x0065, 0x00f7, 0x00fb, 0x00ff, 0x0103, + 0x0108, 0x010c, 0x0110, 0x0007, 0x0063, 0x0330, 0x0330, 0x032b, + 0x032d, 0x0330, 0x1ffb, 0x1ffb, 0x0007, 0x0065, 0x0114, 0x0117, + 0x011a, 0x011d, 0x0121, 0x0124, 0x0127, 0x0007, 0x0065, 0x012a, + // Entry 46F80 - 46FBF + 0x0130, 0x013a, 0x0140, 0x014b, 0x0155, 0x015a, 0x0005, 0x0120, + 0x0129, 0x013b, 0x0000, 0x0132, 0x0007, 0x0065, 0x00f7, 0x00fb, + 0x00ff, 0x0103, 0x0108, 0x010c, 0x0110, 0x0007, 0x0063, 0x0330, + 0x0330, 0x032b, 0x032d, 0x0330, 0x1ffb, 0x1ffb, 0x0007, 0x0065, + 0x0114, 0x0117, 0x011a, 0x011d, 0x0121, 0x0124, 0x0127, 0x0007, + 0x0065, 0x012a, 0x0130, 0x013a, 0x0140, 0x014b, 0x0155, 0x015a, + 0x0002, 0x0147, 0x0160, 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, + 0x0065, 0xffff, 0x0164, 0x0168, 0x016c, 0x0170, 0x0005, 0x000d, + // Entry 46FC0 - 46FFF + 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0065, 0xffff, + 0x0174, 0x017f, 0x018a, 0x0195, 0x0003, 0x0164, 0x016b, 0x0172, + 0x0005, 0x0065, 0xffff, 0x0164, 0x0168, 0x016c, 0x0170, 0x0005, + 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0065, + 0xffff, 0x0174, 0x017f, 0x018a, 0x0195, 0x0002, 0x017c, 0x01fb, + 0x0003, 0x0180, 0x01a9, 0x01d2, 0x000a, 0x018e, 0x0194, 0x018b, + 0x0197, 0x019d, 0x01a3, 0x01a6, 0x0191, 0x019a, 0x01a0, 0x0001, + 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, 0x01b3, + // Entry 47000 - 4703F + 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, 0x0065, + 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, 0x0001, + 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x01b7, 0x01bd, + 0x01b4, 0x01c0, 0x01c6, 0x01cc, 0x01cf, 0x01ba, 0x01c3, 0x01c9, + 0x0001, 0x0065, 0x01f2, 0x0001, 0x001e, 0x1bda, 0x0001, 0x0065, + 0x01f7, 0x0001, 0x0065, 0x01fa, 0x0001, 0x0007, 0x03d9, 0x0001, + 0x0065, 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, + 0x0001, 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x01e0, + // Entry 47040 - 4707F + 0x01e6, 0x01dd, 0x01e9, 0x01ef, 0x01f5, 0x01f8, 0x01e3, 0x01ec, + 0x01f2, 0x0001, 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, + 0x0065, 0x01b3, 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, + 0x0001, 0x0065, 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, + 0x01de, 0x0001, 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x0003, + 0x01ff, 0x0228, 0x0251, 0x000a, 0x020d, 0x0213, 0x020a, 0x0216, + 0x021c, 0x0222, 0x0225, 0x0210, 0x0219, 0x021f, 0x0001, 0x0065, + 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, 0x01b3, 0x0001, + // Entry 47080 - 470BF + 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, 0x0065, 0x01be, + 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, 0x0001, 0x0065, + 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x0236, 0x023c, 0x0233, + 0x023f, 0x0245, 0x024b, 0x024e, 0x0239, 0x0242, 0x0248, 0x0001, + 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, 0x01b3, + 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, 0x0065, + 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, 0x0001, + 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x025f, 0x0265, + // Entry 470C0 - 470FF + 0x025c, 0x0268, 0x026e, 0x0274, 0x0277, 0x0262, 0x026b, 0x0271, + 0x0001, 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, + 0x01b3, 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, + 0x0065, 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, + 0x0001, 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x0003, 0x0289, + 0x0000, 0x027e, 0x0002, 0x0281, 0x0285, 0x0002, 0x0065, 0x01fe, + 0x021e, 0x0002, 0x0065, 0x020d, 0x022d, 0x0002, 0x028c, 0x0290, + 0x0002, 0x0065, 0x023e, 0x0247, 0x0002, 0x0065, 0x0242, 0x024a, + // Entry 47100 - 4713F + 0x0004, 0x02a2, 0x029c, 0x0299, 0x029f, 0x0001, 0x0063, 0x03c7, + 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0008, + 0x09e4, 0x0004, 0x02b3, 0x02ad, 0x02aa, 0x02b0, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0004, 0x02c4, 0x02be, 0x02bb, 0x02c1, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x02c9, 0x0001, 0x02cb, 0x0003, + 0x0000, 0x0000, 0x02cf, 0x000e, 0x0065, 0x027d, 0x024e, 0x0255, + // Entry 47140 - 4717F + 0x025d, 0x0264, 0x026a, 0x0271, 0x0278, 0x00b7, 0x0285, 0x028b, + 0x0291, 0x0297, 0x029a, 0x0005, 0x02e5, 0x0000, 0x0000, 0x0000, + 0x032c, 0x0002, 0x02e8, 0x030a, 0x0003, 0x02ec, 0x0000, 0x02fb, + 0x000d, 0x0065, 0xffff, 0x029f, 0x02a8, 0x02ae, 0x02bb, 0x02c7, + 0x02d6, 0x02e4, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0309, 0x000d, + 0x0065, 0xffff, 0x029f, 0x02a8, 0x02ae, 0x02bb, 0x02c7, 0x02d6, + 0x02e4, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0309, 0x0003, 0x0000, + 0x030e, 0x031d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + // Entry 47180 - 471BF + 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, + 0x3874, 0x000d, 0x0065, 0xffff, 0x029f, 0x02a8, 0x02ae, 0x02bb, + 0x02c7, 0x02d6, 0x02e4, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0309, + 0x0001, 0x032e, 0x0001, 0x0330, 0x0001, 0x0065, 0x0312, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x033a, 0x0004, 0x0348, + 0x0342, 0x033f, 0x0345, 0x0001, 0x0063, 0x0337, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0065, 0x0318, 0x0001, + 0x034d, 0x0001, 0x034f, 0x0003, 0x0000, 0x0000, 0x0353, 0x000d, + // Entry 471C0 - 471FF + 0x0065, 0xffff, 0x0321, 0x032b, 0x0337, 0x033e, 0x0342, 0x0349, + 0x0353, 0x0358, 0x035d, 0x0362, 0x0366, 0x036d, 0x0005, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0368, 0x0001, 0x036a, 0x0001, 0x036c, + 0x0002, 0x0000, 0x1a20, 0x3a6e, 0x0040, 0x03b1, 0x0000, 0x0000, + 0x03b6, 0x03cd, 0x03e4, 0x03fb, 0x0412, 0x0424, 0x0436, 0x044d, + 0x0464, 0x047b, 0x0496, 0x04ac, 0x0000, 0x0000, 0x0000, 0x04c2, + 0x04db, 0x04f4, 0x0000, 0x0000, 0x0000, 0x050d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0512, 0x0526, 0x053a, 0x054e, 0x0562, + // Entry 47200 - 4723F + 0x0576, 0x058a, 0x059e, 0x05b2, 0x05c6, 0x05da, 0x05ee, 0x0602, + 0x0616, 0x062a, 0x063e, 0x0652, 0x0666, 0x067a, 0x068e, 0x06a2, + 0x0000, 0x06b6, 0x0000, 0x06bb, 0x06d1, 0x06e3, 0x06f5, 0x070b, + 0x071d, 0x072f, 0x0745, 0x0757, 0x0769, 0x0001, 0x03b3, 0x0001, + 0x0065, 0x0374, 0x0003, 0x03ba, 0x03bd, 0x03c2, 0x0001, 0x0065, + 0x0382, 0x0003, 0x0065, 0x0387, 0x0393, 0x039b, 0x0002, 0x03c5, + 0x03c9, 0x0002, 0x0065, 0x03a8, 0x03a8, 0x0002, 0x0065, 0x03b7, + 0x03b7, 0x0003, 0x03d1, 0x03d4, 0x03d9, 0x0001, 0x0065, 0x0382, + // Entry 47240 - 4727F + 0x0003, 0x0065, 0x0387, 0x0393, 0x039b, 0x0002, 0x03dc, 0x03e0, + 0x0002, 0x0065, 0x03a8, 0x03a8, 0x0002, 0x0065, 0x03b7, 0x03b7, + 0x0003, 0x03e8, 0x03eb, 0x03f0, 0x0001, 0x0065, 0x0382, 0x0003, + 0x0065, 0x0387, 0x0393, 0x039b, 0x0002, 0x03f3, 0x03f7, 0x0002, + 0x0065, 0x03a8, 0x03a8, 0x0002, 0x0065, 0x03b7, 0x03b7, 0x0003, + 0x03ff, 0x0402, 0x0407, 0x0001, 0x0065, 0x03c6, 0x0003, 0x0065, + 0x03ce, 0x03dd, 0x03e8, 0x0002, 0x040a, 0x040e, 0x0002, 0x0065, + 0x03f8, 0x03f8, 0x0002, 0x0065, 0x040a, 0x040a, 0x0003, 0x0416, + // Entry 47280 - 472BF + 0x0000, 0x0419, 0x0001, 0x0065, 0x041c, 0x0002, 0x041c, 0x0420, + 0x0002, 0x0065, 0x0422, 0x0422, 0x0002, 0x0065, 0x0432, 0x0432, + 0x0003, 0x0428, 0x0000, 0x042b, 0x0001, 0x0065, 0x041c, 0x0002, + 0x042e, 0x0432, 0x0002, 0x0065, 0x0422, 0x0422, 0x0002, 0x0065, + 0x0432, 0x0432, 0x0003, 0x043a, 0x043d, 0x0442, 0x0001, 0x0007, + 0x034f, 0x0003, 0x0065, 0x0442, 0x044c, 0x0452, 0x0002, 0x0445, + 0x0449, 0x0002, 0x0065, 0x045d, 0x045d, 0x0002, 0x0065, 0x046a, + 0x046a, 0x0003, 0x0451, 0x0454, 0x0459, 0x0001, 0x0007, 0x034f, + // Entry 472C0 - 472FF + 0x0003, 0x0065, 0x0442, 0x044c, 0x0452, 0x0002, 0x045c, 0x0460, + 0x0002, 0x0065, 0x045d, 0x045d, 0x0002, 0x0065, 0x046a, 0x046a, + 0x0003, 0x0468, 0x046b, 0x0470, 0x0001, 0x0007, 0x034f, 0x0003, + 0x0065, 0x0442, 0x044c, 0x0452, 0x0002, 0x0473, 0x0477, 0x0002, + 0x0065, 0x045d, 0x045d, 0x0002, 0x0065, 0x046a, 0x046a, 0x0004, + 0x0480, 0x0483, 0x0488, 0x0493, 0x0001, 0x0065, 0x0477, 0x0003, + 0x0065, 0x047d, 0x048a, 0x0493, 0x0002, 0x048b, 0x048f, 0x0002, + 0x0065, 0x04a1, 0x04a1, 0x0002, 0x0065, 0x04b1, 0x04b1, 0x0001, + // Entry 47300 - 4733F + 0x0065, 0x04c1, 0x0004, 0x049b, 0x0000, 0x049e, 0x04a9, 0x0001, + 0x0065, 0x04ce, 0x0002, 0x04a1, 0x04a5, 0x0002, 0x0065, 0x04d2, + 0x04d2, 0x0002, 0x0065, 0x04e0, 0x04e0, 0x0001, 0x0065, 0x04c1, + 0x0004, 0x04b1, 0x0000, 0x04b4, 0x04bf, 0x0001, 0x0065, 0x04ce, + 0x0002, 0x04b7, 0x04bb, 0x0002, 0x0065, 0x04d2, 0x04d2, 0x0002, + 0x0065, 0x04e0, 0x04e0, 0x0001, 0x0065, 0x04c1, 0x0003, 0x04c6, + 0x04c9, 0x04d0, 0x0001, 0x0063, 0x0557, 0x0005, 0x0065, 0x04fb, + 0x0500, 0x0507, 0x04ee, 0x050e, 0x0002, 0x04d3, 0x04d7, 0x0002, + // Entry 47340 - 4737F + 0x0065, 0x051a, 0x051a, 0x0002, 0x0065, 0x0529, 0x0529, 0x0003, + 0x04df, 0x04e2, 0x04e9, 0x0001, 0x0063, 0x0557, 0x0005, 0x0065, + 0x04fb, 0x0500, 0x0507, 0x04ee, 0x050e, 0x0002, 0x04ec, 0x04f0, + 0x0002, 0x0065, 0x051a, 0x051a, 0x0002, 0x0065, 0x0529, 0x0529, + 0x0003, 0x04f8, 0x04fb, 0x0502, 0x0001, 0x0063, 0x0557, 0x0005, + 0x0065, 0x04fb, 0x0500, 0x0507, 0x04ee, 0x050e, 0x0002, 0x0505, + 0x0509, 0x0002, 0x0065, 0x051a, 0x051a, 0x0002, 0x0065, 0x0529, + 0x0529, 0x0001, 0x050f, 0x0001, 0x0065, 0x0538, 0x0003, 0x0000, + // Entry 47380 - 473BF + 0x0516, 0x051b, 0x0003, 0x0065, 0x0549, 0x0556, 0x055f, 0x0002, + 0x051e, 0x0522, 0x0002, 0x0065, 0x056d, 0x056d, 0x0002, 0x0065, + 0x057d, 0x057d, 0x0003, 0x0000, 0x052a, 0x052f, 0x0003, 0x0065, + 0x058d, 0x0599, 0x05a1, 0x0002, 0x0532, 0x0536, 0x0002, 0x0065, + 0x05ae, 0x05ae, 0x0002, 0x0065, 0x05bd, 0x05bd, 0x0003, 0x0000, + 0x053e, 0x0543, 0x0003, 0x0065, 0x058d, 0x0599, 0x05a1, 0x0002, + 0x0546, 0x054a, 0x0002, 0x0065, 0x05ae, 0x05ae, 0x0002, 0x0065, + 0x05bd, 0x05bd, 0x0003, 0x0000, 0x0552, 0x0557, 0x0003, 0x0065, + // Entry 473C0 - 473FF + 0x05cc, 0x05dd, 0x05ea, 0x0002, 0x055a, 0x055e, 0x0002, 0x0065, + 0x05fc, 0x05fc, 0x0002, 0x0065, 0x0610, 0x0610, 0x0003, 0x0000, + 0x0566, 0x056b, 0x0003, 0x0065, 0x0624, 0x0630, 0x0638, 0x0002, + 0x056e, 0x0572, 0x0002, 0x0065, 0x0645, 0x0645, 0x0002, 0x0065, + 0x0654, 0x0654, 0x0003, 0x0000, 0x057a, 0x057f, 0x0003, 0x0065, + 0x0624, 0x0630, 0x0638, 0x0002, 0x0582, 0x0586, 0x0002, 0x0065, + 0x0645, 0x0645, 0x0002, 0x0065, 0x0654, 0x0654, 0x0003, 0x0000, + 0x058e, 0x0593, 0x0003, 0x0065, 0x0663, 0x0670, 0x0679, 0x0002, + // Entry 47400 - 4743F + 0x0596, 0x059a, 0x0002, 0x0065, 0x0687, 0x0687, 0x0002, 0x0065, + 0x0697, 0x0697, 0x0003, 0x0000, 0x05a2, 0x05a7, 0x0003, 0x0065, + 0x0663, 0x0670, 0x0679, 0x0002, 0x05aa, 0x05ae, 0x0002, 0x0065, + 0x0687, 0x0687, 0x0002, 0x0065, 0x0697, 0x0697, 0x0003, 0x0000, + 0x05b6, 0x05bb, 0x0003, 0x0065, 0x0663, 0x0670, 0x0679, 0x0002, + 0x05be, 0x05c2, 0x0002, 0x0065, 0x0687, 0x0687, 0x0002, 0x0065, + 0x0697, 0x0697, 0x0003, 0x0000, 0x05ca, 0x05cf, 0x0003, 0x0065, + 0x06a7, 0x06b9, 0x06c7, 0x0002, 0x05d2, 0x05d6, 0x0002, 0x0065, + // Entry 47440 - 4747F + 0x06da, 0x06da, 0x0002, 0x0065, 0x06ef, 0x06ef, 0x0003, 0x0000, + 0x05de, 0x05e3, 0x0003, 0x0065, 0x0704, 0x0711, 0x071a, 0x0002, + 0x05e6, 0x05ea, 0x0002, 0x0065, 0x0728, 0x0728, 0x0002, 0x0065, + 0x0738, 0x0738, 0x0003, 0x0000, 0x05f2, 0x05f7, 0x0003, 0x0065, + 0x0704, 0x0711, 0x071a, 0x0002, 0x05fa, 0x05fe, 0x0002, 0x0065, + 0x0728, 0x0728, 0x0002, 0x0065, 0x0738, 0x0738, 0x0003, 0x0000, + 0x0606, 0x060b, 0x0003, 0x0065, 0x0748, 0x0759, 0x0766, 0x0002, + 0x060e, 0x0612, 0x0002, 0x0065, 0x0778, 0x0778, 0x0002, 0x0065, + // Entry 47480 - 474BF + 0x078c, 0x078c, 0x0003, 0x0000, 0x061a, 0x061f, 0x0003, 0x0065, + 0x07a0, 0x07ac, 0x07b4, 0x0002, 0x0622, 0x0626, 0x0002, 0x0065, + 0x07c1, 0x07c1, 0x0002, 0x0065, 0x07d0, 0x07d0, 0x0003, 0x0000, + 0x062e, 0x0633, 0x0003, 0x0065, 0x07a0, 0x07ac, 0x07b4, 0x0002, + 0x0636, 0x063a, 0x0002, 0x0065, 0x07c1, 0x07c1, 0x0002, 0x0065, + 0x07d0, 0x07d0, 0x0003, 0x0000, 0x0642, 0x0647, 0x0003, 0x0065, + 0x07df, 0x07eb, 0x07f3, 0x0002, 0x064a, 0x064e, 0x0002, 0x0065, + 0x0800, 0x0800, 0x0002, 0x0065, 0x080f, 0x080f, 0x0003, 0x0000, + // Entry 474C0 - 474FF + 0x0656, 0x065b, 0x0003, 0x0065, 0x07df, 0x07eb, 0x07f3, 0x0002, + 0x065e, 0x0662, 0x0002, 0x0065, 0x0800, 0x0800, 0x0002, 0x0065, + 0x080f, 0x080f, 0x0003, 0x0000, 0x066a, 0x066f, 0x0003, 0x0065, + 0x07df, 0x07eb, 0x07f3, 0x0002, 0x0672, 0x0676, 0x0002, 0x0065, + 0x0800, 0x0800, 0x0002, 0x0065, 0x080f, 0x080f, 0x0003, 0x0000, + 0x067e, 0x0683, 0x0003, 0x0065, 0x081e, 0x082f, 0x083c, 0x0002, + 0x0686, 0x068a, 0x0002, 0x0065, 0x084e, 0x084e, 0x0002, 0x0065, + 0x0862, 0x0862, 0x0003, 0x0000, 0x0692, 0x0697, 0x0003, 0x0065, + // Entry 47500 - 4753F + 0x0876, 0x0882, 0x088a, 0x0002, 0x069a, 0x069e, 0x0002, 0x0065, + 0x0897, 0x0897, 0x0002, 0x0065, 0x08a6, 0x08a6, 0x0003, 0x0000, + 0x06a6, 0x06ab, 0x0003, 0x0065, 0x0876, 0x0882, 0x088a, 0x0002, + 0x06ae, 0x06b2, 0x0002, 0x0065, 0x0897, 0x0897, 0x0002, 0x0065, + 0x08a6, 0x08a6, 0x0001, 0x06b8, 0x0001, 0x0065, 0x08b5, 0x0003, + 0x06bf, 0x06c2, 0x06c6, 0x0001, 0x0007, 0x0802, 0x0002, 0x0007, + 0xffff, 0x07d7, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x0065, 0x08be, + 0x08be, 0x0002, 0x0065, 0x08cd, 0x08cd, 0x0003, 0x06d5, 0x0000, + // Entry 47540 - 4757F + 0x06d8, 0x0001, 0x0065, 0x08dc, 0x0002, 0x06db, 0x06df, 0x0002, + 0x0065, 0x08e0, 0x08e0, 0x0002, 0x0065, 0x08ee, 0x08ee, 0x0003, + 0x06e7, 0x0000, 0x06ea, 0x0001, 0x0065, 0x08dc, 0x0002, 0x06ed, + 0x06f1, 0x0002, 0x0065, 0x08e0, 0x08e0, 0x0002, 0x0065, 0x08ee, + 0x08ee, 0x0003, 0x06f9, 0x06fc, 0x0700, 0x0001, 0x0044, 0x0404, + 0x0002, 0x0065, 0xffff, 0x08fc, 0x0002, 0x0703, 0x0707, 0x0002, + 0x0065, 0x0906, 0x0906, 0x0002, 0x0065, 0x0917, 0x0917, 0x0003, + 0x070f, 0x0000, 0x0712, 0x0001, 0x0065, 0x0928, 0x0002, 0x0715, + // Entry 47580 - 475BF + 0x0719, 0x0002, 0x0065, 0x092c, 0x092c, 0x0002, 0x0065, 0x093a, + 0x093a, 0x0003, 0x0721, 0x0000, 0x0724, 0x0001, 0x0065, 0x0928, + 0x0002, 0x0727, 0x072b, 0x0002, 0x0065, 0x092c, 0x092c, 0x0002, + 0x0065, 0x093a, 0x093a, 0x0003, 0x0733, 0x0736, 0x073a, 0x0001, + 0x0065, 0x0948, 0x0002, 0x0065, 0xffff, 0x094f, 0x0002, 0x073d, + 0x0741, 0x0002, 0x0065, 0x0956, 0x0956, 0x0002, 0x0065, 0x0967, + 0x0967, 0x0003, 0x0749, 0x0000, 0x074c, 0x0001, 0x0028, 0x07cc, + 0x0002, 0x074f, 0x0753, 0x0002, 0x0065, 0x0978, 0x0978, 0x0002, + // Entry 475C0 - 475FF + 0x0065, 0x0986, 0x0986, 0x0003, 0x075b, 0x0000, 0x075e, 0x0001, + 0x0028, 0x07cc, 0x0002, 0x0761, 0x0765, 0x0002, 0x0065, 0x0978, + 0x0978, 0x0002, 0x0065, 0x0986, 0x0986, 0x0001, 0x076b, 0x0001, + 0x0065, 0x0994, 0x0004, 0x0773, 0x0778, 0x077d, 0x078c, 0x0003, + 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0065, 0x09a0, 0x09aa, + 0x09b8, 0x0002, 0x0000, 0x0780, 0x0003, 0x0000, 0x0787, 0x0784, + 0x0001, 0x0065, 0x09cb, 0x0003, 0x0065, 0xffff, 0x09e8, 0x09fd, + 0x0002, 0x0000, 0x078f, 0x0003, 0x0793, 0x08d3, 0x0833, 0x009e, + // Entry 47600 - 4763F + 0x0065, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a96, 0x0adc, 0x0b47, + 0x0b7b, 0x0bdc, 0x0c37, 0x0c8f, 0x0cf0, 0x0d26, 0x0dbc, 0x0df9, + 0x0e33, 0x0e7f, 0x0ebf, 0x0ef9, 0x0f48, 0x0fa6, 0x0ff8, 0x104a, + 0x108a, 0x10c1, 0xffff, 0xffff, 0x111c, 0xffff, 0x1173, 0xffff, + 0x11ce, 0x1205, 0x1236, 0x1264, 0xffff, 0xffff, 0x12d0, 0x130d, + 0x135c, 0xffff, 0xffff, 0xffff, 0x13c4, 0xffff, 0x1421, 0x1464, + 0xffff, 0x14c2, 0x1508, 0x155d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x15e6, 0xffff, 0xffff, 0x1656, 0x16a5, 0xffff, 0xffff, 0x1723, + // Entry 47640 - 4767F + 0x1769, 0x17a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1852, 0x1883, 0x18bd, 0x18f4, 0x192b, 0xffff, 0xffff, 0x19c3, + 0xffff, 0x19fe, 0xffff, 0xffff, 0x1a75, 0xffff, 0x1afa, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1b7d, 0xffff, 0x1bc7, 0x1c1f, 0x1c8c, + 0x1ccc, 0xffff, 0xffff, 0xffff, 0x1d29, 0x1d75, 0x1dbb, 0xffff, + 0xffff, 0x1e21, 0x1e99, 0x1edc, 0x1f0a, 0xffff, 0xffff, 0x1f66, + 0x1fa0, 0x1fce, 0xffff, 0x2025, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x211a, 0x2151, 0x2185, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 47680 - 476BF + 0xffff, 0xffff, 0xffff, 0x2232, 0xffff, 0xffff, 0x2285, 0xffff, + 0x22c2, 0xffff, 0x2318, 0x234f, 0x2392, 0xffff, 0x23d9, 0x241c, + 0xffff, 0xffff, 0xffff, 0x248f, 0x24c6, 0xffff, 0xffff, 0x0a15, + 0x0b10, 0x0d54, 0x0d85, 0xffff, 0xffff, 0x1ab2, 0x20bb, 0x009e, + 0x0065, 0x0a43, 0x0a54, 0x0a66, 0x0a79, 0x0aa9, 0x0ae9, 0x0b54, + 0x0b97, 0x0bf6, 0x0c50, 0x0cab, 0x0cfd, 0x0d31, 0x0dcc, 0x0e08, + 0x0e48, 0x0e90, 0x0ece, 0x0f0f, 0x0f63, 0x0fbd, 0x100f, 0x105b, + 0x1098, 0x10d2, 0x1101, 0x110e, 0x112b, 0x1156, 0x1184, 0x11bf, + // Entry 476C0 - 476FF + 0x11dc, 0x1211, 0x1241, 0x1275, 0x12a4, 0x12bb, 0x12e0, 0x1321, + 0x1368, 0x138d, 0x1399, 0x13b2, 0x13da, 0x1413, 0x1433, 0x1477, + 0x14aa, 0x14d5, 0x1520, 0x1568, 0x158b, 0x15a4, 0x15c8, 0x15d8, + 0x15f7, 0x1626, 0x163d, 0x166c, 0x16bb, 0x1708, 0x1716, 0x1736, + 0x1779, 0x17b1, 0x17d4, 0x17ed, 0x1801, 0x1811, 0x1826, 0x183c, + 0x185e, 0x1892, 0x18cb, 0x1902, 0x194a, 0x1995, 0x19ac, 0x19ce, + 0x19f1, 0x1a10, 0x1a41, 0x1a61, 0x1a85, 0x1ae3, 0x1b08, 0x1b31, + 0x1b3f, 0x1b4f, 0x1b65, 0x1b8d, 0x1bba, 0x1be0, 0x1c3f, 0x1c9d, + // Entry 47700 - 4773F + 0x1cda, 0x1d03, 0x1d11, 0x1d1d, 0x1d3e, 0x1d88, 0x1dce, 0x1e01, + 0x1e0c, 0x1e3b, 0x1eab, 0x1ee7, 0x1f19, 0x1f44, 0x1f50, 0x1f75, + 0x1fab, 0x1fdf, 0x200e, 0x2044, 0x208f, 0x209e, 0x20ab, 0x20fe, + 0x210c, 0x2128, 0x215e, 0x2191, 0x21b6, 0x21c7, 0x21df, 0x21f6, + 0x220b, 0x2219, 0x2225, 0x223f, 0x2266, 0x2277, 0x2291, 0x22b6, + 0x22d6, 0x230b, 0x2326, 0x2361, 0x23a0, 0x23c9, 0x23eb, 0x242c, + 0x2459, 0x2466, 0x2478, 0x249d, 0x24da, 0x16f4, 0x1e7c, 0x0a20, + 0x0b1e, 0x0d60, 0x0d93, 0x11b3, 0x1a55, 0x1abe, 0x20cd, 0x009e, + // Entry 47740 - 4777F + 0x0065, 0xffff, 0xffff, 0xffff, 0xffff, 0x0ac5, 0x0aff, 0x0b6a, + 0x0bbc, 0x0c19, 0x0c72, 0x0cd0, 0x0d14, 0x0d45, 0x0de5, 0x0e20, + 0x0e66, 0x0eaa, 0x0ee6, 0x0f2e, 0x0f87, 0x0fdd, 0x102f, 0x1075, + 0x10af, 0x10ec, 0xffff, 0xffff, 0x1143, 0xffff, 0x119e, 0xffff, + 0x11f3, 0x1226, 0x1255, 0x128f, 0xffff, 0xffff, 0x12f9, 0x133e, + 0x137d, 0xffff, 0xffff, 0xffff, 0x13f9, 0xffff, 0x144e, 0x1493, + 0xffff, 0x14f1, 0x1541, 0x157c, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1611, 0xffff, 0xffff, 0x168b, 0x16da, 0xffff, 0xffff, 0x1752, + // Entry 47780 - 477BF + 0x1792, 0x17c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1873, 0x18aa, 0x18e2, 0x1919, 0x1972, 0xffff, 0xffff, 0x19e2, + 0xffff, 0x1a2b, 0xffff, 0xffff, 0x1a9e, 0xffff, 0x1b1f, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1ba6, 0xffff, 0x1c02, 0x1c68, 0x1cb7, + 0x1cf1, 0xffff, 0xffff, 0xffff, 0x1d5c, 0x1da4, 0x1dea, 0xffff, + 0xffff, 0x1e5e, 0x1ec6, 0x1efb, 0x1f31, 0xffff, 0xffff, 0x1f8d, + 0x1fbf, 0x1ff9, 0xffff, 0x206c, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x213f, 0x2174, 0x21a6, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 477C0 - 477FF + 0xffff, 0xffff, 0xffff, 0x2255, 0xffff, 0xffff, 0x22a6, 0xffff, + 0x22f3, 0xffff, 0x233d, 0x237c, 0x23b7, 0xffff, 0x2406, 0x2445, + 0xffff, 0xffff, 0xffff, 0x24b4, 0x24f7, 0xffff, 0xffff, 0x0a34, + 0x0b35, 0x0d75, 0x0daa, 0xffff, 0xffff, 0x1ad3, 0x20e8, 0x0001, + 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, + 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, + // Entry 47800 - 4783F + 0x0001, 0x0002, 0x0478, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, + 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, + 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, + 0x0045, 0x000d, 0x0017, 0xffff, 0x00ac, 0x00b1, 0x29ea, 0x00b9, + // Entry 47840 - 4787F + 0x299e, 0x00c0, 0x00c5, 0x2930, 0x00cd, 0x29ee, 0x00d1, 0x00d5, + 0x000d, 0x0017, 0xffff, 0x00d9, 0x00e2, 0x00ec, 0x00f2, 0x299e, + 0x00f9, 0x0101, 0x2930, 0x0108, 0x0112, 0x011b, 0x0125, 0x0002, + 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x012f, 0x29f2, 0x29f4, + 0x29f6, 0x29f4, 0x012f, 0x012f, 0x29ab, 0x29f8, 0x29fa, 0x29fc, + 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, + 0x0007, 0x0009, 0x5479, 0x5485, 0x5489, 0x548d, 0x5491, 0x5495, + 0x5499, 0x0007, 0x0017, 0x0142, 0x0149, 0x0150, 0x0159, 0x2955, + // Entry 47880 - 478BF + 0x0169, 0x0170, 0x0002, 0x0000, 0x0082, 0x0007, 0x0063, 0x1ff7, + 0x1ed3, 0x1ed3, 0x1ffd, 0x1ffd, 0x1ffd, 0x1fff, 0x0001, 0x008d, + 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0017, 0xffff, 0x0177, + 0x298e, 0x017d, 0x0180, 0x0005, 0x0017, 0xffff, 0x0183, 0x018c, + 0x0195, 0x019e, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, + 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0017, 0x01a7, 0x0001, 0x0017, + 0x01b0, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0017, 0x01a7, 0x0001, + 0x0017, 0x01b0, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, + // Entry 478C0 - 478FF + 0x0002, 0x0017, 0x01bb, 0x01c5, 0x0001, 0x00c3, 0x0002, 0x0017, + 0x01d2, 0x01d5, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, + 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, + 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, + 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, + 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, + // Entry 47900 - 4793F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, + 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, + 0x0017, 0x01d8, 0x0001, 0x0131, 0x0001, 0x0017, 0x01de, 0x0001, + 0x0136, 0x0001, 0x0017, 0x01e4, 0x0001, 0x013b, 0x0001, 0x0017, + // Entry 47940 - 4797F + 0x01ea, 0x0002, 0x0141, 0x0144, 0x0001, 0x0017, 0x01ef, 0x0003, + 0x0023, 0x0066, 0x2a59, 0x2a5e, 0x0001, 0x014b, 0x0001, 0x0017, + 0x0202, 0x0001, 0x0150, 0x0001, 0x0017, 0x021a, 0x0001, 0x0155, + 0x0001, 0x0017, 0x0220, 0x0001, 0x015a, 0x0001, 0x0017, 0x0227, + 0x0001, 0x015f, 0x0001, 0x0017, 0x022c, 0x0002, 0x0003, 0x00d8, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + // Entry 47980 - 479BF + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, + 0x00b7, 0x00c7, 0x0000, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, + 0x0036, 0x0000, 0x0045, 0x000d, 0x0037, 0xffff, 0x0000, 0x000d, + 0x2038, 0x203c, 0x2040, 0x0015, 0x0019, 0x001d, 0x2044, 0x2048, + 0x204e, 0x2052, 0x000d, 0x0037, 0xffff, 0x0033, 0x2056, 0x205f, + 0x2064, 0x0053, 0x0059, 0x206a, 0x0065, 0x2071, 0x207a, 0x2083, + 0x208b, 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29c1, + // Entry 479C0 - 479FF + 0x29c1, 0x29f4, 0x2a00, 0x29f4, 0x29c1, 0x29c1, 0x2a02, 0x2a05, + 0x2a07, 0x29fc, 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, + 0x0000, 0x0076, 0x0007, 0x002b, 0x0390, 0x41f8, 0x41fc, 0x4200, + 0x4204, 0x4208, 0x420c, 0x0007, 0x0066, 0x0000, 0x0007, 0x000d, + 0x0014, 0x001a, 0x0020, 0x0028, 0x0002, 0x0000, 0x0082, 0x0007, + 0x0017, 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x29f6, + 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0066, + 0xffff, 0x0032, 0x0036, 0x003a, 0x003e, 0x0005, 0x0066, 0xffff, + // Entry 47A00 - 47A3F + 0x0042, 0x0051, 0x0060, 0x006f, 0x0001, 0x00a1, 0x0003, 0x00a5, + 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0066, 0x007e, + 0x0001, 0x0066, 0x0088, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0066, + 0x007e, 0x0001, 0x0066, 0x0088, 0x0003, 0x00c1, 0x0000, 0x00bb, + 0x0001, 0x00bd, 0x0002, 0x0066, 0x0095, 0x00a7, 0x0001, 0x00c3, + 0x0002, 0x0066, 0x00bd, 0x00c1, 0x0004, 0x00d5, 0x00cf, 0x00cc, + 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0040, 0x0119, 0x0000, + // Entry 47A40 - 47A7F + 0x0000, 0x011e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0123, + 0x0000, 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x012d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0138, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x013d, 0x0000, 0x0142, 0x0000, 0x0000, 0x0147, + 0x0000, 0x0000, 0x014c, 0x0000, 0x0000, 0x0151, 0x0001, 0x011b, + // Entry 47A80 - 47ABF + 0x0001, 0x0037, 0x01b5, 0x0001, 0x0120, 0x0001, 0x0066, 0x00c7, + 0x0001, 0x0125, 0x0001, 0x0066, 0x00d0, 0x0001, 0x012a, 0x0001, + 0x0066, 0x00d5, 0x0002, 0x0130, 0x0133, 0x0001, 0x0005, 0x2346, + 0x0003, 0x0066, 0x00dd, 0x00e7, 0x00ec, 0x0001, 0x013a, 0x0001, + 0x0066, 0x00f3, 0x0001, 0x013f, 0x0001, 0x0066, 0x0101, 0x0001, + 0x0144, 0x0001, 0x0066, 0x0117, 0x0001, 0x0149, 0x0001, 0x0066, + 0x011f, 0x0001, 0x014e, 0x0001, 0x0066, 0x0126, 0x0001, 0x0153, + 0x0001, 0x0037, 0x0222, 0x0003, 0x0004, 0x02aa, 0x03c9, 0x0012, + // Entry 47AC0 - 47AFF + 0x0017, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x008a, 0x00b5, + 0x022a, 0x0000, 0x0237, 0x0000, 0x0000, 0x0000, 0x0000, 0x027c, + 0x0000, 0x0294, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, + 0x0003, 0x0026, 0x002b, 0x0021, 0x0001, 0x0023, 0x0001, 0x0066, + 0x012d, 0x0001, 0x0028, 0x0001, 0x0000, 0x0000, 0x0001, 0x002d, + 0x0001, 0x0000, 0x0000, 0x000a, 0x003b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0079, 0x0000, 0x0000, 0x0000, 0x005f, 0x0001, 0x003d, + 0x0003, 0x0041, 0x0000, 0x0050, 0x000d, 0x001b, 0xffff, 0x0000, + // Entry 47B00 - 47B3F + 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, + 0x0024, 0x0029, 0x002e, 0x000d, 0x0066, 0xffff, 0x014b, 0x0152, + 0x0159, 0x0160, 0x0167, 0x016e, 0x0175, 0x017c, 0x0183, 0x018a, + 0x0192, 0x019a, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0066, 0x0001, 0x0068, 0x0001, 0x006a, 0x000d, 0x0066, 0xffff, + 0x01a2, 0x01af, 0x01b8, 0x01c5, 0x01d2, 0x01e1, 0x01ec, 0x01f3, + 0x01fa, 0x0207, 0x0210, 0x0217, 0x0004, 0x0087, 0x0081, 0x007e, + 0x0084, 0x0001, 0x0066, 0x0222, 0x0001, 0x0066, 0x0234, 0x0001, + // Entry 47B40 - 47B7F + 0x0066, 0x023f, 0x0001, 0x000c, 0x03ec, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0093, 0x0000, 0x00a4, 0x0004, 0x00a1, + 0x009b, 0x0098, 0x009e, 0x0001, 0x0066, 0x0249, 0x0001, 0x0066, + 0x025d, 0x0001, 0x0066, 0x026a, 0x0001, 0x0012, 0x0203, 0x0004, + 0x00b2, 0x00ac, 0x00a9, 0x00af, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0066, 0x0276, 0x0001, 0x0066, 0x0276, + 0x0008, 0x00be, 0x0114, 0x016b, 0x01a0, 0x01e1, 0x01f7, 0x0208, + 0x0219, 0x0002, 0x00c1, 0x00e3, 0x0003, 0x00c5, 0x0000, 0x00d4, + // Entry 47B80 - 47BBF + 0x000d, 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, 0x02a3, 0x02b0, + 0x02b7, 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, 0x030d, 0x000d, + 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, 0x02a3, 0x02b0, 0x02b7, + 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, 0x030d, 0x0003, 0x00e7, + 0x00f6, 0x0105, 0x000d, 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, + 0x02a3, 0x02b0, 0x02b7, 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, + 0x030d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, + // Entry 47BC0 - 47BFF + 0x000d, 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, 0x02a3, 0x02b0, + 0x02b7, 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, 0x030d, 0x0002, + 0x0117, 0x0141, 0x0005, 0x011d, 0x0126, 0x0138, 0x0000, 0x012f, + 0x0007, 0x0066, 0x031c, 0x0321, 0x0326, 0x032b, 0x0330, 0x0335, + 0x033a, 0x0007, 0x0003, 0x0218, 0x2238, 0x223b, 0x223e, 0x2241, + 0x2244, 0x2247, 0x0007, 0x0003, 0x0218, 0x2238, 0x223b, 0x223e, + 0x2241, 0x2244, 0x2247, 0x0007, 0x0066, 0x033f, 0x0350, 0x035f, + 0x0370, 0x0381, 0x0392, 0x039b, 0x0005, 0x0147, 0x0150, 0x0162, + // Entry 47C00 - 47C3F + 0x0000, 0x0159, 0x0007, 0x0066, 0x031c, 0x0321, 0x0326, 0x032b, + 0x0330, 0x0335, 0x033a, 0x0007, 0x0003, 0x0218, 0x2238, 0x223b, + 0x223e, 0x2241, 0x2244, 0x2247, 0x0007, 0x0003, 0x0218, 0x2238, + 0x223b, 0x223e, 0x2241, 0x2244, 0x2247, 0x0007, 0x0066, 0x033f, + 0x0350, 0x035f, 0x0370, 0x0381, 0x0392, 0x039b, 0x0002, 0x016e, + 0x0187, 0x0003, 0x0172, 0x0179, 0x0180, 0x0005, 0x0066, 0xffff, + 0x03a6, 0x03b3, 0x03c0, 0x03cd, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x0066, 0xffff, 0x03da, 0x03f4, + // Entry 47C40 - 47C7F + 0x0410, 0x042a, 0x0003, 0x018b, 0x0192, 0x0199, 0x0005, 0x0066, + 0xffff, 0x03a6, 0x03b3, 0x03c0, 0x03cd, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0066, 0xffff, 0x03da, + 0x03f4, 0x0410, 0x042a, 0x0002, 0x01a3, 0x01c2, 0x0003, 0x01a7, + 0x01b0, 0x01b9, 0x0002, 0x01aa, 0x01ad, 0x0001, 0x0066, 0x0444, + 0x0001, 0x0066, 0x044a, 0x0002, 0x01b3, 0x01b6, 0x0001, 0x0013, + 0x3103, 0x0001, 0x0003, 0x0233, 0x0002, 0x01bc, 0x01bf, 0x0001, + 0x0066, 0x0450, 0x0001, 0x0066, 0x0468, 0x0003, 0x01c6, 0x01cf, + // Entry 47C80 - 47CBF + 0x01d8, 0x0002, 0x01c9, 0x01cc, 0x0001, 0x0066, 0x0444, 0x0001, + 0x0066, 0x044a, 0x0002, 0x01d2, 0x01d5, 0x0001, 0x0066, 0x0444, + 0x0001, 0x0066, 0x044a, 0x0002, 0x01db, 0x01de, 0x0001, 0x0066, + 0x0444, 0x0001, 0x0066, 0x044a, 0x0003, 0x01eb, 0x01f1, 0x01e5, + 0x0001, 0x01e7, 0x0002, 0x0066, 0x0480, 0x04a2, 0x0001, 0x01ed, + 0x0002, 0x0000, 0x04f5, 0x4122, 0x0001, 0x01f3, 0x0002, 0x0000, + 0x04f5, 0x4122, 0x0004, 0x0205, 0x01ff, 0x01fc, 0x0202, 0x0001, + 0x0066, 0x04b3, 0x0001, 0x0066, 0x04c3, 0x0001, 0x0066, 0x04ce, + // Entry 47CC0 - 47CFF + 0x0001, 0x0000, 0x051c, 0x0004, 0x0216, 0x0210, 0x020d, 0x0213, + 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, + 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0227, 0x0221, 0x021e, + 0x0224, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0066, 0x0276, 0x0001, 0x0066, 0x0276, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0230, 0x0001, 0x0232, 0x0001, 0x0234, 0x0001, + 0x0000, 0x04ef, 0x0008, 0x0240, 0x0000, 0x0000, 0x0000, 0x0264, + 0x026b, 0x0000, 0x9006, 0x0001, 0x0242, 0x0003, 0x0246, 0x0000, + // Entry 47D00 - 47D3F + 0x0255, 0x000d, 0x0066, 0xffff, 0x04d8, 0x04e9, 0x04f4, 0x050f, + 0x0528, 0x0547, 0x0564, 0x056f, 0x057c, 0x058b, 0x0598, 0x05a9, + 0x000d, 0x0066, 0xffff, 0x04d8, 0x04e9, 0x04f4, 0x050f, 0x0528, + 0x0547, 0x0564, 0x056f, 0x057c, 0x058b, 0x0598, 0x05a9, 0x0001, + 0x0266, 0x0001, 0x0268, 0x0001, 0x0066, 0x05ba, 0x0004, 0x0279, + 0x0273, 0x0270, 0x0276, 0x0001, 0x0003, 0x014b, 0x0001, 0x0003, + 0x015f, 0x0001, 0x0003, 0x0548, 0x0001, 0x0003, 0x017c, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0283, 0x0004, 0x0291, + // Entry 47D40 - 47D7F + 0x028b, 0x0288, 0x028e, 0x0001, 0x0066, 0x05c9, 0x0001, 0x0066, + 0x025d, 0x0001, 0x0066, 0x026a, 0x0001, 0x0012, 0x0203, 0x0005, + 0x0000, 0x0000, 0x0000, 0x0000, 0x029a, 0x0003, 0x02a4, 0x0000, + 0x029e, 0x0001, 0x02a0, 0x0002, 0x0066, 0x05dc, 0x0605, 0x0001, + 0x02a6, 0x0002, 0x0000, 0x1a20, 0x4133, 0x0040, 0x02eb, 0x0000, + 0x0000, 0x02f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0307, + 0x0000, 0x0000, 0x031e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0335, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x034c, 0x0000, + // Entry 47D80 - 47DBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0351, 0x0000, 0x0000, 0x0359, + 0x0000, 0x0000, 0x0361, 0x0000, 0x0000, 0x0369, 0x0000, 0x0000, + 0x0371, 0x0000, 0x0000, 0x0379, 0x0000, 0x0000, 0x0381, 0x0000, + 0x0000, 0x0000, 0x0389, 0x0000, 0x038e, 0x0000, 0x0000, 0x03a0, + 0x0000, 0x0000, 0x03b2, 0x0000, 0x0000, 0x03c4, 0x0001, 0x02ed, + 0x0001, 0x0000, 0x4122, 0x0003, 0x02f4, 0x02f7, 0x02fc, 0x0001, + 0x0066, 0x0610, 0x0003, 0x0066, 0x0617, 0x062b, 0x0637, 0x0002, + 0x02ff, 0x0303, 0x0002, 0x0066, 0x0649, 0x0649, 0x0002, 0x0066, + // Entry 47DC0 - 47DFF + 0x0665, 0x0665, 0x0003, 0x030b, 0x030e, 0x0313, 0x0001, 0x0066, + 0x067f, 0x0003, 0x0066, 0x0686, 0x069a, 0x06a6, 0x0002, 0x0316, + 0x031a, 0x0002, 0x0066, 0x06b8, 0x06b8, 0x0002, 0x0066, 0x06d4, + 0x06d4, 0x0003, 0x0322, 0x0325, 0x032a, 0x0001, 0x0066, 0x06ee, + 0x0003, 0x0066, 0x06f9, 0x0711, 0x0721, 0x0002, 0x032d, 0x0331, + 0x0002, 0x0066, 0x0737, 0x0737, 0x0002, 0x0066, 0x0757, 0x0757, + 0x0003, 0x0339, 0x033c, 0x0341, 0x0001, 0x0066, 0x0775, 0x0003, + 0x0066, 0x077c, 0x078b, 0x0796, 0x0002, 0x0344, 0x0348, 0x0002, + // Entry 47E00 - 47E3F + 0x0066, 0x079f, 0x079f, 0x0002, 0x0066, 0x07bb, 0x07bb, 0x0001, + 0x034e, 0x0001, 0x0066, 0x07d5, 0x0002, 0x0000, 0x0354, 0x0003, + 0x0066, 0x07ef, 0x080d, 0x0823, 0x0002, 0x0000, 0x035c, 0x0003, + 0x0066, 0x083f, 0x085b, 0x086f, 0x0002, 0x0000, 0x0364, 0x0003, + 0x0066, 0x0889, 0x08a7, 0x08bd, 0x0002, 0x0000, 0x036c, 0x0003, + 0x0066, 0x08d9, 0x08f7, 0x090d, 0x0002, 0x0000, 0x0374, 0x0003, + 0x0066, 0x0929, 0x0947, 0x095d, 0x0002, 0x0000, 0x037c, 0x0003, + 0x0066, 0x0979, 0x098f, 0x099d, 0x0002, 0x0000, 0x0384, 0x0003, + // Entry 47E40 - 47E7F + 0x0066, 0x09b1, 0x09c9, 0x09d9, 0x0001, 0x038b, 0x0001, 0x0066, + 0x09ef, 0x0003, 0x0392, 0x0000, 0x0395, 0x0001, 0x0066, 0x0a1f, + 0x0002, 0x0398, 0x039c, 0x0002, 0x0066, 0x0a2a, 0x0a2a, 0x0002, + 0x0066, 0x0a4a, 0x0a4a, 0x0003, 0x03a4, 0x0000, 0x03a7, 0x0001, + 0x0066, 0x0a68, 0x0002, 0x03aa, 0x03ae, 0x0002, 0x0066, 0x0a73, + 0x0a73, 0x0002, 0x0066, 0x0a93, 0x0a93, 0x0003, 0x03b6, 0x0000, + 0x03b9, 0x0001, 0x0066, 0x0ab1, 0x0002, 0x03bc, 0x03c0, 0x0002, + 0x0066, 0x0abe, 0x0abe, 0x0002, 0x0066, 0x0ae0, 0x0ae0, 0x0001, + // Entry 47E80 - 47EBF + 0x03c6, 0x0001, 0x0066, 0x0b00, 0x0004, 0x03ce, 0x03d2, 0x03d7, + 0x03e2, 0x0002, 0x0000, 0x1dc7, 0x40b8, 0x0003, 0x0066, 0x0b18, + 0x0b27, 0x0b43, 0x0002, 0x0000, 0x03da, 0x0002, 0x0000, 0x03dd, + 0x0003, 0x0066, 0xffff, 0x0b65, 0x0b8e, 0x0002, 0x0000, 0x03e5, + 0x0003, 0x03e9, 0x0529, 0x0489, 0x009e, 0x0066, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0cc7, 0x0d5c, 0x0e3e, 0x0eac, 0x0f3b, 0x0fc4, + 0x101a, 0x109d, 0xffff, 0x11e1, 0x1243, 0x12c3, 0x136a, 0x13e4, + 0x1485, 0x1559, 0x1656, 0x1724, 0x17f2, 0x1878, 0x18da, 0xffff, + // Entry 47EC0 - 47EFF + 0xffff, 0x1980, 0xffff, 0x1a2f, 0xffff, 0x1afb, 0x1b5d, 0x1bb9, + 0x1c1b, 0xffff, 0xffff, 0x1ce3, 0x1d5d, 0x1df7, 0xffff, 0xffff, + 0xffff, 0x1eb1, 0xffff, 0x1f60, 0x1ffb, 0xffff, 0x2090, 0x2125, + 0x21d2, 0xffff, 0xffff, 0xffff, 0xffff, 0x230a, 0xffff, 0xffff, + 0x23c7, 0x2468, 0xffff, 0xffff, 0x2575, 0x2604, 0x2672, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27d0, 0x2832, 0x28a6, + 0x292c, 0x29a0, 0xffff, 0xffff, 0x2acb, 0xffff, 0x2b4d, 0xffff, + 0xffff, 0x2c41, 0xffff, 0x2d4b, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 47F00 - 47F3F + 0x2e34, 0xffff, 0x2ecc, 0x2faf, 0x305f, 0x30df, 0xffff, 0xffff, + 0xffff, 0x3189, 0x3224, 0x32b9, 0xffff, 0xffff, 0x338a, 0x3469, + 0x34ef, 0x3551, 0xffff, 0xffff, 0x3611, 0x3685, 0x36e1, 0xffff, + 0x3780, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x392d, 0x399b, + 0x3a03, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3b3f, 0xffff, 0xffff, 0x3be1, 0xffff, 0x3c55, 0xffff, 0x3cf9, + 0x3d6d, 0x3df3, 0xffff, 0x3e87, 0x3f13, 0xffff, 0xffff, 0xffff, + 0x3ff0, 0x405e, 0xffff, 0xffff, 0x0bb7, 0x0dd0, 0x110b, 0x1173, + // Entry 47F40 - 47F7F + 0xffff, 0xffff, 0x2cb2, 0x3877, 0x009e, 0x0066, 0x0c19, 0x0c3b, + 0x0c64, 0x0c8b, 0x0cee, 0x0d78, 0x0e58, 0x0ed1, 0x0f5e, 0x0fd6, + 0x103b, 0x10b7, 0xffff, 0x11f7, 0x1263, 0x12f0, 0x1388, 0x140f, + 0x14c1, 0x15a2, 0x1690, 0x175e, 0x1814, 0x188e, 0x18f6, 0x194e, + 0x1964, 0x19a0, 0x1a00, 0x1a52, 0x1ace, 0x1b11, 0x1b71, 0x1bcf, + 0x1c39, 0x1c95, 0x1cc0, 0x1d01, 0x1d82, 0x1e0b, 0x1e53, 0x1e69, + 0x1e8e, 0x1ed6, 0x1f44, 0x1f89, 0x2022, 0xffff, 0x20b7, 0x2154, + 0x21e6, 0x222e, 0x2272, 0x22d0, 0x22ee, 0x2326, 0x237e, 0x23ab, + // Entry 47F80 - 47FBF + 0x23f2, 0x2493, 0x2532, 0x2559, 0x259a, 0x261e, 0x2686, 0x26ce, + 0x26ff, 0x2722, 0x2741, 0x2772, 0x27a1, 0x27e6, 0x284e, 0x28c8, + 0x2948, 0x29db, 0x2a71, 0x2a9e, 0x2ae3, 0x2b33, 0x2b71, 0x2bd9, + 0x2c1a, 0x2c5c, 0x2d1a, 0x2d65, 0x2db9, 0x2dd7, 0x2df1, 0x2e09, + 0x2e54, 0x2eb4, 0x2f0d, 0x2fdf, 0x307f, 0x30f7, 0x3147, 0x315d, + 0x3173, 0x31b2, 0x324b, 0x32dd, 0x3345, 0x335d, 0x33b5, 0x348b, + 0x3505, 0x356d, 0x35c5, 0x35db, 0x362d, 0x3699, 0x36fd, 0x3755, + 0x37b7, 0x3845, 0x385f, 0xffff, 0x38f7, 0x3915, 0x3947, 0x39b3, + // Entry 47FC0 - 47FFF + 0x3a1b, 0x3a71, 0x3a89, 0x3aa5, 0x3ad2, 0x3afb, 0x3b15, 0x3b29, + 0x3b57, 0x3ba7, 0x3bc7, 0x3bf7, 0x3c43, 0x3c79, 0x3ce1, 0x3d15, + 0x3d8f, 0x3e0f, 0x3e67, 0x3eab, 0x3f31, 0x3f8d, 0x3fa5, 0x3fc6, + 0x400a, 0x4084, 0x2509, 0x342b, 0x0bcd, 0x0dea, 0x1123, 0x118d, + 0x1ab8, 0x2bfb, 0x2cca, 0x3897, 0x009e, 0x0066, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0d28, 0x0da7, 0x0e85, 0x0f09, 0x0f94, 0x0ffb, + 0x106f, 0x10e4, 0xffff, 0x1220, 0x1296, 0x1330, 0x13b9, 0x144d, + 0x1510, 0x1600, 0x16dd, 0x17ab, 0x1849, 0x18b7, 0x1925, 0xffff, + // Entry 48000 - 4803F + 0xffff, 0x19d3, 0xffff, 0x1a88, 0xffff, 0x1b3a, 0x1b98, 0x1bf8, + 0x1c6a, 0xffff, 0xffff, 0x1d32, 0x1dba, 0x1e32, 0xffff, 0xffff, + 0xffff, 0x1f12, 0xffff, 0x1fc5, 0x205c, 0xffff, 0x20f1, 0x2196, + 0x220d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2355, 0xffff, 0xffff, + 0x2430, 0x24d1, 0xffff, 0xffff, 0x25d2, 0x264b, 0x26ad, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x280f, 0x287d, 0x28fd, + 0x2977, 0x2a29, 0xffff, 0xffff, 0x2b0e, 0xffff, 0x2ba8, 0xffff, + 0xffff, 0x2c8a, 0xffff, 0x2d92, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 48040 - 4807F + 0x2e87, 0xffff, 0x2f61, 0x3022, 0x30b2, 0x3122, 0xffff, 0xffff, + 0xffff, 0x31ee, 0x3285, 0x3314, 0xffff, 0xffff, 0x33f3, 0x34c0, + 0x352e, 0x359c, 0xffff, 0xffff, 0x365c, 0x36c0, 0x372c, 0xffff, + 0x3801, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3974, 0x39de, + 0x3a46, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x3b82, 0xffff, 0xffff, 0x3c20, 0xffff, 0x3cb0, 0xffff, 0x3d44, + 0x3dc4, 0x3e3e, 0xffff, 0x3ee2, 0x3f62, 0xffff, 0xffff, 0xffff, + 0x4037, 0x40bd, 0xffff, 0xffff, 0x0bf6, 0x0e17, 0x114e, 0x11ba, + // Entry 48080 - 480BF + 0xffff, 0xffff, 0x2cf5, 0x38ca, 0x0003, 0x0004, 0x0511, 0x0a87, + 0x0011, 0x0000, 0x0000, 0x0016, 0x0000, 0x0051, 0x0000, 0x00d8, + 0x0103, 0x031c, 0x0349, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x03e1, 0x04d9, 0x0001, 0x0018, 0x0002, 0x001b, 0x003f, 0x0003, + 0x001f, 0x0000, 0x002f, 0x000e, 0x0067, 0xffff, 0x0000, 0x0007, + 0x000f, 0x0017, 0x001f, 0x0027, 0x002f, 0x003b, 0x0045, 0x004d, + 0x0057, 0x005d, 0x0065, 0x000e, 0x0067, 0xffff, 0x0000, 0x006d, + 0x0076, 0x0081, 0x008c, 0x0095, 0x00a0, 0x00b1, 0x00c0, 0x00cd, + // Entry 480C0 - 480FF + 0x00d8, 0x00e1, 0x00ec, 0x0001, 0x0041, 0x000e, 0x0067, 0xffff, + 0x0000, 0x00f5, 0x00fc, 0x0103, 0x010a, 0x0111, 0x0118, 0x0123, + 0x012c, 0x0133, 0x013c, 0x0141, 0x0148, 0x0005, 0x0057, 0x0000, + 0x0000, 0x0000, 0x00c2, 0x0002, 0x005a, 0x008e, 0x0003, 0x005e, + 0x006e, 0x007e, 0x000e, 0x0008, 0xffff, 0x0e09, 0x4fad, 0x4fb5, + 0x4fbd, 0x4fc5, 0x4fcd, 0x4fd7, 0x4fdf, 0x4fe9, 0x4ff1, 0x4ff9, + 0x5001, 0x5009, 0x000e, 0x000b, 0xffff, 0x0962, 0x0965, 0x0968, + 0x096b, 0x096e, 0x0971, 0x0974, 0x0977, 0x097a, 0x2798, 0x279b, + // Entry 48100 - 4813F + 0x279e, 0x27a1, 0x000e, 0x0067, 0xffff, 0x014f, 0x0162, 0x0171, + 0x017e, 0x018d, 0x0196, 0x01a5, 0x01b6, 0x01c3, 0x01d2, 0x01db, + 0x01e6, 0x01f3, 0x0003, 0x0092, 0x00a2, 0x00b2, 0x000e, 0x0008, + 0xffff, 0x0e09, 0x4fad, 0x4fb5, 0x4fbd, 0x4fc5, 0x4fcd, 0x4fd7, + 0x4fdf, 0x4fe9, 0x4ff1, 0x4ff9, 0x5001, 0x5009, 0x000e, 0x000b, + 0xffff, 0x0962, 0x0965, 0x0968, 0x096b, 0x096e, 0x0971, 0x0974, + 0x0977, 0x097a, 0x2798, 0x279b, 0x279e, 0x27a1, 0x000e, 0x0067, + 0xffff, 0x014f, 0x0204, 0x0171, 0x017e, 0x018d, 0x0196, 0x01a5, + // Entry 48140 - 4817F + 0x01b6, 0x01c3, 0x01d2, 0x01db, 0x01e6, 0x01f3, 0x0003, 0x00cc, + 0x00d2, 0x00c6, 0x0001, 0x00c8, 0x0002, 0x0000, 0x0425, 0x042a, + 0x0001, 0x00ce, 0x0002, 0x0000, 0x0425, 0x042a, 0x0001, 0x00d4, + 0x0002, 0x0000, 0xffff, 0x042a, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00e1, 0x0000, 0x00f2, 0x0004, 0x00ef, 0x00e9, + 0x00e6, 0x00ec, 0x0001, 0x0067, 0x0211, 0x0001, 0x0067, 0x0228, + 0x0001, 0x0001, 0x1f98, 0x0001, 0x0013, 0x048d, 0x0004, 0x0100, + 0x00fa, 0x00f7, 0x00fd, 0x0001, 0x0067, 0x0239, 0x0001, 0x0067, + // Entry 48180 - 481BF + 0x0239, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x010c, 0x0171, 0x01c8, 0x01fd, 0x02ce, 0x02e9, 0x02fa, 0x030b, + 0x0002, 0x010f, 0x0140, 0x0003, 0x0113, 0x0122, 0x0131, 0x000d, + 0x0067, 0xffff, 0x0246, 0x024e, 0x0256, 0x025e, 0x0268, 0x0272, + 0x027c, 0x0284, 0x028e, 0x0296, 0x02a0, 0x02aa, 0x000d, 0x000e, + 0xffff, 0x01f0, 0x2218, 0x221b, 0x221e, 0x2221, 0x0298, 0x2218, + 0x01f0, 0x2025, 0x2224, 0x2218, 0x2227, 0x000d, 0x0067, 0xffff, + 0x02b4, 0x02bf, 0x02cc, 0x02db, 0x02e8, 0x02f5, 0x0302, 0x030d, + // Entry 481C0 - 481FF + 0x031a, 0x0329, 0x0336, 0x0349, 0x0003, 0x0144, 0x0153, 0x0162, + 0x000d, 0x0067, 0xffff, 0x0356, 0x035d, 0x0364, 0x036b, 0x0372, + 0x0379, 0x0380, 0x0387, 0x038e, 0x0395, 0x039c, 0x03a3, 0x000d, + 0x0037, 0xffff, 0x2032, 0x2094, 0x1597, 0x2026, 0x13d7, 0x2035, + 0x2094, 0x2032, 0x2097, 0x13da, 0x2094, 0x209a, 0x000d, 0x0067, + 0xffff, 0x03aa, 0x03b7, 0x03c2, 0x03d3, 0x03e2, 0x03f1, 0x0400, + 0x040d, 0x041c, 0x042d, 0x043c, 0x044d, 0x0002, 0x0174, 0x019e, + 0x0005, 0x017a, 0x0183, 0x0195, 0x0000, 0x018c, 0x0007, 0x0008, + // Entry 48200 - 4823F + 0x080d, 0x5011, 0x5016, 0x501b, 0x5020, 0x5025, 0x502a, 0x0007, + 0x003e, 0x0e97, 0x20cf, 0x20d2, 0x20d5, 0x20d8, 0x20cf, 0x20d5, + 0x0007, 0x0008, 0x080d, 0x5011, 0x5016, 0x501b, 0x5020, 0x5025, + 0x502a, 0x0007, 0x0067, 0x045c, 0x0469, 0x047c, 0x048d, 0x049a, + 0x04a7, 0x04b8, 0x0005, 0x01a4, 0x01ad, 0x01bf, 0x0000, 0x01b6, + 0x0007, 0x0008, 0x080d, 0x5011, 0x5016, 0x501b, 0x5020, 0x5025, + 0x502a, 0x0007, 0x003e, 0x0e97, 0x20cf, 0x20d2, 0x20d5, 0x20d8, + 0x20cf, 0x20d5, 0x0007, 0x0008, 0x080d, 0x5011, 0x5016, 0x501b, + // Entry 48240 - 4827F + 0x5020, 0x5025, 0x502a, 0x0007, 0x0067, 0x045c, 0x0469, 0x047c, + 0x048d, 0x049a, 0x04a7, 0x04b8, 0x0002, 0x01cb, 0x01e4, 0x0003, + 0x01cf, 0x01d6, 0x01dd, 0x0005, 0x0054, 0xffff, 0x046b, 0x0476, + 0x0481, 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, 0x04d3, + 0x0003, 0x01e8, 0x01ef, 0x01f6, 0x0005, 0x0054, 0xffff, 0x046b, + 0x0476, 0x0481, 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, + // Entry 48280 - 482BF + 0x04d3, 0x0002, 0x0200, 0x0267, 0x0003, 0x0204, 0x0225, 0x0246, + 0x0008, 0x0210, 0x0216, 0x020d, 0x0219, 0x021c, 0x021f, 0x0222, + 0x0213, 0x0001, 0x0067, 0x04c5, 0x0001, 0x0067, 0x04d6, 0x0001, + 0x0067, 0x04db, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, 0x04f3, + 0x0001, 0x0054, 0x04fa, 0x0001, 0x0067, 0x04fe, 0x0001, 0x0067, + 0x050b, 0x0008, 0x0231, 0x0237, 0x022e, 0x023a, 0x023d, 0x0240, + 0x0243, 0x0234, 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, + 0x0001, 0x000e, 0x0292, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, + // Entry 482C0 - 482FF + 0x04f3, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0067, 0x04fe, 0x0001, + 0x0067, 0x050b, 0x0008, 0x0252, 0x0258, 0x024f, 0x025b, 0x025e, + 0x0261, 0x0264, 0x0255, 0x0001, 0x0067, 0x04c5, 0x0001, 0x0067, + 0x04d6, 0x0001, 0x0067, 0x04db, 0x0001, 0x0067, 0x04ee, 0x0001, + 0x0067, 0x04f3, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0067, 0x04fe, + 0x0001, 0x0067, 0x050b, 0x0003, 0x026b, 0x028c, 0x02ad, 0x0008, + 0x0277, 0x027d, 0x0274, 0x0280, 0x0283, 0x0286, 0x0289, 0x027a, + 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, 0x0001, 0x0067, + // Entry 48300 - 4833F + 0x0521, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, 0x0532, 0x0001, + 0x0054, 0x0535, 0x0001, 0x0067, 0x053d, 0x0001, 0x0067, 0x0548, + 0x0008, 0x0298, 0x029e, 0x0295, 0x02a1, 0x02a4, 0x02a7, 0x02aa, + 0x029b, 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, 0x0001, + 0x0067, 0x0521, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, 0x0532, + 0x0001, 0x0054, 0x0535, 0x0001, 0x0067, 0x053d, 0x0001, 0x0067, + 0x0548, 0x0008, 0x02b9, 0x02bf, 0x02b6, 0x02c2, 0x02c5, 0x02c8, + 0x02cb, 0x02bc, 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, + // Entry 48340 - 4837F + 0x0001, 0x0067, 0x0521, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, + 0x0532, 0x0001, 0x0054, 0x0535, 0x0001, 0x0067, 0x053d, 0x0001, + 0x0067, 0x0548, 0x0003, 0x02dd, 0x02e3, 0x02d2, 0x0002, 0x02d5, + 0x02d9, 0x0002, 0x0067, 0x054f, 0x057d, 0x0002, 0x0067, 0x0566, + 0x058f, 0x0001, 0x02df, 0x0002, 0x0067, 0x05a1, 0x05ae, 0x0001, + 0x02e5, 0x0002, 0x0067, 0x05b6, 0x05c2, 0x0004, 0x02f7, 0x02f1, + 0x02ee, 0x02f4, 0x0001, 0x0067, 0x05c9, 0x0001, 0x0067, 0x05de, + 0x0001, 0x0067, 0x05ed, 0x0001, 0x0007, 0x0277, 0x0004, 0x0308, + // Entry 48380 - 483BF + 0x0302, 0x02ff, 0x0305, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x0319, 0x0313, 0x0310, 0x0316, 0x0001, 0x0067, 0x0239, 0x0001, + 0x0067, 0x0239, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x031e, 0x0002, 0x0321, 0x0335, 0x0003, 0x0000, 0x0000, + 0x0325, 0x000e, 0x0067, 0x0652, 0x05fb, 0x0606, 0x0619, 0x0628, + 0x0633, 0x063e, 0x0649, 0x065e, 0x0669, 0x0670, 0x067b, 0x013c, + 0x0688, 0x0003, 0x0000, 0x0000, 0x0339, 0x000e, 0x0067, 0x0652, + // Entry 483C0 - 483FF + 0x05fb, 0x0691, 0x069e, 0x06ab, 0x06b6, 0x063e, 0x0649, 0x065e, + 0x06bf, 0x0670, 0x067b, 0x06c6, 0x0688, 0x0005, 0x034f, 0x0000, + 0x0000, 0x0000, 0x0396, 0x0002, 0x0352, 0x0374, 0x0003, 0x0356, + 0x0000, 0x0365, 0x000d, 0x0067, 0xffff, 0x06cb, 0x06d5, 0x06df, + 0x06e9, 0x06f3, 0x06fd, 0x0707, 0x070f, 0x0717, 0x071f, 0x0729, + 0x0731, 0x000d, 0x0009, 0xffff, 0x071d, 0x072a, 0x54a0, 0x074c, + 0x54b1, 0x54c0, 0x54cd, 0x54da, 0x54e9, 0x54fc, 0x07af, 0x5507, + 0x0003, 0x0378, 0x0000, 0x0387, 0x000d, 0x0067, 0xffff, 0x06cb, + // Entry 48400 - 4843F + 0x06d5, 0x06df, 0x06e9, 0x06f3, 0x06fd, 0x0707, 0x070f, 0x0717, + 0x071f, 0x0729, 0x0731, 0x000d, 0x0009, 0xffff, 0x071d, 0x072a, + 0x54a0, 0x074c, 0x54b1, 0x54c0, 0x54cd, 0x54da, 0x54e9, 0x54fc, + 0x07af, 0x5507, 0x0003, 0x039f, 0x03a4, 0x039a, 0x0001, 0x039c, + 0x0001, 0x0000, 0x0601, 0x0001, 0x03a1, 0x0001, 0x0000, 0x0601, + 0x0001, 0x03a6, 0x0001, 0x0000, 0x0601, 0x0001, 0x03ab, 0x0002, + 0x03ae, 0x03d0, 0x0003, 0x03b2, 0x0000, 0x03c1, 0x000d, 0x0067, + 0xffff, 0x073b, 0x0743, 0x074b, 0x0756, 0x0762, 0x076e, 0x077b, + // Entry 48440 - 4847F + 0x0785, 0x078f, 0x0797, 0x079f, 0x07ad, 0x000d, 0x0067, 0xffff, + 0x07bb, 0x07cc, 0x074b, 0x0756, 0x07d7, 0x07e8, 0x07fa, 0x0807, + 0x0814, 0x0823, 0x0830, 0x0845, 0x0001, 0x03d2, 0x000d, 0x0067, + 0xffff, 0x085a, 0x0861, 0x074b, 0x0756, 0x0868, 0x0873, 0x087f, + 0x0888, 0x0891, 0x0898, 0x089f, 0x08ac, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x03e7, 0x0001, 0x03e9, 0x0001, 0x03eb, 0x00ec, + 0x0067, 0x08b9, 0x08d0, 0x08e9, 0x0902, 0x0919, 0x0930, 0x0947, + 0x095c, 0x0973, 0x0988, 0x09a1, 0x09ba, 0x09de, 0x0a02, 0x0a26, + // Entry 48480 - 484BF + 0x0a4c, 0x0a70, 0x0a85, 0x0a9d, 0x0ab6, 0x0acd, 0x0ae4, 0x0afd, + 0x0b14, 0x0b2d, 0x0b46, 0x0b5d, 0x0b76, 0x0b91, 0x0baa, 0x0bc1, + 0x0bda, 0x0bf3, 0x0c08, 0x0c1f, 0x0c38, 0x0c51, 0x0c6c, 0x0c87, + 0x0c9a, 0x0caf, 0x0cc4, 0x0cdf, 0x0cf9, 0x0d14, 0x0d2d, 0x0d44, + 0x0d5b, 0x0d70, 0x0d85, 0x0da0, 0x0dbb, 0x0dd3, 0x0dec, 0x0e05, + 0x0e20, 0x0e39, 0x0e54, 0x0e6f, 0x0e8c, 0x0ea5, 0x0ec2, 0x0edb, + 0x0ef4, 0x0f0d, 0x0f2a, 0x0f41, 0x0f5a, 0x0f77, 0x0f8e, 0x0fa7, + 0x0fc2, 0x0fd9, 0x0ff2, 0x100f, 0x1026, 0x1041, 0x105c, 0x1077, + // Entry 484C0 - 484FF + 0x1093, 0x10aa, 0x10c6, 0x10dd, 0x10f8, 0x1113, 0x112e, 0x1149, + 0x1160, 0x1179, 0x1192, 0x11ab, 0x11c2, 0x11dd, 0x11f6, 0x120f, + 0x122a, 0x1245, 0x125a, 0x1275, 0x128e, 0x12aa, 0x12bf, 0x12d8, + 0x12f1, 0x130c, 0x1323, 0x133c, 0x1359, 0x1374, 0x138d, 0x13a8, + 0x13c3, 0x13dc, 0x13f8, 0x1413, 0x1430, 0x1449, 0x1464, 0x147d, + 0x1498, 0x14b3, 0x14cc, 0x14e5, 0x14fe, 0x151b, 0x1538, 0x1551, + 0x156e, 0x1586, 0x15a1, 0x15bc, 0x15d7, 0x15f2, 0x160b, 0x1624, + 0x163f, 0x1659, 0x1672, 0x168e, 0x16a9, 0x16c0, 0x16d7, 0x16f0, + // Entry 48500 - 4853F + 0x1709, 0x1724, 0x173d, 0x175a, 0x1773, 0x178a, 0x17a3, 0x17bc, + 0x17d6, 0x17f1, 0x180a, 0x1825, 0x1842, 0x185b, 0x1874, 0x188d, + 0x18a8, 0x18c3, 0x18e0, 0x18f9, 0x1914, 0x192f, 0x1946, 0x195f, + 0x197c, 0x1995, 0x19aa, 0x19c7, 0x19dc, 0x19f7, 0x1a10, 0x1a2b, + 0x1a46, 0x1a61, 0x1a7e, 0x1a97, 0x1ab4, 0x1acf, 0x1aea, 0x1b01, + 0x1b1c, 0x1b37, 0x1b52, 0x1b69, 0x1b82, 0x1b9b, 0x1bb4, 0x1bd1, + 0x1bec, 0x1c05, 0x1c20, 0x1c39, 0x1c54, 0x1c71, 0x1c8c, 0x1ca5, + 0x1cc1, 0x1cda, 0x1cf3, 0x1d0a, 0x1d27, 0x1d42, 0x1d5d, 0x1d74, + // Entry 48540 - 4857F + 0x1d8d, 0x1daa, 0x1dc7, 0x1dde, 0x1dfb, 0x1e14, 0x1e2f, 0x1e48, + 0x1e61, 0x1e7d, 0x1e98, 0x1eb1, 0x1ecb, 0x1ee6, 0x1f01, 0x1f1a, + 0x1f33, 0x1f4e, 0x1f67, 0x1f7e, 0x1f95, 0x1fae, 0x1fca, 0x1fe3, + 0x1ffe, 0x2015, 0x2022, 0x202f, 0x203a, 0x0001, 0x04db, 0x0002, + 0x04de, 0x0500, 0x0003, 0x04e2, 0x0000, 0x04f1, 0x000d, 0x0068, + 0xffff, 0x0000, 0x0008, 0x0010, 0x0018, 0x001f, 0x0027, 0x002f, + 0x0037, 0x0040, 0x0049, 0x0050, 0x0058, 0x000d, 0x0068, 0xffff, + 0x0060, 0x0073, 0x0088, 0x0018, 0x0095, 0x00a2, 0x00b3, 0x0037, + // Entry 48580 - 485BF + 0x0040, 0x0049, 0x00bc, 0x00c9, 0x0001, 0x0502, 0x000d, 0x0068, + 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x0018, 0x00eb, 0x00f2, 0x00f9, + 0x0037, 0x0040, 0x0049, 0x0100, 0x0107, 0x0040, 0x0552, 0x0000, + 0x0000, 0x0557, 0x0576, 0x0595, 0x05b4, 0x05d3, 0x05f2, 0x0611, + 0x0630, 0x064a, 0x0664, 0x0687, 0x06a5, 0x0000, 0x0000, 0x0000, + 0x06c3, 0x06e4, 0x0705, 0x0000, 0x0000, 0x0000, 0x0726, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x072b, 0x0747, 0x0763, 0x077f, + 0x079b, 0x07b7, 0x07d3, 0x07ef, 0x080b, 0x0827, 0x0843, 0x085f, + // Entry 485C0 - 485FF + 0x087b, 0x0897, 0x08b3, 0x08cf, 0x08eb, 0x0907, 0x0923, 0x093f, + 0x095b, 0x0000, 0x0977, 0x0000, 0x097c, 0x099a, 0x09b8, 0x09d6, + 0x09f4, 0x0a12, 0x0a30, 0x0a4e, 0x0a68, 0x0a82, 0x0001, 0x0554, + 0x0001, 0x0009, 0x0877, 0x0003, 0x055b, 0x055e, 0x0563, 0x0001, + 0x0068, 0x010e, 0x0003, 0x0068, 0x0115, 0x0120, 0x0134, 0x0002, + 0x0566, 0x056e, 0x0006, 0x0068, 0x019a, 0x0152, 0xffff, 0xffff, + 0x0168, 0x0180, 0x0006, 0x0068, 0x01f4, 0x01b2, 0xffff, 0xffff, + 0x01c6, 0x01dc, 0x0003, 0x057a, 0x057d, 0x0582, 0x0001, 0x0068, + // Entry 48600 - 4863F + 0x020a, 0x0003, 0x0068, 0x0115, 0x0120, 0x0134, 0x0002, 0x0585, + 0x058d, 0x0006, 0x0068, 0x020e, 0x020e, 0xffff, 0xffff, 0x020e, + 0x020e, 0x0006, 0x0068, 0x0221, 0x0221, 0xffff, 0xffff, 0x0221, + 0x0221, 0x0003, 0x0599, 0x059c, 0x05a1, 0x0001, 0x0068, 0x020a, + 0x0003, 0x0068, 0x0115, 0x0120, 0x0134, 0x0002, 0x05a4, 0x05ac, + 0x0006, 0x0068, 0x0232, 0x0232, 0xffff, 0xffff, 0x0232, 0x0232, + 0x0006, 0x0068, 0x0221, 0x0221, 0xffff, 0xffff, 0x0221, 0x0221, + 0x0003, 0x05b8, 0x05bb, 0x05c0, 0x0001, 0x0008, 0x0b3d, 0x0003, + // Entry 48640 - 4867F + 0x0068, 0x023f, 0x0261, 0x027d, 0x0002, 0x05c3, 0x05cb, 0x0006, + 0x0055, 0x4880, 0x024a, 0xffff, 0xffff, 0x483e, 0x485e, 0x0006, + 0x0068, 0x02fd, 0x02a3, 0xffff, 0xffff, 0x02bf, 0x02dd, 0x0003, + 0x05d7, 0x05da, 0x05df, 0x0001, 0x0008, 0x0ca5, 0x0003, 0x0068, + 0x031b, 0x0332, 0x0343, 0x0002, 0x05e2, 0x05ea, 0x0006, 0x0055, + 0x0351, 0x0351, 0xffff, 0xffff, 0x0351, 0x0351, 0x0006, 0x0068, + 0x035e, 0x035e, 0xffff, 0xffff, 0x035e, 0x035e, 0x0003, 0x05f6, + 0x05f9, 0x05fe, 0x0001, 0x0008, 0x0ca5, 0x0003, 0x0068, 0x031b, + // Entry 48680 - 486BF + 0x0332, 0x0343, 0x0002, 0x0601, 0x0609, 0x0006, 0x005c, 0x027d, + 0x027d, 0xffff, 0xffff, 0x027d, 0x027d, 0x0006, 0x0068, 0x035e, + 0x035e, 0xffff, 0xffff, 0x035e, 0x035e, 0x0003, 0x0615, 0x0618, + 0x061d, 0x0001, 0x0068, 0x0371, 0x0003, 0x0068, 0x037e, 0x039c, + 0x03b4, 0x0002, 0x0620, 0x0628, 0x0006, 0x0068, 0x042c, 0x03d6, + 0xffff, 0xffff, 0x03f2, 0x040e, 0x0006, 0x0068, 0x0498, 0x0448, + 0xffff, 0xffff, 0x0462, 0x047c, 0x0003, 0x0634, 0x0000, 0x0637, + 0x0001, 0x0068, 0x04b2, 0x0002, 0x063a, 0x0642, 0x0006, 0x0068, + // Entry 486C0 - 486FF + 0x04ba, 0x04ba, 0xffff, 0xffff, 0x04ba, 0x04ba, 0x0006, 0x0068, + 0x04d1, 0x04d1, 0xffff, 0xffff, 0x04d1, 0x04d1, 0x0003, 0x064e, + 0x0000, 0x0651, 0x0001, 0x0068, 0x04b2, 0x0002, 0x0654, 0x065c, + 0x0006, 0x0068, 0x04e6, 0x04e6, 0xffff, 0xffff, 0x04e6, 0x04e6, + 0x0006, 0x0068, 0x04d1, 0x04d1, 0xffff, 0xffff, 0x04d1, 0x04d1, + 0x0004, 0x0669, 0x066c, 0x0671, 0x0684, 0x0001, 0x0068, 0x04f7, + 0x0003, 0x0068, 0x0506, 0x0522, 0x0538, 0x0002, 0x0674, 0x067c, + 0x0006, 0x0068, 0x05ac, 0x0558, 0xffff, 0xffff, 0x0576, 0x0590, + // Entry 48700 - 4873F + 0x0006, 0x0068, 0x0614, 0x05c6, 0xffff, 0xffff, 0x05e2, 0x05fa, + 0x0001, 0x0068, 0x062c, 0x0004, 0x068c, 0x0000, 0x068f, 0x06a2, + 0x0001, 0x0068, 0x0642, 0x0002, 0x0692, 0x069a, 0x0006, 0x0068, + 0x064a, 0x064a, 0xffff, 0xffff, 0x064a, 0x064a, 0x0006, 0x0068, + 0x0661, 0x0661, 0xffff, 0xffff, 0x0661, 0x0661, 0x0001, 0x0068, + 0x062c, 0x0004, 0x06aa, 0x0000, 0x06ad, 0x06c0, 0x0001, 0x0068, + 0x0642, 0x0002, 0x06b0, 0x06b8, 0x0006, 0x0068, 0x0676, 0x0676, + 0xffff, 0xffff, 0x0676, 0x0676, 0x0006, 0x0068, 0x0661, 0x0661, + // Entry 48740 - 4877F + 0xffff, 0xffff, 0x0661, 0x0661, 0x0001, 0x0068, 0x062c, 0x0003, + 0x06c7, 0x06ca, 0x06d1, 0x0001, 0x0054, 0x0535, 0x0005, 0x0068, + 0x069a, 0x06a5, 0x06b6, 0x0687, 0x06c3, 0x0002, 0x06d4, 0x06dc, + 0x0006, 0x0055, 0x06eb, 0x06d3, 0xffff, 0xffff, 0x48a0, 0x48b6, + 0x0006, 0x0068, 0x071a, 0x06da, 0xffff, 0xffff, 0x06f0, 0x0704, + 0x0003, 0x06e8, 0x06eb, 0x06f2, 0x0001, 0x0008, 0x10aa, 0x0005, + 0x0068, 0x069a, 0x06a5, 0x06b6, 0x0687, 0x06c3, 0x0002, 0x06f5, + 0x06fd, 0x0006, 0x0055, 0x0778, 0x0778, 0xffff, 0xffff, 0x0778, + // Entry 48780 - 487BF + 0x0778, 0x0006, 0x0068, 0x072e, 0x072e, 0xffff, 0xffff, 0x072e, + 0x072e, 0x0003, 0x0709, 0x070c, 0x0713, 0x0001, 0x0008, 0x10aa, + 0x0005, 0x0068, 0x069a, 0x06a5, 0x06b6, 0x0687, 0x06c3, 0x0002, + 0x0716, 0x071e, 0x0006, 0x005c, 0x3780, 0x03e3, 0xffff, 0xffff, + 0x3780, 0x3780, 0x0006, 0x0068, 0x0752, 0x0741, 0xffff, 0xffff, + 0x0752, 0x0752, 0x0001, 0x0728, 0x0001, 0x0068, 0x075d, 0x0003, + 0x0000, 0x072f, 0x0734, 0x0003, 0x0068, 0x0771, 0x078d, 0x07a3, + 0x0002, 0x0737, 0x073f, 0x0006, 0x0068, 0x07df, 0x07c3, 0xffff, + // Entry 487C0 - 487FF + 0xffff, 0x07df, 0x07fb, 0x0006, 0x0068, 0x0831, 0x0817, 0xffff, + 0xffff, 0x0831, 0x084b, 0x0003, 0x0000, 0x074b, 0x0750, 0x0003, + 0x0068, 0x0865, 0x0879, 0x0887, 0x0002, 0x0753, 0x075b, 0x0006, + 0x0068, 0x07df, 0x07c3, 0xffff, 0xffff, 0x07df, 0x07fb, 0x0006, + 0x0068, 0x0831, 0x0817, 0xffff, 0xffff, 0x0831, 0x084b, 0x0003, + 0x0000, 0x0767, 0x076c, 0x0003, 0x0068, 0x089f, 0x0879, 0x08ac, + 0x0002, 0x076f, 0x0777, 0x0006, 0x0068, 0x07df, 0x07c3, 0xffff, + 0xffff, 0x07df, 0x07fb, 0x0006, 0x0068, 0x0831, 0x0817, 0xffff, + // Entry 48800 - 4883F + 0xffff, 0x0831, 0x084b, 0x0003, 0x0000, 0x0783, 0x0788, 0x0003, + 0x0068, 0x08bb, 0x08df, 0x08fd, 0x0002, 0x078b, 0x0793, 0x0006, + 0x0068, 0x098d, 0x0925, 0xffff, 0xffff, 0x0947, 0x0969, 0x0006, + 0x0068, 0x0a11, 0x09af, 0xffff, 0xffff, 0x09cf, 0x09ef, 0x0003, + 0x0000, 0x079f, 0x07a4, 0x0003, 0x0068, 0x0a31, 0x0a47, 0x0a57, + 0x0002, 0x07a7, 0x07af, 0x0006, 0x0068, 0x098d, 0x0925, 0xffff, + 0xffff, 0x0947, 0x0969, 0x0006, 0x0068, 0x0a11, 0x09af, 0xffff, + 0xffff, 0x09cf, 0x09ef, 0x0003, 0x0000, 0x07bb, 0x07c0, 0x0003, + // Entry 48840 - 4887F + 0x0068, 0x0a71, 0x0a47, 0x0a7e, 0x0002, 0x07c3, 0x07cb, 0x0006, + 0x0068, 0x098d, 0x0925, 0xffff, 0xffff, 0x0947, 0x0969, 0x0006, + 0x0068, 0x0a11, 0x09af, 0xffff, 0xffff, 0x09cf, 0x09ef, 0x0003, + 0x0000, 0x07d7, 0x07dc, 0x0003, 0x0068, 0x0a8d, 0x0aaf, 0x0acb, + 0x0002, 0x07df, 0x07e7, 0x0006, 0x0068, 0x0b53, 0x0af1, 0xffff, + 0xffff, 0x0b11, 0x0b31, 0x0006, 0x0068, 0x0bcf, 0x0b73, 0xffff, + 0xffff, 0x0b91, 0x0baf, 0x0003, 0x0000, 0x07f3, 0x07f8, 0x0003, + 0x0068, 0x0bed, 0x0c03, 0x0c13, 0x0002, 0x07fb, 0x0803, 0x0006, + // Entry 48880 - 488BF + 0x0068, 0x0b53, 0x0af1, 0xffff, 0xffff, 0x0b11, 0x0b31, 0x0006, + 0x0068, 0x0bcf, 0x0b73, 0xffff, 0xffff, 0x0b91, 0x0baf, 0x0003, + 0x0000, 0x080f, 0x0814, 0x0003, 0x0068, 0x0c2d, 0x0c03, 0x0c3a, + 0x0002, 0x0817, 0x081f, 0x0006, 0x0068, 0x0b53, 0x0af1, 0xffff, + 0xffff, 0x0b11, 0x0b31, 0x0006, 0x0068, 0x0bcf, 0x0b73, 0xffff, + 0xffff, 0x0b91, 0x0baf, 0x0003, 0x0000, 0x082b, 0x0830, 0x0003, + 0x0068, 0x0c49, 0x0c65, 0x0c7b, 0x0002, 0x0833, 0x083b, 0x0006, + 0x0068, 0x0cb7, 0x0c9b, 0xffff, 0xffff, 0x0cb7, 0x0cd3, 0x0006, + // Entry 488C0 - 488FF + 0x0068, 0x0d07, 0x0ced, 0xffff, 0xffff, 0x0d07, 0x0d21, 0x0003, + 0x0000, 0x0847, 0x084c, 0x0003, 0x0068, 0x0d39, 0x0d4d, 0x0d5b, + 0x0002, 0x084f, 0x0857, 0x0006, 0x0068, 0x0cb7, 0x0c9b, 0xffff, + 0xffff, 0x0cb7, 0x0cd3, 0x0006, 0x0068, 0x0d07, 0x0ced, 0xffff, + 0xffff, 0x0d07, 0x0d21, 0x0003, 0x0000, 0x0863, 0x0868, 0x0003, + 0x0068, 0x0d73, 0x0d4d, 0x0d80, 0x0002, 0x086b, 0x0873, 0x0006, + 0x0068, 0x0cb7, 0x0c9b, 0xffff, 0xffff, 0x0cb7, 0x0cd3, 0x0006, + 0x0068, 0x0d07, 0x0ced, 0xffff, 0xffff, 0x0d07, 0x0d21, 0x0003, + // Entry 48900 - 4893F + 0x0000, 0x087f, 0x0884, 0x0003, 0x0068, 0x0d8f, 0x0db1, 0x0dcd, + 0x0002, 0x0887, 0x088f, 0x0006, 0x0068, 0x0e51, 0x0df3, 0xffff, + 0xffff, 0x0e0f, 0x0e2f, 0x0006, 0x0068, 0x0ec9, 0x0e71, 0xffff, + 0xffff, 0x0e8b, 0x0ea9, 0x0003, 0x0000, 0x089b, 0x08a0, 0x0003, + 0x0068, 0x0ee7, 0x0efd, 0x0f0d, 0x0002, 0x08a3, 0x08ab, 0x0006, + 0x0068, 0x0e51, 0x0df3, 0xffff, 0xffff, 0x0e0f, 0x0e2f, 0x0006, + 0x0068, 0x0ec9, 0x0e71, 0xffff, 0xffff, 0x0e8b, 0x0ea9, 0x0003, + 0x0000, 0x08b7, 0x08bc, 0x0003, 0x0068, 0x0f27, 0x0efd, 0x0f34, + // Entry 48940 - 4897F + 0x0002, 0x08bf, 0x08c7, 0x0006, 0x0068, 0x0e51, 0x0df3, 0xffff, + 0xffff, 0x0e0f, 0x0e2f, 0x0006, 0x0068, 0x0ec9, 0x0e71, 0xffff, + 0xffff, 0x0e8b, 0x0ea9, 0x0003, 0x0000, 0x08d3, 0x08d8, 0x0003, + 0x0068, 0x0f43, 0x0f63, 0x0f7d, 0x0002, 0x08db, 0x08e3, 0x0006, + 0x0068, 0x0fc1, 0x0fa1, 0xffff, 0xffff, 0x0fc1, 0x0fe1, 0x0006, + 0x0068, 0x101f, 0x1001, 0xffff, 0xffff, 0x101f, 0x103d, 0x0003, + 0x0000, 0x08ef, 0x08f4, 0x0003, 0x0068, 0x105b, 0x106f, 0x107d, + 0x0002, 0x08f7, 0x08ff, 0x0006, 0x0068, 0x0fc1, 0x0fa1, 0xffff, + // Entry 48980 - 489BF + 0xffff, 0x0fc1, 0x0fe1, 0x0006, 0x0068, 0x101f, 0x1001, 0xffff, + 0xffff, 0x101f, 0x103d, 0x0003, 0x0000, 0x090b, 0x0910, 0x0003, + 0x0068, 0x1095, 0x106f, 0x10a2, 0x0002, 0x0913, 0x091b, 0x0006, + 0x0068, 0x0fc1, 0x0fa1, 0xffff, 0xffff, 0x0fc1, 0x0fe1, 0x0006, + 0x0068, 0x101f, 0x1001, 0xffff, 0xffff, 0x101f, 0x103d, 0x0003, + 0x0000, 0x0927, 0x092c, 0x0003, 0x0068, 0x10b1, 0x10cd, 0x10e3, + 0x0002, 0x092f, 0x0937, 0x0006, 0x0068, 0x111f, 0x1103, 0xffff, + 0xffff, 0x111f, 0x113b, 0x0006, 0x0068, 0x116f, 0x1155, 0xffff, + // Entry 489C0 - 489FF + 0xffff, 0x116f, 0x1189, 0x0003, 0x0000, 0x0943, 0x0948, 0x0003, + 0x0068, 0x11a1, 0x11b5, 0x11c3, 0x0002, 0x094b, 0x0953, 0x0006, + 0x0068, 0x111f, 0x1103, 0xffff, 0xffff, 0x111f, 0x113b, 0x0006, + 0x0068, 0x116f, 0x1155, 0xffff, 0xffff, 0x116f, 0x1189, 0x0003, + 0x0000, 0x095f, 0x0964, 0x0003, 0x0068, 0x11db, 0x11b5, 0x11e8, + 0x0002, 0x0967, 0x096f, 0x0006, 0x0068, 0x111f, 0x1103, 0xffff, + 0xffff, 0x111f, 0x113b, 0x0006, 0x0068, 0x116f, 0x1155, 0xffff, + 0xffff, 0x116f, 0x1189, 0x0001, 0x0979, 0x0001, 0x0068, 0x11f7, + // Entry 48A00 - 48A3F + 0x0003, 0x0980, 0x0983, 0x0987, 0x0001, 0x0009, 0x087e, 0x0002, + 0x0068, 0xffff, 0x120f, 0x0002, 0x098a, 0x0992, 0x0006, 0x0068, + 0x1241, 0x1225, 0xffff, 0xffff, 0x1241, 0x125d, 0x0006, 0x0068, + 0x1291, 0x1277, 0xffff, 0xffff, 0x1291, 0x12ab, 0x0003, 0x099e, + 0x09a1, 0x09a5, 0x0001, 0x0008, 0x0a09, 0x0002, 0x0068, 0xffff, + 0x120f, 0x0002, 0x09a8, 0x09b0, 0x0006, 0x0055, 0x00e5, 0x00e5, + 0xffff, 0xffff, 0x00e5, 0x00e5, 0x0006, 0x0068, 0x12c3, 0x12c3, + 0xffff, 0xffff, 0x12c3, 0x12c3, 0x0003, 0x09bc, 0x09bf, 0x09c3, + // Entry 48A40 - 48A7F + 0x0001, 0x0008, 0x0a09, 0x0002, 0x0068, 0xffff, 0x120f, 0x0002, + 0x09c6, 0x09ce, 0x0006, 0x0068, 0x12d7, 0x12d7, 0xffff, 0xffff, + 0x12d7, 0x12d7, 0x0006, 0x0068, 0x12c3, 0x12c3, 0xffff, 0xffff, + 0x12c3, 0x12c3, 0x0003, 0x09da, 0x09dd, 0x09e1, 0x0001, 0x0068, + 0x12e7, 0x0002, 0x0068, 0xffff, 0x12f6, 0x0002, 0x09e4, 0x09ec, + 0x0006, 0x0068, 0x132c, 0x130e, 0xffff, 0xffff, 0x132c, 0x134a, + 0x0006, 0x0068, 0x1382, 0x1366, 0xffff, 0xffff, 0x1382, 0x139e, + 0x0003, 0x09f8, 0x09fb, 0x09ff, 0x0001, 0x0008, 0x1c7b, 0x0002, + // Entry 48A80 - 48ABF + 0x0068, 0xffff, 0x12f6, 0x0002, 0x0a02, 0x0a0a, 0x0006, 0x0068, + 0x13b8, 0x13b8, 0xffff, 0xffff, 0x13b8, 0x13b8, 0x0006, 0x0068, + 0x13cc, 0x13cc, 0xffff, 0xffff, 0x13cc, 0x13cc, 0x0003, 0x0a16, + 0x0a19, 0x0a1d, 0x0001, 0x0008, 0x1c7b, 0x0002, 0x0068, 0xffff, + 0x12f6, 0x0002, 0x0a20, 0x0a28, 0x0006, 0x0068, 0x13de, 0x13de, + 0xffff, 0xffff, 0x13de, 0x13de, 0x0006, 0x0068, 0x13cc, 0x13cc, + 0xffff, 0xffff, 0x13cc, 0x13cc, 0x0003, 0x0a34, 0x0a37, 0x0a3b, + 0x0001, 0x0008, 0x1ca4, 0x0002, 0x0068, 0xffff, 0x13ec, 0x0002, + // Entry 48AC0 - 48AFF + 0x0a3e, 0x0a46, 0x0006, 0x0055, 0x48ce, 0x1546, 0xffff, 0xffff, + 0x48ce, 0x1582, 0x0006, 0x0068, 0x1413, 0x13f7, 0xffff, 0xffff, + 0x1413, 0x142f, 0x0003, 0x0a52, 0x0000, 0x0a55, 0x0001, 0x000e, + 0x01f0, 0x0002, 0x0a58, 0x0a60, 0x0006, 0x0068, 0x1449, 0x1449, + 0xffff, 0xffff, 0x1449, 0x1449, 0x0006, 0x0068, 0x145b, 0x145b, + 0xffff, 0xffff, 0x145b, 0x145b, 0x0003, 0x0a6c, 0x0000, 0x0a6f, + 0x0001, 0x000e, 0x01f0, 0x0002, 0x0a72, 0x0a7a, 0x0006, 0x0068, + 0x146b, 0x146b, 0xffff, 0xffff, 0x146b, 0x146b, 0x0006, 0x0068, + // Entry 48B00 - 48B3F + 0x145b, 0x145b, 0xffff, 0xffff, 0x145b, 0x145b, 0x0001, 0x0a84, + 0x0001, 0x0068, 0x1477, 0x0004, 0x0a8c, 0x0a91, 0x0a96, 0x0aa5, + 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0068, 0x148f, + 0x149b, 0x14b5, 0x0002, 0x0000, 0x0a99, 0x0003, 0x0000, 0x0aa0, + 0x0a9d, 0x0001, 0x0068, 0x14d9, 0x0003, 0x0068, 0xffff, 0x1510, + 0x1550, 0x0002, 0x0000, 0x0aa8, 0x0003, 0x0aac, 0x0bec, 0x0b4c, + 0x009e, 0x0068, 0xffff, 0xffff, 0xffff, 0xffff, 0x16af, 0x1778, + 0x1802, 0x1898, 0x19b2, 0x1ab4, 0x1bbc, 0x1ce8, 0x1d4d, 0x1dc5, + // Entry 48B40 - 48B7F + 0x1e52, 0x1ef7, 0x1fcb, 0x2064, 0x20fd, 0x21e4, 0x22fe, 0x23cd, + 0x24a2, 0x254a, 0x2619, 0xffff, 0xffff, 0x26f8, 0xffff, 0x27b7, + 0xffff, 0x28d9, 0x299c, 0x2a2f, 0x2ac2, 0xffff, 0xffff, 0x2bc2, + 0x2c67, 0x2d18, 0xffff, 0xffff, 0xffff, 0x2e14, 0xffff, 0x2ee9, + 0x2fc4, 0xffff, 0x30cb, 0x3194, 0x327b, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3416, 0xffff, 0xffff, 0x34e9, 0x35b2, 0xffff, 0xffff, + 0x36fa, 0x37c6, 0x3856, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3a22, 0x3aaf, 0x3b42, 0x3be1, 0x3c6e, 0xffff, 0xffff, + // Entry 48B80 - 48BBF + 0x3d77, 0xffff, 0x3e3b, 0xffff, 0xffff, 0x3f4a, 0xffff, 0x403f, + 0xffff, 0xffff, 0xffff, 0xffff, 0x41a0, 0xffff, 0x4294, 0x4381, + 0x4462, 0x4501, 0xffff, 0xffff, 0xffff, 0x4609, 0x46f9, 0x47aa, + 0xffff, 0xffff, 0x48d4, 0x49e5, 0x4a90, 0x4b11, 0xffff, 0xffff, + 0x4c1d, 0x4cc2, 0x4d3a, 0xffff, 0x4e0f, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x5075, 0x5114, 0x51a7, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x53c0, 0xffff, 0xffff, 0x54a5, + 0xffff, 0x558b, 0xffff, 0x566c, 0x56f6, 0x5798, 0xffff, 0x5881, + // Entry 48BC0 - 48BFF + 0x5932, 0xffff, 0xffff, 0xffff, 0x5a7e, 0x5b0b, 0xffff, 0xffff, + 0x1581, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4f98, + 0x009e, 0x0068, 0x15da, 0x1604, 0x1641, 0x1676, 0x16e6, 0x179a, + 0x1828, 0x18ea, 0x19fc, 0x1b00, 0x1c14, 0x1cfd, 0x1d69, 0x1de8, + 0x1e7d, 0x1f30, 0x1ff2, 0x208b, 0x213e, 0x2236, 0x2337, 0x2408, + 0x24ce, 0x2583, 0x263f, 0x26af, 0x26cf, 0x2721, 0x2797, 0x27f1, + 0x2889, 0x290e, 0x29c1, 0x2a54, 0x2ae8, 0x2b58, 0x2b89, 0x2bed, + 0x2c96, 0x2d36, 0x2d96, 0x2db4, 0x2de3, 0x2e43, 0x2ec5, 0x2f26, + // Entry 48C00 - 48C3F + 0x2ff9, 0x3087, 0x3102, 0x31d5, 0x329b, 0x32ff, 0x3333, 0x33a3, + 0x33e4, 0x3436, 0x349a, 0x34d1, 0x3520, 0x35eb, 0x36ae, 0x36dc, + 0x3732, 0x37ea, 0x3874, 0x38d4, 0x3910, 0x3947, 0x396d, 0x39ae, + 0x39e7, 0x3a45, 0x3ad4, 0x3b6b, 0x3c04, 0x3c95, 0x3d07, 0x3d3e, + 0x3d9c, 0x3e0a, 0x3e66, 0x3ee0, 0x3f1d, 0x3f7e, 0x400a, 0x4068, + 0x40de, 0x4102, 0x412a, 0x4165, 0x41d5, 0x4263, 0x42d7, 0x43c0, + 0x448b, 0x4528, 0x459a, 0x45ba, 0x45e9, 0x464d, 0x4728, 0x47e7, + 0x4874, 0x48a1, 0x4923, 0x4a12, 0x4aaf, 0x4b37, 0x4ba7, 0x4bd6, + // Entry 48C40 - 48C7F + 0x4c48, 0x4cde, 0x4d64, 0x4ddc, 0x4e58, 0x4f0e, 0x4f43, 0x4f74, + 0x500f, 0x5044, 0x509e, 0x5139, 0x51d6, 0x5258, 0x5297, 0x52bd, + 0x52fa, 0x5340, 0x5364, 0x5391, 0x53e0, 0x5444, 0x5470, 0x54d6, + 0x555c, 0x55b9, 0x5639, 0x568e, 0x5720, 0x57cd, 0x585b, 0x58b0, + 0x595f, 0x59dd, 0x5a0e, 0x5a3b, 0x5aa1, 0x5b3c, 0x3681, 0xffff, + 0x1592, 0xffff, 0xffff, 0xffff, 0xffff, 0x3f0a, 0xffff, 0x4fb3, + 0x009e, 0x0068, 0xffff, 0xffff, 0xffff, 0xffff, 0x1734, 0x17d3, + 0x1865, 0x1953, 0x1a5d, 0x1b63, 0x1c83, 0x1d2a, 0x1d9c, 0x1e22, + // Entry 48C80 - 48CBF + 0x1ebf, 0x1f80, 0x2030, 0x20c9, 0x2196, 0x229f, 0x2387, 0x245a, + 0x2511, 0x25d3, 0x267c, 0xffff, 0xffff, 0x2761, 0xffff, 0x2842, + 0xffff, 0x295a, 0x29fd, 0x2a90, 0x2b25, 0xffff, 0xffff, 0x2c2f, + 0x2cdc, 0x2d6b, 0xffff, 0xffff, 0xffff, 0x2e89, 0xffff, 0x2f7a, + 0x3045, 0xffff, 0x3150, 0x322d, 0x32d2, 0xffff, 0xffff, 0xffff, + 0xffff, 0x346d, 0xffff, 0xffff, 0x356e, 0x363b, 0xffff, 0xffff, + 0x3781, 0x3825, 0x38a9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3a7f, 0x3b10, 0x3bab, 0x3c3e, 0x3cd3, 0xffff, 0xffff, + // Entry 48CC0 - 48CFF + 0x3dd8, 0xffff, 0x3ea8, 0xffff, 0xffff, 0x3fc9, 0xffff, 0x40a8, + 0xffff, 0xffff, 0xffff, 0xffff, 0x4221, 0xffff, 0x4331, 0x4416, + 0x44cb, 0x4566, 0xffff, 0xffff, 0xffff, 0x46a8, 0x476e, 0x483b, + 0xffff, 0xffff, 0x4989, 0x4a56, 0x4ae5, 0x4b74, 0xffff, 0xffff, + 0x4c8a, 0x4d11, 0x4da5, 0xffff, 0x4eb8, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x50de, 0x5175, 0x521c, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x5417, 0xffff, 0xffff, 0x551e, + 0xffff, 0x55fe, 0xffff, 0x56c7, 0x5761, 0x5819, 0xffff, 0x58f6, + // Entry 48D00 - 48D3F + 0x59a3, 0xffff, 0xffff, 0xffff, 0x5adb, 0x5b84, 0xffff, 0xffff, + 0x15bb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4fe6, + 0x0003, 0x0004, 0x0282, 0x0685, 0x000b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, 0x0000, 0x0000, 0x025f, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0000, + 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, 0x0003, + 0x014b, 0x0001, 0x0003, 0x015f, 0x0001, 0x0003, 0x0548, 0x0001, + 0x0000, 0x236f, 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, 0x0001, + // Entry 48D40 - 48D7F + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, 0x00a9, 0x0100, 0x0135, + 0x0212, 0x022c, 0x023d, 0x024e, 0x0002, 0x0047, 0x0078, 0x0003, + 0x004b, 0x005a, 0x0069, 0x000d, 0x0022, 0xffff, 0x0000, 0x305d, + 0x30f0, 0x30f9, 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, 0x3112, + 0x311f, 0x312a, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, 0x29f4, + 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, 0x29fc, + 0x29fe, 0x000d, 0x0022, 0xffff, 0x0000, 0x305d, 0x30f0, 0x30f9, + // Entry 48D80 - 48DBF + 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, 0x3112, 0x311f, 0x312a, + 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, 0x0022, 0xffff, 0x0000, + 0x305d, 0x30f0, 0x30f9, 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, + 0x3112, 0x311f, 0x312a, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, + 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, + 0x29fc, 0x29fe, 0x000d, 0x0022, 0xffff, 0x0000, 0x305d, 0x30f0, + 0x30f9, 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, 0x3112, 0x311f, + 0x312a, 0x0002, 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, 0x00cd, + // Entry 48DC0 - 48DFF + 0x0000, 0x00c4, 0x0007, 0x0050, 0x0000, 0x2946, 0x0012, 0x2953, + 0x0024, 0x0031, 0x003a, 0x0007, 0x0017, 0x2a09, 0x29f4, 0x2a0b, + 0x29d5, 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0050, 0x0000, 0x2946, + 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, 0x0050, 0x0000, + 0x2946, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0005, 0x00dc, + 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, 0x0050, 0x0000, 0x2946, + 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, 0x0017, 0x2a09, + 0x29f4, 0x2a0b, 0x29d5, 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0050, + // Entry 48E00 - 48E3F + 0x0000, 0x2946, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, + 0x0050, 0x0000, 0x2946, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, + 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, + 0x0069, 0xffff, 0x0000, 0x0017, 0x0030, 0x0049, 0x0005, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0069, 0xffff, + 0x0000, 0x0017, 0x0030, 0x0049, 0x0003, 0x0120, 0x0127, 0x012e, + 0x0005, 0x0069, 0xffff, 0x0000, 0x0017, 0x0030, 0x0049, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0069, + // Entry 48E40 - 48E7F + 0xffff, 0x0000, 0x0017, 0x0030, 0x0049, 0x0002, 0x0138, 0x01a5, + 0x0003, 0x013c, 0x015f, 0x0182, 0x000a, 0x014a, 0x014d, 0x0147, + 0x0150, 0x0153, 0x0159, 0x015c, 0x0000, 0x0000, 0x0156, 0x0001, + 0x0069, 0x0062, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, + 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0069, 0x0089, 0x000a, + 0x016d, 0x0170, 0x016a, 0x0173, 0x0176, 0x017c, 0x017f, 0x0000, + 0x0000, 0x0179, 0x0001, 0x0069, 0x0062, 0x0001, 0x0000, 0x1f9c, + // Entry 48E80 - 48EBF + 0x0001, 0x0000, 0x21ec, 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, + 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, + 0x0069, 0x0089, 0x000a, 0x0190, 0x0193, 0x018d, 0x0196, 0x0199, + 0x019f, 0x01a2, 0x0000, 0x0000, 0x019c, 0x0001, 0x0069, 0x0062, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0021, + 0x053a, 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, + 0x0022, 0x00e1, 0x0001, 0x0069, 0x0089, 0x0003, 0x01a9, 0x01cc, + 0x01ef, 0x000a, 0x01b7, 0x01ba, 0x01b4, 0x01bd, 0x01c0, 0x01c6, + // Entry 48EC0 - 48EFF + 0x01c9, 0x0000, 0x0000, 0x01c3, 0x0001, 0x0069, 0x0062, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0021, 0x053a, + 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, 0x0022, + 0x00e1, 0x0001, 0x0069, 0x0089, 0x000a, 0x01da, 0x01dd, 0x01d7, + 0x01e0, 0x01e3, 0x01e9, 0x01ec, 0x0000, 0x0000, 0x01e6, 0x0001, + 0x0069, 0x0062, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, + 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, + 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0069, 0x0089, 0x000a, + // Entry 48F00 - 48F3F + 0x01fd, 0x0200, 0x01fa, 0x0203, 0x0206, 0x020c, 0x020f, 0x0000, + 0x0000, 0x0209, 0x0001, 0x0069, 0x0062, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, + 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, + 0x0069, 0x0089, 0x0003, 0x0221, 0x0000, 0x0216, 0x0002, 0x0219, + 0x021d, 0x0002, 0x0069, 0x0090, 0x00ba, 0x0002, 0x0069, 0x00a0, + 0x00c5, 0x0002, 0x0224, 0x0228, 0x0002, 0x0069, 0x0090, 0x00ba, + 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x023a, 0x0234, 0x0231, + // Entry 48F40 - 48F7F + 0x0237, 0x0001, 0x0003, 0x03bc, 0x0001, 0x0003, 0x03ce, 0x0001, + 0x0000, 0x0514, 0x0001, 0x0000, 0x237b, 0x0004, 0x024b, 0x0245, + 0x0242, 0x0248, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x025c, + 0x0256, 0x0253, 0x0259, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, + 0x0265, 0x0000, 0x0000, 0x0000, 0x027a, 0x0001, 0x0267, 0x0003, + 0x0000, 0x0000, 0x026b, 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, + // Entry 48F80 - 48FBF + 0x224a, 0x225f, 0x211f, 0x2135, 0x04fb, 0x0502, 0x050d, 0x0518, + 0x2276, 0x2287, 0x0001, 0x027c, 0x0001, 0x027e, 0x0002, 0x0069, + 0x00d3, 0x00d9, 0x0040, 0x02c3, 0x0000, 0x0000, 0x02c8, 0x02df, + 0x02f6, 0x030d, 0x0324, 0x0336, 0x0348, 0x035f, 0x0376, 0x0388, + 0x03a3, 0x03be, 0x0000, 0x0000, 0x0000, 0x03d9, 0x03f2, 0x040b, + 0x0000, 0x0000, 0x0000, 0x0424, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0429, 0x043d, 0x0451, 0x0465, 0x0479, 0x048d, 0x04a1, + 0x04b5, 0x04c9, 0x04dd, 0x04f1, 0x0505, 0x0519, 0x052d, 0x0541, + // Entry 48FC0 - 48FFF + 0x0555, 0x0569, 0x057d, 0x0591, 0x05a5, 0x05b9, 0x0000, 0x05cd, + 0x0000, 0x05d2, 0x05e8, 0x05fa, 0x060c, 0x0622, 0x0634, 0x0646, + 0x065c, 0x066e, 0x0680, 0x0001, 0x02c5, 0x0001, 0x0069, 0x00e9, + 0x0003, 0x02cc, 0x02cf, 0x02d4, 0x0001, 0x0021, 0x0765, 0x0003, + 0x0069, 0x00f0, 0x0102, 0x010e, 0x0002, 0x02d7, 0x02db, 0x0002, + 0x0069, 0x011e, 0x011e, 0x0002, 0x0069, 0x0130, 0x0130, 0x0003, + 0x02e3, 0x02e6, 0x02eb, 0x0001, 0x0021, 0x0765, 0x0003, 0x0069, + 0x00f0, 0x0102, 0x010e, 0x0002, 0x02ee, 0x02f2, 0x0002, 0x0069, + // Entry 49000 - 4903F + 0x011e, 0x011e, 0x0002, 0x0069, 0x0130, 0x0130, 0x0003, 0x02fa, + 0x02fd, 0x0302, 0x0001, 0x0021, 0x0765, 0x0003, 0x0069, 0x00f0, + 0x0102, 0x010e, 0x0002, 0x0305, 0x0309, 0x0002, 0x0069, 0x011e, + 0x011e, 0x0002, 0x0069, 0x0130, 0x0130, 0x0003, 0x0311, 0x0314, + 0x0319, 0x0001, 0x0069, 0x0144, 0x0003, 0x0069, 0x0152, 0x016b, + 0x017e, 0x0002, 0x031c, 0x0320, 0x0002, 0x0069, 0x0195, 0x0195, + 0x0002, 0x0069, 0x01a8, 0x01a8, 0x0003, 0x0328, 0x0000, 0x032b, + 0x0001, 0x0069, 0x0144, 0x0002, 0x032e, 0x0332, 0x0002, 0x0069, + // Entry 49040 - 4907F + 0x01bb, 0x01bb, 0x0002, 0x0069, 0x01d4, 0x01d4, 0x0003, 0x033a, + 0x0000, 0x033d, 0x0001, 0x0069, 0x0144, 0x0002, 0x0340, 0x0344, + 0x0002, 0x0069, 0x01bb, 0x01bb, 0x0002, 0x0069, 0x01ed, 0x01ed, + 0x0003, 0x034c, 0x034f, 0x0354, 0x0001, 0x0069, 0x0208, 0x0003, + 0x0069, 0x0213, 0x0229, 0x0239, 0x0002, 0x0357, 0x035b, 0x0002, + 0x0069, 0x0263, 0x024d, 0x0002, 0x0069, 0x0291, 0x0279, 0x0003, + 0x0363, 0x0366, 0x036b, 0x0001, 0x0069, 0x02a9, 0x0003, 0x0069, + 0x0213, 0x0229, 0x0239, 0x0002, 0x036e, 0x0372, 0x0002, 0x0069, + // Entry 49080 - 490BF + 0x02b0, 0x02b0, 0x0002, 0x0069, 0x02c2, 0x02c2, 0x0003, 0x037a, + 0x0000, 0x037d, 0x0001, 0x0069, 0x02a9, 0x0002, 0x0380, 0x0384, + 0x0002, 0x0069, 0x02b0, 0x02d4, 0x0002, 0x0069, 0x02e7, 0x02e7, + 0x0004, 0x038d, 0x0390, 0x0395, 0x03a0, 0x0001, 0x0050, 0x003a, + 0x0003, 0x0069, 0x02fb, 0x030f, 0x031d, 0x0002, 0x0398, 0x039c, + 0x0002, 0x0069, 0x0343, 0x032f, 0x0002, 0x0069, 0x036d, 0x0357, + 0x0001, 0x0069, 0x0383, 0x0004, 0x03a8, 0x03ab, 0x03b0, 0x03bb, + 0x0001, 0x0050, 0x003a, 0x0003, 0x0069, 0x02fb, 0x030f, 0x031d, + // Entry 490C0 - 490FF + 0x0002, 0x03b3, 0x03b7, 0x0002, 0x0069, 0x0343, 0x0343, 0x0002, + 0x0069, 0x036d, 0x036d, 0x0001, 0x0069, 0x0383, 0x0004, 0x03c3, + 0x03c6, 0x03cb, 0x03d6, 0x0001, 0x0050, 0x003a, 0x0003, 0x0069, + 0x02fb, 0x030f, 0x031d, 0x0002, 0x03ce, 0x03d2, 0x0002, 0x0069, + 0x0343, 0x032f, 0x0002, 0x0069, 0x036d, 0x0357, 0x0001, 0x0069, + 0x0383, 0x0003, 0x03dd, 0x03e0, 0x03e7, 0x0001, 0x0069, 0x0395, + 0x0005, 0x0069, 0x03b0, 0x03c0, 0x03c5, 0x039a, 0x03d5, 0x0002, + 0x03ea, 0x03ee, 0x0002, 0x0069, 0x0400, 0x03f0, 0x0002, 0x0069, + // Entry 49100 - 4913F + 0x0426, 0x0414, 0x0003, 0x03f6, 0x03f9, 0x0400, 0x0001, 0x0069, + 0x0395, 0x0005, 0x0069, 0x03b0, 0x03c0, 0x03c5, 0x039a, 0x03d5, + 0x0002, 0x0403, 0x0407, 0x0002, 0x0069, 0x0400, 0x03f0, 0x0002, + 0x0069, 0x0426, 0x0414, 0x0003, 0x040f, 0x0412, 0x0419, 0x0001, + 0x0069, 0x0395, 0x0005, 0x0069, 0x03b0, 0x03c0, 0x03c5, 0x039a, + 0x03d5, 0x0002, 0x041c, 0x0420, 0x0002, 0x0069, 0x0400, 0x0400, + 0x0002, 0x0069, 0x0414, 0x0414, 0x0001, 0x0426, 0x0001, 0x0069, + 0x043c, 0x0003, 0x0000, 0x042d, 0x0432, 0x0003, 0x0069, 0x044f, + // Entry 49140 - 4917F + 0x0465, 0x0475, 0x0002, 0x0435, 0x0439, 0x0002, 0x0069, 0x0489, + 0x0489, 0x0002, 0x0069, 0x049f, 0x049f, 0x0003, 0x0000, 0x0441, + 0x0446, 0x0003, 0x0069, 0x044f, 0x0465, 0x0475, 0x0002, 0x0449, + 0x044d, 0x0002, 0x0069, 0x0489, 0x0489, 0x0002, 0x0069, 0x049f, + 0x049f, 0x0003, 0x0000, 0x0455, 0x045a, 0x0003, 0x0069, 0x044f, + 0x0465, 0x0475, 0x0002, 0x045d, 0x0461, 0x0002, 0x0069, 0x0489, + 0x0489, 0x0002, 0x0069, 0x049f, 0x049f, 0x0003, 0x0000, 0x0469, + 0x046e, 0x0003, 0x0069, 0x04b5, 0x04cd, 0x04df, 0x0002, 0x0471, + // Entry 49180 - 491BF + 0x0475, 0x0002, 0x0069, 0x04f5, 0x04f5, 0x0002, 0x0069, 0x0507, + 0x0507, 0x0003, 0x0000, 0x047d, 0x0482, 0x0003, 0x0069, 0x04b5, + 0x04cd, 0x04df, 0x0002, 0x0485, 0x0489, 0x0002, 0x0069, 0x04f5, + 0x0519, 0x0002, 0x0069, 0x0507, 0x0507, 0x0003, 0x0000, 0x0491, + 0x0496, 0x0003, 0x0069, 0x04b5, 0x04cd, 0x04df, 0x0002, 0x0499, + 0x049d, 0x0002, 0x0069, 0x04f5, 0x04f5, 0x0002, 0x0069, 0x0507, + 0x0507, 0x0003, 0x0000, 0x04a5, 0x04aa, 0x0003, 0x0069, 0x0531, + 0x0545, 0x0553, 0x0002, 0x04ad, 0x04b1, 0x0002, 0x0069, 0x0565, + // Entry 491C0 - 491FF + 0x0565, 0x0002, 0x0069, 0x0579, 0x0579, 0x0003, 0x0000, 0x04b9, + 0x04be, 0x0003, 0x0069, 0x0531, 0x0545, 0x0553, 0x0002, 0x04c1, + 0x04c5, 0x0002, 0x0069, 0x0565, 0x0565, 0x0002, 0x0069, 0x0579, + 0x0579, 0x0003, 0x0000, 0x04cd, 0x04d2, 0x0003, 0x0069, 0x0531, + 0x0545, 0x0553, 0x0002, 0x04d5, 0x04d9, 0x0002, 0x0069, 0x0565, + 0x0565, 0x0002, 0x0069, 0x0579, 0x0579, 0x0003, 0x0000, 0x04e1, + 0x04e6, 0x0003, 0x0069, 0x058d, 0x059f, 0x05ab, 0x0002, 0x04e9, + 0x04ed, 0x0002, 0x0069, 0x05bb, 0x05bb, 0x0002, 0x0069, 0x05cd, + // Entry 49200 - 4923F + 0x05cd, 0x0003, 0x0000, 0x04f5, 0x04fa, 0x0003, 0x0069, 0x058d, + 0x059f, 0x05ab, 0x0002, 0x04fd, 0x0501, 0x0002, 0x0069, 0x05bb, + 0x05bb, 0x0002, 0x0069, 0x05cd, 0x05cd, 0x0003, 0x0000, 0x0509, + 0x050e, 0x0003, 0x0069, 0x058d, 0x059f, 0x05ab, 0x0002, 0x0511, + 0x0515, 0x0002, 0x0069, 0x05bb, 0x05bb, 0x0002, 0x0069, 0x05cd, + 0x05cd, 0x0003, 0x0000, 0x051d, 0x0522, 0x0003, 0x0069, 0x05df, + 0x05f7, 0x0609, 0x0002, 0x0525, 0x0529, 0x0002, 0x0069, 0x061f, + 0x061f, 0x0002, 0x0069, 0x0637, 0x0637, 0x0003, 0x0000, 0x0531, + // Entry 49240 - 4927F + 0x0536, 0x0003, 0x0069, 0x05df, 0x05f7, 0x0609, 0x0002, 0x0539, + 0x053d, 0x0002, 0x0069, 0x061f, 0x061f, 0x0002, 0x0069, 0x0637, + 0x0637, 0x0003, 0x0000, 0x0545, 0x054a, 0x0003, 0x0069, 0x05df, + 0x05f7, 0x064f, 0x0002, 0x054d, 0x0551, 0x0002, 0x0069, 0x061f, + 0x061f, 0x0002, 0x0069, 0x0637, 0x0637, 0x0003, 0x0000, 0x0559, + 0x055e, 0x0003, 0x0069, 0x0665, 0x0679, 0x0687, 0x0002, 0x0561, + 0x0565, 0x0002, 0x0069, 0x0699, 0x0699, 0x0002, 0x0069, 0x06ad, + 0x06ad, 0x0003, 0x0000, 0x056d, 0x0572, 0x0003, 0x0069, 0x0665, + // Entry 49280 - 492BF + 0x0679, 0x0687, 0x0002, 0x0575, 0x0579, 0x0002, 0x0069, 0x0699, + 0x0699, 0x0002, 0x0069, 0x06ad, 0x06ad, 0x0003, 0x0000, 0x0581, + 0x0586, 0x0003, 0x0069, 0x0665, 0x0679, 0x0687, 0x0002, 0x0589, + 0x058d, 0x0002, 0x0069, 0x0699, 0x0699, 0x0002, 0x0069, 0x06ad, + 0x06ad, 0x0003, 0x0000, 0x0595, 0x059a, 0x0003, 0x0069, 0x06c1, + 0x06d7, 0x06e7, 0x0002, 0x059d, 0x05a1, 0x0002, 0x0069, 0x06fb, + 0x06fb, 0x0002, 0x0069, 0x0711, 0x0711, 0x0003, 0x0000, 0x05a9, + 0x05ae, 0x0003, 0x0069, 0x06c1, 0x06d7, 0x06e7, 0x0002, 0x05b1, + // Entry 492C0 - 492FF + 0x05b5, 0x0002, 0x0069, 0x06fb, 0x06fb, 0x0002, 0x0069, 0x0711, + 0x0711, 0x0003, 0x0000, 0x05bd, 0x05c2, 0x0003, 0x0069, 0x06c1, + 0x06d7, 0x06e7, 0x0002, 0x05c5, 0x05c9, 0x0002, 0x0069, 0x06fb, + 0x06fb, 0x0002, 0x0069, 0x0711, 0x0711, 0x0001, 0x05cf, 0x0001, + 0x0069, 0x0727, 0x0003, 0x05d6, 0x05d9, 0x05dd, 0x0001, 0x0069, + 0x074b, 0x0002, 0x0069, 0xffff, 0x0756, 0x0002, 0x05e0, 0x05e4, + 0x0002, 0x0069, 0x077c, 0x0766, 0x0002, 0x0069, 0x07aa, 0x0792, + 0x0003, 0x05ec, 0x0000, 0x05ef, 0x0001, 0x0069, 0x074b, 0x0002, + // Entry 49300 - 4933F + 0x05f2, 0x05f6, 0x0002, 0x0069, 0x077c, 0x077c, 0x0002, 0x0069, + 0x07aa, 0x07aa, 0x0003, 0x05fe, 0x0000, 0x0601, 0x0001, 0x0069, + 0x074b, 0x0002, 0x0604, 0x0608, 0x0002, 0x0069, 0x07c2, 0x0766, + 0x0002, 0x0069, 0x07aa, 0x0792, 0x0003, 0x0610, 0x0613, 0x0617, + 0x0001, 0x0050, 0x00ee, 0x0002, 0x0069, 0xffff, 0x07da, 0x0002, + 0x061a, 0x061e, 0x0002, 0x0069, 0x07e6, 0x07e6, 0x0002, 0x0069, + 0x07f8, 0x07f8, 0x0003, 0x0626, 0x0000, 0x0629, 0x0001, 0x0050, + 0x00ee, 0x0002, 0x062c, 0x0630, 0x0002, 0x0069, 0x07e6, 0x07e6, + // Entry 49340 - 4937F + 0x0002, 0x0069, 0x07f8, 0x07f8, 0x0003, 0x0638, 0x0000, 0x063b, + 0x0001, 0x0050, 0x00ee, 0x0002, 0x063e, 0x0642, 0x0002, 0x0069, + 0x07e6, 0x07e6, 0x0002, 0x0069, 0x07f8, 0x07f8, 0x0003, 0x064a, + 0x064d, 0x0651, 0x0001, 0x0069, 0x080c, 0x0002, 0x0069, 0xffff, + 0x0817, 0x0002, 0x0654, 0x0658, 0x0002, 0x0069, 0x081c, 0x081c, + 0x0002, 0x0069, 0x0832, 0x0832, 0x0003, 0x0660, 0x0000, 0x0663, + 0x0001, 0x0069, 0x080c, 0x0002, 0x0666, 0x066a, 0x0002, 0x0069, + 0x081c, 0x081c, 0x0002, 0x0069, 0x0832, 0x0832, 0x0003, 0x0672, + // Entry 49380 - 493BF + 0x0000, 0x0675, 0x0001, 0x0069, 0x080c, 0x0002, 0x0678, 0x067c, + 0x0002, 0x0069, 0x081c, 0x081c, 0x0002, 0x0069, 0x0832, 0x0832, + 0x0001, 0x0682, 0x0001, 0x0069, 0x084a, 0x0004, 0x068a, 0x068f, + 0x0694, 0x06a3, 0x0003, 0x0000, 0x1dc7, 0x40ac, 0x40b4, 0x0003, + 0x0069, 0x085c, 0x0867, 0x0870, 0x0002, 0x0000, 0x0697, 0x0003, + 0x0000, 0x069e, 0x069b, 0x0001, 0x0069, 0x0879, 0x0003, 0x0069, + 0xffff, 0x08a8, 0x08c1, 0x0002, 0x0000, 0x06a6, 0x0003, 0x0740, + 0x07d6, 0x06aa, 0x0094, 0x0069, 0x08e4, 0x0903, 0x0922, 0x0943, + // Entry 493C0 - 493FF + 0x0994, 0x0a02, 0x0a63, 0x0ace, 0x0b2b, 0x0b8e, 0x0bf1, 0x0c4c, + 0x0ca0, 0x0cf8, 0x0d50, 0x0dc2, 0x0e51, 0x0ec3, 0x0f37, 0x0fd2, + 0x107c, 0x1110, 0x119e, 0x121d, 0x1291, 0x12f1, 0x130a, 0x133f, + 0x138b, 0x13cd, 0x1415, 0x144e, 0x14a8, 0x1502, 0x155b, 0x15a7, + 0x15c8, 0x1603, 0x167a, 0x16e5, 0x172c, 0x173e, 0x1768, 0x17ab, + 0x1817, 0x1850, 0x18d0, 0x1934, 0x197a, 0x1a09, 0x1a93, 0x1ac9, + 0x1aeb, 0x1b22, 0x1b41, 0x1b72, 0x1bc8, 0x1beb, 0x1c32, 0x1ccf, + 0x1d46, 0x1d68, 0x1da4, 0x1e28, 0x1e86, 0x1ec0, 0x1eea, 0x1f01, + // Entry 49400 - 4943F + 0x1f18, 0x1f3d, 0x1f64, 0x1fa2, 0x1ffe, 0x205b, 0x20bd, 0x2135, + 0x21b3, 0x21db, 0x2217, 0x225c, 0x2290, 0x22e4, 0x22ff, 0x233b, + 0x2390, 0x23cc, 0x2410, 0x2426, 0x243f, 0x2457, 0x2490, 0x24d2, + 0x2512, 0x25ac, 0x2630, 0x2698, 0x26d8, 0x26f0, 0x2704, 0x273e, + 0x27ba, 0x2836, 0x289d, 0x28af, 0x2902, 0x298d, 0x29f3, 0x2a4c, + 0x2aa6, 0x2ab8, 0x2af7, 0x2b6a, 0x2bce, 0x2c10, 0x2c64, 0x2ce5, + 0x2cfd, 0x2d13, 0x2d2e, 0x2d47, 0x2d78, 0x2dce, 0x2e22, 0x2e67, + 0x2e7d, 0x2ea4, 0x2ec7, 0x2ee8, 0x2f03, 0x2f17, 0x2f48, 0x2f9b, + // Entry 49440 - 4947F + 0x2fb8, 0x2fe4, 0x3022, 0x3053, 0x30b9, 0x30ea, 0x3165, 0x31db, + 0x3221, 0x325f, 0x32cf, 0x331f, 0x3338, 0x3355, 0x3391, 0x33f5, + 0x0094, 0x0069, 0xffff, 0xffff, 0xffff, 0xffff, 0x0973, 0x09ec, + 0x0a4d, 0x0aba, 0x0b15, 0x0b76, 0x0bdd, 0x0c38, 0x0c8c, 0x0ce5, + 0x0d36, 0x0d9a, 0x0e36, 0x0eab, 0x0f12, 0x0fa0, 0x1055, 0x10e9, + 0x117d, 0x1204, 0x1273, 0xffff, 0xffff, 0x1325, 0xffff, 0x13b4, + 0xffff, 0x143a, 0x1495, 0x14f2, 0x1541, 0xffff, 0xffff, 0x15eb, + 0x165d, 0x16d1, 0xffff, 0xffff, 0xffff, 0x1787, 0xffff, 0x1834, + // Entry 49480 - 494BF + 0x18b0, 0xffff, 0x195a, 0x19de, 0x1a83, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1b59, 0xffff, 0xffff, 0x1c0c, 0x1ca9, 0xffff, 0xffff, + 0x1d7f, 0x1e0d, 0x1e74, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1f8b, 0x1fe8, 0x2040, 0x20a9, 0x2102, 0xffff, 0xffff, + 0x2203, 0xffff, 0x2270, 0xffff, 0xffff, 0x2320, 0xffff, 0x23b6, + 0xffff, 0xffff, 0xffff, 0xffff, 0x247a, 0xffff, 0x24e6, 0x2589, + 0x2611, 0x2684, 0xffff, 0xffff, 0xffff, 0x271b, 0x279a, 0x2812, + 0xffff, 0xffff, 0x28d5, 0x296f, 0x29df, 0x2a31, 0xffff, 0xffff, + // Entry 494C0 - 494FF + 0x2ada, 0x2b55, 0x2bb8, 0xffff, 0x2c33, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2d62, 0x2dba, 0x2e0e, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2f2d, 0xffff, 0xffff, 0x2fd0, + 0xffff, 0x3032, 0xffff, 0x30cd, 0x3148, 0x31c3, 0xffff, 0x3240, + 0x32b3, 0xffff, 0xffff, 0xffff, 0x337b, 0x33d5, 0x0094, 0x0069, + 0xffff, 0xffff, 0xffff, 0xffff, 0x09c4, 0x0a29, 0x0a8a, 0x0af3, + 0x0b52, 0x0bb7, 0x0c16, 0x0c71, 0x0cc3, 0x0d18, 0x0d79, 0x0df7, + 0x0e79, 0x0eec, 0x0f6d, 0x1015, 0x10b4, 0x1148, 0x11cc, 0x1243, + // Entry 49500 - 4953F + 0x12bc, 0xffff, 0xffff, 0x136a, 0xffff, 0x13f5, 0xffff, 0x1473, + 0x14c8, 0x1521, 0x1584, 0xffff, 0xffff, 0x162b, 0x16a6, 0x170a, + 0xffff, 0xffff, 0xffff, 0x17dc, 0xffff, 0x187b, 0x18fd, 0xffff, + 0x19a7, 0x1a41, 0x1ab2, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b98, + 0xffff, 0xffff, 0x1c69, 0x1d06, 0xffff, 0xffff, 0x1dda, 0x1e52, + 0x1ea7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fc6, + 0x2023, 0x2083, 0x20e0, 0x2179, 0xffff, 0xffff, 0x223a, 0xffff, + 0x22bd, 0xffff, 0xffff, 0x2367, 0xffff, 0x23f3, 0xffff, 0xffff, + // Entry 49540 - 4957F + 0xffff, 0xffff, 0x24b5, 0xffff, 0x254f, 0x25e0, 0x265e, 0x26bd, + 0xffff, 0xffff, 0xffff, 0x2770, 0x27e7, 0x286b, 0xffff, 0xffff, + 0x293c, 0x29ba, 0x2a16, 0x2a74, 0xffff, 0xffff, 0x2b21, 0x2b8c, + 0x2bf3, 0xffff, 0x2ca6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2d9d, 0x2df3, 0x2e45, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2f74, 0xffff, 0xffff, 0x3007, 0xffff, 0x3081, + 0xffff, 0x3114, 0x318f, 0x3202, 0xffff, 0x328d, 0x32fc, 0xffff, + 0xffff, 0xffff, 0x33b8, 0x3426, 0x0003, 0x0004, 0x0055, 0x0199, + // Entry 49580 - 495BF + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x000d, 0x0002, 0x0000, 0x0010, 0x0002, 0x0013, 0x0034, 0x0005, + 0x0019, 0x0000, 0x002b, 0x0000, 0x0022, 0x0007, 0x0050, 0x0000, + 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, 0x0050, + 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, + 0x0050, 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, + 0x0005, 0x003a, 0x0000, 0x004c, 0x0000, 0x0043, 0x0007, 0x0050, + 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, + // Entry 495C0 - 495FF + 0x0050, 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, + 0x0007, 0x0050, 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, + 0x003a, 0x003f, 0x0095, 0x0000, 0x0000, 0x009a, 0x00a4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x00b3, 0x00c7, 0x00cc, 0x00da, 0x00ee, + 0x00f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x010e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, 0x0121, 0x0000, + 0x0000, 0x0129, 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0139, + // Entry 49600 - 4963F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0141, 0x014c, 0x0157, 0x0162, 0x016d, 0x0178, 0x0183, + 0x018e, 0x0001, 0x0097, 0x0001, 0x003d, 0x0422, 0x0003, 0x0000, + 0x0000, 0x009e, 0x0001, 0x00a0, 0x0002, 0x0069, 0x344d, 0x011e, + 0x0003, 0x0000, 0x0000, 0x00a8, 0x0002, 0x00ab, 0x00af, 0x0002, + 0x0069, 0x344d, 0x011e, 0x0002, 0x0069, 0x3463, 0x0130, 0x0003, + 0x0000, 0x00b7, 0x00bc, 0x0003, 0x006a, 0x0000, 0x0012, 0x001e, + 0x0002, 0x00bf, 0x00c3, 0x0002, 0x0069, 0x02b0, 0x02b0, 0x0002, + // Entry 49640 - 4967F + 0x0069, 0x02c2, 0x02c2, 0x0001, 0x00c9, 0x0001, 0x0069, 0x0208, + 0x0003, 0x00d0, 0x0000, 0x00d3, 0x0001, 0x0069, 0x0208, 0x0002, + 0x0000, 0x00d6, 0x0002, 0x0069, 0x02c2, 0x02c2, 0x0003, 0x0000, + 0x00de, 0x00e3, 0x0003, 0x006a, 0x002e, 0x0042, 0x0050, 0x0002, + 0x00e6, 0x00ea, 0x0002, 0x0069, 0x347b, 0x032f, 0x0002, 0x006a, + 0x0076, 0x0062, 0x0003, 0x0000, 0x0000, 0x00f2, 0x0002, 0x0000, + 0x00f5, 0x0002, 0x006a, 0x0076, 0x0076, 0x0003, 0x0000, 0x0000, + 0x00fd, 0x0002, 0x0000, 0x0100, 0x0002, 0x006a, 0x0076, 0x0062, + // Entry 49680 - 496BF + 0x0003, 0x0000, 0x0000, 0x0108, 0x0001, 0x010a, 0x0002, 0x0069, + 0x0400, 0x0400, 0x0003, 0x0000, 0x0000, 0x0112, 0x0002, 0x0000, + 0x0115, 0x0002, 0x006a, 0x008a, 0x008a, 0x0002, 0x0000, 0x011c, + 0x0003, 0x006a, 0x009a, 0x00b2, 0x00c4, 0x0002, 0x0000, 0x0124, + 0x0003, 0x006a, 0x00da, 0x00ee, 0x00fc, 0x0002, 0x0000, 0x012c, + 0x0003, 0x006a, 0x010e, 0x0120, 0x012c, 0x0002, 0x0000, 0x0134, + 0x0003, 0x006a, 0x013c, 0x0154, 0x0166, 0x0002, 0x0000, 0x013c, + 0x0003, 0x006a, 0x017c, 0x0190, 0x019e, 0x0003, 0x0000, 0x0000, + // Entry 496C0 - 496FF + 0x0145, 0x0002, 0x0000, 0x0148, 0x0002, 0x006a, 0x01b0, 0x01b0, + 0x0003, 0x0000, 0x0000, 0x0150, 0x0002, 0x0000, 0x0153, 0x0002, + 0x006a, 0x01b0, 0x01c6, 0x0003, 0x0000, 0x0000, 0x015b, 0x0002, + 0x0000, 0x015e, 0x0002, 0x006a, 0x01dc, 0x01dc, 0x0003, 0x0000, + 0x0000, 0x0166, 0x0002, 0x0000, 0x0169, 0x0002, 0x006a, 0x01dc, + 0x01dc, 0x0003, 0x0000, 0x0000, 0x0171, 0x0002, 0x0000, 0x0174, + 0x0002, 0x006a, 0x01dc, 0x01dc, 0x0003, 0x0000, 0x0000, 0x017c, + 0x0002, 0x0000, 0x017f, 0x0002, 0x006a, 0x01ee, 0x01ee, 0x0003, + // Entry 49700 - 4973F + 0x0000, 0x0000, 0x0187, 0x0002, 0x0000, 0x018a, 0x0002, 0x006a, + 0x01ee, 0x01ee, 0x0003, 0x0000, 0x0000, 0x0192, 0x0002, 0x0000, + 0x0195, 0x0002, 0x006a, 0x01ee, 0x01ee, 0x0004, 0x019e, 0x01a2, + 0x0000, 0x01a7, 0x0002, 0x0000, 0xffff, 0x40b8, 0x0003, 0x006a, + 0xffff, 0x0204, 0x0219, 0x0002, 0x0000, 0x01aa, 0x0003, 0x0240, + 0x02cd, 0x01ae, 0x0090, 0x006a, 0x0231, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0265, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x02bb, 0xffff, 0x031d, 0x0395, 0xffff, 0xffff, 0xffff, + // Entry 49740 - 4977F + 0xffff, 0xffff, 0x03f9, 0xffff, 0x0466, 0x04b2, 0x04c8, 0x04fa, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0554, 0xffff, 0xffff, 0xffff, + 0xffff, 0x05a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0609, + 0x0661, 0x0699, 0xffff, 0xffff, 0xffff, 0x0721, 0xffff, 0x0787, + 0xffff, 0x07a6, 0xffff, 0x07d8, 0xffff, 0x081a, 0xffff, 0xffff, + 0x0838, 0x0859, 0xffff, 0xffff, 0xffff, 0x086d, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x08a4, 0xffff, 0x0901, 0xffff, 0xffff, + 0x094e, 0x0973, 0xffff, 0xffff, 0xffff, 0x0998, 0xffff, 0xffff, + // Entry 49780 - 497BF + 0x09b0, 0xffff, 0xffff, 0x09d3, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09e9, 0xffff, + 0x0a1a, 0xffff, 0xffff, 0xffff, 0x0a9b, 0xffff, 0xffff, 0x0b1f, + 0xffff, 0xffff, 0x0b7f, 0x0bdb, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0c15, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0c2d, 0xffff, 0xffff, 0xffff, 0x0c45, + 0xffff, 0xffff, 0xffff, 0x0c7d, 0xffff, 0x0ce9, 0x0d4d, 0xffff, + 0x0d97, 0xffff, 0xffff, 0x0db3, 0x008b, 0x006a, 0xffff, 0xffff, + // Entry 497C0 - 497FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x024d, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x02ab, 0xffff, 0x02f8, 0x037d, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x03db, 0xffff, 0x044b, 0xffff, + 0xffff, 0x04e0, 0xffff, 0xffff, 0xffff, 0xffff, 0x0544, 0xffff, + 0xffff, 0xffff, 0xffff, 0x058a, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x05e8, 0xffff, 0x067b, 0xffff, 0xffff, 0xffff, 0x06f9, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07c2, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 49800 - 4983F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0890, 0xffff, 0x08e9, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x09fd, 0xffff, 0xffff, 0xffff, 0x0a71, 0xffff, + 0xffff, 0x0b07, 0xffff, 0xffff, 0x0b65, 0x0bc9, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 49840 - 4987F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c5f, 0xffff, 0x0ccf, + 0x0d33, 0x008b, 0x006a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x028c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x02da, 0xffff, 0x0351, 0x03bc, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0426, 0xffff, 0x0490, 0xffff, 0xffff, 0x0523, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0573, 0xffff, 0xffff, 0xffff, 0xffff, + 0x05c9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0639, 0xffff, + 0x06c4, 0xffff, 0xffff, 0xffff, 0x0758, 0xffff, 0xffff, 0xffff, + // Entry 49880 - 498BF + 0xffff, 0xffff, 0x07fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x08c7, 0xffff, 0x0928, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a46, + 0xffff, 0xffff, 0xffff, 0x0ad4, 0xffff, 0xffff, 0x0b46, 0xffff, + 0xffff, 0x0ba8, 0x0bfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 498C0 - 498FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0caa, 0xffff, 0x0d12, 0x0d76, 0x0003, 0x0004, + 0x0269, 0x064d, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0010, 0x003b, 0x0000, 0x0000, 0x0252, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, + 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, 0x006a, 0x0dc9, 0x0001, + 0x006a, 0x0ddd, 0x0001, 0x006a, 0x0deb, 0x0001, 0x006a, 0x0df8, + // Entry 49900 - 4993F + 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, + 0x0846, 0x0008, 0x0044, 0x00a9, 0x0100, 0x0135, 0x0206, 0x021f, + 0x0230, 0x0241, 0x0002, 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, + 0x0069, 0x000d, 0x0007, 0xffff, 0x0035, 0x23bb, 0x23bf, 0x23c3, + 0x23c7, 0x0049, 0x004d, 0x23cb, 0x23cf, 0x23d3, 0x005d, 0x23d7, + 0x000d, 0x0017, 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x29f6, 0x29f4, + 0x2a00, 0x2a00, 0x29f6, 0x2a09, 0x29fa, 0x29fc, 0x29fe, 0x000d, + // Entry 49940 - 4997F + 0x0007, 0xffff, 0x0065, 0x006c, 0x23db, 0x23e0, 0x23c7, 0x007e, + 0x0083, 0x23e6, 0x23ed, 0x23f5, 0x00a0, 0x23fc, 0x0003, 0x007c, + 0x008b, 0x009a, 0x000d, 0x0037, 0xffff, 0x0094, 0x209d, 0x2038, + 0x20a1, 0x2040, 0x20a5, 0x20a9, 0x20ad, 0x20b1, 0x20b5, 0x20b9, + 0x20bd, 0x000d, 0x0017, 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x29f6, + 0x29f4, 0x2a00, 0x2a00, 0x29f6, 0x2a09, 0x29fa, 0x29fc, 0x29fe, + 0x000d, 0x0007, 0xffff, 0x00ae, 0x00b5, 0x2403, 0x00c1, 0x2408, + 0x240c, 0x2411, 0x2416, 0x241d, 0x2425, 0x00ef, 0x00f6, 0x0002, + // Entry 49980 - 499BF + 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, + 0x0007, 0x006a, 0x0e08, 0x0e0c, 0x0e11, 0x0e16, 0x0e1b, 0x0e1f, + 0x0e23, 0x0007, 0x0017, 0x29c1, 0x29fe, 0x2a09, 0x2a05, 0x2a0d, + 0x29cf, 0x2a09, 0x0007, 0x006a, 0x0e28, 0x0e2b, 0x0e2e, 0x0e31, + 0x0e34, 0x0e37, 0x0e3a, 0x0007, 0x006a, 0x0e3d, 0x0e47, 0x0e50, + 0x0e59, 0x0e64, 0x0e6e, 0x0e73, 0x0005, 0x00dc, 0x00e5, 0x00f7, + 0x0000, 0x00ee, 0x0007, 0x006a, 0x0e08, 0x0e0c, 0x0e11, 0x0e16, + 0x0e1b, 0x0e1f, 0x0e23, 0x0007, 0x0017, 0x29c1, 0x29fe, 0x2a09, + // Entry 499C0 - 499FF + 0x2a05, 0x2a0d, 0x29cf, 0x2a09, 0x0007, 0x006a, 0x0e28, 0x0e2b, + 0x0e2e, 0x0e31, 0x0e34, 0x0e37, 0x0e3a, 0x0007, 0x006a, 0x0e3d, + 0x0e47, 0x0e50, 0x0e59, 0x0e64, 0x0e6e, 0x0e73, 0x0002, 0x0103, + 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, 0x006a, 0xffff, + 0x0e7a, 0x0e7f, 0x0e84, 0x0e89, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x006a, 0xffff, 0x0e8e, 0x0e97, + 0x0ea0, 0x0ea9, 0x0003, 0x0120, 0x0127, 0x012e, 0x0005, 0x006a, + 0xffff, 0x0e7a, 0x0e7f, 0x0e84, 0x0e89, 0x0005, 0x0000, 0xffff, + // Entry 49A00 - 49A3F + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x006a, 0xffff, 0x0e8e, + 0x0e97, 0x0ea0, 0x0ea9, 0x0002, 0x0138, 0x019f, 0x0003, 0x013c, + 0x015d, 0x017e, 0x0008, 0x0148, 0x014e, 0x0145, 0x0151, 0x0154, + 0x0157, 0x015a, 0x014b, 0x0001, 0x006a, 0x0eb2, 0x0001, 0x006a, + 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, 0x0001, + 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, 0x0eda, + 0x0001, 0x006a, 0x0ee4, 0x0008, 0x0169, 0x016f, 0x0166, 0x0172, + 0x0175, 0x0178, 0x017b, 0x016c, 0x0001, 0x006a, 0x0eb2, 0x0001, + // Entry 49A40 - 49A7F + 0x006a, 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, + 0x0001, 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, + 0x0eda, 0x0001, 0x006a, 0x0ee4, 0x0008, 0x018a, 0x0190, 0x0187, + 0x0193, 0x0196, 0x0199, 0x019c, 0x018d, 0x0001, 0x006a, 0x0eb2, + 0x0001, 0x006a, 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, + 0x01d1, 0x0001, 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, + 0x006a, 0x0eda, 0x0001, 0x006a, 0x0ee4, 0x0003, 0x01a3, 0x01c4, + 0x01e5, 0x0008, 0x01af, 0x01b5, 0x01ac, 0x01b8, 0x01bb, 0x01be, + // Entry 49A80 - 49ABF + 0x01c1, 0x01b2, 0x0001, 0x006a, 0x0eb2, 0x0001, 0x006a, 0x0ebc, + 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, 0x0001, 0x006a, + 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, 0x0eda, 0x0001, + 0x006a, 0x0ee4, 0x0008, 0x01d0, 0x01d6, 0x01cd, 0x01d9, 0x01dc, + 0x01df, 0x01e2, 0x01d3, 0x0001, 0x006a, 0x0eb2, 0x0001, 0x006a, + 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, 0x0001, + 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, 0x0eda, + 0x0001, 0x006a, 0x0ee4, 0x0008, 0x01f1, 0x01f7, 0x01ee, 0x01fa, + // Entry 49AC0 - 49AFF + 0x01fd, 0x0200, 0x0203, 0x01f4, 0x0001, 0x006a, 0x0eb2, 0x0001, + 0x006a, 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, + 0x0001, 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, + 0x0eda, 0x0001, 0x006a, 0x0ee4, 0x0003, 0x0214, 0x0000, 0x020a, + 0x0002, 0x020d, 0x0211, 0x0002, 0x006a, 0x0eec, 0x0f0f, 0x0001, + 0x006a, 0x0efd, 0x0002, 0x0217, 0x021b, 0x0002, 0x006a, 0x0f17, + 0x0f0f, 0x0002, 0x006a, 0x0f1c, 0x0f21, 0x0004, 0x022d, 0x0227, + 0x0224, 0x022a, 0x0001, 0x006a, 0x0f26, 0x0001, 0x006a, 0x0f36, + // Entry 49B00 - 49B3F + 0x0001, 0x006a, 0x0f40, 0x0001, 0x0014, 0x146e, 0x0004, 0x023e, + 0x0238, 0x0235, 0x023b, 0x0001, 0x001c, 0x14d2, 0x0001, 0x0021, + 0x05f8, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x024f, 0x0249, 0x0246, 0x024c, 0x0001, 0x0005, 0x0846, 0x0001, + 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0001, 0x0254, 0x0001, 0x0256, 0x0003, 0x0000, 0x0000, 0x025a, + 0x000d, 0x0000, 0xffff, 0x0657, 0x3f6c, 0x413e, 0x414e, 0x415d, + 0x416c, 0x3fb1, 0x417a, 0x4183, 0x418b, 0x4193, 0x419e, 0x0040, + // Entry 49B40 - 49B7F + 0x02aa, 0x0000, 0x0000, 0x02af, 0x02c6, 0x02dd, 0x02f4, 0x030b, + 0x031d, 0x032f, 0x0346, 0x0358, 0x036a, 0x0385, 0x039b, 0x0000, + 0x0000, 0x0000, 0x03b1, 0x03c8, 0x03da, 0x0000, 0x0000, 0x0000, + 0x03ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f1, 0x0405, + 0x0419, 0x042d, 0x0441, 0x0455, 0x0469, 0x047d, 0x0491, 0x04a5, + 0x04b9, 0x04cd, 0x04e1, 0x04f5, 0x0509, 0x051d, 0x0531, 0x0545, + 0x0559, 0x056d, 0x0581, 0x0000, 0x0595, 0x0000, 0x059a, 0x05b0, + 0x05c2, 0x05d4, 0x05ea, 0x05fc, 0x060e, 0x0624, 0x0636, 0x0648, + // Entry 49B80 - 49BBF + 0x0001, 0x02ac, 0x0001, 0x0001, 0x0040, 0x0003, 0x02b3, 0x02b6, + 0x02bb, 0x0001, 0x006a, 0x0f49, 0x0003, 0x006a, 0x0f4d, 0x0f5a, + 0x0f62, 0x0002, 0x02be, 0x02c2, 0x0002, 0x006a, 0x0f6e, 0x0f6e, + 0x0002, 0x006a, 0x0f7f, 0x0f7f, 0x0003, 0x02ca, 0x02cd, 0x02d2, + 0x0001, 0x006a, 0x0f49, 0x0003, 0x006a, 0x0f8d, 0x0f99, 0x0f62, + 0x0002, 0x02d5, 0x02d9, 0x0002, 0x006a, 0x0f6e, 0x0f6e, 0x0002, + 0x006a, 0x0f7f, 0x0f7f, 0x0003, 0x02e1, 0x02e4, 0x02e9, 0x0001, + 0x006a, 0x0f49, 0x0003, 0x006a, 0x0f8d, 0x0f99, 0x0f62, 0x0002, + // Entry 49BC0 - 49BFF + 0x02ec, 0x02f0, 0x0002, 0x006a, 0x0f6e, 0x0f6e, 0x0002, 0x006a, + 0x0f7f, 0x0f7f, 0x0003, 0x02f8, 0x02fb, 0x0300, 0x0001, 0x006a, + 0x0fa0, 0x0003, 0x006a, 0x0fa7, 0x0fb7, 0x0fc2, 0x0002, 0x0303, + 0x0307, 0x0002, 0x006a, 0x0fd1, 0x0fd1, 0x0002, 0x006a, 0x0fe5, + 0x0fe5, 0x0003, 0x030f, 0x0000, 0x0312, 0x0001, 0x006a, 0x0ff6, + 0x0002, 0x0315, 0x0319, 0x0002, 0x006a, 0x0fd1, 0x0fd1, 0x0002, + 0x006a, 0x0fe5, 0x0fe5, 0x0003, 0x0321, 0x0000, 0x0324, 0x0001, + 0x006a, 0x0ff6, 0x0002, 0x0327, 0x032b, 0x0002, 0x006a, 0x0fd1, + // Entry 49C00 - 49C3F + 0x0fd1, 0x0002, 0x006a, 0x0fe5, 0x0fe5, 0x0003, 0x0333, 0x0336, + 0x033b, 0x0001, 0x006a, 0x0ff9, 0x0003, 0x006a, 0x0ffc, 0x1008, + 0x100f, 0x0002, 0x033e, 0x0342, 0x0002, 0x006a, 0x101a, 0x101a, + 0x0002, 0x006a, 0x102a, 0x102a, 0x0003, 0x034a, 0x0000, 0x034d, + 0x0001, 0x006a, 0x0ff9, 0x0002, 0x0350, 0x0354, 0x0002, 0x006a, + 0x101a, 0x101a, 0x0002, 0x006a, 0x102a, 0x102a, 0x0003, 0x035c, + 0x0000, 0x035f, 0x0001, 0x006a, 0x0ff9, 0x0002, 0x0362, 0x0366, + 0x0002, 0x006a, 0x101a, 0x101a, 0x0002, 0x006a, 0x102a, 0x102a, + // Entry 49C40 - 49C7F + 0x0004, 0x036f, 0x0372, 0x0377, 0x0382, 0x0001, 0x0065, 0x0477, + 0x0003, 0x006a, 0x1037, 0x1046, 0x1050, 0x0002, 0x037a, 0x037e, + 0x0002, 0x006a, 0x105e, 0x105e, 0x0002, 0x006a, 0x1071, 0x1071, + 0x0001, 0x006a, 0x1081, 0x0004, 0x038a, 0x0000, 0x038d, 0x0398, + 0x0001, 0x0065, 0x0477, 0x0002, 0x0390, 0x0394, 0x0002, 0x006a, + 0x105e, 0x105e, 0x0002, 0x006a, 0x1071, 0x1071, 0x0001, 0x006a, + 0x1081, 0x0004, 0x03a0, 0x0000, 0x03a3, 0x03ae, 0x0001, 0x0065, + 0x0477, 0x0002, 0x03a6, 0x03aa, 0x0002, 0x006a, 0x105e, 0x105e, + // Entry 49C80 - 49CBF + 0x0002, 0x006a, 0x1071, 0x1071, 0x0001, 0x006a, 0x1081, 0x0003, + 0x03b5, 0x03b8, 0x03bd, 0x0001, 0x006a, 0x108b, 0x0003, 0x006a, + 0x108f, 0x1095, 0x109b, 0x0002, 0x03c0, 0x03c4, 0x0002, 0x006a, + 0x10a2, 0x10a2, 0x0002, 0x006a, 0x10b3, 0x10b3, 0x0003, 0x03cc, + 0x0000, 0x03cf, 0x0001, 0x006a, 0x108b, 0x0002, 0x03d2, 0x03d6, + 0x0002, 0x006a, 0x10a2, 0x10a2, 0x0002, 0x006a, 0x10b3, 0x10b3, + 0x0003, 0x03de, 0x0000, 0x03e1, 0x0001, 0x006a, 0x108b, 0x0002, + 0x03e4, 0x03e8, 0x0002, 0x006a, 0x10a2, 0x10a2, 0x0002, 0x006a, + // Entry 49CC0 - 49CFF + 0x10b3, 0x10b3, 0x0001, 0x03ee, 0x0001, 0x006a, 0x10c1, 0x0003, + 0x0000, 0x03f5, 0x03fa, 0x0003, 0x006a, 0x10cc, 0x10df, 0x10ed, + 0x0002, 0x03fd, 0x0401, 0x0002, 0x006a, 0x10ff, 0x10ff, 0x0002, + 0x006a, 0x1119, 0x1119, 0x0003, 0x0000, 0x0409, 0x040e, 0x0003, + 0x006a, 0x10cc, 0x10df, 0x10ed, 0x0002, 0x0411, 0x0415, 0x0002, + 0x006a, 0x10ff, 0x10ff, 0x0002, 0x006a, 0x1119, 0x1119, 0x0003, + 0x0000, 0x041d, 0x0422, 0x0003, 0x006a, 0x10cc, 0x10df, 0x10ed, + 0x0002, 0x0425, 0x0429, 0x0002, 0x006a, 0x10ff, 0x10ff, 0x0002, + // Entry 49D00 - 49D3F + 0x006a, 0x1119, 0x1119, 0x0003, 0x0000, 0x0431, 0x0436, 0x0003, + 0x006a, 0x1130, 0x1142, 0x114f, 0x0002, 0x0439, 0x043d, 0x0002, + 0x006a, 0x1160, 0x1160, 0x0002, 0x006a, 0x1179, 0x1179, 0x0003, + 0x0000, 0x0445, 0x044a, 0x0003, 0x006a, 0x1130, 0x1142, 0x114f, + 0x0002, 0x044d, 0x0451, 0x0002, 0x006a, 0x1160, 0x1160, 0x0002, + 0x006a, 0x1179, 0x1179, 0x0003, 0x0000, 0x0459, 0x045e, 0x0003, + 0x006a, 0x1130, 0x1142, 0x114f, 0x0002, 0x0461, 0x0465, 0x0002, + 0x006a, 0x1160, 0x1160, 0x0002, 0x006a, 0x1179, 0x1179, 0x0003, + // Entry 49D40 - 49D7F + 0x0000, 0x046d, 0x0472, 0x0003, 0x006a, 0x118f, 0x11a1, 0x11ae, + 0x0002, 0x0475, 0x0479, 0x0002, 0x006a, 0x11bf, 0x11bf, 0x0002, + 0x006a, 0x11d8, 0x11d8, 0x0003, 0x0000, 0x0481, 0x0486, 0x0003, + 0x006a, 0x118f, 0x11a1, 0x11ae, 0x0002, 0x0489, 0x048d, 0x0002, + 0x006a, 0x11bf, 0x11bf, 0x0002, 0x006a, 0x11d8, 0x11d8, 0x0003, + 0x0000, 0x0495, 0x049a, 0x0003, 0x006a, 0x118f, 0x11a1, 0x11ae, + 0x0002, 0x049d, 0x04a1, 0x0002, 0x006a, 0x11bf, 0x11bf, 0x0002, + 0x006a, 0x11d8, 0x11d8, 0x0003, 0x0000, 0x04a9, 0x04ae, 0x0003, + // Entry 49D80 - 49DBF + 0x006a, 0x11ee, 0x1202, 0x1211, 0x0002, 0x04b1, 0x04b5, 0x0002, + 0x006a, 0x1224, 0x1224, 0x0002, 0x006a, 0x123f, 0x123f, 0x0003, + 0x0000, 0x04bd, 0x04c2, 0x0003, 0x006a, 0x11ee, 0x1202, 0x1211, + 0x0002, 0x04c5, 0x04c9, 0x0002, 0x006a, 0x1224, 0x1224, 0x0002, + 0x006a, 0x123f, 0x123f, 0x0003, 0x0000, 0x04d1, 0x04d6, 0x0003, + 0x006a, 0x11ee, 0x1202, 0x1211, 0x0002, 0x04d9, 0x04dd, 0x0002, + 0x006a, 0x1224, 0x1224, 0x0002, 0x006a, 0x123f, 0x123f, 0x0003, + 0x0000, 0x04e5, 0x04ea, 0x0003, 0x006a, 0x1257, 0x126a, 0x1278, + // Entry 49DC0 - 49DFF + 0x0002, 0x04ed, 0x04f1, 0x0002, 0x006a, 0x128a, 0x128a, 0x0002, + 0x006a, 0x12a4, 0x12a4, 0x0003, 0x0000, 0x04f9, 0x04fe, 0x0003, + 0x006a, 0x1257, 0x126a, 0x1278, 0x0002, 0x0501, 0x0505, 0x0002, + 0x006a, 0x128a, 0x128a, 0x0002, 0x006a, 0x12a4, 0x12a4, 0x0003, + 0x0000, 0x050d, 0x0512, 0x0003, 0x006a, 0x1257, 0x126a, 0x1278, + 0x0002, 0x0515, 0x0519, 0x0002, 0x006a, 0x128a, 0x128a, 0x0002, + 0x006a, 0x12a4, 0x12a4, 0x0003, 0x0000, 0x0521, 0x0526, 0x0003, + 0x006a, 0x12bb, 0x12c9, 0x12d2, 0x0002, 0x0529, 0x052d, 0x0002, + // Entry 49E00 - 49E3F + 0x006a, 0x12df, 0x12df, 0x0002, 0x006a, 0x12f4, 0x12f4, 0x0003, + 0x0000, 0x0535, 0x053a, 0x0003, 0x006a, 0x12bb, 0x12c9, 0x12d2, + 0x0002, 0x053d, 0x0541, 0x0002, 0x006a, 0x12df, 0x12df, 0x0002, + 0x006a, 0x12f4, 0x12f4, 0x0003, 0x0000, 0x0549, 0x054e, 0x0003, + 0x006a, 0x12bb, 0x12c9, 0x12d2, 0x0002, 0x0551, 0x0555, 0x0002, + 0x006a, 0x12df, 0x12df, 0x0002, 0x006a, 0x12f4, 0x12f4, 0x0003, + 0x0000, 0x055d, 0x0562, 0x0003, 0x006a, 0x1306, 0x1316, 0x1321, + 0x0002, 0x0565, 0x0569, 0x0002, 0x006a, 0x1330, 0x1330, 0x0002, + // Entry 49E40 - 49E7F + 0x006a, 0x1347, 0x1347, 0x0003, 0x0000, 0x0571, 0x0576, 0x0003, + 0x006a, 0x1306, 0x1316, 0x1321, 0x0002, 0x0579, 0x057d, 0x0002, + 0x006a, 0x1330, 0x1330, 0x0002, 0x006a, 0x1347, 0x1347, 0x0003, + 0x0000, 0x0585, 0x058a, 0x0003, 0x006a, 0x1306, 0x1316, 0x1321, + 0x0002, 0x058d, 0x0591, 0x0002, 0x006a, 0x1330, 0x1330, 0x0002, + 0x006a, 0x1347, 0x1347, 0x0001, 0x0597, 0x0001, 0x006a, 0x135b, + 0x0003, 0x059e, 0x05a1, 0x05a5, 0x0001, 0x006a, 0x1361, 0x0002, + 0x006a, 0xffff, 0x1366, 0x0002, 0x05a8, 0x05ac, 0x0002, 0x006a, + // Entry 49E80 - 49EBF + 0x1371, 0x1371, 0x0002, 0x006a, 0x1383, 0x1383, 0x0003, 0x05b4, + 0x0000, 0x05b7, 0x0001, 0x006a, 0x1361, 0x0002, 0x05ba, 0x05be, + 0x0002, 0x006a, 0x1371, 0x1371, 0x0002, 0x006a, 0x1383, 0x1383, + 0x0003, 0x05c6, 0x0000, 0x05c9, 0x0001, 0x006a, 0x1361, 0x0002, + 0x05cc, 0x05d0, 0x0002, 0x006a, 0x1371, 0x1371, 0x0002, 0x006a, + 0x1383, 0x1383, 0x0003, 0x05d8, 0x05db, 0x05df, 0x0001, 0x006a, + 0x1392, 0x0002, 0x006a, 0xffff, 0x1399, 0x0002, 0x05e2, 0x05e6, + 0x0002, 0x006a, 0x13a6, 0x13a6, 0x0002, 0x006a, 0x13ba, 0x13ba, + // Entry 49EC0 - 49EFF + 0x0003, 0x05ee, 0x0000, 0x05f1, 0x0001, 0x006a, 0x13cb, 0x0002, + 0x05f4, 0x05f8, 0x0002, 0x006a, 0x13a6, 0x13a6, 0x0002, 0x006a, + 0x13ba, 0x13ba, 0x0003, 0x0600, 0x0000, 0x0603, 0x0001, 0x006a, + 0x13cb, 0x0002, 0x0606, 0x060a, 0x0002, 0x006a, 0x13a6, 0x13a6, + 0x0002, 0x006a, 0x13ba, 0x13ba, 0x0003, 0x0612, 0x0615, 0x0619, + 0x0001, 0x006a, 0x13d0, 0x0002, 0x006a, 0xffff, 0x13d7, 0x0002, + 0x061c, 0x0620, 0x0002, 0x006a, 0x13dd, 0x13dd, 0x0002, 0x006a, + 0x13f1, 0x13f1, 0x0003, 0x0628, 0x0000, 0x062b, 0x0001, 0x006a, + // Entry 49F00 - 49F3F + 0x1402, 0x0002, 0x062e, 0x0632, 0x0002, 0x006a, 0x13dd, 0x13dd, + 0x0002, 0x006a, 0x13f1, 0x13f1, 0x0003, 0x063a, 0x0000, 0x063d, + 0x0001, 0x006a, 0x1402, 0x0002, 0x0640, 0x0644, 0x0002, 0x006a, + 0x13dd, 0x13dd, 0x0002, 0x006a, 0x13f1, 0x13f1, 0x0001, 0x064a, + 0x0001, 0x006a, 0x1407, 0x0004, 0x0652, 0x0657, 0x065c, 0x0667, + 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0000, 0x1de0, + 0x41a8, 0x41b1, 0x0002, 0x0000, 0x065f, 0x0002, 0x0000, 0x0662, + 0x0003, 0x006a, 0xffff, 0x1416, 0x142c, 0x0002, 0x0000, 0x066a, + // Entry 49F40 - 49F7F + 0x0003, 0x0704, 0x079a, 0x066e, 0x0094, 0x006a, 0x1442, 0x1455, + 0x146b, 0x1480, 0x14b4, 0x14fd, 0x1537, 0x157b, 0x15ce, 0x161d, + 0x1667, 0xffff, 0x16a7, 0x16e5, 0x1736, 0x177e, 0x17d0, 0x1811, + 0x185a, 0x18c1, 0x1931, 0x198d, 0x19e3, 0x1a28, 0x1a70, 0x1aa1, + 0x1aad, 0x1acc, 0x1afb, 0x1b24, 0x1b55, 0x1b7a, 0x1baf, 0x1be2, + 0x1c1a, 0x1c4b, 0x1c61, 0x1c86, 0x1cc8, 0x1d0e, 0x1d33, 0x1d40, + 0x1d58, 0x1d7e, 0x1db1, 0x1dd6, 0x1e29, 0x1e64, 0x1e97, 0x1eee, + 0x1f38, 0x1f5d, 0x1f74, 0x1fa2, 0x1fb2, 0x1fcd, 0x1ff8, 0x200f, + // Entry 49F80 - 49FBF + 0x2043, 0x20a2, 0x20e9, 0x2108, 0x2128, 0x216b, 0x21a1, 0x21c6, + 0x21d6, 0x21e8, 0x21f9, 0x2213, 0x222c, 0x2251, 0x2284, 0x22bc, + 0x22f4, 0xffff, 0x2321, 0x233c, 0x2365, 0x238e, 0x23ad, 0x23e0, + 0x23f4, 0x2417, 0x2444, 0x2467, 0x2492, 0x24a2, 0x24b8, 0x24ce, + 0x24f5, 0x2522, 0x254f, 0x25b9, 0x260f, 0x264d, 0x2676, 0x2683, + 0x268f, 0x26b2, 0x2705, 0x2753, 0x2788, 0x2794, 0x27c2, 0x2817, + 0x2855, 0x2889, 0x28b6, 0x28c2, 0x28eb, 0x2923, 0x2957, 0x2984, + 0x29b4, 0x29f7, 0x2a05, 0x2a12, 0x2a20, 0x2a2f, 0x2a4a, 0xffff, + // Entry 49FC0 - 49FFF + 0x2a81, 0x2aa8, 0x2abf, 0x2ace, 0x2ae5, 0x2afc, 0x2b0a, 0x2b16, + 0x2b2f, 0x2b58, 0x2b69, 0x2b83, 0x2baa, 0x2bc9, 0x2bfe, 0x2c19, + 0x2c58, 0x2c9d, 0x2cc8, 0x2cea, 0x2d2d, 0x2d5c, 0x2d69, 0x2d7a, + 0x2d9f, 0x2dde, 0x0094, 0x006a, 0xffff, 0xffff, 0xffff, 0xffff, + 0x149e, 0x14ef, 0x1528, 0x1564, 0x15b8, 0x1609, 0x1654, 0xffff, + 0x169c, 0x16cc, 0x1726, 0x1765, 0x17bf, 0x1801, 0x1840, 0x189d, + 0x1918, 0x1972, 0x19d2, 0x1a14, 0x1a5f, 0xffff, 0xffff, 0x1abc, + 0xffff, 0x1b13, 0xffff, 0x1b6d, 0x1ba3, 0x1bd6, 0x1c09, 0xffff, + // Entry 4A000 - 4A03F + 0xffff, 0x1c76, 0x1cb5, 0x1d03, 0xffff, 0xffff, 0xffff, 0x1d6c, + 0xffff, 0x1dbf, 0x1e13, 0xffff, 0x1e7f, 0x1ed6, 0x1f2d, 0xffff, + 0xffff, 0xffff, 0xffff, 0x1fbf, 0xffff, 0xffff, 0x2029, 0x2086, + 0xffff, 0xffff, 0x2115, 0x215d, 0x2196, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2246, 0x2276, 0x22af, 0x22e5, 0xffff, + 0xffff, 0xffff, 0x2358, 0xffff, 0x239b, 0xffff, 0xffff, 0x2408, + 0xffff, 0x2459, 0xffff, 0xffff, 0xffff, 0xffff, 0x24e6, 0xffff, + 0x252f, 0x259e, 0x25fe, 0x2640, 0xffff, 0xffff, 0xffff, 0x269b, + // Entry 4A040 - 4A07F + 0x26ef, 0x2740, 0xffff, 0xffff, 0x27a8, 0x2805, 0x284a, 0x287a, + 0xffff, 0xffff, 0x28dc, 0x2918, 0x2948, 0xffff, 0x299a, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2a3c, 0xffff, 0x2a75, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b22, 0xffff, + 0xffff, 0x2b77, 0xffff, 0x2bb6, 0xffff, 0x2c0b, 0x2c44, 0x2c8f, + 0xffff, 0x2cd8, 0x2d1d, 0xffff, 0xffff, 0xffff, 0x2d91, 0x2dca, + 0x0094, 0x006a, 0xffff, 0xffff, 0xffff, 0xffff, 0x14d3, 0x1514, + 0x154f, 0x159b, 0x15ed, 0x163a, 0x1683, 0xffff, 0x16bb, 0x1707, + // Entry 4A080 - 4A0BF + 0x174f, 0x17a0, 0x17ea, 0x182a, 0x187d, 0x18ee, 0x1953, 0x19b1, + 0x19fd, 0x1a45, 0x1a8a, 0xffff, 0xffff, 0x1ae5, 0xffff, 0x1b3e, + 0xffff, 0x1b90, 0x1bc4, 0x1bf7, 0x1c34, 0xffff, 0xffff, 0x1c9f, + 0x1ce4, 0x1d22, 0xffff, 0xffff, 0xffff, 0x1d99, 0xffff, 0x1df6, + 0x1e48, 0xffff, 0x1eb8, 0x1f0f, 0x1f4c, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1fe4, 0xffff, 0xffff, 0x2066, 0x20c7, 0xffff, 0xffff, + 0x2144, 0x2182, 0x21b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2265, 0x229b, 0x22d2, 0x230c, 0xffff, 0xffff, 0xffff, + // Entry 4A0C0 - 4A0FF + 0x237b, 0xffff, 0x23c8, 0xffff, 0xffff, 0x242f, 0xffff, 0x247e, + 0xffff, 0xffff, 0xffff, 0xffff, 0x250d, 0xffff, 0x2578, 0x25dd, + 0x2629, 0x2663, 0xffff, 0xffff, 0xffff, 0x26d2, 0x2724, 0x276f, + 0xffff, 0xffff, 0x27e5, 0x2832, 0x2869, 0x28a1, 0xffff, 0xffff, + 0x2903, 0x2937, 0x296f, 0xffff, 0x29d7, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2a61, 0xffff, 0x2a96, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2b45, 0xffff, 0xffff, 0x2b98, + 0xffff, 0x2be5, 0xffff, 0x2c30, 0x2c75, 0x2cb4, 0xffff, 0x2d05, + // Entry 4A100 - 4A13F + 0x2d46, 0xffff, 0xffff, 0xffff, 0x2db6, 0x2dfb, 0x0003, 0x0004, + 0x0000, 0x0096, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, + 0x0021, 0x0001, 0x006b, 0x0000, 0x0001, 0x006b, 0x002e, 0x0001, + 0x0001, 0x1f98, 0x0001, 0x0051, 0x0618, 0x0008, 0x0030, 0x0054, + 0x0000, 0x0000, 0x006c, 0x0074, 0x0085, 0x0000, 0x0001, 0x0032, + 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0003, 0xffff, 0x0d4a, + // Entry 4A140 - 4A17F + 0x2296, 0x229d, 0x22a4, 0x22ab, 0x22b0, 0x21ae, 0x22b7, 0x22be, + 0x22c5, 0x22cc, 0x21e3, 0x000d, 0x0022, 0xffff, 0x0000, 0x000b, + 0x30f0, 0x30f9, 0x3135, 0x313a, 0x3141, 0x3085, 0x314c, 0x3112, + 0x311f, 0x312a, 0x0001, 0x0056, 0x0003, 0x005a, 0x0000, 0x0063, + 0x0007, 0x006b, 0x0040, 0x0044, 0x0048, 0x004c, 0x0050, 0x0054, + 0x0058, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, + 0x0442, 0x044b, 0x0001, 0x006e, 0x0001, 0x0070, 0x0002, 0x0021, + 0x05d7, 0x375f, 0x0004, 0x0082, 0x007c, 0x0079, 0x007f, 0x0001, + // Entry 4A180 - 4A1BF + 0x006b, 0x005c, 0x0001, 0x006b, 0x0088, 0x0001, 0x0001, 0x1fb9, + 0x0001, 0x0021, 0x05f2, 0x0004, 0x0093, 0x008d, 0x008a, 0x0090, + 0x0001, 0x001c, 0x14d2, 0x0001, 0x0021, 0x05f8, 0x0001, 0x0005, + 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0000, 0x0000, 0x0000, + 0x009b, 0x0002, 0x0000, 0x009e, 0x0003, 0x0000, 0x0000, 0x00a2, + 0x0001, 0x006b, 0x0098, 0x0003, 0x0004, 0x0268, 0x038b, 0x000b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, + 0x0000, 0x0000, 0x0251, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4A1C0 - 4A1FF + 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, + 0x0024, 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, 0x049a, 0x0001, + 0x0000, 0x04a5, 0x0001, 0x001c, 0x0588, 0x0004, 0x0038, 0x0032, + 0x002f, 0x0035, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, + 0x00a9, 0x0100, 0x0135, 0x0206, 0x021e, 0x022f, 0x0240, 0x0002, + 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0011, + 0xffff, 0x0000, 0x0007, 0x392e, 0x3935, 0x3908, 0x0023, 0x002a, + // Entry 4A200 - 4A23F + 0x393c, 0x0038, 0x3943, 0x0046, 0x004d, 0x000d, 0x003e, 0xffff, + 0x0e82, 0x0e85, 0x20db, 0x20de, 0x20db, 0x203a, 0x203a, 0x20de, + 0x20d5, 0x20e1, 0x0e97, 0x20aa, 0x000d, 0x006b, 0xffff, 0x00b4, + 0x00bf, 0x00cc, 0x00d5, 0x00e0, 0x00e7, 0x00ee, 0x00f5, 0x0102, + 0x0111, 0x011e, 0x0129, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, + 0x003e, 0xffff, 0x0e9d, 0x0ea4, 0x0eab, 0x0eb2, 0x204d, 0x0ec0, + 0x0ec7, 0x0ece, 0x0ed5, 0x0edc, 0x0ee3, 0x0eea, 0x000d, 0x003e, + 0xffff, 0x0e82, 0x0e85, 0x20db, 0x20de, 0x20db, 0x203a, 0x203a, + // Entry 4A240 - 4A27F + 0x20de, 0x20d5, 0x20e1, 0x0e97, 0x20aa, 0x000d, 0x006b, 0xffff, + 0x0136, 0x0141, 0x014e, 0x0157, 0x0162, 0x0169, 0x0170, 0x0177, + 0x0184, 0x0193, 0x01a0, 0x01ab, 0x0002, 0x00ac, 0x00d6, 0x0005, + 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x006b, 0x01b8, + 0x01bf, 0x01c6, 0x01cd, 0x01d4, 0x01db, 0x01e2, 0x0007, 0x003e, + 0x0e82, 0x20aa, 0x20d5, 0x20d8, 0x20cf, 0x20e4, 0x20e7, 0x0007, + 0x006b, 0x01e9, 0x01ee, 0x01f3, 0x01f8, 0x01fd, 0x0202, 0x0207, + 0x0007, 0x006b, 0x020c, 0x021b, 0x022a, 0x0239, 0x024a, 0x025b, + // Entry 4A280 - 4A2BF + 0x0264, 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, + 0x006b, 0x026f, 0x0276, 0x027d, 0x0284, 0x028b, 0x0292, 0x0299, + 0x0007, 0x003e, 0x0e82, 0x20aa, 0x20d5, 0x20d8, 0x20cf, 0x20e4, + 0x20e7, 0x0007, 0x006b, 0x01e9, 0x01ee, 0x01f3, 0x01f8, 0x01fd, + 0x0202, 0x0207, 0x0007, 0x006b, 0x02a0, 0x02af, 0x02be, 0x02cd, + 0x02de, 0x02ef, 0x02f8, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, + 0x010e, 0x0115, 0x0005, 0x006b, 0xffff, 0x0303, 0x0308, 0x030d, + 0x0312, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 4A2C0 - 4A2FF + 0x0005, 0x006b, 0xffff, 0x0317, 0x0324, 0x0331, 0x033e, 0x0003, + 0x0120, 0x0127, 0x012e, 0x0005, 0x006b, 0xffff, 0x0303, 0x0308, + 0x030d, 0x0312, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x006b, 0xffff, 0x0317, 0x0324, 0x0331, 0x033e, + 0x0002, 0x0138, 0x019f, 0x0003, 0x013c, 0x015d, 0x017e, 0x0008, + 0x0148, 0x014e, 0x0145, 0x0151, 0x0154, 0x0157, 0x015a, 0x014b, + 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, 0x006b, + 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, 0x0001, + // Entry 4A300 - 4A33F + 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, 0x03a6, + 0x0008, 0x0169, 0x016f, 0x0166, 0x0172, 0x0175, 0x0178, 0x017b, + 0x016c, 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, + 0x006b, 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, + 0x0001, 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, + 0x03a6, 0x0008, 0x018a, 0x0190, 0x0187, 0x0193, 0x0196, 0x0199, + 0x019c, 0x018d, 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, + 0x0001, 0x006b, 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, + // Entry 4A340 - 4A37F + 0x0377, 0x0001, 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, + 0x006b, 0x03a6, 0x0003, 0x01a3, 0x01c4, 0x01e5, 0x0008, 0x01af, + 0x01b5, 0x01ac, 0x01b8, 0x01bb, 0x01be, 0x01c1, 0x01b2, 0x0001, + 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, 0x006b, 0x0360, + 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, 0x0001, 0x006b, + 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, 0x03a6, 0x0008, + 0x01d0, 0x01d6, 0x01cd, 0x01d9, 0x01dc, 0x01df, 0x01e2, 0x01d3, + 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, 0x006b, + // Entry 4A380 - 4A3BF + 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, 0x0001, + 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, 0x03a6, + 0x0008, 0x01f1, 0x01f7, 0x01ee, 0x01fa, 0x01fd, 0x0200, 0x0203, + 0x01f4, 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, + 0x006b, 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, + 0x0001, 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, + 0x03a6, 0x0003, 0x0214, 0x0000, 0x020a, 0x0002, 0x020d, 0x0211, + 0x0002, 0x006b, 0x03b3, 0x03f5, 0x0001, 0x006b, 0x03d3, 0x0002, + // Entry 4A3C0 - 4A3FF + 0x0217, 0x021b, 0x0002, 0x006b, 0x0404, 0x03f5, 0x0001, 0x006b, + 0x040b, 0x0004, 0x022c, 0x0226, 0x0223, 0x0229, 0x0001, 0x0036, + 0x09ae, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, 0x0001, + 0x0014, 0x146e, 0x0004, 0x023d, 0x0237, 0x0234, 0x023a, 0x0001, + 0x001f, 0x1e5b, 0x0001, 0x001f, 0x1e6b, 0x0001, 0x0000, 0x053d, + 0x0001, 0x0000, 0x0546, 0x0004, 0x024e, 0x0248, 0x0245, 0x024b, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0253, 0x0001, 0x0255, + // Entry 4A400 - 4A43F + 0x0003, 0x0000, 0x0000, 0x0259, 0x000d, 0x006b, 0xffff, 0x0412, + 0x0423, 0x042e, 0x0446, 0x045c, 0x0474, 0x048e, 0x0499, 0x04a6, + 0x04b5, 0x04c2, 0x04d4, 0x0040, 0x02a9, 0x0000, 0x0000, 0x02ae, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02c5, 0x0000, 0x0000, + 0x02dc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02f3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x030a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x030f, 0x0000, 0x0000, 0x0317, 0x0000, 0x0000, + 0x031f, 0x0000, 0x0000, 0x0327, 0x0000, 0x0000, 0x032f, 0x0000, + // Entry 4A440 - 4A47F + 0x0000, 0x0337, 0x0000, 0x0000, 0x033f, 0x0000, 0x0000, 0x0000, + 0x0347, 0x0000, 0x034c, 0x0000, 0x0000, 0x035e, 0x0000, 0x0000, + 0x0370, 0x0000, 0x0000, 0x0386, 0x0001, 0x02ab, 0x0001, 0x006b, + 0x04e6, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x006b, 0x04ed, + 0x0003, 0x006b, 0x04f4, 0x0506, 0x0512, 0x0002, 0x02bd, 0x02c1, + 0x0002, 0x006b, 0x0528, 0x0528, 0x0002, 0x006b, 0x0542, 0x0542, + 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x006b, 0x0558, 0x0003, + 0x006b, 0x055d, 0x056d, 0x0577, 0x0002, 0x02d4, 0x02d8, 0x0002, + // Entry 4A480 - 4A4BF + 0x006b, 0x058b, 0x058b, 0x0002, 0x006b, 0x05a3, 0x05a3, 0x0003, + 0x02e0, 0x02e3, 0x02e8, 0x0001, 0x006b, 0x05b7, 0x0003, 0x006b, + 0x05c2, 0x05d8, 0x05e8, 0x0002, 0x02eb, 0x02ef, 0x0002, 0x006b, + 0x0602, 0x0602, 0x0002, 0x006b, 0x0620, 0x0620, 0x0003, 0x02f7, + 0x02fa, 0x02ff, 0x0001, 0x006b, 0x063a, 0x0003, 0x006b, 0x0641, + 0x064a, 0x0655, 0x0002, 0x0302, 0x0306, 0x0002, 0x006b, 0x0662, + 0x0662, 0x0002, 0x006b, 0x067c, 0x067c, 0x0001, 0x030c, 0x0001, + 0x006b, 0x0692, 0x0002, 0x0000, 0x0312, 0x0003, 0x006b, 0x06a6, + // Entry 4A4C0 - 4A4FF + 0x06c0, 0x06d4, 0x0002, 0x0000, 0x031a, 0x0003, 0x006b, 0x06f2, + 0x070c, 0x0720, 0x0002, 0x0000, 0x0322, 0x0003, 0x006b, 0x073e, + 0x0758, 0x076c, 0x0002, 0x0000, 0x032a, 0x0003, 0x006b, 0x078a, + 0x07a6, 0x07b5, 0x0002, 0x0000, 0x0332, 0x0003, 0x006b, 0x07d5, + 0x07f1, 0x0807, 0x0002, 0x0000, 0x033a, 0x0003, 0x006b, 0x0827, + 0x083b, 0x0849, 0x0002, 0x0000, 0x0342, 0x0003, 0x006b, 0x0861, + 0x0877, 0x0887, 0x0001, 0x0349, 0x0001, 0x006b, 0x08a1, 0x0003, + 0x0350, 0x0000, 0x0353, 0x0001, 0x006b, 0x08b3, 0x0002, 0x0356, + // Entry 4A500 - 4A53F + 0x035a, 0x0002, 0x006b, 0x08bc, 0x08bc, 0x0002, 0x006b, 0x08d8, + 0x08d8, 0x0003, 0x0362, 0x0000, 0x0365, 0x0001, 0x006b, 0x08f0, + 0x0002, 0x0368, 0x036c, 0x0002, 0x006b, 0x08fd, 0x08fd, 0x0002, + 0x006b, 0x091d, 0x091d, 0x0003, 0x0374, 0x0377, 0x037b, 0x0001, + 0x006b, 0x0939, 0x0002, 0x006b, 0xffff, 0x0944, 0x0002, 0x037e, + 0x0382, 0x0002, 0x006b, 0x094f, 0x094f, 0x0002, 0x006b, 0x096d, + 0x096d, 0x0001, 0x0388, 0x0001, 0x006b, 0x0987, 0x0004, 0x0390, + 0x0395, 0x039a, 0x03a5, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, + // Entry 4A540 - 4A57F + 0x0003, 0x006b, 0x0996, 0x09a5, 0x09c5, 0x0002, 0x0000, 0x039d, + 0x0002, 0x0000, 0x03a0, 0x0003, 0x006b, 0xffff, 0x09e5, 0x0a0a, + 0x0002, 0x0000, 0x03a8, 0x0003, 0x0442, 0x04d8, 0x03ac, 0x0094, + 0x006b, 0x0a2f, 0x0a4f, 0x0a78, 0x0a9d, 0x0ae9, 0x0b65, 0x0bd3, + 0x0c43, 0x0d0f, 0x0dcd, 0x0e8e, 0xffff, 0xffff, 0x0f4c, 0x0fc8, + 0x1049, 0x10d9, 0x1151, 0x11de, 0x129a, 0x135f, 0x1402, 0x149a, + 0x1508, 0x1568, 0x15be, 0x15d4, 0x160a, 0x165c, 0x16a8, 0x1700, + 0x1732, 0x1798, 0x17f0, 0x185c, 0x18b2, 0x18db, 0x191e, 0x1993, + // Entry 4A580 - 4A5BF + 0x1a10, 0x1a5a, 0x1a70, 0x1a96, 0x1ada, 0x1b36, 0x1b79, 0x1c0a, + 0xffff, 0x1c93, 0x1d26, 0x1db2, 0x1df4, 0x1e1f, 0x1e62, 0x1e80, + 0x1eb2, 0x1efc, 0x1f27, 0x1f6e, 0x200f, 0x2083, 0x209b, 0x20d6, + 0x2158, 0x21ba, 0x21fc, 0x221a, 0x223b, 0x225a, 0x2289, 0x22b4, + 0x22f3, 0x2357, 0x23bd, 0x2427, 0xffff, 0x2479, 0x24a6, 0x24e9, + 0x2537, 0x256f, 0x25c9, 0x25eb, 0x262d, 0x2689, 0x26c8, 0x2716, + 0x2732, 0x2750, 0x276c, 0x27b3, 0x2805, 0xffff, 0xffff, 0x283e, + 0x28ae, 0x28f8, 0x2910, 0x2926, 0x2963, 0x29f0, 0x2a80, 0x2aea, + // Entry 4A5C0 - 4A5FF + 0x2afe, 0x2b53, 0x2bef, 0x2c61, 0x2cbf, 0x2d11, 0x2d27, 0x2d6f, + 0x2dd5, 0x2e33, 0x2e85, 0x2edf, 0x2f63, 0x2f7d, 0xffff, 0x2f95, + 0x2faf, 0x2fe1, 0xffff, 0x3045, 0x3093, 0x30bc, 0x30d8, 0x3103, + 0x312e, 0x3148, 0x315e, 0x318c, 0x31de, 0x31fe, 0x322e, 0x3274, + 0x32ac, 0x330e, 0x3340, 0x33ae, 0x3422, 0x3470, 0x34b0, 0x352c, + 0x3582, 0x359a, 0x35b9, 0x35fb, 0x3669, 0x0094, 0x006b, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0ac4, 0x0b4d, 0x0bb7, 0x0c25, 0x0cd9, + 0x0d9d, 0x0e4f, 0xffff, 0xffff, 0x0f2e, 0x0faa, 0x101e, 0x10b9, + // Entry 4A600 - 4A63F + 0x1133, 0x11af, 0x125e, 0x1334, 0x13d7, 0x147a, 0x14f4, 0x154a, + 0xffff, 0xffff, 0x15ee, 0xffff, 0x1689, 0xffff, 0x171a, 0x1784, + 0x17da, 0x183e, 0xffff, 0xffff, 0x1902, 0x1970, 0x19fc, 0xffff, + 0xffff, 0xffff, 0x1ab9, 0xffff, 0x1b50, 0x1be5, 0xffff, 0x1c6e, + 0x1cf7, 0x1d9e, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e9a, 0xffff, + 0xffff, 0x1f41, 0x1fe2, 0xffff, 0xffff, 0x20b3, 0x213e, 0x21a6, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22df, 0x233d, + 0x23a5, 0x240f, 0xffff, 0xffff, 0xffff, 0x24d3, 0xffff, 0x254f, + // Entry 4A640 - 4A67F + 0xffff, 0xffff, 0x2610, 0xffff, 0x26ae, 0xffff, 0xffff, 0xffff, + 0xffff, 0x2797, 0xffff, 0xffff, 0xffff, 0x281f, 0x2896, 0xffff, + 0xffff, 0xffff, 0x293c, 0x29cb, 0x2a5c, 0xffff, 0xffff, 0x2b23, + 0x2bcd, 0x2c4d, 0x2ca3, 0xffff, 0xffff, 0x2d53, 0x2dc1, 0x2e17, + 0xffff, 0x2eae, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2fc7, + 0xffff, 0x302f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3174, 0xffff, 0xffff, 0x3218, 0xffff, 0x3288, 0xffff, + 0x3326, 0x338e, 0x3408, 0xffff, 0x348e, 0x350e, 0xffff, 0xffff, + // Entry 4A680 - 4A6BF + 0xffff, 0x35e3, 0x3645, 0x0094, 0x006b, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0b1f, 0x0b8e, 0x0c00, 0x0c8e, 0x0d56, 0x0e0e, 0x0ede, + 0xffff, 0xffff, 0x0f7b, 0x0ff7, 0x1085, 0x110a, 0x1180, 0x121e, + 0x12e7, 0x139b, 0x143e, 0x14cb, 0x152d, 0x1597, 0xffff, 0xffff, + 0x1637, 0xffff, 0x16d8, 0xffff, 0x175b, 0x17bd, 0x1817, 0x188b, + 0xffff, 0xffff, 0x194b, 0x19c7, 0x1a35, 0xffff, 0xffff, 0xffff, + 0x1b0c, 0xffff, 0x1bb3, 0x1c40, 0xffff, 0x1cc9, 0x1d66, 0x1dd7, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1edb, 0xffff, 0xffff, 0x1fac, + // Entry 4A6C0 - 4A6FF + 0x204d, 0xffff, 0xffff, 0x210a, 0x2183, 0x21df, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2318, 0x2382, 0x23e6, 0x2450, + 0xffff, 0xffff, 0xffff, 0x2510, 0xffff, 0x25a0, 0xffff, 0xffff, + 0x265b, 0xffff, 0x26f3, 0xffff, 0xffff, 0xffff, 0xffff, 0x27e0, + 0xffff, 0xffff, 0xffff, 0x286e, 0x28d7, 0xffff, 0xffff, 0xffff, + 0x299b, 0x2a26, 0x2ab5, 0xffff, 0xffff, 0x2b94, 0x2c22, 0x2c86, + 0x2cec, 0xffff, 0xffff, 0x2d9c, 0x2dfa, 0x2e60, 0xffff, 0x2f21, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x300c, 0xffff, 0x306c, + // Entry 4A700 - 4A73F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31b5, + 0xffff, 0xffff, 0x3255, 0xffff, 0x32e1, 0xffff, 0x336b, 0x33df, + 0x344d, 0xffff, 0x34e3, 0x355b, 0xffff, 0xffff, 0xffff, 0x3624, + 0x369e, 0x0002, 0x0003, 0x0075, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, + 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, + 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, + // Entry 4A740 - 4A77F + 0x002f, 0x0044, 0x0000, 0x0000, 0x0000, 0x0053, 0x0064, 0x0000, + 0x0001, 0x0031, 0x0003, 0x0000, 0x0000, 0x0035, 0x000d, 0x006c, + 0xffff, 0x0000, 0x0011, 0x001e, 0x0025, 0x002c, 0x0033, 0x0035, + 0x0037, 0x003e, 0x0045, 0x004c, 0x0063, 0x0001, 0x0046, 0x0003, + 0x0000, 0x0000, 0x004a, 0x0007, 0x006c, 0x0074, 0x007e, 0x0088, + 0x0092, 0x009c, 0x00a9, 0x00b6, 0x0004, 0x0061, 0x005b, 0x0058, + 0x005e, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, + 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0072, 0x006c, + // Entry 4A780 - 4A7BF + 0x0069, 0x006f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, + 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x0000, + 0x0000, 0x0000, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00b8, 0x0000, 0x0000, 0x00bd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00cd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4A7C0 - 4A7FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2, 0x0000, 0x0000, + 0x00d7, 0x0000, 0x0000, 0x00dc, 0x0001, 0x00b5, 0x0001, 0x006c, + 0x00c0, 0x0001, 0x00ba, 0x0001, 0x006c, 0x00c7, 0x0001, 0x00bf, + 0x0001, 0x006c, 0x00ce, 0x0002, 0x00c5, 0x00c8, 0x0001, 0x006c, + 0x00d8, 0x0003, 0x006c, 0x00df, 0x00e6, 0x00ed, 0x0001, 0x00cf, + 0x0001, 0x006c, 0x00f4, 0x0001, 0x00d4, 0x0001, 0x006c, 0x0105, + 0x0001, 0x00d9, 0x0001, 0x006c, 0x010c, 0x0001, 0x00de, 0x0001, + 0x006c, 0x0113, 0x0002, 0x0003, 0x0075, 0x0008, 0x0000, 0x0000, + // Entry 4A800 - 4A83F + 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, + 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, + 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0010, 0x02f4, + 0x0008, 0x002f, 0x0044, 0x0000, 0x0000, 0x0000, 0x0053, 0x0064, + 0x0000, 0x0001, 0x0031, 0x0003, 0x0000, 0x0000, 0x0035, 0x000d, + 0x006c, 0xffff, 0x0120, 0x012d, 0x0137, 0x013d, 0x0142, 0x0033, + 0x0035, 0x0146, 0x014d, 0x0152, 0x0157, 0x0169, 0x0001, 0x0046, + // Entry 4A840 - 4A87F + 0x0003, 0x0000, 0x0000, 0x004a, 0x0007, 0x006c, 0x0176, 0x017d, + 0x0188, 0x018f, 0x0195, 0x019c, 0x01a3, 0x0004, 0x0061, 0x005b, + 0x0058, 0x005e, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, + 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0072, + 0x006c, 0x0069, 0x006f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, + 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, + 0x0000, 0x0000, 0x0000, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00b8, 0x0000, 0x0000, 0x00bd, 0x0000, 0x0000, 0x0000, + // Entry 4A880 - 4A8BF + 0x0000, 0x0000, 0x00c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2, 0x0000, + 0x0000, 0x00d7, 0x0000, 0x0000, 0x00dc, 0x0001, 0x00b5, 0x0001, + 0x006c, 0x01ab, 0x0001, 0x00ba, 0x0001, 0x000a, 0x0184, 0x0001, + 0x00bf, 0x0001, 0x005e, 0x01f4, 0x0002, 0x00c5, 0x00c8, 0x0001, + // Entry 4A8C0 - 4A8FF + 0x006c, 0x01b0, 0x0003, 0x000a, 0x0197, 0x5dee, 0x5df5, 0x0001, + 0x00cf, 0x0001, 0x006c, 0x01b5, 0x0001, 0x00d4, 0x0001, 0x006c, + 0x01c4, 0x0001, 0x00d9, 0x0001, 0x006c, 0x01c9, 0x0001, 0x00de, + 0x0001, 0x006c, 0x01ce, 0x0003, 0x0004, 0x053a, 0x08e4, 0x0012, + 0x0017, 0x002e, 0x0151, 0x0000, 0x019d, 0x0000, 0x01e9, 0x0214, + 0x0432, 0x046d, 0x04b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x04c2, + 0x04da, 0x0522, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, + 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, + // Entry 4A900 - 4A93F + 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x002b, 0x0001, 0x006c, + 0x01d8, 0x000a, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0140, + 0x0000, 0x0000, 0x009e, 0x00b1, 0x0002, 0x003c, 0x006d, 0x0003, + 0x0040, 0x004f, 0x005e, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, + 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + // Entry 4A940 - 4A97F + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + 0x0003, 0x0071, 0x0080, 0x008f, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, + 0x41c4, 0x0003, 0x00a2, 0x00ad, 0x00a7, 0x0003, 0x006c, 0xffff, + // Entry 4A980 - 4A9BF + 0xffff, 0x01f9, 0x0004, 0x006c, 0xffff, 0xffff, 0xffff, 0x01f9, + 0x0002, 0x006c, 0xffff, 0x01f9, 0x0006, 0x00b8, 0x0000, 0x0000, + 0x00cb, 0x00ea, 0x012d, 0x0001, 0x00ba, 0x0001, 0x00bc, 0x000d, + 0x006c, 0xffff, 0x0205, 0x0209, 0x020f, 0x0215, 0x021a, 0x0220, + 0x0225, 0x022b, 0x0230, 0x0236, 0x023c, 0x0243, 0x0001, 0x00cd, + 0x0001, 0x00cf, 0x0019, 0x006c, 0xffff, 0x0249, 0x0255, 0x0260, + 0x026c, 0x0278, 0x0283, 0x028d, 0x0298, 0x02a4, 0x02b1, 0x02bb, + 0x02c8, 0x02d5, 0x02df, 0x02ea, 0x02f6, 0x0300, 0x030a, 0x0319, + // Entry 4A9C0 - 4A9FF + 0x0326, 0x0335, 0x0344, 0x0350, 0x035c, 0x0001, 0x00ec, 0x0001, + 0x00ee, 0x003d, 0x006c, 0xffff, 0x0368, 0x0372, 0x037d, 0x0389, + 0x0394, 0x03a0, 0x03aa, 0x03b5, 0x03bf, 0x03cb, 0x03d6, 0x03e3, + 0x03ee, 0x03f8, 0x0404, 0x0410, 0x041a, 0x0425, 0x042f, 0x043b, + 0x0445, 0x0451, 0x045c, 0x0469, 0x0475, 0x047f, 0x048a, 0x0495, + 0x049f, 0x04ab, 0x04b5, 0x04c1, 0x04cb, 0x04d7, 0x04e3, 0x04f0, + 0x04fb, 0x0504, 0x050f, 0x051b, 0x0525, 0x0531, 0x053b, 0x0547, + 0x0552, 0x055e, 0x0569, 0x0575, 0x0580, 0x058a, 0x0595, 0x05a1, + // Entry 4AA00 - 4AA3F + 0x05ab, 0x05b7, 0x05c2, 0x05ce, 0x05d8, 0x05e3, 0x05ee, 0x05fb, + 0x0001, 0x012f, 0x0001, 0x0131, 0x000d, 0x006c, 0xffff, 0x0205, + 0x0209, 0x020f, 0x0215, 0x021a, 0x0220, 0x0225, 0x022b, 0x0230, + 0x0236, 0x023c, 0x0243, 0x0004, 0x014e, 0x0148, 0x0145, 0x014b, + 0x0001, 0x006c, 0x0606, 0x0001, 0x006c, 0x0625, 0x0001, 0x006c, + 0x0644, 0x0001, 0x0002, 0x0860, 0x0001, 0x0153, 0x0002, 0x0156, + 0x0179, 0x0002, 0x0159, 0x0169, 0x000e, 0x0000, 0xffff, 0x03ce, + 0x41c7, 0x41cc, 0x3ebd, 0x41d2, 0x391a, 0x41d7, 0x03f9, 0x392a, + // Entry 4AA40 - 4AA7F + 0x41e0, 0x41e6, 0x41eb, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x0003, 0x017d, 0x0000, 0x018d, + 0x000e, 0x0000, 0xffff, 0x03ce, 0x41c7, 0x41cc, 0x3ebd, 0x41d2, + 0x391a, 0x41d7, 0x03f9, 0x392a, 0x41e0, 0x41e6, 0x41eb, 0x041c, + 0x000e, 0x0000, 0xffff, 0x03ce, 0x41c7, 0x41cc, 0x3ebd, 0x41d2, + 0x391a, 0x41d7, 0x03f9, 0x392a, 0x41e0, 0x41e6, 0x41eb, 0x041c, + 0x0001, 0x019f, 0x0002, 0x01a2, 0x01c5, 0x0002, 0x01a5, 0x01b5, + // Entry 4AA80 - 4AABF + 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x41f4, 0x3938, 0x41fa, + 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, + 0x0003, 0x01c9, 0x0000, 0x01d9, 0x000e, 0x0000, 0xffff, 0x042f, + 0x0438, 0x41f4, 0x3938, 0x41fa, 0x0450, 0x0458, 0x0460, 0x393f, + 0x046e, 0x3946, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, 0x042f, + 0x0438, 0x41f4, 0x3938, 0x41fa, 0x0450, 0x0458, 0x0460, 0x393f, + // Entry 4AAC0 - 4AAFF + 0x046e, 0x3946, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01f2, 0x0000, 0x0203, 0x0004, 0x0200, 0x01fa, + 0x01f7, 0x01fd, 0x0001, 0x006c, 0x064c, 0x0001, 0x006c, 0x0674, + 0x0001, 0x0005, 0x01ac, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0211, + 0x020b, 0x0208, 0x020e, 0x0001, 0x006c, 0x0695, 0x0001, 0x006c, + 0x0695, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x021d, 0x0282, 0x02d9, 0x030e, 0x03df, 0x03ff, 0x0410, 0x0421, + 0x0002, 0x0220, 0x0251, 0x0003, 0x0224, 0x0233, 0x0242, 0x000d, + // Entry 4AB00 - 4AB3F + 0x006c, 0xffff, 0x06a4, 0x06aa, 0x06b0, 0x06b6, 0x06bc, 0x06c2, + 0x06c8, 0x06ce, 0x06d4, 0x06da, 0x06e1, 0x06e8, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, + 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006c, 0xffff, + 0x06ef, 0x06f8, 0x0701, 0x070a, 0x0713, 0x071c, 0x0725, 0x072e, + 0x0737, 0x0740, 0x074a, 0x0754, 0x0003, 0x0255, 0x0264, 0x0273, + 0x000d, 0x006c, 0xffff, 0x075e, 0x0764, 0x076a, 0x0770, 0x0776, + 0x077c, 0x0782, 0x0788, 0x078e, 0x0794, 0x079b, 0x07a2, 0x000d, + // Entry 4AB40 - 4AB7F + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006c, + 0xffff, 0x07a9, 0x07b2, 0x07bb, 0x07c4, 0x07cd, 0x07d6, 0x07df, + 0x07e8, 0x07f1, 0x07fa, 0x0804, 0x080e, 0x0002, 0x0285, 0x02af, + 0x0005, 0x028b, 0x0294, 0x02a6, 0x0000, 0x029d, 0x0007, 0x006c, + 0x0818, 0x081b, 0x0820, 0x0825, 0x082a, 0x082f, 0x0834, 0x0007, + 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, 0x0842, 0x0845, 0x0848, + 0x0007, 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, 0x0842, 0x0845, + // Entry 4AB80 - 4ABBF + 0x0848, 0x0007, 0x006c, 0x084b, 0x0858, 0x0862, 0x086b, 0x0875, + 0x0880, 0x088b, 0x0005, 0x02b5, 0x02be, 0x02d0, 0x0000, 0x02c7, + 0x0007, 0x006c, 0x0818, 0x081b, 0x0820, 0x0825, 0x082a, 0x082f, + 0x0834, 0x0007, 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, 0x0842, + 0x0845, 0x0848, 0x0007, 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, + 0x0842, 0x0845, 0x0848, 0x0007, 0x006c, 0x084b, 0x0858, 0x0862, + 0x086b, 0x0875, 0x0880, 0x088b, 0x0002, 0x02dc, 0x02f5, 0x0003, + 0x02e0, 0x02e7, 0x02ee, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, + // Entry 4ABC0 - 4ABFF + 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x006c, 0xffff, 0x0897, 0x089e, 0x08a5, 0x08ac, + 0x0003, 0x02f9, 0x0300, 0x0307, 0x0005, 0x0000, 0xffff, 0x04e3, + 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x006c, 0xffff, 0x08b3, 0x08ba, 0x08c1, + 0x08c8, 0x0002, 0x0311, 0x0378, 0x0003, 0x0315, 0x0336, 0x0357, + 0x0008, 0x0321, 0x0327, 0x031e, 0x032a, 0x032d, 0x0330, 0x0333, + 0x0324, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, 0x0001, + // Entry 4AC00 - 4AC3F + 0x006c, 0x08db, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, 0x08e1, + 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, 0x006c, + 0x08f5, 0x0008, 0x0342, 0x0348, 0x033f, 0x034b, 0x034e, 0x0351, + 0x0354, 0x0345, 0x0001, 0x006c, 0x08cf, 0x0001, 0x0000, 0x2002, + 0x0001, 0x0043, 0x054d, 0x0001, 0x0057, 0x0df6, 0x0001, 0x006c, + 0x08e1, 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, + 0x006c, 0x08f5, 0x0008, 0x0363, 0x0369, 0x0360, 0x036c, 0x036f, + 0x0372, 0x0375, 0x0366, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, + // Entry 4AC40 - 4AC7F + 0x1380, 0x0001, 0x006c, 0x08db, 0x0001, 0x006c, 0x08de, 0x0001, + 0x006c, 0x08e1, 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, + 0x0001, 0x006c, 0x08f5, 0x0003, 0x037c, 0x039d, 0x03be, 0x0008, + 0x0388, 0x038e, 0x0385, 0x0391, 0x0394, 0x0397, 0x039a, 0x038b, + 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, 0x0001, 0x006c, + 0x08db, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, 0x08e1, 0x0001, + 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, 0x006c, 0x08f5, + 0x0008, 0x03a9, 0x03af, 0x03a6, 0x03b2, 0x03b5, 0x03b8, 0x03bb, + // Entry 4AC80 - 4ACBF + 0x03ac, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, 0x0001, + 0x006c, 0x08fb, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, 0x08e1, + 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, 0x006c, + 0x08f5, 0x0008, 0x03ca, 0x03d0, 0x03c7, 0x03d3, 0x03d6, 0x03d9, + 0x03dc, 0x03cd, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, + 0x0001, 0x006c, 0x08fb, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, + 0x08e1, 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, + 0x006c, 0x08f5, 0x0003, 0x03ee, 0x03f9, 0x03e3, 0x0002, 0x03e6, + // Entry 4ACC0 - 4ACFF + 0x03ea, 0x0002, 0x006c, 0x0901, 0x090d, 0x0002, 0x006c, 0xffff, + 0x0818, 0x0002, 0x03f1, 0x03f5, 0x0002, 0x006c, 0x0901, 0x090d, + 0x0002, 0x006c, 0xffff, 0x0818, 0x0001, 0x03fb, 0x0002, 0x006c, + 0x0914, 0x090d, 0x0004, 0x040d, 0x0407, 0x0404, 0x040a, 0x0001, + 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, + 0x0001, 0x0002, 0x0860, 0x0004, 0x041e, 0x0418, 0x0415, 0x041b, + 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, + 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x042f, 0x0429, 0x0426, + // Entry 4AD00 - 4AD3F + 0x042c, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, 0x0347, 0x0001, + 0x0029, 0x029e, 0x0001, 0x0029, 0x029e, 0x0001, 0x0434, 0x0002, + 0x0437, 0x0449, 0x0001, 0x0439, 0x000e, 0x0000, 0x4217, 0x054c, + 0x0553, 0x41fe, 0x4205, 0x0568, 0x420b, 0x4212, 0x421f, 0x4225, + 0x422a, 0x4230, 0x4236, 0x4239, 0x0003, 0x044d, 0x0000, 0x045d, + 0x000e, 0x0000, 0x4217, 0x054c, 0x0553, 0x41fe, 0x4205, 0x0568, + 0x420b, 0x4212, 0x421f, 0x4225, 0x422a, 0x4230, 0x4236, 0x4239, + 0x000e, 0x0000, 0x4217, 0x054c, 0x0553, 0x41fe, 0x4205, 0x0568, + // Entry 4AD40 - 4AD7F + 0x420b, 0x4212, 0x421f, 0x4225, 0x422a, 0x4230, 0x4236, 0x4239, + 0x0001, 0x046f, 0x0002, 0x0472, 0x0493, 0x0002, 0x0475, 0x0484, + 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x423e, + 0x05cb, 0x4246, 0x424d, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x0003, 0x0497, + 0x0000, 0x04a6, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, + 0x05bc, 0x423e, 0x05cb, 0x4246, 0x424d, 0x05e1, 0x05ec, 0x05f2, + // Entry 4AD80 - 4ADBF + 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, + 0x423e, 0x05cb, 0x4246, 0x424d, 0x05e1, 0x05ec, 0x05f2, 0x05f8, + 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x04bb, 0x0001, 0x04bd, + 0x0001, 0x04bf, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x04c9, 0x0004, 0x04d7, 0x04d1, 0x04ce, + 0x04d4, 0x0001, 0x006c, 0x01d8, 0x0001, 0x006c, 0x0674, 0x0001, + 0x0005, 0x01ac, 0x0001, 0x0010, 0x02f4, 0x0001, 0x04dc, 0x0002, + 0x04df, 0x0500, 0x0002, 0x04e2, 0x04f1, 0x000d, 0x0000, 0xffff, + // Entry 4ADC0 - 4ADFF + 0x19c9, 0x19d3, 0x19df, 0x4255, 0x4259, 0x19f2, 0x4260, 0x4265, + 0x426a, 0x426f, 0x409e, 0x40a5, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + 0x41be, 0x41c1, 0x41c4, 0x0003, 0x0504, 0x0000, 0x0513, 0x000d, + 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x4255, 0x4259, 0x19f2, + 0x4260, 0x4265, 0x426a, 0x426f, 0x409e, 0x40a5, 0x000d, 0x0000, + 0xffff, 0x19c9, 0x19d3, 0x19df, 0x4255, 0x4259, 0x19f2, 0x4260, + 0x4265, 0x426a, 0x426f, 0x409e, 0x40a5, 0x0008, 0x0000, 0x0000, + // Entry 4AE00 - 4AE3F + 0x0000, 0x0000, 0x052b, 0x0533, 0x0000, 0x9006, 0x0001, 0x052d, + 0x0001, 0x052f, 0x0002, 0x006c, 0x091b, 0x092a, 0x0003, 0x0000, + 0x0000, 0x0537, 0x0001, 0x006c, 0x01d8, 0x0040, 0x057b, 0x0000, + 0x0000, 0x0580, 0x0595, 0x05aa, 0x05bf, 0x05d4, 0x05e9, 0x05fe, + 0x0613, 0x0628, 0x063d, 0x0656, 0x066f, 0x0000, 0x0000, 0x0000, + 0x0688, 0x069f, 0x06af, 0x0000, 0x0000, 0x0000, 0x06bf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x06c4, 0x06d6, 0x06e8, 0x06fa, + 0x070c, 0x071e, 0x0730, 0x0742, 0x0754, 0x0766, 0x0778, 0x078a, + // Entry 4AE40 - 4AE7F + 0x079c, 0x07ae, 0x07c0, 0x07d2, 0x07e4, 0x07f6, 0x0808, 0x081a, + 0x082c, 0x0000, 0x083e, 0x0000, 0x0843, 0x0857, 0x0867, 0x0877, + 0x088b, 0x089b, 0x08ab, 0x08bf, 0x08cf, 0x08df, 0x0001, 0x057d, + 0x0001, 0x006c, 0x0931, 0x0003, 0x0584, 0x0587, 0x058c, 0x0001, + 0x006c, 0x093f, 0x0003, 0x006c, 0x0944, 0x0950, 0x0959, 0x0002, + 0x058f, 0x0592, 0x0001, 0x006c, 0x0962, 0x0001, 0x006c, 0x0975, + 0x0003, 0x0599, 0x059c, 0x05a1, 0x0001, 0x006c, 0x093f, 0x0003, + 0x006c, 0x0944, 0x0950, 0x0959, 0x0002, 0x05a4, 0x05a7, 0x0001, + // Entry 4AE80 - 4AEBF + 0x006c, 0x0962, 0x0001, 0x006c, 0x0975, 0x0003, 0x05ae, 0x05b1, + 0x05b6, 0x0001, 0x006c, 0x093f, 0x0003, 0x006c, 0x0944, 0x0950, + 0x0959, 0x0002, 0x05b9, 0x05bc, 0x0001, 0x006c, 0x0962, 0x0001, + 0x006c, 0x0975, 0x0003, 0x05c3, 0x05c6, 0x05cb, 0x0001, 0x006c, + 0x0987, 0x0003, 0x006c, 0x098c, 0x099a, 0x09a4, 0x0002, 0x05ce, + 0x05d1, 0x0001, 0x006c, 0x09ad, 0x0001, 0x006c, 0x09c0, 0x0003, + 0x05d8, 0x05db, 0x05e0, 0x0001, 0x006c, 0x0987, 0x0003, 0x006c, + 0x098c, 0x099a, 0x09a4, 0x0002, 0x05e3, 0x05e6, 0x0001, 0x006c, + // Entry 4AEC0 - 4AEFF + 0x09ad, 0x0001, 0x006c, 0x09c0, 0x0003, 0x05ed, 0x05f0, 0x05f5, + 0x0001, 0x006c, 0x0987, 0x0003, 0x006c, 0x098c, 0x099a, 0x09a4, + 0x0002, 0x05f8, 0x05fb, 0x0001, 0x006c, 0x09ad, 0x0001, 0x006c, + 0x09c0, 0x0003, 0x0602, 0x0605, 0x060a, 0x0001, 0x006c, 0x09d2, + 0x0003, 0x006c, 0x09d9, 0x09e9, 0x09f5, 0x0002, 0x060d, 0x0610, + 0x0001, 0x006c, 0x0a00, 0x0001, 0x006c, 0x0a15, 0x0003, 0x0617, + 0x061a, 0x061f, 0x0001, 0x006c, 0x09d2, 0x0003, 0x006c, 0x09d9, + 0x09e9, 0x09f5, 0x0002, 0x0622, 0x0625, 0x0001, 0x006c, 0x0a00, + // Entry 4AF00 - 4AF3F + 0x0001, 0x006c, 0x0a15, 0x0003, 0x062c, 0x062f, 0x0634, 0x0001, + 0x006c, 0x09d2, 0x0003, 0x006c, 0x09d9, 0x09e9, 0x09f5, 0x0002, + 0x0637, 0x063a, 0x0001, 0x006c, 0x0a00, 0x0001, 0x006c, 0x0a15, + 0x0004, 0x0642, 0x0645, 0x064a, 0x0653, 0x0001, 0x006c, 0x0a29, + 0x0003, 0x006c, 0x0a30, 0x0a40, 0x0a4c, 0x0002, 0x064d, 0x0650, + 0x0001, 0x006c, 0x0a57, 0x0001, 0x006c, 0x0a6c, 0x0001, 0x006c, + 0x0a80, 0x0004, 0x065b, 0x065e, 0x0663, 0x066c, 0x0001, 0x006c, + 0x0a29, 0x0003, 0x006c, 0x0a30, 0x0a40, 0x0a4c, 0x0002, 0x0666, + // Entry 4AF40 - 4AF7F + 0x0669, 0x0001, 0x006c, 0x0a57, 0x0001, 0x006c, 0x0a6c, 0x0001, + 0x006c, 0x0a80, 0x0004, 0x0674, 0x0677, 0x067c, 0x0685, 0x0001, + 0x006c, 0x0a29, 0x0003, 0x006c, 0x0a30, 0x0a40, 0x0a4c, 0x0002, + 0x067f, 0x0682, 0x0001, 0x006c, 0x0a57, 0x0001, 0x006c, 0x0a6c, + 0x0001, 0x006c, 0x0a80, 0x0003, 0x068c, 0x068f, 0x0696, 0x0001, + 0x006c, 0x0a8b, 0x0005, 0x006c, 0x0a9a, 0x0aa3, 0x0aac, 0x0a91, + 0x0ab6, 0x0002, 0x0699, 0x069c, 0x0001, 0x006c, 0x0ac0, 0x0001, + 0x006c, 0x0ad4, 0x0003, 0x06a3, 0x0000, 0x06a6, 0x0001, 0x006c, + // Entry 4AF80 - 4AFBF + 0x0a8b, 0x0002, 0x06a9, 0x06ac, 0x0001, 0x006c, 0x0ac0, 0x0001, + 0x006c, 0x0ad4, 0x0003, 0x06b3, 0x0000, 0x06b6, 0x0001, 0x006c, + 0x0a8b, 0x0002, 0x06b9, 0x06bc, 0x0001, 0x006c, 0x0ac0, 0x0001, + 0x006c, 0x0ad4, 0x0001, 0x06c1, 0x0001, 0x006c, 0x0ae7, 0x0003, + 0x0000, 0x06c8, 0x06cd, 0x0003, 0x006c, 0x0afa, 0x0b17, 0x0b30, + 0x0002, 0x06d0, 0x06d3, 0x0001, 0x006c, 0x0b48, 0x0001, 0x006c, + 0x0b63, 0x0003, 0x0000, 0x06da, 0x06df, 0x0003, 0x006c, 0x0afa, + 0x0b17, 0x0b30, 0x0002, 0x06e2, 0x06e5, 0x0001, 0x006c, 0x0b48, + // Entry 4AFC0 - 4AFFF + 0x0001, 0x006c, 0x0b63, 0x0003, 0x0000, 0x06ec, 0x06f1, 0x0003, + 0x006c, 0x0afa, 0x0b17, 0x0b30, 0x0002, 0x06f4, 0x06f7, 0x0001, + 0x006c, 0x0b48, 0x0001, 0x006c, 0x0b63, 0x0003, 0x0000, 0x06fe, + 0x0703, 0x0003, 0x006c, 0x0b7d, 0x0b97, 0x0bad, 0x0002, 0x0706, + 0x0709, 0x0001, 0x006c, 0x0bc2, 0x0001, 0x006c, 0x0bda, 0x0003, + 0x0000, 0x0710, 0x0715, 0x0003, 0x006c, 0x0b7d, 0x0b97, 0x0bad, + 0x0002, 0x0718, 0x071b, 0x0001, 0x006c, 0x0bc2, 0x0001, 0x006c, + 0x0bda, 0x0003, 0x0000, 0x0722, 0x0727, 0x0003, 0x006c, 0x0b7d, + // Entry 4B000 - 4B03F + 0x0b97, 0x0bad, 0x0002, 0x072a, 0x072d, 0x0001, 0x006c, 0x0bc2, + 0x0001, 0x006c, 0x0bda, 0x0003, 0x0000, 0x0734, 0x0739, 0x0003, + 0x006c, 0x0bf1, 0x0c0a, 0x0c1f, 0x0002, 0x073c, 0x073f, 0x0001, + 0x006c, 0x0c33, 0x0001, 0x006c, 0x0c4a, 0x0003, 0x0000, 0x0746, + 0x074b, 0x0003, 0x006c, 0x0bf1, 0x0c0a, 0x0c1f, 0x0002, 0x074e, + 0x0751, 0x0001, 0x006c, 0x0c33, 0x0001, 0x006c, 0x0c4a, 0x0003, + 0x0000, 0x0758, 0x075d, 0x0003, 0x006c, 0x0bf1, 0x0c0a, 0x0c1f, + 0x0002, 0x0760, 0x0763, 0x0001, 0x006c, 0x0c33, 0x0001, 0x006c, + // Entry 4B040 - 4B07F + 0x0c4a, 0x0003, 0x0000, 0x076a, 0x076f, 0x0003, 0x006c, 0x0c60, + 0x0c7a, 0x0c90, 0x0002, 0x0772, 0x0775, 0x0001, 0x006c, 0x0ca5, + 0x0001, 0x006c, 0x0cbd, 0x0003, 0x0000, 0x077c, 0x0781, 0x0003, + 0x006c, 0x0c60, 0x0c7a, 0x0c90, 0x0002, 0x0784, 0x0787, 0x0001, + 0x006c, 0x0ca5, 0x0001, 0x006c, 0x0cbd, 0x0003, 0x0000, 0x078e, + 0x0793, 0x0003, 0x006c, 0x0c60, 0x0c7a, 0x0c90, 0x0002, 0x0796, + 0x0799, 0x0001, 0x006c, 0x0ca5, 0x0001, 0x006c, 0x0cbd, 0x0003, + 0x0000, 0x07a0, 0x07a5, 0x0003, 0x006c, 0x0cd4, 0x0cef, 0x0d06, + // Entry 4B080 - 4B0BF + 0x0002, 0x07a8, 0x07ab, 0x0001, 0x006c, 0x0d1c, 0x0001, 0x006c, + 0x0d35, 0x0003, 0x0000, 0x07b2, 0x07b7, 0x0003, 0x006c, 0x0cd4, + 0x0cef, 0x0d06, 0x0002, 0x07ba, 0x07bd, 0x0001, 0x006c, 0x0d1c, + 0x0001, 0x006c, 0x0d35, 0x0003, 0x0000, 0x07c4, 0x07c9, 0x0003, + 0x006c, 0x0cd4, 0x0cef, 0x0d06, 0x0002, 0x07cc, 0x07cf, 0x0001, + 0x006c, 0x0d1c, 0x0001, 0x006c, 0x0d35, 0x0003, 0x0000, 0x07d6, + 0x07db, 0x0003, 0x006c, 0x0d4d, 0x0d68, 0x0d7f, 0x0002, 0x07de, + 0x07e1, 0x0001, 0x006c, 0x0d95, 0x0001, 0x006c, 0x0dae, 0x0003, + // Entry 4B0C0 - 4B0FF + 0x0000, 0x07e8, 0x07ed, 0x0003, 0x006c, 0x0d4d, 0x0d68, 0x0d7f, + 0x0002, 0x07f0, 0x07f3, 0x0001, 0x006c, 0x0d95, 0x0001, 0x006c, + 0x0dae, 0x0003, 0x0000, 0x07fa, 0x07ff, 0x0003, 0x006c, 0x0d4d, + 0x0d68, 0x0d7f, 0x0002, 0x0802, 0x0805, 0x0001, 0x006c, 0x0d95, + 0x0001, 0x006c, 0x0dae, 0x0003, 0x0000, 0x080c, 0x0811, 0x0003, + 0x006c, 0x0dc6, 0x0de2, 0x0dfa, 0x0002, 0x0814, 0x0817, 0x0001, + 0x006c, 0x0e11, 0x0001, 0x006c, 0x0e2b, 0x0003, 0x0000, 0x081e, + 0x0823, 0x0003, 0x006c, 0x0dc6, 0x0de2, 0x0dfa, 0x0002, 0x0826, + // Entry 4B100 - 4B13F + 0x0829, 0x0001, 0x006c, 0x0e11, 0x0001, 0x006c, 0x0e2b, 0x0003, + 0x0000, 0x0830, 0x0835, 0x0003, 0x006c, 0x0dc6, 0x0de2, 0x0dfa, + 0x0002, 0x0838, 0x083b, 0x0001, 0x006c, 0x0e11, 0x0001, 0x006c, + 0x0e2b, 0x0001, 0x0840, 0x0001, 0x006c, 0x0e44, 0x0003, 0x0847, + 0x084a, 0x084e, 0x0001, 0x006c, 0x0e4a, 0x0002, 0x006c, 0xffff, + 0x0e50, 0x0002, 0x0851, 0x0854, 0x0001, 0x006c, 0x0e5b, 0x0001, + 0x006c, 0x0e6f, 0x0003, 0x085b, 0x0000, 0x085e, 0x0001, 0x006c, + 0x0e4a, 0x0002, 0x0861, 0x0864, 0x0001, 0x006c, 0x0e5b, 0x0001, + // Entry 4B140 - 4B17F + 0x006c, 0x0e6f, 0x0003, 0x086b, 0x0000, 0x086e, 0x0001, 0x006c, + 0x0e4a, 0x0002, 0x0871, 0x0874, 0x0001, 0x006c, 0x0e5b, 0x0001, + 0x006c, 0x0e6f, 0x0003, 0x087b, 0x087e, 0x0882, 0x0001, 0x006c, + 0x0e82, 0x0002, 0x006c, 0xffff, 0x0e88, 0x0002, 0x0885, 0x0888, + 0x0001, 0x006c, 0x0e93, 0x0001, 0x006c, 0x0ea7, 0x0003, 0x088f, + 0x0000, 0x0892, 0x0001, 0x006c, 0x0e82, 0x0002, 0x0895, 0x0898, + 0x0001, 0x006c, 0x0e93, 0x0001, 0x006c, 0x0ea7, 0x0003, 0x089f, + 0x0000, 0x08a2, 0x0001, 0x006c, 0x0e82, 0x0002, 0x08a5, 0x08a8, + // Entry 4B180 - 4B1BF + 0x0001, 0x006c, 0x0e93, 0x0001, 0x006c, 0x0ea7, 0x0003, 0x08af, + 0x08b2, 0x08b6, 0x0001, 0x006c, 0x0eba, 0x0002, 0x006c, 0xffff, + 0x0ec0, 0x0002, 0x08b9, 0x08bc, 0x0001, 0x006c, 0x0ecb, 0x0001, + 0x006c, 0x0edf, 0x0003, 0x08c3, 0x0000, 0x08c6, 0x0001, 0x006c, + 0x0eba, 0x0002, 0x08c9, 0x08cc, 0x0001, 0x006c, 0x0ecb, 0x0001, + 0x006c, 0x0edf, 0x0003, 0x08d3, 0x0000, 0x08d6, 0x0001, 0x006c, + 0x0eba, 0x0002, 0x08d9, 0x08dc, 0x0001, 0x006c, 0x0ecb, 0x0001, + 0x006c, 0x0edf, 0x0001, 0x08e1, 0x0001, 0x006c, 0x0ef2, 0x0004, + // Entry 4B1C0 - 4B1FF + 0x08e9, 0x08ee, 0x08f3, 0x0902, 0x0003, 0x0000, 0x1dc7, 0x40b8, + 0x40b4, 0x0003, 0x006c, 0x0efd, 0x0f07, 0x0f1a, 0x0002, 0x0000, + 0x08f6, 0x0003, 0x0000, 0x08fd, 0x08fa, 0x0001, 0x006c, 0x0f2c, + 0x0003, 0x006c, 0xffff, 0x0f4b, 0x0f5e, 0x0002, 0x0000, 0x0905, + 0x0003, 0x0909, 0x0a49, 0x09a9, 0x009e, 0x006c, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0fee, 0x102c, 0x109c, 0x10d4, 0x111e, 0x116b, + 0x11b2, 0x1211, 0x1249, 0x12e8, 0x1329, 0x136a, 0x13cf, 0x140a, + 0x1469, 0x14d7, 0x1554, 0x15c5, 0x1630, 0x1674, 0x16ac, 0xffff, + // Entry 4B200 - 4B23F + 0xffff, 0x170b, 0xffff, 0x1761, 0xffff, 0x17b4, 0x17ef, 0x1824, + 0x186e, 0xffff, 0xffff, 0x18e3, 0x1921, 0x1983, 0xffff, 0xffff, + 0xffff, 0x19ed, 0xffff, 0x1a57, 0x1a98, 0xffff, 0x1afa, 0x1b38, + 0x1ba0, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c31, 0xffff, 0xffff, + 0x1ca1, 0x1d0c, 0xffff, 0xffff, 0x1dac, 0x1dff, 0x1e49, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f19, 0x1f4b, 0x1f86, + 0x1fbe, 0x2008, 0xffff, 0xffff, 0x20b2, 0xffff, 0x2106, 0xffff, + 0xffff, 0x2182, 0xffff, 0x2212, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4B240 - 4B27F + 0x2298, 0xffff, 0x22e6, 0x233f, 0x23b3, 0x23f7, 0xffff, 0xffff, + 0xffff, 0x245e, 0x24ab, 0x24f2, 0xffff, 0xffff, 0x255c, 0x25dd, + 0x2624, 0x2656, 0xffff, 0xffff, 0x26b7, 0x26f5, 0x2727, 0xffff, + 0x2784, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2880, 0x28be, + 0x28f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x29a3, 0xffff, 0xffff, 0x2a09, 0xffff, 0x2a4a, 0xffff, 0x2aa1, + 0x2adc, 0x2b20, 0xffff, 0x2b6b, 0x2bb2, 0xffff, 0xffff, 0xffff, + 0x2c2a, 0x2c65, 0xffff, 0xffff, 0x0f73, 0x1064, 0x127b, 0x12b0, + // Entry 4B280 - 4B2BF + 0xffff, 0xffff, 0x21c3, 0x2823, 0x009e, 0x006c, 0x0fa5, 0x0fb7, + 0x0fc7, 0x0fd8, 0x0ffd, 0x1039, 0x10a9, 0x10e7, 0x1132, 0x117d, + 0x11cc, 0x121e, 0x1254, 0x12f8, 0x1339, 0x1386, 0x13dd, 0x1424, + 0x1488, 0x14fb, 0x1574, 0x15e3, 0x1641, 0x1681, 0x16bd, 0x16f0, + 0x16fd, 0x171a, 0x1749, 0x1772, 0x17a5, 0x17c2, 0x17fb, 0x1837, + 0x187f, 0x18b2, 0x18c9, 0x18f2, 0x193a, 0x198e, 0x19b5, 0x19c1, + 0x19da, 0x1a06, 0x1a49, 0x1a67, 0x1aa9, 0x1adc, 0x1b09, 0x1b55, + 0x1bab, 0x1bd2, 0x1bed, 0x1c13, 0x1c23, 0x1c3e, 0x1c69, 0x1c85, + // Entry 4B2C0 - 4B2FF + 0x1cbf, 0x1d28, 0x1d84, 0x1d9f, 0x1dc2, 0x1e12, 0x1e54, 0x1e7b, + 0x1e94, 0x1ead, 0x1ec2, 0x1edf, 0x1efd, 0x1f24, 0x1f59, 0x1f93, + 0x1fd1, 0x2027, 0x2076, 0x2095, 0x20c4, 0x20f9, 0x2118, 0x214d, + 0x2169, 0x2192, 0x21fb, 0x2220, 0x224d, 0x225c, 0x226b, 0x227b, + 0x22a8, 0x22d9, 0x22fe, 0x2360, 0x23c4, 0x2407, 0x2438, 0x2446, + 0x2452, 0x2472, 0x24bd, 0x2505, 0x253c, 0x2547, 0x2576, 0x25ef, + 0x262f, 0x2665, 0x2694, 0x26a0, 0x26c6, 0x2700, 0x2737, 0x2768, + 0x27a2, 0x27f1, 0x2800, 0x280d, 0x2864, 0x2872, 0x288f, 0x28cb, + // Entry 4B300 - 4B33F + 0x2902, 0x292c, 0x293d, 0x294d, 0x2969, 0x297b, 0x298a, 0x2996, + 0x29b5, 0x29ea, 0x29fb, 0x2a15, 0x2a3e, 0x2a5d, 0x2a94, 0x2aaf, + 0x2aed, 0x2b2e, 0x2b5b, 0x2b7d, 0x2bc2, 0x2bf3, 0x2c00, 0x2c12, + 0x2c38, 0x2c79, 0x1d71, 0x25bb, 0x0f7e, 0x1071, 0x1287, 0x12bd, + 0xffff, 0x215d, 0x21d0, 0x2833, 0x009e, 0x006c, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1014, 0x104e, 0x10be, 0x1102, 0x114e, 0x1197, + 0x11ee, 0x1233, 0x1267, 0x1310, 0x1351, 0x13aa, 0x13f3, 0x1446, + 0x14af, 0x1527, 0x159c, 0x1609, 0x165a, 0x1696, 0x16d6, 0xffff, + // Entry 4B340 - 4B37F + 0xffff, 0x1731, 0xffff, 0x178b, 0xffff, 0x17d8, 0x180f, 0x1852, + 0x1898, 0xffff, 0xffff, 0x1909, 0x195b, 0x19a1, 0xffff, 0xffff, + 0xffff, 0x1a27, 0xffff, 0x1a7f, 0x1ac2, 0xffff, 0x1b20, 0x1b7a, + 0x1bbe, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c53, 0xffff, 0xffff, + 0x1ce5, 0x1d4c, 0xffff, 0xffff, 0x1de0, 0x1e2d, 0x1e67, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f37, 0x1f6f, 0x1fa8, + 0x1fec, 0x204e, 0xffff, 0xffff, 0x20de, 0xffff, 0x2132, 0xffff, + 0xffff, 0x21aa, 0xffff, 0x2236, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4B380 - 4B3BF + 0x22c0, 0xffff, 0x231e, 0x2389, 0x23dd, 0x241f, 0xffff, 0xffff, + 0xffff, 0x248e, 0x24d7, 0x2520, 0xffff, 0xffff, 0x2598, 0x2609, + 0x2642, 0x267c, 0xffff, 0xffff, 0x26dd, 0x2713, 0x274f, 0xffff, + 0x27c8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28a6, 0x28e0, + 0x2916, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x29cf, 0xffff, 0xffff, 0x2a29, 0xffff, 0x2a78, 0xffff, 0x2ac5, + 0x2b06, 0x2b44, 0xffff, 0x2b97, 0x2bda, 0xffff, 0xffff, 0xffff, + 0x2c4e, 0x2c95, 0xffff, 0xffff, 0x0f91, 0x1086, 0x129b, 0x12d2, + // Entry 4B3C0 - 4B3FF + 0xffff, 0xffff, 0x21e5, 0x284b, 0x0002, 0x0003, 0x0116, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0024, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, + 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x006d, 0x0000, 0x0001, + 0x0000, 0x049a, 0x0001, 0x006d, 0x0017, 0x0001, 0x0000, 0x04af, + 0x0007, 0x002c, 0x0091, 0x00c9, 0x0000, 0x00e4, 0x00f4, 0x0105, + 0x0002, 0x002f, 0x0060, 0x0003, 0x0033, 0x0042, 0x0051, 0x000d, + 0x0007, 0xffff, 0x0035, 0x242c, 0x2430, 0x2435, 0x23c7, 0x2439, + // Entry 4B400 - 4B43F + 0x243d, 0x2441, 0x2445, 0x2449, 0x244d, 0x23d7, 0x000d, 0x0017, + 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x2a0d, 0x29f4, 0x29c1, 0x29c1, + 0x29d9, 0x2a09, 0x2a0b, 0x29fc, 0x29fe, 0x000d, 0x006d, 0xffff, + 0x0022, 0x0028, 0x002e, 0x0035, 0x003c, 0x0042, 0x0048, 0x004e, + 0x0055, 0x005b, 0x0061, 0x0067, 0x0003, 0x0064, 0x0073, 0x0082, + 0x000d, 0x0007, 0xffff, 0x0035, 0x242c, 0x2430, 0x2435, 0x23c7, + 0x2439, 0x243d, 0x2441, 0x2445, 0x2451, 0x244d, 0x23d7, 0x000d, + 0x0017, 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x2a0d, 0x29f4, 0x29c1, + // Entry 4B440 - 4B47F + 0x29c1, 0x29d9, 0x2a09, 0x2a0b, 0x29fc, 0x29fe, 0x000d, 0x006d, + 0xffff, 0x0022, 0x0028, 0x002e, 0x0035, 0x003c, 0x0042, 0x0048, + 0x004e, 0x0055, 0x005b, 0x0061, 0x0067, 0x0002, 0x0094, 0x00aa, + 0x0003, 0x0098, 0x0000, 0x00a1, 0x0007, 0x0024, 0x003a, 0x26ef, + 0x26f3, 0x26f7, 0x26fb, 0x2700, 0x2704, 0x0007, 0x006d, 0x006d, + 0x0073, 0x0079, 0x007f, 0x0085, 0x008c, 0x0093, 0x0003, 0x00ae, + 0x00b7, 0x00c0, 0x0007, 0x0016, 0x2b50, 0x2c4c, 0x2b66, 0x2b9a, + 0x2c4f, 0x2c53, 0x2c56, 0x0007, 0x0017, 0x2a09, 0x29f4, 0x2a0b, + // Entry 4B480 - 4B4BF + 0x2a0f, 0x29fe, 0x29f2, 0x29db, 0x0007, 0x006d, 0x006d, 0x0073, + 0x0079, 0x007f, 0x0085, 0x008c, 0x0093, 0x0001, 0x00cb, 0x0003, + 0x00cf, 0x00d6, 0x00dd, 0x0005, 0x006d, 0xffff, 0x009a, 0x009e, + 0x00a2, 0x00a6, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x006d, 0xffff, 0x00aa, 0x00b9, 0x00c8, 0x00d7, + 0x0003, 0x00ee, 0x0000, 0x00e8, 0x0001, 0x00ea, 0x0002, 0x006d, + 0x00e6, 0x00f0, 0x0001, 0x00f0, 0x0002, 0x006d, 0x00e6, 0x00f0, + 0x0004, 0x0102, 0x00fc, 0x00f9, 0x00ff, 0x0001, 0x006d, 0x00fa, + // Entry 4B4C0 - 4B4FF + 0x0001, 0x0000, 0x050b, 0x0001, 0x006d, 0x010f, 0x0001, 0x0000, + 0x051c, 0x0004, 0x0113, 0x010d, 0x010a, 0x0110, 0x0001, 0x0000, + 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, + 0x0000, 0x0546, 0x0040, 0x0157, 0x0000, 0x0000, 0x015c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0167, 0x0000, 0x0000, 0x0172, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x018a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4B500 - 4B53F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x018f, + 0x0000, 0x0194, 0x0000, 0x0000, 0x0199, 0x0000, 0x0000, 0x019e, + 0x0000, 0x0000, 0x01a3, 0x0001, 0x0159, 0x0001, 0x0016, 0x0478, + 0x0002, 0x015f, 0x0162, 0x0001, 0x006d, 0x0118, 0x0003, 0x006d, + 0x011c, 0x0123, 0x0129, 0x0002, 0x016a, 0x016d, 0x0001, 0x006d, + 0x012f, 0x0003, 0x006d, 0x0133, 0x013a, 0x0140, 0x0002, 0x0175, + 0x0178, 0x0001, 0x006d, 0x0146, 0x0003, 0x006d, 0x014a, 0x0151, + // Entry 4B540 - 4B57F + 0x0157, 0x0002, 0x0180, 0x0183, 0x0001, 0x0016, 0x06ae, 0x0005, + 0x006d, 0x0163, 0x016a, 0x0170, 0x015d, 0x0176, 0x0001, 0x018c, + 0x0001, 0x006d, 0x017c, 0x0001, 0x0191, 0x0001, 0x006d, 0x0184, + 0x0001, 0x0196, 0x0001, 0x006d, 0x018c, 0x0001, 0x019b, 0x0001, + 0x0010, 0x0b77, 0x0001, 0x01a0, 0x0001, 0x006d, 0x0191, 0x0001, + 0x01a5, 0x0001, 0x006d, 0x0197, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + // Entry 4B580 - 4B5BF + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x22d0, + 0x24e8, 0x2386, 0x224e, 0x22d4, 0x22d8, 0x24ec, 0x24f0, 0x22e0, + 0x21e2, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x2441, 0x22ea, + 0x2386, 0x22f2, 0x22f8, 0x22ff, 0x2447, 0x23ab, 0x2450, 0x23ba, + // Entry 4B5C0 - 4B5FF + 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, + 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, + 0x29fc, 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x0005, 0x06b6, 0x24f4, 0x24f8, 0x24fc, 0x2500, + 0x2504, 0x2508, 0x0007, 0x0036, 0x0313, 0x031d, 0x67eb, 0x032f, + 0x67f3, 0x67fc, 0x6803, 0x0002, 0x0000, 0x0082, 0x0007, 0x0017, + 0x29cf, 0x29cf, 0x29cf, 0x29cf, 0x29f6, 0x2a00, 0x29cf, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, + // Entry 4B600 - 4B63F + 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0005, 0xffff, 0x071a, + 0x0721, 0x0728, 0x072f, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0036, 0x0351, 0x0001, + 0x0036, 0x0357, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0036, 0x0351, + 0x0001, 0x0036, 0x0357, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + 0x00bd, 0x0002, 0x0036, 0x0361, 0x0371, 0x0001, 0x00c3, 0x0002, + 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + // Entry 4B640 - 4B67F + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4B680 - 4B6BF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, + 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, + 0x0001, 0x0036, 0x0381, 0x0001, 0x0131, 0x0001, 0x0036, 0x0387, + 0x0001, 0x0136, 0x0001, 0x0016, 0x0207, 0x0001, 0x013b, 0x0001, + 0x0036, 0x038c, 0x0002, 0x0141, 0x0144, 0x0001, 0x0036, 0x0393, + 0x0003, 0x0036, 0x0399, 0x039e, 0x03a2, 0x0001, 0x014b, 0x0001, + 0x0036, 0x03a8, 0x0001, 0x0150, 0x0001, 0x0056, 0x1c05, 0x0001, + // Entry 4B6C0 - 4B6FF + 0x0155, 0x0001, 0x0036, 0x03b5, 0x0001, 0x015a, 0x0001, 0x0009, + 0x030c, 0x0001, 0x015f, 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, + 0x0117, 0x01f1, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000d, 0x0024, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0000, 0x001e, 0x001b, + 0x0021, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, + 0x0015, 0x0000, 0x0008, 0x002d, 0x0092, 0x00d3, 0x0000, 0x0101, + 0x0109, 0x0000, 0x0000, 0x0002, 0x0030, 0x0061, 0x0003, 0x0034, + // Entry 4B700 - 4B73F + 0x0043, 0x0052, 0x000d, 0x0033, 0xffff, 0x0000, 0x2af1, 0x2af5, + 0x2afa, 0x2afe, 0x2b02, 0x2b07, 0x2b0b, 0x2b10, 0x2b14, 0x2b19, + 0x2b1d, 0x000d, 0x0017, 0xffff, 0x29cf, 0x2a11, 0x29f4, 0x29f6, + 0x29f4, 0x29b5, 0x2a11, 0x2a13, 0x2a11, 0x29d5, 0x29d5, 0x2a05, + 0x000d, 0x006d, 0xffff, 0x019b, 0x01a2, 0x01a9, 0x01b0, 0x01b8, + 0x01be, 0x01c7, 0x01ce, 0x01d7, 0x01e5, 0x01ef, 0x01fc, 0x0003, + 0x0065, 0x0074, 0x0083, 0x000d, 0x0033, 0xffff, 0x0000, 0x2af1, + 0x2af5, 0x2afa, 0x2afe, 0x2b02, 0x2b07, 0x2b0b, 0x2b10, 0x2b14, + // Entry 4B740 - 4B77F + 0x2b19, 0x2b1d, 0x000d, 0x0017, 0xffff, 0x29cf, 0x2a11, 0x29f4, + 0x29f6, 0x29f4, 0x29b5, 0x2a11, 0x2a13, 0x2a11, 0x29d5, 0x29d5, + 0x2a05, 0x000d, 0x006d, 0xffff, 0x019b, 0x01a2, 0x01a9, 0x01b0, + 0x01b8, 0x01be, 0x01c7, 0x01ce, 0x01d7, 0x01e5, 0x01ef, 0x01fc, + 0x0002, 0x0095, 0x00b4, 0x0003, 0x0099, 0x00a2, 0x00ab, 0x0007, + 0x0063, 0x1eaf, 0x2001, 0x2006, 0x200b, 0x200f, 0x2014, 0x2018, + 0x0007, 0x0017, 0x2a09, 0x29f4, 0x29db, 0x29f4, 0x29f2, 0x29f2, + 0x2a09, 0x0007, 0x006d, 0x020a, 0x0212, 0x021a, 0x0222, 0x022b, + // Entry 4B780 - 4B7BF + 0x0234, 0x023b, 0x0003, 0x00b8, 0x00c1, 0x00ca, 0x0007, 0x0063, + 0x1eaf, 0x2001, 0x2006, 0x200b, 0x200f, 0x2014, 0x2018, 0x0007, + 0x0017, 0x2a09, 0x29f4, 0x29db, 0x29f4, 0x29f2, 0x29f2, 0x2a09, + 0x0007, 0x006d, 0x020a, 0x0212, 0x021a, 0x0222, 0x022b, 0x0234, + 0x023b, 0x0002, 0x00d6, 0x00ef, 0x0003, 0x00da, 0x00e1, 0x00e8, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0053, + 0xffff, 0x01c1, 0x01cc, 0x01d7, 0x01e2, 0x0003, 0x00f3, 0x0000, + // Entry 4B7C0 - 4B7FF + 0x00fa, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, + 0x0005, 0x0053, 0xffff, 0x01c1, 0x01cc, 0x01d7, 0x01e2, 0x0001, + 0x0103, 0x0001, 0x0105, 0x0002, 0x0016, 0x0413, 0x2c5a, 0x0004, + 0x0000, 0x0111, 0x010e, 0x0114, 0x0001, 0x0016, 0x0460, 0x0001, + 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, 0x0040, 0x0158, 0x0000, + 0x0000, 0x015d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016f, + 0x0000, 0x0000, 0x0181, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0193, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ac, 0x0000, + // Entry 4B800 - 4B83F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x01b1, 0x0000, 0x01b6, 0x0000, 0x0000, 0x01c8, + 0x0000, 0x0000, 0x01da, 0x0000, 0x0000, 0x01ec, 0x0001, 0x015a, + 0x0001, 0x006d, 0x0244, 0x0003, 0x0161, 0x0000, 0x0164, 0x0001, + 0x006d, 0x024b, 0x0002, 0x0167, 0x016b, 0x0002, 0x006d, 0x0250, + 0x0250, 0x0002, 0x006d, 0x0268, 0x025b, 0x0003, 0x0173, 0x0000, + // Entry 4B840 - 4B87F + 0x0176, 0x0001, 0x006d, 0x0275, 0x0002, 0x0179, 0x017d, 0x0002, + 0x006d, 0x027c, 0x027c, 0x0002, 0x006d, 0x0289, 0x0289, 0x0003, + 0x0185, 0x0000, 0x0188, 0x0001, 0x006d, 0x0298, 0x0002, 0x018b, + 0x018f, 0x0002, 0x006d, 0x02aa, 0x029e, 0x0002, 0x006d, 0x02c5, + 0x02b7, 0x0003, 0x0197, 0x019a, 0x01a1, 0x0001, 0x0016, 0x06ae, + 0x0005, 0x006d, 0x02df, 0x02e7, 0x02ed, 0x02d4, 0x02f3, 0x0002, + 0x01a4, 0x01a8, 0x0002, 0x006d, 0x0307, 0x02fd, 0x0002, 0x006d, + 0x031e, 0x0312, 0x0001, 0x01ae, 0x0001, 0x006d, 0x032b, 0x0001, + // Entry 4B880 - 4B8BF + 0x01b3, 0x0001, 0x0007, 0x07cc, 0x0003, 0x01ba, 0x0000, 0x01bd, + 0x0001, 0x002a, 0x038d, 0x0002, 0x01c0, 0x01c4, 0x0002, 0x006d, + 0x0340, 0x0334, 0x0002, 0x006d, 0x035b, 0x034d, 0x0003, 0x01cc, + 0x0000, 0x01cf, 0x0001, 0x006d, 0x036a, 0x0002, 0x01d2, 0x01d6, + 0x0002, 0x006d, 0x0382, 0x0374, 0x0002, 0x006d, 0x03a0, 0x0390, + 0x0003, 0x01de, 0x0000, 0x01e1, 0x0001, 0x006d, 0x03b0, 0x0002, + 0x01e4, 0x01e8, 0x0002, 0x006d, 0x03c5, 0x03b8, 0x0002, 0x006d, + 0x03e2, 0x03d3, 0x0001, 0x01ee, 0x0001, 0x006d, 0x03f2, 0x0004, + // Entry 4B8C0 - 4B8FF + 0x0000, 0x01f6, 0x0000, 0x01f9, 0x0001, 0x006d, 0x03fb, 0x0002, + 0x0299, 0x01fc, 0x0003, 0x0200, 0x0266, 0x0233, 0x0031, 0x006d, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0403, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x043e, 0x048e, 0xffff, + // Entry 4B900 - 4B93F + 0x04d8, 0x0031, 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0412, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0454, 0x04a2, 0xffff, 0x04ed, 0x0031, 0x006d, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4B940 - 4B97F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0429, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0472, 0x04be, 0xffff, 0x050a, 0x0003, + 0x029d, 0x0303, 0x02d0, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4B980 - 4B9BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4B9C0 - 4B9FF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, + 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4BA00 - 4BA3F + 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0002, 0x0003, 0x00e9, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, + 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, + 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, + 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, + 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x250c, + // Entry 4BA40 - 4BA7F + 0x2372, 0x2376, 0x237a, 0x22d4, 0x222e, 0x237e, 0x2382, 0x22e0, + 0x21e2, 0x000d, 0x0041, 0xffff, 0x0000, 0x000a, 0x0014, 0x001b, + 0x0021, 0x0027, 0x002d, 0x0035, 0x003d, 0x0048, 0x3990, 0x3998, + 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, + 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, + 0x29fc, 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, + 0x0076, 0x0007, 0x006d, 0x0525, 0x052a, 0x052f, 0x0534, 0x0539, + 0x053e, 0x0543, 0x0007, 0x006d, 0x0548, 0x0550, 0x0557, 0x0561, + // Entry 4BA80 - 4BABF + 0x056b, 0x0573, 0x057e, 0x0002, 0x0000, 0x0082, 0x0007, 0x0017, + 0x2a09, 0x29b5, 0x29b5, 0x2a09, 0x2a07, 0x2a07, 0x29f4, 0x0001, + 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, + 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x006d, 0xffff, 0x0589, + 0x05a3, 0x05c0, 0x05dd, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, + 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x006d, 0x05f8, 0x0001, + 0x006d, 0x05ff, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x006d, 0x05f8, + 0x0001, 0x006d, 0x05ff, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, + // Entry 4BAC0 - 4BAFF + 0x00bd, 0x0002, 0x006d, 0x0606, 0x061a, 0x0001, 0x00c3, 0x0002, + 0x006d, 0x062d, 0x0630, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, + 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, + 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, + 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, + 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, + 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4BB00 - 4BB3F + 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, + 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, + 0x0001, 0x006d, 0x0633, 0x0001, 0x0131, 0x0001, 0x0012, 0x017b, + 0x0001, 0x0136, 0x0001, 0x0012, 0x0182, 0x0001, 0x013b, 0x0001, + // Entry 4BB40 - 4BB7F + 0x006d, 0x063c, 0x0002, 0x0141, 0x0144, 0x0001, 0x006d, 0x0645, + 0x0003, 0x006d, 0x064d, 0x0652, 0x0664, 0x0001, 0x014b, 0x0001, + 0x006d, 0x066a, 0x0001, 0x0150, 0x0001, 0x006d, 0x067e, 0x0001, + 0x0155, 0x0001, 0x006d, 0x068c, 0x0001, 0x015a, 0x0001, 0x0012, + 0x01e8, 0x0001, 0x015f, 0x0001, 0x006d, 0x0693, 0x0001, 0x0164, + 0x0001, 0x006d, 0x069f, 0x0002, 0x0003, 0x00d6, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, + // Entry 4BB80 - 4BBBF + 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, + 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, + 0x236f, 0x0008, 0x002f, 0x0053, 0x0078, 0x008c, 0x00a4, 0x00b4, + 0x00c5, 0x0000, 0x0001, 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, + 0x000d, 0x006d, 0xffff, 0x06ab, 0x06af, 0x06b3, 0x06b7, 0x06bb, + 0x06bf, 0x06c3, 0x06c7, 0x06cb, 0x06cf, 0x06d4, 0x06d9, 0x000d, + 0x006d, 0xffff, 0x06de, 0x0700, 0x071e, 0x0740, 0x0758, 0x0773, + 0x077a, 0x0780, 0x0788, 0x0797, 0x07b9, 0x07c4, 0x0002, 0x0056, + // Entry 4BBC0 - 4BBFF + 0x006c, 0x0003, 0x005a, 0x0000, 0x0063, 0x0007, 0x006d, 0x07d0, + 0x07d3, 0x07d6, 0x07d9, 0x07dc, 0x07df, 0x07e2, 0x0007, 0x006d, + 0x07e5, 0x07f0, 0x07f8, 0x080a, 0x0819, 0x082e, 0x0836, 0x0002, + 0x0000, 0x006f, 0x0007, 0x0000, 0x2002, 0x3a8d, 0x3a8d, 0x22e1, + 0x3aa3, 0x2006, 0x2002, 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, + 0x0085, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, + 0x0005, 0x006d, 0xffff, 0x083f, 0x084b, 0x0857, 0x0863, 0x0001, + 0x008e, 0x0003, 0x0092, 0x0000, 0x009b, 0x0002, 0x0095, 0x0098, + // Entry 4BC00 - 4BC3F + 0x0001, 0x006d, 0x086f, 0x0001, 0x006d, 0x087c, 0x0002, 0x009e, + 0x00a1, 0x0001, 0x006d, 0x086f, 0x0001, 0x006d, 0x087c, 0x0003, + 0x00ae, 0x0000, 0x00a8, 0x0001, 0x00aa, 0x0002, 0x006d, 0x0888, + 0x089c, 0x0001, 0x00b0, 0x0002, 0x003e, 0x0395, 0x20ea, 0x0004, + 0x00c2, 0x00bc, 0x00b9, 0x00bf, 0x0001, 0x0001, 0x1fa2, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, + 0x0004, 0x00d3, 0x00cd, 0x00ca, 0x00d0, 0x0001, 0x0000, 0x0524, + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + // Entry 4BC40 - 4BC7F + 0x0546, 0x0040, 0x0117, 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013b, 0x0000, + 0x0140, 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0000, + // Entry 4BC80 - 4BCBF + 0x0000, 0x014f, 0x0001, 0x0119, 0x0001, 0x006d, 0x08b3, 0x0001, + 0x011e, 0x0001, 0x006d, 0x08be, 0x0001, 0x0123, 0x0001, 0x006d, + 0x08c6, 0x0001, 0x0128, 0x0001, 0x006d, 0x07e5, 0x0002, 0x012e, + 0x0131, 0x0001, 0x006d, 0x08cc, 0x0003, 0x006d, 0x08d8, 0x08e0, + 0x08e7, 0x0001, 0x0138, 0x0001, 0x006d, 0x08f1, 0x0001, 0x013d, + 0x0001, 0x006d, 0x0908, 0x0001, 0x0142, 0x0001, 0x006d, 0x0921, + 0x0001, 0x0147, 0x0001, 0x006d, 0x092b, 0x0001, 0x014c, 0x0001, + 0x006d, 0x0932, 0x0001, 0x0151, 0x0001, 0x006d, 0x093a, 0x0003, + // Entry 4BCC0 - 4BCFF + 0x0004, 0x01a5, 0x02c9, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000e, 0x0039, 0x0119, 0x0008, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0017, 0x0000, 0x0028, 0x0004, 0x0025, + 0x001f, 0x001c, 0x0022, 0x0001, 0x002b, 0x0589, 0x0001, 0x002b, + 0x059c, 0x0001, 0x002b, 0x05a9, 0x0001, 0x001c, 0x14e1, 0x0004, + 0x0036, 0x0030, 0x002d, 0x0033, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, + 0x0008, 0x0042, 0x0089, 0x0000, 0x00ce, 0x0000, 0x00e6, 0x00f7, + // Entry 4BD00 - 4BD3F + 0x0108, 0x0002, 0x0045, 0x0067, 0x0003, 0x0049, 0x0000, 0x0058, + 0x000d, 0x006d, 0xffff, 0x0958, 0x0969, 0x097c, 0x0985, 0x0994, + 0x099b, 0x09a4, 0x09ad, 0x09bc, 0x09d1, 0x09e0, 0x09f3, 0x000d, + 0x006d, 0xffff, 0x0958, 0x0969, 0x097c, 0x0985, 0x0994, 0x099b, + 0x09a4, 0x09ad, 0x09bc, 0x09d1, 0x09e0, 0x09f3, 0x0003, 0x006b, + 0x0000, 0x007a, 0x000d, 0x006d, 0xffff, 0x0a04, 0x0a0d, 0x097c, + 0x0a16, 0x0994, 0x099b, 0x09a4, 0x0a21, 0x0a2a, 0x0a33, 0x0a3a, + 0x0a43, 0x000d, 0x006d, 0xffff, 0x0958, 0x0969, 0x097c, 0x0985, + // Entry 4BD40 - 4BD7F + 0x0994, 0x099b, 0x09a4, 0x09ad, 0x09bc, 0x09d1, 0x09e0, 0x09f3, + 0x0002, 0x008c, 0x00ad, 0x0005, 0x0092, 0x0000, 0x00a4, 0x0000, + 0x009b, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, 0x0a75, 0x0a84, + 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, 0x0a75, + 0x0a84, 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, + 0x0a75, 0x0a84, 0x0a97, 0x0aa8, 0x0005, 0x00b3, 0x0000, 0x00c5, + 0x0000, 0x00bc, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, 0x0a75, + 0x0a84, 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, + // Entry 4BD80 - 4BDBF + 0x0a75, 0x0a84, 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, + 0x0a66, 0x0a75, 0x0a84, 0x0a97, 0x0aa8, 0x0001, 0x00d0, 0x0003, + 0x00d4, 0x0000, 0x00dd, 0x0002, 0x00d7, 0x00da, 0x0001, 0x006d, + 0x0aaf, 0x0001, 0x006d, 0x0ac6, 0x0002, 0x00e0, 0x00e3, 0x0001, + 0x006d, 0x0aaf, 0x0001, 0x006d, 0x0ac6, 0x0004, 0x00f4, 0x00ee, + 0x00eb, 0x00f1, 0x0001, 0x006d, 0x0adb, 0x0001, 0x006d, 0x0aee, + 0x0001, 0x006d, 0x0afb, 0x0001, 0x0014, 0x146e, 0x0004, 0x0105, + 0x00ff, 0x00fc, 0x0102, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + // Entry 4BDC0 - 4BDFF + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x0116, 0x0110, 0x010d, 0x0113, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0122, 0x0000, 0x0000, 0x0000, 0x018d, 0x0194, 0x0000, + 0x9006, 0x0002, 0x0125, 0x0159, 0x0003, 0x0129, 0x0139, 0x0149, + 0x000e, 0x002b, 0x08af, 0x0873, 0x0948, 0x0885, 0x088e, 0x0895, + 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x08cd, 0x08d6, 0x08df, 0x08e4, + 0x000e, 0x006d, 0x0b2a, 0x0b07, 0x0b0c, 0x0b11, 0x0b16, 0x0b1b, + // Entry 4BE00 - 4BE3F + 0x0b20, 0x0b25, 0x0b2e, 0x0b33, 0x0b38, 0x0b3d, 0x0b42, 0x0b47, + 0x000e, 0x002b, 0x08af, 0x0873, 0x0948, 0x0885, 0x088e, 0x0895, + 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x08cd, 0x08d6, 0x4212, 0x08e4, + 0x0003, 0x015d, 0x016d, 0x017d, 0x000e, 0x002b, 0x08af, 0x0873, + 0x087c, 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, + 0x08cd, 0x08d6, 0x4212, 0x08e4, 0x000e, 0x006d, 0x0b2a, 0x0b07, + 0x0b0c, 0x0b11, 0x0b16, 0x0b1b, 0x0b20, 0x0b25, 0x0b2e, 0x0b33, + 0x0b38, 0x0b3d, 0x0b4c, 0x0b47, 0x000e, 0x002b, 0x08af, 0x0873, + // Entry 4BE40 - 4BE7F + 0x087c, 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, + 0x08cd, 0x08d6, 0x4217, 0x08e4, 0x0001, 0x018f, 0x0001, 0x0191, + 0x0001, 0x002b, 0x095e, 0x0004, 0x01a2, 0x019c, 0x0199, 0x019f, + 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x002b, + 0x085e, 0x0001, 0x002b, 0x085e, 0x0040, 0x01e6, 0x0000, 0x0000, + 0x01eb, 0x0202, 0x0214, 0x0000, 0x0000, 0x0000, 0x0226, 0x023d, + 0x024f, 0x0261, 0x026c, 0x0271, 0x0000, 0x0000, 0x0000, 0x0276, + 0x0288, 0x028d, 0x0000, 0x0000, 0x0000, 0x0292, 0x0000, 0x0000, + // Entry 4BE80 - 4BEBF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0297, 0x029c, 0x02a1, 0x02a6, 0x02ab, + 0x02b0, 0x02b5, 0x02ba, 0x02bf, 0x02c4, 0x0001, 0x01e8, 0x0001, + 0x006d, 0x0b51, 0x0003, 0x01ef, 0x01f2, 0x01f7, 0x0001, 0x006d, + 0x0b5e, 0x0003, 0x006d, 0x0b67, 0x0b7e, 0x0b8e, 0x0002, 0x01fa, + 0x01fe, 0x0002, 0x006d, 0x0ba5, 0x0ba5, 0x0002, 0x006d, 0x0bbd, + // Entry 4BEC0 - 4BEFF + 0x0bbd, 0x0003, 0x0206, 0x0000, 0x0209, 0x0001, 0x006d, 0x0b5e, + 0x0002, 0x020c, 0x0210, 0x0002, 0x006d, 0x0ba5, 0x0b8e, 0x0002, + 0x006d, 0x0bbd, 0x0bbd, 0x0003, 0x0218, 0x0000, 0x021b, 0x0001, + 0x006d, 0x0b5e, 0x0002, 0x021e, 0x0222, 0x0002, 0x006d, 0x0ba5, + 0x0ba5, 0x0002, 0x006d, 0x0bbd, 0x0bbd, 0x0003, 0x022a, 0x022d, + 0x0232, 0x0001, 0x006d, 0x0bd5, 0x0003, 0x006d, 0x0be2, 0x0c06, + 0x0c16, 0x0002, 0x0235, 0x0239, 0x0002, 0x006d, 0x0c4a, 0x0c32, + 0x0002, 0x006d, 0x0c7c, 0x0c64, 0x0003, 0x0241, 0x0000, 0x0244, + // Entry 4BF00 - 4BF3F + 0x0001, 0x006d, 0x0bd5, 0x0002, 0x0247, 0x024b, 0x0002, 0x006d, + 0x0c4a, 0x0c32, 0x0002, 0x006d, 0x0c7c, 0x0c64, 0x0003, 0x0253, + 0x0000, 0x0256, 0x0001, 0x006d, 0x0bd5, 0x0002, 0x0259, 0x025d, + 0x0002, 0x006d, 0x0c4a, 0x0c32, 0x0002, 0x006d, 0x0c7c, 0x0c64, + 0x0002, 0x0264, 0x0267, 0x0001, 0x006d, 0x0c96, 0x0003, 0x0000, + 0x1ae1, 0x1aeb, 0x4273, 0x0001, 0x026e, 0x0001, 0x006d, 0x0c96, + 0x0001, 0x0273, 0x0001, 0x006d, 0x0c96, 0x0003, 0x027a, 0x027d, + 0x0282, 0x0001, 0x006d, 0x0c9f, 0x0003, 0x006d, 0x0ca8, 0x0cb3, + // Entry 4BF40 - 4BF7F + 0x0cbe, 0x0001, 0x0284, 0x0002, 0x006d, 0x0ce8, 0x0cc9, 0x0001, + 0x028a, 0x0001, 0x006d, 0x0c9f, 0x0001, 0x028f, 0x0001, 0x006d, + 0x0c9f, 0x0001, 0x0294, 0x0001, 0x006d, 0x0d05, 0x0001, 0x0299, + 0x0001, 0x002b, 0x16bb, 0x0001, 0x029e, 0x0001, 0x002b, 0x16bb, + 0x0001, 0x02a3, 0x0001, 0x002b, 0x16bb, 0x0001, 0x02a8, 0x0001, + 0x006d, 0x0d25, 0x0001, 0x02ad, 0x0001, 0x006d, 0x0d25, 0x0001, + 0x02b2, 0x0001, 0x006d, 0x0d25, 0x0001, 0x02b7, 0x0001, 0x006d, + 0x0d30, 0x0001, 0x02bc, 0x0001, 0x006d, 0x0d30, 0x0001, 0x02c1, + // Entry 4BF80 - 4BFBF + 0x0001, 0x006d, 0x0d30, 0x0001, 0x02c6, 0x0001, 0x006d, 0x0d3f, + 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0003, 0x019c, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, + 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, + 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, + 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0094, 0x00d9, 0x010e, + 0x014f, 0x0169, 0x017a, 0x018b, 0x0002, 0x0032, 0x0063, 0x0003, + // Entry 4BFC0 - 4BFFF + 0x0036, 0x0045, 0x0054, 0x000d, 0x006d, 0xffff, 0x0d50, 0x0d5f, + 0x0d68, 0x0d75, 0x0d7c, 0x0d86, 0x0d8e, 0x0d98, 0x0d9f, 0x0da5, + 0x0db1, 0x0db8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, + 0x41c4, 0x000d, 0x006d, 0xffff, 0x0dc4, 0x0dda, 0x0dea, 0x0dfe, + 0x0e0c, 0x0e1d, 0x0e2c, 0x0e3d, 0x0e4b, 0x0e58, 0x0e6b, 0x0e79, + 0x0003, 0x0067, 0x0076, 0x0085, 0x000d, 0x006d, 0xffff, 0x0d50, + 0x0d5f, 0x0d68, 0x0d75, 0x0d7c, 0x0d86, 0x0d8e, 0x0d98, 0x0d9f, + // Entry 4C000 - 4C03F + 0x0da5, 0x0db1, 0x0db8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x0dc4, 0x0dda, 0x0dea, + 0x0dfe, 0x0e0c, 0x0e1d, 0x0e2c, 0x0e3d, 0x0e4b, 0x0e58, 0x0e6b, + 0x0e79, 0x0002, 0x0097, 0x00b8, 0x0005, 0x009d, 0x0000, 0x00af, + 0x0000, 0x00a6, 0x0007, 0x006d, 0x0e8c, 0x0e94, 0x0e99, 0x0ea5, + 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0e8c, 0x0e94, 0x0e99, + 0x0ea5, 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0ed5, 0x0ee7, + // Entry 4C040 - 4C07F + 0x0ef6, 0x0ea5, 0x0eb2, 0x0f0c, 0x0f1d, 0x0005, 0x00be, 0x0000, + 0x00d0, 0x0000, 0x00c7, 0x0007, 0x006d, 0x0e8c, 0x0e94, 0x0e99, + 0x0ea5, 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0e8c, 0x0e94, + 0x0e99, 0x0ea5, 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0ed5, + 0x0ee7, 0x0ef6, 0x0ea5, 0x0eb2, 0x0f0c, 0x0f1d, 0x0002, 0x00dc, + 0x00f5, 0x0003, 0x00e0, 0x00e7, 0x00ee, 0x0005, 0x0000, 0xffff, + 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x0005, 0x006d, 0xffff, 0x0f35, 0x0f47, + // Entry 4C080 - 4C0BF + 0x0f57, 0x0f65, 0x0003, 0x00f9, 0x0100, 0x0107, 0x0005, 0x0000, + 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x006d, 0xffff, 0x0f35, + 0x0f47, 0x0f57, 0x0f65, 0x0002, 0x0111, 0x0130, 0x0003, 0x0115, + 0x011e, 0x0127, 0x0002, 0x0118, 0x011b, 0x0001, 0x006d, 0x0f77, + 0x0001, 0x006d, 0x0f82, 0x0002, 0x0121, 0x0124, 0x0001, 0x006d, + 0x0f77, 0x0001, 0x006d, 0x0f82, 0x0002, 0x012a, 0x012d, 0x0001, + 0x006d, 0x0f77, 0x0001, 0x006d, 0x0f82, 0x0003, 0x0134, 0x013d, + // Entry 4C0C0 - 4C0FF + 0x0146, 0x0002, 0x0137, 0x013a, 0x0001, 0x006d, 0x0f77, 0x0001, + 0x006d, 0x0f82, 0x0002, 0x0140, 0x0143, 0x0001, 0x006d, 0x0f77, + 0x0001, 0x006d, 0x0f82, 0x0002, 0x0149, 0x014c, 0x0001, 0x006d, + 0x0f77, 0x0001, 0x006d, 0x0f82, 0x0003, 0x015e, 0x0000, 0x0153, + 0x0002, 0x0156, 0x015a, 0x0002, 0x006d, 0x0f8c, 0x0f98, 0x0002, + 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0161, 0x0165, 0x0002, 0x0000, + 0x04f5, 0x4290, 0x0002, 0x0000, 0xffff, 0x04f9, 0x0004, 0x0177, + 0x0171, 0x016e, 0x0174, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, + // Entry 4C100 - 4C13F + 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, + 0x0188, 0x0182, 0x017f, 0x0185, 0x0001, 0x0000, 0x0524, 0x0001, + 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, + 0x0004, 0x0199, 0x0193, 0x0190, 0x0196, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0040, 0x01dd, 0x0000, 0x0000, 0x01e2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x01e7, 0x0000, 0x0000, 0x01ec, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01f1, 0x0000, 0x0000, 0x0000, + // Entry 4C140 - 4C17F + 0x0000, 0x0000, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0203, 0x0000, + 0x0208, 0x020d, 0x0212, 0x0217, 0x0000, 0x0000, 0x021c, 0x0000, + 0x0000, 0x0221, 0x0001, 0x01df, 0x0001, 0x006d, 0x0fa5, 0x0001, + 0x01e4, 0x0001, 0x006d, 0x0fac, 0x0001, 0x01e9, 0x0001, 0x006d, + 0x0fb4, 0x0001, 0x01ee, 0x0001, 0x006d, 0x0fb9, 0x0002, 0x01f4, + // Entry 4C180 - 4C1BF + 0x01f7, 0x0001, 0x006d, 0x0fc2, 0x0005, 0x006d, 0x0fd5, 0x0fdb, + 0x0fe1, 0x0fcc, 0x0fe9, 0x0001, 0x0200, 0x0001, 0x006d, 0x0ff4, + 0x0001, 0x0205, 0x0001, 0x006d, 0x100a, 0x0001, 0x020a, 0x0001, + 0x006d, 0x101f, 0x0001, 0x020f, 0x0001, 0x006d, 0x101f, 0x0001, + 0x0214, 0x0001, 0x006d, 0x101f, 0x0001, 0x0219, 0x0001, 0x006d, + 0x1029, 0x0001, 0x021e, 0x0001, 0x006d, 0x1035, 0x0001, 0x0223, + 0x0001, 0x006d, 0x1049, 0x0002, 0x0003, 0x00f7, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0004, + // Entry 4C1C0 - 4C1FF + 0x0011, 0x0058, 0x009d, 0x00b6, 0x0002, 0x0014, 0x0036, 0x0003, + 0x0018, 0x0000, 0x0027, 0x000d, 0x006d, 0xffff, 0x1060, 0x0d5f, + 0x106c, 0x0d75, 0x1077, 0x0d86, 0x1080, 0x0d98, 0x0d9f, 0x1088, + 0x0db1, 0x1093, 0x000d, 0x006d, 0xffff, 0x109d, 0x10af, 0x10be, + 0x10cf, 0x10dc, 0x10eb, 0x10f9, 0x1107, 0x1114, 0x1120, 0x1131, + 0x113e, 0x0003, 0x003a, 0x0000, 0x0049, 0x000d, 0x006d, 0xffff, + 0x1060, 0x0d5f, 0x106c, 0x0d75, 0x1077, 0x0d86, 0x1080, 0x0d98, + 0x0d9f, 0x1088, 0x0db1, 0x1093, 0x000d, 0x006d, 0xffff, 0x109d, + // Entry 4C200 - 4C23F + 0x10af, 0x10be, 0x10cf, 0x10dc, 0x10eb, 0x10f9, 0x1107, 0x1114, + 0x1120, 0x1131, 0x113e, 0x0002, 0x005b, 0x007c, 0x0005, 0x0061, + 0x0000, 0x0073, 0x0000, 0x006a, 0x0007, 0x006d, 0x0e8c, 0x0e94, + 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, 0x006d, 0x0e8c, + 0x0e94, 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, 0x006d, + 0x1182, 0x1192, 0x119f, 0x1159, 0x1164, 0x11b2, 0x11c0, 0x0005, + 0x0082, 0x0000, 0x0094, 0x0000, 0x008b, 0x0007, 0x006d, 0x0e8c, + 0x0e94, 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, 0x006d, + // Entry 4C240 - 4C27F + 0x0e8c, 0x0e94, 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, + 0x006d, 0x1182, 0x1192, 0x119f, 0x1159, 0x1164, 0x11b2, 0x11c0, + 0x0002, 0x00a0, 0x00ab, 0x0003, 0x0000, 0x0000, 0x00a4, 0x0005, + 0x006d, 0xffff, 0x11d5, 0x11e6, 0x11f5, 0x1202, 0x0003, 0x0000, + 0x0000, 0x00af, 0x0005, 0x006d, 0xffff, 0x11d5, 0x11e6, 0x11f5, + 0x1202, 0x0002, 0x00b9, 0x00d8, 0x0003, 0x00bd, 0x00c6, 0x00cf, + 0x0002, 0x00c0, 0x00c3, 0x0001, 0x006d, 0x1212, 0x0001, 0x006d, + 0x121c, 0x0002, 0x00c9, 0x00cc, 0x0001, 0x006d, 0x1212, 0x0001, + // Entry 4C280 - 4C2BF + 0x006d, 0x121c, 0x0002, 0x00d2, 0x00d5, 0x0001, 0x006d, 0x1212, + 0x0001, 0x006d, 0x121c, 0x0003, 0x00dc, 0x00e5, 0x00ee, 0x0002, + 0x00df, 0x00e2, 0x0001, 0x006d, 0x1212, 0x0001, 0x006d, 0x121c, + 0x0002, 0x00e8, 0x00eb, 0x0001, 0x006d, 0x1212, 0x0001, 0x006d, + 0x121c, 0x0002, 0x00f1, 0x00f4, 0x0001, 0x006d, 0x1212, 0x0001, + 0x006d, 0x121c, 0x003d, 0x0000, 0x0000, 0x0000, 0x0135, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013f, 0x0000, 0x0000, + // Entry 4C2C0 - 4C2FF + 0x0000, 0x0000, 0x0000, 0x014c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0151, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0156, 0x0000, 0x0000, 0x015b, + 0x0001, 0x0137, 0x0001, 0x006d, 0x1225, 0x0001, 0x013c, 0x0001, + 0x006d, 0x122c, 0x0002, 0x0142, 0x0145, 0x0001, 0x006d, 0x1234, + 0x0005, 0x006d, 0x0fd5, 0x0fdb, 0x1244, 0x123c, 0x0fe9, 0x0001, + // Entry 4C300 - 4C33F + 0x014e, 0x0001, 0x006d, 0x124b, 0x0001, 0x0153, 0x0001, 0x006d, + 0x125d, 0x0001, 0x0158, 0x0001, 0x006d, 0x1270, 0x0001, 0x015d, + 0x0001, 0x006d, 0x127b, 0x0003, 0x0004, 0x08cc, 0x0c58, 0x0012, + 0x0017, 0x0038, 0x015b, 0x01c8, 0x02b9, 0x0000, 0x0326, 0x0351, + 0x0592, 0x061c, 0x068e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0714, + 0x0831, 0x08aa, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, + 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, + 0x006d, 0x128e, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, + // Entry 4C340 - 4C37F + 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, + 0x0001, 0x0035, 0x0503, 0x000a, 0x0043, 0x0000, 0x0000, 0x0000, + 0x0000, 0x014a, 0x0000, 0x0000, 0x00a8, 0x00bb, 0x0002, 0x0046, + 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, 0x0035, 0xffff, + 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, + 0x006e, 0x0075, 0x3af7, 0x3afe, 0x000d, 0x0035, 0xffff, 0x0090, + 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, + 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, + // Entry 4C380 - 4C3BF + 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, + 0x3af7, 0x3afe, 0x0003, 0x007b, 0x008a, 0x0099, 0x000d, 0x0035, + 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, + 0x0067, 0x006e, 0x0075, 0x3af7, 0x3afe, 0x000d, 0x0035, 0xffff, + 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, + 0x00b0, 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, 0xffff, 0x0036, + 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, + 0x0075, 0x3af7, 0x3afe, 0x0003, 0x00ac, 0x00b7, 0x00b1, 0x0003, + // Entry 4C3C0 - 4C3FF + 0x0035, 0xffff, 0xffff, 0x00c6, 0x0004, 0x0035, 0xffff, 0xffff, + 0xffff, 0x00c6, 0x0002, 0x0035, 0xffff, 0x00c6, 0x0006, 0x00c2, + 0x0000, 0x0000, 0x00d5, 0x00f4, 0x0137, 0x0001, 0x00c4, 0x0001, + 0x00c6, 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, + 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, + 0x0001, 0x00d7, 0x0001, 0x00d9, 0x0019, 0x0035, 0xffff, 0x00fd, + 0x0104, 0x3b0d, 0x0112, 0x0119, 0x0120, 0x0127, 0x3b14, 0x0135, + 0x013c, 0x0143, 0x014a, 0x0151, 0x3b1b, 0x015f, 0x0166, 0x016d, + // Entry 4C400 - 4C43F + 0x0174, 0x017b, 0x0182, 0x0189, 0x0190, 0x0197, 0x019e, 0x0001, + 0x00f6, 0x0001, 0x00f8, 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, + 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, + 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, + 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, + 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, + 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, + 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, + // Entry 4C440 - 4C47F + 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, + 0x033b, 0x0342, 0x0001, 0x0139, 0x0001, 0x013b, 0x000d, 0x0035, + 0xffff, 0x0349, 0x034d, 0x0351, 0x3b22, 0x3b26, 0x035d, 0x0361, + 0x0365, 0x3b2a, 0x3b2e, 0x3b32, 0x3b36, 0x0004, 0x0158, 0x0152, + 0x014f, 0x0155, 0x0001, 0x006d, 0x1295, 0x0001, 0x006d, 0x12a7, + 0x0001, 0x006d, 0x12b5, 0x0001, 0x006d, 0x12be, 0x0001, 0x015d, + 0x0002, 0x0160, 0x0194, 0x0003, 0x0164, 0x0174, 0x0184, 0x000e, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + // Entry 4C480 - 4C4BF + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x0003, + 0x0198, 0x01a8, 0x01b8, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 4C4C0 - 4C4FF + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x3b3a, 0x000a, 0x01d3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x02a8, 0x0000, 0x0000, 0x0000, 0x0238, 0x0002, 0x01d6, + 0x0207, 0x0003, 0x01da, 0x01e9, 0x01f8, 0x000d, 0x0035, 0xffff, + 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, + 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, 0x0035, 0xffff, 0x0090, + // Entry 4C500 - 4C53F + 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, + 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, + 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, + 0x007c, 0x0086, 0x0003, 0x020b, 0x021a, 0x0229, 0x000d, 0x0035, + 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, + 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, 0x0035, 0xffff, + 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, + 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, 0xffff, 0x0036, + // Entry 4C540 - 4C57F + 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, + 0x0075, 0x007c, 0x0086, 0x0006, 0x023f, 0x0000, 0x0000, 0x0000, + 0x0252, 0x0295, 0x0001, 0x0241, 0x0001, 0x0243, 0x000d, 0x0035, + 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, + 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, 0x0001, 0x0254, 0x0001, + 0x0256, 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, 0x01b3, 0x01ba, + 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, 0x01eb, 0x01f2, + 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, 0x0223, 0x022a, + // Entry 4C580 - 4C5BF + 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, 0x025b, 0x0262, + 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, 0x0293, 0x029a, + 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d2, + 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0303, 0x030a, + 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, 0x033b, 0x0342, + 0x0001, 0x0297, 0x0001, 0x0299, 0x000d, 0x0035, 0xffff, 0x0349, + 0x034d, 0x0351, 0x3b22, 0x3b26, 0x035d, 0x0361, 0x0365, 0x3b2a, + 0x3b2e, 0x3b32, 0x3b36, 0x0004, 0x02b6, 0x02b0, 0x02ad, 0x02b3, + // Entry 4C5C0 - 4C5FF + 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, + 0x0389, 0x0001, 0x006d, 0x12c4, 0x0001, 0x02bb, 0x0002, 0x02be, + 0x02f2, 0x0003, 0x02c2, 0x02d2, 0x02e2, 0x000e, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, + 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + // Entry 4C600 - 4C63F + 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x0003, 0x02f6, 0x0306, + 0x0316, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x3b3a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x032f, + // Entry 4C640 - 4C67F + 0x0000, 0x0340, 0x0004, 0x033d, 0x0337, 0x0334, 0x033a, 0x0001, + 0x006d, 0x12ca, 0x0001, 0x006d, 0x12de, 0x0001, 0x006d, 0x12de, + 0x0001, 0x006d, 0x12ed, 0x0004, 0x034e, 0x0348, 0x0345, 0x034b, + 0x0001, 0x006d, 0x12f5, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x035a, 0x03bf, 0x0416, + 0x044b, 0x053a, 0x055f, 0x0570, 0x0581, 0x0002, 0x035d, 0x038e, + 0x0003, 0x0361, 0x0370, 0x037f, 0x000d, 0x0035, 0xffff, 0x050a, + 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, + // Entry 4C680 - 4C6BF + 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, + 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, + 0x0543, 0x0003, 0x0392, 0x03a1, 0x03b0, 0x000d, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + // Entry 4C6C0 - 4C6FF + 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x0002, 0x03c2, 0x03ec, 0x0005, 0x03c8, 0x03d1, + 0x03e3, 0x0000, 0x03da, 0x0007, 0x006d, 0x12fc, 0x1303, 0x130a, + 0x1311, 0x1318, 0x131f, 0x1326, 0x0007, 0x0035, 0x0549, 0x3b40, + 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, 0x0035, 0x0549, + 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, 0x006d, + 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, 0x135f, 0x1369, 0x0005, + // Entry 4C700 - 4C73F + 0x03f2, 0x03fb, 0x040d, 0x0000, 0x0404, 0x0007, 0x006d, 0x12fc, + 0x1303, 0x130a, 0x1311, 0x1318, 0x131f, 0x1326, 0x0007, 0x0035, + 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, + 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, 0x135f, + 0x1369, 0x0002, 0x0419, 0x0432, 0x0003, 0x041d, 0x0424, 0x042b, + 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0005, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x006d, + // Entry 4C740 - 4C77F + 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0003, 0x0436, 0x043d, + 0x0444, 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0002, 0x044e, + 0x04c4, 0x0003, 0x0452, 0x0478, 0x049e, 0x000a, 0x0460, 0x0463, + 0x045d, 0x0466, 0x046c, 0x0472, 0x0475, 0x0000, 0x0469, 0x046f, + 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, + 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x13af, 0x0001, + // Entry 4C780 - 4C7BF + 0x006d, 0x13b6, 0x0001, 0x006d, 0x13bd, 0x0001, 0x006d, 0x13c4, + 0x0001, 0x006d, 0x13cb, 0x000a, 0x0486, 0x0489, 0x0483, 0x048c, + 0x0492, 0x0498, 0x049b, 0x0000, 0x048f, 0x0495, 0x0001, 0x006d, + 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, + 0x006d, 0x13a8, 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, + 0x0001, 0x006d, 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, + 0x13cb, 0x000a, 0x04ac, 0x04af, 0x04a9, 0x04b2, 0x04b8, 0x04be, + 0x04c1, 0x0000, 0x04b5, 0x04bb, 0x0001, 0x006d, 0x1393, 0x0001, + // Entry 4C7C0 - 4C7FF + 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, + 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, + 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, 0x13cb, 0x0003, + 0x04c8, 0x04ee, 0x0514, 0x000a, 0x04d6, 0x04d9, 0x04d3, 0x04dc, + 0x04e2, 0x04e8, 0x04eb, 0x0000, 0x04df, 0x04e5, 0x0001, 0x006d, + 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, + 0x006d, 0x13a8, 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, + 0x0001, 0x006d, 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, + // Entry 4C800 - 4C83F + 0x13cb, 0x000a, 0x04fc, 0x04ff, 0x04f9, 0x0502, 0x0508, 0x050e, + 0x0511, 0x0000, 0x0505, 0x050b, 0x0001, 0x006d, 0x1393, 0x0001, + 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, + 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, + 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, 0x13cb, 0x000a, + 0x0522, 0x0525, 0x051f, 0x0528, 0x052e, 0x0534, 0x0537, 0x0000, + 0x052b, 0x0531, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, + 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, + // Entry 4C840 - 4C87F + 0x13af, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13bd, 0x0001, + 0x006d, 0x13c4, 0x0001, 0x006d, 0x13cb, 0x0003, 0x0549, 0x0554, + 0x053e, 0x0002, 0x0541, 0x0545, 0x0002, 0x006d, 0x13d2, 0x13e6, + 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0002, 0x054c, 0x0550, 0x0002, + 0x006d, 0x13d2, 0x13e6, 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0002, + 0x0557, 0x055b, 0x0002, 0x006d, 0x13d2, 0x13e6, 0x0002, 0x006d, + 0x13dc, 0x13ed, 0x0004, 0x056d, 0x0567, 0x0564, 0x056a, 0x0001, + 0x006d, 0x13f4, 0x0001, 0x0035, 0x065b, 0x0001, 0x0035, 0x065b, + // Entry 4C880 - 4C8BF + 0x0001, 0x0021, 0x05f2, 0x0004, 0x057e, 0x0578, 0x0575, 0x057b, + 0x0001, 0x006d, 0x1406, 0x0001, 0x006d, 0x1416, 0x0001, 0x006d, + 0x1423, 0x0001, 0x006d, 0x142c, 0x0004, 0x058f, 0x0589, 0x0586, + 0x058c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x0599, 0x0000, + 0x0000, 0x0000, 0x0604, 0x060b, 0x0002, 0x059c, 0x05d0, 0x0003, + 0x05a0, 0x05b0, 0x05c0, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, + 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, + // Entry 4C8C0 - 4C8FF + 0x14b1, 0x14be, 0x14c8, 0x000e, 0x0000, 0x41bc, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, + 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, + 0x14b1, 0x14be, 0x14c8, 0x0003, 0x05d4, 0x05e4, 0x05f4, 0x000e, + 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, + 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x000e, + 0x0000, 0x41bc, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + // Entry 4C900 - 4C93F + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, + 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, + 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x0001, + 0x0606, 0x0001, 0x0608, 0x0001, 0x006d, 0x14d2, 0x0004, 0x0619, + 0x0613, 0x0610, 0x0616, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, + 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0005, + 0x0622, 0x0000, 0x0000, 0x0000, 0x0687, 0x0002, 0x0625, 0x0656, + 0x0003, 0x0629, 0x0638, 0x0647, 0x000d, 0x006d, 0xffff, 0x14df, + // Entry 4C940 - 4C97F + 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, + 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x14df, 0x14ec, 0x14f9, + 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, 0x1566, 0x1570, + 0x157a, 0x0003, 0x065a, 0x0669, 0x0678, 0x000d, 0x006d, 0xffff, + 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, + 0x1556, 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, 0xffff, 0x0033, + // Entry 4C980 - 4C9BF + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x14df, 0x14ec, + 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, 0x1566, + 0x1570, 0x157a, 0x0001, 0x0689, 0x0001, 0x068b, 0x0001, 0x006d, + 0x158a, 0x0008, 0x0697, 0x0000, 0x0000, 0x0000, 0x06fc, 0x0703, + 0x0000, 0x9006, 0x0002, 0x069a, 0x06cb, 0x0003, 0x069e, 0x06ad, + 0x06bc, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, + 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, + // Entry 4C9C0 - 4C9FF + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, + 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, 0x15ca, 0x15d9, + 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, 0x0003, 0x06cf, + 0x06de, 0x06ed, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, + 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, + 0x1630, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + // Entry 4CA00 - 4CA3F + 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, 0x15ca, + 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, 0x0001, + 0x06fe, 0x0001, 0x0700, 0x0001, 0x006d, 0x1640, 0x0004, 0x0711, + 0x070b, 0x0708, 0x070e, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, + 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x071d, 0x080f, 0x0000, 0x0820, + 0x0001, 0x071f, 0x0001, 0x0721, 0x00ec, 0x0035, 0x08e5, 0x08ec, + 0x3b44, 0x08fa, 0x3b4b, 0x0908, 0x090f, 0x3b52, 0x091d, 0x3b59, + // Entry 4CA40 - 4CA7F + 0x092b, 0x3b60, 0x3b6d, 0x3b7a, 0x0959, 0x0966, 0x3b87, 0x3b8e, + 0x3b95, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, 0x3b9c, 0x3ba3, + 0x09b9, 0x3baa, 0x09c7, 0x09ce, 0x3bb1, 0x09dc, 0x09e3, 0x09ea, + 0x09f1, 0x09f8, 0x3bb8, 0x3bbf, 0x3bc6, 0x0a14, 0x0a1b, 0x3bcd, + 0x0a29, 0x0a30, 0x0a37, 0x3bd4, 0x3bdb, 0x0a4c, 0x0a53, 0x3be2, + 0x3be9, 0x0a68, 0x3bf0, 0x0a76, 0x3bf7, 0x0a84, 0x3bfe, 0x0a92, + 0x3c05, 0x0aa0, 0x3c0c, 0x0aae, 0x0ab5, 0x0abc, 0x3c13, 0x0aca, + 0x0ad1, 0x3c1a, 0x0adf, 0x3c21, 0x3c28, 0x0af4, 0x0afb, 0x3c2f, + // Entry 4CA80 - 4CABF + 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, 0x0b33, 0x0b3a, + 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, 0x0b6b, 0x0b72, + 0x0b79, 0x0b80, 0x3c36, 0x0b8e, 0x0b95, 0x3c3d, 0x3c44, 0x3c4b, + 0x3c52, 0x0bb8, 0x3c59, 0x0bc6, 0x0bcd, 0x0bd4, 0x0bdb, 0x3c60, + 0x3c67, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, 0x0c13, 0x0c1a, + 0x3c6e, 0x0c28, 0x0c2f, 0x3c75, 0x0c3d, 0x3c7c, 0x0c4b, 0x3c83, + 0x0c59, 0x0c60, 0x3c8a, 0x0c6e, 0x3c91, 0x3c98, 0x0c83, 0x3c9f, + 0x3ca6, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x3cad, 0x0cbb, 0x0cc2, + // Entry 4CAC0 - 4CAFF + 0x0cc9, 0x0cd0, 0x3cb4, 0x0cde, 0x0ce5, 0x0cec, 0x0cf3, 0x3cbb, + 0x0d01, 0x3cc2, 0x0d0f, 0x0d16, 0x3cc9, 0x0d24, 0x0d2b, 0x3cd0, + 0x3cd7, 0x0d40, 0x0d47, 0x0d4e, 0x3cde, 0x0d5c, 0x3ce5, 0x0d6a, + 0x0d71, 0x3cec, 0x0d7f, 0x0d86, 0x3cf3, 0x0d94, 0x3cfa, 0x3d01, + 0x3d08, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x3d0f, 0x3d16, 0x0dda, + 0x3d1d, 0x3d24, 0x0def, 0x3d2b, 0x0dfd, 0x0e04, 0x3d32, 0x3d39, + 0x3d40, 0x0e20, 0x0e27, 0x3d47, 0x0e35, 0x0e3c, 0x3d4e, 0x3d55, + 0x0e51, 0x3d5c, 0x0e5f, 0x0e66, 0x3d63, 0x0e74, 0x0e7b, 0x3d6a, + // Entry 4CB00 - 4CB3F + 0x3d71, 0x3d78, 0x3d7f, 0x3d86, 0x0ea5, 0x0eac, 0x3d8d, 0x3d94, + 0x3d9b, 0x0ec8, 0x0ecf, 0x3da2, 0x0edd, 0x3da9, 0x3db0, 0x0ef2, + 0x0ef9, 0x0f00, 0x3db7, 0x0f0e, 0x0f15, 0x0f1c, 0x0f23, 0x0f2a, + 0x0f31, 0x0f38, 0x3dbe, 0x0f46, 0x0f4d, 0x3dc5, 0x0f5b, 0x0f62, + 0x0f69, 0x0f70, 0x0004, 0x081d, 0x0817, 0x0814, 0x081a, 0x0001, + 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, + 0x0001, 0x0035, 0x0503, 0x0004, 0x082e, 0x0828, 0x0825, 0x082b, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 4CB40 - 4CB7F + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0837, 0x0000, 0x0000, + 0x0000, 0x089c, 0x0002, 0x083a, 0x086b, 0x0003, 0x083e, 0x084d, + 0x085c, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x0003, 0x086f, + // Entry 4CB80 - 4CBBF + 0x087e, 0x088d, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, + 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, + 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, + 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x0003, + 0x08a5, 0x0000, 0x08a0, 0x0001, 0x08a2, 0x0001, 0x006d, 0x164d, + 0x0001, 0x08a7, 0x0001, 0x006d, 0x164d, 0x0008, 0x0000, 0x0000, + // Entry 4CBC0 - 4CBFF + 0x0000, 0x0000, 0x08b3, 0x08bb, 0x0000, 0x9006, 0x0001, 0x08b5, + 0x0001, 0x08b7, 0x0002, 0x006d, 0x1657, 0x1661, 0x0004, 0x08c9, + 0x08c3, 0x08c0, 0x08c6, 0x0001, 0x006d, 0x1668, 0x0001, 0x0035, + 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0040, + 0x090d, 0x0000, 0x0000, 0x0912, 0x0927, 0x0937, 0x0947, 0x095c, + 0x0971, 0x0986, 0x099b, 0x09ab, 0x09bb, 0x09d4, 0x09e8, 0x0000, + 0x0000, 0x0000, 0x09fc, 0x0a13, 0x0a23, 0x0000, 0x0000, 0x0000, + 0x0a33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a38, 0x0a4a, + // Entry 4CC00 - 4CC3F + 0x0a5c, 0x0a6e, 0x0a80, 0x0a92, 0x0aa4, 0x0ab6, 0x0ac8, 0x0ada, + 0x0aec, 0x0afe, 0x0b10, 0x0b22, 0x0b34, 0x0b46, 0x0b58, 0x0b6a, + 0x0b7c, 0x0b8e, 0x0ba0, 0x0000, 0x0bb2, 0x0000, 0x0bb7, 0x0bcb, + 0x0bdb, 0x0beb, 0x0bff, 0x0c0f, 0x0c1f, 0x0c33, 0x0c43, 0x0c53, + 0x0001, 0x090f, 0x0001, 0x006d, 0x167b, 0x0003, 0x0916, 0x0919, + 0x091e, 0x0001, 0x0035, 0x1074, 0x0003, 0x006d, 0x1682, 0x1689, + 0x1690, 0x0002, 0x0921, 0x0924, 0x0001, 0x0035, 0x108d, 0x0001, + 0x0035, 0x1098, 0x0003, 0x092b, 0x0000, 0x092e, 0x0001, 0x0035, + // Entry 4CC40 - 4CC7F + 0x1074, 0x0002, 0x0931, 0x0934, 0x0001, 0x0035, 0x108d, 0x0001, + 0x0035, 0x1098, 0x0003, 0x093b, 0x0000, 0x093e, 0x0001, 0x0035, + 0x1074, 0x0002, 0x0941, 0x0944, 0x0001, 0x0035, 0x108d, 0x0001, + 0x0035, 0x1098, 0x0003, 0x094b, 0x094e, 0x0953, 0x0001, 0x006d, + 0x1697, 0x0003, 0x006d, 0x169b, 0x16a5, 0x16ac, 0x0002, 0x0956, + 0x0959, 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, 0x16c1, 0x0003, + 0x0960, 0x0963, 0x0968, 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, + 0x16cc, 0x16a5, 0x16d3, 0x0002, 0x096b, 0x096e, 0x0001, 0x006d, + // Entry 4CC80 - 4CCBF + 0x16b6, 0x0001, 0x006d, 0x16c1, 0x0003, 0x0975, 0x0978, 0x097d, + 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, 0x16cc, 0x16a5, 0x16d3, + 0x0002, 0x0980, 0x0983, 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, + 0x16c1, 0x0003, 0x098a, 0x098d, 0x0992, 0x0001, 0x0035, 0x054d, + 0x0003, 0x006d, 0x16da, 0x16e4, 0x16ee, 0x0002, 0x0995, 0x0998, + 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, 0x0003, 0x099f, + 0x0000, 0x09a2, 0x0001, 0x0035, 0x054d, 0x0002, 0x09a5, 0x09a8, + 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, 0x0003, 0x09af, + // Entry 4CCC0 - 4CCFF + 0x0000, 0x09b2, 0x0001, 0x0035, 0x054d, 0x0002, 0x09b5, 0x09b8, + 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, 0x0004, 0x09c0, + 0x09c3, 0x09c8, 0x09d1, 0x0001, 0x0035, 0x1175, 0x0003, 0x006d, + 0x1714, 0x171e, 0x172b, 0x0002, 0x09cb, 0x09ce, 0x0001, 0x006d, + 0x1735, 0x0001, 0x006d, 0x1746, 0x0001, 0x006d, 0x1757, 0x0004, + 0x09d9, 0x0000, 0x09dc, 0x09e5, 0x0001, 0x0035, 0x1175, 0x0002, + 0x09df, 0x09e2, 0x0001, 0x006d, 0x1735, 0x0001, 0x006d, 0x1746, + 0x0001, 0x006d, 0x1757, 0x0004, 0x09ed, 0x0000, 0x09f0, 0x09f9, + // Entry 4CD00 - 4CD3F + 0x0001, 0x0035, 0x1175, 0x0002, 0x09f3, 0x09f6, 0x0001, 0x006d, + 0x1735, 0x0001, 0x006d, 0x1746, 0x0001, 0x006d, 0x1757, 0x0003, + 0x0a00, 0x0a03, 0x0a0a, 0x0001, 0x0035, 0x0549, 0x0005, 0x006d, + 0x176b, 0x1772, 0x1779, 0x1764, 0x1780, 0x0002, 0x0a0d, 0x0a10, + 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0a17, + 0x0000, 0x0a1a, 0x0001, 0x0035, 0x0549, 0x0002, 0x0a1d, 0x0a20, + 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0a27, + 0x0000, 0x0a2a, 0x0001, 0x0035, 0x0549, 0x0002, 0x0a2d, 0x0a30, + // Entry 4CD40 - 4CD7F + 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0001, 0x0a35, + 0x0001, 0x006d, 0x1787, 0x0003, 0x0000, 0x0a3c, 0x0a41, 0x0003, + 0x006d, 0x178e, 0x179b, 0x17ab, 0x0002, 0x0a44, 0x0a47, 0x0001, + 0x006d, 0x17b8, 0x0001, 0x006d, 0x17cc, 0x0003, 0x0000, 0x0a4e, + 0x0a53, 0x0003, 0x006d, 0x178e, 0x179b, 0x17ab, 0x0002, 0x0a56, + 0x0a59, 0x0001, 0x006d, 0x17b8, 0x0001, 0x006d, 0x17cc, 0x0003, + 0x0000, 0x0a60, 0x0a65, 0x0003, 0x006d, 0x178e, 0x179b, 0x17ab, + 0x0002, 0x0a68, 0x0a6b, 0x0001, 0x006d, 0x17b8, 0x0001, 0x006d, + // Entry 4CD80 - 4CDBF + 0x17cc, 0x0003, 0x0000, 0x0a72, 0x0a77, 0x0003, 0x006d, 0x17e0, + 0x17ed, 0x17fd, 0x0002, 0x0a7a, 0x0a7d, 0x0001, 0x006d, 0x180a, + 0x0001, 0x006d, 0x181e, 0x0003, 0x0000, 0x0a84, 0x0a89, 0x0003, + 0x006d, 0x17e0, 0x17ed, 0x17fd, 0x0002, 0x0a8c, 0x0a8f, 0x0001, + 0x006d, 0x180a, 0x0001, 0x006d, 0x181e, 0x0003, 0x0000, 0x0a96, + 0x0a9b, 0x0003, 0x006d, 0x17e0, 0x17ed, 0x17fd, 0x0002, 0x0a9e, + 0x0aa1, 0x0001, 0x006d, 0x180a, 0x0001, 0x006d, 0x181e, 0x0003, + 0x0000, 0x0aa8, 0x0aad, 0x0003, 0x006d, 0x1832, 0x183f, 0x184f, + // Entry 4CDC0 - 4CDFF + 0x0002, 0x0ab0, 0x0ab3, 0x0001, 0x006d, 0x185c, 0x0001, 0x006d, + 0x1870, 0x0003, 0x0000, 0x0aba, 0x0abf, 0x0003, 0x006d, 0x1832, + 0x183f, 0x184f, 0x0002, 0x0ac2, 0x0ac5, 0x0001, 0x006d, 0x185c, + 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x0acc, 0x0ad1, 0x0003, + 0x006d, 0x1832, 0x183f, 0x184f, 0x0002, 0x0ad4, 0x0ad7, 0x0001, + 0x006d, 0x185c, 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x0ade, + 0x0ae3, 0x0003, 0x006d, 0x1884, 0x1891, 0x18a1, 0x0002, 0x0ae6, + 0x0ae9, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, 0x18c2, 0x0003, + // Entry 4CE00 - 4CE3F + 0x0000, 0x0af0, 0x0af5, 0x0003, 0x006d, 0x1884, 0x1891, 0x18a1, + 0x0002, 0x0af8, 0x0afb, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, + 0x18c2, 0x0003, 0x0000, 0x0b02, 0x0b07, 0x0003, 0x006d, 0x1884, + 0x1891, 0x18a1, 0x0002, 0x0b0a, 0x0b0d, 0x0001, 0x006d, 0x18ae, + 0x0001, 0x006d, 0x18c2, 0x0003, 0x0000, 0x0b14, 0x0b19, 0x0003, + 0x006d, 0x18d6, 0x18e3, 0x18f3, 0x0002, 0x0b1c, 0x0b1f, 0x0001, + 0x006d, 0x1900, 0x0001, 0x006d, 0x1914, 0x0003, 0x0000, 0x0b26, + 0x0b2b, 0x0003, 0x006d, 0x18d6, 0x18e3, 0x18f3, 0x0002, 0x0b2e, + // Entry 4CE40 - 4CE7F + 0x0b31, 0x0001, 0x006d, 0x1900, 0x0001, 0x006d, 0x1914, 0x0003, + 0x0000, 0x0b38, 0x0b3d, 0x0003, 0x006d, 0x18d6, 0x18e3, 0x18f3, + 0x0002, 0x0b40, 0x0b43, 0x0001, 0x006d, 0x1900, 0x0001, 0x006d, + 0x1914, 0x0003, 0x0000, 0x0b4a, 0x0b4f, 0x0003, 0x006d, 0x1928, + 0x1935, 0x1945, 0x0002, 0x0b52, 0x0b55, 0x0001, 0x006d, 0x1952, + 0x0001, 0x006d, 0x1966, 0x0003, 0x0000, 0x0b5c, 0x0b61, 0x0003, + 0x006d, 0x1928, 0x1935, 0x1945, 0x0002, 0x0b64, 0x0b67, 0x0001, + 0x006d, 0x1952, 0x0001, 0x006d, 0x1966, 0x0003, 0x0000, 0x0b6e, + // Entry 4CE80 - 4CEBF + 0x0b73, 0x0003, 0x006d, 0x1928, 0x1935, 0x1945, 0x0002, 0x0b76, + 0x0b79, 0x0001, 0x006d, 0x1952, 0x0001, 0x006d, 0x1966, 0x0003, + 0x0000, 0x0b80, 0x0b85, 0x0003, 0x006d, 0x197a, 0x1987, 0x1997, + 0x0002, 0x0b88, 0x0b8b, 0x0001, 0x006d, 0x19a4, 0x0001, 0x006d, + 0x19b8, 0x0003, 0x0000, 0x0b92, 0x0b97, 0x0003, 0x006d, 0x197a, + 0x1987, 0x1997, 0x0002, 0x0b9a, 0x0b9d, 0x0001, 0x006d, 0x19a4, + 0x0001, 0x006d, 0x19b8, 0x0003, 0x0000, 0x0ba4, 0x0ba9, 0x0003, + 0x006d, 0x197a, 0x1987, 0x1997, 0x0002, 0x0bac, 0x0baf, 0x0001, + // Entry 4CEC0 - 4CEFF + 0x006d, 0x19a4, 0x0001, 0x006d, 0x19b8, 0x0001, 0x0bb4, 0x0001, + 0x006d, 0x19cc, 0x0003, 0x0bbb, 0x0bbe, 0x0bc2, 0x0001, 0x006d, + 0x19da, 0x0002, 0x006d, 0xffff, 0x19e1, 0x0002, 0x0bc5, 0x0bc8, + 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, 0x0003, 0x0bcf, + 0x0000, 0x0bd2, 0x0001, 0x006d, 0x19da, 0x0002, 0x0bd5, 0x0bd8, + 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, 0x0003, 0x0bdf, + 0x0000, 0x0be2, 0x0001, 0x006d, 0x19da, 0x0002, 0x0be5, 0x0be8, + 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, 0x0003, 0x0bef, + // Entry 4CF00 - 4CF3F + 0x0bf2, 0x0bf6, 0x0001, 0x006d, 0x1a0a, 0x0002, 0x006d, 0xffff, + 0x1a11, 0x0002, 0x0bf9, 0x0bfc, 0x0001, 0x006d, 0x1a1b, 0x0001, + 0x006d, 0x1a29, 0x0003, 0x0c03, 0x0000, 0x0c06, 0x0001, 0x006d, + 0x1a0a, 0x0002, 0x0c09, 0x0c0c, 0x0001, 0x006d, 0x1a1b, 0x0001, + 0x006d, 0x1a29, 0x0003, 0x0c13, 0x0000, 0x0c16, 0x0001, 0x006d, + 0x1a0a, 0x0002, 0x0c19, 0x0c1c, 0x0001, 0x006d, 0x1a1b, 0x0001, + 0x006d, 0x1a29, 0x0003, 0x0c23, 0x0c26, 0x0c2a, 0x0001, 0x0035, + 0x190d, 0x0002, 0x006d, 0xffff, 0x1a37, 0x0002, 0x0c2d, 0x0c30, + // Entry 4CF40 - 4CF7F + 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, 0x0003, 0x0c37, + 0x0000, 0x0c3a, 0x0001, 0x0035, 0x190d, 0x0002, 0x0c3d, 0x0c40, + 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, 0x0003, 0x0c47, + 0x0000, 0x0c4a, 0x0001, 0x0035, 0x190d, 0x0002, 0x0c4d, 0x0c50, + 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, 0x0001, 0x0c55, + 0x0001, 0x006d, 0x1a3e, 0x0004, 0x0c5d, 0x0c62, 0x0c67, 0x0c72, + 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0035, 0x1952, + 0x3dcc, 0x3dd5, 0x0002, 0x0000, 0x0c6a, 0x0002, 0x0000, 0x0c6d, + // Entry 4CF80 - 4CFBF + 0x0003, 0x006d, 0xffff, 0x1a45, 0x1a58, 0x0002, 0x0000, 0x0c75, + 0x0003, 0x0c79, 0x0db9, 0x0d19, 0x009e, 0x006d, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1ade, 0x1b11, 0x1b9b, 0x1bd7, 0x1c0a, 0x1c3d, + 0x1c70, 0x1cac, 0x1cf1, 0x1dae, 0x1dea, 0x1e26, 0x1e74, 0x1eb9, + 0x1ef5, 0x1f3a, 0x1f88, 0x1fcd, 0x2012, 0x2057, 0x20a5, 0xffff, + 0xffff, 0x2101, 0xffff, 0x2153, 0xffff, 0x21af, 0x21f4, 0x2227, + 0x225a, 0xffff, 0xffff, 0x22bc, 0x2301, 0x2349, 0xffff, 0xffff, + 0xffff, 0x23b2, 0xffff, 0x2407, 0x243a, 0xffff, 0x2480, 0x24b3, + // Entry 4CFC0 - 4CFFF + 0x2501, 0xffff, 0xffff, 0xffff, 0xffff, 0x2595, 0xffff, 0xffff, + 0x2603, 0x2651, 0xffff, 0xffff, 0x26de, 0x2738, 0x276b, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2816, 0x2849, 0x2897, + 0x28d3, 0x2906, 0xffff, 0xffff, 0x29a4, 0xffff, 0x29e7, 0xffff, + 0xffff, 0x2a83, 0xffff, 0x2b0b, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2b96, 0xffff, 0x2be8, 0x2c3f, 0x2c96, 0x2cdb, 0xffff, 0xffff, + 0xffff, 0x2d41, 0x2d9e, 0x2dda, 0xffff, 0xffff, 0x2e39, 0x2ed0, + 0x2f1e, 0x2f63, 0xffff, 0xffff, 0x2fd1, 0x300d, 0x3040, 0xffff, + // Entry 4D000 - 4D03F + 0x308f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31a1, 0x31dd, + 0x3219, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x32d7, 0xffff, 0xffff, 0x3330, 0xffff, 0x3373, 0xffff, 0x33bf, + 0x33fb, 0x3440, 0xffff, 0x348f, 0x34cb, 0xffff, 0xffff, 0xffff, + 0x355e, 0x35a3, 0xffff, 0xffff, 0x1a6e, 0x1b56, 0x1d2d, 0x1d69, + 0xffff, 0xffff, 0x2ac8, 0x312a, 0x009e, 0x006d, 0x1aa1, 0x1ab1, + 0x1abe, 0x1acb, 0x1aeb, 0x1b24, 0x1bab, 0x1be4, 0x1c17, 0x1c4a, + 0x1c80, 0x1cbf, 0x1d01, 0x1dbe, 0x1dfa, 0x1e3c, 0x1e87, 0x1ec9, + // Entry 4D040 - 4D07F + 0x1f08, 0x1f50, 0x1f9b, 0x1fe0, 0x2025, 0x206d, 0x20b5, 0x20e1, + 0x20ee, 0x2114, 0x2146, 0x2163, 0x219f, 0x21c2, 0x2201, 0x2234, + 0x226a, 0x2296, 0x22a6, 0x22cf, 0x2314, 0x2356, 0x237c, 0x238c, + 0x23a2, 0x23c5, 0x23f7, 0x2414, 0x2447, 0x246d, 0x248d, 0x24c9, + 0x250e, 0x2534, 0x254a, 0x2566, 0x257f, 0x25a5, 0x25d1, 0x25ea, + 0x2619, 0x2667, 0x26b2, 0x26ce, 0x26f8, 0x2745, 0x277b, 0x27a7, + 0x27ba, 0x27ca, 0x27dd, 0x27f0, 0x2803, 0x2823, 0x285f, 0x28a7, + 0x28e0, 0x2928, 0x297e, 0x2991, 0x29b1, 0x29d7, 0x2a06, 0x2a50, + // Entry 4D080 - 4D0BF + 0x2a70, 0x2a96, 0x2afb, 0x2b1b, 0x2b47, 0x2b5a, 0x2b6d, 0x2b80, + 0x2ba9, 0x2bdb, 0x2c01, 0x2c58, 0x2ca9, 0x2ceb, 0x2d17, 0x2d24, + 0x2d31, 0x2d5a, 0x2dae, 0x2dea, 0x2e16, 0x2e26, 0x2e5e, 0x2ee6, + 0x2f31, 0x2f76, 0x2fa8, 0x2fb5, 0x2fe1, 0x301a, 0x3050, 0x307c, + 0x30b4, 0x310a, 0x311a, 0xffff, 0x3181, 0x3191, 0x31b1, 0x31ed, + 0x3229, 0x3255, 0x3265, 0x327b, 0x3291, 0x32a4, 0x32b4, 0x32c7, + 0x32e4, 0x330a, 0x331a, 0x333d, 0x3363, 0x3383, 0x33af, 0x33cf, + 0x340e, 0x3450, 0x347c, 0x349f, 0x34e1, 0x3519, 0x352c, 0x353c, + // Entry 4D0C0 - 4D0FF + 0x3571, 0x35b9, 0x269f, 0x2eb4, 0x1a7b, 0x1b69, 0x1d3d, 0x1d7c, + 0x218f, 0x2a63, 0x2ad5, 0x3143, 0x009e, 0x006d, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1afe, 0x1b3d, 0x1bc1, 0x1bf7, 0x1c2a, 0x1c5d, + 0x1c96, 0x1cd8, 0x1d17, 0x1dd4, 0x1e10, 0x1e58, 0x1ea0, 0x1edf, + 0x1f21, 0x1f6c, 0x1fb4, 0x1ff9, 0x203e, 0x2089, 0x20cb, 0xffff, + 0xffff, 0x212d, 0xffff, 0x2179, 0xffff, 0x21db, 0x2214, 0x2247, + 0x2280, 0xffff, 0xffff, 0x22e8, 0x232d, 0x2369, 0xffff, 0xffff, + 0xffff, 0x23de, 0xffff, 0x2427, 0x245a, 0xffff, 0x24a0, 0x24e5, + // Entry 4D100 - 4D13F + 0x2521, 0xffff, 0xffff, 0xffff, 0xffff, 0x25bb, 0xffff, 0xffff, + 0x2635, 0x2683, 0xffff, 0xffff, 0x2718, 0x2758, 0x2791, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2836, 0x287b, 0x28bd, + 0x28f3, 0x2950, 0xffff, 0xffff, 0x29c4, 0xffff, 0x2a2b, 0xffff, + 0xffff, 0x2aaf, 0xffff, 0x2b31, 0xffff, 0xffff, 0xffff, 0xffff, + 0x2bc2, 0xffff, 0x2c20, 0x2c77, 0x2cc2, 0x2d01, 0xffff, 0xffff, + 0xffff, 0x2d79, 0x2dc4, 0x2e00, 0xffff, 0xffff, 0x2e89, 0x2f02, + 0x2f4a, 0x2f8f, 0xffff, 0xffff, 0x2ff7, 0x302d, 0x3066, 0xffff, + // Entry 4D140 - 4D17F + 0x30df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31c7, 0x3203, + 0x323f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x32f7, 0xffff, 0xffff, 0x3350, 0xffff, 0x3399, 0xffff, 0x33e5, + 0x3427, 0x3466, 0xffff, 0x34b5, 0x34fd, 0xffff, 0xffff, 0xffff, + 0x358a, 0x35d5, 0xffff, 0xffff, 0x1a8e, 0x1b82, 0x1d53, 0x1d95, + 0xffff, 0xffff, 0x2ae8, 0x3162, 0x0002, 0x0003, 0x01ae, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, + // Entry 4D180 - 4D1BF + 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, + 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, + 0x0000, 0x236f, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0161, + 0x017b, 0x018c, 0x019d, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, + 0x0045, 0x0054, 0x000d, 0x0057, 0xffff, 0x08b9, 0x08c3, 0x08cd, + 0x08d7, 0x08e1, 0x08eb, 0x08f5, 0x08ff, 0x0909, 0x0913, 0x091d, + 0x0927, 0x000d, 0x0057, 0xffff, 0x0a0c, 0x0a10, 0x0a14, 0x0a0c, + 0x0a14, 0x0a18, 0x0a18, 0x0a1c, 0x0a20, 0x0a24, 0x0a28, 0x0a2c, + // Entry 4D1C0 - 4D1FF + 0x000d, 0x0057, 0xffff, 0x0931, 0x0944, 0x0954, 0x0961, 0x0971, + 0x0981, 0x0991, 0x09a4, 0x09b1, 0x09ca, 0x09da, 0x09f3, 0x0003, + 0x0067, 0x0076, 0x0085, 0x000d, 0x0057, 0xffff, 0x08b9, 0x08c3, + 0x08cd, 0x08d7, 0x08e1, 0x08eb, 0x08f5, 0x08ff, 0x0909, 0x0913, + 0x091d, 0x0927, 0x000d, 0x0057, 0xffff, 0x0a0c, 0x0a10, 0x0a14, + 0x0a0c, 0x0a14, 0x0a18, 0x0a18, 0x0a1c, 0x0a20, 0x0a24, 0x0a28, + 0x0a2c, 0x000d, 0x0057, 0xffff, 0x0931, 0x0944, 0x0954, 0x0961, + 0x0971, 0x0981, 0x0991, 0x09a4, 0x09b1, 0x09ca, 0x09da, 0x09f3, + // Entry 4D200 - 4D23F + 0x0002, 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, + 0x00af, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, 0x0a4e, 0x0a58, + 0x0a62, 0x0a6f, 0x0007, 0x0017, 0x2a09, 0x29f4, 0x2a0b, 0x29d5, + 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, + 0x0a4e, 0x0a58, 0x0a62, 0x0a6f, 0x0007, 0x0057, 0x0a7c, 0x0a8f, + 0x0a9f, 0x0ab2, 0x0ac2, 0x2033, 0x0ae5, 0x0005, 0x00c7, 0x00d0, + 0x00e2, 0x0000, 0x00d9, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, + 0x0a4e, 0x0a58, 0x0a62, 0x0a6f, 0x0007, 0x0017, 0x2a09, 0x29f4, + // Entry 4D240 - 4D27F + 0x2a0b, 0x29d5, 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0057, 0x0a30, + 0x0a3a, 0x0a44, 0x0a4e, 0x0a58, 0x0a62, 0x0a6f, 0x0007, 0x0057, + 0x0a7c, 0x0a8f, 0x0a9f, 0x0ab2, 0x0ac2, 0x2033, 0x0ae5, 0x0002, + 0x00ee, 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0057, + 0xffff, 0x0afb, 0x0b04, 0x0b0d, 0x0b16, 0x0005, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0057, 0xffff, 0x0b1f, + 0x0b3a, 0x0b55, 0x0b70, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, + 0x0057, 0xffff, 0x0afb, 0x0b04, 0x0b0d, 0x0b16, 0x0005, 0x0000, + // Entry 4D280 - 4D2BF + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0057, 0xffff, + 0x0b1f, 0x0b3a, 0x0b55, 0x0b70, 0x0002, 0x0123, 0x0142, 0x0003, + 0x0127, 0x0130, 0x0139, 0x0002, 0x012a, 0x012d, 0x0001, 0x0057, + 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x0133, 0x0136, 0x0001, + 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x013c, 0x013f, + 0x0001, 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0003, 0x0146, + 0x014f, 0x0158, 0x0002, 0x0149, 0x014c, 0x0001, 0x0057, 0x0b8b, + 0x0001, 0x0057, 0x0b9e, 0x0002, 0x0152, 0x0155, 0x0001, 0x0057, + // Entry 4D2C0 - 4D2FF + 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x015b, 0x015e, 0x0001, + 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0003, 0x0170, 0x0000, + 0x0165, 0x0002, 0x0168, 0x016c, 0x0002, 0x0057, 0x0bb7, 0x0bd2, + 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0173, 0x0177, 0x0002, + 0x0057, 0x0bf3, 0x0bfd, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, + 0x0189, 0x0183, 0x0180, 0x0186, 0x0001, 0x0001, 0x1fa2, 0x0001, + 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, + 0x0004, 0x019a, 0x0194, 0x0191, 0x0197, 0x0001, 0x0000, 0x0524, + // Entry 4D300 - 4D33F + 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, + 0x0546, 0x0004, 0x01ab, 0x01a5, 0x01a2, 0x01a8, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0040, 0x01ef, 0x0000, 0x0000, 0x01f4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x01f9, 0x0000, 0x0000, 0x01fe, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0203, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x020e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4D340 - 4D37F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0213, + 0x0000, 0x0218, 0x0000, 0x0000, 0x021d, 0x0000, 0x0000, 0x0222, + 0x0000, 0x0000, 0x0227, 0x0001, 0x01f1, 0x0001, 0x0057, 0x0c07, + 0x0001, 0x01f6, 0x0001, 0x0057, 0x0c17, 0x0001, 0x01fb, 0x0001, + 0x0057, 0x0c2d, 0x0001, 0x0200, 0x0001, 0x0057, 0x0c3d, 0x0002, + 0x0206, 0x0209, 0x0001, 0x0057, 0x0c53, 0x0003, 0x0057, 0x0c5d, + 0x0c6d, 0x0c7a, 0x0001, 0x0210, 0x0001, 0x0057, 0x0c8a, 0x0001, + // Entry 4D380 - 4D3BF + 0x0215, 0x0001, 0x0057, 0x0cae, 0x0001, 0x021a, 0x0001, 0x0057, + 0x0cf9, 0x0001, 0x021f, 0x0001, 0x0057, 0x0d0f, 0x0001, 0x0224, + 0x0001, 0x0057, 0x0d25, 0x0001, 0x0229, 0x0001, 0x0057, 0x0d38, + 0x0003, 0x0004, 0x0891, 0x0c13, 0x0012, 0x0017, 0x0038, 0x015b, + 0x0000, 0x01e2, 0x025d, 0x026c, 0x0297, 0x04c9, 0x0543, 0x05b5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0638, 0x07fd, 0x086f, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, + 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, 0x006e, 0x0000, 0x0004, + // Entry 4D3C0 - 4D3FF + 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0035, 0x0719, 0x0001, + 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x006e, 0x0007, + 0x000a, 0x0043, 0x0000, 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, + 0x0000, 0x00a8, 0x00bb, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, + 0x0059, 0x0068, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, + 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, + 0x3dde, 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, + 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x3de5, + // Entry 4D400 - 4D43F + 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, + 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x3dde, 0x0003, + 0x007b, 0x008a, 0x0099, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, + 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, + 0x007c, 0x3dde, 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, + 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x3b05, + 0x3de5, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, + 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x3dde, + // Entry 4D440 - 4D47F + 0x0003, 0x00ac, 0x00b7, 0x00b1, 0x0003, 0x006e, 0xffff, 0xffff, + 0x000e, 0x0004, 0x006e, 0xffff, 0xffff, 0xffff, 0x000e, 0x0002, + 0x006e, 0xffff, 0x000e, 0x0006, 0x00c2, 0x0000, 0x0000, 0x00d5, + 0x00f4, 0x0137, 0x0001, 0x00c4, 0x0001, 0x00c6, 0x000d, 0x0035, + 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, + 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, 0x0001, 0x00d7, 0x0001, + 0x00d9, 0x0019, 0x0035, 0xffff, 0x00fd, 0x0104, 0x3de9, 0x0112, + 0x0119, 0x3df0, 0x0127, 0x3df7, 0x3dfe, 0x013c, 0x0143, 0x014a, + // Entry 4D480 - 4D4BF + 0x0151, 0x3e05, 0x015f, 0x0166, 0x016d, 0x0174, 0x017b, 0x0182, + 0x0189, 0x0190, 0x0197, 0x019e, 0x0001, 0x00f6, 0x0001, 0x00f8, + 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, 0x01b3, 0x01ba, 0x01c1, + 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, 0x01eb, 0x01f2, 0x01f9, + 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, 0x0223, 0x022a, 0x0231, + 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, 0x025b, 0x0262, 0x0269, + 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, 0x0293, 0x029a, 0x02a1, + 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d2, 0x02d9, + // Entry 4D4C0 - 4D4FF + 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0303, 0x030a, 0x0311, + 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, 0x033b, 0x0342, 0x0001, + 0x0139, 0x0001, 0x013b, 0x000d, 0x0035, 0xffff, 0x0349, 0x034d, + 0x0351, 0x3b22, 0x3e0c, 0x035d, 0x3e10, 0x0365, 0x3b2a, 0x3e14, + 0x3b32, 0x0375, 0x0004, 0x0158, 0x0152, 0x014f, 0x0155, 0x0001, + 0x006e, 0x0015, 0x0001, 0x006e, 0x0023, 0x0001, 0x006d, 0x12b5, + 0x0001, 0x006d, 0x12be, 0x0005, 0x0161, 0x0000, 0x0000, 0x0000, + 0x01cc, 0x0002, 0x0164, 0x0198, 0x0003, 0x0168, 0x0178, 0x0188, + // Entry 4D500 - 4D53F + 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, + 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, + 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, + 0x000e, 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, + 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0087, + 0x0003, 0x019c, 0x01ac, 0x01bc, 0x000e, 0x0035, 0xffff, 0x050a, + 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, + // Entry 4D540 - 4D57F + 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006e, 0xffff, 0x002d, + 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, + 0x006c, 0x0073, 0x007d, 0x0087, 0x0003, 0x01d6, 0x01dc, 0x01d0, + 0x0001, 0x01d2, 0x0002, 0x006e, 0x0091, 0x00a1, 0x0001, 0x01d8, + 0x0002, 0x006e, 0x0091, 0x00a1, 0x0001, 0x01de, 0x0002, 0x006e, + 0x0091, 0x00a1, 0x0005, 0x01e8, 0x0000, 0x0000, 0x0000, 0x0253, + // Entry 4D580 - 4D5BF + 0x0002, 0x01eb, 0x021f, 0x0003, 0x01ef, 0x01ff, 0x020f, 0x000e, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, + 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, + 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0087, 0x0003, + 0x0223, 0x0233, 0x0243, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, + // Entry 4D5C0 - 4D5FF + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006e, 0xffff, 0x002d, 0x0034, + 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, + 0x0073, 0x007d, 0x0087, 0x0003, 0x0000, 0x0000, 0x0257, 0x0001, + 0x0259, 0x0002, 0x006e, 0x00ae, 0x00c4, 0x0005, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0263, 0x0003, 0x0000, 0x0000, 0x0267, 0x0001, + // Entry 4D600 - 4D63F + 0x0269, 0x0001, 0x006e, 0x00d7, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0275, 0x0000, 0x0286, 0x0004, 0x0283, 0x027d, + 0x027a, 0x0280, 0x0001, 0x006e, 0x00fc, 0x0001, 0x006e, 0x010f, + 0x0001, 0x006e, 0x010f, 0x0001, 0x0035, 0x0503, 0x0004, 0x0294, + 0x028e, 0x028b, 0x0291, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, + 0x02a0, 0x0305, 0x035c, 0x0391, 0x0480, 0x0496, 0x04a7, 0x04b8, + 0x0002, 0x02a3, 0x02d4, 0x0003, 0x02a7, 0x02b6, 0x02c5, 0x000d, + // Entry 4D640 - 4D67F + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, + 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, 0xffff, + 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, + 0x0065, 0x006c, 0x0073, 0x007d, 0x0003, 0x02d8, 0x02e7, 0x02f6, + 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, + 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, + // Entry 4D680 - 4D6BF + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, + 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, + 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0002, 0x0308, 0x0332, + 0x0005, 0x030e, 0x0317, 0x0329, 0x0000, 0x0320, 0x0007, 0x006e, + 0x011e, 0x0125, 0x012c, 0x0133, 0x013a, 0x0141, 0x0148, 0x0007, + 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x0007, 0x006e, 0x011e, 0x0125, 0x012c, 0x0133, 0x013a, 0x0141, + // Entry 4D6C0 - 4D6FF + 0x0148, 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, + 0x135f, 0x1369, 0x0005, 0x0338, 0x0341, 0x0353, 0x0000, 0x034a, + 0x0007, 0x006e, 0x011e, 0x0125, 0x012c, 0x0133, 0x013a, 0x0141, + 0x0148, 0x0007, 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, + 0x00a0, 0x00a4, 0x0007, 0x006e, 0x011e, 0x0125, 0x012c, 0x0133, + 0x013a, 0x0141, 0x0148, 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, + 0x134b, 0x1355, 0x135f, 0x1369, 0x0002, 0x035f, 0x0378, 0x0003, + 0x0363, 0x036a, 0x0371, 0x0005, 0x006e, 0xffff, 0x014f, 0x0157, + // Entry 4D700 - 4D73F + 0x015f, 0x0167, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x006e, 0xffff, 0x016f, 0x017c, 0x0189, 0x0196, + 0x0003, 0x037c, 0x0383, 0x038a, 0x0005, 0x006e, 0xffff, 0x014f, + 0x0157, 0x015f, 0x0167, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x0005, 0x006e, 0xffff, 0x016f, 0x017c, 0x0189, + 0x0196, 0x0002, 0x0394, 0x040a, 0x0003, 0x0398, 0x03be, 0x03e4, + 0x000a, 0x03a6, 0x03a9, 0x03a3, 0x03ac, 0x03b2, 0x03b8, 0x03bb, + 0x0000, 0x03af, 0x03b5, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, + // Entry 4D740 - 4D77F + 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, + 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, + 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x03cc, + 0x03cf, 0x03c9, 0x03d2, 0x03d8, 0x03de, 0x03e1, 0x0000, 0x03d5, + 0x03db, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, + 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, + 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, + 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x03f2, 0x03f5, 0x03ef, + // Entry 4D780 - 4D7BF + 0x03f8, 0x03fe, 0x0404, 0x0407, 0x0000, 0x03fb, 0x0401, 0x0001, + 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, + 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, + 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, + 0x006d, 0x13cb, 0x0003, 0x040e, 0x0434, 0x045a, 0x000a, 0x041c, + 0x041f, 0x0419, 0x0422, 0x0428, 0x042e, 0x0431, 0x0000, 0x0425, + 0x042b, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, + 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, + // Entry 4D7C0 - 4D7FF + 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, + 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x0442, 0x0445, 0x043f, + 0x0448, 0x044e, 0x0454, 0x0457, 0x0000, 0x044b, 0x0451, 0x0001, + 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, + 0x0001, 0x006e, 0x01aa, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, + 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, + 0x006d, 0x13cb, 0x000a, 0x0468, 0x046b, 0x0465, 0x046e, 0x0474, + 0x047a, 0x047d, 0x0000, 0x0471, 0x0477, 0x0001, 0x006d, 0x1393, + // Entry 4D800 - 4D83F + 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, + 0x01aa, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, + 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, + 0x0003, 0x048a, 0x0490, 0x0484, 0x0001, 0x0486, 0x0002, 0x006d, + 0x13dc, 0x13ed, 0x0001, 0x048c, 0x0002, 0x006d, 0x13dc, 0x13ed, + 0x0001, 0x0492, 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0004, 0x04a4, + 0x049e, 0x049b, 0x04a1, 0x0001, 0x0035, 0x064a, 0x0001, 0x0035, + 0x065b, 0x0001, 0x0035, 0x065b, 0x0001, 0x0021, 0x05f2, 0x0004, + // Entry 4D840 - 4D87F + 0x04b5, 0x04af, 0x04ac, 0x04b2, 0x0001, 0x006e, 0x01b1, 0x0001, + 0x006e, 0x01bf, 0x0001, 0x006d, 0x1423, 0x0001, 0x006d, 0x142c, + 0x0004, 0x04c6, 0x04c0, 0x04bd, 0x04c3, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0006, 0x04d0, 0x0000, 0x0000, 0x0000, 0x052b, 0x0532, + 0x0002, 0x04d3, 0x04f7, 0x0003, 0x04d7, 0x0000, 0x04e7, 0x000e, + 0x0035, 0x3e18, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, + // Entry 4D880 - 4D8BF + 0x006e, 0x01ca, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, + 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0087, 0x0003, + 0x04fb, 0x050b, 0x051b, 0x000e, 0x0035, 0x3e18, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0x41bc, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006e, 0x01ca, 0x002d, 0x0034, + 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, + // Entry 4D8C0 - 4D8FF + 0x0073, 0x007d, 0x0087, 0x0001, 0x052d, 0x0001, 0x052f, 0x0001, + 0x006e, 0x01d4, 0x0004, 0x0540, 0x053a, 0x0537, 0x053d, 0x0001, + 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, + 0x0001, 0x006e, 0x0007, 0x0005, 0x0549, 0x0000, 0x0000, 0x0000, + 0x05ae, 0x0002, 0x054c, 0x057d, 0x0003, 0x0550, 0x055f, 0x056e, + 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, + 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + // Entry 4D900 - 4D93F + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, + 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, + 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0003, 0x0581, 0x0590, + 0x059f, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, + 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, + 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, + // Entry 4D940 - 4D97F + 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0001, 0x05b0, + 0x0001, 0x05b2, 0x0001, 0x006e, 0x01e1, 0x0008, 0x05be, 0x0000, + 0x0000, 0x0000, 0x0623, 0x062a, 0x0000, 0x9006, 0x0002, 0x05c1, + 0x05f2, 0x0003, 0x05c5, 0x05d4, 0x05e3, 0x000d, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, + 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, + 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, 0xffff, 0x002d, 0x0034, + // Entry 4D980 - 4D9BF + 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, + 0x0073, 0x007d, 0x0003, 0x05f6, 0x0605, 0x0614, 0x000d, 0x0035, + 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, + 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, + 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, 0xffff, 0x002d, + 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, + 0x006c, 0x0073, 0x007d, 0x0001, 0x0625, 0x0001, 0x0627, 0x0001, + // Entry 4D9C0 - 4D9FF + 0x006e, 0x01eb, 0x0004, 0x0000, 0x0632, 0x062f, 0x0635, 0x0001, + 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0641, 0x07db, 0x0000, + 0x07ec, 0x0002, 0x0644, 0x0734, 0x0001, 0x0646, 0x00ec, 0x006e, + 0x01f8, 0x020b, 0x021e, 0x0231, 0x0244, 0x0257, 0x026a, 0x027d, + 0x0290, 0x02a3, 0x02b6, 0x02c9, 0x02e2, 0x02fb, 0x0314, 0x032d, + 0x0346, 0x0359, 0x036c, 0x037f, 0x0392, 0x03a5, 0x03b8, 0x03cb, + 0x03de, 0x03f1, 0x0404, 0x0417, 0x042a, 0x043d, 0x0450, 0x0463, + // Entry 4DA00 - 4DA3F + 0x0476, 0x0489, 0x049c, 0x04af, 0x04c2, 0x04d5, 0x04e8, 0x04fb, + 0x050e, 0x0521, 0x0534, 0x0547, 0x055a, 0x056d, 0x0580, 0x0593, + 0x05a6, 0x05b9, 0x05cc, 0x05df, 0x05f3, 0x0608, 0x061d, 0x0632, + 0x0647, 0x065c, 0x0671, 0x0686, 0x069b, 0x06b0, 0x06c5, 0x06da, + 0x06ef, 0x0704, 0x0719, 0x072e, 0x0743, 0x0758, 0x076d, 0x0782, + 0x0797, 0x07ac, 0x07c1, 0x07d6, 0x07eb, 0x0800, 0x0815, 0x082a, + 0x083f, 0x0854, 0x0869, 0x087e, 0x0893, 0x08a8, 0x08bd, 0x08d2, + 0x08e7, 0x08fc, 0x0911, 0x0926, 0x093b, 0x0950, 0x0965, 0x097a, + // Entry 4DA40 - 4DA7F + 0x098f, 0x09a4, 0x09b9, 0x09ce, 0x09e3, 0x09f8, 0x0a0d, 0x0a22, + 0x0a37, 0x0a4c, 0x0a61, 0x0a76, 0x0a8b, 0x0aa0, 0x0ab5, 0x0aca, + 0x0adf, 0x0af4, 0x0b09, 0x0b1e, 0x0b33, 0x0b48, 0x0b5d, 0x0b72, + 0x0b87, 0x0b9c, 0x0bb1, 0x0bc6, 0x0bdb, 0x0bf0, 0x0c05, 0x0c1a, + 0x0c2f, 0x0c44, 0x0c59, 0x0c6e, 0x0c83, 0x0c98, 0x0cad, 0x0cc2, + 0x0cd7, 0x0cec, 0x0d01, 0x0d16, 0x0d2b, 0x0d40, 0x0d55, 0x0d6a, + 0x0d7f, 0x0d94, 0x0da9, 0x0dbe, 0x0dd3, 0x0de8, 0x0dfd, 0x0e12, + 0x0e27, 0x0e3c, 0x0e51, 0x0e66, 0x0e7b, 0x0e90, 0x0ea5, 0x0eba, + // Entry 4DA80 - 4DABF + 0x0ecf, 0x0ee4, 0x0ef9, 0x0f0e, 0x0f23, 0x0f38, 0x0f4d, 0x0f62, + 0x0f77, 0x0f8c, 0x0fa1, 0x0fb6, 0x0fcb, 0x0fe0, 0x0ff5, 0x100a, + 0x101f, 0x1034, 0x1049, 0x105e, 0x1073, 0x1088, 0x109d, 0x10b2, + 0x10c7, 0x10dc, 0x10f1, 0x1106, 0x111b, 0x1130, 0x1145, 0x115a, + 0x116f, 0x1184, 0x1199, 0x11ae, 0x11c3, 0x11d8, 0x11ed, 0x1202, + 0x1217, 0x122c, 0x1241, 0x1256, 0x126b, 0x1280, 0x1295, 0x12aa, + 0x12bf, 0x12d4, 0x12e9, 0x12fe, 0x1313, 0x1328, 0x133d, 0x1352, + 0x1367, 0x137c, 0x1391, 0x13a6, 0x13bb, 0x13d0, 0x13e5, 0x13fa, + // Entry 4DAC0 - 4DAFF + 0x140f, 0x1424, 0x1439, 0x144e, 0x1463, 0x1478, 0x148d, 0x14a2, + 0x14b7, 0x14be, 0x14c5, 0x14cc, 0x0001, 0x0736, 0x00a3, 0x006e, + 0x14d3, 0x14e5, 0x14f7, 0x1509, 0x151b, 0x152d, 0x153f, 0x1551, + 0x1563, 0x1575, 0x1587, 0x1599, 0x15b1, 0x15c9, 0x15e1, 0x15f9, + 0x1611, 0x1623, 0x1635, 0x1647, 0x1659, 0x166b, 0x167d, 0x168f, + 0x16a1, 0x16b3, 0x16c5, 0x16d7, 0x16e9, 0x16fb, 0x170d, 0x171f, + 0x1731, 0x1743, 0x1755, 0x1767, 0x1779, 0x178b, 0x179d, 0x17af, + 0x17c1, 0x17d3, 0x17e5, 0x17f7, 0x1809, 0x181b, 0x182d, 0x183f, + // Entry 4DB00 - 4DB3F + 0x1851, 0x1863, 0x1875, 0x1887, 0x189a, 0x18ae, 0x18c2, 0x18d6, + 0x18ea, 0x18fe, 0x1912, 0x1926, 0x193a, 0x194e, 0x1962, 0x1976, + 0x198a, 0x199e, 0x19b2, 0x19c6, 0x19da, 0x19ee, 0x1a02, 0x1a16, + 0x1a2a, 0x1a3e, 0x1a52, 0x1a66, 0x1a7a, 0x1a8e, 0x1aa2, 0x1ab6, + 0x1aca, 0x1ade, 0x1af2, 0x1b06, 0x1b1a, 0x1b2e, 0x1b42, 0x1b56, + 0x1b6a, 0x1b7e, 0x1b92, 0x1ba6, 0x1bba, 0x1bce, 0x1be2, 0x1bf6, + 0x1c0a, 0x1c1e, 0x1c32, 0x1c46, 0x1c5a, 0x1c6e, 0x1c82, 0x1c96, + 0x1caa, 0x1cbe, 0x1cd2, 0x1ce6, 0x1cfa, 0x1d0e, 0x1d22, 0x1d36, + // Entry 4DB40 - 4DB7F + 0x1d4a, 0x1d5e, 0x1d72, 0x1d86, 0x1d9a, 0x1dae, 0x1dc2, 0x1dd6, + 0x1dea, 0x1dfe, 0x1e12, 0x1e26, 0x1e3a, 0x1e4e, 0x1e62, 0x1e76, + 0x1e8a, 0x1e9e, 0x1eb2, 0x1ec6, 0x1eda, 0x1eee, 0x1f02, 0x1f16, + 0x1f2a, 0x1f3e, 0x1f52, 0x1f66, 0x1f7a, 0x1f8e, 0x1fa2, 0x1fb6, + 0x1fca, 0x1fde, 0x1ff2, 0x2006, 0x201a, 0x202e, 0x2042, 0x2056, + 0x206a, 0x207e, 0x2092, 0x20a6, 0x20ba, 0x20ce, 0x20e2, 0x20f6, + 0x210a, 0x211e, 0x2132, 0x0004, 0x07e9, 0x07e3, 0x07e0, 0x07e6, + 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, + // Entry 4DB80 - 4DBBF + 0x04f5, 0x0001, 0x006f, 0x0000, 0x0004, 0x07fa, 0x07f4, 0x07f1, + 0x07f7, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0803, 0x0000, + 0x0000, 0x0000, 0x0868, 0x0002, 0x0806, 0x0837, 0x0003, 0x080a, + 0x0819, 0x0828, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, + 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, + 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + // Entry 4DBC0 - 4DBFF + 0x000d, 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, + 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0003, + 0x083b, 0x084a, 0x0859, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, + 0x41c4, 0x000d, 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, + 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, + // Entry 4DC00 - 4DC3F + 0x0001, 0x086a, 0x0001, 0x086c, 0x0001, 0x006f, 0x000a, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0878, 0x0880, 0x0000, 0x9006, + 0x0001, 0x087a, 0x0001, 0x087c, 0x0002, 0x0035, 0x105c, 0x1066, + 0x0004, 0x088e, 0x0888, 0x0885, 0x088b, 0x0001, 0x0035, 0x0719, + 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x006f, + 0x0014, 0x0040, 0x08d2, 0x0000, 0x0000, 0x08d7, 0x08ec, 0x08fc, + 0x090c, 0x0921, 0x0931, 0x0941, 0x0956, 0x0966, 0x0976, 0x098f, + 0x09a3, 0x0000, 0x0000, 0x0000, 0x09b7, 0x09ce, 0x09de, 0x0000, + // Entry 4DC40 - 4DC7F + 0x0000, 0x0000, 0x09ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x09f3, 0x0a05, 0x0a17, 0x0a29, 0x0a3b, 0x0a4d, 0x0a5f, 0x0a71, + 0x0a83, 0x0a95, 0x0aa7, 0x0ab9, 0x0acb, 0x0add, 0x0aef, 0x0b01, + 0x0b13, 0x0b25, 0x0b37, 0x0b49, 0x0b5b, 0x0000, 0x0b6d, 0x0000, + 0x0b72, 0x0b86, 0x0b96, 0x0ba6, 0x0bba, 0x0bca, 0x0bda, 0x0bee, + 0x0bfe, 0x0c0e, 0x0001, 0x08d4, 0x0001, 0x006f, 0x001c, 0x0003, + 0x08db, 0x08de, 0x08e3, 0x0001, 0x0035, 0x1074, 0x0003, 0x006f, + 0x0023, 0x002a, 0x0031, 0x0002, 0x08e6, 0x08e9, 0x0001, 0x006f, + // Entry 4DC80 - 4DCBF + 0x0038, 0x0001, 0x0035, 0x10ad, 0x0003, 0x08f0, 0x0000, 0x08f3, + 0x0001, 0x0035, 0x1074, 0x0002, 0x08f6, 0x08f9, 0x0001, 0x006f, + 0x0038, 0x0001, 0x0035, 0x10ad, 0x0003, 0x0900, 0x0000, 0x0903, + 0x0001, 0x0035, 0x1074, 0x0002, 0x0906, 0x0909, 0x0001, 0x006f, + 0x0038, 0x0001, 0x0035, 0x10ad, 0x0003, 0x0910, 0x0913, 0x0918, + 0x0001, 0x006f, 0x0042, 0x0003, 0x006f, 0x0049, 0x0053, 0x005d, + 0x0002, 0x091b, 0x091e, 0x0001, 0x006f, 0x0067, 0x0001, 0x006f, + 0x0077, 0x0003, 0x0925, 0x0000, 0x0928, 0x0001, 0x006d, 0x1697, + // Entry 4DCC0 - 4DCFF + 0x0002, 0x092b, 0x092e, 0x0001, 0x006f, 0x0067, 0x0001, 0x006f, + 0x0077, 0x0003, 0x0935, 0x0000, 0x0938, 0x0001, 0x006d, 0x1697, + 0x0002, 0x093b, 0x093e, 0x0001, 0x006f, 0x0067, 0x0001, 0x006f, + 0x0077, 0x0003, 0x0945, 0x0948, 0x094d, 0x0001, 0x0035, 0x054d, + 0x0003, 0x006f, 0x0087, 0x0091, 0x0098, 0x0002, 0x0950, 0x0953, + 0x0001, 0x006f, 0x00a2, 0x0001, 0x006f, 0x00af, 0x0003, 0x095a, + 0x0000, 0x095d, 0x0001, 0x0035, 0x054d, 0x0002, 0x0960, 0x0963, + 0x0001, 0x006f, 0x00a2, 0x0001, 0x006f, 0x00af, 0x0003, 0x096a, + // Entry 4DD00 - 4DD3F + 0x0000, 0x096d, 0x0001, 0x0035, 0x054d, 0x0002, 0x0970, 0x0973, + 0x0001, 0x006f, 0x00a2, 0x0001, 0x006f, 0x00af, 0x0004, 0x097b, + 0x097e, 0x0983, 0x098c, 0x0001, 0x006f, 0x00bc, 0x0003, 0x006f, + 0x00c0, 0x00c7, 0x00ce, 0x0002, 0x0986, 0x0989, 0x0001, 0x006f, + 0x00d5, 0x0001, 0x006f, 0x00df, 0x0001, 0x006f, 0x00e9, 0x0004, + 0x0994, 0x0000, 0x0997, 0x09a0, 0x0001, 0x006f, 0x00bc, 0x0002, + 0x099a, 0x099d, 0x0001, 0x006f, 0x00d5, 0x0001, 0x006f, 0x00df, + 0x0001, 0x006f, 0x00e9, 0x0004, 0x09a8, 0x0000, 0x09ab, 0x09b4, + // Entry 4DD40 - 4DD7F + 0x0001, 0x006f, 0x00bc, 0x0002, 0x09ae, 0x09b1, 0x0001, 0x006f, + 0x00d5, 0x0001, 0x006f, 0x00df, 0x0001, 0x006f, 0x00e9, 0x0003, + 0x09bb, 0x09be, 0x09c5, 0x0001, 0x0035, 0x0549, 0x0005, 0x006d, + 0x35f1, 0x35f8, 0x35ff, 0x1764, 0x3606, 0x0002, 0x09c8, 0x09cb, + 0x0001, 0x006f, 0x00f3, 0x0001, 0x006f, 0x00fd, 0x0003, 0x09d2, + 0x0000, 0x09d5, 0x0001, 0x0035, 0x0549, 0x0002, 0x09d8, 0x09db, + 0x0001, 0x006f, 0x00f3, 0x0001, 0x006f, 0x00fd, 0x0003, 0x09e2, + 0x0000, 0x09e5, 0x0001, 0x0035, 0x0549, 0x0002, 0x09e8, 0x09eb, + // Entry 4DD80 - 4DDBF + 0x0001, 0x006f, 0x00f3, 0x0001, 0x006f, 0x00fd, 0x0001, 0x09f0, + 0x0001, 0x006f, 0x0107, 0x0003, 0x0000, 0x09f7, 0x09fc, 0x0003, + 0x006f, 0x0111, 0x011b, 0x0125, 0x0002, 0x09ff, 0x0a02, 0x0001, + 0x006f, 0x012f, 0x0001, 0x006f, 0x013f, 0x0003, 0x0000, 0x0a09, + 0x0a0e, 0x0003, 0x006f, 0x0111, 0x011b, 0x0125, 0x0002, 0x0a11, + 0x0a14, 0x0001, 0x006f, 0x012f, 0x0001, 0x006f, 0x013f, 0x0003, + 0x0000, 0x0a1b, 0x0a20, 0x0003, 0x006f, 0x0111, 0x011b, 0x0125, + 0x0002, 0x0a23, 0x0a26, 0x0001, 0x006f, 0x012f, 0x0001, 0x006f, + // Entry 4DDC0 - 4DDFF + 0x013f, 0x0003, 0x0000, 0x0a2d, 0x0a32, 0x0003, 0x006f, 0x014f, + 0x0159, 0x0163, 0x0002, 0x0a35, 0x0a38, 0x0001, 0x006f, 0x016d, + 0x0001, 0x006f, 0x017d, 0x0003, 0x0000, 0x0a3f, 0x0a44, 0x0003, + 0x006f, 0x014f, 0x0159, 0x0163, 0x0002, 0x0a47, 0x0a4a, 0x0001, + 0x006f, 0x016d, 0x0001, 0x006f, 0x017d, 0x0003, 0x0000, 0x0a51, + 0x0a56, 0x0003, 0x006f, 0x014f, 0x0159, 0x0163, 0x0002, 0x0a59, + 0x0a5c, 0x0001, 0x006f, 0x016d, 0x0001, 0x006f, 0x017d, 0x0003, + 0x0000, 0x0a63, 0x0a68, 0x0003, 0x006f, 0x018d, 0x0197, 0x01a1, + // Entry 4DE00 - 4DE3F + 0x0002, 0x0a6b, 0x0a6e, 0x0001, 0x006f, 0x01ab, 0x0001, 0x006f, + 0x01bb, 0x0003, 0x0000, 0x0a75, 0x0a7a, 0x0003, 0x006f, 0x018d, + 0x0197, 0x01a1, 0x0002, 0x0a7d, 0x0a80, 0x0001, 0x006f, 0x01ab, + 0x0001, 0x006f, 0x01bb, 0x0003, 0x0000, 0x0a87, 0x0a8c, 0x0003, + 0x006f, 0x018d, 0x0197, 0x01a1, 0x0002, 0x0a8f, 0x0a92, 0x0001, + 0x006f, 0x01ab, 0x0001, 0x006f, 0x01bb, 0x0003, 0x0000, 0x0a99, + 0x0a9e, 0x0003, 0x006f, 0x01cb, 0x01d5, 0x01df, 0x0002, 0x0aa1, + 0x0aa4, 0x0001, 0x006f, 0x01e9, 0x0001, 0x006f, 0x01f9, 0x0003, + // Entry 4DE40 - 4DE7F + 0x0000, 0x0aab, 0x0ab0, 0x0003, 0x006f, 0x01cb, 0x01d5, 0x01df, + 0x0002, 0x0ab3, 0x0ab6, 0x0001, 0x006f, 0x01e9, 0x0001, 0x006f, + 0x01f9, 0x0003, 0x0000, 0x0abd, 0x0ac2, 0x0003, 0x006f, 0x01cb, + 0x01d5, 0x01df, 0x0002, 0x0ac5, 0x0ac8, 0x0001, 0x006f, 0x01e9, + 0x0001, 0x006f, 0x01f9, 0x0003, 0x0000, 0x0acf, 0x0ad4, 0x0003, + 0x006f, 0x0209, 0x0213, 0x021d, 0x0002, 0x0ad7, 0x0ada, 0x0001, + 0x006f, 0x0227, 0x0001, 0x006f, 0x0237, 0x0003, 0x0000, 0x0ae1, + 0x0ae6, 0x0003, 0x006f, 0x0209, 0x0213, 0x021d, 0x0002, 0x0ae9, + // Entry 4DE80 - 4DEBF + 0x0aec, 0x0001, 0x006f, 0x0227, 0x0001, 0x006f, 0x0237, 0x0003, + 0x0000, 0x0af3, 0x0af8, 0x0003, 0x006f, 0x0209, 0x0213, 0x021d, + 0x0002, 0x0afb, 0x0afe, 0x0001, 0x006f, 0x0227, 0x0001, 0x006f, + 0x0237, 0x0003, 0x0000, 0x0b05, 0x0b0a, 0x0003, 0x006f, 0x0247, + 0x0251, 0x025b, 0x0002, 0x0b0d, 0x0b10, 0x0001, 0x006f, 0x0265, + 0x0001, 0x006f, 0x0275, 0x0003, 0x0000, 0x0b17, 0x0b1c, 0x0003, + 0x006f, 0x0247, 0x0251, 0x025b, 0x0002, 0x0b1f, 0x0b22, 0x0001, + 0x006f, 0x0265, 0x0001, 0x006f, 0x0275, 0x0003, 0x0000, 0x0b29, + // Entry 4DEC0 - 4DEFF + 0x0b2e, 0x0003, 0x006f, 0x0247, 0x0251, 0x025b, 0x0002, 0x0b31, + 0x0b34, 0x0001, 0x006f, 0x0265, 0x0001, 0x006f, 0x0275, 0x0003, + 0x0000, 0x0b3b, 0x0b40, 0x0003, 0x006f, 0x0285, 0x028f, 0x0299, + 0x0002, 0x0b43, 0x0b46, 0x0001, 0x006f, 0x02a3, 0x0001, 0x006f, + 0x02b3, 0x0003, 0x0000, 0x0b4d, 0x0b52, 0x0003, 0x006f, 0x0285, + 0x028f, 0x0299, 0x0002, 0x0b55, 0x0b58, 0x0001, 0x006f, 0x02a3, + 0x0001, 0x006f, 0x02b3, 0x0003, 0x0000, 0x0b5f, 0x0b64, 0x0003, + 0x006f, 0x0285, 0x028f, 0x0299, 0x0002, 0x0b67, 0x0b6a, 0x0001, + // Entry 4DF00 - 4DF3F + 0x006f, 0x02a3, 0x0001, 0x006f, 0x02b3, 0x0001, 0x0b6f, 0x0001, + 0x006d, 0x19cc, 0x0003, 0x0b76, 0x0b79, 0x0b7d, 0x0001, 0x006f, + 0x02c3, 0x0002, 0x006f, 0xffff, 0x02ca, 0x0002, 0x0b80, 0x0b83, + 0x0001, 0x006f, 0x02e0, 0x0001, 0x006f, 0x02ed, 0x0003, 0x0b8a, + 0x0000, 0x0b8d, 0x0001, 0x006f, 0x02c3, 0x0002, 0x0b90, 0x0b93, + 0x0001, 0x006f, 0x02e0, 0x0001, 0x006f, 0x02ed, 0x0003, 0x0b9a, + 0x0000, 0x0b9d, 0x0001, 0x006f, 0x02c3, 0x0002, 0x0ba0, 0x0ba3, + 0x0001, 0x006f, 0x02e0, 0x0001, 0x006f, 0x02ed, 0x0003, 0x0baa, + // Entry 4DF40 - 4DF7F + 0x0bad, 0x0bb1, 0x0001, 0x006f, 0x02fa, 0x0002, 0x006f, 0xffff, + 0x0301, 0x0002, 0x0bb4, 0x0bb7, 0x0001, 0x006f, 0x0308, 0x0001, + 0x006f, 0x0315, 0x0003, 0x0bbe, 0x0000, 0x0bc1, 0x0001, 0x0035, + 0x18d3, 0x0002, 0x0bc4, 0x0bc7, 0x0001, 0x006f, 0x0308, 0x0001, + 0x006f, 0x0315, 0x0003, 0x0bce, 0x0000, 0x0bd1, 0x0001, 0x0035, + 0x18d3, 0x0002, 0x0bd4, 0x0bd7, 0x0001, 0x006f, 0x0308, 0x0001, + 0x006f, 0x0315, 0x0003, 0x0bde, 0x0be1, 0x0be5, 0x0001, 0x0035, + 0x190d, 0x0002, 0x006f, 0xffff, 0x0322, 0x0002, 0x0be8, 0x0beb, + // Entry 4DF80 - 4DFBF + 0x0001, 0x006f, 0x0329, 0x0001, 0x006f, 0x0336, 0x0003, 0x0bf2, + 0x0000, 0x0bf5, 0x0001, 0x0035, 0x190d, 0x0002, 0x0bf8, 0x0bfb, + 0x0001, 0x006f, 0x0343, 0x0001, 0x0035, 0x1935, 0x0003, 0x0c02, + 0x0000, 0x0c05, 0x0001, 0x0035, 0x190d, 0x0002, 0x0c08, 0x0c0b, + 0x0001, 0x006f, 0x0343, 0x0001, 0x0035, 0x1935, 0x0001, 0x0c10, + 0x0001, 0x006f, 0x034d, 0x0004, 0x0c18, 0x0c1d, 0x0c22, 0x0c31, + 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x006f, 0x0354, + 0x035e, 0x036e, 0x0002, 0x0000, 0x0c25, 0x0003, 0x0000, 0x0c2c, + // Entry 4DFC0 - 4DFFF + 0x0c29, 0x0001, 0x006f, 0x037e, 0x0003, 0x006f, 0xffff, 0x038e, + 0x03a1, 0x0002, 0x0000, 0x0c34, 0x0003, 0x0c38, 0x0d78, 0x0cd8, + 0x009e, 0x006f, 0xffff, 0xffff, 0xffff, 0xffff, 0x043c, 0x0481, + 0x050b, 0x0547, 0x058c, 0x05d1, 0x0616, 0x0664, 0x06a9, 0x0766, + 0x07a2, 0x07de, 0x082c, 0x0871, 0x08ad, 0x0904, 0x0964, 0x09bb, + 0x0a12, 0x0a57, 0x0aa5, 0xffff, 0xffff, 0x0b07, 0xffff, 0x0b65, + 0xffff, 0x0bbe, 0x0bf1, 0x0c24, 0x0c57, 0xffff, 0xffff, 0x0cb9, + 0x0cfe, 0x0d43, 0xffff, 0xffff, 0xffff, 0x0daf, 0xffff, 0x0e0d, + // Entry 4E000 - 4E03F + 0x0e40, 0xffff, 0x0e86, 0x0eb9, 0x0f07, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0f9e, 0xffff, 0xffff, 0x1015, 0x106c, 0xffff, 0xffff, + 0x10f3, 0x114d, 0x1180, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1240, 0x1273, 0x12c1, 0x12fd, 0x1330, 0xffff, 0xffff, + 0x13f8, 0xffff, 0x143b, 0xffff, 0xffff, 0x14dd, 0xffff, 0x1568, + 0xffff, 0xffff, 0xffff, 0xffff, 0x15f9, 0xffff, 0x164b, 0x16a2, + 0x16f9, 0x173e, 0xffff, 0xffff, 0xffff, 0x17a4, 0x17fb, 0x1837, + 0xffff, 0xffff, 0x1893, 0x192d, 0x197b, 0x19c0, 0xffff, 0xffff, + // Entry 4E040 - 4E07F + 0x1a2e, 0x1a6a, 0x1a9d, 0xffff, 0x1af2, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1c0b, 0x1c47, 0x1c83, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1d41, 0xffff, 0xffff, 0x1d9a, + 0xffff, 0x1dda, 0xffff, 0x1e38, 0x1e74, 0x1ecb, 0xffff, 0x1f23, + 0x1f5f, 0xffff, 0xffff, 0xffff, 0x1fec, 0x2031, 0xffff, 0xffff, + 0x03b7, 0x04c6, 0x06e5, 0x0721, 0xffff, 0xffff, 0x1522, 0x1b9d, + 0x009e, 0x006f, 0x03f3, 0x0403, 0x0416, 0x0429, 0x044f, 0x0494, + 0x051b, 0x055a, 0x059f, 0x05e4, 0x062c, 0x0677, 0x06b9, 0x0776, + // Entry 4E080 - 4E0BF + 0x07b2, 0x07f4, 0x083f, 0x0881, 0x08c6, 0x0920, 0x097d, 0x09d4, + 0x0a25, 0x0a6d, 0x0ab5, 0x0ae1, 0x0aee, 0x0b1a, 0x0b4c, 0x0b75, + 0x0bae, 0x0bcb, 0x0bfe, 0x0c31, 0x0c67, 0x0c93, 0x0ca3, 0x0ccc, + 0x0d11, 0x0d50, 0x0d76, 0x0d86, 0x0d9f, 0x0dc2, 0x0df4, 0x0e1a, + 0x0e4d, 0x0e73, 0x0e93, 0x0ecf, 0x0f14, 0x0f3a, 0x0f56, 0x0f78, + 0x0f8e, 0x0fb1, 0x0fe3, 0x0ffc, 0x102e, 0x1085, 0x10d0, 0x10e3, + 0x110d, 0x115a, 0x1190, 0x11bc, 0x11c9, 0x11d9, 0x11ec, 0x1208, + 0x1224, 0x124d, 0x1289, 0x12d1, 0x130a, 0x135c, 0x13c0, 0x13dc, + // Entry 4E0C0 - 4E0FF + 0x1405, 0x142b, 0x145a, 0x14a4, 0x14ca, 0x14f0, 0x1555, 0x1578, + 0x15a4, 0x15b7, 0x15ca, 0x15e3, 0x160c, 0x163e, 0x1664, 0x16bb, + 0x170c, 0x174e, 0x177a, 0x1787, 0x1794, 0x17bd, 0x180b, 0x1847, + 0x1873, 0x1880, 0x18b9, 0x1943, 0x198e, 0x19d3, 0x1a05, 0x1a12, + 0x1a3e, 0x1a77, 0x1aad, 0x1ad9, 0x1b17, 0x1b6d, 0x1b80, 0x1b90, + 0x1beb, 0x1bfb, 0x1c1b, 0x1c57, 0x1c93, 0x1cbf, 0x1ccf, 0x1ce5, + 0x1cfb, 0x1d11, 0x1d21, 0x1d2e, 0x1d4e, 0x1d74, 0x1d8a, 0x1da7, + 0x1dcd, 0x1df0, 0x1e28, 0x1e48, 0x1e8d, 0x1ede, 0x1f10, 0x1f33, + // Entry 4E100 - 4E13F + 0x1f75, 0x1fad, 0x1fc0, 0x1fd0, 0x1fff, 0x2047, 0x10c3, 0x1911, + 0x03c7, 0x04d9, 0x06f5, 0x0734, 0x0ba1, 0x14bd, 0x152f, 0x1bb3, + 0x009e, 0x006f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0468, 0x04ad, + 0x0531, 0x0573, 0x05b8, 0x05fd, 0x0648, 0x0690, 0x06cf, 0x078c, + 0x07c8, 0x0810, 0x0858, 0x0897, 0x08e5, 0x0942, 0x099c, 0x09f3, + 0x0a3e, 0x0a89, 0x0acb, 0xffff, 0xffff, 0x0b33, 0xffff, 0x0b8b, + 0xffff, 0x0bde, 0x0c11, 0x0c44, 0x0c7d, 0xffff, 0xffff, 0x0ce5, + 0x0d2a, 0x0d63, 0xffff, 0xffff, 0xffff, 0x0ddb, 0xffff, 0x0e2d, + // Entry 4E140 - 4E17F + 0x0e60, 0xffff, 0x0ea6, 0x0eeb, 0x0f27, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0fca, 0xffff, 0xffff, 0x104d, 0x10a4, 0xffff, 0xffff, + 0x112d, 0x116d, 0x11a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x1260, 0x12a5, 0x12e7, 0x131d, 0x138e, 0xffff, 0xffff, + 0x1418, 0xffff, 0x147f, 0xffff, 0xffff, 0x1509, 0xffff, 0x158e, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1625, 0xffff, 0x1683, 0x16da, + 0x1725, 0x1764, 0xffff, 0xffff, 0xffff, 0x17dc, 0x1821, 0x185d, + 0xffff, 0xffff, 0x18e5, 0x195f, 0x19a7, 0x19ec, 0xffff, 0xffff, + // Entry 4E180 - 4E1BF + 0x1a54, 0x1a8a, 0x1ac3, 0xffff, 0x1b42, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x1c31, 0x1c6d, 0x1ca9, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x1d61, 0xffff, 0xffff, 0x1dba, + 0xffff, 0x1e0c, 0xffff, 0x1e5e, 0x1eac, 0x1ef7, 0xffff, 0x1f49, + 0x1f91, 0xffff, 0xffff, 0xffff, 0x2018, 0x2063, 0xffff, 0xffff, + 0x03dd, 0x04f2, 0x070b, 0x074d, 0xffff, 0xffff, 0x1542, 0x1bcf, + 0x0002, 0x0003, 0x007d, 0x0012, 0x0016, 0x0024, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0039, 0x0047, 0x0000, 0x0000, 0x0055, 0x0000, + // Entry 4E1C0 - 4E1FF + 0x0000, 0x0000, 0x0000, 0x0061, 0x0000, 0x006f, 0x0008, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x001f, 0x0000, 0x9006, 0x0001, + 0x0021, 0x0001, 0x0070, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x002b, 0x0004, 0x0000, 0x0033, 0x0030, 0x0036, + 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, + 0x0389, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0042, + 0x0000, 0x0000, 0x0001, 0x0044, 0x0001, 0x0070, 0x0008, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0050, 0x0000, 0x0000, + // Entry 4E200 - 4E23F + 0x0001, 0x0052, 0x0001, 0x0000, 0x237b, 0x0006, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x005c, 0x0001, 0x005e, 0x0001, 0x0070, + 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x006a, + 0x0000, 0x9006, 0x0001, 0x006c, 0x0001, 0x0070, 0x0000, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0078, 0x0000, 0x9006, + 0x0001, 0x007a, 0x0001, 0x0070, 0x0000, 0x003d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4E240 - 4E27F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00bb, 0x0003, 0x0000, 0x0000, 0x00bf, 0x0002, + 0x00c2, 0x00c5, 0x0001, 0x006f, 0x0343, 0x0001, 0x0035, 0x1935, + 0x0002, 0x0003, 0x0061, 0x0012, 0x0000, 0x0016, 0x0000, 0x0000, + // Entry 4E280 - 4E2BF + 0x0000, 0x0000, 0x002b, 0x0039, 0x0000, 0x0000, 0x0047, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0053, 0x0006, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0004, 0x0000, 0x0025, + 0x0022, 0x0028, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, + 0x0001, 0x0035, 0x0389, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0034, 0x0000, 0x0000, 0x0001, 0x0036, 0x0001, 0x0070, + 0x0008, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0042, + 0x0000, 0x0000, 0x0001, 0x0044, 0x0001, 0x0000, 0x237b, 0x0006, + // Entry 4E2C0 - 4E2FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x004e, 0x0001, 0x0050, + 0x0001, 0x0070, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x005c, 0x0000, 0x9006, 0x0001, 0x005e, 0x0001, 0x0070, + 0x0000, 0x003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4E300 - 4E33F + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009f, 0x0003, + 0x0000, 0x0000, 0x00a3, 0x0002, 0x00a6, 0x00a9, 0x0001, 0x006f, + 0x0343, 0x0001, 0x0035, 0x1935, 0x0003, 0x0004, 0x007c, 0x00c7, + 0x0012, 0x0017, 0x0023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0038, + 0x0046, 0x0000, 0x0000, 0x0054, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0060, 0x0000, 0x006e, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4E340 - 4E37F + 0x0000, 0x001e, 0x0001, 0x0020, 0x0001, 0x0070, 0x0000, 0x0006, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0004, 0x0000, + 0x0032, 0x002f, 0x0035, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, + 0x0389, 0x0001, 0x0035, 0x0389, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0041, 0x0000, 0x0000, 0x0001, 0x0043, 0x0001, + 0x0070, 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x004f, 0x0000, 0x0000, 0x0001, 0x0051, 0x0001, 0x0014, 0x146e, + 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x0001, + // Entry 4E380 - 4E3BF + 0x005d, 0x0001, 0x0070, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0069, 0x0000, 0x9006, 0x0001, 0x006b, 0x0001, + 0x0070, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0077, 0x0000, 0x9006, 0x0001, 0x0079, 0x0001, 0x0070, 0x0000, + 0x003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + // Entry 4E3C0 - 4E3FF + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ba, 0x0003, 0x0000, + 0x0000, 0x00be, 0x0002, 0x00c1, 0x00c4, 0x0001, 0x006f, 0x0343, + 0x0001, 0x0035, 0x1935, 0x0004, 0x0000, 0x0000, 0x0000, 0x00cc, + 0x0001, 0x00ce, 0x0003, 0x0000, 0x0000, 0x00d2, 0x007d, 0x001e, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4E400 - 4E43F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4E440 - 4E47F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2038, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x203c, 0x0003, 0x0004, 0x08cc, + 0x0c58, 0x0012, 0x0017, 0x0038, 0x015b, 0x01c8, 0x02b9, 0x0000, + // Entry 4E480 - 4E4BF + 0x0326, 0x0351, 0x0592, 0x061c, 0x068e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0714, 0x0831, 0x08aa, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, + 0x0024, 0x0001, 0x006d, 0x128e, 0x0004, 0x0035, 0x002f, 0x002c, + 0x0032, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, + 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x000a, 0x0043, 0x0000, + 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x00a8, 0x00bb, + 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, + // Entry 4E4C0 - 4E4FF + 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, + 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x000d, 0x0035, + 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, + 0x00ac, 0x00b0, 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, 0xffff, + 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, 0x3e4a, + 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x0003, 0x007b, 0x008a, 0x0099, + 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, + 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x000d, + // Entry 4E500 - 4E53F + 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, + 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, + 0x3e4a, 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x0003, 0x00ac, 0x00b7, + 0x00b1, 0x0003, 0x0035, 0xffff, 0xffff, 0x00c6, 0x0004, 0x0035, + 0xffff, 0xffff, 0xffff, 0x00c6, 0x0002, 0x0035, 0xffff, 0x00c6, + 0x0006, 0x00c2, 0x0000, 0x0000, 0x00d5, 0x00f4, 0x0137, 0x0001, + 0x00c4, 0x0001, 0x00c6, 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, + // Entry 4E540 - 4E57F + 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, + 0x00f5, 0x00f9, 0x0001, 0x00d7, 0x0001, 0x00d9, 0x0019, 0x0035, + 0xffff, 0x00fd, 0x0104, 0x3b0d, 0x0112, 0x0119, 0x0120, 0x0127, + 0x3b14, 0x0135, 0x013c, 0x0143, 0x014a, 0x0151, 0x3b1b, 0x015f, + 0x0166, 0x016d, 0x0174, 0x017b, 0x0182, 0x0189, 0x0190, 0x0197, + 0x019e, 0x0001, 0x00f6, 0x0001, 0x00f8, 0x003d, 0x0035, 0xffff, + 0x01a5, 0x01ac, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, + 0x01dd, 0x01e4, 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, + // Entry 4E580 - 4E5BF + 0x0215, 0x021c, 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, + 0x024d, 0x0254, 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, + 0x0285, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, + 0x02bd, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, + 0x02f5, 0x02fc, 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, + 0x032d, 0x0334, 0x033b, 0x0342, 0x0001, 0x0139, 0x0001, 0x013b, + 0x000d, 0x0035, 0xffff, 0x0349, 0x034d, 0x0351, 0x3b22, 0x3b26, + 0x035d, 0x0361, 0x0365, 0x3b2a, 0x3b2e, 0x3b32, 0x3b36, 0x0004, + // Entry 4E5C0 - 4E5FF + 0x0158, 0x0152, 0x014f, 0x0155, 0x0001, 0x0070, 0x0022, 0x0001, + 0x006e, 0x0023, 0x0001, 0x006d, 0x12b5, 0x0001, 0x006d, 0x12be, + 0x0001, 0x015d, 0x0002, 0x0160, 0x0194, 0x0003, 0x0164, 0x0174, + 0x0184, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + // Entry 4E600 - 4E63F + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x3b3a, 0x0003, 0x0198, 0x01a8, 0x01b8, 0x000e, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, + 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000a, 0x01d3, 0x0000, + // Entry 4E640 - 4E67F + 0x0000, 0x0000, 0x0000, 0x02a8, 0x0000, 0x0000, 0x0000, 0x0238, + 0x0002, 0x01d6, 0x0207, 0x0003, 0x01da, 0x01e9, 0x01f8, 0x000d, + 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, + 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x000d, 0x0035, + 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, + 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, 0xffff, + 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, 0x3e4a, + 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0003, 0x020b, 0x021a, 0x0229, + // Entry 4E680 - 4E6BF + 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, + 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x000d, + 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, + 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, + 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0006, 0x023f, 0x0000, + 0x0000, 0x0000, 0x0252, 0x0295, 0x0001, 0x0241, 0x0001, 0x0243, + 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, 0x00dd, + // Entry 4E6C0 - 4E6FF + 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, 0x0001, + 0x0254, 0x0001, 0x0256, 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, + 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, + 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, + 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, + 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, + 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, + 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, + // Entry 4E700 - 4E73F + 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, + 0x033b, 0x0342, 0x0001, 0x0297, 0x0001, 0x0299, 0x000d, 0x0035, + 0xffff, 0x0349, 0x034d, 0x0351, 0x3b22, 0x3b26, 0x035d, 0x0361, + 0x0365, 0x3b2a, 0x3b2e, 0x3b32, 0x3b36, 0x0004, 0x02b6, 0x02b0, + 0x02ad, 0x02b3, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, + 0x0001, 0x0035, 0x0389, 0x0001, 0x006d, 0x12c4, 0x0001, 0x02bb, + 0x0002, 0x02be, 0x02f2, 0x0003, 0x02c2, 0x02d2, 0x02e2, 0x000e, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + // Entry 4E740 - 4E77F + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, + 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x0003, + 0x02f6, 0x0306, 0x0316, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, + // Entry 4E780 - 4E7BF + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + 0x053d, 0x0543, 0x3b3a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x032f, 0x0000, 0x0340, 0x0004, 0x033d, 0x0337, 0x0334, + 0x033a, 0x0001, 0x006d, 0x12ca, 0x0001, 0x006d, 0x12de, 0x0001, + 0x006d, 0x12de, 0x0001, 0x006d, 0x12ed, 0x0004, 0x034e, 0x0348, + 0x0345, 0x034b, 0x0001, 0x006d, 0x12f5, 0x0001, 0x0000, 0x03c6, + // Entry 4E7C0 - 4E7FF + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x035a, + 0x03bf, 0x0416, 0x044b, 0x053a, 0x055f, 0x0570, 0x0581, 0x0002, + 0x035d, 0x038e, 0x0003, 0x0361, 0x0370, 0x037f, 0x000d, 0x0035, + 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, + 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, + 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, + 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, + // Entry 4E800 - 4E83F + 0x0537, 0x053d, 0x0543, 0x0003, 0x0392, 0x03a1, 0x03b0, 0x000d, + 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, + 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, + 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, + 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, + 0x0532, 0x0537, 0x053d, 0x0543, 0x0002, 0x03c2, 0x03ec, 0x0005, + 0x03c8, 0x03d1, 0x03e3, 0x0000, 0x03da, 0x0007, 0x006d, 0x12fc, + // Entry 4E840 - 4E87F + 0x1303, 0x130a, 0x1311, 0x1318, 0x131f, 0x1326, 0x0007, 0x0035, + 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, + 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, 0x135f, + 0x1369, 0x0005, 0x03f2, 0x03fb, 0x040d, 0x0000, 0x0404, 0x0007, + 0x006d, 0x12fc, 0x1303, 0x130a, 0x1311, 0x1318, 0x131f, 0x1326, + 0x0007, 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, + 0x00a4, 0x0007, 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, + // Entry 4E880 - 4E8BF + 0x00a0, 0x00a4, 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, + 0x1355, 0x135f, 0x1369, 0x0002, 0x0419, 0x0432, 0x0003, 0x041d, + 0x0424, 0x042b, 0x0005, 0x0070, 0xffff, 0x0031, 0x0036, 0x003b, + 0x0040, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, + 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0003, + 0x0436, 0x043d, 0x0444, 0x0005, 0x0070, 0xffff, 0x0031, 0x0036, + 0x003b, 0x0040, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, + // Entry 4E8C0 - 4E8FF + 0x0002, 0x044e, 0x04c4, 0x0003, 0x0452, 0x0478, 0x049e, 0x000a, + 0x0460, 0x0463, 0x045d, 0x0466, 0x046c, 0x0472, 0x0475, 0x0000, + 0x0469, 0x046f, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, + 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, + 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, + 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x0486, 0x0489, + 0x0483, 0x048c, 0x0492, 0x0498, 0x049b, 0x0000, 0x048f, 0x0495, + 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, + // Entry 4E900 - 4E93F + 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, + 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, + 0x0001, 0x006d, 0x13cb, 0x000a, 0x04ac, 0x04af, 0x04a9, 0x04b2, + 0x04b8, 0x04be, 0x04c1, 0x0000, 0x04b5, 0x04bb, 0x0001, 0x006d, + 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, + 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, + 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, + 0x13cb, 0x0003, 0x04c8, 0x04ee, 0x0514, 0x000a, 0x04d6, 0x04d9, + // Entry 4E940 - 4E97F + 0x04d3, 0x04dc, 0x04e2, 0x04e8, 0x04eb, 0x0000, 0x04df, 0x04e5, + 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, + 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, + 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, + 0x0001, 0x006d, 0x13cb, 0x000a, 0x04fc, 0x04ff, 0x04f9, 0x0502, + 0x0508, 0x050e, 0x0511, 0x0000, 0x0505, 0x050b, 0x0001, 0x006d, + 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, + 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, + // Entry 4E980 - 4E9BF + 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, + 0x13cb, 0x000a, 0x0522, 0x0525, 0x051f, 0x0528, 0x052e, 0x0534, + 0x0537, 0x0000, 0x052b, 0x0531, 0x0001, 0x006d, 0x1393, 0x0001, + 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, + 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, + 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, 0x0003, + 0x0549, 0x0554, 0x053e, 0x0002, 0x0541, 0x0545, 0x0002, 0x006d, + 0x13d2, 0x13e6, 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0002, 0x054c, + // Entry 4E9C0 - 4E9FF + 0x0550, 0x0002, 0x006d, 0x13d2, 0x13e6, 0x0002, 0x006d, 0x13dc, + 0x13ed, 0x0002, 0x0557, 0x055b, 0x0002, 0x006d, 0x13d2, 0x13e6, + 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0004, 0x056d, 0x0567, 0x0564, + 0x056a, 0x0001, 0x006d, 0x13f4, 0x0001, 0x0035, 0x065b, 0x0001, + 0x0035, 0x065b, 0x0001, 0x0021, 0x05f2, 0x0004, 0x057e, 0x0578, + 0x0575, 0x057b, 0x0001, 0x006d, 0x1406, 0x0001, 0x006d, 0x1416, + 0x0001, 0x006d, 0x1423, 0x0001, 0x006d, 0x142c, 0x0004, 0x058f, + 0x0589, 0x0586, 0x058c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + // Entry 4EA00 - 4EA3F + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, + 0x0599, 0x0000, 0x0000, 0x0000, 0x0604, 0x060b, 0x0002, 0x059c, + 0x05d0, 0x0003, 0x05a0, 0x05b0, 0x05c0, 0x000e, 0x006d, 0x1486, + 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, + 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x000e, 0x0000, 0x41bc, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, + 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006d, 0x1486, + 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, + // Entry 4EA40 - 4EA7F + 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x0003, 0x05d4, 0x05e4, + 0x05f4, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, + 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, + 0x14c8, 0x000e, 0x0000, 0x41bc, 0x0033, 0x0035, 0x0037, 0x2335, + 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, + 0x41f1, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, + 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, + 0x14c8, 0x0001, 0x0606, 0x0001, 0x0608, 0x0001, 0x006d, 0x14d2, + // Entry 4EA80 - 4EABF + 0x0004, 0x0619, 0x0613, 0x0610, 0x0616, 0x0001, 0x0035, 0x0719, + 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, + 0x0503, 0x0005, 0x0622, 0x0000, 0x0000, 0x0000, 0x0687, 0x0002, + 0x0625, 0x0656, 0x0003, 0x0629, 0x0638, 0x0647, 0x000d, 0x006d, + 0xffff, 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, + 0x1546, 0x1556, 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, 0xffff, + 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, + 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x14df, + // Entry 4EAC0 - 4EAFF + 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, + 0x1566, 0x1570, 0x157a, 0x0003, 0x065a, 0x0669, 0x0678, 0x000d, + 0x006d, 0xffff, 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, + 0x1533, 0x1546, 0x1556, 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, + 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, + 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, + 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, + 0x1556, 0x1566, 0x1570, 0x157a, 0x0001, 0x0689, 0x0001, 0x068b, + // Entry 4EB00 - 4EB3F + 0x0001, 0x006d, 0x158a, 0x0008, 0x0697, 0x0000, 0x0000, 0x0000, + 0x06fc, 0x0703, 0x0000, 0x9006, 0x0002, 0x069a, 0x06cb, 0x0003, + 0x069e, 0x06ad, 0x06bc, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, + 0x15b1, 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, + 0x161d, 0x1630, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, + 0x41c4, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, + 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, + // Entry 4EB40 - 4EB7F + 0x0003, 0x06cf, 0x06de, 0x06ed, 0x000d, 0x006d, 0xffff, 0x1594, + 0x15a4, 0x15b1, 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, + 0x1610, 0x161d, 0x1630, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, + 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, + 0x1630, 0x0001, 0x06fe, 0x0001, 0x0700, 0x0001, 0x006d, 0x1640, + 0x0004, 0x0711, 0x070b, 0x0708, 0x070e, 0x0001, 0x0035, 0x0719, + // Entry 4EB80 - 4EBBF + 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, + 0x0503, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x071d, 0x080f, + 0x0000, 0x0820, 0x0001, 0x071f, 0x0001, 0x0721, 0x00ec, 0x0035, + 0x08e5, 0x08ec, 0x3b44, 0x08fa, 0x3b4b, 0x0908, 0x090f, 0x3b52, + 0x091d, 0x3b59, 0x092b, 0x3b60, 0x3b6d, 0x3b7a, 0x0959, 0x0966, + 0x3b87, 0x3b8e, 0x3b95, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, + 0x3b9c, 0x3ba3, 0x09b9, 0x3baa, 0x09c7, 0x09ce, 0x3bb1, 0x09dc, + 0x09e3, 0x09ea, 0x09f1, 0x09f8, 0x3bb8, 0x3bbf, 0x3bc6, 0x0a14, + // Entry 4EBC0 - 4EBFF + 0x0a1b, 0x3bcd, 0x0a29, 0x0a30, 0x0a37, 0x3bd4, 0x3bdb, 0x0a4c, + 0x0a53, 0x3be2, 0x3be9, 0x0a68, 0x3bf0, 0x0a76, 0x3bf7, 0x0a84, + 0x3bfe, 0x0a92, 0x3c05, 0x0aa0, 0x3c0c, 0x0aae, 0x0ab5, 0x0abc, + 0x3c13, 0x0aca, 0x0ad1, 0x3c1a, 0x0adf, 0x3c21, 0x3c28, 0x0af4, + 0x0afb, 0x3c2f, 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, + 0x0b33, 0x0b3a, 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, + 0x0b6b, 0x0b72, 0x0b79, 0x0b80, 0x3c36, 0x0b8e, 0x0b95, 0x3c3d, + 0x3c44, 0x3c4b, 0x3c52, 0x0bb8, 0x3c59, 0x0bc6, 0x0bcd, 0x0bd4, + // Entry 4EC00 - 4EC3F + 0x0bdb, 0x3c60, 0x3c67, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, + 0x0c13, 0x0c1a, 0x3c6e, 0x0c28, 0x0c2f, 0x3c75, 0x0c3d, 0x3c7c, + 0x0c4b, 0x3c83, 0x0c59, 0x0c60, 0x3c8a, 0x0c6e, 0x3c91, 0x3c98, + 0x0c83, 0x3c9f, 0x3ca6, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x3cad, + 0x0cbb, 0x0cc2, 0x0cc9, 0x0cd0, 0x3cb4, 0x0cde, 0x0ce5, 0x0cec, + 0x0cf3, 0x3cbb, 0x0d01, 0x3cc2, 0x0d0f, 0x0d16, 0x3cc9, 0x0d24, + 0x0d2b, 0x3cd0, 0x3cd7, 0x0d40, 0x0d47, 0x0d4e, 0x3cde, 0x0d5c, + 0x3ce5, 0x0d6a, 0x0d71, 0x3cec, 0x0d7f, 0x0d86, 0x3cf3, 0x0d94, + // Entry 4EC40 - 4EC7F + 0x3cfa, 0x3d01, 0x3d08, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x3d0f, + 0x3d16, 0x0dda, 0x3d1d, 0x3d24, 0x0def, 0x3d2b, 0x0dfd, 0x0e04, + 0x3d32, 0x3d39, 0x3d40, 0x0e20, 0x0e27, 0x3d47, 0x0e35, 0x0e3c, + 0x3d4e, 0x3d55, 0x0e51, 0x3d5c, 0x0e5f, 0x0e66, 0x3d63, 0x0e74, + 0x0e7b, 0x3d6a, 0x3d71, 0x3d78, 0x3d7f, 0x3d86, 0x0ea5, 0x0eac, + 0x3d8d, 0x3d94, 0x3d9b, 0x0ec8, 0x0ecf, 0x3da2, 0x0edd, 0x3da9, + 0x3db0, 0x0ef2, 0x0ef9, 0x0f00, 0x3db7, 0x0f0e, 0x0f15, 0x0f1c, + 0x0f23, 0x0f2a, 0x0f31, 0x0f38, 0x3dbe, 0x0f46, 0x0f4d, 0x3dc5, + // Entry 4EC80 - 4ECBF + 0x3e73, 0x3e7a, 0x3e81, 0x3e88, 0x0004, 0x081d, 0x0817, 0x0814, + 0x081a, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, + 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0004, 0x082e, 0x0828, + 0x0825, 0x082b, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0837, + 0x0000, 0x0000, 0x0000, 0x089c, 0x0002, 0x083a, 0x086b, 0x0003, + 0x083e, 0x084d, 0x085c, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, + 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, + // Entry 4ECC0 - 4ECFF + 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, + 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, + 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, + 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, + 0x0003, 0x086f, 0x087e, 0x088d, 0x000d, 0x0035, 0xffff, 0x050a, + 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, + 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, + 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, + // Entry 4ED00 - 4ED3F + 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, + 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, + 0x0543, 0x0003, 0x08a5, 0x0000, 0x08a0, 0x0001, 0x08a2, 0x0001, + 0x006d, 0x164d, 0x0001, 0x08a7, 0x0001, 0x006d, 0x164d, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x08b3, 0x08bb, 0x0000, 0x9006, + 0x0001, 0x08b5, 0x0001, 0x08b7, 0x0002, 0x006d, 0x1657, 0x1661, + 0x0004, 0x08c9, 0x08c3, 0x08c0, 0x08c6, 0x0001, 0x006d, 0x1668, + 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, + // Entry 4ED40 - 4ED7F + 0x0503, 0x0040, 0x090d, 0x0000, 0x0000, 0x0912, 0x0927, 0x0937, + 0x0947, 0x095c, 0x0971, 0x0986, 0x099b, 0x09ab, 0x09bb, 0x09d4, + 0x09e8, 0x0000, 0x0000, 0x0000, 0x09fc, 0x0a13, 0x0a23, 0x0000, + 0x0000, 0x0000, 0x0a33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0a38, 0x0a4a, 0x0a5c, 0x0a6e, 0x0a80, 0x0a92, 0x0aa4, 0x0ab6, + 0x0ac8, 0x0ada, 0x0aec, 0x0afe, 0x0b10, 0x0b22, 0x0b34, 0x0b46, + 0x0b58, 0x0b6a, 0x0b7c, 0x0b8e, 0x0ba0, 0x0000, 0x0bb2, 0x0000, + 0x0bb7, 0x0bcb, 0x0bdb, 0x0beb, 0x0bff, 0x0c0f, 0x0c1f, 0x0c33, + // Entry 4ED80 - 4EDBF + 0x0c43, 0x0c53, 0x0001, 0x090f, 0x0001, 0x006d, 0x167b, 0x0003, + 0x0916, 0x0919, 0x091e, 0x0001, 0x0035, 0x1074, 0x0003, 0x006f, + 0x0023, 0x002a, 0x0031, 0x0002, 0x0921, 0x0924, 0x0001, 0x0035, + 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x092b, 0x0000, 0x092e, + 0x0001, 0x0035, 0x1074, 0x0002, 0x0931, 0x0934, 0x0001, 0x0035, + 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x093b, 0x0000, 0x093e, + 0x0001, 0x0035, 0x1074, 0x0002, 0x0941, 0x0944, 0x0001, 0x0035, + 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x094b, 0x094e, 0x0953, + // Entry 4EDC0 - 4EDFF + 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, 0x169b, 0x360d, 0x16ac, + 0x0002, 0x0956, 0x0959, 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, + 0x16c1, 0x0003, 0x0960, 0x0963, 0x0968, 0x0001, 0x006d, 0x1697, + 0x0003, 0x006d, 0x169b, 0x360d, 0x16ac, 0x0002, 0x096b, 0x096e, + 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, 0x16c1, 0x0003, 0x0975, + 0x0978, 0x097d, 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, 0x169b, + 0x360d, 0x16ac, 0x0002, 0x0980, 0x0983, 0x0001, 0x006d, 0x16b6, + 0x0001, 0x006d, 0x16c1, 0x0003, 0x098a, 0x098d, 0x0992, 0x0001, + // Entry 4EE00 - 4EE3F + 0x0035, 0x054d, 0x0003, 0x006d, 0x16da, 0x3617, 0x16ee, 0x0002, + 0x0995, 0x0998, 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, + 0x0003, 0x099f, 0x0000, 0x09a2, 0x0001, 0x0035, 0x054d, 0x0002, + 0x09a5, 0x09a8, 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, + 0x0003, 0x09af, 0x0000, 0x09b2, 0x0001, 0x0035, 0x054d, 0x0002, + 0x09b5, 0x09b8, 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, + 0x0004, 0x09c0, 0x09c3, 0x09c8, 0x09d1, 0x0001, 0x0035, 0x1175, + 0x0003, 0x0070, 0x0045, 0x004c, 0x0053, 0x0002, 0x09cb, 0x09ce, + // Entry 4EE40 - 4EE7F + 0x0001, 0x0070, 0x005a, 0x0001, 0x0070, 0x0065, 0x0001, 0x0070, + 0x0070, 0x0004, 0x09d9, 0x0000, 0x09dc, 0x09e5, 0x0001, 0x0035, + 0x1175, 0x0002, 0x09df, 0x09e2, 0x0001, 0x0070, 0x005a, 0x0001, + 0x0070, 0x0065, 0x0001, 0x0070, 0x0070, 0x0004, 0x09ed, 0x0000, + 0x09f0, 0x09f9, 0x0001, 0x0035, 0x1175, 0x0002, 0x09f3, 0x09f6, + 0x0001, 0x0070, 0x005a, 0x0001, 0x0070, 0x0065, 0x0001, 0x0070, + 0x0070, 0x0003, 0x0a00, 0x0a03, 0x0a0a, 0x0001, 0x0035, 0x0549, + 0x0005, 0x006d, 0x35f1, 0x35f8, 0x35ff, 0x1764, 0x1780, 0x0002, + // Entry 4EE80 - 4EEBF + 0x0a0d, 0x0a10, 0x0001, 0x0070, 0x007b, 0x0001, 0x0070, 0x0086, + 0x0003, 0x0a17, 0x0000, 0x0a1a, 0x0001, 0x0035, 0x0549, 0x0002, + 0x0a1d, 0x0a20, 0x0001, 0x0070, 0x007b, 0x0001, 0x0070, 0x0086, + 0x0003, 0x0a27, 0x0000, 0x0a2a, 0x0001, 0x0035, 0x0549, 0x0002, + 0x0a2d, 0x0a30, 0x0001, 0x0070, 0x007b, 0x0001, 0x0070, 0x0086, + 0x0001, 0x0a35, 0x0001, 0x006d, 0x1787, 0x0003, 0x0000, 0x0a3c, + 0x0a41, 0x0003, 0x0070, 0x0091, 0x009b, 0x00a5, 0x0002, 0x0a44, + 0x0a47, 0x0001, 0x0070, 0x00af, 0x0001, 0x0070, 0x00c0, 0x0003, + // Entry 4EEC0 - 4EEFF + 0x0000, 0x0a4e, 0x0a53, 0x0003, 0x0070, 0x0091, 0x009b, 0x00a5, + 0x0002, 0x0a56, 0x0a59, 0x0001, 0x0070, 0x00af, 0x0001, 0x0070, + 0x00c0, 0x0003, 0x0000, 0x0a60, 0x0a65, 0x0003, 0x0070, 0x0091, + 0x009b, 0x00a5, 0x0002, 0x0a68, 0x0a6b, 0x0001, 0x0070, 0x00af, + 0x0001, 0x0070, 0x00c0, 0x0003, 0x0000, 0x0a72, 0x0a77, 0x0003, + 0x0070, 0x00d1, 0x00db, 0x00e5, 0x0002, 0x0a7a, 0x0a7d, 0x0001, + 0x0070, 0x00ef, 0x0001, 0x0070, 0x0100, 0x0003, 0x0000, 0x0a84, + 0x0a89, 0x0003, 0x0070, 0x00d1, 0x00db, 0x00e5, 0x0002, 0x0a8c, + // Entry 4EF00 - 4EF3F + 0x0a8f, 0x0001, 0x0070, 0x00ef, 0x0001, 0x0070, 0x0100, 0x0003, + 0x0000, 0x0a96, 0x0a9b, 0x0003, 0x0070, 0x00d1, 0x00db, 0x00e5, + 0x0002, 0x0a9e, 0x0aa1, 0x0001, 0x0070, 0x00ef, 0x0001, 0x0070, + 0x0100, 0x0003, 0x0000, 0x0aa8, 0x0aad, 0x0003, 0x0070, 0x0111, + 0x011b, 0x0125, 0x0002, 0x0ab0, 0x0ab3, 0x0001, 0x0070, 0x012f, + 0x0001, 0x0070, 0x0140, 0x0003, 0x0000, 0x0aba, 0x0abf, 0x0003, + 0x0070, 0x0111, 0x011b, 0x0125, 0x0002, 0x0ac2, 0x0ac5, 0x0001, + 0x0070, 0x012f, 0x0001, 0x0070, 0x0140, 0x0003, 0x0000, 0x0acc, + // Entry 4EF40 - 4EF7F + 0x0ad1, 0x0003, 0x0070, 0x0111, 0x011b, 0x0125, 0x0002, 0x0ad4, + 0x0ad7, 0x0001, 0x0070, 0x012f, 0x0001, 0x0070, 0x0140, 0x0003, + 0x0000, 0x0ade, 0x0ae3, 0x0003, 0x0070, 0x0151, 0x015b, 0x0165, + 0x0002, 0x0ae6, 0x0ae9, 0x0001, 0x0070, 0x016f, 0x0001, 0x0070, + 0x0180, 0x0003, 0x0000, 0x0af0, 0x0af5, 0x0003, 0x0070, 0x0151, + 0x015b, 0x0165, 0x0002, 0x0af8, 0x0afb, 0x0001, 0x0070, 0x016f, + 0x0001, 0x0070, 0x0180, 0x0003, 0x0000, 0x0b02, 0x0b07, 0x0003, + 0x0070, 0x0151, 0x015b, 0x0165, 0x0002, 0x0b0a, 0x0b0d, 0x0001, + // Entry 4EF80 - 4EFBF + 0x0070, 0x016f, 0x0001, 0x0070, 0x0180, 0x0003, 0x0000, 0x0b14, + 0x0b19, 0x0003, 0x0070, 0x0191, 0x019b, 0x01a5, 0x0002, 0x0b1c, + 0x0b1f, 0x0001, 0x0070, 0x01af, 0x0001, 0x0070, 0x01c0, 0x0003, + 0x0000, 0x0b26, 0x0b2b, 0x0003, 0x0070, 0x0191, 0x019b, 0x01a5, + 0x0002, 0x0b2e, 0x0b31, 0x0001, 0x0070, 0x01af, 0x0001, 0x0070, + 0x01c0, 0x0003, 0x0000, 0x0b38, 0x0b3d, 0x0003, 0x0070, 0x0191, + 0x019b, 0x01a5, 0x0002, 0x0b40, 0x0b43, 0x0001, 0x0070, 0x01af, + 0x0001, 0x0070, 0x01c0, 0x0003, 0x0000, 0x0b4a, 0x0b4f, 0x0003, + // Entry 4EFC0 - 4EFFF + 0x0070, 0x01d1, 0x01db, 0x01e5, 0x0002, 0x0b52, 0x0b55, 0x0001, + 0x0070, 0x01ef, 0x0001, 0x0070, 0x0200, 0x0003, 0x0000, 0x0b5c, + 0x0b61, 0x0003, 0x0070, 0x01d1, 0x01db, 0x01e5, 0x0002, 0x0b64, + 0x0b67, 0x0001, 0x0070, 0x01ef, 0x0001, 0x0070, 0x0200, 0x0003, + 0x0000, 0x0b6e, 0x0b73, 0x0003, 0x0070, 0x01d1, 0x01db, 0x01e5, + 0x0002, 0x0b76, 0x0b79, 0x0001, 0x0070, 0x01ef, 0x0001, 0x0070, + 0x0200, 0x0003, 0x0000, 0x0b80, 0x0b85, 0x0003, 0x0070, 0x0211, + 0x021b, 0x0225, 0x0002, 0x0b88, 0x0b8b, 0x0001, 0x0070, 0x022f, + // Entry 4F000 - 4F03F + 0x0001, 0x0070, 0x0240, 0x0003, 0x0000, 0x0b92, 0x0b97, 0x0003, + 0x0070, 0x0211, 0x021b, 0x0225, 0x0002, 0x0b9a, 0x0b9d, 0x0001, + 0x0070, 0x022f, 0x0001, 0x0070, 0x0240, 0x0003, 0x0000, 0x0ba4, + 0x0ba9, 0x0003, 0x0070, 0x0211, 0x021b, 0x0225, 0x0002, 0x0bac, + 0x0baf, 0x0001, 0x0070, 0x022f, 0x0001, 0x0070, 0x0240, 0x0001, + 0x0bb4, 0x0001, 0x006d, 0x19cc, 0x0003, 0x0bbb, 0x0bbe, 0x0bc2, + 0x0001, 0x006d, 0x19da, 0x0002, 0x0070, 0xffff, 0x0251, 0x0002, + 0x0bc5, 0x0bc8, 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, + // Entry 4F040 - 4F07F + 0x0003, 0x0bcf, 0x0000, 0x0bd2, 0x0001, 0x006d, 0x19da, 0x0002, + 0x0bd5, 0x0bd8, 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, + 0x0003, 0x0bdf, 0x0000, 0x0be2, 0x0001, 0x006d, 0x19da, 0x0002, + 0x0be5, 0x0be8, 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, + 0x0003, 0x0bef, 0x0bf2, 0x0bf6, 0x0001, 0x006d, 0x1a0a, 0x0002, + 0x0070, 0xffff, 0x025e, 0x0002, 0x0bf9, 0x0bfc, 0x0001, 0x006d, + 0x1a1b, 0x0001, 0x006d, 0x1a29, 0x0003, 0x0c03, 0x0000, 0x0c06, + 0x0001, 0x006d, 0x1a0a, 0x0002, 0x0c09, 0x0c0c, 0x0001, 0x006d, + // Entry 4F080 - 4F0BF + 0x1a1b, 0x0001, 0x006d, 0x1a29, 0x0003, 0x0c13, 0x0000, 0x0c16, + 0x0001, 0x006d, 0x1a0a, 0x0002, 0x0c19, 0x0c1c, 0x0001, 0x006d, + 0x1a1b, 0x0001, 0x006d, 0x1a29, 0x0003, 0x0c23, 0x0c26, 0x0c2a, + 0x0001, 0x0035, 0x190d, 0x0002, 0x0070, 0xffff, 0x026b, 0x0002, + 0x0c2d, 0x0c30, 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, + 0x0003, 0x0c37, 0x0000, 0x0c3a, 0x0001, 0x0035, 0x190d, 0x0002, + 0x0c3d, 0x0c40, 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, + 0x0003, 0x0c47, 0x0000, 0x0c4a, 0x0001, 0x0035, 0x190d, 0x0002, + // Entry 4F0C0 - 4F0FF + 0x0c4d, 0x0c50, 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, + 0x0001, 0x0c55, 0x0001, 0x006d, 0x1a3e, 0x0004, 0x0c5d, 0x0c62, + 0x0c67, 0x0c76, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, + 0x0035, 0x1952, 0x3dcc, 0x3dd5, 0x0002, 0x0000, 0x0c6a, 0x0003, + 0x0000, 0x0c71, 0x0c6e, 0x0001, 0x0070, 0x0272, 0x0003, 0x006d, + 0xffff, 0x1a45, 0x1a58, 0x0002, 0x0000, 0x0c79, 0x0003, 0x0c7d, + 0x0dbd, 0x0d1d, 0x009e, 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1ade, 0x1b11, 0x1b9b, 0x1bd7, 0x1c0a, 0x1c3d, 0x1c70, 0x1cac, + // Entry 4F100 - 4F13F + 0x1cf1, 0x1dae, 0x1dea, 0x1e26, 0x1e74, 0x1eb9, 0x1ef5, 0x1f3a, + 0x1f88, 0x1fcd, 0x2012, 0x2057, 0x20a5, 0xffff, 0xffff, 0x2101, + 0xffff, 0x2153, 0xffff, 0x21af, 0x21f4, 0x2227, 0x225a, 0xffff, + 0xffff, 0x22bc, 0x2301, 0x2349, 0xffff, 0xffff, 0xffff, 0x23b2, + 0xffff, 0x2407, 0x243a, 0xffff, 0x2480, 0x24b3, 0x2501, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2595, 0xffff, 0xffff, 0x2603, 0x2651, + 0xffff, 0xffff, 0x26de, 0x2738, 0x276b, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2816, 0x2849, 0x2897, 0x28d3, 0x2906, + // Entry 4F140 - 4F17F + 0xffff, 0xffff, 0x29a4, 0xffff, 0x29e7, 0xffff, 0xffff, 0x2a83, + 0xffff, 0x2b0b, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b96, 0xffff, + 0x2be8, 0x2c3f, 0x2c96, 0x2cdb, 0xffff, 0xffff, 0xffff, 0x2d41, + 0x2d9e, 0x2dda, 0xffff, 0xffff, 0x2e39, 0x2ed0, 0x2f1e, 0x2f63, + 0xffff, 0xffff, 0x2fd1, 0x300d, 0x3040, 0xffff, 0x308f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x31a1, 0x31dd, 0x3219, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32d7, 0xffff, + 0xffff, 0x3330, 0xffff, 0x3373, 0xffff, 0x33bf, 0x33fb, 0x3440, + // Entry 4F180 - 4F1BF + 0xffff, 0x348f, 0x34cb, 0xffff, 0xffff, 0xffff, 0x355e, 0x35a3, + 0xffff, 0xffff, 0x1a6e, 0x1b56, 0x1d2d, 0x1d69, 0xffff, 0xffff, + 0x2ac8, 0x312a, 0x009e, 0x006d, 0x1aa1, 0x1ab1, 0x1abe, 0x1acb, + 0x1aeb, 0x1b24, 0x1bab, 0x1be4, 0x1c17, 0x1c4a, 0x1c80, 0x1cbf, + 0x1d01, 0x1dbe, 0x1dfa, 0x1e3c, 0x1e87, 0x1ec9, 0x1f08, 0x1f50, + 0x1f9b, 0x1fe0, 0x2025, 0x206d, 0x20b5, 0x20e1, 0x20ee, 0x2114, + 0x2146, 0x2163, 0x219f, 0x21c2, 0x2201, 0x2234, 0x226a, 0x2296, + 0x22a6, 0x22cf, 0x2314, 0x2356, 0x237c, 0x238c, 0x23a2, 0x23c5, + // Entry 4F1C0 - 4F1FF + 0x23f7, 0x2414, 0x2447, 0x246d, 0x248d, 0x24c9, 0x250e, 0x2534, + 0x254a, 0x2566, 0x257f, 0x25a5, 0x25d1, 0x25ea, 0x2619, 0x2667, + 0x26b2, 0x26ce, 0x26f8, 0x2745, 0x277b, 0x27a7, 0x27ba, 0x27ca, + 0x27dd, 0x27f0, 0x2803, 0x2823, 0x285f, 0x28a7, 0x28e0, 0x2928, + 0x297e, 0x2991, 0x29b1, 0x29d7, 0x2a06, 0x2a50, 0x2a70, 0x2a96, + 0x2afb, 0x2b1b, 0x2b47, 0x2b5a, 0x2b6d, 0x2b80, 0x2ba9, 0x2bdb, + 0x2c01, 0x2c58, 0x2ca9, 0x2ceb, 0x2d17, 0x2d24, 0x2d31, 0x2d5a, + 0x2dae, 0x2dea, 0x2e16, 0x2e26, 0x2e5e, 0x2ee6, 0x2f31, 0x2f76, + // Entry 4F200 - 4F23F + 0x2fa8, 0x2fb5, 0x2fe1, 0x301a, 0x3050, 0x307c, 0x30b4, 0x310a, + 0x311a, 0x361e, 0x3181, 0x3191, 0x31b1, 0x31ed, 0x3229, 0x3255, + 0x3265, 0x327b, 0x3291, 0x32a4, 0x32b4, 0x32c7, 0x32e4, 0x330a, + 0x331a, 0x333d, 0x3363, 0x3383, 0x33af, 0x33cf, 0x340e, 0x3450, + 0x347c, 0x349f, 0x34e1, 0x3519, 0x352c, 0x353c, 0x3571, 0x35b9, + 0x269f, 0x2eb4, 0x1a7b, 0x1b69, 0x1d3d, 0x1d7c, 0x218f, 0x2a63, + 0x2ad5, 0x3143, 0x009e, 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1afe, 0x1b3d, 0x1bc1, 0x1bf7, 0x1c2a, 0x1c5d, 0x1c96, 0x1cd8, + // Entry 4F240 - 4F27F + 0x1d17, 0x1dd4, 0x1e10, 0x1e58, 0x1ea0, 0x1edf, 0x1f21, 0x1f6c, + 0x1fb4, 0x1ff9, 0x203e, 0x2089, 0x20cb, 0xffff, 0xffff, 0x212d, + 0xffff, 0x2179, 0xffff, 0x21db, 0x2214, 0x2247, 0x2280, 0xffff, + 0xffff, 0x22e8, 0x232d, 0x2369, 0xffff, 0xffff, 0xffff, 0x23de, + 0xffff, 0x2427, 0x245a, 0xffff, 0x24a0, 0x24e5, 0x2521, 0xffff, + 0xffff, 0xffff, 0xffff, 0x25bb, 0xffff, 0xffff, 0x2635, 0x2683, + 0xffff, 0xffff, 0x2718, 0x2758, 0x2791, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x2836, 0x287b, 0x28bd, 0x28f3, 0x2950, + // Entry 4F280 - 4F2BF + 0xffff, 0xffff, 0x29c4, 0xffff, 0x2a2b, 0xffff, 0xffff, 0x2aaf, + 0xffff, 0x2b31, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bc2, 0xffff, + 0x2c20, 0x2c77, 0x2cc2, 0x2d01, 0xffff, 0xffff, 0xffff, 0x2d79, + 0x2dc4, 0x2e00, 0xffff, 0xffff, 0x2e89, 0x2f02, 0x2f4a, 0x2f8f, + 0xffff, 0xffff, 0x2ff7, 0x302d, 0x3066, 0xffff, 0x30df, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x31c7, 0x3203, 0x323f, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32f7, 0xffff, + 0xffff, 0x3350, 0xffff, 0x3399, 0xffff, 0x33e5, 0x3427, 0x3466, + // Entry 4F2C0 - 4F2FF + 0xffff, 0x34b5, 0x34fd, 0xffff, 0xffff, 0xffff, 0x358a, 0x35d5, + 0xffff, 0xffff, 0x1a8e, 0x1b82, 0x1d53, 0x1d95, 0xffff, 0xffff, + 0x2ae8, 0x3162, 0x0003, 0x0004, 0x0111, 0x0352, 0x0012, 0x0017, + 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x009d, 0x00be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0108, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9006, 0x0006, 0x0027, 0x0000, 0x0000, 0x0000, 0x0000, + 0x008c, 0x0002, 0x002a, 0x005b, 0x0003, 0x002e, 0x003d, 0x004c, + // Entry 4F300 - 4F33F + 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, + 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x000d, + 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, + 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, + 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0003, 0x005f, 0x006e, + 0x007d, 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, + 0x3e35, 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, + // Entry 4F340 - 4F37F + 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, + 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, + 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, + 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0004, 0x009a, + 0x0094, 0x0091, 0x0097, 0x0001, 0x0070, 0x0285, 0x0001, 0x0070, + 0x0299, 0x0001, 0x0070, 0x02a9, 0x0001, 0x006d, 0x12c4, 0x0008, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a6, 0x0000, 0x00b7, + 0x0004, 0x00b4, 0x00ae, 0x00ab, 0x00b1, 0x0001, 0x0035, 0x0719, + // Entry 4F380 - 4F3BF + 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, + 0x0503, 0x0003, 0x0000, 0x0000, 0x00bb, 0x0001, 0x0000, 0x03c6, + 0x0008, 0x0000, 0x0000, 0x00c7, 0x0000, 0x00ee, 0x00fe, 0x0000, + 0x0000, 0x0002, 0x00ca, 0x00dc, 0x0003, 0x00ce, 0x0000, 0x00d5, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, + 0x0070, 0xffff, 0x02b2, 0x02bd, 0x02c8, 0x02d3, 0x0003, 0x00e0, + 0x0000, 0x00e7, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, + 0x3836, 0x0005, 0x0070, 0xffff, 0x02b2, 0x02bd, 0x02c8, 0x02d3, + // Entry 4F3C0 - 4F3FF + 0x0003, 0x00f8, 0x0000, 0x00f2, 0x0001, 0x00f4, 0x0002, 0x006d, + 0x13dc, 0x13ed, 0x0001, 0x00fa, 0x0002, 0x006d, 0x13dc, 0x13ed, + 0x0003, 0x0105, 0x0000, 0x0102, 0x0001, 0x0035, 0x064a, 0x0001, + 0x0002, 0x01fb, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9006, 0x003f, 0x0000, 0x0000, 0x0000, 0x0151, + 0x0159, 0x0161, 0x0173, 0x017b, 0x0183, 0x0000, 0x0000, 0x0195, + 0x01a7, 0x01bc, 0x01d1, 0x0000, 0x0000, 0x0000, 0x01de, 0x01f2, + 0x0206, 0x0000, 0x0000, 0x0000, 0x021a, 0x0000, 0x0000, 0x0000, + // Entry 4F400 - 4F43F + 0x0000, 0x0000, 0x021f, 0x0231, 0x0000, 0x0243, 0x0255, 0x0000, + 0x0267, 0x0279, 0x0000, 0x028b, 0x029d, 0x0000, 0x02af, 0x02c1, + 0x0000, 0x02d3, 0x02e5, 0x0000, 0x02f7, 0x0309, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0317, 0x0000, 0x031e, 0x032e, 0x0000, 0x0335, + 0x0000, 0x0000, 0x0345, 0x0002, 0x0000, 0x0154, 0x0003, 0x0070, + 0x02de, 0x02e5, 0x02ec, 0x0002, 0x0000, 0x015c, 0x0003, 0x0070, + 0x02de, 0x02e5, 0x02ec, 0x0003, 0x0000, 0x0165, 0x016a, 0x0003, + 0x0070, 0x02de, 0x02e5, 0x02ec, 0x0002, 0x016d, 0x0170, 0x0001, + // Entry 4F440 - 4F47F + 0x0035, 0x10a3, 0x0001, 0x0035, 0x10ad, 0x0002, 0x0000, 0x0176, + 0x0003, 0x006d, 0x169b, 0x16a5, 0x16ac, 0x0002, 0x0000, 0x017e, + 0x0003, 0x006d, 0x16cc, 0x16a5, 0x16d3, 0x0003, 0x0000, 0x0187, + 0x018c, 0x0003, 0x006d, 0x16cc, 0x16a5, 0x16d3, 0x0002, 0x018f, + 0x0192, 0x0001, 0x0070, 0x02f3, 0x0001, 0x0070, 0x02f9, 0x0003, + 0x0000, 0x0199, 0x019e, 0x0003, 0x0070, 0x02ff, 0x0306, 0x030d, + 0x0002, 0x01a1, 0x01a4, 0x0001, 0x0070, 0x0314, 0x0001, 0x0070, + 0x0321, 0x0003, 0x01ab, 0x01ae, 0x01b3, 0x0001, 0x0070, 0x032e, + // Entry 4F480 - 4F4BF + 0x0003, 0x006d, 0x1714, 0x362b, 0x172b, 0x0002, 0x01b6, 0x01b9, + 0x0001, 0x0070, 0x0335, 0x0001, 0x0070, 0x0343, 0x0003, 0x01c0, + 0x01c3, 0x01c8, 0x0001, 0x0070, 0x032e, 0x0003, 0x006d, 0x1714, + 0x362b, 0x172b, 0x0002, 0x01cb, 0x01ce, 0x0001, 0x0070, 0x0335, + 0x0001, 0x0070, 0x0343, 0x0003, 0x0000, 0x0000, 0x01d5, 0x0002, + 0x01d8, 0x01db, 0x0001, 0x0070, 0x0351, 0x0001, 0x0070, 0x035b, + 0x0003, 0x0000, 0x01e2, 0x01e9, 0x0005, 0x0070, 0x036c, 0x0373, + 0x037a, 0x0365, 0x0381, 0x0002, 0x01ec, 0x01ef, 0x0001, 0x0035, + // Entry 4F4C0 - 4F4FF + 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0000, 0x01f6, 0x01fd, + 0x0005, 0x0070, 0x036c, 0x0373, 0x037a, 0x0365, 0x0381, 0x0002, + 0x0200, 0x0203, 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, + 0x0003, 0x0000, 0x020a, 0x0211, 0x0005, 0x0070, 0x036c, 0x0373, + 0x037a, 0x0365, 0x0381, 0x0002, 0x0214, 0x0217, 0x0001, 0x0035, + 0x121e, 0x0001, 0x0035, 0x1228, 0x0001, 0x021c, 0x0001, 0x0070, + 0x0388, 0x0003, 0x0000, 0x0223, 0x0228, 0x0003, 0x006d, 0x178e, + 0x3635, 0x17ab, 0x0002, 0x022b, 0x022e, 0x0001, 0x006d, 0x17b8, + // Entry 4F500 - 4F53F + 0x0001, 0x006d, 0x17cc, 0x0003, 0x0000, 0x0235, 0x023a, 0x0003, + 0x006d, 0x178e, 0x3635, 0x17ab, 0x0002, 0x023d, 0x0240, 0x0001, + 0x006d, 0x17b8, 0x0001, 0x006d, 0x17cc, 0x0003, 0x0000, 0x0247, + 0x024c, 0x0003, 0x006d, 0x17e0, 0x3642, 0x17fd, 0x0002, 0x024f, + 0x0252, 0x0001, 0x006d, 0x180a, 0x0001, 0x006d, 0x181e, 0x0003, + 0x0000, 0x0259, 0x025e, 0x0003, 0x006d, 0x17e0, 0x3642, 0x17fd, + 0x0002, 0x0261, 0x0264, 0x0001, 0x006d, 0x180a, 0x0001, 0x006d, + 0x181e, 0x0003, 0x0000, 0x026b, 0x0270, 0x0003, 0x006d, 0x1832, + // Entry 4F540 - 4F57F + 0x364f, 0x184f, 0x0002, 0x0273, 0x0276, 0x0001, 0x006d, 0x185c, + 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x027d, 0x0282, 0x0003, + 0x006d, 0x1832, 0x364f, 0x184f, 0x0002, 0x0285, 0x0288, 0x0001, + 0x006d, 0x185c, 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x028f, + 0x0294, 0x0003, 0x006d, 0x1884, 0x365c, 0x18a1, 0x0002, 0x0297, + 0x029a, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, 0x18c2, 0x0003, + 0x0000, 0x02a1, 0x02a6, 0x0003, 0x006d, 0x1884, 0x365c, 0x18a1, + 0x0002, 0x02a9, 0x02ac, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, + // Entry 4F580 - 4F5BF + 0x18c2, 0x0003, 0x0000, 0x02b3, 0x02b8, 0x0003, 0x006d, 0x18d6, + 0x3669, 0x18f3, 0x0002, 0x02bb, 0x02be, 0x0001, 0x006d, 0x1900, + 0x0001, 0x006d, 0x1914, 0x0003, 0x0000, 0x02c5, 0x02ca, 0x0003, + 0x006d, 0x18d6, 0x3669, 0x18f3, 0x0002, 0x02cd, 0x02d0, 0x0001, + 0x006d, 0x1900, 0x0001, 0x006d, 0x1914, 0x0003, 0x0000, 0x02d7, + 0x02dc, 0x0003, 0x006d, 0x1928, 0x3676, 0x1945, 0x0002, 0x02df, + 0x02e2, 0x0001, 0x006d, 0x1952, 0x0001, 0x006d, 0x1966, 0x0003, + 0x0000, 0x02e9, 0x02ee, 0x0003, 0x006d, 0x1928, 0x3676, 0x1945, + // Entry 4F5C0 - 4F5FF + 0x0002, 0x02f1, 0x02f4, 0x0001, 0x006d, 0x1952, 0x0001, 0x006d, + 0x1966, 0x0003, 0x0000, 0x02fb, 0x0300, 0x0003, 0x006d, 0x197a, + 0x3683, 0x1997, 0x0002, 0x0303, 0x0306, 0x0001, 0x006d, 0x19a4, + 0x0001, 0x006d, 0x19b8, 0x0003, 0x0000, 0x030d, 0x0312, 0x0003, + 0x006d, 0x197a, 0x3683, 0x1997, 0x0001, 0x0314, 0x0001, 0x006d, + 0x19a4, 0x0002, 0x0000, 0x031a, 0x0002, 0x0070, 0xffff, 0x0392, + 0x0003, 0x0322, 0x0000, 0x0325, 0x0001, 0x0035, 0x188a, 0x0002, + 0x0328, 0x032b, 0x0001, 0x0070, 0x039f, 0x0001, 0x0070, 0x03ac, + // Entry 4F600 - 4F63F + 0x0002, 0x0000, 0x0331, 0x0002, 0x0070, 0xffff, 0x03b9, 0x0003, + 0x0339, 0x0000, 0x033c, 0x0001, 0x0035, 0x18d3, 0x0002, 0x033f, + 0x0342, 0x0001, 0x0035, 0x18f9, 0x0001, 0x0035, 0x1903, 0x0003, + 0x0000, 0x0000, 0x0349, 0x0002, 0x034c, 0x034f, 0x0001, 0x0035, + 0x192b, 0x0001, 0x0035, 0x1935, 0x0004, 0x0000, 0x0357, 0x0000, + 0x035c, 0x0003, 0x0070, 0xffff, 0x03c3, 0x03d3, 0x0002, 0x0000, + 0x035f, 0x0003, 0x03f8, 0x048d, 0x0363, 0x0093, 0x0070, 0xffff, + 0xffff, 0xffff, 0x03e3, 0xffff, 0xffff, 0xffff, 0x0403, 0x042f, + // Entry 4F640 - 4F67F + 0x045b, 0x048a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04b9, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x04e2, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x04f8, 0xffff, 0xffff, 0xffff, 0xffff, + 0x050e, 0xffff, 0xffff, 0x0524, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x0537, 0xffff, 0x0563, 0xffff, + 0xffff, 0xffff, 0xffff, 0x057c, 0x0592, 0xffff, 0xffff, 0xffff, + 0x05a2, 0xffff, 0x05af, 0xffff, 0xffff, 0xffff, 0xffff, 0x05d8, + // Entry 4F680 - 4F6BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05f4, 0xffff, + 0xffff, 0xffff, 0xffff, 0x0604, 0xffff, 0xffff, 0x061a, 0x062d, + 0xffff, 0x0653, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x066c, 0xffff, 0x0692, 0xffff, 0xffff, 0xffff, 0xffff, 0x06d3, + 0xffff, 0xffff, 0xffff, 0xffff, 0x06fb, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0717, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x0727, 0x0737, 0x0747, 0xffff, 0x075d, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x077a, 0xffff, 0xffff, 0x078d, + // Entry 4F6C0 - 4F6FF + 0xffff, 0xffff, 0x07b0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x07dc, 0x0093, 0x0070, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x03f0, 0x041c, 0x0448, 0x0474, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x04a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x04d2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4F700 - 4F73F + 0xffff, 0xffff, 0xffff, 0x0550, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x05c2, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0640, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0679, + 0xffff, 0xffff, 0xffff, 0xffff, 0x06b1, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4F740 - 4F77F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x076d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x079d, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07c9, 0x0093, + 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x1bf7, 0x3690, 0x36a9, 0x36c2, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x36de, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x36f7, 0xffff, + // Entry 4F780 - 4F7BF + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x370d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0x3726, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x3742, 0xffff, 0xffff, 0xffff, 0xffff, + // Entry 4F7C0 - 4F7FF + 0xffff, 0xffff, 0xffff, 0xffff, 0x375b, 0xffff, 0xffff, 0xffff, + 0xffff, 0x377a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x37a2, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x37b5, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x37ce, 0x0003, 0x0004, 0x0244, 0x0620, + 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, + // Entry 4F800 - 4F83F + 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, + 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, + 0x0000, 0x1dfa, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, + 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, + 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, + 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, + 0x0132, 0x01f7, 0x0211, 0x0222, 0x0233, 0x0002, 0x0044, 0x0075, + 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0005, 0xffff, 0x0636, + // Entry 4F840 - 4F87F + 0x22cc, 0x2510, 0x2514, 0x2518, 0x224e, 0x22d4, 0x251c, 0x24ec, + 0x24f0, 0x22e0, 0x23de, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, + 0x29f4, 0x2a16, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, + 0x29fc, 0x29fe, 0x000d, 0x0070, 0xffff, 0x07f5, 0x0800, 0x080a, + 0x0810, 0x0818, 0x081d, 0x0822, 0x0829, 0x0830, 0x083a, 0x0842, + 0x084a, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0005, 0xffff, + 0x0636, 0x22cc, 0x2510, 0x2514, 0x2518, 0x224e, 0x22d4, 0x251c, + 0x24ec, 0x24f0, 0x22e0, 0x23de, 0x000d, 0x0017, 0xffff, 0x29cf, + // Entry 4F880 - 4F8BF + 0x29f2, 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, + 0x29fa, 0x29fc, 0x29fe, 0x000d, 0x0070, 0xffff, 0x0852, 0x0800, + 0x080a, 0x0810, 0x0818, 0x081d, 0x0822, 0x0829, 0x0830, 0x083a, + 0x0842, 0x084a, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, + 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0040, 0x02d8, 0x2601, 0x2605, + 0x2609, 0x25f5, 0x260d, 0x25fd, 0x0007, 0x0017, 0x2a09, 0x29f4, + 0x29b5, 0x2a0b, 0x2a09, 0x2a11, 0x29f4, 0x0007, 0x0040, 0x02d8, + 0x2601, 0x2605, 0x2609, 0x25f5, 0x260d, 0x25fd, 0x0007, 0x0070, + // Entry 4F8C0 - 4F8FF + 0x085b, 0x0862, 0x086e, 0x0879, 0x0886, 0x088f, 0x089b, 0x0005, + 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0040, 0x02d8, + 0x2601, 0x2605, 0x2609, 0x25f5, 0x260d, 0x25fd, 0x0007, 0x0017, + 0x2a09, 0x29f4, 0x29b5, 0x2a0b, 0x2a09, 0x2a11, 0x29f4, 0x0007, + 0x0040, 0x02d8, 0x2601, 0x2605, 0x2609, 0x25f5, 0x260d, 0x25fd, + 0x0007, 0x0070, 0x085b, 0x0862, 0x086e, 0x0879, 0x0886, 0x088f, + 0x089b, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, + 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, + // Entry 4F900 - 4F93F + 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0070, + 0xffff, 0x08a5, 0x08b2, 0x08bf, 0x08cc, 0x0003, 0x011d, 0x0124, + 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, + 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, + 0x0070, 0xffff, 0x08a5, 0x08b2, 0x08bf, 0x08cc, 0x0002, 0x0135, + 0x0196, 0x0003, 0x0139, 0x0158, 0x0177, 0x0009, 0x0143, 0x0146, + 0x0000, 0x0149, 0x014f, 0x0152, 0x0155, 0x0000, 0x014c, 0x0001, + 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, 0x08d9, + // Entry 4F940 - 4F97F + 0x0001, 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, + 0x08f3, 0x0001, 0x0070, 0x08fc, 0x0009, 0x0162, 0x0165, 0x0000, + 0x0168, 0x016e, 0x0171, 0x0174, 0x0000, 0x016b, 0x0001, 0x0000, + 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0070, 0x08d9, 0x0001, + 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, 0x08f3, + 0x0001, 0x0070, 0x08fc, 0x0009, 0x0181, 0x0184, 0x0000, 0x0187, + 0x018d, 0x0190, 0x0193, 0x0000, 0x018a, 0x0001, 0x0000, 0x04ef, + 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, 0x08d9, 0x0001, 0x0070, + // Entry 4F980 - 4F9BF + 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, 0x08f3, 0x0001, + 0x0070, 0x08fc, 0x0003, 0x019a, 0x01b9, 0x01d8, 0x0009, 0x01a4, + 0x01a7, 0x0000, 0x01aa, 0x01b0, 0x01b3, 0x01b6, 0x0000, 0x01ad, + 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, + 0x08d9, 0x0001, 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, + 0x0070, 0x08f3, 0x0001, 0x0070, 0x08fc, 0x0009, 0x01c3, 0x01c6, + 0x0000, 0x01c9, 0x01cf, 0x01d2, 0x01d5, 0x0000, 0x01cc, 0x0001, + 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0070, 0x08d9, + // Entry 4F9C0 - 4F9FF + 0x0001, 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, + 0x08f3, 0x0001, 0x0070, 0x08fc, 0x0009, 0x01e2, 0x01e5, 0x0000, + 0x01e8, 0x01ee, 0x01f1, 0x01f4, 0x0000, 0x01eb, 0x0001, 0x0000, + 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, 0x08d9, 0x0001, + 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, 0x08f3, + 0x0001, 0x0070, 0x08fc, 0x0003, 0x0206, 0x0000, 0x01fb, 0x0002, + 0x01fe, 0x0202, 0x0002, 0x0009, 0x0078, 0x549d, 0x0002, 0x0000, + 0x04f5, 0x04f9, 0x0002, 0x0209, 0x020d, 0x0002, 0x0009, 0x0078, + // Entry 4FA00 - 4FA3F + 0x549d, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x021f, 0x0219, + 0x0216, 0x021c, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, + 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x0230, + 0x022a, 0x0227, 0x022d, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, + 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, + 0x0241, 0x023b, 0x0238, 0x023e, 0x0001, 0x0000, 0x03c6, 0x0001, + 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, + 0x0040, 0x0285, 0x0000, 0x0000, 0x028a, 0x02a1, 0x02b3, 0x02c5, + // Entry 4FA40 - 4FA7F + 0x02dc, 0x02ee, 0x0300, 0x0317, 0x0329, 0x033b, 0x0356, 0x036c, + 0x0000, 0x0000, 0x0000, 0x0382, 0x039b, 0x03ad, 0x0000, 0x0000, + 0x0000, 0x03bf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03c4, + 0x03d8, 0x03ec, 0x0400, 0x0414, 0x0428, 0x043c, 0x0450, 0x0464, + 0x0478, 0x048c, 0x04a0, 0x04b4, 0x04c8, 0x04dc, 0x04f0, 0x0504, + 0x0518, 0x052c, 0x0540, 0x0554, 0x0000, 0x0568, 0x0000, 0x056d, + 0x0583, 0x0595, 0x05a7, 0x05bd, 0x05cf, 0x05e1, 0x05f7, 0x0609, + 0x061b, 0x0001, 0x0287, 0x0001, 0x004c, 0x0170, 0x0003, 0x028e, + // Entry 4FA80 - 4FABF + 0x0291, 0x0296, 0x0001, 0x0070, 0x0904, 0x0003, 0x0070, 0x090b, + 0x091b, 0x0926, 0x0002, 0x0299, 0x029d, 0x0002, 0x0070, 0x094b, + 0x0933, 0x0002, 0x0070, 0x0977, 0x0965, 0x0003, 0x02a5, 0x0000, + 0x02a8, 0x0001, 0x0070, 0x0904, 0x0002, 0x02ab, 0x02af, 0x0002, + 0x0070, 0x094b, 0x0933, 0x0002, 0x0070, 0x0965, 0x0965, 0x0003, + 0x02b7, 0x0000, 0x02ba, 0x0001, 0x0070, 0x0904, 0x0002, 0x02bd, + 0x02c1, 0x0002, 0x0070, 0x094b, 0x0933, 0x0002, 0x0070, 0x0965, + 0x0965, 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x0070, 0x098b, + // Entry 4FAC0 - 4FAFF + 0x0003, 0x0070, 0x0991, 0x099e, 0x09a6, 0x0002, 0x02d4, 0x02d8, + 0x0002, 0x0070, 0x09c9, 0x09b2, 0x0002, 0x0070, 0x09f2, 0x09e1, + 0x0003, 0x02e0, 0x0000, 0x02e3, 0x0001, 0x0070, 0x098b, 0x0002, + 0x02e6, 0x02ea, 0x0002, 0x0070, 0x09c9, 0x09b2, 0x0002, 0x0070, + 0x0a05, 0x09f2, 0x0003, 0x02f2, 0x0000, 0x02f5, 0x0001, 0x0070, + 0x098b, 0x0002, 0x02f8, 0x02fc, 0x0002, 0x0070, 0x0a18, 0x0a18, + 0x0002, 0x0070, 0x0a05, 0x09f2, 0x0003, 0x0304, 0x0307, 0x030c, + 0x0001, 0x0070, 0x0a2a, 0x0003, 0x0070, 0x0a32, 0x0a41, 0x0a4b, + // Entry 4FB00 - 4FB3F + 0x0002, 0x030f, 0x0313, 0x0002, 0x0070, 0x0a6c, 0x0a59, 0x0002, + 0x0070, 0x0a9e, 0x0a8b, 0x0003, 0x031b, 0x0000, 0x031e, 0x0001, + 0x0070, 0x0a2a, 0x0002, 0x0321, 0x0325, 0x0002, 0x0070, 0x0a6c, + 0x0a6c, 0x0002, 0x0070, 0x0a9e, 0x0a9e, 0x0003, 0x032d, 0x0000, + 0x0330, 0x0001, 0x0070, 0x0a2a, 0x0002, 0x0333, 0x0337, 0x0002, + 0x0070, 0x0ab5, 0x0ab5, 0x0002, 0x0070, 0x0a9e, 0x0a9e, 0x0004, + 0x0340, 0x0343, 0x0348, 0x0353, 0x0001, 0x004c, 0x0129, 0x0003, + 0x0070, 0x0ace, 0x0add, 0x0ae7, 0x0002, 0x034b, 0x034f, 0x0002, + // Entry 4FB40 - 4FB7F + 0x0070, 0x0b08, 0x0af5, 0x0002, 0x0070, 0x0b37, 0x0b1b, 0x0001, + 0x0070, 0x0b4f, 0x0004, 0x035b, 0x0000, 0x035e, 0x0369, 0x0001, + 0x004c, 0x0129, 0x0002, 0x0361, 0x0365, 0x0002, 0x0070, 0x0b79, + 0x0b5e, 0x0002, 0x0070, 0x0b37, 0x0b37, 0x0001, 0x0070, 0x0b4f, + 0x0004, 0x0371, 0x0000, 0x0374, 0x037f, 0x0001, 0x004c, 0x0129, + 0x0002, 0x0377, 0x037b, 0x0002, 0x0070, 0x0b79, 0x0b79, 0x0002, + 0x0070, 0x0b37, 0x0b37, 0x0001, 0x0070, 0x0b4f, 0x0003, 0x0386, + 0x0389, 0x0390, 0x0001, 0x0070, 0x0b92, 0x0005, 0x0070, 0x0bb5, + // Entry 4FB80 - 4FBBF + 0x0bbb, 0x0bc5, 0x0b98, 0x0bcc, 0x0002, 0x0393, 0x0397, 0x0002, + 0x0070, 0x0c04, 0x0be8, 0x0002, 0x0070, 0x0c41, 0x0c23, 0x0003, + 0x039f, 0x0000, 0x03a2, 0x0001, 0x0070, 0x0b92, 0x0002, 0x03a5, + 0x03a9, 0x0002, 0x0070, 0x0c04, 0x0be8, 0x0002, 0x0070, 0x0c76, + 0x0c62, 0x0003, 0x03b1, 0x0000, 0x03b4, 0x0001, 0x0070, 0x0b92, + 0x0002, 0x03b7, 0x03bb, 0x0002, 0x0070, 0x0c04, 0x0be8, 0x0002, + 0x0070, 0x0c76, 0x0c62, 0x0001, 0x03c1, 0x0001, 0x0070, 0x0c8c, + 0x0003, 0x0000, 0x03c8, 0x03cd, 0x0003, 0x0070, 0x0c9a, 0x0caa, + // Entry 4FBC0 - 4FBFF + 0x0cb7, 0x0002, 0x03d0, 0x03d4, 0x0002, 0x0070, 0x0cda, 0x0cc6, + 0x0002, 0x0070, 0x0d01, 0x0ced, 0x0003, 0x0000, 0x03dc, 0x03e1, + 0x0003, 0x0070, 0x0c9a, 0x0caa, 0x0cb7, 0x0002, 0x03e4, 0x03e8, + 0x0002, 0x0070, 0x0cda, 0x0cda, 0x0002, 0x0070, 0x0d01, 0x0d01, + 0x0003, 0x0000, 0x03f0, 0x03f5, 0x0003, 0x0070, 0x0c9a, 0x0caa, + 0x0cb7, 0x0002, 0x03f8, 0x03fc, 0x0002, 0x0070, 0x0cda, 0x0cda, + 0x0002, 0x0070, 0x0d01, 0x0d01, 0x0003, 0x0000, 0x0404, 0x0409, + 0x0003, 0x0070, 0x0d15, 0x0d28, 0x0d38, 0x0002, 0x040c, 0x0410, + // Entry 4FC00 - 4FC3F + 0x0002, 0x0070, 0x0d5e, 0x0d4a, 0x0002, 0x0070, 0x0d8e, 0x0d73, + 0x0003, 0x0000, 0x0418, 0x041d, 0x0003, 0x0070, 0x0d15, 0x0d28, + 0x0d38, 0x0002, 0x0420, 0x0424, 0x0002, 0x0070, 0x0d5e, 0x0d5e, + 0x0002, 0x0070, 0x0d8e, 0x0d8e, 0x0003, 0x0000, 0x042c, 0x0431, + 0x0003, 0x0070, 0x0d15, 0x0d28, 0x0d38, 0x0002, 0x0434, 0x0438, + 0x0002, 0x0070, 0x0d5e, 0x0d5e, 0x0002, 0x0070, 0x0d8e, 0x0d8e, + 0x0003, 0x0000, 0x0440, 0x0445, 0x0003, 0x0070, 0x0da9, 0x0dbd, + 0x0dcc, 0x0002, 0x0448, 0x044c, 0x0002, 0x0070, 0x0df4, 0x0ddf, + // Entry 4FC40 - 4FC7F + 0x0002, 0x0070, 0x0e2b, 0x0e0c, 0x0003, 0x0000, 0x0454, 0x0459, + 0x0003, 0x0070, 0x0da9, 0x0dbd, 0x0dcc, 0x0002, 0x045c, 0x0460, + 0x0002, 0x0070, 0x0e4c, 0x0e4c, 0x0002, 0x0070, 0x0e5d, 0x0e5d, + 0x0003, 0x0000, 0x0468, 0x046d, 0x0003, 0x0070, 0x0da9, 0x0dbd, + 0x0dcc, 0x0002, 0x0470, 0x0474, 0x0002, 0x0070, 0x0e4c, 0x0e4c, + 0x0002, 0x0070, 0x0e5d, 0x0e5d, 0x0003, 0x0000, 0x047c, 0x0481, + 0x0003, 0x0070, 0x0e78, 0x0e8e, 0x0e9f, 0x0002, 0x0484, 0x0488, + 0x0002, 0x0070, 0x0ec9, 0x0eb4, 0x0002, 0x0070, 0x0f07, 0x0ee3, + // Entry 4FC80 - 4FCBF + 0x0003, 0x0000, 0x0490, 0x0495, 0x0003, 0x0070, 0x0e78, 0x0e8e, + 0x0e9f, 0x0002, 0x0498, 0x049c, 0x0002, 0x0070, 0x0ec9, 0x0ec9, + 0x0002, 0x0070, 0x0f07, 0x0f07, 0x0003, 0x0000, 0x04a4, 0x04a9, + 0x0003, 0x0070, 0x0e78, 0x0e8e, 0x0e9f, 0x0002, 0x04ac, 0x04b0, + 0x0002, 0x0070, 0x0ec9, 0x0ec9, 0x0002, 0x0070, 0x0f07, 0x0f07, + 0x0003, 0x0000, 0x04b8, 0x04bd, 0x0003, 0x0070, 0x0f2a, 0x0f3c, + 0x0f49, 0x0002, 0x04c0, 0x04c4, 0x0002, 0x0070, 0x0f6d, 0x0f5a, + 0x0002, 0x0070, 0x0fa0, 0x0f83, 0x0003, 0x0000, 0x04cc, 0x04d1, + // Entry 4FCC0 - 4FCFF + 0x0003, 0x0070, 0x0fbf, 0x0f3c, 0x0f49, 0x0002, 0x04d4, 0x04d8, + 0x0002, 0x0070, 0x0f6d, 0x0f6d, 0x0002, 0x0070, 0x0fa0, 0x0fa0, + 0x0003, 0x0000, 0x04e0, 0x04e5, 0x0003, 0x0070, 0x0fbf, 0x0f3c, + 0x0f49, 0x0002, 0x04e8, 0x04ec, 0x0002, 0x0070, 0x0f6d, 0x0f6d, + 0x0002, 0x0070, 0x0fa0, 0x0fa0, 0x0003, 0x0000, 0x04f4, 0x04f9, + 0x0003, 0x0070, 0x0fd2, 0x0fe7, 0x0ff7, 0x0002, 0x04fc, 0x0500, + 0x0002, 0x0070, 0x101e, 0x100b, 0x0002, 0x0070, 0x1049, 0x1031, + 0x0003, 0x0000, 0x0508, 0x050d, 0x0003, 0x0070, 0x0fd2, 0x0fe7, + // Entry 4FD00 - 4FD3F + 0x0ff7, 0x0002, 0x0510, 0x0514, 0x0002, 0x0070, 0x101e, 0x101e, + 0x0002, 0x0070, 0x1049, 0x1049, 0x0003, 0x0000, 0x051c, 0x0521, + 0x0003, 0x0070, 0x0fd2, 0x0fe7, 0x0ff7, 0x0002, 0x0524, 0x0528, + 0x0002, 0x0070, 0x101e, 0x101e, 0x0002, 0x0070, 0x1049, 0x1049, + 0x0003, 0x0000, 0x0530, 0x0535, 0x0003, 0x0070, 0x1061, 0x1072, + 0x1080, 0x0002, 0x0538, 0x053c, 0x0002, 0x0070, 0x10a2, 0x1090, + 0x0002, 0x0070, 0x10d0, 0x10b7, 0x0003, 0x0000, 0x0544, 0x0549, + 0x0003, 0x0070, 0x1061, 0x1072, 0x1080, 0x0002, 0x054c, 0x0550, + // Entry 4FD40 - 4FD7F + 0x0002, 0x0070, 0x10a2, 0x10a2, 0x0002, 0x0070, 0x10d0, 0x10d0, + 0x0003, 0x0000, 0x0558, 0x055d, 0x0003, 0x0070, 0x1061, 0x1072, + 0x1080, 0x0002, 0x0560, 0x0564, 0x0002, 0x0070, 0x10a2, 0x10a2, + 0x0002, 0x0070, 0x10d0, 0x10d0, 0x0001, 0x056a, 0x0001, 0x0007, + 0x07cc, 0x0003, 0x0571, 0x0574, 0x0578, 0x0001, 0x0070, 0x10ec, + 0x0002, 0x0070, 0xffff, 0x10f2, 0x0002, 0x057b, 0x057f, 0x0002, + 0x0070, 0x1117, 0x10fc, 0x0002, 0x0070, 0x1143, 0x1130, 0x0003, + 0x0587, 0x0000, 0x058a, 0x0001, 0x0070, 0x10ec, 0x0002, 0x058d, + // Entry 4FD80 - 4FDBF + 0x0591, 0x0002, 0x0070, 0x1117, 0x10fc, 0x0002, 0x0070, 0x115d, + 0x1130, 0x0003, 0x0599, 0x0000, 0x059c, 0x0001, 0x0070, 0x10ec, + 0x0002, 0x059f, 0x05a3, 0x0002, 0x0070, 0x1117, 0x10fc, 0x0002, + 0x0070, 0x115d, 0x1130, 0x0003, 0x05ab, 0x05ae, 0x05b2, 0x0001, + 0x0070, 0x1170, 0x0002, 0x0070, 0xffff, 0x1179, 0x0002, 0x05b5, + 0x05b9, 0x0002, 0x0070, 0x11a3, 0x1186, 0x0002, 0x0070, 0x11d4, + 0x11be, 0x0003, 0x05c1, 0x0000, 0x05c4, 0x0001, 0x0070, 0x1170, + 0x0002, 0x05c7, 0x05cb, 0x0002, 0x0070, 0x11a3, 0x1186, 0x0002, + // Entry 4FDC0 - 4FDFF + 0x0070, 0x11d4, 0x11be, 0x0003, 0x05d3, 0x0000, 0x05d6, 0x0001, + 0x0070, 0x1170, 0x0002, 0x05d9, 0x05dd, 0x0002, 0x0070, 0x11a3, + 0x1186, 0x0002, 0x0070, 0x11d4, 0x11be, 0x0003, 0x05e5, 0x05e8, + 0x05ec, 0x0001, 0x0070, 0x11ea, 0x0002, 0x0070, 0xffff, 0x11f4, + 0x0002, 0x05ef, 0x05f3, 0x0002, 0x0070, 0x1218, 0x11fa, 0x0002, + 0x0070, 0x124b, 0x1234, 0x0003, 0x05fb, 0x0000, 0x05fe, 0x0001, + 0x0070, 0x11ea, 0x0002, 0x0601, 0x0605, 0x0002, 0x0070, 0x1218, + 0x11fa, 0x0002, 0x0070, 0x124b, 0x1234, 0x0003, 0x060d, 0x0000, + // Entry 4FE00 - 4FE3F + 0x0610, 0x0001, 0x0070, 0x11ea, 0x0002, 0x0613, 0x0617, 0x0002, + 0x0070, 0x1218, 0x11fa, 0x0002, 0x0070, 0x124b, 0x1234, 0x0001, + 0x061d, 0x0001, 0x0070, 0x1262, 0x0004, 0x0625, 0x062a, 0x062f, + 0x063a, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0070, + 0x1274, 0x1287, 0x129e, 0x0002, 0x0000, 0x0632, 0x0002, 0x0000, + 0x0635, 0x0003, 0x0070, 0xffff, 0x12b6, 0x12d7, 0x0002, 0x0000, + 0x063d, 0x0003, 0x06d7, 0x076d, 0x0641, 0x0094, 0x0070, 0x12f6, + 0x1311, 0x132f, 0x134f, 0x139f, 0x1412, 0x146c, 0x14d7, 0x155e, + // Entry 4FE40 - 4FE7F + 0x15e3, 0x166f, 0x16e5, 0x172d, 0x177f, 0x17d7, 0x1846, 0x18bd, + 0x1916, 0x197f, 0x19fd, 0x1a7f, 0x1af1, 0x1b62, 0x1bbe, 0x1c1d, + 0x1c65, 0x1c7b, 0x1caa, 0x1cf3, 0x1d2e, 0x1d75, 0x1db3, 0x1e09, + 0x1e61, 0x1eb6, 0x1ef9, 0x1f19, 0x1f4e, 0x1fb3, 0x2020, 0x2060, + 0x2075, 0x2097, 0x20ce, 0x2121, 0x2156, 0x21c9, 0x221e, 0x2262, + 0x22d7, 0x2344, 0x237e, 0x239b, 0x23c9, 0x23e2, 0x2410, 0x2450, + 0x246f, 0x24ab, 0x251d, 0x2572, 0x2590, 0x25c4, 0x2631, 0x2689, + 0x26c0, 0x26df, 0x26fb, 0x2714, 0x2735, 0x2756, 0x278b, 0x27dd, + // Entry 4FE80 - 4FEBF + 0x2832, 0x2887, 0x28e6, 0x293e, 0x2966, 0x29a4, 0x29e2, 0x2a13, + 0x2a5a, 0x2a73, 0x2aa8, 0x2aed, 0x2b24, 0x2b63, 0x2b7b, 0x2b93, + 0x2bac, 0x2be5, 0x2c29, 0x2c5f, 0x2cd6, 0x2d46, 0x2d9f, 0x2de1, + 0x2df8, 0x2e0d, 0x2e3f, 0x2ead, 0x2f12, 0x2f62, 0x2f76, 0x2fb8, + 0x3032, 0x3090, 0x30e4, 0x3128, 0x313d, 0x3175, 0x31d2, 0x322d, + 0x3273, 0x32bc, 0x3327, 0x333f, 0x3355, 0x336e, 0x3385, 0x33b4, + 0x3407, 0x3450, 0x3492, 0x34ac, 0x34cf, 0x34ee, 0x350b, 0x3523, + 0x3538, 0x3564, 0x35a1, 0x35bb, 0x35e7, 0x362a, 0x365b, 0x36a5, + // Entry 4FEC0 - 4FEFF + 0x36d2, 0x3733, 0x3790, 0x37d7, 0x380b, 0x386b, 0x38b1, 0x38c7, + 0x38e2, 0x391b, 0x3977, 0x0094, 0x0070, 0xffff, 0xffff, 0xffff, + 0xffff, 0x137d, 0x13fc, 0x1456, 0x14b1, 0x153b, 0x15bc, 0x1649, + 0x16d3, 0x1719, 0x1768, 0x17be, 0x1822, 0x18a7, 0x18fe, 0x195e, + 0x19d6, 0x1a5e, 0x1ad0, 0x1b48, 0x1ba8, 0x1c03, 0xffff, 0xffff, + 0x1c92, 0xffff, 0x1d14, 0xffff, 0x1d9c, 0x1df4, 0x1e4c, 0x1e9c, + 0xffff, 0xffff, 0x1f36, 0x1f97, 0x200c, 0xffff, 0xffff, 0xffff, + 0x20b1, 0xffff, 0x2138, 0x21ab, 0xffff, 0x2244, 0x22b7, 0x2330, + // Entry 4FF00 - 4FF3F + 0xffff, 0xffff, 0xffff, 0xffff, 0x23f9, 0xffff, 0xffff, 0x248d, + 0x24ff, 0xffff, 0xffff, 0x25a6, 0x2618, 0x2675, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0x2777, 0x27c6, 0x281c, 0x2872, + 0x28c2, 0xffff, 0xffff, 0x298f, 0xffff, 0x29f8, 0xffff, 0xffff, + 0x2a8f, 0xffff, 0x2b0d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bcc, + 0xffff, 0x2c3f, 0x2cb7, 0x2d2c, 0x2d89, 0xffff, 0xffff, 0xffff, + 0x2e22, 0x2e92, 0x2ef6, 0xffff, 0xffff, 0x2f95, 0x3017, 0x307c, + 0x30cc, 0xffff, 0xffff, 0x315d, 0x31be, 0x3213, 0xffff, 0x3292, + // Entry 4FF40 - 4FF7F + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x339c, 0x33f5, 0x343b, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x354e, + 0xffff, 0xffff, 0x35d2, 0xffff, 0x363f, 0xffff, 0x36bb, 0x3719, + 0x3779, 0xffff, 0x37f0, 0x3852, 0xffff, 0xffff, 0xffff, 0x3904, + 0x395a, 0x0094, 0x0070, 0xffff, 0xffff, 0xffff, 0xffff, 0x13d0, + 0x1437, 0x1491, 0x150c, 0x1590, 0x1619, 0x16a4, 0x1700, 0x174b, + 0x17a0, 0x17ff, 0x1879, 0x18df, 0x193d, 0x19ab, 0x1a2e, 0x1aa8, + 0x1b1d, 0x1b86, 0x1be3, 0x1c41, 0xffff, 0xffff, 0x1cd1, 0xffff, + // Entry 4FF80 - 4FFBF + 0x1d53, 0xffff, 0x1dd4, 0x1e2d, 0x1e80, 0x1eda, 0xffff, 0xffff, + 0x1f75, 0x1fd9, 0x2043, 0xffff, 0xffff, 0xffff, 0x20fa, 0xffff, + 0x2183, 0x21f6, 0xffff, 0x228f, 0x2306, 0x2362, 0xffff, 0xffff, + 0xffff, 0xffff, 0x2431, 0xffff, 0xffff, 0x24d8, 0x254a, 0xffff, + 0xffff, 0x25f1, 0x2654, 0x26a7, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0x27a9, 0x27fe, 0x2852, 0x28a6, 0x2913, 0xffff, + 0xffff, 0x29c6, 0xffff, 0x2a38, 0xffff, 0xffff, 0x2acb, 0xffff, + 0x2b45, 0xffff, 0xffff, 0xffff, 0xffff, 0x2c08, 0xffff, 0x2c8e, + // Entry 4FFC0 - 4FFFF + 0x2d04, 0x2d6a, 0x2dc4, 0xffff, 0xffff, 0xffff, 0x2e6b, 0x2ed2, + 0x2f3d, 0xffff, 0xffff, 0x2fea, 0x3057, 0x30ae, 0x3106, 0xffff, + 0xffff, 0x319c, 0x31f5, 0x3251, 0xffff, 0x32f4, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0x33d6, 0x3422, 0x3474, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3584, 0xffff, 0xffff, + 0x360b, 0xffff, 0x3681, 0xffff, 0x36f8, 0x3757, 0x37b6, 0xffff, + 0x3830, 0x388e, 0xffff, 0xffff, 0xffff, 0x393c, 0x399e, +} // Size: 655366 bytes + +var buckets = []string{ + bucket0, + bucket1, + bucket2, + bucket3, + bucket4, + bucket5, + bucket6, + bucket7, + bucket8, + bucket9, + bucket10, + bucket11, + bucket12, + bucket13, + bucket14, + bucket15, + bucket16, + bucket17, + bucket18, + bucket19, + bucket20, + bucket21, + bucket22, + bucket23, + bucket24, + bucket25, + bucket26, + bucket27, + bucket28, + bucket29, + bucket30, + bucket31, + bucket32, + bucket33, + bucket34, + bucket35, + bucket36, + bucket37, + bucket38, + bucket39, + bucket40, + bucket41, + bucket42, + bucket43, + bucket44, + bucket45, + bucket46, + bucket47, + bucket48, + bucket49, + bucket50, + bucket51, + bucket52, + bucket53, + bucket54, + bucket55, + bucket56, + bucket57, + bucket58, + bucket59, + bucket60, + bucket61, + bucket62, + bucket63, + bucket64, + bucket65, + bucket66, + bucket67, + bucket68, + bucket69, + bucket70, + bucket71, + bucket72, + bucket73, + bucket74, + bucket75, + bucket76, + bucket77, + bucket78, + bucket79, + bucket80, + bucket81, + bucket82, + bucket83, + bucket84, + bucket85, + bucket86, + bucket87, + bucket88, + bucket89, + bucket90, + bucket91, + bucket92, + bucket93, + bucket94, + bucket95, + bucket96, + bucket97, + bucket98, + bucket99, + bucket100, + bucket101, + bucket102, + bucket103, + bucket104, + bucket105, + bucket106, + bucket107, + bucket108, + bucket109, + bucket110, + bucket111, + bucket112, +} + +var bucket0 string = "" + // Size: 17043 bytes + "\x02BE\x03M01\x03M02\x03M03\x03M04\x03M05\x03M06\x03M07\x03M08\x03M09" + + "\x03M10\x03M11\x03M12\x011\x012\x013\x014\x015\x016\x017\x018\x019\x0210" + + "\x0211\x0212\x06{0}bis\x04{0}b\x02zi\x04chou\x03yin\x03mao\x04chen\x02si" + + "\x02wu\x03wei\x04shen\x03you\x02xu\x03hai\x0dspring begins\x0arain water" + + "\x0einsects awaken\x0espring equinox\x10bright and clear\x0agrain rain" + + "\x0dsummer begins\x0agrain full\x0cgrain in ear\x0fsummer solstice\x0ami" + + "nor heat\x0amajor heat\x0dautumn begins\x0bend of heat\x09white dew\x0ea" + + "utumn equinox\x08cold dew\x0efrost descends\x0dwinter begins\x0aminor sn" + + "ow\x0amajor snow\x0fwinter solstice\x0aminor cold\x0amajor cold\x06jia-z" + + "i\x07yi-chou\x08bing-yin\x08ding-mao\x07wu-chen\x05ji-si\x07geng-wu\x07x" + + "in-wei\x08ren-shen\x07gui-you\x06jia-xu\x06yi-hai\x07bing-zi\x09ding-cho" + + "u\x06wu-yin\x06ji-mao\x09geng-chen\x06xin-si\x06ren-wu\x07gui-wei\x08jia" + + "-shen\x06yi-you\x07bing-xu\x08ding-hai\x05wu-zi\x07ji-chou\x08geng-yin" + + "\x07xin-mao\x08ren-chen\x06gui-si\x06jia-wu\x06yi-wei\x09bing-shen\x08di" + + "ng-you\x05wu-xu\x06ji-hai\x07geng-zi\x08xin-chou\x07ren-yin\x07gui-mao" + + "\x08jia-chen\x05yi-si\x07bing-wu\x08ding-wei\x07wu-shen\x06ji-you\x07gen" + + "g-xu\x07xin-hai\x06ren-zi\x08gui-chou\x07jia-yin\x06yi-mao\x09bing-chen" + + "\x07ding-si\x05wu-wu\x06ji-wei\x09geng-shen\x07xin-you\x06ren-xu\x07gui-" + + "hai\x11r(U) MMMM d, EEEE\x0br(U) MMMM d\x07r MMM d\x07r-MM-dd\x07{1} {0}" + + "\x04Tout\x04Baba\x05Hator\x05Kiahk\x04Toba\x06Amshir\x08Baramhat\x09Bara" + + "mouda\x07Bashans\x05Paona\x04Epep\x05Mesra\x05Nasie\x0213\x04ERA0\x04ERA" + + "1\x08Meskerem\x06Tekemt\x05Hedar\x06Tahsas\x03Ter\x07Yekatit\x07Megabit" + + "\x06Miazia\x06Genbot\x04Sene\x05Hamle\x07Nehasse\x07Pagumen\x10G y MMMM " + + "d, EEEE\x0aG y MMMM d\x09G y MMM d\x0dGGGGG y-MM-dd\x03Sun\x03Mon\x03Tue" + + "\x03Wed\x03Thu\x03Fri\x03Sat\x01S\x01M\x01T\x01W\x01F\x02Q1\x02Q2\x02Q3" + + "\x02Q4\x02AM\x02PM\x03BCE\x02CE\x0ey MMMM d, EEEE\x08y MMMM d\x07y MMM d" + + "\x07y-MM-dd\x0dHH:mm:ss zzzz\x0aHH:mm:ss z\x08HH:mm:ss\x05HH:mm\x06Tishr" + + "i\x07Heshvan\x06Kislev\x05Tevet\x06Shevat\x06Adar I\x04Adar\x07Adar II" + + "\x05Nisan\x04Iyar\x05Sivan\x05Tamuz\x02Av\x04Elul\x07Chaitra\x08Vaisakha" + + "\x08Jyaistha\x06Asadha\x07Sravana\x06Bhadra\x06Asvina\x07Kartika\x0aAgra" + + "hayana\x05Pausa\x05Magha\x08Phalguna\x04Saka\x04Muh.\x04Saf.\x06Rab. I" + + "\x07Rab. II\x06Jum. I\x07Jum. II\x04Raj.\x04Sha.\x04Ram.\x05Shaw.\x09Dhu" + + "ʻl-Q.\x09Dhuʻl-H.\x08Muharram\x05Safar\x08Rabiʻ I\x09Rabiʻ II\x08Jumada" + + " I\x09Jumada II\x05Rajab\x08Shaʻban\x07Ramadan\x07Shawwal\x0eDhuʻl-Qiʻda" + + "h\x0dDhuʻl-Hijjah\x02AH\x11Taika (645–650)\x13Hakuchi (650–671)\x13Hakuh" + + "ō (672–686)\x13Shuchō (686–701)\x12Taihō (701–704)\x11Keiun (704–708)" + + "\x11Wadō (708–715)\x11Reiki (715–717)\x12Yōrō (717–724)\x11Jinki (724–72" + + "9)\x13Tenpyō (729–749)\x1aTenpyō-kampō (749–749)\x1bTenpyō-shōhō (749–75" + + "7)\x19Tenpyō-hōji (757–765)\x19Tenpyō-jingo (765–767)\x17Jingo-keiun (76" + + "7–770)\x11Hōki (770–780)\x12Ten-ō (781–782)\x13Enryaku (782–806)\x12Daid" + + "ō (806–810)\x12Kōnin (810–824)\x13Tenchō (824–834)\x11Jōwa (834–848)" + + "\x11Kajō (848–851)\x11Ninju (851–854)\x12Saikō (854–857)\x12Ten-an (857–" + + "859)\x12Jōgan (859–877)\x13Gangyō (877–885)\x11Ninna (885–889)\x13Kanpyō" + + " (889–898)\x13Shōtai (898–901)\x10Engi (901–923)\x12Enchō (923–931)\x12J" + + "ōhei (931–938)\x13Tengyō (938–947)\x14Tenryaku (947–957)\x13Tentoku (95" + + "7–961)\x10Ōwa (961–964)\x12Kōhō (964–968)\x10Anna (968–970)\x13Tenroku (" + + "970–973)\x14Ten’en (973–976)\x12Jōgen (976–978)\x12Tengen (978–983)\x11E" + + "ikan (983–985)\x11Kanna (985–987)\x10Eien (987–989)\x10Eiso (989–990)" + + "\x15Shōryaku (990–995)\x14Chōtoku (995–999)\x14Chōhō (999–1004)\x14Kankō" + + " (1004–1012)\x14Chōwa (1012–1017)\x14Kannin (1017–1021)\x12Jian (1021–10" + + "24)\x13Manju (1024–1028)\x15Chōgen (1028–1037)\x17Chōryaku (1037–1040)" + + "\x16Chōkyū (1040–1044)\x15Kantoku (1044–1046)\x14Eishō (1046–1053)\x13Te" + + "ngi (1053–1058)\x14Kōhei (1058–1065)\x15Jiryaku (1065–1069)\x14Enkyū (10" + + "69–1074)\x14Shōho (1074–1077)\x17Shōryaku (1077–1081)\x13Eihō (1081–1084" + + ")\x14Ōtoku (1084–1087)\x13Kanji (1087–1094)\x13Kahō (1094–1096)\x14Eichō" + + " (1096–1097)\x15Jōtoku (1097–1099)\x13Kōwa (1099–1104)\x14Chōji (1104–11" + + "06)\x14Kashō (1106–1108)\x14Tennin (1108–1110)\x14Ten-ei (1110–1113)\x14" + + "Eikyū (1113–1118)\x16Gen’ei (1118–1120)\x13Hōan (1120–1124)\x13Tenji (11" + + "24–1126)\x13Daiji (1126–1131)\x15Tenshō (1131–1132)\x16Chōshō (1132–1135" + + ")\x13Hōen (1135–1141)\x12Eiji (1141–1142)\x13Kōji (1142–1144)\x17Ten’yō " + + "(1144–1145)\x14Kyūan (1145–1151)\x14Ninpei (1151–1154)\x14Kyūju (1154–11" + + "56)\x14Hōgen (1156–1159)\x13Heiji (1159–1160)\x15Eiryaku (1160–1161)\x12" + + "Ōho (1161–1163)\x15Chōkan (1163–1165)\x13Eiman (1165–1166)\x16Nin’an (1" + + "166–1169)\x12Kaō (1169–1171)\x14Shōan (1171–1175)\x13Angen (1175–1177)" + + "\x14Jishō (1177–1181)\x13Yōwa (1181–1182)\x12Juei (1182–1184)\x16Genryak" + + "u (1184–1185)\x13Bunji (1185–1190)\x15Kenkyū (1190–1199)\x14Shōji (1199–" + + "1201)\x14Kennin (1201–1204)\x15Genkyū (1204–1206)\x16Ken’ei (1206–1207)" + + "\x14Jōgen (1207–1211)\x16Kenryaku (1211–1213)\x14Kenpō (1213–1219)\x15Jō" + + "kyū (1219–1222)\x13Jōō (1222–1224)\x14Gennin (1224–1225)\x14Karoku (1225" + + "–1227)\x13Antei (1227–1229)\x13Kanki (1229–1232)\x13Jōei (1232–1233)" + + "\x15Tenpuku (1233–1234)\x16Bunryaku (1234–1235)\x13Katei (1235–1238)\x16" + + "Ryakunin (1238–1239)\x15En’ō (1239–1240)\x13Ninji (1240–1243)\x14Kangen " + + "(1243–1247)\x13Hōji (1247–1249)\x15Kenchō (1249–1256)\x14Kōgen (1256–125" + + "7)\x14Shōka (1257–1259)\x15Shōgen (1259–1260)\x16Bun’ō (1260–1261)\x15Kō" + + "chō (1261–1264)\x16Bun’ei (1264–1275)\x13Kenji (1275–1278)\x13Kōan (1278" + + "–1288)\x14Shōō (1288–1293)\x13Einin (1293–1299)\x14Shōan (1299–1302)" + + "\x14Kengen (1302–1303)\x13Kagen (1303–1306)\x14Tokuji (1306–1308)\x14Enk" + + "yō (1308–1311)\x14Ōchō (1311–1312)\x14Shōwa (1312–1317)\x14Bunpō (1317–1" + + "319)\x13Genō (1319–1321)\x14Genkō (1321–1324)\x16Shōchū (1324–1326)\x15K" + + "aryaku (1326–1329)\x15Gentoku (1329–1331)\x14Genkō (1331–1334)\x13Kenmu " + + "(1334–1336)\x13Engen (1336–1340)\x15Kōkoku (1340–1346)\x15Shōhei (1346–1" + + "370)\x15Kentoku (1370–1372)\x15Bunchū (1372–1375)\x13Tenju (1375–1379)" + + "\x16Kōryaku (1379–1381)\x13Kōwa (1381–1384)\x15Genchū (1384–1392)\x15Mei" + + "toku (1384–1387)\x13Kakei (1387–1389)\x13Kōō (1389–1390)\x15Meitoku (139" + + "0–1394)\x12Ōei (1394–1428)\x16Shōchō (1428–1429)\x14Eikyō (1429–1441)" + + "\x15Kakitsu (1441–1444)\x16Bun’an (1444–1449)\x15Hōtoku (1449–1452)\x16K" + + "yōtoku (1452–1455)\x15Kōshō (1455–1457)\x16Chōroku (1457–1460)\x15Kanshō" + + " (1460–1466)\x15Bunshō (1466–1467)\x13Ōnin (1467–1469)\x14Bunmei (1469–1" + + "487)\x16Chōkyō (1487–1489)\x14Entoku (1489–1492)\x13Meiō (1492–1501)\x13" + + "Bunki (1501–1504)\x14Eishō (1504–1521)\x13Taiei (1521–1528)\x16Kyōroku (" + + "1528–1532)\x14Tenbun (1532–1555)\x13Kōji (1555–1558)\x14Eiroku (1558–157" + + "0)\x13Genki (1570–1573)\x15Tenshō (1573–1592)\x15Bunroku (1592–1596)\x15" + + "Keichō (1596–1615)\x13Genna (1615–1624)\x16Kan’ei (1624–1644)\x14Shōho (" + + "1644–1648)\x13Keian (1648–1652)\x13Jōō (1652–1655)\x15Meireki (1655–1658" + + ")\x13Manji (1658–1661)\x14Kanbun (1661–1673)\x13Enpō (1673–1681)\x13Tenn" + + "a (1681–1684)\x15Jōkyō (1684–1688)\x15Genroku (1688–1704)\x13Hōei (1704–" + + "1711)\x16Shōtoku (1711–1716)\x15Kyōhō (1716–1736)\x14Genbun (1736–1741)" + + "\x14Kanpō (1741–1744)\x14Enkyō (1744–1748)\x16Kan’en (1748–1751)\x15Hōre" + + "ki (1751–1764)\x13Meiwa (1764–1772)\x15An’ei (1772–1781)\x14Tenmei (1781" + + "–1789)\x14Kansei (1789–1801)\x14Kyōwa (1801–1804)\x13Bunka (1804–1818)" + + "\x14Bunsei (1818–1830)\x14Tenpō (1830–1844)\x13Kōka (1844–1848)\x12Kaei " + + "(1848–1854)\x13Ansei (1854–1860)\x16Man’en (1860–1861)\x15Bunkyū (1861–1" + + "864)\x13Genji (1864–1865)\x13Keiō (1865–1868)\x05Meiji\x07Taishō\x06Shōw" + + "a\x06Heisei\x01H\x09Farvardin\x0bOrdibehesht\x07Khordad\x03Tir\x06Mordad" + + "\x09Shahrivar\x04Mehr\x04Aban\x04Azar\x03Dey\x06Bahman\x06Esfand\x02AP" + + "\x0dBefore R.O.C.\x06R.O.C.\x03Era\x04Year\x09last year\x09this year\x09" + + "next year\x06+{0} y\x06-{0} y\x07Quarter\x0clast quarter\x0cthis quarter" + + "\x0cnext quarter\x06+{0} Q\x06-{0} Q\x05Month\x0alast month\x0athis mont" + + "h\x0anext month\x06+{0} m\x06-{0} m\x04Week\x09last week\x09this week" + + "\x09next week\x06+{0} w\x06-{0} w\x0fthe week of {0}\x0dWeek Of Month" + + "\x03Day\x09yesterday\x05today\x08tomorrow\x06+{0} d\x06-{0} d\x0bDay Of " + + "Year\x0fDay of the Week\x10Weekday Of Month\x0blast Sunday\x0bthis Sunda" + + "y\x0bnext Sunday\x0c+{0} Sundays\x0c-{0} Sundays\x0blast Monday\x0bthis " + + "Monday\x0bnext Monday\x0c+{0} Mondays\x0c-{0} Mondays\x0clast Tuesday" + + "\x0cthis Tuesday\x0cnext Tuesday\x0d+{0} Tuesdays\x0d-{0} Tuesdays\x0ela" + + "st Wednesday\x0ethis Wednesday\x0enext Wednesday\x0f+{0} Wednesdays\x0f-" + + "{0} Wednesdays\x0dlast Thursday\x0dthis Thursday\x0dnext Thursday\x0e+{0" + + "} Thursdays\x0e-{0} Thursdays\x0blast Friday\x0bthis Friday\x0bnext Frid" + + "ay\x0c+{0} Fridays\x0c-{0} Fridays\x0dlast Saturday\x0dthis Saturday\x0d" + + "next Saturday\x0e+{0} Saturdays\x0e-{0} Saturdays\x09Dayperiod\x04Hour" + + "\x09this hour\x06+{0} h\x06-{0} h\x06Minute\x0bthis minute\x08+{0} min" + + "\x08-{0} min\x06Second\x03now\x06+{0} s\x06-{0} s\x04Zone\x0d+HH:mm;-HH:" + + "mm\x06GMT{0}\x03GMT\x03{0}\x08{0} (+1)\x08{0} (+0)\x03UTC\x10EEEE dd MMM" + + "M y G\x0bdd MMMM y G\x0add MMM y G\x04Jan.\x04Feb.\x04Mrt.\x04Apr.\x03Me" + + "i\x04Jun.\x04Jul.\x04Aug.\x04Sep.\x04Okt.\x04Nov.\x04Des.\x01J\x01A\x01O" + + "\x01N\x01D\x08Januarie\x09Februarie\x05Maart\x05April\x05Junie\x05Julie" + + "\x08Augustus\x09September\x07Oktober\x08November\x08Desember\x03So.\x03M" + + "a.\x03Di.\x03Wo.\x03Do.\x03Vr.\x03Sa.\x01V\x06Sondag\x07Maandag\x07Dinsd" + + "ag\x08Woensdag\x09Donderdag\x06Vrydag\x08Saterdag\x02K1\x02K2\x02K3\x02K" + + "4\x0d1ste kwartaal\x0c2de kwartaal\x0c3de kwartaal\x0c4de kwartaal\x09mi" + + "ddernag\x03vm.\x03nm.\x0adie oggend\x0adie middag\x08die aand\x07die nag" + + "\x02mn\x01v\x01n\x01o\x01m\x01a\x06oggend\x06middag\x04aand\x03nag\x0dvo" + + "or Christus\x1bvoor die gewone jaartelling\x0bna Christus\x12gewone jaar" + + "telling\x01k\x01t\x01s\x01z\x01f\x01d\x01l\x01c\x01g\x01u\x07ዓ/ም\x17جمهو" + + "رية الصي\x0fجرينتش{0}\x0cجرينتش\x01F\x01M\x01D\x01I\x0c{0} bisiestu\x01" + + "L\x01M\x01X\x01S\x027b\x047bis\x18Tenpyō-kampō (749-749)\x19Tenpyō-shōhō" + + " (749-757)\x17Tenpyō-hōji (757-765)\x17Tenpyō-jingo (765-767)\x15Jingo-k" + + "eiun (767-770)\x10Ten-ō (781-782)\x10Ten-an (857-859)\x12Ten-ei (1110-11" + + "13)\x11En-ō (1239-1240)\x0aera Shōwa\x03GMT\x01h\x01b\x02ŋ\x01j\x01F\x01" + + "E\x01O\x04Lelo\x01K\x01W\x11Гринуич{0}\x0eГринуич'{0}, лятно часово врем" + + "е'{0} – стандартно време\x01N\x01A\x01S\x07GMT {0}\x03GMT\x06GMT{0}\x01" + + "P\x01U\x02Č\x01p\x02č\x13{0}, ljetno vrijeme\x17{0}, standardno vrijeme" + + "\x0210\x0211\x0212\x02xu\x06GMT{0}\x03GMT\x03GMT\x01F\x01M\x01D\x01R\x0a" + + "ئەمڕۆ\x08سبەی\x02Ú\x05Meiji\x07Taishō\x06Shōwa\x06Heisei\x06GMT{0}\x03G" + + "MT\x02Ch\x01G\x02Rh\x02Ll\x02Ll\x01O\x01L\x06Minguo\x08{0} (+1)\x08{0} (" + + "+0)\x05März\x03Mai\x04Juni\x04Juli\x04Dez.\x03Mo.\x03Mi.\x03Fr.\x06GMT{0" + + "}\x03GMT\x01M\x01Z\x01S\x01w\x01e\x02ɗ\x01F\x01A\x01U\x01O\x01N\x01D!ཇི་" + + "ཨེམ་ཏི་{0}\x1eཇི་ཨེམ་ཊི་\x01y\x014\x02am\x02pm\x04Feb.\x04Mar.\x04Apr." + + "\x03May\x04Aug.\x04Sep.\x04Oct.\x04Nov.\x04Dec.\x05d/M/r\x0bd/M/y GGGGG" + + "\x06d/M/yy\x01A\x02Ĵ\x03GMT\x06GMT{0}\x03GMT\x019\x0212\x03Hun\x03Hul" + + "\x03Ago\x03Set\x03Okt\x03Nob\x03Dis\x03GMT\x14Daylight Time ng {0}\x08{0" + + "} (+0)\x01B\x01Y\x13Tempyō (729–749)\x18Tempyō-kampō (749-749)\x19Tempyō" + + "-shōhō (749-757)\x17Tempyō-hōji (757-765)\x17Temphō-jingo (765-767)\x13K" + + "emmu (1334–1336)\x16Hōryaku (1751–1764)\x01M\x01S\x01J\x01V\x02mo\x02ti" + + "\x02wo\x02to\x02fr\x02so\x09Vaishakha\x08Jyeshtha\x09Aashaadha\x09Shraav" + + "ana\x0bBhaadrapada\x07Ashvina\x08Kaartika\x06Pausha\x06Maagha\x09Phaalgu" + + "na\x03GMT\x01B\x01C\x06MAG{0}\x03MAG\x08{0} (+1)\x02Ò\x14Tìde samhraidh:" + + " {0}\x0cBun-àm: {0}\x03GMT\x03GMT\x03GMT\x05Hedar\x06Tahsas\x06Genbot" + + "\x05Hamle\x01P\x04Saf.\x06Rab. I\x07Rab. II\x04Raj.\x04Ram.\x05Safar\x05" + + "Rajab\x07Ramadan\x02š\x06GMT{0}\x03GMT\x06Amshir\x08Baramhat\x07Bashans" + + "\x02Á\x02Sz\x01K\x03Sze\x02Cs\x03Szo\x03GMT\x08{0} (+1)\x02wu\x06Kislev" + + "\x05Tevet\x06Adar I\x04Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x05Tamu" + + "z\x02Av\x04Elul\x04Saf.\x04Ram.\x05Syaw.\x05Safar\x09Sya’ban\x08Ramadhan" + + "\x06Syawal\x11Saiko (854–857)\x12Tennan (857–859)\x12Genkei (877–885)" + + "\x13Kampyō (889–898)\x13Shōhei (931–938)\x10Ten-en (973-976)\x0fEi-en (9" + + "87-989)\x12Eiho (1081–1084)\x12Kaho (1094–1096)\x16Shōtoku (1097–1099)" + + "\x12Gen-ei (1118-1120)\x12Hoan (1120–1124)\x12Hoen (1135–1141)\x14Tenyō " + + "(1144–1145)\x13Hogen (1156–1159)\x12Nin-an (1166-1169)\x16Genryuku (1184" + + "–1185)\x12Ken-ei (1206-1207)\x15Shōgen (1207–1211)\x16Shōkyū (1219–122" + + "2)\x15Tempuku (1233–1234)\x12Bun-ō (1260-1261)\x12Bun-ei (1264-1275)\x13" + + "Enkei (1308–1311)\x15Genkyō (1321–1324)\x14Kareki (1326–1329)\x12Bun-an " + + "(1444-1449)\x14Tenmon (1532–1555)\x13Genwa (1615–1624)\x12Kan-ei (1624-1" + + "644)\x14Shōō (1652–1655)\x16Meiryaku (1655–1658)\x13Tenwa (1681–1684)" + + "\x12Kan-en (1748-1751)\x11An-ei (1772-1781)\x12Man-en (1860-1861)\x05Mei" + + "ji\x07Taishō\x06Shōwa\x06Heisei\x01M\x02Þ\x06GMT{0}\x03GMT\x10{0} (sumar" + + "tími)\x12{0} (staðaltími)\x08lɔꞋɔ\x01M\x01S\x02Ɣ\x01T\x02Ĩ\x01M\x01D\x01" + + "N\x01A\x02II\x03III\x02IV\x01F\x01S\x01O\x01T\x01L\x02KO\x1cម៉ោង\u200bសក" + + "ល {0}\x18ម៉ោង\u200bសកល\x06GMT{0}\x03GMT\x0211\x05Fäb.\x05Mäz.\x03Mai" + + "\x04Jun.\x04Jul.\x04Ouj.\x05Säp.\x04Okt.\x04Nov.\x04Dez.\x03GMT\x04Feb." + + "\x05Mäe.\x04Abr.\x03Mee\x04Juni\x04Juli\x04Mé.\x04Dë.\x04Më.\x03Fr.\x03S" + + "a.\x06Minguo\x02ɔ\x02si\x02Š\x13Hakuči (650–671)\x12Hakuho (672–686)\x12" + + "Šučo (686–701)\x11Taiho (701–704)\x10Vado (708–715)\x10Joro (717–724)" + + "\x12Tempio (729–749)\x18Tempio-kampo (749–749)\x18Tempio-šoho (749–757)" + + "\x18Tempio-hodzi (757–765)\x18Tempo-dzingo (765–767)\x18Dzingo-keiun (76" + + "7–770)\x10Hoki (770–780)\x11Ten-o (781–782)\x13Enrjaku (782–806)\x11Daid" + + "o (806–810)\x11Konin (810–824)\x12Tenčo (824–834)\x11Šova (834–848)\x10K" + + "ajo (848–851)\x11Tenan (857–859)\x11Jogan (859–877)\x11Ninja (885–889)" + + "\x12Kampjo (889–898)\x12Šotai (898–901)\x11Enčo (923–931)\x12Šohei (931–" + + "938)\x12Tengjo (938–947)\x14Tenriaku (947–957)\x0fOva (961–964)\x10Koho " + + "(964–968)\x0fAna (968–970)\x12Ten-en (973–976)\x11Jogen (976–978)\x10Kan" + + "a (985–987)\x11Ei-en (987–989)\x14Šorjaku (990–995)\x13Čotoku (995–999)" + + "\x12Čoho (999–1004)\x13Kanko (1004–1012)\x13Čova (1012–1017)\x13Kanin (1" + + "017–1021)\x14Džian (1021–1024)\x16Mandžiu (1024–1028)\x14Čogen (1028–103" + + "7)\x16Čorjaku (1037–1040)\x14Čokju (1040–1044)\x13Eišo (1046–1053)\x13Ko" + + "hei (1058–1065)\x17Džirjaku (1065–1069)\x13Enkju (1069–1074)\x13Šoho (10" + + "74–1077)\x16Šorjaku (1077–1081)\x11Eiho (1081–084)\x13Otoku (1084–1087)" + + "\x15Kandži (1087–1094)\x13Eičo (1096–1097)\x15Šotoku (1097–1099)\x12Kova" + + " (1099–1104)\x15Čodži (1104–1106)\x13Kašo (1106–1108)\x13Tenin (1108–111" + + "0)\x13Eikju (1113–1118)\x14Gen-ei (1118–1120)\x15Tendži (1124–1126)\x15D" + + "aidži (1126–1131)\x14Tenšo (1131–1132)\x14Čošo (1132–1135)\x14Eidži (114" + + "1–1142)\x14Kodži (1142–1144)\x13Tenjo (1144–1145)\x13Kjuan (1145–1151)" + + "\x13Kjuju (1154–1156)\x15Heidži (1159–1160)\x15Eirjaku (1160–1161)\x11Oh" + + "o (1161–1163)\x14Čokan (1163–1165)\x14Nin-an (1166–1169)\x11Kao (1169–11" + + "71)\x13Šoan (1171–1175)\x15Džišo (1177–1181)\x12Jova (1181–1182)\x14Džue" + + "i (1182–1184)\x16Genrjuku (1184–1185)\x15Bundži (1185–1190)\x14Kenkju (1" + + "190–1199)\x15Šodži (1199–1201)\x13Kenin (1201–1204)\x14Genkju (1204–1206" + + ")\x14Ken-ei (1206–1207)\x14Šogen (1207–1211)\x16Kenrjaku (1211–1213)\x13" + + "Kenpo (1213–1219)\x14Šokju (1219–1222)\x12Džu (1222–1224)\x13Genin (1224" + + "–1225)\x14Džoei (1232–1233)\x16Bunrjaku (1234–1235)\x16Rjakunin (1238–" + + "1239)\x12En-o (1239–1240)\x15Nindži (1240–1243)\x14Hodži (1247–1249)\x14" + + "Kenčo (1249–1256)\x13Kogen (1256–1257)\x13Šoka (1257–1259)\x14Šogen (125" + + "9–1260)\x13Bun-o (1260–1261)\x13Kočo (1261–1264)\x14Bun-ei (1264–1275)" + + "\x15Kendži (1275–1278)\x12Koan (1278–1288)\x11Šu (1288–1293)\x13Šoan (12" + + "99–1302)\x16Tokudži (1306–1308)\x12Očo (1311–1312)\x13Šova (1312–1317)" + + "\x13Bunpo (1317–1319)\x14Dženo (1319–1321)\x16Dženkjo (1321–1324)\x14Šoč" + + "u (1324–1326)\x13Genko (1331–1334)\x12Kemu (1334–1336)\x14Kokoku (1340–1" + + "346)\x14Šohei (1346–1370)\x14Bunču (1372–1375)\x15Tendžu (1375–1379)\x15" + + "Korjaku (1379–1381)\x12Kova (1381–1384)\x14Genču (1384–1392)\x10Ku (1389" + + "–1390)\x11Oei (1394–1428)\x14Šočo (1428–1429)\x13Eikjo (1429–1441)\x14" + + "Bun-an (1444–1449)\x14Hotoku (1449–1452)\x15Kjotoku (1452–1455)\x13Košo " + + "(1455–1457)\x15Čoroku (1457–1460)\x14Kanšo (1460–1466)\x14Bunšo (1466–14" + + "67)\x12Onin (1467–1469)\x14Čokjo (1487–1489)\x12Meio (1492–1501)\x13Eišo" + + " (1504–1521)\x15Kjoroku (1528–1532)\x14Kodži (1555–1558)\x14Tenšo (1573–" + + "1592)\x14Keičo (1596–1615)\x13Genva (1615–1624)\x14Kan-ei (1624–1644)" + + "\x13Šoho (1644–1648)\x11Šu (1652–1655)\x16Meirjaku (1655–1658)\x15Mandži" + + " (1658–1661)\x12Enpo (1673–1681)\x13Tenva (1681–1684)\x15Džokjo (1684–16" + + "88)\x12Hoei (1704–1711)\x15Šotoku (1711–1716)\x13Kjoho (1716–1736)\x13Ka" + + "npo (1741–1744)\x13Enkjo (1744–1748)\x14Kan-en (1748–1751)\x15Horjaku (1" + + "751–1764)\x13Meiva (1764–1772)\x13An-ei (1772–1781)\x13Kjova (1801–1804)" + + "\x13Tenpo (1830–1844)\x12Koka (1844–1848)\x14Man-en (1860–1861)\x14Bunkj" + + "u (1861–1864)\x15Gendži (1864–1865)\x13Keiko (1865–1868)\x07Meidži\x06Ta" + + "išo\x05Šova\x01U\x02Q2\x02Q3\x02Q4\x06GMT{0}\x03GMT\x16ജിഎംടി {0}\x12ജിഎ" + + "ംടി\x0210\x0211\x0212\x08[GMT]{0}\x05[GMT]\x06R.O.C.\x02Ġ\x03GMT\x08{0" + + "} (+1)\x08{0} (+0)\x07Neetsee\x01T\x0dHH.mm.ss zzzz\x0aHH.mm.ss z\x08HH." + + "mm.ss\x05HH.mm\x01H\x05März\x04Juni\x04Juli\x05März\x03Mai\x04Juni\x04Ju" + + "li\x03GMT\x0bna Christus\x02Ŋ\x01Q\x02KB\x03GMT\x06Amshir\x08Baramhat" + + "\x07Bashans\x05Hedar\x06Tahsas\x06Genbot\x05Hamle\x02ś\x02Ś\x04Saf.\x06R" + + "ab. I\x07Rab. II\x07Dżu. I\x08Dżu. II\x03Ra.\x04Sza.\x04Ram.\x05Szaw." + + "\x08Zu al-k.\x08Zu al-h.\x05Safar\x0aDżumada I\x0bDżumada II\x07Radżab" + + "\x06Szaban\x07Ramadan\x07Szawwal\x0aZu al-kada\x0fZu al-hidżdża\x06Kisle" + + "v\x05Tevet\x06Adar I\x04Adar\x07Adar II\x05Nisan\x05Sivan\x05Tamuz\x02Av" + + "\x04Elul\x03Tir\x04Mehr\x06Bahman\x06Esfand\x04d.C.\x06Hathor\x06Mesori" + + "\x08El Nasii\x02Ma\x02Mi\x02Ma\x02Mi\x06Minguo\x03GMT\x08{0} (+1)\x08{0}" + + " (+0)\x01S\x01m\x01n\x01d\x03GMT\x01V\x01M\x01K\x01T\x01L\x01q\x01k\x15O" + + "ra e Grinuiçit: {0}\x10Ora e Grinuiçit\x06GMT{0}\x03GMT\x1a{0}, летње вр" + + "еме${0}, стандардно време\x07Jekatit\x06Nehase\x06Reb. 1\x06Reb. 2\x08D" + + "žum. 1\x08Džum. 2\x06Redž.\x04Ša.\x04Še.\x06Zul-k.\x06Zul-h.\x16Tempio-" + + "kampo (749-749)\x16Tempio-šoho (749-757)\x16Tempio-hođi (757-765)\x16Tem" + + "po-đingo (765-767)\x16Đingo-keiun (767-770)\x0fTen-o (781-782)\x11Enđi (" + + "901–923)\x13Đian (1021–1024)\x14Tenđi (1053–1058)\x16Đirjaku (1065–1069)" + + "\x13Eišo (1081–1084)\x14Kanđi (1087–1094)\x14Čođi (1104–1106)\x13Đen-ei " + + "(1118-1120)\x14Tenđi (1124–1126)\x14Daiđi (1126–1131)\x15Čošao (1132–113" + + "5)\x13Eiđi (1141–1142)\x13Kođi (1142–1144)\x14Heiđi (1159–1160)\x14Đišo " + + "(1177–1181)\x13Đuei (1182–1184)\x14Bunđi (1185–1190)\x14Šođi (1199–1201)" + + "\x11Đu (1222–1224)\x14Đenin (1224–1225)\x13Đoei (1232–1233)\x10En-o (123" + + "9-1240)\x13Hođi (1247–1249)\x11Bun-o (1260-1261)\x14Kenđi (1275–1278)" + + "\x15Tokuđi (1306–1308)\x13Đeno (1319–1321)\x15Đenkjo (1321–1324)\x13Buču" + + " (1372–1375)\x13Kođi (1555–1558)\x13Jokjo (1684–1688)\x14Genđi (1864–186" + + "5)\x06Meiđi\x06Haisei\x03GMT\x11{0}, letnje vreme\x15{0}, standardno vre" + + "me\x06Bâbâ\x07Hâtour\x05Kiahk\x06Toubah\x07Amshîr\x09Barmahât\x09Barmoud" + + "ah\x0aBa’ounah\x05Abîb\x05Misra\x07Al-nasi\x09Vaishākh\x09Jyaishtha\x09Ā" + + "shādha\x09Shrāvana\x0aBhādrapad\x07Āshwin\x07Kārtik\x0eMārgashīrsha\x05P" + + "aush\x05Māgh\x08Phālgun\x05Safar\x10Rabi’ al-awwal\x10Rabi’ al-akhir\x0c" + + "Jumada-l-ula\x0fJumada-l-akhira\x05Rajab\x09Sha’ban\x07Ramadan\x0dDhu-l-" + + "ga’da\x0bDhu-l-hijja\x1aTempyō-kampō (749–749)\x1bTempyō-shōhō (749–757)" + + "\x19Tempyō-hōji (757–765)\x19Temphō-jingo (765–767)\x13En-ō (1239–1240)" + + "\x14Bun-ō (1260–1261)\x08Khordād\x03Tir\x07Mordād\x04Mehr\x06Ābān\x05Āza" + + "r\x06Bahman\x06Esfand\x07GMT {0}\x03GMT\x06GMT{0}\x08Rabiʻ I\x09Rabiʻ II" + + "\x08Jumada I\x09Jumada II\x06Tikimt\x05Hidar\x07Yakatit\x07Magabit\x07Mi" + + "yazya\x06Ginbot\x06Nehasa\x09Pagumiene\x10مىلادىيە\x0aمىنگو\x0fRobiʼ ul-" + + "avval\x0eRobiʼ ul-oxir\x0eJumad ul-avval\x0dJumad ul-oxir\x08Shaʼbon\x07" + + "Ramazon\x07Shavvol\x0aZul-qaʼda\x09Zul-hijja\x08{0} (+1)\x08{0} (+0)\x01" + + "6\x017\x0210\x0211\x0212\x04Baba\x05Hator\x04Toba\x08Baramhat\x05Paona" + + "\x04Epep\x05Mesra\x0213\x05Hedar\x03Ter\x06Kislev\x05Tevet\x06Adar I\x04" + + "Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x05Tamuz\x02Av\x04Elul\x07Srav" + + "ana\x06Asvina\x07Kartika\x03Tir\x06Mordad\x04Mehr\x04Aban\x04Azar\x03Dey" + + "\x1cאיבער אַכט טאָג\x02LK" + +var bucket1 string = "" + // Size: 8261 bytes + "\x04v.C.\x06v.g.j.\x04n.C.\x04g.j.\x03vgj\x02gj\x0fEEEE, dd MMMM y\x09dd" + + " MMMM y\x08dd MMM y\x03era\x04jaar\x0cverlede jaar\x0chierdie jaar\x0dvo" + + "lgende jaar\x0coor {0} jaar\x0f{0} jaar gelede\x02j.\x08kwartaal\x0fvori" + + "ge kwartaal\x10hierdie kwartaal\x11volgende kwartaal\x10oor {0} kwartaal" + + "\x10oor {0} kwartale\x13{0} kwartaal gelede\x13{0} kwartale gelede\x03kw" + + ".\x05maand\x0dverlede maand\x0cvandeesmaand\x0evolgende maand\x0eoor {0}" + + " minuut\x10{0} maand gelede\x11{0} maande gelede\x03md.\x0boor {0} md." + + "\x0e{0} md. gelede\x04week\x0cverlede week\x0bvandeesweek\x0dvolgende we" + + "ek\x0coor {0} week\x0coor {0} weke\x0f{0} week gelede\x0f{0} weke gelede" + + "\x10die week van {0}\x03wk.\x0aoor {0} w.\x0d{0} w. gelede\x03dag\x09eer" + + "gister\x06gister\x06vandag\x05môre\x08oormôre\x0e{0} dag gelede\x0e{0} d" + + "ae gelede\x02d.\x0boor {0} dag\x0boor {0} dae\x10dag van die week\x0ever" + + "lede Sondag\x0ehierdie Sondag\x0fvolgende Sondag\x0eoor {0} Sondag\x0eoo" + + "r {0} Sondae\x11{0} Sondag gelede\x11{0} Sondae gelede\x0cverlede Son." + + "\x0chierdie Son.\x0dvolgende Son.\x0fverlede Maandag\x0fhierdie Maandag" + + "\x10volgende Maandag\x0foor {0} Maandag\x0foor {0} Maandae\x12{0} Maanda" + + "g gelede\x12{0} Maandae gelede\x0bverlede Ma.\x0bhierdie Ma.\x0cvolgende" + + " Ma.\x0fverlede Dinsdag\x0fhierdie Dinsdag\x10volgende Dinsdag\x0foor {0" + + "} Dinsdag\x0foor {0} Dinsdae\x12{0} Dinsdag gelede\x12{0} Dinsdae gelede" + + "\x0bverlede Di.\x0bhierdie Di.\x0cvolgende Di.\x10verlede Woensdag\x10hi" + + "erdie Woensdag\x11volgende Woensdag\x10oor {0} Woensdag\x10oor {0} Woens" + + "dae\x13{0} Woensdag gelede\x13{0} Woensdae gelede\x0bverlede Wo.\x0bhier" + + "die Wo.\x0cvolgende Wo.\x11verlede Donderdag\x11hierdie Donderdag\x12vol" + + "gende Donderdag\x11oor {0} Donderdag\x11oor {0} Donderdae\x14{0} Donderd" + + "ag gelede\x14{0} Donderdae gelede\x0bverlede Do.\x0bhierdie Do.\x0cvolge" + + "nde Do.\x0everlede Vrydag\x0ehierdie Vrydag\x0fvolgende Vrydag\x0eoor {0" + + "} Vrydag\x0eoor {0} Vrydae\x11{0} Vrydag gelede\x11{0} Vrydae gelede\x0b" + + "verlede Vr.\x08dié Vr.\x08vlg. Vr.\x10verlede Saterdag\x10hierdie Saterd" + + "ag\x11volgende Saterdag\x10oor {0} Saterdag\x10oor {0} Saterdae\x13{0} S" + + "aterdag gelede\x13{0} Saterdae gelede\x0bverlede Sa.\x08dié Sa.\x08vlg. " + + "Sa.\x05VM/NM\x03uur\x0bhierdie uur\x0boor {0} uur\x0e{0} uur gelede\x02u" + + ".\x06minuut\x0ehierdie minuut\x11{0} minuut gelede\x11{0} minute gelede" + + "\x04min.\x0coor {0} min.\x0f{0} min. gelede\x02m.\x07sekonde\x03nou\x0fo" + + "or {0} sekonde\x10oor {0} sekondes\x12{0} sekonde gelede\x13{0} sekondes" + + " gelede\x04sek.\x0coor {0} sek.\x0f{0} sek. gelede\x02s.\x07tydsone\x07{" + + "0}-tyd\x0d{0}-dagligtyd\x10{0}-standaardtyd\x1eGekoördineerde Universele" + + " Tyd\x0fBritse somertyd\x12Ierse standaardtyd\x0fAfghanistan-tyd\x13Sent" + + "raal-Afrika-tyd\x03CAT\x0eOos-Afrika-tyd\x03EAT\x18Suid-Afrika-standaard" + + "tyd\x04SAST\x0eWes-Afrika-tyd\x17Wes-Afrika-standaardtyd\x13Wes-Afrika-s" + + "omertyd\x03WAT\x04WAST\x0aAlaska-tyd\x13Alaska-standaardtyd\x10Alaska-da" + + "gligtyd\x0bAmasone-tyd\x14Amasone-standaardtyd\x10Amasone-somertyd\x0cSe" + + "ntrale tyd\x15Sentrale standaardtyd\x12Sentrale dagligtyd\x0dOostelike t" + + "yd\x16Oostelike standaardtyd\x13Oostelike dagligtyd\x07Bergtyd\x11Berg-s" + + "tandaardtyd\x0eBerg-dagligtyd\x0dPasifiese tyd\x16Pasifiese standaardtyd" + + "\x13Pasifiese dagligtyd\x0aAnadyr-tyd\x13Anadyr-standaardtyd\x0fAnadyr-s" + + "omertyd\x08Apia-tyd\x11Apia-standaardtyd\x0eApia-dagligtyd\x0cArabiese t" + + "yd\x15Arabiese standaardtyd\x12Arabiese dagligtyd\x0fArgentinië-tyd\x18A" + + "rgentinië-standaardtyd\x14Argentinië-somertyd\x13Wes-Argentinië-tyd\x1cW" + + "es-Argentinië-standaardtyd\x18Wes-Argentinië-somertyd\x0cArmenië-tyd\x15" + + "Armenië-standaardtyd\x11Armenië-somertyd\x0eAtlantiese tyd\x17Atlantiese" + + " standaardtyd\x14Atlantiese dagligtyd\x17Sentraal-Australië-tyd!Australi" + + "ese sentraal-standaardtyd\x1eAustraliese sentrale dagligtyd\x22Australie" + + "se sentraal-Westelike tyd,Australiese sentraal-Westelike standaard-tyd(A" + + "ustraliese sentraal-Westelike dagligtyd\x19Oostelike Australiese tyd\x22" + + "Australiese Oostelike standaardtyd\x1fAustraliese Oostelike dagligtyd" + + "\x18Westelike Australië-tyd\x22Australiese Westelike standaardtyd\x1fAus" + + "traliese Westelike dagligtyd\x0fAserbeidjan-tyd\x18Aserbeidjan-standaard" + + "tyd\x14Aserbeidjan-somertyd\x09Asore-tyd\x12Asore-standaardtyd\x0eAsore-" + + "somertyd\x0eBangladesj-tyd\x17Bangladesj-standaardtyd\x13Bangladesj-some" + + "rtyd\x0bBhoetan-tyd\x0bBolivia-tyd\x0dBrasilië-tyd\x16Brasilië-standaard" + + "tyd\x12Brasilië somertyd\x16Broenei Darussalam-tyd\x0eKaap Verde-tyd\x17" + + "Kaap Verde-standaardtyd\x13Kaap Verde-somertyd\x15Chamorro-standaardtyd" + + "\x0bChatham-tyd\x14Chatham-standaardtyd\x11Chatham-dagligtyd\x09Chili-ty" + + "d\x12Chili-standaardtyd\x0eChili-somertyd\x09China-tyd\x12China-standaar" + + "dtyd\x0fChina-dagligtyd\x0eChoibalsan-tyd\x17Choibalsan-standaardtyd\x13" + + "Choibalsan-somertyd\x12Kersfeeseiland-tyd\x10Cocoseilande-tyd\x0dColombi" + + "ë-tyd\x16Colombië-standaardtyd\x12Colombië-somertyd\x0fCookeilande-tyd" + + "\x18Cookeilande-standaardtyd\x18Cookeilande-halfsomertyd\x08Kuba-tyd\x11" + + "Kuba-standaardtyd\x0eKuba-dagligtyd\x09Davis-tyd\x16Dumont-d’Urville-tyd" + + "\x0dOos-Timor-tyd\x0ePaaseiland-tyd\x17Paaseiland-standaardtyd\x13Paasei" + + "land-somertyd\x0bEcuador-tyd\x15Sentraal-Europese tyd\x1eSentraal-Europe" + + "se standaardtyd\x1aSentraal-Europese somertyd\x10Oos-Europese tyd\x19Oos" + + "-Europese standaardtyd\x15Oos-Europese somertyd\x1cVerder-oosterse Europ" + + "ese Tyd\x10Wes-Europese tyd\x19Wes-Europese standaardtyd\x15Wes-Europese" + + " somertyd\x13Falklandeilande-tyd\x1cFalklandeilande-standaardtyd\x18Falk" + + "landeilande-somertyd\x09Fidji-tyd\x12Fidji-standaardtyd\x0eFidji-somerty" + + "d\x10Frans-Guiana-tyd!Franse Suider- en Antarktiese tyd\x0dGalapagos-tyd" + + "\x0bGambier-tyd\x0cGeorgië-tyd\x15Georgië-standaardtyd\x11Georgië-somert" + + "yd\x12Gilberteilande-tyd\x14Greenwich-mediaantyd\x11Oos-Groenland-tyd" + + "\x1aOos-Groenland-standaardtyd\x16Oos-Groenland-somertyd\x11Wes-Groenlan" + + "d-tyd\x1aWes-Groenland-standaardtyd\x16Wes-Groenland-somertyd\x11Golf-st" + + "andaardtyd\x0aGuyana-tyd\x14Hawaii-Aleusiër-tyd\x1dHawaii-Aleusiër-stand" + + "aardtyd\x1aHawaii-Aleusiër-dagligtyd\x0cHongkong-tyd\x15Hongkong-standaa" + + "rdtyd\x11Hongkong-somertyd\x08Hovd-tyd\x11Hovd-standaardtyd\x0dHovd-some" + + "rtyd\x13Indië-standaardtyd\x12Indiese Oseaan-tyd\x0dIndosjina-tyd\x17Sen" + + "traal Indonesië-tyd\x12Oos-Indonesië-tyd\x12Wes-Indonesië-tyd\x08Iran-ty" + + "d\x11Iran-standaardtyd\x0eIran-dagligtyd\x0bIrkutsk-tyd\x14Irkutsk-stand" + + "aardtyd\x10Irkutsk-somertyd\x0aIsrael-tyd\x13Israel-standaardtyd\x10Isra" + + "el-dagligtyd\x09Japan-tyd\x12Japan-standaardtyd\x0fJapan-dagligtyd\x1cPe" + + "tropavlovsk-Kamchatski-tyd%Petropavlovsk-Kamchatski-standaardtyd!Petropa" + + "vlovsk-Kamchatski-somertyd\x11Oos-Kazakstan-tyd\x11Wes-Kazakstan-tyd\x0d" + + "Koreaanse tyd\x16Koreaanse standaardtyd\x13Koreaanse dagligtyd\x0aKosrae" + + "-tyd\x0fKrasnojarsk-tyd\x18Krasnojarsk-standaardtyd\x14Krasnojarsk-somer" + + "tyd\x0dKirgistan-tyd\x10Line-eilande-tyd\x0dLord Howe-tyd\x16Lord Howe-s" + + "tandaardtyd\x13Lord Howe-dagligtyd\x14Macquarie-eiland-tyd\x0bMagadan-ty" + + "d\x14Magadan-standaardtyd\x10Magadan-somertyd\x0dMaleisië-tyd\x0cMalediv" + + "e-tyd\x0dMarquesas-tyd\x13Marshalleilande-tyd\x0dMauritius-tyd\x16Maurit" + + "ius-standaardtyd\x12Mauritius-somertyd\x0aMawson-tyd\x14Noordwes-Meksiko" + + "-tyd\x1dNoordwes-Meksiko-standaardtyd\x1aNoordwes-Meksiko-dagligtyd\x19M" + + "eksikaanse Pasifiese tyd\x22Meksikaanse Pasifiese standaardtyd\x1fMeksik" + + "aanse Pasifiese dagligtyd\x0eUlaanbatar-tyd\x17Ulaanbatar-standaardtyd" + + "\x13Ulaanbatar-somertyd\x0aMoskou-tyd\x13Moskou-standaardtyd\x0fMoskou-s" + + "omertyd\x0bMianmar-tyd\x09Nauru-tyd\x09Nepal-tyd\x13Nieu-Kaledonië-tyd" + + "\x1cNieu-Kaledonië-standaardtyd\x18Nieu-Kaledonië-somertyd\x10Nieu-Seela" + + "nd-tyd\x19Nieu-Seeland-standaardtyd\x16Nieu-Seeland-dagligtyd\x10Newfoun" + + "dland-tyd\x19Newfoundland-standaardtyd\x16Newfoundland-dagligtyd\x08Niue" + + "-tyd\x12Norfolkeilande-tyd\x17Fernando de Noronha-tyd Fernando de Noronh" + + "a-standaardtyd\x1cFernando de Noronha-somertyd\x0fNovosibirsk-tyd\x18Nov" + + "osibirsk-standaardtyd\x14Novosibirsk-somertyd\x08Omsk-tyd\x11Omsk-standa" + + "ardtyd\x0dOmsk-somertyd\x0cPakistan-tyd\x15Pakistan-standaardtyd\x11Paki" + + "stan-somertyd\x09Palau-tyd\x16Papoea-Nieu-Guinee-tyd\x0cParaguay-tyd\x15" + + "Paraguay-standaardtyd\x11Paraguay-somertyd\x08Peru-tyd\x11Peru-standaard" + + "tyd\x0dPeru-somertyd\x0eFilippynse tyd\x17Filippynse standaardtyd\x13Fil" + + "ippynse somertyd\x11Fenikseilande-tyd\x1bSint-Pierre en Miquelon-tyd$Sin" + + "t-Pierre en Miquelon-standaardtyd!Sint-Pierre en Miquelon-dagligtyd\x0cP" + + "itcairn-tyd\x0aPonape-tyd\x0dPyongyang-tyd\x0bReunion-tyd\x0bRothera-tyd" + + "\x0cSakhalin-tyd\x15Sakhalin-standaardtyd\x11Sakhalin-somertyd\x0aSamara" + + "-tyd\x13Samara-standaardtyd\x10Samara-dagligtyd\x09Samoa-tyd\x12Samoa-st" + + "andaardtyd\x0fSamoa-dagligtyd\x0dSeychelle-tyd\x16Singapoer-standaardtyd" + + "\x12Solomoneilande-tyd\x11Suid-Georgië-tyd\x0cSuriname-tyd\x09Syowa-tyd" + + "\x0aTahiti-tyd\x0aTaipei-tyd\x13Taipei-standaardtyd\x10Taipei-dagligtyd" + + "\x0fTadjikistan-tyd\x0bTokelau-tyd\x09Tonga-tyd\x12Tonga-standaardtyd" + + "\x0eTonga-somertyd\x09Chuuk-tyd\x10Turkmenistan-tyd\x19Turkmenistan-stan" + + "daardtyd\x15Turkmenistan-somertyd\x0aTuvalu-tyd\x0bUruguay-tyd\x14Urugua" + + "y-standaardtyd\x10Uruguay-somertyd\x0fOesbekistan-tyd\x18Oesbekistan-sta" + + "ndaardtyd\x14Oesbekistan-somertyd\x0bVanuatu-tyd\x14Vanuatu-standaardtyd" + + "\x10Vanuatu-somertyd\x0dVenezuela-tyd\x0fVladivostok-tyd\x18Vladivostok-" + + "standaardtyd\x14Vladivostok-somertyd\x0dVolgograd-tyd\x16Volgograd-stand" + + "aardtyd\x12Volgograd-somertyd\x0aVostok-tyd\x0fWake-eiland-tyd\x14Wallis" + + " en Futuna-tyd\x0cJakoetsk-tyd\x15Jakoetsk-standaardtyd\x11Jakoetsk-some" + + "rtyd\x11Jekaterinburg-tyd\x1aJekaterinburg-standaardtyd\x16Jekaterinburg" + + "-somertyd\x0fEEEE d MMMM y G\x0ad MMMM y G\x09d MMM y G\x0dEEEE d MMMM y" + + "\x08d MMMM y\x07d MMM y\x0ad MMM, y G\x0bd/M/y GGGGG\x04nùm\x04kɨz\x04tɨ" + + "d\x03taa\x03see\x03nzu\x03dum\x04fɔe\x03dzu\x04lɔm\x03kaa\x03fwo\x03sig" + + "\x03ter\x03kua\x03kin\x03ses\x03sab\x03ata\x03mar\x03pin\x03sis\x03tal" + + "\x03arf\x04g.j.\x02gj" + +var bucket2 string = "" + // Size: 19526 bytes + "\x11ndzɔ̀ŋɔ̀nùm\x17ndzɔ̀ŋɔ̀kƗ̀zùʔ\x1bndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà\x1andzɔ̀ŋɔ̀tǎafʉ̄" + + "ghā\x0fndzɔ̀ŋèsèe\x15ndzɔ̀ŋɔ̀nzùghò\x13ndzɔ̀ŋɔ̀dùmlo\x17ndzɔ̀ŋɔ̀kwîfɔ̀e" + + "\x22ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù\x1andzɔ̀ŋɔ̀ghǔuwelɔ̀m\x1bndzɔ̀ŋɔ̀chwaʔàkaa w" + + "o\x10ndzɔ̀ŋèfwòo\x03nts\x03kpa\x04ghɔ\x04tɔm\x03ume\x04ghɨ\x03dzk\x0atsu" + + "ʔntsɨ\x0atsuʔukpà\x0btsuʔughɔe\x0ftsuʔutɔ̀mlò\x09tsuʔumè\x0dtsuʔughɨ̂m" + + "\x11tsuʔndzɨkɔʔɔ\x0ckɨbâ kɨ 1\x09ugbâ u 2\x09ugbâ u 3\x09ugbâ u 4\x03a.g" + + "\x03a.k\x0fSěe Kɨ̀lesto\x0fBǎa Kɨ̀lesto\x02SK\x02BK\x08d MMM, y\x05d/M/y" + + "\x08kɨtîgh\x07kɨnûm\x07ndzɔŋ\x05ewɨn\x06utsuʔ\x0aā zūɛɛ\x03nɛ\x08tsʉtsʉ" + + "\x15tsuʔu mɨ̀ èwɨ̄n\x09â tsɨ̀\x04tàm\x05menè\x09sɛkɔ̀n\x15dɨŋò kɨ enɨ̀gh" + + "a\x11EEEE, G y MMMM dd\x0eGGGGG yy/MM/dd\x04S-Ɔ\x04K-Ɔ\x04E-Ɔ\x03E-O\x03" + + "E-K\x03O-A\x03A-K\x04D-Ɔ\x04F-Ɛ\x04Ɔ-A\x04Ɔ-O\x04M-Ɔ\x0fSanda-Ɔpɛpɔn\x10" + + "Kwakwar-Ɔgyefuo\x0dEbɔw-Ɔbenem\x11Ebɔbira-Oforisuo\x1cEsusow Aketseaba-K" + + "ɔtɔnimba\x14Obirade-Ayɛwohomumu\x12Ayɛwoho-Kitawonsa\x0eDifuu-Ɔsandaa" + + "\x0cFankwa-Ɛbɔ\x10Ɔbɛsɛ-Ahinime\x12Ɔberɛfɛw-Obubuo\x0fMumu-Ɔpɛnimba\x03K" + + "we\x03Dwo\x03Ben\x03Wuk\x03Yaw\x03Fia\x03Mem\x07Kwesida\x06Dwowda\x06Ben" + + "ada\x06Wukuda\x05Yawda\x04Fida\x08Memeneda\x01K\x01D\x01B\x01W\x01Y\x01F" + + "\x01M\x02AN\x02EW\x0bAnsa Kristo\x0dKristo Ekyiri\x02AK\x02KE\x0fEEEE, y" + + " MMMM dd\x08yy/MM/dd\x0eh:mm:ss a zzzz\x0bh:mm:ss a z\x09h:mm:ss a\x06h:" + + "mm a\x04Bere\x03Afe\x06Bosome\x06Dapɛn\x02Da\x05Ndeda\x04Ndɛ\x07Ɔkyena" + + "\x0cDapɛn mu da\x07Da bere\x08Dɔnhwer\x04Sema\x08Sɛkɛnd\x0bBere apaamu" + + "\x12EEEE፣ d MMMM y G\x0ddd/MM/y GGGGG\x07ዓ/ዓ\x07ዓ/ም\x0fመስከረም\x0cጥቅምት\x09" + + "ኅዳር\x0cታኅሣሥ\x06ጥር\x0cየካቲት\x0cመጋቢት\x0cሚያዝያ\x0cግንቦት\x06ሰኔ\x09ሐምሌ\x09ነሐሴ" + + "\x0cጳጉሜን\x09ጃንዩ\x09ፌብሩ\x09ማርች\x09ኤፕሪ\x06ሜይ\x06ጁን\x09ጁላይ\x09ኦገስ\x09ሴፕቴ" + + "\x09ኦክቶ\x09ኖቬም\x09ዲሴም\x03ጃ\x03ፌ\x03ማ\x03ኤ\x03ሜ\x03ጁ\x03ኦ\x03ሴ\x03ኖ\x03ዲ" + + "\x0fጃንዩወሪ\x0fፌብሩወሪ\x0cኤፕሪል\x0cኦገስት\x12ሴፕቴምበር\x0fኦክቶበር\x0fኖቬምበር\x0fዲሴምበር" + + "\x09እሑድ\x06ሰኞ\x09ማክሰ\x09ረቡዕ\x09ሐሙስ\x09ዓርብ\x09ቅዳሜ\x03እ\x03ሰ\x03ረ\x03ሐ\x03" + + "ዓ\x03ቅ\x0cማክሰኞ\x07ሩብ1\x07ሩብ2\x07ሩብ3\x07ሩብ4\x0e1ኛው ሩብ\x0e2ኛው ሩብ\x0e3ኛው " + + "ሩብ\x0e4ኛው ሩብ\x13እኩለ ሌሊት\x09ጥዋት\x09ቀትር\x0cከሰዓት\x0aጥዋት1\x0dከሰዓት1\x07ማታ1" + + "\x0aሌሊት1\x03ጠ\x03ቀ\x03ከ\x16ከሰዓት በኋላ\x06ማታ\x09ሌሊት\x13ዓመተ ዓለም\x16ዓመተ ምሕረት" + + "\x07ዓ/ም\x10EEEE ፣d MMMM y\x07dd/MM/y\x0cሙሀረም\x09ሳፈር\x16ረቢዑል አወል\x16ረቢዑል " + + "አኺር\x16ጀማደል አወል\x16ጀማደል አኺር\x09ረጀብ\x0cሻእባን\x0cረመዳን\x09ሸዋል\x0fዙልቂዳህ\x0f" + + "ዙልሂጃህ\x09ዘመን\x09ዓመት\x16ያለፈው ዓመት\x13በዚህ ዓመት\x1cየሚቀጥለው ዓመት\x1dበ{0} ዓመታት " + + "ውስጥ\x1aከ{0} ዓመት በፊት\x1dከ{0} ዓመታት በፊት\x06ሩብ\x19የመጨረሻው ሩብ\x0dይህ ሩብ\x19የሚ" + + "ቀጥለው ሩብ\x0b+{0} ሩብ\x14{0} ሩብ በፊት\x06ወር\x13ያለፈው ወር\x10በዚህ ወር\x19የሚቀጥለው " + + "ወር\x17በ{0} ወር ውስጥ\x1aበ{0} ወራት ውስጥ\x17ከ{0} ወር በፊት\x1aከ{0} ወራት በፊት\x0cሳም" + + "ንት\x19ያለፈው ሳምንት\x16በዚህ ሳምንት\x1fየሚቀጥለው ሳምንት\x1dበ{0} ሳምንት ውስጥ በ{0} ሳምንታት" + + " ውስጥ\x1dከ{0} ሳምንት በፊት ከ{0} ሳምንታት በፊት\x10{0} ሳምንት\x19ባለፈው ሳምንት\x16በዚህ ሣምን" + + "ት\x06ቀን\x19ከትናንት ወዲያ\x0cትናንት\x06ዛሬ\x06ነገ\x13ከነገ ወዲያ\x17በ{0} ቀን ውስጥ\x1a" + + "በ{0} ቀናት ውስጥ\x17ከ{0} ቀን በፊት\x1aከ{0} ቀናት በፊት\x0fትላንትና\x1aበ{0} ቀኖች ውስጥ" + + "\x18ከ {0} ቀን በፊት\x1aከ{0} ቀኖች በፊት\x0cአዘቦት\x16ያለፈው እሑድ\x16የአሁኑ እሑድ\x1cየሚቀጥ" + + "ለው እሑድ\x1aበ{0} እሑድ ውስጥ\x1dበ{0} እሑዶች ውስጥ\x1aከ{0} እሑድ በፊት\x1dከ{0} እሑዶች በ" + + "ፊት\x13ያለፈው ሰኞ\x13የአሁኑ ሰኞ\x19የሚቀጥለው ሰኞ\x17በ{0} ሰኞ ውስጥ\x1dበ{0} ሰኞዎች ውስጥ" + + "\x17ከ{0} ሰኞ በፊት\x1dከ{0} ሰኞዎች በፊት\x19ያለፈው ማክሰኞ\x19የአሁኑ ማክሰኞ\x1fየሚቀጥለው ማክሰ" + + "ኞ\x1dበ{0} ማክሰኞ ውስጥ#በ{0} ማክሰኞዎች ውስጥ\x1dከ{0} ማክሰኞ በፊት#ከ{0} ማክሰኞዎች በፊት" + + "\x16ያለፈው ረቡዕ\x16የአሁኑ ረቡዕ\x1cየሚቀጥለው ረቡዕ\x1aበ{0} ረቡዕ ውስጥ በ{0} ረቡዕዎች ውስጥ" + + "\x1aከ{0} ረቡዕ በፊት ከ{0} ረቡዕዎች በፊት\x16ያለፈው ሐሙስ\x16የአሁኑ ሐሙስ\x1cየሚቀጥለው ሐሙስ" + + "\x1aበ{0} ሐሙስ ውስጥ\x1dበ{0} ሐሙሶች ውስጥ\x1aከ{0} ሐሙስ በፊት\x1dከ{0} ሐሙሶች በፊት\x16ያለ" + + "ፈው ዓርብ\x16የአሁኑ ዓርብ\x1cየሚቀጥለው ዓርብ\x1aበ{0} ዓርብ ውስጥ በ{0} ዓርብዎች ውስጥ\x1aከ{0" + + "} ዓርብ በፊት ከ{0} ዓርብዎች በፊት\x16ያለፈው ቅዳሜ\x16የአሁኑ ቅዳሜ\x1cየሚቀጥለው ቅዳሜ\x1aበ{0} ቅ" + + "ዳሜ ውስጥ በ{0} ቅዳሜዎች ውስጥ\x1aከ{0} ቅዳሜ በፊት ከ{0} ቅዳሜዎች በፊት\x16ጥዋት/ከሰዓት\x09ሰዓ" + + "ት\x10ይህ ሰዓት\x1aበ{0} ሰዓት ውስጥ\x1dበ{0} ሰዓቶች ውስጥ\x1aከ{0} ሰዓት በፊት\x1dከ{0} ሰ" + + "ዓቶች በፊት\x09ደቂቃ\x10ይህ ደቂቃ\x1aበ{0} ደቂቃ ውስጥ በ{0} ደቂቃዎች ውስጥ\x1aከ{0} ደቂቃ በፊ" + + "ት ከ{0} ደቂቃዎች በፊት\x0cሰከንድ\x09አሁን\x1dበ{0} ሰከንድ ውስጥ በ{0} ሰከንዶች ውስጥ\x1dከ{0" + + "} ሰከንድ በፊት ከ{0} ሰከንዶች በፊት\x13የሰዓት ሰቅ\x0b+HHmm;-HHmm\x11ጂ ኤም ቲ{0}\x0eጂ ኤም" + + " ቲ\x0a{0} ጊዜ${0} የቀን ብርሃን ሰዓት\x1a{0} መደበኛ ሰዓት,የተቀነባበረ ሁለገብ ሰዓት3የብሪትሽ የበጋ" + + " ሰዓት አቆጣጠር6የአይሪሽ መደበኛ ሰዓት አቆጣጠር\x22የአፍጋኒስታን ሰዓት,የመካከለኛው አፍሪካ ሰዓት&የምስራቅ አ" + + "ፍሪካ ሰዓት0የደቡብ አፍሪካ መደበኛ ሰዓት&የምዕራብ አፍሪካ ሰዓት3የምዕራብ አፍሪካ መደበኛ ሰዓት3የምዕራብ አፍ" + + "ሪካ ክረምት ሰዓት)የአላስካ ሰዓት አቆጣጠር9የአላስካ መደበኛ የሰዓት አቆጣጠር3የአላስካ የቀን ሰዓት አቆጣጠር)" + + "የአማዞን ሰዓት አቆጣጠር6የአማዞን መደበኛ ሰዓት አቆጣጠር3የአማዞን የቀን ሰዓት አቆጣጠር,የመካከለኛ ሰዓት አቆ" + + "ጣጠር9የመካከለኛ መደበኛ ሰዓት አቆጣጠር6የመካከለኛ የቀን ሰዓት አቆጣጠር,የምዕራባዊ ሰዓት አቆጣጠር<የምዕራባዊ" + + " መደበኛ የሰዓት አቆጣጠር6የምዕራባዊ የቀን ሰዓት አቆጣጠር)የተራራ የሰዓት አቆጣጠር6የተራራ መደበኛ የሰዓት አቆጣ" + + "ጠር/የተራራ የቀንሰዓት አቆጣጠር)የፓስፊክ ሰዓት አቆጣጠር6የፓስፊክ መደበኛ ሰዓት አቆጣጠር3የፓስፊክ የቀን ሰዓ" + + "ት አቆጣጠር,የአናድይር ሰዓት አቆጣጠር,የአናዲይር ሰዓት አቆጣጠር9የአናድይር የበጋ የሰዓት አቆጣጠር\x16የአፒ" + + "ያ ሰዓት#የአፒያ መደበኛ ሰዓት'የአፒያ የቀን ጊዜ ሰዓት\x19የዓረቢያ ሰዓት&የዓረቢያ መደበኛ ሰዓት0የዓረቢያ " + + "የቀን ብርሃን ሰዓት2የአርጀንቲና የሰዓት አቆጣጠር<የአርጀንቲና መደበኛ ሰዓት አቆጣጠር9የአርጀንቲና የበጋ ሰዓት" + + " አቆጣጠር?የአርጀንቲና ምስራቃዊ ሰዓት አቆጣጠርLየምዕራባዊ አርጀንቲና መደበኛ ሰዓት አቆጣጠርFየአርጀንቲና ምስራቃ" + + "ዊ በጋ ሰዓት አቆጣጠር\x1cየአርመኒያ ሰዓት)የአርመኒያ መደበኛ ሰዓት)የአርመኒያ ክረምት ሰዓት2የአትላንቲክ የ" + + "ሰዓት አቆጣጠር?የአትላንቲክ መደበኛ የሰዓት አቆጣጠር9የአትላንቲክ የቀን ሰዓት አቆጣጠርEየመካከለኛው አውስትራሊ" + + "ያ ሰዓት አቆጣጠርRየአውስትራሊያ መካከለኛ መደበኛ የሰዓት አቆጣጠርLየአውስትራሊያ መካከለኛ የቀን ሰዓት አቆጣጠ" + + "ርRየአውስትራሊያ መካከለኛ ምስራቃዊ ሰዓት አቆጣጠር_የአውስትራሊያ መካከለኛ ምስራቃዊ መደበኛ ሰዓት አቆጣጠር\\" + + "የአውስትራሊያ መካከለኛው ምስራቅ የቀን ሰዓት አቆጣጠርEየምዕራባዊ አውስትራሊያ የሰዓት አቆጣጠርRየአውስትራሊያ " + + "ምዕራባዊ መደበኛ የሰዓት አቆጣጠርLየአውስትራሊያ ምዕራባዊ የቀን ሰዓት አቆጣጠርBየምስራቃዊ አውስትራሊያ ሰዓት " + + "አቆጣጠርOየአውስትራሊያ ምስራቃዊ መደበኛ ሰዓት አቆጣጠርLየአውስትራሊያ ምስራቃዊ የቀን ሰዓት አቆጣጠር\x22የአ" + + "ዘርባይጃን ሰዓት/የአዘርባይጃን መደበኛ ሰዓት/የአዘርባይጃን ክረምት ሰዓት\x19የአዞረስ ሰዓት&የአዞረስ መደበኛ" + + " ሰዓት&የአዞረስ ክረምት ሰዓት\x1fየባንግላዴሽ ሰዓት,የባንግላዴሽ መደበኛ ሰዓት,የባንግላዴሽ ክረምት ሰዓት\x16" + + "የቡታን ሰዓት\x19የቦሊቪያ ሰዓት,የብራዚላዊ ሰዓት አቆጣጠር9የብራሲሊያ መደበኛ ሰዓት አቆጣጠር3የብራዚላ የበጋ" + + " ሰዓት አቆጣጠር)የብሩኔይ ዳሩሳላም ሰዓት\x1dየኬፕ ቨርዴ ሰዓት*የኬፕ ቨርዴ መደበኛ ሰዓት*የኬፕ ቨርዴ ክረምት " + + "ሰዓት#የቻሞሮ መደበኛ ሰዓት\x16የቻታም ሰዓት#የቻታም መደበኛ ሰዓት-የቻታም የቀን ብርሃን ሰዓት\x13የቺሊ ሰ" + + "ዓት የቺሊ መደበኛ ሰዓት የቺሊ ክረምት ሰዓት\x16የቻይና ሰዓት#የቻይና መደበኛ ሰዓት-የቻይና የቀን ብርሃን ሰ" + + "ዓት,የቾይባልሳ ሰዓት አቆጣጠር?የቾይባልሳን መደበኛ የሰዓት አቆጣጠር<የቾይባልሳን የበጋ የሰአት አቆጣጠር\x1d" + + "የገና ደሴት ሰዓት#የኮኮስ ደሴቶች ሰዓት\x1cየኮሎምቢያ ሰዓት)የኮሎምቢያ መደበኛ ሰዓት)የኮሎምቢያ ክረምት ሰዓ" + + "ት የኩክ ደሴቶች ሰዓት-የኩክ ደሴቶች መደበኛ ሰዓት7የኩክ ደሴቶች ግማሽ ክረምት ሰዓት\x10ኩባ ሰዓት የኩባ መ" + + "ደበኛ ሰዓት*የኩባ የቀን ብርሃን ሰዓት\x16የዴቪስ ሰዓት&የዱሞንት-ዱርቪል ሰዓት#የምስራቅ ቲሞር ሰዓት#የኢስተ" + + "ር ደሴት ሰዓት0የኢስተር ደሴት መደበኛ ሰዓት0የኢስተር ደሴት ክረምት ሰዓት\x19የኢኳዶር ሰዓት,የመካከለኛው አ" + + "ውሮፓ ሰዓት9የመካከለኛው አውሮፓ መደበኛ ሰዓት9የመካከለኛው አውሮፓ ክረምት ሰዓት)የምስራቃዊ አውሮፓ ሰዓት6የም" + + "ስራቃዊ አውሮፓ መደበኛ ሰዓት6የምስራቃዊ አውሮፓ ክረምት ሰዓት0የሩቅ ምስራቅ የአውሮፓ ሰዓት)የምዕራባዊ አውሮፓ" + + " ሰዓት6የምዕራባዊ አውሮፓ መደበኛ ሰዓት6የምዕራባዊ አውሮፓ ክረምት ሰዓት,የፋልክላንድ ደሴቶች ሰዓት9የፋልክላንድ " + + "ደሴቶች መደበኛ ሰዓት9የፋልክላንድ ደሴቶች ክረምት ሰዓት\x13የፊጂ ሰዓት የፊጂ መደበኛ ሰዓት የፊጂ ክረምት ሰ" + + "ዓት&የፈረንሳይ ጉያና ሰዓትFየፈረንሳይ ደቡባዊ እና አንታርክቲክ ሰዓት\x1cየጋላፓጎስ ሰዓት\x1cየጋምቢየር ሰ" + + "ዓት\x1cየጂዮርጂያ ሰዓት)የጂዮርጂያ መደበኛ ሰዓት)የጂዮርጂያ ክረምት ሰዓት)የጂልበርት ደሴቶች ሰዓት)ግሪንዊች" + + " ማዕከላዊ ሰዓት,የምስራቅ ግሪንላንድ ሰዓት9የምስራቅ ግሪንላንድ መደበኛ ሰዓት9የምስራቅ ግሪንላንድ ክረምት ሰዓት," + + "የምዕራብ ግሪንላንድ ሰዓት9የምዕራብ ግሪንላንድ መደበኛ ሰዓት9የምዕራብ ግሪንላንድ ክረምት ሰዓት,የባህረሰላጤ መ" + + "ደበኛ ሰዓት\x16የጉያና ሰዓት3የሃዋይ አሌኡት ሰዓት አቆጣጠር@የሃዋይ አሌኡት መደበኛ ሰዓት አቆጣጠር=የሃዋይ " + + "አሌኡት የቀን ሰዓት አቆጣጠር የሆንግ ኮንግ ሰዓት-የሆንግ ኮንግ መደበኛ ሰዓት-የሆንግ ኮንግ ክረምት ሰዓት&የሆ" + + "ቭድ ሰዓት አቆጣጠር6የሆቭድ መደበኛ የሰዓት አቆጣጠር0የሆቭድ የበጋ ሰዓት አቆጣጠር#የህንድ መደበኛ ሰዓት&የህን" + + "ድ ውቅያኖስ ሰዓት\x1fየኢንዶቻይና ሰዓት2የመካከለኛው ኢንዶኔዢያ ሰዓት/የምስራቃዊ ኢንዶኔዢያ ሰዓት/የምዕራባዊ" + + " ኢንዶኔዢያ ሰዓት\x16የኢራን ሰዓት#የኢራን መደበኛ ሰዓት-የኢራን የቀን ብርሃን ሰዓት/የኢርኩትስክ ሰዓት አቆጣጠ" + + "ር?የኢርኩትስክ መደበኛ የሰዓት አቆጣጠር9ኢርኩትስክ የበጋ የሰዓት አቆጣጠር\x1cየእስራኤል ሰዓት)የእስራኤል መ" + + "ደበኛ ሰዓት3የእስራኤል የቀን ብርሃን ሰዓት\x16የጃፓን ሰዓት#የጃፓን መደበኛ ሰዓት-የጃፓን የቀን ብርሃን ሰዓ" + + "ት,የካምቻትካ ሰዓት አቆጣጠርJየፔትሮፓቭሎስኪ - ካምቻትስኪ ሰዓት አቆጣጠርTየፔትሮፓቭሎስኪ - ካምቻትስኪ የበጋ" + + " ሰዓት አቆጣጠር,የምስራቅ ካዛኪስታን ሰዓት,የምዕራብ ካዛኪስታን ሰዓት\x16የኮሪያ ሰዓት#የኮሪያ መደበኛ ሰዓት-የ" + + "ኮሪያ የቀን ብርሃን ሰዓት\x19የኮስራኤ ሰዓት5የክራስኖያርስክ ሰዓት አቆጣጠርEየክራስኖይአርስክ መደበኛ ሰዓት " + + "አቆጣጠር?የክራስኖያርስክ የበጋ ሰዓት አቆጣጠር\x1fየኪርጊስታን ሰዓት#የላይን ደሴቶች ሰዓት0የሎርድ ሆዌ የሰዓ" + + "ት አቆጣጠር=የሎርድ ሆዌ መደበኛ የሰዓት አቆጣጠር7የሎርድ ሆዌ የቀን ሰዓት አቆጣጠር የማከሪ ደሴት ሰዓት,የማጋ" + + "ዳን የሰዓት አቆጣጠር6የማጋዳን መደበኛ ሰዓት አቆጣጠር0የማጋዳን በጋ ሰዓት አቆጣጠር\x1cየማሌይዢያ ሰዓት" + + "\x1cየማልዲቭስ ሰዓት\x1cየማርኴሳስ ሰዓት&የማርሻል ደሴቶች ሰዓት\x1fየማውሪሺየስ ሰዓት,የማውሪሺየስ መደበኛ " + + "ሰዓት,የማውሪሺየስ ክረምት ሰዓት\x19የማውሰን ሰዓትCሰሜናዊ ምእራብ የሜክሲኮ ሰዓት አቆጣጠርPሰሜናዊ ምእራብ " + + "የሜክሲኮ መደበኛ ሰዓት አቆጣጠርMሰሜናዊ ምእራብ የሜክሲኮ የቀን ሰዓት አቆጣጠር6የሜክሲኮ ፓሲፊክ ሰዓት አቆጣጠ" + + "ርCየሜክሲኮ ፓሲፊክ መደበኛ ሰዓት አቆጣጠር@የሜክሲኮ ፓሲፊክ የቀን ሰዓት አቆጣጠር\x1dየኡላን ባቶር ጊዜ=የኡ" + + "ላን ባቶር መደበኛ ሰዓት አቆጣጠር:የኡላን ባቶር የበጋ ሰዓት አቆጣጠር&የሞስኮ ሰዓት አቆጣጠር3የሞስኮ መደበኛ " + + "ሰዓት አቆጣጠር0የሞስኮ የበጋ ሰዓት አቆጣጠር\x1cየሚያንማር ሰዓት\x16የናውሩ ሰዓት\x16የኔፓል ሰዓት#የኒው" + + " ካሌዶኒያ ሰዓት0የኒው ካሌዶኒያ መደበኛ ሰዓት0የኒው ካሌዶኒያ ክረምት ሰዓት የኒው ዚላንድ ሰዓት-የኒው ዚላንድ መ" + + "ደበኛ ሰዓት7የኒው ዚላንድ የቀን ብርሃን ሰዓት;የኒውፋውንድላንድ የሰዓት አቆጣጠርHየኒውፋውንድላንድ መደበኛ የሰ" + + "ዓት አቆጣጠርEየኒውፋውንድላንድ የቀን የሰዓት አቆጣጠር\x16የኒዩዌ ሰዓት)የኖርፎልክ ደሴቶች ሰዓት)የኖሮንሃ ሰ" + + "ዓት አቆጣጠርJየፈርናንዶ ዲ ኖሮንቻ መደበኛ ሰዓት አቆጣጠርJየፈርናንዶ ዲ ኖሮንሃ የበጋ የሰዓት አቆጣጠር5የኖቮ" + + "ሲብሪስክ የሰዓት አቆጣጠርBየኖቮሲቢርስክ መደበኛ የሰዓት አቆጣጠር<የኖቮሲብሪስክ የበጋ ሰአት አቆጣጠር,የኦምስክ" + + " የሰዓት አቆጣጠር6የኦምስክ መደበኛ ሰዓት አቆጣጠር3የኦምስክ የበጋ ሰዓት አቆጣጠር\x1cየፓኪስታን ሰዓት)የፓኪስታ" + + "ን መደበኛ ሰዓት)የፓኪስታን ክረምት ሰዓት\x16የፓላው ሰዓት!የፓፗ ኒው ጊኒ ሰዓት\x19የፓራጓይ ሰዓት&የፓራጓ" + + "ይ መደበኛ ሰዓት&የፓራጓይ ክረምት ሰዓት\x13የፔሩ ሰዓት የፔሩ መደበኛ ሰዓት የፔሩ ክረምት ሰዓት\x19የፊሊፒ" + + "ን ሰዓት&የፊሊፒን መደበኛ ሰዓት&የፊሊፒን ክረምት ሰዓት&የፊኒክስ ደሴቶች ሰዓት4ቅዱስ የፒዬር እና ሚኴሎን ሰዓ" + + "ትAቅዱስ የፒዬር እና ሚኴሎን መደበኛ ሰዓትKቅዱስ የፒዬር እና ሚኴሎን የቀን ብርሃን ሰዓት\x1fየፒትካይርን ሰ" + + "ዓት\x16የፖናፔ ሰዓት\x22የፕዮንግያንግ ሰዓት\x1cየሬዩኒየን ሰዓት\x16የሮቴራ ሰዓት,የሳክሃሊን ሰዓት አቆ" + + "ጣጠር9የሳክሃሊን መደበኛ ሰዓት አቆጣጠር6የሳክሃሊን የበጋ ሰዓት አቆጣጠር&የሳማራ ሰዓት አቆጣጠር3የሳማራ መደበ" + + "ኛ ሰዓት አቆጣጠር0የሳማራ የበጋ ሰዓት አቆጣጠር\x16የሳሞዋ ሰዓት#የሳሞዋ መደበኛ ሰዓት የሳሞዋ የበጋ ሰዓት" + + "\x19የሴሸልስ ሰዓት)የሲንጋፒር መደበኛ ሰዓት&የሰለሞን ደሴቶች ሰዓት&የደቡብ ጂዮርጂያ ሰዓት\x19የሱሪናም ሰዓት" + + "\x16የሲዮዋ ሰዓት\x16የታሂቲ ሰዓት\x19የታይፔይ ሰዓት&የታይፔይ መደበኛ ሰዓት0የታይፔይ የቀን ብርሃን ሰዓት" + + "\x1fየታጂኪስታን ሰዓት\x19የቶኬላው ሰዓት\x16የቶንጋ ሰዓት#የቶንጋ መደበኛ ሰዓት#የቶንጋ ክረምት ሰዓት\x13" + + "የቹክ ሰዓት%የቱርክመኒስታን ሰዓት2የቱርክመኒስታን መደበኛ ሰዓት2የቱርክመኒስታን ክረምት ሰዓት\x16የቱቫሉ ሰዓ" + + "ት\x19የኡራጓይ ሰዓት&የኡራጓይ መደበኛ ሰዓት&የኡራጓይ ክረምት ሰዓት\x22የኡዝቤኪስታን ሰዓት/የኡዝቤኪስታን " + + "መደበኛ ሰዓት/የኡዝቤኪስታን ክረምት ሰዓት\x16የቫኗቱ ሰዓት#የቫኗቱ መደበኛ ሰዓት#የቫኗቱ ክረምት ሰዓት\x1c" + + "የቬኔዝዌላ ሰዓት5የቭላዲቮስቶክ የሰዓት አቆጣጠርBየቪላዲቮስቶክ መደበኛ የሰዓት አቆጣጠር?የቭላዲቮስቶክ የበጋ የ" + + "ሰዓት አቆጣጠር/የቮልጎራድ የሰዓት አቆጣጠር9የቮልጎራድ መደበኛ ሰዓት አቆጣጠር6የቫልጎራድ የበጋ ሰዓት አቆጣጠር" + + "\x19የቮስቶክ ሰዓት\x1dየዌክ ደሴት ሰዓት'የዋሊስ እና ፉቱና ሰዓት,ያኩትስክ የሰዓት አቆጣጠር6ያኩትስክ መደበኛ" + + " ሰዓት አቆጣጠር6የያኩትስክ የበጋ ሰዓት አቆጣጠር5የየካተሪንበርግ ሰዓት አቆጣጠርBየየካተሪንበርግ መደበኛ ሰዓት አ" + + "ቆጣጠር?የየካተሪንበርግ የበጋ ሰዓት አቆጣጠር\x06GMT{0}\x01A\x02DK\x02PK\x16ዓመተ ምህረት" + +var bucket3 string = "" + // Size: 8915 bytes + "\x1bالتقويم البوذي\x06توت\x08بابه\x0aهاتور\x08كيهك\x08طوبة\x0aأمشير\x0cب" + + "رمهات\x0cبرمودة\x08بشنس\x0aبؤونة\x08أبيب\x08مسرى\x08نسيئ\x02١\x02٢\x02٣" + + "\x02٤\x02٥\x02٦\x02٧\x02٨\x02٩\x04١٠\x04١١\x04١٢\x04١٣\x0cمسكريم\x08تكمت" + + "\x08هدار\x0aتهساس\x04تر\x08يكتت\x0cمجابيت\x0cميازيا\x08جنبت\x06سين\x08ها" + + "مل\x08نهاس\x0aباجمن\x13EEEE، d MMMM، y G\x0cd MMMM، y G\x0fdd\u200f/MM" + + "\u200f/y G\x11d\u200f/M\u200f/y GGGGG\x0aيناير\x0cفبراير\x08مارس\x0aأبري" + + "ل\x08مايو\x0aيونيو\x0aيوليو\x0aأغسطس\x0cسبتمبر\x0cأكتوبر\x0cنوفمبر\x0cد" + + "يسمبر\x02ي\x02ف\x02م\x02أ\x02و\x02ن\x02ل\x02غ\x02س\x02ك\x02ب\x02د\x0aال" + + "أحد\x0eالاثنين\x10الثلاثاء\x10الأربعاء\x0cالخميس\x0cالجمعة\x0aالسبت\x02" + + "ح\x02ث\x02ر\x02خ\x02ج\x15الربع الأول\x17الربع الثاني\x17الربع الثالث" + + "\x17الربع الرابع\x02ص\x08فجرا\x0aظهرًا\x11بعد الظهر\x0aمساءً\x15منتصف ال" + + "ليل\x0aفجرًا\x0cصباحًا\x0aليلاً\x15قبل الميلاد\x0cميلادي\x15بعد الميلاد" + + "\x05ق.م\x05ب.م\x11EEEE، d MMMM، y\x0ad MMMM، y\x0ddd\u200f/MM\u200f/y" + + "\x0bd\u200f/M\u200f/y\x08تشري\x0eمرحشوان\x0aكيسلو\x08طيفت\x08شباط\x13آذا" + + "ر الأول\x08آذار\x15آذار الثاني\x0aنيسان\x08أيار\x0aسيفان\x08تموز\x04آب" + + "\x0aأيلول\x08محرم\x06صفر\x13ربيع الأول\x13ربيع الآخر\x17جمادى الأولى\x17" + + "جمادى الآخرة\x06رجب\x0aشعبان\x0aرمضان\x08شوال\x11ذو القعدة\x0fذو الحجة" + + "\x04هـ\x0bd MMM، y G\x08تيكا\x0cهاكتشي\x0aهاكهو\x08شتشو\x08تيهو\x08كيين" + + "\x08وادو\x0aرييكي\x08يورو\x0aجينكي\x0aتمبيو\x15تمبيو-كامبو\x13تمبيو-شوهو" + + "\x13تمبيو-هوجي\x13تمفو-جينجو\x13جينجو-كيين\x08هوكي\x09تن-أو\x0eإنرياكو" + + "\x08ديدو\x0aكونين\x0aتنتشو\x1dشووا (٨٣٤–٨٤٨)\u200f\x08كاجو\x0aنينجو\x08س" + + "يكو\x08تنان\x0aجوجان\x0cجينكيي\x08نينا\x0cكامبيو\x0aشوتاي\x08انجي\x0aان" + + "تشو\x0aشوهيي\x0aتنجيو\x0eتنرياكو\x0cتنتوكو\x08أووا\x08كوهو\x06آنا\x0eتي" + + "نروكو\x09تن-نن\x08جوجن\x08تنجن\x0aإيكان\x08كانا\x09اي-ان\x08ايسو#شورياك" + + "و (٩٩٠–٩٩٥)\u200f\x0eتشوتوكو\x0aتشوهو\x0aكانكو\x0aتشووا\x0aكانين\x08جاي" + + "ن\x0aمانجو\x0cتشوجين\x10تشورياكو%تشوكيو (١٠٤٠–١٠٤٤)\u200f\x0eكانتوكو!اي" + + "شو (١٠٤٦–١٠٥٣)\u200f\x0aتينجي\x0aكوهيي\x0eجيرياكو#انكيو (١٠٦٩–١٠٧٤)" + + "\u200f!شوهو (١٠٧٤–١٠٧٧)\u200f'شورياكو (١٠٧٧–١٠٨١)\u200f\x08ايهو\x0cأوتوك" + + "و\x0aكانجي\x08كاهو\x0aايتشو\x0cشوتوكو!كووا (١٠٩٩–١١٠٤)\u200f\x0aتشوجي" + + "\x08كاشو\x08تنين\x09تن-اي#ايكيو (١١١٣–١١١٨)\u200f\x09جن-اي\x08هوان\x08تن" + + "جي\x08ديجي!تنشو (١١٣١–١١٣٢)\u200f\x0aتشوشو\x08هوين\x08ايجي!كوجي (١١٤٢–١" + + "١٤٤)\u200f\x08تنيو\x0aكيوان\x0cنينبيي\x0aكيوجو\x08هجين\x08هيجي\x0eايريا" + + "كو\x08أوهو\x0cتشوكان\x0aايمان\x0bنين-ان\x06كاو\x06شون\x0aأنجين\x08جيشو" + + "\x08يووا\x06جيي\x0eجنريوكو\x08بنجي\x0aكنكيو\x08شوجي\x08كنين#جنكيو (١٢٠٤–" + + "١٢٠٦)\u200f\x09كن-اي!شوجن (١٢٠٧–١٢١١)\u200f\x0eكنرياكو!كنبو (١٢١٣–١٢١٩)" + + "\u200f\x0aشوكيو\x04جو\x0cجيننين\x0aكروكو\x0aأنتيي\x08كنكي\x08جويي\x0aتمب" + + "كو\x0eبنرياكو\x0aكاتيي\x0eرياكنين\x09ان-أو\x0aنينجي\x0aكنجين\x08هوجي" + + "\x0aكنتشو\x08كوجن\x08شوكا!شوجن (١٢٥٩–١٢٦٠)\u200f\x09بن-أو\x0aكوتشو\x09بن" + + "-اي\x08كنجي\x08كوان\x1fشوو (١٢٨٨–١٢٩٣)\u200f\x0aاينين\x08شوان\x08كنجن" + + "\x06كجن\x0aتوكجي\x08انكي\x0aأوتشو!شووا (١٣١٢–١٣١٧)\u200f\x08بنبو\x06جنو#" + + "جنكيو (١٣٢١–١٣٢٤)\u200f#شوتشو (١٣٢٤–١٣٢٦)\u200f\x0aكريكي\x0aجنتكو\x08جن" + + "كو\x06كمو\x08إنجن\x0aكوككو\x08شوهي\x0aكنتكو\x0aبنتشو\x08تنجو\x0eكورياكو" + + "!كووا (١٣٨١–١٣٨٤)\u200f\x0aجنتشو%مييتكو (١٣٨٤–١٣٨٧)\u200f\x08كاكي\x04كو%" + + "مييتكو (١٣٩٠–١٣٩٤)\u200f\x08أويي#شوتشو (١٤٢٨–١٤٢٩)\u200f#ايكيو (١٤٢٩–١٤" + + "٤١)\u200f\x0cككيتسو\x09بن-أن\x0aهوتكو\x0cكيوتكو\x08كوشو\x0cتشوركو\x08كن" + + "شو\x08بنشو\x0aأونين\x08بنمي%تشوكيو (١٤٨٧–١٤٨٩)\u200f\x0aانتكو\x06ميو" + + "\x08بنكي!ايشو (١٥٠٤–١٥٢١)\u200f\x08تييي\x0cكيوركو\x08تنمن!كوجي (١٥٥٥–١٥٥" + + "٨)\u200f\x0aايركو\x08جنكي!تنشو (١٥٧٣–١٥٩٢)\u200f\x0aبنركو\x0aكيتشو\x08ج" + + "نوا\x0bكان-اي!شوهو (١٦٤٤–١٦٤٨)\u200f\x08كيان\x1fشوو (١٦٥٢–١٦٥٥)\u200f" + + "\x0eميرياكو\x08منجي\x08كنبن\x08انبو\x08تنوا\x0aجوكيو\x0aجنركو\x08هويي" + + "\x0aشوتكو\x0aكيوهو\x08جنبن!كنبو (١٧٤١–١٧٤٤)\u200f#انكيو (١٧٤٤–١٧٤٨)" + + "\u200f\x0bكان-ان\x0eهورياكو\x0aمييوا\x09ان-اي\x08تنمي\x08كنسي\x0aكيووا" + + "\x08بنكا\x08بنسي\x08تنبو\x08كوكا\x06كاي\x08أنسي\x09من-ان\x0aبنكيو\x08جنج" + + "ي\x06كيو\x08ميجي\x08تيشو\x08شووا\x08هيسي\x0cفرفردن\x10أذربيهشت\x0aخرداد" + + "\x06تار\x0aمرداد\x0cشهرفار\x06مهر\x08آيان\x06آذر\x04دي\x08بهمن\x0eاسفندا" + + "ر\x08ه\u200d.ش\x0aالعصر\x0aالسنة\x19السنة الماضية\x19السنة الحالية\x19ا" + + "لسنة القادمة\x13خلال {0} سنة\x1aخلال سنة واحدة\x13خلال سنتين\x17خلال {0" + + "} سنوات\x11قبل {0} سنة\x18قبل سنة واحدة\x11قبل سنتين\x15قبل {0} سنوات" + + "\x11ربع السنة\x17الربع الأخير\x11هذا الربع\x17الربع القادم\x1aخلال {0} ر" + + "بع سنة\x1fخلال ربع سنة واحد\x18خلال ربعي سنة\x1eخلال {0} أرباع سنة\x18ق" + + "بل {0} ربع سنة\x1dقبل ربع سنة واحد\x16قبل ربعي سنة\x1cقبل {0} أرباع سنة" + + "\x0aالشهر\x17الشهر الماضي\x11هذا الشهر\x17الشهر القادم\x13خلال {0} شهر" + + "\x18خلال شهر واحد\x13خلال شهرين\x15خلال {0} أشهر\x17خلال {0} شهرًا\x11قب" + + "ل {0} شهر\x16قبل شهر واحد\x11قبل شهرين\x13قبل {0} أشهر\x15قبل {0} شهرًا" + + "\x0eالأسبوع\x1bالأسبوع الماضي\x15هذا الأسبوع\x1bالأسبوع القادم\x17خلال {" + + "0} أسبوع\x1cخلال أسبوع واحد\x17خلال أسبوعين\x19خلال {0} أسابيع\x1bخلال {" + + "0} أسبوعًا\x15قبل {0} أسبوع\x1aقبل أسبوع واحد\x15قبل أسبوعين\x17قبل {0} " + + "أسابيع\x19قبل {0} أسبوعًا\x0eأسبوع {0}\x1bخلال {0} أسبوعين\x06يوم\x0dأو" + + "ل أمس\x06أمس\x0aاليوم\x08غدًا\x0fبعد الغد\x13خلال {0} يوم\x18خلال يوم و" + + "احد\x13خلال يومين\x15خلال {0} أيام\x17خلال {0} يومًا\x11قبل {0} يوم\x16" + + "قبل يوم واحد\x11قبل يومين\x13قبل {0} أيام\x15قبل {0} يومًا\x17الأحد الم" + + "اضي\x17الأحد الحالي\x17الأحد القادم\x13خلال {0} أحد\x1eالأحد بعد القادم" + + "\x11قبل {0} أحد\x1eالأحد قبل الماضي\x0fأحد قادم\x1aأحد بعد القادم\x0fأحد" + + " ماضي\x1aأحد قبل الماضي\x1bالاثنين الماضي\x1bالاثنين الحالي\x1bالاثنين ا" + + "لقادم\x17خلال {0} إثنين\x1bالإثنين القادم\x22الإثنين بعد القادم خلال {0" + + "} أيام إثنين\x1eخلال {0} يوم إثنين\x15قبل {0} إثنين\x1bالإثنين الماضي" + + "\x22الإثنين قبل الماضي\x1eقبل {0} أيام إثنين\x1cقبل {0} يوم إثنين\x1bالإ" + + "ثنين الحالي\x13إثنين قادم\x1eإثنين بعد القادم\x13إثنين ماضي\x1eإثنين قب" + + "ل الماضي\x1dالثلاثاء الماضي\x1dالثلاثاء الحالي\x1dالثلاثاء القادم خلال " + + "{0} يوم ثلاثاء$الثلاثاء بعد القادم\x22خلال {0} أيام ثلاثاء\x1eقبل {0} يو" + + "م ثلاثاء$الثلاثاء قبل الماضي قبل {0} أيام ثلاثاء\x19خلال {0} ثلاثاء\x15" + + "ثلاثاء قادم ثلاثاء بعد القادم\x17قبل {0} ثلاثاء\x15ثلاثاء ماضي ثلاثاء ق" + + "بل الماضي\x1dالأربعاء الماضي\x1dالأربعاء الحالي\x1dالأربعاء القادم خلال" + + " {0} يوم أربعاء$الأربعاء بعد القادم\x22خلال {0} أيام أربعاء\x1eقبل {0} ي" + + "وم أربعاء$الأربعاء قبل الماضي قبل {0} أيام أربعاء\x19خلال {0} أربعاء" + + "\x17قبل {0} أربعاء\x15أربعاء ماضي أربعاء قبل الماضي\x15أربعاء قادم أربعا" + + "ء بعد القادم\x19الخميس الماضي\x19الخميس الحالي\x19الخميس القادم\x1cخلال" + + " {0} يوم خميس الخميس بعد القادم\x1eخلال {0} أيام خميس\x1aقبل {0} يوم خمي" + + "س الخميس قبل الماضي\x1cقبل {0} أيام خميس\x11هذه السنة\x19السنة التالية" + + "\x02ش\x02آ\x02ت\x08مارس\x06ماي\x0cيوليوز\x06غشت\x0aشتنبر\x0cأكتوبر\x0aنو" + + "نبر\x0aدجنبر\x0aإبريل\x08أغشت\x0aشتمبر\x0cنوفمبر\x0aدجمبر\x02إ\x13ربیع " + + "الاول\x15ربیع الثانی\x15جمادی الاول\x17جمادی الثانی\x0eذیقعدهٔ\x0cذیحجه" + + "ٔ\x0cذیقعده\x0aذیحجه\x0cفبروری\x08مارچ\x0aاپریل\x04می\x06جون\x06جول\x08" + + "اگست\x0cسپتمبر\x0cاکتوبر\x0aنومبر\x06دسم\x15ربیٖع الاول\x17ربیٖع الثانی" + + "\x0fذِی القد\x0fذِی الحج\x02د\x02س\x02چ\x02پ\x02ج\x02ش\x14ر بیع الاول" + + "\x16ر بیع الثانی\x10ذوالقعدۃ\x0eذوالحجۃ\x06فبر\x06مار\x06اپر\x04می\x06جو" + + "ن\x06اگس\x06سپت\x06اکت\x06نوم" + +var bucket4 string = "" + // Size: 13389 bytes + "\x15خلال {0} خميس\x1cخلال {0} يوم خميس\x13قبل {0} خميس\x11خميس ماضي\x1cخ" + + "ميس قبل الماضي\x19الجمعة الماضي\x19الجمعة الحالي\x19الجمعة القادم\x1cخل" + + "ال {0} يوم جمعة الجمعة بعد القادم\x1eخلال {0} أيام جمعة\x1aقبل {0} يوم " + + "جمعة الجمعة قبل الماضي\x1cقبل {0} أيام جمعة\x15خلال {0} جمعة\x11جمعة قا" + + "دم\x1cجمعة بعد القادم\x13قبل {0} جمعة\x11جمعة ماضي\x1cجمعة قبل الماضي" + + "\x17السبت الماضي\x17السبت الحالي\x17السبت القادم\x18بعد {0} يوم سبت\x1eا" + + "لسبت بعد القادم\x1aخلال {0} يوم سبت\x18قبل {0} يوم سبت\x1eالسبت قبل الم" + + "اضي\x13خلال {0} سبت\x0fسبت قادم\x1aسبت بعد القادم\x11قبل {0} سبت\x0fسبت" + + " ماضي\x1aسبت قبل الماضي\x05ص/م\x0eالساعات\x1bالساعة الحالية\x15خلال {0} " + + "ساعة\x1cخلال ساعة واحدة\x15خلال ساعتين\x17خلال {0} ساعات\x13قبل {0} ساع" + + "ة\x1aقبل ساعة واحدة\x13قبل ساعتين\x15قبل {0} ساعات\x0eالدقائق\x15هذه ال" + + "دقيقة\x17خلال {0} دقيقة\x1eخلال دقيقة واحدة\x17خلال دقيقتين\x17خلال {0}" + + " دقائق\x15قبل {0} دقيقة\x1cقبل دقيقة واحدة\x15قبل دقيقتين\x15قبل {0} دقا" + + "ئق\x0eالثواني\x08الآن\x17خلال {0} ثانية\x1eخلال ثانية واحدة\x17خلال ثان" + + "يتين\x17خلال {0} ثوانٍ\x15قبل {0} ثانية\x1cقبل ثانية واحدة\x15قبل ثانيت" + + "ين\x15قبل {0} ثوانِ\x15قبل {0} ثوانٍ\x0eالتوقيت\x0eتوقيت {0}\x1bتوقيت {" + + "0} الصيفي\x1bتوقيت {0} الرسمي*التوقيت العالمي المنسق(توقيت بريطانيا الصي" + + "في&توقيت أيرلندا الرسمي\x1dتوقيت أفغانستان توقيت وسط أفريقيا توقيت شرق " + + "أفريقيا\x22توقيت جنوب أفريقيا توقيت غرب أفريقيا-توقيت غرب أفريقيا الرسم" + + "ي-توقيت غرب أفريقيا الصيفي\x17توقيت ألاسكا*التوقيت الرسمي لألاسكا$توقيت" + + " ألاسكا الصيفي\x1bتوقيت الأمازون(توقيت الأمازون الرسمي(توقيت الأمازون ال" + + "صيفي=التوقيت المركزي لأمريكا الشماليةJالتوقيت الرسمي المركزي لأمريكا ال" + + "شماليةJالتوقيت الصيفي المركزي لأمريكا الشمالية;التوقيت الشرقي لأمريكا ا" + + "لشماليةHالتوقيت الرسمي الشرقي لأمريكا الشماليةHالتوقيت الصيفي الشرقي لأ" + + "مريكا الشمالية;التوقيت الجبلي لأمريكا الشماليةHالتوقيت الجبلي الرسمي لأ" + + "مريكا الشماليةHالتوقيت الجبلي الصيفي لأمريكا الشمالية$توقيت المحيط الها" + + "دي1توقيت المحيط الهادي الرسمي1توقيت المحيط الهادي الصيفي\x17توقيت أنادي" + + "ر$توقيت أنادير الرسمي*التوقيت الصيفي لأنادير\x13توقيت آبيا&التوقيت الرس" + + "مي لآبيا&التوقيت الصيفي لأبيا\x1bالتوقيت العربي(التوقيت العربي الرسمي(ا" + + "لتوقيت العربي الصيفي\x1dتوقيت الأرجنتين*توقيت الأرجنتين الرسمي*توقيت ال" + + "أرجنتين الصيفي$توقيت غرب الأرجنتين1توقيت غرب الأرجنتين الرسمي1توقيت غرب" + + " الأرجنتين الصيفي\x19توقيت أرمينيا&توقيت أرمينيا الرسمي&توقيت أرمينيا ال" + + "صيفي\x19توقيت الأطلسي*التوقيت الرسمي الأطلسي*التوقيت الصيفي الأطلسي\x22" + + "توقيت وسط أستراليا/توقيت وسط أستراليا الرسمي/توقيت وسط أستراليا الصيفي)" + + "توقيت غرب وسط أستراليا6توقيت غرب وسط أستراليا الرسمي6توقيت غرب وسط أستر" + + "اليا الصيفي\x22توقيت شرق أستراليا/توقيت شرق أستراليا الرسمي/توقيت شرق أ" + + "ستراليا الصيفي\x22توقيت غرب أستراليا/توقيت غرب أستراليا الرسمي/توقيت غر" + + "ب أستراليا الصيفي\x1bتوقيت أذربيجان(توقيت أذربيجان الرسمي(توقيت أذربيجا" + + "ن الصيفي\x15توقيت أزورس\x22توقيت أزورس الرسمي\x22توقيت أزورس الصيفي\x1b" + + "توقيت بنجلاديش(توقيت بنجلاديش الرسمي(توقيت بنجلاديش الصيفي\x15توقيت بوت" + + "ان\x19توقيت بوليفيا\x1bتوقيت برازيليا(توقيت برازيليا الرسمي(توقيت برازي" + + "ليا الصيفي\x17توقيت بروناي\x22توقيت الرأس الأخضر/توقيت الرأس الأخضر الر" + + "سمي/توقيت الرأس الأخضر الصيفي\x19توقيت تشامورو\x17توقيت تشاتام$توقيت تش" + + "اتام الرسمي$توقيت تشاتام الصيفي\x13توقيت شيلي توقيت شيلي الرسمي توقيت ش" + + "يلي الصيفي\x15توقيت الصين\x22توقيت الصين الرسمي\x22توقيت الصين الصيفي" + + "\x1dتوقيت شويبالسان*توقيت شويبالسان الرسمي0التوقيت الصيفي لشويبالسان$توق" + + "يت جزر الكريسماس\x1cتوقيت جزر كوكوس\x1bتوقيت كولومبيا(توقيت كولومبيا ال" + + "رسمي(توقيت كولومبيا الصيفي\x1aتوقيت جزر كووك'توقيت جزر كووك الرسمي'توقي" + + "ت جزر كووك الصيفي\x13توقيت كوبا توقيت كوبا الرسمي توقيت كوبا الصيفي\x15" + + "توقيت دافيز(توقيت دي مونت دو روفيل$توقيت تيمور الشرقية\x1eتوقيت جزيرة ا" + + "ستر+توقيت جزيرة استر الرسمي+توقيت جزيرة استر الصيفي\x1dتوقيت الإكوادور" + + "\x1eتوقيت وسط أوروبا+توقيت وسط أوروبا الرسمي+توقيت وسط أوروبا الصيفي\x1e" + + "توقيت شرق أوروبا+توقيت شرق أوروبا الرسمي+توقيت شرق أوروبا الصيفي5التوقي" + + "ت الأوروبي (أكثر شرقًا)\x1eتوقيت غرب أوروبا+توقيت غرب أوروبا الرسمي+توق" + + "يت غرب أوروبا الصيفي توقيت جزر فوكلاند-توقيت جزر فوكلاند الرسمي-توقيت ج" + + "زر فوكلاند الصيفي\x13توقيت فيجي توقيت فيجي الرسمي توقيت فيجي الصيفي(توق" + + "يت غايانا الفرنسيةZتوقيت المقاطعات الفرنسية الجنوبية والأنتارتيكية\x1bت" + + "وقيت غلاباغوس\x17توقيت جامبير\x17توقيت جورجيا$توقيت جورجيا الرسمي$توقيت" + + " جورجيا الصيفي\x1eتوقيت جزر جيلبرت\x17توقيت غرينتش\x22توقيت شرق غرينلاند" + + "/توقيت شرق غرينلاند الرسمي/توقيت شرق غرينلاند الصيفي\x22توقيت غرب غرينلا" + + "ند/توقيت غرب غرينلاند الرسمي/توقيت غرب غرينلاند الصيفي\x13توقيت غوام" + + "\x17توقيت الخليج\x15توقيت غيانا$توقيت هاواي ألوتيان1توقيت هاواي ألوتيان " + + "الرسمي1توقيت هاواي ألوتيان الصيفي\x1cتوقيت هونغ كونغ)توقيت هونغ كونغ ال" + + "رسمي)توقيت هونغ كونغ الصيفي\x13توقيت هوفد توقيت هوفد الرسمي توقيت هوفد " + + "الصيفي\x15توقيت الهند$توقيت المحيط الهندي$توقيت الهند الصينية$توقيت وسط" + + " إندونيسيا$توقيت شرق إندونيسيا$توقيت غرب إندونيسيا\x15توقيت إيران\x22توق" + + "يت إيران الرسمي\x22توقيت إيران الصيفي\x19توقيت إركوتسك&توقيت إركوتسك ال" + + "رسمي&توقيت إركوتسك الصيفي\x19توقيت إسرائيل&توقيت إسرائيل الرسمي&توقيت إ" + + "سرائيل الصيفي\x19توقيت اليابان&توقيت اليابان الرسمي&توقيت اليابان الصيف" + + "ي\x1bتوقيت كامشاتكا:توقيت بيتروبافلوفسك-كامتشاتسكيGتوقيت بيتروبافلوفسك-" + + "كامتشاتسكي الصيفي$توقيت شرق كازاخستان$توقيت غرب كازاخستان\x15توقيت كوري" + + "ا\x22توقيت كوريا الرسمي\x22توقيت كوريا الصيفي\x15توقيت كوسرا!توقيت كراس" + + "نويارسك.توقيت كراسنويارسك الرسمي4التوقيت الصيفي لكراسنويارسك\x1dتوقيت ق" + + "رغيزستان\x1aتوقيت جزر لاين\x1aتوقيت لورد هاو'توقيت لورد هاو الرسمي-التو" + + "قيت الصيفي للورد هاو\x19توقيت ماكواري\x19توقيت ماغادان&توقيت ماغادان ال" + + "رسمي&توقيت ماغادان الصيفي\x19توقيت ماليزيا\x1dتوقيت الـمالديف\x1bتوقيت " + + "ماركيساس\x1eتوقيت جزر مارشال\x1bتوقيت موريشيوس(توقيت موريشيوس الرسمي(تو" + + "قيت موريشيوس الصيفي\x17توقيت ماوسون)توقيت شمال غرب المكسيك<التوقيت الرس" + + "مي لشمال غرب المكسيك<التوقيت الصيفي لشمال غرب المكسيك3توقيت المحيط الها" + + "دي للمكسيك@توقيت المحيط الهادي الرسمي للمكسيك@توقيت المحيط الهادي الصيف" + + "ي للمكسيك توقيت أولان باتور-توقيت أولان باتور الرسمي-توقيت أولان باتور " + + "الصيفي\x15توقيت موسكو\x22توقيت موسكو الرسمي\x22توقيت موسكو الصيفي\x19تو" + + "قيت ميانمار\x15توقيت ناورو\x15توقيت نيبال,توقيت كاليدونيا الجديدة9توقيت" + + " كاليدونيا الجديدة الرسمي9توقيت كاليدونيا الجديدة الصيفي\x1dتوقيت نيوزيل" + + "ندا*توقيت نيوزيلندا الرسمي*توقيت نيوزيلندا الصيفي#توقيت نيوفاوندلاند0تو" + + "قيت نيوفاوندلاند الرسمي0توقيت نيوفاوندلاند الصيفي\x13توقيت نيوي$توقيت ج" + + "زيرة نورفولك/توقيت فيرناندو دي نورونها:توقيت فرناندو دي نورونها الرسمي:" + + "توقيت فرناندو دي نورونها الصيفي1توقيت جزر ماريانا الشمالية!توقيت نوفوسي" + + "بيرسك.توقيت نوفوسيبيرسك الرسمي.توقيت نوفوسيبيرسك الصيفي\x15توقيت أومسك" + + "\x22توقيت أومسك الرسمي\x22توقيت أومسك الصيفي\x19توقيت باكستان&توقيت باكس" + + "تان الرسمي&توقيت باكستان الصيفي\x15توقيت بالاو/توقيت بابوا غينيا الجديد" + + "ة\x1bتوقيت باراغواي(توقيت باراغواي الرسمي(توقيت باراغواي الصيفي\x13توقي" + + "ت بيرو توقيت بيرو الرسمي توقيت بيرو الصيفي\x1bتوقيت الفيلبين(توقيت الفي" + + "لبين الرسمي(توقيت الفيلبين الصيفي\x1cتوقيت جزر فينكس-توقيت سانت بيير وم" + + "يكولون:توقيت سانت بيير وميكولون الرسمي:توقيت سانت بيير وميكولون الصيفي" + + "\x19توقيت بيتكيرن\x17توقيت بونابي\x1eتوقيت بيونغ يانغ\x19توقيت ريونيون" + + "\x17توقيت روثيرا\x19توقيت ساخالين&توقيت ساخالين الرسمي&توقيت ساخالين الص" + + "يفي\x17توقيت سامارا\x15توقيت سمارا\x22توقيت سمارا الصيفي\x15توقيت ساموا" + + "\x22توقيت ساموا الرسمي\x22توقيت ساموا الصيفي\x13توقيت سيشل\x1bتوقيت سنغا" + + "فورة\x1eتوقيت جزر سليمان توقيت جنوب جورجيا\x19توقيت سورينام\x17توقيت سا" + + "يووا\x17توقيت تاهيتي\x17توقيت تايبيه$توقيت تايبيه الرسمي$توقيت تايبيه ا" + + "لصيفي\x1bتوقيت طاجكستان\x19توقيت توكيلاو\x15توقيت تونغا\x22توقيت تونغا " + + "الرسمي\x22توقيت تونغا الصيفي\x11توقيت شوك\x1fتوقيت تركمانستان,توقيت ترك" + + "مانستان الرسمي,توقيت تركمانستان الصيفي\x17توقيت توفالو\x19توقيت أورغواي" + + "&توقيت أورغواي الرسمي&توقيت أورغواي الصيفي\x1dتوقيت أوزبكستان*توقيت أوزب" + + "كستان الرسمي*توقيت أوزبكستان الصيفي\x19توقيت فانواتو&توقيت فانواتو الرس" + + "مي&توقيت فانواتو الصيفي\x19توقيت فنزويلا!توقيت فلاديفوستوك.توقيت فلاديف" + + "وستوك الرسمي.توقيت فلاديفوستوك الصيفي\x1dتوقيت فولغوغراد*توقيت فولغوغرا" + + "د الرسمي*توقيت فولغوغراد الصيفي\x17توقيت فوستوك\x1cتوقيت جزيرة ويك%توقي" + + "ت واليس و فوتونا\x19توقيت ياكوتسك&توقيت ياكوتسك الرسمي&توقيت ياكوتسك ال" + + "صيفي!توقيت يكاترينبورغ.توقيت يكاترينبورغ الرسمي.توقيت يكاترينبورغ الصيف" + + "ي" + +var bucket5 string = "" + // Size: 9504 bytes + "\x0aجانفي\x0aفيفري\x08مارس\x0aأفريل\x06ماي\x08جوان\x0cجويلية\x06أوت\x0cس" + + "بتمبر\x0cأكتوبر\x0cنوفمبر\x0cديسمبر\x0cH:mm:ss zzzz\x09H:mm:ss z\x07H:m" + + "m:ss\x04H:mm\x17كانون الثاني\x08شباط\x08آذار\x0aنيسان\x08أيار\x0cحزيران" + + "\x08تموز\x04آب\x0aأيلول\x15تشرین الأول\x17تشرين الثاني\x15كانون الأول" + + "\x15تشرين الأول\x08مارس\x06ماي\x0cأكتوبر\x0cنوفمبر\x11EEEE, d MMMM, y G" + + "\x0bd MMMM, y G\x09dd-MM-y G\x0bd-M-y GGGGG\x0cজানু\x12ফেব্ৰু\x0fমাৰ্চ" + + "\x12এপ্ৰিল\x06মে\x09জুন\x0fজুলাই\x06আগ\x0fসেপ্ট\x0fঅক্টো\x09নভে\x0cডিসে" + + "\x18জানুৱাৰী\x1eফেব্ৰুৱাৰী\x0fআগষ্ট\x1eছেপ্তেম্বৰ\x15অক্টোবৰ\x15নৱেম্বৰ" + + "\x18ডিচেম্বৰ\x09ৰবি\x09সোম\x0fমঙ্গল\x09বুধ\x18বৃহষ্পতি\x0fশুক্ৰ\x09শনি" + + "\x12দেওবাৰ\x12সোমবাৰ\x18মঙ্গলবাৰ\x12বুধবাৰ!বৃহষ্পতিবাৰ\x18শুক্ৰবাৰ\x12শন" + + "িবাৰ\x1fপ্ৰথম প্ৰহৰ(দ্বিতীয় প্ৰহৰ\x22তৃতীয় প্ৰহৰ\x22চতুৰ্থ প্ৰহৰ\x1b" + + "পূৰ্বাহ্ণ\x15অপৰাহ্ণ\x0fEEEE, d MMMM, y\x09d MMMM, y\x07dd-MM-y\x05d-M" + + "-y\x0eh.mm.ss a zzzz\x0bh.mm.ss a z\x09h.mm.ss a\x07h.mm. a\x09যুগ\x09বছ" + + "ৰ\x09মাহ\x12সপ্তাহ\x09দিন\x0cপৰহি\x0cকালি\x09আজি\x0fকাইলৈ\x12পৰহিলৈ" + + "\x0fঘণ্টা\x0fমিনিট\x15ছেকেণ্ড\x15ক্ষেত্ৰ\x22ভাৰতীয় সময়\x0cভা. স.\x10EE" + + "EE, d MMMM y G\x03Jan\x03Feb\x03Mac\x03Apr\x03Mei\x03Jun\x03Jul\x03Ago" + + "\x03Sep\x03Okt\x03Nov\x03Dec\x07Januari\x08Februari\x05Machi\x06Aprili" + + "\x04Juni\x05Julai\x06Agosti\x08Septemba\x06Oktoba\x07Novemba\x07Desemba" + + "\x03Jpi\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03Ijm\x03Jmo\x08Jumapili\x08Jumatat" + + "u\x07Jumanne\x08Jumatano\x08Alhamisi\x06Ijumaa\x08Jumamosi\x02R1\x02R2" + + "\x02R3\x02R4\x06Robo 1\x06Robo 2\x06Robo 3\x06Robo 4\x09icheheavo\x08ich" + + "amthi\x11Kabla yakwe Yethu\x11Baada yakwe Yethu\x02KM\x02BM\x0eEEEE, d M" + + "MMM y\x04Edhi\x05Mwaka\x05Mweji\x06Ndisha\x05Thiku\x05Ighuo\x04Iyoo\x04Y" + + "avo\x0fThiku ya ndisha\x0eMarango athiku\x04Thaa\x06Dakika\x08Thekunde" + + "\x0cMajira Athaa\x0bera budista\x02EB\x16EEEE, dd MMMM 'de' y G\x0fd MMM" + + "M 'de' y G\x0cd/M/yy GGGGG\x11{1} 'a' 'les' {0}\x08{1}, {0}\x05mes 1\x05" + + "mes 2\x05mes 3\x05mes 4\x05mes 5\x05mes 6\x05mes 7\x05mes 8\x05mes 9\x06" + + "mes 10\x06mes 11\x06mes 12\x05Mes 1\x05Mes 2\x05Mes 3\x05Mes 4\x05Mes 5" + + "\x05Mes 6\x05Mes 7\x05Mes 8\x05Mes 9\x06Mes 10\x06Mes 11\x06Mes 12\x07{0" + + "} bis\x04ratu\x04güe\x05tigre\x06conexu\x07dragón\x07culebra\x07caballu" + + "\x05cabra\x04monu\x05gallu\x05perru\x05gochu\x13ratu de madera yang\x12g" + + "üe de madera yin\x12tigre de fueu yang\x12conexu de fueu yin\x16dragón " + + "de tierra yang\x15culebra de tierra yin\x15caballu de metal yang\x12cabr" + + "a de metal yin\x12monu d’agua yang\x12gallu d’agua yin\x14perru de mader" + + "a yang\x13gochu de madera yin\x11ratu de fueu yang\x10güe de fueu yin" + + "\x14tigre de tierra yang\x14conexu de tierra yin\x15dragón de metal yang" + + "\x14culebra de metal yin\x15caballu d’agua yang\x12cabra d’agua yin\x13m" + + "onu de madera yang\x13gallu de madera yin\x12perru de fueu yang\x11gochu" + + " de fueu yin\x13ratu de tierra yang\x12güe de tierra yin\x13tigre de met" + + "al yang\x13conexu de metal yin\x15dragón d’agua yang\x14culebra d’agua y" + + "in\x16caballu de madera yang\x13cabra de madera yin\x11monu de fueu yang" + + "\x11gallu de fueu yin\x14perru de tierra yang\x13gochu de tierra yin\x12" + + "ratu de metal yang\x11güe de metal yin\x13tigre d’agua yang\x13conexu d’" + + "agua yin\x16dragón de madera yang\x15culebra de madera yin\x14caballu de" + + " fueu yang\x11cabra de fueu yin\x13monu de tierra yang\x13gallu de tierr" + + "a yin\x13perru de metal yang\x12gochu de metal yin\x12rata d’agua yang" + + "\x11güe d’agua yin\x14tigre de madera yang\x14conexu de madera yin\x14dr" + + "agón de fueu yang\x13culebra de fueu yin\x16caballu de tierra yang\x13ca" + + "bra de tierra yin\x12monu de metal yang\x12gallu de metal yin\x13perru d" + + "’agua yang\x12gochu d’agua yin\x16principia la primavera\x0eagua de ll" + + "uvia\x18esconsoñen los inseutos\x17equinocciu de primavera\x11brillante " + + "y claro\x10lluvia del granu\x13principia’l branu\x0egranu completu\x10gr" + + "anu n’espiga\x12solsticiu braniegu\x0epequeña calor\x0agran calor\x14pri" + + "ncipia la seronda\x0ffin de la calor\x0drosada blanca\x15equinocciu sero" + + "ndiegu\x0crosada fría\x11descende’l xelu\x15principia l’iviernu\x0epeque" + + "ña ñeve\x0agran ñeve\x15solsticiu d’iviernu\x0epequeñu fríu\x0agran frí" + + "u\x03rat\x03tig\x03con\x03dra\x03cul\x03cbl\x03cbr\x03mon\x03gal\x03per" + + "\x03gch\x04Ratu\x04Güe\x05Tigre\x06Conexu\x07Dragón\x07Culebra\x07Caball" + + "u\x05Cabra\x04Monu\x05Gallu\x05Perru\x05Gochu\x03mes\x03tek\x03hed\x03ta" + + "h\x03ter\x03yek\x03meg\x03mia\x03gen\x03sen\x03ham\x03neh\x03pag\x0bde m" + + "eskerem\x09de tekemt\x09d’hedar\x09de tahsas\x06de ter\x0ade yekatit\x0a" + + "de megabit\x09de miazia\x09de genbot\x07de sene\x09d’hamle\x0ade nehasse" + + "\x0ade pagumen\x18antes de la Encarnación\x1bdespués de la Encarnación" + + "\x05a. E.\x05d. E.\x02aE\x02dE\x03xin\x03feb\x03mar\x03abr\x03may\x03xun" + + "\x03xnt\x03ago\x03set\x03och\x03pay\x03avi\x01X\x01F\x01M\x01A\x01S\x01O" + + "\x01P\x09de xineru\x0ade febreru\x08de marzu\x09d’abril\x07de mayu\x07de" + + " xunu\x09de xunetu\x0ad’agostu\x0cde setiembre\x0bd’ochobre\x0ade payare" + + "s\x0bd’avientu\x03Xin\x03Mar\x03Abr\x03May\x03Xun\x03Xnt\x03Set\x03Och" + + "\x03Pay\x03Avi\x06xineru\x07febreru\x05marzu\x05abril\x04mayu\x04xunu" + + "\x06xunetu\x06agostu\x09setiembre\x07ochobre\x07payares\x07avientu\x03do" + + "m\x03llu\x04mié\x03xue\x03vie\x04sáb\x02do\x02ll\x02ma\x02mi\x02xu\x02vi" + + "\x03sá\x07domingu\x06llunes\x06martes\x0amiércoles\x06xueves\x07vienres" + + "\x07sábadu\x021T\x022T\x023T\x024T\x0d1er trimestre\x0c2u trimestre\x0d3" + + "er trimestre\x0c4u trimestre\x01p\x0dde la mañana\x0bde la tarde\x07maña" + + "na\x05tarde\x11enantes de Cristu\x1cenantes de la dómina común\x12despué" + + "s de Cristu\x0edómina común\x04e.C.\x03EDC\x04d.C.\x02DC\x13EEEE, d MMMM" + + " 'de' y\x0dd MMMM 'de' y\x06d/M/yy\x0ade Chaitra\x0bde Vaisakha\x0bde Jy" + + "aistha\x0ad’Asadha\x0ade Sravana\x09de Bhadra\x0ad’Asvina\x0ade Kartika" + + "\x0ed’Agrahayana\x08de Pausa\x08de Magha\x0bde Phalguna\x0bde Muharram" + + "\x08de Safar\x0bde Rabiʻ I\x0cde Rabiʻ II\x0bde Jumada I\x0cde Jumada II" + + "\x08de Rajab\x0bde Shaʻban\x0ade Ramadan\x0ade Shawwal\x11de Dhuʻl-Qiʻda" + + "h\x10de Dhuʻl-Hijjah\x05Taika\x07Hakuchi\x07Hakuhō\x07Shuchō\x06Taihō" + + "\x05Keiun\x05Wadō\x05Reiki\x06Yōrō\x05Jinki\x07Tenpyō\x09T.-kampō\x0aT.-" + + "shōhō\x08T.-hōji\x08T.-jingo\x08J.-keiun\x05Hōki\x06Ten-ō\x07Enryaku\x06" + + "Daidō\x06Kōnin\x07Tenchō\x05Jōwa\x05Kajō\x05Ninju\x06Saikō\x06Ten-an\x06" + + "Jōgan\x07Gangyō\x05Ninna\x07Kanpyō\x07Shōtai\x04Engi\x06Enchō\x06Jōhei" + + "\x07Tengyō\x08Tenryaku\x07Tentoku\x04Ōwa\x06Kōhō\x04Anna\x07Tenroku\x08T" + + "en’en\x06Jōgen\x06Tengen\x05Eikan\x05Kanna\x04Eien\x04Eiso\x09Shōryaku" + + "\x08Chōtoku\x07Chōhō\x06Kankō\x06Chōwa\x06Kannin\x04Jian\x05Manju\x07Chō" + + "gen\x09Chōryaku\x08Chōkyū\x07Kantoku\x06Eishō\x05Tengi\x06Kōhei\x07Jirya" + + "ku\x06Enkyū\x06Shōho\x0cShōryaku II\x05Eihō\x06Ōtoku\x05Kanji\x05Kahō" + + "\x06Eichō\x07Jōtoku\x05Kōwa\x06Chōji\x06Kashō\x06Tennin\x06Ten-ei\x06Eik" + + "yū\x08Gen’ei\x05Hōan\x05Tenji\x05Daiji\x07Tenshō\x08Chōshō\x05Hōen\x04Ei" + + "ji\x05Kōji\x09Ten’yō\x06Kyūan\x06Ninpei\x06Kyūju\x06Hōgen\x05Heiji\x07Ei" + + "ryaku\x04Ōho\x07Chōkan\x05Eiman\x08Nin’an\x04Kaō\x06Shōan\x05Angen\x06Ji" + + "shō\x05Yōwa\x04Juei\x08Genryaku\x05Bunji\x07Kenkyū\x06Shōji\x06Kennin" + + "\x07Genkyū\x08Ken’ei\x09Jōgen II\x08Kenryaku\x06Kenpō\x07Jōkyū\x05Jōō" + + "\x06Gennin\x06Karoku\x05Antei\x05Kanki\x05Jōei\x07Tenpuku\x08Bunryaku" + + "\x05Katei\x08Ryakunin\x07En’ō\x05Ninji\x06Kangen\x05Hōji\x07Kenchō\x06Kō" + + "gen\x06Shōka\x07Shōgen\x08Bun’ō\x07Kōchō\x08Bun’ei\x05Kenji\x05Kōan\x06S" + + "hōō\x05Einin\x09Shōan II\x06Kengen\x05Kagen\x06Tokuji\x06Enkyō\x06Ōchō" + + "\x06Shōwa\x06Bunpō\x05Genō\x06Genkō\x08Shōchū\x07Karyaku\x07Gentoku\x09G" + + "enkō II\x05Kenmu\x05Engen\x07Kōkoku\x07Shōhei\x07Kentoku\x07Bunchū\x05Te" + + "nju\x08Kōryaku\x08Kōwa II\x07Genchū\x07Meitoku\x05Kakei\x05Kōō\x0aMeitok" + + "u II\x04Ōei\x08Shōchō\x06Eikyō\x07Kakitsu\x08Bun’an\x07Hōtoku\x08Kyōtoku" + + "\x07Kōshō\x08Chōroku\x07Kanshō\x07Bunshō\x05Ōnin\x06Bunmei\x08Chōkyō\x06" + + "Entoku\x05Meiō\x05Bunki\x09Eishō II\x05Taiei\x08Kyōroku\x06Tenbun\x08Kōj" + + "i II\x06Eiroku\x05Genki\x0aTenshō II\x07Bunroku\x07Keichō\x05Genna\x08Ka" + + "n’ei\x09Shōho II\x05Keian\x08Jōō II\x07Meireki\x05Manji\x06Kanbun\x05Enp" + + "ō\x05Tenna\x07Jōkyō\x07Genroku\x05Hōei\x08Shōtoku\x07Kyōhō\x06Genbun" + + "\x06Kanpō\x09Enkyō II\x08Kan’en\x07Hōreki\x05Meiwa\x07An’ei\x06Tenmei" + + "\x06Kansei\x06Kyōwa\x05Bunka\x06Bunsei\x06Tenpō\x05Kōka\x04Kaei\x05Ansei" + + "\x08Man’en\x07Bunkyū\x05Genji\x05Keiō\x05Meiji\x07Taishō\x09e. Shōwa\x06" + + "Heisei\x09T. kampō\x0aT. shōhō\x08T. hōji\x08T. jingo\x12antes de la R.D" + + ".C.\x06Minguo\x08A.R.D.C.\x04añu\x0fl’añu pasáu\x09esti añu\x11l’añu vin" + + "iente\x0ben {0} añu\x0cen {0} años\x0chai {0} añu\x0dhai {0} años\x0dl’a" + + "ñu pas.\x0dl’añu vin.\x09añu pas.\x09añu vin.\x09en {0} a.\x0ahai {0} a" + + ".\x09trimestre\x12trimestre anterior\x0eesti trimestre\x12trimestre vini" + + "ente\x10en {0} trimestre\x11en {0} trimestres\x11hai {0} trimestre\x12ha" + + "i {0} trimestres\x04tri.\x0atrim. ant.\x0aesti trim.\x0atrim. vin.\x0cen" + + " {0} trim.\x0dhai {0} trim.\x0aen {0} tr.\x0bhai {0} tr.\x0del mes pasáu" + + "\x08esti mes\x0fel mes viniente\x0aen {0} mes\x0cen {0} meses\x0bhai {0}" + + " mes\x0dhai {0} meses\x08mes pas.\x08mes vin.\x09en {0} m.\x0ahai {0} m." + + "\x07selmana\x11la selmana pasada\x0cesta selmana\x13la selmana viniente" + + "\x0een {0} selmana\x0fen {0} selmanes\x0fhai {0} selmana\x10hai {0} selm" + + "anes\x12la selmana del {0}\x04sel.\x0cselm. pasada\x0aesta selm.\x0eselm" + + ". viniente\x0cen {0} selm.\x0dhai {0} selm.\x0aselm. pas.\x0aselm. vin." + + "\x0aen {0} se.\x0bhai {0} se.\x04día\x08antayeri\x05ayeri\x05güei\x0dpas" + + "ao mañana\x0ben {0} día\x0cen {0} díes\x0chai {0} día\x0dhai {0} díes" + + "\x06antay.\x05mañ.\x08p. mañ.\x09en {0} d.\x0ahai {0} d.\x12día de la se" + + "lmana\x11el domingu pasáu\x0cesti domingu\x13el domingu viniente\x16dien" + + "tro de {0} domingu\x17dientro de {0} domingos\x0fhai {0} domingu\x10hai " + + "{0} domingos\x0bdom. pasáu\x09esti dom.\x0ddom. viniente\x03Epr\x03Oga" + + "\x03Dis\x05Epreo\x06Ogasti\x07Disemba\x09ফেব\x0fমার্চ\x12এপ্রিল\x0fআগস্ট" + + "\x1eসেপ্টেম্বর\x15অক্টোবর\x15নভেম্বর\x18ডিসেম্বর\x04Mär\x03Mai\x03Aug" + + "\x03Dez\x03Ati\x03Ata\x03Ala\x03Alm\x03Alz\x03Asi\x03Feb\x03Mar\x03Apr" + + "\x03May\x03Jun\x03Jul\x03Aug\x03Sep\x03Oct\x03Nov\x02lu\x02ma\x02ju\x0be" + + "n {0} trim\x0cen {0} días\x02sa\x0d2do trimestre\x0d4to trimestre\x0c2e " + + "trimestre\x0c3e trimestre\x0c4e trimestre\x0f2ème trimestre\x0f3ème trim" + + "estre\x0f4ème trimestre\x03lun\x03mar\x03mie\x03joi\x03vin\x03sab\x03Mrt" + + "\x03Mai\x03Okt\x03Nov\x03Des\x0ben {0} mes.\x0chai {0} mes.\x0dhai {0} d" + + "ías\x04Mär\x03Dez\x03Fab\x03Mar\x03Afi\x03May\x03Yun\x03Yul\x03Agu\x03S" + + "at\x03Okt\x03Nuw\x03Dis\x03Feb\x03Apr\x03Mei\x03Jun\x03Agt\x03Sep\x05Mar" + + "et\x05April\x04Juni\x04Juli\x07Agustus\x09September\x07Oktober\x08Novemb" + + "er\x08Desember\x03feb\x03apr\x03mag\x03giu\x03lug\x03ago\x03ott\x03nov" + + "\x03dic\x03mer\x03gio\x03ven\x03Feb\x03Mac\x03Jul\x03Ago\x03Sep\x03Nov" + + "\x05Machi\x07Aprilyi\x05Junyi\x06Julyai\x06Agusti\x08Septemba\x06Oktoba" + + "\x07Novemba\x03Alh\x03Iju\x03Abr\x03Mai\x03Set\x03Otu\x03Nuv\x03Diz\x03A" + + "la\x03Alj\x03Ass\x03Okt\x03Jmn\x04Fäb\x04Mäz\x03Ouj\x04Säp\x04Mäe\x03Mee" + + "\x03Mar\x03Apu\x03Maa\x03Juu\x03Seb\x03Oki\x03Mei\x05Machi\x04Juni\x05Ju" + + "lai\x06Agosti\x08Septemba\x06Oktoba\x07Novemba\x07Desemba\x03Alh\x03Mey" + + "\x03Jon\x03Jol\x03Aog\x03Mey\x03Ogo\x03Dis\x04Ogos\x09September\x07Oktob" + + "er\x08November\x08Disember\x03Fra\x03Mej\x04Ġun\x03Lul\x03Aww\x03Ott\x04" + + "Diċ\x03May\x03seg\x03ter\x03qua\x03qui\x03sex\x05Machi\x08Septemba\x07No" + + "vemba\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03Iju\x03Jmo\x03Fev\x03Mar\x03Mai\x03" + + "Shk\x03Mar\x03Pri\x03Maj\x03Qer\x03Kor\x03Gsh\x03Sht\x03Tet\x04Nën\x03Dh" + + "j\x03Okt\x04Juni\x08Jumatatu\x07Jumanne\x08Jumatano\x08Alhamisi\x06Ijuma" + + "a\x08Jumamosi\x02TS\x03Apr\x03Sep\x03Okt\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03" + + "Iju\x03Jmo\x03Mar\x03Mas\x03Eph\x03Mey\x03Aga" + +var bucket6 string = "" + // Size: 10223 bytes + "\x09dom. pas.\x09esti dom.\x09dom. vin.\x10el llunes pasáu\x0besti llune" + + "s\x12el llunes viniente\x15dientro de {0} llunes\x0ehai {0} llunes\x0cll" + + "un. pasáu\x0aesti llun.\x0ellun. viniente\x09llu. pas.\x09esti llu.\x09l" + + "lu. vin.\x10el martes pasáu\x0besti martes\x12el martes viniente\x15dien" + + "tro de {0} martes\x0ehai {0} martes\x0bmar. pasáu\x09esti mar.\x0dmar. v" + + "iniente\x09mar. pas.\x09mar. vin.\x14el miércoles pasáu\x0festi miércole" + + "s\x16el miércoles viniente\x19dientro de {0} miércoles\x12hai {0} miérco" + + "les\x0cmié. pasáu\x0aesti mié.\x0emié. viniente\x0amié. pas.\x0amié. vin" + + ".\x10el xueves pasáu\x0besti xueves\x12el xueves viniente\x15dientro de " + + "{0} xueves\x0ehai {0} xueves\x0bxue. pasáu\x09esti xue.\x0dxue. viniente" + + "\x09xue. pas.\x09xue. vin.\x11el vienres pasáu\x0cesti vienres\x13el vie" + + "nres viniente\x16dientro de {0} vienres\x0fhai {0} vienres\x0bvie. pasáu" + + "\x09esti vie.\x0dvie. viniente\x09vie. pas.\x09vie. vin.\x11el sábadu pa" + + "sáu\x0cesti sábadu\x13el sábadu viniente\x16dientro de {0} sábadu\x17die" + + "ntro de {0} sábados\x0fhai {0} sábadu\x10hai {0} sábados\x0csáb. pasáu" + + "\x0aesti sáb.\x0esáb. viniente\x0asáb. pas.\x0asáb. vin.\x10periodu del " + + "día\x04hora\x09esta hora\x0ben {0} hora\x0cen {0} hores\x0chai {0} hora" + + "\x0dhai {0} hores\x02h.\x09en {0} h.\x0ahai {0} h.\x07esta h.\x06minutu" + + "\x0besti minutu\x0den {0} minutu\x0een {0} minutos\x0ehai {0} minutu\x0f" + + "hai {0} minutos\x09esti min.\x0ben {0} min.\x0chai {0} min.\x07segundu" + + "\x05agora\x0een {0} segundu\x0fen {0} segundos\x0fhai {0} segundu\x10hai" + + " {0} segundos\x0ben {0} seg.\x0chai {0} seg.\x09en {0} s.\x0ahai {0} s." + + "\x0eestaya horaria\x0bHora de {0}\x14Hora braniega de {0}\x15Hora estánd" + + "ar de {0}\x18Hora braniega británica\x18Hora estándar irlandesa\x03HST" + + "\x03HDT\x0dhora d’Acre\x17hora estándar d’Acre\x16hora braniega d’Acre" + + "\x14Hora d’Afganistán\x18Hora d’África central\x19Hora d’África del este" + + "\x12Hora de Sudáfrica\x1aHora d’África del oeste$Hora estándar d’África " + + "del oeste#Hora braniega d’África del oeste\x0fHora d’Alaska\x19Hora está" + + "ndar d’Alaska\x18Hora braniega d’Alaska\x03AKT\x04AKST\x04AKDT\x0fHora d" + + "’Almaty\x19hora estándar d’Almaty\x18hora braniega d’Almaty\x11Hora de" + + "l Amazonas\x1bHora estándar del Amazonas\x1aHora braniega del Amazonas" + + "\x1bHora central norteamericana%Hora estándar central norteamericana$Hor" + + "a braniega central norteamericana\x02CT\x03CST\x03CDT\x1cHora del este n" + + "orteamericanu&Hora estándar del este norteamericanu%Hora braniega del es" + + "te norteamericanu\x02ET\x03EST\x03EDT%Hora de les montañes norteamerican" + + "es/Hora estándar de les montañes norteamericanes.Hora braniega de les mo" + + "ntañes norteamericanes\x02MT\x03MST\x03MDT!Hora del Pacíficu norteameric" + + "anu+Hora estándar del Pacíficu norteamericanu*Hora braniega del Pacíficu" + + " norteamericanu\x02PT\x03PST\x03PDT\x0fhora d’Anadyr\x19hora estándar d’" + + "Anadyr\x18hora braniega d’Anadyr\x0dHora d’Apia\x17Hora estándar d’Apia" + + "\x16Hora braniega d’Apia\x0eHora d’Aqtau\x18Hora estándar d’Aqtau\x17Hor" + + "a braniega d’Aqtau\x0fHora d’Aqtobe\x19Hora estándar d’Aqtobe\x18Hora br" + + "aniega d’Aqtobe\x0fHora d’Arabia\x19Hora estándar d’Arabia\x18Hora brani" + + "ega d’Arabia\x12Hora d’Arxentina\x1cHora estándar d’Arxentina\x1bHora br" + + "aniega d’Arxentina\x1dHora occidental d’Arxentina'Hora estándar occident" + + "al d’Arxentina&Hora braniega occidental d’Arxentina\x10Hora d’Armenia" + + "\x1aHora estándar d’Armenia\x19Hora braniega d’Armenia\x13Hora del Atlán" + + "ticu\x1dHora estándar del Atlánticu\x1cHora braniega del Atlánticu\x02AT" + + "\x03AST\x03ADT\x1aHora d’Australia central$Hora estándar d’Australia cen" + + "tral#Hora braniega d’Australia central$Hora d’Australia central del oest" + + "e.Hora estándar d’Australia central del oeste-Hora braniega d’Australia " + + "central del oeste\x1bHora d’Australia del este%Hora estándar d’Australia" + + " del este$Hora braniega d’Australia del este\x1cHora d’Australia del oes" + + "te&Hora estándar d’Australia del oeste%Hora braniega d’Australia del oes" + + "te\x14Hora d’Azerbaixán\x1eHora estándar d’Azerbaixán\x1dHora braniega d" + + "’Azerbaixán\x12Hora de les Azores\x1cHora estándar de les Azores\x1bHo" + + "ra braniega de Les Azores\x11Hora de Bangladex\x1bHora estándar de Bangl" + + "adex\x1aHora braniega de Bangladex\x0eHora de Bután\x0fHora de Bolivia" + + "\x10Hora de Brasilia\x1aHora estándar de Brasilia\x19Hora braniega de Br" + + "asilia\x1aHora de Brunéi Darussalam\x12Hora de Cabu Verde\x1cHora estánd" + + "ar de Cabu Verde\x1bHora braniega de Cabu Verde\x0dHora de Casey\x1aHora" + + " estándar de Chamorro\x0fHora de Chatham\x19Hora estándar de Chatham\x18" + + "Hora braniega de Chatham\x0dHora de Chile\x17Hora estándar de Chile\x16H" + + "ora braniega de Chile\x0dHora de China\x17Hora estándar de China\x16Hora" + + " braniega de China\x12Hora de Choibalsan\x1cHora estándar de Choibalsan" + + "\x1bHora braniega de Choibalsan$Hora estándar de la Islla Christmas\x18H" + + "ora de les Islles Cocos\x10Hora de Colombia\x1aHora estándar de Colombia" + + "\x19Hora braniega de Colombia\x17Hora de les Islles Cook!Hora estándar d" + + "e les Islles Cook&Hora media braniega de les Islles Cook\x0cHora de Cuba" + + "\x16Hora estándar de Cuba\x15Hora braniega de Cuba\x0dHora de Davis\x1aH" + + "ora de Dumont-d’Urville\x16Hora de Timor Oriental\x1aHora de la Islla de" + + " Pascua$Hora estándar de la Islla de Pascua#Hora braniega de la Islla de" + + " Pascua\x10Hora d’Ecuador\x17Hora d’Europa Central!Hora estándar d’Europ" + + "a Central Hora braniega d’Europa Central\x03CET\x04CEST\x18Hora d’Europa" + + " del Este\x22Hora estándar d’Europa del Este!Hora braniega d’Europa del " + + "Este\x03EET\x04EEST Hora d’Europa del estremu este\x1aHora d’Europa Occi" + + "dental$Hora estándar d’Europa Occidental#Hora braniega d’Europa Occident" + + "al\x03WET\x04WEST\x1bHora de les Islles Falkland%Hora estándar de les Is" + + "lles Falkland$Hora braniega de les Islles Falkland\x0cHora de Fixi\x16Ho" + + "ra estándar de Fixi\x15Hora braniega de Fixi\x1aHora de La Guyana France" + + "sa&Hora del sur y l’antárticu francés\x12Hora de Galápagos\x0fHora de Ga" + + "mbier\x0eHora de Xeorxa\x18Hora estándar de Xeorxa\x17Hora braniega de X" + + "eorxa\x1aHora de les Islles Gilbert\x17Hora media de Greenwich\x03GMT" + + "\x1cHora de Groenlandia oriental&Hora estándar de Groenlandia oriental%H" + + "ora braniega de Groenlandia oriental\x1eHora de Groenlandia occidental(H" + + "ora estándar de Groenlandia occidental'Hora braniega de Groenlandia occi" + + "dental\x16Hora estándar de Guam\x18Hora estándar del Golfu\x11Hora de La" + + " Guyana\x19Hora de Hawaii-Aleutianes#Hora estándar de Hawaii-Aleutianes" + + "\x22Hora braniega de Hawaii-Aleutianes\x03HAT\x04HAST\x04HADT\x13Hora de" + + " Ḥong Kong\x1dHora estándar de Ḥong Kong\x1cHora braniega de Ḥong Kong" + + "\x0cHora de Hovd\x16Hora estándar de Hovd\x15Hora braniega de Hovd\x1aHo" + + "ra estándar de la India\x18Hora del Océanu Índicu\x12Hora d’Indochina" + + "\x1aHora d’Indonesia central\x1bHora d’Indonesia del este\x1cHora d’Indo" + + "nesia del oeste\x0eHora d’Irán\x18Hora estándar d’Irán\x17Hora braniega " + + "d’Irán\x10Hora d’Irkutsk\x1aHora estándar d’Irkutsk\x19Hora braniega d’I" + + "rkutsk\x0fHora d’Israel\x19Hora estándar d’Israel\x18Hora braniega d’Isr" + + "ael\x0eHora de Xapón\x18Hora estándar de Xapón\x17Hora braniega de Xapón" + + " hora de Petropavlovsk-Kamchatski)hora estandar de Petropavlovsk-Kamchat" + + "ski)hora braniega de Petropavlovsk-Kamchatski\x1cHora del Kazakstán orie" + + "ntal\x1eHora del Kazakstán occidental\x0dHora de Corea\x17Hora estándar " + + "de Corea\x16Hora braniega de Corea\x0eHora de Kosrae\x13Hora de Krasnoya" + + "rsk\x1dHora estándar de Krasnoyarsk\x1cHora braniega de Krasnoyarsk\x14H" + + "ora del Kirguistán\x0dHora de Lanka\x17Hora de les Islles Line\x11Hora d" + + "e Lord Howe\x1bHora estándar de Lord Howe\x1aHora braniega de Lord Howe" + + "\x0eHora de Macáu\x18Hora estándar de Macáu\x17Hora braniega de Macáu" + + "\x1aHora de la Islla Macquarie\x10Hora de Magadán\x1aHora estándar de Ma" + + "gadán\x19Hora braniega de Magadán\x0fHora de Malasia\x14Hora de Les Mald" + + "ives\x15Hora de les Marqueses\x1bHora de les Islles Marshall\x10Hora de " + + "Mauriciu\x1aHora estándar de Mauriciu\x19Hora braniega de Mauriciu\x0eHo" + + "ra de Mawson\x1cHora del noroeste de Méxicu&Hora estándar del noroeste d" + + "e Méxicu%Hora braniega del noroeste de Méxicu\x1dHora del Pacíficu de Mé" + + "xicu'Hora estándar del Pacíficu de Méxicu&Hora braniega del Pacíficu de " + + "Méxicu\x15Hora d’Ulán Bátor\x1fHora estándar d’Ulán Bátor\x1eHora branie" + + "ga d’Ulán Bátor\x0eHora de Moscú\x18Hora estándar de Moscú\x17Hora brani" + + "ega de Moscú\x0fHora de Myanmar\x0dHora de Nauru\x0eHora del Nepal\x17Ho" + + "ra de Nueva Caledonia!Hora estándar de Nueva Caledonia Hora braniega de " + + "Nueva Caledonia\x15Hora de Nueva Zelanda\x1fHora estándar de Nueva Zelan" + + "da\x1eHora braniega de Nueva Zelanda\x14Hora de Newfoundland\x1eHora est" + + "ándar de Newfoundland\x1dHora braniega de Newfoundland\x0cHora de Niue" + + "\x18Hora de la Islla Norfolk\x1bHora de Fernando de Noronha%Hora estánda" + + "r de Fernando de Noronha$Hora braniega de Fernando de Noronha%Hora de le" + + "s Islles Marianes del Norte\x13Hora de Novosibirsk\x1dHora estándar de N" + + "ovosibirsk\x1cHora braniega de Novosibirsk\x0dHora d’Omsk\x17Hora estánd" + + "ar d’Omsk\x16Hora braniega d’Omsk\x13Hora del Paquistán\x1dHora estándar" + + " del Paquistán\x1cHora braniega del Paquistán\x0dHora de Palau\x1bHora d" + + "e Papúa Nueva Guinea\x12Hora del Paraguái\x1cHora estándar del Paraguái" + + "\x1bHora braniega del Paraguái\x0eHora del Perú\x18Hora estándar del Per" + + "ú\x17Hora braniega del Perú\x11Hora de Filipines\x1bHora estándar de Fi" + + "lipines\x1aHora de branu de Filipines\x1aHora de les Islles Phoenix\x1fH" + + "ora de Saint Pierre y Miquelon)Hora estándar de Saint Pierre y Miquelon(" + + "Hora braniega de Saint Pierre y Miquelon\x10Hora de Pitcairn\x0eHora de " + + "Ponape\x11hora de Pyongyang\x11Hora de Qyzylorda\x1bHora estándar de Qyz" + + "ylorda\x1aHora braniega de Qyzylorda\x10Hora de Reunión\x0fHora de Rothe" + + "ra\x10Hora de Saxalín\x1aHora estándar de Saxalín\x19Hora braniega de Sa" + + "xalín\x0eHora de Samara\x18Hora estándar de Samara\x17Hora braniega de S" + + "amara\x0dHora de Samoa\x17Hora estándar de Samoa\x16Hora braniega de Sam" + + "oa\x14Hora de Les Seixeles\x1aHora estándar de Singapur\x1bHora de les I" + + "slles Salomón\x16Hora de Xeorxa del Sur\x10Hora del Surinam\x0dHora de S" + + "yowa\x0eHora de Tahiti\x0fHora de Taipéi\x19Hora estándar de Taipéi\x18H" + + "ora braniega de Taipéi\x15Hora del Taxiquistán\x0fHora de Tokelau\x0dHor" + + "a de Tonga\x17Hora estándar de Tonga\x16Hora braniega de Tonga\x0dHora d" + + "e Chuuk\x16Hora del Turkmenistán Hora estándar del Turkmenistán\x1fHora " + + "braniega del Turkmenistán\x0eHora de Tuvalu\x11Hora del Uruguái\x1bHora " + + "estándar del Uruguái\x1aHora braniega del Uruguái\x15Hora del Uzbequistá" + + "n\x1fHora estándar del Uzbequistán\x1eHora braniega del Uzbequistán\x0fH" + + "ora de Vanuatu\x19Hora estándar de Vanuatu\x18Hora braniega de Vanuatu" + + "\x11Hora de Venezuela\x13Hora de Vladivostok\x1dHora estándar de Vladivo" + + "stok\x1cHora braniega de Vladivostok\x12Hora de Volgográu\x1cHora estánd" + + "ar de Volgográu\x1bHora braniega de Volgográu\x0eHora de Vostok\x15Hora " + + "de la Islla Wake\x17Hora de Wallis y Futuna\x0fHora de Yakutsk\x19Hora e" + + "stándar de Yakutsk\x18Hora braniega de Yakutsk\x16Hora de Yekaterimburgu" + + " Hora estándar de Yekaterimburgu\x1fHora braniega de Yekaterimburgu\x03G" + + "MT\x03GMT\x03GMT\x03GMT\x02NT\x03NST\x03NDT\x03GMT\x03MST\x03MDT\x03GMT" + + "\x03GMT\x03MAG\x03GMT\x03HAT\x0cen {0} horas\x0dhai {0} horas\x03GMT\x03" + + "GMT\x03GMT\x03GMT\x03GMT\x03WET\x03GMT\x03GMT\x03GMT\x13Hora padrão de {" + + "0}" + +var bucket7 string = "" + // Size: 9301 bytes + "\x10G d MMMM y, EEEE\x0bG d MMMM, y\x09G d MMM y\x0dGGGGG dd.MM.y\x03yan" + + "\x03fev\x03mar\x03apr\x03may\x03iyn\x03iyl\x03avq\x03sen\x03okt\x03noy" + + "\x03dek\x06yanvar\x06fevral\x04mart\x05aprel\x04iyun\x04iyul\x06avqust" + + "\x08sentyabr\x07oktyabr\x06noyabr\x06dekabr\x06Yanvar\x06Fevral\x04Mart" + + "\x05Aprel\x03May\x05İyun\x05İyul\x06Avqust\x08Sentyabr\x07Oktyabr\x06Noy" + + "abr\x06Dekabr\x02B.\x04B.E.\x05Ç.A.\x03Ç.\x04C.A.\x02C.\x03Ş.\x05bazar" + + "\x0dbazar ertəsi\x16çərşənbə axşamı\x0dçərşənbə\x0fcümə axşamı\x06cümə" + + "\x08şənbə\x081-ci kv.\x082-ci kv.\x093-cü kv.\x094-cü kv.\x0c1-ci kvarta" + + "l\x0c2-ci kvartal\x0d3-cü kvartal\x0d4-cü kvartal\x0agecəyarı\x08günorta" + + "\x05sübh\x07səhər\x08gündüz\x0caxşamüstü\x06axşam\x05gecə\x12eramızdan ə" + + "vvəl\x14bizim eradan əvvəl\x08yeni era\x09bizim era\x05e.ə.\x07b.e.ə." + + "\x04y.e.\x04b.e.\x0ed MMMM y, EEEE\x08dd.MM.yy\x03İl\x0akeçən il\x05bu i" + + "l\x0agələn il\x10{0} il ərzində\x0d{0} il öncə\x02il\x04Rüb\x0ckeçən rüb" + + "\x07bu rüb\x0cgələn rüb\x12{0} rüb ərzində\x0f{0} rüb öncə\x04rüb\x02Ay" + + "\x0akeçən ay\x05bu ay\x0agələn ay\x10{0} ay ərzində\x0d{0} ay öncə\x02ay" + + "\x07Həftə\x0fkeçən həftə\x0abu həftə\x0fgələn həftə\x15{0} həftə ərzində" + + "\x12{0} həftə öncə\x0d{0} həftəsi\x07həftə\x04Gün\x07dünən\x07bu gün\x05" + + "sabah\x12{0} gün ərzində\x0f{0} gün öncə\x11Həftənin Günü\x0dkeçən bazar" + + "\x08bu bazar\x0dgələn bazar\x13{0} bazar ərzində\x10{0} bazar öncə\x15ke" + + "çən bazar ertəsi\x10bu bazar ertəsi\x15gələn bazar ertəsi\x1b{0} bazar " + + "ertəsi ərzində\x1b{0} bazar ertəsi əzrində\x18{0} bazar ertəsi öncə\x0ak" + + "eçən BE\x05bu BE\x0agələn BE\x1ekeçən çərşənbə axşamı\x19bu çərşənbə axş" + + "amı\x1egələn çərşənbə axşamı${0} çərşənbə axşamı ərzində!{0} çərşənbə ax" + + "şamı öncə\x0ckeçən ÇƏ\x07bu ÇƏ\x0cgələn ÇƏ\x15keçən çərşənbə\x10bu çərş" + + "ənbə\x15gələn çərşənbə\x1b{0} çərşənbə ərzində\x18{0} çərşənbə öncə\x0a" + + "keçən Ç\x05bu Ç\x0agələn Ç\x17keçən cümə axşamı\x12bu cümə axşamı\x17gəl" + + "ən cümə axşamı\x1d{0} cümə axşamı ərzində\x1a{0} cümə axşamı öncə\x0ake" + + "çən CA\x05bu CA\x0agələn CA\x0ekeçən cümə\x09bu cümə\x0egələn cümə\x14{" + + "0} cümə ərzində\x11{0} cümə öncə\x09keçən C\x04bu C\x09gələn C\x10keçən " + + "şənbə\x0bbu şənbə\x10gələn şənbə\x16{0} şənbə ərzində\x13{0} şənbə öncə" + + "\x0akeçən Ş\x05bu Ş\x0agələn Ş\x05AM/PM\x04Saat\x07bu saat\x12{0} saat ə" + + "rzində\x0f{0} saat öncə\x04saat\x08Dəqiqə\x0bbu dəqiqə\x16{0} dəqiqə ərz" + + "ində\x13{0} dəqiqə öncə\x05dəq.\x07Saniyə\x04indi\x15{0} saniyə ərzində" + + "\x12{0} saniyə öncə\x04san.\x0fSaat Qurşağı\x0a{0} Vaxtı\x0e{0} Yay Vaxt" + + "ı\x13{0} Standart Vaxtı(Koordinasiya edilmiş ümumdünya vaxtı\x14Britani" + + "ya Yay Vaxtı\x15İrlandiya Yay Vaxtı\x13Əfqanıstan Vaxtı\x17Mərkəzi Afrik" + + "a Vaxtı\x15Şərqi Afrika Vaxtı\x15Cənubi Afrika Vaxtı\x14Qərbi Afrika Vax" + + "tı\x1dQərbi Afrika Standart Vaxtı\x18Qərbi Afrika Yay Vaxtı\x0eAlyaska V" + + "axtı\x17Alyaska Standart Vaxtı\x12Alyaska Yay Vaxtı\x0dAmazon Vaxtı\x16A" + + "mazon Standart Vaxtı\x11Amazon Yay Vaxtı Şimali Mərkəzi Amerika Vaxtı)Şi" + + "mali Mərkəzi Amerika Standart Vaxtı$Şimali Mərkəzi Amerika Yay Vaxtı\x1e" + + "Şimali Şərqi Amerika Vaxtı'Şimali Şərqi Amerika Standart Vaxtı\x22Şimal" + + "i Şərqi Amerika Yay Vaxtı\x1fŞimali Dağlıq Amerika Vaxtı(Şimali Dağlıq A" + + "merika Standart Vaxtı#Şimali Dağlıq Amerika Yay Vaxtı\x22Şimali Amerika " + + "Sakit Okean Vaxtı+Şimali Amerika Sakit Okean Standart Vaxtı&Şimali Ameri" + + "ka Sakit Okean Yay Vaxtı\x0bApia Vaxtı\x14Apia Standart Vaxtı\x0fApia Ya" + + "y Vaxtı\x12Ərəbistan Vaxtı\x1bƏrəbistan Standart Vaxtı\x16Ərəbistan Yay " + + "Vaxtı\x10Argentina Vaxtı\x19Argentina Standart Vaxtı\x14Argentina Yay Va" + + "xtı\x17Qərbi Argentina Vaxtı Qərbi Argentina Standart Vaxtı\x1bQərbi Arg" + + "entina Yay Vaxtı\x12Ermənistan Vaxtı\x1bErmənistan Standart Vaxtı\x16Erm" + + "ənistan Yay Vaxtı\x0dAtlantik Vaxt\x16Atlantik Standart Vaxt\x13Atlanti" + + "k Yay Vaxtı\x1bMərkəzi Avstraliya Vaxtı$Mərkəzi Avstraliya Standart Vaxt" + + "ı\x1fMərkəzi Avstraliya Yay Vaxtı\x22Mərkəzi Qərbi Avstraliya Vaxtı+Mər" + + "kəzi Qərbi Avstraliya Standart Vaxtı&Mərkəzi Qərbi Avstraliya Yay Vaxtı" + + "\x19Şərqi Avstraliya Vaxtı\x22Şərqi Avstraliya Standart Vaxtı\x1dŞərqi A" + + "vstraliya Yay Vaxtı\x18Qərbi Avstraliya Vaxtı!Qərbi Avstraliya Standart " + + "Vaxtı\x1cQərbi Avstraliya Yay Vaxtı\x12Azərbaycan Vaxtı\x1bAzərbaycan St" + + "andart Vaxtı\x16Azərbaycan Yay Vaxtı\x0bAzor Vaxtı\x14Azor Standart Vaxt" + + "ı\x0fAzor Yay Vaxtı\x11Banqladeş Vaxtı\x1aBanqladeş Standart Vaxtı\x15B" + + "anqladeş Yay Vaxtı\x0cButan Vaxtı\x0fBoliviya Vaxtı\x10Braziliya Vaxtı" + + "\x19Braziliya Standart Vaxtı\x14Braziliya Yay Vaxtı\x18Brunei Darussalam" + + " vaxtı\x11Kape Verde Vaxtı\x1aKape Verde Standart Vaxtı\x15Kape Verde Ya" + + "y Vaxtı\x0fÇamorro Vaxtı\x0eÇatham Vaxtı\x17Çatham Standart Vaxtı\x12Çat" + + "ham Yay Vaxtı\x0cÇili Vaxtı\x15Çili Standart Vaxtı\x10Çili Yay Vaxtı\x0b" + + "Çin Vaxtı\x14Çin Standart Vaxtı\x0fÇin Yay Vaxtı\x11Çoybalsan Vaxtı\x1a" + + "Çoybalsan Standart Vaxtı\x15Çoybalsan Yay Vaxtı\x13Milad Adası Vaxtı" + + "\x15Kokos Adaları Vaxtı\x10Kolumbiya Vaxtı\x19Kolumbiya Standart Vaxtı" + + "\x14Kolumbiya Yay Vaxtı\x13Kuk Adaları Vaxtı\x1cKuk Adaları Standart Vax" + + "tı\x1eKuk Adaları Yarım Yay Vaxtı\x0bKuba Vaxtı\x14Kuba Standart Vaxtı" + + "\x0fKuba Yay Vaxtı\x0cDevis Vaxtı\x18Dümon-d’Ürvil Vaxtı\x14Şərqi Timor " + + "Vaxtı\x13Pasxa Adası Vaxtı\x1cPasxa Adası Standart Vaxtı\x17Pasxa Adası " + + "Yay Vaxtı\x0eEkvador Vaxtı\x17Mərkəzi Avropa Vaxtı Mərkəzi Avropa Standa" + + "rt Vaxtı\x1bMərkəzi Avropa Yay Vaxtı\x15Şərqi Avropa Vaxtı\x1eŞərqi Avro" + + "pa Standart Vaxtı\x19Şərqi Avropa Yay Vaxtı\x1cKənar Şərqi Avropa Vaxtı" + + "\x14Qərbi Avropa Vaxtı\x1dQərbi Avropa Standart Vaxtı\x18Qərbi Avropa Ya" + + "y Vaxtı\x18Folklend Adaları Vaxtı!Folklend Adaları Standart Vaxtı\x1cFol" + + "klend Adaları Yay Vaxtı\x0bFici Vaxtı\x14Fici Standart Vaxtı\x0fFici Yay" + + " Vaxtı\x19Fransız Qvianası Vaxtı%Fransız Cənubi və Antarktik Vaxtı\x10Qa" + + "lapaqos Vaxtı\x0eQambier Vaxtı\x11Gurcüstan Vaxtı\x1aGurcüstan Standart " + + "Vaxtı\x15Gurcüstan Yay Vaxtı\x17Gilbert Adaları Vaxtı\x14Qrinviç Orta Va" + + "xtı\x1aŞərqi Qrenlandiya Vaxtı#Şərqi Qrenlandiya Standart Vaxtı\x1eŞərqi" + + " Qrenlandiya Yay Vaxtı\x19Qərbi Qrenlandiya Vaxtı\x22Qərbi Qrenlandiya S" + + "tandart Vaxtı\x1dQərbi Qrenlandiya Yay Vaxtı\x0fKörfəz Vaxtı\x0dQayana V" + + "axtı\x12Havay-Aleut Vaxtı\x1bHavay-Aleut Standart Vaxtı\x16Havay-Aleut Y" + + "ay Vaxtı\x10Honq Konq Vaxtı\x19Honq Konq Standart Vaxtı\x14Honq Konq Yay" + + " Vaxtı\x0bHovd Vaxtı\x14Hovd Standart Vaxtı\x0fHovd Yay Vaxtı\x10Hindist" + + "an Vaxtı\x13Hind Okeanı Vaxtı\x0fHindçin Vaxtı\x1cMərkəzi İndoneziya Vax" + + "tı\x1aŞərqi İndoneziya Vaxtı\x19Qərbi İndoneziya Vaxtı\x0cİran Vaxtı\x15" + + "İran Standart Vaxtı\x10İran Yay Vaxtı\x0fİrkutsk Vaxtı\x18İrkutsk Stand" + + "art Vaxtı\x13İrkutsk Yay Vaxtı\x0eİsrail Vaxtı\x17İsrail Standart Vaxtı" + + "\x12İsrail Yay Vaxtı\x0fYaponiya Vaxtı\x18Yaponiya Standart Vaxtı\x13Yap" + + "oniya Yay Vaxtı\x1aŞərqi Qazaxıstan Vaxtı\x19Qərbi Qazaxıstan Vaxtı\x0dK" + + "oreya Vaxtı\x16Koreya Standart Vaxtı\x11Koreya Yay Vaxtı\x0cKorse Vaxtı" + + "\x12Krasnoyarsk Vaxtı\x1bKrasnoyarsk Standart Vaxtı\x16Krasnoyarsk Yay V" + + "axtı\x16Qırğızıstan Vaxtı\x14Layn Adaları Vaxtı\x0fLord Hau Vaxtı\x18Lor" + + "d Hau Standart Vaxtı\x13Lord Hau Yay vaxtı\x14Makari Adası Vaxtı\x0eMaqa" + + "dan Vaxtı\x17Maqadan Standart Vaxtı\x12Maqadan Yay Vaxtı\x10Malayziya Va" + + "xtı\x0dMaldiv Vaxtı\x0fMarkesas Vaxtı\x17Marşal Adaları Vaxtı\x0eMavriki" + + " Vaxtı\x17Mavriki Standart Vaxtı\x12Mavriki Yay Vaxtı\x0dMouson Vaxtı" + + "\x1cŞimal-Qərbi Meksika Vaxtı%Şimal-Qərbi Meksika Standart Vaxtı Şimal-Q" + + "ərbi Meksika Yay Vaxtı\x1aMeksika Sakit Okean Vaxtı#Meksika Sakit Okean" + + " Standart Vaxtı\x1eMeksika Sakit Okean Yay Vaxtı\x10Ulanbator Vaxtı\x19U" + + "lanbator Standart Vaxtı\x14Ulanbator Yay Vaxtı\x0dMoskva Vaxtı\x16Moskva" + + " Standart Vaxtı\x11Moskva Yay vaxtı\x0dMyanma Vaxtı\x0cNauru Vaxtı\x0cNe" + + "pal vaxtı\x16Yeni Kaledoniya Vaxtı\x1fYeni Kaledoniya Standart Vaxtı\x1a" + + "Yeni Kaledoniya Yay Vaxtı\x15Yeni Zelandiya Vaxtı\x1eYeni Zelandiya Stan" + + "dart Vaxtı\x19Yeni Zelandiya Yay Vaxtı\x13Nyufaundlend Vaxtı\x1cNyufaund" + + "lend Standart Vaxtı\x17Nyufaundlend Yay Vaxtı\x0bNiue Vaxtı\x15Norfolk A" + + "dası Vaxtı\x1aFernando de Noronya Vaxtı#Fernando de Noronya Standart Vax" + + "tı\x1eFernando de Noronya Yay Vaxtı\x12Novosibirsk Vaxtı\x1bNovosibirsk " + + "Standart Vaxtı\x16Novosibirsk Yay Vaxtı\x0bOmsk Vaxtı\x14Omsk Standart V" + + "axtı\x0fOmsk Yay Vaxtı\x0fPakistan Vaxtı\x18Pakistan Standart vaxtı\x13P" + + "akistan Yay Vaxtı\x0cPalau Vaxtı\x19Papua Yeni Qvineya Vaxtı\x0fParaqvay" + + " Vaxtı\x18Paraqvay Standart Vaxtı\x13Paraqvay Yay Vaxtı\x0bPeru Vaxtı" + + "\x14Peru Standart Vaxtı\x0fPeru Yay Vaxtı\x0fFilippin Vaxtı\x18Filippin " + + "Standart Vaxtı\x13Filippin Yay Vaxtı\x16Feniks Adaları Vaxtı\x1bSan Pier" + + " və Mikelon Vaxtı$San Pier və Mikelon Standart Vaxtı\x1fSan Pier və Mike" + + "lon Yay Vaxtı\x0ePitkern Vaxtı\x0dPonape Vaxtı\x0ePxenyan Vaxtı\x0eReuni" + + "on Vaxtı\x0dRotera Vaxtı\x0eSaxalin Vaxtı\x17Saxalin Standart Vaxtı\x12S" + + "axalin Yay Vaxtı\x0dSamara vaxtı\x16Samara standart vaxtı\x11Samara yay " + + "vaxtı\x0cSamoa Vaxtı\x15Samoa Standart Vaxtı\x10Samoa Yay Vaxtı\x17Seyşe" + + "l Adaları Vaxtı\x0fSinqapur Vaxtı\x17Solomon Adaları Vaxtı\x16Cənubi Cor" + + "ciya Vaxtı\x0eSurinam Vaxtı\x0cSyova Vaxtı\x0dTahiti Vaxtı\x0dTaybey Vax" + + "tı\x16Taybey Standart Vaxtı\x11Taybey Yay Vaxtı\x11Tacikistan Vaxtı\x0eT" + + "okelau Vaxtı\x0cTonqa Vaxtı\x15Tonqa Standart Vaxtı\x10Tonqa Yay Vaxtı" + + "\x0cÇuuk Vaxtı\x15Türkmənistan Vaxtı\x1eTürkmənistan Standart Vaxtı\x19T" + + "ürkmənistan Yay Vaxtı\x0dTuvalu Vaxtı\x0eUruqvay Vaxtı\x17Uruqvay Stand" + + "art Vaxtı\x12Uruqvay Yay Vaxtı\x13Özbəkistan Vaxtı\x1cÖzbəkistan Standar" + + "t Vaxtı\x17Özbəkistan Yay Vaxtı\x0eVanuatu Vaxtı\x17Vanuatu Standart Vax" + + "tı\x12Vaunatu Yay Vaxtı\x10Venesuela Vaxtı\x12Vladivostok Vaxtı\x1bVladi" + + "vostok Standart Vaxtı\x16Vladivostok Yay Vaxtı\x10Volqoqrad Vaxtı\x19Vol" + + "qoqrad Standart Vaxtı\x14Volqoqrad Yay Vaxtı\x0dVostok Vaxtı\x0bUeyk Vax" + + "tı\x18Uollis və Futuna Vaxtı\x0eYakutsk Vaxtı\x17Yakutsk Standart Vaxtı" + + "\x12Yakutsk Yay Vaxtı\x14Yekaterinburq Vaxtı\x1dYekaterinburq Standart V" + + "axtı\x18Yekaterinburq Yay Vaxtı\x05am/pm\x03fbl\x03msi\x03apl\x03mai\x03" + + "yun\x03yul\x03agt\x03stb\x04ɔtb\x03nvb\x03dsb\x03fev\x03mar\x03apr\x03ma" + + "y\x03avg\x03sen\x03okt\x03dek\x04mart\x05aprel\x06avgust\x07sentabr\x06o" + + "ktabr\x06dekabr\x04Mart\x03May\x04Iyun\x04Iyul\x06Avgust\x07Sentabr\x06O" + + "ktabr\x03feb\x04mäz\x03prl\x03yun\x03yul\x03gst\x03set\x03ton\x03nov\x03" + + "tob" + +var bucket8 string = "" + // Size: 20527 bytes + "\x06јан\x06фев\x06мар\x06апр\x06май\x06ијн\x06ијл\x06авг\x06сен\x06окт" + + "\x06ној\x06дек\x0cјанвар\x0cфеврал\x08март\x0aапрел\x08ијун\x08ијул\x0cа" + + "вгуст\x10сентјабр\x0eоктјабр\x0cнојабр\x0cдекабр\x0cЈанвар\x0cФеврал" + + "\x08Март\x0aАпрел\x06Май\x08Ијун\x08Ијул\x0cАвгуст\x10Сентјабр\x0eОктјаб" + + "р\x0cНојабр\x0cДекабр\x03Б.\x06Б.Е.\x06Ч.А.\x03Ч.\x06Ҹ.А.\x03Ҹ.\x03Ш." + + "\x0aбазар\x17базар ертәси\x1dчәршәнбә ахшамы\x10чәршәнбә\x15ҹүмә ахшамы" + + "\x08ҹүмә\x0aшәнбә\x0c1-ҹи кв.\x0c2-ҹи кв.\x0c3-ҹү кв.\x0c4-ҹү кв.\x151-ҹ" + + "и квартал\x152-ҹи квартал\x153-ҹү квартал\x154-ҹү квартал\x10ҝеҹәјары" + + "\x04АМ\x0eҝүнорта\x04ПМ\x08сүбһ\x0aсәһәр\x0cҝүндүз\x12ахшамүстү\x0aахшам" + + "\x08ҝеҹә\x02а\x02ҝ\x02п\x1dерамыздан әввәл\x22бизим ерадан әввәл\x0fјени" + + " ера\x11бизим ера\x06е.ә.\x09б.е.ә.\x06ј.е.\x06б.е.\x04kɔn\x03mac\x03mat" + + "\x03mto\x03mpu\x03hil\x03nje\x03hik\x03dip\x03bio\x03may\x04liɓ\x09Kɔndɔ" + + "ŋ\x09Màcɛ̂l\x08Màtùmb\x06Màtop\x08M̀puyɛ\x0cHìlòndɛ̀\x07Njèbà\x07Hìkaŋ" + + "\x09Dìpɔ̀s\x08Bìòôm\x0aMàyɛsèp\x10Lìbuy li ńyèe\x04nɔy\x03nja\x03uum\x04" + + "ŋge\x04mbɔ\x05kɔɔ\x03jon\x0dŋgwà nɔ̂y\x11ŋgwà njaŋgumba\x0aŋgwà ûm\x0cŋ" + + "gwà ŋgê\x0cŋgwà mbɔk\x0cŋgwà kɔɔ\x0bŋgwà jôn\x04K1s3\x04K2s3\x04K3s3\x04" + + "K4s3\x15Kèk bisu i soŋ iaâ\x22Kèk i ńyonos biɓaà i soŋ iaâ Kèk i ńyonos " + + "biaâ i soŋ iaâ Kèk i ńyonos binâ i soŋ iaâ\x0dI bikɛ̂glà\x0bI ɓugajɔp" + + "\x17bisū bi Yesù Krǐstò\x16i mbūs Yesù Krǐstò\x05b.Y.K\x05m.Y.K\x04kèk" + + "\x06ŋwìi\x04soŋ\x09sɔndɛ̂\x04kɛl\x07yààni\x06lɛ̀n\x05yàni\x13hìlɔ hi sɔn" + + "dɛ̂\x09njǎmùha\x07ŋgɛŋ\x05ŋget\x0chìŋgeŋget\x10komboo i ŋgɛŋ\x06d.M.yy" + + "\x07d.M.y G\x0bd.M.y GGGGG\x0c{1} 'у' {0}\x06сту\x06лют\x06сак\x06кра" + + "\x06мая\x06чэр\x06ліп\x06жні\x06вер\x06кас\x06ліс\x06сне\x02с\x02л\x02к" + + "\x02м\x02ч\x02ж\x02в\x10студзеня\x0cлютага\x10сакавіка\x12красавіка\x0eч" + + "эрвеня\x0cліпеня\x0cжніўня\x0eверасня\x16кастрычніка\x12лістапада\x0cсн" + + "ежня\x10студзень\x08люты\x0eсакавік\x10красавік\x0eчэрвень\x0cліпень" + + "\x0eжнівень\x10верасень\x14кастрычнік\x10лістапад\x0eснежань\x04нд\x04пн" + + "\x04аў\x04ср\x04чц\x04пт\x04сб\x02н\x0eнядзеля\x14панядзелак\x0eаўторак" + + "\x0cсерада\x0cчацвер\x0eпятніца\x0cсубота\x0c1-шы кв.\x0c2-гі кв.\x0c3-ц" + + "і кв.\x0c4-ты кв.\x151-шы квартал\x152-гі квартал\x153-ці квартал\x154-" + + "ты квартал\x02am\x02pm*да нараджэння Хрыстова\x16да нашай эры*ад нарадж" + + "эння Хрыстова\x11нашай эры\x0bда н.э.\x06н.э.\x14EEEE, d MMMM y 'г'." + + "\x0ed MMMM y 'г'.\x06d.MM.y\x07d.MM.yy\x0eHH:mm:ss, zzzz\x06эра\x06год" + + "\x1cу мінулым годзе\x18у гэтым годзе у наступным годзе\x13праз {0} год" + + "\x15праз {0} гады\x17праз {0} гадоў\x15праз {0} года\x13{0} год таму\x15" + + "{0} гады таму\x17{0} гадоў таму\x15{0} года таму\x03г.\x10праз {0} г." + + "\x10{0} г. таму\x0eквартал\x22у мінулым квартале\x1eу гэтым квартале&у н" + + "аступным квартале\x1bпраз {0} квартал\x1dпраз {0} кварталы\x1fпраз {0} " + + "кварталаў\x1dпраз {0} квартала\x1b{0} квартал таму\x1d{0} кварталы таму" + + "\x1f{0} кварталаў таму\x1d{0} квартала таму\x05кв.\x12праз {0} кв.\x12{0" + + "} кв. таму\x0aмесяц\x1eу мінулым месяцы\x1aу гэтым месяцы\x22у наступным" + + " месяцы\x17праз {0} месяц\x19праз {0} месяцы\x1bпраз {0} месяцаў\x19праз" + + " {0} месяца\x17{0} месяц таму\x19{0} месяцы таму\x1b{0} месяцаў таму\x19" + + "{0} месяца таму\x07мес.\x14праз {0} мес.\x14{0} мес. таму\x06тыд\x1eна м" + + "інулым тыдні\x1aна гэтым тыдні\x22на наступным тыдні\x1bпраз {0} тыдзен" + + "ь\x17праз {0} тыдні\x19праз {0} тыдняў\x17праз {0} тыдня\x1b{0} тыдзень" + + " таму\x17{0} тыдні таму\x19{0} тыдняў таму\x17{0} тыдня таму\x12тыдзень " + + "{0}\x13праз {0} тыд\x13{0} тыд таму\x0aдзень\x12пазаўчора\x0aучора\x0aсё" + + "ння\x0cзаўтра\x16паслязаўтра\x17праз {0} дзень\x13праз {0} дні\x15праз " + + "{0} дзён\x13праз {0} дня\x17{0} дзень таму\x13{0} дні таму\x15{0} дзён т" + + "аму\x13{0} дня таму\x03д.\x10праз {0} д.\x10{0} д. таму\x15дзень тыдня " + + "у мінулую нядзелю\x1aу гэту нядзелю$у наступную нядзелю\x1bпраз {0} няд" + + "зелю\x1bпраз {0} нядзелі\x1bпраз {0} нядзель\x1b{0} нядзелю таму\x1b{0}" + + " нядзелі таму\x1b{0} нядзель таму\x16у мінулую нд\x10у гэту нд\x1aу наст" + + "упную нд$у мінулы панядзелак у гэты панядзелак(у наступны панядзелак!пр" + + "аз {0} панядзелак!праз {0} панядзелкі#праз {0} панядзелкаў!праз {0} пан" + + "ядзелка!{0} панядзелак таму!{0} панядзелкі таму#{0} панядзелкаў таму!{0" + + "} панядзелка таму\x14у мінулы пн\x10у гэты пн\x18у наступны пн\x1eу міну" + + "лы аўторак\x1aу гэты аўторак\x22у наступны аўторак\x1bпраз {0} аўторак" + + "\x1bпраз {0} аўторкі\x1dпраз {0} аўторкаў\x1bпраз {0} аўторка\x1b{0} аўт" + + "орак таму\x1b{0} аўторкі таму\x1d{0} аўторкаў таму\x1b{0} аўторка таму" + + "\x14у мінулы аў\x10у гэты аў\x18у наступны аў\x1eу мінулую сераду\x18у г" + + "эту сераду\x22у наступную сераду\x19праз {0} сераду\x19праз {0} серады" + + "\x17праз {0} серад\x19{0} сераду таму\x19{0} серады таму\x17{0} серад та" + + "му\x16у мінулую ср\x10у гэту ср\x1aу наступную ср\x1cу мінулы чацвер" + + "\x18у гэты чацвер у наступны чацвер\x19праз {0} чацвер\x1dпраз {0} чацвя" + + "ргі\x1fпраз {0} чацвяргоў\x1dпраз {0} чацвярга\x19{0} чацвер таму\x1d{0" + + "} чацвяргі таму\x1f{0} чацвяргоў таму\x1d{0} чацвярга таму\x14у мінулы ч" + + "ц\x10у гэты чц\x18у наступны чц у мінулую пятніцу\x1aу гэту пятніцу$у н" + + "аступную пятніцу\x1bпраз {0} пятніцу\x1bпраз {0} пятніцы\x19праз {0} пя" + + "тніц\x1b{0} пятніцу таму\x1b{0} пятніцы таму\x19{0} пятніц таму\x16у мі" + + "нулую пт\x10у гэту пт\x1aу наступную пт\x1eу мінулую суботу\x18у гэту с" + + "уботу\x22у наступную суботу\x19праз {0} суботу\x19праз {0} суботы\x17пр" + + "аз {0} субот\x19{0} суботу таму\x19{0} суботы таму\x17{0} субот таму" + + "\x16у мінулую сб\x10у гэту сб\x1aу наступную сб\x0eгадзіна\x1aу гэту гад" + + "зіну\x1bпраз {0} гадзіну\x1bпраз {0} гадзіны\x19праз {0} гадзін\x1b{0} " + + "гадзіну таму\x1b{0} гадзіны таму\x19{0} гадзін таму\x08гадз\x15праз {0}" + + " гадз\x15{0} гадз таму\x0eхвіліна\x1aу гэту хвіліну\x1bпраз {0} хвіліну" + + "\x1bпраз {0} хвіліны\x19праз {0} хвілін\x1b{0} хвіліну таму\x1b{0} хвілі" + + "ны таму\x19{0} хвілін таму\x04хв\x11праз {0} хв\x11{0} хв таму\x0eсекун" + + "да\x0aцяпер\x1bпраз {0} секунду\x1bпраз {0} секунды\x19праз {0} секунд" + + "\x1b{0} секунду таму\x1b{0} секунды таму\x19{0} секунд таму\x0fпраз {0} " + + "с\x0f{0} с таму\x15часавы пояс\x0d+HH.mm;-HH.mm\x06GMT{0}\x03GMT\x0bЧас" + + ": {0}\x16Летні час: {0} Стандартны час: {0}$Брытанскі летні час.Ірландск" + + "і стандартны час!Афганістанскі час/Цэнтральнаафрыканскі час)Усходнеафры" + + "канскі час+Паўднёваафрыканскі час)Заходнеафрыканскі час>Заходнеафрыканс" + + "кі стандартны час4Заходнеафрыканскі летні час\x13Час Аляскі(Стандартны " + + "час Аляскі\x1eЛетні час Аляскі\x19Амазонскі час.Амазонскі стандартны ча" + + "с$Амазонскі летні часBПаўночнаамерыканскі цэнтральны часWПаўночнаамерык" + + "анскі цэнтральны стандартны часMПаўночнаамерыканскі цэнтральны летні ча" + + "с<Паўночнаамерыканскі ўсходні часQПаўночнаамерыканскі ўсходні стандартн" + + "ы часGПаўночнаамерыканскі ўсходні летні час8Паўночнаамерыканскі горны ч" + + "асMПаўночнаамерыканскі горны стандартны часCПаўночнаамерыканскі горны л" + + "етні час\x1fЦіхаакіянскі час4Ціхаакіянскі стандартны час*Ціхаакіянскі л" + + "етні час\x0fЧас Апіі$Стандартны час Апіі\x1aЛетні час Апіі(Час Саудаўск" + + "ай Аравіі=Стандартны час Саудаўскай Аравіі3Летні час Саудаўскай Аравіі" + + "\x1dАргенцінскі час2Аргенцінскі стандартны час(Аргенцінскі летні час*Час" + + " Заходняй Аргенціны?Стандартны час Заходняй Аргенціны5Летні час Заходняй" + + " Аргенціны\x15Час Арменіі*Стандартны час Арменіі Летні час Арменіі\x1bАт" + + "лантычны час0Атлантычны стандартны час&Атлантычны летні час0Час цэнтрал" + + "ьнай АўстралііEСтандартны час цэнтральнай Аўстраліі;Летні час цэнтральн" + + "ай Аўстраліі?Заходні час Цэнтральнай АўстралііTЗаходні стандартны час Ц" + + "энтральнай АўстралііJЗаходні летні час Цэнтральнай Аўстраліі*Час усходн" + + "яй Аўстраліі?Стандартны час усходняй Аўстраліі5Летні час усходняй Аўстр" + + "аліі*Час заходняй Аўстраліі?Стандартны час заходняй Аўстраліі5Летні час" + + " заходняй Аўстраліі\x1fЧас Азербайджана4Стандартны час Азербайджана*Летн" + + "і час Азербайджана(Час Азорскіх астравоў=Стандартны час Азорскіх астрав" + + "оў3Летні час Азорскіх астравоў\x19Час Бангладэш.Стандартны час Бангладэ" + + "ш$Летні час Бангладэш\x13Час Бутана\x1bБалівійскі час\x1bБразільскі час" + + "0Бразільскі стандартны час&Бразільскі летні час\x13Час Брунея\x1aЧас Каб" + + "а-Вердэ/Стандартны час Каба-Вердэ%Летні час Каба-Вердэ\x13Час Чамора" + + "\x13Час Чатэма(Стандартны час Чатэма\x1eЛетні час Чатэма\x17Чылійскі час" + + ",Чылійскі стандартны час\x22Чылійскі летні час\x11Час Кітая&Стандартны ч" + + "ас Кітая\x1cЛетні час Кітая\x1bЧас Чайбалсана0Стандартны час Чайбалсана" + + "&Летні час Чайбалсана\x22Час вострава Каляд*Час Какосавых астравоў\x1dКа" + + "лумбійскі час2Калумбійскі стандартны час(Калумбійскі летні час Час астр" + + "авоў Кука5Стандартны час астравоў Кука1Паўлетні час астравоў Кука\x0fЧа" + + "с Кубы$Стандартны час Кубы\x1aЛетні час Кубы\x22Час станцыі Дэйвіс3Час " + + "станцыі Дзюмон-Дзюрвіль&Час Усходняга Тымора\x22Час вострава Пасхі7Стан" + + "дартны час вострава Пасхі-Летні час вострава Пасхі\x1bЭквадорскі час/Цэ" + + "нтральнаеўрапейскі часDЦэнтральнаеўрапейскі стандартны час:Цэнтральнаеў" + + "рапейскі летні час)Усходнееўрапейскі час>Усходнееўрапейскі стандартны ч" + + "ас4Усходнееўрапейскі летні час\x19Беларускі час)Заходнееўрапейскі час>З" + + "аходнееўрапейскі стандартны час4Заходнееўрапейскі летні час0Час Фалклен" + + "дскіх астравоўEСтандартны час Фалклендскіх астравоў;Летні час Фалклендс" + + "кіх астравоў\x11Час Фіджы&Стандартны час Фіджы\x1cЛетні час Фіджы*Час Ф" + + "ранцузскай Гвіяны_Час Французскіх Паўднёвых і Антарктычных тэрыторыйEСт" + + "андартны час Галапагоскіх астравоў#Час атравоў Гамб’е\x19Грузінскі час." + + "Грузінскі стандартны час$Грузінскі летні час(Час астравоў Гілберта\x1cЧ" + + "ас па Грынвічы,Час Усходняй ГрэнландыіAСтандартны час Усходняй Грэнланд" + + "ыі7Летні час Усходняй Грэнландыі,Час Заходняй ГрэнландыіAСтандартны час" + + " Заходняй Грэнландыі7Летні час Заходняй Грэнландыі*Час Персідскага залів" + + "а\x11Час Гаяны&Гавайска-Алеуцкі час;Гавайска-Алеуцкі стандартны час1Гав" + + "айска-Алеуцкі летні час\x17Час Ганконга,Стандартны час Ганконга\x22Летн" + + "і час Ганконга\x11Час Хоўда&Стандартны час Хоўда\x1cЛетні час Хоўда\x11" + + "Час Індыі(Час Індыйскага акіяна\x1fІндакітайскі час3Цэнтральнаінданезій" + + "скі час-Усходнеінданезійскі час-Заходнеінданезійскі час\x15Іранскі час*" + + "Іранскі стандартны час Іранскі летні час\x15Іркуцкі час*Іркуцкі стандар" + + "тны час Іркуцкі летні час\x1bІзраільскі час0Ізраільскі стандартны час&І" + + "зраільскі летні час\x13Час Японіі(Стандартны час Японіі\x1eЛетні час Яп" + + "оніі-Усходнеказахстанскі час-Заходнеказахстанскі час\x11Час Карэі&Станд" + + "артны час Карэі\x1cЛетні час Карэі$Час астравоў Кусаіе\x1dКраснаярскі ч" + + "ас2Краснаярскі стандартны час(Краснаярскі летні час\x1dЧас Кыргызстана " + + "Час астравоў Лайн\x16Час Лорд-Хау+Стандартны час Лорд-Хау!Летні час Лор" + + "д-Хау&Час вострава Макуоры\x1bМагаданскі час0Магаданскі стандартны час&" + + "Магаданскі летні час\x17Час Малайзіі\x15Час Мальдыў,Час Маркізскіх астр" + + "авоў,Час Маршалавых астравоў\x17Час Маўрыкія,Стандартны час Маўрыкія" + + "\x22Летні час Маўрыкія\x22Час станцыі Моўсан=Паўночна-заходні мексіканск" + + "і часRПаўночна-заходні мексіканскі стандартны часHПаўночна-заходні мекс" + + "іканскі летні час6Мексіканскі ціхаакіянскі часIМексіканскі ціхаакіянскі" + + " стандатны часAМексіканскі ціхаакіянскі летні час\x1cЧас Улан-Батара1Ста" + + "ндартны час Улан-Батара'Летні час Улан-Батара\x19Маскоўскі час.Маскоўск" + + "і стандартны час$Маскоўскі летні час\x14Час М’янмы\x11Час Науру\x19Непа" + + "льскі час$Час Новай Каледоніі9Стандартны час Новай Каледоніі/Летні час " + + "Новай Каледоніі\x22Час Новай Зеландыі7Стандартны час Новай Зеландыі-Лет" + + "ні час Новай Зеландыі%Ньюфаўндлендскі час:Ньюфаўндлендскі стандартны ча" + + "с0Ньюфаўндлендскі летні час\x0fЧас Ніуэ&Час вострава Норфалк+Час Фернан" + + "ду-ды-Наронья@Стандартны час Фернанду-ды-Наронья6Летні час Фернанду-ды-" + + "Наронья\x1fНовасібірскі час4Новасібірскі стандартны час*Новасібірскі ле" + + "тні час\x11Омскі час&Омскі стандартны час\x1cОмскі летні час\x1dПакіста" + + "нскі час2Пакістанскі стандартны час(Пакістанскі летні час\x11Час Палау)" + + "Час Папуа-Новай Гвінеі\x17Час Парагвая,Стандартны час Парагвая\x22Летні" + + " час Парагвая\x19Перуанскі час.Перуанскі стандартны час$Перуанскі летні " + + "час\x1bФіліпінскі час0Філіпінскі стандартны час&Філіпінскі летні час$Ча" + + "с астравоў Фенікс)Час Сен-П’ер і Мікелон>Стандартны час Сен-П’ер і Міке" + + "лонIСтандартны летні час Сен-П’ер і Мікелон&Час вострава Піткэрн$Час во" + + "страва Понпеі\x1bПхеньянскі час\x17Час Рэюньёна\x22Час станцыі Ратэра" + + "\x1bСахалінскі час0Сахалінскі стандартны час&Сахалінскі летні час\x11Час" + + " Самоа&Стандартны час Самоа\x1cЛетні час Самоа.Час Сейшэльскіх астравоў" + + "\x1dСінгапурскі час.Час Саламонавых астравоў*Час Паўднёвай Джорджыі\x17Ч" + + "ас Сурынама\x1eЧас станцыі Сёва\x11Час Таіці\x13Час Тайбэя(Стандартны ч" + + "ас Тайбэя\x1eЛетні час Тайбэя\x1fЧас Таджыкістана\x15Час Такелау\x11Час" + + " Тонга&Стандартны час Тонга\x1cЛетні час Тонга\x0fЧас Чуук!Час Туркменіс" + + "тана6Стандартны час Туркменістана,Летні час Туркменістана\x13Час Тувалу" + + "\x1bУругвайскі час0Уругвайскі стандартны час&Уругвайскі летні час\x1dЧас" + + " Узбекістана2Стандартны час Узбекістана(Летні час Узбекістана\x15Час Ван" + + "уату*Стандартны час Вануату Летні час Вануату\x1fВенесуэльскі час#Уладз" + + "івастоцкі час8Уладзівастоцкі стандартны час.Уладзівастоцкі летні час" + + "\x1fВалгаградскі час4Валгаградскі стандартны час*Валгаградскі летні час " + + "Час станцыі Усход Час вострава Уэйк2Час астравоў Уоліс і Футуна\x13Якуц" + + "кі час(Якуцкі стандартны час\x1eЯкуцкі летні час%Екацярынбургскі час:Ек" + + "ацярынбургскі стандартны час0Екацярынбургскі летні час\x04вт\x04чт\x06ф" + + "еб\x06апр\x06мај\x06јун\x06јул\x06авг\x06сеп\x06окт\x06нов\x06дец\x06GM" + + "T{0}\x03GMT\x04pón\x04wał\x03srj\x03stw\x04pět\x03sob\x06GMT{0}\x03GMT" + + "\x06UTC{0}\x03UTC\x1bග්\u200dරිමවේ{0}\x18ග්\u200dරිමවේ\x06GMT{0}\x03GMT" + + "\x06мар\x06апр\x06мај\x06авг\x06окт\x06мај\x06јун\x06јул\x07тек.\x07хед." + + "\x07тах.\x07тер.\x09єкат.\x07мег.\x09міяз.\x07ген.\x07сен.\x07хам.\x07не" + + "х.\x07паг.\x04пн\x04вт\x04ср\x04чт\x04пт\x04сб" + +var bucket9 string = "" + // Size: 21784 bytes + "\x0aPa Mulungu\x09Palichimo\x0bPalichibuli\x0bPalichitatu\x09Palichine" + + "\x0bPalichisano\x0cPachibelushi\x08uluchelo\x07akasuba\x0bBefore Yesu" + + "\x0aAfter Yesu\x02BC\x02AD\x06Inkulo\x06Umwaka\x07Umweshi\x08Umulungu" + + "\x08Ubushiku\x07Akasuba\x04Insa\x06Mineti\x07Sekondi\x03Hut\x03Vil\x03Da" + + "t\x03Tai\x03Han\x03Sit\x03Sab\x03Nan\x03Tis\x03Kum\x03Kmj\x03Kmb\x14pa m" + + "wedzi gwa hutala\x14pa mwedzi gwa wuvili\x14pa mwedzi gwa wudatu\x13pa m" + + "wedzi gwa wutai\x14pa mwedzi gwa wuhanu\x12pa mwedzi gwa sita\x12pa mwed" + + "zi gwa saba\x12pa mwedzi gwa nane\x12pa mwedzi gwa tisa\x12pa mwedzi gwa" + + " kumi\x1apa mwedzi gwa kumi na moja\x1bpa mwedzi gwa kumi na mbili\x03Mu" + + "l\x03Hiv\x03Hid\x03Hit\x03Hih\x03Lem\x0apa mulungu\x0epa shahuviluha\x09" + + "pa hivili\x09pa hidatu\x09pa hitayi\x09pa hihanu\x0fpa shahulembela\x02L" + + "1\x02L2\x02L3\x02L4\x06Lobo 1\x06Lobo 2\x06Lobo 3\x06Lobo 4\x07pamilau" + + "\x07pamunyi\x0eKabla ya Mtwaa\x0eBaada ya Mtwaa\x07Amajira\x05Mwaha\x06M" + + "wedzi\x0eMlungu gumamfu\x04Sihu\x05Igolo\x0bNeng’u ni\x06Hilawu\x0cSihud" + + "za kasi\x08Lwamelau\x03Saa\x07Sekunde\x0eAmajira ga saa\x16EEEE, d MMMM " + + "y 'г'. G\x10d MMMM y 'г'. G\x0ed.MM.y 'г'. G\x09d.MM.yy G\x06яну\x06фев" + + "\x08март\x06апр\x06май\x06юни\x06юли\x06авг\x06сеп\x06окт\x06ное\x06дек" + + "\x02я\x02ф\x02м\x02а\x02ю\x02с\x02о\x02н\x02д\x0cянуари\x10февруари\x0aа" + + "прил\x0cавгуст\x12септември\x10октомври\x0eноември\x10декември\x02п\x02" + + "в\x02ч\x0cнеделя\x14понеделник\x0eвторник\x0aсряда\x12четвъртък\x0aпетъ" + + "к\x0cсъбота\x0c1. трим.\x0c2. трим.\x0c3. трим.\x0c4. трим.\x171. триме" + + "сечие\x172. тримесечие\x173. тримесечие\x174. тримесечие\x0eполунощ\x10" + + "сутринта\x0dна обед\x10следобед\x0eвечерта\x13през нощта\x0aпр.об.\x0aс" + + "л.об.\x0dна обяд\x17преди Христа\x1eпреди новата ера\x15след Христа\x1c" + + "след новата ера\x0aпр.Хр.\x0bпр.н.е.\x0aсл.Хр.\x0bсл.н.е.\x0cd.MM.y 'г'" + + ".\x0dd.MM.yy 'г'.\x0aтишри\x0cхешван\x0cкислев\x0aтебет\x0aшебат\x0aадар" + + " I\x08адар\x0bадар II\x0aнисан\x06иар\x0aсиван\x0aтамуз\x04ав\x08елул" + + "\x0cчайтра\x10вайсакха\x10джаинтха\x0cасадха\x0eсравана\x0aбхада\x0cазви" + + "на\x0eкартика\x14аграхайана\x0aпауза\x0aмагха\x10пхалгуна\x0eмухарам" + + "\x0aсафар\x0aраби-1\x0aраби-2\x10джумада-1\x10джумада-2\x0cраджаб\x0aшаб" + + "ан\x0eрамазан\x0aШавал\x13Дхул-Каада\x13Дхул-хиджа\x06ера\x0cгодина\x1d" + + "миналата година\x15тази година!следващата година\x19след {0} година\x19" + + "след {0} години\x1bпреди {0} година\x1bпреди {0} години\x0bмин. г.\x07т" + + ". г.\x0fследв. г.\x10след {0} г.\x12преди {0} г.\x09сл. г.\x0dсл. {0} г." + + "\x0dпр. {0} г.\x14тримесечие'предходно тримесечие\x1dтова тримесечие%сле" + + "дващо тримесечие!след {0} тримесечие!след {0} тримесечия#преди {0} трим" + + "есечие#преди {0} тримесечия\x09трим.\x11мин. трим.\x12това трим.\x15сле" + + "дв. трим.\x13сл. {0} трим.\x13пр. {0} трим.\x0aмесец\x1dпредходен месец" + + "\x13този месец\x19следващ месец\x17след {0} месец\x19след {0} месеца\x19" + + "преди {0} месец\x1bпреди {0} месеца\x0fмин. мес.\x10този мес.\x13следв." + + " мес.\x10след {0} м.\x12преди {0} м.\x0bмин. м.\x07т. м.\x09сл. м.\x0dсл" + + ". {0} м.\x0dпр. {0} м.\x0eседмица%предходната седмица\x17тази седмица#сл" + + "едващата седмица\x1bслед {0} седмица\x1bслед {0} седмици\x1dпреди {0} с" + + "едмица\x1dпреди {0} седмици\x1bседмицата от {0}\x09седм.\x1fминалата се" + + "дмица\x12тази седм.\x15следв. седм.\x16след {0} седм.\x18преди {0} седм" + + ".\x11мин. седм.\x0fсл. седм.\x13сл. {0} седм.\x13пр. {0} седм.\x06ден" + + "\x0fонзи ден\x0aвчера\x08днес\x08утре\x12вдругиден\x13след {0} ден\x13сл" + + "ед {0} дни\x15преди {0} ден\x15преди {0} дни\x0cсл. {0} д\x0cпр. {0} д" + + "\x1eден от седмицата#предходната неделя\x15тази неделя!следващата неделя" + + "\x19след {0} неделя\x19след {0} недели\x1bпреди {0} неделя\x1bпреди {0} " + + "недели\x1bпредходната нд\x0dтази нд\x19следващата нд\x10предх. нд\x10сл" + + "едв. нд+предходният понеделник\x1dтози понеделник)следващият понеделник" + + "!след {0} понеделник#след {0} понеделника#преди {0} понеделник%преди {0}" + + " понеделника\x1bпредходният пн\x0dтози пн\x19следващият пн\x10предх. пн" + + "\x10следв. пн%предходният вторник\x17този вторник#следващият вторник\x1b" + + "след {0} вторник\x1dслед {0} вторника\x1dпреди {0} вторник\x1fпреди {0}" + + " вторника\x1bпредходният вт\x0dтози вт\x19следващият вт\x10предх. вт\x10" + + "следв. вт!предходната сряда\x13тази сряда\x1fследващата сряда\x17след {" + + "0} сряда\x17след {0} среди\x19преди {0} сряда\x19преди {0} среди\x1bпред" + + "ходната ср\x0dтази ср\x19следващата ср\x10предх. ср\x10следв. ср)предхо" + + "дният четвъртък\x1bтози четвъртък'следващият четвъртък\x1fслед {0} четв" + + "ъртък!след {0} четвъртъка!преди {0} четвъртък#преди {0} четвъртъка\x0dт" + + "ози чт\x19следващият чт\x10предх. чт\x10следв. чт!предходният петък\x13" + + "този петък\x1fследващият петък\x17след {0} петък\x19след {0} петъка\x19" + + "преди {0} петък\x1bпреди {0} петъка\x0dтози пт\x19следващият пт\x10пред" + + "х. пт\x10следв. пт#предходната събота\x15тази събота!следващата събота" + + "\x19след {0} събота\x19след {0} съботи\x1bпреди {0} събота\x1bпреди {0} " + + "съботи\x1bпредходната сб\x0dтази сб\x19следващата сб\x10предх. сб\x10сл" + + "едв. сб\x15пр.об./сл.об.\x06час\x12в този час\x13след {0} час\x15след {" + + "0} часа\x15преди {0} час\x17преди {0} часа\x0fслед {0} ч\x11преди {0} ч" + + "\x0cсл. {0} ч\x0cпр. {0} ч\x0cминута\x18в тази минута\x19след {0} минута" + + "\x19след {0} минути\x1bпреди {0} минута\x1bпреди {0} минути\x06мин\x13сл" + + "ед {0} мин\x15преди {0} мин\x10сл. {0} мин\x10пр. {0} мин\x08сега\x1bсл" + + "ед {0} секунда\x1bслед {0} секунди\x1dпреди {0} секунда\x1dпреди {0} се" + + "кунди\x13след {0} сек\x15преди {0} сек\x10сл. {0} сек\x10пр. {0} сек" + + "\x15часова зона:Координирано универсално време5Британско лятно часово вр" + + "еме2Ирландско стандартно време%Афганистанско време1Централноафриканско " + + "време-Източноафриканско време'Южноафриканско време-Западноафриканско вр" + + "емеBЗападноафриканско стандартно времеEЗападноафриканско лятно часово в" + + "реме\x0cАляска0Аляска – стандартно време3Аляска – лятно часово време" + + "\x1dАмазонско време2Амазонско стандартно време5Амазонско лятно часово вр" + + "емеBСеверноамериканско централно времеWСеверноамериканско централно ста" + + "ндартно времеZСеверноамериканско централно лятно часово време>Северноам" + + "ериканско източно времеSСеверноамериканско източно стандартно времеVСев" + + "ерноамериканско източно лятно часово времеBСеверноамериканско планинско" + + " времеWСеверноамериканско планинско стандартно времеZСеверноамериканско " + + "планинско лятно часово времеHСеверноамериканско тихоокеанско време]Севе" + + "рноамериканско тихоокеанско стандартно време`Северноамериканско тихооке" + + "анско лятно часово време\x17Анадир време0Анадир – стандартно време3Анад" + + "ир – лятно часово време\x08Апия,Апия – стандартно време/Апия – лятно ча" + + "сово време\x19Арабско време.Арабско стандартно време1Арабско лятно часо" + + "во време!Аржентинско време6Аржентинско стандартно време9Аржентинско лят" + + "но часово време/Западноаржентинско времеDЗападноаржентинско стандартно " + + "времеGЗападноаржентинско лятно часово време\x1bАрменско време0Арменско " + + "стандартно време3Арменско лятно часово времеHСеверноамериканско атланти" + + "ческо време]Северноамериканско атлантическо стандартно време`Северноаме" + + "риканско атлантическо лятно часово време4Австралия – централно времеIАв" + + "стралия – централно стандартно времеLАвстралия – централно лятно часово" + + " времеCАвстралия – западно централно времеXАвстралия – западно централно" + + " стандартно време[Австралия – западно централно лятно часово време0Австр" + + "алия – източно времеEАвстралия – източно стандартно времеHАвстралия – и" + + "зточно лятно часово време0Австралия – западно времеEАвстралия – западно" + + " стандартно времеHАвстралия – западно лятно часово време'Азербайджанско " + + "време<Азербайджанско стандартно време?Азербайджанско лятно часово време" + + "\x1dАзорски островиAАзорски острови – стандартно времеDАзорски острови –" + + " лятно часово време!Бангладешко време6Бангладешко стандартно време9Бангл" + + "адешко лятно часово време\x1bБутанско време\x1fБоливийско време\x1dБраз" + + "илско време2Бразилско стандартно време5Бразилско лятно часово време!Бру" + + "ней Даруссалам\x13Кабо Верде7Кабо Верде – стандартно време:Кабо Верде –" + + " лятно часово време0Чаморо – стандартно време\x0aЧатъм.Чатъм – стандартн" + + "о време1Чатъм – лятно часово време\x1bЧилийско време0Чилийско стандартн" + + "о време3Чилийско лятно часово време\x1bКитайско време0Китайско стандарт" + + "но време3Китайско лятно часово време#Чойбалсанско време8Чойбалсанско ст" + + "андартно време;Чойбалсанско лятно часово време\x1fОстров Рождество\x1fК" + + "окосови острови!Колумбийско време6Колумбийско стандартно време9Колумбий" + + "ско лятно часово време\x15Острови Кук9Острови Кук – стандартно време<Ос" + + "трови Кук – лятно часово време\x1bКубинско време0Кубинско стандартно вр" + + "еме3Кубинско лятно часово време\x0cДейвис\x17Дюмон Дюрвил)Източнотиморс" + + "ко време#Великденски островGВеликденски остров – стандартно времеJВелик" + + "денски остров – лятно часово време\x1fЕквадорско време1Централноевропей" + + "ско времеFЦентралноевропейско стандартно времеIЦентралноевропейско лятн" + + "о часово време-Източноевропейско времеBИзточноевропейско стандартно вре" + + "меEИзточноевропейско лятно часово време<Далечно източноевропейско време" + + "-Западноевропейско времеBЗападноевропейско стандартно време8Западноевроп" + + "ейско лятно време%Фолклендски островиIФолклендски острови – стандартно " + + "времеLФолклендски острови – лятно часово време\x0aФиджи.Фиджи – стандар" + + "тно време1Фиджи – лятно часово време\x1bФренска ГвианаHФренски южни и а" + + "нтарктически територии!Галапагоско време\x0cГамбие\x1dГрузинско време2Г" + + "рузинско стандартно време5Грузинско лятно часово време\x1dОстрови Гилбъ" + + "рт*Средно гринуичко време/Източногренландско времеDИзточногренландско с" + + "тандартно времеGИзточногренландско лятно часово време/Западногренландск" + + "о времеDЗападногренландско стандартно времеGЗападногренландско лятно ча" + + "сово време\x1dПерсийски залив\x0aГаяна,Хавайско-алеутско времеAХавайско" + + "-алеутско стандартно времеDХавайско-алеутско лятно часово време\x1fХонко" + + "нгско време4Хонконгско стандартно време7Хонконгско лятно часово време" + + "\x19Ховдско време.Ховдско стандартно време1Ховдско лятно часово време0Ин" + + "дийско стандартно време\x1bИндийски океан#Индокитайско време5Централнои" + + "ндонезийско време1Източноиндонезийско време1Западноиндонезийско време" + + "\x19Иранско време.Иранско стандартно време1Иранско лятно часово време" + + "\x1bИркутско време0Иркутско стандартно време3Иркутско лятно часово време" + + "\x1dИзраелско време2Израелско стандартно време5Израелско лятно часово вр" + + "еме\x19Японско време.Японско стандартно време1Японско лятно часово врем" + + "е8Петропавловск-Камчатски времеMПетропавловск-Камчатски стандартно врем" + + "еTПетропавловск-Камчатски – лятно часово време1Източноказахстанско врем" + + "е1Западноказахстанско време\x1bКорейско време0Корейско стандартно време" + + "3Корейско лятно часово време\x0cКошрай!Красноярско време6Красноярско ста" + + "ндартно време9Красноярско лятно часово време%Киргизстанско време'Еквато" + + "риални острови\x0fЛорд Хау3Лорд Хау – стандартно време6Лорд Хау – лятно" + + " часово време\x10Маккуори\x1fМагаданско време4Магаданско стандартно врем" + + "е7Магаданско лятно часово време!Малайзийско време!Малдивски острови\x1f" + + "Маркизки острови!Маршалови острови\x10Мавриций4Мавриций – стандартно вр" + + "еме7Мавриций – лятно часово време\x0cМоусън8Мексико – северозападно вре" + + "меMМексико – северозападно стандартно времеPМексико – северозападно лят" + + "но часово време:Мексиканско тихоокеанско времеOМексиканско тихоокеанско" + + " стандартно времеRМексиканско тихоокеанско лятно часово време#Уланбаторс" + + "ко време8Уланбаторско стандартно време;Уланбаторско лятно часово време" + + "\x1dМосковско време2Московско стандартно време5Московско лятно часово вр" + + "еме\x1fМианмарско време\x0aНауру\x1bНепалско време'Новокаледонско време" + + "<Новокаледонско стандартно време?Новокаледонско лятно часово време%Новоз" + + "еландско време:Новозеландско стандартно време=Новозеландско лятно часов" + + "о време'Нюфаундлендско време<Нюфаундлендско стандартно време?Нюфаундлен" + + "дско лятно часово време\x08Ниуе\x0eНорфолк\x22Фернандо де НороняFФернан" + + "до де Нороня – стандартно времеIФернандо де Нороня – лятно часово време" + + "#Новосибирско време8Новосибирско стандартно време;Новосибирско лятно час" + + "ово време\x15Омско време*Омско стандартно време-Омско лятно часово врем" + + "е!Пакистанско време6Пакистанско стандартно време9Пакистанско лятно часо" + + "во време\x0aПалау Папуа Нова Гвинея!Парагвайско време6Парагвайско станд" + + "артно време9Парагвайско лятно часово време\x1dПеруанско време2Перуанско" + + " стандартно време5Перуанско лятно часово време\x1fФилипинско време4Филип" + + "инско стандартно време7Филипинско лятно часово време\x1bОстрови Феникс!" + + "Сен Пиер и МикелонEСен Пиер и Микелон – стандартно времеHСен Пиер и Мик" + + "елон – лятно часово време\x0eПиткерн\x0cПонапе\x1eВремето в Пхенян\x0eР" + + "еюнион\x0cРотера\x1fСахалинско време4Сахалинско стандартно време7Сахали" + + "нско лятно часово време\x17Самара време0Самара – стандартно време3Самар" + + "а – лятно часово време\x1dСамоанско време2Самоанско стандартно време5Са" + + "моанско лятно часово време!Сейшелски острови!Сингапурско време#Соломоно" + + "ви острови\x19Южна Джорджия\x1fСуринамско време\x08Шова\x1dТаитянско вр" + + "еме\x0aТайпе.Тайпе – стандартно време1Тайпе – лятно часово време'Таджик" + + "истанско време\x0eТокелау\x0aТонга.Тонга – стандартно време1Тонга – лят" + + "но часово време\x08Чуюк)Туркменистанско време>Туркменистанско стандартн" + + "о времеAТуркменистанско лятно часово време\x0cТувалу\x1fУругвайско врем" + + "е4Уругвайско стандартно време7Уругвайско лятно часово време%Узбекистанс" + + "ко време:Узбекистанско стандартно време=Узбекистанско лятно часово врем" + + "е\x0eВануату2Вануату – стандартно време5Вануату – лятно часово време!Ве" + + "нецуелско време'Владивостокско време<Владивостокско стандартно време?Вл" + + "адивостокско лятно часово време#Волгоградско време8Волгоградско стандар" + + "тно време;Волгоградско лятно часово време\x0cВосток\x15Остров Уейк\x1aУ" + + "олис и Футуна\x19Якутско време2Якутскско стандартно време5Якутскско лят" + + "но часово време)Екатеринбургско време>Екатеринбургско стандартно времеA" + + "Екатеринбургско лятно часово време\x02AD\x02AD\x04Ngat\x03Taa\x03Iwo" + + "\x03Mam\x03Paa\x03Nge\x03Roo\x03Bur\x03Epe\x03Kpt\x03Kpa\x02AD\x06н.е." + + "\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03Iju\x03Jmo\x03Ati\x03Ata\x03Ala\x03Alm" + + "\x03Alz\x03Asi\x02AD\x10джайстха\x0eшравана\x0cбхадра\x0cасвіна\x0eкарті" + + "ка\x12аграхаяна\x0aпауса\x10фальгуна" + +var bucket10 string = "" + // Size: 24060 bytes + "\x03zan\x03feb\x03mar\x03awi\x03mɛ\x03zuw\x03zul\x03uti\x04sɛt\x04ɔku" + + "\x03now\x03des\x07zanwuye\x08feburuye\x06marisi\x07awirili\x06zuwɛn\x06z" + + "uluye\x0asɛtanburu\x0bɔkutɔburu\x09nowanburu\x09desanburu\x01Z\x01F\x01M" + + "\x01A\x01U\x01S\x02Ɔ\x01N\x01D\x03kar\x04ntɛ\x03tar\x03ara\x03ala\x03jum" + + "\x03sib\x04kari\x07ntɛnɛ\x06tarata\x05araba\x07alamisa\x04juma\x06sibiri" + + "\x03KS1\x03KS2\x03KS3\x03KS4\x10kalo saba fɔlɔ\x11kalo saba filanan\x11k" + + "alo saba sabanan\x12kalo saba naaninan\x11jezu krisiti ɲɛ\x13jezu krisit" + + "i minkɛ\x0aJ.-C. ɲɛ\x08ni J.-C.\x04tile\x03san\x04kalo\x09dɔgɔkun\x03don" + + "\x04kunu\x02bi\x04sini\x15sɔgɔma/tile/wula/su\x06lɛrɛ\x06miniti\x07sekon" + + "di\x0esigikun tilena\x06জা\x06ফে\x06মা\x03এ\x06মে\x09জুন\x06জু\x03আ\x06স" + + "ে\x03অ\x03ন\x06ডি\x1bজানুয়ারী!ফেব্রুয়ারী\x0fমার্চ\x12এপ্রিল\x0fজুলাই" + + "\x0fআগস্ট\x1eসেপ্টেম্বর\x15অক্টোবর\x15নভেম্বর\x18ডিসেম্বর\x09রবি\x09সোম" + + "\x0fমঙ্গল\x09বুধ\x18বৃহস্পতি\x0fশুক্র\x09শনি\x03র\x06সো\x03ম\x06বু\x06বৃ" + + "\x06শু\x03শ\x06রঃ\x09সোঃ\x06মঃ\x09বুঃ\x09বৃঃ\x09শুঃ\x09শোঃ\x12রবিবার\x12" + + "সোমবার\x18মঙ্গলবার\x12বুধবার!বৃহস্পতিবার\x18শুক্রবার\x12শনিবার!বৃহষ্পত" + + "িবার\x03১\x03২\x03৩\x03৪\x1bত্রৈমাসিক4দ্বিতীয় ত্রৈমাসিক.তৃতীয় ত্রৈমা" + + "সিক.চতুর্থ ত্রৈমাসিক\x09ভোর\x0cসকাল\x0fদুপুর\x0fবিকাল\x15সন্ধ্যা\x12রা" + + "ত্রি$খ্রিস্টপূর্ব0খ্রিষ্টপূর্বাব্দ\x1bখৃষ্টাব্দ!খ্রিষ্টাব্দ\x0fচৈত্র" + + "\x0fবৈশাখ\x15জৈষ্ঠ্য\x0fআষাঢ়\x12শ্রাবণ\x0fভাদ্র\x12আশ্বিন\x15কার্তিক" + + "\x1bঅগ্রহায়ণ\x09পৌষ\x09মাঘ\x15ফাল্গুন\x03৫\x03৬\x03৭\x03৮\x03৯\x06১০" + + "\x06১১\x06১২\x09সাল\x0fমহররম\x09সফর\x22রবিউল আউয়াল\x1cরবিউস সানি(জমাদিউ" + + "ল আউয়াল\x22জমাদিউস সানি\x09রজব\x12শা‘বান\x0fরমজান\x15শাওয়াল\x15জ্বিল" + + "কদ\x1bজ্বিলহজ্জ\x09বছর\x10গত বছর\x10এই বছর\x16পরের বছর\x10{0} বছরে {0}" + + " বছর পূর্বে\x22গত ত্রৈমাসিক\x22এই ত্রৈমাসিক(পরের ত্রৈমাসিক\x22{0} ত্রৈমা" + + "সিকে){0} ত্রৈমাসিক আগে\x09মাস\x10গত মাস\x10এই মাস\x16পরের মাস\x10{0} ম" + + "াসে\x17{0} মাস আগে\x19গত সপ্তাহ\x19এই সপ্তাহ\x1fপরের সপ্তাহ\x19{0} সপ্" + + "তাহে {0} সপ্তাহ আগে\x16{0} সপ্তাহ {0} এর সপ্তাহে\x13গত পরশু\x0fগতকাল" + + "\x06আজ\x18আগামীকাল\x1cআগামী পরশু#{0} দিনের মধ্যে\x17{0} দিন আগে\x22সপ্তা" + + "হের দিন\x19গত রবিবার\x19এই রবিবার\x1fপরের রবিবার\x1f{0} রবিবারেতে {0} " + + "রবিবার আগে\x19গত সোমবার\x19এই সোমবার\x1fপরের সোমবার\x1f{0} সোমবারেতে {" + + "0} সোমবার আগে\x1fগত মঙ্গলবার\x1fএই মঙ্গলবার%পরের মঙ্গলবার\x1f{0} মঙ্গলবা" + + "রে&{0} মঙ্গলবার আগে\x19গত বুধবার\x19এই বুধবার\x1fপরের বুধবার\x19{0} বু" + + "ধবারে {0} বুধবার আগে(গত বৃহস্পতিবার(এই বৃহস্পতিবার.পরের বৃহস্পতিবার({0" + + "} বৃহস্পতিবারে/{0} বৃহস্পতিবার আগে\x1fগত শুক্রবার\x1fএই শুক্রবার%পরের শু" + + "ক্রবার\x1f{0} শুক্রবারে&{0} শুক্রবার আগে\x19গত শনিবার\x19এই শনিবার\x1f" + + "পরের শনিবার\x19{0} শনিবারে {0} শনিবার আগে\x0fঘন্টা\x1cএই ঘণ্টায়\x19{0" + + "} ঘন্টায়\x1d{0} ঘন্টা আগে\x16এই মিনিট\x16{0} মিনিটে\x1d{0} মিনিট আগে&{0" + + "} মিনিট পূর্বে\x15সেকেন্ড\x09এখন\x1c{0} সেকেন্ডে,{0} সেকেন্ড পূর্বে#{0} " + + "সেকেন্ড আগে\x1cসময় অঞ্চল\x10{0} সময়&{0} দিবালোক সময়\x1d{0} মানক সময" + + "়Mস্থানাংকিত আন্তর্জাতিক সময়Gব্রিটিশ গ্রীষ্মকালীন সময়)আইরিশ মানক সময" + + "়\x16একর সময়#একর মানক সময়5একর গ্রীষ্মকাল সময়.আফগানিস্তান সময়/মধ্য " + + "আফ্রিকা সময়2পূর্ব আফ্রিকা সময়Bদক্ষিণ আফ্রিকা মানক সময়5পশ্চিম আফ্রিক" + + "া সময়Bপশ্চিম আফ্রিকা মানক সময়Zপশ্চিম আফ্রিকা গ্রীষ্মকালীন সময়\x22আল" + + "াস্কা সময়/আলাস্কা মানক সময়8আলাস্কা দিবালোক সময়\x22আল্মাটি সময়/আল্ম" + + "াটি মানক সময়Aআল্মাটি গ্রীষ্মকাল সময়%অ্যামাজন সময়)আমাজন মানক সময়Jঅ্" + + "যামাজন গ্রীষ্মকালীন সময়+কেন্দ্রীয় সময়8কেন্দ্রীয় মানক সময়Aকেন্দ্রী" + + "য় দিবালোক সময়4পূর্বাঞ্চলীয় সময়Dপূর্বাঞ্চলের প্রমাণ সময়Gপূর্বাঞ্চল" + + "ের দিবালোক সময়;পার্বত্য অঞ্চলের সময়Nপার্বত্য অঞ্চলের প্রমাণ সময়Kপার" + + "্বত্য অঞ্চলের দিনের সময়Zপ্রশান্ত মহাসাগরীয় অঞ্চলের সময়gপ্রশান্ত মহা" + + "সাগরীয় অঞ্চলের মানক সময়jপ্রশান্ত মহাসাগরীয় অঞ্চলের দিনের সময়%অনদ্য" + + "্র্ সময়2অনদ্য্র্ মানক সময়Jঅনদ্য্র্ গ্রীষ্মকালীন সময়\x1fঅপিয়া সময়," + + "অপিয়া মানক সময়/অপিয়া দিনের সময়\x1cআকটাও সময়)আকটাও মানক সময়;আকটাও" + + " গ্রীষ্মকাল সময়\x1cআকটোব সময়)আকটোব মানক সময়;আকটোব গ্রীষ্মকাল সময়\x19" + + "আরবি সময়&আরবি মানক সময়/আরবি দিবালোক সময়+আর্জেনটিনা সময়8আর্জেনটিনা " + + "মানক সময়Pআর্জেনটিনা গ্রীষ্মকালীন সময়Dপশ্চিমি আর্জেন্টিনা সময়Wপশ্চিম" + + "ি আর্জেনটিনার প্রমাণ সময়`পশ্চিমি আর্জেনটিনা গৃষ্মকালীন সময়+আর্মেনিয়" + + "া সময়8আর্মেনিয়া মানক সময়Pআর্মেনিয়া গ্রীষ্মকালীন সময়.অতলান্তিকের স" + + "ময়5অতলান্তিক মানক সময়>অতলান্তিক দিবালোক সময়Mকেন্দ্রীয় অস্ট্রেলীয় " + + "সময়Zঅস্ট্রেলীয় কেন্দ্রীয় মানক সময়cঅস্ট্রেলীয় কেন্দ্রীয় দিবালোক স" + + "ময়cঅস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি সময়pঅস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি" + + " মানক সময়yঅস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি দিবালোক সময়>পূর্ব অস্ট্রেলীয়" + + " সময়Kঅস্ট্রেলীয় পূর্ব মানক সময়Tঅস্ট্রেলীয় পূর্ব দিবালোক সময়Dপশ্চিমি" + + " অস্ট্রেলীয় সময়Qঅস্ট্রেলীয় পশ্চিমি মানক সময়Zঅস্ট্রেলীয় পশ্চিমি দিবা" + + "লোক সময়+আজারবাইজান সময়8আজারবাইজান মানক সময়Pআজারবাইজান গ্রীষ্মকালীন " + + "সময়\x1fএজোরেস সময়,এজোরেস মানক সময়Dএজোরেস গ্রীষ্মকালীন সময়%বাংলাদেশ" + + " সময়2বাংলাদেশ মানক সময়Jবাংলাদেশ গ্রীষ্মকালীন সময়\x1cভুটান সময়(বোলিভি" + + "য়া সময়.ব্রাসিলিয়া সময়;ব্রাসিলিয়া মানক সময়Sব্রাসিলিয়া গ্রীষ্মকাল" + + "ীন সময়Aব্রুনেই দারুসসালাম সময়&কেপ ভার্দ সময়3কেপ ভার্দ মানক সময়Kকেপ" + + " ভার্দ গ্রীষ্মকালীন সময়,চামেরো মানক সময়\x22চ্যাথাম সময়/চ্যাথাম মানক স" + + "ময়8চ্যাথাম দিবালোক সময়\x19চিলি সময়&চিলি মানক সময়8চিলি গ্রীষ্মকাল স" + + "ময়\x16চীন সময়#চীন মানক সময়,চীন দিবালোক সময়%চয়বালসন সময়2চয়বালসন " + + "মানক সময়Jচয়বালসন গ্রীষ্মকালীন সময়5ক্রিসমাস দ্বীপ সময়;কোকোস দ্বীপপু" + + "ঞ্জ সময়.কোলোম্বিয়া সময়;কোলোম্বিয়া মানক সময়Sকোলোম্বিয়া গ্রীষ্মকাল" + + "ীন সময়5কুক দ্বীপপুঞ্জ সময়Bকুক দ্বীপপুঞ্জ মানক সময়mকুক দ্বীপপুঞ্জ অর" + + "্ধেক গ্রীষ্মকালীন সময়\x1fকিউবার সময়)কিউবা মানক সময়2কিউবা দিবালোক সম" + + "য়\x1cডেভিস সময়>ডুমন্ট-দ্য’উরভিলে সময়)পূর্ব টিমর সময়/ইস্টার দ্বীপ স" + + "ময়<ইস্টার দ্বীপ মানক সময়Tইস্টার দ্বীপ গ্রীষ্মকালীন সময়%ইকুয়েডর সময" + + "়/মধ্য ইউরোপের সময়<মধ্য ইউরোপের মানক সময়Tমধ্য ইউরোপের গ্রীষ্মকালীন স" + + "ময়2পূর্ব ইউরোপের সময়?পূর্ব ইউরোপের মানক সময়Wপূর্ব ইউরোপের গ্রীষ্মকা" + + "লীন সময়Nঅতিরিক্ত-পূর্ব ইউরোপীয় সময়5পশ্চিম ইউরোপের সময়Bপশ্চিম ইউরোপ" + + "ের মানক সময়Zপশ্চিম ইউরোপের গ্রীষ্মকালীন সময়Gফকল্যান্ড দ্বীপপুঞ্জ সময" + + "়Tফকল্যান্ড দ্বীপপুঞ্জ মানক সময়lফকল্যান্ড দ্বীপপুঞ্জ গ্রীষ্মকালীন সময" + + "়\x19ফিজি সময়&ফিজি মানক সময়>ফিজি গ্রীষ্মকালীন সময়2ফরাসি গায়ানা সময" + + "়[ফরাসি দক্ষিণ এবং আন্টার্কটিক সময়(গালাপাগোস সময়1গ্যাম্বিয়ার সময়%জ" + + "র্জিয়া সময়2জর্জিয়া মানক সময়Jজর্জিয়া গ্রীষ্মকালীন সময়Dগিলবার্ট দ্" + + "বীপপুঞ্জ সময়,গ্রীনিচ মিন টাইমAপূর্ব গ্রীনল্যান্ড সময়Nপূর্ব গ্রীনল্যা" + + "ন্ড মানক সময়fপূর্ব গ্রীনল্যান্ড গ্রীষ্মকালীন সময়Dপশ্চিম গ্রীনল্যান্ড" + + " সময়Qপশ্চিম গ্রীনল্যান্ড মানক সময়iপশ্চিম গ্রীনল্যান্ড গ্রীষ্মকালীন সময" + + "়)গুয়াম মান সময়5উপসাগরীয় মানক সময়\x22গুয়ানা সময়Jহাওয়াই অ্যালিউট" + + "িয়ান সময়?হাওয়াই-আলেউত মানক সময়Hহাওয়াই-আলেউত দিবালোক সময়\x1aহং কং" + + " সময়'হং কং মানক সময়?হং কং গ্রীষ্মকালীন সময়\x19হোভড সময়&হোভড মানক সময" + + "়>হোভড গ্রীষ্মকালীন সময়/ভারতীয় মানক সময়8ভারত মহাসাগরীয় সময়%ইন্দোচ" + + "ীন সময়Pকেন্দ্রীয় ইন্দোনেশিয়া সময়Aপূর্ব ইন্দোনেশিয়া সময়Gপশ্চিমী ই" + + "ন্দোনেশিয়া সময়\x19ইরান সময়&ইরান মানক সময়/ইরান দিবালোক সময়%ইরকুটস্" + + "ক সময়2ইরকুটস্ক মানক সময়Jইরকুটস্ক গ্রীষ্মকালীন সময়%ইজরায়েল সময়2ইজর" + + "ায়েল মানক সময়;ইজরায়েল দিবালোক সময়\x1cজাপান সময়)জাপান মানক সময়2জা" + + "পান দিবালোক সময়fপিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি সময়pপিত্রেপ্যাভলস্ক-" + + " ক্যামচ্যাটস্কি মান সময়\x85পিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি গৃষ্মকালীন স" + + "ময়Eপূর্ব কজাকস্তান মানক সময়Hপশ্চিম কজাকস্তান মানক সময়%কোরিয়ান সময়" + + "2কোরিয়ান মানক সময়;কোরিয়ান দিবালোক সময়\x1fকোসরেই সময়=ক্রাসনোয়ার্স্ক" + + "ি সময়Jক্রাসনোয়ার্স্কি মানক সময়bক্রাসনোয়ার্স্কি গ্রীষ্মকালীন সময়+ক" + + "িরগিস্তান সময়\x1cলঙ্কা সময়8লাইন দ্বীপপুঞ্জ সময়,লর্ড হাওয়ে সময়9লর্" + + "ড হাওয়ে মানক মসয়Bলর্ড হাওয়ে দিবালোক মসয়\x1cমাকাও সময়&মাকাও মান সম" + + "য়;মাকাও গ্রীষ্মকাল সময়8ম্যাককুরি দ্বীপ সময়(ম্যাগাডান সময়5ম্যাগাডান" + + " মানক সময়Mম্যাগাডান গ্রীষ্মকালীন সময়.মালয়েশিয়া সময়%মালদ্বীপ সময়(মা" + + "র্কেসাস সময়Aমার্শাল দ্বীপপুঞ্জ সময়\x1fমরিশাস সময়,মরিশাস মানক সময়Dম" + + "রিশাস গ্রীষ্মকালীন সময়\x16মসন সময়Jউত্তরপশ্চিম মেক্সিকোর সময়Wউত্তরপশ" + + "্চিম মেক্সিকোর মানক সময়Zউত্তরপশ্চিম মেক্সিকোর দিনের সময়`মেক্সিকান প্" + + "রশান্ত মহাসাগরীয় সময়jমেক্সিকান প্রশান্ত মহসাগরীয় মানক সময়vমেক্সিকা" + + "ন প্রশান্ত মহাসাগরীয় দিবালোক সময়)উলান বাতোর সময়6উলান বাতোর মানক সময" + + "়Nউলান বাতোর গ্রীষ্মকালীন সময়\x1cমস্কো সময়)মস্কো মানক সময়Aমস্কো গ্র" + + "ীষ্মকালীন সময়(মায়ানমার সময়\x1cনাউরু সময়\x1cনেপাল সময়>নিউ ক্যালেডো" + + "নিয়া সময়Kনিউ ক্যালেডোনিয়া মানক সময়cনিউ ক্যালেডোনিয়া গ্রীষ্মকালীন " + + "সময়1নিউজিল্যান্ড সময়>নিউজিল্যান্ড মানক সময়Gনিউজিল্যান্ড দিবালোক সময" + + "়=নিউফাউন্ডল্যান্ড সময়Jনিউফাউন্ডল্যান্ড মানক সময়Sনিউফাউন্ডল্যান্ড দি" + + "বালোক সময়\x19নিউই সময়;নরফোক দ্বীপপুঞ্জ সময়Hফার্নান্দো ডি নোরোনহা সম" + + "য়Uফার্নান্দো ডি নোরোনহা মানক সময়mফার্নান্দো ডি নোরোনহা গ্রীষ্মকালীন " + + "সময়Kউত্তর মেরিন দ্বীপপুঞ্জ সময়4নোভোসিবির্স্ক সময়Aনোভোসিবির্স্ক মানক" + + " সময়Yনোভোসিবির্স্ক গ্রীষ্মকালীন সময়\x1cওমস্ক সময়)ওমস্ক মানক সময়Aওমস্" + + "ক গ্রীষ্মকালীন সময়(পাকিস্তান সময়5পাকিস্তান মানক সময়Mপাকিস্তান গ্রীষ" + + "্মকালীন সময়\x1cপালাউ সময়9পাপুয়া নিউ গিনি সময়.প্যারাগুয়ে সময়;প্যা" + + "রাগুয়ে মানক সময়Sপ্যারাগুয়ে গ্রীষ্মকালীন সময়\x19পেরু সময়&পেরু মানক" + + " সময়>পেরু গ্রীষ্মকালীন সময়%ফিলিপাইন সময়2ফিলিপাইন মানক সময়Jফিলিপাইন গ" + + "্রীষ্মকালীন সময়Aফোনিক্স দ্বীপপুঞ্জ সময়Fসেন্ট পিয়ের ও মিকেলন সময়Sসে" + + "ন্ট পিয়ের ও মিকেলন মানক সময়\\সেন্ট পিয়ের ও মিকেলন দিবালোক সময়.পিটক" + + "েয়ার্ন সময়\x1fপোনাপে সময়+পিয়ংইয়াং সময়+কিজিলোর্ডা সময়5কিজিলোর্ডা" + + " মান সময়Jকিজিলোর্ডা গ্রীষ্মকাল সময়(রিইউনিয়ন সময়\x1cরথেরা সময়\x22সাখ" + + "ালিন সময়/সাখালিন মানক সময়Gসাখালিন গ্রীষ্মকালীন সময়\x1fসামারা সময়)স" + + "ামারা মান সময়>সামারা গৃষ্মকালীন সময়\x22সামোয়া সময়/সামোয়া মানক সময" + + "়Aসামোয়া গৃষ্মকালীন সময়\x1fসেশেলস সময়5সিঙ্গাপুর মানক সময়;সলোমন দ্ব" + + "ীপপুঞ্জ সময়8দক্ষিণ জর্জিয়া সময়\x22সুরিনাম সময়(সায়োওয়া সময়\x1fতা" + + "হিতি সময়\x1fতাইপেই সময়,তাইপেই মানক সময়5তাইপেই দিবালোক সময়.তাজাখাস্" + + "তান সময়\x22টোকেলাউ সময়\x1fটোঙ্গা সময়,টোঙ্গা মানক সময়Dটোঙ্গা গ্রীষ্" + + "মকালীন সময়\x16চুক সময়7তুর্কমেনিস্তান সময়Dতুর্কমেনিস্তান মানক সময়\\" + + "তুর্কমেনিস্তান গ্রীষ্মকালীন সময়\x1fটুভালু সময়%উরুগুয়ে সময়2উরুগুয়ে" + + " মানক সময়Jউরুগুয়ে গ্রীষ্মকালীন সময়.উজবেকিস্তান সময়;উজবেকিস্তান মানক " + + "সময়Sউজবেকিস্তান গ্রীষ্মকালীন সময়(ভানুয়াতু সময়5ভানুয়াতু মানক সময়M" + + "ভানুয়াতু গ্রীষ্মকালীন সময়.ভেনেজুয়েলা সময়4ব্লাদিবোস্তোক সময়Aব্লাদি" + + "বোস্তোক মানক সময়Yব্লাদিবোস্তোক গ্রীষ্মকালীন সময়(ভলগোগ্রাড সময়5ভলগোগ" + + "্রাড মানক সময়Mভলগোগ্রাড গ্রীষ্মকালীন সময়\x19ভসটক সময়,ওয়েক দ্বীপ সম" + + "য়?ওয়ালিস এবং ফুটুনা সময়(য়াকুতস্ক সময়5য়াকুতস্ক মানক সময়Mয়াকুতস্" + + "ক গ্রীষ্মকালীন সময়=ইয়েকাতেরিনবুর্গ সময়Jইয়েকাতেরিনবুর্গ মানক সময়bই" + + "য়েকাতেরিনবুর্গ গ্রীষ্মকালীন সময়\x03fev\x03mar\x03avr\x02me\x03zin" + + "\x03zil\x03out\x03sep\x03okt\x03nov\x03des\x06wɛlɛ\x04sina" + +var bucket11 string = "" + // Size: 10148 bytes + "\x03IST6G སྤྱི་ལོ་y MMMMའི་ཚེས་d#G y ལོའི་MMMཚེས་d\x0cཟླ་༡\x0cཟླ་༢\x0cཟླ" + + "་༣\x0cཟླ་༤\x0cཟླ་༥\x0cཟླ་༦\x0cཟླ་༧\x0cཟླ་༨\x0cཟླ་༩\x0fཟླ་༡༠\x0fཟླ་༡༡" + + "\x0fཟླ་༡༢\x1eཟླ་བ་དང་པོ!ཟླ་བ་གཉིས་པ!ཟླ་བ་གསུམ་པ\x1eཟླ་བ་བཞི་པ\x1bཟླ་བ་ལྔ" + + "་པ!ཟླ་བ་དྲུག་པ!ཟླ་བ་བདུན་པ$ཟླ་བ་བརྒྱད་པ\x1eཟླ་བ་དགུ་པ\x1eཟླ་བ་བཅུ་པ-ཟླ" + + "་བ་བཅུ་གཅིག་པ-ཟླ་བ་བཅུ་གཉིས་པ!ཟླ་བ་དང་པོ་$ཟླ་བ་གཉིས་པ་$ཟླ་བ་གསུམ་པ་!ཟླ" + + "་བ་བཞི་པ་\x1eཟླ་བ་ལྔ་པ་$ཟླ་བ་དྲུག་པ་$ཟླ་བ་བདུན་པ་'ཟླ་བ་བརྒྱད་པ་!ཟླ་བ་ད" + + "གུ་པ་!ཟླ་བ་བཅུ་པ་0ཟླ་བ་བཅུ་གཅིག་པ་0ཟླ་བ་བཅུ་གཉིས་པ་\x0fཉི་མ་\x0fཟླ་བ་" + + "\x18མིག་དམར་\x12ལྷག་པ་\x15ཕུར་བུ་\x12པ་སངས་\x15སྤེན་པ་\x06ཉི\x06ཟླ\x09མི" + + "ག\x09ལྷག\x09ཕུར\x09སངས\x0cསྤེན\x1bགཟའ་ཉི་མ་\x1bགཟའ་ཟླ་བ་$གཟའ་མིག་དམར་" + + "\x1eགཟའ་ལྷག་པ་!གཟའ་ཕུར་བུ་\x1eགཟའ་པ་སངས་!གཟའ་སྤེན་པ་-དུས་ཚིགས་དང་པོ།0དུས" + + "་ཚིགས་གཉིས་པ།0དུས་ཚིགས་གསུམ་པ།-དུས་ཚིགས་བཞི་པ།\x15སྔ་དྲོ་\x18ཕྱི་དྲོ་'" + + "སྤྱི་ལོ་སྔོན་\x18སྤྱི་ལོ་\x22y MMMMའི་ཚེས་d, EEEE4སྤྱི་ལོ་y MMMMའི་ཚེས" + + "་d!y ལོའི་MMMཚེས་d\x15ལོ་རིམ།\x09ལོ།\x1bགཟའ་འཁོར།\x0cཉིན།\x15ཁས་ཉིན་" + + "\x0fཁས་ས་\x15དེ་རིང་\x15སང་ཉིན་\x1bགནངས་ཉིན་'གཟའ་འཁོར་གཅིག.སྔ་དྲོ། ཕྱི་ད" + + "ྲོ།\x15ཆུ་ཚོད་\x12སྐར་མ།\x12སྐར་ཆ།\x18དུས་ཚོད།\x04Gen.\x07Cʼhwe.\x05Me" + + "ur.\x04Ebr.\x03Mae\x05Mezh.\x05Goue.\x04Eost\x05Gwen.\x04Here\x02Du\x04K" + + "zu.\x0201\x0202\x0203\x0204\x0205\x0206\x0207\x0208\x0209\x0210\x0211" + + "\x0212\x06Genver\x0aCʼhwevrer\x06Meurzh\x05Ebrel\x08Mezheven\x06Gouere" + + "\x08Gwengolo\x05Kerzu\x04Ker.\x03Sul\x03Lun\x04Meu.\x04Mer.\x04Yaou\x04G" + + "we.\x04Sad.\x02Su\x01L\x02Mz\x02Mc\x01Y\x01G\x02Sa\x09Mercʼher\x06Gwener" + + "\x06Sadorn\x0a1añ trim.\x082l trim.\x083e trim.\x084e trim.\x0e1añ trimi" + + "ziad\x0c2l trimiziad\x0c3e trimiziad\x0c4e trimiziad\x04A.M.\x04G.M.\x02" + + "gm\x12a-raok Jezuz-Krist\x11goude Jezuz-Krist\x0ba-raok J.K.\x0agoude J." + + "K.\x0c{1} 'da' {0}\x14a-raok Republik Sina\x0dRepublik Sina\x0ba-raok R." + + "S.\x04R.S.\x09amzervezh\x05bloaz\x07warlene\x07hevlene\x0ear bloaz a zeu" + + "\x10a-benn {0} bloaz\x10a-benn {0} vloaz\x16a-benn {0} a vloazioù\x0c{0}" + + " bloaz zo\x0c{0} vloaz zo\x12{0} a vloazioù zo\x03bl.\x0car bl. a zeu" + + "\x0ea-benn {0} bl.\x0a{0} bl. zo\x08+{0} bl.\x08-{0} bl.\x09trimiziad" + + "\x14a-benn {0} trimiziad\x14a-benn {0} drimiziad\x14a-benn {0} zrimiziad" + + "\x19a-benn {0} a drimiziadoù\x10{0} trimiziad zo\x10{0} drimiziad zo\x10" + + "{0} zrimiziad zo\x15{0} a zrimiziadoù zo\x05trim.\x10a-benn {0} trim." + + "\x0c{0} trim. zo\x0a+{0} trim.\x0a-{0} trim.\x03miz\x0ear miz diaraok" + + "\x0bar miz-mañ\x0car miz a zeu\x0ea-benn {0} miz\x0ea-benn {0} viz\x14a-" + + "benn {0} a vizioù\x0a{0} miz zo\x0a{0} viz zo\x10{0} a vizioù zo\x08+{0}" + + " miz\x08-{0} miz\x06sizhun\x11ar sizhun diaraok\x0ear sizhun-mañ\x0far s" + + "izhun a zeu\x11a-benn {0} sizhun\x17a-benn {0} a sizhunioù\x0d{0} sizhun" + + " zo\x13{0} a sizhunioù zo\x04deiz\x11dercʼhent-decʼh\x06decʼh\x05hiziv" + + "\x0bwarcʼhoazh\x0fa-benn {0} deiz\x0fa-benn {0} zeiz\x15a-benn {0} a zei" + + "zioù\x0b{0} deiz zo\x0b{0} zeiz zo\x11{0} a zeizioù zo\x0ca-benn {0} d" + + "\x08{0} d zo\x0edeiz ar sizhun\x0fDisul diwezhañ\x0bar Sul-mañ\x0bDisul " + + "a zeu\x0dSul diwezhañ\x08Sul-mañ\x09Sul a zeu\x0cSu diwezhañ\x07Su-mañ" + + "\x08Su a zeu\x0fDilun diwezhañ\x0bal Lun-mañ\x0bDilun a zeu\x0dLun diwez" + + "hañ\x08Lun-mañ\x09Lun a zeu\x0bL diwezhañ\x06L-mañ\x07L a zeu\x12Dimeurz" + + "h diwezhañ\x0ear Meurzh-mañ\x0eDimeurzh a zeu\x0eMeu. diwezhañ\x09Meu.-m" + + "añ\x0aMeu. a zeu\x0cMz diwezhañ\x07Mz-mañ\x08Mz a zeu\x15Dimercʼher diwe" + + "zhañ\x11ar Mercʼher-mañ\x11Dimercʼher a zeu\x0eMer. diwezhañ\x09Mer.-mañ" + + "\x0aMer. a zeu\x0cMc diwezhañ\x07Mc-mañ\x08Mc a zeu\x11Diriaou diwezhañ" + + "\x0car Yaou-mañ\x0dDiriaou a zeu\x0eYaou diwezhañ\x09Yaou-mañ\x0aYaou a " + + "zeu\x0bY diwezhañ\x06Y-mañ\x12Digwener diwezhañ\x0ear Gwener-mañ\x0eDigw" + + "ener a zeu\x0eGwe. diwezhañ\x09Gwe.-mañ\x0aGwe. a zeu\x0bG diwezhañ\x06G" + + "-mañ\x07G a zeu\x12Disadorn diwezhañ\x0ear Sadorn-mañ\x0eDisadorn a zeu" + + "\x0eSad. diwezhañ\x09Sad.-mañ\x0aSad. a zeu\x0cSa diwezhañ\x07Sa-mañ\x08" + + "Sa a zeu\x05AM/GM\x03eur\x0ea-benn {0} eur\x14a-benn {0} a eurioù\x0a{0}" + + " eur zo\x10{0} a eurioù zo\x01e\x0ca-benn {0} e\x08{0} e zo\x05munut\x10" + + "a-benn {0} munut\x10a-benn {0} vunut\x15a-benn {0} a vunutoù\x0c{0} munu" + + "t zo\x0c{0} vunut zo\x11{0} a vunutoù zo\x03min\x0ea-benn {0} min\x0a{0}" + + " min zo\x06eilenn\x07bremañ\x11a-benn {0} eilenn\x16a-benn {0} a eilenno" + + "ù\x0d{0} eilenn zo\x05brem.\x0ca-benn {0} s\x08{0} s zo\x09takad eur" + + "\x07eur {0}\x0deur hañv {0}\x11eur cʼhoañv {0}\x15eur hañv Breizh-Veur" + + "\x16eur cʼhoañv Iwerzhon\x0feur Afghanistan\x0feur Kreizafrika\x13eur Af" + + "rika ar Reter\x16eur cʼhoañv Suafrika\x18eur Afrika ar Cʼhornôg\x22eur c" + + "ʼhoañv Afrika ar Cʼhornôg\x1eeur hañv Afrika ar Cʼhornôg\x0aeur Alaska" + + "\x14eur cʼhoañv Alaska\x10eur hañv Alaska\x0aeur Almaty\x14eur cʼhoañv A" + + "lmaty\x10eur hañv Almaty\x0deur an Amazon\x17eur cʼhoañv an Amazon\x13eu" + + "r hañv an Amazon\x0ceur ar Reter\x16eur cʼhoañv ar Reter\x12eur hañv ar " + + "Reter\x10eur ar Menezioù\x1aeur cʼhoañv ar Menezioù\x16eur hañv ar Menez" + + "ioù\x0ceur Anadyrʼ\x16eur cʼhoañv Anadyrʼ\x12eur hañv Anadyrʼ\x08eur Api" + + "a\x12eur cʼhoañv Apia\x0eeur hañv Apia\x0aeur Arabia\x14eur cʼhoañv Arab" + + "ia\x10eur hañv Arabia\x10eur Arcʼhantina\x1aeur cʼhoañv Arcʼhantina\x16e" + + "ur hañv Arcʼhantina\x1eeur Arcʼhantina ar Cʼhornôg(eur cʼhoañv Arcʼhanti" + + "na ar Cʼhornôg$eur hañv Arcʼhantina ar Cʼhornôg\x0beur Armenia\x15eur cʼ" + + "hoañv Armenia\x11eur hañv Armenia\x12eur Kreizaostralia\x1ceur cʼhoañv K" + + "reizaostralia\x18eur hañv Kreizaostralia eur Kreizaostralia ar Cʼhornôg*" + + "eur cʼhoañv Kreizaostralia ar Cʼhornôg&eur hañv Kreizaostralia ar Cʼhorn" + + "ôg\x16eur Aostralia ar Reter eur cʼhoañv Aostralia ar Reter\x1ceur hañv" + + " Aostralia ar Reter\x1beur Aostralia ar Cʼhornôg%eur cʼhoañv Aostralia a" + + "r Cʼhornôg!eur hañv Aostralia ar Cʼhornôg\x0feur Azerbaidjan\x19eur cʼho" + + "añv Azerbaidjan\x15eur hañv Azerbaidjan\x0deur an Azorez\x17eur cʼhoañv " + + "an Azorez\x13eur hañv an Azorez\x0eeur Bangladesh\x18eur cʼhoañv Banglad" + + "esh\x14eur hañv Bangladesh\x0beur Bhoutan\x0beur Bolivia\x0deur Brasília" + + "\x17eur cʼhoañv Brasília\x13eur hañv Brasília\x15eur Brunei Darussalam" + + "\x12eur ar Cʼhab-Glas\x1ceur cʼhoañv ar Cʼhab-Glas\x18eur hañv ar Cʼhab-" + + "Glas\x0beur Chatham\x15eur cʼhoañv Chatham\x11eur hañv Chatham\x09eur Ch" + + "ile\x13eur cʼhoañv Chile\x0feur hañv Chile\x08eur Sina\x12eur cʼhoañv Si" + + "na\x0eeur hañv Sina\x12eur Enez Christmas\x0feur Inizi Kokoz\x0ceur Kolo" + + "mbia\x16eur cʼhoañv Kolombia\x12eur hañv Kolombia\x0eeur Inizi Cook\x18e" + + "ur cʼhoañv Inizi Cook\x14eur hañv Inizi Cook\x08eur Kuba\x12eur cʼhoañv " + + "Kuba\x0eeur hañv Kuba\x12eur Timor ar Reter\x0deur Enez Pask\x17eur cʼho" + + "añv Enez Pask\x13eur hañv Enez Pask\x0beur Ecuador\x0feur Kreizeuropa" + + "\x19eur cʼhoañv Kreizeuropa\x15eur hañv Kreizeuropa\x13eur Europa ar Ret" + + "er\x1deur cʼhoañv Europa ar Reter\x19eur hañv Europa ar Reter\x18eur Eur" + + "opa ar Cʼhornôg\x22eur cʼhoañv Europa ar Cʼhornôg\x1eeur hañv Europa ar " + + "Cʼhornôg\x12eur Inizi Falkland\x1ceur cʼhoañv Inizi Falkland\x18eur hañv" + + " Inizi Falkland\x09eur Fidji\x13eur cʼhoañv Fidji\x0feur hañv Fidji\x12e" + + "ur Gwiana cʼhall*eur Douaroù aostral Frañs hag Antarktika\x14eur Inizi G" + + "alápagos\x0beur Gambier\x0aeur Jorjia\x14eur cʼhoañv Jorjia\x10eur hañv " + + "Jorjia\x1cAmzer keitat Greenwich (AKG)\x16eur Greunland ar Reter eur cʼh" + + "oañv Greunland ar Reter\x1ceur hañv Greunland ar Reter\x1beur Greunland " + + "ar Cʼhornôg%eur cʼhoañv Greunland ar Cʼhornôg!eur hañv Greunland ar Cʼho" + + "rnôg\x12eur cʼhoañv Guam&eur cʼhoañv ar Pleg-mor Arab-ha-Pers\x0aeur Guy" + + "ana\x0deur Hong Kong\x17eur cʼhoañv Hong Kong\x13eur hañv Hong Kong\x13e" + + "ur cʼhoañv India\x0eeur Indez-Sina\x16eur Indonezia ar Reter\x1beur Indo" + + "nezia ar Cʼhornôg\x08eur Iran\x12eur cʼhoañv Iran\x0eeur hañv Iran\x0beu" + + "r Irkutsk\x15eur cʼhoañv Irkutsk\x11eur hañv Irkutsk\x0aeur Israel\x14eu" + + "r cʼhoañv Israel\x10eur hañv Israel\x09eur Japan\x13eur cʼhoañv Japan" + + "\x0feur hañv Japan\x16eur Kazakstan ar Reter\x1beur Kazakstan ar Cʼhornô" + + "g\x09eur Korea\x13eur cʼhoañv Korea\x0feur hañv Korea\x0eeur Kyrgyzstan" + + "\x0deur Sri Lanka\x09eur Macau\x13eur cʼhoañv Macau\x0feur hañv Macau" + + "\x12eur Enez Macquarie\x0ceur Malaysia\x0feur ar Maldivez\x10eur Inizi M" + + "arkiz\x12eur Inizi Marshall\x09eur Moris\x13eur cʼhoañv Moris\x0feur hañ" + + "v Moris\x15eur Gwalarn Mecʼhiko\x1feur cʼhoañv Gwalarn Mecʼhiko\x1beur h" + + "añv Gwalarn Mecʼhiko\x0feur Ulaanbaatar\x19eur cʼhoañv Ulaanbaatar\x15eu" + + "r hañv Ulaanbaatar\x0aeur Moskov\x14eur cʼhoañv Moskov\x10eur hañv Mosko" + + "v\x0beur Myanmar\x09eur Nauru\x09eur Nepal\x13eur Kaledonia Nevez\x1deur" + + " cʼhoañv Kaledonia Nevez\x19eur hañv Kaledonia Nevez\x10eur Zeland-Nevez" + + "\x1aeur cʼhoañv Zeland-Nevez\x16eur hañv Zeland-Nevez\x10eur Newfoundlan" + + "d\x1aeur cʼhoañv Newfoundland\x16eur hañv Newfoundland\x08eur Niue\x10eu" + + "r Enez Norfolk\x0feur Novosibirsk\x19eur cʼhoañv Novosibirsk\x15eur hañv" + + " Novosibirsk\x0ceur Pakistan\x16eur cʼhoañv Pakistan\x12eur hañv Pakista" + + "n\x09eur Palau\x0ceur Paraguay\x16eur cʼhoañv Paraguay\x12eur hañv Parag" + + "uay\x09eur Perou\x13eur cʼhoañv Perou\x0feur hañv Perou\x10eur ar Filipi" + + "nez\x1aeur cʼhoañv ar Filipinez\x16eur hañv ar Filipinez\x18eur Sant-Pêr" + + "-ha-Mikelon\x22eur cʼhoañv Sant-Pêr-ha-Mikelon\x1eeur hañv Sant-Pêr-ha-M" + + "ikelon\x0ceur Pitcairn\x0feur ar Reünion\x0ceur Sakhalin\x16eur cʼhoañv " + + "Sakhalin\x12eur hañv Sakhalin\x09eur Samoa\x13eur cʼhoañv Samoa\x0feur h" + + "añv Samoa\x0ceur Sechelez\x17eur cʼhoañv Singapour\x11eur Inizi Salomon" + + "\x11eur Georgia ar Su\x0beur Surinam\x0aeur Tahiti\x0aeur Taipei\x14eur " + + "cʼhoañv Taipei\x10eur hañv Taipei\x0feur Tadjikistan\x0beur Tokelau\x09e" + + "ur Tonga\x13eur cʼhoañv Tonga\x0feur hañv Tonga\x10eur Turkmenistan\x1ae" + + "ur cʼhoañv Turkmenistan\x16eur hañv Turkmenistan\x0aeur Tuvalu\x0beur Ur" + + "uguay\x15eur cʼhoañv Uruguay\x11eur hañv Uruguay\x0feur Ouzbekistan\x19e" + + "ur cʼhoañv Ouzbekistan\x15eur hañv Ouzbekistan\x0beur Vanuatu\x15eur cʼh" + + "oañv Vanuatu\x11eur hañv Vanuatu\x0deur Venezuela\x0feur Vladivostok\x19" + + "eur cʼhoañv Vladivostok\x15eur hañv Vladivostok\x0deur Volgograd\x17eur " + + "cʼhoañv Volgograd\x13eur hañv Volgograd\x14eur Wallis ha Futuna\x0beur Y" + + "akutsk\x15eur cʼhoañv Yakutsk\x11eur hañv Yakutsk\x12eur Yekaterinbourg" + + "\x1ceur cʼhoañv Yekaterinbourg\x18eur hañv Yekaterinbourg\x04Llun\x03Maw" + + "\x03Mer\x03Iau\x04Gwen\x03Sad\x02Ll\x02Ma\x02Me\x02Ia\x02Gw\x03Gwe\x02Ll" + + "\x09མིར\x09སངྶ\x03Lun\x03Mth\x03Mhr\x03Yow\x0b+{0} trims.\x0b-{0} trims." + + "\x0210\x0211\x0212\x0213" + +var bucket12 string = "" + // Size: 20072 bytes + "\x11EEEE, MMMM d, y G\x0bMMMM d, y G\x0aMMM d, y G\x0cM/d/yy GGGGG\x18जा" + + "नुवारी\x1eफेब्रुवारी\x0fमार्स\x12एफ्रिल\x06मे\x09जुन\x0fजुलाइ\x0fआगस्थ" + + "\x1eसेबथेज्ब़र\x0fअखथबर\x18नबेज्ब़र\x1bदिसेज्ब़र\x03ज\x06फे\x06मा\x03ए" + + "\x06जु\x03आ\x06से\x03अ\x03न\x06दि\x09रबि\x06सम\x0cमंगल\x09बुद\x0fबिसथि" + + "\x0fसुखुर\x0cसुनि\x12रबिबार\x0fसमबार\x15मंगलबार\x12बुदबार\x18बिसथिबार" + + "\x18सुखुरबार\x15सुनिबार\x03र\x03स\x06मं\x06बु\x06बि\x06सुDसिथासे/खोन्दोस" + + "े/बाहागोसेAखावसे/खोन्दोनै/बाहागोनैJखावथाम/खोन्दोथाम/बाहागोथामNखावब्रै/" + + "खोन्दोब्रै/फुरा/आबुं\x09फुं\x12बेलासे\x19ईसा.पूर्व\x06सन\x0fEEEE, MMMM" + + " d, y\x09MMMM d, y\x08MMM d, y\x06M/d/yy\x22बैसागो/बैसाग\x0cजेथो\x0cआसार" + + "\x0fसावुन\x0fभाद्र\x0cआसिन\x0cखाथि\x12आगाह्न\x09फुस\x0cमागो\x0fफागुन\x0c" + + "सैथो\x0fजौथाय\x0fबोसोर\x09दान\x19सबथा/हबथा\x09सान\x0cमैया\x0cदिनै\x0fग" + + "ाबोन#सप्ताह के दिन\x1cफुं/बेलासे\x0fरिंगा\x0fमिनिथ\x15सेखेन्द\x0fओनसोल" + + ",ब्रीटीश समर टाईम&आईरीश समर टाईम\x16आकर टाईम2आकर स्टैंडर्ड टाईम आकर समर " + + "टाईम>अफ़गानी स्टैंडर्ड टाईमKमध्य अफ्रीका स्टैंडर्ड टाईमQपूर्वी अफ्रीका" + + " स्टैंडर्ड टाईमQदक्षिण अफ्रीका स्टैंडर्ड टाईम5पश्चीम अफ्रीका टाईमQपश्चीम" + + " अफ्रीका स्टैंडर्ड टाईम?पश्चीम अफ्रीका समर टाईम\x22अलास्का टाईम>अलास्का " + + "स्टैंडर्ड टाईम5अलास्का डेलाईट टाईम\x1fअलमाटी टाईम;अलमाटी स्टैंडर्ड टाई" + + "म)अलमाटी समर टाईम\x22अमाज़ोन टाईम>अमाज़ोन स्टैंडर्ड टाईम,अमाज़ोन समर ट" + + "ाईम5सैंट्रल अमरिका टाईमQसैंट्रल अमरिका स्टैंडर्ड टाईमHसैंट्रल अमरिका ड" + + "ेलाईट टाईम5ईस्टर्न अमरिका टाईमQईस्टर्न अमरिका स्टैंडर्ड टाईमHईस्टर्न अ" + + "मरिका डेलाईट टाईम5अमरिका माऊन्टन टाईमQअमरिका माऊन्टन स्टैंडर्ड टाईमHअम" + + "रिका माऊन्टन डेलाईट टाईम\x22पैसीफीक टाईम>पैसीफीक स्टैंडर्ड टाईम5पैसीफी" + + "क डेलाईट टाईम\x1fअनादीर टाईम;अनादीर स्टैंडर्ड टाईम)अनादीर समर टाईम\x22" + + "अक़्टाऊ टाईम>अक़्टाऊ स्टैंडर्ड टाईम,अक़्टाऊ समर टाईम%अक़्टोबे टाईमAअक़" + + "्टोबे स्टैंडर्ड टाईम/अक़्टोबे समर टाईम\x19अरबी टाईम5अरबी स्टैंडर्ड टाई" + + "म,अरबी डेलाईट टाईम(अर्जनटिना टाईमDअर्जनटिना स्टैंडर्ड टाईम5अर्जण्टिना " + + "समर टाईम>पश्चीम अर्जण्टिना टाईमZपश्चीम अर्जण्टिना स्टैंडर्ड टाईमHपश्ची" + + "म अर्जण्टिना समर टाईम\x1fआरमीनी टाईम;आरमीनी स्टैंडर्ड टाईम)आरमीनी समर " + + "टाईम%अटलांटीक टाईमAअटलांटीक स्टैंडर्ड टाईम8अटलांटीक डेलाईट टाईम.ओस्ट्र" + + "ेलिया टाईमWमध्य ओस्ट्रेलिया स्टैंडर्ड टाईमNमध्य ओस्ट्रेलिया डेलाईट टाई" + + "मNमध्य-पश्चीम ओस्ट्रेलिया टाईमjमध्य-पश्चीम ओस्ट्रेलिया स्टैंडर्ड टाईमa" + + "मध्य-पश्चीम ओस्ट्रेलिया डेलाईट टाईमAपूर्वी ओस्ट्रेलिया टाईम]पूर्वी ओस्" + + "ट्रेलिया स्टैंडर्ड टाईमTपूर्वी ओस्ट्रेलिया डेलाईट टाईमAदक्षिण ओस्ट्रेल" + + "िया टाईम]दक्षिण ओस्ट्रेलिया स्टैंडर्ड टाईमTदक्षिण ओस्ट्रेलिया डेलाईट ट" + + "ाईम(आज़रबैजान टाईमDआज़रबैजान स्टैंडर्ड टाईम2आज़रबैजान समर टाईम\x1cआज़ो" + + "र टाईम8आज़ोर स्टैंडर्ड टाईम&आज़ोर समर टाईम(बांगलादेश टाईमDबांगलादेश स्" + + "टैंडर्ड टाईम2बांगलादेश समर टाईम8भुटान स्टैंडर्ड टाईमAबोलिविया स्टैंडर्" + + "ड टाईम.ब्राज़ीलिया टाईमJब्राज़ीलिया स्टैंडर्ड टाईम8ब्राज़ीलिया समर टाई" + + "मYब्रुनेई दर उस सलाम स्टैंडर्ड टाईम)काप वेर्दे टाईमEकाप वेर्दे स्टैंडर" + + "्ड टाईम3काप वेर्दे समर टाईम8चामरो स्टैंडर्ड टाईम\x19चैथम टाईम5चैथम स्ट" + + "ैंडर्ड टाईम,चैथम डेलाईट टाईम\x19चीली टाईम5चीली स्टैंडर्ड टाईम#चीली समर" + + " टाईम\x1cचाईना टाईम8चाईना स्टैंडर्ड टाईम/चाईना डेलाईट टाईम(चोईबालसान टाई" + + "मDचोईबालसान स्टैंडर्ड टाईम2चोईबालसान समर टाईम>क्रीसमस स्टैंडर्ड टाईमEक" + + "ोको द्वीप स्टैंडर्ड टाईम%कोलंबिया टाईमAकोलंबिया स्टैंडर्ड टाईम/कोलंबिय" + + "ा समर टाईम&कुक द्वीप टाईमBकुक द्वीप स्टैंडर्ड टाईम=कुक द्वीप अर्ध समर " + + "टाईम\x1fक्युबा टाईम;क्युबा स्टैंडर्ड टाईम2क्युबा डेलाईट टाईम8डेवीस स्ट" + + "ैंडर्ड टाईमWड्युमों ड्युरवील स्टैंडर्ड टाईमEईस्ट टीमोर स्टैंडर्ड टाईम," + + "ईस्टर आईलंड टाईमHईस्टर आईलंड स्टैंडर्ड टाईम6ईस्टर आईलंड समर टाईमAएक्वा" + + "डौर स्टैंडर्ड टाईम)मध्य यूरोप टाईमEमध्य यूरोप स्टैंडर्ड टाईम3मध्य यूरो" + + "प समर टाईम2ईस्टर्न यूरोप टाईमNईस्टर्न यूरोप स्टैंडर्ड टाईम<ईस्टर्न यूर" + + "ोप समर टाईम5वेस्टर्न यूरोप टाईमQवेस्टर्न यूरोप स्टैंडर्ड टाईम?वेस्टर्न" + + " यूरोप समर टाईम.फ़ाल्कलैण्ड टाईमJफ़ाल्कलैण्ड स्टैंडर्ड टाईम8फ़ाल्कलैण्ड " + + "समर टाईम\x19फीजी टाईम5फीजी स्टैंडर्ड टाईम#फीजी समर टाईमZफ्रान्सीसी गुय" + + "ाना स्टैंडर्ड टाईमZदक्षिण फ्रान्सीसी स्टैंडर्ड टाईमDगालापागोस स्टैंडर्" + + "ड टाईम>गांबिये स्टैंडर्ड टाईम%जोर्जिया टाईमAजोर्जिया स्टैंडर्ड टाईम/जो" + + "र्जिया समर टाईमNगीलबर्ट द्वीप स्टैंडर्ड टाईम>ग्रीनीच स्टैंडर्ड टाईमAग्" + + "रीनलैण्ड ईस्टर्न टाईम]ग्रीनलैण्ड ईस्टर्न स्टैंडर्ड टाईमKग्रीनलैण्ड ईस्" + + "टर्न समर टाईमDग्रीनलैण्ड वेस्टर्न टाईम`ग्रीनलैण्ड वेस्टर्न स्टैंडर्ड ट" + + "ाईमNग्रीनलैण्ड वेस्टर्न समर टाईम5गुआम स्टैंडर्ड टाईम8गल्फ़ स्टैंडर्ड ट" + + "ाईम;गुयाना स्टैंडर्ड टाईम&हवाई आलटन टाईमBहवाई आलटन स्टैंडर्ड टाईम9हवाई" + + " आलटन डेलाईट टाईम%हाँगकॉंग टाईमAहाँगकॉंग स्टैंडर्ड टाईम/हाँगकॉंग समर टाई" + + "म\x1cहोव्ड टाईम8होव्ड स्टैंडर्ड टाईम&होव्ड समर टाईम;भारतीय स्टैंडर्ड ट" + + "ाईमNभारतीय महासगर स्टैंडर्ड टाईमBईंडो चइना स्टैंडर्ड टाईमGईंडोनीशिया स" + + "्टैंडर्ड टाईम]ईस्टर्न ईंडोनीशिया स्टैंडर्ड टाईम`वेस्टर्न ईंडोनीशिया स्" + + "टैंडर्ड टाईम\x19ईरान टाईम5ईरान स्टैंडर्ड टाईम,ईरान डेलाईट टाईम.ईरकुर्त" + + "्स्क टाईमJईरकुर्त्स्क स्टैंडर्ड टाईम8ईरकुर्त्स्क समर टाईम\x22ईस्राइल ट" + + "ाईम>ईस्राइल स्टैंडर्ड टाईम5ईस्राइल डेलाईट टाईम\x19जपान टाईम5जपान स्टैं" + + "डर्ड टाईम,जपान डेलाईट टाईमMपेत्रोपावलोस्क कामचटका टाईमiपेत्रोपावलोस्क " + + "कामचटका स्टैंडर्ड टाईमWपेत्रोपावलोस्क कामचटका समर टाईम1क़ज़ाख़स्तान टा" + + "ईमJवेस्टर्न क़ज़ाख़स्तान टाईम\x1fकोरिया टाईम;कोरिया स्टैंडर्ड टाईम2कोर" + + "िया डेलाईट टाईम8कोसरी स्टैंडर्ड टाईम7क्रासनोयार्स्क टाईमSक्रासनोयार्स्" + + "क स्टैंडर्ड टाईमAक्रासनोयार्स्क समर टाईमMक़ीर्ग़स्तान स्टैंडर्ड टाईम5ल" + + "ंका स्टैंडर्ड टाईमEलाईन द्वीप स्टैंडर्ड टाईम)लार्ड़ होव टाईमEलार्ड़ हो" + + "व स्टैंडर्ड टाईम<लार्ड़ होव डेलाईट टाईम\x1cमाकाऊ टाईम8माकाऊ स्टैंडर्ड " + + "टाईम&माकाऊ समर टाईम\x19मगदन टाईम5मगदन स्टैंडर्ड टाईम#मगदन समर टाईम>मले" + + "शिया स्टैंडर्ड टाईम;मालदीव स्टैंडर्ड टाईमGमार्केज़ास स्टैंडर्ड टाईमAमा" + + "र्शल र्स्टैंडर्ड टाईम%मॉरिशीयस टाईमAमॉरिशीयस स्टैंडर्ड टाईम/मॉरिशीयस स" + + "मर टाईम5मॉसन स्टैंडर्ड टाईम%मँगोलिया टाईमAमँगोलिया स्टैंडर्ड टाईम/मँगो" + + "लिया समर टाईम\x1fमॉस्को टाईम;मॉस्को स्टैंडर्ड टाईम)मॉस्को समर टाईमAम्य" + + "ानमार स्टैंडर्ड टाईम8नाऊरु स्टैंडर्ड टाईम8नेपाल स्टैंडर्ड टाईम8न्यु कै" + + "लेडोनिया टाईमTन्यु कैलेडोनिया स्टैंडर्ड टाईमBन्यु कैलेडोनिया समर टाईम1" + + "न्युज़ीलैण्ड टाईमMन्युज़ीलैण्ड स्टैंडर्ड टाईमDन्युज़ीलैण्ड डेलाईट टाईम" + + "7न्युफाऊंडलैण्ड टाईमSन्युफाऊंडलैण्ड स्टैंडर्ड टाईमJन्युफाऊंडलैण्ड डेलाईट" + + " टाईम5नीऊई स्टैंडर्ड टाईम;नॉरफोक स्टैंडर्ड टाईमEफेरनान्दो द नोरोन्हा टाई" + + "मaफेरनान्दो द नोरोन्हा स्टैंडर्ड टाईमOफेरनान्दो द नोरोन्हा समर टाईमNनॉ" + + "र्थ मारिआना स्टैंडर्ड टाईम4नोवोसीबीर्स्क टाईमPनोवोसीबीर्स्क स्टैंडर्ड " + + "टाईम>नोवोसीबीर्स्क समर टाईम\x1fओम्स्क टाईम;ओम्स्क स्टैंडर्ड टाईम)ओम्स्" + + "क समर टाईम(पाकिस्तान टाईमDपाकिस्तान स्टैंडर्ड टाईम2पाकिस्तान समर टाईम5" + + "पलाऊ स्टैंडर्ड टाईमRपापुआ न्यु गीनी स्टैंडर्ड टाईम\x22पारागुए टाईम>पार" + + "ागुए स्टैंडर्ड टाईम,पारागुए समर टाईम\x19पेरु टाईम5पेरु स्टैंडर्ड टाईम#" + + "पेरु समर टाईम(फीलीपीन्स टाईमDफीलीपीन्स स्टैंडर्ड टाईम2फीलीपीन्स समर टा" + + "ईमNफीनीक्स द्वीप स्टैंडर्ड टाईमCसेँ पीयॅर एवं मीकलों टाईम_सेँ पीयॅर एव" + + "ं मीकलों स्टैंडर्ड टाईमVसेँ पीयॅर एवं मीकलों डेलाईट टाईमAपीटकैर्न स्टै" + + "ंडर्ड टाईमVपोनापे (पोह्नपेई) स्टैंडर्ड टाईम1क़ीज़ीलोर्डा टाईमMक़ीज़ीलो" + + "र्डा स्टैंडर्ड टाईम;क़ीज़ीलोर्डा समर टाईमAरियूनियन स्टैंडर्ड टाईम;रोथे" + + "रा स्टैंडर्ड टाईम\x22सख़ालीन टाईम>सख़ालीन स्टैंडर्ड टाईम,सख़ालीन समर ट" + + "ाईम\x1cसमारा टाईम8समारा स्टैंडर्ड टाईम&समारा समर टाईम\x19समोआ टाईम5समो" + + "आ स्टैंडर्ड टाईम#समोआ समर टाईम>सेशेल्स स्टैंडर्ड टाईमAसींगापुर स्टैंडर" + + "्ड टाईम;सॉलॉमन स्टैंडर्ड टाईमNसाऊथ जॉर्जिया स्टैंडर्ड टाईम>सुरीनाम स्ट" + + "ैंडर्ड टाईम8सीओवा स्टैंडर्ड टाईम;टाहिटी स्टैंडर्ड टाईमMताजीक़ीस्तान स्" + + "टैंडर्ड टाईम;टोकेलौ स्टैंडर्ड टाईम\x1cटॉंगा टाईम8टॉंगा स्टैंडर्ड टाईम&" + + "टॉंगा समर टाईम8ट्रुक स्टैंडर्ड टाईम7तुर्कमेनीस्तान टाईमSतुर्कमेनीस्तान" + + " स्टैंडर्ड टाईमAतुर्कमेनीस्तान समर टाईम;तुवालु स्टैंडर्ड टाईम\x1fऊरुगुए " + + "टाईम;ऊरुगुए स्टैंडर्ड टाईम)ऊरुगुए समर टाईम4ऊज़्बेकिस्तान टाईमPऊज़्बेकि" + + "स्तान स्टैंडर्ड टाईम>ऊज़्बेकिस्तान समर टाईम\x1fवनुआटु टाईम;वनुआटु स्टै" + + "ंडर्ड टाईम)वनुआटु समर टाईमGवेनेज़ुएला स्टैंडर्ड टाईम4व्लादीवॉस्तॉक टाई" + + "मPव्लादीवॉस्तॉक स्टैंडर्ड टाईमGव्लादीवॉस्तॉक डेलाईट टाईम+वॉलगोग्राद टा" + + "ईमGवॉलगोग्राद स्टैंडर्ड टाईम5वॉलगोग्राद समर टाईम>वॉस्तॉक स्टैंडर्ड टाई" + + "मEवाके द्वीप स्टैंडर्ड टाईमXवालीस एवं फ़ुतुना स्टैंडर्ड टाईम(याकुट्स्क" + + " टाईमDयाकुट्स्क स्टैंडर्ड टाईम2याकुट्स्क समर टाईम:येकातेरीनाबुर्ग टाईमVय" + + "ेकातेरीनाबुर्ग स्टैंडर्ड टाईमDयेकातेरीनाबुर्ग समर टाईम\x06फ़\x03म\x06ज" + + "ू\x06सि\x06सो\x06गु\x06शु\x03श" + +var bucket13 string = "" + // Size: 13406 bytes + "\x09E, d.M.y.\x06d.M.y.\x13EEEE, dd. MMMM y. G\x0ddd. MMMM y. G\x0add.MM" + + ".y. G\x0edd.MM.y. GGGGG\x0b{1} 'u' {0}\x03jan\x03feb\x03mar\x03apr\x03ma" + + "j\x03jun\x03jul\x03avg\x03sep\x03okt\x03nov\x03dec\x06januar\x07februar" + + "\x04mart\x05april\x04juni\x04juli\x06avgust\x09septembar\x07oktobar\x08n" + + "ovembar\x08decembar\x03ned\x03pon\x03uto\x03sri\x04čet\x03pet\x03sub\x08" + + "nedjelja\x0bponedjeljak\x06utorak\x07srijeda\x09četvrtak\x05petak\x06sub" + + "ota\x021.\x022.\x023.\x024.\x0cPrvi kvartal\x0dDrugi kvartal\x0eTreći kv" + + "artal\x10Četvrti kvartal\x06ponoć\x0aprijepodne\x05podne\x07popodne\x06u" + + "jutro\x0cposlijepodne\x08navečer\x08po noći\x0eprije nove ere\x08nove er" + + "e\x08p. n. e.\x05n. e.\x07pr.n.e.\x02AD\x10EEEE, d. MMMM y.\x0ad. MMMM y" + + ".\x0ad. MMM. y.\x07d.M.yy.\x04muh.\x04saf.\x06rab. i\x07rab. ii\x08džum." + + " i\x09džum. ii\x06redž.\x04ša.\x04ram.\x04še.\x06zul-k.\x06zul-h.\x07muh" + + "arem\x05safer\x08rabiʻ i\x09rabiʻ ii\x0adžumade i\x0bdžumade ii\x07redže" + + "b\x08šaʻban\x07ramazan\x06ševal\x08zul-kade\x0azul-hidže\x0cprije R.O.C." + + "\x06R.O.C.\x06godina\x0eprošle godine\x0aove godine\x10sljedeće godine" + + "\x0dza {0} godinu\x0dza {0} godine\x0dza {0} godina\x10prije {0} godinu" + + "\x10prije {0} godine\x10prije {0} godina\x04god.\x0bza {0} god.\x0eprije" + + " {0} god.\x02g.\x09za {0} g.\x0cprije {0} g.\x07kvartal\x12posljednji kv" + + "artal\x0covaj kvartal\x11sljedeći kvartal\x0eza {0} kvartal\x0fza {0} kv" + + "artala\x11prije {0} kvartal\x12prije {0} kvartala\x08-{0} kv.\x03kv.\x0a" + + "za {0} kv.\x0dprije {0} kv.\x06mjesec\x0eprošli mjesec\x0bovaj mjesec" + + "\x10sljedeći mjesec\x0dza {0} mjesec\x0eza {0} mjeseca\x0eza {0} mjeseci" + + "\x10prije {0} mjesec\x11prije {0} mjeseca\x11prije {0} mjeseci\x03mj." + + "\x0aza {0} mj.\x0dprije {0} mj.\x07sedmica\x0fprošle sedmice\x0bove sedm" + + "ice\x11sljedeće sedmice\x0eza {0} sedmicu\x0eza {0} sedmice\x0eza {0} se" + + "dmica\x11prije {0} sedmicu\x11prije {0} sedmice\x11prije {0} sedmica\x0e" + + "sedmica od {0}\x04sed.\x0bza {0} sed.\x0eprije {0} sed.\x03dan\x0aprekju" + + "čer\x06jučer\x05danas\x05sutra\x0aprekosutra\x0aza {0} dan\x0bza {0} da" + + "na\x0dprije {0} dan\x0eprije {0} dana\x09za {0} d.\x0cprije {0} d.\x0dda" + + "n u sedmici\x10prošla nedjelja\x0cova nedjelja\x12sljedeća nedjelja\x0fz" + + "a {0} nedjelju\x0fza {0} nedjelje\x0fza {0} nedjelja\x12prije {0} nedjel" + + "ju\x12prije {0} nedjelje\x12prije {0} nedjelja\x0cprošla ned.\x08ova ned" + + ".\x0esljedeća ned.\x13prošli ponedjeljak\x10ovaj ponedjeljak\x15sljedeći" + + " ponedjeljak\x12za {0} ponedjeljak\x12za {0} ponedjeljka\x13za {0} poned" + + "jeljaka\x15prije {0} ponedjeljak\x15prije {0} ponedjeljka\x16prije {0} p" + + "onedjeljaka\x0cprošli pon.\x09ovaj pon.\x0dsljedeći pon\x0eprošli utorak" + + "\x0bovaj utorak\x10sljedeći utorak\x0dza {0} utorak\x0dza {0} utorka\x0e" + + "za {0} utoraka\x10prije {0} utorak\x10prije {0} utorka\x11prije {0} utor" + + "aka\x0cprošli uto.\x09ovaj uto.\x0esljedeći uto.\x0fprošla srijeda\x0bov" + + "a srijeda\x11sljedeća srijeda\x0eza {0} srijedu\x0eza {0} srijede\x0eza " + + "{0} srijeda\x11prije {0} srijedu\x11prije {0} srijede\x11prije {0} srije" + + "da\x0cprošla sri.\x08ova sri.\x0esljedeća sri.\x11prošli četvrtak\x0eova" + + "j četvrtak\x13sljedeći četvrtak\x10za {0} četvrtak\x10za {0} četvrtka" + + "\x11za {0} četvrtaka\x13prije {0} četvrtak\x13prije {0} četvrtka\x14prij" + + "e {0} četvrtaka\x0dprošli čet.\x0aovaj čet.\x0fsljedeći čet.\x0dprošli p" + + "etak\x0aovaj petak\x0fsljedeći petak\x0cza {0} petak\x0cza {0} petka\x0d" + + "za {0} petaka\x0fprije {0} petak\x0fprije {0} petka\x10prije {0} petaka" + + "\x0cprošli pet.\x09ovaj pet.\x0esljedeći pet.\x0eprošla subota\x0aova su" + + "bota\x10sljedeća subota\x0dza {0} subotu\x0dza {0} subote\x0dza {0} subo" + + "ta\x10prije {0} subotu\x10prije {0} subote\x10prije {0} subota\x0cprošla" + + " sub.\x08ova sub.\x0esljedeća sub.\x17prijepodne/poslijepodne\x03sat\x08" + + "ovaj sat\x0aza {0} sat\x0bza {0} sata\x0bza {0} sati\x0dprije {0} sat" + + "\x0eprije {0} sata\x0eprije {0} sati\x06minuta\x0aova minuta\x0dza {0} m" + + "inutu\x0dza {0} minute\x0dza {0} minuta\x10prije {0} minutu\x10prije {0}" + + " minute\x10prije {0} minuta\x0bza {0} min.\x0eprije {0} min.\x07sekunda" + + "\x04sada\x0eza {0} sekundu\x0eza {0} sekunde\x0eza {0} sekundi\x11prije " + + "{0} sekundu\x11prije {0} sekunde\x11prije {0} sekundi\x0bza {0} sek.\x0e" + + "prije {0} sek.\x0evremenska zona\x0e+HH:mm; -HH:mm\x07GMT {0}\x03GMT\x18" + + "Britansko ljetno vrijeme\x18Irsko standardno vrijeme\x0aAcre vreme\x15Ac" + + "re standardno vreme\x1eAcre letnje računanje vremena\x15Afganistansko vr" + + "ijeme\x19Centralnoafričko vrijeme\x18Istočnoafričko vrijeme!Južnoafričko" + + " standardno vrijeme\x17Zapadnoafričko vrijeme\x22Zapadnoafričko standard" + + "no vrijeme\x1eZapadnoafričko ljetno vrijeme\x13Aljaskansko vrijeme\x1eAl" + + "jaskansko standardno vrijeme\x1aAljaskansko ljetno vrijeme\x0cAlmatu vre" + + "me\x17Almatu standardno vreme Almatu letnje računanje vremena\x11Amazons" + + "ko vrijeme\x1cAmazonsko standardno vrijeme\x18Amazonsko ljetno vrijeme#S" + + "jevernoameričko centralno vrijeme.Sjevernoameričko centralno standardno " + + "vrijeme*Sjevernoameričko centralno ljetno vrijeme\x22Sjevernoameričko is" + + "točno vrijeme-Sjevernoameričko istočno standardno vrijeme)Sjevernoamerič" + + "ko istočno ljetno vrijeme#Sjevernoameričko planinsko vrijeme.Sjevernoame" + + "ričko planinsko standardno vrijeme*Sjevernoameričko planinsko ljetno vri" + + "jeme$Sjevernoameričko pacifičko vrijeme/Sjevernoameričko pacifičko stand" + + "ardno vrijeme+Sjevernoameričko pacifičko ljetno vrijeme\x0cAnadir vreme" + + "\x17Anadir standardno vreme Anadir letnje računanje vremena\x0fApijsko v" + + "rijeme\x1aApijsko standardno vrijeme\x16Apijsko ljetno vrijeme\x0cAkvtau" + + " vreme\x17Akvtau standardno vreme Akvtau letnje računanje vremena\x0dAkv" + + "tobe vreme\x18Akvtobe standardno vreme!Akvtobe letnje računanje vremena" + + "\x11Arabijsko vrijeme\x1cArabijsko standardno vrijeme\x18Arabijsko ljetn" + + "o vrijeme\x13Argentinsko vrijeme\x1eArgentinsko standardno vrijeme\x1aAr" + + "gentinsko ljetno vrijeme\x1aZapadnoargentinsko vrijeme%Zapadnoargentinsk" + + "o standardno vrijeme!Zapadnoargentinsko ljetno vrijeme\x10Armensko vrije" + + "me\x1bArmensko standardno vrijeme\x17Armensko ljetno vrijeme#Sjevernoame" + + "ričko atlantsko vrijeme.Sjevernoameričko atlantsko standardno vrijeme*Sj" + + "evernoameričko atlantsko ljetno vrijeme\x1dCentralnoaustralijsko vrijeme" + + "(Centralnoaustralijsko standardno vrijeme$Centralnoaustralijsko ljetno v" + + "rijeme&Australijsko centralno zapadno vrijeme0Australijsko centralnozapa" + + "dno standardno vrijeme,Australijsko centralnozapadno ljetno vrijeme\x1cI" + + "stočnoaustralijsko vrijeme'Istočnoaustralijsko standardno vrijeme#Istočn" + + "oaustralijsko ljetno vrijeme\x1bZapadnoaustralijsko vrijeme&Zapadnoaustr" + + "alijsko standardno vrijeme\x22Zapadnoaustralijsko ljetno vrijeme\x17Azer" + + "bejdžansko vrijeme\x22Azerbejdžansko standardno vrijeme\x1eAzerbejdžansk" + + "o ljetno vrijeme\x0fAzorsko vrijeme\x1aAzorsko standardno vrijeme\x16Azo" + + "rsko ljetno vrijeme\x14Bangladeško vrijeme\x1fBangladeško standardno vri" + + "jeme\x1bBangladeško ljetno vrijeme\x10Butansko vrijeme\x12Bolivijsko vri" + + "jeme\x13Brazilijsko vrijeme\x1eBrazilijsko standardno vrijeme\x1aBrazili" + + "jsko ljetno vrijeme\x11Brunejsko vrijeme\x13Zelenortsko vrijeme\x1eZelen" + + "ortsko standardno vrijeme\x1aZelenortsko ljetno vrijeme\x1cČamorsko stan" + + "dardno vrijeme\x11Čatamsko vrijeme\x1cČatamsko standardno vrijeme\x18Čat" + + "amsko ljetno vrijeme\x12Čileansko vrijeme\x1dČileansko standardno vrijem" + + "e\x19Čileansko ljetno vrijeme\x0fKinesko vrijeme\x1aKinesko standardno v" + + "rijeme\x16Kinesko ljetno vrijeme\x15Čojbalsansko vrijeme Čojbalsansko st" + + "andardno vrijeme\x1cČojbalsansko ljetno vrijeme\x1cVrijeme na Božićnom O" + + "strvu\x19Vrijeme na Ostrvima Kokos\x13Kolumbijsko vrijeme\x1eKolumbijsko" + + " standardno vrijeme\x1aKolumbijsko ljetno vrijeme\x1bVrijeme na Kukovim " + + "ostrvima&Standardno vrijeme na Kukovim ostrvima&Poluljetno vrijeme na Ku" + + "kovim ostrvima\x10Kubansko vrijeme\x1bKubansko standardno vrijeme\x17Kub" + + "ansko ljetno vrijeme\x15Vrijeme stanice Davis\x22Vrijeme stanice Dumont-" + + "d’Urville\x18Istočnotimorsko vrijeme\x19Uskršnjeostrvsko vrijeme$Uskršnj" + + "eostrvsko standardno vrijeme Uskršnjeostrvsko ljetno vrijeme\x12Ekvadors" + + "ko vrijeme\x19Centralnoevropsko vrijeme$Centralnoevropsko standardno vri" + + "jeme Centralnoevropsko ljetno vrijeme\x18Istočnoevropsko vrijeme#Istočno" + + "evropsko standardno vrijeme\x1fIstočnoevropsko ljetno vrijeme\x1eDalekoi" + + "stočnoevropsko vrijeme\x17Zapadnoevropsko vrijeme\x22Zapadnoevropsko sta" + + "ndardno vrijeme\x1eZapadnoevropsko ljetno vrijeme\x13Folklandsko vrijeme" + + "\x1eFolklandsko standardno vrijeme\x1aFolklandsko ljetno vrijeme\x13Vrij" + + "eme na Fidžiju\x1eStandardno vrijeme na Fidžiju\x19Fidžijsko ljetno vrij" + + "eme\x1aFrancuskogvajansko vrijeme5Vrijeme na Francuskoj Južnoj Teritorij" + + "i i Antarktiku\x13Galapagosko vrijeme\x13Gambijersko vrijeme\x11Gruzijsk" + + "o vrijeme\x1cGruzijsko standardno vrijeme\x18Gruzijsko ljetno vrijeme" + + "\x1fVrijeme na Gilbertovim ostrvima\x11Griničko vrijeme\x1bIstočnogrenla" + + "ndsko vrijeme&Istočnogrenlandsko standardno vrijeme\x22Istočnogrenlandsk" + + "o ljetno vrijeme\x1aZapadnogrenlandsko vrijeme%Zapadnogrenlandsko standa" + + "rdno vrijeme!Zapadnogrenlandsko ljetno vrijeme\x15Guam standardno vreme" + + "\x1bZalivsko standardno vrijeme\x11Gvajansko vrijeme\x1cHavajsko-aleućan" + + "sko vrijeme'Havajsko-aleućansko standardno vrijeme#Havajsko-aleućansko l" + + "jetno vrijeme\x13Hongkonško vrijeme\x1eHongkonško standardno vrijeme\x1a" + + "Hongkonško ljetno vrijeme\x0fHovdsko vrijeme\x1aHovdsko standardno vrije" + + "me\x16Hovdsko ljetno vrijeme\x1bIndijsko standardno vrijeme\x1bVrijeme n" + + "a Indijskom okeanu\x13Indokinesko vrijeme\x1dCentralnoindonezijsko vrije" + + "me\x1cIstočnoindonezijsko vrijeme\x1bZapadnoindonezijsko vrijeme\x0fIran" + + "sko vrijeme\x1aIransko standardno vrijeme\x16Iransko ljetno vrijeme\x10I" + + "rkutsko vrijeme\x1bIrkutsko standardno vrijeme\x17Irkutsko ljetno vrijem" + + "e\x11Izraelsko vrijeme\x1cIzraelsko standardno vrijeme\x18Izraelsko ljet" + + "no vrijeme\x10Japansko vrijeme\x1bJapansko standardno vrijeme\x17Japansk" + + "o ljetno vrijeme\x1ePetropavlovsk-Kamčatski vreme)Petropavlovsk-Kamčatsk" + + "i standardno vreme2Petropavlovsk-Kamčatski letnje računanje vremena\x1cI" + + "stočnokazahstansko vrijeme\x1bZapadnokazahstansko vrijeme\x10Korejsko vr" + + "ijeme\x1bKorejsko standardno vrijeme\x17Korejsko ljetno vrijeme\x18Vrije" + + "me na Ostrvu Kosrae\x14Krasnojarsko vrijeme\x1fKrasnojarsko standardno v" + + "rijeme\x1bKrasnojarsko ljetno vrijeme\x14Kirgistansko vrijeme\x0bLanka v" + + "reme\x18Vrijeme na Ostrvima Lajn\x1aVrijeme na Ostrvu Lord Hau%Standardn" + + "o vrijeme na Ostrvu Lord Hau!Ljetno vrijeme na Ostrvu Lord Hau\x0bMakao " + + "vreme\x16Makao standardno vreme\x1fMakao letnje računanje vremena\x19Vri" + + "jeme na Ostrvu Makvori\x12Magadansko vrijeme\x1dMagadansko standardno vr" + + "ijeme\x19Magadansko ljetno vrijeme\x12Malezijsko vrijeme\x11Maldivsko vr" + + "ijeme\x1aVrijeme na Ostrvima Markiz\x1fVrijeme na Maršalovim ostrvima" + + "\x13Mauricijsko vrijeme\x1eMauricijsko standardno vrijeme\x1aMauricijsko" + + " ljetno vrijeme\x16Vrijeme stanice Mawson Sjeverozapadno meksičko vrijem" + + "e+Sjeverozapadno meksičko standardno vrijeme'Sjeverozapadno meksičko lje" + + "tno vrijeme\x1cMeksičko pacifičko vrijeme'Meksičko pacifičko standardno " + + "vrijeme#Meksičko pacifičko ljetno vrijeme\x14Ulanbatorsko vrijeme\x1fUla" + + "nbatorsko standardno vrijeme\x1bUlanbatorsko ljetno vrijeme\x11Moskovsko" + + " vrijeme\x1cMoskovsko standardno vrijeme\x18Moskovsko ljetno vrijeme\x13" + + "Mijanmarsko vrijeme\x17Vrijeme na Ostrvu Nauru\x10Nepalsko vrijeme\x18No" + + "vokaledonijsko vrijeme#Novokaledonijsko standardno vrijeme\x1fNovokaledo" + + "nijsko ljetno vrijeme\x15Novozelandsko vrijeme Novozelandsko standardno " + + "vrijeme\x1cNovozelandsko ljetno vrijeme\x17Njufaundlendsko vrijeme\x22Nj" + + "ufaundlendsko standardno vrijeme\x1eNjufaundlendsko ljetno vrijeme\x16Vr" + + "ijeme na Ostrvu Niue\x12Norfolško vrijeme%Vrijeme na ostrvu Fernando di " + + "Noronja0Standardno vrijeme na ostrvu Fernando di Noronja,Ljetno vrijeme " + + "na ostrvu Fernando di Noronja\x1fSeverna Marijanska Ostrva vreme\x14Novo" + + "sibirsko vrijeme\x1fNovosibirsko standardno vrijeme\x1bNovosibirsko ljet" + + "no vrijeme\x0dOmsko vrijeme\x18Omsko standardno vrijeme\x14Omsko ljetno " + + "vrijeme\x13Pakistansko vrijeme\x1ePakistansko standardno vrijeme\x1aPaki" + + "stansko ljetno vrijeme\x17Vrijeme na Ostrvu Palau\x1eVrijeme na Papui No" + + "voj Gvineji\x13Paragvajsko vrijeme\x1eParagvajsko standardno vrijeme\x1a" + + "Paragvajsko ljetno vrijeme\x11Peruansko vrijeme\x1cPeruansko standardno " + + "vrijeme\x18Peruansko ljetno vrijeme\x12Filipinsko vrijeme\x1dFilipinsko " + + "standardno vrijeme\x19Filipinsko ljetno vrijeme\x1aVrijeme na Ostrvima F" + + "iniks&Vrijeme na Ostrvima Sen Pjer i Mikelon1Standardno vrijeme na Ostrv" + + "ima Sen Pjer i Mikelon-Ljetno vrijeme na Ostrvima Sen Pjer i Mikelon\x19" + + "Vrijeme na Ostrvu Pitkern\x18Vrijeme na Ostrvu Ponape\x14Pjongjanško vri" + + "jeme\x0fKizilorda vreme\x1aKizilorda standardno vreme#Kizilorda letnje r" + + "ačunanje vremena\x12Reunionsko vrijeme\x17Vrijeme stanice Rothera\x12Sah" + + "alinsko vrijeme\x1dSahalinsko standardno vrijeme\x19Sahalinsko ljetno vr" + + "ijeme\x0cSamara vreme\x17Samara standardno vreme Samara letnje računanje" + + " vremena\x11Samoansko vrijeme\x1cSamoansko standardno vrijeme\x18Samoans" + + "ko ljetno vrijeme\x12Sejšelsko vrijeme\x1eSingapursko standardno vrijeme" + + "\x1fVrijeme na Solomonskim ostrvima\x1bJužnodžordžijsko vrijeme\x12Surin" + + "amsko vrijeme\x15Vrijeme stanice Syowa\x13Tahićansko vrijeme\x11Tajpejsk" + + "o vrijeme\x1cTajpejsko standardno vrijeme\x18Tajpejsko ljetno vrijeme" + + "\x17Tadžikistansko vrijeme\x19Vrijeme na Ostrvu Tokelau\x11Tongansko vri" + + "jeme\x1cTongansko standardno vrijeme\x18Tongansko ljetno vrijeme\x0fČučk" + + "o vrijeme\x17Turkmenistansko vrijeme\x22Turkmenistansko standardno vrije" + + "me\x1eTurkmenistansko ljetno vrijeme\x13Tuvaluansko vrijeme\x12Urugvajsk" + + "o vrijeme\x1dUrugvajsko standardno vrijeme\x19Urugvajsko ljetno vrijeme" + + "\x15Uzbekistansko vrijeme Uzbekistansko standardno vrijeme\x1cUzbekistan" + + "sko ljetno vrijeme\x14Vanuatuansko vrijeme\x1fVanuatuansko standardno vr" + + "ijeme\x1bVanuatuansko ljetno vrijeme\x15Venecuelansko vrijeme\x16Vladivo" + + "stočko vrijeme!Vladivostočko standardno vrijeme\x1dVladivostočko ljetno " + + "vrijeme\x14Volgogradsko vrijeme\x1fVolgogradsko standardno vrijeme\x1bVo" + + "lgogradsko ljetno vrijeme\x16Vrijeme stanice Vostok\x16Vrijeme na Ostrvu" + + " Vejk\x22Vrijeme na Ostrvima Valis i Futuna\x10Jakutsko vrijeme\x1bJakut" + + "sko standardno vrijeme\x17Jakutsko ljetno vrijeme\x18Jekaterinburško vri" + + "jeme#Jekaterinburško standardno vrijeme\x1fJekaterinburško ljetno vrijem" + + "e\x0dza {0} minuty\x0cza {0} minut\x0eza {0} sekundy\x0dza {0} sekund" + + "\x05marts\x03maj\x06august\x09september\x07oktober\x08november\x08decemb" + + "er\x03maj\x04měr\x03awg\x03now\x05měrc\x05apryl\x05junij\x05julij\x06awg" + + "ust\x08nowember\x0eza {0} minuśe\x0eza {0} minutow\x0fza {0} sekunźe\x0f" + + "za {0} sekundow\x04aŭg\x04mars\x06apríl\x03mai\x06august\x09september" + + "\x08november\x08desember\x03feb\x03mar\x03apr\x03jun\x03jul\x03aug\x03se" + + "p\x03okt\x03nov\x03des\x025.\x026.\x027.\x028.\x029.\x0310.\x0311.\x0312" + + ".\x0313.\x02AD\x06R.O.C.\x0esljedeći pon.\x06GMT{0}\x03GMT\x03mej\x04mej" + + "a\x0eza {0} minuće\x10za {0} sekundźe\x03feb\x03mar\x03apr\x03nov\x04mar" + + "s\x03mai\x04juni\x04juli\x09september\x08november\x08desember\x03mar\x03" + + "sep\x03okt\x03nov\x03des\x04saf.\x06rab. I\x07rab. II\x06jum. I\x07jum. " + + "II\x04raj.\x04sha.\x04ram.\x05shaw.\x09dhuʻl-q.\x09dhuʻl-h.\x09Dhuʻl-H." + + "\x04mars\x05april\x03mai\x04juni\x04juli\x09september\x07oktober\x08nove" + + "mber\x03fev\x03mar\x03abr\x03ago\x03set\x03out\x03dez\x04máj\x04jún\x04j" + + "úl\x05marec\x03maj\x09september\x08november\x08december\x03maj\x03shk" + + "\x03pri\x03maj\x03qer\x03kor\x03gsh\x03sht\x03tet\x04nën\x03dhj\x03maj" + + "\x03pon\x03sre\x05n. e.\x0fsledeće godine\x0aponedeljak\x06utorak\x09čet" + + "vrtak\x05petak\x06subota" + +var bucket14 string = "" + // Size: 8746 bytes + "\x04БЕ\x08Таут\x08Баба\x0aХатор\x0aКиахк\x08Тоба\x0aАмшир\x10Барамхат" + + "\x10Барамуда\x0cБашанс\x0aПаона\x08Епеп\x0aМесра\x08Наси\x10Мескерем\x0c" + + "Текемт\x0aХедар\x0cТахсас\x06Тер\x0eЈекатит\x0eМегабит\x0cМиазиа\x0cГен" + + "бот\x08Сене\x0aХамле\x0cНехасе\x0eПагумен\x0cd.M.y. GGGGG\x0cјануар\x0e" + + "фебруар\x08март\x0aаприл\x06мај\x08јуни\x08јули\x0cавгуст\x12септембар" + + "\x0eоктобар\x10новембар\x10децембар\x02ј\x02ф\x02м\x02а\x02с\x02о\x02н" + + "\x02д\x06нед\x06пон\x06уто\x06сри\x06чет\x06пет\x06суб\x0cнедеља\x12поне" + + "дељак\x0cуторак\x0eсриједа\x10четвртак\x0aпетак\x0cсубота\x02п\x02у\x02" + + "ч\x03К1\x03К2\x03К3\x03К4\x1dПрво тромесечје\x1fДруго тромесечје\x1fТре" + + "ће тромесечје#Четврто тромесечје\x11пре подне\x0eпоподне\x16Пре нове ер" + + "е\x0fНове ере\x0bп. н. е.\x07н. е.\x09п.н.е.\x06н.е.\x11EEEE, dd. MMMM " + + "y.\x0bdd. MMMM y.\x08dd.MM.y.\x0aТишри\x0cХешван\x0cКислев\x0aТевет\x0aШ" + + "еват\x0aАдар I\x08Адар\x0bАдар II\x0aНисан\x08Ијар\x0aСиван\x0aТамуз" + + "\x04Ав\x08Елул\x0cЧаитра\x0eВаисака\x0eЈиаиста\x0aАсада\x0eСравана\x0aБа" + + "дра\x0cАсвина\x0eКартика\x10Аргајана\x0aПауза\x08Мага\x0eФалгуна\x08САК" + + "А\x07Мух.\x07Саф.\x09Реб. 1\x09Реб. 2\x09Џум. 1\x09Џум. 2\x07Реџ.\x05Ша" + + ".\x07Рам.\x05Ше.\x0aЗул-к.\x0aЗул-х.\x0eМурахам\x0aСафар\x0cРабиʻ I\x0dР" + + "абиʻ II\x0eЈумада I\x0fЈумада II\x0aРађаб\x0cШаʻбан\x0eРамадан\x0aШавал" + + "\x13Дуʻл-Киʻда\x11Дуʻл-хиђа\x0eМухарем\x0aСафер\x0aРеби 1\x0aРеби 2\x0eЏ" + + "умаде 1\x0eЏумаде 2\x0aРеџеб\x0eРамазан\x0aШевал\x0fЗул-каде\x0fЗул-хиџ" + + "е\x04АХ\x16Таика (645–650)\x18Хакучи (650–671)\x18Хакухо (672–686)\x14Ш" + + "учо (686–701)\x16Таихо (701–704)\x16Кеиун (704–708)\x14Вадо (708–715)" + + "\x16Реики (715–717)\x14Јоро (717–724)\x16Јинки (724–729)\x18Темпио (729–" + + "749)!Темпио-кампо (749-749)\x1fТемпио-шохо (749-757)\x1fТемпио-хођи (757" + + "-765)\x1fТемпо-ђинго (765-767)\x1fЂинго-кеиун (767-770)\x14Хоки (770–780" + + ")\x13Тен-о (781-782)\x1aЕнрјаку (782–806)\x16Даидо (806–810)\x16Конин (8" + + "10–824)\x16Тенчо (824–834)\x14Шова (834–848)\x14Кајо (848–851)\x14Нињу (" + + "851–854)\x16Саико (854–857)\x16Тенан (857–859)\x16Јоган (859–877)\x18Ген" + + "кеи (877–885)\x14Ниња (885–889)\x18Кампјо (889–898)\x16Шотаи (898–901)" + + "\x14Енђи (901–923)\x14Енчо (923–931)\x16Шохеи (931–938)\x18Тенгјо (938–9" + + "47)\x1cТенриаку (947–957)\x1aТентоку (957–961)\x12Ова (961–964)\x14Кохо " + + "(964–968)\x12Ана (968–970)\x1aТенроку (970–973)\x15Тен-ен (973-976)\x16Ј" + + "оген (976–978)\x18Тенген (978–983)\x16Еикан (983–985)\x14Кана (985–987)" + + "\x13Еи-ен (987-989)\x14Еисо (989–990)\x1aШорјаку (990–995)\x18Чотоку (99" + + "5–999)\x15Чохо (999–1004)\x18Канко (1004–1012)\x16Чова (1012–1017)\x18Ка" + + "нин (1017–1021)\x16Ђиан (1021–1024)\x16Мању (1024–1028)\x18Чоген (1028–" + + "1037)\x1cЧорјаку (1037–1040)\x18Чокју (1040–1044)\x1cКантоку (1044–1046)" + + "\x16Еишо (1046–1053)\x18Тенђи (1053–1058)\x18Кохеи (1058–1065)\x1cЂирјак" + + "у (1065–1069)\x18Енкју (1069–1074)\x16Шохо (1074–1077)\x1cШорјаку (1077" + + "–1081)\x16Еишо (1081–1084)\x18Отоку (1084–1087)\x18Канђи (1087–1094)" + + "\x16Кахо (1094–1096)\x16Еичо (1096–1097)\x1aШотоку (1097–1099)\x16Кова (" + + "1099–1104)\x16Чођи (1104–1106)\x16Кашо (1106–1108)\x18Тенин (1108–1110)" + + "\x17Тен-еи (1110-1113)\x18Еикју (1113–1118)\x17Ђен-еи (1118-1120)\x16Хоа" + + "н (1120–1124)\x18Тенђи (1124–1126)\x18Даиђи (1126–1131)\x18Теншо (1131–" + + "1132)\x18Чошао (1132–1135)\x16Хоен (1135–1141)\x16Еиђи (1141–1142)\x16Ко" + + "ђи (1142–1144)\x16Тењо (1144–1145)\x18Кјуан (1145–1151)\x1aНинпеи (1151" + + "–1154)\x18Кјују (1154–1156)\x18Хоген (1156–1159)\x18Хеиђи (1159–1160)" + + "\x1cЕирјаку (1160–1161)\x14Охо (1161–1163)\x18Чокан (1163–1165)\x18Еиман" + + " (1165–1166)\x17Нин-ан (1166-1169)\x14Као (1169–1171)\x16Шоан (1171–1175" + + ")\x18Анген (1175–1177)\x16Ђишо (1177–1181)\x16Јова (1181–1182)\x16Ђуеи (" + + "1182–1184)\x1eГенрјуку (1184–1185)\x18Бунђи (1185–1190)\x1aКенкју (1190–" + + "1199)\x16Шођи (1199–1201)\x18Кенин (1201–1204)\x1aГенкју (1204–1206)\x17" + + "Кен-еи (1206-1207)\x18Шоген (1207–1211)\x1eКенрјаку (1211–1213)\x18Кенп" + + "о (1213–1219)\x18Шокју (1219–1222)\x12Ђу (1222–1224)\x18Ђенин (1224–122" + + "5)\x1aКароку (1225–1227)\x18Антеи (1227–1229)\x18Канки (1229–1232)\x16Ђо" + + "еи (1232–1233)\x1cТемпуку (1233–1234)\x1eБунрјаку (1234–1235)\x18Катеи " + + "(1235–1238)\x1eРјакунин (1238–1239)\x13Ен-о (1239-1240)\x16Нињи (1240–12" + + "43)\x1aКанген (1243–1247)\x16Хођи (1247–1249)\x18Кенчо (1249–1256)\x18Ко" + + "ген (1256–1257)\x16Шока (1257–1259)\x18Шоген (1259–1260)\x15Бун-о (1260" + + "-1261)\x16Кочо (1261–1264)\x17Бун-еи (1264-1275)\x18Кенђи (1275–1278)" + + "\x16Коан (1278–1288)\x12Шу (1288–1293)\x18Еинин (1293–1299)\x16Шоан (129" + + "9–1302)\x1aКенген (1302–1303)\x18Каген (1303–1306)\x1aТокуђи (1306–1308)" + + "\x18Енкеи (1308–1311)\x14Очо (1311–1312)\x16Шова (1312–1317)\x18Бунпо (1" + + "317–1319)\x16Ђено (1319–1321)\x1aЂенкјо (1321–1324)\x16Шочу (1324–1326)" + + "\x1aКареки (1326–1329)\x1cГентоку (1329–1331)\x18Генко (1331–1334)\x16Ке" + + "му (1334–1336)\x18Енген (1336–1340)\x1aКококу (1340–1346)\x18Шохеи (134" + + "6–1370)\x1cКентоку (1370–1372)\x16Бучу (1372–1375)\x16Тењу (1375–1379)" + + "\x1cКорјаку (1379–1381)\x16Кова (1381–1384)\x18Генчу (1384–1392)\x1cМеит" + + "оку (1384–1387)\x18Какеи (1387–1389)\x12Ку (1389–1390)\x1cМеитоку (1390" + + "–1394)\x14Оеи (1394–1428)\x16Шочо (1428–1429)\x18Еикјо (1429–1441)\x1c" + + "Какитсу (1441–1444)\x17Бун-ан (1444-1449)\x1aХотоку (1449–1452)\x1cКјот" + + "оку (1452–1455)\x16Кошо (1455–1457)\x1aЧороку (1457–1460)\x18Каншо (146" + + "0–1466)\x18Буншо (1466–1467)\x16Онин (1467–1469)\x1aБунмеи (1469–1487)" + + "\x18Чокјо (1487–1489)\x1aЕнтоку (1489–1492)\x16Меио (1492–1501)\x18Бунки" + + " (1501–1504)\x16Еишо (1504–1521)\x18Таиеи (1521–1528)\x1cКјороку (1528–1" + + "532)\x1aТенмон (1532–1555)\x16Кођи (1555–1558)\x1aЕироку (1558–1570)\x18" + + "Генки (1570–1573)\x18Теншо (1573–1592)\x1cБунроку (1592–1596)\x18Кеичо " + + "(1596–1615)\x18Генва (1615–1624)\x17Кан-еи (1624-1644)\x16Шохо (1644–164" + + "8)\x18Кеиан (1648–1652)\x12Шу (1652–1655)\x1eМеирјаку (1655–1658)\x16Мањ" + + "и (1658–1661)\x1aКанбун (1661–1673)\x16Енпо (1673–1681)\x18Тенва (1681–" + + "1684)\x18Јокјо (1684–1688)\x1cГенроку (1688–1704)\x16Хоеи (1704–1711)" + + "\x1aШотоку (1711–1716)\x18Кјохо (1716–1736)\x1aГенбун (1736–1741)\x18Кан" + + "по (1741–1744)\x18Енкјо (1744–1748)\x17Кан-ен (1748-1751)\x1cХорјаку (1" + + "751–1764)\x18Меива (1764–1772)\x15Ан-еи (1772-1781)\x1aТенмеи (1781–1789" + + ")\x1aКансеи (1789–1801)\x18Кјова (1801–1804)\x18Бунка (1804–1818)\x1aБун" + + "сеи (1818–1830)\x18Тенпо (1830–1844)\x16Кока (1844–1848)\x16Каеи (1848–" + + "1854)\x18Ансеи (1854–1860)\x17Ман-ен (1860-1861)\x1aБункју (1861–1864)" + + "\x18Генђи (1864–1865)\x18Кеико (1865–1868)\x0aМеиђи\x0aТаишо\x08Шова\x0c" + + "Хаисеи\x08M/d/yy G\x12Фаравадин\x14Ордибехешт\x0cКордад\x06Тир\x0cМорда" + + "д\x10Шахривар\x08Мехр\x08Абан\x08Азар\x06Деј\x0cБахман\x0cЕсфанд\x04АП" + + "\x0bПре РК\x04РК\x19Прошле године\x13Ове године\x1bСледеће године\x15за " + + "{0} годину\x15за {0} године\x15за {0} година\x17пре {0} годину\x17пре {0" + + "} године\x17пре {0} година\x1bПрошлог месеца\x15Овог месеца\x1dСледећег " + + "месеца\x13за {0} месец\x15за {0} месеца\x15за {0} месеци\x15пре {0} мес" + + "ец\x17пре {0} месеца\x17пре {0} месеци\x19Прошле недеље\x13Ове недеље" + + "\x1bСледеће недеље\x15за {0} недељу\x15за {0} недеље\x15за {0} недеља" + + "\x02в\x15за {0} години\x0cЯкатит\x0eМагабит\x0cМиазия\x08Сэнэ\x0aХамлэ" + + "\x0cНахасэ\x10Эпагомен\x0aАмшир\x10Барамхат\x08Наси\x08март\x0aаприл\x06" + + "мај\x06јун\x06јул\x0cавгуст\x06мај\x06јун\x06јул\x06сре\x0aсреда\x06н.е" + + ".\x0cХешван\x0cКислев\x0aТевет\x0aШеват\x0aАдар I\x08Адар\x0bАдар II\x0a" + + "Нисан\x0aСиван\x04Ав\x0eСравана\x0eКартика\x0aПауза\x0aСафар\x0eРамадан" + + "\x14Ордибехешт\x06Тир\x0cМордад\x08Мехр\x08Абан\x0cБахман\x02л\x02б\x02к" + + "\x02т\x02ж\x02г" + +var bucket15 string = "" + // Size: 27536 bytes + "\x17пре {0} недељу\x17пре {0} недеље\x17пре {0} недеља\x06дан\x10прекјуч" + + "е\x08јуче\x0aданас\x0aсутра\x14прекосутра\x0fза {0} дан\x11за {0} дана" + + "\x11пре {0} дан\x13пре {0} дана\x16дан у недељи пре подне/поподне\x0fза " + + "{0} сат\x11за {0} сата\x11за {0} сати\x11пре {0} сат\x13пре {0} сата\x13" + + "пре {0} сати\x0aминут\x13за {0} минут\x15за {0} минута\x15пре {0} минут" + + "\x17пре {0} минута\x0cсекунд\x15за {0} секунд\x17за {0} секунде\x17за {0" + + "} секунди\x17пре {0} секунд\x19пре {0} секунде\x19пре {0} секунди\x08зон" + + "а\x1dВреме у земљи: {0}\x13Акре време(Акре стандардно време3Акре летње " + + "рачунање времена%Авганистанско време,Централно-афричко време(Источно-аф" + + "ричко време$Јужно-афричко време(Западно-афричко време=Западно-афричко с" + + "тандардно времеHЗападно-афричко летње рачунање времена\x17Аљашко време," + + "Аљашко стандардно време\x22Аљашко летње време\x17Алмати време,Алмати ст" + + "андардно време7Алмати летње рачунање времена\x17Амазон време,Амазон ста" + + "ндардно време7Амазон летње рачунање времена\x1dЦентрално време2Централн" + + "о стандардно време=Централно летње рачунање времена\x19Источно време.Ис" + + "точно стандардно време9Источно летње рачунање времена\x1dПланинско врем" + + "е2Планинско стандардно време=Планинско летње рачунање времена\x1dПацифи" + + "чко време2Пацифичко стандардно време=Пацифичко летње рачунање времена" + + "\x17Анадир време,Анадир стандардно време7Анадир летње рачунање времена" + + "\x19Акватау време.Акватау стандардно време9Акватау летње рачунање времен" + + "а\x19Акутобе време.Акутобе стандардно време9Акутобе летње рачунање врем" + + "ена\x1dАрабијско време2Арабијско стандардно време=Арабијско летње рачун" + + "ање времена\x1dАргентина време2Аргентина стандардно време=Аргентина лет" + + "ње рачунање времена,Западна Аргентина времеAЗападна Аргентина стандардн" + + "о времеLЗападна Аргентина летње рачунање времена\x1bАрменија време0Арме" + + "нија стандардно време;Арменија летње рачунање времена\x1bАтланско време" + + "0Атланско стандардно време9Атланско лтње рачунање времена6Аустралијско ц" + + "ентрално времеKАустралијско централно стандардно времеVАустралијско цен" + + "трално летње рачунање временаEАустралијско централно западно времеZАуст" + + "ралијско централно западно стандардно времеeАустралијско централно запа" + + "дно летње рачунање времена2Аустралијско источно времеGАустралијско исто" + + "чно стандардно времеRАустралијско источно летње рачунање времена2Аустра" + + "лијско западно времеGАустралијско западно стандардно времеRАустралијско" + + " западно летње рачунање времена\x1fАзербејџан време4Азербејџан стандардн" + + "о време?Азербејџан летње рачунање времена\x15Азори време*Азори стандард" + + "но време5Азори летње рачунање времена\x1dБангладеш време2Бангладеш стан" + + "дардно време=Бангладеш летње рачунање времена\x15Бутан време\x1bБоливиј" + + "а време\x1dБразилија време2Бразилија стандардно време=Бразилија летње р" + + "ачунање времена*Брунеј Дарусалум време!Зелениртско време6Зелениртско ст" + + "андардно времеAЗеленортско летње рачунање времена\x17Чаморо време\x15Ча" + + "там време*Чатам стандардно време5Чатам летње рачунање времена\x13Чиле в" + + "реме(Чиле стандардно време3Чиле летње рачунање времена\x13Кина време.Ки" + + "неско стандардно време3Кина летње рачунање времена\x1dЧојбалсан време2Ч" + + "ојбалсан стандардно време=Чојбалсан летње рачунање времена&Божићна остр" + + "ва време1Кокос (Келинг) Острва време\x1dКолумбија време2Колумбија станд" + + "ардно време=Колумбија летње рачунање времена$Кукова острва време9Кукова" + + " острва стандардно времеMКукова острва полу-летње рачунање времена\x13Ку" + + "ба време(Куба стандардно време3Куба летње рачунање времена\x17Дејвис вр" + + "еме%Димон д’Урвил време$Источни тимор време&Ускршња острва време;Ускршњ" + + "а острва стандардно времеFУскршња острва летње рачунање времена\x19Еква" + + "дор време'Средњеевропско време<Средњеевропско стандардно времеGСредњеев" + + "ропско летње рачунање времена)Источноевропско време>Источноевропско ста" + + "ндардно времеIИсточноевропско летње рачунање времена)Западноевропско вр" + + "еме>Западноевропско стандардно времеIЗападноевропско летње рачунање вре" + + "мена.Фолкландска Острва времеCФолкландска Острва стандардно времеNФолкл" + + "андска Острва летње рачунање времена\x13Фиџи време(Фиџи стандардно врем" + + "е3Фиџи летње рачунање времена,Француска Гвајана времеBФранцуско јужно и" + + " антарктичко време\x1dГалапагос време\x1bГамбијер време\x19Грузија време" + + ".Грузија стандардно време9Грузија летње рачунање времена&Гилберт острва " + + "време&Гринвич средње време*Источни Гренланд време?Источни Гренланд стан" + + "дардно времеJИсточни Гренланд летње рачунање времена*Западни Гренланд в" + + "реме?Западни Гренланд стандардно времеJЗападни Гренланд летње рачунање " + + "времена(Гуам стандардно време\x15Залив време\x19Гвајана време,Хавајско-" + + "алеутско времеAХавајско-алеутско стандардно времеLХавајско-алеутско лет" + + "ње рачунање времена\x1cХонг Конг време1Хонг Конг стандардно време?Хонгк" + + "оншко летње рачунање времена\x13Ховд време(Ховд стандардно време3Ховд л" + + "етње рачунање времена0Индијско стандардно време,Индијско океанско време" + + "\x1bИндокина време6Централно-индонезијско време2Источно-индонезијско вре" + + "ме2Западно-индонезијско време\x13Иран време(Иран стандардно време3Иран " + + "летње рачунање времена\x17Иркуцк време,Иркуцк стандардно време7Иркуцк л" + + "етње рачунање времена\x1dИзраелско време2Израелско стандардно време=Изр" + + "аелско летње рачунање времена\x1bЈапанско време0Јапанско стандардно вре" + + "ме;Јапанско летње рачунање времена:Петропавловско-камчатско времеOПетро" + + "павловско-камчатско стандардно времеXПетропавловско-камчатско летње рач" + + "унање вемена2Источно-казахстанско време2Западно-казахстанско време\x17К" + + "ореја време0Корејско стандардно време;Корејско летње рачунање времена" + + "\x15Кошре време!Краснојарск време6Краснојарск стандардно времеAКраснојар" + + "ск летње рачунање времена\x1fКиргизстан време\x1cШри Ланка време Лине О" + + "стрва време\x1aЛорд Хов време/Лорд Хов стандардно време:Лорд Хов летње " + + "рачунање времена\x15Макао време*Макао стандардно време3Макао летње рачу" + + "нање вемена!Макверијско време\x19Магадан време.Магадан стандардно време" + + "7Магадан летње рачунање вемена\x1bМалезија време\x19Малдиви време\x17Мар" + + "киз време*Маршалска Острва време\x1fМаурицијус време4Маурицијус стандар" + + "дно време?Маурицијус летње рачунање времена\x15Мосон време\x1eУлан Бато" + + "р време3Улан Батор стандардно време>Улан Батор летње рачунање времена" + + "\x17Москва време,Москва стандардно време7Москва летње рачунање времена" + + "\x1bМијанмар време\x15Науру време\x15Непал време(Нова Каледонија време=Н" + + "ова Каледонија стандардно времеHНова Каледонија летње рачунање времена " + + "Нови Зеланд време5Нови Зеланд стандардно време@Нови Зеланд летње рачуна" + + "ње времена!Њуфаундленд време6Њуфаундленд стандардно времеAЊуфаундленд л" + + "етње рачунање времена\x13Ниуе време&Норфолк Острво време-Фернандо де Но" + + "роња времеBФернандо де Нороња стандардно времеMФернандо де Нороња летње" + + " рачунање времена;Северна Маријанска Острва време!Новосибирск време6Ново" + + "сибирск стандардно времеAНовосибирск летње рачунање времена\x13Омск вре" + + "ме(Омск стандардно време3Омск летње рачунање времена\x1bПакистан време0" + + "Пакистан стандардно време;Пакистан летње рачунање времена\x15Палау врем" + + "е-Папуа Нова Гвинеја време\x1bПарагвај време0Парагвај стандардно време;" + + "Парагвај летње рачунање времена\x13Перу време(Перу стандардно време3Пер" + + "у летње рачунање времена\x1bФилипини време0Филипини стандардно време;Фи" + + "липини летње рачунање времена$Феникс острва време,Сен Пјер и Микелон вр" + + "емеAСен Пјер и Микелон стандардно времеJСен Пјер и Микелон летње рачуна" + + "ње вемена\x19Питкерн време\x17Понапе време\x1dКизилорда време2Кизилорда" + + " стандардно време=Кизилорда летње рачунање времена\x19Реинион време\x17Р" + + "отера време\x19Сахалин време.Сахалин стандардно време9Сахалин летње рач" + + "унање времена\x17Самара време,Самара стандардно време7Самара летње рачу" + + "нање времена\x15Самоа време*Самоа стандардно време5Самоа летње рачунање" + + " времена\x19Сејшели време0Сингапур стандардно време,Соломонска Острва вр" + + "еме$Јужна Џорџија време\x19Суринам време\x13Шова време\x17Тахити време" + + "\x17Таипеи време*Таипеи стандардно веме7Таипеи летње рачунање времена" + + "\x1fТаџикистан време\x19Токелау време\x15Тонга време*Тонга стандардно вр" + + "еме5Тонга летње рачунање времена\x13Трук време#Туркменистан време8Туркм" + + "енистан стандардно времеCТуркменистан летње рачунање времена\x17Тувалу " + + "време\x19Уругвај време.Уругвај стандардно време9Уругвај летње рачунање " + + "времена\x1fУзбекистан време4Узбекистан стандардно време?Узбекистан летњ" + + "е рачунање времена\x19Вануату време.Вануату стандардно време9Вануату ле" + + "тње рачунање времена\x1dВенецуела време!Владивосток време6Владивосток с" + + "тандардно времеAВладивосток летње рачунање времена\x1dВолгоград време2В" + + "олгоград стандардно време=Волгоград летње рачунање времена\x17Восток вр" + + "еме Вејк острво време2Валис и Футуна Острва време\x19Јакутск време.Јаку" + + "тск стандардно време9Јакутск летње рачунање времена%Јекатеринбург време" + + ":Јекатеринбург стандардно времеEЈекатеринбург летње рачунање времена\x15" + + "за {0} минути$Време во Авганистан+Средноафриканско време-Источноафрикан" + + "ско времеAВреме во Јужноафриканска Република-Западноафриканско времеBЗа" + + "падноафриканско стандардно време\x1cВреме во Аљаска1Стандардно време во" + + " Аљаска\x1cВреме во Амазон1Стандардно време во Амазон@Централно време во" + + " Северна АмерикаUЦентрално стандардно време во Северна Америка\x1dАнадир" + + "ско време2Анадирско стандардно време\x1aВреме во Апија/Стандардно време" + + " во Апија\x19Арапско време.Стандардно арапско време\x22Време во Аргентин" + + "а7Стандардно време во Аргентина1Време во западна АргентинаFСтандардно в" + + "реме во западна Аргентина Време во Ерменија5Стандардно време во Ермениј" + + "а\x1dАтлантско време2Атлантско стандардно време7Време во Централна Авст" + + "ралијаLСтандардно време во Централна АвстралијаIВреме во Централна и За" + + "падна Австралија^Стандардно време во Централна и Западна Австралија3Вре" + + "ме во Источна АвстралијаHСтандардно време во Источна Австралија3Време в" + + "о Западна АвстралијаHСтандардно време во Западна Австралија$Време во Аз" + + "ербејџан9Стандардно време во Азербејџан\x1cВреме во Азорес1Стандардно в" + + "реме во Азорес\x22Време во Бангладеш7Стандардно време во Бангладеш\x1aВ" + + "реме во Бутан Време во Боливија\x22Време во Бразилија7Стандардно време " + + "во Бразилија/Време во Брунеи Дарусалам(Време на Зелениот ‘Рт=Стандардно" + + " време на Зелениот ‘Рт\x1cВреме во Чаморо\x1aВреме во Четем/Стандардно в" + + "реме во Четем\x18Време во Чиле-Стандардно време во Чиле\x18Време во Кин" + + "а-Стандардно време во Кина\x22Време во Чојбалсан7Стандардно време во Чо" + + "јбалсан/Време на Божиќниот остров3Време на Кокосовите Острови\x22Време " + + "во Колумбија7Стандардно време во Колумбија)Време на островите Кук>Станд" + + "ардно време на Островите Кук\x18Време во Куба-Стандардно време во Куба" + + "\x1cВреме во Дејвис'Време во Димон-дурвил)Време во Источен Тимор7Време н" + + "а Велигденскиот ОстровLСтандардно време на Велигденскиот Остров\x1eВрем" + + "е во Еквадор'Средноевропско време<Средноевропско стандардно време'Калин" + + "инградско време9Време на Фолкландските ОстровиNСтандардно време на Фолк" + + "ландските Острови\x18Време во Фиџи-Стандардно време во Фиџи1Време во Фр" + + "анцуска Гвајана\x22Време во Галапагос\x1aВреме во Гамбе\x1eВреме во Гру" + + "зија3Стандардно време во Грузија1Време на Островите Гилберт)Средно врем" + + "е по Гринич/Време во Источен ГренландDСтандардно време во Источен Гренл" + + "анд/Време во Западен ГренландDСтандардно време во Западен Гренланд5Врем" + + "е на Мексиканскиот Залив\x1eВреме во Гвајана<Време во Хаваи - Алеутски " + + "островиQСтандардно време во Хаваи - Алеутски острови!Време во Хонг Конг" + + "6Стандардно време во Хонг Конг\x18Време во Ховд-Стандардно време во Ховд" + + "\x1cВреме во Индија)Време на Индиски океан Време во Индокина7Време во Це" + + "нтрална Индонезија3Време во Источна Индонезија3Време во Западна Индонез" + + "ија\x18Време во Иран-Стандардно време во Иран\x1eВреме во Иркутск3Станд" + + "ардно време во Иркутск\x1cВреме во Израел1Стандардно време во Израел Вр" + + "еме во Јапонија5Стандардно време во Јапонија1Време во Источен Казахстан" + + "1Време во Западен Казахстан\x1cВреме во Кореја1Стандардно време во Кореј" + + "а\x1aВреме во Косра&Време во Краснојарск;Стандардно време во Краснојарс" + + "к\x22Време во Киргистан-Време во Линиски Острови\x1fВреме во Лорд Хау4С" + + "тандардно време во Лорд Хау/Време на Островот Макуари\x1eВреме во Магад" + + "ан3Стандардно време во Магадан Време во Малезија\x1eВреме на Малдиви Вр" + + "еме во Маркесас1Време на Маршалски острови\x22Време на Маврициус7Станда" + + "рдно време на Маврициус\x1aВреме во Мосон9Време во северозападно Мексик" + + "оNСтандардно време во северозападно Мексико7Тихоокеанско време во Мекси" + + "коLСтандардно тихоокеанско време во Мексико#Време во Улан Батор8Стандар" + + "дно време во Улан Батор\x1cВреме во Москва1Стандардно време во Москва" + + "\x1eВреме во Мјанмар\x1aВреме во Науру\x1aВреме во Непал-Време во Нова К" + + "аледонијаBСтандардно време во Нова Каледонија#Време во Нов Зеланд8Станд" + + "ардно време во Нов Зеланд&Време на Њуфаундленд;Стандардно време на Њуфа" + + "ундленд\x18Време во Ниуе1Време на Островите Норфолк2Време на Фернандо д" + + "е НороњаGСтандардно време на Фернандо де Нороња&Време во Новосибирск;Ст" + + "андардно време во Новосибирск\x18Време во Омск-Стандардно време во Омск" + + " Време во Пакистан5Стандардно време во Пакистан\x1aВреме во Палау2Време " + + "во Папуа Нова Гвинеја Време во Парагвај5Стандардно време во Парагвај" + + "\x18Време во Перу-Стандардно време во Перу Време во Филипини5Стандардно " + + "време во Филипини/Време на Островите Феникс8Време на на Сент Пјер и Мик" + + "еланHСтандардно време на Сент Пјер и Микелан\x1eВреме во Питкерн\x1cВре" + + "ме во Понапе\x12Пјонгјанг Време на Ријунион\x1cВреме во Ротера\x1eВреме" + + " во Сакалин3Стандардно време во Сакалин\x1aВреме во Самоа/Стандардно вре" + + "ме во Самоа\x1eВреме на Сејшели Време во Сингапур7Време на Соломонските" + + " острови)Време во Јужна Грузија\x1eВреме во Суринам\x1cВреме во Сајова" + + "\x1cВреме во Тахити\x1cВреме во Таипеи1Стандардно време во Таипеи$Време " + + "во Таџикистан\x1eВреме во Токелау\x1aВреме во Тонга/Стандардно време во" + + " Тонга\x18Време во Чуук(Време во Туркменистан=Стандардно време во Туркме" + + "нистан\x1cВреме во Тувалу\x1eВреме во Уругвај3Стандардно време во Уругв" + + "ај$Време во Узбекистан9Стандардно време во Узбекистан\x1eВреме во Вануа" + + "ту3Стандардно време во Вануату\x22Време во Венецуела&Време во Владивост" + + "ок;Стандардно време во Владивосток\x22Време во Волгоград7Стандардно вре" + + "ме во Волгоград\x1cВреме во Восток)Време на островот Вејк*Време во Вали" + + "с и Футуна\x1eВреме во Јакутск3Стандардно време во Јакутск(Време во Ека" + + "теринбург=Стандардно време во Екатеринбург\x1fАвганистан време\x0cАљаск" + + "а-Аљаска, стандардно време8Аљаска, летње рачунање времена<Северноамерич" + + "ко централно времеQСеверноамеричко централно стандардно времеGСеверноам" + + "еричко централно летње време8Северноамеричко источно времеMСеверноамери" + + "чко источно стандардно времеCСеверноамеричко источно летње време<Северн" + + "оамеричко планинско времеQСеверноамеричко планинско стандардно времеGСе" + + "верноамеричко планинско летње време<Северноамеричко пацифичко времеQСев" + + "ерноамеричко пацифичко стандардно времеGСеверноамеричко пацифичко летње" + + " време\x15Апија време*Апија стандардно време5Апија летње рачунање времен" + + "а\x1dЈерменија време2Јерменија стандардно време=Јерменија летње рачунањ" + + "е времена=Атлантско летње рачунање времена.Зеленортска Острва времеCЗел" + + "енортска Острва стандардно времеNЗеленортска Острва летње рачунање врем" + + "ена&Божићно острво време даљи исток Европе\x19Гамбије време+Средње врем" + + "е по Гриничу\x1bЗаливско време<Хонг Конг летње рачунање временаZПетропа" + + "вловско-камчатско летње рачунање времена\x1bКорејско време\x1dКиргистан" + + " време Острва Лајн време5Макао летње рачунање времена&Острво Маквери вре" + + "ме9Магадан летње рачунање времена)Северозападни МексикоIСеверозападни М" + + "ексико стандардно времеTСеверозападни Мексико летње рачунање времена" + + "\x1fМексички Пацифик?Мексички Пацифик стандардно времеJМексички Пацифик " + + "летње рачунање временаLСен Пјер и Микелон летње рачунање времена\x17Пон" + + "пеј време!Пјонгјаншко време\x17Тајпеј време,Тајпеј стандардно време\x22" + + "Тајпеј летње време\x13Чуук време" + +var bucket16 string = "" + // Size: 11555 bytes + "\x02eB\x11EEEE, dd MMMM y G\x10EEEE, dd MMMM UU\x08d MMMM U\x07d MMM U" + + "\x14EEEE d MMMM 'de' y G\x07d/M/y G\x07de gen.\x08de febr.\x08de març" + + "\x08d’abr.\x07de maig\x07de juny\x07de jul.\x07d’ag.\x07de set.\x08d’oct" + + ".\x07de nov.\x07de des.\x02GN\x02FB\x03MÇ\x02AB\x02MG\x02JN\x02JL\x02AG" + + "\x02ST\x02OC\x02NV\x02DS\x08de gener\x09de febrer\x09d’abril\x09de julio" + + "l\x09d’agost\x0bde setembre\x0bd’octubre\x0bde novembre\x0bde desembre" + + "\x04gen.\x05febr.\x05març\x04abr.\x04maig\x04juny\x04jul.\x03ag.\x04set." + + "\x04oct.\x04nov.\x04des.\x05gener\x06febrer\x05abril\x06juliol\x05agost" + + "\x08setembre\x07octubre\x08novembre\x08desembre\x03dg.\x03dl.\x03dt.\x03" + + "dc.\x03dj.\x03dv.\x03ds.\x02dg\x02dl\x02dt\x02dc\x02dj\x02dv\x02ds\x08di" + + "umenge\x07dilluns\x07dimarts\x08dimecres\x06dijous\x09divendres\x08dissa" + + "bte\x0c1r trimestre\x0c2n trimestre\x0c3r trimestre\x0c4t trimestre\x08m" + + "itjanit\x05a. m.\x05p. m.\x08matinada\x05matí\x06migdia\x05tarda\x06vesp" + + "re\x03nit\x04mat.\x02md\x0eabans de Crist\x17abans de l’Era Comuna\x11de" + + "sprés de Crist\x0aEra Comuna\x02aC\x03AEC\x02dC\x02EC\x09dd/MM/y G\x03an" + + "y\x0el’any passat\x07enguany\x0el’any que ve\x13d’aquí a {0} any\x14d’aq" + + "uí a {0} anys\x0afa {0} any\x0bfa {0} anys\x13el trimestre passat\x10aqu" + + "est trimestre\x13el trimestre que ve\x19d’aquí a {0} trimestre\x1ad’aquí" + + " a {0} trimestres\x10fa {0} trimestre\x11fa {0} trimestres\x0fel trim. p" + + "assat\x0caquest trim.\x0fel trim. que ve\x15d’aquí a {0} trim.\x0cfa {0}" + + " trim.\x0ctrim. passat\x0ctrim. vinent\x0del mes passat\x0aaquest mes" + + "\x0del mes que ve\x13d’aquí a {0} mes\x15d’aquí a {0} mesos\x0afa {0} me" + + "s\x0cfa {0} mesos\x0ames passat\x0ames vinent\x07setmana\x12la setmana p" + + "assada\x0faquesta setmana\x11la setmana que ve\x17d’aquí a {0} setmana" + + "\x18d’aquí a {0} setmanes\x0efa {0} setmana\x0ffa {0} setmanes\x12la set" + + "mana del {0}\x05setm.\x10la setm. passada\x0daquesta setm.\x0fla setm. q" + + "ue ve\x15d’aquí a {0} setm.\x0cfa {0} setm.\x0dsetm. passada\x0csetm. vi" + + "nent\x03dia\x0eabans-d’ahir\x04ahir\x04avui\x05demà\x0cdemà passat\x13d’" + + "aquí a {0} dia\x14d’aquí a {0} dies\x0afa {0} dia\x0bfa {0} dies\x11dia " + + "de la setmana\x0fdiumenge passat\x0faquest diumenge\x0fdiumenge que ve" + + "\x18d’aquí a {0} diumenge\x19d’aquí a {0} diumenges\x0ffa {0} diumenge" + + "\x10fa {0} diumenges\x0adg. passat\x0aaquest dg.\x0adg. que ve\x13d’aquí" + + " a {0} dg.\x0afa {0} dg.\x0edilluns passat\x0eaquest dilluns\x0edilluns " + + "que ve\x17d’aquí a {0} dilluns\x0efa {0} dilluns\x0adl. passat\x0aaquest" + + " dl.\x0adl. que ve\x13d’aquí a {0} dl.\x0afa {0} dl.\x0edimarts passat" + + "\x0eaquest dimarts\x0edimarts que ve\x17d’aquí a {0} dimarts\x0efa {0} d" + + "imarts\x0adt. passat\x0aaquest dt.\x0adt. que ve\x13d’aquí a {0} dt.\x0a" + + "fa {0} dt.\x0fdimecres passat\x0faquest dimecres\x0fdimecres que ve\x18d" + + "’aquí a {0} dimecres\x0ffa {0} dimecres\x0adc. passat\x0aaquest dc." + + "\x0adc. que ve\x13d’aquí a {0} dc.\x0afa {0} dc.\x0ddijous passat\x0daqu" + + "est dijous\x0ddijous que ve\x16d’aquí a {0} dijous\x0dfa {0} dijous\x0ad" + + "j. passat\x0aaquest dj.\x0adj. que ve\x13d’aquí a {0} dj.\x0afa {0} dj." + + "\x10divendres passat\x10aquest divendres\x10divendres que ve\x19d’aquí a" + + " {0} divendres\x10fa {0} divendres\x0adv. passat\x0aaquest dv.\x0adv. qu" + + "e ve\x13d’aquí a {0} dv.\x0afa {0} dv.\x0fdissabte passat\x0faquest diss" + + "abte\x0fdissabte que ve\x18d’aquí a {0} dissabte\x19d’aquí a {0} dissabt" + + "es\x0ffa {0} dissabte\x10fa {0} dissabtes\x0ads. passat\x0aaquest ds." + + "\x0ads. que ve\x13d’aquí a {0} ds.\x0afa {0} ds.\x0ba. m./p. m.\x0caques" + + "ta hora\x14d’aquí a {0} hora\x15d’aquí a {0} hores\x0bfa {0} hora\x0cfa " + + "{0} hores\x11d’aquí a {0} h\x08fa {0} h\x11d‘aquí a {0} h\x05minut\x0caq" + + "uest minut\x15d’aquí a {0} minut\x16d’aquí a {0} minuts\x0cfa {0} minut" + + "\x0dfa {0} minuts\x13d’aquí a {0} min\x0afa {0} min\x05segon\x15d’aquí a" + + " {0} segon\x16d’aquí a {0} segons\x0cfa {0} segon\x0dfa {0} segons\x11d’" + + "aquí a {0} s\x08fa {0} s\x0afus horari\x0cHora de: {0}\x15Horari d’estiu" + + ", {0}\x14Hora estàndard, {0}\x19Temps universal coordinat\x19Hora d’esti" + + "u britànica\x1bHora estàndard d’Irlanda\x16Hora de l’Afganistan\x1bHora " + + "de l’Àfrica Central\x1cHora de l’Àfrica Oriental&Hora estàndard del sud " + + "de l’Àfrica\x1eHora de l’Àfrica Occidental)Hora estàndard de l’Àfrica Oc" + + "cidental(Hora d’estiu de l’Àfrica Occidental\x0fHora d’Alaska\x1aHora es" + + "tàndard d’Alaska\x19Hora d’estiu d’Alaska\x14Hora de l’Amazones\x1fHora " + + "estàndard de l’Amazones\x1eHora d’estiu de l’Amazones\x22Hora central d’" + + "Amèrica del Nord-Hora estàndard central d’Amèrica del Nord,Hora d’estiu " + + "central d’Amèrica del Nord#Hora oriental d’Amèrica del Nord.Hora estànda" + + "rd oriental d’Amèrica del Nord-Hora d’estiu oriental d’Amèrica del Nord&" + + "Hora de muntanya d’Amèrica del Nord1Hora estàndard de muntanya d’Amèrica" + + " del Nord0Hora d’estiu de muntanya d’Amèrica del Nord\x11Hora del Pacífi" + + "c\x1cHora estàndard del Pacífic\x1bHora d’estiu del Pacífic\x0fHora d’An" + + "adyr\x1aHora estàndard d’Anadyr\x1bHorari d’estiu d’Anadyr\x0dHora d’Api" + + "a\x18Hora estàndard d’Apia\x17Hora d’estiu d’Apia\x0aHora àrab\x15Hora e" + + "stàndard àrab\x14Hora d’estiu àrab\x15Hora de l’Argentina Hora estàndard" + + " de l’Argentina\x1fHora d’estiu de l’Argentina!Hora de l’oest de l’Argen" + + "tina,Hora estàndard de l’oest de l’Argentina+Hora d’estiu de l’oest de l" + + "’Argentina\x11Hora d’Armènia\x1cHora estàndard d’Armènia\x1bHora d’est" + + "iu d’Armènia\x15Hora de l’Atlàntic Hora estàndard de l’Atlàntic\x1fHora " + + "d’estiu de l’Atlàntic\x1bHora d’Austràlia Central&Hora estàndard d’Austr" + + "àlia Central%Hora d’estiu d’Austràlia Central%Hora d’Austràlia centre-o" + + "ccidental0Hora estàndard d’Austràlia centre-occidental/Hora d’estiu d’Au" + + "stràlia centre-occidental\x1cHora d’Austràlia Oriental'Hora estàndard d’" + + "Austràlia Oriental&Hora d’estiu d’Austràlia Oriental\x1eHora d’Austràlia" + + " Occidental)Hora estàndard d’Austràlia Occidental(Hora d’estiu d’Austràl" + + "ia Occidental\x14Hora d’Azerbaidjan\x1fHora estàndard d’Azerbaidjan\x1eH" + + "ora d’estiu d’Azerbaidjan\x13Hora de les Açores\x1eHora estàndard de les" + + " Açores\x1dHora d’estiu de les Açores\x13Hora de Bangla Desh\x1eHora est" + + "àndard de Bangla Desh\x1dHora d’estiu de Bangla Desh\x0eHora de Bhutan" + + "\x10Hora de Bolívia\x11Hora de Brasília\x1cHora estàndard de Brasília" + + "\x1bHora d’estiu de Brasília\x19Hora de Brunei Darussalam\x10Hora de Cap" + + " Verd\x1bHora estàndard de Cap Verd\x1aHora d’estiu de Cap Verd\x10Hora " + + "de Chamorro\x0fHora de Chatham\x1aHora estàndard de Chatham\x19Hora d’es" + + "tiu de Chatham\x0cHora de Xile\x17Hora estàndard de Xile\x16Hora d’estiu" + + " de Xile\x0fHora de la Xina\x1aHora estàndard de la Xina\x19Hora d’estiu" + + " de la Xina\x12Hora de Choibalsan\x1dHora estàndard de Choibalsan\x1cHor" + + "a d’estiu de Choibalsan\x12Hora de Kiritimati\x17Hora de les illes Cocos" + + "\x11Hora de Colòmbia\x1cHora estàndard de Colòmbia\x1bHora d’estiu de Co" + + "lòmbia\x16Hora de les illes Cook!Hora estàndard de les illes Cook#Hora d" + + "e mig estiu de les illes Cook\x0cHora de Cuba\x17Hora estàndard de Cuba" + + "\x16Hora d’estiu de Cuba\x0dHora de Davis\x1aHora de Dumont-d’Urville" + + "\x16Hora de Timor Oriental\x1aHora de l’illa de Pasqua%Hora estàndard de" + + " l’illa de Pasqua$Hora d’estiu de l’illa de Pasqua\x13Hora de l’Equador" + + "\x1aHora del Centre d’Europa%Hora estàndard del Centre d’Europa$Hora d’e" + + "stiu del Centre d’Europa\x1aHora de l’Est d’Europa%Hora estàndard de l’E" + + "st d’Europa$Hora d’estiu de l’Est d’Europa!Hora de l’Extrem Orient Europ" + + "eu\x1bHora de l’Oest d’Europa&Hora estàndard de l’Oest d’Europa%Hora d’e" + + "stiu de l’Oest d’Europa\x1aHora de les illes Malvines%Hora estàndard de " + + "les illes Malvines$Hora d’estiu de les illes Malvines\x0cHora de Fiji" + + "\x17Hora estàndard de Fiji\x16Hora d’estiu de Fiji\x1bHora de la Guaiana" + + " Francesa%Hora d’Antàrtida i França del Sud\x12Hora de Galápagos\x0fHora" + + " de Gambier\x10Hora de Geòrgia\x1bHora estàndard de Geòrgia\x1aHora d’es" + + "tiu de Geòrgia\x19Hora de les illes Gilbert\x1eHora del Meridià de Green" + + "wich\x1eHora de l’Est de Grenlàndia)Hora estàndard de l’Est de Grenlàndi" + + "a(Hora d’estiu de l’Est de Grenlàndia\x1fHora de l’Oest de Grenlàndia*Ho" + + "ra estàndard de l’Oest de Grenlàndia)Hora d’estiu de l’Oest de Grenlàndi" + + "a\x0dHora del Golf\x0eHora de Guyana\x19Hora de Hawaii-Aleutianes$Hora e" + + "stàndard de Hawaii-Aleutianes#Hora d’estiu de Hawaii-Aleutianes\x11Hora " + + "de Hong Kong\x1cHora estàndard de Hong Kong\x1bHora d’estiu de Hong Kong" + + "\x0cHora de Hovd\x17Hora estàndard de Hovd\x16Hora d’estiu de Hovd\x1dHo" + + "ra estàndard de l’Índia\x18Hora de l’oceà Índic\x11Hora d’Indoxina\x1bHo" + + "ra central d’Indonèsia\x1eHora de l’est d’Indonèsia\x1fHora de l’oest d’" + + "Indonèsia\x0dHora d’Iran\x18Hora estàndard d’Iran\x17Hora d’estiu d’Iran" + + "\x10Hora d’Irkutsk\x1bHora estàndard d’Irkutsk\x1aHora d’estiu d’Irkutsk" + + "\x0fHora d’Israel\x1aHora estàndard d’Israel\x19Hora d’estiu d’Israel" + + "\x0eHora del Japó\x19Hora estàndard del Japó\x18Hora d’estiu del Japó" + + "\x11Hora de Kamtxatka-Hora estàndard de Petropavlovsk de Kamtxatka.Horar" + + "i d’estiu de Petropavlovsk de Kamtxatka\x1eHora de l’est del Kazakhstan" + + "\x1fHora de l’oest del Kazakhstan\x0dHora de Corea\x18Hora estàndard de " + + "Corea\x17Hora d’estiu de Corea\x0eHora de Kosrae\x13Hora de Krasnoiarsk" + + "\x1eHora estàndard de Krasnoiarsk\x1dHora d’estiu de Krasnoiarsk\x15Hora" + + " del Kirguizistan\x14Hora de Line Islands\x11Hora de Lord Howe\x1cHora e" + + "stàndard de Lord Howe\x1dHorari d’estiu de Lord Howe\x0dHora de Macau" + + "\x18Hora estàndard de Macau\x17Hora d’estiu de Macau\x11Hora de Macquari" + + "e\x0fHora de Magadan\x1aHora estàndard de Magadan\x19Hora d’estiu de Mag" + + "adan\x11Hora de Malàisia\x14Hora de les Maldives\x15Hora de les Marquese" + + "s\x1aHora de les illes Marshall\x0fHora de Maurici\x1aHora estàndard de " + + "Maurici\x19Hora d’estiu de Maurici\x0eHora de Mawson\x1cHora del nord-oe" + + "st de Mèxic'Hora estàndard del nord-oest de Mèxic&Hora d’estiu del nord-" + + "oest de Mèxic\x1bHora del Pacífic de Mèxic&Hora estàndard del Pacífic de" + + " Mèxic%Hora d’estiu del Pacífic de Mèxic\x13Hora d’Ulan Bator\x1eHora es" + + "tàndard d’Ulan Bator\x1dHora d’estiu d’Ulan Bator\x0eHora de Moscou\x19H" + + "ora estàndard de Moscou\x18Hora d’estiu de Moscou\x0fHora de Myanmar\x0d" + + "Hora de Nauru\x0eHora del Nepal\x17Hora de Nova Caledònia\x22Hora estànd" + + "ard de Nova Caledònia!Hora d’estiu de Nova Caledònia\x14Hora de Nova Zel" + + "anda\x1fHora estàndard de Nova Zelanda\x1eHora d’estiu de Nova Zelanda" + + "\x11Hora de Terranova\x1cHora estàndard de Terranova\x1bHora d’estiu de " + + "Terranova\x0cHora de Niue\x19Hora de les illes Norfolk\x1bHora de Fernan" + + "do de Noronha&Hora estàndard de Fernando de Noronha%Hora d’estiu de Fern" + + "ando de Noronha\x13Hora de Novosibirsk\x1eHora estàndard de Novosibirsk" + + "\x1dHora d’estiu de Novosibirsk\x0dHora d’Omsk\x18Hora estàndard d’Omsk" + + "\x17Hora d’estiu d’Omsk\x11Hora del Pakistan\x1cHora estàndard del Pakis" + + "tan\x1bHora d’estiu del Pakistan\x0dHora de Palau\x19Hora de Papua Nova " + + "Guinea\x11Hora del Paraguai\x1cHora estàndard del Paraguai\x1bHora d’est" + + "iu del Paraguai\x0eHora del Perú\x19Hora estàndard del Perú\x18Hora d’es" + + "tiu del Perú\x11Hora de Filipines\x1cHora estàndard de Filipines\x1bHora" + + " d’estiu de Filipines\x19Hora de les illes Phoenix\x1fHora de Saint-Pier" + + "re i Miquelon*Hora estàndard de Saint-Pierre i Miquelon)Hora d’estiu de " + + "Saint-Pierre i Miquelon\x10Hora de Pitcairn\x0eHora de Ponape\x11Hora de" + + " Pyongyang\x0fHora de Reunió\x0fHora de Rothera\x10Hora de Sakhalin\x1bH" + + "ora estàndard de Sakhalin\x1aHora d’estiu de Sakhalin\x0eHora de Samara" + + "\x19Hora estàndard de Samara\x18Hora d’estiu de Samara\x0dHora de Samoa" + + "\x18Hora estàndard de Samoa\x17Hora d’estiu de Samoa\x16Hora de les Seyc" + + "helles\x10Hora de Singapur\x0fHora de Salomó\x18Hora de Geòrgia del Sud" + + "\x0fHora de Surinam\x0dHora de Syowa\x0fHora de Tahití\x0eHora de Taipei" + + "\x19Hora estàndard de Taipei\x18Hora d’estiu de Taipei\x14Hora del Tadji" + + "kistan\x0fHora de Tokelau\x0dHora de Tonga\x18Hora estàndard de Tonga" + + "\x17Hora d’estiu de Tonga\x0dHora de Chuuk\x15Hora del Turkmenistan Hora" + + " estàndard del Turkmenistan\x1fHora d’estiu del Turkmenistan\x0eHora de " + + "Tuvalu\x13Hora de l’Uruguai\x1eHora estàndard de l’Uruguai\x1dHora d’est" + + "iu de l’Uruguai\x16Hora de l’Uzbekistan!Hora estàndard de l’Uzbekistan H" + + "ora d’estiu de l’Uzbekistan\x0eHora de Vanatu\x19Hora estàndard de Vanat" + + "u\x18Hora d’estiu de Vanatu\x12Hora de Veneçuela\x13Hora de Vladivostok" + + "\x1eHora estàndard de Vladivostok\x1dHora d’estiu de Vladivostok\x11Hora" + + " de Volgograd\x1cHora estàndard de Volgograd\x1bHora d’estiu de Volgogra" + + "d\x0eHora de Vostok\x0cHora de Wake\x17Hora de Wallis i Futuna\x0fHora d" + + "e Iakutsk\x1aHora estàndard de Iakutsk\x19Hora d’estiu de Iakutsk\x15Hor" + + "a d’Ekaterinburg Hora estàndard d’Ekaterinburg\x1fHora d’estiu d’Ekateri" + + "nburg" + +var bucket17 string = "" + // Size: 14666 bytes + "\x06янв\x06фев\x06мар\x06апр\x06май\x06июн\x06июл\x06авг\x06сен\x06окт" + + "\x06ноя\x06дек\x0cянварь\x0eфевраль\x08март\x0cапрель\x08июнь\x08июль" + + "\x0cавгуст\x10сентябрь\x0eоктябрь\x0cноябрь\x0eдекабрь\x15кӀиранан де" + + "\x13оршотан де\x13шинарин де\x13кхаарин де\x0fеарин де\x17пӀераскан де" + + "\x0bшот де\x171-гӀа квартал\x172-гӀа квартал\x173-гӀа квартал\x174-гӀа к" + + "вартал\x06мур\x04шо\x1bдаханчу шарахь\x1bкарарчу шарахь\x1dрогӀерчу шар" + + "ахь\x15{0} шо даьлча\x15{0} шо хьалха\x03ш.\x14{0} ш. даьлча\x14{0} ш. " + + "хьалха\x0eКвартал\x1d{0} квартал яьлча\x1f{0} квартал хьалха\x14{0} кв." + + " яьлча\x16{0} кв. хьалха\x08бутт\x1dбаханчу баттахь\x1dкарарчу баттахь" + + "\x1fрогӀерчу баттахь\x19{0} бутт баьлча\x19{0} бутт хьалха\x07бут.\x14{0" + + "} б. баьлча\x14{0} б. хьалха\x0aкӀира\x1fдаханчу кӀирнахь\x1fкарарчу кӀи" + + "рнахь!рогӀерчу кӀирнахь\x1b{0} кӀира даьлча\x1b{0} кӀира хьалха\x09кӀир" + + ".\x1a{0} кӀир. даьлча\x1a{0} кӀир. хьалха\x04де\x0eселхана\x0cтахана\x0a" + + "кхана\x15{0} де даьлча\x15{0} де хьалха\x14{0} д. даьлча\x14{0} д. хьал" + + "ха\x11де хьалха\x11кӀиран де.даханчу кӀиранан дийнахь.карарчу кӀиранан " + + "дийнахь0рогӀерчу кӀиранан дийнахь#даханчу кӀиранан д.#карарчу кӀиранан " + + "д.%рогӀерчу кӀиранан д.$рогӀерчу кӀиранан д,даханчу оршотан дийнахь,кар" + + "арчу оршотан дийнахь.рогӀерчу оршотан дийнахь!даханчу оршотан д.\x1fкар" + + "ара оршотан д.#рогӀерчу оршотан д.,даханчу шинарин дийнахь,карарчу шина" + + "рин дийнахь.рогӀерчу шинарин дийнахь!даханчу шинарин д.!карарчу шинарин" + + " д.#рогӀерчу шинарин д.,даханчу кхаарин дийнахь,карарчу кхаарин дийнахь." + + "рогӀерчу кхаарин дийнахь!даханчу кхаарин д.!карарчу кхаарин д.#рогӀерчу" + + " кхаарин д.(даханчу еарин дийнахь(карарчу еарин дийнахь*рогӀерчу еарин д" + + "ийнахь\x1dдаханчу еарин д.\x1dкарарчу еарин д.\x1fрогӀерчу еарин д.0дах" + + "анчу пӀераскан дийнахь0карарчу пӀераскан дийнахь2рогӀерчу пӀераскан дий" + + "нахь%даханчу пӀераскан д.%карарчу пӀераскан д.'рогӀерчу пӀераскан д.#да" + + "ханчу шотдийнахь#карарчу шотдийнахь%рогӀерчу шотдийнахь\x18даханчу шотд" + + ".'карарчу даханчу шотд.)рогӀерчу даханчу шотд.\x1bделкъал тӀехьа\x0aсахь" + + "т\x1b{0} сахьт даьлча\x1b{0} сахьт хьалха\x09сахь.\x1a{0} сахь. даьлча" + + "\x1a{0} сахь. хьалха\x0aминот\x19{0} минот яьлча\x1b{0} минот хьалха\x07" + + "мин.\x16{0} мин. яьлча\x18{0} мин. хьалха\x1b{0} секунд яьлча\x1d{0} се" + + "кунд хьалха\x07сек.\x16{0} сек. яьлча\x18{0} сек. хьалха\x15сахьтан аса" + + ")Британин, аьхкенан хан'Ирланди, аьхкенан хан\x1fОвхӀан-пачхьалкх\x1bЮкк" + + "ъера Африка\x1fМалхбален Африка\x19Къилба Африка\x1fМалхбузен Африка<Ма" + + "лхбузен Африка, стандартан хан8Малхбузен Африка, аьхкенан хан\x0cАляска" + + ")Аляска, стандартан хан%Аляска, аьхкенан хан\x10Амазонка-Амазонка, станд" + + "артан хан)Амазонка, аьхкенан хан\x1dЮккъера Америка:Юккъера Америка, ст" + + "андартан хан6Юккъера Америка, аьхкенан хан!Малхбален Америка>Малхбален " + + "Америка, стандартан хан:Малхбален Америка, аьхкенан хан Лаьмнийн хан (А" + + "ЦШ)5Лаьмнийн стандартан хан (АЦШ)1Лаьмнийн аьхкенан хан (АЦШ) Тийна оке" + + "анан хан5Тийна океанан стандартан хан1Тийна океанан аьхкенан хан\x1bхан" + + " Апиа, Самоа0стандартан хан Апиа, Самоа,аьхкенан хан Апиа, Самоа\x1bСаӀу" + + "дийн Арави8СаӀудийн Арави, стандартан хан4СаӀудийн Арави, аьхкенан хан" + + "\x12Аргентина/Аргентина, стандартан хан+Аргентина, аьхкенан хан%Малхбузе" + + "н АргентинаBМалхбузен Аргентина, стандартан хан>Малхбузен Аргентина, аь" + + "хкенан хан\x14Эрмалойчоь1Эрмалойчоь, стандартан хан-Эрмалойчоь, аьхкена" + + "н хан\x1bАтлантикан хан0Атлантикан стандартан хан,Атлантикан аьхкенан х" + + "ан\x1fЮккъера Австрали<Юккъера Австрали, стандартан хан8Юккъера Австрал" + + "и, аьхкенан хан:Юккъера Австрали, малхбузен ханOЮккъера Австрали, малхб" + + "узен стандартан ханKЮккъера Австрали, малхбузен аьхкенан хан#Малхбален " + + "Австрали@Малхбален Австрали, стандартан хан<Малхбален Австрали, аьхкена" + + "н хан#Малхбузен Австрали@Малхбузен Австрали, стандартан хан<Малхбузен А" + + "встрали, аьхкенан хан\x16Азербайджан3Азербайджан, стандартан хан/Азерба" + + "йджан, аьхкенан хан\x1fАзоран гӀайренаш<Азоран гӀайренаш, стандартан ха" + + "н8Азоран гӀайренаш, аьхкенан хан\x12Бангладеш/Бангладеш, стандартан хан" + + "+Бангладеш, аьхкенан хан\x0aБутан\x0cБоливи\x0eБразили+Бразили, стандарт" + + "ан хан'Бразили, аьхкенан хан!Бруней-Даруссалам\x13Кабо-Верде0Кабо-Верде" + + ", стандартан хан,Кабо-Верде, аьхкенан хан\x0eЧаморро\x0aЧатем'Чатем, ста" + + "ндартан хан#Чатем, аьхкенан хан\x08Чили%Чили, стандартан хан!Чили, аьхк" + + "енан хан\x0aКитай'Китай, стандартан хан#Китай, аьхкенан хан\x12Чойбалса" + + "н/Чойбалсан, стандартан хан+Чойбалсан, аьхкенан хан:Ӏийса пайхамар винч" + + "у ден гӀайре\x1dКокосийн, гӀ-наш\x0eКолумби+Колумби, стандартан хан'Кол" + + "умби, аьхкенан хан\x17Кукан, гӀ-наш4Кукан, гӀ-наш, стандартан хан0Кукан" + + ", гӀ-наш, аьхкенан хан\x08Куба%Куба, стандартан хан!Куба, аьхкенан хан" + + "\x0cДейвис\x1cДюмон-д’Юрвиль\x1dМалхбален Тимор\x19Мархин гӀайре6Мархин " + + "гӀайре, стандартан хан2Мархин гӀайре, аьхкенан хан\x0eЭквадор\x1bЮккъер" + + "а Европа8Юккъера Европа, стандартан хан4Юккъера Европа, аьхкенан хан" + + "\x1fМалхбален Европа<Малхбален Европа, стандартан хан8Малхбален Европа, " + + "аьхкенан хан;Калининградера а, Минскера а хан\x1fМалхбузен Европа<Малхб" + + "узен Европа, стандартан хан8Малхбузен Европа, аьхкенан хан'Фолклендан г" + + "ӀайренашDФолклендан гӀайренаш, стандартан хан@Фолклендан гӀайренаш, аьх" + + "кенан хан\x0aФиджи'Фиджи, стандартан хан#Фиджи, аьхкенан хан!Французийн" + + " ГвианаFФранцузийн къилба а, Антарктидан а хан)Галапагосан гӀайренаш\x0c" + + "Гамбье\x14Гуьржийчоь1Гуьржийчоь, стандартан хан-Гуьржийчоь, аьхкенан ха" + + "н\x1fГилбертан, гӀ-наш(Гринвичица юкъара хан%Малхбален ГренландиBМалхба" + + "лен Гренланди, стандартан хан>Малхбален Гренланди, аьхкенан хан%Малхбуз" + + "ен ГренландиBМалхбузен Гренланди, стандартан хан>Малхбузен Гренланди, а" + + "ьхкенан хан\x1bГӀажарийн айма\x0cГайана$Гавайн-алеутийн хан9Гавайн-алеу" + + "тийн стандартан хан5Гавайн-алеутийн аьхкенан хан\x0eГонконг+Гонконг, ст" + + "андартан хан'Гонконг, аьхкенан хан\x08Ховд%Ховд, стандартан хан!Ховд, а" + + "ьхкенан хан\x08Инди\x15Индин океан\x12Индокитай\x1fЮккъера Индонези#Мал" + + "хбален Индонези#Малхбузен Индонези\x16ГӀажарийчоь3ГӀажарийчоь, стандарт" + + "ан хан/ГӀажарийчоь, аьхкенан хан\x0eИркутск+Иркутск, стандартан хан'Ирк" + + "утск, аьхкенан хан\x0eИзраиль+Израиль, стандартан хан'Израиль, аьхкенан" + + " хан\x0aЯпони'Япони, стандартан хан#Япони, аьхкенан хан%Малхбален Казахс" + + "тан%Малхбузен Казахстан\x0aКорей'Корей, стандартан хан#Корей, аьхкенан " + + "хан\x0cКосраэ\x14Красноярск1Красноярск, стандартан хан-Красноярск, аьхк" + + "енан хан\x0eКиргизи\x15Лайн, гӀ-наш\x0fЛорд-Хау,Лорд-Хау, стандартан ха" + + "н(Лорд-Хау, аьхкенан хан\x10Маккуори\x0eМагадан+Магадан, стандартан хан" + + "'Магадан, аьхкенан хан\x0eМалайзи\x12Мальдиваш\x1dМаркизан, гӀ-наш\x1eМа" + + "ршалан , гӀ-наш\x0eМаврики+Маврики, стандартан хан'Маврики, аьхкенан ха" + + "н\x0cМоусон=Къилбаседа Американ Мексикан ханRКъилбаседа Американ Мексик" + + "ан стандартан ханNКъилбаседа Американ Мексикан аьхкенан хан1Тийна океан" + + "ан Мексикан ханFТийна океанан Мексикан стандартан ханBТийна океанан Мек" + + "сикан аьхкенан хан\x13Улан-Батор0Улан-Батор, стандартан хан,Улан-Батор," + + " аьхкенан хан\x0cМосква)Москва, стандартан хан%Москва, аьхкенан хан\x0cМ" + + "ьянма\x0aНауру\x0aНепал\x1bКерла Каледони8Керла Каледони, стандартан ха" + + "н4Керла Каледони, аьхкенан хан\x19Керла Зеланди6Керла Зеланди, стандарт" + + "ан хан2Керла Зеланди, аьхкенан хан\x18Ньюфаундленд5Ньюфаундленд, станда" + + "ртан хан1Ньюфаундленд, аьхкенан хан\x08Ниуэ\x0eНорфолк$Фернанду-ди-Норо" + + "ньяAФернанду-ди-Норонья, стандартан хан=Фернанду-ди-Норонья, аьхкенан х" + + "ан\x16Новосибирск3Новосибирск, стандартан хан/Новосибирск, аьхкенан хан" + + "\x08Омск%Омск, стандартан хан!Омск, аьхкенан хан\x10Пакистан-Пакистан, с" + + "тандартан хан)Пакистан, аьхкенан хан\x0aПалау&Папуа – Керла Гвиней\x10П" + + "арагвай-Парагвай, стандартан хан)Парагвай, аьхкенан хан\x08Перу%Перу, с" + + "тандартан хан!Перу, аьхкенан хан\x14Филиппинаш1Филиппинаш, стандартан х" + + "ан-Филиппинаш, аьхкенан хан\x19Феникс, гӀ-наш%Сен-Пьер а, Микелон аBСен" + + "-Пьер а, Микелон а, стандартан хан>Сен-Пьер а, Микелон а, аьхкенан хан" + + "\x0eПиткэрн\x19Понапе, гӀ-наш\x0eРеюньон\x0cРотера\x0eСахалин+Сахалин, с" + + "тандартан хан'Сахалин, аьхкенан хан\x0aСамоа'Самоа, стандартан хан#Само" + + "а, аьхкенан хан#Сейшелан гӀайренаш\x10Сингапур\x1fСоломонан, гӀ-наш\x19" + + "Къилба Георги\x0eСуринам\x08Сёва\x17Таити, гӀ-наш\x0eТайвань+Тайвань, с" + + "тандартан хан'Тайвань, аьхкенан хан\x16Таджикистан\x0eТокелау\x0aТонга'" + + "Тонга, стандартан хан#Тонга, аьхкенан хан\x08Чуук\x10Туркмени.Туркменин" + + " стандартан хан*Туркменин аьхкенан хан\x0cТувалу\x0eУругвай+Уругвай, ста" + + "ндартан хан'Уругвай, аьхкенан хан\x14Узбекистан4Узбекистанан стандартан" + + " хан0Узбекистанан аьхкенан хан\x0eВануату+Вануату, стандартан хан'Вануат" + + "у, аьхкенан хан\x12Венесуэла\x16Владивосток3Владивосток, стандартан хан" + + "/Владивосток, аьхкенан хан\x12Волгоград/Волгоград, стандартан хан+Волгог" + + "рад, аьхкенан хан\x0cВосток\x11Уэйк, гӀ-е Уоллис а, Футуна а\x0cЯкутск)" + + "Якутск, стандартан хан%Якутск, аьхкенан хан\x18Екатеринбург5Екатеринбур" + + "г, стандартан хан1Екатеринбург, аьхкенан хан\x06май\x08март\x06май\x08и" + + "юнь\x08июль\x0cавгуст\x06мар\x06апр\x06авг\x06окт" + +var bucket18 string = "" + // Size: 18085 bytes + "\x03KBZ\x03KBR\x03KST\x03KKN\x03KTN\x03KMK\x03KMS\x03KMN\x03KMW\x03KKM" + + "\x03KNK\x03KNB\x0bOkwokubanza\x0aOkwakabiri\x0bOkwakashatu\x08Okwakana" + + "\x0bOkwakataana\x0bOkwamukaaga\x0cOkwamushanju\x0bOkwamunaana\x0aOkwamwe" + + "nda\x09Okwaikumi\x12Okwaikumi na kumwe\x12Okwaikumi na ibiri\x03SAN\x03O" + + "RK\x03OKB\x03OKS\x03OKN\x03OKT\x03OMK\x05Sande\x0bOrwokubanza\x0aOrwakab" + + "iri\x0bOrwakashatu\x08Orwakana\x0bOrwakataano\x0bOrwamukaaga\x07KWOTA 1" + + "\x07KWOTA 2\x07KWOTA 3\x07KWOTA 4\x13Kurisito Atakaijire\x10Kurisito Yai" + + "jire\x07Obunaku\x06Omwaka\x06Omwezi\x06Esande\x07Eizooba\x0bNyomwabazyo" + + "\x08Erizooba\x0bNyenkyakare\x14Eizooba ry’okukora\x12Nyomushana/nyekiro" + + "\x06Shaaha\x08Edakiika\x11Obucweka/Esekendi\x0bM/d/y GGGGG\x11{1} ᎤᎾᎢ {0" + + "}\x06ᎤᏃ\x06ᎧᎦ\x06ᎠᏅ\x06ᎧᏬ\x06ᎠᏂ\x06ᏕᎭ\x06ᎫᏰ\x06ᎦᎶ\x06ᏚᎵ\x06ᏚᏂ\x06ᏅᏓ\x06Ꭵ" + + "Ꮝ\x03Ꭴ\x03Ꭷ\x03Ꭰ\x03Ꮥ\x03Ꭻ\x03Ꭶ\x03Ꮪ\x03Ꮕ\x03Ꭵ\x0fᎤᏃᎸᏔᏅ\x09ᎧᎦᎵ\x09ᎠᏅᏱ" + + "\x09ᎧᏬᏂ\x0fᎠᏂᏍᎬᏘ\x0cᏕᎭᎷᏱ\x0cᎫᏰᏉᏂ\x09ᎦᎶᏂ\x0cᏚᎵᏍᏗ\x0cᏚᏂᏅᏗ\x0cᏅᏓᏕᏆ\x0cᎥᏍᎩᏱ" + + "\x09ᏆᏍᎬ\x09ᏉᏅᎯ\x09ᏔᎵᏁ\x09ᏦᎢᏁ\x09ᏅᎩᏁ\x09ᏧᎾᎩ\x09ᏈᏕᎾ\x03Ꮖ\x03Ꮙ\x03Ꮤ\x03Ꮶ" + + "\x03Ꮷ\x06ᏍᎬ\x06ᏅᎯ\x06ᏔᎵ\x06ᏦᎢ\x06ᏅᎩ\x06ᏧᎾ\x06ᏕᎾ\x15ᎤᎾᏙᏓᏆᏍᎬ\x15ᎤᎾᏙᏓᏉᏅᎯ" + + "\x0fᏔᎵᏁᎢᎦ\x0fᏦᎢᏁᎢᎦ\x0fᏅᎩᏁᎢᎦ\x12ᏧᎾᎩᎶᏍᏗ\x15ᎤᎾᏙᏓᏈᏕᎾ\x101st ᎩᏄᏙᏗ\x102nd ᎩᏄᏙᏗ" + + "\x103rd ᎩᏄᏙᏗ\x104th ᎩᏄᏙᏗ\x09ᏌᎾᎴ\x06ᎢᎦ\x12ᏒᎯᏱᎢᏗᏢ\x03Ꮜ\x03Ꭲ\x03Ꮢ)ᏧᏓᎷᎸ ᎤᎷᎯᏍ" + + "Ꮧ ᎦᎶᏁᏛ9ᏧᏓᎷᎸ ᏯᏃᏉ ᏱᎬᏍᏛᏭ ᎠᏓᎴᏂᏍᎬ\x10ᎠᏃ ᏙᎻᏂ,ᏯᏃᏉ ᏱᎬᏍᏛᏭ ᎠᏓᎴᏂᏍᎬ\x12ᏗᏓᎴᏂᏍᎬ\x18Ꭴ" + + "ᏕᏘᏴᏌᏗᏒᎢ\x10ᎡᏘ ᏥᎨᏒ\x19ᎯᎠ ᏧᏕᏘᏴᏒᏘ\x0cᎡᏘᏴᎢ#ᎾᎿ {0} ᎤᏕᏘᏴᏌᏗᏒᎢ&ᎾᎿ {0} ᎢᏧᏕᏘᏴᏌᏗᏒ" + + "Ꭲ&{0} ᎤᏕᏘᏴᏌᏗᏒᎢ ᏥᎨᏒ){0} ᎢᏧᏕᏘᏴᏌᏗᏒᎢ ᏥᎨᏒ\x07ᎤᏕ.\x12ᎾᎿ {0} ᎤᏕ.\x1cᎾᎿ {0} ᎤᏕ" + + ". ᏥᎨᏒ\x0cᎩᏄᏙᏗ\x16ᎩᏄᏙᏗ ᏥᎨᏒ\x13ᎯᎠ ᎩᏄᏙᏗ\x16ᏔᎵᏁ ᎩᏄᏙᏗ\x17ᎾᎿ {0} ᎩᏄᏙᏗ!ᎾᎿ {0} Ꭹ" + + "ᏄᏙᏗ ᏥᎨᏒ\x0aᎩᏄᏘ.\x15ᎾᎿ {0} ᎩᏄᏘ.\x1fᎾᎿ {0} ᎩᏄᏘ. ᏥᎨᏒ\x09ᎧᎸᎢ\x13ᎧᎸᎢ ᏥᎨᏒ" + + "\x10ᎯᎠ ᎧᎸᎢ\x13ᏔᎵᏁ ᎧᎸᎢ\x14ᎾᎿ {0} ᎧᎸᎢ\x17ᎾᎿ {0} ᏗᎧᎸᎢ\x1eᎾᎿ {0} ᎧᎸᎢ ᏥᎨᏒ!ᎾᎿ " + + "{0} ᏗᎧᎸᎢ ᏥᎨᏒ\x07ᎧᎸ.\x12ᎾᎿ {0} ᎧᎸ.\x1cᎾᎿ {0} ᎧᎸ. ᏥᎨᏒ\x06ᎧᎸ\x15ᏒᎾᏙᏓᏆᏍᏗ\x15" + + "ᏥᏛᎵᏱᎵᏒᎢ\x13ᎯᎠ ᎠᎵᎵᏌ\x0fᏐᏆᎴᏅᎲ ᎾᎿ {0} ᏒᎾᏙᏓᏆᏍᏗ#ᎾᎿ {0} ᎢᏳᎾᏙᏓᏆᏍᏗ*ᎾᎿ {0} ᏒᎾᏙᏓ" + + "ᏆᏍᏗ ᏥᎨᏒ-ᎾᎿ {0} ᎢᏳᎾᏙᏓᏆᏍᏗ ᏥᎨᏒ'Ꮎ ᏒᎾᏙᏓᏆᏍᏗ ᎾᏍᎩ {0}\x07ᏒᎾ.\x12ᎾᎿ {0} ᏒᎾ.\x1c" + + "ᎾᎿ {0} ᏒᎾ. ᏥᎨᏒ\x06ᏒᎯ\x0dᎪᎯ ᎢᎦ\x0cᏌᎾᎴᎢ\x11ᎾᎿ {0} ᎢᎦ$ᎾᎿ {0} ᎯᎸᏍᎩ ᏧᏒᎯᏛ" + + "\x14{0} ᎢᎦ ᏥᎨᏒ'{0} ᎯᎸᏍᎩ ᏧᏒᎯᏛ ᏥᎨᏒ\x16ᎢᎦ ᏕᎨᏌᏗᏒ\x1fᎤᎾᏙᏓᏆᏍᎬ ᏥᎨᏒ\x1cᎯᎠ ᎤᎾᏙᏓᏆᏍ" + + "Ꭼ\x1fᏔᎵᏁ ᎤᎾᏙᏓᏆᏍᎬ ᎾᎿ {0} ᎤᎾᏙᏓᏆᏍᎬ#{0} ᎤᎾᏙᏓᏆᏍᎬ ᏥᎨᏒ\x14ᏆᏍᎬ. ᏥᎨᏒ\x11ᎯᎠ ᏆᏍᎬ." + + "\x14ᏔᎵᏁ ᏆᏍᎬ.\x10ᏍᎬ ᏥᎨᏒ\x0dᎯᎠ ᏍᎬ\x10ᏔᎵᏁ ᏍᎬ\x1cᎤᎾᏙᏓᏉᏅ ᏥᎨᏒ\x19ᎯᎠ ᎤᎾᏙᏓᏉᏅ\x1c" + + "ᏔᎵᏁ ᎤᎾᏙᏓᏉᏅ\x1dᎾᎿ {0} ᎤᎾᏙᏓᏉᏅ {0} ᎤᎾᏙᏓᏉᏅ ᏥᎨᏒ\x14ᏉᏅᎯ. ᏥᎨᏒ\x11ᎯᎠ ᏉᏅᎯ.\x14Ꮤ" + + "ᎵᏁ ᏉᏅᎯ.\x0dᏉ ᏥᎨᏒ\x0aᎯᎠ Ꮙ\x0dᏔᎵᏁ Ꮙ\x1aᏔᎵᏁ ᎢᎦ ᏥᎨᏒ\x17ᎯᎠ ᏔᎵᏁ ᎢᎦ\x1aᏔᎵᏁ ᏔᎵ" + + "Ꮑ ᎢᎦ\x1bᎾᎿ {0} ᏔᎵᏁ ᎢᎦ\x1e{0} ᏔᎵᏁ ᎢᎦ ᏥᎨᏒ\x14ᏔᎵᏁ. ᏥᎨᏒ\x11ᎯᎠ ᏔᎵᏁ.\x14ᏔᎵᏁ " + + "ᏔᎵᏁ.\x10ᏔᎵ ᏥᎨᏒ\x0dᎯᎠ ᏔᎵ\x10ᏔᎵᏁ ᏔᎵ\x1aᏦᎢᏁ ᎢᎦ ᏥᎨᏒ\x17ᎯᎠ ᏦᎢᏁ ᎢᎦ\x1aᏔᎵᏁ ᏦᎢ" + + "Ꮑ ᎢᎦ\x1bᎾᎿ {0} ᏦᎢᏁ ᎢᎦ\x1e{0} ᏦᎢᏁ ᎢᎦ ᏥᎨᏒ\x14ᏦᎢᏁ. ᏥᎨᏒ\x11ᎯᎠ ᏦᎢᏁ.\x14ᏔᎵᏁ " + + "ᏦᎢᏁ.\x0dᏦ ᏥᎨᏒ\x0aᎯᎠ Ꮶ\x0dᏔᎵᏁ Ꮶ\x13ᏅᎩᏁ ᏥᎨᏒ\x17ᎯᎠ ᏅᎩᏁ ᎢᎦ\x1aᏔᎵᏁ ᏅᎩᏁ ᎢᎦ" + + "\x1bᎾᎿ {0} ᏅᎩᏁ ᎢᎦ\x1e{0} ᏅᎩᏁ ᎢᎦ ᏥᎨᏒ\x14ᏅᎩᏁ. ᏥᎨᏒ\x11ᎯᎠ ᏅᎩᏁ.\x14ᏔᎵᏁ ᏅᎩᏁ." + + "\x10ᏅᎩ ᏥᎨᏒ\x0dᎯᎠ ᏅᎩ\x10ᏔᎵᏁ ᏅᎩ\x1cᏧᎾᎩᎶᏍᏗ ᏥᎨᏒ\x19ᎯᎠ ᏧᎾᎩᎶᏍᏗ\x1cᏔᎵᏁ ᏧᎾᎩᎶᏍᏗ$Ꮎ" + + "Ꮏ {0} ᏧᎾᎩᎶᏍᏗ ᎢᎦ {0} ᏧᎾᎩᎶᏍᏗ ᏥᎨᏒ\x14ᏧᎾᎩ. ᏥᎨᏒ\x11ᎯᎠ ᏧᎾᎩ.\x14ᏔᎵᏁ ᏧᎾᎩ.\x0dᏧ" + + " ᏥᎨᏒ\x0aᎯᎠ Ꮷ\x0dᏔᎵᏁ Ꮷ\x1fᎤᎾᏙᏓᏈᏕᎾ ᏥᎨᏒ\x1cᎯᎠ ᎤᎾᏙᏓᏈᏕᎾ\x1fᏔᎵᏁ ᎤᎾᏙᏓᏈᏕᎾ'ᎾᎿ {0}" + + " ᎤᎾᏙᏓᏈᏕᎾ ᎢᎦ#{0} ᎤᎾᏙᏓᏈᎨᎾ ᏥᎨᏒ\x14ᏈᏕᎾ. ᏥᎨᏒ\x11ᎯᎠ ᏈᏕᎾ.\x14ᏔᎵᏁ ᏈᏕᎾ.\x10ᏕᎾ ᏥᎨᏒ" + + "\x0dᎯᎠ ᏕᎾ\x10ᏔᎵᏁ ᏕᎾ\x13ᏌᎾᎴ/ᏒᎯᏱ\x0cᏑᏟᎶᏓ\x13ᎯᎠ ᏑᏟᎶᏓ\x17ᎾᎿ {0} ᏑᏟᎶᏓ\x1aᎾᎿ {" + + "0} ᎢᏳᏟᎶᏓ\x1a{0} ᏑᏟᎶᏓ ᏥᎨᏒ\x1d{0} ᎢᏳᏟᎶᏓ ᏥᎨᏒ\x07ᏑᏟ.\x12ᎾᎿ {0} ᏑᏟ.\x1cᎾᎿ {0}" + + " ᏑᏟ. ᏥᎨᏒ\x15ᎢᏯᏔᏬᏍᏔᏅ\x1cᎯᎠ ᎢᏯᏔᏬᏍᏔᏅ ᎾᎿ {0} ᎢᏯᏔᏬᏍᏔᏅ*ᎾᎿ {0} ᎢᏯᏔᏬᏍᏔᏅ ᏥᎨᏒ\x0aᎢ" + + "ᏯᏔ.\x15ᎾᎿ {0} ᎢᏯᏔ.\x1fᎾᎿ {0} ᎢᏯᏔ. ᏥᎨᏒ\x09ᎠᏎᏢ\x06ᏃᏊ\x14ᎾᎿ {0} ᎠᏎᏢ'ᎾᎿ {0" + + "} ᏓᏓᎾᏩᏍᎬ ᏥᎨᏒ\x17{0} ᎠᏎᏢ ᏥᎨᏒ {0} ᏓᏓᎾᏩᏍᎬ ᏥᎨᏒ\x0aᎠᏎᏢ.\x15ᎾᎿ {0} ᎠᏎᏢ.\x18{0}" + + " ᎠᏎᏢ. ᏥᎨᏒ2ᏂᎬᎾᏛ ᏧᏓᎴᏅᏓ ᏓᏟᎢᎵᏍᏒᎢ\x13{0} ᎠᏟᎢᎵᏒ'{0} ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ#{0} ᎠᏟᎶᏍᏗ ᎠᏟ" + + "ᎢᎵᏒ ᏈᏗᏏ ᎪᎩ ᎠᏟᎢᎵᏒ)ᎨᎵᎩ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ%ᎠᏫᎨᏂᏍᏖᏂ ᎠᏟᎢᎵᏒ)ᎠᏰᏟ ᎬᎿᎨᏍᏛ ᎠᏟᎢᎵᏒ,ᏗᎧᎸᎬ ᎬᎿ" + + "ᎨᏍᏛ ᎠᏟᎢᎵᏒ<ᏧᎦᎾᏮ ᎬᎿᎨᏍᏛ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ ᎠᏟᎢᎵᏒ<ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ ᎠᏟᎶᏍᏗ ᎠᏟᎢ" + + "ᎵᏒ3ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎠᎳᏍᎦ ᎠᏟᎢᎵᏒ,ᎠᎳᏍᎦ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᎠᎳᏍᎦ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍ" + + "ᏒᎩ\x1cᎠᎺᏌᏂ ᎠᏟᎢᎵᏒ,ᎠᎺᏌᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎠᎺᏌᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᎠᏰᏟ ᎠᏟᎢᎵᏒ)ᎠᏰᏟ ᎠᏟᎶᏍᏗ" + + " ᎠᏟᎢᎵᏒ-ᎠᏰᏟ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ#ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎢᎵᏒ3ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ7ᏗᎧᎸᎬ ᏗᏜ ᎪᎯ ᎢᎦ" + + " ᎠᏟᎢᎵᏍᏒᎩ\x19ᎣᏓᎸ ᎠᏟᎢᎵᏒ)ᎣᏓᎸ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᎣᏓᎸ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x1cᏭᏕᎵᎬ ᎠᏟᎢᎵᏒ,ᏭᏕ" + + "ᎵᎬ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᏭᏕᎵᎬ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x19ᎠᏈᎠ ᎠᏟᎢᎵᏒ)ᎠᏈᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎠᏈᎠ ᎪᎯ " + + "ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᎠᎴᏈᏯ ᎠᏟᎢᎵᏒ,ᎠᎴᏈᏯ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᎠᎴᏈᏯ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x22ᎠᏥᏂᏘᏂᎠ Ꭰ" + + "ᏟᎢᎵᏒ2ᎠᏥᏂᏘᏂᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᎠᏥᏂᏘᏂᎠ ᎪᎩ ᎠᏟᎢᎵᏒ6ᏭᏕᎵᎬ ᏗᏜ ᎠᏥᏂᏘᏂᎠ ᎠᏟᎢᎵᏒFᏭᏕᎵᎬ ᏗᏜ Ꭰ" + + "ᏥᏂᏘᏂᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒMᏭᏕᎵᎬ ᏗᏜ ᎠᏥᏂᏘᏂᎠ ᎪᎩ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1fᎠᎵᎻᏂᎠ ᎠᏟᎢᎵᏒ/ᎠᎵᎻᏂᎠ Ꭰ" + + "ᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᎠᎵᎻᏂᎠ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᏗᎧᎸᎬ ᎠᏟᎢᎵᏒ,ᏗᎧᎸᎬ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᏗᎧᎸᎬ ᎪᎯ ᎢᎦ ᎠᏟ" + + "ᎢᎵᏍᏒᎩ&ᎠᏰᏟ ᎡᎳᏗᏜ ᎠᏟᎢᎵᏒ6ᎠᏰᏟ ᎡᎳᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ7ᎠᏰᏟ ᎡᎳᏗᏜ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ:ᎠᏰᏟ ᎡᎳ" + + "ᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎢᎵᏒJᎠᏰᏟ ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒKᎠᏰᏟ ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎪᎯ ᎢᎦ Ꭰ" + + "ᏟᎢᎵᏒᎩ0ᎡᎳᏗᏜ ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎢᎵᏒ@ᎡᎳᏗᏜ ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒAᎡᎳᏗᏜ ᏗᎧᎸᎬ ᏗᏜ ᎪᎯ ᎢᎦ Ꭰ" + + "ᏟᎢᎵᏒᎩ0ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎢᎵᏒ@ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒAᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎪᎯ ᎢᎦ Ꭰ" + + "ᏟᎢᎵᏒᎩ\x22ᎠᏏᎵᏆᏌᏂ ᎠᏟᎢᎵᏒ2ᎠᏏᎵᏆᏌᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᎠᏏᎵᏆᏌᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎠᏐᎴᏏ ᎠᏟᎢᎵᏒ" + + ",ᎠᏐᎴᏏ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎠᏐᎴᏏ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᏆᏂᎦᎵᏕᏍ ᎠᏟᎢᎵᏒ2ᏆᏂᎦᎵᏕᏍ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᏆᏂᎦᎵᏕ" + + "Ꮝ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᏊᏔᏂ ᎠᏟᎢᎵᏒ\x1cᏉᎵᏫᎠ ᎠᏟᎢᎵᏒ\x1cᏆᏏᎵᏯ ᎠᏟᎢᎵᏒ,ᏆᏏᎵᏯ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#Ꮖ" + + "ᏏᎵᏯ ᎪᎩ ᎠᏟᎢᎵᏒ)ᏊᎾᎢ ᏓᎷᏌᎳᎻ ᎠᏟᎢᎵᏒ/ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ ᎠᏟᎢᎵᏒ?ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ" + + "6ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ ᎪᎩ ᎠᏟᎢᎵᏒ)ᏣᎼᎶ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x19ᏣᏝᎻ ᎠᏟᎢᎵᏒ)ᏣᏝᎻ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᏣᏝᎻ Ꭺ" + + "Ꭿ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x16ᏥᎵ ᎠᏟᎢᎵᏒ&ᏥᎵ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1dᏥᎵ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᏓᎶᏂᎨᏍᏛ ᎠᏟᎢᎵᏒ2" + + "ᏓᎶᏂᎨᏍᏛ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ3ᏓᎶᏂᎨᏍᏛ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x22ᏦᏱᏆᎵᏌᏂ ᎠᏟᎢᎵᏒ2ᏦᏱᏆᎵᏌᏂ ᎠᏟᎶᏍᏗ ᎠᏟ" + + "ᎢᎵᏒ)ᏦᏱᏆᎵᏌᏂ ᎪᎩ ᎠᏟᎢᎵᏒ5ᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ)ᎪᎪᏍ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ\x22ᎪᎸᎻᏈᎢᎠ ᎠᏟᎢᎵ" + + "Ꮢ2ᎪᎸᎻᏈᎢᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᎪᎸᎻᏈᎢᎠ ᎪᎩ ᎠᏟᎢᎵᏒ8ᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒHᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚ" + + "ᏛᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒIᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚᏛᎢ ᎠᏰᏟ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᎫᏆ ᎠᏟᎢᎵᏒ&ᎫᏆ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*" + + "ᎫᏆ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x19ᏕᏫᏏ ᎠᏟᎢᎵᏒ/ᏚᎼᎾᏘ-Ꮧ’ᎤᎵᏫᎵ ᎠᏟᎢᎵᏒ&ᏗᎧᎸᎬ ᏘᎼᎵ ᎠᏟᎢᎵᏒ5ᏥᏌᏕᎴᎯᏌᏅ" + + " ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒEᏥᏌᏕᎴᎯᏌᏅ ᎤᎦᏚᏛᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ<ᏥᏌᏕᎴᎯᏌᏅ ᎤᎦᏚᏛᎢ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎡᏆᏙᎵ ᎠᏟ" + + "ᎢᎵᏒ#ᎠᏰᏟ ᏳᎳᏈ ᎠᏟᎢᎵᏒ3ᎠᏰᏟ ᏳᎳᏈ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎠᏰᏟ ᏳᎳᏈ ᎪᎩ ᎠᏟᎢᎵᏒ-ᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏈ ᎠᏟᎢ" + + "ᎵᏒ=ᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏈ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ4ᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏈ ᎪᎩ ᎠᏟᎢᎵᏒ&ᏗᎧᎸᎬ ᏳᎳᏈ ᎠᏟᎢᎵᏒ-ᏭᏕᎵᎬ ᏗᏜ" + + " ᏳᎳᏈ ᎠᏟᎢᎵᏒ=ᏭᏕᎵᎬ ᏗᏜ ᏳᎳᏈ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ4ᏭᏕᎵᎬ ᏗᏜ ᏳᎳᏈ ᎪᎩ ᎠᏟᎢᎵᏒ&ᏩᎩ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ6Ꮹ" + + "Ꭹ ᏚᎦᏚᏛᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᏩᎩ ᏚᎦᏚᏛᎢ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᏫᏥ ᎠᏟᎢᎵᏒ&ᏫᏥ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1dᏫᏥ" + + " ᎪᎩ ᎠᏟᎢᎵᏒ&ᎠᏂᎦᎸ ᏈᏯᎾ ᎠᏟᎢᎵᏒCᎠᏂᎦᎸᏥ ᎤᎦᏃᏮ ᎠᎴ ᎤᏁᏍᏓᎶ ᎠᏟᎢᎵᏒ0ᎡᏆ ᏓᎦᏏ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ" + + "\x1cᎦᎻᏇᎵ ᎠᏟᎢᎵᏒ\x1cᏣᎠᏥᎢ ᎠᏟᎢᎵᏒ,ᏣᎠᏥᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᏣᎠᏥᎢ ᎪᎩ ᎠᏟᎢᎵᏒ,ᎩᎵᏇᏘ ᏚᎦᏚᏛᎢ Ꭰ" + + "ᏟᎢᎵᏒ#ᎢᏤ ᎢᏳᏍᏗ ᎠᏟᎢᎵᏒ,ᏗᎧᎸᎬ ᎢᏤᏍᏛᏱ ᎠᎵᎢᎵᏒ<ᏗᎧᎸᎬ ᎢᏤᏍᏛᏱ ᎠᏟᎶᏍᏗ ᎠᎵᎢᎵᏒ3ᏗᎧᎸᎬ ᎢᏤᏍᏛᏱ " + + "ᎪᎩ ᎠᏟᎢᎵᏒ,ᏭᏕᎵᎬ ᎢᏤᏍᏛᏱ ᎠᎵᎢᎵᏒ<ᏭᏕᎵᎬ ᎢᏤᏍᏛᏱ ᎠᏟᎶᏍᏗ ᎠᎵᎢᎵᏒ3ᏭᏕᎵᎬ ᎢᏤᏍᏛᏱ ᎪᎩ ᎠᏟᎢᎵᏒ/Ꭱ" + + "ᏉᏄᎸᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x19ᎦᏯᎾ ᎠᏟᎢᎵᏒ,ᎭᏩᏱ-ᎠᎵᏳᏏᎠᏂ ᎠᏟᎢᎵᏒ<ᎭᏩᏱ-ᎠᎵᏳᏏᎠᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ@" + + "ᎭᏩᏱ-ᎠᎵᏳᏏᎠᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ#ᎰᏂᎩ ᎪᏂᎩ ᎠᏟᎢᎵᏒ3ᎰᏂᎩ ᎪᏂᎩ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎰᏂᎩ ᎪᏂᎩ ᎪᎩ " + + "ᎠᏟᎢᎵᏒ\x19ᎰᏩᏗ ᎠᏟᎢᎵᏒ)ᎰᏩᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᎰᏩᏗ ᎪᎩ ᎠᏟᎢᎵᏒ/ᎢᏂᏗᎢᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᎠᏂᏴᏫ" + + "Ꮿ ᎠᎺᏉᎯ ᎠᏟᎢᎵᏒ+ᎢᏂᏙᏓᎶᏂᎨᏍᏛ ᎠᏟᎢᎵᏒ,ᎠᏰᏟ ᎢᏂᏙᏂᏍᏯ ᎠᏟᎢᎵᏒ6ᏗᎧᎸᎬ ᏗᏜ ᎢᏂᏙᏂᏍᏯ ᎠᏟᎢᎵᏒ6ᏭᏕᎵ" + + "Ꭼ ᏗᏜ ᎢᏂᏙᏂᏍᏯ ᎠᏟᎢᎵᏒ\x19ᎢᎳᏂ ᎠᏟᎢᎵᏒ)ᎢᎳᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎢᎳᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᎢᎫᏥ" + + "Ꭷ ᎠᏟᎢᎵᏒ,ᎢᎫᏥᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎢᎫᏥᎧ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎢᏏᎵᏱ ᎠᏟᎢᎵᏒ,ᎢᏏᎵᏱ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-" + + "ᎢᏏᎵᏱ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᏣᏩᏂᏏ ᎠᏟᎢᎵᏒ,ᏣᏩᏂᏏ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᏣᏩᏂᏏ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ/ᏗᎧᎸ" + + "Ꭼ ᎧᏎᎧᏍᏕᏂ ᎠᏟᎢᎵᏒ/ᏭᏕᎵᎬ ᎧᏎᎧᏍᏕᏂ ᎠᏟᎢᎵᏒ\x1cᎪᎵᎠᏂ ᎠᏟᎢᎵᏒ,ᎪᎵᎠᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᎪᎵᎠᏂ Ꭺ" + + "Ꭿ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x19ᎪᏍᎴ ᎠᏟᎢᎵᏒ\x22ᏝᏍᏃᏯᏍᎧ ᎠᏟᎢᎵᏒ2ᏝᏍᏃᏯᏍᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᏝᏍᏃᏯᏍᎧ ᎪᎩ " + + "ᎠᏟᎢᎵᏒ\x1fᎩᎵᏣᎢᏍ ᎠᏟᎢᎵᏒ/ᎠᏍᏓᏅᏅ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ&ᎤᎬᏫᏳᎯ ᎭᏫ ᎠᏟᎢᎵᏒ6ᎤᎬᏫᏳᎯ ᎭᏫ ᎠᏟᎶᏍᏗ Ꭰ" + + "ᏟᎢᎵᏒ7ᎤᎬᏫᏳᎯ ᎭᏫ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ)ᎹᏇᎵ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ\x1cᎹᎦᏓᏂ ᎠᏟᎢᎵᏒ,ᎹᎦᏓᏂ ᎠᏟᎢᎵᏒ ᎠᏟ" + + "ᎢᎵᏒ#ᎹᎦᏓᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x1fᎹᎴᏏᎢᎠ ᎠᏟᎢᎵᏒ\x1fᎹᎵᏗᏫᏍ ᎠᏟᎢᎵᏒ\x1fᎹᎵᎨᏌᏏ ᎠᏟᎢᎵᏒ)ᎹᏌᎵ ᏚᎦᏚ" + + "ᏛᎢ ᎠᏟᎢᎵᏒ\x1fᎼᎵᏏᎥᏍ ᎠᏟᎢᎵᏒ/ᎼᎵᏏᎥᏍ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᎼᎵᏏᎥᏍ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᎹᏌᏂ ᎠᏟᎢᎵᏒ6" + + "ᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎠᏟᎢᎵᏒFᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒJᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎪᎯ ᎢᎦ Ꭰ" + + "ᏟᎢᎵᏍᏒᎩ,ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎠᏟᎢᎵᏒ<ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ@ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒ" + + "Ꭹ#ᎤᎳᏂ ᏆᏙᎸ ᎠᏟᎢᎵᏒ3ᎤᎳᏂ ᏆᏙᎸ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎤᎳᏂ ᏆᏙᎸ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎹᏍᎦᏫ ᎠᏟᎢᎵᏒ,ᎹᏍᎦ" + + "Ꮻ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎹᏍᎦᏫ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎹᏯᎹᎵ ᎠᏟᎢᎵᏒ\x16ᎾᎷ ᎠᏟᎢᎵᏒ\x19ᏁᏆᎵ ᎠᏟᎢᎵᏒ)ᎢᏤ " + + "ᎧᎵᏙᏂᎠᏂ ᎠᏟᎢᎵᏒ9ᎢᏤ ᎧᎵᏙᏂᎠᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᎢᏤ ᎧᎵᏙᏂᎠᏂ ᎪᎩ ᎠᏟᎢᎵᏒ&ᎢᏤ ᏏᎢᎴᏂᏗ ᎠᏟᎢᎵᏒ6Ꭲ" + + "Ꮴ ᏏᎢᎴᏂᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ7ᎢᏤ ᏏᎢᎴᏂᏗ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ.ᎢᏤᎤᏂᏩᏛᏓᎦᏙᎯ ᎠᏟᎢᎵᏒ>ᎢᏤᎤᏂᏩᏛᏓᎦᏙᎯ " + + "ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒBᎢᏤᎤᏂᏩᏛᏓᎦᏙᎯ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x16ᏂᏳ ᎠᏟᎢᎵᏒ/ᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ-ᏪᎾᏅ" + + "Ꮩ Ꮥ ᏃᎶᎾᎭ ᎠᏟᎢᎵᏒ=ᏪᎾᏅᏙ Ꮥ ᏃᎶᎾᎭ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ4ᏪᎾᏅᏙ Ꮥ ᏃᎶᎾᎭ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᏃᏬᏏᏈᏍᎧ " + + "ᎠᏟᎢᎵᏒ2ᏃᏬᏏᏈᏍᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᏃᏬᏏᏈᏍᎧ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎣᎻᏍᎧ ᎠᏟᎢᎵᏒ,ᎣᎻᏍᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵ" + + "Ꮢ#ᎣᎻᏍᎧ ᎪᎩ ᎠᏟᎢᎵᏒ\x1fᏆᎩᏍᏖᏂ ᎠᏟᎢᎵᏒ/ᏆᎩᏍᏖᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᏆᎩᏍᏖᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᏆᎷ " + + "ᎠᏟᎢᎵᏒ'ᏆᏇ ᎢᏤ ᎩᎢᏂ ᎠᏟᎢᎵᏒ\x19ᏆᎵᏇ ᎠᏟᎢᎵᏒ)ᏆᎵᏇ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᏆᎵᏇ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᏇᎷ " + + "ᎠᏟᎢᎵᏒ&ᏇᎷ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1dᏇᎷ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᎠᏂᏈᎵᎩᏃ ᎠᏟᎢᎵᏒ2ᎠᏂᏈᎵᎩᏃ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ" + + ")ᎠᏂᏈᎵᎩᏃ ᎪᎩ ᎠᏟᎢᎵᏒ2ᏧᎴᎯᏌᏅᎯ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ7ᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶᏂ ᎠᏟᎢᎵᏒGᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶ" + + "Ꮒ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒHᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᏈᎧᎵᏂ ᎠᏟᎢᎵᏒ\x19ᏉᎾᏇ ᎠᏟᎢᎵᏒ%" + + "ᏈᏯᏂᎩᏰᏂᎩ ᎠᏟᎢᎵᏒ\x1fᎴᏳᏂᎠᏂ ᎠᏟᎢᎵᏒ\x19ᎳᏞᎳ ᎠᏟᎢᎵᏒ\x1cᏌᎧᎵᏂ ᎠᏟᎢᎵᏒ,ᏌᎧᎵᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢ" + + "ᎵᏒ#ᏌᎧᎵᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᏌᎼᎠ ᎠᏟᎢᎵᏒ)ᏌᎼᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᏌᎼᎠ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᏎᏤᎴᏏ" + + " ᎠᏟᎢᎵᏒ/ᏏᏂᎦᏉᎵ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᏐᎶᎹᏂ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ)ᏧᎦᎾᏮ ᏣᎠᏥᎢ ᎠᏟᎢᎵᏒ\x1cᏒᎵᎾᎻ ᎠᏟᎢᎵᏒ" + + "\x19ᏏᏲᏩ ᎠᏟᎢᎵᏒ\x19ᏔᎯᏘ ᎠᏟᎢᎵᏒ\x19ᏔᏱᏇ ᎠᏟᎢᎵᏒ)ᏔᏱᏇ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᏔᏱᏇ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ" + + "\x22ᏔᏥᎩᏍᏕᏂ ᎠᏟᎢᎵᏒ\x1cᏙᎨᎳᎤ ᎠᏟᎢᎵᏒ\x19ᏙᎾᎦ ᎠᏟᎢᎵᏒ)ᏙᎾᎦ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᏙᎾᎦ ᎪᎩ ᎠᏟᎢᎵᏒ" + + "\x16ᏧᎩ ᎠᏟᎢᎵᏒ(ᏛᎵᎩᎺᏂᏍᏔᏂ ᎠᏟᎢᎵᏒ8ᏛᎵᎩᎺᏂᏍᏔᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ/ᏛᎵᎩᎺᏂᏍᏔᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᏚᏩ" + + "Ꮇ ᎠᏟᎢᎵᏒ\x19ᏳᎷᏇ ᎠᏟᎢᎵᏒ)ᏳᎷᏇ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᏳᎷᏇ ᎪᎩ ᎠᏟᎢᎵᏒ%ᎤᏍᏇᎩᏍᏖᏂ ᎠᏟᎢᎵᏒ5ᎤᏍᏇᎩᏍᏖ" + + "Ꮒ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᎤᏍᏇᎩᏍᏖᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᏩᏄᏩᏚ ᎠᏟᎢᎵᏒ,ᏩᏄᏩᏚ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᏩᏄᏩᏚ ᎪᎩ " + + "ᎠᏟᎢᎵᏒ\x1fᏪᏁᏑᏪᎳ ᎠᏟᎢᎵᏒ%ᏭᎳᏗᏬᏍᏙᎩ ᎠᏟᎢᎵᏒ5ᏭᎳᏗᏬᏍᏙᎩ ᎠᏟᎢᎵᏒ ᎠᏟᎢᎵᏒ,ᏭᎳᏗᏬᏍᏙᎩ ᎪᎩ ᎠᏟᎢᎵ" + + "Ꮢ\x1fᏬᎶᎪᏝᏗ ᎠᏟᎢᎵᏒ/ᏬᎶᎪᏝᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᏬᎶᎪᏝᏗ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᏬᏍᏙᎧ ᎠᏟᎢᎵᏒ)ᎤᏰᏨ ᎤᎦ" + + "ᏚᏛᎢ ᎠᏟᎢᎵᏒ*ᏩᎵᏍ ᎠᎴ ᏊᏚᎾ ᎠᏟᎢᎵᏒ\x1cᏯᎫᏥᎧ ᎠᏟᎢᎵᏒ,ᏯᎫᏥᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᏯᎫᏥᎧ ᎪᎩ ᎠᏟᎢᎵ" + + "Ꮢ%ᏰᎧᏖᎵᏂᏊᎦ ᎠᏟᎢᎵᏒ5ᏰᎧᏖᎵᏂᏊᎦ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᏰᎧᏖᎵᏂᏊᎦ ᎪᎩ ᎠᏟᎢᎵᏒ\x03OKT" + +var bucket19 string = "" + // Size: 12614 bytes + "\x10یەکشەممە\x10دووشەممە\x0eسێشەممە\x12چوارشەممە\x12پێنجشەممە\x0aھەینی" + + "\x0aشەممە\x02ی\x02د\x02س\x02چ\x02پ\x02ھ\x02ش\x17چارەکی یەکەم\x17چارەکی د" + + "ووەم\x15چارەکی سێەم\x19چارەکی چوارەم\x05ب.ن\x05د.ن\x0edی MMMMی y G\x19ک" + + "انوونی دووەم\x0aشوبات\x0aئازار\x0aنیسان\x0aئایار\x10حوزەیران\x0cتەمووز" + + "\x06ئاب\x0eئەیلوول\x17تشرینی یەکەم\x17تشرینی دووەم\x17کانونی یەکەم\x02ک" + + "\x02ئ\x02ن\x02ح\x02ت\x04١ش\x04٢ش\x04٣ش\x04٤ش\x04٥ش\x04چ١\x04چ٢\x04چ٣\x04" + + "چ٤\x11پێش زایین\x0cزایینی\x05پ.ن\x02ز\x0cdی MMMMی y\x10خاکەلێوە\x0eبانە" + + "مەڕ\x10جۆزەردان\x0eپووشپەڕ\x0eگەلاوێژ\x10خەرمانان\x0cڕەزبەر\x10خەزەڵوەر" + + "\x10سەرماوەز\x12بەفرانبار\x10ڕێبەندان\x0cرەشەمێ\x06ساڵ\x08مانگ\x0aھەفتە" + + "\x06ڕۆژ\x13ڕۆژی ھەفتە\x0eکاتژمێر\x0aخولەک\x08چرکە\x0dEEEE, d. M. y\x07d." + + " M. y\x0ePrvní měsíc\x0eDruhý měsíc\x0fTřetí měsíc\x10Čtvrtý měsíc\x0ePá" + + "tý měsíc\x0fŠestý měsíc\x0eSedmý měsíc\x0dOsmý měsíc\x10Devátý měsíc\x10" + + "Desátý měsíc\x13Jedenáctý měsíc\x12Dvanáctý měsíc\x05Krysa\x05Buvol\x04T" + + "ygr\x06Zajíc\x04Drak\x03Had\x05Kůň\x04Koza\x05Opice\x06Kohout\x03Pes\x05" + + "Vepř\x10EEEE d. MMMM y G\x0bd. MMMM y G\x09d. M. y G\x0edd.MM.yy GGGGG" + + "\x03led\x04úno\x04bře\x03dub\x04kvě\x04čvn\x04čvc\x03srp\x05zář\x05říj" + + "\x03lis\x03pro\x05ledna\x06února\x07března\x05dubna\x07května\x07června" + + "\x09července\x05srpna\x07září\x07října\x09listopadu\x08prosince\x05leden" + + "\x05únor\x07březen\x05duben\x07květen\x07červen\x09červenec\x05srpen\x07" + + "říjen\x08listopad\x08prosinec\x02ne\x02po\x03út\x02st\x03čt\x03pá\x02so" + + "\x07neděle\x09pondělí\x07úterý\x07středa\x08čtvrtek\x06pátek\x06sobota" + + "\x0e1. čtvrtletí\x0e2. čtvrtletí\x0e3. čtvrtletí\x0e4. čtvrtletí\x06půln" + + ".\x04dop.\x04pol.\x04odp.\x02r.\x05več.\x04v n.\x05půl.\x02o.\x02v.\x02n" + + ".\x07půlnoc\x07poledne\x05ráno\x09dopoledne\x09odpoledne\x06večer\x06v n" + + "oci\x03noc\x0apř. n. l.\x05n. l.\x08př.n.l.\x04n.l.\x0eEEEE d. MMMM y" + + "\x09d. MMMM y\x11EEEE, d. MMMM y G\x0ePřed R. O. C.\x0aletopočet\x03rok" + + "\x0bminulý rok\x09tento rok\x0epříští rok\x0aza {0} rok\x0bza {0} roky" + + "\x0bza {0} roku\x0aza {0} let\x0fpřed {0} rokem\x0epřed {0} lety\x0epřed" + + " {0} roku\x09za {0} r.\x09za {0} l.\x0cpřed {0} r.\x0cpřed {0} l.\x0bčtv" + + "rtletí\x13minulé čtvrtletí\x10toto čtvrtletí\x16příští čtvrtletí\x12za {" + + "0} čtvrtletí\x16před {0} čtvrtletím\x17před {0} čtvrtletími\x15před {0} " + + "čtvrtletí\x01Q\x07měsíc\x0fminulý měsíc\x0dtento měsíc\x12příští měsíc" + + "\x0eza {0} měsíc\x0fza {0} měsíce\x10za {0} měsíců\x13před {0} měsícem" + + "\x12před {0} měsíci\x12před {0} měsíce\x05měs.\x0cza {0} měs.\x0fpřed {0" + + "} měs.\x06týden\x0eminulý týden\x0ctento týden\x11příští týden\x0dza {0}" + + " týden\x0dza {0} týdny\x0dza {0} týdne\x0eza {0} týdnů\x11před {0} týdne" + + "m\x10před {0} týdny\x10před {0} týdne\x0cv týdnu {0}\x05týd.\x0dminulý t" + + "ýd.\x0btento týd.\x10příští týd.\x0cza {0} týd.\x0fpřed {0} týd.\x0bv t" + + "ýd. {0}\x03den\x0epředevčírem\x06včera\x04dnes\x06zítra\x0apozítří\x0az" + + "a {0} den\x0aza {0} dny\x0aza {0} dne\x0bza {0} dní\x0epřed {0} dnem\x0d" + + "před {0} dny\x0dpřed {0} dne\x0cden v týdnu\x0fminulou neděli\x0ctuto ne" + + "děli\x12příští neděli\x0eza {0} neděli\x0eza {0} neděle\x0fza {0} nedělí" + + "\x12před {0} nedělí\x13před {0} nedělemi\x11před {0} neděle\x11minulé po" + + "ndělí\x0etoto pondělí\x14příští pondělí\x10za {0} pondělí\x14před {0} po" + + "ndělím\x15před {0} pondělími\x13před {0} pondělí\x0fminulé úterý\x0ctoto" + + " úterý\x12příští úterý\x0eza {0} úterý\x12před {0} úterým\x13před {0} út" + + "erými\x11před {0} úterý\x0fminulou středu\x0ctuto středu\x12příští střed" + + "u\x0eza {0} středu\x0eza {0} středy\x0dza {0} střed\x12před {0} středou" + + "\x13před {0} středami\x11před {0} středy\x10minulý čtvrtek\x0etento čtvr" + + "tek\x13příští čtvrtek\x0fza {0} čtvrtek\x0fza {0} čtvrtky\x0fza {0} čtvr" + + "tku\x10za {0} čtvrtků\x13před {0} čtvrtkem\x12před {0} čtvrtky\x12před {" + + "0} čtvrtku\x0eminulý pátek\x0ctento pátek\x11příští pátek\x0dza {0} páte" + + "k\x0dza {0} pátky\x0dza {0} pátku\x0eza {0} pátků\x11před {0} pátkem\x10" + + "před {0} pátky\x10před {0} pátku\x0eminulou sobotu\x0btuto sobotu\x11pří" + + "ští sobotu\x0dza {0} sobotu\x0dza {0} soboty\x0cza {0} sobot\x11před {0" + + "} sobotou\x12před {0} sobotami\x10před {0} soboty\x0ačást dne\x06hodina" + + "\x0btuto hodinu\x0dza {0} hodinu\x0dza {0} hodiny\x0cza {0} hodin\x11pře" + + "d {0} hodinou\x12před {0} hodinami\x10před {0} hodiny\x08za {0} h\x0bpře" + + "d {0} h\x0btuto minutu\x11před {0} minutou\x12před {0} minutami\x10před " + + "{0} minuty\x0aza {0} min\x0dpřed {0} min\x05nyní\x12před {0} sekundou" + + "\x13před {0} sekundami\x11před {0} sekundy\x08za {0} s\x0bpřed {0} s\x0f" + + "časové pásmo\x0b+H:mm;-H:mm\x06GMT{0}\x03GMT\x13Časové pásmo {0}\x08{0}" + + " (+1)\x08{0} (+0)\x1cKoordinovaný světový čas\x14Britský letní čas\x12Ir" + + "ský letní čas\x0eAcrejský čas\x1aAcrejský standardní čas\x15Acrejský let" + + "ní čas\x10Afghánský čas\x14Středoafrický čas\x15Východoafrický čas\x11Ji" + + "hoafrický čas\x14Západoafrický čas Západoafrický standardní čas\x1bZápad" + + "oafrický letní čas\x0fAljašský čas\x1bAljašský standardní čas\x16Aljašsk" + + "ý letní čas\x0eAlmatský čas\x1aAlmatský standardní čas\x15Almatský letn" + + "í čas\x0fAmazonský čas\x1bAmazonský standardní čas\x16Amazonský letní č" + + "as Severoamerický centrální čas,Severoamerický centrální standardní čas'" + + "Severoamerický centrální letní čas\x1fSeveroamerický východní čas+Severo" + + "americký východní standardní čas&Severoamerický východní letní čas\x1cSe" + + "veroamerický horský čas(Severoamerický horský standardní čas#Severoameri" + + "cký horský letní čas\x1fSeveroamerický pacifický čas+Severoamerický paci" + + "fický standardní čas&Severoamerický pacifický letní čas\x0fAnadyrský čas" + + "\x1bAnadyrský standardní čas\x16Anadyrský letní čas\x0dApijský čas\x19Ap" + + "ijský standardní čas\x14Apijský letní čas\x0eAktauský čas\x1aAktauský st" + + "andardní čas\x15Aktauský letní čas\x0eAktobský čas\x1aAktobský standardn" + + "í čas\x15Aktobský letní čas\x0dArabský čas\x19Arabský standardní čas" + + "\x14Arabský letní čas\x11Argentinský čas\x1dArgentinský standardní čas" + + "\x18Argentinský letní čas\x18Západoargentinský čas$Západoargentinský sta" + + "ndardní čas\x1fZápadoargentinský letní čas\x0fArménský čas\x1bArménský s" + + "tandardní čas\x16Arménský letní čas\x10Atlantický čas\x1cAtlantický stan" + + "dardní čas\x17Atlantický letní čas\x17Středoaustralský čas#Středoaustral" + + "ský standardní čas\x1eStředoaustralský letní čas!Středozápadní australsk" + + "ý čas-Středozápadní australský standardní čas(Středozápadní australský " + + "letní čas\x18Východoaustralský čas$Východoaustralský standardní čas\x1fV" + + "ýchodoaustralský letní čas\x17Západoaustralský čas#Západoaustralský sta" + + "ndardní čas\x1eZápadoaustralský letní čas\x18Ázerbájdžánský čas$Ázerbájd" + + "žánský standardní čas\x1fÁzerbájdžánský letní čas\x0dAzorský čas\x19Azo" + + "rský standardní čas\x14Azorský letní čas\x14Bangladéšský čas Bangladéšsk" + + "ý standardní čas\x1bBangladéšský letní čas\x11Bhútánský čas\x10Bolivijs" + + "ký čas\x11Brasilijský čas\x1dBrasilijský standardní čas\x18Brasilijský l" + + "etní čas\x0fBrunejský čas\x10Kapverdský čas\x1cKapverdský standardní čas" + + "\x17Kapverdský letní čas\x14Čas Caseyho stanice\x10Chamorrský čas\x10Cha" + + "thamský čas\x1cChathamský standardní čas\x17Chathamský letní čas\x0dChil" + + "ský čas\x19Chilský standardní čas\x14Chilský letní čas\x0eČínský čas\x1a" + + "Čínský standardní čas\x15Čínský letní čas\x13Čojbalsanský čas\x1fČojbal" + + "sanský standardní čas\x1aČojbalsanský letní čas\x19Čas Vánočního ostrova" + + "\x19Čas Kokosových ostrovů\x11Kolumbijský čas\x1dKolumbijský standardní " + + "čas\x18Kolumbijský letní čas\x18Čas Cookových ostrovů$Standardní čas Co" + + "okových ostrovů\x1fLetní čas Cookových ostrovů\x0fKubánský čas\x1bKubáns" + + "ký standardní čas\x16Kubánský letní čas\x15Čas Davisovy stanice Čas stan" + + "ice Dumonta d’Urvilla\x16Východotimorský čas\x1cČas Velikonočního ostrov" + + "a(Standardní čas Velikonočního ostrova#Letní čas Velikonočního ostrova" + + "\x11Ekvádorský čas\x15Středoevropský čas!Středoevropský standardní čas" + + "\x1cStředoevropský letní čas\x04SEČ\x05SELČ\x16Východoevropský čas\x22Vý" + + "chodoevropský standardní čas\x1dVýchodoevropský letní čas\x1dDálněvýchod" + + "oevropský čas\x15Západoevropský čas!Západoevropský standardní čas\x1cZáp" + + "adoevropský letní čas\x11Falklandský čas\x1dFalklandský standardní čas" + + "\x18Falklandský letní čas\x10Fidžijský čas\x1cFidžijský standardní čas" + + "\x17Fidžijský letní čas\x19Francouzskoguyanský čas6Čas Francouzských již" + + "ních a antarktických území\x12Galapážský čas\x10Gambierský čas\x10Gruzín" + + "ský čas\x1cGruzínský standardní čas\x17Gruzínský letní čas\x1bČas Gilber" + + "tových ostrovů\x1cGreenwichský střední čas\x16Východogrónský čas\x22Vých" + + "odogrónský standardní čas\x1dVýchodogrónský letní čas\x15Západogrónský č" + + "as!Západogrónský standardní čas\x1cZápadogrónský letní čas\x0dGuamský ča" + + "s\x22Standardní čas Perského zálivu\x0eGuyanský čas\x17Havajsko-aleutský" + + " čas#Havajsko-aleutský standardní čas\x1eHavajsko-aleutský letní čas\x11" + + "Hongkongský čas\x1dHongkongský standardní čas\x18Hongkongský letní čas" + + "\x0dHovdský čas\x19Hovdský standardní čas\x14Hovdský letní čas\x0dIndick" + + "ý čas\x16Indickooceánský čas\x12Indočínský čas\x17Středoindonéský čas" + + "\x18Východoindonéský čas\x17Západoindonéský čas\x0fÍránský čas\x1bÍránsk" + + "ý standardní čas\x16Íránský letní čas\x0eIrkutský čas\x1aIrkutský stand" + + "ardní čas\x15Irkutský letní čas\x0fIzraelský čas\x1bIzraelský standardní" + + " čas\x16Izraelský letní čas\x0eJaponský čas\x1aJaponský standardní čas" + + "\x15Japonský letní čas\x1fPetropavlovsko-kamčatský čas+Petropavlovsko-ka" + + "mčatský standardní čas&Petropavlovsko-kamčatský letní čas\x1cVýchodokaza" + + "chstánský čas\x1bZápadokazachstánský čas\x0eKorejský čas\x1aKorejský sta" + + "ndardní čas\x15Korejský letní čas\x0fKosrajský čas\x12Krasnojarský čas" + + "\x1eKrasnojarský standardní čas\x19Krasnojarský letní čas\x0fKyrgyzský č" + + "as\x10Srílanský čas\x1bČas Rovníkových ostrovů\x17Čas ostrova lorda Howa" + + "#Standardní čas ostrova lorda Howa\x1eLetní čas ostrova lorda Howa\x0eMa" + + "cajský čas\x1aMacajský standardní čas\x15Macajský letní čas\x16Čas ostro" + + "va Macquarie\x10Magadanský čas\x1cMagadanský standardní čas\x17Magadansk" + + "ý letní čas\x0eMalajský čas\x10Maledivský čas\x10Markézský čas\x1cČas M" + + "arshallových ostrovů\x11Mauricijský čas\x1dMauricijský standardní čas" + + "\x18Mauricijský letní čas\x16Čas Mawsonovy stanice\x1dSeverozápadní mexi" + + "cký čas)Severozápadní mexický standardní čas$Severozápadní mexický letní" + + " čas\x18Mexický pacifický čas$Mexický pacifický standardní čas\x1fMexick" + + "ý pacifický letní čas\x14Ulánbátarský čas Ulánbátarský standardní čas" + + "\x1bUlánbátarský letní čas\x0fMoskevský čas\x1bMoskevský standardní čas" + + "\x16Moskevský letní čas\x10Myanmarský čas\x0dNaurský čas\x0fNepálský čas" + + "\x14Novokaledonský čas Novokaledonský standardní čas\x1bNovokaledonský l" + + "etní čas\x14Novozélandský čas Novozélandský standardní čas\x1bNovozéland" + + "ský letní čas\x15Newfoundlandský čas!Newfoundlandský standardní čas\x1cN" + + "ewfoundlandský letní čas\x0eNiuejský čas\x0fNorfolský čas$Čas souostroví" + + " Fernando de Noronha0Standardní čas souostroví Fernando de Noronha+Letní" + + " čas souostroví Fernando de Noronha\x16Severomariánský čas\x12Novosibirs" + + "ký čas\x1eNovosibirský standardní čas\x19Novosibirský letní čas\x0bOmský" + + " čas\x17Omský standardní čas\x12Omský letní čas\x13Pákistánský čas\x1fPá" + + "kistánský standardní čas\x1aPákistánský letní čas\x0ePalauský čas\x17Čas" + + " Papuy-Nové Guiney\x11Paraguayský čas\x1dParaguayský standardní čas\x18P" + + "araguayský letní čas\x10Peruánský čas\x1cPeruánský standardní čas\x17Per" + + "uánský letní čas\x11Filipínský čas\x1dFilipínský standardní čas\x18Filip" + + "ínský letní čas\x1aČas Fénixových ostrovů\x18Pierre-miquelonský čas$Pie" + + "rre-miquelonský standardní čas\x1fPierre-miquelonský letní čas\x18Čas Pi" + + "tcairnova ostrova\x0ePonapský čas\x14Pchjongjangský čas\x11Kyzylordský č" + + "as\x1dKyzylordský standardní čas\x18Kyzylordský letní čas\x11Réunionský " + + "čas\x16Čas Rotherovy stanice\x11Sachalinský čas\x1dSachalinský standard" + + "ní čas\x18Sachalinský letní čas\x0eSamarský čas\x1aSamarský standardní č" + + "as\x15Samarský letní čas\x0eSamojský čas\x1aSamojský standardní čas\x15S" + + "amojský letní čas\x10Seychelský čas\x11Singapurský čas\x1dČas Šalamounov" + + "ých ostrovů\x14Čas Jižní Georgie\x10Surinamský čas\x13Čas stanice Šówa" + + "\x0eTahitský čas\x11Tchajpejský čas\x1dTchajpejský standardní čas\x18Tch" + + "ajpejský letní čas\x10Tádžický čas\x10Tokelauský čas\x0eTonžský čas\x1aT" + + "onžský standardní čas\x15Tonžský letní čas\x0eChuukský čas\x10Turkmenský" + + " čas\x1cTurkmenský standardní čas\x17Turkmenský letní čas\x0eTuvalský ča" + + "s\x10Uruguayský čas\x1cUruguayský standardní čas\x17Uruguayský letní čas" + + "\x0dUzbecký čas\x19Uzbecký standardní čas\x14Uzbecký letní čas\x0fVanuat" + + "ský čas\x1bVanuatský standardní čas\x16Vanuatský letní čas\x11Venezuelsk" + + "ý čas\x13Vladivostocký čas\x1fVladivostocký standardní čas\x1aVladivost" + + "ocký letní čas\x12Volgogradský čas\x1eVolgogradský standardní čas\x19Vol" + + "gogradský letní čas\x13Čas stanice Vostok\x11Čas ostrova Wake\x1dČas ost" + + "rovů Wallis a Futuna\x0eJakutský čas\x1aJakutský standardní čas\x15Jakut" + + "ský letní čas\x16Jekatěrinburský čas\x22Jekatěrinburský standardní čas" + + "\x1dJekatěrinburský letní čas\x02د\x02س\x02ج\x02ج\x02ش\x02ط\x02ش\x02آ" + + "\x02و\x02ن\x02ا\x02ث\x02ج\x02س\x02ا\x02م\x02ع\x02ق\x02د\x02ف\x02ن\x02ژ" + + "\x02ب\x0bza {0} lata\x0aza {0} lat\x02ut\x02st\x03št\x02pi\x02so\x0bbudú" + + "ci rok\x02sr\x03če\x02pe\x02su" + +var bucket20 string = "" + // Size: 14326 bytes + "\x0bі҆аⷩ҇\x09феⷡ҇\x09маⷬ҇\x0bа҆пⷬ҇\x07маꙵ\x0cі҆ꙋⷩ҇\x0cі҆ꙋⷧ҇\x0dа҆́ѵⷢ҇" + + "\x09сеⷫ҇\x09ѻ҆кⷮ\x09ноеⷨ\x09деⷦ҇\x04І҆\x02Ф\x02М\x04А҆\x02С\x04Ѻ҆\x02Н" + + "\x02Д\x17і҆аннꙋа́рїа\x15феврꙋа́рїа\x0cма́рта\x14а҆прі́ллїа\x0aма́їа\x0fі" + + "҆ꙋ́нїа\x0fі҆ꙋ́лїа\x13а҆́ѵгꙋста\x16септе́мврїа\x14ѻ҆ктѡ́врїа\x12ное́мврї" + + "а\x14деке́мврїа\x17і҆аннꙋа́рїй\x15феврꙋа́рїй\x0cма́ртъ\x14а҆прі́ллїй" + + "\x0aма́їй\x0fі҆ꙋ́нїй\x0fі҆ꙋ́лїй\x13а҆́ѵгꙋстъ\x16септе́мврїй\x14ѻ҆ктѡ́врї" + + "й\x12ное́мврїй\x14деке́мврїй\x0bндⷧ҇ѧ\x09пнⷣе\x0bвтоⷬ҇\x09срⷣе\x09чеⷦ҇" + + "\x09пѧⷦ҇\x0aсꙋⷠ҇\x02П\x02В\x02Ч\x0eнедѣ́лѧ\x1aпонедѣ́льникъ\x12вто́рникъ" + + "\x0cсреда̀\x16четверто́къ\x0eпѧто́къ\x11сꙋббѡ́та\x11а҃-ѧ чеⷡ҇\x11в҃-ѧ че" + + "ⷡ҇\x11г҃-ѧ чеⷡ҇\x11д҃-ѧ чеⷡ҇\x04а҃\x04в҃\x04г҃\x04д҃\x1aа҃-ѧ че́тверть" + + "\x1aв҃-ѧ че́тверть\x1aг҃-ѧ че́тверть\x1aд҃-ѧ че́тверть\x04ДП\x04ПП\x15пр" + + "е́дъ р.\u00a0х.\x0dпо р.\u00a0х.\x0aѿ р. х.\x0bѿ р.\u00a0х.\x15EEEE, d " + + "MMMM 'л'. y.\x07y.MM.dd\x0aвѣ́къ\x0aлѣ́то\x03л.\x12че́тверть\x09чеⷡ҇\x0e" + + "мѣ́сѧцъ\x0bмцⷭ҇ъ\x10седми́ца\x07сеⷣ\x0aде́нь\x0cвчера̀\x0cдне́сь\x11наꙋ" + + "́трїе\x09деⷩ҇\x1bде́нь седми́цы\x09ДП/ПП\x0aча́съ\x09чаⷭ҇\x0fминꙋ́та" + + "\x09миⷩ҇\x11секꙋ́нда\x09сеⷦ҇\x1fпо́ѧсъ часовѡ́мъ\x12{0} (вре́мѧ)!{0} (лѣ" + + "́тнее вре́мѧ)!{0} (зи́мнее вре́мѧ)3среднеамерїка́нское вре́мѧBсреднеаме" + + "рїка́нское зи́мнее вре́мѧBсреднеамерїка́нское лѣ́тнее вре́мѧ7восточноам" + + "ерїка́нское вре́мѧFвосточноамерїка́нское зи́мнее вре́мѧFвосточноамерїка" + + "́нское лѣ́тнее вре́мѧ<а҆мерїка́нское наго́рнее вре́мѧKа҆мерїка́нское на" + + "го́рнее зи́мнее вре́мѧKа҆мерїка́нское наго́рнее лѣ́тнее вре́мѧ)тихоѻкеа" + + "́нское вре́мѧ8тихоѻкеа́нское зи́мнее вре́мѧ8тихоѻкеа́нское лѣ́тнее вре́" + + "мѧ+а҆тланті́ческое вре́мѧ:а҆тланті́ческое зи́мнее вре́мѧ:а҆тланті́ческо" + + "е лѣ́тнее вре́мѧ1среднеєѵрѡпе́йское вре́мѧ@среднеєѵрѡпе́йское зи́мнее в" + + "ре́мѧ@среднеєѵрѡпе́йское лѣ́тнее вре́мѧ5восточноєѵрѡпе́йское вре́мѧDвос" + + "точноєѵрѡпе́йское зи́мнее вре́мѧDвосточноєѵрѡпе́йское лѣ́тнее вре́мѧ@вр" + + "е́мѧ въ калинингра́дѣ и҆ ми́нскѣ3западноєѵрѡпе́йское вре́мѧBзападноєѵрѡ" + + "пе́йское зи́мнее вре́мѧBзападноєѵрѡпе́йское лѣ́тнее вре́мѧ7сре́днее вре" + + "́мѧ по грі́нꙋичꙋ$и҆ркꙋ́тское вре́мѧ3и҆ркꙋ́тское зи́мнее вре́мѧ3и҆ркꙋ́тс" + + "кое лѣ́тнее вре́мѧ+восто́чный казахста́нъ)за́падный казахста́нъ'красноѧ" + + "́рское вре́мѧ6красноѧ́рское зи́мнее вре́мѧ6красноѧ́рское лѣ́тнее вре́мѧ" + + "\x12кирги́зїа%магада́нское вре́мѧ4магада́нское зи́мнее вре́мѧ4магада́нск" + + "ое лѣ́тнее вре́мѧ#моско́вское вре́мѧ2моско́вское зи́мнее вре́мѧ2моско́в" + + "ское лѣ́тнее вре́мѧ)новосиби́рское вре́мѧ8новосиби́рское зи́мнее вре́мѧ" + + "8новосиби́рское лѣ́тнее вре́мѧ\x1dѻ҆́мское вре́мѧ,ѻ҆́мское зи́мнее вре́м" + + "ѧ,ѻ҆́мское лѣ́тнее вре́мѧ$вре́мѧ на сахали́нѣ3зи́мнее вре́мѧ на сахали́" + + "нѣ3лѣ́тнее вре́мѧ на сахали́нѣ+владивосто́цкое вре́мѧ:владивосто́цкое з" + + "и́мнее вре́мѧ:владивосто́цкое лѣ́тнее вре́мѧ)волгогра́дское вре́мѧ8волг" + + "огра́дское зи́мнее вре́мѧ8волгогра́дское лѣ́тнее вре́мѧ#ꙗ҆кꙋ́тское вре́" + + "мѧ2ꙗ҆кꙋ́тское зи́мнее вре́мѧ2ꙗ҆кꙋ́тское лѣ́тнее вре́мѧ2є҆катерїнбꙋ́ржск" + + "ое вре́мѧAє҆катерїнбꙋ́ржское зи́мнее вре́мѧAє҆катерїнбꙋ́ржское лѣ́тнее " + + "вре́мѧ\x0a{1} am {0}\x03Ion\x05Chwef\x03Maw\x06Ebrill\x03Mai\x03Meh\x05" + + "Gorff\x04Awst\x04Medi\x03Hyd\x04Tach\x04Rhag\x06Ionawr\x08Chwefror\x06Ma" + + "wrth\x07Mehefin\x0aGorffennaf\x06Hydref\x08Tachwedd\x07Rhagfyr\x03Chw" + + "\x03Ebr\x03Gor\x08Dydd Sul\x09Dydd Llun\x0bDydd Mawrth\x0cDydd Mercher" + + "\x08Dydd Iau\x0bDydd Gwener\x0bDydd Sadwrn\x03Ch1\x03Ch2\x03Ch3\x03Ch4" + + "\x0cchwarter 1af\x0c2il chwarter\x0d3ydd chwarter\x0d4ydd chwarter\x02yb" + + "\x02yh\x09Cyn Crist\x14Cyn Cyfnod Cyffredin\x09Oed Crist\x10Cyfnod Cyffr" + + "edin\x02CC\x02OC\x01C\x01O\x08dd/MM/yy\x0c{1} 'am' {0}\x03oes\x08blwyddy" + + "n\x07llynedd\x05eleni\x0eblwyddyn nesaf\x11ymhen {0} mlynedd\x0eymhen bl" + + "wyddyn\x11ymhen {0} flynedd\x11ymhen {0} blynedd\x18{0} o flynyddoedd yn" + + " ôl\x0fblwyddyn yn ôl\x12{0} flynedd yn ôl\x12{0} blynedd yn ôl\x08chwar" + + "ter\x0dchwarter olaf\x0cchwarter hwn\x0echwarter nesaf\x15ymhen {0} o ch" + + "warteri\x12ymhen {0} chwarter\x16{0} o chwarteri yn ôl\x13{0} chwarter y" + + "n ôl\x03mis\x0cmis diwethaf\x09y mis hwn\x09mis nesaf\x0dymhen {0} mis" + + "\x09ymhen mis\x0cymhen deufis\x0e{0} mis yn ôl\x0e{0} fis yn ôl\x0ddeufi" + + "s yn ôl\x07wythnos\x11wythnos ddiwethaf\x0eyr wythnos hon\x0dwythnos nes" + + "af\x11ymhen {0} wythnos\x0dymhen wythnos\x0fymhen pythefnos\x12{0} wythn" + + "os yn ôl\x0bwythnos {0}\x10pythefnos yn ôl\x04dydd\x06echdoe\x04ddoe\x06" + + "heddiw\x05yfory\x08drennydd\x11ymhen {0} diwrnod\x0dymhen diwrnod\x0eymh" + + "en deuddydd\x0dymhen tridiau\x12{0} diwrnod yn ôl\x13{0} ddiwrnod yn ôl" + + "\x12dydd o’r wythnos\x11dydd Sul diwethaf\x0cdydd Sul yma\x0edydd Sul ne" + + "saf\x12ymhen {0} Dydd Sul\x13ymhen {0} Ddydd Sul\x13{0} Dydd Sul yn ôl" + + "\x14{0} Ddydd Sul yn ôl\x0cSul diwethaf\x07Sul yma\x09Sul nesaf\x12dydd " + + "Llun diwethaf\x0ddydd Llun yma\x0fdydd Llun nesaf\x13ymhen {0} Dydd Llun" + + "\x14ymhen {0} Ddydd Llun\x14{0} dydd Llun yn ôl\x15{0} ddydd Llun yn ôl" + + "\x0dLlun diwethaf\x08Llun yma\x0aLlun nesaf\x14dydd Mawrth diwethaf\x0fd" + + "ydd Mawrth yma\x11dydd Mawrth nesaf\x15ymhen {0} dydd Mawrth\x16ymhen {0" + + "} ddydd Mawrth\x16{0} dydd Mawrth yn ôl\x17{0} ddydd Mawrth yn ôl\x0fMaw" + + "rth diwethaf\x0aMawrth yma\x0cMawrth nesaf\x0dMaw. diwethaf\x08Maw. yma" + + "\x0aMaw. nesaf\x15dydd Mercher diwethaf\x10dydd Mercher yma\x12dydd Merc" + + "her nesaf\x16ymhen {0} dydd Mercher\x17ymhen {0} ddydd Mercher\x17{0} dy" + + "dd Mercher yn ôl\x18{0} ddydd Mercher yn ôl\x10Mercher diwethaf\x0bMerch" + + "er yma\x0dMercher nesaf\x0fMerch. diwethaf\x0aMerch. yma\x0cMerch. nesaf" + + "\x11dydd Iau diwethaf\x0cdydd Iau yma\x0edydd Iau nesaf\x12ymhen {0} dyd" + + "d Iau\x13ymhen {0} ddydd Iau\x13{0} dydd Iau yn ôl\x14{0} ddydd Iau yn ô" + + "l\x0cIau diwethaf\x07Iau yma\x09Iau nesaf\x12ymhen {0} ddau Iau\x14dydd " + + "Gwener diwethaf\x0fdydd Gwener yma\x11dydd Gwener nesaf\x15ymhen {0} dyd" + + "d Gwener\x16ymhen {0} ddydd Gwener\x16{0} dydd Gwener yn ôl\x17{0} ddydd" + + " Gwener yn ôl\x0fGwener diwethaf\x0aGwener yma\x0cGwener nesaf\x0eGwen. " + + "diwethaf\x09Gwen. yma\x0bGwen. nesaf\x14dydd Sadwrn diwethaf\x0fdydd Sad" + + "wrn yma\x11dydd Sadwrn nesaf\x15ymhen {0} dydd Sadwrn\x16ymhen {0} ddydd" + + " Sadwrn\x16{0} dydd Sadwrn yn ôl\x17{0} ddydd Sadwrn yn ôl\x0fSadwrn diw" + + "ethaf\x0aSadwrn yma\x0cSadwrn nesaf\x0dSad. diwethaf\x08Sad. yma\x0aSad." + + " nesaf\x05YB/YH\x03awr\x0ayr awr hon\x0dymhen {0} awr\x09ymhen awr\x0e{0" + + "} awr yn ôl\x0aawr yn ôl\x05munud\x0by funud hon\x0fymhen {0} munud\x0by" + + "mhen munud\x0fymhen {0} funud\x10{0} munud yn ôl\x10{0} funud yn ôl\x04m" + + "un.\x0eymhen {0} mun.\x0eymhen {0} fun.\x0f{0} mun. yn ôl\x0f{0} fun. yn" + + " ôl\x06eiliad\x04nawr\x10ymhen {0} eiliad\x0cymhen eiliad\x11{0} eiliad " + + "yn ôl\x0deiliad yn ôl\x0dcylchfa amser\x09Amser {0}\x0dAmser Haf {0}\x11" + + "Amser Safonol {0}\x11Amser Haf Prydain\x12Amser Haf Iwerddon\x11Amser Af" + + "ghanistan\x18Amser Canolbarth Affrica\x15Amser Dwyrain Affrica\x18Amser " + + "Safonol De Affrica\x17Amser Gorllewin Affrica\x1fAmser Safonol Gorllewin" + + " Affrica\x1bAmser Haf Gorllewin Affrica\x0cAmser Alaska\x14Amser Safonol" + + " Alaska\x10Amser Haf Alaska\x0eAmser Amazonas\x16Amser Safonol Amazonas" + + "\x12Amser Haf Amazonas Amser Canolbarth Gogledd America(Amser Safonol Ca" + + "nolbarth Gogledd America$Amser Haf Canolbarth Gogledd America\x1dAmser D" + + "wyrain Gogledd America%Amser Safonol Dwyrain Gogledd America!Amser Haf D" + + "wyrain Gogledd America Amser Mynyddoedd Gogledd America(Amser Safonol My" + + "nyddoedd Gogledd America$Amser Haf Mynyddoedd Gogledd America#Amser Cefn" + + "for Tawel Gogledd America+Amser Safonol Cefnfor Tawel Gogledd America'Am" + + "ser Haf Cefnfor Tawel Gogledd America\x0aAmser Apia\x12Amser Safonol Api" + + "a\x0eAmser Haf Apia\x0eAmser Arabaidd\x16Amser Safonol Arabaidd\x12Amser" + + " Haf Arabaidd\x11Amser yr Ariannin\x16Amser Safonol Ariannin\x12Amser Ha" + + "f Ariannin\x18Amser Gorllewin Ariannin Amser Safonol Gorllewin Ariannin" + + "\x1cAmser Haf Gorllewin Ariannin\x0dAmser Armenia\x15Amser Safonol Armen" + + "ia\x11Amser Haf Armenia\x18Amser Cefnfor yr Iwerydd Amser Safonol Cefnfo" + + "r yr Iwerydd\x1cAmser Haf Cefnfor yr Iwerydd\x1aAmser Canolbarth Awstral" + + "ia\x22Amser Safonol Canolbarth Awstralia\x1eAmser Haf Canolbarth Awstral" + + "ia$Amser Canolbarth Gorllewin Awstralia,Amser Safonol Canolbarth Gorllew" + + "in Awstralia(Amser Haf Canolbarth Gorllewin Awstralia\x17Amser Dwyrain A" + + "wstralia\x1fAmser Safonol Dwyrain Awstralia\x1bAmser Haf Dwyrain Awstral" + + "ia\x19Amser Gorllewin Awstralia!Amser Safonol Gorllewin Awstralia\x1dAms" + + "er Haf Gorllewin Awstralia\x10Amser Aserbaijan\x18Amser Safonol Aserbaij" + + "an\x14Amser Haf Aserbaijan\x0fAmser yr Azores\x17Amser Safonol yr Azores" + + "\x13Amser Haf yr Azores\x10Amser Bangladesh\x18Amser Safonol Bangladesh" + + "\x14Amser Haf Bangladesh\x0cAmser Bhutan\x0dAmser Bolivia\x0fAmser Brasí" + + "lia\x17Amser Safonol Brasília\x13Amser Haf Brasília\x17Amser Brunei Daru" + + "ssalam\x10Amser Cabo Verde\x18Amser Safonol Cabo Verde\x14Amser Haf Cabo" + + " Verde\x0eAmser Chamorro\x0dAmser Chatham\x15Amser Safonol Chatham\x11Am" + + "ser Haf Chatham\x0bAmser Chile\x13Amser Safonol Chile\x0fAmser Haf Chile" + + "\x0dAmser Tsieina\x15Amser Safonol Tsieina\x11Amser Haf Tsieina\x10Amser" + + " Choibalsan\x18Amser Safonol Choibalsan\x14Amser Haf Choibalsan\x14Amser" + + " Ynys Y Nadolig\x14Amser Ynysoedd Cocos\x0eAmser Colombia\x16Amser Safon" + + "ol Colombia\x12Amser Haf Colombia\x13Amser Ynysoedd Cook\x1bAmser Safono" + + "l Ynysoedd Cook\x1eAmser Hanner Haf Ynysoedd Cook\x0aAmser Cuba\x12Amser" + + " Safonol Cuba\x0eAmser Haf Cuba\x0bAmser Davis\x18Amser Dumont-d’Urville" + + "\x13Amser Dwyrain Timor\x11Amser Ynys y Pasg\x19Amser Safonol Ynys y Pas" + + "g\x15Amser Haf Ynys y Pasg\x0dAmser Ecuador\x16Amser Canolbarth Ewrop" + + "\x1eAmser Safonol Canolbarth Ewrop\x1aAmser Haf Canolbarth Ewrop\x13Amse" + + "r Dwyrain Ewrop\x1bAmser Safonol Dwyrain Ewrop\x17Amser Haf Dwyrain Ewro" + + "p\x18Amser Dwyrain Pell Ewrop\x15Amser Gorllewin Ewrop\x1dAmser Safonol " + + "Gorllewin Ewrop\x19Amser Haf Gorllewin Ewrop!Amser Ynysoedd Falklands/Ma" + + "lvinas)Amser Safonol Ynysoedd Falklands/Malvinas%Amser Haf Ynysoedd Falk" + + "lands/Malvinas\x0aAmser Fiji\x12Amser Safonol Fiji\x0eAmser Haf Fiji\x15" + + "Amser Guyane Ffrengig\x22Amser Deheuol ac Antarctig Frengig\x0fAmser Gal" + + "apagos\x0dAmser Gambier\x0dAmser Georgia\x15Amser Safonol Georgia\x11Ams" + + "er Haf Georgia\x16Amser Ynysoedd Gilbert\x17Amser Safonol Greenwich\x19A" + + "mser Dwyrain yr Ynys Las!Amser Safonol Dwyrain yr Ynys Las\x1dAmser Haf " + + "Dwyrain yr Ynys Las\x1bAmser Gorllewin yr Ynys Las#Amser Safonol Gorllew" + + "in yr Ynys Las\x1fAmser Haf Gorllewin yr Ynys Las\x15Amser Safonol y Gwl" + + "ff\x0cAmser Guyana\x15Amser Hawaii-Aleutian\x1dAmser Safonol Hawaii-Aleu" + + "tian\x19Amser Haf Hawaii-Aleutian\x0fAmser Hong Kong\x17Amser Safonol Ho" + + "ng Kong\x13Amser Haf Hong Kong\x0aAmser Hovd\x12Amser Safonol Hovd\x0eAm" + + "ser Haf Hovd\x0bAmser India\x13Amser Cefnfor India\x12Amser Indo-Tsieina" + + "\x1aAmser Canolbarth Indonesia\x17Amser Dwyrain Indonesia\x19Amser Gorll" + + "ewin Indonesia\x0aAmser Iran\x12Amser Safonol Iran\x0eAmser Haf Iran\x0d" + + "Amser Irkutsk\x15Amser Safonol Irkutsk\x11Amser Haf Irkutsk\x0cAmser Isr" + + "ael\x14Amser Safonol Israel\x10Amser Haf Israel\x0cAmser Siapan\x14Amser" + + " Safonol Siapan\x10Amser Haf Siapan\x18Amser Dwyrain Casachstan\x1aAmser" + + " Gorllewin Casachstan\x0bAmser Corea\x13Amser Safonol Corea\x0fAmser Haf" + + " Corea\x0cAmser Kosrae\x11Amser Krasnoyarsk\x19Amser Safonol Krasnoyarsk" + + "\x15Amser Haf Krasnoyarsk\x10Amser Casachstan\x13Amser Ynysoedd Line\x16" + + "Amser yr Arglwydd Howe\x1eAmser Safonol yr Arglwydd Howe\x1aAmser Haf yr" + + " Arglwydd Howe\x14Amser Ynys Macquarie\x0dAmser Magadan\x15Amser Safonol" + + " Magadan\x11Amser Haf Magadan\x0eAmser Malaysia\x10Amser Y Maldives\x0fA" + + "mser Marquises\x17Amser Ynysoedd Marshall\x0fAmser Mauritius\x17Amser Sa" + + "fonol Mauritius\x13Amser Haf Mauritius\x0cAmser Mawson\x1eAmser Gogledd " + + "Orllewin Mecsico&Amser Safonol Gogledd Orllewin Mecsico\x22Amser Haf Gog" + + "ledd Orllewin Mecsico\x16Amser Pasiffig Mecsico\x1eAmser Safonol Pasiffi" + + "g Mecsico\x1aAmser Haf Pasiffig Mecsico\x10Amser Ulan Bator\x18Amser Saf" + + "onol Ulan Bator\x14Amser Haf Ulan Bator\x0cAmser Moscfa\x14Amser Safonol" + + " Moscfa\x10Amser Haf Moscfa\x0dAmser Myanmar\x0bAmser Nauru\x0bAmser Nep" + + "al\x16Amser Caledonia Newydd\x1eAmser Safonol Caledonia Newydd\x1aAmser " + + "Haf Caledonia Newydd\x13Amser Seland Newydd\x1bAmser Safonol Seland Newy" + + "dd\x17Amser Haf Seland Newydd\x12Amser Newfoundland\x1aAmser Safonol New" + + "foundland\x16Amser Haf Newfoundland\x0aAmser Niue\x12Amser Ynys Norfolk" + + "\x19Amser Fernando de Noronha!Amser Safonol Fernando de Noronha\x1dAmser" + + " Haf Fernando de Noronha\x11Amser Novosibirsk\x19Amser Safonol Novosibir" + + "sk\x15Amser Haf Novosibirsk\x0aAmser Omsk\x12Amser Safonol Omsk\x0eAmser" + + " Haf Omsk\x0eAmser Pakistan\x16Amser Safonol Pakistan\x12Amser Haf Pakis" + + "tan\x0bAmser Palau\x19Amser Papua Guinea Newydd\x0eAmser Paraguay\x16Ams" + + "er Safonol Paraguay\x12Amser Haf Paraguay\x0bAmser Periw\x13Amser Safono" + + "l Periw\x0fAmser Haf Periw\x0fAmser Pilipinas\x17Amser Safonol Pilipinas" + + "\x13Amser Haf Pilipinas\x16Amser Ynysoedd Phoenix\x1eAmser Saint-Pierre-" + + "et-Miquelon&Amser Safonol Saint-Pierre-et-Miquelon\x22Amser Haf Saint-Pi" + + "erre-et-Miquelon\x0eAmser Pitcairn\x0dAmser Pohnpei\x0fAmser Pyongyang" + + "\x0eAmser Réunion\x0dAmser Rothera\x0eAmser Sakhalin\x16Amser Safonol Sa" + + "khalin\x12Amser Haf Sakhalin\x0bAmser Samoa\x13Amser Safonol Samoa\x0fAm" + + "ser Haf Samoa\x10Amser Seychelles\x0fAmser Singapore\x16Amser Ynysoedd S" + + "olomon\x10Amser De Georgia\x0eAmser Suriname\x0bAmser Syowa\x0cAmser Tah" + + "iti\x0cAmser Taipei\x14Amser Safonol Taipei\x10Amser Haf Taipei\x10Amser" + + " Tajicistan\x0dAmser Tokelau\x0bAmser Tonga\x13Amser Safonol Tonga\x0fAm" + + "ser Haf Tonga\x0bAmser Chuuk\x12Amser Tyrcmenistan\x1aAmser Safonol Tyrc" + + "menistan\x16Amser Haf Tyrcmenistan\x0cAmser Tuvalu\x0dAmser Uruguay\x15A" + + "mser Safonol Uruguay\x11Amser Haf Uruguay\x10Amser Wsbecistan\x18Amser S" + + "afonol Wsbecistan\x14Amser Haf Wsbecistan\x0dAmser Vanuatu\x15Amser Safo" + + "nol Vanuatu\x11Amser Haf Vanuatu\x0fAmser Venezuela\x11Amser Vladivostok" + + "\x19Amser Safonol Vladivostok\x15Amser Haf Vladivostok\x0fAmser Volgogra" + + "d\x17Amser Safonol Volgograd\x13Amser Haf Volgograd\x0cAmser Vostok\x0fA" + + "mser Ynys Wake\x15Amser Wallis a Futuna\x0dAmser Yakutsk\x15Amser Safono" + + "l Yakutsk\x11Amser Haf Yakutsk\x13Amser Yekaterinburg\x1bAmser Safonol Y" + + "ekaterinburg\x17Amser Haf Yekaterinburg\x01V\x01J\x02Ā\x01S\x01B\x01K" + + "\x01M\x01P\x02С" + +var bucket21 string = "" + // Size: 11584 bytes + "\x0ad. MMM y G\x04jan.\x04feb.\x04mar.\x04apr.\x03maj\x04jun.\x04jul." + + "\x04aug.\x04sep.\x04okt.\x04nov.\x04dec.\x03maj\x05søn.\x04man.\x04tir." + + "\x04ons.\x04tor.\x04fre.\x05lør.\x03sø\x02ma\x02ti\x02on\x02to\x02fr\x03" + + "lø\x07søndag\x06mandag\x07tirsdag\x06onsdag\x07torsdag\x06fredag\x07lørd" + + "ag\x04søn\x03man\x03tir\x03ons\x03tor\x03fre\x04lør\x071. kvt.\x072. kvt" + + ".\x073. kvt.\x074. kvt.\x0a1. kvartal\x0a2. kvartal\x0a3. kvartal\x0a4. " + + "kvartal\x06midnat\x0bom morgenen\x0eom formiddagen\x10om eftermiddagen" + + "\x0aom aftenen\x09om natten\x06morgen\x09formiddag\x0beftermiddag\x05aft" + + "en\x03nat\x05f.Kr.\x1dfør vesterlandsk tidsregning\x05e.Kr.\x18vesterlan" + + "dsk tidsregning\x06f.v.t.\x04v.t.\x03fKr\x03fvt\x03eKr\x02vt\x14EEEE 'de" + + "n' d. MMMM y\x08d. MMM y\x0dHH.mm.ss zzzz\x0aHH.mm.ss z\x08HH.mm.ss\x05H" + + "H.mm\x0d{1} 'kl'. {0}\x04æra\x03år\x0asidste år\x05i år\x0anæste år\x0ao" + + "m {0} år\x11for {0} år siden\x0esidste kvartal\x0ddette kvartal\x0enæste" + + " kvartal\x0eom {0} kvartal\x10om {0} kvartaler\x15for {0} kvartal siden" + + "\x17for {0} kvartaler siden\x04kvt.\x0bsidste kvt.\x0adette kvt.\x0bnæst" + + "e kvt.\x0bom {0} kvt.\x12for {0} kvt. siden\x06måned\x0dsidste måned\x0c" + + "denne måned\x0dnæste måned\x0dom {0} måned\x0fom {0} måneder\x14for {0} " + + "måned siden\x16for {0} måneder siden\x0asidste md.\x09denne md.\x0anæste" + + " md.\x0aom {0} md.\x0bom {0} mdr.\x11for {0} md. siden\x12for {0} mdr. s" + + "iden\x03uge\x0asidste uge\x09denne uge\x0anæste uge\x0aom {0} uge\x0bom " + + "{0} uger\x11for {0} uge siden\x12for {0} uger siden\x0ei ugen med {0}" + + "\x0ai forgårs\x06i går\x05i dag\x08i morgen\x0ci overmorgen\x0aom {0} da" + + "g\x0bom {0} dage\x11for {0} dag siden\x12for {0} dage siden\x06ugedag" + + "\x0esidste søndag\x0bpå søndag\x0enæste søndag\x0eom {0} søndag\x0fom {0" + + "} søndage\x15for {0} søndag siden\x16for {0} søndage siden\x0csidste søn" + + ".\x09på søn.\x0cnæste søn.\x0bsidste sø.\x08på sø.\x0bnæste sø.\x0dsidst" + + "e mandag\x0apå mandag\x0dnæste mandag\x0dom {0} mandag\x0eom {0} mandage" + + "\x14for {0} mandag siden\x15for {0} mandage siden\x0bsidste man.\x08på m" + + "an.\x0bnæste man.\x0asidste ma.\x07på ma.\x0anæste ma.\x0esidste tirsdag" + + "\x0bpå tirsdag\x0enæste tirsdag\x0eom {0} tirsdag\x0fom {0} tirsdage\x15" + + "for {0} tirsdag siden\x16for {0} tirsdage siden\x0bsidste tir.\x08på tir" + + ".\x0bnæste tir.\x0asidste ti.\x07på ti.\x0anæste ti.\x0dsidste onsdag" + + "\x0apå onsdag\x0dnæste onsdag\x0dom {0} onsdag\x0eom {0} onsdage\x14for " + + "{0} onsdag siden\x15for {0} onsdage siden\x0bsidste ons.\x08på ons.\x0bn" + + "æste ons.\x0asidste on.\x07på on.\x0anæste on.\x0esidste torsdag\x0bpå " + + "torsdag\x0enæste torsdag\x0eom {0} torsdag\x0fom {0} torsdage\x15for {0}" + + " torsdag siden\x16for {0} torsdage siden\x0bsidste tor.\x08på tor.\x0bnæ" + + "ste tor.\x0asidste to.\x07på to.\x0anæste to.\x0dsidste fredag\x0apå fre" + + "dag\x0dnæste fredag\x0dom {0} fredag\x0eom {0} fredage\x14for {0} fredag" + + " siden\x15for {0} fredage siden\x0bsidste fre.\x08på fre.\x0bnæste fre." + + "\x0asidste fr.\x07på fr.\x0anæste fr.\x0esidste lørdag\x0bpå lørdag\x0en" + + "æste lørdag\x0eom {0} lørdag\x0fom {0} lørdage\x15for {0} lørdag siden" + + "\x16for {0} lørdage siden\x0csidste lør.\x09på lør.\x0cnæste lør.\x0bsid" + + "ste lø.\x08på lø.\x0bnæste lø.\x04time\x13i den kommende time\x0bom {0} " + + "time\x0com {0} timer\x12for {0} time siden\x13for {0} timer siden\x02t." + + "\x0adenne time\x14i det kommende minut\x0com {0} minut\x0fom {0} minutte" + + "r\x13for {0} minut siden\x16for {0} minutter siden\x0bdenne minut\x0bom " + + "{0} min.\x12for {0} min. siden\x06sekund\x02nu\x0dom {0} sekund\x0fom {0" + + "} sekunder\x14for {0} sekund siden\x16for {0} sekunder siden\x0bom {0} s" + + "ek.\x12for {0} sek. siden\x08tidszone\x18Koordineret universaltid\x11Bri" + + "tisk sommertid\x0eIrsk normaltid\x08Acre-tid\x0eAcre-normaltid\x0eAcre-s" + + "ommertid\x0cAfghansk tid\x14Centralafrikansk tid\x11Østafrikansk tid\x10" + + "Sydafrikansk tid\x11Vestafrikansk tid\x17Vestafrikansk normaltid\x17Vest" + + "afrikansk sommertid\x0aAlaska-tid\x10Alaska-normaltid\x10Alaska-sommerti" + + "d\x0aAlmaty-tid\x10Almaty-normaltid\x10Almaty-sommertid\x0cAmazonas-tid" + + "\x12Amazonas-normaltid\x12Amazonas-sommertid\x0bCentral-tid\x11Central-n" + + "ormaltid\x11Central-sommertid\x0bEastern-tid\x11Eastern-normaltid\x11Eas" + + "tern-sommertid\x0cMountain-tid\x12Mountain-normaltid\x12Mountain-sommert" + + "id\x0bPacific-tid\x11Pacific-normaltid\x11Pacific-sommertid\x0aAnadyr-ti" + + "d\x10Anadyr-normaltid\x10Anadyr-sommertid\x08Apia-tid\x0eApia-normaltid" + + "\x0eApia-sommertid\x09Aqtau-tid\x0fAqtau-normaltid\x0fAqtau-sommertid" + + "\x0aAqtobe-tid\x10Aqtobe-normaltid\x10Aqtobe-sommertid\x0bArabisk tid" + + "\x11Arabisk normaltid\x11Arabisk sommertid\x0dArgentisk tid\x14Argentins" + + "k normaltid\x14Argentinsk sommertid\x12Vestargentinsk tid\x18Vestargenti" + + "nsk normaltid\x18Vestargentinsk sommertid\x0bArmensk tid\x11Armensk norm" + + "altid\x11Armensk sommertid\x0cAtlantic-tid\x12Atlantic-normaltid\x12Atla" + + "ntic-sommertid\x14Centralaustralsk tid\x1aCentralaustralsk normaltid\x1a" + + "Centralaustralsk sommertid\x1cVestlig centralaustralsk tid\x22Vestlig ce" + + "ntralaustralsk normaltid\x22Vestlig centralaustralsk sommertid\x11Østaus" + + "tralsk tid\x17Østaustralsk normaltid\x17Østaustralsk sommertid\x11Vestau" + + "stralsk tid\x17Vestaustralsk normaltid\x17Vestaustralsk sommertid\x12Ase" + + "rbajdsjansk tid\x18Aserbajdsjansk normaltid\x18Aserbajdsjansk sommertid" + + "\x0cAzorerne-tid\x12Azorerne-normaltid\x12Azorerne-sommertid\x11Banglade" + + "shisk tid\x17Bangladeshisk normaltid\x17Bangladeshisk sommertid\x0fBhuta" + + "nesisk tid\x0eBoliviansk tid\x0fBrasiliansk tid\x15Brasiliansk normaltid" + + "\x15Brasiliansk sommertid\x15Brunei Darussalam-tid\x0eKapverdisk tid\x14" + + "Kapverdisk normaltid\x14Kapverdisk sommertid\x0cChamorro-tid\x0bChatham-" + + "tid\x11Chatham-normaltid\x11Chatham-sommertid\x0cChilensk tid\x12Chilens" + + "k normaltid\x12Chilensk sommertid\x0cKinesisk tid\x12Kinesisk normaltid" + + "\x12Kinesisk sommertid\x0eChoibalsan-tid\x14Choibalsan-normaltid\x14Choi" + + "balsan-sommertid\x1aChristmas Island-normaltid\x15Cocosøerne-normaltid" + + "\x0fColombiansk tid\x15Colombiansk normaltid\x15Colombiansk sommertid" + + "\x0eCookøerne-tid\x14Cookøerne-normaltid\x14Cookøerne-sommertid\x0bCuban" + + "sk tid\x11Cubansk normaltid\x11Cubansk sommertid\x09Davis-tid\x16Dumont-" + + "d’Urville-tid\x0dØsttimor-tid\x0ePåskeøen-tid\x14Påskeøen-normaltid\x14P" + + "åskeøen-sommertid\x10Ecuadoriansk tid\x15Centraleuropæisk tid\x1bCentra" + + "leuropæisk normaltid\x1bCentraleuropæisk sommertid\x12Østeuropæisk tid" + + "\x18Østeuropæisk normaltid\x18Østeuropæisk sommertid\x17Fjernøsteuropæis" + + "k tid\x12Vesteuropæisk tid\x18Vesteuropæisk normaltid\x18Vesteuropæisk s" + + "ommertid\x13Falklandsøerne-tid\x19Falklandsøerne-normaltid\x19Falklandsø" + + "erne-sommertid\x0cFijiansk tid\x12Fijiansk normaltid\x12Fijiansk sommert" + + "id\x11Fransk Guyana-tid.Franske Sydlige og Antarktiske Territorier-tid" + + "\x0dGalapagos-tid\x0bGambier-tid\x0eGeorgiansk tid\x14Georgiansk normalt" + + "id\x14Georgiansk sommertid\x11Gilbertøerne-tid\x03GMT\x13Østgrønlandsk t" + + "id\x19Østgrønlandsk normaltid\x19Østgrønlandsk sommertid\x13Vestgrønland" + + "sk tid\x19Vestgrønlandsk normaltid\x19Vestgrønlandsk sommertid\x0eGuam-n" + + "ormaltid\x15Golflandene-normaltid\x0aGuyana-tid\x13Hawaii-Aleutian-tid" + + "\x19Hawaii-Aleutian-normaltid\x19Hawaii-Aleutian-sommertid\x0cHongkong-t" + + "id\x12Hongkong-normaltid\x12Hongkong-sommertid\x08Hovd-tid\x0eHovd-norma" + + "ltid\x0eHovd-sommertid\x10Indisk normaltid\x17Indiske Ocean-normaltid" + + "\x0cIndokina-tid\x15Centralindonesisk tid\x12Østindonesisk tid\x12Vestin" + + "donesisk tid\x0aIransk tid\x10Iransk normaltid\x10Iransk sommertid\x0bIr" + + "kutsk-tid\x11Irkutsk-normaltid\x11Irkutsk-sommertid\x0cIsraelsk tid\x12I" + + "sraelsk normaltid\x12Israelsk sommertid\x0bJapansk tid\x11Japansk normal" + + "tid\x11Japansk sommertid\x1cPetropavlovsk-Kamchatski tid\x22Petropavlovs" + + "k-Kamchatski normaltid\x22Petropavlovsk-Kamchatski sommertid\x14Østkasak" + + "hstansk tid\x14Vestkasakhstansk tid\x0cKoreansk tid\x12Koreansk normalti" + + "d\x12Koreansk sommertid\x0aKosrae-tid\x0fKrasnoyarsk-tid\x15Krasnoyarsk-" + + "normaltid\x15Krasnoyarsk-sommertid\x0dKirgisisk tid\x09Langa tid\x0fLinj" + + "eøerne-tid\x0dLord Howe-tid\x13Lord Howe-normaltid\x13Lord Howe-sommerti" + + "d\x09Macao-tid\x0fMacao-normaltid\x0fMacao-sommertid\x0dMacquarie-tid" + + "\x0bMagadan-tid\x11Magadan-normaltid\x11Magadan-sommertid\x0dMalaysisk t" + + "id\x0dMaldivisk tid\x0dMarquesas-tid\x12Marshalløerne-tid\x0dMauritius-t" + + "id\x13Mauritius-normaltid\x13Mauritius-sommertid\x0aMawson-tid\x15Nordve" + + "stmexicansk tid\x1bNordvestmexicansk normaltid\x1bNordvestmexicansk somm" + + "ertid\x15Mexicansk Pacific-tid\x1bMexicansk Pacific-normaltid\x1bMexican" + + "sk Pacific-sommertid\x0eUlan Bator-tid\x14Ulan Bator-normaltid\x14Ulan B" + + "ator-sommertid\x0fMoskovitisk tid\x15Moskovitisk normaltid\x15Moskovitis" + + "k sommertid\x0dMyanmarsk tid\x09Nauru-tid\x0eNepalesisk tid\x0fNykaledon" + + "sk tid\x15Nykaledonsk normaltid\x15Nykaledonsk sommertid\x10Newzealandsk" + + " tid\x16Newzealandsk normaltid\x16Newzealandsk sommertid\x12Newfoundland" + + "sk tid\x18Newfoundlandsk normaltid\x18Newfoundlandsk sommertid\x08Niue-t" + + "id\x12Norfolk Island-tid\x17Fernando de Noronha-tid\x1dFernando de Noron" + + "ha-normaltid\x1dFernando de Noronha-sommertid\x12Nordmarianerne-tid\x0fN" + + "ovosibirsk tid\x15Novosibirsk normaltid\x15Novosibirsk sommertid\x08Omsk" + + "-tid\x0eOmsk-normaltid\x0eOmsk-sommertid\x0ePakistansk tid\x14Pakistansk" + + " normaltid\x14Pakistansk sommertid\x0fPalau-normaltid\x13Papua Ny Guinea" + + "-tid\x10Paraguayansk tid\x16Paraguayansk normaltid\x16Paraguayansk somme" + + "rtid\x0ePeruviansk tid\x14Peruviansk normaltid\x14Peruviansk sommertid" + + "\x0eFilippinsk tid\x14Filippinsk normaltid\x14Filippinsk sommertid\x0fPh" + + "oenixøen-tid\x1dSaint Pierre- og Miquelon-tid#Saint Pierre- og Miquelon-" + + "normaltid#Saint Pierre- og Miquelon-sommertid\x0cPitcairn-tid\x0aPonape-" + + "tid\x0dPyongyang-tid\x0dQyzylorda-tid\x13Qyzylorda-normaltid\x13Qyzylord" + + "a-sommertid\x0bReunion-tid\x0bRothera-tid\x0cSakhalin-tid\x12Sakhalin-no" + + "rmaltid\x12Sakhalin-sommertid\x0aSamara-tid\x10Samara-normaltid\x10Samar" + + "a-sommertid\x09Samoa-tid\x0fSamoa-normaltid\x0fSamoa-sommertid\x0fSeyche" + + "llisk tid\x17Singaporeansk normaltid\x11Salomonøerne-tid\x11South Georgi" + + "a-tid\x0bSurinam-tid\x09Syowa-tid\x0cTahitisk tid\x0aTaipei-tid\x10Taipe" + + "i-normaltid\x10Taipei-sommertid\x0eTadsjikisk tid\x0bTokelau-tid\x0cTong" + + "ansk tid\x12Tongansk normaltid\x12Tongansk sommertid\x09Chuuk-tid\x0dTur" + + "kmensk tid\x13Turkmensk normaltid\x13Turkmensk sommertid\x0aTuvalu-tid" + + "\x0fUruguayansk tid\x15Uruguayansk normaltid\x15Uruguayansk sommertid" + + "\x0cUsbekisk tid\x12Usbekisk normaltid\x12Usbekisk sommertid\x0bVanuatu-" + + "tid\x11Vanuatu-normaltid\x11Vanuatu-sommertid\x10Venezuelansk tid\x0fVla" + + "divostok-tid\x15Vladivostok-normaltid\x15Vladivostok-sommertid\x0dVolgog" + + "rad-tid\x13Volgograd-normaltid\x13Volgograd-sommertid\x0aVostok-tid\x0cW" + + "akeøen-tid\x14Wallis og Futuna-tid\x0bYakutsk-tid\x11Yakutsk-normaltid" + + "\x11Yakutsk-sommertid\x13Yekaterinburgsk tid\x19Yekaterinburgsk normalti" + + "d\x19Yekaterinburgsk sommertid\x05měr.\x04maj.\x04awg.\x04now.\x03pKr" + + "\x03jKr\x04feb.\x04mar.\x03mai\x04jun.\x04jul.\x04sep.\x04nov.\x04des." + + "\x05fév.\x04mar.\x04avr.\x03mai\x04jui.\x05juil.\x05août\x05sept.\x04oct" + + ".\x04nov.\x05déc.\x05n.Kr.\x04feb.\x04mej.\x04dec.\x05febr.\x06márc.\x05" + + "ápr.\x05máj.\x05jún.\x05júl.\x06szept.\x04nov.\x04mar.\x04maí\x06ágú." + + "\x05nóv.\x04maí\x04apr.\x03mai\x04aug.\x04okt.\x04nov.\x10om {0} søndage" + + "r\x17for {0} søndager siden\x0fom {0} mandager\x16for {0} mandager siden" + + "\x10om {0} tirsdager\x17for {0} tirsdager siden\x0fom {0} onsdager\x16fo" + + "r {0} onsdager siden\x10om {0} torsdager\x17for {0} torsdager siden\x0fo" + + "m {0} fredager\x16for {0} fredager siden\x10om {0} lørdager\x17for {0} l" + + "ørdager siden\x11vestafrikansk tid\x0calaskisk tid\x15tidssone for Amaz" + + "onas&tidssone for det sentrale Nord-Amerika+tidssone for den nordamerika" + + "nske østkysten\x22tidssone for Rocky Mountains (USA)1tidssone for den no" + + "rdamerikanske Stillehavskysten\x14Russisk (Anadyr) tid\x11tidssone for A" + + "pia\x0barabisk tid\x0eargentinsk tid\x12vestargentinsk tid\x0barmensk ti" + + "d\x17atlanterhavskystlig tid\x14sentralaustralsk tid\x19vest-sentralaust" + + "ralsk tid\x11østaustralsk tid\x11vestaustralsk tid\x12aserbajdsjansk tid" + + "\x0basorisk tid\x11bangladeshisk tid\x15tidssone for Brasilia\x17tidsson" + + "e for Kapp Verde\x14tidssone for Chatham\x0cchilensk tid\x0ckinesisk tid" + + "\x18tidssone for Tsjojbalsan\x0fcolombiansk tid\x17tidssone for Cookøyen" + + "e\x0bcubansk tid\x17tidssone for Påskeøya\x14sentraleuropeisk tid\x11øst" + + "europeisk tid\x11vesteuropeisk tid\x1ctidssone for Falklandsøyene\x0cfij" + + "iansk tid\x0cgeorgisk tid\x13østgrønlandsk tid\x13vestgrønlandsk tid\x1f" + + "tidssone for Hawaii og Aleutene\x15tidssone for Hongkong\x12tidssone for" + + " Khovd\x0airansk tid\x14tidssone for Irkutsk\x0cisraelsk tid\x0bjapansk " + + "tid(Russisk (Petropavlovsk-Kamtsjatskij) tid\x0ckoreansk tid\x18tidssone" + + " for Krasnojarsk\x1btidssone for Lord Howe-øya\x09Macau-tid\x14tidssone " + + "for Magadan\x0dmauritisk tid tidssone for nordvestlige Mexico-tidssone f" + + "or den meksikanske Stillehavskysten\x17tidssone for Ulan Bator\x13tidsso" + + "ne for Moskva\x0dkaledonsk tid\x10newzealandsk tid\x19tidssone for Newfo" + + "undland tidssone for Fernando de Noronha\x18tidssone for Novosibirsk\x11" + + "tidssone for Omsk\x0epakistansk tid\x10paraguayansk tid\x0cperuansk tid" + + "\x0efilippinsk tid%tidssone for Saint-Pierre-et-Miquelon\x15tidssone for" + + " Sakhalin\x14Russisk (Samara) tid\x0csamoansk tid\x13tidssone for Taipei" + + "\x0ctongansk tid\x0dturkmensk tid\x0furuguayansk tid\x0cusbekisk tid\x0d" + + "vanuatisk tid\x18tidssone for Vladivostok\x16tidssone for Volgograd\x14t" + + "idssone for Jakutsk\x1atidssone for Jekaterinburg\x04mrt.\x03mei\x04dec." + + "\x03mei\x04mars\x03mai\x04juni\x04juli\x07måndag\x06tysdag\x07laurdag" + + "\x04mån\x03tys\x03lau\x08i morgon\x0ci overmorgon\x11austaustralsk tid" + + "\x11austeuropeisk tid\x04feb.\x04mar.\x04apr.\x03maj\x04avg.\x04nov.\x04" + + "dec.\x03maj\x04mart\x03maj\x03jun\x03jul\x05sept.\x04mars\x04juni\x04jul" + + "i\x04aug.\x04mars\x03maj\x04juni\x04juli\x0com {0} dagar\x0fom {0} onsda" + + "gar\x10om {0} torsdagar\x0fom {0} fredagar\x0eom {0} minuter" + +var bucket22 string = "" + // Size: 11361 bytes + "\x06h.mm a\x03Imb\x03Kaw\x03Kad\x03Kan\x03Kas\x03Kar\x03Mfu\x03Wun\x03Ik" + + "e\x03Iku\x03Imw\x03Iwi\x10Mori ghwa imbiri\x0eMori ghwa kawi\x10Mori ghw" + + "a kadadu\x0eMori ghwa kana\x10Mori ghwa kasanu\x13Mori ghwa karandadu" + + "\x12Mori ghwa mfungade\x12Mori ghwa wunyanya\x10Mori ghwa ikenda\x0fMori" + + " ghwa ikumi\x19Mori ghwa ikumi na imweri\x16Mori ghwa ikumi na iwi\x03Ju" + + "m\x03Jim\x03Ngu\x0eItuku ja jumwa\x10Kuramuka jimweri\x0dKuramuka kawi" + + "\x0fKuramuka kadadu\x0dKuramuka kana\x0fKuramuka kasanu\x0cKifula nguwo" + + "\x0fKimu cha imbiri\x0dKimu cha kawi\x0fKimu cha kadadu\x0dKimu cha kana" + + "\x0aLuma lwa K\x0aluma lwa p\x0fKabla ya Kristo\x0fBaada ya Kristo\x02KK" + + "\x02BK\x05Ngelo\x04Mori\x04Juma\x05Ituku\x04Iguo\x05Idime\x05Kesho\x05KE" + + "/PE\x0dMajira ya saa\x05Ratte\x07Büffel\x05Tiger\x04Hase\x06Drache\x08Sc" + + "hlange\x05Pferd\x05Ziege\x04Affe\x04Hahn\x04Hund\x07Schwein\x0fEEEE, d. " + + "MMMM U\x09d. MMMM U\x07dd.MM U\x09dd.MM.y G\x0c{1} 'um' {0}\x06Januar" + + "\x07Februar\x05März\x05April\x03Mai\x04Juni\x04Juli\x06August\x09Septemb" + + "er\x07Oktober\x08November\x08Dezember\x03Mai\x07Sonntag\x06Montag\x08Die" + + "nstag\x08Mittwoch\x0aDonnerstag\x07Freitag\x07Samstag\x02So\x02Mo\x02Di" + + "\x02Mi\x02Do\x02Fr\x02Sa\x0a1. Quartal\x0a2. Quartal\x0a3. Quartal\x0a4." + + " Quartal\x0bMitternacht\x05vorm.\x06nachm.\x07morgens\x0avormittags\x07m" + + "ittags\x0bnachmittags\x06abends\x06nachts\x06Morgen\x09Vormittag\x06Mitt" + + "ag\x0aNachmittag\x05Abend\x05Nacht\x07v. Chr.\x18vor unserer Zeitrechnun" + + "g\x07n. Chr.\x14unserer Zeitrechnung\x08v. u. Z.\x05u. Z.\x0fEEEE, d. MM" + + "MM y\x07dd.MM.y\x06Epoche\x04Jahr\x0cletztes Jahr\x0bdieses Jahr\x0enäch" + + "stes Jahr\x0bin {0} Jahr\x0din {0} Jahren\x0cvor {0} Jahr\x0evor {0} Jah" + + "ren\x07Quartal\x0fletztes Quartal\x0edieses Quartal\x11nächstes Quartal" + + "\x0ein {0} Quartal\x10in {0} Quartalen\x0fvor {0} Quartal\x11vor {0} Qua" + + "rtalen\x06Quart.\x0din {0} Quart.\x0evor {0} Quart.\x08in {0} Q\x09vor {" + + "0} Q\x05Monat\x0dletzten Monat\x0cdiesen Monat\x0fnächsten Monat\x0cin {" + + "0} Monat\x0ein {0} Monaten\x0dvor {0} Monat\x0fvor {0} Monaten\x10vor {0" + + "}\u00a0Monaten\x0evor {0}\u00a0Monat\x05Woche\x0cletzte Woche\x0bdiese W" + + "oche\x0enächste Woche\x0cin {0} Woche\x0din {0} Wochen\x0dvor {0} Woche" + + "\x0evor {0} Wochen\x11die Woche vom {0}\x0ain {0} Wo.\x0bvor {0} Wo.\x03" + + "Tag\x0avorgestern\x07gestern\x05heute\x06morgen\x0bübermorgen\x0ain {0} " + + "Tag\x0cin {0} Tagen\x0bvor {0} Tag\x0dvor {0} Tagen\x09Wochentag\x0fletz" + + "ten Sonntag\x0ediesen Sonntag\x11nächsten Sonntag\x14Sonntag in {0} Woch" + + "e\x15Sonntag in {0} Wochen\x15Sonntag vor {0} Woche\x16Sonntag vor {0} W" + + "ochen\x0bletzten So.\x0adiesen So.\x0dnächsten So.\x10So. in {0} Woche" + + "\x11So. in {0} Wochen\x11So. vor {0} Woche\x12So. vor {0} Wochen\x0dSo. " + + "in {0} W.\x0eSo. vor {0} W.\x0eletzten Montag\x0ddiesen Montag\x10nächst" + + "en Montag\x13Montag in {0} Woche\x14Montag in {0} Wochen\x14Montag vor {" + + "0} Woche\x15Montag vor {0} Wochen\x0bletzten Mo.\x0adiesen Mo.\x0dnächst" + + "en Mo.\x10Mo. in {0} Woche\x11Mo. in {0} Wochen\x11Mo. vor {0} Woche\x12" + + "Mo. vor {0} Wochen\x0dMo. in {0} W.\x0eMo. vor {0} W.\x10letzten Diensta" + + "g\x0fdiesen Dienstag\x12nächsten Dienstag\x15Dienstag in {0} Woche\x16Di" + + "enstag in {0} Wochen\x16Dienstag vor {0} Woche\x17Dienstag vor {0} Woche" + + "n\x0bletzten Di.\x0adiesen Di.\x0dnächsten Di.\x10Di. in {0} Woche\x11Di" + + ". in {0} Wochen\x11Di. vor {0} Woche\x12Di. vor {0} Wochen\x0dDi. in {0}" + + " W.\x0eDi. vor {0} W.\x10letzten Mittwoch\x0fdiesen Mittwoch\x12nächsten" + + " Mittwoch\x15Mittwoch in {0} Woche\x16Mittwoch in {0} Wochen\x16Mittwoch" + + " vor {0} Woche\x17Mittwoch vor {0} Wochen\x0bletzten Mi.\x0adiesen Mi." + + "\x0dnächsten Mi.\x10Mi. in {0} Woche\x11Mi. in {0} Wochen\x11Mi. vor {0}" + + " Woche\x12Mi. vor {0} Wochen\x0dMi. in {0} W.\x0eMi. vor {0} W.\x12letzt" + + "en Donnerstag\x11diesen Donnerstag\x14nächsten Donnerstag\x17Donnerstag " + + "in {0} Woche\x18Donnerstag in {0} Wochen\x18Donnerstag vor {0} Woche\x19" + + "Donnerstag vor {0} Wochen\x0bletzten Do.\x0adiesen Do.\x0dnächsten Do." + + "\x10Do. in {0} Woche\x11Do. in {0} Wochen\x11Do. vor {0} Woche\x12Do. vo" + + "r {0} Wochen\x0dDo. in {0} W.\x0eDo. vor {0} W.\x0fletzten Freitag\x0edi" + + "esen Freitag\x11nächsten Freitag\x14Freitag in {0} Woche\x15Freitag in {" + + "0} Wochen\x15Freitag vor {0} Woche\x16Freitag vor {0} Wochen\x0bletzten " + + "Fr.\x0adiesen Fr.\x0dnächsten Fr.\x10Fr. in {0} Woche\x11Fr. in {0} Woch" + + "en\x11Fr. vor {0} Woche\x12Fr. vor {0} Wochen\x0dFr. in {0} W.\x0eFr. vo" + + "r {0} W.\x0fletzten Samstag\x0ediesen Samstag\x11nächsten Samstag\x14Sam" + + "stag in {0} Woche\x15Samstag in {0} Wochen\x15Samstag vor {0} Woche\x16S" + + "amstag vor {0} Wochen\x0bletzten Sa.\x0adiesen Sa.\x0dnächsten Sa.\x10Sa" + + ". in {0} Woche\x11Sa. in {0} Wochen\x11Sa. vor {0} Woche\x12Sa. vor {0} " + + "Wochen\x0dSa. in {0} W.\x0eSa. vor {0} W.\x0cTageshälfte\x06Stunde\x10in" + + " dieser Stunde\x0din {0} Stunde\x0ein {0} Stunden\x0evor {0} Stunde\x0fv" + + "or {0} Stunden\x04Std.\x0bin {0} Std.\x0cvor {0} Std.\x10in dieser Minut" + + "e\x0din {0} Minute\x0ein {0} Minuten\x0evor {0} Minute\x0fvor {0} Minute" + + "n\x04Min.\x0bin {0} Min.\x0cvor {0} Min.\x08in {0} m\x09vor {0} m\x05jet" + + "zt\x0ein {0} Sekunde\x0fin {0} Sekunden\x0fvor {0} Sekunde\x10vor {0} Se" + + "kunden\x04Sek.\x0bin {0} Sek.\x0cvor {0} Sek.\x08in {0} s\x09vor {0} s" + + "\x08Zeitzone\x08{0} Zeit\x0e{0} Sommerzeit\x0e{0} Normalzeit\x15Koordini" + + "erte Weltzeit\x14Britische Sommerzeit\x12Irische Sommerzeit\x09Acre-Zeit" + + "\x0fAcre-Normalzeit\x0fAcre-Sommerzeit\x10Afghanistan-Zeit\x18Zentralafr" + + "ikanische Zeit\x14Ostafrikanische Zeit\x15Südafrikanische Zeit\x15Westaf" + + "rikanische Zeit\x1bWestafrikanische Normalzeit\x1bWestafrikanische Somme" + + "rzeit\x0bAlaska-Zeit\x11Alaska-Normalzeit\x11Alaska-Sommerzeit\x0bAlmaty" + + "-Zeit\x11Almaty-Normalzeit\x11Almaty-Sommerzeit\x0dAmazonas-Zeit\x13Amaz" + + "onas-Normalzeit\x13Amazonas-Sommerzeit\x1cNordamerikanische Inlandzeit#N" + + "ordamerikanische Inland-Normalzeit#Nordamerikanische Inland-Sommerzeit N" + + "ordamerikanische Ostküstenzeit'Nordamerikanische Ostküsten-Normalzeit'No" + + "rdamerikanische Ostküsten-Sommerzeit\x13Rocky-Mountain-Zeit\x19Rocky Mou" + + "ntain-Normalzeit\x19Rocky-Mountain-Sommerzeit!Nordamerikanische Westküst" + + "enzeit(Nordamerikanische Westküsten-Normalzeit(Nordamerikanische Westküs" + + "ten-Sommerzeit\x0bAnadyr Zeit\x11Anadyr Normalzeit\x11Anadyr Sommerzeit" + + "\x09Apia-Zeit\x0fApia-Normalzeit\x0fApia-Sommerzeit\x0aAqtau-Zeit\x10Aqt" + + "au-Normalzeit\x10Aqtau-Sommerzeit\x0cAqtöbe-Zeit\x12Aqtöbe-Normalzeit" + + "\x12Aqtöbe-Sommerzeit\x0eArabische Zeit\x14Arabische Normalzeit\x14Arabi" + + "sche Sommerzeit\x12Argentinische Zeit\x18Argentinische Normalzeit\x18Arg" + + "entinische Sommerzeit\x16Westargentinische Zeit\x1cWestargentinische Nor" + + "malzeit\x1cWestargentinische Sommerzeit\x0fArmenische Zeit\x15Armenische" + + " Normalzeit\x15Armenische Sommerzeit\x0dAtlantik-Zeit\x13Atlantik-Normal" + + "zeit\x13Atlantik-Sommerzeit\x18Zentralaustralische Zeit\x1eZentralaustra" + + "lische Normalzeit\x1eZentralaustralische Sommerzeit\x1eZentral-/Westaust" + + "ralische Zeit$Zentral-/Westaustralische Normalzeit$Zentral-/Westaustrali" + + "sche Sommerzeit\x14Ostaustralische Zeit\x1aOstaustralische Normalzeit" + + "\x1aOstaustralische Sommerzeit\x15Westaustralische Zeit\x1bWestaustralis" + + "che Normalzeit\x1bWestaustralische Sommerzeit\x17Aserbaidschanische Zeit" + + "\x1dAserbeidschanische Normalzeit\x1dAserbaidschanische Sommerzeit\x0bAz" + + "oren-Zeit\x11Azoren-Normalzeit\x11Azoren-Sommerzeit\x10Bangladesch-Zeit" + + "\x16Bangladesch-Normalzeit\x16Bangladesch-Sommerzeit\x0bBhutan-Zeit\x12B" + + "olivianische Zeit\x0eBrasília-Zeit\x14Brasília-Normalzeit\x14Brasília-So" + + "mmerzeit\x0bBrunei-Zeit\x0fCabo-Verde-Zeit\x15Cabo-Verde-Normalzeit\x15C" + + "abo-Verde-Sommerzeit\x0aCasey-Zeit\x0dChamorro-Zeit\x0cChatham-Zeit\x12C" + + "hatham-Normalzeit\x12Chatham-Sommerzeit\x10Chilenische Zeit\x16Chilenisc" + + "he Normalzeit\x16Chilenische Sommerzeit\x10Chinesische Zeit\x16Chinesisc" + + "he Normalzeit\x16Chinesische Sommerzeit\x11Tschoibalsan-Zeit\x17Tschoiba" + + "lsan-Normalzeit\x17Tschoibalsan-Sommerzeit\x14Weihnachtsinsel-Zeit\x10Ko" + + "kosinseln-Zeit\x13Kolumbianische Zeit\x19Kolumbianische Normalzeit\x19Ko" + + "lumbianische Sommerzeit\x0fCookinseln-Zeit\x15Cookinseln-Normalzeit\x15C" + + "ookinseln-Sommerzeit\x0fKubanische Zeit\x15Kubanische Normalzeit\x15Kuba" + + "nische Sommerzeit\x0aDavis-Zeit\x17Dumont-d’Urville-Zeit\x0dOsttimor-Zei" + + "t\x0fOsterinsel-Zeit\x15Osterinsel-Normalzeit\x15Osterinsel-Sommerzeit" + + "\x14Ecuadorianische Zeit\x17Mitteleuropäische Zeit\x1dMitteleuropäische " + + "Normalzeit\x1dMitteleuropäische Sommerzeit\x03MEZ\x04MESZ\x14Osteuropäis" + + "che Zeit\x1aOsteuropäische Normalzeit\x1aOsteuropäische Sommerzeit\x03OE" + + "Z\x04OESZ\x12Kaliningrader Zeit\x15Westeuropäische Zeit\x1bWesteuropäisc" + + "he Normalzeit\x1bWesteuropäische Sommerzeit\x03WEZ\x04WESZ\x13Falklandin" + + "seln-Zeit\x19Falklandinseln-Normalzeit\x19Falklandinseln-Sommerzeit\x0cF" + + "idschi-Zeit\x12Fidschi-Normalzeit\x12Fidschi-Sommerzeit\x19Französisch-G" + + "uayana-Zeit-Französische Süd- und Antarktisgebiete-Zeit\x0eGalapagos-Zei" + + "t\x0cGambier-Zeit\x0fGeorgische Zeit\x15Georgische Normalzeit\x15Georgis" + + "che Sommerzeit\x13Gilbert-Inseln-Zeit\x17Mittlere Greenwich-Zeit\x11Ostg" + + "rönland-Zeit\x17Ostgrönland-Normalzeit\x17Ostgrönland-Sommerzeit\x12West" + + "grönland-Zeit\x18Westgrönland-Normalzeit\x18Westgrönland-Sommerzeit\x09G" + + "uam-Zeit\x09Golf-Zeit\x0bGuyana-Zeit\x13Hawaii-Aleuten-Zeit\x19Hawaii-Al" + + "euten-Normalzeit\x19Hawaii-Aleuten-Sommerzeit\x0dHongkong-Zeit\x13Hongko" + + "ng-Normalzeit\x13Hongkong-Sommerzeit\x0aChowd-Zeit\x10Chowd-Normalzeit" + + "\x10Chowd-Sommerzeit\x0dIndische Zeit\x14Indischer Ozean-Zeit\x0eIndochi" + + "na-Zeit\x18Zentralindonesische Zeit\x14Ostindonesische Zeit\x15Westindon" + + "esische Zeit\x0eIranische Zeit\x14Iranische Normalzeit\x14Iranische Somm" + + "erzeit\x0cIrkutsk-Zeit\x12Irkutsk-Normalzeit\x12Irkutsk-Sommerzeit\x10Is" + + "raelische Zeit\x16Israelische Normalzeit\x16Israelische Sommerzeit\x0fJa" + + "panische Zeit\x15Japanische Normalzeit\x15Japanische Sommerzeit\x10Kamts" + + "chatka-Zeit\x16Kamtschatka-Normalzeit\x16Kamtschatka-Sommerzeit\x13Ostka" + + "sachische Zeit\x14Westkasachische Zeit\x10Koreanische Zeit\x16Koreanisch" + + "e Normalzeit\x16Koreanische Sommerzeit\x0bKosrae-Zeit\x10Krasnojarsk-Zei" + + "t\x16Krasnojarsk-Normalzeit\x16Krasnojarsk-Sommerzeit\x10Kirgisistan-Zei" + + "t\x0eSri-Lanka-Zeit\x11Linieninseln-Zeit\x0eLord-Howe-Zeit\x14Lord-Howe-" + + "Normalzeit\x14Lord-Howe-Sommerzeit\x0aMacau-Zeit\x10Macau-Normalzeit\x10" + + "Macau-Sommerzeit\x13Macquarieinsel-Zeit\x0cMagadan-Zeit\x12Magadan-Norma" + + "lzeit\x12Magadan-Sommerzeit\x10Malaysische Zeit\x0eMalediven-Zeit\x0eMar" + + "quesas-Zeit\x13Marshallinseln-Zeit\x0eMauritius-Zeit\x14Mauritius-Normal" + + "zeit\x14Mauritius-Sommerzeit\x0bMawson-Zeit\x1eMexiko Nordwestliche Zone" + + "-Zeit$Mexiko Nordwestliche Zone-Normalzeit$Mexiko Nordwestliche Zone-Som" + + "merzeit\x17Mexiko Pazifikzone-Zeit\x1dMexiko Pazifikzone-Normalzeit\x1dM" + + "exiko Pazifikzone-Sommerzeit\x10Ulaanbaatar-Zeit\x16Ulaanbaatar-Normalze" + + "it\x16Ulaanbaatar-Sommerzeit\x0dMoskauer Zeit\x13Moskauer Normalzeit\x13" + + "Moskauer Sommerzeit\x0cMyanmar-Zeit\x0aNauru-Zeit\x11Nepalesische Zeit" + + "\x14Neukaledonische Zeit\x1aNeukaledonische Normalzeit\x1aNeukaledonisch" + + "e Sommerzeit\x0fNeuseeland-Zeit\x15Neuseeland-Normalzeit\x15Neuseeland-S" + + "ommerzeit\x10Neufundland-Zeit\x16Neufundland-Normalzeit\x16Neufundland-S" + + "ommerzeit\x09Niue-Zeit\x11Norfolkinsel-Zeit\x18Fernando de Noronha-Zeit" + + "\x1eFernando de Noronha-Normalzeit\x1eFernando de Noronha-Sommerzeit\x18" + + "Nördliche-Marianen-Zeit\x10Nowosibirsk-Zeit\x16Nowosibirsk-Normalzeit" + + "\x16Nowosibirsk-Sommerzeit\x09Omsk-Zeit\x0fOmsk-Normalzeit\x0fOmsk-Somme" + + "rzeit\x12Pakistanische Zeit\x18Pakistanische Normalzeit\x18Pakistanische" + + " Sommerzeit\x0aPalau-Zeit\x14Papua-Neuguinea-Zeit\x14Paraguayanische Zei" + + "t\x1aParaguayanische Normalzeit\x1aParaguayanische Sommerzeit\x10Peruani" + + "sche Zeit\x16Peruanische Normalzeit\x16Peruanische Sommerzeit\x13Philipp" + + "inische Zeit\x19Philippinische Normalzeit\x19Philippinische Sommerzeit" + + "\x12Phoenixinseln-Zeit\x1eSaint-Pierre-und-Miquelon-Zeit$Saint-Pierre-un" + + "d-Miquelon-Normalzeit$Saint-Pierre-und-Miquelon-Sommerzeit\x13Pitcairnin" + + "seln-Zeit\x0bPonape-Zeit\x0fPjöngjang-Zeit\x0fQuysylorda-Zeit\x15Quysylo" + + "rda-Normalzeit\x14Qysylorda-Sommerzeit\x0dRéunion-Zeit\x0cRothera-Zeit" + + "\x0dSachalin-Zeit\x13Sachalin-Normalzeit\x13Sachalin-Sommerzeit\x0bSamar" + + "a-Zeit\x11Samara-Normalzeit\x11Samara-Sommerzeit\x0aSamoa-Zeit\x10Samoa-" + + "Normalzeit\x10Samoa-Sommerzeit\x0fSeychellen-Zeit\x0dSingapur-Zeit\x12Sa" + + "lomoninseln-Zeit\x13Südgeorgische Zeit\x0dSuriname-Zeit\x0aSyowa-Zeit" + + "\x0bTahiti-Zeit\x0bTaipeh-Zeit\x11Taipeh-Normalzeit\x11Taipeh-Sommerzeit" + + "\x12Tadschikistan-Zeit\x0cTokelau-Zeit\x10Tonganische Zeit\x16Tonganisch" + + "e Normalzeit\x16Tonganische Sommerzeit\x0aChuuk-Zeit\x11Turkmenistan-Zei" + + "t\x17Turkmenistan-Normalzeit\x17Turkmenistan-Sommerzeit\x0bTuvalu-Zeit" + + "\x13Uruguayanische Zeit\x18Uruguyanische Normalzeit\x19Uruguayanische So" + + "mmerzeit\x0fUsbekistan-Zeit\x15Usbekistan-Normalzeit\x15Usbekistan-Somme" + + "rzeit\x0cVanuatu-Zeit\x12Vanuatu-Normalzeit\x12Vanuatu-Sommerzeit\x0eVen" + + "ezuela-Zeit\x10Wladiwostok-Zeit\x16Wladiwostok-Normalzeit\x16Wladiwostok" + + "-Sommerzeit\x0eWolgograd-Zeit\x14Wolgograd-Normalzeit\x14Wolgograd-Somme" + + "rzeit\x0bWostok-Zeit\x0fWake-Insel-Zeit\x16Wallis-und-Futuna-Zeit\x0cJak" + + "utsk-Zeit\x12Jakutsk-Normalzeit\x12Jakutsk-Sommerzeit\x12Jekaterinburg-Z" + + "eit\x18Jekaterinburg-Normalzeit\x18Jekaterinburg-Sommerzeit\x02Fe\x02Ma" + + "\x02Ab\x02Me\x02Su\x03Sú\x02Ut\x02Se\x02Ok\x02No\x02De\x02Tu\x02We\x02Th" + + "\x02Lu\x02Ju\x02Vi\x02Lu\x03Má\x03Cé\x03Dé\x02Ao\x02Sa\x02Lu\x02Ma\x03Mé" + + "\x02Xo\x02Ve\x03Sá\x07Februar\x05März\x05April\x03Mai\x04Juni\x04Juli" + + "\x08Auguscht\x0aSeptämber\x08Oktoober\x09Novämber\x09Dezämber\x02Me\x02D" + + "u\x02Sa\x06Mäerz\x07Abrëll\x03Mee\x04Juni\x04Juli\x06August\x09September" + + "\x07Oktober\x08November\x08Dezember\x03Mee\x02PK\x02Mu\x03Dö\x02Fr\x03Zä" + + "\x06n. Chr" + +var bucket23 string = "" + // Size: 10776 bytes + "\x05Jän.\x04Feb.\x05März\x04Apr.\x03Mai\x04Juni\x04Juli\x04Aug.\x04Sep." + + "\x04Okt.\x04Nov.\x04Dez.\x07Jänner\x07Februar\x05April\x06August\x09Sept" + + "ember\x07Oktober\x08November\x08Dezember\x04Jän\x03Feb\x04Mär\x03Apr\x03" + + "Jun\x03Jul\x03Aug\x03Sep\x03Okt\x03Nov\x03Dez\x04Žan\x03Fee\x03Mar\x03Aw" + + "i\x02Me\x04Žuw\x04Žuy\x02Ut\x03Sek\x03Noo\x03Dee\x08Žanwiye\x09Feewiriye" + + "\x05Marsi\x06Awiril\x07Žuweŋ\x06Žuyye\x09Sektanbur\x08Oktoobur\x09Noowan" + + "bur\x09Deesanbur\x02Ž\x01F\x01M\x01A\x01U\x01S\x01O\x01N\x01D\x06Alhadi" + + "\x06Atinni\x08Atalaata\x06Alarba\x08Alhamisi\x06Alzuma\x06Asibti\x02A1" + + "\x02A2\x02A3\x02A4\x08Arrubu 1\x08Arrubu 2\x08Arrubu 3\x08Arrubu 4\x08Su" + + "bbaahi\x0aZaarikay b\x09Isaa jine\x0cIsaa zamanoo\x02IJ\x02IZ\x05Zaman" + + "\x05Jiiri\x05Handu\x04Hebu\x05Zaari\x02Bi\x04Hõo\x04Suba\x17Subbaahi/Zaa" + + "rikay banda\x05Guuru\x06Miniti\x04Miti\x08Leerazuu\x0cd.M.yy GGGGG\x07ja" + + "nuara\x08februara\x06měrca\x06apryla\x04maja\x06junija\x06julija\x07awgu" + + "sta\x09septembra\x07oktobra\x08nowembra\x08decembra\x02nj\x03pó\x02wa" + + "\x02sr\x02st\x03pě\x02so\x08njeźela\x0bpónjeźele\x08wałtora\x06srjoda" + + "\x08stwórtk\x05pětk\x06sobota\x0a1. kwartal\x0a2. kwartal\x0a3. kwartal" + + "\x0a4. kwartal\x0adopołdnja\x0cwótpołdnja\x06wótp.\x1cpśed Kristusowym n" + + "aroźenim\x19pśed našym licenim casa\x1apó Kristusowem naroźenju\x14našog" + + "o licenja casa\x0apś.Chr.n.\x0apś.n.l.c.\x0apó Chr.n.\x06n.l.c.\x05d.M.y" + + "\x06epocha\x05lěto\x05łoni\x07lětosa\x05znowa\x0cza {0} lěto\x0dza {0} l" + + "ěśe\x0cza {0} lěta\x0bza {0} lět\x10pśed {0} lětom\x11pśed {0} lětoma" + + "\x11pśed {0} lětami\x02l.\x0cpśed {0} l.\x07kwartal\x0eza {0} kwartal" + + "\x0fza {0} kwartala\x0fza {0} kwartale\x10za {0} kwartalow\x13pśed {0} k" + + "wartalom\x14pśed {0} kwartaloma\x14pśed {0} kwartalami\x06kwart.\x0dza {" + + "0} kwart.\x10pśed {0} kwart.\x0aza {0} kw.\x0dpśed {0} kw.\x06mjasec\x0e" + + "slědny mjasec\x0aten mjasec\x0fpśiducy mjasec\x0dza {0} mjasec\x0eza {0}" + + " mjaseca\x0eza {0} mjasecy\x0fza {0} mjasecow\x12pśed {0} mjasecom\x13pś" + + "ed {0} mjasecoma\x13pśed {0} mjasecami\x05mjas.\x0cza {0} mjas.\x0fpśed " + + "{0} mjas.\x07tyźeń\x0fslědny tyźeń\x0bten tyźeń\x10pśiducy tyźeń\x0eza {" + + "0} tyźeń\x0fza {0} tyźenja\x0fza {0} tyźenje\x10za {0} tyźenjow\x13pśed " + + "{0} tyźenjom\x14pśed {0} tyźenjoma\x14pśed {0} tyźenjami\x05tyź.\x0cza {" + + "0} tyź.\x0fpśed {0} tyź.\x05źeń\x04cora\x06źinsa\x06witśe\x0cza {0} źeń" + + "\x0bza {0} dnja\x0aza {0} dny\x0cza {0} dnjow\x0fpśed {0} dnjom\x10pśed " + + "{0} dnjoma\x10pśed {0} dnjami\x0bza {0} dnj.\x0epśed {0} dnj.\x02ź\x09za" + + " {0} ź\x0bpśed {0} d\x0eźeń tyźenja\x10slědnu njeźelu\x0btu njeźelu\x11p" + + "śiducu njeźelu\x0cslědnu nje.\x07tu nje.\x0dpśiducu nje.\x0bslědnu nj." + + "\x06tu nj.\x0cpśiducu nj.\x13slědne pónjeźele\x0eto pónjeźele\x14pśiduce" + + " pónjeźele\x0eslědne pónj.\x09to pónj.\x0fpśiduce pónj.\x0cslědne pó." + + "\x07to pó.\x0dpśiduce pó.\x10slědnu wałtoru\x0btu wałtoru\x11pśiducu wał" + + "toru\x0eslědnu wałt.\x09tu wałt.\x0fpśiducu wałt.\x0bslědnu wa.\x06tu wa" + + ".\x0cpśiducu wa.\x0eslědnu srjodu\x09tu srjodu\x0fpśiducu srjodu\x0cslěd" + + "nu srj.\x07tu srj.\x0dpśiducu srj.\x0bslědnu sr.\x06tu sr.\x0cpśiducu sr" + + ".\x10slědny stwórtk\x0cten stwórtk\x11pśiducy stwórtk\x0cslědny stw.\x08" + + "ten stw.\x0dpśiducy stw.\x0bslědny st.\x07ten st.\x0cpśiducy st.\x0dslěd" + + "ny pětk\x09ten pětk\x0epśiducy pětk\x0dslědny pět.\x09ten pět.\x0epśiduc" + + "y pět.\x0cslědny pě.\x08ten pě.\x0dpśiducy pě.\x0eslědnu sobotu\x09tu so" + + "botu\x0fpśiducu sobotu\x0cslědnu sob.\x07tu sob.\x0dpśiducu sob.\x0bslěd" + + "nu so.\x06tu so.\x0cpśiducu so.\x0dpołojca dnja\x08góźina\x0fza {0} góźi" + + "nu\x10za {0} góźinje\x0fza {0} góźiny\x0eza {0} góźin\x12pśed {0} góźinu" + + "\x14pśed {0} góźinoma\x14pśed {0} góźinami\x06góź.\x0dza {0} góź.\x10pśe" + + "d {0} góź.\x08za {0} g\x0bpśed {0} g\x10pśed {0} minutu\x12pśed {0} minu" + + "toma\x12pśed {0} minutami\x0epśed {0} min.\x08za {0} m\x0bpśed {0} m\x11" + + "pśed {0} sekundu\x13pśed {0} sekundoma\x13pśed {0} sekundami\x0epśed {0}" + + " sek.\x0bpśed {0} s\x0ccasowe pasmo\x10Casowe pasmo {0}\x12{0} lěśojski " + + "cas\x0e{0} zymski cas\x17Britiski lěśojski cas\x15Iriski lěśojski cas" + + "\x0eAfghaniski cas\x13Srjejźoafriski cas\x17Pódzajtšnoafriski cas\x19Pód" + + "połdnjowoafriski cas\x17Pódwjacornoafriski cas\x22Pódwjacornoafriski sta" + + "ndardny cas\x22Pódwjacornoafriski lěśojski cas\x0eAlaskojski cas\x19Alas" + + "kojski standardny cas\x19Alaskojski lěśojski cas\x0eAmaconaski cas\x19Am" + + "aconaski standardny cas\x19Amaconaski lěśojski cas#Pódpołnocnoameriski c" + + "entralny cas.Pódpołnocnoameriski centralny standardny cas.Pódpołnocnoame" + + "riski centralny lěśojski cas&Pódpołnocnoameriski pódzajtšny cas1Pódpołno" + + "cnoameriski pódzajtšny standardny cas1Pódpołnocnoameriski pódzajtšny lěś" + + "ojski cas!Pódpołnocnoameriski górski cas,Pódpołnocnoameriski górski stan" + + "dardny cas,Pódpołnocnoameriski górski lěśojski cas#Pódpołnocnoameriski p" + + "acifiski cas.Pódpołnocnoameriski pacifiski standardny cas.Pódpołnocnoame" + + "riski pacifiski lěśojski cas\x0bApiaski cas\x16Apiaski standardny cas" + + "\x16Apiaski lěśojski cas\x0cArabiski cas\x17Arabiski standardny cas\x17A" + + "rabiski lěśojski cas\x0fArgentinski cas\x1aArgentinski standardny cas" + + "\x1aArgentinski lěśojski cas\x1bPódwjacornoargentinski cas&Pódwjacornoar" + + "gentinski standardny cas&Pódwjacornoargentinski lěśojski cas\x0dArmeński" + + " cas\x18Armeński standardny cas\x18Armeński lěśojski cas\x0eAtlantiski c" + + "as\x19Atlantiski standardny cas\x19Atlantiski lěśojski cas\x16Srjejźoaws" + + "tralski cas!Srjejźoawstralski standardny cas!Srjejźoawstralski lěśojski " + + "cas#Srjejźopódwjacorny awstralski cas.Srjejźopódwjacorny awstralski stan" + + "dardny cas.Srjejźopódwjacorny awstralski lěśojski cas\x1aPódzajtšnoawstr" + + "alski cas%Pódzajtšnoawstralski standardny cas%Pódzajtšnoawstralski lěśoj" + + "ski cas\x1aPódwjacornoawstralski cas%Pódwjacornoawstralski standardny ca" + + "s%Pódwjacornoawstralski lěśojski cas\x14Azerbajdžaniski cas\x1fAzerbajdž" + + "aniski standardny cas\x1fAzerbajdžaniski lěśojski cas\x0bAcorski cas\x16" + + "Acorski standardny cas\x16Acorski lěśojski cas\x11Bangladešski cas\x1cBa" + + "ngladešski standardny cas\x1cBangladešski lěśojski cas\x0eBhutański cas" + + "\x0dBoliwiski cas\x0dBrasília cas\x18Brasília standardny cas\x18Brasília" + + " lěśojski cas\x0dBruneiski cas\x0eKapverdski cas\x19Kapverdski standardn" + + "y cas\x19Kapverdski lěśojski cas\x0eChamorrski cas\x0eChathamski cas\x19" + + "Chathamski standardny cas\x19Chathamski lěśojski cas\x0bChilski cas\x16C" + + "hilski standardny cas\x16Chilski lěśojski cas\x0bChinski cas\x16Chinski " + + "standardny cas\x16Chinski lěśojski cas\x12Choibalsański cas\x1dChoibalsa" + + "ński standardny cas\x1dChoibalsański lěśojski cas\x14cas Gódownych kupo" + + "w\x14cas Kokosowych kupow\x0eKolumbiski cas\x19Kolumbiski standardny cas" + + "\x19Kolumbiski lěśojski cas\x13cas Cookowych kupow\x1eStandardny cas Coo" + + "kowych kupow\x1elěśojski cas Cookowych kupow\x0dKubański cas\x18Kubański" + + " standardny cas\x18Kubański lěśojski cas\x09Davis cas\x12DumontDUrville " + + "cas\x18Pódzajtšnotimorski cas\x14cas Jatšowneje kupy\x1fstandardny cas J" + + "atšowneje kupy\x1flěśojski cas Jatšowneje kupy\x0eEkuadorski cas\x14Srje" + + "jźoeuropski cas\x1fSrjejźoeuropski standardny cas\x1fSrjejźoeuropski lěś" + + "ojski cas\x18Pódzajtšnoeuropski cas#Pódzajtšnoeuropski standardny cas#Pó" + + "dzajtšnoeuropski lěśojski cas\x12Kaliningradski cas\x18Pódwjacornoeurops" + + "ki cas#Pódwjacornoeuropski standardny cas#Pódwjacornoeuropski lěśojski c" + + "as\x0fFalklandski cas\x1aFalklandski standardny cas\x1aFalklandski lěśoj" + + "ski cas\x0dFidźiski cas\x18Fidźiski standardny cas\x18Fidźiski lěśojski " + + "cas\x17Francojskoguyański cas=cas francojskego pódpołdnjowego a antarkti" + + "skeho teritoriuma\x0fGalapagoski cas\x0eGambierski cas\x0dGeorgiski cas" + + "\x18Georgiski standardny cas\x18Georgiski lěśojski cas\x16cas Gilbertowy" + + "ch kupow\x10Greenwichski cas\x1cPódzajtšnogrönlandski cas'Pódzajtšnogrön" + + "landski standardny cas'Pódzajtšnogrönlandski lěśojski cas\x1cPódwjacorno" + + "grönlandski cas'Pódwjacornogrönlandski standardny cas'Pódwjacornogrönlan" + + "dski lěśojski cas\x14cas Persiskego golfa\x0dGuyański cas\x16Hawaiisko-a" + + "leutski cas!Hawaiisko-aleutski standardny cas!Hawaiisko-aleutski lěśojsk" + + "i cas\x0fHongkongski cas\x1aHongkongski standardny cas\x1aHongkongski lě" + + "śojski cas\x0cChowdski cas\x17Chowdski standardny cas\x17Chowdski lěśoj" + + "ski cas\x0bIndiski cas\x14Indiskooceaniski cas\x0fIndochinski cas\x15Srj" + + "ejźoindoneski cas\x15Pódzajtšnoindoneski\x19Pódwjacornoindoneski cas\x0c" + + "Irański cas\x17Irański standardny cas\x17Irański lěśojski cas\x0cIrkutsk" + + "i cas\x17Irkutski standardny cas\x17Irkutski lěśojski cas\x0dIsraelski c" + + "as\x18Israelski standardny cas\x18Israelski lěśojski cas\x0dJapański cas" + + "\x18Japański standardny cas\x18Japański lěśojski cas\x19Pódzajtšnokazach" + + "ski cas\x19Pódwjacornokazachski cas\x0cKorejski cas\x17Korejski standard" + + "ny cas\x17Korejski lěśojski cas\x0dKosraeski cas\x10Krasnojarski cas\x1b" + + "Krasnojarski standardny cas\x1bKrasnojarski lěśojski cas\x0cKirgiski cas" + + "\x14cas Linijowych kupow\x12cas kupy Lord-Howe\x1dStandardny cas kupy Lo" + + "rd-Howe\x1dlěśojski cas kupy Lord-Howe\x12cas kupy Macquarie\x0fMagadańs" + + "ki cas\x1aMagadański standardny cas\x1aMagadański lěśojski cas\x0eMalajz" + + "iski cas\x0eMalediwski cas\x0dMarqueski cas\x17cas Marshallowych kupow" + + "\x0eMauriciski cas\x19Mauriciski standardny cas\x19Mauriciski lěśojski c" + + "as\x0aMawson cas\x1bMexiski dłujkowjacorny cas&Mexiski dłujkowjacorny st" + + "andardny cas&Mexiski dłujkowjacorny lěśojski cas\x15Mexiski pacifiski ca" + + "s Mexiski pacifiski standardny cas Mexiski pacifiski lěśojski cas\x11Ula" + + "n-Batorski cas\x1cUlan-Batorski standardny cas\x1cUlan-Batorski lěśojski" + + " cas\x0dMoskowski cas\x18Moskowski standardny cas\x18Moskowski lěśojski " + + "cas\x0eMyanmarski cas\x0cNauruski cas\x0cNepalski cas\x13Nowokaledoniski" + + " cas\x1eNowokaledoniski standardny cas\x1eNowokaledoniski lěśojski cas" + + "\x12Nowoseelandski cas\x1dNowoseelandski standardny cas\x1dNowoseelandsk" + + "i lěśojski cas\x13Nowofundlandski cas\x1eNowofundlandski standardny cas" + + "\x1eNowofundlandski lěśojski cas\x0bNiueski cas\x10cas kupy Norfolk\x17c" + + "as Fernando de Noronha\x22standardny cas Fernando de Noronha\x22lěśojski" + + " cas Fernando de Noronha\x10Nowosibirski cas\x1bNowosibirski standardny " + + "cas\x1bNowosibirski lěśojski cas\x09Omski cas\x14Omski standardny cas" + + "\x14Omski lěśojski cas\x10Pakistański cas\x1bPakistański standardny cas" + + "\x1bPakistański lěśojski cas\x0cPalauski cas\x16Papua-Nowoginejski cas" + + "\x0fParaguayski cas\x1aParaguayski standardny cas\x1aParaguayski lěśojsk" + + "i cas\x0bPeruski cas\x16Peruski standardny cas\x16Peruski lěśojski cas" + + "\x0eFilipinski cas\x19Filipinski standardny cas\x19Filipinski lěśojski c" + + "as\x16cas Phoenixowych kupow\x1dSt.-Pierre-a-Miqueloński cas(St.-Pierre-" + + "a-Miqueloński standardny cas(St.-Pierre-a-Miqueloński lěśojski cas\x17ca" + + "s Pitcairnowych kupow\x0cPonapski cas\x0eReunionski cas\x0bcas Rothera" + + "\x0fSachalinski cas\x1aSachalinski standardny cas\x1aSachalinski lěśojsk" + + "i cas\x0cSamoaski cas\x17Samoaski standardny cas\x17Samoaski lěśojski ca" + + "s\x0eSeychelski cas\x0fSingapurski cas\x0fSalomoński cas\x1bPódpołdnjowo" + + "georgiski cas\x0eSurinamski cas\x09Syowa cas\x0dTahitiski cas\x0fTchajpe" + + "jski cas\x1aTchajpejski standardny cas\x1aTchajpejski lěśojski cas\x0fTa" + + "dźikiski cas\x0eTokelauski cas\x0cTongaski cas\x17Tongaski standardny ca" + + "s\x17Tongaski lěśojski cas\x0cChuukski cas\x0fTurkmeniski cas\x1aTurkmen" + + "iski standardny cas\x1aTurkmeniski lěśojski cas\x0cTuvalski cas\x0eUrugu" + + "ayski cas\x19Uruguayski standardny cas\x19Uruguayski lěśojski cas\x0dUzb" + + "ekiski cas\x18Uzbekiski standardny cas\x18Uzbekiski lěśojski cas\x0dVanu" + + "atski cas\x18Vanuatski standardny cas\x18Vanuatski lěśojski cas\x0fVenez" + + "uelski cas\x12Wladiwostokski cas\x1dWladiwostokski standardny cas\x1dWla" + + "diwostokski lěśojski cas\x10Wolgogradski cas\x1bWolgogradski standardny " + + "cas\x1bWolgogradski lěśojski cas\x0acas Wostok\x0dcas kupy Wake\x19cas k" + + "upow Wallis a Futuna\x0cJakutski cas\x17Jakutski standardny cas\x17Jakut" + + "ski lěśojski cas\x14Jekaterinburgski cas\x1fJekaterinburgski standardny " + + "cas\x1fJekaterinburgski lěśojski cas\x04meje\x02wu\x03št\x02pj\x02so\x0d" + + "za {0} lěće\x10za {0} kwartalej\x03Mar\x02Me\x02Ut\x03Okt\x01F\x01M\x01A" + + "\x01U\x01S\x01O\x01N\x01D\x05Atini\x07Atalata\x09Alhamiisa\x06Aljuma\x07" + + "Assabdu\x0cIsaa jamanoo\x02lu\x02ma\x03mɛ\x02ye\x02va\x02ms\x02A2\x02A5" + + "\x02A6\x02A7\x03Mar\x02Me\x03Okt\x01F\x01M\x01A\x01U\x01S\x01O\x01N\x01D" + + "\x01B\x01L\x01K\x01S\x01T\x01P\x01Y\x02NJ\x01C\x01V\x02Č\x01R\x01J\x01M" + + "\x01T\x01W\x01K\x01G\x01Z\x01L\x01I\x02Kh\x01Q\x01H\x01E\x03Mar\x03Okt" + + "\x01F\x01M\x01A\x01S\x01O\x01N\x01D\x01I\x02Ɣ\x01C\x01K\x01S\x01T\x01P" + + "\x01V\x01H\x02Ö\x01E" + +var bucket24 string = "" + // Size: 19031 bytes + "\x02di\x06ŋgɔn\x05sɔŋ\x04diɓ\x03emi\x04esɔ\x03mad\x04diŋ\x05nyɛt\x03may" + + "\x03tin\x04elá\x09dimɔ́di\x09ŋgɔndɛ\x07sɔŋɛ\x0adiɓáɓá\x08emiasele\x0desɔ" + + "pɛsɔpɛ\x13madiɓɛ́díɓɛ́\x09diŋgindi\x09nyɛtɛki\x0amayésɛ́\x08tiníní\x0bel" + + "áŋgɛ́\x03ét\x06mɔ́s\x03kwa\x03muk\x04ŋgi\x05ɗón\x03esa\x04éti\x08mɔ́sú" + + "\x06kwasú\x0amukɔ́sú\x07ŋgisú\x0aɗónɛsú\x09esaɓasú\x04ndu1\x04ndu2\x04nd" + + "u3\x04ndu4\x14ndúmbū nyá ɓosó\x1endúmbū ní lóndɛ́ íɓaá\x1endúmbū ní lónd" + + "ɛ́ ílálo\x1fndúmbū ní lóndɛ́ ínɛ́y\x06idiɓa\x07ebyámu\x16ɓoso ɓwá yáɓe " + + "lá\x14mbúsa kwédi a Yés\x05ɓ.Ys\x05mb.Ys\x07póndá\x04mbú\x07mɔ́di\x06dis" + + "ama\x07búnyá\x15kíɛlɛ nítómb́í\x0cwɛ́ŋgɛ̄\x08kíɛlɛ\x12mínyá má disama" + + "\x0fepasi a búnyá\x08ŋgandɛ\x07ndɔkɔ\x07píndí\x06Sanvie\x08Fébirie\x04Ma" + + "rs\x06Aburil\x03Mee\x05Sueŋ\x07Súuyee\x02Ut\x09Settembar\x07Oktobar\x08N" + + "ovembar\x08Disambar\x03Dim\x03Ten\x03Tal\x03Ala\x03Ara\x03Arj\x03Sib\x05" + + "Dimas\x06Teneŋ\x06Talata\x07Alarbay\x08Aramisay\x06Arjuma\x06Sibiti\x0dA" + + "riŋuu Yeesu\x0dAtooŋe Yeesu\x03ArY\x03AtY\x07Jamanay\x04Emit\x07Fuleeŋ" + + "\x08Lóokuŋ\x05Funak\x05Fucen\x04Jaat\x05Kajom\x0fBujom / Kalíim5EEEE, G " + + "སྤྱི་ལོ་y MMMM ཚེས་dd0G སྤྱི་ལོ་y MMMM ཚེས་ dd7G སྤྱི་ལོ་y ཟླ་MMM ཚེས་" + + "dd\x03༡\x03༢\x03༣\x03༤\x03༥\x03༦\x03༧\x03༨\x03༩\x06༡༠\x06༡༡\x0212\x014" + + "\x019\x06༡༢\x15ཟླ་དངཔ་\x1eཟླ་གཉིས་པ་\x1eཟླ་གསུམ་པ་\x1bཟླ་བཞི་པ་\x18ཟླ་ལྔ" + + "་པ་\x1bཟླ་དྲུག་པ\x1eཟླ་བདུན་པ་!ཟླ་བརྒྱད་པ་\x1bཟླ་དགུ་པ་\x1bཟླ་བཅུ་པ་*ཟ" + + "ླ་བཅུ་གཅིག་པ་*ཟླ་བཅུ་གཉིས་པ་$སྤྱི་ཟླ་དངཔ་-སྤྱི་ཟླ་གཉིས་པ་-སྤྱི་ཟླ་གསུམ" + + "་པ་'སྤྱི་ཟླ་བཞི་པ'སྤྱི་ཟླ་ལྔ་པ་*སྤྱི་ཟླ་དྲུག་པ-སྤྱི་ཟླ་བདུན་པ་0སྤྱི་ཟླ" + + "་བརྒྱད་པ་*སྤྱི་ཟླ་དགུ་པ་*སྤྱི་ཟླ་བཅུ་པ་9སྤྱི་ཟླ་བཅུ་གཅིག་པ་9སྤྱི་ཟླ་བཅ" + + "ུ་གཉིས་པ་\x09ཟླ་\x0cམིར་\x0cལྷག་\x0cཕུར་\x0cསངས་\x0fསྤེན་\x09ཉི་\x1bབཞ" + + "ི་དཔྱ་༡\x1bབཞི་དཔྱ་༢\x1bབཞི་དཔྱ་༣\x1bབཞི་དཔྱ་༤'བཞི་དཔྱ་དང་པ་-བཞི་དཔྱ་ག" + + "ཉིས་པ་-བཞི་དཔྱ་གསུམ་པ་*བཞི་དཔྱ་བཞི་པ་\x0fསྔ་ཆ་\x12ཕྱི་ཆ་3EEEE, སྤྱི་ལོ" + + "་y MMMM ཚེས་dd.སྤྱི་ལོ་y MMMM ཚེས་ dd5སྤྱི་ལོ་y ཟླ་MMM ཚེས་dd7ཆུ་ཚོད་ " + + "h སྐར་མ་ mm:ss a zzzz4ཆུ་ཚོད་ h སྐར་མ་ mm:ss a z\x1eཆུ་ཚོད་h:mm:ss a/ཆུ་" + + "ཚོད་ h སྐར་མ་ mm a\x18དུས་བསྐལ\x06ལོ&ལོ་འཁོར་ {0} ནང་,ལོ་འཁོར་ {0} ཧེ་" + + "མ་\x0fཟླ་ཝ་\x1aཟླཝ་ {0} ནང་ ཟླཝ་ {0} ཧེ་མ་\x18བདུན་ཕྲག)བངུན་ཕྲག་ {0} ན" + + "ང་/བངུན་ཕྲག་ {0} ཧེ་མ་\x0cཚེས་\x0fཁ་ཉིམ\x0cཁ་ཙ་\x12ད་རིས་\x12ནངས་པ་" + + "\x15གནངས་ཚེ\x1dཉིནམ་ {0} ནང་#ཉིནམ་ {0} ཧེ་མ་-བདུན་ཕྲག་གི་ཉིམ\x1fསྔ་ཆ/ཕྱི" + + "་ཆ་\x12ཆུ་ཚོད#ཆུ་ཚོད་ {0} ནང་)ཆུ་ཚོད་ {0} ཧེ་མ་\x0fསྐར་མ སྐར་མ་ {0} ནང" + + "་&སྐར་མ་ {0} ཧེ་མ་\x15སྐར་ཆཱ་ སྐར་ཆ་ {0} ནང་&སྐར་ཆ་ {0} ཧེ་མ་\x15དུས་ཀ" + + "ུལ\x1b{0}་ཆུ་ཚོད།Hབྲཱི་ཊིཤ་བྱཱར་དུས་ཆུ་ཚོདEཨཱ་ཡརིཤ་བྱཱར་དུས་ཆུ་ཚོད9ཨཕ་" + + "ག་ནི་ས྄ཏཱནཆུ་ཚོདNདབུས་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོདHཤར་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོདKལ" + + "ྷོ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོདKནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོད`ནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་" + + "ཚད་ལྡན་ཆུ་ཚོདfནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་བྱཱར་དུས་ཆུ་ཚོད*ཨ་ལསི་ཀ་ཆུ་ཚོད?ཨ་ལསི་" + + "ཀ་ཚད་ལྡན་ཆུ་ཚོདEཨ་ལསི་ཀ་ཉིན་སྲུང་ཆུ་ཚོད0ཨེ་མ་ཛཱོན་ཆུ་ཚོདEཨེ་མ་ཛཱོན་ཚད་" + + "ལྡན་ཆུ་ཚོདKཨེ་མ་ཛཱོན་བྱཱར་དུས་ཆུ་ཚོད]བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཆུ་ཚོདrབ" + + "ྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཚད་ལྡན་ཆུ་ཚོདxབྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཉིན་སྲུ" + + "ང་ཆུ་ཚོདWབྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཆུ་ཚོདlབྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཚད་ལྡན་ཆ" + + "ུ་ཚོདrབྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཉིན་སྲུང་ཆུ་ཚོདTབྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཆུ་" + + "ཚོདiབྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཚད་ལྡན་ཆུ་ཚོདoབྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཉིན་སྲུང" + + "་ཆུ་ཚོདZབྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཆུ་ཚོདoབྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཚད་ལྡན་" + + "ཆུ་ཚོདuབྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཉིན་སྲུང་ཆུ་ཚོད6ཨ་རེ་བྷི་ཡན་ཆུ་ཚོདKཨ་རེ" + + "་བྷི་ཡན་ཚད་ལྡན་ཆུ་ཚོདEཨ་རེ་བྷི་ཡན་སྲུང་ཆུ་ཚོད6ཨར་ཇེན་ཊི་ན་ཆུ་ཚོདKཨར་ཇེ" + + "ན་ཊི་ན་ཚད་ལྡན་ཆུ་ཚོདQཨར་ཇེན་ཊི་ན་བྱཱར་དུས་ཆུ་ཚོདTནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན" + + "་ཆུ་ཚོདiནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་ཚད་ལྡན་ཆུ་ཚོདoནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་བྱཱར" + + "་དུས་ཆུ་ཚོད3ཨར་མི་ནི་ཡ་ཆུ་ཚོདHཨར་མི་ནི་ཡ་ཚད་ལྡན་ཆུ་ཚོདNཨར་མི་ནི་ཡ་བྱཱར" + + "་དུས་ཆུ་ཚོད6ཨེཊ་ལེན་ཊིཀ་ཆུ་ཚོདKཨེཊ་ལེན་ཊིཀ་ཚད་ལྡན་ཆུ་ཚོདQཨེཊ་ལེན་ཊིཀ་ཉ" + + "ིན་སྲུང་ཆུ་ཚོད`དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོདuདབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལ" + + "ི་ཡ་ཚད་ལྡན་ཆུ་ཚོད{དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོདiབུས་ནུབ་ཕྱ" + + "ོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད\x81དབུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚ" + + "ོད\x87དབུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོདlཤར་ཕྱོགས་ཕྱོགས་ཨཱོ" + + "ས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད\x81ཤར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད\x87ཤ" + + "ར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད]ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་" + + "ཆུ་ཚོདrནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོདxནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ" + + "་ཉིན་སྲུང་ཆུ་ཚོད<ཨ་ཛར་བྷའི་ཇཱན་ཆུ་ཚོདQཨ་ཛར་བྷའི་ཇཱན་ཚད་ལྡན་ཆུ་ཚོདWཨ་ཛར" + + "་བྷའི་ཇཱན་བྱཱར་དུས་ཆུ་ཚོད*ཨེ་ཛོརས་ཆུ་ཚོད?ཨེ་ཛོརས་ཚད་ལྡན་ཆུ་ཚོདEཨེ་ཛོརས" + + "་བྱཱར་དུས་ཆུ་ཚོད0བངྒ་ལ་དེཤ་ཆུ་ཚོདEབངྒ་ལ་དེཤ་ཚད་ལྡན་ཆུ་ཚོདKབངྒ་ལ་དེཤ་བྱ" + + "ཱར་དུས་ཆུ་ཚོད0འབྲུག་ཡུལ་ཆུ་ཚོད6བྷོ་ལི་བི་ཡ་ཆུ་ཚོད3བྲ་ཛི་ལི་ཡ་ཆུ་ཚོདHབྲ" + + "་ཛི་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོདNབྲ་ཛི་ལི་ཡ་བྱཱར་དུས་ཆུ་ཚོད*ཀེཔ་བཱཌ་ཆུ་ཚོད?ཀེཔ་བ" + + "ཱཌ་ཚད་ལྡན་ཆུ་ཚོདEཀེཔ་བཱཌ་བྱཱར་དུས་ཆུ་ཚོད$ཅི་ལི་ཆུ་ཚོད9ཅི་ལི་ཚད་ལྡན་ཆུ་" + + "ཚོད?ཅི་ལི་བྱཱར་དུས་ཆུ་ཚོད'རྒྱ་ནག་ཆུ་ཚོད<རྒྱ་ནག་ཚད་ལྡན་ཆུ་ཚོདBརྒྱ་ནག་ཉི" + + "ན་སྲུང་ཆུ་ཚོདQཁི་རིསྟ་མེས་མཚོ་གླིང་ཆུ་ཚོད9ཀོ་ལོམ་བྷི་ཡ་ཆུ་ཚོདNཀོ་ལོམ་བ" + + "ྷི་ཡ་ཚད་ལྡན་ཆུ་ཚོདTཀོ་ལོམ་བྷི་ཡ་བྱཱར་དུས་ཆུ་ཚོད*ཀིའུ་བྷ་ཆུ་ཚོད?ཀིའུ་བྷ" + + "་ཚད་ལྡན་ཆུ་ཚོདEཀིའུ་བྷ་ཉིན་སྲུང་ཆུ་ཚོདHཨིསི་ཊར་ཨཱའི་ལེནཌ་ཆུ་ཚོད]ཨིསི་ཊ" + + "ར་ཨཱའི་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོདcཨིསི་ཊར་ཨཱའི་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོད-ཨེ་ཀུ་ཌཽ་ཆ" + + "ུ་ཚོདQདབུས་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོདfདབུས་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོདlད" + + "བུས་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོདKཤར་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོད`ཤར་ཕྱོགས" + + "་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོདfཤར་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོདNནུབ་ཕྱོགས་" + + "ཡུ་རོ་པེན་ཆུ་ཚོདcནུབ་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོདiནུབ་ཕྱོགས་ཡུ་རོ་པེན" + + "་བྱཱར་དུས་ཆུ་ཚོདNཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་ཆུ་ཚོདcཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་ཚད་ལྡན" + + "་ཆུ་ཚོདiཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་བྱཱར་དུས་ཆུ་ཚོད<ཕིརེནཅ་གི་ཡ་ན་ཆུ་ཚོད3ག་ལ་པ" + + "་གོསི་ཆུ་ཚོད$ཇཽ་ཇཱ་ཆུ་ཚོད9ཇཽ་ཇཱ་ཚད་ལྡན་ཆུ་ཚོད?ཇཽ་ཇཱ་བྱཱར་དུས་ཆུ་ཚོདQགི" + + "རིན་ཝིཆ་ལུ་ཡོད་པའི་ཆུ་ཚོདNཤར་ཕྱོགས་གིརིན་ལེནཌ་ཆུ་ཚོདcཤར་ཕྱོགས་གིརིན་ལེ" + + "ནཌ་ཚད་ལྡན་ཆུ་ཚོདiཤར་ཕྱོགས་གིརིན་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོདQནུབ་ཕྱོགས་གིརིན་ལ" + + "ེནཌ་ཆུ་ཚོདfནུབ་ཕྱོགས་གིརིན་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོདlནུབ་ཕྱོགས་གིརིན་ལེནཌ་བྱཱ" + + "ར་དུས་ཆུ་ཚོད$གཱལཕི་ཆུ་ཚོད'གུ་ཡ་ན་ཆུ་ཚོདIཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཆུ་ཚོད^ཧ་ཝའ" + + "ི་-ཨེ་ལིའུ་ཤེན་ཚད་ལྡན་ཆུ་ཚོདdཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཉིན་སྲུང་ཆུ་ཚོད'རྒྱ་གར" + + "་ཆུ་ཚོདKརྒྱ་གར་གྱི་རྒྱ་མཚོ་ཆུ་ཚོད<ཨིན་ཌོ་ཅཱའི་ན་ཆུ་ཚོད`དབུས་ཕྱོགས་ཨིན་" + + "ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོདZཤར་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོད]ནུབ་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤ" + + "ི་ཡ་ཆུ་ཚོད'ཨི་རཱན་ཆུ་ཚོད<ཨི་རཱན་ཚད་ལྡན་ཆུ་ཚོདBཨི་རཱན་ཉིན་སྲུང་ཆུ་ཚོད*ཨ" + + "ར་ཀུཙི་ཆུ་ཚོད?ཨར་ཀུཙི་ཚད་ལྡན་ཆུ་ཚོདEཨར་ཀུཙི་བྱཱར་དུས་ཆུ་ཚོད*ཨིས་རེལ་ཆུ" + + "་ཚོད?ཨིས་རེལ་ཚད་ལྡན་ཆུ་ཚོདEཨིས་རེལ་ཉིན་སྲུང་ཆུ་ཚོད$ཇ་པཱན་ཆུ་ཚོད9ཇ་པཱན་" + + "ཚད་ལྡན་ཆུ་ཚོད?ཇ་པཱན་ཉིན་སྲུང་ཆུ་ཚོད*ཀོ་རི་ཡ་ཆུ་ཚོད?ཀོ་རི་ཡ་ཚད་ལྡན་ཆུ་ཚ" + + "ོདEཀོ་རི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད<ཀརསི་ནོ་ཡརསཀི་ཆུ་ཚོདQཀརསི་ནོ་ཡརསཀི་ཚད་ལྡན་ཆ" + + "ུ་ཚོདWཀརསི་ནོ་ཡརསཀི་བྱཱར་དུས་ཆུ་ཚོད-མ་གྷ་དཱན་ཆུ་ཚོདBམ་གྷ་དཱན་ཚད་ལྡན་ཆུ" + + "་ཚོདHམ་གྷ་དཱན་བྱཱར་དུས་ཆུ་ཚོད-མཱལ་དིབས་ཆུ་ཚོད0མོ་རི་ཤཱས་ཆུ་ཚོདEམོ་རི་ཤ" + + "ཱས་ཚད་ལྡན་ཆུ་ཚོདKམོ་རི་ཤཱས་བྱཱར་དུས་ཆུ་ཚོད'མཽས་ཀོ་ཆུ་ཚོད<མཽས་ཀོ་ཚད་ལྡན" + + "་ཆུ་ཚོདBམཽས་ཀོ་བྱཱར་དུས་ཆུ་ཚོད'ནེ་པཱལ་ཆུ་ཚོད9ནིའུ་ཛི་ལེནཌ་ཆུ་ཚོདNནིའུ་" + + "ཛི་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོདTནིའུ་ཛི་ལེནཌ་ཉིན་སྲུང་ཆུ་ཚོདBནིའུ་ཕའུནཌ་ལེནཌ་ཆུ་" + + "ཚོདWནིའུ་ཕའུནཌ་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད]ནིའུ་ཕའུནཌ་ལེནཌ་ཉིན་སྲུང་ཆུ་ཚོདYཕར་ན" + + "ེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཆུ་ཚོདnཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཚད་ལྡན་ཆུ་ཚོདtཕར་" + + "ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་བྱཱར་དུས་ཆུ་ཚོདBནོ་བོ་སི་བིརསཀི་ཆུ་ཚོདWནོ་བོ་སི་" + + "བིརསཀི་ཚད་ལྡན་ཆུ་ཚོད]ནོ་བོ་སི་བིརསཀི་བྱཱར་དུས་ཆུ་ཚོད'ཨོམསཀི་ཆུ་ཚོད<ཨོམ" + + "སཀི་ཚད་ལྡན་ཆུ་ཚོདBཨོམསཀི་བྱཱར་དུས་ཆུ་ཚོད3པ་ཀི་ས྄ཏཱན་ཆུ་ཚོདHཔ་ཀི་ས྄ཏཱན་" + + "ཚད་ལྡན་ཆུ་ཚོདNཔ་ཀི་ས྄ཏཱན་བྱཱར་དུས་ཆུ་ཚོད3པ་ར་གུ་ཝའི་ཆུ་ཚོདHཔ་ར་གུ་ཝའི་" + + "ཚད་ལྡན་ཆུ་ཚོདNཔ་ར་གུ་ཝའི་བྱཱར་དུས་ཆུ་ཚོད!པ་རུ་ཆུ་ཚོད6པ་རུ་ཚད་ལྡན་ཆུ་ཚོ" + + "ད<པ་རུ་བྱཱར་དུས་ཆུ་ཚོདQཔའི་རི་དང་མི་ཀི་ལཱོན་ཆུ་ཚོདfཔའི་རི་དང་མི་ཀི་ལཱོ" + + "ན་ཚད་ལྡན་ཆུ་ཚོདlཔའི་རི་དང་མི་ཀི་ལཱོན་ཉིན་སྲུང་ཆུ་ཚོད9རི་ཡུ་ནི་ཡཱན་ཆུ་ཚ" + + "ོད*ས་ཁ་ལིན་ཆུ་ཚོད?ས་ཁ་ལིན་ཚད་ལྡན་ཆུ་ཚོདEས་ཁ་ལིན་བྱཱར་དུས་ཆུ་ཚོད*སེ་ཤཱལ" + + "ས་ཆུ་ཚོད0སུ་རི་ནཱམ་ཆུ་ཚོད<ཡུ་རུ་གུ་ཝཱའི་ཆུ་ཚོདQཡུ་རུ་གུ་ཝཱའི་ཚད་ལྡན་ཆུ" + + "་ཚོདWཡུ་རུ་གུ་ཝཱའི་བྱཱར་དུས་ཆུ་ཚོད<བེ་ནི་ཛུ་ཝེ་ལ་ཆུ་ཚོདBབ་ལ་ཌི་བོསི་ཏོ" + + "ཀ་ཆུ་ཚོདWབ་ལ་ཌི་བོསི་ཏོཀ་ཚད་ལྡན་ཆུ་ཚོད]བ་ལ་ཌི་བོསི་ཏོཀ་བྱཱར་དུས་ཆུ་ཚོད" + + "<བཱོལ་གོ་གིརེཌ་ཆུ་ཚོདQབཱོལ་གོ་གིརེཌ་ཚད་ལྡན་ཆུ་ཚོདWབཱོལ་གོ་གིརེཌ་བྱཱར་དུས" + + "་ཆུ་ཚོད-ཡ་ཀུཙིཀི་ཆུ་ཚོདBཡ་ཀུཙིཀི་ཚད་ལྡན་ཆུ་ཚོདHཡ་ཀུཙིཀི་བྱཱར་དུས་ཆུ་ཚོ" + + "དBཡེ་ཀ་ཏེ་རིན་བརག་ཆུ་ཚོདWཡེ་ཀ་ཏེ་རིན་བརག་ཚད་ལྡན་ཆུ་ཚོད]ཡེ་ཀ་ཏེ་རིན་བརག" + + "་བྱཱར་དུས་ཆུ་ཚོད\x02lu\x02ma\x02me\x03ĵa\x02ve\x02sa\x02lu\x02ma\x02je" + + "\x02sa\x03Pos\x03Pir\x03Tat\x03Nai\x03Sha\x03Sab" + +var bucket25 string = "" + // Size: 9384 bytes + "\x02BT\x03Mbe\x03Kai\x03Kat\x03Kan\x03Gat\x03Gan\x03Mug\x03Knn\x03Ken" + + "\x03Iku\x03Imw\x03Igi\x0eMweri wa mbere\x0fMweri wa kaĩri\x11Mweri wa ka" + + "thatũ\x0dMweri wa kana\x0fMweri wa gatano\x13Mweri wa gatantatũ\x12Mweri" + + " wa mũgwanja\x0fMweri wa kanana\x0eMweri wa kenda\x0fMweri wa ikũmi\x18M" + + "weri wa ikũmi na ũmwe\x1aMweri wa ikũmi na Kaĩrĩ\x03Kma\x03Tat\x03Ine" + + "\x03Tan\x03Arm\x03Maa\x03NMM\x06Kiumia\x09Njumatatu\x08Njumaine\x09Njuma" + + "tano\x08Aramithi\x06Njumaa\x0bNJumamothii\x0eKuota ya mbere\x10Kuota ya " + + "Kaĩrĩ\x10Kuota ya kathatu\x0dKuota ya kana\x02KI\x02UT\x0fMbere ya Krist" + + "o\x10Thutha wa Kristo\x02MK\x02TK\x06Ivinda\x05Mweri\x09Mũthenya\x06Ĩgor" + + "o\x0aŨmũnthĩ\x07Rũciũ\x15Mũthenya kiumia-inĩ\x05Ithaa\x08Ndagĩka\x07Gĩth" + + "aa\x03dzv\x03dzd\x03ted\x04afɔ\x03dam\x03mas\x03sia\x03dea\x03any\x03kel" + + "\x03ade\x03dzm\x05dzove\x06dzodze\x06tedoxe\x09afɔfiẽ\x05damɛ\x04masa" + + "\x08siamlɔm\x0adeasiamime\x09anyɔnyɔ\x04kele\x0dadeɛmekpɔxe\x05dzome\x15" + + "EEEE, U MMMM dd 'lia'\x0eU MMMM d 'lia'\x0dU MMM d 'lia'\x03foa\x06ƒoave" + + "\x04ƒoa\x07afɔfie\x16EEEE, MMMM d 'lia' y G\x10MMMM d 'lia' y G\x10MMM d" + + " 'lia', y G\x07{0} {1}\x08afɔfĩe\x04dama\x04kɔs\x03dzo\x03bla\x04kuɖ\x03" + + "yaw\x04fiɖ\x03mem\x08kɔsiɖa\x06dzoɖa\x06blaɖa\x05kuɖa\x07yawoɖa\x05fiɖa" + + "\x08memleɖa\x02k1\x02k2\x02k3\x02k4\x0dkɔta gbãtɔ\x0ckɔta evelia\x0fkɔta" + + " etɔ̃lia\x0ckɔta enelia\x04ŋdi\x07ɣetrɔ\x07fɔŋli\x05ŋdɔ\x05fiẽ\x03zã\x02" + + "ɣ\x15Hafi Yesu Va Do ŋgɔ\x0bYesu Ŋɔli\x02hY\x03Bŋ\x03Yŋ\x03Eŋ\x14EEEE, " + + "MMMM d 'lia' y\x0eMMMM d 'lia' y\x0eMMM d 'lia', y\x13a 'ga' h:mm:ss zzz" + + "z\x10a 'ga' h:mm:ss z\x0ea 'ga' h:mm:ss\x0ba 'ga' h:mm\x09dasiamime\x18E" + + "EEE, MMMM dd 'lia', G y\x11MMMM d 'lia', G y\x10MMM d 'lia', G y\x0edd-M" + + "M-GGGGG yy\x0bhafi R.O.C.\x0ddd-MM-GGGGG y\x06ŋɔli\x03ƒe\x0cƒe si va yi" + + "\x07ƒe sia\x0eƒe si gbɔ na\x0dle ƒe {0} me\x10ƒe {0} si va yi\x13ƒe {0} " + + "si wo va yi\x16le ƒe {0} si va yi me\x17le ƒe {0} si gbɔna me\x13ƒe {0} " + + "si va yi me\x05kɔta\x1ale kɔta {0} si gbɔ na me\x15kɔta {0} si va yi me" + + "\x19le kɔta {0} si gbɔna me\x06ɣleti\x0fɣleti si va yi\x0aɣleti sia\x11ɣ" + + "leti si gbɔ na\x10le ɣleti {0} me\x13le ɣleti {0} wo me\x13ɣleti {0} si " + + "va yi\x16ɣleti {0} si wo va yi\x0ekɔsiɖa ɖeka\x11kɔsiɖa si va yi\x0ckɔsi" + + "ɖa sia\x13kɔsiɖa si gbɔ na\x12le kɔsiɖa {0} me\x15le kɔsiɖa {0} wo me" + + "\x15kɔsiɖa {0} si va yi\x18kɔsiɖa {0} si wo va yi\x06ŋkeke\x10nyitsɔ si " + + "va yi\x0eetsɔ si va yi\x04egbe\x0fetsɔ si gbɔna\x11nyitsɔ si gbɔna\x10le" + + " ŋkeke {0} me\x13le ŋkeke {0} wo me\x13ŋkeke {0} si va yi\x16ŋkeke {0} s" + + "i wo va yi\x12kɔsiɖa me ŋkeke\x14kɔsiɖagbe si va yi\x10kɔsiɖa sia gbe" + + "\x16kɔsiɖagbe si gbɔ na\x0fdzoɖa si va yi\x0adzoɖa sia\x11dzoɖa si gbɔ n" + + "a\x0fblaɖa si va yi\x0ablaɖa sia\x11blaɖa si gbɔ na\x0ekuɖa si va yi\x09" + + "kuɖa sia\x10kuɖa si gbɔ na\x10yawoɖa si va yi\x0byawoɖa sia\x12yawoɖa si" + + " gbɔ na\x0efiɖa si va yi\x09fiɖa sia\x10fiɖa si gbɔ na\x11memleɖa si va " + + "yi\x0cmemleɖa sia\x13memleɖa si gbɔ na\x0aŋkekea me\x08gaƒoƒo\x12le gaƒo" + + "ƒo {0} me\x15le gaƒoƒo {0} wo me\x15gaƒoƒo {0} si va yi\x18gaƒoƒo {0} s" + + "i wo va yi\x0caɖabaƒoƒo\x16le aɖabaƒoƒo {0} me\x19le aɖabaƒoƒo {0} wo me" + + "\x19aɖabaƒoƒo {0} si va yi\x1caɖabaƒoƒo {0} si wo va yi\x06sekend\x04fif" + + "i\x10le sekend {0} me\x13le sekend {0} wo me\x13sekend {0} si va yi\x16s" + + "ekend {0} si wo va yi\x0enutomegaƒoƒo\x1eBritain dzomeŋɔli gaƒoƒome\x1fI" + + "relanɖ dzomeŋɔli gaƒoƒome\x0fEker gaƒoƒome\x16Eker gaƒoƒoɖoanyime\x1bEke" + + "r dzomeŋɔli gaƒoƒome\x18Titina Afrika gaƒoƒome\x1bƔedzeƒe Africa gaƒoƒom" + + "e\x19Anyiehe Africa gaƒoƒome\x1dƔetoɖoƒe Africa gaƒoƒome$Ɣetoɖoƒe Afrika" + + " gaƒoƒoɖoanyime&Ɣetoɖoƒe Africa ŋkekeme gaƒoƒome\x11Alaska gaƒoƒome\x18A" + + "laska gaƒoƒoɖoanyime\x1aAlaska ŋkekeme gaƒoƒome\x11Almati gaƒoƒome\x18Al" + + "mati gaƒoƒoɖoanyime\x1dAlmati dzomeŋɔli gaƒoƒome\x11Amazon gaƒoƒome\x18A" + + "mazon gaƒoƒoɖoanyime\x1dAmazon dzomeŋɔli gaƒoƒome\x19Titina America gaƒo" + + "ƒome Titina America gaƒoƒoɖoanyime\x22Titina America ŋkekeme gaƒoƒome" + + "\x1cƔedzeƒe America gaƒoƒome#Ɣedzeƒe America gaƒoƒoɖoanyime%Ɣedzeƒe Amer" + + "ica ŋkekeme gaƒoƒome#America Todzidukɔwo ƒe gaƒoƒome*America Todzidukɔwo" + + " ƒe gaƒoƒoɖoanyime+America Todzidukɔwo ƒe ŋkekme gaƒoƒome\x12Pacific gaƒ" + + "oƒome\x19Pacific gaƒoƒoɖoanyime\x1aPacific ŋkekme gaƒoƒome\x11Anadir gaƒ" + + "oƒome\x18Anadir gaƒoƒoɖoanyime\x1aAnadir ŋkekeme gaƒoƒome\x10Aktau gaƒoƒ" + + "ome\x17Aktau gaƒoƒoɖoanyime\x1cAktau dzomeŋɔli gaƒoƒome\x11Aktobe gaƒoƒo" + + "me\x18Aktobe gaƒoƒoɖoanyime\x12Akttobe gaƒoƒome\x11Arabia gaƒoƒome\x18Ar" + + "abia gaƒoƒoɖoanyime\x1aArabia ŋkekeme gaƒoƒome\x14Argentina gaƒoƒome\x1b" + + "Argentina gaƒoƒoɖoanyime Argentina dzomeŋɔli gaƒoƒome Ɣetoɖoƒe Argentina" + + " gaƒoƒome'Ɣetoɖoƒe Argentina gaƒoƒoɖoanyime,Ɣetoɖoƒe Argentina dzomeŋɔli" + + " gaƒoƒome\x12Armenia gaƒoƒome\x19Armenia gaƒoƒoɖoanyime\x1eArmenia dzome" + + "ŋɔli gaƒoƒome\x13Atlantic gaƒoƒome\x1aAtlantic gaƒoƒoɖoanyime\x1cAtlant" + + "ic ŋkekeme gaƒoƒome\x1bTitina Australia gaƒoƒome\x22Titina Australia gaƒ" + + "oƒoɖoanyime$Titina Australia ŋkekeme gaƒoƒome\x1fAustralia ɣetoɖofe gaƒo" + + "ƒome&Australia ɣetoɖofe gaƒoƒoɖoanyime(Australia ɣetoɖofe ŋkekeme gaƒoƒ" + + "ome\x1eƔedzeƒe Australia gaƒoƒome%Ɣedzeƒe Australia gaƒoƒoɖoanyime'Ɣedze" + + "ƒe Australia ŋkekeme gaƒoƒome Ɣetoɖoƒe Australia gaƒoƒome'Ɣetoɖoƒe Aust" + + "ralia gaƒoƒoɖoanyime)Ɣetoɖoƒe Australia ŋkekeme gaƒoƒome\x16Azerbaidzan " + + "gaƒoƒome\x1dAzerbaidzan gaƒoƒoɖoanyime\x22Azerbaidzan dzomeŋɔli gaƒoƒome" + + "\x11Azores gaƒoƒome\x18Azores gaƒoƒoɖoanyime\x1dAzores dzomeŋɔli gaƒoƒom" + + "e\x12Bolivia gaƒoƒome\x13Brasilia gaƒoƒome\x1aBrasilia gaƒoƒoɖoanyime" + + "\x1fBrasilia dzomeŋɔli gaƒoƒome\x14Kep Verde gaƒoƒome\x1bKep Verde gaƒoƒ" + + "oɖoanyime Kep Verde dzomeŋɔli gaƒoƒome\x11Tsile gaƒoƒo me\x17Tsile gaƒoƒ" + + "oɖoanyime\x1cTsile dzomeŋɔli gaƒoƒome\x10China gaƒoƒome\x17China gaƒoƒoɖ" + + "oanyime\x19China ŋkekeme gaƒoƒome\x15Tsoibalsan gaƒoƒome\x1cTsoibalsan g" + + "aƒoƒoɖoanyime!Tsoibalsan dzomeŋɔli gaƒoƒome\x13Kolombia gaƒoƒome\x1aKolo" + + "mbia gaƒoƒoɖoanyime\x1fKolombia dzomeŋɔli gaƒoƒome\x0fKuba gaƒoƒome\x16K" + + "uba gaƒoƒoɖoanyime\x18Kuba ŋkekeme gaƒoƒome%Easter Ƒudomekpodukɔ ƒe gaƒo" + + "ƒome,Easter Ƒudomekpodukɔ ƒe gaƒoƒoɖoanyime1Easter Ƒudomekpodukɔ ƒe dzo" + + "meŋɔli gaƒoƒome\x1eIkuedɔ dzomeŋɔli gaƒoƒome\x18Titina Europe gaƒoƒome" + + "\x1fTitina Europe gaƒoƒoɖoanyime!Titina Europe ŋkekeme gaƒoƒome\x1bƔedze" + + "ƒe Europe gaƒoƒome\x22Ɣedzeƒe Europe gaƒoƒoɖoanyime$Ɣedzeƒe Europe ŋkek" + + "eme gaƒoƒome\x1dƔetoɖoƒe Europe gaƒoƒome$Ɣetoɖoƒe Europe gaƒoƒoɖoanyime&" + + "Ɣetoɖoƒe Europe ŋkekeme gaƒoƒome)Fɔlklanɖ Ƒudomekpodukɔ ƒe gaƒoƒome0Fɔl" + + "klanɖ Ƒudomekpodukɔ ƒe gaƒoƒoɖoanyime5Fɔlklanɖ Ƒudomekpodukɔ ƒe dzomeŋɔl" + + "i gaƒoƒome\x19Frentsi Guiana gaƒoƒome\x14Galapagos gaƒoƒome\x13Dzɔdzia g" + + "aƒoƒome\x1aDzɔdzia gaƒoƒoɖoanyime\x1fDzɔdzia dzomeŋɔli gaƒoƒome\x14Green" + + "wich gaƒoƒome\x1eƔedzeƒe Grinlanɖ gaƒoƒome%Ɣedzeƒe Grinlanɖ gaƒoƒoɖoanyi" + + "me*Ɣedzeƒe Grinlanɖ dzomeŋɔli gaƒoƒome Ɣetoɖoƒe Grinlanɖ gaƒoƒome'Ɣetoɖo" + + "ƒe Grinlanɖ gaƒoƒoɖoanyime,Ɣetoɖoƒe Grinlanɖ dzomeŋɔli gaƒoƒome\x0fGulf" + + " gaƒoƒome\x11Gayana gaƒoƒome\x19Hawaii-Aleutia gaƒoƒome Hawaii-Aleutia g" + + "aƒoƒoɖoanyime\x22Hawaii-Aleutia ŋkekeme gaƒoƒome\x16Hɔng Kɔng gaƒoƒome" + + "\x1eHɔng Kɔng gaƒoƒoɖoanyi me\x22Hɔng Kɔng dzomeŋɔli gaƒoƒome\x10Hoved g" + + "aƒoƒome\x17Hoved gaƒoƒoɖoanyime\x1cHoved dzomeŋɔli gaƒoƒome\x11Irkusk ga" + + "ƒoƒome\x18Irkusk gaƒoƒoɖoanyime\x1dIrkusk dzomeŋɔli gaƒoƒome\x11Israel " + + "gaƒoƒome\x18Israel gaƒoƒoɖoanyime\x1aIsrael ŋkekeme gaƒoƒome\x10Japan ga" + + "ƒoƒome\x16Japan gaƒoƒoɖanyime\x19Japan ŋkekeme gaƒoƒome#Petropavlovsk-K" + + "amtsatski gaƒoƒome*Petropavlovsk-Kamtsatski gaƒoƒoɖoanyime,Petropavlovsk" + + "-Kamtsatski ŋkekeme gaƒoƒome\x1eƔedzeƒe Kazakstan gaƒoƒome Ɣetoɖoƒe Kaza" + + "kstan gaƒoƒome\x10Korea gaƒoƒome\x17Korea gaƒoƒoɖoanyime\x19Korea ŋkekem" + + "e gaƒoƒome\x16Krasnoyarsk gaƒoƒome\x1dKrasnoyarsk gaƒoƒoɖoanyime\x22Kras" + + "noyarsk dzomeŋɔli gaƒoƒome\x14Kirgistan gaƒoƒome\x10Makau gaƒoƒome\x17Ma" + + "kau gaƒoƒoɖoanyime\x19Makau ŋkekeme gaƒoƒome\x12Magadan gaƒoƒome\x19Maga" + + "dan gaƒoƒoɖoanyime\x1eMagadan dzomeŋɔli gaƒoƒome\x14Mɔritius gaƒoƒome" + + "\x1bMɔritius gaƒoƒoɖoanyime Mɔritius dzomeŋɔli gaƒoƒome\x15Ulan Batɔ gaƒ" + + "oƒome\x1cUlan Batɔ gaƒoƒoɖoanyime!Ulan Batɔ dzomeŋɔli gaƒoƒome\x11Moscow" + + " gaƒoƒome\x18Moscow gaƒoƒoɖoanyime\x1aMoscow ŋkekeme gaƒoƒome\x19Niufaun" + + "ɖlanɖ gaƒoƒome Niufaunɖlanɖ gaƒoƒoɖoanyime\x22Niufaunɖlanɖ ŋkekeme gaƒo" + + "ƒome\x1eFernando de Noronha gaƒoƒome%Fernando de Noronha gaƒoƒoɖoanyime" + + "*Fernando de Noronha dzomeŋɔli gaƒoƒome\x16Novosibirsk gaƒoƒome\x1dNovos" + + "ibirsk gaƒoƒoɖoanyime\x22Novosibirsk dzomeŋɔli gaƒoƒome\x0fOmsk gaƒoƒome" + + "\x16Omsk gaƒoƒoɖoanyime\x1bOmsk dzomeŋɔli gaƒoƒome\x13Paraguai gaƒoƒome" + + "\x1aParaguai gaƒoƒoɖoanyime\x1fParaguai dzomeŋɔli gaƒoƒome\x0fPeru gaƒoƒ" + + "ome\x16Peru gaƒoƒoɖoanyime\x1bPeru dzomeŋɔli gaƒoƒome%Saint Pierre kple " + + "Mikuelon gaƒoƒome,Saint Pierre kple Mikuelon gaƒoƒoɖoanyime.Saint Pierre" + + " kple Mikuelon ŋkekeme gaƒoƒome\x15Kizilɔrda gaƒoƒome\x1cKizilɔrda gaƒoƒ" + + "oɖoanyime!Kizilɔrda dzomeŋɔli gaƒoƒome\x12Reunion gaƒoƒome\x12Sahalin ga" + + "ƒoƒome\x1aSakhalin gaƒoƒoɖoanyime\x1eSahalin dzomeŋɔli gaƒoƒome\x11Sama" + + "ra gaƒoƒome\x18Samara gaƒoƒoɖoanyime\x1aSamara ŋkekeme gaƒoƒome\x13Sɛtse" + + "ls gaƒoƒome\x13Suriname gaƒoƒome\x11Taipei gaƒoƒome\x18Taipei gaƒoƒoɖoan" + + "yime\x1aTaipei ŋkekeme gaƒoƒome\x16Tadzikistan gaƒoƒome\x17Tɛkmenistan g" + + "aƒoƒome\x1eTɛkmenistan gaƒoƒoɖoanyime#Tɛkmenistan dzomeŋɔli gaƒoƒome\x12" + + "Uruguai gaƒoƒome\x19Uruguai gaƒoƒoɖoanyime\x1eUruguai dzomeŋɔli gaƒoƒome" + + "\x15Uzbekistan gaƒoƒome\x1cUzbekistan gaƒoƒoɖoanyime!Uzbekistan dzomeŋɔl" + + "i gaƒoƒome\x14Venezuela gaƒoƒome\x16Vladivostok gaƒoƒome\x1dVladivostok " + + "gaƒoƒoɖoanyime\x22Vladivostok dzomeŋɔli gaƒoƒome\x13Vogograd gaƒoƒome" + + "\x1aVogograd gaƒoƒoɖoanyime\x1fVogograd dzomeŋɔli gaƒoƒome\x12Yakutsk ga" + + "ƒoƒome\x19Yakutsk gaƒoƒoɖoanyime\x1eYakutsk dzomeŋɔli gaƒoƒome\x19Yekat" + + "eringburg gaƒoƒome Yekateringburg gaƒoƒoɖoanyime$Yekaterinburg dzomeŋɔli" + + " gaƒoƒome\x03Kel\x04Ktũ\x03Ktn\x03Tha\x03Moo\x03Nya\x03Knd\x04Ĩku\x04Ĩkm" + + "\x04Ĩkl\x0aNjumatatũ\x09Njumatana\x0aNjumamothi\x08Muramuko\x05Wairi\x07" + + "Wethatu\x04Wena\x06Wetano\x08Jumamosi\x02NK\x05Narua\x06Rũjũ" + +var bucket26 string = "" + // Size: 18742 bytes + "\x09{1} - {0}\x06Ιαν\x06Φεβ\x06Μαρ\x06Απρ\x06Μαΐ\x08Ιουν\x08Ιουλ\x06Αυγ" + + "\x06Σεπ\x06Οκτ\x06Νοε\x06Δεκ\x02Ι\x02Φ\x02Μ\x02Α\x02Σ\x02Ο\x02Ν\x02Δ\x14" + + "Ιανουαρίου\x16Φεβρουαρίου\x0eΜαρτίου\x10Απριλίου\x0aΜαΐου\x0eΙουνίου" + + "\x0eΙουλίου\x12Αυγούστου\x16Σεπτεμβρίου\x12Οκτωβρίου\x12Νοεμβρίου\x14Δεκ" + + "εμβρίου\x06Μάρ\x06Μάι\x08Ιούν\x08Ιούλ\x06Αύγ\x06Νοέ\x14Ιανουάριος\x16Φε" + + "βρουάριος\x0eΜάρτιος\x10Απρίλιος\x0aΜάιος\x0eΙούνιος\x0eΙούλιος\x12Αύγο" + + "υστος\x16Σεπτέμβριος\x12Οκτώβριος\x12Νοέμβριος\x14Δεκέμβριος\x06Κυρ\x06" + + "Δευ\x06Τρί\x06Τετ\x06Πέμ\x06Παρ\x06Σάβ\x02Κ\x02Τ\x02Π\x04Κυ\x04Δε\x04Τρ" + + "\x04Τε\x04Πέ\x04Πα\x04Σά\x0eΚυριακή\x0eΔευτέρα\x0aΤρίτη\x0eΤετάρτη\x0cΠέ" + + "μπτη\x12Παρασκευή\x0eΣάββατο\x03Τ1\x03Τ2\x03Τ3\x03Τ4\x121ο τρίμηνο\x122" + + "ο τρίμηνο\x123ο τρίμηνο\x124ο τρίμηνο\x06π.μ.\x06μ.μ.\x08πρωί\x0bμεσημ." + + "\x09απόγ.\x0aβράδυ\x04πμ\x04μμ\x10μεσημέρι\x10απόγευμα\x15προ Χριστού6πρ" + + "ιν από την Κοινή Χρονολογία\x17μετά Χριστόν\x1fΚοινή Χρονολογία\x06π.Χ." + + "\x09π.Κ.Χ.\x06μ.Χ.\x04ΚΧ\x0fΠριν R.O.C.\x06R.O.C.\x10περίοδος\x08έτος" + + "\x0aπέρσι\x0aφέτος\x17επόμενο έτος\x11σε {0} έτος\x0fσε {0} έτη\x1cπριν " + + "από {0} έτος\x1aπριν από {0} έτη\x05έτ.\x15{0} έτος πριν\x13{0} έτη πρι" + + "ν\x0eτρίμηνο%προηγούμενο τρίμηνο\x1bτρέχον τρίμηνο\x1dεπόμενο τρίμηνο" + + "\x17σε {0} τρίμηνο\x17σε {0} τρίμηνα\x22πριν από {0} τρίμηνο\x22πριν από" + + " {0} τρίμηνα\x09τρίμ.\x15προηγ. τρίμ.\x16τρέχον τρίμ.\x13επόμ. τρίμ.\x12" + + "σε {0} τρίμ.\x1dπριν από {0} τρίμ.\x16{0} τρίμ. πριν\x0aμήνας#προηγούμε" + + "νος μήνας\x17τρέχων μήνας\x1bεπόμενος μήνας\x11σε {0} μήνα\x13σε {0} μή" + + "νες\x1cπριν από {0} μήνα\x1eπριν από {0} μήνες\x07μήν.\x0cσε {0} μ.\x10" + + "{0} μ. πριν\x10εβδομάδα'προηγούμενη εβδομάδα\x22αυτήν την εβδομάδα\x1fεπ" + + "όμενη εβδομάδα\x19σε {0} εβδομάδα\x1bσε {0} εβδομάδες$πριν από {0} εβδο" + + "μάδα&πριν από {0} εβδομάδες\x1bτην εβδομάδα {0}\x07εβδ.\x10σε {0} εβδ." + + "\x1bπριν από {0} εβδ.\x14{0} εβδ. πριν\x0aημέρα\x0eπροχθές\x08χθες\x0cσή" + + "μερα\x0aαύριο\x10μεθαύριο\x13σε {0} ημέρα\x15σε {0} ημέρες\x1eπριν από " + + "{0} ημέρα πριν από {0} ημέρες\x0eσε {0} ημ.\x12{0} ημ. πριν\x14καθημεριν" + + "ή%προηγούμενη Κυριακή αυτήν την Κυριακή\x1dεπόμενη Κυριακή\x17σε {0} Κυ" + + "ριακή\x19σε {0} Κυριακές\x22πριν από {0} Κυριακή$πριν από {0} Κυριακές" + + "\x13προηγ. Κυρ.\x19αυτήν την Κυρ.\x11επόμ. Κυρ.\x10σε {0} Κυρ.\x1bπριν α" + + "πό {0} Κυρ.\x10προηγ. Κυ\x16αυτήν την Κυ\x0eεπόμ. Κυ\x0dσε {0} Κυ\x11{0" + + "} Κυ πριν%προηγούμενη Δευτέρα\x1eαυτήν τη Δευτέρα\x1dεπόμενη Δευτέρα\x17" + + "σε {0} Δευτέρα\x19σε {0} Δευτέρες\x22πριν από {0} Δευτέρα$πριν από {0} " + + "Δευτέρες\x15προηγ. Δευτ.\x19αυτήν τη Δευτ.\x13επόμ. Δευτ.\x12σε {0} Δευ" + + "τ.\x1dπριν από {0} Δευτ.\x10προηγ. Δε\x14αυτήν τη Δε\x0eεπόμ. Δε\x0dσε " + + "{0} Δε\x11{0} Δε πριν!προηγούμενη Τρίτη\x1cαυτήν την Τρίτη\x19επόμενη Τρ" + + "ίτη\x13σε {0} Τρίτη\x15σε {0} Τρίτες\x1eπριν από {0} Τρίτη πριν από {0}" + + " Τρίτες\x11προηγ. Τρ.\x17αυτήν την Τρ.\x0fεπόμ. Τρ.\x0eσε {0} Τρ.\x19πρι" + + "ν από {0} Τρ.\x10προηγ. Τρ\x16αυτήν την Τρ\x0eεπόμ. Τρ\x0dσε {0} Τρ\x11" + + "{0} Τρ πριν%προηγούμενη Τετάρτη αυτήν την Τετάρτη\x1dεπόμενη Τετάρτη\x17" + + "σε {0} Τετάρτη\x19σε {0} Τετάρτες\x22πριν από {0} Τετάρτη$πριν από {0} " + + "Τετάρτες\x13προηγ. Τετ.\x19αυτήν την Τετ.\x11επόμ. Τετ.\x10σε {0} Τετ." + + "\x1bπριν από {0} Τετ.\x10προηγ. Τε\x16αυτήν την Τε\x0eεπόμ. Τε\x0dσε {0}" + + " Τε\x11{0} Τε πριν#προηγούμενη Πέμπτη\x1eαυτήν την Πέμπτη\x1bεπόμενη Πέμ" + + "πτη\x15σε {0} Πέμπτη\x17σε {0} Πέμπτες πριν από {0} Πέμπτη\x22πριν από " + + "{0} Πέμπτες\x13προηγ. Πέμ.\x19αυτήν την Πέμ.\x11επόμ. Πέμ.\x10σε {0} Πέμ" + + ".\x1bπριν από {0} Πέμ.\x10προηγ. Πέ\x16αυτήν την Πέ\x0eεπόμ. Πέ\x0dσε {0" + + "} Πέ\x11{0} Πέ πριν)προηγούμενη Παρασκευή$αυτήν την Παρασκευή!επόμενη Πα" + + "ρασκευή\x1bσε {0} Παρασκευή\x1dσε {0} Παρασκευές&πριν από {0} Παρασκευή" + + "(πριν από {0} Παρασκευές\x13προηγ. Παρ.\x19αυτήν την Παρ.\x11επόμ. Παρ." + + "\x10σε {0} Παρ.\x1bπριν από {0} Παρ.\x10προηγ. Πα\x16αυτήν την Πα\x0eεπό" + + "μ. Πα\x0dσε {0} Πα\x11{0} Πα πριν%προηγούμενο Σάββατο\x1cαυτό το Σάββατ" + + "ο\x1dεπόμενο Σάββατο\x17σε {0} Σάββατο\x17σε {0} Σάββατα\x1b{0} Σάββατο" + + " πριν\x1b{0} Σάββατα πριν\x13προηγ. Σάβ.\x15αυτό το Σάβ.\x11επόμ. Σάβ." + + "\x10σε {0} Σάβ.\x1bπριν από {0} Σάβ.\x10προηγ. Σά\x12αυτό το Σά\x0eεπόμ." + + " Σά\x0dσε {0} Σά\x11{0} Σά πριν\x0dπ.μ./μ.μ.\x06ώρα\x18αυτήν την ώρα\x0f" + + "σε {0} ώρα\x11σε {0} ώρες\x1aπριν από {0} ώρα\x1cπριν από {0} ώρες\x05ώ" + + "ρ.\x0eσε {0} ώρ.\x19πριν από {0} ώρ.\x02ώ\x0cσε {0} ώ.\x10{0} ώ. πριν" + + "\x0aλεπτό\x18αυτό το λεπτό\x13σε {0} λεπτό\x13σε {0} λεπτά\x1eπριν από {" + + "0} λεπτό\x1eπριν από {0} λεπτά\x07λεπ.\x10σε {0} λεπ.\x1bπριν από {0} λε" + + "π.\x02λ\x0cσε {0} λ.\x10{0} λ. πριν\x18δευτερόλεπτο\x08τώρα!σε {0} δευτ" + + "ερόλεπτο!σε {0} δευτερόλεπτα,πριν από {0} δευτερόλεπτο,πριν από {0} δευ" + + "τερόλεπτα\x09δευτ.\x12σε {0} δευτ.\x1dπριν από {0} δευτ.\x02δ\x0cσε {0}" + + " δ.\x10{0} δ. πριν\x11ζώνη ώρας\x0cΏρα ({0})\x19Θερινή ώρα ({0})\x1fΧειμ" + + "ερινή ώρα ({0})2Συντονισμένη Παγκόσμια Ώρα&Θερινή ώρα Βρετανίας&Θερινή " + + "ώρα Ιρλανδίας\x1bΏρα Αφγανιστάν(Ώρα Κεντρικής Αφρικής*Ώρα Ανατολικής Αφ" + + "ρικής5Χειμερινή ώρα Νότιας Αφρικής$Ώρα Δυτικής Αφρικής7Χειμερινή ώρα Δυ" + + "τικής Αφρικής1Θερινή ώρα Δυτικής Αφρικής\x15Ώρα Αλάσκας(Χειμερινή ώρα Α" + + "λάσκας\x22Θερινή ώρα Αλάσκας\x19Ώρα Αμαζονίου,Χειμερινή ώρα Αμαζονίου&Θ" + + "ερινή ώρα Αμαζονίου7Κεντρική ώρα Βόρειας ΑμερικήςJΚεντρική χειμερινή ώρ" + + "α Βόρειας ΑμερικήςDΚεντρική θερινή ώρα Βόρειας Αμερικής9Ανατολική ώρα Β" + + "όρειας ΑμερικήςLΑνατολική χειμερινή ώρα Βόρειας ΑμερικήςFΑνατολική θερι" + + "νή ώρα Βόρειας Αμερικής3Ορεινή ώρα Βόρειας ΑμερικήςFΟρεινή χειμερινή ώρ" + + "α Βόρειας Αμερικής@Ορεινή θερινή ώρα Βόρειας Αμερικής&Ώρα Βόρειας Αμερι" + + "κής9Χειμερινή ώρα Βόρειας Αμερικής3Θερινή ώρα Βόρειας Αμερικής\x15Ώρα Α" + + "ναντίρ(Χειμερινή ώρα Αναντίρ\x22Θερινή ώρα Αναντίρ\x0fΏρα Απία\x22Χειμε" + + "ρινή ώρα Απία\x1cΘερινή ώρα Απία\x15Αραβική ώρα(Αραβική χειμερινή ώρα" + + "\x22Αραβική θερινή ώρα\x1bΏρα Αργεντινής.Χειμερινή ώρα Αργεντινής(Θερινή" + + " ώρα Αργεντινής*Ώρα Δυτικής Αργεντινής=Χειμερινή ώρα Δυτικής Αργεντινής7" + + "Θερινή ώρα Δυτικής Αργεντινής\x17Ώρα Αρμενίας*Χειμερινή ώρα Αρμενίας$Θε" + + "ρινή ώρα Αρμενίας\x1bΏρα Ατλαντικού.Χειμερινή ώρα Ατλαντικού(Θερινή ώρα" + + " Ατλαντικού.Ώρα Κεντρικής ΑυστραλίαςAΧειμερινή ώρα Κεντρικής Αυστραλίας;" + + "Θερινή ώρα Κεντρικής Αυστραλίας6Ώρα Κεντροδυτικής ΑυστραλίαςIΧειμερινή " + + "ώρα Κεντροδυτικής ΑυστραλίαςCΘερινή ώρα Κεντροδυτικής Αυστραλίας0Ώρα Αν" + + "ατολικής ΑυστραλίαςCΧειμερινή ώρα Ανατολικής Αυστραλίας=Θερινή ώρα Ανατ" + + "ολικής Αυστραλίας*Ώρα Δυτικής Αυστραλίας=Χειμερινή ώρα Δυτικής Αυστραλί" + + "ας7Θερινή ώρα Δυτικής Αυστραλίας\x1fΏρα Αζερμπαϊτζάν2Χειμερινή ώρα Αζερ" + + "μπαϊτζάν,Θερινή ώρα Αζερμπαϊτζάν\x13Ώρα Αζορών&Χειμερινή ώρα Αζορών Θερ" + + "ινή ώρα Αζορών\x1fΏρα Μπανγκλαντές2Χειμερινή ώρα Μπανγκλαντές,Θερινή ώρ" + + "α Μπανγκλαντές\x15Ώρα Μπουτάν\x17Ώρα Βολιβίας\x19Ώρα Μπραζίλια,Χειμεριν" + + "ή ώρα Μπραζίλια&Θερινή ώρα Μπραζίλια.Ώρα Μπρουνέι Νταρουσαλάμ,Ώρα Πράσι" + + "νου Ακρωτηρίου?Χειμερινή ώρα Πράσινου Ακρωτηρίου9Θερινή ώρα Πράσινου Ακ" + + "ρωτηρίου\x15Ώρα Τσαμόρο\x13Ώρα Τσάθαμ&Χειμερινή ώρα Τσάθαμ Θερινή ώρα Τ" + + "σάθαμ\x11Ώρα Χιλής$Χειμερινή ώρα Χιλής\x1eΘερινή ώρα Χιλής\x11Ώρα Κίνας" + + "$Χειμερινή ώρα Κίνας\x1eΘερινή ώρα Κίνας\x1dΏρα Τσοϊμπαλσάν0Χειμερινή ώρ" + + "α Τσοϊμπαλσάν*Θερινή ώρα Τσοϊμπαλσάν.Ώρα Νησιού Χριστουγέννων\x1eΏρα Νη" + + "σιών Κόκος\x19Ώρα Κολομβίας,Χειμερινή ώρα Κολομβίας&Θερινή ώρα Κολομβία" + + "ς\x1cΏρα Νησιών Κουκ/Χειμερινή ώρα Νησιών Κουκ)Θερινή ώρα Νησιών Κουκ" + + "\x13Ώρα Κούβας&Χειμερινή ώρα Κούβας Θερινή ώρα Κούβας\x15Ώρα Ντέιβις$Ώρα" + + " Ντιμόντ Ντερβίλ&Ώρα Ανατολικού Τιμόρ\x1eΏρα Νησιού Πάσχα1Χειμερινή ώρα " + + "Νησιού Πάσχα+Θερινή ώρα Νησιού Πάσχα\x17Ώρα Εκουαδόρ(Ώρα Κεντρικής Ευρώ" + + "πης;Χειμερινή ώρα Κεντρικής Ευρώπης5Θερινή ώρα Κεντρικής Ευρώπης*Ώρα Αν" + + "ατολικής Ευρώπης=Χειμερινή ώρα Ανατολικής Ευρώπης7Θερινή ώρα Ανατολικής" + + " Ευρώπης=Ώρα περαιτέρω Ανατολικής Ευρώπης$Ώρα Δυτικής Ευρώπης7Χειμερινή " + + "ώρα Δυτικής Ευρώπης1Θερινή ώρα Δυτικής Ευρώπης\x22Ώρα Νησιών Φώκλαντ5Χε" + + "ιμερινή ώρα Νησιών Φώκλαντ/Θερινή ώρα Νησιών Φώκλαντ\x11Ώρα Φίτζι$Χειμε" + + "ρινή ώρα Φίτζι\x1eΘερινή ώρα Φίτζι(Ώρα Γαλλικής Γουιάνας@Ώρα Γαλλικού Ν" + + "ότου και Ανταρκτικής\x1dΏρα Γκαλάπαγκος\x17Ώρα Γκάμπιερ\x17Ώρα Γεωργίας" + + "*Χειμερινή ώρα Γεωργίας$Θερινή ώρα Γεωργίας&Ώρα Νησιών Γκίλμπερτ$Μέση ώρ" + + "α Γκρίνουιτς2Ώρα Ανατολικής ΓροιλανδίαςEΧειμερινή ώρα Ανατολικής Γροιλα" + + "νδίας?Θερινή ώρα Ανατολικής Γροιλανδίας,Ώρα Δυτικής Γροιλανδίας?Χειμερι" + + "νή ώρα Δυτικής Γροιλανδίας9Θερινή ώρα Δυτικής Γροιλανδίας\x13Ώρα Γκουάμ" + + "\x13Ώρα Κόλπου\x17Ώρα Γουιάνας1Ώρα Χαβάης-Αλεούτιων νήσωνDΧειμερινή ώρα " + + "Χαβάης-Αλεούτιων νήσων>Θερινή ώρα Χαβάης-Αλεούτιων νήσων\x1cΏρα Χονγκ Κ" + + "ονγκ/Χειμερινή ώρα Χονγκ Κονγκ)Θερινή ώρα Χονγκ Κονγκ\x11Ώρα Χοβντ$Χειμ" + + "ερινή ώρα Χοβντ\x1eΘερινή ώρα Χοβντ\x13Ώρα Ινδίας$Ώρα Ινδικού Ωκεανού" + + "\x19Ώρα Ινδοκίνας.Ώρα Κεντρικής Ινδονησίας0Ώρα Ανατολικής Ινδονησίας*Ώρα" + + " Δυτικής Ινδονησίας\x0fΏρα Ιράν\x22Χειμερινή ώρα Ιράν\x1cΘερινή ώρα Ιράν" + + "\x17Ώρα Ιρκούτσκ*Χειμερινή ώρα Ιρκούτσκ$Θερινή ώρα Ιρκούτσκ\x13Ώρα Ισραή" + + "λ&Χειμερινή ώρα Ισραήλ Θερινή ώρα Ισραήλ\x17Ώρα Ιαπωνίας*Χειμερινή ώρα " + + "Ιαπωνίας$Θερινή ώρα Ιαπωνίας\x19Ώρα ΚαμτσάτκαIΧειμερινή ώρα Πετροπαβλόβ" + + "σκ-ΚαμτσάτσκιCΘερινή ώρα Πετροπαβλόβσκ-Καμτσάτσκι.Ώρα Ανατολικού Καζακσ" + + "τάν(Ώρα Δυτικού Καζακστάν\x13Ώρα Κορέας&Χειμερινή ώρα Κορέας Θερινή ώρα" + + " Κορέας\x15Ώρα Κοσράης\x1fΏρα Κρασνόγιαρσκ2Χειμερινή ώρα Κρασνόγιαρσκ,Θε" + + "ρινή ώρα Κρασνόγιαρσκ\x19Ώρα Κιργιστάν\x1cΏρα Νησιών Λάιν\x1aΏρα Λορντ " + + "Χάου-Χειμερινή ώρα Λορντ Χάου'Θερινή ώρα Λορντ Χάου\x11Ώρα Μακάο$Χειμερ" + + "ινή ώρα Μακάο\x1eΘερινή ώρα Μακάο$Ώρα Νησιού Μακουάρι\x19Ώρα Μάγκανταν," + + "Χειμερινή ώρα Μάγκανταν&Θερινή ώρα Μάγκανταν\x19Ώρα Μαλαισίας\x17Ώρα Μα" + + "λδίβων\x17Ώρα Μαρκέσας Ώρα Νησιών Μάρσαλ\x19Ώρα Μαυρίκιου,Χειμερινή ώρα" + + " Μαυρίκιου&Θερινή ώρα Μαυρίκιου\x11Ώρα Μόσον0Ώρα Βορειοδυτικού ΜεξικούCΧ" + + "ειμερινή ώρα Βορειοδυτικού Μεξικού=Θερινή ώρα Βορειοδυτικού Μεξικού(Ώρα" + + " Ειρηνικού Μεξικού;Χειμερινή ώρα Ειρηνικού Μεξικού5Θερινή ώρα Ειρηνικού " + + "Μεξικού\x1eΏρα Ουλάν Μπατόρ1Χειμερινή ώρα Ουλάν Μπατόρ+Θερινή ώρα Ουλάν" + + " Μπατόρ\x13Ώρα Μόσχας&Χειμερινή ώρα Μόσχας Θερινή ώρα Μόσχας\x15Ώρα Μιαν" + + "μάρ\x15Ώρα Ναούρου\x11Ώρα Νεπάλ$Ώρα Νέας Καληδονίας7Χειμερινή ώρα Νέας " + + "Καληδονίας1Θερινή ώρα Νέας Καληδονίας\x22Ώρα Νέας Ζηλανδίας5Χειμερινή ώ" + + "ρα Νέας Ζηλανδίας/Θερινή ώρα Νέας Ζηλανδίας\x16Ώρα Νέας Γης)Χειμερινή ώ" + + "ρα Νέας Γης#Θερινή ώρα Νέας Γης\x11Ώρα Νιούε\x22Ώρα Νησιών Νόρφολκ/Ώρα " + + "Φερνάρντο ντε ΝορόνιαBΧειμερινή ώρα Φερνάρντο ντε Νορόνια<Θερινή ώρα Φε" + + "ρνάρντο ντε Νορόνια3Ώρα Νησιών Βόρειες Μαριάνες\x1fΏρα Νοβοσιμπίρσκ2Χει" + + "μερινή ώρα Νοβοσιμπίρσκ,Θερινή ώρα Νοβοσιμπίρσκ\x0fΏρα Ομσκ\x22Χειμεριν" + + "ή ώρα Ομσκ\x1cΘερινή ώρα Ομσκ\x17Ώρα Πακιστάν*Χειμερινή ώρα Πακιστάν$Θε" + + "ρινή ώρα Πακιστάν\x13Ώρα Παλάου)Ώρα Παπουά Νέα Γουινέα\x1bΏρα Παραγουάη" + + "ς.Χειμερινή ώρα Παραγουάης(Θερινή ώρα Παραγουάης\x11Ώρα Περού$Χειμερινή" + + " ώρα Περού\x1eΘερινή ώρα Περού\x1bΏρα Φιλιππινών.Χειμερινή ώρα Φιλιππινώ" + + "ν(Θερινή ώρα Φιλιππινών\x1eΏρα Νησιών Φίνιξ0Ώρα Σαιντ Πιερ και ΜικελόνC" + + "Χειμερινή ώρα Σαιντ Πιερ και Μικελόν=Θερινή ώρα Σαιντ Πιερ και Μικελόν" + + "\x15Ώρα Πίτκερν\x13Ώρα Πονάπε\x1bΏρα Πιονγιάνγκ\x15Ώρα Ρεϊνιόν\x13Ώρα Ρο" + + "θέρα\x19Ώρα Σαχαλίνης,Χειμερινή ώρα Σαχαλίνης&Θερινή ώρα Σαχαλίνης\x15Ώ" + + "ρα Σάμαρας(Χειμερινή ώρα Σάμαρας\x22Θερινή ώρα Σαμάρας\x11Ώρα Σαμόα$Χει" + + "μερινή ώρα Σαμόα\x1eΘερινή ώρα Σαμόα\x19Ώρα Σεϋχελλών\x1dΏρα Σιγκαπούρη" + + "ς&Ώρα Νησιών Σολομώντα$Ώρα Νότιας Γεωργίας\x17Ώρα Σουρινάμ\x11Ώρα Σίοβα" + + "\x11Ώρα Αϊτής\x13Ώρα Ταϊπέι&Χειμερινή ώρα Ταϊπέι Θερινή ώρα Ταϊπέι\x1dΏρ" + + "α Τατζικιστάν\x17Ώρα Τοκελάου\x13Ώρα Τόνγκα&Χειμερινή ώρα Τόνγκα Θερινή" + + " ώρα Τόνγκα\x11Ώρα Τσουκ!Ώρα Τουρκμενιστάν4Χειμερινή ώρα Τουρκμενιστάν.Θ" + + "ερινή ώρα Τουρκμενιστάν\x17Ώρα Τουβαλού\x1dΏρα Ουρουγουάης0Χειμερινή ώρ" + + "α Ουρουγουάης*Θερινή ώρα Ουρουγουάης\x1fΏρα Ουζμπεκιστάν2Χειμερινή ώρα " + + "Ουζμπεκιστάν,Θερινή ώρα Ουζμπεκιστάν\x19Ώρα Βανουάτου,Χειμερινή ώρα Βαν" + + "ουάτου&Θερινή ώρα Βανουάτου\x1dΏρα Βενεζουέλας\x1dΏρα Βλαδιβοστόκ0Χειμε" + + "ρινή ώρα Βλαδιβοστόκ*Θερινή ώρα Βλαδιβοστόκ\x1fΏρα Βόλγκογκραντ2Χειμερι" + + "νή ώρα Βόλγκογκραντ,Θερινή ώρα Βόλγκογκραντ\x13Ώρα Βόστοκ Ώρα Νησιού Γο" + + "υέικ+Ώρα Ουόλις και Φουτούνα\x19Ώρα Γιακούτσκ,Χειμερινή ώρα Γιακούτσκ&Θ" + + "ερινή ώρα Γιακούτσκ'Ώρα Αικατερίνμπουργκ:Χειμερινή ώρα Αικατερίνμπουργκ" + + "4Θερινή ώρα Αικατερίνμπουργκ" + +var bucket27 string = "" + // Size: 10257 bytes + "\x03Mo1\x03Mo2\x03Mo3\x03Mo4\x03Mo5\x03Mo6\x03Mo7\x03Mo8\x03Mo9\x04Mo10" + + "\x04Mo11\x04Mo12\x0bFirst Month\x0cSecond Month\x0bThird Month\x0cFourth" + + " Month\x0bFifth Month\x0bSixth Month\x0dSeventh Month\x0cEighth Month" + + "\x0bNinth Month\x0bTenth Month\x0eEleventh Month\x0dTwelfth Month\x03Rat" + + "\x02Ox\x05Tiger\x06Rabbit\x06Dragon\x05Snake\x05Horse\x04Goat\x06Monkey" + + "\x07Rooster\x03Dog\x03Pig\x12EEEE, MMMM d, r(U)\x0cMMMM d, r(U)\x08MMM d" + + ", r\x05M/d/r\x0c{1} 'at' {0}\x07January\x08February\x05March\x05April" + + "\x03May\x04June\x04July\x06August\x09September\x07October\x08November" + + "\x08December\x06Sunday\x06Monday\x07Tuesday\x09Wednesday\x08Thursday\x06" + + "Friday\x08Saturday\x0b1st quarter\x0b2nd quarter\x0b3rd quarter\x0b4th q" + + "uarter\x08midnight\x04noon\x0ein the morning\x10in the afternoon\x0ein t" + + "he evening\x08at night\x07morning\x09afternoon\x07evening\x05night\x0dBe" + + "fore Christ\x11Before Common Era\x0bAnno Domini\x0aCommon Era\x04year" + + "\x0bin {0} year\x0cin {0} years\x0c{0} year ago\x0d{0} years ago\x03yr." + + "\x08last yr.\x08this yr.\x08next yr.\x0ain {0} yr.\x0b{0} yr. ago\x07qua" + + "rter\x0ein {0} quarter\x0fin {0} quarters\x0f{0} quarter ago\x10{0} quar" + + "ters ago\x04qtr.\x09last qtr.\x09this qtr.\x09next qtr.\x0bin {0} qtr." + + "\x0cin {0} qtrs.\x0c{0} qtr. ago\x0d{0} qtrs. ago\x05month\x0cin {0} mon" + + "th\x0din {0} months\x0d{0} month ago\x0e{0} months ago\x03mo.\x08last mo" + + ".\x08this mo.\x08next mo.\x0ain {0} mo.\x0b{0} mo. ago\x0bin {0} week" + + "\x0cin {0} weeks\x0c{0} week ago\x0d{0} weeks ago\x08last wk.\x08this wk" + + ".\x08next wk.\x0ain {0} wk.\x0b{0} wk. ago\x0dweek of month\x0awk. of mo" + + ".\x03day\x0ain {0} day\x0bin {0} days\x0b{0} day ago\x0c{0} days ago\x0b" + + "day of year\x0aday of yr.\x0fday of the week\x0aday of wk.\x14weekday of" + + " the month\x0dwkday. of mo.\x0din {0} Sunday\x0ein {0} Sundays\x0e{0} Su" + + "nday ago\x0f{0} Sundays ago\x09last Sun.\x09this Sun.\x09next Sun.\x0bin" + + " {0} Sun.\x0c{0} Sun. ago\x07last Su\x07this Su\x07next Su\x09in {0} Su" + + "\x0a{0} Su ago\x0din {0} Monday\x0ein {0} Mondays\x0e{0} Monday ago\x0f{" + + "0} Mondays ago\x09last Mon.\x09this Mon.\x09next Mon.\x0bin {0} Mon.\x0c" + + "{0} Mon. ago\x06last M\x06this M\x06next M\x08in {0} M\x09{0} M ago\x0ei" + + "n {0} Tuesday\x0fin {0} Tuesdays\x0f{0} Tuesday ago\x10{0} Tuesdays ago" + + "\x09last Tue.\x09this Tue.\x09next Tue.\x0bin {0} Tue.\x0c{0} Tue. ago" + + "\x07last Tu\x07this Tu\x07next Tu\x09in {0} Tu\x0a{0} Tu ago\x10in {0} W" + + "ednesday\x11in {0} Wednesdays\x11{0} Wednesday ago\x12{0} Wednesdays ago" + + "\x09last Wed.\x09this Wed.\x09next Wed.\x0bin {0} Wed.\x0c{0} Wed. ago" + + "\x06last W\x06this W\x06next W\x08in {0} W\x09{0} W ago\x0fin {0} Thursd" + + "ay\x10in {0} Thursdays\x10{0} Thursday ago\x11{0} Thursdays ago\x09last " + + "Thu.\x09this Thu.\x09next Thu.\x0bin {0} Thu.\x0c{0} Thu. ago\x07last Th" + + "\x07this Th\x07next Th\x09in {0} Th\x0a{0} Th ago\x0din {0} Friday\x0ein" + + " {0} Fridays\x0e{0} Friday ago\x0f{0} Fridays ago\x09last Fri.\x09this F" + + "ri.\x09next Fri.\x0bin {0} Fri.\x0c{0} Fri. ago\x06last F\x06this F\x06n" + + "ext F\x08in {0} F\x09{0} F ago\x0fin {0} Saturday\x10in {0} Saturdays" + + "\x10{0} Saturday ago\x11{0} Saturdays ago\x09last Sat.\x09this Sat.\x09n" + + "ext Sat.\x0bin {0} Sat.\x0c{0} Sat. ago\x07last Sa\x07this Sa\x07next Sa" + + "\x09in {0} Sa\x0a{0} Sa ago\x04hour\x0bin {0} hour\x0cin {0} hours\x0c{0" + + "} hour ago\x0d{0} hours ago\x03hr.\x0ain {0} hr.\x0b{0} hr. ago\x06minut" + + "e\x0din {0} minute\x0ein {0} minutes\x0e{0} minute ago\x0f{0} minutes ag" + + "o\x0bin {0} min.\x0c{0} min. ago\x06second\x0din {0} second\x0ein {0} se" + + "conds\x0e{0} second ago\x0f{0} seconds ago\x04sec.\x0bin {0} sec.\x0c{0}" + + " sec. ago\x09time zone\x04zone\x08{0} Time\x11{0} Daylight Time\x11{0} S" + + "tandard Time\x1aCoordinated Universal Time\x13British Summer Time\x13Iri" + + "sh Standard Time\x09Acre Time\x12Acre Standard Time\x10Acre Summer Time" + + "\x10Afghanistan Time\x13Central Africa Time\x10East Africa Time\x1aSouth" + + " Africa Standard Time\x10West Africa Time\x19West Africa Standard Time" + + "\x17West Africa Summer Time\x0bAlaska Time\x14Alaska Standard Time\x14Al" + + "aska Daylight Time\x0bAlmaty Time\x14Almaty Standard Time\x12Almaty Summ" + + "er Time\x0bAmazon Time\x14Amazon Standard Time\x12Amazon Summer Time\x0c" + + "Central Time\x15Central Standard Time\x15Central Daylight Time\x0cEaster" + + "n Time\x15Eastern Standard Time\x15Eastern Daylight Time\x0dMountain Tim" + + "e\x16Mountain Standard Time\x16Mountain Daylight Time\x0cPacific Time" + + "\x15Pacific Standard Time\x15Pacific Daylight Time\x0bAnadyr Time\x14Ana" + + "dyr Standard Time\x12Anadyr Summer Time\x09Apia Time\x12Apia Standard Ti" + + "me\x12Apia Daylight Time\x0aAqtau Time\x13Aqtau Standard Time\x11Aqtau S" + + "ummer Time\x0bAqtobe Time\x14Aqtobe Standard Time\x12Aqtobe Summer Time" + + "\x0cArabian Time\x15Arabian Standard Time\x15Arabian Daylight Time\x0eAr" + + "gentina Time\x17Argentina Standard Time\x15Argentina Summer Time\x16West" + + "ern Argentina Time\x1fWestern Argentina Standard Time\x1dWestern Argenti" + + "na Summer Time\x0cArmenia Time\x15Armenia Standard Time\x13Armenia Summe" + + "r Time\x0dAtlantic Time\x16Atlantic Standard Time\x16Atlantic Daylight T" + + "ime\x16Central Australia Time Australian Central Standard Time Australia" + + "n Central Daylight Time\x1fAustralian Central Western Time(Australian Ce" + + "ntral Western Standard Time(Australian Central Western Daylight Time\x16" + + "Eastern Australia Time Australian Eastern Standard Time Australian Easte" + + "rn Daylight Time\x16Western Australia Time Australian Western Standard T" + + "ime Australian Western Daylight Time\x0fAzerbaijan Time\x18Azerbaijan St" + + "andard Time\x16Azerbaijan Summer Time\x0bAzores Time\x14Azores Standard " + + "Time\x12Azores Summer Time\x0fBangladesh Time\x18Bangladesh Standard Tim" + + "e\x16Bangladesh Summer Time\x0bBhutan Time\x0cBolivia Time\x0dBrasilia T" + + "ime\x16Brasilia Standard Time\x14Brasilia Summer Time\x16Brunei Darussal" + + "am Time\x0fCape Verde Time\x18Cape Verde Standard Time\x16Cape Verde Sum" + + "mer Time\x0aCasey Time\x16Chamorro Standard Time\x0cChatham Time\x15Chat" + + "ham Standard Time\x15Chatham Daylight Time\x0aChile Time\x13Chile Standa" + + "rd Time\x11Chile Summer Time\x0aChina Time\x13China Standard Time\x13Chi" + + "na Daylight Time\x0fChoibalsan Time\x18Choibalsan Standard Time\x16Choib" + + "alsan Summer Time\x15Christmas Island Time\x12Cocos Islands Time\x0dColo" + + "mbia Time\x16Colombia Standard Time\x14Colombia Summer Time\x11Cook Isla" + + "nds Time\x1aCook Islands Standard Time\x1dCook Islands Half Summer Time" + + "\x09Cuba Time\x12Cuba Standard Time\x12Cuba Daylight Time\x0aDavis Time" + + "\x17Dumont-d’Urville Time\x0fEast Timor Time\x12Easter Island Time\x1bEa" + + "ster Island Standard Time\x19Easter Island Summer Time\x0cEcuador Time" + + "\x15Central European Time\x1eCentral European Standard Time\x1cCentral E" + + "uropean Summer Time\x15Eastern European Time\x1eEastern European Standar" + + "d Time\x1cEastern European Summer Time\x1dFurther-eastern European Time" + + "\x15Western European Time\x1eWestern European Standard Time\x1cWestern E" + + "uropean Summer Time\x15Falkland Islands Time\x1eFalkland Islands Standar" + + "d Time\x1cFalkland Islands Summer Time\x09Fiji Time\x12Fiji Standard Tim" + + "e\x10Fiji Summer Time\x12French Guiana Time French Southern & Antarctic " + + "Time\x0eGalapagos Time\x0cGambier Time\x0cGeorgia Time\x15Georgia Standa" + + "rd Time\x13Georgia Summer Time\x14Gilbert Islands Time\x13Greenwich Mean" + + " Time\x13East Greenland Time\x1cEast Greenland Standard Time\x1aEast Gre" + + "enland Summer Time\x13West Greenland Time\x1cWest Greenland Standard Tim" + + "e\x1aWest Greenland Summer Time\x12Guam Standard Time\x12Gulf Standard T" + + "ime\x0bGuyana Time\x14Hawaii-Aleutian Time\x1dHawaii-Aleutian Standard T" + + "ime\x1dHawaii-Aleutian Daylight Time\x0eHong Kong Time\x17Hong Kong Stan" + + "dard Time\x15Hong Kong Summer Time\x09Hovd Time\x12Hovd Standard Time" + + "\x10Hovd Summer Time\x13India Standard Time\x11Indian Ocean Time\x0eIndo" + + "china Time\x16Central Indonesia Time\x16Eastern Indonesia Time\x16Wester" + + "n Indonesia Time\x09Iran Time\x12Iran Standard Time\x12Iran Daylight Tim" + + "e\x0cIrkutsk Time\x15Irkutsk Standard Time\x13Irkutsk Summer Time\x0bIsr" + + "ael Time\x14Israel Standard Time\x14Israel Daylight Time\x0aJapan Time" + + "\x13Japan Standard Time\x13Japan Daylight Time\x1dPetropavlovsk-Kamchats" + + "ki Time&Petropavlovsk-Kamchatski Standard Time$Petropavlovsk-Kamchatski " + + "Summer Time\x14East Kazakhstan Time\x14West Kazakhstan Time\x0bKorean Ti" + + "me\x14Korean Standard Time\x14Korean Daylight Time\x0bKosrae Time\x10Kra" + + "snoyarsk Time\x19Krasnoyarsk Standard Time\x17Krasnoyarsk Summer Time" + + "\x0eKyrgystan Time\x0aLanka Time\x11Line Islands Time\x0eLord Howe Time" + + "\x17Lord Howe Standard Time\x17Lord Howe Daylight Time\x0aMacau Time\x13" + + "Macau Standard Time\x11Macau Summer Time\x15Macquarie Island Time\x0cMag" + + "adan Time\x15Magadan Standard Time\x13Magadan Summer Time\x0dMalaysia Ti" + + "me\x0dMaldives Time\x0eMarquesas Time\x15Marshall Islands Time\x0eMaurit" + + "ius Time\x17Mauritius Standard Time\x15Mauritius Summer Time\x0bMawson T" + + "ime\x15Northwest Mexico Time\x1eNorthwest Mexico Standard Time\x1eNorthw" + + "est Mexico Daylight Time\x14Mexican Pacific Time\x1dMexican Pacific Stan" + + "dard Time\x1dMexican Pacific Daylight Time\x0fUlan Bator Time\x18Ulan Ba" + + "tor Standard Time\x16Ulan Bator Summer Time\x0bMoscow Time\x14Moscow Sta" + + "ndard Time\x12Moscow Summer Time\x0cMyanmar Time\x0aNauru Time\x0aNepal " + + "Time\x12New Caledonia Time\x1bNew Caledonia Standard Time\x19New Caledon" + + "ia Summer Time\x10New Zealand Time\x19New Zealand Standard Time\x19New Z" + + "ealand Daylight Time\x11Newfoundland Time\x1aNewfoundland Standard Time" + + "\x1aNewfoundland Daylight Time\x09Niue Time\x13Norfolk Island Time\x18Fe" + + "rnando de Noronha Time!Fernando de Noronha Standard Time\x1fFernando de " + + "Noronha Summer Time\x1aNorth Mariana Islands Time\x10Novosibirsk Time" + + "\x19Novosibirsk Standard Time\x17Novosibirsk Summer Time\x09Omsk Time" + + "\x12Omsk Standard Time\x10Omsk Summer Time\x0dPakistan Time\x16Pakistan " + + "Standard Time\x14Pakistan Summer Time\x0aPalau Time\x15Papua New Guinea " + + "Time\x0dParaguay Time\x16Paraguay Standard Time\x14Paraguay Summer Time" + + "\x09Peru Time\x12Peru Standard Time\x10Peru Summer Time\x0fPhilippine Ti" + + "me\x18Philippine Standard Time\x16Philippine Summer Time\x14Phoenix Isla" + + "nds Time\x1aSt. Pierre & Miquelon Time#St. Pierre & Miquelon Standard Ti" + + "me#St. Pierre & Miquelon Daylight Time\x0dPitcairn Time\x0bPonape Time" + + "\x0ePyongyang Time\x0eQyzylorda Time\x17Qyzylorda Standard Time\x15Qyzyl" + + "orda Summer Time\x0cReunion Time\x0cRothera Time\x0dSakhalin Time\x16Sak" + + "halin Standard Time\x14Sakhalin Summer Time\x0bSamara Time\x14Samara Sta" + + "ndard Time\x12Samara Summer Time\x0aSamoa Time\x13Samoa Standard Time" + + "\x13Samoa Daylight Time\x0fSeychelles Time\x17Singapore Standard Time" + + "\x14Solomon Islands Time\x12South Georgia Time\x0dSuriname Time\x0aSyowa" + + " Time\x0bTahiti Time\x0bTaipei Time\x14Taipei Standard Time\x14Taipei Da" + + "ylight Time\x0fTajikistan Time\x0cTokelau Time\x0aTonga Time\x13Tonga St" + + "andard Time\x11Tonga Summer Time\x0aChuuk Time\x11Turkmenistan Time\x1aT" + + "urkmenistan Standard Time\x18Turkmenistan Summer Time\x0bTuvalu Time\x0c" + + "Uruguay Time\x15Uruguay Standard Time\x13Uruguay Summer Time\x0fUzbekist" + + "an Time\x18Uzbekistan Standard Time\x16Uzbekistan Summer Time\x0cVanuatu" + + " Time\x15Vanuatu Standard Time\x13Vanuatu Summer Time\x0eVenezuela Time" + + "\x10Vladivostok Time\x19Vladivostok Standard Time\x17Vladivostok Summer " + + "Time\x0eVolgograd Time\x17Volgograd Standard Time\x15Volgograd Summer Ti" + + "me\x0bVostok Time\x10Wake Island Time\x14Wallis & Futuna Time\x0cYakutsk" + + " Time\x15Yakutsk Standard Time\x13Yakutsk Summer Time\x12Yekaterinburg T" + + "ime\x1bYekaterinburg Standard Time\x19Yekaterinburg Summer Time\x0bin {0" + + "} yrs.\x0c{0} yrs. ago\x0bin {0} mos.\x0c{0} mos. ago\x0bin {0} wks.\x0c" + + "{0} wks. ago\x0fin {0} Sun’s.\x0din {0} Su’s\x0e{0} Su’s ago\x0fin {0} M" + + "on’s.\x10{0} Mon’s. ago\x0cin {0} M’s\x0d{0} M’s ago\x0fin {0} Tue’s." + + "\x10{0} Tue’s. ago\x0din {0} Tu’s\x0e{0} Tu’s ago\x0fin {0} Wed’s.\x10{0" + + "} Wed’s. ago\x0cin {0} W’s\x0d{0} W’s ago\x0fin {0} Thu’s.\x0f{0} Thu’s " + + "ago\x0din {0} Th’s\x0e{0} Th’s ago\x0fin {0} Fri’s.\x10{0} Fri’s. ago" + + "\x0cin {0} F’s\x0d{0} F’s ago\x0fin {0} Sat’s.\x10{0} Sat’s. ago\x0din {" + + "0} Sa’s\x0e{0} Sa’s ago\x0bin {0} hrs.\x0c{0} hrs. ago\x0cin {0} mins." + + "\x0d{0} mins. ago\x0cin {0} secs.\x0d{0} secs. ago\x04Ochs\x05Tiger\x0cK" + + "annéngchen\x06Draach\x08Schlaang\x06Päerd\x05Geess\x02Af\x04Hong\x04Hond" + + "\x08Schwäin\x02Os\x06Tijger\x06Konijn\x05Draak\x05Slang\x05Paard\x04Geit" + + "\x03Aap\x04Haan\x06Varken" + +var bucket28 string = "" + // Size: 8896 bytes + "\x11EEEE, d MMMM r(U)\x0bd MMMM r(U)\x07d MMM r\x07dd/MM/r\x02yr\x09in {" + + "0} yr\x0a{0} yr ago\x03qtr\x0ain {0} qtr\x0b{0} qtr ago\x02mo\x09in {0} " + + "mo\x0a{0} mo ago\x02wk\x09in {0} wk\x0a{0} wk ago\x02hr\x09in {0} hr\x0a" + + "{0} hr ago\x0ain {0} min\x0b{0} min ago\x03sec\x0ain {0} sec\x0b{0} sec " + + "ago\x09∅∅∅\x04Sun.\x04Mon.\x04Tue.\x04Wed.\x04Thu.\x04Fri.\x04Sat.\x03Su" + + ".\x02M.\x03Tu.\x02W.\x03Th.\x02F.\x03Sa.\x06midday\x0fin {0} qtr. ago" + + "\x0d{0} qtrs. ago\x13Eastern Africa Time\x0bArabia Time\x14Arabia Standa" + + "rd Time\x14Arabia Daylight Time\x17Australian Central Time Australian Ce" + + "ntral Standard Time Australian Central Daylight Time\x03ACT\x04ACST\x04A" + + "CDT\x04ACWT\x05ACWST\x05ACWDT\x17Australian Eastern Time Australian East" + + "ern Standard Time Australian Eastern Daylight Time\x03AET\x04AEST\x04AED" + + "T\x17Australian Western Time Australian Western Standard Time Australian" + + " Western Daylight Time\x03AWT\x04AWST\x04AWDT\x10Cook Island Time\x19Coo" + + "k Island Standard Time\x17Cook Island Summer Time\x0aJapan Time\x13Japan" + + " Standard Time\x11Japan Summer Time\x0aKorea Time\x14Korean Standard Tim" + + "e\x12Korean Summer Time\x03LHT\x04LHST\x04LHDT\x0bMoscow Time\x14Moscow " + + "Standard Time\x14Moscow Daylight Time\x03NZT\x04NZST\x04NZDT\x0aSamoa Ti" + + "me\x13Samoa Standard Time\x11Samoa Summer Time\x0bTaipei Time\x14Taipei " + + "Standard Time\x12Taipei Summer Time\x0add-MMM-y G\x08dd-MMM-y\x0ethe wk." + + " of {0}\x0cH.mm.ss zzzz\x09H.mm.ss z\x07H.mm.ss\x04H.mm\x03BST\x04ChST" + + "\x03GYT\x03HKT\x04HKST\x04a.m.\x04p.m.\x03MST\x03MDT\x03MYT\x08d/MM/y G" + + "\x0cd/MM/y GGGGG\x06d/MM/y\x07d/MM/yy\x04CHAT\x05CHAST\x05CHADT\x09G y-M" + + "M-dd\x07last yr\x07this yr\x07next yr\x08last qtr\x08this qtr\x08next qt" + + "r\x0bin {0} qtrs\x0c{0} qtrs ago\x03mth\x08last mth\x08this mth\x08next " + + "mth\x0ain {0} mth\x0b{0} mth ago\x07last wk\x07this wk\x07next wk\x03SGT" + + "\x0dGGGGG y/MM/dd\x07y/MM/dd\x0add MMM,y G\x08dd MMM,y\x19EEEE, d-'a' 'd" + + "e' MMMM y G\x0bG y-MMMM-dd\x0aG y-MMM-dd\x07januaro\x08februaro\x05marto" + + "\x06aprilo\x04majo\x05junio\x05julio\x08aŭgusto\x09septembro\x07oktobro" + + "\x08novembro\x08decembro\x08dimanĉo\x05lundo\x05mardo\x08merkredo\x07ĵaŭ" + + "do\x08vendredo\x06sabato\x0e1-a kvaronjaro\x0e2-a kvaronjaro\x0e3-a kvar" + + "onjaro\x0e4-a kvaronjaro\x03atm\x03ptm\x02aK\x12antaŭ Komuna Erao\x02pK" + + "\x0bKomuna Erao\x06a.K.E.\x04K.E.\x03aKE\x02KE\x17EEEE, d-'a' 'de' MMMM " + + "y\x09y-MMMM-dd\x08y-MMM-dd\x08yy-MM-dd\x1cH-'a' 'horo' 'kaj' m:ss zzzz" + + "\x04erao\x04jaro\x0cpasinta jaro\x09nuna jaro\x0cvenonta jaro\x0dpost {0" + + "} jaro\x0epost {0} jaroj\x0fantaŭ {0} jaro\x10antaŭ {0} jaroj\x0akvaronj" + + "aro\x13post {0} kvaronjaro\x14post {0} kvaronjaroj\x15antaŭ {0} kvaronja" + + "ro\x16antaŭ {0} kvaronjaroj\x06monato\x0epasinta monato\x0bnuna monato" + + "\x0evenonta monato\x0fpost {0} monato\x10post {0} monatoj\x11antaŭ {0} m" + + "onato\x12antaŭ {0} monatoj\x07semajno\x0fpasinta semajno\x0cnuna semajno" + + "\x0fvenonta semajno\x10post {0} semajno\x11post {0} semajnoj\x12antaŭ {0" + + "} semajno\x13antaŭ {0} semajnoj\x04tago\x07hieraŭ\x07hodiaŭ\x07morgaŭ" + + "\x0dpost {0} tago\x0epost {0} tagoj\x0fantaŭ {0} tago\x10antaŭ {0} tagoj" + + "\x12tago de la semajno\x10pasinta dimanĉo\x10ĉi tiu dimanĉo\x10venonta d" + + "imanĉo\x0dpasinta lundo\x0dĉi tiu lundo\x0dvenonta lundo\x0dpasinta mard" + + "o\x0dĉi tiu mardo\x0dvenonta mardo\x10pasinta merkredo\x10ĉi tiu merkred" + + "o\x10venonta merkredo\x0fpasinta ĵaŭdo\x0fĉi tiu ĵaŭdo\x0fvenonta ĵaŭdo" + + "\x10pasinta vendredo\x10ĉi tiu vendredo\x10venonta vendredo\x0epasinta s" + + "abato\x0eĉi tiu sabato\x0evenonta sabato\x07atm/ptm\x04horo\x0dpost {0} " + + "horo\x0epost {0} horoj\x0fantaŭ {0} horo\x10antaŭ {0} horoj\x06minuto" + + "\x0fpost {0} minuto\x10post {0} minutoj\x11antaŭ {0} minuto\x12antaŭ {0}" + + " minutoj\x07sekundo\x10post {0} sekundo\x11post {0} sekundoj\x12antaŭ {0" + + "} sekundo\x13antaŭ {0} sekundoj\x07horzono\x0f+HH:mm;−HH:mm\x06UTC{0}" + + "\x03UTC\x0ctempo de {0}\x13somera tempo de {0}\x12norma tempo de {0}\x13" + + "centra afrika tempo\x14orienta afrika tempo\x11suda afrika tempo\x16okci" + + "denta afrika tempo\x1cokcidenta afrika norma tempo\x1dokcidenta afrika s" + + "omera tempo\x19centra nord-amerika tempo\x1fcentra nord-amerika norma te" + + "mpo centra nord-amerika somera tempo\x1aorienta nord-amerika tempo orien" + + "ta nord-amerika norma tempo!orienta nord-amerika somera tempo\x18monta n" + + "ord-amerika tempo\x1emonta nord-amerika norma tempo\x1fmonta nord-amerik" + + "a somera tempo\x1bpacifika nord-amerika tempo!pacifika nord-amerika norm" + + "a tempo\x22pacifika nord-amerika somera tempo\x0baraba tempo\x11araba no" + + "rma tempo\x12araba somera tempo\x1catlantika nord-amerika tempo\x22atlan" + + "tika nord-amerika norma tempo#atlantika nord-amerika somera tempo\x17cen" + + "tra aŭstralia tempo\x1dcentra aŭstralia norma tempo\x1ecentra aŭstralia " + + "somera tempo\x1fcentrokcidenta aŭstralia tempo%centrokcidenta aŭstralia " + + "norma tempo¢rokcidenta aŭstralia somera tempo\x18orienta aŭstralia t" + + "empo\x1eorienta aŭstralia norma tempo\x1forienta aŭstralia somera tempo" + + "\x1aokcidenta aŭstralia tempo okcidenta aŭstralia norma tempo!okcidenta " + + "aŭstralia somera tempo\x0bĉina tempo\x11ĉina norma tempo\x12ĉina somera " + + "tempo\x14centra eŭropa tempo\x1acentra eŭropa norma tempo\x1bcentra eŭro" + + "pa somera tempo\x15orienta eŭropa tempo\x1borienta eŭropa norma tempo" + + "\x1corienta eŭropa somera tempo\x17okcidenta eŭropa tempo\x1dokcidenta e" + + "ŭropa norma tempo\x1eokcidenta eŭropa somera tempo\x1cuniversala tempo " + + "kunordigita\x0cbarata tempo\x10hindoĉina tempo\x16centra indonezia tempo" + + "\x17orienta indonezia tempo\x19okcidenta indonezia tempo\x0disraela temp" + + "o\x13israela norma tempo\x14israela somera tempo\x0cjapana tempo\x12japa" + + "na norma tempo\x13japana somera tempo\x0bkorea tempo\x11korea norma temp" + + "o\x12korea somera tempo\x0cmoskva tempo\x12moskva norma tempo\x13moskva " + + "somera tempo\x0bEEEE, d-M-y\x1aEEEE, d 'de' MMMM 'de' y G\x14d 'de' MMMM" + + " 'de' y G\x08d/M/yy G\x04ene.\x04feb.\x04mar.\x04abr.\x04may.\x04jun." + + "\x04jul.\x04ago.\x05sept.\x04oct.\x04nov.\x04dic.\x05enero\x07febrero" + + "\x05marzo\x05abril\x04mayo\x06agosto\x0aseptiembre\x07octubre\x09noviemb" + + "re\x09diciembre\x04dom.\x04lun.\x05mié.\x04jue.\x04vie.\x05sáb.\x02DO" + + "\x02LU\x02MA\x02MI\x02JU\x02VI\x02SA\x07domingo\x05lunes\x06martes\x0ami" + + "ércoles\x06jueves\x07viernes\x07sábado\x02T1\x02T2\x02T3\x02T4\x0e1.er " + + "trimestre\x0e2.º trimestre\x0e3.er trimestre\x0e4.º trimestre\x0ddel med" + + "iodía\x0fde la madrugada\x0bde la noche\x09mediodía\x09madrugada\x05noch" + + "e\x0fantes de Cristo\x16antes de la era común\x12después de Cristo\x0aer" + + "a común\x05a. C.\x08a. e. c.\x05d. C.\x05e. c.\x18EEEE, d 'de' MMMM 'de'" + + " y\x12d 'de' MMMM 'de' y\x0eH:mm:ss (zzzz)\x0edd/MM/yy GGGGG\x0fantes de" + + " R.O.C.\x04año\x0eel año pasado\x09este año\x10el próximo año\x12dentro " + + "de {0} año\x13dentro de {0} años\x0dhace {0} año\x0ehace {0} años\x0fden" + + "tro de {0} a\x0ahace {0} a\x13el trimestre pasado\x0eeste trimestre\x15e" + + "l próximo trimestre\x17dentro de {0} trimestre\x18dentro de {0} trimestr" + + "es\x12hace {0} trimestre\x13hace {0} trimestres\x13dentro de {0} trim." + + "\x0ehace {0} trim.\x0del mes pasado\x08este mes\x0fel próximo mes\x11den" + + "tro de {0} mes\x13dentro de {0} meses\x0chace {0} mes\x0ehace {0} meses" + + "\x0fdentro de {0} m\x0ahace {0} m\x06semana\x10la semana pasada\x0besta " + + "semana\x12la próxima semana\x14dentro de {0} semana\x15dentro de {0} sem" + + "anas\x0fhace {0} semana\x10hace {0} semanas\x11la semana del {0}\x04sem." + + "\x12dentro de {0} sem.\x0dhace {0} sem.\x0fla sem. del {0}\x08anteayer" + + "\x04ayer\x03hoy\x07mañana\x0epasado mañana\x12dentro de {0} día\x13dentr" + + "o de {0} días\x0dhace {0} día\x0ehace {0} días\x11día de la semana\x11el" + + " domingo pasado\x0ceste domingo\x13el próximo domingo\x15dentro de {0} d" + + "omingo\x16dentro de {0} domingos\x10hace {0} domingo\x11hace {0} domingo" + + "s\x0eel dom. pasado\x09este dom.\x10el próximo dom.\x12dentro de {0} dom" + + ".\x0dhace {0} dom.\x0cel DO pasado\x07este DO\x0eel próximo DO\x10dentro" + + " de {0} DO\x0bhace {0} DO\x0fel lunes pasado\x0aeste lunes\x11el próximo" + + " lunes\x13dentro de {0} lunes\x0ehace {0} lunes\x0eel lun. pasado\x09est" + + "e lun.\x10el próximo lun.\x12dentro de {0} lun.\x0dhace {0} lun.\x0cel L" + + "U pasado\x07este LU\x0eel próximo LU\x10dentro de {0} LU\x0bhace {0} LU" + + "\x10el martes pasado\x0beste martes\x12el próximo martes\x14dentro de {0" + + "} martes\x0fhace {0} martes\x0eel mar. pasado\x09este mar.\x10el próximo" + + " mar.\x12dentro de {0} mar.\x0dhace {0} mar.\x0cel MA pasado\x07este MA" + + "\x0eel próximo MA\x10dentro de {0} MA\x0bhace {0} MA\x14el miércoles pas" + + "ado\x0feste miércoles\x16el próximo miércoles\x18dentro de {0} miércoles" + + "\x13hace {0} miércoles\x0fel mié. pasado\x0aeste mié.\x11el próximo mié." + + "\x13dentro de {0} mié.\x0ehace {0} mié.\x0cel MI pasado\x07este MI\x0eel" + + " próximo MI\x10dentro de {0} MI\x0bhace {0} MI\x10el jueves pasado\x0bes" + + "te jueves\x12el próximo jueves\x14dentro de {0} jueves\x0fhace {0} jueve" + + "s\x0eel jue. pasado\x09este jue.\x10el próximo jue.\x12dentro de {0} jue" + + ".\x0dhace {0} jue.\x0cel JU pasado\x07este JU\x0eel próximo JU\x10dentro" + + " de {0} JU\x0bhace {0} JU\x11el viernes pasado\x0ceste viernes\x13el pró" + + "ximo viernes\x15dentro de {0} viernes\x10hace {0} viernes\x0eel vie. pas" + + "ado\x09este vie.\x10el próximo vie.\x12dentro de {0} vie.\x0dhace {0} vi" + + "e.\x0cel VI pasado\x07este VI\x0eel próximo VI\x10dentro de {0} VI\x0bha" + + "ce {0} VI\x11el sábado pasado\x0ceste sábado\x13el próximo sábado\x15den" + + "tro de {0} sábado\x16dentro de {0} sábados\x10hace {0} sábado\x11hace {0" + + "} sábados\x0fel sáb. pasado\x0aeste sáb.\x11el próximo sáb.\x13dentro de" + + " {0} sáb.\x0ehace {0} sáb.\x0cel SA pasado\x07este SA\x0eel próximo SA" + + "\x10dentro de {0} SA\x0bhace {0} SA\x12dentro de {0} hora\x13dentro de {" + + "0} horas\x0dhace {0} hora\x0ehace {0} horas\x0fdentro de {0} h\x0ahace {" + + "0} h\x0beste minuto\x14dentro de {0} minuto\x15dentro de {0} minutos\x0f" + + "hace {0} minuto\x10hace {0} minutos\x11dentro de {0} min\x0chace {0} min" + + "\x07segundo\x05ahora\x15dentro de {0} segundo\x16dentro de {0} segundos" + + "\x10hace {0} segundo\x11hace {0} segundos\x0fdentro de {0} s\x04sep.\x10" + + "el año próximo\x0fel mes próximo\x12la semana próxima\x13el domingo próx" + + "imo\x11el lunes próximo\x12el martes próximo\x16el miércoles próximo\x12" + + "el jueves próximo\x13el viernes próximo\x13el sábado próximo\x04set.\x09" + + "setiembre\x06GMT{0}\x03GMT\x12{0} گرینویچ\x0eگرینویچ\x06UTC{0}\x03UTC" + + "\x04luns\x04mar.\x05mér.\x04xov.\x04ven.\x09mércores\x05xoves\x06venres" + + "\x11despois de Cristo\x04Mä.\x03Zi.\x03Mi.\x03Du.\x03Fr.\x03Sa.\x06GMT{0" + + "}\x03GMT\x03Mo.\x03Di.\x03Me.\x06GMT{0}\x03GMT.د لودیځې اروپا معیاري وخت" + + "-د لودیځې اورپا د اوړي وخت\x15گرينويچ وخت\x0dsegunda-feira\x0cterça-feir" + + "a\x0cquarta-feira\x0cquinta-feira\x0bsexta-feira\x10depois de Cristo\x03" + + "AMT\x04AMST\x03BRT\x04BRST\x07segunda\x06terça\x06quarta\x06quinta\x05se" + + "xta\x04AZOT\x05AZOST\x03CET\x04CEST\x03EET\x04EEST\x03WET\x04WEST\x03GMT" + + "\x06UTC{0}\x03UTC\x03GMT\x03GMT\x03GMT\x06GMT{0}" + +var bucket29 string = "" + // Size: 8306 bytes + "\x0ahace {0} s\x0czona horaria\x0bhora de {0}\x18horario de verano de {0" + + "}\x18horario estándar de {0}\x1bTiempo Universal Coordinado\x19hora de v" + + "erano británica\x19hora de verano de Irlanda\x0cHora de Acre\x16Hora est" + + "ándar de Acre\x16Hora de verano de Acre\x13hora de Afganistán\x17hora d" + + "e África central\x18hora de África oriental\x12hora de Sudáfrica\x1ahora" + + " de África occidental$hora estándar de África occidental$hora de verano " + + "de África occidental\x0ehora de Alaska\x18hora estándar de Alaska\x18hor" + + "a de verano de Alaska\x11hora del Amazonas\x1bhora estándar del Amazonas" + + "\x1bhora de verano del Amazonas\x0chora central\x16hora estándar central" + + "\x16hora de verano central\x0dhora oriental\x17hora estándar oriental" + + "\x17hora de verano oriental\x15hora de las Montañas\x1fhora estándar de " + + "las Montañas\x1fhora de verano de las Montañas\x12hora del Pacífico\x1ch" + + "ora estándar del Pacífico\x1chora de verano del Pacífico\x0eHora de Anad" + + "yr\x18Hora estándar de Anadyr\x18Hora de verano de Anadyr\x0chora de Api" + + "a\x16hora estándar de Apia\x19horario de verano de Apia\x0dHora de Aktau" + + "\x17Hora estándar de Aktau\x17Hora de verano de Aktau\x0eHora de Aktobe" + + "\x18Hora estándar de Aktobe\x18Hora de verano de Aktobe\x0ehora de Arabi" + + "a\x18hora estándar de Arabia\x18hora de verano de Arabia\x11hora de Arge" + + "ntina\x1bhora estándar de Argentina\x1bhora de verano de Argentina\x1cho" + + "ra de Argentina occidental&hora estándar de Argentina occidental&hora de" + + " verano de Argentina occidental\x0fhora de Armenia\x19hora estándar de A" + + "rmenia\x19hora de verano de Armenia\x13hora del Atlántico\x1dhora estánd" + + "ar del Atlántico\x1dhora de verano del Atlántico\x19hora de Australia ce" + + "ntral#hora estándar de Australia central#hora de verano de Australia cen" + + "tral!hora de Australia centroccidental+hora estándar de Australia centro" + + "ccidental+hora de verano de Australia centroccidental\x1ahora de Austral" + + "ia oriental$hora estándar de Australia oriental$hora de verano de Austra" + + "lia oriental\x1chora de Australia occidental&hora estándar de Australia " + + "occidental&hora de verano de Australia occidental\x13hora de Azerbaiyán" + + "\x1dhora estándar de Azerbaiyán\x1dhora de verano de Azerbaiyán\x12hora " + + "de las Azores\x1chora estándar de las Azores\x1chora de verano de las Az" + + "ores\x12hora de Bangladés\x1chora estándar de Bangladés\x1chora de veran" + + "o de Bangladés\x0ehora de Bután\x0fhora de Bolivia\x10hora de Brasilia" + + "\x1ahora estándar de Brasilia\x1ahora de verano de Brasilia\x0fhora de B" + + "runéi\x12hora de Cabo Verde\x1chora estándar de Cabo Verde\x1chora de ve" + + "rano de Cabo Verde\x1ahora estándar de Chamorro\x0fhora de Chatham\x19ho" + + "ra estándar de Chatham\x19hora de verano de Chatham\x0dhora de Chile\x17" + + "hora estándar de Chile\x17hora de verano de Chile\x0dhora de China\x17ho" + + "ra estándar de China\x17hora de verano de China\x12hora de Choibalsan" + + "\x1chora estándar de Choibalsan\x1chora de verano de Choibalsan\x1ahora " + + "de la Isla de Navidad\x17hora de las Islas Cocos\x10hora de Colombia\x1a" + + "hora estándar de Colombia\x1ahora de verano de Colombia\x16hora de las I" + + "slas Cook hora estándar de las Islas Cook&hora de verano media de las Is" + + "las Cook\x0chora de Cuba\x16hora estándar de Cuba\x16hora de verano de C" + + "uba\x0dhora de Davis\x1ahora de Dumont-d’Urville\x16hora de Timor Orient" + + "al\x19hora de la isla de Pascua#hora estándar de la isla de Pascua#hora " + + "de verano de la isla de Pascua\x0fhora de Ecuador\x16hora de Europa cent" + + "ral hora estándar de Europa central hora de verano de Europa central\x17" + + "hora de Europa oriental!hora estándar de Europa oriental!hora de verano " + + "de Europa oriental\x1ehora de Europa oriental lejana\x19hora de Europa o" + + "ccidental#hora estándar de Europa occidental#hora de verano de Europa oc" + + "cidental\x1ahora de las islas Malvinas$hora estándar de las islas Malvin" + + "as$hora de verano de las islas Malvinas\x0chora de Fiyi\x16hora estándar" + + " de Fiyi\x16hora de verano de Fiyi\x1bhora de la Guayana Francesa5hora d" + + "e las Tierras Australes y Antárticas Francesas\x12hora de Galápagos\x0fh" + + "ora de Gambier\x0fhora de Georgia\x19hora estándar de Georgia\x19hora de" + + " verano de Georgia\x19hora de las islas Gilbert\x1fhora del meridiano de" + + " Greenwich\x1chora de Groenlandia oriental&hora estándar de Groenlandia " + + "oriental&hora de verano de Groenlandia oriental\x1ehora de Groenlandia o" + + "ccidental(hora estándar de Groenlandia occidental(hora de verano de Groe" + + "nlandia occidental\x16Hora estándar de Guam\x18hora estándar del Golfo" + + "\x0ehora de Guyana\x18hora de Hawái-Aleutiano\x22hora estándar de Hawái-" + + "Aleutiano\x22hora de verano de Hawái-Aleutiano\x11hora de Hong Kong\x1bh" + + "ora estándar de Hong Kong\x1bhora de verano de Hong Kong\x0chora de Hovd" + + "\x16hora estándar de Hovd\x16hora de verano de Hovd\x1ahora estándar de " + + "la India\x18hora del océano Índico\x11hora de Indochina\x19hora de Indon" + + "esia central\x1ahora de Indonesia oriental\x1chora de Indonesia occident" + + "al\x0dhora de Irán\x17hora estándar de Irán\x17hora de verano de Irán" + + "\x0fhora de Irkutsk\x19hora estándar de Irkutsk\x19hora de verano de Irk" + + "utsk\x0ehora de Israel\x18hora estándar de Israel\x18hora de verano de I" + + "srael\x0ehora de Japón\x18hora estándar de Japón\x18hora de verano de Ja" + + "pón\x11Hora de Kamchatka\x1eHora de estándar de Kamchatka\x1bHora de ver" + + "ano de Kamchatka\x1chora de Kazajistán oriental\x1ehora de Kazajistán oc" + + "cidental\x0dhora de Corea\x17hora estándar de Corea\x17hora de verano de" + + " Corea\x0ehora de Kosrae\x13hora de Krasnoyarsk\x1dhora estándar de Kras" + + "noyarsk\x1dhora de verano de Krasnoyarsk\x13hora de Kirguistán\x11Hora d" + + "e Sri Lanka#hora de las Espóradas Ecuatoriales\x11hora de Lord Howe\x1bh" + + "ora estándar de Lord Howe\x1bhora de verano de Lord Howe\x0dHora de Maca" + + "o\x17Hora estándar de Macao\x17Hora de verano de Macao\x19hora de la isl" + + "a Macquarie\x10hora de Magadán\x1ahora estándar de Magadán\x1ahora de ve" + + "rano de Magadán\x0fhora de Malasia\x10hora de Maldivas\x11hora de Marque" + + "sas\x1ahora de las Islas Marshall\x10hora de Mauricio\x1ahora estándar d" + + "e Mauricio\x1ahora de verano de Mauricio\x0ehora de Mawson\x1chora del n" + + "oroeste de México&hora estándar del noroeste de México&hora de verano de" + + "l noroeste de México\x1dhora del Pacífico de México'hora estándar del Pa" + + "cífico de México'hora de verano del Pacífico de México\x13hora de Ulán B" + + "ator\x1dhora estándar de Ulán Bator\x1dhora de verano de Ulán Bator\x0eh" + + "ora de Moscú\x18hora estándar de Moscú\x18hora de verano de Moscú\x10hor" + + "a de Birmania\x0dhora de Nauru\x0dhora de Nepal\x17hora de Nueva Caledon" + + "ia!hora estándar de Nueva Caledonia!hora de verano de Nueva Caledonia" + + "\x15hora de Nueva Zelanda\x1fhora estándar de Nueva Zelanda\x1fhora de v" + + "erano de Nueva Zelanda\x11hora de Terranova\x1bhora estándar de Terranov" + + "a\x1bhora de verano de Terranova\x0chora de Niue\x17hora de la isla Norf" + + "olk\x1bhora de Fernando de Noronha%hora estándar de Fernando de Noronha%" + + "hora de verano de Fernando de Noronha$Hora de las Islas Marianas del Nor" + + "te\x13hora de Novosibirsk\x1dhora estándar de Novosibirsk\x1dhora de ver" + + "ano de Novosibirsk\x0chora de Omsk\x16hora estándar de Omsk\x16hora de v" + + "erano de Omsk\x11hora de Pakistán\x1bhora estándar de Pakistán\x1bhora d" + + "e verano de Pakistán\x0ehora de Palaos\x1bhora de Papúa Nueva Guinea\x10" + + "hora de Paraguay\x1ahora estándar de Paraguay\x1ahora de verano de Parag" + + "uay\x0dhora de Perú\x17hora estándar de Perú\x17hora de verano de Perú" + + "\x11hora de Filipinas\x1bhora estándar de Filipinas\x1bhora de verano de" + + " Filipinas\x18hora de las Islas Fénix\x1dhora de San Pedro y Miquelón'ho" + + "ra estándar de San Pedro y Miquelón'hora de verano de San Pedro y Miquel" + + "ón\x10hora de Pitcairn\x0fhora de Pohnpei\x11hora de Pyongyang\x11Hora " + + "de Qyzylorda\x1bHora estándar de Qyzylorda\x1bHora de verano de Qyzylord" + + "a\x10hora de Reunión\x0fhora de Rothera\x10hora de Sajalín\x1ahora están" + + "dar de Sajalín\x1ahora de verano de Sajalín\x0eHora de Samara\x18Hora es" + + "tándar de Samara\x18Hora de verano de Samara\x0dhora de Samoa\x17hora es" + + "tándar de Samoa\x17hora de verano de Samoa\x12hora de Seychelles\x10hora" + + " de Singapur\x1ahora de las Islas Salomón\x1ahora de Georgia meridional" + + "\x0fhora de Surinam\x0dhora de Syowa\x0fhora de Tahití\x0fhora de Taipéi" + + "\x19hora estándar de Taipéi\x19hora de verano de Taipéi\x13hora de Tayik" + + "istán\x0fhora de Tokelau\x0dhora de Tonga\x17hora estándar de Tonga\x17h" + + "ora de verano de Tonga\x0dhora de Chuuk\x15hora de Turkmenistán\x1fhora " + + "estándar de Turkmenistán\x1fhora de verano de Turkmenistán\x0ehora de Tu" + + "valu\x0fhora de Uruguay\x19hora estándar de Uruguay\x19hora de verano de" + + " Uruguay\x13hora de Uzbekistán\x1dhora estándar de Uzbekistán\x1dhora de" + + " verano de Uzbekistán\x0fhora de Vanuatu\x19hora estándar de Vanuatu\x19" + + "hora de verano de Vanuatu\x11hora de Venezuela\x13hora de Vladivostok" + + "\x1dhora estándar de Vladivostok\x1dhora de verano de Vladivostok\x12hor" + + "a de Volgogrado\x1chora estándar de Volgogrado\x1chora de verano de Volg" + + "ogrado\x0ehora de Vostok\x14hora de la isla Wake\x17hora de Wallis y Fut" + + "una\x0fhora de Yakutsk\x19hora estándar de Yakutsk\x19hora de verano de " + + "Yakutsk\x15hora de Ekaterimburgo\x1fhora estándar de Ekaterimburgo\x1fho" + + "ra de verano de Ekaterimburgo" + +var bucket30 string = "" + // Size: 8256 bytes + "\x0een {0} domingo\x0fen {0} domingos\x0cen {0} lunes\x09a.m./p.m.\x0cZo" + + "na horaria\x15hora de verano de {0}\x15hora estándar de {0}\x16hora de l" + + "as islas Cook hora estándar de las islas Cook&hora de verano media de la" + + "s islas Cook!horario del lejano este de Europa\x19hora de Hawái-Aleutian" + + "as#hora estándar de Hawái-Aleutianas#hora de verano de Hawái-Aleutianas" + + "\x0dhora de India\x10hora de Pionyang\x04seg.\x12dentro de {0} seg.\x0dh" + + "ace {0} seg.\x03ART\x04ARST\x04WART\x05WARST\x0cd MMM 'de' y\x03BOT\x0dd" + + "d-MM-y GGGGG\x0e1.° trimestre\x0e2.° trimestre\x0e3.° trimestre\x0e4.º t" + + "rimestre\x08dd-MM-yy\x03CLT\x04CLST\x0dd/MM/yy GGGGG\x03COT\x04COST\x06a" + + "ntier\x04ayer\x03hoy\x07mañana\x0epasado mañana\x16antes de la Era Común" + + "\x0aEra Común\x04Año\x09Trimestre\x03Mes\x06Semana\x04Día\x11Día de la s" + + "emana\x06Minuto\x07Segundo\x03ECT\x1aEEEE dd 'de' MMMM 'de' y G\x15dd 'd" + + "e' MMMM 'de' y G\x18EEEE dd 'de' MMMM 'de' y\x13dd 'de' MMMM 'de' y\x03e" + + "ne\x03feb\x03mar\x03abr\x03may\x03jun\x03jul\x03ago\x03sep\x03oct\x03nov" + + "\x03dic\x0a1er. trim.\x0a2º. trim.\x0a3er. trim.\x094º trim.\x0e1er. tri" + + "mestre\x0e2º. trimestre\x0e3er. trimestre\x0d4o. trimestre\x0d4º trimest" + + "re\x08en {0} a\x06-{0} a\x06+{0} T\x06-{0} T\x08en {0} m\x0ben {0} sem." + + "\x09+{0} sem.\x09-{0} sem.\x09+{0} día\x0a+{0} días\x09-{0} día\x0a-{0} " + + "días\x10el miér. pasado\x0beste miér.\x12el próximo miér.\x0fel vier. pa" + + "sado\x0aeste vier.\x11el próximo vier.\x08en {0} h\x08en {0} n\x0aen {0}" + + " min\x08en {0} s\x19Hora de verano británica\x18Hora de verano irlandesa" + + "\x17Hora de África Central\x18Hora de África Oriental\x12Hora de Sudáfri" + + "ca\x1aHora de África Occidental$Hora estándar de África Occidental$Hora " + + "de verano de África Occidental\x0cHora de Apia\x16Hora estándar de Apia" + + "\x16Hora de verano de Apia\x0eHora de Arabia\x18Hora estándar de Arabia" + + "\x18Hora de verano de Arabia\x0fHora de Armenia\x19Hora estándar de Arme" + + "nia\x19Hora de verano de Armenia\x19Hora de Australia Central#Hora están" + + "dar de Australia Central#Hora de verano de Australia Central!Hora de Aus" + + "tralia Centroccidental+Hora estándar de Australia Centroccidental+Hora d" + + "e verano de Australia Centroccidental\x1aHora de Australia Oriental$Hora" + + " estándar de Australia Oriental$Hora de verano de Australia Oriental\x1c" + + "Hora de Australia Occidental&Hora estándar de Australia Occidental&Hora " + + "de verano de Australia Occidental\x13Hora de Azerbaiyán\x1dHora estándar" + + " de Azerbaiyán\x1dHora de verano de Azerbaiyán\x12Hora de las Azores\x1c" + + "Hora estándar de las Azores\x1cHora de verano de las Azores\x12Hora de C" + + "abo Verde\x1cHora estándar de Cabo Verde\x1cHora de verano de Cabo Verde" + + "\x1aHora estándar de Chamorro\x0fHora de Chatham\x19Hora estándar de Cha" + + "tham\x19Hora de verano de Chatham\x1aHora de la isla de Navidad\x17Hora " + + "de las islas Cocos\x10Hora de Colombia\x1aHora estándar de Colombia\x1aH" + + "ora de verano de Colombia\x16Hora de las islas Cook Hora estándar de las" + + " islas Cook&Hora de verano media de las islas Cook\x0dHora de Davis\x1aH" + + "ora de Dumont-d’Urville\x19Hora de la isla de Pascua#Hora estándar de la" + + " isla de Pascua#Hora de verano de la isla de Pascua\x0fHora de Ecuador" + + "\x16Hora de Europa Central Hora estándar de Europa Central Hora de veran" + + "o de Europa Central\x17Hora de Europa del Este!Hora estándar de Europa d" + + "el Este!Hora de verano de Europa del Este#Hora del Extremo Oriental de E" + + "uropa\x19Hora de Europa Occidental#Hora estándar de Europa Occidental#Ho" + + "ra de verano de Europa Occidental\x1aHora de las islas Malvinas$Hora est" + + "ándar de las islas Malvinas$Hora de verano de las islas Malvinas\x0cHor" + + "a de Fiyi\x16Hora estándar de Fiyi\x16Hora de verano de Fiyi\x1bHora de " + + "la Guayana Francesa5Hora de las Tierras Australes y Antárticas Francesas" + + "\x12Hora de Galápagos\x0fHora de Gambier\x0fHora de Georgia\x19Hora está" + + "ndar de Georgia\x19Hora de verano de Georgia\x19Hora de las islas Gilber" + + "t\x1fHora del meridiano de Greenwich\x18Hora estándar del Golfo\x0eHora " + + "de Guyana\x18Hora del Océano Índico\x0fHora de Irkutsk\x19Hora estándar " + + "de Irkutsk\x19Hora de verano de Irkutsk\x0eHora de Israel\x18Hora estánd" + + "ar de Israel\x18Hora de verano de Israel\x1cHora de Kazajistán Oriental" + + "\x1eHora de Kazajistán Occidental\x0eHora de Kosrae\x13Hora de Krasnoyar" + + "sk\x1dHora estándar de Krasnoyarsk\x1dHora de verano de Krasnoyarsk\x13H" + + "ora de Kirguistán#Hora de las Espóradas Ecuatoriales\x11Hora de Lord How" + + "e\x1bHora estándar de Lord Howe\x1bHora de verano de Lord Howe\x19Hora d" + + "e la isla Macquarie\x10Hora de Magadán\x1aHora estándar de Magadán\x1aHo" + + "ra de verano de Magadán\x1bHora de las islas Marquesas\x1aHora de las Is" + + "las Marshall\x10Hora de Mauricio\x1aHora estándar de Mauricio\x1aHora de" + + " verano de Mauricio\x0eHora de Mawson\x0eHora de Moscú\x18Hora estándar " + + "de Moscú\x18Hora de verano de Moscú\x0dHora de Nauru\x17Hora de Nueva Ca" + + "ledonia!Hora estándar de Nueva Caledonia!Hora de verano de Nueva Caledon" + + "ia\x15Hora de Nueva Zelanda\x1fHora estándar de Nueva Zelanda\x1fHora de" + + " verano de Nueva Zelanda\x0cHora de Niue\x19Hora de las islas Norfolk" + + "\x1bHora de Fernando de Noronha%Hora estándar de Fernando de Noronha%Hor" + + "a de verano de Fernando de Noronha\x13Hora de Novosibirsk\x1dHora estánd" + + "ar de Novosibirsk\x1dHora de verano de Novosibirsk\x0cHora de Omsk\x16Ho" + + "ra estándar de Omsk\x16Hora de verano de Omsk\x0eHora de Palaos\x1bHora " + + "de Papúa Nueva Guinea\x10Hora de Paraguay\x1aHora estándar de Paraguay" + + "\x1aHora de verano de Paraguay\x0dHora de Perú\x17Hora estándar de Perú" + + "\x17Hora de verano de Perú\x18Hora de las islas Fénix\x10Hora de Pitcair" + + "n\x0fHora de Pohnpei\x10Hora de Reunión\x0fHora de Rothera\x10Hora de Sa" + + "jalín\x1aHora estándar de Sajalín\x1aHora de verano de Sajalín\x0dHora d" + + "e Samoa\x17Hora estándar de Samoa\x17Hora de verano de Samoa\x12Hora de " + + "Seychelles\x1aHora de las islas Salomón\x1aHora de Georgia meridional" + + "\x0fHora de Surinam\x0dHora de Syowa\x0fHora de Tahití\x13Hora de Tayiki" + + "stán\x0fHora de Tokelau\x0dHora de Tonga\x17Hora estándar de Tonga\x17Ho" + + "ra de verano de Tonga\x0dHora de Chuuk\x15Hora de Turkmenistán\x1fHora e" + + "stándar de Turkmenistán\x1fHora de verano de Turkmenistán\x0eHora de Tuv" + + "alu\x0fHora de Uruguay\x19Hora estándar de Uruguay\x19Hora de verano de " + + "Uruguay\x13Hora de Uzbekistán\x1dHora estándar de Uzbekistán\x1dHora de " + + "verano de Uzbekistán\x0fHora de Vanuatu\x19Hora estándar de Vanuatu\x19H" + + "ora de verano de Vanuatu\x11Hora de Venezuela\x13Hora de Vladivostok\x1d" + + "Hora estándar de Vladivostok\x1dHora de verano de Vladivostok\x12Hora de" + + " Volgogrado\x1cHora estándar de Volgogrado\x1cHora de verano de Volgogra" + + "do\x0eHora de Vostok\x14Hora de la isla Wake\x17Hora de Wallis y Futuna" + + "\x0fHora de Yakutsk\x19Hora estándar de Yakutsk\x19Hora de verano de Yak" + + "utsk\x15Hora de Ekaterimburgo\x1fHora estándar de Ekaterimburgo\x1fHora " + + "de verano de Ekaterimburgo\x09MM/dd/y G\x0eMM/dd/yy GGGGG\x0e2do. trimes" + + "tre\x07MM/dd/y\x08MM/dd/yy\x04Ene.\x04Feb.\x04Mar.\x04Abr.\x04May.\x04Ju" + + "n.\x04Jul.\x04Ago.\x04Set.\x04Oct.\x04Nov.\x04Dic.\x05Enero\x07Febrero" + + "\x05Marzo\x05Abril\x04Mayo\x05Junio\x05Julio\x06Agosto\x09Setiembre\x07O" + + "ctubre\x09Noviembre\x09Diciembre\x03PET\x04PEST\x0dantes de ayer\x10hora" + + " de Chamorro\x03UYT\x04UYST\x0cel Do pasado\x07este Do\x0eel próximo Do" + + "\x0cel Lu pasado\x07este Lu\x0eel próximo Lu\x0cel Ma pasado\x07este Ma" + + "\x0eel próximo Ma\x0cel Mi pasado\x07este Mi\x0eel próximo Mi\x0cel Ju p" + + "asado\x07este Ju\x0eel próximo Ju\x0cel Vi pasado\x07este Vi\x0eel próxi" + + "mo Vi\x0cel Sa pasado\x07este Sa\x0eel próximo Sa\x03VET\x0besimene kuu" + + "\x09teine kuu\x0akolmas kuu\x0aneljas kuu\x09viies kuu\x09kuues kuu\x0cs" + + "eitsmes kuu\x0ckaheksas kuu\x0cüheksas kuu\x0bkümnes kuu\x14üheteistkümn" + + "es kuu\x14kaheteistkümnes kuu\x04rott\x05härg\x06tiiger\x08küülik\x07dra" + + "akon\x04madu\x06hobune\x06lammas\x03ahv\x04kukk\x04koer\x04siga\x0ddd.MM" + + ".y GGGGG\x0f{1}, 'kell' {0}\x04jaan\x05veebr\x06märts\x03apr\x03mai\x05j" + + "uuni\x05juuli\x03aug\x04sept\x03okt\x04dets\x07jaanuar\x08veebruar\x06ap" + + "rill\x06august\x09september\x08oktoober\x08november\x09detsember\x0apüha" + + "päev\x0aesmaspäev\x0ateisipäev\x0akolmapäev\x0aneljapäev\x05reede\x08lau" + + "päev\x09keskööl\x0bkeskpäeval\x08hommikul\x0epärastlõunal\x06õhtul\x07öö" + + "sel\x08kesköö\x09keskpäev\x06hommik\x0dpärastlõuna\x05õhtu\x04öö\x0denne" + + " Kristust\x15enne meie ajaarvamist\x10pärast Kristust\x17meie ajaarvamis" + + "e järgi\x05e.m.a\x05m.a.j\x06ajastu\x05aasta\x0deelmine aasta\x0fkäesole" + + "v aasta\x0fjärgmine aasta\x11{0} aasta pärast\x0e{0} aasta eest\x0d{0} a" + + " pärast\x0a{0} a eest\x0feelmine kvartal\x11käesolev kvartal\x11järgmine" + + " kvartal\x14{0} kvartali pärast\x11{0} kvartali eest\x02kv\x0aeelmine kv" + + "\x0ckäesolev kv\x0cjärgmine kv\x0e{0} kv pärast\x0b{0} kv eest\x07+{0} k" + + "v\x07-{0} kv\x03kuu\x0beelmine kuu\x0dkäesolev kuu\x0djärgmine kuu\x0f{0" + + "} kuu pärast\x0c{0} kuu eest\x0d{0} k pärast\x0a{0} k eest\x06nädal\x0ee" + + "elmine nädal\x10käesolev nädal\x10järgmine nädal\x13{0} nädala pärast" + + "\x10{0} nädala eest\x0a{0} nädal\x04näd\x10{0} näd pärast\x0d{0} näd ees" + + "t\x08{0} näd\x05päev\x08üleeile\x04eile\x05täna\x05homme\x09ülehomme\x12" + + "{0} päeva pärast\x0f{0} päeva eest\x0d{0} p pärast\x0a{0} p eest\x0cnäda" + + "lapäev\x12eelmine pühapäev\x14käesolev pühapäev\x14järgmine pühapäev\x17" + + "{0} pühapäeva pärast\x14{0} pühapäeva eest\x12eelmine esmaspäev\x14käeso" + + "lev esmaspäev\x14järgmine esmaspäev\x17{0} esmaspäeva pärast\x14{0} esma" + + "späeva eest\x12eelmine teisipäev\x14käesolev teisipäev\x14järgmine teisi" + + "päev\x17{0} teisipäeva pärast\x07Pebrero\x05Marso\x05Hunyo\x05Hulyo\x09S" + + "etyembre\x07Oktubre\x09Nobyembre\x09Disyembre\x09∅∅∅\x03MYT\x03SGT" + +var bucket31 string = "" + // Size: 8181 bytes + "\x14{0} teisipäeva eest\x12eelmine kolmapäev\x14käesolev kolmapäev\x14jä" + + "rgmine kolmapäev\x17{0} kolmapäeva pärast\x14{0} kolmapäeva eest\x12eelm" + + "ine neljapäev\x14käesolev neljapäev\x14järgmine neljapäev\x17{0} neljapä" + + "eva pärast\x14{0} neljapäeva eest\x0deelmine reede\x0fkäesolev reede\x0f" + + "järgmine reede\x11{0} reede pärast\x0e{0} reede eest\x10eelmine laupäev" + + "\x12käesolev laupäev\x12järgmine laupäev\x15{0} laupäeva pärast\x12{0} l" + + "aupäeva eest\x14enne/pärast lõunat\x04tund\x10praegusel tunnil\x11{0} tu" + + "nni pärast\x0e{0} tunni eest\x0d{0} t pärast\x0a{0} t eest\x11praegusel " + + "minutil\x12{0} minuti pärast\x0f{0} minuti eest\x0f{0} min pärast\x0c{0}" + + " min eest\x06nüüd\x13{0} sekundi pärast\x10{0} sekundi eest\x03sek\x0f{0" + + "} sek pärast\x0c{0} sek eest\x0d{0} s pärast\x0a{0} s eest\x0aajavöönd" + + "\x05({0})\x08{0} (+1)\x08{0} (+0)\x19Koordineeritud maailmaaeg\x0dBriti " + + "suveaeg\x0cIiri suveaeg\x08Acre aeg\x10Acre standardaeg\x0cAcre suveaeg" + + "\x0fAfganistani aeg\x10Kesk-Aafrika aeg\x0fIda-Aafrika aeg\x1aLõuna-Aafr" + + "ika standardaeg\x13Lääne-Aafrika aeg\x1bLääne-Aafrika standardaeg\x17Lää" + + "ne-Aafrika suveaeg\x0aAlaska aeg\x12Alaska standardaeg\x0eAlaska suveaeg" + + "\x0bAlmatõ aeg\x13Almatõ standardaeg\x0fAlmatõ suveaeg\x0dAmazonase aeg" + + "\x15Amazonase standardaeg\x11Amazonase suveaeg\x11Kesk-Ameerika aeg\x19K" + + "esk-Ameerika standardaeg\x15Kesk-Ameerika suveaeg\x0eIdaranniku aeg\x16I" + + "daranniku standardaeg\x12Idaranniku suveaeg\x15Mäestikuvööndi aeg\x1dMäe" + + "stikuvööndi standardaeg\x19Mäestikuvööndi suveaeg\x12Vaikse ookeani aeg" + + "\x1aVaikse ookeani standardaeg\x16Vaikse ookeani suveaeg\x0cAnadõri aeg" + + "\x14Anadõri standardaeg\x10Anadõri suveaeg\x08Apia aeg\x10Apia standarda" + + "eg\x0cApia suveaeg\x09Aktau aeg\x11Aktau standardaeg\x0dAktau suveaeg" + + "\x0bAktöbe aeg\x13Aktöbe standardaeg\x0fAktöbe suveaeg\x0bAraabia aeg" + + "\x13Araabia standardaeg\x0fAraabia suveaeg\x0dArgentina aeg\x15Argentina" + + " standardaeg\x11Argentina suveaeg\x15Lääne-Argentina aeg\x1dLääne-Argent" + + "ina standardaeg\x19Lääne-Argentina suveaeg\x0cArmeenia aeg\x14Armeenia s" + + "tandardaeg\x10Armeenia suveaeg\x0bAtlandi aeg\x13Atlandi standardaeg\x0f" + + "Atlandi suveaeg\x13Kesk-Austraalia aeg\x1bKesk-Austraalia standardaeg" + + "\x17Kesk-Austraalia suveaeg\x1bKesk-Lääne Austraalia aeg#Kesk-Lääne Aust" + + "raalia standardaeg\x1fKesk-Lääne Austraalia suveaeg\x12Ida-Austraalia ae" + + "g\x1aIda-Austraalia standardaeg\x16Ida-Austraalia suveaeg\x16Lääne-Austr" + + "aalia aeg\x1eLääne-Austraalia standardaeg\x1aLääne-Austraalia suveaeg" + + "\x12Aserbaidžaani aeg\x1aAserbaidžaani standardaeg\x16Aserbaidžaani suve" + + "aeg\x0dAssooride aeg\x15Assooride standardaeg\x11Assooride suveaeg\x0fBa" + + "ngladeshi aeg\x17Bangladeshi standardaeg\x13Bangladeshi suveaeg\x0bBhuta" + + "ni aeg\x0cBoliivia aeg\x0dBrasiilia aeg\x15Brasiilia standardaeg\x11Bras" + + "iilia suveaeg\x0aBrunei aeg\x13Roheneemesaarte aeg\x1bRoheneemesaarte st" + + "andardaeg\x17Roheneemesaarte suveaeg\x15Tšamorro standardaeg\x0cChathami" + + " aeg\x14Chathami standardaeg\x10Chathami suveaeg\x0bTšiili aeg\x13Tšiili" + + " standardaeg\x0fTšiili suveaeg\x09Hiina aeg\x11Hiina standardaeg\x0dHiin" + + "a suveaeg\x10Tšojbalsani aeg\x18Tšojbalsani standardaeg\x14Tšojbalsani s" + + "uveaeg\x0fJõulusaare aeg\x10Kookossaarte aeg\x0cColombia aeg\x14Colombia" + + " standardaeg\x10Colombia suveaeg\x10Cooki saarte aeg\x18Cooki saarte sta" + + "ndardaeg\x1cCooki saarte osaline suveaeg\x09Kuuba aeg\x11Kuuba standarda" + + "eg\x0dKuuba suveaeg\x0aDavise aeg\x1aDumont-d’Urville’i aeg\x0eIda-Timor" + + "i aeg\x13Lihavõttesaare aeg\x1bLihavõttesaare standardaeg\x17Lihavõttesa" + + "are suveaeg\x0cEcuadori aeg\x10Kesk-Euroopa aeg\x18Kesk-Euroopa standard" + + "aeg\x14Kesk-Euroopa suveaeg\x0fIda-Euroopa aeg\x17Ida-Euroopa standardae" + + "g\x13Ida-Euroopa suveaeg\x1dKaliningradi ja Valgevene aeg\x13Lääne-Euroo" + + "pa aeg\x1bLääne-Euroopa standardaeg\x17Lääne-Euroopa suveaeg\x14Falkland" + + "i saarte aeg\x1cFalklandi saarte standardaeg\x18Falklandi saarte suveaeg" + + "\x0aFidži aeg\x12Fidži standardaeg\x0eFidži suveaeg\x16Prantsuse Guajaan" + + "a aeg*Prantsuse Antarktiliste ja Lõunaalade aeg\x0eGalapagose aeg\x0eGam" + + "bier’ aeg\x0bGruusia aeg\x13Gruusia standardaeg\x0fGruusia suveaeg\x13Gi" + + "lberti saarte aeg\x0eGreenwichi aeg\x13Ida-Gröönimaa aeg\x1bIda-Gröönima" + + "a standardaeg\x17Ida-Gröönimaa suveaeg\x17Lääne-Gröönimaa aeg\x1fLääne-G" + + "röönimaa standardaeg\x1bLääne-Gröönimaa suveaeg\x11Guami standardaeg\x18" + + "Pärsia lahe standardaeg\x0aGuyana aeg\x12Hawaii-aleuudi aeg\x1aHawaii-Al" + + "euudi standardaeg\x16Hawaii-Aleuudi suveaeg\x0dHongkongi aeg\x15Hongkong" + + "i standardaeg\x11Hongkongi suveaeg\x09Hovdi aeg\x11Hovdi standardaeg\x0d" + + "Hovdi suveaeg\x09India aeg\x11India ookeani aeg\x0dIndohiina aeg\x13Kesk" + + "-Indoneesia aeg\x12Ida-Indoneesia aeg\x16Lääne-Indoneesia aeg\x0aIraani " + + "aeg\x12Iraani standardaeg\x0eIraani suveaeg\x0cIrkutski aeg\x14Irkutski " + + "standardaeg\x10Irkutski suveaeg\x0cIisraeli aeg\x14Iisraeli standardaeg" + + "\x10Iisraeli suveaeg\x0bJaapani aeg\x13Jaapani standardaeg\x0fJaapani su" + + "veaeg\x1dPetropavlovsk-Kamtšatski aeg\x16Kamtšatka standardaeg\x12Kamtša" + + "tka suveaeg\x12Ida-Kasahstani aeg\x16Lääne-Kasahstani aeg\x09Korea aeg" + + "\x11Korea standardaeg\x0dKorea suveaeg\x0aKosrae aeg\x10Krasnojarski aeg" + + "\x18Krasnojarski standardaeg\x14Krasnojarski suveaeg\x11Kõrgõzstani aeg" + + "\x13Line’i saarte aeg\x11Lord Howe’i aeg\x19Lord Howe’i standardaeg\x15L" + + "ord Howe’i suveaeg\x13Macquarie saare aeg\x0cMagadani aeg\x14Magadani st" + + "andardaeg\x10Magadani suveaeg\x12Malaisia \u200b\u200baeg\x0cMaldiivi ae" + + "g\x10Markiisaarte aeg\x14Marshalli Saarte aeg\x0eMauritiuse aeg\x16Mauri" + + "tiuse standardaeg\x12Mauritiuse suveaeg\x0bMawsoni aeg\x11Loode-Mehhiko " + + "aeg\x19Loode-Mehhiko standardaeg\x15Loode-Mehhiko suveaeg\x1aMehhiko Vai" + + "kse ookeani aeg\x22Mehhiko Vaikse ookeani standardaeg\x1eMehhiko Vaikse " + + "ookeani suveaeg\x10Ulaanbaatari aeg\x18Ulaanbaatari standardaeg\x14Ulaan" + + "baatari suveaeg\x0aMoskva aeg\x12Moskva standardaeg\x0eMoskva suveaeg" + + "\x09Birma aeg\x09Nauru aeg\x0aNepali aeg\x12Uus-Kaledoonia aeg\x1aUus-Ka" + + "ledoonia standardaeg\x16Uus-Kaledoonia suveaeg\x0fUus-Meremaa aeg\x17Uus" + + "-Meremaa standardaeg\x13Uus-Meremaa suveaeg\x11Newfoundlandi aeg\x19Newf" + + "oundlandi standardaeg\x15Newfoundlandi suveaeg\x08Niue aeg\x13Norfolki s" + + "aarte aeg\x17Fernando de Noronha aeg\x1fFernando de Noronha standardaeg" + + "\x1bFernando de Noronha suveaeg\x10Novosibirski aeg\x18Novosibirski stan" + + "dardaeg\x14Novosibirski suveaeg\x09Omski aeg\x11Omski standardaeg\x0dOms" + + "ki suveaeg\x0dPakistani aeg\x15Pakistani standardaeg\x11Pakistani suveae" + + "g\x09Belau aeg\x15Paapua Uus-Guinea aeg\x0cParaguay aeg\x14Paraguay stan" + + "dardaeg\x10Paraguay suveaeg\x09Peruu aeg\x11Peruu standardaeg\x0dPeruu s" + + "uveaeg\x0dFilipiini aeg\x15Filipiini standardaeg\x11Filipiini suveaeg" + + "\x14Fööniksisaarte aeg!Saint-Pierre’i ja Miqueloni aeg)Saint-Pierre’i ja" + + " Miqueloni standardaeg%Saint-Pierre’i ja Miqueloni suveaeg\x0dPitcairni " + + "aeg\x0bPohnpei aeg\x0ePyongyangi aeg\x0fKõzõlorda aeg\x17Kõzõlorda stand" + + "ardaeg\x13Kõzõlorda suveaeg\x0dRéunioni aeg\x0bRothera aeg\x0dSahhalini " + + "aeg\x15Sahhalini standardaeg\x11Sahhalini suveaeg\x0aSamara aeg\x12Samar" + + "a standardaeg\x0eSamara suveaeg\x09Samoa aeg\x11Samoa standardaeg\x0dSam" + + "oa suveaeg\x0dSeišelli aeg\x15Singapuri standardaeg\x14Saalomoni Saarte " + + "aeg\x12Lõuna-Georgia aeg\x0cSuriname aeg\x09Syowa aeg\x0aTahiti aeg\x0aT" + + "aipei aeg\x12Taipei standardaeg\x0eTaipei suveaeg\x11Tadžikistani aeg" + + "\x0bTokelau aeg\x09Tonga aeg\x11Tonga standardaeg\x0dTonga suveaeg\x0aCh" + + "uuki aeg\x12Türkmenistani aeg\x1aTürkmenistani standardaeg\x16Türkmenist" + + "ani suveaeg\x0aTuvalu aeg\x0bUruguay aeg\x13Uruguay standardaeg\x0fUrugu" + + "ay suveaeg\x0fUsbekistani aeg\x17Usbekistani standardaeg\x13Usbekistani " + + "suveaeg\x0bVanuatu aeg\x13Vanuatu standardaeg\x0fVanuatu suveaeg\x0dVene" + + "zuela aeg\x10Vladivostoki aeg\x18Vladivostoki standardaeg\x14Vladivostok" + + "i suveaeg\x0eVolgogradi aeg\x16Volgogradi standardaeg\x12Volgogradi suve" + + "aeg\x0bVostoki aeg\x0cWake’i aeg\x15Wallise ja Futuna aeg\x0cJakutski ae" + + "g\x14Jakutski standardaeg\x10Jakutski suveaeg\x12Jakaterinburgi aeg\x1aJ" + + "ekaterinburgi standardaeg\x16Jakaterinburgi suveaeg\x02BG#G. 'aroko' y. " + + "'urteko' MMMM d, EEEE\x1dG. 'aroko' y. 'urteko' MMMM d\x1bG. 'aroko' y('" + + "e')'ko' MMM d\x04urt.\x04ots.\x04mar.\x04api.\x04mai.\x04eka.\x04uzt." + + "\x04abu.\x04ira.\x04urr.\x04aza.\x04abe.\x09urtarrila\x07otsaila\x07mart" + + "xoa\x07apirila\x07maiatza\x06ekaina\x07uztaila\x07abuztua\x06iraila\x05u" + + "rria\x06azaroa\x07abendua\x07Otsaila\x07Martxoa\x07Apirila\x07Maiatza" + + "\x06Ekaina\x07Uztaila\x07Abuztua\x06Iraila\x05Urria\x06Azaroa\x07Abendua" + + "\x03ig.\x03al.\x03ar.\x03az.\x03og.\x03or.\x03lr.\x07igandea\x0aastelehe" + + "na\x09asteartea\x0aasteazkena\x08osteguna\x08ostirala\x09larunbata\x07Ig" + + "andea\x0aAstelehena\x09Asteartea\x0aAsteazkena\x08Osteguna\x08Ostirala" + + "\x09Larunbata\x031Hh\x032Hh\x033Hh\x034Hh\x0e1. hiruhilekoa\x0e2. hiruhi" + + "lekoa\x0e3. hiruhilekoa\x0e4. hiruhilekoa\x08gauerdia\x05goiz.\x07goizek" + + "o\x07eguerd.\x07arrats.\x07iluntz.\x04gau.\x0agoizaldeko\x09eguerdiko" + + "\x0carratsaldeko\x09iluntzeko\x06gaueko\x05goiza\x04gaua\x09goizaldea" + + "\x08eguerdia\x0barratsaldea\x08iluntzea\x04K.a.\x11Gure aro aurretik\x0e" + + "Kristo ondoren\x09Gure aroa\x05G.a.a\x04K.o.\x03G.a\x17y('e')'ko' MMMM d" + + ", EEEE\x11y('e')'ko' MMMM d\x06yy/M/d\x0fHH:mm:ss (zzzz)\x0cHH:mm:ss (z)" + + "\x0fR.O.C. aurretik\x06R.O.C.\x04aroa\x05urtea\x0daurreko urtea\x06aurte" + + "n\x0ehurrengo urtea\x0e{0} urte barru\x0eDuela {0} urte\x0bhiruhilekoa" + + "\x13aurreko hiruhilekoa\x0ehiruhileko hau\x14hurrengo hiruhilekoa\x14{0}" + + " hiruhileko barru\x14Duela {0} hiruhileko\x08hiruhil.\x09hilabetea\x11au" + + "rreko hilabetea\x0chilabete hau\x12hurrengo hilabetea\x12{0} hilabete ba" + + "rru\x12Duela {0} hilabete\x04hil.\x05astea\x0daurreko astea\x08aste hau" + + "\x0ehurrengo astea\x0e{0} aste barru" + +var bucket32 string = "" + // Size: 8938 bytes + "\x0eDuela {0} aste\x09{0} astea\x04ast.\x05eguna\x09herenegun\x04atzo" + + "\x04gaur\x05bihar\x04etzi\x0e{0} egun barru\x0eDuela {0} egun\x03eg.\x08" + + "asteguna\x0faurreko igandea\x0aigande hau\x10hurrengo igandea\x10{0} iga" + + "nde barru\x10Duela {0} igande\x12aurreko astelehena\x0dastelehen hau\x13" + + "hurrengo astelehena\x13{0} astelehen barru\x13Duela {0} astelehen\x11aur" + + "reko asteartea\x0castearte hau\x12hurrengo asteartea\x12{0} astearte bar" + + "ru\x12Duela {0} astearte\x12aurreko asteazkena\x0dasteazken hau\x13hurre" + + "ngo asteazkena\x13{0} asteazken barru\x13Duela {0} asteazken\x10aurreko " + + "osteguna\x0bostegun hau\x11hurrengo osteguna\x11{0} ostegun barru\x11Due" + + "la {0} ostegun\x10aurreko ostirala\x0bostiral hau\x11hurrengo ostirala" + + "\x11{0} ostiral barru\x11Duela {0} ostiral\x11aurreko larunbata\x0clarun" + + "bat hau\x12hurrengo larunbata\x12{0} larunbat barru\x12Duela {0} larunba" + + "t\x06AM//PM\x05ordua\x0cordu honetan\x0e{0} ordu barru\x0eDuela {0} ordu" + + "\x07minutua\x0eminutu honetan\x10{0} minutu barru\x10Duela {0} minutu" + + "\x08segundoa\x05orain\x11{0} segundo barru\x11Duela {0} segundo\x09ordu-" + + "zona\x14{0} aldeko ordutegia\x15{0} (udako ordutegia)\x17{0} ordutegi es" + + "tandarra\x1bOrdu Unibertsal Koordinatua\x15Londresko udako ordua\x1dIrla" + + "ndako ordutegi estandarra\x12Afganistango ordua\x17Afrika erdialdeko ord" + + "ua\x16Afrika ekialdeko ordua\x17Afrika hegoaldeko ordua\x19Afrika mendeb" + + "aldeko ordua#Afrika mendebaldeko ordu estandarra\x1fAfrika mendebaldeko " + + "udako ordua\x12Alaskako ordutegia\x1cAlaskako ordutegi estandarra\x18Ala" + + "skako udako ordutegia\x14Amazoniako ordutegia\x1eAmazoniako ordutegi est" + + "andarra\x1aAmazoniako udako ordutegia#Ipar Amerikako erdialdeko ordutegi" + + "a)Ipar Amerikako erdialdeko ordu estandarra)Ipar Amerikako erdialdeko ud" + + "ako ordutegia\x22Ipar Amerikako ekialdeko ordutegia,Ipar Amerikako ekial" + + "deko ordutegi estandarra(Ipar Amerikako ekialdeko udako ordutegia$Ipar A" + + "merikako mendialdeko ordutegia.Ipar Amerikako mendialdeko ordutegi estan" + + "darra*Ipar Amerikako mendialdeko udako ordutegia#Ipar Amerikako Pazifiko" + + "ko ordutegia-Ipar Amerikako Pazifikoko ordutegi estandarra)Ipar Amerikak" + + "o Pazifikoko udako ordutegia\x10Anadyrreko ordua\x1aAnadyrreko ordu esta" + + "ndarra\x16Anadyrreko udako ordua\x0cApiako ordua\x16Apiako ordu estandar" + + "ra\x12Apiako udako ordua\x0eArabiako ordua\x18Arabiako ordu estandarra" + + "\x14Arabiako udako ordua\x15Argentinako ordutegia\x1fArgentinako orduteg" + + "i estandarra\x1bArgentinako udako ordutegia Argentina mendebaldeko ordut" + + "egia+Argentina mendebaldeko ordutegia estandarra&Argentina mendebaldeko " + + "udako ordutegia\x0fArmeniako ordua\x19Armeniako ordu estandarra\x15Armen" + + "iako udako ordua\x15Atlantikoko ordutegia\x1fAtlantikoko ordutegi estand" + + "arra\x1bAtlantikoko udako ordutegia\x1aAustralia erdialdeko ordua$Austra" + + "lia erdialdeko ordu estandarra Australia erdialdeko udako ordua!Australi" + + "a erdi-mendebaldeko ordua+Australia erdi-mendebaldeko ordu estandarra'Au" + + "stralia erdi-mendebaldeko udako ordua\x19Australia ekialdeko ordua#Austr" + + "alia ekialdeko ordu estandarra\x1fAustralia ekialdeko udako ordua\x1cAus" + + "tralia mendebaldeko ordua&Australia mendebaldeko ordu estandarra\x22Aust" + + "ralia mendebaldeko udako ordua\x12Azerbaijango ordua\x1cAzerbaijango ord" + + "u estandarra\x18Azerbaijango udako ordua\x10Azoreetako ordua\x1aAzoreeta" + + "ko ordu estandarra\x16Azoreetako udako ordua\x13Bangladesheko ordua\x1dB" + + "angladesheko ordu estandarra\x19Bangladesheko udako ordua\x0eBhutango or" + + "dua\x13Boliviako ordutegia\x10Brasiliako ordua\x1aBrasiliako ordu estand" + + "arra\x16Brasiliako udako ordua\x19Brunei Darussalamgo ordua\x12Cabo Verd" + + "eko ordua\x1cCabo Verdeko ordu estandarra\x18Cabo Verdeko udako ordua" + + "\x1aChamorroko ordu estandarra\x0fChathamgo ordua\x19Chathamgo ordu esta" + + "ndarra\x15Chathamgo udako ordua\x0dTxileko ordua\x17Txileko ordu estanda" + + "rra\x13Txileko udako ordua\x0dTxinako ordua\x17Txinako ordu estandarra" + + "\x13Txinako udako ordua\x12Choibalsango ordua\x1cChoibalsango ordu estan" + + "darra\x18Choibalsango udako ordua\x18Christmas uharteko ordua\x17Cocos u" + + "harteetako ordua\x10Kolonbiako ordua\x1aKolonbiako ordu estandarra\x16Ko" + + "lonbiako udako ordua\x16Cook uharteetako ordua Cook uharteetako ordu est" + + "andarra%Cook uharteetako uda erdialdeko ordua\x10Kubako ordutegia\x1aKub" + + "ako ordutegi estandarra\x16Kubako udako ordutegia\x0eDaviseko ordua\x1aD" + + "umont-d’Urvilleko ordua\x19Ekialdeko Timorreko ordua\x14Pazko uharteko o" + + "rdua\x1ePazko uharteko ordu estandarra\x1aPazko uharteko udako ordua\x11" + + "Ekuadorreko ordua\x17Europa erdialdeko ordua!Europa erdialdeko ordu esta" + + "ndarra\x1dEuropa erdialdeko udako ordua\x16Europa ekialdeko ordua Europa" + + " ekialdeko ordu estandarra\x1cEuropa ekialdeko udako ordua\x1fEkialde ur" + + "runeko Europako ordua\x19Europa mendebaldeko ordua#Europa mendebaldeko o" + + "rdu estandarra\x1fEuropa mendebaldeko udako ordua\x1aFalkland uharteetak" + + "o ordua$Falkland uharteetako ordu estandarra Falkland uharteetako udako " + + "ordua\x0cFijiko ordua\x16Fijiko ordu estandarra\x12Fijiko udako ordua" + + "\x18Guyana Frantseseko ordua9Frantziaren lurralde austral eta antartikoe" + + "tako ordutegia\x13Galapagoetako ordua\x11Gambierreko ordua\x0fGeorgiako " + + "ordua\x19Georgiako ordu estandarra\x15Georgiako udako ordua\x19Gilbert u" + + "harteetako ordua\x1bGreenwich meridianoko ordua\x1fGroenlandia ekialdeko" + + " ordutegia)Groenlandia ekialdeko ordutegi estandarra%Groenlandia ekialde" + + "ko udako ordutegia\x22Groenlandia mendebaldeko ordutegia,Groenlandia men" + + "debaldeko ordutegi estandarra(Groenlandia mendebaldeko udako ordutegia" + + "\x17Golkoko ordu estandarra\x0eGuyanako ordua%Hawaii-Aleutiar uharteetak" + + "o ordutegia/Hawaii-Aleutiar uharteetako ordutegi estandarra+Hawaii-Aleut" + + "iar uharteetako udako ordutegia\x10Hong Kongo ordua\x1aHong Kongo ordu e" + + "standarra\x16Hong Kongo udako ordua\x0dHovdeko ordua\x17Hovdeko ordu est" + + "andarra\x13Hovdeko udako ordua\x0dIndiako ordua\x15Ozeano Indikoko ordua" + + "\x11Indotxinako ordua\x1aIndonesia erdialdeko ordua\x19Indonesia ekialde" + + "ko ordua\x1cIndonesia mendebaldeko ordua\x0cIrango ordua\x16Irango ordu " + + "estandarra\x12Irango udako ordua\x14Irkutskeko ordutegia\x1aIrkutskeko o" + + "rdu estandarra\x16Irkutskeko udako ordua\x0eIsraelgo ordua\x18Israelgo o" + + "rdu estandarra\x14Israelgo udako ordua\x0fJaponiako ordua\x19Japoniako o" + + "rdu estandarra\x15Japoniako udako ordua Petropavlovsk-Kamchatskiko ordua" + + "*Petropavlovsk-Kamchatskiko ordu estandarra&Petropavlovsk-Kamchatskiko u" + + "dako ordua\x1aKazakhstan ekialdeko ordua\x1dKazakhstan mendebaldeko ordu" + + "a\x0dKoreako ordua\x17Koreako ordu estandarra\x13Koreako udako ordua\x0e" + + "Kosraeko ordua\x18Krasnoiarskeko ordutegia\x1eKrasnoyarskeko ordu estand" + + "arra\x1aKrasnoyarskeko udako ordua\x13Kirgizistango ordua\x16Line uharte" + + "etako ordua\x11Lord Howeko ordua\x1bLord Howeko ordu estandarra\x17Lord " + + "Howeko udako ordua\x18Macquarie uharteko ordua\x13Magadango ordutegia" + + "\x19Magadango ordu estandarra\x15Magadango udako ordua\x10Malaysiako ord" + + "ua\x11Maldivetako ordua\x11Markesetako ordua\x1aMarshall uharteetako ord" + + "ua\x10Maurizioko ordua\x1aMaurizioko ordu estandarra\x16Maurizioko udako" + + " ordua\x0fMawsoneko ordua!Mexikoko ipar-ekialdeko ordutegia+Mexikoko ipa" + + "r-ekialdeko ordutegi estandarra'Mexikoko ipar-ekialdeko udako ordutegia" + + "\x1dMexikoko Pazifikoko ordutegia'Mexikoko Pazifikoko ordutegi estandarr" + + "a#Mexikoko Pazifikoko udako ordutegia\x14Ulan Batorreko ordua\x1eUlan Ba" + + "torreko ordu estandarra\x1aUlan Batorreko udako ordua\x0dMoskuko ordua" + + "\x17Moskuko ordu estandarra\x13Moskuko udako ordua\x11Myanmarreko ordua" + + "\x0dNauruko ordua\x0dNepalgo ordua\x18Kaledonia Berriako ordua!Kaledonia" + + " Berriko ordu estandarra\x1dKaledonia Berriko udako ordua\x16Zeelanda Be" + + "rriko ordua Zeelanda Berriko ordu estandarra\x1cZeelanda Berriko udako o" + + "rdua\x12Ternuako ordutegia\x1cTernuako ordutegi estandarra\x18Ternuako u" + + "dako ordutegia\x0cNiueko ordua\x19Norfolk uharteetako ordua\x1bFernando " + + "de Noronhako ordua%Fernando de Noronhako ordu estandarra!Fernando de Nor" + + "onhako udako ordua\x18Novosibirskeko ordutegia\x1eNovosibirskeko ordu es" + + "tandarra\x1aNovosibirskeko udako ordua\x11Omskeko ordutegia\x17Omskeko o" + + "rdu estandarra\x13Omskeko udako ordua\x10Pakistango ordua\x1aPakistango " + + "ordu estandarra\x16Pakistango udako ordua\x0dPalauko ordua\x19Papua Gine" + + "a Berriko ordua\x10Paraguayko ordua\x1aParaguayko ordu estandarra\x16Par" + + "aguayko udako ordua\x0cPeruko ordua\x16Peruko ordu estandarra\x12Peruko " + + "udako ordua\x12Filipinetako ordua\x1cFilipinetako ordu estandarra\x18Fil" + + "ipinetako udako ordua\x19Phoenix uharteetako ordua%Saint-Pierre eta Mike" + + "luneko ordutegia/Saint-Pierre eta Mikeluneko ordutegi estandarra+Saint-P" + + "ierre eta Mikeluneko udako ordutegia\x11Pitcairneko ordua\x0ePonapeko or" + + "dua\x12Piongiangeko ordua\x19Reunion uharteetako ordua\x0fRotherako ordu" + + "a\x14Sakhalingo ordutegia\x1aSakhalingo ordu estandarra\x16Sakhalingo ud" + + "ako ordua\x0eSamarako ordua\x18Samarako ordu estandarra\x14Samarako udak" + + "o ordua\x0dSamoako ordua\x17Samoako ordu estandarra\x13Samoako udako ord" + + "ua\x1bSeychelle uharteetako ordua\x1cSingapurreko ordu estandarra\x19Sal" + + "omon uharteetako ordua\x14Hego Georgiako ordua\x0fSurinamgo ordua\x0dSyo" + + "wako ordua\x0eTahitiko ordua\x0eTaipeiko ordua\x18Taipeiko ordu estandar" + + "ra\x14Taipeiko udako ordua\x13Tadjikistango ordua\x0fTokelauko ordua\x0d" + + "Tongako ordua\x17Tongako ordu estandarra\x13Tongako udako ordua\x0eChuuk" + + "eko ordua\x14Turkmenistango ordua\x1eTurkmenistango ordu estandarra\x1aT" + + "urkmenistango udako ordua\x0eTuvaluko ordua\x0fUruguayko ordua\x19Urugua" + + "yko ordu estandarra\x15Uruguayko udako ordua\x12Uzbekistango ordua\x1cUz" + + "bekistango ordu estandarra\x18Uzbekistango udako ordua\x0fVanuatuko ordu" + + "a\x19Vanuatuko ordu estandarra\x15Vanuatuko udako ordua\x11Venezuelako o" + + "rdua\x18Vladivostokeko ordutegia\x1eVladivostokeko ordu estandarra\x1aVl" + + "adivostokeko udako ordua\x12Volgogradeko ordua\x1cVolgogradeko ordu esta" + + "ndarra\x18Volgogradeko udako ordua\x0fVostokeko ordua\x13Wake uharteko o" + + "rdua\x1dWallis eta Futunako ordutegia\x14Jakutskeko ordutegia\x1aYakutsk" + + "eko ordu estandarra\x16Yakutskeko udako ordua\x1aJekaterinburgeko ordute" + + "gia Jekaterinburgeko ordu estandarra\x1cYekaterinburgeko udako ordua" + +var bucket33 string = "" + // Size: 14179 bytes + "\x03ngo\x03ngb\x03ngl\x03ngn\x03ngt\x03ngs\x03ngz\x03ngm\x03nge\x03nga" + + "\x04ngad\x04ngab\x0angɔn osú\x0bngɔn bɛ̌\x0bngɔn lála\x0bngɔn nyina\x0bn" + + "gɔn tána\x0dngɔn saməna\x0fngɔn zamgbála\x0angɔn mwom\x0cngɔn ebulú\x0bn" + + "gɔn awóm\x14ngɔn awóm ai dziá\x14ngɔn awóm ai bɛ̌\x06sɔ́n\x06mɔ́n\x03smb" + + "\x03sml\x03smn\x04fúl\x04sér\x09sɔ́ndɔ\x08mɔ́ndi\x1bsɔ́ndɔ məlú mə́bɛ̌" + + "\x1bsɔ́ndɔ məlú mə́lɛ́\x19sɔ́ndɔ məlú mə́nyi\x08fúladé\x08séradé\x03nno" + + "\x03nnb\x03nnl\x04nnny\x13nsámbá ngɔn asú\x14nsámbá ngɔn bɛ̌\x14nsámbá n" + + "gɔn lála\x14nsámbá ngɔn nyina\x0akíkíríg\x0cngəgógəle\x14osúsúa Yésus ki" + + "ri\x14ámvus Yésus Kirís\x03oyk\x03ayk\x05Abǒg\x06M̀bú\x05Ngɔn\x09Sɔ́ndɔ" + + "\x05Amǒs\x07Angogé\x04Aná\x07Okírí\x13Amǒs yá sɔ́ndɔ\x15Kírí / Ngəgógəle" + + "\x05Awola\x08Enútɛn\x09Akábəga\x0cNkɔŋ Awola\x06موش\x06گاو\x06ببر\x0aخرگ" + + "وش\x0aاژدها\x06مار\x06اسب\x04بز\x0aمیمون\x08خروس\x04سگ\x06خوک\x07y/M/d " + + "G\x12{1}، ساعت {0}\x0c{1}،\u200f {0}\x0eژانویهٔ\x0cفوریهٔ\x08مارس\x0aآور" + + "یل\x06مهٔ\x08ژوئن\x0cژوئیهٔ\x06اوت\x0eسپتامبر\x0aاکتبر\x0cنوامبر\x0cدسا" + + "مبر\x02ژ\x02ف\x02م\x02آ\x02ا\x02س\x02ن\x02د\x0cژانویه\x0aفوریه\x04مه" + + "\x0aژوئیه\x0cیکشنبه\x0cدوشنبه\x0fسه\u200cشنبه\x10چهارشنبه\x0eپنجشنبه\x08" + + "جمعه\x08شنبه\x04۱ش\x04۲ش\x04۳ش\x04۴ش\x04۵ش\x02ج\x02ش\x02ج\x02ش\x09س" + + "\u200cم۱\x09س\u200cم۲\x09س\u200cم۳\x09س\u200cم۴\x02۱\x02۲\x02۳\x02۴\x18س" + + "ه\u200cماههٔ اول\x18سه\u200cماههٔ دوم\x18سه\u200cماههٔ سوم\x1cسه\u200cم" + + "اههٔ چهارم\x0fنیمه\u200cشب\x06ق.ظ.\x06ظهر\x06ب.ظ.\x06صبح\x06عصر\x04شب" + + "\x02ق\x02ظ\x02ع\x13قبل\u200cازظهر\x10بعدازظهر\x16قبل از میلاد!قبل از دور" + + "ان مشترک\x0cمیلادی\x15دوران مشترک\x06ق.م.\x08ق.د.م\x03م.\x06د.م.\x05y/M" + + "/d\x0bH:mm:ss (z)\x08تشری\x0aحشوان\x08کسلو\x06طوت\x08شباط\x08آذار\x0aواذ" + + "ار\x17واذار الثانی\x0aنیسان\x08ایار\x0aسیوان\x08تموز\x04آب\x0aایلول\x11" + + "هجری قمری\x09ه\u200d.ق.\x0eفروردین\x10اردیبهشت\x0aخرداد\x06تیر\x0aمرداد" + + "\x0cشهریور\x06مهر\x08آبان\x06آذر\x04دی\x08بهمن\x0aاسفند\x02ا\x02خ\x02ت" + + "\x02ش\x02آ\x02د\x02ب\x11هجری شمسی\x09ه\u200d.ش.\x08دوره\x06سال\x11سال گذ" + + "شته\x0aامسال\x11سال آینده\x11{0} سال بعد\x11{0} سال پیش\x0fسه\u200cماهه" + + "\x1cسه\u200cماههٔ گذشته\x1cسه\u200cماههٔ کنونی\x1cسه\u200cماههٔ آینده" + + "\x1c{0} سه\u200cماههٔ بعد\x1c{0} سه\u200cماههٔ پیش\x06ماه\x11ماه گذشته" + + "\x0dاین ماه\x11ماه آینده\x11{0} ماه بعد\x11{0} ماه پیش\x0dماه پیش\x08هفت" + + "ه\x15هفتهٔ گذشته\x0fاین هفته\x15هفتهٔ آینده\x13{0} هفته بعد\x13{0} هفته" + + " پیش\x0eهفتهٔ {0}\x06روز\x0cپریروز\x0aدیروز\x0aامروز\x08فردا\x0fپس\u200c" + + "فردا\x11{0} روز بعد\x11{0} روز پیش\x0fروز هفته\x19یکشنبهٔ گذشته\x13این " + + "یکشنبه\x19یکشنبهٔ آینده\x19{0} یکشنبهٔ بعد\x19{0} یکشنبهٔ پیش\x19دوشنبه" + + "ٔ گذشته\x13این دوشنبه\x19دوشنبهٔ آینده\x19{0} دوشنبهٔ بعد\x19{0} دوشنبه" + + "ٔ پیش\x1cسه\u200cشنبهٔ گذشته\x16این سه\u200cشنبه\x1cسه\u200cشنبهٔ آینده" + + "\x1c{0} سه\u200cشنبهٔ بعد\x1c{0} سه\u200cشنبهٔ پیش\x1dچهارشنبهٔ گذشته" + + "\x17این چهارشنبه\x1dچهارشنبهٔ آینده\x1d{0} چهارشنبهٔ بعد\x1d{0} چهارشنبه" + + "ٔ پیش\x1bپنجشنبهٔ گذشته\x15این پنجشنبه\x1bپنجشنبهٔ آینده\x1b{0} پنجشنبه" + + "ٔ بعد\x1b{0} پنجشنبهٔ پیش\x15جمعهٔ گذشته\x0fاین جمعه\x15جمعهٔ آینده\x15" + + "{0} جمعهٔ بعد\x15{0} جمعهٔ پیش\x15شنبهٔ گذشته\x0fاین شنبه\x15شنبهٔ آینده" + + "\x15{0} شنبهٔ بعد\x15{0} شنبهٔ پیش\x17قبل/بعدازظهر\x08ساعت\x11همین ساعت" + + "\x13{0} ساعت بعد\x13{0} ساعت پیش\x0aدقیقه\x13همین دقیقه\x15{0} دقیقه بعد" + + "\x15{0} دقیقه پیش\x0aثانیه\x0aاکنون\x15{0} ثانیه بعد\x15{0} ثانیه پیش" + + "\x17منطقهٔ زمانی\x0aوقت {0}\x1bوقت تابستانی {0}\x13وقت عادی {0} زمان هما" + + "هنگ جهانی(وقت تابستانی بریتانیا\x1cوقت عادی ایرلند\x19وقت افغانستان\x1c" + + "وقت مرکز افریقا\x1aوقت شرق افریقا%وقت عادی جنوب افریقا\x1aوقت غرب افریق" + + "ا#وقت عادی غرب افریقا+وقت تابستانی غرب افریقا\x13وقت آلاسکا\x1cوقت عادی" + + " آلاسکا$وقت تابستانی آلاسکا\x15وقت آلماآتا\x1eوقت عادی آلماآتا&وقت تابست" + + "انی آلماآتا\x13وقت آمازون\x1cوقت عادی آمازون$وقت تابستانی آمازون\x1cوقت" + + " مرکز امریکا%وقت عادی مرکز امریکا-وقت تابستانی مرکز امریکا\x1aوقت شرق ام" + + "ریکا#وقت عادی شرق امریکا+وقت تابستانی شرق امریکا$وقت کوهستانی امریکا-وق" + + "ت عادی کوهستانی امریکا5وقت تابستانی کوهستانی امریکا\x1aوقت غرب امریکا#و" + + "قت عادی غرب امریکا+وقت تابستانی غرب امریکا\x13وقت آنادیر\x1cوقت عادی آن" + + "ادیر$وقت تابستانی آنادیر\x0fوقت آپیا\x18وقت عادی آپیا وقت تابستانی آپیا" + + "\x15وقت عربستان\x1eوقت عادی عربستان&وقت تابستانی عربستان\x17وقت آرژانتین" + + " وقت عادی آرژانتین(وقت تابستانی آرژانتین\x1eوقت غرب آرژانتین'وقت عادی غر" + + "ب آرژانتین/وقت تابستانی غرب آرژانتین\x17وقت ارمنستان وقت عادی ارمنستان(" + + "وقت تابستانی ارمنستان\x17وقت آتلانتیک وقت عادی آتلانتیک(وقت تابستانی آت" + + "لانتیک وقت مرکز استرالیا)وقت عادی مرکز استرالیا1وقت تابستانی مرکز استرا" + + "لیا'وقت مرکز-غرب استرالیا0وقت عادی مرکز-غرب استرالیا8وقت تابستانی مرکز-" + + "غرب استرالیا\x1eوقت شرق استرالیا'وقت عادی شرق استرالیا/وقت تابستانی شرق" + + " استرالیا\x1eوقت غرب استرالیا'وقت عادی غرب استرالیا/وقت تابستانی غرب است" + + "رالیا&وقت جمهوری آذربایجان/وقت عادی جمهوری آذربایجان7وقت تابستانی جمهور" + + "ی آذربایجان\x0fوقت آزور\x18وقت عادی آزور وقت تابستانی آزور\x15وقت بنگلا" + + "دش\x1eوقت عادی بنگلادش&وقت تابستانی بنگلادش\x11وقت بوتان\x13وقت بولیوی" + + "\x17وقت برازیلیا وقت عادی برازیلیا(وقت تابستانی برازیلیا&وقت برونئی دارا" + + "لسلام\x16وقت کیپ\u200cورد\x1fوقت عادی کیپ\u200cورد'وقت تابستانی کیپ" + + "\u200cورد\x1cوقت عادی چامورو\x14وقت چت\u200cهام\x1dوقت عادی چت\u200cهام%" + + "وقت تابستانی چت\u200cهام\x0fوقت شیلی\x18وقت عادی شیلی وقت تابستانی شیلی" + + "\x0dوقت چین\x16وقت عادی چین\x1eوقت تابستانی چین\x19وقت چویبالسان\x22وقت " + + "عادی چویبالسان*وقت تابستانی چویبالسان وقت جزیرهٔ کریسمس\x1cوقت جزایر کو" + + "کوس\x13وقت کلمبیا\x1cوقت عادی کلمبیا$وقت تابستانی کلمبیا\x18وقت جزایر ک" + + "وک!وقت عادی جزایر کوک)وقت تابستانی جزایر کوک\x0fوقت کوبا\x18وقت عادی کو" + + "با وقت تابستانی کوبا\x11وقت دیویس\x1eوقت دومون دورویل\x1aوقت تیمور شرقی" + + "\x1eوقت جزیرهٔ ایستر'وقت عادی جزیرهٔ ایستر/وقت تابستانی جزیرهٔ ایستر\x15" + + "وقت اکوادور\x1aوقت مرکز اروپا#وقت عادی مرکز اروپا+وقت تابستانی مرکز ارو" + + "پا\x18وقت شرق اروپا!وقت عادی شرق اروپا)وقت تابستانی شرق اروپاDوقت تابست" + + "انی مکان\u200cهای دیگر شرق اروپا\x18وقت غرب اروپا!وقت عادی غرب اروپا)وق" + + "ت تابستانی غرب اروپا وقت جزایر فالکلند)وقت عادی جزایر فالکلند1وقت تابست" + + "انی جزایر فالکلند\x0fوقت فیجی\x18وقت عادی فیجی وقت تابستانی فیجی\x1eوقت" + + " گویان فرانسهFوقت سرزمین\u200cهای جنوبی و جنوبگان فرانسه\x19وقت گالاپاگو" + + "س\x13وقت گامبیه\x15وقت گرجستان\x1eوقت عادی گرجستان&وقت تابستانی گرجستان" + + "\x1eوقت جزایر گیلبرت\x15وقت گرینویچ\x1cوقت شرق گرینلند%وقت عادی شرق گرین" + + "لند-وقت تابستانی شرق گرینلند\x1cوقت غرب گرینلند%وقت عادی غرب گرینلند-وق" + + "ت تابستانی غرب گرینلند\x18وقت عادی گوام!وقت عادی خلیج فارس\x11وقت گویان" + + " وقت هاوایی‐الوشن)وقت عادی هاوایی‐الوشن1وقت تابستانی هاوایی‐الوشن\x16وقت" + + " هنگ\u200cکنگ\x1fوقت عادی هنگ\u200cکنگ'وقت تابستانی هنگ\u200cکنگ\x0fوقت " + + "خوود\x18وقت عادی خوود وقت تابستانی خوود\x0dوقت هند\x1cوقت اقیانوس هند" + + "\x15وقت هندوچین\x1eوقت مرکز اندونزی\x1cوقت شرق اندونزی\x1cوقت غرب اندونز" + + "ی\x11وقت ایران\x1aوقت عادی ایران\x22وقت تابستانی ایران\x17وقت ایرکوتسک " + + "وقت عادی ایرکوتسک(وقت تابستانی ایرکوتسک\x15وقت اسرائیل\x1eوقت عادی اسرا" + + "ئیل&وقت تابستانی اسرائیل\x0fوقت ژاپن\x18وقت عادی ژاپن وقت تابستانی ژاپن" + + "2وقت پتروپاولوسک‐کامچاتسکی;وقت عادی پتروپاولوسک‐کامچاتسکیCوقت تابستانی پ" + + "تروپاولوسک‐کامچاتسکی\x1eوقت شرق قزاقستان\x1eوقت غرب قزاقستان\x0dوقت کره" + + "\x16وقت عادی کره\x1eوقت تابستانی کره\x13وقت کوسرای\x1dوقت کراسنویارسک&وق" + + "ت عادی کراسنویارسک.وقت تابستانی کراسنویارسک\x19وقت قرقیزستان\x11وقت لان" + + "کا\x1aوقت جزایر لاین\x11وقت لردهو\x1aوقت عادی لردهو\x22وقت تابستانی لرد" + + "هو\x13وقت ماکائو\x1cوقت عادی ماکائو$وقت تابستانی ماکائو وقت جزیرهٔ مکوا" + + "ری\x15وقت ماگادان\x1eوقت عادی ماگادان&وقت تابستانی ماگادان\x11وقت مالزی" + + "\x13وقت مالدیو\x15وقت مارکوئز\x1eوقت جزایر مارشال\x11وقت موریس\x1aوقت عا" + + "دی موریس\x22وقت تابستانی موریس\x13وقت ماوسون!وقت شمال غرب مکزیک*وقت عاد" + + "ی شمال غرب مکزیک2وقت تابستانی شمال غرب مکزیک\x18وقت شرق مکزیک!وقت عادی " + + "شرق مکزیک)وقت تابستانی شرق مکزیک\x1eوقت اولان\u200cباتور'وقت عادی اولان" + + "\u200cباتور/وقت تابستانی اولان\u200cباتور\x0fوقت مسکو\x18وقت عادی مسکو و" + + "قت تابستانی مسکو\x15وقت میانمار\x13وقت نائورو\x0fوقت نپال\x22وقت کالدون" + + "یای جدید+وقت عادی کالدونیای جدید3وقت تابستانی کالدونیای جدید\x16وقت زلا" + + "ند نو\x1fوقت عادی زلاند نو'وقت تابستانی زلاند نو\x1bوقت نیوفاندلند$وقت " + + "عادی نیوفاندلند,وقت تابستانی نیوفاندلند\x11وقت نیوئه وقت جزایر نورفولک)" + + "وقت فرناندو دی نورونیا2وقت عادی فرناندو دی نورونیا:وقت تابستانی فرناندو" + + " دی نورونیا-وقت جزایر ماریانای شمالی\x1bوقت نووسیبیرسک$وقت عادی نووسیبیر" + + "سک,وقت تابستانی نووسیبیرسک\x11وقت اومسک\x1aوقت عادی اومسک\x22وقت تابستا" + + "نی اومسک\x15وقت پاکستان\x1eوقت عادی پاکستان&وقت تابستانی پاکستان\x13وقت" + + " پالائو!وقت پاپوا گینهٔ نو\x17وقت پاراگوئه وقت عادی پاراگوئه(وقت تابستان" + + "ی پاراگوئه\x0dوقت پرو\x16وقت عادی پرو\x1eوقت تابستانی پرو\x15وقت فیلیپی" + + "ن\x1eوقت عادی فیلیپین&وقت تابستانی فیلیپین\x1eوقت جزایر فونیکس&وقت سنت" + + "\u200cپیر و میکلون/وقت عادی سنت\u200cپیر و میکلون7وقت تابستانی سنت\u200c" + + "پیر و میکلون\x17وقت پیتکایرن\x13وقت پوناپه\x1cوقت پیونگ\u200cیانگ\x1eوق" + + "ت قیزیل\u200cاوردا'وقت عادی قیزیل\u200cاوردا/وقت تابستانی قیزیل\u200cاو" + + "ردا\x15وقت ریونیون\x11وقت روترا\x15وقت ساخالین\x1eوقت عادی ساخالین&وقت " + + "تابستانی ساخالین\x13وقت سامارا\x1cوقت عادی سامارا$وقت تابستانی سامارا" + + "\x11وقت ساموا\x1aوقت عادی ساموا\x22وقت تابستانی ساموا\x0fوقت سیشل\x15وقت" + + " سنگاپور\x1eوقت جزایر سلیمان وقت جورجیای جنوبی\x15وقت سورینام\x0fوقت شوو" + + "ا\x13وقت تاهیتی\x11وقت تایپه\x1aوقت عادی تایپه\x22وقت تابستانی تایپه" + + "\x19وقت تاجیکستان\x15وقت توکلائو\x11وقت تونگا\x1aوقت عادی تونگا\x22وقت ت" + + "ابستانی تونگا\x11وقت چوئوک\x19وقت ترکمنستان\x22وقت عادی ترکمنستان*وقت ت" + + "ابستانی ترکمنستان\x13وقت تووالو\x15وقت اروگوئه\x1eوقت عادی اروگوئه&وقت " + + "تابستانی اروگوئه\x17وقت ازبکستان وقت عادی ازبکستان(وقت تابستانی ازبکستا" + + "ن\x13وقت واناتو\x1cوقت عادی واناتو$وقت تابستانی واناتو\x15وقت ونزوئلا" + + "\x1eوقت ولادی\u200cوستوک'وقت عادی ولادی\u200cوستوک/وقت تابستانی ولادی" + + "\u200cوستوک\x17وقت ولگاگراد وقت عادی ولگاگراد(وقت تابستانی ولگاگراد\x11و" + + "قت وستوک\x1aوقت جزیرهٔ ویک!وقت والیس و فوتونا\x15وقت یاکوتسک\x1eوقت عاد" + + "ی یاکوتسک&وقت تابستانی یاکوتسک\x1dوقت یکاترینبورگ&وقت عادی یکاترینبورگ." + + "وقت تابستانی یکاترینبورگ\x02س\x02ن\x04lǝn\x03maa\x04mɛk\x05jǝǝ\x04júm" + + "\x03sam\x08مارس\x0cاَمروز\x0aفِردا\x03mbs\x03sas\x09mɔ́ndɔ\x15sɔ́ndɔ maf" + + "ú mába\x16sɔ́ndɔ mafú málal\x15sɔ́ndɔ mafú mána\x12mabágá má sukul\x07s" + + "ásadi\x03م." + +var bucket34 string = "" + // Size: 12633 bytes + "\x0aجنوری\x0cفبروری\x08مارچ\x0aاپریل\x04می\x06جون\x0aجولای\x08اگست\x0cسپ" + + "تمبر\x0cاکتوبر\x0aنومبر\x0aدسمبر\x04ر۱\x04ر۲\x04ر۳\x04ر۴\x0dربع اول\x0d" + + "ربع دوم\x0dربع سوم\x11ربع چهارم\x14بعد از چاشت\x06شام\x06حمل\x06ثور\x08" + + "جوزا\x0aسرطان\x06اسد\x0cسنبلهٔ\x0aمیزان\x08عقرب\x06قوس\x06جدی\x06دلو" + + "\x06حوت\x03sii\x03col\x03mbo\x03see\x03duu\x03kor\x03mor\x03juk\x03slt" + + "\x03yar\x03jol\x03bow\x05siilo\x05colte\x05mbooy\x07seeɗto\x06duujal\x05" + + "korse\x05morso\x04juko\x06siilto\x08yarkomaa\x05jolal\x05bowte\x03dew" + + "\x04aaɓ\x03maw\x03nje\x03naa\x03mwd\x03hbi\x04dewo\x07aaɓnde\x08mawbaare" + + "\x09njeslaare\x09naasaande\x06mawnde\x0ahoore-biir\x08Termes 1\x08Termes" + + " 2\x08Termes 3\x08Termes 4\x06subaka\x08kikiiɗe\x09Hade Iisa\x0bCaggal I" + + "isa\x03H-I\x03C-I\x07Jamaanu\x08Hitaande\x05Lewru\x07Yontere\x07Ñalnde" + + "\x06Haŋki\x06Hannde\x07Jaŋngo\x0fÑalɗi yontere\x06Sahnga\x05Waktu\x06Hoƴ" + + "om\x08Majaango\x0dDiiwaan waktu\x10cccc d. MMMM y G\x0acccc d.M.y\x0d{1}" + + " 'klo' {0}\x07tammik.\x07helmik.\x08maalisk.\x07huhtik.\x07toukok.\x07ke" + + "säk.\x08heinäk.\x05elok.\x06syysk.\x06lokak.\x08marrask.\x07jouluk.\x0at" + + "ammikuuta\x0ahelmikuuta\x0bmaaliskuuta\x0ahuhtikuuta\x0atoukokuuta\x0ake" + + "säkuuta\x0bheinäkuuta\x08elokuuta\x09syyskuuta\x09lokakuuta\x0bmarraskuu" + + "ta\x0ajoulukuuta\x05tammi\x05helmi\x06maalis\x05huhti\x05touko\x05kesä" + + "\x06heinä\x03elo\x04syys\x04loka\x06marras\x05joulu\x08tammikuu\x08helmi" + + "kuu\x09maaliskuu\x08huhtikuu\x08toukokuu\x08kesäkuu\x09heinäkuu\x06eloku" + + "u\x07syyskuu\x07lokakuu\x09marraskuu\x08joulukuu\x02su\x02ma\x02ti\x02ke" + + "\x02to\x02pe\x02la\x0bsunnuntaina\x0bmaanantaina\x09tiistaina\x0dkeskivi" + + "ikkona\x09torstaina\x0bperjantaina\x0alauantaina\x09sunnuntai\x09maanant" + + "ai\x07tiistai\x0bkeskiviikko\x07torstai\x09perjantai\x08lauantai\x081. n" + + "elj.\x082. nelj.\x083. nelj.\x084. nelj.\x0d1. neljännes\x0d2. neljännes" + + "\x0d3. neljännes\x0d4. neljännes\x0ckeskiyöllä\x03ap.\x07keskip.\x03ip." + + "\x07aamulla\x06aamup.\x06iltap.\x07illalla\x07yöllä\x03ky.\x03kp.\x10kes" + + "kipäivällä\x0faamupäivällä\x0filtapäivällä\x08keskiyö\x04aamu\x04ilta" + + "\x03yö\x0ckeskipäivä\x0baamupäivä\x0biltapäivä\x1bennen Kristuksen synty" + + "mää\x16ennen ajanlaskun alkua\x1djälkeen Kristuksen syntymän\x18jälkeen " + + "ajanlaskun alun\x04eKr.\x04eaa.\x04jKr.\x04jaa.\x03eaa\x03jaa\x0ecccc d." + + " MMMM y\x0ctišríkuuta\x0dhešvánkuuta\x0ckislévkuuta\x0btevétkuuta\x0cšev" + + "átkuuta\x0cadárkuuta I\x0aadárkuuta\x0dadárkuuta II\x0bnisánkuuta\x0bij" + + "járkuuta\x0bsivánkuuta\x0ctammúzkuuta\x07abkuuta\x0aelúlkuuta\x07tišrí" + + "\x08hešván\x07kislév\x06tevét\x07ševát\x07adár I\x05adár\x08adár II\x06n" + + "isán\x06ijjár\x06siván\x07tammúz\x02ab\x05elúl\x0atišríkuu\x0bhešvánkuu" + + "\x0akislévkuu\x09tevétkuu\x0aševátkuu\x0aadárkuu I\x08adárkuu\x0badárkuu" + + " II\x09nisánkuu\x09ijjárkuu\x09sivánkuu\x0atammúzkuu\x05abkuu\x08elúlkuu" + + "\x08muharram\x05safar\x10rabi’ al-awwal\x10rabi’ al-akhir\x0edžumada-l-u" + + "la\x11džumada-l-akhira\x07radžab\x09ša’ban\x07ramadan\x07šawwal\x0ddhu-l" + + "-qa’da\x0ddhu-l-hiddža\x09aikakausi\x05vuosi\x0cviime vuonna\x0dtänä vuo" + + "nna\x0bensi vuonna\x14{0} vuoden päästä\x10{0} vuosi sitten\x11{0} vuott" + + "a sitten\x07viime v\x08tänä v\x06ensi v\x0f{0} v päästä\x0c{0} v sitten" + + "\x0fneljännesvuosi\x16viime neljännesvuonna\x17tänä neljännesvuonna\x15e" + + "nsi neljännesvuonna\x1e{0} neljännesvuoden päästä\x1a{0} neljännesvuosi " + + "sitten\x1b{0} neljännesvuotta sitten\x0aneljännes\x15viime neljänneksenä" + + "\x16tänä neljänneksenä\x14ensi neljänneksenä\x1b{0} neljänneksen päästä" + + "\x15{0} neljännes sitten\x18{0} neljännestä sitten\x05nelj.\x0bviime nel" + + "j.\x0ctänä nelj.\x0aensi nelj.\x13{0} nelj. päästä\x10{0} nelj. sitten" + + "\x08kuukausi\x0cviime kuussa\x0etässä kuussa\x0bensi kuussa\x17{0} kuuka" + + "uden päästä\x13{0} kuukausi sitten\x14{0} kuukautta sitten\x02kk\x08viim" + + "e kk\x0atässä kk\x07ensi kk\x10{0} kk päästä\x0d{0} kk sitten\x06viikko" + + "\x0eviime viikolla\x10tällä viikolla\x0densi viikolla\x14{0} viikon pääs" + + "tä\x11{0} viikko sitten\x12{0} viikkoa sitten\x15päivän {0} viikolla\x02" + + "vk\x08viime vk\x0atällä vk\x07ensi vk\x10{0} vk päästä\x0d{0} vk sitten" + + "\x07päivä\x11toissa päivänä\x05eilen\x09tänään\x08huomenna\x0bylihuomenn" + + "a\x16{0} päivän päästä\x12{0} päivä sitten\x14{0} päivää sitten\x02pv" + + "\x08toissap.\x05huom.\x08ylihuom.\x10{0} pv päästä\x0d{0} pv sitten\x0dv" + + "iikonpäivä\x11viime sunnuntaina\x12tänä sunnuntaina\x10ensi sunnuntaina" + + "\x18{0} sunnuntain päästä\x14{0} sunnuntai sitten\x16{0} sunnuntaita sit" + + "ten\x08viime su\x09tänä su\x07ensi su\x10{0} su päästä\x0d{0} su sitten" + + "\x11viime maanantaina\x12tänä maanantaina\x10ensi maanantaina\x18{0} maa" + + "nantain päästä\x14{0} maanantai sitten\x16{0} maanantaita sitten\x08viim" + + "e ma\x09tänä ma\x07ensi ma\x10{0} ma päästä\x0d{0} ma sitten\x0fviime ti" + + "istaina\x10tänä tiistaina\x0eensi tiistaina\x16{0} tiistain päästä\x12{0" + + "} tiistai sitten\x14{0} tiistaita sitten\x08viime ti\x09tänä ti\x07ensi " + + "ti\x10{0} ti päästä\x0d{0} ti sitten\x13viime keskiviikkona\x14tänä kesk" + + "iviikkona\x12ensi keskiviikkona\x19{0} keskiviikon päästä\x16{0} keskivi" + + "ikko sitten\x17{0} keskiviikkoa sitten\x08viime ke\x09tänä ke\x07ensi ke" + + "\x10{0} ke päästä\x0d{0} ke sitten\x0fviime torstaina\x10tänä torstaina" + + "\x0eensi torstaina\x16{0} torstain päästä\x12{0} torstai sitten\x14{0} t" + + "orstaita sitten\x08viime to\x09tänä to\x07ensi to\x10{0} to päästä\x0d{0" + + "} to sitten\x11viime perjantaina\x12tänä perjantaina\x10ensi perjantaina" + + "\x18{0} perjantain päästä\x14{0} perjantai sitten\x16{0} perjantaita sit" + + "ten\x08viime pe\x09tänä pe\x07ensi pe\x10{0} pe päästä\x0d{0} pe sitten" + + "\x10viime lauantaina\x11tänä lauantaina\x0fensi lauantaina\x17{0} lauant" + + "ain päästä\x13{0} lauantai sitten\x15{0} lauantaita sitten\x08viime la" + + "\x09tänä la\x07ensi la\x10{0} la päästä\x0d{0} la sitten\x0fvuorokaudena" + + "ika\x05tunti\x15tämän tunnin aikana\x14{0} tunnin päästä\x10{0} tunti si" + + "tten\x11{0} tuntia sitten\x10tunnin sisällä\x0f{0} t päästä\x0c{0} t sit" + + "ten\x08minuutti\x17tämän minuutin aikana\x16{0} minuutin päästä\x13{0} m" + + "inuutti sitten\x14{0} minuuttia sitten\x12minuutin sisällä\x11{0} min pä" + + "ästä\x0e{0} min sitten\x07sekunti\x03nyt\x16{0} sekunnin päästä\x12{0} " + + "sekunti sitten\x13{0} sekuntia sitten\x0f{0} s päästä\x0c{0} s sitten" + + "\x0caikavyöhyke\x0b+H.mm;-H.mm\x06UTC{0}\x03UTC\x11aikavyöhyke: {0}\x0f{" + + "0} (kesäaika)\x12{0} (normaaliaika)\x12Asetettu yleisaika\x14Britannian " + + "kesäaika\x12Irlannin kesäaika\x0aAcren aika\x12Acren normaaliaika\x0fAcr" + + "en kesäaika\x11Afganistanin aika\x12Keski-Afrikan aika\x11Itä-Afrikan ai" + + "ka\x13Etelä-Afrikan aika\x13Länsi-Afrikan aika\x1bLänsi-Afrikan normaali" + + "aika\x18Länsi-Afrikan kesäaika\x0cAlaskan aika\x14Alaskan normaaliaika" + + "\x11Alaskan kesäaika\x0cAlmatyn aika\x14Almatyn normaaliaika\x11Almatyn " + + "kesäaika\x0dAmazonin aika\x15Amazonin normaaliaika\x12Amazonin kesäaika" + + "\x1aYhdysvaltain keskinen aika\x22Yhdysvaltain keskinen normaaliaika\x1f" + + "Yhdysvaltain keskinen kesäaika\x1aYhdysvaltain itäinen aika\x22Yhdysvalt" + + "ain itäinen normaaliaika\x1fYhdysvaltain itäinen kesäaika\x12Kalliovuort" + + "en aika\x1aKalliovuorten normaaliaika\x17Kalliovuorten kesäaika\x1dYhdys" + + "valtain Tyynenmeren aika%Yhdysvaltain Tyynenmeren normaaliaika\x22Yhdysv" + + "altain Tyynenmeren kesäaika\x0dAnadyrin aika\x15Anadyrin normaaliaika" + + "\x12Anadyrin kesäaika\x0aApian aika\x12Apian normaaliaika\x0fApian kesäa" + + "ika\x0eAqtaw’n aika\x16Aqtaw’n normaaliaika\x13Aqtaw’n kesäaika\x0dAqtöb" + + "en aika\x15Aqtöben normaaliaika\x12Aqtöben kesäaika\x12Saudi-Arabian aik" + + "a\x1aSaudi-Arabian normaaliaika\x17Saudi-Arabian kesäaika\x10Argentiinan" + + " aika\x18Argentiinan normaaliaika\x15Argentiinan kesäaika\x17Länsi-Argen" + + "tiinan aika\x1fLänsi-Argentiinan normaaliaika\x1cLänsi-Argentiinan kesäa" + + "ika\x0dArmenian aika\x15Armenian normaaliaika\x12Armenian kesäaika\x15Ka" + + "nadan Atlantin aika\x1dKanadan Atlantin normaaliaika\x1aKanadan Atlantin" + + " kesäaika\x15Keski-Australian aika\x1dKeski-Australian normaaliaika\x1aK" + + "eski-Australian kesäaika\x1fLäntisen Keski-Australian aika'Läntisen Kesk" + + "i-Australian normaaliaika$Läntisen Keski-Australian kesäaika\x14Itä-Aust" + + "ralian aika\x1cItä-Australian normaaliaika\x19Itä-Australian kesäaika" + + "\x16Länsi-Australian aika\x1eLänsi-Australian normaaliaika\x1bLänsi-Aust" + + "ralian kesäaika\x13Azerbaidžanin aika\x1bAzerbaidžanin normaaliaika\x18A" + + "zerbaidžanin kesäaika\x0cAzorien aika\x14Azorien normaaliaika\x11Azorien" + + " kesäaika\x11Bangladeshin aika\x19Bangladeshin normaaliaika\x16Banglades" + + "hin kesäaika\x0dBhutanin aika\x0dBolivian aika\x0eBrasilian aika\x16Bras" + + "ilian normaaliaika\x13Brasilian kesäaika\x0cBrunein aika\x0fKap Verden a" + + "ika\x17Kap Verden normaaliaika\x14Kap Verden kesäaika\x0bCaseyn aika\x0f" + + "Tšamorron aika\x0eChathamin aika\x16Chathamin normaaliaika\x13Chathamin " + + "kesäaika\x0bChilen aika\x13Chilen normaaliaika\x10Chilen kesäaika\x0bKii" + + "nan aika\x13Kiinan normaaliaika\x10Kiinan kesäaika\x10Tšoibalsan aika" + + "\x18Tšoibalsan normaaliaika\x15Tšoibalsan kesäaika\x10Joulusaaren aika" + + "\x12Kookossaarten aika\x0eKolumbian aika\x16Kolumbian normaaliaika\x13Ko" + + "lumbian kesäaika\x12Cookinsaarten aika\x1aCookinsaarten normaaliaika\x17" + + "Cookinsaarten kesäaika\x0bKuuban aika\x13Kuuban normaaliaika\x10Kuuban k" + + "esäaika\x0cDavisin aika\x18Dumont-d’Urvillen aika\x11Itä-Timorin aika" + + "\x16Pääsiäissaaren aika\x1ePääsiäissaaren normaaliaika\x1bPääsiäissaaren" + + " kesäaika\x0eEcuadorin aika\x13Keski-Euroopan aika\x1bKeski-Euroopan nor" + + "maaliaika\x18Keski-Euroopan kesäaika\x12Itä-Euroopan aika\x1aItä-Euroopa" + + "n normaaliaika\x17Itä-Euroopan kesäaika\x1aItäisemmän Euroopan aika\x14L" + + "änsi-Euroopan aika\x1cLänsi-Euroopan normaaliaika\x19Länsi-Euroopan kes" + + "äaika\x16Falklandinsaarten aika\x1eFalklandinsaarten normaaliaika\x1bFa" + + "lklandinsaarten kesäaika\x0cFidžin aika\x14Fidžin normaaliaika\x11Fidžin" + + " kesäaika\x15Ranskan Guayanan aika1Ranskan eteläisten ja antarktisten al" + + "ueiden aika\x16Galápagossaarten aika\x0eGambierin aika\x0dGeorgian aika" + + "\x15Georgian normaaliaika\x12Georgian kesäaika\x13Gilbertsaarten aika" + + "\x18Greenwichin normaaliaika\x15Itä-Grönlannin aika\x1dItä-Grönlannin no" + + "rmaaliaika\x1aItä-Grönlannin kesäaika\x17Länsi-Grönlannin aika\x1fLänsi-" + + "Grönlannin normaaliaika\x1cLänsi-Grönlannin kesäaika\x0bGuamin aika\x1fA" + + "rabiemiirikuntien normaaliaika\x0cGuyanan aika\x17Havaijin-Aleuttien aik" + + "a\x1fHavaijin-Aleuttien normaaliaika\x1cHavaijin-Aleuttien kesäaika\x0fH" + + "ongkongin aika\x17Hongkongin normaaliaika\x14Hongkongin kesäaika\x0bHovd" + + "in aika\x13Hovdin normaaliaika\x10Hovdin kesäaika\x0bIntian aika\x16Inti" + + "an valtameren aika\x0fIndokiinan aika\x15Keski-Indonesian aika\x14Itä-In" + + "donesian aika\x16Länsi-Indonesian aika\x0bIranin aika\x13Iranin normaali" + + "aika\x10Iranin kesäaika\x0eIrkutskin aika\x16Irkutskin normaaliaika\x13I" + + "rkutskin kesäaika\x0dIsraelin aika\x15Israelin normaaliaika\x12Israelin " + + "kesäaika\x0cJapanin aika\x14Japanin normaaliaika\x11Japanin kesäaika\x10" + + "Kamtšatkan aika\x18Kamtšatkan normaaliaika\x15Kamtšatkan kesäaika\x15Itä" + + "-Kazakstanin aika\x17Länsi-Kazakstanin aika\x0bKorean aika\x13Korean nor" + + "maaliaika\x10Korean kesäaika\x0cKosraen aika\x12Krasnojarskin aika\x1aKr" + + "asnojarskin normaaliaika\x17Krasnojarskin kesäaika\x0eKirgisian aika\x0f" + + "Sri Lankan aika\x10Linesaarten aika\x0fLord Howen aika\x17Lord Howen nor" + + "maaliaika\x14Lord Howen kesäaika\x0bMacaon aika\x13Macaon normaaliaika" + + "\x10Macaon kesäaika\x15Macquariensaaren aika\x0eMagadanin aika\x16Magada" + + "nin normaaliaika\x13Magadanin kesäaika\x0dMalesian aika\x10Malediivien a" + + "ika\x10Marquesasin aika\x16Marshallinsaarten aika\x11Mauritiuksen aika" + + "\x19Mauritiuksen normaaliaika\x16Mauritiuksen kesäaika\x0dMawsonin aika" + + "\x15Luoteis-Meksikon aika\x1dLuoteis-Meksikon normaaliaika\x1aLuoteis-Me" + + "ksikon kesäaika\x19Meksikon Tyynenmeren aika!Meksikon Tyynenmeren normaa" + + "liaika\x1eMeksikon Tyynenmeren kesäaika\x11Ulan Batorin aika\x19Ulan Bat" + + "orin normaaliaika\x16Ulan Batorin kesäaika\x0dMoskovan aika\x15Moskovan " + + "normaaliaika\x12Moskovan kesäaika\x0eMyanmarin aika\x0bNaurun aika\x0cNe" + + "palin aika\x15Uuden-Kaledonian aika\x1dUuden-Kaledonian normaaliaika\x1a" + + "Uuden-Kaledonian kesäaika\x14Uuden-Seelannin aika\x1cUuden-Seelannin nor" + + "maaliaika\x19Uuden-Seelannin kesäaika\x13Newfoundlandin aika\x1bNewfound" + + "landin normaaliaika\x18Newfoundlandin kesäaika\x0aNiuen aika\x15Norfolki" + + "nsaarten aika\x19Fernando de Noronhan aika!Fernando de Noronhan normaali" + + "aika\x1eFernando de Noronhan kesäaika\x17Pohjois-Mariaanien aika\x12Novo" + + "sibirskin aika\x1aNovosibirskin normaaliaika\x17Novosibirskin kesäaika" + + "\x0bOmskin aika\x13Omskin normaaliaika\x10Omskin kesäaika\x0fPakistanin " + + "aika\x17Pakistanin normaaliaika\x14Pakistanin kesäaika\x0bPalaun aika" + + "\x18Papua-Uuden-Guinean aika\x0eParaguayn aika\x16Paraguayn normaaliaika" + + "\x13Paraguayn kesäaika\x0aPerun aika\x12Perun normaaliaika\x0fPerun kesä" + + "aika\x11Filippiinien aika\x19Filippiinien normaaliaika\x16Filippiinien k" + + "esäaika\x13Phoenixsaarten aika Saint-Pierren ja Miquelonin aika(Saint-Pi" + + "erren ja Miquelonin normaaliaika%Saint-Pierren ja Miquelonin kesäaika" + + "\x0fPitcairnin aika\x0dPohnpein aika\x10Pjongjangin aika\x11Qızılordan a" + + "ika\x19Qızılordan normaaliaika\x16Qızılordan kesäaika\x0fRéunionin aika" + + "\x0dRotheran aika\x0eSahalinin aika\x16Sahalinin normaaliaika\x13Sahalin" + + "in kesäaika\x0cSamaran aika\x14Samaran normaaliaika\x11Samaran kesäaika" + + "\x0bSamoan aika\x13Samoan normaaliaika\x10Samoan kesäaika\x10Seychellien" + + " aika\x0fSingaporen aika\x13Salomonsaarten aika\x14Etelä-Georgian aika" + + "\x0eSurinamen aika\x0bSyowan aika\x0cTahitin aika\x0cTaipein aika\x14Tai" + + "pein normaaliaika\x11Taipein kesäaika\x13Tadžikistanin aika\x0dTokelaun " + + "aika\x0bTongan aika\x13Tongan normaaliaika\x10Tongan kesäaika\x0cChuukin" + + " aika\x13Turkmenistanin aika\x1bTurkmenistanin normaaliaika\x18Turkmenis" + + "tanin kesäaika\x0cTuvalun aika\x0dUruguayn aika\x15Uruguayn normaaliaika" + + "\x12Uruguayn kesäaika\x11Uzbekistanin aika\x19Uzbekistanin normaaliaika" + + "\x16Uzbekistanin kesäaika\x0dVanuatun aika\x15Vanuatun normaaliaika\x12V" + + "anuatun kesäaika\x0fVenezuelan aika\x12Vladivostokin aika\x1aVladivostok" + + "in normaaliaika\x17Vladivostokin kesäaika\x10Volgogradin aika\x18Volgogr" + + "adin normaaliaika\x15Volgogradin kesäaika\x0dVostokin aika\x0aWaken aika" + + "\x18Wallisin ja Futunan aika\x0eJakutskin aika\x16Jakutskin normaaliaika" + + "\x13Jakutskin kesäaika\x14Jekaterinburgin aika\x1cJekaterinburgin normaa" + + "liaika\x19Jekaterinburgin kesäaika\x03má\x03tý\x02mi\x03hó\x02fr\x02le" + + "\x04pón\x03wut\x03srj\x04štw\x03pja\x03sob\x05safar\x08rabiʻ I\x09rabiʻ " + + "II\x08jumada I\x09jumada II\x05rajab\x08shaʻban\x07ramadan\x07shawwal" + + "\x0edhuʻl-qiʻdah\x0ddhuʻl-hijjah\x0aفروری\x0aاپریل\x04مئ\x0cجولائی\x08اگ" + + "ست\x0aستمبر\x0aنومبر\x0aدسمبر\x0cjumada-l-ula\x0fjumada-l-akhira\x09sha" + + "’ban\x0ddhu-l-ga’da\x0bdhu-l-hijja\x08مارچ\x0aاپریل\x06مئی\x06جون\x0cا" + + "کتوبر\x0aنومبر\x0aدسمبر\x04می\x06جون\x0aجولای\x0cسپتمبر" + +var bucket35 string = "" + // Size: 10851 bytes + "\x0e{1} 'nang' {0}\x03Ene\x03Peb\x03Mar\x03Abr\x03May\x03Hun\x03Hul\x03A" + + "go\x03Set\x03Okt\x03Nob\x03Dis\x03Lin\x03Lun\x03Miy\x03Huw\x03Biy\x03Sab" + + "\x02Li\x02Lu\x02Ma\x02Mi\x02Hu\x02Bi\x02Sa\x06Linggo\x05Lunes\x06Martes" + + "\x0aMiyerkules\x07Huwebes\x08Biyernes\x06Sabado\x0dika-1 quarter\x0dika-" + + "2 quarter\x0dika-3 quarter\x10ika-4 na quarter\x0ahatinggabi\x10tanghali" + + "ng-tapat\x0anang umaga\x0dmadaling-araw\x08tanghali\x08ng hapon\x04gabi" + + "\x05umaga\x07ng gabi\x05hapon\x07panahon\x04taon\x0enakaraang taon\x0cng" + + "ayong taon\x0fsusunod na taon\x0bsa {0} taon\x10sa {0} (na) taon\x16{0} " + + "taon ang nakalipas\x1b{0} (na) taon ang nakalipas\x11nakaraang quarter" + + "\x0fngayong quarter\x12susunod na quarter\x0esa {0} quarter\x13sa {0} (n" + + "a) quarter\x19{0} quarter ang nakalipas\x1e{0} (na) quarter ang nakalipa" + + "s\x05buwan\x0fnakaraang buwan\x0dngayong buwan\x10susunod na buwan\x0csa" + + " {0} buwan\x11sa {0} (na) buwan\x17{0} buwan ang nakalipas\x1c{0} (na) b" + + "uwan ang nakalipas\x06linggo\x13nakalipas na linggo\x0fsa linggong ito" + + "\x11susunod na linggo\x0dsa {0} linggo\x12sa {0} (na) linggo\x18{0} ling" + + "go ang nakalipas\x1d{0} (na) linggo ang nakalipas\x0dlinggo ng {0}\x10na" + + "karaang linggo\x0engayong linggo\x04araw\x15Araw bago ang kahapon\x07kah" + + "apon\x0cngayong araw\x05bukas\x0aSamakalawa\x0bsa {0} araw\x10sa {0} (na" + + ") araw\x16{0} araw ang nakalipas\x1b{0} (na) araw ang nakalipas\x0earaw " + + "ng linggo\x09sa Linggo\x11susunod na Linggo\x0dsa {0} Linggo\x12sa {0} (" + + "na) Linggo\x18{0} Linggo ang nakalipas\x1d{0} (na) Linggo ang nakalipas" + + "\x0enakaraang Lin.\x0cngayong Lin.\x0fsusunod na Lin.\x0fnakaraang Lunes" + + "\x0dngayong Lunes\x10susunod na Lunes\x0csa {0} Lunes\x11sa {0} (na) Lun" + + "es\x17{0} Lunes ang nakalipas\x1c{0} (na) Lunes ang nakalipas\x0enakaraa" + + "ng Lun.\x0cngayong Lun.\x0fsusunod na Lun.\x10nakaraang Martes\x0engayon" + + "g Martes\x11susunod na Martes\x0dsa {0} Martes\x12sa {0} (na) Martes\x18" + + "{0} Martes ang nakalipas\x1d{0} (na) Martes ang nakalipas\x0enakaraang M" + + "ar.\x0cngayong Mar.\x0fsusunod na Mar. sa {0} (na) Martes ang nakalipas" + + "\x14nakaraang Miyerkules\x12ngayong Miyerkules\x15susunod na Miyerkules" + + "\x11sa {0} Miyerkules\x16sa {0} (na) Miyerkules\x1c{0} Miyerkules ang na" + + "kalipas!{0} (na) Miyerkules ang nakalipas\x0enakaraang Miy.\x0cngayong M" + + "iy.\x0fsusunod na Miy.\x11nakaraang Huwebes\x0fngayong Huwebes\x12susuno" + + "d na Huwebes\x0esa {0} Huwebes\x13sa {0} (na) Huwebes\x19{0} Huwebes ang" + + " nakalipas\x1e{0} (na) Huwebes ang nakalipas\x0enakaraang Huw.\x0cngayon" + + "g Huw.\x0fsusunod na Huw.\x12nakaraang Biyernes\x10ngayong Biyernes\x13s" + + "usunod na Biyernes\x0fsa {0} Biyernes\x14sa {0} (na) Biyernes\x1a{0} Biy" + + "ernes ang nakalipas\x1f{0} (na) Biyernes ang nakalipas\x0enakaraang Biy." + + "\x0cngayong Biy.\x0fsusunod na Biy.\x10nakaraang Sabado\x0engayong Sabad" + + "o\x11susunod na Sabado\x0dsa {0} Sabado\x12sa {0} (na) Sabado\x18{0} Sab" + + "ado ang nakalipas\x1d{0} (na) Sabado ang nakalipas\x0enakaraang Sab.\x0c" + + "ngayong Sab.\x0fsusunod na Sab. sa {0} (na) Sabado ang nakalipas\x04oras" + + "\x0cngayong oras\x0bsa {0} oras\x10sa {0} (na) oras\x16{0} oras ang naka" + + "lipas\x1b{0} (na) oras ang nakalipas\x12{0} oras nakalipas\x17{0} (na) o" + + "ras nakalipas\x0fsa minutong ito\x0dsa {0} minuto\x12sa {0} (na) minuto" + + "\x18{0} minuto ang nakalipas\x1d{0} (na) minuto ang nakalipas\x0bsa {0} " + + "min.\x10sa {0} (na) min.\x16{0} min. ang nakalipas\x1b{0} (na) min. ang " + + "nakalipas\x06ngayon\x0esa {0} segundo\x13sa {0} (na) segundo\x19{0} segu" + + "ndo ang nakalipas\x1e{0} (na) segundo ang nakalipas\x0bsa {0} seg.\x10sa" + + " {0} (na) seg.\x16{0} seg. ang nakalipas\x17{0} (na) seg. nakalipas\x12{" + + "0} seg. nakalipas\x1bOras sa Tag-init ng Britain\x1bStandard na Oras sa " + + "Ireland\x13Oras sa Afghanistan\x16Oras sa Gitnang Africa\x18Oras sa Sila" + + "ngang Africa\x14Oras sa Timog Africa\x18Oras sa Kanlurang Africa$Standar" + + "d na Oras sa Kanlurang Africa$Oras sa Tag-init ng Kanlurang Africa\x0eOr" + + "as sa Alaska\x1aStandard na Oras sa Alaska\x17Daylight Time sa Alaska" + + "\x0eOras sa Amazon\x1aStandard na Oras sa Amazon\x1aOras sa Tag-init ng " + + "Amazon\x0fSentral na Oras\x1aSentral na Karaniwang Oras\x18Sentral na Da" + + "ylight Time\x0cEastern Time\x1bEastern na Standard na Oras\x15Eastern Da" + + "ylight Time\x0eOras sa Bundok\x19Karaniwang Oras sa Bundok\x17Daylight T" + + "ime sa Bundok\x10Oras sa Pasipiko\x1cStandard na Oras sa Pasipiko\x19Day" + + "light Time sa Pasipiko\x0eOras sa Anadyr\x17Standard Time sa Anadyr\x15S" + + "ummer Time sa Anadyr\x0cOras sa Apia\x18Standard na Oras sa Apia\x12Apia" + + " Daylight Time\x0eOras sa Arabia\x1aStandard na Oras sa Arabia\x17Daylig" + + "ht Time sa Arabia\x11Oras sa Argentina\x1dStandard na Oras sa Argentina" + + "\x1dOras sa Tag-init ng Argentina\x1bOras sa Kanlurang Argentina'Standar" + + "d na Oras sa Kanlurang Argentina'Oras sa Tag-init ng Kanlurang Argentina" + + "\x0fOras sa Armenia\x1bStandard na Oras sa Armenia\x1bOras sa Tag-init n" + + "g Armenia\x11Oras sa Atlantiko\x1dStandard na Oras sa Atlantiko\x1aDayli" + + "ght Time sa Atlantiko\x19Oras ng Gitnang Australya\x22Standard Time ng G" + + "itnang Australya\x22Daylight Time ng Gitnang Australya%Oras ng Gitnang K" + + "anluran ng Australya.Standard Time ng Gitnang Kanluran ng Australya.Dayl" + + "ight Time ng Gitnang Kanluran ng Australya\x1bOras ng Silangang Australy" + + "a$Standard Time ng Silangang Australya$Daylight Time ng Silangang Austra" + + "lya\x1bOras sa Kanlurang Australya$Standard Time ng Kanlurang Australya$" + + "Daylight Time sa Kanlurang Australya\x12Oras sa Azerbaijan\x1eStandard n" + + "a Oras sa Azerbaijan\x1eOras sa Tag-init ng Azerbaijan\x0eOras sa Azores" + + "\x1aStandard na Oras sa Azores\x1aOras sa Tag-init ng Azores\x12Oras sa " + + "Bangladesh\x1eStandard na Oras sa Bangladesh\x1eOras sa Tag-init ng Bang" + + "ladesh\x0eOras sa Bhutan\x0fOras sa Bolivia\x10Oras sa Brasilia\x1cStand" + + "ard na Oras sa Brasilia\x1cOras sa Tag-init ng Brasilia\x19Oras ng Brune" + + "i Darussalam\x12Oras sa Cape Verde\x1eStandard na Oras sa Cape Verde\x1e" + + "Oras sa Tag-init ng Cape Verde\x1cStandard na Oras sa Chamorro\x0fOras s" + + "a Chatham\x1bStandard na Oras sa Chatham\x18Daylight Time sa Chatham\x0d" + + "Oras sa Chile\x19Standard na Oras sa Chile\x19Oras sa Tag-init ng Chile" + + "\x0dOras sa China\x19Standard na Oras sa China\x16Daylight Time sa China" + + "\x12Oras sa Choibalsan\x1eStandard na Oras sa Choibalsan\x1eOras sa Tag-" + + "init ng Choibalsan\x18Oras sa Christmas Island\x15Oras sa Cocos Islands" + + "\x10Oras sa Colombia\x1cStandard na Oras sa Colombia\x1cOras sa Tag-init" + + " ng Colombia\x14Oras sa Cook Islands Standard na Oras sa Cook Islands,Or" + + "as sa Kalahati ng Tag-init ng Cook Islands\x0cOras sa Cuba\x18Standard n" + + "a Oras sa Cuba\x15Daylight Time sa Cuba\x0dOras sa Davis\x1aOras sa Dumo" + + "nt-d’Urville\x12Oras ng East Timor\x15Oras sa Easter Island!Standard na " + + "Oras sa Easter Island!Oras sa Tag-init ng Easter Island\x0fOras sa Ecuad" + + "or\x16Oras sa Gitnang Europe\x22Standard na Oras sa Gitnang Europe\x22Or" + + "as sa Tag-init ng Gitnang Europe\x18Oras sa Silangang Europe$Standard na" + + " Oras sa Silangang Europe$Oras sa Tag-init ng Silangang Europe\x1fOras s" + + "a Pinaka-silangang Europe\x18Oras sa Kanlurang Europe$Standard na Oras s" + + "a Kanlurang Europe$Oras sa Tag-init ng Kanlurang Europe\x18Oras sa Falkl" + + "and Islands$Standard na Oras sa Falkland Islands$Oras sa Tag-init ng Fal" + + "kland Islands\x0cOras sa Fiji\x18Standard na Oras sa Fiji\x18Oras sa Tag" + + "-init ng Fiji\x15Oras sa French Guiana&Oras sa Katimugang France at Anta" + + "rtiko\x11Oras sa Galapagos\x0fOras sa Gambier\x0fOras sa Georgia\x1bStan" + + "dard na Oras sa Georgia\x1bOras sa Tag-init ng Georgia\x17Oras sa Gilber" + + "t Islands\x13Greenwich Mean Time\x1bOras sa Silangang Greenland'Standard" + + " na Oras sa Silangang Greenland'Oras sa Tag-init ng Silangang Greenland" + + "\x1bOras sa Kanlurang Greenland'Standard na Oras sa Kanlurang Greenland'" + + "Oras sa Tag-init ng Kanlurang Greenland\x0cOras sa Gulf\x0eOras sa Guyan" + + "a\x17Oras sa Hawaii-Aleutian#Standard na Oras sa Hawaii-Aleutian#Oras sa" + + " Tag-init ng Hawaii-Aleutian\x11Oras sa Hong Kong\x1dStandard na Oras sa" + + " Hong Kong\x1dOras sa Tag-init ng Hong Kong\x0cOras sa Hovd\x18Standard " + + "na Oras sa Hovd\x18Oras sa Tag-init ng Hovd\x1aStandard na Oras sa Bhuta" + + "n\x14Oras sa Indian Ocean\x11Oras ng Indochina\x1aOras ng Gitnang Indone" + + "siya\x1cOras ng Silangang Indonesiya\x1cOras ng Kanlurang Indonesiya\x0c" + + "Oras sa Iran\x18Standard na Oras sa Iran\x15Daylight Time sa Iran\x0fOra" + + "s sa Irkutsk\x1bStandard na Oras sa Irkutsk\x1bOras sa Tag-init ng Irkut" + + "sk\x0eOras sa Israel\x1aStandard na Oras sa Israel\x17Daylight Time sa I" + + "srael\x0dOras sa Japan\x19Standard na Oras sa Japan\x16Daylight Time sa " + + "Japan Oras sa Petropavlovsk-Kamchatski)Standard Time sa Petropavlovsk-Ka" + + "mchatski'Summer Time sa Petropavlovsk-Kamchatski\x1cOras sa Silangang Ka" + + "zakhstan\x1cOras sa Kanlurang Kazakhstan\x0dOras sa Korea\x19Standard na" + + " Oras sa Korea\x16Daylight Time sa Korea\x0eOras sa Kosrae\x13Oras sa Kr" + + "asnoyarsk\x1fStandard na Oras sa Krasnoyarsk\x1fOras sa Tag-init ng Kras" + + "noyarsk\x11Oras sa Kyrgystan\x14Oras sa Line Islands\x11Oras sa Lord How" + + "e\x1dStandard na Oras sa Lord Howe\x1bDaylight Time sa Lorde Howe\x18Ora" + + "s sa Macquarie Island\x0fOras sa Magadan\x1bStandard na Oras sa Magadan" + + "\x1bOras sa Tag-init ng Magadan\x10Oras ng Malaysia\x10Oras sa Maldives" + + "\x11Oras sa Marquesas\x18Oras sa Marshall Islands\x11Oras sa Mauritius" + + "\x1dStandard na Oras sa Mauritius\x1dOras sa Tag-init ng Mauritius\x0eOr" + + "as sa Mawson!Oras sa Hilagang-kanlurang Mexico-Standard na Oras sa Hilag" + + "ang-kanlurang Mexico*Daylight Time sa Hilagang-kanlurang Mexico\x1aOras " + + "sa Pasipiko ng Mexico&Standard na Oras sa Pasipiko ng Mexico#Daylight Ti" + + "me sa Pasipiko ng Mexico\x12Oras sa Ulan Bator\x1eStandard na Oras sa Ul" + + "an Bator\x1eOras sa Tag-init ng Ulan Bator\x0eOras sa Moscow\x1aStandard" + + " na Oras sa Moscow\x1aOras sa Tag-init ng Moscow\x0fOras ng Myanmar\x0dO" + + "ras sa Nauru\x0dOras sa Nepal\x15Oras sa New Caledonia!Standard na Oras " + + "sa New Caledonia!Oras sa Tag-init ng New Caledonia\x13Oras sa New Zealan" + + "d\x1fStandard na Oras sa New Zealand\x1cDaylight Time sa New Zealand\x14" + + "Oras sa Newfoundland Standard na Oras sa Newfoundland\x1dDaylight Time s" + + "a Newfoundland\x0cOras sa Niue\x16Oras sa Norfolk Island\x1bOras sa Fern" + + "ando de Noronha'Standard na Oras sa Fernando de Noronha'Oras sa Tag-init" + + " ng Fernando de Noronha\x13Oras sa Novosibirsk\x1fStandard na Oras sa No" + + "vosibirsk\x1fOras sa Tag-init ng Novosibirsk\x0cOras sa Omsk\x18Standard" + + " na Oras sa Omsk\x18Oras sa Tag-init ng Omsk\x10Oras sa Pakistan\x1cStan" + + "dard na Oras sa Pakistan\x1cOras sa Tag-init ng Pakistan\x0dOras sa Pala" + + "u\x18Oras sa Papua New Guinea\x10Oras sa Paraguay\x1cStandard na Oras sa" + + " Paraguay\x1cOras sa Tag-init ng Paraguay\x0cOras sa Peru\x18Standard na" + + " Oras sa Peru\x18Oras sa Tag-init ng Peru\x11Oras sa Pilipinas\x1dStanda" + + "rd na Oras sa Pilipinas\x1dOras sa Tag-init ng Pilipinas\x17Oras sa Phoe" + + "nix Islands!Oras sa Saint Pierre and Miquelon-Standard na Oras sa Saint " + + "Pierre and Miquelon*Daylight Time sa Saint Pierre and Miquelon\x10Oras s" + + "a Pitcairn\x0eOras sa Ponape\x11Oras sa Pyongyang\x0fOras sa Reunion\x0f" + + "Oras sa Rothera\x10Oras sa Sakhalin\x1cStandard na Oras sa Sakhalin\x1cO" + + "ras sa Tag-init ng Sakhalin\x0eOras sa Samara\x17Standard Time sa Samara" + + "\x0fSamara Daylight\x0dOras sa Samoa\x19Standard na Oras sa Samoa\x16Day" + + "light Time sa Samoa\x12Oras sa Seychelles\x1dStandard na Oras sa Singapo" + + "re\x17Oras sa Solomon Islands\x15Oras sa Timog Georgia\x10Oras sa Surina" + + "me\x0dOras sa Syowa\x0eOras sa Tahiti\x0eOras sa Taipei\x1aStandard na O" + + "ras sa Taipei\x17Daylight Time sa Taipei\x12Oras sa Tajikistan\x0fOras s" + + "a Tokelau\x0dOras sa Tonga\x19Standard na Oras sa Tonga\x19Oras sa Tag-i" + + "nit ng Tonga\x0dOras sa Chuuk\x14Oras sa Turkmenistan Standard na Oras s" + + "a Turkmenistan Oras sa Tag-init ng Turkmenistan\x0eOras sa Tuvalu\x0fOra" + + "s sa Uruguay\x1bStandard na Oras sa Uruguay\x1bOras sa Tag-init ng Urugu" + + "ay\x12Oras sa Uzbekistan\x1eStandard na Oras sa Uzbekistan\x1eOras sa Ta" + + "g-init ng Uzbekistan\x0fOras sa Vanuatu\x1bStandard na Oras sa Vanuatu" + + "\x1bOras sa Tag-init ng Vanuatu\x11Oras sa Venezuela\x13Oras sa Vladivos" + + "tok\x1fStandard na Oras sa Vladivostok\x1fOras sa Tag-init ng Vladivosto" + + "k\x11Oras sa Volgograd\x1dStandard na Oras sa Volgograd\x1dOras sa Tag-i" + + "nit ng Volgograd\x0eOras sa Vostok\x13Oras sa Wake Island\x19Oras sa Wal" + + "lis and Futuna\x0fOras sa Yakutsk\x1bStandard na Oras sa Yakutsk\x1bOras" + + " sa Tag-init ng Yakutsk\x15Oras sa Yekaterinburg!Standard na Oras sa Yek" + + "aterinburg!Oras sa Tag-init ng Yekaterinburg\x04Hõo\x04Suba" + +var bucket36 string = "" + // Size: 9993 bytes + "\x12EEEE, dd. MMMM y G\x04sun.\x05mán.\x05týs.\x04mik.\x05hós.\x05frí." + + "\x04ley.\x03su.\x04má.\x04tý.\x03mi.\x04hó.\x03fr.\x03le.\x0asunnudagur" + + "\x0amánadagur\x09týsdagur\x09mikudagur\x09hósdagur\x0dfríggjadagur\x0ble" + + "ygardagur\x03sun\x04mán\x04týs\x03mik\x04hós\x04frí\x03ley\x0a1. ársfj." + + "\x0a2. ársfj.\x0a3. ársfj.\x0a4. ársfj.\x131. ársfjórðingur\x132. ársfjó" + + "rðingur\x133. ársfjórðingur\x134. ársfjórðingur\x0afyri Krist\x1afyri ok" + + "kara tíðarrokning\x0beftir Krist\x15okkara tíðarrokning\x0bf.o.tíðr.\x09" + + "o.tíðr.\x03flt\x02lt\x0etíðarrokning\x03ár\x08í fjør\x06í ár\x0anæsta ár" + + "\x0aum {0} ár\x0f{0} ár síðan\x10ársfjórðingur\x17seinasta ársfjórðing" + + "\x17hendan ársfjórðingin\x15næsta ársfjórðing\x15um {0} ársfjórðing\x17u" + + "m {0} ársfjórðingar\x1a{0} ársfjórðing síðan\x1c{0} ársfjórðingar síðan" + + "\x07ársfj.\x0eum {0} ársfj.\x13{0} ársfj. síðan\x09mánaður\x10seinasta m" + + "ánað\x0fhenda mánaðin\x0enæsta mánað\x0eum {0} mánað\x10um {0} mánaðir" + + "\x13{0} mánað síðan\x15{0} mánaðir síðan\x05mnð.\x0cum {0} mnð.\x11{0} m" + + "nð. síðan\x04vika\x0dseinastu viku\x09hesu viku\x0bnæstu viku\x0bum {0} " + + "viku\x0cum {0} vikur\x10{0} vika síðan\x11{0} vikur síðan\x0fvika nummar" + + " {0}\x03vi.\x0aum {0} vi.\x0f{0} vi. síðan\x09um {0} v.\x0e{0} v. síðan" + + "\x05dagur\x0afyrradagin\x08í gjár\x06í dag\x09í morgin\x0dí ovurmorgin" + + "\x0aum {0} dag\x0cum {0} dagar\x11{0} dagur síðan\x11{0} dagar síðan\x03" + + "da.\x0aum {0} da.\x0f{0} da. síðan\x09um {0} d.\x0e{0} d. síðan\x0dgeran" + + "disdagur\x11seinasta sunnudag\x0fnæsta sunnudag\x19sunnudagin í næstu vi" + + "ku\x0fum {0} sunnudag\x11um {0} sunnudagar\x15{0} sunnudag síðani\x17{0}" + + " sunnudagar síðani\x0dseinasta sun.\x0bnæsta sun.\x13sun. í næstu viku" + + "\x0bum {0} sun.\x11{0} sun. síðani\x0cseinasta su.\x0anæsta su.\x12su. í" + + " næstu viku\x0aum {0} su.\x10{0} su. síðani\x11seinasta mánadag\x0fnæsta" + + " mánadag\x19mánadagin í næstu viku\x0fum {0} mánadag\x11um {0} mánadagar" + + "\x15{0} mánadag síðani\x17{0} mánadagar síðani\x0eseinasta mán.\x0cnæsta" + + " mán.\x14mán. í næstu viku\x0cum {0} mán.\x12{0} mán. síðani\x0dseinasta" + + " má.\x0bnæsta má.\x13má. í næstu viku\x0bum {0} má.\x11{0} má. síðani" + + "\x10seinasta týsdag\x0enæsta týsdag\x18týsdagin í næstu viku\x0eum {0} t" + + "ýsdag\x10um {0} týsdagar\x14{0} týsdag síðani\x16{0} týsdagar síðani" + + "\x0eseinasta týs.\x0cnæsta týs.\x14týs. í næstu viku\x0cum {0} týs.\x12{" + + "0} týs. síðani\x0dseinasta tý.\x0bnæsta tý.\x13tý. í næstu viku\x0bum {0" + + "} tý.\x11{0} tý. síðani\x10seinasta mikudag\x0enæsta mikudag\x18mikudagi" + + "n í næstu viku\x0eum {0} mikudag\x10um {0} mikudagar\x14{0} mikudag síða" + + "ni\x16{0} mikudagar síðani\x0dseinasta mik.\x0bnæsta mik.\x13mik. í næst" + + "u viku\x0bum {0} mik.\x11{0} mik. síðani\x0cseinasta mi.\x0anæsta mi." + + "\x12mi. í næstu viku\x0aum {0} mi.\x10{0} mi. síðani\x10seinasta hósdag" + + "\x0enæsta hósdag\x18hósdagin í næstu viku\x0eum {0} hósdag\x10um {0} hós" + + "dagar\x14{0} hósdag síðani\x16{0} hósdagar síðani\x0eseinasta hós.\x0cnæ" + + "sta hós.\x14hós. í næstu viku\x0cum {0} hós.\x12{0} hós. síðani\x0dseina" + + "sta hó.\x0bnæsta hó.\x13hó. í næstu viku\x0bum {0} hó.\x11{0} hó. síðani" + + "\x14seinasta fríggjadag\x12næsta fríggjadag\x1cfríggjadagin í næstu viku" + + "\x12um {0} fríggjadag\x14um {0} fríggjadagar\x18{0} fríggjadag síðani" + + "\x1a{0} fríggjadagar síðani\x0eseinasta frí.\x0cnæsta frí.\x14frí. í næs" + + "tu viku\x0cum {0} frí.\x12{0} frí. síðani\x0cseinasta fr.\x0anæsta fr." + + "\x12fr. í næstu viku\x0aum {0} fr.\x10{0} fr. síðani\x12seinasta leygard" + + "ag\x10næsta leygardag\x1aleygardagin í næstu viku\x10um {0} leygardag" + + "\x12um {0} leygardagar\x16{0} leygardag síðani\x18{0} leygardagar síðani" + + "\x0dseinasta ley.\x0bnæsta ley.\x13ley. í næstu viku\x0bum {0} ley.\x11{" + + "0} ley. síðani\x0cseinasta le.\x0anæsta le.\x12le. í næstu viku\x0aum {0" + + "} le.\x10{0} le. síðani\x05tími\x0dhendan tíman\x0cum {0} tíma\x0dum {0}" + + " tímar\x11{0} tími síðan\x12{0} tímar síðan\x09um {0} t.\x0e{0} t. síðan" + + "\x08minuttur\x0fhendan minuttin\x0dum {0} minutt\x0fum {0} minuttir\x12{" + + "0} minutt síðan\x14{0} minuttir síðan\x0bum {0} min.\x10{0} min. síðan" + + "\x09um {0} m.\x0e{0} m. síðan\x03nú\x0dum {0} sekund\x12{0} sekund síðan" + + "\x0bum {0} sek.\x10{0} sek. síðan\x09um {0} s.\x0e{0} s. síðan\x0btíðarø" + + "ki\x09{0} tíð\x0f{0} summartíð\x10{0} vanlig tíð\x1bStóra Bretland summa" + + "rtíð\x12Írsk vanlig tíð\x10Afganistan tíð\x10Miðafrika tíð\x12Eysturafri" + + "ka tíð\x19Suðurafrika vanlig tíð\x12Vesturafrika tíð\x19Vesturafrika van" + + "lig tíð\x18Vesturafrika summartíð\x0cAlaska tíð\x13Alaska vanlig tíð\x12" + + "Alaska summartíð\x0dAmasona tíð\x14Amasona vanlig tíð\x13Amasona summart" + + "íð\x0dCentral tíð\x14Central vanlig tíð\x13Central summartíð\x0dEastern" + + " tíð\x14Eastern vanlig tíð\x13Eastern summartíð\x0eMountain tíð\x15Mount" + + "ain vanlig tíð\x14Mountain summartíð\x0dPacific tíð\x14Pacific vanlig tí" + + "ð\x13Pacific summartíð\x0aApia tíð\x11Apia vanlig tíð\x10Apia summartíð" + + "\x0dArabisk tíð\x14Arabisk vanlig tíð\x13Arabisk summartíð\x0fArgentina " + + "tíð\x16Argentina vanlig tíð\x15Argentina summartíð\x16Vestur Argentina t" + + "íð\x1dVestur Argentina vanlig tíð\x1cVestur Argentina summartíð\x0dArme" + + "nia tíð\x14Armenia vanlig tíð\x13Armenia summartíð\x0eAtlantic tíð\x15At" + + "lantic vanlig tíð\x14Atlantic summartíð\x14mið Avstralia tíð\x1bmið Avst" + + "ralia vanlig tíð\x1amið Avstralia summartíð\x1amiðvestur Avstralia tíð!m" + + "iðvestur Avstralia vanlig tíð miðvestur Avstralia summartíð\x16eystur Av" + + "stralia tíð\x1deystur Avstralia vanlig tíð\x1ceystur Avstralia summartíð" + + "\x16vestur Avstralia tíð\x1dvestur Avstralia vanlig tíð\x1cvestur Avstra" + + "lia summartíð\x10Aserbadjan tíð\x17Aserbadjan vanlig tíð\x16Aserbadjan s" + + "ummartíð\x0fAzorurnar tíð\x16Azorurnar vanlig tíð\x15Azorurnar summartíð" + + "\x10Bangladesj tíð\x17Bangladesj vanlig tíð\x16Bangladesj summartíð\x0bB" + + "utan tíð\x0dBolivia tíð\x0eBrasilia tíð\x15Brasilia vanlig tíð\x14Brasil" + + "ia summartíð\x17Brunei Darussalam tíð\x18Grønhøvdaoyggjar tíð\x1fGrønhøv" + + "daoyggjar vanlig tíð\x1eGrønhøvdaoyggjar summartíð\x15Chamorro vanlig tí" + + "ð\x0dChatham tíð\x14Chatham vanlig tíð\x13Chatham summartíð\x0aKili tíð" + + "\x11Kili vanlig tíð\x10Kili summartíð\x0aKina tíð\x11Kina vanlig tíð\x10" + + "Kina summartíð\x10Choibalsan tíð\x17Choibalsan vanlig tíð\x16Choibalsan " + + "summartíð\x10Jólaoyggj tíð\x12Kokosoyggjar tíð\x0eKolombia tíð\x15Kolomb" + + "ia vanlig tíð\x14Kolombia summartíð\x12Cooksoyggjar tíð\x19Cooksoyggjar " + + "vanlig tíð\x18Cooksoyggjar summartíð\x0aCuba tíð\x11Cuba vanlig tíð\x10C" + + "uba summartíð\x0bDavis tíð\x18Dumont-d’Urville tíð\x11Eysturtimor tíð" + + "\x12Páskaoyggin tíð\x19Páskaoyggin vanlig tíð\x18Páskaoyggin summartíð" + + "\x0dEkvador tíð\x10Miðevropa tíð\x17Miðevropa vanlig tíð\x16Miðevropa su" + + "mmartíð\x12Eysturevropa tíð\x19Eysturevropa vanlig tíð\x18Eysturevropa s" + + "ummartíð\x19longri Eysturevropa tíð\x12Vesturevropa tíð\x19Vesturevropa " + + "vanlig tíð\x18Vesturevropa summartíð\x16Falklandsoyggjar tíð\x1dFalkland" + + "soyggjar vanlig tíð\x1cFalklandsoyggjar summartíð\x0aFiji tíð\x11Fiji va" + + "nlig tíð\x10Fiji summartíð\x14Franska Gujana tíð,Fronsku sunnaru landaøk" + + "i og Antarktis tíð\x0fGalapagos tíð\x0dGambier tíð\x0dGeorgia tíð\x14Geo" + + "rgia vanlig tíð\x13Georgia summartíð\x14Gilbertoyggjar tíð\x14Greenwich " + + "Mean tíð\x18Eystur grønlendsk tíð\x1fEystur grønlendsk vanlig tíð\x1eEys" + + "tur grønlendsk summartíð\x18Vestur grønlendsk tíð\x1fVestur grønlendsk v" + + "anlig tíð\x1eVestur grønlendsk summartíð\x11Gulf vanlig tíð\x0cGujana tí" + + "ð\x15Hawaii-Aleutian tíð\x1cHawaii-Aleutian vanlig tíð\x1bHawaii-Aleuti" + + "an summartíð\x0fHong Kong tíð\x16Hong Kong vanlig tíð\x15Hong Kong summa" + + "rtíð\x0aHovd tíð\x11Hovd vanlig tíð\x10Hovd summartíð\x0bIndia tíð\x0eIn" + + "diahav tíð\x0eIndokina tíð\x14Mið Indonesia tíð\x16Eystur Indonesia tíð" + + "\x16Vestur Indonesia tíð\x0aIran tíð\x11Iran vanlig tíð\x10Iran summartí" + + "ð\x0dIrkutsk tíð\x14Irkutsk vanlig tíð\x13Irkutsk summartíð\x0dÍsrael t" + + "íð\x14Ísrael vanlig tíð\x13Ísrael summartíð\x0bJapan tíð\x12Japan vanli" + + "g tíð\x11Japan summartíð\x16Eystur Kasakstan tíð\x16Vestur Kasakstan tíð" + + "\x0bKorea tíð\x12Korea vanlig tíð\x11Korea summartíð\x0cKosrae tíð\x11Kr" + + "asnoyarsk tíð\x18Krasnoyarsk vanlig tíð\x17Krasnoyarsk summartíð\x0eKirg" + + "isia tíð\x11Lineoyggjar tíð\x0fLord Howe tíð\x16Lord Howe vanlig tíð\x15" + + "Lord Howe summartíð\x15Macquariesoyggj tíð\x0dMagadan tíð\x14Magadan van" + + "lig tíð\x13Magadan summartíð\x0eMalaisia tíð\x13Maldivoyggjar tíð\x0fMar" + + "quesas tíð\x15Marshalloyggjar tíð\x0fMóritius tíð\x16Móritius vanlig tíð" + + "\x15Móritius summartíð\x0cMawson tíð\x16Northwest Mexico tíð\x1dNorthwes" + + "t Mexico vanlig tíð\x1cNorthwest Mexico summartíð\x15Mexican Pacific tíð" + + "\x1cMexican Pacific vanlig tíð\x1bMexican Pacific summartíð\x10Ulan Bato" + + "r tíð\x17Ulan Bator vanlig tíð\x16Ulan Bator summartíð\x0cMoskva tíð\x13" + + "Moskva vanlig tíð\x12Moskva summartíð\x15Myanmar (Burma) tíð\x0bNauru tí" + + "ð\x0bNepal tíð\x13Nýkaledónia tíð\x1aNýkaledónia vanlig tíð\x19Nýkaledó" + + "nia summartíð\x10Nýsæland tíð\x17Nýsæland vanlig tíð\x16Nýsæland summart" + + "íð\x12Newfoundland tíð\x19Newfoundland vanlig tíð\x18Newfoundland summa" + + "rtíð\x0aNiue tíð\x13Norfolksoyggj tíð\x19Fernando de Noronha tíð Fernand" + + "o de Noronha vanlig tíð\x1fFernando de Noronha summartíð\x11Novosibirsk " + + "tíð\x18Novosibirsk vanlig tíð\x17Novosibirsk summartíð\x0aOmsk tíð\x11Om" + + "sk vanlig tíð\x10Omsk summartíð\x0ePakistan tíð\x15Pakistan vanlig tíð" + + "\x14Pakistan summartíð\x0bPalau tíð\x15Papua Nýguinea tíð\x0eParaguai tí" + + "ð\x15Paraguai vanlig tíð\x14Paraguai summartíð\x0aPeru tíð\x11Peru vanl" + + "ig tíð\x10Peru summartíð\x13Filipsoyggjar tíð\x1aFilipsoyggjar vanlig tí" + + "ð\x19Filipsoyggjar summartíð\x14Phoenixoyggjar tíð\x1bSt. Pierre & Miqu" + + "elon tíð\x22St. Pierre & Miquelon vanlig tíð!St. Pierre & Miquelon summa" + + "rtíð\x15Pitcairnoyggjar tíð\x0cPonape tíð\x0fPyongyang tíð\x0eRéunion tí" + + "ð\x0dRothera tíð\x0eSakhalin tíð\x15Sakhalin vanlig tíð\x14Sakhalin sum" + + "martíð\x0bSamoa tíð\x12Samoa vanlig tíð\x11Samoa summartíð\x15Seyskelloy" + + "ggjar tíð\x0eSingapor tíð\x14Salomonoyggjar tíð\x1aSuðurgeorgiaoyggjar t" + + "íð\x0dSurinam tíð\x0bSyowa tíð\x0cTahiti tíð\x0cTaipei tíð\x13Taipei va" + + "nlig tíð\x12Taipei summartíð\x12Tadsjikistan tíð\x0dTokelau tíð\x0bTonga" + + " tíð\x12Tonga vanlig tíð\x11Tonga summartíð\x0bChuuk tíð\x12Turkmenistan" + + " tíð\x19Turkmenistan vanlig tíð\x18Turkmenistan summartíð\x0cTuvalu tíð" + + "\x0dUruguai tíð\x14Uruguai vanlig tíð\x13Uruguai summartíð\x10Usbekistan" + + " tíð\x17Usbekistan vanlig tíð\x16Usbekistan summartíð\x0dVanuatu tíð\x14" + + "Vanuatu vanlig tíð\x13Vanuatu summartíð\x0fVenesuela tíð\x11Vladivostok " + + "tíð\x18Vladivostok vanlig tíð\x17Vladivostok summartíð\x0fVolgograd tíð" + + "\x16Volgograd vanlig tíð\x15Volgograd summartíð\x0cVostok tíð\x0fWakeoyg" + + "gj tíð\x1eWallis- og Futunaoyggjar tíð\x0dYakutsk tíð\x14Yakutsk vanlig " + + "tíð\x13Yakutsk summartíð\x13Yekaterinburg tíð\x1aYekaterinburg vanlig tí" + + "ð\x19Yekaterinburg summartíð\x05þri.\x05mið.\x04fim.\x05fös.\x04lau." + + "\x04þr.\x03fi.\x04fö.\x03la.\x0amánudagur\x0dþriðjudagur\x0dmiðvikudagur" + + "\x0bfimmtudagur\x0bföstudagur\x0blaugardagur\x03mu.\x03tu.\x03ve.\x04dö." + + "\x03fr.\x04zä." + +var bucket37 string = "" + // Size: 14561 bytes + "\x0fère bouddhiste\x07ère b.\x04E.B.\x051yuè\x052yuè\x053yuè\x054yuè\x05" + + "5yuè\x056yuè\x057yuè\x058yuè\x059yuè\x0610yuè\x0611yuè\x0612yuè\x0azhēng" + + "yuè\x07èryuè\x08sānyuè\x07sìyuè\x07wǔyuè\x08liùyuè\x07qīyuè\x07bāyuè\x08" + + "jiǔyuè\x08shíyuè\x0bshíyīyuè\x0eshí’èryuè\x0dEEEE d MMMM U\x04tout\x05bâ" + + "b.\x05hât.\x04kya.\x05toub.\x05amsh.\x06barma.\x06barmo.\x05bash.\x07ba’" + + "o.\x05abî.\x04mis.\x05al-n.\x06bâbâ\x07hâtour\x05kyakh\x06toubah\x07amsh" + + "îr\x09barmahât\x09barmoudah\x07bashans\x0aba’ounah\x05abîb\x05misra\x07" + + "al-nasi\x11avant Dioclétien\x12après Dioclétien\x06av. D.\x06ap. D.\x05m" + + "äs.\x04teq.\x04hed.\x04tah.\x03ter\x05yäk.\x05mäg.\x04miy.\x04gue.\x05s" + + "än.\x04ham.\x05näh.\x04pag.\x0bmäskäräm\x06teqemt\x05hedar\x07tahesas" + + "\x08yäkatit\x08mägabit\x07miyazya\x07guenbot\x06säné\x06hamlé\x08nähasé" + + "\x08pagumén\x15avant l’Incarnation\x16après l’Incarnation\x08av. Inc." + + "\x08ap. Inc.\x0c{1} 'à' {0}\x05janv.\x06févr.\x04mars\x04avr.\x03mai\x04" + + "juin\x05juil.\x05août\x05sept.\x04oct.\x04nov.\x05déc.\x07janvier\x08fév" + + "rier\x05avril\x07juillet\x09septembre\x07octobre\x08novembre\x09décembre" + + "\x04dim.\x04lun.\x04mar.\x04mer.\x04jeu.\x04ven.\x04sam.\x08dimanche\x05" + + "lundi\x05mardi\x08mercredi\x05jeudi\x08vendredi\x06samedi\x06minuit\x04m" + + "idi\x05ap.m.\x04soir\x04nuit\x08du matin\x12de l’après-midi\x07du soir" + + "\x07de nuit\x05matin\x0baprès-midi\x13avant Jésus-Christ\x16avant l’ère " + + "commune\x14après Jésus-Christ\x13de l’ère commune\x09av. J.-C.\x09ap. J." + + "-C.\x04tis.\x04hes.\x04kis.\x05téb.\x06sché.\x04ad.I\x04adar\x05ad.II" + + "\x04nis.\x04iyar\x04siv.\x04tam.\x02ab\x04ell.\x07Tisseri\x06Hesvan\x06K" + + "islev\x07Tébeth\x08Schébat\x06Adar I\x04Adar\x07Adar II\x06Nissan\x04Iya" + + "r\x05Sivan\x06Tamouz\x02Ab\x06Elloul\x0aAnno Mundi\x05chai.\x04vai.\x05j" + + "yai.\x06āsha.\x06shrā.\x05bhā.\x06āshw.\x05kār.\x05mār.\x04pau.\x05māgh" + + "\x06phāl.\x07chaitra\x09vaishākh\x09jyaishtha\x09āshādha\x09shrāvana\x0a" + + "bhādrapad\x07āshwin\x07kārtik\x0emārgashīrsha\x05paush\x08phālgun\x04SAK" + + "A\x05mouh.\x04saf.\x08rab. aw.\x08rab. th.\x0ajoum. oul.\x0ajoum. tha." + + "\x04raj.\x05chaa.\x04ram.\x05chaw.\x08dhou. q.\x08dhou. h.\x09mouharram" + + "\x05safar\x0drabia al awal\x0frabia ath-thani\x0fjoumada al oula\x12joum" + + "ada ath-thania\x05rajab\x08chaabane\x07ramadan\x07chawwal\x0ddhou al qi`" + + "da\x0ddhou al-hijja\x09joum. ou.\x09joum. th.\x09dhou. qi.\x09dhou. hi." + + "\x09avant RdC\x03RdC\x04ère\x06année\x14l’année dernière\x0ccette année" + + "\x14l’année prochaine\x0bdans {0} an\x0cdans {0} ans\x0dil y a {0} an" + + "\x0eil y a {0} ans\x02an\x0adans {0} a\x0cil y a {0} a\x06+{0} a\x14le t" + + "rimestre dernier\x0cce trimestre\x15le trimestre prochain\x12dans {0} tr" + + "imestre\x13dans {0} trimestres\x14il y a {0} trimestre\x15il y a {0} tri" + + "mestres\x0ele trim. dern.\x08ce trim.\x0fle trim. proch.\x0edans {0} tri" + + "m.\x10il y a {0} trim.\x09trim dern\x07ce trim\x0atrim proch\x04mois\x0f" + + "le mois dernier\x0ace mois-ci\x10le mois prochain\x0ddans {0} mois\x0fil" + + " y a {0} mois\x0bdans {0} m.\x0dil y a {0} m.\x07+{0} m.\x07-{0} m.\x07s" + + "emaine\x14la semaine dernière\x0dcette semaine\x14la semaine prochaine" + + "\x10dans {0} semaine\x11dans {0} semaines\x12il y a {0} semaine\x13il y " + + "a {0} semaines\x11la semaine du {0}\x0ddans {0} sem.\x0fil y a {0} sem." + + "\x0bsem. du {0}\x04jour\x0aavant-hier\x04hier\x0daujourd’hui\x06demain" + + "\x0daprès-demain\x0ddans {0} jour\x0edans {0} jours\x0fil y a {0} jour" + + "\x10il y a {0} jours\x0bdans {0}\u00a0j\x0dil y a {0}\u00a0j\x06+{0} j" + + "\x06-{0} j\x12jour de la semaine\x10dimanche dernier\x0bce dimanche\x11d" + + "imanche prochain\x11dans {0} dimanche\x12dans {0} dimanches\x13il y a {0" + + "} dimanche\x14il y a {0} dimanches\x0cdim. dernier\x07ce dim.\x0ddim. pr" + + "ochain\x0ddans {0} dim.\x0fil y a {0} dim.\x08dim dern\x06ce dim\x09dim " + + "proch\x0bdans {0}dim\x0dil y a {0}dim\x0dlundi dernier\x08ce lundi\x0elu" + + "ndi prochain\x0edans {0} lundi\x0fdans {0} lundis\x10il y a {0} lundi" + + "\x11il y a {0} lundis\x0clun. dernier\x07ce lun.\x0dlun. prochain\x0ddan" + + "s {0} lun.\x0fil y a {0} lun.\x08lun dern\x06ce lun\x09lun proch\x0bdans" + + " {0}lun\x0dil y a {0}lun\x0dmardi dernier\x08ce mardi\x0emardi prochain" + + "\x0edans {0} mardi\x0fdans {0} mardis\x10il y a {0} mardi\x11il y a {0} " + + "mardis\x0cmar. dernier\x07ce mar.\x0dmar. prochain\x0ddans {0} mar.\x0fi" + + "l y a {0} mar.\x08mar dern\x06ce mar\x09mar proch\x0bdans {0}mar\x0dil y" + + " a {0}mar\x10mercredi dernier\x0bce mercredi\x11mercredi prochain\x11dan" + + "s {0} mercredi\x12dans {0} mercredis\x13il y a {0} mercredi\x14il y a {0" + + "} mercredis\x0cmer. dernier\x07ce mer.\x0dmer. prochain\x0ddans {0} mer." + + "\x0fil y a {0} mer.\x08mer dern\x06ce mer\x09mer proch\x0bdans {0}mer" + + "\x0dil y a {0}mer\x0djeudi dernier\x08ce jeudi\x0ejeudi prochain\x0edans" + + " {0} jeudi\x0fdans {0} jeudis\x10il y a {0} jeudi\x11il y a {0} jeudis" + + "\x0cjeu. dernier\x07ce jeu.\x0djeu. prochain\x0ddans {0} jeu.\x0fil y a " + + "{0} jeu.\x08jeu dern\x06ce jeu\x09jeu proch\x0bdans {0}jeu\x0dil y a {0}" + + "jeu\x10vendredi dernier\x0bce vendredi\x11vendredi prochain\x11dans {0} " + + "vendredi\x12dans {0} vendredis\x13il y a {0} vendredi\x14il y a {0} vend" + + "redis\x0cven. dernier\x07ce ven.\x0dven. prochain\x0ddans {0} ven.\x0fil" + + " y a {0} ven.\x08ven dern\x06ce ven\x09ven proch\x0bdans {0}ven\x0dil y " + + "a {0}ven\x0esamedi dernier\x09ce samedi\x0fsamedi prochain\x0fdans {0} s" + + "amedi\x10dans {0} samedis\x11il y a {0} samedi\x12il y a {0} samedis\x0c" + + "sam. dernier\x07ce sam.\x0dsam. prochain\x0ddans {0} sam.\x08sam dern" + + "\x06ce sam\x09sam proch\x0bdans {0}sam\x0dil y a {0}sam\x06cadran\x05heu" + + "re\x0ecette heure-ci\x0edans {0} heure\x0fdans {0} heures\x10il y a {0} " + + "heure\x11il y a {0} heures\x07cette h\x0bdans {0}\u00a0h\x0dil y a {0}" + + "\u00a0h\x09dans {0}h\x0bil y a {0}h\x0fcette minute-ci\x0fdans {0} minut" + + "e\x10dans {0} minutes\x11il y a {0} minute\x12il y a {0} minutes\x09cett" + + "e min\x0ddans {0}\u00a0min\x0fil y a {0}\u00a0min\x0dil y a {0}min\x08-{" + + "0} min\x07seconde\x0amaintenant\x10dans {0} seconde\x11dans {0} secondes" + + "\x12il y a {0} seconde\x13il y a {0} secondes\x0bdans {0}\u00a0s\x0dil y" + + " a {0}\u00a0s\x0efuseau horaire\x0bheure : {0}\x15{0} (heure d’été)\x14{" + + "0} (heure standard)\x1aTemps universel coordonné\x1bheure d’été britanni" + + "que\x1aheure d’été irlandaise\x11heure de l’Acre\x19heure normale de l’A" + + "cre\x1bheure d’été de l’Acre\x18heure de l’Afghanistan\x22heure normale " + + "d’Afrique centrale$heure normale d’Afrique de l’Est&heure normale d’Afri" + + "que méridionale\x1eheure d’Afrique de l’Ouest&heure normale d’Afrique de" + + " l’Ouest(heure d’été d’Afrique de l’Ouest\x13heure de l’Alaska\x1bheure " + + "normale de l’Alaska\x1dheure d’été de l’Alaska\x03HAK\x04HNAK\x04HEAK" + + "\x12heure d’Alma Ata\x1aheure normale d’Alma Ata\x1cheure d’été d’Alma A" + + "ta\x15heure de l’Amazonie\x1dheure normale de l’Amazonie\x1fheure d’été " + + "de l’Amazonie\x1fheure du centre nord-américain'heure normale du centre " + + "nord-américain\x19heure d’été du Centre\x02HC\x03HNC\x03HEC heure de l’E" + + "st nord-américain(heure normale de l’Est nord-américain\x1aheure d’été d" + + "e l’Est\x02HE\x03HNE\x03HEE\x13heure des Rocheuses\x1bheure normale des " + + "Rocheuses\x1dheure d’été des Rocheuses\x02HR\x03HNR\x03HER\x22heure du P" + + "acifique nord-américain*heure normale du Pacifique nord-américain\x1cheu" + + "re d’été du Pacifique\x02HP\x03HNP\x03HEP\x10heure d’Anadyr\x18heure nor" + + "male d’Anadyr\x1aheure d’été d’Anadyr\x0eheure d’Apia\x16heure normale d" + + "’Apia\x18heure d’été d’Apia\x10heure d’Aktaou\x18heure normale d’Aktao" + + "u\x1aheure d’été d’Aktaou\x11heure d’Aqtöbe\x19heure normale d’Aqtöbe" + + "\x1bheure d’été d’Aqtöbe\x13heure de l’Arabie\x1bheure normale de l’Arab" + + "ie\x1dheure d’été de l’Arabie\x16heure de l’Argentine\x1bheure normale d" + + "’Argentine heure d’été de l’Argentine\x1bheure de l’Ouest argentin#heu" + + "re normale de l’Ouest argentin%heure d’été de l’Ouest argentin\x15heure " + + "de l’Arménie\x1dheure normale de l’Arménie\x1cheure d’été d’Arménie\x17h" + + "eure de l’Atlantique\x1fheure normale de l’Atlantique!heure d’été de l’A" + + "tlantique\x02HA\x03HNA\x03HEA heure du centre de l’Australie(heure norma" + + "le du centre de l’Australie*heure d’été du centre de l’Australie&heure d" + + "u centre-ouest de l’Australie.heure normale du centre-ouest de l’Austral" + + "ie0heure d’été du centre-ouest de l’Australie!heure de l’Est de l’Austra" + + "lie)heure normale de l’Est de l’Australie+heure d’été de l’Est de l’Aust" + + "ralie#heure de l’Ouest de l’Australie+heure normale de l’Ouest de l’Aust" + + "ralie-heure d’été de l’Ouest de l’Australie\x19heure de l’Azerbaïdjan!he" + + "ure normale de l’Azerbaïdjan heure d’été d’Azerbaïdjan\x11heure des Açor" + + "es\x19heure normale des Açores\x1bheure d’été des Açores\x13heure du Ban" + + "gladesh\x1bheure normale du Bangladesh\x1dheure d’été du Bangladesh\x10h" + + "eure du Bhoutan\x10heure de Bolivie\x11heure de Brasilia\x19heure normal" + + "e de Brasilia\x1bheure d’été de Brasilia\x10heure du Brunéi\x11heure du " + + "Cap-Vert\x19heure normale du Cap-Vert\x1bheure d’été du Cap-Vert\x12heur" + + "e des Chamorro\x17heure des îles Chatham\x1fheure normale des îles Chath" + + "am!heure d’été des îles Chatham\x0eheure du Chili\x16heure normale du Ch" + + "ili\x18heure d’été du Chili\x11heure de la Chine\x19heure normale de la " + + "Chine\x18heure d’été de Chine\x13heure de Choibalsan\x1bheure normale de" + + " Choibalsan\x1dheure d’été de Choibalsan\x1bheure de l’île Christmas\x15" + + "heure des îles Cocos\x11heure de Colombie\x19heure normale de Colombie" + + "\x1bheure d’été de Colombie\x14heure des îles Cook\x1cheure normale des " + + "îles Cook\x1eheure d’été des îles Cook\x0dheure de Cuba\x15heure normal" + + "e de Cuba\x17heure d’été de Cuba\x03HCU\x04HNCU\x04HECU\x0eheure de Davi" + + "s\x1bheure de Dumont-d’Urville\x17heure du Timor oriental\x1cheure de l’" + + "île de Pâques$heure normale de l’île de Pâques&heure d’été de l’île de " + + "Pâques\x16heure de l’Équateur\x19heure d’Europe centrale!heure normale d" + + "’Europe centrale#heure d’été d’Europe centrale\x1bheure d’Europe de l’" + + "Est#heure normale d’Europe de l’Est%heure d’été d’Europe de l’Est\x14heu" + + "re de Kaliningrad\x1dheure d’Europe de l’Ouest%heure normale d’Europe de" + + " l’Ouest'heure d’été d’Europe de l’Ouest\x19heure des îles Malouines!heu" + + "re normale des îles Malouines#heure d’été des îles Malouines\x15heure de" + + "s îles Fidji\x1dheure normale des îles Fidji\x1fheure d’été des îles Fid" + + "ji\x1dheure de la Guyane française6heure des Terres australes et antarct" + + "iques françaises\x1aheure des îles Galápagos\x17heure des îles Gambier" + + "\x14heure de la Géorgie\x1cheure normale de la Géorgie\x1bheure d’été de" + + " Géorgie\x17heure des îles Gilbert\x1aheure moyenne de Greenwich\x1dheur" + + "e de l’Est du Groenland%heure normale de l’Est du Groenland'heure d’été " + + "de l’Est du Groenland\x03HEG\x04HNEG\x04HEEG\x1fheure de l’Ouest du Groe" + + "nland'heure normale de l’Ouest du Groenland)heure d’été de l’Ouest du Gr" + + "oenland\x03HOG\x04HNOG\x04HEOG\x0dheure de Guam\x0eheure du Golfe\x0fheu" + + "re du Guyana heure d’Hawaii - Aléoutiennes(heure normale d’Hawaii - Aléo" + + "utiennes*heure d’été d’Hawaii - Aléoutiennes\x03HHA\x04HNHA\x04HEHA\x12h" + + "eure de Hong Kong\x1aheure normale de Hong Kong\x1cheure d’été de Hong K" + + "ong\x0dheure de Hovd\x15heure normale de Hovd\x17heure d’été de Hovd\x11" + + "heure de l’Inde\x1aheure de l’Océan Indien\x13heure d’Indochine\x1bheure" + + " du Centre indonésien\x1cheure de l’Est indonésien\x1eheure de l’Ouest i" + + "ndonésien\x11heure de l’Iran\x16heure normale d’Iran\x18heure d’été d’Ir" + + "an\x12heure d’Irkoutsk\x1aheure normale d’Irkoutsk\x1cheure d’été d’Irko" + + "utsk\x11heure d’Israël\x19heure normale d’Israël\x1bheure d’été d’Israël" + + "\x0eheure du Japon\x16heure normale du Japon\x18heure d’été du Japon!heu" + + "re de Petropavlovsk-Kamchatski)heure normale de Petropavlovsk-Kamchatski" + + "+heure d’été de Petropavlovsk-Kamchatski\x1eheure de l’Est du Kazakhstan" + + " heure de l’Ouest du Kazakhstan\x12heure de la Corée\x1aheure normale de" + + " la Corée\x19heure d’été de Corée\x0fheure de Kosrae\x15heure de Krasnoï" + + "arsk\x1dheure normale de Krasnoïarsk\x1fheure d’été de Krasnoïarsk\x15he" + + "ure du Kirghizistan\x0eheure de Lanka\x1bheure des îles de la Ligne\x12h" + + "eure de Lord Howe\x1aheure normale de Lord Howe\x1cheure d’été de Lord H" + + "owe\x0eheure de Macao\x16heure normale de Macao\x18heure d’été de Macao" + + "\x1bheure de l’île Macquarie\x10heure de Magadan\x18heure normale de Mag" + + "adan\x1aheure d’été de Magadan\x14heure de la Malaisie\x12heure des Mald" + + "ives\x19heure des îles Marquises\x18heure des îles Marshall\x10heure de " + + "Maurice\x18heure normale de Maurice\x1aheure d’été de Maurice\x0fheure d" + + "e Mawson\x1eheure du Nord-Ouest du Mexique&heure normale du Nord-Ouest d" + + "u Mexique(heure d’été du Nord-Ouest du Mexique\x05HNOMX\x06HNNOMX\x06HEN" + + "OMX\x1bheure du Pacifique mexicain#heure normale du Pacifique mexicain%h" + + "eure d’été du Pacifique mexicain\x04HPMX\x05HNPMX\x05HEPMX\x15heure d’Ou" + + "lan-Bator\x1dheure normale d’Oulan-Bator\x1fheure d’été d’Oulan-Bator" + + "\x0fheure de Moscou\x17heure normale de Moscou\x19heure d’été de Moscou" + + "\x10heure du Myanmar\x0eheure de Nauru\x0fheure du Népal\x1fheure de la " + + "Nouvelle-Calédonie'heure normale de la Nouvelle-Calédonie&heure d’été de" + + " Nouvelle-Calédonie\x1dheure de la Nouvelle-Zélande%heure normale de la " + + "Nouvelle-Zélande'heure d’été de la Nouvelle-Zélande\x14heure de Terre-Ne" + + "uve\x1cheure normale de Terre-Neuve\x1eheure d’été de Terre-Neuve\x03HTN" + + "\x04HNTN\x04HETN\x0fheure de Nioué\x19heure de l’île Norfolk\x1cheure de" + + " Fernando de Noronha$heure normale de Fernando de Noronha&heure d’été de" + + " Fernando de Noronha!heure des îles Mariannes du Nord\x15heure de Novoss" + + "ibirsk\x1dheure normale de Novossibirsk\x1fheure d’été de Novossibirsk" + + "\x0dheure de Omsk\x15heure normale de Omsk\x17heure d’été de Omsk\x11heu" + + "re du Pakistan\x19heure normale du Pakistan\x1bheure d’été du Pakistan" + + "\x10heure des Palaos&heure de la Papouasie-Nouvelle-Guinée\x11heure du P" + + "araguay\x19heure normale du Paraguay\x1bheure d’été du Paraguay\x0fheure" + + " du Pérou\x17heure normale du Pérou\x19heure d’été du Pérou\x15heure des" + + " Philippines\x1dheure normale des Philippines\x1fheure d’été des Philipp" + + "ines\x17heure des îles Phoenix!heure de Saint-Pierre-et-Miquelon)heure n" + + "ormale de Saint-Pierre-et-Miquelon+heure d’été de Saint-Pierre-et-Miquel" + + "on\x03HPM\x04HNPM\x04HEPM\x18heure des îles Pitcairn\x1cheure de l’île d" + + "e Pohnpei\x12heure de Pyongyang\x14heure de La Réunion\x10heure de Rothe" + + "ra\x12heure de Sakhaline\x1aheure normale de Sakhaline\x1cheure d’été de" + + " Sakhaline\x0fheure de Samara\x17heure normale de Samara\x19heure d’été " + + "de Samara\x0fheure des Samoa\x17heure normale des Samoa\x19heure d’été d" + + "es Samoa\x14heure des Seychelles\x12heure de Singapour\x17heure des îles" + + " Salomon\x18heure de Géorgie du Sud\x11heure du Suriname\x0eheure de Syo" + + "wa\x0fheure de Tahiti\x0fheure de Taipei\x17heure normale de Taipei\x19h" + + "eure d’été de Taipei\x14heure du Tadjikistan\x10heure de Tokelau\x0fheur" + + "e des Tonga\x17heure normale des Tonga\x18heure d’été de Tonga\x0eheure " + + "de Chuuk\x16heure du Turkménistan\x1eheure normale du Turkménistan heure" + + " d’été du Turkménistan\x10heure des Tuvalu\x14heure de l’Uruguay\x1cheur" + + "e normale de l’Uruguay\x1eheure d’été de l’Uruguay\x19heure de l’Ouzbéki" + + "stan!heure normale de l’Ouzbékistan#heure d’été de l’Ouzbékistan\x10heur" + + "e du Vanuatu\x18heure normale du Vanuatu\x1aheure d’été de Vanuatu\x12he" + + "ure du Venezuela\x14heure de Vladivostok\x1cheure normale de Vladivostok" + + "\x1eheure d’été de Vladivostok\x12heure de Volgograd\x1aheure normale de" + + " Volgograd\x1cheure d’été de Volgograd\x0fheure de Vostok\x16heure de l’" + + "île Wake\x19heure de Wallis-et-Futuna\x11heure de Iakoutsk\x19heure nor" + + "male de Iakoutsk\x1bheure d’été de Iakoutsk\x17heure d’Ekaterinbourg\x1f" + + "heure normale d’Ekaterinbourg!heure d’été d’Ekaterinbourg\x06juill.\x0fc" + + "e trimestre-ci\x1aheure d’Afrique centrale\x1bHeure d’Afrique orientale " + + "heure normale d’Afrique du Sud\x0fheure du Centre\x17heure normale du Ce" + + "ntre\x10heure de l’Est\x18heure normale de l’Est\x12heure du Pacifique" + + "\x1aheure normale du Pacifique\x1fheure normale des Îles Chatham\x0eheur" + + "e de Chine\x16heure normale de Chine\x1aheure de Guyane française\x1eheu" + + "re d’Hawaï-Aléoutiennes&heure normale d’Hawaï-Aléoutiennes\x02HT\x03HNT" + + "\x0eheure d’Omsk\x16heure normale d’Omsk\x14heure de la Réunion\x05febr." + + "\x05marts\x04apr.\x05maijs\x05jūn.\x05jūl.\x04aug.\x05sept.\x04okt.\x04n" + + "ov.\x04dec.\x05marts\x05maijs\x04baba\x05hator\x05kiahk\x04toba\x06amshi" + + "r\x08baramhat\x09baramouda\x05paona\x04epep\x05mesra\x05nasie\x08vaisakh" + + "a\x08jyaistha\x06asadha\x07sravana\x06bhadra\x06asvina\x07kartika\x0aagr" + + "ahayana\x05pausa\x05magha\x08phalguna\x05hedar\x03ter" + +var bucket38 string = "" + // Size: 13793 bytes + "\x1aH 'h' mm 'min' ss 's' zzzz\x0eyy-MM-dd GGGGG\x07du mat.\x1aavant l’è" + + "re chrétienne\x17de l’ère chrétienne\x09HH 'h' mm\x0dy-MM-dd GGGGG\x0cDa" + + "ns {0}\u00a0an\x0dDans {0}\u00a0ans\x0eIl y a {0}\u00a0an\x0fIl y a {0}" + + "\u00a0ans\x07+ {0} s\x06+{0} s\x14{0} (heure avancée)\x13{0} (heure norm" + + "ale)\x1aheure avancée britannique\x19heure avancée irlandaise\x1aheure a" + + "vancée de l’Acre'heure avancée d’Afrique de l’Ouest\x1cheure avancée de " + + "l’Alaska\x1bheure avancée d’Alma Ata\x1eheure avancée de l’Amazonie\x18h" + + "eure avancée du Centre\x03HAC\x19heure avancée de l’Est\x03HAE\x1cheure " + + "avancée des Rocheuses\x03HAR\x1bheure avancée du Pacifique\x03HAP\x19heu" + + "re avancée d’Anadyr\x17heure avancée d’Apia\x19heure avancée d’Aktaou" + + "\x1aheure avancée d’Aqtöbe\x1cheure avancée de l’Arabie\x1fheure avancée" + + " de l’Argentine$heure avancée de l’Ouest argentin\x1bheure avancée d’Arm" + + "énie heure avancée de l’Atlantique)heure avancée du centre de l’Austral" + + "ie/heure avancée du centre-ouest de l’Australie*heure avancée de l’Est d" + + "e l’Australie,heure avancée de l’Ouest de l’Australie\x1fheure avancée d" + + "’Azerbaïdjan\x1aheure avancée des Açores\x1cheure avancée du Banglades" + + "h\x1aheure avancée de Brasilia\x1aheure avancée du Cap-Vert heure avancé" + + "e des Îles Chatham\x17heure avancée du Chili\x17heure avancée de Chine" + + "\x1cheure avancée de Choibalsan\x1aheure avancée de Colombie\x1dheure av" + + "ancée des îles Cook\x16heure avancée de Cuba%heure avancée de l’île de P" + + "âques\x22heure avancée d’Europe centrale$heure avancée d’Europe de l’Es" + + "t&heure avancée d’Europe de l’Ouest\x22heure avancée des îles Malouines" + + "\x1eheure avancée des îles Fidji\x1aheure avancée de Géorgie&heure avanc" + + "ée de l’Est du Groenland(heure avancée de l’Ouest du Groenland'heure av" + + "ancée d’Hawaï-Aléoutiennes\x1bheure avancée de Hong Kong\x16heure avancé" + + "e de Hovd\x17heure avancée d’Iran\x1bheure avancée d’Irkoutsk\x1aheure a" + + "vancée d’Israël\x17heure avancée du Japon*heure avancée de Petropavlovsk" + + "-Kamchatski\x18heure avancée de Corée\x1eheure avancée de Krasnoïarsk" + + "\x1bheure avancée de Lord Howe\x17heure avancée de Macao\x19heure avancé" + + "e de Magadan\x19heure avancée de Maurice'heure avancée du Nord-Ouest du " + + "Mexique$heure avancée du Pacifique mexicain\x1eheure avancée d’Oulan-Bat" + + "or\x18heure avancée de Moscou%heure avancée de Nouvelle-Calédonie&heure " + + "avancée de la Nouvelle-Zélande\x1dheure avancée de Terre-Neuve\x03HAT%he" + + "ure avancée de Fernando de Noronha\x1eheure avancée de Novossibirsk\x17h" + + "eure avancée d’Omsk\x1aheure avancée du Pakistan\x1aheure avancée du Par" + + "aguay\x18heure avancée du Pérou\x1eheure avancée des Philippines*heure a" + + "vancée de Saint-Pierre-et-Miquelon\x1bheure avancée de Sakhaline\x18heur" + + "e avancée des Samoa\x18heure avancée de Taipei\x17heure avancée de Tonga" + + "\x1fheure avancée du Turkménistan\x1dheure avancée de l’Uruguay\x22heure" + + " avancée de l’Ouzbékistan\x19heure avancée de Vanuatu\x1dheure avancée d" + + "e Vladivostok\x1bheure avancée de Volgograd\x1aheure avancée de Iakoutsk" + + " heure avancée d’Ekaterinbourg\x0cde l’ap.m.\x11HH.mm:ss 'h' zzzz\x03GFT" + + "\x0ade la nuit\x03jr.\x0bdim dernier\x06ce dim\x0cdim prochain\x0blun de" + + "rnier\x06ce lun\x0clun prochain\x0bmar dernier\x06ce mar\x0cmar prochain" + + "\x0bmer dernier\x06ce mer\x0cmer prochain\x0bjeu dernier\x06ce jeu\x0cje" + + "u prochain\x0bven dernier\x06ce ven\x0cven prochain\x0bsam dernier\x06ce" + + " sam\x0csam prochain\x10le 1er trimestre\x12le 2ème trimestre\x12le 3ème" + + " trimestre\x12le 4ème trimestre\x1aEEEE d 'di' MMMM 'dal' y G\x15d 'di' " + + "MMMM 'dal' y G\x03Zen\x03Fev\x03Mar\x03Avr\x03Mai\x03Jug\x03Lui\x03Avo" + + "\x03Set\x03Otu\x03Nov\x03Dic\x06Zenâr\x07Fevrâr\x05Març\x06Avrîl\x04Jugn" + + "\x05Avost\x08Setembar\x06Otubar\x08Novembar\x08Dicembar\x07domenie\x05lu" + + "nis\x07martars\x07miercus\x05joibe\x06vinars\x06sabide\x0ePrin trimestri" + + "\x10Secont trimestri\x10Tierç trimestri\x0fCuart trimestri\x02a.\x02p." + + "\x03pdC\x03ddC\x18EEEE d 'di' MMMM 'dal' y\x13d 'di' MMMM 'dal' y\x03ere" + + "\x0cca di {0} an\x0eca di {0} agns\x0e{0} an indaûr\x10{0} agns indaûr" + + "\x04mês\x0eca di {0} mês\x10{0} mês indaûr\x08setemane\x12ca di {0} sete" + + "mane\x13ca di {0} setemanis\x14{0} setemane indaûr\x15{0} setemanis inda" + + "ûr\x03dì\x0dîr l’altri\x03îr\x04vuê\x05doman\x0cpassantdoman\x11ca di {" + + "0} zornade\x12ca di {0} zornadis\x13{0} zornade indaûr\x14{0} zornadis i" + + "ndaûr\x0fdì de setemane\x0btoc dal dì\x03ore\x0dca di {0} ore\x0eca di {" + + "0} oris\x0f{0} ore indaûr\x10{0} oris indaûr\x06minût\x10ca di {0} minût" + + "\x11ca di {0} minûts\x12{0} minût indaûr\x13{0} minûts indaûr\x06secont" + + "\x10ca di {0} secont\x11ca di {0} seconts\x12{0} secont indaûr\x13{0} se" + + "conts indaûr\x16Ore de Europe centrâl\x1fOre standard de Europe centrâl" + + "\x1dOre estive de Europe centrâl\x17Ore de Europe orientâl Ore standard " + + "de Europe orientâl\x1eOre estive de Europe orientâl\x18Ore de Europe oci" + + "dentâl!Ore standard de Europe ocidentâl\x1fOre estive de Europe ocidentâ" + + "l\x0dOre di Mosche\x16Ore standard di Mosche\x14Ore estive di Mosche\x0e" + + "dd-MM-yy GGGGG\x15begjin fan de maitiid\x0areinwetter\x14ynsekten ûntwei" + + "tsje\x0bmaitiidpunt\x10ljocht en helder\x15begjien fan de simmer\x0asimm" + + "erpunt\x05waarm\x04hjit\x14begjin fan de hjerst\x13ein fan de hjittens" + + "\x0awite dauwe\x0ahjerstpunt\x0ckâlde dauwe\x0dearste froast\x14begjin f" + + "an de winter\x0blichte snie\x0bswiere snie\x0awinterpunt\x04Rôt\x04Okse" + + "\x05Tiger\x04Knyn\x05Draak\x05Slang\x06Hynder\x04Geit\x03Aap\x06Hoanne" + + "\x04Hûn\x06Baarch\x03Tut\x05Babah\x05Hatur\x06Kiyahk\x05Tubah\x06Amshir" + + "\x08Baramhat\x0aBaramundah\x07Bashans\x09Ba’unah\x04Abib\x05Misra\x04Nas" + + "i\x0bMäskäräm\x06Teqemt\x05Hedar\x06Tahsas\x06T’er\x08Yäkatit\x08Mägabit" + + "\x07Miyazya\x06Genbot\x05Säne\x05Hamle\x07Nähase\x08Pagumän\x0aJannewari" + + "s\x0aFebrewaris\x05Maart\x05April\x05Maaie\x04Juny\x04July\x08Augustus" + + "\x09Septimber\x07Oktober\x08Novimber\x08Desimber\x05snein\x07moandei\x07" + + "tiisdei\x08woansdei\x0atongersdei\x05freed\x05sneon\x0d1e fearnsjier\x0d" + + "2e fearnsjier\x0d3e fearnsjier\x0d4e fearnsjier\x0cFoar Kristus\x18foar " + + "gewoane jiertelling\x0bnei Kristus\x13gewoane jiertelling\x06f.g.j.\x04g" + + ".j.\x04f.K.\x03fgj\x04n.K.\x02gj\x0c{1} 'om' {0}\x07Tisjrie\x08Chesjwan" + + "\x06Kislev\x05Tevet\x06Sjevat\x06Adar A\x04Adar\x06Adar B\x05Nisan\x04Ij" + + "ar\x05Sivan\x07Tammoez\x02Av\x06Elloel\x05Moeh.\x04Saf.\x06Rab. I\x07Rab" + + ". II\x07Joem. I\x08Joem. II\x04Raj.\x04Sja.\x04Ram.\x05Sjaw.\x09Doe al k" + + ".\x09Doe al h.\x09Moeharram\x05Safar\x0fRabiʻa al awal\x10Rabiʻa al than" + + "i\x0fJoemadʻal awal\x10Joemadʻal thani\x05Rajab\x09Sjaʻaban\x07Ramadan" + + "\x06Sjawal\x0eDoe al kaʻaba\x0cDoe al hizja\x0eSaʻna Hizjria\x08Tiidsrin" + + "\x04Jier\x0cfoarich jier\x08dit jier\x0dfolgjend jier\x0cOer {0} jier" + + "\x0c{0} jier lyn\x0aFearnsjier\x12foarich fearnsjier\x0edit fearnsjier" + + "\x13folgjend fearnsjier\x12oer {0} fearnsjier\x12{0} fearnsjier lyn\x0af" + + "earnsjier\x06Moanne\x0efoarige moanne\x0cdizze moanne\x10folgjende moann" + + "e\x0eOer {0} moanne\x0fOer {0} moannen\x0e{0} moanne lyn\x0f{0} moannen " + + "lyn\x04Wike\x0cfoarige wike\x0adizze wike\x0efolgjende wike\x0cOer {0} w" + + "ike\x0dOer {0} wiken\x0c{0} wike lyn\x0d{0} wiken lyn\x03dei\x0beergiste" + + "ren\x08gisteren\x07vandaag\x06morgen\x09Oermorgen\x0bOer {0} dei\x0dOer " + + "{0} deien\x0b{0} dei lyn\x0d{0} deien lyn\x0fdei van de wike\x0eôfrûne s" + + "nein\x0bdizze snein\x14folgjende wike snein\x10ôfrûne moandei\x0ddizze m" + + "oandei\x16folgjende wike moandei\x10ôfrûne tiisdei\x0ddizze tiisdei\x16f" + + "olgjende wike tiisdei\x11ôfrûne woansdei\x0edizze woansdei\x17folgjende " + + "wike woansdei\x13ôfrûne tongersdei\x10dizze tongersdei\x19folgjende wike" + + " tongersdei\x0eôfrûne freed\x0bdizze freed\x14folgjende wike freed\x0eôf" + + "rûne sneon\x0bdizze sneon\x14folgjende wike sneon\x04oere\x0cOer {0} oer" + + "e\x0c{0} oere lyn\x06Minút\x0eOer {0} minút\x0fOer {0} minuten\x0e{0} mi" + + "nút lyn\x0f{0} minuten lyn\x07Sekonde\x0fOer {0} sekonde\x10Oer {0} seko" + + "nden\x0f{0} sekonde lyn\x10{0} sekonden lyn\x08{0}-tiid\x0dZomertiid {0}" + + "\x11Standaardtiid {0}\x11Britse simmertiid\x10Ierse simmertiid\x09Acre-t" + + "iid\x11Acre-standerttiid\x0fAcre-simmertiid\x0fAfghaanske tiid\x19Sintra" + + "al-Afrikaanske tiid\x15East-Afrikaanske tiid\x15Sûd-Afrikaanske tiid\x15" + + "West-Afrikaanske tiid\x1dWest-Afrikaanske standerttiid\x1bWest-Afrikaans" + + "ke simmertiid\x0bAlaska-tiid\x13Alaska-standerttiid\x11Alaska-simmertiid" + + "\x0dAlma-Ata-tiid\x15Alma-Ata-standerttiid\x13Alma-Ata-simmertiid\x0cAma" + + "zone-tiid\x14Amazone-standerttiid\x12Amazone-simmertiid\x0cCentral-tiid" + + "\x14Central-standerttiid\x12Central-simmertiid\x0cEastern-tiid\x14Easter" + + "n-standerttiid\x12Eastern-simmertiid\x0dMountain-tiid\x15Mountain-stande" + + "rttiid\x13Mountain-simmertiid\x0cPasifik-tiid\x14Pasifik-standerttiid" + + "\x12Pasifik-simmertiid\x0bAnadyr-tiid\x13Anadyr-standerttiid\x11Anadyr-s" + + "immertiid\x0aAqtau-tiid\x12Aqtau-standerttiid\x10Aqtau-simmertiid\x0cAqt" + + "öbe-tiid\x14Aqtöbe-standerttiid\x12Aqtöbe-simmertiid\x0dArabyske tiid" + + "\x15Arabyske standerttiid\x13Arabyske simmertiid\x10Argentynske tiid\x18" + + "Argentynske standerttiid\x16Argentynske simmertiid\x15West-Argentynske t" + + "iid\x1dWest-Argentynske standerttiid\x1bWest-Argentynske simmertiid\x0dA" + + "rmeense tiid\x15Armeense standerttiid\x13Armeense simmertiid\x0dAtlantic" + + "-tiid\x15Atlantic-standerttiid\x13Atlantic-simmertiid\x17Midden-Australy" + + "ske tiid\x1fMidden-Australyske standerttiid\x1dMidden-Australyske simmer" + + "tiid\x22Midden-Australyske westelijke tiid*Midden-Australyske westelijke" + + " standerttiid(Midden-Australyske westelijke simmertiid\x15East-Australys" + + "ke tiid\x1dEast-Australyske standerttiid\x1bEast-Australyske simmertiid" + + "\x15West-Australyske tiid\x1dWest-Australyske standerttiid\x1bWest-Austr" + + "alyske simmertiid\x15Azerbeidzjaanske tiid\x1dAzerbeidzjaanske standertt" + + "iid\x1bAzerbeidzjaanske simmertiid\x0bAzoren-tiid\x13Azoren-standerttiid" + + "\x11Azoren-simmertiid\x0eBengalese tiid\x16Bengalese standerttiid\x14Ben" + + "galese simmertiid\x0fBhutaanske tiid\x11Boliviaanske tiid\x12Brazyljaans" + + "ke tiid\x1aBrazyljaanske standerttiid\x18Brazyljaanske simmertiid\x0dBru" + + "neise tiid\x11Kaapverdyske tiid\x19Kaapverdyske standerttiid\x17Kaapverd" + + "yske simmertiid\x0dChamorro-tiid\x0cChatham tiid\x14Chatham standerttiid" + + "\x12Chatham simmertiid\x0eSileenske tiid\x16Sileenske standerttiid\x14Si" + + "leenske simmertiid\x0dSineeske tiid\x15Sineeske standerttiid\x13Sineeske" + + " simmertiid\x10Tsjojbalsan tiid\x18Tsjojbalsan standerttiid\x16Tsjojbals" + + "an simmertiid\x13Krysteilânske tiid\x13Kokoseilânske tiid\x12Kolombiaans" + + "ke tiid\x1aKolombiaanske standerttiid\x18Kolombiaanske simmertiid\x11Coo" + + "keilânse tiid\x19Cookeilânse standerttiid\x1dCookeilânse halve simmertii" + + "d\x0eKubaanske tiid\x16Kubaanske standerttiid\x14Kubaanske simmertiid" + + "\x0aDavis tiid\x17Dumont-d’Urville tiid\x12East-Timorese tiid\x14Peaskee" + + "ilânske tiid\x1cPeaskeeilânske standerttiid\x1aPeaskeeilânske simmertiid" + + "\x12Ecuadoraanske tiid\x16Midden-Europeeske tiid\x1eMidden-Europeeske st" + + "anderttiid\x1cMidden-Europeeske simmertiid\x14East-Europeeske tiid\x1cEa" + + "st-Europeeske standerttiid\x1aEast-Europeeske simmertiid\x14West-Europee" + + "ske tiid\x1cWest-Europeeske standerttiid\x1aWest-Europeeske simmertiid" + + "\x16Falklâneilânske tiid\x1eFalklâneilânske standerttiid\x1cFalklâneilân" + + "ske simmertiid\x0cFijyske tiid\x14Fijyske standerttiid\x12Fijyske simmer" + + "tiid\x15Frâns-Guyaanske tiid%Frânske Súdlike en Antarctyske tiid\x17Gala" + + "pagoseilânske tiid\x15Gambiereilânske tiid\x0eGeorgyske tiid\x16Georgysk" + + "e standerttiid\x14Georgyske simmertiid\x15Gilberteilânske tiid\x13Greenw" + + "ich Mean Time\x16East-Groenlânske tiid\x1eEast-Groenlânske standerttiid" + + "\x1cEast-Groenlânske simmertiid\x16West-Groenlânske tiid\x1eWest-Groenlâ" + + "nske standerttiid\x1cWest-Groenlânske simmertiid\x14Guamese standerttiid" + + "\x11Golf standerttiid\x0eGuyaanske tiid\x16Hawaii-Aleoetyske tiid\x1eHaw" + + "aii-Aleoetyske standerttiid\x1cHawaii-Aleoetyske simmertiid\x0fHongkongs" + + "e tiid\x17Hongkongse standerttiid\x15Hongkongse simmertiid\x09Hovd tiid" + + "\x11Hovd standerttiid\x0fHovd simmertiid\x0eYndiaaske tiid\x13Yndyske Oc" + + "eaan-tiid\x10Yndochinese tiid\x19Sintraal-Yndonezyske tiid\x15East-Yndon" + + "ezyske tiid\x15West-Yndonezyske tiid\x0dIraanske tiid\x15Iraanske stande" + + "rttiid\x13Iraanske simmertiid\x0dIrkoetsk-tiid\x15Irkoetsk-standerttiid" + + "\x13Irkoetsk-simmertiid\x10Israëlyske tiid\x18Israëlyske standerttiid" + + "\x16Israëlyske simmertiid\x0dJapanske tiid\x15Japanske standerttiid\x13J" + + "apanske simmertiid\x1ePetropavlovsk-Kamtsjatski-tiid&Petropavlovsk-Kamts" + + "jatski-standerttiid$Petropavlovsk-Kamtsjatski-simmertiid\x12East-Kazachs" + + "e tiid\x12West-Kazachse tiid\x0fKoreaanske tiid\x17Koreaanske standertti" + + "id\x15Koreaanske simmertiid\x0dKosraese tiid\x10Krasnojarsk-tiid\x18Kras" + + "nojarsk-standerttiid\x16Krasnojarsk-simmertiid\x0fKirgizyske tiid\x0aLan" + + "ka-tiid\x13Line-eilânske tiid\x18Lord Howe-eilânske tiid Lord Howe-eilân" + + "ske standerttiid\x1eLord Howe-eilânske simmertiid\x0cMacause tiid\x14Mac" + + "ause standerttiid\x12Macause simmertiid\x18Macquarie-eilânske tiid\x0cMa" + + "gadan-tiid\x14Magadan-standerttiid\x12Magadan-simmertiid\x0fMaleisyske t" + + "iid\x0fMaldivyske tiid\x17Marquesaseilânske tiid\x16Marshalleilânske tii" + + "d\x12Mauritiaanske tiid\x1aMauritiaanske standerttiid\x18Mauritiaanske s" + + "immertiid\x0bMawson tiid\x10Ulaanbaatar tiid\x18Ulaanbaatar standerttiid" + + "\x16Ulaanbaatar simmertiid\x0bMoskou-tiid\x13Moskou-standerttiid\x11Mosk" + + "ou-simmertiid\x0fMyanmarese tiid\x10Nauruaanske tiid\x0dNepalese tiid" + + "\x14Nij-Kaledonyske tiid\x1cNij-Kaledonyske standerttiid\x1aNij-Kaledony" + + "ske simmertiid\x13Nij-Seelânske tiid\x1bNij-Seelânske standerttiid\x19Ni" + + "j-Seelânske simmertiid\x14Newfoundlânske-tiid\x1cNewfoundlânske-standert" + + "tiid\x1aNewfoundlânske-simmertiid\x0bNiuese tiid\x15Norfolkeilânske tiid" + + "\x18Fernando de Noronha-tiid Fernando de Noronha-standerttiid\x1eFernand" + + "o de Noronha-simmertiid\x19Noardlike Mariaanske tiid\x10Novosibirsk-tiid" + + "\x18Novosibirsk-standerttiid\x16Novosibirsk-simmertiid\x09Omsk-tiid\x11O" + + "msk-standerttiid\x0fOmsk-simmertiid\x11Pakistaanske tiid\x19Pakistaanske" + + " standerttiid\x17Pakistaanske simmertiid\x0cBelause tiid\x19Papoea-Nij-G" + + "uineeske tiid\x13Paraguayaanske tiid\x1bParaguayaanske standerttiid\x19P" + + "araguayaanske simmertiid\x0fPeruaanske tiid\x17Peruaanske standerttiid" + + "\x15Peruaanske simmertiid\x0fFilipijnse tiid\x17Filipijnse standerttiid" + + "\x15Filipijnse simmertiid\x15Phoenixeilânske tiid\x1dSaint Pierre en Miq" + + "uelon-tiid%Saint Pierre en Miquelon-standerttiid#Saint Pierre en Miquelo" + + "n-simmertiid\x17Pitcairneillânske tiid\x0cPohnpei tiid\x0eQyzylorda-tiid" + + "\x16Qyzylorda-standerttiid\x14Qyzylorda-simmertiid\x0fRéunionse tiid\x0c" + + "Rothera tiid\x0dSachalin-tiid\x15Sachalin-standerttiid\x13Sachalin-simme" + + "rtiid\x0bSamara-tiid\x13Samara-standerttiid\x11Samara-simmertiid\x0fSamo" + + "aanske tiid\x17Samoaanske standerttiid\x15Samoaanske simmertiid\x0eSeych" + + "else tiid\x18Singaporese standerttiid\x16Salomonseilânske tiid\x13Sûd-Ge" + + "orgyske tiid\x10Surinaamske tiid\x0aSyowa tiid\x11Tahitiaanske tiid\x0bT" + + "aipei tiid\x13Taipei standerttiid\x11Taipei simmertiid\x0fTadzjiekse tii" + + "d\x16Tokelau-eilânske tiid\x0fTongaanske tiid\x17Tongaanske standerttiid" + + "\x15Tongaanske simmertiid\x0cChuukse tiid\x0fTurkmeense tiid\x17Turkmeen" + + "se standerttiid\x15Turkmeense simmertiid\x11Tuvaluaanske tiid\x12Uruguay" + + "aanske tiid\x1aUruguayaanske standerttiid\x18Uruguayaanske simmertiid" + + "\x0eOezbeekse tiid\x16Oezbeekse standerttiid\x14Oezbeekse simmertiid\x12" + + "Vanuatuaanske tiid\x1aVanuatuaanske standerttiid\x18Vanuatuaanske simmer" + + "tiid\x12Fenezolaanske tiid\x10Vladivostok-tiid\x18Vladivostok-standertti" + + "id\x16Vladivostok-simmertiid\x0eWolgograd-tiid\x16Wolgograd-standerttiid" + + "\x14Wolgograd-simmertiid\x0bVostok tiid\x13Wake-eilânske tiid\x17Wallis " + + "en Futunase tiid\x0dJakoetsk-tiid\x15Jakoetsk-standerttiid\x13Jakoetsk-s" + + "immertiid\x14Jekaterinenburg-tiid\x1cJekaterinenburg-standerttiid\x1aJek" + + "aterinenburg-simmertiid\x06Amshir\x08Baramhat\x07Bashans\x05Hedar\x06Tah" + + "sas\x06Genbot\x05Hamle\x06Kislev\x05Tevet\x04Adar\x05Nisan\x05Sivan\x02A" + + "v\x04Saf.\x06Rab. I\x07Rab. II\x04Raj.\x04Ram.\x05Safar\x05Rajab\x07Rama" + + "dan\x06morgen\x0aovermorgen\x05Hedar\x07Tahesas\x03Ter\x07Guenbot\x06Sän" + + "é\x06Hamlé\x08Nähasé\x08Pagumén" + +var bucket39 string = "" + // Size: 12971 bytes + "\x02RB\x03Ean\x05Feabh\x06Márta\x03Aib\x04Beal\x05Meith\x05Iúil\x04Lún" + + "\x06MFómh\x06DFómh\x04Samh\x04Noll\x07Eanáir\x07Feabhra\x08Aibreán\x09Be" + + "altaine\x09Meitheamh\x07Lúnasa\x0eMeán Fómhair\x11Deireadh Fómhair\x07Sa" + + "mhain\x07Nollaig\x04Domh\x04Luan\x06Máirt\x05Céad\x05Déar\x05Aoine\x04Sa" + + "th\x0dDé Domhnaigh\x09Dé Luain\x0aDé Máirt\x0dDé Céadaoin\x0aDéardaoin" + + "\x0aDé hAoine\x0cDé Sathairn\x0b1ú ráithe\x0b2ú ráithe\x0b3ú ráithe\x0b4" + + "ú ráithe\x0eRoimh Chríost\x0fRoimh Chomh-Ré\x0bAnno Domini\x08Comh-Ré" + + "\x02RC\x03RCR\x02AD\x02CR\x03Ré\x06Bliain\x08anuraidh\x0ean bhliain seo" + + "\x17an bhliain seo chugainn\x14i gceann {0} bhliain\x13i gceann {0} blia" + + "na\x14i gceann {0} mbliana\x13i gceann {0} bliain\x13{0} bhliain ó shin" + + "\x12{0} bliana ó shin\x13{0} mbliana ó shin\x12{0} bliain ó shin\x0ban b" + + "hl. seo\x14an bhl. seo chugainn\x10i gceann {0} bl.\x11i gceann {0} bhl." + + "\x11i gceann {0} mbl.\x10{0} bhl. ó shin\x0f{0} bl. ó shin\x10{0} mbl. ó" + + " shin\x09+{0} bhl.\x08+{0} bl.\x09+{0} mbl.\x09-{0} bhl.\x08-{0} bl.\x09" + + "-{0} mbl.\x07Ráithe\x14an ráithe seo caite\x0ean ráithe seo\x17an ráithe" + + " seo chugainn\x14i gceann {0} ráithe\x13{0} ráithe ó shin\x07ráithe\x06+" + + "{0} R\x06-{0} R\x03Mí\x11an mhí seo caite\x0ban mhí seo\x14an mhí seo ch" + + "ugainn\x11i gceann {0} mhí\x10i gceann {0} mí\x10{0} mhí ó shin\x0f{0} m" + + "í ó shin\x03mí\x09+{0} mhí\x08+{0} mí\x09-{0} mhí\x08-{0} mí\x09Seachta" + + "in\x17an tseachtain seo caite\x11an tseachtain seo\x1aan tseachtain seo " + + "chugainn\x16i gceann {0} seachtain\x17i gceann {0} sheachtain\x17i gcean" + + "n {0} seachtaine\x15{0} seachtain ó shin\x16{0} sheachtain ó shin\x16{0}" + + " seachtaine ó shin\x0dseachtain {0}\x05scht.\x13an tscht. seo caite\x0da" + + "n tscht. seo\x16an tscht. seo chugainn\x12i gceann {0} scht.\x13i gceann" + + " {0} shcht.\x11{0} scht. ó shin\x0a+{0} scht.\x0a-{0} scht.\x03Lá\x0aarú" + + " inné\x05inné\x05inniu\x08amárach\x0darú amárach\x10i gceann {0} lá\x0f{" + + "0} lá ó shin\x08+{0} lá\x08-{0} lá\x11Lá na seachtaine\x15an Domhnach se" + + "o caite\x0fan Domhnach seo\x18an Domhnach seo chugainn\x1a{0} seachtain " + + "ón Domhnach\x1b{0} sheachtain ón Domhnach\x1b{0} seachtaine ón Domhnach" + + "#Dé Domhnaigh {0} seachtain ó shin$Dé Domhnaigh {0} sheachtain ó shin$Dé" + + " Domhnaigh {0} seachtaine ó shin\x12an Domh. seo caite\x0can Domh. seo" + + "\x15an Domh. seo chugainn\x17{0} seachtain ón Domh.\x18{0} sheachtain ón" + + " Domh.\x18{0} seachtaine ón Domh.\x1fDé Domh. {0} seachtain ó shin Dé Do" + + "mh. {0} sheachtain ó shin Dé Domh. {0} seachtaine ó shin\x11an Domh seo " + + "caite\x0ban Domh seo\x11an Domh seo chug.\x0a+{0} Domh.\x0b+{0} Dhomh." + + "\x0b+{0} nDomh.\x11{0} Domh. ó shin\x12{0} Dhomh. ó shin\x12{0} nDomh. ó" + + " shin\x11an Luan seo caite\x0ban Luan seo\x14an Luan seo chugainn\x16{0}" + + " seachtain ón Luan\x17{0} sheachtain ón Luan\x17{0} seachtaine ón Luan" + + "\x1fDé Luain {0} seachtain ó shin Dé Luain {0} sheachtain ó shin Dé Luai" + + "n {0} seachtaine ó shin\x11an Luan seo chug.\x09+{0} Luan\x10{0} Luan ó " + + "shin\x14an Mháirt seo caite\x0ean Mháirt seo\x17an Mháirt seo chugainn" + + "\x18{0} seachtain ón Máirt\x19{0} sheachtain ón Máirt\x19{0} seachtaine " + + "ón Máirt Dé Máirt {0} seachtain ó shin!Dé Máirt {0} sheachtain ó shin!D" + + "é Máirt {0} seachtaine ó shin\x14an Mháirt seo chug.\x0c+{0} Mháirt\x0b" + + "+{0} Máirt\x13{0} Mháirt ó shin\x12{0} Máirt ó shin\x17an Chéadaoin seo " + + "caite\x11an Chéadaoin seo\x1aan Chéadaoin seo chugainn\x1c{0} seachtain " + + "ón Chéadaoin\x1d{0} sheachtain ón Chéadaoin\x1d{0} seachtaine ón Chéada" + + "oin#Dé Céadaoin {0} seachtain ó shin$Dé Céadaoin {0} sheachtain ó shin$D" + + "é Céadaoin {0} seachtaine ó shin\x14an Chéad. seo caite\x0ean Chéad. se" + + "o\x17an Chéad. seo chugainn\x13an Chéad seo chug.\x0f+{0} Chéadaoin\x0f+" + + "{0} gCéadaoin\x0e+{0} Céadaoin\x16{0} Chéadaoin ó shin\x16{0} gCéadaoin " + + "ó shin\x15{0} Céadaoin ó shin\x17an Déardaoin seo caite\x11an Déardaoin" + + " seo\x1aan Déardaoin seo chugainn\x1c{0} seachtain ón Déardaoin\x1d{0} s" + + "heachtain ón Déardaoin\x1d{0} seachtaine ón Déardaoin Déardaoin {0} seac" + + "htain ó shin!Déardaoin {0} sheachtain ó shin!Déardaoin {0} seachtaine ó " + + "shin\x13an Déar. seo caite\x0dan Déar. seo\x16an Déar. seo chugainn\x13a" + + "n Déar. seo chug.\x0f+{0} Déardaoin\x10+{0} Dhéardaoin\x10+{0} nDéardaoi" + + "n\x16{0} Déardaoin ó shin\x17{0} Dhéardaoin ó shin\x17{0} nDéardaoin ó s" + + "hin\x12an Aoine seo caite\x0can Aoine seo\x15an Aoine seo chugainn\x17{0" + + "} seachtain ón Aoine\x18{0} sheachtain ón Aoine\x18{0} seachtaine ón Aoi" + + "ne Dé hAoine {0} seachtain ó shin!Dé hAoine {0} sheachtain ó shin!Dé hAo" + + "ine {0} seachtaine ó shin\x12an Aoine seo chug.\x0a+{0} Aoine\x11{0} Aoi" + + "ne ó shin\x14an Satharn seo caite\x0ean Satharn seo\x17an Satharn seo ch" + + "ugainn\x19{0} seachtain ón Satharn\x1a{0} sheachtain ón Satharn\x1a{0} s" + + "eachtaine ón Satharn\x22Dé Sathairn {0} seachtain ó shin#Dé Sathairn {0}" + + " sheachtain ó shin#Dé Sathairn {0} seachtaine ó shin\x12an Sath. seo cai" + + "te\x0can Sath. seo\x15an Sath. seo chugainn\x11an Sath seo caite\x0ban S" + + "ath seo\x11an Sath seo chug.\x0c+{0} Satharn\x0d+{0} Shatharn\x13{0} Sat" + + "harn ó shin\x14{0} Shatharn ó shin\x04Uair\x0ban uair seo\x1bi gceann {0" + + "} uair an chloig\x1di gceann {0} huaire an chloig\x1ei gceann {0} n-uair" + + "e an chloig\x1a{0} uair an chloig ó shin\x1c{0} huaire an chloig ó shin" + + "\x1d{0} n-uaire an chloig ó shin\x04uair\x11i gceann {0} uair\x13i gcean" + + "n {0} huaire\x14i gceann {0} n-uaire\x10{0} uair ó shin\x12{0} huaire ó " + + "shin\x13{0} n-uaire ó shin\x06+{0} u\x06-{0} u\x09Nóiméad\x10an nóiméad " + + "seo\x16i gceann {0} nóiméad\x15{0} nóiméad ó shin\x06nóim.\x13i gceann {" + + "0} nóim.\x12{0} nóim. ó shin\x06+{0} n\x06-{0} n\x07Soicind\x05anois\x14" + + "i gceann {0} soicind\x15i gceann {0} shoicind\x13{0} soicind ó shin\x14{" + + "0} shoicind ó shin\x05soic.\x12i gceann {0} soic.\x13i gceann {0} shoic." + + "\x11{0} soic. ó shin\x12{0} shoic. ó shin\x09Crios Ama\x19Am Samhraidh n" + + "a Breataine\x03ASB\x1dAm Caighdéanach na hÉireann\x04ACÉ\x07Am Acre\x15A" + + "m Caighdeánach Acre\x11Am Samhraidh Acre\x14Am na hAfganastáine\x13Am Lá" + + "r na hAfraice\x17Am Oirthear na hAfraice\x22Am Caighdeánach na hAfraice " + + "Theas\x16Am Iarthar na hAfraice$Am Caighdeánach Iarthar na hAfraice Am S" + + "amhraidh Iarthar na hAfraice\x09Am Alasca\x17Am Caighdeánach Alasca\x13A" + + "m Samhraidh Alasca\x09Am Almaty\x17Am Caighdeánach Almaty\x13Am Samhraid" + + "h Almaty\x10Am na hAmasóine\x1eAm Caighdeánach na hAmasóine\x1aAm Samhra" + + "idh na hAmasóine\x0bAm Lárnach\x19Am Caighdeánach Lárnach\x15Am Samhraid" + + "h Lárnach\x0dAm an Oirthir\x1bAm Caighdeánach an Oirthir\x17Am Samhraidh" + + " an Oirthir\x0fAm na Sléibhte\x1dAm Caighdeánach na Sléibhte\x19Am Samhr" + + "aidh na Sléibhte\x15Am an Aigéin Chiúin#Am Caighdeánach an Aigéin Chiúin" + + "\x1fAm Samhraidh an Aigéin Chiúin\x09Am Anadyr\x17Am Caighdeánach Anadyr" + + "\x13Am Samhraidh Anadyr\x07Am Apia\x15Am Caighdeánach Apia\x11Am Samhrai" + + "dh Apia\x08Am Aqtau\x16Am Caighdeánach Aqtau\x12Am Samhraidh Aqtau\x09Am" + + " Aqtobe\x17Am Caighdeánach Aqtobe\x13Am Samhraidh Aqtobe\x0dAm na hAraib" + + "e\x1bAm Caighdeánach na hAraibe\x17Am Samhraidh na hAraibe\x12Am na hAir" + + "gintíne Am Caighdeánach na hAirgintíne\x1cAm Samhraidh na hAirgintíne" + + "\x1aAm Iarthar na hAirgintíne(Am Caighdeánach Iarthar na hAirgintíne$Am " + + "Samhraidh Iarthar na hAirgintíne\x10Am na hAirméine\x1eAm Caighdeánach n" + + "a hAirméine\x1aAm Samhraidh na hAirméine\x10Am an Atlantaigh\x1eAm Caigh" + + "deánach an Atlantaigh\x1aAm Samhraidh an Atlantaigh\x15Am Lár na hAstrái" + + "le#Am Caighdeánach Lár na hAstráile\x1fAm Samhraidh Lár na hAstráile\x1e" + + "Am Mheániarthar na hAstráile,Am Caighdeánach Mheániarthar na hAstráile(A" + + "m Samhraidh Mheániarthar na hAstráile\x19Am Oirthear na hAstráile'Am Cai" + + "ghdeánach Oirthear na hAstráile#Am Samhraidh Oirthear na hAstráile\x18Am" + + " Iarthar na hAstráile&Am Caighdeánach Iarthar na hAstráile\x22Am Samhrai" + + "dh Iarthar na hAstráile\x15Am na hAsarbaiseáine#Am Caighdeánach na hAsar" + + "baiseáine\x1fAm Samhraidh na hAsarbaiseáine\x0cAm na nAsór\x1aAm Caighde" + + "ánach na nAsór\x16Am Samhraidh na nAsór\x13Am na Banglaidéise!Am Caighd" + + "eánach na Banglaidéise\x1dAm Samhraidh na Banglaidéise\x0fAm na Bútáine" + + "\x0dAm na Bolaive\x0dAm Bhrasília\x1bAm Caighdeánach Bhrasília\x17Am Sam" + + "hraidh Bhrasília\x16Am Brúiné Darasalám\x0dAm Rinn Verde\x1bAm Caighdeán" + + "ach Rinn Verde\x17Am Samhraidh Rinn Verde\x13Am Stáisiún Casey\x1bAm Cai" + + "ghdeánach Seamórach\x0aAm Chatham\x18Am Caighdeánach Chatham\x14Am Samhr" + + "aidh Chatham\x0aAm na Sile\x18Am Caighdeánach na Sile\x14Am Samhraidh na" + + " Sile\x0bAm na Síne\x19Am Caighdeánach na Síne\x15Am Samhraidh na Síne" + + "\x0dAm Choibalsan\x1bAm Caighdeánach Choibalsan\x17Am Samhraidh Choibals" + + "an\x14Am Oileán na Nollag\x11Am Oileáin Cocos\x0eAm na Colóime\x1cAm Cai" + + "ghdeánach na Colóime\x18Am Samhraidh na Colóime\x10Am Oileáin Cook\x1eAm" + + " Caighdeánach Oileáin Cook Am Leathshamhraidh Oileáin Cook\x09Am Chúba" + + "\x17Am Caighdeánach Chúba\x13Am Samhraidh Chúba\x13Am Stáisiún Davis Am " + + "Stáisiún Dumont-d’Urville\x12Am Thíomór Thoir\x14Am Oileán na Cásca\x22A" + + "m Caighdeánach Oileán na Cásca\x1eAm Samhraidh Oileán na Cásca\x0cAm Eac" + + "uadór\x11Am Lár na hEorpa\x1fAm Caighdeánach Lár na hEorpa\x1bAm Samhrai" + + "dh Lár na hEorpa\x15Am Oirthear na hEorpa#Am Caighdeánach Oirthear na hE" + + "orpa\x1fAm Samhraidh Oirthear na hEorpa\x1aAm Chianoirthear na hEorpa" + + "\x14Am Iarthar na hEorpa\x22Am Caighdeánach Iarthar na hEorpa\x1eAm Samh" + + "raidh Iarthar na hEorpa\x17Am Oileáin Fháclainne%Am Caighdeánach Oileáin" + + " Fháclainne!Am Samhraidh Oileáin Fháclainne\x0aAm Fhidsí\x18Am Caighdeán" + + "ach Fhidsí\x14Am Samhraidh Fhidsí\x15Am Ghuáin na Fraince+Am Chríocha Fr" + + "ancacha Deisceart an Domhain\x16Am Oileáin Galápagos\x0bAm Ghambier\x0eA" + + "m na Seoirsia\x1cAm Caighdeánach na Seoirsia\x18Am Samhraidh na Seoirsia" + + "\x0fAm Chireabaití\x12Meán-Am Greenwich\x1aAm Oirthear na Graonlainne(Am" + + " Caighdeánach Oirthear na Graonlainne$Am Samhraidh Oirthear na Graonlain" + + "ne\x19Am Iarthar na Graonlainne'Am Caighdeánach Iarthar na Graonlainne#A" + + "m Samhraidh Iarthar na Graonlainne\x16Am Caighdeánach Ghuam\x1fAm Caighd" + + "eánach na Murascaille\x0dAm na Guáine\x13Am Haváí-Ailiúit!Am Caighdeánac" + + "h Haváí-Ailiúit\x1dAm Samhraidh Haváí-Ailiúit\x0cAm Hong Cong\x1aAm Caig" + + "hdeánach Hong Cong\x16Am Samhraidh Hong Cong\x07Am Hovd\x15Am Caighdeána" + + "ch Hovd\x11Am Samhraidh Hovd\x1aAm Caighdeánach na hIndia\x16Am an Aigéi" + + "n Indiaigh\x10Am na hInd-Síne\x16Am Lár na hIndinéise\x1aAm Oirthear na " + + "hIndinéise\x19Am Iarthar na hIndinéise\x0fAm na hIaráine\x1dAm Caighdeán" + + "ach na hIaráine\x19Am Samhraidh na hIaráine\x0aAm Irkutsk\x18Am Caighdeá" + + "nach Irkutsk\x14Am Samhraidh Irkutsk\x0aAm Iosrael\x18Am Caighdeánach Io" + + "srael\x14Am Samhraidh Iosrael\x0fAm na Seapáine\x1dAm Caighdeánach na Se" + + "apáine\x19Am Samhraidh na Seapáine\x1cAm Phetropavlovsk-Kamchatski*Am Ca" + + "ighdeánach Phetropavlovsk-Kamchatski&Am Samhraidh Phetropavlovsk-Kamchat" + + "ski\x1bAm Oirthear na Casacstáine\x1aAm Iarthar na Casacstáine\x0dAm na " + + "Cóiré\x1bAm Caighdeánach na Cóiré\x17Am Samhraidh na Cóiré\x09Am Kosrae" + + "\x0eAm Krasnoyarsk\x1cAm Caighdeánach Krasnoyarsk\x18Am Samhraidh Krasno" + + "yarsk\x13Am na Cirgeastáine\x0eAm Shrí Lanca\x14Am Oileáin na Líne\x0cAm" + + " Lord Howe\x1aAm Caighdeánach Lord Howe\x16Am Samhraidh Lord Howe\x09Am " + + "Mhacao\x17Am Caighdeánach Mhacao\x13Am Samhraidh Mhacao\x16Am Oileán Mhi" + + "c Guaire\x0bAm Mhagadan\x19Am Caighdeánach Mhagadan\x15Am Samhraidh Mhag" + + "adan\x0fAm na Malaeisia\x16Am Oileáin Mhaildíve\x18Am na nOileán Marcasa" + + "ch\x14Am Oileáin Marshall\x13Am Oileán Mhuirís!Am Caighdeánach Oileán Mh" + + "uirís\x1dAm Samhraidh Oileán Mhuirís\x14Am Stáisiún Mawson\x1cAm Iarthua" + + "isceart Mheicsiceo*Am Caighdeánach Iarthuaisceart Mheicsiceo&Am Samhraid" + + "h Iarthuaisceart Mheicsiceo!Am Meicsiceach an Aigéin Chiúin/Am Caighdeán" + + "ach Meicsiceach an Aigéin Chiúin+Am Samhraidh Meicsiceach an Aigéin Chiú" + + "in\x0eAm Ulánbátar\x1cAm Caighdeánach Ulánbátar\x18Am Samhraidh Ulánbáta" + + "r\x0aAm Mhoscó\x18Am Caighdeánach Mhoscó\x14Am Samhraidh Mhoscó\x0bAm Mh" + + "aenmar\x09Am Nárú\x0aAm Neipeal\x15Am na Nua-Chaladóine#Am Caighdeánach " + + "na Nua-Chaladóine\x1fAm Samhraidh na Nua-Chaladóine\x15Am na Nua-Shéalai" + + "nne#Am Caighdeánach na Nua-Shéalainne\x1fAm Samhraidh na Nua-Shéalainne" + + "\x13Am Thalamh an Éisc!Am Caighdeánach Thalamh an Éisc\x1dAm Samhraidh T" + + "halamh an Éisc\x07Am Niue\x12Am Oileán Norfolk\x17Am Fhernando de Noronh" + + "a%Am Caighdeánach Fhernando de Noronha!Am Samhraidh Fhernando de Noronha" + + "\x22Am na nOileán Máirianach Thuaidh\x0eAm Novosibirsk\x1cAm Caighdeánac" + + "h Novosibirsk\x18Am Samhraidh Novosibirsk\x07Am Omsk\x15Am Caighdeánach " + + "Omsk\x11Am Samhraidh Omsk\x11Am na Pacastáine\x1fAm Caighdeánach na Paca" + + "stáine\x1bAm Samhraidh na Pacastáine\x11Am Oileáin Palau\x14Am Nua-Ghuin" + + "e Phapua\x0bAm Pharagua\x19Am Caighdeánach Pharagua\x15Am Samhraidh Phar" + + "agua\x0bAm Pheiriú\x19Am Caighdeánach Pheiriú\x15Am Samhraidh Pheiriú" + + "\x1bAm na nOileán Filipíneach)Am Caighdeánach na nOileán Filipíneach%Am " + + "Samhraidh na nOileán Filipíneach\x18Am Oileáin an Fhéinics\x1bAm Saint-P" + + "ierre-et-Miquelon)Am Caighdeánach Saint-Pierre-et-Miquelon%Am Samhraidh " + + "Saint-Pierre-et-Miquelon\x13Am Oileán Pitcairn\x0bAm Phohnpei\x0cAm Pyon" + + "gyang\x0cAm Qyzylorda\x1aAm Caighdeánach Qyzylorda\x16Am Samhraidh Qyzyl" + + "orda\x0bAm Réunion\x15Am Stáisiún Rothera\x0cAm Shakhalin\x1aAm Caighdeá" + + "nach Shakhalin\x16Am Samhraidh Shakhalin\x0aAm Shamara\x18Am Caighdeánac" + + "h Shamara\x14Am Samhraidh Shamara\x09Am Shamó\x17Am Caighdeánach Shamó" + + "\x13Am Samhraidh Shamó\x0fAm na Séiséal\x1cAm Caighdeánach Shingeapór" + + "\x15Am Oileáin Sholomón\x14Am na Seoirsia Theas\x0bAm Shuranam\x13Am Stá" + + "isiún Syowa\x0dAm Thaihítí\x0aAm Thaipei\x18Am Caighdeánach Thaipei\x14A" + + "m Samhraidh Thaipei\x18Am na Táidsíceastáine\x14Am Oileáin Tócalá\x09Am " + + "Thonga\x17Am Caighdeánach Thonga\x13Am Samhraidh Thonga\x08Am Chuuk\x18A" + + "m na Tuircméanastáine&Am Caighdeánach na Tuircméanastáine\x22Am Samhraid" + + "h na Tuircméanastáine\x0aAm Thuvalu\x09Am Uragua\x17Am Caighdeánach Urag" + + "ua\x13Am Samhraidh Uragua\x19Am na hÚisbéiceastáine'Am Caighdeánach na h" + + "Úisbéiceastáine#Am Samhraidh na hÚisbéiceastáine\x0bAm Vanuatú\x19Am Ca" + + "ighdeánach Vanuatú\x15Am Samhraidh Vanuatú\x0eAm Veiniséala\x0eAm Vladiv" + + "ostok\x1cAm Caighdeánach Vladivostok\x18Am Samhraidh Vladivostok\x0cAm V" + + "olgograd\x1aAm Caighdeánach Volgograd\x16Am Samhraidh Volgograd\x14Am St" + + "áisiún Vostok\x0fAm Oileán Wake\x17Am Vailís agus Futúna\x0bAm Iacútsc" + + "\x19Am Caighdeánach Iacútsc\x15Am Samhraidh Iacútsc\x10Am Yekaterinburg" + + "\x1eAm Caighdeánach Yekaterinburg\x1aAm Samhraidh Yekaterinburg\x02AD" + +var bucket40 string = "" + // Size: 10978 bytes + "\x04Faoi\x05Gearr\x05Màrt\x04Gibl\x05Cèit\x05Ògmh\x04Iuch\x05Lùna\x04Sul" + + "t\x05Dàmh\x04Samh\x05Dùbh\x10dhen Fhaoilleach\x0ddhen Ghearran\x0bdhen M" + + "hàrt\x0ddhen Ghiblean\x0edhen Chèitean\x0ddhen Ògmhios\x0bdhen Iuchar" + + "\x0edhen Lùnastal\x0edhen t-Sultain\x0ddhen Dàmhair\x0edhen t-Samhain" + + "\x0fdhen Dùbhlachd\x0dAm Faoilleach\x0aAn Gearran\x08Am Màrt\x0aAn Gible" + + "an\x0bAn Cèitean\x0dAn t-Ògmhios\x0bAn t-Iuchar\x0cAn Lùnastal\x0cAn t-S" + + "ultain\x0bAn Dàmhair\x0cAn t-Samhain\x0dAn Dùbhlachd\x03DiD\x03DiL\x03Di" + + "M\x03DiC\x03Dia\x03Dih\x03DiS\x03Dò\x02Lu\x03Mà\x02Ci\x02Da\x02hA\x02Sa" + + "\x0cDiDòmhnaich\x07DiLuain\x08DiMàirt\x09DiCiadain\x09DiarDaoin\x08DihAo" + + "ine\x0bDiSathairne\x02C1\x02C2\x02C3\x02C4\x0c1d chairteal\x0c2na cairte" + + "al\x0b3s cairteal\x0c4mh cairteal\x0cRo Chrìosta\x13An dèidh Chrìosta" + + "\x12EEEE, d'mh' MMMM y\x0cd'mh' MMMM y\x0fRo Ph. na Sìne\x08Mínguó\x06Ro" + + " PnS\x04linn\x08bliadhna\x0ea-bhòn-uiridh\x09an-uiridh\x0bam bliadhna" + + "\x10an ath-bhliadhna\x16an ceann {0} bhliadhna\x1ban ceann {0} bliadhnai" + + "chean\x15an ceann {0} bliadhna\x15{0} bhliadhna air ais\x1b{0} bhliadhna" + + "ichean air ais\x14{0} bliadhna air ais\x05blia.\x0dan {0} bhlia.\x0can {" + + "0} blia.\x0co {0} bhlia.\x0bo {0} blia.\x09a-bh-uir.\x07an-uir.\x06am bl" + + ".\x0ban ath-bhl.\x08cairteal\x16an cairteal seo chaidh\x0fan cairteal se" + + "o\x10an ath-chairteal\x16an ceann {0} chairteil\x17an ceann {0} cairteal" + + "an\x15an ceann {0} cairteil\x16o chionn {0} chairteil\x17o chionn {0} ca" + + "irtealan\x15o chionn {0} cairteil\x06cairt.\x13an cairt. sa chaidh\x0dan" + + " cairt. seo\x0ean ath-chairt.\x0ean {0} chairt.\x0dan {0} cairt.\x0do {0" + + "} chairt.\x0co {0} cairt.\x02c.\x06c. ch.\x09an c. seo\x07ath-ch.\x07+{0" + + "} c.\x07-{0} c.\x05mìos\x13am mìos seo chaidh\x0cam mìos seo\x0dan ath-m" + + "hìos\x14an ceann {0} mhìosa\x14an ceann {0} mìosan\x13an ceann {0} mìosa" + + "\x12{0} mhìos air ais\x13{0} mìosan air ais\x11{0} mìos air ais\x12am mì" + + "os sa chaidh\x0ean {0} mhìos.\x0dan {0} mìos.\x0do {0} mhìos.\x0co {0} m" + + "ìos.\x04mì.\x08mì. ch.\x0bam mì. seo\x09ath-mhì.\x0a+{0} mhì.\x09+{0} m" + + "ì.\x0a-{0} mhì.\x09-{0} mì.\x09seachdain\x19an t-seachdain seo chaidh" + + "\x12an t-seachdain seo\x11an ath-sheachdain\x16an ceann {0} seachdain" + + "\x17an ceann {0} sheachdain\x19an ceann {0} seachdainean\x15{0} seachdai" + + "n air ais\x16{0} sheachdain air ais\x18{0} seachdainean air ais\x07seach" + + "d.\x11seachd. sa chaidh\x10an t-seachd. seo\x0fan ath-sheachd.\x0fan {0}" + + " sheachd.\x0ean {0} seachd.\x0eo {0} sheachd.\x0do {0} seachd.\x03sn." + + "\x07sn. ch.\x0can t-sn. seo\x08ath-shn.\x08+{0} sn.\x08-{0} sn.\x05latha" + + "\x0ca-bhòin-dè\x06an-dè\x08an-diugh\x0ba-màireach\x08an-earar\x0ban-eara" + + "rais\x12an ceann {0} latha\x16an ceann {0} làithean\x11{0} latha air ais" + + "\x15{0} làithean air ais\x03là\x0aan {0} là\x0ban {0} là.\x09o {0} là" + + "\x0ao {0} là.\x08+{0} là\x08-{0} là\x13latha na seachdaine\x17DiDòmhnaic" + + "h seo chaidh\x18DiDòmhnaich seo tighinn\x0eDiD. sa chaidh\x04DiD.\x0fDiD" + + ". sa tighinn\x08Dò. ch.\x04Dò.\x08Dò. ti.\x12DiLuain seo chaidh\x13DiLua" + + "in seo tighinn\x0eDiL. sa chaidh\x04DiL.\x0fDiL. sa tighinn\x07Lu. ch." + + "\x03Lu.\x07Lu. ti.\x13DiMàirt seo chaidh\x14DiMàirt seo tighinn\x0eDiM. " + + "sa chaidh\x04DiM.\x0fDiM. sa tighinn\x08Mà. ch.\x04Mà.\x08Mà. ti.\x14DiC" + + "iadain seo chaidh\x15DiCiadain seo tighinn\x0eDiC. sa chaidh\x04DiC.\x0f" + + "DiC. sa tighinn\x07Ci. ch.\x03Ci.\x07Ci. ti.\x14DiarDaoin seo chaidh\x15" + + "DiarDaoin seo tighinn\x0eDia. sa chaidh\x04Dia.\x0fDia. sa tighinn\x07Da" + + ". ch.\x03Da.\x07Da. ti.\x13DihAoine seo chaidh\x14DihAoine seo tighinn" + + "\x0eDih. sa chaidh\x04Dih.\x0fDih. sa tighinn\x07hA. ch.\x03hA.\x07hA. t" + + "i.\x16DiSathairne seo chaidh\x17DiSathairne seo tighinn\x0eDiS. sa chaid" + + "h\x04DiS.\x0fDiS. sa tighinn\x07Sa. ch.\x03Sa.\x07Sa. ti.\x03m/f\x0duair" + + " a thìde\x1aan ceann {0} uair a thìde\x1dan ceann {0} uairean a thìde" + + "\x19{0} uair a thìde air ais\x1c{0} uairean a thìde air ais\x0ban {0} ua" + + "ir\x0can {0} uair.\x0ao {0} uair\x0bo {0} uair.\x07+{0} u.\x07-{0} u." + + "\x07mionaid\x15an ceann {0} mhionaid\x17an ceann {0} mionaidean\x14an ce" + + "ann {0} mionaid\x14{0} mhionaid air ais\x16{0} mionaidean air ais\x13{0}" + + " mionaid air ais\x05mion.\x0dan {0} mhion.\x0can {0} mion.\x0co {0} mhio" + + "n.\x0bo {0} mion.\x04diog\x0aan-dràsta\x11an ceann {0} diog\x12an ceann " + + "{0} dhiog\x13an ceann {0} diogan\x10{0} diog air ais\x11{0} dhiog air ai" + + "s\x12{0} diogan air ais\x0ban {0} diog\x0can {0} dhiog\x0can {0} diog." + + "\x0ao {0} diog\x0bo {0} dhiog\x0bo {0} diog.\x0broinn-tìde\x1aTìde samhr" + + "aidh Bhreatainn\x03TSB\x15Bun-àm na h-Èireann\x0eTSÈ (Èirinn)\x03HDT\x08" + + "Àm Acre\x0cBun-àm Acre\x14Tìde samhraidh Acre\x11Àm Afghanastàin\x12Àm " + + "Meadhan Afraga\x11Àm Afraga an Ear\x11Àm Afraga a Deas\x11Àm Afraga an I" + + "ar\x15Bun-àm Afraga an Iar\x1dTìde Samhraidh Afraga an Iar\x0aÀm Alaska" + + "\x0eBun-àm Alaska\x16Tìde samhraidh Alaska\x0aÀm Almaty\x0eBun-àm Almaty" + + "\x16Tìde samhraidh Almaty\x0bÀm Amasoin\x0fBun-àm Amasoin\x17Tìde samhra" + + "idh Amasoin\x1eÀm Meadhan Aimeireaga a Tuath\x22Bun-àm Meadhan Aimeireag" + + "a a Tuath*Tìde samhraidh Meadhan Aimeireaga a Tuath\x1dÀm Aimeireaga a T" + + "uath an Ear!Bun-àm Aimeireaga a Tuath an Ear)Tìde samhraidh Aimeireaga a" + + " Tuath an Ear\x1dÀm Monadh Aimeireaga a Tuath!Bun-àm Monadh Aimeireaga a" + + " Tuath)Tìde samhraidh Monadh Aimeireaga a Tuath\x16Àm a’ Chuain Sèimh" + + "\x1aBun-àm a’ Chuain Sèimh\x22Tìde samhraidh a’ Chuain Sèimh\x0aÀm Anady" + + "r\x0eBun-àm Anadyr\x16Tìde samhraidh Anadyr\x08Àm Apia\x0cBun-àm Apia" + + "\x14Tìde samhraidh Apia\x09Àm Aqtau\x0dBun-àm Aqtau\x15Tìde samhraidh Aq" + + "tau\x0aÀm Aqtobe\x0eBun-àm Aqtobe\x16Tìde samhraidh Aqtobe\x0bÀm Arabach" + + "\x0fBun-àm Arabach\x17Tìde samhraidh Arabach\x13Àm na h-Argantaine\x17Bu" + + "n-àm na h-Argantaine\x1fTìde samhraidh na h-Argantaine\x1cÀm na h-Argant" + + "aine Siaraich Bun-àm na h-Argantaine Siaraich(Tìde samhraidh na h-Argant" + + "aine Siaraich\x0dÀm Airmeinia\x11Bun-àm Airmeinia\x19Tìde samhraidh Airm" + + "einia\x14Àm a’ Chuain Siar\x18Bun-àm a’ Chuain Siar Tìde samhraidh a’ Ch" + + "uain Siar\x16Àm Meadhan Astràilia\x1aBun-àm Meadhan Astràilia\x22Tìde sa" + + "mhraidh Meadhan Astràilia\x1dÀm Meadhan Astràilia an Iar!Bun-àm Meadhan " + + "Astràilia an Iar)Tìde samhraidh Meadhan Astràilia an Iar\x15Àm Astràilia" + + " an Ear\x19Bun-àm Astràilia an Ear!Tìde samhraidh Astràilia an Ear\x15Àm" + + " Astràilia an Iar\x19Bun-àm Astràilia an Iar!Tìde samhraidh Astràilia an" + + " Iar\x11Àm Asarbaideàin\x15Bun-àm Asarbaideàin\x1dTìde samhraidh Asarbai" + + "deàin\x18Àm nan Eileanan Asorach\x1cBun-àm nan Eileanan Asorach$Tìde sam" + + "hraidh nan Eileanan Asorach\x0eÀm Bangladais\x12Bun-àm Bangladais\x1aTìd" + + "e samhraidh Bangladais\x0bÀm Butàin\x0dÀm Boilibhia\x0dÀm Bhrasilia\x11B" + + "un-àm Bhrasilia\x19Tìde samhraidh Bhrasilia\x1dÀm Bhrùnaigh Dàr as-Salàm" + + "\x13Àm a’ Chip Uaine\x17Bun-àm a’ Chip Uaine\x1fTìde samhraidh a’ Chip U" + + "aine\x0aÀm Chasey\x0cÀm Chamorro\x0bÀm Chatham\x0fBun-àm Chatham\x17Tìde" + + " samhraidh Chatham\x0bÀm na Sile\x0fBun-àm na Sile\x17Tìde samhraidh na " + + "Sile\x0cÀm na Sìne\x10Bun-àm na Sìne\x18Tìde samhraidh na Sìne\x0eÀm Cho" + + "ibalsan\x12Bun-àm Choibalsan\x1aTìde samhraidh Choibalsan\x15Àm Eilean n" + + "a Nollaig\x13Àm Eileanan Chocos\x0dÀm Coloimbia\x11Bun-àm Coloimbia\x19T" + + "ìde samhraidh Coloimbia\x11Àm Eileanan Cook\x15Bun-àm Eileanan Cook#Let" + + "h-thìde samhraidh Eileanan Cook\x09Àm Cùba\x0dBun-àm Cùba\x15Tìde samhra" + + "idh Cùba\x0aÀm Dhavis\x16Àm Dumont-d’Urville\x13Àm Thìomor an Ear\x15Àm " + + "Eilean na Càisge\x19Bun-àm Eilean na Càisge!Tìde samhraidh Eilean na Cài" + + "sge\x0dÀm Eacuadoir\x1bÀm Meadhan na Roinn-Eòrpa\x1fBun-àm Meadhan na Ro" + + "inn-Eòrpa'Tìde samhraidh Meadhan na Roinn-Eòrpa\x1aÀm na Roinn-Eòrpa an " + + "Ear\x1eBun-àm na Roinn-Eòrpa an Ear&Tìde samhraidh na Roinn-Eòrpa an Ear" + + "\x22Àm na Roinn-Eòrpa nas fhaide ear\x1aÀm na Roinn-Eòrpa an Iar\x1eBun-" + + "àm na Roinn-Eòrpa an Iar&Tìde samhraidh na Roinn-Eòrpa an Iar\x1cÀm nan" + + " Eileanan Fàclannach Bun-àm nan Eileanan Fàclannach(Tìde samhraidh nan E" + + "ileanan Fàclannach\x09Àm Fìdi\x0dBun-àm Fìdi\x15Tìde samhraidh Fìdi\x19À" + + "m Guidheàna na Frainge)Àm Deasach agus Antartaigeach na Frainge\x0eÀm Gh" + + "alapagos\x0cÀm Ghambier\x12Àm na Cairtbheile\x16Bun-àm na Cairtbheile" + + "\x1eTìde samhraidh na Cairtbheile\x18Àm Eileanan Ghileabairt\x13Greenwic" + + "h Mean Time\x18Àm na Graonlainn an Ear\x1cBun-àm na Graonlainn an Ear$Tì" + + "de samhraidh na Graonlainn an Ear\x18Àm na Graonlainn an Iar\x1cBun-àm n" + + "a Graonlainn an Iar$Tìde samhraidh na Graonlainn an Iar\x08Àm Guam\x10Àm" + + " a’ Chamais\x0eÀm Guidheàna(Àm nan Eileanan Hawai’i ’s Aleutach,Bun-àm n" + + "an Eileanan Hawai’i ’s Aleutach4Tìde Samhraidh nan Eileanan Hawai’i ’s A" + + "leutach\x0dÀm Hong Kong\x11Bun-àm Hong Kong\x19Tìde samhraidh Hong Kong" + + "\x08Àm Hovd\x0cBun-àm Hovd\x14Tìde samhraidh Hovd\x12Àm nan Innseachan" + + "\x17Àm Cuan nan Innseachan\x13Àm Sìn-Innseanach\x1aÀm Meadhan nan Innd-I" + + "nnse\x19Àm nan Innd-Innse an Ear\x19Àm nan Innd-Innse an Iar\x0bÀm Iorài" + + "n\x0fBun-àm Ioràin\x17Tìde samhraidh Ioràin\x0bÀm Irkutsk\x0fBun-àm Irku" + + "tsk\x17Tìde Samhraidh Irkutsk\x0bÀm Iosrael\x0fBun-àm Iosrael\x17Tìde sa" + + "mhraidh Iosrael\x0fÀm na Seapaine\x13Bun-àm na Seapaine\x1bTìde samhraid" + + "h na Seapaine\x1cÀm Petropavlovsk-Kamchatsky Bun-àm Petropavlovsk-Kamcha" + + "tsky(Tìde samhraidh Petropavlovsk-Kamchatsky\x17Àm Casachstàin an Ear" + + "\x17Àm Casachstàin an Iar\x0cÀm Choirèa\x10Bun-àm Choirèa\x18Tìde samhra" + + "idh Choirèa\x0aÀm Kosrae\x0fÀm Krasnoyarsk\x13Bun-àm Krasnoyarsk\x1bTìde" + + " samhraidh Krasnoyarsk\x10Àm Cìorgastain\x09Àm Lanca\x14Àm Eileanan Tera" + + "ina\x0dÀm Lord Howe\x11Bun-àm Lord Howe\x19Tìde samhraidh Lord Howe\x0cÀ" + + "m Macàthu\x10Bun-àm Macàthu\x18Tìde samhraidh Macàthu\x15Àm Eilein MhicG" + + "uaire\x0bÀm Magadan\x0fBun-àm Magadan\x17Tìde Samhraidh Magadan\x0fÀm Mh" + + "alaidhsea\x1bÀm nan Eileanan Mhaladaibh\x1aÀm Eileanan a’ Mharcais\x16Àm" + + " Eileanan Mharshall\x1bÀm nan Eileanan Mhoiriseas\x1fBun-àm nan Eileanan" + + " Mhoiriseas'Tìde samhraidh nan Eileanan Mhoiriseas\x0bÀm Mhawson\x1bÀm M" + + "heagsago an Iar-thuath\x1fBun-àm Mheagsago an Iar-thuath'Tìde samhraidh " + + "Mheagsago an Iar-thuath Àm a’ Chuain Sèimh Mheagsago$Bun-àm a’ Chuain Sè" + + "imh Mheagsago,Tìde samhraidh a’ Chuain Sèimh Mheagsago\x0eÀm Ulan Bator" + + "\x12Bun-àm Ulan Bator\x1aTìde samhraidh Ulan Bator\x0aÀm Mhosgo\x0eBun-à" + + "m Mhosgo\x16Tìde samhraidh Mhosgo\x0cÀm Miànmar\x0aÀm Nabhru\x0bÀm Neapà" + + "l\x15Àm Chailleann Nuaidh\x19Bun-àm Chailleann Nuaidh!Tìde samhraidh Cha" + + "illeann Nuaidh\x14Àm Shealainn Nuaidh\x18Bun-àm Shealainn Nuaidh Tìde sa" + + "mhraidh Shealainn Nuaidh\x13Àm Talamh an Èisg\x17Bun-àm Talamh an Èisg" + + "\x1fTìde samhraidh Talamh an Èisg\x08Àm Niue\x12Àm Eilein Norfolk\x17Àm " + + "Fernando de Noronha\x1bBun-àm Fernando de Noronha#Tìde Samhraidh Fernand" + + "o de Noronha#Àm nan Eileanan Mairianach a Tuath\x0fÀm Novosibirsk\x13Bun" + + "-àm Novosibirsk\x1bTìde samhraidh Novosibirsk\x08Àm Omsk\x0cBun-àm Omsk" + + "\x14Tìde samhraidh Omsk\x0eÀm Pagastàin\x12Bun-àm Pagastàin\x1aTìde samh" + + "raidh Pagastàin\x0aÀm Palabh\x1bÀm Gini Nuaidh Paputhaiche\x0eÀm Paragua" + + "idh\x12Bun-àm Paraguaidh\x1aTìde samhraidh Paraguaidh\x0aÀm Pearù\x0eBun" + + "-àm Pearù\x16Tìde samhraidh Pearù\x1aÀm nan Eilean Filipineach\x1eBun-àm" + + " nan Eilean Filipineach&Tìde samhraidh nan Eilean Filipineach\x14Àm Eile" + + "anan Phoenix\x1eÀm Saint Pierre agus Miquelon\x22Bun-àm Saint Pierre agu" + + "s Miquelon*Tìde Samhraidh Saint Pierre agus Miquelon\x15Àm Peit a’ Chàir" + + "n\x0bÀm Pohnpei\x0fÀm Qızılorda\x13Bun-àm Qızılorda\x1bTìde samhraidh Qı" + + "zılorda\x0bÀm Reunion\x0bÀm Rothera\x0cÀm Sakhalin\x10Bun-àm Sakhalin" + + "\x18Tìde samhraidh Sakhalin\x0aÀm Samara\x0eBun-àm Samara\x16Tìde samhra" + + "idh Samara\x0bÀm Samotha\x0fBun-àm Samotha\x17Tìde samhraidh Samotha\x1a" + + "Àm nan Eileanan Sheiseall\x0eÀm Singeapòr\x15Àm Eileanan Sholaimh\x13Àm" + + " Seòrsea a Deas\x0cÀm Suranaim\x0aÀm Shyowa\x0aÀm Tahiti\x0aÀm Taipei" + + "\x0eBun-àm Taipei\x16Tìde samhraidh Taipei\x12Àm Taidigeastàin\x0bÀm Tok" + + "elau\x09Àm Tonga\x0dBun-àm Tonga\x15Tìde samhraidh Tonga\x09Àm Chuuk\x12" + + "Àm Turcmanastàin\x16Bun-àm Turcmanastàin\x1eTìde samhraidh Turcmanastài" + + "n\x0bÀm Tubhalu\x0dÀm Uruguaidh\x11Bun-àm Uruguaidh\x19Tìde samhraidh Ur" + + "uguaidh\x0fÀm Usbagastàn\x13Bun-àm Usbagastàn\x1bTìde samhraidh Usbagast" + + "àn\x0bÀm Vanuatu\x0fBun-àm Vanuatu\x17Tìde samhraidh Vanuatu\x12Àm na B" + + "heiniseala\x0fÀm Vladivostok\x13Bun-àm Vladivostok\x1bTìde Samhraidh Vla" + + "divostok\x0dÀm Volgograd\x11Bun-àm Volgograd\x19Tìde samhraidh Volgograd" + + "\x0aÀm Vostok\x0fÀm Eilean Wake\x16Àm Uallas agus Futuna\x0bÀm Yakutsk" + + "\x0fBun-àm Yakutsk\x17Tìde samhraidh Yakutsk\x11Àm Yekaterinburg\x15Bun-" + + "àm Yekaterinburg\x1dTìde samhraidh Yekaterinburg" + +var bucket41 string = "" + // Size: 11502 bytes + "\x1acccc, d 'de' MMMM 'de' Y G\x13d 'de' MMM 'de' y G\x0d{1} 'ás' {0}" + + "\x04xan.\x04feb.\x04mar.\x04abr.\x04maio\x05xuño\x04xul.\x04ago.\x04set." + + "\x04out.\x04nov.\x04dec.\x02x.\x02f.\x02m.\x02a.\x02s.\x02o.\x02n.\x02d." + + "\x07xaneiro\x08febreiro\x05marzo\x05abril\x05xullo\x06agosto\x08setembro" + + "\x07outubro\x08novembro\x08decembro\x04Xan.\x04Feb.\x04Mar.\x04Abr.\x04M" + + "aio\x05Xuño\x04Xul.\x04Ago.\x04Set.\x04Out.\x04Nov.\x04Dec.\x07Xaneiro" + + "\x08Febreiro\x05Marzo\x05Abril\x05Xullo\x06Agosto\x08Setembro\x07Outubro" + + "\x08Novembro\x08Decembro\x02l.\x02v.\x04Dom.\x04Luns\x05Mér.\x04Xov.\x04" + + "Ven.\x05Sáb.\x07Domingo\x06Martes\x09Mércores\x05Xoves\x06Venres\x07Sába" + + "do\x0e1.º trimestre\x0e2.º trimestre\x0e3.º trimestre\x0e4.º trimestre" + + "\x08da noite\x0cda madrugada\x09da mañá\x0cdo mediodía\x08da tarde\x0ame" + + "dianoite\x06mañá\x05noite\x13antes da Era Común\x0dda Era Común\x04a.C." + + "\x06a.E.C.\x04d.C.\x04E.C.\x11d 'de' MMM 'de' y\x0c{0} 'do' {1}\x08{0}, " + + "{1}\x03ano\x0co ano pasado\x08este ano\x0eo próximo ano\x0aen {0} ano" + + "\x0ben {0} anos\x0bhai {0} ano\x0chai {0} anos\x0aano pasado\x0cseguinte" + + " ano\x12o trimestre pasado\x0eeste trimestre\x14o próximo trimestre\x0ct" + + "rim. pasado\x0aeste trim.\x0etrim. seguinte\x0co mes pasado\x08este mes" + + "\x0eo próximo mes\x09m. pasado\x07este m.\x0bm. seguinte\x0fa semana pas" + + "ada\x0besta semana\x11a próxima semana\x0den {0} semana\x0een {0} semana" + + "s\x0ehai {0} semana\x0fhai {0} semanas\x0fa semana do {0}\x0bsem. pasada" + + "\x09esta sem.\x0dsem. seguinte\x0chai {0} sem.\x07antonte\x04onte\x04hox" + + "e\x0cpasadomañá\x08en {0} d\x09hai {0} d\x0edía da semana\x10o domingo p" + + "asado\x0ceste domingo\x12o próximo domingo\x0fhai {0} domingo\x10hai {0}" + + " domingos\x0do dom. pasado\x09este dom.\x0fo próximo dom.\x0ben {0} dom." + + "\x0chai {0} dom.\x0bo dom. pas.\x0do próx. dom.\x0do luns pasado\x09este" + + " luns\x0fo próximo luns\x0ben {0} luns\x0chai {0} luns\x0bo luns pas." + + "\x0do próx. luns\x0fo martes pasado\x0beste martes\x11o próximo martes" + + "\x0den {0} martes\x0do mar. pasado\x09este mar.\x0fo próximo mar.\x0ben " + + "{0} mar.\x0chai {0} mar.\x0bo mar. pas.\x0do próx. mar.\x12o mércores pa" + + "sado\x0eeste mércores\x14o próximo mércores\x10en {0} mércores\x11hai {0" + + "} mércores\x0eo mér. pasado\x0aeste mér.\x10o próximo mér.\x0cen {0} mér" + + ".\x0dhai {0} mér.\x0co mér. pas.\x0eo próx. mér.\x0eo xoves pasado\x0aes" + + "te xoves\x10o próximo xoves\x0cen {0} xoves\x0dhai {0} xoves\x0do xov. p" + + "asado\x09este xov.\x0fo próximo xov.\x0ben {0} xov.\x0chai {0} xov.\x0bo" + + " xov. pas.\x0do próx. xov.\x0fo venres pasado\x0beste venres\x11o próxim" + + "o venres\x0den {0} venres\x0ehai {0} venres\x0do ven. pasado\x09este ven" + + ".\x0fo próximo ven.\x0ben {0} ven.\x0chai {0} ven.\x0bo ven. pas.\x0do p" + + "róx. ven.\x10o sábado pasado\x0ceste sábado\x12o próximo sábado\x0een {0" + + "} sábado\x0fen {0} sábados\x0fhai {0} sábado\x10hai {0} sábados\x0eo sáb" + + ". pasado\x0aeste sáb.\x10o próximo sáb.\x0cen {0} sáb.\x0dhai {0} sáb." + + "\x0co sáb. pas.\x0eo próx. sáb.\x0anesta hora\x09hai {0} h\x0cneste minu" + + "to\x0den {0} minuto\x0een {0} minutos\x0ehai {0} minuto\x0fhai {0} minut" + + "os\x0bhai {0} min\x0een {0} segundo\x0fen {0} segundos\x0fhai {0} segund" + + "o\x10hai {0} segundos\x09hai {0} s\x0cfuso horario\x0eHorario de {0}\x18" + + "Horario de verán de {0}\x18Horario estándar de {0}\x1aTempo Universal Co" + + "ordenado\x1cHorario de verán británico\x1bHorario estándar irlandés\x16H" + + "orario de Afganistán\x1aHorario de África Central\x1bHorario de África O" + + "riental#Horario estándar de África do Sur\x1dHorario de África Occidenta" + + "l'Horario estándar de África Occidental'Horario de verán de África Occid" + + "ental\x11Horario de Alasca\x1bHorario estándar de Alasca\x1bHorario de v" + + "erán de Alasca\x13Horario do Amazonas\x1dHorario estándar do Amazonas" + + "\x1dHorario de verán do Amazonas\x1eHorario central, Norteamérica(Horari" + + "o estándar central, Norteamérica(Horario de verán central, Norteamérica" + + "\x1fHorario do leste, Norteamérica)Horario estándar do leste, Norteaméri" + + "ca)Horario de verán do leste, Norteamérica\x22Horario da montaña, Nortea" + + "mérica,Horario estándar da montaña, Norteamérica,Horario de verán da mon" + + "taña, Norteamérica#Horario do Pacífico, Norteamérica-Horario estándar do" + + " Pacífico, Norteamérica-Horario de verán do Pacífico, Norteamérica\x11Ho" + + "rario de Anadir\x1bHorario estándar de Anadir\x1bHorario de verán de Ana" + + "dir\x0fHorario de Apia\x19Horario estándar de Apia\x19Horario de verán d" + + "e Apia\x0eHorario árabe\x18Horario estándar árabe\x18Horario de verán ár" + + "abe\x14Horario de Arxentina\x1eHorario estándar de Arxentina\x1eHorario " + + "de verán de Arxentina\x1fHorario de Arxentina Occidental)Horario estánda" + + "r de Arxentina Occidental)Horario de verán de Arxentina Occidental\x12Ho" + + "rario de Armenia\x1cHorario estándar de Armenia\x1cHorario de verán de A" + + "rmenia\x15Horario do Atlántico\x1fHorario estándar do Atlántico\x1fHorar" + + "io de verán do Atlántico\x1cHorario de Australia Central&Horario estánda" + + "r de Australia Central&Horario de verán de Australia Central'Horario de " + + "Australia Occidental Central1Horario estándar de Australia Occidental Ce" + + "ntral1Horario de verán de Australia Occidental Central\x1dHorario de Aus" + + "tralia Oriental'Horario estándar de Australia Oriental'Horario de verán " + + "de Australia Oriental\x1fHorario de Australia Occidental)Horario estánda" + + "r de Australia Occidental)Horario de verán de Australia Occidental\x16Ho" + + "rario de Acerbaixán Horario estándar de Acerbaixán Horario de verán de A" + + "cerbaixán\x12Horario das Azores\x1cHorario estándar das Azores\x1cHorari" + + "o de verán das Azores\x15Horario de Bangladés\x1fHorario estándar de Ban" + + "gladés\x1fHorario de verán de Bangladés\x11Horario de Bután\x12Horario d" + + "e Bolivia\x13Horario de Brasilia\x1dHorario estándar de Brasilia\x1dHora" + + "rio de verán de Brasilia\x1cHorario de Brunei Darussalam\x15Horario de C" + + "abo Verde\x1fHorario estándar de Cabo Verde\x1fHorario de verán de Cabo " + + "Verde\x1aHorario estándar chamorro\x12Horario de Chatham\x1cHorario está" + + "ndar de Chatham\x1cHorario de verán de Chatham\x10Horario de Chile\x1aHo" + + "rario estándar de Chile\x1aHorario de verán de Chile\x10Horario de China" + + "\x1aHorario estándar de China\x1aHorario de verán de China\x15Horario de" + + " Choibalsan\x1fHorario estándar de Choibalsan\x1fHorario de verán de Cho" + + "ibalsan\x18Horario da Illa de Nadal\x17Horario das Illas Cocos\x13Horari" + + "o de Colombia\x1dHorario estándar de Colombia\x1dHorario de verán de Col" + + "ombia\x16Horario das Illas Cook Horario estándar das Illas Cook&Horario " + + "de verán medio das Illas Cook\x0fHorario de Cuba\x19Horario estándar de " + + "Cuba\x19Horario de verán de Cuba\x10Horario de Davis\x1dHorario de Dumon" + + "t-d’Urville\x16Horario de Timor Leste\x19Horario da Illa de Pascua#Horar" + + "io estándar da Illa de Pascua#Horario de verán da Illa de Pascua\x12Hora" + + "rio de Ecuador\x19Horario de Europa Central#Horario estándar de Europa C" + + "entral#Horario de verán de Europa Central\x1aHorario de Europa Oriental$" + + "Horario estándar de Europa Oriental$Horario de verán de Europa Oriental " + + "Horario do extremo leste europeo\x1cHorario de Europa Occidental&Horario" + + " estándar de Europa Occidental&Horario de verán de Europa Occidental\x1a" + + "Horario das Illas Malvinas$Horario estándar das Illas Malvinas$Horario d" + + "e verán das Illas Malvinas\x10Horario de Fidxi\x1aHorario estándar de Fi" + + "dxi\x1aHorario de verán de Fidxi\x1bHorario da Güiana Francesa3Horario d" + + "as Terras Austrais e Antárticas Francesas\x16Horario das Galápagos\x12Ho" + + "rario de Gambier\x12Horario de Xeorxia\x1cHorario estándar de Xeorxia" + + "\x1cHorario de verán de Xeorxia\x19Horario das Illas Gilbert!Horario do " + + "meridiano de Greenwich\x1fHorario de Groenlandia Oriental)Horario estánd" + + "ar de Groenlandia Oriental)Horario de verán de Groenlandia Oriental!Hora" + + "rio de Groenlandia Occidental+Horario estándar de Groenlandia Occidental" + + "+Horario de verán de Groenlandia Occidental\x1aHorario estándar do Golfo" + + "\x12Horario da Güiana\x1aHorario de Hawai-Aleutiano$Horario estándar de " + + "Hawai-Aleutiano$Horario de verán de Hawai-Aleutiano\x14Horario de Hong K" + + "ong\x1eHorario estándar de Hong Kong\x1eHorario de verán de Hong Kong" + + "\x0fHorario de Hovd\x19Horario estándar de Hovd\x19Horario de verán de H" + + "ovd\x1aHorario estándar da India\x1aHorario do Océano Índico\x14Horario " + + "de Indochina\x1cHorario de Indonesia Central\x1dHorario de Indonesia Ori" + + "ental\x1fHorario de Indonesia Occidental\x10Horario de Irán\x1aHorario e" + + "stándar de Irán\x1aHorario de verán de Irán\x12Horario de Irkutsk\x1cHor" + + "ario estándar de Irkutsk\x1cHorario de verán de Irkutsk\x11Horario de Is" + + "rael\x1bHorario estándar de Israel\x1bHorario de verán de Israel\x11Hora" + + "rio do Xapón\x1bHorario estándar do Xapón\x1bHorario de verán do Xapón$H" + + "orario de Petropávlovsk-Kamchatski.Horario estándar de Petropávlovsk-Kam" + + "chatski.Horario de verán de Petropávlovsk-Kamchatski Horario de Casaquis" + + "tán Oriental\x22Horario de Casaquistán Occidental\x10Horario de Corea" + + "\x1aHorario estándar de Corea\x1aHorario de verán de Corea\x11Horario de" + + " Kosrae\x16Horario de Krasnoyarsk Horario estándar de Krasnoyarsk Horari" + + "o de verán de Krasnoyarsk\x19Horario de Quirguicistán\x1aHorario das Ill" + + "as da Liña\x14Horario de Lord Howe\x1eHorario estándar de Lord Howe\x1eH" + + "orario de verán de Lord Howe\x19Horario da Illa Macquarie\x12Horario de " + + "Magadan\x1cHorario estándar de Magadan\x1cHorario de verán de Magadan" + + "\x13Horario de Malaisia\x14Horario das Maldivas\x15Horario das Marquesas" + + "\x1aHorario das Illas Marshall\x13Horario de Mauricio\x1dHorario estánda" + + "r de Mauricio\x1dHorario de verán de Mauricio\x11Horario de Mawson\x1bHo" + + "rario de México Noroeste%Horario estándar de México Noroeste%Horario de " + + "verán de México Noroeste\x1dHorario do Pacífico mexicano'Horario estánda" + + "r do Pacífico mexicano'Horario de verán do Pacífico mexicano\x17Horario " + + "de Ulán Bátor!Horario estándar de Ulán Bátor!Horario de verán de Ulán Bá" + + "tor\x12Horario de Moscova\x1cHorario estándar de Moscova\x1cHorario de v" + + "erán de Moscova\x13Horario de Birmania\x10Horario de Nauru\x10Horario de" + + " Nepal\x19Horario de Nova Caledonia#Horario estándar de Nova Caledonia#H" + + "orario de verán de Nova Caledonia\x18Horario de Nova Zelandia\x22Horario" + + " estándar de Nova Zelandia\x22Horario de verán de Nova Zelandia\x14Horar" + + "io de Terranova\x1eHorario estándar de Terranova\x1eHorario de verán de " + + "Terranova\x0fHorario de Niue\x19Horario das Illas Norfolk\x1eHorario de " + + "Fernando de Noronha(Horario estándar de Fernando de Noronha(Horario de v" + + "erán de Fernando de Noronha\x16Horario de Novosibirsk Horario estándar d" + + "e Novosibirsk Horario de verán de Novosibirsk\x0fHorario de Omsk\x19Hora" + + "rio estándar de Omsk\x19Horario de verán de Omsk\x15Horario de Paquistán" + + "\x1fHorario estándar de Paquistán\x1fHorario de verán de Paquistán\x10Ho" + + "rario de Palau\x1dHorario de Papúa-Nova Guinea\x13Horario de Paraguai" + + "\x1dHorario estándar de Paraguai\x1dHorario de verán de Paraguai\x10Hora" + + "rio de Perú\x1aHorario estándar de Perú\x1aHorario de verán de Perú\x14H" + + "orario de Filipinas\x1eHorario estándar de Filipinas\x1eHorario de verán" + + " de Filipinas\x18Horario das Illas Fénix\x22Horario de Saint Pierre e Mi" + + "quelon,Horario estándar de Saint Pierre e Miquelon,Horario de verán de S" + + "aint Pierre e Miquelon\x13Horario de Pitcairn\x12Horario de Pohnpei\x14H" + + "orario de Pyongyang\x13Horario de Reunión\x12Horario de Rothera\x13Horar" + + "io de Sakhalin\x1eHorario estándar de Sakhalín\x1dHorario de verán de Sa" + + "khalin\x11Horario de Samara\x1bHorario estándar de Samara\x1bHorario de " + + "verán de Samara\x10Horario de Samoa\x1aHorario estándar de Samoa\x1aHora" + + "rio de verán de Samoa\x14Horario das Seixeles\x1dHorario estándar de Sin" + + "gapur\x1aHorario das Illas Salomón\x19Horario de Xeorxia do Sur\x13Horar" + + "io de Suriname\x10Horario de Syowa\x12Horario de Tahití\x11Horario de Ta" + + "ipei\x1bHorario estándar de Taipei\x1bHorario de verán de Taipei\x17Hora" + + "rio de Taxiquistán\x13Horario de Toquelau\x10Horario de Tonga\x1aHorario" + + " estándar de Tonga\x1aHorario de verán de Tonga\x10Horario de Chuuk\x19H" + + "orario de Turcomenistán#Horario estándar de Turcomenistán#Horario de ver" + + "án de Turcomenistán\x11Horario de Tuvalu\x12Horario de Uruguai\x1cHorar" + + "io estándar de Uruguai\x1cHorario de verán de Uruguai\x17Horario de Usbe" + + "quistán!Horario estándar de Usbequistán!Horario de verán de Usbequistán" + + "\x12Horario de Vanuatu\x1cHorario estándar de Vanuatu\x1cHorario de verá" + + "n de Vanuatu\x14Horario de Venezuela\x16Horario de Vladivostok Horario e" + + "stándar de Vladivostok Horario de verán de Vladivostok\x15Horario de Vol" + + "gogrado\x1fHorario estándar de Volgogrado\x1fHorario de verán de Volgogr" + + "ado\x11Horario de Vostok\x14Horario da Illa Wake\x1aHorario de Wallis e " + + "Futuna\x12Horario de Iakutsk\x1cHorario estándar de Iakutsk\x1cHorario d" + + "e verán de Iakutsk\x18Horario de Ekaterimburgo\x22Horario estándar de Ek" + + "aterimburgo\x22Horario de verán de Ekaterimburgo\x05Lunes\x0aMiércoles" + + "\x06Jueves\x07Viernes" + +var bucket42 string = "" + // Size: 23077 bytes + "\x07Sunntig\x09Määntig\x09Ziischtig\x08Mittwuch\x09Dunschtig\x07Friitig" + + "\x09Samschtig\x04nam.\x08am Morge\x07zmittag\x0bam Namittag\x06zaabig" + + "\x06znacht\x0cam Vormittag\x08Namittag\x05Morge\x05Aabig\x22vor der gewö" + + "hnlichen Zeitrechnung\x1eder gewöhnlichen Zeitrechnung\x08v. d. Z.\x05d." + + " Z.\x03vdZ\x02dZ\x04Jaar\x0bletzte Jaar\x0adiese Jaar\x0dnächste Jaar" + + "\x05Monet\x0cletzte Monet\x0bdiese Monet\x0enächste Monet\x05Wuche\x0cle" + + "tzte Wuche\x0bdiese Wuche\x0enächste Wuche\x0bvorgeschter\x08geschter" + + "\x04hüt\x05moorn\x0aübermoorn\x08Wuchetag\x14Sunntig letzte Wuche\x13Sun" + + "ntig diese Wuche\x16Sunntig nächste Wuche\x16Määntig letzte Wuche\x15Mää" + + "ntig diese Wuche\x18Määntig nächste Wuche\x16Ziischtig letzte Wuche\x15Z" + + "iischtig diese Wuche\x18Ziischtig nächste Wuche\x15Mittwuch letzte Wuche" + + "\x14Mittwuch diese Wuche\x17Mittwuch nächste Wuche\x16Dunschtig letzte W" + + "uche\x15Dunschtig diese Wuche\x18Dunschtig nächste Wuche\x14Friitig letz" + + "te Wuche\x13Friitig diese Wuche\x16Friitig nächste Wuche\x16Samschtig le" + + "tzte Wuche\x15Samschtig diese Wuche\x18Samschtig nächste Wuche\x0cTagesh" + + "älfti\x07Schtund\x07Minuute\x09Acre-Ziit\x13Acre-Schtandardziit\x0fAcre" + + "-Summerziit\x12Afghanischtan-Ziit\x18Zentralafrikanischi Ziit\x16Oschtaf" + + "rikanischi Ziit\x17Süüdafrikanischi ziit\x17Weschtafrikanischi Ziit!Wesc" + + "htafrikanischi Schtandardziit\x1dWeschtafrikanischi Summerziit\x0bAlaska" + + "-Ziit\x15Alaska-Schtandardziit\x11Alaska-Summerziit\x0bAlmaty-Ziit\x15Al" + + "maty-Schtandardziit\x11Almaty-Summerziit\x0dAmazonas-Ziit\x17Amazonas-Sc" + + "htandardziit\x13Amazonas-Summerziit\x15Amerika-Zentraal Ziit\x1fAmerika-" + + "Zentraal Schtandardziit\x1bAmerika-Zentraal Summerziit\x17Mitteleuropäis" + + "chi Ziit!Mitteleuropäischi Schtandardziit\x1dMitteleuropäischi Summerzii" + + "t\x16Oschteuropäischi Ziit Oschteuropäischi Schtandardziit\x1cOschteurop" + + "äischi Summerziit\x17Weschteuropäischi Ziit!Weschteuropäischi Schtandar" + + "dziit\x1dWeschteuropäischi Summerziit\x0dMoskauer Ziit\x17Moskauer Schta" + + "ndardziit\x13Moskauer Summerziit\x11EEEE, d MMMM, G y\x0bd MMMM, G y\x0a" + + "d MMM, G y\x0dd-MM- GGGGG y\x12જાન્યુ\x12ફેબ્રુ\x0fમાર્ચ\x12એપ્રિલ\x06મે" + + "\x09જૂન\x0fજુલાઈ\x0fઑગસ્ટ\x0fસપ્ટે\x0fઑક્ટો\x09નવે\x0cડિસે\x06જા\x06ફે" + + "\x06મા\x03એ\x06જૂ\x06જુ\x03ઑ\x03સ\x03ન\x06ડિ\x1bજાન્યુઆરી\x1bફેબ્રુઆરી" + + "\x1bસપ્ટેમ્બર\x15ઑક્ટોબર\x15નવેમ્બર\x18ડિસેમ્બર\x09રવિ\x09સોમ\x0cમંગળ" + + "\x09બુધ\x0cગુરુ\x0fશુક્ર\x09શનિ\x03ર\x06સો\x06મં\x06બુ\x06ગુ\x06શુ\x03શ" + + "\x12રવિવાર\x12સોમવાર\x15મંગળવાર\x12બુધવાર\x15ગુરુવાર\x18શુક્રવાર\x12શનિવ" + + "ાર%પહેલો ત્રિમાસ\x22બીજો ત્રિમાસ(ત્રીજો ત્રિમાસ\x22ચોથો ત્રિમાસ\x1eમધ્" + + "યરાત્રિ\x0fસવારે\x0fબપોરે\x0fસાંજે\x12રાત્રે\x16મ.રાત્રિ\x0cસવાર\x0cબપ" + + "ોર\x0cસાંજ\x12રાત્રિ%ઈસવીસન પૂર્વે/સામાન્ય યુગ પહેલા\x12ઇસવીસન\x1fસામા" + + "ન્ય યુગ\x1aઈ.સ.પૂર્વે\x12સા.યુ.પ.\x08ઈ.સ.\x0eસા.યુ.\x0eઇ સ પુ\x06ઇસ" + + "\x0fhh:mm:ss a zzzz\x0chh:mm:ss a z\x0ahh:mm:ss a\x07hh:mm a\x09યુગ\x0cવ" + + "ર્ષ\x19ગયા વર્ષે\x13આ વર્ષે\x1cઆવતા વર્ષે\x19{0} વર્ષમાં#{0} વર્ષ પહેલ" + + "ાં\x04વ.\x11+{0} વર્ષ {0} વર્ષ પહેલા\x11-{0} વર્ષ\x1bત્રિમાસિક1છેલ્લું" + + " ત્રિમાસિક\x1fઆ ત્રિમાસિક.પછીનું ત્રિમાસિક({0} ત્રિમાસિકમાં2{0} ત્રિમાસિ" + + "ક પહેલાં\x16ત્રિમાસ.\x22{0} ત્રિમાસમાં,{0} ત્રિમાસ પહેલાં\x0fમહિનો\x19" + + "ગયા મહિને\x13આ મહિને\x1cઆવતા મહિને\x1c{0} મહિનામાં&{0} મહિના પહેલાં" + + "\x04મ.\x1bઅઠવાડિયું\x22ગયા અઠવાડિયે\x1cઆ અઠવાડિયે%આવતા અઠવાડિયે%{0} અઠવા" + + "ડિયામાં/{0} અઠવાડિયા પહેલાં){0} નું અઠવાડિયું\x07અઠ.\x15{0} અઠ. માં" + + "\x1e{0} અઠ. પહેલાં\x0cદિવસ\x22ગયા પરમદિવસે\x12ગઈકાલે\x09આજે\x18આવતીકાલે" + + "\x18પરમદિવસે\x19{0} દિવસમાં#{0} દિવસ પહેલાં\x11+{0} દિવસ\x11-{0} દિવસ+અઠ" + + "વાડિયાનો દિવસ\x1fગયા રવિવારે\x19આ રવિવારે\x22આવતા રવિવારે\x17+{0} રવિવ" + + "ાર\x17-{0} રવિવાર\x14ગયા રવિ.\x0dઆ રવિ\x16આવતા રવિ\x1fગયા સોમવારે\x19આ" + + " સોમવારે\x22આવતા સોમવારે\x17+{0} સોમવાર\x17-{0} સોમવાર\x22ગયા મંગળવારે" + + "\x1cઆ મંગળવારે%આવતા મંગળવારે\x1a+{0} મંગળવાર\x1a-{0} મંગળવાર\x1fગયા બુધવ" + + "ારે\x19આ બુધવારે\x22આવતા બુધવારે\x17+{0} બુધવાર\x17-{0} બુધવાર\x22ગયા " + + "ગુરુવારે\x1cઆ ગુરુવારે%આવતા ગુરુવારે\x1a+{0} ગુરુવાર\x1a-{0} ગુરુવાર%ગ" + + "યા શુક્રવારે\x1fઆ શુક્રવારે(આવતા શુક્રવારે\x1d+{0} શુક્રવાર\x1d-{0} શુ" + + "ક્રવાર\x1fગયા શનિવારે\x19આ શનિવારે\x22આવતા શનિવારે\x17+{0} શનિવાર\x17-" + + "{0} શનિવાર\x0cકલાક\x10આ કલાક\x19{0} કલાકમાં#{0} કલાક પહેલાં\x04ક.\x0fમિન" + + "િટ\x13આ મિનિટ\x1c{0} મિનિટમાં&{0} મિનિટ પહેલાં\x07મિ.\x12સેકન્ડ\x0fહમણ" + + "ાં\x1c{0} સેકંડમાં&{0} સેકંડ પહેલાં\x07સે.\x13સમય ઝોન\x0d{0} સમય\x08{0" + + "} (+1)\x1a{0} માનક સમય8સંકલિત યુનિવર્સલ સમય5બ્રિટિશ ગ્રીષ્મ સમય&આઈરિશ મા" + + "નક સમય\x13એકર સમય/એકર પ્રમાણભૂત સમય)એકર ગ્રીષ્મ સમય+અફઘાનિસ્તાન સમય,મધ" + + "્ય આફ્રિકા સમય/પૂર્વ આફ્રિકા સમય?દક્ષિણ આફ્રિકા માનક સમય2પશ્ચિમ આફ્રિક" + + "ા સમય?પશ્ચિમ આફ્રિકા માનક સમયHપશ્ચિમ આફ્રિકા ગ્રીષ્મ સમય\x1fઅલાસ્કા સમ" + + "ય;અલાસ્કા પ્રમાણભૂત સમય,અલાસ્કા દિવસ સમય\x1fઅલ્માટી સમય;અલ્માટી પ્રમાણ" + + "ભૂત સમય5અલ્માટી ગ્રીષ્મ સમય\x1cએમેઝોન સમય)એમેઝોન માનક સમય2એમેઝોન ગ્રીષ" + + "્મ સમય<ઉત્તર અમેરિકન મધ્ય સમયgઉત્તર અમેરિકન કેન્દ્રિય પ્રમાણભૂત સમયIઉત" + + "્તર અમેરિકન મધ્ય દિવસ સમયBઉત્તર અમેરિકન પૂર્વી સમય^ઉત્તર અમેરિકન પૂર્વ" + + "ી પ્રમાણભૂત સમયOઉત્તર અમેરિકન પૂર્વી દિવસ સમયEઉત્તર અમેરિકન માઉન્ટન સમ" + + "યaઉત્તર અમેરિકન માઉન્ટન પ્રમાણભૂત સમયRઉત્તર અમેરિકન માઉન્ટન દિવસ સમયEઉ" + + "ત્તર અમેરિકન પેસિફિક સમયaઉત્તર અમેરિકન પેસિફિક પ્રમાણભૂત સમયRઉત્તર અમે" + + "રિકન પેસિફિક દિવસ સમય\x1cઅનાદિર સમય8અનાડિર પ્રમાણભૂત સમય2અનાડિર ગ્રીષ્" + + "મ સમય\x19એપિયા સમય5એપિયા પ્રમાણભૂત સમય&અપિયા દિવસ સમય\x1cઅક્તાઉ સમય8અક" + + "્તાઉ પ્રમાણભૂત સમય2અક્તાઉ ગ્રીષ્મ સમય\x1cઍક્ટોબ સમય8ઍક્ટોબ પ્રમાણભૂત સ" + + "મય2ઍક્ટોબ ગ્રીષ્મ સમય\x1fઅરેબિયન સમય,અરેબિયન માનક સમય,અરેબિયન દિવસ સમય" + + "+અર્જેન્ટીના સમય8અર્જેન્ટીના માનક સમયAઆર્જેન્ટીના ગ્રીષ્મ સમયAપશ્ચિમી અર" + + "્જેન્ટીના સમયNપશ્ચિમી અર્જેન્ટીના માનક સમયWપશ્ચિમી અર્જેન્ટીના ગ્રીષ્મ" + + " સમય%આર્મેનિયા સમય2આર્મેનિયા માનક સમય;આર્મેનિયા ગ્રીષ્મ સમય%અટલાન્ટિક સમ" + + "યAઅટલાન્ટિક પ્રમાણભૂત સમય2અટલાન્ટિક દિવસ સમય8મધ્ય ઓસ્ટ્રેલિયન સમયTઓસ્ટ" + + "્રેલિયન મધ્ય પ્રમાણભૂત સમયEઓસ્ટ્રેલિયન મધ્ય દિવસ સમયNઓસ્ટ્રેલિયન મધ્ય " + + "પશ્ચિમી સમયjઓસ્ટ્રેલિયન મધ્ય પશ્ચિમી પ્રમાણભૂત સમય[ઓસ્ટ્રેલિયન મધ્ય પશ" + + "્ચિમી દિવસ સમયAપૂર્વીય ઓસ્ટ્રેલિયા સમય]ઓસ્ટ્રેલિયન પૂર્વીય પ્રમાણભૂત સ" + + "મયNઓસ્ટ્રેલિયન પૂર્વીય દિવસ સમયAપશ્ચિમી ઓસ્ટ્રેલિયા સમય]ઓસ્ટ્રેલિયન પશ" + + "્ચિમી પ્રમાણભૂત સમયNઓસ્ટ્રેલિયન પશ્ચિમી દિવસ સમય\x22અઝરબૈજાન સમય/અઝરબૈ" + + "જાન માનક સમય8અઝરબૈજાન ગ્રીષ્મ સમય\x1cએઝોર્સ સમય)એઝોર્સ માનક સમય2એઝોર્સ" + + " ગ્રીષ્મ સમય(બાંગ્લાદેશ સમય5બાંગ્લાદેશ માનક સમય>બાંગ્લાદેશ ગ્રીષ્મ સમય" + + "\x19ભૂટાન સમય\x22બોલિવિયા સમય(બ્રાઝિલિયા સમય5બ્રાઝિલિયા માનક સમય>બ્રાઝિલ" + + "િયા ગ્રીષ્મ સમય8બ્રૂનેઈ દારુસલામ સમય#કૅપ વર્ડે સમય0કૅપ વર્ડે માનક સમય9" + + "કૅપ વર્ડે ગ્રીષ્મ સમય)કેમોરો માનક સમય\x1cચેતહામ સમય)ચેતહામ માનક સમય)ચે" + + "તહામ દિવસ સમય\x16ચિલી સમય#ચિલી માનક સમય,ચિલી ગ્રીષ્મ સમય\x13ચીન સમય ચી" + + "ન માનક સમય ચીન દિવસ સમય%ચોઇબાલ્સન સમય2ચોઇબાલ્સન માનક સમય;ચોઇબાલ્સન ગ્ર" + + "ીષ્મ સમય5ક્રિસમસ આઇલેન્ડ સમય/કોકોઝ આઇલેન્ડ સમય\x22કોલંબિયા સમય/કોલંબિય" + + "ા માનક સમય8કોલંબિયા ગ્રીષ્મ સમય/કુક આઇલેન્ડ્સ સમય<કુક આઇલેન્ડ્સ માનક સ" + + "મયRકુક આઇલેન્ડ્સ અર્ધ ગ્રીષ્મ સમય\x1cક્યૂબા સમય)ક્યૂબા માનક સમય)ક્યૂબા" + + " દિવસ સમય\x19ડેવિસ સમયAડ્યુમોન્ટ-ડી‘ઉર્વિલ સમય)પૂર્વ તિમોર સમય/ઇસ્ટર આઇલ" + + "ેન્ડ સમય<ઇસ્ટર આઇલેન્ડ માનક સમયEઇસ્ટર આઇલેન્ડ ગ્રીષ્મ સમય\x22એક્વાડોર " + + "સમય/મધ્ય યુરોપિયન સમય<મધ્ય યુરોપિયન માનક સમયEમધ્ય યુરોપિયન ગ્રીષ્મ સમય" + + "5પૂર્વી યુરોપિયન સમયBપૂર્વી યુરોપિયન માનક સમયKપૂર્વી યુરોપીયન ગ્રીષ્મ સમ" + + "યKઆગળનું-પૂર્વીય યુરોપીયન સમય8પશ્ચિમી યુરોપિયન સમયEપશ્ચિમી યુરોપિયન મા" + + "નક સમયNપશ્ચિમી યુરોપિયન ગ્રીષ્મ સમય;ફોકલૅંડ આઇલેન્ડ્સ સમયHફૉકલૅંડ આઇલે" + + "ન્ડ્સ માનક સમયQફોકલૅંડ આઇલેન્ડ્સ ગ્રીષ્મ સમય\x16ફિજી સમય#ફિજી માનક સમય" + + ",ફિજી ગ્રીષ્મ સમય/ફ્રેન્ચ ગયાના સમયaફ્રેન્ચ સાઉધર્ન અને એન્ટાર્કટિક સમય%" + + "ગાલાપાગોસ સમય\x22ગેમ્બિયર સમય(જ્યોર્જિયા સમય5જ્યોર્જિયા માનક સમય>જ્યોર" + + "્જિયા ગ્રીષ્મ સમય5ગિલબર્ટ આઇલેન્ડ સમય2ગ્રીનવિચ મધ્યમ સમય8પૂર્વ ગ્રીનલે" + + "ન્ડ સમયEપૂર્વ ગ્રીનલેન્ડ માનક સમયNપૂર્વ ગ્રીનલેન્ડ ગ્રીષ્મ સમય;પશ્ચિમ " + + "ગ્રીનલેન્ડ સમયHપશ્ચિમ ગ્રીનલેન્ડ માનક સમયQપશ્ચિમ ગ્રીનલેન્ડ ગ્રીષ્મ સમ" + + "ય5ગ્વામ પ્રમાણભૂત સમય#ગલ્ફ માનક સમય\x19ગયાના સમય2હવાઈ-એલ્યુશિઅન સમય?હવ" + + "ાઇ-એલ્યુશિઅન માનક સમય?હવાઇ-એલ્યુશિઅન દિવસ સમય#હોંગ કોંગ સમય0હોંગ કોંગ " + + "માનક સમય9હોંગ કોંગ ગ્રીષ્મ સમય\x19હોવ્ડ સમય&હોવ્ડ માનક સમય/હોવ્ડ ગ્રીષ" + + "્મ સમય)ભારતીય માનક સમય2ભારતીય મહાસાગર સમય(ઇન્ડોચાઇના સમય8મધ્ય ઇન્ડોનેશ" + + "િયા સમયAપૂર્વીય ઇન્ડોનેશિયા સમયAપશ્ચિમી ઇન્ડોનેશિયા સમય\x16ઈરાન સમય#ઈર" + + "ાન માનક સમય#ઈરાન દિવસ સમય(ઇર્કુત્સ્ક સમય5ઇર્કુત્સ્ક માનક સમય>ઇર્કુત્સ્" + + "ક ગ્રીષ્મ સમય\x1cઇઝરાઇલ સમય)ઇઝરાઇલ માનક સમય)ઇઝરાઇલ દિવસ સમય\x19જાપાન સ" + + "મય&જાપાન માનક સમય&જાપાન દિવસ સમયVપેટ્રોપેવલોવ્સ્ક-કામચતસ્કી સમયrપેટ્રો" + + "પેવલોવ્સ્ક-કામચતસ્કી પ્રમાણભૂત સમયlપેટ્રોપેવલોવ્સ્ક-કામચતસ્કી ગ્રીષ્મ " + + "સમય8પૂર્વ કઝાકિસ્તાન સમય;પશ્ચિમ કઝાકિસ્તાન સમય\x1cકોરિયન સમય)કોરિયન મા" + + "નક સમય)કોરિયન દિવસ સમય\x19કોસરે સમય:ક્રેસ્નોયાર્સ્કી સમયAક્રસ્નોયાર્સ્" + + "ક માનક સમયJક્રેસનોયાર્સ્ક ગ્રીષ્મ સમય(કિર્ગિઝતાન સમય\x16લંકા સમય2લાઇન " + + "આઇલેન્ડ્સ સમય#લોર્ડ હોવ સમય?લોર્ડ હોવ પ્રમાણભૂત સમય0લોર્ડ હોવ દિવસ સમય" + + "\x16મકાઉ સમય2મકાઉ પ્રમાણભૂત સમય,મકાઉ ગ્રીષ્મ સમય8મેક્વાયર આઇલેન્ડ સમય" + + "\x19મગાડન સમય&મગાડન માનક સમય/મગાડન ગ્રીષ્મ સમય\x1fમલેશિયા સમય\x1cમાલદીવ " + + "સમય(માર્ક્યૂસસ સમય8માર્શલ આઇલેન્ડ્સ સમય\x22મોરિશિયસ સમય/મોરિશિયસ માનક " + + "સમય8મોરિશિયસ ગ્રીષ્મ સમય\x16મોસન સમયDઉત્તરપશ્ચિમ મેક્સિકો સમયQઉત્તરપશ્" + + "ચિમ મેક્સિકો માનક સમયQઉત્તરપશ્ચિમ મેક્સિકો દિવસ સમય8મેક્સીકન પેસિફિક સ" + + "મયEમેક્સીકન પેસિફિક માનક સમયEમેક્સીકન પેસિફિક દિવસ સમય&ઉલાન બાટોર સમય3" + + "ઉલાન બાટોર માનક સમય9ઉલાન બટોર ગ્રીષ્મ સમય\x1cમોસ્કો સમય8મોસ્કો પ્રમાણભ" + + "ૂત સમય2મોસ્કો ગ્રીષ્મ સમય\x22મ્યાનમાર સમય\x16નૌરુ સમય\x19નેપાળ સમય5ન્ય" + + "ુ સેલેડોનિયા સમયBન્યુ સેલેડોનિયા માનક સમયKન્યુ સેલેડોનિયા ગ્રીષ્મ સમય+" + + "ન્યુઝીલેન્ડ સમય8ન્યુઝીલેન્ડ માનક સમય8ન્યુઝીલેન્ડ દિવસ સમય7ન્યૂફાઉન્ડલે" + + "ન્ડ સમયSન્યૂફાઉન્ડલેન્ડ પ્રમાણભૂત સમયDન્યૂફાઉન્ડલેન્ડ દિવસ સમય\x16નીયુ" + + " સમય2નોરફૉક આઇલેન્ડ સમયEફર્નાન્ડો ડી નોરોન્હા સમયRફર્નાન્ડો ડી નોરોન્હા " + + "માનક સમયRફરનેન્ડો દે નોરોહા ગ્રીષ્મ સમયDઉત્તર મારિયાના આઇલેન્ડ્સ.નોવસિ" + + "બિર્સ્ક સમય;નોવસિબિર્સ્ક માનક સમયDનોવસિબિર્સ્ક ગ્રીષ્મ સમય\x1cઓમ્સ્ક સ" + + "મય&ઓમસ્ક માનક સમય2ઓમ્સ્ક ગ્રીષ્મ સમય%પાકિસ્તાન સમય2પાકિસ્તાન માનક સમય;" + + "પાકિસ્તાન ગ્રીષ્મ સમય\x16પલાઉ સમય3પાપુઆ ન્યુ ગિની સમય\x22પેરાગ્વે સમય/" + + "પેરાગ્વે માનક સમય8પેરાગ્વે ગ્રીષ્મ સમય\x16પેરુ સમય#પેરુ માનક સમય,પેરુ " + + "ગ્રીષ્મ સમય\x22ફિલિપાઇન સમય/ફિલિપાઇન માનક સમય8ફિલિપાઇન ગ્રીષ્મ સમય;ફોન" + + "િક્સ આઇલેન્ડ્સ સમયIસેંટ પીએરે એન્ડ મિકીલોન સમયVસેંટ પીએરે એન્ડ મિકીલોન" + + " માનક સમયVસેંટ પીએરે એન્ડ મિકીલોન દિવસ સમય%પિટકેયર્ન સમય\x19પોનપે સમય+યો" + + "ન્ગ્યાન્ગ સમય(કિઝિલોર્ડા સમયDકિઝિલોર્ડા પ્રમાણભૂત સમય>કિઝિલોર્ડા ગ્રીષ" + + "્મ સમય\x22રીયૂનિયન સમય\x1cરોથેરા સમય\x1cસખાલિન સમય)સખાલિન માનક સમય2સખા" + + "લિન ગ્રીષ્મ સમય\x19સમારા સમય5સમારા પ્રમાણભૂત સમય/સમારા ગ્રીષ્મ સમય\x16" + + "સમોઆ સમય#સમોઆ માનક સમય,સમોઆ ગ્રીષ્મ સમય\x1cસેશલ્સ સમય/સિંગાપુર માનક સમ" + + "ય8સોલોમન આઇલેન્ડ્સ સમય;દક્ષિણ જ્યોર્જીયા સમય\x1fસૂરીનામ સમય\x1cસ્યોવા " + + "સમય\x1cતાહિતી સમય\x1cતાઇપેઇ સમય)તાઇપેઇ માનક સમય)તાઇપેઇ દિવસ સમય+તાજીકિ" + + "સ્તાન સમય\x1cટોકલાઉ સમય\x19ટોંગા સમય&ટોંગા માનક સમય/ટોંગા ગ્રીષ્મ સમય" + + "\x16ચુઉક સમય4તુર્કમેનિસ્તાન સમયAતુર્કમેનિસ્તાન માનક સમયJતુર્કમેનિસ્તાન ગ" + + "્રીષ્મ સમય\x19ટવાલૂ સમય\x1fઉરૂગ્વે સમય,ઉરૂગ્વે માનક સમય5ઉરૂગ્વે ગ્રીષ્" + + "મ સમય.ઉઝ્બેકિસ્તાન સમય;ઉઝ્બેકિસ્તાન માનક સમયDઉઝ્બેકિસ્તાન ગ્રીષ્મ સમય" + + "\x19વનાતૂ સમય&વનાતૂ માનક સમય/વનાતૂ ગ્રીષ્મ સમય%વેનેઝુએલા સમય1વ્લાડિવોસ્ટ" + + "ોક સમય>વ્લાડિવોસ્ટોક માનક સમયGવ્લાડિવોસ્ટોક ગ્રીષ્મ સમય+વોલ્ગોગ્રેડ સમ" + + "ય8વોલ્ગોગ્રેડ માનક સમયAવોલ્ગોગ્રેડ ગ્રીષ્મ સમય\x1fવોસ્ટોક સમય)વૅક આઇલે" + + "ન્ડ સમય<વૉલિસ અને ફ્યુચુના સમય%યાકુત્સ્ક સમય2યાકુત્સ્ક માનક સમય;યાકુત્" + + "સ્ક ગ્રીષ્મ સમય1યેકાટેરિનબર્ગ સમય>યેકાટેરિનબર્ગ માનક સમયGયેકાટેરિનબર્ગ" + + " ગ્રીષ્મ સમય" + +var bucket43 string = "" + // Size: 16924 bytes + "\x03Can\x03Feb\x03Mac\x03Apr\x03Mei\x03Jun\x03Cul\x03Agt\x03Sep\x03Okt" + + "\x03Nob\x03Dis\x08Chanuari\x08Feburari\x05Machi\x07Apiriri\x04Juni\x06Ch" + + "ulai\x06Agosti\x08Septemba\x07Okitoba\x07Nobemba\x07Disemba\x03Cpr\x03Ct" + + "t\x03Cmn\x03Cmt\x03Ars\x03Icm\x03Est\x09Chumapiri\x09Chumatato\x08Chumai" + + "ne\x09Chumatano\x07Aramisi\x06Ichuma\x07Esabato\x02E1\x02E2\x02E3\x02E4" + + "\x12Erobo entang’ani\x0eErobo yakabere\x0eErobo yagatato\x0cErobo yakane" + + "\x06Mambia\x03Mog\x0eYeso ataiborwa\x0eYeso kaiboirwe\x02YA\x02YK\x05Ebi" + + "ro\x09Omotienyi\x08Omokubio\x06Rituko\x05Igoro\x04Rero\x10Rituko r’ewiki" + + "\x14Mambia gose Morogoba\x04Ensa\x07Edakika\x08Esekendi\x0fChinse ‘chimo" + + "\x0bMMM dd, y G\x06J-guer\x07T-arree\x06Mayrnt\x06Avrril\x07Boaldyn\x08M" + + "-souree\x08J-souree\x09Luanistyn\x08M-fouyir\x08J-fouyir\x08M-Houney\x09" + + "M-Nollick\x0dJerrey-geuree\x0fToshiaght-arree\x06Averil\x0bMean-souree" + + "\x0dJerrey-souree\x0bMean-fouyir\x0dJerrey-fouyir\x0aMee Houney\x0eMee n" + + "y Nollick\x03Jed\x03Jel\x03Jem\x04Jerc\x04Jerd\x03Jeh\x03Jes\x08Jedoonee" + + "\x07Jelhein\x07Jemayrt\x07Jercean\x07Jerdein\x08Jeheiney\x06Jesarn\x0eEE" + + "EE dd MMMM y\x09MMM dd, y\x07Janairu\x09Faburairu\x05Maris\x07Afirilu" + + "\x04Mayu\x04Yuni\x04Yuli\x06Agusta\x07Satumba\x06Oktoba\x07Nuwamba\x07Di" + + "samba\x03Lah\x03Lit\x03Tal\x03Lar\x03Alh\x03Jum\x03Asa\x02Lh\x02Li\x02Ta" + + "\x02Lr\x02Al\x02Ju\x02As\x06Lahadi\x07Litinin\x06Talata\x06Laraba\x07Alh" + + "amis\x08Jummaʼa\x06Asabar\x0eKwata na ɗaya\x0dKwata na biyu\x0cKwata na " + + "uku\x0eKwata na huɗu\x14Kafin haihuwar annab\x14Bayan haihuwar annab\x04" + + "KHAI\x04BHAI\x06Zamani\x07Shekara\x04Wata\x04Mako\x05Kwana\x04Jiya\x03Ya" + + "u\x04Gobe\x04Rana\x04Yini\x03Awa\x05Minti\x08Daƙiƙa\x05Agogo\x04Ian.\x04" + + "Pep.\x04Mal.\x05ʻAp.\x04Iun.\x04Iul.\x05ʻAu.\x04Kep.\x05ʻOk.\x04Now.\x04" + + "Kek.\x07Ianuali\x09Pepeluali\x06Malaki\x09ʻApelila\x04Iune\x05Iulai\x08ʻ" + + "Aukake\x0aKepakemapa\x09ʻOkakopa\x08Nowemapa\x08Kekemapa\x02LP\x02P1\x02" + + "P2\x02P3\x02P4\x02P5\x02P6\x07Lāpule\x09Poʻakahi\x08Poʻalua\x09Poʻakolu" + + "\x08Poʻahā\x09Poʻalima\x08Poʻaono\x12EEEE, d בMMMM y G\x0cd בMMMM y G" + + "\x0bd בMMM y G\x10{1} בשעה {0}\x08ינו׳\x08פבר׳\x06מרץ\x08אפר׳\x06מאי\x08" + + "יוני\x08יולי\x08אוג׳\x08ספט׳\x08אוק׳\x08נוב׳\x08דצמ׳\x0aינואר\x0cפברואר" + + "\x0aאפריל\x0cאוגוסט\x0cספטמבר\x0eאוקטובר\x0cנובמבר\x0aדצמבר\x0bיום א׳" + + "\x0bיום ב׳\x0bיום ג׳\x0bיום ד׳\x0bיום ה׳\x0bיום ו׳\x06שבת\x04א׳\x04ב׳" + + "\x04ג׳\x04ד׳\x04ה׳\x04ו׳\x04ש׳\x11יום ראשון\x0dיום שני\x11יום שלישי\x11י" + + "ום רביעי\x11יום חמישי\x0fיום שישי\x0dיום שבת\x0cרבעון 1\x0cרבעון 2\x0cר" + + "בעון 3\x0cרבעון 4\x08חצות\x0cלפנה״צ\x0aאחה״צ\x08בוקר\x0cצהריים\x15אחר ה" + + "צהריים\x06ערב\x08לילה\x13לפנות בוקר\x15לפני הספירה\x0cלפנה״ס\x0cלספירה" + + "\x10EEEE, d בMMMM y\x0ad בMMMM y\x09d בMMM y\x08תשרי\x08חשון\x08כסלו\x06" + + "טבת\x06שבט\x0bאדר א׳\x06אדר\x0bאדר ב׳\x08ניסן\x08אייר\x08סיון\x08תמוז" + + "\x04אב\x08אלול\x06תש׳\x06חש׳\x06כס׳\x06טב׳\x06שב׳\x06א״א\x06אד׳\x06א״ב" + + "\x06ני׳\x06אי׳\x06סי׳\x06תמ׳\x06אל׳\x0aחשוון\x0aסיוון\x0aלבה״ע\x0aמוחרם" + + "\x06צפר\x0dרביע א׳\x0dרביע ב׳\x13ג׳ומאדא א׳\x13ג׳ומאדא ב׳\x08רג׳ב\x0aשעב" + + "אן\x0aרמדאן\x0aשוואל\x15ד׳ו אל־קעדה\x17ד׳ו אל־חיג׳ה\x16רביע אל-אוול\x16" + + "רביע א-ת׳אני\x1cג׳ומאדא אל-אולא\x1eג׳ומאדא א-ת׳אניה\x17רביע אל־אוול\x17" + + "רביע א־ת׳אני\x1dג׳ומאדא אל־אולא\x1fג׳ומאדא א־ת׳אניה\x13שנת היג׳רה\x0aטא" + + "יקה\x0cנינג׳ו\x0cשוטוקו\x0aתקופה\x06שנה\x13השנה שעברה\x08השנה\x11השנה ה" + + "באה\x0fבעוד שנה\x15בעוד שנתיים\x13בעוד {0} שנה\x15בעוד {0} שנים\x0fלפני" + + " שנה\x15לפני שנתיים\x13לפני {0} שנה\x15לפני {0} שנים\x06שנ׳\x0aרבעון\x17" + + "הרבעון הקודם\x0fרבעון זה\x13הרבעון הבא\x13ברבעון הבא\x1eבעוד שני רבעוני" + + "ם\x1bבעוד {0} רבעונים\x17ברבעון הקודם\x1eלפני שני רבעונים\x1bלפני {0} ר" + + "בעונים\x08רבע׳\x11ברבע׳ הבא\x18בעוד שני רבע׳\x15בעוד {0} רבע׳\x15ברבע׳ " + + "הקודם\x18לפני שני רבע׳\x15לפני {0} רבע׳\x08חודש\x13החודש שעבר\x0aהחודש" + + "\x11החודש הבא\x11בעוד חודש\x17בעוד חודשיים\x19בעוד {0} חודשים\x11לפני חו" + + "דש\x17לפני חודשיים\x19לפני {0} חודשים\x06חו׳\x0fבעוד חו׳\x13בעוד {0} חו" + + "׳\x0fלפני חו׳\x13לפני {0} חו׳\x08שבוע\x13השבוע שעבר\x0aהשבוע\x11השבוע ה" + + "בא\x11בעוד שבוע\x17בעוד שבועיים\x19בעוד {0} שבועות\x11לפני שבוע\x17לפני" + + " שבועיים\x19לפני {0} שבועות\x0fהשבוע של\x0fבעוד שב׳\x13בעוד {0} שב׳\x0fל" + + "פני שב׳\x13לפני {0} שב׳\x13השבוע של {0}\x06יום\x0aשלשום\x0aאתמול\x08היו" + + "ם\x06מחר\x0eמחרתיים\x13בעוד יום {0}\x15בעוד יומיים\x15בעוד {0} ימים\x13" + + "לפני יום {0}\x15לפני יומיים\x15לפני {0} ימים\x13בעוד {0} יום\x13לפני {0" + + "} ימ׳\x13בעוד {0} ימ׳\x13לפני {0} יום\x11יום בשבוע\x1cביום ראשון שעבר" + + "\x1aביום ראשון הזה\x1aביום ראשון הבא\x1eבעוד יום ראשון {0}\x1eבעוד {0} י" + + "מי ראשון\x1eלפני יום ראשון {0}\x1eלפני {0} ימי ראשון\x14יום א׳ שעבר\x12" + + "יום א׳ הבא\x16יום שני שעבר\x14יום שני הבא\x1aבעוד יום שני {0}\x1aבעוד {" + + "0} ימי שני\x1aלפני יום שני {0}\x1aלפני {0} ימי שני\x14יום ב׳ שעבר\x12יום" + + " ב׳ הבא\x1aיום שלישי שעבר\x18יום שלישי הבא\x1eבעוד יום שלישי {0}\x1eבעוד" + + " {0} ימי שלישי\x1eלפני יום שלישי {0}\x1eלפני {0} ימי שלישי\x14יום ג׳ שעב" + + "ר\x12יום ג׳ הבא\x1aיום רביעי שעבר\x18יום רביעי הבא\x1eבעוד יום רביעי {0" + + "}\x1eבעוד {0} ימי רביעי\x1eלפני יום רביעי {0}\x1eלפני {0} ימי רביעי\x14י" + + "ום ד׳ שעבר\x12יום ד׳ הבא\x1aיום חמישי שעבר\x18יום חמישי הבא\x1eבעוד יום" + + " חמישי {0}\x1eבעוד {0} ימי חמישי\x1eלפני יום חמישי {0}\x1eלפני {0} ימי ח" + + "מישי\x14יום ה׳ שעבר\x12יום ה׳ הבא\x18יום שישי שעבר\x16יום שישי הבא\x1aב" + + "עוד יום ששי {0}\x1aבעוד {0} ימי ששי\x1aלפני יום ששי {0}\x1aלפני {0} ימי" + + " ששי\x14יום ו׳ שעבר\x14ביום ו׳ הבא\x12יום ו׳ הבא\x16יום שבת שעבר\x14יום " + + "שבת הבא\x13בעוד שבת {0}\x17בעוד {0} שבתות\x13לפני שבת {0}\x17לפני {0} ש" + + "בתות\x11שבת שעברה\x0fשבת הבאה\x17לפנה״צ/אחה״צ\x06שעה\x0dבשעה זו\x0fבעוד" + + " שעה\x15בעוד שעתיים\x15בעוד {0} שעות\x0fלפני שעה\x15לפני שעתיים\x15לפני " + + "{0} שעות\x13בעוד {0} שע׳\x13לפני {0} שע׳\x06שע׳\x06דקה\x0dבדקה זו\x0fבעו" + + "ד דקה\x18בעוד שתי דקות\x15בעוד {0} דקות\x0fלפני דקה\x18לפני שתי דקות" + + "\x15לפני {0} דקות\x06דק׳\x16בעוד שתי דק׳\x13בעוד {0} דק׳\x13לפני {0} דק׳" + + "\x16לפני שתי דק׳\x0aשנייה\x0aעכשיו\x13בעוד שנייה\x1aבעוד שתי שניות\x17בע" + + "וד {0} שניות\x13לפני שנייה\x1aלפני שתי שניות\x17לפני {0} שניות\x0fבעוד " + + "שנ׳\x16בעוד שתי שנ׳\x13בעוד {0} שנ׳\x0fלפני שנ׳\x16לפני שתי שנ׳\x13לפני" + + " {0} שנ׳\x08אזור\x13\u200e+HH:mm;-HH:mm\u200e\x09GMT{0}\u200e\x03GMT\x0c" + + "שעון {0}\x15שעון {0} (קיץ)\x17שעון {0} (חורף)$זמן אוניברסלי מתואם\x1eשע" + + "ון קיץ בריטניה\x1cשעון קיץ אירלנד\x19שעון אפגניסטן\x1eשעון מרכז אפריקה" + + "\x1eשעון מזרח אפריקה\x1eשעון דרום אפריקה\x1eשעון מערב אפריקה)שעון מערב א" + + "פריקה (חורף)'שעון מערב אפריקה (קיץ)\x13שעון אלסקה\x1eשעון אלסקה (חורף)" + + "\x1cשעון אלסקה (קיץ)\x15שעון אמזונס שעון אמזונס (חורף)\x1eשעון אמזונס (ק" + + "יץ)\x1cשעון מרכז ארה״ב'שעון מרכז ארה״ב (חורף)%שעון מרכז ארה״ב (קיץ)\x1e" + + "שעון החוף המזרחי)שעון החוף המזרחי (חורף)'שעון החוף המזרחי (קיץ))שעון אז" + + "ור ההרים בארה״ב4שעון אזור ההרים בארה״ב (חורף)2שעון אזור ההרים בארה״ב (ק" + + "יץ)\x1cשעון מערב ארה״ב'שעון מערב ארה״ב (חורף)%שעון מערב ארה״ב (קיץ)\x13" + + "שעון אנדיר\x1cשעון רגיל אנדיר\x1aשעון קיץ אנדיר\x11שעון אפיה\x1cשעון אפ" + + "יה (חורף)\x1aשעון אפיה (קיץ)\x1dשעון חצי האי ערב(שעון חצי האי ערב (חורף" + + ")&שעון חצי האי ערב (קיץ)\x19שעון ארגנטינה$שעון ארגנטינה (חורף)\x22שעון א" + + "רגנטינה (קיץ)\x22שעון מערב ארגנטינה-שעון מערב ארגנטינה (חורף)+שעון מערב" + + " ארגנטינה (קיץ)\x15שעון ארמניה שעון ארמניה (חורף)\x1eשעון ארמניה (קיץ)*ש" + + "עון האוקיינוס האטלנטי5שעון האוקיינוס האטלנטי (חורף)3שעון האוקיינוס האטל" + + "נטי (קיץ)\x22שעון מרכז אוסטרליה-שעון מרכז אוסטרליה (חורף)+שעון מרכז אוס" + + "טרליה (קיץ)+שעון מרכז-מערב אוסטרליה6שעון מרכז-מערב אוסטרליה (חורף)4שעון" + + " מרכז-מערב אוסטרליה (קיץ)\x22שעון מזרח אוסטרליה-שעון מזרח אוסטרליה (חורף" + + ")+שעון מזרח אוסטרליה (קיץ)\x22שעון מערב אוסטרליה-שעון מערב אוסטרליה (חור" + + "ף)+שעון מערב אוסטרליה (קיץ)\x1dשעון אזרבייג׳אן(שעון אזרבייג׳אן (חורף)&ש" + + "עון אזרבייג׳אן (קיץ)$שעון האיים האזוריים/שעון האיים האזוריים (חורף)-שעו" + + "ן האיים האזוריים (קיץ)\x15שעון בנגלדש שעון בנגלדש (חורף)\x1eשעון בנגלדש" + + " (קיץ)\x13שעון בהוטן\x17שעון בוליביה\x17שעון ברזיליה\x22שעון ברזיליה (חו" + + "רף) שעון ברזיליה (קיץ)&שעון ברוניי דארוסלאם\x16שעון כף ורדה!שעון כף ורד" + + "ה (חורף)\x1fשעון כף ורדה (קיץ)\x17שעון צ׳אמורו\x15שעון צ׳טהאם שעון צ׳טה" + + "אם (חורף)\x1eשעון צ׳טהאם (קיץ)\x13שעון צ׳ילה\x1eשעון צ׳ילה (חורף)\x1cשע" + + "ון צ׳ילה (קיץ)\x0fשעון סין\x1aשעון סין (חורף)\x18שעון סין (קיץ)\x19שעון" + + " צ׳ויבלסן$שעון צ׳ויבלסן (חורף)\x22שעון צ׳ויבלסן (קיץ)\x1eשעון האי כריסטמ" + + "ס\x1aשעון איי קוקוס\x19שעון קולומביה$שעון קולומביה (חורף)\x22שעון קולומ" + + "ביה (קיץ)\x16שעון איי קוק!שעון איי קוק (חורף),שעון איי קוק (מחצית הקיץ)" + + "\x11שעון קובה\x1cשעון קובה (חורף)\x1aשעון קובה (קיץ)\x15שעון דיוויס&שעון" + + " דומון ד׳אורוויל\x1cשעון מזרח טימור\x18שעון אי הפסחא#שעון אי הפסחא (חורף" + + ")!שעון אי הפסחא (קיץ)\x17שעון אקוודור\x1eשעון מרכז אירופה)שעון מרכז אירו" + + "פה (חורף)'שעון מרכז אירופה (קיץ)\x1eשעון מזרח אירופה)שעון מזרח אירופה (" + + "חורף)'שעון מזרח אירופה (קיץ)\x13שעון מינסק\x1eשעון מערב אירופה)שעון מער" + + "ב אירופה (חורף)'שעון מערב אירופה (קיץ)\x1cשעון איי פוקלנד'שעון איי פוקל" + + "נד (חורף)%שעון איי פוקלנד (קיץ)\x13שעון פיג׳י\x1eשעון פיג׳י (חורף)\x1cש" + + "עון פיג׳י (קיץ)\x22שעון גיאנה הצרפתיתMשעון הארצות הדרומיות והאנטארקטיות" + + " של צרפת\x1eשעון איי גלאפגוס\x1cשעון איי גמבייה\x17שעון גאורגיה\x22שעון " + + "גאורגיה (חורף) שעון גאורגיה (קיץ)\x1cשעון איי גילברט\x1aשעון גריניץ׳" + + "\u200f שעון מזרח גרינלנד+שעון מזרח גרינלנד (חורף))שעון מזרח גרינלנד (קיץ" + + ") שעון מערב גרינלנד+שעון מערב גרינלנד (חורף))שעון מערב גרינלנד (קיץ) שעו" + + "ן מדינות המפרץ\x13שעון גיאנה1שעון האיים האלאוטיים הוואי<שעון האיים האלא" + + "וטיים הוואי (חורף):שעון האיים האלאוטיים הוואי (קיץ)\x1aשעון הונג קונג%ש" + + "עון הונג קונג (חורף)#שעון הונג קונג (קיץ)\x11שעון חובד\x1cשעון חובד (חו" + + "רף)\x1aשעון חובד (קיץ)\x11שעון הודו&שעון האוקיינוס ההודי\x18שעון הודו-ס" + + "ין$שעון מרכז אינדונזיה$שעון מזרח אינדונזיה$שעון מערב אינדונזיה\x13שעון " + + "איראן\x1eשעון איראן (חורף)\x1cשעון איראן (קיץ)\x19שעון אירקוטסק$שעון אי" + + "רקוטסק (חורף)\x22שעון אירקוסטק (קיץ)\x13שעון ישראל\x1eשעון ישראל (חורף)" + + "\x1cשעון ישראל (קיץ)\x0fשעון יפן\x1aשעון יפן (חורף)\x18שעון יפן (קיץ)0שע" + + "ון פטרופבלובסק-קמצ׳טסקי9שעון רגיל פטרופבלובסק-קמצ׳טסקי7שעון קיץ פטרופבל" + + "ובסק-קמצ׳טסקי\x1eשעון מזרח קזחסטן\x1eשעון מערב קזחסטן\x15שעון קוריאה שע" + + "ון קוריאה (חורף)\x1eשעון קוריאה (קיץ)\x15שעון קוסראה\x1dשעון קרסנויארסק" + + "(שעון קרסנויארסק (חורף)&שעון קרסנויארסק (קיץ)\x1bשעון קירגיזסטן\x18שעון " + + "איי ליין\x1fשעון אי הלורד האו*שעון אי הלורד האו (חורף)(שעון אי הלורד הא" + + "ו (קיץ)\x11שעון מקאו\x1aשעון חורף מקאו\x18שעון קיץ מקאו\x17שעון מקווארי" + + "\x11שעון מגדן\x1cשעון מגדן (חורף)\x1aשעון מגדן (קיץ)\x13שעון מלזיה&שעון " + + "האיים המלדיביים\x1aשעון איי מרקיז\x18שעון איי מרשל\x1bשעון מאוריציוס&שע" + + "ון מאוריציוס (חורף)$שעון מאוריציוס (קיץ)\x15שעון מאוסון'שעון צפון-מערב " + + "מקסיקו2שעון צפון-מערב מקסיקו (חורף)0שעון צפון-מערב מקסיקו (קיץ)\x1eשעון" + + " מערב מקסיקו)שעון מערב מקסיקו (חורף)'שעון מערב מקסיקו (קיץ)\x1aשעון אולן" + + " בטור%שעון אולן בטור (חורף)#שעון אולן בטור (קיץ)\x15שעון מוסקבה שעון מוס" + + "קבה (חורף)\x1eשעון מוסקבה (קיץ)\x15שעון מיאנמר\x13שעון נאורו\x11שעון נפ" + + "אל\x22שעון קלדוניה החדשה-שעון קלדוניה החדשה (חורף)+שעון קלדוניה החדשה (" + + "קיץ)\x1aשעון ניו זילנד%שעון ניו זילנד (חורף)#שעון ניו זילנד (קיץ)\x1fשע" + + "ון ניופאונדלנד*שעון ניופאונדלנד (חורף)(שעון ניופאונדלנד (קיץ)\x13שעון נ" + + "יואה\x1cשעון האי נורפוק)שעון פרננדו די נורוניה4שעון פרננדו די נורוניה (" + + "חורף)2שעון פרננדו די נורוניה (קיץ)\x1fשעון נובוסיבירסק*שעון נובוסיבירסק" + + " (חורף)(שעון נובוסיבירסק (קיץ)\x13שעון אומסק\x1eשעון אומסק (חורף)\x1cשעו" + + "ן אומסק (קיץ)\x15שעון פקיסטן שעון פקיסטן (חורף)\x1eשעון פקיסטן (קיץ)" + + "\x11שעון פלאו+שעון פפואה גיניאה החדשה\x17שעון פרגוואי\x22שעון פרגוואי (ח" + + "ורף) שעון פרגוואי (קיץ)\x0fשעון פרו\x1aשעון פרו (חורף)\x18שעון פרו (קיץ" + + ")\x1dשעון הפיליפינים(שעון הפיליפינים (חורף)&שעון הפיליפינים (קיץ)\x1cשעו" + + "ן איי פיניקס'שעון סנט פייר ומיקלון2שעון סנט פייר ומיקלון (חורף)0שעון סנ" + + "ט פייר ומיקלון (קיץ)\x15שעון פיטקרן\x15שעון פונאפי\x1bשעון פיונגיאנג" + + "\x17שעון ראוניון\x15שעון רות׳רה\x13שעון סחלין\x1eשעון סחלין (חורף)\x1cשע" + + "ון סחלין (קיץ)\x11שעון סמרה\x1aשעון רגיל סמרה\x18שעון קיץ סמרה\x13שעון " + + "סמואה\x1eשעון סמואה (חורף)\x1cשעון סמואה (קיץ)\x1aשעון איי סיישל\x17שעו" + + "ן סינגפור\x18שעון איי שלמה\x22שעון דרום ג׳ורג׳יה\x17שעון סורינאם\x15שעו" + + "ן סייווה\x13שעון טהיטי\x15שעון טאיפיי שעון טאיפיי (חורף)\x1eשעון טאיפיי" + + " (קיץ)\x1bשעון טג׳יקיסטן\x15שעון טוקלאו\x13שעון טונגה\x1eשעון טונגה (חור" + + "ף)\x1cשעון טונגה (קיץ)\x11שעון צ׳וק\x1dשעון טורקמניסטן(שעון טורקמניסטן " + + "(חורף)&שעון טורקמניסטן (קיץ)\x15שעון טובאלו\x1bשעון אורוגוואי&שעון אורוג" + + "וואי (חורף)$שעון אורוגוואי (קיץ)\x1bשעון אוזבקיסטן&שעון אוזבקיסטן (חורף" + + ")$שעון אוזבקיסטן (קיץ)\x15שעון ונואטו שעון ונואטו (חורף)\x1eשעון ונואטו " + + "(קיץ)\x17שעון ונצואלה\x1dשעון ולדיווסטוק(שעון ולדיווסטוק (חורף)&שעון ולד" + + "יווסטוק (קיץ)\x19שעון וולגוגרד$שעון וולגוגרד (חורף)\x22שעון וולגוגרד (ק" + + "יץ)\x15שעון ווסטוק\x18שעון האי וייק$שעון וואליס ופוטונה\x15שעון יקוטסק " + + "שעון יקוטסק (חורף)\x1eשעון יקוטסק (קיץ)\x1dשעון יקטרינבורג(שעון יקטרינב" + + "ורג (חורף)&שעון יקטרינבורג (קיץ)\x03Ayn\x03Asn\x03Akr\x03Akw\x03Asm\x05" + + "Asḍ\x04אב\x04אב" + +var bucket44 string = "" + // Size: 9392 bytes + "\x18मस्केरेम\x15टेकेम्ट\x0cहेदर\x0fतहसास\x06टर\x15येकाटिट\x15मेगाबिट\x1b" + + "मियाज़िया\x0fगनबोट\x09सेन\x0fहम्ले\x12नेहासे\x12पागूमन\x10G EEEE, d MM" + + "MM y\x0aG d MMMM y\x07G d/M/y\x0e{1} को {0}\x09जन॰\x0cफ़र॰\x0fमार्च\x12अ" + + "प्रैल\x06मई\x09जून\x0cजुल॰\x09अग॰\x0cसित॰\x12अक्तू॰\x09नव॰\x0cदिस॰\x0f" + + "जनवरी\x12फ़रवरी\x0fजुलाई\x0fअगस्त\x12सितंबर\x15अक्तूबर\x0fनवंबर\x12दिस" + + "ंबर\x09रवि\x09सोम\x0cमंगल\x09बुध\x0cगुरु\x0fशुक्र\x09शनि\x12रविवार\x12" + + "सोमवार\x15मंगलवार\x12बुधवार\x15गुरुवार\x18शुक्रवार\x12शनिवार\x07ति1" + + "\x07ति2\x07ति3\x07ति4\x1fपहली तिमाही\x22दूसरी तिमाही\x22तीसरी तिमाही\x1f" + + "चौथी तिमाही\x1eमध्यरात्रि\x1bपूर्वाह्न\x15अपराह्न\x0cसुबह\x09शाम\x09रा" + + "त\x06पू\x0fदोपहर\x13आधी रात\x19ईसा-पूर्व\x1cईसवी पूर्व\x13ईसवी सन\x0cई" + + "सवी\x0fईस्वी\x0fचैत्र\x0fवैशाख\x15ज्येष्ठ\x0fआषाढ़\x12श्रावण\x15भाद्रप" + + "द\x12अश्विन\x15कार्तिक\x18अग्रहायण\x09पौष\x09माघ\x15फाल्गुन\x06शक\x15म" + + "ुहर्रम\x09सफर\x1cराबी प्रथम\x22राबी द्वितीय\x22जुम्डा प्रथम(जुम्डा द्व" + + "ितीय\x09रजब\x0cशावन\x0fरमजान\x12शव्व्ल\x19जिल-क्दाह\x22जिल्-हिज्जाह" + + "\x1bताएका (645–650)\x1eहाकूची (650–671)\x1eहाकूहो (672–686)\x18शूचो (686" + + "–701)\x1bताहिओ (701–704)\x18केउन (704–708)\x18वाडू (708–715)\x18रैकी (" + + "715–717)\x18योरो (717–724)\x1bजिंकी (724–729)$टेम्प्यो (729–749)7टेम्प्य" + + "ो-काम्पो (749–749)1टेम्प्यो-शोहो (749–757)1टेम्प्यो-होजी (757–765)4टेम" + + "्प्यो-जिंगो (765–767)1टेम्प्यो-किउन (767–770)\x18होकी (770–780)\x18टेन" + + "ो (781–782)$इंर्याकू (782–806)\x1bडाईडू (806–810)\x1eक़ोनिन (810–824)" + + "\x1bटेंचो (824–834)\x18शोवा (834–848)\x1eकाज्यो (848–851)\x1bनिंजू (851–" + + "854)\x1bशाईकू (854–857)\x18टेनन (857–859)\x1bजोगन् (859–877)\x1eगेंकेई (" + + "877–885)\x1eनिन्ना (885–889)$केम्प्यो (889–898)\x1bशूताई (898–901)\x18ईं" + + "गी (901–923)\x18ईंचो (923–931)\x1bशोहेई (931–938)!टेंग्यो (938–947)'टे" + + "ंर्याकू (947–957)!टेंटूकू (957–961)\x15ओवा (961–964)\x18कोहो (964–968)" + + "\x1bअन्ना (968–970)!टेंरोकू (970–973)\x1cटेन-एन (973–976)\x1bजोगन् (976–" + + "978)\x1eटेंगेन (978–983)\x18ईकान (983–985)\x1bकन्ना (985–987)\x16ई-एन (9" + + "87–989)\x18एइसो (989–990)$शोर्याकू (990–995)\x1eचोटूकु (995–999)\x19चोहो" + + " (999–1004)\x1aकंको (1004–1012) च्योवा (1012–1017) कन्निन (1017–1021) ज़" + + "ियान (1021–1024)\x1aमंजू (1024–1028)\x1aचोगन (1028–1037)&चोर्याकू (103" + + "7–1040) चोक्यु (1040–1044)#कांटूको (1044–1046)\x17ईशो (1046–1053)\x1dटें" + + "गी (1053–1058)\x1dकोहैइ (1058–1065)&जिर्याकू (1065–1069) ईंक्यू (1069–" + + "1074)\x1aसोहो (1074–1077)&शोर्याकू (1077–1081)\x17ईहो (1081–1084)\x1dओटू" + + "को (1084–1087)\x1dकांजि (1087–1094)\x1aकोहो (1094–1096)\x17ईचो (1096–1" + + "097) शोटूको (1097–1099)\x1aकोवा (1099–1104)\x1aचोजी (1104–1106)\x1aकाशो " + + "(1106–1108)#टेन्निन (1108–1110)\x1bटेन-ई (1110–1113)\x1dईक्यू (1113–1118" + + ")\x1bजेन-ई (1118–1120)\x1aहोआन (1120–1124)\x1dतेंजी (1124–1126)\x1dदाईजी" + + " (1126–1131)\x1dटेंशो (1131–1132)\x1aचोशो (1132–1135)\x1aहोएन (1135–1141" + + ")\x17ईजी (1141–1142)\x1aकोजी (1142–1144) टेन्यो (1144–1145) क्यूआन (1145" + + "–1151) निंपैई (1151–1154) क्योजो (1154–1156)\x1dहोगेन (1156–1159)\x1aह" + + "ैजी (1159–1160)#ईर्याकू (1160–1161)\x17ओहो (1161–1163)\x1dचोकान (1163–" + + "1165)\x1aईमान (1165–1166)\x1eनिन-आन (1166–1169)\x17काओ (1169–1171)\x1aशो" + + "अन (1171–1175)\x1aअंजन (1175–1177)\x1aजिशो (1177–1181)\x1aयोवा (1181–1" + + "182)\x1aजूऐई (1182–1184))जेंर्याकू (1184–1185)\x1dबूंजी (1185–1190)#केंक" + + "्यू (1190–1199)\x1aशोजी (1199–1201)#केन्निन (1201–1204)#जेंक्यू (1204–" + + "1206)\x1bकेन-ई (1206–1207)\x1dशोगेन (1207–1211))केंर्याकू (1211–1213)" + + "\x1dकेंपो (1213–1219) शोक्यू (1219–1222)\x14जू (1222–1224)#जेन्निन (1224" + + "–1225) कोरोकू (1225–1227)\x1dअंटैइ (1227–1229)\x1dकांकी (1229–1232)" + + "\x1aजोएई (1232–1233)&टेम्पूकू (1233–1234))बुंर्याकू (1234–1235)\x1dकाटेई" + + " (1235–1238))र्याकूनिन (1238–1239)\x18ईन-ओ (1239–1240)\x1dनिंजी (1240–12" + + "43) कांजेन (1243–1247)\x1aहोजी (1247–1249)\x1dकेंचो (1249–1256)\x1dकोगेन" + + " (1256–1257)\x1aशोका (1257–1259)\x1dशोगेन (1259–1260)\x1bबुन-ओ (1260–126" + + "1)\x1aकोचो (1261–1264)\x1bबुन-ई (1264–1275)\x1dकेंजी (1275–1278)\x1aकोअन" + + " (1278–1288)\x14शो (1288–1293)\x1aईनिन (1293–1299)\x1aशोअन (1299–1302) क" + + "ेंजेन (1302–1303)\x1dकाजेन (1303–1306) टोकूजी (1306–1308)\x1dईंकेई (13" + + "08–1311)\x17ओचो (1311–1312)\x1aशोवा (1312–1317)\x1dबुंपो (1317–1319)\x1a" + + "जेनो (1319–1321)#जेंक्यो (1321–1324)\x1aशोचू (1324–1326) कारेकी (1326–" + + "1329)#जेंटोकू (1329–1331)\x1dगेंको (1331–1334) केम्मू (1334–1336)\x1dईंज" + + "ेन (1336–1340) कोकोकू (1340–1346)\x1dशोहेई (1346–1370)#केंटोकू (1370–1" + + "372)\x1dबूंचो (1372–1375)\x1dटेंजो (1375–1379)&कोर्याकू (1379–1381)\x1aक" + + "ोवा (1381–1384)\x1dजेंचू (1384–1392) मेटोकू (1384–1387)\x1dकाकेई (1387" + + "–1389)\x14कू (1389–1390) मेटोकू (1390–1394)\x14ओई (1394–1428)\x1aशोचो " + + "(1428–1429)\x1dईक्यो (1429–1441)&काकीत्सू (1441–1444)\x1eबुन-अन (1444–14" + + "49) होटोकू (1449–1452)&क्योटोकू (1452–1455)\x1aकोशो (1455–1457) चोरोकू (" + + "1457–1460)\x1dकांशो (1460–1466)\x1dबुंशो (1466–1467)\x1aओनिन (1467–1469)" + + "#बुन्मेई (1469–1487) चोक्यो (1487–1489) ईंटोकू (1489–1492)\x1aमेईओ (1492" + + "–1501)\x1dबुंकी (1501–1504)\x17ईशो (1504–1521)\x1dताईएई (1521–1528)&क्" + + "योरोकू (1528–1532) टेन्मन (1532–1555)\x1aकोजी (1555–1558)\x1dईरोकू (15" + + "58–1570)\x1dजेंकी (1570–1573)\x1dटेंशो (1573–1592)#बुंरोकू (1592–1596)" + + "\x1dकेईचो (1596–1615)\x1dजेनवा (1615–1624)\x1eकान-एई (1624–1644)\x1aशोहो" + + " (1644–1648)\x1dकेईआन (1648–1652)\x14शो (1652–1655))मेईर्याकू (1655–1658" + + ")\x1dमानजी (1658–1661)\x1dकनबुन (1661–1673)\x1aईंपो (1673–1681)\x1dटेंवा" + + " (1681–1684) जोक्यो (1684–1688)#जेंरोकू (1688–1704)\x1aहोएई (1704–1711) " + + "शोटूको (1711–1716) क्योहो (1716–1736) जेंबुन (1736–1741)\x1dकांपो (174" + + "1–1744) इंक्यो (1744–1748)\x1eकान-एन (1748–1751)&होर्याकू (1751–1764)" + + "\x1dमेईवा (1764–1772)\x1bअन-एई (1772–1781) टेनमेई (1781–1789) कांसेई (17" + + "89–1801) क्योवा (1801–1804)\x1dबुंका (1804–1818) बुंसेई (1818–1830)\x1dट" + + "ेंपो (1830–1844)\x1aकोका (1844–1848)\x1aकाईए (1848–1854)\x1dअंसेई (185" + + "4–1860)\x1eमान-ईन (1860–1861)#बुंक्यौ (1861–1864)\x1dजेंजी (1864–1865)" + + "\x1aकेईओ (1865–1868)\x0cमेजी\x0fताईशो\x0cशोवा\x12हेईसेई\x0cमंगळ\x12सोमवा" + + "र\x15मंगळवार\x12बुधवार\x15गुरुवार\x18शुक्रवार\x12शनिवार\x1bफेब्रुअरी" + + "\x0fमार्च\x12अप्रिल\x06मे\x09जुन\x0fअगस्ट\x1eसेप्टेम्बर\x15अक्टोबर\x18नो" + + "भेम्बर\x18डिसेम्बर\x09जेठ\x0cअसार\x0cसाउन\x09भदौ\x0cअसोज\x15कात्तिक" + + "\x0fमङसिर\x09पुस\x0fफागुन\x09चैत" + +var bucket45 string = "" + // Size: 20545 bytes + "\x18फर्वादिन$ओर्दिवेहेस्ट\x18खोरर्दाद\x09टिर\x12मोरदाद\x18शाहरीवर्\x0cमे" + + "हर\x09अवन\x0cअज़र\x06डे\x0cबहमन\x18ईस्फन्द्\x09युग\x0cवर्ष\x1cपिछला वर" + + "्ष\x13इस वर्ष\x19अगला वर्ष\x1a{0} वर्ष में\x1d{0} वर्ष पहले\x12तिमाही" + + "\x22अंतिम तिमाही\x19इस तिमाही\x1fअगली तिमाही {0} तिमाही में){0} तिमाहियो" + + "ं में#{0} तिमाही पहले,{0} तिमाहियों पहले\x15{0} ति. में\x18{0} ति. पहल" + + "े\x09माह\x19पिछला माह\x10इस माह\x16अगला माह\x17{0} माह में\x1a{0} माह " + + "पहले\x12सप्ताह\x22पिछला सप्ताह\x19इस सप्ताह\x1fअगला सप्ताह {0} सप्ताह " + + "में#{0} सप्ताह पहले\x1d{0} के सप्ताह\x09दिन\x1cबीता परसों\x06कल\x06आज" + + "\x0fपरसों\x17{0} दिन में\x1a{0} दिन पहले#सप्ताह का दिन\x22पिछला रविवार" + + "\x19इस रविवार\x1fअगला रविवार {0} रविवार में&{0} रविवार पूर्व\x1aपिछला रव" + + "ि.\x11इस रवि.\x17अगला रवि.\x22पिछला सोमवार\x19इस सोमवार\x1fअगला सोमवार" + + " {0} सोमवार में&{0} सोमवार पूर्व\x1aपिछला सोम.\x11इस सोम.\x17अगला सोम.%प" + + "िछला मंगलवार\x1cइस मंगलवार\x22अगला मंगलवार#{0} मंगलवार में){0} मंगलवार" + + " पूर्व\x1dपिछला मंगल.\x14इस मंगल.\x1aअगला मंगल.\x22पिछला बुधवार\x19इस बु" + + "धवार\x1fअगला बुधवार {0} बुधवार में&{0} बुधवार पूर्व\x1aपिछला बुध.\x11इ" + + "स बुध.\x17अगला बुध.%पिछला गुरुवार\x1cइस गुरुवार\x22अगला गुरुवार#{0} गु" + + "रुवार में){0} गुरुवार पूर्व\x1dपिछला गुरु.\x14इस गुरु.\x1aअगला गुरु.(प" + + "िछला शुक्रवार\x1fइस शुक्रवार%अगला शुक्रवार&{0} शुक्रवार में,{0} शुक्रव" + + "ार पूर्व पिछला शुक्र.\x17इस शुक्र.\x1dअगला शुक्र.\x22पिछला शनिवार\x19इ" + + "स शनिवार\x1fअगला शनिवार {0} शनिवार में&{0} शनिवार पूर्व\x1aपिछला शनि." + + "\x11इस शनि.\x17अगला शनि.1पूर्वाह्न/अपराह्न\x0cघंटा\x13यह घंटा\x1a{0} घंट" + + "े में\x1d{0} घंटे पहले\x07घं.\x15{0} घं. में\x18{0} घं. पहले\x0cमिनट" + + "\x13यह मिनट\x1a{0} मिनट में\x1d{0} मिनट पहले\x07मि.\x15{0} मि. में\x18{0" + + "} मि. पहले\x0fसेकंड\x06अब\x1d{0} सेकंड में {0} सेकंड पहले\x07से.\x15{0} " + + "से. में\x18{0} से. पहले\x1fसमय क्षेत्र\x0d{0} समय {0} डेलाइट समय\x1a{0" + + "} मानक समय>समन्वित सार्वत्रिक समयDब्रिटिश ग्रीष्मकालीन समय&आइरिश मानक सम" + + "य.अफ़गानिस्तान समय/मध्य अफ़्रीका समय5पूर्वी अफ़्रीका समय5दक्षिण अफ़्री" + + "का समय5पश्चिम अफ़्रीका समयBपश्चिम अफ़्रीका मानक समयZपश्चिम अफ़्रीका ग्" + + "रीष्मकालीन समय\x1fअलास्का समय/अलास्\u200dका मानक समय5अलास्\u200dका डेल" + + "ाइट समय\x1cअमेज़न समय)अमेज़न मानक समयAअमेज़न ग्रीष्मकालीन समयKउत्तरी अ" + + "मेरिकी केंद्रीय समयXउत्तरी अमेरिकी केंद्रीय मानक समय^उत्तरी अमेरिकी के" + + "ंद्रीय डेलाइट समयEउत्तरी अमेरिकी पूर्वी समयRउत्तरी अमेरिकी पूर्वी मानक" + + " समयXउत्तरी अमेरिकी पूर्वी डेलाइट समयHउत्तरी अमेरिकी माउंटेन समयUउत्तरी " + + "अमेरिकी माउंटेन मानक समय[उत्तरी अमेरिकी माउंटेन डेलाइट समयHउत्तरी अमेर" + + "िकी प्रशांत समयUउत्तरी अमेरिकी प्रशांत मानक समय[उत्तरी अमेरिकी प्रशांत" + + " डेलाइट समय\x1fएनाडीयर समय,एनाडीयर मानक समयDएनाडीयर ग्रीष्मकालीन समय\x16" + + "एपिआ समय#एपिआ मानक समय)एपिआ डेलाइट समय\x13अरब समय अरब मानक समय&अरब डेल" + + "ाइट समय(अर्जेंटीना समय5अर्जेंटीना मानक समयMअर्जेंटीना ग्रीष्मकालीन समय" + + ">पश्चिमी अर्जेंटीना समयKपश्चिमी अर्जेंटीना मानक समयcपश्चिमी अर्जेंटीना ग" + + "्रीष्मकालीन समय%आर्मेनिया समय2आर्मेनिया मानक समयJआर्मेनिया ग्रीष्मकाली" + + "न समय\x22अटलांटिक समय/अटलांटिक मानक समय5अटलांटिक डेलाइट समय;मध्य ऑस्ट्" + + "रेलियाई समयWऑस्\u200dट्रेलियाई केंद्रीय मानक समय]ऑस्\u200dट्रेलियाई के" + + "ंद्रीय डेलाइट समय`ऑस्\u200dट्रेलियाई केंद्रीय पश्चिमी समयmऑस्\u200dट्र" + + "ेलियाई केंद्रीय पश्चिमी मानक समयsऑस्\u200dट्रेलियाई केंद्रीय पश्चिमी ड" + + "ेलाइट समय>पूर्वी ऑस्ट्रेलिया समयQऑस्\u200dट्रेलियाई पूर्वी मानक समयWऑस" + + "्\u200dट्रेलियाई पूर्वी डेलाइट समयAपश्चिमी ऑस्ट्रेलिया समयQऑस्ट्रेलिया" + + "ई पश्चिमी मानक समयWऑस्ट्रेलियाई पश्चिमी डेलाइट समय%अज़रबैजान समय2अज़रब" + + "ैजान मानक समयJअज़रबैजान ग्रीष्मकालीन समय\x1fअज़ोरेस समय,अज़ोरेस मानक स" + + "मयDअज़ोरेस ग्रीष्मकालीन समय(बांग्लादेश समय5बांग्लादेश मानक समयMबांग्ला" + + "देश ग्रीष्मकालीन समय\x19भूटान समय\x22बोलीविया समय(ब्राजीलिया समय5ब्राज" + + "ीलिया मानक समयMब्राजीलिया ग्रीष्मकालीन समय;ब्रूनेई दारूस्सलम समय केप व" + + "र्ड समय-केप वर्ड मानक समयEकेप वर्ड ग्रीष्मकालीन समय)चामोरो मानक समय" + + "\x16चैथम समय#चैथम मानक समय)चैथम डेलाइट समय\x16चिली समय#चिली मानक समय;चिल" + + "ी ग्रीष्मकालीन समय\x13चीन समय चीन मानक समय&चीन डेलाइट समय%कॉइबाल्सन सम" + + "य2कॉइबाल्सन मानक समयJकॉइबाल्सन ग्रीष्मकालीन समय/क्रिसमस द्वीप समय5कोको" + + "स द्वीपसमूह समय\x22कोलंबिया समय/कोलंबिया मानक समयGकोलंबिया ग्रीष्मकाली" + + "न समय/कुक द्वीपसमूह समय<कुक द्वीपसमूह मानक समयgकुक द्वीपसमूह अर्द्ध ग्" + + "रीष्मकालीन समय\x1cक्यूबा समय)क्यूबा मानक समय/क्यूबा डेलाइट समय\x19डेवि" + + "स समय5ड्यूमोंट डर्विल समय,पूर्वी तिमोर समय)ईस्टर द्वीप समय6ईस्टर द्वीप" + + " मानक समयNईस्टर द्वीप ग्रीष्मकालीन समय\x22इक्वाडोर समय,मध्य यूरोपीय समय9" + + "मध्य यूरोपीय मानक समयWमध्\u200dय यूरोपीय ग्रीष्\u200dमकालीन समय2पूर्वी" + + " यूरोपीय समय?पूर्वी यूरोपीय मानक समयWपूर्वी यूरोपीय ग्रीष्मकालीन समय?अग्" + + "र पूर्वी यूरोपीय समय5पश्चिमी यूरोपीय समयBपश्चिमी यूरोपीय मानक समय]पश्च" + + "िमी यूरोपीय ग्रीष्\u200dमकालीन समय>फ़ॉकलैंड द्वीपसमूह समयKफ़ॉकलैंड द्व" + + "ीपसमूह मानक समयcफ़ॉकलैंड द्वीपसमूह ग्रीष्मकालीन समय\x19फ़िजी समय&फ़िजी" + + " मानक समय>फ़िजी ग्रीष्मकालीन समय2फ़्रेंच गुयाना समय[दक्षिणी फ़्रांस और अ" + + "ंटार्कटिक समय,गैलापेगोस का समय\x1fगैंबियर समय\x22जॉर्जिया समय/जॉर्जिया" + + " मानक समयGजॉर्जिया ग्रीष्मकालीन समय>गिल्बर्ट द्वीपसमूह समय/ग्रीनविच मीन " + + "टाइम8पूर्वी ग्रीनलैंड समयEपूर्वी ग्रीनलैंड मानक समय]पूर्वी ग्रीनलैंड ग" + + "्रीष्मकालीन समय;पश्चिमी ग्रीनलैंड समयHपश्चिमी ग्रीनलैंड मानक समय`पश्चि" + + "मी ग्रीनलैंड ग्रीष्मकालीन समय&खाड़ी मानक समय\x1cगुयाना समय.हवाई–आल्यूश" + + "न समय;हवाई–आल्यूशन मानक समयAहवाई–आल्यूशन डेलाइट समय#हाँग काँग समय0हाँग" + + " काँग मानक समयHहाँग काँग ग्रीष्मकालीन समय\x19होव्ड समय&होव्ड मानक समय>हो" + + "व्ड ग्रीष्मकालीन समय)भारतीय मानक समय,हिंद महासागर समय%इंडोचाइना समय5मध" + + "्य इंडोनेशिया समय;पूर्वी इंडोनेशिया समय>पश्चिमी इंडोनेशिया समय\x16ईरान" + + " समय#ईरान मानक समय)ईरान डेलाइट समय(इर्कुत्स्क समय5इर्कुत्स्क मानक समयMइर" + + "्कुत्स्क ग्रीष्मकालीन समय\x1fइज़राइल समय,इज़राइल मानक समय2इज़राइल डेला" + + "इट समय\x19जापान समय&जापान मानक समय,जापान डेलाइट समयSपेट्रोपेवलास्क-कैम" + + "चात्सकी समय`पेट्रोपेवलास्क-कैमचात्सकी मानक समयxपेट्रोपेवलास्क-कैमचात्स" + + "की ग्रीष्मकालीन समय8पूर्व कज़ाखस्तान समय;पश्चिम कज़ाखस्तान समय\x1fकोरि" + + "याई समय,कोरियाई मानक समय2कोरियाई डेलाइट समय\x1cकोसराए समय7क्रास्नोयार्" + + "स्क समयDक्रास्नोयार्स्क मानक समय\\क्रास्नोयार्स्क ग्रीष्मकालीन समय.किर" + + "्गिस्\u200dतान समय2लाइन द्वीपसमूह समय&लॉर्ड होवे समय3लॉर्ड होवे मानक स" + + "मय9लॉर्ड होवे डेलाइट समय/मक्वारी द्वीप समय\x1fमागादान समय,मागादान मानक" + + " समयDमागादान ग्रीष्मकालीन समय\x1fमलेशिया समय\x1cमालदीव समय\x22मार्केसस स" + + "मय8मार्शल द्वीपसमूह समय\x1cमॉरीशस समय)मॉरीशस मानक समयAमॉरीशस ग्रीष्मका" + + "लीन समय\x1cमाव्सन समयHउत्तर पश्चिमी मेक्सिको समयUउत्तर पश्चिमी मेक्सिक" + + "ो मानक समय[उत्तर पश्चिमी मेक्सिको डेलाइट समय8मेक्सिकन प्रशांत समयEमेक्" + + "सिकन प्रशांत मानक समयKमेक्सिकन प्रशांत डेलाइट समय#उलान बटोर समय0उलान ब" + + "टोर मानक समयHउलान बटोर ग्रीष्मकालीन समय\x1cमॉस्को समय)मॉस्को मानक समयA" + + "मॉस्को ग्रीष्मकालीन समय\x22म्यांमार समय\x16नौरू समय\x19नेपाल समय5न्यू " + + "कैलेडोनिया समयBन्यू कैलेडोनिया मानक समयZन्यू कैलेडोनिया ग्रीष्मकालीन स" + + "मय+न्यूज़ीलैंड समय8न्यूज़ीलैंड मानक समय>न्यूज़ीलैंड डेलाइट समय4न्यूफ़ा" + + "उंडलैंड समयAन्यूफ़ाउंडलैंड मानक समयGन्यूफ़ाउंडलैंड डेलाइट समय\x16नीयू " + + "समय/नॉरफ़ॉक द्वीप समयKफ़र्नांर्डो डे नोरोन्हा समयXफ़र्नांर्डो डे नोरोन" + + "्हा मानक समयpफ़र्नांर्डो डे नोरोन्हा ग्रीष्मकालीन समय1नोवोसिबिर्स्क सम" + + "य>नोवोसिबिर्स्क मानक समयVनोवोसिबिर्स्क ग्रीष्मकालीन समय\x1cओम्स्क समय)" + + "ओम्स्क मानक समयAओम्स्क ग्रीष्मकालीन समय%पाकिस्तान समय2पाकिस्तान मानक स" + + "मयJपाकिस्तान ग्रीष्मकालीन समय\x16पलाउ समय3पापुआ न्यू गिनी समय\x22पैराग" + + "्वे समय/पैराग्वे मानक समयGपैराग्वे ग्रीष्मकालीन समय\x16पेरू समय#पेरू म" + + "ानक समय;पेरू ग्रीष्मकालीन समय\x22फ़िलिपीन समय/फ़िलिपीन मानक समयGफ़िलिप" + + "ीन ग्रीष्मकालीन समय>फ़ीनिक्स द्वीपसमूह समयCसेंट पियरे और मिकेलान समयPस" + + "ेंट पियरे और मिकेलान मानक समयVसेंट पियरे और मिकेलान डेलाइट समय\x22पिटक" + + "ैर्न समय\x1cपोनापे समय(प्योंगयांग समय\x22रीयूनियन समय\x1cरोथेरा समय" + + "\x1cसखालिन समय)सखालिन मानक समयAसखालिन ग्रीष्मकालीन समय\x19समारा समय&समार" + + "ा मानक समय>समारा ग्रीष्मकालीन समय\x16समोआ समय#समोआ मानक समय)समोआ डेलाइ" + + "ट समय\x1cसेशल्स समय\x22सिंगापुर समय8सोलोमन द्वीपसमूह समय8दक्षिणी जॉर्ज" + + "िया समय\x1fसूरीनाम समय\x1cस्योवा समय\x1cताहिती समय\x19ताइपे समय&ताइपे " + + "मानक समय,ताइपे डेलाइट समय+ताजिकिस्तान समय\x1fटोकेलाऊ समय\x19टोंगा समय&" + + "टोंगा मानक समय>टोंगा ग्रीष्मकालीन समय\x13चूक समय4तुर्कमेनिस्तान समयAतु" + + "र्कमेनिस्तान मानक समयYतुर्कमेनिस्तान ग्रीष्मकालीन समय\x1cतुवालू समय" + + "\x1fउरुग्वे समय,उरुग्वे मानक समयDउरुग्वे ग्रीष्मकालीन समय1उज़्बेकिस्तान " + + "समय>उज़्बेकिस्तान मानक समयVउज़्बेकिस्तान ग्रीष्मकालीन समय\x1cवनुआतू सम" + + "य)वनुआतू मानक समयAवनुआतू ग्रीष्मकालीन समय(वेनेज़ुएला समय1व्लादिवोस्तोक" + + " समय>व्लादिवोस्तोक मानक समयVव्लादिवोस्तोक ग्रीष्मकालीन समय+वोल्गोग्राड स" + + "मय8वोल्गोग्राड मानक समयPवोल्गोग्राड ग्रीष्मकालीन समय\x1fवोस्तोक समय#वे" + + "क द्वीप समय<वालिस और फ़्यूचूना समय%याकुत्स्क समय2याकुत्स्क मानक समयJया" + + "कुत्स्क ग्रीष्मकालीन समय1येकातेरिनबर्ग समय>येकातेरिनबर्ग मानक समयVयेका" + + "तेरिनबर्ग ग्रीष्मकालीन समय\x0a{0} (+१)\x0a{0} (+०)" + +var bucket46 string = "" + // Size: 14532 bytes + "\x0bE, d. M. y.\x08d. M. y.\x12EEEE, d. MMMM y. G\x0cd. MMMM y. G\x0bd. " + + "MMM y. G\x10dd. MM. y. GGGGG\x03sij\x04velj\x04ožu\x03tra\x03svi\x03lip" + + "\x03srp\x03kol\x03ruj\x03lis\x03stu\x03pro\x09siječnja\x08veljače\x07ožu" + + "jka\x07travnja\x07svibnja\x06lipnja\x06srpnja\x08kolovoza\x05rujna\x09li" + + "stopada\x09studenoga\x08prosinca\x09siječanj\x08veljača\x07ožujak\x07tra" + + "vanj\x07svibanj\x06lipanj\x06srpanj\x07kolovoz\x05rujan\x08listopad\x07s" + + "tudeni\x08prosinac\x031kv\x032kv\x033kv\x034kv\x061. kv.\x062. kv.\x063." + + " kv.\x064. kv.\x05noću\x0cprije Krista\x0eposlije Krista\x07pr. Kr.\x09p" + + "r. n. e.\x07po. Kr.\x05n. e.\x09d. MMM y.\x0add. MM. y.\x0ad. M. y. G" + + "\x0ed. M. y. GGGGG\x11Taika (645.-650.)\x13Hakuchi (650.-671.)\x13Hakuhō" + + " (672.-686.)\x13Shuchō (686.-701.)\x12Taihō (701.-704.)\x11Keiun (704.-7" + + "08.)\x11Wadō (708.-715.)\x11Reiki (715.-717.)\x12Yōrō (717.-724.)\x11Jin" + + "ki (724.-729.)\x13Tempyō (729.-749.)\x1aTempyō-kampō (749.-749.)\x1bTemp" + + "yō-shōhō (749.-757.)\x19Tempyō-hōji (757.-765.)\x19Temphō-jingo (765.-76" + + "7.)\x17Jingo-keiun (767.-770.)\x11Hōki (770.-780.)\x12Ten-ō (781.-782.)" + + "\x13Enryaku (782.-806.)\x12Daidō (806.-810.)\x12Kōnin (810.-824.)\x13Ten" + + "chō (824.-834.)\x11Jōwa (834.-848.)\x11Kajō (848.-851.)\x11Ninju (851.-8" + + "54.)\x11Saiko (854.-857.)\x12Tennan (857.-859.)\x12Jōgan (859.-877.)\x12" + + "Genkei (877.-885.)\x11Ninna (885.-889.)\x13Kampyō (889.-898.)\x13Shōtai " + + "(898.-901.)\x10Engi (901.-923.)\x12Enchō (923.-931.)\x13Shōhei (931.-938" + + ".)\x13Tengyō (938.-947.)\x14Tenryaku (947.-957.)\x13Tentoku (957.-961.)" + + "\x10Ōwa (961.-964.)\x12Kōhō (964.-968.)\x10Anna (968.-970.)\x13Tenroku (" + + "970.-973.)\x12Ten-en (973.-976.)\x12Jōgen (976.-978.)\x12Tengen (978.-98" + + "3.)\x11Eikan (983.-985.)\x11Kanna (985.-987.)\x11Ei-en (987.-989.)\x10Ei" + + "so (989.-990.)\x15Shōryaku (990.-995.)\x14Chōtoku (995.-999.)\x14Chōhō (" + + "999.-1004.)\x14Kankō (1004.-1012.)\x14Chōwa (1012.-1017.)\x14Kannin (101" + + "7.-1021.)\x12Jian (1021.-1024.)\x13Manju (1024.-1028.)\x15Chōgen (1028.-" + + "1037.)\x17Chōryaku (1037.-1040.)\x16Chōkyū (1040.-1044.)\x15Kantoku (104" + + "4.-1046.)\x14Eishō (1046.-1053.)\x13Tengi (1053.-1058.)\x14Kōhei (1058.-" + + "1065.)\x15Jiryaku (1065.-1069.)\x14Enkyū (1069.-1074.)\x14Shōho (1074.-1" + + "077.)\x17Shōryaku (1077.-1081.)\x12Eiho (1081.-1084.)\x14Ōtoku (1084.-10" + + "87.)\x13Kanji (1087.-1094.)\x12Kaho (1094.-1096.)\x14Eichō (1096.-1097.)" + + "\x16Shōtoku (1097.-1099.)\x13Kōwa (1099.-1104.)\x14Chōji (1104.-1106.)" + + "\x14Kashō (1106.-1108.)\x14Tennin (1108.-1110.)\x14Ten-ei (1110.-1113.)" + + "\x14Eikyū (1113.-1118.)\x14Gen-ei (1118.-1120.)\x12Hoan (1120.-1124.)" + + "\x13Tenji (1124.-1126.)\x13Daiji (1126.-1131.)\x15Tenshō (1131.-1132.)" + + "\x16Chōshō (1132.-1135.)\x12Hoen (1135.-1141.)\x12Eiji (1141.-1142.)\x13" + + "Kōji (1142.-1144.)\x14Tenyō (1144.-1145.)\x14Kyūan (1145.-1151.)\x14Ninp" + + "ei (1151.-1154.)\x14Kyūju (1154.-1156.)\x13Hogen (1156.-1159.)\x13Heiji " + + "(1159.-1160.)\x15Eiryaku (1160.-1161.)\x12Ōho (1161.-1163.)\x15Chōkan (1" + + "163.-1165.)\x13Eiman (1165.-1166.)\x14Nin-an (1166.-1169.)\x12Kaō (1169." + + "-1171.)\x14Shōan (1171.-1175.)\x13Angen (1175.-1177.)\x14Jishō (1177.-11" + + "81.)\x13Yōwa (1181.-1182.)\x12Juei (1182.-1184.)\x16Genryuku (1184.-1185" + + ".)\x13Bunji (1185.-1190.)\x15Kenkyū (1190.-1199.)\x14Shōji (1199.-1201.)" + + "\x14Kennin (1201.-1204.)\x15Genkyū (1204.-1206.)\x14Ken-ei (1206.-1207.)" + + "\x15Shōgen (1207.-1211.)\x16Kenryaku (1211.-1213.)\x14Kenpō (1213.-1219." + + ")\x16Shōkyū (1219.-1222.)\x13Jōō (1222.-1224.)\x14Gennin (1224.-1225.)" + + "\x14Karoku (1225.-1227.)\x13Antei (1227.-1229.)\x13Kanki (1229.-1232.)" + + "\x13Jōei (1232.-1233.)\x15Tempuku (1233.-1234.)\x16Bunryaku (1234.-1235." + + ")\x13Katei (1235.-1238.)\x16Ryakunin (1238.-1239.)\x13En-ō (1239.-1240.)" + + "\x13Ninji (1240.-1243.)\x14Kangen (1243.-1247.)\x13Hōji (1247.-1249.)" + + "\x15Kenchō (1249.-1256.)\x14Kōgen (1256.-1257.)\x14Shōka (1257.-1259.)" + + "\x15Shōgen (1259.-1260.)\x14Bun-ō (1260.-1261.)\x15Kōchō (1261.-1264.)" + + "\x14Bun-ei (1264.-1275.)\x13Kenji (1275.-1278.)\x13Kōan (1278.-1288.)" + + "\x14Shōō (1288.-1293.)\x13Einin (1293.-1299.)\x14Shōan (1299.-1302.)\x14" + + "Kengen (1302.-1303.)\x13Kagen (1303.-1306.)\x14Tokuji (1306.-1308.)\x13E" + + "nkei (1308.-1311.)\x14Ōchō (1311.-1312.)\x14Shōwa (1312.-1317.)\x14Bunpō" + + " (1317.-1319.)\x13Genō (1319.-1321.)\x15Genkyō (1321.-1324.)\x16Shōchū (" + + "1324.-1326.)\x14Kareki (1326.-1329.)\x15Gentoku (1329.-1331.)\x14Genkō (" + + "1331.-1334.)\x13Kemmu (1334.-1336.)\x13Engen (1336.-1340.)\x15Kōkoku (13" + + "40.-1346.)\x15Shōhei (1346.-1370.)\x15Kentoku (1370.-1372.)\x15Bunchū (1" + + "372.-1375.)\x13Tenju (1375.-1379.)\x16Kōryaku (1379.-1381.)\x13Kōwa (138" + + "1.-1384.)\x15Genchū (1384.-1392.)\x15Meitoku (1384.-1387.)\x13Kakei (138" + + "7.-1389.)\x13Kōō (1389.-1390.)\x15Meitoku (1390.-1394.)\x12Ōei (1394.-14" + + "28.)\x16Shōchō (1428.-1429.)\x14Eikyō (1429.-1441.)\x15Kakitsu (1441.-14" + + "44.)\x14Bun-an (1444.-1449.)\x15Hōtoku (1449.-1452.)\x16Kyōtoku (1452.-1" + + "455.)\x15Kōshō (1455.-1457.)\x16Chōroku (1457.-1460.)\x15Kanshō (1460.-1" + + "466.)\x15Bunshō (1466.-1467.)\x13Ōnin (1467.-1469.)\x14Bunmei (1469.-148" + + "7.)\x16Chōkyō (1487.-1489.)\x14Entoku (1489.-1492.)\x13Meiō (1492.-1501." + + ")\x13Bunki (1501.-1504.)\x14Eishō (1504.-1521.)\x13Taiei (1521.-1528.)" + + "\x16Kyōroku (1528.-1532.)\x14Tenmon (1532.-1555.)\x13Kōji (1555.-1558.)" + + "\x14Eiroku (1558.-1570.)\x13Genki (1570.-1573.)\x15Tenshō (1573.-1592.)" + + "\x15Bunroku (1592.-1596.)\x15Keichō (1596.-1615.)\x13Genwa (1615.-1624.)" + + "\x14Kan-ei (1624.-1644.)\x14Shōho (1644.-1648.)\x13Keian (1648.-1652.)" + + "\x14Shōō (1652.-1655.)\x16Meiryaku (1655.-1658.)\x13Manji (1658.-1661.)" + + "\x14Kanbun (1661.-1673.)\x13Enpō (1673.-1681.)\x13Tenwa (1681.-1684.)" + + "\x15Jōkyō (1684.-1688.)\x15Genroku (1688.-1704.)\x13Hōei (1704.-1711.)" + + "\x16Shōtoku (1711.-1716.)\x15Kyōhō (1716.-1736.)\x14Genbun (1736.-1741.)" + + "\x14Kanpō (1741.-1744.)\x14Enkyō (1744.-1748.)\x14Kan-en (1748.-1751.)" + + "\x16Hōryaku (1751.-1764.)\x13Meiwa (1764.-1772.)\x13An-ei (1772.-1781.)" + + "\x14Tenmei (1781.-1789.)\x14Kansei (1789.-1801.)\x14Kyōwa (1801.-1804.)" + + "\x13Bunka (1804.-1818.)\x14Bunsei (1818.-1830.)\x14Tenpō (1830.-1844.)" + + "\x13Kōka (1844.-1848.)\x12Kaei (1848.-1854.)\x13Ansei (1854.-1860.)\x14M" + + "an-en (1860.-1861.)\x15Bunkyū (1861.-1864.)\x13Genji (1864.-1865.)\x13Ke" + + "iō (1865.-1868.)\x05Meiji\x07Taishō\x06Shōwa\x06Heisei\x0cprošle god." + + "\x08ove god.\x0esljedeće god.\x0aprošle g.\x06ove g.\x0csljedeće g.\x07+" + + "{0} g.\x07-{0} g.\x0fprošli kvartal\x0covaj kvartal\x11sljedeći kvartal" + + "\x0bprošli kv.\x08ovaj kv.\x0dsljedeći kv.\x08+{0} kv.\x0bprošli mj.\x08" + + "ovaj mj.\x0dsljedeći mj.\x08+{0} mj.\x08-{0} mj.\x06tjedan\x0eprošli tje" + + "dan\x0bovaj tjedan\x10sljedeći tjedan\x0dza {0} tjedan\x0dza {0} tjedna" + + "\x0eza {0} tjedana\x10prije {0} tjedan\x10prije {0} tjedna\x11prije {0} " + + "tjedana\x0dtjedan od {0}\x03tj.\x0bprošli tj.\x08ovaj tj.\x0dsljedeći tj" + + ".\x0aza {0} tj.\x0dprije {0} tj.\x08+{0} tj.\x08-{0} tj.\x08za {0} d\x0b" + + "prije {0} d\x0cdan u tjednu\x0bprije {0} h\x0dprije {0} min\x03sad\x0bpr" + + "ije {0} s\x1dKoordinirano svjetsko vrijeme\x18britansko ljetno vrijeme" + + "\x18irsko standardno vrijeme\x0cAcre vrijeme\x17Acre standardno vrijeme" + + "\x13Acre ljetno vrijeme\x15afganistansko vrijeme\x17srednjoafričko vrije" + + "me\x18istočnoafričko vrijeme\x16južnoafričko vrijeme\x17zapadnoafričko v" + + "rijeme\x22zapadnoafričko standardno vrijeme\x1ezapadnoafričko ljetno vri" + + "jeme\x10aljaško vrijeme\x1baljaško standardno vrijeme\x17aljaško ljetno " + + "vrijeme\x11altmajsko vrijeme\x1caltmajsko standardno vrijeme\x18altmajsk" + + "o ljetno vrijeme\x11amazonsko vrijeme\x1camazonsko standardno vrijeme" + + "\x18amazonsko ljetno vrijeme\x12središnje vrijeme\x1dsredišnje standardn" + + "o vrijeme\x19središnje ljetno vrijeme\x10istočno vrijeme\x1bistočno stan" + + "dardno vrijeme\x17istočno ljetno vrijeme\x11planinsko vrijeme\x1cplanins" + + "ko standardno vrijeme\x18planinsko ljetno vrijeme\x12pacifičko vrijeme" + + "\x1dpacifičko standardno vrijeme\x19pacifičko ljetno vrijeme\x11anadirsk" + + "o vrijeme\x1canadirsko standardno vrijeme\x18anadirsko ljetno vrijeme" + + "\x0dvrijeme Apije\x18standardno vrijeme Apije\x14ljetno vrijeme Apije" + + "\x13vrijeme grada Aktau\x1estandardno vrijeme grada Aktau\x1aljetno vrij" + + "eme grada Aktau\x14vrijeme grada Aktobe\x1fstandardno vrijeme grada Akto" + + "be\x1bljetno vrijeme grada Aktobe\x0farapsko vrijeme\x1aarapsko standard" + + "no vrijeme\x16arapsko ljetno vrijeme\x13argentinsko vrijeme\x1eargentins" + + "ko standardno vrijeme\x1aargentinsko ljetno vrijeme\x1bzapadno-argentins" + + "ko vrijeme&zapadno-argentinsko standardno vrijeme\x22zapadno-argentinsko" + + " ljetno vrijeme\x10armensko vrijeme\x1barmensko standardno vrijeme\x17ar" + + "mensko ljetno vrijeme\x11atlantsko vrijeme\x1catlantsko standardno vrije" + + "me\x18atlantsko ljetno vrijeme\x19srednjoaustralsko vrijeme$srednjoaustr" + + "alsko standardno vrijeme srednjoaustralsko ljetno vrijeme%australsko sre" + + "dišnje zapadno vrijeme0australsko središnje zapadno standardno vrijeme,a" + + "ustralsko središnje zapadno ljetno vrijeme\x1aistočnoaustralsko vrijeme%" + + "istočnoaustralsko standardno vrijeme!istočnoaustralsko ljetno vrijeme" + + "\x19zapadnoaustralsko vrijeme$zapadnoaustralsko standardno vrijeme zapad" + + "noaustralsko ljetno vrijeme\x17azerbajdžansko vrijeme\x22azerbajdžansko " + + "standardno vrijeme\x1eazerbajdžansko ljetno vrijeme\x0fazorsko vrijeme" + + "\x1aazorsko standardno vrijeme\x16azorsko ljetno vrijeme\x14bangladeško " + + "vrijeme\x1fbangladeško standardno vrijeme\x1bbangladeško ljetno vrijeme" + + "\x10butansko vrijeme\x12bolivijsko vrijeme\x13brazilijsko vrijeme\x1ebra" + + "zilijsko standardno vrijeme\x1abrazilijsko ljetno vrijeme\x1cvrijeme za " + + "Brunej Darussalam\x1cvrijeme Zelenortskog otočja'standardno vrijeme Zele" + + "nortskog otočja#ljetno vrijeme Zelenortskog otočja\x0fvrijeme Caseyja" + + "\x1bstandardno vrijeme Chamorra\x10vrijeme Chathama\x1bstandardno vrijem" + + "e Chathama\x17ljetno vrijeme Chathama\x12čileansko vrijeme\x1dčileansko " + + "standardno vrijeme\x19čileansko ljetno vrijeme\x0fkinesko vrijeme\x1akin" + + "esko standardno vrijeme\x16kinesko ljetno vrijeme\x15choibalsansko vrije" + + "me choibalsansko standardno vrijeme\x1cchoibalsansko ljetno vrijeme\x18v" + + "rijeme Božićnog otoka\x17vrijeme Kokosovih Otoka\x13kolumbijsko vrijeme" + + "\x1ekolumbijsko standardno vrijeme\x1akolumbijsko ljetno vrijeme\x16vrij" + + "eme Cookovih Otoka!standardno vrijeme Cookovih Otoka0Cookovo otočje, pol" + + "usatni pomak, ljetno vrijeme\x10kubansko vrijeme\x1bkubansko standardno " + + "vrijeme\x17kubansko ljetno vrijeme\x0evrijeme Davisa\x1bvrijeme Dumont-d" + + "’Urvillea\x18istočnotimorsko vrijeme\x18vrijeme Uskršnjeg otoka#standa" + + "rdno vrijeme Uskršnjeg otoka\x1fljetno vrijeme Uskršnjeg otoka\x12ekvado" + + "rsko vrijeme\x17srednjoeuropsko vrijeme\x22srednjoeuropsko standardno vr" + + "ijeme\x1esrednjoeuropsko ljetno vrijeme\x18istočnoeuropsko vrijeme#istoč" + + "noeuropsko standardno vrijeme\x1fistočnoeuropsko ljetno vrijeme\x1fdalek" + + "oistočno europsko vrijeme\x17zapadnoeuropsko vrijeme\x22zapadnoeuropsko " + + "standardno vrijeme\x1ezapadnoeuropsko ljetno vrijeme\x13falklandsko vrij" + + "eme\x1efalklandsko standardno vrijeme\x1afalklandsko ljetno vrijeme\x10v" + + "rijeme Fidžija\x1bstandardno vrijeme Fidžija\x17ljetno vrijeme Fidžija" + + "\x19vrijeme Francuske Gvajane&južnofrancusko i antarktičko vrijeme\x12vr" + + "ijeme Galapagosa\x10vrijeme Gambiera\x11gruzijsko vrijeme\x1cgruzijsko s" + + "tandardno vrijeme\x18gruzijsko ljetno vrijeme\x19vrijeme Gilbertovih Oto" + + "ka\x13univerzalno vrijeme\x1bistočnogrenlandsko vrijeme&istočnogrenlands" + + "ko standardno vrijeme\x22istočnogrenlandsko ljetno vrijeme\x1azapadnogre" + + "nlandsko vrijeme%zapadnogrenlandsko standardno vrijeme!zapadnogrenlandsk" + + "o ljetno vrijeme\x1aguamsko standardno vrijeme\x1czaljevsko standardno v" + + "rijeme\x11gvajansko vrijeme\x19havajsko-aleutsko vrijeme$havajsko-aleuts" + + "ko standardno vrijeme havajsko-aleutsko ljetno vrijeme\x13hongkonško vri" + + "jeme\x1ehongkonško standardno vrijeme\x1ahongkonško ljetno vrijeme\x0fho" + + "vdsko vrijeme\x1ahovdsko standardno vrijeme\x16hovdsko ljetno vrijeme" + + "\x10indijsko vrijeme\x18vrijeme Indijskog oceana\x13indokinesko vrijeme" + + "\x1bsrednjoindonezijsko vrijeme\x1cistočnoindonezijsko vrijeme\x1bzapadn" + + "oindonezijsko vrijeme\x0firansko vrijeme\x1airansko standardno vrijeme" + + "\x16iransko ljetno vrijeme\x10irkutsko vrijeme\x1birkutsko standardno vr" + + "ijeme\x17irkutsko ljetno vrijeme\x11izraelsko vrijeme\x1cizraelsko stand" + + "ardno vrijeme\x18izraelsko ljetno vrijeme\x10japansko vrijeme\x1bjapansk" + + "o standardno vrijeme\x17japansko ljetno vrijeme Petropavlovsk-kamčatsko " + + "vrijeme+Petropavlovsk-kamčatsko standardno vrijeme'Petropavlovsk-kamčats" + + "ko ljetno vrijeme\x1cistočnokazahstansko vrijeme\x1bzapadnokazahstansko " + + "vrijeme\x10korejsko vrijeme\x1bkorejsko standardno vrijeme\x17korejsko l" + + "jetno vrijeme\x0evrijeme Kosrae\x14krasnojarsko vrijeme\x1fkrasnojarsko " + + "standardno vrijeme\x1bkrasnojarsko ljetno vrijeme\x14kirgistansko vrijem" + + "e\x11lankansko vrijeme\x12vrijeme Otoka Line\x17vrijeme otoka Lord Howe" + + "\x22standardno vrijeme otoka Lord Howe\x1eljetno vrijeme otoka Lord Howe" + + "\x10makaosko vrijeme\x1bstandardno makaosko vrijeme\x17ljetno makaosko v" + + "rijeme\x17vrijeme otoka Macquarie\x12magadansko vrijeme\x1dmagadansko st" + + "andardno vrijeme\x19magadansko ljetno vrijeme\x12malezijsko vrijeme\x11m" + + "aldivsko vrijeme\x14markižansko vrijeme\x19vrijeme Maršalovih Otoka\x13v" + + "rijeme Mauricijusa\x1estandardno vrijeme Mauricijusa\x1aljetno vrijeme M" + + "auricijusa\x11mawsonsko vrijeme sjeverozapadno meksičko vrijeme+sjeveroz" + + "apadno meksičko standardno vrijeme'sjeverozapadno meksičko ljetno vrijem" + + "e\x1cmeksičko pacifičko vrijeme'meksičko pacifičko standardno vrijeme#me" + + "ksičko pacifičko ljetno vrijeme\x15ulan-batorsko vrijeme ulan-batorsko s" + + "tandardno vrijeme\x1culan-batorsko ljetno vrijeme\x11moskovsko vrijeme" + + "\x1cmoskovsko standardno vrijeme\x18moskovsko ljetno vrijeme\x12mianmars" + + "ko vrijeme\x0evrijeme Naurua\x10nepalsko vrijeme\x17vrijeme Nove Kaledon" + + "ije\x22standardno vrijeme Nove Kaledonije\x1eljetno vrijeme Nove Kaledon" + + "ije\x15novozelandsko vrijeme novozelandsko standardno vrijeme\x1cnovozel" + + "andsko ljetno vrijeme\x17newfoundlandsko vrijeme\x22newfoundlandsko stan" + + "dardno vrijeme\x1enewfoundlandsko ljetno vrijeme\x0dvrijeme Niuea\x15vri" + + "jeme Otoka Norfolk!vrijeme grada Fernando de Noronha,standardno vrijeme " + + "grada Fernando de Noronha(ljetno vrijeme grada Fernando de Noronha!vrije" + + "me Sjevernomarijanskih Otoka\x14novosibirsko vrijeme\x1fnovosibirsko sta" + + "ndardno vrijeme\x1bnovosibirsko ljetno vrijeme\x0domsko vrijeme\x18omsko" + + " standardno vrijeme\x14omsko ljetno vrijeme\x13pakistansko vrijeme\x1epa" + + "kistansko standardno vrijeme\x1apakistansko ljetno vrijeme\x0evrijeme Pa" + + "laua\x1avrijeme Papue Nove Gvineje\x13paragvajsko vrijeme\x1eparagvajsko" + + " standardno vrijeme\x1aparagvajsko ljetno vrijeme\x11peruansko vrijeme" + + "\x1cperuansko standardno vrijeme\x18peruansko ljetno vrijeme\x12filipins" + + "ko vrijeme\x1dfilipinsko standardno vrijeme\x19filipinsko ljetno vrijeme" + + "\x15vrijeme Otoka Phoenix vrijeme za Sveti Petar i Mikelon+standardno vr" + + "ijeme za Sveti Petar i Mikelon'ljetno vrijeme za Sveti Petar i Mikelon" + + "\x11vrijeme Pitcairna\x0fvrijeme Ponapea\x14pjongjanško vrijeme\x17vrije" + + "me grada Kizilorde\x22standardno vrijeme grada Kizilorde\x1eljetno vrije" + + "me grada Kizilorde\x10vrijeme Reuniona\x0fvrijeme Rothere\x12sahalinsko " + + "vrijeme\x1dsahalinsko standardno vrijeme\x19sahalinsko ljetno vrijeme" + + "\x10samarsko vrijeme\x1bsamarsko standardno vrijeme\x17samarsko ljetno v" + + "rijeme\x11samoansko vrijeme\x1csamoansko standardno vrijeme\x18samoansko" + + " ljetno vrijeme\x12sejšelsko vrijeme\x13singapursko vrijeme\x19vrijeme S" + + "alomonskih Otoka\x17vrijeme Južne Georgije\x12surinamsko vrijeme\x0dvrij" + + "eme Syowe\x10vrijeme Tahitija\x11tajpeško vrijeme\x1ctajpeško standardno" + + " vrijeme\x18tajpeško ljetno vrijeme\x17tadžikistansko vrijeme\x10vrijeme" + + " Tokelaua\x0dvrijeme Tonge\x18standardno vrijeme Tonge\x14ljetno vrijeme" + + " Tonge\x0evrijeme Chuuka\x17turkmenistansko vrijeme\x22turkmenistansko s" + + "tandardno vrijeme\x1eturkmenistansko ljetno vrijeme\x0fvrijeme Tuvalua" + + "\x12urugvajsko vrijeme\x1durugvajsko standardno vrijeme\x19urugvajsko lj" + + "etno vrijeme\x15uzbekistansko vrijeme uzbekistansko standardno vrijeme" + + "\x1cuzbekistansko ljetno vrijeme\x10vrijeme Vanuatua\x1bstandardno vrije" + + "me Vanuatua\x17ljetno vrijeme Vanuatua\x13venezuelsko vrijeme\x16vladivo" + + "stočko vrijeme!vladivostočko standardno vrijeme\x1dvladivostočko ljetno " + + "vrijeme\x14volgogradsko vrijeme\x1fvolgogradsko standardno vrijeme\x1bvo" + + "lgogradsko ljetno vrijeme\x11vostočko vrijeme\x12vrijeme Otoka Wake\x1dv" + + "rijeme Otoka Wallis i Futuna\x10jakutsko vrijeme\x1bjakutsko standardno " + + "vrijeme\x17jakutsko ljetno vrijeme\x17ekaterinburško vrijeme\x22ekaterin" + + "burško standardno vrijeme\x1eekaterinburško ljetno vrijeme\x06po Kr.\x06" + + "po Kr." + +var bucket47 string = "" + // Size: 9289 bytes + "\x09d. M. yy.\x09njedźela\x0apóndźela\x06wutora\x06srjeda\x09štwórtk\x05" + + "pjatk\x06sobota\x0apopołdnju\x04pop.\x1dpřed Chrystowym narodźenjom\x1cp" + + "řed našim ličenjom časa\x19po Chrystowym narodźenju\x16našeho ličenja č" + + "asa\x0apř.Chr.n.\x0bpř.n.l.č.\x09po Chr.n.\x07n.l.č.\x0dH:mm 'hodź'.\x04" + + "doba\x04loni\x06lětsa\x06klětu\x10před {0} lětom\x12před {0} lětomaj\x11" + + "před {0} lětami\x13před {0} kwartalom\x15před {0} kwartalomaj\x14před {0" + + "} kwartalemi\x10před {0} kwart.\x0dpřed {0} kw.\x06měsac\x0ezašły měsac" + + "\x0dtutón měsac\x11přichodny měsac\x0dza {0} měsac\x0fza {0} měsacaj\x0e" + + "za {0} měsacy\x0fza {0} měsacow\x12před {0} měsacom\x14před {0} měsacoma" + + "j\x13před {0} měsacami\x08tydźeń\x10zašły tydźeń\x0ftutón tydźeń\x13přic" + + "hodny tydźeń\x0fza {0} tydźeń\x11za {0} tydźenjej\x10za {0} tydźenje\x11" + + "za {0} tydźenjow\x14před {0} tydźenjom\x16před {0} tydźenjomaj\x15před {" + + "0} tydźenjemi\x06tydź.\x0dza {0} tydź.\x10před {0} tydź.\x06dźeń\x06wčer" + + "a\x07dźensa\x06jutře\x0dza {0} dźeń\x0cza {0} dnjej\x0aza {0} dny\x0cza " + + "{0} dnjow\x0fpřed {0} dnjom\x11před {0} dnjomaj\x10před {0} dnjemi\x0bza" + + " {0} dnj.\x0epřed {0} dnj.\x0bpřed {0} d\x10dźeń tydźenja\x11zašłu njedź" + + "elu\x0etutu njedźelu\x14přichodnu njedźelu\x0czašłu nje.\x09tutu nje." + + "\x0fpřichodnu nje.\x0bzašłu nj.\x08tutu nj.\x0epřichodnu nj.\x12zašłu pó" + + "ndźelu\x0ftutu póndźelu\x15přichodnu póndźelu\x0dzašłu pón.\x0atutu pón." + + "\x10přichodnu pón.\x0czašłu pó.\x09tutu pó.\x0fpřichodnu pó.\x0ezašłu wu" + + "toru\x0btutu wutoru\x11přichodnu wutoru\x0czašłu wut.\x09tutu wut.\x0fpř" + + "ichodnu wut.\x0bzašłu wu.\x08tutu wu.\x0epřichodnu wu.\x0ezašłu srjedu" + + "\x0btutu srjedu\x11přichodnu srjedu\x0czašłu srj.\x09tutu srj.\x0fpřicho" + + "dnu srj.\x0bzašłu sr.\x08tutu sr.\x0epřichodnu sr.\x11zašły štwórtk\x10t" + + "utón štwórtk\x14přichodny štwórtk\x0dzašły štw.\x0ctutón štw.\x10přichod" + + "ny štw.\x0czašły št.\x0btutón št.\x0fpřichodny št.\x0dzašły pjatk\x0ctut" + + "ón pjatk\x10přichodny pjatk\x0czašły pja.\x0btutón pja.\x0fpřichodny pj" + + "a.\x0bzašły pj.\x0atutón pj.\x0epřichodny pj.\x0ezašłu sobotu\x0btutu so" + + "botu\x11přichodnu sobotu\x0czašłu sob.\x09tutu sob.\x0fpřichodnu sob." + + "\x0bzašłu so.\x08tutu so.\x0epřichodnu so.\x08hodźina\x0fza {0} hodźinu" + + "\x10za {0} hodźinje\x0fza {0} hodźiny\x0eza {0} hodźin\x12před {0} hodźi" + + "nu\x15před {0} hodźinomaj\x14před {0} hodźinami\x06hodź.\x0dza {0} hodź." + + "\x10před {0} hodź.\x10před {0} minutu\x13před {0} minutomaj\x12před {0} " + + "minutami\x0epřed {0} min.\x0bpřed {0} m\x11před {0} sekundu\x14před {0} " + + "sekundomaj\x13před {0} sekundami\x0epřed {0} sek.\x0dčasowe pasmo\x11čas" + + "owe pasmo {0}\x0f{0} lětni čas\x0f{0} zymski čas\x14Britiski lětni čas" + + "\x11Irski lětni čas\x0eafghanski čas\x15centralnoafriski čas\x13wuchodoa" + + "friski čas\x12južnoafriski čas\x12zapadoafriski čas\x1dzapadoafriski sta" + + "ndardny čas\x19zapadoafriski lětni čas\x0ealaskaski čas\x19alaskaski sta" + + "ndardny čas\x15alaskaski lětni čas\x0fAmaconaski čas\x1aAmaconaski stand" + + "ardny čas\x16Amaconaski lětni čas\x1esewjeroameriski centralny čas)sewje" + + "roameriski centralny standardny čas%sewjeroameriski centralny lětni čas" + + "\x1dsewjeroameriski wuchodny čas(sewjeroameriski wuchodny standardny čas" + + "$sewjeroameriski wuchodny lětni čas\x1csewjeroameriski hórski čas'sewjer" + + "oameriski hórski standardny čas#sewjeroameriski hórski lětni čas\x1esewj" + + "eroameriski pacifiski čas)sewjeroameriski pacifiski standardny čas%sewje" + + "roameriski pacifiski lětni čas\x0cApiaski čas\x17Apiaski standardny čas" + + "\x13Apiaski lětni čas\x0carabski čas\x17arabski standardny čas\x13arabsk" + + "i lětni čas\x10argentinski čas\x1bargentinski standardny čas\x17argentin" + + "ski lětni čas\x16zapadoargentinski čas!zapadoargentinski standardny čas" + + "\x1dzapadoargentinski lětni čas\x0darmenski čas\x18armenski standardny č" + + "as\x14armenski lětni čas\x0fatlantiski čas\x1aatlantiski standardny čas" + + "\x16atlantiski lětni čas\x17srjedźoawstralski čas\x22srjedźoawstralski s" + + "tandardny čas\x1esrjedźoawstralski lětni čas\x1fsrjedźozapadny awstralsk" + + "i čas*srjedźozapadny awstralski standardny čas%sjedźozapadny awstralski " + + "lětni čas\x16wuchodoawstralski čas!wuchodoawstralski standardny čas\x1dw" + + "uchodoawstralski lětni čas\x15zapadoawstralski čas zapadoawstralski stan" + + "dardny čas\x1czapadoawstralski lětni čas\x14azerbajdźanski čas\x1fazerba" + + "jdźanski standardny čas\x1bazerbajdźanski lětni čas\x0cacorski čas\x17ac" + + "orski standardny čas\x13acorski lětni čas\x12bangladešski čas\x1dbanglad" + + "ešski standardny čas\x19bangladešski lětni čas\x0ebhutanski čas\x0eboliw" + + "iski čas\x0fBrasiliski čas\x1aBrasiliski standardny čas\x16Brasiliski lě" + + "tni čas\x0ebruneiski čas\x0fkapverdski čas\x1akapverdski standardny čas" + + "\x16kapverdski lětni čas\x10chamorroski čas\x0fchathamski čas\x1achatham" + + "ski standardny čas\x16chathamski lětni čas\x0cchilski čas\x17chilski sta" + + "ndardny čas\x13chilski lětni čas\x0cchinski čas\x17chinski standardny ča" + + "s\x13chinski lětni čas\x12Čojbalsanski čas\x1dČojbalsanski standardny ča" + + "s\x19Čojbalsanski lětni čas\x13čas Hodowneje kupy\x15čas Kokosowych kupo" + + "w\x0fkolumbiski čas\x1akolumbiski standardny čas\x16kolumbiski lětni čas" + + "\x14čas Cookowych kupow\x1fstandardny čas Cookowych kupow\x1blětni čas C" + + "ookowych kupow\x0ckubaski čas\x17kubaski standardny čas\x13kubaski lětni" + + " čas\x0cDaviski čas\x1aDumont d´ Urvilleski čas\x15wuchodnotimorski čas" + + "\x14čas Jutrowneje kupy\x1fstandardny čas Jutrowneje kupy\x1blětni čas J" + + "utrowneje kupy\x0fekwadorski čas\x15srjedźoeuropski čas srjedźoeuropski " + + "standardny čas\x1csrjedźoeuropski lětni čas\x14wuchodoeuropski čas\x1fwu" + + "chodoeuropski standardny čas\x1bwuchodoeuropski lětni čas\x13Kaliningrad" + + "ski čas\x13zapadoeuropski čas\x1ezapadoeuropski standardny čas\x1azapado" + + "europski lětni čas\x10falklandski čas\x1bfalklandski standardny čas\x17f" + + "alklandski lětni čas\x0efidźiski čas\x19fidźiski standardny čas\x15fidźi" + + "ski lětni čas\x16francoskoguyanski čas4čas Francoskeho južneho a antarkt" + + "iskeho teritorija\x10galapagoski čas\x0fgambierski čas\x0egeorgiski čas" + + "\x19georgiski standardny čas\x15georgiski lětni čas\x17čas Gilbertowych " + + "kupow\x11Greenwichski čas\x18wuchodogrönlandski čas#wuchodogrönlandski s" + + "tandardny čas\x1fwuchodogrönlandski lětni čas\x17zapadogrönlandski čas" + + "\x22zapadogrönlandski standardny čas\x1ezapadogrönlandski lětni čas\x15č" + + "as Persiskeho golfa\x0dguyanski čas\x17hawaiisko-aleutski čas\x22hawaiis" + + "ko-aleutski standardny čas\x1ehawaiisko-aleutski lětni čas\x10Hongkongsk" + + "i čas\x1bHongkongski standardny čas\x17Hongkongski lětni čas\x0dChowdski" + + " čas\x18Chowdski standardny čas\x14Chowdski lětni čas\x0cindiski čas\x14" + + "indiskooceanski čas\x10indochinski čas\x16srjedźoindoneski čas\x10wuchod" + + "oindoneski\x14zapadoindoneski čas\x0ciranski čas\x17iranski standardny č" + + "as\x13iranski lětni čas\x0dIrkutski čas\x18Irkutski standardny čas\x14Ir" + + "kutski lětni čas\x0eisraelski čas\x19israelski standardny čas\x15israels" + + "ki lětni čas\x0djapanski čas\x18japanski standardny čas\x14japanski lětn" + + "i čas\x16wuchodnokazachski čas\x15zapadnokazachski čas\x0dkorejski čas" + + "\x18korejski standardny čas\x14korejski lětni čas\x0ekosraeski čas\x11Kr" + + "asnojarski čas\x1cKrasnojarski standardny čas\x18Krasnojarski lětni čas" + + "\x0dkirgiski čas\x15čas Linijowych kupow\x13čas kupy Lord-Howe\x1estanda" + + "rdny čas kupy Lord-Howe\x1alětni čas kupy Lord-Howe\x13čas kupy Macquari" + + "e\x0fMagadanski čas\x1aMagadanski standardny čas\x16Magadanski lětni čas" + + "\x0fmalajziski čas\x0fmalediwski čas\x10marquesaski čas\x18čas Marshallo" + + "wych kupow\x10mauritiuski čas\x1bmauritiuski standardny čas\x17mauritius" + + "ki lětni čas\x0eMawsonski čas\x1bmexiski sewjerozapadny čas&mexiski sewj" + + "erozapadny standardny čas\x22mexiski sewjerozapadny lětni čas\x16mexiski" + + " pacifiski čas!mexiski pacifiski standardny čas\x1dmexiski pacifiski lět" + + "ni čas\x12Ulan-Batorski čas\x1dUlan-Batorski standardny čas\x19Ulan-Bato" + + "rski lětni čas\x0eMoskowski čas\x19Moskowski standardny čas\x15Moskowski" + + " lětni čas\x0fmyanmarski čas\x0dnauruski čas\x0dnepalski čas\x13nowokale" + + "donski čas\x1enowokaledonski standardny čas\x1anowokaledonski lětni čas" + + "\x13nowoseelandski čas\x1enowoseelandski standardny čas\x1anowoseelandsk" + + "i lětni čas\x14nowofundlandski čas\x1fnowofundlandski standardny čas\x1b" + + "nowofundlandski lětni čas\x0cniueski čas\x11čas kupy Norfolk\x1ečas kupo" + + "w Fernando de Noronha)standardny čas kupow Fernando de Noronha%lětni čas" + + " kupow Fernando de Noronha\x11Nowosibirski čas\x1cNowosibirski standardn" + + "y čas\x18Nowosibirski lětni čas\x0aOmski čas\x15Omski standardny čas\x11" + + "Omski lětni čas\x10pakistanski čas\x1bpakistanski standardny čas\x17paki" + + "stanski lětni čas\x0dpalauski čas\x17papua-nowoginejski čas\x10Paraguays" + + "ki čas\x1bParaguayski standardny čas\x17Paraguayski lětni čas\x0cperuski" + + " čas\x17peruski standardny čas\x13peruski lětni čas\x0ffilipinski čas" + + "\x1afilipinski standardny čas\x16filipinski lětni čas\x17čas Phoenixowyc" + + "h kupow čas kupow St. Pierre a Miquelon+standardny čas kupow St. Pierre " + + "a Miquelon'lětni čas kupow St. Pierre a Miquelon\x18čas Pitcairnowych ku" + + "pow\x0eponapeski čas\x0freunionski čas\x0fRotheraski čas\x10sachalinski " + + "čas\x1bsachalinski standardny čas\x17sachalinski lětni čas\x0dsamoaski " + + "čas\x18samoaski standardny čas\x14samoaski lětni čas\x10seychellski čas" + + "\x10Singapurski čas\x17čas Salomonskich kupow\x14južnogeorgiski čas\x0fs" + + "urinamski čas\x0dSyowaski čas\x0etahitiski čas\x0eTaipehski čas\x19Taipe" + + "hski standardny čas\x15Taipehski lětni čas\x0ftadźikski čas\x0ftokelausk" + + "i čas\x0dtongaski čas\x18tongaski standardny čas\x14tongaski lětni čas" + + "\x0dchuukski čas\x0fturkmenski čas\x1aturkmenski standardny čas\x16turkm" + + "enski lětni čas\x0etuvaluski čas\x0furuguayski čas\x1auruguayski standar" + + "dny čas\x16uruguayski lětni čas\x0duzbekski čas\x18uzbekski standardny č" + + "as\x14uzbekski lětni čas\x0fvanuatuski čas\x1avanuatuski standardny čas" + + "\x16vanuatuski lětni čas\x10venezuelski čas\x13Wladiwostokski čas\x1eWla" + + "diwostokski standardny čas\x1aWladiwostokski lětni čas\x11Wolgogradski č" + + "as\x1cWolgogradski standardny čas\x18Wolgogradski lětni čas\x0eWostokski" + + " čas\x0ečas kupy Wake\x1ačas kupow Wallis a Futuna\x0dJakutski čas\x18Ja" + + "kutski standardny čas\x14Jakutski lětni čas\x15Jekaterinburgski čas Jeka" + + "terinburgski standardny čas\x1cJekaterinburgski lětni čas" + +var bucket48 string = "" + // Size: 9735 bytes + "\x12G y. MMMM d., EEEE\x0cG y. MMMM d.\x0bG y. MMM d.\x0eGGGGG y. M. d." + + "\x07január\x08február\x08március\x08április\x06május\x07június\x07július" + + "\x09augusztus\x0aszeptember\x08október\x08november\x08december\x09vasárn" + + "ap\x07hétfő\x04kedd\x06szerda\x0ccsütörtök\x07péntek\x07szombat\x02N1" + + "\x02N2\x02N3\x02N4\x0cI. negyedév\x0dII. negyedév\x0eIII. negyedév\x0dIV" + + ". negyedév\x0c1. negyedév\x0c2. negyedév\x0c3. negyedév\x0c4. negyedév" + + "\x07éjfél\x03de.\x04dél\x03du.\x06reggel\x09délután\x04este\x08éjszaka" + + "\x0adélelőtt\x06éjjel\x06hajnal\x19időszámításunk előtt\x05i. e.\x1aidős" + + "zámításunk szerint\x06i. sz.\x03ie.\x04isz.\x10y. MMMM d., EEEE\x0ay. MM" + + "MM d.\x09y. MMM d.\x0ay. MM. dd.\x05Tisri\x07Hesván\x08Kiszlév\x08Tévész" + + "\x05Svát\x08Ádár I\x06Ádár\x09Ádár II\x07Niszán\x05Ijár\x07Sziván\x05Tam" + + "uz\x03Áv\x04Elul\x03TÉ\x04Moh.\x04Saf.\x07Réb. 1\x07Réb. 2\x07Dsem. I" + + "\x08Dsem. II\x04Red.\x04Sab.\x04Ram.\x04Sev.\x08Dsül k.\x08Dsül h.\x08Mo" + + "harrem\x05Safar\x0eRébi el avvel\x0fRébi el accher\x11Dsemádi el avvel" + + "\x12Dsemádi el accher\x06Redseb\x06Sabán\x08Ramadán\x07Sevvál\x0aDsül ka" + + "de\x0bDsül hedse\x07Rébi I\x08Rébi II\x0aDsemádi I\x0bDsemádi II\x02MF" + + "\x0aG y.MM.dd.\x0eGGGGG y.MM.dd.\x0dR.O.C. előtt\x04éra\x03év\x0belőző é" + + "v\x09ez az év\x0fkövetkező év\x0e{0} év múlva\x13{0} évvel ezelőtt\x09ne" + + "gyedév\x11előző negyedév\x0eez a negyedév\x15következő negyedév\x14{0} n" + + "egyedév múlva\x19{0} negyedévvel ezelőtt\x06hónap\x0eelőző hónap\x0bez a" + + " hónap\x12következő hónap\x11{0} hónap múlva\x16{0} hónappal ezelőtt\x04" + + "hét\x0celőző hét\x09ez a hét\x10következő hét\x0f{0} hét múlva\x14{0} hé" + + "ttel ezelőtt\x08{0} hete\x03nap\x0ctegnapelőtt\x06tegnap\x02ma\x06holnap" + + "\x0bholnapután\x0e{0} nap múlva\x13{0} nappal ezelőtt\x09{0} napja\x0ahé" + + "t napja\x11előző vasárnap\x0eez a vasárnap\x15következő vasárnap\x14{0} " + + "vasárnap múlva\x19{0} vasárnappal ezelőtt\x0felőző hétfő\x0cez a hétfő" + + "\x13következő hétfő\x12{0} hétfő múlva\x17{0} hétfővel ezelőtt\x0celőző " + + "kedd\x09ez a kedd\x10következő kedd\x0f{0} kedd múlva\x13{0} keddel ezel" + + "őtt\x0eelőző szerda\x0bez a szerda\x12következő szerda\x11{0} szerda mú" + + "lva\x17{0} szerdával ezelőtt\x14előző csütörtök\x11ez a csütörtök\x18köv" + + "etkező csütörtök\x17{0} csütörtök múlva\x1c{0} csütörtökkel ezelőtt\x0fe" + + "lőző péntek\x0cez a péntek\x13következő péntek\x12{0} péntek múlva\x17{0" + + "} péntekkel ezelőtt\x0felőző szombat\x0cez a szombat\x13következő szomba" + + "t\x12{0} szombat múlva\x17{0} szombattal ezelőtt\x07napszak\x04óra\x11eb" + + "ben az órában\x0f{0} óra múlva\x15{0} órával ezelőtt\x04perc\x0febben a " + + "percben\x0f{0} perc múlva\x14{0} perccel ezelőtt\x0amásodperc\x04most" + + "\x15{0} másodperc múlva\x1a{0} másodperccel ezelőtt\x09időzóna\x08{0} id" + + "ő\x0f{0} nyári idő\x0d{0} zónaidő\x16Koordinált világidő\x10brit nyári " + + "idő\x0fír nyári idő\x09Acre idő\x0eAcre zónaidő\x10Acre nyári idő\x12afg" + + "anisztáni idő\x1aközép-afrikai téli idő\x18kelet-afrikai téli idő\x17dél" + + "-afrikai téli idő\x18nyugat-afrikai időzóna\x19nyugat-afrikai téli idő" + + "\x1anyugat-afrikai nyári idő\x0dalaszkai idő\x12alaszkai zónaidő\x14alas" + + "zkai nyári idő\x0bAlmati idő\x10Almati zónaidő\x12Almati nyári idő\x0fam" + + "azóniai idő\x15amazóniai téli idő\x16amazóniai nyári idő\x1cközépső álla" + + "mokbeli idő!középső államokbeli zónaidő#középső államokbeli nyári idő" + + "\x18keleti államokbeli idő\x1dkeleti államokbeli zónaidő\x1fkeleti állam" + + "okbeli nyári idő\x10hegyvidéki idő\x15hegyvidéki zónaidő\x17hegyvidéki n" + + "yári idő\x15csendes-óceáni idő\x1acsendes-óceáni zónaidő\x1ccsendes-óceá" + + "ni nyári idő\x0cAnadiri idő\x12Anadíri zónaidő\x14Anadíri nyári idő\x0aa" + + "piai idő\x10apiai téli idő\x11apiai nyári idő\x0bAqtaui idő\x10Aqtaui zó" + + "naidő\x12Aqtaui nyári idő\x0cAqtobei idő\x11Aqtobei zónaidő\x13Aqtobei n" + + "yári idő\x09arab idő\x0farab téli idő\x10arab nyári idő\x10argentínai id" + + "ő\x16argentínai téli idő\x17Argentínai nyári idő\x1cnyugat-argentínai i" + + "dőzóna\x1dnyugat-argentínai téli idő\x1enyugat-argentínai nyári idő\x15ö" + + "rményországi idő\x1börményországi téli idő\x1cörményországi nyári idő" + + "\x15atlanti-óceáni idő\x1aatlanti-óceáni zónaidő\x1catlanti-óceáni nyári" + + " idő\x19közép-ausztráliai idő\x1fközép-ausztráliai téli idő közép-ausztr" + + "áliai nyári idő közép-nyugat-ausztráliai idő&közép-nyugat-ausztráliai t" + + "éli idő'közép-nyugat-ausztráliai nyári idő\x17kelet-ausztráliai idő\x1d" + + "kelet-ausztráliai téli idő\x1ekelet-ausztráliai nyári idő\x18nyugat-ausz" + + "tráliai idő\x1enyugat-ausztráliai téli idő\x1fnyugat-ausztráliai nyári i" + + "dő\x13Azerbajdzsáni idő\x19azerbajdzsáni téli idő\x1aazerbajdzsáni nyári" + + " idő\x0fazori időzóna\x10azori téli idő\x11azori nyári idő\x0fbangladesi" + + " idő\x15bangladesi téli idő\x16bangladesi nyári idő\x0cbutáni idő\x14bol" + + "íviai téli idő\x0fbrazíliai idő\x15brazíliai téli idő\x16brazíliai nyár" + + "i idő\x18Brunei Darussalam-i idő\x1ezöld-foki-szigeteki időzóna\x1fzöld-" + + "foki-szigeteki téli idő zöld-foki-szigeteki nyári idő\x15chamorrói téli " + + "idő\x0dchathami idő\x13chathami téli idő\x14chathami nyári idő\x10chilei" + + " időzóna\x11chilei téli idő\x12chilei nyári idő\x0bkínai idő\x11kínai té" + + "li idő\x12kínai nyári idő\x11csojbalszani idő\x17csojbalszani téli idő" + + "\x18csojbalszani nyári idő\x1dkarácsony-szigeti téli idő\x1ckókusz-szige" + + "teki téli idő\x0ekolumbiai idő\x14kolumbiai téli idő\x15kolumbiai nyári " + + "idő\x13cook-szigeteki idő\x19cook-szigeteki téli idő\x1fcook-szigeteki f" + + "él nyári idő\x0fkubai időzóna\x10kubai téli idő\x11kubai nyári idő\x0bd" + + "avisi idő\x19dumont-d’Urville-i idő\x17kelet-timori téli idő\x1ahúsvét-s" + + "zigeti időzóna\x1bhúsvét-szigeti téli idő\x1chúsvét-szigeti nyári idő" + + "\x13ecuadori téli idő\x1aközép-európai időzóna\x1bközép-európai téli idő" + + "\x1cközép-európai nyári idő\x18kelet-európai időzóna\x19kelet-európai té" + + "li idő\x1akelet-európai nyári idő\x0cminszki idő\x19nyugat-európai időzó" + + "na\x1anyugat-európai téli idő\x1bnyugat-európai nyári idő\x17falkland-sz" + + "igeteki idő\x1dfalkland-szigeteki téli idő\x1efalkland-szigeteki nyári i" + + "dő\x0bfidzsi idő\x11fidzsi téli idő\x12fidzsi nyári idő\x14francia-guian" + + "ai idő\x22francia déli és antarktiszi idő\x16galápagosi téli idő\x0dgamb" + + "ieri idő\x0dgrúziai idő\x13grúziai téli idő\x14grúziai nyári idő\x16gilb" + + "ert-szigeteki idő\x22greenwichi középidő, téli idő\x1akelet-grönlandi id" + + "őzóna\x1bkelet-grönlandi téli idő\x1ckelet-grönlandi nyári idő\x1bnyuga" + + "t-grönlandi időzóna\x1cnyugat-grönlandi téli idő\x1dnyugat-grönlandi nyá" + + "ri idő\x0fGuami zónaidő\x15öbölbeli téli idő\x12guyanai téli idő\x16hawa" + + "ii-aleut időzóna\x18hawaii-aleuti téli idő\x19hawaii-aleuti nyári idő" + + "\x13hongkongi időzóna\x14hongkongi téli idő\x15hongkongi nyári idő\x0aho" + + "vdi idő\x10hovdi téli idő\x11hovdi nyári idő\x11indiai téli idő\x14india" + + "i-óceáni idő\x0findokínai idő\x18közép-indonéziai idő\x16kelet-indonézia" + + "i idő\x1dnyugat-indonéziai téli idő\x0biráni idő\x11iráni téli idő\x12ir" + + "áni nyári idő\x0eirkutszki idő\x14irkutszki téli idő\x15irkutszki nyári" + + " idő\x0cizraeli idő\x12izraeli téli idő\x13izraeli nyári idő\x0bjapán id" + + "ő\x11japán téli idő\x12japán nyári idő\x1ePetropavlovszk-kamcsatkai idő" + + "#Petropavlovszk-kamcsatkai zónaidő%Petropavlovszk-kamcsatkai nyári idő" + + "\x17kelet-kazahsztáni idő\x18nyugat-kazahsztáni idő\x0bkoreai idő\x11kor" + + "eai téli idő\x12koreai nyári idő\x0ckosraei idő\x13krasznojarszki idő" + + "\x19krasznojarszki téli idő\x1akrasznojarszki nyári idő\x13kirgizisztáni" + + " idő\x0bLankai idő\x12sor-szigeteki idő\x16Lord Howe-szigeti idő\x1cLord" + + " Howe-szigeti téli idő\x1dLord Howe-szigeti nyári idő\x0bMacaui idő\x10M" + + "acaui zónaidő\x12Macaui nyári idő\x1cmacquarie-szigeti téli idő\x0emagad" + + "áni idő\x13magadani téli idő\x15magadáni nyári idő\x0emalajziai idő\x16" + + "maldív-szigeteki idő\x18marquises-szigeteki idő\x17marshall-szigeteki id" + + "ő\x14mauritiusi időzóna\x15mauritiusi téli idő\x16mauritiusi nyári idő" + + "\x0cmawsoni idő\x1aészaknyugat-mexikói idő\x1fészaknyugat-mexikói zónaid" + + "ő!északnyugat-mexikói nyári idő\x1emexikói csendes-óceáni idő#mexikói c" + + "sendes-óceáni zónaidő%mexikói csendes-óceáni nyári idő\x11ulánbátori idő" + + "\x17ulánbátori téli idő\x18ulánbátori nyári idő\x0dmoszkvai idő\x13moszk" + + "vai téli idő\x14moszkvai nyári idő\x0dmianmari idő\x0bnaurui idő\x0cnepá" + + "li idő\x14új-kaledóniai idő\x1aúj-kaledóniai téli idő\x1búj-kaledóniai n" + + "yári idő\x11új-zélandi idő\x17új-zélandi téli idő\x18új-zélandi nyári id" + + "ő\x12új-fundlandi idő\x17új-fundlandi zónaidő\x19új-fundlandi nyári idő" + + "\x0aniuei idő\x16norfolk-szigeteki idő\x1aFernando de Noronha-i idő Fern" + + "ando de Noronha-i téli idő!Fernando de Noronha-i nyári idő\x1dÉszak-mari" + + "ana-szigeteki idő\x13novoszibirszki idő\x19novoszibirszki téli idő\x1ano" + + "voszibirszki nyári idő\x0bomszki idő\x11omszki téli idő\x12omszki nyári " + + "idő\x10pakisztáni idő\x16pakisztáni téli idő\x17pakisztáni nyári idő\x0b" + + "palaui idő\x17pápua új-guineai idő\x0eparaguayi idő\x14paraguayi téli id" + + "ő\x15paraguayi nyári idő\x0aperui idő\x10perui téli idő\x11perui nyári " + + "idő\x16fülöp-szigeteki idő\x1cfülöp-szigeteki téli idő\x1dfülöp-szigetek" + + "i nyári idő\x1cphoenix-szigeteki téli idő Saint Pierre és Miquelon-i idő" + + "%Saint Pierre és Miquelon-i zónaidő'Saint Pierre és Miquelon-i nyári idő" + + "\x17pitcairn-szigeteki idő\x13ponape-szigeti idő\x0dphenjani idő\x0fQyzy" + + "lordai idő\x14Qyzylordai zónaidő\x16Qyzylordai nyári idő\x0eréunioni idő" + + "\x0drotherai idő\x0eszahalini idő\x14szahalini téli idő\x15szahalini nyá" + + "ri idő\x0dSzamarai idő\x12Szamarai zónaidő\x14Szamarai nyári idő\x0cszam" + + "oai idő\x12szamoai téli idő\x13szamoai nyári idő\x18seychelle-szigeteki " + + "idő\x16szingapúri téli idő\x16salamon-szigeteki idő\x13déli-georgiai idő" + + "\x0fszurinámi idő\x0bsyowai idő\x0btahiti idő\x0btaipei idő\x11taipei té" + + "li idő\x12taipei nyári idő\x15tádzsikisztáni idő\x0dtokelaui idő\x0btong" + + "ai idő\x11tongai téli idő\x12tongai nyári idő\x0atruki idő\x15türkmenisz" + + "táni idő\x1btürkmenisztáni téli idő\x1ctürkmenisztáni nyári idő\x0ctuval" + + "ui idő\x0duruguayi idő\x13uruguayi téli idő\x14uruguayi nyári idő\x13üzb" + + "egisztáni idő\x19üzbegisztáni téli idő\x1aüzbegisztáni nyári idő\x0dvanu" + + "atui idő\x13vanuatui téli idő\x14vanuatui nyári idő\x0fvenezuelai idő" + + "\x13vlagyivosztoki idő\x19vlagyivosztoki téli idő\x1avlagyivosztoki nyár" + + "i idő\x10volgográdi idő\x16volgográdi téli idő\x17volgográdi nyári idő" + + "\x0dvosztoki idő\x11wake-szigeti idő\x18Wallis és Futuna-i idő\x0ejakuts" + + "zki idő\x14jakutszki téli idő\x15Jakutszki nyári idő\x14Jekatyerinburgi " + + "idő\x1ajekatyerinburgi téli idő\x1bJekatyerinburgi nyári idő\x03lu.\x03m" + + "a.\x03mi.\x03joi\x03vi.\x04sâ.\x03joi\x05marec\x06apríl\x04máj\x04jún" + + "\x04júl\x06august\x09september\x08október\x08november\x08december" + +var bucket49 string = "" + // Size: 19418 bytes + "\x15d MMMM, y թ. G, EEEE\x10dd MMMM, y թ. G\x0fdd MMM, y թ. G\x06հնվ\x06" + + "փտվ\x06մրտ\x06ապր\x06մյս\x06հնս\x06հլս\x06օգս\x06սեպ\x06հոկ\x06նոյ\x06դ" + + "եկ\x02Հ\x02Փ\x02Մ\x02Ա\x02Օ\x02Ս\x02Ն\x02Դ\x10հունվարի\x10փետրվարի\x0aմ" + + "արտի\x0cապրիլի\x0cմայիսի\x0eհունիսի\x0eհուլիսի\x10օգոստոսի\x14սեպտեմբեր" + + "ի\x14հոկտեմբերի\x12նոյեմբերի\x14դեկտեմբերի\x0eհունվար\x0eփետրվար\x08մար" + + "տ\x0aապրիլ\x0aմայիս\x0cհունիս\x0cհուլիս\x0eօգոստոս\x12սեպտեմբեր\x12հոկտ" + + "եմբեր\x10նոյեմբեր\x12դեկտեմբեր\x06կիր\x06երկ\x06երք\x06չրք\x06հնգ\x06ու" + + "ր\x06շբթ\x02Կ\x02Ե\x02Չ\x02Ո\x02Շ\x04կր\x04եկ\x04եք\x04չք\x04հգ\x04ու" + + "\x04շբ\x0cկիրակի\x14երկուշաբթի\x12երեքշաբթի\x14չորեքշաբթի\x12հինգշաբթի" + + "\x0cուրբաթ\x0aշաբաթ\x101-ին եռմս.\x102-րդ եռմս.\x103-րդ եռմս.\x104-րդ եռ" + + "մս.\x171-ին եռամսյակ\x172-րդ եռամսյակ\x173-րդ եռամսյակ\x174-րդ եռամսյակ" + + "\x10կեսգիշեր\x04ԿԱ\x0aկեսօր\x04ԿՀ\x12առավոտյան\x0cցերեկը\x10երեկոյան\x0c" + + "գիշերը\x07կգ․\x02ա\x07կօ․\x02հ\x06առվ\x06ցրկ\x06գշր\x0cառավոտ\x0aցերեկ" + + "\x0aերեկո\x0aգիշեր\x1bՔրիստոսից առաջ,մեր թվարկությունից առաջ\x1bՔրիստոսի" + + "ց հետո\x1dմեր թվարկության\x09մ.թ.ա.\x0fմ․թ․ա․\x06մ.թ.\x12y թ. MMMM d, E" + + "EEE\x0edd MMMM, y թ.\x0ddd MMM, y թ.\x18թվարկություն\x08տարի\x15նախորդ տ" + + "արի\x0fայս տարի\x15հաջորդ տարի\x10{0} տարուց\x15{0} տարի առաջ\x02տ\x0f{" + + "0} տ առաջ\x07+{0} տ\x07-{0} տ\x10եռամսյակ\x1dնախորդ եռամսյակ\x17այս եռամ" + + "սյակ\x1dհաջորդ եռամսյակ\x18{0} եռամսյակից\x1d{0} եռամսյակ առաջ\x08եռմս" + + "\x11{0} եռմս-ից\x15{0} եռմս առաջ\x0d+{0} եռմս\x0d-{0} եռմս\x08ամիս\x15նա" + + "խորդ ամիս\x0fայս ամիս\x15հաջորդ ամիս\x0e{0} ամսից\x15{0} ամիս առաջ\x06ա" + + "մս\x15անցյալ ամիս\x07+{0} ա\x07-{0} ա\x17նախորդ շաբաթ\x11այս շաբաթ\x17հ" + + "աջորդ շաբաթ\x12{0} շաբաթից\x17{0} շաբաթ առաջ\x17{0}-ի շաբաթում\x06շաբ" + + "\x0f{0} շաբ-ից\x13{0} շաբ առաջ\x14{0}-ի շաբ-ում\x11{0} շաբ անց\x04օր\x1f" + + "երեկ չէ առաջի օրը\x08երեկ\x0aայսօր\x08վաղը\x1fվաղը չէ մյուս օրը\x0c{0} " + + "օրից\x11{0} օր առաջ\x13շաբաթվա օր\x19նախորդ կիրակի\x13այս կիրակի\x19հաջ" + + "որդ կիրակի\x19{0} կիրակի հետո\x19{0} կիրակի առաջ\x0fնխրդ կիր\x0dայս կիր" + + "\x0fհջրդ կիր\x13{0} կիր հետո\x13{0} կիր առաջ\x0b+{0} կիր\x0b-{0} կիր!նախ" + + "որդ երկուշաբթի\x1bայս երկուշաբթի!հաջորդ երկուշաբթի!{0} երկուշաբթի հետո!" + + "{0} երկուշաբթի առաջ\x0fնխրդ երկ\x0dայս երկ\x0fհջրդ երկ\x13{0} երկ հետո" + + "\x13{0} երկ առաջ\x0b+{0} երկ\x0b-{0} երկ\x1fնախորդ երեքշաբթի\x19այս երեք" + + "շաբթի\x1fհաջորդ երեքշաբթի\x1f{0} երեքշաբթի հետո\x1f{0} երեքշաբթի առաջ" + + "\x0fնխրդ երք\x0dայս երք\x0fհջրդ երք\x13{0} երք հետո\x13{0} երք առաջ\x0b+" + + "{0} երք\x0b-{0} երք!նախորդ չորեքշաբթի\x1bայս չորեքշաբթի!հաջորդ չորեքշաբթ" + + "ի!{0} չորեքշաբթի հետո!{0} չորեքշաբթի առաջ\x0fնխրդ չրք\x0dայս չրք\x0fհջր" + + "դ չրք\x13{0} չրք հետո\x13{0} չրք առաջ\x0b+{0} չրք\x0b-{0} չրք\x1fնախորդ" + + " հինգշաբթի\x19այս հինգշաբթի\x1fհաջորդ հինգշաբթի\x1f{0} հինգշաբթի հետո" + + "\x1f{0} հինգշաբթի առաջ\x0fնխրդ հնգ\x0dայս հնգ\x0fհջրդ հնգ\x13{0} հնգ հետ" + + "ո\x13{0} հնգ առաջ\x0b+{0} հնգ\x0b-{0} հնգ\x19նախորդ ուրբաթ\x13այս ուրբա" + + "թ\x19հաջորդ ուրբաթ\x19{0} ուրբաթ հետո\x19{0} ուրբաթ առաջ\x11նխրդ ուրբ" + + "\x0fայս ուրբ\x11հջրդ ուրբ\x15{0} ուրբ հետո\x15{0} ուրբ առաջ\x1eնախորդ շա" + + "բաթ օրը\x18այս շաբաթ օրը\x1eհաջորդ շաբաթ օրը\x1c{0} շաբաթ օր հետո\x1c{0" + + "} շաբաթ օր առաջ\x0fնխրդ շբթ\x0dայս շբթ\x0fհջրդ շբթ\x13{0} շբթ հետո\x13{0" + + "} շբթ առաջ\x09+{0} շբ\x09-{0} շբ\x09ԿԱ/ԿՀ\x06ժամ\x11այս ժամին\x0e{0} ժամ" + + "ից\x13{0} ժամ առաջ\x02ժ\x0b{0} ժ-ից\x0f{0} ժ առաջ\x08րոպե\x13այս րոպեին" + + "\x10{0} րոպեից\x15{0} րոպե առաջ\x02ր\x0b{0} ր-ից\x0f{0} ր առաջ\x10վայրկյ" + + "ան\x08այժմ\x18{0} վայրկյանից\x1d{0} վայրկյան առաջ\x02վ\x0f{0} վրկ-ից" + + "\x13{0} վրկ առաջ\x0b{0} վ-ից\x0f{0} վ առաջ\x17ժամային գոտիBՀամաշխարհային" + + " կոորդինացված ժամանակ4Բրիտանական ամառային ժամանակ4Իռլանդական ստանդարտ ժա" + + "մանակ#Աֆղանստանի ժամանակ6Կենտրոնական Աֆրիկայի ժամանակ0Արևելյան Աֆրիկայի" + + " ժամանակ2Հարավային Աֆրիկայի ժամանակ0Արևմտյան Աֆրիկայի ժամանակAԱրևմտյան Ա" + + "ֆրիկայի ստանդարտ ժամանակAԱրևմտյան Աֆրիկայի ամառային ժամանակ!Ալյասկայի ժ" + + "ամանակ2Ալյասկայի ստանդարտ ժամանակ2Ալյասկայի ամառային ժամանակ!Ամազոնյան " + + "ժամանակ2Ամազոնյան ստանդարտ ժամանակ2Ամազոնյան ամառային ժամանակ8Կենտրոնակ" + + "ան Ամերիկայի ժամանակIԿենտրոնական Ամերիկայի ստանդարտ ժամանակIԿենտրոնական" + + " Ամերիկայի ամառային ժամանակ2Արևելյան Ամերիկայի ժամանակCԱրևելյան Ամերիկայ" + + "ի ստանդարտ ժամանակCԱրևելյան Ամերիկայի ամառային ժամանակ(Լեռնային ժամանակ" + + " (ԱՄՆ)9Լեռնային ստանդարտ ժամանակ (ԱՄՆ)9Լեռնային ամառային ժամանակ (ԱՄՆ)/Խ" + + "աղաղօվկիանոսյան ժամանակ@Խաղաղօվկիանոսյան ստանդարտ ժամանակ@Խաղաղօվկիանոս" + + "յան ամառային ժամանակ\x1bԱպիայի ժամանակ,Ապիայի ստանդարտ ժամանակ,Ապիայի ա" + + "մառային ժամանակ0Սաուդյան Արաբիայի ժամանակAՍաուդյան Արաբիայի ստանդարտ ժա" + + "մանակAՍաուդյան Արաբիայի ամառային ժամանակ%Արգենտինայի ժամանակ6Արգենտինայ" + + "ի ստնադարտ ժամանակ6Արգենտինայի ամառային ժամանակ6Արևմտյան Արգենտինայի ժա" + + "մանակGԱրևմտյան Արգենտինայի ստնադարտ ժամանակGԱրևմտյան Արգենտինայի ամառայ" + + "ին ժամանակ!Հայաստանի ժամանակ2Հայաստանի ստանդարտ ժամանակ2Հայաստանի ամառա" + + "յին ժամանակ!Ատլանտյան ժամանակ2Ատլանտյան ստանդարտ ժամանակ2Ատլանտյան ամառ" + + "ային ժամանակ<Կենտրոնական Ավստրալիայի ժամանակMԿենտրոնական Ավստրալիայի ստ" + + "անդարտ ժամանակMԿենտրոնական Ավստրալիայի ամառային ժամանակMԿենտրոնական Ավս" + + "տրալիայի արևմտյան ժամանակ^Կենտրոնական Ավստրալիայի արևմտյան ստանդարտ ժամ" + + "անակ^Կենտրոնական Ավստրալիայի արևմտյան ամառային ժամանակ6Արևելյան Ավստրալ" + + "իայի ժամանակGԱրևելյան Ավստրալիայի ստանդարտ ժամանակGԱրևելյան Ավստրալիայի" + + " ամառային ժամանակ6Արևմտյան Ավստրալիայի ժամանակGԱրևմտյան Ավստրալիայի ստան" + + "դարտ ժամանակGԱրևմտյան Ավստրալիայի ամառային ժամանակ!Ադրբեջանի ժամանակ2Ադ" + + "րբեջանի ստանդարտ ժամանակ2Ադրբեջանի ամառային ժամանակ.Ազորյան կղզիների ժա" + + "մանակ?Ազորյան կղզիների ստանդարտ ժամանակ?Ազորյան կղզիների ամառային ժաման" + + "ակ#Բանգլադեշի ժամանակ4Բանգլադեշի ստանդարտ ժամանակ4Բանգլադեշի ամառային ժ" + + "ամանակ\x1dԲութանի ժամանակ!Բոլիվիայի ժամանակ#Բրազիլիայի ժամանակ4Բրազիլիա" + + "յի ստանդարտ ժամանակ4Բրազիլիայի ամառային ժամանակ\x1fԲրունեյի ժամանակ$Կաբ" + + "ո Վերդեի ժամանակ5Կաբո Վերդեի ստանդարտ ժամանակ5Կաբո Վերդեի ամառային ժամա" + + "նակ\x1fՉամոռոյի ժամանակ$Չաթեմ կղզու ժամանակ5Չաթեմ կղզու ստանդարտ ժամանա" + + "կ5Չաթեմ կղզու ամառային ժամանակ\x19Չիլիի ժամանակ*Չիլիի ստանդարտ ժամանակ*" + + "Չիլիի ամառային ժամանակ!Չինաստանի ժամանակ2Չինաստանի ստանդարտ ժամանակ2Չին" + + "աստանի ամառային ժամանակ#Չոյբալսանի ժամանակ4Չոյբալսանի ստանդարտ ժամանակ4" + + "Չոյբալսանի ամառային ժամանակ3Սուրբ Ծննդյան կղզու ժամանակ0Կոկոսյան կղզինե" + + "րի ժամանակ%Կոլումբիայի ժամանակ6Կոլումբիայի ստանդարտ ժամանակ6Կոլումբիայի" + + " ամառային ժամանակ*Կուկի կղզիների ժամանակ;Կուկի կղզիների ստանդարտ ժամանակ" + + "CԿուկի կղզիների կիսաամառային ժամանակ\x1dԿուբայի ժամանակ.Կուբայի ստանդարտ" + + " ժամանակ.Կուբայի ամառային ժամանակ\x1dԴեյվիսի ժամանակ3Դյումոն դ’Յուրվիլի " + + "ժամանակ,Արևելյան Թիմորի ժամանակ$Զատկի կղզու ժամանակ5Զատկի կղզու ստանդար" + + "տ ժամանակ5Զատկի կղզու ամառային ժամանակ\x1fԷկվադորի ժամանակ6Կենտրոնական " + + "Եվրոպայի ժամանակGԿենտրոնական Եվրոպայի ստանդարտ ժամանակGԿենտրոնական Եվրո" + + "պայի ամառային ժամանակ0Արևելյան Եվրոպայի ժամանակAԱրևելյան Եվրոպայի ստանդ" + + "արտ ժամանակAԱրևելյան Եվրոպայի ամառային ժամանակ\x1bՄինսկի ժամանակ0Արևմտյ" + + "ան Եվրոպայի ժամանակAԱրևմտյան Եվրոպայի ստանդարտ ժամանակAԱրևմտյան Եվրոպայ" + + "ի ամառային ժամանակ6Ֆոլքլենդյան կղզիների ժամանակGՖոլքլենդյան կղզիների ստ" + + "անդարտ ժամանակGՖոլքլենդյան կղզիների ամառային ժամանակ\x19Ֆիջիի ժամանակ*Ֆ" + + "իջիի ստանդարտ ժամանակ*Ֆիջիի ամառային ժամանակ4Ֆրանսիական Գվիանայի ժամանա" + + "կRՖրանսիական հարավային և անտարկտիդյան ժամանակ8Գալապագոսյան կղզիների ժամ" + + "անակ,Գամբյե կղզիների ժամանակ\x1fՎրաստանի ժամանակ0Վրաստանի ստանդարտ ժամա" + + "նակ0Վրաստանի ամառային ժամանակ0Ջիլբերթի կղզիների ժամանակ\x1fԳրինվիչի ժամ" + + "անակ8Արևելյան Գրենլանդիայի ժամանակIԱրևելյան Գրենլանդիայի ստանդարտ ժաման" + + "ակIԱրևելյան Գրենլանդիայի ամառային ժամանակ8Արևմտյան Գրենլանդիայի ժամանակ" + + "IԱրևմտյան Գրենլանդիայի ստանդարտ ժամանակIԱրևմտյան Գրենլանդիայի ամառային ժ" + + "ամանակ5Պարսից ծոցի ստանդարտ ժամանակ\x1fԳայանայի ժամանակ0Հավայան-ալեությ" + + "ան ժամանակAՀավայան-ալեության ստանդարտ ժամանակAՀավայան-ալեության ամառայի" + + "ն ժամանակ\x1fՀոնկոնգի ժամանակ0Հոնկոնգի ստանդարտ ժամանակ0Հոնկոնգի ամառայ" + + "ին ժամանակ\x19Հովդի ժամանակ*Հովդի ստանդարտ ժամանակ*Հովդի ամառային ժաման" + + "ակ4Հնդկաստանի ստանդարտ ժամանակ2Հնդկական օվկիանոսի ժամանակ'Հնդկաչինական " + + "ժամանակ<Կենտրոնական Ինդոնեզիայի ժամանակ6Արևելյան Ինդոնեզիայի ժամանակ6Ար" + + "ևմտյան Ինդոնեզիայի ժամանակ\x19Իրանի ժամանակ*Իրանի ստանդարտ ժամանակ*Իրան" + + "ի ամառային ժամանակ!Իրկուտսկի ժամանակ2Իրկուտսկի ստանդարտ ժամանակ2Իրկուտս" + + "կի ամառային ժամանակ\x1fԻսրայելի ժամանակ0Իսրայելի ստանդարտ ժամանակ0Իսրայ" + + "ելի ամառային ժամանակ!Ճապոնիայի ժամանակ2Ճապոնիայի ստանդարտ ժամանակ2Ճապոն" + + "իայի ամառային ժամանակ4Արևելյան Ղազախստանի ժամանակ4Արևմտյան Ղազախստանի ժ" + + "ամանակ\x1dԿորեայի ժամանակ.Կորեայի ստանդարտ ժամանակ.Կորեայի ամառային ժամ" + + "անակ\x1fԿոսրաեյի ժամանակ'Կրասնոյարսկի ժամանակ8Կրասնոյարսկի ստանդարտ ժամ" + + "անակ8Կրասնոյարսկի ամառային ժամանակ!Ղրղզստանի ժամանակ(Լայն կղզիների ժամա" + + "նակ\x22Լորդ Հաուի ժամանակ3Լորդ Հաուի ստանդարտ ժամանակ3Լորդ Հաուի ամառայ" + + "ին ժամանակ,Մակկուորի կղզու ժամանակ\x1fՄագադանի ժամանակ0Մագադանի ստանդար" + + "տ ժամանակ0Մագադանի ամառային ժամանակ#Մալայզիայի ժամանակ#Մալդիվների ժաման" + + "ակ2Մարկիզյան կղզիների ժամանակ2Մարշալյան կղզիների ժամանակ#Մավրիկիոսի ժամ" + + "անակ4Մավրիկիոսի ստանդարտ ժամանակ4Մավրիկիոսի ամառային ժամանակ\x1fՄոուսոն" + + "ի ժամանակ@Հյուսիսարևմտյան Մեքսիկայի ժամանակQՀյուսիսարևմտյան Մեքսիկայի ս" + + "տանդարտ ժամանակQՀյուսիսարևմտյան Մեքսիկայի ամառային ժամանակBՄեքսիկայի խա" + + "ղաղօվկիանոսյան ժամանակSՄեքսիկայի խաղաղօվկիանոսյան ստանդարտ ժամանակSՄեքս" + + "իկայի խաղաղօվկիանոսյան ամառային ժամանակ&Ուլան Բատորի ժամանակ7Ուլան Բատո" + + "րի ստանդարտ ժամանակ7Ուլան Բատորի ամառային ժամանակ\x1fՄոսկվայի ժամանակ0Մ" + + "ոսկվայի ստանդարտ ժամանակ0Մոսկվայի ամառային ժամանակ\x1fՄյանմայի ժամանակ" + + "\x1fՆաուրուի ժամանակ\x1bՆեպալի ժամանակ,Նոր Կալեդոնիայի ժամանակ=Նոր Կալեդ" + + "ոնիայի ստանդարտ ժամանակ=Նոր Կալեդոնիայի ամառային ժամանակ*Նոր Զելանդիայի" + + " ժամանակ;Նոր Զելանդիայի ստանդարտ ժամանակ;Նոր Զելանդիայի ամառային ժամանակ" + + "-Նյուֆաունդլենդի ժամանակ>Նյուֆաունդլենդի ստանդարտ ժամանակ>Նյուֆաունդլենդ" + + "ի ամառային ժամանակ\x1dՆիուեյի ժամանակ(Նորֆոլկ կղզու ժամանակ9Ֆերնանդու դ" + + "ի Նորոնյայի ժամանակJՖերնանդու դի Նորոնյայի ստանդարտ ժամանակJՖերնանդու դ" + + "ի Նորոնյայի ամառային ժամանակ'Նովոսիբիրսկի ժամանակ8Նովոսիբիրսկի ստանդարտ" + + " ժամանակ8Նովոսիբիրսկի ամառային ժամանակ\x19Օմսկի ժամանակ*Օմսկի ստանդարտ ժ" + + "ամանակ*Օմսկի ամառային ժամանակ!Պակիստանի ժամանակ2Պակիստանի ստանդարտ ժամա" + + "նակ2Պակիստանի ամառային ժամանակ\x1fՊալաույի ժամանակ3Պապուա Նոր Գվինեայի " + + "ժամանակ!Պարագվայի ժամանակ2Պարագվայի ստանդարտ ժամանակ2Պարագվայի ամառային" + + " ժամանակ\x1bՊերուի ժամանակ,Պերուի ստանդարտ ժամանակ,Պերուի ամառային ժաման" + + "ակ%Ֆիլիպինների ժամանակ6Ֆիլիպինների ստանդարտ ժամանակ6Ֆիլիպինների ամառայի" + + "ն ժամանակ,Ֆինիքս կղզիների ժամանակ2Սեն Պիեռ և Միքելոնի ժամանակCՍեն Պիեռ " + + "և Միքելոնի ստանդարտ ժամանակCՍեն Պիեռ և Միքելոնի ամառային ժամանակ\x1fՊիտ" + + "կեռնի ժամանակ&Պոնապե կղզու ժամանակ\x1fՓխենյանի ժամանակ#Ռեյունիոնի ժաման" + + "ակ\x1fՌոտերայի ժամանակ\x1fՍախալինի ժամանակ0Սախալինի ստանդարտ ժամանակ0Սա" + + "խալինի ամառային ժամանակ\x1dՍամոայի ժամանակ.Սամոայի ստանդարտ ժամանակ.Սամ" + + "ոայի ամառային ժամանակ2Սեյշելյան կղզիների ժամանակ#Սինգապուրի ժամանակ0Սող" + + "ոմոնի կղզիների ժամանակ2Հարավային Ջորջիայի ժամանակ!Սուրինամի ժամանակ\x1d" + + "Սյովայի ժամանակ\x1bԹաիթիի ժամանակ\x1dԹայպեյի ժամանակ.Թայպեյի ստանդարտ ժ" + + "ամանակ.Թայպեյի ամառային ժամանակ#Տաջիկստանի ժամանակ#Տոկելաույի ժամանակ" + + "\x1dՏոնգայի ժամանակ.Տոնգայի ստանդարտ ժամանակ.Տոնգայի ամառային ժամանակ" + + "\x1bՏրուկի ժամանակ)Թուրքմենստանի ժամանակ:Թուրքմենստանի ստանդարտ ժամանակ:" + + "Թուրքմենստանի ամառային ժամանակ#Տուվալույի ժամանակ#Ուրուգվայի ժամանակ4Ու" + + "րուգվայի ստանդարտ ժամանակ4Ուրուգվայի ամառային ժամանակ%Ուզբեկստանի ժաման" + + "ակ6Ուզբեկստանի ստանդարտ ժամանակ6Ուզբեկստանի ամառային ժամանակ%Վանուատույ" + + "ի ժամանակ6Վանուատույի ստանդարտ ժամանակ6Վանուատույի ամառային ժամանակ'Վեն" + + "եսուելայի ժամանակ'Վլադիվոստոկի ժամանակ8Վլադիվոստոկի ստանդարտ ժամանակ8Վլ" + + "ադիվոստոկի ամառային ժամանակ#Վոլգոգրադի ժամանակ4Վոլգոգրադի ստանդարտ ժամա" + + "նակ4Վոլգոգրադի ամառային ժամանակ\x1dՎոստոկի ժամանակ$Ուեյք կղզու ժամանակ3" + + "Ուոլիս և Ֆուտունայի ժամանակ!Յակուտսկի ժամանակ2Յակուտսկի ստանդարտ ժամանա" + + "կ2Յակուտսկի ամառային ժամանակ+Եկատերինբուրգի ժամանակ<Եկատերինբուրգի ստան" + + "դարտ ժամանակ<Եկատերինբուրգի ամառային ժամանակ" + +var bucket50 string = "" + // Size: 11470 bytes + "\x10mulai musim semi\x09air hujan\x0fserangga bangun\x13ekuinoks musim s" + + "emi\x0dhujan butiran\x11mulai musim panas\x11mulai musim gugur\x0bakhir " + + "panas\x09white dew\x14ekuinoks musim gugur\x0cembun dingin\x10embun beku" + + " turun\x12mulai musim dingin\x11mulai turun salju\x0fEEEE, U MMMM dd\x08" + + "U MMMM d\x07U MMM d\x05y-M-d\x0bembun putih\x03Min\x03Sen\x03Sel\x03Rab" + + "\x03Kam\x03Jum\x03Sab\x06Minggu\x05Senin\x06Selasa\x04Rabu\x05Kamis\x05J" + + "umat\x05Sabtu\x0cKuartal ke-1\x0cKuartal ke-2\x0cKuartal ke-3\x0cKuartal" + + " ke-4\x0ctengah malam\x0btengah hari\x04pagi\x05siang\x04sore\x05malam" + + "\x0eSebelum Masehi\x10Sebelum Era Umum\x06Masehi\x08Era Umum\x02SM\x03SE" + + "U\x01M\x02EU\x0eSebelum R.O.C.\x06R.O.C.\x05Tahun\x0atahun lalu\x09tahun" + + " ini\x0btahun depan\x0fDalam {0} tahun\x13{0} tahun yang lalu\x04thn." + + "\x0bdlm {0} thn\x0c{0} thn lalu\x08+{0} thn\x08-{0} thn\x07Kuartal\x0cKu" + + "artal lalu\x0bKuartal ini\x12Kuartal berikutnya\x11dalam {0} kuartal\x15" + + "{0} kuartal yang lalu\x05krtl.\x0ddlm {0} krtl.\x0e{0} krtl. lalu\x0a+{0" + + "} krtl.\x0a-{0} krtl.\x05Bulan\x0abulan lalu\x09bulan ini\x10Bulan berik" + + "utnya\x0fDalam {0} bulan\x13{0} bulan yang lalu\x04bln.\x0bdlm {0} bln" + + "\x0c{0} bln lalu\x09+{0} bln.\x09-{0} bln.\x0bminggu lalu\x0aminggu ini" + + "\x0cminggu depan\x10Dalam {0} minggu\x14{0} minggu yang lalu\x0dminggu k" + + "e-{0}\x04mgg.\x0bdlm {0} mgg\x0c{0} mgg lalu\x0amgg ke-{0}\x09+{0} mgg." + + "\x09-{0} mgg.\x07mgg {0}\x04Hari\x0ckemarin dulu\x07kemarin\x08hari ini" + + "\x05besok\x04lusa\x0eDalam {0} hari\x12{0} hari yang lalu\x0bdalam {0} h" + + "\x0a{0} h lalu\x13Hari dalam Seminggu\x10hari Minggu lalu\x0fhari Minggu" + + " ini\x16hari Minggu berikutnya\x15dalam {0} hari Minggu\x19{0} hari Ming" + + "gu yang lalu\x09Min. lalu\x08Min. ini\x0fMin. berikutnya\x0cdlm {0} Min." + + "\x0d{0} Min. lalu\x09+{0} Min.\x09-{0} Min.\x0aSenin lalu\x09Senin ini" + + "\x10Senin berikutnya\x0fdalam {0} Senin\x0e{0} Senin lalu\x09Sen. lalu" + + "\x08Sen. ini\x0fSen. berikutnya\x0cdlm {0} Sen.\x0d{0} Sen. lalu\x09+{0}" + + " Sen.\x09-{0} Sen.\x0bSelasa lalu\x0aSelasa ini\x11Selasa berikutnya\x10" + + "dalam {0} Selasa\x0f{0} Selasa lalu\x09Sel. lalu\x08Sel. ini\x0fSel. ber" + + "ikutnya\x0cdlm {0} Sel.\x0d{0} Sel. lalu\x09+{0} Sel.\x09-{0} Sel.\x09Ra" + + "bu lalu\x08Rabu ini\x0fRabu berikutnya\x0edalam {0} Rabu\x0d{0} Rabu lal" + + "u\x09Rab. lalu\x08Rab. ini\x0fRab. berikutnya\x0cdlm {0} Rab.\x0d{0} Rab" + + ". lalu\x09+{0} Rab.\x09-{0} Rab.\x0aKamis lalu\x09Kamis ini\x10Kamis ber" + + "ikutnya\x0fdalam {0} Kamis\x0e{0} Kamis lalu\x09Kam. lalu\x08Kam. ini" + + "\x0fKam. berikutnya\x0cdlm {0} Kam.\x0d{0} Kam. lalu\x09+{0} Kam.\x09-{0" + + "} Kam.\x0aJumat lalu\x09Jumat ini\x10Jumat berikutnya\x0fdalam {0} Jumat" + + "\x0e{0} Jumat lalu\x09Jum. lalu\x08Jum. ini\x0fJum. berikutnya\x0cdlm {0" + + "} Jum.\x0d{0} Jum. lalu\x09+{0} Jum.\x09-{0} Jum.\x0aSabtu lalu\x09Sabtu" + + " ini\x10Sabtu berikutnya\x0fdalam {0} Sabtu\x0e{0} Sabtu lalu\x09Sab. la" + + "lu\x08Sab. ini\x0fSab. berikutnya\x0cdlm {0} Sab.\x0d{0} Sab. lalu\x09+{" + + "0} Sab.\x09-{0} Sab.\x03Jam\x07jam ini\x0dDalam {0} jam\x11{0} jam yang " + + "lalu\x03jam\x0c{0} jam lalu\x08+{0} jam\x08-{0} jam\x05Menit\x09menit in" + + "i\x0fDalam {0} menit\x13{0} menit yang lalu\x04mnt.\x0bdlm {0} mnt\x0c{0" + + "} mnt lalu\x08+{0} mnt\x08-{0} mnt\x05Detik\x08sekarang\x0fDalam {0} det" + + "ik\x13{0} detik yang lalu\x04dtk.\x0bdlm {0} dtk\x0c{0} dtk lalu\x08+{0}" + + " dtk\x08-{0} dtk\x0aZona Waktu\x09Waktu {0}\x15Waktu Musim Panas {0}\x11" + + "Waktu Standar {0}\x1dWaktu Universal Terkoordinasi\x19Waktu Musim Panas " + + "Inggris\x16Waktu Standar Irlandia\x0aWaktu Acre\x12Waktu Standar Acre" + + "\x16Waktu Musim Panas Acre\x10Waktu Afganistan\x13Waktu Afrika Tengah" + + "\x12Waktu Afrika Timur\x1cWaktu Standar Afrika Selatan\x12Waktu Afrika B" + + "arat\x1aWaktu Standar Afrika Barat\x1eWaktu Musim Panas Afrika Barat\x0c" + + "Waktu Alaska\x14Waktu Standar Alaska\x18Waktu Musim Panas Alaska\x0cWakt" + + "u Almaty\x14Waktu Standar Almaty\x18Waktu Musim Panas Almaty\x0cWaktu Am" + + "azon\x14Waktu Standar Amazon\x18Waktu Musim Panas Amazon\x0cWaktu Tengah" + + "\x14Waktu Standar Tengah\x18Waktu Musim Panas Tengah\x0bWaktu Timur\x13W" + + "aktu Standar Timur\x17Waktu Musim Panas Timur\x10Waktu Pegunungan\x18Wak" + + "tu Standar Pegunungan\x1cWaktu Musim Panas Pegunungan\x0dWaktu Pasifik" + + "\x15Waktu Standar Pasifik\x19Waktu Musim Panas Pasifik\x0cWaktu Anadyr" + + "\x14Waktu Standar Anadyr\x18Waktu Musim Panas Anadyr\x0aWaktu Apia\x12Wa" + + "ktu Standar Apia\x16Waktu Musim Panas Apia\x0bWaktu Aqtau\x13Waktu Stand" + + "ar Aqtau\x17Waktu Musim Panas Aqtau\x0cWaktu Aqtobe\x14Waktu Standar Aqt" + + "obe\x18Waktu Musim Panas Aqtobe\x0aWaktu Arab\x12Waktu Standar Arab\x16W" + + "aktu Musim Panas Arab\x0fWaktu Argentina\x17Waktu Standar Argentina\x1bW" + + "aktu Musim Panas Argentina\x1cWaktu Argentina Bagian Barat$Waktu Standar" + + " Argentina Bagian Barat(Waktu Musim Panas Argentina Bagian Barat\x0dWakt" + + "u Armenia\x15Waktu Standar Armenia\x19Waktu Musim Panas Armenia\x0eWaktu" + + " Atlantik\x16Waktu Standar Atlantik\x1aWaktu Musim Panas Atlantik\x16Wak" + + "tu Tengah Australia\x1eWaktu Standar Tengah Australia\x22Waktu Musim Pan" + + "as Tengah Australia\x1cWaktu Barat Tengah Australia$Waktu Standar Barat " + + "Tengah Australia(Waktu Musim Panas Barat Tengah Australia\x15Waktu Timur" + + " Australia\x1dWaktu Standar Timur Australia!Waktu Musim Panas Timur Aust" + + "ralia\x15Waktu Barat Australia\x1dWaktu Standar Barat Australia!Waktu Mu" + + "sim Panas Barat Australia\x10Waktu Azerbaijan\x18Waktu Standar Azerbaija" + + "n\x1cWaktu Musim Panas Azerbaijan\x0cWaktu Azores\x14Waktu Standar Azore" + + "s\x18Waktu Musim Panas Azores\x10Waktu Bangladesh\x18Waktu Standar Bangl" + + "adesh\x1cWaktu Musim Panas Bangladesh\x0cWaktu Bhutan\x0dWaktu Bolivia" + + "\x0cWaktu Brasil\x14Waktu Standar Brasil\x18Waktu Musim Panas Brasil\x17" + + "Waktu Brunei Darussalam\x13Waktu Tanjung Verde\x1bWaktu Standar Tanjung " + + "Verde\x1fWaktu Musim Panas Tanjung Verde\x0bWaktu Casey\x16Waktu Standar" + + " Chamorro\x0dWaktu Chatham\x15Waktu Standar Chatham\x19Waktu Musim Panas" + + " Chatham\x0aWaktu Cile\x12Waktu Standar Cile\x16Waktu Musim Panas Cile" + + "\x0eWaktu Tiongkok\x16Waktu Standar Tiongkok\x1aWaktu Musim Panas Tiongk" + + "ok\x10Waktu Choibalsan\x18Waktu Standar Choibalsan\x1cWaktu Musim Panas " + + "Choibalsan\x11Waktu Pulau Natal\x15Waktu Kepulauan Cocos\x0eWaktu Kolomb" + + "ia\x16Waktu Standar Kolombia\x1aWaktu Musim Panas Kolombia\x0fWaktu Kep." + + " Cook\x17Waktu Standar Kep. Cook\x22Waktu Tengah Musim Panas Kep. Cook" + + "\x0aWaktu Kuba\x12Waktu Standar Kuba\x16Waktu Musim Panas Kuba\x0bWaktu " + + "Davis\x18Waktu Dumont-d’Urville\x11Waktu Timor Leste\x12Waktu Pulau Pask" + + "ah\x1aWaktu Standar Pulau Paskah\x1eWaktu Musim Panas Pulau Paskah\x0dWa" + + "ktu Ekuador\x12Waktu Eropa Tengah\x1aWaktu Standar Eropa Tengah\x1eWaktu" + + " Musim Panas Eropa Tengah\x11Waktu Eropa Timur\x19Waktu Standar Eropa Ti" + + "mur\x1dWaktu Musim Panas Eropa Timur\x16Waktu Eropa Timur Jauh\x11Waktu " + + "Eropa Barat\x19Waktu Standar Eropa Barat\x1dWaktu Musim Panas Eropa Bara" + + "t\x18Waktu Kepulauan Falkland Waktu Standar Kepulauan Falkland$Waktu Mus" + + "im Panas Kepulauan Falkland\x0aWaktu Fiji\x12Waktu Standar Fiji\x16Waktu" + + " Musim Panas Fiji\x14Waktu Guyana Prancis,Waktu Wilayah Selatan dan Anta" + + "rktika Prancis\x0fWaktu Galapagos\x0dWaktu Gambier\x0dWaktu Georgia\x15W" + + "aktu Standar Georgia\x19Waktu Musim Panas Georgia\x12Waktu Kep. Gilbert" + + "\x13Greenwich Mean Time\x15Waktu Greenland Timur\x1dWaktu Standar Greenl" + + "and Timur!Waktu Musim Panas Greenland Timur\x15Waktu Greenland Barat\x1d" + + "Waktu Standar Greenland Barat!Waktu Musim Panas Greenland Barat\x0aWaktu" + + " Guam\x13Waktu Standar Teluk\x0cWaktu Guyana\x15Waktu Hawaii-Aleutian" + + "\x1dWaktu Standar Hawaii-Aleutian!Waktu Musim Panas Hawaii-Aleutian\x0fW" + + "aktu Hong Kong\x17Waktu Standar Hong Kong\x1bWaktu Musim Panas Hong Kong" + + "\x0aWaktu Hovd\x12Waktu Standar Hovd\x16Waktu Musim Panas Hovd\x0bWaktu " + + "India\x15Waktu Samudera Hindia\x0fWaktu Indochina\x16Waktu Indonesia Ten" + + "gah\x04WITA\x15Waktu Indonesia Timur\x03WIT\x15Waktu Indonesia Barat\x03" + + "WIB\x0aWaktu Iran\x12Waktu Standar Iran\x16Waktu Musim Panas Iran\x0dWak" + + "tu Irkutsk\x15Waktu Standar Irkutsk\x19Waktu Musim Panas Irkutsk\x0cWakt" + + "u Israel\x14Waktu Standar Israel\x18Waktu Musim Panas Israel\x0cWaktu Je" + + "pang\x14Waktu Standar Jepang\x18Waktu Musim Panas Jepang\x1eWaktu Petrop" + + "avlovsk-Kamchatsky&Waktu Standar Petropavlovsk-Kamchatsky*Waktu Musim Pa" + + "nas Petropavlovsk-Kamchatski\x16Waktu Kazakhstan Timur\x16Waktu Kazakhst" + + "an Barat\x0bWaktu Korea\x13Waktu Standar Korea\x17Waktu Musim Panas Kore" + + "a\x0cWaktu Kosrae\x11Waktu Krasnoyarsk\x19Waktu Standar Krasnoyarsk\x1dW" + + "aktu Musim Panas Krasnoyarsk\x0fWaktu Kirghizia\x0bWaktu Lanka\x0fWaktu " + + "Kep. Line\x0fWaktu Lord Howe\x17Waktu Standar Lord Howe\x1bWaktu Musim P" + + "anas Lord Howe\x0bWaktu Makau\x13Waktu Standar Makau\x17Waktu Musim Pana" + + "s Makau\x19Waktu Kepulauan Macquarie\x0dWaktu Magadan\x15Waktu Standar M" + + "agadan\x19Waktu Musim Panas Magadan\x0eWaktu Malaysia\x0eWaktu Maladewa" + + "\x0fWaktu Marquesas\x13Waktu Kep. Marshall\x0fWaktu Mauritius\x17Waktu S" + + "tandar Mauritius\x1bWaktu Musim Panas Mauritius\x0cWaktu Mawson\x18Waktu" + + " Meksiko Barat Laut Waktu Standar Meksiko Barat Laut$Waktu Musim Panas M" + + "eksiko Barat Laut\x15Waktu Pasifik Meksiko\x1dWaktu Standar Pasifik Meks" + + "iko!Waktu Musim Panas Pasifik Meksiko\x10Waktu Ulan Bator\x18Waktu Stand" + + "ar Ulan Bator\x1cWaktu Musim Panas Ulan Bator\x0cWaktu Moskwa\x14Waktu S" + + "tandar Moskwa\x18Waktu Musim Panas Moskwa\x0dWaktu Myanmar\x0bWaktu Naur" + + "u\x0bWaktu Nepal\x14Waktu Kaledonia Baru\x1cWaktu Standar Kaledonia Baru" + + " Waktu Musim Panas Kaledonia Baru\x13Waktu Selandia Baru\x1bWaktu Standa" + + "r Selandia Baru\x1fWaktu Musim Panas Selandia Baru\x12Waktu Newfoundland" + + "\x1aWaktu Standar Newfoundland\x1eWaktu Musim Panas Newfoundland\x0aWakt" + + "u Niue\x17Waktu Kepulauan Norfolk\x19Waktu Fernando de Noronha!Waktu Sta" + + "ndar Fernando de Noronha%Waktu Musim Panas Fernando de Noronha\x18Waktu " + + "Kep. Mariana Utara\x11Waktu Novosibirsk\x19Waktu Standar Novosibirsk\x1d" + + "Waktu Musim Panas Novosibirsk\x0aWaktu Omsk\x12Waktu Standar Omsk\x16Wak" + + "tu Musim Panas Omsk\x0eWaktu Pakistan\x16Waktu Standar Pakistan\x1aWaktu" + + " Musim Panas Pakistan\x0bWaktu Palau\x12Waktu Papua Nugini\x0eWaktu Para" + + "guay\x16Waktu Standar Paraguay\x1aWaktu Musim Panas Paraguay\x0aWaktu Pe" + + "ru\x12Waktu Standar Peru\x16Waktu Musim Panas Peru\x0eWaktu Filipina\x16" + + "Waktu Standar Filipina\x1aWaktu Musim Panas Filipina\x17Waktu Kepulauan " + + "Phoenix\x1fWaktu Saint Pierre dan Miquelon'Waktu Standar Saint Pierre da" + + "n Miquelon+Waktu Musim Panas Saint Pierre dan Miquelon\x0eWaktu Pitcairn" + + "\x0cWaktu Ponape\x0fWaktu Pyongyang\x0fWaktu Qyzylorda\x17Waktu Standar " + + "Qyzylorda\x1bWaktu Musim Panas Qyzylorda\x0dWaktu Reunion\x0dWaktu Rothe" + + "ra\x0eWaktu Sakhalin\x16Waktu Standar Sakhalin\x1aWaktu Musim Panas Sakh" + + "alin\x0cWaktu Samara\x14Waktu Standar Samara\x18Waktu Musim Panas Samara" + + "\x0bWaktu Samoa\x13Waktu Standar Samoa\x17Waktu Musim Panas Samoa\x10Wak" + + "tu Seychelles\x17Waktu Standar Singapura\x17Waktu Kepulauan Solomon\x15W" + + "aktu Georgia Selatan\x0eWaktu Suriname\x0bWaktu Syowa\x0cWaktu Tahiti" + + "\x0cWaktu Taipei\x14Waktu Standar Taipei\x18Waktu Musim Panas Taipei\x10" + + "Waktu Tajikistan\x0dWaktu Tokelau\x0bWaktu Tonga\x13Waktu Standar Tonga" + + "\x17Waktu Musim Panas Tonga\x0bWaktu Chuuk\x12Waktu Turkmenistan\x1aWakt" + + "u Standar Turkmenistan\x1eWaktu Musim Panas Turkmenistan\x0cWaktu Tuvalu" + + "\x0dWaktu Uruguay\x15Waktu Standar Uruguay\x19Waktu Musim Panas Uruguay" + + "\x10Waktu Uzbekistan\x18Waktu Standar Uzbekistan\x1cWaktu Musim Panas Uz" + + "bekistan\x0dWaktu Vanuatu\x15Waktu Standar Vanuatu\x19Waktu Musim Panas " + + "Vanuatu\x0fWaktu Venezuela\x11Waktu Vladivostok\x19Waktu Standar Vladivo" + + "stok\x1dWaktu Musim Panas Vladivostok\x0fWaktu Volgograd\x17Waktu Standa" + + "r Volgograd\x1bWaktu Musim Panas Volgograd\x0cWaktu Vostok\x14Waktu Kepu" + + "lauan Wake\x17Waktu Wallis dan Futuna\x0dWaktu Yakutsk\x15Waktu Standar " + + "Yakutsk\x19Waktu Musim Panas Yakutsk\x13Waktu Yekaterinburg\x1bWaktu Sta" + + "ndar Yekaterinburg\x1fWaktu Musim Panas Yekaterinburg\x03Bal\x03Lw2\x03L" + + "w3\x03Lw4\x03Lw5\x03Lw6\x0bbulan depan\x0cSelasa depan\x0aRabu depan\x0b" + + "Sabtu depan\x0fWaktu Siang {0}\x10Waktu Piawai {0}\x12Waktu Siang Alaska" + + "\x0bWaktu Pusat\x12Waktu Siang Tengah\x11Waktu Siang Timur\x11Waktu Perg" + + "unungan\x1cWaktu Hari Siang Pergunungan\x13Waktu Siang Pasifik\x10Waktu " + + "Siang Apia\x10Waktu Siang Arab\x15Waktu Argentina Barat!Waktu Musim Pana" + + "s Argentina Barat\x14Waktu Siang Atlantik\x16Waktu Australia Tengah\x1cW" + + "aktu Siang Australia Tengah\x22Waktu Siang Barat Tengah Australia\x15Wak" + + "tu Australia Timur\x1bWaktu Siang Australia Timur\x15Waktu Australia Bar" + + "at\x1bWaktu Siang Australia Barat\x0eWaktu Brasilia\x1aWaktu Musim Panas" + + " Brasilia\x13Waktu Siang Chatham\x0bWaktu Chile\x17Waktu Musim Panas Chi" + + "le\x0bWaktu China\x11Waktu Siang China\x0eWaktu Colombia\x1aWaktu Musim " + + "Panas Colombia\x14Waktu Kepulauan Cook(Waktu Musim Panas Separuh Kepulau" + + "an Cook\x0aWaktu Cuba\x10Waktu Siang Cuba\x12Waktu Pulau Easter\x1eWaktu" + + " Musim Panas Pulau Easter\x13Waktu Eropah Tengah\x1fWaktu Musim Panas Er" + + "opah Tengah\x12Waktu Eropah Timur\x1eWaktu Musim Panas Eropah Timur\x12W" + + "aktu Eropah Barat\x1eWaktu Musim Panas Eropah Barat\x1bWaktu Siang Hawai" + + "i-Aleutian\x10Waktu Siang Iran\x12Waktu Siang Israel\x0bWaktu Jepun\x11W" + + "aktu Siang Jepun\x1eWaktu Petropavlovsk-Kamchatski\x11Waktu Siang Korea" + + "\x15Waktu Siang Lord Howe\x17Waktu Barat Laut Mexico\x1dWaktu Siang Bara" + + "t Laut Mexico\x14Waktu Pasifik Mexico\x1aWaktu Siang Pasifik Mexico\x0cW" + + "aktu Moscow\x18Waktu Musim Panas Moscow\x13Waktu New Caledonia\x1fWaktu " + + "Musim Panas New Caledonia\x11Waktu New Zealand\x17Waktu Siang New Zealan" + + "d\x18Waktu Siang Newfoundland%Waktu Siang Saint Pierre dan Miquelon\x12W" + + "aktu Siang Taipei" + +var bucket51 string = "" + // Size: 11041 bytes + "\x03Jen\x03Feb\x03Maa\x03Epr\x03Mee\x03Juu\x03Jul\x07Ọgọ\x03Sep\x05Ọkt" + + "\x03Nov\x03Dis\x0cJenụwarị\x0dFebrụwarị\x08Maachị\x05Eprel\x04Juun\x07Ju" + + "laị\x0cỌgọọst\x08Septemba\x08Ọktoba\x07Novemba\x07Disemba\x05Ụka\x05Mọn" + + "\x03Tiu\x03Wen\x07Tọọ\x06Fraị\x03Sat\x0fMbọsị Ụka\x07Mọnde\x07Tiuzdee" + + "\x08Wenezdee\x0bTọọzdee\x09Fraịdee\x09Satọdee\x04Ọ1\x04Ọ2\x04Ọ3\x04Ọ4" + + "\x09Ọkara 1\x09Ọkara 2\x09Ọkara 3\x09Ọkara 4\x04P.M.\x0bTupu Kristi\x0cA" + + "fọ Kristi\x04T.K.\x04A.K.\x04Agba\x05Afọ\x06Ọnwa\x03Izu\x0cỤbọchị\x09Nny" + + "aafụ\x05Taata\x04Echi\x10Ụbọchị izu\x1cN’ụtụtụ/N’anyasị\x07Elekere\x05Nk" + + "eji\x08Nkejinta\x0cMpaghara oge\x06ꋍꆪ\x06ꑍꆪ\x06ꌕꆪ\x06ꇖꆪ\x06ꉬꆪ\x06ꃘꆪ\x06ꏃ" + + "ꆪ\x06ꉆꆪ\x06ꈬꆪ\x06ꊰꆪ\x09ꊰꊪꆪ\x09ꊰꑋꆪ\x06ꑭꆏ\x06ꆏꋍ\x06ꆏꑍ\x06ꆏꌕ\x06ꆏꇖ\x06ꆏꉬ" + + "\x06ꆏꃘ\x03ꆏ\x03ꋍ\x03ꑍ\x03ꌕ\x03ꇖ\x03ꉬ\x03ꃘ\x09ꑭꆏꑍ\x09ꆏꊂꋍ\x09ꆏꊂꑍ\x09ꆏꊂꌕ" + + "\x09ꆏꊂꇖ\x09ꆏꊂꉬ\x09ꆏꊂꃘ\x06ꃅꑌ\x06ꃅꎸ\x06ꃅꍵ\x06ꃅꋆ\x06ꎸꄑ\x06ꁯꋒ\x09ꃅꋊꂿ\x09ꃅꋊꊂ" + + "\x06ꃅꋊ\x03ꈎ\x03ꆪ\x0cꎴꂿꋍꑍ\x09ꀋꅔꉈ\x06ꀃꑍ\x09ꃆꏂꑍ\x09ꌕꀿꑍ\x0dꎸꄑ/ꁯꋒ\x06ꄮꈉ\x03ꃏ" + + "\x03ꇙ\x0cꃅꄷꄮꈉ\x07janúar\x08febrúar\x04mars\x06apríl\x04maí\x06júní\x06jú" + + "lí\x07ágúst\x09september\x08október\x09nóvember\x08desember\x04maí\x02F1" + + "\x02F2\x02F3\x02F4\x0f1. fjórðungur\x0f2. fjórðungur\x0f3. fjórðungur" + + "\x0f4. fjórðungur\x06miðn.\x04f.h.\x05hád.\x04e.h.\x0aað morgni\x07síðd." + + "\x07að kv.\x0aað nóttu\x03mn.\x02e.\x04mrg.\x03sd.\x0amiðnætti\x07hádegi" + + "\x0asíðdegis\x0bað kvöldi\x05morg.\x05nótt\x03hd.\x07morgunn\x0deftir há" + + "degi\x06kvöld\x0bfyrir Krist\x17fyrir kristið tímatal\x0beftir Krist\x11" + + "kristið tímatal\x06f.l.t.\x04l.t.\x04f.k.\x04e.k.\x08tímabil\x11á síðast" + + "a ári\x0eá þessu ári\x0eá næsta ári\x0deftir {0} ár\x0efyrir {0} ári\x0f" + + "fyrir {0} árum\x10ársfjórðungur\x1asíðasti ársfjórðungur\x17þessi ársfjó" + + "rðungur\x17næsti ársfjórðungur\x18eftir {0} ársfjórðung\x19eftir {0} árs" + + "fjórðunga\x19fyrir {0} ársfjórðungi\x1afyrir {0} ársfjórðungum\x0cársfjó" + + "rð.\x11síðasti ársfj.\x0eþessi ársfj.\x0enæsti ársfj.\x11eftir {0} ársfj" + + ".\x11fyrir {0} ársfj.\x09mánuður\x15í síðasta mánuði\x13í þessum mánuði" + + "\x12í næsta mánuði\x11eftir {0} mánuð\x12eftir {0} mánuði\x12fyrir {0} m" + + "ánuði\x13fyrir {0} mánuðum\x12í síðasta mán.\x10í þessum mán.\x0fí næst" + + "a mán.\x0feftir {0} mán.\x0ffyrir {0} mán.\x11í síðustu viku\x10í þessar" + + "i viku\x0eí næstu viku\x0eeftir {0} viku\x0feftir {0} vikur\x0efyrir {0}" + + " viku\x0ffyrir {0} vikum\x09+{0} viku\x0a+{0} vikur\x09-{0} viku\x0a-{0}" + + " vikur\x0bí fyrradag\x07í gær\x06í dag\x09á morgun\x0eeftir tvo daga\x0d" + + "eftir {0} dag\x0eeftir {0} daga\x0efyrir {0} degi\x10fyrir {0} dögum\x08" + + "+{0} dag\x09+{0} daga\x09-{0} degi\x0b-{0} dögum\x09vikudagur\x12síðasta" + + " sunnudag\x1bsunnudagur í þessari viku\x0fnæsta sunnudag\x0esíðasti sun." + + "\x0bþessi sun.\x0bnæsta sun.\x08nk. sun.\x12síðasta mánudag\x1bmánudagur" + + " í þessari viku\x0fnæsta mánudag\x0fsíðasta mán.\x0cþessi mán.\x0cnæsta " + + "mán.\x0fsíðasti mán.\x09nk. mán.\x15síðasta þriðjudag\x1eþriðjudagur í þ" + + "essari viku\x12næsta þriðjudag\x0fsíðasti þri.\x0cþessi þri.\x12næstkoma" + + "ndi þri.\x09nk. þri.\x1fmiðvikudagur í síðustu viku\x1emiðvikudagur í þe" + + "ssari viku\x1cmiðvikudagur í næstu viku\x0fsíðasti mið.\x0cþessi mið." + + "\x12næstkomandi mið.\x09nk. mið.\x1dfimmtudagur í síðustu viku\x1cfimmtu" + + "dagur í þessari viku\x1afimmtudagur í næstu viku\x0esíðasti fim.\x0bþess" + + "i fim.\x11næstkomandi fim.\x08nk. fim.\x13síðasta föstudag\x0fá föstudag" + + "inn\x10næsta föstudag\x0fsíðasta fös.\x08á fös.\x0cnæsta fös.\x13síðasta" + + " laugardag\x0fá laugardaginn\x10næsta laugardag\x0esíðasta lau.\x07á lau" + + ".\x0bnæsta lau.\x09f.h./e.h.\x0bklukkustund\x15eftir {0} klukkustund\x17" + + "eftir {0} klukkustundir\x15fyrir {0} klukkustund\x17fyrir {0} klukkustun" + + "dum\x05klst.\x0feftir {0} klst.\x0ffyrir {0} klst.\x0a+{0} klst.\x0a-{0}" + + " klst.\x08mínúta\x12eftir {0} mínútu\x13eftir {0} mínútur\x12fyrir {0} m" + + "ínútu\x13fyrir {0} mínútum\x05mín.\x0feftir {0} mín.\x0ffyrir {0} mín." + + "\x0a+{0} mín.\x0a-{0} mín.\x08sekúnda\x05núna\x12eftir {0} sekúndu\x13ef" + + "tir {0} sekúndur\x12fyrir {0} sekúndu\x13fyrir {0} sekúndum\x0eeftir {0}" + + " sek.\x0efyrir {0} sek.\x09+{0} sek.\x09-{0} sek.\x0atímabelti\x1fSamræm" + + "dur alþjóðlegur tími\x17Sumartími í Bretlandi\x16Sumartími á Írlandi\x0f" + + "Afganistantími\x11Mið-Afríkutími\x13Austur-Afríkutími\x13Suður-Afríkutím" + + "i\x13Vestur-Afríkutími\x1eStaðaltími í Vestur-Afríku\x1cSumartími í Vest" + + "ur-Afríku\x0fTími í Alaska\x16Staðaltími í Alaska\x14Sumartími í Alaska" + + "\x0cAmasóntími Staðaltími á Amasónsvæðinu\x1eSumartími á Amasónsvæðinu+T" + + "ími í miðhluta Bandaríkjanna og Kanada2Staðaltími í miðhluta Bandaríkja" + + "nna og Kanada0Sumartími í miðhluta Bandaríkjanna og Kanada-Tími í austur" + + "hluta Bandaríkjanna og Kanada4Staðaltími í austurhluta Bandaríkjanna og " + + "Kanada2Sumartími í austurhluta Bandaríkjanna og Kanada\x17Tími í Klettaf" + + "jöllum\x1eStaðaltími í Klettafjöllum\x1cSumartími í Klettafjöllum\x1bTím" + + "i á Kyrrahafssvæðinu\x22Staðaltími á Kyrrahafssvæðinu Sumartími á Kyrrah" + + "afssvæðinu\x0fTími í Anadyr\x16Staðaltími í Anadyr\x14Sumartími í Anadyr" + + "\x0eTími í Apía\x15Staðaltími í Apía\x13Sumartími í Apía\x0cArabíutími" + + "\x17Staðaltími í Arabíu\x15Sumartími í Arabíu\x0fArgentínutími\x1aStaðal" + + "tími í Argentínu\x18Sumartími í Argentínu\x16Vestur-Argentínutími!Staðal" + + "tími í Vestur-Argentínu\x1fSumartími í Vestur-Argentínu\x0dArmeníutími" + + "\x18Staðaltími í Armeníu\x16Sumartími í Armeníu\x1dTími á Atlantshafssvæ" + + "ðinu$Staðaltími á Atlantshafssvæðinu\x22Sumartími á Atlantshafssvæðinu" + + "\x18Tími í Mið-Ástralíu\x1fStaðaltími í Mið-Ástralíu\x1dSumartími í Mið-" + + "Ástralíu#Tími í miðvesturhluta Ástralíu*Staðaltími í miðvesturhluta Ást" + + "ralíu(Sumartími í miðvesturhluta Ástralíu\x1aTími í Austur-Ástralíu!Stað" + + "altími í Austur-Ástralíu\x1fSumartími í Austur-Ástralíu\x1aTími í Vestur" + + "-Ástralíu!Staðaltími í Vestur-Ástralíu\x1fSumartími í Vestur-Ástralíu" + + "\x12Aserbaídsjantími\x1dStaðaltími í Aserbaídsjan\x1bSumartími í Aserbaí" + + "dsjan\x0eAsóreyjatími\x1aStaðaltími á Asóreyjum\x18Sumartími á Asóreyjum" + + "\x10Bangladess-tími\x1aStaðaltími í Bangladess\x18Sumartími í Bangladess" + + "\x0bBútantími\x0eBólivíutími\x0eBrasilíutími\x19Staðaltími í Brasilíu" + + "\x17Sumartími í Brasilíu\x0cBrúneitími\x15Grænhöfðaeyjatími!Staðaltími á" + + " Grænhöfðaeyjum\x1fSumartími á Grænhöfðaeyjum\x15Chamorro-staðaltími\x0d" + + "Chatham-tími\x17Staðaltími í Chatham\x15Sumartími í Chatham\x0aSíletími" + + "\x15Staðaltími í Síle\x13Sumartími í Síle\x0aKínatími\x15Staðaltími í Kí" + + "na\x13Sumartími í Kína\x13Tími í Choibalsan\x1aStaðaltími í Choibalsan" + + "\x18Sumartími í Choibalsan\x0fJólaeyjartími\x0fKókoseyjatími\x0fKólumbíu" + + "tími\x1aStaðaltími í Kólumbíu\x18Sumartími í Kólumbíu\x0fCooks-eyjatími" + + "\x1bStaðaltími á Cooks-eyjum\x1eHálfsumartími á Cooks-eyjum\x0aKúbutími" + + "\x15Staðaltími á Kúbu\x13Sumartími á Kúbu\x0bDavis-tími\x1bTími á Dumont" + + "-d’Urville\x17Tíminn á Tímor-Leste\x0fPáskaeyjutími\x1aStaðaltími á Pásk" + + "aeyju\x18Sumartími á Páskaeyju\x0cEkvadortími\x11Mið-Evróputími\x1cStaða" + + "ltími í Mið-Evrópu\x1aSumartími í Mið-Evrópu\x13Austur-Evróputími\x1eSta" + + "ðaltími í Austur-Evrópu\x1cSumartími í Austur-Evrópu\x1aStaðartími Kalí" + + "níngrad\x13Vestur-Evróputími\x1eStaðaltími í Vestur-Evrópu\x1cSumartími " + + "í Vestur-Evrópu\x12Falklandseyjatími\x1eStaðaltími á Falklandseyjum\x1c" + + "Sumartími á Falklandseyjum\x10Fídjíeyjatími\x1cStaðaltími á Fídjíeyjum" + + "\x1aSumartími á Fídjíeyjum\x1aTími í Frönsku Gvæjana@Tími á frönsku suðu" + + "rhafssvæðum og Suðurskautslandssvæði\x0fGalapagos-tími\x0dGambier-tími" + + "\x0dGeorgíutími\x18Staðaltími í Georgíu\x16Sumartími í Georgíu\x16Tími á" + + " Gilbert-eyjum\x16Greenwich-staðaltími\x16Austur-Grænlandstími!Staðaltím" + + "i á Austur-Grænlandi\x1fSumartími á Austur-Grænlandi\x16Vestur-Grænlands" + + "tími!Staðaltími á Vestur-Grænlandi\x1fSumartími á Vestur-Grænlandi\x1cSt" + + "aðaltími við Persaflóa\x0dGvæjanatími\x1aTími á Havaí og Aleúta!Staðaltí" + + "mi á Havaí og Aleúta\x1fSumartími á Havaí og Aleúta\x0fHong Kong-tími" + + "\x19Staðaltími í Hong Kong\x17Sumartími í Hong Kong\x0aHovd-tími\x14Stað" + + "altími í Hovd\x12Sumartími í Hovd\x0dIndlandstími\x11Indlandshafstími" + + "\x0fIndókínatími\x15Mið-Indónesíutími\x17Austur-Indónesíutími\x17Vestur-" + + "Indónesíutími\x0bÍranstími\x15Staðaltími í Íran\x13Sumartími í Íran\x10T" + + "ími í Irkutsk\x17Staðaltími í Irkutsk\x15Sumartími í Irkutsk\x0dÍsraels" + + "tími\x17Staðaltími í Ísrael\x15Sumartími í Ísrael\x0bJapanstími\x15Staða" + + "ltími í Japan\x13Sumartími í Japan!Tími í Petropavlovsk-Kamchatski(Staða" + + "ltími í Petropavlovsk-Kamchatski&Sumartími í Petropavlovsk-Kamchatski" + + "\x19Tími í Austur-Kasakstan\x19Tími í Vestur-Kasakstan\x0bKóreutími\x16S" + + "taðaltími í Kóreu\x14Sumartími í Kóreu\x0cKosrae-tími\x14Tími í Krasnoya" + + "rsk\x1bStaðaltími í Krasnoyarsk\x19Sumartími í Krasnoyarsk\x0fKirgistan-" + + "tími\x0fLínueyja-tími\x17Tími á Lord Howe-eyju\x1eStaðaltími á Lord Howe" + + "-eyju\x1cSumartími á Lord Howe-eyju\x14Macquarie-eyjartími\x10Tími í Mag" + + "adan\x17Staðaltími í Magadan\x15Sumartími í Magadan\x0dMalasíutími\x11Ma" + + "ldíveyja-tími\x1dTími á Markgreifafrúreyjum\x17Tími á Marshall-eyjum\x0f" + + "Máritíustími\x1aStaðaltími á Máritíus\x18Sumartími á Máritíus\x0cMawson-" + + "tími\x1dTími í Norðvestur-Mexíkó$Staðaltími í Norðvestur-Mexíkó\x22Sumar" + + "tími í Norðvestur-Mexíkó\x1aKyrrahafstími í Mexíkó.Staðaltími í Mexíkó á" + + " Kyrrahafssvæðinu,Sumartími í Mexíkó á Kyrrahafssvæðinu\x14Tími í Úlan B" + + "ator\x1bStaðaltími í Úlan Bator\x19Sumartími í Úlan Bator\x0bMoskvutími" + + "\x16Staðaltími í Moskvu\x14Sumartími í Moskvu\x0dMjanmar-tími\x0cNárú-tí" + + "mi\x0aNepaltími\x1aTími í Nýju-Kaledóníu!Staðaltími í Nýju-Kaledóníu\x1f" + + "Sumartími í Nýju-Kaledóníu\x18Tími á Nýja-Sjálandi\x1fStaðaltími á Nýja-" + + "Sjálandi\x1dSumartími á Nýja-Sjálandi\x17Tími á Nýfundnalandi\x1eStaðalt" + + "ími á Nýfundnalandi\x1cSumartími á Nýfundnalandi\x0aNiue-tími\x15Tími á" + + " Norfolk-eyju\x1cTími í Fernando de Noronha#Staðaltími í Fernando de Nor" + + "onha!Sumartími í Fernando de Noronha\x14Tími í Novosibirsk\x1bStaðaltími" + + " í Novosibirsk\x19Sumartími í Novosibirsk\x0fTíminn í Omsk\x14Staðaltími" + + " í Omsk\x12Sumartími í Omsk\x0dPakistantími\x18Staðaltími í Pakistan\x16" + + "Sumartími í Pakistan\x0aPalátími\x1cTími á Papúa Nýju-Gíneu\x0dParagvætí" + + "mi\x18Staðaltími í Paragvæ\x16Sumartími í Paragvæ\x0aPerútími\x15Staðalt" + + "ími í Perú\x13Sumartími í Perú\x10Filippseyjatími\x1cStaðaltími á Filip" + + "pseyjum\x1aSumartími á Filippseyjum\x0fFönixeyjatími\x22Tími á Sankti Pi" + + "erre og Miquelon)Staðaltími á Sankti Pierre og Miquelon'Sumartími á Sank" + + "ti Pierre og Miquelon\x0ePitcairn-tími\x0cPonape-tími\x0eRéunion-tími" + + "\x0dRothera-tími\x11Tími í Sakhalin\x18Staðaltími í Sakhalin\x16Sumartím" + + "i í Sakhalin\x0fTími í Samara\x16Staðaltími í Samara\x14Sumartími í Sama" + + "ra\x0cSamóa-tími\x16Staðaltími á Samóa\x14Sumartími á Samóa\x14Seychelle" + + "s-eyjatími\x0eSingapúrtími\x12Salómonseyjatími\x14Suður-Georgíutími\x0dS" + + "úrinamtími\x0bSyowa-tími\x0eTahítí-tími\x0cTaipei-tími\x16Staðaltími í " + + "Taipei\x14Sumartími í Taipei\x13Tadsjíkistan-tími\x0eTókelá-tími\x0aTong" + + "atími\x15Staðaltími á Tonga\x13Sumartími á Tonga\x0bChuuk-tími\x13Túrkme" + + "nistan-tími\x1dStaðaltími í Túrkmenistan\x1bSumartími í Túrkmenistan\x0d" + + "Túvalútími\x0eÚrúgvætími\x19Staðaltími í Úrúgvæ\x17Sumartími í Úrúgvæ" + + "\x11Úsbekistan-tími\x1bStaðaltími í Úsbekistan\x19Sumartími í Úsbekistan" + + "\x0fVanúatú-tími\x19Staðaltími á Vanúatú\x17Sumartími á Vanúatú\x0fVenes" + + "úelatími\x14Tími í Vladivostok\x1bStaðaltími í Vladivostok\x19Sumartími" + + " í Vladivostok\x12Tími í Volgograd\x19Staðaltími í Volgograd\x17Sumartím" + + "i í Volgograd\x0cVostok-tími\x12Tími á Wake-eyju!Tími á Wallis- og Fútún" + + "aeyjum\x12Tíminn í Yakutsk\x17Staðaltími í Yakutsk\x15Sumartími í Yakuts" + + "k\x16Tími í Yekaterinburg\x1dStaðaltími í Yekaterinborg\x1bSumartími í Y" + + "ekaterinburg\x03Hor\x04Mär\x03Abr\x03Mei\x04Brá\x03Hei\x04Öig\x03Her\x04" + + "Wím\x03Win\x03Chr" + +var bucket52 string = "" + // Size: 10755 bytes + "\x09dd MMMM U\x08dd MMM U\x0e{1} 'alle' {0}\x07gennaio\x08febbraio\x05ma" + + "rzo\x06aprile\x06maggio\x06giugno\x06luglio\x06agosto\x09settembre\x07ot" + + "tobre\x08novembre\x08dicembre\x08domenica\x07lunedì\x08martedì\x0amercol" + + "edì\x08giovedì\x08venerdì\x06sabato\x0d1º trimestre\x0d2º trimestre\x0d3" + + "º trimestre\x0d4º trimestre\x0amezzanotte\x0bmezzogiorno\x0adi mattina" + + "\x0edel pomeriggio\x07di sera\x08di notte\x07mattina\x0apomeriggio\x04se" + + "ra\x05notte\x0davanti Cristo\x12avanti Era Volgare\x0bdopo Cristo\x0bEra" + + " Volgare\x06a.E.V.\x04E.V.\x0fPrima di R.O.C.\x06Minguo\x04anno\x0banno " + + "scorso\x0cquest’anno\x0danno prossimo\x0ctra {0} anno\x0ctra {0} anni" + + "\x0b{0} anno fa\x0b{0} anni fa\x10trimestre scorso\x10questo trimestre" + + "\x12trimestre prossimo\x11tra {0} trimestre\x11tra {0} trimestri\x10{0} " + + "trimestre fa\x10{0} trimestri fa\x0ctrim. scorso\x0cquesto trim.\x0etrim" + + ". prossimo\x0dtra {0} trim.\x0c{0} trim. fa\x04mese\x0bmese scorso\x0bqu" + + "esto mese\x0dmese prossimo\x0ctra {0} mese\x0ctra {0} mesi\x0b{0} mese f" + + "a\x0b{0} mesi fa\x09settimana\x10settimana scorsa\x10questa settimana" + + "\x12settimana prossima\x11tra {0} settimana\x11tra {0} settimane\x10{0} " + + "settimana fa\x10{0} settimane fa\x14la settimana del {0}\x05sett.\x0dtra" + + " {0} sett.\x0c{0} sett. fa\x06giorno\x0el’altro ieri\x04ieri\x04oggi\x06" + + "domani\x0adopodomani\x0etra {0} giorno\x0etra {0} giorni\x0d{0} giorno f" + + "a\x0d{0} giorni fa\x09tra {0} g\x0atra {0} gg\x08{0} g fa\x09{0} gg fa" + + "\x16giorno della settimana\x0fdomenica scorsa\x0fquesta domenica\x11dome" + + "nica prossima\x10tra {0} domenica\x11tra {0} domeniche\x0f{0} domenica f" + + "a\x10{0} domeniche fa\x0bdom. scorsa\x0bquesta dom.\x0ddom. prossima\x0c" + + "tra {0} dom.\x0b{0} dom. fa\x09do scorsa\x09questa do\x0bdo prossima\x0b" + + "tra {0} do.\x0a{0} do. fa\x0elunedì scorso\x0equesto lunedì\x10lunedì pr" + + "ossimo\x0ftra {0} lunedì\x0e{0} lunedì fa\x0blun. scorso\x0bquesto lun." + + "\x0dlun. prossimo\x0ctra {0} lun.\x0b{0} lun. fa\x09lu scorso\x09questo " + + "lu\x0blu prossimo\x0btra {0} lu.\x0a{0} lu. fa\x0fmartedì scorso\x0fques" + + "to martedì\x11martedì prossimo\x10tra {0} martedì\x0f{0} martedì fa\x0bm" + + "ar. scorso\x0bquesto mar.\x0dmar. prossimo\x0ctra {0} mar.\x0b{0} mar. f" + + "a\x09ma scorso\x09questo ma\x0bma prossimo\x0btra {0} ma.\x0a{0} ma. fa" + + "\x11mercoledì scorso\x11questo mercoledì\x13mercoledì prossimo\x12tra {0" + + "} mercoledì\x11{0} mercoledì fa\x0bmer. scorso\x0bquesto mer.\x0dmer. pr" + + "ossimo\x0ctra {0} mer.\x0b{0} mer. fa\x09me scorso\x09questo me\x0bme pr" + + "ossimo\x0btra {0} me.\x0a{0} me. fa\x0fgiovedì scorso\x0fquesto giovedì" + + "\x11giovedì prossimo\x10tra {0} giovedì\x0f{0} giovedì fa\x0bgio. scorso" + + "\x0bquesto gio.\x0dgio. prossimo\x0ctra {0} gio.\x0b{0} gio. fa\x09gi sc" + + "orso\x09questo gi\x0bgi prossimo\x0btra {0} gi.\x0a{0} gi. fa\x0fvenerdì" + + " scorso\x0fquesto venerdì\x11venerdì prossimo\x10tra {0} venerdì\x0f{0} " + + "venerdì fa\x0bven. scorso\x0bquesto ven.\x0dven. prossimo\x0ctra {0} ven" + + ".\x0b{0} ven. fa\x09ve scorso\x09questo ve\x0bve prossimo\x0btra {0} ve." + + "\x0a{0} ve. fa\x0dsabato scorso\x0dquesto sabato\x0fsabato prossimo\x0et" + + "ra {0} sabato\x0etra {0} sabati\x0d{0} sabato fa\x0d{0} sabati fa\x0bsab" + + ". scorso\x0bquesto sab.\x0dsab. prossimo\x0ctra {0} sab.\x0b{0} sab. fa" + + "\x09sa scorso\x09questo sa\x0bsa prossimo\x0btra {0} sa.\x0a{0} sa. fa" + + "\x03ora\x0bquest’ora\x0btra {0} ora\x0btra {0} ore\x0a{0} ora fa\x0a{0} " + + "ore fa\x0atra {0} h.\x09{0} h. fa\x09tra {0} h\x08{0} h fa\x0dquesto min" + + "uto\x0etra {0} minuto\x0etra {0} minuti\x0d{0} minuto fa\x0d{0} minuti f" + + "a\x0ctra {0} min.\x0b{0} min. fa\x0btra {0} min\x0a{0} min fa\x07secondo" + + "\x0ftra {0} secondo\x0ftra {0} secondi\x0e{0} secondo fa\x0e{0} secondi " + + "fa\x0ctra {0} sec.\x0b{0} sec. fa\x09tra {0} s\x08{0} s fa\x0bfuso orari" + + "o\x07Ora {0}\x0fOra legale: {0}\x11Ora standard: {0}\x1bTempo coordinato" + + " universale\x1aOra legale del Regno Unito\x19Ora legale dell’Irlanda\x16" + + "Ora dell’Afghanistan\x1aOra dell’Africa centrale\x1bOra dell’Africa orie" + + "ntale\x1dOra dell’Africa meridionale\x1dOra dell’Africa occidentale&Ora " + + "standard dell’Africa occidentale$Ora legale dell’Africa occidentale\x11O" + + "ra dell’Alaska\x1aOra standard dell’Alaska\x18Ora legale dell’Alaska\x14" + + "Ora dell’Amazzonia\x1dOra standard dell’Amazzonia\x1bOra legale dell’Ama" + + "zzonia\x10Ora centrale USA\x19Ora standard centrale USA\x17Ora legale ce" + + "ntrale USA\x11Ora orientale USA\x1aOra standard orientale USA\x18Ora leg" + + "ale orientale USA\x19Ora Montagne Rocciose USA\x22Ora standard Montagne " + + "Rocciose USA Ora legale Montagne Rocciose USA\x14Ora del Pacifico USA" + + "\x1dOra standard del Pacifico USA\x1bOra legale del Pacifico USA\x0dOra " + + "di Anadyr\x16Ora standard di Anadyr\x14Ora legale di Anadyr\x0bOra di Ap" + + "ia\x14Ora standard di Apia\x12Ora legale di Apia\x09Ora araba\x12Ora sta" + + "ndard araba\x10Ora legale araba\x14Ora dell’Argentina\x1dOra standard de" + + "ll’Argentina\x1bOra legale dell’Argentina Ora dell’Argentina occidentale" + + ")Ora standard dell’Argentina occidentale'Ora legale dell’Argentina occid" + + "entale\x12Ora dell’Armenia\x1bOra standard dell’Armenia\x19Ora legale de" + + "ll’Armenia\x14Ora dell’Atlantico\x1dOra standard dell’Atlantico\x1bOra l" + + "egale dell’Atlantico\x1dOra dell’Australia centrale&Ora standard dell’Au" + + "stralia centrale$Ora legale dell’Australia centrale%Ora dell’Australia c" + + "entroccidentale.Ora standard dell’Australia centroccidentale,Ora legale " + + "dell’Australia centroccidentale\x1eOra dell’Australia orientale'Ora stan" + + "dard dell’Australia orientale%Ora legale dell’Australia orientale Ora de" + + "ll’Australia occidentale)Ora standard dell’Australia occidentale'Ora leg" + + "ale dell’Australia occidentale\x16Ora dell’Azerbaigian\x1fOra standard d" + + "ell’Azerbaigian\x1dOra legale dell’Azerbaigian\x11Ora delle Azzorre\x1aO" + + "ra standard delle Azzorre\x18Ora legale delle Azzorre\x12Ora del Banglad" + + "esh\x1bOra standard del Bangladesh\x19Ora legale del Bangladesh\x0eOra d" + + "el Bhutan\x11Ora della Bolivia\x0fOra di Brasilia\x18Ora standard di Bra" + + "silia\x16Ora legale di Brasilia\x19Ora del Brunei Darussalam\x11Ora di C" + + "apo Verde\x1aOra standard di Capo Verde\x18Ora legale di Capo Verde\x0fO" + + "ra di Chamorro\x11Ora delle Chatham\x1aOra standard delle Chatham\x18Ora" + + " legale delle Chatham\x0cOra del Cile\x15Ora standard del Cile\x13Ora le" + + "gale del Cile\x0eOra della Cina\x17Ora standard della Cina\x15Ora legale" + + " della Cina\x11Ora di Choibalsan\x1aOra standard di Choibalsan\x18Ora le" + + "gale di Choibalsan\x1aOra dell’Isola Christmas\x15Ora delle Isole Cocos" + + "\x12Ora della Colombia\x1bOra standard della Colombia\x19Ora legale dell" + + "a Colombia\x14Ora delle isole Cook\x1dOra standard delle isole Cook!Ora " + + "legale media delle isole Cook\x0bOra di Cuba\x14Ora standard di Cuba\x12" + + "Ora legale di Cuba\x0cOra di Davis\x19Ora di Dumont-d’Urville\x10Ora di " + + "Timor Est\x1aOra dell’Isola di Pasqua#Ora standard dell’Isola di Pasqua!" + + "Ora legale dell’Isola di Pasqua\x12Ora dell’Ecuador\x1aOra dell’Europa c" + + "entrale#Ora standard dell’Europa centrale!Ora legale dell’Europa central" + + "e\x1bOra dell’Europa orientale$Ora standard dell’Europa orientale\x22Ora" + + " legale dell’Europa orientale)Ora dell’Europa orientale (Kaliningrad)" + + "\x1dOra dell’Europa occidentale&Ora standard dell’Europa occidentale$Ora" + + " legale dell’Europa occidentale\x18Ora delle Isole Falkland!Ora standard" + + " delle Isole Falkland\x1fOra legale delle Isole Falkland\x0eOra delle Fi" + + "gi\x17Ora standard delle Figi\x15Ora legale delle Figi\x19Ora della Guia" + + "na francese.Ora delle Terre australi e antartiche francesi\x13Ora delle " + + "Galapagos\x0eOra di Gambier\x11Ora della Georgia\x1aOra standard della G" + + "eorgia\x18Ora legale della Georgia\x17Ora delle isole Gilbert\x1eOra del" + + " meridiano di Greenwich\x1fOra della Groenlandia orientale(Ora standard " + + "della Groenlandia orientale&Ora legale della Groenlandia orientale!Ora d" + + "ella Groenlandia occidentale*Ora standard della Groenlandia occidentale(" + + "Ora legale della Groenlandia occidentale\x0dOra del Golfo\x10Ora della G" + + "uyana\x1fOra delle isole Hawaii-Aleutine(Ora standard delle Isole Hawaii" + + "-Aleutine&Ora legale delle Isole Hawaii-Aleutine\x10Ora di Hong Kong\x19" + + "Ora standard di Hong Kong\x17Ora legale di Hong Kong\x0bOra di Hovd\x14O" + + "ra standard di Hovd\x12Ora legale di Hovd\x19Ora standard dell’India\x19" + + "Ora dell’Oceano Indiano\x13Ora dell’Indocina\x1dOra dell’Indonesia centr" + + "ale\x1eOra dell’Indonesia orientale Ora dell’Indonesia occidentale\x0fOr" + + "a dell’Iran\x18Ora standard dell’Iran\x16Ora legale dell’Iran\x0eOra di " + + "Irkutsk\x17Ora standard di Irkutsk\x15Ora legale di Irkutsk\x0eOra di Is" + + "raele\x17Ora standard di Israele\x15Ora legale di Israele\x10Ora del Gia" + + "ppone\x19Ora standard del Giappone\x17Ora legale del Giappone\x1fOra di " + + "Petropavlovsk-Kamchatski(Ora standard di Petropavlovsk-Kamchatski&Ora le" + + "gale di Petropavlovsk-Kamchatski\x1cOra del Kazakistan orientale\x1eOra " + + "del Kazakistan occidentale\x0bOra coreana\x14Ora standard coreana\x12Ora" + + " legale coreana\x0eOra del Kosrae\x12Ora di Krasnoyarsk\x1bOra standard " + + "di Krasnoyarsk\x19Ora legale di Krasnoyarsk\x14Ora del Kirghizistan\x1dO" + + "ra delle Sporadi equatoriali\x10Ora di Lord Howe\x19Ora standard di Lord" + + " Howe\x17Ora legale di Lord Howe\x1aOra dell’Isola Macquarie\x0eOra di M" + + "agadan\x17Ora standard di Magadan\x15Ora legale di Magadan\x11Ora della " + + "Malesia\x11Ora delle Maldive\x12Ora delle Marchesi\x18Ora delle Isole Ma" + + "rshall\x13Ora delle Mauritius\x1cOra standard delle Mauritius\x1aOra leg" + + "ale delle Mauritius\x0dOra di Mawson Ora del Messico nord-occidentale)Or" + + "a standard del Messico nord-occidentale'Ora legale del Messico nord-occi" + + "dentale\x1aOra del Pacifico (Messico)#Ora standard del Pacifico (Messico" + + ")!Ora legale del Pacifico (Messico)\x11Ora di Ulan Bator\x1aOra standard" + + " di Ulan Bator\x18Ora legale di Ulan Bator\x0cOra di Mosca\x15Ora standa" + + "rd di Mosca\x13Ora legale di Mosca\x12Ora della Birmania\x0cOra di Nauru" + + "\x0dOra del Nepal\x19Ora della Nuova Caledonia\x22Ora standard della Nuo" + + "va Caledonia Ora legale della Nuova Caledonia\x17Ora della Nuova Zelanda" + + " Ora standard della Nuova Zelanda\x1eOra legale della Nuova Zelanda\x10O" + + "ra di Terranova\x19Ora standard di Terranova\x17Ora legale di Terranova" + + "\x0bOra di Niue\x17Ora delle Isole Norfolk\x1aOra di Fernando de Noronha" + + "#Ora standard di Fernando de Noronha!Ora legale di Fernando de Noronha" + + "\x12Ora di Novosibirsk\x1bOra standard di Novosibirsk\x19Ora legale di N" + + "ovosibirsk\x0bOra di Omsk\x14Ora standard di Omsk\x12Ora legale di Omsk" + + "\x10Ora del Pakistan\x19Ora standard del Pakistan\x17Ora legale del Paki" + + "stan\x0cOra di Palau\x1cOra della Papua Nuova Guinea\x10Ora del Paraguay" + + "\x19Ora standard del Paraguay\x17Ora legale del Paraguay\x0dOra del Perù" + + "\x16Ora standard del Perù\x14Ora legale del Perù\x13Ora delle Filippine" + + "\x1cOra standard delle Filippine\x1aOra legale delle Filippine\x1cOra de" + + "lle Isole della Fenice\x1eOra di Saint-Pierre e Miquelon'Ora standard di" + + " Saint-Pierre e Miquelon%Ora legale di Saint-Pierre e Miquelon\x12Ora de" + + "lle Pitcairn\x0eOra di Pohnpei\x10Ora di Pyongyang\x0fOra di Riunione" + + "\x0eOra di Rothera\x0fOra di Sakhalin\x18Ora standard di Sakhalin\x16Ora" + + " legale di Sakhalin\x0dOra di Samara\x16Ora standard di Samara\x14Ora le" + + "gale di Samara\x0cOra di Samoa\x15Ora standard di Samoa\x13Ora legale di" + + " Samoa\x14Ora delle Seychelles\x10Ora di Singapore\x18Ora delle Isole Sa" + + "lomone\x19Ora della Georgia del Sud\x10Ora del Suriname\x0cOra di Syowa" + + "\x0dOra di Tahiti\x0dOra di Taipei\x16Ora standard di Taipei\x14Ora lega" + + "le di Taipei\x12Ora del Tagikistan\x0eOra di Tokelau\x0cOra di Tonga\x15" + + "Ora standard di Tonga\x13Ora legale di Tonga\x0dOra del Chuuk\x14Ora del" + + " Turkmenistan\x1dOra standard del Turkmenistan\x1bOra legale del Turkmen" + + "istan\x0dOra di Tuvalu\x12Ora dell’Uruguay\x1bOra standard dell’Uruguay" + + "\x19Ora legale dell’Uruguay\x15Ora dell’Uzbekistan\x1eOra standard dell’" + + "Uzbekistan\x1cOra legale dell’Uzbekistan\x0fOra del Vanuatu\x18Ora stand" + + "ard del Vanuatu\x16Ora legale del Vanuatu\x11Ora del Venezuela\x12Ora di" + + " Vladivostok\x1bOra standard di Vladivostok\x19Ora legale di Vladivostok" + + "\x10Ora di Volgograd\x19Ora standard di Volgograd\x17Ora legale di Volgo" + + "grad\x0dOra di Vostok\x18Ora dell’Isola di Wake\x16Ora di Wallis e Futun" + + "a\x0eOra di Yakutsk\x17Ora standard di Yakutsk\x15Ora legale di Yakutsk" + + "\x13Ora di Ekaterinburg\x1cOra standard di Ekaterinburg\x1aOra legale di" + + " Ekaterinburg" + +var bucket53 string = "" + // Size: 16015 bytes + "\x06仏暦\x14GGGGy年M月d日EEEE\x10GGGGy年M月d日\x08Gy/MM/dd\x06正月\x06二月\x06三月\x06" + + "四月\x06五月\x06六月\x06七月\x06八月\x06九月\x06十月\x09十一月\x09十二月\x03正\x03二\x03三" + + "\x03四\x03五\x03六\x03七\x03八\x03九\x03十\x06十一\x06十二\x06閏{0}\x03子\x03丑\x03寅" + + "\x03卯\x03辰\x03巳\x03午\x03未\x03申\x03酉\x03戌\x03亥\x06立春\x06雨水\x06啓蟄\x06春分" + + "\x06清明\x06穀雨\x06立夏\x06小満\x06芒種\x06夏至\x06小暑\x06大暑\x06立秋\x06処暑\x06白露\x06秋分" + + "\x06寒露\x06霜降\x06立冬\x06小雪\x06大雪\x06冬至\x06小寒\x06大寒\x06甲子\x06乙丑\x06丙寅\x06丁卯" + + "\x06戊辰\x06己巳\x06庚午\x06辛未\x06壬申\x06癸酉\x06甲戌\x06乙亥\x06丙子\x06丁丑\x06戊寅\x06己卯" + + "\x06庚辰\x06辛巳\x06壬午\x06癸未\x06甲申\x06乙酉\x06丙戌\x06丁亥\x06戊子\x06己丑\x06庚寅\x06辛卯" + + "\x06壬辰\x06癸巳\x06甲午\x06乙未\x06丙申\x06丁酉\x06戊戌\x06己亥\x06庚子\x06辛丑\x06壬寅\x06癸卯" + + "\x06甲辰\x06乙巳\x06丙午\x06丁未\x06戊申\x06己酉\x06庚戌\x06辛亥\x06壬子\x06癸丑\x06甲寅\x06乙卯" + + "\x06丙辰\x06丁巳\x06戊午\x06己未\x06庚申\x06辛酉\x06壬戌\x06癸亥\x03鼠\x03牛\x03虎\x03兎\x03" + + "竜\x03蛇\x03馬\x03羊\x03猿\x03鶏\x03犬\x03猪\x0fU年MMMd日EEEE\x0bU年MMMd日\x05U-M-" + + "d\x09トウト\x06ババ\x0cハトール\x0cキアック\x09トーバ\x0fアムシール\x12バラムハート\x0fバラモウダ\x0fバシャ" + + "ンス\x0cパオーナ\x0cエペープ\x09メスラ\x09ナシエ\x0fメスケレム\x0cテケムト\x09ヘダル\x0cターサス\x06テル" + + "\x12イェカティト\x0cメガビト\x0cミアジア\x0cゲンボト\x06セネ\x09ハムレ\x0cネハッセ\x0cパグメン\x13Gy年M月" + + "d日(EEEE)\x0dGy年M月d日\x06Gy/M/d\x041月\x042月\x043月\x044月\x045月\x046月\x047月" + + "\x048月\x049月\x0510月\x0511月\x0512月\x03日\x03月\x03火\x03水\x03木\x03金\x03土\x09" + + "日曜日\x09月曜日\x09火曜日\x09水曜日\x09木曜日\x09金曜日\x09土曜日\x0d第1四半期\x0d第2四半期\x0d第3四" + + "半期\x0d第4四半期\x09真夜中\x06午前\x06正午\x06午後\x03朝\x03昼\x06夕方\x03夜\x06夜中\x09紀元前" + + "\x0f西暦紀元前\x06西暦\x0c西暦紀元\x10y年M月d日EEEE\x0cy年M月d日\x13H時mm分ss秒 zzzz\x0cティスレ" + + "\x0cへシボン\x0cキスレブ\x0cテベット\x0cシバット\x0bアダル I\x09アダル\x0cアダル II\x09ニサン\x09イヤル" + + "\x09シバン\x09タムズ\x06アヴ\x09エルル\x11Gy年M月d日EEEE\x0cカイトラ\x0fヴァイサカ\x0fジャイスタ\x0c" + + "アーサダ\x0cスラバナ\x0cバードラ\x0cアスビナ\x0fカルディカ\x12アヴラハヤナ\x09パウサ\x09マーガ\x0cパルグナ" + + "\x06サカ\x0fムハッラム\x0cサフアル!ラビー・ウル・アウワル!ラビー・ウッ・サーニー!ジュマーダル・アウワル\x1eジュマーダッサーニ" + + "ー\x0cラジャブ\x12シャアバーン\x0fラマダーン\x12シャウワール\x12ズル・カイダ\x15ズル・ヒッジャ\x06大化\x06白" + + "雉\x06白鳯\x06朱鳥\x06大宝\x06慶雲\x06和銅\x06霊亀\x06養老\x06神亀\x06天平\x0c天平感宝\x0c天平勝" + + "宝\x0c天平宝字\x0c天平神護\x0c神護景雲\x06宝亀\x06天応\x06延暦\x06大同\x06弘仁\x06天長\x06承和" + + "\x06嘉祥\x06仁寿\x06斉衡\x06天安\x06貞観\x06元慶\x06仁和\x06寛平\x06昌泰\x06延喜\x06延長\x06承平" + + "\x06天慶\x06天暦\x06天徳\x06応和\x06康保\x06安和\x06天禄\x06天延\x06貞元\x06天元\x06永観\x06寛和" + + "\x06永延\x06永祚\x06正暦\x06長徳\x06長保\x06寛弘\x06長和\x06寛仁\x06治安\x06万寿\x06長元\x06長暦" + + "\x06長久\x06寛徳\x06永承\x06天喜\x06康平\x06治暦\x06延久\x06承保\x06承暦\x06永保\x06応徳\x06寛治" + + "\x06嘉保\x06永長\x06承徳\x06康和\x06長治\x06嘉承\x06天仁\x06天永\x06永久\x06元永\x06保安\x06天治" + + "\x06大治\x06天承\x06長承\x06保延\x06永治\x06康治\x06天養\x06久安\x06仁平\x06久寿\x06保元\x06平治" + + "\x06永暦\x06応保\x06長寛\x06永万\x06仁安\x06嘉応\x06承安\x06安元\x06治承\x06養和\x06寿永\x06元暦" + + "\x06文治\x06建久\x06正治\x06建仁\x06元久\x06建永\x06承元\x06建暦\x06建保\x06承久\x06貞応\x06元仁" + + "\x06嘉禄\x06安貞\x06寛喜\x06貞永\x06天福\x06文暦\x06嘉禎\x06暦仁\x06延応\x06仁治\x06寛元\x06宝治" + + "\x06建長\x06康元\x06正嘉\x06正元\x06文応\x06弘長\x06文永\x06建治\x06弘安\x06正応\x06永仁\x06正安" + + "\x06乾元\x06嘉元\x06徳治\x06延慶\x06応長\x06正和\x06文保\x06元応\x06元亨\x06正中\x06嘉暦\x06元徳" + + "\x06元弘\x06建武\x06延元\x06興国\x06正平\x06建徳\x06文中\x06天授\x06康暦\x06弘和\x06元中\x06至徳" + + "\x06嘉慶\x06康応\x06明徳\x06応永\x06正長\x06永享\x06嘉吉\x06文安\x06宝徳\x06享徳\x06康正\x06長禄" + + "\x06寛正\x06文正\x06応仁\x06文明\x06長享\x06延徳\x06明応\x06文亀\x06永正\x06大永\x06享禄\x06天文" + + "\x06弘治\x06永禄\x06元亀\x06天正\x06文禄\x06慶長\x06元和\x06寛永\x06正保\x06慶安\x06承応\x06明暦" + + "\x06万治\x06寛文\x06延宝\x06天和\x06貞享\x06元禄\x06宝永\x06正徳\x06享保\x06元文\x06寛保\x06延享" + + "\x06寛延\x06宝暦\x06明和\x06安永\x06天明\x06寛政\x06享和\x06文化\x06文政\x06天保\x06弘化\x06嘉永" + + "\x06安政\x06万延\x06文久\x06元治\x06慶応\x06明治\x06大正\x06昭和\x06平成\x01M\x01T\x01S" + + "\x01H\x0aGGGGGy/M/d\x1eファルヴァルディーン\x1eオルディーベヘシュト\x0fホルダード\x0cティール\x0fモルダー" + + "ド\x18シャハリーヴァル\x09メフル\x0fアーバーン\x0cアーザル\x06デイ\x0cバフマン\x12エスファンド\x09民国前" + + "\x06民国\x06時代\x03年\x06昨年\x06今年\x06翌年\x0a{0} 年後\x0a{0} 年前\x09{0}年後\x09{0}年" + + "前\x09四半期\x0c前四半期\x0c今四半期\x0c翌四半期\x10{0} 四半期後\x10{0} 四半期前\x0f{0}四半期後" + + "\x0f{0}四半期前\x06先月\x06今月\x06翌月\x0d{0} か月後\x0d{0} か月前\x0c{0}か月後\x0c{0}か月前" + + "\x03週\x06先週\x06今週\x06翌週\x0d{0} 週間後\x0d{0} 週間前\x0d{0} 日の週\x0c{0}週間後\x0c{0" + + "}週間前\x0c{0}日の週\x09一昨日\x06昨日\x06今日\x06明日\x09明後日\x0a{0} 日後\x0a{0} 日前\x09{0" + + "}日後\x09{0}日前\x06曜日\x12先週の日曜日\x12今週の日曜日\x12来週の日曜日\x16{0} 個後の日曜日\x16{0} 個前" + + "の日曜日\x0f先週の日曜\x0f今週の日曜\x0f来週の日曜\x13{0} 個後の日曜\x13{0} 個前の日曜\x12{0}個後の日曜" + + "\x12{0}個前の日曜\x12先週の月曜日\x12今週の月曜日\x12来週の月曜日\x16{0} 個後の月曜日\x16{0} 個前の月曜日" + + "\x0f先週の月曜\x0f今週の月曜\x0f来週の月曜\x13{0} 個後の月曜\x13{0} 個前の月曜\x12{0}個後の月曜\x12{0}" + + "個前の月曜\x12先週の火曜日\x12今週の火曜日\x12来週の火曜日\x16{0} 個後の火曜日\x16{0} 個前の火曜日\x0f先週の" + + "火曜\x0f今週の火曜\x0f来週の火曜\x13{0} 個後の火曜\x13{0} 個前の火曜\x12{0}個後の火曜\x12{0}個前の火曜" + + "\x12先週の水曜日\x12今週の水曜日\x12来週の水曜日\x16{0} 個後の水曜日\x16{0} 個前の水曜日\x0f先週の水曜\x0f今" + + "週の水曜\x0f来週の水曜\x13{0} 個後の水曜\x13{0} 個前の水曜\x12{0}個後の水曜\x12{0}個前の水曜\x12先週の" + + "木曜日\x12今週の木曜日\x12来週の木曜日\x16{0} 個後の木曜日\x16{0} 個前の木曜日\x0f先週の木曜\x0f今週の木曜" + + "\x0f来週の木曜\x13{0} 個後の木曜\x13{0} 個前の木曜\x12{0}個後の木曜\x12{0}個前の木曜\x12先週の金曜日" + + "\x12今週の金曜日\x12来週の金曜日\x16{0} 個後の金曜日\x16{0} 個前の金曜日\x0f先週の金曜\x0f今週の金曜\x0f来週" + + "の金曜\x13{0} 個後の金曜\x13{0} 個前の金曜\x12{0}個後の金曜\x12{0}個前の金曜\x12先週の土曜日\x12今週の" + + "土曜日\x12来週の土曜日\x16{0} 個後の土曜日\x16{0} 個前の土曜日\x0f先週の土曜\x0f今週の土曜\x0f来週の土曜" + + "\x13{0} 個後の土曜\x13{0} 個前の土曜\x12{0}個後の土曜\x12{0}個前の土曜\x0d午前/午後\x03時\x0e1 時間" + + "以内\x0d{0} 時間後\x0d{0} 時間前\x0c{0}時間後\x0c{0}時間前\x03分\x0b1 分以内\x0a{0} 分後" + + "\x0a{0} 分前\x09{0}分後\x09{0}分前\x03秒\x03今\x0a{0} 秒後\x0a{0} 秒前\x09{0}秒後\x09{" + + "0}秒前\x12タイムゾーン\x09{0}時間\x0c{0}夏時間\x0c{0}標準時\x0f協定世界時\x0f英国夏時間\x1bアイルランド標" + + "準時\x0fアクレ時間\x12アクレ標準時\x12アクレ夏時間\x1bアフガニスタン時間\x18中央アフリカ時間\x15東アフリカ時間" + + "\x18南アフリカ標準時\x15西アフリカ時間\x18西アフリカ標準時\x18西アフリカ夏時間\x12アラスカ時間\x15アラスカ標準時\x15" + + "アラスカ夏時間\x15アルトマイ時間\x18アルトマイ標準時\x18アルマトイ夏時間\x12アマゾン時間\x15アマゾン標準時\x15アマゾ" + + "ン夏時間\x18アメリカ中部時間\x1bアメリカ中部標準時\x1bアメリカ中部夏時間\x18アメリカ東部時間\x1bアメリカ東部標準時" + + "\x1bアメリカ東部夏時間\x18アメリカ山地時間\x1bアメリカ山地標準時\x1bアメリカ山地夏時間\x1bアメリカ太平洋時間\x1eアメリカ" + + "太平洋標準時\x1eアメリカ太平洋夏時間\x15アナディリ時間\x18アナディリ標準時\x18アナディリ夏時間\x0fアピア時間\x12アピ" + + "ア標準時\x12アピア夏時間\x12アクタウ時間\x15アクタウ標準時\x15アクタウ夏時間\x12アクトベ時間\x15アクトベ標準時" + + "\x15アクトベ夏時間\x12アラビア時間\x15アラビア標準時\x15アラビア夏時間\x18アルゼンチン時間\x1bアルゼンチン標準時\x1b" + + "アルゼンチン夏時間\x1e西部アルゼンチン時間!西部アルゼンチン標準時!西部アルゼンチン夏時間\x15アルメニア時間\x18アルメニア標準時" + + "\x18アルメニア夏時間\x0f大西洋時間\x12大西洋標準時\x12大西洋夏時間!オーストラリア中部時間$オーストラリア中部標準時$オーストラ" + + "リア中部夏時間$オーストラリア中西部時間'オーストラリア中西部標準時'オーストラリア中西部夏時間!オーストラリア東部時間$オーストラリア東部" + + "標準時$オーストラリア東部夏時間!オーストラリア西部時間$オーストラリア西部標準時$オーストラリア西部夏時間\x1eアゼルバイジャン時間!ア" + + "ゼルバイジャン標準時!アゼルバイジャン夏時間\x12アゾレス時間\x15アゾレス標準時\x15アゾレス夏時間\x1bバングラデシュ時間" + + "\x1eバングラデシュ標準時\x1eバングラデシュ夏時間\x12ブータン時間\x12ボリビア時間\x15ブラジリア時間\x18ブラジリア標準時" + + "\x18ブラジリア夏時間'ブルネイ・ダルサラーム時間\x18カーボベルデ時間\x1bカーボベルデ標準時\x1bカーボベルデ夏時間\x18ケイシー" + + "基地時間\x12チャモロ時間\x12チャタム時間\x15チャタム標準時\x15チャタム夏時間\x0cチリ時間\x0fチリ標準時\x0fチリ夏" + + "時間\x0c中国時間\x0f中国標準時\x0f中国夏時間\x1bチョイバルサン時間\x1eチョイバルサン標準時\x1eチョイバルサン夏時間" + + "\x18クリスマス島時間\x15ココス諸島時間\x15コロンビア時間\x18コロンビア標準時\x18コロンビア夏時間\x15クック諸島時間" + + "\x18クック諸島標準時\x18クック諸島夏時間\x12キューバ時間\x15キューバ標準時\x15キューバ夏時間\x18デービス基地時間-デュモ" + + "ン・デュルヴィル基地時間\x18東ティモール時間\x18イースター島時間\x1bイースター島標準時\x1bイースター島夏時間\x15エクアド" + + "ル時間\x1b中央ヨーロッパ時間\x1e中央ヨーロッパ標準時\x1e中央ヨーロッパ夏時間\x18東ヨーロッパ時間\x1b東ヨーロッパ標準時" + + "\x1b東ヨーロッパ夏時間\x1b極東ヨーロッパ時間\x18西ヨーロッパ時間\x1b西ヨーロッパ標準時\x1b西ヨーロッパ夏時間!フォークランド" + + "諸島時間$フォークランド諸島標準時$フォークランド諸島夏時間\x12フィジー時間\x15フィジー標準時\x15フィジー夏時間\x15仏領ギア" + + "ナ時間\x18仏領南方南極時間\x15ガラパゴス時間\x18ガンビエ諸島時間\x15ジョージア時間\x18ジョージア標準時\x18ジョージア" + + "夏時間\x1bギルバート諸島時間\x18グリニッジ標準時!グリーンランド東部時間$グリーンランド東部標準時$グリーンランド東部夏時間!グリー" + + "ンランド西部時間$グリーンランド西部標準時$グリーンランド西部夏時間\x0fグアム時間\x0f湾岸標準時\x12ガイアナ時間'ハワイ・アリュ" + + "ーシャン時間*ハワイ・アリューシャン標準時*ハワイ・アリューシャン夏時間\x0c香港時間\x0f香港標準時\x0f香港夏時間\x0fホブド時" + + "間\x12ホブド標準時\x12ホブド夏時間\x12インド標準時\x12インド洋時間\x15インドシナ時間\x1eインドネシア中部時間\x1e" + + "インドネシア東部時間\x1eインドネシア西部時間\x0fイラン時間\x12イラン標準時\x12イラン夏時間\x18イルクーツク時間\x1bイ" + + "ルクーツク標準時\x1bイルクーツク夏時間\x15イスラエル時間\x18イスラエル標準時\x18イスラエル夏時間\x0c日本時間\x0f日本" + + "標準時\x0f日本夏時間9ペトロパブロフスク・カムチャツキー時間<ペトロパブロフスク・カムチャツキー標準時<ペトロパブロフスク・カムチャツキ" + + "ー夏時間\x1b東カザフスタン時間\x1b西カザフスタン時間\x0c韓国時間\x0f韓国標準時\x0f韓国夏時間\x12コスラエ時間\x1e" + + "クラスノヤルスク時間!クラスノヤルスク標準時!クラスノヤルスク夏時間\x18キルギスタン時間\x0fランカ時間\x15ライン諸島時間\x15" + + "ロードハウ時間\x18ロードハウ標準時\x18ロードハウ夏時間\x0fマカオ時間\x12マカオ標準時\x12マカオ夏時間\x1bマッコーリー" + + "島時間\x12マガダン時間\x15マガダン標準時\x15マガダン夏時間\x15マレーシア時間\x15モルディブ時間\x15マルキーズ時間" + + "\x1bマーシャル諸島時間\x18モーリシャス時間\x1bモーリシャス標準時\x1bモーリシャス夏時間\x18モーソン基地時間\x1bメキシコ北" + + "西部時間\x1eメキシコ北西部標準時\x1eメキシコ北西部夏時間\x1bメキシコ太平洋時間\x1eメキシコ太平洋標準時\x1eメキシコ太平洋" + + "夏時間\x1bウランバートル時間\x1eウランバートル標準時\x1eウランバートル夏時間\x12モスクワ時間\x15モスクワ標準時\x15モ" + + "スクワ夏時間\x15ミャンマー時間\x0fナウル時間\x12ネパール時間\x1eニューカレドニア時間!ニューカレドニア標準時!ニューカレドニ" + + "ア夏時間\x1eニュージーランド時間!ニュージーランド標準時!ニュージーランド夏時間$ニューファンドランド時間'ニューファンドランド標準時'" + + "ニューファンドランド夏時間\x0fニウエ時間\x1bノーフォーク島時間0フェルナンド・デ・ノローニャ時間3フェルナンド・デ・ノローニャ標準時" + + "3フェルナンド・デ・ノローニャ夏時間\x1b北マリアナ諸島時間\x1eノヴォシビルスク時間!ノヴォシビルスク標準時!ノヴォシビルスク夏時間" + + "\x12オムスク時間\x15オムスク標準時\x15オムスク夏時間\x15パキスタン時間\x18パキスタン標準時\x18パキスタン夏時間\x0fパ" + + "ラオ時間!パプアニューギニア時間\x15パラグアイ時間\x18パラグアイ標準時\x18パラグアイ夏時間\x0fペルー時間\x12ペルー標準時" + + "\x12ペルー夏時間\x15フィリピン時間\x18フィリピン標準時\x18フィリピン夏時間\x1eフェニックス諸島時間'サンピエール・ミクロン時" + + "間*サンピエール・ミクロン標準時*サンピエール・ミクロン夏時間\x15ピトケアン時間\x0fポナペ時間\x0c平壌時間\x15クズロルダ時間" + + "\x18クズロルダ標準時\x18クズロルダ夏時間\x15レユニオン時間\x15ロゼラ基地時間\x12サハリン時間\x15サハリン標準時\x15サ" + + "ハリン夏時間\x0fサマラ時間\x12サマラ標準時\x12サマラ夏時間\x0fサモア時間\x12サモア標準時\x12サモア夏時間\x15セー" + + "シェル時間\x1bシンガポール標準時\x18ソロモン諸島時間\x1eサウスジョージア時間\x12スリナム時間\x12昭和基地時間\x0fタヒ" + + "チ時間\x0c台北時間\x0f台北標準時\x0f台北夏時間\x18タジキスタン時間\x12トケラウ時間\x0fトンガ時間\x12トンガ標準時" + + "\x12トンガ夏時間\x12チューク時間\x1eトルクメニスタン時間!トルクメニスタン標準時!トルクメニスタン夏時間\x0fツバル時間\x15ウ" + + "ルグアイ時間\x18ウルグアイ標準時\x18ウルグアイ夏時間\x1bウズベキスタン時間\x1eウズベキスタン標準時\x1eウズベキスタン夏時" + + "間\x12バヌアツ時間\x15バヌアツ標準時\x15バヌアツ夏時間\x15ベネズエラ時間\x1bウラジオストク時間\x1eウラジオストク標準" + + "時\x1eウラジオストク夏時間\x1bボルゴグラード時間\x1eボルゴグラード標準時\x1eボルゴグラード夏時間\x1bボストーク基地時間" + + "\x15ウェーク島時間\x1eウォリス・フツナ時間\x15ヤクーツク時間\x18ヤクーツク標準時\x18ヤクーツク夏時間\x1eエカテリンブルグ" + + "時間!エカテリンブルグ標準時!エカテリンブルグ夏時間\x01T\x01L\x01S\x06冬月\x06臘月\x03冬\x03臘\x06驚蟄" + + "\x06小滿\x06處暑\x03兔\x03龍\x03猴\x03雞\x03狗\x03豬\x0513月\x03一\x06白鳳\x06大寶\x06靈龜" + + "\x06神龜\x0c天平感寶\x0c天平勝寶\x0c天平寶字\x06寶龜\x06天應\x06延曆\x06仁壽\x06齊衡\x06貞觀\x06寬平" + + "\x06天曆\x06天德\x06應和\x06天祿\x06永觀\x06寬和\x06正曆\x06長德\x06寬弘\x06寬仁\x06萬壽\x06長曆" + + "\x06寬德\x06治曆\x06承曆\x06應德\x06寬治\x06承德\x06久壽\x06永曆\x06應保\x06長寬\x06永萬\x06嘉應" + + "\x06壽永\x06元曆\x06建曆\x06貞應\x06嘉祿\x06寬喜\x06文曆\x06曆仁\x06延應\x06寬元\x06寶治\x06文應" + + "\x06正應\x06德治\x06應長\x06元應\x06嘉曆\x06元德\x06興國\x06建德\x06康曆\x06至德\x06康應\x06明德" + + "\x06應永\x06寶德\x06享德\x06長祿\x06寬正\x06應仁\x06延德\x06明應\x06文龜\x06享祿\x06永祿\x06元龜" + + "\x06文祿\x06寬永\x06承應\x06明曆\x06萬治\x06寬文\x06延寶\x06元祿\x06寶永\x06正德\x06寬保\x06寬延" + + "\x06寶曆\x06寬政\x06萬延\x06慶應\x08{0} (+1)\x08{0} (+0)\x06腊月\x03腊\x06惊蛰\x06谷雨" + + "\x06小满\x06芒种\x06处暑\x03龙\x03马\x03鸡\x07闰7月\x06二月\x06三月\x06四月\x06五月\x06六月" + + "\x06七月\x06八月\x06九月\x06十月\x09十一月\x09十二月\x06明治\x06大正\x06昭和\x06平成" + +var bucket54 string = "" + // Size: 26636 bytes + "\x03JST\x03JDT\x0dNduŋmbi Saŋ\x10Pɛsaŋ Pɛ́pá\x11Pɛsaŋ Pɛ́tát\x15Pɛsaŋ Pɛ" + + "́nɛ́kwa\x0dPɛsaŋ Pataa\x19Pɛsaŋ Pɛ́nɛ́ntúkú\x0fPɛsaŋ Saambá\x16Pɛsaŋ Pɛ" + + "́nɛ́fɔm\x1bPɛsaŋ Pɛ́nɛ́pfúꞋú\x11Pɛsaŋ Nɛgɛ́m\x15Pɛsaŋ Ntsɔ̌pmɔ́\x13Pɛsa" + + "ŋ Ntsɔ̌ppá\x08Sɔ́ndi\x08Mɔ́ndi\x0eÁpta Mɔ́ndi\x0eWɛ́nɛsɛdɛ\x0bTɔ́sɛdɛ" + + "\x0cFɛlâyɛdɛ\x08Sásidɛ\x05Sɔ́\x05Mɔ́\x03ÁM\x05Wɛ́\x05Tɔ́\x03Fɛ\x03Sá\x0c" + + "mbaꞌmbaꞌ\x10ŋka mbɔ́t nji>tsɛttsɛt mɛŋguꞌ mi ɛ́ lɛɛnɛ Kɛlísɛtɔ gɔ ńɔ́=ts" + + "ɛttsɛt mɛŋguꞌ mi ɛ́ fúnɛ Kɛlísɛtɔ tɔ́ mɔ́\x10Nǔu ŋguꞋ {0}\x1bƐ́gɛ́ mɔ́ " + + "ŋguꞋ {0}\x0dNǔu {0} saŋ\x1cɛ́ gɛ́ mɔ́ pɛsaŋ {0}\x12Nǔu ŋgap-mbi {0}\x1c" + + "Ɛ́ gɛ́ mɔ {0} ŋgap-mbi\x11Nǔu lɛ́Ꞌ {0}\x1dƐ́ gɛ́ mɔ́ lɛ́Ꞌ {0}\x0enǔu há" + + "wa {0}\x18ɛ́ gɛ mɔ́ {0} háwa\x0fnǔu {0} minút\x1bɛ́ gɛ́ mɔ́ minút {0}" + + "\x09Jumapilyi\x09Jumatatuu\x07Jumanne\x08Jumatanu\x08Alhamisi\x06Ijumaa" + + "\x08Jumamosi\x05utuko\x09kyiukonyi\x0fKabla ya Kristu\x0fBaada ya Kristu" + + "\x05Kacha\x04Maka\x06Wiikyi\x05Mfiri\x04Ukou\x03Inu\x05Ngama\x0cMfiri o " + + "siku\x07Dakyika\x0bMfiri o saa\x12EEEE, dd MMMM, y G\x09იან\x09თებ\x09მა" + + "რ\x09აპრ\x09მაი\x09ივნ\x09ივლ\x09აგვ\x09სექ\x09ოქტ\x09ნოე\x09დეკ\x03ი" + + "\x03თ\x03მ\x03ა\x03ს\x03ო\x03ნ\x03დ\x15იანვარი\x1bთებერვალი\x0fმარტი\x12" + + "აპრილი\x0fმაისი\x12ივნისი\x12ივლისი\x15აგვისტო\x1eსექტემბერი\x1bოქტომბ" + + "ერი\x18ნოემბერი\x1bდეკემბერი\x09კვი\x09ორშ\x09სამ\x09ოთხ\x09ხუთ\x09პარ" + + "\x09შაბ\x03კ\x03ხ\x03პ\x03შ\x06კვ\x06ორ\x06სმ\x06ოთ\x06ხთ\x06პრ\x06შბ" + + "\x0fკვირა\x18ორშაბათი\x1bსამშაბათი\x1bოთხშაბათი\x1bხუთშაბათი\x1bპარასკევ" + + "ი\x12შაბათი\x09I კვ.\x0aII კვ.\x0bIII კვ.\x0aIV კვ.\x1aI კვარტალი\x1bI" + + "I კვარტალი\x1cIII კვარტალი\x1bIV კვარტალი\x18შუაღამეს\x10შუადღ.\x0aდილ." + + "\x16ნაშუადღ.\x0aსაღ.\x0aღამ.\x15შუადღეს\x0fდილით\x1eნაშუადღევს\x15საღამო" + + "ს\x0fღამით\x15შუაღამე\x12შუადღე\x0cდილა\x1eნაშუადღევი\x12საღამო\x0cღამ" + + "ე#შუადღ. შემდეგ7ძველი წელთაღრიცხვით\x22ჩვენს ერამდე7ახალი წელთაღრიცხვი" + + "თ\x19ჩვენი ერა\x0cძვ. წ.\x1aჩვ. ერამდე\x0cახ. წ.\x11ჩვ. ერა\x10EEEE, d" + + "d MMMM, y\x08d MMM. y\x12თიშრეი\x15ხეშვანი\x15ქისლევი\x12ტევეთი\x0fშვატი" + + "\x11ადარი I\x0fადარი\x12ადარი II\x12ნისანი\x0cიარი\x12სივანი\x12თამუზი" + + "\x09ავი\x0fელული\x0aმუჰ.\x0aსაფ.\x0cრაბ. I\x0dრაბ. II\x0cჯუმ. I\x0dჯუმ. " + + "II\x0aრაჯ.\x0aშაბ.\x0aრამ.\x0aშავ.\x0eზულ-კ.\x0eზულ-ჰ.\x18მუჰარამი\x12სა" + + "ფარი#რაბი ულ-ავალი#რაბი ულ-ახირი)ჯუმადა ულ-ავალი)ჯუმადა ულ-ახირი\x12რა" + + "ჯაბი\x12შაბანი\x18რამადანი\x12შავალი\x19ზულ-კაადა\x16ზულ-ჰიჯა\x1eფარვა" + + "რდინი!ორდიბეჰეშთი\x15ხორდადი\x0cთირი\x15მორდადი\x1bშაჰრივარი\x0fმეჰრი" + + "\x0fაბანი\x0fაზარი\x09დეი\x15ბაჰმანი\x15ესფანდი\x0fეპოქა\x0cწელი\x1cგასუ" + + "ლ წელს\x13ამ წელს\x22მომავალ წელს\x1f{0} წელიწადში\x1a{0} წლის წინ\x04" + + "წ.\x13{0} წელში\x18კვარტალი+გასულ კვარტალში\x22ამ კვარტალში.შემდეგ კვა" + + "რტალში\x1f{0} კვარტალში){0} კვარტალის წინ\x10კვარტ.\x1e{0} კვარტ. წინ" + + "\x09თვე\x1cგასულ თვეს\x16ამ თვეში\x22მომავალ თვეს\x13{0} თვეში\x1a{0} თვ" + + "ის წინ%გასულ კვირაში\x1cამ კვირაში+მომავალ კვირაში\x19{0} კვირაში {0} " + + "კვირის წინ {0}-ის კვირაში\x07კვ.\x15{0} კვ. წინ\x09დღე\x18გუშინწინ\x0f" + + "გუშინ\x0cდღეს\x0cხვალ\x09ზეგ\x13{0} დღეში\x1a{0} დღის წინ\x1cკვირის დღ" + + "ე\x22გასულ კვირას\x19ამ კვირას(მომავალ კვირას\x1d{0} კვირი წინ(გასულ ო" + + "რშაბათს\x1fამ ორშაბათს.მომავალ ორშაბათს\x1f{0} ორშაბათში){0} ორშაბათის" + + " წინ\x17წინა ორშ.\x11ამ ორშ.\x15მომ. ორშ.\x12გას. ორ.\x0eამ ორ.\x12მომ. " + + "ორ.+გასულ სამშაბათს\x22ამ სამშაბათს1მომავალ სამშაბათს\x22{0} სამშაბათშ" + + "ი,{0} სამშაბათის წინ\x17წინა სამ.\x11ამ სამ.\x15მომ. სამ.\x11წინ სა." + + "\x0eამ სა.\x14მომმ სა.+გასულ ოთხშაბათს\x22ამ ოთხშაბათს1მომავალ ოთხშაბათს" + + "\x22{0} ოთხშაბათში,{0} ოთხშაბათის წინ\x17წინა ოთხ.\x11ამ ოთხ.\x15მომ. ოთ" + + "ხ.\x14წინა ოთ.\x0eამ ოთ.\x12მომ. ოთ.+გასულ ხუთშაბათს\x22ამ ხუთშაბათს1მ" + + "ომავალ ხუთშაბათს\x22{0} ხუთშაბათში,{0} ხუთშაბათის წინ\x17წინა ხუთ.\x11" + + "ამ ხუთ.\x15მომ. ხუთ.\x14წინა ხთ.\x0eამ ხთ.\x12მომ. ხთ.+გასულ პარასკევს" + + "\x22ამ პარასკევს1მომავალ პარასკევს\x22{0} პარასკევში,{0} პარასკევის წინ" + + "\x17წინა პარ.\x11ამ პარ.\x15მომ. პარ.\x14წინა პა.\x0eამ პა.\x12მომ. პა." + + "\x22გასულ შაბათს\x19ამ შაბათს(მომავალ შაბათს\x19{0} შაბათში#{0} შაბათის " + + "წინ\x17წინა შაბ.\x11ამ შაბ.\x15მომ. შაბ.\x14წინა შბ.\x0eამ შა.\x12მომ." + + " შბ.%დღის ნახევარი\x0fსაათი\x19ამ საათში\x16{0} საათში {0} საათის წინ" + + "\x07სთ.\x14{0} სთ წინ\x0cწუთი\x16ამ წუთში\x13{0} წუთში\x1d{0} წუთის წინ" + + "\x07წთ.\x14{0} წთ წინ\x0cწამი\x0cახლა\x13{0} წამში\x1d{0} წამის წინ\x07წ" + + "მ.\x14{0} წმ წინ(დროის სარტყელი\x0eდრო: {0}&{0} ზაფხულის დრო/{0} სტანდ" + + "არტული დროJმსოფლიო კოორდინირებული დროAბრიტანეთის ზაფხულის დროGირლანდიი" + + "ს სტანდარტული დრო%ავღანეთის დრო>ცენტრალური აფრიკის დრო>აღმოსავლეთ აფრი" + + "კის დრო5სამხრეთ აფრიკის დრო8დასავლეთ აფრიკის დროZდასავლეთ აფრიკის სტან" + + "დარტული დროQდასავლეთ აფრიკის ზაფხულის დრო\x1fალასკის დროAალასკის სტანდ" + + "არტული დრო8ალასკის ზაფხულის დრო%ამაზონიის დროGამაზონიის სტანდარტული დრ" + + "ო>ამაზონიის ზაფხულის დროZჩრდილოეთ ამერიკის ცენტრალური დრო|ჩრდილოეთ ამე" + + "რიკის ცენტრალური სტანდარტული დროsჩრდილოეთ ამერიკის ცენტრალური ზაფხულის" + + " დრო`ჩრდილოეთ ამერიკის აღმოსავლეთის დრო\x82ჩრდილოეთ ამერიკის აღმოსავლეთი" + + "ს სტანდარტული დროyჩრდილოეთ ამერიკის აღმოსავლეთის ზაფხულის დროWჩრდილოეთ" + + " ამერიკის მაუნთინის დროyჩრდილოეთ ამერიკის მაუნთინის სტანდარტული დროpჩრდი" + + "ლოეთ ამერიკის მაუნთინის ზაფხულის დროdჩრდილოეთ ამერიკის წყნარი ოკეანის " + + "დრო\x86ჩრდილოეთ ამერიკის წყნარი ოკეანის სტანდარტული დრო}ჩრდილოეთ ამერი" + + "კის წყნარი ოკეანის ზაფხულის დრო\x19აპიას დრო;აპიას სტანდარტული დრო2აპი" + + "ას ზაფხულის დრო\x22არაბეთის დროDარაბეთის სტანდარტული დრო;არაბეთის ზაფხ" + + "ულის დრო(არგენტინის დროJარგენტინის სტანდარტული დროAარგენტინის ზაფხულის" + + " დროAდასავლეთ არგენტინის დროcდასავლეთ არგენტინის სტანდარტული დროZდასავლე" + + "თ არგენტინის ზაფხულის დრო\x22სომხეთის დროDსომხეთის სტანდარტული დრო;სომ" + + "ხეთის ზაფხულის დრო>ატლანტიკის ოკეანის დრო`ატლანტიკის ოკეანის სტანდარტუ" + + "ლი დროWატლანტიკის ოკეანის ზაფხულის დროGცენტრალური ავსტრალიის დროiავსტრ" + + "ალიის ცენტრალური სტანდარტული დრო`ავსტრალიის ცენტრალური ზაფხულის დროgცე" + + "ნტრალური და დასავლეთ ავსტრალიის დრო\x89ცენტრალური და დასავლეთ ავსტრალი" + + "ის სტანდარტული დრო\x80ცენტრალური და დასავლეთ ავსტრალიის ზაფხულის დროGა" + + "ღმოსავლეთ ავსტრალიის დროiაღმოსავლეთ ავსტრალიის სტანდარტული დრო`აღმოსავ" + + "ლეთ ავსტრალიის ზაფხულის დროAდასავლეთ ავსტრალიის დროcდასავლეთ ავსტრალიი" + + "ს სტანდარტული დროZდასავლეთ ავსტრალიის ზაფხულის დრო.აზერბაიჯანის დროPაზ" + + "ერბაიჯანის სტანდარტული დროGაზერბაიჯანის ზაფხულის დრო;აზორის კუნძულების" + + " დრო]აზორის კუნძულების სტანდარტული დროTაზორის კუნძულების ზაფხულის დრო+ბა" + + "ნგლადეშის დროMბანგლადეშის სტანდარტული დროDბანგლადეშის ზაფხულის დრო\x1f" + + "ბუტანის დრო\x22ბოლივიის დრო%ბრაზილიის დროGბრაზილიის სტანდარტული დრო>ბრ" + + "აზილიის ზაფხულის დრო>ბრუნეი-დარუსალამის დრო)კაბო-ვერდეს დროKკაბო-ვერდე" + + "ს სტანდარტული დროBკაბო-ვერდეს ზაფხულის დრო\x1fჩამოროს დრო\x1fჩატემის დ" + + "როAჩატემის სტანდარტული დრო8ჩატემის ზაფხულის დრო\x19ჩილეს დრო;ჩილეს სტა" + + "ნდარტული დრო2ჩილეს ზაფხულის დრო\x1fჩინეთის დროAჩინეთის სტანდარტული დრო" + + ">ჩინეთის დროის სარტყელი+ჩოიბალსანის დროMჩოიბალსანის სტანდარტული დროDჩოიბ" + + "ალსანის ზაფხულის დრო2შობის კუნძულის დრო>ქოქოსის კუნძულების დრო%კოლუმბი" + + "ის დროGკოლუმბიის სტანდარტული დრო>კოლუმბიის ზაფხულის დრო8კუკის კუნძულებ" + + "ის დროZკუკის კუნძულების სტანდარტული დროjკუკის კუნძულების ნახევრად ზაფხ" + + "ულის დრო\x19კუბის დრო;კუბის სტანდარტული დრო2კუბის ზაფხულის დრო\x1fდევი" + + "სის დრო2დუმონ-დურვილის დრო>აღმოსავლეთ ტიმორის დრო;აღდგომის კუნძულის დრ" + + "ო]აღდგომის კუნძულის სტანდარტული დროTაღდგომის კუნძულის ზაფხულის დრო%ეკვ" + + "ადორის დრო>ცენტრალური ევროპის დრო`ცენტრალური ევროპის სტანდარტული დროWც" + + "ენტრალური ევროპის ზაფხულის დრო>აღმოსავლეთ ევროპის დრო`აღმოსავლეთ ევროპ" + + "ის სტანდარტული დროWაღმოსავლეთ ევროპის ზაფხულის დროTშორეული აღმოსავლეთ " + + "ევროპის დრო8დასავლეთ ევროპის დროZდასავლეთ ევროპის სტანდარტული დროQდასა" + + "ვლეთ ევროპის ზაფხულის დროGფოლკლენდის კუნძულების დროiფოლკლენდის კუნძულე" + + "ბის სტანდარტული დრო`ფოლკლენდის კუნძულების ზაფხულის დრო\x19ფიჯის დრო;ფი" + + "ჯის სტანდარტული დრო2ფიჯის ზაფხულის დროAსაფრანგეთის გვიანის დროgფრანგულ" + + "ი სამხრეთის და ანტარქტიკის დრო+გალაპაგოსის დრო%გამბიერის დრო+საქართველ" + + "ოს დროMსაქართველოს სტანდარტული დროDსაქართველოს ზაფხულის დროDგილბერტის " + + "კუნძულების დრო;გრინვიჩის საშუალო დროJაღმოსავლეთ გრენლანდიის დროlაღმოსა" + + "ვლეთ გრენლანდიის სტანდარტული დროcაღმოსავლეთ გრენლანდიის ზაფხულის დროDდ" + + "ასავლეთ გრენლანდიის დროfდასავლეთ გრენლანდიის სტანდარტული დრო]დასავლეთ " + + "გრენლანდიის ზაფხულის დროWსპარსეთის ყურის სტანდარტული დრო\x1fგაიანის დრ" + + "ო<ჰავაისა და ალეუტის დრო^ჰავაისა და ალეუტის სტანდარტული დროUჰავაისა და" + + " ალეუტის ზაფხულის დრო%ჰონკონგის დროGჰონკონგის სტანდარტული დრო>ჰონკონგის " + + "ზაფხულის დრო\x1cჰოვდის დრო>ჰოვდის სტანდარტული დრო5ჰოვდის ზაფხულის დრო" + + "\x22ინდოეთის დროWინდოეთის ოკეანის კუნძულების დრო+ინდოჩინეთის დროGცენტრალ" + + "ური ინდონეზიის დროGაღმოსავლეთ ინდონეზიის დროAდასავლეთ ინდონეზიის დრო" + + "\x1cირანის დრო>ირანის სტანდარტული დრო;ირანის დროის სარტყელი%ირკუტსკის დრ" + + "ოGირკუტსკის სტანდარტული დრო>ირკუტსკის ზაფხულის დრო\x22ისრაელის დროDისრ" + + "აელის სტანდარტული დრო;ისრაელის ზაფხულის დრო\x22იაპონიის დროDიაპონიის ს" + + "ტანდარტული დრო;იაპონიის ზაფხულის დროDაღმოსავლეთ ყაზახეთის დრო>დასავლეთ" + + " ყაზახეთის დრო\x1cკორეის დრო>კორეის სტანდარტული დრო5კორეის ზაფხულის დრო" + + "\x1cკოსრეს დრო1კრასნოიარსკის დროSკრასნოიარსკის სტანდარტული დროJკრასნოიარ" + + "სკის ზაფხულის დრო(ყირგიზეთის დრო;ლაინის კუნძულების დრო#ლორდ-ჰაუს დროEლ" + + "ორდ-ჰაუს სტანდარტული დრო<ლორდ-ჰაუს ზაფხულის დრო>მაქკუორის კუნძულის დრო" + + "%მაგადანის დროGმაგადანის სტანდარტული დრო>მაგადანის ზაფხულის დრო%მალაიზიი" + + "ს დრო(მალდივების დროAმარკიზის კუნძულების დროAმარშალის კუნძულების დრო" + + "\x22მავრიკის დროDმავრიკის სტანდარტული დრო;მავრიკის ზაფხულის დრო\x22მოუსო" + + "ნის დროTჩრდილო-აღმოსავლეთ მექსიკის დროNჩრდილო-დასავლეთ მექსიკის დროgჩრ" + + "დილო-დასავლეთ მექსიკის ზაფხულის დროKმექსიკის წყნარი ოკეანის დროmმექსიკ" + + "ის წყნარი ოკეანის სტანდარტული დროdმექსიკის წყნარი ოკეანის ზაფხულის დრო" + + ",ულან-ბატორის დროNულან-ბატორის სტანდარტული დროEულან-ბატორის ზაფხულის დრო" + + "\x22მოსკოვის დროDმოსკოვის სტანდარტული დრო;მოსკოვის ზაფხულის დრო%მიანმარი" + + "ს დრო\x1cნაურუს დრო\x1fნეპალის დრო8ახალი კალედონიის დროZახალი კალედონი" + + "ის სტანდარტული დროQახალი კალედონიის ზაფხულის დრო5ახალი ზელანდიის დროWა" + + "ხალი ზელანდიის სტანდარტული დროNახალი ზელანდიის ზაფხულის დრო4ნიუფაუნდლე" + + "ნდის დროVნიუფაუნდლენდის სტანდარტული დროMნიუფაუნდლენდის ზაფხულის დრო" + + "\x19ნიუეს დრო>ნორფოლკის კუნძულის დროBფერნანდო-დე-ნორონიას დროdფერნანდო-დ" + + "ე-ნორონიას სტანდარტული დრო[ფერნანდო-დე-ნორონიას ზაფხულის დრო1ნოვოსიბირ" + + "სკის დროSნოვოსიბირსკის სტანდარტული დროJნოვოსიბირსკის ზაფხულის დრო\x1cო" + + "მსკის დრო>ომსკის სტანდარტული დრო5ომსკის ზაფხულის დრო(პაკისტანის დროJპა" + + "კისტანის სტანდარტული დროAპაკისტანის ზაფხულის დრო\x1cპალაუს დრო?პაპუა-ა" + + "ხალი გვინეის დრო%პარაგვაის დროGპარაგვაის სტანდარტული დრო>პარაგვაის ზაფ" + + "ხულის დრო\x19პერუს დრო;პერუს სტანდარტული დრო2პერუს ზაფხულის დრო+ფილიპი" + + "ნების დროMფილიპინების სტანდარტული დროDფილიპინების ზაფხულის დროAფენიქსი" + + "ს კუნძულების დროIსენ-პიერის და მიკელონის დროkსენ-პიერის და მიკელონის ს" + + "ტანდარტული დროbსენ-პიერის და მიკელონის ზაფხულის დრო%პიტკერნის დრო\x1fპ" + + "ონაპეს დრო%ფხენიანის დრო(რეიუნიონის დრო\x1fროთერის დრო%სახალინის დროGს" + + "ახალინის სტანდარტული დრო>სახალინის ზაფხულის დრო\x1cსამოას დრო>სამოას ს" + + "ტანდარტული დრო5სამოას ზაფხულის დროAსეიშელის კუნძულების დრო(სინგაპურის " + + "დროDსოლომონის კუნძულების დრო8სამხრეთ გეორგიის დრო%სურინამის დრო\x1cსიო" + + "ვას დრო\x1cტაიტის დრო\x1fტაიბეის დროAტაიბეის სტანდარტული დრო8ტაიბეის ზ" + + "აფხულის დრო%ტაჯიკეთის დრო\x22ტოკელაუს დრო\x1cტონგის დრო>ტონგის სტანდარ" + + "ტული დრო5ტონგის ზაფხულის დრო\x1cჩუუკის დრო+თურქმენეთის დროMთურქმენეთის" + + " სტანდარტული დროDთურქმენეთის ზაფხულის დრო\x1fტუვალუს დრო\x22ურუგვაის დრო" + + "Dურუგვაის სტანდარტული დრო;ურუგვაის ზაფხულის დრო%უზბეკეთის დროGუზბეკეთის " + + "სტანდარტული დრო>უზბეკეთის ზაფხულის დრო\x22ვანუატუს დროDვანუატუს სტანდა" + + "რტული დრო;ვანუატუს ზაფხულის დრო(ვენესუელის დრო1ვლადივოსტოკის დროSვლადი" + + "ვოსტოკის სტანდარტული დროJვლადივოსტოკის ზაფხულის დრო+ვოლგოგრადის დროMვო" + + "ლგოგრადის სტანდარტული დროDვოლგოგრადის ზაფხულის დრო\x22ვოსტოკის დრო5ვეი" + + "კის კუნძულის დრო9ვოლისი და ფუტუნას დრო%იაკუტსკის დროGიაკუტსკის სტანდარ" + + "ტული დრო>იაკუტსკის ზაფხულის დრო4ეკატერინბურგის დროVეკატერინბურგის სტან" + + "დარტული დროMეკატერინბურგის ზაფხულის დრო\x07Jumanne\x08Alhamisi\x06Ijum" + + "aa\x08Jumamosi\x07Jumanne\x08Alhamisi\x06Ijumaa\x08Jumamosi" + +var bucket55 string = "" + // Size: 8385 bytes + "\x03Yen\x03Fur\x04Meɣ\x03Yeb\x03May\x03Yun\x03Yul\x04Ɣuc\x03Cte\x03Tub" + + "\x03Nun\x04Duǧ\x08Yennayer\x07Fuṛar\x07Meɣres\x06Yebrir\x05Mayyu\x05Yuny" + + "u\x05Yulyu\x05Ɣuct\x09Ctembeṛ\x07Tubeṛ\x0aNunembeṛ\x0bDuǧembeṛ\x03Yan" + + "\x03San\x06Kraḍ\x05Kuẓ\x03Sam\x06Sḍis\x03Say\x06Yanass\x06Sanass\x09Kraḍ" + + "ass\x08Kuẓass\x06Samass\x09Sḍisass\x06Sayass\x06Kḍg1\x06Kḍg2\x06Kḍg3\x06" + + "Kḍg4\x13akraḍaggur amenzu\x14akraḍaggur wis-sin\x17akraḍaggur wis-kraḍ" + + "\x16akraḍaggur wis-kuẓ\x07n tufat\x09n tmeddit\x14send talalit n Ɛisa" + + "\x14seld talalit n Ɛisa\x09snd. T.Ɛ\x09sld. T.Ɛ\x06Tallit\x07Aseggas\x05" + + "Aggur\x05Ddurt\x03Ass\x08Iḍelli\x05Ass-a\x06Azekka\x0dUssan n ddurt\x13n" + + " tufat / n tmeddit\x06Tamert\x07Tamrect\x06Tasint\x0fAseglem asergan\x0c" + + "Mwai wa mbee\x0dMwai wa kelĩ\x0fMwai wa katatũ\x0cMwai wa kana\x0eMwai w" + + "a katano\x12Mwai wa thanthatũ\x0eMwai wa muonza\x0fMwai wa nyaanya\x0dMw" + + "ai wa kenda\x0eMwai wa ĩkumi\x17Mwai wa ĩkumi na ĩmwe\x16Mwai wa ĩkumi n" + + "a ilĩ\x03Wky\x03Wkw\x03Wkl\x04Wtũ\x03Wkn\x03Wtn\x03Wth\x09Wa kyumwa\x10W" + + "a kwambĩlĩlya\x08Wa kelĩ\x0aWa katatũ\x07Wa kana\x09Wa katano\x0dWa than" + + "thatũ\x0cLovo ya mbee\x0dLovo ya kelĩ\x0fLovo ya katatũ\x0cLovo ya kana" + + "\x0aĨyakwakya\x09Ĩyawĩoo\x0dMbee wa Yesũ\x0fĨtina wa Yesũ\x02MY\x02IY" + + "\x07Ĩvinda\x04Mwai\x06Kyumwa\x05Ĩyoo\x0aŨmũnthĩ\x05Ũnĩ\x09Kyumwanĩ\x14Ĩy" + + "akwakya/Ĩyawĩoo\x08Ndatĩka\x10Kĩsio kya ĩsaa\x0cMwedi Ntandi\x0dMwedi wa" + + " Pili\x0dMwedi wa Tatu\x10Mwedi wa Nchechi\x0fMwedi wa Nnyano\x16Mwedi w" + + "a Nnyano na Umo\x19Mwedi wa Nnyano na Mivili\x19Mwedi wa Nnyano na Mitat" + + "u\x1aMwedi wa Nnyano na Nchechi\x19Mwedi wa Nnyano na Nnyano\x1eMwedi wa" + + " Nnyano na Nnyano na U\x1eMwedi wa Nnyano na Nnyano na M\x03Ll2\x03Ll3" + + "\x03Ll4\x03Ll5\x03Ll6\x03Ll7\x03Ll1\x0eLiduva lyapili\x0eLiduva lyatatu" + + "\x11Liduva lyanchechi\x10Liduva lyannyano\x19Liduva lyannyano na linji" + + "\x1aLiduva lyannyano na mavili\x0eLiduva litandi\x04Muhi\x05Chilo\x0eAka" + + "napawa Yesu\x0dNankuida Yesu\x02AY\x02NY\x06Mahiku\x05Mwedi\x06Lijuma" + + "\x06Lihiku\x04Lido\x04Nelo\x05Nundu\x11Disiku dya lijuma\x0aMuhi/Chilo" + + "\x0eNpanda wa muda\x1aEEEE, d 'di' MMMM 'di' y G\x14d 'di' MMMM 'di' y G" + + "\x06Janeru\x07Febreru\x05Marsu\x05Abril\x04Maiu\x05Junhu\x05Julhu\x06Ago" + + "stu\x08Setenbru\x06Otubru\x08Nuvenbru\x08Dizenbru\x02du\x02si\x02te\x02k" + + "u\x02ki\x02se\x02sa\x07dumingu\x0csigunda-fera\x0atersa-fera\x0bkuarta-f" + + "era\x0akinta-fera\x0asesta-fera\x06sabadu\x07sábadu\x0d1º trimestri\x0d2" + + "º trimestri\x0d3º trimestri\x0d4º trimestri\x0fAntis di Kristu\x12Antis" + + " di Era Kumun\x10Dispos di Kristu\x09Era Kumun\x03AEK\x02EK\x18EEEE, d '" + + "di' MMMM 'di' y\x12d 'di' MMMM 'di' y\x03Anu\x0aanu pasadu\x09es anu li" + + "\x0cprósimu anu\x0ddi li {0} anu\x0da ten {0} anu\x03anu\x09Trimestri" + + "\x13di li {0} trimestri\x13a ten {0} trimestri\x0fdi li {0} trim.\x0fa t" + + "en {0} trim.\x0ames pasadu\x09es mes li\x0cprósimu mes\x0ddi li {0} mes" + + "\x0da ten {0} mes\x06Simana\x0dsimana pasadu\x0ces simana li\x0fprósimu " + + "simana\x10di li {0} simana\x10a ten {0} simana\x04sim.\x0edi li {0} sim." + + "\x0ea ten {0} sim.\x04onti\x03oji\x05manha\x0ddi li {0} dia\x0da ten {0}" + + " dia\x0dDia di simana\x0edumingu pasadu\x0des dumingu li\x10prósimu dumi" + + "ngu\x0bdum. pasadu\x0aes dum. li\x0dprósimu dum.\x13sigunda-fera pasadu" + + "\x12es sigunda-fera li\x15prósimu sigunda-fera\x0bsig. pasadu\x0aes sig." + + " li\x0dprósimu sig.\x11tersa-fera pasadu\x10es tersa-fera li\x13prósimu " + + "tersa-fera\x0bter. pasadu\x0aes ter. li\x0dprósimu ter.\x12kuarta-fera p" + + "asadu\x11es kuarta-fera li\x14prósimu kuarta-fera\x0bkua. pasadu\x0aes k" + + "ua. li\x0dprósimu kua.\x11kinta-fera pasadu\x10es kinta-fera li\x13prósi" + + "mu kinta-fera\x0bkin. pasadu\x0aes kin. li\x0dprósimu kin.\x11sesta-fera" + + " pasadu\x10es sesta-fera li\x13prósimu sesta-fera\x0bses. pasadu\x0aes s" + + "es. li\x0dprósimu ses.\x0dsabadu pasadu\x0ces sabadu li\x0fprósimu sabad" + + "u\x0bsab. pasadu\x0aes sab. li\x0dprósimu sab.\x03Ora\x0ddi li {0} ora" + + "\x0da ten {0} ora\x06Minutu\x10di li {0} minutu\x10a ten {0} minutu\x0dd" + + "i li {0} min\x0da ten {0} min\x0bdi li {0} m\x0ba ten {0} m\x07Sigundu" + + "\x11di li {0} sigundu\x11a ten {0} sigundu\x0ddi li {0} sig\x0da ten {0}" + + " sig\x0bdi li {0} s\x0ba ten {0} s\x09Ora lokal\x0aOra di {0}\x13Ora di " + + "{0} (verãu)\x13Ora di {0} (normal)\x15Ora di Afrika Sentral\x16Ora di Af" + + "rika Oriental\x14Ora di Sul di Afrika\x17Ora di Afrika Osidental\x1fOra " + + "Padrãu di Afrika Osidental!Ora di Verão di Afrika Osidental\x0bOra Sentr" + + "al\x13Ora Sentral Padrãu\x15Ora Sentral di Verãu\x0cOra Oriental\x14Ora " + + "Oriental Padrãu\x16Ora Oriental di Verãu\x0fOra di Montanha\x17Ora di Mo" + + "ntanha Padrãu\x19Ora di Verãu di Montanha\x0fOra di Pasifiku\x17Ora di P" + + "asifiku Padrãu\x19Ora di Pasifiku di Verãu\x10Ora di Atlantiku\x18Ora Pa" + + "drãu di Atlantiku\x1aOra di Verãu di Atlantiku\x18Ora di Australia Sentr" + + "al Ora Padrãu di Australia Sentral\x22Ora di Verãu di Australia Sentral " + + "Ora di Autralia Sentru-Osidental)Ora Padrãu di Australia Sentru-Osidenta" + + "l+Ora di Verãu di Australia Sentru-Osidental\x19Ora di Australia Orienta" + + "l!Ora Padrãu di Australia Oriental#Ora di Verãu di Australia Oriental" + + "\x1aOra di Australia Osidental\x22Ora Padrãu di Australia Osidental$Ora " + + "di Verãu di Australia Osidental\x15Ora di Europa Sentral\x1dOra Padrãu d" + + "i Europa Sentral\x1fOra di Verãu di Europa Sentral\x16Ora di Europa Orie" + + "ntal\x1eOra Padrãu di Europa Oriental Ora di Verãu di Europa Oriental" + + "\x17Ora di Europa Osidental\x1fOra Padrãu di Europa Osidental!Ora di Ver" + + "ãu di Europa Osidental\x06Adduha\x06Aluula\x05Jaari\x12Adduha wala Aluu" + + "la\x03JEN\x03WKR\x03WGT\x03WKN\x03WTN\x03WTD\x03WMJ\x03WNN\x03WKD\x03WIK" + + "\x03WMW\x03DIT\x09Njenuarĩ\x0eMwere wa kerĩ\x10Mwere wa gatatũ\x0dMwere " + + "wa kana\x0fMwere wa gatano\x13Mwere wa gatandatũ\x12Mwere wa mũgwanja" + + "\x0fMwere wa kanana\x0eMwere wa kenda\x0fMwere wa ikũmi\x18Mwere wa ikũm" + + "i na ũmwe\x09Ndithemba\x03KMA\x03NTT\x03NMN\x03NMT\x03ART\x03NMA\x03NMM" + + "\x0dRobo ya mbere\x0dRobo ya kerĩ\x0fRobo ya gatatũ\x0cRobo ya kana\x06K" + + "iroko\x0aHwaĩ-inĩ\x08Kĩhinda\x03Ira\x09Ũmũthĩ\x07Rũciũ\x12Mũcooro wa mat" + + "haa\x16G y 'ж'. d MMMM, EEEE\x10G y 'ж'. d MMMM\x09G dd.MM.y\x07қаң.\x07" + + "ақп.\x07нау.\x07сәу.\x07мам.\x07мау.\x07шіл.\x07там.\x07қыр.\x07қаз." + + "\x07қар.\x07жел.\x02Қ\x02А\x02Н\x02С\x02М\x02Ш\x02Т\x02Ж\x0cқаңтар\x0aақ" + + "пан\x0cнаурыз\x0aсәуір\x0aмамыр\x0cмаусым\x0aшілде\x0aтамыз\x10қыркүйек" + + "\x0aқазан\x0cқараша\x12желтоқсан\x07Қаң.\x07Ақп.\x07Нау.\x07Сәу.\x07Мам." + + "\x07Мау.\x07Шіл.\x07Там.\x07Қыр.\x07Қаз.\x07Қар.\x07Жел.\x0cҚаңтар\x0aАқ" + + "пан\x0cНаурыз\x0aСәуір\x0aМамыр\x0cМаусым\x0aШілде\x0aТамыз\x10Қыркүйек" + + "\x0aҚазан\x0cҚараша\x12Желтоқсан\x04Жс\x04Дс\x04Сс\x04Ср\x04Бс\x04Жм\x04" + + "Сб\x02Д\x02Б\x10жексенбі\x10дүйсенбі\x10сейсенбі\x10сәрсенбі\x10бейсенб" + + "і\x08жұма\x0aсенбі\x10Жексенбі\x10Дүйсенбі\x10Сейсенбі\x10Сәрсенбі\x10Б" + + "ейсенбі\x08Жұма\x0aСенбі\x06І ш.\x08ІІ ш.\x0aІІІ ш.\x06IV ш.\x0dІ ширек" + + "\x0fІІ ширек\x11ІІІ ширек\x0dIV ширек\x13түн жарымы\x0aтүскі\x0aтаңғы" + + "\x1bтүстен кейінгі\x0aкешкі\x0aтүнгі\x0cталтүс\x06таң\x17түстен кейін" + + "\x06кеш\x06түн.Біздің заманымызға дейін\x1fБіздің заманымыз\x09б.з.д." + + "\x06б.з.\x14y 'ж'. d MMMM, EEEE\x0ey 'ж'. d MMMM\x0ey 'ж'. dd MMM\x0aдәу" + + "ір\x06жыл\x17былтырғы жыл\x13биылғы жыл\x13келесі жыл\x1b{0} жылдан кей" + + "ін\x15{0} жыл бұрын\x03ж.\x12{0} ж. кейін\x12{0} ж. бұрын\x0aширек\x15ө" + + "ткен ширек\x11осы ширек\x17келесі ширек\x1f{0} ширектен кейін\x19{0} ши" + + "рек бұрын\x12{0} ш. кейін\x12{0} ш. бұрын\x04ай\x0fөткен ай\x0bосы ай" + + "\x11келесі ай\x19{0} айдан кейін\x13{0} ай бұрын\x08апта\x13өткен апта" + + "\x0fосы апта\x15келесі апта\x1d{0} аптадан кейін\x17{0} апта бұрын\x10{0" + + "} аптасы\x05ап.\x14{0} ап. кейін\x14{0} ап. бұрын\x06күн\x12алдыңгүні" + + "\x08кеше\x0aбүгін\x0aертең\x12бүрсігүні\x1b{0} күннен кейін\x15{0} күн б" + + "ұрын\x17алдыңғы күні\x11апта күні\x1bөткен жексенбі\x17осы жексенбі\x1d" + + "келесі жексенбі%{0} жексенбіден кейін\x1f{0} жексенбі бұрын\x12өткен же" + + "к.\x0eосы жек.\x14келесі жек.\x0fөткен жс\x0bосы жс\x11келесі жс\x1bөтк" + + "ен дүйсенбі\x17осы дүйсенбі\x1dкелесі дүйсенбі%{0} дүйсенбіден кейін" + + "\x1f{0} дүйсенбі бұрын\x12өткен дүй.\x0eосы дүй.\x14келесі дүй.\x0fөткен" + + " дс\x0bосы дс\x11келесі дс\x1bөткен сейсенбі\x17осы сейсенбі\x1dкелесі с" + + "ейсенбі%{0} сейсенбіден кейін\x1f{0} сейсенбі бұрын\x12өткен сей.\x0eос" + + "ы сей.\x14келесі сей.\x0fөткен сс\x0bосы сс\x11келесі сс\x1bөткен сәрсе" + + "нбі\x17осы сәрсенбі\x1dкелесі сәрсенбі%{0} сәрсенбіден кейін\x1f{0} сәр" + + "сенбі бұрын\x12өткен сәр.\x0eосы сәр.\x14келесі сәр.\x0fөткен ср\x0bосы" + + " ср\x11келесі ср\x1bөткен бейсенбі\x17осы бейсенбі\x1dкелесі бейсенбі%{0" + + "} бейсенбіден кейін\x1f{0} бейсенбі бұрын\x12өткен бей.\x0eосы бей.\x14к" + + "елесі бей.\x0fөткен бс\x0bосы бс\x11келесі бс\x02Д\x02И\x02EY\x03ƐY\x03" + + "gli\x02ma\x02me\x03gie\x02ve\x02so\x02О\x02К\x02М\x02Ы\x02А\x02С\x02Ч" + + "\x03Mar\x03Ibr\x03May\x03Cut\x05Kṭu\x03Nwa\x03Duj\x08Yebrayer\x04Mars" + + "\x05Ibrir\x06Yulyuz\x08Cutanbir\x08Kṭuber\x07Nwanbir\x08Dujanbir\x02Л" + + "\x02В\x02Г\x03Fev\x03Apr\x03Iyn\x03Iyl\x03Avg\x03Sen\x03Okt\x03Noy\x03De" + + "k" + +var bucket56 string = "" + // Size: 14174 bytes + "\x13өткен жұма\x0fосы жұма\x15келесі жұма\x1d{0} жұмадан кейін\x17{0} жұ" + + "ма бұрын\x12өткен жұм.\x0eосы жұм.\x14келесі жұм.\x0fөткен жм\x0bосы жм" + + "\x11келесі жм\x15өткен сенбі\x11осы сенбі\x17келесі сенбі\x1f{0} сенбіде" + + "н кейін\x19{0} сенбі бұрын\x12өткен сен.\x0eосы сен.\x14келесі сен.\x0f" + + "өткен сб\x0bосы сб\x11келесі сб\x09АМ/РМ\x0aсағат\x11осы сағат\x1f{0} с" + + "ағаттан кейін\x19{0} сағат бұрын\x06сағ\x16{0} сағ. кейін\x16{0} сағ. б" + + "ұрын\x11осы минут\x1f{0} минуттан кейін\x19{0} минут бұрын\x16{0} мин. " + + "кейін\x16{0} мин. бұрын\x0aқазір!{0} секундтан кейін\x1b{0} секунд бұры" + + "н\x16{0} сек. кейін\x16{0} сек. бұрын\x19уақыт белдеуі\x10{0} уақыты" + + "\x1b{0} жазғы уақыты%{0} стандартты уақыты>Дүниежүзілік үйлестірілген уа" + + "қыт.Ұлыбритания жазғы уақыты(Ирландия жазғы уақыты\x1fАуғанстан уақыты(" + + "Орталық Африка уақыты$Шығыс Африка уақыты*Оңтүстік Африка уақыты$Батыс " + + "Африка уақыты9Батыс Африка стандартты уақыты/Батыс Африка жазғы уақыты" + + "\x19Аляска уақыты.Аляска стандартты уақыты$Аляска жазғы уақыты\x19Амазон" + + " уақыты.Амазон стандартты уақыты$Амазон жазғы уақыты=Солтүстік Америка о" + + "рталық уақытыRСолтүстік Америка стандартты орталық уақытыHСолтүстік Аме" + + "рика жазғы орталық уақыты9Солтүстік Америка шығыс уақытыNСолтүстік Амер" + + "ика стандартты шығыс уақытыDСолтүстік Америка жазғы шығыс уақыты5Солтүс" + + "тік Америка тау уақытыJСолтүстік Америка стандартты тау уақыты@Солтүсті" + + "к Америка жазғы тау уақытыFСолтүстік Америка Тынық мұхиты уақыты[Солтүс" + + "тік Америка стандартты Тынық мұхиты уақытыQСолтүстік Америка жазғы Тыны" + + "қ мұхиты уақыты\x15Апиа уақыты*Апиа стандартты уақыты Апиа жазғы уақыты" + + "&Сауд Арабиясы уақыты;Сауд Арабиясы стандартты уақыты1Сауд Арабиясы жазғ" + + "ы уақыты\x1fАргентина уақыты4Аргентина стандартты уақыты*Аргентина жазғ" + + "ы уақыты*Батыс Аргентина уақыты?Батыс Аргентина стандартты уақыты5Батыс" + + " Аргентина жазғы уақыты\x1bАрмения уақыты0Армения стандартты уақыты&Арме" + + "ния жазғы уақыты\x1fАтлантика уақыты4Атлантика стандартты уақыты*Атлант" + + "ика жазғы уақыты.Австралия орталық уақытыCАвстралия стандартты орталық " + + "уақыты9Австралия жазғы орталық уақыты9Австралия орталық-батыс уақытыNАв" + + "стралия стандартты орталық-батыс уақытыDАвстралия жазғы орталық-батыс у" + + "ақыты*Австралия шығыс уақыты?Австралия стандартты шығыс уақыты5Австрали" + + "я жазғы шығыс уақыты*Австралия батыс уақыты?Австралия стандартты батыс " + + "уақыты5Австралия жазғы батыс уақыты!Әзірбайжан уақыты6Әзірбайжан станда" + + "ртты уақыты,Әзірбайжан жазғы уақыты&Азор аралдары уақыты;Азор аралдары " + + "стандартты уақыты1Азор аралдары жазғы уақыты\x1fБангладеш уақыты4Бангла" + + "деш стандартты уақыты*Бангладеш жазғы уақыты\x17Бутан уақыты\x1bБоливия" + + " уақыты\x1dБразилия уақыты2Бразилия стандартты уақыты(Бразилия жазғы уақ" + + "ыты.Бруней-Даруссалам уақыты Кабо-Верде уақыты5Кабо-Верде стандартты уа" + + "қыты+Кабо-Верде жазғы уақыты0Чаморро стандартты уақыты\x17Чатем уақыты," + + "Чатем стандартты уақыты\x22Чатем жазғы уақыты\x15Чили уақыты*Чили станд" + + "артты уақыты Чили жазғы уақыты\x17Қытай уақыты,Қытай стандартты уақыты" + + "\x22Қытай жазғы уақыты\x1fЧойбалсан уақыты4Чойбалсан стандартты уақыты*Ч" + + "ойбалсан жазғы уақыты0Рождество аралының уақыты.Кокос аралдарының уақыт" + + "ы\x1dКолумбия уақыты2Колумбия стандартты уақыты(Колумбия жазғы уақыты*К" + + "ук аралдарының уақыты?Кук аралдарының стандартты уақытыFКук аралдарының" + + " жартылай жазғы уақыты\x15Куба уақыты*Куба стандартты уақыты Куба жазғы " + + "уақыты\x19Дейвис уақыты)Дюмон-д’Юрвиль уақыты\x22Шығыс Тимор уақыты\x22" + + "Пасха аралы уақыты7Пасха аралы стандартты уақыты-Пасха аралы жазғы уақы" + + "ты\x1bЭквадор уақыты(Орталық Еуропа уақыты=Орталық Еуропа стандартты уа" + + "қыты3Орталық Еуропа жазғы уақыты$Шығыс Еуропа уақыты9Шығыс Еуропа станд" + + "артты уақыты/Шығыс Еуропа жазғы уақыты-Қиыр Шығыс Еуропа уақыты$Батыс Е" + + "уропа уақыты9Батыс Еуропа стандартты уақыты/Батыс Еуропа жазғы уақыты.Ф" + + "олкленд аралдары уақытыCФолкленд аралдары стандартты уақыты9Фолкленд ар" + + "алдары жазғы уақыты\x17Фиджи уақыты,Фиджи стандартты уақыты\x22Фиджи жа" + + "зғы уақыты,Француз Гвианасы уақыты]Францияның оңтүстік аймағы және Анта" + + "рктика уақыты\x1fГалапагос уақыты\x19Гамбье уақыты\x19Грузия уақыты.Гру" + + "зия стандартты уақыты$Грузия жазғы уақыты2Гилберт аралдарының уақыты" + + "\x1bГринвич уақыты,Шығыс Гренландия уақытыAШығыс Гренландия стандартты у" + + "ақыты7Шығыс Гренландия жазғы уақыты,Батыс Гренландия уақытыAБатыс Гренл" + + "андия стандартты уақыты7Батыс Гренландия жазғы уақыты(Парсы шығанағы уа" + + "қыты\x19Гайана уақыты<Гавай және Алеут аралдары уақытыQГавай және Алеут" + + " аралдары стандартты уақытыGГавай және Алеут аралдары жазғы уақыты\x1bГо" + + "нконг уақыты0Гонконг стандартты уақыты&Гонконг жазғы уақыты\x15Ховд уақ" + + "ыты*Ховд стандартты уақыты Ховд жазғы уақыты2Үндістан стандартты уақыты" + + "(Үнді мұхитының уақыты\x1fҮндіқытай уақыты.Орталық Индонезия уақыты*Шығы" + + "с Индонезия уақыты*Батыс Индонезия уақыты\x15Иран уақыты*Иран стандартт" + + "ы уақыты Иран жазғы уақыты\x1bИркутск уақыты0Иркутск стандартты уақыты&" + + "Иркутск жазғы уақыты\x1bИзраиль уақыты0Израиль стандартты уақыты&Израил" + + "ь жазғы уақыты\x1bЖапония уақыты0Жапония стандартты уақыты&Жапония жазғ" + + "ы уақыты*Шығыс Қазақстан уақыты*Батыс Қазақстан уақыты\x17Корея уақыты," + + "Корея стандартты уақыты\x22Корея жазғы уақыты\x19Косраэ уақыты!Краснояр" + + "ск уақыты6Красноярск стандартты уақыты,Красноярск жазғы уақыты!Қырғызст" + + "ан уақыты,Лайн аралдарының уақыты\x1cЛорд-Хау уақыты1Лорд-Хау стандартт" + + "ы уақыты'Лорд-Хау жазғы уақыты(Маккуори аралы уақыты\x1bМагадан уақыты0" + + "Магадан стандартты уақыты&Магадан жазғы уақыты\x1dМалайзия уақыты2Мальд" + + "ив аралдарының уақыты0Маркиз аралдарының уақыты2Маршалл аралдарының уақ" + + "ыты\x1dМаврикий уақыты2Маврикий стандартты уақыты(Маврикий жазғы уақыты" + + "\x19Моусон уақыты9Солтүстік-Батыс Мексика уақытыNСолтүстік-Батыс Мексика" + + " стандартты уақытыDСолтүстік-Батыс Мексика жазғы уақыты1Мексика Тынық мұ" + + "хит уақытыFМексика стандартты Тынық мұхит уақыты<Мексика жазғы Тынық мұ" + + "хит уақыты Улан-Батор уақыты5Улан-Батор стандартты уақыты+Улан-Батор жа" + + "зғы уақыты\x19Мәскеу уақыты.Мәскеу стандартты уақыты$Мәскеу жазғы уақыт" + + "ы\x19Мьянма уақыты\x17Науру уақыты\x17Непал уақыты(Жаңа Каледония уақыт" + + "ы=Жаңа Каледония стандартты уақыты3Жаңа Каледония жазғы уақыты&Жаңа Зел" + + "андия уақыты;Жаңа Зеландия стандартты уақыты1Жаңа Зеландия жазғы уақыты" + + "%Ньюфаундленд уақыты:Ньюфаундленд стандартты уақыты0Ньюфаундленд жазғы у" + + "ақыты\x15Ниуэ уақыты&Норфолк аралы уақыты1Фернанду-ди-Норонья уақытыFФе" + + "рнанду-ди-Норонья стандартты уақыты<Фернанду-ди-Норонья жазғы уақыты" + + "\x1fНовосібір уақыты4Новосібір стандартты уақыты*Новосібір жазғы уақыты" + + "\x15Омбы уақыты*Омбы стандартты уақыты Омбы жазғы уақыты\x1dПәкістан уақ" + + "ыты2Пәкістан стандартты уақыты(Пәкістан жазғы уақыты\x17Палау уақыты1Па" + + "пуа – Жаңа Гвинея уақыты\x1dПарагвай уақыты2Парагвай стандартты уақыты(" + + "Парагвай жазғы уақыты\x15Перу уақыты*Перу стандартты уақыты Перу жазғы " + + "уақыты\x1dФилиппин уақыты2Филиппин стандартты уақыты(Филиппин жазғы уақ" + + "ыты0Феникс аралдарының уақыты4Сен-Пьер және Микелон уақытыIСен-Пьер жән" + + "е Микелон стандартты уақыты?Сен-Пьер және Микелон жазғы уақыты\x1bПиткэ" + + "рн уақыты\x19Понапе уақыты\x1bПхеньян уақыты\x1bРеюньон уақыты\x19Ротер" + + "а уақыты\x1bСахалин уақыты0Сахалин стандартты уақыты&Сахалин жазғы уақы" + + "ты\x17Самоа уақыты,Самоа стандартты уақыты\x22Самоа жазғы уақыты\x1bСей" + + "шель уақыты2Сингапур стандартты уақыты2Соломон аралдарының уақыты,Оңтүс" + + "тік Георгия уақыты\x1bСуринам уақыты\x15Сёва уақыты\x17Таити уақыты\x19" + + "Тайбэй уақыты.Тайбэй стандартты уақыты$Тайбэй жазғы уақыты\x1fТәжікстан" + + " уақыты\x1bТокелау уақыты\x17Тонга уақыты,Тонга стандартты уақыты\x22Тон" + + "га жазғы уақыты\x15Чуук уақыты%Түрікменстан уақыты:Түрікменстан стандар" + + "тты уақыты0Түрікменстан жазғы уақыты\x19Тувалу уақыты\x1bУругвай уақыты" + + "0Уругвай стандартты уақыты&Уругвай жазғы уақыты\x1fӨзбекстан уақыты4Өзбе" + + "кстан стандартты уақыты*Өзбекстан жазғы уақыты\x1bВануату уақыты0Вануат" + + "у стандартты уақыты&Вануату жазғы уақыты\x1fВенесуэла уақыты#Владивосто" + + "к уақыты8Владивосток стандартты уақыты.Владивосток жазғы уақыты\x1fВолг" + + "оград уақыты4Волгоград стандартты уақыты*Волгоград жазғы уақыты\x19Вост" + + "ок уақыты&Уэйк аралының уақыты/Уоллис және Футуна уақыты\x19Якутск уақы" + + "ты.Якутск стандартты уақыты$Якутск жазғы уақыты%Екатеринбург уақыты:Ека" + + "теринбург стандартты уақыты0Екатеринбург жазғы уақыты" + +var bucket57 string = "" + // Size: 29036 bytes + "\x0ddd/MM y GGGGG\x05pamba\x05wanja\x12mbiyɔ mɛndoŋgɔ\x10Nyɔlɔmbɔŋgɔ\x0f" + + "Mɔnɔ ŋgbanja\x12Nyaŋgwɛ ŋgbanja\x08kuŋgwɛ\x03fɛ\x05njapi\x06nyukul\x0211" + + "\x0aɓulɓusɛ\x06sɔndi\x05lundi\x05mardi\x0cmɛrkɛrɛdi\x04yedi\x0cvaŋdɛrɛdi" + + "\x0dmɔnɔ sɔndi\x07dd/MM y\x04kwey\x04muka\x09nɛmɛnɔ\x07januari\x08februa" + + "ri\x06martsi\x06aprili\x04maji\x04juni\x04juli\x09augustusi\x0aseptember" + + "i\x08oktoberi\x09novemberi\x09decemberi\x06sabaat\x0eataasinngorneq\x0dm" + + "arlunngorneq\x0fpingasunngorneq\x0esisamanngorneq\x0ftallimanngorneq\x0e" + + "arfininngorneq\x02S1\x02S2\x02S3\x02S4\x18ukiup sisamararterutaa 1\x18uk" + + "iup sisamararterutaa 2\x18ukiup sisamararterutaa 3\x18ukiup sisamararter" + + "utaa 4\x04u.t.\x04u.k.\x12ulloqeqqata-tungaa\x14ulloqeqqata-kingorna\x22" + + "Kristusip inunngornerata siornagut$Kristusip inunngornerata kingornagut" + + "\x09Kr.in.si.\x0bKr.in.king.\x05Kr.s.\x05Kr.k.\x05ukioq\x0fkingulleq uki" + + "oq\x0bmanna ukioq\x0ctulleq ukioq\x0com {0} ukioq\x13for {0} ukioq siden" + + "\x07qaammat\x11kingulleq qaammat\x0dmanna qaammat\x0etulleq qaammat\x0eo" + + "m {0} qaammat\x15for {0} qaammat siden\x11sapaatip-akunnera\x1bkingulleq" + + " sapaatip-akunnera\x17manna sapaatip-akunnera\x18tulleq sapaatip-akunner" + + "a\x18om {0} sapaatip-akunnera\x1ffor {0} sapaatip-akunnera siden\x05ullo" + + "q\x0aippassaani\x08ippassaq\x06ullumi\x05aqagu\x08aqaguagu\x15om {0} ull" + + "oq unnuarlu\x1cfor {0} ulloq unnuarlu siden\x19sapaatip akunnerata ullui" + + "\x22sapaat kingulleq sapaatip-akunnera\x1esapaat manna sapaatip-akunnera" + + "\x1fsapaat tulleq sapaatip-akunnera*ataasinngorneq kingulleq sapaatip-ak" + + "unnera&ataasinngorneq manna sapaatip-akunnera'ataasinngorneq tulleq sapa" + + "atip-akunnera)marlunngorneq kingulleq sapaatip-akunnera%marlunngorneq ma" + + "nna sapaatip-akunnera&marlunngorneq tulleq sapaatip-akunnera+pingasunngo" + + "rneq kingulleq sapaatip-akunnera'pingasunngorneq manna sapaatip-akunnera" + + "(pingasunngorneq tulleq sapaatip-akunnera*sisamanngorneq kingulleq sapaa" + + "tip-akunnera&sisamanngorneq manna sapaatip-akunnera'sisamanngorneq tulle" + + "q sapaatip-akunnera+tallimanngorneq kingulleq sapaatip-akunnera'talliman" + + "ngorneq manna sapaatip-akunnera(tallimanngorneq tulleq sapaatip-akunnera" + + "*arfininngorneq kingulleq sapaatip-akunnera&arfininngorneq manna sapaati" + + "p-akunnera'arfininngorneq tulleq sapaatip-akunnera\x0fpiffissaq ulloq" + + "\x16nalunaaquttap-akunnera\x1dom {0} nalunaaquttap-akunnera$for {0} nalu" + + "naaquttap-akunnera siden\x07minutsi\x0eom {0} minutsi\x15for {0} minutsi" + + " siden\x07sekundi\x0buisoriinnaq\x0eom {0} sekundi\x15for {0} sekundi si" + + "den\x18nalunaaqutaqaqatigiissut\x06Mulgul\x0cNg’atyaato\x08Kiptaamo\x09I" + + "wootkuut\x06Mamuut\x05Paagi\x0bNg’eiyeet\x07Rooptui\x06Bureet\x06Epeeso" + + "\x11Kipsuunde ne taai\x16Kipsuunde nebo aeng’\x03Kts\x03Kot\x03Koo\x03Ko" + + "s\x03Koa\x03Kom\x03Kol\x07Kotisap\x06Kotaai\x09Koaeng’\x07Kosomok\x0bKoa" + + "ng’wan\x06Komuut\x04Kolo\x0aRobo netai\x11Robo nebo aeng’\x0fRobo nebo s" + + "omok\x13Robo nebo ang’wan\x03krn\x05koosk\x06karoon\x0akooskoliny\x11Ama" + + "it kesich Jesu\x0fKokakesich Jesu\x06Ibinta\x06Kenyit\x06Arawet\x05Wikit" + + "\x05Betut\x04Amut\x05Raini\x05Mutai\x0dBetutab wikit\x05BE/KE\x04Sait" + + "\x07Minitit\x08Sekondit\x0cSaitab sonit\x08ព.ស.\x1d{1} នៅ\u200bម៉ោង {0}" + + "\x0cមករា\x12កុម្ភៈ\x0cមីនា\x0cមេសា\x0cឧសភា\x12មិថុនា\x12កក្កដា\x0cសីហា" + + "\x0fកញ្ញា\x0cតុលា\x18វិច្ឆិកា\x0cធ្នូ\x03ម\x03ក\x03ឧ\x03ស\x03ត\x03វ\x03ធ" + + "\x15អាទិត្យ\x0fច័ន្ទ\x12អង្គារ\x09ពុធ\x1eព្រហស្បតិ៍\x0fសុក្រ\x0cសៅរ៍\x03" + + "អ\x03ច\x03ព\x06អា\x06ពុ\x09ព្រ\x06សុ\x1dត្រីមាសទី 1\x1dត្រីមាសទី 2\x1d" + + "ត្រីមាសទី 3\x1dត្រីមាសទី 4\x18អធ្រាត្រ\x1bថ្ងៃត្រង់\x0fព្រឹក\x0cរសៀល" + + "\x0fល្ងាច\x09យប់\x1eថ្ងៃ\u200bត្រង់0មុន\u200bគ្រិស្តសករាជ$គ្រិស្តសករាជ" + + "\x12មុន គ.ស.\x08គ.ស.\x0fសករាជ\x0fឆ្នាំ\x1bឆ្នាំ\u200bមុន\x1bឆ្នាំ\u200bន" + + "េះ!ឆ្នាំ\u200bក្រោយ\x1c{0} ឆ្នាំទៀត\x1f{0} ឆ្នាំ\u200bមុន\x15ត្រីមាស!ត" + + "្រីមាស\u200bមុន!ត្រីមាស\u200bនេះ'ត្រីមាស\u200bក្រោយ\x22{0} ត្រីមាសទៀត%" + + "{0} ត្រីមាស\u200bមុន\x06ខែ\x12ខែ\u200bមុន\x12ខែ\u200bនេះ\x18ខែ\u200bក្រោ" + + "យ\x13{0} ខែទៀត\x13{0} ខែមុន\x15សប្ដាហ៍!សប្ដាហ៍\u200bមុន!សប្ដាហ៍\u200bន" + + "េះ'សប្ដាហ៍\u200bក្រោយ\x22{0} សប្ដាហ៍ទៀត%{0} សប្ដាហ៍\u200bមុន\x1fសប្តាហ" + + "៍នៃ {0}\x0cថ្ងៃ!ម្សិល\u200bម៉្ងៃ\x18ម្សិលមិញ\x18ថ្ងៃ\u200bនេះ\x1eថ្ងៃ" + + "\u200bស្អែក\x1e\u200bខាន\u200bស្អែក\x19{0} ថ្ងៃទៀត\x1c{0} ថ្ងៃ\u200bមុន" + + "\x1bថ្ងៃស្អែក\x1f{0} ថ្ងៃ\u200b\u200bមុន-ថ្ងៃ\u200bនៃ\u200bសប្ដាហ៍0ថ្ងៃ" + + "\u200bអាទិត្យ\u200bមុន0ថ្ងៃ\u200bអាទិត្យ\u200bនេះ6ថ្ងៃ\u200bអាទិត្យ" + + "\u200bក្រោយDថ្ងៃអាទិត្យ {0} សប្តាហ៍ទៀតDថ្ងៃអាទិត្យ {0} សប្តាហ៍មុន*ថ្ងៃ" + + "\u200bច័ន្ទ\u200bមុន*ថ្ងៃ\u200bច័ន្ទ\u200bនេះ0ថ្ងៃ\u200bច័ន្ទ\u200bក្រោយ" + + ">ថ្ងៃច័ន្ទ {0} សប្តាហ៍ទៀត>ថ្ងៃច័ន្ទ {0} សប្តាហ៍មុន-ថ្ងៃ\u200bអង្គារ" + + "\u200bមុន-ថ្ងៃ\u200bអង្គារ\u200bនេះ3ថ្ងៃ\u200bអង្គារ\u200bក្រោយAថ្ងៃអង្គ" + + "ារ {0} សប្តាហ៍ទៀតAថ្ងៃអង្គារ {0} សប្តាហ៍មុន$ថ្ងៃ\u200bពុធ\u200bមុន$ថ្ង" + + "ៃ\u200bពុធ\u200bនេះ*ថ្ងៃ\u200bពុធ\u200bក្រោយ8ថ្ងៃពុធ {0} សប្តាហ៍ទៀត8ថ្" + + "ងៃពុធ {0} សប្តាហ៍មុន9ថ្ងៃ\u200bព្រហស្បតិ៍\u200bមុន9ថ្ងៃ\u200bព្រហស្បតិ" + + "៍\u200bនេះ?ថ្ងៃ\u200bព្រហស្បតិ៍\u200bក្រោយMថ្ងៃព្រហស្បតិ៍ {0} សប្តាហ៍ទ" + + "ៀតMថ្ងៃព្រហស្បតិ៍ {0} សប្តាហ៍មុន*ថ្ងៃ\u200bសុក្រ\u200bមុន*ថ្ងៃ\u200bសុ" + + "ក្រ\u200bនេះ0ថ្ងៃ\u200bសុក្រ\u200bក្រោយ>ថ្ងៃសុក្រ {0} សប្តាហ៍ទៀត>ថ្ងៃស" + + "ុក្រ {0} សប្តាហ៍មុន'ថ្ងៃ\u200bសៅរ៍\u200bមុន'ថ្ងៃ\u200bសៅរ៍\u200bនេះ-ថ្" + + "ងៃ\u200bសៅរ៍\u200bក្រោយ;ថ្ងៃសៅរ៍ {0} សប្តាហ៍ទៀត;ថ្ងៃសៅរ៍ {0} សប្តាហ៍មុ" + + "ន\x1fព្រឹក/ល្ងាច\x0cម៉ោង\x15ម៉ោងនេះ8ក្នុង\u200bរយៈ\u200bពេល {0} ម៉ោង" + + "\x1c{0} ម៉ោង\u200bមុន\x19{0} ម៉ោងទៀត\x0cនាទី\x15នាទីនេះ\x19{0} នាទីទៀត" + + "\x1c{0} នាទី\u200bមុន\x1f{0} នាទី\u200b\u200bមុន\x12វិនាទី\x0cឥឡូវ\x1f{0" + + "} វិនាទីទៀត\x22{0} វិនាទី\u200bមុន\x1bល្វែងម៉ោង\x1cម៉ោង\u200bនៅ\u200b {0" + + "}7ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b {0}7ម៉ោង\u200bស្តង់ដារ\u200bនៅ " + + "\u200b{0}fម៉ោង\u200bរដូវ\u200bក្ដៅ\u200b\u200bនៅ\u200bចក្រភព\u200bអង់គ្ល" + + "េសKម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអៀរឡង់\u200bHម៉ោង\u200bនៅ" + + "\u200bអាហ្វហ្គានីស្ថានHម៉ោង\u200bនៅ\u200bអាហ្វ្រិក\u200bកណ្ដាលKម៉ោង" + + "\u200bនៅ\u200bអាហ្វ្រិក\u200bខាង\u200bកើតQម៉ោង\u200bនៅ\u200bអាហ្វ្រិក" + + "\u200bខាង\u200bត្បូងKម៉ោង\u200bនៅ\u200bអាហ្វ្រិក\u200bខាង\u200bលិចfម៉ោង" + + "\u200bស្តង់ដារ\u200bនៅ\u200bអាហ្វ្រិក\u200bខាង\u200bលិចoម៉ោង\u200b\u200b" + + "រដូវ\u200bក្ដៅ\u200bនៅ\u200bអាហ្វ្រិក\u200b\u200b\u200bខាងលិច0ម៉ោង" + + "\u200bនៅ\u200bអាឡាស្កាKម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាឡាស្កាNម៉ោង" + + "\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b\u200bអាឡាស្កា0ម៉ោង\u200bនៅ\u200bអាម៉ាស" + + "ូនKម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាម៉ាសូនNម៉ោង\u200bរដូវ\u200bក្ដៅ" + + "\u200bនៅ\u200bអាម៉ាសូនfម៉ោង\u200bភាគ\u200bកណ្ដាល\u200bនៅ\u200bអាមេរិក" + + "\u200bខាង\u200bជើង\x81ម៉ោង\u200bស្តង់ដារ\u200bភាគ\u200bកណ្ដាល\u200bនៅ" + + "\u200bអាមេរិក\u200bខាង\u200bជើង\x81ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bភាគ" + + "\u200bកណ្ដាល\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើងiម៉ោង\u200bភាគ\u200bខ" + + "ាង\u200bកើត\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើង\x84ម៉ោង\u200bស្តង់ដ" + + "ារ\u200bភាគ\u200bខាង\u200bកើត\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើង~ម" + + "៉ោង\u200bពេល\u200bថ្ងៃ\u200bភាគខាង\u200bកើតនៅ\u200bអាមេរិក\u200bខាង" + + "\u200bជើងrម៉ោង\u200bនៅ\u200bតំបន់\u200bភ្នំ\u200bអាមេរិក\u200bភាគ\u200bខ" + + "ាង\u200bជើង\x81ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bតំបន់\u200bភ្នំ\u200bអា" + + "មេរិក\u200bខាង\u200bជើង\x8dម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bតំបន់" + + "\u200bភ្នំ\u200bអាមេរិក\u200bភាគ\u200bខាង\u200bជើងfម៉ោង\u200bភាគ\u200bខា" + + "ង\u200bលិច\u200bនៅ\u200bអាមរិក\u200bខាង\u200bជើង\x84ម៉ោង\u200bស្តង់ដារ" + + "\u200bភាគ\u200bខាង\u200bលិច\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើង\x90ម៉" + + "ោង\u200bពេល\u200bថ្ងៃ\u200b\u200bភាគ\u200bខាងលិច\u200bនៅ\u200bអាមេរិក" + + "\u200bភាគ\u200bខាង\u200bជើង*ម៉ោង\u200bនៅ\u200bអាប្យាBម៉ោង\u200bស្តង់ដា" + + "\u200bនៅ\u200bអាប្យាEម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអាប្យា-ម៉ោង" + + "\u200bនៅ\u200bអារ៉ាប់Hម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអារ៉ាប់Hម៉ោង\u200b" + + "ពេល\u200bថ្ងៃ\u200bនៅ\u200bអារ៉ាប់0ម៉ោង\u200bនៅ\u200bអាសង់ទីនNម៉ោង" + + "\u200b\u200bស្តង់ដារ\u200bនៅ\u200bអាសង់ទីនNម៉ោង\u200bរដូវ\u200bក្ដៅ" + + "\u200bនៅ\u200bអាសង់ទីនNម៉ោង\u200bនៅ\u200bអាសង់\u200bទីន\u200b\u200bខាង" + + "\u200bលិចfម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាសង់ទីន\u200b\u200bខាង\u200bល" + + "ិចiម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអាសង់ទីន\u200b\u200bខាង\u200b" + + "លិច*ម៉ោង\u200bនៅ\u200bអាមេនីEម៉ោង\u200bស្ដង់ដារ\u200bនៅ\u200bអាមេនីHម៉" + + "ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអាមេនី6ម៉ោង\u200bនៅ\u200bអាត្លង់ទិ" + + "កQម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាត្លង់ទិកQម៉ោង\u200bពេល\u200bថ្ងៃ" + + "\u200bនៅ\u200bអាត្លង់ទិកHម៉ោង\u200bនៅអូស្ត្រាលី\u200bកណ្ដាលfម៉ោង\u200bស្" + + "តង់ដារ\u200bនៅ\u200bអូស្ត្រាលី\u200bកណ្ដាលlម៉ោង\u200bពេលថ្ងៃ\u200b" + + "\u200b\u200b\u200bនៅ\u200bអូស្ត្រាលី\u200bកណ្ដាល~ម៉ោង\u200bនៅ\u200b" + + "\u200b\u200bភាគ\u200bខាង\u200bលិច\u200bនៅ\u200bអូស្ត្រាលី\u200bកណ្ដាល" + + "\x93ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bភាគ\u200bខាង\u200bលិច\u200bនៃ\u200bអ" + + "ូស្ត្រាលី\u200bកណ្ដាល\x96ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b\u200bភា" + + "គ\u200bខាង\u200bលិច\u200bនៃ\u200bអូស្ត្រាលី\u200bកណ្ដាលNម៉ោង\u200bនៅ" + + "\u200bអូស្ត្រាលី\u200bខាង\u200bកើតiម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអូស្ត" + + "្រាលី\u200bខាង\u200bកើតiម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអូស្ត្រាល" + + "ី\u200bខាង\u200bកើតTម៉ោង\u200b\u200b\u200bនៅ\u200bអូស្ត្រាលី\u200bខាង" + + "\u200bលិចlម៉ោង\u200b\u200bស្តង់ដារ\u200bនៅ\u200bអូស្ត្រាលី\u200bខាង" + + "\u200bលិចiម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអូស្ត្រាលី\u200bខាង\u200b" + + "លិច<ម៉ោង\u200bនៅ\u200bអាស៊ែបៃហ្សង់Wម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាស" + + "៊ែបៃហ្សង់Zម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអាស៊ែបៃហ្សង់*ម៉ោង" + + "\u200bនៅ\u200bអេហ្សសEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអេហ្សសHម៉ោង\u200bរដ" + + "ូវ\u200bក្ដៅ\u200bនៅ\u200bអេហ្សស6ម៉ោង\u200bនៅ\u200bបង់ក្លាដែសQម៉ោង" + + "\u200bស្ដង់ដារ\u200bនៅ\u200bបង់ក្លាដែសTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + + "\u200bបង់ក្លាដែស$ម៉ោងនៅប៊ូតាន*ម៉ោង\u200bនៅ\u200bបូលីវី<ម៉ោង\u200bនៅ" + + "\u200bប្រាស៊ីលីយ៉ាWម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bប្រាស៊ីលីយ៉ា]ម៉ោង" + + "\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bប្រាស៊ីលីយ៉ាEម៉ោងនៅប្រ៊ុយណេដារូស" + + "ាឡឹម-ម៉ោង\u200bនៅ\u200bកាប់វែរHម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកាប់វែរ" + + "Kម៉ោង\u200b\u200bរដូវ\u200bក្ដៅនៅ\u200bកាប់វែរ3ម៉ោង\u200bនៅ\u200bចាំម៉ូរ" + + "៉ូ'ម៉ោង\u200bនៅ\u200bចាថាំBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bចាថាំBម៉ោង" + + "\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bចាថាំ\x1eម៉ោងនៅឈីលី6ម៉ោងស្តង់ដារនៅឈីលី6" + + "ម៉ោងរដូវក្តៅនៅឈីលី!ម៉ោង\u200bនៅ\u200bចិន<ម៉ោង\u200bស្តង់ដារ\u200bនៅ" + + "\u200bចិន<ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bចិន3ម៉ោង\u200bនៅ\u200bឆូប" + + "ាល់សានNម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bឆូបាល់សានQម៉ោង\u200bរដូវ\u200bក" + + "្ដៅ\u200bនៅ\u200bឆូបាល់សាន?ម៉ោង\u200bនៅ\u200bកោះ\u200bគ្រីស្មាស3ម៉ោង" + + "\u200bនៅ\u200bកោះ\u200bកូកូស0ម៉ោង\u200bនៅ\u200bកូឡុំប៊ីKម៉ោង\u200bស្តង់ដ" + + "ារ\u200bនៅ\u200bកូឡុំប៊ីNម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bកូឡុំប៊" + + "ី-ម៉ោង\u200bនៅ\u200bកោះ\u200bខូកHម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកោះ" + + "\u200bខូកoម៉ោង\u200b\u200bពាក់កណ្ដាល\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bកោ" + + "ះ\u200bខូក'ម៉ោង\u200bនៅ\u200bគុយបាBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bគុយ" + + "បាBម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bគុយបា'ម៉ោង\u200bនៅ\u200bដាវីសH" + + "ម៉ោង\u200bនៅ\u200bឌុយម៉ុងដឺអ៊ុយវីលBម៉ោង\u200bនៅ\u200b\u200bទីម័រ\u200b" + + "ខាង\u200bកើត<ម៉ោង\u200bនៅ\u200bកោះ\u200b\u200bខាង\u200bកើតZម៉ោង\u200bស" + + "្តង់ដារ\u200bនៅ\u200bកោះ\u200b\u200b\u200bខាង\u200bកើតZម៉ោង\u200bរដូវ" + + "\u200bក្ដៅ\u200bនៅ\u200bកោះ\u200b\u200bខាង\u200bកើត3ម៉ោង\u200bនៅ\u200bអេ" + + "ក្វាទ័រ?ម៉ោង\u200bនៅ\u200bអឺរ៉ុប\u200bកណ្ដាលZម៉ោង\u200bស្តង់ដារ\u200bន" + + "ៅ\u200bអឺរ៉ុប\u200bកណ្ដាល]ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអឺរ៉ុប" + + "\u200bកណ្ដាលHម៉ោង\u200bនៅ\u200bអឺរ៉ុប\u200b\u200bខាង\u200bកើត\u200bfម៉ោង" + + "\u200bស្តង់ដារ\u200b\u200bនៅ\u200bអឺរ៉ុប\u200b\u200bខាង\u200bកើត\u200bfម" + + "៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអឺរ៉ុប\u200b\u200bខាង\u200bកើត" + + "\u200bZម៉ោង\u200bនៅ\u200bចុងភាគ\u200bខាង\u200bកើត\u200bអឺរ៉ុប\u200bBម៉ោង" + + "\u200bនៅ\u200bអឺរ៉ុប\u200bខាង\u200bលិច]ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ" + + "ឺរ៉ុប\u200bខាង\u200bលិច`ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអឺរ៉ុប" + + "\u200bខាង\u200bលិច<ម៉ោង\u200bនៅ\u200bកោះ\u200bហ្វក់ឡែនWម៉ោង\u200bស្តង់ដា" + + "រ\u200bនៅ\u200bកោះ\u200bហ្វក់ឡែនZម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + + "\u200bកោះ\u200bហ្វក់ឡែន*ម៉ោង\u200bនៅ\u200bហ្វីជីHម៉ោង\u200bស្តង់ដារ" + + "\u200bនៅ\u200bហ៊្វីជីNម៉ោង\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហ៊្វីជ" + + "ីEម៉ោង\u200bនៅ\u200bឃ្វីយ៉ាន\u200bបារាំងjម៉ោង\u200bនៅ\u200bអែតាឃីត និង" + + "\u200bបារាំង\u200bខាង\u200bត្បូង6ម៉ោង\u200bនៅ\u200bកាឡាប៉ាកូស'ម៉ោង\u200b" + + "នៅ\u200bកាំបៀ3ម៉ោង\u200bនៅ\u200bហ្សកហ្ស៊ីNម៉ោង\u200bស្តង់ដារ\u200bនៅ" + + "\u200bហ្សកហ្ស៊ីTម៉ោង\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហ្សកហ្ស៊ី6ម៉" + + "ោង\u200bនៅ\u200bកោះ\u200bកីប៊ឺត*ម៉ោងនៅគ្រីនវិចQម៉ោង\u200b\u200bនៅ" + + "\u200bហ្គ្រីនលែន\u200bខាង\u200bកើតrម៉ោង\u200b\u200b\u200bស្តង់ដារ\u200bន" + + "ៅ\u200b\u200bហ្គ្រីនលែន\u200bខាង\u200bកើតiម៉ោង\u200bរដូវ\u200bក្ដៅ" + + "\u200bនៅ\u200bហ្គ្រីនលែនខាង\u200bកើតBម៉ោងនៅហ្គ្រីនលែនខាងលិចZម៉ោងស្តង់ដារ" + + "នៅហ្គ្រីនលែនខាងលិចZម៉ោងរដូវក្តៅនៅហ្គ្រីនលែនខាងលិច<ម៉ោង\u200bស្តង់ដា" + + "\u200bនៅ\u200bកាល់0ម៉ោង\u200bនៅ\u200bឃ្វីយ៉ានIម៉ោង\u200b\u200bនៅ\u200bហា" + + "វៃ-អាល់ដ្យូសិនdម៉ោង\u200bស្តង់ដារ\u200b\u200bនៅ\u200bហាវៃ-អាល់ដ្យូសិនa" + + "ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bហាវៃ-អាល់ដ្យូសិន*ម៉ោង\u200bនៅ" + + "\u200bហុងកុងEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bហុងកុងHម៉ោង\u200bរដូវ\u200b" + + "ក្ដៅ\u200bនៅ\u200bហុងកុង!ម៉ោង\u200bនៅ\u200bហូវ9ម៉ោង\u200bស្តង់ដារ" + + "\u200bនៅហូវ?ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហូវ'ម៉ោង\u200bនៅ\u200b" + + "ឥណ្ឌាEម៉ោង\u200bនៅ\u200bមហាសមុទ្រ\u200bឥណ្ឌា0ម៉ោង\u200bនៅ\u200bឥណ្ឌូចិ" + + "នQម៉ោង\u200bនៅ\u200bឥណ្ឌូណេស៊ី\u200b\u200b\u200bកណ្ដាលQម៉ោង\u200bនៅ" + + "\u200bឥណ្ឌូណេស៊ី\u200b\u200bខាង\u200bកើតQម៉ោង\u200bនៅ\u200bឥណ្ឌូណេស៊ី" + + "\u200b\u200bខាង\u200bលិច-ម៉ោង\u200bនៅ\u200bអ៊ីរ៉ង់Hម៉ោង\u200bស្តង់ដារ" + + "\u200bនៅ\u200bអ៊ីរ៉ង់Hម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអ៊ីរ៉ង់*ម៉ោង" + + "\u200bនៅ\u200bអ៊ីគុតEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ៊ីគុតHម៉ោង\u200bនៅ" + + "\u200bអ៊ីគុត\u200bរដូវ\u200bក្ដៅ6ម៉ោង\u200bនៅ\u200bអ៊ីស្រាអែលQម៉ោង\u200b" + + "ស្តង់ដារ\u200bនៅ\u200bអ៊ីស្រាអែលQម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b" + + "អ៊ីស្រាអែល'ម៉ោង\u200bនៅ\u200bជប៉ុនBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bជប៉" + + "ុន?ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅជប៉ុនQម៉ោង\u200bកាហ្សាក់ស្ថាន\u200b" + + "\u200bខាង\u200bកើត]ម៉ោង\u200bនៅ\u200bកាហ្សាក់ស្ថាន\u200bខាង\u200b\u200b" + + "\u200bលិច'ម៉ោង\u200bនៅ\u200bកូរ៉េBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកូរ៉េB" + + "ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bកូរ៉េ*ម៉ោង\u200bនៅ\u200bកូស្រៃ6ម៉" + + "ោង\u200bនៅ\u200bក្រាណូយ៉ាសQម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bក្រាណូយ៉ាសT" + + "ម៉ោង\u200bនៅ\u200bក្រាណូយ៉ាស\u200bរដូវ\u200bក្ដៅ6ម៉ោងនៅគៀរហ្គីស្តង់-ម៉" + + "ោង\u200bនៅ\u200bកោះ\u200bឡាញ$ម៉ោង\u200bនៅ\u200bឡតហៅBម៉ោង\u200bស្តង់ដារ" + + "\u200bនៅ\u200bឡត\u200bហៅ?ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bឡតហៅ<ម៉ោង" + + "\u200bនៅ\u200bកោះ\u200bម៉ាកគែរី6ម៉ោង\u200bនៅ\u200bម៉ាហ្កាដានQម៉ោង\u200bស" + + "្តង់ដារ\u200bនៅ\u200bម៉ាហ្កាដានTម៉ោង\u200bនៅ\u200bម៉ាហ្កាដាន\u200bរដូវ" + + "\u200bក្ដៅ0ម៉ោង\u200bនៅ\u200bម៉ាឡេស៊ី0ម៉ោង\u200bនៅ\u200bម៉ាល់ឌីវ?ម៉ោង" + + "\u200bនៅ\u200bកោះ\u200bម៉ាគឺសាស់*ម៉ោង\u200bនៅ\u200bម៉ាសាល*ម៉ោង\u200bនៅ" + + "\u200bម៉ូរីសEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bម៉ូរីសHម៉ោង\u200b\u200bរដូវ" + + "\u200bក្ដៅនៅ\u200bម៉ូរីស0ម៉ោង\u200bនៅ\u200bម៉ៅ\u200bសាន់Kម៉ោង\u200bនៅ" + + "\u200bម៉ិកស៊ិកភាគពាយព្យcម៉ោង\u200bស្តង់ដា\u200bនៅ\u200bម៉ិកស៊ិកភាគពាយព្យ" + + "fម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bម៉ិកស៊ិកភាគពាយព្យTម៉ោង\u200bនៅ" + + "\u200bប៉ាសីុហ្វិក\u200bម៉ិកស៊ិកlម៉ោង\u200bស្តង់ដា\u200bនៅ\u200bប៉ាសីុហ្វ" + + "ិក\u200bម៉ិកស៊ិកoម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bប៉ាសីុហ្វិក" + + "\u200bម៉ិកស៊ិក9ម៉ោង\u200bនៅ\u200bអ៊ូឡាន\u200bបាទូTម៉ោង\u200bស្តង់ដារ" + + "\u200bនៅ\u200bអ៊ូឡាន\u200bបាទូWម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអ៊ូ" + + "ឡាន\u200bបាទូ*ម៉ោង\u200bនៅ\u200bមូស្គូEម៉ោង\u200bស្តង់ដារ\u200bនៅ" + + "\u200bមូស្គូIម៉ោង\u200bនៅ\u200bមូស្គូ\u200b រដូវ\u200bក្ដៅ$ម៉ោង\u200bនៅ" + + "\u200bភូមា$ម៉ោង\u200bនៅ\u200bណូរូ'ម៉ោងនៅនេប៉ាល់0ម៉ោង\u200bនៅ\u200bកាឡេដូ" + + "នៀKម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកាឡេដូនៀUម៉ោង\u200bនៅ\u200bញូ\u200b" + + "កាឡេដូនៀ រដូវ\u200bក្ដៅ6ម៉ោង\u200bនៅ\u200bនូវែលសេឡង់Qម៉ោង\u200bស្តង់ដា" + + "រ\u200bនៅ\u200bនូវែលសេឡង់Qម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bនូវែលសេ" + + "ឡង់9ម៉ោង\u200b\u200bនៅ\u200bញូហ្វោនឡែនWម៉ោង\u200b\u200bស្តង់ដារ\u200b" + + "\u200bនៅ\u200bញូហ្វោនឡែនNម៉ោង\u200bពេលថ្ងៃ\u200bនៅ\u200bញូហ្វោនឡែន'ម៉ោងន" + + "ៅ\u200bដ្យូអៀ<ម៉ោង\u200bនៅ\u200bកោះ\u200bន័រហ្វក់Wម៉ោង\u200bនៅ\u200bហ្" + + "វឺណាន់ដូ\u200bដឺណូរ៉ុនហាuម៉ោង\u200b\u200bស្តង់ដារ\u200bនៅ\u200bហ្វឺណាន" + + "់ដូ\u200bដឺណូរ៉ុនហាuម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហ្វឺណាន់ដូ" + + "\u200bដឺណូរ៉ុនហា<ម៉ោង\u200bនៅ\u200bណូវ៉ូស៊ីប៊ីកWម៉ោង\u200bស្តង់ដារ\u200b" + + "នៅ\u200bណូវ៉ូស៊ីប៊ីកZម៉ោង\u200bនៅ\u200bណូវ៉ូស៊ីប៊ីក\u200bរដូវ\u200bក្ដ" + + "ៅ!ម៉ោង\u200bនៅ\u200bអូម<ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអូម?ម៉ោង\u200b" + + "នៅ\u200bអូម\u200bរដូវ\u200bក្ដៅ6ម៉ោង\u200bនៅ\u200bប៉ាគីស្ថានQម៉ោង" + + "\u200bស្ដង់ដារ\u200bនៅ\u200bប៉ាគីស្ថានTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + + "\u200bប៉ាគីស្ថាន$ម៉ោង\u200bនៅ\u200bផាឡៅ9ម៉ោង\u200bនៅ\u200bប៉ាបៅញូកីនៀ9ម៉" + + "ោង\u200bនៅ\u200bប៉ារ៉ាហ្គាយTម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bប៉ារ៉ាហ្គា" + + "យTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅប៉ារ៉ាហ្គាយ'ម៉ោង\u200bនៅ\u200bប៉េរូB" + + "ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bប៉េរូEម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + + "\u200bប៉េរូ3ម៉ោង\u200bនៅ\u200bហ្វីលីពីនNម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200b" + + "ហ្វីលីពីនTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200b\u200bនៅ\u200bហ្វីលីពីន3ម៉ោង" + + "\u200bនៅ\u200bកោះ\u200bផូនីក[ម៉ោង\u200b\u200b\u200bនៅសង់\u200bព្យែរ និង" + + "\u200bមីគុយឡុងpម៉ោង\u200bស្តង់ដារ\u200bនៅសង់\u200bព្យែរ និង\u200bមីគុយឡុ" + + "ងpម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅសង់\u200bព្យែរ និង\u200bមីគុយឡុង'ម៉ោង" + + "\u200bនៅ\u200bភីឃឺន-ម៉ោង\u200bនៅ\u200bប៉ូណាប់-ម៉ោងនៅព្យុងយ៉ាង-ម៉ោងនៅរេអ៊" + + "ុយ៉ុង0ម៉ោង\u200bនៅ\u200bរ៉ូធឺរ៉ា3ម៉ោង\u200bនៅ\u200bសាក់ខាលីនNម៉ោង" + + "\u200bស្តង់ដារ\u200bនៅ\u200bសាក់ខាលីនQម៉ោង\u200bនៅ\u200bសាក់ខាលីន\u200bរ" + + "ដួវ\u200bក្ដៅ'ម៉ោង\u200bនៅ\u200bសាម៉ៅ?ម៉ោង\u200bស្តង់ដារនៅ\u200bសាម៉ៅE" + + "ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bសាម៉ៅ-ម៉ោង\u200bនៅ\u200bសីស្ហែល3" + + "ម៉ោង\u200bនៅ\u200bសិង្ហបូរី<ម៉ោង\u200bនៅ\u200bកោះ\u200bសូឡូម៉ុន?ម៉ោង" + + "\u200bនៅ\u200bកោះ\u200bហ្សកហ្ស៊ី-ម៉ោង\u200bនៅ\u200bសូរីណាម0ម៉ោង\u200bនៅ" + + "\u200bស៊ីអូវ៉ា*ម៉ោង\u200bនៅ\u200bតាហិទី'ម៉ោង\u200bនៅ\u200bតៃប៉ិBម៉ោង" + + "\u200bស្តង់ដារ\u200bនៅ\u200bតៃប៉ិBម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bត" + + "ៃប៉ិ3ម៉ោងនៅតាជីគីស្តង់*ម៉ោង\u200bនៅ\u200bតូខេឡៅ'ម៉ោង\u200bនៅ\u200bតុងក" + + "ាEម៉ោង\u200bស្តង់ដារ\u200b\u200bនៅ\u200bតុងកាEម៉ោង\u200bរដូវ\u200bក្ដៅ" + + "\u200bនៅ\u200bតុងកា'ម៉ោង\u200bនៅ\u200bចូអុក?ម៉ោង\u200bនៅ\u200bតួកម៉េនីស្" + + "ថានWម៉ោង\u200bស្តង់ដារ\u200bនៅតួកម៉េនីស្ថាន`ម៉ោង\u200bរដូវ\u200bក្ដៅ" + + "\u200bនៅ\u200bតួកម៉េនីស្ថាន\u200b0ម៉ោង\u200bនៅ\u200bទុយវ៉ាឡុ9ម៉ោង\u200bន" + + "ៅ\u200bអ៊ុយរូហ្គាយTម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ៊ុយរូហ្គាយZម៉ោង" + + "\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអ៊ុយរូហ្គាយ?ម៉ោង\u200bនៅ\u200bអ៊" + + "ូសបេគីស្ថានZម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ៊ូសបេគីស្ថាន]ម៉ោង\u200bរដ" + + "ូវ\u200bក្ដៅ\u200bនៅ\u200bអ៊ូសបេគីស្ថាន-ម៉ោង\u200bនៅ\u200bវ៉ានូទូKម៉ោង" + + "\u200b\u200bស្តង់ដារ\u200bនៅ\u200bវ៉ានូទូKម៉ោង\u200bរដូវ\u200bក្ដៅ\u200b" + + "នៅ\u200bវ៉ានូទូ?ម៉ោង\u200bនៅ\u200bវ៉េណេស៊ុយអេឡាBម៉ោង\u200bនៅ\u200bវ៉្ល" + + "ាឌីវ៉ូស្តក]ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bវ៉្លាឌីវ៉ូស្តក`ម៉ោង\u200bនៅ" + + "\u200bវ៉្លាឌីវ៉ូស្តក\u200bរដូវ\u200bក្ដៅ<ម៉ោង\u200bនៅ\u200bវ៉ូហ្កាក្រាតW" + + "ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bវ៉ូហ្កាក្រាតZម៉ោង\u200bនៅ\u200bវ៉ូហ្កា" + + "ក្រាត\u200bរដូវ\u200bក្ដៅ0ម៉ោង\u200bនៅ\u200bវ័រស្តុក*ម៉ោង\u200bនៅ" + + "\u200bកោះវេកIម៉ោង\u200bនៅ\u200bវ៉ាលីស និង\u200bផូទូណា*ម៉ោង\u200bនៅ\u200b" + + "យ៉ាគុតEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bយ៉ាគុតHម៉ោង\u200bនៅ\u200bយ៉ាគុត" + + "\u200bរដូវ\u200bក្ដៅBម៉ោង\u200bនៅ\u200bអ៊ិខាធឺរីនប៊័ក]ម៉ោង\u200bស្តង់ដារ" + + "\u200bនៅ\u200bអ៊ិខាធឺរីនប៊័កcម៉ោង\u200bនៅ\u200bអ៊ិខាធឺរីនប៊័ក\u200bរដួវ" + + "\u200b\u200bក្ដៅ\x05maart\x05april\x03mei\x04juni\x04juli\x08augustus" + + "\x09september\x07oktober\x08november\x08december\x03mei\x04mars\x05april" + + "\x03maj\x04juni\x04juli\x07augusti\x09september\x07oktober\x08november" + + "\x08december\x04mars\x03maj\x04juni\x04juli" + +var bucket58 string = "" + // Size: 23849 bytes + "\x16{1} {0}ದಲ್ಲಿ\x06ಜನ\x0fಫೆಬ್ರ\x12ಮಾರ್ಚ್\x0fಏಪ್ರಿ\x06ಮೇ\x0cಜೂನ್\x0cಜುಲೈ" + + "\x06ಆಗ\x15ಸೆಪ್ಟೆಂ\x0fಅಕ್ಟೋ\x0cನವೆಂ\x0fಡಿಸೆಂ\x03ಜ\x06ಫೆ\x06ಮಾ\x03ಏ\x06ಜೂ" + + "\x06ಜು\x03ಆ\x06ಸೆ\x03ಅ\x03ನ\x06ಡಿ\x0fಜನವರಿ\x18ಫೆಬ್ರವರಿ\x15ಏಪ್ರಿಲ್\x12ಆಗಸ" + + "್ಟ್\x1eಸೆಪ್ಟೆಂಬರ್\x18ಅಕ್ಟೋಬರ್\x15ನವೆಂಬರ್\x18ಡಿಸೆಂಬರ್\x0cಭಾನು\x09ಸೋಮ" + + "\x0cಮಂಗಳ\x09ಬುಧ\x0cಗುರು\x0fಶುಕ್ರ\x09ಶನಿ\x06ಭಾ\x06ಸೋ\x06ಮಂ\x06ಬು\x06ಗು" + + "\x06ಶು\x03ಶ\x15ಭಾನುವಾರ\x12ಸೋಮವಾರ\x15ಮಂಗಳವಾರ\x12ಬುಧವಾರ\x15ಗುರುವಾರ\x18ಶುಕ್" + + "ರವಾರ\x12ಶನಿವಾರ\x0eತ್ರೈ 1\x0eತ್ರೈ 2\x0eತ್ರೈ 3\x0eತ್ರೈ 4#1ನೇ ತ್ರೈಮಾಸಿಕ#2" + + "ನೇ ತ್ರೈಮಾಸಿಕ#3ನೇ ತ್ರೈಮಾಸಿಕ#4ನೇ ತ್ರೈಮಾಸಿಕ\x1fಮಧ್ಯ ರಾತ್ರಿ\x1bಪೂರ್ವಾಹ್ನ" + + "\x15ಅಪರಾಹ್ನ\x15ಬೆಳಗ್ಗೆ\x18ಮಧ್ಯಾಹ್ನ\x0cಸಂಜೆ\x12ರಾತ್ರಿ\x1eಮಧ್ಯರಾತ್ರಿ\x06ಪೂ" + + "%ಕ್ರಿಸ್ತ ಪೂರ್ವ\x1dಕ್ರಿ.ಪೂ.ಕಾಲ\x1cಕ್ರಿಸ್ತ ಶಕ\x1cಪ್ರಸಕ್ತ ಶಕ\x13ಕ್ರಿ.ಪೂ\x10" + + "ಕ್ರಿ.ಶ\x09ಯುಗ\x0cವರ್ಷ\x1fಹಿಂದಿನ ವರ್ಷ\x10ಈ ವರ್ಷ\x1fಮುಂದಿನ ವರ್ಷ\x1f{0} ವ" + + "ರ್ಷದಲ್ಲಿ\x22{0} ವರ್ಷಗಳಲ್ಲಿ#{0} ವರ್ಷದ ಹಿಂದೆ&{0} ವರ್ಷಗಳ ಹಿಂದೆ\x19ಕಳೆದ ವರ" + + "್ಷ\x1bತ್ರೈಮಾಸಿಕ.ಹಿಂದಿನ ತ್ರೈಮಾಸಿಕ\x1fಈ ತ್ರೈಮಾಸಿಕ.ಮುಂದಿನ ತ್ರೈಮಾಸಿಕ.{0} ತ" + + "್ರೈಮಾಸಿಕದಲ್ಲಿ1{0} ತ್ರೈಮಾಸಿಕಗಳಲ್ಲಿ2{0} ತ್ರೈಮಾಸಿಕದ ಹಿಂದೆ5{0} ತ್ರೈಮಾಸಿಕಗಳ" + + " ಹಿಂದೆ(ಕಳೆದ ತ್ರೈಮಾಸಿಕ'{0} ತ್ರೈ.ಮಾ.ದಲ್ಲಿ({0} ತ್ರೈ.ಮಾ. ಹಿಂದೆ\x22+{0} ತ್ರೈ." + + " ಹಿಂದೆ\x12ತಿಂಗಳು\x1fಕಳೆದ ತಿಂಗಳು\x16ಈ ತಿಂಗಳು%ಮುಂದಿನ ತಿಂಗಳು\x1f{0} ತಿಂಗಳಲ್" + + "ಲಿ({0} ತಿಂಗಳುಗಳಲ್ಲಿ,{0} ತಿಂಗಳುಗಳ ಹಿಂದೆ&{0} ತಿಂಗಳು ಹಿಂದೆ#{0} ತಿಂಗಳ ಹಿಂದ" + + "ೆ\x09ವಾರ\x16ಕಳೆದ ವಾರ\x0dಈ ವಾರ\x1cಮುಂದಿನ ವಾರ\x1c{0} ವಾರದಲ್ಲಿ\x1f{0} ವಾರ" + + "ಗಳಲ್ಲಿ {0} ವಾರದ ಹಿಂದೆ#{0} ವಾರಗಳ ಹಿಂದೆ\x0d{0} ವಾರ\x09ದಿನ\x12ಮೊನ್ನೆ\x12ನ" + + "ಿನ್ನೆ\x0cಇಂದು\x0cನಾಳೆ\x18ನಾಡಿದ್ದು\x1c{0} ದಿನದಲ್ಲಿ\x1f{0} ದಿನಗಳಲ್ಲಿ {0}" + + " ದಿನದ ಹಿಂದೆ#{0} ದಿನಗಳ ಹಿಂದೆ\x16ವಾರದ ದಿನ\x22ಕಳೆದ ಭಾನುವಾರ\x19ಈ ಭಾನುವಾರ(ಮುಂ" + + "ದಿನ ಭಾನುವಾರ%{0} ಭಾನುವಾರದಂದು({0} ಭಾನುವಾರಗಳಂದು,{0} ಭಾನುವಾರದ ಹಿಂದೆ/{0} ಭಾ" + + "ನುವಾರಗಳ ಹಿಂದೆ\x1fಕಳೆದ ಸೋಮವಾರ\x16ಈ ಸೋಮವಾರ%ಮುಂದಿನ ಸೋಮವಾರ\x22{0} ಸೋಮವಾರದಂ" + + "ದು%{0} ಸೋಮವಾರಗಳಂದು){0} ಸೋಮವಾರದ ಹಿಂದೆ,{0} ಸೋಮವಾರಗಳ ಹಿಂದೆ\x22ಕಳೆದ ಮಂಗಳವಾ" + + "ರ\x19ಈ ಮಂಗಳವಾರ(ಮುಂದಿನ ಮಂಗಳವಾರ%{0} ಮಂಗಳವಾರದಂದು({0} ಮಂಗಳವಾರಗಳಂದು,{0} ಮಂಗ" + + "ಳವಾರದ ಹಿಂದೆ/{0} ಮಂಗಳವಾರಗಳ ಹಿಂದೆ\x1fಕಳೆದ ಬುಧವಾರ\x16ಈ ಬುಧವಾರ%ಮುಂದಿನ ಬುಧವ" + + "ಾರ\x22{0} ಬುಧವಾರದಂದು%{0} ಬುಧವಾರಗಳಂದು){0} ಬುಧವಾರದ ಹಿಂದೆ,{0} ಬುಧವಾರಗಳ ಹಿ" + + "ಂದೆ\x22ಕಳೆದ ಗುರುವಾರ\x19ಈ ಗುರುವಾರ(ಮುಂದಿನ ಗುರುವಾರ%{0} ಗುರುವಾರದಂದು({0} ಗು" + + "ರುವಾರಗಳಂದು,{0} ಗುರುವಾರದ ಹಿಂದೆ/{0} ಗುರುವಾರಗಳ ಹಿಂದೆ%ಕಳೆದ ಶುಕ್ರವಾರ\x1cಈ ಶ" + + "ುಕ್ರವಾರ+ಮುಂದಿನ ಶುಕ್ರವಾರ({0} ಶುಕ್ರವಾರದಂದು.{0} ಶುಕ್ರವಾರಗಳಲ್ಲಿ/{0} ಶುಕ್ರವ" + + "ಾರದ ಹಿಂದೆ2{0} ಶುಕ್ರವಾರಗಳ ಹಿಂದೆ\x1fಕಳೆದ ಶನಿವಾರ\x16ಈ ಶನಿವಾರ%ಮುಂದಿನ ಶನಿವಾ" + + "ರ\x22{0} ಶನಿವಾರದಂದು%{0} ಶನಿವಾರಗಳಂದು){0} ಶನಿವಾರದ ಹಿಂದೆ,{0} ಶನಿವಾರಗಳ ಹಿಂ" + + "ದೆ1ಪೂರ್ವಾಹ್ನ/ಅಪರಾಹ್ನ\x0cಗಂಟೆ\x10ಈ ಗಂಟೆ\x1f{0} ಗಂಟೆಯಲ್ಲಿ\x22{0} ಗಂಟೆಗಳಲ" + + "್ಲಿ {0} ಗಂಟೆ ಹಿಂದೆ&{0} ಗಂಟೆಗಳ ಹಿಂದೆ\x0fನಿಮಿಷ\x13ಈ ನಿಮಿಷ\x22{0} ನಿಮಿಷದಲ" + + "್ಲಿ%{0} ನಿಮಿಷಗಳಲ್ಲಿ){0} ನಿಮಿಷಗಳ ಹಿಂದೆ&{0} ನಿಮಿಷದ ಹಿಂದೆ\x15ಸೆಕೆಂಡ್\x06ಈ" + + "ಗ+{0} ಸೆಕೆಂಡ್\u200cನಲ್ಲಿ.{0} ಸೆಕೆಂಡ್\u200cಗಳಲ್ಲಿ){0} ಸೆಕೆಂಡ್ ಹಿಂದೆ/{0}" + + " ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ\x13ಸಮಯ ವಲಯ\x0d{0} ಸಮಯ\x1a{0} ದಿನದ ಸಮಯ&{0} ಪ್ರಮಾಣಿತ ಸಮಯ5" + + "ಬ್ರಿಟಿಷ್ ಬೇಸಿಗೆ ಸಮಯ2ಐರಿಷ್ ಪ್ರಮಾಣಿತ ಸಮಯ\x16ಏಕರ್ ಸಮಯ/ಏಕರ್ ಪ್ರಮಾಣಿತ ಸಮಯ)ಏ" + + "ಕರ್ ಬೇಸಿಗೆ ಸಮಯ+ಅಫಘಾನಿಸ್ತಾನ ಸಮಯ,ಮಧ್ಯ ಆಫ್ರಿಕಾ ಸಮಯ/ಪೂರ್ವ ಆಫ್ರಿಕಾ ಸಮಯKದಕ್ಷ" + + "ಿಣ ಆಫ್ರಿಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ2ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಸಮಯKಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ" + + "Eಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಬೇಸಿಗೆ ಸಮಯ\x1fಅಲಾಸ್ಕಾ ಸಮಯ5ಅಲಸ್ಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ/\u200cಅಲಾಸ" + + "್ಕಾ ಹಗಲು ಸಮಯ\x1fಆಲ್ಮೇಟಿ ಸಮಯ8ಆಲ್ಮೇಟಿ ಪ್ರಮಾಣಿತ ಸಮಯ2ಆಲ್ಮೇಟಿ ಬೇಸಿಗೆ ಸಮಯ" + + "\x1fಅಮೆಜಾನ್ ಸಮಯ8ಅಮೆಜಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಅಮೆಜಾನ್ ಬೇಸಿಗೆ ಸಮಯBಉತ್ತರ ಅಮೆರಿಕದ ಕೇ" + + "ಂದ್ರ ಸಮಯ[ಉತ್ತರ ಅಮೆರಿಕದ ಕೇಂದ್ರ ಪ್ರಮಾಣಿತ ಸಮಯUಉತ್ತರ ಅಮೆರಿಕದ ಕೇಂದ್ರೀಯ ದಿನದ" + + " ಸಮಯBಉತ್ತರ ಅಮೆರಿಕದ ಪೂರ್ವದ ಸಮಯ[ಉತ್ತರ ಅಮೆರಿಕದ ಪೂರ್ವದ ಪ್ರಮಾಣಿತ ಸಮಯOಉತ್ತರ ಅಮ" + + "ೆರಿಕದ ಪೂರ್ವದ ದಿನದ ಸಮಯ?ಉತ್ತರ ಅಮೆರಿಕದ ಪರ್ವತ ಸಮಯXಉತ್ತರ ಅಮೆರಿಕದ ಪರ್ವತ ಪ್ರಮ" + + "ಾಣಿತ ಸಮಯLಉತ್ತರ ಅಮೆರಿಕದ ಪರ್ವತ ದಿನದ ಸಮಯHಉತ್ತರ ಅಮೆರಿಕದ ಪೆಸಿಫಿಕ್ ಸಮಯaಉತ್ತರ" + + " ಅಮೆರಿಕದ ಪೆಸಿಫಿಕ್ ಪ್ರಮಾಣಿತ ಸಮಯUಉತ್ತರ ಅಮೆರಿಕದ ಪೆಸಿಫಿಕ್ ದಿನದ ಸಮಯ\x1fಅನಡೀರ್" + + "\u200c ಸಮಯ8ಅನಡೀರ್\u200c ಪ್ರಮಾಣಿತ ಸಮಯ,ಅನಡೀರ್\u200c ಹಗಲು ಸಮಯ\x19ಅಪಿಯಾ ಸಮಯ2" + + "ಅಪಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ&ಅಪಿಯಾ ಹಗಲು ಸಮಯ\x19ಅಕ್ಟೌ ಸಮಯ2ಅಕ್ಟೌ ಪ್ರಮಾಣಿತ ಸಮಯ,ಅಕ್ಟ" + + "ೌ ಬೇಸಿಗೆ ಸಮಯ\x1fಅಕ್ಟೋಬೆ ಸಮಯ8ಅಕ್ಟೋಬೆ ಪ್ರಮಾಣಿತ ಸಮಯ2ಅಕ್ಟೋಬೆ ಬೇಸಿಗೆ ಸಮಯ" + + "\x22ಅರೇಬಿಯನ್ ಸಮಯ;ಅರೇಬಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ/ಅರೇಬಿಯನ್ ಹಗಲು ಸಮಯ(ಅರ್ಜೆಂಟಿನಾ ಸಮಯA" + + "ಅರ್ಜೆಂಟೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯ;ಅರ್ಜೆಂಟಿನಾ ಬೇಸಿಗೆ ಸಮಯ;ಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಸಮಯTಪಶ" + + "್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯNಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಬೇಸಿಗೆ ಸಮಯ\x22ಅರ್ಮೇನಿಯ " + + "ಸಮಯ;ಅರ್ಮೇನಿಯ ಪ್ರಮಾಣಿತ ಸಮಯ5ಅರ್ಮೇನಿಯ ಬೇಸಿಗೆ ಸಮಯ(ಅಟ್ಲಾಂಟಿಕ್ ಸಮಯAಅಟ್ಲಾಂಟಿಕ" + + "್ ಪ್ರಮಾಣಿತ ಸಮಯ5ಅಟ್ಲಾಂಟಿಕ್ ದಿನದ ಸಮಯ>ಕೇಂದ್ರ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯZಆಸ್ಟ್ರೇಲಿಯಾದ" + + " ಕೇಂದ್ರ ಪ್ರಮಾಣಿತ ಸಮಯNಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಹಗಲು ಸಮಯTಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ" + + "್ಚಿಮ ಸಮಯmಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ್ಚಿಮ ಪ್ರಮಾಣಿತ ಸಮಯaಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪ" + + "ಶ್ಚಿಮ ಹಗಲು ಸಮಯ;ಪೂರ್ವ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯWಆಸ್ಟ್ರೇಲಿಯಾದ ಪೂರ್ವ ಪ್ರಮಾಣಿತ ಸಮಯKಪ" + + "ೂರ್ವ ಆಸ್ಟ್ರೇಲಿಯಾದ ಹಗಲು ಸಮಯ>ಪಶ್ಚಿಮ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯZಆಸ್ಟ್ರೇಲಿಯಾದ ಪಶ್ಚಿಮ " + + "ಪ್ರಮಾಣಿತ ಸಮಯNಆಸ್ಟ್ರೇಲಿಯಾದ ಪಶ್ಚಿಮ ಹಗಲು ಸಮಯ(ಅಜರ್ಬೈಜಾನ್ ಸಮಯAಅಜರ್ಬೈಜಾನ್ ಪ್" + + "ರಮಾಣಿತ ಸಮಯ;ಅಜರ್ಬೈಜಾನ್ ಬೇಸಿಗೆ ಸಮಯ\x1cಅಜೋರಸ್ ಸಮಯ5ಅಜೋರಸ್ ಪ್ರಮಾಣಿತ ಸಮಯ/ಅಜೋ" + + "ರಸ್ ಬೇಸಿಗೆ ಸಮಯ(ಬಾಂಗ್ಲಾದೇಶ ಸಮಯAಬಾಂಗ್ಲಾದೇಶ ಪ್ರಮಾಣಿತ ಸಮಯ;ಬಾಂಗ್ಲಾದೇಶ ಬೇಸಿಗ" + + "ೆ ಸಮಯ\x1cಭೂತಾನ್ ಸಮಯ\x22ಬೊಲಿವಿಯಾ ಸಮಯ+ಬ್ರೆಸಿಲಿಯಾದ ಸಮಯAಬ್ರೆಸಿಲಿಯಾ ಪ್ರಮಾಣಿ" + + "ತ ಸಮಯ;ಬ್ರೆಸಿಲಿಯಾ ಬೇಸಿಗೆ ಸಮಯ8ಬ್ರೂನಿ ದಾರುಸಲೆಮ್ ಸಮಯ&ಕೇಪ್ ವರ್ಡ್ ಸಮಯ?ಕೇಪ್ ವ" + + "ರ್ಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ9ಕೇಪ್ ವರ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ2ಚಮೋರೋ ಪ್ರಮಾಣಿತ ಸಮಯ\x19ಚಥಾಮ್ ಸಮ" + + "ಯ2ಚಥಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ&ಚಥಾಮ್ ಹಗಲು ಸಮಯ\x16ಚಿಲಿ ಸಮಯ/ಚಿಲಿ ಪ್ರಮಾಣಿತ ಸಮಯ)ಚಿಲಿ" + + " ಬೇಸಿಗೆ ಸಮಯ\x16ಚೀನಾ ಸಮಯ/ಚೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯ#ಚೀನಾ ಹಗಲು ಸಮಯ.ಚೊಯ್\u200cಬಲ್ಸಾನ" + + "್ ಸಮಯMಚೊಯ್\u200c\u200cಬಲ್ಸಾನ್\u200c ಪ್ರಮಾಣಿತ ಸಮಯAಚೊಯ್\u200cಬಲ್ಸಾನ್ ಬೇಸ" + + "ಿಗೆ ಸಮಯ5ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ ಸಮಯ2ಕೋಕೋಸ್ ದ್ವೀಪಗಳ ಸಮಯ\x22ಕೊಲಂಬಿಯಾ ಸಮಯ;ಕೊಲಂಬಿಯ" + + "ಾ ಪ್ರಮಾಣಿತ ಸಮಯ5ಕೊಲಂಬಿಯಾ ಬೇಸಿಗೆ ಸಮಯ,ಕುಕ್ ದ್ವೀಪಗಳ ಸಮಯEಕುಕ್ ದ್ವೀಪಗಳ ಪ್ರಮಾ" + + "ಣಿತ ಸಮಯ[ಕುಕ್ ದ್ವೀಪಗಳ ಮಧ್ಯಕಾಲೀನ ಬೇಸಿಗೆ ಸಮಯ\x1cಕ್ಯೂಬಾ ಸಮಯ5ಕ್ಯೂಬಾ ಪ್ರಮಾಣಿ" + + "ತ ಸಮಯ)ಕ್ಯೂಬಾ ದಿನದ ಸಮಯ\x1cಡೇವಿಸ್ ಸಮಯ9ಡುಮಂಟ್-ಡಿ ಉರ್ವಿಲೆ ಸಮಯ,ಪೂರ್ವ ಟಿಮೋರ್" + + " ಸಮಯ,ಈಸ್ಟರ್ ದ್ವೀಪ ಸಮಯEಈಸ್ಟರ್ ದ್ವೀಪ ಪ್ರಮಾಣಿತ ಸಮಯ?ಈಸ್ಟರ್ ದ್ವೀಪ ಬೇಸಿಗೆ ಸಮಯ%" + + "ಈಕ್ವೆಡಾರ್ ಸಮಯ2ಮಧ್ಯ ಯುರೋಪಿಯನ್ ಸಮಯKಮಧ್ಯ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯEಮಧ್ಯ ಯುರೋ" + + "ಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯ5ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಸಮಯNಪೂರ್ವ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯHಪೂರ್" + + "ವ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯNಮತ್ತಷ್ಟು-ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಸಮಯ8ಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಸ" + + "ಮಯQಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯKಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯJಫಾಲ್ಕ್" + + "\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಸಮಯcಫಾಲ್ಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪ್ರಮಾಣಿತ ಸಮಯ]ಫಾಲ್ಕ" + + "್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಬೇಸಿಗೆ ಸಮಯ\x16ಫಿಜಿ ಸಮಯ/ಫಿಜಿ ಪ್ರಮಾಣಿತ ಸಮಯ)ಫಿಜಿ ಬ" + + "ೇಸಿಗೆ ಸಮಯ/ಫ್ರೆಂಚ್ ಗಯಾನಾ ಸಮಯaದಕ್ಷಿಣ ಫ್ರೆಂಚ್ ಮತ್ತು ಅಂಟಾರ್ಟಿಕಾ ಸಮಯ(ಗಾಲಾಪಾ" + + "ಗೋಸ್ ಸಮಯ(ಗ್ಯಾಂಬಿಯರ್ ಸಮಯ\x22ಜಾರ್ಜಿಯಾ ಸಮಯ;ಜಾರ್ಜಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ5ಜಾರ್ಜಿಯಾ" + + " ಬೇಸಿಗೆ ಸಮಯ;ಗಿಲ್ಬರ್ಟ್ ದ್ವೀಪಗಳ ಸಮಯGಗ್ರೀನ್\u200cವಿಚ್ ಸರಾಸರಿ ಕಾಲಮಾನDಪೂರ್ವ ಗ" + + "್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಸಮಯ]ಪೂರ್ವ ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯWಪೂರ್ವ ಗ್" + + "ರೀನ್\u200cಲ್ಯಾಂಡ್ ಬೇಸಿಗೆ ಸಮಯGಪಶ್ಚಿಮ ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಸಮಯ`ಪಶ್ಚಿಮ ಗ್ರ" + + "ೀನ್\u200cಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯZಪಶ್ಚಿಮ ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಬೇಸಿಗೆ ಸಮಯ5ಗು" + + "ವಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಗಲ್ಫ್ ಪ್ರಮಾಣಿತ ಸಮಯ\x19ಗಯಾನಾ ಸಮಯ8ಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಸಮಯ" + + "Qಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯEಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಹಗಲು ಸಮಯ)ಹಾಂಗ್ ಕಾಂಗ್ ಸಮಯ" + + "Bಹಾಂಗ್ ಕಾಂಗ್ ಪ್ರಮಾಣಿತ ಸಮಯ<ಹಾಂಗ್ ಕಾಂಗ್ ಬೇಸಿಗೆ ಸಮಯ\x19ಹವ್ಡ್ ಸಮಯ2ಹವ್ಡ್ ಪ್ರಮ" + + "ಾಣಿತ ಸಮಯ,ಹವ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ5ಭಾರತೀಯ ಪ್ರಮಾಣಿತ ಸಮಯ/ಹಿಂದೂ ಮಹಾಸಾಗರ ಸಮಯ\x22ಇಂಡ" + + "ೊಚೈನಾ ಸಮಯ5ಮಧ್ಯ ಇಂಡೋನೇಷಿಯಾ ಸಮಯ8ಪೂರ್ವ ಇಂಡೋನೇಷಿಯಾ ಸಮಯ8ಪಶ್ಚಿಮ ಇಂಡೋನೇಷಿಯ ಸಮ" + + "ಯ\x19ಇರಾನ್ ಸಮಯ2ಇರಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ&ಇರಾನ್ ಹಗಲು ಸಮಯ+ಇರ್\u200cಕುಟಸ್ಕ್ ಸಮಯD" + + "ಇರ್\u200cಕುಟಸ್ಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ>ಇರ್\u200cಕುಟಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ\x1fಇಸ್ರೇಲ್ ಸ" + + "ಮಯ8ಇಸ್ರೇಲ್ ಪ್ರಮಾಣಿತ ಸಮಯ,ಇಸ್ರೇಲ್ ಹಗಲು ಸಮಯ\x19ಜಪಾನ್ ಸಮಯ2ಜಪಾನ್ ಪ್ರಮಾಣಿತ ಸ" + + "ಮಯ&ಜಪಾನ್ ಹಗಲು ಸಮಯbಪೆತ್ರೋಪಾವ್ಲೋಸ್ಕ್\u200c\u200c-ಕಮ್ಚತ್ಸ್\u200cಕೀ ಸಮಯ{ಪೆ" + + "ತ್ರೋಪಾವ್ಲೋಸ್ಕ್\u200c\u200c-ಕಮ್ಚತ್ಸ್\u200cಕೀ ಪ್ರಮಾಣಿತ ಸಮಯuಪೆತ್ರೋಪಾವ್ಲೋಸ" + + "್ಕ್\u200c\u200c-ಕಮ್ಚತ್ಸ್\u200cಕೀ ಬೇಸಿಗೆ ಸಮಯ8ಪೂರ್ವ ಕಜಕಿಸ್ತಾನ್ ಸಮಯ;ಪಶ್ಚಿ" + + "ಮ ಕಜಕಿಸ್ತಾನ್ ಸಮಯ\x1fಕೊರಿಯನ್ ಸಮಯ8ಕೊರಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ,ಕೊರಿಯನ್ ಹಗಲು ಸಮಯ" + + "\x19ಕೊಸರೆ ಸಮಯ=ಕ್ರಾಸ್\u200cನೊಯಾರ್ಸ್ಕ್ ಸಮಯVಕ್ರಾಸ್\u200cನೊಯಾರ್ಸ್ಕ್ ಪ್ರಮಾಣಿತ" + + " ಸಮಯPಕ್ರಾಸ್\u200cನೊಯಾರ್ಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ.ಕಿರ್ಗಿಸ್ತಾನ್ ಸಮಯ\x16ಲಂಕಾ ಸಮಯ,ಲೈನ್" + + " ದ್ವೀಪಗಳ ಸಮಯ)ಲಾರ್ಡ್ ಹೋವ್ ಸಮಯBಲಾರ್ಡ್ ಹೋವ್ ಪ್ರಮಾಣಿತ ಸಮಯ<ಲಾರ್ಡ್ ಹೋವ್ ಬೆಳಗಿನ" + + " ಸಮಯ\x19ಮಕಾವ್ ಸಮಯ2ಮಕಾವ್ ಪ್ರಮಾಣಿತ ಸಮಯ,ಮಕಾವ್ ಬೇಸಿಗೆ ಸಮಯAಮ್ಯಾಕ್\u200cಕ್ಯುರೈ" + + " ದ್ವೀಪ ಸಮಯ\x1cಮಗಡಾನ್ ಸಮಯ5ಮಗಡಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ/ಮಗಡಾನ್ ಬೇಸಿಗೆ ಸಮಯ\x1fಮಲೇಷಿಯ" + + "ಾ ಸಮಯ(ಮಾಲ್ಡೀವ್ಸ್ ಸಮಯ+ಮಾರ್ಕ್ಯುಸಸ್ ಸಮಯ5ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳ ಸಮಯ\x1fಮಾರಿಷಸ್ ಸಮ" + + "ಯ8ಮಾರಿಷಸ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಮಾರಿಷಸ್ ಬೇಸಿಗೆ ಸಮಯ\x22ಮಾವ್\u200cಸನ್ ಸಮಯ5ವಾಯವ್ಯ " + + "ಮೆಕ್ಸಿಕೊ ಸಮಯNವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಪ್ರಮಾಣಿತ ಸಮಯBವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಹಗಲು ಸಮಯ>ಮೆಕ" + + "್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಸಮಯWಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಪ್ರಮಾಣಿತ ಸಮಯKಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್" + + " ಹಗಲು ಸಮಯ,ಉಲನ್ ಬ್ಯಾಟರ್ ಸಮಯEಉಲನ್ ಬ್ಯಾಟರ್ ಪ್ರಮಾಣಿತ ಸಮಯ?ಉಲನ್ ಬ್ಯಾಟರ್ ಬೇಸಿಗೆ" + + " ಸಮಯ\x1cಮಾಸ್ಕೋ ಸಮಯ5ಮಾಸ್ಕೋ ಪ್ರಮಾಣಿತ ಸಮಯ/ಮಾಸ್ಕೋ ಬೇಸಿಗೆ ಸಮಯ(ಮ್ಯಾನ್ಮಾರ್ ಸಮಯ" + + "\x16ನೌರು ಸಮಯ\x19ನೇಪಾಳ ಸಮಯ8ಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಸಮಯQಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಪ್ರಮಾಣಿತ" + + " ಸಮಯNಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಬೇಸಿಗೆಯ ಸಮಯ1ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಸಮಯJನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಪ್ರಮಾಣ" + + "ಿತ ಸಮಯ>ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಹಗಲು ಸಮಯ=ನ್ಯೂಫೌಂಡ್\u200cಲ್ಯಾಂಡ್ ಸಮಯVನ್ಯೂಫೌಂಡ್" + + "\u200cಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯJನ್ಯೂಫೌಂಡ್\u200cಲ್ಯಾಂಡ್ ದಿನದ ಸಮಯ\x16ನಿಯು ಸಮಯ2ನ" + + "ಾರ್ಫೋಕ್ ದ್ವೀಪ ಸಮಯEಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಸಮಯ^ಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಪ್ರಮ" + + "ಾಣಿತ ಸಮಯUಫರ್ನಾಂಡೋ ದೆ ನೊರೊನ್ಹಾ ಬೇಸಿಗೆ ಸಮಯEಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳ ಸಮಯ7ನೊವ" + + "ೊಸಿಬಿರ್\u200cಸ್ಕ್ ಸಮಯPನೊವೊಸಿಬಿರ್\u200cಸ್ಕ್ ಪ್ರಮಾಣಿತ ಸಮಯJನೊವೊಸಿಬಿರ್" + + "\u200cಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ\x1fಒಮಾಸ್ಕ್ ಸಮಯ8ಒಮಾಸ್ಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಒಮಾಸ್ಕ್ ಬೇಸಿಗೆ" + + " ಸಮಯ%ಪಾಕಿಸ್ತಾನ ಸಮಯ>ಪಾಕಿಸ್ತಾನ ಪ್ರಮಾಣಿತ ಸಮಯ8ಪಾಕಿಸ್ತಾನ ಬೇಸಿಗೆ ಸಮಯ\x1cಪಾಲಾವ್" + + " ಸಮಯ9ಪಪುವಾ ನ್ಯೂ ಗಿನಿಯಾ ಸಮಯ\x1fಪರಾಗ್ವೇ ಸಮಯ8ಪರಾಗ್ವೇ ಪ್ರಮಾಣಿತ ಸಮಯ2ಪರಾಗ್ವೇ ಬ" + + "ೇಸಿಗೆ ಸಮಯ\x16ಪೆರು ಸಮಯ/ಪೆರು ಪ್ರಮಾಣಿತ ಸಮಯ)ಪೆರು ಬೇಸಿಗೆ ಸಮಯ\x22ಫಿಲಿಫೈನ್ ಸಮ" + + "ಯ;ಫಿಲಿಫೈನ್ ಪ್ರಮಾಣಿತ ಸಮಯ5ಫಿಲಿಫೈನ್ ಬೇಸಿಗೆ ಸಮಯ8ಫಿನಿಕ್ಸ್ ದ್ವೀಪಗಳ ಸಮಯUಸೇಂಟ್" + + " ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಸಮಯnಸೇಂಟ್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಪ್ರಮಾಣಿತ ಸಮಯbಸೇಂಟ" + + "್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಹಗಲು ಸಮಯ+ಪಿಟ್\u200cಕೈರ್ನ್ ಸಮಯ\x1cಪೊನಾಪೆ ಸಮಯ.ಪ್" + + "ಯೊಂಗ್ಯಾಂಗ್ ಸಮಯ(ಕೋಜಿಲೋರ್ಡಾ ಸಮಯAಕೋಜಿಲೋರ್ಡಾ ಪ್ರಮಾಣಿತ ಸಮಯ;ಕೋಜಿಲೋರ್ಡಾ ಬೇಸಿಗ" + + "ೆ ಸಮಯ%ರಿಯೂನಿಯನ್ ಸಮಯ\x1cರೊತೇರಾ ಸಮಯ.ಸ್ಯಾಕ್\u200cಹಲಿನ್ ಸಮಯGಸ್ಯಾಕ್\u200cಹಲ" + + "ಿನ್ ಪ್ರಮಾಣಿತ ಸಮಯAಸ್ಯಾಕ್\u200cಹಲಿನ್ ಬೇಸಿಗೆ ಸಮಯ\x13ಸಮರ ಸಮಯ,ಸಮರ ಪ್ರಮಾಣಿತ " + + "ಸಮಯ&ಸಮರ ಬೇಸಿಗೆ ಸಮಯ\x19ಸಮೋವಾ ಸಮಯ2ಸಮೋವಾ ಪ್ರಮಾಣಿತ ಸಮಯ,ಸಮೋವಾ ಬೇಸಿಗೆ ಸಮಯ" + + "\x22ಸೀಷೆಲ್ಸ್ ಸಮಯ>ಸಿಂಗಾಪುರ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಸಾಲಮನ್ ದ್ವೀಪಗಳ ಸಮಯ5ದಕ್ಷಿಣ ಜಾರ್ಜಿ" + + "ಯಾ ಸಮಯ\x22ಸುರಿನೇಮ್ ಸಮಯ\x1cಸ್ಯೊವಾ ಸಮಯ\x1cತಾಹಿತಿ ಸಮಯ\x16ತೈಪೆ ಸಮಯ/ತೈಪೆ ಪ್" + + "ರಮಾಣಿತ ಸಮಯ#ತೈಪೆ ಹಗಲು ಸಮಯ(ತಝಕಿಸ್ತಾನ್ ಸಮಯ\x22ಟೊಕೆಲಾವ್ ಸಮಯ\x19ಟೊಂಗಾ ಸಮಯ2ಟ" + + "ೊಂಗಾ ಪ್ರಮಾಣಿತ ಸಮಯ,ಟೊಂಗಾ ಬೇಸಿಗೆ ಸಮಯ\x16ಚುಕ್ ಸಮಯ=ತುರ್ಕ್\u200cಮೇನಿಸ್ತಾನ್ " + + "ಸಮಯVತುರ್ಕ್\u200cಮೇನಿಸ್ತಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯPತುರ್ಕ್\u200cಮೇನಿಸ್ತಾನ್ ಬೇಸಿಗೆ " + + "ಸಮಯ\x1cತುವಾಲು ಸಮಯ\x1fಉರುಗ್ವೇ ಸಮಯ8ಉರುಗ್ವೇ ಪ್ರಮಾಣಿತ ಸಮಯ2ಉರುಗ್ವೇ ಬೇಸಿಗೆ ಸ" + + "ಮಯ1ಉಜ್ಬೇಕಿಸ್ತಾನ್ ಸಮಯJಉಜ್ಬೇಕಿಸ್ತಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯDಉಜ್ಬೇಕಿಸ್ತಾನ್ ಬೇಸಿಗೆ ಸ" + + "ಮಯ\x19ವನೌತು ಸಮಯ2ವನೌತು ಪ್ರಮಾಣಿತ ಸಮಯ,ವನೌತು ಬೇಸಿಗೆ ಸಮಯ(ವೆನಿಜುವೆಲಾ ಸಮಯ4ವ್ಲ" + + "ಾಡಿವೋಸ್ಟೋಕ್ ಸಮಯMವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಪ್ರಮಾಣಿತ ಸಮಯGವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಬೇಸಿಗೆ ಸಮಯ." + + "ವೋಲ್ಗೋಗಾರ್ಡ್ ಸಮಯGವೋಲ್ಗೋಗಾರ್ಡ್ ಪ್ರಮಾಣಿತ ಸಮಯAವೋಲ್ಗೋಗಾರ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ\x22" + + "ವೋಸ್ಟೊಕ್ ಸಮಯ&ವೇಕ್ ದ್ವೀಪ ಸಮಯKವ್ಯಾಲೀಸ್ ಮತ್ತು ಫ್ಯುಟುನಾ ಸಮಯ%ಯಾಕುಟ್ಸಕ್ ಸಮಯ>" + + "ಯಾಕುಟ್ಸಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ8ಯಾಕುಟ್ಸಕ್ ಬೇಸಿಗೆ ಸಮಯ4ಯೇಕಟರಿನ್\u200cಬರ್ಗ್ ಸಮಯMಯೇ" + + "ಕಟರಿನ್\u200cಬರ್ಗ್ ಪ್ರಮಾಣಿತ ಸಮಯJಯೇಕೇಟರಿನ್\u200dಬರ್ಗ್ ಬೇಸಿಗೆ ಸಮಯ" + +var bucket59 string = "" + // Size: 8218 bytes + "\x06불기\x041월\x042월\x043월\x044월\x045월\x046월\x047월\x048월\x049월\x0510월\x051" + + "1월\x0512월\x06윤{0}\x06입춘\x06우수\x06경칩\x06춘분\x06청명\x06곡우\x06입하\x06소만\x06망종" + + "\x06하지\x06소서\x06대서\x06입추\x06처서\x06백로\x06추분\x06한로\x06상강\x06입동\x06소설\x06대설" + + "\x06동지\x06소한\x06대한\x06갑자\x06을축\x06병인\x06정묘\x06무진\x06기사\x06경오\x06신미\x06임신" + + "\x06계유\x06갑술\x06을해\x06병자\x06정축\x06무인\x06기묘\x06경진\x06신사\x06임오\x06계미\x06갑신" + + "\x06을유\x06병술\x06정해\x06무자\x06기축\x06경인\x06신묘\x06임진\x06계사\x06갑오\x06을미\x06병신" + + "\x06정유\x06무술\x06기해\x06경자\x06신축\x06임인\x06계묘\x06갑진\x06을사\x06병오\x06정미\x06무신" + + "\x06기유\x06경술\x06신해\x06임자\x06계축\x06갑인\x06을묘\x06병진\x06정사\x06무오\x06기미\x06경신" + + "\x06신유\x06임술\x06계해\x12U년 MMM d일 EEEE\x0dU년 MMM d일\x08y. M. d.\x06투트\x09바" + + "바흐\x09하투르\x0c키야흐크\x09투바흐\x09암쉬르\x0c바라마트\x0f바라문다흐\x09바샨스\x0c바우나흐\x09아비브" + + "\x09미스라\x06나시\x03자\x03축\x03인\x03묘\x03진\x03사\x03오\x03미\x03신\x03유\x03술\x03" + + "해\x0c매스캐램\x09테켐트\x09헤다르\x0c타흐사스\x06테르\x0c얘카티트\x0c매가비트\x0c미야지야\x09겐보트" + + "\x06새네\x06함레\x09내하세\x09파구맨\x15G y년 M월 d일 EEEE\x10G y년 M월 d일\x0aG y. M. d" + + ".\x03일\x03월\x03화\x03수\x03목\x03금\x03토\x09일요일\x09월요일\x09화요일\x09수요일\x09목요일" + + "\x09금요일\x09토요일\x071분기\x072분기\x073분기\x074분기\x0d제 1/4분기\x0d제 2/4분기\x0d제 3/" + + "4분기\x0d제 4/4분기\x06자정\x06정오\x06새벽\x06오전\x06오후\x06저녁\x03밤\x09기원전\x06서기\x13" + + "y년 M월 d일 EEEE\x0ey년 M월 d일\x09yy. M. d.\x15a h시 m분 s초 zzzz\x12a h시 m분 s초 " + + "z\x09a h:mm:ss\x06a h:mm\x0c디스리월\x0c말케스월\x0c기슬르월\x09데벳월\x09스밧월\x0b아달월 1" + + "\x09아달월\x0b아달월 2\x09닛산월\x0c이야르월\x09시완월\x0c담무르월\x06압월\x09엘룰월\x09무하람\x09사파" + + "르\x11라비 알 아왈\x11라비 알 쎄니\x14주마다 알 아왈\x14주마다 알 쎄니\x06라잡\x09쉐아반\x09라마단" + + "\x06쉐왈\x0e듀 알 까다\x0e듀 알 히자\x15다이카 (645 ~ 650)\x15하쿠치 (650 ~ 671)\x15하쿠호 " + + "(672 ~ 686)\x12슈초 (686 ~ 701)\x15다이호 (701 ~ 704)\x15게이운 (704 ~ 708)\x12와" + + "도 (708 ~ 715)\x15레이키 (715 ~ 717)\x12요로 (717 ~ 724)\x12진키 (724 ~ 729)" + + "\x12덴표 (729 ~ 749)\x18덴표칸포 (749 ~ 749)\x18덴표쇼호 (749 ~ 757)\x18덴표호지 (757 " + + "~ 765)\x18덴표진고 (765 ~ 767)\x1b진고케이운 (767 ~ 770)\x12호키 (770 ~ 780)\x12덴오 " + + "(781 ~ 782)\x15엔랴쿠 (782 ~ 806)\x15다이도 (806 ~ 810)\x12고닌 (810 ~ 824)\x12덴" + + "초 (824 ~ 834)\x12조와 (834 ~ 848)\x12가쇼 (848 ~ 851)\x12닌주 (851 ~ 854)" + + "\x15사이코 (854 ~ 857)\x12덴난 (857 ~ 859)\x12조간 (859 ~ 877)\x12간교 (877 ~ 885" + + ")\x12닌나 (885 ~ 889)\x12간표 (889 ~ 898)\x15쇼타이 (898 ~ 901)\x12엔기 (901 ~ 92" + + "3)\x12엔초 (923 ~ 931)\x15조헤이 (931 ~ 938)\x12덴교 (938 ~ 947)\x15덴랴쿠 (947 ~ " + + "957)\x15덴토쿠 (957 ~ 961)\x12오와 (961 ~ 964)\x12고호 (964 ~ 968)\x12안나 (968 ~" + + " 970)\x15덴로쿠 (970 ~ 973)\x12덴엔 (973 ~ 976)\x12조겐 (976 ~ 978)\x12덴겐 (978 " + + "~ 983)\x15에이간 (983 ~ 985)\x12간나 (985 ~ 987)\x15에이엔 (987 ~ 989)\x15에이소 (9" + + "89 ~ 990)\x15쇼랴쿠 (990 ~ 995)\x15조토쿠 (995 ~ 999)\x13조호 (999 ~ 1004)\x14간코" + + " (1004 ~ 1012)\x14조와 (1012 ~ 1017)\x14간닌 (1017 ~ 1021)\x14지안 (1021 ~ 102" + + "4)\x14만주 (1024 ~ 1028)\x14조겐 (1028 ~ 1037)\x17조랴쿠 (1037 ~ 1040)\x14조큐 (1" + + "040 ~ 1044)\x17간토쿠 (1044 ~ 1046)\x17에이쇼 (1046 ~ 1053)\x14덴기 (1053 ~ 1058" + + ")\x17고헤이 (1058 ~ 1065)\x17지랴쿠 (1065 ~ 1069)\x14엔큐 (1069 ~ 1074)\x14조호 (1" + + "074 ~ 1077)\x17쇼랴쿠 (1077 ~ 1081)\x17에이호 (1081 ~ 1084)\x17오토쿠 (1084 ~ 108" + + "7)\x14간지 (1087 ~ 1094)\x14가호 (1094 ~ 1096)\x17에이초 (1096 ~ 1097)\x17조토쿠 (" + + "1097 ~ 1099)\x14고와 (1099 ~ 1104)\x14조지 (1104 ~ 1106)\x14가쇼 (1106 ~ 1108)" + + "\x14덴닌 (1108 ~ 1110)\x17덴에이 (1110 ~ 1113)\x17에이큐 (1113 ~ 1118)\x17겐에이 (1" + + "118 ~ 1120)\x14호안 (1120 ~ 1124)\x14덴지 (1124 ~ 1126)\x17다이지 (1126 ~ 1131)" + + "\x14덴쇼 (1131 ~ 1132)\x14조쇼 (1132 ~ 1135)\x14호엔 (1135 ~ 1141)\x17에이지 (114" + + "1 ~ 1142)\x14고지 (1142 ~ 1144)\x14덴요 (1144 ~ 1145)\x14규안 (1145 ~ 1151)" + + "\x17닌페이 (1151 ~ 1154)\x14규주 (1154 ~ 1156)\x14호겐 (1156 ~ 1159)\x17헤이지 (11" + + "59 ~ 1160)\x1a에이랴쿠 (1160 ~ 1161)\x14오호 (1161 ~ 1163)\x14조칸 (1163 ~ 1165)" + + "\x17에이만 (1165 ~ 1166)\x14닌난 (1166 ~ 1169)\x14가오 (1169 ~ 1171)\x14조안 (117" + + "1 ~ 1175)\x14안겐 (1175 ~ 1177)\x14지쇼 (1177 ~ 1181)\x14요와 (1181 ~ 1182)" + + "\x17주에이 (1182 ~ 1184)\x17겐랴쿠 (1184 ~ 1185)\x14분지 (1185 ~ 1190)\x14겐큐 (11" + + "90 ~ 1199)\x14쇼지 (1199 ~ 1201)\x14겐닌 (1201 ~ 1204)\x14겐큐 (1204 ~ 1206)" + + "\x17겐에이 (1206 ~ 1207)\x14조겐 (1207 ~ 1211)\x17겐랴쿠 (1211 ~ 1213)\x14겐포 (12" + + "13 ~ 1219)\x14조큐 (1219 ~ 1222)\x14조오 (1222 ~ 1224)\x14겐닌 (1224 ~ 1225)" + + "\x17가로쿠 (1225 ~ 1227)\x17안테이 (1227 ~ 1229)\x14간키 (1229 ~ 1232)\x17조에이 (1" + + "232 ~ 1233)\x17덴푸쿠 (1233 ~ 1234)\x17분랴쿠 (1234 ~ 1235)\x17가테이 (1235 ~ 123" + + "8)\x17랴쿠닌 (1238 ~ 1239)\x14엔오 (1239 ~ 1240)\x14닌지 (1240 ~ 1243)\x14간겐 (1" + + "243 ~ 1247)\x14호지 (1247 ~ 1249)\x14겐초 (1249 ~ 1256)\x14고겐 (1256 ~ 1257)" + + "\x14쇼카 (1257 ~ 1259)\x14쇼겐 (1259 ~ 1260)\x14분오 (1260 ~ 1261)\x14고초 (1261" + + " ~ 1264)\x17분에이 (1264 ~ 1275)\x14겐지 (1275 ~ 1278)\x14고안 (1278 ~ 1288)" + + "\x14쇼오 (1288 ~ 1293)\x17에이닌 (1293 ~ 1299)\x14쇼안 (1299 ~ 1302)\x14겐겐 (130" + + "2 ~ 1303)\x14가겐 (1303 ~ 1306)\x17도쿠지 (1306 ~ 1308)\x14엔쿄 (1308 ~ 1311)" + + "\x14오초 (1311 ~ 1312)\x14쇼와 (1312 ~ 1317)\x14분포 (1317 ~ 1319)\x14겐오 (1319" + + " ~ 1321)\x14겐코 (1321 ~ 1324)\x14쇼추 (1324 ~ 1326)\x17가랴쿠 (1326 ~ 1329)" + + "\x17겐토쿠 (1329 ~ 1331)\x14겐코 (1331 ~ 1334)\x14겐무 (1334 ~ 1336)\x14엔겐 (133" + + "6 ~ 1340)\x17고코쿠 (1340 ~ 1346)\x17쇼헤이 (1346 ~ 1370)\x17겐토쿠 (1370 ~ 1372)" + + "\x14분추 (1372 ~ 1375)\x14덴주 (1375 ~ 1379)\x17고랴쿠 (1379 ~ 1381)\x14고와 (138" + + "1 ~ 1384)\x14겐추 (1384 ~ 1392)\x1a메이토쿠 (1384 ~ 1387)\x14가쿄 (1387 ~ 1389)" + + "\x14고오 (1389 ~ 1390)\x1a메이토쿠 (1390 ~ 1394)\x17오에이 (1394 ~ 1428)\x14쇼초 (1" + + "428 ~ 1429)\x17에이쿄 (1429 ~ 1441)\x17가키쓰 (1441 ~ 1444)\x14분안 (1444 ~ 1449" + + ")\x17호토쿠 (1449 ~ 1452)\x17교토쿠 (1452 ~ 1455)\x14고쇼 (1455 ~ 1457)\x17조로쿠 (" + + "1457 ~ 1460)\x14간쇼 (1460 ~ 1466)\x14분쇼 (1466 ~ 1467)\x14오닌 (1467 ~ 1469)" + + "\x17분메이 (1469 ~ 1487)\x15조쿄 (1487 ~ 1489)<\x17엔토쿠 (1489 ~ 1492)\x17메이오 (" + + "1492 ~ 1501)\x14분키 (1501 ~ 1504)\x17에이쇼 (1504 ~ 1521)\x1a다이에이 (1521 ~ 15" + + "28)\x17교로쿠 (1528 ~ 1532)\x14덴분 (1532 ~ 1555)\x14고지 (1555 ~ 1558)\x1a에이로쿠" + + " (1558 ~ 1570)\x14겐키 (1570 ~ 1573)\x14덴쇼 (1573 ~ 1592)\x17분로쿠 (1592 ~ 15" + + "96)\x17게이초 (1596 ~ 1615)\x14겐나 (1615 ~ 1624)\x17간에이 (1624 ~ 1644)\x14쇼호 " + + "(1644 ~ 1648)\x17게이안 (1648 ~ 1652)\x14조오 (1652 ~ 1655)\x1a메이레키 (1655 ~ 1" + + "658)\x14만지 (1658 ~ 1661)\x14간분 (1661 ~ 1673)\x14엔포 (1673 ~ 1681)\x14덴나 (" + + "1681 ~ 1684)\x14조쿄 (1684 ~ 1688)\x17겐로쿠 (1688 ~ 1704)\x17호에이 (1704 ~ 171" + + "1)\x17쇼토쿠 (1711 ~ 1716)\x14교호 (1716 ~ 1736)\x14겐분 (1736 ~ 1741)\x14간포 (1" + + "741 ~ 1744)\x14엔쿄 (1744 ~ 1748)\x14간엔 (1748 ~ 1751)\x17호레키 (1751 ~ 1764)" + + "\x17메이와 (1764 ~ 1772)\x17안에이 (1772 ~ 1781)\x17덴메이 (1781 ~ 1789)\x17간세이 (" + + "1789 ~ 1801)\x14교와 (1801 ~ 1804)\x14분카 (1804 ~ 1818)\x17분세이 (1818 ~ 1830" + + ")\x14덴포 (1830 ~ 1844)\x14고카 (1844 ~ 1848)\x17가에이 (1848 ~ 1854)\x17안세이 (1" + + "854 ~ 1860)\x14만엔 (1860 ~ 1861)\x14분큐 (1861 ~ 1864)\x14겐지 (1864 ~ 1865)" + + "\x17게이오 (1865 ~ 1868)\x09메이지\x09다이쇼\x06쇼와\x0c헤이세이\x0c화르바딘\x15오르디베헤쉬트\x0c" + + "호르다드\x06티르\x0c모르다드\x0f샤흐리바르\x09메흐르\x06아반\x09아자르\x06다이\x09바흐만\x0c에스판드" + + "\x0f중화민국전\x0c중화민국\x06연호\x03년\x06작년\x06올해\x06내년\x0a{0}년 후\x0a{0}년 전\x06분기" + + "\x0d지난 분기\x0d이번 분기\x0d다음 분기\x0d{0}분기 후\x0d{0}분기 전\x09지난달\x0a이번 달\x0a다음 달" + + "\x0d{0}개월 후\x0d{0}개월 전\x03주\x09지난주\x0a이번 주\x0a다음 주\x0a{0}주 후\x0a{0}주 전" + + "\x0d{0}번째 주\x09그저께\x06어제\x06오늘\x06내일\x06모레\x0a{0}일 후\x0a{0}일 전\x06요일\x10" + + "지난 일요일\x10이번 일요일\x10다음 일요일\x14{0}주 후 일요일\x14{0}주 전 일요일\x10지난 월요일\x10이번" + + " 월요일\x10다음 월요일\x14{0}주 후 월요일\x14{0}주 전 월요일\x10지난 화요일\x10이번 화요일\x10다음 화요일" + + "\x14{0}주 후 화요일\x14{0}주 전 화요일\x10지난 수요일\x10이번 수요일\x10다음 수요일\x14{0}주 후 수요일" + + "\x14{0}주 전 수요일\x10지난 목요일\x10이번 목요일\x10다음 목요일\x14{0}주 후 목요일\x14{0}주 전 목요일" + + "\x10지난 금요일\x10이번 금요일\x10다음 금요일\x14{0}주 후 금요일\x14{0}주 전 금요일\x10지난 토요일\x10" + + "이번 토요일\x10다음 토요일\x14{0}주 후 토요일\x14{0}주 전 토요일\x0d오전/오후\x03시\x0d현재 시간" + + "\x0d{0}시간 후\x0d{0}시간 전\x03분\x0a현재 분\x0a{0}분 후\x0a{0}분 전\x03초\x06지금\x0a{0" + + "}초 후\x0a{0}초 전\x09시간대\x0a{0} 시간\x14{0} 하계 표준시\x0d{0} 표준시" + +var bucket60 string = "" + // Size: 8425 bytes + "\x10협정 세계시\x17영국 하계 표준시\x16아일랜드 표준시\x10아크레 시간\x13아크레 표준시\x1a아크레 하계 표준시" + + "\x19아프가니스탄 시간\x19중앙아프리카 시간\x16동아프리카 시간\x16남아프리카 시간\x16서아프리카 시간\x19서아프리카 " + + "표준시 서아프리카 하계 표준시\x13알래스카 시간\x16알래스카 표준시\x1d알래스카 하계 표준시\x17알마티 표준 시간" + + "\x1a알마티 표준 표준시\x1a알마티 하계 표준시\x10아마존 시간\x13아마존 표준시\x1a아마존 하계 표준시\x11미 중부 " + + "시간\x14미 중부 표준시\x1b미 중부 하계 표준시\x11미 동부 시간\x14미 동부 표준시\x1b미 동부 하계 표준시" + + "\x11미 산지 시간\x14미 산악 표준시\x1b미 산지 하계 표준시\x14미 태평양 시간\x17미 태평양 표준시\x1e미 태평양" + + " 하계 표준시\x13아나디리 시간\x16아나디리 표준시\x1d아나디리 하계 표준시\x10아피아 시간\x13아피아 표준시\x1a아피" + + "아 하계 표준시\x17악타우 표준 시간\x1a악타우 표준 표준시\x1a악타우 하계 표준시\x17악퇴베 표준 시간\x1a악퇴베 " + + "표준 표준시\x1a악퇴베 하계 표준시\x13아라비아 시간\x16아라비아 표준시\x1d아라비아 하계 표준시\x16아르헨티나 시간" + + "\x19아르헨티나 표준시 아르헨티나 하계 표준시\x1d아르헨티나 서부 시간 아르헨티나 서부 표준시'아르헨티나 서부 하계 표준시" + + "\x16아르메니아 시간\x19아르메니아 표준시 아르메니아 하계 표준시\x10대서양 시간\x13대서양 표준시\x1e미 대서양 하계 " + + "표준시#오스트레일리아 중부 시간&오스트레일리아 중부 표준시-오스트레일리아 중부 하계 표준시&오스트레일리아 중서부 시간)오스트레" + + "일리아 중서부 표준시0오스트레일리아 중서부 하계 표준시#오스트레일리아 동부 시간&오스트레일리아 동부 표준시-오스트레일리아 동부" + + " 하계 표준시#오스트레일리아 서부 시간&오스트레일리아 서부 표준시-오스트레일리아 서부 하계 표준시\x19아제르바이잔 시간\x1c아" + + "제르바이잔 표준시#아제르바이잔 하계 표준시\x13아조레스 시간\x16아조레스 표준시\x1d아조레스 하계 표준시\x16방글라데시" + + " 시간\x19방글라데시 표준시 방글라데시 하계 표준시\x0d부탄 시간\x13볼리비아 시간\x16브라질리아 시간\x19브라질리아 표" + + "준시 브라질리아 하계 표준시\x13브루나이 시간\x17카보 베르데 시간\x1a카보 베르데 표준시!카보 베르데 하계 표준시" + + "\x10케이시 시간\x10차모로 시간\x0d채텀 시간\x10채텀 표준시\x17채텀 하계 표준시\x0d칠레 시간\x10칠레 표준시" + + "\x17칠레 하계 표준시\x0d중국 시간\x10중국 표준시\x17중국 하계 표준시\x13초이발산 시간\x16초이발산 표준시\x1d" + + "초이발산 하계 표준시\x19크리스마스섬 시간\x17코코스 제도 시간\x13콜롬비아 시간\x16콜롬비아 표준시\x1d콜롬비아 하" + + "계 표준시\x11쿡 제도 시간\x14쿡 제도 표준시\x22쿡 제도 절반 하계 표준시\x0d쿠바 시간\x10쿠바 표준시\x17쿠" + + "바 하계 표준시\x13데이비스 시간\x16뒤몽뒤르빌 시간\x13동티모르 시간\x13이스터섬 시간\x16이스터섬 표준시\x1d이" + + "스터섬 하계 표준시\x13에콰도르 시간\x14중부 유럽 시간\x17중부 유럽 표준시\x1e중부 유럽 하계 표준시\x10동유럽 " + + "시간\x13동유럽 표준시\x1a동유럽 하계 표준시\x17극동 유럽 표준시\x10서유럽 시간\x13서유럽 표준시\x1a서유럽 하" + + "계 표준시\x1a포클랜드 제도 시간\x1d포클랜드 제도 표준시$포클랜드 제도 하계 표준시\x0d피지 시간\x10피지 표준시" + + "\x17피지 하계 표준시 프랑스령 가이아나 시간/프랑스령 남부 식민지 및 남극 시간\x16갈라파고스 시간\x10감비에 시간\x13" + + "그루지아 시간\x16그루지아 표준시\x1d그루지아 하계 표준시\x17길버트 제도 시간\x16그리니치 표준시\x1a그린란드 동부" + + " 시간\x1d그린란드 동부 표준시$그린란드 동부 하계 표준시\x1a그린란드 서부 시간\x1d그린란드 서부 표준시$그린란드 서부 하" + + "계 표준시\x11괌 표준 시간\x13걸프만 표준시\x13가이아나 시간\x1a하와이 알류샨 시간\x1d하와이 알류샨 표준시$하와" + + "이 알류샨 하계 표준시\x0d홍콩 시간\x10홍콩 표준시\x17홍콩 하계 표준시\x10호브드 시간\x13호브드 표준시\x1a호" + + "브드 하계 표준시\x10인도 표준시\x10인도양 시간\x16인도차이나 시간\x1d중부 인도네시아 시간\x1d동부 인도네시아 시" + + "간\x1d서부 인도네시아 시간\x0d이란 시간\x10이란 표준시\x17이란 하계 표준시\x16이르쿠츠크 시간\x19이르쿠츠크 " + + "표준시 이르쿠츠크 하계 표준시\x13이스라엘 시간\x16이스라엘 표준시\x1d이스라엘 하계 표준시\x0d일본 시간\x10일본 " + + "표준시\x17일본 하계 표준시,페트로파블롭스크-캄차츠키 시간/페트로파블롭스크-캄차츠키 표준시6페트로파블롭스크-캄차츠키 하계 표" + + "준시\x1d동부 카자흐스탄 시간\x1d서부 카자흐스탄 시간\x13대한민국 시간\x16대한민국 표준시\x1d대한민국 하계 표준시" + + "\x16코스라에섬 시간\x1f크라스노야르스크 시간\x22크라스노야르스크 표준시)크라스노야르스크 하계 표준시\x19키르기스스탄 시간" + + "\x14랑카 표준 시간\x14라인 제도 시간\x14로드 하우 시간\x17로드 하우 표준시\x1e로드 하우 하계 표준시\x10마카오" + + " 시간\x17마카오 표준 시간\x1a마카오 하계 표준시\x13매쿼리섬 시간\x10마가단 시간\x13마가단 표준시\x1a마가단 하계" + + " 표준시\x16말레이시아 시간\x10몰디브 시간\x1a마르키즈 제도 시간\x14마셜 제도 시간\x13모리셔스 시간\x16모리셔스 " + + "표준시\x1d모리셔스 하계 표준시\x0d모슨 시간\x1a멕시코 북서부 시간\x1d멕시코 북서부 표준시$멕시코 북서부 하계 표준" + + "시\x1a멕시코 태평양 시간\x1d멕시코 태평양 표준시$멕시코 태평양 하계 표준시\x16울란바토르 시간\x19울란바토르 표준시" + + " 울란바토르 하계 표준시\x13모스크바 시간\x16모스크바 표준시\x1d모스크바 하계 표준시\x10미얀마 시간\x10나우루 시간" + + "\x0d네팔 시간\x19뉴칼레도니아 시간\x1c뉴칼레도니아 표준시#뉴칼레도니아 하계 표준시\x13뉴질랜드 시간\x16뉴질랜드 표준" + + "시\x1d뉴질랜드 하계 표준시\x16뉴펀들랜드 시간\x19뉴펀들랜드 표준시 뉴펀들랜드 하계 표준시\x10니우에 시간\x10노퍽" + + "섬 시간!페르난도 데 노로냐 시간$페르난도 데 노로냐 표준시+페르난도 데 노로냐 하계 표준시$북마리아나 제도 표준 시간\x1c" + + "노보시비르스크 시간\x1f노보시비르스크 표준시&노보시비르스크 하계 표준시\x10옴스크 시간\x13옴스크 표준시\x1a옴스크 하" + + "계 표준시\x13파키스탄 시간\x16파키스탄 표준시\x1d파키스탄 하계 표준시\x10팔라우 시간\x19파푸아뉴기니 시간\x13" + + "파라과이 시간\x16파라과이 표준시\x1d파라과이 하계 표준시\x0d페루 시간\x10페루 표준시\x17페루 하계 표준시\x10" + + "필리핀 시간\x13필리핀 표준시\x1a필리핀 하계 표준시\x17피닉스 제도 시간#세인트피에르 미클롱 시간&세인트피에르 미클롱 " + + "표준시-세인트피에르 미클롱 하계 표준시\x10핏케언 시간\x10포나페 시간\x0d평양 시간\x16키질로르다 시간\x1d키질로르" + + "다 표준 시간 키질로르다 하계 표준시\x13레위니옹 시간\x10로데라 시간\x10사할린 시간\x13사할린 표준시\x1a사할린 " + + "하계 표준시\x10사마라 시간\x13사마라 표준시\x1a사마라 하계 표준시\x10사모아 시간\x13사모아 표준시\x1a사모아 " + + "하계 표준시\x10세이셸 시간\x16싱가포르 표준시\x17솔로몬 제도 시간\x1a사우스 조지아 시간\x10수리남 시간\x0d쇼" + + "와 시간\x10타히티 시간\x0d대만 시간\x10대만 표준시\x17대만 하계 표준시\x16타지키스탄 시간\x13토켈라우 시간" + + "\x0d통가 시간\x10통가 표준시\x17통가 하계 표준시\x0d추크 시간\x1c투르크메니스탄 시간\x1f투르크메니스탄 표준시&투" + + "르크메니스탄 하계 표준시\x10투발루 시간\x13우루과이 시간\x16우루과이 표준시\x1d우루과이 하계 표준시\x19우즈베키스" + + "탄 시간\x1c우즈베키스탄 표준시#우즈베키스탄 하계 표준시\x13바누아투 시간\x16바누아투 표준시\x1d바누아투 하계 표준시" + + "\x16베네수엘라 시간\x1c블라디보스토크 시간\x1f블라디보스토크 표준시&블라디보스토크 하계 표준시\x16볼고그라드 시간\x19" + + "볼고그라드 표준시 볼고그라드 하계 표준시\x10보스톡 시간\x13웨이크섬 시간 월리스푸투나 제도 시간\x13야쿠츠크 시간" + + "\x16야쿠츠크 표준시\x1d야쿠츠크 하계 표준시\x1c예카테린부르크 시간\x1f예카테린부르크 표준시&예카테린부르크 하계 표준시" + +var bucket61 string = "" + // Size: 13526 bytes + "\x0d조선 시간\x10조선 표준시\x17조선 하계 표준시\x18जानेवारी\x1eफेब्रुवारी\x0fमार्च\x12ए" + + "प्रिल\x06मे\x09जून\x0cजुलै\x0fओगस्ट\x1bसेप्टेंबर\x15ओक्टोबर\x1bनोव्हें" + + "बर\x15डिसेंबर\x1bआदित्यवार\x12सोमवार\x12मंगळार\x12बुधवार\x15गुरुवार" + + "\x18शुक्रवार\x12शनिवार\x0bम.पू.\x0bम.नं.$क्रिस्तपूर्व\x1eक्रिस्तशखा\x06d" + + "-M-yy\x1cभारतीय समय\x10EEEE, MMMM d, Gy\x0aMMMM d, Gy\x09MMM d, Gy\x06M/" + + "d/Gy\x0aجنؤری\x0aفرؤری\x0aمارٕچ\x0aاپریل\x06میٔ\x08جوٗن\x0eجوٗلایی\x08اگ" + + "ست\x0aستمبر\x0eاکتوٗبر\x0aنومبر\x0aدسمبر\x0cآتھوار\x14ژٔنٛدٕروار\x0eبوٚ" + + "موار\x0cبودوار\x12برٛٮ۪سوار\x08جُمہ\x0aبٹوار\x0eاَتھوار\x16ژٔنٛدرٕروار" + + "\x0aژۄباگ\x17دوٚیِم ژۄباگ\x17ترٛیِم ژۄباگ\x17ژوٗرِم ژۄباگ\x19گۄڑنیُک ژۄب" + + "اگ\x13قبٕل مسیٖح\x15عیٖسوی سنہٕ\x09بی سی\x09اے ڈی\x06دور\x06ؤری\x0aرٮ۪ت" + + "ھ\x0aہفتہٕ\x06دۄہ\x08راتھ\x06اَز\x08پگاہ\x11ہفتُک دۄہ\x0dصبح/رات\x0eگٲن" + + "ٛٹہٕ\x0aمِنَٹ\x0eسٮ۪کَنڑ\x06زون$برطٲنوی سَمَر ٹایِم\x22اَیرِش سَمَر ٹای" + + "ِم\x17اٮ۪کرے ٹایِم&اٮ۪کرے سٹینڑاڑ ٹایِم\x22اٮ۪کرے سَمَر ٹایِم\x1fافغانِ" + + "ستان ٹایِم$مرکزی افریٖقا ٹایِم$مشرقی افریٖقا ٹایِم$جنوٗبی افریقا ٹایِم$" + + "مغربی افریٖقا ٹایِم3مغربی افریٖقا سٹینڑاڑ ٹایِم/مغربی افریٖقا سَمَر ٹای" + + "ِم\x1bاٮ۪لاسکا ٹایِم*اٮ۪لاسکا سٹینڑاڑ ٹایِم,اٮ۪لاسکا ڈےلایِٔٹ ٹایِم\x1d" + + "اٮ۪لمٮ۪ٹی ٹایِم,اٮ۪لمٮ۪ٹی سٹینڑاڑ ٹایِم(اٮ۪لمٮ۪ٹی سَمَر ٹایِم\x1bاٮ۪مَز" + + "َن ٹایِم*اٮ۪مَزَن سٹینڑاڑ ٹایِم&اٮ۪مَزَن سَمَر ٹایِم\x15مرکزی ٹایِم$مرک" + + "زی سٹینڑاڑ ٹایِم&مرکزی ڈےلایِٔٹ ٹایِم\x15مشرقی ٹایِم$مشرقی سٹینڑاڑ ٹایِ" + + "م&مشرقی ڈےلایِٔٹ ٹایِم\x19ماونٹین ٹایِم(ماونٹین سٹینڑاڑ ٹایِم*ماونٹین ڈ" + + "ےلایِٔٹ ٹایِم\x19پیسِفِک ٹایِم(پیسِفِک سٹینڑاڑ ٹایِم*پیسِفِک ڈےلایِٔٹ ٹ" + + "ایِم\x1dاٮ۪نَڑیٖر ٹایِم,اٮ۪نَڑیٖر سٹینڑاڑ ٹایِم&اٮ۪نڑیٖر سَمَر ٹایِم" + + "\x19اٮ۪کٹاؤ ٹایِم(اٮ۪کٹاؤ سٹینڑاڑ ٹایِم$اٮ۪کٹاؤ سَمَر ٹایِم\x19اٮ۪کٹوب ٹ" + + "ایِم(اٮ۪کٹوب سٹینڑاڑ ٹایِم$اٮ۪کٹوب سَمَر ٹایِم\x1dارٮ۪بِیَن ٹایِم,ارٮ۪ب" + + "ِیَن سٹینڑاڑ ٹایِم.ارٮ۪بِیَن ڈےلایِٔٹ ٹایِم!ارجٮ۪نٹیٖنا ٹایِم0ارجٮ۪نٹیٖ" + + "نا سٹینڑاڑ ٹایِم,ارجٮ۪نٹیٖنا سَمَر ٹایِم,مغربی ارجٮ۪نٹیٖنا ٹایِم;مغربی " + + "ارجٮ۪نٹیٖنا سٹینڑاڑ ٹایِم7مغربی ارجٮ۪نٹیٖنا سَمَر ٹایِم\x1dارمیٖنِیا ٹا" + + "یِم,ارمیٖنِیا سٹینڑاڑ ٹایِم(ارمیٖنِیا سَمَر ٹایِم\x1fاٮ۪ٹلانٹِک ٹایِم.ا" + + "ٮ۪ٹلانٹِک سٹینڑاڑ ٹایِم0اٮ۪ٹلانٹِک ڈےلایِٔٹ ٹایِم*مرکزی آسٹریلِیَن ٹایِ" + + "م9آسٹریلِیَن مرکزی سٹینڑاڑ ٹایِم;آسٹریلِیَن مرکزی ڈےلایِٔٹ ٹایِم5آسٹریل" + + "ِیَن مرکزی مغربی ٹایِمDآسٹریلِیَن مرکزی مغربی سٹینڑاڑ ٹایِمFآسٹریلِیَن " + + "مرکزی مغربی ڈےلایِٔٹ ٹایِم*مشرِقی آسٹریلِیا ٹایِم9آسٹریلِیَن مشرقی سٹین" + + "ڑاڑ ٹایِم;آسٹریلِیَن مشرقی ڈےلایِٔٹ ٹایِم*مغرِبی آسٹریلِیا ٹایِم;آسٹریل" + + "ِیَن مغرِبی سٹینڑاڑ ٹایِم=آسٹریلِیَن مغرِبیٖ ڈےلایٔٹ ٹایِم\x1fاَزَربیجا" + + "ن ٹایِم.اَزَربیجان سٹینڑاڑ ٹایِم*اَزَربیجان سَمَر ٹایِم\x1bاٮ۪زورٕس ٹای" + + "ِم*اٮ۪زورٕس سٹینڑاڑ ٹایِم\x1eاٮ۪زورٕس سَمَر ٹ\x1fبَنٛگلادیش ٹایِم.بَنٛگ" + + "لادیش سٹینڑاڑ ٹایِم*بَنٛگلادیش سَمَر ٹایِم\x17بوٗٹان ٹایِم\x1bبولِوِیا " + + "ٹایِم\x1fبرٮ۪سِلِیا ٹایِم.برٮ۪سِلِیا سٹینڑاڑ ٹایِم*برٮ۪سِلِیا سَمَر ٹای" + + "ِم0برٛوٗنَے دَروٗسَلَم ٹایِم\x1aکیپ ؤرڑو ٹایِم)کیپ ؤرڑو سٹینڑاڑ ٹایِم" + + "\x1cکیپ سَمَر ٹایِم(کٮ۪مورو سٹینڑاڑ ٹایِم\x19کٮ۪تھَم ٹایِم(کٮ۪تھَم سٹینڑ" + + "اڑ ٹایِم$چٮ۪تھَم سَمَر ٹایِم\x13چِلی ٹایِم\x22چِلی سٹینڑاڑ ٹایِم\x1eچِل" + + "ی سَمَر ٹایِم\x15چَینا ٹایِم$چَینا سٹینڑاڑ ٹایِم&چَینا ڈےلایِٔٹ ٹایِم" + + "\x1fکوےبٮ۪لسَن ٹایِم.کوےبٮ۪لسَن سٹینڑاڑ ٹایِم*کوےبٮ۪لسَن سَمَر ٹایِم\x19" + + "کرٛسمَس ٹایِم&کوکوز اَیلینڑز ٹایِم\x1dکولومبِیا ٹایِم,کولومبِیا سٹینڑاڑ" + + " ٹایِم(کولومبِیا سَمَر ٹایِم\x22کُک اَیلینڑز ٹایِم1کُک اَیلینڑز سٹینڑاڑ " + + "ٹایِم4کُک اَیلینڑز حاف سَمَر ٹایِم\x17کیوٗبا ٹایِم&کیوٗبا سٹینڑاڑ ٹایِم" + + "(کیوٗبا ڈےلایِٔٹ ٹایِم\x15ڑیوِس ٹایِم)ڑمانٹ ڈی اُرویٖل ٹایِم\x22ایٖسٹ ٹی" + + "ٖمَر ٹایِم\x19ایٖسٹَر ٹایِم(ایٖسٹَر سٹینڑاڑ ٹایِم$ایٖسٹَر سَمَر ٹایِم" + + "\x1bاِکویڑَر ٹایِم\x22مرکزی یوٗرپی ٹایِم1مرکزی یوٗرپی سٹینڑاڑ ٹایِم-مرکز" + + "ی یوٗرپی سَمَر ٹایِم\x22مشرقی یوٗرپی ٹایِم1مشرقی یوٗرپی سٹینڑاڑ ٹایِم-م" + + "شرقی یوٗرپی سَمَر ٹایِم$مغرِبی یوٗرپی ٹایِم3مغرِبی یوٗرپی سٹینڑاڑ ٹایِم" + + "1مغرِبی یوٗرِپی سَمَر ٹایِم\x19فاکلینڑ ٹایِم(فاکلینڑ سٹینڑاڑ ٹایِم$فاکلی" + + "نڑ سَمَر ٹایِم\x15فیٖجی ٹایِم$فیٖجی سٹینڑاڑ ٹایِم فیٖجی سَمَر ٹایِم,فرٛ" + + "ٮ۪نٛچ گیوٗٮ۪نا ٹایِم&جنوٗبی فرٮ۪نٛچ ٹایِم#گٮ۪لٮ۪پیٚگوز ٹایِم\x1dگٮ۪مبِی" + + "َر ٹایِم\x1fجورجِیاہُک ٹایِم.جورجِیاہُک سٹینڑاڑ ٹایِم*جورجِیاہُک سَمَر " + + "ٹایِم&گِلبٲٹ ججیٖرُک ٹایِم'گرٛیٖن وِچ میٖن ٹایِم/مشرِقی گریٖن لینڑُک ٹا" + + "یِم>مشرِقی گریٖن لینڑُک سٹینڑاڑ ٹایِم:مشرِقی گریٖن لینڑُک سَمَر ٹایِم/م" + + "غرِبی گریٖن لینڑُک ٹایِم>مغرِبی گریٖن لینڑُک سٹینڑاڑ ٹایِم:مغرِبی گریٖن" + + " لینڑُک سَمَر ٹایِم\x17گُوٮ۪م ٹایِم\x22گَلف سٹینڑاڑ ٹایِم\x17گُیَنا ٹایِ" + + "م.حَواے اٮ۪لیوٗٹِیَن ٹایِم=حَواے اٮ۪لیوٗٹِیَن سٹینڑاڑ ٹایِم9حَواے اٮ۪لی" + + "وٗٹِیَن سَمَر ٹایِم\x1eحانگ کانٛگ ٹایِم-حانگ کانٛگ سٹینڑاڑ ٹایِم+حانٛگ " + + "کانٛگ سَمَر ٹایِم\x13حووڑ ٹایِم\x22حووڑ سٹینڑاڑ ٹایِم\x1eحووڑ سَمَر ٹای" + + "ِم\x14ہِنٛدوستان*ہِندوستٲنۍ اوشَن ٹایِن\x1fاِنڑوچَینا ٹایِم,مرکزی اِنڑو" + + "نیشِیا ٹایِم.مشرِقی اِنڑونیشِیا ٹایِم.مغرِبی اِنڑونیشِیا ٹایِم\x1bاِیٖر" + + "ٲنۍ ٹایِم*اِیٖرٲنۍ سٹینڑاڑ ٹایِم&اِیٖرٲنی سَمَر ٹایِم\x1bاِرکُٹسک ٹایِم" + + "*اِرکُٹسک سٹینڑاڑ ٹایِم&اِرکُٹسک سَمَر ٹایِم\x1dاِسرٲیِلی ٹایِم,اِسرٲیِل" + + "ی سٹینڑاڑ ٹایِم.اِسرٲیِلی ڑےلایِٔٹ ٹایِم\x17جاپٲنۍ ٹایِم&جاپٲنۍ سٹینڑاڑ" + + " ٹایِم(جاپٲنۍ ڑےلایِٔٹ ٹایِم\x1bکَمچَٹکا ٹایِم*کَمچَٹکا سٹینڑاڑ ٹایِم&کَ" + + "مچَٹکا سَمَر ٹایِم.مشرِقی کَزاکھِستان ٹایِم.مغرِبی کَزاکھِستان ٹایِم" + + "\x17کورِیا ٹایِم&کورِیا سٹینڑاڑ ٹایِم(کورِیا ڑےلایِٔٹ ٹایِم\x17کورسَے ٹا" + + "یِم%کرٮ۪سنوےیارسک ٹایِم4کرٮ۪سنوےیارسک سٹینڑاڑ ٹایِم0کرٮ۪سنوےیارسک سَمَر" + + " ٹایِم\x1dکِرگِستان ٹایِم\x17لَنٛکا ٹایِم&لایِٔن ججیٖرُک ٹایِم\x1cلعاڑ ح" + + "ووے ٹایِم+لعاڑ حووے سٹینڑاڑ ٹایِم\x22لعاڑ ڑےلایٔٹ ٹایِم\x19مَکَعوٗ ٹایِ" + + "م(مَکَعوٗ سٹینڑاڑ ٹایِم$مَکَعوٗ سَمَر ٹایِم\x19مَگَدَن ٹایِم(مَگَدَن سٹ" + + "ینڑاڑ ٹایِم$مَگَدَن سَمَر ٹایِم\x1bمَلیشِیا ٹایِم\x1dمالدیٖوٕز ٹایِم" + + "\x1fمارقیوٗسَس ٹایِم&مارشَل ججیٖرُک ٹایِم\x19مورِشَس ٹایِم(مورِشَس سٹینڑ" + + "اڑ ٹایِم$مورِشَس سَمَر ٹایِم\x15ماسَن ٹایِم\x1dمونگولِیا ٹایِم,مونگولِی" + + "ا سٹینڑاڑ ٹایِم(مونگولِیا سَمَر ٹایِم\x17ماسکَو ٹایِم$ماسکو سٹینڑاڑ ٹای" + + "ِم ماسکو سَمَر ٹایِم\x1bمِیانمَر ٹایِم\x1bنَعوٗروٗ ٹایِم\x19نٮ۪پٲلۍ ٹای" + + "ِم(نِو کیلٮ۪ڑونِیا ٹایِم7نِو کیلٮ۪ڑونِیا سٹینڑاڑ ٹایِم3نِو کیلٮ۪ڑونِیس " + + "سَمَر ٹایِم\x1dنِوزِلینڑ ٹایِم,نِوزِلینڑ سٹینڑاڑ ٹایِم,نِوزِلینڑ ڑےلایٔ" + + "ٹ ٹایِم&نیوٗ فاونڑلینڑ ٹایِم5نیوٗ فاونڑلینڑ سٹینڑاڑ ٹایِم8نیوٗ فاونڑ لی" + + "نڑ ڑےلایِٔٹ ٹایِم\x15نِیوٗ ٹایِم\x19نورفعاک ٹایِم\x19نورونہا ٹایِم(نورو" + + "نہا سٹینڑاڑ ٹایِم$نورونہا سَمَر ٹایِم(شُمٲلی مَرِیانا ٹایِم!نۄوۄسِبٔرسک" + + " ٹایِم0نۄوۄسِبٔرسک سٹینڑاڑ ٹایِم,نۄوۄسِبٔرسک سَمَر ٹایِم\x15اۄمسک ٹایِم$" + + "اۄمسک سٹینڑاڑ ٹایِم اۄمسک سَمَر ٹایِم\x1bپاکِستان ٹایِم*پاکِستان سٹینڑا" + + "ڑ ٹایِم&پاکِستان سَمَر ٹایِم\x15پَلاو ٹایِم+پاپُعا نیوٗ گٮ۪نی ٹایِم\x1b" + + "پیرٮ۪گوے ٹایِم*پیرٮ۪گوے سٹینڑاڑ ٹایِم&پیرٮ۪گوے سَمَر ٹایِم\x15پٔروٗ ٹای" + + "ِم$پٔروٗ سٹینڑاڑ ٹایِم پٔروٗ سَمَر ٹایِم\x1fپھِلِپایِن ٹایِم.پھِلِپایِن" + + " سٹینڑاڑ ٹایِم*پھِلِپایِن سَمَر ٹایِم(پھونِکس ججیٖرُک ٹایِم3سینٛٹ پَیری " + + "مِقیوٗلَن ٹایِمBسینٛٹ پَیری مِقیوٗلَن سٹینڑاڑ ٹایِمDسینٛٹ پَیری مِقیوٗل" + + "َن ڑےلایِٔٹ ٹایِم\x1bپِٹکیرٕن ٹایِم\x15پونیپ ٹایِم\x19قِزلوڑا ٹایِم(قِز" + + "لوڑا سٹینڑاڑ ٹایِم$قِزلوڑا سَمَر ٹایِم\x1fرِیوٗنِیَن ٹایِم\x1bروتھٮ۪را " + + "ٹایِم\x1dسَکھٮ۪لِن ٹایِم,سَکھٮ۪لِن سٹینڑاڑ ٹایِم(سَکھٮ۪لِن سَمَر ٹایِم" + + "\x17سمٮ۪را ٹایِم&سمٮ۪را سٹینڑاڑ ٹایِم\x22سمٮ۪را سَمَر ٹایِم\x17سٮ۪موآ ٹا" + + "یِم&سٮ۪موآ سٹینڑاڑ ٹایِم\x22سٮ۪موآ سَمَر ٹایِم\x1bسیشٮ۪لٕز ٹایِم\x1fسِن" + + "ٛگاپوٗر ٹایِم3سولومَن ججیٖرَن ہُنٛد ٹایِم&شُمٲلی جورجِیا ٹایِم\x19سُرِن" + + "ام ٹایِم\x15سیووا ٹایِم\x17ٹاہِٹی ٹایِم\x1fتازِکِستان ٹایِم\x19ٹوکٮ۪لو " + + "ٹایِم\x19ٹعانٛگا ٹایِم(ٹعانٛگا سٹینڑاڑ ٹایِم$ٹعانٛگا سَمَر ٹایِم\x13ٹٔر" + + "ک ٹایِم%تُرکمٮ۪نِستان ٹایِم4تُرکمٮ۪نِستان سٹینڑاڑ ٹایِم0تُرکمٮ۪نِستان س" + + "َمَر ٹایِم\x1bٹوٗوَلوٗ ٹایِم\x1fیوٗرٮ۪گوَے ٹایِم.یوٗرٮ۪گوَے سٹینڑاڑ ٹای" + + "ِم*یوٗرٮ۪گوَے سَمَر ٹایِم!اُزبیکِستان ٹایِم0اُزبیکِستان سٹینڑاڑ ٹایِم0ا" + + "ُزبیکِستانُک سَمَر ٹایِم\x1fوَنوٗاَٹوٗ ٹایِم.وَنوٗاَٹوٗ سٹینڑاڑ ٹایِم*و" + + "َنوٗاَٹوٗ سَمَر ٹایِم#وٮ۪نٮ۪زیوٗلا ٹایِم!ولاڑِووسٹوک ٹایِم0ولاڑِووسٹوک " + + "سٹینڑاڑ ٹایِم,ولاڑِووسٹوک سَمَر ٹایِم\x1dوولگوگریڑ ٹایِم,وولگوگریڑ سٹین" + + "ڑاڑ ٹایِم(وولگوگریڑ سَمَر ٹایِم\x17ووسٹوک ٹایِم ویک ججیٖرُک ٹایِم1والِس" + + " تہٕ فیوٗٹیوٗنا ٹایِم\x19یَکُٹسک ٹایِم(یَکُٹسک سٹینڑاڑ ٹایِم&یَکُٹُسک سَ" + + "مَر ٹایِم'یٮ۪کَٹٔرِنبٔرگ ٹایِم6یٮ۪کَٹٔرِنبٔرگ سٹینڑاڑ ٹایِم0یٮ۪کَٹرِنبٔ" + + "رگ سَمَر ٹایِم\x0fमार्च\x06मे\x09जून\x0cजुलै\x0fऑगस्ट\x18सप्टेंबर\x15ऑक" + + "्टोबर\x0fमार्च\x06मे\x09जून\x0cजुलै" + +var bucket62 string = "" + // Size: 8432 bytes + "\x07Januali\x08Febluali\x05Machi\x06Aplili\x03Mei\x04Juni\x05Julai\x06Ag" + + "osti\x08Septemba\x06Oktoba\x07Novemba\x07Desemba\x08Jumaapii\x09Jumaatat" + + "u\x07Jumaane\x09Jumaatano\x08Alhamisi\x06Ijumaa\x09Jumaamosi\x0cLobo ya " + + "bosi\x0cLobo ya mbii\x11Lobo ya nnd’atu\x0bLobo ya nne\x05makeo\x08nyiag" + + "huo\x0fKabla ya Klisto\x0fBaada ya Klisto\x05Mishi\x09Ng’waka\x08Ng’ezi" + + "\x04Niki\x04Siku\x04Ghuo\x06Evi eo\x05Keloi\x0fMwesiku za wiki\x07Namshi" + + "i\x06Majila\x03ŋ1\x03ŋ2\x03ŋ3\x03ŋ4\x03ŋ5\x03ŋ6\x03ŋ7\x03ŋ8\x03ŋ9\x04ŋ10" + + "\x04ŋ11\x04ŋ12\x14ŋwíí a ntɔ́ntɔ\x14ŋwíí akǝ bɛ́ɛ\x12ŋwíí akǝ ráá\x10ŋwí" + + "í akǝ nin\x12ŋwíí akǝ táan\x15ŋwíí akǝ táafɔk\x16ŋwíí akǝ táabɛɛ\x14ŋwí" + + "í akǝ táaraa\x14ŋwíí akǝ táanin\x12ŋwíí akǝ ntɛk\x1cŋwíí akǝ ntɛk di bɔ" + + "́k\x1dŋwíí akǝ ntɛk di bɛ́ɛ\x09sɔ́ndǝ\x07lǝndí\x06maadí\x0amɛkrɛdí\x08j" + + "ǝǝdí\x07júmbá\x06samdí\x02i1\x02i2\x02i3\x02i4\x22id́ɛ́n kǝbǝk kǝ ntɔ́n" + + "tɔ́\x1eidɛ́n kǝbǝk kǝ kǝbɛ́ɛ\x1cidɛ́n kǝbǝk kǝ kǝráá\x1aidɛ́n kǝbǝk kǝ k" + + "ǝnin\x09sárúwá\x0acɛɛ́nko\x17di Yɛ́sus aká yálɛ\x19cámɛɛn kǝ kǝbɔpka Y" + + "\x04d.Y.\x04k.Y.\x0aByámɛɛn\x04Bǝk\x07Ŋwíí\x09Sɔ́ndǝ\x06Ŋwós\x0aRinkɔɔ́" + + "\x0aGɛ́ɛnǝ\x0aRidúrǝ́\x14Mǝrú mǝ sɔ́ndǝ\x16Sárúwá / Cɛɛ́nko\x09Cámɛɛn" + + "\x07Mǝnít\x04Háu\x05Wáas\x17EEEE, 'dä' d. MMMM y G\x0bd. MMM. y G\x0dd. " + + "M. y GGGGG\x07Jannewa\x08Fäbrowa\x06Määz\x06Aprell\x03Mai\x05Juuni\x05Ju" + + "uli\x06Oujoß\x0aSeptämber\x08Oktohber\x09Novämber\x09Dezämber\x09Sunndaa" + + "ch\x09Mohndaach\x0aDinnsdaach\x07Metwoch\x0cDunnersdaach\x09Friidaach" + + "\x09Samsdaach\x041.Q.\x042.Q.\x043.Q.\x044.Q.\x0b1. Quattahl\x0b2. Quatt" + + "ahl\x0b3. Quattahl\x0b4. Quattahl\x021Q\x022Q\x023Q\x024Q\x04v.M.\x04n.M" + + ".\x11Uhr vörmiddaachs\x10Uhr nommendaachs\x0cVörmeddaach\x0bNommendaach" + + "\x0cvür Krestos%vür de jewöhnlejje Ziggrääschnong\x0bnoh Krestos#en de j" + + "ewöhnlejje Ziggrääschnong\x06v. Kr.\x05n. K.\x02vC\x02nC\x15EEEE, 'dä' d" + + ". MMMM y\x09d. MMM. y\x05Ähra\x04Johr\x09läz Johr\x09diß Johr\x09näx Joh" + + "r\x0een keinem Johr\x0ben {0} Johr\x0cen {0} Johre\x11vör keijnem Johr" + + "\x0dvör {0} Johr\x0evör {0} Johre\x02J.\x08Quattahl\x02Q.\x05Mohnd\x0dlä" + + "tzde Mohnd\x0bdiese Mohnd\x0enächste Mohnd\x04Woch\x09läz Woch\x07di Woc" + + "h\x0enächste Woche\x05Daach\x0bvörjestere\x07jestere\x05hück\x05morje" + + "\x0bövvermorje\x02D.\x0aWochedaach\x16Sunndaach letzte Woche\x15Sunndaac" + + "h diese Woche\x18Sunndaach nächste Woche\x16Moondaach letzte Woche\x15Mo" + + "ondaach diese Woche\x18Moondaach nächste Woche\x17Dinnsdaach letzte Woch" + + "e\x16Dinnsdaach diese Woche\x19Dinnsdaach nächste Woche\x14Metwoch letzt" + + "e Woche\x13Metwoch diese Woche\x16Metwoch nächste Woche\x19Dunnersdaach " + + "letzte Woche\x18Dunnersdaach diese Woche\x1bDunnersdaach nächste Woche" + + "\x16Friidaach letzte Woche\x15Friidaach diese Woche\x18Friidaach nächste" + + " Woche\x16Samsdaach letzte Woche\x15Samsdaach diese Woche\x18Samsdaach n" + + "ächste Woche\x09Daachteil\x02S.\x06Menutt\x06Sekond\x08Zickzohn\x0cZick" + + " vun {0}\x12Summerzick vun {0}\x16Schtandattzick vun {0}\x1fJrußbretanni" + + "je sing Summerzick\x16Irland sing Summerzick\x1cZentraal-Affrekaanesche " + + "Zigg\x17Oß-Affrekaanesche Zigg\x18Söd-Affrekaanesche Zigg\x19Wäß-Affreka" + + "anesche Zigg&Jewöhnlijje Wäß-Affrekaanesche Zigg\x1fWäß-Affrekaanesche S" + + "ommerzigg\x11de Azore ier Zick\x1ede Azore ier jewöhnlijje Zick\x17de Az" + + "ore ier Summerzick\x16Kapvärdejaansche Zigg#Jewöhnlijje Kapvärdejaansche" + + " Zigg\x1cKapvärdejaansche Sommerzigg\x18Meddel-Europpa sing Zick%Meddel-" + + "Europpa sing jewöhnlijje Zick\x1eMeddel-Europpa sing Summerzick\x15Oß-Eu" + + "roppa sing Zick\x22Oß-Europpa sing jewöhnlijje Zick\x1bOß-Europpa sing S" + + "ummerzick\x16Weß-Europpa sing Zick#Weß-Europpa sing jewöhnlijje Zick\x1c" + + "Weß-Europpa sing Summerzick\x1bGreenwich sing Standat-Zick\x1ddem Indisc" + + "he Ozejan sing Zick\x12Zigg vun Mauritius\x1fJewöhnlijje Zigg vun Maurit" + + "ius\x18Summerzigg vun Mauritius\x10Zigg vun Reunion\x17Zigg vun de Seisc" + + "hälle\x03Gen\x03Hwe\x03Meu\x03Ebr\x02Me\x03Met\x03Gor\x03Est\x03Gwn\x03H" + + "ed\x02Du\x03Kev\x0amis Genver\x0bmis Hwevrer\x0amis Meurth\x09mis Ebrel" + + "\x06mis Me\x0cmis Metheven\x0dmis Gortheren\x07mis Est\x0dmis Gwynngala" + + "\x09mis Hedra\x06mis Du\x0cmis Kevardhu\x06dy Sul\x06dy Lun\x09dy Meurth" + + "\x09dy Merher\x06dy Yow\x09dy Gwener\x09dy Sadorn\x07Bledhen\x03Mis\x07S" + + "eythun\x04Dedh\x0fDedh an seythun\x03Eur\x16EEEE, G d-MMMM y-'ж'.\x10d-M" + + "MMM G y-'ж'.\x07янв.\x07фев.\x07мар.\x07апр.\x06май\x07июн.\x07июл.\x07а" + + "вг.\x07сен.\x07окт.\x07ноя.\x07дек.\x02Я\x02Ф\x02М\x02А\x02И\x02С\x02О" + + "\x02Н\x02Д\x06Янв\x06Фев\x06Мар\x06Апр\x06Май\x06Июн\x06Июл\x06Авг\x06Се" + + "н\x06Окт\x06Ноя\x06Дек\x0cЯнварь\x0eФевраль\x08Март\x0cАпрель\x08Июнь" + + "\x08Июль\x0cАвгуст\x10Сентябрь\x0eОктябрь\x0cНоябрь\x0eДекабрь\x07жек." + + "\x07дүй.\x09шейш.\x09шарш.\x09бейш.\x08жума\x07ишм.\x10жекшемби\x10дүйшө" + + "мбү\x10шейшемби\x10шаршемби\x10бейшемби\x0cишемби\x04жк\x05дш.\x05шш." + + "\x05шр.\x05бш.\x05жм.\x05иш.\x091-чей.\x092-чей.\x093-чей.\x094-чей.\x0e" + + "1-чейрек\x0e2-чейрек\x0e3-чейрек\x0e4-чейрек\x051-ч.\x052-ч.\x053-ч.\x05" + + "4-ч.\x13түн ортосу\x04тң\x0dчак түш\x04тк\x15эртең менен\x17түштөн кийин" + + "\x0eкечинде\x13түн ичинде\x0dтүн орт\x0dэртң мн\x0fтүшт кйн\x08кечк\x0aт" + + "аңкы\x1bтүштөн кийинки\x10кечкурун&биздин заманга чейин\x09б.з.ч.\x17би" + + "здин заман\x06б.з.\x15y-'ж'., d-MMMM, EEEE\x0fy-'ж'., d-MMMM\x0ey-'ж'.," + + " d-MMM\x0aзаман\x0cбылтыр\x0aбыйыл\x15эмдиги жылы\x1b{0} жылдан кийин" + + "\x15{0} жыл мурун\x16{0} жыл. кийин\x0cчейрек\x19акыркы чейрек\x13бул че" + + "йрек\x1bкийинки чейрек!{0} чейректен кийин\x1b{0} чейрек мурун\x09чейр." + + "\x16акыркы чейр.\x10бул чейр.\x18кийинки чейр.\x18{0} чейр. мурун\x18{0}" + + " чейр. кийин\x13өткөн айда\x0fбул айда\x15эмдиги айда\x19{0} айдан кийин" + + "\x13{0} ай мурун\x16{0} айд. кийин\x14{0} айд. кийн\x11{0} ай мурн\x17өт" + + "көн аптада\x15ушул аптада\x1bкелерки аптада\x1d{0} аптадан кийин\x17{0}" + + " апта мурун\x19{0} апта ичинде\x06апт\x12өткөн апт.\x10ушул апт.\x16келе" + + "рки апт.\x16{0} апт. кийин\x16{0} апт. мурун\x17мурдагы күнү\x0aкечээ" + + "\x0aбүгүн\x0aэртеӊ\x12бүрсүгүнү\x1b{0} күндөн кийин\x15{0} күн мурун\x16" + + "{0} күн. кийин\x17аптанын күнү\x1fөткөн жекшембиде\x1dушул жекшембиде#ке" + + "лерки жекшембиде%{0} жекшембиден кийин\x1f{0} жекшемби мурун\x14өткөн ж" + + "екш.\x12ушул жекш.\x18келерки жекш.\x1c{0} жекшемб. кийн\x1c{0} жекшемб" + + ". мурн\x1fөткөн дүйшөмбүдө\x1dушул дүйшөмбүдө#келерки дүйшөмбүдө%{0} дүй" + + "шөмбүдөн кийин\x1f{0} дүйшөмбү мурун\x14өткөн дүйш.\x12ушул дүйш.\x18ке" + + "лерки дүйш.\x16{0} дүйш. кийн\x16{0} дүйш. мурн\x10өткөн дш.\x0eушул дш" + + ".\x14келерки дш.\x12{0} дш. кийн\x12{0} дш. мурн\x1fөткөн шейшембиде\x1d" + + "ушул шейшембиде#келерки шейшембиде%{0} шейшембиден кийин\x1f{0} шейшемб" + + "и мурун\x14өткөн шейш.\x12ушул шейш.\x18келерки шейш.\x16{0} шейш. кийн" + + "\x16{0} шейш. мурн\x1fөткөн шаршембиде\x1dушул шаршембиде#келерки шаршем" + + "биде%{0} шаршембиден кийин\x1f{0} шаршемби мурун\x14өткөн шарш.\x12ушул" + + " шарш.\x18келерки шарш.\x16{0} шарш. кийн\x16{0} шарш. мурн\x10өткөн шр." + + "\x0eушул шр.\x14келерки шр.\x12{0} шр. кийн\x12{0} шр. мурн\x1fөткөн бей" + + "шембиде\x1dушул бейшембиде#келерки бейшембиде%{0} бейшембиден кийин\x1f" + + "{0} бейшемби мурун\x14өткөн бейш.\x12ушул бейш.\x18келерки бейш.\x18{0} " + + "бейш. кийин\x18{0} бейш. мурун\x10өткөн бш.\x0eушул бш.\x14келерки бш." + + "\x12{0} бш. кийн\x12{0} бш. мурн\x1cөткөн жума күнү\x1aушул жума күнү ке" + + "лерки жума күнү\x1d{0} жумадан кийин\x17{0} жума мурун\x10өткөн жм.\x14" + + "келерки жм.\x13{0} жм кийин\x11{0} жм мурн\x0fөткөн жм\x0dушул жм\x13ке" + + "лерки жм\x11{0} жм кийн\x1bөткөн ишембиде\x19ушул ишембиде\x1fкелерки и" + + "шембиде!{0} ишембиден кийин\x1b{0} ишемби мурун\x12өткөн ишм.\x10ушул и" + + "шм.\x16келерки ишм.\x16{0} ишм. кийин\x14{0} ишм. мурн\x09ТЧ/ТК\x08саат" + + "\x15ушул саатта\x1d{0} сааттан кийин\x17{0} саат мурун\x04ст\x18{0} саат" + + ". кийин\x18{0} саат. мурун\x10{0} с. кийн\x10{0} с. мурн\x0aмүнөт\x17ушу" + + "л мүнөттө\x1f{0} мүнөттөн кийин\x19{0} мүнөт мурун\x07мүн.\x07фев.\x07м" + + "ар.\x07апр.\x08майы\x08июны\x08июлы\x07авг.\x07окт.\x07дек.\x02И\x02Д" + + "\x0cМартъи\x06Май\x08Июнь\x08Июль\x02Lu\x02Ma\x02Mi\x02Jo\x02Vi\x03Sâ" + + "\x02Ma\x02Mi\x09февр.\x06мая\x09сент.\x09нояб.\x02М\x02С\x02Д\x08март" + + "\x06май\x08июнь\x08июль\x02П\x02В\x02С\x02Ч\x02М\x02А\x02О\x02Ж\x02Ш\x05" + + "+J.C." + +var bucket63 string = "" + // Size: 13490 bytes + "\x16{0} мүн. кийин\x16{0} мүн. мурун\x03м.\x14{0} мүн. кийн\x14{0} мүн. " + + "мурн\x08азыр!{0} секунддан кийин\x1b{0} секунд мурун\x16{0} сек. кийин" + + "\x16{0} сек. мурун\x14{0} сек. кийн\x14{0} сек. мурн\x19убакыт алкагы" + + "\x14{0} убактысы\x08{0} (+1)\x08{0} (+0),Британия жайкы убактысы*Ирланди" + + "я кышкы убакыты%Афганистан убактысы0Борбордук Африка убактысы(Чыгыш Афр" + + "ика убактысы*Түштүк Африка убактысы(Батыш Африка убактысы1Батыш Африка " + + "кышкы убакыты3Батыш Африка жайкы убактысы\x1dАляска убактысы(Аляска кыш" + + "кы убактысы(Аляска жайкы убактысы\x1dАмазон убактысы(Амазон кышкы убакт" + + "ысы(Амазон жайкы убактысы<Түндүк Америка, борбордук убакытKТүндүк Амери" + + "ка, борбордук кышкы убактысыGТүндүк Америка, борбордук жайкы убакыт8Түн" + + "дүк Америка, чыгыш убактысыCТүндүк Америка, чыгыш кышкы убактысыCТүндүк" + + " Америка, чыгыш жайкы убактысы4Түндүк Америка, тоо убактысы?Түндүк Амери" + + "ка, тоо кышкы убактысы?Түндүк Америка, тоо жайкы убактысыAТүндүк Америк" + + "а, Тынч океан убактысыLТүндүк Америка, Тынч океан кышкы убактысыLТүндүк" + + " Америка, Тынч океан жайкы убактысы\x19Апиа убактысы\x22Апиа кышкы убакы" + + "ты$Апиа жайкы убактысы\x1dАрабия убактысы&Арабия кышкы убакыты&Арабия ж" + + "айкы убакыты#Аргентина убактысы.Аргентина кышкы убактысы.Аргентина жайк" + + "ы убактысы.Батыш Аргентина убактысы9Батыш Аргентина кышкы убактысы9Баты" + + "ш Аргентина жайкы убактысы\x1fАрмения убактысы(Армения кышкы убакыты*Ар" + + "мения жайкы убактысы#Атлантика убактысы.Атлантика кышкы убактысы.Атлант" + + "ика жайкы убактысы6Австралия борбордук убактысы?Австралия борбордук кыш" + + "кы убакытыAАвстралия борбордук жайкы убактысыAАвстралия борбордук батыш" + + " убактысыJАвстралия борбордук батыш кышкы убакытыLАвстралия борбордук чы" + + "гыш жайкы убактысы.Австралия чыгыш убактысы7Австралия чыгыш кышкы убакы" + + "ты9Австралия чыгыш жайкы убактысы.Австралия батыш убактысы7Австралия ба" + + "тыш кышкы убакыты9Австралия батыш жайкы убактысы%Азербайжан убактысы.Аз" + + "ербайжан кышкы убакыты0Азербайжан жайкы убактысы\x19Азор убактысы\x22Аз" + + "ор кышкы убакыты&Азорс жайкы убактысы#Бангладеш убактысы,Бангладеш кышк" + + "ы убакыты.Бангладеш жайкы убактысы\x1bБутан убактысы\x1fБоливия убактыс" + + "ы!Бразилия убактысы,Бразилия кышкы убактысы,Бразилия жайкы убактысы2Бру" + + "ней Даруссалам убактысы$Капе Верде убактысы-Капе Верде кышкы убакыты/Ка" + + "пе Верде жайкы убактысы\x1fЧаморро убактысы\x1bЧатам убактысы\x22Чатам " + + "кышкы убакыт&Чатам жайкы убактысы\x19Чили убактысы$Чили кышкы убактысы$" + + "Чили жайкы убактысы\x1bКытай убактысы$Кытай кышкы убакыты$Кытай жайкы у" + + "бакыты#Чойбалсан убактысы,Чойбалсан кышкы убакыты.Чойбалсан жайкы убакт" + + "ысы0Крисмас аралынын убактысы2Кокос аралдарынын убактысы!Колумбия убакт" + + "ысы,Колумбия кышкы убактысы,Колумбия жайкы убактысы.Кук аралдарынын уба" + + "ктысы7Кук аралдарынын кышкы убакытыDКук аралдарынын жарым жайкы убактыс" + + "ы\x19Куба убактысы$Куба кышкы убактысы$Куба жайкы убактысы\x1bДэвис уба" + + "ктысы)Дюмон-д-Урвил убактысы&Чыгыш Тимор убактысы,Истер аралынын убакты" + + "сы5Истер аралынын кышкы убакыты5Истер аралынын жайкы убакыты\x1fЭкуадор" + + " убактысы0Борбордук Европа убактысы9Борбордук Европа кышкы убакыты;Борбо" + + "рдук Европа жайкы убактысы(Чыгыш Европа убактысы1Чыгыш Европа кышкы уба" + + "кыты3Чыгыш Европа жайкы убактысы;Калининград жана Минск убактысы(Батыш " + + "Европа убактысы1Батыш Европа кышкы убакыты3Батыш Европа жайкы убактысы8" + + "Фолкленд аралдарынын убактысыAФолкленд аралдарынын кышкы убакытыCФолкле" + + "нд аралдарынын жайкы убактысы\x19Фижи убактысы\x22Фижи кышкы убакыты$Фи" + + "жи жайкы убактысы,Француз Гвиана убактысыLФранцуз Түштүгү жана Антаркти" + + "ка убактысы#Галапагос убактысы\x1dГамбие убактысы\x1dГрузия убактысы&Гр" + + "узия кышкы убакыты(Грузия жайкы убактысы\x1fГилберт убактысы\x1eGMT, кы" + + "шкы убакыты0Чыгыш Гренландия убактысы;Чыгыш Гренландия кышкы убактысы;Ч" + + "ыгыш Гренландия жайкы убактысы0Батыш Гренландия убактысы;Батыш Гренланд" + + "ия кышкы убактысы;Батыш Гренландия жайкы убактысы9Персия булуңунун жайк" + + "ы убакыты\x1dГвиана убактысы(Гавайи-Алеут убактысы3Гавайи-Алеут кышкы у" + + "бактысы3Гавайи-Алеут жайкы убактысы\x1fГонконг убактысы(Гонконг кышкы у" + + "бакыты*Гонконг жайкы убактысы\x19Ховд убактысы\x22Ховд кышкы убакыты$Хо" + + "вд жайкы убактысы\x1bИндия убактысы$Инди океан убактысы#Индокытай убакт" + + "ысы6Борбордук Индонезия убактысы.Чыгыш Индонезия убактысы.Батыш Индонез" + + "ия убактысы\x19Иран убактысы\x22Иран кышкы убакыты*Иран күндүзгү убакты" + + "сы\x1fИркутск убактысы(Иркутск кышкы убакыты(Иркутск жайкы убакыты\x1dИ" + + "зраиль убакыты(Израиль кышкы убакыты(Израиль жайкы убакыты\x1bЖапон уба" + + "ктысы$Жапон кышкы убакыты&Жапон жайкы убактысы.Чыгыш Казакстан убактысы" + + ".Батыш Казакстан убактысы\x1bКорея убактысы$Корея кышкы убакыты$Корея жа" + + "йкы убакыты\x1dКосрае убактысы%Красноярск убактысы.Красноярск кышкы уба" + + "кыты0Красноярск жайкы убактысы%Кыргызстан убактысы0Лайн аралдарынын уба" + + "ктысы Лорд Хау убактысы)Лорд Хау кышкы убакыты+Лорд Хау жайкы убактысы" + + "\x1fМакуари убактысы\x1fМагадан убактысы(Магадан кышкы убакыты*Магадан ж" + + "айкы убактысы!Малайзия убактысы\x1fМальдив убактысы!Маркезас убактысы6М" + + "аршалл аралдарынын убактысы!Маврикий убактысы*Маврикий кышкы убакыты,Ма" + + "врикий жайкы убактысы\x1dМоусон убактысы7Түндүк-чыгыш Мексика убактысыB" + + "Түндүк-чыгыш Мексика кышкы убактысыBТүндүк-чыгыш Мексика жайкы убактысы" + + "4Мексика, Тынч океан убактысы?Мексика, Тынч океан кышкы убактысы?Мексика" + + ", Тынч океан жайкы убактысы$Улан Батор убактысы-Улан Батор кышкы убакыты" + + "/Улан Батор жайкы убактысы\x1dМосква убактысы&Москва кышкы убакыты(Москв" + + "а жайкы убактысы\x1fМйанмар убактысы\x1bНауру убактысы\x1bНепал убактыс" + + "ы,Жаӊы Каледония убактысы5Жаӊы Каледония кышкы убакыты7Жаӊы Каледония ж" + + "айкы убактысы*Жаӊы Зеландия убактысы3Жаӊы Зеландия кышкы убакыты3Жаңы З" + + "еландия жайкы убакыты'Нюфаундлэнд убактысы2Нюфаундлэнд кышкы убактысы2Н" + + "юфаундлэнд жайкы убактысы\x19Ниуэ убактысы\x1fНорфолк убактысы5Фернандо" + + " де Норонья убактысы@Фернандо де Норонья кышкы убактысы@Фернандо де Норо" + + "нья жайкы убактысы'Новосибирск убактысы0Новосибирск кышкы убакыты2Новос" + + "ибирск жайкы убактысы\x19Омск убактысы\x22Омск кышкы убакыты$Омск жайкы" + + " убактысы!Пакистан убактысы*Пакистан кышкы убакыты,Пакистан жайкы убакты" + + "сы\x1bПалау убактысы1Папуа-Жаңы Гвинея убактысы!Парагвай убактысы,Параг" + + "вай кышкы убактысы,Парагвай жайкы убактысы\x19Перу убактысы$Перу кышкы " + + "убактысы$Перу жайкы убактысы8Филиппин аралдарынын убактысыCФилиппин ара" + + "лдарынын кышкы убактысыCФилиппин аралдарынын жайкы убактысы4Феникс арал" + + "дарынын убактысы8Сен Пьер жана Микелон убактысыCСен Пьер жана Микелон к" + + "ышкы убактысыCСен Пьер жана Микелон жайкы убактысы!Питкэрнг убактысы" + + "\x1dПонапе убактысы\x1dПхеньян убакыты\x1fРеюнион убактысы\x1dРотера уба" + + "ктысы\x1fСахалин убактысы(Сахалин кышкы убакыты*Сахалин жайкы убактысы" + + "\x1bСамоа убактысы$Самоа кышкы убакыты&Самоа жайкы убактысы\x1dСейшел уб" + + "актысы!Сингапур убактысы6Соломон аралдарынын убактысы*Түштүк Жоржия уба" + + "ктысы!Суринаме убактысы\x19Саоа убактысы\x1bТаити убактысы\x1dТайпей уб" + + "актысы&Тайпей кышкы убакыты&Тайпей жайкы убакыты#Тажикстан убактысы\x1f" + + "Токелау убактысы\x1bТонга убактысы$Тонга кышкы убакыты&Тонга жайкы убак" + + "тысы\x19Чуук убактысы'Түркмөнстан убактысы0Түркмөнстан кышкы убакыты2Тү" + + "ркмөнстан жайкы убактысы\x1dТувалу убактысы\x1fУругвай убактысы*Уругвай" + + " кышкы убактысы*Уругвай жайкы убактысы#Өзбекстан убактысы,Өзбекстан кышк" + + "ы убакыты.Өзбекстан жайкы убактысы\x1fВануату убактысы(Вануату кышкы уб" + + "акыты*Вануату жайкы убактысы#Венесуэла убактысы'Владивосток убактысы0Вл" + + "адивосток кышкы убакыты2Владивосток жайкы убактысы#Волгоград убактысы,В" + + "олгоград кышкы убакыты.Волгоград жайкы убактысы\x1dВосток убактысы0Уейк" + + " аралдарынын убактысы1Уолис жана Футуна убактысы\x1dЯкутск убактысы&Якут" + + "ск кышкы убакыты(Якутск жайкы убактысы)Екатеринбург убактысы2Екатеринбу" + + "рг кышкы убакыты4Екатеринбург жайкы убактысы" + +var bucket64 string = "" + // Size: 9745 bytes + "\x09Fúngatɨ\x06Naanɨ\x06Keenda\x06Ikúmi\x09Inyambala\x07Idwaata\x0aMʉʉnc" + + "hɨ\x08Vɨɨrɨ\x06Saatʉ\x04Inyi\x05Saano\x07Sasatʉ\x0cKʉfúngatɨ\x09Kʉnaanɨ" + + "\x09Kʉkeenda\x08Kwiikumi\x0dKwiinyambála\x0aKwiidwaata\x0dKʉmʉʉnchɨ\x0bK" + + "ʉvɨɨrɨ\x09Kʉsaatʉ\x07Kwiinyi\x08Kʉsaano\x0aKʉsasatʉ\x06Píili\x06Táatu" + + "\x04Íne\x06Táano\x03Alh\x03Ijm\x06Móosi\x0aJumapíiri\x09Jumatátu\x08Juma" + + "íne\x0aJumatáano\x09Alamíisi\x07Ijumáa\x0aJumamóosi\x06Ncho 1\x06Ncho 2" + + "\x06Ncho 3\x06Ncho 4\x0bNcholo ya 1\x0bNcholo ya 2\x0bNcholo ya 3\x0bNch" + + "olo ya 4\x03TOO\x03MUU\x18Kɨrɨsitʉ sɨ anavyaal\x16Kɨrɨsitʉ akavyaalwe" + + "\x03KSA\x02KA\x0aMpɨɨndɨ\x07Mwaáka\x07Mweéri\x06Wíiki\x05Sikʉ\x05Niijo" + + "\x06Isikʉ\x0bLamʉtoondo\x0eSikʉ ya júma\x13Mpɨɨndɨ ja sikʉ\x04Sáa\x07Dak" + + "íka\x09Sekúunde\x16Mpɨɨndɨ ja mɨɨtʉ\x04Son.\x05Méi.\x05Dën.\x05Mët.\x04" + + "Don.\x04Fre.\x04Sam.\x07Sonndeg\x08Méindeg\x0aDënschdeg\x09Mëttwoch\x0bD" + + "onneschdeg\x07Freideg\x09Samschdeg\x03Son\x04Méi\x04Dën\x04Mët\x03Don" + + "\x03Fre\x03Sam\x05moies\x09nomëttes\x06nomë.\x08v. e. Z.\x08n. e. Z.\x05" + + "Epoch\x04Joer\x0blescht Joer\x0adëst Joer\x0cnächst Joer\x0ban {0} Joer" + + "\x0da(n) {0} Joer\x0evirun {0} Joer\x10viru(n) {0} Joer\x09an {0} J.\x0b" + + "a(n) {0} J.\x0cvirun {0} J.\x0eviru(n) {0} J.\x07+{0} J.\x07-{0} J.\x0ea" + + "n {0} Quartal\x12a(n) {0} Quartaler\x11virun {0} Quartal\x15viru(n) {0} " + + "Quartaler\x09an {0} Q.\x0ba(n) {0} Q.\x0cvirun {0} Q.\x0eviru(n) {0} Q." + + "\x07+{0} Q.\x07-{0} Q.\x05Mount\x0dleschte Mount\x0bdëse Mount\x0enächst" + + "e Mount\x0can {0} Mount\x0fa(n) {0} Méint\x0fvirun {0} Mount\x12viru(n) " + + "{0} Méint\x09an {0} M.\x0ba(n) {0} M.\x0cvirun {0} M.\x0eviru(n) {0} M." + + "\x07+{0} M.\x07-{0} M.\x0blescht Woch\x09dës Woch\x0cnächst Woch\x0ban {" + + "0} Woch\x0fa(n) {0} Wochen\x0evirun {0} Woch\x12viru(n) {0} Wochen\x09an" + + " {0} W.\x0ba(n) {0} W.\x0cvirun {0} W.\x0eviru(n) {0} W.\x07+{0} W.\x07-" + + "{0} W.\x03Dag\x09gëschter\x04haut\x04muer\x0aan {0} Dag\x0da(n) {0} Deeg" + + "\x0dvirun {0} Dag\x10viru(n) {0} Deeg\x09an {0} D.\x0ba(n) {0} D.\x0cvir" + + "un {0} D.\x0eviru(n) {0} D.\x07+{0} D.\x07-{0} D.\x09Wochendag\x0flescht" + + "e Sonndeg\x0ddëse Sonndeg\x10nächste Sonndeg\x0cleschte Son.\x0adëse Son" + + ".\x0dnächste Son.\x0bleschte So.\x09dëse So.\x0cnächste So.\x10leschte M" + + "éindeg\x0edëse Méindeg\x11nächste Méindeg\x0dleschte Méi.\x0bdëse Méi." + + "\x0enächste Méi.\x0cleschte Mé.\x0adëse Mé.\x0dnächste Mé.\x13leschten D" + + "ënschdeg\x11dësen Dënschdeg\x14nächsten Dënschdeg\x0dleschten Dë.\x0bdë" + + "sen Dë.\x0enächsten Dë.\x11leschte Mëttwoch\x0fdëse Mëttwoch\x12nächste " + + "Mëttwoch\x0dleschte Mët.\x0bdëse Mët.\x0enächste Mët.\x0cleschte Më.\x0a" + + "dëse Më.\x0dnächste Më.\x14leschten Donneschdeg\x12dësen Donneschdeg\x15" + + "nächsten Donneschdeg\x0dleschten Don.\x0bdësen Don.\x0enächsten Don.\x0c" + + "leschten Do.\x0adësen Do.\x0dnächsten Do.\x0fleschte Freideg\x0ddëse Fre" + + "ideg\x10nächste Freideg\x0cleschte Fre.\x0adëse Fre.\x0dnächste Fre.\x0b" + + "leschte Fr.\x09dëse Fr.\x0cnächste Fr.\x11leschte Samschdeg\x0fdëse Sams" + + "chdeg\x12nächste Samschdeg\x0cleschte Sam.\x0adëse Sam.\x0dnächste Sam." + + "\x0bleschte Sa.\x09dëse Sa.\x0cnächste Sa.\x0fDageshallschent\x05Stonn" + + "\x0can {0} Stonn\x10a(n) {0} Stonnen\x0fvirun {0} Stonn\x13viru(n) {0} S" + + "tonnen\x03St.\x0aan {0} St.\x0ca(n) {0} St.\x0dvirun {0} St.\x0fviru(n) " + + "{0} St.\x08+{0} St.\x08-{0} St.\x06Minutt\x0dan {0} Minutt\x11a(n) {0} M" + + "inutten\x10virun {0} Minutt\x14viru(n) {0} Minutten\x0ban {0} Min.\x0da(" + + "n) {0} Min.\x0evirun {0} Min.\x10viru(n) {0} Min.\x06Sekonn\x0dan {0} Se" + + "konn\x11a(n) {0} Sekonnen\x10virun {0} Sekonn\x14viru(n) {0} Sekonnen" + + "\x0ban {0} Sek.\x0da(n) {0} Sek.\x0evirun {0} Sek.\x10viru(n) {0} Sek." + + "\x09+{0} Sek.\x09-{0} Sek.\x08Zäitzon\x09{0} Zäit\x0f{0} Summerzäit\x0f{" + + "0} Normalzäit\x14Britesch Summerzäit\x12Iresch Summerzäit\x0aAcre-Zäit" + + "\x10Acre-Normalzäit\x10Acre-Summerzäit\x11Afghanistan-Zäit\x18Zentralafr" + + "ikanesch Zäit\x14Ostafrikanesch Zäit\x15Südafrikanesch Zäit\x15Westafrik" + + "anesch Zäit\x1bWestafrikanesch Normalzäit\x1bWestafrikanesch Summerzäit" + + "\x0cAlaska-Zäit\x12Alaska-Normalzäit\x12Alaska-Summerzäit\x0cAlmaty-Zäit" + + "\x12Almaty-Normalzäit\x12Almaty-Summerzäit\x0eAmazonas-Zäit\x14Amazonas-" + + "Normalzäit\x14Amazonas-Summerzäit\x1cNordamerikanesch Inlandzäit#Nordame" + + "rikanesch Inland-Normalzäit#Nordamerikanesch Inland-Summerzäit Nordameri" + + "kanesch Ostküstenzäit'Nordamerikanesch Ostküsten-Normalzäit'Nordamerikan" + + "esch Ostküsten-Summerzäit\x14Rocky-Mountain-Zäit\x1aRocky-Mountain-Norma" + + "lzäit\x1aRocky-Mountain-Summerzäit!Nordamerikanesch Westküstenzäit(Norda" + + "merikanesch Westküsten-Normalzäit(Nordamerikanesch Westküsten-Summerzäit" + + "\x0cAnadyr-Zäit\x12Anadyr-Normalzäit\x12Anadyr-Summerzäit\x0eArabesch Zä" + + "it\x14Arabesch Normalzäit\x14Arabesch Summerzäit\x12Argentinesch Zäit" + + "\x18Argentinesch Normalzäit\x18Argentinesch Summerzäit\x16Westargentines" + + "ch Zäit\x1cWestargentinesch Normalzäit\x1cWestargentinesch Summerzäit" + + "\x0fArmenesch Zäit\x15Armenesch Normalzäit\x15Armenesch Summerzäit\x0eAt" + + "lantik-Zäit\x14Atlantik-Normalzäit\x14Atlantik-Summerzäit\x18Zentralaust" + + "ralesch Zäit\x1eZentralaustralesch Normalzäit\x1eZentralaustralesch Summ" + + "erzäit\x1eZentral-/Westaustralesch Zäit$Zentral-/Westaustralesch Normalz" + + "äit$Zentral-/Westaustralesch Summerzäit\x14Ostaustralesch Zäit\x1aOstau" + + "stralesch Normalzäit\x1aOstaustralesch Summerzäit\x15Westaustralesch Zäi" + + "t\x1bWestaustralesch Normalzäit\x1bWestaustralesch Summerzäit\x17Aserbai" + + "dschanesch Zäit\x1dAserbeidschanesch Normalzäit\x1dAserbaidschanesch Sum" + + "merzäit\x0cAzoren-Zäit\x12Azoren-Normalzäit\x12Azoren-Summerzäit\x11Bang" + + "ladesch-Zäit\x17Bangladesch-Normalzäit\x17Bangladesch-Summerzäit\x0cBhut" + + "an-Zäit\x12Bolivianesch Zäit\x0fBrasília-Zäit\x15Brasília-Normalzäit\x15" + + "Brasília-Summerzäit\x0cBrunei-Zäit\x0fKap-Verde-Zäit\x15Kap-Verde-Normal" + + "zäit\x15Kap-Verde-Summerzäit\x0eChamorro-Zäit\x0dChatham-Zäit\x13Chatham" + + "-Normalzäit\x13Chatham-Summerzäit\x10Chilenesch Zäit\x16Chilenesch Norma" + + "lzäit\x16Chilenesch Summerzäit\x10Chinesesch Zäit\x16Chinesesch Normalzä" + + "it\x16Chinesesch Summerzäit\x10Choibalsan-Zäit\x16Choibalsan-Normalzäit" + + "\x16Choibalsan-Summerzäit\x18Chrëschtdagsinsel-Zäit\x12Kokosinselen-Zäit" + + "\x13Kolumbianesch Zäit\x19Kolumbianesch Normalzäit\x19Kolumbianesch Summ" + + "erzäit\x11Cookinselen-Zäit\x17Cookinselen-Normalzäit\x17Cookinselen-Summ" + + "erzäit\x0fKubanesch Zäit\x15Kubanesch Normalzäit\x15Kubanesch Summerzäit" + + "\x0bDavis-Zäit\x18Dumont-d’Urville-Zäit\x0eOsttimor-Zäit\x13Ouschterinse" + + "l-Zäit\x19Ouschterinsel-Normalzäit\x19Ouschterinsel-Summerzäit\x14Ecuado" + + "rianesch Zäit\x18Mëtteleuropäesch Zäit\x1eMëtteleuropäesch Normalzäit" + + "\x1eMëtteleuropäesch Summerzäit\x14Osteuropäesch Zäit\x1aOsteuropäesch N" + + "ormalzäit\x1aOsteuropäesch Summerzäit\x15Westeuropäesch Zäit\x1bWesteuro" + + "päesch Normalzäit\x1bWesteuropäesch Summerzäit\x15Falklandinselen-Zäit" + + "\x1bFalklandinselen-Normalzäit\x1bFalklandinselen-Summerzäit\x0dFidschi-" + + "Zäit\x13Fidschi-Normalzäit\x13Fidschi-Summerzäit\x19Franséisch-Guayane-Z" + + "äit,Franséisch Süd- an Antarktisgebidder-Zäit\x0fGalapagos-Zäit\x0dGamb" + + "ier-Zäit\x0fGeorgesch Zäit\x15Georgesch Normalzäit\x15Georgesch Summerzä" + + "it\x15Gilbert-Inselen-Zäit\x18Mëttler Greenwich-Zäit\x12Ostgrönland-Zäit" + + "\x18Ostgrönland-Normalzäit\x18Ostgrönland-Summerzäit\x13Westgrönland-Zäi" + + "t\x19Westgrönland-Normalzäit\x19Westgrönland-Summerzäit\x0aGuam-Zäit\x0a" + + "Golf-Zäit\x0cGuyana-Zäit\x14Hawaii-Aleuten-Zäit\x1aHawaii-Aleuten-Normal" + + "zäit\x1aHawaii-Aleuten-Summerzäit\x0fHong-Kong-Zäit\x15Hong-Kong-Normalz" + + "äit\x15Hong-Kong-Summerzäit\x0aHovd-Zäit\x10Hovd-Normalzäit\x10Hovd-Sum" + + "merzäit\x0dIndesch Zäit\x15Indeschen Ozean-Zäit\x0fIndochina-Zäit\x18Zen" + + "tralindonesesch Zäit\x14Ostindonesesch Zäit\x15Westindonesesch Zäit\x0eI" + + "ranesch Zäit\x14Iranesch Normalzäit\x14Iranesch Summerzäit\x0dIrkutsk-Zä" + + "it\x13Irkutsk-Normalzäit\x13Irkutsk-Summerzäit\x10Israelesch Zäit\x16Isr" + + "aelesch Normalzäit\x16Israelesch Summerzäit\x0fJapanesch Zäit\x15Japanes" + + "ch Normalzäit\x15Japanesch Summerzäit\x11Kamtschatka-Zäit\x17Kamtschatka" + + "-Normalzäit\x17Kamtschatka-Summerzäit\x13Ostkasachesch Zäit\x14Westkasac" + + "hesch Zäit\x10Koreanesch Zäit\x16Koreanesch Normalzäit\x16Koreanesch Sum" + + "merzäit\x0cKosrae-Zäit\x11Krasnojarsk-Zäit\x17Krasnojarsk-Normalzäit\x17" + + "Krasnojarsk-Summerzäit\x11Kirgisistan-Zäit\x13Linneninselen-Zäit\x0fLord" + + "-Howe-Zäit\x15Lord-Howe-Normalzäit\x15Lord-Howe-Summerzäit\x14Macquariei" + + "nsel-Zäit\x0dMagadan-Zäit\x13Magadan-Normalzäit\x13Magadan-Summerzäit" + + "\x10Malaysesch Zäit\x0eMaldiven-Zäit\x0fMarquesas-Zäit\x15Marshallinsele" + + "n-Zäit\x0fMauritius-Zäit\x15Mauritius-Normalzäit\x15Mauritius-Summerzäit" + + "\x0cMawson-Zäit\x15Nordwest-Mexiko-Zäit\x1bNordwest-Mexiko-Normalzäit" + + "\x1bNordwest-Mexiko-Summerzäit\x18Mexikanesch Pazifikzäit\x1fMexikanesch" + + " Pazifik-Normalzäit\x1fMexikanesch Pazifik-Summerzäit\x11Ulaanbaatar-Zäi" + + "t\x17Ulaanbaatar-Normalzäit\x17Ulaanbaatar-Summerzäit\x0eMoskauer Zäit" + + "\x14Moskauer Normalzäit\x14Moskauer Summerzäit\x0dMyanmar-Zäit\x0bNauru-" + + "Zäit\x11Nepalesesch Zäit\x14Neikaledonesch Zäit\x1aNeikaledonesch Normal" + + "zäit\x1aNeikaledonesch Summerzäit\x11Neiséiland-Zäit\x17Neiséiland-Norma" + + "lzäit\x17Neiséiland-Summerzäit\x11Neifundland-Zäit\x17Neifundland-Normal" + + "zäit\x17Neifundland-Summerzäit\x0aNiue-Zäit\x14Norfolkinselen-Zäit\x19Fe" + + "rnando-de-Noronha-Zäit\x1fFernando-de-Noronha-Normalzäit\x1fFernando-de-" + + "Noronha-Summerzäit\x11Nowosibirsk-Zäit\x17Nowosibirsk-Normalzäit\x17Nowo" + + "sibirsk-Summerzäit\x0aOmsk-Zäit\x10Omsk-Normalzäit\x10Omsk-Summerzäit" + + "\x12Pakistanesch Zäit\x18Pakistanesch Normalzäit\x18Pakistanesch Summerz" + + "äit\x0bPalau-Zäit\x15Papua-Neiguinea-Zäit\x14Paraguayanesch Zäit\x1aPar" + + "aguayanesch Normalzäit\x1aParaguayanesch Summerzäit\x10Peruanesch Zäit" + + "\x16Peruanesch Normalzäit\x16Peruanesch Summerzäit\x14Philippinnesch Zäi" + + "t\x1aPhilippinnesch Normalzäit\x1aPhilippinnesch Summerzäit\x14Phoenixin" + + "selen-Zäit\x1dSaint-Pierre-a-Miquelon-Zäit#Saint-Pierre-a-Miquelon-Norma" + + "lzäit#Saint-Pierre-a-Miquelon-Summerzäit\x15Pitcairninselen-Zäit\x0cPona" + + "pe-Zäit\x0eRéunion-Zäit\x0dRothera-Zäit\x0eSakhalin-Zäit\x14Sakhalin-Nor" + + "malzäit\x14Sakhalin-Summerzäit\x0cSamara-Zäit\x12Samara-Normalzäit\x12Sa" + + "mara-Summerzäit\x0bSamoa-Zäit\x11Samoa-Normalzäit\x11Samoa-Summerzäit" + + "\x10Seychellen-Zäit\x16Singapur-Standardzäit\x14Salomoninselen-Zäit\x13S" + + "üdgeorgesch Zäit\x0eSuriname-Zäit\x0bSyowa-Zäit\x0cTahiti-Zäit\x0cTaipe" + + "i-Zäit\x12Taipei-Normalzäit\x12Taipei-Summerzäit\x13Tadschikistan-Zäit" + + "\x0dTokelau-Zäit\x10Tonganesch Zäit\x16Tonganesch Normalzäit\x16Tonganes" + + "ch Summerzäit\x0bChuuk-Zäit\x12Turkmenistan-Zäit\x18Turkmenistan-Normalz" + + "äit\x18Turkmenistan-Summerzäit\x0cTuvalu-Zäit\x13Uruguayanesch Zäit\x18" + + "Uruguyanesch Normalzäit\x19Uruguayanesch Summerzäit\x10Usbekistan-Zäit" + + "\x16Usbekistan-Normalzäit\x16Usbekistan-Summerzäit\x0dVanuatu-Zäit\x13Va" + + "nuatu-Normalzäit\x13Vanuatu-Summerzäit\x0fVenezuela-Zäit\x11Wladiwostok-" + + "Zäit\x17Wladiwostok-Normalzäit\x17Wladiwostok-Summerzäit\x0fWolgograd-Zä" + + "it\x15Wolgograd-Normalzäit\x15Wolgograd-Summerzäit\x0cWostok-Zäit\x10Wak" + + "e-Insel-Zäit\x15Wallis-a-Futuna-Zäit\x0dJakutsk-Zäit\x13Jakutsk-Normalzä" + + "it\x13Jakutsk-Summerzäit\x14Jekaterinbuerg-Zäit\x1aJekaterinbuerg-Normal" + + "zäit\x1aJekaterinbuerg-Summerzäit\x02Ma\x02De\x02Wu\x02Do\x02Fr\x03Sat" + + "\x03Mvu\x03Sib\x03Sit\x03Sin\x03Sih\x03Mgq\x03Mso\x03Bil\x03Tha\x03Hla" + +var bucket65 string = "" + // Size: 14752 bytes + "\x09Janwaliyo\x09Febwaliyo\x06Marisi\x05Apuli\x05Maayi\x05Juuni\x07Julaa" + + "yi\x07Agusito\x0aSebuttemba\x08Okitobba\x07Novemba\x07Desemba\x08Sabbiit" + + "i\x06Balaza\x09Lwakubiri\x09Lwakusatu\x07Lwakuna\x0aLwakutaano\x0aLwamuk" + + "aaga\x04Kya1\x04Kya2\x04Kya3\x04Kya4\x09Kyakuna 1\x09Kyakuna 2\x09Kyakun" + + "a 3\x09Kyakuna 4\x14Kulisito nga tannaza\x14Bukya Kulisito Azaal\x07Mule" + + "mbe\x05Mwezi\x06Lunaku\x05Ggulo\x08Lwaleero\x04Nkya\x18Lunaku lw’omu sab" + + "biiti\x05Saawa\x07Dakiika\x09Kasikonda\x0aSsaawa za:\x10Wiótheȟika Wí" + + "\x13Thiyóȟeyuŋka Wí\x16Ištáwičhayazaŋ Wí\x10Pȟežítȟo Wí\x13Čhaŋwápetȟo W" + + "í\x17Wípazukȟa-wašté Wí\x13Čhaŋpȟásapa Wí\x0fWasútȟuŋ Wí\x12Čhaŋwápeǧi " + + "Wí\x16Čhaŋwápe-kasná Wí\x0dWaníyetu Wí\x13Tȟahékapšuŋ Wí\x10Aŋpétuwakȟaŋ" + + "\x0fAŋpétuwaŋži\x0eAŋpétunuŋpa\x0dAŋpétuyamni\x0cAŋpétutopa\x0fAŋpétuzap" + + "taŋ\x11Owáŋgyužažapi\x08Ómakȟa\x17Ómakȟa kʼuŋ héhaŋ\x11Lé ómakȟa kiŋ\x1c" + + "Tȟokáta ómakȟa kiŋháŋ\x22Letáŋhaŋ ómakȟa {0} kiŋháŋ\x22Hékta ómakȟa {0} " + + "kʼuŋ héhaŋ\x03Wí\x12Wí kʼuŋ héhaŋ\x0cLé wí kiŋ\x17Tȟokáta wí kiŋháŋ#Letá" + + "ŋhaŋ wíyawapi {0} kiŋháŋ#Hékta wíyawapi {0} kʼuŋ héhaŋ\x04Okó\x13Okó kʼ" + + "uŋ héhaŋ\x0dLé okó kiŋ\x18Tȟokáta okó kiŋháŋ\x1eLetáŋhaŋ okó {0} kiŋháŋ" + + "\x1eHékta okó {0} kʼuŋ héhaŋ\x08Aŋpétu\x0bȞtálehaŋ\x11Lé aŋpétu kiŋ\x15H" + + "íŋhaŋni kiŋháŋ!Letáŋhaŋ {0}-čháŋ kiŋháŋ\x22Hékta {0}-čháŋ k’uŋ héhaŋ" + + "\x0dOkó-aŋpétu Aŋpétuwakȟáŋ kʼuŋ héhaŋ\x1aAŋpétuwakȟáŋ kiŋ lé\x1bAŋpétuw" + + "akȟáŋ kiŋháŋ\x1fAŋpétutȟokahe kʼuŋ héhaŋ\x19Aŋpétutȟokahe kiŋ lé\x1aAŋpé" + + "tutȟokahe kiŋháŋ\x1dAŋpétunuŋpa kʼuŋ héhaŋ\x17Aŋpétunuŋpa kiŋ lé\x18Aŋpé" + + "tunuŋpa kiŋháŋ\x1cAŋpétuyamni kʼuŋ héhaŋ\x16Aŋpétuyamni kiŋ lé\x17Aŋpétu" + + "yamni kiŋháŋ\x1bAŋpétutopa kʼuŋ héhaŋ\x15Aŋpétutopa kiŋ lé\x16Aŋpétutopa" + + " kiŋháŋ Aŋpétuzaŋptaŋ kʼuŋ héhaŋ\x16Apétuzaptaŋ kiŋ lé\x19Aŋpétuzaptaŋ k" + + "iŋháŋ!Owáŋkayužažapi kʼuŋ héhaŋ\x1bOwáŋkayužažapi kiŋ lé\x1cOwáŋkayužaža" + + "pi kiŋháŋ\x08Owápȟe\x22Letáŋhaŋ owápȟe {0} kiŋháŋ\x22Hékta owápȟe {0} kʼ" + + "uŋ héhaŋ\x16Owápȟe oȟʼáŋkȟo(Letáŋhaŋ oȟ’áŋkȟo {0} kiŋháŋ)Hékta oȟ’áŋkȟo " + + "{0} k’uŋ héhaŋ\x05Okpí\x1fLetáŋhaŋ okpí {0} kiŋháŋ Hékta okpí {0} k’uŋ h" + + "éhaŋ\x10sánzá ya yambo\x13sánzá ya míbalé\x13sánzá ya mísáto\x11sánzá y" + + "a mínei\x13sánzá ya mítáno\x13sánzá ya motóbá\x11sánzá ya nsambo\x11sánz" + + "á ya mwambe\x10sánzá ya libwa\x10sánzá ya zómi\x1esánzá ya zómi na mɔ̌k" + + "ɔ́\x1csánzá ya zómi na míbalé\x03eye\x03ybo\x03mbl\x03mst\x03min\x03mtn" + + "\x03mps\x06eyenga\x12mokɔlɔ mwa yambo\x15mokɔlɔ mwa míbalé\x15mokɔlɔ mwa" + + " mísáto\x13mokɔlɔ ya mínéi\x14mokɔlɔ ya mítáno\x09mpɔ́sɔ\x03SM1\x03SM2" + + "\x03SM3\x03SM4\x19sánzá mísáto ya yambo\x1csánzá mísáto ya míbalé\x1csán" + + "zá mísáto ya mísáto\x1asánzá mísáto ya mínei\x0cntɔ́ngɔ́\x07mpókwa\x14Ya" + + "mbo ya Yézu Krís\x14Nsima ya Yézu Krís\x0alibóso ya\x0ansima ya Y\x07Ntá" + + "ngo\x05Mobú\x07Sánzá\x08Pɔ́sɔ\x08Mokɔlɔ\x0dLóbi elékí\x08Lɛlɔ́\x0cLóbi e" + + "koyâ\x14Mokɔlɔ ya pɔ́sɔ\x11Eleko ya mokɔlɔ\x06Ngonga\x07Monúti\x0cSɛkɔ́n" + + "dɛ\x11Ntáká ya ngonga\x0dNgonga ya {0}\x15Ntángo ya Lubumbashi\x1eNtángo" + + " ya Afríka ya Ɛ́sita\x1aNtángo ya Afríka ya Sidi\x12Ntángo ya Londoni" + + "\x12Ntángo ya Seyshel\x08ພ.ສ.\x06ຊີ\x06ຊູ\x09ຢິນ\x0cເມົາ\x0cເຊັນ\x09ຊື່" + + "\x06ວູ\x0cເວີຍ\x0fເຊິ່ນ\x06ຢູ\x09ຊູ່\x06ໄຮ\x10ເຈຍ-ຊິ\x0dຢີ-ຊູ\x13ບິງ-ຢິນ" + + "\x16ດິງ-ເມົາ\x13ວູ-ເຊັນ\x0dຈີ-ຊິ\x10ແກງ-ວູ\x16ຊິນ-ເວີຍ\x13ເຣນ-ເຊນ\x10ກຸຍ" + + "-ຢູ\x0dໄຈ-ຊູ\x0dຢີ-ໄຮ\x10ບິງ-ຊີ\x10ດິງ-ຊູ\x10ວູ-ຢິນ\x13ຈີ-ເມົາ\x13ແກງ-ເຊ" + + "ນ\x10ຊິນ-ຊິ\x10ເຣນ-ວູ\x16ກຸຍ-ເວີຍ\x13ເຈຍ-ເຊນ\x0dຢີ-ຢູ\x10ບິງ-ຊູ\x10ດິງ" + + "-ໄຫ\x0dວູ-ຊິ\x0dຈີ-ຊູ\x13ເກງ-ຢິນ\x16ຊິນ-ເມົາ\x18ເຣນເຊິ່ນ\x10ກຸຍ-ຊິ\x0dໄຈ" + + "-ວູ\x13ຢີ-ເວີຍ\x13ບິງ-ເຊນ\x10ດິງ-ຢູ\x0dວູ-ຊູ\x0dຈີ-ໄຫ\x10ເກງ-ຊິ\x10ຊິນ-ຊ" + + "ູ\x13ເຣຍ-ຢິນ\x16ກຸຍ-ເມົາ\x10ໄຈ-ເຊນ\x0dຢີ-ຊິ\x10ບິງ-ວູ\x16ດິງ-ເວີຍ\x10ວ" + + "ູ-ເກນ\x0dຈີ-ຢູ\x10ເກງ-ຊູ\x10ຊິນ-ໄຫ\x10ເຣນ-ຊິ\x10ກຸຍ-ຊູ\x13ເຈຍ-ຢິນ\x13ຢ" + + "ິ-ເມົາ\x18ບິງເຊິ່ນ\x10ດິງ-ຊິ\x0dວູ-ວູ\x13ຈີ-ເວີຍ\x13ເກງ-ເຊນ\x10ຊິນ-ຢູ" + + "\x10ເຣນ-ຊູ\x15ກຸຍຮ່າຍ\x06ໜູ\x12ງົວຜູ້\x0cເສືອ\x12ກະຕ່າຍ\x12ມັງກອນ\x06ງູ" + + "\x09ມ້າ\x09ແກະ\x09ລິງ\x12ໄກ່ຜູ້\x06ໝາ\x06ໝູ\x0cເທົາ\x0cບາບາ\x0cຮາໂຕ\x09ເ" + + "ຄຍ\x0cໂທບາ\x0fອຳເຊີ\x15ບາລຳຮາດ\x18ບາລາມູດາ\x12ບາສຮານ\x12ເປົານາ\x0fອີແປ" + + "ບ\x0fມາສລາ\x0fນາຊິວ\x0fອາເຊີ\x0fນາຊີວ\x1bແມສເຄີແຣມ\x0fເຕເກມ\x0cເຮດາ" + + "\x0fທາຊັສ\x09ເທີ\x15ເຍຄາທິດ\x15ເມກາບິດ\x12ເມຍເຊຍ\x12ເຈນບອດ\x0cເຊເນ\x0cຮຳ" + + "ເລ\x12ເນແຮສ໌\x15ພາກູເມນ\x15EEEEທີ d MMMM y G\x08ມ.ກ.\x08ກ.ພ.\x08ມ.ນ." + + "\x08ມ.ສ.\x08ພ.ພ.\x0bມິ.ຖ.\x08ກ.ລ.\x08ສ.ຫ.\x08ກ.ຍ.\x08ຕ.ລ.\x08ພ.ຈ.\x08ທ.ວ" + + ".\x0fກຸມພາ\x0cມີນາ\x0cເມສາ\x15ພຶດສະພາ\x12ມິຖຸນາ\x15ກໍລະກົດ\x0fສິງຫາ\x0fກ" + + "ັນຍາ\x0cຕຸລາ\x0fພະຈິກ\x0fທັນວາ\x0fອາທິດ\x09ຈັນ\x12ອັງຄານ\x09ພຸດ\x0fພະຫ" + + "ັດ\x09ສຸກ\x0cເສົາ\x06ອາ\x03ຈ\x03ອ\x03ພ\x06ພຫ\x06ສຸ\x03ສ\x07ອາ.\x04ຈ." + + "\x04ອ.\x04ພ.\x07ພຫ.\x07ສຸ.\x04ສ.\x18ວັນອາທິດ\x12ວັນຈັນ\x1bວັນອັງຄານ\x12ວ" + + "ັນພຸດ\x18ວັນພະຫັດ\x12ວັນສຸກ\x15ວັນເສົາ\x07ຕມ1\x07ຕມ2\x07ຕມ3\x07ຕມ4\x14" + + "ໄຕຣມາດ 1\x14ໄຕຣມາດ 2\x14ໄຕຣມາດ 3\x14ໄຕຣມາດ 4\x04ຕ1\x04ຕ2\x04ຕ3\x04ຕ4" + + "\x15ທ່ຽງຄືນ\x18ກ່ອນທ່ຽງ\x15ຕອນທ່ຽງ\x18ຫຼັງທ່ຽງ\x18ຕອນເຊົ້າ\x15ຕອນບ່າຍ" + + "\x12ຕອນແລງ\x12ກາງຄືນ\x06ທຄ\x06ກທ\x03ທ\x09ຫຼທ\x13ກາງຄືນ1\x1bຕອນກາງຄືນ\x18" + + "ທ່ຽງ\u200bຄືນ\x0cທ່ຽງ\x12\u200bເຊົ້າ\x09ສວຍ\x09ແລງ\x18\u200bກາງ\u200bຄ" + + "ືນ\x03ຊ\x03ລ\x06ກຄ0ກ່ອນຄຣິດສັກກະລາດ3ກ່ອນສາກົນສັກກະລາດ$ຄຣິດສັກກະລາດ'ສາກ" + + "ົນສັກກະລາດ\x15ກ່ອນ ຄ.ສ.\x1dກ່ອນຍຸກ ຄ.ສ\x08ຄ.ສ.\x11ຍຸກ ຄ.ສ\x16EEEE ທີ d" + + " MMMM G y5H ໂມງ m ນາທີ ss ວິນາທີ zzzz2H ໂມງ m ນາທີ ss ວິນາທີ z\x12ທຣິດຣີ" + + "\x0fເຮວານ\x12ກິດເລບ\x0fເຕເວດ\x0fຊີວັດ\x0eອາດາ I\x0cອາດາ\x0fອາດາ II\x12ນິ" + + "ດຊານ\x0fອີຍາຣ\x0fສີວານ\x0cຕາມູ\x09ເອບ\x0cອີລູ\x0fຈິຕຣາ\x12ວິສາຂະ\x0fເຊ" + + "ດຖາ\x0fອັດສາ\x18ສາຣາວານາ\x0fພະຕຣາ\x15ອັສວິຊາ\x15ການຕິກາ!ອັກຣາຮາຢານາ" + + "\x0cປຸສາ\x0cມາຄະ\x15ຜາລກຸນີ\x12ປຸສະຍາ\x0fມຸຮັດ\x0cເຄາະ\x11ຮອດບີ 1\x11ຮອກ" + + "ບີ 2\x0eນຸມາ 1\x0eນຸມາ 2\x0cເຮາະ\x0cຊະອ໌\x12ເຮາະມະ\x0cເຊົາ\x15ຊຸລກິອຸ" + + "\x12ຊຸລຫິຈ\x15ມຸຣະຮອມ\x0fຊາຟາຣ\x11ຮອດບີ 2\x14ຈຸມາດາ 1\x14ຈຸມາດາ 2\x0fຮາຈ" + + "ັບ\x0fຊະບານ\x15ຮາມາດອນ\x15ເຊົາວັດ\x1bດຸອັດກິດະ\x1bດຸອັດກິຈະ\x11ຮອກບີ 1" + + "\x06ຊາ\x1eທະອິກະ (645–650)\x1eຮາກູຊິ (650–671)\x1eຮາກູໂຮ (672–686)\x18ຊູ" + + "ໂຊ (686–701)\x1eທາອິໂຮ (701–704)\x1bເຄອຸງ (704–708)\x18ວະໂດ (708–715)" + + "\x1eເຣອິກິ (715–717)\x18ໂຢໂຣ (717–724)\x1bຈິງກິ (724–729)!ເທັມປຽວ (729–7" + + "49)1ເທັມປຽວ-ຄໍາໂປ (749–749).ເທັມປຽວ-ໂຊໂຮ (749–757).ເທັມປຽວ-ໂຮຈິ (757–765" + + ")4ເທັມປຽວ-ຈິງໂງະ (765–767).ຈິງໂງະ-ເຄອຸງ (767–770)\x18ໂຮກິ (770–780)\x1fເ" + + "ທັນ-ໂອ (781–782)'ເອັນຣຢາກຸ (782–806)\x1eດາອິໂດ (806–810)\x1bໂກນິນ (810" + + "–824)\x1eເທັນໂຊ (824–834)\x18ໂຊວະ (834–848)\x18ກະໂຈ (848–851)\x1bນິນຈູ" + + " (851–854)!ສະອິໂກະ (854–857)!ເທັນນານ (857–859)\x1bໂຈງານ (859–877)\x1eເກັ" + + "ນເກ (877–885)\x1bນິນນາ (885–889)\x1eກໍາປຽວ (889–898)\x1eໂຊຕາອິ (898–90" + + "1)\x1eເອັນງິ (901–923)\x1eເອັນໂຊ (923–931)\x18ໂຊເຮ (931–938)!ເທັນງຽວ (93" + + "8–947)'ເທັນຣຢາກູ (947–957)'ເທັນໂຕະກຸ (957–961)\x18ໂອວະ (961–964)\x18ໂກໂຮ" + + " (964–968)\x18ອານະ (968–970)'ເທັນໂຣະກຸ (970–973)%ເທັນ-ເອັນ (973–976)\x1e" + + "ໂຈເງັນ (976–978)$ເທັນເງັນ (978–983)\x1bເອການ (983–985)\x1bການນະ (985–9" + + "87)\x1fເອ-ເອັນ (987–989)\x18ເອໂຊ (989–990)!ໂຊຣຢະກຸ (990–995)!ໂຊໂຕະກຸ (99" + + "5–999)\x19ໂຊໂຮ (999–1004)\x1dການໂກ (1004–1012)\x1dໂຊຫວະ (1012–1017) ການນ" + + "ິງ (1017–1021)\x1dຈິອານ (1021–1024)\x1dມານຈຸ (1024–1028) ໂຊເງັນ (1028–" + + "1037)&ໂຊເຣຢະກຸ (1037–1040)\x1dໂຊຄິວ (1040–1044)&ການໂຕະກຸ (1044–1046)\x1d" + + "ເອະໂຊ (1046–1053) ເທັນງິ (1053–1058)\x1aໂກເຮ (1058–1065)&ຈິເຣຢະກຸ (106" + + "5–1069)#ເອັນຄິວ (1069–1074)\x1dໂຊະໂຮ (1074–1077))ໂຊະເຣຢະກຸ (1077–1081)" + + "\x1dເອໂຊະ (1081–1084)#ໂອໂຕະກຸ (1084–1087)\x1dການຈິ (1087–1094)\x1aກາໂຊ (" + + "1094–1096) ເອະໂຊະ (1096–1097)&ໂຊະໂຕະກຸ (1097–1099)\x1dໂກະວະ (1099–1104)" + + "\x1dໂຊະຈິ (1104–1106)\x1dກາໂຊະ (1106–1108)#ເທັນນິນ (1108–1110)!ເທັນ-ອິ (" + + "1110–1113)\x1dເອກິວ (1113–1118)!ເຄັນ-ເອ (1118–1120) ໂຮະອານ (1120–1124) ເ" + + "ທັນຈິ (1124–1126) ດາອິຈິ (1126–1131)#ເທັນໂຊະ (1131–1132) ໂຊະໂຊະ (1132–" + + "1135) ໂຮເອັນ (1135–1141)\x1aເອຈິ (1141–1142)\x1dໂກະຈິ (1142–1144)#ເທັນໂຢ" + + "ະ (1144–1145) ຄິວອານ (1145–1151)\x1dນິນເປ (1151–1154)\x1dຄິວຈຸ (1154–1" + + "156) ໂຮເຄັນ (1156–1159)\x1aເຮຈິ (1159–1160)&ເອເຣຢະກຸ (1160–1161)\x1aໂອໂຊ" + + " (1161–1163) ໂຊະການ (1163–1165)\x1dເອມານ (1165–1166)!ນິນ-ອານ (1166–1169)" + + "\x1aກະໂອ (1169–1171) ໂຊະອານ (1171–1175)#ອານເຄັນ (1175–1177)\x1dຈິໂຊະ (11" + + "77–1181)\x1dໂຢະວະ (1181–1182)\x1dຈຸເອະ (1182–1184),ເຄັນເຣຢຸກິ (1184–1185" + + ")\x1dບັນຈິ (1185–1190)#ເກັນຄິວ (1190–1199)\x1aໂຊຈິ (1199–1201)#ເກັນນິນ (" + + "1201–1204)#ເຄັນກິວ (1204–1206)$ເກັນ-ເອະ (1206–1207)#ໂຊະເຄັນ (1207–1211)," + + "ເກັນເຣຢະກຸ (1211–1213)#ເກັນໂປະ (1213–1219) ໂຊະກິວ (1219–1222) ໂຈະໂອະ (" + + "1222–1224)#ເຄັນນິນ (1224–1225) ກາໂຮກຸ (1225–1227) ອານເຕະ (1227–1229)\x1d" + + "ການກິ (1229–1232) ໂຈະເອະ (1232–1233)&ເທັມປຸກຸ (1233–1234))ບັນເຣຢະກຸ (1" + + "234–1235)\x1dກາເຕະ (1235–1238))ເຣຢະກຸນິນ (1238–1239)!ເອັນ-ໂອ (1239–1240)" + + "\x1dນິນຈີ (1240–1243) ຄານເຈນ (1243–1247)\x1aໂຫຈີ (1247–1249)\x1dເຄນໂຊ (1" + + "249–1256)\x1dໂຄເຈນ (1256–1257)\x1aໂຊກາ (1257–1259)\x1dໂຊເກນ (1259–1260)" + + "\x1eບຸນ-ໂອ (1260–1261)\x1aໂຄໂຊ (1261–1264)\x1eບຸນ-ອີ (1264–1275)\x1dເຄນຈ" + + "ີ (1275–1278)\x1aເຄິນ (1278–1288)\x14ໂຊ (1288–1293) ອິນນິນ (1293–1299)" + + "\x1aເຊີນ (1299–1302) ເຄນເຈນ (1302–1303)\x1dຄາເຈນ (1303–1306) ໂຕກູຈິ (130" + + "6–1308)\x1dອິນກິ (1308–1311)\x1aໂອໂຊ (1300–1312)\x1aໂຊວາ (1312–1317)\x1d" + + "ບຸນໂປ (1317–1319)\x1aຈີໂນ (1319–1321) ເຈນກຽວ (1321–1324)\x1aໂຊຊິ (1324" + + "–1326) ຄາຣາກິ (1326–1329)#ເຈນໂຕກູ (1329–1331)\x1dເຈນໂກ (1331–1334) ເກັ" + + "ມມຸ (1334–1336)&ເອັນເຈັນ (1336–1340) ໂກໂກກຸ (1340–1346)\x1aໂຊຊິ (1346–" + + "1370)#ເຄນໂຕກຸ (1370–1372)\x1dບຸນຊຸ (1372–1375) ເທັນຈຸ (1375–1379) ຄໍຢາກຸ" + + " (1379–1381)\x1aໂກວາ (1381–1384) ເຈັນຊຸ (1384–1392) ມີໂຕກຸ (1384–1387)" + + "\x1aກາກິ (1387–1389)\x14ຄູ (1389–1390) ມິໂຕກຸ (1390–1394)\x1aໂອອິ (1394–" + + "1428)\x1aໂຊໂຊ (1428–1429)\x1dອິກຽວ (1429–1441) ກາກິຊຸ (1441–1444)!ບຸນ-ອາ" + + "ນ (1444–1449) ໂຫໂຕກຸ (1449–1452)#ກຽວໂຕກຸ (1452–1455)\x1aເກໂຊ (1455–145" + + "7) ໂຊໂຣກຸ (1457–1460)\x1dຄານໂຊ (1460–1466)\x1dບຸນໂຊ (1466–1467)\x1dໂອນິນ" + + " (1467–1469)\x1dບຸນມິ (1469–1487)\x1dໂຊກຽວ (1487–1489)&ເອັນໂຕກຸ (1489–14" + + "92)\x1aມິໂອ (1492–1501)\x1dບຸນກິ (1501–1504)\x1aອິໂຊ (1504–1521)\x1aໄຕອິ" + + " (1521–1528)#ກຽວໂຣກຸ (1528–1532)#ເທັນມອນ (1532–1555)\x1aໂກຈິ (1555–1558)" + + " ອິໂຣກຸ (1558–1570) ເຈັນກິ (1570–1573) ເທັນໂຊ (1573–1592)#ບຸນໂຣກຸ (1592–" + + "1596)\x1aຄິໂຊ (1596–1615) ເກັນວາ (1615–1624)\x1eຄານ-ອິ (1624–1644)\x1aໂຊ" + + "ໂຊ (1644–1648)\x17ຄຽນ (1648–1652)\x14ຊຸ (1652–1655)#ເມຍຢາກຸ (1655–1658" + + ")\x1dແມນຈິ (1658–1661) ການບຸນ (1661–1673) ເອັນໂປ (1673–1681) ເທັນວາ (168" + + "1–1684)\x1dໂຈກຽວ (1684–1688)&ເຈັນໂຣກຸ (1688–1704)\x1aໂຫອິ (1704–1711) ຊຸ" + + "ຕຸກຸ (1711–1716)\x1dກຽວຫຸ (1716–1736)#ເຈັນບຸນ (1736–1741)\x1dຄານໂປ (17" + + "41–1744)#ເອັນກຽວ (1744–1748)!ຄານ-ອິນ (1748–1751) ໂຫຢາກຸ (1751–1764)\x1dເ" + + "ມຍວາ (1764–1772)!ເອັນ-ອິ (1772–1781) ເທັນມິ (1781–1789)\x1dຄານຊິ (1789" + + "–1801)\x1dກຽວວາ (1801–1804)\x1dບຸນກາ (1804–1818)\x1dບຸນຊິ (1818–1830) " + + "ເທັນໂປ (1830–1844)\x1aກຸກາ (1844–1848)\x1aກາອິ (1848–1854) ແອັນຊິ (185" + + "4–1860)'ແມັນ-ເອັນ (1860–1861)\x1dບຸນກຸ (1861–1864)\x1dເຈນຈີ (1864–1865)" + + "\x1aຄີໂອ (1865–1868)\x0cມີຈີ\x0cໄຕໂຊ\x0cໂຊວາ\x0cຮີຊີ\x07Novemba\x07Desem" + + "ba" + +var bucket66 string = "" + // Size: 24113 bytes + "\x18ຟາຣວາດິນ!ອໍຣດີບີເຫຣດ\x12ຄໍຣເດດ\x09ແຕຣ\x12ມໍຣເດດ\x15ຊາຣຫິວາ\x09ເມີ" + + "\x0fອາບານ\x0cອາຊາ\x09ດີຣ\x12ບຣາມານ\x12ເອສຟານ\x18ຟຣາວາດິນ\x0fອາຊາຣ\x12ບຣາ" + + "ແມນ!ອໍຣດີບີເຫຮດ\x15ຊາຣລິວາ\x18ປີເປີເຊຍ\x13ກ່ອນ R.O.C.\x0cສະໄໝ\x06ປີ" + + "\x0fປີກາຍ\x0fປີນີ້\x0fປີໜ້າ\x1aໃນອີກ {0} ປີ\x16{0} ປີກ່ອນ\x12ໄຕຣມາດ'ໄຕຣມ" + + "າດກ່ອນໜ້າ\x1bໄຕຣມາດນີ້\x1bໄຕຣມາດໜ້າ&ໃນອີກ {0} ໄຕຣມາດ\x22{0} ໄຕຣມາດກ່ອນ" + + "\x07ຕມ.\x12ໃນ {0} ຕມ.\x18{0} ຕມ. ກ່ອນ\x0fເດືອນ\x1bເດືອນແລ້ວ\x18ເດືອນນີ້" + + "\x18ເດືອນໜ້າ#ໃນອີກ {0} ເດືອນ\x1f{0} ເດືອນກ່ອນ\x04ດ.\x18ໃນອີກ {0} ດ.\x15{" + + "0} ດ. ກ່ອນ\x1bອາທິດແລ້ວ\x18ອາທິດນີ້\x18ອາທິດໜ້າ#ໃນອີກ {0} ອາທິດ\x1f{0} ອ" + + "າທິດກ່ອນ\x19ອາທິດທີ {0}\x1bໃນອີກ {0} ອທ.\x18{0} ອທ. ກ່ອນ\x09ມື້\x15ມື້" + + "ກ່ອນ\x12ມື້ວານ\x12ມື້ນີ້\x15ມື້ອື່ນ\x0fມື້ຮື\x1dໃນອີກ {0} ມື້\x19{0} ມ" + + "ື້ກ່ອນ!ມື້ຂອງອາທິດ$ວັນອາທິດແລ້ວ!ວັນອາທິດນີ້!ວັນອາທິດໜ້າ#ໃນ {0} ວັນອາທິ" + + "ດ({0} ວັນອາທິດກ່ອນ\x1eວັນທິດແລ້ວ\x1bວັນທິດນີ້\x1bວັນທິດໜ້າ\x14ອາ. ແລ້ວ" + + "\x11ອາ. ນີ້\x11ອາ. ໜ້າ\x1eວັນຈັນແລ້ວ\x1bວັນຈັນນີ້\x1bວັນຈັນໜ້າ\x1dໃນ {0}" + + " ວັນຈັນ\x22{0} ວັນຈັນກ່ອນ\x15ຈັນແລ້ວ\x12ຈັນນີ້\x12ຈັນໜ້າ\x11ຈ. ແລ້ວ\x0eຈ" + + ". ນີ້\x0eຈ. ໜ້າ'ວັນອັງຄານແລ້ວ$ວັນອັງຄານນີ້$ວັນອັງຄານໜ້າ&ໃນ {0} ວັນອັງຄານ" + + "+{0} ວັນອັງຄານກ່ອນ\x1eອັງຄານແລ້ວ\x1bອັງຄານນີ້\x1bອັງຄານໜ້າ\x1eວັນພຸດແລ້ວ" + + "\x1bວັນພຸດນີ້\x1bວັນພຸດໜ້າ\x1dໃນ {0} ວັນພຸດ\x22{0} ວັນພຸດກ່ອນ\x15ພຸດແລ້ວ" + + "\x12ພຸດນີ້\x12ພຸດໜ້າ\x14ພຸ. ແລ້ວ\x11ພຸ. ນີ້\x11ພຸ. ໜ້າ$ວັນພະຫັດແລ້ວ!ວັນພ" + + "ະຫັດນີ້!ວັນພະຫັດໜ້າ#ໃນ {0} ວັນພະຫັດ({0} ວັນພະຫັດກ່ອນ\x1bພະຫັດແລ້ວ\x18ພ" + + "ະຫັດນີ້\x18ພະຫັດໜ້າ\x14ພຫ. ແລ້ວ\x11ພຫ. ນີ້\x11ພຫ. ໜ້າ\x1eວັນສຸກແລ້ວ" + + "\x1bວັນສຸກນີ້\x1bວັນສຸກໜ້າ&ໃນອີກ {0} ວັນສຸກ\x22{0} ວັນສຸກກ່ອນ\x15ສຸກແລ້ວ" + + "\x12ສຸກນີ້\x12ສຸກໜ້າ\x14ສຸ. ແລ້ວ\x11ສຸ. ນີ້\x11ສຸ. ໜ້າ!ວັນເສົາແລ້ວ\x1eວັ" + + "ນເສົານີ້\x1eວັນເສົາໜ້າ ໃນ {0} ວັນເສົາ%{0} ວັນເສົາກ່ອນ\x18ເສົາແລ້ວ\x15ເ" + + "ສົານີ້\x15ເສົາໜ້າ\x11ສ. ແລ້ວ\x0eສ. ນີ້\x0eສ. ໜ້າ1ກ່ອນທ່ຽງ/ຫຼັງທ່ຽງ\x15" + + "ຊົ່ວໂມງ\x1eຊົ່ວໂມງນີ້)ໃນອີກ {0} ຊົ່ວໂມງ%{0} ຊົ່ວໂມງກ່ອນ\x07ຊມ.\x1bໃນອີ" + + "ກ {0} ຊມ.\x18{0} ຊມ. ກ່ອນ\x0cນາທີ\x15ນາທີນີ້\x22{0} ໃນອີກ 0 ນາທີ\x1c{0" + + "} ນາທີກ່ອນ\x07ນທ.\x12ໃນ {0} ນທ.\x18{0} ນທ. ກ່ອນ\x12ວິນາທີ\x12ຕອນນີ້&ໃນອີ" + + "ກ {0} ວິນາທີ\x22{0} ວິນາທີກ່ອນ\x07ວິ.\x12ໃນ {0} ວິ.\x18{0} ວິ. ກ່ອນ" + + "\x15ເຂດເວລາ\x10ເວລາ {0}%ເວລາກາງເວັນ {0}(ເວລາມາດຕະຖານ {0}Hເວ\u200bລາ" + + "\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bອັງ\u200bກິດHເວ\u200bລາ\u200bມາດ\u200bຕະ" + + "\u200bຖານ\u200bໄອ\u200bຣິ\u200bຊ$ເວລາຂອງອາເກຣ<ເວລາມາດຕະຖານຂອງອາເກຣ<ເວລາລ" + + "ະດູຮ້ອນຂອງອາເກຣ.ເວລາ ອັຟການິສຖານ9ເວ\u200bລາ\u200bອາ\u200bຟຣິ\u200bກາ" + + "\u200bກາງQເວ\u200bລາ\u200bອາ\u200bຟຣິ\u200bກາ\u200bຕາ\u200bເວັນ\u200bອອກ" + + "9ເວ\u200bລາ\u200bອາ\u200bຟຣິ\u200bກາ\u200bໃຕ້Qເວ\u200bລາ\u200bອາ\u200bຟຣ" + + "ິ\u200bກາ\u200bຕາ\u200bເວັນ\u200bຕົກrເວ\u200bລາ\u200bມາດ\u200bຕະ\u200b" + + "ຖານ\u200bອາ\u200bຟຣິ\u200bກາ\u200bຕາ\u200bເວັນ\u200bຕົກrເວ\u200bລາ" + + "\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bອາ\u200bຟຣິ\u200bກາ\u200bຕາ\u200bເວັນ" + + "\u200bຕົກ!ເວລາອະແລສກາ9ເວລາມາດຕະຖານອະແລສກາ6ເວລາກາງເວັນອະແລສກາ\x1eເວລາອໍມາ" + + "ຕີ6ເວລາມາດຕະຖານອໍມາຕີ6ເວລາລະດູຮ້ອນອໍມາຕີ3ເວລາຕາມເຂດອາເມຊອນKເວ\u200bລາ" + + "\u200bມາດ\u200bຕະ\u200bຖານອາ\u200bເມ\u200bຊອນKເວ\u200bລາ\u200bລະ\u200bດູ" + + "\u200bຮ້ອນອາ\u200bເມ\u200bຊອນ\x15ເວລາກາງ-ເວລາມາດຕະຖານກາງ*ເວລາກາງເວັນກາງ'" + + "ເວລາຕາເວັນອອກ?ເວລາມາດຕະຖານຕາເວັນອອກ<ເວລາກາງເວັນຕາເວັນອອກ'ເວລາແຖບພູເຂົາ" + + "?ເວລາມາດຕະຖານແຖບພູເຂົາ<ເວລາກາງເວັນແຖບພູເຂົາ!ເວລາແປຊິຟິກ9ເວລາມາດຕະຖານແປຊິ" + + "ຟິກ6ເວລາກາງເວັນແປຊິຟິກ\x1bເວລາເອເພຍ3ເວລາມາດຕະຖານເອເພຍ0ເວລາກາງເວັນອາເພຍ" + + "!ເວລາອັດຕາອູ9ເວລາມາດຕະຖານອັດຕາອູ9ເວລາລະດູຮ້ອນອັດຕາອູ!ເວລາອັດໂຕເບ9ເວລາມາດ" + + "ຕະຖານອັດໂຕເບ9ເວລາລະດູຮ້ອນອັດໂຕເບ-ເວ\u200bລາ\u200bອາ\u200bຣາ\u200bບຽນKເ" + + "ວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອາ\u200bຣາ\u200bບຽນ6ເວລາກາງເວັນອາຣາ" + + "ບຽນ3ເວ\u200bລາ\u200bອາ\u200bເຈ\u200bທິ\u200bນາW\u200bເວ\u200bລາ\u200bມ" + + "າດ\u200bຕະ\u200bຖານອາ\u200bເຈນ\u200bທິ\u200bນາZ\u200bເວ\u200bລາ\u200bລ" + + "ະ\u200bດູ\u200bຮ້ອນ\u200bອາ\u200bເຈນ\u200bທິ\u200bນາQເວ\u200bລາ\u200bເ" + + "ວ\u200bສ\u200bເທິນອາ\u200bເຈນ\u200bທິ\u200bນາoເວ\u200bລາ\u200bມາດ" + + "\u200bຕະ\u200bຖານເວ\u200bສ\u200bເທິນອາ\u200bເຈນ\u200bທິ\u200bນາoເວ\u200b" + + "ລາ\u200bລະ\u200bດູ\u200bຮ້ອນເວ\u200bສ\u200bເທິນອາ\u200bເຈນ\u200bທິ" + + "\u200bນາ!ເວລາອາເມເນຍ9ເວລາມາດຕະຖານອາເມເນຍ9ເວລາລະດູຮ້ອນອາເມເນຍ-ເວລາຂອງອາແລ" + + "ນຕິກEເວລາມາດຕະຖານຂອງອາແລນຕິກBເວລາກາງເວັນຂອງອາແລນຕິກ?ເວ\u200bລາອອ\u200b" + + "ສ\u200bເຕຣ\u200bເລຍ\u200bກາງ`ເວ\u200bລາມາດ\u200bຕະ\u200bຖານອອ\u200bສ" + + "\u200bເຕຣ\u200bເລຍ\u200bກ\u200bາງZເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bອອສ" + + "\u200bເຕຣ\u200bເລຍ\u200bກາງ`ເວ\u200bລາອອສ\u200bເຕຣ\u200bລຽນ\u200bກາງ" + + "\u200bຕາ\u200bເວັນ\u200bຕົກ\x81ເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອອສ" + + "\u200bເຕຣ\u200bລຽນ\u200bກາງ\u200bຕາ\u200bເວັນ\u200bຕົກ~ເວ\u200bລາ\u200bຕ" + + "ອນ\u200bທ່ຽງ\u200bອອສ\u200bເຕຣ\u200bລຽນ\u200bກາງ\u200bຕາ\u200bເວັນ" + + "\u200bຕົກTເວ\u200bລາອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bອອກxເວ" + + "\u200bລາ\u200bມາດຕະຖານ\u200b\u200b\u200bອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ" + + "\u200bເວັນ\u200bອອກrເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bອອສ\u200bເຕຣ" + + "\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bອອກWເວ\u200bລາ\u200bອອສ\u200bເຕຣ\u200bເ" + + "ລຍ\u200bຕາ\u200bເວັນ\u200bຕົກxເວ\u200bລາ\u200bມາ\u200bດ\u200bຕະ\u200bຖ" + + "ານອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bຕົກrເວ\u200bລາ\u200bຕອນ" + + "\u200bທ່ຽງ\u200bອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bຕົກ-ເວລາອັສ" + + "ເຊີໄບຈັນEເວລາມາດຕະຖານອັສເຊີໄບຈັນEເວລາລະດູຮ້ອນອັສເຊີໄບຈັນ0ເວ\u200bລາ" + + "\u200bອາ\u200bໂຊ\u200bເຣ\u200bສNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອາ" + + "\u200bໂຊ\u200bເຣ\u200bສNເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນອາ\u200bໂຊ" + + "\u200bເຣ\u200bສ+ເວລາ ບັງກະລາເທດCເວລາມາດຕະຖານ ບັງກະລາເທດDເວລາ ລະດູຮ້ອນ ບັ" + + "ງກະລາເທດ$ເວ\u200bລາ\u200bພູ\u200bຖານ-ເວ\u200bລາ\u200bໂບ\u200bລິ\u200bເ" + + "ວຍ6ເວລາຕາມເຂດບຣາຊິເລຍ<ເວລາມາດຕາຖານເບຣຊີເລຍ`ເວລາຕາມເຂດລະດູຮ້ອນຕາມເຂດບຣາ" + + "ຊີເລຍK\u200bເວ\u200bລາບຣູ\u200bໄນດາ\u200bຣຸສ\u200bຊາ\u200bລາມ*ເວ\u200b" + + "ລາ\u200bເຄບ\u200bເວີດN\u200bເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200b" + + "ເຄບ\u200bເວີດKເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bເຄບ\u200bເວີດ" + + "\x18ເວລາເຄຊີ*ເວ\u200bລາ\u200bຈາ\u200bໂມ\u200bໂຣ$ເວ\u200bລາ\u200bຊາ\u200b" + + "ທາມEເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຊາ\u200bທາມ?ເວ\u200bລາ" + + "\u200bຕອນ\u200bທ່ຽງ\u200bຊາ\u200bທາມ!ເວ\u200bລາ\u200bຊິ\u200bລີ?ເວ\u200b" + + "ລາ\u200bມາດ\u200bຕະ\u200bຖານຊິ\u200bລີ?ເວ\u200bລາ\u200bລະ\u200bດູ" + + "\u200bຮ້ອນຊິ\u200bລີ\x1bເວ\u200bລາ\u200bຈີນ-ເວລາມາດຕະຖານຈີນ9\u200bເວ" + + "\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bຈີນ0ເວ\u200bລາ\u200bໂຊຍ\u200bບາ\u200bຊັ" + + "ນ<ເວລາມາດຕະຖານໂຊຍບາຊັນBເວລາລະ\u200bດູ\u200bຮ້ອນໂຊຍບາຊັນ<ເວ\u200bລາ" + + "\u200bເກາະ\u200bຄ\u200bຣິສ\u200bມາສ3ເວລາຫມູ່ເກາະໂກໂກສ$ເວລາໂຄລໍາເບຍ9ເວລາມ" + + "າດຕະຖານໂຄລຳເບຍ<ເວລາລະດູຮ້ອນໂຄລໍາເບຍ-ເວລາຫມູ່ເກາະຄຸກEເວລາມາດຕະຖານຫມູ່ເກ" + + "າະຄຸກiເວ\u200bລາ\u200bເຄິ່ງ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bໝູ່\u200bເກ" + + "າະ\u200bຄຸກ\x1bເວລາຄິວບາ<ເວລາມາດຕະຖານຂອງຄິວບາ0ເວລາກາງເວັນຄິວບາ\x1bເວລາ" + + "ເດວິດ*ເວລາດູມອງດູວິລ3ເວລາຕີມໍຕາເວັນອອກ9ເວ\u200bລາ\u200bເກາະ\u200bອີ" + + "\u200bສ\u200bເຕີWເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານເກາະ\u200bອີ\u200bສ" + + "\u200bເຕີWເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນເກາະ\u200bອີ\u200bສ\u200bເ" + + "ຕີ-ເວ\u200bລາ\u200bເອ\u200bກົວ\u200bດໍ0ເວ\u200bລາ\u200bຢູ\u200bໂຣບ" + + "\u200bກາງNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຢູ\u200bໂຣບກາງT" + + "\u200bເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bຢູ\u200bໂຣບ\u200bກາງHເວ" + + "\u200bລາ\u200bຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bອອກlເວ\u200bລາ\u200bມາ" + + "\u200bດ\u200bຕະ\u200bຖານ\u200bຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bອອກfເວ" + + "\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bອອກ" + + "]ເວ\u200bລາ\u200b\u200bຢູ\u200bໂຣ\u200bປຽນ\u200bຕາ\u200bເວັນ\u200bອອກ" + + "\u200bໄກHເວ\u200bລາ\u200bຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bຕົກfເວ\u200b" + + "ລາ\u200bມາດ\u200bຕະ\u200bຖານຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bຕົກfເວ" + + "\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bຕົກ" + + "N\u200bເວ\u200bລາ\u200bໝູ່\u200bເກາະ\u200bຟອ\u200bລ໌ກ\u200bແລນl\u200bເວ" + + "\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານໝູ່\u200bເກາະ\u200bຟອ\u200bລ໌ກ\u200bແລ" + + "ນl\u200bເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນໝູ່\u200bເກາະ\u200bຟອ" + + "\u200bລ໌ກ\u200bແລນ\x18ເວລາຟິຈິ0ເວລາມາດຕະຖານຟິຈິ0ເວລາລະດູຮ້ອນຟິຈິ?ເວ" + + "\u200bລາ\u200bເຟ\u200bຣນ\u200bຊ໌\u200bເກຍ\u200bນາSເວລາຝຣັ່ງຕອນໃຕ້ ແລະ ແອ" + + "ນຕາກຕິກ9ເວ\u200bລາ\u200bກາ\u200bລາ\u200bປາ\u200bກອ\u200bສ\x1eເວລາແກມເບ" + + "ຍ\x1bເວລາຈໍເຈຍ3ເວລາມາດຕະຖານຈໍເຈຍ3ເວລາລະດູຮ້ອນຈໍເຈຍ9ເວລາຫມູ່ເກາະກິລເບີດ" + + "*ເວ\u200bລາກຣີນ\u200bວິ\u200bຊEເວລາຕາເວັນອອກຂອງກຣີນແລນTເວລາມາດຕະຖານຕາເວັ" + + "ນອອກກຣີນແລນTເວລາລະດູຮ້ອນກຣີນແລນຕາເວັນອອກ<ເວລາກຣີນແລນຕາເວັນຕົກTເວລາມາດຕ" + + "ະຖານກຣີນແລນຕາເວັນຕົກQເວລາຕອນທ່ຽງກຣີນແລນຕາເວັນຕົກ\x15ເວລາກວມ'ເວ\u200bລາ" + + "\u200bກູ\u200bລ\u200b໌ຟ!ເວລາກາຍອານາ1ເວລາຮາວາຍ-ເອລູທຽນIເວລາມາດຕະຖານຮາວາຍ-" + + "ເອລູທຽນFເວລາຕອນທ່ຽງຮາວາຍ-ເອລູທຽນ'ເວ\u200bລາ\u200bຮອງ\u200bກົງHເວ\u200b" + + "ລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຮອງ\u200bກົງK\u200bເວ\u200bລາ\u200bລ" + + "ະ\u200bດູ\u200bຮ້ອນ\u200bຮອງ\u200bກົງ$ເວ\u200bລາ\u200bຮອບ\u200bດ໌H" + + "\u200bເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຮອບ\u200bດ໌H\u200bເວ" + + "\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bຮອບ\u200bດ໌\x1fເວລາ ອິນເດຍ?ເວລາຫ" + + "ມະຫາສະຫມຸດອິນເດຍ$ເວລາອິນດູຈີນEເວ\u200bລາ\u200bອິນ\u200bໂດ\u200bເນ" + + "\u200bເຊຍ\u200bກາງ]ເວ\u200bລາ\u200bອິນ\u200bໂດ\u200bເນ\u200bເຊຍ\u200bຕາ" + + "\u200bເວັນ\u200bອອກ]ເວ\u200bລາ\u200bອິນ\u200bໂດ\u200bເນ\u200bເຊຍ\u200bຕາ" + + "\u200bເວັນ\u200bຕົກ$ເວ\u200bລາ\u200bອີ\u200bຣານBເວ\u200bລາ\u200bມາດ" + + "\u200bຕະ\u200bຖານອີ\u200bຣານBເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bອີ\u200b" + + "ຣາ\u200bນ3ເວ\u200bລ\u200bາອີ\u200bຄຸດ\u200bສ\u200bຄ໌Nເວ\u200bລາມາດ" + + "\u200bຕະ\u200bຖານອີ\u200bຄຸດ\u200bສ\u200bຄ໌Nເວ\u200bລາລະ\u200bດູ\u200bຮ້" + + "ອນອີ\u200bຄຸດ\u200bສ\u200bຄ໌3ເວ\u200bລາ\u200bອິ\u200bສ\u200bຣາ\u200bເອ" + + "ວQເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອິ\u200bສ\u200bຣາ\u200bເອວ9ເວລາກ" + + "າງເວັນອິສຣາເອວ*ເວ\u200bລາ\u200bຍີ່\u200bປຸ່ນKເວ\u200bລາ\u200bມາດ\u200b" + + "ຕະ\u200bຖານ\u200bຍີ່\u200bປຸ່ນEເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bຍີ່" + + "\u200bປຸ່ນZເວ\u200bລາ\u200bຄາ\u200bຊັກ\u200bສ\u200bຖານ\u200bຕາ\u200bເວັນ" + + "\u200bອອກZເວ\u200bລາ\u200bຄາ\u200bຊັກ\u200bສ\u200bຖານ\u200bຕາ\u200bເວັນ" + + "\u200bຕົກ!ເວລາເກົາຫຼີKເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bເກົາ" + + "\u200bຫລີEເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bເກົາ\u200bຫລີ\x1bເວລາຄອສແຣ?" + + "ເວ\u200bລາ\u200bຄຣັສ\u200bໂນ\u200bຢາ\u200bສ\u200bຄ໌]ເວ\u200bລາ\u200bມາ" + + "ດ\u200bຕະ\u200bຖານຄຣັສ\u200bໂນ\u200bຢາ\u200bສ\u200bຄ໌]ເວ\u200bລາ\u200b" + + "ລະ\u200bດູ\u200bຮ້ອນຄຣັສ\u200bໂນ\u200bຢາ\u200bສ\u200bຄ໌'ເວລາເຄຍກິສຖານ" + + "\x1bເວລາລັງກາ6ເວ\u200bລາ\u200bໝູ່\u200bເກາະ\u200bລາຍ*ເວ\u200bລາ\u200bລອດ" + + "\u200bເຮົາKເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bລອດ\u200bເຮົາT" + + "\u200bເວ\u200bລ\u200bສາ\u200bຕອນ\u200b\u200bທ່ຽງ\u200bລອດ\u200bເຮົາ" + + "\u200b\x1eເວລາມາເກົາ6ເວລາມາດຕະຖານມາເກົາ6ເວລາລະດູຮ້ອນມາເກົາBເວ\u200bລາ" + + "\u200bເກາະ\u200bແມັກ\u200bຄົວ\u200bຣີ'ເວລາເມັກກາເດນ?ເວລາມາດຕະຖານເມັກກາເດ" + + "ນ?ເວລາລະດູຮ້ອນເມັກກາເດນ-ເວ\u200bລາ\u200bມາ\u200bເລ\u200bເຊຍ\x1eເວລາມັນ" + + "ດີຟ$ເວລາມາເຄີຊັສ?ເວ\u200bລາ\u200bໝູ່\u200bເກາະ\u200bມາ\u200bແຊວ6ເວ" + + "\u200bລາ\u200bເມົາ\u200bຣິ\u200bທຽ\u200bສTເວ\u200bລາ\u200bມາດ\u200bຕະ" + + "\u200bຖານເມົາ\u200bຣິ\u200bທຽ\u200bສZ\u200bເວ\u200bລາ\u200bລະ\u200bດູ" + + "\u200bຮ້ອນ\u200bເມົາ\u200bຣິ\u200bທຽ\u200bສ\x1bເວລາມໍສັນN\u200bເວ\u200bລ" + + "າ\u200bນອດ\u200bເວ\u200bສ\u200bເມັກ\u200bຊິ\u200bໂກl\u200bເວ\u200bລາ" + + "\u200bມາດ\u200bຕະ\u200bຖານນອດ\u200bເວ\u200bສ\u200bເມັກ\u200bຊິ\u200bໂກNເ" + + "ວລາກາງເວັນເມັກຊິກັນນອດເວສ<ເວລາແປຊິຟິກເມັກຊິກັນTເວລາມາດຕະຖານແປຊິຟິກເມັກ" + + "ຊິກັນQເວລາກາງເວັນແປຊິຟິກເມັກຊິກັນ+ເວລາ ອູລານບາເຕີCເວລາມາດຕະຖານ ອູລານບາ" + + "ເຕີBເວລາລະດູຮ້ອນອູລານບາເຕີ'ເວ\u200bລາ\u200bມອ\u200bສ\u200bໂຄEເວ\u200bລ" + + "າ\u200bມາດ\u200bຕະ\u200bຖານມອ\u200bສ\u200bໂຄEເວ\u200bລາ\u200bລະ\u200bດ" + + "ູ\u200bຮ້ອນມອ\u200bສ\u200bໂຄ\x1bເວລາມຽນມາ*ເວ\u200bລາ\u200bນາ\u200bອູ" + + "\u200bຣຸ'\u200bເວ\u200bລາ\u200bເນ\u200bປານ0ເວລານິວແຄລິໂດເນຍHເວລາມາດຕະຖານ" + + "ນິວແຄລິໂດເນຍHເວລາລະດູຮ້ອນນິວແຄລິໂດເນຍ0ເວ\u200bລາ\u200bນິວ\u200bຊີ" + + "\u200bແລນNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານນິວ\u200bຊີ\u200bແລນKເວ" + + "\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bນິວ\u200bຊີ\u200bແລນ3ເວ\u200bລາ\u200bນິ" + + "ວ\u200bຟາວ\u200bແລນTເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bນິວ" + + "\u200bຟາວ\u200bແລນ<ເວລາກາງເວັນນິວຟາວແລນ\x1eເວລານິອູເອ<ເວ\u200bລາ\u200bເກ" + + "າະ\u200bນໍ\u200bຟອ\u200bລ໌ກ<ເວລາເຟນັນໂດເດໂນຮອນຮາTເວລາມາດຕະຖານເຟນັນໂດເດ" + + "ໂນຮອນຮາTເວລາລະດູຮ້ອນເຟນັນໂດເດໂນຮອນຮາHເວລາຫມູ່ເກາະມາເຣຍນາເຫນືອBເວ\u200b" + + "ລາ\u200bໂນ\u200bໂບ\u200bຊິ\u200bບິ\u200bສ\u200bຄ໌`ເວ\u200bລາ\u200bມາດ" + + "\u200bຕະ\u200bຖານໂນ\u200bໂບ\u200bຊິ\u200bບິ\u200bສ\u200bຄ໌`ເວ\u200bລາ" + + "\u200bລະ\u200bດູ\u200bຮ້ອນໂນ\u200bໂບ\u200bຊິ\u200bບິ\u200bສ\u200bຄ໌*" + + "\u200bເວ\u200bລາອອມ\u200bສ\u200bຄ໌Hເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອ" + + "ອມ\u200bສ\u200bຄ໌Hເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນອອມ\u200bສ\u200b" + + "ຄ໌-ເວ\u200bລາ\u200bປາ\u200bກີສຖານNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ" + + "\u200bປາ\u200bກີສຖານTເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bປາ\u200bກ" + + "ີ\u200bສ\u200bຖານ\x1eເວລາປາເລົາ'ເວລາປາປົວກິນີ-ເວ\u200bລາ\u200bປາ\u200b" + + "ຣາ\u200bກວຍNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bປາ\u200bຣາ\u200b" + + "ກວຍNເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bປາ\u200bຣາ\u200bກວຍ!ເວ" + + "\u200bລາ\u200bເປ\u200bຣູEເວ\u200bລາ\u200b\u200bມາ\u200bດ\u200bຕະ\u200bຖາ" + + "ນເປ\u200bຣູBເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bເປ\u200bຣູ3" + + "\u200bເວ\u200bລາ\u200bຟິ\u200bລິບ\u200bປິນQເວ\u200bລາ\u200bມາດ\u200bຕະ" + + "\u200bຖານ\u200bຟິ\u200bລິບ\u200bປິນQເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ" + + "\u200bຟິ\u200bລິບ\u200bປິນ3ເວລາຫມູ່ເກາະຟີນິກX\u200bເວ\u200bລາເຊນ\u200bປີ" + + "\u200bແອ ແລະ\u200bມິ\u200bກົວ\u200bລອນv\u200bເວ\u200bລາມາດ\u200bຕະ\u200b" + + "ຖານເຊນ\u200bປີ\u200bແອ ແລະ\u200bມິ\u200bກົວ\u200bລອນp\u200bເວ\u200bລາຕ" + + "ອນ\u200bທ່ຽງເຊນ\u200bປີ\u200bແອ ແລະ\u200bມິ\u200bກົວ\u200bລອນ$ເວລາພິດແ" + + "ຄຣ໌ນ\x1bເວລາໂປເນບ\x1eເວລາປຽງຢາງ!ເວລາຄີວລໍດາ9ເວລາມາດຕະຖານຄີວລໍດາ9ເວລາລະ" + + "ດູຮ້ອນຄີວລໍດາ6ເວ\u200bລາ\u200bເຣ\u200bອູ\u200bນິ\u200bຢົງ\x1fເວລາ ໂຣທີ" + + "ຕາ-ເວ\u200bລາ\u200bຊາ\u200bຮາ\u200bລິນKເວ\u200bລາ\u200bມາດ\u200bຕະ" + + "\u200bຖານຊາ\u200bຮາ\u200bລິນKເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນຊາ" + + "\u200bຮາ\u200bລິນ\x1bເວລາຊາມົວ3ເວລາມາດຕະຖານຊາມົວ3ເວລາລະດູຮ້ອນຊາມົວ0ເວ" + + "\u200bລາ\u200bເຊ\u200bເຊ\u200bລ\u200bສ໌-ເວ\u200bລາ\u200bສິງ\u200bກະ" + + "\u200bໂປ9ເວລາຫມູ່ເກາະໂຊໂລມອນ$ເວລາຈໍເຈຍໃຕ້-ເວ\u200bລາ\u200bຊຸ\u200bຣິ" + + "\u200bນາມ\x19ເວລາ ໂຊວາ\x1eເວລາທາຮິຕິ!ເວ\u200bລາ\u200bໄທ\u200bເປBເວ\u200b" + + "ລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bໄທ\u200bເປ?ເວ\u200bລາ\u200bຕອນ\u200b" + + "ທ່\u200bຽງ\u200bໄທ\u200bເປ*ເວລາທາຈິກິສຖານ$ເວລາໂຕເກເລົາ\x1bເວລາຕອງກາ3ເວ" + + "ລາມາດຕະຖານຕອງກາ3ເວລາລະດູຮ້ອນຕອງກາ\x15ເວລາຊຸກ-ເວລາຕວກເມນິສຖານEເວລາມາດຕະ" + + "ຖານຕວກເມນິສຖານEເວລາລະດູຮ້ອນຕວກເມນິສຖານ\x1eເວລາຕູວາລູ0\u200bເວ\u200bລາ" + + "\u200bອູ\u200bຣູ\u200bກວຍNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bອູ" + + "\u200bຣູ\u200bກວຍNເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bອູ\u200bຣູ" + + "\u200bກວຍ3ເວລາອຸສເບກິດສະຖານKເວລາມາດຕະຖານອຸສເບກິດສະຖານKເວລາລະດູຮ້ອນອຸສເບກ" + + "ິດສະຖານ$ເວລາວານູອາຕູ<ເວລາມາດຕະຖານວານູອາຕູ<ເວລາລະດູຮ້ອນວານູອາຕູ<ເວ" + + "\u200bລາ\u200bເວ\u200bເນ\u200bຊູ\u200bເອ\u200bລາ*ເວລາລາດີໂວສຕົກBເວລາມາດຕ" + + "ະຖານລາດີໂວສຕົກBເວລາລະດູຮ້ອນລາດີໂວສຕົກ$ເວລາໂວໂກກຣາດ<ເວລາມາດຕະຖານໂວໂກກຣາ" + + "ດ<ເວລາລະດູຮ້ອນໂວໂກກຣາດ\x1fເວລາ ວອສໂຕກ!ເວລາເກາະເວກ;ເວລາວາລລິສ ແລະ ຟູຕູນ" + + "າ\x1eເວລາຢາກູດສ6ເວລາມາດຕະຖານຢາກູດສ6ເວລາລະດູຮ້ອນຢາກູດສ3ເວລາເຢກາເຕລິນເບີ" + + "ກKເວລາມາດຕະຖານເຢກາເຕລິນເບີກKເວລາລະດູຮ້ອນເຢກາເຕລິນເບີກ" + +var bucket67 string = "" + // Size: 13208 bytes + "\x0cجانڤیە\x0cفئڤریە\x08مارس\x0aآڤریل\x06مئی\x0aجوٙأن\x0aجوٙلا\x0aآگوست" + + "\x0eسئپتامر\x0eئوکتوڤر\x0cنوڤامر\x0cدئسامر\x13چارأک أڤأل\x02Q2\x02Q3\x02" + + "Q4\x15چارأک دویوم\x15چارأک سئیوم\x15چارأک چاروم\x08سأرۉ\x0aچارأک\x04ما" + + "\x0aھأفتە\x08روٙز\x0cدیروٙز\x0aأمروٙ\x0cشوٙصوٙ\x13روٙز ھأفتە\x0fگات روٙز" + + "\x08ساأت\x0aدئیقە\x0aثانیە\x0cراساگە\x19گاٛت مینجاٛیی0گاٛت مینجاٛیی ئستا" + + "ٛنداٛرد(روٙشنایی نئهادار روٙز\x12pavasario pradžia\x0elietaus vanduo" + + "\x14vabzdžių pabudimas\x15pavasario lygiadienis\x07šviesu\x0dlietus java" + + "ms\x10vasaros pradžia\x07liūtys\x13varpų formavimasis\x15vasaros saulėgr" + + "įža\x12nedidelis karštis\x10didelis karštis\x0frudens pradžia\x12karšči" + + "ų pabaiga\x0ašerkšnas\x12rudens lygiadienis\x0bšalta rasa\x07šalnos\x10" + + "žiemos pradžia\x12nesmarkus snigimas\x10smarkus snigimas\x15žiemos saul" + + "ėgrįža\x11nedidelis šaltis\x0fdidelis šaltis\x08Žiurkė\x06Jautis\x06Tig" + + "ras\x08Triušis\x08Drakonas\x07Gyvatė\x06Arklys\x05Ožka\x0cBeždžionė\x06G" + + "aidys\x04Šuo\x07Kiaulė\x0eU MMMM d, EEEE\x10y MMMM d G, EEEE\x0ay MMMM d" + + " G\x09y MMM d G\x09y-MM-dd G\x05saus.\x04vas.\x04kov.\x04bal.\x04geg." + + "\x06birž.\x05liep.\x05rugp.\x05rugs.\x05spal.\x06lapkr.\x06gruod.\x06sau" + + "sio\x07vasario\x04kovo\x0abalandžio\x09gegužės\x09birželio\x06liepos\x0b" + + "rugpjūčio\x08rugsėjo\x06spalio\x0alapkričio\x09gruodžio\x06sausis\x07vas" + + "aris\x05kovas\x08balandis\x08gegužė\x09birželis\x05liepa\x0arugpjūtis" + + "\x09rugsėjis\x06spalis\x09lapkritis\x07gruodis\x02sk\x02pr\x02an\x02tr" + + "\x02kt\x02pn\x03št\x02Sk\x02Pr\x02An\x02Tr\x02Kt\x02Pn\x03Št\x0bsekmadie" + + "nis\x0bpirmadienis\x0bantradienis\x0dtrečiadienis\x0eketvirtadienis\x0cp" + + "enktadienis\x0dšeštadienis\x04I k.\x05II k.\x06III k.\x05IV k.\x0bI ketv" + + "irtis\x0cII ketvirtis\x0dIII ketvirtis\x0cIV ketvirtis\x07I ketv.\x08II " + + "ketv.\x09III ketv.\x08IV ketv.\x0bvidurnaktis\x0apriešpiet\x07perpiet" + + "\x06popiet\x05rytas\x08popietė\x07vakaras\x06naktis\x06pr. p.\x0bvidurdi" + + "enis\x05diena\x0eprieš Kristų\x12prieš mūsų erą\x0bpo Kristaus\x0cmūsų e" + + "roje\x09pr. m. e.\x04prme\x04pome\x18y 'm'. MMMM d 'd'., EEEE\x12y 'm'. " + + "MMMM d 'd'.\x0dPrieš R.O.C.\x06R.O.C.\x05metai\x13praėjusiais metais\x0d" + + "šiais metais\x0dkitais metais\x0cpo {0} metų\x10prieš {0} metus\x10prie" + + "š {0} metų\x09po {0} m.\x0dprieš {0} m.\x09ketvirtis\x13praėjęs ketvirt" + + "is\x0ešis ketvirtis\x0fkitas ketvirtis\x11po {0} ketvirčio\x12po {0} ket" + + "virčių\x14prieš {0} ketvirtį\x16prieš {0} ketvirčius\x15prieš {0} ketvir" + + "čio\x16prieš {0} ketvirčių\x05ketv.\x0cpo {0} ketv.\x10prieš {0} ketv." + + "\x06mėnuo\x13praėjusį mėnesį\x0dšį mėnesį\x0ekitą mėnesį\x0fpo {0} mėnes" + + "io\x10po {0} mėnesių\x13prieš {0} mėnesį\x14prieš {0} mėnesius\x13prieš " + + "{0} mėnesio\x14prieš {0} mėnesių\x05mėn.\x0cpo {0} mėn.\x10prieš {0} mėn" + + ".\x08savaitė\x14praėjusią savaitę\x0ešią savaitę\x0ekitą savaitę\x10po {" + + "0} savaitės\x11po {0} savaičių\x13prieš {0} savaitę\x13prieš {0} savaite" + + "s\x14prieš {0} savaitės\x15prieš {0} savaičių\x0c{0} savaitę\x04sav.\x0b" + + "po {0} sav.\x0fprieš {0} sav.\x08užvakar\x05vakar\x09šiandien\x05rytoj" + + "\x05poryt\x0dpo {0} dienos\x0dpo {0} dienų\x11prieš {0} dieną\x11prieš {" + + "0} dienas\x11prieš {0} dienos\x11prieš {0} dienų\x09po {0} d.\x0dprieš {" + + "0} d.\x0fsavaitės diena\x16praėjusį sekmadienį\x10šį sekmadienį\x11kitą " + + "sekmadienį\x12po {0} sekmadienio\x13po {0} sekmadienių\x16prieš {0} sekm" + + "adienį\x17prieš {0} sekmadienius\x16prieš {0} sekmadienio\x17prieš {0} s" + + "ekmadienių\x10praėjusį sekm.\x0ašį sekm.\x0bkitą sekm.\x16praėjusį pirma" + + "dienį\x10šį pirmadienį\x11kitą pirmadienį\x12po {0} pirmadienio\x13po {0" + + "} pirmadienių\x16prieš {0} pirmadienį\x17prieš {0} pirmadienius\x16prieš" + + " {0} pirmadienio\x17prieš {0} pirmadienių\x10praėjusį pirm.\x0ašį pirm." + + "\x0bkitą pirm.\x16praėjusį antradienį\x10šį antradienį\x11kitą antradien" + + "į\x12po {0} antradienio\x13po {0} antradienių\x16prieš {0} antradienį" + + "\x17prieš {0} antradienius\x16prieš {0} antradienio\x17prieš {0} antradi" + + "enių\x10praėjusį antr.\x0ašį antr.\x0bkitą antr.\x18praėjusį trečiadienį" + + "\x12šį trečiadienį\x13kitą trečiadienį\x14po {0} trečiadienio\x15po {0} " + + "trečiadienių\x18prieš {0} trečiadienį\x19prieš {0} trečiadienius\x18prie" + + "š {0} trečiadienio\x19prieš {0} trečiadienių\x11praėjusį treč.\x0bšį tr" + + "eč.\x0ckitą treč.\x19praėjusį ketvirtadienį\x13šį ketvirtadienį\x14kitą " + + "ketvirtadienį\x15po {0} ketvirtadienio\x16po {0} ketvirtadienių\x19prieš" + + " {0} ketvirtadienį\x1aprieš {0} ketvirtadienius\x19prieš {0} ketvirtadie" + + "nio\x1aprieš {0} ketvirtadienių\x10praėjusį ketv.\x0ašį ketv.\x0bkitą ke" + + "tv.\x17praėjusį penktadienį\x11šį penktadienį\x12kitą penktadienį\x13po " + + "{0} penktadienio\x14po {0} penktadienių\x17prieš {0} penktadienį\x18prie" + + "š {0} penktadienius\x17prieš {0} penktadienio\x18prieš {0} penktadienių" + + "\x11praėjusį penkt.\x0bšį penkt.\x0ckitą penkt.\x18praėjusį šeštadienį" + + "\x12šį šeštadienį\x13kitą šeštadienį\x14po {0} šeštadienio\x15po {0} šeš" + + "tadienių\x18prieš {0} šeštadienį\x19prieš {0} šeštadienius\x18prieš {0} " + + "šeštadienio\x19prieš {0} šeštadienių\x12praėjusį šešt.\x0cšį šešt.\x0dk" + + "itą šešt.\x16iki pietų / po pietų\x07valanda\x0ešią valandą\x0fpo {0} va" + + "landos\x0fpo {0} valandų\x13prieš {0} valandą\x13prieš {0} valandas\x13p" + + "rieš {0} valandos\x13prieš {0} valandų\x04val.\x0bpo {0} val.\x0fprieš {" + + "0} val.\x07minutė\x0dšią minutę\x0fpo {0} minutės\x10po {0} minučių\x12p" + + "rieš {0} minutę\x12prieš {0} minutes\x13prieš {0} minutės\x14prieš {0} m" + + "inučių\x0bpo {0} min.\x0fprieš {0} min.\x08sekundė\x05dabar\x10po {0} se" + + "kundės\x12po {0} sekundžių\x13prieš {0} sekundę\x13prieš {0} sekundes" + + "\x14prieš {0} sekundės\x16prieš {0} sekundžių\x0bpo {0} sek.\x0fprieš {0" + + "} sek.\x08po {0} s\x0cprieš {0} s\x0claiko juosta\x0bLaikas: {0}\x13Vasa" + + "ros laikas: {0}\x13Žiemos laikas: {0}\x1eSuderintasis pasaulinis laikas" + + "\x19Britanijos vasaros laikas\x16Airijos vasaros laikas\x0aAko laikas" + + "\x17Ako standartinis laikas\x12Ako vasaros laikas\x12Afganistano laikas" + + "\x19Centrinės Afrikos laikas\x14Rytų Afrikos laikas\x15Pietų Afrikos lai" + + "kas\x16Vakarų Afrikos laikas\x1eVakarų Afrikos žiemos laikas\x1eVakarų A" + + "frikos vasaros laikas\x0fAliaskos laikas\x17Aliaskos žiemos laikas\x17Al" + + "iaskos vasaros laikas\x0eAlmatos laikas\x16Almatos žiemos laikas\x16Alma" + + "tos vasaros laikas\x10Amazonės laikas\x18Amazonės žiemos laikas\x18Amazo" + + "nės vasaros laikas Šiaurės Amerikos centro laikas(Šiaurės Amerikos centr" + + "o žiemos laikas(Šiaurės Amerikos centro vasaros laikas\x1fŠiaurės Amerik" + + "os rytų laikas'Šiaurės Amerikos rytų žiemos laikas'Šiaurės Amerikos rytų" + + " vasaros laikas Šiaurės Amerikos kalnų laikas(Šiaurės Amerikos kalnų žie" + + "mos laikas(Šiaurės Amerikos kalnų vasaros laikas+Šiaurės Amerikos Ramioj" + + "o vandenyno laikas3Šiaurės Amerikos Ramiojo vandenyno žiemos laikas3Šiau" + + "rės Amerikos Ramiojo vandenyno vasaros laikas\x10Anadyrės laikas\x18Anad" + + "yrės žiemos laikas\x18Anadyrės vasaros laikas\x0dApijos laikas\x15Apijos" + + " žiemos laikas\x15Apijos vasaros laikas\x0cAktau laikas\x14Aktau žiemos " + + "laikas\x14Aktau vasaros laikas\x0fAktobės laikas\x17Aktobės žiemos laika" + + "s\x17Aktobės vasaros laikas\x0fArabijos laikas\x17Arabijos žiemos laikas" + + "\x17Arabijos vasaros laikas\x11Argentinos laikas\x19Argentinos žiemos la" + + "ikas\x19Argentinos vasaros laikas\x19Vakarų Argentinos laikas!Vakarų Arg" + + "entinos žiemos laikas!Vakarų Argentinos vasaros laikas\x11Armėnijos laik" + + "as\x19Armėnijos žiemos laikas\x19Armėnijos vasaros laikas\x0eAtlanto lai" + + "kas\x16Atlanto žiemos laikas\x16Atlanto vasaros laikas\x1dCentrinės Aust" + + "ralijos laikas%Centrinės Australijos žiemos laikas%Centrinės Australijos" + + " vasaros laikas%Centrinės vakarų Australijos laikas-Centrinės vakarų Aus" + + "tralijos žiemos laikas-Centrinės vakarų Australijos vasaros laikas\x18Ry" + + "tų Australijos laikas Rytų Australijos žiemos laikas Rytų Australijos va" + + "saros laikas\x1aVakarų Australijos laikas\x22Vakarų Australijos žiemos l" + + "aikas\x22Vakarų Australijos vasaros laikas\x14Azerbaidžano laikas\x1cAze" + + "rbaidžano žiemos laikas\x1cAzerbaidžano vasaros laikas\x13Azorų Salų lai" + + "kas\x1bAzorų Salų žiemos laikas\x1bAzorų Salų vasaros laikas\x12Banglade" + + "šo laikas\x1aBangladešo žiemos laikas\x1aBangladešo vasaros laikas\x0dB" + + "utano laikas\x10Bolivijos laikas\x11Brazilijos laikas\x19Brazilijos žiem" + + "os laikas\x19Brazilijos vasaros laikas\x1cBrunėjaus Darusalamo laikas" + + "\x18Žaliojo Kyšulio laikas Žaliojo Kyšulio žiemos laikas Žaliojo Kyšulio" + + " vasaros laikas\x0dKeisio laikas\x0eČamoro laikas\x0eČatamo laikas\x16Ča" + + "tamo žiemos laikas\x16Čatamo vasaros laikas\x0eČilės laikas\x16Čilės žie" + + "mos laikas\x16Čilės vasaros laikas\x0eKinijos laikas\x16Kinijos žiemos l" + + "aikas\x16Kinijos vasaros laikas\x12Čoibalsano laikas\x1aČoibalsano žiemo" + + "s laikas\x1aČoibalsano vasaros laikas\x15Kalėdų Salos laikas\x14Kokosų S" + + "alų laikas\x11Kolumbijos laikas\x19Kolumbijos žiemos laikas\x19Kolumbijo" + + "s vasaros laikas\x11Kuko Salų laikas\x19Kuko Salų žiemos laikas Kuko Sal" + + "ų pusės vasaros laikas\x0cKubos laikas\x14Kubos žiemos laikas\x14Kubos " + + "vasaros laikas\x0eDeiviso laikas\x1aDiumono d’Urvilio laikas\x13Rytų Tim" + + "oro laikas\x14Velykų Salos laikas\x1cVelykų salos žiemos laikas\x1cVelyk" + + "ų Salos vasaros laikas\x0fEkvadoro laikas\x16Vidurio Europos laikas\x1e" + + "Vidurio Europos žiemos laikas\x1eVidurio Europos vasaros laikas\x14Rytų " + + "Europos laikas\x1cRytų Europos žiemos laikas\x1cRytų Europos vasaros lai" + + "kas\x1fTolimųjų rytų Europos laikas\x16Vakarų Europos laikas\x1eVakarų E" + + "uropos žiemos laikas\x1eVakarų Europos vasaros laikas\x16Folklando Salų " + + "laikas\x1fFolklandų Salų žiemos laikas\x1eFolklando Salų vasaros laikas" + + "\x0eFidžio laikas\x16Fidžio žiemos laikas\x16Fidžio vasaros laikas\x1bPr" + + "ancūzijos Gvianos laikas)Pietų Prancūzijos ir antarktinis laikas\x10Gala" + + "pagų laikas\x0eGambyro laikas\x0fGruzijos laikas\x17Gruzijos žiemos laik" + + "as\x17Gruzijos vasaros laikas\x15Gilberto Salų laikas\x10Grinvičo laikas" + + "\x19Grenlandijos rytų laikas!Grenlandijos rytų žiemos laikas!Grenlandijo" + + "s rytų vasaros laikas\x1bGrenlandijos vakarų laikas#Grenlandijos vakarų " + + "žiemos laikas#Grenlandijos vakarų vasaros laikas\x0cGuamo laikas\x18Per" + + "sijos įlankos laikas\x0eGajanos laikas\x16Havajų-Aleutų laikas Havajų–Al" + + "eutų žiemos laikas Havajų–Aleutų vasaros laikas\x0fHonkongo laikas\x17Ho" + + "nkongo žiemos laikas\x17Honkongo vasaros laikas\x0cHovdo laikas\x14Hovdo" + + " žiemos laikas\x14Hovdo vasaros laikas\x0eIndijos laikas\x18Indijos vand" + + "enyno laikas\x12Indokinijos laikas\x1dCentrinės Indonezijos laikas\x18Ry" + + "tų Indonezijos laikas\x1aVakarų Indonezijos laikas\x0cIrano laikas\x14Ir" + + "ano žiemos laikas\x14Irano vasaros laikas\x0fIrkutsko laikas\x17Irkutsko" + + " žiemos laikas\x17Irkutsko vasaros laikas\x0fIzraelio laikas\x17Izraelio" + + " žiemos laikas\x17Izraelio vasaros laikas\x10Japonijos laikas\x18Japonij" + + "os žiemos laikas\x18Japonijos vasaros laikas!Kamčiatkos Petropavlovsko l" + + "aikas)Kamčiatkos Petropavlovsko žiemos laikas)Kamčiatkos Petropavlovsko " + + "vasaros laikas\x18Rytų Kazachstano laikas\x1aVakarų Kazachstano laikas" + + "\x0fKorėjos laikas\x17Korėjos žiemos laikas\x17Korėjos vasaros laikas" + + "\x0fKosrajė laikas\x13Krasnojarsko laikas\x1bKrasnojarsko žiemos laikas" + + "\x1bKrasnojarsko vasaros laikas\x11Kirgistano laikas\x0dLankos laikas" + + "\x12Laino Salų laikas\x10Lordo Hau laikas\x18Lordo Hau žiemos laikas\x18" + + "Lordo Hau vasaros laikas\x0cMakau laikas\x14Makau žiemos laikas\x14Makau" + + " vasaros laikas\x15Makvorio Salos laikas\x0fMagadano laikas\x17Magadano " + + "žiemos laikas\x17Magadano vasaros laikas\x11Malaizijos laikas\x0fMaldyv" + + "ų laikas\x14Markizo Salų laikas\x15Maršalo Salų laikas\x12Mauricijaus l" + + "aikas\x1aMauricijaus žiemos laikas\x1aMauricijaus vasaros laikas\x0dMoso" + + "no laikas!Šiaurės Vakarų Meksikos laikas)Šiaurės Vakarų Meksikos žiemos " + + "laikas)Šiaurės Vakarų Meksikos vasaros laikas!Meksikos Ramiojo vandenyno" + + " laikas)Meksikos Ramiojo vandenyno žiemos laikas)Meksikos Ramiojo vanden" + + "yno vasaros laikas\x12Ulan Batoro laikas\x1aUlan Batoro žiemos laikas" + + "\x1aUlan Batoro vasaros laikas\x0eMaskvos laikas\x16Maskvos žiemos laika" + + "s\x16Maskvos vasaros laikas\x0fMianmaro laikas\x0cNauru laikas\x0dNepalo" + + " laikas\x1cNaujosios Kaledonijos laikas$Naujosios Kaledonijos žiemos lai" + + "kas$Naujosios Kaledonijos vasaros laikas\x1bNaujosios Zelandijos laikas#" + + "Naujosios Zelandijos žiemos laikas#Naujosios Zelandijos vasaros laikas" + + "\x14Niufaundlendo laikas\x1cNiufaundlendo žiemos laikas\x1cNiufaundlendo" + + " vasaros laikas\x0dNiujė laikas\x15Norfolko Salų laikas\x1bFernando de N" + + "oronjos laikas#Fernando de Noronjos žiemos laikas#Fernando de Noronjos v" + + "asaros laikas\x1fŠiaurės Marianos Salų laikas\x13Novosibirsko laikas\x1b" + + "Novosibirsko žiemos laikas\x1bNovosibirsko vasaros laikas\x0cOmsko laika" + + "s\x14Omsko žiemos laikas\x14Omsko vasaros laikas\x10Pakistano laikas\x18" + + "Pakistano žiemos laikas\x18Pakistano vasaros laikas\x0cPalau laikas Papu" + + "a Naujosios Gvinėjos laikas\x12Paragvajaus laikas\x1aParagvajaus žiemos " + + "laikas\x1aParagvajaus vasaros laikas\x0bPeru laikas\x13Peru žiemos laika" + + "s\x13Peru vasaros laikas\x10Filipinų laikas\x18Filipinų žiemos laikas" + + "\x18Filipinų vasaros laikas\x14Fenikso Salų laikas\x1cSen Pjero ir Mikel" + + "ono laikas$Sen Pjero ir Mikelono žiemos laikas$Sen Pjero ir Mikelono vas" + + "aros laikas\x0fPitkerno laikas\x0fPonapės laikas\x10Pchenjano laikas\x11" + + "Kyzylordos laikas\x19Kyzylordos žiemos laikas\x19Kyzylordos vasaros laik" + + "as\x0fReunjono laikas\x0eRoteros laikas\x10Sachalino laikas\x18Sachalino" + + " žiemos laikas\x18Sachalino vasaros laikas\x0eSamaros laikas\x16Samaros " + + "žiemos laikas\x16Samaros vasaros laikas\x0cSamoa laikas\x14Samoa žiemos" + + " laikas\x14Samoa vasaros laikas\x11Seišelių laikas\x11Singapūro laikas" + + "\x16Saliamono Salų laikas\x1aPietų Džordžijos laikas\x0fSurinamo laikas" + + "\x0dSiovos laikas\x0fTahičio laikas\x11Taipėjaus laikas\x19Taipėjaus žie" + + "mos laikas\x19Taipėjaus vasaros laikas\x14Tadžikistano laikas\x0eTokelau" + + " laikas\x0dTongos laikas\x15Tongos žiemos laikas\x15Tongos vasaros laika" + + "s\x0cČuko laikas\x15Turkmėnistano laikas\x1dTurkmėnistano žiemos laikas" + + "\x1dTurkmėnistano vasaros laikas\x0dTuvalu laikas\x11Urugvajaus laikas" + + "\x19Urugvajaus žiemos laikas\x19Urugvajaus vasaros laikas\x12Uzbekistano" + + " laikas\x1aUzbekistano žiemos laikas\x1aUzbekistano vasaros laikas\x0eVa" + + "nuatu laikas\x16Vanuatu žiemos laikas\x16Vanuatu vasaros laikas\x11Venes" + + "uelos laikas\x13Vladivostoko laikas\x1bVladivostoko žiemos laikas\x1bVla" + + "divostoko vasaros laikas\x11Volgogrado laikas\x19Volgogrado žiemos laika" + + "s\x19Volgogrado vasaros laikas\x0eVostoko laikas\x12Veiko Salos laikas" + + "\x19Voliso ir Futūnos laikas\x0fJakutsko laikas\x17Jakutsko žiemos laika" + + "s\x17Jakutsko vasaros laikas\x15Jekaterinburgo laikas\x1dJekaterinburgo " + + "žiemos laikas\x1dJekaterinburgo vasaros laikas" + +var bucket68 string = "" + // Size: 12623 bytes + "\x03Cio\x03Lui\x03Lus\x03Muu\x03Lum\x03Luf\x03Kab\x04Lush\x03Lut\x03Lun" + + "\x03Kas\x03Cis\x06Ciongo\x07Lùishi\x07Lusòlo\x07Mùuyà\x0cLumùngùlù\x07Lu" + + "fuimi\x0fKabàlàshìpù\x0aLùshìkà\x09Lutongolo\x08Lungùdi\x0cKaswèkèsè\x06" + + "Ciswà\x03Nko\x03Ndy\x03Ndg\x03Njw\x03Ngv\x03Lub\x07Lumingu\x06Nkodya\x08" + + "Ndàayà\x07Ndangù\x06Njòwa\x07Ngòvya\x07Lubingu\x02M1\x02M2\x02M3\x02M4" + + "\x07Mueji 1\x07Mueji 2\x07Mueji 3\x07Mueji 4\x05Dinda\x06Dilolo\x14Kumpa" + + "la kwa Yezu Kli\x14Kunyima kwa Yezu Kli\x09kmp. Y.K.\x0akny. Y. K.\x09Ts" + + "hipungu\x08Tshidimu\x06Ngondo\x06Dituku\x08Makelela\x04Lelu\x06Malaba" + + "\x12Dituku dia lubingu\x11Mutantshi wa diba\x04Diba\x07Kasunsu\x0bKasuns" + + "ukusu\x06Nzeepu\x03DAC\x03DAR\x03DAD\x03DAN\x03DAH\x03DAU\x03DAO\x03DAB" + + "\x03DOC\x03DAP\x03DGI\x03DAG\x0eDwe mar Achiel\x0dDwe mar Ariyo\x0cDwe m" + + "ar Adek\x11Dwe mar Ang’wen\x0dDwe mar Abich\x0fDwe mar Auchiel\x0fDwe ma" + + "r Abiriyo\x0dDwe mar Aboro\x0eDwe mar Ochiko\x0cDwe mar Apar\x11Dwe mar " + + "gi achiel\x15Dwe mar Apar gi ariyo\x03JMP\x03WUT\x03TAR\x03TAD\x03TAN" + + "\x03TAB\x03NGS\x07Jumapil\x09Wuok Tich\x0aTich Ariyo\x09Tich Adek\x0eTic" + + "h Ang’wen\x0aTich Abich\x05Ngeso\x04NMN1\x04NMN2\x04NMN3\x04NMN4\x0dnus " + + "mar nus 1\x0dnus mar nus 2\x0dnus mar nus 3\x0dnus mar nus 4\x02OD\x02OT" + + "\x12Kapok Kristo obiro\x11Ka Kristo osebiro\x05ndalo\x04higa\x03dwe\x09c" + + "hieng’\x05nyoro\x07kawuono\x04kiny\x0endalo mar juma\x15odieochieng’/oti" + + "eno\x03saa\x06dakika\x0fnyiriri mar saa\x07kar saa\x02J2\x02J3\x02J4\x02" + + "J5\x02Al\x02Ij\x02J1\x08Jumapiri\x08Jumatatu\x07Jumanne\x08Jumatano\x0eM" + + "urwa wa Kanne\x0fMurwa wa Katano\x08Jumamosi\x0cRobo ya Kala\x0eRobo ya " + + "Kaviri\x0eRobo ya Kavaga\x0dRobo ya Kanne\x13Imberi ya Kuuza Kwa\x13Muhi" + + "ga Kuvita Kuuza\x07Rimenya\x06Muhiga\x06Risiza\x06Ridiku\x07Mgorova\x04L" + + "ero\x06Mgamba\x07Mrisiza\x0bVuche/Vwira\x04Isaa\x07Idagika\x07Havundu" + + "\x19EEEE, y. 'gada' d. MMMM G\x13y. 'gada' d. MMMM G\x12y. 'gada' d. MMM" + + " G\x10{1} 'plkst'. {0}\x09janvāris\x0afebruāris\x05marts\x08aprīlis\x05m" + + "aijs\x07jūnijs\x07jūlijs\x07augusts\x0aseptembris\x08oktobris\x09novembr" + + "is\x09decembris\x05marts\x05maijs\x07svētd.\x06pirmd.\x05otrd.\x07trešd." + + "\x08ceturtd.\x07piektd.\x06sestd.\x02Sv\x02Pr\x02Ot\x02Tr\x02Ce\x02Pk" + + "\x02Se\x0asvētdiena\x09pirmdiena\x08otrdiena\x0atrešdiena\x0bceturtdiena" + + "\x0apiektdiena\x09sestdiena\x07Svētd.\x06Pirmd.\x05Otrd.\x07Trešd.\x08Ce" + + "turtd.\x07Piektd.\x06Sestd.\x0aSvētdiena\x09Pirmdiena\x08Otrdiena\x0aTre" + + "šdiena\x0bCeturtdiena\x0aPiektdiena\x09Sestdiena\x081.\u00a0cet.\x082." + + "\u00a0cet.\x083.\u00a0cet.\x084.\u00a0cet.\x0d1. ceturksnis\x0d2. ceturk" + + "snis\x0d3. ceturksnis\x0d4. ceturksnis\x09pusnaktī\x09priekšp.\x05pusd." + + "\x06pēcp.\x08no rīta\x09pēcpusd.\x07vakarā\x06naktī\x0dpēcpusdienā\x10pr" + + "iekšpusdienā\x0dpusdienlaikā\x08pusnakts\x05rīts\x0cpēcpusdiena\x06vakar" + + "s\x05nakts\x0fpriekšpusdiena\x0cpusdienlaiks\x11pirms mūsu ēras\x0bmūsu " + + "ērā\x07p.m.ē.\x05m.ē.\x04pmē\x03mē\x17EEEE, y. 'gada' d. MMMM\x11y. 'ga" + + "da' d. MMMM\x10y. 'gada' d. MMM\x06tišri\x08hešvans\x08kisļevs\x06tevets" + + "\x07ševats\x081. adars\x05adars\x082. adars\x06nisans\x05ijars\x06sivans" + + "\x06tamuzs\x03avs\x05eluls\x08muharams\x06safars\x081. rabī\x082. rabī" + + "\x0d1. džumādā\x0d2. džumādā\x08radžabs\x07šabans\x09ramadāns\x08šauvals" + + "\x0bdu al-kidā\x0ddu al-hidžā\x04ēra\x04gads\x13pagājušajā gadā\x0cšajā " + + "gadā\x10nākamajā gadā\x0fpēc {0} gadiem\x0dpēc {0} gada\x10pirms {0} gad" + + "iem\x0epirms {0} gada\x0bpēc {0} g.\x0cpirms {0} g.\x0aceturksnis\x15pēd" + + "ējais ceturksnis\x0fšis ceturksnis\x14nākamais ceturksnis\x17pēc {0}" + + "\u00a0ceturkšņiem\x15pēc {0}\u00a0ceturkšņa\x18pirms {0}\u00a0ceturkšņie" + + "m\x16pirms {0}\u00a0ceturkšņa\x04cet.\x0epēc {0}\u00a0cet.\x0fpirms {0}" + + "\u00a0cet.\x08mēnesis\x16pagājušajā mēnesī\x0fšajā mēnesī\x13nākamajā mē" + + "nesī\x13pēc {0} mēnešiem\x11pēc {0} mēneša\x14pirms {0} mēnešiem\x12pirm" + + "s {0} mēneša\x05mēn.\x0epēc {0} mēn.\x0fpirms {0} mēn.\x08nedēļa\x17pagā" + + "jušajā nedēļā\x10šajā nedēļā\x14nākamajā nedēļā\x13pēc {0} nedēļām\x12pē" + + "c {0} nedēļas\x14pirms {0} nedēļām\x13pirms {0} nedēļas\x0d{0}. nedēļa" + + "\x04ned.\x0dpēc {0} ned.\x0epirms {0} ned.\x08aizvakar\x05vakar\x07šodie" + + "n\x04rīt\x06parīt\x10pēc {0} dienām\x0fpēc {0} dienas\x11pirms {0} dienā" + + "m\x10pirms {0} dienas\x0bpēc {0} d.\x0cpēc {0}\u00a0d.\x0cpirms {0} d." + + "\x0dpirms {0}\u00a0d.\x0fnedēļas diena\x19pagājušajā svētdienā\x12šajā s" + + "vētdienā\x16nākamajā svētdienā\x15pēc {0} svētdienām\x14pēc {0} svētdien" + + "as\x16pirms {0} svētdienām\x15pirms {0} svētdienas\x0cpag. svētd.\x0ešaj" + + "ā svētd.\x0dnāk. svētd.\x18pagājušajā pirmdienā\x11šajā pirmdienā\x15nā" + + "kamajā pirmdienā\x14pēc {0} pirmdienām\x13pēc {0} pirmdienas\x15pirms {0" + + "} pirmdienām\x14pirms {0} pirmdienas\x0bpag. pirmd.\x0dšajā pirmd.\x0cnā" + + "k. pirmd.\x17pagājušajā otrdienā\x10šajā otrdienā\x14nākamajā otrdienā" + + "\x13pēc {0} otrdienām\x12pēc {0} otrdienas\x14pirms {0} otrdienām\x13pir" + + "ms {0} otrdienas\x0apag. otrd.\x0cšajā otrd.\x0bnāk. otrd.\x19pagājušajā" + + " trešdienā\x12šajā trešdienā\x16nākamajā trešdienā\x15pēc {0} trešdienām" + + "\x14pēc {0} trešdienas\x16pirms {0} trešdienām\x15pirms {0} trešdienas" + + "\x0cpag. trešd.\x0ešajā trešd.\x0dnāk. trešd.\x1apagājušajā ceturtdienā" + + "\x13šajā ceturtdienā\x17nākamajā ceturtdienā\x16pēc {0} ceturtdienām\x15" + + "pēc {0} ceturtdienas\x17pirms {0} ceturtdienām\x16pirms {0} ceturtdienas" + + "\x0dpag. ceturtd.\x0fšajā ceturtd.\x0enāk. ceturtd.\x19pagājušajā piektd" + + "ienā\x12šajā piektdienā\x16nākamajā piektdienā\x15pēc {0} piektdienām" + + "\x14pēc {0} piektdienas\x16pirms {0} piektdienām\x15pirms {0} piektdiena" + + "s\x0cpag. piektd.\x0ešajā piektd.\x0dnāk. piektd.\x18pagājušajā sestdien" + + "ā\x11šajā sestdienā\x15nākamajā sestdienā\x14pēc {0} sestdienām\x13pēc " + + "{0} sestdienas\x15pirms {0} sestdienām\x14pirms {0} sestdienas\x0bpag. s" + + "estd.\x0dšajā sestd.\x0cnāk. sestd.\x1epriekšpusdienā/pēcpusdienā\x07stu" + + "ndas\x0ešajā stundā\x11pēc {0} stundām\x10pēc {0} stundas\x12pirms {0} s" + + "tundām\x11pirms {0} stundas\x03st.\x0dpēc {0}\u00a0st.\x0epirms {0}" + + "\u00a0st.\x0apēc {0} h\x0bpirms {0} h\x08minūtes\x0fšajā minūtē\x12pēc {" + + "0} minūtēm\x11pēc {0} minūtes\x13pirms {0} minūtēm\x12pirms {0} minūtes" + + "\x0dpēc {0} min.\x0epirms {0} min.\x0cpēc {0} min\x0dpēc {0}\u00a0min" + + "\x0epirms {0}\u00a0min\x08sekundes\x05tagad\x12pēc {0} sekundēm\x11pēc {" + + "0} sekundes\x13pirms {0} sekundēm\x12pirms {0} sekundes\x0dpēc {0} sek." + + "\x0epirms {0} sek.\x0bpēc {0}\u00a0s\x0cpirms {0}\u00a0s\x0bpirms {0} s" + + "\x0blaika josla\x10Laika josla: {0}\x12{0}: vasaras laiks\x14{0}: standa" + + "rta laiks!Universālais koordinētais laiks\x1dLielbritānijas vasaras laik" + + "s\x14Īrijas ziemas laiks\x13Afganistānas laiks\x16Centrālāfrikas laiks" + + "\x15Austrumāfrikas laiks\x1cDienvidāfrikas ziemas laiks\x14Rietumāfrikas" + + " laiks\x1bRietumāfrikas ziemas laiks\x1cRietumāfrikas vasaras laiks\x0eA" + + "ļaskas laiks\x15Aļaskas ziemas laiks\x16Aļaskas vasaras laiks\x0eAmazon" + + "es laiks\x15Amazones ziemas laiks\x16Amazones vasaras laiks\x11Centrālai" + + "s laiks\x18Centrālais ziemas laiks\x19Centrālais vasaras laiks\x0eAustru" + + "mu laiks\x15Austrumu ziemas laiks\x16Austrumu vasaras laiks\x0bKalnu lai" + + "ks\x12Kalnu ziemas laiks\x13Kalnu vasaras laiks\x14Klusā okeāna laiks" + + "\x1bKlusā okeāna ziemas laiks\x1cKlusā okeāna vasaras laiks\x0eAnadiras " + + "laiks\x15Anadiras ziemas laiks\x16Anadiras vasaras laiks\x0cApijas laiks" + + "\x13Apijas ziemas laiks\x14Apijas vasaras laiks\x18Arābijas pussalas lai" + + "ks\x1fArābijas pussalas ziemas laiks Arābijas pussalas vasaras laiks\x11" + + "Argentīnas laiks\x18Argentīnas ziemas laiks\x19Argentīnas vasaras laiks" + + "\x17Rietumargentīnas laiks\x1eRietumargentīnas ziemas laiks\x1fRietumarg" + + "entīnas vasaras laiks\x10Armēnijas laiks\x17Armēnijas ziemas laiks\x18Ar" + + "mēnijas vasaras laiks\x10Atlantijas laiks\x17Atlantijas ziemas laiks\x18" + + "Atlantijas vasaras laiks\x1eAustrālijas centrālais laiks%Austrālijas cen" + + "trālais ziemas laiks&Austrālijas centrālais vasaras laiks&Austrālijas ce" + + "ntrālais rietumu laiks-Austrālijas centrālais rietumu ziemas laiks.Austr" + + "ālijas centrālais rietumu vasaras laiks\x1bAustrālijas austrumu laiks" + + "\x22Austrālijas austrumu ziemas laiks#Austrālijas austrumu vasaras laiks" + + "\x1aAustrālijas rietumu laiks!Austrālijas rietumu ziemas laiks\x22Austrā" + + "lijas rietumu vasaras laiks\x15Azerbaidžānas laiks\x1cAzerbaidžānas ziem" + + "as laiks\x1dAzerbaidžānas vasaras laiks\x10Azoru salu laiks\x17Azoru sal" + + "u ziemas laiks\x18Azoru salu vasaras laiks\x12Bangladešas laiks\x19Bangl" + + "adešas ziemas laiks\x1aBangladešas vasaras laiks\x0eButānas laiks\x10Bol" + + "īvijas laiks\x11Brazīlijas laiks\x18Brazīlijas ziemas laiks\x19Brazīlij" + + "as vasaras laiks\x1aBrunejas Darusalamas laiks\x10Kaboverdes laiks\x17Ka" + + "boverdes ziemas laiks\x18Kaboverdes vasaras laiks\x15Čamorra ziemas laik" + + "s\x0eČetemas laiks\x15Četemas ziemas laiks\x16Četemas vasaras laiks\x0dČ" + + "īles laiks\x14Čīles ziemas laiks\x15Čīles vasaras laiks\x0dĶīnas laiks" + + "\x14Ķīnas ziemas laiks\x15Ķīnas vasaras laiks\x12Čoibalsanas laiks\x19Čo" + + "ibalsanas ziemas laiks\x1aČoibalsanas vasaras laiks\x17Ziemsvētku salas " + + "laiks\x1cKokosu (Kīlinga) salu laiks\x10Kolumbijas laiks\x17Kolumbijas z" + + "iemas laiks\x18Kolumbijas vasaras laiks\x0fKuka salu laiks\x16Kuka salu " + + "ziemas laiks\x17Kuka salu vasaras laiks\x0bKubas laiks\x12Kubas ziemas l" + + "aiks\x13Kubas vasaras laiks\x0eDeivisas laiks\x13Dimondirvilas laiks\x14" + + "Austrumtimoras laiks\x15Lieldienu salas laiks\x1cLieldienu salas ziemas " + + "laiks\x1dLieldienu salas vasaras laiks\x0fEkvadoras laiks\x15Centrāleiro" + + "pas laiks\x1cCentrāleiropas ziemas laiks\x1dCentrāleiropas vasaras laiks" + + "\x14Austrumeiropas laiks\x1bAustrumeiropas ziemas laiks\x1cAustrumeiropa" + + "s vasaras laiks Austrumeiropas laika josla (FET)\x13Rietumeiropas laiks" + + "\x1aRietumeiropas ziemas laiks\x1bRietumeiropas vasaras laiks\x1eFolklen" + + "da (Malvinu) salu laiks%Folklenda (Malvinu) salu ziemas laiks&Folklenda " + + "(Malvinu) salu vasaras laiks\x0cFidži laiks\x13Fidži ziemas laiks\x14Fid" + + "ži vasaras laiks\x16Franču Gviānas laiks7Francijas Dienvidjūru un Antar" + + "ktikas teritorijas laiks\x0eGalapagu laiks\x12Gambjē salu laiks\x0eGruzi" + + "jas laiks\x15Gruzijas ziemas laiks\x16Gruzijas vasaras laiks\x13Gilberta" + + " salu laiks\x0fGriničas laiks\x17Austrumgrenlandes laiks\x1eAustrumgrenl" + + "andes ziemas laiks\x1fAustrumgrenlandes vasaras laiks\x16Rietumgrenlande" + + "s laiks\x1dRietumgrenlandes ziemas laiks\x1eRietumgrenlandes vasaras lai" + + "ks\x15Persijas līča laiks\x0eGajānas laiks\x15Havaju–Aleutu laiks\x1cHav" + + "aju–Aleutu ziemas laiks\x1dHavaju–Aleutu vasaras laiks\x0fHonkongas laik" + + "s\x16Honkongas ziemas laiks\x17Honkongas vasaras laiks\x0cHovdas laiks" + + "\x13Hovdas ziemas laiks\x14Hovdas vasaras laiks\x14Indijas ziemas laiks" + + "\x15Indijas okeāna laiks\x11Indoķīnas laiks\x1aCentrālindonēzijas laiks" + + "\x19Austrumindonēzijas laiks\x18Rietumindonēzijas laiks\x0dIrānas laiks" + + "\x14Irānas ziemas laiks\x15Irānas vasaras laiks\x0fIrkutskas laiks\x16Ir" + + "kutskas ziemas laiks\x17Irkutskas vasaras laiks\x0fIzraēlas laiks\x16Izr" + + "aēlas ziemas laiks\x17Izraēlas vasaras laiks\x0eJapānas laiks\x15Japānas" + + " ziemas laiks\x16Japānas vasaras laiks!Petropavlovskas-Kamčatskas laiks(" + + "Petropavlovskas-Kamčatskas ziemas laiks)Petropavlovskas-Kamčatskas vasar" + + "as laiks\x19Austrumkazahstānas laiks\x18Rietumkazahstānas laiks\x0dKorej" + + "as laiks\x14Korejas ziemas laiks\x15Korejas vasaras laiks\x0cKosrae laik" + + "s\x13Krasnojarskas laiks\x1aKrasnojarskas ziemas laiks\x1bKrasnojarskas " + + "vasaras laiks\x13Kirgizstānas laiks\x11Lainas salu laiks\x16Lorda Hava s" + + "alas laiks\x1dLorda Hava salas ziemas laiks\x1eLorda Hava salas vasaras " + + "laiks\x15Makvorija salas laiks\x0fMagadanas laiks\x16Magadanas ziemas la" + + "iks\x17Magadanas vasaras laiks\x10Malaizijas laiks\x11Maldīvijas laiks" + + "\x14Marķīza salu laiks\x14Māršala salu laiks\x11Maurīcijas laiks\x18Maur" + + "īcijas ziemas laiks\x19Maurīcijas vasaras laiks\x0dMosonas laiks\x1dZie" + + "meļrietumu Meksikas laiks$Ziemeļrietumu Meksikas ziemas laiks%Ziemeļriet" + + "umu Meksikas vasaras laiks(Meksikas Klusā okeāna piekrastes laiks/Meksik" + + "as Klusā okeāna piekrastes ziemas laiks0Meksikas Klusā okeāna piekrastes" + + " vasaras laiks\x11Ulanbatoras laiks\x18Ulanbatoras ziemas laiks\x19Ulanb" + + "atoras vasaras laiks\x0eMaskavas laiks\x15Maskavas ziemas laiks\x16Maska" + + "vas vasaras laiks\x0dMjanmas laiks\x0bNauru laiks\x0eNepālas laiks\x15Ja" + + "unkaledonijas laiks\x1cJaunkaledonijas ziemas laiks\x1dJaunkaledonijas v" + + "asaras laiks\x13Jaunzēlandes laiks\x1aJaunzēlandes ziemas laiks\x1bJaunz" + + "ēlandes vasaras laiks\x15Ņūfaundlendas laiks\x1cŅūfaundlendas ziemas la" + + "iks\x1dŅūfaundlendas vasaras laiks\x0aNiue laiks\x15Norfolkas salas laik" + + "s\x1aFernandu di Noroņas laiks!Fernandu di Noroņas ziemas laiks\x22Ferna" + + "ndu di Noroņas vasaras laiks\x13Novosibirskas laiks\x1aNovosibirskas zie" + + "mas laiks\x1bNovosibirskas vasaras laiks\x0cOmskas laiks\x13Omskas ziema" + + "s laiks\x14Omskas vasaras laiks\x11Pakistānas laiks\x18Pakistānas ziemas" + + " laiks\x19Pakistānas vasaras laiks\x0bPalau laiks\x18Papua-Jaungvinejas " + + "laiks\x10Paragvajas laiks\x17Paragvajas ziemas laiks\x18Paragvajas vasar" + + "as laiks\x0aPeru laiks\x11Peru ziemas laiks\x12Peru vasaras laiks\x0fFil" + + "ipīnu laiks\x16Filipīnu ziemas laiks\x17Filipīnu vasaras laiks\x13Fēniks" + + "a salu laiks\x1dSenpjēras un Mikelonas laiks$Senpjēras un Mikelonas ziem" + + "as laiks%Senpjēras un Mikelonas vasaras laiks\x10Pitkērnas laiks\x0dPona" + + "pē laiks\x0fPhenjanas laiks\x0fReinjonas laiks\x0dRoteras laiks\x10Sahal" + + "īnas laiks\x17Sahalīnas ziemas laiks\x18Sahalīnas vasaras laiks\x0dSama" + + "ras laiks\x14Samaras ziemas laiks\x15Samaras vasaras laiks\x0bSamoa laik" + + "s\x12Samoa ziemas laiks\x13Samoa vasaras laiks\x14Seišeļu salu laiks\x11" + + "Singapūras laiks\x14Zālamana salu laiks\x19Dienviddžordžijas laiks\x0fSu" + + "rinamas laiks\x0cŠovas laiks\x0bTaiti laiks\x0cTaibei laiks\x13Taibei zi" + + "emas laiks\x14Taibei vasaras laiks\x15Tadžikistānas laiks\x0dTokelau lai" + + "ks\x0cTongas laiks\x13Tongas ziemas laiks\x14Tongas vasaras laiks\x0dČūk" + + "as laiks\x15Turkmenistānas laiks\x1cTurkmenistānas ziemas laiks\x1dTurkm" + + "enistānas vasaras laiks\x0cTuvalu laiks\x0fUrugvajas laiks\x16Urugvajas " + + "ziemas laiks\x17Urugvajas vasaras laiks\x13Uzbekistānas laiks\x1aUzbekis" + + "tānas ziemas laiks\x1bUzbekistānas vasaras laiks\x0dVanuatu laiks\x14Van" + + "uatu ziemas laiks\x15Vanuatu vasaras laiks\x11Venecuēlas laiks\x13Vladiv" + + "ostokas laiks\x1aVladivostokas ziemas laiks\x1bVladivostokas vasaras lai" + + "ks\x11Volgogradas laiks\x18Volgogradas ziemas laiks\x19Volgogradas vasar" + + "as laiks\x0eVostokas laiks\x11Veika salas laiks\x18Volisas un Futunas la" + + "iks\x0fJakutskas laiks\x16Jakutskas ziemas laiks\x17Jakutskas vasaras la" + + "iks\x15Jekaterinburgas laiks\x1cJekaterinburgas ziemas laiks\x1dJekateri" + + "nburgas vasaras laiks\x02A2\x02N4\x02F5\x02I6\x02A7\x02I8\x02K9\x0210" + + "\x0211\x0212\x02M5\x02M6\x02M7\x02M8\x02M9\x03M10\x03M11\x03M12\x04pon." + + "\x04tor.\x04sre.\x05čet.\x04pet.\x04sob.\x02Mu\x02Cp\x02Ct\x02Cn\x02Cs" + + "\x02Mg\x03ut.\x03sr.\x04sub." + +var bucket69 string = "" + // Size: 11188 bytes + "\x03Dal\x04Ará\x05Ɔɛn\x03Doy\x04Lép\x03Rok\x04Sás\x06Bɔ́r\x04Kús\x04Gís" + + "\x06Shʉ́\x06Ntʉ́\x0aOladalʉ́\x05Arát\x12Ɔɛnɨ́ɔɨŋɔk\x1aOlodoyíóríê inkókú" + + "â\x1bOloilépūnyīē inkókúâ\x0cKújúɔrɔk\x0bMórusásin\x16Ɔlɔ́ɨ́bɔ́rárɛ\x08" + + "Kúshîn\x08Olgísan\x0bPʉshʉ́ka\x0dNtʉ́ŋʉ́s\x0aJumapílí\x09Jumatátu\x06Jum" + + "ane\x0aJumatánɔ\x09Alaámisi\x06Jumáa\x09Jumamósi\x07Erobo 1\x07Erobo 2" + + "\x07Erobo 3\x07Erobo 4\x0cƐnkakɛnyá\x09Ɛndámâ\x10Meínō Yɛ́sʉ\x0fEínō Yɛ́" + + "sʉ\x09Ɛnkátá\x08Ɔlárì\x08Ɔlápà\x07Ewíkî\x0dƐnkɔlɔ́ŋ\x06Ŋolé\x07Táatá\x0c" + + "Tááisérè\x15Ɛnkɔ́lɔŋ ewíkî\x16Ɛnkakɛnyá/Ɛndámâ\x09Ɛ́sáâ\x0bOldákikaè\x14" + + "Ɛ́sáâ o inkuapí\x03JAN\x03FEB\x03MAC\x04ĨPU\x05MĨĨ\x03NJU\x03NJR\x03AGA" + + "\x03SPT\x03OKT\x03NOV\x03DEC\x08Januarĩ\x0aFeburuarĩ\x05Machi\x07Ĩpurũ" + + "\x05Mĩĩ\x05Njuni\x07Njuraĩ\x06Agasti\x08Septemba\x07Oktũba\x07Novemba" + + "\x07Dicemba\x03KIU\x03MRA\x03WAI\x03WET\x03WEN\x03WTN\x03JUM\x11Ĩmwe kĩr" + + "ĩ inya\x13Ijĩrĩ kĩrĩ inya\x13Ithatũ kĩrĩ inya\x10Inya kĩrĩ inya\x03RŨ" + + "\x03ŨG\x10Mbere ya Kristũ\x10Nyuma ya Kristũ\x06Ĩgita\x06Ntukũ\x11Ntukũ " + + "ya ngũgĩ\x06Ĩthaa\x07Ndagika\x10Gũntũ kwa thaa\x06zanvie\x07fevriye\x04m" + + "ars\x05avril\x02me\x03zin\x05zilye\x03out\x06septam\x05oktob\x05novam" + + "\x05desam\x03dim\x03lin\x03mar\x03mer\x02ze\x03van\x03sam\x06dimans\x05l" + + "indi\x05mardi\x08merkredi\x04zedi\x08vandredi\x05samdi\x091e trimes\x0a2" + + "em trimes\x0a3em trimes\x0a4em trimes\x0favan Zezi-Krist\x0fapre Zezi-Kr" + + "ist\x07av. Z-K\x07ap. Z-K\x05Lepok\x04Lane\x03Mwa\x06Semenn\x04Zour\x03Y" + + "er\x05Zordi\x05Demin\x0dZour lasemenn\x13Peryod dan lazourne\x03Ler\x05M" + + "init\x06Segonn\x0cPeryod letan\x07Janoary\x08Febroary\x06Martsa\x06April" + + "y\x03Mey\x04Jona\x05Jolay\x09Aogositra\x09Septambra\x07Oktobra\x08Novamb" + + "ra\x08Desambra\x03Mey\x04Alah\x05Alats\x03Tal\x04Alar\x04Alak\x03Zom\x04" + + "Asab\x07Alahady\x0bAlatsinainy\x06Talata\x08Alarobia\x09Alakamisy\x04Zom" + + "a\x08Asabotsy\x14Telovolana voalohany\x12Telovolana faharoa\x13Telovolan" + + "a fahatelo\x14Telovolana fahefatra\x0dAlohan’i JK\x0dAorian’i JK\x05Taon" + + "a\x06Volana\x0aHerinandro\x05Andro\x05Omaly\x04Anio\x0aRahampitso\x07Min" + + "itra\x08Segondra\x03Kwa\x03Una\x03Rar\x03Che\x03Tha\x03Moc\x03Sab\x03Nan" + + "\x03Tis\x03Kum\x03Moj\x03Yel\x0fMweri wo kwanza\x10Mweri wo unayeli\x10M" + + "weri wo uneraru\x12Mweri wo unecheshe\x11Mweri wo unethanu\x17Mweri wo t" + + "hanu na mocha\x0dMweri wo saba\x0dMweri wo nane\x0dMweri wo tisa\x0dMwer" + + "i wo kumi\x15Mweri wo kumi na moja\x19Mweri wo kumi na yel’li\x03Jtt\x03" + + "Jnn\x03Jtn\x03Ara\x03Iju\x03Jmo\x06Sabato\x08Jumatatu\x07Jumanne\x08Juma" + + "tano\x09Arahamisi\x06Ijumaa\x08Jumamosi\x08wichishu\x0cmchochil’l\x0dHin" + + "apiya yesu\x0aYopia yesu\x02HY\x02YY\x09kal’lai\x04yaka\x05mweri\x0biwik" + + "i mocha\x06nihuku\x09n’chana\x08lel’lo\x08me’llo\x18nihuku no mwisho wa " + + "wiki\x04isaa\x07idakika\x08isekunde\x07mbegtug\x0dimeg àbùbì\x10imeg mbə" + + "ŋchubi\x0eiməg ngwə̀t\x09iməg fog\x0fiməg ichiibɔd\x13iməg àdùmbə̀ŋ\x0c" + + "iməg ichika\x09iməg kud\x0eiməg tèsiʼe\x09iməg zò\x0diməg krizmed\x0dimə" + + "g mbegtug\x06Aneg 1\x06Aneg 2\x06Aneg 3\x06Aneg 4\x06Aneg 5\x06Aneg 6" + + "\x06Aneg 7\x06fituʼ\x05iməg\x04nkap\x05anəg\x06ikwiri\x0btèchɔ̀ŋ\x03isu" + + "\x07isu ywi\x0eanəg agu nkap\x17EEEE, dd MMMM y 'г'. G\x11dd MMMM y 'г'." + + " G\x08dd.M.y G\x0cdd.M.y GGGGG\x07јан.\x07фев.\x07мар.\x07апр.\x06мај" + + "\x07јун.\x07јул.\x07авг.\x09септ.\x07окт.\x09ноем.\x07дек.\x0eјануари" + + "\x10февруари\x08март\x0aаприл\x08јуни\x08јули\x0cавгуст\x12септември\x10" + + "октомври\x0eноември\x10декември\x07нед.\x07пон.\x05вт.\x07сре.\x07чет." + + "\x07пет.\x07саб.\x07вто.\x0cнедела\x14понеделник\x0eвторник\x0aсреда\x10" + + "четврток\x0aпеток\x0cсабота\x0dјан-мар\x0dапр-јун\x0dјул-сеп\x0dокт-дек" + + "\x1dпрво тромесечје\x1fвторо тромесечје\x1fтрето тромесечје#четврто тром" + + "есечје\x0cполноќ\x0dпретпл.\x10напладне\x09попл.\x0cнаутро\x0eнавечер" + + "\x08ноќе\x09полн.\x09напл.\x08утро\x07веч.\x14претпладне\x10попладне\x11" + + "по полноќ\x0cпладне\x11на полноќ\x1cпред нашата ера\x18од нашата ера" + + "\x0cпр. н.е.\x06dd.M.y\x07dd.M.yy\x1dминатата година\x15оваа година\x1dс" + + "ледната година\x19пред {0} година\x19пред {0} години\x07год.\x14тромесе" + + "чје)последното тромесечје\x1bова тромесечје%следното тромесечје\x1dза {" + + "0} тромесечје\x1dза {0} тромесечја!пред {0} тромесечје!пред {0} тромесеч" + + "ја\x0dтромес.\x16за {0} тромес.\x1aпред {0} тромес.\x1bминатиот месец" + + "\x13овој месец\x1bследниот месец\x17пред {0} месец\x19пред {0} месеци" + + "\x1fминатата седмица\x17оваа седмица\x1fследната седмица\x17за {0} седми" + + "ца\x17за {0} седмици\x1bпред {0} седмица\x1bпред {0} седмици\x12{0} сед" + + "мица\x07сед.\x0eзавчера\x0aвчера\x0aденес\x08утре\x0eзадутре\x0fза {0} " + + "ден\x11за {0} дена\x13пред {0} ден\x15пред {0} дена\x1cден во неделата" + + "\x1dминатата недела\x15оваа недела\x1dследната недела\x15за {0} недела" + + "\x15за {0} недели\x19пред {0} недела\x19пред {0} недели%минатиот понедел" + + "ник\x1dовој понеделник%следниот понеделник\x1dза {0} понеделник\x1fза {" + + "0} понеделници!пред {0} понеделник#пред {0} понеделници\x1fминатиот втор" + + "ник\x17овој вторник\x1fследниот вторник\x17за {0} вторник\x19за {0} вто" + + "рници\x1bпред {0} вторник\x1dпред {0} вторници\x0dмин. вт.\x1bминатата " + + "среда\x13оваа среда\x1bследната среда\x13за {0} среда\x13за {0} среди" + + "\x17пред {0} среда\x17пред {0} среди!минатиот четврток\x19овој четврток!" + + "следниот четврток\x19за {0} четврток\x1bза {0} четвртоци\x1dпред {0} че" + + "тврток\x1fпред {0} четвртоци\x1bминатиот петок\x13овој петок\x1bследнио" + + "т петок\x13за {0} петок\x15за {0} петоци\x19пред {0} петоци\x1dминатата" + + " сабота\x15оваа сабота\x1dследната сабота\x15за {0} сабота\x15за {0} саб" + + "оти\x19пред {0} сабота\x19пред {0} саботи%претпладне/попладне\x0aчасов" + + "\x0fза {0} час\x11за {0} часа\x13пред {0} час\x15пред {0} часа\x15оваа м" + + "инута\x19пред {0} минута\x19пред {0} минути\x17за {0} секунда\x17за {0}" + + " секунди\x1bпред {0} секунда\x1bпред {0} секунди\x1bвременска зона\x13Вр" + + "еме во {0}\x08{0} (+1)\x08{0} (+0):Координирано универзално време(Брита" + + "нско летно време*Ирско стандардно време6Акре летно сметање на времетоPЗ" + + "ападноафриканско летно сметање на времето?Летно сметање на времето во А" + + "љаска?Летно сметање на времето во Амазон@Централно летно сметање на вре" + + "мето<Источно летно сметање на времето@Планинско летно сметање на времет" + + "о@Пацифичко летно сметање на времето(Анадирско летно време%Летно време " + + "во Апија<Арапско летно сметање на времетоEЛетно сметање на времето во А" + + "ргентинаTЛетно сметање на времето во западна Аргентина+Летно време во Е" + + "рменија@Атлантско летно сметање на времетоZЛетно сметање на времето во " + + "Централна АвстралијаlЛетно сметање на времето во Централна и Западна Ав" + + "стралијаVЛетно сметање на времето во Источна АвстралијаVЛетно сметање н" + + "а времето во Западна Австралија/Летно време во Азербејџан'Летно време в" + + "о Азорес-Летно време во БангладешEЛетно сметање на времето во Бразилија" + + "3Летно време на Зелениот ‘Рт=Летно сметање на времето во Четем;Летно сме" + + "тање на времето во Чиле;Летно сметање на времето во Кина-Летно време во" + + " ЧојбалсанEЛетно сметање на времето во Колумбија4Летно време на Островит" + + "е Кук;Летно сметање на времето во КубаBЛетно време на Велигденскиот Ост" + + "ров2Средноевропско летно време4Источноевропско летно време4Западноевроп" + + "ско летно време\\Летно сметање на времето на Фолкландските Острови#Летн" + + "о време во Фиџи)Летно време во ГрузијаRЛетно сметање на времето во Исто" + + "чен ГренландRЛетно сметање на времето во Западен Гренланд_Летно сметање" + + " на времето во Хаваи - Алеутски острови,Летно време во Хонг Конг#Летно в" + + "реме во Ховд;Летно сметање на времето во Иран)Летно време во Иркутск?Ле" + + "тно сметање на времето во ИзраелCЛетно сметање на времето во Јапонија?Л" + + "етно сметање на времето во Кореја1Летно време во КраснојарскBЛетно смет" + + "ање на времето во Лорд Хау)Летно време во МагаданEЛетно сметање на врем" + + "ето на Маврициус\\Летно сметање на времето во северозападно МексикоBЛет" + + "но тихоокеанско време во Мексико.Летно време во Улан Батор?Летно сметањ" + + "е на времето во Москва8Летно време во Нова КаледонијаFЛетно сметање на " + + "времето во Нов ЗеландIЛетно сметање на времето на ЊуфаундлендUЛетно сме" + + "тање на времето на Фернандо де Нороња1Летно време во Новосибирск#Летно " + + "време во Омск+Летно време во ПакистанCЛетно сметање на времето во Параг" + + "вај;Летно сметање на времето во Перу+Летно време во ФилипиниVЛетно смет" + + "ање на времето на Сент Пјер и Микелан)Летно време во Сакалин:Самара лет" + + "но сметање на времето%Летно време во Самоа?Летно сметање на времето во " + + "Таипеи%Летно време во Тонга3Летно време во ТуркменистанAЛетно сметање н" + + "а времето во Уругвај/Летно време во Узбекистан)Летно време во Вануату1Л" + + "етно време во ВладивостокEЛетно сметање на времето во Волгоград)Летно в" + + "реме во Јакутск3Летно време во Екатеринбург\x07феб.\x08март\x07апр.\x06" + + "мај\x06јун\x06јул\x07авг.\x07окт.\x07нов.\x07дец.\x05ут.\x05ср.\x07суб." + + "\x03Muk\x03Dun\x03Mar\x03Mod\x03Jol\x03Ped\x03Sok\x03Tib\x03Lab\x03Poo" + +var bucket70 string = "" + // Size: 27713 bytes + "\x11G y, MMMM d, EEEE\x0bG y, MMMM d\x0aG y, MMM d\x09ജനു\x12ഫെബ്രു\x09മ" + + "ാർ\x0fഏപ്രി\x0cമേയ്\x09ജൂൺ\x0cജൂലൈ\x06ഓഗ\x18സെപ്റ്റം\x0fഒക്ടോ\x09നവം" + + "\x0cഡിസം\x03ജ\x03ഫ\x06മാ\x03ഏ\x06മെ\x06ജൂ\x03ഓ\x06സെ\x03ഒ\x03ന\x06ഡി\x12" + + "ജനുവരി\x1bഫെബ്രുവരി\x15മാർച്ച്\x12ഏപ്രിൽ\x18ഓഗസ്റ്റ്\x1eസെപ്റ്റംബർ\x18" + + "ഒക്\u200cടോബർ\x0fനവംബർ\x12ഡിസംബർ\x06ഫെ\x0cഞായർ\x12തിങ്കൾ\x0fചൊവ്വ\x0cബ" + + "ുധൻ\x12വ്യാഴം\x12വെള്ളി\x09ശനി\x03ഞ\x06തി\x06ചൊ\x06ബു\x0cവ്യാ\x06വെ" + + "\x03ശ\x06ഞാ\x1bഞായറാഴ്\u200cച!തിങ്കളാഴ്\u200cച\x1bചൊവ്വാഴ്ച\x1bബുധനാഴ്" + + "\u200cച\x1eവ്യാഴാഴ്\u200cച$വെള്ളിയാഴ്\u200cച\x1bശനിയാഴ്\u200cച\x1eചൊവ്വാ" + + "ഴ്\u200cച\x1fഒന്നാം പാദം\x1fരണ്ടാം പാദം\x22മൂന്നാം പാദം\x1cനാലാം പാദം!" + + "അർദ്ധരാത്രി\x0cഉച്ച\x18പുലർച്ചെ\x12രാവിലെ\x1eഉച്ചയ്ക്ക്$ഉച്ചതിരിഞ്ഞ്" + + "\x1eവൈകുന്നേരം\x12സന്ധ്യ\x12രാത്രി\x03അ\x12ഉച്ചയ്\x12ഉച്ചതി\x06വൈ:ക്രിസ്" + + "\u200cതുവിന് മുമ്പ്\x12ബി.സി.ഇ.\x22ആന്നോ ഡൊമിനി\x0bസി.ഇ.\x14ക്രി.മു.\x0f" + + "ബിസിഇ\x09എഡി\x09സിഇ\x0fy, MMMM d, EEEE\x09y, MMMM d\x08y, MMM d\x12ചൈത" + + "്രം\x12വൈശാഖം\x18ജ്യേഷ്ഠം\x0fആഷാഢം\x15ശ്രാവണം\x1bഭാദ്രപാദം\x15ആശ്വിനം" + + "\x1bകാർത്തികം\x1bമാർഗശീർഷം\x0cപൗഷം\x0cമാഘം\x12ഫൽഗുനം\x06ചൈ\x0cജ്യേ\x03ആ" + + "\x0cശ്രാ\x06ഭാ\x06കാ\x06പൗ\x06ശക\x0fമുഹറം\x09സഫർ\x22റബീഹുൽ അവ്വൽ\x1fറബീഹ" + + "ുൽ ആഖിർ\x22ജമാദുൽ അവ്വൽ\x1fജമാദുൽ ആഖിർ\x0cറജബ്\x0fശഹബാൻ\x0fറമളാൻ\x12ശവ" + + "്വാൽ\x16ദുൽ ഖഹദ്\x19ദുൽ ഹിജ്ജ\x06മു\x03സ\x03റ\x06ദു\x0cഹിജറ\x18കാലഘട്ട" + + "ം\x0cവർഷം\x1fകഴിഞ്ഞ വർഷം\x13ഈ വർ\u200cഷം\x1eഅടുത്തവർഷം\x1c{0} വർഷത്തിൽ" + + "#{0} വർഷം മുമ്പ്\x04വ.\x0cപാദം\x1fകഴിഞ്ഞ പാദം\x10ഈ പാദം\x1fഅടുത്ത പാദം" + + "\x1c{0} പാദത്തിൽ#{0} പാദം മുമ്പ്\x0cമാസം\x1fകഴിഞ്ഞ മാസം\x10ഈ മാസം\x1fഅടു" + + "ത്ത മാസം\x1c{0} മാസത്തിൽ#{0} മാസം മുമ്പ്\x07മാ.\x0cആഴ്ച\x22കഴിഞ്ഞ ആഴ്" + + "\u200cച\x10ഈ ആഴ്ച\x1fഅടുത്ത ആഴ്ച\x19{0} ആഴ്ചയിൽ#{0} ആഴ്ച മുമ്പ്#{0} വരുന" + + "്ന ആഴ്ച\x04ആ.\x0fദിവസം$മിനിഞ്ഞാന്ന്\x12ഇന്നലെ\x0fഇന്ന്\x0cനാളെ\x1bമറ്റ" + + "ന്നാൾ\x1f{0} ദിവസത്തിൽ&{0} ദിവസം മുമ്പ്(ആഴ്ചയിലെ ദിവസം+കഴിഞ്ഞ ഞായറാഴ്ച" + + "\x1cഈ ഞായറാഴ്ച+അടുത്ത ഞായറാഴ്ച%{0} ഞായറാഴ്ചയിൽ/{0} ഞായറാഴ്ച മുമ്പ്\x1fകഴ" + + "ിഞ്ഞ ഞായർ\x10ഈ ഞായർ\x1fഅടുത്ത ഞായർ1കഴിഞ്ഞ തിങ്കളാഴ്ച\x22ഈ തിങ്കളാഴ്ച1അ" + + "ടുത്ത തിങ്കളാഴ്ച+{0} തിങ്കളാഴ്ചയിൽ5{0} തിങ്കളാഴ്ച മുമ്പ്%കഴിഞ്ഞ തിങ്കൾ" + + "\x16ഈ തിങ്കൾ%അടുത്ത തിങ്കൾ.കഴിഞ്ഞ ചൊവ്വാഴ്ച\x1fഈ ചൊവ്വാഴ്ച.അടുത്ത ചൊവ്വാ" + + "ഴ്ച({0} ചൊവ്വാഴ്ചയിൽ2{0} ചൊവ്വാഴ്ച മുമ്പ്\x22കഴിഞ്ഞ ചൊവ്വ\x13ഈ ചൊവ്വ" + + "\x22അടുത്ത ചൊവ്വ+കഴിഞ്ഞ ബുധനാഴ്ച\x1cഈ ബുധനാഴ്ച+അടുത്ത ബുധനാഴ്ച%{0} ബുധനാ" + + "ഴ്ചയിൽ/{0} ബുധനാഴ്ച മുമ്പ്\x1fകഴിഞ്ഞ ബുധൻ\x10ഈ ബുധൻ\x1fഅടുത്ത ബുധൻ.കഴി" + + "ഞ്ഞ വ്യാഴാഴ്ച\x1fഈ വ്യാഴാഴ്ച.അടുത്ത വ്യാഴാഴ്ച({0} വ്യാഴാഴ്ചയിൽ2{0} വ്യ" + + "ാഴാഴ്ച മുമ്പ്%കഴിഞ്ഞ വ്യാഴം\x16ഈ വ്യാഴം%അടുത്ത വ്യാഴം4കഴിഞ്ഞ വെള്ളിയാഴ" + + "്ച%ഈ വെള്ളിയാഴ്ച4അടുത്ത വെള്ളിയാഴ്ച.{0} വെള്ളിയാഴ്ചയിൽ8{0} വെള്ളിയാഴ്ച" + + " മുമ്പ്%കഴിഞ്ഞ വെള്ളി\x16ഈ വെള്ളി%അടുത്ത വെള്ളി+കഴിഞ്ഞ ശനിയാഴ്ച\x1cഈ ശനി" + + "യാഴ്ച+അടുത്ത ശനിയാഴ്ച%{0} ശനിയാഴ്ചയിൽ/{0} ശനിയാഴ്ച മുമ്പ്\x1cകഴിഞ്ഞ ശന" + + "ി\x0dഈ ശനി\x1cഅടുത്ത ശനി\x18മണിക്കൂർ\x22ഈ മണിക്കൂറിൽ\x22{0} മണിക്കൂറിൽ" + + "/{0} മണിക്കൂർ മുമ്പ്\x04മ.\x18മിനിറ്റ്\x1fഈ മിനിറ്റിൽ\x1f{0} മിനിറ്റിൽ/{" + + "0} മിനിറ്റ് മുമ്പ്\x07മി.\x18സെക്കൻഡ്\x12ഇപ്പോൾ\x1f{0} സെക്കൻഡിൽ/{0} സെക" + + "്കൻഡ് മുമ്പ്\x07സെ.\x16സമയ മേഖല\x10{0} സമയം){0} ഡേലൈറ്റ് സമയം5{0} സ്റ്" + + "റാൻഡേർഡ് സമയംPകോർഡിനേറ്റഡ് യൂണിവേഴ്\u200cസൽ ടൈംMബ്രിട്ടീഷ് ഗ്രീഷ്" + + "\u200cമകാല സമയംAഐറിഷ് സ്റ്റാൻഡേർഡ് സമയം\x22എയ്ക്കർ സമയംGഎയ്ക്കർ സ്റ്റാൻഡ" + + "േർഡ് സമയം>എയ്ക്കർ വേനൽക്കാല സമയം4അഫ്\u200cഗാനിസ്ഥാൻ സമയം2മധ്യ ആഫ്രിക്ക" + + " സമയം;കിഴക്കൻ ആഫ്രിക്ക സമയം\\ദക്ഷിണാഫ്രിക്ക സ്റ്റാൻഡേർഡ് സമയംAപടിഞ്ഞാറൻ " + + "ആഫ്രിക്ക സമയംfപടിഞ്ഞാറൻ ആഫ്രിക്ക സ്റ്റാൻഡേർഡ് സമയംcപടിഞ്ഞാറൻ ആഫ്രിക്ക " + + "ഗ്രീഷ്\u200cമകാല സമയം\x22അലാസ്\u200cക സമയംDഅലാസ്ക സ്റ്റാൻഡേർഡ് സമയം;അല" + + "ാസ്\u200cക ഡേലൈറ്റ് സമയം\x1cഅൽമതി സമയംAഅൽമതി സ്റ്റാൻഡേർഡ് സമയം8അൽമതി വ" + + "േനൽക്കാല സമയം\x1cആമസോൺ സമയംAആമസോൺ സ്റ്റാൻഡേർഡ് സമയം>ആമസോൺ ഗ്രീഷ്\u200c" + + "മകാല സമയംQവടക്കെ അമേരിക്കൻ സെൻട്രൽ സമയംvവടക്കെ അമേരിക്കൻ സെൻട്രൽ സ്റ്റ" + + "ാൻഡേർഡ് സമയംjവടക്കെ അമേരിക്കൻ സെൻട്രൽ ഡേലൈറ്റ് സമയംQവടക്കെ അമേരിക്കൻ ക" + + "ിഴക്കൻ സമയംvവടക്കെ അമേരിക്കൻ കിഴക്കൻ സ്റ്റാൻഡേർഡ് സമയംjവടക്കെ അമേരിക്ക" + + "ൻ കിഴക്കൻ ഡേലൈറ്റ് സമയംNവടക്കെ അമേരിക്കൻ മൌണ്ടൻ സമയംsവടക്കെ അമേരിക്കൻ " + + "മൗണ്ടൻ സ്റ്റാൻഡേർഡ് സമയംgവടക്കെ അമേരിക്കൻ മൗണ്ടൻ ഡേലൈറ്റ് സമയംNവടക്കെ " + + "അമേരിക്കൻ പസഫിക് സമയംsവടക്കെ അമേരിക്കൻ പസഫിക് സ്റ്റാൻഡേർഡ് സമയംgവടക്കെ" + + " അമേരിക്കൻ പസഫിക് ഡേലൈറ്റ് സമയം\x1fഅനാഡിർ സമയംDഅനാഡിർ സ്റ്റാൻഡേർഡ് സമയം;" + + "അനാഡിർ വേനൽക്കാല സമയം\x19അപിയ സമയം>അപിയ സ്റ്റാൻഡേർഡ് സമയം2അപിയ ഡേലൈറ്റ" + + "് സമയം\x1cഅഖ്തൌ സമയംAഅഖ്തൌ സ്റ്റാൻഡേർഡ് സമയം8അഖ്തൌ വേനൽക്കാല സമയം\x22അ" + + "ഖ്തോബ് സമയംGഅഖ്തോബ് സ്റ്റാൻഡേർഡ് സമയം>അഖ്തോബ് വേനൽക്കാല സമയം\x22അറേബ്യ" + + "ൻ സമയംGഅറേബ്യൻ സ്റ്റാൻഡേർഡ് സമയം;അറേബ്യൻ ഡേലൈറ്റ് സമയം%അർജന്റീന സമയംJഅ" + + "ർജന്റീന സ്റ്റാൻഡേർഡ് സമയംGഅർജന്റീന ഗ്രീഷ്\u200cമകാല സമയംAപടിഞ്ഞാറൻ അർജ" + + "ന്റീന സമയംfപടിഞ്ഞാറൻ അർജന്റീന സ്റ്റാൻഡേർഡ് സമയംcപടിഞ്ഞാറൻ അർജന്റീന ഗ്ര" + + "ീഷ്\u200cമകാല സമയം\x22അർമേനിയ സമയംGഅർമേനിയ സ്റ്റാൻഡേർഡ് സമയംDഅർമേനിയ ഗ" + + "്രീഷ്\u200cമകാല സമയം7അറ്റ്\u200cലാന്റിക് സമയം\\അറ്റ്\u200cലാന്റിക് സ്റ" + + "്റാൻഡേർഡ് സമയംPഅറ്റ്\u200cലാന്റിക് ഡേലൈറ്റ് സമയംAസെൻട്രൽ ഓസ്ട്രേലിയ സമ" + + "യംiഓസ്ട്രേലിയൻ സെൻട്രൽ സ്റ്റാൻഡേർഡ് സമയം]ഓസ്ട്രേലിയൻ സെൻട്രൽ ഡേലൈറ്റ് " + + "സമയം`ഓസ്ട്രേലിയൻ സെൻട്രൽ പടിഞ്ഞാറൻ സമയം\x85ഓസ്ട്രേലിയൻ സെൻട്രൽ പടിഞ്ഞാ" + + "റൻ സ്റ്റാൻഡേർഡ് സമയംyഓസ്ട്രേലിയൻ സെൻട്രൽ പടിഞ്ഞാറൻ ഡേലൈറ്റ് സമയംDകിഴക്" + + "കൻ ഓസ്\u200cട്രേലിയ സമയംlഓസ്\u200cട്രേലിയൻ കിഴക്കൻ സ്റ്റാൻഡേർഡ് സമയം`ഓ" + + "സ്\u200cട്രേലിയൻ കിഴക്കൻ ഡേലൈറ്റ് സമയംJപടിഞ്ഞാറൻ ഓസ്\u200cട്രേലിയ സമയം" + + "rഓസ്\u200cട്രേലിയൻ പടിഞ്ഞാറൻ സ്റ്റാൻഡേർഡ് സമയംfഓസ്\u200cട്രേലിയൻ പടിഞ്ഞാ" + + "റൻ ഡേലൈറ്റ് സമയം%അസർബൈജാൻ സമയംJഅസർബൈജാൻ സ്റ്റാൻഡേർഡ് സമയംGഅസർബൈജാൻ ഗ്ര" + + "ീഷ്\u200cമകാല സമയം\x1fഅസോർസ് സമയംDഅസോർസ് സ്റ്റാൻഡേർഡ് സമയംAഅസോർസ് ഗ്രീ" + + "ഷ്\u200cമകാല സമയം+ബംഗ്ലാദേശ് സമയംPബംഗ്ലാദേശ് സ്റ്റാൻഡേർഡ് സമയംMബംഗ്ലാദ" + + "േശ് ഗ്രീഷ്\u200cമകാല സമയം\x22ഭൂട്ടാൻ സമയം\x22ബൊളീവിയ സമയം%ബ്രസീലിയ സമയ" + + "ംJബ്രസീലിയ സ്റ്റാൻഡേർഡ് സമയംGബ്രസീലിയ ഗ്രീഷ്\u200cമകാല സമയം>ബ്രൂണൈ ദാറ" + + "ുസ്സലാം സമയം)കേപ് വെർദെ സമയംNകേപ് വെർദെ സ്റ്റാൻഡേർഡ് സമയംKകേപ് വെർദെ ഗ" + + "്രീഷ്\u200cമകാല സമയംAചമോറോ സ്റ്റാൻഡേർഡ് സമയം\x1fചാത്തം സമയംDചാത്തം സ്റ" + + "്റാൻഡേർഡ് സമയംAചാത്തം ഗ്രീഷ്\u200cമകാല സമയം\x19ചിലി സമയം>ചിലി സ്റ്റാൻഡ" + + "േർഡ് സമയം;ചിലി ഗ്രീഷ്\u200cമകാല സമയം\x16ചൈന സമയം;ചൈന സ്റ്റാൻഡേർഡ് സമയം" + + "/ചൈന ഡേലൈറ്റ് സമയം+ചോയി\u200dബൽസാൻ സമയംPചോയ്\u200cബൽസാൻ സ്റ്റാൻഡേർഡ് സമയ" + + "ംJചോയിബൽസാൻ ഗ്രീഷ്\u200cമകാല സമയം>ക്രിസ്\u200cമസ് ദ്വീപ് സമയം>കൊക്കോസ്" + + " ദ്വീപുകൾ സമയം\x22കൊളംബിയ സമയംGകൊളംബിയ സ്റ്റാൻഡേർഡ് സമയംDകൊളംബിയ ഗ്രീഷ്" + + "\u200cമകാല സമയം8കുക്ക് ദ്വീപുകൾ സമയം]കുക്ക് ദ്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയംjക" + + "ുക്ക് ദ്വീപുകൾ അർദ്ധ ഗ്രീഷ്\u200cമകാല സമയം\x1cക്യൂബ സമയംAക്യൂബ സ്റ്റാൻ" + + "ഡേർഡ് സമയം5ക്യൂബ ഡേലൈറ്റ് സമയം\x1fഡേവിസ് സമയംEഡുമോണ്ട് ഡി ഉർവില്ലെ സമയ" + + "ം2കിഴക്കൻ തിമോർ സമയം5ഈസ്റ്റർ ദ്വീപ് സമയംZഈസ്റ്റർ ദ്വീപ് സ്റ്റാൻഡേർഡ് സ" + + "മയംWഈസ്റ്റർ ദ്വീപ് ഗ്രീഷ്\u200cമകാല സമയം\x22ഇക്വഡോർ സമയം;സെൻട്രൽ യൂറോപ" + + "്യൻ സമയം`സെൻട്രൽ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയംZസെൻട്രൽ യൂറോപ്യൻ ഗ്രീഷ്മകാ" + + "ല സമയം;കിഴക്കൻ യൂറോപ്യൻ സമയം`കിഴക്കൻ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയംZകിഴക്ക" + + "ൻ യൂറോപ്യൻ ഗ്രീഷ്മകാല സമയംSകിഴക്കേയറ്റത്തെ യൂറോപ്യൻ സമയംAപടിഞ്ഞാറൻ യൂറ" + + "ോപ്യൻ സമയംfപടിഞ്ഞാറൻ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയംcപടിഞ്ഞാറൻ യൂറോപ്യൻ ഗ്ര" + + "ീഷ്\u200cമകാല സമയംJഫാക്ക്\u200cലാൻഡ് ദ്വീപുകൾ സമയംoഫാക്ക്\u200cലാൻഡ് ദ" + + "്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയംlഫാക്ക്\u200cലാൻഡ് ദ്വീപുകൾ ഗ്രീഷ്\u200cമകാല " + + "സമയം\x19ഫിജി സമയം>ഫിജി സ്റ്റാൻഡേർഡ് സമയം;ഫിജി ഗ്രീഷ്\u200cമകാല സമയം/ഫ്" + + "രഞ്ച് ഗയാന സമയംUഫ്രഞ്ച് സതേൺ, അന്റാർട്ടിക് സമയം+ഗാലപ്പഗോസ് സമയം%ഗാമ്പി" + + "യർ സമയം%ജോർജ്ജിയ സമയംJജോർജ്ജിയ സ്റ്റാൻഡേർഡ് സമയംGജോർജ്ജിയ ഗ്രീഷ്\u200c" + + "മകാല സമയംDഗിൽബേർട്ട് ദ്വീപുകൾ സമയം8ഗ്രീൻവിച്ച് മീൻ സമയംAകിഴക്കൻ ഗ്രീൻല" + + "ാൻഡ് സമയംfകിഴക്കൻ ഗ്രീൻലാൻഡ് സ്റ്റാൻഡേർഡ് സമയംcകിഴക്കൻ ഗ്രീൻലാൻഡ് ഗ്രീ" + + "ഷ്\u200cമകാല സമയംGപടിഞ്ഞാറൻ ഗ്രീൻലാൻഡ് സമയംlപടിഞ്ഞാറൻ ഗ്രീൻലാൻഡ് സ്റ്റ" + + "ാൻഡേർഡ് സമയംiപടിഞ്ഞാറൻ ഗ്രീൻലാൻഡ് ഗ്രീഷ്\u200cമകാല സമയംAഗ്വാം സ്റ്റാൻഡ" + + "േർഡ് സമയം>ഗൾഫ് സ്റ്റാൻഡേർഡ് സമയം\x19ഗയാന സമയം2ഹവായ്-അലൂഷ്യൻ സമയംWഹവായ്" + + "-അലൂഷ്യൻ സ്റ്റാൻഡേർഡ് സമയംKഹവായ്-അലൂഷ്യൻ ഡേലൈറ്റ് സമയം+ഹോങ്കോങ്ങ് സമയംPഹ" + + "ോങ്കോങ്ങ് സ്റ്റാൻഡേർഡ് സമയംMഹോങ്കോങ്ങ് ഗ്രീഷ്\u200cമകാല സമയം\x19ഹോഡ് സ" + + "മയം>ഹോഡ് സ്റ്റാൻഡേർഡ് സമയം;ഹോഡ് ഗ്രീഷ്\u200cമകാല സമയംGഇന്ത്യൻ സ്റ്റാൻഡ" + + "േർഡ് സമയം>ഇന്ത്യൻ മഹാസമുദ്ര സമയം\x22ഇൻഡോചൈന സമയം8മധ്യ ഇന്തോനേഷ്യ സമയംA" + + "കിഴക്കൻ ഇന്തോനേഷ്യ സമയംGപടിഞ്ഞാറൻ ഇന്തോനേഷ്യ സമയം\x19ഇറാൻ സമയം>ഇറാൻ സ്" + + "റ്റാൻഡേർഡ് സമയം2ഇറാൻ ഡേലൈറ്റ് സമയം\x22ഇർകസ്ക് സമയംGഇർകസ്ക് സ്റ്റാൻഡേർഡ" + + "് സമയംGഇർകസ്\u200cക് ഗ്രീഷ്\u200cമകാല സമയം%ഇസ്രായേൽ സമയംJഇസ്രായേൽ സ്റ്" + + "റാൻഡേർഡ് സമയം>ഇസ്രായേൽ ഡേലൈറ്റ് സമയം\x1fജപ്പാൻ സമയംDജപ്പാൻ സ്റ്റാൻഡേർഡ" + + "് സമയം8ജപ്പാൻ ഡേലൈറ്റ് സമയംYപെട്രോപാവ്\u200cലോസ്ക് കംചാസ്കി സമയം~പെട്ര" + + "ോപാവ്\u200cലോസ്ക് കംചാസ്കി സ്റ്റാൻഡേർഡ് സമയംuപെട്രോപാവ്\u200cലോസ്ക് കം" + + "ചാസ്കി വേനൽക്കാല സമയംAകിഴക്കൻ കസാഖിസ്ഥാൻ സമയംGപടിഞ്ഞാറൻ കസാഖിസ്ഥാൻ സമയ" + + "ം\x1fകൊറിയൻ സമയംDകൊറിയൻ സ്റ്റാൻഡേർഡ് സമയം8കൊറിയൻ ഡേലൈറ്റ് സമയം\x1cകൊസ്" + + "ര സമയം@ക്രാസ്\u200cനോയാർസ്\u200cക് സമയംeക്രാസ്\u200cനോയാർസ്\u200cക് സ്" + + "റ്റാൻഡേർഡ് സമയംbക്രാസ്\u200cനോയാർസ്\u200cക് ഗ്രീഷ്\u200cമകാല സമയം+കിർഗ" + + "ിസ്ഥാൻ സമയം\x19ലങ്ക സമയം/ലൈൻ ദ്വീപുകൾ സമയം)ലോർഡ് ഹോവ് സമയംNലോർഡ് ഹോവ് " + + "സ്റ്റാൻഡേർഡ് സമയംBലോർഡ് ഹോവ് ഡേലൈറ്റ് സമയം\x16മകൌ സമയം;മകൌ സ്റ്റാൻഡേർഡ" + + "് സമയം2മകൌ വേനൽക്കാല സമയം5മക്വാറി ദ്വീപ് സമയം\x1cമഗാദൻ സമയംAമഗാദൻ സ്റ്" + + "റാൻഡേർഡ് സമയം>മഗാദൻ ഗ്രീഷ്\u200cമകാല സമയം\x1fമലേഷ്യ സമയം1മാലിദ്വീപുകൾ " + + "സമയം%മർക്കസസ് സമയം5മാർഷൽ ദ്വീപുകൾ സമയം(മൗറീഷ്യസ് സമയംMമൗറീഷ്യസ് സ്റ്റാ" + + "ൻഡേർഡ് സമയംJമൗറീഷ്യസ് ഗ്രീഷ്\u200cമകാല സമയം\x19മാസൺ സമയംYവടക്കുപടിഞ്ഞാ" + + "റൻ മെക്സിക്കൻ സമയം\x81വടക്കുപടിഞ്ഞാറൻ മെക്\u200cസിക്കൻ സ്റ്റാൻഡേർഡ് സമ" + + "യംrവടക്കുപടിഞ്ഞാറൻ മെക്സിക്കൻ ഡേലൈറ്റ് സമയം>മെക്സിക്കൻ പസഫിക് സമയംfമെക" + + "്\u200cസിക്കൻ പസഫിക് സ്റ്റാൻഡേർഡ് സമയംWമെക്സിക്കൻ പസഫിക് ഡേലൈറ്റ് സമയം" + + "&ഉലൻ ബറ്റർ സമയംKഉലൻ ബറ്റർ സ്റ്റാൻഡേർഡ് സമയംHഉലൻ ബറ്റർ ഗ്രീഷ്\u200cമകാല സ" + + "മയം\x1fമോസ്കോ സമയംDമോസ്കോ സ്റ്റാൻഡേർഡ് സമയംDമോസ്\u200cകോ ഗ്രീഷ്\u200cമ" + + "കാല സമയം%മ്യാൻമാർ സമയം\x19നൗറു സമയം\x22നേപ്പാൾ സമയം5ന്യൂ കാലിഡോണിയ സമയ" + + "ംZന്യൂ കാലിഡോണിയ സ്റ്റാൻഡേർഡ് സമയംWന്യൂ കാലിഡോണിയ ഗ്രീഷ്\u200cമകാല സമയ" + + "ം.ന്യൂസിലാൻഡ് സമയംSന്യൂസിലാൻഡ് സ്റ്റാൻഡേർഡ് സമയംGന്യൂസിലാൻഡ് ഡേലൈറ്റ് " + + "സമയം@ന്യൂഫൗണ്ട്\u200cലാന്റ് സമയംeന്യൂഫൗണ്ട്\u200cലാന്റ് സ്റ്റാൻഡേർഡ് സ" + + "മയംYന്യൂഫൗണ്ട്\u200cലാന്റ് ഡേലൈറ്റ് സമയം\x1fന്യൂയി സമയംAനോർഫാക്ക് ദ്വീ" + + "പുകൾ സമയം<ഫെർണാഡോ ഡി നൊറോൻഹ സമയംaഫെർണാഡോ ഡി നൊറോൻഹ സ്റ്റാൻഡേർഡ് സമയം^ഫ" + + "െർണാഡോ ഡി നൊറോൻഹ ഗ്രീഷ്\u200cമകാല സമയംQനോർത്ത് മറിയാനാ ദ്വീപുകൾ സമയം7ന" + + "ോവോസിബിർസ്\u200cക് സമയംYനോവോസിബിർസ്ക് സ്റ്റാൻഡേർഡ് സമയംYനോവോസിബിർസ്" + + "\u200cക് ഗ്രീഷ്\u200cമകാല സമയം(ഓംസ്\u200cക്ക് സമയംMഓംസ്\u200cക്ക് സ്റ്റാ" + + "ൻഡേർഡ് സമയംJഓംസ്\u200cക്ക് ഗ്രീഷ്\u200cമകാല സമയം.പാക്കിസ്ഥാൻ സമയംSപാക്" + + "കിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയംPപാക്കിസ്ഥാൻ ഗ്രീഷ്\u200cമകാല സമയം\x1cപലാവു സ" + + "മയം?പാപ്പുവ ന്യൂ ഗിനിയ സമയം\x22പരാഗ്വേ സമയംGപരാഗ്വേ സ്റ്റാൻഡേർഡ് സമയംD" + + "പരാഗ്വേ ഗ്രീഷ്\u200cമകാല സമയം\x19പെറു സമയം>പെറു സ്റ്റാൻഡേർഡ് സമയം;പെറു" + + " ഗ്രീഷ്\u200cമകാല സമയം(ഫിലിപ്പൈൻ സമയംMഫിലിപ്പൈൻ സ്റ്റാൻഡേർഡ് സമയംJഫിലിപ്" + + "പൈൻ ഗ്രീഷ്\u200cമകാല സമയംAഫിനിക്\u200cസ് ദ്വീപുകൾ സമയംRസെന്റ് പിയറി ആൻ" + + "ഡ് മിക്വലൻ സമയംwസെന്റ് പിയറി ആൻഡ് മിക്വലൻ സ്റ്റാൻഡേർഡ് സമയംkസെന്റ് പിയ" + + "റി ആൻഡ് മിക്വലൻ ഡേലൈറ്റ് സമയം(പിറ്റ്കേൻ സമയം%പൊനാപ്പ് സമയം4പ്യോംഗ്" + + "\u200cയാംഗ് സമയം%ഖിസിലോർഡ സമയംJഖിസിലോർഡ സ്റ്റാൻഡേർഡ് സമയംAഖിസിലോർഡ വേനൽക" + + "്കാല സമയം%റീയൂണിയൻ സമയം\x1cറോഥെറ സമയം\x1fസഖാലിൻ സമയംDസഖാലിൻ സ്റ്റാൻഡേർ" + + "ഡ് സമയംAസഖാലിൻ ഗ്രീഷ്\u200cമകാല സമയം\x19സമാര സമയം>സമാറ സ്റ്റാൻഡേർഡ് സമ" + + "യം5സമാറ വേനൽക്കാല സമയം\x19സമോവ സമയം>സമോവ സ്റ്റാൻഡേർഡ് സമയം>സമോവാ ഗ്രീഷ" + + "്\u200cമകാല സമയം\x22സീഷെൽസ് സമയംMസിംഗപ്പൂർ സ്റ്റാൻഡേർഡ് സമയം5സോളമൻ ദ്വ" + + "ീപുകൾ സമയം;ദക്ഷിണ ജോർജ്ജിയൻ സമയം(സുരിനെയിം സമയം\x19സയോവ സമയം\x1fതാഹിതി" + + " സമയം(തായ്\u200cപെയ് സമയംMതായ്\u200cപെയ് സ്റ്റാൻഡേർഡ് സമയംAതായ്\u200cപെയ" + + "് ഡേലൈറ്റ് സമയം4താജിക്കിസ്ഥാൻ സമയം%ടോക്കെലൂ സമയം\x19ടോംഗ സമയം>ടോംഗ സ്റ" + + "്റാൻഡേർഡ് സമയം;ടോംഗ ഗ്രീഷ്\u200cമകാല സമയം\x1fചൂക്ക് സമയം@തുർക്ക്\u200c" + + "മെനിസ്ഥാൻ സമയംeതുർക്ക്\u200cമെനിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയംbതുർക്ക്\u200cമ" + + "െനിസ്ഥാൻ ഗ്രീഷ്\u200cമകാല സമയം\x1fടുവാലു സമയം\x22ഉറുഗ്വേ സമയംGഉറുഗ്വേ " + + "സ്റ്റാൻഡേർഡ് സമയംDഉറുഗ്വേ ഗ്രീഷ്\u200cമകാല സമയം:ഉസ്\u200cബെക്കിസ്ഥാൻ സ" + + "മയം_ഉസ്\u200cബെക്കിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയം\\ഉസ്\u200cബെക്കിസ്ഥാൻ ഗ്രീഷ" + + "്\u200cമകാല സമയം\x22വന്വാതു സമയംGവന്വാതു സ്റ്റാൻഡേർഡ് സമയംDവന്വാതു ഗ്ര" + + "ീഷ്\u200cമകാല സമയം(വെനിസ്വേല സമയം=വ്ലാഡിവോസ്റ്റോക് സമയംbവ്ലാഡിവോസ്റ്റോ" + + "ക് സ്റ്റാൻഡേർഡ് സമയം_വ്ലാഡിവോസ്റ്റോക് ഗ്രീഷ്\u200cമകാല സമയം.വോൾഗോഗ്രാഡ" + + "് സമയംSവോൾഗോഗ്രാഡ് സ്റ്റാൻഡേർഡ് സമയംPവോൾഗോഗ്രാഡ് ഗ്രീഷ്\u200cമകാല സമയം" + + "+വോസ്റ്റോക് സമയം2വേക്ക് ദ്വീപ് സമയംKവാലിസ് ആന്റ് ഫ്യൂച്യുന സമയം+യാകസ്" + + "\u200cക്ക് സമയംPയാകസ്\u200cക്ക് സ്റ്റാൻഡേർഡ് സമയംMയാകസ്\u200cക്ക് ഗ്രീഷ്" + + "\u200cമകാല സമയം=യെക്കാറ്റരിൻബർഗ് സമയംbയെക്കാറ്റരിൻബർഗ് സ്റ്റാൻഡേർഡ് സമയം" + + "_യെക്കാറ്റരിൻബർഗ് ഗ്രീഷ്\u200cമകാല സമയം" + +var bucket71 string = "" + // Size: 15224 bytes + "#EEEE, y 'оны' MM 'сарын' dd\x1dy 'оны' MM 'сарын' dd\x06y MM d\x0b1-р с" + + "ар\x0b2-р сар\x0b3-р сар\x0b4-р сар\x0b5-р сар\x0b6-р сар\x0b7-р сар" + + "\x0b8-р сар\x0b9-р сар\x0c10-р сар\x0c11-р сар\x0c12-р сар\x19Нэгдүгээр " + + "сар\x1bХоёрдугаар сар\x1dГуравдугаар сар\x1dДөрөвдүгээр сар\x19Тавдугаа" + + "р сар\x1dЗургадугаар сар\x19Долдугаар сар\x1bНаймдугаар сар\x17Есдүгээр" + + " сар\x1bАравдугаар сар$Арван нэгдүгээр сар&Арван хоёрдугаар сар\x04Ня" + + "\x04Да\x04Мя\x04Лх\x04Пү\x04Ба\x04Бя\x06ням\x0aдаваа\x0cмягмар\x0cлхагва" + + "\x0aпүрэв\x0cбаасан\x0aбямба\x03У1\x03У2\x03У3\x03У4\x111-р улирал\x112-" + + "р улирал\x113-р улирал\x114-р улирал\x11шөнө дунд\x04ҮӨ\x0dүд дунд\x04Ү" + + "Х\x0aөглөө\x08өдөр\x08орой\x08шөнө\x04үө\x04үд\x04үх\x05ү.ө\x05ү.х\x22м" + + "анай эриний өмнөх\x06НТӨ\x17манай эриний\x04НТ\x08м.э.ө\x06м.э.\x06МЭӨ" + + "\x04МЭ\x22EEEE, y 'оны' MM 'сарын' d&y'оны' MMMM'сарын' d'өдөр'\x08эрин" + + "\x06жил\x17өнгөрсөн жил\x0dэнэ жил\x0fирэх жил\x1b{0} жилийн дараа\x19{0" + + "} жилийн өмнө\x0d+{0} жилд\x17-{0} жил.н өмнө\x0cулирал\x1dөнгөрсөн улир" + + "ал\x13энэ улирал\x1fдараагийн улирал\x1d{0} улирлын дараа\x1b{0} улирлы" + + "н өмнө\x06сар\x17өнгөрсөн сар\x0dэнэ сар\x0fирэх сар\x19{0} сарын дараа" + + "\x17{0} сарын өмнө\x0d+{0} сард\x15долоо хоног&өнгөрсөн долоо хоног\x1cэ" + + "нэ долоо хоног\x1eирэх долоо хоног\x19{0} 7х-ийн дараа\x17{0} 7х-ийн өм" + + "нө {0} дэх долоо хоног\x037х\x10уржигдар\x0eөчигдөр\x0eөнөөдөр\x0eмарга" + + "аш\x10нөгөөдөр\x1b{0} өдрийн дараа\x19{0} өдрийн өмнө\x0e{0} өдөрт\x0aг" + + "араг\x22өнгөрсөн ням гараг\x18энэ ням гараг\x1aирэх ням гараг\x17{0} ня" + + "м гарагт${0} ням гарагийн өмнө\x18өнгөрсөн ням.\x0eэнэ ням.\x10ирэх ням" + + ".\x0dэнэ ням&өнгөрсөн даваа гараг\x1cэнэ даваа гараг\x1eирэх даваа гараг" + + "\x1b{0} даваа гарагт({0} даваа гарагийн өмнө\x1bөнгөрсөн даваа\x11энэ да" + + "ваа\x13ирэх даваа(өнгөрсөн мягмар гараг\x1eэнэ мягмар гараг ирэх мягмар" + + " гараг\x1d{0} мягмар гарагт*{0} мягмар гарагийн өмнө\x1dөнгөрсөн мягмар" + + "\x13энэ мягмар\x15ирэх мягмар(өнгөрсөн лхагва гараг\x1eэнэ лхагва гараг " + + "ирэх лхагва гараг\x1d{0} лхагва гарагт*{0} лхагва гарагийн өмнө\x1dөнгө" + + "рсөн лхагва\x13энэ лхагва\x15ирэх лхагва\x15өнгөрсөн лх\x0bэнэ лх\x0dир" + + "эх лх&өнгөрсөн пүрэв гараг\x1cэнэ пүрэв гараг\x1eирэх пүрэв гараг\x1b{0" + + "} пүрэв гарагт({0} пүрэв гарагийн өмнө\x1bөнгөрсөн пүрэв\x11энэ пүрэв" + + "\x13ирэх пүрэв\x15өнгөрсөн пү\x0bэнэ пү\x0dирэх пү(өнгөрсөн баасан гараг" + + "\x1eэнэ баасан гараг ирэх баасан гараг\x1d{0} баасан гарагт*{0} баасан г" + + "арагийн өмнө&өнгөрсөн бямба гараг\x1cэнэ бямба гараг\x1eирэх бямба гара" + + "г\x1b{0} бямба гарагт({0} бямба гарагийн өмнө\x1bөнгөрсөн бямба\x11энэ " + + "бямба\x13ирэх бямба\x0dү.ө./ү.х.\x06цаг\x0dэнэ цаг\x1b{0} цагийн дараа" + + "\x19{0} цагийн өмнө\x03ц.\x12{0} ц. дараа\x10{0} ц. өмнө\x11энэ минут" + + "\x1d{0} минутын дараа\x1b{0} минутын өмнө\x16{0} мин. дараа\x14{0} мин. " + + "өмнө\x08одоо\x1f{0} секундын дараа\x1d{0} секундын өмнө\x16{0} сек. дар" + + "аа\x14{0} сек. өмнө\x13цагийн бүс\x13{0}-н цагаар\x08{0} (+1)\x08{0} (+" + + "0)1Олон Улсын Зохицуулсан Цаг\x22Британийн зуны цаг(Ирландын стандарт ца" + + "г\x1dАфганистаны цаг\x1eТөв Африкийн цаг Зүүн Африкийн цаг3Өмнөд Африки" + + "йн стандарт цаг$Баруун Африкийн цаг5Баруун Африкийн стандарт цаг-Баруун" + + " Африкийн зуны цаг\x17Аляскийн цаг(Аляскийн стандарт цаг Аляскийн зуны ц" + + "аг\x15Амазоны цаг&Амазоны стандарт цаг\x1eАмазоны зуны цаг\x0dТөв цаг" + + "\x1eТөв стандарт цаг\x16Төв зуны цаг\x1cЗүүн эргийн цаг-Зүүн эргийн стан" + + "дарт цаг%Зүүн эргийн зуны цаг\x11Уулын цаг\x22Уулын стандарт цаг\x1aУул" + + "ын зуны цаг Номхон далайн цаг1Номхон далайн стандарт цаг)Номхон далайн " + + "зуны цаг\x17Апиагийн цаг(Апиагийн стандарт цаг Апиагийн зуны цаг\x13Ара" + + "бын цаг$Арабын стандарт цаг\x1cАрабын зуны цаг\x19Аргентины цаг*Аргенти" + + "ны стандарт цаг\x22Аргентины зуны цаг&Баруун Аргентины цаг7Баруун Арген" + + "тины стандарт цаг/Баруун Аргентины зуны цаг\x17Арменийн цаг(Арменийн ст" + + "андарт цаг Арменийн зуны цаг\x17Атлантын цаг(Атлантын стандарт цаг Атла" + + "нтын зуны цаг\x22Төв Австралийн цаг3Төв Австралийн стандарт цаг+Төв Авс" + + "тралийн зуны цаг<Австралийн төв баруун эргийн цагMАвстралийн төв баруун" + + " эргийн стандарт цагEАвстралийн төв баруун эргийн зуны цаг$Зүүн Австрали" + + "йн цагBАвстралийн зүүн эргийн стандарт цаг:Австралийн зүүн эргийн зуны " + + "цаг(Баруун Австралийн цагFАвстралийн баруун эргийн стандарт цаг>Австрал" + + "ийн баруун эргийн зуны цаг\x1dАзербайжаны цаг.Азербайжаны стандарт цаг&" + + "Азербайжаны зуны цаг\x13Азорын цаг$Азорын стандарт цаг\x1cАзорын зуны ц" + + "аг\x1fБангладешийн цаг0Бангладешийн стандарт цаг(Бангладешийн зуны цаг" + + "\x13Бутаны цаг\x17Боливийн цаг\x19Бразилийн цаг*Бразилийн стандарт цаг" + + "\x22Бразилийн зуны цаг,Бруней Дарассаламын цаг\x1eКэйп Вердийн цаг/Кэйп " + + "Вердийн стандарт цаг'Кэйп Вердийн зуны цаг\x1dЧаморрогийн цаг\x15Чатемы" + + "н цаг&Чатемын стандарт цаг\x1eЧатемын зуны цаг\x13Чилийн цаг$Чилийн ста" + + "ндарт цаг\x1cЧилийн зуны цаг\x15Хятадын цаг&Хятадын стандарт цаг\x1eХят" + + "адын зуны цаг!Чойбалсангийн цаг2Чойбалсангийн стандарт цаг*Чойбалсангий" + + "н зуны цаг Крисмас арлын цаг\x1cКокос арлын цаг\x17Колумбын цаг(Колумбы" + + "н стандарт цаг Колумбын зуны цаг\x1aКүүк арлын цаг+Күүк арлын стандарт " + + "цаг.Күүк арлын хагас зуны цаг\x11Кубын цаг\x22Кубын стандарт цаг\x1aКуб" + + "ын зуны цаг\x17Дэвисийн цаг'Дюмон д’Юрвилийн цаг\x1eЗүүн Тиморын цаг Зү" + + "үн Исландын цаг1Зүүн Исландын стандарт цаг)Зүүн Исландын зуны цаг\x19Эк" + + "вадорын цаг\x1cТөв Европын цаг-Төв Европын стандарт цаг%Төв Европын зун" + + "ы цаг\x1eЗүүн Европын цаг/Зүүн Европын стандарт цаг'Зүүн Европын зуны ц" + + "аг)Алс дорнод Европын цаг\x22Баруун Европын цаг3Баруун Европын стандарт" + + " цаг+Баруун Европын зуны цаг.Фолькландын Арлуудын цаг?Фолькландын Арлууд" + + "ын стандарт цаг7Фолькландын Арлуудын зуны цаг\x17Фижигийн цаг(Фижигийн " + + "стандарт цаг Фижигийн зуны цаг*Францын Гияанагийн цаг8Францын Өмнөд ба " + + "Антарктик цаг\x1dГалапагосын цаг\x1bГамбьегийн цаг\x15Гүржийн цаг&Гүржи" + + "йн стандарт цаг\x1eГүржийн зуны цаг Жильбер арлын цаг(Гринвичийн үндсэн" + + " цаг$Зүүн Гринландын цаг5Зүүн Гринландын стандарт цаг-Зүүн Гринландын зу" + + "ны цаг(Баруун Гринландын цаг9Баруун Гринландын стандарт цаг1Баруун Грин" + + "ландын зуны цаг(Гольфийн стандарт цаг\x1bГуяанагийн цаг Хавай-Алеутын ц" + + "аг1Хавай-Алеутын стандарт цаг)Хавай-Алеутын зуны цаг\x1eХонг Конгийн ца" + + "г/Хонг Конгийн стандарт цаг'Хонг Конгийн зуны цаг\x13Ховдын цаг$Ховдын " + + "стандарт цаг\x1cХовдын зуны цаг\x1bЭнэтхэгийн цаг(Энэтхэгийн далайн цаг" + + "3Энэтхэг-Хятадын хойгийн цаг\x22Төв Индонезийн цаг$Зүүн Индонезийн цаг(Б" + + "аруун Индонезийн цаг\x11Ираны цаг\x22Ираны стандарт цаг\x1aИраны зуны ц" + + "аг\x19Эрхүүгийн цаг*Эрхүүгийн стандарт цаг\x22Эрхүүгийн зуны цаг\x19Изр" + + "аилийн цаг*Израилийн стандарт цаг\x22Израилийн зуны цаг\x11Японы цаг" + + "\x22Японы стандарт цаг\x1aЯпоны зуны цаг$Зүүн Казахстаны цаг(Баруун Каза" + + "хстаны цаг\x1bСолонгосын цаг,Солонгосын стандарт цаг$Солонгосын зуны ца" + + "г\x19Косрэгийн цаг!Красноярскийн цаг2Красноярскийн стандарт цаг*Красноя" + + "рскийн зуны цаг\x1dКыргызстаны цаг\x1aЛайн арлын цаг\x1eЛорд Хоугийн ца" + + "г/Лорд Хоугийн стандарт цаг'Лорд Хоугийн зуны цаг\x22Маккуори Арлын цаг" + + "\x17Магаданы цаг(Магаданы стандарт цаг Магаданы зуны цаг\x17Малайзын цаг" + + "\x1bМальдивийн цаг\x1bМаркесасын цаг$Маршаллын арлын цаг\x1bМавритусын ц" + + "аг,Мавритусын стандарт цаг$Мавритусын зуны цаг\x15Моусоны цаг/Баруун хо" + + "йд Мексикийн цаг@Баруун хойд Мексикийн стандарт цаг8Баруун хойд Мексики" + + "йн зуны цаг3Мексикийн номхон далайн цагDМексикийн номхон далайн стандар" + + "т цаг<Мексикийн номхон далайн зуны цаг!Улаанбаатарын цаг2Улаанбаатарын " + + "стандарт цаг*Улаанбаатарын зуны цаг\x1bМосквагийн цаг,Москвагийн станда" + + "рт цаг$Москвагийн зуны цаг\x19Мьянмарын цаг\x19Науругийн цаг\x13Балбын " + + "цаг$Шинэ Каледонийн цаг5Шинэ Каледонийн стандарт цаг-Шинэ Каледонийн зу" + + "ны цаг Шинэ Зеландын цаг1Шинэ Зеландын стандарт цаг)Шинэ Зеландын зуны " + + "цаг$Нью-Фаундлендын цаг5Нью-Фаундлендын стандарт цаг-Нью-Фаундлендын зу" + + "ны цаг\x17Ниуэгийн цаг Норфолк арлын цаг1Фернандо де Норонагийн цагBФер" + + "нандо де Норонагийн стандарт цаг:Фернандо де Норонагийн зуны цаг#Новоси" + + "бирскийн цаг4Новосибирскийн стандарт цаг,Новосибирскийн зуны цаг\x15Омс" + + "кийн цаг&Омскийн стандарт цаг\x1eОмскийн зуны цаг\x19Пакистаны цаг*Паки" + + "станы стандарт цаг\x22Пакистаны зуны цаг\x19Палаугийн цаг)Папуа Шинэ Гв" + + "инейн цаг\x19Парагвайн цаг*Парагвайн стандарт цаг\x22Парагвайн зуны цаг" + + "\x17Перугийн цаг(Перугийн стандарт цаг Перугийн зуны цаг\x19Филиппины ца" + + "г*Филиппины стандарт цаг\x22Филиппины зуны цаг\x1eФеникс арлын цаг.Сент" + + "-Пьер ба Микелоны цагCСент-Пьерре ба Микелоны стандарт цаг7Сент-Пьер ба " + + "Микелоны зуны цаг\x1bПиткернийн цаг\x1bПонапегийн цаг\x17Пхеньяны цаг" + + "\x17Реюньоны цаг\x1bРотерагийн цаг\x17Сахалины цаг(Сахалины стандарт цаг" + + " Сахалины зуны цаг\x19Самоагийн цаг*Самоагийн стандарт цаг\x22Самоагийн " + + "зуны цаг\x19Сейшелийн цаг\x1bСингапурын цаг(Соломоны арлуудын цаг Өмнөд" + + " Жоржийн цаг\x19Суринамын цаг\x17Сёвагийн цаг\x19Таитигийн цаг\x15Тайпей" + + "н цаг&Тайпейн стандарт цаг\x1eТайпейн зуны цаг\x1dТажикистаны цаг\x1dТо" + + "келаугийн цаг\x19Тонгагийн цаг*Тонгагийн стандарт цаг\x22Тонгагийн зуны" + + " цаг\x15Чүүкийн цаг!Туркменистаны цаг2Туркменистаны стандарт цаг*Туркмен" + + "истаны зуны цаг\x1bТувалугийн цаг\x17Уругвайн цаг(Уругвайн стандарт цаг" + + " Уругвайн зуны цаг\x1dУзбекистаны цаг.Узбекистаны стандарт цаг&Узбекиста" + + "ны зуны цаг\x1dВануатугийн цаг.Вануатугийн стандарт цаг&Вануатугийн зун" + + "ы цаг\x1dВенесуэлийн цаг#Владивостокийн цаг4Владивостокийн стандарт цаг" + + ",Владивостокийн зуны цаг\x1dВолгоградын цаг.Волгоградын стандарт цаг&Вол" + + "гоградын зуны цаг\x19Востокийн цаг\x1aВейк арлын цаг-Уоллис ба Футунаги" + + "йн цаг\x13Якутын цаг$Якутын стандарт цаг\x1cЯкутын зуны цаг%Екатеринбур" + + "гийн цаг6Екатеринбургийн стандарт цаг.Екатеринбургийн зуны цаг" + +var bucket72 string = "" + // Size: 24118 bytes + "\x17{1} {0} वाजता\x0cजाने\x12फेब्रु\x0fमार्च\x0fएप्रि\x06मे\x09जून\x0cजु" + + "लै\x06ऑग\x12सप्टें\x0fऑक्टो\x15नोव्हें\x0fडिसें\x06जा\x06फे\x06मा\x03ए" + + "\x06जू\x06जु\x03ऑ\x03स\x06नो\x06डि\x0fमार्च\x06मे\x09जून\x0cजुलै\x09ति१" + + "\x09ति२\x09ति३\x09ति४\x03१\x03२\x03३\x03४\x22प्रथम तिमाही(द्वितीय तिमाही" + + "\x22तृतीय तिमाही%चतुर्थ तिमाही\x1bमध्यरात्र\x18मध्यान्ह\x08म.उ.\x0cपहाट" + + "\x0cसकाळ\x0fदुपार\x1bसंध्याकाळ\x15सायंकाळ\x0fरात्र\x0bम.रा.\x06दु\x06सं" + + "\x03प\x06सा\x06रा!ईसवीसनपूर्व\x22ईसापूर्व युग\x12ईसवीसन\x1eख्रिस्तयुग" + + "\x11इ. स. पू.\x1bइ. स. पू. युग\x09इ. स.\x15ख्रि. यु.\x14{1} रोजी {0}\x1c" + + "मागील वर्ष\x13हे वर्ष\x1cपुढील वर्ष\x22{0} वर्षामध्ये%{0} वर्षांमध्ये%" + + "{0} वर्षापूर्वी({0} वर्षांपूर्वी\x11+{0} वर्ष\x11-{0} वर्ष\x22मागील तिमा" + + "ही\x19ही तिमाही\x22पुढील तिमाही%{0} तिमाहीमध्ये({0} तिमाहींमध्ये({0} त" + + "िमाहीपूर्वी+{0} तिमाहींपूर्वी\x0fमहिना\x1fमागील महिना\x16हा महिना\x1fप" + + "ुढील महिना({0} महिन्यामध्ये+{0} महिन्यांमध्ये+{0} महिन्यापूर्वी.{0} मह" + + "िन्यांपूर्वी\x0fआठवडा\x1fमागील आठवडा\x16हा आठवडा\x1fपुढील आठवडा({0} आठ" + + "वड्यामध्ये+{0} आठवड्यांमध्ये+{0} आठवड्यापूर्वी.{0} आठवड्यांपूर्वी\x1a{" + + "0} चा आठवडा\x0cदिवस\x09काल\x06आज\x0fउद्या\x22{0} दिवसामध्ये%{0} दिवसांमध" + + "्ये%{0} दिवसापूर्वी({0} दिवसांपूर्वी(आठवड्याचा दिवस\x22मागील रविवार" + + "\x19हा रविवार\x22पुढील रविवार,येत्या {0} रविवारी)येत्या {0} रविवार)मागील" + + " {0} रविवारी&मागील {0} रविवार\x1aमागील रवि.\x11हा रवि.\x1aपुढील रवि.;येत" + + "्या {0} रविवारामध्ये>येत्या {0} रविवारांमध्ये({0} रविवारपूर्वी.{0} रवि" + + "वारांपूर्वी\x13मागील र\x0aहा र\x13पुढील र\x22मागील सोमवार\x19हा सोमवार" + + "\x22पुढील सोमवार,येत्या {0} सोमवारी({0} सोमवारपूर्वी.{0} सोमवारांपूर्वी" + + "\x1aमागील सोम.\x11हा सोम.\x1aपुढील सोम.)येत्या {0} सोमवार+{0} सोमवारापूर" + + "्वी\x16मागील सो\x0dहा सो\x16पुढील सो;येत्या {0} सोमवारामध्ये>येत्या {0" + + "} सोमवारांमध्ये%मागील मंगळवार\x1cहा मंगळवार%पुढील मंगळवार/येत्या {0} मंग" + + "ळवारी,येत्या {0} मंगळवार+{0} मंगळवारपूर्वी1{0} मंगळवारांपूर्वी\x1dमागी" + + "ल मंगळ.\x14हा मंगळ.\x1dपुढील मंगळ.;येत्या {0} मंगळवारमध्येAयेत्या {0} " + + "मंगळवारांमध्ये.{0} मंगळवारापूर्वी\x16मागील मं\x0dहा मं\x16पुढील मं>येत" + + "्या {0} मंगळवारामध्ये\x22मागील बुधवार\x19हा बुधवार\x22पुढील बुधवार,येत" + + "्या {0} बुधवारी)येत्या {0} बुधवार({0} बुधवारपूर्वी.{0} बुधवारांपूर्वी" + + "\x1aमागील बुध.\x11हा बुध.\x1aपुढील बुध.\x16मागील बु\x0dहा बु\x16पुढील बु" + + "%मागील गुरुवार\x1cहा गुरुवार%पुढील गुरुवार/येत्या {0} गुरूवारी,येत्या {0" + + "} गुरूवार+{0} गुरूवारपूर्वी1{0} गुरूवारांपूर्वी\x1dमागील गुरू.\x14हा गुर" + + "ू.\x1dपुढील गुरू.\x16मागील गु\x0dहा गु\x16पुढील गु(मागील शुक्रवार\x1fह" + + "ा शुक्रवार(पुढील शुक्रवार2येत्या {0} शुक्रवारी/येत्या {0} शुक्रवार.{0}" + + " शुक्रवारपूर्वी4{0} शुक्रवारांपूर्वी मागील शुक्र.\x17हा शुक्र. पुढील शुक" + + "्र.\x16मागील शु\x0dहा शु\x16पुढील शु\x22मागील शनिवार\x19हा शनिवार\x22प" + + "ुढील शनिवार,येत्या {0} शनिवारी)येत्या {0} शनिवार({0} शनिवारपूर्वी.{0} " + + "शनिवारांपूर्वी\x1aमागील शनि.\x11हा शनि.\x1aपुढील शनि.)पुढील {0} शनिवार" + + "ी&पुढील {0} शनिवार)मागील {0} शनिवारी&मागील {0} शनिवार\x13मागील श\x0aहा" + + " श\x13पुढील श\x16[म.पू./म.उ.]\x09तास\x0fतासात\x1f{0} तासामध्ये\x22{0} ता" + + "सांमध्ये\x22{0} तासापूर्वी%{0} तासांपूर्वी\x0fमिनिट\x1cया मिनिटात%{0} " + + "मिनिटामध्ये({0} मिनिटांमध्ये({0} मिनिटापूर्वी+{0} मिनिटांपूर्वी!{0} मि" + + "नि. मध्ये${0} मिनि. पूर्वी\x0fसेकंद\x0fआत्ता%{0} सेकंदामध्ये({0} सेकंद" + + "ांमध्ये({0} सेकंदापूर्वी+{0} सेकंदांपूर्वी\x1b{0} से. मध्ये\x1e{0} से." + + " पूर्वी\x1fवेळ क्षेत्र\x0d{0} वेळ/{0} सूर्यप्रकाश वेळ {0} प्रमाण वेळ5ब्र" + + "िटिश उन्हाळी वेळ,आयरिश प्रमाण वेळ\x13एकर वेळ%एकर प्रमाणवेळ)ऐकर ग्रीष्म" + + " वेळ+अफगाणिस्तान वेळ/मध्\u200dय आफ्रिका वेळ/पूर्व आफ्रिका वेळEदक्षिण आफ्" + + "रिका प्रमाण वेळ2पश्चिम आफ्रिका वेळEपश्चिम आफ्रिका प्रमाण वेळHपश्चिम आफ" + + "्रिका उन्हाळी वेळ\x1fअलास्का वेळ2अलास्का प्रमाण वेळAअलास्का सूर्यप्रका" + + "श वेळ\x1fअल्माटी वेळ1अल्माटी प्रमाणवेळDअल्माटी ग्रीष्मकालीन वेळ\x1fअॅम" + + "ेझॉन वेळ5अ\u200dॅमेझॉन प्रमाण वेळ8अ\u200dॅमेझॉन उन्हाळी वेळ\x22केंद्री" + + "य वेळ5केंद्रीय प्रमाण वेळDकेंद्रीय सूर्यप्रकाश वेळ%पौर्वात्य वेळ8पौर्व" + + "ात्य प्रमाण वेळGपौर्वात्य सूर्यप्रकाश वेळ\x1fपर्वतीय वेळ2पर्वतीय प्रमा" + + "ण वेळAपर्वतीय सूर्यप्रकाश वेळ\x1fपॅसिफिक वेळ2पॅसिफिक प्रमाण वेळAपॅसिफि" + + "क सूर्यप्रकाश वेळ\x1fएनाडीयर वेळ.अनादीर प्रमाणवेळAअनादीर ग्रीष्मकालीन " + + "वेळ\x19एपिया वेळ,एपिया प्रमाण वेळ;एपिया सूर्यप्रकाश वेळ\x22अ\u200dॅक्त" + + "ाउ वेळ4अ\u200dॅक्ताउ प्रमाणवेळGअ\u200dॅक्ताउ ग्रीष्मकालीन वेळ%अ\u200dॅ" + + "क्टोबे वेळ7अ\u200dॅक्टोबे प्रमाणवेळJअ\u200dॅक्टोबे ग्रीष्मकालीन वेळ" + + "\x1fअरेबियन वेळ2अरेबियन प्रमाण वेळAअरेबियन सूर्यप्रकाश वेळ(अर्जेंटिना वे" + + "ळ;अर्जेंटिना प्रमाण वेळ>अर्जेंटिना उन्हाळी वेळ>पश्चिमी अर्जेंटिना वेळQ" + + "पश्चिमी अर्जेंटिना प्रमाण वेळTपश्चिमी अर्जेंटिना उन्हाळी वेळ%आर्मेनिया" + + " वेळ8आर्मेनिया प्रमाण वेळ;आर्मेनिया उन्हाळी वेळ\x22अटलांटिक वेळ5अटलांटिक" + + " प्रमाण वेळDअटलांटिक सूर्यप्रकाश वेळ8मध्य ऑस्ट्रेलिया वेळKऑस्ट्रेलियन मध" + + "्य प्रमाण वेळZऑस्ट्रेलियन मध्य सूर्यप्रकाश वेळKऑस्ट्रेलियन मध्य-पश्चिम" + + " वेळ^ऑस्ट्रेलियन मध्य-पश्चिम प्रमाण वेळmऑस्ट्रेलियन मध्य-पश्चिम सूर्यप्र" + + "काश वेळ;पूर्व ऑस्ट्रेलिया वेळNऑस्ट्रेलियन पूर्व प्रमाण वेळ]ऑस्ट्रेलियन" + + " पूर्व सूर्यप्रकाश वेळ>पश्चिम ऑस्ट्रेलिया वेळQऑस्ट्रेलियन पश्चिम प्रमाण " + + "वेळ`ऑस्ट्रेलियन पश्चिम सूर्यप्रकाश वेळ\x22अझरबैजान वेळ5अझरबैजान प्रमाण" + + " वेळ8अझरबैजान उन्हाळी वेळ\x22अ\u200dॅझोरेस वेळ5अ\u200dॅझोरेस प्रमाण वेळ8" + + "अ\u200dॅझोरेस उन्हाळी वेळ%बांगलादेश वेळ8बांगलादेश प्रमाण वेळ;बांगलादेश" + + " उन्हाळी वेळ\x19भूतान वेळ(बोलिव्हिया वेळ(ब्राझिलिया वेळ;ब्राझिलिया प्रमा" + + "ण वेळ>ब्राझिलिया उन्हाळी वेळ8ब्रुनेई दारूसलाम वेळ)केप व्हर्डे वेळ<केप " + + "व्हर्डे प्रमाण वेळ?केप व्हर्डे उन्हाळी वेळ/चामोरो प्रमाण वेळ\x16चॅथम व" + + "ेळ)चॅथम प्रमाण वेळ8चॅथम सूर्यप्रकाश वेळ\x16चिली वेळ)चिली प्रमाण वेळ,चि" + + "ली उन्हाळी वेळ\x16चीनी वेळ)चीनी प्रमाण वेळ8चीनी सूर्यप्रकाश वेळ%चोईबाल" + + "्सन वेळ8चोईबाल्सन प्रमाण वेळ;चोईबाल्सन उन्हाळी वेळ)ख्रिसमस बेट वेळ&कॉक" + + "ोस बेटे वेळ\x22कोलंबिया वेळ5कोलंबिया प्रमाण वेळ8कोलंबिया उन्हाळी वेळ क" + + "ुक बेटे वेळ3कुक बेटे प्रमाण वेळCकुक बेटे अर्ध उन्हाळी वेळ\x1cक्यूबा वे" + + "ळ/क्यूबा प्रमाण वेळ>क्यूबा सूर्यप्रकाश वेळ\x1fडेव्हिस वेळAड्युमॉन्ट-ड्" + + "युर्विल वेळ)पूर्व तिमोर वेळ#इस्टर बेट वेळ6इस्टर बेट प्रमाण वेळ9इस्टर ब" + + "ेट उन्हाळी वेळ\x22इक्वेडोर वेळ2मध्\u200dय युरोपियन वेळEमध्\u200dय युरो" + + "पियन प्रमाण वेळHमध्\u200dय युरोपियन उन्हाळी वेळ2पूर्व युरोपियन वेळEपूर" + + "्व युरोपियन प्रमाण वेळHपूर्व युरोपियन उन्हाळी वेळKअग्र-पौर्वात्य यूरोप" + + "ीयन वेळ5पश्चिम युरोपियन वेळHपश्चिम युरोपियन प्रमाण वेळKपश्चिम युरोपियन" + + " उन्हाळी वेळ)फॉकलंड बेटे वेळ<फॉकलंड बेटे प्रमाण वेळ?फॉकलंड बेटे उन्हाळी " + + "वेळ\x16फिजी वेळ)फिजी प्रमाण वेळ,फिजी उन्हाळी वेळ,फ्रेंच गयाना वेळ[फ्रे" + + "ंच दक्षिण आणि अंटार्क्टिक वेळ%गॅलापागोस वेळ\x22गॅम्बियर वेळ\x22जॉर्जिय" + + "ा वेळ5जॉर्जिया प्रमाण वेळ8जॉर्जिया उन्हाळी वेळ/गिल्बर्ट बेटे वेळ2ग्रीन" + + "िच प्रमाण वेळ2पूर्व ग्रीनलँड वेळEपूर्व ग्रीनलँड प्रमाण वेळHपूर्व ग्रीन" + + "लँड उन्हाळी वेळ5पश्चिम ग्रीनलँड वेळHपश्चिम ग्रीनलँड प्रमाण वेळKपश्चिम " + + "ग्रीनलँड उन्हाळी वेळ(गुआम प्रमाणवेळ)खाडी प्रमाण वेळ\x19गयाना वेळ&हवाई-" + + "अलूशन वेळ9हवाई-अलूशन प्रमाण वेळHहवाई-अलूशन सूर्यप्रकाश वेळ#हाँग काँग व" + + "ेळ6हाँग काँग प्रमाण वेळ9हाँग काँग उन्हाळी वेळ\x1fहोव्ह्ड वेळ2होव्ह्ड प" + + "्रमाण वेळ5होव्ह्ड उन्हाळी वेळ/भारतीय प्रमाण वेळ+हिंदमहासागर वेळ%इंडोचा" + + "यना वेळ8मध्\u200dय इंडोनेशिया वेळDपौर्वात्य इंडोनेशिया वेळ>पश्चिमी इंड" + + "ोनेशिया वेळ\x16इराण वेळ)इराण प्रमाण वेळ8इराण सूर्यप्रकाश वेळ%इर्कुत्सक" + + " वेळ8इर्कुत्सक प्रमाण वेळ;इर्कुत्सक उन्हाळी वेळ\x15इस्रायल2इस्रायल प्रमा" + + "ण वेळAइस्रायल सूर्यप्रकाश वेळ\x16जपान वेळ)जपान प्रमाण वेळ8जपान सूर्यप्" + + "रकाश वेळ]पेट्रोपाव्हलोस्क- कामचाट्स्की वेळoपेट्रोपाव्हलोस्क- कामचाट्स्" + + "की प्रमाणवेळ\x82पेट्रोपाव्हलोस्क- कामचाट्स्की ग्रीष्मकालीन वेळ5पूर्व क" + + "झाकस्तान वेळ8पश्चिम कझाकस्तान वेळ\x1cकोरियन वेळ/कोरियन प्रमाण वेळ>कोरि" + + "यन सूर्यप्रकाश वेळ\x1fकोस्राई वेळ7क्रास्नोयार्स्क वेळJक्रास्नोयार्स्क " + + "प्रमाण वेळMक्रास्नोयार्क्स उन्हाळी वेळ(किरगिस्तान वेळ\x16लंका वेळ#लाइन" + + " बेटे वेळ&लॉर्ड होवे वेळ9लॉर्ड होवे प्रमाण वेळHलॉर्ड होवे सूर्यप्रकाश वे" + + "ळ\x16मकाऊ वेळ(मकाऊ प्रमाणवेळ;मकाऊ ग्रीष्मकालीन वेळ,मॅक्वेरी बेट वेळ" + + "\x1cमॅगाडन वेळ/मॅगाडन प्रमाण वेळ2मॅगाडन उन्हाळी वेळ\x1fमलेशिया वेळ\x1cमा" + + "लदिव वेळ+मार्क्वेसास वेळ)मार्शल बेटे वेळ\x1cमॉरीशस वेळ/मॉरीशस प्रमाण व" + + "ेळ2मॉरीशस उन्हाळी वेळ\x16मॉसन वेळ5वायव्य मेक्सिको वेळHवायव्य मेक्सिको " + + "प्रमाण वेळWवायव्य मेक्सिको सूर्यप्रकाश वेळ8मेक्सिको पॅसिफिक वेळKमेक्सि" + + "को पॅसिफिक प्रमाण वेळZमेक्सिको पॅसिफिक सूर्यप्रकाश वेळ&उलान बाटोर वेळ9" + + "उलान बाटोर प्रमाण वेळ<उलान बाटोर उन्हाळी वेळ\x1cमॉस्को वेळ/मॉस्को प्रम" + + "ाण वेळ2मॉस्को उन्हाळी वेळ\x22म्यानमार वेळ\x16नउरु वेळ\x19नेपाळ वेळ5न्य" + + "ू कॅलेडोनिया वेळHन्यू कॅलेडोनिया प्रमाण वेळKन्यू कॅलेडोनिया उन्हाळी वे" + + "ळ%न्यूझीलंड वेळ8न्यूझीलंड प्रमाण वेळGन्यूझीलंड सूर्यप्रकाश वेळ/न्यू फा" + + "उंडलंड वेळBन्यू फाउंडलंड प्रमाण वेळQन्यू फाउंडलंड सूर्यप्रकाश वेळ\x19न" + + "्युए वेळ&नॉरफोक बेट वेळBफर्नांडो दी नोरोन्हा वेळUफर्नांडो दी नोरोन्हा " + + "प्रमाण वेळXफर्नांडो दी नोरोन्हा उन्हाळी वेळ6उत्तर मरिना बेटे वेळ1नोवोस" + + "िबिर्स्क वेळDनोवोसिबिर्स्क प्रमाण वेळGनोवोसिबिर्स्क उन्हाळी वेळ\x1cओम्" + + "स्क वेळ/ओम्स्क प्रमाण वेळ2ओम्स्क उन्हाळी वेळ%पाकिस्तान वेळ8पाकिस्तान प" + + "्रमाण वेळ;पाकिस्तान उन्हाळी वेळ\x16पलाऊ वेळ3पापुआ न्यू गिनी वेळ\x22पॅर" + + "ाग्वे वेळ5पॅराग्वे प्रमाण वेळ8पॅराग्वे उन्हाळी वेळ\x16पेरु वेळ)पेरु प्" + + "रमाण वेळ,पेरु उन्हाळी वेळ\x22फिलिपाइन वेळ5फिलिपाइन प्रमाण वेळ8फिलिपाइन" + + " उन्हाळी वेळ/\u200dफोनिक्स बेटे वेळIसेंट पियर आणि मिक्वेलोन वेळ\\सेंट पि" + + "यर आणि मिक्वेलोन प्रमाण वेळkसेंट पियर आणि मिक्वेलोन सूर्यप्रकाश वेळ" + + "\x22पिटकैर्न वेळ\x1cपोनॅपे वेळ(प्योंगयंँग वेळ+क़िझीलोर्डा वेळ=क़िझीलोर्ड" + + "ा प्रमाणवेळPक़िझीलोर्डा ग्रीष्मकालीन वेळ\x22रियुनियन वेळ\x1cरोथेरा वेळ" + + "\x19सखलिन वेळ,सखलिन प्रमाण वेळ/सखलिन उन्हाळी वेळ\x19समारा वेळ+सामरा प्रम" + + "ाणवेळ>सामरा ग्रीष्मकालीन वेळ\x19सामोआ वेळ,सामोआ प्रमाण वेळ;सामोआ सूर्य" + + "प्रकाश वेळ\x1fसेशेल्स वेळ5सिंगापूर प्रमाण वेळ,सोलोमॉन बेटे वेळ5दक्षिण " + + "जॉर्जिया वेळ\x1fसुरिनाम वेळ\x1cस्योवा वेळ\x1cताहिती वेळ\x19तैपेई वेळ,त" + + "ैपेई प्रमाण वेळ;तैपेई सूर्यप्रकाश वेळ+ताजिकिस्तान वेळ\x1fटोकेलाऊ वेळ" + + "\x19टोंगा वेळ,टोंगा प्रमाण वेळ/टोंगा उन्हाळी वेळ\x13चूक वेळ4तुर्कमेनिस्त" + + "ान वेळGतुर्कमेनिस्तान प्रमाण वेळJतुर्कमेनिस्तान उन्हाळी वेळ\x1cतुवालू " + + "वेळ\x1fउरुग्वे वेळ2उरुग्वे प्रमाण वेळ5उरुग्वे उन्हाळी वेळ+उझबेकिस्तान " + + "वेळ>उझबेकिस्तान प्रमाण वेळAउझबेकिस्तान उन्हाळी वेळ\x1fवानुआतु वेळ2वानु" + + "आतु प्रमाण वेळ5वानुआतु उन्हाळी वेळ+व्हेनेझुएला वेळ1व्लादिवोस्तोक वेळDव" + + "्लादिवोस्तोक प्रमाण वेळGव्लादिवोस्तोक उन्हाळी वेळ1व्होल्गोग्राड वेळDव्" + + "होल्गोग्राड प्रमाण वेळGव्होल्गोग्राड उन्हाळी वेळ%व्होस्टॉक वेळ\x1dवेक " + + "बेट वेळ6वॉलिस आणि फुटुना वेळ\x22याकुत्सक वेळ5याकुत्सक प्रमाण वेळ8याकुत" + + "्सक उन्हाळी वेळ+येकतरिनबर्ग वेळ>येकतरिनबर्ग प्रमाण वेळAयेकतरिनबर्ग उन्" + + "हाळी वेळ\x03५\x03६\x03७\x03८\x03९\x06१०\x06११\x06१२" + +var bucket73 string = "" + // Size: 8196 bytes + "\x02Jn\x02Fb\x02Mc\x02Ap\x02Me\x02Ju\x02Jl\x02Og\x02Sp\x02Ok\x02Nv\x02Ds" + + "\x02Fe\x03Ahd\x03Isn\x03Sel\x03Rab\x03Kha\x03Jum\x03Sab\x02Ah\x02Is\x02S" + + "e\x02Ra\x02Kh\x02Sa\x04Ahad\x05Isnin\x06Selasa\x04Rabu\x06Khamis\x06Juma" + + "at\x05Sabtu\x0cSuku pertama\x09Suku Ke-2\x09Suku Ke-3\x09Suku Ke-4\x02PG" + + "\x03PTG\x06petang\x04S.M.\x02TM\x0edalam {0} saat\x0e{0} tahun lalu\x03t" + + "hn\x09thn lepas\x07thn ini\x09thn depan\x0ddalam {0} thn\x0aSuku Tahun" + + "\x0fsuku tahun lalu\x0esuku tahun ini\x15suku tahun seterusnya\x14dalam " + + "{0} suku tahun\x13{0} suku tahun lalu\x04suku\x0asuku lepas\x08suku ini" + + "\x0fsuku seterusnya\x12dlm {0} suku tahun\x0fdalam {0} bulan\x0e{0} bula" + + "n lalu\x03bln\x08bln lalu\x07bln ini\x09bln depan\x10dalam {0} minggu" + + "\x0f{0} minggu lalu\x03mgu\x09mng lepas\x07mng ini\x09mng depan\x0bdlm {" + + "0} mgu\x0c{0} mgu lalu\x08kelmarin\x07semalam\x08hari ini\x04esok\x04lus" + + "a\x0edalam {0} hari\x0d{0} hari lalu\x04hari\x05semlm\x0cdlm {0} hari" + + "\x11Hari dalam Minggu\x09Ahad lalu\x08Ahad ini\x0aAhad depan\x0dpada {0}" + + " Ahad\x12pada {0} Ahad lalu\x08Aha lalu\x07Aha ini\x09Aha depan\x08Ahd l" + + "alu\x07Ahd ini\x09Ahd depan\x0aIsnin lalu\x09Isnin ini\x0bIsnin depan" + + "\x0epada {0} Isnin\x13pada {0} Isnin lalu\x08Isn lalu\x07Isn ini\x09Isn " + + "depan\x0fpada {0} Selasa\x14pada {0} Selasa lalu\x08Sel lalu\x07Sel ini" + + "\x09Sel depan\x0dpada {0} Rabu\x12pada {0} Rabu lalu\x08Rab lalu\x07Rab " + + "ini\x09Rab depan\x0bKhamis lalu\x0aKhamis ini\x0cKhamis depan\x0fpada {0" + + "} Khamis\x14pada {0} Khamis lalu\x08Kha lalu\x07Kha ini\x09Kha depan\x0b" + + "Jumaat lalu\x0aJumaat ini\x0cJumaat depan\x0fpada {0} Jumaat\x14pada {0}" + + " Jumaat lalu\x08Jum lalu\x07Jum ini\x09Jum depan\x0epada {0} Sabtu\x13pa" + + "da {0} Sabtu lalu\x08Sab lalu\x07Sab ini\x09Sab depan\x06PG/PTG\x0ddalam" + + " {0} jam\x0bdlm {0} jam\x0epada minit ini\x0fdalam {0} minit\x0e{0} mini" + + "t lalu\x0bdlm {0} min\x0c{0} min lalu\x0d{0} saat lalu\x0cdlm {0} saat" + + "\x09Zon Waktu\x17Waktu Universal Selaras\x19Waktu Musim Panas British" + + "\x19Waktu Musim Panas Ireland\x11Waktu Afghanistan\x13Waktu Afrika Tenga" + + "h\x12Waktu Afrika Timur\x1bWaktu Piawai Afrika Selatan\x19Waktu Piawai A" + + "frika Barat\x13Waktu Piawai Alaska\x13Waktu Piawai Amazon\x12Waktu Piawa" + + "i Pusat\x12Waktu Piawai Timur\x18Waktu Piawai Pergunungan\x14Waktu Piawa" + + "i Pasifik\x13Waktu Piawai Anadyr\x13Waktu Standard Apia\x11Waktu Piawai " + + "Arab\x16Waktu Piawai Argentina\x1cWaktu Piawai Argentina Barat\x14Waktu " + + "Piawai Armenia\x15Waktu Piawai Atlantik\x1dWaktu Piawai Australia Tengah" + + "#Waktu Piawai Barat Tengah Australia\x1cWaktu Piawai Timur Australia\x1c" + + "Waktu Piawai Australia Barat\x17Waktu Piawai Azerbaijan\x13Waktu Piawai " + + "Azores\x17Waktu Piawai Bangladesh\x0cWaktu Bhutan\x0dWaktu Bolivia\x15Wa" + + "ktu Piawai Brasilia\x17Waktu Brunei Darussalam\x1aWaktu Piawai Tanjung V" + + "erde\x15Waktu Piawai Chamorro\x14Waktu Piawai Chatham\x12Waktu Piawai Ch" + + "ile\x12Waktu Piawai China\x17Waktu Piawai Choibalsan\x15Waktu Pulau Chri" + + "stmas\x15Waktu Kepulauan Cocos\x15Waktu Piawai Colombia\x1bWaktu Piawai " + + "Kepulauan Cook\x11Waktu Piawai Cuba\x0bWaktu Davis\x18Waktu Dumont-d’Urv" + + "ille\x11Waktu Timor Timur\x19Waktu Piawai Pulau Easter\x0dWaktu Ecuador" + + "\x1aWaktu Piawai Eropah Tengah\x19Waktu Piawai Eropah Timur\x18Waktu Ero" + + "pah ceruk timur\x19Waktu Piawai Eropah Barat\x1fWaktu Piawai Kepulauan F" + + "alkland\x11Waktu Piawai Fiji\x15Waktu Guyana Perancis$Waktu Perancis Sel" + + "atan dan Antartika\x0fWaktu Galapagos\x0dWaktu Gambier\x14Waktu Piawai G" + + "eorgia\x17Waktu Kepulauan Gilbert\x13Waktu Min Greenwich\x1cWaktu Piawai" + + " Greenland Timur\x1cWaktu Piawai Greenland Barat\x0bWaktu Teluk\x0cWaktu" + + " Guyana\x1cWaktu Piawai Hawaii-Aleutian\x16Waktu Piawai Hong Kong\x11Wak" + + "tu Piawai Hovd\x12Waktu Piawai India\x12Waktu Lautan Hindi\x0fWaktu Indo" + + "china\x16Waktu Indonesia Tengah\x15Waktu Indonesia Timur\x15Waktu Indone" + + "sia Barat\x11Waktu Piawai Iran\x14Waktu Piawai Irkutsk\x13Waktu Piawai I" + + "srael\x12Waktu Piawai Jepun%Waktu Piawai Petropavlovsk-Kamchatski\x16Wak" + + "tu Kazakhstan Timur\x16Waktu Kazakhstan Barat\x12Waktu Piawai Korea\x0cW" + + "aktu Kosrae\x18Waktu Piawai Krasnoyarsk\x0fWaktu Kyrgystan\x14Waktu Kepu" + + "lauan Line\x16Waktu Piawai Lord Howe\x15Waktu Pulau Macquarie\x14Waktu P" + + "iawai Magadan\x0eWaktu Malaysia\x0eWaktu Maldives\x0fWaktu Marquesas\x18" + + "Waktu Kepulauan Marshall\x16Waktu Piawai Mauritius\x0cWaktu Mawson\x1eWa" + + "ktu Piawai Barat Laut Mexico\x1bWaktu Piawai Pasifik Mexico\x17Waktu Pia" + + "wai Ulan Bator\x13Waktu Piawai Moscow\x0dWaktu Myanmar\x0bWaktu Nauru" + + "\x0bWaktu Nepal\x1aWaktu Piawai New Caledonia\x18Waktu Piawai New Zealan" + + "d\x19Waktu Piawai Newfoundland\x0aWaktu Niue\x17Waktu Kepulauan Norfolk " + + "Waktu Piawai Fernando de Noronha\x18Waktu Piawai Novosibirsk\x11Waktu Pi" + + "awai Omsk\x15Waktu Piawai Pakistan\x0bWaktu Palau\x16Waktu Papua New Gui" + + "nea\x15Waktu Piawai Paraguay\x11Waktu Piawai Peru\x15Waktu Piawai Filipi" + + "na\x17Waktu Kepulauan Phoenix&Waktu Piawai Saint Pierre dan Miquelon\x0e" + + "Waktu Pitcairn\x0cWaktu Ponape\x0fWaktu Pyongyang\x0dWaktu Reunion\x0dWa" + + "ktu Rothera\x15Waktu Piawai Sakhalin\x13Waktu Piawai Samara\x12Waktu Pia" + + "wai Samoa\x10Waktu Seychelles\x16Waktu Piawai Singapura\x17Waktu Kepulau" + + "an Solomon\x15Waktu Georgia Selatan\x0eWaktu Suriname\x0bWaktu Syowa\x0c" + + "Waktu Tahiti\x13Waktu Piawai Taipei\x10Waktu Tajikistan\x0dWaktu Tokelau" + + "\x12Waktu Piawai Tonga\x0bWaktu Chuuk\x19Waktu Piawai Turkmenistan\x0cWa" + + "ktu Tuvalu\x14Waktu Piawai Uruguay\x17Waktu Piawai Uzbekistan\x14Waktu P" + + "iawai Vanuatu\x0fWaktu Venezuela\x18Waktu Piawai Vladivostok\x16Waktu Pi" + + "awai Volgograd\x0cWaktu Vostok\x10Waktu Pulau Wake\x17Waktu Wallis dan F" + + "utuna\x14Waktu Piawai Yakutsk\x1aWaktu Piawai Yekaterinburg\x18EEEE, d '" + + "ta'’ MMMM y G\x12d 'ta'’ MMMM y G\x06Jannar\x04Frar\x05Marzu\x05April" + + "\x05Mejju\x06Ġunju\x05Lulju\x07Awwissu\x09Settembru\x07Ottubru\x08Novemb" + + "ru\x09Diċembru\x02Fr\x02Mz\x02Mj\x03Ġn\x02Lj\x02Aw\x02St\x02Ob\x03Dċ\x04" + + "Ħad\x03Tne\x03Tli\x03Erb\x04Ħam\x04Ġim\x03Sib\x03Ħd\x01T\x02Tl\x02Er" + + "\x03Ħm\x03Ġm\x02Sb\x08Il-Ħadd\x08It-Tnejn\x09It-Tlieta\x09L-Erbgħa\x09Il" + + "-Ħamis\x0bIl-Ġimgħa\x07Is-Sibt\x02Tn\x091el kwart\x092ni kwart\x093et kw" + + "art\x0c4ba’ kwart\x0cQabel Kristu\x0bWara Kristu\x02QK\x03QEK\x02WK\x02E" + + "K\x16EEEE, d 'ta'’ MMMM y\x10d 'ta'’ MMMM y\x05Epoka\x04Sena\x14Is-sena " + + "li għaddiet\x0bdin is-sena\x11Is-sena d-dieħla\x0c{0} sena ilu\x0c{0} sn" + + "in ilu\x05Xahar\x13Ix-xahar li għadda\x0cDan ix-xahar\x13Ix-xahar id-die" + + "ħel\x08Ġimgħa\x18Il-ġimgħa li għaddiet\x0fDin il-ġimgħa\x15Il-ġimgħa d-" + + "dieħla\x09Ilbieraħ\x05Illum\x06Għada\x10Jum tal-Ġimgħa\x13Il-Ħadd li għa" + + "dda\x0cDan il-Ħadd\x10Il-Ħadd li ġej\x13It-Tnejn li għadda\x0cDan It-Tne" + + "jn\x10It-Tnejn li ġej\x05QN/WN\x07Siegħa\x06Minuta\x07Sekonda\x05Żona" + + "\x0eĦin ta’ {0}\x08{0} (+1)\x11{0} Ħin Standard\x16Ħin Ċentrali Ewropew" + + "\x1fĦin Ċentrali Ewropew Standard\x1fĦin Ċentrali Ewropew tas-Sajf\x03FL" + + "O\x03CLA\x03CKI\x03FMF\x03MAD\x03MBI\x03MLI\x03MAM\x03FDE\x03FMU\x03FGW" + + "\x03FYU\x08Fĩi Loo\x0dCokcwaklaŋne\x0aCokcwaklii\x0bFĩi Marfoo\x12Madǝǝu" + + "utǝbijaŋ\x12Mamǝŋgwãafahbii\x0fMamǝŋgwãalii\x09Madǝmbii\x0dFĩi Dǝɓlii" + + "\x0cFĩi Mundaŋ\x0cFĩi Gwahlle\x09Fĩi Yuru\x03Cya\x03Cla\x03Czi\x03Cko" + + "\x03Cka\x03Cga\x03Cze\x0bCom’yakke\x0aComlaaɗii\x0bComzyiiɗii\x08Comkoll" + + "e\x0eComkaldǝɓlii\x09Comgaisuu\x0bComzyeɓsuu\x1cTai fĩi sai ma tǝn kee z" + + "ah Tai fĩi sai zah lǝn gwa ma kee Tai fĩi sai zah lǝn sai ma kee!Tai fĩi" + + " sai ma coo kee zah ‘na\x05comme\x05lilli\x0dKǝPel Kristu\x0aPel Kristu" + + "\x0cSyii ma tãa\x04Syii\x04Fĩi\x04Luma\x11Zah’nane/ Comme\x06Tǝsoo\x0bTǝ" + + "’nahko\x0aTǝ’nane\x0cKǝsyil luma\x09Cok comme\x13Cok comme ma laŋne" + + "\x1aCok comme ma laŋ tǝ biŋ\x0eWaŋ cok comme\x10EEEE G dd MMMM y\x0bG dd" + + " MMMM y\x0eGGGGG dd-MM-yy\x09ဇန်\x06ဖေ\x09မတ်\x03ဧ\x06မေ\x0cဇွန်\x06ဇူ" + + "\x03ဩ\x09စက်\x0fအောက်\x09နို\x06ဒီ\x03ဇ\x03ဖ\x03မ\x03စ\x03အ\x03န\x03ဒ" + + "\x18ဇန်နဝါရီ\x1eဖေဖော်ဝါရီ\x0cဧပြီ\x15ဇူလိုင်\x0fဩဂုတ်\x18စက်တင်ဘာ\x1eအေ" + + "ာက်တိုဘာ\x18နိုဝင်ဘာ\x15ဒီဇင်ဘာ\x1bတနင်္ဂနွေ\x15တနင်္လာ\x12အင်္ဂါ\x18ဗ" + + "ုဒ္ဓဟူး\x18ကြာသပတေး\x12သောကြာ\x09စနေ\x03တ\x03ဗ\x03က\x03သ\x22ပထမ သုံးလပ" + + "တ်(ဒုတိယ သုံးလပတ်%တတိယ သုံးလပတ်+စတုတ္ထ သုံးလပတ်\x03ပ\x06ဒု!သန်းခေါင်ယံ" + + "\x0fနံနက်\x1bမွန်းတည့်\x09ညနေ\x12နေ့လယ်\x03ည:ခရစ်တော် မပေါ်မီနှစ်>သာမန်က" + + "ာလ မတိုင်မီ ခေတ်\x18ခရစ်နှစ်\x18သာမန်ကာလ\x0cဘီစီ\x15ဘီစီအီး\x0cအေဒီ" + + "\x0fစီအီး\x0dzzzz HH:mm:ss\x0az HH:mm:ss\x0cခေတ်\x0cနှစ်\x18ယမန်နှစ်\x15" + + "ယခုနှစ်\x1eလာမည့်နှစ်\x22{0} နှစ်အတွင်း2ပြီးခဲ့သည့် {0} နှစ်\x18သုံးလပ" + + "တ်:ပြီးခဲ့သည့် သုံးလပတ်\x22ယခု သုံးလပတ်+လာမည့် သုံးလပတ်8သုံးလပတ်ကာလ {0" + + "} အတွင်း`ပြီးခဲ့သည့် သုံးလပတ်ကာလ {0} ခုအတွင်း6ပြီးခဲ့သောသုံးလပတ်!ယခုသုံး" + + "လပတ်9နောက်လာမည့်သုံးလပတ်>သုံးလပတ်ကာလ {0} ခုအတွင်း\x03လ$ပြီးခဲ့သည့်လ" + + "\x0cယခုလ\x15လာမည့်လ\x19{0} လအတွင်း)ပြီးခဲ့သည့် {0} လ\x09ပတ်\x03Bar\x03Aa" + + "r\x03Uni\x03Ung\x03Kan\x03Sab" + +var bucket74 string = "" + // Size: 22754 bytes + "=ပြီးခဲ့သည့် သီတင်းပတ်%ယခု သီတင်းပတ်.လာမည့် သီတင်းပတ်\x1f{0} ပတ်အတွင်း/ပ" + + "ြီးခဲ့သည့် {0} ပတ်;{0} ပတ်မြောက် သီတင်းပတ်\x09ရက်\x15တစ်နေ့က\x0fမနေ့က" + + "\x0cယနေ့\x18မနက်ဖြန်\x18သန်ဘက်ခါ\x1f{0} ရက်အတွင်း/ပြီးခဲ့သည့် {0} ရက်" + + "\x09နေ့Fပြီးခဲ့သည့် တနင်္ဂနွေနေ့'ဤတနင်္ဂနွေနေ့7လာမည့် တနင်္ဂနွေနေ့;တနင်္" + + "ဂနွေ {0} ပတ်အတွင်းKပြီးခဲ့သည့် တနင်္ဂနွေ {0} ပတ်@ပြီးခဲ့သည့် တနင်္လာနေ" + + "့!ဤတနင်္လာနေ့1လာမည့် တနင်္လာနေ့5တနင်္လာ {0} ပတ်အတွင်းEပြီးခဲ့သည့် တနင်" + + "္လာ {0} ပတ်=ပြီးခဲ့သည့် အင်္ဂါနေ့\x1eဤအင်္ဂါနေ့.လာမည့် အင်္ဂါနေ့2အင်္ဂ" + + "ါ {0} ပတ်အတွင်းBပြီးခဲ့သည့် အင်္ဂါ {0} ပတ်Cပြီးခဲ့သည့် ဗုဒ္ဓဟူးနေ့$ဤဗု" + + "ဒ္ဓဟူးနေ့4လာမည့် ဗုဒ္ဓဟူးနေ့8ဗုဒ္ဓဟူး {0} ပတ်အတွင်းHပြီးခဲ့သည့် ဗုဒ္ဓဟ" + + "ူး {0} ပတ်Cပြီးခဲ့သည့် ကြာသပတေးနေ့$ဤကြာသပတေးနေ့4လာမည့် ကြာသပတေးနေ့8ကြာ" + + "သပတေး {0} ပတ်အတွင်းHပြီးခဲ့သည့် ကြာသပတေး {0} ပတ်=ပြီးခဲ့သည့် သောကြာနေ့" + + "\x1eဤသောကြာနေ့.လာမည့် သောကြာနေ့2သောကြာ {0} ပတ်အတွင်းTပြီးခဲ့သည့် သောကြာ " + + "{0} ပတ်အတွင်း4ပြီးခဲ့သည့် စနေနေ့\x15ဤစနေနေ့%လာမည့် စနေနေ့)စနေ {0} ပတ်အတွ" + + "င်းKပြီးခဲ့သည့် စနေ {0} ပတ်အတွင်း\x19နံနက်/ညနေ\x0cနာရီ\x15ဤအချိန်\x22{" + + "0} နာရီအတွင်း2ပြီးခဲ့သည့် {0} နာရီ\x0fမိနစ်\x12ဤမိနစ်%{0} မိနစ်အတွင်း5ပြ" + + "ီးခဲ့သည့် {0} မိနစ်\x15စက္ကန့်\x09ယခု+{0} စက္ကန့်အတွင်း;ပြီးခဲ့သည့် {0" + + "} စက္ကန့်\x0cဇုန်\x16{0} အချိန်;{0} နွေရာသီ စံတော်ချိန်%{0} စံတော်ချိန်S" + + "ညှိထားသည့် ကမ္ဘာ့ စံတော်ချိန်<ဗြိတိန်နွေရာသီအချိန်Eအိုင်းရစ်ရှ်စံတော်ခ" + + "ျိန်:အာဖဂန်နစ္စတန် အချိန်1အလယ်အာဖရိက အချိန်4အရှေ့အာဖရိက အချိန်4တောင်အာ" + + "ဖရိက အချိန်7အနောက်အာဖရိက အချိန်Fအနောက်အာဖရိက စံတော်ချိန်Mအနောက်အာဖရိက " + + "နွေရာသီ အချိန်*အလားစကားအချိန်9အလားစကားစံတော်ချိန်Oအလားစကား နွေရာသီစံတေ" + + "ာ်ချိန်(အာမေဇုံ အချိန်7အာမေဇုံ စံတော်ချိန်=အာမေဇုံ နွေရာသီအချိန်Uမြောက" + + "်အမေရိက အလယ်ပိုင်းအချိန်dမြောက်အမေရိက အလယ်ပိုင်းစံတော်ချိန်zမြောက်အမေရ" + + "ိက အလယ်ပိုင်း နွေရာသီစံတော်ချိန်Xမြောက်အမေရိက အရှေ့ပိုင်းအချိန်gမြောက်" + + "အမေရိက အရှေ့ပိုင်းစံတော်ချိန်}မြောက်အမေရိက အရှေ့ပိုင်း နွေရာသီစံတော်ချ" + + "ိန်[မြောက်အမေရိက တောင်တန်းဒေသအချိန်jမြောက်အမေရိက တောင်တန်းဒေသစံတော်ချိ" + + "န်\x80မြောက်အမေရိက တောင်တန်းဒေသ နွေရာသီစံတော်ချိန်Lမြောက်အမေရိက ပစိဖိတ" + + "်အချိန်[မြောက်အမေရိက ပစိဖိတ်စံတော်ချိန်qမြောက်အမေရိက ပစိဖိတ် နွေရာသီစံ" + + "တော်ချိန်!အပီယာအချိန်0အပီယာစံတော်ချိန်8အပီယာ နွေရာသီ အချိန်%အာရေဗျ အချ" + + "ိန်4အာရေဗျ စံတော်ချိန်;အာရေဗျ နွေရာသီ အချိန်7အာဂျင်တီးနား အချိန်Fအာဂျင" + + "်တီးနား စံတော်ချိန်Lအာဂျင်တီးနား နွေရာသီအချိန်Jအနောက် အာဂျင်တီးနား အချ" + + "ိန်Yအနောက် အာဂျင်တီးနား စံတော်ချိန်`အနောက် အာဂျင်တီးနား နွေရာသီ အချိန်" + + "4အာမေးနီးယား အချိန်Cအာမေးနီးယား စံတော်ချိန်Jအာမေးနီးယား နွေရာသီ အချိန်1အ" + + "တ္တလန်တစ် အချိန်@အတ္တလန်တစ် စံတော်ချိန်Vအတ္တလန်တစ် နွေရာသီ စံတော်ချိန်" + + "Pဩစတြေးလျား အလယ်ပိုင်း အချိန်_ဩစတြေးလျား အလယ်ပိုင်း စံတော်ချိန်fဩစတြေးလျ" + + "ား အလယ်ပိုင်း နွေရာသီ အချိန်bဩစတြေးလျား အလယ်အနောက်ပိုင်း အချိန်qဩစတြေး" + + "လျား အလယ်အနောက်ပိုင်း စံတော်ချိန်xဩစတြေးလျား အလယ်အနောက်ပိုင်း နွေရာသီ " + + "အချိန်@အရှေ့ဩစတြေးလျား အချိန်Oအရှေ့ဩစတြေးလျား စံတော်ချိန်Vအရှေ့ဩစတြေးလ" + + "ျား နွေရာသီ အချိန်Cအနောက်ဩစတြေးလျား အချိန်Rအနောက်ဩစတြေးလျား စံတော်ချိန" + + "်Gဩစတြေးလျား နွေရာသီ အချိန်7အဇာဘိုင်ဂျန် အချိန်Fအဇာဘိုင်ဂျန် စံတော်ချိ" + + "န်Mအဇာဘိုင်ဂျန် နွေရာသီ အချိန်4အေဇိုးရီးစ် အချိန်Cအေဇိုးရီးစ် စံတော်ချ" + + "ိန်Jအေဇိုးရီးစ် နွေရာသီ အချိန်=ဘင်္ဂလားဒေ့ရှ် အချိန်Lဘင်္ဂလားဒေ့ရှ် စံ" + + "တော်ချိန်Sဘင်္ဂလားဒေ့ရှ် နွေရာသီ အချိန်\x22ဘူတန် အချိန်7ဘိုလီးဘီးယား အ" + + "ချိန်%ဘရာဇီး အချိန်4ဘရာဇီး စံတော်ချိန်;ဘရာဇီး နွေရာသီ အချိန်=ဘရူနိုင်း" + + " စံတော်ချိန်2ကိတ်ပ် ဗာဒီ အချိန်Aကိတ်ပ် ဗာဒီ စံတော်ချိန်Hကိတ်ပ် ဗာဒီ နွေရ" + + "ာသီ အချိန်-ချာမိုရိုအချိန်'ချားသမ်အချိန်6ချားသမ်စံတော်ချိန်;ချာသမ် နွေ" + + "ရာသီ အချိန်\x22ချီလီ အချိန်1ချီလီ စံတော်ချိန်8ချီလီ နွေရာသီ အချိန်\x22" + + "တရုတ် အချိန်1တရုတ် စံတော်ချိန်8တရုတ် နွေရာသီ အချိန်6ချွဲဘော်ဆန်းအချိန်" + + "Eချွဲဘော်ဆန်းစံတော်ချိန်Kချွဲဘော်ဆန်းနွေရာသီအချိန်<ခရစ်စမတ်ကျွန်းအချိန်9" + + "ကိုကိုးကျွန်းအချိန်.ကိုလံဘီယာ အချိန်=ကိုလံဘီယာ စံတော်ချိန်Dကိုလံဘီယာ န" + + "ွေရာသီ အချိန်<ကွတ်ခ်ကျွန်းစုအချိန်Kကွတ်ခ်ကျွန်းစုစံတော်ချိန်Qကွတ်က်ကျွ" + + "န်းစုနွေရာသီအချိန်(ကျူးဘား အချိန်7ကျူးဘား စံတော်ချိန်Mကျူးဘား နွေရာသီ " + + "စံတော်ချိန်$ဒေးဗစ်အချိန်Iဒူးမော့တ် ဒါရ်ဗီးလ်အချိန်1အရှေ့တီမော အချိန်3အ" + + "ီစတာကျွန်းအချိန်Bအီစတာကျွန်းစံတော်ချိန်Hအီစတာကျွန်းနွေရာသီအချိန်+အီကွေ" + + "ဒေါ အချိန်?ဥရောပအလယ်ပိုင်းအချိန်Pဥရောပ အလယ်ပိုင်း စံတော်ချိန်Wဥရောပ အလ" + + "ယ်ပိုင်း နွေရာသီ အချိန်1အရှေ့ဥရောပ အချိန်@အရှေ့ဥရောပ စံတော်ချိန်Gအရှေ့" + + "ဥရောပ နွေရာသီ အချိန်Wထပ်တိုးအရှေ့ပိုင်းဥရောပအချိန်4အနောက်ဥရောပ အချိန်C" + + "အနောက်ဥရောပ စံတော်ချိန်Jအနောက်ဥရောပ နွေရာသီ အချိန်@ဖော့ကလန်ကွန်းစု အချ" + + "ိန်Rဖော့ကလန်ကျွန်းစု စံတော်ချိန်Yဖော့ကလန်ကျွန်းစု နွေရာသီ အချိန်!ဖီဂျီ" + + "အချိန်0ဖီဂျီစံတော်ချိန်6ဖီဂျီနွေရာသီအချိန်Aပြင်သစ် ဂီအားနား အချိန်sပြင" + + "်သစ်တောင်ပိုင်းနှင့် အန္တာတိတ်အချိန်9ဂါလားပါဂိုးစ်အချိန်(ဂမ်ဘီယာ အချိန" + + "်1ဂျော်ဂျီယာ အချိန်@ဂျော်ဂျီယာ စံတော်ချိန်Gဂျော်ဂျီယာ နွေရာသီ အချိန်?ဂ" + + "ီလ်ဘတ်ကျွန်းစုအချိန်:ဂရင်းနစ် စံတော်ချိန်=အရှေ့ဂရင်းလန်း အချိန်Lအရှေ့ဂ" + + "ရင်းလန်း စံတော်ချိန်_အရှေ့ဂရင်းလန် နွေရာသီ စံတော်ချိန်Aအနောက် ဂရင်းလန်" + + "း အချိန်Pအနောက် ဂရင်းလန်း စံတော်ချိန်cအနောက် ဂရင်းလန် နွေရာသီ စံတော်ချ" + + "ိန်1ပင်လယ်ကွေ့ အချိန်.ဂိုင်ယာနာ အချိန်Pဟာဝိုင်ယီ အယ်လူးရှန်း အချိန်_ဟာ" + + "ဝိုင်ယီ အယ်လူးရှန်း စံတော်ချိန်uဟာဝိုင်ယီ အယ်လူးရှန်း နွေရာသီ စံတော်ချ" + + "ိန်1ဟောင်ကောင် အချိန်@ဟောင်ကောင် စံတော်ချိန်Gဟောင်ကောင် နွေရာသီ အချိန်" + + "$ဟိုးဗ်အချိန်3ဟိုးဗ်စံတော်ချိန်9ဟိုးဗ်နွေရာသီအချိန်7အိန္ဒိယ စံတော်ချိန်A" + + "အိန္ဒိယ သမုဒ္ဒရာ အချိန်Cအင်ဒိုချိုင်းနား အချိန်Yအလယ်ပိုင်း အင်ဒိုနီးရှ" + + "ား အချိန်\\အရှေ့ပိုင်း အင်ဒိုနီးရှား အချိန်_အနောက်ပိုင်း အင်ဒိုနီးရှား" + + " အချိန်\x22အီရန် အချိန်1အီရန် စံတော်ချိန်8အီရန် နွေရာသီ အချိန်*အီရူခူတ်အ" + + "ချိန်9အီရူခူတ်စံတော်ချိန်?အီရူခူတ်နွေရာသီအချိန်(အစ္စရေး အချိန်7အစ္စရေး" + + " စံတော်ချိန်>အစ္စရေး နွေရာသီ အချိန်\x22ဂျပန် အချိန်1ဂျပန် စံတော်ချိန်8ဂျ" + + "ပန် နွေရာသီ အချိန်=အရှေ့ကာဇက်စတန် အချိန်?အနောက်ကာဇက်စတန်အချိန်.ကိုရီးယ" + + "ား အချိန်=ကိုရီးယား စံတော်ချိန်Dကိုရီးယား နွေရာသီ အချိန်0ခိုစ်ရိုင်အချ" + + "ိန်9ခရာ့စ်နိုရာစ်အချိန်Hခရာ့စ်နိုရာစ်စံတော်ချိန်Nခရာ့စ်နိုရာစ်နွေရာသီအ" + + "ချိန်1ကာဂျစ္စတန် အချိန်1သီရိလင်္ကာ အချိန်<လိုင်းကျွန်းစုအချိန်3လော့ဒ်ဟ" + + "ောင်အချိန်Bလော့ဒ်ဟောင်စံတော်ချိန်Jလော့ဒ်ဟောင် နွေရာသီ အချိန်%မကာအို အခ" + + "ျိန်4မကာအို စံတော်ချိန်;မကာအို နွေရာသီ အချိန်@မက်ကွယ်ရီကျွန်း အချိန်*မ" + + "ာဂါဒန်းအချိန်9မာဂါဒန်းစံတော်ချိန်?မာဂါဒန်းနွေရာသီအချိန်+မလေးရှား အချိန" + + "်1မော်လဒိုက် အချိန်0မာခေးအပ်စ်အချိန်<မာရှယ်ကျွန်းစုအချိန်.မောရစ်ရှ် အခ" + + "ျိန်=မောရစ်ရှ် စံတော်ချိန်Dမောရစ်ရှ် နွေရာသီ အချိန်*မော်စွန်အချိန်Pအနေ" + + "ာက်တောင် မက္ကဆီကို အချိန်_အနောက်တောင် မက္ကဆီကို စံတော်ချိန်uအနောက်တောင" + + "် မက္ကစီကို နွေရာသီ စံတော်ချိန်Cမက္ကဆီကန် ပစိဖိတ်အချိန်Sမက္ကဆီကန် ပစိဖ" + + "ိတ် စံတော်ချိန်iမက္ကစီကန် ပစိဖိတ် နွေရာသီ စံတော်ချိန်-ဥလန်ဘာတောအချိန်<" + + "ဥလန်ဘာတောစံတော်ချိန်Bဥလန်ဘာတောနွေရာသီအချိန်\x18မော်စကို9မော်စကိုစံတော်" + + "ချိန်Aမော်စကို နွေရာသီ အချိန်%မြန်မာ အချိန်$နာဥူရူအချိန်\x22နီပေါ အချိ" + + "န်Kနယူးကယ်လီဒိုးနီးယားအချိန်Wနယူးကာလီဒိုးနီးယားစံတော်ချိန်]နယူးကာလီဒို" + + "းနီးယားနွေရာသီအချိန်.နယူးဇီလန် အချိန်=နယူးဇီလန် စံတော်ချိန်Dနယူးဇီလန် " + + "နွေရာသီ အချိန်7နယူးဖောင်လန် အချိန်Fနယူးဖောင်လန် စံတော်ချိန်\\နယူးဖောင်" + + "လန် နွေရာသီ စံတော်ချိန်$နီဦးအေအချိန်?နောဖော့ခ်ကျွန်းအချိန်Qဖာနန်ဒိုးဒီ" + + "နိုးရိုးညာအချိန်`ဖာနန်ဒိုးဒီနိုးရိုးညာစံတော်ချိန်fဖာနန်ဒိုးဒီနိုးရိုးည" + + "ာနွေရာသီအချိန်Bနိုဗိုစဲဘီအဲယ်စ်အချိန်Qနိုဗိုစဲဘီအဲယ်စ်စံတော်ချိန်Wနိုဗ" + + "ိုစဲဘီအဲယ်စ်နွေရာသီအချိန်-အွမ်းစ်ခ်အချိန်<အွမ်းစ်ခ်စံတော်ချိန်Bအွမ်းစ်" + + "ခ်နွေရာသီအချိန်.ပါကစ္စတန် အချိန်=ပါကစ္စတန် စံတော်ချိန်Dပါကစ္စတန် နွေရာ" + + "သီ အချိန်%ပလာအို အချိန်=ပါပူအာနယူးဂီနီ အချိန်+ပါရာဂွေး အချိန်:ပါရာဂွေး" + + " စံတော်ချိန်Aပါရာဂွေး နွေရာသီ အချိန်\x22ပီရူး အချိန်1ပီရူး စံတော်ချိန်8ပ" + + "ီရူး နွေရာသီ အချိန်1ဖိလစ်ပိုင် အချိန်@ဖိလစ်ပိုင် စံတော်ချိန်Gဖိလစ်ပိုင" + + "် နွေရာသီ အချိန်<ဖီးနစ်ကျွန်းစုအချိန်Wစိန့်ပီအဲနှင့်မီခွီလွန်အချိန်fစိ" + + "န့်ပီအဲနှင့်မီခွီလွန်စံတော်ချိန်~စိန့်ပီအဲနှင့် မီခွီလွန် နွေရာသီ စံတေ" + + "ာ်ချိန်1ပါတ်ကယ်ရင် အချိန်-ဖိုနာဖဲအ်အချိန်+ပြုံယန်း အချိန်%ဟေညွန် အချိန" + + "်'ရိုသီရာအချိန်(ဆာခါလင် အချိန်6ဆာခါလင်စံတော်ချိန်>ဆာခါလင် နွေရာသီ အချိ" + + "န်*ဆမိုးအားအချိန်9ဆမိုးအားစံတော်ချိန်Aဆမိုးအား နွေရာသီ အချိန်%ဆေးရှဲ အ" + + "ချိန်+စင်္ကာပူ အချိန်Eဆော်လမွန်ကျွန်းစုအချိန်@တောင်ဂျော်ဂျီယာ အချိန်-စ" + + "ူးရီနာမ်အချိန်$ရှိုဝါအချိန်!တဟီတီအချိန်(ထိုင်ပေ အချိန်7ထိုင်ပေ စံတော်ခ" + + "ျိန်>ထိုင်ပေ နွေရာသီ အချိန်:တာဂျစ်ကစ္စတန် အချိန်+တိုကီလာဥ အချိန်$တွန်ဂ" + + "ါအချိန်3တွန်ဂါစံတော်ချိန်9တွန်ဂါနွေရာသီအချိန်!ချုခ်အချိန်@တာ့ခ်မင်နစ္စ" + + "တန် အချိန်Oတာ့ခ်မင်နစ္စတန် စံတော်ချိန်Vတာ့ခ်မင်နစ္စတန် နွေရာသီ အချိန်'" + + "တူဗားလူအချိန်(ဥရုဂွေး အချိန်7ဥရုဂွေး စံတော်ချိန်>ဥရုဂွေး နွေရာသီ အချိန" + + "်7ဥဇဘက်ကစ္စတန် အချိန်Fဥဇဘက်ကစ္စတန် စံတော်ချိန်Mဥဇဘက်ကစ္စတန် နွေရာသီ အခ" + + "ျိန်'ဗနွားတူအချိန်6ဗနွားတူစံတော်ချိန်<ဗနွားတူနွေရာသီအချိန်4ဗင်နီဇွဲလား" + + " အချိန်Cဗလာဒီဗော့စတော့ခ် အချိန်Rဗလာဒီဗော့စတော့ခ် စံတော်ချိန်Yဗလာဒီဗော့စတ" + + "ော့ခ် နွေရာသီ အချိန်6ဗိုလ်ဂိုဂရက်အချိန်Eဗိုလ်ဂိုဂရက်စံတော်ချိန်Kဗိုလ်ဂ" + + "ိုဂရက်နွေရာသီအချိန်0ဗိုစ်တိုခ်အချိန်6ဝိတ်ခ်ကျွန်းအချိန်Mဝေါလီစ်နှင့် ဖ" + + "ူကျူနာ အချိန်-ယူခူးတ်စ်အချိန်<ယူခူးတ်စ်စံတော်ချိန်Bယူခူးတ်စ်နွေရာသီအချ" + + "ိန်Bရယ်ခါးတီရင်ဘားခ်အချိန်Qရယ်ခါးတီရင်ဘားခ်စံတော်ချိန်Tရယ်ခါးတီရင်ဘာခ်" + + "နွေရာသီအချိန်" + +var bucket75 string = "" + // Size: 10525 bytes + "\x11قبل میلاد\x1eقبل میلادی تقویم\x11بعد میلاد\x0cمیلادی\x05پ.م\x06پ.م." + + "\x03م.\x02م\x0aتقویم\x0cپارسال\x0aامسال\x0fسال دیگه\x11{0} سال دله\x06رب" + + "ع\x11{0} ربع دله\x11{0} ربع پیش\x0dماه قبل\x0dاین ماه\x0fماه ِبعد\x11{0" + + "} ماه دله\x11قبلی هفته\x0fاین هفته\x11بعدی هفته\x13{0} هفته دله\x11{0} ر" + + "وز دله\x16هفته\u200cی ِروز\x15قبلی یکشنبه\x13این یکشنبه\x15بعدی یکشنبه" + + "\x13یکشنبه قبل\x13یکشنبه بعد\x15قبلی دِشنبه\x13این دِشنبه\x15بعدی دِشنبه" + + "\x18قبلی سه\u200cشنبه\x16این سه\u200cشنبه\x18بعدی سه\u200cشنبه\x17قبلی چ" + + "ارشنبه\x15این چارشنبه\x17بعدی چارشنبه\x17قبلی پنجشنبه\x15این پنجشنبه" + + "\x17بعدی پنجشنبه\x11قبلی جومه\x0fاین جومه\x11بعدی جومه\x11قبلی شنبه\x0fا" + + "ین شنبه\x11بعدی شنبه\x11صواحی/ظُر\x0aساعِت\x15{0} ساعِت دله\x15{0} ساعِ" + + "ت پیش\x13{0} ساعت دله\x15{0} دقیقه دله\x13{0} دَقه پیش\x08دَقه\x13{0} د" + + "َقه دله\x15{0} ثانیه دله\x15زمونی منقطه\x08ǃKhanni\x0dǃKhanǀgôab\x0dǀKh" + + "uuǁkhâb\x0dǃHôaǂkhaib\x0bǃKhaitsâb\x09Gamaǀaeb\x0aǂKhoesaob\x12Aoǁkhuumû" + + "ǁkhâb\x14Taraǀkhuumûǁkhâb\x0eǂNûǁnâiseb\x0bǀHooǂgaeb\x0fHôasoreǁkhâb" + + "\x0bSontaxtsees\x0bMantaxtsees\x0cDenstaxtsees\x0cWunstaxtsees\x0eDonder" + + "taxtsees\x0cFraitaxtsees\x0dSatertaxtsees\x03KW1\x03KW2\x03KW3\x03KW4" + + "\x0c1ro kwartals\x0e2ǁî kwartals\x0e3ǁî kwartals\x0e4ǁî kwartals\x08ǁgoa" + + "gas\x06ǃuias\x0eXristub aiǃâ\x11Xristub khaoǃgâ\x0aǁAeǃgâs\x05Kurib\x07ǁ" + + "Khâb\x06Wekheb\x05Tsees\x0cWekheb tsees\x0cǁgoas/ǃuis\x04Iiri\x04Haib" + + "\x07ǀGâub\x0dǁAeb ǀharib\x09vårstart\x08regnvann\x10insekter våkner\x0dv" + + "årjevndøgn\x0dlyst og klart\x08kornregn\x0bsommerstart\x0atidl. korn" + + "\x0akorn i aks\x0dsommersolverv\x0bliten varme\x0astor varme\x0ahøststar" + + "t\x0avarmeslutt\x09hvit dugg\x0ehøstjevndøgn\x08kalddugg\x0dførste frost" + + "\x0bvinterstart\x09litt snø\x08mye snø\x0dvintersolverv\x0bliten kulde" + + "\x0astor kulde\x11EEEE d. MMMM r(U)\x0cd. MMMM r(U)\x08d. MMM r\x05d.M.r" + + "\x0c0. tidsalder\x0c1. tidsalder\x070. t.a.\x071. t.a.\x03TA0\x03TA1\x08" + + "meskerem\x06tekemt\x05hedar\x06tahsas\x03ter\x07yekatit\x07megabit\x06mi" + + "azia\x06genbot\x04sene\x05hamle\x07nehasse\x07pagumen\x04sø.\x03ma.\x03t" + + "i.\x03on.\x03to.\x03fr.\x04lø.\x05midn.\x05form.\x07etterm.\x05kveld\x04" + + "natt\x03mg.\x03fm.\x03em.\x03nt.\x07midnatt\x08morgenen\x0bformiddagen" + + "\x0dettermiddagen\x07kvelden\x06natten\x0bettermiddag\x0cfør Kristus\x15" + + "før vår tidsregning\x0detter Kristus\x16etter vår tidsregning\x04fvt." + + "\x04evt.\x03vt.\x06tishri\x07heshvan\x06kislev\x05tevet\x06shevat\x06ada" + + "r I\x04adar\x07adar II\x05nisan\x04iyar\x05sivan\x05tamuz\x02av\x04elul" + + "\x04saka\x07d.M y G\x09farvardin\x0bordibehesht\x07khordad\x03tir\x06mor" + + "dad\x09shahrivar\x04mehr\x04aban\x04azar\x03dey\x06bahman\x06esfand\x09t" + + "idsalder\x06i fjor\x05i år\x09neste år\x08+{0} år\x0a–{0} år\x0fforrige " + + "kvartal\x0fdette kvartalet\x0dneste kvartal\x0bforrige kv.\x09dette kv." + + "\x09neste kv.\x0aom {0} kv.\x11for {0} kv. siden\x0a–{0} kv.\x0eforrige " + + "måned\x0edenne måneden\x0cneste måned\x04mnd.\x0bforrige md.\x09denne md" + + ".\x09neste md.\x08+{0} md.\x08-{0} md.\x03uke\x0bforrige uke\x0adenne uk" + + "en\x09neste uke\x0aom {0} uke\x0bom {0} uker\x11for {0} uke siden\x12for" + + " {0} uker siden\x08uken {0}\x09om {0} u.\x10for {0} u. siden\x06u. {0}" + + "\x0com {0} døgn\x13for {0} døgn siden\x09om {0} d.\x10for {0} d. siden" + + "\x07+{0} d.\x07-{0} d.\x06ukedag\x10søndag sist uke\x12søndag denne uken" + + "\x11søndag neste uke\x0asist søn.\x0bdenne søn.\x0bneste søn.\x0com {0} " + + "søn.\x13for {0} søn. siden\x09sist sø.\x0adenne sø.\x0aneste sø.\x0bom {" + + "0} sø.\x12for {0} sø. siden\x0fmandag sist uke\x11mandag denne uken\x10m" + + "andag neste uke\x09sist man.\x0adenne man.\x0aneste man.\x0bom {0} man." + + "\x12for {0} man. siden\x08sist ma.\x09denne ma.\x09neste ma.\x0aom {0} m" + + "a.\x11for {0} ma. siden\x10tirsdag sist uke\x12tirsdag denne uken\x11tir" + + "sdag neste uke\x09sist tir.\x0adenne tir.\x0aneste tir.\x0bom {0} tir." + + "\x12for {0} tir. siden\x08sist ti.\x09denne ti.\x09neste ti.\x0aom {0} t" + + "i.\x11for {0} ti. siden\x0fonsdag sist uke\x11onsdag denne uken\x10onsda" + + "g neste uke\x09sist ons.\x0adenne ons.\x0aneste ons.\x0bom {0} ons.\x12f" + + "or {0} ons. siden\x08sist on.\x09denne on.\x09neste on.\x0aom {0} on." + + "\x11for {0} on. siden\x10torsdag sist uke\x12torsdag denne uken\x11torsd" + + "ag neste uke\x09sist tor.\x0adenne tor.\x0aneste tor.\x0bom {0} tor.\x12" + + "for {0} tor. siden\x08sist to.\x09denne to.\x09neste to.\x0aom {0} to." + + "\x11for {0} to. siden\x0ffredag sist uke\x11fredag denne uken\x10fredag " + + "neste uke\x09sist fre.\x0adenne fre.\x0aneste fre.\x0bom {0} fre.\x12for" + + " {0} fre. siden\x08sist fr.\x09denne fr.\x09neste fr.\x0aom {0} fr.\x11f" + + "or {0} fr. siden\x10lørdag sist uke\x12lørdag denne uken\x11lørdag neste" + + " uke\x0asist lør.\x0bdenne lør.\x0bneste lør.\x0com {0} lør.\x13for {0} " + + "lør. siden\x09sist lø.\x0adenne lø.\x0aneste lø.\x0bom {0} lø.\x12for {0" + + "} lø. siden\x0bdenne timen\x08om {0} t\x0ffor {0} t siden\x06+{0} t\x06-" + + "{0} t\x06minutt\x0edette minuttet\x0dom {0} minutt\x0fom {0} minutter" + + "\x14for {0} minutt siden\x16for {0} minutter siden\x0aom {0} min\x11for " + + "{0} min siden\x03nå\x0aom {0} sek\x11for {0} sek siden\x08tidssone\x10ti" + + "dssone for {0}\x11sommertid – {0}\x11normaltid – {0}\x17Koordinert unive" + + "rsaltid\x11britisk sommertid\x0eirsk sommertid\x0eAcre normaltid\x0eAcre" + + " sommertid\x0cafghansk tid\x14sentralafrikansk tid\x11østafrikansk tid" + + "\x11sørafrikansk tid\x17vestafrikansk normaltid\x17vestafrikansk sommert" + + "id\x12alaskisk normaltid\x12alaskisk sommertid\x13Almaty, standardtid" + + "\x11Almaty, sommertid\x16normaltid for Amazonas\x16sommertid for Amazona" + + "s'normaltid for det sentrale Nord-Amerika'sommertid for det sentrale Nor" + + "d-Amerika,normaltid for den nordamerikanske østkysten,sommertid for den " + + "nordamerikanske østkysten#normaltid for Rocky Mountains (USA)#sommertid " + + "for Rocky Mountains (USA)2normaltid for den nordamerikanske Stillehavsky" + + "sten2sommertid for den nordamerikanske Stillehavskysten\x1aRussisk (Anad" + + "yr) normaltid\x1aRussisk (Anadyr) sommertid\x12normaltid for Apia\x12som" + + "mertid for Apia\x12Aqtau, standardtid\x10Aqtau, sommertid\x13Aqtobe, sta" + + "ndardtid\x11Aqtobe, sommertid\x13arabisk standardtid\x11arabisk sommerti" + + "d\x14argentinsk normaltid\x14argentinsk sommertid\x18vestargentinsk norm" + + "altid\x18vestargentinsk sommertid\x11armensk normaltid\x11armensk sommer" + + "tid\x1fatlanterhavskystlig standardtid\x1datlanterhavskystlig sommertid" + + "\x1asentralaustralsk normaltid\x1asentralaustralsk sommertid\x1fvest-sen" + + "tralaustralsk normaltid\x1fvest-sentralaustralsk sommertid\x17østaustral" + + "sk normaltid\x17østaustralsk sommertid\x17vestaustralsk normaltid\x17ves" + + "taustralsk sommertid\x18aserbajdsjansk normaltid\x18aserbajdsjansk somme" + + "rtid\x11asorisk normaltid\x11asorisk sommertid\x17bangladeshisk normalti" + + "d\x17bangladeshisk sommertid\x0cbhutansk tid\x0eboliviansk tid\x16normal" + + "tid for Brasilia\x16sommertid for Brasilia\x1etidssone for Brunei Daruss" + + "alam\x18normaltid for Kapp Verde\x18sommertid for Kapp Verde\x09Casey-ti" + + "d\x15tidssone for Chamorro\x15normaltid for Chatham\x15sommertid for Cha" + + "tham\x12chilensk normaltid\x12chilensk sommertid\x12kinesisk normaltid" + + "\x12kinesisk sommertid\x19normaltid for Tsjojbalsan\x19sommertid for Tsj" + + "ojbalsan\x1atidssone for Christmasøya\x18tidssone for Kokosøyene\x15colo" + + "mbiansk normaltid\x15colombiansk sommertid\x18normaltid for Cookøyene" + + "\x1dhalv sommertid for Cookøyene\x11cubansk normaltid\x11cubansk sommert" + + "id\x12tidssone for Davis\x1ftidssone for Dumont d’Urville\x12østtimoresi" + + "sk tid\x18normaltid for Påskeøya\x18sommertid for Påskeøya\x10ecuadorian" + + "sk tid\x1asentraleuropeisk normaltid\x1asentraleuropeisk sommertid\x17øs" + + "teuropeisk normaltid\x17østeuropeisk sommertid\x17fjern-østeuropeisk tid" + + "\x17vesteuropeisk normaltid\x17vesteuropeisk sommertid\x1dnormaltid for " + + "Falklandsøyene\x1dsommertid for Falklandsøyene\x12fijiansk normaltid\x12" + + "fijiansk sommertid\x1atidssone for Fransk Guyana'tidssone for De franske" + + " sørterritorier\x1dtidssone for Galápagosøyene\x14tidssone for Gambier" + + "\x12georgisk normaltid\x12georgisk sommertid\x1atidssone for Gilbertøyen" + + "e\x13Greenwich middeltid\x19østgrønlandsk normaltid\x19østgrønlandsk som" + + "mertid\x19vestgrønlandsk normaltid\x19vestgrønlandsk sommertid\x08Guam-t" + + "id\x18tidssone for Persiabukta\x0bguyansk tid normaltid for Hawaii og Al" + + "eutene sommertid for Hawaii og Aleutene\x16normaltid for Hongkong\x16som" + + "mertid for Hongkong\x13normaltid for Khovd\x13sommertid for Khovd\x0aind" + + "isk tid\x17tidssone for Indiahavet\x10indokinesisk tid\x15sentralindones" + + "isk tid\x12østindonesisk tid\x12vestindonesisk tid\x10iransk normaltid" + + "\x10iransk sommertid\x15normaltid for Irkutsk\x15sommertid for Irkutsk" + + "\x12israelsk normaltid\x12israelsk sommertid\x11japansk normaltid\x11jap" + + "ansk sommertid.Russisk (Petropavlovsk-Kamtsjatskij) normaltid.Russisk (P" + + "etropavlovsk-Kamtsjatskij) sommertid\x14østkasakhstansk tid\x14vestkasak" + + "hstansk tid\x12koreansk normaltid\x12koreansk sommertid\x13tidssone for " + + "Kosrae\x19normaltid for Krasnojarsk\x19sommertid for Krasnojarsk\x0dkirg" + + "isisk tid\x09Lanka-tid\x18tidssone for Linjeøyene\x1cnormaltid for Lord " + + "Howe-øya\x1csommertid for Lord Howe-øya\x12Macau, standardtid\x10Macau, " + + "sommertid\x1atidssone for Macquarieøya\x15normaltid for Magadan\x15somme" + + "rtid for Magadan\x0dmalaysisk tid\x0dmaldivisk tid\x1ctidssone for Marqu" + + "esasøyene\x1btidssone for Marshalløyene\x13mauritisk normaltid\x13maurit" + + "isk sommertid\x13tidssone for Mawson!normaltid for nordvestlige Mexico!s" + + "ommertid for nordvestlige Mexico.normaltid for den meksikanske Stillehav" + + "skysten.sommertid for den meksikanske Stillehavskysten\x18normaltid for " + + "Ulan Bator\x18sommertid for Ulan Bator\x14normaltid for Moskva\x14sommer" + + "tid for Moskva\x0dmyanmarsk tid\x0bnaurisk tid\x0bnepalsk tid\x13kaledon" + + "sk normaltid\x13kaledonsk sommertid\x16newzealandsk normaltid\x16newzeal" + + "andsk sommertid\x1anormaltid for Newfoundland\x1asommertid for Newfoundl" + + "and\x11tidssone for Niue\x18tidssone for Norfolkøya!normaltid for Fernan" + + "do de Noronha!sommertid for Fernando de Noronha\x12Nord-Marianene-tid" + + "\x19normaltid for Novosibirsk\x19sommertid for Novosibirsk\x12normaltid " + + "for Omsk\x12sommertid for Omsk\x14pakistansk normaltid\x14pakistansk som" + + "mertid\x0cpalauisk tid\x0cpapuansk tid\x16paraguayansk normaltid\x16para" + + "guayansk sommertid\x12peruansk normaltid\x12peruansk sommertid\x14filipp" + + "insk normaltid\x14filippinsk sommertid\x1atidssone for Phoenixøyene&norm" + + "altid for Saint-Pierre-et-Miquelon&sommertid for Saint-Pierre-et-Miquelo" + + "n\x15tidssone for Pitcairn\x14tidssone for Pohnpei\x16tidssone for Pyong" + + "yang\x16Qyzylorda, standardtid\x14Qyzylorda, sommertid\x15tidssone for R" + + "éunion\x14tidssone for Rothera\x16normaltid for Sakhalin\x16sommertid f" + + "or Sakhalin\x1aRussisk (Samara) normaltid\x1aRussisk (Samara) sommertid" + + "\x12samoansk normaltid\x12samoansk sommertid\x0fseychellisk tid\x0esinga" + + "porsk tid\x1atidssone for Salomonøyene\x19tidssone for Sør-Georgia\x0dsu" + + "rinamsk tid\x12tidssone for Syowa\x0ctahitisk tid\x14normaltid for Taipe" + + "i\x14sommertid for Taipei\x0etadsjikisk tid\x14tidssone for Tokelau\x12t" + + "ongansk normaltid\x12tongansk sommertid\x18tidssone for Chuukøyene\x13tu" + + "rkmensk normaltid\x13turkmensk sommertid\x0btuvalsk tid\x15uruguayansk n" + + "ormaltid\x15uruguayansk sommertid\x12usbekisk normaltid\x12usbekisk somm" + + "ertid\x13vanuatisk normaltid\x13vanuatisk sommertid\x10venezuelansk tid" + + "\x19normaltid for Vladivostok\x19sommertid for Vladivostok\x17normaltid " + + "for Volgograd\x17sommertid for Volgograd\x13tidssone for Vostok\x18tidss" + + "one for Wake Island$tidssone for Wallis- og Futunaøyene\x15normaltid for" + + " Jakutsk\x15sommertid for Jakutsk\x1bnormaltid for Jekaterinburg\x1bsomm" + + "ertid for Jekaterinburg\x04må.\x03ty.\x03la.\x09dette år\x09denne uke" + + "\x11austafrikansk tid\x19vestafrikansk standardtid\x1csentralaustralsk s" + + "tandardtid!vest-sentralaustralsk standardtid\x19austaustralsk standardti" + + "d\x19vestaustralsk standardtid\x1csentraleuropeisk standardtid\x19austeu" + + "ropeisk standardtid\x0eKaliningradtid\x19vesteuropeisk standardtid\x13gr" + + "eenwich middeltid\x06taqemt\x03ter\x06nehase\x08khordād\x07mordād\x06ābā" + + "n\x05āzar" + +var bucket76 string = "" + // Size: 22272 bytes + "\x03Zib\x04Nhlo\x03Mbi\x03Mab\x03Nkw\x04Nhla\x03Ntu\x03Ncw\x04Mpan\x03Mf" + + "u\x03Lwe\x04Mpal\x0aZibandlela\x09Nhlolanja\x09Mbimbitho\x06Mabasa\x0aNk" + + "wenkwezi\x09Nhlangula\x09Ntulikazi\x0aNcwabakazi\x08Mpandula\x06Mfumfu" + + "\x05Lwezi\x09Mpalakazi\x05Sonto\x05Mvulo\x06Sibili\x08Sithathu\x04Sine" + + "\x07Sihlanu\x08Mgqibelo\x06Kota 1\x06Kota 2\x06Kota 3\x06Kota 4\x12UKris" + + "to angakabuyi\x0fUkristo ebuyile\x07Umnyaka\x0bInyangacale\x05Iviki\x06I" + + "langa\x05Izolo\x07Lamuhla\x06Kusasa\x0dIlanga leviki\x05Ihola\x07Umuzuzu" + + "\x08Isekendi\x09Isikhathi\x16EEEE, 'de' d. MMMM y G\x0dd.MM.yy GGGGG\x07" + + "Januaar\x08Februaar\x05März\x05April\x03Mai\x04Juni\x04Juli\x06August" + + "\x09September\x07Oktover\x08November\x08Dezember\x05März\x03Mai\x04Juni" + + "\x04Juli\x04Sü.\x03Ma.\x03Di.\x03Mi.\x03Du.\x03Fr.\x03Sa.\x08Sünndag\x07" + + "Maandag\x08Dingsdag\x0aMiddeweken\x0aDunnersdag\x07Freedag\x0aSünnavend" + + "\x03Q.1\x03Q.2\x03Q.3\x03Q.4\x0b1. Quartaal\x0b2. Quartaal\x0b3. Quartaa" + + "l\x0b4. Quartaal\x04Q. I\x05Q. II\x06Q. III\x05Q. IV\x02vm\x02nm\x0dvör " + + "Christus\x0dvör uns Tiet\x0bna Christus\x0fbinnen uns Tiet\x06v.Chr.\x06" + + "v.u.T.\x06n.Chr.\x06b.u.T.\x03vuT\x03buT\x14EEEE, 'de' d. MMMM y\x16'Klo" + + "ck' H.mm:ss (zzzz)\x13'Klock' H.mm:ss (z)\x0f'Klock' H.mm:ss\x0a'Kl'. H." + + "mm\x04Ära\x0dverleden Johr\x08dit Johr\x0cnakamen Jahr\x08Quartaal\x05Ma" + + "and\x0everleden Maand\x0bdisse Maand\x0dnakamen Maand\x0dverleden Week" + + "\x0adisse Week\x0cnakamen Week\x03Wk.\x08güstern\x07vundaag\x06morgen" + + "\x08Wekendag\x07Halvdag\x06Stünn\x06Minuut\x06Sekunn\x0aTietrebeet\x08{0" + + "}-Tiet\x0e{0}-Summertiet\x10{0}-Standardtiet\x18Zentraalafrikaansch Tiet" + + "\x14Oostafrikaansch Tiet\x16Söödafrikaansch Tiet\x14Westafrikaansch Tiet" + + "\x1cWestafrikaansch Standardtiet\x1aWestafrikaansch Summertiet\x1eNoorda" + + "merikaansch Zentraaltiet'Noordamerikaansch zentraal Standardtiet%Noordam" + + "erikaansch zentraal Summertiet\x1dNoordamerikaansch oosten Tiet%Noordame" + + "rikaansch oosten Standardtiet#Noordamerikaansch oosten Summertiet\x1aNoo" + + "rdamerikaansch Bargtiet#Noordamerikaansch Barg-Standardtiet!Noordamerika" + + "ansch Barg-Summertiet\x1dNoordamerikaansch Pazifiktiet&Noordamerikaansch" + + " Pazifik-Standardtiet$Noordamerikaansch Pazifik-Summertiet\x0dAraabsch T" + + "iet\x15Araabsch Standardtiet\x13Araabsch Summertiet\x1eNoordamerikaansch" + + " Atlantiktiet'Noordamerikaansch Atlantik-Standardtiet%Noordamerikaansch " + + "Atlantik-Summertiet\x18Zentraalaustraalsch Tiet Zentraalaustraalsch Stan" + + "dardtiet\x1eZentraalaustraalsch Summertiet\x1cWestzentraalaustraalsch Ti" + + "et$Westzentraalaustraalsch Standardtiet\x22Westzentraalaustraalsch Summe" + + "rtiet\x14Oostaustraalsch Tiet\x1cOostaustraalsch Standardtiet\x1aOostaus" + + "traalsch Summertiet\x14Westaustraalsch Tiet\x1cWestaustraalsch Standardt" + + "iet\x1aWestaustraalsch Summertiet\x0aChina-Tiet\x12China-Standardtiet" + + "\x10China-Summertiet\x19Zentraaleuropääsch Tiet!Zentraaleuropääsch Stand" + + "ardtiet\x1fZentraaleuropääsch Summertiet\x15Oosteuropääsch Tiet\x1dOoste" + + "uropääsch Standardtiet\x1bOosteuropääsch Summertiet\x15Westeuropääsch Ti" + + "et\x1dWesteuropääsch Standardtiet\x1bWesteuropääsch Summertiet\x15Gröönw" + + "isch-Welttiet\x0bIndien-Tiet\x18Söödoostasiaatsch Tiet\x17Indoneesch Zen" + + "traaltiet\x13Oostindoneesch Tiet\x13Westindoneesch Tiet\x0bIsrael-Tiet" + + "\x13Israel-Standardtiet\x11Israel-Summertiet\x0eJapaansch Tiet\x16Japaan" + + "sch Standardtiet\x14Japaansch Summertiet\x0fKoreaansch Tiet\x17Koreaansc" + + "h Standardtiet\x15Koreaansch Summertiet\x0bMoskau-Tiet\x13Moskau-Standar" + + "dtiet\x11Moskau-Summertiet\x0c{1}{0}मा\x07{1},{0}\x09आइत\x09सोम\x0fमङ्गल" + + "\x09बुध\x0cबिहि\x0fशुक्र\x09शनि\x12आइतबार\x12सोमबार\x18मङ्गलबार\x12बुधबा" + + "र\x15बिहिबार\x18शुक्रबार\x12शनिबार\x1cपहिलो सत्र\x1fदोस्रो सत्र\x1fतेस" + + "्रो सत्र\x19चौथो सत्र\x15मध्यरात\x0fबिहान\x15अपरान्ह\x0cसाँझ\x12बेलुका" + + "\x19ईसा पूर्व\x1eइस्वीपूर्व\x09सन्\x13ईसा काल\x13गत वर्ष\x13यो वर्ष\x1cअ" + + "र्को वर्ष\x16{0} वर्षमा\x1a{0} वर्ष अघि\x0cबर्ष\x0cसत्र\x22अघिल्लो सत्" + + "र\x13यो सत्र\x1cअर्को सत्र\x17+{0} सत्रमा\x15{0}सत्रमा\x19{0}सत्र अघि" + + "\x16गत महिना\x16यो महिना\x1fअर्को महिना\x19{0} महिनामा#{0} महिना पहिले" + + "\x0fहप्ता\x16गत हप्ता\x16यो हप्ता\x1cआउने हप्ता\x19{0} हप्तामा#{0} हप्ता" + + " पहिले\x19{0}को हप्ता\x1a{0} को हप्ता\x09बार\x0fअस्ति\x0cहिजो\x06आज\x0cभ" + + "ोलि\x0fपर्सि\x13{0} दिनमा\x1d{0} दिन पहिले\x1fहप्ताको बार\x19गत आइतबार" + + "\x19यो आइतबार\x22अर्को आइतबार\x1c{0} आइतबारमा%{0} आइतबारहरूमा%{0}आइतबार " + + "पहिले/{0} आइतबारहरू पहिले\x19गत सोमबार\x19यो सोमबार\x22अर्को सोमबार%{0" + + "} सोमबारहरूमा${0}सोमबारहरूमा.{0}सोमबारहरू पहिले\x1cगत मंगलबार\x1cयो मंगल" + + "बार%अर्को मंगलबार\x1e{0}मंगलबारमा({0} मंगलबारहरूमा({0}मंगलबार पहिले){0" + + "} मंगलबार पहिले2{0} मंगलबारहरू पहिले\x19गत बुधबार\x19यो बुधबार\x22अर्को " + + "बुधबार\x1c{0} बुधबारमा+{0} बुधबारमाहरूमा%{0}बुधबार पहिले.{0}बुधबारहरू " + + "पहिले%{0} बुधबारहरूमा${0}बुधबारहरूमा\x1cगत बिहिबार\x1cयो बिहिबार%अर्को" + + " बिहिबार'{0}बिहिबारहरूमा({0}बिहिबार पहिले1{0}बिहिबारहरू पहिले\x1fगत शुक्" + + "रबार\x1fयो शुक्रबार(अर्को शुक्रबार!{0}शुक्रबारमा*{0}शुक्रबारहरूमा+{0}श" + + "ुक्रबार पहिले4{0}शुक्रबारहरू पहिले\x19गत शनिबार\x19यो शनिबार\x22अर्को " + + "शनिबार\x1b{0}शनिबारमा${0}शनिबारहरूमा%{0}शनिबार पहिले.{0}शनिबारहरू पहिल" + + "े3पूर्वाह्न / अपराह्न\x0fघण्टा\x16यो घडीमा\x19{0} घण्टामा#{0} घण्टा पह" + + "िले\x0fमिनेट\x1fयही मिनेटमा\x19{0} मिनेटमा#{0} मिनेट पहिले\x15सेकेन्ड" + + "\x1f{0} सेकेण्डमा){0} सेकेण्ड पहिले/समन्वित विश्व समयDबेलायती ग्रीष्मकाल" + + "ीन समय&आइरिश मानक समय+अफगानिस्तान समय;केन्द्रीय अफ्रिकी समय2पूर्वी अफ्" + + "रिकी समय2दक्षिण अफ्रिकी समय2पश्चिम अफ्रिकी समय?पश्चिम अफ्रिकी मानक समय" + + "Wपश्चिम अफ्रिकी ग्रीष्मकालीन समय\x22अलस्काको समय/अलस्काको मानक समय/अलस्क" + + "ाको दिवा समय\x19अमेजन समय&अमेजन मानक समय>अमेजन ग्रीष्मकालीन समय%केन्द्" + + "रीय समय2केन्द्रीय मानक समय2केन्द्रीय दिवा समय\x1cपूर्वी समय)पूर्वी मान" + + "क समय)पूर्वी दिवा समय\x1cहिमाली समय)हिमाली मानक समय)हिमाली दिवा समय%प्" + + "यासिफिक समय2प्यासिफिक मानक समय2प्यासिफिक दिवा समय\x19आपिया समय&आपिया म" + + "ानक समय&आपिया दिवा समय\x16अरबी समय#अरबी मानक समय#अरबी दिवा समय(अर्जेनट" + + "िनी समय5अर्जेनटिनी मानक समयMअर्जेनटिनी ग्रीष्मकालीन समय>पश्चिमी अर्जेन" + + "टिनी समयKपश्चिमी अर्जेनटिनी मानक समयcपश्चिमी अर्जेनटिनी ग्रीष्मकालीन स" + + "मय%अर्मेनिया समय2अर्मेनिया मानक समयJअर्मेनिया ग्रीष्मकालीन समय(एट्लान्" + + "टिक समय5एट्लान्टिक मानक समय5एट्लान्टिक दिवा समयGकेन्द्रीय अस्ट्रेलिया " + + "समयTकेन्द्रीय अस्ट्रेलिया मानक समयTकेन्द्रीय अस्ट्रेलिया दिवा समय]केन्" + + "द्रीय पश्चिमी अस्ट्रेलिया समयjकेन्द्रीय पश्चिमी अस्ट्रेलिया मानक समयjक" + + "ेन्द्रीय पश्चिमी अस्ट्रेलिया दिवा समय>पूर्वी अस्ट्रेलिया समयKपूर्वी अस" + + "्ट्रेलिया मानक समयKपूर्वी अस्ट्रेलिया दिवा समयAपश्चिमी अस्ट्रेलिया समय" + + "Nपश्चिमी अस्ट्रेलिया मानक समयNपश्चिमी अस्ट्रेलिया दिवा समय\x22अजरबैजान स" + + "मय/अजरबैजान मानक समयGअजरबैजान ग्रीष्मकालीन समय\x1fएजोरेस् समय,एजोरेस् " + + "मानक समयDएजोरेस् ग्रीष्मकालीन समय%बंगलादेशी समय2बंगलादेशी मानक समयJबंग" + + "लादेशी ग्रीष्मकालीन समय\x1cभुटानी समय\x22बोलिभिया समय(ब्राजिलीया समय5ब" + + "्राजिलिया मानक समयMब्राजिलीया ग्रीष्मकालीन समय;ब्रुनाइ दारूस्सलम समय#क" + + "ेप भर्दे समय0केप भर्दे मानक समयHकेप भर्दे ग्रीष्मकालीन समय/चामोर्रो मा" + + "नक समय\x19चाथाम समय&चाथाम मानक समय&चाथाम दिवा समय\x16चिली समय#चिली मान" + + "क समय;चिली ग्रीष्मकालीन समय\x13चीन समय चीन मानक समय चीन दिवा समय%चोइबा" + + "ल्सन समय2चोइबाल्सन मानक समयJचोइबाल्सन ग्रीष्मकालीन समय/क्रिस्मस टापु स" + + "मय&कोकोस टापु समय+कोलम्बियाली समय8कोलम्बियाली मानक समयPकोलम्बियाली ग्र" + + "ीष्मकालीन समय कुक टापु समय-कुक टापु मानक समयOकुक टापु आधा ग्रीष्मकालीन" + + " समय\x22क्यूबाको समय/क्यूबाको मानक समय/क्यूबाको दिवा समय\x19डेभिस समय?डु" + + "मोन्ट-डी‘ उर्भिले समय,पूर्वी टिमोर समय&इस्टर टापू समय3इस्टर टापू मानक " + + "समय<इस्टर टापू ग्रीष्म समय\x22ईक्वोडोर समय>केन्द्रीय युरोपेली समयKकेन्" + + "द्रीय युरोपेली मानक समयcकेन्द्रीय युरोपेली ग्रीष्मकालीन समय5पूर्वी युर" + + "ोपेली समयBपूर्वी युरोपेली मानक समयZपूर्वी युरोपेली ग्रीष्मकालीन समय<थप" + + "-पूर्वी युरोपेली समय8पश्चिमी युरोपेली समयEपश्चिमी युरोपेली मानक समयGयुरो" + + "पेली ग्रीष्मकालीन समय8फल्कल्यान्ड टापू समयEफल्कल्यान्ड टापू मानक समय]फ" + + "ल्कल्यान्ड टापू ग्रीष्मकालीन समय\x16फिजी समय#फिजी मानक समय;फिजी ग्रीष्" + + "मकालीन समय2फ्रेन्च ग्वाना समयXफ्रेन्च दक्षिणी र अन्टार्टिक समय(गालापाग" + + "ोस् समय(ग्याम्बियर समय\x1fजर्जिया समय,जर्जिया मानक समयDजर्जिया ग्रीष्म" + + "कालीन समय/गिल्बर्ट टापु समय,ग्रीनविच मिन समयGपूर्वी ग्रीनल्यान्डको समय" + + "Tपूर्वी ग्रीनल्यान्डको मानक समयlपूर्वी ग्रीनल्यान्डको ग्रीष्मकालीन समयJप" + + "श्चिमी ग्रीनल्यान्डको समयWपश्चिमी ग्रीनल्यान्डको मानक समयoपश्चिमी ग्री" + + "नल्यान्डको ग्रीष्मकालीन समय#खाडी मानक समय\x1cगुयाना समय,हवाई-एलुटियन स" + + "मय9हवाई-एलुटियन मानक समय9हवाई-एलुटियन दिवा समय\x16हङकङ समय#हङकङ मानक स" + + "मय;हङकङ ग्रीष्मकालीन समय\x19होब्ड समय&होब्ड मानक समय>होब्ड ग्रीष्मकाली" + + "न समय)भारतीय मानक समय/हिन्द महासागर समय(इन्डोचाइना समयGकेन्द्रीय इन्डो" + + "नेशिया समय>पूर्वी इन्डोनेशिया समयAपश्चिमी इन्डोनेशिया समय\x19इरानी समय" + + "&इरानी मानक समय&इरानी दिवा समय(ईर्कुट्स्क समय5ईर्कुट्स्क मानक समयMईर्कुट" + + "्स्क ग्रीष्मकालीन समय\x1cइजरायल समय)इजरायल मानक समय)इजरायल दिवा समय" + + "\x19जापान समय&जापान मानक समय&जापान दिवा समय8पूर्वी काजकस्तान समय8पश्चिम " + + "काजकस्तान समय\x22कोरियाली समय/कोरियाली मानक समय/कोरियाली दिवा समय\x1cक" + + "ोसराए समय.क्रासनोयार्क समय;क्रासनोयार्क मानक समयSक्रासनोयार्क ग्रीष्मक" + + "ालीन समय+किर्गिस्तान समय#लाइन टापु समय#लर्ड हावे समय0लर्ड हावे मानक सम" + + "य0लर्ड हावे दिवा समय/माक्वेरी टापु समय\x1fमागादान समय,मागादान मानक समय" + + "Dमागादान ग्रीष्मकालीन समय\x1fमलेसिया समय%माल्दिभ्स समय\x22मार्किसस समय)म" + + "ार्शल टापु समय\x1cमउरिटस समय)मउरिटस मानक समयAमउरिटस ग्रीष्मकालीन समय" + + "\x19म्वसन समयEउत्तर पश्चिम मेक्सिको समयXउत्तर पश्चिम मेक्सिकोको मानक समय" + + "Xउत्तर पश्चिम मेक्सिकोको दिवा समय>मेक्सिकन प्यासिफिक समयKमेक्सिकन प्यासि" + + "फिक मानक समयKमेक्सिकन प्यासिफिक दिवा समय&उलान बाटोर समय3उलान बाटोर मान" + + "क समयKउलान बाटोर ग्रीष्मकालीन समय\x19मस्को समय&मस्को मानक समय>मस्को ग्" + + "रीष्मकालीन समय\x22म्यानमार समय\x19नाउरु समय\x1cनेपाली समय5नयाँ कालेदोन" + + "िया समयBनयाँ कालेदोनिया मानक समयZनयाँ कालेदोनिया ग्रीष्मकालीन समय1न्यू" + + "जिल्यान्ड समय>न्यूजिल्यान्ड मानक समय>न्यूजिल्यान्ड दिवा समयCन्यूफाउन्ड" + + "ल्यान्डको समयMन्यूफाउनडल्यान्डको मानक समयJन्यूफाउनल्यान्डको दिवा समय" + + "\x16निउए समय/नोर्फल्क टापू समयEफर्नान्डो डे नोरोन्हा समयRफर्नान्डो डे नो" + + "रोन्हा मानक समयjफर्नान्डो डे नोरोन्हा ग्रीष्मकालीन समय1नोभोसिविर्स्क स" + + "मय>नोभोसिविर्स्क मानक समयVनोभोसिविर्स्क ग्रीष्मकालीन समय\x1cओम्स्क समय" + + ")ओम्स्क मानक समयAओम्स्क ग्रीष्मकालीन समय(पाकिस्तानी समय5पाकिस्तानी मानक " + + "समयMपाकिस्तानी ग्रीष्मकालीन समय\x19पालाउ समय3पपूवा न्यू गिनी समय\x22पा" + + "राग्वे समय/पाराग्वे मानक समयGपाराग्वे ग्रीष्मकालीन समय\x16पेरु समय#पेर" + + "ू मानक समय;पेरु ग्रीष्मकालीन समय\x22फिलिपिनी समय/फिलिपिनी मानक समयGफिल" + + "िपिनी ग्रीष्मकालीन समय,फिनिक्स टापु समयUसेन्ट पियर्रे र मिक्युलोनको सम" + + "यbसेन्ट पियर्रे र मिक्युलोनको मानक समयbसेन्ट पियर्रे र मिक्युलोनको दिव" + + "ा समय\x1fपिटकैरण समय\x1cपोनापे समय\x22प्योङयाङ समय\x22रियुनियन समय\x1c" + + "रोथेरा समय\x1fसाखालिन समय,साखालिन मानक समयDसाखालिन ग्रीष्मकालीन समय" + + "\x19सामोअ समय&सामोअ मानक समय&सामोअ दिवा समय(सेयेचेलास् समय/सिंगापुर मानक" + + " समय,सोलोमोन टापु समय2दक्षिण जर्जिया समय\x22सुरिनामा समय\x1cस्योवा समय" + + "\x1cताहिती समय\x1cताइपेइ समय)ताइपेइ मानक समय)ताइपेइ दिवा समय(ताजिकस्तान " + + "समय\x1fतोकेलाउ समय\x19टोंगा समय&टोंगा मानक समय>टोंगा ग्रीष्मकालीन समय" + + "\x16चुउक समय4तुर्कमेनिस्तान समयAतुर्कमेनिस्तान मानक समयfतुर्कमेनिस्तान ग" + + "्रीष्मकालीन मानक समय\x1cटुभालु समय\x1fउरुग्वे समय,उरूग्वे मानक समयDउरु" + + "ग्वे ग्रीष्मकालीन समय.उज्बेकिस्तान समय;उज्बेकिस्तान मानक समयSउज्बेकिस्" + + "तान ग्रीष्मकालीन समय\x1fभानुआतु समय,भानुआतु मानक समयDभानुआतु ग्रीष्मका" + + "लीन समय+भेनेज्युएला समय1भ्लादिभास्टोक समय>भ्लादिभास्टोक मानक समयVभ्लाद" + + "िभास्टोक ग्रीष्मकालीन समय+भोल्गाग्राड समय8भोल्गाग्राद मानक समयPभोल्गाग" + + "्राद ग्रीष्मकालीन समय\x1fभास्टोक समय वेक टापु समय3वालिस् र फुटुना समय" + + "\x1fयाकुस्ट समय,याकुस्ट मानक समयDयाकुस्ट ग्रीष्मकालीन समय1येकाटेरिनबर्ग " + + "समय>येकाटेरिनबर्ग मानक समयVयेकाटेरिनबर्ग ग्रीष्मकालीन समय" + +var bucket77 string = "" + // Size: 10614 bytes + "\x05mnd 1\x05mnd 2\x05mnd 3\x05mnd 4\x05mnd 5\x05mnd 6\x05mnd 7\x05mnd 8" + + "\x05mnd 9\x06mnd 10\x06mnd 11\x06mnd 12\x07maand 1\x07maand 2\x07maand 3" + + "\x07maand 4\x07maand 5\x07maand 6\x07maand 7\x07maand 8\x07maand 9\x08ma" + + "and 10\x08maand 11\x08maand 12\x12begin van de lente\x0aregenwater\x11in" + + "secten ontwaken\x09lentepunt\x0flicht en helder\x09nat graan\x12begin va" + + "n de zomer\x09vol graan\x0boogst graan\x09zomerpunt\x04warm\x04heet\x13b" + + "egin van de herfst\x12einde van de hitte\x0awitte dauw\x0aherfstpunt\x0a" + + "koude dauw\x0ceerste vorst\x13begin van de winter\x0dlichte sneeuw\x0czw" + + "are sneeuw\x0awinterpunt\x04koel\x04koud\x02zo\x02ma\x02di\x02wo\x02do" + + "\x02vr\x02za\x06zondag\x07maandag\x07dinsdag\x08woensdag\x09donderdag" + + "\x07vrijdag\x08zaterdag\x0b1e kwartaal\x0b2e kwartaal\x0b3e kwartaal\x0b" + + "4e kwartaal\x0bmiddernacht\x07ochtend\x05avond\x05nacht\x0d‘s ochtends" + + "\x0c‘s middags\x0b‘s avonds\x0b‘s nachts\x19vóór gewone jaartelling\x12g" + + "ewone jaartelling\x0bvoor R.O.C.\x06Minguo\x08tijdperk\x0avorig jaar\x08" + + "dit jaar\x0cvolgend jaar\x0dover {0} jaar\x10{0} jaar geleden\x02jr\x0ev" + + "orig kwartaal\x0cdit kwartaal\x10volgend kwartaal\x11over {0} kwartaal" + + "\x12over {0} kwartalen\x14{0} kwartaal geleden\x15{0} kwartalen geleden" + + "\x0cvorige maand\x0adeze maand\x0evolgende maand\x0eover {0} maand\x10ov" + + "er {0} maanden\x11{0} maand geleden\x13{0} maanden geleden\x03mnd\x0bvor" + + "ige week\x09deze week\x0dvolgende week\x0dover {0} week\x0eover {0} weke" + + "n\x10{0} week geleden\x11{0} weken geleden\x0fde week van {0}\x0cover {0" + + "} dag\x0eover {0} dagen\x0f{0} dag geleden\x11{0} dagen geleden\x0cover " + + "{0} dgn\x0f{0} dgn geleden\x0fdag van de week\x10afgelopen zondag\x0bdez" + + "e zondag\x14volgende week zondag\x0fover {0} zondag\x11over {0} zondagen" + + "\x12{0} zondag geleden\x14{0} zondagen geleden\x0eafgelopen zon.\x09deze" + + " zon.\x12volgende week zon.\x0dover {0} zon.\x10{0} zon. geleden\x0cafge" + + "lopen zo\x07deze zo\x10volgende week zo\x0bover {0} zo\x0e{0} zo geleden" + + "\x11afgelopen maandag\x0cdeze maandag\x15volgende week maandag\x10over {" + + "0} maandag\x12over {0} maandagen\x13{0} maandag geleden\x15{0} maandagen" + + " geleden\x0fafgelopen maan.\x0adeze maan.\x13volgende week maan.\x0eover" + + " {0} maan.\x11{0} maan. geleden\x0cafgelopen ma\x07deze ma\x10volgende w" + + "eek ma\x0bover {0} ma\x0e{0} ma geleden\x11afgelopen dinsdag\x0cdeze din" + + "sdag\x15volgende week dinsdag\x10over {0} dinsdag\x12over {0} dinsdagen" + + "\x13{0} dinsdag geleden\x15{0} dinsdagen geleden\x0fafgelopen dins.\x0ad" + + "eze dins.\x13volgende week dins.\x0eover {0} dins.\x11{0} dins. geleden" + + "\x0cafgelopen di\x07deze di\x10volgende week di\x0bover {0} di\x0e{0} di" + + " geleden\x12afgelopen woensdag\x0ddeze woensdag\x16volgende week woensda" + + "g\x11over {0} woensdag\x13over {0} woensdagen\x14{0} woensdag geleden" + + "\x16{0} woensdagen geleden\x10afgelopen woens.\x0bdeze woens.\x14volgend" + + "e week woens.\x0fover {0} woens.\x12{0} woens. geleden\x0cafgelopen wo" + + "\x07deze wo\x10volgende week wo\x0bover {0} wo\x0e{0} wo geleden\x13afge" + + "lopen donderdag\x0edeze donderdag\x17volgende week donderdag\x12over {0}" + + " donderdag\x14over {0} donderdagen\x15{0} donderdag geleden\x17{0} donde" + + "rdagen geleden\x11afgelopen donder.\x0cdeze donder.\x15volgende week don" + + "der.\x10over {0} donder.\x13{0} donder. geleden\x0cafgelopen do\x07deze " + + "do\x10volgende week do\x0bover {0} do\x0e{0} do geleden\x11afgelopen vri" + + "jdag\x0cdeze vrijdag\x15volgende week vrijdag\x10over {0} vrijdag\x12ove" + + "r {0} vrijdagen\x13{0} vrijdag geleden\x15{0} vrijdagen geleden\x0fafgel" + + "open vrij.\x0adeze vrij.\x13volgende week vrij.\x0eover {0} vrij.\x11{0}" + + " vrij. geleden\x0cafgelopen vr\x07deze vr\x10volgende week vr\x0bover {0" + + "} vr\x0e{0} vr geleden\x12afgelopen zaterdag\x0ddeze zaterdag\x16volgend" + + "e week zaterdag\x11over {0} zaterdag\x13over {0} zaterdagen\x14{0} zater" + + "dag geleden\x16{0} zaterdagen geleden\x10afgelopen zater.\x0bdeze zater." + + "\x14volgende week zater.\x0fover {0} zater.\x12{0} zater. geleden\x0cafg" + + "elopen za\x07deze za\x10volgende week za\x0bover {0} za\x0e{0} za gelede" + + "n\x07dagdeel\x0ebinnen een uur\x0cover {0} uur\x0f{0} uur geleden\x11bin" + + "nen een minuut\x0fover {0} minuut\x10over {0} minuten\x12{0} minuut gele" + + "den\x13{0} minuten geleden\x0dover {0} min.\x10{0} min. geleden\x10over " + + "{0} seconde\x11over {0} seconden\x13{0} seconde geleden\x14{0} seconden " + + "geleden\x0dover {0} sec.\x10{0} sec. geleden\x08tijdzone\x08{0}-tijd\x0d" + + "zomertijd {0}\x11standaardtijd {0}\x1aGecoördineerde wereldtijd\x10Brits" + + "e zomertijd\x0fIerse zomertijd\x09Acre-tijd\x12Acre-standaardtijd\x0eAcr" + + "e-zomertijd\x0eAfghaanse tijd\x18Centraal-Afrikaanse tijd\x14Oost-Afrika" + + "anse tijd\x14Zuid-Afrikaanse tijd\x14West-Afrikaanse tijd\x1dWest-Afrika" + + "anse standaardtijd\x19West-Afrikaanse zomertijd\x0bAlaska-tijd\x14Alaska" + + "-standaardtijd\x10Alaska-zomertijd\x0dAlma-Ata-tijd\x16Alma-Ata-standaar" + + "dtijd\x12Alma-Ata-zomertijd\x0cAmazone-tijd\x15Amazone-standaardtijd\x11" + + "Amazone-zomertijd\x0cCentral-tijd\x15Central-standaardtijd\x11Central-zo" + + "mertijd\x0cEastern-tijd\x15Eastern-standaardtijd\x11Eastern-zomertijd" + + "\x0dMountain-tijd\x16Mountain-standaardtijd\x12Mountain-zomertijd\x0cPac" + + "ific-tijd\x15Pacific-standaardtijd\x11Pacific-zomertijd\x0bAnadyr-tijd" + + "\x14Anadyr-standaardtijd\x10Anadyr-zomertijd\x09Apia-tijd\x12Apia-standa" + + "ardtijd\x0eApia-zomertijd\x0aAqtau-tijd\x13Aqtau-standaardtijd\x0fAqtau-" + + "zomertijd\x0cAqtöbe-tijd\x15Aqtöbe-standaardtijd\x11Aqtöbe-zomertijd\x0e" + + "Arabische tijd\x17Arabische standaardtijd\x13Arabische zomertijd\x10Arge" + + "ntijnse tijd\x19Argentijnse standaardtijd\x15Argentijnse zomertijd\x15We" + + "st-Argentijnse tijd\x1eWest-Argentijnse standaardtijd\x1aWest-Argentijns" + + "e zomertijd\x0dArmeense tijd\x16Armeense standaardtijd\x12Armeense zomer" + + "tijd\x0dAtlantic-tijd\x16Atlantic-standaardtijd\x12Atlantic-zomertijd" + + "\x18Midden-Australische tijd!Midden-Australische standaardtijd\x1dMidden" + + "-Australische zomertijd#Midden-Australische westelijke tijd,Midden-Austr" + + "alische westelijke standaardtijd(Midden-Australische westelijke zomertij" + + "d\x16Oost-Australische tijd\x1fOost-Australische standaardtijd\x1bOost-A" + + "ustralische zomertijd\x16West-Australische tijd\x1fWest-Australische sta" + + "ndaardtijd\x1bWest-Australische zomertijd\x14Azerbeidzjaanse tijd\x1dAze" + + "rbeidzjaanse standaardtijd\x19Azerbeidzjaanse zomertijd\x0bAzoren-tijd" + + "\x14Azoren-standaardtijd\x10Azoren-zomertijd\x0eBengalese tijd\x17Bengal" + + "ese standaardtijd\x13Bengalese zomertijd\x0eBhutaanse tijd\x10Boliviaans" + + "e tijd\x11Braziliaanse tijd\x1aBraziliaanse standaardtijd\x16Braziliaans" + + "e zomertijd\x0dBruneise tijd\x12Kaapverdische tijd\x1bKaapverdische stan" + + "daardtijd\x17Kaapverdische zomertijd\x0aCasey tijd\x0dChamorro-tijd\x0cC" + + "hatham-tijd\x15Chatham-standaardtijd\x11Chatham-zomertijd\x0eChileense t" + + "ijd\x17Chileense standaardtijd\x13Chileense zomertijd\x0cChinese tijd" + + "\x15Chinese standaardtijd\x11Chinese zomertijd\x10Tsjojbalsan-tijd\x19Ts" + + "jojbalsan-standaardtijd\x15Tsjojbalsan-zomertijd\x16Christmaseilandse ti" + + "jd\x12Cocoseilandse tijd\x11Colombiaanse tijd\x1aColombiaanse standaardt" + + "ijd\x16Colombiaanse zomertijd\x11Cookeilandse tijd\x1aCookeilandse stand" + + "aardtijd\x1cCookeilandse halve zomertijd\x0dCubaanse tijd\x16Cubaanse st" + + "andaardtijd\x12Cubaanse zomertijd\x0aDavis-tijd\x17Dumont-d’Urville-tijd" + + "\x12Oost-Timorese tijd\x11Paaseilandse tijd\x1aPaaseilandse standaardtij" + + "d\x16Paaseilandse zomertijd\x11Ecuadoraanse tijd\x14Midden-Europese tijd" + + "\x1dMidden-Europese standaardtijd\x19Midden-Europese zomertijd\x12Oost-E" + + "uropese tijd\x1bOost-Europese standaardtijd\x17Oost-Europese zomertijd" + + "\x1eVerder-oostelijk-Europese tijd\x12West-Europese tijd\x1bWest-Europes" + + "e standaardtijd\x17West-Europese zomertijd\x15Falklandeilandse tijd\x1eF" + + "alklandeilandse standaardtijd\x1aFalklandeilandse zomertijd\x0dFijische " + + "tijd\x16Fijische standaardtijd\x12Fijische zomertijd\x13Frans-Guyaanse t" + + "ijd&Franse zuidelijke en Antarctische tijd\x16Galapagoseilandse tijd\x14" + + "Gambiereilandse tijd\x0fGeorgische tijd\x18Georgische standaardtijd\x14G" + + "eorgische zomertijd\x14Gilberteilandse tijd\x13Greenwich Mean Time\x15Oo" + + "st-Groenlandse tijd\x1eOost-Groenlandse standaardtijd\x1aOost-Groenlands" + + "e zomertijd\x15West-Groenlandse tijd\x1eWest-Groenlandse standaardtijd" + + "\x1aWest-Groenlandse zomertijd\x15Guamese standaardtijd\x12Golf-standaar" + + "dtijd\x0dGuyaanse tijd\x17Hawaii-Aleoetische tijd Hawaii-Aleoetische sta" + + "ndaardtijd\x1cHawaii-Aleoetische zomertijd\x0fHongkongse tijd\x18Hongkon" + + "gse standaardtijd\x14Hongkongse zomertijd\x09Hovd-tijd\x12Hovd-standaard" + + "tijd\x0eHovd-zomertijd\x0cIndiase tijd\x14Indische Oceaan-tijd\x10Indoch" + + "inese tijd\x1aCentraal-Indonesische tijd\x16Oost-Indonesische tijd\x16We" + + "st-Indonesische tijd\x0cIraanse tijd\x15Iraanse standaardtijd\x11Iraanse" + + " zomertijd\x0dIrkoetsk-tijd\x16Irkoetsk-standaardtijd\x12Irkoetsk-zomert" + + "ijd\x11Israëlische tijd\x1aIsraëlische standaardtijd\x16Israëlische zome" + + "rtijd\x0cJapanse tijd\x15Japanse standaardtijd\x11Japanse zomertijd\x1eP" + + "etropavlovsk-Kamtsjatski-tijd'Petropavlovsk-Kamtsjatski-standaardtijd#Pe" + + "tropavlovsk-Kamtsjatski-zomertijd\x12Oost-Kazachse tijd\x12West-Kazachse" + + " tijd\x0eKoreaanse tijd\x17Koreaanse standaardtijd\x13Koreaanse zomertij" + + "d\x0dKosraese tijd\x10Krasnojarsk-tijd\x19Krasnojarsk-standaardtijd\x15K" + + "rasnojarsk-zomertijd\x10Kirgizische tijd\x0aLanka-tijd\x12Line-eilandse " + + "tijd\x17Lord Howe-eilandse tijd Lord Howe-eilandse standaardtijd\x1cLord" + + " Howe-eilandse zomertijd\x0cMacause tijd\x15Macause standaardtijd\x11Mac" + + "ause zomertijd\x17Macquarie-eilandse tijd\x0cMagadan-tijd\x15Magadan-sta" + + "ndaardtijd\x11Magadan-zomertijd\x10Maleisische tijd\x10Maldivische tijd" + + "\x16Marquesaseilandse tijd\x15Marshalleilandse tijd\x11Mauritiaanse tijd" + + "\x1aMauritiaanse standaardtijd\x16Mauritiaanse zomertijd\x0bMawson-tijd" + + "\x19Noordwest-Mexicaanse tijd\x22Noordwest-Mexicaanse standaardtijd\x1eN" + + "oordwest-Mexicaanse zomertijd\x17Mexicaanse Pacific-tijd Mexicaanse Paci" + + "fic-standaardtijd\x1cMexicaanse Pacific-zomertijd\x10Ulaanbaatar-tijd" + + "\x19Ulaanbaatar-standaardtijd\x15Ulaanbaatar-zomertijd\x0bMoskou-tijd" + + "\x14Moskou-standaardtijd\x10Moskou-zomertijd\x0fMyanmarese tijd\x0fNauru" + + "aanse tijd\x0dNepalese tijd\x17Nieuw-Caledonische tijd Nieuw-Caledonisch" + + "e standaardtijd\x1cNieuw-Caledonische zomertijd\x14Nieuw-Zeelandse tijd" + + "\x1dNieuw-Zeelandse standaardtijd\x19Nieuw-Zeelandse zomertijd\x11Newfou" + + "ndland-tijd\x1aNewfoundland-standaardtijd\x16Newfoundland-zomertijd\x0bN" + + "iuese tijd\x14Norfolkeilandse tijd\x18Fernando de Noronha-tijd!Fernando " + + "de Noronha-standaardtijd\x1dFernando de Noronha-zomertijd\x19Noordelijk " + + "Mariaanse tijd\x10Novosibirsk-tijd\x19Novosibirsk-standaardtijd\x15Novos" + + "ibirsk-zomertijd\x09Omsk-tijd\x12Omsk-standaardtijd\x0eOmsk-zomertijd" + + "\x10Pakistaanse tijd\x19Pakistaanse standaardtijd\x15Pakistaanse zomerti" + + "jd\x0cBelause tijd\x1aPapoea-Nieuw-Guineese tijd\x12Paraguayaanse tijd" + + "\x1bParaguayaanse standaardtijd\x17Paraguayaanse zomertijd\x0ePeruaanse " + + "tijd\x17Peruaanse standaardtijd\x13Peruaanse zomertijd\x0fFilipijnse tij" + + "d\x18Filipijnse standaardtijd\x14Filipijnse zomertijd\x14Phoenixeilandse" + + " tijd\x1dSaint Pierre en Miquelon-tijd&Saint Pierre en Miquelon-standaar" + + "dtijd\x22Saint Pierre en Miquelon-zomertijd\x15Pitcairneilandse tijd\x0c" + + "Pohnpei-tijd\x0ePyongyang-tijd\x0eQyzylorda-tijd\x17Qyzylorda-standaardt" + + "ijd\x13Qyzylorda-zomertijd\x0fRéunionse tijd\x0cRothera-tijd\x0dSachalin" + + "-tijd\x16Sachalin-standaardtijd\x12Sachalin-zomertijd\x0bSamara-tijd\x14" + + "Samara-standaardtijd\x10Samara-zomertijd\x0eSamoaanse tijd\x17Samoaanse " + + "standaardtijd\x13Samoaanse zomertijd\x0eSeychelse tijd\x19Singaporese st" + + "andaardtijd\x15Salomonseilandse tijd\x14Zuid-Georgische tijd\x0fSurinaam" + + "se tijd\x0aSyowa-tijd\x10Tahitiaanse tijd\x0bTaipei-tijd\x14Taipei-stand" + + "aardtijd\x10Taipei-zomertijd\x0fTadzjiekse tijd\x15Tokelau-eilandse tijd" + + "\x0eTongaanse tijd\x17Tongaanse standaardtijd\x13Tongaanse zomertijd\x0c" + + "Chuukse tijd\x0fTurkmeense tijd\x18Turkmeense standaardtijd\x14Turkmeens" + + "e zomertijd\x10Tuvaluaanse tijd\x11Uruguayaanse tijd\x1aUruguayaanse sta" + + "ndaardtijd\x16Uruguayaanse zomertijd\x0eOezbeekse tijd\x17Oezbeekse stan" + + "daardtijd\x13Oezbeekse zomertijd\x11Vanuatuaanse tijd\x1aVanuatuaanse st" + + "andaardtijd\x16Vanuatuaanse zomertijd\x11Venezolaanse tijd\x10Vladivosto" + + "k-tijd\x19Vladivostok-standaardtijd\x15Vladivostok-zomertijd\x0eWolgogra" + + "d-tijd\x17Wolgograd-standaardtijd\x13Wolgograd-zomertijd\x0bVostok-tijd" + + "\x12Wake-eilandse tijd\x17Wallis en Futunase tijd\x0dJakoetsk-tijd\x16Ja" + + "koetsk-standaardtijd\x12Jakoetsk-zomertijd\x14Jekaterinenburg-tijd\x1dJe" + + "katerinenburg-standaardtijd\x19Jekaterinenburg-zomertijd" + +var bucket78 string = "" + // Size: 8165 bytes + "\x03SRT\x03ng1\x03ng2\x03ng3\x03ng4\x03ng5\x03ng6\x03ng7\x03ng8\x03ng9" + + "\x04ng10\x04ng11\x04kris\x0fngwɛn matáhra\x0cngwɛn ńmba\x0cngwɛn ńlal" + + "\x0bngwɛn ńna\x0cngwɛn ńtan\x0dngwɛn ńtuó\x12ngwɛn hɛmbuɛrí\x0dngwɛn lɔm" + + "bi\x0fngwɛn rɛbvuâ\x0angwɛn wum\x11ngwɛn wum navǔr\x09krísimin\x0cTindɛ " + + "nvúr\x0cTindɛ ńmba\x0cTindɛ ńlal\x0bTindɛ ńna\x05maná\x05kugú\x0cBó Lahl" + + "ɛ̄\x0bPfiɛ Burī\x02BL\x02PB\x0dPīl/Lahlɛ̄\x04Mbvu\x06Ngwɛn\x04Duö\x07Na" + + "kugú\x04Dɔl\x08Namáná\x19Máná, Muó, Kugú, Bvul\x05Wulā\x07Mpálâ\x06Nyiɛl" + + "\x0dNkɛ̌l wulā\x04f.m.\x04e.m.\x13'kl'. HH:mm:ss zzzz\x13'kl'. HH.mm.ss " + + "zzzz\x06månad\x0eforrige månad\x0cdenne månad\x0cneste månad\x04veke\x0c" + + "uken med {0}\x07vekedag\x14søndag forrige veke\x12søndag denne veke\x12s" + + "øndag neste veke\x14måndag forrige veke\x12måndag denne veke\x12måndag " + + "neste veke\x13tysdag forrige veke\x11tysdag denne veke\x11tysdag neste v" + + "eke\x13onsdag forrige veke\x11onsdag denne veke\x12onsdage neste veke" + + "\x14torsdag forrige veke\x12torsdag denne veke\x12torsdag neste veke\x13" + + "fredag forrige veke\x11fredag denne veke\x11fredag neste veke\x14laurdag" + + " forrige veke\x12laurdag denne veke\x12laurdag neste veke\x0df.m./e.m.-v" + + "al\x04sone\x17vestafrikansk sommartid\x1asentralaustralsk sommartid\x1fv" + + "est-sentralaustralsk sommartid\x17austaustralsk sommartid\x17vestaustral" + + "sk sommartid\x1asentraleuropeisk sommartid\x17austeuropeisk sommartid" + + "\x17vesteuropeisk sommartid\x22EEEE , 'lyɛ'̌ʼ d 'na' MMMM, y G\x1b'lyɛ'̌" + + "ʼ d 'na' MMMM, y G\x15saŋ tsetsɛ̀ɛ lùm\x11saŋ kàg ngwóŋ\x11saŋ lepyè sh" + + "úm\x0asaŋ cÿó\x13saŋ tsɛ̀ɛ cÿó\x0fsaŋ njÿoláʼ\x1dsaŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ" + + "\x0dsaŋ mbʉ̀ŋ\x15saŋ ngwɔ̀ʼ mbÿɛ\x15saŋ tàŋa tsetsáʼ\x0esaŋ mejwoŋó\x09s" + + "aŋ lùm\x16lyɛʼɛ́ sẅíŋtè\x0emvfò lyɛ̌ʼ\x1bmbɔ́ɔntè mvfò lyɛ̌ʼ\x15tsètsɛ̀ɛ" + + " lyɛ̌ʼ!mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ\x14mvfò màga lyɛ̌ʼ\x0emàga lyɛ̌ʼ\x0cmbaʼá" + + "mbaʼ\x0ancwònzém\x0fmé zyé Yěsô\x16mé gÿo ńzyé Yěsô\x06m.z.Y.\x08m.g.n.Y" + + ". EEEE , 'lyɛ'̌ʼ d 'na' MMMM, y\x19'lyɛ'̌ʼ d 'na' MMMM, y\x0etsɔ́ fʉ̀ʼ" + + "\x06ngùʼ\x08lyɛ̌ʼ\x19jǔɔ gẅie à ka tɔ̌g\x0dlyɛ̌ʼɔɔn\x18jǔɔ gẅie à ne ntó" + + "o\x0cngàba láʼ\x0cfʉ̀ʼ nèm\x04Tiop\x04Pɛt\x0aDuɔ̱ɔ̱\x04Guak\x04Duä\x03Ko" + + "r\x03Pay\x04Thoo\x05Tɛɛ\x03Laa\x03Kur\x03Tid\x0eTiop thar pɛt\x0cDuɔ̱ɔ̱ŋ" + + "\x05Duät\x08Kornyoot\x0cPay yie̱tni\x09Tho̱o̱r\x06Tɛɛr\x05Laath\x12Tio̱p" + + " in di̱i̱t\x05Cäŋ\x04Jiec\x04Rɛw\x07Diɔ̱k\x06Ŋuaan\x06Dhieec\x07Bäkɛl" + + "\x0cCäŋ kuɔth\x0aJiec la̱t\x0bRɛw lätni\x0eDiɔ̱k lätni\x0dŊuaan lätni" + + "\x0dDhieec lätni\x0eBäkɛl lätni\x15Päth diɔk tin nhiam\x16Päth diɔk tin " + + "guurɛ\x1ePäth diɔk tin wä kɔɔriɛn\x1bPäth diɔk tin jiɔakdiɛn\x02RW\x03TŊ" + + "\x13A ka̱n Yecu ni dap\x0eƐ ca Yecu dap\x0ezzzz h:mm:ss a\x0bz h:mm:ss a" + + "\x10Gua̱a̱th Ruëc\x07Ruɔ̱n\x05Jiɔk\x03Pan\x05Walɛ\x04Ruun\x0bNi̱n jokä" + + "\x05Thaak\x09Thɛkɛni\x0aEshaaha za\x03Ama\x03Gur\x03Bit\x03Elb\x03Cam" + + "\x03Wax\x03Ado\x03Hag\x03Ful\x03Onk\x03Sad\x03Mud\x07Amajjii\x0bGuraandh" + + "ala\x0bBitooteessa\x04Elba\x06Caamsa\x0aWaxabajjii\x0aAdooleessa\x07Haga" + + "yya\x08Fuulbana\x0cOnkololeessa\x07Sadaasa\x06Muddee\x03Dil\x03Wix\x03Qi" + + "b\x03Rob\x03Kam\x03Jim\x03San\x07Dilbata\x07Wiixata\x07Qibxata\x06Roobii" + + "\x07Kamiisa\x07Jimaata\x07Sanbata\x0aKurmaana 1\x0aKurmaana 2\x0aKurmaan" + + "a 3\x0aKurmaana 4\x02WD\x02WB\x10Dheengadda Jeesu\x02KD\x15ଜାନୁଆରୀ\x15ଫେ" + + "ବୃଆରୀ\x15ମାର୍ଚ୍ଚ\x12ଅପ୍ରେଲ\x06ମଇ\x09ଜୁନ\x0fଜୁଲାଇ\x0fଅଗଷ୍ଟ\x1eସେପ୍ଟେମ୍ବ" + + "ର\x15ଅକ୍ଟୋବର\x15ନଭେମ୍ବର\x18ଡିସେମ୍ବର\x06ଜା\x06ଫେ\x06ମା\x03ଅ\x06ଜୁ\x06ସେ" + + "\x03ନ\x06ଡି\x09ରବି\x09ସୋମ\x0fମଙ୍ଗଳ\x09ବୁଧ\x0cଗୁରୁ\x0fଶୁକ୍ର\x09ଶନି\x12ରବି" + + "ବାର\x12ସୋମବାର\x18ମଙ୍ଗଳବାର\x12ବୁଧବାର\x15ଗୁରୁବାର\x18ଶୁକ୍ରବାର\x12ଶନିବାର" + + "\x03ର\x06ସୋ\x03ମ\x06ବୁ\x06ଗୁ\x06ଶୁ\x03ଶDଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ ସମୟ(ଗାଲାପାଗ" + + "ୋସ୍ ସମୟ\x18EEEE, d MMMM, y 'аз' G\x12d MMMM, y 'аз' G\x11dd MMM y 'аз'" + + " G\x0cянвары\x0eфевралы\x10мартъийы\x0cапрелы\x08майы\x08июны\x08июлы" + + "\x0eавгусты\x10сентябры\x0eоктябры\x0cноябры\x0eдекабры\x07Янв.\x09Февр." + + "\x09Март.\x07Апр.\x06Май\x08Июнь\x08Июль\x07Авг.\x09Сент.\x07Окт.\x09Ноя" + + "б.\x07Дек.\x06хцб\x06крс\x06дцг\x06ӕрт\x06цпр\x06мрб\x06сбт\x02Х\x02К" + + "\x02Д\x02Ӕ\x02Ц\x02М\x02С\x12хуыцаубон\x12къуырисӕр\x0cдыццӕг\x10ӕртыццӕ" + + "г\x10цыппӕрӕм\x12майрӕмбон\x0aсабат\x06Хцб\x06Крс\x06Дцг\x06Ӕрт\x06Цпр" + + "\x06Мрб\x06Сбт\x12Хуыцаубон\x12Къуырисӕр\x0cДыццӕг\x10Ӕртыццӕг\x10Цыппӕр" + + "ӕм\x12Майрӕмбон\x0aСабат\x0c1-аг кв.\x0c2-аг кв.\x0c3-аг кв.\x0c4-ӕм кв" + + ".\x151-аг квартал\x152-аг квартал\x153-аг квартал\x154-ӕм квартал\x1dӕмб" + + "исбоны размӕ\x1dӕмбисбоны фӕстӕ\x09н.д.а.\x06н.д.\x16EEEE, d MMMM, y 'а" + + "з'\x10d MMMM, y 'аз'\x0fdd MMM y 'аз'\x06Дуг\x04Аз\x06Мӕй\x0cКъуыри\x06" + + "Бон\x12Ӕндӕрӕбон\x08Знон\x08Абон\x06Сом\x0eИннӕбон\x17{0} боны фӕстӕ" + + "\x17{0} бон раздӕр\x17{0} боны размӕ\x17Къуырийы бон\x15Боны период\x0aС" + + "ахат\x1b{0} сахаты фӕстӕ\x1b{0} сахаты размӕ\x0aМинут\x0cСекунд\x19Рӕст" + + "ӕджы зонӕ\x10{0} рӕстӕг2Астӕуккаг Европӕйаг рӕстӕгGАстӕуккаг Европӕйаг " + + "стандартон рӕстӕгCАстӕуккаг Европӕйаг сӕрдыгон рӕстӕг,Скӕсӕн Европӕйаг " + + "рӕстӕгAСкӕсӕн Европӕйаг стандартон рӕстӕг=Скӕсӕн Европӕйаг сӕрдыгон рӕс" + + "тӕг2Ныгъуылӕн Европӕйаг рӕстӕгGНыгъуылӕн Европӕйаг стандартон рӕстӕгCНы" + + "гъуылӕн Европӕйаг сӕрдыгон рӕстӕг%Гуырдзыстоны рӕстӕг:Гуырдзыстоны стан" + + "дартон рӕстӕг6Гуырдзыстоны сӕрдыгон рӕстӕг0Гринвичы рӕстӕмбис рӕстӕг" + + "\x1dМӕскуыйы рӕстӕг2Мӕскуыйы стандартон рӕстӕг.Мӕскуыйы сӕрдыгон рӕстӕг" + + "\x06ਜਨ\x09ਫ਼ਰ\x0cਮਾਰਚ\x0fਅਪ੍ਰੈ\x06ਮਈ\x09ਜੂਨ\x0cਜੁਲਾ\x06ਅਗ\x09ਸਤੰ\x0cਅਕਤੂ" + + "\x09ਨਵੰ\x09ਦਸੰ\x03ਜ\x06ਫ਼\x06ਮਾ\x03ਅ\x03ਮ\x06ਜੂ\x06ਜੁ\x03ਸ\x03ਨ\x03ਦ\x0f" + + "ਜਨਵਰੀ\x12ਫ਼ਰਵਰੀ\x12ਅਪ੍ਰੈਲ\x0fਜੁਲਾਈ\x0cਅਗਸਤ\x0fਸਤੰਬਰ\x12ਅਕਤੂਬਰ\x0fਨਵੰਬਰ" + + "\x0fਦਸੰਬਰ\x06ਐਤ\x09ਸੋਮ\x0cਮੰਗਲ\x0cਬੁੱਧ\x09ਵੀਰ\x12ਸ਼ੁੱਕਰ\x15ਸ਼ਨਿੱਚਰ\x03ਐ" + + "\x06ਸੋ\x06ਮੰ\x09ਬੁੱ\x06ਵੀ\x0cਸ਼ੁੱ\x06ਸ਼\x09ਮੰਗ\x0fਸ਼ੁੱਕ\x0fਸ਼ਨਿੱ\x0fਐਤਵਾ" + + "ਰ\x12ਸੋਮਵਾਰ\x15ਮੰਗਲਵਾਰ\x15ਬੁੱਧਵਾਰ\x12ਵੀਰਵਾਰ\x1bਸ਼ੁੱਕਰਵਾਰ\x1eਸ਼ਨਿੱਚਰਵਾਰ" + + "\x13ਤਿਮਾਹੀ1\x13ਤਿਮਾਹੀ2\x13ਤਿਮਾਹੀ3\x13ਤਿਮਾਹੀ4\x22ਪਹਿਲੀ ਤਿਮਾਹੀ\x1fਦੂਜੀ ਤਿਮ" + + "ਾਹੀ\x1fਤੀਜੀ ਤਿਮਾਹੀ\x1fਚੌਥੀ ਤਿਮਾਹੀ\x16ਅੱਧੀ ਰਾਤ\x0eਪੂ.ਦੁ.\x0eਬਾ.ਦੁ.\x0fਸ" + + "ਵੇਰੇ\x15ਦੁਪਹਿਰੇ\x12ਸ਼ਾਮੀਂ\x0fਰਾਤੀਂ\x04ਸ.\x07ਸ਼.\x0cਸ਼ਾਮ\x09ਰਾਤ\x19ਈਸਵੀ" + + " ਪੂਰਵ&ਈਸਵੀ ਪੂਰਵ ਯੁੱਗ\x16ਈਸਵੀ ਸੰਨ\x19ਈਸਵੀ ਯੁੱਗ\x0cਈ. ਪੂ.\x14ਈ. ਪੂ. ਸੰ." + + "\x09ਸੰਨ\x0cਈ. ਸੰ.\x0bਈ.ਪੂ.\x12ਈ.ਪੂ.ਸੰ.\x0bਈ.ਸੰ.\x09ਚੇਤ\x0fਵੈਸਾਖ\x09ਜੇਠ" + + "\x09ਹਾੜ\x0cਸਾਉਣ\x0fਭਾਦੋਂ\x0cਅੱਸੂ\x0cਕੱਤਕ\x0cਮੱਘਰ\x09ਪੋਹ\x09ਮਾਘ\x0cਫੱਗਣ" + + "\x03੧\x03੨\x03੩\x03੪\x03੫\x03੬\x03੭\x03੮\x03੯\x06੧੦\x06੧੧\x06੧੨\x0cਸਾਕਾ" + + "\x0cਸੰਮਤ\x09ਸਾਲ\x19ਪਿਛਲਾ ਸਾਲ\x10ਇਹ ਸਾਲ\x16ਅਗਲਾ ਸਾਲ\x1a{0} ਸਾਲ ਵਿੱਚ {0} ਸ" + + "ਾਲਾਂ ਵਿੱਚ {0} ਸਾਲ ਪਹਿਲਾਂ\x12ਤਿਮਾਹੀ\x22ਪਿਛਲੀ ਤਿਮਾਹੀ\x19ਇਸ ਤਿਮਾਹੀ\x1fਅਗਲ" + + "ੀ ਤਿਮਾਹੀ#{0} ਤਿਮਾਹੀ ਵਿੱਚ){0} ਤਿਮਾਹੀਆਂ ਵਿੱਚ){0} ਤਿਮਾਹੀ ਪਹਿਲਾਂ/{0} ਤਿਮਾਹ" + + "ੀਆਂ ਪਹਿਲਾਂ\x19ਇਹ ਤਿਮਾਹੀ\x0fਮਹੀਨਾ\x1fਪਿਛਲਾ ਮਹੀਨਾ\x16ਇਹ ਮਹੀਨਾ\x1cਅਗਲਾ ਮਹ" + + "ੀਨਾ {0} ਮਹੀਨੇ ਵਿੱਚ&{0} ਮਹੀਨਿਆਂ ਵਿੱਚ&{0} ਮਹੀਨਾ ਪਹਿਲਾਂ&{0} ਮਹੀਨੇ ਪਹਿਲਾਂ" + + "\x0fਹਫ਼ਤਾ\x1fਪਿਛਲਾ ਹਫ਼ਤਾ\x16ਇਹ ਹਫ਼ਤਾ\x1cਅਗਲਾ ਹਫ਼ਤਾ {0} ਹਫ਼ਤੇ ਵਿੱਚ&{0} ਹਫ" + + "਼ਤਿਆਂ ਵਿੱਚ&{0} ਹਫ਼ਤਾ ਪਹਿਲਾਂ&{0} ਹਫ਼ਤੇ ਪਹਿਲਾਂ\x1a{0} ਦਾ ਹਫ਼ਤਾ\x09ਦਿਨ" + + "\x1fਬੀਤਿਆ ਕੱਲ੍ਹ\x09ਅੱਜ\x0cਭਲਕੇ" + +var bucket79 string = "" + // Size: 19781 bytes + "\x1a{0} ਦਿਨ ਵਿੱਚ {0} ਦਿਨਾਂ ਵਿੱਚ {0} ਦਿਨ ਪਹਿਲਾਂ ਹਫ਼ਤੇ ਦਾ ਦਿਨ\x1fਪਿਛਲਾ ਐਤਵ" + + "ਾਰ\x16ਇਸ ਐਤਵਾਰ\x1cਅਗਲਾ ਐਤਵਾਰ {0} ਐਤਵਾਰ ਵਿੱਚ&{0} ਐਤਵਾਰਾਂ ਵਿੱਚ&{0} ਐਤਵਾਰ" + + " ਪਹਿਲਾਂ\x16ਪਿਛਲਾ ਐਤ\x0dਇਹ ਐਤ\x13ਅਗਲਾ ਐਤ\x22ਪਿਛਲਾ ਸੋਮਵਾਰ\x19ਇਸ ਸੋਮਵਾਰ\x1f" + + "ਅਗਲਾ ਸੋਮਵਾਰ#{0} ਸੋਮਵਾਰ ਵਿੱਚ){0} ਸੋਮਵਾਰਾਂ ਵਿੱਚ){0} ਸੋਮਵਾਰ ਪਹਿਲਾਂ\x19ਪਿਛ" + + "ਲਾ ਸੋਮ\x10ਇਸ ਸੋਮ\x16ਅਗਲਾ ਸੋਮ%ਪਿਛਲਾ ਮੰਗਲਵਾਰ\x1cਇਹ ਮੰਗਲਵਾਰ\x22ਅਗਲਾ ਮੰਗਲਵ" + + "ਾਰ&{0} ਮੰਗਲਵਾਰ ਵਿੱਚ,{0} ਮੰਗਲਵਾਰਾਂ ਵਿੱਚ,{0} ਮੰਗਲਵਾਰ ਪਹਿਲਾਂ\x1cਪਿਛਲਾ ਮੰਗ" + + "ਲ\x13ਇਹ ਮੰਗਲ\x19ਅਗਲਾ ਮੰਗਲ%ਪਿਛਲਾ ਬੁੱਧਵਾਰ\x1cਇਹ ਬੁੱਧਵਾਰ\x22ਅਗਲਾ ਬੁੱਧਵਾਰ&" + + "{0} ਬੁੱਧਵਾਰ ਵਿੱਚ,{0} ਬੁੱਧਵਾਰਾਂ ਵਿੱਚ,{0} ਬੁੱਧਵਾਰ ਪਹਿਲਾਂ\x1cਪਿਛਲਾ ਬੁੱਧ\x13" + + "ਇਹ ਬੁੱਧ\x19ਅਗਲਾ ਬੁੱਧ\x22ਪਿਛਲਾ ਵੀਰਵਾਰ\x19ਇਹ ਵੀਰਵਾਰ\x1fਅਗਲਾ ਵੀਰਵਾਰ#{0} ਵ" + + "ੀਰਵਾਰ ਵਿੱਚ){0} ਵੀਰਵਾਰਾਂ ਵਿੱਚ){0} ਵੀਰਵਾਰ ਪਹਿਲਾਂ\x19ਪਿਛਲਾ ਵੀਰ\x10ਇਹ ਵੀਰ" + + "\x16ਅਗਲਾ ਵੀਰ+ਪਿਛਲਾ ਸ਼ੁੱਕਰਵਾਰ\x22ਇਹ ਸ਼ੁੱਕਰਵਾਰ(ਅਗਲਾ ਸ਼ੁੱਕਰਵਾਰ,{0} ਸ਼ੁੱਕਰਵਾ" + + "ਰ ਵਿੱਚ2{0} ਸ਼ੁੱਕਰਵਾਰਾਂ ਵਿੱਚ2{0} ਸ਼ੁੱਕਰਵਾਰ ਪਹਿਲਾਂ\x22ਪਿਛਲਾ ਸ਼ੁੱਕਰ\x19ਇਹ" + + " ਸ਼ੁੱਕਰ\x1fਅਗਲਾ ਸ਼ੁੱਕਰ\x1cਪਿਛਲਾ ਸ਼ੁੱ\x13ਇਹ ਸ਼ੁੱ\x19ਅਗਲਾ ਸ਼ੁੱ.ਪਿਛਲਾ ਸ਼ਨਿੱ" + + "ਚਰਵਾਰ%ਇਹ ਸ਼ਨਿੱਚਰਵਾਰ+ਅਗਲਾ ਸ਼ਨਿੱਚਰਵਾਰ/{0} ਸ਼ਨਿੱਚਰਵਾਰ ਵਿੱਚ5{0} ਸ਼ਨਿੱਚਰਵਾਰ" + + "ਾਂ ਵਿੱਚ5{0} ਸ਼ਨਿੱਚਰਵਾਰ ਪਹਿਲਾਂ%ਪਿਛਲਾ ਸ਼ਨਿੱਚਰ\x1cਇਹ ਸ਼ਨਿੱਚਰ\x22ਅਗਲਾ ਸ਼ਨਿ" + + "ੱਚਰ\x1fਪਿਛਲਾ ਸ਼ਨਿੱ\x16ਇਹ ਸ਼ਨਿੱ\x1cਅਗਲਾ ਸ਼ਨਿੱ\x1dਪੂ.ਦੁ./ਬਾ.ਦੁ.\x0cਘੰਟਾ" + + "\x13ਇਸ ਘੰਟੇ\x1d{0} ਘੰਟੇ ਵਿੱਚ#{0} ਘੰਟਿਆਂ ਵਿੱਚ#{0} ਘੰਟਾ ਪਹਿਲਾਂ#{0} ਘੰਟੇ ਪਹ" + + "ਿਲਾਂ\x06ਘੰ\x0cਮਿੰਟ\x13ਇਸ ਮਿੰਟ\x1d{0} ਮਿੰਟ ਵਿੱਚ#{0} ਮਿੰਟਾਂ ਵਿੱਚ#{0} ਮਿੰ" + + "ਟ ਪਹਿਲਾਂ\x0fਸਕਿੰਟ\x09ਹੁਣ {0} ਸਕਿੰਟ ਵਿੱਚ&{0} ਸਕਿੰਟਾਂ ਵਿੱਚ&{0} ਸਕਿੰਟ ਪਹਿ" + + "ਲਾਂ\x1fਇਲਾਕਾਈ ਵੇਲਾ\x10{0} ਵੇਲਾ&{0} ਪ੍ਰਕਾਸ਼ ਵੇਲਾ {0} ਮਿਆਰੀ ਵੇਲਾ?ਬ੍ਰਿਟਿਸ" + + "਼ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ/ਆਇਰਿਸ਼ ਮਿਆਰੀ ਵੇਲਾ.ਅਫ਼ਗਾਨਿਸਤਾਨ ਵੇਲਾ2ਕੇਂਦਰੀ ਅਫਰੀਕਾ ਵੇਲਾ" + + "/ਪੂਰਬੀ ਅਫਰੀਕਾ ਵੇਲਾBਦੱਖਣੀ ਅਫ਼ਰੀਕਾ ਮਿਆਰੀ ਵੇਲਾ/ਪੱਛਮੀ ਅਫਰੀਕਾ ਵੇਲਾ?ਪੱਛਮੀ ਅਫਰੀ" + + "ਕਾ ਮਿਆਰੀ ਵੇਲਾIਪੱਛਮੀ ਅਫਰੀਕਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਅਲਾਸਕਾ ਵੇਲਾ/ਅਲਾਸਕਾ ਮਿਆਰੀ " + + "ਵੇਲਾ5ਅਲਾਸਕਾ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1fਅਲਮਾਟੀ ਸਮਾਂ/ਅਲਮਾਟੀ ਮਿਆਰੀ ਸਮਾਂ9ਅਲਮਾਟੀ ਗਰਮੀ-" + + "ਰੁੱਤ ਸਮਾਂ\x1fਅਮੇਜ਼ਨ ਵੇਲਾ/ਅਮੇਜ਼ਨ ਮਿਆਰੀ ਵੇਲਾ9ਅਮੇਜ਼ਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾBਉੱਤਰੀ" + + " ਅਮਰੀਕੀ ਕੇਂਦਰੀ ਵੇਲਾRਉੱਤਰੀ ਅਮਰੀਕੀ ਕੇਂਦਰੀ ਮਿਆਰੀ ਵੇਲਾXਉੱਤਰੀ ਅਮਰੀਕੀ ਕੇਂਦਰੀ ਪ" + + "੍ਰਕਾਸ਼ ਵੇਲਾ?ਉੱਤਰੀ ਅਮਰੀਕੀ ਪੂਰਬੀ ਵੇਲਾOਉੱਤਰੀ ਅਮਰੀਕੀ ਪੂਰਬੀ ਮਿਆਰੀ ਵੇਲਾUਉੱਤਰ" + + "ੀ ਅਮਰੀਕੀ ਪੂਰਬੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾEਉੱਤਰੀ ਅਮਰੀਕੀ ਮਾਉਂਟੇਨ ਵੇਲਾUਉੱਤਰੀ ਅਮਰੀਕੀ ਮਾਉ" + + "ਂਟੇਨ ਮਿਆਰੀ ਵੇਲਾ[ਉੱਤਰੀ ਅਮਰੀਕੀ ਮਾਉਂਟੇਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾEਉੱਤਰੀ ਅਮਰੀਕੀ ਪੈਸਿਫਿਕ" + + " ਵੇਲਾUਉੱਤਰੀ ਅਮਰੀਕੀ ਪੈਸਿਫਿਕ ਮਿਆਰੀ ਵੇਲਾ[ਉੱਤਰੀ ਅਮਰੀਕੀ ਪੈਸਿਫਿਕ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ" + + "\x19ਐਪੀਆ ਵੇਲਾ)ਐਪੀਆ ਮਿਆਰੀ ਵੇਲਾ/ਐਪੀਆ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1cਅਕਤਾਉ ਸਮਾਂ,ਅਕਤਾਉ ਮਿਆਰ" + + "ੀ ਸਮਾਂ6ਅਕਤਾਉ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ\x1cਅਕਤੋਬ ਸਮਾਂ,ਅਕਤੋਬ ਮਿਆਰੀ ਸਮਾਂ6ਅਕਤੋਬ ਗਰਮੀ-" + + "ਰੁੱਤ ਸਮਾਂ\x19ਅਰਬੀ ਵੇਲਾ)ਅਰਬੀ ਮਿਆਰੀ ਵੇਲਾ/ਅਰਬੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ%ਅਰਜਨਟੀਨਾ ਵੇਲਾ" + + "5ਅਰਜਨਟੀਨਾ ਮਿਆਰੀ ਵੇਲਾ?ਅਰਜਨਟੀਨਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ5ਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਵੇਲਾEਪੱਛਮੀ ਅ" + + "ਰਜਨਟੀਨਾ ਮਿਆਰੀ ਵੇਲਾOਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਅਰਮੀਨੀਆ ਵੇਲਾ2ਅਰਮੀਨ" + + "ੀਆ ਮਿਆਰੀ ਵੇਲਾ<ਅਰਮੀਨੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ%ਅਟਲਾਂਟਿਕ ਵੇਲਾ5ਅਟਲਾਂਟਿਕ ਮਿਆਰੀ ਵੇਲਾ" + + ";ਅਟਲਾਂਟਿਕ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ>ਕੇਂਦਰੀ ਆਸਟ੍ਰੇਲੀਆਈ ਵੇਲਾNਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਮਿਆਰੀ ਵੇ" + + "ਲਾTਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾNਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਪੱਛਮੀ ਵੇਲਾ^ਆਸਟ੍ਰੇਲ" + + "ੀਆਈ ਕੇਂਦਰੀ ਪੱਛਮੀ ਮਿਆਰੀ ਵੇਲਾdਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਪੱਛਮੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ;ਪੂਰਬੀ" + + " ਆਸਟ੍ਰੇਲੀਆਈ ਵੇਲਾKਆਸਟ੍ਰੇਲੀਆਈ ਪੂਰਬੀ ਮਿਆਰੀ ਵੇਲਾQਆਸਟ੍ਰੇਲੀਆਈ ਪੂਰਬੀ ਪ੍ਰਕਾਸ਼ ਵੇ" + + "ਲਾ;ਪੱਛਮੀ ਆਸਟ੍ਰੇਲੀਆਈ ਵੇਲਾKਆਸਟ੍ਰੇਲੀਆਈ ਪੱਛਮੀ ਮਿਆਰੀ ਵੇਲਾQਆਸਟ੍ਰੇਲੀਆਈ ਪੱਛਮੀ " + + "ਪ੍ਰਕਾਸ਼ ਵੇਲਾ+ਅਜ਼ਰਬਾਈਜਾਨ ਵੇਲਾ;ਅਜ਼ਰਬਾਈਜਾਨ ਮਿਆਰੀ ਵੇਲਾEਅਜ਼ਰਬਾਈਜਾਨ ਗਰਮੀਆਂ ਦ" + + "ਾ ਵੇਲਾ\x1fਅਜੋਰੇਸ ਵੇਲਾ/ਅਜੋਰੇਸ ਮਿਆਰੀ ਵੇਲਾ9ਅਜੋਰੇਸ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ(ਬੰਗਲਾਦੇਸ" + + "਼ ਵੇਲਾ8ਬੰਗਲਾਦੇਸ਼ ਮਿਆਰੀ ਵੇਲਾBਬੰਗਲਾਦੇਸ਼ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1cਭੂਟਾਨ ਵੇਲਾ\x22" + + "ਬੋਲੀਵੀਆ ਵੇਲਾ+ਬ੍ਰਾਜ਼ੀਲੀਆ ਵੇਲਾ;ਬ੍ਰਾਜ਼ੀਲੀਆ ਮਿਆਰੀ ਵੇਲਾEਬ੍ਰਾਜ਼ੀਲੀਆ ਗਰਮੀਆਂ ਦ" + + "ਾ ਵੇਲਾ8ਬਰੂਨੇਈ ਦਾਰੂਸਲਾਮ ਵੇਲਾ ਕੇਪ ਵਰਡ ਵੇਲਾ0ਕੇਪ ਵਰਡ ਮਿਆਰੀ ਵੇਲਾ:ਕੇਪ ਵਰਡ ਗਰ" + + "ਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਕੇਸੀ ਸਮਾਂ/ਚਾਮੋਰੋ ਮਿਆਰੀ ਵੇਲਾ\x19ਚੈਥਮ ਵੇਲਾ)ਚੈਥਮ ਮਿਆਰੀ ਵੇ" + + "ਲਾ/ਚੈਥਮ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x19ਚਿਲੀ ਵੇਲਾ)ਚਿਲੀ ਮਿਆਰੀ ਵੇਲਾ3ਚਿਲੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ" + + "\x16ਚੀਨ ਵੇਲਾ&ਚੀਨ ਮਿਆਰੀ ਵੇਲਾ,ਚੀਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ%ਚੌਇਬਾਲਸਨ ਵੇਲਾ5ਚੌਇਬਾਲਸਨ ਮਿਆਰ" + + "ੀ ਵੇਲਾ?ਚੌਇਬਾਲਸਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ5ਕ੍ਰਿਸਮਸ ਆਈਲੈਂਡ ਵੇਲਾ,ਕੋਕਸ ਆਈਲੈਂਡ ਵੇਲਾ" + + "\x22ਕੋਲੰਬੀਆ ਵੇਲਾ2ਕੋਲੰਬੀਆ ਮਿਆਰੀ ਵੇਲਾ<ਕੋਲੰਬੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ,ਕੁੱਕ ਆਈਲੈਂਡ ਵ" + + "ੇਲਾ<ਕੁੱਕ ਆਈਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾPਕੁੱਕ ਆਈਲੈਂਡ ਅੱਧ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1cਕਿਊਬਾ ਵੇਲ" + + "ਾ,ਕਿਊਬਾ ਮਿਆਰੀ ਵੇਲਾ2ਕਿਊਬਾ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1cਡੇਵਿਸ ਵੇਲਾ;ਡਿਉਮੋਂਟ ਡਿਉਰਵਿਲੇ ਵ" + + "ੇਲਾ,ਪੂਰਬੀ ਤਿਮੂਰ ਵੇਲਾ,ਈਸਟਰ ਆਈਲੈਂਡ ਵੇਲਾ<ਈਸਟਰ ਆਈਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾFਈਸਟਰ ਆਈਲੈ" + + "ਂਡ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਇਕਵੇਡੋਰ ਵੇਲਾ&ਮੱਧ ਯੂਰਪੀ ਵੇਲਾ6ਮੱਧ ਯੂਰਪੀ ਮਿਆਰੀ ਵੇਲਾ@" + + "ਮੱਧ ਯੂਰਪੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ,ਪੂਰਬੀ ਯੂਰਪੀ ਵੇਲਾ<ਪੂਰਬੀ ਯੂਰਪੀ ਮਿਆਰੀ ਵੇਲਾFਪੂਰਬੀ" + + " ਯੂਰਪੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ6ਹੋਰ-ਪੂਰਬੀ ਯੂਰਪੀ ਵੇਲਾ,ਪੱਛਮੀ ਯੂਰਪੀ ਵੇਲਾ<ਪੱਛਮੀ ਯੂਰਪੀ " + + "ਮਿਆਰੀ ਵੇਲਾFਪੱਛਮੀ ਯੂਰਪੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ;ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਵੇਲਾKਫ਼ਾਕਲੈਂਡ ਆ" + + "ਈਲੈਂਡਸ ਮਿਆਰੀ ਵੇਲਾUਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਫ਼ਿਜ਼ੀ ਵੇਲਾ/ਫ਼ਿਜ਼" + + "ੀ ਮਿਆਰੀ ਵੇਲਾ9ਫ਼ਿਜ਼ੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ/ਫ੍ਰੈਂਚ ਗੁਏਨਾ ਵੇਲਾRਫ੍ਰੈਂਚ ਦੱਖਣੀ ਅਤੇ " + + "ਐਂਟਾਰਟਿਕ ਵੇਲਾ%ਗਲਾਪਾਗੋਸ ਵੇਲਾ\x22ਗੈਂਬੀਅਰ ਵੇਲਾ\x1fਜਾਰਜੀਆ ਵੇਲਾ/ਜਾਰਜੀਆ ਮਿਆਰ" + + "ੀ ਵੇਲਾ9ਜਾਰਜੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ2ਗਿਲਬਰਟ ਆਈਲੈਂਡ ਵੇਲਾ/ਗ੍ਰੀਨਵਿਚ ਮੀਨ ਵੇਲਾ8ਪੂਰਬ" + + "ੀ ਗ੍ਰੀਨਲੈਂਡ ਵੇਲਾHਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾRਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਗਰਮੀਆਂ ਦਾ " + + "ਵੇਲਾ8ਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਵੇਲਾHਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾRਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਗ" + + "ਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਗੁਆਮ ਸਮਾਂ)ਖਾੜੀ ਮਿਆਰੀ ਵੇਲਾ\x1fਗੁਯਾਨਾ ਵੇਲਾ8ਹਵਾਈ-ਅਲੇਯੂਸ਼" + + "ਿਅਨ ਵੇਲਾHਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਮਿਆਰੀ ਵੇਲਾNਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ&ਹਾਂਗ " + + "ਕਾਂਗ ਵੇਲਾ6ਹਾਂਗ ਕਾਂਗ ਮਿਆਰੀ ਵੇਲਾ@ਹਾਂਗ ਕਾਂਗ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਹੋਵਡ ਵੇਲਾ)ਹ" + + "ੋਵਡ ਮਿਆਰੀ ਵੇਲਾ3ਹੋਵਡ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ,ਭਾਰਤੀ ਮਿਆਰੀ ਵੇਲਾ2ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਵੇਲਾ" + + "(ਇੰਡੋਚਾਈਨਾ ਵੇਲਾ8ਮੱਧ ਇੰਡੋਨੇਸ਼ੀਆਈ ਵੇਲਾ;ਪੂਰਬੀ ਇੰਡੋਨੇਸ਼ੀਆ ਵੇਲਾ;ਪੱਛਮੀ ਇੰਡੋਨੇਸ" + + "਼ੀਆ ਵੇਲਾ\x19ਈਰਾਨ ਵੇਲਾ)ਈਰਾਨ ਮਿਆਰੀ ਵੇਲਾ/ਈਰਾਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x22ਇਰਕੁਤਸਕ ਵੇਲ" + + "ਾ2ਇਰਕੁਤਸਕ ਮਿਆਰੀ ਵੇਲਾ<ਇਰਕੁਤਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਇਜ਼ਰਾਈਲ ਵੇਲਾ2ਇਜ਼ਰਾਈਲ ਮਿ" + + "ਆਰੀ ਵੇਲਾ8ਇਜ਼ਰਾਈਲ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x19ਜਪਾਨ ਵੇਲਾ)ਜਪਾਨ ਮਿਆਰੀ ਵੇਲਾ/ਜਪਾਨ ਪ੍ਰਕਾਸ" + + "਼ ਵੇਲਾ;ਪੂਰਬੀ ਕਜ਼ਾਖ਼ਸਤਾਨ ਵੇਲਾ;ਪੱਛਮੀ ਕਜ਼ਾਖ਼ਸਤਾਨ ਵੇਲਾ\x1fਕੋਰੀਆਈ ਵੇਲਾ/ਕੋਰੀ" + + "ਆਈ ਮਿਆਰੀ ਵੇਲਾ5ਕੋਰੀਆਈ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1cਕੋਸਰੇ ਵੇਲਾ1ਕ੍ਰਾਸਨੋਯਾਰਸਕ ਵੇਲਾAਕ੍ਰਾ" + + "ਸਨੋਯਾਰਸਕ ਮਿਆਰੀ ਵੇਲਾKਕ੍ਰਾਸਨੋਯਾਰਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ(ਕਿਰਗਿਸਤਾਨ ਵੇਲਾ\x19ਲੰਕਾ" + + " ਸਮਾਂ,ਲਾਈਨ ਆਈਲੈਂਡ ਵੇਲਾ&ਲੌਰਡ ਹੋਵੇ ਵੇਲਾ6ਲੌਰਡ ਹੋਵੇ ਮਿਆਰੀ ਵੇਲਾ<ਲੌਰਡ ਹੋਵੇ ਪ੍ਰ" + + "ਕਾਸ਼ ਵੇਲਾ\x19ਮਕਾਉ ਸਮਾਂ)ਮਕਾਉ ਮਿਆਰੀ ਸਮਾਂ3ਮਕਾਉ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ8ਮੈਕਕਵੇਰੀ ਆਈ" + + "ਲੈਂਡ ਵੇਲਾ\x1fਮੈਗੇਡਨ ਵੇਲਾ/ਮੈਗੇਡਨ ਮਿਆਰੀ ਵੇਲਾ9ਮੈਗੇਡਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਮਲ" + + "ੇਸ਼ੀਆ ਵੇਲਾ\x1fਮਾਲਦੀਵ ਵੇਲਾ%ਮਾਰਕਿਸਾਸ ਵੇਲਾ2ਮਾਰਸ਼ਲ ਆਈਲੈਂਡ ਵੇਲਾ\x22ਮੌਰਿਸ਼ਸ " + + "ਵੇਲਾ2ਮੌਰਿਸ਼ਸ ਮਿਆਰੀ ਵੇਲਾ<ਮੌਰਿਸ਼ਸ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਮੌਸਨ ਵੇਲਾ?ਉੱਤਰ ਪੱਛਮੀ" + + " ਮੈਕਸੀਕੋ ਵੇਲਾOਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਮਿਆਰੀ ਵੇਲਾUਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਪ੍ਰਕਾਸ਼ ਵ" + + "ੇਲਾ8ਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਵੇਲਾHਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਮਿਆਰੀ ਵੇਲਾNਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਪ੍" + + "ਰਕਾਸ਼ ਵੇਲਾ#ਉਲਨ ਬਟੋਰ ਵੇਲਾ3ਉਲਨ ਬਟੋਰ ਮਿਆਰੀ ਵੇਲਾ=ਉਲਨ ਬਟੋਰ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ" + + "\x1cਮਾਸਕੋ ਵੇਲਾ,ਮਾਸਕੋ ਮਿਆਰੀ ਵੇਲਾ6ਮਾਸਕੋ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਮਿਆਂਮਾਰ ਵੇਲਾ\x1c" + + "ਨਾਉਰੂ ਵੇਲਾ\x1cਨੇਪਾਲ ਵੇਲਾ2ਨਿਊ ਕੈਲੇਡੋਨੀਆ ਵੇਲਾBਨਿਊ ਕੈਲੇਡੋਨੀਆ ਮਿਆਰੀ ਵੇਲਾLਨ" + + "ਿਊ ਕੈਲੇਡੋਨੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ+ਨਿਊਜ਼ੀਲੈਂਡ ਵੇਲਾ;ਨਿਊਜ਼ੀਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾAਨਿਊਜ" + + "਼ੀਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ1ਨਿਊਫਾਉਂਡਲੈਂਡ ਵੇਲਾAਨਿਊਫਾਉਂਡਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾGਨਿਊਫਾਉਂਡ" + + "ਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x16ਨੀਊ ਵੇਲਾ2ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਵੇਲਾ?ਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਵੇ" + + "ਲਾOਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਮਿਆਰੀ ਵੇਲਾYਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾBਉੱਤ" + + "ਰੀ ਮਰਿਆਨਾ ਆਈਲੈਂਡ ਸਮਾਂ.ਨੌਵੋਸਿਬੀਰਸਕ ਵੇਲਾ>ਨੌਵੋਸਿਬੀਰਸਕ ਮਿਆਰੀ ਵੇਲਾHਨੌਵੋਸਿਬੀ" + + "ਰਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਓਮਸਕ ਵੇਲਾ)ਓਮਸਕ ਮਿਆਰੀ ਵੇਲਾ3ਓਮਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ%ਪਾ" + + "ਕਿਸਤਾਨ ਵੇਲਾ5ਪਾਕਿਸਤਾਨ ਮਿਆਰੀ ਵੇਲਾ?ਪਾਕਿਸਤਾਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਪਲਾਉ ਵੇਲਾ3ਪ" + + "ਾਪੂਆ ਨਿਊ ਗਿਨੀ ਵੇਲਾ\x22ਪੈਰਾਗਵੇ ਵੇਲਾ2ਪੈਰਾਗਵੇ ਮਿਆਰੀ ਵੇਲਾ<ਪੈਰਾਗਵੇ ਗਰਮੀਆਂ ਦ" + + "ਾ ਵੇਲਾ\x19ਪੇਰੂ ਵੇਲਾ)ਪੇਰੂ ਮਿਆਰੀ ਵੇਲਾ3ਪੇਰੂ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ%ਫਿਲਿਪੀਨੀ ਵੇਲਾ5" + + "ਫਿਲਿਪੀਨੀ ਮਿਆਰੀ ਵੇਲਾ?ਫਿਲਿਪੀਨੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ2ਫਿਨਿਕਸ ਆਈਲੈਂਡ ਵੇਲਾFਸੈਂਟ ਪੀ" + + "ਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਵੇਲਾVਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਮਿਆਰੀ ਵੇਲਾ\\ਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮ" + + "ਿਕੇਲਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x22ਪਿਟਕੈਰਨ ਵੇਲਾ\x1fਪੋਨਾਪੇ ਵੇਲਾ(ਪਯੋਂਗਯਾਂਗ ਵੇਲਾ(ਕਿਜ਼ਲ" + + "ੋਰਡਾ ਸਮਾਂ8ਕਿਜ਼ਲੋਰਡਾ ਮਿਆਰੀ ਸਮਾਂBਕਿਜ਼ਲੋਰਡਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ%ਰਿਯੂਨੀਅਨ ਵੇਲਾ" + + "\x1fਰੋਥੇਰਾ ਵੇਲਾ\x1cਸਖਲੀਨ ਵੇਲਾ,ਸਖਲੀਨ ਮਿਆਰੀ ਵੇਲਾ6ਸਖਲੀਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1cਸ" + + "ਾਮੋਆ ਵੇਲਾ,ਸਾਮੋਆ ਮਿਆਰੀ ਵੇਲਾ2ਸਾਮੋਆ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1fਸੇਸ਼ਲਸ ਵੇਲਾ5ਸਿੰਗਾਪੁਰ " + + "ਮਿਆਰੀ ਵੇਲਾ5ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਵੇਲਾ/ਦੱਖਣੀ ਜਾਰਜੀਆ ਵੇਲਾ\x22ਸੂਰੀਨਾਮ ਵੇਲਾ\x1cਸਿ" + + "ਓਵਾ ਵੇਲਾ\x1fਤਾਹੀਤੀ ਵੇਲਾ\x19ਤੈਪਈ ਵੇਲਾ)ਤੈਪਈ ਮਿਆਰੀ ਵੇਲਾ/ਤੈਪਈ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ" + + "+ਤਾਜਿਕਿਸਤਾਨ ਵੇਲਾ\x22ਟੋਕੇਲਾਉ ਵੇਲਾ\x1cਟੋਂਗਾ ਵੇਲਾ,ਟੋਂਗਾ ਮਿਆਰੀ ਵੇਲਾ6ਟੋਂਗਾ ਗਰ" + + "ਮੀਆਂ ਦਾ ਵੇਲਾ\x16ਚੂਕ ਵੇਲਾ1ਤੁਰਕਮੇਨਿਸਤਾਨ ਵੇਲਾAਤੁਰਕਮੇਨਿਸਤਾਨ ਮਿਆਰੀ ਵੇਲਾKਤੁਰ" + + "ਕਮੇਨਿਸਤਾਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਟੁਵਾਲੂ ਵੇਲਾ\x1fਉਰੂਗਵੇ ਵੇਲਾ/ਉਰੂਗਵੇ ਮਿਆਰੀ ਵੇ" + + "ਲਾ9ਉਰੂਗਵੇ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ.ਉਜ਼ਬੇਕਿਸਤਾਨ ਵੇਲਾ>ਉਜ਼ਬੇਕਿਸਤਾਨ ਮਿਆਰੀ ਵੇਲਾHਉਜ਼ਬੇ" + + "ਕਿਸਤਾਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਵਾਨੂਆਟੂ ਵੇਲਾ2ਵਾਨੂਆਟੂ ਮਿਆਰੀ ਵੇਲਾ<ਵਾਨੂਆਟੂ ਗਰਮੀਆ" + + "ਂ ਦਾ ਵੇਲਾ+ਵੈਨੇਜ਼ੂਏਲਾ ਵੇਲਾ+ਵਲਾਦੀਵੋਸਤਕ ਵੇਲਾ;ਵਲਾਦੀਵੋਸਤਕ ਮਿਆਰੀ ਵੇਲਾEਵਲਾਦੀਵ" + + "ੋਸਤਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ+ਵੋਲਗੋਗ੍ਰੇਡ ਵੇਲਾ;ਵੋਲਗੋਗ੍ਰੇਡ ਮਿਆਰੀ ਵੇਲਾEਵੋਲਗੋਗ੍ਰੇਡ ਗ" + + "ਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਵੋਸਟੋਕ ਵੇਲਾ)ਵੇਕ ਆਈਲੈਂਡ ਵੇਲਾ9ਵਾਲਿਸ ਅਤੇ ਫੁਟੂਨਾ ਵੇਲਾ\x1f" + + "ਯਕੁਤਸਕ ਵੇਲਾ/ਯਕੁਤਸਕ ਮਿਆਰੀ ਵੇਲਾ9ਯਕੁਤਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ+ਯਕੇਤਰਿਨਬਰਗ ਵੇਲਾ;ਯਕ" + + "ੇਤਰਿਨਬਰਗ ਮਿਆਰੀ ਵੇਲਾEਯਕੇਤਰਿਨਬਰਗ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ" + +var bucket80 string = "" + // Size: 10586 bytes + "\x0aاتوار\x06پیر\x08منگل\x08بُدھ\x0cجمعرات\x08جمعہ\x08ہفتہ\x17چوتھاي پہل" + + "اں\x15چوتھاي دوجا\x15چوتھاي تيجا\x17چوتھاي چوتھا\x10ايساپورو\x04سں\x08و" + + "رھا\x0aمہينا\x06دئن\x12ہفتے دا دن\x0aگھنٹا\x06منٹ\x06ٹپہ\x0eEEEE, d MMM" + + "M U\x03sty\x03lut\x03mar\x03kwi\x03maj\x03cze\x03lip\x03sie\x03wrz\x04pa" + + "ź\x03lis\x03gru\x08stycznia\x06lutego\x05marca\x08kwietnia\x04maja\x07c" + + "zerwca\x05lipca\x08sierpnia\x09września\x0dpaździernika\x09listopada\x07" + + "grudnia\x08styczeń\x04luty\x06marzec\x09kwiecień\x08czerwiec\x06lipiec" + + "\x09sierpień\x09wrzesień\x0cpaździernik\x08listopad\x09grudzień\x06niedz" + + ".\x04pon.\x03wt.\x04śr.\x04czw.\x03pt.\x04sob.\x03nie\x03pon\x03wto\x04ś" + + "ro\x03czw\x04pią\x03sob\x09niedziela\x0dponiedziałek\x06wtorek\x06środa" + + "\x08czwartek\x07piątek\x06sobota\x05I kw.\x06II kw.\x07III kw.\x06IV kw." + + "\x0aI kwartał\x0bII kwartał\x0cIII kwartał\x0bIV kwartał\x0bo północy" + + "\x0bw południe\x04rano\x10przed południem\x0cpo południu\x09wieczorem" + + "\x06w nocy\x09o półn.\x07w poł.\x0bprzed poł.\x08po poł.\x06wiecz.\x08pó" + + "łnoc\x09południe\x0eprzedpołudnie\x0bpopołudnie\x08wieczór\x07półn.\x05" + + "poł.\x0aprzedpoł.\x07popoł.\x11przed naszą erą\x06p.n.e.\x0anaszej ery" + + "\x04n.e.\x06Tiszri\x08Cheszwan\x06Kislew\x05Tewet\x05Szwat\x06Adar I\x04" + + "Adar\x07Adar II\x05Nisan\x04Ijar\x05Siwan\x05Tamuz\x02Aw\x04Elul\x09Farw" + + "ardin\x0bOrdibeheszt\x08Chordād\x03Tir\x07Mordād\x09Szahriwar\x04Mehr" + + "\x06Ābān\x05Āsar\x04Déi\x06Bahman\x06Esfand\x09Przed ROC\x03ROC\x0fw zes" + + "złym roku\x0aw tym roku\x11w przyszłym roku\x0c{0} rok temu\x0d{0} lata " + + "temu\x0c{0} lat temu\x0d{0} roku temu\x08kwartał\x13w zeszłym kwartale" + + "\x0ew tym kwartale\x15w przyszłym kwartale\x0fza {0} kwartał\x10za {0} k" + + "wartały\x12za {0} kwartałów\x10za {0} kwartału\x11{0} kwartał temu\x12{0" + + "} kwartały temu\x14{0} kwartałów temu\x12{0} kwartału temu\x0c{0} kw. te" + + "mu\x08+{0} kw.\x0a–{0} kw.\x08miesiąc\x14w zeszłym miesiącu\x0fw tym mie" + + "siącu\x16w przyszłym miesiącu\x0fza {0} miesiąc\x10za {0} miesiące\x10za" + + " {0} miesięcy\x10za {0} miesiąca\x11{0} miesiąc temu\x12{0} miesiące tem" + + "u\x12{0} miesięcy temu\x12{0} miesiąca temu\x05mies.\x0cza {0} mies.\x0e" + + "{0} mies. temu\x02mc\x0a+{0} mies.\x0c–{0} mies.\x08tydzień\x13w zeszłym" + + " tygodniu\x0ew tym tygodniu\x15w przyszłym tygodniu\x0fza {0} tydzień" + + "\x0fza {0} tygodnie\x0eza {0} tygodni\x0fza {0} tygodnia\x11{0} tydzień " + + "temu\x11{0} tygodnie temu\x10{0} tygodni temu\x11{0} tygodnia temu\x0cty" + + "dzień {0}\x05tydz.\x0cza {0} tydz.\x0bza {0} tyg.\x0e{0} tydz. temu\x0d{" + + "0} tyg. temu\x06dzień\x0cprzedwczoraj\x07wczoraj\x07dzisiaj\x05jutro\x08" + + "pojutrze\x0dza {0} dzień\x0aza {0} dni\x0bza {0} dnia\x0f{0} dzień temu" + + "\x0c{0} dni temu\x0d{0} dnia temu\x0fdzień tygodnia\x15w zeszłą niedziel" + + "ę\x10w tę niedzielę\x17w przyszłą niedzielę\x11za {0} niedzielę\x10za {" + + "0} niedziele\x0fza {0} niedziel\x10za {0} niedzieli\x13{0} niedzielę tem" + + "u\x12{0} niedziele temu\x11{0} niedziel temu\x12{0} niedzieli temu\x17w " + + "zeszły poniedziałek\x13w ten poniedziałek\x19w przyszły poniedziałek\x14" + + "za {0} poniedziałek\x14za {0} poniedziałki\x16za {0} poniedziałków\x14za" + + " {0} poniedziałku\x16{0} poniedziałek temu\x16{0} poniedziałki temu\x18{" + + "0} poniedziałków temu\x16{0} poniedziałku temu\x10w zeszły wtorek\x0cw t" + + "en wtorek\x12w przyszły wtorek\x0dza {0} wtorek\x0dza {0} wtorki\x0fza {" + + "0} wtorków\x0dza {0} wtorku\x0f{0} wtorek temu\x0f{0} wtorki temu\x11{0}" + + " wtorków temu\x0f{0} wtorku temu\x12w zeszłą środę\x0dw tę środę\x14w pr" + + "zyszłą środę\x0eza {0} środę\x0dza {0} środy\x0dza {0} śród\x10{0} środę" + + " temu\x0f{0} środy temu\x0f{0} śród temu\x12w zeszły czwartek\x0ew ten c" + + "zwartek\x14w przyszły czwartek\x0fza {0} czwartek\x0fza {0} czwartki\x11" + + "za {0} czwartków\x0fza {0} czwartku\x11{0} czwartek temu\x11{0} czwartki" + + " temu\x13{0} czwartków temu\x11{0} czwartku temu\x11w zeszły piątek\x0dw" + + " ten piątek\x13w przyszły piątek\x0eza {0} piątek\x0eza {0} piątki\x10za" + + " {0} piątków\x0eza {0} piątku\x10{0} piątek temu\x10{0} piątki temu\x12{" + + "0} piątków temu\x10{0} piątku temu\x12w zeszłą sobotę\x0dw tę sobotę\x14" + + "w przyszłą sobotę\x0eza {0} sobotę\x0dza {0} soboty\x0dza {0} sobót\x10{" + + "0} sobotę temu\x0f{0} soboty temu\x0f{0} sobót temu\x1frano / po południ" + + "u / wieczorem\x07godzina\x0ata godzina\x0fza {0} godzinę\x0eza {0} godzi" + + "ny\x0dza {0} godzin\x11{0} godzinę temu\x10{0} godziny temu\x0f{0} godzi" + + "n temu\x05godz.\x0cza {0} godz.\x0e{0} godz. temu\x0b{0} g. temu\x09ta m" + + "inuta\x0eza {0} minutę\x0dza {0} minuty\x0cza {0} minut\x10{0} minutę te" + + "mu\x0f{0} minuty temu\x0e{0} minut temu\x0c{0} min temu\x05teraz\x0fza {" + + "0} sekundę\x0eza {0} sekundy\x0dza {0} sekund\x11{0} sekundę temu\x10{0}" + + " sekundy temu\x0f{0} sekund temu\x0d{0} sek. temu\x0a{0} s temu\x0estref" + + "a czasowa\x09Czas: {0}\x10{0} (czas letni)\x16{0} (czas standardowy)\x1d" + + "Uniwersalny czas koordynowany\x14Brytyjski czas letni\x15Irlandia (czas " + + "letni)\x0aAfganistan\x19Czas środkowoafrykański\x19Czas wschodnioafrykań" + + "ski\x1bCzas południowoafrykański\x19Czas zachodnioafrykański%Czas zachod" + + "nioafrykański standardowy\x1fCzas zachodnioafrykański letni\x06Alaska" + + "\x19Alaska (czas standardowy)\x13Alaska (czas letni)\x0fCzas amazoński" + + "\x1bCzas amazoński standardowy\x15Czas amazoński letni\x1aCzas środkowoa" + + "merykański&Czas środkowoamerykański standardowy Czas środkowoamerykański" + + " letni\x1aCzas wschodnioamerykański&Czas wschodnioamerykański standardow" + + "y Czas wschodnioamerykański letni\x0cCzas górski\x18Czas górski standard" + + "owy\x12Czas górski letni\x0fCzas pacyficzny\x1bCzas pacyficzny standardo" + + "wy\x15Czas pacyficzny letni\x0bCzas Anadyr\x17Czas standardowy Anadyr" + + "\x11Czas Anadyr letni\x04Apia\x17Apia (czas standardowy)\x11Apia (czas l" + + "etni)\x12Półwysep Arabski%Półwysep Arabski (czas standardowy)\x1fPółwyse" + + "p Arabski (czas letni)\x09Argentyna\x1cArgentyna (czas standardowy)\x16A" + + "rgentyna (czas letni)\x13Argentyna Zachodnia&Argentyna Zachodnia (czas s" + + "tandardowy) Argentyna Zachodnia (czas letni)\x07Armenia\x1aArmenia (czas" + + " standardowy)\x14Armenia (czas letni)\x0fCzas atlantycki\x1bCzas atlanty" + + "cki standardowy\x15Czas atlantycki letni\x1aCzas środkowoaustralijski&Cz" + + "as środkowoaustralijski standardowy Czas środkowoaustralijski letni$Czas" + + " środkowo-zachodnioaustralijski0Czas środkowo-zachodnioaustralijski stan" + + "dardowy*Czas środkowo-zachodnioaustralijski letni\x1aCzas wschodnioaustr" + + "alijski&Czas wschodnioaustralijski standardowy Czas wschodnioaustralijsk" + + "i letni\x1aCzas zachodnioaustralijski&Czas zachodnioaustralijski standar" + + "dowy Czas zachodnioaustralijski letni\x0cAzerbejdżan\x1fAzerbejdżan (cza" + + "s standardowy)\x19Azerbejdżan (czas letni)\x05Azory\x18Azory (czas stand" + + "ardowy)\x12Azory (czas letni)\x0aBangladesz\x1dBangladesz (czas standard" + + "owy)\x17Bangladesz (czas letni)\x06Bhutan\x07Boliwia\x09Brasília\x1cBras" + + "ília (czas standardowy)\x16Brasília (czas letni)\x11Brunei Darussalam" + + "\x1aWyspy Zielonego Przylądka-Wyspy Zielonego Przylądka (czas standardow" + + "y)'Wyspy Zielonego Przylądka (czas letni)\x08Czamorro\x07Chatham\x1aChat" + + "ham (czas standardowy)\x14Chatham (czas letni)\x05Chile\x18Chile (czas s" + + "tandardowy)\x12Chile (czas letni)\x05Chiny\x18Chiny (czas standardowy)" + + "\x12Chiny (czas letni)\x0aCzojbalsan\x1dCzojbalsan (czas standardowy)" + + "\x17Czojbalsan (czas letni)\x18Wyspa Bożego Narodzenia\x0eWyspy Kokosowe" + + "\x08Kolumbia\x1bKolumbia (czas standardowy)\x15Kolumbia (czas letni)\x0b" + + "Wyspy Cooka\x1eWyspy Cooka (czas standardowy)\x18Wyspy Cooka (czas letni" + + ")\x04Kuba\x17Kuba (czas standardowy)\x11Kuba (czas letni)\x05Davis\x12Du" + + "mont-d’Urville\x0eTimor Wschodni\x11Wyspa Wielkanocna$Wyspa Wielkanocna " + + "(czas standardowy)\x1eWyspa Wielkanocna (czas letni)\x07Ekwador\x18Czas " + + "środkowoeuropejski$Czas środkowoeuropejski standardowy\x1eCzas środkowo" + + "europejski letni\x18Czas wschodnioeuropejski$Czas wschodnioeuropejski st" + + "andardowy\x1eCzas wschodnioeuropejski letni\x1fCzas wschodnioeuropejski " + + "dalszy\x18Czas zachodnioeuropejski$Czas zachodnioeuropejski standardowy" + + "\x1eCzas zachodnioeuropejski letni\x09Falklandy\x1cFalklandy (czas stand" + + "ardowy)\x16Falklandy (czas letni)\x06Fidżi\x19Fidżi (czas standardowy)" + + "\x13Fidżi (czas letni)\x10Gujana Francuska/Francuskie Terytoria Południo" + + "we i Antarktyczne\x09Galapagos\x07Gambier\x06Gruzja\x19Gruzja (czas stan" + + "dardowy)\x13Gruzja (czas letni)\x0eWyspy Gilberta\x10Czas uniwersalny" + + "\x14Grenlandia Wschodnia'Grenlandia Wschodnia (czas standardowy)!Grenlan" + + "dia Wschodnia (czas letni)\x14Grenlandia Zachodnia'Grenlandia Zachodnia " + + "(czas standardowy)!Grenlandia Zachodnia (czas letni)\x0dZatoka Perska" + + "\x06Gujana\x0dHawaje-Aleuty Hawaje-Aleuty (czas standardowy)\x1aHawaje-A" + + "leuty (czas letni)\x08Hongkong\x1bHongkong (czas standardowy)\x15Hongkon" + + "g (czas letni)\x05Kobdo\x18Kobdo (czas standardowy)\x12Kobdo (czas letni" + + ")\x0dCzas indyjski\x0eOcean Indyjski\x11Czas indochiński\x13Indonezja Śr" + + "odkowa\x13Indonezja Wschodnia\x13Indonezja Zachodnia\x04Iran\x17Iran (cz" + + "as standardowy)\x11Iran (czas letni)\x06Irkuck\x19Irkuck (czas standardo" + + "wy)\x13Irkuck (czas letni)\x06Izrael\x19Izrael (czas standardowy)\x13Izr" + + "ael (czas letni)\x07Japonia\x1aJaponia (czas standardowy)\x14Japonia (cz" + + "as letni)\x1eCzas Pietropawłowsk Kamczacki*Czas standardowy Pietropawłow" + + "sk Kamczacki$Czas Pietropawłowsk Kamczacki letni\x13Kazachstan Wschodni" + + "\x13Kazachstan Zachodni\x05Korea\x18Korea (czas standardowy)\x12Korea (c" + + "zas letni)\x06Kosrae\x0bKrasnojarsk\x1eKrasnojarsk (czas standardowy)" + + "\x18Krasnojarsk (czas letni)\x09Kirgistan\x1eSporady Środkowopolinezyjsk" + + "ie\x09Lord Howe\x1cLord Howe (czas standardowy)\x16Lord Howe (czas letni" + + ")\x09Macquarie\x07Magadan\x1aMagadan (czas standardowy)\x14Magadan (czas" + + " letni)\x07Malezja\x08Malediwy\x07Markizy\x0fWyspy Marshalla\x09Mauritiu" + + "s\x1cMauritius (czas standardowy)\x16Mauritius (czas letni)\x06Mawson" + + "\x1aMeksyk Północno-Zachodni-Meksyk Północno-Zachodni (czas standardowy)" + + "'Meksyk Północno-Zachodni (czas letni)\x18Meksyk (czas pacyficzny)$Meksy" + + "k (czas pacyficzny standardowy)\x1eMeksyk (czas pacyficzny letni)\x0bUła" + + "n Bator\x1eUłan Bator (czas standardowy)\x18Ułan Bator (czas letni)\x0fC" + + "zas moskiewski\x1bCzas moskiewski standardowy\x15Czas moskiewski letni" + + "\x06Mjanma\x05Nauru\x05Nepal\x0eNowa Kaledonia!Nowa Kaledonia (czas stan" + + "dardowy)\x1bNowa Kaledonia (czas letni)\x0dNowa Zelandia Nowa Zelandia (" + + "czas standardowy)\x1aNowa Zelandia (czas letni)\x0fNowa Fundlandia\x22No" + + "wa Fundlandia (czas standardowy)\x1cNowa Fundlandia (czas letni)\x04Niue" + + "\x07Norfolk\x13Fernando de Noronha&Fernando de Noronha (czas standardowy" + + ") Fernando de Noronha (czas letni)\x0bNowosybirsk\x1eNowosybirsk (czas s" + + "tandardowy)\x18Nowosybirsk (czas letni)\x04Omsk\x17Omsk (czas standardow" + + "y)\x11Omsk (czas letni)\x08Pakistan\x1bPakistan (czas standardowy)\x15Pa" + + "kistan (czas letni)\x05Palau\x11Papua-Nowa Gwinea\x08Paragwaj\x1bParagwa" + + "j (czas standardowy)\x15Paragwaj (czas letni)\x04Peru\x17Peru (czas stan" + + "dardowy)\x11Peru (czas letni)\x08Filipiny\x1bFilipiny (czas standardowy)" + + "\x15Filipiny (czas letni)\x06Feniks\x17Saint-Pierre i Miquelon*Saint-Pie" + + "rre i Miquelon (czas standardowy)$Saint-Pierre i Miquelon (czas letni)" + + "\x08Pitcairn\x07Pohnpei\x09Pjongjang\x07Reunion\x07Rothera\x08Sachalin" + + "\x1bSachalin (czas standardowy)\x15Sachalin (czas letni)\x0bCzas Samara" + + "\x17Czas standardowy Samara\x11Czas Samara letni\x05Samoa\x18Samoa (czas" + + " standardowy)\x12Samoa (czas letni)\x07Seszele\x08Singapur\x0eWyspy Salo" + + "mona\x13Georgia Południowa\x07Surinam\x05Syowa\x06Tahiti\x06Tajpej\x19Ta" + + "jpej (czas standardowy)\x13Tajpej (czas letni)\x0cTadżykistan\x07Tokelau" + + "\x05Tonga\x18Tonga (czas standardowy)\x12Tonga (czas letni)\x05Chuuk\x0c" + + "Turkmenistan\x1fTurkmenistan (czas standardowy)\x19Turkmenistan (czas le" + + "tni)\x06Tuvalu\x07Urugwaj\x1aUrugwaj (czas standardowy)\x14Urugwaj (czas" + + " letni)\x0aUzbekistan\x1dUzbekistan (czas standardowy)\x17Uzbekistan (cz" + + "as letni)\x07Vanuatu\x1aVanuatu (czas standardowy)\x14Vanuatu (czas letn" + + "i)\x09Wenezuela\x0cWładywostok\x1fWładywostok (czas standardowy)\x19Wład" + + "ywostok (czas letni)\x0aWołgograd\x1dWołgograd (czas standardowy)\x17Woł" + + "gograd (czas letni)\x06Wostok\x04Wake\x0fWallis i Futuna\x06Jakuck\x19Ja" + + "kuck (czas standardowy)\x13Jakuck (czas letni)\x0dJekaterynburg Jekatery" + + "nburg (czas standardowy)\x1aJekaterynburg (czas letni)\x0dza {0} minuta" + + "\x0cسوموار\x06بدھ" + +var bucket81 string = "" + // Size: 13986 bytes + "\x1aEEEE, y 'mettas' d. MMMM G\x14y 'mettas' d. MMMM G\x0fdd.MM 'st'. y " + + "G\x03rag\x03was\x04pūl\x03sak\x03zal\x04sīm\x04līp\x03dag\x03sil\x03spa" + + "\x03lap\x03sal\x04rags\x09wassarins\x06pūlis\x06sakkis\x07zallaws\x08sīm" + + "enis\x05līpa\x06daggis\x07sillins\x08spallins\x0alapkrūtis\x07sallaws" + + "\x03nad\x03pan\x03wis\x03pus\x03ket\x04pēn\x03sab\x07nadīli\x09panadīli" + + "\x0awisasīdis\x0cpussisawaiti\x0aketwirtiks\x09pēntniks\x09sabattika\x05" + + "1. k.\x052. k.\x053. k.\x054. k.\x0b1. ketwirts\x0b2. ketwirts\x0b3. ket" + + "wirts\x0b4. ketwirts\x081. ketw.\x082. ketw.\x083. ketw.\x084. ketw.\x0b" + + "ankstāinan\x0epa pussideinan\x18EEEE, y 'mettas' d. MMMM\x12y 'mettas' d" + + ". MMMM\x0ddd.MM 'st'. y\x06mettan\x11panzdauman mettan\x09this year\x09n" + + "ext year\x08ketwirts\x05ketw.\x06mīnss\x04mī.\x08sawaīti\x04saw.\x06dein" + + "ā\x06bītan\x0bšandēinan\x10sawaītis deinā\x1cankstāinan / pa pussideina" + + "n\x07stūndi\x07minūti\x08sekūndi\x0bkerdaszōni\x0bKerdā: {0}\x12Daggas k" + + "erdā: {0}\x13Zēimas kerdā: {0}\x1bCentrālas Amērikas kerdā#Centrālas Amē" + + "rikas zēimas kerdā\x22Centrālas Amērikas daggas kerdā\x1bDēiniskas Amēri" + + "kas kerdā#Dēiniskas Amērikas zēimas kerdā\x22Dēiniskas Amērikas daggas k" + + "erdā\x18Amērikas gārban kerdā Amērikas gārban zēimas kerdā\x1fAmērikas g" + + "ārban daggas kerdā\x1cPacīfiskas Amērikas kerdā$Pacīfiskas Amērikas zēi" + + "mas kerdā#Pacīfiskas Amērikas daggas kerdā\x12Atlāntiska kerdā\x1aAtlānt" + + "iska zēimas kerdā\x19Atlāntiska daggas kerdā\x1aCentrālas Eurōpas kerdā" + + "\x22Centrālas Eurōpas zēimas kerdā!Centrālas Eurōpas daggas kerdā\x1aDēi" + + "niskas Eurōpas kerdā\x22Dēiniskas Eurōpas zēimas kerdā!Dēiniskas Eurōpas" + + " daggas kerdā\x1bWakkariskas Eurōpas kerdā#Wakkariskas Eurōpas zēimas ke" + + "rdā\x22Wakkariskas Eurōpas daggas kerdā\x10Greenwich kerdā\x15EEEE د G y" + + " د MMMM d\x10د G y د MMMM d\x0bGGGGG y/M/d\x0aجنوري\x0cفبروري\x08مارچ" + + "\x0aاپریل\x04مۍ\x06جون\x0aجولای\x08اګست\x0cسپتمبر\x0cاکتوبر\x0aنومبر\x0a" + + "دسمبر\x13لومړۍ ربعه\x0f۲مه ربعه\x0f۳مه ربعه\x0f۴مه ربعه\x06غ.م.\x06غ.و." + + "#له میلاد څخه وړاندې#له میلاد څخه وروسته\x1cله میلاد وړاندې\x03م.\x13EEE" + + "E د y د MMMM d\x0eد y د MMMM d\x06وری\x08غویی\x0eغبرگولی\x0aچنگاښ\x08زمر" + + "ی\x06وږی\x06تله\x06لړم\x0aلیندۍ\x0cمرغومی\x0cسلواغه\x04کب\x12د {0} په و" + + "خت\x18الماتا په وخت لوېديزې اروپا وخت\x06Mês 1\x06Mês 2\x06Mês 3\x06Mês" + + " 4\x06Mês 5\x06Mês 6\x06Mês 7\x06Mês 8\x06Mês 9\x07Mês 10\x07Mês 11\x07M" + + "ês 12\x18EEEE, d 'de' MMMM 'de' U\x12d 'de' MMMM 'de' U\x07dd/MM U\x07j" + + "aneiro\x09fevereiro\x06março\x05abril\x04maio\x05junho\x05julho\x06agost" + + "o\x08setembro\x07outubro\x08novembro\x08dezembro\x0ameia-noite\x08meio-d" + + "ia\x09da manhã\x06manhã\x12antes da Era Comum\x09Era Comum\x0fAntes de R" + + ".O.C.\x06R.O.C.\x0bano passado\x08este ano\x0cpróximo ano\x0aem {0} ano" + + "\x0bem {0} anos\x0bhá {0} ano\x0chá {0} anos\x08+{0} ano\x09+{0} anos" + + "\x08-{0} ano\x09-{0} anos\x11último trimestre\x0eeste trimestre\x12próxi" + + "mo trimestre\x10em {0} trimestre\x11em {0} trimestres\x11há {0} trimestr" + + "e\x12há {0} trimestres\x0cem {0} trim.\x0dem {0} trims.\x0dhá {0} trim." + + "\x0ehá {0} trims.\x0cmês passado\x09este mês\x0dpróximo mês\x0bem {0} mê" + + "s\x0cem {0} meses\x0chá {0} mês\x0dhá {0} meses\x09+{0} mês\x0a+{0} mese" + + "s\x09-{0} mês\x0a-{0} meses\x0esemana passada\x0besta semana\x0fpróxima " + + "semana\x0dem {0} semana\x0eem {0} semanas\x0ehá {0} semana\x0fhá {0} sem" + + "anas\x0fa semana de {0}\x0bem {0} sem.\x0chá {0} sem.\x09anteontem\x05on" + + "tem\x04hoje\x07amanhã\x11depois de amanhã\x0aem {0} dia\x0bem {0} dias" + + "\x0bhá {0} dia\x0chá {0} dias\x08+{0} dia\x09+{0} dias\x08-{0} dia\x09-{" + + "0} dias\x0ddia da semana\x0fdomingo passado\x0ceste domingo\x10próximo d" + + "omingo\x0eem {0} domingo\x0fem {0} domingos\x0fhá {0} domingo\x10há {0} " + + "domingos\x0cdom. passado\x09este dom.\x0dpróximo dom.\x15segunda-feira p" + + "assada\x12esta segunda-feira\x16próxima segunda-feira\x14em {0} segunda-" + + "feira\x16em {0} segundas-feiras\x15há {0} segunda-feira\x17há {0} segund" + + "as-feiras\x0cseg. passada\x09esta seg.\x0dpróxima seg.\x14terça-feira pa" + + "ssada\x11esta terça-feira\x15próxima terça-feira\x13em {0} terça-feira" + + "\x15em {0} terças-feiras\x14há {0} terça-feira\x16há {0} terças-feiras" + + "\x0cter. passada\x09esta ter.\x0dpróxima ter.\x14quarta-feira passada" + + "\x11esta quarta-feira\x15próxima quarta-feira\x15em {0} quartas-feiras" + + "\x16há {0} quartas-feiras\x0cqua. passada\x09esta qua.\x0dpróxima qua." + + "\x14quinta-feira passada\x11esta quinta-feira\x15próxima quinta-feira" + + "\x15em {0} quintas-feiras\x16há {0} quintas-feiras\x0cqui. passada\x09es" + + "ta qui.\x0apróx. qui\x13sexta-feira passada\x10esta sexta-feira\x14próxi" + + "ma sexta-feira\x14em {0} sextas-feiras\x15há {0} sextas-feiras\x0csex. p" + + "assada\x09esta sex.\x0dpróxima sex.\x0fsábado passado\x0ceste sábado\x10" + + "próximo sábado\x0eem {0} sábado\x0fem {0} sábados\x0fhá {0} sábado\x10há" + + " {0} sábados\x0dsáb. passado\x0aeste sáb.\x0epróximo sáb.\x0bem {0} hora" + + "\x0cem {0} horas\x0chá {0} hora\x0dhá {0} horas\x08em {0} h\x09há {0} h" + + "\x0dem {0} minuto\x0eem {0} minutos\x0ehá {0} minuto\x0fhá {0} minutos" + + "\x0bem {0} min.\x0cem {0} mins.\x0chá {0} min.\x0dhá {0} mins.\x0eem {0}" + + " segundo\x0fem {0} segundos\x0fhá {0} segundo\x10há {0} segundos\x0bem {" + + "0} seg.\x0cem {0} segs.\x0chá {0} seg.\x0dfuso horário\x0cHorário {0}" + + "\x08{0} (+1)\x08{0} (+0)\x1dHorário de Verão Britânico\x1bHorário Padrão" + + " da Irlanda\x10Horário do Acre\x18Horário Padrão do Acre\x1aHorário de V" + + "erão do Acre\x18Horário do Afeganistão\x1bHorário da África Central\x1cH" + + "orário da África Oriental\x1aHorário da África do Sul\x1dHorário da Áfri" + + "ca Ocidental%Horário Padrão da África Ocidental'Horário de Verão da Áfri" + + "ca Ocidental\x12Horário do Alasca\x1aHorário Padrão do Alasca\x1cHorário" + + " de Verão do Alasca\x12Horário do Almaty\x1aHorário Padrão do Almaty\x1c" + + "Horário de Verão do Almaty\x14Horário do Amazonas\x1cHorário Padrão do A" + + "mazonas\x1eHorário de Verão do Amazonas\x10Horário Central\x18Horário Pa" + + "drão Central\x1aHorário de Verão Central\x11Horário Oriental\x19Horário " + + "Padrão Oriental\x1bHorário de Verão Oriental\x14Horário da Montanha\x1cH" + + "orário Padrão da Montanha\x1eHorário de Verão da Montanha\x15Horário do " + + "Pacífico\x1dHorário Padrão do Pacífico\x1fHorário de Verão do Pacífico" + + "\x12Horário de Anadyr\x1aHorário Padrão do Anadyr\x1cHorário de Verão do" + + " Anadyr\x10Horário de Apia\x18Horário Padrão de Apia\x1aHorário de Verão" + + " de Apia\x11Horário do Aqtau\x19Horário Padrão do Aqtau\x1bHorário de Ve" + + "rão do Aqtau\x12Horário do Aqtobe\x1aHorário Padrão do Aqtobe\x1cHorário" + + " de Verão do Aqtobe\x13Horário da Arábia\x1bHorário Padrão da Arábia\x1d" + + "Horário de Verão da Arábia\x15Horário da Argentina\x1dHorário Padrão da " + + "Argentina\x1fHorário de Verão da Argentina\x1fHorário da Argentina Ocide" + + "ntal'Horário Padrão da Argentina Ocidental)Horário de Verão da Argentina" + + " Ocidental\x14Horário da Armênia\x1cHorário Padrão da Armênia\x1eHorário" + + " de Verão da Armênia\x16Horário do Atlântico\x1eHorário Padrão do Atlânt" + + "ico Horário de Verão do Atlântico\x1eHorário da Austrália Central&Horári" + + "o Padrão da Austrália Central(Horário de Verão da Austrália Central'Horá" + + "rio da Austrália Centro-Ocidental/Horário Padrão da Austrália Centro-Oci" + + "dental1Horário de Verão da Austrália Centro-Ocidental\x1fHorário da Aust" + + "rália Oriental'Horário Padrão da Austrália Oriental)Horário de Verão da " + + "Austrália Oriental Horário da Austrália Ocidental(Horário Padrão da Aust" + + "rália Ocidental*Horário de Verão da Austrália Ocidental\x18Horário do Ar" + + "zeibaijão Horário Padrão do Arzeibaijão\x22Horário de Verão do Arzeibaij" + + "ão\x14Horário dos Açores\x1cHorário Padrão dos Açores\x1eHorário de Ver" + + "ão dos Açores\x16Horário de Bangladesh\x1eHorário Padrão de Bangladesh " + + "Horário de Verão de Bangladesh\x12Horário do Butão\x14Horário da Bolívia" + + "\x15Horário de Brasília\x1dHorário Padrão de Brasília\x1fHorário de Verã" + + "o de Brasília\x1dHorário de Brunei Darussalam\x16Horário do Cabo Verde" + + "\x1eHorário Padrão do Cabo Verde Horário de Verão do Cabo Verde\x14Horár" + + "io de Chamorro\x13Horário de Chatham\x1bHorário Padrão de Chatham\x1dHor" + + "ário de Verão de Chatham\x11Horário do Chile\x19Horário Padrão do Chile" + + "\x1bHorário de Verão do Chile\x11Horário da China\x19Horário Padrão da C" + + "hina\x1bHorário de Verão da China\x16Horário de Choibalsan\x1eHorário Pa" + + "drão de Choibalsan Horário de Verão de Choibalsan\x1aHorário da Ilha Chr" + + "istmas\x17Horário das Ilhas Coco\x15Horário da Colômbia\x1dHorário Padrã" + + "o da Colômbia\x1fHorário de Verão da Colômbia\x17Horário das Ilhas Cook" + + "\x1fHorário Padrão das Ilhas Cook&Meio Horário de Verão das Ilhas Cook" + + "\x10Horário de Cuba\x18Horário Padrão de Cuba\x1aHorário de Verão de Cub" + + "a\x11Horário de Davis\x1eHorário de Dumont-d’Urville\x17Horário do Timor" + + "-Leste\x1bHorário da Ilha de Páscoa#Horário Padrão da Ilha de Páscoa%Hor" + + "ário de Verão da Ilha de Páscoa\x13Horário do Equador\x1aHorário da Eur" + + "opa Central\x22Horário Padrão da Europa Central$Horário de Verão da Euro" + + "pa Central\x1bHorário da Europa Oriental#Horário Padrão da Europa Orient" + + "al%Horário de Verão da Europa Oriental!Horário do Extremo Leste Europeu" + + "\x1cHorário da Europa Ocidental$Horário Padrão da Europa Ocidental&Horár" + + "io de Verão da Europa Ocidental\x1bHorário das Ilhas Falkland#Horário Pa" + + "drão das Ilhas Falkland%Horário de Verão das Ilhas Falkland\x10Horário d" + + "e Fiji\x18Horário Padrão de Fiji\x1aHorário de Verão de Fiji\x1bHorário " + + "da Guiana Francesa*Horário da Antártida e do Sul da França\x16Horário de" + + " Galápagos\x13Horário de Gambier\x14Horário da Geórgia\x1cHorário Padrão" + + " da Geórgia\x1eHorário de Verão da Geórgia\x1bHorário das Ilhas Gilberto" + + "\x22Horário do Meridiano de Greenwich Horário da Groelândia Oriental(Hor" + + "ário Padrão da Groelândia Oriental*Horário de Verão da Groelândia Orien" + + "tal\x22Horário da Groenlândia Ocidental*Horário Padrão da Groenlândia Oc" + + "idental,Horário de Verão da Groenlândia Ocidental\x18Horário Padrão de G" + + "uam\x11Horário do Golfo\x12Horário da Guiana\x22Horário do Havaí e Ilhas" + + " Aleutas*Horário Padrão do Havaí e Ilhas Aleutas,Horário de Verão do Hav" + + "aí e Ilhas Aleutas\x15Horário de Hong Kong\x1dHorário Padrão de Hong Kon" + + "g\x1fHorário de Verão de Hong Kong\x10Horário de Hovd\x18Horário Padrão " + + "de Hovd\x1aHorário de Verão de Hovd\x1aHorário Padrão da Índia\x1aHorári" + + "o do Oceano Índico\x15Horário da Indochina\x1eHorário da Indonésia Centr" + + "al\x1fHorário da Indonésia Oriental Horário da Indonésia Ocidental\x10Ho" + + "rário do Irã\x18Horário Padrão do Irã\x1aHorário de Verão do Irã\x13Horá" + + "rio de Irkutsk\x1bHorário Padrão de Irkutsk\x1dHorário de Verão de Irkut" + + "sk\x12Horário de Israel\x1aHorário Padrão de Israel\x1cHorário de Verão " + + "de Israel\x12Horário do Japão\x1aHorário Padrão do Japão\x1cHorário de V" + + "erão do Japão$Horário de Petropavlovsk-Kamchatski,Horário Padrão de Petr" + + "opavlovsk-Kamchatski.Horário de Verão de Petropavlovsk-Kamchatski!Horári" + + "o do Casaquistão Oriental\x22Horário do Casaquistão Ocidental\x12Horário" + + " da Coreia\x1aHorário Padrão da Coreia\x1cHorário de Verão da Coreia\x12" + + "Horário de Kosrae\x17Horário de Krasnoyarsk\x1fHorário Padrão de Krasnoy" + + "arsk!Horário de Verão de Krasnoyarsk\x18Horário do Quirguistão\x11Horári" + + "o de Lanka\x17Horário das Ilhas Line\x15Horário de Lord Howe\x1dHorário " + + "Padrão de Lord Howe\x1fHorário de Verão de Lord Howe\x11Horário de Macau" + + "\x19Horário Padrão de Macau\x1bHorário de Verão de Macau\x1aHorário da I" + + "lha Macquarie\x13Horário de Magadan\x1bHorário Padrão de Magadan\x1dHorá" + + "rio de Verão de Magadan\x14Horário da Malásia\x1bHorário das Ilhas Maldi" + + "vas\x16Horário das Marquesas\x1bHorário das Ilhas Marshall\x1cHorário da" + + "s Ilhas Maurício$Horário Padrão das Ilhas Maurício&Horário de Verão das " + + "Ilhas Maurício\x12Horário de Mawson\x1fHorário do Noroeste do México'Hor" + + "ário Padrão do Noroeste do México)Horário de Verão do Noroeste do Méxic" + + "o Horário do Pacífico do México(Horário Padrão do Pacífico do México*Hor" + + "ário de Verão do Pacífico do México\x16Horário de Ulan Bator\x1eHorário" + + " Padrão de Ulan Bator Horário de Verão de Ulan Bator\x12Horário de Mosco" + + "u\x1aHorário Padrão de Moscou\x1cHorário de Verão de Moscou\x13Horário d" + + "e Mianmar\x11Horário de Nauru\x11Horário do Nepal\x1bHorário da Nova Cal" + + "edônia#Horário Padrão da Nova Caledônia%Horário de Verão da Nova Caledôn" + + "ia\x1aHorário da Nova Zelândia\x22Horário Padrão da Nova Zelândia$Horári" + + "o de Verão da Nova Zelândia\x16Horário de Terra Nova\x1eHorário Padrão d" + + "e Terra Nova Horário de Verão de Terra Nova\x10Horário de Niue\x18Horári" + + "o da Ilha Norfolk\x1fHorário de Fernando de Noronha'Horário Padrão de Fe" + + "rnando de Noronha)Horário de Verão de Fernando de Noronha#Horário das Il" + + "has Mariana do Norte\x17Horário de Novosibirsk\x1fHorário Padrão de Novo" + + "sibirsk!Horário de Verão de Novosibirsk\x10Horário de Omsk\x18Horário Pa" + + "drão de Omsk\x1aHorário de Verão de Omsk\x16Horário do Paquistão\x1eHorá" + + "rio Padrão do Paquistão Horário de Verão do Paquistão\x11Horário de Pala" + + "u\x1dHorário de Papua Nova Guiné\x14Horário do Paraguai\x1cHorário Padrã" + + "o do Paraguai\x1eHorário de Verão do Paraguai\x10Horário do Peru\x18Horá" + + "rio Padrão do Peru\x1aHorário de Verão do Peru\x16Horário das Filipinas" + + "\x1eHorário Padrão das Filipinas Horário de Verão das Filipinas\x19Horár" + + "io das Ilhas Fênix#Horário de Saint Pierre e Miquelon+Horário Padrão de " + + "Saint Pierre e Miquelon-Horário de Verão de Saint Pierre e Miquelon\x14H" + + "orário de Pitcairn\x12Horário de Ponape\x15Horário de Pyongyang\x15Horár" + + "io de Qyzylorda\x1dHorário Padrão de Qyzylorda\x1fHorário de Verão de Qy" + + "zylorda\x1bHorário das Ilhas Reunião\x13Horário de Rothera\x14Horário de" + + " Sacalina\x1cHorário Padrão de Sacalina\x1eHorário de Verão de Sacalina" + + "\x12Horário de Samara\x1aHorário Padrão de Samara\x1cHorário de Verão de" + + " Samara\x11Horário de Samoa\x19Horário Padrão de Samoa\x1bHorário de Ver" + + "ão de Samoa\x1dHorário das Ilhas Seychelles\x1dHorário Padrão de Cingap" + + "ura\x1bHorário das Ilhas Salomão\x1bHorário da Geórgia do Sul\x14Horário" + + " do Suriname\x11Horário de Syowa\x11Horário do Taiti\x12Horário de Taipe" + + "i\x1aHorário Padrão de Taipei\x1cHorário de Verão de Taipei\x18Horário d" + + "o Tajiquistão\x13Horário de Tokelau\x11Horário de Tonga\x19Horário Padrã" + + "o de Tonga\x1bHorário de Verão de Tonga\x11Horário de Chuuk\x1aHorário d" + + "o Turcomenistão\x22Horário Padrão do Turcomenistão$Horário de Verão do T" + + "urcomenistão\x12Horário de Tuvalu\x13Horário do Uruguai\x1bHorário Padrã" + + "o do Uruguai\x1dHorário de Verão do Uruguai\x18Horário do Uzbequistão Ho" + + "rário Padrão do Uzbequistão\x22Horário de Verão do Uzbequistão\x13Horári" + + "o de Vanuatu\x1bHorário Padrão de Vanuatu\x1dHorário de Verão de Vanuatu" + + "\x15Horário da Venezuela\x17Horário de Vladivostok\x1fHorário Padrão de " + + "Vladivostok!Horário de Verão de Vladivostok\x16Horário de Volgogrado\x1e" + + "Horário Padrão de Volgogrado Horário de Verão de Volgogrado\x12Horário d" + + "e Vostok\x17Horário das Ilhas Wake\x1bHorário de Wallis e Futuna\x13Horá" + + "rio de Yakutsk\x1bHorário Padrão de Yakutsk\x1dHorário de Verão de Yakut" + + "sk\x19Horário de Ecaterimburgo!Horário Padrão de Ecaterimburgo#Horário d" + + "e Verão de Ecaterimburgo\x0dpróxima qui." + +var bucket82 string = "" + // Size: 9387 bytes + "\x11d 'de' MMM 'de' U\x0d{1} 'às' {0}\x11dentro de {0} ano\x12dentro de " + + "{0} anos\x11trimestre passado\x0eeste trimestre\x12próximo trimestre\x0d" + + "trim. passado\x0aeste trim.\x0epróximo trim.\x12dentro de {0} mês\x13den" + + "tro de {0} meses\x0da sem. de {0}\x11dentro de {0} dia\x12dentro de {0} " + + "dias\x0chá {0} dom.\x1bdentro de {0} segunda-feira\x1ddentro de {0} segu" + + "ndas-feiras\x0fsegunda passada\x0cesta segunda\x10próxima segunda\x15den" + + "tro de {0} segunda\x16dentro de {0} segundas\x0fhá {0} segunda\x10há {0}" + + " segundas\x1adentro de {0} terça-feira\x1cdentro de {0} terças-feiras" + + "\x0eterça passada\x0besta terça\x0fpróxima terça\x14dentro de {0} terça" + + "\x15dentro de {0} terças\x0ehá {0} terça\x0fhá {0} terças\x12dentro de {" + + "0} ter.\x0chá {0} ter.\x1adentro de {0} quarta-feira\x1cdentro de {0} qu" + + "artas-feiras\x14há {0} quarta-feira\x16há {0} quartas-feiras\x0equarta p" + + "assada\x0besta quarta\x0fpróxima quarta\x12dentro de {0} qua.\x0chá {0} " + + "qua.\x1adentro de {0} quinta-feira\x1cdentro de {0} quintas-feiras\x14há" + + " {0} quinta-feira\x16há {0} quintas-feiras\x0equinta passada\x0besta qui" + + "nta\x0fpróxima quinta\x14dentro de {0} quinta\x15dentro de {0} quintas" + + "\x0ehá {0} quinta\x0fhá {0} quintas\x12dentro de {0} qui.\x0chá {0} qui." + + "\x19dentro de {0} sexta-feira\x1bdentro de {0} sextas-feiras\x13há {0} s" + + "exta-feira\x15há {0} sextas-feiras\x0dsexta passada\x0aesta sexta\x0epró" + + "xima sexta\x13dentro de {0} sexta\x14dentro de {0} sextas\x0dhá {0} sext" + + "a\x0ehá {0} sextas\x12dentro de {0} sex.\x0chá {0} sex.\x0dhá {0} sáb." + + "\x0bhá {0} min\x09há {0} s\x19Hora de verão Britânica\x19Hora de verão d" + + "a Irlanda\x0cHora do Acre\x14Hora padrão do Acre\x16Hora de verão do Acr" + + "e\x14Hora do Afeganistão\x17Hora da África Central\x18Hora da África Ori" + + "ental\x16Hora da África do Sul\x19Hora da África Ocidental!Hora padrão d" + + "a África Ocidental#Hora de verão da África Ocidental\x0eHora do Alasca" + + "\x16Hora padrão do Alasca\x18Hora de verão do Alasca\x0eHora de Almaty" + + "\x16Hora padrão de Almaty\x18Hora de verão de Almaty\x10Hora do Amazonas" + + "\x18Hora padrão do Amazonas\x1aHora de verão do Amazonas\x0cHora Central" + + "\x14Hora padrão Central\x16Hora de verão Central\x0dHora Oriental\x15Hor" + + "a padrão Oriental\x17Hora de verão Oriental\x10Hora de Montanha\x18Hora " + + "padrão da Montanha\x1aHora de verão da Montanha\x11Hora do Pacífico\x19H" + + "ora padrão do Pacífico\x1bHora de verão do Pacífico\x0eHora de Anadyr" + + "\x16Hora padrão de Anadyr\x18Hora de verão de Anadyr\x0cHora de Apia\x14" + + "Hora padrão de Apia\x16Hora de verão de Apia\x0dHora de Aqtau\x15Hora pa" + + "drão de Aqtau\x17Hora de verão de Aqtau\x0eHora de Aqtobe\x16Hora padrão" + + " de Aqtobe\x18Hora de verão de Aqtobe\x0fHora da Arábia\x17Hora padrão d" + + "a Arábia\x19Hora de verão da Arábia\x11Hora da Argentina\x19Hora padrão " + + "da Argentina\x1bHora de verão da Argentina\x1bHora da Argentina Ocidenta" + + "l#Hora padrão da Argentina Ocidental%Hora de verão da Argentina Ocidenta" + + "l\x10Hora da Arménia\x18Hora padrão da Arménia\x1aHora de verão da Armén" + + "ia\x12Hora do Atlântico\x1aHora padrão do Atlântico\x1cHora de verão do " + + "Atlântico\x1aHora da Austrália Central\x22Hora padrão da Austrália Centr" + + "al$Hora de verão da Austrália Central$Hora da Austrália Central Ocidenta" + + "l,Hora padrão da Austrália Central Ocidental.Hora de verão da Austrália " + + "Central Ocidental\x1bHora da Austrália Oriental#Hora padrão da Austrália" + + " Oriental%Hora de verão da Austrália Oriental\x1cHora da Austrália Ocide" + + "ntal$Hora padrão da Austrália Ocidental&Hora de verão da Austrália Ocide" + + "ntal\x13Hora do Azerbaijão\x1bHora padrão do Azerbaijão\x1dHora de verão" + + " do Azerbaijão\x10Hora dos Açores\x18Hora padrão dos Açores\x1aHora de v" + + "erão dos Açores\x12Hora do Bangladesh\x1aHora padrão do Bangladesh\x1cHo" + + "ra de verão do Bangladesh\x0eHora do Butão\x10Hora da Bolívia\x11Hora de" + + " Brasília\x19Hora padrão de Brasília\x1bHora de verão de Brasília\x19Hor" + + "a do Brunei Darussalam\x12Hora de Cabo Verde\x1aHora padrão de Cabo Verd" + + "e\x1cHora de verão de Cabo Verde\x18Hora padrão do Chamorro\x0fHora do C" + + "hatham\x17Hora padrão do Chatham\x19Hora de verão do Chatham\x0dHora do " + + "Chile\x15Hora padrão do Chile\x17Hora de verão do Chile\x0dHora da China" + + "\x15Hora padrão da China\x17Hora de verão da China\x12Hora de Choibalsan" + + "\x1aHora padrão de Choibalsan\x1cHora de verão de Choibalsan\x15Hora da " + + "Ilha do Natal\x14Hora das Ilhas Cocos\x11Hora da Colômbia\x19Hora padrão" + + " da Colômbia\x1bHora de verão da Colômbia\x13Hora das Ilhas Cook\x1bHora" + + " padrão das Ilhas Cook\x1dHora de verão das Ilhas Cook\x0cHora de Cuba" + + "\x14Hora padrão de Cuba\x16Hora de verão de Cuba\x0dHora de Davis\x1aHor" + + "a de Dumont-d’Urville\x13Hora de Timor Leste\x17Hora da Ilha da Páscoa" + + "\x1fHora padrão da Ilha da Páscoa!Hora de verão da Ilha da Páscoa\x0fHor" + + "a do Equador\x16Hora da Europa Central\x1eHora padrão da Europa Central " + + "Hora de verão da Europa Central\x17Hora da Europa Oriental\x1fHora padrã" + + "o da Europa Oriental!Hora de verão da Europa Oriental\x1fHora do Extremo" + + " Leste da Europa\x18Hora da Europa Ocidental Hora padrão da Europa Ocide" + + "ntal\x22Hora de verão da Europa Ocidental\x17Hora das Ilhas Falkland\x1f" + + "Hora padrão das Ilhas Falkland!Hora de verão das Ilhas Falkland\x0cHora " + + "de Fiji\x14Hora padrão de Fiji\x16Hora de verão de Fiji\x17Hora da Guian" + + "a Francesa1Hora das Terras Austrais e Antárcticas Francesas\x13Hora das " + + "Galápagos\x0fHora de Gambier\x10Hora da Geórgia\x18Hora padrão da Geórgi" + + "a\x1aHora de verão da Geórgia\x16Hora das Ilhas Gilbert\x11Hora de Green" + + "wich\x1dHora da Gronelândia Oriental%Hora padrão da Gronelândia Oriental" + + "'Hora de verão da Gronelândia Oriental\x1eHora da Gronelândia Ocidental&" + + "Hora padrão da Gronelândia Ocidental(Hora de verão da Gronelândia Ociden" + + "tal\x14Hora padrão de Guam\x15Hora padrão do Golfo\x0eHora da Guiana\x17" + + "Hora do Havai e Aleutas\x1fHora padrão do Havai e Aleutas!Hora de verão " + + "do Havai e Aleutas\x11Hora de Hong Kong\x19Hora padrão de Hong Kong\x1bH" + + "ora de verão de Hong Kong\x0cHora de Hovd\x14Hora padrão de Hovd\x16Hora" + + " de verão de Hovd\x16Hora padrão da Índia\x16Hora do Oceano Índico\x11Ho" + + "ra da Indochina\x1aHora da Indonésia Central\x1bHora da Indonésia Orient" + + "al\x1cHora da Indonésia Ocidental\x0dHora do Irão\x15Hora padrão do Irão" + + "\x17Hora de verão do Irão\x0fHora de Irkutsk\x17Hora padrão de Irkutsk" + + "\x19Hora de verão de Irkutsk\x0eHora de Israel\x16Hora padrão de Israel" + + "\x18Hora de verão de Israel\x0eHora do Japão\x16Hora padrão do Japão\x18" + + "Hora de verão do Japão Hora de Petropavlovsk-Kamchatski(Hora padrão de P" + + "etropavlovsk-Kamchatski*Hora de verão de Petropavlovsk-Kamchatski\x1dHor" + + "a do Cazaquistão Oriental\x1eHora do Cazaquistão Ocidental\x0eHora da Co" + + "reia\x16Hora padrão da Coreia\x18Hora de verão da Coreia\x0eHora de Kosr" + + "ae\x13Hora de Krasnoyarsk\x1bHora padrão de Krasnoyarsk\x1dHora de verão" + + " de Krasnoyarsk\x14Hora do Quirguistão\x11Hora do Sri Lanka\x13Hora das " + + "Ilhas Line\x11Hora de Lord Howe\x19Hora padrão de Lord Howe\x1bHora de v" + + "erão de Lord Howe\x0dHora de Macau\x15Hora padrão de Macau\x17Hora de ve" + + "rão de Macau\x16Hora da Ilha Macquarie\x0fHora de Magadan\x17Hora padrão" + + " de Magadan\x19Hora de verão de Magadan\x10Hora da Malásia\x11Hora das M" + + "aldivas\x18Hora das Ilhas Marquesas\x17Hora das Ilhas Marshall\x11Hora d" + + "a Maurícia\x19Hora padrão da Maurícia\x1bHora de verão da Maurícia\x0eHo" + + "ra de Mawson\x1bHora do Noroeste do México#Hora padrão do Noroeste do Mé" + + "xico%Hora de verão do Noroeste do México\x1aHora do Pacífico Mexicano" + + "\x22Hora padrão do Pacífico Mexicano$Hora de verão do Pacífico Mexicano" + + "\x12Hora de Ulan Bator\x1aHora padrão de Ulan Bator\x1cHora de verão de " + + "Ulan Bator\x0fHora de Moscovo\x17Hora padrão de Moscovo\x19Hora de verão" + + " de Moscovo\x0fHora de Mianmar\x0dHora de Nauru\x0dHora do Nepal\x17Hora" + + " da Nova Caledónia\x1fHora padrão da Nova Caledónia!Hora de verão da Nov" + + "a Caledónia\x16Hora da Nova Zelândia\x1eHora padrão da Nova Zelândia Hor" + + "a de verão da Nova Zelândia\x12Hora da Terra Nova\x1aHora padrão da Terr" + + "a Nova\x1cHora de verão da Terra Nova\x0cHora de Niue\x14Hora da Ilha No" + + "rfolk\x1bHora de Fernando de Noronha#Hora padrão de Fernando de Noronha%" + + "Hora de verão de Fernando de Noronha\x1fHora das Ilhas Mariana do Norte" + + "\x13Hora de Novosibirsk\x1bHora padrão de Novosibirsk\x1dHora de verão d" + + "e Novosibirsk\x0cHora de Omsk\x14Hora padrão de Omsk\x16Hora de verão de" + + " Omsk\x12Hora do Paquistão\x1aHora padrão do Paquistão\x1cHora de verão " + + "do Paquistão\x0dHora de Palau\x19Hora de Papua Nova Guiné\x10Hora do Par" + + "aguai\x18Hora padrão do Paraguai\x1aHora de verão do Paraguai\x0cHora do" + + " Peru\x14Hora padrão do Peru\x16Hora de verão do Peru\x12Hora das Filipi" + + "nas\x1aHora padrão das Filipinas\x1cHora de verão das Filipinas\x15Hora " + + "das Ilhas Fénix\x1eHora de São Pedro e Miquelão&Hora padrão de São Pedro" + + " e Miquelão(Hora de verão de São Pedro e Miquelão\x10Hora de Pitcairn" + + "\x0eHora de Ponape\x11Hora de Pyongyang\x11Hora de Qyzylorda\x19Hora pad" + + "rão de Qyzylorda\x1bHora de verão de Qyzylorda\x10Hora de Reunião\x0fHor" + + "a de Rothera\x10Hora de Sacalina\x18Hora padrão de Sacalina\x1aHora de v" + + "erão de Sacalina\x0eHora de Samara\x16Hora padrão de Samara\x18Hora de v" + + "erão de Samara\x0dHora de Samoa\x15Hora padrão de Samoa\x17Hora de verão" + + " de Samoa\x12Hora das Seicheles\x19Hora padrão de Singapura\x17Hora das " + + "Ilhas Salomão\x17Hora da Geórgia do Sul\x10Hora do Suriname\x0dHora de S" + + "yowa\x0dHora do Taiti\x0eHora de Taipé\x16Hora padrão de Taipé\x18Hora d" + + "e verão de Taipé\x14Hora do Tajiquistão\x0fHora de Tokelau\x0dHora de To" + + "nga\x15Hora padrão de Tonga\x17Hora de verão de Tonga\x0dHora de Chuuk" + + "\x17Hora do Turquemenistão\x1fHora padrão do Turquemenistão!Hora de verã" + + "o do Turquemenistão\x0eHora de Tuvalu\x0fHora do Uruguai\x17Hora padrão " + + "do Uruguai\x19Hora de verão do Uruguai\x14Hora do Uzbequistão\x1cHora pa" + + "drão do Uzbequistão\x1eHora de verão do Uzbequistão\x0fHora do Vanuatu" + + "\x17Hora padrão do Vanuatu\x19Hora de verão do Vanuatu\x11Hora da Venezu" + + "ela\x13Hora de Vladivostok\x1bHora padrão de Vladivostok\x1dHora de verã" + + "o de Vladivostok\x12Hora de Volgogrado\x1aHora padrão de Volgogrado\x1cH" + + "ora de verão de Volgogrado\x0eHora de Vostok\x11Hora da Ilha Wake\x17Hor" + + "a de Wallis e Futuna\x0fHora de Yakutsk\x17Hora padrão de Yakutsk\x19Hor" + + "a de verão de Yakutsk\x15Hora de Ecaterimburgo\x1dHora padrão de Ecateri" + + "mburgo\x1fHora de verão de Ecaterimburgo" + +var bucket83 string = "" + // Size: 14257 bytes + "\x03Qul\x03Hat\x03Pau\x03Ayr\x03Aym\x03Int\x03Ant\x03Qha\x03Uma\x03Kan" + + "\x03Aya\x03Kap\x0bQulla puquy\x0bHatun puquy\x0cPauqar waray\x06Ayriwa" + + "\x07Aymuray\x0aInti raymi\x0aAnta Sitwa\x0cQhapaq Sitwa\x09Uma raymi\x08" + + "Kantaray\x0aAyamarqʼa\x0bKapaq Raymi\x03Dom\x03Lun\x03Mar\x04Mié\x03Jue" + + "\x03Vie\x03Sab\x1bEEEE, 'ils' d 'da' MMMM y G\x0fd 'da' MMMM y G\x06scha" + + "n.\x05favr.\x04mars\x04avr.\x04matg\x06zercl.\x04fan.\x05avust\x05sett." + + "\x04oct.\x04nov.\x04dec.\x07schaner\x06favrer\x06avrigl\x09zercladur\x07" + + "fanadur\x09settember\x07october\x08november\x08december\x08dumengia\x09g" + + "lindesdi\x05mardi\x07mesemna\x07gievgia\x08venderdi\x05sonda\x0a1. quart" + + "al\x0a2. quartal\x0a3. quartal\x0a4. quartal\x0davant Cristus\x0fsuenter" + + " Cristus\x07av. Cr.\x06s. Cr.\x19EEEE, 'ils' d 'da' MMMM y\x0dd 'da' MMM" + + "M y\x05epoca\x03onn\x04mais\x04emna\x07stersas\x03ier\x02oz\x06damaun" + + "\x09puschmaun\x0edi da l’emna\x0emesadad dal di\x03ura\x07secunda\x0ezon" + + "a d’urari\x04Mut.\x04Gas.\x04Wer.\x04Mat.\x04Gic.\x04Kam.\x04Nya.\x04Kan" + + ".\x04Nze.\x04Ukw.\x04Ugu.\x04Uku.\x05Nzero\x08Ruhuhuma\x09Ntwarante\x09N" + + "damukiza\x06Rusama\x07Ruheshi\x08Mukakaro\x0aNyandagaro\x08Nyakanga\x08G" + + "itugutu\x08Munyonyo\x08Kigarama\x03cu.\x04mbe.\x04kab.\x04gtu.\x04kan." + + "\x04gnu.\x04gnd.\x0cKu w’indwi\x0bKu wa mbere\x0cKu wa kabiri\x0cKu wa g" + + "atatu\x0aKu wa kane\x0cKu wa gatanu\x0fKu wa gatandatu\x02I1\x02I2\x02I3" + + "\x02I4\x19Igice ca mbere c’umwaka\x1aIgice ca kabiri c’umwaka\x1aIgice c" + + "a gatatu c’umwaka\x18Igice ca kane c’umwaka\x05Z.MU.\x05Z.MW.\x0dMbere y" + + "a Yezu\x0dNyuma ya Yezu\x05Mb.Y.\x04Ny.Y\x05Igihe\x06Ukwezi\x0dIndwi, Iy" + + "inga\x05Umusi\x0cEjo (haheze)\x08Uyu musi\x0cEjo (hazoza)\x11Iminsi y’iy" + + "inga\x07M.s/N.s\x05Isaha\x07Umunota\x08Isegonda\x11Isaha yo mukarere\x0c" + + "era budistă\x04e.b.\x0c{1} 'la' {0}\x04ian.\x04feb.\x04mar.\x04apr.\x03m" + + "ai\x04iun.\x04iul.\x04aug.\x05sept.\x08ianuarie\x09februarie\x06martie" + + "\x07aprilie\x05iunie\x05iulie\x06august\x0aseptembrie\x09octombrie\x09no" + + "iembrie\x09decembrie\x04dum.\x04lun.\x04mie.\x03joi\x04vin.\x05sâm.\x09d" + + "uminică\x04luni\x06marți\x08miercuri\x03joi\x06vineri\x0asâmbătă\x03joi" + + "\x07trim. I\x08trim. II\x09trim. III\x08trim. IV\x0ctrimestrul I\x14trim" + + "estrul al II-lea\x15trimestrul al III-lea\x14trimestrul al IV-lea\x0emie" + + "zul nopții\x07amiază\x0adimineața\x0cdupă-amiaza\x05seara\x07noaptea\x0b" + + "dimineață\x0ddupă-amiază\x11la miezul nopții\x0ala amiază\x13înainte de " + + "Hristos\x16înaintea erei noastre\x0ddupă Hristos\x0cera noastră\x06î.Hr." + + "\x06î.e.n\x05d.Hr.\x04e.n.\x07Tișrei\x07Heșvan\x06Kislev\x05Tevet\x06Șev" + + "at\x06Adar I\x04Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x06Tammuz\x02A" + + "v\x04Elul\x04eră\x0banul trecut\x0banul acesta\x0banul viitor\x0cpeste {" + + "0} an\x0dpeste {0} ani\x10peste {0} de ani\x0bacum {0} an\x0cacum {0} an" + + "i\x0facum {0} de ani\x07+{0} an\x08+{0} ani\x07-{0} an\x08-{0} ani\x09tr" + + "imestru\x11trimestrul trecut\x11trimestrul acesta\x11trimestrul viitor" + + "\x13peste {0} trimestru\x13peste {0} trimestre\x16peste {0} de trimestre" + + "\x12acum {0} trimestru\x12acum {0} trimestre\x15acum {0} de trimestre" + + "\x0ctrim. trecut\x0ctrim. acesta\x0ctrim. viitor\x0fpeste {0} trim.\x0ea" + + "cum {0} trim.\x05lună\x0dluna trecută\x0cluna aceasta\x0dluna viitoare" + + "\x0fpeste {0} lună\x0epeste {0} luni\x11peste {0} de luni\x0eacum {0} lu" + + "nă\x0dacum {0} luni\x10acum {0} de luni\x0a+{0} lună\x09+{0} luni\x0a-{0" + + "} lună\x09-{0} luni\x0dsăptămână\x15săptămâna trecută\x14săptămâna aceas" + + "ta\x15săptămâna viitoare\x17peste {0} săptămână\x16peste {0} săptămâni" + + "\x19peste {0} de săptămâni\x16acum {0} săptămână\x15acum {0} săptămâni" + + "\x18acum {0} de săptămâni\x13săptămâna cu {0}\x06săpt.\x10peste {0} săpt" + + ".\x0facum {0} săpt.\x0dsăpt. cu {0}\x0b+{0} săpt.\x0b-{0} săpt.\x0balalt" + + "ăieri\x04ieri\x03azi\x06mâine\x09poimâine\x0cpeste {0} zi\x0epeste {0} " + + "zile\x11peste {0} de zile\x0bacum {0} zi\x0dacum {0} zile\x10acum {0} de" + + " zile\x07+{0} zi\x09+{0} zile\x07-{0} zi\x09-{0} zile\x12Zi a săptămânii" + + "\x11duminica trecută\x10duminica aceasta\x11duminica viitoare\x22duminic" + + "ă, peste {0} săptămână!duminică, peste {0} săptămâni$duminică, peste {0" + + "} de săptămâni!duminică, acum {0} săptămână duminică, acum {0} săptămâni" + + "#duminică, acum {0} de săptămâni\x0ddum. trecută\x0cdum. aceasta\x0ddum." + + " viitoare\x1bduminică, peste {0} săpt.\x1aduminică, acum {0} săpt.\x0cdu" + + ". trecută\x0bdu. aceasta\x0cdu. viitoare\x0fdu. +{0} săpt.\x0fdu. -{0} s" + + "ăpt.\x0elunea trecută\x0dlunea aceasta\x0elunea viitoare\x1dluni, peste" + + " {0} săptămână\x1cluni, peste {0} săptămâni\x1fluni, peste {0} de săptăm" + + "âni\x1cluni, acum {0} săptămână\x1bluni, acum {0} săptămâni\x1eluni, ac" + + "um {0} de săptămâni\x0dlun. trecută\x0clun. aceasta\x0dlun. viitoare\x16" + + "luni, peste {0} săpt.\x15luni, acum {0} săpt.\x0clu. trecută\x0blu. acea" + + "sta\x0clu. viitoare\x0flu. +{0} săpt.\x0flu. -{0} săpt.\x10marțea trecut" + + "ă\x0fmarțea aceasta\x10marțea viitoare\x1fmarți, peste {0} săptămână" + + "\x1emarți, peste {0} săptămâni!marți, peste {0} de săptămâni\x1emarți, a" + + "cum {0} săptămână\x1dmarți, acum {0} săptămâni marți, acum {0} de săptăm" + + "âni\x0dmar. trecută\x0cmar. aceasta\x0dmar. viitoare\x18marți, peste {0" + + "} săpt.\x17marți, acum {0} săpt.\x0cma. trecută\x0bma. aceasta\x0cma. vi" + + "itoare\x0fma. +{0} săpt.\x0fma. -{0} săpt.\x12miercurea trecută\x11mierc" + + "urea aceasta\x12miercurea viitoare!miercuri, peste {0} săptămână miercur" + + "i, peste {0} săptămâni#miercuri, peste {0} de săptămâni miercuri, acum {" + + "0} săptămână\x1fmiercuri, acum {0} săptămâni\x22miercuri, acum {0} de să" + + "ptămâni\x0dmie. trecută\x0cmie. aceasta\x0dmie. viitoare\x1amiercuri, pe" + + "ste {0} săpt.\x19miercuri, acum {0} săpt.\x0cmi. trecută\x0bmi. aceasta" + + "\x0cmi. viitoare\x0fmi. +{0} săpt.\x0fmi. -{0} săpt.\x0djoia trecută\x0c" + + "joia aceasta\x0djoia viitoare\x1cjoi, peste {0} săptămână\x1bjoi, peste " + + "{0} săptămâni\x1ejoi, peste {0} de săptămâni\x1bjoi, acum {0} săptămână" + + "\x1ajoi, acum {0} săptămâni\x1djoi, acum {0} de săptămâni\x0cjoi trecută" + + "\x0bjoi aceasta\x15joi, peste {0} săpt.\x14joi, acum {0} săpt.\x0cjo. tr" + + "ecută\x0bjo. aceasta\x0cjo. viitoare\x0fjo. +{0} săpt.\x0fjo. -{0} săpt." + + "\x10vinerea trecută\x0fvinerea aceasta\x10vinerea viitoare\x1fvineri, pe" + + "ste {0} săptămână\x1evineri, peste {0} săptămâni!vineri, peste {0} de să" + + "ptămâni\x1evineri, acum {0} săptămână\x1dvineri, acum {0} săptămâni vine" + + "ri, acum {0} de săptămâni\x0dvin. trecută\x0cvin. aceasta\x0dvin. viitoa" + + "re\x18vineri, peste {0} săpt.\x17vineri, acum {0} săpt.\x0cvi. trecută" + + "\x0bvi. aceasta\x0cvi. viitoare\x0fvi. +{0} săpt.\x0fvi. -{0} săpt.\x12s" + + "âmbăta trecută\x11sâmbăta aceasta\x12sâmbăta viitoare#sâmbătă, peste {0" + + "} săptămână\x22sâmbătă, peste {0} săptămâni%sâmbătă, peste {0} de săptăm" + + "âni\x22sâmbătă, acum {0} săptămână!sâmbătă, acum {0} săptămâni$sâmbătă," + + " acum de {0} săptămâni\x0esâm. trecută\x0dsâm. aceasta\x0esâm. viitoare" + + "\x1csâmbătă, peste {0} săpt.\x1bsâmbătă, acum {0} săpt.\x0dsâ. trecută" + + "\x0csâ. aceasta\x0dsâ. viitoare\x10sâ. +{0} săpt.\x10sâ. -{0} săpt.\x08a" + + ".m/p.m.\x04oră\x0bora aceasta\x0epeste {0} oră\x0dpeste {0} ore\x10peste" + + " {0} de ore\x0dacum {0} oră\x0cacum {0} ore\x0facum {0} de ore\x0bpeste " + + "{0} h\x0aacum {0} h\x0eminutul acesta\x0fpeste {0} minut\x10peste {0} mi" + + "nute\x13peste {0} de minute\x0eacum {0} minut\x0facum {0} minute\x12acum" + + " {0} de minute\x0epeste {0} min.\x0dacum {0} min.\x08secundă\x04acum\x12" + + "peste {0} secundă\x11peste {0} secunde\x14peste {0} de secunde\x11acum {" + + "0} secundă\x10acum {0} secunde\x13acum {0} de secunde\x0epeste {0} sec." + + "\x0dacum {0} sec.\x08fus orar\x0bOra din {0}\x14Ora de vară din {0}\x14O" + + "ra standard din {0}\x1aTimpul universal coordonat\x17Ora de vară britani" + + "că\x17Ora de vară a Irlandei\x08Ora Acre\x11Ora standard Acre\x11Ora de " + + "vară Acre\x12Ora Afganistanului\x14Ora Africii Centrale\x15Ora Africii O" + + "rientale\x17Ora Africii Meridionale\x17Ora Africii Occidentale\x22Ora st" + + "andard a Africii Occidentale\x22Ora de vară a Africii Occidentale\x0eOra" + + " din Alaska\x17Ora standard din Alaska\x17Ora de vară din Alaska\x0aOra " + + "Almaty\x13Ora standard Almaty\x13Ora de vară Almaty\x0eOra Amazonului" + + "\x19Ora standard a Amazonului\x19Ora de vară a Amazonului\x1dOra central" + + "ă nord-americană&Ora standard centrală nord-americană&Ora de vară centr" + + "ală nord-americană\x1eOra orientală nord-americană'Ora standard oriental" + + "ă nord-americană'Ora de vară orientală nord-americană Ora zonei montane" + + " nord-americane.Ora standard în zona montană nord-americană.Ora de vară " + + "în zona montană nord-americană Ora zonei Pacific nord-americane-Ora sta" + + "ndard în zona Pacific nord-americană-Ora de vară în zona Pacific nord-am" + + "ericană\x0eOra din Anadyr\x17Ora standard din Anadyr\x17Ora de vară din " + + "Anadyr\x0cOra din Apia\x15Ora standard din Apia\x15Ora de vară din Apia" + + "\x09Ora Aqtau\x12Ora standard Aqtau\x1aOra de vară a zonei Aqtau\x0aOra " + + "Aqtobe\x13Ora standard Aqtobe\x1bOra de vară a zonei Aqtobe\x0aOra arabă" + + "\x13Ora standard arabă\x13Ora de vară arabă\x0eOra Argentinei\x19Ora sta" + + "ndard a Argentinei\x19Ora de vară a Argentinei\x1aOra Argentinei Occiden" + + "tale%Ora standard a Argentinei Occidentale%Ora de vară a Argentinei Occi" + + "dentale\x0cOra Armeniei\x17Ora standard a Armeniei\x17Ora de vară a Arme" + + "niei!Ora zonei Atlantic nord-americane.Ora standard în zona Atlantic nor" + + "d-americană.Ora de vară în zona Atlantic nord-americană\x17Ora Australie" + + "i Centrale\x22Ora standard a Australiei Centrale\x22Ora de vară a Austra" + + "liei Centrale\x22Ora Australiei Central Occidentale-Ora standard a Austr" + + "aliei Central Occidentale-Ora de vară a Australiei Central Occidentale" + + "\x18Ora Australiei Orientale#Ora standard a Australiei Orientale#Ora de " + + "vară a Australiei Orientale\x1aOra Australiei Occidentale%Ora standard a" + + " Australiei Occidentale%Ora de vară a Australiei Occidentale\x13Ora Azer" + + "baidjanului\x1eOra standard a Azerbaidjanului\x1eOra de vară a Azerbaidj" + + "anului\x0dOra din Azore\x16Ora standard din Azore\x16Ora de vară din Azo" + + "re\x12Ora din Bangladesh\x1bOra standard din Bangladesh\x1bOra de vară d" + + "in Bangladesh\x0eOra Bhutanului\x0cOra Boliviei\x0dOra Brasiliei\x18Ora " + + "standard a Brasiliei\x18Ora de vară a Brasiliei\x19Ora din Brunei Daruss" + + "alam\x13Ora din Capul Verde\x1cOra standard din Capul Verde\x1cOra de va" + + "ră din Capul Verde\x10Ora din Chamorro\x0fOra din Chatham\x18Ora standar" + + "d din Chatham\x18Ora de vară din Chatham\x0dOra din Chile\x16Ora standar" + + "d din Chile\x16Ora de vară din Chile\x0aOra Chinei\x15Ora standard a Chi" + + "nei\x15Ora de vară a Chinei\x12Ora din Choibalsan\x1bOra standard din Ch" + + "oibalsan\x1bOra de vară din Choibalsan\x18Ora din Insula Christmas\x13Or" + + "a Insulelor Cocos\x0dOra Columbiei\x18Ora standard a Columbiei\x18Ora de" + + " vară a Columbiei\x12Ora Insulelor Cook\x1dOra standard a Insulelor Cook" + + "\x1dOra de vară a Insulelor Cook\x09Ora Cubei\x14Ora standard a Cubei" + + "\x14Ora de vară a Cubei\x0dOra din Davis\x1aOra din Dumont-d’Urville\x14" + + "Ora Timorului de Est\x18Ora din Insula Paștelui!Ora standard din Insula " + + "Paștelui!Ora de vară din Insula Paștelui\x0fOra Ecuadorului\x14Ora Europ" + + "ei Centrale\x1fOra standard a Europei Centrale\x1fOra de vară a Europei " + + "Centrale\x12Ora Europei de Est\x1dOra standard a Europei de Est\x1dOra d" + + "e vară a Europei de Est Ora Europei de Est îndepărtate\x13Ora Europei de" + + " Vest\x1eOra standard a Europei de Vest\x1eOra de vară a Europei de Vest" + + "\x19Ora din Insulele Falkland\x22Ora standard din Insulele Falkland\x22O" + + "ra de vară din Insulele Falkland\x0cOra din Fiji\x15Ora standard din Fij" + + "i\x15Ora de vară din Fiji\x18Ora din Guyana Franceză4Ora din Teritoriile" + + " Australe și Antarctice Franceze\x11Ora din Galapagos\x0fOra din Gambier" + + "\x0cOra Georgiei\x17Ora standard a Georgiei\x17Ora de vară a Georgiei" + + "\x15Ora Insulelor Gilbert\x11Ora de Greenwhich\x19Ora Groenlandei orient" + + "ale$Ora standard a Groenlandei orientale$Ora de vară a Groenlandei orien" + + "tale\x1bOra Groenlandei occidentale&Ora standard a Groenlandei occidenta" + + "le&Ora de vară a Groenlandei occidentale\x17Ora standard a Golfului\x0eO" + + "ra din Guyana\x17Ora din Hawaii-Aleutine Ora standard din Hawaii-Aleutin" + + "e Ora de vară din Hawaii-Aleutine\x11Ora din Hong Kong\x1aOra standard d" + + "in Hong Kong\x1aOra de vară din Hong Kong\x0cOra din Hovd\x15Ora standar" + + "d din Hovd\x15Ora de vară din Hovd\x0aOra Indiei\x14Ora Oceanului Indian" + + "\x0eOra Indochinei\x17Ora Indoneziei Centrale\x15Ora Indoneziei de Est" + + "\x16Ora Indoneziei de Vest\x0cOra Iranului\x17Ora standard a Iranului" + + "\x17Ora de vară a Iranului\x0fOra din Irkuțk\x18Ora standard din Irkuțk" + + "\x18Ora de vară din Irkuțk\x0eOra Israelului\x19Ora standard a Israelulu" + + "i\x19Ora de vară a Israelului\x0cOra Japoniei\x17Ora standard a Japoniei" + + "\x17Ora de vară a Japoniei Ora din Petropavlovsk-Kamciațki)Ora standard " + + "din Petropavlovsk-Kamciațki)Ora de vară din Petropavlovsk-Kamciațki\x1aO" + + "ra din Kazahstanul de Est\x1bOra din Kazahstanul de Vest\x0aOra Coreei" + + "\x15Ora standard a Coreei\x15Ora de vară a Coreei\x0eOra din Kosrae\x13O" + + "ra din Krasnoiarsk\x1cOra standard din Krasnoiarsk\x1cOra de vară din Kr" + + "asnoiarsk\x14Ora din Kârgâzstan\x15Ora din Insulele Line\x11Ora din Lord" + + " Howe\x1aOra standard din Lord Howe\x1aOra de vară din Lord Howe\x11Ora " + + "din Macquarie\x0fOra din Magadan\x18Ora standard din Magadan\x18Ora de v" + + "ară din Magadan\x10Ora din Malaysia\x0fOra din Maldive\x16Ora Insulelor " + + "Marchize\x16Ora Insulelor Marshall\x11Ora din Mauritius\x1aOra standard " + + "din Mauritius\x1aOra de vară din Mauritius\x0eOra din Mawson\x1aOra Mexi" + + "cului de nord-vest%Ora standard a Mexicului de nord-vest%Ora de vară a M" + + "exicului de nord-vest\x1aOra zonei Pacific mexicane%Ora standard a zonei" + + " Pacific mexicane%Ora de vară a zonei Pacific mexicane\x12Ora din Ulan B" + + "ator\x1bOra standard din Ulan Bator\x1bOra de vară din Ulan Bator\x0cOra" + + " Moscovei\x17Ora standard a Moscovei\x17Ora de vară a Moscovei\x0fOra My" + + "anmarului\x0dOra din Nauru\x0dOra Nepalului\x12Ora Noii Caledonii\x1dOra" + + " standard a Noii Caledonii\x1dOra de vară a Noii Caledonii\x11Ora Noii Z" + + "eelande\x1cOra standard a Noii Zeelande\x1cOra de vară a Noii Zeelande" + + "\x14Ora din Newfoundland\x1dOra standard din Newfoundland\x1dOra de vară" + + " din Newfoundland\x0cOra din Niue\x15Ora Insulelor Norfolk\x1bOra din Fe" + + "rnando de Noronha$Ora standard din Fernando de Noronha$Ora de vară din F" + + "ernando de Noronha\x13Ora din Novosibirsk\x1cOra standard din Novosibirs" + + "k\x1cOra de vară din Novosibirsk\x0cOra din Omsk\x15Ora standard din Oms" + + "k\x15Ora de vară din Omsk\x10Ora Pakistanului\x1bOra standard a Pakistan" + + "ului\x1bOra de vară a Pakistanului\x0dOra din Palau\x19Ora din Papua Nou" + + "a Guinee\x10Ora din Paraguay\x19Ora standard din Paraguay\x19Ora de vară" + + " din Paraguay\x0cOra din Peru\x15Ora standard din Peru\x15Ora de vară di" + + "n Peru\x10Ora din Filipine\x19Ora standard din Filipine\x19Ora de vară d" + + "in Filipine\x15Ora Insulelor Phoenix!Ora din Saint-Pierre și Miquelon*Or" + + "a standard din Saint-Pierre și Miquelon*Ora de vară din Saint-Pierre și " + + "Miquelon\x10Ora din Pitcairn\x0eOra din Ponape\x11Ora din Pyongyang\x0fO" + + "ra din Reunion\x0fOra din Rothera\x0fOra din Sahalin\x18Ora standard din" + + " Sahalin\x18Ora de vară din Sahalin\x0eOra din Samara\x17Ora standard di" + + "n Samara\x17Ora de vară din Samara\x0dOra din Samoa\x16Ora standard din " + + "Samoa\x16Ora de vară din Samoa\x12Ora din Seychelles\x11Ora din Singapor" + + "e\x15Ora Insulelor Solomon\x13Ora Georgiei de Sud\x0fOra Surinamului\x0d" + + "Ora din Syowa\x0eOra din Tahiti\x0eOra din Taipei\x17Ora standard din Ta" + + "ipei\x17Ora de vară din Taipei\x13Ora din Tadjikistan\x0fOra din Tokelau" + + "\x0dOra din Tonga\x16Ora standard din Tonga\x16Ora de vară din Tonga\x0d" + + "Ora din Chuuk\x14Ora din Turkmenistan\x1dOra standard din Turkmenistan" + + "\x1dOra de vară din Turkmenistan\x0eOra din Tuvalu\x0fOra Uruguayului" + + "\x1aOra standard a Uruguayului\x1aOra de vară a Uruguayului\x12Ora din U" + + "zbekistan\x1bOra standard din Uzbekistan\x1bOra de vară din Uzbekistan" + + "\x0fOra din Vanuatu\x18Ora standard din Vanuatu\x18Ora de vară din Vanua" + + "tu\x0eOra Venezuelei\x13Ora din Vladivostok\x1cOra standard din Vladivos" + + "tok\x1cOra de vară din Vladivostok\x11Ora din Volgograd\x1aOra standard " + + "din Volgograd\x1aOra de vară din Volgograd\x0eOra din Vostok\x10Ora Insu" + + "lei Wake\x19Ora din Wallis și Futuna\x0fOra din Yakuțk\x18Ora standard d" + + "in Yakuțk\x18Ora de vară din Yakuțk\x14Ora din Ekaterinburg\x1dOra stand" + + "ard din Ekaterinburg\x1dOra de vară din Ekaterinburg" + +var bucket84 string = "" + // Size: 10540 bytes + "\x03Dum\x03Lun\x03Mar\x03Mie\x03Joi\x03Vin\x04Sâm\x07trim. 1\x07trim. 2" + + "\x07trim. 3\x07trim. 4\x0ctrimestrul 1\x0ctrimestrul 2\x0ctrimestrul 3" + + "\x0ctrimestrul 4\x07Trim. 1\x07Trim. 2\x07Trim. 3\x07Trim. 4\x0cTrimestr" + + "ul 1\x0cTrimestrul 2\x0cTrimestrul 3\x0cTrimestrul 4\x06seară\x06noapte" + + "\x07î.e.n.\x0fMweri wa kwanza\x0eMweri wa kaili\x0fMweri wa katatu\x0eMw" + + "eri wa kaana\x0dMweri wa tanu\x0dMweri wa sita\x0dMweri wa saba\x0dMweri" + + " wa nane\x0dMweri wa tisa\x0eMweri wa ikumi\x16Mweri wa ikumi na moja" + + "\x17Mweri wa ikumi na mbili\x03Ijp\x03Ijt\x03Ijn\x04Ijtn\x03Alh\x03Iju" + + "\x03Ijm\x09Ijumapili\x09Ijumatatu\x08Ijumanne\x09Ijumatano\x08Alhamisi" + + "\x06Ijumaa\x09Ijumamosi\x0eRobo ya kwanza\x0dRobo ya kaili\x0eRobo ya ka" + + "tatu\x0dRobo ya kaana\x0akang’ama\x07kingoto\x0fKabla ya Mayesu\x0fBaada" + + " ya Mayesu\x05Muaka\x05Iwiki\x04Hiyo\x04Linu\x08Ng’ama\x0dMfiri a iwiki" + + "\x06Nkwaya\x06Тот\x08Бабэ\x0aХатур\x0aКихак\x08Тубэ\x0aАмшир\x10Барамхат" + + "\x0eБармуда\x0cБашнас\x0aБауна\x08Абиб\x0aМисра\x08Наси\x0fd MMM y 'г'. " + + "G\x0cянваря\x0eфевраля\x0aмарта\x0cапреля\x06мая\x08июня\x08июля\x0eавгу" + + "ста\x10сентября\x0eоктября\x0cноября\x0eдекабря\x04вс\x04пн\x04вт\x04ср" + + "\x04чт\x04пт\x04сб\x16воскресенье\x16понедельник\x0eвторник\x0aсреда\x0e" + + "четверг\x0eпятница\x0eсуббота\x0a1-й кв.\x0a2-й кв.\x0a3-й кв.\x0a4-й к" + + "в.\x131-й квартал\x132-й квартал\x133-й квартал\x134-й квартал\x09полд." + + "\x08утра\x06дня\x0cвечера\x08ночи\x0eполночь\x0eполдень\x08день\x08ночь" + + "\x0aвечер(до Рождества Христова\x16до нашей эры(от Рождества Христова" + + "\x11нашей эры\x0cдо н. э.\x07н. э.\x0bдо н.э.\x06н.э.\x0dd MMM y 'г'." + + "\x0cТишрей\x0cХешван\x0cКислев\x0aТевет\x0aШеват\x0aАдар I\x08Адар\x0bАд" + + "ар II\x0aНисан\x06Ияр\x0aСиван\x0cТаммуз\x04Ав\x08Элул\x0cЧайтра\x10Ваи" + + "сакха\x10Джанштха\x0cАсадха\x0eСравана\x0cБхадра\x0cАзвина\x0eКартика" + + "\x14Аграхайана\x0aПауза\x0aМагха\x10Пхалгуна\x10Мухаррам\x0aСафар\x1cРаб" + + "и-уль-авваль\x18Раби-уль-ахир Джумад-уль-авваль\x1cДжумад-уль-ахир\x0cР" + + "аджаб\x0cШаабан\x0eРамадан\x0eШавваль\x13Зуль-Каада\x15Зуль-Хиджжа!Эпох" + + "а Тайка (645–650)#Эпоха Хакути (650–671)#Эпоха Хакухо (672–686)\x1fЭпох" + + "а Сючё (686–701)!Эпоха Тайхо (701–704)\x1fЭпоха Кёюн (704–708)\x1fЭпоха" + + " Вадо (708–715)!Эпоха Рэйки (715–717)\x1dЭпоха Ёро (717–724)#Эпоха Дзинк" + + "и (724–729)#Эпоха Темпьё (729–749)#Эпоха Темпьё (749–749),Эпоха Темпьё-" + + "Сьохо (749-757),Эпоха Темпьё-Ходзи (757-765),Эпоха Темпьё-Ходзи (765-76" + + "7)*Эпоха Джинго-Кёюн (767-770)\x1fЭпоха Хоки (770–780)!Эпоха Теньё (781–" + + "782)#Эпоха Енряку (782–806)!Эпоха Дайдо (806–810)!Эпоха Конин (810–824)#" + + "Эпоха Тентьо (824–834)\x1fЭпоха Шова (834–848)\x1fЭпоха Кайо (848–851)#" + + "Эпоха Ниндзю (851–854)!Эпоха Сайко (854–857)#Эпоха Теннан (857–859)!Эпо" + + "ха Йоган (859–877)#Эпоха Генкей (877–885)!Эпоха Нинна (885–889)#Эпоха К" + + "ампьё (889–898)#Эпоха Сьотай (898–901)\x1fЭпоха Энги (901–923)!Эпоха Ен" + + "тьо (923–931)#Эпоха Сьёхэй (931–938)#Эпоха Тенгьо (938–947)'Эпоха Тенри" + + "яку (947–957)%Эпоха Тентоку (957–961)\x1dЭпоха Ова (961–964)\x1fЭпоха К" + + "охо (964–968)\x1fЭпоха Анна (968–970)%Эпоха Тенроку (970–973)#Эпоха Тен" + + "ьен (973–976)%Эпоха Дзьоген (976–978)#Эпоха Тенген (978–983)!Эпоха Ейка" + + "н (983–985)!Эпоха Канна (985–987)\x1fЭпоха Ейен (987–989)\x1fЭпоха Ейсо" + + " (989–990)#Эпоха Сёряку (990–995)#Эпоха Тётоку (995–999) Эпоха Тёхо (999" + + "–1004)#Эпоха Канко (1004–1012)!Эпоха Тёва (1012–1017)%Эпоха Каннин (10" + + "17–1021)#Эпоха Дзиан (1021–1024)%Эпоха Мандзю (1024–1028)#Эпоха Тёгэн (1" + + "028–1037)%Эпоха Тёряку (1037–1040)!Эпоха Тёкю (1040–1044)%Эпоха Катоку (" + + "1044–1046)!Эпоха Эйсо (1046–1053)#Эпоха Тэнги (1053–1058)#Эпоха Кохэй (1" + + "058–1065)'Эпоха Дзиряку (1065–1069)!Эпоха Энкю (1069–1074)!Эпоха Сёхо (1" + + "074–1077)%Эпоха Сёряку (1077–1081)!Эпоха Эйхо (1081–1084)#Эпоха Отоку (1" + + "084–1087)%Эпоха Кандзи (1087–1094)!Эпоха Кахо (1094–1096)!Эпоха Эйтё (10" + + "96–1097)%Эпоха Сётоку (1097–1099)!Эпоха Кова (1099–1104)#Эпоха Тёдзи (11" + + "04–1106)!Эпоха Касё (1106–1108)%Эпоха Тэннин (1108–1110)%Эпоха Тэнъэй (1" + + "110–1113)!Эпоха Эйкю (1113–1118)%Эпоха Гэнъэй (1118–1120)!Эпоха Хоан (11" + + "20–1124)%Эпоха Тэндзи (1124–1126)%Эпоха Дайдзи (1126–1131)#Эпоха Тэнсё (" + + "1131–1132)!Эпоха Тёсё (1132–1135)!Эпоха Хоэн (1135–1141)#Эпоха Эйдзи (11" + + "41–1142)#Эпоха Кодзи (1142–1144)!Эпоха Тэнё (1144–1145)!Эпоха Кюан (1145" + + "–1151)%Эпоха Нимпэй (1151–1154)#Эпоха Кюдзю (1154–1156)#Эпоха Хогэн (1" + + "156–1159)%Эпоха Хэйдзи (1159–1160)%Эпоха Эйряку (1160–1161)\x1fЭпоха Охо" + + " (1161–1163)#Эпоха Тёкан (1163–1165)#Эпоха Эйман (1165–1166)%Эпоха Нинъа" + + "н (1166–1169)\x1fЭпоха Као (1169–1171)!Эпоха Сёан (1171–1175)#Эпоха Анг" + + "эн (1175–1177)#Эпоха Дзисё (1177–1181)\x1fЭпоха Ёва (1181–1182)#Эпоха Д" + + "зюэй (1182–1184)'Эпоха Гэнрюку (1184–1185)%Эпоха Бундзи (1185–1190)#Эпо" + + "ха Кэнкю (1190–1199)#Эпоха Сёдзи (1199–1201)%Эпоха Кэннин (1201–1204)#Э" + + "поха Гэнкю (1204–1206)%Эпоха Кэнъэй (1206–1207)#Эпоха Сёгэн (1207–1211)" + + "'Эпоха Кэнряку (1211–1213)#Эпоха Кэмпо (1213–1219)!Эпоха Сёкю (1219–1222" + + ")!Эпоха Дзёо (1222–1224)%Эпоха Гэннин (1224–1225)%Эпоха Кароку (1225–122" + + "7)#Эпоха Антэй (1227–1229)#Эпоха Канки (1229–1232)#Эпоха Дзёэй (1232–123" + + "3)'Эпоха Тэмпуку (1233–1234)'Эпоха Бунряку (1234–1235)#Эпоха Катэй (1235" + + "–1238)'Эпоха Рякунин (1238–1239)!Эпоха Энъо (1239–1240)%Эпоха Ниндзи (" + + "1240–1243)%Эпоха Кангэн (1243–1247)#Эпоха Ходзи (1247–1249)#Эпоха Кэнтё " + + "(1249–1256)#Эпоха Когэн (1256–1257)!Эпоха Сёка (1257–1259)#Эпоха Сёгэн (" + + "1259–1260)#Эпоха Бунъо (1260–1261)!Эпоха Котё (1261–1264)%Эпоха Бунъэй (" + + "1264–1275)%Эпоха Кэндзи (1275–1278)!Эпоха Коан (1278–1288)\x1fЭпоха Сёо " + + "(1288–1293)#Эпоха Эйнин (1293–1299)!Эпоха Сёан (1299–1302)%Эпоха Кэнгэн " + + "(1302–1303)#Эпоха Кагэн (1303–1306)'Эпоха Токудзи (1306–1308)#Эпоха Энкэ" + + "й (1308–1311)\x1fЭпоха Отё (1311–1312)!Эпоха Сёва (1312–1317)#Эпоха Бум" + + "по (1317–1319)!Эпоха Гэно (1319–1321)#Эпоха Гэнкё (1321–1324)!Эпоха Сёт" + + "ю (1324–1326)%Эпоха Карэки (1326–1329)'Эпоха Гэнтоку (1329–1331)#Эпоха " + + "Гэнко (1331–1334)#Эпоха Кэмму (1334–1336)#Эпоха Энгэн (1336–1340)%Эпоха" + + " Кококу (1340–1346)#Эпоха Сёхэй (1346–1370)'Эпоха Кэнтоку (1370–1372)#Эп" + + "оха Бунтю (1372–1375)%Эпоха Иэндзю (1375–1379)%Эпоха Коряку (1379–1381)" + + "!Эпоха Кова (1381–1384)#Эпоха Гэнтю (1384–1392)'Эпоха Мэйтоку (1384–1387" + + ")#Эпоха Какэй (1387–1389)\x1fЭпоха Коо (1389–1390)'Эпоха Мэйтоку (1390–1" + + "394)\x1fЭпоха Оэй (1394–1428)!Эпоха Сётё (1428–1429)!Эпоха Эйкё (1429–14" + + "41)%Эпоха Какицу (1441–1444)%Эпоха Банъан (1444–1449)%Эпоха Хотоку (1449" + + "–1452)%Эпоха Кётоку (1452–1455)!Эпоха Косё (1455–1457)%Эпоха Тёроку (1" + + "457–1460)#Эпоха Кансё (1460–1466)#Эпоха Бунсё (1466–1467)!Эпоха Онин (14" + + "67–1469)%Эпоха Буммэй (1469–1487)!Эпоха Тёкё (1487–1489)%Эпоха Энтоку (1" + + "489–1492)!Эпоха Мэйо (1492–1501)#Эпоха Бунки (1501–1504)!Эпоха Эйсё (150" + + "4–1521)#Эпоха Тайэй (1521–1528)%Эпоха Кёроку (1528–1532)%Эпоха Тэммон (1" + + "532–1555)#Эпоха Кодзи (1555–1558)%Эпоха Эйроку (1558–1570)#Эпоха Гэнки (" + + "1570–1573)#Эпоха Тэнсё (1573–1592)'Эпоха Бунроку (1592–1596)#Эпоха Кэйтё" + + " (1596–1615)#Эпоха Гэнва (1615–1624)%Эпоха Канъэй (1624–1644)!Эпоха Сёхо" + + " (1644–1648)#Эпоха Кэйан (1648–1652)\x1dЭпоха Сё (1652–1655)'Эпоха Мэйря" + + "ку (1655–1658)%Эпоха Мандзи (1658–1661)%Эпоха Камбун (1661–1673)!Эпоха " + + "Эмпо (1673–1681)#Эпоха Тэнва (1681–1684)#Эпоха Дзёкё (1684–1688)'Эпоха " + + "Гэнроку (1688–1704)!Эпоха Хоэй (1704–1711)%Эпоха Сётоку (1711–1716)!Эпо" + + "ха Кёхо (1716–1736)%Эпоха Гэмбун (1736–1741)#Эпоха Кампо (1741–1744)!Эп" + + "оха Энкё (1744–1748)%Эпоха Канъэн (1748–1751)%Эпоха Хоряку (1751–1764)#" + + "Эпоха Мэйва (1764–1772)#Эпоха Анъэй (1772–1781)%Эпоха Тэммэй (1781–1789" + + ")%Эпоха Кансэй (1789–1801)!Эпоха Кёва (1801–1804)#Эпоха Бунка (1804–1818" + + ")%Эпоха Бунсэй (1818–1830)#Эпоха Тэмпо (1830–1844)!Эпоха Кока (1844–1848" + + ")!Эпоха Каэй (1848–1854)#Эпоха Ансэй (1854–1860)%Эпоха Манъэн (1860–1861" + + ")#Эпоха Бункю (1861–1864)%Эпоха Гендзи (1864–1865)!Эпоха Кейо (1865–1868" + + ")\x17Эпоха Мэйдзи\x17Эпоха Тайсьо\x0aСьова\x17Эпоха Хэйсэй" + +var bucket85 string = "" + // Size: 18668 bytes + "\x12Фарвардин\x14Ордибехешт\x0cХордад\x06Тир\x0cМордад\x10Шахривер\x08Ме" + + "хр\x08Абан\x08Азер\x06Дей\x0cБахман\x0cЭсфанд\x1aв прошлом году\x14в эт" + + "ом году\x1eв следующем году\x15через {0} год\x17через {0} года\x15через" + + " {0} лет\x15{0} год назад\x17{0} года назад\x15{0} лет назад\x12через {0" + + "} г.\x12через {0} л.\x12{0} г. назад\x12{0} л. назад\x08+{0} г.\x08+{0} " + + "л.\x08-{0} г.\x08-{0} л.\x22в прошлом квартале\x22в текущем квартале&в " + + "следующем квартале\x1dчерез {0} квартал\x1fчерез {0} квартала!через {0}" + + " кварталов\x1d{0} квартал назад\x1f{0} квартала назад!{0} кварталов наза" + + "д\x18последний кв.\x14текущий кв.\x18следующий кв.\x14через {0} кв.\x14" + + "{0} кв. назад\x0fпосл. кв.\x0dтек. кв.\x0fслед. кв.\x0a+{0} кв.\x0a-{0} " + + "кв.\x1eв прошлом месяце\x18в этом месяце\x22в следующем месяце\x19через" + + " {0} месяц\x1bчерез {0} месяца\x1dчерез {0} месяцев\x19{0} месяц назад" + + "\x1b{0} месяца назад\x1d{0} месяцев назад\x16через {0} мес.\x16{0} мес. " + + "назад\x0c+{0} мес.\x0c-{0} мес. на прошлой неделе\x1aна этой неделе$на " + + "следующей неделе\x1bчерез {0} неделю\x1bчерез {0} недели\x1bчерез {0} н" + + "едель\x1b{0} неделю назад\x1b{0} недели назад\x1b{0} недель назад\x15на" + + " неделе {0}\x16через {0} нед.\x16{0} нед. назад\x10на нед. {0}\x0c+{0} н" + + "ед.\x0c-{0} нед.\x12позавчера\x0aвчера\x0eсегодня\x0cзавтра\x16послезав" + + "тра\x17через {0} день\x15через {0} дня\x17через {0} дней\x17{0} день на" + + "зад\x15{0} дня назад\x17{0} дней назад\x05дн.\x12через {0} д.\x14через " + + "{0} дн.\x13{0}\u00a0д. назад\x14{0} дн. назад\x08+{0} д.\x08-{0} д.\x15д" + + "ень недели(в прошлое воскресенье в это воскресенье,в следующее воскресе" + + "нье%через {0} воскресенье%через {0} воскресенья%через {0} воскресений%{" + + "0} воскресенье назад%{0} воскресенья назад%{0} воскресений назад\x12в пр" + + "ош. вс.\x0fв это вс.\x12в след. вс.\x14через {0} вс.\x14{0} вс. назад" + + "\x0a+{0} вс.\x0a-{0} вс.(в прошлый понедельник\x22в этот понедельник,в с" + + "ледующий понедельник%через {0} понедельник'через {0} понедельника)через" + + " {0} понедельников%{0} понедельник назад'{0} понедельника назад){0} поне" + + "дельников назад\x12в прош. пн.\x11в этот пн.\x12в след. пн.\x14через {0" + + "} пн.\x14{0} пн. назад\x0a+{0} пн.\x0a-{0} пн. в прошлый вторник\x1aв эт" + + "от вторник$в следующий вторник\x1dчерез {0} вторник\x1fчерез {0} вторни" + + "ка!через {0} вторников\x1d{0} вторник назад\x1f{0} вторника назад!{0} в" + + "торников назад\x12в прош. вт.\x11в этот вт.\x12в след. вт.\x14через {0}" + + " вт.\x14{0} вт. назад\x0a+{0} вт.\x0a-{0} вт.\x1cв прошлую среду\x14в эт" + + "у среду в следующую среду\x19через {0} среду\x19через {0} среды\x17чере" + + "з {0} сред\x19{0} среду назад\x19{0} среды назад\x17{0} сред назад\x12в" + + " прош. ср.\x0fв эту ср.\x12в след. ср.\x14через {0} ср.\x14{0} ср. назад" + + "\x0a+{0} ср.\x0a-{0} ср. в прошлый четверг\x1aв этот четверг$в следующий" + + " четверг\x1dчерез {0} четверг\x1fчерез {0} четверга!через {0} четвергов" + + "\x1d{0} четверг назад\x1f{0} четверга назад!{0} четвергов назад\x12в про" + + "ш. чт.\x11в этот чт.\x12в след. чт.\x14через {0} чт.\x14{0} чт. назад" + + "\x0a+{0} чт.\x0a-{0} чт. в прошлую пятницу\x18в эту пятницу$в следующую " + + "пятницу\x1dчерез {0} пятницу\x1dчерез {0} пятницы\x1bчерез {0} пятниц" + + "\x1d{0} пятницу назад\x1d{0} пятницы назад\x1b{0} пятниц назад\x12в прош" + + ". пт.\x0fв эту пт.\x12в след. пт.\x14через {0} пт.\x14{0} пт. назад\x0a+" + + "{0} пт.\x0a-{0} пт. в прошлую субботу\x18в эту субботу$в следующую суббо" + + "ту\x1dчерез {0} субботу\x1dчерез {0} субботы\x1bчерез {0} суббот\x1d{0}" + + " субботу назад\x1d{0} субботы назад\x1b{0} суббот назад\x12в прош. сб." + + "\x0fв эту сб.\x12в след. сб.\x14через {0} сб.\x14{0} сб. назад\x0a+{0} с" + + "б.\x0a-{0} сб.\x14в этом часе\x15через {0} час\x17через {0} часа\x19чер" + + "ез {0} часов\x15{0} час назад\x17{0} часа назад\x19{0} часов назад\x03ч" + + ".\x13через {0}\u00a0ч.\x12через {0} ч.\x13{0}\u00a0ч. назад\x12{0} ч. на" + + "зад\x08+{0} ч.\x08-{0} ч.\x16в эту минуту\x1bчерез {0} минуту\x1bчерез " + + "{0} минуты\x19через {0} минут\x1b{0} минуту назад\x1b{0} минуты назад" + + "\x19{0} минут назад\x16через {0} мин.\x16{0} мин. назад\x0c+{0} мин.\x0c" + + "-{0} мин.\x0cсейчас\x1dчерез {0} секунду\x1dчерез {0} секунды\x1bчерез {" + + "0} секунд\x1d{0} секунду назад\x1d{0} секунды назад\x1b{0} секунд назад" + + "\x17через {0}\u00a0сек.\x16{0} сек. назад\x0c+{0} сек.\x0c-{0} сек.\x17ч" + + "асовой пояс>Всемирное координированное время5Великобритания, летнее вре" + + "мя3Ирландия, стандартное время\x13Акри время*Акри стандартное время Акр" + + "и летнее время\x14Афганистан#Центральная Африка\x1fВосточная Африка\x17" + + "Южная Африка\x1dЗападная Африка@Западная Африка, стандартное время6Запа" + + "дная Африка, летнее время\x0cАляска/Аляска, стандартное время%Аляска, л" + + "етнее время\x1aАлма-Ата время1Алма-Ата стандартное время'Алма-Ата летне" + + "е время\x10Амазонка3Амазонка, стандартное время)Амазонка, летнее время%" + + "Центральная АмерикаHЦентральная Америка, стандартное время>Центральная " + + "Америка, летнее время!Восточная АмерикаDВосточная Америка, стандартное " + + "время:Восточная Америка, летнее время Горное время (США)7Горное стандар" + + "тное время (США)-Горное летнее время (США)%Тихоокеанское время<Тихоокеа" + + "нское стандартное время2Тихоокеанское летнее время\x1eВремя по Анадырю0" + + "Анадырь стандартное время&Анадырь летнее время\x08Апиа+Апиа, стандартно" + + "е время!Апиа, летнее время\x15Актау время-Актау, стандартное время\x22А" + + "ктау летнее время\x17Актобе время.Актобе стандартное время$Актобе летне" + + "е время!Саудовская АравияDСаудовская Аравия, стандартное время:Саудовск" + + "ая Аравия, летнее время\x12Аргентина5Аргентина, стандартное время+Арген" + + "тина, летнее время#Западная АргентинаFЗападная Аргентина, стандартное в" + + "ремя<Западная Аргентина, летнее время\x0eАрмения1Армения, стандартное в" + + "ремя'Армения, летнее время%Атлантическое время<Атлантическое стандартно" + + "е время2Атлантическое летнее время)Центральная АвстралияLЦентральная Ав" + + "стралия, стандартное времяBЦентральная Австралия, летнее времяFЦентраль" + + "ная Австралия, западное время]Центральная Австралия, западное стандартн" + + "ое времяSЦентральная Австралия, западное летнее время%Восточная Австрал" + + "ияHВосточная Австралия, стандартное время>Восточная Австралия, летнее в" + + "ремя#Западная АвстралияFЗападная Австралия, стандартное время<Западная " + + "Австралия, летнее время\x16Азербайджан9Азербайджан, стандартное время/А" + + "зербайджан, летнее время\x18Азорские о-ва;Азорские о-ва, стандартное вр" + + "емя1Азорские о-ва, летнее время\x12Бангладеш5Бангладеш, стандартное вре" + + "мя+Бангладеш, летнее время\x0aБутан\x0eБоливия\x10Бразилия3Бразилия, ст" + + "андартное время)Бразилия, летнее время!Бруней-Даруссалам\x13Кабо-Верде6" + + "Кабо-Верде, стандартное время,Кабо-Верде, летнее время\x0aКейси\x0eЧамо" + + "рро\x0aЧатем-Чатем, стандартное время#Чатем, летнее время\x08Чили+Чили," + + " стандартное время!Чили, летнее время\x0aКитай-Китай, стандартное время#" + + "Китай, летнее время\x12Чойбалсан5Чойбалсан, стандартное время+Чойбалсан" + + ", летнее время\x18о-в Рождества\x1aКокосовые о-ва\x10Колумбия3Колумбия, " + + "стандартное время)Колумбия, летнее время\x17Острова Кука:Острова Кука, " + + "стандартное время8Острова Кука, полулетнее время\x08Куба+Куба, стандарт" + + "ное время!Куба, летнее время\x0cДейвис\x1cДюмон-д’Юрвиль\x1dВосточный Т" + + "имор\x10О-в Пасхи3О-в Пасхи, стандартное время)О-в Пасхи, летнее время" + + "\x0eЭквадор#Центральная ЕвропаFЦентральная Европа, стандартное время<Цен" + + "тральная Европа, летнее время\x1fВосточная ЕвропаBВосточная Европа, ста" + + "ндартное время8Восточная Европа, летнее время\x19Минское время\x1dЗапад" + + "ная Европа@Западная Европа, стандартное время6Западная Европа, летнее в" + + "ремя Фолклендские о-ваCФолклендские о-ва, стандартное время9Фолклендски" + + "е о-ва, летнее время\x0aФиджи-Фиджи, стандартное время#Фиджи, летнее вр" + + "емя#Французская ГвианаVФранцузские Южные и Антарктические территории" + + "\x22Галапагосские о-ва\x0cГамбье\x0cГрузия/Грузия, стандартное время%Гру" + + "зия, летнее время\x18о-ва Гилберта/Среднее время по Гринвичу'Восточная " + + "ГренландияHВосточная Гренландия, стандарное время@Восточная Гренландия," + + " летнее время%Западная ГренландияHЗападная Гренландия, стандартное время" + + ">Западная Гренландия, летнее время\x08Гуам\x1fПерсидский залив\x0cГайана" + + ".Гавайско-алеутское времяEГавайско-алеутское стандартное время;Гавайско-" + + "алеутское летнее время\x0eГонконг1Гонконг, стандартное время'Гонконг, л" + + "етнее время\x08Ховд+Ховд, стандартное время!Ховд, летнее время\x0aИндия" + + "\x1dИндийский океан\x12Индокитай)Центральная Индонезия%Восточная Индонез" + + "ия#Западная Индонезия\x08Иран+Иран, стандартное время!Иран, летнее врем" + + "я\x0eИркутск1Иркутск, стандартное время'Иркутск, летнее время\x0eИзраил" + + "ь1Израиль, стандартное время'Израиль, летнее время\x0cЯпония/Япония, ст" + + "андартное время%Япония, летнее время/Петропавловск-КамчатскийRПетропавл" + + "овск-Камчатский, стандартное времяHПетропавловск-Камчатский, летнее вре" + + "мя%Восточный Казахстан#Западный Казахстан\x0aКорея-Корея, стандартное в" + + "ремя#Корея, летнее время\x0cКосрае\x14Красноярск7Красноярск, стандартно" + + "е время-Красноярск, летнее время\x10Киргизия\x11Шри-Ланка\x10о-ва Лайн" + + "\x0fЛорд-Хау2Лорд-Хау, стандартное время(Лорд-Хау, летнее время\x0aМакао" + + "-Макао, стандартное время#Макао, летнее время\x10Маккуори\x0eМагадан1Маг" + + "адан, стандартное время'Магадан, летнее время\x10Малайзия\x10Мальдивы" + + "\x1cМаркизские о-ва#Маршалловы Острова\x10Маврикий3Маврикий, стандартное" + + " время)Маврикий, летнее время\x0cМоусонAСеверо-западное мексиканское вре" + + "мяXСеверо-западное мексиканское стандартное времяNСеверо-западное мекси" + + "канское летнее время>Тихоокеанское мексиканское времяUТихоокеанское мек" + + "сиканское стандартное времяKТихоокеанское мексиканское летнее время\x13" + + "Улан-Батор6Улан-Батор, стандартное время,Улан-Батор, летнее время\x0cМо" + + "сква/Москва, стандартное время%Москва, летнее время\x0cМьянма\x0aНауру" + + "\x0aНепал\x1dНовая Каледония@Новая Каледония, стандартное время6Новая Ка" + + "ледония, летнее время\x1bНовая Зеландия>Новая Зеландия, стандартное вре" + + "мя4Новая Зеландия, летнее время\x18Ньюфаундленд;Ньюфаундленд, стандартн" + + "ое время1Ньюфаундленд, летнее время\x08Ниуэ\x0eНорфолк$Фернанду-ди-Норо" + + "ньяGФернанду-ди-Норонья, стандартное время=Фернанду-ди-Норонья, летнее " + + "время-Северные Марианские о-ва\x16Новосибирск9Новосибирск, стандартное " + + "время/Новосибирск, летнее время\x08Омск+Омск, стандартное время!Омск, л" + + "етнее время\x10Пакистан3Пакистан, стандартное время)Пакистан, летнее вр" + + "емя\x0aПалау&Папуа – Новая Гвинея\x10Парагвай3Парагвай, стандартное вре" + + "мя)Парагвай, летнее время\x08Перу+Перу, стандартное время!Перу, летнее " + + "время\x12Филиппины5Филиппины, стандартное время+Филиппины, летнее время" + + "\x14о-ва Феникс!Сен-Пьер и МикелонDСен-Пьер и Микелон, стандартное время" + + ":Сен-Пьер и Микелон, летнее время\x0eПиткэрн\x0cПонпеи\x0eПхеньян\x13Кыз" + + "ылорда*6Кызылорда, стандартное время*,Кызылорда, летнее время*\x0eРеюнь" + + "он\x0cРотера\x0eСахалин1Сахалин, стандартное время'Сахалин, летнее врем" + + "я\x1aВремя в Самаре4Самарское стандартное время*Самарское летнее время" + + "\x0aСамоа-Самоа, стандартное время#Самоа, летнее время%Сейшельские Остро" + + "ва\x10Сингапур#Соломоновы Острова\x19Южная Георгия\x0eСуринам\x08Сёва" + + "\x0aТаити\x0eТайвань1Тайвань, стандартное время'Тайвань, летнее время" + + "\x16Таджикистан\x0eТокелау\x0aТонга-Тонга, стандартное время#Тонга, летн" + + "ее время\x08Трук\x12Туркмения5Туркмения, стандартное время+Туркмения, л" + + "етнее время\x0cТувалу\x0eУругвай1Уругвай, стандартное время'Уругвай, ле" + + "тнее время\x14Узбекистан7Узбекистан, стандартное время-Узбекистан, летн" + + "ее время\x0eВануату1Вануату, стандартное время'Вануату, летнее время" + + "\x12Венесуэла\x16Владивосток9Владивосток, стандартное время/Владивосток," + + " летнее время\x12Волгоград5Волгоград, стандартное время+Волгоград, летне" + + "е время\x0cВосток\x08Уэйк\x1cУоллис и Футуна\x0cЯкутск/Якутск, стандарт" + + "ное время%Якутск, летнее время\x18Екатеринбург;Екатеринбург, стандартно" + + "е время1Екатеринбург, летнее время\x1fчерез {0} квартали!через {0} квар" + + "талів\x1fчерез {0} кварталу\x15через {0} дні\x17через {0} днів\x1dчерез" + + " {0} секунди" + +var bucket86 string = "" + // Size: 8275 bytes + "\x04mut.\x04gas.\x04wer.\x04mat.\x04gic.\x04kam.\x04nya.\x04kan.\x04nze." + + "\x04ukw.\x04ugu.\x04uku.\x08Mutarama\x0bGashyantare\x07Werurwe\x04Mata" + + "\x09Gicuransi\x06Kamena\x08Nyakanga\x06Kanama\x05Nzeli\x08Ukwakira\x0aUg" + + "ushyingo\x07Ukuboza\x04cyu.\x04mbe.\x04kab.\x04gtu.\x04gnu.\x04gnd.\x0bK" + + "u cyumweru\x0aKuwa mbere\x0bKuwa kabiri\x0bKuwa gatatu\x09Kuwa kane\x0bK" + + "uwa gatanu\x0eKuwa gatandatu\x13igihembwe cya mbere\x14igihembwe cya kab" + + "iri\x14igihembwe cya gatatu\x12igihembwe cya kane$G y 'сыл' MMMM d 'күнэ" + + "', EEEE\x0cGGGGG yy/M/d\x08Тохс\x08Олун\x06Клн\x06Мсу\x06Ыам\x06Бэс\x06О" + + "тй\x06Атр\x06Блҕ\x06Алт\x06Сэт\x06Ахс\x12Тохсунньу\x0eОлунньу\x15Кулун " + + "тутар\x13Муус устар\x0fЫам ыйын\x0fБэс ыйын\x0dОт ыйын\x19Атырдьых ыйын" + + "\x17Балаҕан ыйын\x10Алтынньы\x10Сэтинньи\x10ахсынньы\x12тохсунньу\x0eолу" + + "нньу\x15кулун тутар\x13муус устар\x0dыам ыйа\x0dбэс ыйа\x0bот ыйа\x17ат" + + "ырдьых ыйа\x15балаҕан ыйа\x10алтынньы\x10сэтинньи\x04бс\x04бн\x04оп\x04" + + "сэ\x04чп\x04бэ\x04сб\x18баскыһыанньа\x18бэнидиэнньик\x18оптуорунньук" + + "\x0cсэрэдэ\x0eчэппиэр\x10Бээтиҥсэ\x0eсубуота\x0b1-кы кб\x092-с кб\x093-с" + + " кб\x094-с кб\x191-кы кыбаартал\x172-с кыбаартал\x173-с кыбаартал\x174-с" + + " кыбаартал\x04ЭИ\x04ЭК\x0bб. э. и.(биһиги ээрэбит иннинэ\x06б. э\x1bбиһи" + + "ги ээрэбит\x22y 'сыл' MMMM d 'күнэ', EEEE\x08Ээрэ\x06Сыл\x10Былырыын" + + "\x0aбыйыл\x0aэһиил\x12{0} сылынан&{0} сыл ынараа өттүгэр\x0eЧиэппэр\x1fа" + + "аспыт кыбаартал\x17бу кыбаартал\x1dкэлэр кыбаартал\x1e{0} кыбаарталынан" + + "2{0} кыбаартал анараа өттүгэр\x07чпр.'{0} кыб. анараа өттүгэр\x04Ый\x11а" + + "аспыт ый\x09бу ый\x15аныгыскы ый\x10{0} ыйынан${0} ый ынараа өттүгэр" + + "\x0eНэдиэлэ\x1bааспыт нэдиэлэ\x13бу нэдиэлэ\x19кэлэр нэдиэлэ\x1a{0} нэди" + + "элэннэн.{0} нэдиэлэ анараа өттүгэр\x16{0} нэдиэлэтэ\x06Күн\x15Иллэрээ к" + + "үн\x0eБэҕэһээ\x0aБүгүн\x0cСарсын\x0aӨйүүн\x12{0} күнүнэн&{0} күн ынараа" + + " өттүгэр\x17Нэдиэлэ күнэ%ааспыт баскыһыанньа\x1dбу баскыһыанньа#кэлэр ба" + + "скыһыанньа\x22{0} баскыһыанньанан8{0} баскыһыанньа анараа өттүгэр\x12аа" + + "спыт бс.\x0aбу бс.\x10кэлэр бс.%{0} бс. анараа өттүгэр%ааспыт бэнидиэнн" + + "ьик\x1dбу бэнидиэнньик#кэлэр бэнидиэнньик${0} бэнидиэнньигинэн8{0} бэни" + + "диэнньик анараа өттүгэр\x12ааспыт бн.\x0aбу бн.\x10кэлэр бн.%{0} бн. ан" + + "араа өттүгэр%ааспыт оптуорунньук\x1dбу оптуорунньук#кэлэр оптуорунньук$" + + "{0} оптуорунньугунан8{0} оптуорунньук анараа өттүгэр\x12ааспыт оп.\x0aбу" + + " оп.\x10кэлэр оп.%{0} оп. анараа өттүгэр\x19ааспыт сэрэдэ\x11бу сэрэдэ" + + "\x17кэлэр сэрэдэ\x16{0} сэрэдэнэн,{0} сэрэдэ анараа өттүгэр\x12ааспыт сэ" + + ".\x0aбу сэ.\x10кэлэр сэ.%{0} сэ. анараа өттүгэр\x1bааспыт чэппиэр\x13бу " + + "чэппиэр\x19кэлэр чэппиэр\x1a{0} чэппиэринэн.{0} чэппиэр анараа өттүгэр" + + "\x12ааспыт чп.\x0aбу чп.\x10кэлэр чп.%{0} чп. анараа өттүгэр\x1dааспыт б" + + "ээтиҥсэ\x15бу бээтиҥсэ\x1bкэлэр бээтиҥсэ\x1a{0} бээтиҥсэнэн0{0} бээтиҥс" + + "э анараа өттүгэр\x12ааспыт бэ.\x0aбу бэ.\x10кэлэр бэ.%{0} бэ. анараа өт" + + "түгэр\x1bааспыт субуота\x13бу субуота\x19кэлэр субуота\x18{0} субуотана" + + "н.{0} субуота анараа өттүгэр\x12ааспыт сб.\x0aбу сб.\x10кэлэр сб.%{0} с" + + "б. анараа өттүгэр\x09ЭИ/ЭК\x08Чаас\x11бу чааска\x14{0} чааһынан({0} чаа" + + "с ынараа өттүгэр\x0eМүнүүтэ\x17бу мүнүүтэҕэ\x1a{0} мүнүүтэннэн.{0} мүнү" + + "үтэ ынараа өттүгэр\x10Сөкүүндэ\x0eбилигин\x1c{0} сөкүүндэннэн0{0} сөкүү" + + "ндэ ынараа өттүгэр'{0} сөк. анараа өттүгэр\x17Кэм балаһата\x13Арааб кэм" + + "э\x1eАрааб сүрүн кэмэ\x22Арааб сайыҥҥы кэмэ\x15Эрмээн кэмэ Эрмээн сүрүн" + + " кэмэ$Эрмээн сайыҥҥы кэмэ$Киин Австралия кэмэ/Киин Австралия сүрүн кэмэ3" + + "Киин Австралия сайыҥҥы кэмэ$Илин Австралия кэмэ/Илин Австралия сүрүн кэ" + + "мэ3Илин Австралия сайыҥҥы кэмэ&Арҕаа Австралия кэмэ1Арҕаа Австралия сүр" + + "үн кэмэ5Арҕаа Австралия сайыҥҥы кэмэ\x13Кытай кэмэ\x1eКытай сүрүн кэмэ" + + "\x22Кытай сайыҥҥы кэмэ\x1bЧойбалсан кэмэ&Чойбалсан сүрүн кэмэ*Чойбалсан " + + "сайыҥҥы кэмэ\x19Курусуун кэмэ$Курусуун сүрүн кэмэ(Курусуун сайыҥҥы кэмэ" + + "\x22Ииндийэ сүрүн кэмэ\x13Ираан кэмэ\x1eИраан сүрүн кэмэ\x22Ыраан сайыҥҥ" + + "ы кэмэ\x19Дьоппуон кэмэ$Дьоппуон сүрүн кэмэ(Дьоппуон сайыҥҥы кэмэ&Илин " + + "Казахстаан кэмэ(Арҕаа Казахстаан кэмэ\x15Кэриэй кэмэ Кэриэй сүрүн кэмэ$" + + "Кэриэй сайыҥҥы кэмэ!Красноярскай кэмэ,Красноярскай сүрүн кэмэ0Красноярс" + + "кай сайыҥҥы кэмэ\x1dКыргыстаан кэмэ\x19Магадаан кэмэ$Магадаан сүрүн кэм" + + "э(Магадаан сайыҥҥы кэмэ\x1eУлан Баатар кэмэ)Улан Баатар сүрүн кэмэ-Улан" + + " Баатар сайыҥҥы кэмэ\x17Москуба кэмэ\x22Москуба сүрүн кэмэ&Москуба сайыҥ" + + "ҥы кэмэ\x22Саҥа Зеландия кэмэ+Саҥа Сэйлэнд сүрүн кэмэ/Саҥа Сэйлэнд сайы" + + "ҥҥы кэмэ#Новосибирскай кэмэ.Новосибирскай сүрүн кэмэ2Новосибирскай сайы" + + "ҥҥы кэмэ\x15Омскай кэмэ Омскай сүрүн кэмэ$Омскай сайыҥҥы кэмэ\x1bПакист" + + "аан кэмэ&Пакистаан сүрүн кэмэ*Пакистаан сайыҥҥы кэмэ\x19Сахалиин кэмэ$С" + + "ахалыын сүрүн кэмэ(Сахалыын сайыҥҥы кэмэ\x1fВладивосток кэмэ0Быладьыбас" + + "тыак сүрүн кэмэ4Быладьыбастыак сайыҥҥы кэмэ\x1bВолгоград кэмэ&Волгоград" + + " сүрүн кэмэ*Волгоград сайыҥҥы кэмэ\x1dДьокуускай кэмэ(Дьокуускай сүрүн к" + + "эмэ,Дьокуускай сайыҥҥы кэмэ!Екатеринбург кэмэ,Екатеринбуур сүрүн кэмэ0Е" + + "катеринбуур сайыҥҥы кэмэ\x03Obo\x03Waa\x03Oku\x03Ong\x03Ime\x03Ile\x03S" + + "ap\x03Isi\x03Saa\x03Tom\x03Tob\x03Tow\x0bLapa le obo\x0dLapa le waare" + + "\x0dLapa le okuni\x11Lapa le ong’wan\x0cLapa le imet\x0bLapa le ile\x0cL" + + "apa le sapa\x0dLapa le isiet\x0cLapa le saal\x0dLapa le tomon\x11Lapa le" + + " tomon obo\x13Lapa le tomon waare\x03Are\x03Kun\x03Ine\x03Kwe\x0dMderot " + + "ee are\x0eMderot ee kuni\x13Mderot ee ong’wan\x0eMderot ee inet\x0dMdero" + + "t ee ile\x0eMderot ee sapa\x0dMderot ee kwe\x07Tesiran\x05Teipa\x10Kabla" + + " ya Christo\x10Baada ya Christo\x07Nyamata\x04Lari\x04Lapa\x0aSaipa napo" + + "\x05Mpari\x08Ng’ole\x03Duo\x07Taisere\x05TS/TP\x04Saai\x07Idakika\x08Ise" + + "kondi\x03Mup\x03Mwi\x03Msh\x03Mun\x03Mag\x03Muj\x03Msp\x03Mpg\x03Mye\x03" + + "Mok\x03Mus\x03Muh\x0cMupalangulwa\x07Mwitope\x08Mushende\x05Munyi\x0fMus" + + "hende Magali\x07Mujimbi\x09Mushipepo\x08Mupuguto\x08Munyense\x05Mokhu" + + "\x0eMusongandembwe\x07Muhaano\x07Mulungu\x08Jumatatu\x07Jumanne\x08Jumat" + + "ano\x09Alahamisi\x06Ijumaa\x08Jumamosi\x09Lwamilawu\x09Pashamihe\x12Asha" + + "nali uKilisito\x13Pamwandi ya Kilisto\x0cUluhaavi lwa\x06Mwakha\x05Mwesi" + + "\x07Ilijuma\x06Lusiku\x05Imehe\x0bIneng’uni\x09Pamulaawu\x12Ulusiku lwa " + + "Lijuma\x13Uluhaavi lwa lusiku\x07Ilisala\x08Isekunde\x12Uluhaavi lwa lis" + + "aa\x06ođđj\x04guov\x04njuk\x03cuo\x04mies\x04geas\x04suoi\x04borg\x06čak" + + "č\x04golg\x05skáb\x04juov\x10ođđajagemánnu\x0cguovvamánnu\x0dnjukčamánn" + + "u\x0ccuoŋománnu\x0cmiessemánnu\x0cgeassemánnu\x0dsuoidnemánnu\x0bborgemá" + + "nnu\x0dčakčamánnu\x0dgolggotmánnu\x0dskábmamánnu\x0cjuovlamánnu" + +var bucket87 string = "" + // Size: 8265 bytes + "\x04sotn\x04vuos\x04maŋ\x04gask\x04duor\x04bear\x04láv\x0bsotnabeaivi" + + "\x0avuossárga\x0dmaŋŋebárga\x0bgaskavahkku\x09duorasdat\x09bearjadat\x0a" + + "lávvardat\x04i.b.\x0ciđitbeaivet\x0deahketbeaivet\x0biđitbeaivi\x0ceahke" + + "tbeaivi\x0fovdal Kristtusa\x12maŋŋel Kristtusa\x05o.Kr.\x05m.Kr.\x04ooá" + + "\x03oá\x06jáhki\x14{0} jahki maŋŋilit\x15{0} jahkki maŋŋilit\x0f{0} jahk" + + "i árat\x10{0} jahkki árat\x06mánnu\x1a{0} mánotbadji maŋŋilit\x15{0} mán" + + "otbadji árat\x07váhkku\x14{0} vahku maŋŋilit\x15{0} vahkku maŋŋilit\x0f{" + + "0} vahku árat\x10{0} vahkku árat\x06beaivi\x0coovdebpeivvi\x04ikte\x04od" + + "ne\x06ihttin\x0epaijeelittáá\x16{0} jándor maŋŋilit\x17{0} jándor amaŋŋi" + + "lit\x17{0} jándora maŋŋilit\x11{0} jándor árat\x12{0} jándora árat\x0dvá" + + "hkkubeaivi\x13beaivi ráidodássi\x06diibmu\x15{0} diibmu maŋŋilit\x16{0} " + + "diibmur maŋŋilit\x10{0} diibmu árat\x11{0} diibmur árat\x08minuhtta\x16{" + + "0} minuhta maŋŋilit\x17{0} minuhtta maŋŋilit\x11{0} minuhta árat\x12{0} " + + "minuhtta árat\x02na\x16{0} sekunda maŋŋilit\x17{0} sekundda maŋŋilit\x11" + + "{0} sekunda árat\x12{0} sekundda árat\x0cáigeavádat\x09{0} áigi\x0f{0} g" + + "eassiáigi\x13{0} dábálašáigi\x14gaska-Eurohpá áigi\x1egaska-Eurohpá dábá" + + "lašáigi\x1agaska-Eurohpá geassiáigi\x15nuorti-Eurohpá áigi\x1fnuorti-Eur" + + "ohpá dábálašáigi\x1bnuorti-Eurohpá geassiáigi\x14oarje-Eurohpá áigi\x1eo" + + "arje-Eurohpá dábálašáigi\x1aoarje-Eurohpá geassiáigi\x16Greenwich gaskka" + + " áigi\x0cMoskva-áigi\x16Moskva-dábálašáigi\x12Moskva-geassiáigi\x0bvuoss" + + "árgga\x0emaŋŋebárgga\x0agaskavahku\x0aduorastaga\x0abearjadaga\x0blávva" + + "rdaga\x08áigodat\x05jahki\x0bmannan jagi\x09dán jagi\x0cboahtte jagi\x0e" + + "{0} jagi siste\x0e{0} jagi árat\x10jahkenjealjádas\x06vahkku\x0cvahkkobe" + + "aivi\x07Janeiro\x08Fevreiro\x05Marco\x05Abril\x04Maio\x05Junho\x05Julho" + + "\x07Augusto\x08Setembro\x06Otubro\x08Novembro\x08Decembro\x07Dimingu\x07" + + "Chiposi\x07Chipiri\x07Chitatu\x06Chinai\x08Chishanu\x06Sabudu\x0fAntes d" + + "e Cristo\x0bAnno Domini\x02AC\x02AD\x05Chaka\x06Ntsiku\x04Zuro\x04Lero" + + "\x08Manguana\x04Hora\x03Nye\x03Ful\x04Mbä\x03Ngu\x04Bêl\x04Fön\x03Len" + + "\x04Kük\x03Mvu\x03Ngb\x03Nab\x03Kak\x06Nyenye\x0aFulundïgi\x08Mbängü\x07" + + "Ngubùe\x09Bêläwü\x06Föndo\x06Lengua\x09Kükürü\x05Mvuka\x08Ngberere\x0bNa" + + "bändüru\x07Kakauka\x03Bk1\x03Bk2\x03Bk3\x03Bk4\x03Bk5\x04Lâp\x04Lây\x0aB" + + "ikua-ôko\x0bBïkua-ûse\x0bBïkua-ptâ\x0dBïkua-usïö\x0bBïkua-okü\x09Lâpôsö" + + "\x08Lâyenga\x06F4–1\x06F4–2\x06F4–3\x06F4–4\x11Fângbisïö ôko\x11Fângbisï" + + "ö ûse\x11Fângbisïö otâ\x13Fângbisïö usïö\x02ND\x02LK\x10Kôzo na Krîstu" + + "\x14Na pekô tî Krîstu\x03KnK\x03NpK\x0aKùotângo\x04Ngû\x03Nze\x07Dimâsi" + + "\x03Lâ\x06Bîrï\x06Lâsô\x0aKêkerêke\x06Bïkua\x06Na lâ\x07Ngbonga\x0eNdurü" + + " ngbonga\x0eNzîna ngbonga\x0bZukangbonga\x09ⵉⵏⵏ\x09ⴱⵕⴰ\x09ⵎⴰⵕ\x09ⵉⴱⵔ\x09" + + "ⵎⴰⵢ\x09ⵢⵓⵏ\x09ⵢⵓⵍ\x09ⵖⵓⵛ\x09ⵛⵓⵜ\x09ⴽⵜⵓ\x09ⵏⵓⵡ\x09ⴷⵓⵊ\x12ⵉⵏⵏⴰⵢⵔ\x0fⴱⵕⴰⵢ" + + "ⵕ\x0cⵎⴰⵕⵚ\x0fⵉⴱⵔⵉⵔ\x0fⵎⴰⵢⵢⵓ\x0fⵢⵓⵏⵢⵓ\x12ⵢⵓⵍⵢⵓⵣ\x0cⵖⵓⵛⵜ\x18ⵛⵓⵜⴰⵏⴱⵉⵔ\x0f" + + "ⴽⵜⵓⴱⵔ\x18ⵏⵓⵡⴰⵏⴱⵉⵔ\x18ⴷⵓⵊⴰⵏⴱⵉⵔ\x03ⵉ\x03ⴱ\x03ⵎ\x03ⵢ\x03ⵖ\x03ⵛ\x03ⴽ\x03ⵏ" + + "\x03ⴷ\x09ⴰⵙⴰ\x09ⴰⵢⵏ\x09ⴰⵙⵉ\x09ⴰⴽⵕ\x09ⴰⴽⵡ\x0cⴰⵙⵉⵎ\x0cⴰⵙⵉⴹ\x12ⴰⵙⴰⵎⴰⵙ\x0fⴰⵢ" + + "ⵏⴰⵙ\x12ⴰⵙⵉⵏⴰⵙ\x0fⴰⴽⵕⴰⵙ\x0fⴰⴽⵡⴰⵙ\x12ⵙⵉⵎⵡⴰⵙ\x15ⴰⵙⵉⴹⵢⴰⵙ\x08ⴰⴽ 1\x08ⴰⴽ 2" + + "\x08ⴰⴽ 3\x08ⴰⴽ 4\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 1\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 2\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 3\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 4" + + "\x12ⵜⵉⴼⴰⵡⵜ\x18ⵜⴰⴷⴳⴳⵯⴰⵜ\x1aⴷⴰⵜ ⵏ ⵄⵉⵙⴰ ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ\x09ⴷⴰⵄ\x09ⴷⴼⵄ\x0fⵜⴰⵙⵓⵜ" + + "\x15ⴰⵙⴳⴳⵯⴰⵙ\x0fⴰⵢⵢⵓⵔ\x15ⵉⵎⴰⵍⴰⵙⵙ\x09ⴰⵙⵙ\x0fⵉⴹⵍⵍⵉ\x0cⴰⵙⵙⴰ\x0fⴰⵙⴽⴽⴰ#ⴰⵙⵙ ⴳ ⵉ" + + "ⵎⴰⵍⴰⵙⵙJⵜⵉⵣⵉ ⴳ ⵡⴰⵙⵙ: ⵜⵉⴼⴰⵡⵜ/ⵜⴰⴷⴳⴳⵯⴰⵜ\x15ⵜⴰⵙⵔⴰⴳⵜ\x15ⵜⵓⵙⴷⵉⴷⵜ\x12ⵜⴰⵙⵉⵏⵜ#ⴰⴽ" + + "ⵓⴷ ⵏ ⵓⴳⵎⵎⴰⴹ\x03inn\x05bṛa\x05maṛ\x03ibr\x03may\x03yun\x03yul\x04ɣuc" + + "\x03cut\x03ktu\x03nuw\x03duj\x06innayr\x09bṛayṛ\x08maṛṣ\x05ibrir\x05mayy" + + "u\x05yunyu\x06yulyuz\x05ɣuct\x08cutanbir\x05ktubr\x08nuwanbir\x08dujanbi" + + "r\x01i\x01b\x01m\x01y\x02ɣ\x01c\x01k\x01n\x01d\x03asa\x03ayn\x03asi\x05a" + + "kṛ\x03akw\x04asim\x06asiḍ\x06asamas\x05aynas\x06asinas\x07akṛas\x05akwas" + + "\x07asimwas\x09asiḍyas\x04ak 1\x04ak 2\x04ak 3\x04ak 4\x0eakṛaḍyur 1\x0e" + + "akṛaḍyur 2\x0eakṛaḍyur 3\x0eakṛaḍyur 4\x06tifawt\x09tadggʷat\x0bdat n ɛi" + + "sa\x0ddffir n ɛisa\x04daɛ\x04dfɛ\x05tasut\x08asggʷas\x05ayyur\x07imalass" + + "\x03ass\x07iḍlli\x04assa\x05askka\x0dass g imalass\x1ftizi g wass: tifaw" + + "t / tadggʷat\x07tasragt\x07tusdidt\x06tasint\x0fakud n ugmmaḍ\x06ජන\x09ප" + + "ෙබ\x12මාර්තු\x18අප්\u200dරේල්\x0cමැයි\x0cජූනි\x0cජූලි\x09අගෝ\x0cසැප්" + + "\x09ඔක්\x0cනොවැ\x0cදෙසැ\x03ජ\x06පෙ\x06මා\x03අ\x06මැ\x06ජූ\x06සැ\x03ඔ\x06" + + "නෙ\x06දෙ\x12ජනවාරි\x18පෙබරවාරි\x15අගෝස්තු!සැප්තැම්බර්\x18ඔක්තෝබර්\x1bන" + + "ොවැම්බර්\x1bදෙසැම්බර්\x0cමාර්\x0fඉරිදා\x0fසඳුදා\x09අඟහ\x0fබදාදා\x15බ්" + + "\u200dරහස්\x0cසිකු\x09සෙන\x03ඉ\x03ස\x03බ\x0cබ්\u200dර\x06සි\x06සෙ\x09ඉරි" + + "\x09සඳු\x06අඟ\x09බදා\x0fබ්\u200dරහ\x1bඅඟහරුවාදා*බ්\u200dරහස්පතින්දා\x18ස" + + "ිකුරාදා\x1bසෙනසුරාදා\x0eකාර්:1\x0eකාර්:2\x0eකාර්:3\x0eකාර්:4\x1e1 වන ක" + + "ාර්තුව\x1e2 වන කාර්තුව\x1e3 වන කාර්තුව\x1e4 වන කාර්තුව\x12මැදියම\x0bපෙ" + + ".ව.\x1eමධ්\u200dයාහ්නය\x08ප.ව.\x12පාන්දර\x09උදේ\x0cදවල්\x09හවස\x06රෑ\x1f" + + "මැදියමට පසු\x03ම\x03ප\x06පා\x03උ\x03ද\x03හ+ක්\u200dරිස්තු පූර්ව&පොදු ය" + + "ුගයට පෙර(ක්\u200dරිස්තු වර්ෂ\x19පොදු යුගය\x17ක්\u200dරි.පූ.\x0cපොපෙ" + + "\x14ක්\u200dරි.ව.\x0dපො.යු\x0cයුගය\x0fවර්ෂය\x1cපසුගිය වසර\x13මෙම වසර\x13" + + "ඊළඟ වසර\x19වසර {0}කින්\x1dවසර {0}කට පෙර\x0aවර්.\x15කාර්තුව(පසුගිය කාර්" + + "තුව\x1fමෙම කාර්තුව\x1fඊළඟ කාර්තුව\x22කාර්තු {0}කින්&කාර්තු {0}කට පෙර" + + "\x0dකාර්. පසුගිය කාර්.\x17මෙම කාර්.\x17ඊළඟ කාර්.\x1dකාර්. {0}කින්!කාර්. " + + "{0}කට පෙර\x0cමාසය\x1fපසුගිය මාසය\x16මෙම මාසය\x16ඊළඟ මාසය\x19මාස {0}කින්" + + "\x1dමාස {0}කට පෙර\x0aමාස.\x1dපසුගිය මාස.\x14මෙම මාස.\x14ඊළඟ මාස.\x0cසතිය" + + "\x1fපසුගිය සතිය\x16මෙම සතිය\x16ඊළඟ සතිය\x19සති {0}කින්\x1dසති {0}කට පෙර" + + "\x1d{0} වෙනි සතිය\x0aසති.\x1dපසුගිය සති.\x14මෙම සති.\x14ඊළඟ සති.\x0cදිනය" + + "\x12පෙරේදා\x09ඊයේ\x06අද\x09හෙට\x15අනිද්දා\x13දින {0}න්\x1dදින {0}කට පෙර" + + "\x1cසතියේ දිනය\x22පසුගිය ඉරිදා\x16මේ ඉරිදා\x19ඊළඟ ඉරිදා\x22{0} ඉරිදාවකින" + + "්)ඉරිදාවන් {0} කින්&{0} ඉරිදාවකට පෙර-ඉරිදාවන් {0} කට පෙර\x22පසුගිය සඳු" + + "දා\x16මේ සඳුදා\x19ඊළඟ සඳුදා\x22{0} සඳුදාවකින්)සඳුදාවන් {0} කින්&{0} සඳ" + + "ුදාවකට පෙර-සඳුදාවන් {0} කට පෙර.පසුගිය අඟහරුවාදා\x22මේ අඟහරුවාදා%ඊළඟ අඟ" + + "හරුවාදා.{0} අඟහරුවාදාවකින්5අඟහරුවාදාවන් {0} කින්2{0} අඟහරුවාදාවකට පෙර9" + + "අඟහරුවාදාවන් {0} කට පෙර\x22පසුගිය බදාදා\x16මේ බදාදා\x19ඊළඟ බදාදා\x22{0" + + "} බදාදාවකින්)බදාදාවන් {0} කින්&{0} බදාදාවකට පෙර-බදාදාවන් {0} කට පෙර=පසුග" + + "ිය බ්\u200dරහස්පතින්දා1මේ බ්\u200dරහස්පතින්දා4ඊළඟ බ්\u200dරහස්පතින්දා=" + + "{0} බ්\u200dරහස්පතින්දාවකින්Dබ්\u200dරහස්පතින්දාවන් {0} කින්A{0} බ්" + + "\u200dරහස්පතින්දාවකට පෙරHබ්\u200dරහස්පතින්දාවන් {0} කට පෙර+පසුගිය සිකුරා" + + "දා\x1fමේ සිකුරාදා\x22ඊළඟ සිකුරාදා)+{0} සිකුරදාවකින්0සිකුරදාවන් +{0} කි" + + "න්,{0} සිකුරදාවකට පෙර3සිකුරදාවන් {0} කට පෙර\x15ⴰⵙⵉⵎⵡⴰⵙ" + +var bucket88 string = "" + // Size: 18811 bytes + ".පසුගිය සෙනසුරාදා\x22මේ සෙනසුරාදා%ඊළඟ සෙනසුරාදා-සෙනසුරාදා +{0} කින්6සෙනස" + + "ුරාදාවන් +{0} කින්0සෙනසුරාදා {0} කට පෙර9සෙනසුරාදාවන් {0} කට පෙර\x12පෙ." + + "ව/ප.ව\x09පැය\x13මෙම පැය\x19පැය {0}කින්\x1dපැය {0}කට පෙර\x06පැ\x1bමිනිත" + + "්තුව%මෙම මිනිත්තුව(මිනිත්තු {0}කින්,මිනිත්තු {0}කට පෙර\x0dමිනි.\x06මි" + + "\x12තත්පරය\x0cදැන්\x1fතත්පර {0}කින්#තත්පර {0}කට පෙර\x0aතත්.\x03ත\x19කාල " + + "කලාපය\x13{0} වේලාව,{0} දිවාආලෝක වේලාව#{0} සම්මත වේලාවDබ්\u200dරිතාන්" + + "\u200dය ගිම්හාන කාලය;අයර්ලන්ත ගිම්හාන කාලය1ඇෆ්ගනිස්ථාන වේලාවAමධ්\u200dයම" + + " අප්\u200dරිකානු වේලාවGනැගෙනහිර අප්\u200dරිකානු වේලාව>දකුණු අප්\u200dරික" + + "ානු වේලාව>බටහිර අප්\u200dරිකානු වේලාවNබටහිර අප්\u200dරිකානු සම්මත වේලා" + + "වTබටහිර අප්\u200dරිකානු ග්\u200dරීෂ්ම කාලය\x22ඇලස්කා වේලාව2ඇලස්කා සම්ම" + + "ත වේලාව;ඇලස්කා දිවාආලෝක වේලාව%ඇමර්සන් වේලාව5ඇමර්සන් සම්මත වේලාව;ඇමර්සන" + + "් ග්\u200dරීෂ්ම කාලයKඋතුරු ඇමරිකානු මධ්\u200dයම වේලාව[උතුරු ඇමරිකානු ම" + + "ධ්\u200dයම සම්මත වේලාවdඋතුරු ඇමරිකානු මධ්\u200dයම දිවාආලෝක වේලාවQඋතුරු" + + " ඇමරිකානු නැගෙනහිර වේලාවaඋතුරු ඇමරිකානු නැගෙනහිර සම්මත වේලාවjඋතුරු ඇමරික" + + "ානු නැගෙනහිර දිවාආලෝක වේලාවHඋතුරු ඇමරිකානු කඳුකර වේලාවXඋතුරු ඇමරිකානු " + + "කඳුකර සම්මත වේලාවaඋතුරු ඇමරිකානු කඳුකර දිවාආලෝක වේලාවQඋතුරු ඇමරිකානු ප" + + "ැසිෆික් වේලාවaඋතුරු ඇමරිකානු පැසිෆික් සම්මත වේලාවjඋතුරු ඇමරිකානු පැසිෆ" + + "ික් දිවාආලෝක වේලාව\x1fඅපියා වේලාව/අපියා සම්මත වේලාව,අපියා දිවා වේලාව" + + "\x1fඅරාබි වේලාව/අරාබි සම්මත වේලාව/අරාබි දහවල් වේලාව.ආර්ජන්ටිනා වේලාව>ආර්" + + "ජන්ටිනා සම්මත වේලාවDආර්ජන්ටිනා ග්\u200dරීෂ්ම කාලය>බටහිර ආර්ජන්ටිනා වේල" + + "ාවNබටහිර ආර්ජන්ටිනා සම්මත වේලාවTබටහිර ආර්ජන්ටිනා ග්\u200dරීෂ්ම කාලය+ආම" + + "ේනියානු වේලාව;ආමේනියානු සම්මත වේලාවDආමේනියානු ග්\u200dරීෂ්ම වේලාව1අත්ල" + + "ාන්තික් වේලාවAඅත්ලාන්තික් සම්මත වේලාවJඅත්ලාන්තික් දිවාආලෝක වේලාවMමධ්" + + "\u200dයම ඕස්ට්\u200dරේලියානු වේලාවJඕස්ට්\u200dරේලියානු සම්මත වේලාව]මධ්" + + "\u200dයම ඔස්ට්\u200dරේලියානු දහවල් වේලාව]මධ්\u200dයම බටහිර ඔස්ට්\u200dරේ" + + "ලියානු වේලාවmමධ්\u200dයම බටහිර ඔස්ට්\u200dරේලියානු සම්මත වේලාවmමධ්" + + "\u200dයම බටහිර ඔස්ට්\u200dරේලියානු දහවල් වේලාවSනැගෙනහිර ඕස්ට්\u200dරේලිය" + + "ානු වේලාවcනැගෙනහිර ඕස්ට්\u200dරේලියානු සම්මත වේලාවcනැඟෙනහිර ඕස්ට්" + + "\u200dරේලියානු දහවල් වේලාවJබටහිර ඕස්ට්\u200dරේලියානු වේලාවZබටහිර ඕස්ට්" + + "\u200dරේලියානු සම්මත වේලාවZබටහිර ඔස්ට්\u200dරේලියානු දහවල් වේලාව1අසර්බයි" + + "ජාන් වේලාවAඅසර්බයිජාන් සම්මත වේලාවJඅසර්බයිජාන් ග්\u200dරීෂ්ම වේලාව%ඇසො" + + "ර්ස් වේලාව5ඇසොර්ස් සම්මත වේලාව>ඇසොර්ස් ග්\u200dරීෂ්ම වේලාව(බංගලාදේශ වේ" + + "ලාව8බංගලාදේශ සම්මත වේලාව>බංගලාදේශ ග්\u200dරීෂ්ම කාලය\x1fභුතාන වේලාව(බො" + + "ලිවියා වේලාව%බ්\u200dරසීල වේලාව5බ්\u200dරසීල සම්මත වේලාව;බ්\u200dරසීල " + + "ග්\u200dරීෂ්ම කාලයAබෘනායි දරුස්සලාම් වේලාව(කේප්වේඩ් වේලාව8කේප්වේඩ් සම්" + + "මත වේලාව>කේප්වේඩ් ග්\u200dරීෂ්ම කාලය\x1fචමොරෝ වේලාව\x1fචැතම් වේලාව/චැත" + + "ම් සම්මත වේලාව,චැතම් දිවා වේලාව\x1cචිලී වේලාව,චිලී සම්මත වේලාව2චිලී ග්" + + "\u200dරීෂ්ම කාලය\x19චීන වේලාව)චීන සම්මත වේලාව)චීන දහවල් වේලාව1චොයිබල්සාන" + + "් වේලාවAචොයිබල්සාන් සම්මත වේලාවJචොයිබල්සාන් ග්\u200dරීෂ්ම වේලාව>ක්" + + "\u200dරිස්මස් දුපත් වේලාව2කොකෝස් දුපත් වේලාව.කොලොම්බියා වේලාව>කොලොම්බියා" + + " සම්මත වේලාවDකොලොම්බියා ග්\u200dරීෂ්ම කාලය,කුක් දුපත් වේලාව<කුක් දුපත් ස" + + "ම්මත වේලාවOකුක් දුපත් භාග ග්\u200dරීෂ්ම වේලාව(කියුබානු වේලාව8කියුබානු " + + "සම්මත වේලාවAකියුබානු දිවාආලෝක වේලාව\x22ඩාවිස් වේලාවDදුමොන්ත්-ඩ්උර්විල්" + + " වේලාව;නැගෙනහිර ටිමෝර් වේලාව2ඊස්ටර් දූපත් වේලාවBඊස්ටර් දූපත් සම්මත වේලාව" + + "Hඊස්ටර් දූපත් ග්\u200dරීෂ්ම කාලය(ඉක්වදෝර් වේලාව8මධ්\u200dයම යුරෝපීය වේලා" + + "වHමධ්\u200dයම යුරෝපීය සම්මත වේලාවQමධ්\u200dයම යුරෝපීය ග්\u200dරීෂ්ම වේ" + + "ලාව>නැගෙනහිර යුරෝපීය වේලාවNනැගෙනහිර යුරෝපීය සම්මත වේලාවWනැගෙනහිර යුරෝප" + + "ීය ග්\u200dරීෂ්ම වේලාවKතවත්-නැගෙනහිර යුරෝපීය වේලාව5බටහිර යුරෝපීය වේලාව" + + "Eබටහිර යුරෝපීය සම්මත වේලාවNබටහිර යුරෝපීය ග්\u200dරීෂ්ම වේලාව;ෆෝක්ලන්ඩ් ද" + + "ූපත් වේලාවKෆෝක්ලන්ඩ් දූපත් සම්මත වේලාවQෆෝක්ලන්ඩ් දූපත් ග්\u200dරීෂ්ම ක" + + "ාලය\x1cෆිජි වේලාව,ෆිජි සම්මත වේලාව5ෆිජි ග්\u200dරීෂ්ම වේලාව/ප්\u200dරං" + + "ශ ගයනා වේලාවjප්\u200dරංශ දකුණුදිග සහ ඇන්ටාර්ක්ටික් වේලාව%ගලපගොස් වේලාව" + + "+ගැම්බියර් වේලාව.ජෝර්ජියානු වේලාව>ජෝර්ජියානු සම්මත වේලාවGජෝර්ජියානු ග්" + + "\u200dරීෂ්ම වේලාව;ගිල්බර්ට් දුපත් වේලාව>ග්\u200dරිනිච් මධ්\u200dයම වේලාව" + + "Jනැගෙනහිර ග්\u200dරීන්ලන්ත වේලාවZනැගෙනහිර ග්\u200dරීන්ලන්ත සම්මත වේලාව`න" + + "ැගෙනහිර ග්\u200dරීන්ලන්ත ග්\u200dරීෂ්ම කාලයAබටහිර ග්\u200dරීන්ලන්ත වේල" + + "ාවQබටහිර ග්\u200dරීන්ලන්ත සම්මත වේලාවWබටහිර ග්\u200dරීන්ලන්ත ග්\u200dර" + + "ීෂ්ම කාලය\x1fගල්ෆ් වේලාව\x1cගයනා වේලාවAහවායි-අලෙයුතියාන් වේලාවQහවායි-අ" + + "ලෙයුතියාන් සම්මත වේලාවZහවායි-අලෙයුතියාන් දිවාආලෝක වේලාව\x22හොංකොං වේලා" + + "ව2හොංකොං සම්මත වේලාව;හොංකොං ග්\u200dරීෂ්ම වේලාව\x22හොව්ඩ් වේලාව2හොව්ඩ්" + + " සම්මත වේලාව;හොව්ඩ් ග්\u200dරීෂ්ම වේලාව+ඉන්දියානු වේලාව5ඉන්දියන් සාගර වේ" + + "ලාව(ඉන්දුචීන වේලාවJමධ්\u200dයම ඉන්දුනීසියානු වේලාවPනැගෙනහිර ඉන්දුනීසිය" + + "ානු වේලාවGබටහිර ඉන්දුනීසියානු වේලාව\x1cඉරාන වේලාව,ඉරාන සම්මත වේලාව&ඉරා" + + "න දිවා කාලය1ඉර්කුට්ස්ක් වේලාවAඉර්කුට්ස්ක් සම්මත වේලාවJඉර්කුට්ස්ක් ග්" + + "\u200dරීෂ්ම වේලාව(ඊශ්\u200dරායල වේලාව8ඊශ්\u200dරායල සම්මත වේලාව8ඊශ්" + + "\u200dරායල දහවල් වේලාව\x1cජපාන වේලාව,ජපාන සම්මත වේලාව,ජපාන දහවල් වේලාවAන" + + "ැගෙනහිර කසකස්තාන වේලාව8බටහිර කසකස්තාන වේලාව(කොරියානු වේලාව8කොරියානු සම" + + "්මත වේලාව8කොරියානු දහවල් වේලාව\x22කොස්රේ වේලාව@ක්\u200dරස්නොයාර්ස්ක් ව" + + "ේලාවPක්\u200dරස්නොයාර්ස්ක් සම්මත වේලාවYක්\u200dරස්නොයාර්ස්ක් ග්\u200dර" + + "ීෂ්ම වේලාව1කිර්ගිස්තාන වේලාව,ශ්\u200dරී ලංකා වේලාව/ලයින් දුපත් වේලාව/ල" + + "ෝර්ඩ් හෝව් වේලාව?ලෝර්ඩ් හෝව් සම්මත වේලාව<ලෝර්ඩ් හෝව් දිවා වේලාව;මැක්කු" + + "අරි දුපත් වේලාව\x22මෙගඩන් වේලාව2මෙගඩන් සම්මත වේලාව;මෙගඩන් ග්\u200dරීෂ්" + + "ම වේලාව.මැලේසියානු වේලාව.මාලදිවයින් වේලාව1මාර්කුඑසාස් වේලාව5මාර්ෂල් දු" + + "පත් වේලාව\x22මුරුසි වේලාව2මුරුසි සම්මත වේලාව8මුරුසි ග්\u200dරීෂ්ම කාලය" + + "%මොව්සන් වේලාව2වයඹ මෙක්සිකෝ වේලාවBවයඹ මෙක්සිකෝ සම්මත වේලාවKවයඹ මෙක්සිකෝ " + + "දිවාආලෝක වේලාවAමෙක්සිකෝ පැසිෆික් වේලාවQමෙක්සිකෝ පැසිෆික් සම්මත වේලාවZම" + + "ෙක්සිකෝ පැසිෆික් දිවාආලෝක වේලාව/උලාන් බාටර් වේලාව?උලාන් බාටර් සම්මත වේ" + + "ලාවHඋලාන් බාටර් ග්\u200dරීෂ්ම වේලාව%මොස්කව් වේලාව5මොස්කව් සම්මත වේලාව>" + + "මොස්කව් ග්\u200dරීෂ්ම වේලාව+මියන්මාර් වේලාව\x22නාවුරු වේලාව\x1fනේපාල ව" + + "ේලාව8නව සෙලඩොනියානු වේලාවHනව සෙලඩොනියානු සම්මත වේලාවQනව සෙලඩොනියානු ග්" + + "\u200dරීෂ්ම වේලාව(නවසීලන්ත වේලාව8නවසීලන්ත සම්මත වේලාව5නවසීලන්ත දිවා වේලා" + + "ව7නිව්ෆවුන්ලන්ත වේලාවGනිව්ෆවුන්ලන්ත සම්මත වේලාවPනිව්ෆවුන්ලන්ත දිවාආලෝක" + + " වේලාව\x1cනියු වේලාව8නොෆොල්ක් දුපත් වේලාවKෆර්නැන්ඩෝ ඩි නොරොන්හා වේලාව[ෆර" + + "්නැන්ඩෝ ඩි නොරොන්හා සම්මත වේලාවaෆර්නැන්ඩෝ ඩි නොරොන්හා ග්\u200dරීෂ්ම කා" + + "ලය7නොවසිබිර්ස්ක් වේලාවGනොවසිබිර්ස්ක් සම්මත වේලාවPනොවසිබිර්ස්ක් ග්" + + "\u200dරීෂ්ම වේලාව%ඔම්ස්ක් වේලාව5ඔම්ස්ක් සම්මත වේලාව>ඔම්ස්ක් ග්\u200dරීෂ්" + + "ම වේලාව+පාකිස්ථාන වේලාව;පාකිස්ථාන සම්මත වේලාවAපාකිස්ථාන ග්\u200dරීෂ්ම " + + "කාලය\x1fපලාවු වේලාවBපැපුවා නිව් ගිනීයා වේලාව%පැරගුවේ වේලාව5පැරගුවේ සම්" + + "මත වේලාව;පැරගුවේ ග්\u200dරීෂ්ම කාලය\x1cපේරු වේලාව,පේරු සම්මත වේලාව2පේර" + + "ු ග්\u200dරීෂ්ම කාලය%පිලිපීන වේලාව5පිලිපීන සම්මත වේලාව>පිලිපීන ග්" + + "\u200dරීෂ්ම වේලාව8ෆීනික්ස් දුපත් වේලාවLශාන්ත පියරේ සහ මැකෝලන් වේලාව\\ශාන" + + "්ත පියරේ සහ මැකෝලන් සම්මත වේලාවeශාන්ත පියරේ සහ මැකෝලන් දිවාආලෝක වේලාව." + + "පිට්කෙයාන් වේලාව\x1fපොනපේ වේලාව1ප්යොන්ග්යන් වේලාව+රියුනියන් වේලාව\x22ර" + + "ොතෙරා වේලාව\x22සඛලින් වේලාව2සඛලින් සම්මත වේලාව;සඛලින් ග්\u200dරීෂ්ම වේ" + + "ලාව\x22සැමෝවා වේලාව2සැමෝවා සම්මත වේලාව;සැමෝවා ග්\u200dරීෂ්ම වේලාව(සීෂෙ" + + "ල්ස් වේලාව.සිංගප්පුරු වේලාව5සොලොමන් දූපත් වේලාව2දකුණු ජෝජියා වේලාව%සුර" + + "ිනාම වේලාව\x22ස්යෝවා වේලාව\x22ටාහිටි වේලාව\x22තායිපේ වේලාව2තායිපේ සම්ම" + + "ත වේලාව2තායිපේ දහවල් වේලාව.ටජිකිස්තාන වේලාව(ටොකෙලාවු වේලාව\x1fටොංගා වේ" + + "ලාව/ටොංගා සම්මත වේලාව8ටොංගා ග්\u200dරීෂ්ම වේලාව\x1cචුක් වේලාව:ටර්ක්මෙන" + + "ිස්තාන වේලාවJටර්ක්මෙනිස්තාන සම්මත වේලාවSටර්ක්මෙනිස්තාන ග්\u200dරීෂ්ම ව" + + "ේලාව\x22ටුවාලු වේලාව%උරුගුවේ වේලාව5උරුගුවේ සම්මත වේලාව;උරුගුවේ ග්" + + "\u200dරීෂ්ම කාලය4උස්බෙකිස්තාන වේලාවDඋස්බෙකිස්තාන සම්මත වේලාවMඋස්බෙකිස්තා" + + "න ග්\u200dරීෂ්ම වේලාව\x22වනුආටු වේලාව2වනුආටු සම්මත වේලාව8වනුආටු ගිම්හා" + + "න වේලාව.වෙනිසියුලා වේලාව7ව්ලදිවෝස්ටෝක් වේලාවGව්ලදිවෝස්ටෝක් සම්මත වේලාව" + + "Pව්ලදිවෝස්ටෝක් ග්\u200dරීෂ්ම වේලාව7වොල්ගොග්\u200dරාඩ් වේලාවGවොල්ගොග්" + + "\u200dරාඩ් සම්මත වේලාවPවොල්ගොග්\u200dරාඩ් ග්\u200dරීෂ්ම වේලාව(වොස්ටොක් ව" + + "ේලාව,වේක් දූපත් වේලාව<වැලිස් සහ ෆුටුනා වේලාව+යකුට්ස්ක් වේලාව;යකුට්ස්ක්" + + " සම්මත වේලාවDයකුට්ස්ක් ග්\u200dරීෂ්ම වේලාව:යෙකටෙරින්බර්ග් වේලාවJයෙකටෙරින" + + "්බර්ග් සම්මත වේලාවSයෙකටෙරින්බර්ග් ග්\u200dරීෂ්ම වේලාව" + +var bucket89 string = "" + // Size: 11457 bytes + "\x0fEEEE, d. M. y G\x08januára\x09februára\x05marca\x07apríla\x05mája" + + "\x05júna\x05júla\x07augusta\x09septembra\x08októbra\x08novembra\x08decem" + + "bra\x07nedeľa\x08pondelok\x06utorok\x06streda\x08štvrtok\x06piatok\x06so" + + "bota\x0d1. štvrťrok\x0d2. štvrťrok\x0d3. štvrťrok\x0d4. štvrťrok\x07o po" + + "ln.\x06napol.\x06dopol.\x06popol.\x04nap.\x09o polnoci\x0anapoludnie\x0a" + + "dopoludnia\x0apopoludní\x05poln.\x06polnoc\x08poludnie\x0adopoludnie\x0a" + + "popoludnie\x0cpred Kristom\x18pred naším letopočtom\x0bpo Kristovi\x12ná" + + "šho letopočtu\x08pred Kr.\x0apred n. l.\x06po Kr.\x05n. l.\x09o {0} rok" + + "\x0ao {0} roky\x0ao {0} roka\x0bo {0} rokov\x0epred {0} rokom\x0epred {0" + + "} rokmi\x0dpred {0} roka\x08o {0} r.\x0bpred {0} r.\x0aštvrťrok\x12minul" + + "ý štvrťrok\x10tento štvrťrok\x12budúci štvrťrok\x10o {0} štvrťrok\x11o " + + "{0} štvrťroky\x11o {0} štvrťroka\x12o {0} štvrťrokov\x15pred {0} štvrťro" + + "kom\x15pred {0} štvrťrokmi\x14pred {0} štvrťroka\x11minulý štvrťr.\x0fte" + + "nto štvrťr.\x11budúci štvrťr.\x0fo {0} štvrťr.\x12pred {0} štvrťr.\x06me" + + "siac\x0eminulý mesiac\x0ctento mesiac\x0ebudúci mesiac\x0co {0} mesiac" + + "\x0do {0} mesiace\x0do {0} mesiaca\x0eo {0} mesiacov\x11pred {0} mesiaco" + + "m\x11pred {0} mesiacmi\x10pred {0} mesiaca\x04mes.\x0ao {0} mes.\x0dpred" + + " {0} mes.\x09týždeň\x11minulý týždeň\x0ftento týždeň\x11budúci týždeň" + + "\x0fo {0} týždeň\x0eo {0} týždne\x0fo {0} týždňa\x10o {0} týždňov\x13pre" + + "d {0} týždňom\x14pred {0} týždňami\x12pred {0} týždňa\x12týždeň dňa {0}" + + "\x06týž.\x0co {0} týž.\x0fpred {0} týž.\x0ftýž. dňa {0}\x04deň\x0bpredvč" + + "erom\x06včera\x04dnes\x06zajtra\x08pozajtra\x0ao {0} deň\x09o {0} dni" + + "\x0ao {0} dňa\x0ao {0} dní\x0epred {0} dňom\x0fpred {0} dňami\x0dpred {0" + + "} dňa\x08o {0} d.\x0bpred {0} d.\x0edeň týždňa\x0fminulú nedeľu\x0dtúto " + + "nedeľu\x0fbudúcu nedeľu\x0do {0} nedeľu\x0co {0} nedele\x0do {0} nedieľ" + + "\x11pred {0} nedeľou\x12pred {0} nedeľami\x0fpred {0} nedele\x0cminulú n" + + "ed.\x0atúto ned.\x0cbudúcu ned.\x0ao {0} ned.\x0dpred {0} ned.\x0bminulú" + + " ne.\x09túto ne.\x0bbudúcu ne.\x09o {0} ne.\x0cpred {0} ne.\x10minulý po" + + "ndelok\x0etento pondelok\x10budúci pondelok\x0eo {0} pondelok\x0eo {0} p" + + "ondelky\x0eo {0} pondelka\x0fo {0} pondelkov\x12pred {0} pondelkom\x13pr" + + "ed {0} pondelkami\x11pred {0} pondelka\x0dminulý pond.\x0btento pond." + + "\x0dbudúci pond.\x0bo {0} pond.\x0epred {0} pond.\x0bminulý po.\x09tento" + + " po.\x0bbudúci po.\x09o {0} po.\x0cpred {0} po.\x0eminulý utorok\x0ctent" + + "o utorok\x0ebudúci utorok\x0co {0} utorok\x0co {0} utorky\x0co {0} utork" + + "a\x0do {0} utorkov\x10pred {0} utorkom\x11pred {0} utorkami\x0fpred {0} " + + "utorka\x0dminulý utor.\x0btento utor.\x0dbudúci utor.\x0bo {0} utor.\x0e" + + "pred {0} utor.\x0bminulý ut.\x09tento ut.\x0bbudúci ut.\x09o {0} ut.\x0c" + + "pred {0} ut.\x0eminulú stredu\x0ctúto stredu\x0ebudúcu stredu\x0co {0} s" + + "tredu\x0co {0} stredy\x0co {0} stried\x10pred {0} stredou\x11pred {0} st" + + "redami\x0fpred {0} stredy\x0cminulú str.\x0atúto str.\x0cbudúcu str.\x0a" + + "o {0} str.\x0dpred {0} str.\x0bminulú st.\x09túto st.\x0bbudúcu st.\x09o" + + " {0} st.\x0cpred {0} st.\x10minulý štvrtok\x0etento štvrtok\x10budúci št" + + "vrtok\x0eo {0} štvrtok\x0eo {0} štvrtky\x0eo {0} štvrtka\x0fo {0} štvrtk" + + "ov\x12pred {0} štvrtkom\x13pred {0} štvrtkami\x11pred {0} štvrtka\x0cmin" + + "ulý št.\x0atento št.\x0cbudúci št.\x0ao {0} št.\x0dpred {0} št.\x0eminul" + + "ý piatok\x0ctento piatok\x0ebudúci piatok\x0co {0} piatok\x0co {0} piat" + + "ky\x0co {0} piatka\x0do {0} piatkov\x10pred {0} piatkom\x11pred {0} piat" + + "kami\x0fpred {0} piatka\x0bminulý pi.\x09tento pi.\x0bbudúci pi.\x09o {0" + + "} pi.\x0cpred {0} pi.\x0eminulú sobotu\x0ctúto sobotu\x0ebudúcu sobotu" + + "\x0co {0} sobotu\x0co {0} soboty\x0co {0} sobôt\x10pred {0} sobotou\x11p" + + "red {0} sobotami\x0fpred {0} soboty\x0bminulú so.\x09túto so.\x0bbudúcu " + + "so.\x09o {0} so.\x0cpred {0} so.\x0bčasť dňa\x0ev tejto hodine\x0co {0} " + + "hodinu\x0co {0} hodiny\x0co {0} hodín\x10pred {0} hodinou\x11pred {0} ho" + + "dinami\x07o {0} h\x0apred {0} h\x07minúta\x0fv tejto minúte\x0do {0} min" + + "útu\x0do {0} minúty\x0co {0} minút\x11pred {0} minútou\x12pred {0} minú" + + "tami\x10pred {0} minúty\x09o {0} min\x0cpred {0} min\x0do {0} sekundu" + + "\x0do {0} sekundy\x0do {0} sekúnd\x11pred {0} sekundou\x12pred {0} sekun" + + "dami\x10pred {0} sekundy\x07o {0} s\x0apred {0} s\x13časové pásmo {0}" + + "\x08{0} (+1)\x08{0} (+0)\x1bKoordinovaný svetový čas\x14britský letný ča" + + "s\x18írsky štandardný čas\x0eafganský čas\x13stredoafrický čas\x15východ" + + "oafrický čas\x11juhoafrický čas\x14západoafrický čas!západoafrický štand" + + "ardný čas\x1bzápadoafrický letný čas\x0faljašský čas\x1caljašský štandar" + + "dný čas\x16aljašský letný čas\x0famazonský čas\x1camazonský štandardný č" + + "as\x16amazonský letný čas\x1fseveroamerický centrálny čas,severoamerický" + + " centrálny štandardný čas&severoamerický centrálny letný čas\x1fseveroam" + + "erický východný čas,severoamerický východný štandardný čas&severoamerick" + + "ý východný letný čas\x1cseveroamerický horský čas)severoamerický horský" + + " štandardný čas#severoamerický horský letný čas!severoamerický tichomors" + + "ký čas.severoamerický tichomorský štandardný čas(severoamerický tichomor" + + "ský letný čas\x0fAnadyrský čas\x1cAnadyrský štandardný čas\x16Anadyrský " + + "letný čas\x0dapijský čas\x1aapijský štandardný čas\x14apijský letný čas" + + "\x0darabský čas\x1aarabský štandardný čas\x14arabský letný čas\x11argent" + + "ínsky čas\x1eargentínsky štandardný čas\x18argentínsky letný čas\x18záp" + + "adoargentínsky čas%západoargentínsky štandardný čas\x1fzápadoargentínsky" + + " letný čas\x0earménsky čas\x1barménsky štandardný čas\x15arménsky letný " + + "čas\x10atlantický čas\x1datlantický štandardný čas\x17atlantický letný " + + "čas\x16stredoaustrálsky čas#stredoaustrálsky štandardný čas\x1dstredoau" + + "strálsky letný čas stredozápadný austrálsky čas-stredozápadný austrálsky" + + " štandardný čas'stredozápadný austrálsky letný čas\x18východoaustrálsky " + + "čas%východoaustrálsky štandardný čas\x1fvýchodoaustrálsky letný čas\x17" + + "západoaustrálsky čas$západoaustrálsky štandardný čas\x1ezápadoaustrálsky" + + " letný čas\x15azerbajdžanský čas\x22azerbajdžanský štandardný čas\x1caze" + + "rbajdžanský letný čas\x0dazorský čas\x1aazorský štandardný čas\x14azorsk" + + "ý letný čas\x13bangladéšsky čas bangladéšsky štandardný čas\x1abangladé" + + "šsky letný čas\x0fbhutánsky čas\x11bolívijský čas\x0fbrazílsky čas\x1cb" + + "razílsky štandardný čas\x16brazílsky letný čas\x0fbrunejský čas\x10kapve" + + "rdský čas\x1dkapverdský štandardný čas\x17kapverdský letný čas\x1dchamor" + + "rský štandardný čas\x10chathamský čas\x1dchathamský štandardný čas\x17ch" + + "athamský letný čas\x0dčilský čas\x1ačilský štandardný čas\x14čilský letn" + + "ý čas\x0dčínsky čas\x1ačínsky štandardný čas\x14čínsky letný čas\x13čoj" + + "balsanský čas čojbalsanský štandardný čas\x1ačojbalsanský letný čas\x19č" + + "as Vianočného ostrova\x19čas Kokosových ostrovov\x11kolumbijský čas\x1ek" + + "olumbijský štandardný čas\x18kolumbijský letný čas\x18čas Cookových ostr" + + "ovov%štandardný čas Cookových ostrovov\x1fletný čas Cookových ostrovov" + + "\x0ekubánsky čas\x1bkubánsky štandardný čas\x15kubánsky letný čas\x16čas" + + " Davisovej stanice!čas stanice Dumonta d’Urvillea\x16východotimorský čas" + + "\x1cčas Veľkonočného ostrova)štandardný čas Veľkonočného ostrova#letný č" + + "as Veľkonočného ostrova\x11ekvádorský čas\x14stredoeurópsky čas!stredoeu" + + "rópsky štandardný čas\x1bstredoeurópsky letný čas\x16východoeurópsky čas" + + "#východoeurópsky štandardný čas\x1dvýchodoeurópsky letný čas\x0cminský č" + + "as\x15západoeurópsky čas\x22západoeurópsky štandardný čas\x1czápadoeuróp" + + "sky letný čas\x11falklandský čas\x1efalklandský štandardný čas\x18falkla" + + "ndský letný čas\x10fidžijský čas\x1dfidžijský štandardný čas\x17fidžijsk" + + "ý letný čas\x19francúzskoguyanský čas5čas Francúzskych južných a antark" + + "tických území\x10galapágsky čas\x10gambierský čas\x0fgruzínsky čas\x1cgr" + + "uzínsky štandardný čas\x16gruzínsky letný čas\x1bčas Gilbertových ostrov" + + "ov\x12greenwichský čas\x15východogrónsky čas\x22východogrónsky štandardn" + + "ý čas\x1cvýchodogrónsky letný čas\x14západogrónsky čas!západogrónsky št" + + "andardný čas\x1bzápadogrónsky letný čas$štandardný čas Perzského zálivu" + + "\x0eguyanský čas\x17havajsko-aleutský čas$havajsko-aleutský štandardný č" + + "as\x1ehavajsko-aleutský letný čas\x10hongkonský čas\x1dhongkonský štanda" + + "rdný čas\x17hongkonský letný čas\x0echovdský čas\x1bchovdský štandardný " + + "čas\x15chovdský letný čas\x0dindický čas\x15indickooceánsky čas\x11indo" + + "čínsky čas\x16stredoindonézsky čas\x18východoindonézsky čas\x17západoin" + + "donézsky čas\x0diránsky čas\x1airánsky štandardný čas\x14iránsky letný č" + + "as\x0eirkutský čas\x1birkutský štandardný čas\x15irkutský letný čas\x0fi" + + "zraelský čas\x1cizraelský štandardný čas\x16izraelský letný čas\x0ejapon" + + "ský čas\x1bjaponský štandardný čas\x15japonský letný čas\x1ePetropavlovs" + + "k-Kamčatský čas+Petropavlovsk-Kamčatský štandardný čas)Petropavlovsk-Kam" + + "čatskijský letný čas\x1bvýchodokazachstanský čas\x1azápadokazachstanský" + + " čas\x0fkórejský čas\x1ckórejský štandardný čas\x16kórejský letný čas" + + "\x0fkosrajský čas\x12krasnojarský čas\x1fkrasnojarský štandardný čas\x19" + + "krasnojarský letný čas\x0fkirgizský čas\x1bčas Rovníkových ostrovov\x17č" + + "as ostrova lorda Howa$štandardný čas ostrova lorda Howa\x1eletný čas ost" + + "rova lorda Howa\x16čas ostrova Macquarie\x10magadanský čas\x1dmagadanský" + + " štandardný čas\x17magadanský letný čas\x11malajzijský čas\x0fmaldivský " + + "čas\x0fmarkézsky čas\x1cčas Marshallových ostrovov\x12maurícijský čas" + + "\x1fmaurícijský štandardný čas\x19maurícijský letný čas\x17čas Mawsonove" + + "j stanice\x1dseverozápadný mexický čas*severozápadný mexický štandardný " + + "čas$severozápadný mexický letný čas\x1amexický tichomorský čas'mexický " + + "tichomorský štandardný čas!mexický tichomorský letný čas\x13ulanbátarský" + + " čas ulanbátarský štandardný čas\x1aulanbátarský letný čas\x0fmoskovský " + + "čas\x1cmoskovský štandardný čas\x16moskovský letný čas\x10mjanmarský ča" + + "s\x0enauruský čas\x0enepálsky čas\x14novokaledónsky čas!novokaledónsky š" + + "tandardný čas\x1bnovokaledónsky letný čas\x14novozélandský čas!novozélan" + + "dský štandardný čas\x1bnovozélandský letný čas\x15newfoundlandský čas" + + "\x22newfoundlandský štandardný čas\x1cnewfoundlandský letný čas\x0eniuej" + + "ský čas\x0fnorfolský čas$čas súostrovia Fernando de Noronha1štandardný č" + + "as súostrovia Fernando de Noronha+letný čas súostrovia Fernando de Noron" + + "ha\x12novosibirský čas\x1fnovosibirský štandardný čas\x19novosibirský le" + + "tný čas\x0bomský čas\x18omský štandardný čas\x12omský letný čas\x11pakis" + + "tanský čas\x1epakistanský štandardný čas\x18pakistanský letný čas\x0epal" + + "auský čas\x17čas Papuy-Novej Guiney\x11paraguajský čas\x1eparaguajský št" + + "andardný čas\x18paraguajský letný čas\x0fperuánsky čas\x1cperuánsky štan" + + "dardný čas\x16peruánsky letný čas\x10filipínsky čas\x1dfilipínsky štanda" + + "rdný čas\x17filipínsky letný čas\x1ačas Fénixových ostrovov\x18pierre-mi" + + "quelonský čas%pierre-miquelonský štandardný čas\x1fpierre-miquelonský le" + + "tný čas\x1cčas Pitcairnových ostrovov\x0eponapský čas\x13pchjongjanský č" + + "as\x11réunionský čas\x17čas Rotherovej stanice\x11sachalinský čas\x1esac" + + "halinský štandardný čas\x18sachalinský letný čas\x0eSamarský čas\x1bSama" + + "rský štandardný čas\x15Samarský letný čas\x0esamojský čas\x1bsamojský št" + + "andardný čas\x15samojský letný čas\x10seychelský čas\x1esingapurský štan" + + "dardný čas\x1dčas Šalamúnových ostrovov\x14čas Južnej Georgie\x10surinam" + + "ský čas\x13čas stanice Šówa\x0etahitský čas\x11tchajpejský čas\x1etchajp" + + "ejský štandardný čas\x18tchajpejský letný čas\x0ftadžický čas\x10tokelau" + + "ský čas\x0etonžský čas\x1btonžský štandardný čas\x15tonžský letný čas" + + "\x0echuukský čas\x10turkménsky čas\x1dturkménsky štandardný čas\x17turkm" + + "énsky letný čas\x0etuvalský čas\x10uruguajský čas\x1duruguajský štandar" + + "dný čas\x17uruguajský letný čas\x0duzbecký čas\x1auzbecký štandardný čas" + + "\x14uzbecký letný čas\x0fvanuatský čas\x1cvanuatský štandardný čas\x16va" + + "nuatský letný čas\x11venezuelský čas\x13vladivostocký čas vladivostocký " + + "štandardný čas\x1avladivostocký letný čas\x12volgogradský čas\x1fvolgog" + + "radský štandardný čas\x19volgogradský letný čas\x13čas stanice Vostok" + + "\x11čas ostrova Wake\x1dčas ostrovov Wallis a Futuna\x0ejakutský čas\x1b" + + "jakutský štandardný čas\x15jakutský letný čas\x15jekaterinburský čas\x22" + + "jekaterinburský štandardný čas\x1cjekaterinburský letný čas" + +var bucket90 string = "" + // Size: 10850 bytes + "\x0cdd. MMMM y G\x0fd. MM. yy GGGGG\x07nedelja\x0aponedeljek\x05torek" + + "\x05sreda\x08četrtek\x05petek\x06sobota\x081. čet.\x082. čet.\x083. čet." + + "\x084. čet.\x0e1. četrtletje\x0e2. četrtletje\x0e3. četrtletje\x0e4. čet" + + "rtletje\x06opoln.\x06opold.\x05zjut.\x06zveč.\x04noč\x0524.00\x0512.00" + + "\x02zj\x02zv\x09opolnoči\x07opoldne\x07zjutraj\x08dopoldan\x08popoldan" + + "\x07zvečer\x07ponoči\x05pold.\x04jut.\x07polnoč\x08dopoldne\x06poldne" + + "\x08popoldne\x0epred Kristusom\x14pred našim štetjem\x0bpo Kristusu\x11p" + + "o našem štetju\x0bpr. n. št.\x0apo n. št.\x10EEEE, dd. MMMM y\x0add. MMM" + + "M y\x09d. MM. yy\x04leto\x04lani\x05letos\x0enaslednje leto\x0dčez {0} l" + + "eto\x0dčez {0} leti\x0dčez {0} leta\x0cčez {0} let\x0epred {0} letom\x0f" + + "pred {0} letoma\x0dpred {0} leti\x0bčetrtletje\x12zadnje četrtletje\x0et" + + "o četrtletje\x15naslednje četrtletje\x14čez {0} četrtletje\x14čez {0} če" + + "trtletji\x14čez {0} četrtletja\x14čez {0} četrtletij\x15pred {0} četrtle" + + "tjem\x16pred {0} četrtletjema\x14pred {0} četrtletji\x08četrtl.\x11čez {" + + "0} četrtl.\x11pred {0} četrtl.\x06četr.\x0fčez {0} četr.\x0fpred {0} čet" + + "r.\x05mesec\x0fprejšnji mesec\x08ta mesec\x0fnaslednji mesec\x0ečez {0} " + + "mesec\x0fčez {0} meseca\x0fčez {0} mesece\x10čez {0} mesecev\x10pred {0}" + + " mesecem\x11pred {0} mesecema\x0fpred {0} meseci\x0dčez {0} mes.\x05tede" + + "n\x0fprejšnji teden\x08ta teden\x0fnaslednji teden\x0ečez {0} teden\x0eč" + + "ez {0} tedna\x0ečez {0} tedne\x0fčez {0} tednov\x0fpred {0} tednom\x10pr" + + "ed {0} tednoma\x0epred {0} tedni\x0bv tednu {0}\x04ted.\x0dčez {0} ted." + + "\x0dpred {0} ted.\x11predvčerajšnjim\x07včeraj\x05danes\x05jutri\x0dpoju" + + "trišnjem\x0cčez {0} dan\x0ečez {0} dneva\x0cčez {0} dni\x0fpred {0} dnev" + + "om\x10pred {0} dnevoma\x0epred {0} dnevi\x0bdan v tednu\x11prejšnjo nede" + + "ljo\x0ato nedeljo\x11naslednjo nedeljo\x10čez {0} nedeljo\x10čez {0} ned" + + "elji\x10čez {0} nedelje\x0fčez {0} nedelj\x10pred {0} nedeljo\x12pred {0" + + "} nedeljama\x12pred {0} nedeljami\x0eprejšnjo ned.\x07to ned.\x0enasledn" + + "jo ned.\x0cprejš. ned.\x0anasl. ned.\x14prejšnji ponedeljek\x0dta ponede" + + "ljek\x14naslednji ponedeljek\x13čez {0} ponedeljek\x13čez {0} ponedeljka" + + "\x13čez {0} ponedeljke\x14čez {0} ponedeljkov\x14pred {0} ponedeljkom" + + "\x15pred {0} ponedeljkoma\x13pred {0} ponedeljki\x0eprejšnji pon.\x07ta " + + "pon.\x0enaslednji pon.\x0cprejš. pon.\x0anasl. pon.\x0fprejšnji torek" + + "\x08ta torek\x0fnaslednji torek\x0ečez {0} torek\x0ečez {0} torka\x0ečez" + + " {0} torke\x0fčez {0} torkov\x0fpred {0} torkom\x10pred {0} torkoma\x0ep" + + "red {0} torki\x0eprejšnji tor.\x07ta tor.\x0enaslednji tor.\x0cprejš. to" + + "r.\x0anasl. tor.\x0fprejšnjo sredo\x08to sredo\x0fnaslednjo sredo\x0ečez" + + " {0} sredo\x0ečez {0} sredi\x0ečez {0} srede\x0dčez {0} sred\x0epred {0}" + + " sredo\x10pred {0} sredama\x10pred {0} sredami\x0eprejšnjo sre.\x07to sr" + + "e.\x0enaslednjo sre.\x0cprejš. sre.\x0anasl. sre.\x12prejšnji četrtek" + + "\x0bta četrtek\x12naslednji četrtek\x11čez {0} četrtek\x11čez {0} četrtk" + + "a\x11čez {0} četrtke\x12čez {0} četrtkov\x12pred {0} četrtkom\x13pred {0" + + "} četrtkoma\x11pred {0} četrtki\x0fprejšnji čet.\x08ta čet.\x0fnaslednji" + + " čet.\x0dprejš. čet.\x0bnasl. čet.\x0fprejšnji petek\x08ta petek\x0fnasl" + + "ednji petek\x0ečez {0} petek\x0ečez {0} petka\x0ečez {0} petke\x0fčez {0" + + "} petkov\x0fpred {0} petkom\x10pred {0} petkoma\x0epred {0} petki\x0epre" + + "jšnji pet.\x07ta pet.\x0enaslednji pet.\x0cprejš. pet.\x0anasl. pet.\x10" + + "prejšnjo soboto\x09to soboto\x10naslednjo soboto\x0fčez {0} soboto\x0fče" + + "z {0} soboti\x0fčez {0} sobote\x0ečez {0} sobot\x0fpred {0} soboto\x11pr" + + "ed {0} sobotama\x11pred {0} sobotami\x0eprejšnjo sob.\x07to sob.\x0enasl" + + "ednjo sob.\x0cprejš. sob.\x0anasl. sob.\x07dop/pop\x09v tej uri\x0cčez {" + + "0} uro\x0cčez {0} uri\x0cčez {0} ure\x0bčez {0} ur\x0cpred {0} uro\x0epr" + + "ed {0} urama\x0epred {0} urami\x0ačez {0} h\x09to minuto\x0fčez {0} minu" + + "to\x0fčez {0} minuti\x0fčez {0} minute\x0ečez {0} minut\x0fpred {0} minu" + + "to\x11pred {0} minutama\x11pred {0} minutami\x0dčez {0} min.\x0dpred {0}" + + " min.\x0cčez {0} min\x04zdaj\x10čez {0} sekundo\x10čez {0} sekundi\x10če" + + "z {0} sekunde\x0fčez {0} sekund\x10pred {0} sekundo\x12pred {0} sekundam" + + "a\x12pred {0} sekundami\x0ačez {0} s\x0cčasovni pas\x08{0} čas\x10{0} po" + + "letni čas\x13{0} standardni čas\x1dUniverzalni koordinirani čas\x16brita" + + "nski poletni čas\x15irski standardni čas\x12Afganistanski čas\x16Central" + + "noafriški čas\x14Vzhodnoafriški čas\x13Južnoafriški čas\x14Zahodnoafrišk" + + "i čas\x1fZahodnoafriški standardni čas\x1cZahodnoafriški poletni čas\x0d" + + "Aljaški čas\x18Aljaški standardni čas\x15Aljaški poletni čas\x0eAmazonsk" + + "i čas\x19Amazonski standardni čas\x16Amazonski poletni čas\x0eCentralni " + + "čas\x19Centralni standardni čas\x16Centralni poletni čas\x0cVzhodni čas" + + "\x17Vzhodni standardni čas\x14Vzhodni poletni čas\x0bGorski čas\x16Gorsk" + + "i standardni čas\x13Gorski poletni čas\x0fPacifiški čas\x1aPacifiški sta" + + "ndardni čas\x17Pacifiški poletni čas\x0eAnadirski čas\x19Anadirski stand" + + "ardni čas\x16Anadirski poletni čas\x0aČas: Apia\x15Standardni čas: Apia" + + "\x12Poletni čas: Apia\x0cArabski čas\x17Arabski standardni čas\x14Arabsk" + + "i poletni čas\x10Argentinski čas\x1bArgentinski standardni čas\x18Argent" + + "inski poletni čas\x18Argentinski zahodni čas#Argentinski zahodni standar" + + "dni čas Argentinski zahodni poletni čas\x0dArmenski čas\x18Armenski stan" + + "dardni čas\x15Armenski poletni čas\x0eAtlantski čas\x19Atlantski standar" + + "dni čas\x16Atlantski poletni čas\x19Avstralski centralni čas$Avstralski " + + "centralni standardni čas!Avstralski centralni poletni čas!Avstralski cen" + + "tralni zahodni čas,Avstralski centralni zahodni standardni čas)Avstralsk" + + "i centralni zahodni poletni čas\x17Avstralski vzhodni čas\x22Avstralski " + + "vzhodni standardni čas\x1fAvstralski vzhodni poletni čas\x17Avstralski z" + + "ahodni čas\x22Avstralski zahodni standardni čas\x1fAvstralski zahodni po" + + "letni čas\x14Azerbajdžanski čas\x1fAzerbajdžanski standardni čas\x1cAzer" + + "bajdžanski poletni čas\x0cAzorski čas\x17Azorski standardni čas\x14Azors" + + "ki poletni čas\x11Bangladeški čas\x1cBangladeški standardni čas\x19Bangl" + + "adeški poletni čas\x0dButanski čas\x0fBolivijski čas\x0eBrasilski čas" + + "\x19Brasilski standardni čas\x16Brasilski poletni čas\x0eBrunejski čas" + + "\x0fKapverdski čas\x1aKapverdski standardni čas\x17Kapverdski poletni ča" + + "s\x19Čamorski standardni čas\x0eČatamski čas\x19Čatamski standardni čas" + + "\x16Čatamski poletni čas\x0cČilski čas\x17Čilski standardni čas\x14Čilsk" + + "i poletni čas\x0dKitajski čas\x18Kitajski standardni čas\x15Kitajski pol" + + "etni čas\x12Čojbalsanski čas\x1dČojbalsanski standardni čas\x1aČojbalsan" + + "ski poletni čas\x15Božičnootoški čas\x14Čas: Kokosovi otoki\x10Kolumbijs" + + "ki čas\x1bKolumbijski standardni čas\x18Kolumbijski poletni čas\x13Cooko" + + "vootoški čas\x1eCookovootoški standardni čas\x22Cookovootoški srednjepol" + + "etni čas\x0dKubanski čas\x18Kubanski standardni čas\x15Kubanski poletni " + + "čas\x0bČas: Davis\x18Čas: Dumont-d’Urville\x14Vzhodnotimorski čas\x17Ča" + + "s: Velikonočni otok\x22Standardni čas: Velikonočni otok\x1fPoletni čas: " + + "Velikonočni otok\x0fEkvadorski čas\x14Srednjeevropski čas\x1fSrednjeevro" + + "pski standardni čas\x1cSrednjeevropski poletni čas\x14Vzhodnoevropski ča" + + "s\x1fVzhodnoevropski standardni čas\x1cVzhodnoevropski poletni čas\x1cDo" + + "datni vzhodnoevropski čas\x14Zahodnoevropski čas\x1fZahodnoevropski stan" + + "dardni čas\x1cZahodnoevropski poletni čas\x19Čas: Falklandsko otočje$Sta" + + "ndardni čas: Falklandsko otočje!Poletni čas: Falklandsko otočje\x0fFidži" + + "jski čas\x1aFidžijski standardni čas\x17Fidžijski poletni čas\x17Čas: Fr" + + "ancoska Gvajana%Francoski južni in antarktični čas\x0fGalapaški čas\x0fG" + + "ambierski čas\x0eGruzijski čas\x19Gruzijski standardni čas\x16Gruzijski " + + "poletni čas\x16Čas: Gilbertovi otoki\x18Greenwiški srednji čas\x17Vzhodn" + + "ogrenlandski čas\x22Vzhodnogrenlandski standardni čas\x1fVzhodnogrenland" + + "ski poletni čas\x17Zahodnogrenlandski čas\x22Zahodnogrenlandski standard" + + "ni čas\x1fZahodnogrenlandski poletni čas\x18Zalivski standardni čas\x0eG" + + "vajanski čas\x16Havajski aleutski čas!Havajski aleutski standardni čas" + + "\x1eHavajski aleutski poletni čas\x10Hongkonški čas\x1bHongkonški standa" + + "rdni čas\x18Hongkonški poletni čas\x0cHovdski čas\x17Hovdski standardni " + + "čas\x14Hovdski poletni čas\x18Indijski standardni čas\x15Indijskooceans" + + "ki čas\x11Indokitajski čas\x1aIndonezijski osrednji čas\x19Indonezijski " + + "vzhodni čas\x19Indonezijski zahodni čas\x0cIranski čas\x17Iranski standa" + + "rdni čas\x14Iranski poletni čas\x0dIrkutski čas\x18Irkutski standardni č" + + "as\x15Irkutski poletni čas\x0eIzraelski čas\x19Izraelski standardni čas" + + "\x16Izraelski poletni čas\x0dJaponski čas\x18Japonski standardni čas\x15" + + "Japonski poletni čas\x1dPetropavlovsk-Kamčatski čas(Petropavlovsk-Kamčat" + + "ski standardni čas%Petropavlovsk-Kamčatski poletni čas\x19Vzhodni kazahs" + + "tanski čas\x19Zahodni kazahstanski čas\x0dKorejski čas\x18Korejski stand" + + "ardni čas\x15Korejski poletni čas\x0fKosrajški čas\x11Krasnojarski čas" + + "\x1cKrasnojarski standardni čas\x19Krasnojarski poletni čas\x13Kirgizist" + + "anski čas\x16Ekvatorski otoki: Čas\x14Čas otoka Lord Howe\x1fStandardni " + + "čas otoka Lord Howe\x1cPoletni čas otoka Lord Howe\x11Macquarieski čas" + + "\x0fMagadanski čas\x1aMagadanski standardni čas\x17Magadanski poletni ča" + + "s\x0fMalezijski čas\x0eMaldivski čas\x14Čas: Markizni otoki\x17Čas: Mars" + + "hallovi otoki\x10Mauricijski čas\x1bMauricijski standardni čas\x18Mauric" + + "ijski poletni čas\x0eMawsonski čas\x1bmehiški severozahodni čas&mehiški " + + "severozahodni standardni čas#mehiški severozahodni poletni čas\x18mehišk" + + "i pacifiški čas#mehiški pacifiški standardni čas mehiški pacifiški polet" + + "ni čas\x11Ulanbatorski čas\x1cUlanbatorski standardni čas\x19Ulanbatorsk" + + "i poletni čas\x0eMoskovski čas\x19Moskovski standardni čas\x16Moskovski " + + "poletni čas\x0fMjanmarski čas\x0eNaurujski čas\x0dNepalski čas\x15Novoka" + + "ledonijski čas Novokaledonijski standardni čas\x1dNovokaledonijski polet" + + "ni čas\x12Novozelandski čas\x1dNovozelandski standardni čas\x1aNovozelan" + + "dski poletni čas\x14Novofundlandski čas\x1fNovofundlandski standardni ča" + + "s\x1cNovofundlandski poletni čas\x0dNiuejski čas\x16Čas: Norfolški otoki" + + "\x1aFernando de Noronški čas%Fernando de Noronški standardni čas\x22Fern" + + "ando de Noronški poletni čas\x11Novosibirski čas\x1cNovosibirski standar" + + "dni čas\x19Novosibirski poletni čas\x0aOmski čas\x15Omski standardni čas" + + "\x12Omski poletni čas\x10Pakistanski čas\x1bPakistanski standardni čas" + + "\x18Pakistanski poletni čas\x0dPalavski čas\x0ePapuanski čas\x10Paragvaj" + + "ski čas\x1bParagvajski standardni čas\x18Paragvajski poletni čas\x0dPeru" + + "jski čas\x18Perujski standardni čas\x15Perujski poletni čas\x0fFilipinsk" + + "i čas\x1aFilipinski standardni čas\x17Filipinski poletni čas\x14Čas: Oto" + + "čje Feniks\x1eČas: Saint Pierre in Miquelon)Standardni čas: Saint Pierr" + + "e in Miquelon&Poletni čas: Saint Pierre in Miquelon\x10Pitcairnski čas" + + "\x0dPonapski čas\x11Pjongjanški čas\x0fReunionski čas\x0eRotherski čas" + + "\x0fSahalinski čas\x1aSahalinski standardni čas\x17Sahalinski poletni ča" + + "s\x0dSamarski čas\x18Samarski standardni čas\x15Samarski poletni čas\x0e" + + "Samoanski čas\x19Samoanski standardni čas\x16Samoanski poletni čas\x0fSe" + + "jšelski čas\x1bSingapurski standardni čas\x16Salomonovootoški čas\x15Juž" + + "nogeorgijski čas\x0fSurinamski čas\x0bČas: Syowa\x0fTahitijski čas\x0eTa" + + "jpejski čas\x19Tajpejski standardni čas\x16Tajpejski poletni čas\x14Tadž" + + "ikistanski čas\x0fTokelavski čas\x0eTongovski čas\x19Tongovski standardn" + + "i čas\x16Tongovski poletni čas\x10Čas: Otok Chuuk\x14Turkmenistanski čas" + + "\x1fTurkmenistanski standardni čas\x1cTurkmenistanski poletni čas\x0fTuv" + + "alujski čas\x0fUrugvajski čas\x1aUrugvajski standardni čas\x17Urugvajski" + + " poletni čas\x12Uzbekistanski čas\x1dUzbekistanski standardni čas\x1aUzb" + + "ekistanski poletni čas\x10Vanuatujski čas\x1bVanuatujski standardni čas" + + "\x18Vanuatujski poletni čas\x10Venezuelski čas\x13Vladivostoški čas\x1eV" + + "ladivostoški standardni čas\x1bVladivostoški poletni čas\x11Volgograjski" + + " čas\x1cVolgograjski standardni čas\x19Volgograjski poletni čas\x0evosto" + + "ški čas\x0fČas: Otok Wake\x16Čas: Wallis in Futuna\x0dJakutski čas\x18J" + + "akutski standardni čas\x15Jakutski poletni čas\x15Jekaterinburški čas Je" + + "katerinburški standardni čas\x1dJekaterinburški poletni čas\x0aponedelja" + + "k\x06utorak\x09četvrtak\x05petak\x06subota" + +var bucket91 string = "" + // Size: 12727 bytes + "\x10cccc MMMM d. y G\x0bMMMM d. y G\x0d{1} 'tme' {0}\x05uđiv\x06kuovâ" + + "\x08njuhčâ\x08cuáŋui\x05vyesi\x04kesi\x06syeini\x05porge\x08čohčâ\x08roo" + + "vvâd\x07skammâ\x07juovlâ\x11uđđâivemáánu\x0dkuovâmáánu\x0fnjuhčâmáánu" + + "\x0fcuáŋuimáánu\x0cvyesimáánu\x0bkesimáánu\x0dsyeinimáánu\x0cporgemáánu" + + "\x0fčohčâmáánu\x0froovvâdmáánu\x0eskammâmáánu\x0ejuovlâmáánu\x03pas\x03v" + + "uo\x03maj\x03kos\x03tuo\x04vás\x04láv\x02pa\x02vu\x02ma\x02ko\x02tu\x03v" + + "á\x03lá\x0apasepeeivi\x0bvuossaargâ\x0bmajebaargâ\x07koskoho\x0atuorâst" + + "uv\x0dvástuppeeivi\x09lávurduv\x09pasepeivi\x0avuossargâ\x0amajebargâ" + + "\x08koskokko\x0btuorâstâh\x0cvástuppeivi\x0alávurdâh\x0a1. niälj.\x0a2. " + + "niälj.\x0a3. niälj.\x0a4. niälj.\x0f1. niäljádâs\x0f2. niäljádâs\x0f3. n" + + "iäljádâs\x0f4. niäljádâs\x03ep.\x16Ovdil Kristus šoddâm\x1eOvdil ääigire" + + "kinistem älgim\x16maŋa Kristus šoddâm\x1emaŋa ääigirekinistem älgim\x04o" + + "Kr.\x06oää.\x04mKr.\x06mää.\x0fcccc, MMMM d. y\x09MMMM d. y\x08MMM d. y" + + "\x03Ndi\x03Kuk\x03Kur\x03Kub\x03Chv\x03Chk\x03Chg\x03Nya\x03Gun\x03Gum" + + "\x03Mbu\x03Zvi\x05Ndira\x07Kukadzi\x06Kurume\x08Kubvumbi\x08Chivabvu\x07" + + "Chikumi\x0aChikunguru\x0bNyamavhuvhu\x07Gunyana\x08Gumiguru\x06Mbudzi" + + "\x05Zvita\x03Svo\x03Muv\x03Chp\x03Cht\x03Chn\x03Chs\x03Mug\x06Svondo\x07" + + "Muvhuro\x07Chipiri\x07Chitatu\x05China\x08Chishanu\x08Mugovera\x11Kristo" + + " asati auya\x13mugore ramambo vedu\x06Mukore\x04Gore\x05Vhiki\x04Zuva" + + "\x06Nezuro\x05Nhasi\x08Mangwana\x0cZuva revhiki\x05Nguva\x12EEEE, MMMM d" + + "d, y G\x03Kob\x03Lab\x03Sad\x03Afr\x03Sha\x03Lix\x03Tod\x03Sid\x03Sag" + + "\x03Tob\x03KIT\x03LIT\x0dBisha Koobaad\x0cBisha Labaad\x0fBisha Saddexaa" + + "d\x0cBisha Afraad\x0dBisha Shanaad\x0cBisha Lixaad\x0eBisha Todobaad\x0f" + + "Bisha Sideedaad\x0fBisha Sagaalaad\x0dBisha Tobnaad\x15Bisha Kow iyo Tob" + + "naad\x16Bisha Laba iyo Tobnaad\x03Axd\x03Isn\x03Tal\x03Arb\x03Kha\x03Jim" + + "\x03Sab\x04Axad\x06Isniin\x07Talaado\x06Arbaco\x07Khamiis\x05Jimco\x05Sa" + + "bti\x0bRubaca 1aad\x0bRubaca 2aad\x0bRubaca 3aad\x0bRubaca 4aad\x03gn." + + "\x02CK\x02CD\x10EEEE, MMMM dd, y\x06Shalay\x06Maanta\x05Berri\x11Waqtiga" + + " Kolambiya!Waqtiyada Caadiga ah ee kolambiya\x1bWaqtiyada Xagaaga Kolamb" + + "iya\x11Waqtiga Galabagos\x0fEEEE, d MMM y G\x0d{1} 'në' {0}\x05janar\x06" + + "shkurt\x04mars\x05prill\x03maj\x07qershor\x06korrik\x05gusht\x07shtator" + + "\x05tetor\x07nëntor\x07dhjetor\x05Janar\x06Shkurt\x04Mars\x05Prill\x03Ma" + + "j\x07Qershor\x06Korrik\x05Gusht\x07Shtator\x05Tetor\x07Nëntor\x07Dhjetor" + + "\x03Die\x04Hën\x03Mar\x04Mër\x03Enj\x03Pre\x03Sht\x06e diel\x08e hënë" + + "\x08e martë\x0be mërkurë\x07e enjte\x08e premte\x09e shtunë\x06E diel" + + "\x08E hënë\x08E martë\x0bE mërkurë\x07E enjte\x08E premte\x09E shtunë" + + "\x0btremujori I\x0ctremujori II\x0dtremujori III\x0ctremujori IV\x11trem" + + "ujori i parë\x11tremujori i dytë\x12tremujori i tretë\x13tremujori i kat" + + "ërt\x0bTremujori I\x0cTremujori II\x0dTremujori III\x0cTremujori IV\x11" + + "Tremujori i 1-rë\x11Tremujori i 2-të\x11Tremujori i 3-të\x0fTremujori i " + + "4-t\x0be mesnatës\x0be paradites\x0be mesditës\x0ae pasdites\x0ce mëngje" + + "sit\x0be mbrëmjes\x08e natës\x08mesnatë\x08paradite\x08mesditë\x07pasdit" + + "e\x08mëngjes\x08mbrëmje\x05natë\x0dpara Krishtit\x10para erës sonë\x0dmb" + + "as Krishtit\x0berës sonë\x04p.K.\x06p.e.s.\x05mb.K.\x04e.s.\x0fh:mm:ss a" + + ", zzzz\x0ch:mm:ss a, z\x04erë\x03vit\x0evitin e kaluar\x0akëtë vit\x11vi" + + "tin e ardhshëm\x0cpas {0} viti\x10pas {0} vjetësh\x11{0} vit më parë\x12" + + "{0} vjet më parë\x08tremujor\x13tremujorin e kaluar\x0fkëtë tremujor\x16" + + "tremujorin e ardhshëm\x11pas {0} tremujori\x14pas {0} tremujorësh\x16{0}" + + " tremujor më parë\x18{0} tremujorë më parë\x04muaj\x0fmuajin e kaluar" + + "\x0bkëtë muaj\x12muajin e ardhshëm\x0dpas {0} muaji\x0epas {0} muajsh" + + "\x12{0} muaj më parë\x05javë\x0fjavën e kaluar\x0ckëtë javë\x11javën e a" + + "rdhshme\x0cpas {0} jave\x0fpas {0} javësh\x13{0} javë më parë\x0ajava e " + + "{0}\x05ditë\x03dje\x03sot\x06nesër\x0cpas {0} dite\x0fpas {0} ditësh\x13" + + "{0} ditë më parë\x0editë e javës\x14të dielën e kaluar\x0fkëtë të diel" + + "\x16të dielën e ardhshme\x11pas {0} të diele\x13pas {0} të dielash\x17{0" + + "} të diele më parë\x19{0} të dielash më parë\x14të hënën e kaluar\x11kët" + + "ë të hënë\x16të hënën e ardhshme\x11pas {0} të hëne\x13pas {0} të hënas" + + "h\x17{0} të hëne më parë\x19{0} të hënash më parë\x14të martën e kaluar" + + "\x11këtë të martë\x16të martën e ardhshme\x11pas {0} të marte\x13pas {0}" + + " të martash\x17{0} të marte më parë\x19{0} të martash më parë\x17të mërk" + + "urën e kaluar\x14këtë të mërkurë\x19të mërkurën e ardhshme\x14pas {0} të" + + " mërkure\x16pas {0} të mërkurash\x1a{0} të mërkure më parë\x1c{0} të mër" + + "kurash më parë\x13të enjten e kaluar\x10këtë të enjte\x15të enjten e ard" + + "hshme\x11pas {0} të enjte\x13pas {0} të enjtesh\x17{0} të enjte më parë" + + "\x19{0} të enjtesh më parë\x14të premten e kaluar\x11këtë të premte\x16t" + + "ë premten e ardhshme\x12pas {0} të premte\x14pas {0} të premtesh\x18{0}" + + " të premte më parë\x1a{0} të premtesh më parë\x15të shtunën e kaluar\x12" + + "këtë të shtunë\x17të shtunën e ardhshme\x12pas {0} të shtune\x14pas {0} " + + "të shtunash\x18{0} të shtune më parë\x1a{0} të shtunash më parë\x10parad" + + "ite/pasdite\x04orë\x0bkëtë orë\x0bpas {0} ore\x0epas {0} orësh\x12{0} or" + + "ë më parë\x07minutë\x0ekëtë minutë\x0epas {0} minute\x10pas {0} minutas" + + "h\x15{0} minutë më parë\x14{0} minuta më parë\x0cpas {0} min.\x12{0} min" + + ". më parë\x08sekondë\x04tani\x0fpas {0} sekonde\x11pas {0} sekondash\x16" + + "{0} sekondë më parë\x15{0} sekonda më parë\x0cpas {0} sek.\x12{0} sek. m" + + "ë parë\x0abrezi orar\x08Ora: {0}\x0fOra verore: {0}\x12Ora standarde: {" + + "0}\x1bOra universale e koordinuar\x14Ora verore britanike\x1aOra stranda" + + "rde e Irlandës\x12Ora e Ejkrit [Ako]\x1cOra standarde e Ejkrit [Ako]\x19" + + "Ora verore e Ejkrit [Ako]\x12Ora e Afganistanit\x17Ora e Afrikës Qendror" + + "e\x16Ora e Afrikës Lindore\x1fOra standarde e Afrikës Jugore\x1bOra e Af" + + "rikës Perëndimore%Ora standarde e Afrikës Perëndimore\x22Ora verore e Af" + + "rikës Perëndimore\x0eOra e Alaskës\x18Ora standarde e Alaskës\x16Ora ver" + + "ore e Alsaskës\x0dOra e Almatit\x17Ora standarde e Almatit\x14Ora verore" + + " e Almatit\x0fOra e Amazonës\x19Ora standarde e Amazonës\x16Ora verore e" + + " Amazonës\x17Ora e SHBA-së Qendrore!Ora standarde e SHBA-së Qendrore\x1e" + + "Ora verore e SHBA-së Qendrore\x16Ora e SHBA-së Lindore Ora standarde e S" + + "HBA-së Lindore\x1dOra verore e SHBA-së Lindore\x1cOra amerikane e Brezit" + + " Malor&Ora standarde amerikane e Brezit Malor#Ora verore amerikane e Bre" + + "zit Malor%Ora amerikane e Bregut të Paqësorit/Ora standarde amerikane e " + + "Bregut të Paqësorit,Ora verore amerikane e Bregut të Paqësorit\x0eOra e " + + "Anadirit\x18Ora standarde e Anadirit\x15Ora verore e Anadirit\x0bOra e A" + + "pias\x15Ora standarde e Apias\x12Ora verore e Apias\x0cOra e Aktaut\x16O" + + "ra standarde e Aktaut\x13Ora verore e Aktaut\x0dOra e Aktobit\x17Ora sta" + + "ndarde e Aktobit\x14Ora verore e Aktobit\x09Ora arabe\x13Ora standarde a" + + "rabe\x10Ora verore arabe\x12Ora e Argjentinës\x1cOra standarde e Argjent" + + "inës\x19Ora verore e Argjentinës\x1fOra e Argjentinës Perëndimore)Ora st" + + "andarde e Argjentinës Perëndimore&Ora verore e Argjentinës Perëndimore" + + "\x0fOra e Armenisë\x19Ora standarde e Armenisë\x16Ora verore e Armenisë" + + "\x10Ora e Atlantikut\x1aOra standarde e Atlantikut\x17Ora verore e Atlan" + + "tikut\x1aOra e Australisë Qendrore$Ora standarde e Australisë Qendrore!O" + + "ra verore e Australisë Qendrore'Ora e Australisë Qendroro-Perëndimore1Or" + + "a standarde e Australisë Qendroro-Perëndimore.Ora verore e Australisë Qe" + + "ndroro-Perëndimore\x19Ora e Australisë Lindore#Ora standarde e Australis" + + "ë Lindore Ora verore e Australisë Lindore\x1eOra e Australisë Perëndimo" + + "re(Ora standarde e Australisë Perëndimore%Ora verore e Australisë Perënd" + + "imore\x13Ora e Azerbajxhanit\x1dOra standarde e Azerbajxhanit\x1aOra ver" + + "ore e Azerbajxhanit\x0dOra e Azoreve\x17Ora standarde e Azoreve\x14Ora v" + + "erore e Azoreve\x12Ora e Bangladeshit\x1cOra standarde e Bangladeshit" + + "\x19Ora verore e Bangladeshit\x0dOra e Butanit\x0fOra e Bolivisë\x0fOra " + + "e Brasilës\x19Ora standarde e Brasilës\x16Ora verore e Brasilës\x18Ora e" + + " Brunei-Durasalamit\x18Ora e Kepit të Gjelbër\x22Ora standarde e Kepit t" + + "ë Gjelbër\x1fOra verore e Kepit të Gjelbër\x0cOra e Kejsit\x0eOra e Kam" + + "orros\x0dOra e Katamit\x17Ora standarde e Katamit\x14Ora verore e Katami" + + "t\x0bOra e Kilit\x15Ora standarde e Kilit\x12Ora verore e Kilit\x0cOra e" + + " Kinës\x16Ora standarde e Kinës\x13Ora verore e Kinës\x12Ora e Çoibalsan" + + "it\x1cOra standarde e Çoibalsanit\x19Ora verore e Çoibalsanit!Ora e Ishu" + + "llit të Krishtlindjeve\x13Ora e Ishujve Kokos\x10Ora e Kolumbisë\x1aOra " + + "standarde e Kolumbisë\x17Ora verore e Kolumbisë\x11Ora e Ishujve Kuk\x1b" + + "Ora standarde e Ishujve Kuk\x18Ora verore e Ishujve Kuk\x0cOra e Kubës" + + "\x16Ora standarde e Kubës\x13Ora verore e Kubës\x0eOra e Dejvisit\x19Ora" + + " e Dumont-d’Urvilës\x14Ora e Timorit Lindor\x1bOra e Ishullit të Pashkës" + + "%Ora standarde e Ishullit të Pashkës\x22Ora verore e Ishullit të Pashkës" + + "\x0fOra e Ekuadorit\x17Ora e Evropës Qendrore!Ora standarde e Evropës Qe" + + "ndrore\x1eOra verore e Evropës Qendrore\x16Ora e Evropës Lindore Ora sta" + + "ndarde e Evropës Lindore\x1dOra verore e Evropës Lindore\x22Ora e Evropë" + + "s së Largët Lindore\x1bOra e Evropës Perëndimore%Ora standarde e Evropës" + + " Perëndimore\x22Ora verore e Evropës Perëndimore\x16Ora e Ishujve Falkla" + + "nd Ora standarde e Ishujve Falkland\x1dOra verore e Ishujve Falkland\x0c" + + "Ora e Fixhit\x16Ora standarde e Fixhit\x13Ora verore e Fixhit\x18Ora e G" + + "uajanës Franceze0Ora e Territoreve Jugore dhe Antarktike Franceze\x11Ora" + + " e Galapagosit\x0fOra e Gambierit\x11Ora e Gjeorgjisë\x1bOra standarde e" + + " Gjeorgjisë\x18Ora verore e Gjeorgjisë\x15Ora e Ishujve Gilbert\x1fOra e" + + " Meridianit të Grinuiçit\x19Ora e Grenlandës Lindore#Ora standarde e Gre" + + "nlandës Lindore Ora verore e Grenlandës Lindore\x1eOra e Grenlandës Perë" + + "ndimore(Ora standarde e Grenlandës Perëndimore%Ora verore e Grenlandës P" + + "erëndimore\x0cOra e Guamit\x0cOra e Gjirit\x0fOra e Guajanës\x1cOra e Is" + + "hujve Hauai-Aleutian&Ora standarde e Ishujve Hauai-Aleutian#Ora verore e" + + " Ishujve Hauai-Aleutian\x11Ora e Hong-Kongut\x1bOra standarde e Hong-Kon" + + "gut\x18Ora verore e Hong-Kongut\x0cOra e Hovdit\x16Ora standarde e Hovdi" + + "t\x13Ora verore e Hovdit\x17Ora standarde e Indisë\x14Ora e Oqeanit Indi" + + "an\x10Ora e Indokinës\x1aOra e Indonezisë Qendrore\x19Ora e Indonezisë L" + + "indore\x1eOra e Indonezisë Perëndimore\x0cOra e Iranit\x16Ora standarde " + + "e Iranit\x13Ora verore e Iranit\x0fOra e Irkutskut\x19Ora standarde e Ir" + + "kutskut\x16Ora verore e Irkutskut\x0eOra e Izraelit\x18Ora standarde e I" + + "zraelit\x15Ora verore e Izraelit\x0fOra e Japonisë\x19Ora standarde e Ja" + + "ponisë\x16Ora verore e Japonisë Ora e Petropavllovsk-Kamçatkës*Ora stand" + + "arde e Petropavllovsk-Kamçatkës'Ora verore e Petropavllovsk-Kamçatkës" + + "\x19Ora e Kazakistanit Lindor\x1eOra e Kazakistanit Perëndimor\x0bOra ko" + + "reane\x15Ora standarde koreane\x12Ora verore koreane\x0dOra e Kosrës\x13" + + "Ora e Krasnojarskut\x1dOra standarde e Krasnojarskut\x1aOra verore e Kra" + + "snojarskut\x11Ora e Kirgistanit\x0eOra e Lankasë%Ora e Ishujve Sporadikë" + + " Ekuatorialë\x10Ora e Lord-Houit\x1aOra standarde e Lord-Houit\x17Ora ve" + + "rore e Lord-Houit\x0cOra e Makaos\x16Ora standarde e Makaos\x13Ora veror" + + "e e Makaos\x16Ora e Ishullit Makuari\x0fOra e Magadanit\x19Ora standarde" + + " e Magadanit\x16Ora verore e Magadanit\x10Ora e Malajzisë\x0eOra e Maldi" + + "vit\x16Ora e Ishujve Markezë\x18Ora e Ishujve Marshallë\x11Ora e Mauriti" + + "usit\x1bOra standarde e Mauritiusit\x18Ora verore e Mauritiusit\x0eOra e" + + " Mausonit Ora e Meksikës Veriperëndimore*Ora standarde e Meksikës Veripe" + + "rëndimore'Ora verore e Meksikës Veriperëndimore%Ora meksikane e Bregut t" + + "ë Paqësorit/Ora standarde meksikane e Bregut të Paqësorit,Ora verore me" + + "ksikane e Bregut të Paqësorit\x12Ora e Ulan-Batorit\x1cOra standarde e U" + + "lan-Batorit\x19Ora verore e Ulan-Batorit\x0dOra e Moskës\x17Ora standard" + + "e e Moskës\x14Ora verore e Moskës\x0fOra e Mianmarit\x0eOra e Naurusë" + + "\x0dOra e Nepalit\x18Ora e Kaledonisë së Re\x22Ora standarde e Kaledonis" + + "ë së Re\x1fOra verore e Kaledonisë së Re\x16Ora e Zelandës së Re Ora st" + + "andarde e Zelandës së Re\x1dOra verore e Zelandës së Re$Ora e Njufaundle" + + "ndit [Tokës së Re].Ora standarde e Njufaundlendit [Tokës së Re]+Ora vero" + + "re e Njufaundlendit [Tokës së Re]\x0dOra e Niuesë\x16Ora e Ishullit Norf" + + "olk\x1bOra e Fernando-de-Noronjës%Ora standarde e Fernando-de-Noronjës" + + "\x22Ora verore e Fernando-de-Noronjës&Ora e Ishujve të Marianës së Veriu" + + "t\x13Ora e Novosibirskut\x1dOra standarde e Novosibirskut\x1aOra verore " + + "e Novosibirskut\x0cOra e Omskut\x16Ora standarde e Omskut\x13Ora verore " + + "e Omskut\x10Ora e Pakistanit\x1aOra standarde e Pakistanit\x17Ora verore" + + " e Pakistanit\x0cOra e Palaut\x1bOra e Papua-Guinesë së Re\x0fOra e Para" + + "guait\x19Ora standarde e Paraguait\x16Ora Verore e Paraguait\x0dOra e Pe" + + "rusë\x17Ora standarde e Perusë\x14Ora verore e Perusë\x10Ora e Filipinev" + + "e\x1aOra standarde e Filipineve\x17Ora verore e Filipineve\x14Ora e Ishu" + + "jve Feniks\x1dOra e Shën-Pier dhe Mikuelon'Ora standarde e Shën-Pier dhe" + + " Mikuelon$Ora verore e Shën-Pier dhe Mikuelon\x0fOra e Pitkernit\x0eOra " + + "e Ponapeit\x0eOra e Penianit\x10Ora e Kizilordit\x1aOra standarde e Kizi" + + "lordit\x17Ora verore e Kizilordit\x0fOra e Reunionit\x0fOra e Rodherës" + + "\x0fOra e Sakalinit\x19Ora standarde e Sakalinit\x16Ora verore e Sakalin" + + "it\x0eOra e Samarës\x18Ora standarde e Samarës\x15Ora verore e Samarës" + + "\x0cOra e Samoas\x16Ora standarde e Samoas\x13Ora verore e Samoas\x0fOra" + + " e Sishelës\x10Ora e Singaporit\x15Ora e Ishujve Solomon\x18Ora e Xhorxh" + + "as të Jugut\x0fOra e Surinamit\x0cOra e Sjouit\x0dOra e Tahitit\x0dOra e" + + " Tajpeit\x17Ora standarde e Tajpeit\x14Ora verore e Tajpeit\x13Ora e Tax" + + "hikistanit\x0eOra e Tokelaut\x0dOra e Tongës\x17Ora standarde e Tongës" + + "\x14Ora verore e Tongës\x0cOra e Çukut\x14Ora e Turkmenistanit\x1eOra st" + + "andarde e Turkmenistanit\x1bOra verore e Turkmenistanit\x0fOra e Tuvalus" + + "ë\x0eOra e Uruguait\x18Ora standarde e Uruguait\x15Ora verore e Uruguai" + + "t\x12Ora e Uzbekistanit\x1cOra standarde e Uzbekistanit\x19Ora verore e " + + "Uzbekistanit\x10Ora e Vanuatusë\x1aOra standarde e Vanuatusë\x17Ora vero" + + "re e Vanuatusë\x11Ora e Venezuelës\x13Ora e Vladivostokut\x1dOra standar" + + "de e Vladivostokut\x1aOra verore e Vladivostokut\x11Ora e Volgogradit" + + "\x1bOra standarde e Volgogradit\x18Ora verore e Volgogradit\x0eOra e Vos" + + "tokut\x13Ora e Ishullit Uejk\x1bOra e Uollisit dhe Futunës\x0fOra e Jaku" + + "tskut\x19Ora standarde e Jakutskut\x16Ora verore e Jakutskut\x14Ora e Ek" + + "aterinburgut\x1eOra standarde e Ekaterinburgut\x1bOra verore e Ekaterinb" + + "urgut" + +var bucket92 string = "" + // Size: 14219 bytes + "\x09d.MM.y. G\x04не\x04по\x04ут\x04ср\x04че\x04пе\x04су\x17први квартал" + + "\x19други квартал\x19трећи квартал\x1dчетврти квартал\x0aпоноћ\x0aподне" + + "\x0fпо подне\x0cујутро\x0aувече\x08ноћу\x0dу поноћ\x0dу подне\x0cујутру" + + "\x0aјутро\x08вече\x06ноћ\x16пре нове ере\x0fнове ере\x19прошле године" + + "\x13ове године\x1bследеће године\x10за {0} год.\x12пре {0} год.\x0cза {0" + + "} г.\x0eпре {0} г.\x1fпрошлог квартала\x19овог квартала!следећег квартал" + + "а\x17за {0} квартал\x19за {0} квартала\x1bпре {0} квартала\x0eза {0} кв" + + ".\x10пре {0} кв.\x1bпрошлог месеца\x15овог месеца\x1dследећег месеца\x10" + + "за {0} мес.\x12пре {0} мес.\x0cза {0} м.\x0eпре {0} м.\x19прошле недеље" + + "\x13ове недеље\x1bследеће недеље'недеља која почиње {0}.\x10за {0} нед." + + "\x12пре {0} нед.\x03н.\x0cза {0} н.\x0eпре {0} н.\x0cза {0} д.\x0eпре {0" + + "} д.\x0fу недељу\x13прошле нед\x09у нед\x15следеће нед!прошлог понедељка" + + "\x15у понедељак#следећег понедељка\x1bза {0} понедељак\x1bза {0} понедељ" + + "ка\x1dза {0} понедељака\x1dпре {0} понедељка\x1fпре {0} понедељака\x15п" + + "рошлог пон\x09у пон\x17следећег пон\x1aза {0} понедељкa\x1bпрошлог утор" + + "ка\x0fу уторак\x1dследећег уторка\x15за {0} уторак\x15за {0} уторка\x17" + + "за {0} уторака\x17пре {0} уторка\x19пре {0} уторака\x15прошлог уто\x09у" + + " уто\x17следећег уто\x17прошле среде\x0dу среду\x19следеће среде\x13за {" + + "0} среду\x13за {0} среде\x13за {0} среда\x15пре {0} среде\x15пре {0} сре" + + "да\x13прошле сре\x09у сре\x15следеће сре\x1fпрошлог четвртка\x13у четвр" + + "так!следећег четвртка\x19за {0} четвртак\x19за {0} четвртка\x1bза {0} ч" + + "етвртака\x1bпре {0} четвртка\x1dпре {0} четвртака\x15прошлог чет\x09у ч" + + "ет\x17следећег чет\x19прошлог петка\x0dу петак\x1bследећег петка\x13за " + + "{0} петак\x13за {0} петка\x15за {0} петака\x15пре {0} петка\x17пре {0} п" + + "етака\x15прошлог пет\x09у пет\x17следећег пет\x19прошле суботе\x0fу суб" + + "оту\x1bследеће суботе\x15за {0} суботу\x15за {0} суботе\x15за {0} субот" + + "а\x17пре {0} суботе\x17пре {0} субота\x13прошле суб\x09у суб\x15следеће" + + " суб!пре подне/по подне\x06сат\x11овог сата\x0cза {0} ч.\x0eпре {0} ч." + + "\x15овог минута\x10за {0} мин.\x12пре {0} мин.\x08сада\x17за {0} секунду" + + "\x17за {0} секунде\x17за {0} секунди\x10за {0} сек.\x12пре {0} сек.\x03с" + + ".\x0cза {0} с.\x0eпре {0} с.:Координисано универзално време=Британија ле" + + "тње рачунање времена*Ирска стандардно време\x0eнедјеља\x12понедељак\x0c" + + "уторак\x0eсриједа\x10четвртак\x0aпетак\x0cсубота\x15прије подне\x0cпо п" + + "од.\x1aприје нове ере\x04Taut\x04Baba\x05Hator\x05Kiahk\x04Toba\x06Amši" + + "r\x08Baramhat\x08Baramuda\x07Bašans\x05Paona\x04Epep\x05Mesra\x04Nasi" + + "\x0cprvi kvartal\x0ddrugi kvartal\x0etreći kvartal\x10četvrti kvartal" + + "\x09pre podne\x08po podne\x06uveče\x08u ponoć\x07u podne\x06ujutru\x05ve" + + "če\x04noć\x0cpre nove ere\x08nove ere\x06Tišri\x07Hešvan\x06Kislev\x05T" + + "evet\x06Ševat\x06Adar I\x04Adar\x07Adar II\x05Nisan\x04Ijar\x05Sivan\x05" + + "Tamuz\x02Av\x04Elul\x07Čaitra\x07Vaisaka\x07Jiaista\x05Asada\x07Sravana" + + "\x05Badra\x06Asvina\x07Kartika\x08Argajana\x05Pauza\x04Maga\x07Falguna" + + "\x07Muraham\x05Safar\x08Rabiʻ I\x09Rabiʻ II\x08Jumada I\x09Jumada II\x06" + + "Rađab\x08Šaʻban\x07Ramadan\x06Šaval\x0cDuʻl-Kiʻda\x0bDuʻl-hiđa\x07Muhare" + + "m\x05Safer\x06Rebi 1\x06Rebi 2\x0aDžumade 1\x0aDžumade 2\x07Redžeb\x07Ra" + + "mazan\x06Ševal\x08Zul-kade\x0aZul-hidže\x09Faravadin\x0bOrdibehešt\x06Ko" + + "rdad\x03Tir\x06Mordad\x09Šahrivar\x04Mehr\x04Aban\x04Azar\x03Dej\x06Bahm" + + "an\x06Esfand\x06Pre RK\x02RK\x0epre {0} godine\x0epre {0} godina\x0cpre " + + "{0} god.\x0apre {0} g.\x11prošlog kvartala\x0dovog kvartala\x12sledećeg " + + "kvartala\x10pre {0} kvartala\x0bpre {0} kv.\x0fprošlog meseca\x0bovog me" + + "seca\x10sledećeg meseca\x0cza {0} mesec\x0dza {0} meseca\x0dza {0} mesec" + + "i\x0epre {0} meseca\x0epre {0} meseci\x0bza {0} mes.\x0cpre {0} mes.\x09" + + "za {0} m.\x0apre {0} m.\x0fprošle nedelje\x0bove nedelje\x10sledeće nede" + + "lje\x0eza {0} nedelju\x0eza {0} nedelje\x0eza {0} nedelja\x0fpre {0} ned" + + "elje\x0fpre {0} nedelja\x1anedelja koja počinje {0}.\x0bza {0} ned.\x0cp" + + "re {0} ned.\x09za {0} n.\x0apre {0} n.\x09prekjuče\x05juče\x05danas\x05s" + + "utra\x0aprekosutra\x0cpre {0} dana\x0apre {0} d.\x0ddan u nedelji\x09u n" + + "edelju\x0bprošle ned\x05u ned\x0csledeće ned\x13prošlog ponedeljka\x0cu " + + "ponedeljak\x14sledećeg ponedeljka\x11za {0} ponedeljak\x11za {0} ponedel" + + "jka\x12za {0} ponedeljaka\x12pre {0} ponedeljka\x13pre {0} ponedeljaka" + + "\x0cprošlog pon\x05u pon\x0dsledećeg pon\x0fprošlog utorka\x08u utorak" + + "\x10sledećeg utorka\x0epre {0} utorka\x0fpre {0} utoraka\x0cprošlog uto" + + "\x05u uto\x0dsledećeg uto\x0dprošle srede\x07u sredu\x0esledeće srede" + + "\x0cza {0} sredu\x0cza {0} srede\x0cza {0} sreda\x0dpre {0} srede\x0dpre" + + " {0} sreda\x0bprošle sre\x05u sre\x0csledeće sre\x12prošlog četvrtka\x0b" + + "u četvrtak\x13sledećeg četvrtka\x11pre {0} četvrtka\x12pre {0} četvrtaka" + + "\x0dprošlog čet\x06u čet\x0esledećeg čet\x0eprošlog petka\x07u petak\x0f" + + "sledećeg petka\x0dpre {0} petka\x0epre {0} petaka\x0cprošlog pet\x05u pe" + + "t\x0dsledećeg pet\x0eprošle subote\x08u subotu\x0fsledeće subote\x0epre " + + "{0} subote\x0epre {0} subota\x0bprošle sub\x05u sub\x0csledeće sub\x12pr" + + "e podne/po podne\x09ovog sata\x0cpre {0} sata\x0cpre {0} sati\x03č.\x0az" + + "a {0} č.\x0bpre {0} č.\x0bovog minuta\x0epre {0} minuta\x0cpre {0} min." + + "\x0fpre {0} sekunde\x0fpre {0} sekundi\x0cpre {0} sek.\x09za {0} s.\x0ap" + + "re {0} s.\x1eKoordinisano univerzalno vreme#Britanija letnje računanje v" + + "remena\x16Irska standardno vreme\x0aAkre vreme\x15Akre standardno vreme" + + "\x1eAkre letnje računanje vremena\x10Avganistan vreme\x18Centralno-afrič" + + "ko vreme\x17Istočno-afričko vreme\x15Južno-afričko vreme\x16Zapadno-afri" + + "čko vreme!Zapadno-afričko standardno vreme*Zapadno-afričko letnje račun" + + "anje vremena\x07Aljaska\x19Aljaska, standardno vreme\x22Aljaska, letnje " + + "računanje vremena\x0cAlmati vreme\x17Almati standardno vreme Almati letn" + + "je računanje vremena\x0cAmazon vreme\x17Amazon standardno vreme Amazon l" + + "etnje računanje vremena Severnoameričko centralno vreme+Severnoameričko " + + "centralno standardno vreme'Severnoameričko centralno letnje vreme\x1fSev" + + "ernoameričko istočno vreme*Severnoameričko istočno standardno vreme&Seve" + + "rnoameričko istočno letnje vreme Severnoameričko planinsko vreme+Severno" + + "američko planinsko standardno vreme'Severnoameričko planinsko letnje vre" + + "me!Severnoameričko pacifičko vreme,Severnoameričko pacifičko standardno " + + "vreme(Severnoameričko pacifičko letnje vreme\x0cAnadir vreme\x17Anadir s" + + "tandardno vreme Anadir letnje računanje vremena\x0bApija vreme\x16Apija " + + "standardno vreme\x1fApija letnje računanje vremena\x0dAkvatau vreme\x18A" + + "kvatau standardno vreme!Akvatau letnje računanje vremena\x0dAkutobe vrem" + + "e\x18Akutobe standardno vreme!Akutobe letnje računanje vremena\x0fArabij" + + "sko vreme\x1aArabijsko standardno vreme#Arabijsko letnje računanje vreme" + + "na\x0fArgentina vreme\x1aArgentina standardno vreme#Argentina letnje rač" + + "unanje vremena\x17Zapadna Argentina vreme\x22Zapadna Argentina standardn" + + "o vreme+Zapadna Argentina letnje računanje vremena\x0fJermenija vreme" + + "\x1aJermenija standardno vreme#Jermenija letnje računanje vremena\x0fAtl" + + "antsko vreme\x1aAtlantsko standardno vreme#Atlantsko letnje računanje vr" + + "emena\x1cAustralijsko centralno vreme'Australijsko centralno standardno " + + "vreme0Australijsko centralno letnje računanje vremena$Australijsko centr" + + "alno zapadno vreme/Australijsko centralno zapadno standardno vreme8Austr" + + "alijsko centralno zapadno letnje računanje vremena\x1bAustralijsko istoč" + + "no vreme&Australijsko istočno standardno vreme/Australijsko istočno letn" + + "je računanje vremena\x1aAustralijsko zapadno vreme%Australijsko zapadno " + + "standardno vreme.Australijsko zapadno letnje računanje vremena\x12Azerbe" + + "jdžan vreme\x1dAzerbejdžan standardno vreme&Azerbejdžan letnje računanje" + + " vremena\x0bAzori vreme\x16Azori standardno vreme\x1fAzori letnje računa" + + "nje vremena\x10Bangladeš vreme\x1bBangladeš standardno vreme$Bangladeš l" + + "etnje računanje vremena\x0bButan vreme\x0eBolivija vreme\x0fBrazilija vr" + + "eme\x1aBrazilija standardno vreme#Brazilija letnje računanje vremena\x16" + + "Brunej Darusalum vreme\x18Zelenortska Ostrva vreme#Zelenortska Ostrva st" + + "andardno vreme,Zelenortska Ostrva letnje računanje vremena\x0dČamoro vre" + + "me\x0cČatam vreme\x17Čatam standardno vreme Čatam letnje računanje vreme" + + "na\x0bČile vreme\x16Čile standardno vreme\x1fČile letnje računanje vreme" + + "na\x0aKina vreme\x18Kinesko standardno vreme\x1eKina letnje računanje vr" + + "emena\x10Čojbalsan vreme\x1bČojbalsan standardno vreme$Čojbalsan letnje " + + "računanje vremena\x16Božićno ostrvo vreme\x1bKokos (Keling) Ostrva vreme" + + "\x0fKolumbija vreme\x1aKolumbija standardno vreme#Kolumbija letnje račun" + + "anje vremena\x13Kukova ostrva vreme\x1eKukova ostrva standardno vreme,Ku" + + "kova ostrva polu-letnje računanje vremena\x0aKuba vreme\x15Kuba standard" + + "no vreme\x1eKuba letnje računanje vremena\x0cDejvis vreme\x15Dimon d’Urv" + + "il vreme\x14Istočni timor vreme\x16Uskršnja ostrva vreme!Uskršnja ostrva" + + " standardno vreme*Uskršnja ostrva letnje računanje vremena\x0dEkvador vr" + + "eme\x15Srednjeevropsko vreme Srednjeevropsko standardno vreme)Srednjeevr" + + "opsko letnje računanje vremena\x16Istočnoevropsko vreme!Istočnoevropsko " + + "standardno vreme*Istočnoevropsko letnje računanje vremena\x12dalji istok" + + " Evrope\x15Zapadnoevropsko vreme Zapadnoevropsko standardno vreme)Zapadn" + + "oevropsko letnje računanje vremena\x18Folklandska Ostrva vreme#Folklands" + + "ka Ostrva standardno vreme,Folklandska Ostrva letnje računanje vremena" + + "\x0cFidži vreme\x17Fidži standardno vreme Fidži letnje računanje vremena" + + "\x17Francuska Gvajana vreme%Francusko južno i antarktičko vreme\x0fGalap" + + "agos vreme\x0dGambije vreme\x0dGruzija vreme\x18Gruzija standardno vreme" + + "!Gruzija letnje računanje vremena\x14Gilbert ostrva vreme\x19Srednje vre" + + "me po Griniču\x17Istočni Grenland vreme\x22Istočni Grenland standardno v" + + "reme+Istočni Grenland letnje računanje vremena\x16Zapadni Grenland vreme" + + "!Zapadni Grenland standardno vreme*Zapadni Grenland letnje računanje vre" + + "mena\x15Guam standardno vreme\x0eZalivsko vreme\x0dGvajana vreme\x17Hava" + + "jsko-aleutsko vreme\x22Havajsko-aleutsko standardno vreme+Havajsko-aleut" + + "sko letnje računanje vremena\x0fHong Kong vreme\x1aHong Kong standardno " + + "vreme#Hong Kong letnje računanje vremena\x0aHovd vreme\x15Hovd standardn" + + "o vreme\x1eHovd letnje računanje vremena\x19Indijsko standardno vreme" + + "\x17Indijsko okeansko vreme\x0eIndokina vreme\x1cCentralno-indonezijsko " + + "vreme\x1bIstočno-indonezijsko vreme\x1aZapadno-indonezijsko vreme\x0aIra" + + "n vreme\x15Iran standardno vreme\x1eIran letnje računanje vremena\x0cIrk" + + "uck vreme\x17Irkuck standardno vreme Irkuck letnje računanje vremena\x0f" + + "Izraelsko vreme\x1aIzraelsko standardno vreme#Izraelsko letnje računanje" + + " vremena\x0eJapansko vreme\x19Japansko standardno vreme\x22Japansko letn" + + "je računanje vremena\x1fPetropavlovsko-kamčatsko vreme*Petropavlovsko-ka" + + "mčatsko standardno vreme3Petropavlovsko-kamčatsko letnje računanje vreme" + + "na\x1bIstočno-kazahstansko vreme\x1aZapadno-kazahstansko vreme\x0eKorejs" + + "ko vreme\x19Korejsko standardno vreme\x22Korejsko letnje računanje vreme" + + "na\x0cKošre vreme\x11Krasnojarsk vreme\x1cKrasnojarsk standardno vreme%K" + + "rasnojarsk letnje računanje vremena\x0fKirgistan vreme\x10Šri Lanka vrem" + + "e\x11Ostrva Lajn vreme\x0eLord Hov vreme\x19Lord Hov standardno vreme" + + "\x22Lord Hov letnje računanje vremena\x0bMakao vreme\x16Makao standardno" + + " vreme\x1fMakao letnje računanje vremena\x14Ostrvo Makveri vreme\x0dMaga" + + "dan vreme\x18Magadan standardno vreme!Magadan letnje računanje vremena" + + "\x0eMalezija vreme\x0dMaldivi vreme\x0cMarkiz vreme\x17Maršalska Ostrva " + + "vreme\x10Mauricijus vreme\x1bMauricijus standardno vreme$Mauricijus letn" + + "je računanje vremena\x0bMoson vreme\x15Severozapadni Meksiko&Severozapad" + + "ni Meksiko standardno vreme/Severozapadni Meksiko letnje računanje vreme" + + "na\x11Meksički Pacifik\x22Meksički Pacifik standardno vreme+Meksički Pac" + + "ifik letnje računanje vremena\x10Ulan Bator vreme\x1bUlan Bator standard" + + "no vreme$Ulan Bator letnje računanje vremena\x0cMoskva vreme\x17Moskva s" + + "tandardno vreme Moskva letnje računanje vremena\x0eMijanmar vreme\x0bNau" + + "ru vreme\x0bNepal vreme\x15Nova Kaledonija vreme Nova Kaledonija standar" + + "dno vreme)Nova Kaledonija letnje računanje vremena\x11Novi Zeland vreme" + + "\x1cNovi Zeland standardno vreme%Novi Zeland letnje računanje vremena" + + "\x12Njufaundlend vreme\x1dNjufaundlend standardno vreme&Njufaundlend let" + + "nje računanje vremena\x0aNiue vreme\x14Norfolk Ostrvo vreme\x19Fernando " + + "de Noronja vreme$Fernando de Noronja standardno vreme-Fernando de Noronj" + + "a letnje računanje vremena\x1fSeverna Marijanska Ostrva vreme\x11Novosib" + + "irsk vreme\x1cNovosibirsk standardno vreme%Novosibirsk letnje računanje " + + "vremena\x0aOmsk vreme\x15Omsk standardno vreme\x1eOmsk letnje računanje " + + "vremena\x0ePakistan vreme\x19Pakistan standardno vreme\x22Pakistan letnj" + + "e računanje vremena\x0bPalau vreme\x18Papua Nova Gvineja vreme\x0eParagv" + + "aj vreme\x19Paragvaj standardno vreme\x22Paragvaj letnje računanje vreme" + + "na\x0aPeru vreme\x15Peru standardno vreme\x1ePeru letnje računanje vreme" + + "na\x0eFilipini vreme\x19Filipini standardno vreme\x22Filipini letnje rač" + + "unanje vremena\x13Feniks ostrva vreme\x18Sen Pjer i Mikelon vreme#Sen Pj" + + "er i Mikelon standardno vreme,Sen Pjer i Mikelon letnje računanje vremen" + + "a\x0dPitkern vreme\x0cPonpej vreme\x12Pjongjanško vreme\x0fKizilorda vre" + + "me\x1aKizilorda standardno vreme#Kizilorda letnje računanje vremena\x0dR" + + "einion vreme\x0cRotera vreme\x0dSahalin vreme\x18Sahalin standardno vrem" + + "e!Sahalin letnje računanje vremena\x0cSamara vreme\x17Samara standardno " + + "vreme Samara letnje računanje vremena\x0bSamoa vreme\x16Samoa standardno" + + " vreme\x1fSamoa letnje računanje vremena\x0eSejšeli vreme\x19Singapur st" + + "andardno vreme\x17Solomonska Ostrva vreme\x18Južna Džordžija vreme\x0dSu" + + "rinam vreme\x0bŠova vreme\x0cTahiti vreme\x0cTajpej vreme\x17Tajpej stan" + + "dardno vreme\x13Tajpej letnje vreme\x12Tadžikistan vreme\x0dTokelau vrem" + + "e\x0bTonga vreme\x16Tonga standardno vreme\x1fTonga letnje računanje vre" + + "mena\x0bČuuk vreme\x12Turkmenistan vreme\x1dTurkmenistan standardno vrem" + + "e&Turkmenistan letnje računanje vremena\x0cTuvalu vreme\x0dUrugvaj vreme" + + "\x18Urugvaj standardno vreme!Urugvaj letnje računanje vremena\x10Uzbekis" + + "tan vreme\x1bUzbekistan standardno vreme$Uzbekistan letnje računanje vre" + + "mena\x0dVanuatu vreme\x18Vanuatu standardno vreme!Vanuatu letnje računan" + + "je vremena\x0fVenecuela vreme\x11Vladivostok vreme\x1cVladivostok standa" + + "rdno vreme%Vladivostok letnje računanje vremena\x0fVolgograd vreme\x1aVo" + + "lgograd standardno vreme#Volgograd letnje računanje vremena\x0cVostok vr" + + "eme\x11Vejk ostrvo vreme\x1bValis i Futuna Ostrva vreme\x0dJakutsk vreme" + + "\x18Jakutsk standardno vreme!Jakutsk letnje računanje vremena\x13Jekater" + + "inburg vreme\x1eJekaterinburg standardno vreme'Jekaterinburg letnje raču" + + "nanje vremena\x0a+{0} дн." + +var bucket93 string = "" + // Size: 10123 bytes + "\x0bprije podne\x07po pod.\x10första månaden\x0eandra månaden\x0ftredje " + + "månaden\x10fjärde månaden\x0efemte månaden\x10sjätte månaden\x0fsjunde m" + + "ånaden\x11åttonde månaden\x0fnionde månaden\x0ftionde månaden\x0eelfte " + + "månaden\x0ftolfte månaden\x04sön\x04mån\x03tis\x03ons\x04tors\x03fre\x04" + + "lör\x03sö\x03må\x02ti\x02on\x02to\x02fr\x03lö\x07söndag\x07måndag\x06tis" + + "dag\x06onsdag\x07torsdag\x06fredag\x07lördag\x0d1:a kvartalet\x0d2:a kva" + + "rtalet\x0d3:e kvartalet\x0d4:e kvartalet\x02fm\x02em\x09på morg.\x0apå f" + + "örm.\x0bpå efterm.\x0cpå kvällen\x0apå natten\x0cpå morgonen\x10på förm" + + "iddagen\x11på eftermiddagen\x06morgon\x06förm.\x07efterm.\x06kväll\x0afö" + + "rmiddag\x0dföre Kristus!före västerländsk tideräkning\x0defter Kristus" + + "\x1bvästerländsk tideräkning\x07tishrí\x08heshván\x07kislév\x06tevét\x07" + + "shevát\x07adár I\x05adár\x08adár II\x06nisán\x06ijjár\x06siván\x07tammúz" + + "\x02ab\x05elúl\x07Tishrí\x08Heshván\x07Kislév\x06Tevét\x07Shevát\x07Adár" + + " I\x05Adár\x08Adár II\x06Nisán\x06Ijjár\x06Siván\x07Tammúz\x02Ab\x05Elúl" + + "\x09Saka-eran\x0aföre R.K.\x04R.K.\x06i fjol\x05i år\x0anästa år\x12för " + + "{0} år sedan\x0a−{0} år\x10förra kvartalet\x0ddetta kvartal\x0enästa kva" + + "rtal\x16för {0} kvartal sedan\x0aförra kv.\x09detta kv.\x0anästa kv.\x12" + + "för {0} kv. sedan\x09−{0} kv\x0fförra månaden\x0cdenna månad\x0dnästa må" + + "nad\x0dom {0} månad\x0fom {0} månader\x15för {0} månad sedan\x17för {0} " + + "månader sedan\x0cförra mån.\x0bdenna mån.\x0cnästa mån.\x0com {0} mån." + + "\x14för {0} mån. sedan\x0a+{0} mån.\x0b−{0} mån\x05vecka\x0dförra veckan" + + "\x0bdenna vecka\x0cnästa vecka\x0com {0} vecka\x0dom {0} veckor\x14för {" + + "0} vecka sedan\x15för {0} veckor sedan\x0fveckan för {0}\x09förra v.\x08" + + "denna v.\x09nästa v.\x09om {0} v.\x11för {0} v. sedan\x07+{0} v.\x08−{0}" + + " v\x0bi förrgår\x06i går\x05i dag\x08i morgon\x0di övermorgon\x12för {0}" + + " dag sedan\x14för {0} dagar sedan\x08om {0} d\x10för {0} d sedan\x12för" + + "\u00a0{0}\u00a0d sedan\x08−{0} d\x08veckodag\x15söndag förra veckan\x13s" + + "öndag denna vecka\x14söndag nästa vecka\x0eom {0} söndag\x10om {0} sönd" + + "agar\x16för {0} söndag sedan\x18för {0} söndagar sedan\x13sön. förra vec" + + "kan\x11sön. denna vecka\x12sön. nästa vecka\x0com {0} sön.\x12för {0} sö" + + "n. sen\x0cförra sön.\x0bdenna sön.\x0cnästa sön.\x09+{0} sön\x0b−{0} sön" + + "\x15måndag förra veckan\x13måndag denna vecka\x14måndag nästa vecka\x0eo" + + "m {0} måndag\x10om {0} måndagar\x16för {0} måndag sedan\x18för {0} månda" + + "gar sedan\x13mån. förra veckan\x11mån. denna vecka\x12mån. nästa vecka" + + "\x0dom {0} månd.\x13för {0} månd. sen\x09+{0} må.\x0c–{0} månd\x14tisdag" + + " förra veckan\x12tisdag denna vecka\x13tisdag nästa vecka\x0dom {0} tisd" + + "ag\x0fom {0} tisdagar\x15för {0} tisdag sedan\x17för {0} tisdagar sedan" + + "\x12tis. förra veckan\x10tis. denna vecka\x11tis. nästa vecka\x0bom {0} " + + "tis.\x11för {0} tis. sen\x0bförra tis.\x0adenna tis.\x0bnästa tis.\x08+{" + + "0} tis\x0a−{0} tis\x14onsdag förra veckan\x12onsdag denna vecka\x13onsda" + + "g nästa vecka\x15för {0} onsdag sedan\x17för {0} onsdagar sedan\x12ons. " + + "förra veckan\x10ons. denna vecka\x11ons. nästa vecka\x11för {0} ons. sen" + + "\x0bförra ons.\x0adenna ons.\x0bnästa ons.\x08+{0} ons\x0a−{0} ons\x15to" + + "rsdag förra veckan\x13torsdag denna vecka\x14torsdag nästa vecka\x16för " + + "{0} torsdag sedan\x18för {0} torsdagar sedan\x13tors. förra veckan\x11to" + + "rs. denna vecka\x12tors. nästa vecka\x0com {0} tors.\x12för {0} tors. se" + + "n\x0cförra tors.\x0bdenna tors.\x0cnästa tors.\x09+{0} tors\x0b−{0} tors" + + "\x14fredag förra veckan\x12fredag denna vecka\x13fredag nästa vecka\x15f" + + "ör {0} fredag sedan\x17för {0} fredagar sedan\x12fre. förra veckan\x10f" + + "re. denna vecka\x11fre. nästa vecka\x11för {0} fre. sen\x12för {0} fred." + + " sen\x0bförra fre.\x0adenna fre.\x0bnästa fre.\x08+{0} fre\x0a−{0} fre" + + "\x15lördag förra veckan\x13lördag denna vecka\x14lördag nästa vecka\x0eo" + + "m {0} lördag\x10om {0} lördagar\x16för {0} lördag sedan\x18för {0} lörda" + + "gar sedan\x13lör. förra veckan\x11lör. denna vecka\x12lör. nästa vecka" + + "\x0com {0} lör.\x12för {0} lör. sen\x0cförra lör.\x0bdenna lör.\x0cnästa" + + " lör.\x09+{0} lör\x0b−{0} lör\x05fm/em\x05timme\x0bdenna timme\x0com {0}" + + " timme\x0dom {0} timmar\x14för {0} timme sedan\x15för {0} timmar sedan" + + "\x03tim\x0aom {0} tim\x12för {0} tim sedan\x08−{0} h\x0bdenna minut\x14f" + + "ör {0} minut sedan\x16för {0} minuter sedan\x0bom\u00a0{0} min\x13för" + + "\u00a0{0} min sedan\x0a−{0} min\x15för {0} sekund sedan\x17för {0} sekun" + + "der sedan\x0bom\u00a0{0} sek\x0aom {0} sek\x13för\u00a0{0} sek sedan\x08" + + "−{0} s\x07tidszon\x06{0}tid\x0f{0} (sommartid)\x0f{0} (normaltid)\x1aK" + + "oordinerad universell tid\x12brittisk sommartid\x13irländsk sommartid" + + "\x0bHonolulutid\x11Honolulunormaltid\x11Honolulusommartid\x14västbrasili" + + "ansk tid\x1avästbrasiliansk normaltid\x1avästbrasiliansk sommartid\x0caf" + + "ghansk tid\x14centralafrikansk tid\x11östafrikansk tid\x10sydafrikansk t" + + "id\x12västafrikansk tid\x18västafrikansk normaltid\x18västafrikansk somm" + + "artid\x09Alaskatid\x11Alaska, normaltid\x11Alaska, sommartid\x09Almatyti" + + "d\x0fAlmatynormaltid\x0fAlmatysommartid\x0bAmazonastid\x13Amazonas, norm" + + "altid\x13Amazonas, sommartid\x19centralnordamerikansk tid\x1fcentralnord" + + "amerikansk normaltid\x1fcentralnordamerikansk sommartid\x16östnordamerik" + + "ansk tid\x1cöstnordamerikansk normaltid\x1cöstnordamerikansk sommartid" + + "\x12Klippiga bergentid\x1aKlippiga bergen, normaltid\x1aKlippiga bergen," + + " sommartid\x17västnordamerikansk tid\x1dvästnordamerikansk normaltid\x1d" + + "västnordamerikansk sommartid\x09Anadyrtid\x0fAnadyrnormaltid\x0fAnadyrso" + + "mmartid\x07Apiatid\x0fApia, normaltid\x0fApia, sommartid\x08Aqtautid\x0e" + + "Aqtaunormaltid\x0eAqtausommartid\x0aAqtöbetid\x10Aqtöbenormaltid\x10Aqtö" + + "besommartid\x10saudiarabisk tid\x16saudiarabisk normaltid\x16saudiarabis" + + "k sommartid\x12östargentinsk tid\x18östargentinsk normaltid\x18östargent" + + "insk sommartid\x13västargentinsk tid\x19västargentinsk normaltid\x19väst" + + "argentinsk sommartid\x0carmenisk tid\x12armenisk normaltid\x12armenisk s" + + "ommartid\x18nordamerikansk atlanttid\x1enordamerikansk atlantnormaltid" + + "\x1enordamerikansk atlantsommartid\x15centralaustralisk tid\x1bcentralau" + + "stralisk normaltid\x1bcentralaustralisk sommartid\x1avästcentralaustrali" + + "sk tid västcentralaustralisk normaltid västcentralaustralisk sommartid" + + "\x12östaustralisk tid\x18östaustralisk normaltid\x18östaustralisk sommar" + + "tid\x13västaustralisk tid\x19västaustralisk normaltid\x19västaustralisk " + + "sommartid\x12azerbajdzjansk tid\x18azerbajdzjansk normaltid\x18azerbajdz" + + "jansk sommartid\x0bazorisk tid\x11azorisk normaltid\x11azorisk sommartid" + + "\x11bangladeshisk tid\x17bangladeshisk normaltid\x17bangladeshisk sommar" + + "tid\x0cbhutansk tid\x0eboliviansk tid\x0bBrasiliatid\x13Brasilia, normal" + + "tid\x13Brasilia, sommartid\x09Bruneitid\x0cKap Verdetid\x14Kap Verde, no" + + "rmaltid\x14Kap Verde, sommartid\x08Caseytid\x0bChamorrotid\x0aChathamtid" + + "\x12Chatham, normaltid\x12Chatham, sommartid\x0cchilensk tid\x12chilensk" + + " normaltid\x12chilensk sommartid\x0ckinesisk tid\x12kinesisk normaltid" + + "\x12kinesisk sommartid\x0dTjojbalsantid\x15Tjojbalsan, normaltid\x15Tjoj" + + "balsan, sommartid\x0bJulöns tid\x12Keelingöarnas tid\x0fcolombiansk tid" + + "\x15colombiansk normaltid\x15colombiansk sommartid\x0fCooköarnas tid\x15" + + "Cooköarnas normaltid\x15Cooköarnas sommartid\x0bkubansk tid\x11kubansk n" + + "ormaltid\x11kubansk sommartid\x08Davistid\x16Dumont d’Urville-tid\x10öst" + + "timorisk tid\x0aPåskötid\x13Påskön, normaltid\x13Påskön, sommartid\x10ec" + + "uadoriansk tid\x14centraleuropeisk tid\x1acentraleuropeisk normaltid\x1a" + + "centraleuropeisk sommartid\x11östeuropeisk tid\x17östeuropeisk normaltid" + + "\x17östeuropeisk sommartid\x0eKaliningradtid\x12västeuropeisk tid\x18väs" + + "teuropeisk normaltid\x18västeuropeisk sommartid\x14Falklandsöarnas tid" + + "\x1aFalklandsöarna, normaltid\x1aFalklandsöarna, sommartid\x07Fijitid" + + "\x0fFiji, normaltid\x0fFiji, sommartid\x11Franska Guyanatid\x1dFranska S" + + "ydterritoriernas tid\x0dGalápagostid\x0aGambiertid\x0cgeorgisk tid\x12ge" + + "orgisk normaltid\x12georgisk sommartid\x0bKiribatitid\x0cGreenwichtid" + + "\x14östgrönländsk tid\x1aöstgrönländsk normaltid\x1aöstgrönländsk sommar" + + "tid\x15västgrönländsk tid\x1bvästgrönländsk normaltid\x1bvästgrönländsk " + + "sommartid\x07Guamtid\x11Persiska vikentid\x09Guyanatid\x13Honolulu, norm" + + "altid\x13Honolulu, sommartid\x0bHongkongtid\x13Hongkong, normaltid\x13Ho" + + "ngkong, sommartid\x08Chovdtid\x10Chovd, normaltid\x10Chovd, sommartid" + + "\x0aindisk tid\x22Brittiska Indiska oceanöarnas tid\x10indokinesisk tid" + + "\x15centralindonesisk tid\x12östindonesisk tid\x13västindonesisk tid\x0a" + + "iransk tid\x10iransk normaltid\x10iransk sommartid\x0aIrkutsktid\x12Irku" + + "tsk, normaltid\x12Irkutsk, sommartid\x0disraelisk tid\x13israelisk norma" + + "ltid\x13israelisk sommartid\x0bjapansk tid\x11japansk normaltid\x11japan" + + "sk sommartid\x0cKamtjatkatid\x12Kamtjatkanormaltid\x12Kamtjatkasommartid" + + "\x13östkazakstansk tid\x14västkazakstansk tid\x0ckoreansk tid\x12koreans" + + "k normaltid\x12koreansk sommartid\x09Kosraetid\x0eKrasnojarsktid\x16Kras" + + "nojarsk, normaltid\x16Krasnojarsk, sommartid\x0dkirgizisk tid\x0cSri Lan" + + "katid\x0fLineöarnas tid\x0cLord Howetid\x14Lord Howe, normaltid\x14Lord " + + "Howe, sommartid\x08Macautid\x0eMacaunormaltid\x0eMacausommartid\x0cMacqu" + + "arietid\x0aMagadantid\x12Magadan, normaltid\x12Magadan, sommartid\x0dmal" + + "aysisk tid\x0dMaldivernatid\x0cMarquesastid\x13Marshallöarnas tid\x0cMau" + + "ritiustid\x14Mauritius, normaltid\x14Mauritius, sommartid\x09Mawsontid" + + "\x16nordvästmexikansk tid\x1cnordvästmexikansk normaltid\x1cnordvästmexi" + + "kansk sommartid\x17mexikansk stillahavstid\x22mexikansk stillahavstid, n" + + "ormaltid\x22mexikansk stillahavstid, sommartid\x0eUlaanbaatartid\x16Ulaa" + + "nbaatar, normaltid\x16Ulaanbaatar, sommartid\x09Moskvatid\x11Moskva, nor" + + "maltid\x11Moskva, sommartid\x0dburmesisk tid\x08Naurutid\x0enepalesisk t" + + "id\x11Nya Kaledonientid\x19Nya Kaledonien, normaltid\x19Nya Kaledonien, " + + "sommartid\x10nyzeeländsk tid\x16nyzeeländsk normaltid\x16nyzeeländsk som" + + "martid\x0fNewfoundlandtid\x17Newfoundland, normaltid\x17Newfoundland, so" + + "mmartid\x07Niuetid\x0fNorfolköns tid\x16Fernando de Noronhatid\x1eFernan" + + "do de Noronha, normaltid\x1eFernando de Noronha, sommartid\x13Nordmarian" + + "ernas tid\x0eNovosibirsktid\x16Novosibirsk, normaltid\x16Novosibirsk, so" + + "mmartid\x07Omsktid\x0fOmsk, normaltid\x0fOmsk, sommartid\x0epakistansk t" + + "id\x14pakistansk normaltid\x14pakistansk sommartid\x08Palautid\x15Papua " + + "Nya Guineas tid\x10paraguayansk tid\x16paraguayansk normaltid\x16paragua" + + "yansk sommartid\x0cperuansk tid\x12peruansk normaltid\x12peruansk sommar" + + "tid\x0efilippinsk tid\x14filippinsk normaltid\x14filippinsk sommartid" + + "\x0cEnderburytid\x1aS:t Pierre och Miquelontid\x22S:t Pierre och Miquelo" + + "n, normaltid\x22S:t Pierre och Miquelon, sommartid\x0bPitcairntid\x09Pon" + + "apetid\x0cPyongyangtid\x0cQyzylordatid\x12Qyzylordanormaltid\x12Qyzylord" + + "asommartid\x0bRéuniontid\x0aRotheratid\x0bSachalintid\x13Sachalin, norma" + + "ltid\x13Sachalin, sommartid\x09Samaratid\x0fSamaranormaltid\x0fSamarasom" + + "martid\x0csamoansk tid\x12samoansk normaltid\x12samoansk sommartid\x0fSe" + + "ychellernatid\x0cSingaporetid\x12Salomonöarnas tid\x0fsydgeorgisk tid" + + "\x0aSurinamtid\x08Syowatid\x09Tahititid\x09Taipeitid\x11Taipei, normalti" + + "d\x11Taipei, sommartid\x0fTadzjikistantid\x0aTokelautid\x08Tongatid\x10T" + + "onga, normaltid\x10Tonga, sommartid\x08Chuuktid\x0dturkmensk tid\x13turk" + + "mensk normaltid\x13turkmensk sommartid\x09Tuvalutid\x0furuguayansk tid" + + "\x15uruguayansk normaltid\x15uruguayansk sommartid\x0cuzbekisk tid\x12uz" + + "bekisk normaltid\x12uzbekisk sommartid\x0aVanuatutid\x12Vanuatu, normalt" + + "id\x12Vanuatu, sommartid\x10venezuelansk tid\x0eVladivostoktid\x16Vladiv" + + "ostok, normaltid\x16Vladivostok, sommartid\x0cVolgogradtid\x14Volgograd," + + " normaltid\x14Volgograd, sommartid\x09Vostoktid\x0fWakeöarnas tid\x1dWal" + + "lis- och Futunaöarnas tid\x0aJakutsktid\x12Jakutsk, normaltid\x12Jakutsk" + + ", sommartid\x10Jekaterinburgtid\x18Jekaterinburg, normaltid\x18Jekaterin" + + "burg, sommartid" + +var bucket94 string = "" + // Size: 9767 bytes + "\x09Robo ya 1\x09Robo ya 2\x09Robo ya 3\x09Robo ya 4\x11saa sita za usik" + + "u\x12saa sita za mchana\x08alfajiri\x07asubuhi\x06mchana\x05jioni\x05usi" + + "ku\x07Asubuhi\x06Mchana\x04enzi\x05mwaka\x0emwaka uliopita\x09mwaka huu" + + "\x0amwaka ujao\x12baada ya mwaka {0}\x12baada ya miaka {0}\x12mwaka {0} " + + "uliopita\x13miaka {0} iliyopita\x04robo\x17robo ya mwaka iliyopita\x11ro" + + "bo hii ya mwaka\x18robo ya mwaka inayofuata\x11baada ya robo {0}\x12robo" + + " {0} iliyopita\x13robo {0} zilizopita\x05mwezi\x0emwezi uliopita\x09mwez" + + "i huu\x0amwezi ujao\x12baada ya mwezi {0}\x12baada ya miezi {0}\x12mwezi" + + " {0} uliopita\x13miezi {0} iliyopita\x04wiki\x0ewiki iliyopita\x08wiki h" + + "ii\x0awiki ijayo\x11baada ya wiki {0}\x12wiki {0} iliyopita\x13wiki {0} " + + "zilizopita\x0bwiki ya {0}\x04siku\x04juzi\x04jana\x03leo\x05kesho\x0bkes" + + "ho kutwa\x11baada ya siku {0}\x12siku {0} iliyopita\x13siku {0} zilizopi" + + "ta\x0csiku ya wiki\x12Jumapili iliyopita\x0cJumapili hii\x0eJumapili ija" + + "yo\x15baada ya Jumapili {0}\x16Jumapili {0} iliyopita\x17Jumapili {0} zi" + + "lizopita\x12Jumatatu iliyopita\x0cJumatatu hii\x0eJumatatu ijayo\x15baad" + + "a ya Jumatatu {0}\x16Jumatatu {0} iliyopita\x17Jumatatu {0} zilizopita" + + "\x11Jumanne iliyopita\x0bJumanne hii\x0dJumanne ijayo\x14baada ya Jumann" + + "e {0}\x15Jumanne {0} iliyopita\x16Jumanne {0} zilizopita\x12Jumatano ili" + + "yopita\x0cJumatano hii\x0eJumatano ijayo\x15baada ya Jumatano {0}\x16Jum" + + "atano {0} iliyopita\x17Jumatano {0} zilizopita\x12Alhamisi iliyopita\x0c" + + "Alhamisi hii\x0eAlhamisi ijayo\x15baada ya Alhamisi {0}\x16Alhamisi {0} " + + "iliyopita\x17Alhamisi {0} zilizopita\x10Ijumaa iliyopita\x0aIjumaa hii" + + "\x0cIjumaa ijayo\x13baada ya Ijumaa {0}\x14Ijumaa {0} iliyopita\x15Ijuma" + + "a {0} zilizopita\x12Jumamosi iliyopita\x0cJumamosi hii\x0eJumamosi ijayo" + + "\x15baada ya Jumamosi {0}\x16Jumamosi {0} iliyopita\x17Jumamosi {0} zili" + + "zopita\x07saa hii\x10baada ya saa {0}\x11saa {0} iliyopita\x12saa {0} zi" + + "lizopita\x11Saa {0} iliyopita\x12Saa {0} zilizopita\x0adakika hii\x13baa" + + "da ya dakika {0}\x14dakika {0} iliyopita\x15dakika {0} zilizopita\x03dak" + + "\x07sekunde\x09sasa hivi\x14baada ya sekunde {0}\x15Sekunde {0} iliyopit" + + "a\x16Sekunde {0} zilizopita\x15sekunde {0} iliyopita\x16sekunde {0} zili" + + "zopita\x0bsaa za eneo\x0aSaa za {0}\x14Saa za Mchana za {0}\x15Saa za wa" + + "stani za {0}#Muda wa Majira ya Joto wa Uingereza\x22Muda wa Majira ya Jo" + + "to wa Ayalandi\x12Saa za Afghanistan\x15Saa za Afrika ya Kati\x17Saa za " + + "Afrika Mashariki\x1cSaa Wastani za Afrika Kusini\x17Saa za Afrika Maghar" + + "ibi\x22Saa za Wastani za Afrika Magharibi)Saa za Majira ya joto za Afrik" + + "a Magharibi\x0dSaa za Alaska\x18Saa za Wastani za Alaska\x17Saa za Mchan" + + "a za Alaska\x0dSaa za Amazon\x18Saa za Wastani za Amazon\x1fSaa za Majir" + + "a ya joto za Amazon\x0bSaa za Kati\x16Saa za Wastani za Kati\x15Saa za M" + + "chana za Kati\x10Saa za Mashariki\x1bSaa za Wastani za Mashariki\x1aSaa " + + "za Mchana za Mashariki\x0fSaa za Mountain\x1aSaa za Wastani za Mountain" + + "\x19Saa za Mchana za Mountain\x0fSaa za Pasifiki\x1aSaa za Wastani za Pa" + + "sifiki\x19Saa za Mchana za Pasifiki\x0dSaa za Anadyr\x18Saa za Wastani z" + + "a Anadyr\x19Saa za Kiangazi za Anadyr\x0bSaa za Apia\x13Saa Wastani za A" + + "pia\x15Saa za Mchana za Apia\x0fSaa za Uarabuni\x17Saa Wastani za Uarabu" + + "ni\x19Saa za Mchana za Arabiani\x10Saa za Argentina\x1bSaa za Wastani za" + + " Argentina\x22Saa za Majira ya joto za Argentina\x1eSaa za Magharibi mwa" + + " Argentina&Saa Wastani za Magharibi mwa Argentina0Saa za Majira ya joto " + + "za Magharibi mwa Argentina\x0eSaa za Armenia\x16Saa Wastani za Armenia S" + + "aa za Majira ya joto za Armenia\x10Saa za Atlantiki\x1bSaa za Wastani za" + + " Atlantiki\x1aSaa za Mchana za Atlantiki\x18Saa za Australia ya Kati Saa" + + " Wastani za Australia ya Kati\x22Saa za Mchana za Australia ya Kati%Saa " + + "za Magharibi ya Kati ya Australia-Saa Wastani za Magharibi ya Kati ya Au" + + "stralia/Saa za Mchana za Magharibi ya Kati ya Australia\x1aSaa za Austra" + + "lia Mashariki&Saa Wastani za Mashariki mwa Australia(Saa za Mchana za Ma" + + "shariki mwa Australia\x1aSaa za Australia Magharibi\x22Saa Wastani za Au" + + "stralia Magharibi$Saa za Mchana za Australia Magharibi\x13Saa za Azeriba" + + "ijani\x1bSaa Wastani za Azeribaijani%Saa za Majira ya joto za Azeribaija" + + "ni\x0dSaa za Azores\x15Saa Wastani za Azores\x1fSaa za Majira ya joto za" + + " Azores\x11Saa za Bangladesh\x19Saa Wastani za Bangladesh#Saa za Majira " + + "ya joto za Bangladesh\x0dSaa za Bhutan\x0eSaa za Bolivia\x0fSaa za Brasi" + + "lia\x1aSaa za Wastani za Brasilia!Saa za Majira ya joto za Brasilia\x18S" + + "aa za Brunei Darussalam\x11Saa za Cape Verde\x1cSaa za Wastani za Cape V" + + "erde#Saa za Majira ya joto za Cape Verde\x17Saa Wastani za Chamorro\x0eS" + + "aa za Chatham\x16Saa Wastani za Chatham\x18Saa za Mchana za Chatham\x0cS" + + "aa za Chile\x17Saa za Wastani za Chile\x1eSaa za Majira ya joto za Chile" + + "\x0dSaa za Uchina\x15Saa Wastani za Uchina\x17Saa za Mchana za Uchina" + + "\x11Saa za Choibalsan\x19Saa Wastani za Choibalsan#Saa za Majira ya joto" + + " za Choibalsan\x1bSaa za Kisiwa cha Christmas\x17Saa za Visiwa vya Cocos" + + "\x0fSaa za Colombia\x1aSaa za Wastani za Colombia!Saa za Majira ya joto " + + "za Colombia\x16Saa za Visiwa vya Cook\x1eSaa Wastani za Visiwa vya Cook)" + + "Saa za Majira nusu ya joto za Visiwa Cook\x0bSaa za Cuba\x16Saa za Wasta" + + "ni ya Cuba\x15Saa za Mchana za Cuba\x0cSaa za Davis\x19Saa za Dumont-d’U" + + "rville\x16Saa za Timor Mashariki\x18Saa za Kisiwa cha Pasaka Saa Wastani" + + " za Kisiwa cha Pasaka*Saa za Majira ya joto za Kisiwa cha Pasaka\x0eSaa " + + "za Ecuador\x14Saa za Ulaya ya Kati\x1cSaa Wastani za Ulaya ya kati&Saa z" + + "a Majira ya joto za Ulaya ya Kati\x1aSaa za Mashariki mwa Ulaya\x22Saa W" + + "astani za Mashariki mwa Ulaya,Saa za Majira ya joto za Mashariki mwa Ula" + + "ya$Saa za Further-eastern European Time\x1aSaa za Magharibi mwa Ulaya" + + "\x22Saa Wastani za Magharibi mwa Ulaya,Saa za Majira ya joto za Magharib" + + "i mwa Ulaya\x1aSaa za Visiwa vya Falkland\x22Saa Wastani za Visiwa vya F" + + "alkland,Saa za Majira ya joto za Visiwa vya Falkland\x0bSaa za Fiji\x13S" + + "aa Wastani za Fiji\x1dSaa za Majira ya joto za Fiji\x19Saa za Guiana ya " + + "Ufaransa'Saa za Kusini mwa Ufaransa na Antaktiki\x10Saa za Galapagos\x0e" + + "Saa za Gambier\x0cSaa za Jojia\x14Saa Wastani za Jojia\x1eSaa za Majira " + + "ya joto za Jojia\x19Saa za Visiwa vya Gilbert\x10Saa za Greenwich\x1aSaa" + + " za Greenland Mashariki%Saa za Wastani za Greenland Mashariki,Saa za Maj" + + "ira ya joto za Greenland Mashariki\x1aSaa za Greenland Magharibi%Saa za " + + "Wastani za Greenland Magharibi,Saa za Majira ya joto za Greenland Maghar" + + "ibi\x13Saa Wastani za Gulf\x0dSaa za Guyana\x16Saa za Hawaii-Aleutian!Sa" + + "a za Wastani za Hawaii-Aleutian Saa za Mchana za Hawaii-Aleutian\x10Saa " + + "za Hong Kong\x18Saa Wastani za Hong Kong\x22Saa za Majira ya joto za Hon" + + "g Kong\x0bSaa za Hovd\x13Saa Wastani za Hovd\x1dSaa za Majira ya joto za" + + " Hovd\x14Saa Wastani za India\x13Saa za Bahari Hindi\x10Saa za Indochina" + + "\x18Saa za Indonesia ya Kati\x1eSaa za Mashariki mwa Indonesia\x1eSaa za" + + " Magharibi mwa Indonesia\x0bSaa za Iran\x13Saa Wastani za Iran\x15Saa za" + + " Mchana za Iran\x0eSaa za Irkutsk\x19Saa za Wastani za Irkutsk Saa za Ma" + + "jira ya joto za Irkutsk\x0eSaa za Israeli\x16Saa Wastani za Israeli\x18S" + + "aa za Mchana za Israeli\x0cSaa za Japan\x14Saa Wastani za Japan\x16Saa z" + + "a Mchana za Japan\x1fSaa za Petropavlovsk-Kamchatski*Saa za Wastani za P" + + "etropavlovsk-Kamchatski+Saa za Kiangazi za Petropavlovsk-Kamchatski\x1bS" + + "aa za Kazakhstan Mashariki\x1bSaa za Kazakhstan Magharibi\x0cSaa za Kore" + + "a\x14Saa Wastani za Korea\x16Saa za Mchana za Korea\x0dSaa za Kosrae\x12" + + "Saa za Krasnoyarsk\x1cSaa za Wastani za Krasnoyask$Saa za Majira ya joto" + + " za Krasnoyarsk\x10Saa za Kyrgystan\x16Saa za Visiwa vya Line\x10Saa za " + + "Lord Howe\x18Saa Wastani za Lord Howe\x1aSaa za Mchana za Lord Howe\x1bS" + + "aa za kisiwa cha Macquarie\x0eSaa za Magadan\x19Saa za Wastani za Magada" + + "n Saa za Majira ya joto za Magadan\x0fSaa za Malaysia\x0fSaa za Maldives" + + "\x10Saa za Marquesas\x1aSaa za Visiwa vya Marshall\x10Saa za Mauritius" + + "\x1bSaa za Wastani za Mauritius\x22Saa za Majira ya joto za Mauritius" + + "\x0dSaa za Mawson!Saa za Mexico Kaskazini Magharibi)Saa Wastani za Mexic" + + "o Kaskazini Magharibi+Saa za mchana za Mexico Kaskazini Magharibi\x19Saa" + + " za pasifiki za Mexico$Saa za wastani za pasifiki za Mexico#Saa za mchan" + + "a za pasifiki za Mexico\x11Saa za Ulan Bator\x19Saa Wastani za Ulan Bato" + + "r#Saa za Majira ya joto za Ulan Bator\x0dSaa za Moscow\x18Saa za Wastani" + + " za Moscow\x1fSaa za Majira ya joto za Moscow\x0eSaa za Myanmar\x0cSaa z" + + "a Nauru\x0cSaa za Nepal\x14Saa za New Caledonia\x1cSaa Wastani za New Ca" + + "ledonia&Saa za Majira ya joto za New Caledonia\x12Saa za New Zealand\x1a" + + "Saa Wastani za New Zealand\x1cSaa za Mchana za New Zealand\x13Saa za New" + + "foundland\x1eSaa za Wastani za Newfoundland\x1dSaa za Mchana za Newfound" + + "land\x0bSaa za Niue\x19Saa za Kisiwa cha Norfolk\x1aSaa za Fernando de N" + + "oronha\x22Saa Wastani za Fernando de Noronha,Saa za Majira ya joto za Fe" + + "rnando de Noronha\x12Saa za Novosibirsk\x1dSaa za Wastani za Novosibirsk" + + "$Saa za Majira ya joto za Novosibirsk\x0bSaa za Omsk\x16Saa za Wastani z" + + "a Omsk\x1dSaa za Majira ya joto za Omsk\x0fSaa za Pakistan\x17Saa Wastan" + + "i za Pakistan!Saa za Majira ya joto za Pakistan\x0cSaa za Palau\x17Saa z" + + "a Papua New Guinea\x0fSaa za Paraguay\x1aSaa za Wastani za Paraguay!Saa " + + "za Majira ya joto za Paraguay\x0bSaa za Peru\x16Saa za Wastani za Peru" + + "\x1dSaa za Majira ya joto za Peru\x10Saa za Ufilipino\x18Saa Wastani za " + + "Ufilipino\x22Saa za Majira ya joto za Ufilipino\x19Saa za Visiwa vya Pho" + + "enix\x1fSaa za Saint-Pierre na Miquelon*Saa za Wastani ya Saint-Pierre n" + + "a Miquelon)Saa za Mchana za Saint-Pierre na Miquelon\x0fSaa za Pitcairn" + + "\x0dSaa za Ponape\x10Saa za Pyongyang\x0eSaa za Reunion\x0eSaa za Rother" + + "a\x0fSaa za Sakhalin\x1aSaa za Wastani za Sakhalin!Saa za Majira ya joto" + + " za Sakhalin\x0dSaa za Samara\x18Saa za Wastani za Samara\x19Saa za Kian" + + "gazi za Samara\x0cSaa za Samoa\x14Saa Wastani za Samoa\x1eSaa za Majira " + + "ya joto za Samoa\x12Saa za Ushelisheli\x18Saa Wastani za Singapore\x19Sa" + + "a za Visiwa vya Solomon\x13Saa za Jojia Kusini\x0fSaa za Suriname\x0cSaa" + + " za Syowa\x0dSaa za Tahiti\x0dSaa za Taipei\x15Saa Wastani za Taipei\x17" + + "Saa za Mchana za Taipei\x11Saa za Tajikistan\x0eSaa za Tokelau\x0cSaa za" + + " Tonga\x14Saa Wastani za Tonga\x1eSaa za Majira ya joto za Tonga\x0cSaa " + + "za Chuuk\x13Saa za Turkmenistan\x1eSaa za Wastani za Turkmenistan%Saa za" + + " Majira ya joto za Turkmenistan\x0dSaa za Tuvalu\x0eSaa za Uruguay\x19Sa" + + "a za Wastani za Uruguay Saa za Majira ya joto za Uruguay\x11Saa za Uzbek" + + "istan\x1cSaa za Wastani za Uzbekistan#Saa za Majira ya joto za Uzbekista" + + "n\x0eSaa za Vanuatu\x16Saa Wastani za Vanuatu Saa za Majira ya joto za V" + + "anuatu\x10Saa za Venezuela\x12Saa za Vladivostok\x1dSaa za Wastani za Vl" + + "adivostok$Saa za Majira ya joto za Vladivostok\x10Saa za Volgograd\x1bSa" + + "a za Wastani za Volgograd\x22Saa za Majira ya joto za Volgograd\x0dSaa z" + + "a Vostok\x16Saa za Kisiwa cha Wake\x17Saa za Wallis na Futuna\x0eSaa za " + + "Yakutsk\x19Saa za Wastani za Yakutsk Saa za Majira ya joto za Yakutsk" + + "\x14Saa za Yekaterinburg\x1fSaa za Wastani za Yekaterinburg&Saa za Majir" + + "a ya joto za Yekaterinburg" + +var bucket95 string = "" + // Size: 27593 bytes + "\x06Wakati\x0cSiku ya juma\x0cMuda wa siku\x0d{1} 'saa' {0}\x07மா1\x07மா" + + "2\x07மா3\x07மா4\x07மா5\x07மா6\x07மா7\x07மா8\x07மா9\x08மா10\x08மா11\x08மா" + + "12\x10மாதம்1\x10மாதம்2\x10மாதம்3\x10மாதம்4\x10மாதம்5\x10மாதம்6\x10மாதம்7" + + "\x10மாதம்8\x10மாதம்9\x11மாதம்10\x11மாதம்11\x11மாதம்12\x09U, d MMMM\x08U," + + " d MMM\x17{1} அன்று {0}\x07ஜன.\x0dபிப்.\x0dமார்.\x0aஏப்.\x06மே\x0cஜூன்" + + "\x0cஜூலை\x07ஆக.\x0dசெப்.\x0aஅக்.\x07நவ.\x0aடிச.\x03ஜ\x06பி\x06மா\x03ஏ" + + "\x06ஜூ\x03ஆ\x06செ\x03அ\x03ந\x06டி\x0fஜனவரி\x18பிப்ரவரி\x12மார்ச்\x12ஏப்ர" + + "ல்\x12ஆகஸ்ட்\x1eசெப்டம்பர்\x18அக்டோபர்\x15நவம்பர்\x18டிசம்பர்\x0dஞாயி." + + "\x0dதிங்.\x0dசெவ்.\x0aபுத.\x0dவியா.\x0dவெள்.\x09சனி\x06ஞா\x06தி\x06பு" + + "\x06வி\x06வெ\x03ச\x12ஞாயிறு\x15திங்கள்\x18செவ்வாய்\x0fபுதன்\x15வியாழன்" + + "\x12வெள்ளி\x0eகாலா.1\x0eகாலா.2\x0eகாலா.3\x0eகாலா.4.ஒன்றாம் காலாண்டு1இரண்" + + "டாம் காலாண்டு1மூன்றாம் காலாண்டு1நான்காம் காலாண்டு\x18நள்ளிரவு\x18முற்ப" + + "கல்\x15நண்பகல்\x18பிற்பகல்\x15அதிகாலை\x0cகாலை\x12மதியம்\x0cமாலை\x1cஅந்" + + "தி மாலை\x0cஇரவு\x0aநள்.\x0aமு.ப\x0aநண்.\x0aபி.ப\x0aஅதி.\x07கா.\x0aமதி." + + "\x0dபிற்.\x07மா.\x17அந்தி மா.\x07இர.\x04இ.7கிறிஸ்துவுக்கு முன்\x11பொ.ச.ம" + + "ு\x22அன்னோ டோமினி\x0aபொ.ச\x0eகி.மு.\x0eகி.பி.\x0ea h:mm:ss zzzz\x0ba h" + + ":mm:ss z\x1d{1} ’அன்று’ {0}\x0fகாலம்\x0fஆண்டு\x1fகடந்த ஆண்டு\x1cஇந்த ஆண்" + + "டு\x22அடுத்த ஆண்டு\x19{0} ஆண்டில்\x22{0} ஆண்டுகளில்,{0} ஆண்டிற்கு முன்" + + "5{0} ஆண்டுகளுக்கு முன்\x04ஆ.\x08{0} ஆ.\x15{0} ஆ. முன்\x18காலாண்டு(கடந்த " + + "காலாண்டு%இந்த காலாண்டு+அடுத்த காலாண்டு#+{0} காலாண்டில்+{0} காலாண்டுகளி" + + "ல்5{0} காலாண்டுக்கு முன்>{0} காலாண்டுகளுக்கு முன்\x0dகாலா.(இறுதி காலாண" + + "்டு\x11{0} காலா.\x1e{0} காலா. முன்\x0b{0} கா.\x18{0} கா. முன்\x0fமாதம்" + + "\x1fகடந்த மாதம்\x1cஇந்த மாதம்\x22அடுத்த மாதம்\x1f{0} மாதத்தில்\x22{0} மா" + + "தங்களில்2{0} மாதத்துக்கு முன்5{0} மாதங்களுக்கு முன்\x0aமாத.\x0e{0} மாத" + + ".\x1b{0} மாத. முன்\x0b{0} மா.\x18{0} மா. முன்\x0fவாரம்\x1fகடந்த வாரம்" + + "\x1cஇந்த வாரம்\x22அடுத்த வாரம்\x1f{0} வாரத்தில்\x22{0} வாரங்களில்8{0} வா" + + "ரத்திற்கு முன்பு5{0} வாரங்களுக்கு முன்\x1e{0} -இன் வாரம்\x0e{0} வார." + + "\x1b{0} வார. முன்\x07வா.\x0b{0} வா.\x18{0} வா. முன்\x0cநாள்/நேற்று முன் " + + "தினம்\x12நேற்று\x0fஇன்று\x0cநாளை\x22நாளை மறுநாள்\x16{0} நாளில்\x1f{0} " + + "நாட்களில்){0} நாளுக்கு முன்2{0} நாட்களுக்கு முன்\x07நா.\x0b{0} நா.\x18" + + "{0} நா. முன்(வாரத்தின் நாள்\x22கடந்த ஞாயிறு\x1fஇந்த ஞாயிறு%அடுத்த ஞாயிறு" + + "\x1c{0} ஞாயிறில்%{0} ஞாயிறுகளில்5{0} ஞாயிறுக்கு முன்பு>{0} ஞாயிறுகளுக்கு" + + " முன்பு\x1dகடந்த ஞாயி.\x1aஇந்த ஞாயி. அடுத்த ஞாயி.\x11{0} ஞாயி.\x1e{0} ஞா" + + "யி. முன்\x17கடந்த ஞா.\x14இந்த ஞா.\x1aஅடுத்த ஞா.\x0b{0} ஞா.\x18{0} ஞா. " + + "முன்%கடந்த திங்கள்\x22இந்த திங்கள்(அடுத்த திங்கள்\x1f{0} திங்களில்({0}" + + " திங்கள்களில்2{0} திங்களுக்கு முன்;{0} திங்கள்களுக்கு முன்\x1dகடந்த திங்" + + ".\x1aஇந்த திங். அடுத்த திங்.\x11{0} திங்.\x1e{0} திங். முன்(கடந்த செவ்வா" + + "ய்%இந்த செவ்வாய்+அடுத்த செவ்வாய்\x22{0} செவ்வாயில்+{0} செவ்வாய்களில்/{" + + "0} செவ்வாய் முன்பு8{0} செவ்வாய்கள் முன்பு\x1dகடந்த செவ்.\x1aஇந்த செவ். அ" + + "டுத்த செவ்.\x11{0} செவ்.>{0} செவ்வாய்களுக்கு முன்${0} செவ். முன்பு\x1f" + + "கடந்த புதன்\x1cஇந்த புதன்\x22அடுத்த புதன்\x19{0} புதனில்\x22{0} புதன்க" + + "ளில்,{0} புதனுக்கு முன்5{0} புதன்களுக்கு முன்\x1aகடந்த புத.\x17இந்த பு" + + "த.\x1dஅடுத்த புத.\x0e{0} புத.\x1b{0} புத. முன்%கடந்த வியாழன்\x22இந்த வ" + + "ியாழன்(அடுத்த வியாழன்\x1f{0} வியாழனில்({0} வியாழன்களில்2{0} வியாழனுக்க" + + "ு முன்;{0} வியாழன்களுக்கு முன்\x1dகடந்த வியா.\x1aஇந்த வியா. அடுத்த விய" + + "ா.\x11{0} வியா.\x1e{0} வியா. முன்\x22கடந்த வெள்ளி\x1fஇந்த வெள்ளி%அடுத்" + + "த வெள்ளி\x22{0} வெள்ளியில்%{0} வெள்ளிகளில்/{0} வெள்ளிக்கு முன்8{0} வெள" + + "்ளிகளுக்கு முன்\x1dகடந்த வெள்.\x1aஇந்த வெள். அடுத்த வெள்.\x11{0} வெள்." + + "\x1e{0} வெள். முன்\x19கடந்த சனி\x16இந்த சனி\x1cஅடுத்த சனி\x19{0} சனியில்" + + "\x1c{0} சனிகளில்&{0} சனிக்கு முன்/{0} சனிகளுக்கு முன்\x0e{0} சனி.\x1b{0}" + + " சனி. முன்1முற்பகல்/பிற்பகல்\x09மணி;இந்த ஒரு மணிநேரத்தில்({0} மணிநேரத்தி" + + "ல்){0} மணிநேரம் முன்\x0aமணி.\x0e{0} மணி.\x1b{0} மணி. முன்\x04ம.\x08{0}" + + " ம.\x15{0} ம. முன்\x15நிமிடம்8இந்த ஒரு நிமிடத்தில்%{0} நிமிடத்தில்({0} ந" + + "ிமிடங்களில்8{0} நிமிடத்திற்கு முன்;{0} நிமிடங்களுக்கு முன்\x0dநிமி." + + "\x11{0} நிமி.\x1e{0} நிமி. முன்\x0b{0} நி.\x18{0} நி. முன்\x12விநாடி\x15" + + "இப்போது\x22{0} விநாடியில்%{0} விநாடிகளில்/{0} விநாடிக்கு முன்8{0} விநா" + + "டிகளுக்கு முன்\x0dவிநா.\x11{0} விநா.\x1e{0} விநா. முன்\x07வி.\x0b{0} வ" + + "ி.\x18{0} வி. முன்\x1fநேர மண்டலம்\x13{0} நேரம்&{0} பகலொளி நேரம்){0} நி" + + "லையான நேரம்;பிரிட்டிஷ் கோடை நேரம்5ஐரிஷ் நிலையான நேரம்\x1fஅக்ரே நேரம்&அ" + + "க்ரே தர நேரம்,அக்ரே கோடை நேரம்:ஆஃப்கானிஸ்தான் நேரம்Aமத்திய ஆப்பிரிக்க " + + "நேரம்Dகிழக்கு ஆப்பிரிக்க நேரம்Qதென் ஆப்பிரிக்க நிலையான நேரம்Aமேற்கு ஆப" + + "்பிரிக்க நேரம்Wமேற்கு ஆப்பிரிக்க நிலையான நேரம்Nமேற்கு ஆப்பிரிக்க கோடை " + + "நேரம்%அலாஸ்கா நேரம்;அலாஸ்கா நிலையான நேரம்8அலாஸ்கா பகலொளி நேரம்%அல்மாடி" + + " நேரம்,அல்மாடி தர நேரம்2அல்மாடி கோடை நேரம்%அமேசான் நேரம்;அமேசான் நிலையான" + + " நேரம்2அமேசான் கோடை நேரம்\x22மத்திய நேரம்8மத்திய நிலையான நேரம்5மத்திய பக" + + "லொளி நேரம்1கிழக்கத்திய நேரம்Gகிழக்கத்திய நிலையான நேரம்Dகிழக்கத்திய பகல" + + "ொளி நேரம்+மவுன்டைன் நேரம்Aமவுன்டைன் நிலையான நேரம்>மவுன்டைன் பகலொளி நேர" + + "ம்%பசிபிக் நேரம்;பசிபிக் நிலையான நேரம்8பசிபிக் பகலொளி நேரம்\x22அனடீர் " + + "நேரம்/அனாடையர் தர நேரம்5அனாடையர் கோடை நேரம்\x1fஏபியா நேரம்5ஏபியா நிலைய" + + "ான நேரம்2ஏபியா பகலொளி நேரம்\x1fஅட்டௌ நேரம்&அட்டௌ தர நேரம்,அட்டௌ கோடை ந" + + "ேரம்%அட்டோபே நேரம்,அட்டோபே தர நேரம்2அட்டோபே கோடை நேரம்\x22அரேபிய நேரம்" + + "8அரேபிய நிலையான நேரம்5அரேபிய பகலொளி நேரம்1அர்ஜென்டினா நேரம்Gஅர்ஜென்டினா " + + "நிலையான நேரம்>அர்ஜென்டினா கோடை நேரம்Pமேற்கத்திய அர்ஜென்டினா நேரம்fமேற்" + + "கத்திய அர்ஜென்டினா நிலையான நேரம்]மேற்கத்திய அர்ஜென்டினா கோடை நேரம்(ஆர்" + + "மேனிய நேரம்>ஆர்மேனிய நிலையான நேரம்5ஆர்மேனிய கோடை நேரம்1அட்லாண்டிக் நேர" + + "ம்Gஅட்லாண்டிக் நிலையான நேரம்Dஅட்லாண்டிக் பகலொளி நேரம்Aமத்திய ஆஸ்திரேலி" + + "ய நேரம்]ஆஸ்திரேலியன் மத்திய நிலையான நேரம்Zஆஸ்திரேலியன் மத்திய பகலொளி ந" + + "ேரம்fஆஸ்திரேலியன் மத்திய மேற்கத்திய நேரம்|ஆஸ்திரேலியன் மத்திய மேற்கத்த" + + "ிய நிலையான நேரம்yஆஸ்திரேலியன் மத்திய மேற்கத்திய பகலொளி நேரம்Pகிழக்கத்த" + + "ிய ஆஸ்திரேலிய நேரம்lஆஸ்திரேலியன் கிழக்கத்திய நிலையான நேரம்iஆஸ்திரேலியன" + + "் கிழக்கத்திய பகலொளி நேரம்Mமேற்கத்திய ஆஸ்திரேலிய நேரம்iஆஸ்திரேலியன் மே" + + "ற்கத்திய நிலையான நேரம்fஆஸ்திரேலியன் மேற்கத்திய பகலொளி நேரம்.அசர்பைஜான்" + + " நேரம்Dஅசர்பைஜான் நிலையான நேரம்;அசர்பைஜான் கோடை நேரம்\x22அசோரஸ் நேரம்8அச" + + "ோரஸ் நிலையான நேரம்2அசோர்ஸ் கோடை நேரம்%வங்கதேச நேரம்;வங்கதேச நிலையான நே" + + "ரம்2வங்கதேச கோடை நேரம்\x22பூடான் நேரம்(பொலிவியா நேரம்.பிரேசிலியா நேரம்" + + "Dபிரேசிலியா நிலையான நேரம்;பிரேசிலியா கோடை நேரம்Aபுருனே டருஸ்ஸலாம் நேரம்/" + + "கேப் வெர்டே நேரம்Eகேப் வெர்டே நிலையான நேரம்<கேப் வெர்டே கோடை நேரம்8சாம" + + "ோரோ நிலையான நேரம்%சத்தாம் நேரம்;சத்தாம் நிலையான நேரம்8சத்தாம் பகலொளி ந" + + "ேரம்\x1cசிலி நேரம்2சிலி நிலையான நேரம்)சிலி கோடை நேரம்\x19சீன நேரம்/சீன" + + " நிலையான நேரம்,சீன பகலொளி நேரம்1சோய்பால்சன் நேரம்Gசோய்பால்சன் நிலையான நே" + + "ரம்>சோய்பால்சன் கோடை நேரம்>கிறிஸ்துமஸ் தீவு நேரம்8கோகோஸ் தீவுகள் நேரம்" + + "+கொலம்பியா நேரம்Aகொலம்பியா நிலையான நேரம்8கொலம்பியா கோடை நேரம்2குக் தீவுக" + + "ள் நேரம்Hகுக் தீவுகள் நிலையான நேரம்Iகுக் தீவுகள் அரை கோடை நேரம்\x22கிய" + + "ூபா நேரம்8கியூபா நிலையான நேரம்5கியூபா பகலொளி நேரம்\x22டேவிஸ் நேரம்Kடும" + + "ோண்ட்-டி உர்வில்லே நேரம்8கிழக்கு திமோர் நேரம்/ஈஸ்டர் தீவு நேரம்Eஈஸ்டர்" + + " தீவு நிலையான நேரம்<ஈஸ்டர் தீவு கோடை நேரம்(ஈக்வடார் நேரம்;மத்திய ஐரோப்பி" + + "ய நேரம்Qமத்திய ஐரோப்பிய நிலையான நேரம்Hமத்திய ஐரோப்பிய கோடை நேரம்Jகிழக்" + + "கத்திய ஐரோப்பிய நேரம்`கிழக்கத்திய ஐரோப்பிய நிலையான நேரம்Wகிழக்கத்திய ஐ" + + "ரோப்பிய கோடை நேரம்Hதூர-கிழக்கு ஐரோப்பிய நேரம்Gமேற்கத்திய ஐரோப்பிய நேரம" + + "்]மேற்கத்திய ஐரோப்பிய நிலையான நேரம்Tமேற்கத்திய ஐரோப்பிய கோடை நேரம்Gஃபா" + + "க்லாந்து தீவுகள் நேரம்]ஃபாக்லாந்து தீவுகள் நிலையான நேரம்Tஃபாக்லாந்து த" + + "ீவுகள் கோடை நேரம்\x1fஃபிஜி நேரம்5ஃபிஜி நிலையான நேரம்,ஃபிஜி கோடை நேரம்8" + + "ஃபிரஞ்சு கயானா நேரம்kபிரெஞ்சு தெற்கத்திய & அண்டார்டிக் நேரம்%கலபகோஸ் ந" + + "ேரம்+கேம்பியர் நேரம்(ஜார்ஜியா நேரம்>ஜார்ஜியா நிலையான நேரம்5ஜார்ஜியா கோ" + + "டை நேரம்Aகில்பர்ட் தீவுகள் நேரம்Aகிரீன்விச் சராசரி நேரம்Jகிழக்கு கிரீன" + + "்லாந்து நேரம்`கிழக்கு கிரீன்லாந்து நிலையான நேரம்Wகிழக்கு கிரீன்லாந்து " + + "கோடை நேரம்Gமேற்கு கிரீன்லாந்து நேரம்]மேற்கு கிரீன்லாந்து நிலையான நேரம்" + + "Tமேற்கு கிரீன்லாந்து கோடை நேரம் கம் தர நேரம்;வளைகுடா நிலையான நேரம்\x1fகய" + + "ானா நேரம்8ஹவாய்-அலேஷியன் நேரம்Nஹவாய்-அலேஷியன் நிலையான நேரம்Kஹவாய்-அலேஷ" + + "ியன் பகலொளி நேரம்(ஹாங்காங் நேரம்>ஹாங்காங் நிலையான நேரம்5ஹாங்காங் கோடை " + + "நேரம்\x22ஹோவ்த் நேரம்8ஹோவ்த் நிலையான நேரம்/ஹோவ்த் கோடை நேரம்8இந்திய நி" + + "லையான நேரம்Gஇந்தியப் பெருங்கடல் நேரம்(இந்தோசீன நேரம்Aமத்திய இந்தோனேசிய" + + " நேரம்Pகிழக்கத்திய இந்தோனேசிய நேரம்Mமேற்கத்திய இந்தோனேசிய நேரம்\x1fஈரான்" + + " நேரம்5ஈரான் நிலையான நேரம்2ஈரான் பகலொளி நேரம்1இர்குட்ஸ்க் நேரம்Gஇர்குட்ஸ" + + "்க் நிலையான நேரம்>இர்குட்ஸ்க் கோடை நேரம்%இஸ்ரேல் நேரம்;இஸ்ரேல் நிலையான" + + " நேரம்8இஸ்ரேல் பகலொளி நேரம்%ஜப்பான் நேரம்;ஜப்பான் நிலையான நேரம்8ஜப்பான் " + + "பகலொளி நேரம்bபெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி நேரம்iபெட்ரோபவ்லோவ்ஸ்க் கம்ச" + + "ட்ஸ்கி தர நேரம்oபெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி கோடை நேரம்Aகிழக்கு கஜகஸ்த" + + "ான் நேரம்>மேற்கு கஜகஸ்தான் நேரம்\x1fகொரிய நேரம்5கொரிய நிலையான நேரம்2கொ" + + "ரிய பகலொளி நேரம்\x22கோஸ்ரே நேரம்=க்ரஸ்னோயார்ஸ்க் நேரம்Sக்ரஸ்னோயார்ஸ்க்" + + " நிலையான நேரம்Jக்ரஸ்னோயார்ஸ்க் கோடை நேரம்4கிர்கிஸ்தான் நேரம்\x1fலங்கா நே" + + "ரம்2லைன் தீவுகள் நேரம்/லார்ட் ஹோவ் நேரம்Eலார்ட் ஹோவ் நிலையான நேரம்Bலார" + + "்ட் ஹோவ் பகலொளி நேரம்%மக்காவ் நேரம்,மக்காவ் தர நேரம்2மக்காவ் கோடை நேரம" + + "்;மாக்கியூரி தீவு நேரம்\x1fமகதன் நேரம்5மகதன் நிலையான நேரம்,மகதன் கோடை " + + "நேரம்\x22மலேஷிய நேரம்4மாலத்தீவுகள் நேரம்4மார்கியூசாஸ் நேரம்;மார்ஷல் தீ" + + "வுகள் நேரம்+மொரிஷியஸ் நேரம்Aமொரிஷியஸ் நிலையான நேரம்8மொரிஷியஸ் கோடை நேர" + + "ம்\x1fமாசன் நேரம்Aவடமேற்கு மெக்ஸிகோ நேரம்Wவடமேற்கு மெக்ஸிகோ நிலையான நே" + + "ரம்Tவடமேற்கு மெக்ஸிகோ பகலொளி நேரம்Aமெக்ஸிகன் பசிபிக் நேரம்Wமெக்ஸிகன் ப" + + "சிபிக் நிலையான நேரம்Tமெக்ஸிகன் பசிபிக் பகலொளி நேரம்,உலன் பாடர் நேரம்Bஉ" + + "லன் பாடர் நிலையான நேரம்9உலன் பாடர் கோடை நேரம்\x22மாஸ்கோ நேரம்8மாஸ்கோ ந" + + "ிலையான நேரம்/மாஸ்கோ கோடை நேரம்+மியான்மர் நேரம்\x1fநவ்ரூ நேரம்\x1fநேபாள" + + " நேரம்8நியூ கலிடோனியா நேரம்Nநியூ கலிடோனியா நிலையான நேரம்Eநியூ கலிடோனியா " + + "கோடை நேரம்4நியூசிலாந்து நேரம்Jநியூசிலாந்து நிலையான நேரம்Gநியூசிலாந்து " + + "பகலொளி நேரம்Fநியூஃபவுண்ட்லாந்து நேரம்\\நியூஃபவுண்ட்லாந்து நிலையான நேரம" + + "்Yநியூஃபவுண்ட்லாந்து பகலொளி நேரம்\x1cநியு நேரம்8நார்ஃபோக் தீவு நேரம்Kப" + + "ெர்னாண்டோ டி நோரன்ஹா நேரம்dபெர்னான்டோ டி நோரோன்ஹா நிலையான நேரம்[பெர்னா" + + "ன்டோ டி நோரோன்ஹா கோடை நேரம்Hவடக்கு மரினா தீவுகள் நேரம்:நோவோசிபிரிஸ்க் " + + "நேரம்Pநோவோசிபிரிஸ்க் நிலையான நேரம்Gநோவோசிபிரிஸ்க் கோடை நேரம்%ஓம்ஸ்க் ந" + + "ேரம்;ஓம்ஸ்க் நிலையான நேரம்2ஓம்ஸ்க் கோடை நேரம்.பாகிஸ்தான் நேரம்Dபாகிஸ்த" + + "ான் நிலையான நேரம்;பாகிஸ்தான் கோடை நேரம்\x1fபாலவ் நேரம்?பபுவா நியூ கினி" + + "யா நேரம்%பராகுவே நேரம்;பராகுவே நிலையான நேரம்2பராகுவே கோடை நேரம்\x1cபெர" + + "ு நேரம்2பெரு நிலையான நேரம்)பெரு கோடை நேரம்.பிலிப்பைன் நேரம்Dபிலிப்பைன்" + + " நிலையான நேரம்;பிலிப்பைன் கோடை நேரம்Aஃபோனிக்ஸ் தீவுகள் நேரம்_செயின்ட் பி" + + "யரி & மிக்குயிலான் நேரம்uசெயின்ட் பியரி & மிக்குயிலான் நிலையான நேரம்rச" + + "ெயின்ட் பியரி & மிக்குயிலான் பகலொளி நேரம்4பிட்கெய்ர்ன் நேரம்\x22போனாபே" + + " நேரம்.பியாங்யாங் நேரம்.கைஜைலோர்டா நேரம்5கைஜைலோர்டா தர நேரம்;கைஜைலோர்டா " + + "கோடை நேரம்+ரீயூனியன் நேரம்\x22ரோதேரா நேரம்\x22சகலின் நேரம்8சகலின் நிலை" + + "யான நேரம்/சகலின் கோடை நேரம்\x1cசமரா நேரம்#சமரா தர நேரம்)சமரா கோடை நேரம" + + "்\x1fசமோவா நேரம்5சமோவா நிலையான நேரம்2சமோவா பகலொளி நேரம்(சீசெல்ஸ் நேரம்" + + "Gசிங்கப்பூர் நிலையான நேரம்8சாலமன் தீவுகள் நேரம்;தெற்கு ஜார்ஜியா நேரம்(சு" + + "ரினாம் நேரம்\x22ஸ்யோவா நேரம்\x1fதஹிதி நேரம்\x22தாய்பே நேரம்8தாய்பே நில" + + "ையான நேரம்5தாய்பே பகலொளி நேரம்1தஜிகிஸ்தான் நேரம்.டோக்கெலாவ் நேரம்\x22ட" + + "ோங்கா நேரம்8டோங்கா நிலையான நேரம்/டோங்கா கோடை நேரம்\x1cசுக் நேரம்@துர்க" + + "்மெனிஸ்தான் நேரம்Vதுர்க்மெனிஸ்தான் நிலையான நேரம்Mதுர்க்மெனிஸ்தான் கோடை" + + " நேரம்\x22துவாலு நேரம்%உருகுவே நேரம்;உருகுவே நிலையான நேரம்2உருகுவே கோடை " + + "நேரம்7உஸ்பெகிஸ்தான் நேரம்Mஉஸ்பெகிஸ்தான் நிலையான நேரம்Dஉஸ்பெகிஸ்தான் கோ" + + "டை நேரம்+வனுவாட்டு நேரம்Aவனுவாட்டு நிலையான நேரம்8வனுவாட்டு கோடை நேரம்(" + + "வெனிசுலா நேரம்:விளாடிவோஸ்டோக் நேரம்Pவிளாடிவோஸ்டோக் நிலையான நேரம்Gவிளாட" + + "ிவோஸ்டோக் கோடை நேரம்4வோல்கோக்ராட் நேரம்Jவோல்கோக்ராட் நிலையான நேரம்Aவோல" + + "்கோக்ராட் கோடை நேரம்(வோஸ்டோக் நேரம்)வேக் தீவு நேரம்Tவாலிஸ் மற்றும் ஃப்" + + "யூடுனா நேரம்+யகுட்ஸ்க் நேரம்Aயகுட்ஸ்க் நிலையான நேரம்8யகுட்ஸ்க் கோடை நே" + + "ரம்=யேகாடெரின்பர்க் நேரம்Sயேகாடெரின்பர்க் நிலையான நேரம்Jயேகாடெரின்பர்க" + + "் கோடை நேரம்" + +var bucket96 string = "" + // Size: 26015 bytes + "\x06జన\x0fఫిబ్ర\x12మార్చి\x0fఏప్రి\x06మే\x0cజూన్\x0cజులై\x06ఆగ\x15సెప్టె" + + "ం\x0fఅక్టో\x09నవం\x0fడిసెం\x03జ\x06ఫి\x06మా\x03ఏ\x06జూ\x06జు\x03ఆ\x06స" + + "ె\x03అ\x03న\x06డి\x0fజనవరి\x18ఫిబ్రవరి\x15ఏప్రిల్\x12ఆగస్టు\x1eసెప్టెం" + + "బర్\x18అక్టోబర్\x12నవంబర్\x18డిసెంబర్\x09ఆది\x09సోమ\x0cమంగళ\x09బుధ\x0c" + + "గురు\x0fశుక్ర\x09శని\x06సో\x03మ\x06బు\x06గు\x06శు\x03శ\x06మం\x15ఆదివార" + + "ం\x15సోమవారం\x18మంగళవారం\x15బుధవారం\x18గురువారం\x1bశుక్రవారం\x15శనివార" + + "ం\x0dత్రై1\x0dత్రై2\x0dత్రై3\x0dత్రై4\x1d1వ త్రైమాసం\x1d2వ త్రైమాసం" + + "\x1d3వ త్రైమాసం\x1d4వ త్రైమాసం.మొదటి త్రైమాసికం.రెండవ త్రైమాసికం+మూడవ త్" + + "రైమాసికం1నాల్గవ త్రైమాసికం\x1eఅర్థరాత్రి\x0cఉదయం\x1bమధ్యాహ్నం\x18సాయంత" + + "్రం\x12రాత్రి\x03ఉ\x06సా+క్రీస్తు పూర్వంAప్రస్తుత శకానికి పూర్వం\x22క్" + + "రీస్తు శకం\x22ప్రస్తుత శకం\x12క్రీపూ\x0fక్రీశ\x0fd, MMMM y, EEEE\x12చై" + + "త్రం\x12వైశాఖం\x18జ్యేష్ఠం\x0fఆషాఢం\x15శ్రావణం\x18భాద్రపదం\x18ఆశ్వయుజం" + + "\x18కార్తీకం\x1bమార్గశిరం\x12పుష్యం\x0cమాఘం\x15ఫల్గుణం\x06శక\x1aయుగం, శక" + + "ము\x18సంవత్సరం\x1fగత సంవత్సరం\x1cఈ సంవత్సరం+తదుపరి సంవత్సరం\x22{0} సంవ" + + "త్సరంలో({0} సంవత్సరాల్లో/{0} సంవత్సరం క్రితం2{0} సంవత్సరాల క్రితం\x07స" + + "ం.\x11{0} సం.లో\x1e{0} సం. క్రితం\x1eత్రైమాసికం%గత త్రైమాసికం\x22ఈ త్ర" + + "ైమాసికం1తదుపరి త్రైమాసికం({0} త్రైమాసికంలో.{0} త్రైమాసికాల్లో5{0} త్రై" + + "మాసికం క్రితం8{0} త్రైమాసికాల క్రితం\x0dత్రై.\x1d{0} త్రైమా.లో#{0} త్ర" + + "ైమా.ల్లో*{0} త్రైమా. క్రితం\x09నెల\x10గత నెల\x0dఈ నెల\x1cతదుపరి నెల" + + "\x13{0} నెలలో\x19{0} నెలల్లో {0} నెల క్రితం#{0} నెలల క్రితం\x06నె\x0fవార" + + "ము\x13గత వారం\x10ఈ వారం\x1fతదుపరి వారం\x16{0} వారంలో\x1c{0} వారాల్లో#{" + + "0} వారం క్రితం&{0} వారాల క్రితం\x10{0} రోజు\x06వా\x0cదినం\x0fమొన్న\x0fని" + + "న్న\x10ఈ రోజు\x0cరేపు\x18ఎల్లుండి\x16{0} రోజులో\x1c{0} రోజుల్లో#{0} రో" + + "జు క్రితం&{0} రోజుల క్రితం\x06ది\x11+{0} రోజు\x1fవారంలో రోజు\x1cగత ఆది" + + "వారం\x19ఈ ఆదివారం(తదుపరి ఆదివారం\x1f{0} ఆదివారంలో%{0} ఆదివారాల్లో/{0} " + + "ఆదివారాల క్రితం\x11గత ఆది.\x0eఈ ఆది.\x1dతదుపరి ఆది.\x0aగత ఆ\x07ఈ ఆ\x16" + + "తదుపరి ఆ\x1cగత సోమవారం\x19ఈ సోమవారం(తదుపరి సోమవారం\x1f{0} సోమవారంలో" + + "\x22{0} సోమవారాలలో,{0} సోమవారం క్రితం/{0} సోమవారాల క్రితం\x11గత సోమ.\x0e" + + "ఈ సోమ.\x1dతదుపరి సోమ.\x0dగత సో\x0aఈ సో\x19తదుపరి సో\x1fగత మంగళవారం\x1c" + + "ఈ మంగళవారం+తదుపరి మంగళవారం\x22{0} మంగళవారంలో%{0} మంగళవారాలలో/{0} మంగళవ" + + "ారం క్రితం2{0} మంగళవారాల క్రితం\x14గత మంగళ.\x11ఈ మంగళ. తదుపరి మంగళ." + + "\x0dగత మం\x0aఈ మం\x19తదుపరి మం\x1cగత బుధవారం\x19ఈ బుధవారం(తదుపరి బుధవారం" + + "\x1f{0} బుధవారంలో\x22{0} బుధవారాలలో,{0} బుధవారం క్రితం/{0} బుధవారాల క్రి" + + "తం\x11గత బుధ.\x0eఈ బుధ.\x1dతదుపరి బుధ.\x0dగత బు\x0aఈ బు\x19తదుపరి బు" + + "\x1fగత గురువారం\x1cఈ గురువారం+తదుపరి గురువారం\x22{0} గురువారంలో%{0} గురు" + + "వారాలలో/{0} గురువారం క్రితం2{0} గురువారాల క్రితం\x14గత గురు.\x11ఈ గురు" + + ". తదుపరి గురు.\x0dగత గు\x0aఈ గు\x19తదుపరి గు\x22గత శుక్రవారం\x1fఈ శుక్రవ" + + "ారం.తదుపరి శుక్రవారం%{0} శుక్రవారంలో({0} శుక్రవారాలలో2{0} శుక్రవారం క్" + + "రితం5{0} శుక్రవారాల క్రితం\x17గత శుక్ర.\x14ఈ శుక్ర.#తదుపరి శుక్ర.\x0dగ" + + "త శు\x0aఈ శు\x19తదుపరి శు\x1cగత శనివారం\x19ఈ శనివారం(తదుపరి శనివారం" + + "\x1f{0} శనివారంలో\x22{0} శనివారాలలో,{0} శనివారం క్రితం/{0} శనివారాల క్రి" + + "తం\x11గత శని.\x0eఈ శని.\x1dతదుపరి శని.\x0aగత శ\x07ఈ శ\x16తదుపరి శ\x09గ" + + "ంట\x0dఈ గంట\x13{0} గంటలో\x19{0} గంటల్లో {0} గంట క్రితం#{0} గంటల క్రితం" + + "\x07గం.\x11{0} గం.లో\x1e{0} గం. క్రితం\x06గం\x15నిమిషము\x16ఈ నిమిషం\x1c{" + + "0} నిమిషంలో\x22{0} నిమిషాల్లో){0} నిమిషం క్రితం,{0} నిమిషాల క్రితం\x0dని" + + "మి.\x17{0} నిమి.లో${0} నిమి. క్రితం\x06ని\x0b+{0} ని\x0b-{0} ని\x0fసెక" + + "ను\x1bప్రస్తుతం\x19{0} సెకనులో\x1c{0} సెకన్లలో&{0} సెకను క్రితం){0} సె" + + "కన్ల క్రితం\x0aసెక.\x15{0} సెక. లో!{0} సెక. క్రితం\x0b+{0} సె\x19కాల మ" + + "ండలం\x10{0} సమయం\x1d{0} పగటి సమయం,{0} ప్రామాణిక సమయం5బ్రిటీష్ వేసవి సమ" + + "యం8ఐరిష్ ప్రామాణిక సమయం\x19ఏకర్ సమయం5ఏకర్ ప్రామాణిక సమయం)ఏకర్ వేసవి సమ" + + "యం1ఆఫ్ఘనిస్థాన్ సమయం;సెంట్రల్ ఆఫ్రికా సమయం5తూర్పు ఆఫ్రికా సమయంQదక్షిణ " + + "ఆఫ్రికా ప్రామాణిక సమయం5పశ్చిమ ఆఫ్రికా సమయంQపశ్చిమ ఆఫ్రికా ప్రామాణిక సమ" + + "యంEపశ్చిమ ఆఫ్రికా వేసవి సమయం\x22అలాస్కా సమయం>అలాస్కా ప్రామాణిక సమయం/అల" + + "ాస్కా పగటి సమయం\x22అల్మాటి సమయం>అల్మాటి ప్రామాణిక సమయం2అల్మాటి వేసవి స" + + "మయం\x22అమెజాన్ సమయం>అమెజాన్ ప్రామాణిక సమయం2అమెజాన్ వేసవి సమయం\x1cమధ్యమ" + + " సమయం8మధ్యమ ప్రామాణిక సమయం)మధ్యమ పగటి సమయం\x1fతూర్పు సమయం;తూర్పు ప్రామాణ" + + "ిక సమయం,తూర్పు పగటి సమయం(మౌంటెయిన్ సమయంDమౌంటెయిన్ ప్రామాణిక సమయం5మౌంటె" + + "యిన్ పగటి సమయం\x22పసిఫిక్ సమయం>పసిఫిక్ ప్రామాణిక సమయం/పసిఫిక్ పగటి సమయ" + + "ం\x1fఅనడైర్ సమయంDఅనాన్డ్రి ప్రామాణిక సమయం8అనాన్డ్రి వేసవి సమయం\x1cఏపియ" + + "ా సమయం8ఏపియా ప్రామాణిక సమయం)ఏపియా పగటి సమయం\x22అక్వాటు సమయం>అక్వాటు ప్" + + "రామాణిక సమయం2అక్వాటు వేసవి సమయం\x22అక్టోబె సమయం>అక్టోబె ప్రామాణిక సమయం" + + "2అక్టోబె వేసవి సమయం%అరేబియన్ సమయంAఅరేబియన్ ప్రామాణిక సమయంKఅరేబియన్ పగటి " + + "వెలుతురు సమయం+అర్జెంటీనా సమయంGఅర్జెంటీనా ప్రామాణిక సమయం;ఆర్జెంటీనా వేస" + + "వి సమయం>పశ్చిమ అర్జెంటీనా సమయంZపశ్చిమ అర్జెంటీనా ప్రామాణిక సమయంNపశ్చిమ" + + " అర్జెంటీనా వేసవి సమయం(ఆర్మేనియా సమయంDఆర్మేనియా ప్రామాణిక సమయం8ఆర్మేనియా" + + " వేసవి సమయం+అట్లాంటిక్ సమయంGఅట్లాంటిక్ ప్రామాణిక సమయం8అట్లాంటిక్ పగటి సమ" + + "యం>ఆస్ట్రేలియా మధ్యమ సమయంZఆస్ట్రేలియా మధ్యమ ప్రామాణిక సమయంKఆస్ట్రేలియా" + + " మధ్యమ పగటి సమయంTమధ్యమ ఆస్ట్రేలియన్ పశ్చిమ సమయంmమధ్యమ ఆస్ట్రేలియా పశ్చిమ" + + " ప్రామాణిక సమయంaమధ్యమ ఆస్ట్రేలియన్ పశ్చిమ పగటి సమయంAతూర్పు ఆస్ట్రేలియా స" + + "మయం]తూర్పు ఆస్ట్రేలియా ప్రామాణిక సమయంNతూర్పు ఆస్ట్రేలియా పగటి సమయంAపశ్" + + "చిమ ఆస్ట్రేలియా సమయం`పశ్చిమ ఆస్ట్రేలియన్ ప్రామాణిక సమయంQపశ్చిమ ఆస్ట్రే" + + "లియన్ పగటి సమయం+అజర్బైజాన్ సమయంGఅజర్బైజాన్ ప్రామాణిక సమయం;అజర్బైజాన్ వ" + + "ేసవి సమయం\x22అజోర్స్ సమయం>అజోర్స్ ప్రామాణిక సమయం2అజోర్స్ వేసవి సమయం+బం" + + "గ్లాదేశ్ సమయంGబంగ్లాదేశ్ ప్రామాణిక సమయం;బంగ్లాదేశ్ వేసవి సమయం\x1fభూటాన" + + "్ సమయం%బొలీవియా సమయం+బ్రెజిలియా సమయంGబ్రెజిలియా ప్రామాణిక సమయం;బ్రెజిల" + + "ియా వేసవి సమయం8బ్రూనే దరుసలామ్ సమయం,కేప్ వెర్డె సమయంHకేప్ వెర్డె ప్రామ" + + "ాణిక సమయం<కేప్ వెర్డె వేసవి సమయం>చామర్రో ప్రామాణిక సమయం\x1cచాథమ్ సమయం8" + + "చాథమ్ ప్రామాణిక సమయంBచాథమ్ పగటి వెలుతురు సమయం\x19చిలీ సమయం5చిలీ ప్రామా" + + "ణిక సమయం)చిలీ వేసవి సమయం\x19చైనా సమయం5చైనా ప్రామాణిక సమయం?చైనా పగటి వె" + + "లుతురు సమయం.చోయిబల్సాన్ సమయంJచోయిబల్సాన్ ప్రామాణిక సమయం>చోయిబల్సాన్ వే" + + "సవి సమయం5క్రిస్మస్ దీవి సమయం/కాకోస్ దీవుల సమయం%కొలంబియా సమయంAకొలంబియా " + + "ప్రామాణిక సమయం5కొలంబియా వేసవి సమయం)కుక్ దీవుల సమయంEకుక్ దీవుల ప్రామాణి" + + "క సమయంFకుక్ దీవుల అర్థ వేసవి సమయం\x1fక్యూబా సమయం;క్యూబా ప్రామాణిక సమయం" + + ",క్యూబా పగటి సమయం\x1fడేవిస్ సమయంMడ్యూమాంట్-డి’ఉర్విల్లే సమయం2తూర్పు తైమూ" + + "ర్ సమయం,ఈస్టర్ దీవి సమయంHఈస్టర్ దీవి ప్రామాణిక సమయం<ఈస్టర్ దీవి వేసవి " + + "సమయం%ఈక్వడార్ సమయంAసెంట్రల్ యూరోపియన్ సమయం]సెంట్రల్ యూరోపియన్ ప్రామాణి" + + "క సమయంQసెంట్రల్ యూరోపియన్ వేసవి సమయం;తూర్పు యూరోపియన్ సమయంWతూర్పు యూరో" + + "పియన్ ప్రామాణిక సమయంKతూర్పు యూరోపియన్ వేసవి సమయంKసుదూర-తూర్పు యూరోపియన" + + "్ సమయం;పశ్చిమ యూరోపియన్ సమయంWపశ్చిమ యూరోపియన్ ప్రామాణిక సమయంKపశ్చిమ యూ" + + "రోపియన్ వేసవి సమయంAఫాక్\u200cల్యాండ్ దీవుల సమయం]ఫాక్\u200cల్యాండ్ దీవు" + + "ల ప్రామాణిక సమయంQఫాక్\u200cల్యాండ్ దీవుల వేసవి సమయం\x19ఫిజీ సమయం5ఫిజీ " + + "ప్రామాణిక సమయం)ఫిజీ వేసవి సమయం2ఫ్రెంచ్ గయానా సమయంjఫ్రెంచ్ దక్షిణ మరియు" + + " అంటార్కిటిక్ సమయం+గాలాపాగోస్ సమయం%గాంబియర్ సమయం%జార్జియా సమయంAజార్జియా " + + "ప్రామాణిక సమయం5జార్జియా వేసవి సమయం8గిల్బర్ట్ దీవుల సమయం;గ్రీన్\u200cవి" + + "చ్ సగటు సమయంJతూర్పు గ్రీన్\u200cల్యాండ్ సమయంfతూర్పు గ్రీన్\u200cల్యాండ" + + "్ ప్రామాణిక సమయంZతూర్పు గ్రీన్\u200cల్యాండ్ వేసవి సమయంJపశ్చిమ గ్రీన్" + + "\u200cల్యాండ్ సమయంfపశ్చిమ గ్రీన్\u200cల్యాండ్ ప్రామాణిక సమయంZపశ్చిమ గ్రీ" + + "న్\u200cల్యాండ్ వేసవి సమయం;గ్వామ్ ప్రామాణిక సమయం8గల్ఫ్ ప్రామాణిక సమయం" + + "\x1cగయానా సమయం;హవాయ్-అల్యూషియన్ సమయంWహవాయ్-అల్యూషియన్ ప్రామాణిక సమయంaహవా" + + "య్-అల్యూషియన్ పగటి వెలుతురు సమయం%హాంకాంగ్ సమయంAహాంకాంగ్ ప్రామాణిక సమయం" + + "5హాంకాంగ్ వేసవి సమయం\x1fహోవ్డ్ సమయం;హోవ్డ్ ప్రామాణిక సమయం/హోవ్డ్ వేసవి స" + + "మయం\x22భారతదేశ సమయం9హిందూ మహా సముద్ర సమయం%ఇండోచైనా సమయంDసెంట్రల్ ఇండోన" + + "ేషియా సమయం>తూర్పు ఇండోనేషియా సమయం>పశ్చిమ ఇండోనేషియా సమయం\x1cఇరాన్ సమయం" + + "8ఇరాన్ ప్రామాణిక సమయంBఇరాన్ పగటి వెలుతురు సమయం1ఇరక్వుట్స్క్ సమయంMఇరక్వుట" + + "్స్క్ ప్రామాణిక సమయంAఇరక్వుట్స్క్ వేసవి సమయం(ఇజ్రాయిల్ సమయంDఇజ్రాయిల్ " + + "ప్రామాణిక సమయంNఇజ్రాయిల్ పగటి వెలుతురు సమయం\x1cజపాన్ సమయం8జపాన్ ప్రామా" + + "ణిక సమయంBజపాన్ పగటి వెలుతురు సమయంhపెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి సమయం" + + "\x84పెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి ప్రామాణిక సమయంxపెట్రోపావ్లోవ్స్క్-కా" + + "మ్ఛాట్స్కి వేసవి సమయంAతూర్పు కజకి\u200cస్తాన్ సమయం>పశ్చిమ కజకిస్తాన్ స" + + "మయం\x22కొరియన్ సమయం>కొరియన్ ప్రామాణిక సమయంHకొరియన్ పగటి వెలుతురు సమయం%" + + "కోస్రాయి సమయం=క్రాస్నోయార్స్క్ సమయంYక్రాస్నోయార్స్క్ ప్రామాణిక సమయంMక్" + + "రాస్నోయార్స్క్ వేసవి సమయం1కిర్గిస్థాన్ సమయం\x19లంకా సమయం)లైన్ దీవుల సమ" + + "యం,లార్డ్ హోవ్ సమయంHలార్డ్ హోవ్ ప్రామాణిక సమయం9లార్డ్ హోవ్ పగటి సమయం" + + "\x1cమకావ్ సమయం8మకావ్ ప్రామాణిక సమయం,మకావ్ వేసవి సమయం8మాక్క్వారీ దీవి సమయ" + + "ం\x1fమగడాన్ సమయం;మగడాన్ ప్రామాణిక సమయం/మగడాన్ వేసవి సమయం\x22మలేషియా సమ" + + "యం(మాల్దీవుల సమయం1మార్క్వేసాస్ సమయం2మార్షల్ దీవుల సమయం\x22మారిషస్ సమయం" + + ">మారిషస్ ప్రామాణిక సమయం2మారిషస్ వేసవి సమయం\x22మావ్సన్ సమయం8వాయవ్య మెక్సి" + + "కో సమయంTవాయవ్య మెక్సికో ప్రామాణిక సమయంEవాయవ్య మెక్సికో పగటి సమయం>మెక్స" + + "ికన్ పసిఫిక్ సమయంZమెక్సికన్ పసిఫిక్ ప్రామాణిక సమయంKమెక్సికన్ పసిఫిక్ ప" + + "గటి సమయం)ఉలన్ బతోర్ సమయంEఉలన్ బతోర్ ప్రామాణిక సమయం9ఉలన్ బతోర్ వేసవి సమ" + + "యం\x1fమాస్కో సమయం;మాస్కో ప్రామాణిక సమయం/మాస్కో వేసవి సమయం%మయన్మార్ సమయ" + + "ం\x19నౌరు సమయం\x1fనేపాల్ సమయం8న్యూ కాలెడోనియా సమయంTన్యూ కాలెడోనియా ప్ర" + + "ామాణిక సమయంHన్యూ కాలెడోనియా వేసవి సమయం4న్యూజిల్యాండ్ సమయంPన్యూజిల్యాండ" + + "్ ప్రామాణిక సమయంZన్యూజిల్యాండ్ పగటి వెలుతురు సమయం>న్యూఫౌండ్ ల్యాండ్ సమ" + + "యంZన్యూఫౌండ్ ల్యాండ్ ప్రామాణిక సమయంKన్యూఫౌండ్ ల్యాండ్ పగటి సమయం\x19నియ" + + "ూ సమయం2నార్ఫోక్ దీవి సమయంHఫెర్నాండో డి నొరోన్హా సమయంdఫెర్నాండో డి నొరో" + + "న్హా ప్రామాణిక సమయంXఫెర్నాండో డి నొరోన్హా వేసవి సమయంEఉత్తర మారియానా దీ" + + "వుల సమయం7నోవోసిబిర్స్క్ సమయంSనోవోసిబిర్క్స్ ప్రామాణిక సమయంGనోవోసిబిర్స" + + "్క్ వేసవి సమయం\x22ఓమ్స్క్ సమయం>ఓమ్స్క్ ప్రామాణిక సమయం2ఓమ్స్క్ వేసవి సమ" + + "యం+పాకిస్థాన్ సమయంGపాకిస్తాన్ ప్రామాణిక సమయం;పాకిస్థాన్ వేసవి సమయం\x1f" + + "పాలావ్ సమయం?పాపువా న్యూ గినియా సమయం\x22పరాగ్వే సమయం>పరాగ్వే ప్రామాణిక " + + "సమయం2పరాగ్వే వేసవి సమయం\x19పెరూ సమయం5పెరూ ప్రామాణిక సమయం)పెరూ వేసవి సమ" + + "యం+ఫిలిప్పైన్ సమయంGఫిలిప్పైన్ ప్రామాణిక సమయం;ఫిలిప్పైన్ వేసవి సమయం5ఫిన" + + "ిక్స్ దీవుల సమయంdసెయింట్ పియెర్ మరియు మిక్వెలాన్ సమయం\x80సెయింట్ పియెర" + + "్ మరియు మిక్వెలాన్ ప్రామాణిక సమయంnసెయింట్ పియర్ మరియు మిక్వెలాన్ పగటి " + + "సమయం(పిట్కైరన్ సమయం\x1fపొనేప్ సమయం+ప్యోంగాంగ్ సమయం+కిజిలోర్డా సమయంGకిజ" + + "ిలోర్డా ప్రామాణిక సమయం;కిజిలోర్డా వేసవి సమయం(రీయూనియన్ సమయం\x1fరొతేరా " + + "సమయం\x22సఖాలిన్ సమయం>సఖాలిన్ ప్రామాణిక సమయం2సఖాలిన్ వేసవి సమయం\x1cసమార" + + "ా సమయం8సమారా ప్రామాణిక సమయం,సమారా వేసవి సమయం\x1cసమోవా సమయం8సమోవా ప్రామ" + + "ాణిక సమయం,సమోవా వేసవి సమయం%సీషెల్స్ సమయంAసింగపూర్ ప్రామాణిక సమయం2సొలొమ" + + "న్ దీవుల సమయం8దక్షిణ జార్జియా సమయం%సూరినామ్ సమయం\x1fస్యోవా సమయం\x1cతహి" + + "తి సమయం\x19తైపీ సమయం5తైపీ ప్రామాణిక సమయం<తైపీ పగటి వెలుతరు సమయం.తజికిస" + + "్తాన్ సమయం%టోకెలావ్ సమయం\x1cటాంగా సమయం8టాంగా ప్రామాణిక సమయం,టాంగా వేసవ" + + "ి సమయం\x16చక్ సమయం=తుర్క్మెనిస్థాన్ సమయంYతుర్క్మెనిస్థాన్ ప్రామాణిక సమ" + + "యంMతుర్క్మెనిస్థాన్ వేసవి సమయం\x1fతువాలు సమయం\x22ఉరుగ్వే సమయం>ఉరుగ్వే " + + "ప్రామాణిక సమయం2ఉరుగ్వే వేసవి సమయం4ఉజ్బెకిస్తాన్ సమయంPఉజ్బెకిస్తాన్ ప్ర" + + "ామాణిక సమయంDఉజ్బెకిస్తాన్ వేసవి సమయం\x1cవనౌటు సమయం8వనౌటు ప్రామాణిక సమయ" + + "ం,వనౌటు వేసవి సమయం%వెనిజులా సమయం7వ్లాడివోస్టోక్ సమయంSవ్లాడివోస్టోక్ ప్" + + "రామాణిక సమయంGవ్లాడివోస్టోక్ వేసవి సమయం1వోల్గోగ్రాడ్ సమయంMవోల్గోగ్రాడ్ " + + "ప్రామాణిక సమయంAవోల్గోగ్రాడ్ వేసవి సమయం%వోస్టోక్ సమయం&వేక్ దీవి సమయంBవా" + + "లీస్ మరియు ఫుటునా సమయం+యాకుట్స్క్ సమయంGయాకుట్స్క్ ప్రామాణిక సమయం;యాకుట" + + "్స్క్ వేసవి సమయం7ఏకాటెరిన్బర్గ్ సమయంSఏకాటెరిన్బర్గ్ ప్రామాణిక సమయంGఏకా" + + "టెరిన్బర్గ్ వేసవి సమయం" + +var bucket97 string = "" + // Size: 12661 bytes + "\x05Orara\x04Omuk\x09Okwamg’\x0aOdung’el\x06Omaruk\x12Omodok’king’ol\x05" + + "Ojola\x06Opedel\x0bOsokosokoma\x06Otibar\x06Olabor\x04Opoo\x09Nakaejuma" + + "\x0bNakaebarasa\x07Nakaare\x07Nakauni\x0cNakaung’on\x08Nakakany\x0aNakas" + + "abiti\x0aAkwota abe\x0bAkwota Aane\x0bAkwota auni\x10Akwota Aung’on\x09T" + + "aparachu\x06Ebongi\x04Enzi\x04Ekan\x04Elap\x05Ewiki\x06Aparan\x04Jaan" + + "\x04Lolo\x03Moi\x05TA/EB\x04Esaa\x08Isekonde\x1eพุทธศักราช\x08พ.ศ.\x18EE" + + "EEที่ d MMMM G y\x0cจื่อ\x0cโฉ่ว\x0cอิ๋น\x0fเหม่า\x0cเฉิน\x0cซื่อ\x09อู้" + + "\x0cเว่ย\x0cเซิน\x0fโหย่ว\x06ซู\x0cฮ่าย\x12ลี่ชุน\x1bเจี่ยจื่อ\x15อี๋โฉ่" + + "ว\x18ปิ่งอิ๋น\x18ติงเหม่า\x15อู้เฉิน\x15จี่ซื่อ\x15เกิงอู้\x15ซินเว่ย" + + "\x1bเหรินเซิน\x1eกุ๋่ยโหย่ว\x15เจ่ียซู\x15อี๋ฮ่าย\x1eปิ๋ิ่งจื่อ\x15ติงโฉ" + + "่ว\x15อู้อิ๋น\x18จี๋เหม่า\x18เกิงเฉิน\x15ซินซื่อ\x18เหรินอู้\x18กุ่ยเว" + + "่ย\x1bเจี่ยเซิน\x18อี๋โหย่ว\x12ปิ่งซู\x15ติงฮ่าย\x15อู้จื่อ\x15จี๋โฉ่ว" + + "\x18เกิงอิ๋น\x18ซินเหม่า\x1bเหรินเฉิน\x15กุ่ยซ่อ\x18เจ่ียอู้\x15อี่เว่ย" + + "\x18ป่ิงเซิน\x18ติงโหย่ว\x0fอู้ซู\x15จี่ฮ่าย\x18เกิงจื่อ\x15ซินโฉ่ว\x1bเ" + + "หรินอิ๋น\x1bกุ๋ยเหม่า\x1bเจี่ยเฉิน\x15อี่ซ่ือ\x15ป่ิงอู้\x15ติงเว่ย" + + "\x15อู้เซิน\x18จี๋โหย่ว\x12เกิงซู\x15ซินฮ่าย\x1bเหรินจ่ือ\x1bกุ๋่ยโฉ่ว" + + "\x1bเจี่ยอิ๋น\x18อ๋ีเหม่า\x18ปิ่งเฉิน\x15ติงซื่อ\x12อู้อู้\x15จ่ีเว่ย" + + "\x18เกิงเซิน\x18ซินโหย่ว\x15เหรินซู\x18กุ่ยฮ่าย\x09หนู\x09วัว\x0cเสือ" + + "\x15กระต่าย\x0fมังกร\x06งู\x09ม้า\x09แพะ\x09ลิง\x1bไก่ตัวผู้\x0fสุนัข" + + "\x09หมู\x0eEEEE, U MMMM d\x0fเทาท์\x0cบาบา\x15ฮาเทอร์\x0fเคียฟ\x0cโทบา" + + "\x18อัมเชอร์\x18บารัมฮัท\x1bบาราเมาดา\x15บาชันส์\x12พาโอนา\x0fอีเปป\x0fเ" + + "มสรา\x0cนาซี\x1bเมสเคอเรม\x12เตเกมท\x12เฮดาร์\x15ทาฮ์ซัส\x0fเทอร์\x15เ" + + "ยคาทิท\x15เมกาบิต\x18เมียเซีย\x12เจนบอต\x0cเซเน\x0fฮัมเล\x0fเนแฮซ\x15พ" + + "ากูเมน\x0ad MMMM G y\x09d MMM G y\x08ม.ค.\x08ก.พ.\x0bมี.ค.\x0bเม.ย." + + "\x08พ.ค.\x0bมิ.ย.\x08ก.ค.\x08ส.ค.\x08ก.ย.\x08ต.ค.\x08พ.ย.\x08ธ.ค.\x12มกร" + + "าคม\x1eกุมภาพันธ์\x12มีนาคม\x12เมษายน\x15พฤษภาคม\x18มิถุนายน\x15กรกฎาค" + + "ม\x15สิงหาคม\x15กันยายน\x12ตุลาคม\x1bพฤศจิกายน\x15ธันวาคม\x07อา.\x04จ." + + "\x04อ.\x04พ.\x07พฤ.\x04ศ.\x04ส.\x06อา\x03จ\x03อ\x03พ\x06พฤ\x03ศ\x03ส\x1e" + + "วันอาทิตย์\x1bวันจันทร์\x1bวันอังคาร\x12วันพุธ!วันพฤหัสบดี\x18วันศุกร์" + + "\x18วันเสาร์\x14ไตรมาส 1\x14ไตรมาส 2\x14ไตรมาส 3\x14ไตรมาส 4\x1bเที่ยงคื" + + "น\x1eก่อนเที่ยง\x12เที่ยง\x1eหลังเที่ยง\x1bในตอนเช้า\x1bในตอนบ่าย\x0cบ" + + "่าย\x1bในตอนเย็น\x09ค่ำ\x15กลางคืน\x0cเช้า\x0cเย็น\x1eช่วงเที่ยง6ปีก่อ" + + "นคริสต์ศักราช-ก่อนสามัญศักราช$คริสต์ศักราช!สามัญศักราช\x1bปีก่อน ค.ศ." + + "\x0cก.ส.ศ.\x08ค.ศ.\x08ส.ศ.\x15ก่อน ค.ศ.?H นาฬิกา mm นาที ss วินาที zzzz<" + + "H นาฬิกา mm นาที ss วินาที z\x0fทิชรี\x0fเฮวาน\x12กีสเลฟ\x0fเตเวต\x0fเชว" + + "ัต\x14อาดาร์ I\x12อาดาร์\x15อาดาร์ II\x12นิสซาน\x12อิยาร์\x0fสีวัน\x0f" + + "ตามูซ\x09อัฟ\x12เอลอุล\x08ย.ศ.\x0fจิตรา\x12วิสาขา\x0fเชษฐา\x0fอัษฎา" + + "\x0fศรวณา\x0fพัตรา\x15อัศวิชา\x15การติกา\x15มฤคศิรา\x0fปุษยา\x0cมาฆะ\x12" + + "ผลคุณี\x08ม.ศ.\x10มุฮัร.\x0dเศาะ.\x0eรอบี I\x0fรอบี II\x14จุมาดา I\x15" + + "จุมาดา II\x0dเราะ.\x0dชะอ์.\x13เราะมะ.\x0dเชาว.\x16ซุลกิอฺ.\x13ซุลหิจ." + + "\x1bมุฮะร์รอม\x12ซอฟาร์\x0fรอจับ\x15ชะอะบาน\x15รอมะดอน\x12เชาวัล!ซุลกิอฺ" + + "ดะฮฺ\x1eซุลหิจญะฮฺ-ฮิจเราะห์ศักราช\x08ฮ.ศ.\x1eทะอิกะ (645–650)\x1eฮะกุ" + + "ชิ (650–671)\x1eฮากุโฮ (672–686)\x18ชุโช (686–701)\x1eทะอิโฮ (701–704)" + + "\x1bเคอุง (704–708)\x18วะโด (708–715)\x18เรกิ (715–717)\x18โยโร (717–724" + + ")\x1bจิงกิ (724–729)'เท็มเพียว (729–749)5เท็มเพียว-คัมโป (749-749)2เท็มเ" + + "พียว-โชโฮ (749-757)2เท็มเพียว-โฮจิ (757-765)8เท็มเพียว-จิงโงะ (765-767" + + "),จิงโงะ-เคอุง (767-770)\x18โฮกิ (770–780)\x1eเท็นโอ (781–782)-เอ็นเรียะ" + + "กุ (782–806)\x1eดะอิโด (806–810)\x1bโคนิง (810–824)\x1eเท็นโช (824–834" + + ")\x18โชวะ (834–848)\x18คะโจ (848–851)\x1bนินจุ (851–854)!ซะอิโกะ (854–85" + + "7)!เท็นนัง (857–859)\x1bโจงัง (859–877)\x1eเก็งเก (877–885)\x1bนินนะ (88" + + "5–889)$คัมเพียว (889–898)\x1eโชตะอิ (898–901)\x1eเอ็งงิ (901–923)\x1eเอ็" + + "นโช (923–931)\x18โชเฮ (931–938)'เท็งเงียว (938–947)-เท็นเรียะกุ (947–9" + + "57)'เท็นโตะกุ (957–961)\x18โอวะ (961–964)\x18โคโฮ (964–968)\x1bอันนะ (96" + + "8–970)'เท็นโระกุ (970–973)$เท็นเอ็ง (973–976)\x1eโจเง็ง (976–978)$เท็งเง" + + "็ง (978–983)\x1bเอกัง (983–985)\x1bคันนะ (985–987)\x1eเอเอ็ง (987–989)" + + "\x18เอโซ (989–990)'โชเรียะกุ (990–995)!โชโตะกุ (995–999)\x19โชโฮ (999–10" + + "04)\x1dคันโก (1004–1012)\x1aโชวะ (1012–1017) คันนิง (1017–1021)\x1dจิอัง" + + " (1021–1024)\x1dมันจุ (1024–1028) โชเง็ง (1028–1037))โชเรียะกุ (1037–104" + + "0)\x1dโชคีว (1040–1044)&คันโตะกุ (1044–1046)\x1aเอโช (1046–1053) เท็งงิ " + + "(1053–1058)\x1aโคเฮ (1058–1065))จิเรียะกุ (1065–1069)#เอ็งคีว (1069–1074" + + ")\x1aโชโฮ (1074–1077))โชเรียะกุ (1077–1081)\x1dเอโฮะ (1081–1084)#โอโตะกุ" + + " (1084–1087)\x1dคันจิ (1087–1094)\x1dคะโฮะ (1094–1096)\x1aเอโช (1096–109" + + "7)#โชโตะกุ (1097–1099)\x1aโควะ (1099–1104)\x1aโชจิ (1104–1106)\x1aคะโช (" + + "1106–1108)#เท็นนิง (1108–1110) เท็นเอ (1110–1113)\x1dเอกีว (1113–1118) เ" + + "ก็นเอ (1118–1120) โฮะอัง (1120–1124) เท็นจิ (1124–1126) ดะอิจิ (1126–1" + + "131) เท็นโช (1131–1132)\x1aโชโช (1132–1135)#โฮะเอ็ง (1135–1141)\x1aเอจิ " + + "(1141–1142)\x1aโคจิ (1142–1144) เท็นโย (1144–1145) คีวอัง (1145–1151)" + + "\x1dนิมเป (1151–1154)\x1dคีวจุ (1154–1156)#โฮะเง็ง (1156–1159)\x1aเฮจิ (" + + "1159–1160))เอเรียะกุ (1160–1161)\x1aโอโฮ (1161–1163)\x1dโชกัง (1163–1165" + + ")\x1dเอมัง (1165–1166) นินอัง (1166–1169)\x1aคะโอ (1169–1171)\x1dโชอัง (" + + "1171–1175)#อังเง็ง (1175–1177)\x1aจิโช (1177–1181)\x1aโยวะ (1181–1182)" + + "\x1aจุเอ (1182–1184)/เก็นเรียะกุ (1184–1185)\x1dบุนจิ (1185–1190)#เค็งกี" + + "ว (1190–1199)\x1aโชจิ (1199–1201)#เค็นนิง (1201–1204)#เก็งกีว (1204–12" + + "06) เค็นเอ (1206–1207) โชเก็ง (1207–1211)/เค็นเรียะกุ (1211–1213) เค็มโป" + + " (1213–1219)\x1dโชกีว (1219–1222)\x1aโจโอ (1222–1224)#เก็นนิง (1224–1225" + + ")#คะโระกุ (1225–1227)\x1dอันเต (1227–1229)\x1dคังกิ (1229–1232)\x1aโจเอ " + + "(1232–1233)&เท็มปุกุ (1233–1234),บุนเรียะกุ (1234–1235)\x1aคะเต (1235–12" + + "38),เรียะกุนิง (1238–1239) เอ็นโอ (1239–1240)\x1dนินจิ (1240–1243)#คังเง" + + "็ง (1243–1247)\x1aโฮจิ (1247–1249) เค็นโช (1249–1256) โคเง็ง (1256–125" + + "7)\x1aโชกะ (1257–1259) โชเง็ง (1259–1260)\x1dบุนโอ (1260–1261)\x1aโคโช (" + + "1261–1264)\x1dบุนเอ (1264–1275) เค็นจิ (1275–1278)\x1dโคอัง (1278–1288)" + + "\x1aโชโอ (1288–1293)\x1dเอนิง (1293–1299)\x1dโชอัง (1299–1302)&เค็งเง็ง " + + "(1302–1303) คะเง็ง (1303–1306)#โทะกุจิ (1306–1308) เอ็งเก (1308–1311)" + + "\x1aโอโช (1311–1312)\x1aโชวะ (1312–1317)\x1dบุมโป (1317–1319) เก็นโอ (13" + + "19–1321))เก็งเกียว (1321–1324)\x1aโชชู (1324–1326)#คะเระกิ (1326–1329))เ" + + "ก็นโตะกุ (1329–1331) เก็งโก (1331–1334) เค็มมุ (1334–1336)&เอ็งเง็ง (1" + + "336–1340)#โคโกะกุ (1340–1346)\x1aโชเฮ (1346–1370))เค็นโตะกุ (1370–1372)" + + "\x1dบุนชู (1372–1375) เท็นจุ (1375–1379))โคเรียะกุ (1379–1381)\x1aโควะ (" + + "1381–1384) เก็นชู (1384–1392)#เมโตะกุ (1384–1387)\x1aคะเค (1387–1389)" + + "\x1aโคโอ (1389–1390)#เมโตะกุ (1390–1394)\x1aโอเอ (1394–1428)\x1aโชโช (14" + + "28–1429)#เอเกียว (1429–1441) คะกิสึ (1441–1444) บุนอัง (1444–1449)#โฮโตะ" + + "กุ (1449–1452),เคียวโตะกุ (1452–1455)\x1aโคโช (1455–1457)#โชโระกุ (145" + + "7–1460)\x1dคันโช (1460–1466)\x1dบุนโช (1466–1467)\x1dโอนิง (1467–1469)" + + "\x1dบุมเม (1469–1487)#โชเกียว (1487–1489))เอ็นโตะกุ (1489–1492)\x1aเมโอ " + + "(1492–1501)\x1dบุงกิ (1501–1504)\x1aเอโช (1504–1521) ทะอิเอ (1521–1528)," + + "เคียวโระกุ (1528–1532) เท็มมน (1532–1555)\x1aโคจิ (1555–1558)#เอโระกุ " + + "(1558–1570) เก็งกิ (1570–1573) เท็นโช (1573–1592)&บุนโระกุ (1592–1596)" + + "\x1aเคโช (1596–1615) เก็งวะ (1615–1624)\x1dคันเอ (1624–1644)\x1aโชโฮ (16" + + "44–1648)\x1dเคอัง (1648–1652)\x1aโชโอ (1652–1655))เมเรียะกุ (1655–1658)" + + "\x1dมันจิ (1658–1661) คัมบุง (1661–1673) เอ็มโป (1673–1681) เท็นวะ (1681" + + "–1684)#โจเกียว (1684–1688))เก็นโระกุ (1688–1704)\x1aโฮเอ (1704–1711)#โ" + + "ชโตะกุ (1711–1716)#เคียวโฮ (1716–1736)#เก็มบุง (1736–1741)\x1dคัมโป (1" + + "741–1744))เอ็งเกียว (1744–1748)#คันเอ็ง (1748–1751))โฮเรียะกุ (1751–1764" + + ")\x1aเมวะ (1764–1772)\x1dอันเอ (1772–1781) เท็มเม (1781–1789)\x1dคันเซ (" + + "1789–1801)#เคียววะ (1801–1804)\x1dบุงกะ (1804–1818)\x1dบุนเซ (1818–1830)" + + " เท็มโป (1830–1844)\x1aโคกะ (1844–1848)\x1aคะเอ (1848–1854)\x1dอันเซ (18" + + "54–1860)#มันเอ็ง (1860–1861) บุงกีว (1861–1864) เก็นจิ (1864–1865)\x1aเค" + + "โอ (1865–1868)\x0cเมจิ\x12ทะอิโช\x0cโชวะ\x0cเฮเซ" + +var bucket98 string = "" + // Size: 22887 bytes + "'EEEEที่ d MMMM ปีGที่ y\x10d MMMM ปีG y!ฟาร์วาร์ดิน'ออร์ดิเบเฮชต์\x15คอ" + + "ร์แดด\x0fเตอร์\x15มอร์แดด\x1bชาหริวาร์\x0fเมฮร์\x0fอะบาน\x12อะซาร์\x0c" + + "เดย์\x15บาฮ์มาน\x18เอสฟานด์!ปีเปอร์เซีย'ปีก่อนไต้หวัน\x15ไต้หวัน\x0cสม" + + "ัย\x06ปี\x1bปีที่แล้ว\x0fปีนี้\x12ปีหน้า\x1aในอีก {0} ปี\x1f{0} ปีที่แ" + + "ล้ว\x11ใน {0} ปี\x12ไตรมาส'ไตรมาสที่แล้ว\x1bไตรมาสนี้\x1eไตรมาสหน้า&ใน" + + "อีก {0} ไตรมาส+{0} ไตรมาสที่แล้ว\x1dใน {0} ไตรมาส\x0fเดือน$เดือนที่แล้" + + "ว\x18เดือนนี้\x1bเดือนหน้า#ในอีก {0} เดือน.{0} เดือนที่ผ่านมา\x1aใน {0" + + "} เดือน({0} เดือนที่แล้ว\x15สัปดาห์*สัปดาห์ที่แล้ว\x1eสัปดาห์นี้!สัปดาห์" + + "หน้า)ในอีก {0} สัปดาห์4{0} สัปดาห์ที่ผ่านมาHสัปดาห์ที่เริ่มต้นวันที่ ใ" + + "น {0} สัปดาห์.{0} สัปดาห์ที่แล้ว\x09วัน!เมื่อวานซืน\x18เมื่อวาน\x12วัน" + + "นี้\x18พรุ่งนี้\x18มะรืนนี้\x1dในอีก {0} วัน({0} วันที่ผ่านมา\x14ใน {0" + + "} วัน\x22{0} วันที่แล้ว$วันในสัปดาห์3วันอาทิตย์ที่แล้ว'วันอาทิตย์นี้*วัน" + + "อาทิตย์หน้าGวันอาทิตย์ในอีก {0} สัปดาห์\\วันอาทิตย์เมื่อ {0} สัปดาห์ที" + + "่แล้ว'จันทร์ที่แล้ว\x1bจันทร์นี้\x1eจันทร์หน้า&ในอีก {0} จันทร์+{0} จั" + + "นทร์ที่แล้ว อีก {0} จันทร์-จันทร์ที่ผ่านมา'อังคารที่แล้ว\x1bอังคารนี้" + + "\x1eอังคารหน้า&ในอีก {0} อังคาร+{0} อังคารที่แล้ว อีก {0} อังคาร-อังคารท" + + "ี่ผ่านมา\x1eพุธที่แล้ว\x12พุธนี้\x15พุธหน้า\x1dในอีก {0} พุธ\x22{0} พุ" + + "ธที่แล้ว\x17อีก {0} พุธ$พุธที่ผ่านมา$พฤหัสที่แล้ว\x18พฤหัสนี้\x1bพฤหัส" + + "หน้า#ในอีก {0} พฤหัส({0} พฤหัสที่แล้ว\x1dอีก {0} พฤหัส*พฤหัสที่ผ่านมา$" + + "ศุกร์ที่แล้ว\x18ศุกร์นี้\x1bศุกร์หน้า#ในอีก {0} ศุกร์({0} ศุกร์ที่แล้ว" + + "\x1dอีก {0} ศุกร์*ศุกร์ที่ผ่านมา$เสาร์ที่แล้ว\x18เสาร์นี้\x1bเสาร์หน้า#ใ" + + "นอีก {0} เสาร์({0} เสาร์ที่แล้ว\x1dอีก {0} เสาร์*เสาร์ที่ผ่านมา\x15ช่ว" + + "งวัน\x15ชั่วโมง\x1eชั่วโมงนี้)ในอีก {0} ชั่วโมง4{0} ชั่วโมงที่ผ่านมา" + + "\x07ชม.\x12ใน {0} ชม.!{0} ชม. ที่แล้ว\x0cนาที\x15นาทีนี้ ในอีก {0} นาที+" + + "{0} นาทีที่ผ่านมา\x04น.\x17ใน {0} นาที%{0} นาทีที่แล้ว\x12วินาที\x12ขณะน" + + "ี้&ในอีก {0} วินาที1{0} วินาทีที่ผ่านมา\x06วิ\x1dใน {0} วินาที+{0} วิน" + + "าทีที่แล้ว\x15เขตเวลา\x0fเวลา{0}!เวลาออมแสง{0}$เวลามาตรฐาน{0}3เวลาสากล" + + "เชิงพิกัด3เวลาฤดูร้อนอังกฤษ<เวลามาตรฐานไอร์แลนด์\x1bเวลาอาเกร0เวลามาตร" + + "ฐานอาเกร0เวลาฤดูร้อนอาเกร-เวลาอัฟกานิสถาน-เวลาแอฟริกากลาง9เวลาแอฟริกาต" + + "ะวันออก*เวลาแอฟริกาใต้6เวลาแอฟริกาตะวันตกKเวลามาตรฐานแอฟริกาตะวันตกKเว" + + "ลาฤดูร้อนแอฟริกาตะวันตก!เวลาอะแลสกา6เวลามาตรฐานอะแลสกา<เวลาออมแสงของอะ" + + "แลสกา!เวลาอัลมาตี6เวลามาตรฐานอัลมาตี6เวลาฤดูร้อนอัลมาตี!เวลาแอมะซอน6เว" + + "ลามาตรฐานแอมะซอน6เวลาฤดูร้อนแอมะซอนKเวลาตอนกลางในอเมริกาเหนือ`เวลามาตร" + + "ฐานตอนกลางในอเมริกาเหนือ]เวลาออมแสงตอนกลางในอเมริกาเหนือWเวลาทางตะวันอ" + + "อกในอเมริกาเหนือlเวลามาตรฐานทางตะวันออกในอเมริกาเหนือiเวลาออมแสงทางตะว" + + "ันออกในอเมริกาเหนือNเวลาแถบภูเขาในอเมริกาเหนือcเวลามาตรฐานแถบภูเขาในอเ" + + "มริกาเหนือ`เวลาออมแสงแถบภูเขาในอเมริกาเหนือKเวลาแปซิฟิกในอเมริกาเหนือ`" + + "เวลามาตรฐานแปซิฟิกในอเมริกาเหนือ]เวลาออมแสงแปซิฟิกในอเมริกาเหนือ$เวลาอ" + + "ะนาดีร์9เวลามาตรฐานอะนาดีร์9เวลาฤดูร้อนอะนาดีร์\x1eเวลาอาปีอา3เวลามาตร" + + "ฐานอาปีอา0เวลาออมแสงอาปีอา!เวลาอัคตาอู6เวลามาตรฐานอัคตาอู6เวลาฤดูร้อนอ" + + "ัคตาอู!เวลาอัคโทเบ6เวลามาตรฐานอัคโทเบ6เวลาฤดูร้อนอัคโทเบ\x1eเวลาอาหรับ" + + "3เวลามาตรฐานอาหรับ0เวลาออมแสงอาหรับ-เวลาอาร์เจนตินาBเวลามาตรฐานอาร์เจนติ" + + "นาBเวลาฤดูร้อนอาร์เจนตินาKเวลาตะวันตกของอาร์เจนตินาiเวลามาตรฐานทางตะวั" + + "นตกของอาร์เจนตินาiเวลาฤดูร้อนทางตะวันตกของอาร์เจนตินา*เวลาอาร์เมเนีย?เ" + + "วลามาตรฐานอาร์เมเนีย?เวลาฤดูร้อนอาร์เมเนีย'เวลาแอตแลนติก<เวลามาตรฐานแอ" + + "ตแลนติกBเวลาออมแสงของแอตแลนติก6เวลาออสเตรเลียกลางfเวลามาตรฐานทางตอนกลา" + + "งของออสเตรเลียcเวลาออมแสงทางตอนกลางของออสเตรเลียfเวลาทางตะวันตกตอนกลาง" + + "ของออสเตรเลีย{เวลามาตรฐานทางตะวันตกตอนกลางของออสเตรเลียxเวลาออมแสงทางต" + + "ะวันตกตอนกลางของออสเตรเลียBเวลาออสเตรเลียตะวันออกiเวลามาตรฐานทางตะวันอ" + + "อกของออสเตรเลียfเวลาออมแสงทางตะวันออกของออสเตรเลีย?เวลาออสเตรเลียตะวัน" + + "ตกfเวลามาตรฐานทางตะวันตกของออสเตรเลียcเวลาออมแสงทางตะวันตกของออสเตรเลี" + + "ย0เวลาอาเซอร์ไบจานEเวลามาตรฐานอาเซอร์ไบจานEเวลาฤดูร้อนอาเซอร์ไบจาน!เวล" + + "าอะโซร์ส6เวลามาตรฐานอะโซร์ส6เวลาฤดูร้อนอะโซร์ส'เวลาบังกลาเทศ<เวลามาตรฐ" + + "านบังกลาเทศ<เวลาฤดูร้อนบังกลาเทศ\x1bเวลาภูฏาน$เวลาโบลิเวีย'เวลาบราซิเล" + + "ีย<เวลามาตรฐานบราซิเลีย<เวลาฤดูร้อนบราซิเลีย9เวลาบรูไนดารุสซาลาม'เวลาเ" + + "คปเวิร์ด<เวลามาตรฐานเคปเวิร์ด<เวลาฤดูร้อนเคปเวิร์ด\x1eเวลาเคซีย์$เวลาช" + + "ามอร์โร\x1bเวลาแชทัม0เวลามาตรฐานแชทัม-เวลาออมแสงแชทัม\x18เวลาชิลี-เวลา" + + "มาตรฐานชิลี-เวลาฤดูร้อนชิลี\x15เวลาจีน*เวลามาตรฐานจีน'เวลาออมแสงจีน'เว" + + "ลาชอยปาลชาน<เวลามาตรฐานชอยปาลชาน<เวลาฤดูร้อนชอยปาลชาน3เวลาเกาะคริสต์มา" + + "ส3เวลาหมู่เกาะโคโคส'เวลาโคลอมเบีย<เวลามาตรฐานโคลอมเบีย<เวลาฤดูร้อนโคลอ" + + "มเบีย-เวลาหมู่เกาะคุกBเวลามาตรฐานหมู่เกาะคุกQเวลาครึ่งฤดูร้อนหมู่เกาะค" + + "ุก\x1bเวลาคิวบา0เวลามาตรฐานคิวบา6เวลาออมแสงของคิวบา\x1bเวลาเดวิส<เวลาด" + + "ูมองต์ดูร์วิลล์6เวลาติมอร์ตะวันออก0เวลาเกาะอีสเตอร์Eเวลามาตรฐานเกาะอีส" + + "เตอร์Eเวลาฤดูร้อนเกาะอีสเตอร์'เวลาเอกวาดอร์'เวลายุโรปกลาง<เวลามาตรฐานย" + + "ุโรปกลาง<เวลาฤดูร้อนยุโรปกลาง3เวลายุโรปตะวันออกHเวลามาตรฐานยุโรปตะวันอ" + + "อกHเวลาฤดูร้อนยุโรปตะวันออก<เวลายุโรปตะวันออกไกล0เวลายุโรปตะวันตกEเวลา" + + "มาตรฐานยุโรปตะวันตกEเวลาฤดูร้อนยุโรปตะวันตกBเวลาหมู่เกาะฟอล์กแลนด์Wเวล" + + "ามาตรฐานหมู่เกาะฟอล์กแลนด์Wเวลาฤดูร้อนหมู่เกาะฟอล์กแลนด์\x18เวลาฟิจิ-เ" + + "วลามาตรฐานฟิจิ-เวลาฤดูร้อนฟิจิ0เวลาเฟรนช์เกียนาcเวลาเฟรนช์เซาเทิร์นและ" + + "แอนตาร์กติก'เวลากาลาปาโกส'เวลาแกมเบียร์$เวลาจอร์เจีย9เวลามาตรฐานจอร์เจ" + + "ีย9เวลาฤดูร้อนจอร์เจีย?เวลาหมู่เกาะกิลเบิร์ต3เวลามาตรฐานกรีนิช?เวลากรี" + + "นแลนด์ตะวันออกTเวลามาตรฐานกรีนแลนด์ตะวันออกTเวลาฤดูร้อนกรีนแลนด์ตะวันอ" + + "อก<เวลากรีนแลนด์ตะวันตกQเวลามาตรฐานกรีนแลนด์ตะวันตกQเวลาฤดูร้อนกรีนแลน" + + "ด์ตะวันตก\x15เวลากวม\x1bเวลากัลฟ์!เวลากายอานา7เวลาฮาวาย-อะลูเชียนLเวลา" + + "มาตรฐานฮาวาย-อะลูเชียนIเวลาออมแสงฮาวาย-อะลูเชียน\x1eเวลาฮ่องกง3เวลามาต" + + "รฐานฮ่องกง3เวลาฤดูร้อนฮ่องกง\x1bเวลาฮอฟด์0เวลามาตรฐานฮอฟด์0เวลาฤดูร้อน" + + "ฮอฟด์!เวลาอินเดีย9เวลามหาสมุทรอินเดีย$เวลาอินโดจีนBเวลาอินโดนีเซียตอนก" + + "ลางQเวลาอินโดนีเซียฝั่งตะวันออกNเวลาอินโดนีเซียฝั่งตะวันตก!เวลาอิหร่าน" + + "6เวลามาตรฐานอิหร่าน3เวลาออมแสงอิหร่าน*เวลาอีร์คุตสค์?เวลามาตรฐานอีร์คุตส" + + "ค์?เวลาฤดูร้อนอีร์คุตสค์$เวลาอิสราเอล9เวลามาตรฐานอิสราเอล6เวลาออมแสงอิ" + + "สราเอล!เวลาญี่ปุ่น6เวลามาตรฐานญี่ปุ่น3เวลาออมแสงญี่ปุ่น$เวลาคัมชัตคาRเ" + + "วลาเปโตรปัฟลอฟสค์-คัมชัตสกีgเวลาฤดูร้อนเปโตรปัฟลอฟสค์-คัมชัตสกี?เวลาคา" + + "ซัคสถานตะวันออก<เวลาคาซัคสถานตะวันตก\x1eเวลาเกาหลี3เวลามาตรฐานเกาหลี0เ" + + "วลาออมแสงเกาหลี\x1bเวลาคอสไร-เวลาครัสโนยาสค์Bเวลามาตรฐานครัสโนยาสค์Bเว" + + "ลาฤดูร้อนครัสโนยาสค์-เวลาคีร์กีซสถาน\x1bเวลาลังกา0เวลาหมู่เกาะไลน์'เวล" + + "าลอร์ดโฮว์<เวลามาตรฐานลอร์ดโฮว์9เวลาออมแสงลอร์ดโฮว์\x1eเวลามาเก๊า3เวลา" + + "มาตรฐานมาเก๊า3เวลาฤดูร้อนมาเก๊า0เวลาเกาะแมกควอรี!เวลามากาดาน6เวลามาตรฐ" + + "านมากาดาน6เวลาฤดูร้อนมากาดาน$เวลามาเลเซีย$เวลามัลดีฟส์'เวลามาร์เคซัส?เ" + + "วลาหมู่เกาะมาร์แชลล์'เวลามอริเชียส<เวลามาตรฐานมอริเชียสEเวลาฤดูร้อนของ" + + "มอริเชียส!เวลามอว์สันWเวลาเม็กซิโกตะวันตกเฉียงเหนือlเวลามาตรฐานเม็กซิโ" + + "กตะวันตกเฉียงเหนือiเวลาออมแสงเม็กซิโกตะวันตกเฉียงเหนือ9เวลาแปซิฟิกเม็ก" + + "ซิโกNเวลามาตรฐานแปซิฟิกเม็กซิโกKเวลาออมแสงแปซิฟิกเม็กซิโก-เวลาอูลานบาต" + + "อร์Bเวลามาตรฐานอูลานบาตอร์Bเวลาฤดูร้อนอูลานบาตอร์\x1bเวลามอสโก0เวลามาต" + + "รฐานมอสโก0เวลาฤดูร้อนมอสโก\x18เวลาพม่า\x1eเวลานาอูรู\x1bเวลาเนปาล3เวลา" + + "นิวแคลิโดเนียHเวลามาตรฐานนิวแคลิโดเนียHเวลาฤดูร้อนนิวแคลิโดเนีย*เวลานิ" + + "วซีแลนด์?เวลามาตรฐานนิวซีแลนด์<เวลาออมแสงนิวซีแลนด์3เวลานิวฟันด์แลนด์H" + + "เวลามาตรฐานนิวฟันด์แลนด์Eเวลาออมแสงนิวฟันด์แลนด์\x1eเวลานีอูเอ3เวลาเกา" + + "ะนอร์ฟอล์กBเวลาหมู่เกาะเฟอร์นันโดWเวลามาตรฐานหมู่เกาะเฟอร์นันโด`เวลาฤด" + + "ูร้อนของหมู่เกาะเฟอร์นันโดKเวลาหมู่เกาะมาเรียนาเหนือ-เวลาโนโวซีบีสค์Bเ" + + "วลามาตรฐานโนโวซีบีสค์Bเวลาฤดูร้อนโนโวซีบีสค์\x1eเวลาออมสค์3เวลามาตรฐาน" + + "ออมสค์3เวลาฤดูร้อนออมสค์$เวลาปากีสถาน9เวลามาตรฐานปากีสถาน9เวลาฤดูร้อนป" + + "ากีสถาน\x1bเวลาปาเลา0เวลาปาปัวนิวกินี$เวลาปารากวัย9เวลามาตรฐานปารากวัย" + + "9เวลาฤดูร้อนปารากวัย\x18เวลาเปรู-เวลามาตรฐานเปรู-เวลาฤดูร้อนเปรู*เวลาฟิล" + + "ิปปินส์?เวลามาตรฐานฟิลิปปินส์?เวลาฤดูร้อนฟิลิปปินส์9เวลาหมู่เกาะฟินิกซ" + + "์Eเวลาแซงปีแยร์และมีเกอลงZเวลามาตรฐานแซงปีแยร์และมีเกอลง`เวลาออมแสงของ" + + "แซงปีแยร์และมีเกอลง$เวลาพิตแคร์น\x1eเวลาโปนาเป$เวลาเปียงยาง0เวลาคืยซิล" + + "ออร์ดาEเวลามาตรฐานคืยซิลออร์ดาEเวลาฤดูร้อนคืยซิลออร์ดา$เวลาเรอูนียง" + + "\x1eเวลาโรธีรา!เวลาซาคาลิน6เวลามาตรฐานซาคาลิน6เวลาฤดูร้อนซาคาลิน\x1eเวลา" + + "ซามารา3เวลามาตรฐานซามารา3เวลาฤดูร้อนซามารา\x1bเวลาซามัว0เวลามาตรฐานซาม" + + "ัว0เวลาฤดูร้อนซามัว!เวลาเซเชลส์$เวลาสิงคโปร์9เวลาหมู่เกาะโซโลมอน3เวลาเ" + + "ซาท์จอร์เจีย$เวลาซูรินาเม\x1eเวลาไซโยวา\x1eเวลาตาฮีตี\x18เวลาไทเป-เวลา" + + "มาตรฐานไทเป*เวลาออมแสงไทเป*เวลาทาจิกิสถาน!เวลาโตเกเลา\x1bเวลาตองกา0เวล" + + "ามาตรฐานตองกา0เวลาฤดูร้อนตองกา\x15เวลาชุก6เวลาเติร์กเมนิสถานKเวลามาตรฐ" + + "านเติร์กเมนิสถานKเวลาฤดูร้อนเติร์กเมนิสถาน\x1eเวลาตูวาลู$เวลาอุรุกวัย9" + + "เวลามาตรฐานอุรุกวัย9เวลาฤดูร้อนอุรุกวัย-เวลาอุซเบกิสถานBเวลามาตรฐานอุซ" + + "เบกิสถานBเวลาฤดูร้อนอุซเบกิสถาน$เวลาวานูอาตู9เวลามาตรฐานวานูอาตู9เวลาฤ" + + "ดูร้อนวานูอาตู*เวลาเวเนซุเอลา-เวลาวลาดีวอสตอคBเวลามาตรฐานวลาดีวอสตอคBเ" + + "วลาฤดูร้อนวลาดีวอสตอค'เวลาวอลโกกราด<เวลามาตรฐานวอลโกกราด<เวลาฤดูร้อนวอ" + + "ลโกกราด\x1eเวลาวอสตอค!เวลาเกาะเวก9เวลาวาลลิสและฟุตูนา$เวลายาคุตสค์9เวล" + + "ามาตรฐานยาคุตสค์9เวลาฤดูร้อนยาคุตสค์6เวลาเยคาเตรินบูร์กKเวลามาตรฐานเยค" + + "าเตรินบูร์กKเวลาฤดูร้อนเยคาเตรินบูร์ก" + +var bucket99 string = "" + // Size: 8220 bytes + "\x06ጥሪ\x06ለካ\x06መጋ\x06ሚያ\x06ግን\x06ሰነ\x06ሓም\x06ነሓ\x06መስ\x06ጥቅ\x06ሕዳ\x06ታሕ" + + "\x03ጥ\x03ለ\x03መ\x03ሚ\x03ግ\x03ሰ\x03ሓ\x03ነ\x03ሕ\x03ታ\x0cለካቲት\x0cመጋቢት\x0cሚያ" + + "ዝያ\x0cግንቦት\x09ሓምለ\x09ነሓሰ\x0fመስከረም\x0cጥቅምቲ\x09ሕዳር\x0cታሕሳስ\x06ሰን\x06ሰኑ" + + "\x06ሰሉ\x06ረቡ\x06ሓሙ\x06ዓር\x06ቀዳ\x03ረ\x03ዓ\x03ቀ\x0cሰንበት\x09ሰኑይ\x09ሠሉስ\x09ረ" + + "ቡዕ\x09ኃሙስ\x09ዓርቢ\x09ቀዳም\x03ሠ\x09ሰሉስ\x09ሓሙስ\x04ር1\x04ር2\x04ር3\x04ር4\x16" + + "ቀዳማይ ርብዒ\x16ካልኣይ ርብዒ\x16ሳልሳይ ርብዒ\x16ራብዓይ ርብዒ\x13ንጉሆ ሰዓተ\x13ድሕር ሰዓት\x0b" + + "ቅ.ል.ክ\x0bድ.ል.ክ EEEE፣ dd MMMM መዓልቲ y G EEEE፡ dd MMMM መዓልቲ y G#ቅድሚ ልደተ ክ" + + "ርስቶስ#ድሕሪ ልደተ ክርስቶስ\x03ýb\x02db\x02sb\x03çb\x02pb\x02an\x03şb\x0aýekşen" + + "be\x08duşenbe\x08sişenbe\x0açarşenbe\x09penşenbe\x04anna\x06şenbe\x02Ý" + + "\x01D\x01S\x02Ç\x01P\x01A\x02Ş\x0fd MMMM y G EEEE\x04ýan\x03few\x04mart" + + "\x03apr\x04maý\x05iýun\x05iýul\x03awg\x03sen\x03okt\x04noý\x03dek\x07ýan" + + "war\x06fewral\x05aprel\x06awgust\x09sentýabr\x08oktýabr\x07noýabr\x06dek" + + "abr\x01F\x01M\x01I\x01O\x01N\x0dd MMMM y EEEE\x07döwür\x04ýyl\x0bgeçen ý" + + "yl\x08şu ýyl\x0bindiki ýyl\x0b{0} ýyldan\x0d{0} ýyl öň\x03ý.\x0a{0}ý.-da" + + "n\x0b{0}ý. öň\x08çarýek\x10{0} çärýekden\x12{0} çärýek öň\x06çär.\x0d{0}" + + " çär-den\x0f{0} çär. öň\x0a{0} ç-den\x0c{0} ç. öň\x03aý\x0ageçen aý\x07ş" + + "u aý\x0aindiki aý\x0a{0} aýdan\x0c{0} aý öň\x05hepde\x0cgeçen hepde\x09ş" + + "u hepde\x0cindiki hepde\x0c{0} hepdeden\x0e{0} hepde öň\x04hep.\x0b{0} h" + + "ep-den\x0d{0} hep. öň\x09{0} h-den\x0b{0} h. öň\x04gün\x06düýn\x08şu gün" + + "\x05ertir\x0b{0} günden\x0d{0} gün öň\x09{0} g-den\x0b{0} g. öň\x10hepdä" + + "niň güni\x0egüniň dowamy\x05sagat\x0c{0} sagatdan\x0e{0} sagat öň\x04sag" + + ".\x0b{0} sag-dan\x0d{0} sag. öň\x0c{0} minutdan\x0e{0} minut öň\x0b{0} m" + + "in-dan\x0d{0} min. öň\x06sekunt\x0d{0} sekuntdan\x0f{0} sekunt öň\x0b{0}" + + " sek-dan\x0d{0} sek. öň\x10sagat guşaklygy\x09{0} wagty\x11{0}, tomusky " + + "wagt\x12{0}, standart wagt\x1fBeýik Britaniýa, tomusky wagt\x19Irlandiýa" + + ", standart wagt\x0aOwganystan\x0eMerkezi Afrika\x10Gündogar Afrika\x1eGü" + + "norta Afrika, standart wagt\x10Günbatar Afrika\x1fGünbatar Afrika, stand" + + "art wagt\x1eGünbatar Afrika, tomusky wagt\x08Alýaska\x17Alýaska, standar" + + "t wagt\x16Alýaska, tomusky wagt\x08Amazonka\x17Amazonka, standart wagt" + + "\x16Amazonka, tomusky wagt\x0fMerkezi Amerika\x1eMerkezi Amerika, standa" + + "rt wagt\x1dMerkezi Amerika, tomusky wagt\x10Günorta Amerika\x1fGünorta A" + + "merika, standart wagt\x1eGünorta Amerika, tomusky wagt\x13Daglyk ýeri (A" + + "BŞ)\x22Daglyk ýeri, standart wagt (ABŞ)!Daglyk ýeri, tomusky wagt (ABŞ)" + + "\x0dÝuwaş umman\x1cÝuwaş umman, standart wagt\x1bÝuwaş umman, tomusky wa" + + "gt\x04Apia\x13Apia, standart wagt\x12Apia, tomusky wagt\x0eArap ýurtlary" + + "\x1dArap ýurtlary, standart wagt\x1cArap ýurtlary, tomusky wagt\x09Argen" + + "tina\x18Argentina, standart wagt\x17Argentina, tomusky wagt\x13Günbatar " + + "Argentina\x22Günbatar Argentina, standart wagt!Günbatar Argentina, tomus" + + "ky wagt\x0aErmenistan\x19Ermenistan, standart wagt\x18Ermenistan, tomusk" + + "y wagt\x09Atlantika\x18Atlantika, standart wagt\x17Atlantika, tomusky wa" + + "gt\x13Merkezi Awstraliýa\x22Merkezi Awstraliýa, standart wagt!Merkezi Aw" + + "straliýa, tomusky wagt$Merkezi Awstraliýa, günbatar tarap3Merkezi Awstra" + + "liýa, günbatar tarap, standart wagt2Merkezi Awstraliýa, günbatar tarap, " + + "tomusky wagt\x15Gündogar Awstraliýa$Gündogar Awstraliýa, standart wagt#G" + + "ündogar Awstraliýa, tomusky wagt\x15Günbatar Awstraliýa$Günbatar Awstra" + + "liýa, standart wagt#Günbatar Awstraliýa, tomusky wagt\x0bAzerbaýjan\x1aA" + + "zerbaýjan, standart wagt\x19Azerbaýjan, tomusky wagt\x0cAzor adalary\x1b" + + "Azor adalary, standart wagt\x1aAzor adalary, tomusky wagt\x0aBangladeş" + + "\x19Bangladeş, standart wagt\x18Bangladeş, tomusky wagt\x05Butan\x09Boli" + + "wiýa\x0aBraziliýa\x19Braziliýa, standart wagt\x18Braziliýa, tomusky wagt" + + "\x12Bruneý-Darussalam\x0aKabo-Werde\x19Kabo-Werde, standart wagt\x18Kabo" + + "-Werde, tomusky wagt\x08Çamorro\x06Çatem\x15Çatem, standart wagt\x14Çate" + + "m, tomusky wagt\x05Çili\x14Çili, standart wagt\x13Çili, tomusky wagt\x06" + + "Hytaý\x15Hytaý, standart wagt\x14Hytaý, tomusky wagt\x0bÇoýbalsan\x1aÇoý" + + "balsan, standart wagt\x19Çoýbalsan, tomusky wagt\x0dKrismas adasy\x0dKok" + + "os adalary\x0aKolumbiýa\x19Kolumbiýa, standart wagt\x18Kolumbiýa, tomusk" + + "y wagt\x0cKuka adalary\x1bKuka adalary, standart wagt\x1aKuka adalary, t" + + "omusky wagt\x04Kuba\x13Kuba, standart wagt\x12Kuba, tomusky wagt\x07Deýw" + + "is\x11Dýumon-d-Ýurwil\x0fGündogar Timor\x0bPasha adasy\x1aPasha adasy, s" + + "tandart wagt\x19Pasha adasy, tomusky wagt\x07Ekwador\x10Merkezi Ýewropa" + + "\x1fMerkezi Ýewropa, standart wagt\x1eMerkezi Ýewropa, tomusky wagt\x12G" + + "ündogar Ýewropa!Gündogar Ýewropa, standart wagt Gündogar Ýewropa, tomus" + + "ky wagt\x17Uzak Gündogar Ýewropa\x12Günbatar Ýewropa!Günbatar Ýewropa, s" + + "tandart wagt Günbatar Ýewropa, tomusky wagt\x10Folklend adalary\x1fFolkl" + + "end adalary, standart wagt\x1eFolklend adalary, tomusky wagt\x04Fiji\x13" + + "Fiji, standart wagt\x12Fiji, tomusky wagt\x0eFransuz Gwiana\x1eGünorta F" + + "ransuz we Antarktika\x11Galapagos adalary\x07Gambýe\x08Gruziýa\x17Gruziý" + + "a, standart wagt\x16Gruziýa, tomusky wagt\x10Gilberta adalary\x1cGrinwiç" + + " boýunça orta wagt\x16Gündogar Grenlandiýa%Gündogar Grenlandiýa, standar" + + "t wagt$Gündogar Grenlandiýa, tomusky wagt\x16Günbatar Grenlandiýa%Günbat" + + "ar Grenlandiýa, standart wagt$Günbatar Grenlandiýa, tomusky wagt\x1bPars" + + " aýlagy, standart wagt\x07Gaýana\x0cGawaý-Aleut\x1bGawaý-Aleut, standart" + + " wagt\x1aGawaý-Aleut, tomusky wagt\x07Gonkong\x16Gonkong, standart wagt" + + "\x15Gonkong, tomusky wagt\x04Howd\x13Howd, standart wagt\x12Howd, tomusk" + + "y wagt\x09Hindistan\x0cHindi ummany\x0bHindihytaý\x13Merkezi Indoneziýa" + + "\x15Gündogar Indoneziýa\x15Günbatar Indoneziýa\x06Eýran\x15Eýran, standa" + + "rt wagt\x14Eýran, tomusky wagt\x07Irkutsk\x16Irkutsk, standart wagt\x15I" + + "rkutsk, tomusky wagt\x08Ysraýyl\x17Ysraýyl, standart wagt\x16Ysraýyl, to" + + "musky wagt\x0aÝaponiýa\x19Ýaponiýa, standart wagt\x18Ýaponiýa, tomusky w" + + "agt\x14Gündogar Gazagystan\x14Günbatar Gazagystan\x07Koreýa\x16Koreýa, s" + + "tandart wagt\x15Koreýa, tomusky wagt\x08Kosraýe\x0cKrasnoýarsk\x1bKrasno" + + "ýarsk, standart wagt\x1aKrasnoýarsk, tomusky wagt\x0aGyrgyzstan\x0dLaýn" + + " adalary\x08Lord-Hau\x17Lord-Hau, standart wagt\x16Lord-Hau, tomusky wag" + + "t\x08Makkuori\x07Magadan\x16Magadan, standart wagt\x15Magadan, tomusky w" + + "agt\x0bMalaýziýa\x09Maldiwler\x0eMarkiz adalary\x0fMarşal adalary\x09Maw" + + "rikiý\x18Mawrikiý, standart wagt\x17Mawrikiý, tomusky wagt\x06Mouson\x11" + + "D.g.-G.b. Meksika D.g.-G.b. Meksika, standart wagt\x1fD.g.-G.b. Meksika," + + " tomusky wagt\x16Meksikan Ýuwaş umman%Meksikan Ýuwaş umman, standart wag" + + "t$Meksikan Ýuwaş umman, tomusky wagt\x0aUlan-Bator\x19Ulan-Bator, standa" + + "rt wagt\x18Ulan-Bator, tomusky wagt\x06Moskwa\x15Moskwa, standart wagt" + + "\x14Moskwa, tomusky wagt\x07Mýanma\x05Nauru\x05Nepal\x11Täze Kaledoniýa " + + "Täze Kaledoniýa, standart wagt\x1fTäze Kaledoniýa, tomusky wagt\x10Täze " + + "Zelandiýa\x1fTäze Zelandiýa, standart wagt\x1eTäze Zelandiýa, tomusky wa" + + "gt\x0dNýufaundlend\x1cNýufaundlend, standart wagt\x1bNýufaundlend, tomus" + + "ky wagt\x04Niue\x07Norfolk\x14Fernandu-di-Noronýa#Fernandu-di-Noronýa, s" + + "tandart wagt\x22Fernandu-di-Noronýa, tomusky wagt\x0bNowosibirsk\x1aNowo" + + "sibirsk, standart wagt\x18Nowosibisk, tomusky wagt\x04Omsk\x13Omsk, stan" + + "dart wagt\x12Omsk, tomusky wagt\x09Päkistan\x18Päkistan, standart wagt" + + "\x17Päkistan, tomusky wagt\x05Palau\x16Papua - Täze Gwineýa\x09Paragwaý" + + "\x18Paragwaý, standart wagt\x17Paragwaý, tomusky wagt\x04Peru\x13Peru, s" + + "tandart wagt\x12Peru, tomusky wagt\x0bFilippinler\x1aFilippinler, standa" + + "rt wagt\x19Filippinler, tomusky wagt\x0eFeniks adalary\x14Sen Pýer we Mi" + + "kelon#Sen Pýer we Mikelon, standart wagt\x22Sen Pýer we Mikelon, tomusky" + + " wagt\x07Pitkern\x06Ponape\x0aReýunýon\x06Rotera\x07Sahalin\x16Sahalin, " + + "standart wagt\x15Sahalin, tomusky wagt\x05Samoa\x14Samoa, standart wagt" + + "\x13Samoa, tomusky wagt\x10Seýşel adalary\x17Singapur, standart wagt\x0f" + + "Solomon adalary\x12Günorta Georgiýa\x07Surinam\x06Sýowa\x07Taýiti\x08Taý" + + "beý\x17Taýbeý, standart wagt\x16Taýbeý, tomusky wagt\x0bTäjigistan\x07To" + + "kelau\x05Tonga\x14Tonga, standart wagt\x13Tonga, tomusky wagt\x05Çuuk" + + "\x0dTürkmenistan\x1cTürkmenistan, standart wagt\x1bTürkmenistan, tomusky" + + " wagt\x03TMT\x04TMST\x06Tuwalu\x08Urugwaý\x17Urugwaý, standart wagt\x16U" + + "rugwaý, tomusky wagt\x0bÖzbekistan\x1aÖzbekistan, standart wagt\x19Özbek" + + "istan, tomusky wagt\x07Wanuatu\x16Wanuatu, standart wagt\x15Wanuatu, tom" + + "usky wagt\x09Wenesuela\x0bWladiwostok\x1aWladiwostok, standart wagt\x19W" + + "ladiwostok, tomusky wagt\x09Wolgograd\x18Wolgograd, standart wagt\x17Wol" + + "gograd, tomusky wagt\x06Wostok\x0bWeýk adasy\x10Wollis we Futuna\x08Ýaku" + + "tsk\x17Ýakutsk, standart wagt\x16Ýakutsk, tomusky wagt\x0eÝekaterinburg" + + "\x1dÝekaterinburg, standart wagt\x1cÝekaterinburg, tomusky wagt\x04Sān" + + "\x04Fēp\x05Maʻa\x05ʻEpe\x03Mē\x03Sun\x03Siu\x05ʻAok\x03Sep\x05ʻOka\x04Nō" + + "v\x04Tīs\x01E\x01T\x08Sānuali\x08Fēpueli\x07Maʻasi\x09ʻEpeleli\x04Sune" + + "\x06Siulai\x08ʻAokosi\x08Sepitema\x09ʻOkatopa\x07Nōvema\x07Tīsema\x04Sāp" + + "\x04Mōn\x04Tūs\x03Pul\x05Tuʻa\x03Fal\x03Tok\x07Sāpate\x07Mōnite\x07Tūsit" + + "e\x08Pulelulu\x0dTuʻapulelulu\x07Falaite\x08Tokonaki\x0ekuata ʻuluaki" + + "\x08kuata ua\x0akuata tolu\x09kuata fā\x07kuata 1\x07kuata 2\x07kuata 3" + + "\x07kuata 4\x0ahengihengi\x06efiafi\x02HH\x02EA\x01H\x01K\x01C\x01L\x01S" + + "\x04Män\x04Ziš\x03Mit\x04Fró\x03Fri\x03Sam" + +var bucket100 string = "" + // Size: 11818 bytes + "\x08ki muʻa\x10taʻu ʻo Sīsū\x06kuonga\x05taʻu\x0etaʻu kuoʻosi\x09taʻú ni" + + "\x0dtaʻu kahaʻu\x14ʻi he taʻu ʻe {0}\x16taʻu ʻe {0} kuoʻosi\x05kuata\x0e" + + "kuata kuoʻosi\x0dkuata koʻeni\x0akuata hoko\x14ʻi he kuata ʻe {0}\x16kua" + + "ta ʻe {0} kuoʻosi\x07māhina\x10māhina kuoʻosi\x0bmāhiná ni\x0fmāhina kah" + + "aʻu\x16ʻi he māhina ʻe {0}\x18māhina ʻe {0} kuoʻosi\x04uike\x0duike kuoʻ" + + "osi\x08uiké ni\x0cuike kahaʻu\x13ʻi he uike ʻe {0}\x15uike ʻe {0} kuoʻos" + + "i\x15ʻi he uike ʻo e {0}\x05ʻaho\x0aʻaneheafi\x08ʻaneafi\x09ʻahó ni\x0dʻ" + + "apongipongi\x0fʻahepongipongi\x14ʻi he ʻaho ʻe {0}\x16ʻaho ʻe {0} kuoʻos" + + "i\x10ʻaho ʻo e uike\x10Sāpate kuoʻosi\x0bSāpaté ni\x0fSāpate kahaʻu%Ngaa" + + "hi Sāpate ʻe {0} ʻi he kahaʻu%Ngaahi Sāpate ʻe {0} ʻi he kuohili\x1eSāpa" + + "te ʻe {0} ʻi he kahaʻu\x1eSāpate ʻe {0} ʻi he kuohili\x10Mōnite kuoʻosi" + + "\x0bMōnité ni\x0fMōnite kahaʻu%Ngaahi Mōnite ʻe {0} ʻi he kahaʻu%Ngaahi " + + "Mōnite ʻe {0} ʻi he kuohili\x1eMōnite ʻe {0} ʻi he kahaʻu\x1eMōnite ʻe {" + + "0} ʻi he kuohili\x10Tūsite kuoʻosi\x0bTūsité ni\x0fTūsite kahaʻu%Ngaahi " + + "Tūsite ʻe {0} ʻi he kahaʻu%Ngaahi Tūsite ʻe {0} ʻi he kuohili\x1eTūsite " + + "ʻe {0} ʻi he kahaʻu\x1eTūsite ʻe {0} ʻi he kuohili\x11Pulelulu kuoʻosi" + + "\x0cPulelulú ni\x10Pulelulu kahaʻu&Ngaahi Pulelulu ʻe {0} ʻi he kahaʻu&N" + + "gaahi Pulelulu ʻe {0} ʻi he kuohili\x1fPulelulu ʻe {0} ʻi he kahaʻu\x1fP" + + "ulelulu ʻe {0} ʻi he kuohili\x16Tuʻapulelulu kuoʻosi\x11Tuʻapulelulú ni" + + "\x15Tuʻapulelulu kahaʻu+Ngaahi Tuʻapulelulu ʻe {0} ʻi he kahaʻu+Ngaahi T" + + "uʻapulelulu ʻe {0} ʻi he kuohili$Tuʻapulelulu ʻe {0} ʻi he kahaʻu$Tuʻapu" + + "lelulu ʻe {0} ʻi he kuohili\x10Falaite kuoʻosi\x0bFalaité ni\x0fFalaite " + + "kahaʻu%Ngaahi Falaite ʻe {0} ʻi he kahaʻu%Ngaahi Falaite ʻe {0} ʻi he ku" + + "ohili\x1eFalaite ʻe {0} ʻi he kahaʻu\x1eFalaite ʻe {0} ʻi he kuohili\x11" + + "Tokonaki kuoʻosi\x0cTokonakí ni\x10Tokonaki kahaʻu&Ngaahi Tokonaki ʻe {0" + + "} ʻi he kahaʻu&Ngaahi Tokonaki ʻe {0} ʻi he kuohili\x1fTokonaki ʻe {0} ʻ" + + "i he kahaʻu\x1fTokonaki ʻe {0} ʻi he kuohili\x04houa\x0fko e houa ʻeni" + + "\x13ʻi he houa ʻe {0}\x15houa ʻe {0} kuoʻosi\x11ko e miniti ʻeni\x15ʻi h" + + "e miniti ʻe {0}\x17miniti ʻe {0} kuoʻosi\x06sekoni\x09taimí ni\x15ʻi he " + + "sekoni ʻe {0}\x17sekoni ʻe {0} kuoʻosi\x0etaimi fakavahe\x09Taimi {0}" + + "\x0f{0} Taimi liliu\x10{0} Taimi totonu\x1fhoua fakapilitānia taimi lili" + + "u\x1fhoua fakaʻaealani taimi totonu\x11houa fakaʻakelī\x1ehoua fakaʻakel" + + "ī taimi totonu\x1dhoua fakaʻakelī taimi liliu\x19houa fakaʻafikānisitan" + + "i\x17houa fakaʻafelika-loto\x19houa fakaʻafelika-hahake\x18houa fakaʻafe" + + "lika-tonga\x19houa fakaʻafelika-hihifo&houa fakaʻafelika-hihifo taimi to" + + "tonu%houa fakaʻafelika-hihifo taimi liliu\x12houa fakaʻalasika\x1fhoua f" + + "akaʻalasika taimi totonu\x1ehoua fakaʻalasika taimi liliu\x12houa fakaʻa" + + "lamati\x1fhoua fakaʻalamati taimi totonu\x1ehoua fakaʻalamati taimi lili" + + "u\x13houa fakaʻamasōne houa fakaʻamasōne taimi totonu\x1fhoua fakaʻamasō" + + "ne taimi liliu\x1fhoua fakaʻamelika-tokelau loto,houa fakaʻamelika-tokel" + + "au loto taimi totonu+houa fakaʻamelika-tokelau loto taimi liliu!houa fak" + + "aʻamelika-tokelau hahake.houa fakaʻamelika-tokelau hahake taimi totonu-h" + + "oua fakaʻamelika-tokelau hahake taimi liliu#houa fakaʻamelika-tokelau mo" + + "ʻunga0houa fakaʻamelika-tokelau moʻunga taimi totonu/houa fakaʻamelika-" + + "tokelau moʻunga taimi liliu#houa fakaʻamelika-tokelau pasifika0houa faka" + + "ʻamelika-tokelau pasifika taimi totonu/houa fakaʻamelika-tokelau pasifi" + + "ka taimi liliu\x19houa fakalūsia-ʻanatili&houa fakalūsia-ʻanatili taimi " + + "totonu%houa fakalūsia-ʻanatili taimi liliu\x0dhoua fakaapia\x1ahoua faka" + + "apia taimi totonu\x19houa fakaapia taimi liliu\x11houa fakaʻakitau\x1eho" + + "ua fakaʻakitau taimi totonu\x1dhoua fakaʻakitau taimi liliu\x13houa faka" + + "ʻakitōpe houa fakaʻakitōpe taimi totonu\x1fhoua fakaʻakitōpe taimi lili" + + "u\x11houa fakaʻalepea\x1ehoua fakaʻalepea taimi totonu\x1dhoua fakaʻalep" + + "ea taimi liliu\x14houa fakaʻasenitina!houa fakaʻasenitina taimi totonu h" + + "oua fakaʻasenitina taimi liliu\x1bhoua fakaʻasenitina-hihifo(houa fakaʻa" + + "senitina-hihifo taimi totonu'houa fakaʻasenitina-hihifo taimi liliu\x12h" + + "oua fakaʻāmenia\x1fhoua fakaʻāmenia taimi totonu\x1ehoua fakaʻāmenia tai" + + "mi liliu(houa fakaʻamelika-tokelau ʻatalanitiki5houa fakaʻamelika-tokela" + + "u ʻatalanitiki taimi totonu4houa fakaʻamelika-tokelau ʻatalanitiki taimi" + + " liliu\x1choua fakaʻaositelēlia-loto)houa fakaʻaositelēlia-loto taimi to" + + "tonu(houa fakaʻaositelēlia-loto taimi liliu#houa fakaʻaositelēlia-loto-h" + + "ihifo0houa fakaʻaositelēlia-loto-hihifo taimi totonu/houa fakaʻaositelēl" + + "ia-loto-hihifo taimi liliu\x1ehoua fakaʻaositelēlia-hahake+houa fakaʻaos" + + "itelēlia-hahake taimi totonu*houa fakaʻaositelēlia-hahake taimi liliu" + + "\x1ehoua fakaʻaositelēlia-hihifo+houa fakaʻaositelēlia-hihifo taimi toto" + + "nu*houa fakaʻaositelēlia-hihifo taimi liliu\x15houa fakaʻasapaisani\x22h" + + "oua fakaʻasapaisani taimi totonu!houa fakaʻasapaisani taimi liliu\x13hou" + + "a fakaʻāsolesi houa fakaʻāsolesi taimi totonu\x1fhoua fakaʻāsolesi taimi" + + " liliu\x15houa fakapengilātesi\x22houa fakapengilātesi taimi totonu!houa" + + " fakapengilātesi taimi liliu\x10houa fakapūtani\x11houa fakapolīvia\x12h" + + "oua fakapalāsila\x1fhoua fakapalāsila taimi totonu\x1ehoua fakapalāsila " + + "taimi liliu\x10houa fakapulunei\x15houa fakamuiʻi-vēte\x22houa fakamuiʻi" + + "-vēte taimi totonu!houa fakamuiʻi-vēte taimi liliu\x0ehoua fakakeesi\x0f" + + "houa fakakamolo\x11houa fakasatihami\x1ehoua fakasatihami taimi totonu" + + "\x1dhoua fakasatihami taimi liliu\x0dhoua fakasili\x1ahoua fakasili taim" + + "i totonu\x19houa fakasili taimi liliu\x0fhoua fakasiaina\x1choua fakasia" + + "ina taimi totonu\x1bhoua fakasiaina taimi liliu\x14houa fakakoipalisani!" + + "houa fakakoipalisani taimi totonu houa fakakoipalisani taimi liliu\x17ho" + + "ua fakamotukilisimasi\x13houa fakamotukokosi\x12houa fakakolomipia\x1fho" + + "ua fakakolomipia taimi totonu\x1ehoua fakakolomipia taimi liliu\x16houa " + + "fakaʻotumotukuki#houa fakaʻotumotukuki taimi totonu\x22houa fakaʻotumotu" + + "kuki taimi liliu\x0ehoua fakakiupa\x1bhoua fakakiupa taimi totonu\x1ahou" + + "a fakakiupa taimi liliu\x0fhoua fakatavisi\x18houa fakatūmoni-tūvile\x15" + + "houa fakatimoa-hahake\x10houa fakalapanui\x1dhoua fakalapanui taimi toto" + + "nu\x1choua fakalapanui taimi liliu\x12houa fakaʻekuetoa\x16houa fakaʻeul" + + "ope-loto#houa fakaʻeulope-loto taimi totonu\x22houa fakaʻeulope-loto tai" + + "mi liliu\x18houa fakaʻeulope-hahake%houa fakaʻeulope-hahake taimi totonu" + + "$houa fakaʻeulope-hahake taimi liliu\x1dhoua fakaʻeulope-hahake-ange\x18" + + "houa fakaʻeulope-hihifo%houa fakaʻeulope-hihifo taimi totonu$houa fakaʻe" + + "ulope-hihifo taimi liliu\x1bhoua fakaʻotumotu-fokulani(houa fakaʻotumotu" + + "-fokulani taimi totonu'houa fakaʻotumotu-fokulani taimi liliu\x0dhoua fa" + + "kafisi\x1ahoua fakafisi taimi totonu\x19houa fakafisi taimi liliu\x1dhou" + + "a fakakuiana-fakafalanisē\x1ehoua fakaʻanetātikafalanisē\x13houa fakakal" + + "apakosi\x11houa fakakamipiē\x10houa fakaseōsia\x1dhoua fakaseōsia taimi " + + "totonu\x1choua fakaseōsia taimi liliu\x11houa fakakilipasi\x1ahoua fakak" + + "iliniuisi mālie\x19houa fakafonuamata-hahake&houa fakafonuamata-hahake t" + + "aimi totonu%houa fakafonuamata-hahake taimi liliu\x19houa fakafonuamata-" + + "hihifo&houa fakafonuamata-hihifo taimi totonu%houa fakafonuamata-hihifo " + + "taimi liliu\x0ehoua fakakuami\x10houa fakakūlifi\x0fhoua fakakuiana\x10h" + + "oua fakahauaʻi\x1dhoua fakahauaʻi taimi totonu\x1choua fakahauaʻi taimi " + + "liliu\x14houa fakahongi-kongi!houa fakahongi-kongi taimi totonu houa fak" + + "ahongi-kongi taimi liliu\x0fhoua fakahovite\x1choua fakahovite taimi tot" + + "onu\x1bhoua fakahovite taimi liliu\x11houa fakaʻinitia\x16houa fakamoana" + + "ʻinitia\x16houa fakaʻinitosiaina\x1ahoua fakaʻinitonisia-loto\x1choua f" + + "akaʻinitonisia-hahake\x1choua fakaʻinitonisia-hihifo\x11houa fakaʻilaani" + + "\x1ehoua fakaʻilaani taimi totonu\x1dhoua fakaʻilaani taimi liliu\x1chou" + + "a fakalūsia-ʻīkutisiki)houa fakalūsia-ʻīkutisiki taimi totonu(houa fakal" + + "ūsia-ʻīkutisiki taimi liliu\x12houa fakaʻisileli\x1fhoua fakaʻisileli t" + + "aimi totonu\x1ehoua fakaʻisileli taimi liliu\x10houa fakasiapani\x1dhoua" + + " fakasiapani taimi totonu\x1choua fakasiapani taimi liliu\x22houa fakalū" + + "sia-petelopavilovisiki/houa fakalūsia-petelopavilovisiki taimi totonu.ho" + + "ua fakalūsia-petelopavilovisiki taimi liliu\x1ahoua fakakasakitani-hahak" + + "e\x1ahoua fakakasakitani-hihifo\x0fhoua fakakōlea\x1choua fakakōlea taim" + + "i totonu\x1bhoua fakakōlea taimi liliu\x10houa fakakosilae\x1fhoua fakal" + + "ūsia-kalasinoiāsiki,houa fakalūsia-kalasinoiāsiki taimi totonu+houa fak" + + "alūsia-kalasinoiāsiki taimi liliu\x14houa fakakīkisitani\x11houa fakalan" + + "gikā\x17houa fakaʻotumotulaine\x17houa fakamotuʻeikihoue$houa fakamotuʻe" + + "ikihoue taimi totonu#houa fakamotuʻeikihoue taimi liliu\x0ehoua fakamaka" + + "u\x1bhoua fakamakau taimi totonu\x1ahoua fakamakau taimi liliu\x14houa f" + + "akamotumakuali\x18houa fakalūsia-makatani%houa fakalūsia-makatani taimi " + + "totonu$houa fakalūsia-makatani taimi liliu\x11houa fakamaleisia\x13houa " + + "fakamalativisi\x12houa fakamākesasi\x18houa fakaʻotumotumasolo\x13houa f" + + "akamaulitiusi houa fakamaulitiusi taimi totonu\x1fhoua fakamaulitiusi ta" + + "imi liliu\x10houa fakamausoni houa fakamekisikou-tokelauhihifo-houa faka" + + "mekisikou-tokelauhihifo taimi totonu,houa fakamekisikou-tokelauhihifo ta" + + "imi liliu\x1bhoua fakamekisikou-pasifika(houa fakamekisikou-pasifika tai" + + "mi totonu'houa fakamekisikou-pasifika taimi liliu\x17houa fakaʻulānipātā" + + "$houa fakaʻulānipātā taimi totonu#houa fakaʻulānipātā taimi liliu\x17hou" + + "a fakalūsia-mosikou$houa fakalūsia-mosikou taimi totonu#houa fakalūsia-m" + + "osikou taimi liliu\x0dhoua fakapema\x0ehoua fakanaulu\x0fhoua fakanepali" + + "\x19houa fakakaletōniafoʻou&houa fakakaletōniafoʻou taimi totonu%houa fa" + + "kakaletōniafoʻou taimi liliu\x12houa fakanuʻusila\x1fhoua fakanuʻusila t" + + "aimi totonu\x1ehoua fakanuʻusila taimi liliu\x19houa fakafonuaʻilofoʻou&" + + "houa fakafonuaʻilofoʻou taimi totonu%houa fakafonuaʻilofoʻou taimi liliu" + + "\x0ehoua fakaniuē\x11houa fakanoafōki\x1ehoua fakafēnanito-te-nolōnia+ho" + + "ua fakafēnanito-te-nolōnia taimi totonu*houa fakafēnanito-te-nolōnia tai" + + "mi liliu\x17houa fakamalianatokelau\x1dhoua fakalūsia-novosipīsiki*houa " + + "fakalūsia-novosipīsiki taimi totonu)houa fakalūsia-novosipīsiki taimi li" + + "liu\x19houa fakalūsia-ʻomisiki&houa fakalūsia-ʻomisiki taimi totonu%houa" + + " fakalūsia-ʻomisiki taimi liliu\x14houa fakapākisitani!houa fakapākisita" + + "ni taimi totonu houa fakapākisitani taimi liliu\x0ehoua fakapalau\x15hou" + + "a fakapapuaniukini\x11houa fakapalakuai\x1ehoua fakapalakuai taimi toton" + + "u\x1dhoua fakapalakuai taimi liliu\x0ehoua fakapelū\x1bhoua fakapelū tai" + + "mi totonu\x1ahoua fakapelū taimi liliu\x12houa fakafilipaine\x1fhoua fak" + + "afilipaine taimi totonu\x1ehoua fakafilipaine taimi liliu\x1bhoua fakaʻo" + + "tumotufoinikisi\x1dhoua fakasā-piea-mo-mikeloni*houa fakasā-piea-mo-mike" + + "loni taimi totonu)houa fakasā-piea-mo-mikeloni taimi liliu\x11houa fakap" + + "itikani\x11houa fakapōnapē\x12houa fakakisilōta\x1fhoua fakakisilōta tai" + + "mi totonu\x1ehoua fakakisilōta taimi liliu\x12houa fakalēunioni\x0fhoua " + + "fakalotela\x19houa fakalūsia-sakāline&houa fakalūsia-sakāline taimi toto" + + "nu%houa fakalūsia-sakāline taimi liliu\x16houa fakalūsia-samala#houa fak" + + "alūsia-samala taimi totonu\x22houa fakalūsia-samala taimi liliu\x11houa " + + "fakahaʻamoa\x1ehoua fakahaʻamoa taimi totonu\x1dhoua fakahaʻamoa taimi l" + + "iliu\x1ahoua fakaʻotumotu-seiseli\x11houa fakasingapoa\x1ahoua fakaʻotum" + + "otusolomone\x14houa fakasiosiatonga\x11houa fakasuliname\x0ehoua fakasio" + + "ua\x0fhoua fakatahisi\x0fhoua fakataipei\x1choua fakataipei taimi totonu" + + "\x1bhoua fakataipei taimi liliu\x13houa fakatasikitani\x10houa fakatokel" + + "au\x0ehoua fakatonga\x1bhoua fakatonga taimi totonu\x1ahoua fakatonga ta" + + "imi liliu\x0ehoua fakatūke\x18houa fakatūkimenisitani%houa fakatūkimenis" + + "itani taimi totonu$houa fakatūkimenisitani taimi liliu\x10houa fakatūval" + + "u\x12houa fakaʻulukuai\x1fhoua fakaʻulukuai taimi totonu\x1ehoua fakaʻul" + + "ukuai taimi liliu\x16houa fakaʻusipekitani#houa fakaʻusipekitani taimi t" + + "otonu\x22houa fakaʻusipekitani taimi liliu\x10houa fakavanuatu\x1dhoua f" + + "akavanuatu taimi totonu\x1choua fakavanuatu taimi liliu\x12houa fakavene" + + "suela\x1ehoua fakalūsia-valativositoki+houa fakalūsia-valativositoki tai" + + "mi totonu*houa fakalūsia-valativositoki taimi liliu\x1choua fakalūsia-vo" + + "likokalati)houa fakalūsia-volikokalati taimi totonu(houa fakalūsia-volik" + + "okalati taimi liliu\x11houa fakavositoki\x11houa fakamotuueke\x19houa fa" + + "kaʻuvea mo futuna\x1dhoua fakalūsia-ʻiākutisiki*houa fakalūsia-ʻiākutisi" + + "ki taimi totonu)houa fakalūsia-ʻiākutisiki taimi liliu!houa fakalūsia-ʻi" + + "ekatelinepūki.houa fakalūsia-ʻiekatelinepūki taimi totonu-houa fakalūsia" + + "-ʻiekatelinepūki taimi liliu" + +var bucket101 string = "" + // Size: 9487 bytes + "\x04Tût\x05Bâbe\x05Hatur\x06Keyhek\x05Tûbe\x06Imşir\x08Bermuhat\x07Bermu" + + "de\x08Peyştes\x04Bune\x04Ebip\x07Mısrî\x05Nesî\x0fG d MMMM y EEEE\x0cGGG" + + "GG d.MM.y\x03Oca\x04Şub\x03Mar\x03Nis\x03May\x03Haz\x03Tem\x04Ağu\x03Eyl" + + "\x03Eki\x03Kas\x03Ara\x04Ocak\x06Şubat\x04Mart\x05Nisan\x06Mayıs\x07Hazi" + + "ran\x06Temmuz\x08Ağustos\x06Eylül\x04Ekim\x06Kasım\x07Aralık\x03Paz\x03P" + + "zt\x03Sal\x04Çar\x03Per\x03Cum\x03Cmt\x02Pa\x02Pt\x02Sa\x03Ça\x02Pe\x02C" + + "u\x02Ct\x05Pazar\x09Pazartesi\x05Salı\x0aÇarşamba\x09Perşembe\x04Cuma" + + "\x09Cumartesi\x03Ç1\x03Ç2\x03Ç3\x03Ç4\x0a1. çeyrek\x0a2. çeyrek\x0a3. çe" + + "yrek\x0a4. çeyrek\x0dgece yarısı\x04ÖÖ\x06öğle\x03ÖS\x0föğleden önce\x0f" + + "öğleden sonra\x0cakşamüstü\x06akşam\x04gece\x02ö\x03ös\x0eMilattan Önce" + + "\x10İsa’dan Önce\x0eMilattan Sonra\x10İsa’dan Sonra\x03MÖ\x04İÖ\x02MS" + + "\x03İS\x06Tişri\x07Heşvan\x06Kislev\x05Tevet\x06Şevat\x06Veadar\x04Adar" + + "\x07Adar II\x05İyar\x05Sivan\x05Tamuz\x02Av\x04Elul\x08Muharrem\x05Safer" + + "\x0cRebiülevvel\x0bRebiülahir\x0eCemaziyelevvel\x0dCemaziyelahir\x05Rece" + + "p\x06Şaban\x07Ramazan\x07Şevval\x07Zilkade\x08Zilhicce\x05Hicri\x08d.MM." + + "y G\x09Ferverdin\x0bOrdibeheşt\x06Hordad\x03Tir\x06Mordad\x09Şehriver" + + "\x04Mehr\x04Aban\x04Azer\x03Dey\x06Behmen\x06Esfend\x0dMiladi Dönem\x04y" + + "ıl\x0bgeçen yıl\x07bu yıl\x0cgelecek yıl\x0e{0} yıl sonra\x0e{0} yıl ön" + + "ce\x07çeyrek\x0egeçen çeyrek\x0abu çeyrek\x0fgelecek çeyrek\x11{0} çeyre" + + "k sonra\x11{0} çeyrek önce\x05çyr.\x0f{0} çyr. sonra\x0f{0} çyr. önce" + + "\x09geçen ay\x05bu ay\x0agelecek ay\x0c{0} ay sonra\x0c{0} ay önce\x05ha" + + "fta\x0cgeçen hafta\x08bu hafta\x0dgelecek hafta\x0f{0} hafta sonra\x0f{0" + + "} hafta önce\x0c{0} haftası\x03hf.\x0d{0} hf. sonra\x0d{0} hf. önce\x0ce" + + "vvelsi gün\x04dün\x06bugün\x06yarın\x0böbür gün\x0e{0} gün sonra\x0e{0} " + + "gün önce\x10haftanın günü\x0cgeçen pazar\x08bu pazar\x0dgelecek pazar" + + "\x0f{0} pazar sonra\x0f{0} pazar önce\x0bgeçen paz.\x07bu paz.\x0cgelece" + + "k paz.\x0e{0} paz. sonra\x0e{0} paz. önce\x10geçen pazartesi\x0cbu pazar" + + "tesi\x11gelecek pazartesi\x13{0} pazartesi sonra\x13{0} pazartesi önce" + + "\x0bgeçen pzt.\x07bu pzt.\x0cgelecek pzt.\x0e{0} pzt. sonra\x0e{0} pzt. " + + "önce\x0cgeçen salı\x08bu salı\x0dgelecek salı\x0f{0} salı sonra\x0f{0} " + + "salı önce\x11geçen çarşamba\x0dbu çarşamba\x12gelecek çarşamba\x14{0} ça" + + "rşamba sonra\x14{0} çarşamba önce\x0cgeçen çar.\x08bu çar.\x0dgelecek ça" + + "r.\x0f{0} çar. sonra\x0f{0} çar. önce\x10geçen perşembe\x0cbu perşembe" + + "\x11gelecek perşembe\x13{0} perşembe sonra\x13{0} perşembe önce\x0bgeçen" + + " per.\x07bu per.\x0cgelecek per.\x0e{0} per. sonra\x0e{0} per. önce\x0bg" + + "eçen cuma\x07bu cuma\x0cgelecek cuma\x0e{0} cuma sonra\x0e{0} cuma önce" + + "\x10geçen cumartesi\x0cbu cumartesi\x11gelecek cumartesi\x13{0} cumartes" + + "i sonra\x13{0} cumartesi önce\x0bgeçen cmt.\x07bu cmt.\x0cgelecek cmt." + + "\x0e{0} cmt. sonra\x0e{0} cmt. önce\x08ÖÖ/ÖS\x0e{0} saat sonra\x0e{0} sa" + + "at önce\x03sa.\x0d{0} sa. sonra\x0d{0} sa. önce\x09bu dakika\x10{0} daki" + + "ka sonra\x10{0} dakika önce\x03dk.\x0d{0} dk. sonra\x0d{0} dk. önce\x06s" + + "aniye\x06şimdi\x10{0} saniye sonra\x10{0} saniye önce\x0d{0} sn. sonra" + + "\x0d{0} sn. önce\x0bsaat dilimi\x09{0} Saati\x0d{0} Yaz Saati\x12{0} Sta" + + "ndart Saati\x1cEşgüdümlü Evrensel Zaman\x14İngiltere Yaz Saati\x17İrland" + + "a Standart Saati\x0aAcre Saati\x13Acre Standart Saati\x0eAcre Yaz Saati" + + "\x10Afganistan Saati\x11Orta Afrika Saati\x12Doğu Afrika Saati\x1cGüney " + + "Afrika Standart Saati\x12Batı Afrika Saati\x1bBatı Afrika Standart Saati" + + "\x16Batı Afrika Yaz Saati\x0cAlaska Saati\x15Alaska Standart Saati\x10Al" + + "aska Yaz Saati\x0dAlmatı Saati\x16Almatı Standart Saati\x11Almatı Yaz Sa" + + "ati\x0cAmazon Saati\x15Amazon Standart Saati\x10Amazon Yaz Saati\x1bKuze" + + "y Amerika Merkezi Saati$Kuzey Amerika Merkezi Standart Saati\x1fKuzey Am" + + "erika Merkezi Yaz Saati\x19Kuzey Amerika Doğu Saati\x22Kuzey Amerika Doğ" + + "u Standart Saati\x1dKuzey Amerika Doğu Yaz Saati\x18Kuzey Amerika Dağ Sa" + + "ati!Kuzey Amerika Dağ Standart Saati\x1cKuzey Amerika Dağ Yaz Saati\x1bK" + + "uzey Amerika Pasifik Saati$Kuzey Amerika Pasifik Standart Saati\x1fKuzey" + + " Amerika Pasifik Yaz Saati\x0cAnadyr Saati\x16Anadır Standart Saati\x11A" + + "nadır Yaz Saati\x0aApia Saati\x13Apia Standart Saati\x0eApia Yaz Saati" + + "\x0bAktav Saati\x14Aktav Standart Saati\x0fAktav Yaz Saati\x0dAktöbe Saa" + + "ti\x16Aktöbe Standart Saati\x11Aktöbe Yaz Saati\x0fArabistan Saati\x18Ar" + + "abistan Standart Saati\x13Arabistan Yaz Saati\x0eArjantin Saati\x17Arjan" + + "tin Standart Saati\x12Arjantin Yaz Saati\x14Batı Arjantin Saati\x1dBatı " + + "Arjantin Standart Saati\x18Batı Arjantin Yaz Saati\x10Ermenistan Saati" + + "\x19Ermenistan Standart Saati\x14Ermenistan Yaz Saati\x0eAtlantik Saati" + + "\x17Atlantik Standart Saati\x12Atlantik Yaz Saati\x15Orta Avustralya Saa" + + "ti\x1eOrta Avustralya Standart Saati\x19Orta Avustralya Yaz Saati\x1aİçb" + + "atı Avustralya Saati#İçbatı Avustralya Standart Saati\x1eİçbatı Avustral" + + "ya Yaz Saati\x16Doğu Avustralya Saati\x1fDoğu Avustralya Standart Saati" + + "\x1aDoğu Avustralya Yaz Saati\x16Batı Avustralya Saati\x1fBatı Avustraly" + + "a Standart Saati\x1aBatı Avustralya Yaz Saati\x10Azerbaycan Saati\x19Aze" + + "rbaycan Standart Saati\x14Azerbaycan Yaz Saati\x0dAzorlar Saati\x16Azorl" + + "ar Standart Saati\x11Azorlar Yaz Saati\x10Bangladeş Saati\x19Bangladeş S" + + "tandart Saati\x14Bangladeş Yaz Saati\x0cBhutan Saati\x0dBolivya Saati" + + "\x0eBrasilia Saati\x17Brasilia Standart Saati\x12Brasilia Yaz Saati\x1cB" + + "runei Darü’s-Selam Saati\x10Cape Verde Saati\x19Cape Verde Standart Saat" + + "i\x14Cape Verde Yaz Saati\x0bCasey Saati\x0eChamorro Saati\x0dChatham Sa" + + "ati\x16Chatham Standart Saati\x11Chatham Yaz Saati\x0bŞili Saati\x14Şili" + + " Standart Saati\x0fŞili Yaz Saati\x0aÇin Saati\x13Çin Standart Saati\x0e" + + "Çin Yaz Saati\x10Çoybalsan Saati\x19Çoybalsan Standart Saati\x14Çoybals" + + "an Yaz Saati\x16Christmas Adası Saati\x14Cocos Adaları Saati\x0fKolombiy" + + "a Saati\x18Kolombiya Standart Saati\x13Kolombiya Yaz Saati\x13Cook Adala" + + "rı Saati\x1cCook Adaları Standart Saati\x1dCook Adaları Yarı Yaz Saati" + + "\x0bKüba Saati\x14Küba Standart Saati\x0fKüba Yaz Saati\x0bDavis Saati" + + "\x18Dumont-d’Urville Saati\x11Doğu Timor Saati\x15Paskalya Adası Saati" + + "\x1ePaskalya Adası Standart Saati\x19Paskalya Adası Yaz Saati\x0dEkvador" + + " Saati\x11Orta Avrupa Saati\x1aOrta Avrupa Standart Saati\x15Orta Avrupa" + + " Yaz Saati\x12Doğu Avrupa Saati\x1bDoğu Avrupa Standart Saati\x16Doğu Av" + + "rupa Yaz Saati\x17Daha Doğu Avrupa Saati\x12Batı Avrupa Saati\x1bBatı Av" + + "rupa Standart Saati\x16Batı Avrupa Yaz Saati\x17Falkland Adaları Saati F" + + "alkland Adaları Standart Saati\x1bFalkland Adaları Yaz Saati\x0aFiji Saa" + + "ti\x13Fiji Standart Saati\x0eFiji Yaz Saati\x18Fransız Guyanası Saati#Fr" + + "ansız Güney ve Antarktika Saati\x0fGalapagos Saati\x0dGambier Saati\x10G" + + "ürcistan Saati\x19Gürcistan Standart Saati\x14Gürcistan Yaz Saati\x16Gi" + + "lbert Adaları Saati\x18Greenwich Ortalama Saati\x15Doğu Grönland Saati" + + "\x1eDoğu Grönland Standart Saati\x19Doğu Grönland Yaz Saati\x15Batı Grön" + + "land Saati\x1eBatı Grönland Standart Saati\x19Batı Grönland Yaz Saati" + + "\x13Guam Standart Saati\x0dKörfez Saati\x0cGuyana Saati\x12Hawaii-Aleut " + + "Saati\x1bHawaii-Aleut Standart Saati\x16Hawaii-Aleut Yaz Saati\x0fHong K" + + "ong Saati\x18Hong Kong Standart Saati\x13Hong Kong Yaz Saati\x0aHovd Saa" + + "ti\x13Hovd Standart Saati\x0eHovd Yaz Saati\x18Hindistan Standart Saati" + + "\x13Hint Okyanusu Saati\x0fHindiçin Saati\x14Orta Endonezya Saati\x15Doğ" + + "u Endonezya Saati\x15Batı Endonezya Saati\x0bİran Saati\x14İran Standart" + + " Saati\x0fİran Yaz Saati\x0eİrkutsk Saati\x17İrkutsk Standart Saati\x12İ" + + "rkutsk Yaz Saati\x0dİsrail Saati\x16İsrail Standart Saati\x11İsrail Yaz " + + "Saati\x0dJaponya Saati\x16Japonya Standart Saati\x11Japonya Yaz Saati" + + "\x1ePetropavlovsk-Kamçatski Saati'Petropavlovsk-Kamçatski Standart Saati" + + "\x22Petropavlovsk-Kamçatski Yaz Saati\x16Doğu Kazakistan Saati\x16Batı K" + + "azakistan Saati\x0aKore Saati\x13Kore Standart Saati\x0eKore Yaz Saati" + + "\x0cKosrae Saati\x11Krasnoyarsk Saati\x1aKrasnoyarsk Standart Saati\x15K" + + "rasnoyarsk Yaz Saati\x13Kırgızistan Saati\x0bLanka Saati\x13Line Adaları" + + " Saati\x0fLord Howe Saati\x18Lord Howe Standart Saati\x13Lord Howe Yaz S" + + "aati\x0bMakao Saati\x14Makao Standart Saati\x0fMakao Yaz Saati\x16Macqua" + + "rie Adası Saati\x0dMagadan Saati\x16Magadan Standart Saati\x11Magadan Ya" + + "z Saati\x0dMalezya Saati\x0fMaldivler Saati\x15Markiz Adaları Saati\x17M" + + "arshall Adaları Saati\x0fMauritius Saati\x18Mauritius Standart Saati\x13" + + "Mauritius Yaz Saati\x0cMawson Saati\x18Kuzeybatı Meksika Saati!Kuzeybatı" + + " Meksika Standart Saati\x1cKuzeybatı Meksika Yaz Saati\x1fMeksika Pasifi" + + "k Kıyısı Saati(Meksika Pasifik Kıyısı Standart Saati#Meksika Pasifik Kıy" + + "ısı Yaz Saati\x10Ulan Batur Saati\x19Ulan Batur Standart Saati\x14Ulan " + + "Batur Yaz Saati\x0dMoskova Saati\x16Moskova Standart Saati\x11Moskova Ya" + + "z Saati\x0dMyanmar Saati\x0bNauru Saati\x0bNepal Saati\x14Yeni Kaledonya" + + " Saati\x1dYeni Kaledonya Standart Saati\x18Yeni Kaledonya Yaz Saati\x12Y" + + "eni Zelanda Saati\x1bYeni Zelanda Standart Saati\x16Yeni Zelanda Yaz Saa" + + "ti\x12Newfoundland Saati\x1bNewfoundland Standart Saati\x16Newfoundland " + + "Yaz Saati\x0aNiue Saati\x14Norfolk Adası Saati\x19Fernando de Noronha Sa" + + "ati\x22Fernando de Noronha Standart Saati\x1dFernando de Noronha Yaz Saa" + + "ti\x1cKuzey Mariana Adaları Saati\x11Novosibirsk Saati\x1aNovosibirsk St" + + "andart Saati\x15Novosibirsk Yaz Saati\x0aOmsk Saati\x13Omsk Standart Saa" + + "ti\x0eOmsk Yaz Saati\x0ePakistan Saati\x17Pakistan Standart Saati\x12Pak" + + "istan Yaz Saati\x0bPalau Saati\x15Papua Yeni Gine Saati\x0eParaguay Saat" + + "i\x17Paraguay Standart Saati\x12Paraguay Yaz Saati\x0aPeru Saati\x13Peru" + + " Standart Saati\x0ePeru Yaz Saati\x10Filipinler Saati\x19Filipinler Stan" + + "dart Saati\x14Filipinler Yaz Saati\x16Phoenix Adaları Saati\x1eSaint Pie" + + "rre ve Miquelon Saati'Saint Pierre ve Miquelon Standart Saati\x22Saint P" + + "ierre ve Miquelon Yaz Saati\x0ePitcairn Saati\x0cPonape Saati\x0fPyongya" + + "ng Saati\x11Kızılorda Saati\x1aKızılorda Standart Saati\x15Kızılorda Yaz" + + " Saati\x0dReunion Saati\x0dRothera Saati\x0dSahalin Saati\x16Sahalin Sta" + + "ndart Saati\x11Sahalin Yaz Saati\x0cSamara Saati\x15Samara Standart Saat" + + "i\x10Samara Yaz Saati\x0bSamoa Saati\x14Samoa Standart Saati\x0fSamoa Ya" + + "z Saati\x10Seyşeller Saati\x17Singapur Standart Saati\x16Solomon Adaları" + + " Saati\x14Güney Georgia Saati\x0dSurinam Saati\x0bShowa Saati\x0cTahiti " + + "Saati\x0cTaipei Saati\x15Taipei Standart Saati\x10Taipei Yaz Saati\x10Ta" + + "cikistan Saati\x0dTokelau Saati\x0bTonga Saati\x14Tonga Standart Saati" + + "\x0fTonga Yaz Saati\x0bChuuk Saati\x13Türkmenistan Saati\x1cTürkmenistan" + + " Standart Saati\x17Türkmenistan Yaz Saati\x0cTuvalu Saati\x0dUruguay Saa" + + "ti\x16Uruguay Standart Saati\x11Uruguay Yaz Saati\x11Özbekistan Saati" + + "\x1aÖzbekistan Standart Saati\x15Özbekistan Yaz Saati\x0dVanuatu Saati" + + "\x16Vanuatu Standart Saati\x11Vanuatu Yaz Saati\x0fVenezuela Saati\x11Vl" + + "adivostok Saati\x1aVladivostok Standart Saati\x15Vladivostok Yaz Saati" + + "\x0fVolgograd Saati\x18Volgograd Standart Saati\x13Volgograd Yaz Saati" + + "\x0cVostok Saati\x11Wake Adası Saati\x16Wallis ve Futuna Saati\x0dYakuts" + + "k Saati\x16Yakutsk Standart Saati\x11Yakutsk Yaz Saati\x13Yekaterinburg " + + "Saati\x1cYekaterinburg Standart Saati\x17Yekaterinburg Yaz Saati" + +var bucket102 string = "" + // Size: 16624 bytes + "\x06Asamas\x05Aynas\x06Asinas\x05Akras\x05Akwas\x07Asimwas\x09Asiḍyas" + + "\x03IA1\x03IA2\x03IA3\x03IA4\x0eImir adamsan 1\x0eImir adamsan 2\x0eImir" + + " adamsan 3\x0eImir adamsan 4\x09Zdat azal\x0cḌeffir aza\x11Zdat Ɛisa (TA" + + "Ɣ)\x15Ḍeffir Ɛisa (TAƔ)\x03ZƐ\x05ḌƐ\x08Asseggas\x04Ayur\x07Imalass\x09A" + + "ssenaṭ\x04Assa\x06Asekka\x0dAss n Imalass\x15Zdat azal/Deffir azal\x07Ta" + + "sragt\x06Tusdat\x06Tusnat\x1dبۇددا يىلنامەسى\x06Month1\x06Month2\x06Mont" + + "h3\x06Month4\x06Month5\x06Month6\x06Month7\x06Month8\x06Month9\x07Month1" + + "0\x07Month11\x07Month12\x0cچاشقان\x08كالا\x0cيولۋاس\x0cتوشقان\x0eئەجدىھا" + + "\x0aيىلان\x06ئات\x06قوي\x0cمايمۇن\x08توخۇ\x06ئىت\x0aچوشقا\x11EEEE، MMMM " + + "d، U\x0aMMMM d، U\x09MMM d، U\x13EEEE، MMMM d، y G\x0cMMMM d، y G\x0bMMM" + + " d، y G\x09{1}، {0}\x0cيانۋار\x0cفېۋرال\x08مارت\x0cئاپرېل\x06ماي\x0aئىيۇ" + + "ن\x0aئىيۇل\x0eئاۋغۇست\x10سېنتەبىر\x10ئۆكتەبىر\x0eنويابىر\x0eدېكابىر\x04" + + "يە\x04دۈ\x04سە\x04چا\x04پە\x04جۈ\x04شە\x10يەكشەنبە\x0eدۈشەنبە\x10سەيشەن" + + "بە\x10چارشەنبە\x10پەيشەنبە\x08جۈمە\x0aشەنبە\x0c1-پەسىل\x0c2-پەسىل\x0c3-" + + "پەسىل\x0c4-پەسىل\x19بىرىنچى پەسىل\x1bئىككىنچى پەسىل\x19ئۈچىنچى پەسىل" + + "\x19تۆتىنچى پەسىل\x05چ.ب\x05چ.ك\x17چۈشتىن بۇرۇن\x17چۈشتىن كېيىن!مىلادىيە" + + "دىن بۇرۇن\x10مىلادىيە\x0fy d-MMMM، EEEE\x0ad-MMMM، y\x09d-MMM، y\x10مۇھ" + + "ەررەم\x0aسەپەر\x1aرەبىئۇلئەۋۋەل\x18رەبىئۇلئاخىر\x1eجەمادىيەلئەۋۋەل\x1cج" + + "ەمادىيەلئاخىر\x0aرەجەب\x0cشەئبان\x0eرامىزان\x0cشەۋۋال\x10زۇلقەئدە\x10زۇ" + + "لھەججە\x0eھىجرىيە\x12EEEE, MMMM d، y G(جۇڭخۇا مىنگودىن بۇرۇن\x0aمىنگو" + + "\x06يىل\x13ئۆتكەن يىل\x0bبۇ يىل\x11كېلەر يىل\x1b{0} يىلدىن كېيىن\x19{0} " + + "يىل ئىلگىرى\x06ئاي\x13ئۆتكەن ئاي\x0bبۇ ئاي\x11كېلەر ئاي\x1b{0} ئايدىن ك" + + "ېيىن\x19{0} ئاي ئىلگىرى\x0aھەپتە\x17ئۆتكەن ھەپتە\x0fبۇ ھەپتە\x15كېلەر ھ" + + "ەپتە\x1f{0} ھەپتىدىن كېيىن\x1d{0} ھەپتە ئىلگىرى\x06كۈن\x0eتۈنۈگۈن\x0aبۈ" + + "گۈن\x08ئەتە\x1b{0} كۈندىن كېيىن\x19{0} كۈن ئىلگىرى\x19ھەپتە كۈنلىرى\x1d" + + "ئۆتكەن يەكشەنبە\x15بۇ يەكشەنبە\x1bكېلەر يەكشەنبە\x1bئۆتكەن دۈشەنبە\x13ب" + + "ۇ دۈشەنبە\x19كېلەر دۈشەنبە\x1dئۆتكەن سەيشەنبە\x15بۇ سەيشەنبە\x1bكېلەر س" + + "ەيشەنبە\x1dئۆتكەن چارشەنبە\x15بۇ چارشەنبە\x1bكېلەر چارشەنبە\x1dئۆتكەن پ" + + "ەيشەنبە\x15بۇ پەيشەنبە\x1bكېلەر پەيشەنبە\x15ئۆتكەن جۈمە\x0dبۇ جۈمە\x13ك" + + "ېلەر جۈمە\x17ئۆتكەن شەنبە\x0fبۇ شەنبە\x15كېلەر شەنبە/چۈشتىن بۇرۇن/چۈشتى" + + "ن كېيىن\x0aسائەت\x1f{0} سائەتتىن كېيىن\x1d{0} سائەت ئىلگىرى\x0aمىنۇت" + + "\x1f{0} مىنۇتتىن كېيىن\x1d{0} مىنۇت ئىلگىرى\x0cسېكۇنت!{0} سېكۇنتتىن كېيى" + + "ن\x1f{0} سېكۇنت ئىلگىرى\x17ۋاقىت رايونى\x0e{0} ۋاقتى\x1b{0} يازلىق ۋاقت" + + "ى!{0} ئۆلچەملىك ۋاقتى(ئەنگلىيە يازلىق ۋاقتى(ئىرېلاند يازلىق ۋاقتى\x15ئا" + + "كرې ۋاقتى(ئاكرې ئۆلچەملىك ۋاقتى\x22ئاكرى يازلىق ۋاقتى!ئافغانىستان ۋاقتى" + + "(ئوتتۇرا ئافرىقا ۋاقتى&شەرقىي ئافرىقا ۋاقتى;جەنۇبىي ئافرىقا ئۆلچەملىك ۋا" + + "قتى&غەربىي ئافرىقا ۋاقتى9غەربىي ئافرىقا ئۆلچەملىك ۋاقتى3غەربىي ئافرىقا " + + "يازلىق ۋاقتى\x1bئالياسكا ۋاقتى.ئالياسكا ئۆلچەملىك ۋاقتى(ئالياسكا يازلىق" + + " ۋاقتى\x19ئالمۇتا ۋاقتى,ئالمۇتا ئۆلچەملىك ۋاقتى&ئالمۇتا يازلىق ۋاقتى\x19" + + "ئامازون ۋاقتى,ئامازون ئۆلچەملىك ۋاقتى&ئامازون يازلىق ۋاقتى$ئوتتۇرا قىسى" + + "م ۋاقتى7ئوتتۇرا قىسىم ئۆلچەملىك ۋاقتى1ئوتتۇرا قىسىم يازلىق ۋاقتى\x22شەر" + + "قىي قىسىم ۋاقتى5شەرقىي قىسىم ئۆلچەملىك ۋاقتى/شەرقىي قىسىم يازلىق ۋاقتى" + + "\x11تاغ ۋاقتى$تاغ ئۆلچەملىك ۋاقتى\x1eتاغ يازلىق ۋاقتى تىنچ ئوكيان ۋاقتى3" + + "تىنچ ئوكيان ئۆلچەملىك ۋاقتى-تىنچ ئوكيان يازلىق ۋاقتى\x19ئانادىر ۋاقتى,ئ" + + "انادىر ئۆلچەملىك ۋاقتى&ئانادىر يازلىق ۋاقتى\x17ئاقتاي ۋاقتى*ئاقتاي ئۆلچ" + + "ەملىك ۋاقتى$ئاقتاي يازلىق ۋاقتى\x19ئاقتۆبە ۋاقتى,ئاقتۆبە ئۆلچەملىك ۋاقت" + + "ى&ئاقتۆبە يازلىق ۋاقتى\x15ئەرەب ۋاقتى(ئەرەب ئۆلچەملىك ۋاقتى\x22ئەرەب يا" + + "زلىق ۋاقتى\x1fئارگېنتىنا ۋاقتى2ئارگېنتىنا ئۆلچەملىك ۋاقتى,ئارگېنتىنا يا" + + "زلىق ۋاقتى,غەربىي ئارگېنتىنا ۋاقتى?غەربىي ئارگېنتىنا ئۆلچەملىك ۋاقتى9غە" + + "ربىي ئارگېنتىنا يازلىق ۋاقتى\x1dئەرمېنىيە ۋاقتى0ئەرمېنىيە ئۆلچەملىك ۋاق" + + "تى*ئەرمېنىيە يازلىق ۋاقتى*ئاتلانتىك ئوكيان ۋاقتى=ئاتلانتىك ئوكيان ئۆلچە" + + "ملىك ۋاقتى7ئاتلانتىك ئوكيان يازلىق ۋاقتى;ئاۋسترالىيە ئوتتۇرا قىسىم ۋاقت" + + "ىNئاۋسترالىيە ئوتتۇرا قىسىم ئۆلچەملىك ۋاقتىHئاۋسترالىيە ئوتتۇرا قىسىم ي" + + "ازلىق ۋاقتىHئاۋسترالىيە ئوتتۇرا غەربىي قىسىم ۋاقتى]ئاۋستىرالىيە ئوتتۇرا" + + " غەربىي قىسىم ئۆلچەملىك ۋاقتىUئاۋسترالىيە ئوتتۇرا غەربىي قىسىم يازلىق ۋا" + + "قتى9ئاۋسترالىيە شەرقىي قىسىم ۋاقتىLئاۋسترالىيە شەرقىي قىسىم ئۆلچەملىك ۋ" + + "اقتىFئاۋسترالىيە شەرقىي قىسىم يازلىق ۋاقتى9ئاۋسترالىيە غەربىي قىسىم ۋاق" + + "تىLئاۋسترالىيە غەربىي قىسىم ئۆلچەملىك ۋاقتىFئاۋسترالىيە غەربىي قىسىم يا" + + "زلىق ۋاقتى!ئەزەربەيجان ۋاقتى4ئەزەربەيجان ئۆلچەملىك ۋاقتى.ئەزەربەيجان يا" + + "زلىق ۋاقتى\x15ئازور ۋاقتى(ئازور ئۆلچەملىك ۋاقتى\x22ئازور يازلىق ۋاقتى" + + "\x1bباڭلادىش ۋاقتى.باڭلادىش ئۆلچەملىك ۋاقتى(باڭلادىش يازلىق ۋاقتى\x15بۇت" + + "ان ۋاقتى\x1bبولىۋىيە ۋاقتى\x1fبىرازىلىيە ۋاقتى2بىرازىلىيە ئۆلچەملىك ۋاق" + + "تى,بىرازىلىيە يازلىق ۋاقتى.بىرۇنىي دارۇسسالام ۋاقتى\x22يېشىل تۇمشۇق ۋاق" + + "تى5يېشىل تۇمشۇق ئۆلچەملىك ۋاقتى/يېشىل تۇمشۇق يازلىق ۋاقتى\x15كاسېي ۋاقت" + + "ى,چاموررو ئۆلچەملىك ۋاقتى\x15چاتام ۋاقتى(چاتام ئۆلچەملىك ۋاقتى\x22چاتام" + + " يازلىق ۋاقتى\x13چىلى ۋاقتى&چىلى ئۆلچەملىك ۋاقتى چىلى يازلىق ۋاقتى\x15جۇ" + + "ڭگو ۋاقتى(جۇڭگو ئۆلچەملىك ۋاقتى\x22جۇڭگو يازلىق ۋاقتى\x1dچويبالسان ۋاقت" + + "ى0چويبالسان ئۆلچەملىك ۋاقتى*چويبالسان يازلىق ۋاقتى*روژدېستۋو ئارىلى ۋاق" + + "تى\x22كوكۇس ئارىلى ۋاقتى\x1dكولومبىيە ۋاقتى0كولومبىيە ئۆلچەملىك ۋاقتى*ك" + + "ولومبىيە يازلىق ۋاقتى$كۇك ئاراللىرى ۋاقتى7كۇك ئاراللىرى ئۆلچەملىك ۋاقتى" + + "<كۇك ئاراللىرى يېرىم يازلىق ۋاقتى\x13كۇبا ۋاقتى&كۇبا ئۆلچەملىك ۋاقتى كۇب" + + "ا يازلىق ۋاقتى\x15داۋىس ۋاقتى$دۇمونت-دۇرۋىل ۋاقتى\x22شەرقىي تىمور ۋاقتى" + + "$ئېستېر ئارىلى ۋاقتى;پاسكاليا ئارىلى ئۆلچەملىك ۋاقتى1ئېستېر ئارىلى يازلى" + + "ق ۋاقتى\x1bئېكۋادور ۋاقتى(ئوتتۇرا ياۋروپا ۋاقتى;ئوتتۇرا ياۋروپا ئۆلچەمل" + + "ىك ۋاقتى5ئوتتۇرا ياۋروپا يازلىق ۋاقتى&شەرقىي ياۋروپا ۋاقتى9شەرقىي ياۋرو" + + "پا ئۆلچەملىك ۋاقتى3شەرقىي ياۋروپا يازلىق ۋاقتى&غەربىي ياۋروپا ۋاقتى9غەر" + + "بىي ياۋروپا ئۆلچەملىك ۋاقتى3غەربىي ياۋروپا يازلىق ۋاقتى.فالكلاند ئارالل" + + "ىرى ۋاقتىAفالكلاند ئاراللىرى ئۆلچەملىك ۋاقتى;فالكلاند ئاراللىرى يازلىق " + + "ۋاقتى\x13فىجى ۋاقتى&فىجى ئۆلچەملىك ۋاقتى فىجى يازلىق ۋاقتىCفىرانسىيەگە " + + "قاراشلىق گىۋىيانا ۋاقتى]فىرانسىيەگە قاراشلىق جەنۇبىي ۋە ئانتاركتىكا ۋاق" + + "تى\x1dگالاپاگوس ۋاقتى\x1bگامبىيېر ۋاقتى\x1bگىرۇزىيە ۋاقتى.گىرۇزىيە ئۆلچ" + + "ەملىك ۋاقتى(گىرۇزىيە يازلىق ۋاقتى,گىلبېرت ئاراللىرى ۋاقتى\x1bگىرىنۋىچ ۋ" + + "اقتى*شەرقىي گىرېنلاند ۋاقتى=شەرقىي گىرېنلاند ئۆلچەملىك ۋاقتى7شەرقىي گىر" + + "ېنلاند يازلىق ۋاقتى*غەربىي گىرېنلاند ۋاقتى=غەربىي گىرېنلاند ئۆلچەملىك ۋ" + + "اقتى7غەربىي گىرېنلاند يازلىق ۋاقتى(گۇئام ئۆلچەملىك ۋاقتى&گۇلف ئۆلچەملىك" + + " ۋاقتى\x1bگىۋىيانا ۋاقتى$ھاۋاي-ئالېيۇت ۋاقتى7ھاۋاي-ئالېيۇت ئۆلچەملىك ۋاق" + + "تى1ھاۋاي-ئالېيۇت يازلىق ۋاقتى\x19شياڭگاڭ ۋاقتى,شياڭگاڭ ئۆلچەملىك ۋاقتى&" + + "شياڭگاڭ يازلىق ۋاقتى\x13خوۋد ۋاقتى&خوۋد ئۆلچەملىك ۋاقتى خوۋد يازلىق ۋاق" + + "تى0ھىندىستان ئۆلچەملىك ۋاقتى\x22ھىندى ئوكيان ۋاقتى\x1eھىندى چىنى ۋاقتى0" + + "ئوتتۇرا ھىندونېزىيە ۋاقتى.شەرقىي ھىندونېزىيە ۋاقتى.غەربىي ھىندونېزىيە ۋ" + + "اقتى\x15ئىران ۋاقتى(ئىران ئۆلچەملىك ۋاقتى\x22ئىران يازلىق ۋاقتى\x1bئىرك" + + "ۇتسك ۋاقتى.ئىركۇتسك ئۆلچەملىك ۋاقتى(ئىركۇتسك يازلىق ۋاقتى!ئىسرائىلىيە ۋ" + + "اقتى4ئىسرائىلىيە ئۆلچەملىك ۋاقتى.ئىسرائىلىيە يازلىق ۋاقتى\x1bياپونىيە ۋ" + + "اقتى.ياپونىيە ئۆلچەملىك ۋاقتى(ياپونىيە يازلىق ۋاقتى:پېتروپاۋلوۋسك-كامچا" + + "تكسكى ۋاقتىMپېتروپاۋلوۋسك-كامچاتكسكى ئۆلچەملىك ۋاقتىGپېتروپاۋلوۋسك-كامچ" + + "اتكسكى يازلىق ۋاقتى,شەرقىي قازاقىستان ۋاقتى,غەربىي قازاقىستان ۋاقتى\x17" + + "كورىيە ۋاقتى*كورىيە ئۆلچەملىك ۋاقتى$كورىيە يازلىق ۋاقتى\x19كوسرائې ۋاقت" + + "ى#كىراسنويارسك ۋاقتى6كىراسنويارسك ئۆلچەملىك ۋاقتى0كىراسنويارسك يازلىق ۋ" + + "اقتى!قىرغىزىستان ۋاقتى\x1eسىرى لانكا ۋاقتى&لاين ئاراللىرى ۋاقتى\x1aلورد" + + "-خاي ۋاقتى-لورد-خاي ئۆلچەملىك ۋاقتى'لورد-خاي يازلىق ۋاقتى\x17ئاۋمېن ۋاقت" + + "ى*ئاۋمېن ئۆلچەملىك ۋاقتى$ئاۋمېن يازلىق ۋاقتى0ماككۇۋارى ئاراللىرى ۋاقتى" + + "\x19ماگادان ۋاقتى,ماگادان ئۆلچەملىك ۋاقتى&ماگادان يازلىق ۋاقتى\x1dمالايش" + + "ىيا ۋاقتى\x19مالدىۋې ۋاقتى\x17ماركىز ۋاقتى*مارشال ئاراللىرى ۋاقتى\x1fما" + + "ۋرىتىئۇس ۋاقتى2ماۋرىتىئۇس ئۆلچەملىك ۋاقتى,ماۋرىتىئۇس يازلىق ۋاقتى\x17ما" + + "ۋسون ۋاقتى@مېكسىكا غەربىي شىمالىي قىسىم ۋاقتىSمېكسىكا غەربىي شىمالىي قى" + + "سىم ئۆلچەملىك ۋاقتىMمېكسىكا غەربىي شىمالىي قىسىم يازلىق ۋاقتى/مېكسىكا ت" + + "ىنچ ئوكيان ۋاقتىBمېكسىكا تىنچ ئوكيان ئۆلچەملىك ۋاقتى<مېكسىكا تىنچ ئوكيا" + + "ن يازلىق ۋاقتى\x1fئۇلانباتور ۋاقتى2ئۇلانباتور ئۆلچەملىك ۋاقتى,ئۇلانباتو" + + "ر يازلىق ۋاقتى\x17موسكۋا ۋاقتى*موسكۋا ئۆلچەملىك ۋاقتى$موسكۋا يازلىق ۋاق" + + "تى\x15بىرما ۋاقتى\x15ناۋرۇ ۋاقتى\x15نېپال ۋاقتى(يېڭى كالېدونىيە ۋاقتى;ي" + + "ېڭى كالېدونىيە ئۆلچەملىك ۋاقتى5يېڭى كالېدونىيە يازلىق ۋاقتى&يېڭى زېلاند" + + "ىيە ۋاقتى9يېڭى زېلاندىيە ئۆلچەملىك ۋاقتى3يېڭى زېلاندىيە يازلىق ۋاقتى#نى" + + "ۋفوئۇنلاند ۋاقتى6نىۋفوئۇنلاند ئۆلچەملىك ۋاقتى0نىۋفوئۇنلاند يازلىق ۋاقتى" + + "\x17نىيۇئې ۋاقتى,نورفولك ئاراللىرى ۋاقتى*فېرناندو-نورونخا ۋاقتى=فېرناندو" + + "-نورونخا ئۆلچەملىك ۋاقتى7فېرناندو-نورونخا يازلىق ۋاقتى=شىمالىي مارىيانا " + + "ئاراللىرى ۋاقتى!نوۋوسىبىرسك ۋاقتى4نوۋوسىبىرسك ئۆلچەملىك ۋاقتى.نوۋوسىبىر" + + "سك يازلىق ۋاقتى\x15ئومسك ۋاقتى(ئومسك ئۆلچەملىك ۋاقتى\x22ئومسك يازلىق ۋا" + + "قتى\x1bپاكىستان ۋاقتى.پاكىستان ئۆلچەملىك ۋاقتى(پاكىستان يازلىق ۋاقتى" + + "\x15پالاۋ ۋاقتى5پاپۇئا يېڭى گىۋىنېيەسى ۋاقتى\x1bپاراگۋاي ۋاقتى.پاراگۋاي " + + "ئۆلچەملىك ۋاقتى(پاراگۋاي يازلىق ۋاقتى\x13پېرۇ ۋاقتى&پېرۇ ئۆلچەملىك ۋاقت" + + "ى پېرۇ يازلىق ۋاقتى\x1bفىلىپپىن ۋاقتى.فىلىپپىن ئۆلچەملىك ۋاقتى(فىلىپپىن" + + " يازلىق ۋاقتى*فېنىكس ئاراللىرى ۋاقتى6ساينىت پىئېر ۋە مىكېلون ۋاقتىIساينى" + + "ت پىئېر ۋە مىكېلون ئۆلچەملىك ۋاقتىCساينىت پىئېر ۋە مىكېلون يازلىق ۋاقتى" + + "\x19پىتكاير ۋاقتى\x17پونپېي ۋاقتى\x1fقىزىلئوردا ۋاقتى2قىزىلئوردا ئۆلچەمل" + + "ىك ۋاقتى,قىزىلئوردا يازلىق ۋاقتى\x1dرېئونىيون ۋاقتى\x17روتېرا ۋاقتى\x19" + + "ساخارىن ۋاقتى,ساخارىن ئۆلچەملىك ۋاقتى&ساخارىن يازلىق ۋاقتى\x17سامارا ۋا" + + "قتى*سامارا ئۆلچەملىك ۋاقتى$سامارا يازلىق ۋاقتى\x17ساموئا ۋاقتى*ساموئا ئ" + + "ۆلچەملىك ۋاقتى*سەمەرقەنت يازلىق ۋاقتى\x17سېيشېل ۋاقتى\x1bسىنگاپور ۋاقتى" + + ",سولومون ئاراللىرى ۋاقتى(جەنۇبىي جورجىيە ۋاقتى\x19سۇرىنام ۋاقتى\x13شوۋا " + + "ۋاقتى\x15تايتى ۋاقتى\x17تەيبېي ۋاقتى*تەيبېي ئۆلچەملىك ۋاقتى$تەيبېي يازل" + + "ىق ۋاقتى\x1fتاجىكىستان ۋاقتى\x19توكېلاۋ ۋاقتى\x15تونگا ۋاقتى(تونگا ئۆلچ" + + "ەملىك ۋاقتى\x22تونگا يازلىق ۋاقتى\x11چۇك ۋاقتى#تۈركمەنىستان ۋاقتى6تۈركم" + + "ەنىستان ئۆلچەملىك ۋاقتى0تۈركمەنىستان يازلىق ۋاقتى\x17تۇۋالۇ ۋاقتى\x1bئۇ" + + "رۇگۋاي ۋاقتى.ئۇرۇگۋاي ئۆلچەملىك ۋاقتى(ئۇرۇگۋاي يازلىق ۋاقتى!ئۆزبېكىستان" + + " ۋاقتى4ئۆزبېكىستان ئۆلچەملىك ۋاقتى.ئۆزبېكىستان يازلىق ۋاقتى\x1bۋانۇئاتۇ " + + "ۋاقتى.ۋانۇئاتۇ ئۆلچەملىك ۋاقتى(ۋانۇئاتۇ يازلىق ۋاقتى\x1fۋېنېزۇئېلا ۋاقت" + + "ى#ۋىلادىۋوستوك ۋاقتى6ۋىلادىۋوستوك ئۆلچەملىك ۋاقتى0ۋىلادىۋوستوك يازلىق ۋ" + + "اقتى\x1dۋولگاگراد ۋاقتى0ۋولگاگراد ئۆلچەملىك ۋاقتى*ۋولگاگراد يازلىق ۋاقت" + + "ى\x17ۋوستوك ۋاقتى ۋېيك ئارىلى ۋاقتى)ۋاللىس ۋە فۇتۇنا ۋاقتى\x19ياكۇتسك ۋ" + + "اقتى,ياكۇتسك ئۆلچەملىك ۋاقتى&ياكۇتسك يازلىق ۋاقتى%يېكاتېرىنبۇرگ ۋاقتى8ي" + + "ېكاتېرىنبۇرگ ئۆلچەملىك ۋاقتى2يېكاتېرىنبۇرگ يازلىق ۋاقتى" + +var bucket103 string = "" + // Size: 8263 bytes + "\x06тот\x07баб.\x07хат.\x07кіх.\x07тоб.\x07амш.\x0bбарам.\x09барм.\x07ба" + + "ш.\x09баун.\x05аб.\x07мис.\x07нас.\x08бабе\x0aхатур\x0aкіхак\x08тобе" + + "\x0aамшир\x10барамхат\x0eбармуда\x0cбашнас\x0aбауна\x08абіб\x0aмисра\x08" + + "насі\x06баб\x06хат\x06кіх\x06тоб\x06амш\x0aбарам\x08барм\x06баш\x08баун" + + "\x04аб\x06мис\x06нас\x12мескерема\x0eтекемта\x0cхедара\x0eтахсаса\x08тер" + + "а\x0eєкатіта\x10мегабіта\x0cміязія\x0eгенбота\x08сене\x0aхамле\x0cнехас" + + "е\x10пагумена\x0cтекемт\x16EEEE, d MMMM y 'р'. G\x10d MMMM y 'р'. G\x0c" + + "{1} 'о' {0}\x07січ.\x07лют.\x07бер.\x09квіт.\x09трав.\x09черв.\x07лип." + + "\x09серп.\x07вер.\x09жовт.\x09лист.\x09груд.\x0aсічня\x0cлютого\x0eберез" + + "ня\x0cквітня\x0cтравня\x0cчервня\x0aлипня\x0cсерпня\x0eвересня\x0cжовтн" + + "я\x12листопада\x0cгрудня\x06січ\x06лют\x06бер\x06кві\x06тра\x06чер\x06л" + + "ип\x06сер\x06вер\x06жов\x06лис\x06гру\x0cсічень\x0aлютий\x10березень" + + "\x0eквітень\x0eтравень\x0eчервень\x0cлипень\x0eсерпень\x10вересень\x0eжо" + + "втень\x10листопад\x0eгрудень\x0cнеділя\x12понеділок\x10вівторок\x0cсере" + + "да\x0cчетвер\x10пʼятниця\x0cсубота\x10опівночі\x04дп\x12пополудні\x04пп" + + "\x0aранку\x0cвечора\x08ночі\x0cпівніч\x10полудень\x0aранок\x0aвечір\x06н" + + "іч\x16до нашої ери\x16до нової ери\x11нашої ери\x11нової ери\x0cдо н. е" + + ".\x07н. е.\x0bдо н.е.\x06н.е.\x14EEEE, d MMMM y 'р'.\x0ed MMMM y 'р'." + + "\x0dd MMM y 'р'.\x0aтішри\x12марчешван\x0eчисльов\x0aтебет\x0aшеват\x0aа" + + "дар I\x08адар\x0bадар II\x0aнісан\x06іар\x0aсиван\x0cтаммуз\x08елул\x0c" + + "хешван\x0cкіслев\x0aтевет\x08шват\x06іяр\x04ав\x09чайт.\x09вайс.\x09джа" + + "й.\x09асад.\x09шрав.\x09бхад.\x07асв.\x07кар.\x07агр.\x09паус.\x07маг." + + "\x09фаль.\x07мух.\x07саф.\x0aрабі I\x0bрабі II\x0bджум. I\x0cджум. II" + + "\x09радж.\x09шааб.\x07рам.\x07дав.\x0dзу-ль-к.\x0dзу-ль-х.\x10мухаррам" + + "\x0aсафар\x10джумада I\x11джумада II\x0cраджаб\x0cшаабан\x0eрамадан\x0cд" + + "аввал\x14зу-ль-каада\x14зу-ль-хіджа\x06мух\x06саф\x0aджум I\x0bджум II" + + "\x08радж\x08шааб\x06рам\x06дав\x0cзу-ль-к\x0cзу-ль-х\x16Тайка (645–650)" + + "\x18Хакуті (650–671)\x18Хакухо (672–686)\x16Сютьо (686–701)\x16Тайхо (70" + + "1–704)\x16Кейун (704–708)\x14Вадо (708–715)\x16Рейкі (715–717)\x14Йоро (" + + "717–724)\x18Дзінгі (724–729)\x18Темпьо (729–749)#Темпьо-кампо (749–749)#" + + "Темпьо-сьохо (749–757)#Темпьо-ходзі (757–765)%Темпьо-дзінго (765–767)#Д" + + "зінго кейун (767–770)\x14Хокі (770–780)\x17Тен’о (781–782)\x18Енряку (7" + + "82–806)\x16Дайдо (806–810)\x16Конін (810–824)\x18Тентьо (824–834)\x16Сьо" + + "ва (834–848)\x18Кадзьо (848–851)\x18Ніндзю (851–854)\x16Сайко (854–857)" + + "\x18Теннан (857–859)\x1aДзьоган (859–877)\x18Генкей (877–885)\x16Нінна (" + + "885–889)\x18Кампьо (889–898)\x18Сьотай (898–901)\x14Енгі (901–923)\x16Ен" + + "тьо (923–931)\x18Сьохей (931–938)\x18Тенгьо (938–947)\x1aТенряку (947–9" + + "57)\x1aТентоку (957–961)\x12Ова (961–964)\x14Кохо (964–968)\x14Анна (968" + + "–970)\x1aТенроку (970–973)\x19Тен’ен (973–976)\x1aДзьоген (976–978)" + + "\x18Тенген (978–983)\x16Ейкан (983–985)\x16Канна (985–987)\x14Ейен (987–" + + "989)\x14Ейсо (989–990)\x1aСьоряку (990–995)\x1aТьотоку (995–999)\x17Тьох" + + "о (999–1004)\x18Канко (1004–1012)\x18Тьова (1012–1017)\x1aКаннін (1017–" + + "1021)\x18Дзіан (1021–1024)\x1aМандзю (1024–1028)\x1aТьоген (1028–1037)" + + "\x1cТьоряку (1037–1040)\x18Тьокю (1040–1044)\x1cКантоку (1044–1046)\x18Е" + + "йсьо (1046–1053)\x18Тенгі (1053–1058)\x18Кохей (1058–1065)\x1cДзіряку (" + + "1065–1069)\x16Енкю (1069–1074)\x18Сьохо (1074–1077)\x1cСьоряку (1077–108" + + "1)\x16Ейхо (1081–1084)\x18Отоку (1084–1087)\x1aКандзі (1087–1094)\x16Ках" + + "о (1094–1096)\x18Ейсьо (1096–1097)\x1cСьотоку (1097–1099)\x16Кова (1099" + + "–1104)\x1aТьодзі (1104–1106)\x1aКадзьо (1106–1108)\x1aТеннін (1108–111" + + "0)\x1bТен’ей (1110–1113)\x16Ейкю (1113–1118)\x1bГен’ей (1118–1120)\x16Хо" + + "ан (1120–1124)\x1aТендзі (1124–1126)\x1aДайдзі (1126–1131)\x1aТенсьо (1" + + "131–1132)\x1aТьосьо (1132–1135)\x16Хоен (1135–1141)\x18Ейдзі (1141–1142)" + + "\x18Кодзі (1142–1144)\x18Теньо (1144–1145)\x16Кюан (1145–1151)\x1aНімпей" + + " (1151–1154)\x18Кюдзю (1154–1156)\x18Хоген (1156–1159)\x1aХейдзі (1159–1" + + "160)\x1aЕйряку (1160–1161)\x14Охо (1161–1163)\x1aТьокан (1163–1165)\x18Е" + + "йман (1165–1166)\x1bНін’ан (1166–1169)\x14Као (1169–1171)\x18Сьоан (117" + + "1–1175)\x18Анген (1175–1177)\x1aДзісьо (1177–1181)\x16Йова (1181–1182)" + + "\x18Дзюей (1182–1184)\x1cГенряку (1184–1185)\x1aБундзі (1185–1190)\x18Ке" + + "нкю (1190–1199)\x1aСьодзі (1199–1201)\x1aКеннін (1201–1204)\x18Генкю (1" + + "204–1206)\x1bКен’ей (1206–1207)\x1aСьоген (1207–1211)\x1cКенряку (1211–1" + + "213)\x18Кенпо (1213–1219)\x1aДзьокю (1219–1222)\x18Дзьоо (1222–1224)\x1a" + + "Геннін (1224–1225)\x1aКароку (1225–1227)\x18Антей (1227–1229)\x18Канкі " + + "(1229–1232)\x18Дзюей (1232–1233)\x1cТемпуку (1233–1234)\x1cБунряку (1234" + + "–1235)\x18Катей (1235–1238)\x1cРякунін (1238–1239)\x17Ен’о (1239–1240)" + + "\x1aНіндзі (1240–1243)\x1aКанген (1243–1247)\x1aХейдзі (1247–1249)\x1aКе" + + "нтьо (1249–1256)\x18Коген (1256–1257)\x18Сьока (1257–1259)\x1aСьоген (1" + + "259–1260)\x19Бун’о (1260–1261)\x18Котьо (1261–1264)\x1bБун’ей (1264–1275" + + ")\x1aКендзі (1275–1278)\x16Коан (1278–1288)\x16Сьоо (1288–1293)\x18Ейнін" + + " (1293–1299)\x18Сьоан (1299–1302)\x1aКенген (1302–1303)\x18Каген (1303–1" + + "306)\x1cТокудзі (1306–1308)\x18Енкей (1308–1311)\x16Отьо (1311–1312)\x18" + + "Сьова (1312–1317)\x18Бумпо (1317–1319)\x19Ген’о (1319–1321)\x1aГенкьо (" + + "1321–1324)\x18Сьотю (1324–1326)\x1aКарекі (1326–1329)\x1cГентоку (1329–1" + + "331)\x18Генко (1331–1334)\x18Кемму (1334–1336)\x18Ейген (1336–1340)\x1aК" + + "ококу (1340–1346)\x1aСьохей (1346–1370)\x1cКентоку (1370–1372)\x18Бунтю" + + " (1372–1375)\x1aТендзю (1375–1379)\x1aКоряку (1379–1381)\x16Кова (1381–1" + + "384)\x18Гентю (1384–1392)\x1cМейтоку (1384–1387)\x18Какей (1387–1389)" + + "\x14Коо (1389–1390)\x1cМейтоку (1390–1394)\x14Оей (1394–1428)\x1aСьотьо " + + "(1428–1429)\x18Ейкьо (1429–1441)\x1aКакіцу (1441–1444)\x1aБуннан (1444–1" + + "449)\x1aХотоку (1449–1452)\x1cКьотоку (1452–1455)\x18Косьо (1455–1457)" + + "\x1cТьороку (1457–1460)\x1aКансьо (1460–1466)\x1aБунсьо (1466–1467)\x16О" + + "нін (1467–1469)\x1aБуммей (1469–1487)\x1aТьокьо (1487–1489)\x1aЕнтоку (" + + "1489–1492)\x16Мейо (1492–1501)\x18Бункі (1501–1504)\x18Ейсьо (1504–1521)" + + "\x18Тайей (1521–1528)\x1cКьороку (1528–1532)\x1aТеммон (1532–1555)\x18Ко" + + "дзі (1555–1558)\x1aЕйроку (1558–1570)\x18Генкі (1570–1573)\x1aТенсьо (1" + + "573–1592)\x1cБунроку (1592–1596)\x1aКейтьо (1596–1615)\x18Генна (1615–16" + + "24)\x1bКан’ей (1624–1644)\x18Сьохо (1644–1648)\x18Кейан (1648–1652)\x16С" + + "ьоо (1652–1655)\x1cМейряку (1655–1658)\x1aМандзі (1658–1661)\x1aКамбун " + + "(1661–1673)\x16Емпо (1673–1681)\x18Тенва (1681–1684)\x1cДзьокьо (1684–16" + + "88)\x1cГенроку (1688–1704)\x16Хоей (1704–1711)\x1cСьотоку (1711–1716)" + + "\x18Кьохо (1716–1736)\x1aГембун (1736–1741)\x18Канпо (1741–1744)\x18Енкь" + + "о (1744–1748)\x1bКан’ен (1748–1751)\x1aХоряку (1751–1764)\x18Мейва (176" + + "4–1772)\x19Ан’ей (1772–1781)\x1aТеммей (1781–1789)\x1aКансей (1789–1801)" + + "\x18Кьова (1801–1804)\x18Бунка (1804–1818)\x1aБунсей (1818–1830)\x18Тенп" + + "о (1830–1844)\x16Кока (1844–1848)\x16Каей (1848–1854)\x18Ансей (1854–18" + + "60)\x1bМан’ен (1860–1861)\x18Бункю (1861–1864)\x1aГендзі (1864–1865)\x16" + + "Кейо (1865–1868)\x0cМейдзі\x0cТайсьо\x0aСьова\x0cХейсей" + +var bucket104 string = "" + // Size: 23490 bytes + "\x07фар.\x07орд.\x07хор.\x06тір\x07мор.\x07шах.\x07мех.\x08абан\x08азер" + + "\x06дей\x07бах.\x07есф.\x12фарвардін\x14ордібехешт\x0cхордад\x0cмордад" + + "\x10шахрівер\x08мехр\x0cбахман\x0cесфанд\x06фар\x06орд\x06хор\x06мор\x06" + + "шах\x06мех\x06бах\x06есф\x06рік\x0aторік\x13цього року\x1dнаступного ро" + + "ку\x15через {0} рік\x17через {0} роки\x19через {0} років\x17через {0} р" + + "оку\x13{0} рік тому\x15{0} роки тому\x17{0} років тому\x15{0} року тому" + + "\x03р.\x12через {0} р.\x10{0} р. тому\x0cза {0} р.!минулого кварталу\x1b" + + "цього кварталу%наступного кварталу\x1b{0} квартал тому\x1d{0} квартали " + + "тому\x1f{0} кварталів тому\x1d{0} кварталу тому\x16минулого кв.\x10цьог" + + "о кв.\x1aнаступного кв.\x12{0} кв. тому\x0cмісяць\x1dминулого місяця" + + "\x17цього місяця!наступного місяця\x1bчерез {0} місяць\x1bчерез {0} міся" + + "ці\x1dчерез {0} місяців\x1bчерез {0} місяця\x19{0} місяць тому\x19{0} м" + + "ісяці тому\x1b{0} місяців тому\x19{0} місяця тому\x07міс.\x16через {0} " + + "міс.\x14{0} міс. тому\x10за {0} міс.\x0eтиждень\x1bминулого тижня\x15ць" + + "ого тижня\x1fнаступного тижня\x1dчерез {0} тиждень\x19через {0} тижні" + + "\x1bчерез {0} тижнів\x19через {0} тижня\x1b{0} тиждень тому\x17{0} тижні" + + " тому\x19{0} тижнів тому\x17{0} тижня тому\x15тиждень з {0}\x07тиж.\x16ч" + + "ерез {0} тиж.\x14{0} тиж. тому\x10за {0} тиж.\x12позавчора\x0aучора\x10" + + "сьогодні\x0cзавтра\x16післязавтра\x15{0} день тому\x13{0} дні тому\x15{" + + "0} днів тому\x13{0} дня тому\x12{0} дн. тому\x10{0} д. тому\x0a-{0} дн." + + "\x13день тижня\x1bминулої неділі\x15цієї неділі\x1fнаступної неділі\x1bч" + + "ерез {0} неділю\x1bчерез {0} неділі\x1bчерез {0} неділь\x19{0} неділю т" + + "ому\x19{0} неділі тому\x19{0} неділь тому\x13минулої нд\x0dцієї нд\x17н" + + "аступної нд\x0cмин. нд\x0eнаст. нд#минулого понеділка\x1dцього понеділк" + + "а'наступного понеділка!через {0} понеділок!через {0} понеділки#через {0" + + "} понеділків!через {0} понеділка\x1f{0} понеділок тому\x1f{0} понеділки " + + "тому!{0} понеділків тому\x1f{0} понеділка тому\x15минулого пн\x0fцього " + + "пн\x19наступного пн\x0cмин. пн\x0eнаст. пн!минулого вівторка\x1bцього в" + + "івторка%наступного вівторка\x1fчерез {0} вівторок\x1fчерез {0} вівторки" + + "!через {0} вівторків\x1fчерез {0} вівторка\x1d{0} вівторок тому\x1d{0} в" + + "івторки тому\x1f{0} вівторків тому\x1d{0} вівторка тому\x15минулого вт" + + "\x0fцього вт\x19наступного вт\x0cмин. вт\x0eнаст. вт\x1bминулої середи" + + "\x15цієї середи\x1fнаступної середи\x1bчерез {0} середу\x1bчерез {0} сер" + + "еди\x19через {0} серед\x19{0} середу тому\x19{0} середи тому\x17{0} сер" + + "ед тому\x13минулої ср\x0dцієї ср\x17наступної ср\x0cмин. ср\x0eнаст. ср" + + "!минулого четверга\x1bцього четверга%наступного четверга\x1bчерез {0} че" + + "твер\x1fчерез {0} четверги!через {0} четвергів\x1fчерез {0} четверга" + + "\x19{0} четвер тому\x1d{0} четверги тому\x1f{0} четвергів тому\x1d{0} че" + + "тверга тому\x15минулого чт\x0fцього чт\x19наступного чт\x0cмин. чт\x0eн" + + "аст. чт\x1fминулої пʼятниці\x19цієї пʼятниці#наступної пʼятниці\x1fчере" + + "з {0} пʼятницю\x1fчерез {0} пʼятниці\x1fчерез {0} пʼятниць\x1d{0} пʼятн" + + "ицю тому\x1d{0} пʼятниці тому\x1d{0} пʼятниць тому\x13минулої пт\x0dціє" + + "ї пт\x17наступної пт\x0cмин. пт\x0eнаст. пт\x1bминулої суботи\x15цієї с" + + "уботи\x1fнаступної суботи\x1bчерез {0} суботу\x1bчерез {0} суботи\x19че" + + "рез {0} субот\x19{0} суботу тому\x19{0} суботи тому\x17{0} субот тому" + + "\x13минулої сб\x0dцієї сб\x17наступної сб\x0cмин. сб\x0eнаст. сб\x17част" + + "ина доби\x15цієї години\x1bчерез {0} годину\x1bчерез {0} години\x19чере" + + "з {0} годин\x19{0} годину тому\x19{0} години тому\x17{0} годин тому\x13" + + "{0} год тому\x0fза {0} год\x0eхвилина\x17цієї хвилини\x1dчерез {0} хвили" + + "ну\x1dчерез {0} хвилини\x1bчерез {0} хвилин\x1b{0} хвилину тому\x1b{0} " + + "хвилини тому\x19{0} хвилин тому\x13через {0} хв\x11{0} хв тому\x0dза {0" + + "} хв\x0aзараз\x1b{0} секунду тому\x1b{0} секунди тому\x19{0} секунд тому" + + "\x11через {0} с\x0f{0} с тому\x0bза {0} с\x17часовий пояс\x0bчас: {0}" + + "\x19час: {0}, літній#час: {0}, стандартний6Всесвітній координований час?" + + "за літнім часом у Великій Британії0за літнім часом в Ірландії\x10час: А" + + "крі(час: Акрі, стандартний\x1eчас: Акрі, літній)за часом в Афганістані<" + + "за центральноафриканським часом4за східноафриканським часом8за південно" + + "африканським часом6за західноафриканським часомMза західноафриканським " + + "стандартним часомCза західноафриканським літнім часом!за часом на Алясц" + + "і8за стандартним часом на Алясці.за літнім часом на Алясці%за часом на " + + "Амазонці<за стандартним часом на Амазонці2за літнім часом на АмазонціQз" + + "а північноамериканським центральним часомhза північноамериканським цент" + + "ральним стандартним часом^за північноамериканським центральним літнім ч" + + "асомIза північноамериканським східним часом`за північноамериканським сх" + + "ідним стандартним часомVза північноамериканським східним літнім часомKз" + + "а північноамериканським гірським часомbза північноамериканським гірськи" + + "м стандартним часомXза північноамериканським гірським літнім часомWза п" + + "івнічноамериканським тихоокеанським часомnза північноамериканським тихо" + + "океанським стандартним часомdза північноамериканським тихоокеанським лі" + + "тнім часом\x14час: Анадир,час: Анадир, стандартний\x22час: Анадир, літн" + + "ій\x1bза часом в Апіа2за стандартним часом в Апіа(за літнім часом в Апі" + + "а\x22за арабським часом9за арабським стандартним часом/за арабським літ" + + "нім часом*за аргентинським часомAза стандартним аргентинським часом7за " + + "літнім аргентинським часом8за західноаргентинським часомOза стандартним" + + " західноаргентинським часомJза літнім за західноаргентинським часом&за в" + + "ірменським часом=за вірменським стандартним часом3за вірменським літнім" + + " часом&за атлантичним часом=за атлантичним стандартним часом3за атлантич" + + "ним літнім часом@за центральноавстралійським часомWза стандартним центр" + + "альноавстралійським часомMза літнім центральноавстралійським часомQза ц" + + "ентральнозахідним австралійським часомhза стандартним центральнозахідни" + + "м австралійським часом^за літнім центральнозахідним австралійським часо" + + "м8за східноавстралійським часомOза стандартним східноавстралійським час" + + "омEза літнім східноавстралійським часом:за західноавстралійським часомQ" + + "за стандартним західноавстралійським часомGза літнім західноавстралійсь" + + "ким часом+за часом в АзербайджаніBза стандартним часом в Азербайджані8з" + + "а літнім часом в Азербайджані8за часом на Азорських ОстровахOза стандар" + + "тним часом на Азорських ОстровахEза літнім часом на Азорських Островах%" + + "за часом у Бангладеш<за стандартним часом у Бангладеш2за літнім часом у" + + " Бангладеш\x1fза часом у Бутані(за болівійським часом(за бразильським ча" + + "сом?за стандартним бразильським часом5за літнім бразильським часом\x1fз" + + "а часом у Брунеї9за часом на островах Кабо-ВердеPза стандартним часом н" + + "а островах Кабо-ВердеFза літнім часом на островах Кабо-ВердеOза часом н" + + "а Північних Маріанських островах4за часом на архіпелазі ЧатемKза станда" + + "ртним часом на архіпелазі ЧатемAза літнім часом на архіпелазі Чатем$за " + + "чилійським часом;за стандартним чилійським часом1за літнім чилійським ч" + + "асом$за китайським часом;за китайським стандартним часом1за китайським " + + "літнім часом%за часом у Чойбалсан<за стандартним часом у Чойбалсан2за л" + + "ітнім часом у Чойбалсан0за часом на острові Різдва8за часом на Кокосови" + + "х Островах*за колумбійським часомAза стандартним колумбійським часом7за" + + " літнім колумбійським часом.за часом на Островах КукаEза стандартним час" + + "ом на Островах Кука;за літнім часом на Островах Кука\x1dза часом на Куб" + + "і4за стандартним часом на Кубі*за літнім часом на Кубі\x1dза часом у Де" + + "віс.за часом у Дюмон дʼЮрвіль0за часом у Східному Тиморі.за часом на ос" + + "трові ПасхиEза стандартним часом на острові Пасхи;за літнім часом на ос" + + "трові Пасхи#за часом в Еквадорі<за центральноєвропейським часомSза цент" + + "ральноєвропейським стандартним часомIза центральноєвропейським літнім ч" + + "асом4за східноєвропейським часомKза східноєвропейським стандартним часо" + + "мAза східноєвропейським літнім часомCза далекосхідним європейським часо" + + "м6за західноєвропейським часомMза західноєвропейським стандартним часом" + + "Cза західноєвропейським літнім часом@за часом на Фолклендських ОстровахW" + + "за стандартним часом на Фолклендських ОстровахMза літнім часом на Фолкл" + + "ендських Островах\x1fза часом на Фіджі6за стандартним часом на Фіджі,за" + + " літнім часом на Фіджі3за часом Французької Гвіаниoза часом на Французьк" + + "их Південних і Антарктичних територіях@за часом на Галапагоських остров" + + "ах1за часом на острові Гамб’є\x1fза часом у Грузії6за стандартним часом" + + " у Грузії,за літнім часом у Грузії6за часом на островах Гілберта\x17за Г" + + "ринвічем6за східним часом у ГренландіїMза стандартним східним часом у Г" + + "ренландіїCза літнім східним часом у Гренландії8за західним часом у Грен" + + "ландіїOза стандартним західним часом у ГренландіїEза літнім західним ча" + + "сом у Гренландії,за часом на острові Гуам-за часом Перської затоки\x1dз" + + "а часом у Гаяні7за гавайсько-алеутським часомNза стандартним гавайсько-" + + "алеутським часомDза літнім гавайсько-алеутським часом#за часом у Гонкон" + + "зі:за стандартним часом у Гонконзі0за літнім часом у Гонконзі\x1dза час" + + "ом у Ховді4за стандартним часом у Ховді*за літнім часом у Ховді;за інді" + + "йським стандартним часом6за часом в Індійському Океані%за часом в Індок" + + "итаї@за центральноіндонезійським часом8за східноіндонезійським часом:за" + + " західноіндонезійським часом\x22за іранським часом9за іранським стандарт" + + "ним часом/за іранським літнім часом$за іркутським часом;за іркутським с" + + "тандартним часом1за іркутським літнім часом(за ізраїльським часом?за із" + + "раїльським стандартним часом5за ізраїльським літнім часом\x22за японськ" + + "им часом9за японським стандартним часом/за японським літнім часом&за ка" + + "мчатським часом=за камчатським стандартним часом3за камчатським літнім " + + "часом6за східним часом у Казахстані8за західним часом у Казахстані$за к" + + "орейським часом;за корейським стандартним часом1за корейським літнім ча" + + "сом0за часом на острові Косрае*за красноярським часомAза красноярським " + + "стандартним часом7за красноярським літнім часом)за часом у Киргизстані" + + "\x12час: Ланка,за часом на острові Лайн3за часом на острові Лорд-ХауJза " + + "стандартним часом на острові Лорд-Хау@за літнім часом на острові Лорд-Х" + + "ау4за часом на острові Маккуорі(за магаданським часом?за магаданським с" + + "тандартним часом5за магаданським літнім часом#за часом у Малайзії'за ча" + + "сом на Мальдівах:за часом на Маркізьких островах:за часом на Маршалових" + + " Островах4за часом на острові МаврикійKза стандартним часом на острові М" + + "аврикійAза літнім часом на острові Маврикій0за часом на станції МоусонB" + + "за північнозахідним часом у МексиціYза стандартним північнозахідним час" + + "ом у МексиціOза літнім північнозахідним часом у Мексиці>за тихоокеанськ" + + "им часом у МексиціUза стандартним тихоокеанським часом у МексиціKза літ" + + "нім тихоокеанським часом у Мексиці(за часом в Улан-Баторі?за стандартни" + + "м часом в Улан-Баторі5за літнім часом в Улан-Баторі&за московським часо" + + "м=за московським стандартним часом3за московським літнім часом\x1fза ча" + + "сом у Мʼянмі.за часом на острові Науру\x1fза часом у НепаліCза часом на" + + " островах Нової КаледоніїZза стандартним часом на островах Нової Каледон" + + "іїPза літнім часом на островах Нової Каледонії.за часом у Новій Зеланді" + + "їEза стандартним часом у Новій Зеландії;за літнім часом у Новій Зеланді" + + "ї<за часом на острові НьюфаундлендSза стандартним часом на острові Ньюф" + + "аундленд8за літнім часом у Ньюфаундленд,за часом на острові Ніуе2за час" + + "ом на острові НорфолкNза часом на архіпелазі Фернанду-ді-Нороньяeза ста" + + "ндартним часом на архіпелазі Фернанду-ді-Норонья[за літнім часом на арх" + + "іпелазі Фернанду-ді-Норонья,за новосибірським часомCза новосибірським с" + + "тандартним часом9за новосибірським літнім часом\x1eза омським часом5за " + + "омським стандартним часом+за омським літнім часом%за часом у Пакистані<" + + "за стандартним часом у Пакистані2за літнім часом у Пакистані.за часом н" + + "а острові ПалауFза часом на островах Папуа Нова Гвінея*за парагвайським" + + " часомAза стандартним парагвайським часом7за літнім парагвайським часом" + + "\x1bза часом у Перу2за стандартним часом у Перу(за літнім часом у Перу)з" + + "а часом на Філіппінах@за стандартним часом на Філіппінах6за літнім часо" + + "м на Філіппінах2за часом на островах ФеніксHза часом на островах Сен-П’" + + "єр і Мікелон_за стандартним часом на островах Сен-П’єр і МікелонUза літ" + + "нім часом на островах Сен-П’єр і Мікелон4за часом на островах Піткерн0з" + + "а часом на острові Понапе#за часом у Пхеньяні\x1aчас: Кизилорда2час: Ки" + + "зилорда, стандартний(час: Кизилорда, літній4за часом на острові Реюньйо" + + "н0за часом на станції Ротера(за сахалінським часом?за сахалінським стан" + + "дартним часом5за сахалінським літнім часом$за самарським часом;за самар" + + "ським стандартним часом1за самарським літнім часом.за часом на острові " + + "СамоаEза стандартним часом на острові Самоа;за літнім часом на острові " + + "Самоа>за часом на Сейшельських Островах%за часом у Сінгапурі<за часом н" + + "а Соломонових островахEза часом на острові Південна Джорджія#за часом у" + + " Суринамі,за часом на станції Сева.за часом на острові Таїті\x1fза часом" + + " у Тайбеї6за стандартним часом у Тайбеї,за літнім часом у Тайбеї+за часо" + + "м у Таджикистані4за часом на островах Токелау0за часом на островах Тонг" + + "аGза стандартним часом на островах Тонга=за літнім часом на островах То" + + "нга.за часом на островах Чуук-за часом у ТуркменістаніDза стандартним ч" + + "асом у Туркменістані:за літнім часом у Туркменістані2за часом на остров" + + "ах Тувалу!за часом в Уругваї8за стандартним часом в Уругваї.за літнім ч" + + "асом в Уругваї)за часом в Узбекистані@за стандартним часом в Узбекистан" + + "і6за літнім часом в Узбекистані4за часом на островах ВануатуKза стандар" + + "тним часом на островах ВануатуAза літнім часом на островах Вануату%за ч" + + "асом у Венесуелі.за владивостоцьким часомEза владивостоцьким стандартни" + + "м часом;за владивостоцьким літнім часом,за волгоградським часомCза волг" + + "оградським стандартним часом9за волгоградським літнім часом0за часом на" + + " станції Восток,за часом на острові ВейкBза часом на островах Уолліс і Ф" + + "утуна\x22за якутським часом9за якутським стандартним часом/за якутським" + + " літнім часом0за єкатеринбурзьким часомGза єкатеринбурзьким стандартним " + + "часом=за єкатеринбурзьким літнім часом" + +var bucket105 string = "" + // Size: 13457 bytes + "\x16پہلی سہ ماہی\x18دوسری سہ ماہی\x18تیسری سہ ماہی\x18چوتهی سہ ماہی\x0fآ" + + "دھی رات\x0aدوپہر\x0bسہ پہر\x06رات\x0fقبل مسیح\x19عام دور سے قبل\x0aعیسو" + + "ی\x0dعام دور\x05ق م\x0fعیسوی سن\x06عہد\x11گزشتہ سال\x0bاس سال\x0fاگلے س" + + "ال\x11{0} سال میں\x13{0} سال پہلے\x0dسہ ماہی\x18گزشتہ سہ ماہی\x12اس سہ " + + "ماہی\x16اگلے سہ ماہی\x12+{0} سہ ماہی\x12-{0} سہ ماہی\x18{0} سہ ماہی میں" + + "\x18{0} سہ ماہی قبل\x1a{0} سہ ماہی پہلے\x0aمہینہ\x15پچھلے مہینہ\x0fاس مہ" + + "ینہ\x13اگلے مہینہ\x15{0} مہینہ میں\x15{0} مہینے میں\x17{0} مہینہ پہلے" + + "\x17{0} مہینے پہلے\x06ماہ\x11{0} ماہ میں\x11{0} ماہ قبل\x12+{0} ماہ میں" + + "\x13{0} ماہ پہلے\x13پچھلے ہفتہ\x0dاس ہفتہ\x11اگلے ہفتہ\x13{0} ہفتہ میں" + + "\x13{0} ہفتے میں\x15{0} ہفتہ پہلے\x15{0} ہفتے پہلے\x11{0} کے ہفتے\x04دن" + + "\x15گزشتہ پرسوں\x0fگزشتہ کل\x04آج\x0fآئندہ کل\x1aآنے والا پرسوں\x0f{0} د" + + "ن میں\x13{0} دنوں میں\x11{0} دن پہلے\x15{0} دنوں پہلے\x12ہفتے کا دن\x15" + + "گزشتہ اتوار\x0fاس اتوار\x13اگلے اتوار\x15{0} اتوار میں\x15{0} اتوار قبل" + + "\x17گزشتہ سوموار\x11اس سوموار\x15اگلے سوموار\x11{0} پیر میں\x11{0} پیر ق" + + "بل\x17{0} سوموار میں\x13گزشتہ منگل\x0dاس منگل\x11اگلے منگل\x13{0} منگل " + + "میں\x13{0} منگل قبل\x11گزشتہ بدھ\x0bاس بدھ\x0fاگلے بدھ\x11{0} بدھ میں" + + "\x11{0} بدھ قبل\x17گزشتہ جمعرات\x11اس جمعرات\x15اگلے جمعرات\x17{0} جمعرا" + + "ت میں\x17{0} جمعرات قبل\x15اگلی جمعرات\x13گزشتہ جمعہ\x0dاس جمعہ\x11اگلے" + + " جمعہ\x13{0} جمعہ میں\x13{0} جمعہ قبل\x15گزشتہ سنیچر\x0fاس سنیچر\x13اگلے" + + " سنیچر\x15{0} سنیچر میں\x15{0} سنیچر قبل#قبل دوپہر/بعد دوپہر\x0aگھنٹہ" + + "\x0fاس گھنٹے\x15{0} گھنٹہ میں\x15{0} گھنٹے میں\x17{0} گھنٹہ پہلے\x17{0} " + + "گھنٹے پہلے\x17{0} گھنٹوں میں\x0bاس منٹ\x11{0} منٹ میں\x13{0} منٹ پہلے" + + "\x0aسیکنڈ\x04اب\x15{0} سیکنڈ میں\x17{0} سیکنڈ پہلے\x11منطقۂ وقت\x0a{0} و" + + "قت\x08{0} (+1)\x08{0} (+0).کوآرڈینیٹڈ یونیورسل ٹائم\x18برٹش سمر ٹائم" + + "\x22آئرش اسٹینڈرڈ ٹائم\x1eافغانستان کا وقت\x1eوسطی افریقہ ٹائم مشرقی افر" + + "یقہ ٹائم/جنوبی افریقہ سٹینڈرڈ ٹائم مغربی افریقہ ٹائم/مغربی افریقہ سٹینڈ" + + "رڈ ٹائم'مغربی افریقہ سمر ٹائم\x15الاسکا ٹائم&الاسکا اسٹینڈرڈ ٹائم#الاسک" + + "ا ڈے لائٹ ٹائم\x15امیزون ٹائم&ایمیزون سٹینڈرڈ ٹائم/امیزون کا موسم گرما " + + "کا وقت\x13سنٹرل ٹائم$سنٹرل اسٹینڈرڈ ٹائم!سنٹرل ڈے لائٹ ٹائم\x15ایسٹرن ٹ" + + "ائم&ایسٹرن اسٹینڈرڈ ٹائم#ایسٹرن ڈے لائٹ ٹائم\x17ماؤنٹین ٹائم(ماؤنٹین اس" + + "ٹینڈرڈ ٹائم%ماؤنٹین ڈے لائٹ ٹائم\x13پیسفک ٹائم$پیسفک اسٹینڈرڈ ٹائم!پیسف" + + "ک ڈے لائٹ ٹائم\x13انیدر ٹائم$انیدر اسٹینڈرڈ ٹائم\x1aانیدر سمر ٹائم\x13ا" + + "یپیا ٹائم\x22ایپیا سٹینڈرڈ ٹائم!ایپیا ڈے لائٹ ٹائم\x12عرب کا وقت\x1fعرب" + + " کا معیاری وقت\x1dعرب ڈے لائٹ ٹائم\x19ارجنٹینا ٹائم(ارجنٹینا سٹینڈرڈ ٹائ" + + "م ارجنٹینا سمر ٹائم'مغربی ارجنٹینا کا وقت4مغربی ارجنٹینا کا معیاری وقت>" + + "مغربی ارجنٹینا کا موسم گرما کا وقت\x1aآرمینیا کا وقت'آرمینیا کا معیاری " + + "وقت1آرمینیا کا موسم گرما کا وقت\x17اٹلانٹک ٹائم(اٹلانٹک اسٹینڈرڈ ٹائم%ا" + + "ٹلانٹک ڈے لائٹ ٹائم$سنٹرل آسٹریلیا ٹائم5آسٹریلین سنٹرل اسٹینڈرڈ ٹائم2آس" + + "ٹریلین سنٹرل ڈے لائٹ ٹائم1آسٹریلین سنٹرل ویسٹرن ٹائمBآسٹریلین سنٹرل ویس" + + "ٹرن اسٹینڈرڈ ٹائم?آسٹریلین سنٹرل ویسٹرن ڈے لائٹ ٹائم&ایسٹرن آسٹریلیا ٹا" + + "ئم7آسٹریلین ایسٹرن اسٹینڈرڈ ٹائم4آسٹریلین ایسٹرن ڈے لائٹ ٹائم&ویسٹرن آس" + + "ٹریلیا ٹائم7آسٹریلیا ویسٹرن اسٹینڈرڈ ٹائم4آسٹریلین ویسٹرن ڈے لائٹ ٹائم " + + "آذربائیجان کا وقت-آذربائیجان کا معیاری وقت7آذربائیجان کا موسم گرما کا و" + + "قت\x18ازوریس کا وقت%ازوریس کا معیاری وقت/ازوریس کا موسم گرما کا وقت\x1d" + + "بنگلہ دیش کا وقت*بنگلہ دیش کا معیاری وقت4بنگلہ دیش کا موسم گرما کا وقت" + + "\x18بھوٹان کا وقت\x1aبولیویا کا وقت\x19برازیلیا ٹائم*برازیلیا اسٹینڈرڈ ٹ" + + "ائم برازیلیا سمر ٹائم(برونئی دارالسلام ٹائم\x18کیپ ورڈی ٹائم'کیپ ورڈی س" + + "ٹینڈرڈ ٹائم\x1fکیپ ورڈی سمر ٹائم$چامورو سٹینڈرڈ ٹائم\x13چیتھم ٹائم$چیتھ" + + "م اسٹینڈرڈ ٹائم!چیتھم ڈے لائٹ ٹائم\x12چلی کا وقت\x1fچلی کا معیاری وقت)چ" + + "لی کا موسم گرما کا وقت\x0fچین ٹائم\x1eچین سٹینڈرڈ ٹائم\x1fچینی ڈے لائٹ " + + "ٹائم\x19کوئبلسان ٹائم(کوئبلسان سٹینڈرڈ ٹائم\x22کوائبلسان سمر ٹائم کرسمس" + + " آئلینڈ ٹائم\x22کوکوس آئلینڈز ٹائم\x17کولمبیا ٹائم'کولمبیا کا معیاری وقت" + + "1کولمبیا کا موسم گرما کا وقت\x1cکک آئلینڈز ٹائم+کک آئلینڈز سٹینڈرڈ ٹائم*" + + "کک آئلینڈز نصف سمر ٹائم\x13کیوبا ٹائم$کیوبا اسٹینڈرڈ ٹائم!کیوبا ڈے لائٹ" + + " ٹائم\x11ڈیوس ٹائم)ڈومونٹ-ڈی’ارویلے ٹائم\x1eمشرقی تیمور ٹائم#ایسٹر آئلین" + + "ڈ کا وقت0ایسٹر آئلینڈ کا معیاری وقت:ایسٹر آئلینڈ کا موسم گرما کا وقت" + + "\x1cایکواڈور کا وقت\x1bوسط یورپ کا وقت*وسطی یورپ کا معیاری وقت4وسطی یورپ" + + " کا موسم گرما کا وقت\x1fمشرقی یورپ کا وقت,مشرقی یورپ کا معیاری وقت6مشرقی" + + " یورپ کا موسم گرما کا وقت%بعید مشرقی یورپی وقت\x1fمغربی یورپ کا وقت,مغرب" + + "ی یورپ کا معیاری وقت6مغربی یورپ کا موسم گرما کا وقت*فاک لینڈ آئلینڈز کا" + + " وقت7فاک لینڈ آئلینڈز کا معیاری وقتAفاک لینڈ آئلینڈز کا موسم گرما کا وقت" + + "\x0fفجی ٹائم\x1eفجی سٹینڈرڈ ٹائم\x16فجی سمر ٹائم!فرینچ گیانا کا وقت6فرین" + + "چ جنوبی اور انٹارکٹک ٹائم\x1eگالاپاگوز کا وقت\x17گیمبیئر ٹائم\x18جارجیا" + + " کا وقت%جارجیا کا معیاری وقت/جارجیا کا موسم گرما کا وقت\x22جلبرٹ آئلینڈز" + + " ٹائم گرین وچ کا اصل وقت%مشرقی گرین لینڈ ٹائم6مشرقی گرین لینڈ اسٹینڈرڈ ٹ" + + "ائم?مشرقی گرین لینڈ کا موسم گرما کا وقت%مغربی گرین لینڈ ٹائم6مغربی گرین" + + " لینڈ اسٹینڈرڈ ٹائم?مغربی گرین لینڈ کا موسم گرما کا وقت!خلیج کا معیاری و" + + "قت\x16گیانا کا وقت$ہوائی الیوٹیئن ٹائم5ہوائی الیوٹیئن اسٹینڈرڈ ٹائم2ہوا" + + "ئی الیوٹیئن ڈے لائٹ ٹائم\x1aہانگ کانگ ٹائم)ہانگ کانگ سٹینڈرڈ ٹائم!ہانگ " + + "کانگ سمر ٹائم\x11ہووڈ ٹائم ہووڈ سٹینڈرڈ ٹائم\x18ہووڈ سمر ٹائم)ہندوستان " + + "کا معیاری وقت\x16بحر ہند ٹائم\x16ہند چین ٹائم$وسطی انڈونیشیا ٹائم&مشرقی" + + " انڈونیشیا ٹائم&مغربی انڈونیشیا ٹائم\x16ایران کا وقت#ایران کا معیاری وقت" + + "!ایران ڈے لائٹ ٹائم\x15ارکتسک ٹائم$ارکتسک سٹینڈرڈ ٹائم\x1cارکتسک سمر ٹائ" + + "م\x1aاسرائیل کا وقت'اسرائیل کا معیاری وقت%اسرائیل ڈے لائٹ ٹائم\x13جاپان" + + " ٹائم\x22جاپان سٹینڈرڈ ٹائم!جاپان ڈے لائٹ ٹائم2پیٹروپاؤلووسک-کیمچسکی ٹائ" + + "مCپیٹروپاؤلووسک-کیمچسکی اسٹینڈرڈ ٹائم9پیٹروپاؤلووسک-کیمچسکی سمر ٹائم'مش" + + "رقی قزاخستان کا وقت'مغربی قزاخستان کا وقت\x13کوریا ٹائم\x22کوریا سٹینڈر" + + "ڈ ٹائم!کوریا ڈے لائٹ ٹائم\x13کوسرے ٹائم\x1fکریسنویارسک ٹائم,کرسنویارسک " + + "سٹینڈرڈ ٹائم&کریسنویارسک سمر ٹائم\x1aکرغستان کا وقت لائن آئلینڈز ٹائم" + + "\x1aلارڈ ہووے ٹائم+لارڈ ہووے اسٹینڈرڈ ٹائم(لارڈ ہووے ڈے لائٹ ٹائم%مکوآری" + + " آئلینڈ کا وقت\x15میگیدن ٹائم&مگادان اسٹینڈرڈ ٹائم\x1cمیگیدن سمر ٹائم" + + "\x15ملیشیا ٹائم\x18مالدیپ کا وقت\x17مارکیسس ٹائم\x22مارشل آئلینڈز ٹائم" + + "\x15ماریشس ٹائم$ماریشس سٹینڈرڈ ٹائم\x1cماریشس سمر ٹائم\x13ماؤسن ٹائم+شما" + + "ل مغربی میکسیکو ٹائم<شمال مغربی میکسیکو اسٹینڈرڈ ٹائم9شمال مغربی میکسیک" + + "و ڈے لائٹ ٹائم\x22میکسیکن پیسفک ٹائم3میکسیکن پیسفک اسٹینڈرڈ ٹائم0میکسیک" + + "ن پیسفک ڈے لائٹ ٹائم\x1eیولان بیتور ٹائم-یولان بیتور سٹینڈرڈ ٹائم%یولان" + + " بیتور سمر ٹائم\x13ماسکو ٹائم$ماسکو اسٹینڈرڈ ٹائم\x1aماسکو سمر ٹائم\x17م" + + "یانمار ٹائم\x13ناؤرو ٹائم\x16نیپال کا وقت\x22نیو کیلیڈونیا ٹائم1نیو کیل" + + "یڈونیا سٹینڈرڈ ٹائم)نیو کیلیڈونیا سمر ٹائم\x1fنیوزی لینڈ کا وقت,نیوزی ل" + + "ینڈ کا معیاری وقت*نیوزی لینڈ ڈے لائٹ ٹائم#نیو فاؤنڈ لینڈ ٹائم4نیو فاؤنڈ" + + " لینڈ اسٹینڈرڈ ٹائم1نیو فاؤنڈ لینڈ ڈے لائٹ ٹائم\x11نیئو ٹائم%نارفوک آئلی" + + "نڈ کا وقت,فرنانڈو ڈی نورنہا کا وقت9فرنانڈو ڈی نورنہا کا معیاری وقت2فرنا" + + "نڈو ڈی نورونہا سمر ٹائم\x1dنوووسیبرسک ٹائم,نوووسیبرسک سٹینڈرڈ ٹائم$نووو" + + "سیبرسک سمر ٹائم\x13اومسک ٹائم\x22اومسک سٹینڈرڈ ٹائم\x1aاومسک سمر ٹائم" + + "\x1aپاکستان کا وقت'پاکستان کا معیاری وقت1پاکستان کا موسم گرما کا وقت\x11" + + "پلاؤ ٹائم!پاپوآ نیو گنی ٹائم\x1cپیراگوئے کا وقت)پیراگوئے کا معیاری وقت3" + + "پیراگوئے کا موسم گرما کا وقت\x14پیرو کا وقت!پیرو کا معیاری وقت+پیرو کا " + + "موسم گرما کا وقت\x15فلپائن ٹائم$فلپائن سٹینڈرڈ ٹائم\x1cفلپائن سمر ٹائم" + + "\x22فینکس آئلینڈز ٹائم0سینٹ پیئر اور مکلیئون ٹائمAسینٹ پیئر اور مکلیئون " + + "اسٹینڈرڈ ٹائم>سینٹ پیئر اور مکلیئون ڈے لائٹ ٹائم\x17پٹکائرن ٹائم\x15پون" + + "اپے ٹائم\x1aپیانگ یانگ وقت\x18ری یونین ٹائم\x1aروتھیرا کا وقت\x15سخالین" + + " ٹائم$سخالین سٹینڈرڈ ٹائم\x1cسخالین سمر ٹائم\x13سمارا ٹائم$سمارا اسٹینڈر" + + "ڈ ٹائم\x1aسمارا سمر ٹائم\x13ساموآ ٹائم\x22ساموآ سٹینڈرڈ ٹائم!ساموآ ڈے ل" + + "ائٹ ٹائم\x15سیشلیز ٹائم&سنگاپور سٹینڈرڈ ٹائم\x22سولمن آئلینڈز ٹائم جنوب" + + "ی جارجیا ٹائم\x1aسورینام کا وقت\x13سیووا ٹائم\x15تاہیتی ٹائم\x1aتائی پی" + + "ئی ٹائم+تائی پیئی اسٹینڈرڈ ٹائم&تئی پیئی ڈے لائٹ ٹائم\x1cتاجکستان کا وق" + + "ت\x17ٹوکیلاؤ ٹائم\x13ٹونگا ٹائم\x22ٹونگا سٹینڈرڈ ٹائم\x1aٹونگا سمر ٹائم" + + "\x0fچوک ٹائم ترکمانستان کا وقت-ترکمانستان کا معیاری وقت7ترکمانستان کا مو" + + "سم گرما کا وقت\x13ٹوالو ٹائم\x1cیوروگوئے کا وقت)یوروگوئے کا معیاری وقت3" + + "یوروگوئے کا موسم گرما کا وقت\x1cازبکستان کا وقت)ازبکستان کا معیاری وقت3" + + "ازبکستان کا موسم گرما کا وقت\x17وانوآٹو ٹائم&وانوآٹو سٹینڈرڈ ٹائم\x1eوا" + + "نوآٹو سمر ٹائم\x1eوینزوئیلا کا وقت\x1eولادی ووستک ٹائم-ولادی ووستک سٹین" + + "ڈرڈ ٹائم%ولادی ووستک سمر ٹائم\x1bوولگوگراد ٹائم,وولگوگراد اسٹینڈرڈ ٹائم" + + "\x22وولگوگراد سمر ٹائم\x18ووسٹاک کا وقت\x1cویک آئلینڈ ٹائم%والیز اور فٹو" + + "نا ٹائم\x15یکوتسک ٹائم&یکوتسک اسٹینڈرڈ ٹائم\x1cیکوتسک سمر ٹائم\x1fیکاٹی" + + "رِنبرگ ٹائم0یکاٹیرِنبرگ اسٹینڈرڈ ٹائم&یکاٹیرِنبرگ سمر ٹائم\x15{0} سالوں" + + " میں\x17{0} سالوں پہلے\x15{0} ہفتوں میں" + +var bucket106 string = "" + // Size: 11797 bytes + "\x11گزشتہ ماہ\x0bاس ماہ\x0fاگلے ماہ\x13گزشتہ ہفتہ\x0dاس ہفتہ\x11اگلے ہفت" + + "ہ\x13{0} ہفتہ قبل\x13{0} ہفتے قبل\x0f{0} دن قبل\x17پچھلے سوموار\x11اس س" + + "وموار\x15اگلے سوموار\x13پچھلے منگل\x0dاس منگل\x11اگلے منگل\x11پچھلے بدھ" + + "\x0bاس بدھ\x0fاگلے بدھ\x17پچھلے جمعرات\x11اس جمعرات\x15اگلے جمعرات\x13پچ" + + "ھلے جمعہ\x0dاس جمعہ\x11اگلے جمعہ\x15{0} گھنٹے قبل\x15{0} گھنٹہ قبل\x11{" + + "0} منٹ قبل\x15{0} سیکنڈ قبل\x14{0} دن کا وقت\x17{0} معیاری وقت\x1bافغانس" + + "تان ٹائم\x17ایمیزون ٹائم&ایمیزون سٹینڈرڈ ٹائم\x1eایمیزون سمر ٹائم\x0fعر" + + "ب ٹائم\x1eعرب سٹینڈرڈ ٹائم\x1dعرب ڈے لائٹ ٹائم$مغربی ارجنٹینا ٹائم3مغرب" + + "ی ارجنٹینا سٹینڈرڈ ٹائم+مغربی ارجنٹینا سمر ٹائم\x17آرمینیا ٹائم&آرمینیا" + + " سٹینڈرڈ ٹائم\x1eآرمینیا سمر ٹائم\x1dآذربائیجان ٹائم,آذربائیجان سٹینڈرڈ " + + "ٹائم$آذربائیجان سمر ٹائم\x1aبنگلہ دیش ٹائم)بنگلہ دیش سٹینڈرڈ ٹائم!بنگلہ" + + " دیش سمر ٹائم\x15بھوٹان ٹائم\x17بولیویا ٹائم\x19برازیلیا ٹائم(برازیلیا س" + + "ٹینڈرڈ ٹائم برازیلیا سمر ٹائم\x0fچلی ٹائم\x1eچلی سٹینڈرڈ ٹائم\x16چلی سم" + + "ر ٹائم\x17کولمبیا ٹائم&کولمبیا سٹینڈرڈ ٹائم\x1eکولمبیا سمر ٹائم ایسٹر آ" + + "ئلینڈ ٹائم/ایسٹر آئلینڈ سٹینڈرڈ ٹائم'ایسٹر آئلینڈ سمر ٹائم\x19ایکواڈور " + + "ٹائم\x1dوسطی یورپ کا وقت*وسطی یورپ کا معیاری وقت4وسطی یورپ کا موسم گرما" + + " کا وقت'فاک لینڈ آئلینڈز ٹائم6فاک لینڈ آئلینڈز سٹینڈرڈ ٹائم.فاک لینڈ آئل" + + "ینڈز سمر ٹائم\x1eفرینچ گیانا ٹائم\x1bگالاپاگوز ٹائم\x15جارجیا ٹائم$جارج" + + "یا سٹینڈرڈ ٹائم\x1cجارجیا سمر ٹائم\x1dگرین وچ مین ٹائم خلیج سٹینڈرڈ ٹائ" + + "م\x13گیانا ٹائم\x22انڈیا سٹینڈرڈ ٹائم\x13ایران ٹائم\x22ایران سٹینڈرڈ ٹا" + + "ئم!ایران ڈے لائٹ ٹائم\x17اسرائیل ٹائم&اسرائیل سٹینڈرڈ ٹائم%اسرائیل ڈے ل" + + "ائٹ ٹائم$مشرقی قزاخستان ٹائم$مغربی قزاخستان ٹائم\x17کرغستان ٹائم\x22مکو" + + "آری آئلینڈ ٹائم\x15مالدیپ ٹائم\x13نیپال ٹائم\x1cنیوزی لینڈ ٹائم+نیوزی ل" + + "ینڈ سٹینڈرڈ ٹائم*نیوزی لینڈ ڈے لائٹ ٹائم)فرنانڈو ڈی نورنہا ٹائم8فرنانڈو" + + " ڈی نورنہا سٹینڈرڈ ٹائم2فرنانڈو ڈی نورونہا سمر ٹائم\x17پاکستان ٹائم&پاکس" + + "تان سٹینڈرڈ ٹائم\x1eپاکستان سمر ٹائم\x19پیراگوئے ٹائم(پیراگوئے سٹینڈرڈ " + + "ٹائم پیراگوئے سمر ٹائم\x11پیرو ٹائم پیرو سٹینڈرڈ ٹائم\x18پیرو سمر ٹائم" + + "\x17روتھیرا ٹائم\x17سورینام ٹائم\x19تاجکستان ٹائم\x1dترکمانستان ٹائم,ترک" + + "مانستان سٹینڈرڈ ٹائم$ترکمانستان سمر ٹائم\x19یوروگوئے ٹائم(یوروگوئے سٹین" + + "ڈرڈ ٹائم یوروگوئے سمر ٹائم\x19ازبکستان ٹائم(ازبکستان سٹینڈرڈ ٹائم ازبکس" + + "تان سمر ٹائم\x1bوینزوئیلا ٹائم\x15ووسٹاک ٹائم\x13EEEE, d-MMMM, y (G)" + + "\x0dd-MMMM, y (G)\x0cd-MMM, y (G)\x0fdd.MM.y (GGGGG)\x03Yak\x04Dush\x04S" + + "esh\x04Chor\x03Pay\x03Jum\x04Shan\x02Ya\x02Du\x02Se\x02Ch\x02Pa\x02Ju" + + "\x02Sh\x09yakshanba\x08dushanba\x08seshanba\x0achorshanba\x09payshanba" + + "\x04juma\x06shanba\x041-ch\x042-ch\x043-ch\x044-ch\x081-chorak\x082-chor" + + "ak\x083-chorak\x084-chorak\x09yarim tun\x02TO\x0atush payti\x07ertalab" + + "\x07kunduzi\x09kechqurun\x07kechasi\x10miloddan avvalgi\x11eramizdan avv" + + "algi\x07milodiy\x04m.a.\x04e.a.\x04mil.\x0fEEEE, d-MMMM, y\x09d-MMMM, y" + + "\x08d-MMM, y\x03yil\x0co‘tgan yil\x07shu yil\x0bkeyingi yil\x10{0} yilda" + + "n keyin\x0d{0} yil oldin\x0boʻtgan yil\x06bu yil\x06chorak\x0fo‘tgan cho" + + "rak\x0ashu chorak\x0ekeyingi chorak\x13{0} chorakdan keyin\x10{0} chorak" + + " oldin\x02ch\x02oy\x0bo‘tgan oy\x06shu oy\x0akeyingi oy\x0f{0} oydan key" + + "in\x0c{0} oy oldin\x0eo‘tgan hafta\x09shu hafta\x0dkeyingi hafta\x12{0} " + + "haftadan keyin\x0f{0} hafta oldin\x09{0}-hafta\x03kun\x05kecha\x05bugun" + + "\x06ertaga\x10{0} kundan keyin\x0d{0} kun oldin\x0ahafta kuni\x12o‘tgan " + + "yakshanba\x0dshu yakshanba\x11keyingi yakshanba\x19{0} ta yakshanbadan k" + + "eyin\x16{0} ta yakshanba oldin\x11o‘tgan dushanba\x0cshu dushanba\x10key" + + "ingi dushanba\x18{0} ta dushanbadan keyin\x15{0} ta dushanba oldin\x11o‘" + + "tgan seshanba\x0cshu seshanba\x10keyingi seshanba\x18{0} ta seshanbadan " + + "keyin\x15{0} ta seshanba oldin\x13o‘tgan chorshanba\x0eshu chorshanba" + + "\x12keyingi chorshanba\x1a{0} ta chorshanbadan keyin\x17{0} ta chorshanb" + + "a oldin\x12o‘tgan payshanba\x0dshu payshanba\x11keyingi payshanba\x19{0}" + + " ta payshanbadan keyin\x16{0} ta payshanba oldin\x0do‘tgan juma\x08shu j" + + "uma\x0ckeyingi juma\x14{0} ta jumadan keyin\x11{0} ta juma oldin\x0fo‘tg" + + "an shanba\x0ashu shanba\x0ekeyingi shanba\x16{0} ta shanbadan keyin\x13{" + + "0} ta shanba oldin\x05TO/TK\x04soat\x0ashu soatda\x11{0} soatdan keyin" + + "\x0e{0} soat oldin\x06daqiqa\x0cshu daqiqada\x13{0} daqiqadan keyin\x10{" + + "0} daqiqa oldin\x04daq.\x06soniya\x05hozir\x13{0} soniyadan keyin\x10{0}" + + " soniya oldin\x04son.\x0evaqt mintaqasi\x15Britaniya yozgi vaqti\x15Irla" + + "ndiya yozgi vaqti\x12Afgʻoniston vaqti\x15Markaziy Afrika vaqti\x14Sharq" + + "iy Afrika vaqti\x1dJanubiy Afrika standart vaqti\x15Gʻarbiy Afrika vaqti" + + "\x1eGʻarbiy Afrika standart vaqti\x1bGʻarbiy Afrika yozgi vaqti\x0dAlyas" + + "ka vaqti\x16Alyaska standart vaqti\x13Alyaska yozgi vaqti\x0eAmazonka va" + + "qti\x17Amazonka standart vaqti\x14Amazonka yozgi vaqti\x16Markaziy Ameri" + + "ka vaqti\x1fMarkaziy Amerika standart vaqti\x1cMarkaziy Amerika yozgi va" + + "qti\x15Sharqiy Amerika vaqti\x1eSharqiy Amerika standart vaqti\x1bSharqi" + + "y Amerika yozgi vaqti\x13Tog‘ vaqti (AQSH)\x1cTog‘ standart vaqti (AQSH)" + + "\x19Tog‘ yozgi vaqti (AQSH)\x12Tinch okeani vaqti\x1bTinch okeani standa" + + "rt vaqti\x18Tinch okeani yozgi vaqti\x0aApia vaqti\x13Apia standart vaqt" + + "i\x10Apia yozgi vaqti\x18Saudiya Arabistoni vaqti!Saudiya Arabistoni sta" + + "ndart vaqti\x1eSaudiya Arabistoni yozgi vaqti\x0fArgentina vaqti\x18Arge" + + "ntina standart vaqti\x15Argentina yozgi vaqti\x18Gʻarbiy Argentina vaqti" + + "!Gʻarbiy Argentina standart vaqti\x1eGʻarbiy Argentina yozgi vaqti\x10Ar" + + "maniston vaqti\x19Armaniston standart vaqti\x16Armaniston yozgi vaqti" + + "\x0fAtlantika vaqti\x18Atlantika standart vaqti\x15Atlantika yozgi vaqti" + + "\x19Markaziy Avstraliya vaqti\x22Markaziy Avstraliya standart vaqti\x1fM" + + "arkaziy Avstraliya yozgi vaqti#Markaziy Avstraliya g‘arbiy vaqti,Markazi" + + "y Avstraliya g‘arbiy standart vaqti)Markaziy Avstraliya g‘arbiy yozgi va" + + "qti\x18Sharqiy Avstraliya vaqti!Sharqiy Avstraliya standart vaqti\x1eSha" + + "rqiy Avstraliya yozgi vaqti\x1aG‘arbiy Avstraliya vaqti#G‘arbiy Avstrali" + + "ya standart vaqti G‘arbiy Avstraliya yozgi vaqti\x10Ozarbayjon vaqti\x19" + + "Ozarbayjon standart vaqti\x16Ozarbayjon yozgi vaqti\x13Azor orollari vaq" + + "ti\x1cAzor orollari standart vaqti\x19Azor orollari yozgi vaqti\x10Bangl" + + "adesh vaqti\x19Bangladesh standart vaqti\x16Bangladesh yozgi vaqti\x0bBu" + + "tan vaqti\x0eBoliviya vaqti\x0fBraziliya vaqti\x18Braziliya standart vaq" + + "ti\x15Braziliya yozgi vaqti\x17Bruney-Dorussalom vaqti\x10Kabo-Verde vaq" + + "ti\x19Kabo-Verde standart vaqti\x16Kabo-Verde yozgi vaqti\x17Chamorro st" + + "andart vaqti\x0cChatem vaqti\x15Chatem standart vaqti\x12Chatem yozgi va" + + "qti\x0bChili vaqti\x14Chili standart vaqti\x11Chili yozgi vaqti\x0bXitoy" + + " vaqti\x14Xitoy standart vaqti\x11Xitoy yozgi vaqti\x10Choybalsan vaqti" + + "\x19Choybalsan standart vaqti\x16Choybalsan yozgi vaqti\x15Rojdestvo oro" + + "li vaqti\x14Kokos orollari vaqti\x0fKolumbiya vaqti\x18Kolumbiya standar" + + "t vaqti\x15Kolumbiya yozgi vaqti\x12Kuk orollari vaqti\x1bKuk orollari s" + + "tandart vaqti\x1eKuk orollari yarim yozgi vaqti\x0aKuba vaqti\x13Kuba st" + + "andart vaqti\x10Kuba yozgi vaqti\x0cDeyvis vaqti\x17Dyumon-d’Yurvil vaqt" + + "i\x13Sharqiy Timor vaqti\x11Pasxa oroli vaqti\x1aPasxa oroli standart va" + + "qti\x17Pasxa oroli yozgi vaqti\x0dEkvador vaqti\x16Markaziy Yevropa vaqt" + + "i\x1fMarkaziy Yevropa standart vaqti\x1cMarkaziy Yevropa yozgi vaqti\x15" + + "Sharqiy Yevropa vaqti\x1eSharqiy Yevropa standart vaqti\x1bSharqiy Yevro" + + "pa yozgi vaqti\x1aKaliningrad va Minsk vaqti\x17G‘arbiy Yevropa vaqti G‘" + + "arbiy Yevropa standart vaqti\x1dG‘arbiy Yevropa yozgi vaqti\x17Folklend " + + "orollari vaqti Folklend orollari standart vaqti\x1dFolklend orollari yoz" + + "gi vaqti\x0aFiji vaqti\x13Fiji standart vaqti\x10Fiji yozgi vaqti\x16Fra" + + "nsuz Gvianasi vaqti-Fransuz Janubiy hududlari va Antarktika vaqti\x0fGal" + + "apagos vaqti\x0cGambye vaqti\x0dGruziya vaqti\x16Gruziya standart vaqti" + + "\x13Gruziya yozgi vaqti\x16Gilbert orollari vaqti\x19Grinvich o‘rtacha v" + + "aqti\x19Sharqiy Grenlandiya vaqti\x22Sharqiy Grenlandiya standart vaqti" + + "\x1fSharqiy Grenlandiya yozgi vaqti\x1bG‘arbiy Grenlandiya vaqti$G‘arbiy" + + " Grenlandiya standart vaqti!G‘arbiy Grenlandiya yozgi vaqti\x1eFors ko‘r" + + "fazi standart vaqti\x0cGayana vaqti\x12Gavayi-aleut vaqti\x1bGavayi-aleu" + + "t standart vaqti\x18Gavayi-aleut yozgi vaqti\x0dGonkong vaqti\x16Gonkong" + + " standart vaqti\x13Gonkong yozgi vaqti\x0aXovd vaqti\x13Xovd standart va" + + "qti\x10Xovd yozgi vaqti\x0fHindiston vaqti\x11Hind okeani vaqti\x10Hindi" + + "xitoy vaqti\x19Markaziy Indoneziya vaqti\x18Sharqiy Indoneziya vaqti\x19" + + "Gʻarbiy Indoneziya vaqti\x0aEron vaqti\x13Eron standart vaqti\x10Eron yo" + + "zgi vaqti\x0dIrkutsk vaqti\x16Irkutsk standart vaqti\x13Irkutsk yozgi va" + + "qti\x0cIsroil vaqti\x15Isroil standart vaqti\x12Isroil yozgi vaqti\x0eYa" + + "poniya vaqti\x17Yaponiya standart vaqti\x14Yaponiya yozgi vaqti\x1aSharq" + + "iy Qozogʻiston vaqti\x1bGʻarbiy Qozogʻiston vaqti\x0cKoreya vaqti\x15Kor" + + "eya standart vaqti\x12Koreya yozgi vaqti\x0cKosrae vaqti\x11Krasnoyarsk " + + "vaqti\x1aKrasnoyarsk standart vaqti\x17Krasnoyarsk yozgi vaqti\x13Qirgʻi" + + "ziston vaqti\x13Layn orollari vaqti\x0eLord-Xau vaqti\x17Lord-Xau standa" + + "rt vaqti\x14Lord-Xau yozgi vaqti\x14Makkuori oroli vaqti\x0dMagadan vaqt" + + "i\x16Magadan standart vaqti\x13Magadan yozgi vaqti\x0fMalayziya vaqti" + + "\x15Maldiv orollari vaqti\x15Markiz orollari vaqti\x17Marshall orollari " + + "vaqti\x0eMavrikiy vaqti\x17Mavrikiy standart vaqti\x14Mavrikiy yozgi vaq" + + "ti\x0cMouson vaqti\x1fShimoli-g‘arbiy Meksika vaqti(Shimoli-g‘arbiy Meks" + + "ika standart vaqti%Shimoli-g‘arbiy Meksika yozgi vaqti\x1aMeksika Tinch " + + "okeani vaqti#Meksika Tinch okeani standart vaqti Meksika Tinch okeani yo" + + "zgi vaqti\x10Ulan-Bator vaqti\x19Ulan-Bator standart vaqti\x16Ulan-Bator" + + " yozgi vaqti\x0cMoskva vaqti\x15Moskva standart vaqti\x12Moskva yozgi va" + + "qti\x0cMyanma vaqti\x0bNauru vaqti\x0bNepal vaqti\x16Yangi Kaledoniya va" + + "qti\x1fYangi Kaledoniya standart vaqti\x1cYangi Kaledoniya yozgi vaqti" + + "\x15Yangi Zelandiya vaqti\x1eYangi Zelandiya standart vaqti\x1bYangi Zel" + + "andiya yozgi vaqti\x12Nyufaundlend vaqti\x1bNyufaundlend standart vaqti" + + "\x18Nyufaundlend yozgi vaqti\x0bNiuye vaqti\x13Norfolk oroli vaqti\x19Fe" + + "rnandu-di-Noronya vaqti\x22Fernandu-di-Noronya standart vaqti\x1fFernand" + + "u-di-Noronya yozgi vaqti\x11Novosibirsk vaqti\x1aNovosibirsk standart va" + + "qti\x17Novosibirsk yozgi vaqti\x0aOmsk vaqti\x13Omsk standart vaqti\x10O" + + "msk yozgi vaqti\x0ePokiston vaqti\x17Pokiston standart vaqti\x14Pokiston" + + " yozgi vaqti\x0bPalau vaqti\x19Papua-Yangi Gvineya vaqti\x0eParagvay vaq" + + "ti\x17Paragvay standart vaqti\x14Paragvay yozgi vaqti\x0aPeru vaqti\x13P" + + "eru standart vaqti\x10Peru yozgi vaqti\x0eFilippin vaqti\x17Filippin sta" + + "ndart vaqti\x14Filippin yozgi vaqti\x15Feniks orollari vaqti\x19Sen-Pyer" + + " va Mikelon vaqti\x22Sen-Pyer va Mikelon standart vaqti\x1fSen-Pyer va M" + + "ikelon yozgi vaqti\x0dPitkern vaqti\x0cPonape vaqti\x0dPxenyan vaqti\x0e" + + "Reyunion vaqti\x0cRotera vaqti\x0dSaxalin vaqti\x16Saxalin standart vaqt" + + "i\x13Saxalin yozgi vaqti\x0bSamoa vaqti\x14Samoa standart vaqti\x11Samoa" + + " yozgi vaqti\x16Seyshel orollari vaqti\x0eSingapur vaqti\x16Solomon orol" + + "lari vaqti\x16Janubiy Georgiya vaqti\x0dSurinam vaqti\x0bSyova vaqti\x0b" + + "Taiti vaqti\x0cTayvan vaqti\x15Tayvan standart vaqti\x12Tayvan yozgi vaq" + + "ti\x10Tojikiston vaqti\x0dTokelau vaqti\x0bTonga vaqti\x14Tonga standart" + + " vaqti\x11Tonga yozgi vaqti\x0bChuuk vaqti\x12Turkmaniston vaqti\x1bTurk" + + "maniston standart vaqti\x18Turkmaniston yozgi vaqti\x0cTuvalu vaqti\x0dU" + + "rugvay vaqti\x16Urugvay standart vaqti\x13Urugvay yozgi vaqti\x13O‘zbeki" + + "ston vaqti\x1cO‘zbekiston standart vaqti\x19O‘zbekiston yozgi vaqti\x0dV" + + "anuatu vaqti\x16Vanuatu standart vaqti\x13Vanuatu yozgi vaqti\x0fVenesue" + + "la vaqti\x11Vladivostok vaqti\x1aVladivostok standart vaqti\x17Vladivost" + + "ok yozgi vaqti\x0fVolgograd vaqti\x18Volgograd standart vaqti\x15Volgogr" + + "ad yozgi vaqti\x0cVostok vaqti\x10Ueyk oroli vaqti\x16Uollis va Futuna v" + + "aqti\x0dYakutsk vaqti\x16Yakutsk standart vaqti\x13Yakutsk yozgi vaqti" + + "\x13Yekaterinburg vaqti\x1cYekaterinburg standart vaqti\x19Yekaterinburg" + + " yozgi vaqti" + +var bucket107 string = "" + // Size: 14027 bytes + "-G y نچی ییل d نچی MMMM EEEE کونی\x11d نچی MMMM y G\x03ی.\x03د.\x03س." + + "\x03چ.\x03پ.\x03ج.\x03ش.+y نچی ییل d نچی MMMM EEEE کونی\x0fd نچی MMMM y" + + "\x1bافغانستان وقتی\x0aянвар\x0cфеврал\x08март\x0aапрел\x06май\x06июн\x06" + + "июл\x0cавгуст\x0eсентябр\x0cоктябр\x0aноябр\x0cдекабр\x0aЯнвар\x0cФевра" + + "л\x08Март\x0aАпрел\x06Май\x06Июн\x06Июл\x0cАвгуст\x0eСентябр\x0cОктябр" + + "\x0aНоябр\x0cДекабр\x06якш\x06душ\x06сеш\x06чор\x06пай\x06жум\x06шан\x04" + + "Як\x04Ду\x04Се\x04Чо\x04Па\x04Жу\x04Ша\x0eякшанба\x0eдушанба\x0eсешанба" + + "\x10чоршанба\x10пайшанба\x08жума\x0aшанба\x06Якш\x06Душ\x06Сеш\x06Чор" + + "\x06Пай\x06Жум\x06Шан\x0eЯкшанба\x0eДушанба\x0eСешанба\x10Чоршанба\x10Па" + + "йшанба\x08Жума\x0aШанба\x041-ч\x042-ч\x043-ч\x044-ч\x0c1-чорак\x0c2-чор" + + "ак\x0c3-чорак\x0c4-чорак\x0fярим тун\x04ТО\x11туш пайти\x04ТК\x0eэртала" + + "б\x0eкундузи\x10кечқурун\x0cкечаси\x1fмилоддан аввалги!эрамиздан аввалг" + + "и\x0eмилодий\x06м.а.\x06э.а.\x10Муҳаррам\x0aСафар\x17Рабиул-аввал\x15Ра" + + "биул-охир\x17Жумодиул-уло\x19Жумодиул-ухро\x0aРажаб\x0cШаъбон\x0eРамазо" + + "н\x0cШаввол\x11Зил-қаъда\x11Зил-ҳижжа\x06Эра\x06Йил\x11ўтган йил\x0bбу " + + "йил\x15кейинги йил\x19{0} йилдан сўнг\x15{0} йил аввал\x04Ой\x0fўтган о" + + "й\x09бу ой\x13кейинги ой\x17{0} ойдан сўнг\x13{0} ой аввал\x0aҲафта\x15" + + "ўтган ҳафта\x0fбу ҳафта\x19кейинги ҳафта\x1d{0} ҳафтадан сўнг\x19{0} ҳа" + + "фта олдин\x06Кун\x08кеча\x0aбугун\x0cэртага\x19{0} кундан сўнг\x15{0} к" + + "ун олдин\x13Ҳафта куни\x19ўтган якшанба\x13бу якшанба\x1dкейинги якшанб" + + "а\x19ўтган душанба\x13бу душанба\x1dкейинги душанба\x19ўтган сешанба" + + "\x13бу сешанба\x1dкейинги сешанба\x1bўтган чоршанба\x0ethis Wednesday" + + "\x1fкейинги чоршанба\x1bўтган пайшанба\x15бу пайшанба\x1fкейинги пайшанб" + + "а\x13ўтган жума\x0dбу жума\x17кейинги жума\x15ўтган шанба\x0fбу шанба" + + "\x19кейинги шанба\x11Кун вақти\x08Соат\x1b{0} соатдан сўнг\x17{0} соат о" + + "лдин\x0cДақиқа\x1f{0} дақиқадан сўнг\x1b{0} дақиқа олдин\x0aСония\x0aҳо" + + "зир\x1d{0} сониядан сўнг\x19{0} сония олдин\x0eМинтақа\x0e{0} вақти\x1f" + + "{0} кундузги вақти\x1f{0} стандарт вақти$Британия ёзги вақти$Ирландия ёз" + + "ги вақти\x1fАфғонистон вақти(Марказий Африка вақти$Шарқий Африка вақти&" + + "Жанубий Африка вақти$Ғарбий Африка вақти5Ғарбий Африка стандарт вақти-Ғ" + + "арбий Африка ёзги вақти\x17Аляска вақти(Аляска стандарт вақти(Аляска ку" + + "ндузги вақти\x1bАмазонка вақти,Амазонка стандарт вақти$Амазонка ёзги ва" + + "қти\x1dШимолий АмерикаJШимолий Америка марказий стандарт вақтиJШимолий " + + "Америка марказий кундузги вақти5Шимолий Америка шарқий вақтиFШимолий Ам" + + "ерика шарқий стандарт вақтиFШимолий Америка шарқий кундузги вақти/Шимол" + + "ий Америка тоғ вақти@Шимолий Америка тоғ стандарт вақти@Шимолий Америка" + + " тоғ кундузги вақти>Шимолий Америка тинч океани вақтиOШимолий Америка ти" + + "нч океани стандарт вақтиOШимолий Америка тинч океани кундузги вақти\x1d" + + "Арабистон вақти.Арабистон стандарт вақти.Арабистон кундузги вақти\x1dАр" + + "гентина вақти.Аргентина стандарт вақти&Аргентина ёзги вақти*Ғарбий Арге" + + "нтина вақти;Ғарбий Аргентина стандарт вақти3Ғарбий Аргентина ёзги вақти" + + "\x1fАрамнистон вақти0Арманистон стандарт вақти(Арманистон ёзги вақти\x1d" + + "Атлантика вақти.Атлантика стандарт вақти.Атлантика кундузги вақти.Марка" + + "зий Австралия вақти?Марказий Австралия стандарт вақти?Марказий Австрали" + + "я кундузги вақти;Марказий Австралия Ғарбий вақтиLМарказий Австралия Ғар" + + "бий стандарт вақтиLМарказий Австралия Ғарбий кундузги вақти*Шарқий Авст" + + "ралия вақти;Шарқий Австралия стандарт вақти;Шарқий Австралия кундузги в" + + "ақти*Ғарбий Австралия вақти;Ғарбий Австралия стандарт вақти;Ғарбий Авст" + + "ралия кундузги вақти\x1fОзарбайжон вақти0Озарбайжон стандарт вақти(Озар" + + "байжон ёзги вақти\x13Азор вақти$Азор стандарт вақти\x1cАзор ёзги вақти" + + "\x1dБангладеш вақти.Бангладеш стандарт вақти&Бангладеш ёзги вақти\x15Бут" + + "ан вақти\x19Боливия вақти\x1bБразилия вақти,Бразилия стандарт вақти$Бра" + + "зилия ёзги вақти,Бруней Даруссалом вақти\x1eКабо-Верде вақти/Кабо-Верде" + + " стандарт вақти'Кабо-Верде ёзги вақти\x19Каморро вақти\x17Чатхам вақти(Ч" + + "атхам стандарт вақти(Чатхам кундузги вақти\x13Чили вақти$Чили стандарт " + + "вақти\x1cЧили ёзги вақти\x15Хитой вақти&Хитой стандарт вақти&Хитой кунд" + + "узги вақти\x1dЧойбалсан вақти.Чойбалсан стандарт вақти&Чойбалсан ёзги в" + + "ақти(Рождество ороли вақти&Кокос ороллари вақти\x1bКолумбия вақти,Колум" + + "бия стандарт вақти$Колумбия ёзги вақти\x22Кук ороллари вақти3Кук оролла" + + "ри стандарт вақти4Кук ороллари ярим ёзги вақти\x13Куба вақти$Куба станд" + + "арт вақти$Куба кундузги вақти\x15Дэвис вақти%Думонт-д-Урвил вақти\x22Ша" + + "рқий Тимор вақти Пасхи Ороли вақти1Пасхи ороли стандарт вақти)Пасхи оро" + + "ли ёзги вақти\x19Эквадор вақти(Марказий Европа вақти9Марказий Европа ст" + + "андарт вақти1Марказий Европа ёзги вақти$Шарқий Европа вақти5Шарқий Евро" + + "па стандарт вақти-Шарқий Европа ёзги вақти$Ғарбий Европа вақти5Ғарбий Е" + + "вропа стандарт вақти-Ғарбий Европа ёзги вақти.Фолькленд ороллари вақти?" + + "Фолькленд ороллари стандарт вақти7Фолькленд ороллари ёзги вақти\x13Фижи" + + " вақти$Фижи стандарт вақти\x1cФижи ёзги вақти*Француз Гвианаси вақтиBФра" + + "нцуз жанубий ва Антарктика вақти\x1dГалапагос вақти\x19Гамбиер вақти" + + "\x17Грузия вақти(Грузия стандарт вақти Грузия ёзги вақти*Гилберт ороллар" + + "и вақти\x19Гринвич вақти,Шарқий Гренландия вақти=Шарқий Гренландия стан" + + "дарт вақти5Шарқий Гренландия ёзги вақти,Ғарбий Гренландия вақти=Ғарбий " + + "Гренландия стандарт вақти5Ғарбий Гренландия ёзги вақти\x17Кўрфаз вақти" + + "\x17Гайана вақти\x22Гавайи-алеут вақти3Гавайи-алеут стандарт вақти3Гавай" + + "и-алеут кундузги вақти\x19Гонконг вақти*Гонконг стандарт вақти\x22Гонко" + + "нг ёзги вақти\x13Ховд вақти$Ховд стандарт вақти\x1cХовд ёзги вақти\x1dҲ" + + "индистон вақти Ҳинд океани вақти\x1eҲинд-Хитой вақти.Марказий Индонезия" + + " вақти*Шарқий Индонезия вақти*Ғарбий Индонезия вақти\x13Эрон вақти$Эрон " + + "стандарт вақти$Эрон кундузги вақти\x19Иркутск вақти*Иркутск стандарт ва" + + "қти\x22Иркутск ёзги вақти\x17Исроил вақти(Исроил стандарт вақти(Исроил " + + "кундузги вақти\x17Япония вақти(Япония стандарт вақти(Япония кундузги ва" + + "қти,Шарқий Қозоғистон вақти,Ғарбий Қозоғистон вақти\x15Корея вақти&Коре" + + "я стандарт вақти&Корея кундузги вақти\x17Косрае вақти\x1fКрасноярск вақ" + + "ти0Красноярск стандарт вақти(Красноярск ёзги вақти!Қирғизистон вақти$Ла" + + "йн ороллари вақти\x1cЛорд Хове вақти-Лорд Хове стандарт вақти-Лорд Хове" + + " кундузги вақти$Маквари ороли вақти\x19Магадан вақти*Магадан стандарт ва" + + "қти\x22Магадан ёзги вақти\x1bМалайзия вақти\x1dМальдив ороллар\x1bМарке" + + "зас вақти*Маршалл ороллари вақти\x1bМаврикий вақти,Маврикий стандарт ва" + + "қти$Маврикий ёзги вақти\x19Моувсон вақти\x1eУлан-Батор вақти/Улан-Батор" + + " стандарт вақти'Улан-Батор ёзги вақти\x17Москва вақти(Москва стандарт ва" + + "қти Москва ёзги вақти\x17Мьянма вақти\x15Науру вақти\x15Непал вақти&Янг" + + "и Каледония вақти7Янги Каледония стандарт вақти/Янги Каледония ёзги вақ" + + "ти$Янги Зеландия вақти5Янги Зеландия стандарт вақти5Янги Зеландия кунду" + + "зги вақти#Ньюфаундленд вақти4Ньюфаундленд стандарт вақти4Ньюфаундленд к" + + "ундузги вақти\x13Ниуе вақти$Норфолк ороли вақти/Фернандо де Норонья вақ" + + "ти@Фернандо де Норонья стандарт вақти8Фернандо де Норонья ёзги вақти!Но" + + "восибирск вақти2Новосибирск стандарт вақти*Новосибирск ёзги вақти\x13Ом" + + "ск вақти$Омск стандарт вақти\x1cОмск ёзги вақти\x1bПокистон вақти,Покис" + + "тон стандарт вақти$Покистон ёзги вақти\x15Палау вақти+Папуа-Янги Гвинея" + + " вақти\x1bПарагвай вақти,Парагвай стандарт вақти$Парагвай ёзги вақти\x13" + + "Перу вақти$Перу стандарт вақти\x1cПеру ёзги вақти\x1bФилиппин вақти,Фил" + + "иппин стандарт вақти$Филиппин ёзги вақти(Феникс ороллари вақти0Сент-Пье" + + "р ва Микелон вақтиAСент-Пьер ва Микелон стандарт вақтиAСент-Пьер ва Мик" + + "елон кундузги вақти\x19Питкерн вақти\x17Понапе вақти\x19Реюньон вақти" + + "\x17Ротера вақти\x19Сахалин вақти*Сахалин стандарт вақти\x22Сахалин ёзги" + + " вақти\x15Самоа вақти&Самоа стандарт вақти&Самоа кундузги вақти(Сейшел о" + + "роллари вақти\x1bСингапур вақти*Соломон ороллари вақти*Жанубий Джорджия" + + " вақти\x19Суринам вақти\x15Сьова вақти\x15Таити вақти\x17Тайпей вақти(Та" + + "йпей стандарт вақти(Тайпей кундузги вақти\x1fТожикистон вақти\x19Токела" + + "у вақти\x15Тонга вақти&Тонга стандарт вақти\x1eТонга ёзги вақти\x13Чуук" + + " вақти#Туркманистон вақти4Туркманистон стандарт вақти,Туркманистон ёзги " + + "вақти\x17Тувалу вақти\x19Уругвай вақти*Уругвай стандарт вақти\x22Уругва" + + "й ёзги вақти\x1fЎзбекистон вақти0Ўзбекистон стандарт вақти(Ўзбекистон ё" + + "зги вақти\x19Вануату вақти*Вануату стандарт вақти\x22Вануату ёзги вақти" + + "\x1dВенесуэла вақти!Владивосток вақти2Владивосток стандарт вақти*Владиво" + + "сток ёзги вақти\x1dВолгоград вақти.Волгоград стандарт вақти&Волгоград ё" + + "зги вақти\x17Восток вақти\x1eУэйк ороли вақти)Уэллис ва Футуна вақти" + + "\x17Якутск вақти(Якутск стандарт вақти Якутск ёзги вақти#Екатеринбург ва" + + "қти4Екатеринбург стандарт вақти,Екатеринбург ёзги вақти" + +var bucket108 string = "" + // Size: 11442 bytes + "\x10ꖨꕪꖃ ꔞꕮ\x0cꕒꕡꖝꖕ\x06ꕾꖺ\x06ꖢꖕ\x06ꖑꕱ\x016\x017\x06ꗛꔕ\x06ꕢꕌ\x06ꕭꖃ\x16ꔞꘋꕔꕿ" + + " ꕸꖃꗏ\x10ꖨꕪꕱ ꗏꕮ\x09ꕞꕌꔵ\x09ꗳꗡꘉ\x09ꕚꕞꕚ\x09ꕉꕞꕒ\x0cꕉꔤꕆꕢ\x0cꕉꔤꕀꕮ\x09ꔻꔬꔳ\x06ꕢꘋ" + + "\x06ꕪꖃ\x09ꔨꔤꕃ\x06ꔎꔒ\x06ꖴꖸ\x06ꗦꗷ\x06ꔻꕯ\x10ꔨꕃꕮ ꔎꔒ\x06ꕌꕎ\x06ꕆꕇ\x0cꕧꕃꕧꕪ\x0cl" + + "uukao kemã\x09ɓandaɓu\x05vɔɔ\x04fulu\x03goo\x06kɔnde\x04saah\x04galo\x11" + + "kenpkato ɓololɔ\x0cluukao lɔma\x06lahadi\x0atɛɛnɛɛ\x06talata\x05alaba" + + "\x06aimisa\x06aijima\x07siɓiti\x04saŋ\x04tele\x0ewikiyɛma tele\x04hawa" + + "\x04mini\x09jaki-jaka EEEE, 'ngày' dd MMMM 'năm' y G\x0b{0} Nhuận\x03Tý" + + "\x05Sửu\x05Dần\x04Mão\x05Thìn\x04Tỵ\x05Ngọ\x04Mùi\x05Thân\x05Dậu\x06Tuất" + + "\x05Hợi\x0bLập Xuân\x0aVũ Thủy\x0bKinh Trập\x0bXuân Phân\x0aThanh Minh" + + "\x09Cốc Vũ\x0aLập Hạ\x0bTiểu Mãn\x0cMang Chủng\x09Hạ Chí\x0cTiểu Thử\x0c" + + "Đại Thử\x09Lập Thu\x0aXử Thử\x0bBạch Lộ\x09Thu Phân\x09Hàn Lộ\x0eSương " + + "Giáng\x0cLập Đông\x0eTiểu Tuyết\x0eĐại Tuyết\x0bĐông Chí\x0bTiểu Hàn\x0b" + + "Đại Hàn\x09Giáp Tý\x0aẤt Sửu\x0bBính Dần\x0aĐinh Mão\x0bMậu Thìn\x09Kỷ " + + "Tỵ\x0aCanh Ngọ\x09Tân Mùi\x0bNhâm Thân\x0aQuý Dậu\x0cGiáp Tuất\x0aẤt Hợi" + + "\x09Bính Tý\x0bĐinh Sửu\x0bMậu Dần\x09Kỷ Mão\x0aCanh Thìn\x09Tân Tỵ\x0bN" + + "hâm Ngọ\x09Quý Mùi\x0bGiáp Thân\x0aẤt Dậu\x0cBính Tuất\x0bĐinh Hợi\x09Mậ" + + "u Tý\x0aKỷ Sửu\x0aCanh Dần\x09Tân Mão\x0bNhâm Thìn\x09Quý Tỵ\x0bGiáp Ngọ" + + "\x09Ất Mùi\x0bBính Thân\x0bĐinh Dậu\x0cMậu Tuất\x0aKỷ Hợi\x08Canh Tý\x0a" + + "Tân Sửu\x0bNhâm Dần\x09Quý Mão\x0bGiáp Thìn\x09Ất Tỵ\x0bBính Ngọ\x0aĐinh" + + " Mùi\x0bMậu Thân\x0aKỷ Dậu\x0bCanh Tuất\x0aTân Hợi\x09Nhâm Tý\x0aQuý Sửu" + + "\x0bGiáp Dần\x09Ất Mão\x0bBính Thìn\x0aĐinh Tỵ\x0bMậu Ngọ\x09Kỷ Mùi\x0aC" + + "anh Thân\x0aTân Dậu\x0cNhâm Tuất\x0aQuý Hợi\x1eEEEE, 'ngày' dd MMMM 'năm" + + "' U\x1e'Ngày' dd 'tháng' M 'năm' U\x07dd-MM U'EEEE, 'ngày' dd 'tháng' MM" + + " 'năm' y G 'Ngày' dd 'tháng' M 'năm' y G\x0e{1} 'lúc' {0}\x05thg 1\x05th" + + "g 2\x05thg 3\x05thg 4\x05thg 5\x05thg 6\x05thg 7\x05thg 8\x05thg 9\x06th" + + "g 10\x06thg 11\x06thg 12\x08tháng 1\x08tháng 2\x08tháng 3\x08tháng 4\x08" + + "tháng 5\x08tháng 6\x08tháng 7\x08tháng 8\x08tháng 9\x09tháng 10\x09tháng" + + " 11\x09tháng 12\x05Thg 1\x05Thg 2\x05Thg 3\x05Thg 4\x05Thg 5\x05Thg 6" + + "\x05Thg 7\x05Thg 8\x05Thg 9\x06Thg 10\x06Thg 11\x06Thg 12\x08Tháng 1\x08" + + "Tháng 2\x08Tháng 3\x08Tháng 4\x08Tháng 5\x08Tháng 6\x08Tháng 7\x08Tháng " + + "8\x08Tháng 9\x09Tháng 10\x09Tháng 11\x09Tháng 12\x02CN\x04Th 2\x04Th 3" + + "\x04Th 4\x04Th 5\x04Th 6\x04Th 7\x02T2\x02T3\x02T4\x02T5\x02T6\x02T7\x0c" + + "Chủ Nhật\x09Thứ Hai\x08Thứ Ba\x09Thứ Tư\x0aThứ Năm\x0aThứ Sáu\x0bThứ Bảy" + + "\x06Quý 1\x06Quý 2\x06Quý 3\x06Quý 4\x06quý 1\x06quý 2\x06quý 3\x06quý 4" + + "\x0bnửa đêm\x02TR\x02CH\x05sáng\x07chiều\x05tối\x05đêm\x05trưa\x0bTrước " + + "CN\x06sau CN\x06tr. CN\x0eTrước R.O.C\x06R.O.C.\x0dThời đại\x04Năm\x0bnă" + + "m ngoái\x08năm nay\x08năm sau\x12sau {0} năm nữa\x11{0} năm trước\x04Quý" + + "\x0dquý trước\x09quý này\x08quý sau\x12sau {0} quý nữa\x11{0} quý trước" + + "\x06Tháng\x0ftháng trước\x0btháng này\x0atháng sau\x14sau {0} tháng nữa" + + "\x13{0} tháng trước\x06Tuần\x0ftuần trước\x0btuần này\x0atuần sau\x14sau" + + " {0} tuần nữa\x13{0} tuần trước\x0atuần {0}\x05Ngày\x08Hôm kia\x08Hôm qu" + + "a\x08Hôm nay\x09Ngày mai\x09Ngày kia\x13sau {0} ngày nữa\x12{0} ngày trư" + + "ớc\x12Ngày trong tuần\x1cChủ Nhật tuần trước\x18Chủ Nhật tuần này\x17C" + + "hủ Nhật tuần sau\x1asau {0} Chủ Nhật nữa\x19{0} Chủ Nhật trước\x19Thứ Ha" + + "i tuần trước\x15Thứ Hai tuần này\x14Thứ Hai tuần sau\x17sau {0} Thứ Hai " + + "nữa\x16{0} Thứ Hai trước\x18Thứ Ba tuần trước\x14Thứ Ba tuần này\x13Thứ " + + "Ba tuần sau\x16sau {0} Thứ Ba nữa\x15{0} Thứ Ba trước\x19Thứ Tư tuần trư" + + "ớc\x15Thứ Tư tuần này\x14Thứ Tư tuần sau\x17sau {0} Thứ Tư nữa\x16{0} " + + "Thứ Tư trước\x1aThứ Năm tuần trước\x16Thứ Năm tuần này\x15Thứ Năm tuần s" + + "au\x18sau {0} Thứ Năm nữa\x17{0} Thứ Năm trước\x1aThứ Sáu tuần trước\x16" + + "Thứ Sáu tuần này\x15Thứ Sáu tuần sau\x18sau {0} Thứ Sáu nữa\x17{0} Thứ S" + + "áu trước\x1bThứ Bảy tuần trước\x17Thứ Bảy tuần này\x16Thứ Bảy tuần sau" + + "\x19sau {0} Thứ Bảy nữa\x18{0} Thứ Bảy trước\x05SA/CH\x05Giờ\x0agiờ này" + + "\x13sau {0} giờ nữa\x12{0} giờ trước\x05Phút\x0aphút này\x13sau {0} phút" + + " nữa\x12{0} phút trước\x05Giây\x0abây giờ\x13sau {0} giây nữa\x12{0} giâ" + + "y trước\x0aMúi giờ\x09Giờ {0}\x12Giờ mùa hè {0}\x11Giờ chuẩn {0}\x1eGiờ " + + "phối hợp quốc tế\x12Giờ Mùa Hè Anh\x14Giờ chuẩn Ai-len\x0aGiờ Acre\x12Gi" + + "ờ Chuẩn Acre\x13Giờ Mùa Hè Acre\x11Giờ Afghanistan\x0fGiờ Trung Phi" + + "\x10Giờ Đông Phi\x15Giờ Chuẩn Nam Phi\x0eGiờ Tây Phi\x16Giờ Chuẩn Tây Ph" + + "i\x17Giờ Mùa Hè Tây Phi\x0cGiờ Alaska\x14Giờ Chuẩn Alaska\x15Giờ Mùa Hè " + + "Alaska\x0cGiờ Almaty\x14Giờ Chuẩn Almaty\x15Giờ Mùa Hè Almaty\x0cGiờ Ama" + + "zon\x14Giờ Chuẩn Amazon\x15Giờ Mùa Hè Amazon\x12Giờ miền trung\x1aGiờ ch" + + "uẩn miền trung\x1bGiờ mùa hè miền trung\x13Giờ miền đông\x1bGiờ chuẩn mi" + + "ền đông\x1cGiờ mùa hè miền đông\x11Giờ miền núi\x19Giờ chuẩn miền núi" + + "\x1aGiờ mùa hè miền núi\x19Giờ Thái Bình Dương!Giờ chuẩn Thái Bình Dương" + + "\x22Giờ Mùa hè Thái Bình Dương\x0cGiờ Anadyr\x14Giờ Chuẩn Anadyr\x15Giờ " + + "mùa hè Anadyr\x0aGiờ Apia\x12Giờ Chuẩn Apia\x13Giờ Mùa Hè Apia\x0bGiờ Aq" + + "tau\x13Giờ Chuẩn Aqtau\x14Giờ Mùa Hè Aqtau\x0cGiờ Aqtobe\x14Giờ Chuẩn Aq" + + "tobe\x15Giờ Mùa Hè Aqtobe\x0fGiờ Ả Rập\x17Giờ chuẩn Ả Rập\x18Giờ Mùa Hè " + + "Ả Rập\x0fGiờ Argentina\x17Giờ Chuẩn Argentina\x18Giờ Mùa Hè Argentina" + + "\x1bGiờ miền tây Argentina#Giờ chuẩn miền mây Argentina$Giờ mùa hè miền " + + "tây Argentina\x0dGiờ Armenia\x15Giờ Chuẩn Armenia\x16Giờ Mùa Hè Armenia" + + "\x19Giờ Đại Tây Dương!Giờ Chuẩn Đại Tây Dương\x22Giờ Mùa hè Đại Tây Dươn" + + "g\x1eGiờ Miền Trung Nước Úc&Giờ Chuẩn Miền Trung Nước Úc'Giờ Mùa Hè Miền" + + " Trung Nước Úc#Giờ Miền Trung Tây Nước Úc+Giờ Chuẩn Miền Trung Tây Nước " + + "Úc,Giờ Mùa Hè Miền Trung Tây Nước Úc\x1fGiờ Miền Đông Nước Úc'Giờ Chuẩn" + + " Miền Đông Nước Úc(Giờ Mùa Hè Miền Đông Nước Úc\x1dGiờ Miền Tây Nước Úc%" + + "Giờ Chuẩn Miền Tây Nước Úc&Giờ Mùa Hè Miền Tây Nước Úc\x10Giờ Azerbaijan" + + "\x18Giờ Chuẩn Azerbaijan\x19Giờ Mùa Hè Azerbaijan\x0cGiờ Azores\x14Giờ C" + + "huẩn Azores\x15Giờ Mùa Hè Azores\x10Giờ Bangladesh\x18Giờ Chuẩn Banglade" + + "sh\x19Giờ Mùa Hè Bangladesh\x0cGiờ Bhutan\x0dGiờ Bolivia\x0eGiờ Brasilia" + + "\x16Giờ Chuẩn Brasilia\x17Giờ Mùa Hè Brasilia\x17Giờ Brunei Darussalam" + + "\x10Giờ Cape Verde\x18Giờ Chuẩn Cape Verde\x19Giờ Mùa Hè Cape Verde\x0eG" + + "iờ Chamorro\x0dGiờ Chatham\x15Giờ Chuẩn Chatham\x16Giờ Mùa Hè Chatham" + + "\x0bGiờ Chile\x13Giờ Chuẩn Chile\x14Giờ Mùa Hè Chile\x12Giờ Trung Quốc" + + "\x1aGiờ Chuẩn Trung Quốc\x1bGiờ Mùa Hè Trung Quốc\x10Giờ Choibalsan\x18G" + + "iờ Chuẩn Choibalsan\x19Giờ Mùa Hè Choibalsan\x16Giờ Đảo Christmas\x19Giờ" + + " Quần Đảo Cocos\x0eGiờ Colombia\x16Giờ Chuẩn Colombia\x17Giờ Mùa Hè Colo" + + "mbia\x18Giờ Quần Đảo Cook Giờ Chuẩn Quần Đảo Cook'Giờ Nửa Mùa Hè Quần Đả" + + "o Cook\x0aGiờ Cuba\x12Giờ Chuẩn Cuba\x13Giờ Mùa Hè Cuba\x0bGiờ Davis\x18" + + "Giờ Dumont-d’Urville\x12Giờ Đông Timor\x18Giờ Đảo Phục Sinh Giờ Chuẩn Đả" + + "o Phục Sinh!Giờ Mùa Hè Đảo Phục Sinh\x0dGiờ Ecuador\x0fGiờ Trung Âu\x17G" + + "iờ Chuẩn Trung Âu\x18Giờ Mùa Hè Trung Âu\x10Giờ Đông Âu\x18Giờ Chuẩn Đôn" + + "g Âu\x19Giờ Mùa Hè Đông Âu\x1dGiờ Châu Âu Viễn Đông\x0eGiờ Tây Âu\x16Giờ" + + " Chuẩn Tây Âu\x17Giờ Mùa hè Tây Âu\x1cGiờ Quần Đảo Falkland$Giờ Chuẩn Qu" + + "ần Đảo Falkland%Giờ Mùa Hè Quần Đảo Falkland\x0aGiờ Fiji\x12Giờ Chuẩn " + + "Fiji\x13Giờ Mùa Hè Fiji\x1aGiờ Guiana thuộc Pháp%Giờ Nam Cực và Nam Nước" + + " Pháp\x0fGiờ Galapagos\x0dGiờ Gambier\x0cGiờ Gruzia\x14Giờ Chuẩn Gruzia" + + "\x15Giờ Mùa Hè Gruzia\x1bGiờ Quần Đảo Gilbert\x1bGiờ Trung bình Greenwic" + + "h\x1dGiờ Miền Đông Greenland%Giờ Chuẩn Miền Đông Greenland&Giờ Mùa Hè Mi" + + "ền Đông Greenland\x1bGiờ Miền Tây Greenland#Giờ Chuẩn Miền Tây Greenla" + + "nd$Giờ Mùa Hè Miền Tây Greenland\x12Giờ Chuẩn Guam\x1aGiờ Chuẩn Vùng Vịn" + + "h\x0cGiờ Guyana\x15Giờ Hawaii-Aleutian\x1dGiờ Chuẩn Hawaii-Aleutian\x1eG" + + "iờ Mùa Hè Hawaii-Aleutian\x12Giờ Hồng Kông\x1aGiờ Chuẩn Hồng Kông\x1bGiờ" + + " Mùa Hè Hồng Kông\x0aGiờ Hovd\x12Giờ Chuẩn Hovd\x13Giờ Mùa Hè Hovd\x18Gi" + + "ờ Chuẩn Ấn Độ\x18Giờ Ấn Độ Dương\x14Giờ Đông Dương\x1cGiờ Miền Trung I" + + "ndonesia\x1dGiờ Miền Đông Indonesia\x1bGiờ Miền Tây Indonesia\x0aGiờ Ira" + + "n\x12Giờ Chuẩn Iran\x13Giờ Mùa Hè Iran\x0dGiờ Irkutsk\x15Giờ Chuẩn Irkut" + + "sk\x16Giờ Mùa Hè Irkutsk\x0cGiờ Israel\x14Giờ Chuẩn Israel\x15Giờ Mùa Hè" + + " Israel\x12Giờ Nhật Bản\x1aGiờ Chuẩn Nhật Bản\x1bGiờ Mùa Hè Nhật Bản\x1e" + + "Giờ Petropavlovsk-Kamchatski&Giờ chuẩn Petropavlovsk-Kamchatski'Giờ mùa " + + "hè Petropavlovsk-Kamchatski\x1eGiờ Miền Đông Kazakhstan\x1cGiờ Miền Tây " + + "Kazakhstan\x11Giờ Hàn Quốc\x19Giờ Chuẩn Hàn Quốc\x1aGiờ Mùa Hè Hàn Quốc" + + "\x0cGiờ Kosrae\x11Giờ Krasnoyarsk\x19Giờ Chuẩn Krasnoyarsk\x1aGiờ Mùa Hè" + + " Krasnoyarsk\x0fGiờ Kyrgystan\x0bGiờ Lanka\x18Giờ Quần Đảo Line\x0fGiờ L" + + "ord Howe\x17Giờ Chuẩn Lord Howe\x18Giờ Mùa Hè Lord Howe\x0cGiờ Ma Cao" + + "\x14Giờ Chuẩn Ma Cao\x15Giờ Mùa Hè Ma Cao\x16Giờ đảo Macquarie\x0dGiờ Ma" + + "gadan\x15Giờ Chuẩn Magadan\x16Giờ mùa hè Magadan\x0eGiờ Malaysia\x0eGiờ " + + "Maldives\x0fGiờ Marquesas\x1cGiờ Quần Đảo Marshall\x0fGiờ Mauritius\x17G" + + "iờ Chuẩn Mauritius\x18Giờ Mùa Hè Mauritius\x0cGiờ Mawson\x17Giờ Tây Bắc " + + "Mexico\x1fGiờ Chuẩn Tây Bắc Mexico Giờ Mùa Hè Tây Bắc Mexico Giờ Thái Bì" + + "nh Dương Mexico(Giờ Chuẩn Thái Bình Dương Mexico)Giờ Mùa Hè Thái Bình Dư" + + "ơng Mexico\x10Giờ Ulan Bator\x18Giờ chuẩn Ulan Bator\x19Giờ mùa hè Ulan" + + " Bator\x0fGiờ Matxcơva\x17Giờ Chuẩn Matxcơva\x18Giờ Mùa Hè Matxcơva\x0dG" + + "iờ Myanmar\x0bGiờ Nauru\x0bGiờ Nepal\x13Giờ New Caledonia\x1bGiờ Chuẩn N" + + "ew Caledonia\x1cGiờ Mùa Hè New Caledonia\x11Giờ New Zealand\x19Giờ Chuẩn" + + " New Zealand\x1aGiờ Mùa Hè New Zealand\x12Giờ Newfoundland\x1aGiờ Chuẩn " + + "Newfoundland\x1bGiờ Mùa Hè Newfoundland\x0aGiờ Niue\x14Giờ đảo Norfolk" + + "\x19Giờ Fernando de Noronha!Giờ Chuẩn Fernando de Noronha\x22Giờ Mùa Hè " + + "Fernando de Noronha!Giờ Quần Đảo Bắc Mariana\x11Giờ Novosibirsk\x19Giờ c" + + "huẩn Novosibirsk\x1aGiờ mùa hè Novosibirsk\x0aGiờ Omsk\x12Giờ chuẩn Omsk" + + "\x13Giờ mùa hè Omsk\x0eGiờ Pakistan\x16Giờ Chuẩn Pakistan\x17Giờ Mùa Hè " + + "Pakistan\x0bGiờ Palau\x16Giờ Papua New Guinea\x0eGiờ Paraguay\x16Giờ Chu" + + "ẩn Paraguay\x17Giờ Mùa Hè Paraguay\x0aGiờ Peru\x12Giờ Chuẩn Peru\x13Gi" + + "ờ Mùa Hè Peru\x0fGiờ Philippin\x17Giờ Chuẩn Philippin\x18Giờ Mùa Hè Ph" + + "ilippin\x1bGiờ Quần Đảo Phoenix\x1dGiờ St. Pierre và Miquelon%Giờ Chuẩn " + + "St. Pierre và Miquelon(Giờ Mùa Hè Saint Pierre và Miquelon\x0eGiờ Pitcai" + + "rn\x0cGiờ Ponape\x15Giờ Bình Nhưỡng\x0fGiờ Qyzylorda\x17Giờ Chuẩn Qyzylo" + + "rda\x18Giờ Mùa Hè Qyzylorda\x0dGiờ Reunion\x0dGiờ Rothera\x0eGiờ Sakhali" + + "n\x16Giờ Chuẩn Sakhalin\x17Giờ mùa hè Sakhalin\x0cGiờ Samara\x14Giờ Chuẩ" + + "n Samara\x15Giờ mùa hè Samara\x0bGiờ Samoa\x13Giờ Chuẩn Samoa\x15Giờ ban" + + " ngày Samoa\x10Giờ Seychelles\x0fGiờ Singapore\x1bGiờ Quần Đảo Solomon" + + "\x11Giờ Nam Georgia\x0eGiờ Suriname\x0bGiờ Syowa\x0cGiờ Tahiti\x11Giờ Đà" + + "i Bắc\x19Giờ Chuẩn Đài Bắc\x1aGiờ Mùa Hè Đài Bắc\x10Giờ Tajikistan\x0dGi" + + "ờ Tokelau\x0bGiờ Tonga\x13Giờ Chuẩn Tonga\x14Giờ Mùa Hè Tonga\x0bGiờ C" + + "huuk\x12Giờ Turkmenistan\x1aGiờ Chuẩn Turkmenistan\x1bGiờ Mùa Hè Turkmen" + + "istan\x0cGiờ Tuvalu\x0dGiờ Uruguay\x15Giờ Chuẩn Uruguay\x16Giờ Mùa Hè Ur" + + "uguay\x10Giờ Uzbekistan\x18Giờ Chuẩn Uzbekistan\x19Giờ Mùa Hè Uzbekistan" + + "\x0dGiờ Vanuatu\x15Giờ Chuẩn Vanuatu\x16Giờ Mùa Hè Vanuatu\x0fGiờ Venezu" + + "ela\x11Giờ Vladivostok\x19Giờ Chuẩn Vladivostok\x1aGiờ mùa hè Vladivosto" + + "k\x0fGiờ Volgograd\x17Giờ Chuẩn Volgograd\x18Giờ Mùa Hè Volgograd\x0cGiờ" + + " Vostok\x11Giờ Đảo Wake\x17Giờ Wallis và Futuna\x0dGiờ Yakutsk\x15Giờ Ch" + + "uẩn Yakutsk\x16Giờ mùa hè Yakutsk\x13Giờ Yekaterinburg\x1bGiờ Chuẩn Yeka" + + "terinburg\x1cGiờ mùa hè Yekaterinburg" + +var bucket109 string = "" + // Size: 14311 bytes + "\x16G y MMMM'a' 'd'. d'id'\x0aG y MMM. d\x05yanul\x05febul\x06mäzul\x06p" + + "rilul\x05mayul\x05yunul\x05yulul\x06gustul\x05setul\x05tobul\x05novul" + + "\x05dekul\x05sudel\x05mudel\x05tudel\x05vedel\x06dödel\x06fridel\x06zäde" + + "l\x03Yf1\x03Yf2\x03Yf3\x03Yf4\x0e1id yelafoldil\x0e2id yelafoldil\x0e3id" + + " yelafoldil\x0e4id yelafoldil\x09b. t. kr.\x09p. t. kr.\x14y MMMM'a' 'd'" + + ". d'id'\x08y MMM. d\x03yel\x06äyelo\x05ayelo\x05oyelo\x03mul\x06ämulo" + + "\x05amulo\x05omulo\x03vig\x06ävigo\x05avigo\x05ovigo\x05edelo\x06ädelo" + + "\x05adelo\x05odelo\x05udelo\x07vodabel\x07delalaf\x04düp\x05sekun\x03zon" + + "\x06Jenner\x06Hornig\x06Märze\x07Abrille\x05Meije\x08Bráčet\x06Heiwet" + + "\x08Öigšte\x0dHerbštmánet\x09Wímánet\x0cWintermánet\x0dChrištmánet\x07Su" + + "nntag\x07Mäntag\x07Zištag\x08Mittwuč\x08Fróntag\x06Fritag\x08Samštag\x06" + + "Epoča\x04Jár\x0aI {0} jár\x0cvor {0} jár\x0ccor {0} jár\x06Mánet\x0cI {0" + + "} mánet\x0evor {0} mánet\x05Wuča\x0bi {0} wuča\x0ci {0} wučä\x0dvor {0} " + + "wuča\x0ecor {0} wučä\x0aVorgešter\x07Gešter\x05Hitte\x05Móre\x09Ubermóre" + + "\x09i {0} tag\x0ai {0} täg\x0bvor {0} tag\x0cvor {0} täg\x08Wučetag\x0bi" + + " {0} stund\x0ci {0} stunde\x0dvor {0} stund\x0evor {0} stunde\x09Mínütta" + + "\x0di {0} minüta\x0di {0} minüte\x0fvor {0} minüta\x0fvor {0} minüte\x07" + + "Sekunda\x0ci {0} sekund\x0di {0} sekunde\x0evor {0} sekund\x0fvor {0} se" + + "kunde\x08Zitzóna\x07{0} zit\x0eAtlantiši Zit\x16Atlantiši Standardzit" + + "\x14Atlantiši Summerzit\x15Mitteleuropäiši Zit\x1dMitteleuropäiši Standa" + + "rdzit\x1bMitteleuropäiši Summerzit\x13Ošteuropäiši Zit\x1bOšteuropäiši S" + + "tandardzit\x19Ošteuropäiši Summerzit\x14Wešteuropäiši Zit\x1cWešteuropäi" + + "ši Standardzit\x1aWešteuropäiši Summerzit\x04Sabi\x04Bala\x04Kubi\x04Ku" + + "sa\x04Kuna\x04Kuta\x04Muka\x07Sabiiti\x06Balaza\x09Owokubili\x09Owokusat" + + "u\x07Olokuna\x0aOlokutaanu\x0aOlomukaaga\x19Ebisera ebyomwaka ebisoka" + + "\x1cEbisera ebyomwaka ebyokubiri\x1cEbisera ebyomwaka ebyokusatu\x1aEbis" + + "era ebyomwaka ebyokuna\x06Munkyo\x06Eigulo\x13Kulisto nga azilawo\x12Kul" + + "isto nga affile\x02AZ\x02AF\x08Emulembe\x08Esabiiti\x07Olunaku\x04Edho" + + "\x11Olwaleelo (leelo)\x05Enkyo\x13Olunaka lwa sabiiti\x0dmunkyo/Eigulo" + + "\x06Essawa\x0bObutikitiki\x0bEssawa edha\x03o.1\x03o.2\x03o.3\x03o.4\x03" + + "o.5\x03o.6\x03o.7\x03o.8\x03o.9\x04o.10\x04o.11\x04o.12!pikítíkítie, oól" + + "í ú kutúan\x1dsiɛyɛ́, oóli ú kándíɛ!ɔnsúmbɔl, oóli ú kátátúɛ\x17mesiŋ, " + + "oóli ú kénie\x1aensil, oóli ú kátánuɛ\x06ɔsɔn\x05efute\x07pisuyú\x0eimɛŋ" + + " i puɔs!imɛŋ i putúk,oóli ú kátíɛ\x0amakandikɛ\x0bpilɔndɔ́\x02sd\x02md" + + "\x02mw\x02et\x02kl\x02fl\x02ss\x0asɔ́ndiɛ\x07móndie\x11muányáŋmóndie\x0e" + + "metúkpíápɛ\x14kúpélimetúkpiapɛ\x07feléte\x08séselé\x0bndátúɛ 1\x0bndátúɛ" + + " 2\x0bndátúɛ 3\x0bndátúɛ 4\x0ckiɛmɛ́ɛm\x0bkisɛ́ndɛ\x13katikupíen Yésuse" + + "\x16ékélémkúnupíén n\x0akipéŋén\x07yɔɔŋ\x05oóli\x0bpuɔ́sɛ́\x07púyoó\x06í" + + "naan\x09nakinyám\x16metúk mɔ́sɔ́ndiɛ\x18kiɛmɛ́ɛm,kisɛ́ndɛ\x09kisikɛl," + + "\x06minít\x07síkɛn\x1dkinúki kisikɛl ɔ́ pitɔŋ\x10יאַנואַר\x12פֿעברואַר" + + "\x08מערץ\x0eאַפּריל\x06מיי\x08יוני\x08יולי\x0eאויגוסט\x14סעפּטעמבער\x0eא" + + "קטאבער\x12נאוועמבער\x10דעצעמבער\x08יאַנ\x08פֿעב\x0aאַפּר\x08אויג\x08סעפ" + + "ּ\x06אקט\x08נאוו\x06דעצ\x0cזונטיק\x0eמאָנטיק\x0eדינסטיק\x0eמיטוואך\x12ד" + + "אנערשטיק\x10פֿרײַטיק\x06שבת\x16פֿאַרמיטאָג\x14נאָכמיטאָג\x12EEEE, dטן M" + + "MMM y\x0cdטן MMMM y\x0bdטן MMM y\x04תש\x04חש\x04כס\x04טב\x04שב\x04אא\x04" + + "אד\x03א2\x04ני\x04אי\x04סי\x04תמ\x04אב\x04אל\x04אב\x0cתקופֿה\x08יאָר" + + "\x16פֿאַראַיאָר\x0fהײַ יאָר\x16איבער א יאָר\x17איבער {0} יאָר\x17פֿאַר {" + + "0} יאָר\x0cמאנאַט#פֿאַרגאנגענעם חודש\x0fדעם חודש\x1bקומענדיקן חודש\x17אי" + + "בער {0} חודש\x19איבער {0} חדשים\x17פֿאַר {0} חודש\x19פֿאַר {0} חדשים" + + "\x08וואך\x08טאָג\x0aנעכטן\x0aהיינט\x0aמארגן\x1eאין {0} טאָג אַרום\x1cאין" + + " {0} טעג אַרום\x1fטאָג אין דער וואך\x0aמינוט\x0eסעקונדע\x10צײַטזאנע\x0eṢ" + + "ẹ́rẹ́\x08Èrèlè\x0cẸrẹ̀nà\x06Ìgbé\x09Ẹ̀bibi\x07Òkúdu\x09Agẹmọ\x06Ògún" + + "\x05Owewe\x0bỌ̀wàrà\x06Bélú\x0bỌ̀pẹ̀\x15Oṣù Ṣẹ́rẹ́\x0fOṣù Èrèlè\x13Oṣù Ẹ" + + "rẹ̀nà\x0dOṣù Ìgbé\x10Oṣù Ẹ̀bibi\x0eOṣù Òkúdu\x10Oṣù Agẹmọ\x0dOṣù Ògún" + + "\x0cOṣù Owewe\x12Oṣù Ọ̀wàrà\x0dOṣù Bélú\x12Oṣù Ọ̀pẹ̀\x07Àìkú\x04Ajé\x0bÌ" + + "sẹ́gun\x0cỌjọ́rú\x0dỌjọ́bọ\x06Ẹtì\x0dÀbámẹ́ta\x11Ọjọ́ Àìkú\x0eỌjọ́ Ajé" + + "\x15Ọjọ́ Ìsẹ́gun\x10Ọjọ́ Ẹtì\x17Ọjọ́ Àbámẹ́ta\x11Kọ́tà Kínní\x0fKọ́tà Ke" + + "jì\x0dKọ́à Keta\x11Kọ́tà Kẹrin\x0aÀárọ̀\x09Ọ̀sán\x0bSaju Kristi\x0cLehin" + + " Kristi\x06Ìgbà\x07Ọdún\x04Osù\x08Ọ̀sè\x09Ọjọ́\x08íjẹta\x05Àná\x05Òní" + + "\x07Ọ̀la\x0aòtúùnla\x15Ọjọ́ Ọ̀sẹ̀\x14Àárọ̀/ọ̀sán\x09wákàtí\x0bÌsẹ́jú\x13" + + "Ìsẹ́jú Ààyá\x16Ibi Àkókò Àgbáyé\x0bShɛ́rɛ́\x0aƐrɛ̀nà\x08Ɛ̀bibi\x07Agɛmɔ" + + "\x0aƆ̀wàrà\x09Ɔ̀pɛ̀\x11Oshù Shɛ́rɛ́\x0eOshù Èrèlè\x10Oshù Ɛrɛ̀nà\x0cOshù" + + " Ìgbé\x0eOshù Ɛ̀bibi\x0dOshù Òkúdu\x0dOshù Agɛmɔ\x0cOshù Ògún\x0bOshù Ow" + + "ewe\x10Oshù Ɔ̀wàrà\x0cOshù Bélú\x0fOshù Ɔ̀pɛ̀\x0aÌsɛ́gun\x0aƆjɔ́rú\x0aƆj" + + "ɔ́bɔ\x05Ɛtì\x0cÀbámɛ́ta\x0fƆjɔ́ Àìkú\x0cƆjɔ́ Ajé\x12Ɔjɔ́ Ìsɛ́gun\x0dƆjɔ" + + "́ Ɛtì\x14Ɔjɔ́ Àbámɛ́ta\x10Kɔ́tà Kínní\x0eKɔ́tà Kejì\x0cKɔ́à Keta\x0fKɔ́" + + "tà Kɛrin\x09Àárɔ̀\x08Ɔ̀sán\x06Ɔdún\x07Ɔ̀sè\x07Ɔjɔ́\x07íjɛta\x06Ɔ̀la\x11Ɔ" + + "jɔ́ Ɔ̀sɛ̀\x12Àárɔ̀/ɔ̀sán\x0aÌsɛ́jú\x12Ìsɛ́jú Ààyá\x06佛曆\x11U (r) 年MMMdEE" + + "EE\x0dU (r) 年MMMd\x08r年MMMd\x05r/M/d\x05U/M/d\x13G y年M月d日 EEEE\x0eG y年M月" + + "d日\x07G y/M/d\x06{1}{0}\x06週日\x06週一\x06週二\x06週三\x06週四\x06週五\x06週六\x09星期日" + + "\x09星期一\x09星期二\x09星期三\x09星期四\x09星期五\x09星期六\x07第1季\x07第2季\x07第3季\x07第4季" + + "\x06午夜\x06上午\x06下午\x06清晨\x06朝早\x06中午\x06下晝\x06夜晚\x06凌晨\x09西元前\x09公元前\x06" + + "西元\x06公元\x11y年M月d日 EEEE\x0fah:mm:ss [zzzz]\x0cah:mm:ss [z]\x08ah:mm:ss" + + "\x05ah:mm\x0c提斯利月\x0c瑪西班月\x0c基斯流月\x09提別月\x0c細罷特月\x0b亞達月 I\x09亞達月\x0c亞達月 " + + "II\x09尼散月\x09以珥月\x09西彎月\x0c搭模斯月\x09埃波月\x09以祿月\x0c創世紀元\x0c制檀邏月\x0c吠舍佉月" + + "\x0c逝瑟吒月\x0c頞沙荼月\x0f室羅伐拏月\x0f婆羅鉢陀月\x12頞涇縛庚闍月\x0f迦剌底迦月\x0f末伽始羅月\x09報沙月" + + "\x09磨祛月\x0f頗勒窶拏月\x09印度曆\x0f穆哈蘭姆月\x0c色法爾月\x0b賴比月 I\x0c賴比月 II\x0e主馬達月 I" + + "\x0f主馬達月 II\x0c賴哲卜月\x0c舍爾邦月\x0c賴買丹月\x0c閃瓦魯月\x12都爾喀爾德月\x0f都爾黑哲月\x0c伊斯蘭曆" + + "\x09波斯曆\x09民國前\x06民國\x12Gy年M月d日 EEEE\x06年代\x06舊年\x06今年\x06下年\x03季\x09上一季" + + "\x06今季\x09下一季\x0a{0} 季後\x0a{0} 季前\x06上季\x06下季\x09上個月\x09今個月\x09下個月\x0d{0" + + "} 個月後\x0d{0} 個月前\x09上星期\x0c今個星期\x09下星期\x10{0} 個星期後\x10{0} 個星期前\x0c{0}嘅星期" + + "\x06前天\x06尋日\x06今日\x06聽日\x06後天\x06週天\x0c上星期日\x0f今個星期日\x0c下星期日\x13{0} 個星期" + + "日後\x13{0} 個星期日前\x0c上星期一\x0f今個星期一\x0c下星期一\x13{0} 個星期一後\x13{0} 個星期一前\x0c" + + "上星期二\x0f今個星期二\x0c下星期二\x13{0} 個星期二後\x13{0} 個星期二前\x0c上星期三\x0f今個星期三\x0c下星" + + "期三\x13{0} 個星期三後\x13{0} 個星期三前\x0c上星期四\x0f今個星期四\x0c下星期四\x13{0} 個星期四後\x13" + + "{0} 個星期四前\x0c上星期五\x0f今個星期五\x0c下星期五\x13{0} 個星期五後\x13{0} 個星期五前\x0c上星期六\x0f" + + "今個星期六\x0c下星期六\x13{0} 個星期六後\x13{0} 個星期六前\x0d上午/下午\x06小時\x0c呢個小時\x0d{0} " + + "小時後\x0d{0} 小時前\x06分鐘\x09呢分鐘\x0d{0} 分鐘後\x0d{0} 分鐘前\x06宜家\x06時區\x12英國夏令時" + + "間\x15愛爾蘭標準時間\x0c艾克時間\x12艾克標準時間\x12艾克夏令時間\x0f阿富汗時間\x0c中非時間\x0c東非時間\x12南" + + "非標準時間\x0c西非時間\x12西非標準時間\x12西非夏令時間\x12阿拉斯加時間\x18阿拉斯加標準時間\x18阿拉斯加夏令時間" + + "\x12阿拉木圖時間\x18阿拉木圖標準時間\x18阿拉木圖夏令時間\x0f亞馬遜時間\x15亞馬遜標準時間\x15亞馬遜夏令時間\x0c中部時" + + "間\x12中部標準時間\x12中部夏令時間\x0c東部時間\x12東部標準時間\x12東部夏令時間\x0c山區時間\x12山區標準時間" + + "\x12山區夏令時間\x0f太平洋時間\x15太平洋標準時間\x15太平洋夏令時間\x12阿納德爾時間\x18阿那底河標準時間\x18阿那底河夏" + + "令時間\x0f阿皮亞時間\x15阿皮亞標準時間\x15阿皮亞夏令時間\x0f阿克陶時間\x15阿克陶標準時間\x15阿克陶夏令時間\x12阿" + + "克托比時間\x18阿克托比標準時間\x18阿克托比夏令時間\x0f阿拉伯時間\x15阿拉伯標準時間\x15阿拉伯夏令時間\x0f阿根廷時間" + + "\x15阿根廷標準時間\x15阿根廷夏令時間\x15阿根廷西部時間\x1b阿根廷西部標準時間\x1b阿根廷西部夏令時間\x12亞美尼亞時間" + + "\x18亞美尼亞標準時間\x18亞美尼亞夏令時間\x0f大西洋時間\x15大西洋標準時間\x15大西洋夏令時間\x12澳洲中部時間\x18澳洲中" + + "部標準時間\x18澳洲中部夏令時間\x15澳洲中西部時間\x1b澳洲中西部標準時間\x1b澳洲中西部夏令時間\x12澳洲東部時間\x18澳洲" + + "東部標準時間\x18澳洲東部夏令時間\x12澳洲西部時間\x18澳洲西部標準時間\x18澳洲西部夏令時間\x12亞塞拜然時間\x18亞塞拜然" + + "標準時間\x18亞塞拜然夏令時間\x15亞速爾群島時間\x1b亞速爾群島標準時間\x1b亞速爾群島夏令時間\x0f孟加拉時間\x15孟加拉標" + + "準時間\x15孟加拉夏令時間\x0c不丹時間\x12玻利維亞時間\x12巴西利亞時間\x18巴西利亞標準時間\x18巴西利亞夏令時間\x0c" + + "汶萊時間\x0f維德角時間\x15維德角標準時間\x15維德角夏令時間\x0f凱西站時間\x0f查莫洛時間\x12查坦群島時間\x18查坦群" + + "島標準時間\x18查坦群島夏令時間\x0c智利時間\x12智利標準時間\x12智利夏令時間\x0c中國時間\x12中國標準時間\x12中國夏" + + "令時間\x0f喬巴山時間\x15喬巴山標準時間\x15喬巴山夏令時間\x0f聖誕島時間\x15科科斯群島時間\x12哥倫比亞時間\x18哥倫" + + "比亞標準時間\x18哥倫比亞夏令時間\x12庫克群島時間\x18庫克群島標準時間\x1b庫克群島半夏令時間\x0c古巴時間\x12古巴標準時" + + "間\x12古巴夏令時間\x0f戴維斯時間\x15杜蒙杜比爾時間\x0f東帝汶時間\x12復活節島時間\x18復活節島標準時間\x18復活節島" + + "夏令時間\x0f厄瓜多時間\x0c中歐時間\x12中歐標準時間\x12中歐夏令時間\x0c東歐時間\x12東歐標準時間\x12東歐夏令時間" + + "\x12歐洲遠東時間\x0c西歐時間\x12西歐標準時間\x12西歐夏令時間\x15福克蘭群島時間\x1b福克蘭群島標準時間\x1b福克蘭群島夏" + + "令時間\x0c斐濟時間\x12斐濟標準時間\x12斐濟夏令時間\x15法屬圭亞那時間\x1b法國南方及南極時間\x18加拉巴哥群島時間" + + "\x15甘比爾群島時間\x0f喬治亞時間\x15喬治亞標準時間\x15喬治亞夏令時間\x18吉爾伯特群島時間\x18格林威治標準時間\x15格陵" + + "蘭東部時間\x1b格陵蘭東部標準時間\x1b格陵蘭東部夏令時間\x15格陵蘭西部時間\x1b格陵蘭西部標準時間\x1b格陵蘭西部夏令時間" + + "\x12關島標準時間\x1b波斯灣海域標準時間\x0f蓋亞那時間\x19夏威夷-阿留申時間\x1f夏威夷-阿留申標準時間\x1f夏威夷-阿留申夏" + + "令時間\x0c香港時間\x12香港標準時間\x12香港夏令時間\x0f科布多時間\x15科布多標準時間\x15科布多夏令時間\x12印度標準" + + "時間\x0f印度洋時間\x12印度支那時間\x12印尼中部時間\x12印尼東部時間\x12印尼西部時間\x0c伊朗時間\x12伊朗標準時間" + + "\x12伊朗夏令時間\x15伊爾庫次克時間\x1b伊爾庫次克標準時間\x1b伊爾庫次克夏令時間\x0f以色列時間\x15以色列標準時間\x15以" + + "色列夏令時間\x0c日本時間\x12日本標準時間\x12日本夏令時間!彼得羅巴甫洛夫斯克時間'彼得羅巴甫洛夫斯克標準時間-彼得羅巴甫洛夫斯克" + + "日光節約時間\x12東哈薩克時間\x12西哈薩克時間\x0c韓國時間\x12韓國標準時間\x12韓國夏令時間\x0f科斯瑞時間\x1e克拉斯" + + "諾亞爾斯克時間$克拉斯諾亞爾斯克標準時間$克拉斯諾亞爾斯克夏令時間\x12吉爾吉斯時間\x0c蘭卡時間\x12萊恩群島時間\x12豪勳爵島時" + + "間\x18豪勳爵島標準時間\x18豪勳爵島夏令時間\x0c澳門時間\x12澳門標準時間\x12澳門夏令時間\x0f麥覺理時間\x0f馬加丹時" + + "間\x15馬加丹標準時間\x15馬加丹夏令時間\x12馬來西亞時間\x12馬爾地夫時間\x12馬可薩斯時間\x15馬紹爾群島時間\x12模里" + + "西斯時間\x18模里西斯標準時間\x18模里西斯夏令時間\x0c莫森時間\x18墨西哥西北部時間\x1e墨西哥西北部標準時間\x1e墨西哥西" + + "北部夏令時間\x18墨西哥太平洋時間\x1e墨西哥太平洋標準時間\x1e墨西哥太平洋夏令時間\x12烏蘭巴托時間\x18烏蘭巴托標準時間" + + "\x18烏蘭巴托夏令時間\x0f莫斯科時間\x15莫斯科標準時間\x15莫斯科夏令時間\x0c緬甸時間\x0c諾魯時間\x0f尼泊爾時間\x18" + + "新喀里多尼亞時間\x1e新喀里多尼亞標準時間$新喀里多尼亞群島夏令時間\x0f紐西蘭時間\x15紐西蘭標準時間\x15紐西蘭夏令時間\x0f" + + "紐芬蘭時間\x15紐芬蘭標準時間\x15紐芬蘭夏令時間\x0f紐埃島時間\x12諾福克島時間$費爾南多 - 迪諾羅尼亞時間*費爾南多 - 迪" + + "諾羅尼亞標準時間*費爾南多 - 迪諾羅尼亞夏令時間\x1b北馬里亞納群島時間\x15新西伯利亞時間\x1b新西伯利亞標準時間\x1b新西伯利" + + "亞夏令時間\x12鄂木斯克時間\x18鄂木斯克標準時間\x18鄂木斯克夏令時間\x12巴基斯坦時間\x18巴基斯坦標準時間\x18巴基斯坦夏" + + "令時間\x0c帛琉時間\x1b巴布亞紐幾內亞時間\x0f巴拉圭時間\x15巴拉圭標準時間\x15巴拉圭夏令時間\x0c秘魯時間\x12秘魯標" + + "準時間\x12秘魯夏令時間\x0f菲律賓時間\x15菲律賓標準時間\x15菲律賓夏令時間\x12鳳凰群島時間$聖皮埃爾和密克隆群島時間*聖皮" + + "埃爾和密克隆群島標準時間*聖皮埃爾和密克隆群島夏令時間\x0f皮特肯時間\x0f波納佩時間\x18克孜勒奧爾達時間\x1e克孜勒奧爾達標準時" + + "間\x1e克孜勒奧爾達夏令時間\x0f留尼旺時間\x0f羅瑟拉時間\x0f庫頁島時間\x15庫頁島標準時間\x15庫頁島夏令時間\x0f薩馬" + + "拉時間\x15薩馬拉標準時間\x15薩馬拉夏令時間\x0f薩摩亞時間\x15薩摩亞標準時間\x15薩摩亞夏令時間\x0f塞席爾時間\x15新" + + "加坡標準時間\x15索羅門群島時間\x12南喬治亞時間\x0f蘇利南時間\x12昭和基地時間\x0f大溪地時間\x0c台北時間\x12台北標" + + "準時間\x12台北夏令時間\x0f塔吉克時間\x15托克勞群島時間\x0c東加時間\x12東加標準時間\x12東加夏令時間\x0f楚克島時間" + + "\x0f土庫曼時間\x15土庫曼標準時間\x15土庫曼夏令時間\x0f吐瓦魯時間\x0f烏拉圭時間\x15烏拉圭標準時間\x15烏拉圭夏令時間" + + "\x12烏茲別克時間\x18烏茲別克標準時間\x18烏茲別克夏令時間\x0f萬那杜時間\x15萬那杜標準時間\x15萬那杜夏令時間\x12委內瑞" + + "拉時間\x0f海參崴時間\x15海參崴標準時間\x15海參崴夏令時間\x15伏爾加格勒時間\x1b伏爾加格勒標準時間\x1b伏爾加格勒夏令時" + + "間\x12沃斯托克時間\x0f威克島時間!瓦利斯和富圖納群島時間\x12雅庫次克時間\x18雅庫次克標準時間\x18雅庫次克夏令時間\x15" + + "葉卡捷琳堡時間\x1b葉卡捷琳堡標準時間\x1b葉卡捷琳堡夏令時間\x06昨天\x06今天\x06明天\x06后天\x09這一季\x06本月" + + "\x0c平壤時間\x09本星期\x0c本星期日\x0c本星期一\x0c本星期二\x0c本星期三\x0c本星期四\x0c本星期五\x0c本星期六" + + "\x18北美東部夏令時間\x18北美山區夏令時間\x1b北美太平洋夏令時間\x18亞塞拜疆夏令時間\x15佛得角夏令時間\x18格魯吉亞夏令時間" + + "\x1b伊爾庫茨克夏令時間\x18毛里裘斯夏令時間\x1e新喀里多尼亞夏令時間'費爾南多迪諾羅尼亞夏令時間\x12湯加夏令時間\x18瓦努阿圖夏" + + "令時間\x18雅庫茨克夏令時間" + +var bucket110 string = "" + // Size: 8518 bytes + "\x06佛历\x06Gy-M-d\x06闰{0}\x0drU年MMMdEEEE\x09rU年MMMd\x06一月\x06二月\x06三月\x06" + + "四月\x06五月\x06六月\x06七月\x06八月\x06九月\x06十月\x09十一月\x09十二月\x09十三月\x0f科普特历前" + + "\x0c科普特历\x15埃塞俄比亚历前\x12埃塞俄比亚历$埃塞俄比亚阿米特阿莱姆历\x12Gy年MM月d日EEEE\x0eGy年MM月d日" + + "\x06周日\x06周一\x06周二\x06周三\x06周四\x06周五\x06周六\x071季度\x072季度\x073季度\x074季度" + + "\x0c第一季度\x0c第二季度\x0c第三季度\x0c第四季度\x06晚上\x06早上\x0dzzzz ah:mm:ss\x0az ah:mm" + + ":ss\x09闰七月\x0c希伯来历\x09印度历\x0c伊斯兰历\x12大化 (645–650)\x12白雉 (650–671)\x12白凤 " + + "(672–686)\x12朱鸟 (686–701)\x12大宝 (701–704)\x12庆云 (704–708)\x12和铜 (708–715" + + ")\x12灵龟 (715–717)\x12养老 (717–724)\x12神龟 (724–729)\x12天平 (729–749)\x18天平感" + + "宝 (749–749)\x18天平胜宝 (749–757)\x18天平宝字 (757–765)\x18天平神护 (765–767)\x18神" + + "护景云 (767–770)\x12宝龟 (770–780)\x12天应 (781–782)\x12延历 (782–806)\x12大同 (8" + + "06–810)\x12弘仁 (810–824)\x12天长 (824–834)\x12承和 (834–848)\x12嘉祥 (848–851)" + + "\x12仁寿 (851–854)\x12齐衡 (854–857)\x12天安 (857–859)\x12贞观 (859–877)\x12元庆 (" + + "877–885)\x12仁和 (885–889)\x12宽平 (889–898)\x12昌泰 (898–901)\x12延喜 (901–923)" + + "\x12延长 (923–931)\x12承平 (931–938)\x12天庆 (938–947)\x12天历 (947–957)\x12天德 (" + + "957–961)\x12应和 (961–964)\x12康保 (964–968)\x12安和 (968–970)\x12天禄 (970–973)" + + "\x12天延 (973–976)\x12贞元 (976–978)\x12天元 (978–983)\x12永观 (983–985)\x12宽和 (" + + "985–987)\x12永延 (987–989)\x12永祚 (989–990)\x12正历 (990–995)\x12长德 (995–999)" + + "\x13长保 (999–1004)\x14宽弘 (1004–1012)\x14长和 (1012–1017)\x14宽仁 (1017–1021)" + + "\x14治安 (1021–1024)\x14万寿 (1024–1028)\x14长元 (1028–1037)\x14长历 (1037–1040)" + + "\x14长久 (1040–1044)\x14宽德 (1044–1046)\x14永承 (1046–1053)\x14天喜 (1053–1058)" + + "\x14康平 (1058–1065)\x14治历 (1065–1069)\x14延久 (1069–1074)\x14承保 (1074–1077)" + + "\x14正历 (1077–1081)\x14永保 (1081–1084)\x14应德 (1084–1087)\x14宽治 (1087–1094)" + + "\x14嘉保 (1094–1096)\x14永长 (1096–1097)\x14承德 (1097–1099)\x14康和 (1099–1104)" + + "\x14长治 (1104–1106)\x14嘉承 (1106–1108)\x14天仁 (1108–1110)\x14天永 (1110–1113)" + + "\x14永久 (1113–1118)\x14元永 (1118–1120)\x14保安 (1120–1124)\x14天治 (1124–1126)" + + "\x14大治 (1126–1131)\x14天承 (1131–1132)\x14长承 (1132–1135)\x14保延 (1135–1141)" + + "\x14永治 (1141–1142)\x14康治 (1142–1144)\x14天养 (1144–1145)\x14久安 (1145–1151)" + + "\x14仁平 (1151–1154)\x14久寿 (1154–1156)\x14保元 (1156–1159)\x14平治 (1159–1160)" + + "\x14永历 (1160–1161)\x14应保 (1161–1163)\x14长宽 (1163–1165)\x14永万 (1165–1166)" + + "\x14仁安 (1166–1169)\x14嘉应 (1169–1171)\x14承安 (1171–1175)\x14安元 (1175–1177)" + + "\x14治承 (1177–1181)\x14养和 (1181–1182)\x14寿永 (1182–1184)\x14元历 (1184–1185)" + + "\x14文治 (1185–1190)\x14建久 (1190–1199)\x14正治 (1199–1201)\x14建仁 (1201–1204)" + + "\x14元久 (1204–1206)\x14建永 (1206–1207)\x14承元 (1207–1211)\x14建历 (1211–1213)" + + "\x14建保 (1213–1219)\x14承久 (1219–1222)\x14贞应 (1222–1224)\x14元仁 (1224–1225)" + + "\x14嘉禄 (1225–1227)\x14安贞 (1227–1229)\x14宽喜 (1229–1232)\x14贞永 (1232–1233)" + + "\x14天福 (1233–1234)\x14文历 (1234–1235)\x14嘉祯 (1235–1238)\x14历仁 (1238–1239)" + + "\x14延应 (1239–1240)\x14仁治 (1240–1243)\x14宽元 (1243–1247)\x14宝治 (1247–1249)" + + "\x14建长 (1249–1256)\x14康元 (1256–1257)\x14正嘉 (1257–1259)\x14正元 (1259–1260)" + + "\x14文应 (1260–1261)\x14弘长 (1261–1264)\x14文永 (1264–1275)\x14建治 (1275–1278)" + + "\x14弘安 (1278–1288)\x14正应 (1288–1293)\x14永仁 (1293–1299)\x14正安 (1299–1302)" + + "\x14干元 (1302–1303)\x14嘉元 (1303–1306)\x14德治 (1306–1308)\x14延庆 (1308–1311)" + + "\x14应长 (1311–1312)\x14正和 (1312–1317)\x14文保 (1317–1319)\x14元应 (1319–1321)" + + "\x14元亨 (1321–1324)\x14正中 (1324–1326)\x14嘉历 (1326–1329)\x14元德 (1329–1331)" + + "\x14元弘 (1331–1334)\x14建武 (1334–1336)\x14延元 (1336–1340)\x14兴国 (1340–1346)" + + "\x14正平 (1346–1370)\x14建德 (1370–1372)\x14文中 (1372–1375)\x14天授 (1375–1379)" + + "\x14康历 (1379–1381)\x14弘和 (1381–1384)\x14元中 (1384–1392)\x14至德 (1384–1387)" + + "\x14嘉庆 (1387–1389)\x14康应 (1389–1390)\x14明德 (1390–1394)\x14应永 (1394–1428)" + + "\x14正长 (1428–1429)\x14永享 (1429–1441)\x14嘉吉 (1441–1444)\x14文安 (1444–1449)" + + "\x14宝德 (1449–1452)\x14享德 (1452–1455)\x14康正 (1455–1457)\x14长禄 (1457–1460)" + + "\x14宽正 (1460–1466)\x14文正 (1466–1467)\x14应仁 (1467–1469)\x14文明 (1469–1487)" + + "\x14长享 (1487–1489)\x14延德 (1489–1492)\x14明应 (1492–1501)\x14文龟 (1501–1504)" + + "\x14永正 (1504–1521)\x14大永 (1521–1528)\x14享禄 (1528–1532)\x14天文 (1532–1555)" + + "\x14弘治 (1555–1558)\x14永禄 (1558–1570)\x14元龟 (1570–1573)\x14天正 (1573–1592)" + + "\x14文禄 (1592–1596)\x14庆长 (1596–1615)\x14元和 (1615–1624)\x14宽永 (1624–1644)" + + "\x14正保 (1644–1648)\x14庆安 (1648–1652)\x14承应 (1652–1655)\x14明历 (1655–1658)" + + "\x14万治 (1658–1661)\x14宽文 (1661–1673)\x14延宝 (1673–1681)\x14天和 (1681–1684)" + + "\x14贞享 (1684–1688)\x14元禄 (1688–1704)\x14宝永 (1704–1711)\x14正德 (1711–1716)" + + "\x14享保 (1716–1736)\x14元文 (1736–1741)\x14宽保 (1741–1744)\x14延享 (1744–1748)" + + "\x14宽延 (1748–1751)\x14宝历 (1751–1764)\x14明和 (1764–1772)\x14安永 (1772–1781)" + + "\x14天明 (1781–1789)\x14宽政 (1789–1801)\x14享和 (1801–1804)\x14文化 (1804–1818)" + + "\x14文政 (1818–1830)\x14天保 (1830–1844)\x14弘化 (1844–1848)\x14嘉永 (1848–1854)" + + "\x14安政 (1854–1860)\x14万延 (1860–1861)\x14文久 (1861–1864)\x14元治 (1864–1865)" + + "\x14庆应 (1865–1868)\x06明治\x06大正\x06昭和\x06平成\x11大化(645–650)\x11白雉(650–671)" + + "\x11白凤(672–686)\x11朱鸟(686–701)\x11大宝(701–704)\x11庆云(704–708)\x11和铜(708–7" + + "15)\x11灵龟(715–717)\x11养老(717–724)\x11神龟(724–729)\x11天平(729–749)\x17天平感宝(" + + "749–749)\x17天平胜宝(749–757)\x17天平宝字(757–765)\x17天平神护(765–767)\x17神护景云(767–" + + "770)\x11宝龟(770–780)\x11天应(781–782)\x11延历(782–806)\x11大同(806–810)\x11弘仁(8" + + "10–824)\x11天长(824–834)\x11承和(834–848)\x11嘉祥(848–851)\x11仁寿(851–854)\x11齐" + + "衡(854–857)\x11天安(857–859)\x11贞观(859–877)\x11元庆(877–885)\x11仁和(885–889)" + + "\x11宽平(889–898)\x11昌泰(898–901)\x11延喜(901–923)\x11延长(923–931)\x11承平(931–9" + + "38)\x11天庆(938–947)\x11天历(947–957)\x11天德(957–961)\x11应和(961–964)\x11康保(96" + + "4–968)\x11安和(968–970)\x11天禄(970–973)\x11天延(973–976)\x11贞元(976–978)\x11天元" + + "(978–983)\x11永观(983–985)\x11宽和(985–987)\x11永延(987–989)\x11永祚(989–990)" + + "\x11正历(990–995)\x11长德(995–999)\x12长保(999–1004)\x13宽弘(1004–1012)\x13长和(10" + + "12–1017)\x13宽仁(1017–1021)\x13治安(1021–1024)\x13万寿(1024–1028)\x13长元(1028–1" + + "037)\x13长历(1037–1040)\x13长久(1040–1044)\x13宽德(1044–1046)\x13永承(1046–1053)" + + "\x13天喜(1053–1058)\x13康平(1058–1065)\x13治历(1065–1069)\x13延久(1069–1074)\x13" + + "承保(1074–1077)\x13承历(1077–1081)\x13永保(1081–1084)\x13应德(1084–1087)\x13宽治" + + "(1087–1094)\x13嘉保(1094–1096)\x13永长(1096–1097)\x13承德(1097–1099)\x13康和(109" + + "9–1104)\x13长治(1104–1106)\x13嘉承(1106–1108)\x13天仁(1108–1110)\x13天永(1110–11" + + "13)\x13永久(1113–1118)\x13元永(1118–1120)\x13保安(1120–1124)\x13天治(1124–1126)" + + "\x13大治(1126–1131)\x13天承(1131–1132)\x13长承(1132–1135)\x13保延(1135–1141)\x13" + + "永治(1141–1142)\x13康治(1142–1144)\x13天养(1144–1145)\x13久安(1145–1151)\x13仁平" + + "(1151–1154)\x13久寿(1154–1156)\x13保元(1156–1159)\x13平治(1159–1160)\x13永历(116" + + "0–1161)\x13应保(1161–1163)\x13长宽(1163–1165)\x13永万(1165–1166)\x13仁安(1166–11" + + "69)\x13嘉应(1169–1171)\x13承安(1171–1175)\x13安元(1175–1177)\x13治承(1177–1181)" + + "\x13养和(1181–1182)\x13寿永(1182–1184)\x13元历(1184–1185)\x13文治(1185–1190)\x13" + + "建久(1190–1199)\x13正治(1199–1201)\x13建仁(1201–1204)\x13元久(1204–1206)\x13建永" + + "(1206–1207)\x13承元(1207–1211)\x13建历(1211–1213)\x13建保(1213–1219)\x13承久(121" + + "9–1222)\x13贞应(1222–1224)\x13元仁(1224–1225)\x13嘉禄(1225–1227)\x13安贞(1227–12" + + "29)\x13宽喜(1229–1232)\x13贞永(1232–1233)\x13天福(1233–1234)\x13文历(1234–1235)" + + "\x13嘉祯(1235–1238)\x13历仁(1238–1239)\x13延应(1239–1240)\x13仁治(1240–1243)\x13" + + "宽元(1243–1247)\x13宝治(1247–1249)\x13建长(1249–1256)\x13康元(1256–1257)\x13正嘉" + + "(1257–1259)\x13正元(1259–1260)\x13文应(1260–1261)\x13弘长(1261–1264)\x13文永(126" + + "4–1275)\x13建治(1275–1278)\x13弘安(1278–1288)\x13正应(1288–1293)\x13永仁(1293–12" + + "99)\x13正安(1299–1302)\x13乾元(1302–1303)\x13嘉元(1303–1306)\x13德治(1306–1308)" + + "\x13延庆(1308–1311)\x13应长(1311–1312)\x13正和(1312–1317)\x13文保(1317–1319)\x13" + + "元应(1319–1321)\x13元亨(1321–1324)\x13正中(1324–1326)\x13嘉历(1326–1329)\x13元德" + + "(1329–1331)\x13元弘(1331–1334)\x13建武(1334–1336)\x13延元(1336–1340)\x13兴国(134" + + "0–1346)\x13正平(1346–1370)\x13建德(1370–1372)\x13文中(1372–1375)\x13天授(1375–13" + + "79)" + +var bucket111 string = "" + // Size: 8319 bytes + "\x09Gyy-MM-dd\x09波斯历\x07Gyy/M/d\x06纪元\x06去年\x06今年\x06明年\x09{0}年后\x06季度" + + "\x09上季度\x09本季度\x09下季度\x0f{0}个季度后\x0f{0}个季度前\x09上个月\x06本月\x09下个月\x0c{0}个月" + + "后\x0c{0}个月前\x03周\x06上周\x06本周\x06下周\x09{0}周后\x09{0}周前\x09{0}这周\x09{0}天后" + + "\x09{0}天前\x09工作日\x09上周日\x09本周日\x09下周日\x0f{0}个周日后\x0f{0}个周日前\x09上周一\x09本周" + + "一\x09下周一\x0f{0}个周一后\x0f{0}个周一前\x09上周二\x09本周二\x09下周二\x0f{0}个周二后\x0f{0}个" + + "周二前\x09上周三\x09本周三\x09下周三\x0f{0}个周三后\x0f{0}个周三前\x09上周四\x09本周四\x09下周四" + + "\x0f{0}个周四后\x0f{0}个周四前\x09上周五\x09本周五\x09下周五\x0f{0}个周五后\x0f{0}个周五前\x09上周六" + + "\x09本周六\x09下周六\x0f{0}个周六后\x0f{0}个周六前\x06小时\x15这一时间 / 此时\x0c{0}小时后\x0c{0}" + + "小时前\x06分钟\x06此刻\x0c{0}分钟后\x0c{0}分钟前\x06现在\x0c{0}秒钟后\x0c{0}秒钟前\x09{0}秒后" + + "\x06时区\x09{0}时间\x0f{0}夏令时间\x0f{0}标准时间\x0f协调世界时\x12英国夏令时间\x15爱尔兰标准时间\x0f阿" + + "克里时间\x15阿克里标准时间\x15阿克里夏令时间\x0f阿富汗时间\x12中部非洲时间\x12东部非洲时间\x12南部非洲时间\x12西" + + "部非洲时间\x18西部非洲标准时间\x18西部非洲夏令时间\x12阿拉斯加时间\x18阿拉斯加标准时间\x18阿拉斯加夏令时间\x12阿拉木" + + "图时间\x18阿拉木图标准时间\x18阿拉木图夏令时间\x0f亚马逊时间\x15亚马逊标准时间\x15亚马逊夏令时间\x12北美中部时间" + + "\x18北美中部标准时间\x18北美中部夏令时间\x12北美东部时间\x18北美东部标准时间\x18北美东部夏令时间\x12北美山区时间\x18" + + "北美山区标准时间\x18北美山区夏令时间\x15北美太平洋时间\x1b北美太平洋标准时间\x1b北美太平洋夏令时间\x12阿纳德尔时间" + + "\x18阿纳德尔标准时间\x18阿纳德尔夏令时间\x0f阿皮亚时间\x15阿皮亚标准时间\x15阿皮亚夏令时间\x0f阿克套时间\x15阿克套标" + + "准时间\x15阿克套夏令时间\x12阿克托别时间\x18阿克托别标准时间\x18阿克托别夏令时间\x0f阿拉伯时间\x15阿拉伯标准时间" + + "\x15阿拉伯夏令时间\x0f阿根廷时间\x15阿根廷标准时间\x15阿根廷夏令时间\x15阿根廷西部时间\x1b阿根廷西部标准时间\x1b阿根" + + "廷西部夏令时间\x12亚美尼亚时间\x18亚美尼亚标准时间\x18亚美尼亚夏令时间\x0f大西洋时间\x15大西洋标准时间\x15大西洋夏令" + + "时间\x18澳大利亚中部时间\x1e澳大利亚中部标准时间\x1e澳大利亚中部夏令时间\x1b澳大利亚中西部时间!澳大利亚中西部标准时间!澳大" + + "利亚中西部夏令时间\x18澳大利亚东部时间\x1e澳大利亚东部标准时间\x1e澳大利亚东部夏令时间\x18澳大利亚西部时间\x1e澳大利亚西" + + "部标准时间\x1e澳大利亚西部夏令时间\x12阿塞拜疆时间\x18阿塞拜疆标准时间\x18阿塞拜疆夏令时间\x15亚速尔群岛时间\x1b亚速" + + "尔群岛标准时间\x1b亚速尔群岛夏令时间\x0f孟加拉时间\x15孟加拉标准时间\x15孟加拉夏令时间\x0c不丹时间\x18玻利维亚标准时" + + "间\x12巴西利亚时间\x18巴西利亚标准时间\x18巴西利亚夏令时间\x18文莱达鲁萨兰时间\x0f佛得角时间\x15佛得角标准时间" + + "\x15佛得角夏令时间\x0c凯西时间\x0f查莫罗时间\x0c查坦时间\x12查坦标准时间\x12查坦夏令时间\x0c智利时间\x12智利标准" + + "时间\x12智利夏令时间\x0c中国时间\x12中国标准时间\x12中国夏令时间\x0f乔巴山时间\x15乔巴山标准时间\x15乔巴山夏令时" + + "间\x0f圣诞岛时间\x15科科斯群岛时间\x12哥伦比亚时间\x18哥伦比亚标准时间\x18哥伦比亚夏令时间\x12库克群岛时间\x18库" + + "克群岛标准时间\x18库克群岛仲夏时间\x0c古巴时间\x12古巴标准时间\x12古巴夏令时间\x0f戴维斯时间\x18迪蒙迪尔维尔时间" + + "\x0f东帝汶时间\x12复活节岛时间\x18复活节岛标准时间\x18复活节岛夏令时间\x18厄瓜多尔标准时间\x0c中欧时间\x12中欧标准时" + + "间\x12中欧夏令时间\x0c东欧时间\x12东欧标准时间\x12东欧夏令时间\x12远东标准时间\x0c西欧时间\x12西欧标准时间" + + "\x12西欧夏令时间\x15福克兰群岛时间\x1b福克兰群岛标准时间\x1b福克兰群岛夏令时间\x0c斐济时间\x12斐济标准时间\x12斐济夏" + + "令时间\x1b法属圭亚那标准时间!法属南方和南极领地时间\x15加拉帕戈斯时间\x0f甘比尔时间\x12格鲁吉亚时间\x18格鲁吉亚标准时间" + + "\x18格鲁吉亚夏令时间\x18吉尔伯特群岛时间\x18格林尼治标准时间\x18格陵兰岛东部时间\x1e格陵兰岛东部标准时间\x1e格陵兰岛东部" + + "夏令时间\x18格陵兰岛西部时间\x1e格陵兰岛西部标准时间\x1e格陵兰岛西部夏令时间\x0c关岛时间\x12海湾标准时间\x0f圭亚那时" + + "间\x19夏威夷-阿留申时间\x1f夏威夷-阿留申标准时间\x1f夏威夷-阿留申夏令时间\x0c香港时间\x12香港标准时间\x12香港夏令" + + "时间\x0f科布多时间\x15科布多标准时间\x15科布多夏令时间\x0c印度时间\x0f印度洋时间\x12印度支那时间\x1b印度尼西亚中" + + "部时间\x1b印度尼西亚东部时间\x1b印度尼西亚西部时间\x0c伊朗时间\x12伊朗标准时间\x12伊朗夏令时间\x15伊尔库茨克时间" + + "\x1b伊尔库茨克标准时间\x1b伊尔库茨克夏令时间\x0f以色列时间\x15以色列标准时间\x15以色列夏令时间\x0c日本时间\x12日本标" + + "准时间\x12日本夏令时间+彼得罗巴甫洛夫斯克-堪察加时间1彼得罗巴甫洛夫斯克-堪察加标准时间1彼得罗巴甫洛夫斯克-堪察加夏令时间\x1b哈" + + "萨克斯坦东部时间\x1b哈萨克斯坦西部时间\x0c韩国时间\x12韩国标准时间\x12韩国夏令时间\x0f科斯雷时间\x1e克拉斯诺亚尔斯克" + + "时间$克拉斯诺亚尔斯克标准时间$克拉斯诺亚尔斯克夏令时间\x18吉尔吉斯斯坦时间\x0c兰卡时间\x12莱恩群岛时间\x12豪勋爵岛时间" + + "\x18豪勋爵岛标准时间\x18豪勋爵岛夏令时间\x0c澳门时间\x12澳门标准时间\x12澳门夏令时间\x12麦夸里岛时间\x0f马加丹时间" + + "\x15马加丹标准时间\x15马加丹夏令时间\x12马来西亚时间\x12马尔代夫时间\x18马克萨斯群岛时间\x15马绍尔群岛时间\x12毛里求" + + "斯时间\x18毛里求斯标准时间\x18毛里求斯夏令时间\x0c莫森时间\x18墨西哥西北部时间\x1e墨西哥西北部标准时间\x1e墨西哥西北" + + "部夏令时间\x18墨西哥太平洋时间\x1e墨西哥太平洋标准时间\x1e墨西哥太平洋夏令时间\x12乌兰巴托时间\x18乌兰巴托标准时间" + + "\x18乌兰巴托夏令时间\x0f莫斯科时间\x15莫斯科标准时间\x15莫斯科夏令时间\x0c缅甸时间\x0c瑙鲁时间\x0f尼泊尔时间\x18" + + "新喀里多尼亚时间\x1e新喀里多尼亚标准时间\x1e新喀里多尼亚夏令时间\x0f新西兰时间\x15新西兰标准时间\x15新西兰夏令时间" + + "\x0f纽芬兰时间\x15纽芬兰标准时间\x15纽芬兰夏令时间\x0c纽埃时间\x12诺福克岛时间%费尔南多-迪诺罗尼亚岛时间+费尔南多-迪诺罗" + + "尼亚岛标准时间+费尔南多-迪诺罗尼亚岛夏令时间\x1b北马里亚纳群岛时间\x15新西伯利亚时间\x1b新西伯利亚标准时间\x1b新西伯利亚夏" + + "令时间\x12鄂木斯克时间\x18鄂木斯克标准时间\x18鄂木斯克夏令时间\x12巴基斯坦时间\x18巴基斯坦标准时间\x18巴基斯坦夏令时" + + "间\x0c帕劳时间\x1b巴布亚新几内亚时间\x0f巴拉圭时间\x15巴拉圭标准时间\x15巴拉圭夏令时间\x0c秘鲁时间\x12秘鲁标准时" + + "间\x12秘鲁夏令时间\x0f菲律宾时间\x15菲律宾标准时间\x15菲律宾夏令时间\x18菲尼克斯群岛时间$圣皮埃尔和密克隆群岛时间*圣皮" + + "埃尔和密克隆群岛标准时间*圣皮埃尔和密克隆群岛夏令时间\x12皮特凯恩时间\x0f波纳佩时间\x0c平壤时间\x15克孜洛尔达时间\x1b克" + + "孜洛尔达标准时间\x1b克孜洛尔达夏令时间\x0f留尼汪时间\x0f罗瑟拉时间\x0f库页岛时间\x15库页岛标准时间\x15库页岛夏令时间" + + "\x0f萨马拉时间\x15萨马拉标准时间\x15萨马拉夏令时间\x0f萨摩亚时间\x15萨摩亚标准时间\x15萨摩亚夏令时间\x0f塞舌尔时间" + + "\x15新加坡标准时间\x15所罗门群岛时间\x15南乔治亚岛时间\x0f苏里南时间\x0c昭和时间\x12塔希提岛时间\x0c台北时间\x12" + + "台北标准时间\x12台北夏令时间\x15塔吉克斯坦时间\x0f托克劳时间\x0c汤加时间\x12汤加标准时间\x12汤加夏令时间\x0c楚克" + + "时间\x15土库曼斯坦时间\x1b土库曼斯坦标准时间\x1b土库曼斯坦夏令时间\x0f图瓦卢时间\x0f乌拉圭时间\x15乌拉圭标准时间" + + "\x15乌拉圭夏令时间\x18乌兹别克斯坦时间\x1e乌兹别克斯坦标准时间\x1e乌兹别克斯坦夏令时间\x12瓦努阿图时间\x18瓦努阿图标准时" + + "间\x18瓦努阿图夏令时间\x12委内瑞拉时间\x0f海参崴时间\x15海参崴标准时间\x15海参崴夏令时间\x15伏尔加格勒时间\x1b伏" + + "尔加格勒标准时间\x1b伏尔加格勒夏令时间\x12沃斯托克时间\x0f威克岛时间\x1b瓦利斯和富图纳时间\x12雅库茨克时间\x18雅库茨" + + "克标准时间\x18雅库茨克夏令时间\x15叶卡捷琳堡时间\x1b叶卡捷琳堡标准时间\x1b叶卡捷琳堡夏令时间" + +var bucket112 string = "" + // Size: 14786 bytes + "\x07Gd/M/yy\x0bd/M/yyGGGGG\x0ddd/MM/yyGGGGG\x0erU年MMMd EEEE\x041季\x042季" + + "\x043季\x044季\x06上週\x06本週\x06下週\x0a{0} 週後\x0a{0} 週前\x0a{0} 當週\x0a{0} 天後" + + "\x0a{0} 天前\x09上週日\x09本週日\x09下週日\x10{0} 個週日後\x10{0} 個週日前\x09上週一\x09本週一" + + "\x09下週一\x10{0} 個週一後\x10{0} 個週一前\x09上週二\x09本週二\x09下週二\x10{0} 個週二後\x10{0} " + + "個週二前\x09上週三\x09本週三\x09下週三\x10{0} 個週三後\x10{0} 個週三前\x09上週四\x09本週四\x09下週四" + + "\x10{0} 個週四後\x10{0} 個週四前\x09上週五\x09本週五\x09下週五\x10{0} 個週五後\x10{0} 個週五前" + + "\x09上週六\x09本週六\x09下週六\x10{0} 個週六後\x10{0} 個週六前\x0c這一小時\x0c這一分鐘\x06現在\x12世" + + "界標準時間\x13U(r)年MMMdEEEE\x0fU(r)年MMMd\x08U年MMMd\x0a第1季度\x0a第2季度\x0a第3季度" + + "\x0a第4季度\x06上年\x06今年\x06下年\x05+{0}Q\x05-{0}Q\x06上月\x06本月\x06下月\x0c{0}個月後" + + "\x0c{0}個月前\x06星期\x0d{0} 星期後\x0d{0} 星期前\x09{0}週後\x09{0}週前\x06前日\x06昨日\x06" + + "今日\x06明日\x06後日\x09星期幾\x0c這個小時\x0c{0}小時後\x0c{0}小時前\x09這分鐘\x0f{0}夏令時間" + + "\x0f{0}標準時間\x0c南非時間\x12北美中部時間\x18北美中部標準時間\x12北美東部時間\x18北美東部標準時間\x12北美山區時" + + "間\x18北美山區標準時間\x15北美太平洋時間\x1b北美太平洋標準時間\x12亞塞拜疆時間\x18亞塞拜疆標準時間\x0f佛得角時間" + + "\x15佛得角標準時間\x15可可斯群島時間\x15迪蒙迪維爾時間\x12厄瓜多爾時間\x18加拉帕戈群島時間\x12格魯吉亞時間\x18格魯吉" + + "亞標準時間\x15波斯灣海域時間\x0f圭亞那時間\x0c印度時間\x12中南半島時間\x15伊爾庫茨克時間\x1b伊爾庫茨克標準時間" + + "\x0f科斯雷時間\x15麥夸里群島時間\x12馬爾代夫時間\x12馬克薩斯時間\x12毛里裘斯時間\x18毛里裘斯標準時間\x0c瑙魯時間" + + "\x18新喀里多尼亞時間\x1e新喀里多尼亞標準時間!費爾南多迪諾羅尼亞時間'費爾南多迪諾羅尼亞標準時間\x1b巴布亞新畿內亞時間\x0f皮特康" + + "時間\x0f塞舌爾時間\x0f新加坡時間\x15所羅門群島時間\x0f蘇里南時間\x0c湯加時間\x12湯加標準時間\x0f圖瓦盧時間" + + "\x12瓦努阿圖時間\x18瓦努阿圖標準時間\x12雅庫茨克時間\x18雅庫茨克標準時間\x0aUMasingana\x09Februwari" + + "\x05Mashi\x07Ephreli\x04Meyi\x04Juni\x06Julayi\x06Agasti\x09Septhemba" + + "\x07Okthoba\x07Novemba\x07Disemba\x08Januwari\x06ISonto\x0bUMsombuluko" + + "\x0aULwesibili\x0cULwesithathu\x08ULwesine\x0bULwesihlanu\x09UMgqibelo" + + "\x0cikota yesi-1\x0cikota yesi-2\x0cikota yesi-3\x0cikota yesi-4\x0benta" + + "thakusa\x07ekuseni\x05emini\x08ntambama\x07ebusuku\x06Unyaka\x0fonyakeni" + + " odlule\x0akulo nyaka\x0cunyaka ozayo\x17onyakeni ongu-{0} ozayo\x19emin" + + "yakeni engu-{0} ezayo\x11{0} unyaka odlule\x13{0} iminyaka edlule\x05Iko" + + "ta\x0cikota edlule\x07le kota\x0bikota ezayo\x16kwikota engu-{0} ezayo" + + "\x17kumakota angu-{0} ezayo\x10{0} ikota edlule\x12{0} amakota adlule" + + "\x12{0} amakota edlule\x11kumakota angu-{0}\x07Inyanga\x0einyanga edlule" + + "\x09le nyanga\x0dinyanga ezayo\x12enyangeni engu-{0}\x1eezinyangeni ezin" + + "gu-{0} ezizayo\x12{0} inyanga edlule\x16{0} izinyanga ezedlule\x18enyang" + + "eni engu-{0} ezayo\x0eiviki eledlule\x09leli viki\x0diviki elizayo\x12ev" + + "ikini elingu-{0}\x12emavikini angu-{0}\x1bevikini elingu-{0} eledlule" + + "\x17amaviki angu-{0} edlule\x0eevikini le-{0}\x1aevikini elingu-{0} eliz" + + "ayo\x18emavikini angu-{0} ezayo\x05Usuku\x1cusuku olwandulela olwayizolo" + + "\x05izolo\x09namhlanje\x06kusasa\x1busuku olulandela olwakusasa\x1bosukw" + + "ini olungu-{0} oluzayo\x1eezinsukwini ezingu-{0} ezizayo\x1dosukwini olu" + + "ngu-{0} olwedlule ezinsukwini ezingu-{0} ezedlule.\x13{0} usuku olwedlul" + + "e\x15{0} izinsuku ezedlule\x0dUsuku evikini\x0fiSonto eledlule\x0ckuleli" + + " Sonto\x0eiSonto elizayo\x13kwiSonto elingu-{0}\x12kumaSonto angu-{0}" + + "\x13{0} iSonto eledlule\x13{0} amaSonto edlule\x12uMsombuluko odlule\x0f" + + "kulo Msombuluko\x11uMsombuluko ozayo\x13ngoMsombuluko o-{0}\x14ngeMisomb" + + "uluko e-{0}\x1angoMsombuluko o-{0} odlule\x1angeMsombuluko e-{0} edlule" + + "\x13uLwesibili oludlule\x0ekulo Lwesibili\x12uLwesibili oluzayo\x14ngoLw" + + "esibili olu-{0}\x17ngoLwezibili abangu-{0}\x1engoLwesibili ongu-{0} owed" + + "lule ngoLwezibili abangu-{0} abedlule\x10{0} ngoLwezibili\x1a{0} ngoLwez" + + "ibili olwedlule\x15uLwesithathu oludlule\x10kulo Lwesithathu\x14uLwesith" + + "athu oluzayo\x14ngoLwesithathu o-{0}\x19ngoLwezithathu abangu-{0}#ngoLwe" + + "sithathu olungu-{0} olwedlule\x22ngoLwezithathu abangu-{0} abedlule\x11u" + + "Lwesine oludlule\x0ckulo Lwesine\x10uLwesine oluzayo\x12ngoLwesine olu-{" + + "0}\x15ngoLwezine abangu-{0}\x1cngoLwesine olu-{0} olwedlule\x1engoLwezin" + + "e abangu-{0} abedlule\x12uLwesine olwedlule\x14uLwesihlanu oludlule\x0fk" + + "ulo Lwesihlanu\x13uLwesihlanu oluzayo\x12ngo {0} Lwesihlanu\x12ngo {0} L" + + "wezihlanu\x17{0} Lwesihlanu oludlule\x17{0} Lwezihlanu oludlule\x10uMgqi" + + "belo odlule\x0dkulo Mgqibelo\x0fuMgqibelo ozayo\x11ngoMgqibelo o-{0}\x14" + + "ngeMgqibelo engu-{0}\x18ngoMgqibelo o-{0} odlule\x1bngeMgqibelo engu-{0}" + + " edlule\x05Ihora\x09leli hora\x1aehoreni elingu-{0} elizayo\x18emahoreni" + + " angu-{0} ezayo\x12{0} ihora eledlule\x19emahoreni angu-{0} edlule\x12{0" + + "} amahora edlule\x08Iminithi\x0cleli minithi\x1ckuminithi elingu-{0} eli" + + "zayo\x1akumaminithi angu-{0} ezayo\x15{0} iminithi eledlule\x15{0} amami" + + "nithi edlule\x09Isekhondi\x05manje\x1dkusekhondi elingu-{0} elizayo\x1bk" + + "umasekhondi angu-{0} ezayo\x16{0} isekhondi eledlule\x16{0} amasekhondi " + + "edlule\x11Isikhathi sendawo\x12Isikhathi sase-{0}\x16{0} Isikhathi sasem" + + "ini\x17{0} isikhathi esivamile isikhathi sase-British sasehlobo\x1eisikh" + + "athi sase-Irish esivamile\x1aIsikhathi sase-Afghanistan\x1dIsikhathi sas" + + "e-Central Africa\x1fIsikhathi saseMpumalanga Afrika-Isikhathi esijwayele" + + "kile saseNingizimu Afrika!Isikhathi saseNtshonalanga Afrika0Isikhathi es" + + "ijwayelekile saseNtshonalanga Afrika+Isikhathi sasehlobo saseNtshonalang" + + "a Afrika\x15Isikhathi sase-Alaska$Isikhathi sase-Alaska esijwayelekile" + + "\x1eIsikhathi sase-Alaska sasemini\x15Isikhathi sase-Amazon$Isikhathi sa" + + "se-Amazon esijwayelekile\x1fIsikhathi sase-Amazon sasehlobo%Isikhathi sa" + + "se-North American Central4Isikhathi sase-North American Central esijwaye" + + "lekile.Isikhathi sase-North American Central sasemini\x22Isikhathi sase-" + + "North American East1Isikhathi sase-North American East esijwayelekile+Is" + + "ikhathi sase-North American East sasemini&Isikhathi sase-North American " + + "Mountain5Isikhathi sase-North American Mountain esijwayelekile/Isikhathi" + + " sase-North American Mountain sasemini%Isikhathi sase-North American Pac" + + "ific4Isikhathi sase-North American Pacific esijwayelekile.Isikhathi sase" + + "-North American Pacific sasemini\x11esase-Anadyr Time\x1aesase-Anadyr St" + + "andard Time\x18esase-Anadyr Summer Time\x13Isikhathi sase-Apia\x1dIsikha" + + "thi sase-Apia esivamile\x1cIsikhathi sase-Apia sasemini\x16Isikhathi sas" + + "e-Arabian Isikhathi esivamile sase-Arabian\x1dIsikhathi semini sase-Arab" + + "ian\x18Isikhathi sase-Argentina'Isikhathi sase-Argentina esijwayelekile" + + "\x22Isikhathi sase-Argentina sasehlobo#Isikhathi saseNyakatho ne-Argenti" + + "na2Isikhathi saseNyakatho ne-Argentina esijwayelekile-Isikhathi saseNyak" + + "atho ne-Argentina sasehlobo\x15Isikhathi saseArmenia!Isikhathi esezingen" + + "i sase-Armenia\x1eIsikhathi sehlobo sase-Armenia\x17Isikhathi sase-Atlan" + + "tic&Isikhathi sase-Atlantic esijwayelekile Isikhathi sase-Atlantic sasem" + + "ini Isikhathi sase-Central Australia+Isikhathi sase-Australian Central e" + + "sivamile*Isikhathi sase-Australian Central sasemini&Isikhathi sase-Austr" + + "alian Central West0Isikhathi sase-Australian Central West esivamile/Isik" + + "hathi sasemini sase-Australian Central West Isikhathi sase-Eastern Austr" + + "alia(Isikhathi esivamile sase-Australian East'Isikhathi sasemini sase-Au" + + "stralian East Isikhathi sase-Western Australia+Isikhathi sase-Australian" + + " Western esivamile*Isikhathi sase-Australian Western sasemini\x19Isikhat" + + "hi sase-Azerbaijan#Isikhathi esivamile sase-Azerbaijan!Isikhathi sehlobo" + + " sase-Azerbaijan\x15Isikhathi sase-Azores$Isikhathi esijwayelekile sase-" + + "Azores\x1fIsikhathi sasehlobo sase-Azores\x19Isikhathi sase-Bangladesh#I" + + "sikhathi sase-Bangladesh esivamile#Isikhathi sase-Bangladesh sasehlobo" + + "\x15Isikhathi sase-Bhutan\x16Isikhathi sase-Bolivia\x17Isikhathi sase-Br" + + "asilia&Isikhathi sase-Brasilia esijwayelekile!Isikhathi sase-Brasilia sa" + + "sehlobo Isikhathi sase-Brunei Darussalam\x19Isikhathi sase-Cape Verde$Is" + + "ikhathi esezingeni sase-Cape Verde!Isikhathi sehlobo sase-Cape Verde&Isi" + + "khathi esijwayelekile sase-Chamorro\x16Isikhathi sase-Chatham Isikhathi " + + "esivamile sase-Chatham\x1fIsikhathi sasemini sase-Chatham\x14Isikhathi s" + + "ase-Chile#Isikhathi sase-Chile esijwayelekile\x1eIsikhathi sase-Chile sa" + + "sehlobo\x14Isikhathi sase-China\x1eIsikhathi esivamile sase-China\x1bIsi" + + "khathi semini sase-China\x19Isikhathi sase-Choibalsan#Isikhathi Esimisiw" + + "e sase-Choibalsan\x1eIsikhathi sehlobo e-Choibalsan\x1fIsikhathi sase-Ch" + + "ristmas Island\x1cIsikhathi sase-Cocos Islands\x17Isikhathi sase-Colombi" + + "a&Isikhathi sase-Colombia esijwayelekile!Isikhathi sase-Colombia sasehlo" + + "bo\x1bIsikhathi sase-Cook Islands%Isikhathi esivamile sase-Cook Islands2" + + "Isikhathi esiyingxenye yasehlobo sase-Cook Islands\x13Isikhathi sase-Cub" + + "a\x22Isikhathi sase-Cuba esijwayelekile\x1cIsikhathi sase-Cuba sasemini" + + "\x14Isikhathi sase-Davis!Isikhathi sase-Dumont-d’Urville\x19Isikhathi sa" + + "se-East Timor\x1cIsikhathi sase-Easter Island+Isikhathi sase-Easter Isla" + + "nd esijwayelekile&Isikhathi sase-Easter Island sasehlobo\x16Isikhathi sa" + + "se-Ecuador\x1dIsikhathi sase-Central Europe,Isikhathi esijwayelekile sas" + + "e-Central Europe'Isikhathi sasehlobo sase-Central Europe\x1dIsikhathi sa" + + "se-Eastern Europe,Isikhathi esijwayelekile sase-Eastern Europe'Isikhathi" + + " sasehlobo sase-Eastern Europe%Isikhathi sase-Further-eastern Europe\x1d" + + "Isikhathi sase-Western Europe,Isikhathi esijwayelekile sase-Western Euro" + + "pe'Isikhathi sasehlobo sase-Western Europe\x1fIsikhathi sase-Falkland Is" + + "lands.Isikhathi sase-Falkland Islands esijwayelekile)Isikhathi sase-Falk" + + "land Islands sasehlobo\x13Isikhathi sase-Fiji\x1dIsikhathi esivamile sas" + + "e-Fiji\x1bIsikhathi sehlobo sase-Fiji\x1cIsikhathi sase-French Guiana-Is" + + "ikhathi sase-French Southern nase-Antarctic\x18Isikhathi sase-Galapagos" + + "\x16Isikhathi sase-Gambier\x16Isikhathi sase-Georgia Isikhathi esivamile" + + " sase-Georgia\x1eIsikhathi sehlobo sase-Georgia\x1eIsikhathi sase-Gilber" + + "t Islands\x1dIsikhathi sase-Greenwich Mean\x1dIsikhathi sase-East Greenl" + + "and,Isikhathi sase-East Greenland esijwayelekile&Isikhathi sase-East Gre" + + "enland sasemini\x1dIsikhathi sase-West Greenland,Isikhathi sase-West Gre" + + "enland esijwayelekile'Isikhathi sase-West Greenland sasehlobo\x1dIsikhat" + + "hi esivamile sase-Gulf\x15Isikhathi sase-Guyana\x1dIsikhathi sase-Hawaii" + + "-Aleutia,Isikhathi sase-Hawaii-Aleutia esijwayelekile&Isikhathi sase-Haw" + + "aii-Aleutia sasemini\x18Isikhathi sase-Hong Kong\x22Isikhathi esivamile " + + "sase-Hong Kong Isikhathi sehlobo sase-Hong Kong\x13Isikhathi sase-Hovd" + + "\x1dIsikhathi Esimisiwe sase-Hovd\x18Isikhathi sehlobo e-Hovd\x1eIsikhat" + + "hi sase-India esivamile\x1bIsikhathi sase-Indian Ocean\x18Isikhathi sase" + + "-Indochina Isikhathi sase-Central Indonesia Isikhathi sase-Eastern Indon" + + "esia Isikhathi sase-Western Indonesia\x13Isikhathi sase-Iran\x1dIsikhath" + + "i sase-Iran esivamile\x1cIsikhathi sase-Iran sasemini\x16Isikhathi sase-" + + "Irkutsk Isikhathi Esimisiwe sase-Irkutsk\x1dIsikhathi sasehlobo e-Irkuts" + + "k\x15Isikhathi sase-Israel\x1fIsikhathi esivamile sase-Israel\x1fIsikhat" + + "hi sasemini sakwa-Israel\x14Isikhathi sase-Japan\x1eIsikhathi esivamile " + + "sase-Japan\x1bIsikhathi semini sase-Japan#esase-Petropavlovsk-Kamchatski" + + " Time,esase-Petropavlovsk-Kamchatski Standard Time*esase-Petropavlovsk-K" + + "amchatski Summer Time'Isikhathi sase-Mpumalanga ne-Kazakhstan(Isikhathi " + + "saseNtshonalanga ne-Kazakhstan\x14Isikhathi sase-Korea!Isikhathi esiseze" + + "ngeni sase-Korea\x1bIsikhathi semini sase-Korea\x15Isikhathi sase-Kosrae" + + "\x1aIsikhathi sase-Krasnoyarsk$Isikhathi Esimisiwe sase-Krasnoyarsk!Isik" + + "hathi sasehlobo e-Krasnoyarsk\x18Isikhathi sase-Kyrgystan\x1bIsikhathi s" + + "ase-Line Islands\x18Isikhathi sase-Lord Howe\x22Isikhathi sase-Lord Howe" + + " esivamile!Isikhathi sase-Lord Howe sasemini\x1fIsikhathi sase-Macquarie" + + " Island\x16Isikhathi sase-Magadan Isikhathi Esimisiwe sase-Magadan\x1dIs" + + "ikhathi sasehlobo e-Magadan\x17Isikhathi sase-Malaysia\x17Isikhathi sase" + + "-Maldives\x18Isikhathi sase-Marquesas\x1fIsikhathi sase-Marshall Islands" + + "\x18Isikhathi sase-Mauritius\x22Isikhathi esivamile sase-Mauritius Isikh" + + "athi sehlobo sase-Mauritius\x15Isikhathi sase-Mawson\x1fIsikhathi sase-N" + + "orthwest Mexico.Isikhathi sase-Northwest Mexico esijwayelekile(Isikhathi" + + " sase-Northwest Mexico sasemini\x1eIsikhathi sase-Mexican Pacific-Isikha" + + "thi sase-Mexican Pacific esijwayelekile'Isikhathi sase-Mexican Pacific s" + + "asemini\x19Isikhathi sase-Ulan Bator#Isikhathi Esimisiwe sase-Ulan Bator" + + "\x1eIsikhathi sehlobo e-Ulan Bator\x15Isikhathi sase-Moscow$Isikhathi sa" + + "se-Moscow esijwayelekile\x1cIsikhathi sasehlobo e-Moscow\x16Isikhathi sa" + + "se-Myanmar\x14Isikhathi sase-Nauru\x14Isikhathi sase-Nepal\x1cIsikhathi " + + "sase-New Caledonia+Isikhathi sase-New Caledonia esijwayelekile&Isikhathi" + + " sase-New Caledonia sasehlobo\x1aIsikhathi sase-New Zealand$Isikhathi es" + + "ivamile sase-New Zealand#Isikhathi sasemini sase-New Zealand\x1bIsikhath" + + "i sase-Newfoundland*Isikhathi sase-Newfoundland esijwayelekile$Isikhathi" + + " sase-Newfoundland sasemini\x13Isikhathi sase-Niue\x1eIsikhathi sase-Nor" + + "folk Islands\x22Isikhathi sase-Fernando de Noronha1Isikhathi sase-Fernan" + + "do de Noronha esijwayelekile,Isikhathi sase-Fernando de Noronha sasehlob" + + "o\x1aIsikhathi sase-Novosibirsk$Isikhathi Esimisiwe sase-Novosibirsk$Isi" + + "khathi sasehlobo sase-Novosibirsk\x13Isikhathi sase-Omsk\x1dIsikhathi Es" + + "imisiwe sase-Omsk\x1dIsikhathi sasehlobo sase-Omsk\x17Isikhathi sase-Pak" + + "istan!Isikhathi sase-Pakistan esivamile!Isikhathi sase-Pakistan sasehlob" + + "o\x14Isikhathi sase-Palau\x1fIsikhathi sase-Papua New Guinea\x17Isikhath" + + "i sase-Paraguay&Isikhathi sase-Paraguay esijwayelekile!Isikhathi sase-Pa" + + "raguay sasehlobo\x13Isikhathi sase-Peru\x22Isikhathi sase-Peru esijwayel" + + "ekile\x1dIsikhathi sase-Peru sasehlobo\x19Isikhathi sase-Philippine#Isik" + + "hathi esivamile sase-Philippine!Isikhathi sehlobo sase-Philippine\x1eIsi" + + "khathi sase-Phoenix Islands)Isikhathi sase-Saint Pierre nase-Miquelon7Ii" + + "khathi sase-Saint Pierre nase-Miquelon esijwayelekile2Isikhathi sase-Sai" + + "nt Pierre nase-Miquelon sasemini\x17Isikhathi sase-Pitcairn\x15Isikhathi" + + " sase-Ponape\x18Isikhathi sase-Pyongyang\x16Isikhathi sase-Reunion\x16Is" + + "ikhathi sase-Rothera\x17Isikhathi sase-Sakhalin!Isikhathi Esimisiwe sase" + + "-Sakhalin\x1eIsikhathi sasehlobo e-Sakhalin\x11esase-Samara Time\x1aesas" + + "e-Samara Standard Time\x18esase-Samara Summer Time\x14Isikhathi sase-Sam" + + "oa#Isikhathi sase-Samoa esijwayelekile\x1dIsikhathi sase-Samoa sasemini" + + "\x19Isikhathi sase-Seychelles\x22Isikhathi esivamile sase-Singapore\x1eI" + + "sikhathi sase-Solomon Islands\x1cIsikhathi sase-South Georgia\x17Isikhat" + + "hi sase-Suriname\x14Isikhathi sase-Syowa\x15Isikhathi sase-Tahiti\x15Isi" + + "khathi sase-Taipei\x1fIsikhathi esivamile sase-Taipei\x1cIsikhathi semin" + + "i sase-Taipei\x19Isikhathi sase-Tajikistan\x16Isikhathi sase-Tokelau\x14" + + "Isikhathi sase-Tonga#Isikhathi sase-Tonga esijwayelekile\x1eIsikhathi sa" + + "se-Tonga sasehlobo\x14Isikhathi sase-Chuuk\x1bIsikhathi sase-Turkmenista" + + "n%Isikhathi esivamile sase-Turkmenistan#Isikhathi sehlobo sase-Turkmenis" + + "tan\x15Isikhathi sase-Tuvalu\x16Isikhathi sase-Uruguay%Isikhathi sase-Ur" + + "uguay esijwayelekile Isikhathi sase-Uruguay sasehlobo\x19Isikhathi sase-" + + "Uzbekistan#Isikhathi esivamile sase-Uzbekistan!Isikhathi sehlobo sase-Uz" + + "bekistan\x16Isikhathi sase-Vanuatu%Isikhathi sase-Vanuatu esijwayelekile" + + " Isikhathi sase-Vanuatu sasehlobo\x18Isikhathi sase-Venezuela\x1aIsikhat" + + "hi sase-Vladivostok$Isikhathi Esimisiwe sase-Vladivostok!Isikhathi saseh" + + "lobo e-Vladivostok\x18Isikhathi sase-Volgograd\x22Isikhathi Esimisiwe sa" + + "se-Volgograd\x22Isikhathi sase-Volgograd sasehlobo\x15Isikhathi sase-Vos" + + "tok\x1aIsikhathi sase-Wake Island!Isikhathi sase-Wallis nase-Futuna\x16I" + + "sikhathi sase-Yakutsk Isikhathi Esimisiwe sase-Yakutsk\x1dIsikhathi sase" + + "hlobo e-Yakutsk\x1cIsikhathi sase-Yekaterinburg&Isikhathi Esimisiwe sase" + + "-Yekaterinburg#Isikhathi sasehlobo e-Yekaterinburg" + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "31" + +// Total table size 2247870 bytes (2195KiB); checksum: 9BEC8C56 diff --git a/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go b/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go index 70f2ac4bc..bdc7d15dd 100644 --- a/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go +++ b/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go @@ -50,7 +50,7 @@ func LanguageDefault(tag language.Tag) string { for _, t := range strings.Split(locales, " ") { tags = append(tags, language.MustParse(t)) } - matcher = language.NewMatcher(tags) + matcher = language.NewMatcher(tags, language.PreferSameScript(true)) }) _, i, _ := matcher.Match(tag) return canonical[localeMap[i]] // Default is Windows-1252. diff --git a/vendor/golang.org/x/text/feature/plural/example_test.go b/vendor/golang.org/x/text/feature/plural/example_test.go new file mode 100644 index 000000000..c75408c0e --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/example_test.go @@ -0,0 +1,46 @@ +// Copyright 2017 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 plural_test + +import ( + "golang.org/x/text/feature/plural" + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func ExampleSelect() { + // Manually set some translations. This is typically done programmatically. + message.Set(language.English, "%d files remaining", + plural.Selectf(1, "%d", + "=0", "done!", + plural.One, "one file remaining", + plural.Other, "%[1]d files remaining", + )) + message.Set(language.Dutch, "%d files remaining", + plural.Selectf(1, "%d", + "=0", "klaar!", + // One can also use a string instead of a Kind + "one", "nog één bestand te gaan", + "other", "nog %[1]d bestanden te gaan", + )) + + p := message.NewPrinter(language.English) + p.Printf("%d files remaining", 5) + p.Println() + p.Printf("%d files remaining", 1) + p.Println() + + p = message.NewPrinter(language.Dutch) + p.Printf("%d files remaining", 1) + p.Println() + p.Printf("%d files remaining", 0) + p.Println() + + // Output: + // 5 files remaining + // one file remaining + // nog één bestand te gaan + // klaar! +} diff --git a/vendor/golang.org/x/text/feature/plural/message.go b/vendor/golang.org/x/text/feature/plural/message.go new file mode 100755 index 000000000..f931f8a6a --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/message.go @@ -0,0 +1,244 @@ +// Copyright 2017 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 plural + +import ( + "fmt" + "io/ioutil" + "reflect" + "strconv" + + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/internal/number" + "golang.org/x/text/language" + "golang.org/x/text/message/catalog" +) + +// TODO: consider deleting this interface. Maybe VisibleDigits is always +// sufficient and practical. + +// Interface is used for types that can determine their own plural form. +type Interface interface { + // PluralForm reports the plural form for the given language of the + // underlying value. It also returns the integer value. If the integer value + // is larger than fits in n, PluralForm may return a value modulo + // 10,000,000. + PluralForm(t language.Tag, scale int) (f Form, n int) +} + +// Selectf returns the first case for which its selector is a match for the +// arg-th substitution argument to a formatting call, formatting it as indicated +// by format. +// +// The cases argument are pairs of selectors and messages. Selectors are of type +// string or Form. Messages are of type string or catalog.Message. A selector +// matches an argument if: +// - it is "other" or Other +// - it matches the plural form of the argument: "zero", "one", "two", "few", +// or "many", or the equivalent Form +// - it is of the form "=x" where x is an integer that matches the value of +// the argument. +// - it is of the form " kindDefault { + e.EncodeUint(uint64(m.scale)) + } + + forms := validForms(cardinal, e.Language()) + + for i := 0; i < len(m.cases); { + if err := compileSelector(e, forms, m.cases[i]); err != nil { + return err + } + if i++; i >= len(m.cases) { + return fmt.Errorf("plural: no message defined for selector %v", m.cases[i-1]) + } + var msg catalog.Message + switch x := m.cases[i].(type) { + case string: + msg = catalog.String(x) + case catalog.Message: + msg = x + default: + return fmt.Errorf("plural: message of type %T; must be string or catalog.Message", x) + } + if err := e.EncodeMessage(msg); err != nil { + return err + } + i++ + } + return nil +} + +func compileSelector(e *catmsg.Encoder, valid []Form, selector interface{}) error { + form := Other + switch x := selector.(type) { + case string: + if x == "" { + return fmt.Errorf("plural: empty selector") + } + if c := x[0]; c == '=' || c == '<' { + val, err := strconv.ParseUint(x[1:], 10, 16) + if err != nil { + return fmt.Errorf("plural: invalid number in selector %q: %v", selector, err) + } + e.EncodeUint(uint64(c)) + e.EncodeUint(val) + return nil + } + var ok bool + form, ok = countMap[x] + if !ok { + return fmt.Errorf("plural: invalid plural form %q", selector) + } + case Form: + form = x + default: + return fmt.Errorf("plural: selector of type %T; want string or Form", selector) + } + + ok := false + for _, f := range valid { + if f == form { + ok = true + break + } + } + if !ok { + return fmt.Errorf("plural: form %q not supported for language %q", selector, e.Language()) + } + e.EncodeUint(uint64(form)) + return nil +} + +func execute(d *catmsg.Decoder) bool { + lang := d.Language() + argN := int(d.DecodeUint()) + kind := int(d.DecodeUint()) + scale := -1 // default + if kind > kindDefault { + scale = int(d.DecodeUint()) + } + form := Other + n := -1 + if arg := d.Arg(argN); arg == nil { + // Default to Other. + } else if x, ok := arg.(number.VisibleDigits); ok { + d := x.Digits(nil, lang, scale) + form, n = cardinal.matchDisplayDigits(lang, &d) + } else if x, ok := arg.(Interface); ok { + // This covers lists and formatters from the number package. + form, n = x.PluralForm(lang, scale) + } else { + var f number.Formatter + switch kind { + case kindScale: + f.InitDecimal(lang) + f.SetScale(scale) + case kindScientific: + f.InitScientific(lang) + f.SetScale(scale) + case kindPrecision: + f.InitDecimal(lang) + f.SetPrecision(scale) + case kindDefault: + // sensible default + f.InitDecimal(lang) + if k := reflect.TypeOf(arg).Kind(); reflect.Int <= k && k <= reflect.Uintptr { + f.SetScale(0) + } else { + f.SetScale(2) + } + } + var dec number.Decimal // TODO: buffer in Printer + dec.Convert(f.RoundingContext, arg) + v := number.FormatDigits(&dec, f.RoundingContext) + if !v.NaN && !v.Inf { + form, n = cardinal.matchDisplayDigits(d.Language(), &v) + } + } + for !d.Done() { + f := d.DecodeUint() + if (f == '=' && n == int(d.DecodeUint())) || + (f == '<' && 0 <= n && n < int(d.DecodeUint())) || + form == Form(f) || + Other == Form(f) { + return d.ExecuteMessage() + } + d.SkipMessage() + } + return false +} diff --git a/vendor/golang.org/x/text/feature/plural/message_test.go b/vendor/golang.org/x/text/feature/plural/message_test.go new file mode 100644 index 000000000..b5bc47e87 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/message_test.go @@ -0,0 +1,197 @@ +// Copyright 2017 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 plural + +import ( + "fmt" + "strings" + "testing" + + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/language" + "golang.org/x/text/message/catalog" +) + +func TestSelect(t *testing.T) { + lang := language.English + type test struct { + arg interface{} + result string + err string + } + testCases := []struct { + desc string + msg catalog.Message + err string + tests []test + }{{ + desc: "basic", + msg: Selectf(1, "%d", "one", "foo", "other", "bar"), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + {arg: opposite(1), result: "bar"}, + {arg: opposite(2), result: "foo"}, + {arg: "unknown", result: "bar"}, // other + }, + }, { + desc: "comparisons", + msg: Selectf(1, "%d", + "=0", "zero", + "=1", "one", + "one", "cannot match", // never matches + "<5", "<5", // never matches + "=5", "=5", + Other, "other"), + tests: []test{ + {arg: 0, result: "zero"}, + {arg: 1, result: "one"}, + {arg: 2, result: "<5"}, + {arg: 4, result: "<5"}, + {arg: 5, result: "=5"}, + {arg: 6, result: "other"}, + {arg: "unknown", result: "other"}, + }, + }, { + desc: "fractions", + msg: Selectf(1, "%.2f", "one", "foo", "other", "bar"), + tests: []test{ + // fractions are always plural in english + {arg: 0, result: "bar"}, + {arg: 1, result: "bar"}, + }, + }, { + desc: "decimal without fractions", + msg: Selectf(1, "%.0f", "one", "foo", "other", "bar"), + tests: []test{ + // fractions are always plural in english + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + }, + }, { + desc: "scientific", + msg: Selectf(1, "%.0e", "one", "foo", "other", "bar"), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + }, + }, { + desc: "variable", + msg: Selectf(1, "%.1g", "one", "foo", "other", "bar"), + tests: []test{ + // fractions are always plural in english + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + }, + }, { + desc: "default", + msg: Selectf(1, "", "one", "foo", "other", "bar"), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + {arg: 1.0, result: "bar"}, + }, + }, { + desc: "nested", + msg: Selectf(1, "", "other", Selectf(2, "", "one", "foo", "other", "bar")), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + }, + }, { + desc: "arg unavailable", + msg: Selectf(100, "%.2f", "one", "foo", "other", "bar"), + tests: []test{{arg: 1, result: "bar"}}, + }, { + desc: "no match", + msg: Selectf(1, "%.2f", "one", "foo"), + tests: []test{{arg: 0, result: "bar", err: catmsg.ErrNoMatch.Error()}}, + }, { + desc: "error invalid form", + err: `invalid plural form "excessive"`, + msg: Selectf(1, "%d", "excessive", "foo"), + }, { + desc: "error form not used by language", + err: `form "many" not supported for language "en"`, + msg: Selectf(1, "%d", "many", "foo"), + }, { + desc: "error invalid selector", + err: `selector of type int; want string or Form`, + msg: Selectf(1, "%d", 1, "foo"), + }, { + desc: "error missing message", + err: `no message defined for selector one`, + msg: Selectf(1, "%d", "one"), + }, { + desc: "error invalid number", + err: `invalid number in selector "<1.00"`, + msg: Selectf(1, "%d", "<1.00"), + }, { + desc: "error empty selector", + err: `empty selector`, + msg: Selectf(1, "%d", "", "foo"), + }, { + desc: "error invalid message", + err: `message of type int; must be string or catalog.Message`, + msg: Selectf(1, "%d", "one", 3), + }, { + desc: "nested error", + err: `empty selector`, + msg: Selectf(1, "", "other", Selectf(2, "", "")), + }} + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + data, err := catmsg.Compile(lang, nil, tc.msg) + chkError(t, err, tc.err) + for _, tx := range tc.tests { + t.Run(fmt.Sprint(tx.arg), func(t *testing.T) { + r := renderer{arg: tx.arg} + d := catmsg.NewDecoder(lang, &r, nil) + err := d.Execute(data) + chkError(t, err, tx.err) + if r.result != tx.result { + t.Errorf("got %q; want %q", r.result, tx.result) + } + }) + } + }) + } +} + +func chkError(t *testing.T, got error, want string) { + if (got == nil && want != "") || + (got != nil && (want == "" || !strings.Contains(got.Error(), want))) { + t.Fatalf("got %v; want %v", got, want) + } + if got != nil { + t.SkipNow() + } +} + +type renderer struct { + arg interface{} + result string +} + +func (r *renderer) Render(s string) { r.result += s } +func (r *renderer) Arg(i int) interface{} { + if i > 10 { // Allow testing "arg unavailable" path + return nil + } + return r.arg +} + +type opposite int + +func (o opposite) PluralForm(lang language.Tag, scale int) (Form, int) { + if o == 1 { + return Other, 1 + } + return One, int(o) +} diff --git a/vendor/golang.org/x/text/feature/plural/plural.go b/vendor/golang.org/x/text/feature/plural/plural.go index 2b4cfe321..61faf187d 100644 --- a/vendor/golang.org/x/text/feature/plural/plural.go +++ b/vendor/golang.org/x/text/feature/plural/plural.go @@ -13,6 +13,7 @@ package plural import ( + "golang.org/x/text/internal/number" "golang.org/x/text/language" ) @@ -109,21 +110,25 @@ func getIntApprox(digits []byte, start, end, nMod, big int) (n int) { // 123 []byte{1, 2, 3} 3 0 // 123.4 []byte{1, 2, 3, 4} 3 1 // 123.40 []byte{1, 2, 3, 4} 3 2 -// 100000 []byte{1} 6......0 -// 100000.00 []byte{1} 6......3 +// 100000 []byte{1} 6 0 +// 100000.00 []byte{1} 6 3 func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form { index, _ := language.CompactIndex(t) - endN := len(digits) + exp // Differentiate up to including mod 1000000 for the integer part. - n := getIntApprox(digits, 0, endN, 6, 1000000) + n := getIntApprox(digits, 0, exp, 6, 1000000) // Differentiate up to including mod 100 for the fractional part. - f := getIntApprox(digits, endN, endN+scale, 2, 100) + f := getIntApprox(digits, exp, exp+scale, 2, 100) return matchPlural(p, index, n, f, scale) } +func (p *Rules) matchDisplayDigits(t language.Tag, d *number.Digits) (Form, int) { + n := getIntApprox(d.Digits, 0, int(d.Exp), 6, 1000000) + return p.MatchDigits(t, d.Digits, int(d.Exp), d.NumFracDigits()), n +} + func validForms(p *Rules, t language.Tag) (forms []Form) { index, _ := language.CompactIndex(t) offset := p.langToIndex[index] @@ -145,6 +150,25 @@ func (p *Rules) matchComponents(t language.Tag, n, f, scale int) Form { return matchPlural(p, index, n, f, scale) } +// MatchPlural returns the plural form for the given language and plural +// operands (as defined in +// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules): +// where +// n absolute value of the source number (integer and decimals) +// input +// i integer digits of n. +// v number of visible fraction digits in n, with trailing zeros. +// w number of visible fraction digits in n, without trailing zeros. +// f visible fractional digits in n, with trailing zeros (f = t * 10^(v-w)) +// t visible fractional digits in n, without trailing zeros. +// +// If any of the operand values is too large to fit in an int, it is okay to +// pass the value modulo 10,000,000. +func (p *Rules) MatchPlural(lang language.Tag, i, v, w, f, t int) Form { + index, _ := language.CompactIndex(lang) + return matchPlural(p, index, i, f, v) +} + func matchPlural(p *Rules, index int, n, f, v int) Form { nMask := p.inclusionMasks[n%maxMod] // Compute the fMask inline in the rules below, as it is relatively rare. diff --git a/vendor/golang.org/x/text/feature/plural/plural_test.go b/vendor/golang.org/x/text/feature/plural/plural_test.go index e5524c59a..b3cf4c449 100644 --- a/vendor/golang.org/x/text/feature/plural/plural_test.go +++ b/vendor/golang.org/x/text/feature/plural/plural_test.go @@ -28,6 +28,8 @@ func TestGetIntApprox(t *testing.T) { {"123", 0, 2, 2, 12}, {"123", 3, 4, 2, 0}, {"12345", 3, 4, 2, 4}, + {"40", 0, 1, 2, 4}, + {"1", 0, 7, 2, big}, {"123", 0, 5, 2, big}, {"123", 0, 5, 3, big}, @@ -114,7 +116,7 @@ func testPlurals(t *testing.T, p *Rules, testCases []pluralTest) { for i := range digits { digits[i] -= '0' } - if f := p.MatchDigits(tag, digits, 0, 0); f != Form(tc.form) { + if f := p.MatchDigits(tag, digits, len(digits), 0); f != Form(tc.form) { t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form)) } }) @@ -139,14 +141,25 @@ func testPlurals(t *testing.T, p *Rules, testCases []pluralTest) { num := fmt.Sprintf("%[1]d.%0[3]*[2]d", n/m, n%m, scale) name := fmt.Sprintf("%s:dec(%s)", loc, num) t.Run(name, func(t *testing.T) { + ff := n % m + tt := ff + w := scale + for tt > 0 && tt%10 == 0 { + w-- + tt /= 10 + } + if f := p.MatchPlural(tag, n/m, scale, w, ff, tt); f != Form(tc.form) { + t.Errorf("MatchPlural: got %v; want %v", f, Form(tc.form)) + } if f := p.matchComponents(tag, n/m, n%m, scale); f != Form(tc.form) { t.Errorf("matchComponents: got %v; want %v", f, Form(tc.form)) } + exp := strings.IndexByte(num, '.') digits := []byte(strings.Replace(num, ".", "", 1)) for i := range digits { digits[i] -= '0' } - if f := p.MatchDigits(tag, digits, -scale, scale); f != Form(tc.form) { + if f := p.MatchDigits(tag, digits, exp, scale); f != Form(tc.form) { t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form)) } }) diff --git a/vendor/golang.org/x/text/gen.go b/vendor/golang.org/x/text/gen.go index 79af97e70..4257a1839 100644 --- a/vendor/golang.org/x/text/gen.go +++ b/vendor/golang.org/x/text/gen.go @@ -25,7 +25,9 @@ import ( "sync" "unicode" + "golang.org/x/text/collate" "golang.org/x/text/internal/gen" + "golang.org/x/text/language" ) var ( @@ -72,14 +74,24 @@ func main() { fmt.Printf("Requested Unicode version %s; core unicode version is %s.\n", gen.UnicodeVersion(), unicode.Version) - // TODO: use collate to compare. Simple comparison will work, though, - // until Unicode reaches version 10. To avoid circular dependencies, we - // could use the NumericWeighter without using package collate using a - // trivial Weighter implementation. - if gen.UnicodeVersion() < unicode.Version && !*force { + c := collate.New(language.Und, collate.Numeric) + if c.CompareString(gen.UnicodeVersion(), unicode.Version) < 0 && !*force { os.Exit(2) } updateCore = true + goroot := os.Getenv("GOROOT") + appendToFile( + filepath.Join(goroot, "api", "except.txt"), + fmt.Sprintf("pkg unicode, const Version = %q\n", unicode.Version), + ) + const lines = `pkg unicode, const Version = %q +// TODO: add a new line of the following form for each new script and property. +pkg unicode, var *RangeTable +` + appendToFile( + filepath.Join(goroot, "api", "next.txt"), + fmt.Sprintf(lines, gen.UnicodeVersion()), + ) } var unicode = &dependency{} @@ -132,6 +144,20 @@ func main() { vprintf("SUCCESS\n") } +func appendToFile(file, text string) { + fmt.Println("Augmenting", file) + w, err := os.OpenFile(file, os.O_APPEND|os.O_WRONLY, 0600) + if err != nil { + fmt.Println("Failed to open file:", err) + os.Exit(1) + } + defer w.Close() + if _, err := w.WriteString(text); err != nil { + fmt.Println("Failed to write to file:", err) + os.Exit(1) + } +} + var ( all sync.WaitGroup hasErrors bool @@ -244,7 +270,7 @@ func copyPackage(dirSrc, dirDst, search, replace string) { base := filepath.Base(file) if err != nil || info.IsDir() || !strings.HasSuffix(base, ".go") || - strings.HasSuffix(base, "_test.go") && !strings.HasPrefix(base, "example") || + strings.HasSuffix(base, "_test.go") || // Don't process subdirectories. filepath.Dir(file) != dirSrc { return nil diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg.go b/vendor/golang.org/x/text/internal/catmsg/catmsg.go index 74c039f05..32d6c2051 100644 --- a/vendor/golang.org/x/text/internal/catmsg/catmsg.go +++ b/vendor/golang.org/x/text/internal/catmsg/catmsg.go @@ -74,13 +74,6 @@ import ( // A Handle refers to a registered message type. type Handle int -// First is used as a Handle to EncodeMessageType, followed by a series of calls -// to EncodeMessage, to implement selecting the first matching Message. -// -// TODO: this can be removed once we either can use type aliases or if the -// internals of this package are merged with the catalog package. -var First Handle = msgFirst - // A Handler decodes and evaluates data compiled by a Message and sends the // result to the Decoder. The output may depend on the value of the substitution // arguments, accessible by the Decoder's Arg method. The Handler returns false @@ -236,6 +229,23 @@ func Compile(tag language.Tag, macros Dictionary, m Message) (data string, err e return string(buf), err } +// FirstOf is a message type that prints the first message in the sequence that +// resolves to a match for the given substitution arguments. +type FirstOf []Message + +// Compile implements Message. +func (s FirstOf) Compile(e *Encoder) error { + e.EncodeMessageType(msgFirst) + err := ErrIncomplete + for i, m := range s { + if err == nil { + return fmt.Errorf("catalog: message argument %d is complete and blocks subsequent messages", i-1) + } + err = e.EncodeMessage(m) + } + return err +} + // Var defines a message that can be substituted for a placeholder of the same // name. If an expression does not result in a string after evaluation, Name is // used as the substitution. For example: @@ -294,7 +304,7 @@ func (r Raw) Compile(e *Encoder) (err error) { // d.Arg(1) // d.Render(resultOfInvites) // d.Render(" %[2]v to ") -// d.Arg(1) +// d.Arg(2) // d.Render(resultOfTheir) // d.Render(" party.") // where the messages for "invites" and "their" both use a plural.Select diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go index d06502bff..485d19c96 100644 --- a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +++ b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go @@ -110,6 +110,10 @@ func TestCodec(t *testing.T) { }, }, tests: single("foo|BAZ", ""), + }, { + desc: "nested value", + m: nestedLang{nestedLang{empty{}}}, + tests: single("nl|nl", ""), }, { desc: "not shadowed variable", m: seq{ @@ -207,8 +211,9 @@ func TestCodec(t *testing.T) { dec := NewDecoder(language.Und, r, macros) for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { - - data, err := Compile(language.Und, macros, tc.m) + // Use a language other than Und so that we can test + // passing the language to nested values. + data, err := Compile(language.Dutch, macros, tc.m) if failErr(err, tc.encErr) { t.Errorf("encoding error: got %+q; want %+q", err, tc.encErr) } @@ -241,7 +246,7 @@ type seq []Message func (s seq) Compile(e *Encoder) (err error) { err = ErrIncomplete - e.EncodeMessageType(First) + e.EncodeMessageType(msgFirst) for _, m := range s { // Pass only the last error, but allow erroneous or complete messages // here to allow testing different scenarios. @@ -265,6 +270,23 @@ func (incomplete) Compile(e *Encoder) (err error) { return ErrIncomplete } +var msgNested = Register( + "golang.org/x/text/internal/catmsg.nested", + func(d *Decoder) bool { + d.Render(d.DecodeString()) + d.ExecuteMessage() + return true + }) + +type nestedLang struct{ Message } + +func (n nestedLang) Compile(e *Encoder) (err error) { + e.EncodeMessageType(msgNested) + e.EncodeString(e.Language().String()) + e.EncodeMessage(n.Message) + return nil +} + type errorCompileMsg struct{} var errCompileTest = errors.New("catmsg: compile error test") diff --git a/vendor/golang.org/x/text/internal/catmsg/codec.go b/vendor/golang.org/x/text/internal/catmsg/codec.go index e959b08f9..49c9fc978 100755 --- a/vendor/golang.org/x/text/internal/catmsg/codec.go +++ b/vendor/golang.org/x/text/internal/catmsg/codec.go @@ -99,7 +99,7 @@ func (e *Encoder) EncodeMessageType(h Handle) { // EncodeMessage serializes the given message inline at the current position. func (e *Encoder) EncodeMessage(m Message) error { - e = &Encoder{root: e.root, parent: e} + e = &Encoder{root: e.root, parent: e, tag: e.tag} err := m.Compile(e) if _, ok := m.(*Var); !ok { e.flushTo(e.parent) @@ -169,7 +169,7 @@ func (e *Encoder) addVar(key string, m Message) error { case err == ErrIncomplete: if Handle(e.buf[0]) != msgFirst { seq := &Encoder{root: e.root, parent: e} - seq.EncodeMessageType(First) + seq.EncodeMessageType(msgFirst) e.flushTo(seq) e = seq } diff --git a/vendor/golang.org/x/text/internal/cldrtree/cldrtree.go b/vendor/golang.org/x/text/internal/cldrtree/cldrtree.go new file mode 100644 index 000000000..660a5b2dd --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/cldrtree.go @@ -0,0 +1,351 @@ +// Copyright 2017 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 cldrtree builds and generates a CLDR index file, including all +// inheritance. +// +package cldrtree + +// cldrtree stores CLDR data in a tree-like structure called Tree. In the CLDR +// data each branch in the tree is indicated by either an element name or an +// attribute value. A Tree does not distinguish between these two cases, but +// rather assumes that all branches can be accessed by an enum with a compact +// range of positive integer values starting from 0. +// +// Each Tree consists of three parts: +// - a slice mapping compact language identifiers to an offset into a set of +// indices, +// - a set of indices, stored as a large blob of uint16 values that encode +// the actual tree structure of data, and +// - a set of buckets that each holds a collection of strings. +// each of which is explained in more detail below. +// +// +// Tree lookup +// A tree lookup is done by providing a locale and a "path", which is a +// sequence of enum values. The search starts with getting the index for the +// given locale and then incrementally jumping into the index using the path +// values. If an element cannot be found in the index, the search starts anew +// for the locale's parent locale. The path may change during lookup by means +// of aliasing, described below. +// +// Buckets +// Buckets hold the actual string data of the leaf values of the CLDR tree. +// This data is stored in buckets, rather than one large string, for multiple +// reasons: +// - it allows representing leaf values more compactly, by storing all leaf +// values in a single bucket and then needing only needing a uint16 to index +// into this bucket for all leaf values, +// - (TBD) allow multiple trees to share subsets of buckets, mostly to allow +// linking in a smaller amount of data if only a subset of the buckets is +// needed, +// - to be nice to go fmt and the compiler. +// +// indices +// An index is a slice of uint16 for which the values are interpreted in one of +// two ways: as a node or a set of leaf values. +// A set of leaf values has the following form: +// , , ... +// max_size indicates the maximum enum value for which an offset is defined. +// An offset value of 0xFFFF (missingValue) also indicates an undefined value. +// If defined offset indicates the offset within the given bucket of the string. +// A node value has the following form: +// , ... +// max_size indicates the maximum value for which an offset is defined. +// A missing offset may also be indicated with 0. If the high bit (0x8000, or +// inheritMask) is not set, the offset points to the offset within the index +// for the current locale. +// An offset with high bit set is an alias. In this case the uint16 has the form +// bits: +// 15: 1 +// 14-12: negative offset into path relative to current position +// 0-11: new enum value for path element. +// On encountering an alias, the path is modified accordingly and the lookup is +// restarted for the given locale. + +import ( + "fmt" + "reflect" + "regexp" + "strings" + "unicode/utf8" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/language" + "golang.org/x/text/unicode/cldr" +) + +// TODO: +// - allow two Trees to share the same set of buckets. + +// A Builder allows storing CLDR data in compact form. +type Builder struct { + table []string + + rootMeta *metaData + locales []locale + strToBucket map[string]stringInfo + buckets [][]byte + enums []*enum + err error + + // Stats + size int + sizeAll int + bucketWaste int +} + +const ( + maxBucketSize = 8 * 1024 // 8K + maxStrlen = 254 // allow 0xFF sentinel +) + +func (b *Builder) setError(err error) { + if b.err == nil { + b.err = err + } +} + +func (b *Builder) addString(data string) stringInfo { + data = b.makeString(data) + info, ok := b.strToBucket[data] + if !ok { + b.size += len(data) + x := len(b.buckets) - 1 + bucket := b.buckets[x] + if len(bucket)+len(data) < maxBucketSize { + info.bucket = uint16(x) + info.bucketPos = uint16(len(bucket)) + b.buckets[x] = append(bucket, data...) + } else { + info.bucket = uint16(len(b.buckets)) + info.bucketPos = 0 + b.buckets = append(b.buckets, []byte(data)) + } + b.strToBucket[data] = info + } + return info +} + +func (b *Builder) addStringToBucket(data string, bucket uint16) stringInfo { + data = b.makeString(data) + info, ok := b.strToBucket[data] + if !ok || info.bucket != bucket { + if ok { + b.bucketWaste += len(data) + } + b.size += len(data) + bk := b.buckets[bucket] + info.bucket = bucket + info.bucketPos = uint16(len(bk)) + b.buckets[bucket] = append(bk, data...) + b.strToBucket[data] = info + } + return info +} + +func (b *Builder) makeString(data string) string { + if len(data) > maxStrlen { + b.setError(fmt.Errorf("string %q exceeds maximum length of %d", data, maxStrlen)) + data = data[:maxStrlen] + for i := len(data) - 1; i > len(data)-4; i-- { + if utf8.RuneStart(data[i]) { + data = data[:i] + break + } + } + } + data = string([]byte{byte(len(data))}) + data + b.sizeAll += len(data) + return data +} + +type stringInfo struct { + bufferPos uint32 + bucket uint16 + bucketPos uint16 +} + +// New creates a new Builder. +func New(tableName string) *Builder { + b := &Builder{ + strToBucket: map[string]stringInfo{}, + buckets: [][]byte{nil}, // initialize with first bucket. + } + b.rootMeta = &metaData{ + b: b, + typeInfo: &typeInfo{}, + } + return b +} + +// Gen writes all the tables and types for the collected data. +func (b *Builder) Gen(w *gen.CodeWriter) error { + t, err := build(b) + if err != nil { + return err + } + return generate(b, t, w) +} + +// GenTestData generates tables useful for testing data generated with Gen. +func (b *Builder) GenTestData(w *gen.CodeWriter) error { + return generateTestData(b, w) +} + +type locale struct { + tag language.Tag + root *Index +} + +// Locale creates an index for the given locale. +func (b *Builder) Locale(t language.Tag) *Index { + index := &Index{ + meta: b.rootMeta, + } + b.locales = append(b.locales, locale{tag: t, root: index}) + return index +} + +// An Index holds a map of either leaf values or other indices. +type Index struct { + meta *metaData + + subIndex []*Index + values []keyValue +} + +func (i *Index) setError(err error) { i.meta.b.setError(err) } + +type keyValue struct { + key enumIndex + value stringInfo +} + +// Element is a CLDR XML element. +type Element interface { + GetCommon() *cldr.Common +} + +// Index creates a subindex where the type and enum values are not shared +// with siblings by default. The name is derived from the elem. If elem is +// an alias reference, the alias will be resolved and linked. If elem is nil +// Index returns nil. +func (i *Index) Index(elem Element, opt ...Option) *Index { + if elem == nil || reflect.ValueOf(elem).IsNil() { + return nil + } + c := elem.GetCommon() + o := &options{ + parent: i, + name: c.GetCommon().Element(), + } + o.fill(opt) + o.setAlias(elem) + return i.subIndexForKey(o) +} + +// IndexWithName is like Section but derives the name from the given name. +func (i *Index) IndexWithName(name string, opt ...Option) *Index { + o := &options{parent: i, name: name} + o.fill(opt) + return i.subIndexForKey(o) +} + +// IndexFromType creates a subindex the value of tye type attribute as key. It +// will also configure the Index to share the enumeration values with all +// sibling values. If elem is an alias, it will be resolved and linked. +func (i *Index) IndexFromType(elem Element, opts ...Option) *Index { + o := &options{ + parent: i, + name: elem.GetCommon().Type, + } + o.fill(opts) + o.setAlias(elem) + useSharedType()(o) + return i.subIndexForKey(o) +} + +// IndexFromAlt creates a subindex the value of tye alt attribute as key. It +// will also configure the Index to share the enumeration values with all +// sibling values. If elem is an alias, it will be resolved and linked. +func (i *Index) IndexFromAlt(elem Element, opts ...Option) *Index { + o := &options{ + parent: i, + name: elem.GetCommon().Alt, + } + o.fill(opts) + o.setAlias(elem) + useSharedType()(o) + return i.subIndexForKey(o) +} + +func (i *Index) subIndexForKey(opts *options) *Index { + key := opts.name + if len(i.values) > 0 { + panic(fmt.Errorf("cldrtree: adding Index for %q when value already exists", key)) + } + meta := i.meta.sub(key, opts) + for _, x := range i.subIndex { + if x.meta == meta { + return x + } + } + if alias := opts.alias; alias != nil { + if a := alias.GetCommon().Alias; a != nil { + if a.Source != "locale" { + i.setError(fmt.Errorf("cldrtree: non-locale alias not supported %v", a.Path)) + } + if meta.inheritOffset < 0 { + i.setError(fmt.Errorf("cldrtree: alias was already set %v", a.Path)) + } + path := a.Path + for ; strings.HasPrefix(path, "../"); path = path[len("../"):] { + meta.inheritOffset-- + } + m := aliasRe.FindStringSubmatch(path) + if m == nil { + i.setError(fmt.Errorf("cldrtree: could not parse alias %q", a.Path)) + } else { + key := m[4] + if key == "" { + key = m[1] + } + meta.inheritIndex = key + } + } + } + x := &Index{meta: meta} + i.subIndex = append(i.subIndex, x) + return x +} + +var aliasRe = regexp.MustCompile(`^([a-zA-Z]+)(\[@([a-zA-Z-]+)='([a-zA-Z-]+)'\])?`) + +// SetValue sets the value, the data from a CLDR XML element, for the given key. +func (i *Index) SetValue(key string, value Element, opt ...Option) { + if len(i.subIndex) > 0 { + panic(fmt.Errorf("adding value for key %q when index already exists", key)) + } + o := &options{parent: i} + o.fill(opt) + c := value.GetCommon() + if c.Alias != nil { + i.setError(fmt.Errorf("cldrtree: alias not supported for SetValue %v", c.Alias.Path)) + } + i.setValue(key, c.Data(), o) +} + +func (i *Index) setValue(key, data string, o *options) { + index, _ := i.meta.typeInfo.lookupSubtype(key, o) + kv := keyValue{key: index} + if len(i.values) > 0 { + // Add string to the same bucket as the other values. + bucket := i.values[0].value.bucket + kv.value = i.meta.b.addStringToBucket(data, bucket) + } else { + kv.value = i.meta.b.addString(data) + } + i.values = append(i.values, kv) +} diff --git a/vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go b/vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go new file mode 100644 index 000000000..56637c73f --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go @@ -0,0 +1,456 @@ +// Copyright 2017 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 cldrtree + +import ( + "bytes" + "flag" + "io/ioutil" + "log" + "math/rand" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "testing" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/language" + "golang.org/x/text/unicode/cldr" +) + +var genOutput = flag.Bool("gen", false, "generate output files") + +func TestAliasRegexp(t *testing.T) { + testCases := []struct { + alias string + want []string + }{{ + alias: "miscPatterns[@numberSystem='latn']", + want: []string{ + "miscPatterns[@numberSystem='latn']", + "miscPatterns", + "[@numberSystem='latn']", + "numberSystem", + "latn", + }, + }, { + alias: `calendar[@type='greg-foo']/days/`, + want: []string{ + "calendar[@type='greg-foo']", + "calendar", + "[@type='greg-foo']", + "type", + "greg-foo", + }, + }, { + alias: "eraAbbr", + want: []string{ + "eraAbbr", + "eraAbbr", + "", + "", + "", + }, + }, { + // match must be anchored at beginning. + alias: `../calendar[@type='gregorian']/days/`, + }} + for _, tc := range testCases { + t.Run(tc.alias, func(t *testing.T) { + got := aliasRe.FindStringSubmatch(tc.alias) + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("got %v; want %v", got, tc.want) + } + }) + } +} + +func TestBuild(t *testing.T) { + tree1, _ := loadTestdata(t, "test1") + tree2, _ := loadTestdata(t, "test2") + + // Constants for second test test + const ( + calendar = iota + field + ) + const ( + month = iota + era + filler + cyclicNameSet + ) + const ( + abbreviated = iota + narrow + wide + ) + + testCases := []struct { + desc string + tree *Tree + locale string + path []uint16 + isFeature bool + result string + }{{ + desc: "und/chinese month format wide m1", + tree: tree1, + locale: "und", + path: path(calendar, 0, month, 0, wide, 1), + result: "cM01", + }, { + desc: "und/chinese month format wide m12", + tree: tree1, + locale: "und", + path: path(calendar, 0, month, 0, wide, 12), + result: "cM12", + }, { + desc: "und/non-existing value", + tree: tree1, + locale: "und", + path: path(calendar, 0, month, 0, wide, 13), + result: "", + }, { + desc: "und/dangi:chinese month format wide", + tree: tree1, + locale: "und", + path: path(calendar, 1, month, 0, wide, 1), + result: "cM01", + }, { + desc: "und/chinese month format abbreviated:wide", + tree: tree1, + locale: "und", + path: path(calendar, 0, month, 0, abbreviated, 1), + result: "cM01", + }, { + desc: "und/chinese month format narrow:wide", + tree: tree1, + locale: "und", + path: path(calendar, 0, month, 0, narrow, 1), + result: "cM01", + }, { + desc: "und/gregorian month format wide", + tree: tree1, + locale: "und", + path: path(calendar, 2, month, 0, wide, 2), + result: "gM02", + }, { + desc: "und/gregorian month format:stand-alone narrow", + tree: tree1, + locale: "und", + path: path(calendar, 2, month, 0, narrow, 1), + result: "1", + }, { + desc: "und/gregorian month stand-alone:format abbreviated", + tree: tree1, + locale: "und", + path: path(calendar, 2, month, 1, abbreviated, 1), + result: "gM01", + }, { + desc: "und/gregorian month stand-alone:format wide ", + tree: tree1, + locale: "und", + path: path(calendar, 2, month, 1, abbreviated, 1), + result: "gM01", + }, { + desc: "und/dangi:chinese month format narrow:wide ", + tree: tree1, + locale: "und", + path: path(calendar, 1, month, 0, narrow, 4), + result: "cM04", + }, { + desc: "und/field era displayname 0", + tree: tree2, + locale: "und", + path: path(field, 0, 0, 0), + result: "Era", + }, { + desc: "en/field era displayname 0", + tree: tree2, + locale: "en", + path: path(field, 0, 0, 0), + result: "era", + }, { + desc: "und/calendar hebrew format wide 7-leap", + tree: tree2, + locale: "und", + path: path(calendar, 7, month, 0, wide, 0), + result: "Adar II", + }, { + desc: "en-GB:en-001:en:und/calendar hebrew format wide 7-leap", + tree: tree2, + locale: "en-GB", + path: path(calendar, 7, month, 0, wide, 0), + result: "Adar II", + }, { + desc: "und/buddhist month format wide 11", + tree: tree2, + locale: "und", + path: path(calendar, 0, month, 0, wide, 12), + result: "genWideM12", + }, { + desc: "en-GB/gregorian month stand-alone narrow 2", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, month, 1, narrow, 3), + result: "gbNarrowM3", + }, { + desc: "en-GB/gregorian month format narrow 3/missing in en-GB", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, month, 0, narrow, 4), + result: "enNarrowM4", + }, { + desc: "en-GB/gregorian month format narrow 3/missing in en and en-GB", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, month, 0, narrow, 7), + result: "gregNarrowM7", + }, { + desc: "en-GB/gregorian month format narrow 3/missing in en and en-GB", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, month, 0, narrow, 7), + result: "gregNarrowM7", + }, { + desc: "en-GB/gregorian era narrow", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, era, abbreviated, 0, 1), + isFeature: true, + result: "AD", + }, { + desc: "en-GB/gregorian era narrow", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, era, narrow, 0, 0), + isFeature: true, + result: "BC", + }, { + desc: "en-GB/gregorian era narrow", + tree: tree2, + locale: "en-GB", + path: path(calendar, 6, era, wide, 1, 0), + isFeature: true, + result: "Before Common Era", + }, { + desc: "en-GB/dangi:chinese cyclicName, months, format, narrow:abbreviated 2", + tree: tree2, + locale: "en-GB", + path: path(calendar, 1, cyclicNameSet, 3, 0, 1, 2), + isFeature: true, + result: "year2", + }, { + desc: "en-GB/field era-narrow ", + tree: tree2, + locale: "en-GB", + path: path(field, 2, 0, 0), + result: "era", + }, { + desc: "en-GB/field month-narrow relativeTime future one", + tree: tree2, + locale: "en-GB", + path: path(field, 5, 2, 0, 1), + isFeature: true, + result: "001NarrowFutMOne", + }, { + // Don't fall back to the one of "en". + desc: "en-GB/field month-short relativeTime past one:other", + tree: tree2, + locale: "en-GB", + path: path(field, 4, 2, 1, 1), + isFeature: true, + result: "001ShortPastMOther", + }, { + desc: "en-GB/field month relativeTime future two:other", + tree: tree2, + locale: "en-GB", + path: path(field, 3, 2, 0, 2), + isFeature: true, + result: "enFutMOther", + }} + + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + tag, _ := language.CompactIndex(language.MustParse(tc.locale)) + s := tc.tree.lookup(tag, tc.isFeature, tc.path...) + if s != tc.result { + t.Errorf("got %q; want %q", s, tc.result) + } + }) + } +} + +func path(e ...uint16) []uint16 { return e } + +func TestGen(t *testing.T) { + testCases := []string{"test1", "test2"} + for _, tc := range testCases { + t.Run(tc, func(t *testing.T) { + _, got := loadTestdata(t, tc) + + // Remove sizes that may vary per architecture. + re := regexp.MustCompile("// Size: [0-9]*") + got = re.ReplaceAllLiteral(got, []byte("// Size: xxxx")) + re = regexp.MustCompile("// Total table size [0-9]*") + got = re.ReplaceAllLiteral(got, []byte("// Total table size: xxxx")) + + file := filepath.Join("testdata", tc, "output.go") + if *genOutput { + ioutil.WriteFile(file, got, 0700) + t.SkipNow() + } + + b, err := ioutil.ReadFile(file) + if err != nil { + t.Fatalf("failed to open file: %v", err) + } + if want := string(b); string(got) != want { + t.Log(string(got)) + t.Errorf("files differ") + } + }) + } +} + +func loadTestdata(t *testing.T, test string) (tree *Tree, file []byte) { + b := New("test") + + var d cldr.Decoder + + data, err := d.DecodePath(filepath.Join("testdata", test)) + if err != nil { + t.Fatalf("error decoding testdata: %v", err) + } + + context := Enum("context") + widthMap := func(s string) string { + // Align era with width values. + if r, ok := map[string]string{ + "eraAbbr": "abbreviated", + "eraNarrow": "narrow", + "eraNames": "wide", + }[s]; ok { + s = r + } + return "w" + strings.Title(s) + } + width := EnumFunc("width", widthMap, "abbreviated", "narrow", "wide") + month := Enum("month", "leap7") + relative := EnumFunc("relative", func(s string) string { + x, err := strconv.ParseInt(s, 10, 8) + if err != nil { + log.Fatal("Invalid number:", err) + } + return []string{ + "before1", + "current", + "after1", + }[x+1] + }) + cycleType := EnumFunc("cycleType", func(s string) string { + return "cyc" + strings.Title(s) + }) + r := rand.New(rand.NewSource(0)) + + for _, loc := range data.Locales() { + ldml := data.RawLDML(loc) + x := b.Locale(language.Make(loc)) + + if x := x.Index(ldml.Dates.Calendars); x != nil { + for _, cal := range ldml.Dates.Calendars.Calendar { + x := x.IndexFromType(cal) + if x := x.Index(cal.Months); x != nil { + for _, mc := range cal.Months.MonthContext { + x := x.IndexFromType(mc, context) + for _, mw := range mc.MonthWidth { + x := x.IndexFromType(mw, width) + for _, m := range mw.Month { + x.SetValue(m.Yeartype+m.Type, m, month) + } + } + } + } + if x := x.Index(cal.CyclicNameSets); x != nil { + for _, cns := range cal.CyclicNameSets.CyclicNameSet { + x := x.IndexFromType(cns, cycleType) + for _, cc := range cns.CyclicNameContext { + x := x.IndexFromType(cc, context) + for _, cw := range cc.CyclicNameWidth { + x := x.IndexFromType(cw, width) + for _, c := range cw.CyclicName { + x.SetValue(c.Type, c) + } + } + } + } + } + if x := x.Index(cal.Eras); x != nil { + opts := []Option{width, SharedType()} + if x := x.Index(cal.Eras.EraNames, opts...); x != nil { + for _, e := range cal.Eras.EraNames.Era { + x.IndexFromAlt(e).SetValue(e.Type, e) + } + } + if x := x.Index(cal.Eras.EraAbbr, opts...); x != nil { + for _, e := range cal.Eras.EraAbbr.Era { + x.IndexFromAlt(e).SetValue(e.Type, e) + } + } + if x := x.Index(cal.Eras.EraNarrow, opts...); x != nil { + for _, e := range cal.Eras.EraNarrow.Era { + x.IndexFromAlt(e).SetValue(e.Type, e) + } + } + } + { + // Ensure having more than 2 buckets. + f := x.IndexWithName("filler") + b := make([]byte, maxStrlen) + opt := &options{parent: x} + r.Read(b) + f.setValue("0", string(b), opt) + } + } + } + if x := x.Index(ldml.Dates.Fields); x != nil { + for _, f := range ldml.Dates.Fields.Field { + x := x.IndexFromType(f) + for _, d := range f.DisplayName { + x.Index(d).SetValue("", d) + } + for _, r := range f.Relative { + x.Index(r).SetValue(r.Type, r, relative) + } + for _, rt := range f.RelativeTime { + x := x.Index(rt).IndexFromType(rt) + for _, p := range rt.RelativeTimePattern { + x.SetValue(p.Count, p) + } + } + for _, rp := range f.RelativePeriod { + x.Index(rp).SetValue("", rp) + } + } + } + } + + tree, err = build(b) + if err != nil { + t.Fatal("error building tree:", err) + } + w := gen.NewCodeWriter() + generate(b, tree, w) + generateTestData(b, w) + buf := &bytes.Buffer{} + if _, err = w.WriteGo(buf, "test"); err != nil { + t.Log(buf.String()) + t.Fatal("error generating code:", err) + } + return tree, buf.Bytes() +} diff --git a/vendor/golang.org/x/text/internal/cldrtree/generate.go b/vendor/golang.org/x/text/internal/cldrtree/generate.go new file mode 100644 index 000000000..0f0b5f3be --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/generate.go @@ -0,0 +1,208 @@ +// Copyright 2017 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 cldrtree + +import ( + "bytes" + "fmt" + "io" + "reflect" + "strconv" + "strings" + + "golang.org/x/text/internal/gen" +) + +func generate(b *Builder, t *Tree, w *gen.CodeWriter) error { + fmt.Fprintln(w, `import "golang.org/x/text/internal/cldrtree"`) + fmt.Fprintln(w) + + fmt.Fprintf(w, "var tree = &cldrtree.Tree{locales, indices, buckets}\n\n") + + w.WriteComment("Path values:\n" + b.stats()) + fmt.Fprintln(w) + + // Generate enum types. + for _, e := range b.enums { + // Build enum types. + w.WriteComment("%s specifies a property of a CLDR field.", e.name) + fmt.Fprintf(w, "type %s uint16\n", e.name) + } + + d, err := getEnumData(b) + if err != nil { + return err + } + fmt.Fprintln(w, "const (") + for i, k := range d.keys { + fmt.Fprintf(w, "%s %s = %d // %s\n", toCamel(k), d.enums[i], d.m[k], k) + } + fmt.Fprintln(w, ")") + + w.WriteVar("locales", t.Locales) + w.WriteVar("indices", t.Indices) + + // Generate string buckets. + fmt.Fprintln(w, "var buckets = []string{") + for i := range t.Buckets { + fmt.Fprintf(w, "bucket%d,\n", i) + } + fmt.Fprint(w, "}\n\n") + w.Size += int(reflect.TypeOf("").Size()) * len(t.Buckets) + + // Generate string buckets. + for i, bucket := range t.Buckets { + w.WriteVar(fmt.Sprint("bucket", i), bucket) + } + return nil +} + +func generateTestData(b *Builder, w *gen.CodeWriter) error { + d, err := getEnumData(b) + if err != nil { + return err + } + + fmt.Fprintln(w) + fmt.Fprintln(w, "var enumMap = map[string]uint16{") + fmt.Fprintln(w, `"": 0,`) + for _, k := range d.keys { + fmt.Fprintf(w, "%q: %d,\n", k, d.m[k]) + } + fmt.Fprintln(w, "}") + return nil +} + +func toCamel(s string) string { + p := strings.Split(s, "-") + for i, s := range p[1:] { + p[i+1] = strings.Title(s) + } + return strings.Replace(strings.Join(p, ""), "/", "", -1) +} + +func (b *Builder) stats() string { + w := &bytes.Buffer{} + + b.rootMeta.validate() + for _, es := range b.enums { + fmt.Fprintf(w, "<%s>\n", es.name) + printEnumValues(w, es, 1, nil) + } + fmt.Fprintln(w) + printEnums(w, b.rootMeta.typeInfo, 0) + fmt.Fprintln(w) + fmt.Fprintln(w, "Nr elem: ", len(b.strToBucket)) + fmt.Fprintln(w, "uniqued size: ", b.size) + fmt.Fprintln(w, "total string size: ", b.sizeAll) + fmt.Fprintln(w, "bucket waste: ", b.bucketWaste) + + return w.String() +} + +func printEnums(w io.Writer, s *typeInfo, indent int) { + idStr := strings.Repeat(" ", indent) + "- " + e := s.enum + if e == nil { + if len(s.entries) > 0 { + panic(fmt.Errorf("has entries but no enum values: %#v", s.entries)) + } + return + } + if e.name != "" { + fmt.Fprintf(w, "%s<%s>\n", idStr, e.name) + } else { + printEnumValues(w, e, indent, s) + } + if s.sharedKeys() { + for _, v := range s.entries { + printEnums(w, v, indent+1) + break + } + } +} + +func printEnumValues(w io.Writer, e *enum, indent int, info *typeInfo) { + idStr := strings.Repeat(" ", indent) + "- " + for i := 0; i < len(e.keys); i++ { + fmt.Fprint(w, idStr) + k := e.keys[i] + if u, err := strconv.ParseUint(k, 10, 16); err == nil { + fmt.Fprintf(w, "%s", k) + // Skip contiguous integers + var v, last uint64 + for i++; i < len(e.keys); i++ { + k = e.keys[i] + if v, err = strconv.ParseUint(k, 10, 16); err != nil { + break + } + last = v + } + if u < last { + fmt.Fprintf(w, `..%d`, last) + } + fmt.Fprintln(w) + if err != nil { + fmt.Fprintf(w, "%s%s\n", idStr, k) + } + } else if k == "" { + fmt.Fprintln(w, `""`) + } else { + fmt.Fprintf(w, "%s\n", k) + } + if info != nil && !info.sharedKeys() { + if e := info.entries[enumIndex(i)]; e != nil { + printEnums(w, e, indent+1) + } + } + } +} + +func getEnumData(b *Builder) (*enumData, error) { + d := &enumData{m: map[string]int{}} + if errStr := d.insert(b.rootMeta.typeInfo); errStr != "" { + // TODO: consider returning the error. + return nil, fmt.Errorf("cldrtree: %s", errStr) + } + return d, nil +} + +type enumData struct { + m map[string]int + keys []string + enums []string +} + +func (d *enumData) insert(t *typeInfo) (errStr string) { + e := t.enum + if e == nil { + return "" + } + for i, k := range e.keys { + if _, err := strconv.ParseUint(k, 10, 16); err == nil { + // We don't include any enum that has integer values. + break + } + if v, ok := d.m[k]; ok { + if v != i { + return fmt.Sprintf("%q has value %d and %d", k, i, v) + } + } else { + d.m[k] = i + if k != "" { + d.keys = append(d.keys, k) + d.enums = append(d.enums, e.name) + } + } + } + for i := range t.enum.keys { + if e := t.entries[enumIndex(i)]; e != nil { + if errStr := d.insert(e); errStr != "" { + return fmt.Sprintf("%q>%v", t.enum.keys[i], errStr) + } + } + } + return "" +} diff --git a/vendor/golang.org/x/text/internal/cldrtree/option.go b/vendor/golang.org/x/text/internal/cldrtree/option.go new file mode 100644 index 000000000..f91e250b8 --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/option.go @@ -0,0 +1,86 @@ +// Copyright 2017 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 cldrtree + +import ( + "reflect" + + "golang.org/x/text/unicode/cldr" +) + +// An Option configures an Index. +type Option func(*options) + +type options struct { + parent *Index + + name string + alias *cldr.Common + + sharedType *typeInfo + sharedEnums *enum +} + +func (o *options) fill(opt []Option) { + for _, f := range opt { + f(o) + } +} + +// aliasOpt sets an alias from the given node, if the node defines one. +func (o *options) setAlias(n Element) { + if n != nil && !reflect.ValueOf(n).IsNil() { + o.alias = n.GetCommon() + } +} + +// Enum defines a enumeration type. The resulting option may be passed for the +// construction of multiple Indexes, which they will share the same enum values. +// Calling Gen on a Builder will generate the Enum for the given name. The +// optional values fix the values for the given identifier to the argument +// position (starting at 0). Other values may still be added and will be +// assigned to subsequent values. +func Enum(name string, value ...string) Option { + return EnumFunc(name, nil, value...) +} + +// EnumFunc is like Enum but also takes a function that allows rewriting keys. +func EnumFunc(name string, rename func(string) string, value ...string) Option { + enum := &enum{name: name, rename: rename, keyMap: map[string]enumIndex{}} + for _, e := range value { + enum.lookup(e) + } + return func(o *options) { + found := false + for _, e := range o.parent.meta.b.enums { + if e.name == enum.name { + found = true + break + } + } + if !found { + o.parent.meta.b.enums = append(o.parent.meta.b.enums, enum) + } + o.sharedEnums = enum + } +} + +// SharedType returns an option which causes all Indexes to which this option is +// passed to have the same type. +func SharedType() Option { + info := &typeInfo{} + return func(o *options) { o.sharedType = info } +} + +func useSharedType() Option { + return func(o *options) { + sub := o.parent.meta.typeInfo.keyTypeInfo + if sub == nil { + sub = &typeInfo{} + o.parent.meta.typeInfo.keyTypeInfo = sub + } + o.sharedType = sub + } +} diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml b/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml new file mode 100644 index 000000000..f9d3b5dc8 --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + cM01 + cM02 + cM03 + cM04 + cM05 + cM06 + cM07 + cM08 + cM09 + cM10 + cM11 + cM12 + + + + + + + + + + + + + + + + + + + + gM01 + gM02 + gM03 + gM04 + gM05 + gM06 + gM07 + gM08 + gM09 + gM10 + gM11 + gM12 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go b/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go new file mode 100755 index 000000000..9c17a7d85 --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go @@ -0,0 +1,347 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package test + +import "golang.org/x/text/internal/cldrtree" + +var tree = &cldrtree.Tree{locales, indices, buckets} + +// Path values: +// +// - format +// - stand-alone +// +// - wAbbreviated +// - wNarrow +// - wWide +// +// - leap7 +// - 1..12 +// +// - calendars +// - chinese +// - dangi +// - gregorian +// - months +// - +// - +// - +// - filler +// - 0 +// +// Nr elem: 39 +// uniqued size: 912 +// total string size: 912 +// bucket waste: 0 + +// context specifies a property of a CLDR field. +type context uint16 + +// width specifies a property of a CLDR field. +type width uint16 + +// month specifies a property of a CLDR field. +type month uint16 + +const ( + calendars = 0 // calendars + chinese = 0 // chinese + dangi = 1 // dangi + gregorian = 2 // gregorian + months = 0 // months + filler = 1 // filler + format context = 0 // format + standAlone context = 1 // stand-alone + wAbbreviated width = 0 // wAbbreviated + wNarrow width = 1 // wNarrow + wWide width = 2 // wWide + leap7 month = 0 // leap7 +) + +var locales = []uint32{ // 754 elements + // Entry 0 - 1F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 20 - 3F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 40 - 5F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 60 - 7F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 80 - 9F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry A0 - BF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry C0 - DF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry E0 - FF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 100 - 11F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 120 - 13F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 140 - 15F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 160 - 17F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 180 - 19F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 1A0 - 1BF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 1C0 - 1DF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 1E0 - 1FF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 200 - 21F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 220 - 23F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 240 - 25F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 260 - 27F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 280 - 29F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 2A0 - 2BF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 2C0 - 2DF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 2E0 - 2FF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, +} // Size: xxxx bytes + +var indices = []uint16{ // 86 elements + // Entry 0 - 3F + 0x0001, 0x0002, 0x0003, 0x0006, 0x0021, 0x0027, 0x0002, 0x0009, + 0x001e, 0x0001, 0x000b, 0x0003, 0x8002, 0x8002, 0x000f, 0x000d, + 0x0000, 0xffff, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, + 0x001e, 0x0023, 0x0028, 0x002d, 0x0032, 0x0037, 0x0001, 0x0000, + 0x003c, 0x0002, 0x9000, 0x0024, 0x0001, 0x0000, 0x013b, 0x0002, + 0x002a, 0x0053, 0x0002, 0x002d, 0x0040, 0x0003, 0x8002, 0x9001, + 0x0031, 0x000d, 0x0000, 0xffff, 0x023a, 0x023f, 0x0244, 0x0249, + 0x024e, 0x0253, 0x0258, 0x025d, 0x0262, 0x0267, 0x026c, 0x0271, + // Entry 40 - 7F + 0x0003, 0x9000, 0x0044, 0x9000, 0x000d, 0x0000, 0xffff, 0x0276, + 0x0278, 0x027a, 0x027c, 0x027e, 0x0280, 0x0282, 0x0284, 0x0286, + 0x0288, 0x028b, 0x028e, 0x0001, 0x0000, 0x0291, +} // Size: xxxx bytes + +var buckets = []string{ + bucket0, +} + +var bucket0 string = "" + // Size: xxxx bytes + "\x04cM01\x04cM02\x04cM03\x04cM04\x04cM05\x04cM06\x04cM07\x04cM08\x04cM09" + + "\x04cM10\x04cM11\x04cM12\xfe\x01\x94\xfd\xc2\xfa/\xfc\xc0A\xd3\xff\x12" + + "\x04[s\xc8nO\xf9_\xf6b\xa5\xee\xe8*\xbd\xf4J-\x0bu\xfb\x18\x0d\xafH\xa7" + + "\x9e\xe0\xb1\x0d9FQ\x85\x0fԡx\x89.\xe2\x85\xec\xe1Q\x14Ux\x08u\xd6N\xe2" + + "\xd3\xd0\xd0\xdek\xf8\xf9\xb4L\xe8_\xf0DƱ\xf8;\x8e\x88;\xbf\x85z\xab\x99" + + "ŲR\xc7B\x9c2\U000e8bb7\x9e\xf8V\xf6Y\xc1\x8f\x0d\xce\xccw\xc7^z\x81\xbf" + + "\xde'_g\xcf\xe2B\xcf<\xc3T\xf3\xed\xe2־\xccN\xa3\xae^\x88Rj\x9fJW\x8b˞" + + "\xf2ԦS\x14v\x8dm)\x97a\xea\x9eOZ\xa6\xae\xc3\xfcxƪ\xe0\x81\xac\x81 \xc7 " + + "\xef\xcdlꄶ\x92^`{\xe0cqo\x96\xdd\xcd\xd0\x1du\x04\\?\x00\x0f\x8ayk\xcelQ" + + ",8\x01\xaa\xca\xee߭[Pfd\xe8\xc0\xe4\xa7q\xecื\xc1\x96]\x91\x81%\x1b|\x9c" + + "\x9c\xa5 Z\xfc\x16\xa26\xa2\xef\xcd\xd2\xd1-*y\xd0\xfet\xa8(\x0a\xe9C" + + "\x9e\xb0֮\xca\x08#\xae\x02\xd6}\x86j\xc2\xc4\xfeJrPS\xda\x11\x9b\x9dOQQ@" + + "\xa2\xd7#\x9c@\xb4ZÕ\x0d\x94\x1f\xc4\xfe\x1c\x0c\xb9j\xd3\x22\xd6\x22" + + "\x82)_\xbf\xe1\x1e&\xa43\x07m\xb5\xc1DL:4\xd3*\\J\x7f\xfb\xe8с\xf7\xed;" + + "\x8c\xfe\x90O\x93\xf8\xf0m)\xbc\xd9\xed\x84{\x18.\x04d\x10\xf4Kİ\xf3\xf0" + + ":\x0d\x06\x82\x0a0\xf2W\xf8\x11A0g\x8a\xc0E\x86\xc1\xe3\xc94,\x8b\x80U" + + "\xc4f؆D\x1d%\x99\x06͉֚K\x96\x8a\xe9\xf0띖\\\xe6\xa4i + + + + + + + BE + + + + + + + + + + + + + + + + + chineseWideM01 + chineseWideM02 + chineseWideM03 + chineseWideM04 + chineseWideM05 + chineseWideM06 + chineseWideM07 + chineseWideM08 + chineseWideM09 + chineseWideM10 + chineseWideM11 + chineseWideM12 + + + + + + + + chineseNarrowM1 + chineseNarrowM2 + chineseNarrowM3 + chineseNarrowM4 + chineseNarrowM5 + chineseNarrowM6 + chineseNarrowM7 + chineseNarrowM8 + chineseNarrowM9 + chineseNarrowM10 + chineseNarrowM11 + chineseNarrowM12 + + + + + + + + + + + + dpAbbr1 + dpAbbr2 + dpAbbr3 + dpAbbr4 + dpAbbr5 + dpAbbr6 + dpAbbr7 + dpAbbr8 + dpAbbr9 + dpAbbr10 + dpAbbr11 + dpAbbr12 + + + + + + + + + + + + + + + + + + + year1 + year2 + year3 + year4 + year5 + year6 + year7 + year8 + year9 + year10 + year11 + year12 + year13 + year14 + year15 + year16 + year17 + year18 + year19 + year20 + year21 + year22 + year23 + year24 + year25 + year26 + year27 + year28 + year29 + year30 + year31 + year32 + year33 + year34 + year35 + year36 + year37 + year38 + year39 + year40 + year41 + year42 + year43 + year44 + year45 + year46 + year47 + year48 + year49 + year50 + year51 + year52 + year53 + year54 + year55 + year56 + year57 + year58 + year59 + year60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + + + + ERA0 + ERA1 + + + + + + + + + + + + + + + + ERA0 + + + + + + + + + + + + + + + + + genWideM01 + genWideM02 + genWideM03 + genWideM04 + genWideM05 + genWideM06 + genWideM07 + genWideM08 + genWideM09 + genWideM10 + genWideM11 + genWideM12 + + + + + + + + genNarrowM1 + genNarrowM2 + genNarrowM3 + genNarrowM4 + genNarrowM5 + genNarrowM6 + genNarrowM7 + genNarrowM8 + genNarrowM9 + genNarrowM10 + genNarrowM11 + genNarrowM12 + + + + + + + + + + + + ERA0 + ERA1 + + + + + + + + + + + + + + + + + gregWideM01 + gregWideM02 + gregWideM03 + gregWideM04 + gregWideM05 + gregWideM06 + gregWideM07 + gregWideM08 + gregWideM09 + gregWideM10 + gregWideM11 + gregWideM12 + + + + + + + + gregNarrowM1 + gregNarrowM2 + gregNarrowM3 + gregNarrowM4 + gregNarrowM5 + gregNarrowM6 + gregNarrowM7 + gregNarrowM8 + gregNarrowM9 + gregNarrowM10 + gregNarrowM11 + gregNarrowM12 + + + + + + + + + + + + BCE + CE + + + + + + + + + + + + + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + + + + AM + + + + + + + + + + + + islAbbr1 + islAbbr2 + islAbbr3 + islAbbr4 + islAbbr5 + islAbbr6 + islAbbr7 + islAbbr8 + islAbbr9 + islAbbr10 + islAbbr11 + islAbbr12 + + + + + + islWide1 + islWide2 + islWide3 + islWide4 + islWide5 + islWide6 + islWide7 + islWide8 + islWide9 + islWide10 + islWide11 + islWide12 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + AH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + AP + + + + + + + + + + Era + + + + + + + + + Month + last month + this month + next month + + +{0} m + + + -{0} m + + + + + + + + + + + diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go new file mode 100755 index 000000000..4b00e0600 --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go @@ -0,0 +1,886 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package test + +import "golang.org/x/text/internal/cldrtree" + +var tree = &cldrtree.Tree{locales, indices, buckets} + +// Path values: +// +// - wAbbreviated +// - wNarrow +// - wWide +// +// - format +// - stand-alone +// +// - leap7 +// - 1..13 +// +// - cycDayParts +// - cycDays +// - cycMonths +// - cycYears +// - cycZodiacs +// +// - before1 +// - current +// - after1 +// +// - calendars +// - buddhist +// - chinese +// - dangi +// - ethiopic +// - ethiopic-amete-alem +// - generic +// - gregorian +// - hebrew +// - islamic +// - islamic-civil +// - islamic-rgsa +// - islamic-tbla +// - islamic-umalqura +// - persian +// - months +// - +// - +// - +// - eras +// - +// - "" +// - variant +// - 0..1 +// - filler +// - 0 +// - cyclicNameSets +// - +// - +// - +// - 0..60 +// - fields +// - era +// - era-short +// - era-narrow +// - month +// - month-short +// - month-narrow +// - displayName +// - "" +// - relative +// - +// - relativeTime +// - future +// - past +// - other +// - one +// - two +// +// Nr elem: 394 +// uniqued size: 9778 +// total string size: 9931 +// bucket waste: 0 + +// width specifies a property of a CLDR field. +type width uint16 + +// context specifies a property of a CLDR field. +type context uint16 + +// month specifies a property of a CLDR field. +type month uint16 + +// cycleType specifies a property of a CLDR field. +type cycleType uint16 + +// relative specifies a property of a CLDR field. +type relative uint16 + +const ( + calendars = 0 // calendars + fields = 1 // fields + buddhist = 0 // buddhist + chinese = 1 // chinese + dangi = 2 // dangi + ethiopic = 3 // ethiopic + ethiopicAmeteAlem = 4 // ethiopic-amete-alem + generic = 5 // generic + gregorian = 6 // gregorian + hebrew = 7 // hebrew + islamic = 8 // islamic + islamicCivil = 9 // islamic-civil + islamicRgsa = 10 // islamic-rgsa + islamicTbla = 11 // islamic-tbla + islamicUmalqura = 12 // islamic-umalqura + persian = 13 // persian + months = 0 // months + eras = 1 // eras + filler = 2 // filler + cyclicNameSets = 3 // cyclicNameSets + format context = 0 // format + standAlone context = 1 // stand-alone + wAbbreviated width = 0 // wAbbreviated + wNarrow width = 1 // wNarrow + wWide width = 2 // wWide + leap7 month = 0 // leap7 + variant = 1 // variant + cycDayParts cycleType = 0 // cycDayParts + cycDays cycleType = 1 // cycDays + cycMonths cycleType = 2 // cycMonths + cycYears cycleType = 3 // cycYears + cycZodiacs cycleType = 4 // cycZodiacs + era = 0 // era + eraShort = 1 // era-short + eraNarrow = 2 // era-narrow + month = 3 // month + monthShort = 4 // month-short + monthNarrow = 5 // month-narrow + displayName = 0 // displayName + relative = 1 // relative + relativeTime = 2 // relativeTime + before1 relative = 0 // before1 + current relative = 1 // current + after1 relative = 2 // after1 + future = 0 // future + past = 1 // past + other = 0 // other + one = 1 // one + two = 2 // two +) + +var locales = []uint32{ // 754 elements + // Entry 0 - 1F + 0x00000000, 0x00000000, 0x0000027a, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 20 - 3F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 40 - 5F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 60 - 7F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 80 - 9F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x0000027a, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000027a, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000027a, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + // Entry A0 - BF + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x000003dd, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000027a, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000027a, 0x0000037f, 0x0000027a, 0x0000037f, + // Entry C0 - DF + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000027a, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + // Entry E0 - FF + 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000027a, 0x0000027a, 0x0000037f, 0x0000037f, + 0x0000027a, 0x0000037f, 0x0000037f, 0x0000037f, + 0x0000037f, 0x0000037f, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 100 - 11F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 120 - 13F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 140 - 15F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 160 - 17F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 180 - 19F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 1A0 - 1BF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 1C0 - 1DF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 1E0 - 1FF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 200 - 21F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 220 - 23F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 240 - 25F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 260 - 27F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 280 - 29F + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 2A0 - 2BF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 2C0 - 2DF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + // Entry 2E0 - 2FF + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, +} // Size: xxxx bytes + +var indices = []uint16{ // 1070 elements + // Entry 0 - 3F + 0x0002, 0x0003, 0x0259, 0x000e, 0x0012, 0x0022, 0x00b9, 0x00c1, + 0x00fd, 0x010d, 0x0147, 0x0181, 0x01bc, 0x0204, 0x020b, 0x0212, + 0x0219, 0x0220, 0x0003, 0x9005, 0x0016, 0x001f, 0x0003, 0x001a, + 0x8000, 0x8000, 0x0001, 0x001c, 0x0001, 0x0000, 0x0000, 0x0001, + 0x0000, 0x0003, 0x0004, 0x0027, 0x0000, 0x00b6, 0x0050, 0x0002, + 0x002a, 0x003d, 0x0003, 0x8002, 0x9001, 0x002e, 0x000d, 0x0000, + 0xffff, 0x0102, 0x0111, 0x0120, 0x012f, 0x013e, 0x014d, 0x015c, + 0x016b, 0x017a, 0x0189, 0x0198, 0x01a7, 0x0003, 0x9000, 0x0041, + // Entry 40 - 7F + 0x9000, 0x000d, 0x0000, 0xffff, 0x01b6, 0x01c6, 0x01d6, 0x01e6, + 0x01f6, 0x0206, 0x0216, 0x0226, 0x0236, 0x0246, 0x0257, 0x0268, + 0x0005, 0x0056, 0x8003, 0x8003, 0x006b, 0x00b0, 0x0001, 0x0058, + 0x0003, 0x005c, 0x8000, 0x8000, 0x000d, 0x0000, 0xffff, 0x0279, + 0x0281, 0x0289, 0x0291, 0x0299, 0x02a1, 0x02a9, 0x02b1, 0x02b9, + 0x02c1, 0x02ca, 0x02d3, 0x0001, 0x006d, 0x0003, 0x0071, 0x8000, + 0x8000, 0x003d, 0x0000, 0xffff, 0x02dc, 0x02e2, 0x02e8, 0x02ee, + 0x02f4, 0x02fa, 0x0300, 0x0306, 0x030c, 0x0312, 0x0319, 0x0320, + // Entry 80 - BF + 0x0327, 0x032e, 0x0335, 0x033c, 0x0343, 0x034a, 0x0351, 0x0358, + 0x035f, 0x0366, 0x036d, 0x0374, 0x037b, 0x0382, 0x0389, 0x0390, + 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, 0x03ba, 0x03c1, 0x03c8, + 0x03cf, 0x03d6, 0x03dd, 0x03e4, 0x03eb, 0x03f2, 0x03f9, 0x0400, + 0x0407, 0x040e, 0x0415, 0x041c, 0x0423, 0x042a, 0x0431, 0x0438, + 0x043f, 0x0446, 0x044d, 0x0454, 0x045b, 0x0462, 0x0469, 0x0470, + 0x0001, 0x00b2, 0x0003, 0xa000, 0x8000, 0x8000, 0x0001, 0x0000, + 0x0477, 0x0004, 0x9001, 0x0000, 0x00be, 0x9001, 0x0001, 0x0000, + // Entry C0 - FF + 0x0576, 0x0003, 0x00c5, 0x00f0, 0x00fa, 0x0002, 0x00c8, 0x00dc, + 0x0003, 0x8002, 0x9001, 0x00cc, 0x000e, 0x0000, 0xffff, 0x0675, + 0x067e, 0x0685, 0x068b, 0x0692, 0x0696, 0x069e, 0x06a6, 0x06ad, + 0x06b4, 0x06b9, 0x06bf, 0x06c7, 0x0003, 0x9000, 0x00e0, 0x9000, + 0x000e, 0x0000, 0xffff, 0x06cf, 0x06d1, 0x06d3, 0x06d5, 0x06d7, + 0x06d9, 0x06db, 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, 0x06ea, + 0x0003, 0x00f4, 0x8000, 0x8000, 0x0001, 0x00f6, 0x0002, 0x0000, + 0x06ed, 0x06f2, 0x0001, 0x0000, 0x06f7, 0x0003, 0x9003, 0x0101, + // Entry 100 - 13F + 0x010a, 0x0003, 0x0105, 0x8000, 0x8000, 0x0001, 0x0107, 0x0001, + 0x0000, 0x06ed, 0x0001, 0x0000, 0x07f6, 0x0003, 0x0111, 0x013a, + 0x0144, 0x0002, 0x0114, 0x0127, 0x0003, 0x8002, 0x9001, 0x0118, + 0x000d, 0x0000, 0xffff, 0x08f5, 0x0900, 0x090b, 0x0916, 0x0921, + 0x092c, 0x0937, 0x0942, 0x094d, 0x0958, 0x0963, 0x096e, 0x0003, + 0x9000, 0x012b, 0x9000, 0x000d, 0x0000, 0xffff, 0x0979, 0x0985, + 0x0991, 0x099d, 0x09a9, 0x09b5, 0x09c1, 0x09cd, 0x09d9, 0x09e5, + 0x09f2, 0x09ff, 0x0003, 0x013e, 0x8000, 0x8000, 0x0001, 0x0140, + // Entry 140 - 17F + 0x0002, 0x0000, 0x06ed, 0x06f2, 0x0001, 0x0000, 0x0a0c, 0x0003, + 0x014b, 0x0174, 0x017e, 0x0002, 0x014e, 0x0161, 0x0003, 0x8002, + 0x9001, 0x0152, 0x000d, 0x0000, 0xffff, 0x0b0b, 0x0b17, 0x0b23, + 0x0b2f, 0x0b3b, 0x0b47, 0x0b53, 0x0b5f, 0x0b6b, 0x0b77, 0x0b83, + 0x0b8f, 0x0003, 0x9000, 0x0165, 0x9000, 0x000d, 0x0000, 0xffff, + 0x0b9b, 0x0ba8, 0x0bb5, 0x0bc2, 0x0bcf, 0x0bdc, 0x0be9, 0x0bf6, + 0x0c03, 0x0c10, 0x0c1e, 0x0c2c, 0x0003, 0x0178, 0x8000, 0x8000, + 0x0001, 0x017a, 0x0002, 0x0000, 0x0c3a, 0x0c3e, 0x0001, 0x0000, + // Entry 180 - 1BF + 0x0c41, 0x0003, 0x0185, 0x01b0, 0x01b9, 0x0002, 0x0188, 0x019c, + 0x0003, 0x8002, 0x9001, 0x018c, 0x000e, 0x0000, 0x0d6f, 0x0d40, + 0x0d47, 0x0d4f, 0x0d56, 0x0d5c, 0x0d63, 0x0d6a, 0x0d77, 0x0d7d, + 0x0d82, 0x0d88, 0x0d8e, 0x0d91, 0x0003, 0x9000, 0x01a0, 0x9000, + 0x000e, 0x0000, 0x06db, 0x06cf, 0x06d1, 0x06d3, 0x06d5, 0x06d7, + 0x06d9, 0x06db, 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, 0x06ea, + 0x0003, 0x01b4, 0x8000, 0x8000, 0x0001, 0x01b6, 0x0001, 0x0000, + 0x0d96, 0x0001, 0x0000, 0x0d99, 0x0003, 0x01c0, 0x01f8, 0x0201, + // Entry 1C0 - 1FF + 0x0002, 0x01c3, 0x01e5, 0x0003, 0x01c7, 0x9001, 0x01d6, 0x000d, + 0x0000, 0xffff, 0x0e98, 0x0ea1, 0x0eaa, 0x0eb3, 0x0ebc, 0x0ec5, + 0x0ece, 0x0ed7, 0x0ee0, 0x0ee9, 0x0ef3, 0x0efd, 0x000d, 0x0000, + 0xffff, 0x0f07, 0x0f10, 0x0f19, 0x0f22, 0x0f2b, 0x0f34, 0x0f3d, + 0x0f46, 0x0f4f, 0x0f58, 0x0f62, 0x0f6c, 0x0003, 0x9000, 0x01e9, + 0x9000, 0x000d, 0x0000, 0xffff, 0x06cf, 0x06d1, 0x06d3, 0x06d5, + 0x06d7, 0x06d9, 0x06db, 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, + 0x0003, 0x01fc, 0x8000, 0x8000, 0x0001, 0x01fe, 0x0001, 0x0000, + // Entry 200 - 23F + 0x0f76, 0x0001, 0x0000, 0x0f79, 0x0003, 0x9008, 0x9008, 0x0208, + 0x0001, 0x0000, 0x1078, 0x0003, 0x9008, 0x9008, 0x020f, 0x0001, + 0x0000, 0x1177, 0x0003, 0x9008, 0x0000, 0x0216, 0x0001, 0x0000, + 0x1276, 0x0003, 0x9008, 0x0000, 0x021d, 0x0001, 0x0000, 0x1375, + 0x0003, 0x0224, 0x024d, 0x0256, 0x0002, 0x0227, 0x023a, 0x0003, + 0x8002, 0x9001, 0x022b, 0x000d, 0x0000, 0xffff, 0x1474, 0x147e, + 0x148a, 0x1492, 0x1496, 0x149d, 0x14a7, 0x14ac, 0x14b1, 0x14b6, + 0x14ba, 0x14c1, 0x0003, 0x9000, 0x023e, 0x9000, 0x000d, 0x0000, + // Entry 240 - 27F + 0xffff, 0x06cf, 0x06d1, 0x06d3, 0x06d5, 0x06d7, 0x06d9, 0x06db, + 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, 0x0003, 0x0251, 0x8000, + 0x8000, 0x0001, 0x0253, 0x0001, 0x0000, 0x14c8, 0x0001, 0x0000, + 0x14cb, 0x0006, 0x0260, 0x8000, 0x8001, 0x0265, 0x8003, 0x8004, + 0x0001, 0x0262, 0x0001, 0x0000, 0x15ca, 0x0003, 0x0269, 0x026c, + 0x0271, 0x0001, 0x0000, 0x15ce, 0x0003, 0x0000, 0x15d4, 0x15df, + 0x15ea, 0x0002, 0x0274, 0x0277, 0x0001, 0x0000, 0x15f5, 0x0001, + 0x0000, 0x15fc, 0x0002, 0x0003, 0x00cc, 0x0009, 0x000d, 0x001b, + // Entry 280 - 2BF + 0x0000, 0x0000, 0x0000, 0x0060, 0x0067, 0x00b0, 0x00be, 0x0003, + 0x0000, 0x0011, 0x0018, 0x0001, 0x0013, 0x0001, 0x0015, 0x0001, + 0x0000, 0x0000, 0x0001, 0x0000, 0x1603, 0x0004, 0x0020, 0x0000, + 0x005d, 0x0044, 0x0001, 0x0022, 0x0003, 0x0026, 0x0000, 0x0035, + 0x000d, 0x0000, 0xffff, 0x1702, 0x1706, 0x170a, 0x170e, 0x1712, + 0x1716, 0x171a, 0x171e, 0x1722, 0x1726, 0x172b, 0x1730, 0x000d, + 0x0000, 0xffff, 0x1735, 0x1741, 0x174e, 0x175a, 0x1767, 0x1773, + 0x177f, 0x178d, 0x179a, 0x17a6, 0x17b2, 0x17c1, 0x0005, 0x0000, + // Entry 2C0 - 2FF + 0x0000, 0x0000, 0x0000, 0x004a, 0x0001, 0x004c, 0x0001, 0x004e, + 0x000d, 0x0000, 0xffff, 0x17cf, 0x17d3, 0x17d6, 0x17dc, 0x17e3, + 0x17ea, 0x17f0, 0x17f6, 0x17fb, 0x1802, 0x180a, 0x180e, 0x0001, + 0x0000, 0x1812, 0x0003, 0x0000, 0x0000, 0x0064, 0x0001, 0x0000, + 0x1911, 0x0003, 0x006b, 0x0093, 0x00ad, 0x0002, 0x006e, 0x0081, + 0x0003, 0x0000, 0x0000, 0x0072, 0x000d, 0x0000, 0xffff, 0x1a10, + 0x1a19, 0x1a22, 0x1a2b, 0x1a34, 0x1a3d, 0x1a46, 0x1a4f, 0x1a58, + 0x1a61, 0x1a6b, 0x1a75, 0x0002, 0x0000, 0x0084, 0x000d, 0x0000, + // Entry 300 - 33F + 0xffff, 0x1a7f, 0x1a8a, 0x1a95, 0x1aa0, 0x1aab, 0x1ab6, 0xffff, + 0x1ac1, 0x1acc, 0x1ad7, 0x1ae3, 0x1aef, 0x0003, 0x00a2, 0x0000, + 0x0097, 0x0002, 0x009a, 0x009e, 0x0002, 0x0000, 0x1afb, 0x1b1b, + 0x0002, 0x0000, 0x1b09, 0x1b27, 0x0002, 0x00a5, 0x00a9, 0x0002, + 0x0000, 0x1b32, 0x1b35, 0x0002, 0x0000, 0x0c3a, 0x0c3e, 0x0001, + 0x0000, 0x1b38, 0x0003, 0x0000, 0x00b4, 0x00bb, 0x0001, 0x00b6, + 0x0001, 0x00b8, 0x0001, 0x0000, 0x0d96, 0x0001, 0x0000, 0x1c37, + 0x0003, 0x0000, 0x00c2, 0x00c9, 0x0001, 0x00c4, 0x0001, 0x00c6, + // Entry 340 - 37F + 0x0001, 0x0000, 0x0f76, 0x0001, 0x0000, 0x1d36, 0x0005, 0x00d2, + 0x0000, 0x0000, 0x00d7, 0x00ee, 0x0001, 0x00d4, 0x0001, 0x0000, + 0x1e35, 0x0003, 0x00db, 0x00de, 0x00e3, 0x0001, 0x0000, 0x1e39, + 0x0003, 0x0000, 0x15d4, 0x15df, 0x15ea, 0x0002, 0x00e6, 0x00ea, + 0x0002, 0x0000, 0x1e49, 0x1e3f, 0x0002, 0x0000, 0x1e60, 0x1e55, + 0x0003, 0x00f2, 0x00f5, 0x00fa, 0x0001, 0x0000, 0x1e6d, 0x0003, + 0x0000, 0x1e71, 0x1e7a, 0x1e83, 0x0002, 0x00fd, 0x0101, 0x0002, + 0x0000, 0x1e9b, 0x1e8c, 0x0002, 0x0000, 0x1ebc, 0x1eac, 0x0002, + // Entry 380 - 3BF + 0x0003, 0x0033, 0x0007, 0x0000, 0x000b, 0x0000, 0x0000, 0x0000, + 0x0025, 0x002c, 0x0003, 0x000f, 0x0000, 0x0022, 0x0001, 0x0011, + 0x0001, 0x0013, 0x000d, 0x0000, 0xffff, 0x1ece, 0x1ed9, 0x1ee4, + 0x1eef, 0x1efa, 0x1f05, 0x1f10, 0x1f1b, 0x1f26, 0x1f31, 0x1f3d, + 0x1f49, 0x0001, 0x0001, 0x0000, 0x0003, 0x0000, 0x0000, 0x0029, + 0x0001, 0x0001, 0x00ff, 0x0003, 0x0000, 0x0000, 0x0030, 0x0001, + 0x0001, 0x01fe, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x003a, + 0x004b, 0x0003, 0x003e, 0x0000, 0x0041, 0x0001, 0x0001, 0x02fd, + // Entry 3C0 - 3FF + 0x0002, 0x0044, 0x0048, 0x0002, 0x0001, 0x0310, 0x0300, 0x0001, + 0x0001, 0x0322, 0x0003, 0x004f, 0x0000, 0x0052, 0x0001, 0x0001, + 0x02fd, 0x0002, 0x0055, 0x005a, 0x0003, 0x0001, 0x0357, 0x0335, + 0x0346, 0x0002, 0x0001, 0x037c, 0x036a, 0x0001, 0x0002, 0x0009, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0000, + 0x004a, 0x0003, 0x0010, 0x0000, 0x0047, 0x0002, 0x0013, 0x0035, + 0x0003, 0x0017, 0x0000, 0x0026, 0x000d, 0x0001, 0xffff, 0x0390, + 0x0399, 0x03a2, 0x03ab, 0x03b4, 0x03bd, 0x03c6, 0x03cf, 0x03d8, + // Entry 400 - 43F + 0x03e1, 0x03eb, 0x03f5, 0x000d, 0x0001, 0xffff, 0x03ff, 0x0408, + 0x0411, 0x041a, 0x0423, 0x042c, 0x0435, 0x043e, 0x0447, 0x0450, + 0x045a, 0x0464, 0x0002, 0x0000, 0x0038, 0x000d, 0x0001, 0xffff, + 0x046e, 0x0479, 0x0484, 0xffff, 0x048f, 0x049a, 0xffff, 0x04a5, + 0x04b0, 0x04bb, 0x04c7, 0x04d3, 0x0001, 0x0001, 0x04df, 0x0003, + 0x0000, 0x0000, 0x004e, 0x0001, 0x0001, 0x05de, +} // Size: xxxx bytes + +var buckets = []string{ + bucket0, + bucket1, +} + +var bucket0 string = "" + // Size: xxxx bytes + "\x02BE\xfe\x01\x94\xfd\xc2\xfa/\xfc\xc0A\xd3\xff\x12\x04[s\xc8nO\xf9_" + + "\xf6b\xa5\xee\xe8*\xbd\xf4J-\x0bu\xfb\x18\x0d\xafH\xa7\x9e\xe0\xb1\x0d9F" + + "Q\x85\x0fԡx\x89.\xe2\x85\xec\xe1Q\x14Ux\x08u\xd6N\xe2\xd3\xd0\xd0\xdek" + + "\xf8\xf9\xb4L\xe8_\xf0DƱ\xf8;\x8e\x88;\xbf\x85z\xab\x99ŲR\xc7B\x9c2" + + "\U000e8bb7\x9e\xf8V\xf6Y\xc1\x8f\x0d\xce\xccw\xc7^z\x81\xbf\xde'_g\xcf" + + "\xe2B\xcf<\xc3T\xf3\xed\xe2־\xccN\xa3\xae^\x88Rj\x9fJW\x8b˞\xf2ԦS\x14v" + + "\x8dm)\x97a\xea\x9eOZ\xa6\xae\xc3\xfcxƪ\xe0\x81\xac\x81 \xc7 \xef\xcdlꄶ" + + "\x92^`{\xe0cqo\x96\xdd\xcd\xd0\x1du\x04\\?\x00\x0f\x8ayk\xcelQ,8\x01\xaa" + + "\xca\xee߭[Pfd\xe8\xc0\xe4\xa7q\xecื\xc1\x96]\x91\x81%\x1b|\x9c\x9c\xa5 Z" + + "\xfc\x16\xa26\xa2\xef\xcd\xd2\xd1-*y\xd0\x0echineseWideM01\x0echineseWid" + + "eM02\x0echineseWideM03\x0echineseWideM04\x0echineseWideM05\x0echineseWid" + + "eM06\x0echineseWideM07\x0echineseWideM08\x0echineseWideM09\x0echineseWid" + + "eM10\x0echineseWideM11\x0echineseWideM12\x0fchineseNarrowM1\x0fchineseNa" + + "rrowM2\x0fchineseNarrowM3\x0fchineseNarrowM4\x0fchineseNarrowM5\x0fchine" + + "seNarrowM6\x0fchineseNarrowM7\x0fchineseNarrowM8\x0fchineseNarrowM9\x10c" + + "hineseNarrowM10\x10chineseNarrowM11\x10chineseNarrowM12\x07dpAbbr1\x07dp" + + "Abbr2\x07dpAbbr3\x07dpAbbr4\x07dpAbbr5\x07dpAbbr6\x07dpAbbr7\x07dpAbbr8" + + "\x07dpAbbr9\x08dpAbbr10\x08dpAbbr11\x08dpAbbr12\x05year1\x05year2\x05yea" + + "r3\x05year4\x05year5\x05year6\x05year7\x05year8\x05year9\x06year10\x06ye" + + "ar11\x06year12\x06year13\x06year14\x06year15\x06year16\x06year17\x06year" + + "18\x06year19\x06year20\x06year21\x06year22\x06year23\x06year24\x06year25" + + "\x06year26\x06year27\x06year28\x06year29\x06year30\x06year31\x06year32" + + "\x06year33\x06year34\x06year35\x06year36\x06year37\x06year38\x06year39" + + "\x06year40\x06year41\x06year42\x06year43\x06year44\x06year45\x06year46" + + "\x06year47\x06year48\x06year49\x06year50\x06year51\x06year52\x06year53" + + "\x06year54\x06year55\x06year56\x06year57\x06year58\x06year59\x06year60" + + "\xfet\xa8(\x0a\xe9C\x9e\xb0֮\xca\x08#\xae\x02\xd6}\x86j\xc2\xc4\xfeJrPS" + + "\xda\x11\x9b\x9dOQQ@\xa2\xd7#\x9c@\xb4ZÕ\x0d\x94\x1f\xc4\xfe\x1c\x0c\xb9" + + "j\xd3\x22\xd6\x22\x82)_\xbf\xe1\x1e&\xa43\x07m\xb5\xc1DL:4\xd3*\\J\x7f" + + "\xfb\xe8с\xf7\xed;\x8c\xfe\x90O\x93\xf8\xf0m)\xbc\xd9\xed\x84{\x18.\x04d" + + "\x10\xf4Kİ\xf3\xf0:\x0d\x06\x82\x0a0\xf2W\xf8\x11A0g\x8a\xc0E\x86\xc1" + + "\xe3\xc94,\x8b\x80U\xc4f؆D\x1d%\x99\x06͉֚K\x96\x8a\xe9\xf0띖\\\xe6\xa4i\x86Nm\xac" + + "\x1a\xac\xb8\x87\xbd\x03\x01裑:\xact%\xd2٦\xf6\xee+T\x93\xac\xb09\xac(E" + + "\xeb\x0e\xfa.\xdd\x0a<\xf9k\xa9z\xd7\x1d\xae\x00U`\xab\xa2\xa2\x00z\x0f" + + "\xa0Hc\xcbiF\x9f\x94\xa3n\x89\x1e9\xad\xcb̛^4\xca(\x13\xd1\xd7CZ\xc8\xfc" + + "\xacv\xa8\x96T<}\xcdn\xd0F\x01\x1f3\x0b\xcc\xe8H\x0d4&\x8eg$\x02q\xe3M" + + "\xd9\x13\xd5\xfd\xe1d\xa1\xe0\x14\xc9\x17ދ\xd4q\xb8\xe7\x0bww\x0b\x05h" + + "\x022k8?n:\x11^\xc9\\\xb3\x01\xc7y2\x1d9\x1a\x140\xdaR\x8d,\xfe\xf0;po" + + "\x9d\x12T\x96\x90\x9b\xa8\xeex\x04\xc1\x98L,C\xb6\x89\xb53\xddƇVZ\xf5i" + + "\xfcg7\x9e\xac\xb2F9\xeczw*\x17N Y\x8fg\xbc\xb5\xebfn\xef\xcd\xe0ʇ'\xad" + + "\xfa\xb2WB\x8a\x8f2\xa8˄l\xff\xe5:-\xe15\xb4\xfe/\x0di^+\xc6\xe7\x07\xc0" + + "\xafi\x17\x88\x10\xcay\xf4.x@!LxF\x06\xab\x9b_!\xf3N\x9d\xae\x83Z?\xa8" + + "\x01\xf0{錒'>\xc6D\x7fW\xe7\x89\x18r_/X\xfd\x9d\x04\x07\x14L\xce*^}kz\xae" + + "\x1b\x9cPg\x89\x0e\x05toS\xf5g\xd4VlA\xdb\xc1:\x092\x88\xf5\xd0\xe6\x00" + + "\x1dp\x90m\x80x\x9ek:\xf6e\xa9\x12\xb8\xfb\xbfx\xf6\x86\x1dm\xb48g\x97#" + + "\xf3\xf1\xc5s\x1e\xfeh\xce\x19Cӽ\x8b\xe3\x08\xac\xd4D0\xf6}\xfbj\xfd\xf5" + + "\x22{\x8f\xf1\x0d\x87\xcf~\xeb\x0e\xbc\x03\x1d\xf9\x1c\xbcE\xad\xc6gz" + + "\x971\x11+j\xe9\x85\xe0\xfe\xc5FУ\x8d\xe1=~p\x9e1(\x89\x89\xc7l\xbd\x90" + + "\xd2h\xb35\xf0\xd2A\xf7o@KT}\xc4^=`\xe4\xa1\\\x00nNK\x86&j`\x95)\x88\xf6" + + "\xb1O\xde\x11\x92\x9e\xe5\x9b S\xcfV\x04\xdf\x09hf4\xf26\xac\x14\x16&d" + + "\x0b\xe0\x9dL\xf9\xa7\xb6\xc90'\x95j\xef\xef[b\x9e̺u\x97\xb2o\xe2\x8e" + + "\xc0\xae\xa3\xf42\xd5&\x02:\xb1b\x89\x00\xd6Y\xe0IE\x16F\xba\xfb\xbcm" + + "\x14s\x84\x91\x08\xf9\xa3\xd4:\x8b\x0f\xb7&_o\x0d\xd4X\x7fX\x90\x1b\xb4" + + "\xa3^<\\\xc8X\x1f\xb8+\x1b\xa1J\xaf\x11\xaaL8C\xb3l\xa9\x13\xa7\xb8h7" + + "\x97\xed\xa5\xb6\x90\x14~o\xe5}o\x8f\x05\xbd%.\xc2\xe1\xcf(\x1dO\x89u" + + "\xdc\xff!\xaf\xe4\x11\x99\x97yj\x88?\xb1\x1eY\xe40\\I8\x22h\xe8\xbda\xe4" + + "\x19\xf2m\x15nޕ\x98>d\xf3y*X&\xa2\xfe:r\x15\x22\xa4\xb16\x0dyw\x09\x98" + + "\x9d,\xfe\x93\x98 {\xb1u\xf0\x1e\x8b\xea2\xa8\xfc\xe3\xc1\xf0b\x9f\xe6" + + "\x08\xf9\xe8\xf1OÒ\x18r\x0cK\xb1\x88\x82\xa4܈\x95\x0b\x99a\x89\xa9&\xfb" + + "\xd6p\x814\xbf\x96\xfe\x0c\xce\x12mhI\x8f\xbf\x9f2B\xaa\x8a1|\xe3\xb4" + + "\xf5\xfdD\x0fl\x10\x8d㕄\xab\xa34Dž\xf8\x8d\x16\xd46\x1f\x04m1߭\xe7MA\x93" + + "\xd1G\xeeǐ\xd2[2$\x09\xcbA\xdb\x0dVd\xc7\x05\xb1W\xf88%)%\xa0#\xaa\xd5" + + "\xe7+:Ly+\x0a\xa7Ytئ\xc4jj\xd1x\x22\xd5\x14\x94\xebYHc\xd6&\xfb.\xfab" + + "\x0e\xa4=\xd14X\x22m\x22.\x22\xb4E\x9f\xef\x7f\xff7\xebP\xb6\xcf\xe4\xa7" + + "{վ\xa6\xfe\xc6\xe5\xf4\x02\x10\xf3\x9dØMI`\xce\xe8*\xd0\x0ac=\xe0um\x13w" + + "\xfd*\xa4\x11\xf7_$\xbfb\xf57>\x91\\J%`\x12\x10\x91\x02}\x06#\xb5\xcb%" + + "\x1d=,\x01\x95\xc0\xb1\x8b*\xdb\x10۸\x17\xc8\xe3\xfeo\xb0\xdeZ\xb1\x8e" + + "\xad\x0e\u0557!s\xb8M`\xa2u\xee>o\\\x0c*d\x81\xe7zf`\xce\xf5\x84\x11\x05" + + "\x1d\xfdů\x89\xc1\xa0\x14k\x05\x9a\x08\x9c\xbe\x0c\xa3\xc3s\x83_h\x85" + + "\xeb\x0a\xf6\u0090\xac\x1e\xf4A\x02\xe2\x8c^\xb0sS\x08\xcf_|\xee۱\xcaji." + + "4ň\xb5\x96w\x91A~\xfc\xe1:$^\x92\xd3p\xbf\xe7_\x0b\xb8]Z\x85\xbbF\x95x" + + "\xbe\x83D\x14\x01R\x18\x15R\xa2\xf0\xb0\x0b\xe3\x9d\xc9J kU\x00\x04\x97R" + + "o\xae\xd4ct\xb7\x8aeX\xe5$\xe8\x10\x0f\x1eTV\xfe\xa9vAU\xedw\x06~`\xd6" + + "\xc2\xefhƹ>\xd1k\x0f9(\x9c6\xa3-<ù\xde\x0dп]\x92-\x02\xd9i\xc7Oܭ\x82\x0c" + + "\x992\x9c6K\xec\xb6kI\xd6\xecZ+j\xff\x92\xd4?pVP\xa9\xe1\x03g\xb4\xb1" + + "\xf6d\x85!XqTu\xd1\xe5w~\xec\x91u\xe1\xcau\x99^!\x12\xf7N\x17\xac\xfa" + + "\xeb\x1e\x09Farvardin\x0bOrdibehesht\x07Khordad\x03Tir\x06Mordad\x09Shah" + + "rivar\x04Mehr\x04Aban\x04Azar\x03Dey\x06Bahman\x06Esfand\x02AP\xfeo4E" + + "\xf1\xca6\xd8\xc0>\xf0x\x90Գ\x09\xfe\xf7\x01\xaf\xd1Y7x\x89\x0e\xe4/\xb9" + + "\x8f{@\xdb@\xa1~\xf4\x83T\xc9D\xb5\xb1;\x1fe\xe2F\x8a|P\xe0\xf2\xb9\xdc." + + "9\xf2\x88\x17\xb5\xf8\xb6(\xb1\xa34\x94\xd6\xcd1\xa9_&\xdbñҎ\x01\xf0\xce" + + "yX\xd5\xffY\xe9*sBR\xb4\xa7\x92uh\xd14gn H\xab\x09\x86*\x11\x91j\xb5\xb1" + + "\x00\x95\x93f?\x17\xdc\x03\x06\xc1\xb1\xe8n\x1d\xf7\xdaw\xdat\xa5%\xaa:b" + + "'\x81\x977B;M=\x1c\xeb\x8a\xfa\xac\xcf\xf5f\x0c;+\x98\xb0ꅴ\xf37L\xa5\x93" + + "(\x08sG\x06\xf8\xbe\x0d\xfd\x1f\x18\x87\x12ݷ\x0d\x05\xe1w\xb3t\xb4e ka" + + "\x8dD\xa4-\xeaP\u05f7\x8d\xcbU2`WV\xf1\xc3G\xfd\x95Y;\x22\x8f\x8a\x0c;" + + "\xcdp֙\xf7.1o\xd2\u0590\xa1\xe7cla\xfcJ\x99\xbd>\xc73]r\x8eCk!\x95Jo\xd5" + + "\xe7W\xd1\xc3\x03Era\x05Month\x0alast month\x0athis month\x0anext month" + + "\x06+{0} m\x06-{0} m\xfeQHs\xc6\xd4tx*\xf5b\xe27\xdaT\xee\x1a\xb1\x84" + + "\x14\xb1\xd2E\x95R=\x9d\x00u\xe5u\x7fT\xd5\x14\xe0\xdf\xd5\x18\xe5q\x8e" + + "\xb4\x15S\x0c\x94\u05ff\xd3.vE\xacn\x99\xb1\xf9(ƃ\xcc\xef\xeej32y\xc0" + + "\xc1\x03X\xf4\x02\xc2\x084\x9b\xa3;\xaf\xb0X1æ\xe68\x8f\xa9E8=U\xefӐB4" + + "\xff\xc4O\xc9R\xab\xafN\x05H\xc9\x1d\xa2\x15U\x80\x9c\xd0\xc8\x1ay\xbb*r" + + "f\x9cW\x16^\xa4\xaf_/\xbc\xf2\xe7\xf68\xcf\xdc\xd8q\xcaRE\x00Yp06\x9a" + + "\xc90\xa3\x08\xce\x19Y\xff\x22H\x83\xbf\x00`\x94\x06r\x85\x965\xc9\x0d^J" + + "{Ks,\xe3o\xed(\x1f$\x10ݱ\x9a\xbf{J^3\xf5_\x9a\x1d\xb6\xd4m\x1a2P\xafR`" + + "\xbeTB+\xb9\x1b<\x08&\xa8\x8a\x18\xf8\x8cy\xc0\xcb\xed\xf1@}\x0b\xbf\xac" + + "H\x048\xf9\x0co\x92\xfa!$\x9b6\xabnY\xc05\x0cݷ\xf3\xa5\x0dE\x97\x03Mo1" + + "\x03Mo2\x03Mo3\x03Mo4\x03Mo5\x03Mo6\x03Mo7\x03Mo8\x03Mo9\x04Mo10\x04Mo11" + + "\x04Mo12\x0bFirst Month\x0cSecond Month\x0bThird Month\x0cFourth Month" + + "\x0bFifth Month\x0bSixth Month\x0dSeventh Month\x0cEighth Month\x0bNinth" + + " Month\x0bTenth Month\x0eEleventh Month\x0dTwelfth Month\x03Rat\x02Ox" + + "\x05Tiger\x06Rabbit\x06Dragon\x05Snake\x05Horse\x04Goat\x06Monkey\x07Roo" + + "ster\x03Dog\x03Pig\xfeѝ\xe0T\xfc\x12\xac\xf3cD\xd0<\xe5Wu\xa5\xc45\x0b" + + "\x9al\x9f?ium\xfc\x96\xb4\xf4\x7f\xfb\xc6\xf1\xff\x9e\x22\xe2\xc9m\x8f" + + "\xd25rg\x87L\x15Y\x10\x80\xd2t\xb5\xe5\x90\x08xH7\xfa\xdb\x02\xf70\x1fИJ" + + "\x88G\x99\xd6\x1a\x83\xb8\xbdz<\xf1\xc9t\U000953c1\xa5N\xa8\x0e\xbe\x05." + + "n\x87R\xf1\xbf\xc8>m%O?@4\xd4\xe8\xf1\x04Y\xb1_\x11\x1b\xb3\x17\xc8R\xed" + + "EHn\xa5\xf7>\xaf9:1?\x9eG\x0cg\xd0M \xbc\xcf+)\x86A\xd2qo\xbd\x18\x12N" + + "\xe4`:\x8fk|?\x8d/\x90\x8c\xe7d\xe4\x08\x9e\x8dO\x15L\x92@\xa5w}F\x7f" + + "\x84r7u\x10\x12/AΞ\xc0\xf9\x89\xb57\x1ct\xbe\x9e&\x9e\xfba\x85;\u05cb" + + "\xc2S\xc0\x97\xe3\x81]\xedg\xf6\xf6t\xd2\xfc\x1ezM\xf0\x08\x87\xeb\x12" + + "\x8f\xffd\x8a>\x09\xa5\xaa\x9ag&?\x0d\xadV\x93x!Xi{\x99\x04\xf4A r\xfeho" + + "\xd1\xffQ\x8f\xd4\xc1\xe1\x83i\x88\x9a\xfe\xfc<\x14\xd3G\x10\x94GA|\x17M" + + "2\x13\x22W@\x07\x8c-F\x81A\xe1\xb4y$S\xf18\x87v)\x07\x9b\x13R\x02\xf7<" + + "\x86\x1eD,3\xf6\xc9̳\xc3\xc3)HYX\xfbmI\x86\x93^\xe5\xa9\xe9\x12!\x82Y" + + "\xcf}a*-y\xf3\x1e6&\x91N\xe2\xec\x14\x95\x16,\x80\x1e=[E\x80\xca\xc9]." + + "\xed\x0fH:X\xd1lN}\x1d\xe0\xf1\xba'\xd6\x04\xf6u\x06\xc2\xdf\xd1g\x032" + + "\xabp55Yu'\xef\x1e>\x7f\x07\x92\xa7\x0eg\x12\xbb\xdaX\xe0p\x9c;\xd82." + + "\xa4\xc9w\xfa!\xfb\x9eD\xdd\xe7\xb7\xe2\xfa\xb9\xd8ٽ\xf4mB\x9a\xa1\xafo" + + "\x83ˣŷ#m<\x86WU\x8e\xea\xa5p:\xd4e_ܜ\xd2\xcf\x1e\u07fb$W\x96i\xa0\xc1" + + "\x00\x15o\xf8\x10\xb6h\xc2ײ:\x80\xfdO\xf5\xed\xf0\xcf4\x8d!L\x03Dc\xf2&" + + "\x8c\xcf\x15\xf6\xe3\xc3L\xbak\x08enWideM1\x08enWideM2\x08enWideM3\x08en" + + "WideM4\x08enWideM5\x08enWideM6\x08enWideM7\x08enWideM8\x08enWideM9\x09en" + + "WideM10\x09enWideM11\x09enWideM12\x0aenNarrowM1\x0aenNarrowM2\x0aenNarro" + + "wM3\x0aenNarrowM4\x0aenNarrowM5\x0aenNarrowM6\x0aenNarrowM8\x0aenNarrowM" + + "9\x0benNarrowM10\x0benNarrowM11\x0benNarrowM12\x0dBefore Christ\x11Befor" + + "e Common Era\x0bAnno Domini\x0aCommon Era\x02BC\x02AD\xfe\xfe\x1f8{\x91g" + + "\xb7\xd7\xcd\xde#Xk\xe6\x85\xd8Ì\x8e\xf7g\xf0\x10\xd02\xbdJN\x8f\xf8\x15" + + "A\xad\xfd\xcae\xac\xb6\xf7\xe1$9\xb9\xa2 \xb5\x8a\xf1f\x1d/N\xd0\xff\xb2" + + "_\xaaC͑Y\x1d\xcd$ua[\xaa\x1e\x01I\xf0\xbc\xb7\x0b\xc426\x15Ș\x19\x88\x94" + + "\x8b\xd5\xf7\xb0\xa4\xbd\\\xdb=\xafZ\x98A\xa9\xbc'\xdc\xec\xa9wCB\xaf" + + "\xe0\xdb\xf3\xb9\x03\xa2\xa0\x1ad\x98ـ-\xb4C\xa45K\xb5\xa6\x15\x87\xa9" + + "\xe9\x94j?\xb1\x9e\x10\xdf\x0dv\x7f\x1ai \x087\xe5\x17\xd2!y\x93M[\xa7ܳ" + + "\xfa\xae1ר\xe5\xfe\xe9y\xb9\xfc\x80F}Zje\xed\xbc\xc8Y.h\xfb\xb5 * S\xba" + + "\xba\xa8\xce\u07be\x03\xa6\x05\xcf\xe7,\x16i\x0ap\xbd\x16\xd6\xda$\xaf}0" + + "\xf1&\x0bCT\x19\x82x\xd5\x0c\xc7\x13\xf8\xa2R&~\x0b\xa5F\x8f\xa6\x8cݺ\\_" + + "\x06\xf8\xfc$\xbc\xda\xc1H\xe2\xf4\x7f\x84}L\x83\xfb{\xfe@\x09\xa8HF\xaf" + + "\xedRx\x9f\xbd\x0c\x0d\x06\xa5b\xebm\x9e#\xebwI\xfeDp}K\xc1\xd7\xe0\x86#" + + "\x1c;\x0f\xed\x0e`\x05\x9b\x86EI5w\xd9\x05\xfe\xb0zx\xc7T0v֚?S\xaf\xb2" + + "\x9b\x1a\x86\x12ꔚg\x14FB\xe8\x8fKvͫ\xfaz\x9c\x82\x87e\x08\x1f\x9c\x97" + + "\xc3\xc2 \x7f\x1a\xd2M#\x1f\xc2B\xcdJ\x05\xf5\x22\x94ʸ\x11\x05\xf9̄PA" + + "\x15\x8f\x0e5\xf3\xa6v\\ll\xd89y\x06\x08\x01!~\x06\xe3\x04_\xa3\x97j\xec" + + "\xeamZ\xb0\x10\x13\xdaW\x18pN\x1a\xab!\xf2k<\xea\xca\xe9%\x19\xf1\xb9" + + "\x0a\x84\xc1\x06\x84\xcb\x08\xe4\xe2\x037\xf2\x92ǭ\xd4\x0c\xf3;4b<\xc5.%" + + "\xc2!\x079\x8b\x9dG\xc9U\x86\xe6\\22\xf6\xee\xb5lʆ%\xbd\x9e\xfeQV\xf3u" + + "\xa7\xd4r \xecV\xc8V\xb1\x96\xb4\x9f2D\x88m\x13\x94\xa6X瘳\xc9\xcc\xe8K[y" + + "\xa4L\x01'IPP\xfe\xaaI+\xef)l\x86lE\xb8\xd4=\x81\x0f\x0b9렭\xf7_H\xaa\xf1" + + "\x0c\x17\xcf6\xa4\x02\xe1T\xf9\x14\xe9\x0e\xd5WmE}\xa5)\xe7s\xfc\x0c16" + + "\xd4U\xaa\x8d\xc9\xe0m\xd6\x0a\x0e\xf5ȷ9\xfen_\x02=U&vcX\x80EY U\x93\x02" + + "9\x02A\x86\xe5HGX\xf4\xed\x9ckFx(\xa2?\xfa7\x17\x8eCce\xb9\x0f5\xac\xbc" + + "\xf4\xa6\xe2C5\xdd\x08{\x1e\xd9c\x96>K\xc3\xf83\xaaܾ%\xf3\x91\x1b\xf8U" + + "\x1f\xfa<\xfd\xefв\x1b̹\x19f\xb2O\x81>f渃@\xf47l\xc9k\x13F\x1a\xa3\x84" + + "\xad\xa0\xda=_z\xf1́\x13l\xf6J\xd0\xdb\xe6\xed\x9d^ݹ\x19\x0fK\xa1H\x0b-" + + "\x7f\xed\xa8\xde&V\xbc\x9ak\xb8\x15\xc2\x12bWU\x08N1#\xe1W9ޗӬ\xacG\x80" + + "\xb2\x83ozH\xcd?\xd0T\x04ϭ\x03\xccfi\x05\xec\x02k\x9ej\x94\xa9S\xf2\xd4" + + "\xf8\x16r\x03era\x05month\x09enFutMOne\x0benFutMOther\x0aenPastMOne\x0ce" + + "nPastMOther\x03mo.\x08last mo.\x08this mo.\x08next mo.\x0eenShortFutMOne" + + "\x10enShortFutMOther\x0fenShortPastMOne\x11enShortPastMOther\x0a001AbbrM" + + "o1\x0a001AbbrMo2\x0a001AbbrMo3\x0a001AbbrMo4\x0a001AbbrMo5\x0a001AbbrMo6" + + "\x0a001AbbrMo7\x0a001AbbrMo8\x0a001AbbrMo9\x0b001AbbrMo10\x0b001AbbrMo11" + + "\x0b001AbbrMo12" + +var bucket1 string = "" + // Size: xxxx bytes + "\xfe\x99ҧ\xa2ݭ\x8a\xb6\xc7&\xe6\xbe.\xca:\xec\xeb4\x0f\xd7;\xfc\x09xhhkw" + + "'\x1f\x0fb\xfb8\xe3UU^S%0XxD\x83Zg\xff\xe7\x1ds\x97n\xef\xf95\xd3k\xbf$:" + + "\x99\xbbnU\xba:n\xdeM.\xa4st\xa6E\x0eG\xf5\xf0\xd6.Q-\x1e8\x87\x11X\xf2" + + "\x19\xc1J\xacI57\xdc\x07\xf0\x87\xc1cMc\x9e\xdc\x0a\xb3%\xff\x03\xe2aR" + + "\x06,\xbf!4J\x8b]4ΙWš\x1dY2\x88:\xb9Q\x16\xfc\xb5r\xf7\xc5d^\x97\x08\xce" + + "\x04EG@\u05fa\x88\x885\x08\x8c/\x83r\x92\xb8\x96\xd4\xfa\x8d\x18\x0fF" + + "\xfd\xa2\x01\xfb\xb0\xa0ڐӔ\xca\xcd\xf7@=\xe2\x96\x03\x87\x8aH\xfa\xc3L" + + "\xa2\xe90H\x93\xf6\x80\x8ck\x05)u{d\xa4\x19D\xd4{\xfd\xb8\xc5\xc0)\xea" + + "\x01\x9b\xcb&\x12\x87y\xf6{\xbb\xcdm\x0az/\xcb\xce#\x1c\x86R\xccy\xdbC" + + "\x7f\xa2\x96\x94\xc2\x22O/\xe4t\xfe\xba4 \xc3\xf1Hdy{܃L\x9aG\xa3\xa9\xea" + + "!LmW\x05\x9d$\x01\xe5wp\x8a'<\xc1\xcao\x8d\x1b\x8d\xd8h\xccX\xdc\xe4\xfd" + + "j\xf6\x0b\xa5'\xad\xe2\x1a\x16\x8fD\xde5\x0d\xaeL\xeft\xe1\x1f/\xd8\xec" + + "\xc9\xc0\xc6C#\x18\xfa\x93\x11Wt\x82\xfc\xa7\x1c\x82\x1b\xfd\x95`\xbd" + + "\x9f;[\xb3\x9e'\xe8DmA/^Ŭ]\x15-\xf9ـb\xea\xe9\x1f\xd9̂\x92\xc8\xddL%\xaf" + + "\xd0\xcc\xc7\x02L\xbb:P3\x22\xbfU\x81\U000d06a1\xa2\xf9q\x96\xbc2\x8e" + + "\x8f\xb4\x80\xbe\x06`\x8b\x0b\xaf\xd2\xd2J\xccV>\xc7d\xf5\xfd\x1c?\xbc7⏟" + + "\xb9%\xf0\xc4\xfe\xf3P\xed\x13Vܦ\xd7FR\x9b7\xabPu\xaa\xcf" + + "\xfca;k\xb2+\xe0zXKL\xbd\xce\xde.&\xf5ԛ\xbck\x1b\xd4F\x84\xac\x08#\x02mo" + + "\x0f001ShortFutMOne\x11001ShortFutMOther\x12001ShortPastMOther\x10001Nar" + + "rowFutMOne\x10001NarrowFutMTwo\x12001NarrowFutMOther\x11001NarrowPastMOn" + + "e\x13001NarrowPastMOther\x08gbAbbrM1\x08gbAbbrM2\x08gbAbbrM3\x08gbAbbrM4" + + "\x08gbAbbrM5\x08gbAbbrM6\x08gbAbbrM7\x08gbAbbrM8\x08gbAbbrM9\x09gbAbbrM1" + + "0\x09gbAbbrM11\x09gbAbbrM12\x08gbWideM1\x08gbWideM2\x08gbWideM3\x08gbWid" + + "eM4\x08gbWideM5\x08gbWideM6\x08gbWideM7\x08gbWideM8\x08gbWideM9\x09gbWid" + + "eM10\x09gbWideM11\x09gbWideM12\x0agbNarrowM1\x0agbNarrowM2\x0agbNarrowM3" + + "\x0agbNarrowM5\x0agbNarrowM6\x0agbNarrowM8\x0agbNarrowM9\x0bgbNarrowM10" + + "\x0bgbNarrowM11\x0bgbNarrowM12\xfeG*:*\x8e\xf9f̷\xb2p\xaa\xb9\x12{и\xf7c" + + "\u0088\xdb\x0ce\xfd\xd7\xfc_T\x0f\x05\xf9\xf1\xc1(\x80\xa2)H\x09\x02\x15" + + "\xe8Y!\xc2\xc8\xc3뿓d\x03vԧi%\xb5\xc0\x8c\x05m\x87\x0d\x02y\xe9F\xa9\xe1" + + "\xe1!e\xbc\x1a\x8d\xa0\x93q\x8b\x0c߮\xcdF\xd1Kpx\x87/is\xcc\xdd\xe0\xafʍ" + + "~\xfeҜl\xc2B\xc5\x1a\xa4#ث,kF\xe89\xec\xe6~\xaa\x12\xbf\x1a\xf6L\x0a\xba" + + "\xa9\x96n\xf1\x03Ӊ<\xf5\x03\x84dp\x98\xe1d\xf7'\x94\xe6\x97\x1a4/\x05" + + "\x99\x8f.\x7foH@\xe9\x1a\xda6`MQ\xad\x0d\x08\x99؟+\xe53\xbf\x97\x88~\xe6" + + "eh\xb7\xaf\xaf<\xe1|\xb9\x0cF\xe0\xda\xf2\xbd\xff\x19\xaa\x95\x9b\x81" + + "\xc3\x04\xe3\x1f\xd5o]$\xf5\x0f\xbbzU\xf2a\xb0\x92[\xfeX\x03\x1f\xdc\x0c" + + "\xd5I\xc0a_\xbd\xd8\xde\u009a\x1a@t\x1e\x7f\x8f&\x0c\x8d\xfeM\xd7ڟX\x90" + + "\x97\xfe%\xa3'\x88\x81\xb5\x14l\x0bL\xd9>\x8d\x99\xe2=ƭu,\x9aT \x06\xc1y" + + "\\\x01wf\xdcx\xab\xa1\xee\xec\x82\x1e8\xb09$\x88\xfe<\xb5\x13g\x95\x15NS" + + "\x83`vx\xb9\xb7\xd8h\xc7 \x9e\x9fL\x06\x9a\xadtV\xc9\x13\x85\x0d8\xc15R" + + "\xe5\xadEL\xf0\x0f\x8b:\xf6\x90\x16i۰W\x9dv\xee\xb6B\x80`Ωb\xc7w\x11\xa3" + + "N\x17\xee\xb7\xe0\xbf\xd4a\x0a\x8a\x18g\xb82\x8e\xaaVCG\xc3Ip\xc0^6\xa8N" + + "\xf1\xebt\xa6\xa4\x0cO\xd9c\x97\x8f\xfa\x11)\x1bHY\xa2ӄ\x1bLc\xd6\x08" + + "\x06\xbfj`?3s\x89\xb8\x82(\xaf\xef\x84\xdfz\xc3\x12\xf1b\xd4\xf7ir\xe8," + + "\x8apœ\x00F\xa6b+\xfa}\x03\x14..\xcb1l\xac\x93\xee\x19\x12\xaa\xbbo\x95" + + "\xf3?ݔ7\x84\xb2b\x0c4\x81\x17\xf2K@\xde\x18\x99Q\x17n\xe5?\xdao\xc6(\xfc" + + "\x9b\xees\xc6V\x91\x0dْ\x1d\x06g9o" + +var enumMap = map[string]uint16{ + "": 0, + "calendars": 0, + "fields": 1, + "buddhist": 0, + "chinese": 1, + "dangi": 2, + "ethiopic": 3, + "ethiopic-amete-alem": 4, + "generic": 5, + "gregorian": 6, + "hebrew": 7, + "islamic": 8, + "islamic-civil": 9, + "islamic-rgsa": 10, + "islamic-tbla": 11, + "islamic-umalqura": 12, + "persian": 13, + "months": 0, + "eras": 1, + "filler": 2, + "cyclicNameSets": 3, + "format": 0, + "stand-alone": 1, + "wAbbreviated": 0, + "wNarrow": 1, + "wWide": 2, + "leap7": 0, + "variant": 1, + "cycDayParts": 0, + "cycDays": 1, + "cycMonths": 2, + "cycYears": 3, + "cycZodiacs": 4, + "era": 0, + "era-short": 1, + "era-narrow": 2, + "month": 3, + "month-short": 4, + "month-narrow": 5, + "displayName": 0, + "relative": 1, + "relativeTime": 2, + "before1": 0, + "current": 1, + "after1": 2, + "future": 0, + "past": 1, + "other": 0, + "one": 1, + "two": 2, +} + +// Total table size: xxxx bytes (14KiB); checksum: FE165D0A diff --git a/vendor/golang.org/x/text/internal/cldrtree/tree.go b/vendor/golang.org/x/text/internal/cldrtree/tree.go new file mode 100644 index 000000000..6d4084b86 --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/tree.go @@ -0,0 +1,181 @@ +// Copyright 2017 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 cldrtree + +import ( + "golang.org/x/text/internal" + "golang.org/x/text/language" +) + +const ( + inheritOffsetShift = 12 + inheritMask uint16 = 0x8000 + inheritValueMask uint16 = 0x0FFF + + missingValue uint16 = 0xFFFF +) + +// Tree holds a tree of CLDR data. +type Tree struct { + Locales []uint32 + Indices []uint16 + Buckets []string +} + +// Lookup looks up CLDR data for the given path. The lookup adheres to the alias +// and locale inheritance rules as defined in CLDR. +// +// Each subsequent element in path indicates which subtree to select data from. +// The last element of the path must select a leaf node. All other elements +// of the path select a subindex. +func (t *Tree) Lookup(tag int, path ...uint16) string { + return t.lookup(tag, false, path...) +} + +// LookupFeature is like Lookup, but will first check whether a value of "other" +// as a fallback before traversing the inheritance chain. +func (t *Tree) LookupFeature(tag int, path ...uint16) string { + return t.lookup(tag, true, path...) +} + +func (t *Tree) lookup(tag int, isFeature bool, path ...uint16) string { + origLang := tag +outer: + for { + index := t.Indices[t.Locales[tag]:] + + k := uint16(0) + for i := range path { + max := index[k] + if i < len(path)-1 { + // index (non-leaf) + if path[i] >= max { + break + } + k = index[k+1+path[i]] + if k == 0 { + break + } + if v := k &^ inheritMask; k != v { + offset := v >> inheritOffsetShift + value := v & inheritValueMask + path[uint16(i)-offset] = value + tag = origLang + continue outer + } + } else { + // leaf value + offset := missingValue + if path[i] < max { + offset = index[k+2+path[i]] + } + if offset == missingValue { + if !isFeature { + break + } + // "other" feature must exist + offset = index[k+2] + } + data := t.Buckets[index[k+1]] + n := uint16(data[offset]) + return data[offset+1 : offset+n+1] + } + } + if tag == 0 { + break + } + tag = int(internal.Parent[tag]) + } + return "" +} + +func build(b *Builder) (*Tree, error) { + var t Tree + + t.Locales = make([]uint32, language.NumCompactTags) + + for _, loc := range b.locales { + tag, _ := language.CompactIndex(loc.tag) + t.Locales[tag] = uint32(len(t.Indices)) + var x indexBuilder + x.add(loc.root) + t.Indices = append(t.Indices, x.index...) + } + // Set locales for which we don't have data to the parent's data. + for i, v := range t.Locales { + p := uint16(i) + for v == 0 && p != 0 { + p = internal.Parent[p] + v = t.Locales[p] + } + t.Locales[i] = v + } + + for _, b := range b.buckets { + t.Buckets = append(t.Buckets, string(b)) + } + if b.err != nil { + return nil, b.err + } + return &t, nil +} + +type indexBuilder struct { + index []uint16 +} + +func (b *indexBuilder) add(i *Index) uint16 { + offset := len(b.index) + + max := enumIndex(0) + switch { + case len(i.values) > 0: + for _, v := range i.values { + if v.key > max { + max = v.key + } + } + b.index = append(b.index, make([]uint16, max+3)...) + + b.index[offset] = uint16(max) + 1 + + b.index[offset+1] = i.values[0].value.bucket + for i := offset + 2; i < len(b.index); i++ { + b.index[i] = missingValue + } + for _, v := range i.values { + b.index[offset+2+int(v.key)] = v.value.bucketPos + } + return uint16(offset) + + case len(i.subIndex) > 0: + for _, s := range i.subIndex { + if s.meta.index > max { + max = s.meta.index + } + } + b.index = append(b.index, make([]uint16, max+2)...) + + b.index[offset] = uint16(max) + 1 + + for _, s := range i.subIndex { + x := b.add(s) + b.index[offset+int(s.meta.index)+1] = x + } + return uint16(offset) + + case i.meta.inheritOffset < 0: + v := uint16(-(i.meta.inheritOffset + 1)) << inheritOffsetShift + p := i.meta + for k := i.meta.inheritOffset; k < 0; k++ { + p = p.parent + } + v += uint16(p.typeInfo.enum.lookup(i.meta.inheritIndex)) + v |= inheritMask + return v + } + + return 0 +} diff --git a/vendor/golang.org/x/text/internal/cldrtree/type.go b/vendor/golang.org/x/text/internal/cldrtree/type.go new file mode 100644 index 000000000..65f9b4674 --- /dev/null +++ b/vendor/golang.org/x/text/internal/cldrtree/type.go @@ -0,0 +1,139 @@ +// Copyright 2017 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 cldrtree + +import ( + "log" + "strconv" +) + +// enumIndex is the numerical value of an enum value. +type enumIndex int + +// An enum is a collection of enum values. +type enum struct { + name string // the Go type of the enum + rename func(string) string + keyMap map[string]enumIndex + keys []string +} + +// lookup returns the index for the enum corresponding to the string. If s +// currently does not exist it will add the entry. +func (e *enum) lookup(s string) enumIndex { + if e.rename != nil { + s = e.rename(s) + } + x, ok := e.keyMap[s] + if !ok { + if e.keyMap == nil { + e.keyMap = map[string]enumIndex{} + } + u, err := strconv.ParseUint(s, 10, 32) + if err == nil { + for len(e.keys) <= int(u) { + x := enumIndex(len(e.keys)) + s := strconv.Itoa(int(x)) + e.keyMap[s] = x + e.keys = append(e.keys, s) + } + if e.keyMap[s] != enumIndex(u) { + // TODO: handle more gracefully. + log.Fatalf("cldrtree: mix of integer and non-integer for %q %v", s, e.keys) + } + return enumIndex(u) + } + x = enumIndex(len(e.keys)) + e.keyMap[s] = x + e.keys = append(e.keys, s) + } + return x +} + +// A typeInfo indicates the set of possible enum values and a mapping from +// these values to subtypes. +type typeInfo struct { + enum *enum + entries map[enumIndex]*typeInfo + keyTypeInfo *typeInfo + shareKeys bool +} + +func (t *typeInfo) sharedKeys() bool { + return t.shareKeys +} + +func (t *typeInfo) lookupSubtype(s string, opts *options) (x enumIndex, sub *typeInfo) { + if t.enum == nil { + if t.enum = opts.sharedEnums; t.enum == nil { + t.enum = &enum{} + } + } + if opts.sharedEnums != nil && t.enum != opts.sharedEnums { + panic("incompatible enums defined") + } + x = t.enum.lookup(s) + if t.entries == nil { + t.entries = map[enumIndex]*typeInfo{} + } + sub, ok := t.entries[x] + if !ok { + sub = opts.sharedType + if sub == nil { + sub = &typeInfo{} + } + t.entries[x] = sub + } + t.shareKeys = opts.sharedType != nil // For analysis purposes. + return x, sub +} + +// metaData includes information about subtypes, possibly sharing commonality +// with sibling branches, and information about inheritance, which may differ +// per branch. +type metaData struct { + b *Builder + + parent *metaData + + index enumIndex // index into the parent's subtype index + key string + elem string // XML element corresponding to this type. + typeInfo *typeInfo + + lookup map[enumIndex]*metaData + subs []*metaData + + inheritOffset int // always negative when applicable + inheritIndex string // new value for field indicated by inheritOffset + // inheritType *metaData +} + +func (m *metaData) sub(key string, opts *options) *metaData { + if m.lookup == nil { + m.lookup = map[enumIndex]*metaData{} + } + enum, info := m.typeInfo.lookupSubtype(key, opts) + sub := m.lookup[enum] + if sub == nil { + sub = &metaData{ + b: m.b, + parent: m, + + index: enum, + key: key, + typeInfo: info, + } + m.lookup[enum] = sub + m.subs = append(m.subs, sub) + } + return sub +} + +func (m *metaData) validate() { + for _, s := range m.subs { + s.validate() + } +} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen.go b/vendor/golang.org/x/text/internal/export/idna/gen.go index 27a5e1c43..cce630535 100644 --- a/vendor/golang.org/x/text/internal/export/idna/gen.go +++ b/vendor/golang.org/x/text/internal/export/idna/gen.go @@ -21,6 +21,7 @@ import ( "golang.org/x/text/internal/gen" "golang.org/x/text/internal/triegen" "golang.org/x/text/internal/ucd" + "golang.org/x/text/unicode/bidi" ) func main() { @@ -35,6 +36,12 @@ var runes = map[rune]info{} func genTables() { t := triegen.NewTrie("idna") + ucd.Parse(gen.OpenUCDFile("DerivedNormalizationProps.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + if p.String(1) == "NFC_QC" { // p.String(2) is "N" or "M" + runes[r] = mayNeedNorm + } + }) ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { r := p.Rune(0) @@ -44,7 +51,17 @@ func genTables() { } switch { case unicode.In(r, unicode.Mark): - runes[r] |= modifier + runes[r] |= modifier | mayNeedNorm + } + // TODO: by using UnicodeData.txt we don't mark undefined codepoints + // that are earmarked as RTL properly. However, an undefined cp will + // always fail, so there is no need to store this info. + switch p, _ := bidi.LookupRune(r); p.Class() { + case bidi.R, bidi.AL, bidi.AN: + if x := runes[r]; x != 0 && x != mayNeedNorm { + log.Fatalf("%U: rune both modifier and RTL letter/number", r) + } + runes[r] = rtl } }) diff --git a/vendor/golang.org/x/text/internal/export/idna/gen_test.go b/vendor/golang.org/x/text/internal/export/idna/gen_test.go index 60602ecf5..83f045f65 100644 --- a/vendor/golang.org/x/text/internal/export/idna/gen_test.go +++ b/vendor/golang.org/x/text/internal/export/idna/gen_test.go @@ -65,6 +65,15 @@ func TestTables(t *testing.T) { if got != want { t.Errorf("IsVirama(%U) = %v; want %v", r, got, want) } + + rtl := false + switch p.String(ucd.BidiClass) { + case "R", "AL", "AN": + rtl = true + } + if got := x.isBidi("A"); got != rtl && !x.isMapped() { + t.Errorf("IsBidi(%U) = %v; want %v", r, got, rtl) + } }) ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { diff --git a/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go b/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go index 3a3229649..0de99b08a 100644 --- a/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go +++ b/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go @@ -30,9 +30,9 @@ package main // 15..3 index into xor or mapping table // } // } else { -// 15..13 unused -// 12 modifier (including virama) -// 11 virama modifier +// 15..14 unused +// 13 mayNeedNorm +// 12..11 attributes // 10..8 joining type // 7..3 category type // } @@ -53,15 +53,20 @@ const ( joinShift = 8 joinMask = 0x07 - viramaModifier = 0x0800 + // Attributes + attributesMask = 0x1800 + viramaModifier = 0x1800 modifier = 0x1000 + rtl = 0x0800 + + mayNeedNorm = 0x2000 ) // A category corresponds to a category defined in the IDNA mapping table. type category uint16 const ( - unknown category = 0 // not defined currently in unicode. + unknown category = 0 // not currently defined in unicode. mapped category = 1 disallowedSTD3Mapped category = 2 deviation category = 3 @@ -114,5 +119,5 @@ func (c info) isModifier() bool { } func (c info) isViramaModifier() bool { - return c&(viramaModifier|catSmallMask) == viramaModifier + return c&(attributesMask|catSmallMask) == viramaModifier } diff --git a/vendor/golang.org/x/text/internal/export/idna/idna.go b/vendor/golang.org/x/text/internal/export/idna/idna.go index 1d775fa20..e653c3367 100644 --- a/vendor/golang.org/x/text/internal/export/idna/idna.go +++ b/vendor/golang.org/x/text/internal/export/idna/idna.go @@ -21,6 +21,7 @@ import ( "unicode/utf8" "golang.org/x/text/secure/bidirule" + "golang.org/x/text/unicode/bidi" "golang.org/x/text/unicode/norm" ) @@ -142,7 +143,6 @@ func MapForLookup() Option { o.mapping = validateAndMap StrictDomainName(true)(o) ValidateLabels(true)(o) - RemoveLeadingDots(true)(o) } } @@ -160,14 +160,14 @@ type options struct { // mapping implements a validation and mapping step as defined in RFC 5895 // or UTS 46, tailored to, for example, domain registration or lookup. - mapping func(p *Profile, s string) (string, error) + mapping func(p *Profile, s string) (mapped string, isBidi bool, err error) // bidirule, if specified, checks whether s conforms to the Bidi Rule // defined in RFC 5893. bidirule func(s string) bool } -// A Profile defines the configuration of a IDNA mapper. +// A Profile defines the configuration of an IDNA mapper. type Profile struct { options } @@ -251,23 +251,21 @@ var ( punycode = &Profile{} lookup = &Profile{options{ - transitional: true, - useSTD3Rules: true, - validateLabels: true, - removeLeadingDots: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + transitional: true, + useSTD3Rules: true, + validateLabels: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} display = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - removeLeadingDots: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + useSTD3Rules: true, + validateLabels: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} registration = &Profile{options{ useSTD3Rules: true, @@ -302,14 +300,16 @@ func (e runeError) Error() string { // see http://www.unicode.org/reports/tr46. func (p *Profile) process(s string, toASCII bool) (string, error) { var err error + var isBidi bool if p.mapping != nil { - s, err = p.mapping(p, s) + s, isBidi, err = p.mapping(p, s) } // Remove leading empty labels. if p.removeLeadingDots { for ; len(s) > 0 && s[0] == '.'; s = s[1:] { } } + // TODO: allow for a quick check of the tables data. // It seems like we should only create this error on ToASCII, but the // UTS 46 conformance tests suggests we should always check this. if err == nil && p.verifyDNSLength && s == "" { @@ -335,6 +335,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { // Spec says keep the old label. continue } + isBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight labels.set(u) if err == nil && p.validateLabels { err = p.fromPuny(p, u) @@ -349,6 +350,14 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { err = p.validateLabel(label) } } + if isBidi && p.bidirule != nil && err == nil { + for labels.reset(); !labels.done(); labels.next() { + if !p.bidirule(labels.label()) { + err = &labelError{s, "B"} + break + } + } + } if toASCII { for labels.reset(); !labels.done(); labels.next() { label := labels.label() @@ -380,16 +389,26 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { return s, err } -func normalize(p *Profile, s string) (string, error) { - return norm.NFC.String(s), nil +func normalize(p *Profile, s string) (mapped string, isBidi bool, err error) { + // TODO: consider first doing a quick check to see if any of these checks + // need to be done. This will make it slower in the general case, but + // faster in the common case. + mapped = norm.NFC.String(s) + isBidi = bidirule.DirectionString(mapped) == bidi.RightToLeft + return mapped, isBidi, nil } -func validateRegistration(p *Profile, s string) (string, error) { +func validateRegistration(p *Profile, s string) (idem string, bidi bool, err error) { + // TODO: filter need for normalization in loop below. if !norm.NFC.IsNormalString(s) { - return s, &labelError{s, "V1"} + return s, false, &labelError{s, "V1"} } for i := 0; i < len(s); { v, sz := trie.lookupString(s[i:]) + if sz == 0 { + return s, bidi, runeError(utf8.RuneError) + } + bidi = bidi || info(v).isBidi(s[i:]) // Copy bytes not copied so far. switch p.simplify(info(v).category()) { // TODO: handle the NV8 defined in the Unicode idna data set to allow @@ -397,21 +416,50 @@ func validateRegistration(p *Profile, s string) (string, error) { case valid, deviation: case disallowed, mapped, unknown, ignored: r, _ := utf8.DecodeRuneInString(s[i:]) - return s, runeError(r) + return s, bidi, runeError(r) } i += sz } - return s, nil + return s, bidi, nil } -func validateAndMap(p *Profile, s string) (string, error) { +func (c info) isBidi(s string) bool { + if !c.isMapped() { + return c&attributesMask == rtl + } + // TODO: also store bidi info for mapped data. This is possible, but a bit + // cumbersome and not for the common case. + p, _ := bidi.LookupString(s) + switch p.Class() { + case bidi.R, bidi.AL, bidi.AN: + return true + } + return false +} + +func validateAndMap(p *Profile, s string) (vm string, bidi bool, err error) { var ( - err error - b []byte - k int + b []byte + k int ) + // combinedInfoBits contains the or-ed bits of all runes. We use this + // to derive the mayNeedNorm bit later. This may trigger normalization + // overeagerly, but it will not do so in the common case. The end result + // is another 10% saving on BenchmarkProfile for the common case. + var combinedInfoBits info for i := 0; i < len(s); { v, sz := trie.lookupString(s[i:]) + if sz == 0 { + b = append(b, s[k:i]...) + b = append(b, "\ufffd"...) + k = len(s) + if err == nil { + err = runeError(utf8.RuneError) + } + break + } + combinedInfoBits |= info(v) + bidi = bidi || info(v).isBidi(s[i:]) start := i i += sz // Copy bytes not copied so far. @@ -438,7 +486,9 @@ func validateAndMap(p *Profile, s string) (string, error) { } if k == 0 { // No changes so far. - s = norm.NFC.String(s) + if combinedInfoBits&mayNeedNorm != 0 { + s = norm.NFC.String(s) + } } else { b = append(b, s[k:]...) if norm.NFC.QuickSpan(b) != len(b) { @@ -447,7 +497,7 @@ func validateAndMap(p *Profile, s string) (string, error) { // TODO: the punycode converters require strings as input. s = string(b) } - return s, err + return s, bidi, err } // A labelIter allows iterating over domain name labels. @@ -542,8 +592,13 @@ func validateFromPunycode(p *Profile, s string) error { if !norm.NFC.IsNormalString(s) { return &labelError{s, "V1"} } + // TODO: detect whether string may have to be normalized in the following + // loop. for i := 0; i < len(s); { v, sz := trie.lookupString(s[i:]) + if sz == 0 { + return runeError(utf8.RuneError) + } if c := p.simplify(info(v).category()); c != valid && c != deviation { return &labelError{s, "V6"} } @@ -616,16 +671,13 @@ var joinStates = [][numJoinTypes]joinState{ // validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are // already implicitly satisfied by the overall implementation. -func (p *Profile) validateLabel(s string) error { +func (p *Profile) validateLabel(s string) (err error) { if s == "" { if p.verifyDNSLength { return &labelError{s, "A4"} } return nil } - if p.bidirule != nil && !p.bidirule(s) { - return &labelError{s, "B"} - } if !p.validateLabels { return nil } diff --git a/vendor/golang.org/x/text/internal/export/idna/idna_test.go b/vendor/golang.org/x/text/internal/export/idna/idna_test.go index 82ead035a..ff878e5b2 100644 --- a/vendor/golang.org/x/text/internal/export/idna/idna_test.go +++ b/vendor/golang.org/x/text/internal/export/idna/idna_test.go @@ -149,21 +149,25 @@ func TestLabelErrors(t *testing.T) { // For backwards compatibility, the Punycode profile does not map runes. {punyA, "\u3002b", "xn--b-83t", ""}, {punyA, "..b", "..b", ""}, - // Only strip leading empty labels for certain profiles. Stripping - // leading empty labels here but not for "empty" punycode above seems - // inconsistent, but seems to be applied by both the conformance test - // and Chrome. So we turn it off by default, support it as an option, - // and enable it in profiles where it seems commonplace. - {lengthA, ".b", "b", ""}, - {lengthA, "\u3002b", "b", ""}, - {lengthA, "..b", "b", ""}, + + {lengthA, ".b", ".b", "A4"}, + {lengthA, "\u3002b", ".b", "A4"}, + {lengthA, "..b", "..b", "A4"}, {lengthA, "b..", "b..", ""}, + // Sharpened Bidi rules for Unicode 10.0.0. Apply for ALL labels in ANY + // of the labels is RTL. + {lengthA, "\ufe05\u3002\u3002\U0002603e\u1ce0", "..xn--t6f5138v", "A4"}, + {lengthA, "FAX\u2a77\U0001d186\u3002\U0001e942\U000e0181\u180c", "", "B6"}, + {resolve, "a..b", "a..b", ""}, - {resolve, ".b", "b", ""}, - {resolve, "\u3002b", "b", ""}, - {resolve, "..b", "b", ""}, + // Note that leading dots are not stripped. This is to be consistent + // with the Punycode profile as well as the conformance test. + {resolve, ".b", ".b", ""}, + {resolve, "\u3002b", ".b", ""}, + {resolve, "..b", "..b", ""}, {resolve, "b..", "b..", ""}, + {resolve, "\xed", "", "P1"}, // Raw punycode {punyA, "", "", ""}, @@ -297,3 +301,9 @@ func unescape(s string) string { } return s } + +func BenchmarkProfile(b *testing.B) { + for i := 0; i < b.N; i++ { + Lookup.ToASCII("www.yahoogle.com") + } +} diff --git a/vendor/golang.org/x/text/internal/export/idna/tables.go b/vendor/golang.org/x/text/internal/export/idna/tables.go index d2819345f..f910b2691 100644 --- a/vendor/golang.org/x/text/internal/export/idna/tables.go +++ b/vendor/golang.org/x/text/internal/export/idna/tables.go @@ -3,7 +3,7 @@ package idna // UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" +const UnicodeVersion = "10.0.0" var mappings string = "" + // Size: 8176 bytes "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + @@ -544,7 +544,7 @@ func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// idnaTrie. Total size: 28496 bytes (27.83 KiB). Checksum: 43288b883596640e. +// idnaTrie. Total size: 29052 bytes (28.37 KiB). Checksum: ef06e7ecc26f36dd. type idnaTrie struct{} func newIdnaTrie(i int) *idnaTrie { @@ -554,17 +554,17 @@ func newIdnaTrie(i int) *idnaTrie { // lookupValue determines the type of block n and looks up the value for b. func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { switch { - case n < 123: + case n < 125: return uint16(idnaValues[n<<6+uint32(b)]) default: - n -= 123 + n -= 125 return uint16(idnaSparse.lookup(n, b)) } } -// idnaValues: 125 blocks, 8000 entries, 16000 bytes +// idnaValues: 127 blocks, 8128 entries, 16256 bytes // The third block is the zero block. -var idnaValues = [8000]uint16{ +var idnaValues = [8128]uint16{ // Block 0x0, offset 0x0 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, @@ -675,14 +675,14 @@ var idnaValues = [8000]uint16{ 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, // Block 0xa, offset 0x280 - 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x1308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, - 0x286: 0x1308, 0x287: 0x1308, 0x288: 0x1308, 0x289: 0x1308, 0x28a: 0x1308, 0x28b: 0x1308, - 0x28c: 0x1308, 0x28d: 0x1308, 0x28e: 0x1308, 0x28f: 0x13c0, 0x290: 0x1308, 0x291: 0x1308, - 0x292: 0x1308, 0x293: 0x1308, 0x294: 0x1308, 0x295: 0x1308, 0x296: 0x1308, 0x297: 0x1308, - 0x298: 0x1308, 0x299: 0x1308, 0x29a: 0x1308, 0x29b: 0x1308, 0x29c: 0x1308, 0x29d: 0x1308, - 0x29e: 0x1308, 0x29f: 0x1308, 0x2a0: 0x1308, 0x2a1: 0x1308, 0x2a2: 0x1308, 0x2a3: 0x1308, - 0x2a4: 0x1308, 0x2a5: 0x1308, 0x2a6: 0x1308, 0x2a7: 0x1308, 0x2a8: 0x1308, 0x2a9: 0x1308, - 0x2aa: 0x1308, 0x2ab: 0x1308, 0x2ac: 0x1308, 0x2ad: 0x1308, 0x2ae: 0x1308, 0x2af: 0x1308, + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, + 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, + 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, + 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, + 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, + 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, + 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, @@ -723,8 +723,8 @@ var idnaValues = [8000]uint16{ 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, // Block 0xe, offset 0x380 - 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x1308, 0x384: 0x1308, 0x385: 0x1308, - 0x386: 0x1308, 0x387: 0x1308, 0x388: 0x1318, 0x389: 0x1318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, + 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, @@ -759,129 +759,129 @@ var idnaValues = [8000]uint16{ 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, // Block 0x11, offset 0x440 - 0x440: 0x0040, 0x441: 0x0040, 0x442: 0x0040, 0x443: 0x0040, 0x444: 0x0040, 0x445: 0x0040, - 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0018, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0018, - 0x44c: 0x0018, 0x44d: 0x0018, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x1308, 0x451: 0x1308, - 0x452: 0x1308, 0x453: 0x1308, 0x454: 0x1308, 0x455: 0x1308, 0x456: 0x1308, 0x457: 0x1308, - 0x458: 0x1308, 0x459: 0x1308, 0x45a: 0x1308, 0x45b: 0x0018, 0x45c: 0x0340, 0x45d: 0x0040, - 0x45e: 0x0018, 0x45f: 0x0018, 0x460: 0x0208, 0x461: 0x0008, 0x462: 0x0408, 0x463: 0x0408, - 0x464: 0x0408, 0x465: 0x0408, 0x466: 0x0208, 0x467: 0x0408, 0x468: 0x0208, 0x469: 0x0408, - 0x46a: 0x0208, 0x46b: 0x0208, 0x46c: 0x0208, 0x46d: 0x0208, 0x46e: 0x0208, 0x46f: 0x0408, - 0x470: 0x0408, 0x471: 0x0408, 0x472: 0x0408, 0x473: 0x0208, 0x474: 0x0208, 0x475: 0x0208, - 0x476: 0x0208, 0x477: 0x0208, 0x478: 0x0208, 0x479: 0x0208, 0x47a: 0x0208, 0x47b: 0x0208, - 0x47c: 0x0208, 0x47d: 0x0208, 0x47e: 0x0208, 0x47f: 0x0208, + 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, + 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, + 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, + 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, + 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, + 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, + 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, + 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, + 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, + 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, // Block 0x12, offset 0x480 - 0x480: 0x0408, 0x481: 0x0208, 0x482: 0x0208, 0x483: 0x0408, 0x484: 0x0408, 0x485: 0x0408, - 0x486: 0x0408, 0x487: 0x0408, 0x488: 0x0408, 0x489: 0x0408, 0x48a: 0x0408, 0x48b: 0x0408, - 0x48c: 0x0208, 0x48d: 0x0408, 0x48e: 0x0208, 0x48f: 0x0408, 0x490: 0x0208, 0x491: 0x0208, - 0x492: 0x0408, 0x493: 0x0408, 0x494: 0x0018, 0x495: 0x0408, 0x496: 0x1308, 0x497: 0x1308, - 0x498: 0x1308, 0x499: 0x1308, 0x49a: 0x1308, 0x49b: 0x1308, 0x49c: 0x1308, 0x49d: 0x0040, - 0x49e: 0x0018, 0x49f: 0x1308, 0x4a0: 0x1308, 0x4a1: 0x1308, 0x4a2: 0x1308, 0x4a3: 0x1308, - 0x4a4: 0x1308, 0x4a5: 0x0008, 0x4a6: 0x0008, 0x4a7: 0x1308, 0x4a8: 0x1308, 0x4a9: 0x0018, - 0x4aa: 0x1308, 0x4ab: 0x1308, 0x4ac: 0x1308, 0x4ad: 0x1308, 0x4ae: 0x0408, 0x4af: 0x0408, - 0x4b0: 0x0008, 0x4b1: 0x0008, 0x4b2: 0x0008, 0x4b3: 0x0008, 0x4b4: 0x0008, 0x4b5: 0x0008, - 0x4b6: 0x0008, 0x4b7: 0x0008, 0x4b8: 0x0008, 0x4b9: 0x0008, 0x4ba: 0x0208, 0x4bb: 0x0208, - 0x4bc: 0x0208, 0x4bd: 0x0008, 0x4be: 0x0008, 0x4bf: 0x0208, + 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, + 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, + 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, + 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, + 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, + 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, + 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, + 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, + 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, + 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, + 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, // Block 0x13, offset 0x4c0 - 0x4c0: 0x0018, 0x4c1: 0x0018, 0x4c2: 0x0018, 0x4c3: 0x0018, 0x4c4: 0x0018, 0x4c5: 0x0018, - 0x4c6: 0x0018, 0x4c7: 0x0018, 0x4c8: 0x0018, 0x4c9: 0x0018, 0x4ca: 0x0018, 0x4cb: 0x0018, - 0x4cc: 0x0018, 0x4cd: 0x0018, 0x4ce: 0x0040, 0x4cf: 0x0340, 0x4d0: 0x0408, 0x4d1: 0x1308, - 0x4d2: 0x0208, 0x4d3: 0x0208, 0x4d4: 0x0208, 0x4d5: 0x0408, 0x4d6: 0x0408, 0x4d7: 0x0408, - 0x4d8: 0x0408, 0x4d9: 0x0408, 0x4da: 0x0208, 0x4db: 0x0208, 0x4dc: 0x0208, 0x4dd: 0x0208, - 0x4de: 0x0408, 0x4df: 0x0208, 0x4e0: 0x0208, 0x4e1: 0x0208, 0x4e2: 0x0208, 0x4e3: 0x0208, - 0x4e4: 0x0208, 0x4e5: 0x0208, 0x4e6: 0x0208, 0x4e7: 0x0208, 0x4e8: 0x0408, 0x4e9: 0x0208, - 0x4ea: 0x0408, 0x4eb: 0x0208, 0x4ec: 0x0408, 0x4ed: 0x0208, 0x4ee: 0x0208, 0x4ef: 0x0408, - 0x4f0: 0x1308, 0x4f1: 0x1308, 0x4f2: 0x1308, 0x4f3: 0x1308, 0x4f4: 0x1308, 0x4f5: 0x1308, - 0x4f6: 0x1308, 0x4f7: 0x1308, 0x4f8: 0x1308, 0x4f9: 0x1308, 0x4fa: 0x1308, 0x4fb: 0x1308, - 0x4fc: 0x1308, 0x4fd: 0x1308, 0x4fe: 0x1308, 0x4ff: 0x1308, + 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, + 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, + 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, + 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, + 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, + 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, + 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, + 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, + 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, + 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, + 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, // Block 0x14, offset 0x500 - 0x500: 0x1008, 0x501: 0x1308, 0x502: 0x1308, 0x503: 0x1308, 0x504: 0x1308, 0x505: 0x1308, - 0x506: 0x1308, 0x507: 0x1308, 0x508: 0x1308, 0x509: 0x1008, 0x50a: 0x1008, 0x50b: 0x1008, - 0x50c: 0x1008, 0x50d: 0x1b08, 0x50e: 0x1008, 0x50f: 0x1008, 0x510: 0x0008, 0x511: 0x1308, - 0x512: 0x1308, 0x513: 0x1308, 0x514: 0x1308, 0x515: 0x1308, 0x516: 0x1308, 0x517: 0x1308, - 0x518: 0x04c9, 0x519: 0x0501, 0x51a: 0x0539, 0x51b: 0x0571, 0x51c: 0x05a9, 0x51d: 0x05e1, - 0x51e: 0x0619, 0x51f: 0x0651, 0x520: 0x0008, 0x521: 0x0008, 0x522: 0x1308, 0x523: 0x1308, - 0x524: 0x0018, 0x525: 0x0018, 0x526: 0x0008, 0x527: 0x0008, 0x528: 0x0008, 0x529: 0x0008, - 0x52a: 0x0008, 0x52b: 0x0008, 0x52c: 0x0008, 0x52d: 0x0008, 0x52e: 0x0008, 0x52f: 0x0008, - 0x530: 0x0018, 0x531: 0x0008, 0x532: 0x0008, 0x533: 0x0008, 0x534: 0x0008, 0x535: 0x0008, - 0x536: 0x0008, 0x537: 0x0008, 0x538: 0x0008, 0x539: 0x0008, 0x53a: 0x0008, 0x53b: 0x0008, - 0x53c: 0x0008, 0x53d: 0x0008, 0x53e: 0x0008, 0x53f: 0x0008, + 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, + 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, + 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, + 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, + 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, + 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, + 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, + 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, + 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, + 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, + 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, // Block 0x15, offset 0x540 - 0x540: 0x0008, 0x541: 0x1308, 0x542: 0x1008, 0x543: 0x1008, 0x544: 0x0040, 0x545: 0x0008, - 0x546: 0x0008, 0x547: 0x0008, 0x548: 0x0008, 0x549: 0x0008, 0x54a: 0x0008, 0x54b: 0x0008, - 0x54c: 0x0008, 0x54d: 0x0040, 0x54e: 0x0040, 0x54f: 0x0008, 0x550: 0x0008, 0x551: 0x0040, - 0x552: 0x0040, 0x553: 0x0008, 0x554: 0x0008, 0x555: 0x0008, 0x556: 0x0008, 0x557: 0x0008, - 0x558: 0x0008, 0x559: 0x0008, 0x55a: 0x0008, 0x55b: 0x0008, 0x55c: 0x0008, 0x55d: 0x0008, - 0x55e: 0x0008, 0x55f: 0x0008, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x0008, 0x563: 0x0008, - 0x564: 0x0008, 0x565: 0x0008, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0040, - 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, - 0x570: 0x0008, 0x571: 0x0040, 0x572: 0x0008, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, - 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0040, 0x57b: 0x0040, - 0x57c: 0x1308, 0x57d: 0x0008, 0x57e: 0x1008, 0x57f: 0x1008, + 0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08, + 0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08, + 0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08, + 0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808, + 0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040, + 0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08, + 0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08, + 0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040, + 0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, + 0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040, + 0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040, // Block 0x16, offset 0x580 - 0x580: 0x1008, 0x581: 0x1308, 0x582: 0x1308, 0x583: 0x1308, 0x584: 0x1308, 0x585: 0x0040, - 0x586: 0x0040, 0x587: 0x1008, 0x588: 0x1008, 0x589: 0x0040, 0x58a: 0x0040, 0x58b: 0x1008, - 0x58c: 0x1008, 0x58d: 0x1b08, 0x58e: 0x0008, 0x58f: 0x0040, 0x590: 0x0040, 0x591: 0x0040, - 0x592: 0x0040, 0x593: 0x0040, 0x594: 0x0040, 0x595: 0x0040, 0x596: 0x0040, 0x597: 0x1008, - 0x598: 0x0040, 0x599: 0x0040, 0x59a: 0x0040, 0x59b: 0x0040, 0x59c: 0x0689, 0x59d: 0x06c1, - 0x59e: 0x0040, 0x59f: 0x06f9, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x1308, 0x5a3: 0x1308, - 0x5a4: 0x0040, 0x5a5: 0x0040, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, + 0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308, + 0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008, + 0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308, + 0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308, + 0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1, + 0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308, + 0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, - 0x5b0: 0x0008, 0x5b1: 0x0008, 0x5b2: 0x0018, 0x5b3: 0x0018, 0x5b4: 0x0018, 0x5b5: 0x0018, - 0x5b6: 0x0018, 0x5b7: 0x0018, 0x5b8: 0x0018, 0x5b9: 0x0018, 0x5ba: 0x0018, 0x5bb: 0x0018, - 0x5bc: 0x0040, 0x5bd: 0x0040, 0x5be: 0x0040, 0x5bf: 0x0040, + 0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008, + 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008, + 0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008, // Block 0x17, offset 0x5c0 - 0x5c0: 0x0040, 0x5c1: 0x1308, 0x5c2: 0x1308, 0x5c3: 0x1008, 0x5c4: 0x0040, 0x5c5: 0x0008, - 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0040, - 0x5cc: 0x0040, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, + 0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008, + 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008, + 0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, - 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0731, 0x5f4: 0x0040, 0x5f5: 0x0008, - 0x5f6: 0x0769, 0x5f7: 0x0040, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, - 0x5fc: 0x1308, 0x5fd: 0x0040, 0x5fe: 0x1008, 0x5ff: 0x1008, + 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040, + 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, + 0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008, // Block 0x18, offset 0x600 - 0x600: 0x1008, 0x601: 0x1308, 0x602: 0x1308, 0x603: 0x0040, 0x604: 0x0040, 0x605: 0x0040, - 0x606: 0x0040, 0x607: 0x1308, 0x608: 0x1308, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x1308, - 0x60c: 0x1308, 0x60d: 0x1b08, 0x60e: 0x0040, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x1308, - 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x0040, - 0x618: 0x0040, 0x619: 0x07a1, 0x61a: 0x07d9, 0x61b: 0x0811, 0x61c: 0x0008, 0x61d: 0x0040, - 0x61e: 0x0849, 0x61f: 0x0040, 0x620: 0x0040, 0x621: 0x0040, 0x622: 0x0040, 0x623: 0x0040, + 0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040, + 0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008, + 0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040, + 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008, + 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1, + 0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308, 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, - 0x630: 0x1308, 0x631: 0x1308, 0x632: 0x0008, 0x633: 0x0008, 0x634: 0x0008, 0x635: 0x1308, - 0x636: 0x0040, 0x637: 0x0040, 0x638: 0x0040, 0x639: 0x0040, 0x63a: 0x0040, 0x63b: 0x0040, - 0x63c: 0x0040, 0x63d: 0x0040, 0x63e: 0x0040, 0x63f: 0x0040, + 0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018, + 0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018, + 0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x0040, 0x63f: 0x0040, // Block 0x19, offset 0x640 - 0x640: 0x0040, 0x641: 0x1308, 0x642: 0x1308, 0x643: 0x1008, 0x644: 0x0040, 0x645: 0x0008, - 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0008, - 0x64c: 0x0008, 0x64d: 0x0008, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0008, + 0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008, + 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040, + 0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040, 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, - 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0040, 0x675: 0x0008, - 0x676: 0x0008, 0x677: 0x0008, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, - 0x67c: 0x1308, 0x67d: 0x0008, 0x67e: 0x1008, 0x67f: 0x1008, + 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008, + 0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008, // Block 0x1a, offset 0x680 - 0x680: 0x1008, 0x681: 0x1308, 0x682: 0x1308, 0x683: 0x1308, 0x684: 0x1308, 0x685: 0x1308, - 0x686: 0x0040, 0x687: 0x1308, 0x688: 0x1308, 0x689: 0x1008, 0x68a: 0x0040, 0x68b: 0x1008, - 0x68c: 0x1008, 0x68d: 0x1b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0008, 0x691: 0x0040, + 0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040, + 0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308, + 0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308, 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, - 0x698: 0x0040, 0x699: 0x0040, 0x69a: 0x0040, 0x69b: 0x0040, 0x69c: 0x0040, 0x69d: 0x0040, - 0x69e: 0x0040, 0x69f: 0x0040, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x1308, 0x6a3: 0x1308, + 0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040, + 0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040, 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, - 0x6b0: 0x0018, 0x6b1: 0x0018, 0x6b2: 0x0040, 0x6b3: 0x0040, 0x6b4: 0x0040, 0x6b5: 0x0040, - 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308, + 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040, 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, // Block 0x1b, offset 0x6c0 - 0x6c0: 0x0040, 0x6c1: 0x1308, 0x6c2: 0x1008, 0x6c3: 0x1008, 0x6c4: 0x0040, 0x6c5: 0x0008, + 0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008, 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, - 0x6cc: 0x0008, 0x6cd: 0x0040, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0040, + 0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008, 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, @@ -889,1457 +889,1490 @@ var idnaValues = [8000]uint16{ 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, - 0x6fc: 0x1308, 0x6fd: 0x0008, 0x6fe: 0x1008, 0x6ff: 0x1308, + 0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008, // Block 0x1c, offset 0x700 - 0x700: 0x1008, 0x701: 0x1308, 0x702: 0x1308, 0x703: 0x1308, 0x704: 0x1308, 0x705: 0x0040, - 0x706: 0x0040, 0x707: 0x1008, 0x708: 0x1008, 0x709: 0x0040, 0x70a: 0x0040, 0x70b: 0x1008, - 0x70c: 0x1008, 0x70d: 0x1b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0040, 0x711: 0x0040, - 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x1308, 0x717: 0x1008, - 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0881, 0x71d: 0x08b9, - 0x71e: 0x0040, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x1308, 0x723: 0x1308, + 0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308, + 0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008, + 0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040, + 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040, + 0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308, 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, - 0x730: 0x0018, 0x731: 0x0008, 0x732: 0x0018, 0x733: 0x0018, 0x734: 0x0018, 0x735: 0x0018, - 0x736: 0x0018, 0x737: 0x0018, 0x738: 0x0040, 0x739: 0x0040, 0x73a: 0x0040, 0x73b: 0x0040, - 0x73c: 0x0040, 0x73d: 0x0040, 0x73e: 0x0040, 0x73f: 0x0040, + 0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040, + 0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308, + 0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308, // Block 0x1d, offset 0x740 - 0x740: 0x0040, 0x741: 0x0040, 0x742: 0x1308, 0x743: 0x0008, 0x744: 0x0040, 0x745: 0x0008, - 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0040, - 0x74c: 0x0040, 0x74d: 0x0040, 0x74e: 0x0008, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, - 0x752: 0x0008, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0040, 0x757: 0x0040, - 0x758: 0x0040, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0040, 0x75c: 0x0008, 0x75d: 0x0040, - 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0040, 0x761: 0x0040, 0x762: 0x0040, 0x763: 0x0008, - 0x764: 0x0008, 0x765: 0x0040, 0x766: 0x0040, 0x767: 0x0040, 0x768: 0x0008, 0x769: 0x0008, - 0x76a: 0x0008, 0x76b: 0x0040, 0x76c: 0x0040, 0x76d: 0x0040, 0x76e: 0x0008, 0x76f: 0x0008, - 0x770: 0x0008, 0x771: 0x0008, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0008, 0x775: 0x0008, + 0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008, + 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008, + 0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, + 0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008, + 0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008, + 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008, + 0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040, + 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008, 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, - 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x1008, 0x77f: 0x1008, + 0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308, // Block 0x1e, offset 0x780 - 0x780: 0x1308, 0x781: 0x1008, 0x782: 0x1008, 0x783: 0x1008, 0x784: 0x1008, 0x785: 0x0040, - 0x786: 0x1308, 0x787: 0x1308, 0x788: 0x1308, 0x789: 0x0040, 0x78a: 0x1308, 0x78b: 0x1308, - 0x78c: 0x1308, 0x78d: 0x1b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, - 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x1308, 0x796: 0x1308, 0x797: 0x0040, - 0x798: 0x0008, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0040, 0x79d: 0x0040, - 0x79e: 0x0040, 0x79f: 0x0040, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x1308, 0x7a3: 0x1308, + 0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040, + 0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008, + 0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, + 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008, + 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9, + 0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308, 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, - 0x7b0: 0x0040, 0x7b1: 0x0040, 0x7b2: 0x0040, 0x7b3: 0x0040, 0x7b4: 0x0040, 0x7b5: 0x0040, - 0x7b6: 0x0040, 0x7b7: 0x0040, 0x7b8: 0x0018, 0x7b9: 0x0018, 0x7ba: 0x0018, 0x7bb: 0x0018, - 0x7bc: 0x0018, 0x7bd: 0x0018, 0x7be: 0x0018, 0x7bf: 0x0018, + 0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018, + 0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040, + 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040, // Block 0x1f, offset 0x7c0 - 0x7c0: 0x0008, 0x7c1: 0x1308, 0x7c2: 0x1008, 0x7c3: 0x1008, 0x7c4: 0x0040, 0x7c5: 0x0008, - 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0008, - 0x7cc: 0x0008, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, - 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0008, 0x7d7: 0x0008, - 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0008, 0x7dc: 0x0008, 0x7dd: 0x0008, - 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x0008, 0x7e3: 0x0008, - 0x7e4: 0x0008, 0x7e5: 0x0008, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0040, - 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, - 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0040, 0x7f5: 0x0008, + 0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008, + 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040, + 0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, + 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040, + 0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040, + 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008, + 0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008, + 0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008, 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, - 0x7fc: 0x1308, 0x7fd: 0x0008, 0x7fe: 0x1008, 0x7ff: 0x1308, + 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008, // Block 0x20, offset 0x800 - 0x800: 0x1008, 0x801: 0x1008, 0x802: 0x1008, 0x803: 0x1008, 0x804: 0x1008, 0x805: 0x0040, - 0x806: 0x1308, 0x807: 0x1008, 0x808: 0x1008, 0x809: 0x0040, 0x80a: 0x1008, 0x80b: 0x1008, - 0x80c: 0x1308, 0x80d: 0x1b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, - 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x1008, 0x816: 0x1008, 0x817: 0x0040, - 0x818: 0x0040, 0x819: 0x0040, 0x81a: 0x0040, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, - 0x81e: 0x0008, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x1308, 0x823: 0x1308, + 0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040, + 0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308, + 0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, + 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040, + 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, + 0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308, 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, - 0x830: 0x0040, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, - 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0040, 0x839: 0x0040, 0x83a: 0x0040, 0x83b: 0x0040, - 0x83c: 0x0040, 0x83d: 0x0040, 0x83e: 0x0040, 0x83f: 0x0040, + 0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, + 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018, + 0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018, // Block 0x21, offset 0x840 - 0x840: 0x1008, 0x841: 0x1308, 0x842: 0x1308, 0x843: 0x1308, 0x844: 0x1308, 0x845: 0x0040, - 0x846: 0x1008, 0x847: 0x1008, 0x848: 0x1008, 0x849: 0x0040, 0x84a: 0x1008, 0x84b: 0x1008, - 0x84c: 0x1008, 0x84d: 0x1b08, 0x84e: 0x0008, 0x84f: 0x0018, 0x850: 0x0040, 0x851: 0x0040, - 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x1008, - 0x858: 0x0018, 0x859: 0x0018, 0x85a: 0x0018, 0x85b: 0x0018, 0x85c: 0x0018, 0x85d: 0x0018, - 0x85e: 0x0018, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x1308, 0x863: 0x1308, - 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, + 0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0040, 0x845: 0x0008, + 0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008, + 0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040, + 0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008, + 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008, + 0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008, + 0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040, 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, - 0x870: 0x0018, 0x871: 0x0018, 0x872: 0x0018, 0x873: 0x0018, 0x874: 0x0018, 0x875: 0x0018, - 0x876: 0x0018, 0x877: 0x0018, 0x878: 0x0018, 0x879: 0x0018, 0x87a: 0x0008, 0x87b: 0x0008, - 0x87c: 0x0008, 0x87d: 0x0008, 0x87e: 0x0008, 0x87f: 0x0008, + 0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008, + 0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040, + 0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308, // Block 0x22, offset 0x880 - 0x880: 0x0040, 0x881: 0x0008, 0x882: 0x0008, 0x883: 0x0040, 0x884: 0x0008, 0x885: 0x0040, - 0x886: 0x0040, 0x887: 0x0008, 0x888: 0x0008, 0x889: 0x0040, 0x88a: 0x0008, 0x88b: 0x0040, - 0x88c: 0x0040, 0x88d: 0x0008, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, - 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x0008, - 0x898: 0x0040, 0x899: 0x0008, 0x89a: 0x0008, 0x89b: 0x0008, 0x89c: 0x0008, 0x89d: 0x0008, - 0x89e: 0x0008, 0x89f: 0x0008, 0x8a0: 0x0040, 0x8a1: 0x0008, 0x8a2: 0x0008, 0x8a3: 0x0008, - 0x8a4: 0x0040, 0x8a5: 0x0008, 0x8a6: 0x0040, 0x8a7: 0x0008, 0x8a8: 0x0040, 0x8a9: 0x0040, - 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0040, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, - 0x8b0: 0x0008, 0x8b1: 0x1308, 0x8b2: 0x0008, 0x8b3: 0x0929, 0x8b4: 0x1308, 0x8b5: 0x1308, - 0x8b6: 0x1308, 0x8b7: 0x1308, 0x8b8: 0x1308, 0x8b9: 0x1308, 0x8ba: 0x0040, 0x8bb: 0x1308, - 0x8bc: 0x1308, 0x8bd: 0x0008, 0x8be: 0x0040, 0x8bf: 0x0040, + 0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040, + 0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, + 0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040, + 0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040, + 0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, + 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040, + 0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040, + 0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040, // Block 0x23, offset 0x8c0 - 0x8c0: 0x0008, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x09d1, 0x8c4: 0x0008, 0x8c5: 0x0008, - 0x8c6: 0x0008, 0x8c7: 0x0008, 0x8c8: 0x0040, 0x8c9: 0x0008, 0x8ca: 0x0008, 0x8cb: 0x0008, - 0x8cc: 0x0008, 0x8cd: 0x0a09, 0x8ce: 0x0008, 0x8cf: 0x0008, 0x8d0: 0x0008, 0x8d1: 0x0008, - 0x8d2: 0x0a41, 0x8d3: 0x0008, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0a79, - 0x8d8: 0x0008, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0ab1, 0x8dd: 0x0008, - 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, - 0x8e4: 0x0008, 0x8e5: 0x0008, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0ae9, - 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0040, 0x8ee: 0x0040, 0x8ef: 0x0040, - 0x8f0: 0x0040, 0x8f1: 0x1308, 0x8f2: 0x1308, 0x8f3: 0x0b21, 0x8f4: 0x1308, 0x8f5: 0x0b59, - 0x8f6: 0x0b91, 0x8f7: 0x0bc9, 0x8f8: 0x0c19, 0x8f9: 0x0c51, 0x8fa: 0x1308, 0x8fb: 0x1308, - 0x8fc: 0x1308, 0x8fd: 0x1308, 0x8fe: 0x1308, 0x8ff: 0x1008, + 0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040, + 0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008, + 0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040, + 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008, + 0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018, + 0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308, + 0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, + 0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018, + 0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008, + 0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008, // Block 0x24, offset 0x900 - 0x900: 0x1308, 0x901: 0x0ca1, 0x902: 0x1308, 0x903: 0x1308, 0x904: 0x1b08, 0x905: 0x0018, - 0x906: 0x1308, 0x907: 0x1308, 0x908: 0x0008, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, - 0x90c: 0x0008, 0x90d: 0x1308, 0x90e: 0x1308, 0x90f: 0x1308, 0x910: 0x1308, 0x911: 0x1308, - 0x912: 0x1308, 0x913: 0x0cd9, 0x914: 0x1308, 0x915: 0x1308, 0x916: 0x1308, 0x917: 0x1308, - 0x918: 0x0040, 0x919: 0x1308, 0x91a: 0x1308, 0x91b: 0x1308, 0x91c: 0x1308, 0x91d: 0x0d11, - 0x91e: 0x1308, 0x91f: 0x1308, 0x920: 0x1308, 0x921: 0x1308, 0x922: 0x0d49, 0x923: 0x1308, - 0x924: 0x1308, 0x925: 0x1308, 0x926: 0x1308, 0x927: 0x0d81, 0x928: 0x1308, 0x929: 0x1308, - 0x92a: 0x1308, 0x92b: 0x1308, 0x92c: 0x0db9, 0x92d: 0x1308, 0x92e: 0x1308, 0x92f: 0x1308, - 0x930: 0x1308, 0x931: 0x1308, 0x932: 0x1308, 0x933: 0x1308, 0x934: 0x1308, 0x935: 0x1308, - 0x936: 0x1308, 0x937: 0x1308, 0x938: 0x1308, 0x939: 0x0df1, 0x93a: 0x1308, 0x93b: 0x1308, - 0x93c: 0x1308, 0x93d: 0x0040, 0x93e: 0x0018, 0x93f: 0x0018, + 0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040, + 0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040, + 0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040, + 0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008, + 0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008, + 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, + 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040, + 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, + 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308, + 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308, + 0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040, // Block 0x25, offset 0x940 - 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x0008, 0x944: 0x0008, 0x945: 0x0008, - 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, - 0x94c: 0x0008, 0x94d: 0x0008, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, - 0x952: 0x0008, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0008, - 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0008, 0x95d: 0x0008, + 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008, + 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, + 0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79, + 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008, 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, - 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0008, - 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0039, 0x96d: 0x0ed1, 0x96e: 0x0ee9, 0x96f: 0x0008, - 0x970: 0x0ef9, 0x971: 0x0f09, 0x972: 0x0f19, 0x973: 0x0f31, 0x974: 0x0249, 0x975: 0x0f41, - 0x976: 0x0259, 0x977: 0x0f51, 0x978: 0x0359, 0x979: 0x0f61, 0x97a: 0x0f71, 0x97b: 0x0008, - 0x97c: 0x00d9, 0x97d: 0x0f81, 0x97e: 0x0f99, 0x97f: 0x0269, + 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9, + 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040, + 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59, + 0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308, + 0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008, // Block 0x26, offset 0x980 - 0x980: 0x0fa9, 0x981: 0x0fb9, 0x982: 0x0279, 0x983: 0x0039, 0x984: 0x0fc9, 0x985: 0x0fe1, - 0x986: 0x059d, 0x987: 0x0ee9, 0x988: 0x0ef9, 0x989: 0x0f09, 0x98a: 0x0ff9, 0x98b: 0x1011, - 0x98c: 0x1029, 0x98d: 0x0f31, 0x98e: 0x0008, 0x98f: 0x0f51, 0x990: 0x0f61, 0x991: 0x1041, - 0x992: 0x00d9, 0x993: 0x1059, 0x994: 0x05b5, 0x995: 0x05b5, 0x996: 0x0f99, 0x997: 0x0fa9, - 0x998: 0x0fb9, 0x999: 0x059d, 0x99a: 0x1071, 0x99b: 0x1089, 0x99c: 0x05cd, 0x99d: 0x1099, - 0x99e: 0x10b1, 0x99f: 0x10c9, 0x9a0: 0x10e1, 0x9a1: 0x10f9, 0x9a2: 0x0f41, 0x9a3: 0x0269, - 0x9a4: 0x0fb9, 0x9a5: 0x1089, 0x9a6: 0x1099, 0x9a7: 0x10b1, 0x9a8: 0x1111, 0x9a9: 0x10e1, - 0x9aa: 0x10f9, 0x9ab: 0x0008, 0x9ac: 0x0008, 0x9ad: 0x0008, 0x9ae: 0x0008, 0x9af: 0x0008, - 0x9b0: 0x0008, 0x9b1: 0x0008, 0x9b2: 0x0008, 0x9b3: 0x0008, 0x9b4: 0x0008, 0x9b5: 0x0008, - 0x9b6: 0x0008, 0x9b7: 0x0008, 0x9b8: 0x1129, 0x9b9: 0x0008, 0x9ba: 0x0008, 0x9bb: 0x0008, - 0x9bc: 0x0008, 0x9bd: 0x0008, 0x9be: 0x0008, 0x9bf: 0x0008, + 0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018, + 0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, + 0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308, + 0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308, + 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11, + 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308, + 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308, + 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308, + 0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308, + 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308, + 0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018, // Block 0x27, offset 0x9c0 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, - 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x1141, 0x9dc: 0x1159, 0x9dd: 0x1169, - 0x9de: 0x1181, 0x9df: 0x1029, 0x9e0: 0x1199, 0x9e1: 0x11a9, 0x9e2: 0x11c1, 0x9e3: 0x11d9, - 0x9e4: 0x11f1, 0x9e5: 0x1209, 0x9e6: 0x1221, 0x9e7: 0x05e5, 0x9e8: 0x1239, 0x9e9: 0x1251, - 0x9ea: 0xe17d, 0x9eb: 0x1269, 0x9ec: 0x1281, 0x9ed: 0x1299, 0x9ee: 0x12b1, 0x9ef: 0x12c9, - 0x9f0: 0x12e1, 0x9f1: 0x12f9, 0x9f2: 0x1311, 0x9f3: 0x1329, 0x9f4: 0x1341, 0x9f5: 0x1359, - 0x9f6: 0x1371, 0x9f7: 0x1389, 0x9f8: 0x05fd, 0x9f9: 0x13a1, 0x9fa: 0x13b9, 0x9fb: 0x13d1, - 0x9fc: 0x13e1, 0x9fd: 0x13f9, 0x9fe: 0x1411, 0x9ff: 0x1429, + 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008, + 0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008, + 0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008, + 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008, + 0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41, + 0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008, + 0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269, // Block 0x28, offset 0xa00 - 0xa00: 0xe00d, 0xa01: 0x0008, 0xa02: 0xe00d, 0xa03: 0x0008, 0xa04: 0xe00d, 0xa05: 0x0008, - 0xa06: 0xe00d, 0xa07: 0x0008, 0xa08: 0xe00d, 0xa09: 0x0008, 0xa0a: 0xe00d, 0xa0b: 0x0008, - 0xa0c: 0xe00d, 0xa0d: 0x0008, 0xa0e: 0xe00d, 0xa0f: 0x0008, 0xa10: 0xe00d, 0xa11: 0x0008, - 0xa12: 0xe00d, 0xa13: 0x0008, 0xa14: 0xe00d, 0xa15: 0x0008, 0xa16: 0xe00d, 0xa17: 0x0008, - 0xa18: 0xe00d, 0xa19: 0x0008, 0xa1a: 0xe00d, 0xa1b: 0x0008, 0xa1c: 0xe00d, 0xa1d: 0x0008, - 0xa1e: 0xe00d, 0xa1f: 0x0008, 0xa20: 0xe00d, 0xa21: 0x0008, 0xa22: 0xe00d, 0xa23: 0x0008, - 0xa24: 0xe00d, 0xa25: 0x0008, 0xa26: 0xe00d, 0xa27: 0x0008, 0xa28: 0xe00d, 0xa29: 0x0008, - 0xa2a: 0xe00d, 0xa2b: 0x0008, 0xa2c: 0xe00d, 0xa2d: 0x0008, 0xa2e: 0xe00d, 0xa2f: 0x0008, - 0xa30: 0xe00d, 0xa31: 0x0008, 0xa32: 0xe00d, 0xa33: 0x0008, 0xa34: 0xe00d, 0xa35: 0x0008, - 0xa36: 0xe00d, 0xa37: 0x0008, 0xa38: 0xe00d, 0xa39: 0x0008, 0xa3a: 0xe00d, 0xa3b: 0x0008, - 0xa3c: 0xe00d, 0xa3d: 0x0008, 0xa3e: 0xe00d, 0xa3f: 0x0008, + 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1, + 0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011, + 0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041, + 0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9, + 0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099, + 0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269, + 0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1, + 0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008, + 0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008, + 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008, + 0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008, // Block 0x29, offset 0xa40 - 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, - 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, - 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, - 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, - 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0615, 0xa5b: 0x0635, 0xa5c: 0x0008, 0xa5d: 0x0008, - 0xa5e: 0x1441, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, - 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, - 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, - 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, - 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, - 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, + 0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008, + 0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008, + 0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008, + 0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, + 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169, + 0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9, + 0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251, + 0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9, + 0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359, + 0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1, + 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429, // Block 0x2a, offset 0xa80 - 0xa80: 0x0008, 0xa81: 0x0008, 0xa82: 0x0008, 0xa83: 0x0008, 0xa84: 0x0008, 0xa85: 0x0008, - 0xa86: 0x0040, 0xa87: 0x0040, 0xa88: 0xe045, 0xa89: 0xe045, 0xa8a: 0xe045, 0xa8b: 0xe045, - 0xa8c: 0xe045, 0xa8d: 0xe045, 0xa8e: 0x0040, 0xa8f: 0x0040, 0xa90: 0x0008, 0xa91: 0x0008, - 0xa92: 0x0008, 0xa93: 0x0008, 0xa94: 0x0008, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, - 0xa98: 0x0040, 0xa99: 0xe045, 0xa9a: 0x0040, 0xa9b: 0xe045, 0xa9c: 0x0040, 0xa9d: 0xe045, - 0xa9e: 0x0040, 0xa9f: 0xe045, 0xaa0: 0x0008, 0xaa1: 0x0008, 0xaa2: 0x0008, 0xaa3: 0x0008, - 0xaa4: 0x0008, 0xaa5: 0x0008, 0xaa6: 0x0008, 0xaa7: 0x0008, 0xaa8: 0xe045, 0xaa9: 0xe045, - 0xaaa: 0xe045, 0xaab: 0xe045, 0xaac: 0xe045, 0xaad: 0xe045, 0xaae: 0xe045, 0xaaf: 0xe045, - 0xab0: 0x0008, 0xab1: 0x1459, 0xab2: 0x0008, 0xab3: 0x1471, 0xab4: 0x0008, 0xab5: 0x1489, - 0xab6: 0x0008, 0xab7: 0x14a1, 0xab8: 0x0008, 0xab9: 0x14b9, 0xaba: 0x0008, 0xabb: 0x14d1, - 0xabc: 0x0008, 0xabd: 0x14e9, 0xabe: 0x0040, 0xabf: 0x0040, + 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, + 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, + 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, + 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008, + 0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008, + 0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, + 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, + 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, + 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, + 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, + 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, // Block 0x2b, offset 0xac0 - 0xac0: 0x1501, 0xac1: 0x1531, 0xac2: 0x1561, 0xac3: 0x1591, 0xac4: 0x15c1, 0xac5: 0x15f1, - 0xac6: 0x1621, 0xac7: 0x1651, 0xac8: 0x1501, 0xac9: 0x1531, 0xaca: 0x1561, 0xacb: 0x1591, - 0xacc: 0x15c1, 0xacd: 0x15f1, 0xace: 0x1621, 0xacf: 0x1651, 0xad0: 0x1681, 0xad1: 0x16b1, - 0xad2: 0x16e1, 0xad3: 0x1711, 0xad4: 0x1741, 0xad5: 0x1771, 0xad6: 0x17a1, 0xad7: 0x17d1, - 0xad8: 0x1681, 0xad9: 0x16b1, 0xada: 0x16e1, 0xadb: 0x1711, 0xadc: 0x1741, 0xadd: 0x1771, - 0xade: 0x17a1, 0xadf: 0x17d1, 0xae0: 0x1801, 0xae1: 0x1831, 0xae2: 0x1861, 0xae3: 0x1891, - 0xae4: 0x18c1, 0xae5: 0x18f1, 0xae6: 0x1921, 0xae7: 0x1951, 0xae8: 0x1801, 0xae9: 0x1831, - 0xaea: 0x1861, 0xaeb: 0x1891, 0xaec: 0x18c1, 0xaed: 0x18f1, 0xaee: 0x1921, 0xaef: 0x1951, - 0xaf0: 0x0008, 0xaf1: 0x0008, 0xaf2: 0x1981, 0xaf3: 0x19b1, 0xaf4: 0x19d9, 0xaf5: 0x0040, - 0xaf6: 0x0008, 0xaf7: 0x1a01, 0xaf8: 0xe045, 0xaf9: 0xe045, 0xafa: 0x064d, 0xafb: 0x1459, - 0xafc: 0x19b1, 0xafd: 0x0666, 0xafe: 0x1a31, 0xaff: 0x0686, + 0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008, + 0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008, + 0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008, + 0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, + 0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008, + 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008, + 0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008, + 0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008, + 0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008, + 0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008, + 0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008, // Block 0x2c, offset 0xb00 - 0xb00: 0x06a6, 0xb01: 0x1a4a, 0xb02: 0x1a79, 0xb03: 0x1aa9, 0xb04: 0x1ad1, 0xb05: 0x0040, - 0xb06: 0x0008, 0xb07: 0x1af9, 0xb08: 0x06c5, 0xb09: 0x1471, 0xb0a: 0x06dd, 0xb0b: 0x1489, - 0xb0c: 0x1aa9, 0xb0d: 0x1b2a, 0xb0e: 0x1b5a, 0xb0f: 0x1b8a, 0xb10: 0x0008, 0xb11: 0x0008, - 0xb12: 0x0008, 0xb13: 0x1bb9, 0xb14: 0x0040, 0xb15: 0x0040, 0xb16: 0x0008, 0xb17: 0x0008, - 0xb18: 0xe045, 0xb19: 0xe045, 0xb1a: 0x06f5, 0xb1b: 0x14a1, 0xb1c: 0x0040, 0xb1d: 0x1bd2, - 0xb1e: 0x1c02, 0xb1f: 0x1c32, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x1c61, + 0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008, + 0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045, + 0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008, + 0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008, + 0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045, + 0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008, 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, - 0xb2a: 0x070d, 0xb2b: 0x14d1, 0xb2c: 0xe04d, 0xb2d: 0x1c7a, 0xb2e: 0x03d2, 0xb2f: 0x1caa, - 0xb30: 0x0040, 0xb31: 0x0040, 0xb32: 0x1cb9, 0xb33: 0x1ce9, 0xb34: 0x1d11, 0xb35: 0x0040, - 0xb36: 0x0008, 0xb37: 0x1d39, 0xb38: 0x0725, 0xb39: 0x14b9, 0xb3a: 0x0515, 0xb3b: 0x14e9, - 0xb3c: 0x1ce9, 0xb3d: 0x073e, 0xb3e: 0x075e, 0xb3f: 0x0040, + 0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045, + 0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489, + 0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1, + 0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040, // Block 0x2d, offset 0xb40 - 0xb40: 0x000a, 0xb41: 0x000a, 0xb42: 0x000a, 0xb43: 0x000a, 0xb44: 0x000a, 0xb45: 0x000a, - 0xb46: 0x000a, 0xb47: 0x000a, 0xb48: 0x000a, 0xb49: 0x000a, 0xb4a: 0x000a, 0xb4b: 0x03c0, - 0xb4c: 0x0003, 0xb4d: 0x0003, 0xb4e: 0x0340, 0xb4f: 0x0340, 0xb50: 0x0018, 0xb51: 0xe00d, - 0xb52: 0x0018, 0xb53: 0x0018, 0xb54: 0x0018, 0xb55: 0x0018, 0xb56: 0x0018, 0xb57: 0x077e, - 0xb58: 0x0018, 0xb59: 0x0018, 0xb5a: 0x0018, 0xb5b: 0x0018, 0xb5c: 0x0018, 0xb5d: 0x0018, - 0xb5e: 0x0018, 0xb5f: 0x0018, 0xb60: 0x0018, 0xb61: 0x0018, 0xb62: 0x0018, 0xb63: 0x0018, - 0xb64: 0x0040, 0xb65: 0x0040, 0xb66: 0x0040, 0xb67: 0x0018, 0xb68: 0x0040, 0xb69: 0x0040, - 0xb6a: 0x0340, 0xb6b: 0x0340, 0xb6c: 0x0340, 0xb6d: 0x0340, 0xb6e: 0x0340, 0xb6f: 0x000a, - 0xb70: 0x0018, 0xb71: 0x0018, 0xb72: 0x0018, 0xb73: 0x1d69, 0xb74: 0x1da1, 0xb75: 0x0018, - 0xb76: 0x1df1, 0xb77: 0x1e29, 0xb78: 0x0018, 0xb79: 0x0018, 0xb7a: 0x0018, 0xb7b: 0x0018, - 0xb7c: 0x1e7a, 0xb7d: 0x0018, 0xb7e: 0x079e, 0xb7f: 0x0018, + 0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1, + 0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591, + 0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1, + 0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1, + 0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771, + 0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891, + 0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831, + 0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951, + 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040, + 0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459, + 0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686, // Block 0x2e, offset 0xb80 - 0xb80: 0x0018, 0xb81: 0x0018, 0xb82: 0x0018, 0xb83: 0x0018, 0xb84: 0x0018, 0xb85: 0x0018, - 0xb86: 0x0018, 0xb87: 0x1e92, 0xb88: 0x1eaa, 0xb89: 0x1ec2, 0xb8a: 0x0018, 0xb8b: 0x0018, - 0xb8c: 0x0018, 0xb8d: 0x0018, 0xb8e: 0x0018, 0xb8f: 0x0018, 0xb90: 0x0018, 0xb91: 0x0018, - 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x1ed9, - 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, - 0xb9e: 0x0018, 0xb9f: 0x000a, 0xba0: 0x03c0, 0xba1: 0x0340, 0xba2: 0x0340, 0xba3: 0x0340, - 0xba4: 0x03c0, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0040, 0xba8: 0x0040, 0xba9: 0x0040, - 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x0340, - 0xbb0: 0x1f41, 0xbb1: 0x0f41, 0xbb2: 0x0040, 0xbb3: 0x0040, 0xbb4: 0x1f51, 0xbb5: 0x1f61, - 0xbb6: 0x1f71, 0xbb7: 0x1f81, 0xbb8: 0x1f91, 0xbb9: 0x1fa1, 0xbba: 0x1fb2, 0xbbb: 0x07bd, - 0xbbc: 0x1fc2, 0xbbd: 0x1fd2, 0xbbe: 0x1fe2, 0xbbf: 0x0f71, + 0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040, + 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489, + 0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008, + 0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008, + 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2, + 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61, + 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045, + 0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa, + 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040, + 0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9, + 0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040, // Block 0x2f, offset 0xbc0 - 0xbc0: 0x1f41, 0xbc1: 0x00c9, 0xbc2: 0x0069, 0xbc3: 0x0079, 0xbc4: 0x1f51, 0xbc5: 0x1f61, - 0xbc6: 0x1f71, 0xbc7: 0x1f81, 0xbc8: 0x1f91, 0xbc9: 0x1fa1, 0xbca: 0x1fb2, 0xbcb: 0x07d5, - 0xbcc: 0x1fc2, 0xbcd: 0x1fd2, 0xbce: 0x1fe2, 0xbcf: 0x0040, 0xbd0: 0x0039, 0xbd1: 0x0f09, - 0xbd2: 0x00d9, 0xbd3: 0x0369, 0xbd4: 0x0ff9, 0xbd5: 0x0249, 0xbd6: 0x0f51, 0xbd7: 0x0359, - 0xbd8: 0x0f61, 0xbd9: 0x0f71, 0xbda: 0x0f99, 0xbdb: 0x01d9, 0xbdc: 0x0fa9, 0xbdd: 0x0040, - 0xbde: 0x0040, 0xbdf: 0x0040, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, - 0xbe4: 0x0018, 0xbe5: 0x0018, 0xbe6: 0x0018, 0xbe7: 0x0018, 0xbe8: 0x1ff1, 0xbe9: 0x0018, - 0xbea: 0x0018, 0xbeb: 0x0018, 0xbec: 0x0018, 0xbed: 0x0018, 0xbee: 0x0018, 0xbef: 0x0018, - 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x0018, 0xbf4: 0x0018, 0xbf5: 0x0018, - 0xbf6: 0x0018, 0xbf7: 0x0018, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, - 0xbfc: 0x0018, 0xbfd: 0x0018, 0xbfe: 0x0018, 0xbff: 0x0040, + 0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a, + 0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0, + 0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d, + 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e, + 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, + 0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, + 0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040, + 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a, + 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018, + 0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, + 0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018, // Block 0x30, offset 0xc00 - 0xc00: 0x07ee, 0xc01: 0x080e, 0xc02: 0x1159, 0xc03: 0x082d, 0xc04: 0x0018, 0xc05: 0x084e, - 0xc06: 0x086e, 0xc07: 0x1011, 0xc08: 0x0018, 0xc09: 0x088d, 0xc0a: 0x0f31, 0xc0b: 0x0249, - 0xc0c: 0x0249, 0xc0d: 0x0249, 0xc0e: 0x0249, 0xc0f: 0x2009, 0xc10: 0x0f41, 0xc11: 0x0f41, - 0xc12: 0x0359, 0xc13: 0x0359, 0xc14: 0x0018, 0xc15: 0x0f71, 0xc16: 0x2021, 0xc17: 0x0018, - 0xc18: 0x0018, 0xc19: 0x0f99, 0xc1a: 0x2039, 0xc1b: 0x0269, 0xc1c: 0x0269, 0xc1d: 0x0269, - 0xc1e: 0x0018, 0xc1f: 0x0018, 0xc20: 0x2049, 0xc21: 0x08ad, 0xc22: 0x2061, 0xc23: 0x0018, - 0xc24: 0x13d1, 0xc25: 0x0018, 0xc26: 0x2079, 0xc27: 0x0018, 0xc28: 0x13d1, 0xc29: 0x0018, - 0xc2a: 0x0f51, 0xc2b: 0x2091, 0xc2c: 0x0ee9, 0xc2d: 0x1159, 0xc2e: 0x0018, 0xc2f: 0x0f09, - 0xc30: 0x0f09, 0xc31: 0x1199, 0xc32: 0x0040, 0xc33: 0x0f61, 0xc34: 0x00d9, 0xc35: 0x20a9, - 0xc36: 0x20c1, 0xc37: 0x20d9, 0xc38: 0x20f1, 0xc39: 0x0f41, 0xc3a: 0x0018, 0xc3b: 0x08cd, - 0xc3c: 0x2109, 0xc3d: 0x10b1, 0xc3e: 0x10b1, 0xc3f: 0x2109, + 0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018, + 0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018, + 0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018, + 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9, + 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018, + 0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340, + 0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040, + 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340, + 0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61, + 0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd, + 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71, // Block 0x31, offset 0xc40 - 0xc40: 0x08ed, 0xc41: 0x0018, 0xc42: 0x0018, 0xc43: 0x0018, 0xc44: 0x0018, 0xc45: 0x0ef9, - 0xc46: 0x0ef9, 0xc47: 0x0f09, 0xc48: 0x0f41, 0xc49: 0x0259, 0xc4a: 0x0018, 0xc4b: 0x0018, - 0xc4c: 0x0018, 0xc4d: 0x0018, 0xc4e: 0x0008, 0xc4f: 0x0018, 0xc50: 0x2121, 0xc51: 0x2151, - 0xc52: 0x2181, 0xc53: 0x21b9, 0xc54: 0x21e9, 0xc55: 0x2219, 0xc56: 0x2249, 0xc57: 0x2279, - 0xc58: 0x22a9, 0xc59: 0x22d9, 0xc5a: 0x2309, 0xc5b: 0x2339, 0xc5c: 0x2369, 0xc5d: 0x2399, - 0xc5e: 0x23c9, 0xc5f: 0x23f9, 0xc60: 0x0f41, 0xc61: 0x2421, 0xc62: 0x0905, 0xc63: 0x2439, - 0xc64: 0x1089, 0xc65: 0x2451, 0xc66: 0x0925, 0xc67: 0x2469, 0xc68: 0x2491, 0xc69: 0x0369, - 0xc6a: 0x24a9, 0xc6b: 0x0945, 0xc6c: 0x0359, 0xc6d: 0x1159, 0xc6e: 0x0ef9, 0xc6f: 0x0f61, - 0xc70: 0x0f41, 0xc71: 0x2421, 0xc72: 0x0965, 0xc73: 0x2439, 0xc74: 0x1089, 0xc75: 0x2451, - 0xc76: 0x0985, 0xc77: 0x2469, 0xc78: 0x2491, 0xc79: 0x0369, 0xc7a: 0x24a9, 0xc7b: 0x09a5, - 0xc7c: 0x0359, 0xc7d: 0x1159, 0xc7e: 0x0ef9, 0xc7f: 0x0f61, + 0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61, + 0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5, + 0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09, + 0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359, + 0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040, + 0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018, + 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018, + 0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018, + 0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018, + 0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018, + 0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018, // Block 0x32, offset 0xc80 - 0xc80: 0x0018, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0018, - 0xc86: 0x0018, 0xc87: 0x0018, 0xc88: 0x0018, 0xc89: 0x0018, 0xc8a: 0x0018, 0xc8b: 0x0040, - 0xc8c: 0x0040, 0xc8d: 0x0040, 0xc8e: 0x0040, 0xc8f: 0x0040, 0xc90: 0x0040, 0xc91: 0x0040, - 0xc92: 0x0040, 0xc93: 0x0040, 0xc94: 0x0040, 0xc95: 0x0040, 0xc96: 0x0040, 0xc97: 0x0040, - 0xc98: 0x0040, 0xc99: 0x0040, 0xc9a: 0x0040, 0xc9b: 0x0040, 0xc9c: 0x0040, 0xc9d: 0x0040, - 0xc9e: 0x0040, 0xc9f: 0x0040, 0xca0: 0x00c9, 0xca1: 0x0069, 0xca2: 0x0079, 0xca3: 0x1f51, - 0xca4: 0x1f61, 0xca5: 0x1f71, 0xca6: 0x1f81, 0xca7: 0x1f91, 0xca8: 0x1fa1, 0xca9: 0x2601, - 0xcaa: 0x2619, 0xcab: 0x2631, 0xcac: 0x2649, 0xcad: 0x2661, 0xcae: 0x2679, 0xcaf: 0x2691, - 0xcb0: 0x26a9, 0xcb1: 0x26c1, 0xcb2: 0x26d9, 0xcb3: 0x26f1, 0xcb4: 0x0a06, 0xcb5: 0x0a26, - 0xcb6: 0x0a46, 0xcb7: 0x0a66, 0xcb8: 0x0a86, 0xcb9: 0x0aa6, 0xcba: 0x0ac6, 0xcbb: 0x0ae6, - 0xcbc: 0x0b06, 0xcbd: 0x270a, 0xcbe: 0x2732, 0xcbf: 0x275a, + 0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e, + 0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249, + 0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41, + 0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018, + 0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269, + 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018, + 0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018, + 0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09, + 0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9, + 0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd, + 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109, // Block 0x33, offset 0xcc0 - 0xcc0: 0x2782, 0xcc1: 0x27aa, 0xcc2: 0x27d2, 0xcc3: 0x27fa, 0xcc4: 0x2822, 0xcc5: 0x284a, - 0xcc6: 0x2872, 0xcc7: 0x289a, 0xcc8: 0x0040, 0xcc9: 0x0040, 0xcca: 0x0040, 0xccb: 0x0040, - 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, - 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, - 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0b26, 0xcdd: 0x0b46, - 0xcde: 0x0b66, 0xcdf: 0x0b86, 0xce0: 0x0ba6, 0xce1: 0x0bc6, 0xce2: 0x0be6, 0xce3: 0x0c06, - 0xce4: 0x0c26, 0xce5: 0x0c46, 0xce6: 0x0c66, 0xce7: 0x0c86, 0xce8: 0x0ca6, 0xce9: 0x0cc6, - 0xcea: 0x0ce6, 0xceb: 0x0d06, 0xcec: 0x0d26, 0xced: 0x0d46, 0xcee: 0x0d66, 0xcef: 0x0d86, - 0xcf0: 0x0da6, 0xcf1: 0x0dc6, 0xcf2: 0x0de6, 0xcf3: 0x0e06, 0xcf4: 0x0e26, 0xcf5: 0x0e46, - 0xcf6: 0x0039, 0xcf7: 0x0ee9, 0xcf8: 0x1159, 0xcf9: 0x0ef9, 0xcfa: 0x0f09, 0xcfb: 0x1199, - 0xcfc: 0x0f31, 0xcfd: 0x0249, 0xcfe: 0x0f41, 0xcff: 0x0259, + 0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9, + 0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018, + 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151, + 0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279, + 0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399, + 0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439, + 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369, + 0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61, + 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451, + 0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5, + 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61, // Block 0x34, offset 0xd00 - 0xd00: 0x0f51, 0xd01: 0x0359, 0xd02: 0x0f61, 0xd03: 0x0f71, 0xd04: 0x00d9, 0xd05: 0x0f99, - 0xd06: 0x2039, 0xd07: 0x0269, 0xd08: 0x01d9, 0xd09: 0x0fa9, 0xd0a: 0x0fb9, 0xd0b: 0x1089, - 0xd0c: 0x0279, 0xd0d: 0x0369, 0xd0e: 0x0289, 0xd0f: 0x13d1, 0xd10: 0x0039, 0xd11: 0x0ee9, - 0xd12: 0x1159, 0xd13: 0x0ef9, 0xd14: 0x0f09, 0xd15: 0x1199, 0xd16: 0x0f31, 0xd17: 0x0249, - 0xd18: 0x0f41, 0xd19: 0x0259, 0xd1a: 0x0f51, 0xd1b: 0x0359, 0xd1c: 0x0f61, 0xd1d: 0x0f71, - 0xd1e: 0x00d9, 0xd1f: 0x0f99, 0xd20: 0x2039, 0xd21: 0x0269, 0xd22: 0x01d9, 0xd23: 0x0fa9, - 0xd24: 0x0fb9, 0xd25: 0x1089, 0xd26: 0x0279, 0xd27: 0x0369, 0xd28: 0x0289, 0xd29: 0x13d1, - 0xd2a: 0x1f41, 0xd2b: 0x0018, 0xd2c: 0x0018, 0xd2d: 0x0018, 0xd2e: 0x0018, 0xd2f: 0x0018, - 0xd30: 0x0018, 0xd31: 0x0018, 0xd32: 0x0018, 0xd33: 0x0018, 0xd34: 0x0018, 0xd35: 0x0018, - 0xd36: 0x0018, 0xd37: 0x0018, 0xd38: 0x0018, 0xd39: 0x0018, 0xd3a: 0x0018, 0xd3b: 0x0018, - 0xd3c: 0x0018, 0xd3d: 0x0018, 0xd3e: 0x0018, 0xd3f: 0x0018, + 0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018, + 0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040, + 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, + 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, + 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040, + 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51, + 0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601, + 0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691, + 0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26, + 0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6, + 0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a, // Block 0x35, offset 0xd40 - 0xd40: 0x0008, 0xd41: 0x0008, 0xd42: 0x0008, 0xd43: 0x0008, 0xd44: 0x0008, 0xd45: 0x0008, - 0xd46: 0x0008, 0xd47: 0x0008, 0xd48: 0x0008, 0xd49: 0x0008, 0xd4a: 0x0008, 0xd4b: 0x0008, - 0xd4c: 0x0008, 0xd4d: 0x0008, 0xd4e: 0x0008, 0xd4f: 0x0008, 0xd50: 0x0008, 0xd51: 0x0008, - 0xd52: 0x0008, 0xd53: 0x0008, 0xd54: 0x0008, 0xd55: 0x0008, 0xd56: 0x0008, 0xd57: 0x0008, - 0xd58: 0x0008, 0xd59: 0x0008, 0xd5a: 0x0008, 0xd5b: 0x0008, 0xd5c: 0x0008, 0xd5d: 0x0008, - 0xd5e: 0x0008, 0xd5f: 0x0040, 0xd60: 0xe00d, 0xd61: 0x0008, 0xd62: 0x2971, 0xd63: 0x0ebd, - 0xd64: 0x2989, 0xd65: 0x0008, 0xd66: 0x0008, 0xd67: 0xe07d, 0xd68: 0x0008, 0xd69: 0xe01d, - 0xd6a: 0x0008, 0xd6b: 0xe03d, 0xd6c: 0x0008, 0xd6d: 0x0fe1, 0xd6e: 0x1281, 0xd6f: 0x0fc9, - 0xd70: 0x1141, 0xd71: 0x0008, 0xd72: 0xe00d, 0xd73: 0x0008, 0xd74: 0x0008, 0xd75: 0xe01d, - 0xd76: 0x0008, 0xd77: 0x0008, 0xd78: 0x0008, 0xd79: 0x0008, 0xd7a: 0x0008, 0xd7b: 0x0008, - 0xd7c: 0x0259, 0xd7d: 0x1089, 0xd7e: 0x29a1, 0xd7f: 0x29b9, + 0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a, + 0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040, + 0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040, + 0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040, + 0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46, + 0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06, + 0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6, + 0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86, + 0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46, + 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199, + 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259, // Block 0x36, offset 0xd80 - 0xd80: 0xe00d, 0xd81: 0x0008, 0xd82: 0xe00d, 0xd83: 0x0008, 0xd84: 0xe00d, 0xd85: 0x0008, - 0xd86: 0xe00d, 0xd87: 0x0008, 0xd88: 0xe00d, 0xd89: 0x0008, 0xd8a: 0xe00d, 0xd8b: 0x0008, - 0xd8c: 0xe00d, 0xd8d: 0x0008, 0xd8e: 0xe00d, 0xd8f: 0x0008, 0xd90: 0xe00d, 0xd91: 0x0008, - 0xd92: 0xe00d, 0xd93: 0x0008, 0xd94: 0xe00d, 0xd95: 0x0008, 0xd96: 0xe00d, 0xd97: 0x0008, - 0xd98: 0xe00d, 0xd99: 0x0008, 0xd9a: 0xe00d, 0xd9b: 0x0008, 0xd9c: 0xe00d, 0xd9d: 0x0008, - 0xd9e: 0xe00d, 0xd9f: 0x0008, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0xe00d, 0xda3: 0x0008, - 0xda4: 0x0008, 0xda5: 0x0018, 0xda6: 0x0018, 0xda7: 0x0018, 0xda8: 0x0018, 0xda9: 0x0018, - 0xdaa: 0x0018, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0xe01d, 0xdae: 0x0008, 0xdaf: 0x1308, - 0xdb0: 0x1308, 0xdb1: 0x1308, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0040, 0xdb5: 0x0040, - 0xdb6: 0x0040, 0xdb7: 0x0040, 0xdb8: 0x0040, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, + 0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99, + 0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089, + 0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9, + 0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249, + 0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71, + 0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9, + 0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1, + 0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018, + 0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018, + 0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, // Block 0x37, offset 0xdc0 - 0xdc0: 0x26fd, 0xdc1: 0x271d, 0xdc2: 0x273d, 0xdc3: 0x275d, 0xdc4: 0x277d, 0xdc5: 0x279d, - 0xdc6: 0x27bd, 0xdc7: 0x27dd, 0xdc8: 0x27fd, 0xdc9: 0x281d, 0xdca: 0x283d, 0xdcb: 0x285d, - 0xdcc: 0x287d, 0xdcd: 0x289d, 0xdce: 0x28bd, 0xdcf: 0x28dd, 0xdd0: 0x28fd, 0xdd1: 0x291d, - 0xdd2: 0x293d, 0xdd3: 0x295d, 0xdd4: 0x297d, 0xdd5: 0x299d, 0xdd6: 0x0040, 0xdd7: 0x0040, - 0xdd8: 0x0040, 0xdd9: 0x0040, 0xdda: 0x0040, 0xddb: 0x0040, 0xddc: 0x0040, 0xddd: 0x0040, - 0xdde: 0x0040, 0xddf: 0x0040, 0xde0: 0x0040, 0xde1: 0x0040, 0xde2: 0x0040, 0xde3: 0x0040, - 0xde4: 0x0040, 0xde5: 0x0040, 0xde6: 0x0040, 0xde7: 0x0040, 0xde8: 0x0040, 0xde9: 0x0040, - 0xdea: 0x0040, 0xdeb: 0x0040, 0xdec: 0x0040, 0xded: 0x0040, 0xdee: 0x0040, 0xdef: 0x0040, - 0xdf0: 0x0040, 0xdf1: 0x0040, 0xdf2: 0x0040, 0xdf3: 0x0040, 0xdf4: 0x0040, 0xdf5: 0x0040, - 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0040, 0xdfa: 0x0040, 0xdfb: 0x0040, - 0xdfc: 0x0040, 0xdfd: 0x0040, 0xdfe: 0x0040, 0xdff: 0x0040, + 0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008, + 0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008, + 0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008, + 0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008, + 0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008, + 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd, + 0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d, + 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9, + 0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d, + 0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008, + 0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9, // Block 0x38, offset 0xe00 - 0xe00: 0x000a, 0xe01: 0x0018, 0xe02: 0x29d1, 0xe03: 0x0018, 0xe04: 0x0018, 0xe05: 0x0008, - 0xe06: 0x0008, 0xe07: 0x0008, 0xe08: 0x0018, 0xe09: 0x0018, 0xe0a: 0x0018, 0xe0b: 0x0018, - 0xe0c: 0x0018, 0xe0d: 0x0018, 0xe0e: 0x0018, 0xe0f: 0x0018, 0xe10: 0x0018, 0xe11: 0x0018, - 0xe12: 0x0018, 0xe13: 0x0018, 0xe14: 0x0018, 0xe15: 0x0018, 0xe16: 0x0018, 0xe17: 0x0018, - 0xe18: 0x0018, 0xe19: 0x0018, 0xe1a: 0x0018, 0xe1b: 0x0018, 0xe1c: 0x0018, 0xe1d: 0x0018, - 0xe1e: 0x0018, 0xe1f: 0x0018, 0xe20: 0x0018, 0xe21: 0x0018, 0xe22: 0x0018, 0xe23: 0x0018, - 0xe24: 0x0018, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, - 0xe2a: 0x1308, 0xe2b: 0x1308, 0xe2c: 0x1308, 0xe2d: 0x1308, 0xe2e: 0x1018, 0xe2f: 0x1018, - 0xe30: 0x0018, 0xe31: 0x0018, 0xe32: 0x0018, 0xe33: 0x0018, 0xe34: 0x0018, 0xe35: 0x0018, - 0xe36: 0xe125, 0xe37: 0x0018, 0xe38: 0x29bd, 0xe39: 0x29dd, 0xe3a: 0x29fd, 0xe3b: 0x0018, - 0xe3c: 0x0008, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, + 0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008, + 0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008, + 0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008, + 0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008, + 0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008, + 0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008, + 0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, + 0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308, + 0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040, + 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018, + 0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, // Block 0x39, offset 0xe40 - 0xe40: 0x2b3d, 0xe41: 0x2b5d, 0xe42: 0x2b7d, 0xe43: 0x2b9d, 0xe44: 0x2bbd, 0xe45: 0x2bdd, - 0xe46: 0x2bdd, 0xe47: 0x2bdd, 0xe48: 0x2bfd, 0xe49: 0x2bfd, 0xe4a: 0x2bfd, 0xe4b: 0x2bfd, - 0xe4c: 0x2c1d, 0xe4d: 0x2c1d, 0xe4e: 0x2c1d, 0xe4f: 0x2c3d, 0xe50: 0x2c5d, 0xe51: 0x2c5d, - 0xe52: 0x2a7d, 0xe53: 0x2a7d, 0xe54: 0x2c5d, 0xe55: 0x2c5d, 0xe56: 0x2c7d, 0xe57: 0x2c7d, - 0xe58: 0x2c5d, 0xe59: 0x2c5d, 0xe5a: 0x2a7d, 0xe5b: 0x2a7d, 0xe5c: 0x2c5d, 0xe5d: 0x2c5d, - 0xe5e: 0x2c3d, 0xe5f: 0x2c3d, 0xe60: 0x2c9d, 0xe61: 0x2c9d, 0xe62: 0x2cbd, 0xe63: 0x2cbd, - 0xe64: 0x0040, 0xe65: 0x2cdd, 0xe66: 0x2cfd, 0xe67: 0x2d1d, 0xe68: 0x2d1d, 0xe69: 0x2d3d, - 0xe6a: 0x2d5d, 0xe6b: 0x2d7d, 0xe6c: 0x2d9d, 0xe6d: 0x2dbd, 0xe6e: 0x2ddd, 0xe6f: 0x2dfd, - 0xe70: 0x2e1d, 0xe71: 0x2e3d, 0xe72: 0x2e3d, 0xe73: 0x2e5d, 0xe74: 0x2e7d, 0xe75: 0x2e7d, - 0xe76: 0x2e9d, 0xe77: 0x2ebd, 0xe78: 0x2e5d, 0xe79: 0x2edd, 0xe7a: 0x2efd, 0xe7b: 0x2edd, - 0xe7c: 0x2e5d, 0xe7d: 0x2f1d, 0xe7e: 0x2f3d, 0xe7f: 0x2f5d, + 0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d, + 0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d, + 0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d, + 0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040, + 0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040, + 0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040, + 0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040, + 0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040, + 0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040, + 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040, + 0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040, // Block 0x3a, offset 0xe80 - 0xe80: 0x2f7d, 0xe81: 0x2f9d, 0xe82: 0x2cfd, 0xe83: 0x2cdd, 0xe84: 0x2fbd, 0xe85: 0x2fdd, - 0xe86: 0x2ffd, 0xe87: 0x301d, 0xe88: 0x303d, 0xe89: 0x305d, 0xe8a: 0x307d, 0xe8b: 0x309d, - 0xe8c: 0x30bd, 0xe8d: 0x30dd, 0xe8e: 0x30fd, 0xe8f: 0x0040, 0xe90: 0x0018, 0xe91: 0x0018, - 0xe92: 0x311d, 0xe93: 0x313d, 0xe94: 0x315d, 0xe95: 0x317d, 0xe96: 0x319d, 0xe97: 0x31bd, - 0xe98: 0x31dd, 0xe99: 0x31fd, 0xe9a: 0x321d, 0xe9b: 0x323d, 0xe9c: 0x315d, 0xe9d: 0x325d, - 0xe9e: 0x327d, 0xe9f: 0x329d, 0xea0: 0x0008, 0xea1: 0x0008, 0xea2: 0x0008, 0xea3: 0x0008, - 0xea4: 0x0008, 0xea5: 0x0008, 0xea6: 0x0008, 0xea7: 0x0008, 0xea8: 0x0008, 0xea9: 0x0008, - 0xeaa: 0x0008, 0xeab: 0x0008, 0xeac: 0x0008, 0xead: 0x0008, 0xeae: 0x0008, 0xeaf: 0x0008, - 0xeb0: 0x0008, 0xeb1: 0x0008, 0xeb2: 0x0008, 0xeb3: 0x0008, 0xeb4: 0x0008, 0xeb5: 0x0008, - 0xeb6: 0x0008, 0xeb7: 0x0008, 0xeb8: 0x0008, 0xeb9: 0x0008, 0xeba: 0x0008, 0xebb: 0x0040, - 0xebc: 0x0040, 0xebd: 0x0040, 0xebe: 0x0040, 0xebf: 0x0040, + 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008, + 0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018, + 0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018, + 0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018, + 0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018, + 0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018, + 0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018, + 0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018, + 0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018, + 0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018, + 0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018, // Block 0x3b, offset 0xec0 - 0xec0: 0x36a2, 0xec1: 0x36d2, 0xec2: 0x3702, 0xec3: 0x3732, 0xec4: 0x32bd, 0xec5: 0x32dd, - 0xec6: 0x32fd, 0xec7: 0x331d, 0xec8: 0x0018, 0xec9: 0x0018, 0xeca: 0x0018, 0xecb: 0x0018, - 0xecc: 0x0018, 0xecd: 0x0018, 0xece: 0x0018, 0xecf: 0x0018, 0xed0: 0x333d, 0xed1: 0x3761, - 0xed2: 0x3779, 0xed3: 0x3791, 0xed4: 0x37a9, 0xed5: 0x37c1, 0xed6: 0x37d9, 0xed7: 0x37f1, - 0xed8: 0x3809, 0xed9: 0x3821, 0xeda: 0x3839, 0xedb: 0x3851, 0xedc: 0x3869, 0xedd: 0x3881, - 0xede: 0x3899, 0xedf: 0x38b1, 0xee0: 0x335d, 0xee1: 0x337d, 0xee2: 0x339d, 0xee3: 0x33bd, - 0xee4: 0x33dd, 0xee5: 0x33dd, 0xee6: 0x33fd, 0xee7: 0x341d, 0xee8: 0x343d, 0xee9: 0x345d, - 0xeea: 0x347d, 0xeeb: 0x349d, 0xeec: 0x34bd, 0xeed: 0x34dd, 0xeee: 0x34fd, 0xeef: 0x351d, - 0xef0: 0x353d, 0xef1: 0x355d, 0xef2: 0x357d, 0xef3: 0x359d, 0xef4: 0x35bd, 0xef5: 0x35dd, - 0xef6: 0x35fd, 0xef7: 0x361d, 0xef8: 0x363d, 0xef9: 0x365d, 0xefa: 0x367d, 0xefb: 0x369d, - 0xefc: 0x38c9, 0xefd: 0x3901, 0xefe: 0x36bd, 0xeff: 0x0018, + 0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd, + 0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd, + 0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d, + 0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d, + 0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d, + 0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd, + 0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d, + 0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd, + 0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d, + 0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd, + 0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d, // Block 0x3c, offset 0xf00 - 0xf00: 0x36dd, 0xf01: 0x36fd, 0xf02: 0x371d, 0xf03: 0x373d, 0xf04: 0x375d, 0xf05: 0x377d, - 0xf06: 0x379d, 0xf07: 0x37bd, 0xf08: 0x37dd, 0xf09: 0x37fd, 0xf0a: 0x381d, 0xf0b: 0x383d, - 0xf0c: 0x385d, 0xf0d: 0x387d, 0xf0e: 0x389d, 0xf0f: 0x38bd, 0xf10: 0x38dd, 0xf11: 0x38fd, - 0xf12: 0x391d, 0xf13: 0x393d, 0xf14: 0x395d, 0xf15: 0x397d, 0xf16: 0x399d, 0xf17: 0x39bd, - 0xf18: 0x39dd, 0xf19: 0x39fd, 0xf1a: 0x3a1d, 0xf1b: 0x3a3d, 0xf1c: 0x3a5d, 0xf1d: 0x3a7d, - 0xf1e: 0x3a9d, 0xf1f: 0x3abd, 0xf20: 0x3add, 0xf21: 0x3afd, 0xf22: 0x3b1d, 0xf23: 0x3b3d, - 0xf24: 0x3b5d, 0xf25: 0x3b7d, 0xf26: 0x127d, 0xf27: 0x3b9d, 0xf28: 0x3bbd, 0xf29: 0x3bdd, - 0xf2a: 0x3bfd, 0xf2b: 0x3c1d, 0xf2c: 0x3c3d, 0xf2d: 0x3c5d, 0xf2e: 0x239d, 0xf2f: 0x3c7d, - 0xf30: 0x3c9d, 0xf31: 0x3939, 0xf32: 0x3951, 0xf33: 0x3969, 0xf34: 0x3981, 0xf35: 0x3999, - 0xf36: 0x39b1, 0xf37: 0x39c9, 0xf38: 0x39e1, 0xf39: 0x39f9, 0xf3a: 0x3a11, 0xf3b: 0x3a29, - 0xf3c: 0x3a41, 0xf3d: 0x3a59, 0xf3e: 0x3a71, 0xf3f: 0x3a89, + 0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd, + 0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d, + 0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018, + 0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd, + 0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d, + 0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008, + 0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008, + 0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008, + 0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008, + 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040, + 0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040, // Block 0x3d, offset 0xf40 - 0xf40: 0x3aa1, 0xf41: 0x3ac9, 0xf42: 0x3af1, 0xf43: 0x3b19, 0xf44: 0x3b41, 0xf45: 0x3b69, - 0xf46: 0x3b91, 0xf47: 0x3bb9, 0xf48: 0x3be1, 0xf49: 0x3c09, 0xf4a: 0x3c39, 0xf4b: 0x3c69, - 0xf4c: 0x3c99, 0xf4d: 0x3cbd, 0xf4e: 0x3cb1, 0xf4f: 0x3cdd, 0xf50: 0x3cfd, 0xf51: 0x3d15, - 0xf52: 0x3d2d, 0xf53: 0x3d45, 0xf54: 0x3d5d, 0xf55: 0x3d5d, 0xf56: 0x3d45, 0xf57: 0x3d75, - 0xf58: 0x07bd, 0xf59: 0x3d8d, 0xf5a: 0x3da5, 0xf5b: 0x3dbd, 0xf5c: 0x3dd5, 0xf5d: 0x3ded, - 0xf5e: 0x3e05, 0xf5f: 0x3e1d, 0xf60: 0x3e35, 0xf61: 0x3e4d, 0xf62: 0x3e65, 0xf63: 0x3e7d, - 0xf64: 0x3e95, 0xf65: 0x3e95, 0xf66: 0x3ead, 0xf67: 0x3ead, 0xf68: 0x3ec5, 0xf69: 0x3ec5, - 0xf6a: 0x3edd, 0xf6b: 0x3ef5, 0xf6c: 0x3f0d, 0xf6d: 0x3f25, 0xf6e: 0x3f3d, 0xf6f: 0x3f3d, - 0xf70: 0x3f55, 0xf71: 0x3f55, 0xf72: 0x3f55, 0xf73: 0x3f6d, 0xf74: 0x3f85, 0xf75: 0x3f9d, - 0xf76: 0x3fb5, 0xf77: 0x3f9d, 0xf78: 0x3fcd, 0xf79: 0x3fe5, 0xf7a: 0x3f6d, 0xf7b: 0x3ffd, - 0xf7c: 0x4015, 0xf7d: 0x4015, 0xf7e: 0x4015, 0xf7f: 0x0040, + 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd, + 0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018, + 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761, + 0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1, + 0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881, + 0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd, + 0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d, + 0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d, + 0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd, + 0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d, + 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018, // Block 0x3e, offset 0xf80 - 0xf80: 0x3cc9, 0xf81: 0x3d31, 0xf82: 0x3d99, 0xf83: 0x3e01, 0xf84: 0x3e51, 0xf85: 0x3eb9, - 0xf86: 0x3f09, 0xf87: 0x3f59, 0xf88: 0x3fd9, 0xf89: 0x4041, 0xf8a: 0x4091, 0xf8b: 0x40e1, - 0xf8c: 0x4131, 0xf8d: 0x4199, 0xf8e: 0x4201, 0xf8f: 0x4251, 0xf90: 0x42a1, 0xf91: 0x42d9, - 0xf92: 0x4329, 0xf93: 0x4391, 0xf94: 0x43f9, 0xf95: 0x4431, 0xf96: 0x44b1, 0xf97: 0x4549, - 0xf98: 0x45c9, 0xf99: 0x4619, 0xf9a: 0x4699, 0xf9b: 0x4719, 0xf9c: 0x4781, 0xf9d: 0x47d1, - 0xf9e: 0x4821, 0xf9f: 0x4871, 0xfa0: 0x48d9, 0xfa1: 0x4959, 0xfa2: 0x49c1, 0xfa3: 0x4a11, - 0xfa4: 0x4a61, 0xfa5: 0x4ab1, 0xfa6: 0x4ae9, 0xfa7: 0x4b21, 0xfa8: 0x4b59, 0xfa9: 0x4b91, - 0xfaa: 0x4be1, 0xfab: 0x4c31, 0xfac: 0x4cb1, 0xfad: 0x4d01, 0xfae: 0x4d69, 0xfaf: 0x4de9, - 0xfb0: 0x4e39, 0xfb1: 0x4e71, 0xfb2: 0x4ea9, 0xfb3: 0x4f29, 0xfb4: 0x4f91, 0xfb5: 0x5011, - 0xfb6: 0x5061, 0xfb7: 0x50e1, 0xfb8: 0x5119, 0xfb9: 0x5169, 0xfba: 0x51b9, 0xfbb: 0x5209, - 0xfbc: 0x5259, 0xfbd: 0x52a9, 0xfbe: 0x5311, 0xfbf: 0x5361, + 0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d, + 0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d, + 0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd, + 0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd, + 0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d, + 0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d, + 0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd, + 0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d, + 0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999, + 0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29, + 0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89, // Block 0x3f, offset 0xfc0 - 0xfc0: 0x5399, 0xfc1: 0x53e9, 0xfc2: 0x5439, 0xfc3: 0x5489, 0xfc4: 0x54f1, 0xfc5: 0x5541, - 0xfc6: 0x5591, 0xfc7: 0x55e1, 0xfc8: 0x5661, 0xfc9: 0x56c9, 0xfca: 0x5701, 0xfcb: 0x5781, - 0xfcc: 0x57b9, 0xfcd: 0x5821, 0xfce: 0x5889, 0xfcf: 0x58d9, 0xfd0: 0x5929, 0xfd1: 0x5979, - 0xfd2: 0x59e1, 0xfd3: 0x5a19, 0xfd4: 0x5a69, 0xfd5: 0x5ad1, 0xfd6: 0x5b09, 0xfd7: 0x5b89, - 0xfd8: 0x5bd9, 0xfd9: 0x5c01, 0xfda: 0x5c29, 0xfdb: 0x5c51, 0xfdc: 0x5c79, 0xfdd: 0x5ca1, - 0xfde: 0x5cc9, 0xfdf: 0x5cf1, 0xfe0: 0x5d19, 0xfe1: 0x5d41, 0xfe2: 0x5d69, 0xfe3: 0x5d99, - 0xfe4: 0x5dc9, 0xfe5: 0x5df9, 0xfe6: 0x5e29, 0xfe7: 0x5e59, 0xfe8: 0x5e89, 0xfe9: 0x5eb9, - 0xfea: 0x5ee9, 0xfeb: 0x5f19, 0xfec: 0x5f49, 0xfed: 0x5f79, 0xfee: 0x5fa9, 0xfef: 0x5fd9, - 0xff0: 0x6009, 0xff1: 0x402d, 0xff2: 0x6039, 0xff3: 0x6051, 0xff4: 0x404d, 0xff5: 0x6069, - 0xff6: 0x6081, 0xff7: 0x6099, 0xff8: 0x406d, 0xff9: 0x406d, 0xffa: 0x60b1, 0xffb: 0x60c9, - 0xffc: 0x6101, 0xffd: 0x6139, 0xffe: 0x6171, 0xfff: 0x61a9, + 0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69, + 0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69, + 0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15, + 0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75, + 0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded, + 0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d, + 0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5, + 0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d, + 0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d, + 0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd, + 0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040, // Block 0x40, offset 0x1000 - 0x1000: 0x6211, 0x1001: 0x6229, 0x1002: 0x408d, 0x1003: 0x6241, 0x1004: 0x6259, 0x1005: 0x6271, - 0x1006: 0x6289, 0x1007: 0x62a1, 0x1008: 0x40ad, 0x1009: 0x62b9, 0x100a: 0x62e1, 0x100b: 0x62f9, - 0x100c: 0x40cd, 0x100d: 0x40cd, 0x100e: 0x6311, 0x100f: 0x6329, 0x1010: 0x6341, 0x1011: 0x40ed, - 0x1012: 0x410d, 0x1013: 0x412d, 0x1014: 0x414d, 0x1015: 0x416d, 0x1016: 0x6359, 0x1017: 0x6371, - 0x1018: 0x6389, 0x1019: 0x63a1, 0x101a: 0x63b9, 0x101b: 0x418d, 0x101c: 0x63d1, 0x101d: 0x63e9, - 0x101e: 0x6401, 0x101f: 0x41ad, 0x1020: 0x41cd, 0x1021: 0x6419, 0x1022: 0x41ed, 0x1023: 0x420d, - 0x1024: 0x422d, 0x1025: 0x6431, 0x1026: 0x424d, 0x1027: 0x6449, 0x1028: 0x6479, 0x1029: 0x6211, - 0x102a: 0x426d, 0x102b: 0x428d, 0x102c: 0x42ad, 0x102d: 0x42cd, 0x102e: 0x64b1, 0x102f: 0x64f1, - 0x1030: 0x6539, 0x1031: 0x6551, 0x1032: 0x42ed, 0x1033: 0x6569, 0x1034: 0x6581, 0x1035: 0x6599, - 0x1036: 0x430d, 0x1037: 0x65b1, 0x1038: 0x65c9, 0x1039: 0x65b1, 0x103a: 0x65e1, 0x103b: 0x65f9, - 0x103c: 0x432d, 0x103d: 0x6611, 0x103e: 0x6629, 0x103f: 0x6611, + 0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9, + 0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1, + 0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9, + 0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549, + 0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1, + 0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11, + 0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91, + 0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9, + 0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011, + 0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209, + 0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361, // Block 0x41, offset 0x1040 - 0x1040: 0x434d, 0x1041: 0x436d, 0x1042: 0x0040, 0x1043: 0x6641, 0x1044: 0x6659, 0x1045: 0x6671, - 0x1046: 0x6689, 0x1047: 0x0040, 0x1048: 0x66c1, 0x1049: 0x66d9, 0x104a: 0x66f1, 0x104b: 0x6709, - 0x104c: 0x6721, 0x104d: 0x6739, 0x104e: 0x6401, 0x104f: 0x6751, 0x1050: 0x6769, 0x1051: 0x6781, - 0x1052: 0x438d, 0x1053: 0x6799, 0x1054: 0x6289, 0x1055: 0x43ad, 0x1056: 0x43cd, 0x1057: 0x67b1, - 0x1058: 0x0040, 0x1059: 0x43ed, 0x105a: 0x67c9, 0x105b: 0x67e1, 0x105c: 0x67f9, 0x105d: 0x6811, - 0x105e: 0x6829, 0x105f: 0x6859, 0x1060: 0x6889, 0x1061: 0x68b1, 0x1062: 0x68d9, 0x1063: 0x6901, - 0x1064: 0x6929, 0x1065: 0x6951, 0x1066: 0x6979, 0x1067: 0x69a1, 0x1068: 0x69c9, 0x1069: 0x69f1, - 0x106a: 0x6a21, 0x106b: 0x6a51, 0x106c: 0x6a81, 0x106d: 0x6ab1, 0x106e: 0x6ae1, 0x106f: 0x6b11, - 0x1070: 0x6b41, 0x1071: 0x6b71, 0x1072: 0x6ba1, 0x1073: 0x6bd1, 0x1074: 0x6c01, 0x1075: 0x6c31, - 0x1076: 0x6c61, 0x1077: 0x6c91, 0x1078: 0x6cc1, 0x1079: 0x6cf1, 0x107a: 0x6d21, 0x107b: 0x6d51, - 0x107c: 0x6d81, 0x107d: 0x6db1, 0x107e: 0x6de1, 0x107f: 0x440d, + 0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541, + 0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781, + 0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979, + 0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89, + 0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1, + 0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99, + 0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9, + 0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9, + 0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069, + 0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9, + 0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9, // Block 0x42, offset 0x1080 - 0x1080: 0xe00d, 0x1081: 0x0008, 0x1082: 0xe00d, 0x1083: 0x0008, 0x1084: 0xe00d, 0x1085: 0x0008, - 0x1086: 0xe00d, 0x1087: 0x0008, 0x1088: 0xe00d, 0x1089: 0x0008, 0x108a: 0xe00d, 0x108b: 0x0008, - 0x108c: 0xe00d, 0x108d: 0x0008, 0x108e: 0xe00d, 0x108f: 0x0008, 0x1090: 0xe00d, 0x1091: 0x0008, - 0x1092: 0xe00d, 0x1093: 0x0008, 0x1094: 0xe00d, 0x1095: 0x0008, 0x1096: 0xe00d, 0x1097: 0x0008, - 0x1098: 0xe00d, 0x1099: 0x0008, 0x109a: 0xe00d, 0x109b: 0x0008, 0x109c: 0xe00d, 0x109d: 0x0008, - 0x109e: 0xe00d, 0x109f: 0x0008, 0x10a0: 0xe00d, 0x10a1: 0x0008, 0x10a2: 0xe00d, 0x10a3: 0x0008, - 0x10a4: 0xe00d, 0x10a5: 0x0008, 0x10a6: 0xe00d, 0x10a7: 0x0008, 0x10a8: 0xe00d, 0x10a9: 0x0008, - 0x10aa: 0xe00d, 0x10ab: 0x0008, 0x10ac: 0xe00d, 0x10ad: 0x0008, 0x10ae: 0x0008, 0x10af: 0x1308, - 0x10b0: 0x1318, 0x10b1: 0x1318, 0x10b2: 0x1318, 0x10b3: 0x0018, 0x10b4: 0x1308, 0x10b5: 0x1308, - 0x10b6: 0x1308, 0x10b7: 0x1308, 0x10b8: 0x1308, 0x10b9: 0x1308, 0x10ba: 0x1308, 0x10bb: 0x1308, - 0x10bc: 0x1308, 0x10bd: 0x1308, 0x10be: 0x0018, 0x10bf: 0x0008, + 0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271, + 0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9, + 0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed, + 0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371, + 0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9, + 0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d, + 0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211, + 0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1, + 0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599, + 0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9, + 0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611, // Block 0x43, offset 0x10c0 - 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, - 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, - 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, - 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, - 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0x0ea1, 0x10dd: 0x6e11, - 0x10de: 0x1308, 0x10df: 0x1308, 0x10e0: 0x0008, 0x10e1: 0x0008, 0x10e2: 0x0008, 0x10e3: 0x0008, - 0x10e4: 0x0008, 0x10e5: 0x0008, 0x10e6: 0x0008, 0x10e7: 0x0008, 0x10e8: 0x0008, 0x10e9: 0x0008, - 0x10ea: 0x0008, 0x10eb: 0x0008, 0x10ec: 0x0008, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x0008, - 0x10f0: 0x0008, 0x10f1: 0x0008, 0x10f2: 0x0008, 0x10f3: 0x0008, 0x10f4: 0x0008, 0x10f5: 0x0008, - 0x10f6: 0x0008, 0x10f7: 0x0008, 0x10f8: 0x0008, 0x10f9: 0x0008, 0x10fa: 0x0008, 0x10fb: 0x0008, - 0x10fc: 0x0008, 0x10fd: 0x0008, 0x10fe: 0x0008, 0x10ff: 0x0008, + 0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671, + 0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709, + 0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781, + 0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1, + 0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811, + 0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901, + 0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1, + 0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11, + 0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31, + 0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51, + 0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d, // Block 0x44, offset 0x1100 - 0x1100: 0x0018, 0x1101: 0x0018, 0x1102: 0x0018, 0x1103: 0x0018, 0x1104: 0x0018, 0x1105: 0x0018, - 0x1106: 0x0018, 0x1107: 0x0018, 0x1108: 0x0018, 0x1109: 0x0018, 0x110a: 0x0018, 0x110b: 0x0018, - 0x110c: 0x0018, 0x110d: 0x0018, 0x110e: 0x0018, 0x110f: 0x0018, 0x1110: 0x0018, 0x1111: 0x0018, - 0x1112: 0x0018, 0x1113: 0x0018, 0x1114: 0x0018, 0x1115: 0x0018, 0x1116: 0x0018, 0x1117: 0x0008, - 0x1118: 0x0008, 0x1119: 0x0008, 0x111a: 0x0008, 0x111b: 0x0008, 0x111c: 0x0008, 0x111d: 0x0008, - 0x111e: 0x0008, 0x111f: 0x0008, 0x1120: 0x0018, 0x1121: 0x0018, 0x1122: 0xe00d, 0x1123: 0x0008, + 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, + 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, + 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, + 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, + 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008, + 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008, 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, - 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0xe00d, 0x112f: 0x0008, - 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0xe00d, 0x1133: 0x0008, 0x1134: 0xe00d, 0x1135: 0x0008, - 0x1136: 0xe00d, 0x1137: 0x0008, 0x1138: 0xe00d, 0x1139: 0x0008, 0x113a: 0xe00d, 0x113b: 0x0008, - 0x113c: 0xe00d, 0x113d: 0x0008, 0x113e: 0xe00d, 0x113f: 0x0008, + 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308, + 0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308, + 0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308, + 0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008, // Block 0x45, offset 0x1140 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, - 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0xe00d, 0x115d: 0x0008, - 0x115e: 0xe00d, 0x115f: 0x0008, 0x1160: 0xe00d, 0x1161: 0x0008, 0x1162: 0xe00d, 0x1163: 0x0008, - 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, - 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, - 0x1170: 0xe0fd, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, - 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0xe01d, 0x117a: 0x0008, 0x117b: 0xe03d, - 0x117c: 0x0008, 0x117d: 0x442d, 0x117e: 0xe00d, 0x117f: 0x0008, + 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11, + 0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008, + 0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008, + 0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008, + 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, + 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008, + 0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008, // Block 0x46, offset 0x1180 - 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, - 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0x0008, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0xe03d, - 0x118c: 0x0008, 0x118d: 0x11d9, 0x118e: 0x0008, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, - 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0x0008, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, - 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, - 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018, + 0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018, + 0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018, + 0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008, + 0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008, + 0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008, 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, - 0x11aa: 0x6e29, 0x11ab: 0x1029, 0x11ac: 0x11c1, 0x11ad: 0x6e41, 0x11ae: 0x1221, 0x11af: 0x0040, - 0x11b0: 0x6e59, 0x11b1: 0x6e71, 0x11b2: 0x1239, 0x11b3: 0x444d, 0x11b4: 0xe00d, 0x11b5: 0x0008, - 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0x0040, 0x11b9: 0x0040, 0x11ba: 0x0040, 0x11bb: 0x0040, - 0x11bc: 0x0040, 0x11bd: 0x0040, 0x11be: 0x0040, 0x11bf: 0x0040, + 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, + 0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008, + 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008, + 0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008, // Block 0x47, offset 0x11c0 - 0x11c0: 0x64d5, 0x11c1: 0x64f5, 0x11c2: 0x6515, 0x11c3: 0x6535, 0x11c4: 0x6555, 0x11c5: 0x6575, - 0x11c6: 0x6595, 0x11c7: 0x65b5, 0x11c8: 0x65d5, 0x11c9: 0x65f5, 0x11ca: 0x6615, 0x11cb: 0x6635, - 0x11cc: 0x6655, 0x11cd: 0x6675, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0x6695, 0x11d1: 0x0008, - 0x11d2: 0x66b5, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x66d5, 0x11d6: 0x66f5, 0x11d7: 0x6715, - 0x11d8: 0x6735, 0x11d9: 0x6755, 0x11da: 0x6775, 0x11db: 0x6795, 0x11dc: 0x67b5, 0x11dd: 0x67d5, - 0x11de: 0x67f5, 0x11df: 0x0008, 0x11e0: 0x6815, 0x11e1: 0x0008, 0x11e2: 0x6835, 0x11e3: 0x0008, - 0x11e4: 0x0008, 0x11e5: 0x6855, 0x11e6: 0x6875, 0x11e7: 0x0008, 0x11e8: 0x0008, 0x11e9: 0x0008, - 0x11ea: 0x6895, 0x11eb: 0x68b5, 0x11ec: 0x68d5, 0x11ed: 0x68f5, 0x11ee: 0x6915, 0x11ef: 0x6935, - 0x11f0: 0x6955, 0x11f1: 0x6975, 0x11f2: 0x6995, 0x11f3: 0x69b5, 0x11f4: 0x69d5, 0x11f5: 0x69f5, - 0x11f6: 0x6a15, 0x11f7: 0x6a35, 0x11f8: 0x6a55, 0x11f9: 0x6a75, 0x11fa: 0x6a95, 0x11fb: 0x6ab5, - 0x11fc: 0x6ad5, 0x11fd: 0x6af5, 0x11fe: 0x6b15, 0x11ff: 0x6b35, + 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, + 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008, + 0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, + 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, + 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, + 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, + 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, + 0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008, + 0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008, + 0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d, + 0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008, // Block 0x48, offset 0x1200 - 0x1200: 0x7a95, 0x1201: 0x7ab5, 0x1202: 0x7ad5, 0x1203: 0x7af5, 0x1204: 0x7b15, 0x1205: 0x7b35, - 0x1206: 0x7b55, 0x1207: 0x7b75, 0x1208: 0x7b95, 0x1209: 0x7bb5, 0x120a: 0x7bd5, 0x120b: 0x7bf5, - 0x120c: 0x7c15, 0x120d: 0x7c35, 0x120e: 0x7c55, 0x120f: 0x6ec9, 0x1210: 0x6ef1, 0x1211: 0x6f19, - 0x1212: 0x7c75, 0x1213: 0x7c95, 0x1214: 0x7cb5, 0x1215: 0x6f41, 0x1216: 0x6f69, 0x1217: 0x6f91, - 0x1218: 0x7cd5, 0x1219: 0x7cf5, 0x121a: 0x0040, 0x121b: 0x0040, 0x121c: 0x0040, 0x121d: 0x0040, - 0x121e: 0x0040, 0x121f: 0x0040, 0x1220: 0x0040, 0x1221: 0x0040, 0x1222: 0x0040, 0x1223: 0x0040, - 0x1224: 0x0040, 0x1225: 0x0040, 0x1226: 0x0040, 0x1227: 0x0040, 0x1228: 0x0040, 0x1229: 0x0040, - 0x122a: 0x0040, 0x122b: 0x0040, 0x122c: 0x0040, 0x122d: 0x0040, 0x122e: 0x0040, 0x122f: 0x0040, - 0x1230: 0x0040, 0x1231: 0x0040, 0x1232: 0x0040, 0x1233: 0x0040, 0x1234: 0x0040, 0x1235: 0x0040, - 0x1236: 0x0040, 0x1237: 0x0040, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, + 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008, + 0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d, + 0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008, + 0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008, + 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008, + 0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008, + 0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008, + 0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0040, + 0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008, + 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, // Block 0x49, offset 0x1240 - 0x1240: 0x6fb9, 0x1241: 0x6fd1, 0x1242: 0x6fe9, 0x1243: 0x7d15, 0x1244: 0x7d35, 0x1245: 0x7001, - 0x1246: 0x7001, 0x1247: 0x0040, 0x1248: 0x0040, 0x1249: 0x0040, 0x124a: 0x0040, 0x124b: 0x0040, - 0x124c: 0x0040, 0x124d: 0x0040, 0x124e: 0x0040, 0x124f: 0x0040, 0x1250: 0x0040, 0x1251: 0x0040, - 0x1252: 0x0040, 0x1253: 0x7019, 0x1254: 0x7041, 0x1255: 0x7069, 0x1256: 0x7091, 0x1257: 0x70b9, - 0x1258: 0x0040, 0x1259: 0x0040, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x70e1, - 0x125e: 0x1308, 0x125f: 0x7109, 0x1260: 0x7131, 0x1261: 0x20a9, 0x1262: 0x20f1, 0x1263: 0x7149, - 0x1264: 0x7161, 0x1265: 0x7179, 0x1266: 0x7191, 0x1267: 0x71a9, 0x1268: 0x71c1, 0x1269: 0x1fb2, - 0x126a: 0x71d9, 0x126b: 0x7201, 0x126c: 0x7229, 0x126d: 0x7261, 0x126e: 0x7299, 0x126f: 0x72c1, - 0x1270: 0x72e9, 0x1271: 0x7311, 0x1272: 0x7339, 0x1273: 0x7361, 0x1274: 0x7389, 0x1275: 0x73b1, - 0x1276: 0x73d9, 0x1277: 0x0040, 0x1278: 0x7401, 0x1279: 0x7429, 0x127a: 0x7451, 0x127b: 0x7479, - 0x127c: 0x74a1, 0x127d: 0x0040, 0x127e: 0x74c9, 0x127f: 0x0040, + 0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575, + 0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635, + 0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008, + 0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715, + 0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5, + 0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008, + 0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, + 0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935, + 0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5, + 0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5, + 0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35, // Block 0x4a, offset 0x1280 - 0x1280: 0x74f1, 0x1281: 0x7519, 0x1282: 0x0040, 0x1283: 0x7541, 0x1284: 0x7569, 0x1285: 0x0040, - 0x1286: 0x7591, 0x1287: 0x75b9, 0x1288: 0x75e1, 0x1289: 0x7609, 0x128a: 0x7631, 0x128b: 0x7659, - 0x128c: 0x7681, 0x128d: 0x76a9, 0x128e: 0x76d1, 0x128f: 0x76f9, 0x1290: 0x7721, 0x1291: 0x7721, - 0x1292: 0x7739, 0x1293: 0x7739, 0x1294: 0x7739, 0x1295: 0x7739, 0x1296: 0x7751, 0x1297: 0x7751, - 0x1298: 0x7751, 0x1299: 0x7751, 0x129a: 0x7769, 0x129b: 0x7769, 0x129c: 0x7769, 0x129d: 0x7769, - 0x129e: 0x7781, 0x129f: 0x7781, 0x12a0: 0x7781, 0x12a1: 0x7781, 0x12a2: 0x7799, 0x12a3: 0x7799, - 0x12a4: 0x7799, 0x12a5: 0x7799, 0x12a6: 0x77b1, 0x12a7: 0x77b1, 0x12a8: 0x77b1, 0x12a9: 0x77b1, - 0x12aa: 0x77c9, 0x12ab: 0x77c9, 0x12ac: 0x77c9, 0x12ad: 0x77c9, 0x12ae: 0x77e1, 0x12af: 0x77e1, - 0x12b0: 0x77e1, 0x12b1: 0x77e1, 0x12b2: 0x77f9, 0x12b3: 0x77f9, 0x12b4: 0x77f9, 0x12b5: 0x77f9, - 0x12b6: 0x7811, 0x12b7: 0x7811, 0x12b8: 0x7811, 0x12b9: 0x7811, 0x12ba: 0x7829, 0x12bb: 0x7829, - 0x12bc: 0x7829, 0x12bd: 0x7829, 0x12be: 0x7841, 0x12bf: 0x7841, + 0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35, + 0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5, + 0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19, + 0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91, + 0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040, + 0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040, + 0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040, + 0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040, + 0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040, + 0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040, + 0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040, // Block 0x4b, offset 0x12c0 - 0x12c0: 0x7841, 0x12c1: 0x7841, 0x12c2: 0x7859, 0x12c3: 0x7859, 0x12c4: 0x7871, 0x12c5: 0x7871, - 0x12c6: 0x7889, 0x12c7: 0x7889, 0x12c8: 0x78a1, 0x12c9: 0x78a1, 0x12ca: 0x78b9, 0x12cb: 0x78b9, - 0x12cc: 0x78d1, 0x12cd: 0x78d1, 0x12ce: 0x78e9, 0x12cf: 0x78e9, 0x12d0: 0x78e9, 0x12d1: 0x78e9, - 0x12d2: 0x7901, 0x12d3: 0x7901, 0x12d4: 0x7901, 0x12d5: 0x7901, 0x12d6: 0x7919, 0x12d7: 0x7919, - 0x12d8: 0x7919, 0x12d9: 0x7919, 0x12da: 0x7931, 0x12db: 0x7931, 0x12dc: 0x7931, 0x12dd: 0x7931, - 0x12de: 0x7949, 0x12df: 0x7949, 0x12e0: 0x7961, 0x12e1: 0x7961, 0x12e2: 0x7961, 0x12e3: 0x7961, - 0x12e4: 0x7979, 0x12e5: 0x7979, 0x12e6: 0x7991, 0x12e7: 0x7991, 0x12e8: 0x7991, 0x12e9: 0x7991, - 0x12ea: 0x79a9, 0x12eb: 0x79a9, 0x12ec: 0x79a9, 0x12ed: 0x79a9, 0x12ee: 0x79c1, 0x12ef: 0x79c1, - 0x12f0: 0x79d9, 0x12f1: 0x79d9, 0x12f2: 0x0018, 0x12f3: 0x0018, 0x12f4: 0x0018, 0x12f5: 0x0018, - 0x12f6: 0x0018, 0x12f7: 0x0018, 0x12f8: 0x0018, 0x12f9: 0x0018, 0x12fa: 0x0018, 0x12fb: 0x0018, - 0x12fc: 0x0018, 0x12fd: 0x0018, 0x12fe: 0x0018, 0x12ff: 0x0018, + 0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001, + 0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040, + 0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040, + 0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9, + 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1, + 0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149, + 0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2, + 0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1, + 0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1, + 0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479, + 0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040, // Block 0x4c, offset 0x1300 - 0x1300: 0x0018, 0x1301: 0x0018, 0x1302: 0x0040, 0x1303: 0x0040, 0x1304: 0x0040, 0x1305: 0x0040, - 0x1306: 0x0040, 0x1307: 0x0040, 0x1308: 0x0040, 0x1309: 0x0040, 0x130a: 0x0040, 0x130b: 0x0040, - 0x130c: 0x0040, 0x130d: 0x0040, 0x130e: 0x0040, 0x130f: 0x0040, 0x1310: 0x0040, 0x1311: 0x0040, - 0x1312: 0x0040, 0x1313: 0x79f1, 0x1314: 0x79f1, 0x1315: 0x79f1, 0x1316: 0x79f1, 0x1317: 0x7a09, - 0x1318: 0x7a09, 0x1319: 0x7a21, 0x131a: 0x7a21, 0x131b: 0x7a39, 0x131c: 0x7a39, 0x131d: 0x0479, - 0x131e: 0x7a51, 0x131f: 0x7a51, 0x1320: 0x7a69, 0x1321: 0x7a69, 0x1322: 0x7a81, 0x1323: 0x7a81, - 0x1324: 0x7a99, 0x1325: 0x7a99, 0x1326: 0x7a99, 0x1327: 0x7a99, 0x1328: 0x7ab1, 0x1329: 0x7ab1, - 0x132a: 0x7ac9, 0x132b: 0x7ac9, 0x132c: 0x7af1, 0x132d: 0x7af1, 0x132e: 0x7b19, 0x132f: 0x7b19, - 0x1330: 0x7b41, 0x1331: 0x7b41, 0x1332: 0x7b69, 0x1333: 0x7b69, 0x1334: 0x7b91, 0x1335: 0x7b91, - 0x1336: 0x7bb9, 0x1337: 0x7bb9, 0x1338: 0x7bb9, 0x1339: 0x7be1, 0x133a: 0x7be1, 0x133b: 0x7be1, - 0x133c: 0x7c09, 0x133d: 0x7c09, 0x133e: 0x7c09, 0x133f: 0x7c09, + 0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040, + 0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659, + 0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721, + 0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751, + 0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769, + 0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799, + 0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1, + 0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1, + 0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9, + 0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829, + 0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841, // Block 0x4d, offset 0x1340 - 0x1340: 0x85f9, 0x1341: 0x8621, 0x1342: 0x8649, 0x1343: 0x8671, 0x1344: 0x8699, 0x1345: 0x86c1, - 0x1346: 0x86e9, 0x1347: 0x8711, 0x1348: 0x8739, 0x1349: 0x8761, 0x134a: 0x8789, 0x134b: 0x87b1, - 0x134c: 0x87d9, 0x134d: 0x8801, 0x134e: 0x8829, 0x134f: 0x8851, 0x1350: 0x8879, 0x1351: 0x88a1, - 0x1352: 0x88c9, 0x1353: 0x88f1, 0x1354: 0x8919, 0x1355: 0x8941, 0x1356: 0x8969, 0x1357: 0x8991, - 0x1358: 0x89b9, 0x1359: 0x89e1, 0x135a: 0x8a09, 0x135b: 0x8a31, 0x135c: 0x8a59, 0x135d: 0x8a81, - 0x135e: 0x8aaa, 0x135f: 0x8ada, 0x1360: 0x8b0a, 0x1361: 0x8b3a, 0x1362: 0x8b6a, 0x1363: 0x8b9a, - 0x1364: 0x8bc9, 0x1365: 0x8bf1, 0x1366: 0x7c71, 0x1367: 0x8c19, 0x1368: 0x7be1, 0x1369: 0x7c99, - 0x136a: 0x8c41, 0x136b: 0x8c69, 0x136c: 0x7d39, 0x136d: 0x8c91, 0x136e: 0x7d61, 0x136f: 0x7d89, - 0x1370: 0x8cb9, 0x1371: 0x8ce1, 0x1372: 0x7e29, 0x1373: 0x8d09, 0x1374: 0x7e51, 0x1375: 0x7e79, - 0x1376: 0x8d31, 0x1377: 0x8d59, 0x1378: 0x7ec9, 0x1379: 0x8d81, 0x137a: 0x7ef1, 0x137b: 0x7f19, - 0x137c: 0x83a1, 0x137d: 0x83c9, 0x137e: 0x8441, 0x137f: 0x8469, + 0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871, + 0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9, + 0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9, + 0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919, + 0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931, + 0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961, + 0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991, + 0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1, + 0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818, + 0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818, + 0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818, // Block 0x4e, offset 0x1380 - 0x1380: 0x8491, 0x1381: 0x8531, 0x1382: 0x8559, 0x1383: 0x8581, 0x1384: 0x85a9, 0x1385: 0x8649, - 0x1386: 0x8671, 0x1387: 0x8699, 0x1388: 0x8da9, 0x1389: 0x8739, 0x138a: 0x8dd1, 0x138b: 0x8df9, - 0x138c: 0x8829, 0x138d: 0x8e21, 0x138e: 0x8851, 0x138f: 0x8879, 0x1390: 0x8a81, 0x1391: 0x8e49, - 0x1392: 0x8e71, 0x1393: 0x89b9, 0x1394: 0x8e99, 0x1395: 0x89e1, 0x1396: 0x8a09, 0x1397: 0x7c21, - 0x1398: 0x7c49, 0x1399: 0x8ec1, 0x139a: 0x7c71, 0x139b: 0x8ee9, 0x139c: 0x7cc1, 0x139d: 0x7ce9, - 0x139e: 0x7d11, 0x139f: 0x7d39, 0x13a0: 0x8f11, 0x13a1: 0x7db1, 0x13a2: 0x7dd9, 0x13a3: 0x7e01, - 0x13a4: 0x7e29, 0x13a5: 0x8f39, 0x13a6: 0x7ec9, 0x13a7: 0x7f41, 0x13a8: 0x7f69, 0x13a9: 0x7f91, - 0x13aa: 0x7fb9, 0x13ab: 0x7fe1, 0x13ac: 0x8031, 0x13ad: 0x8059, 0x13ae: 0x8081, 0x13af: 0x80a9, - 0x13b0: 0x80d1, 0x13b1: 0x80f9, 0x13b2: 0x8f61, 0x13b3: 0x8121, 0x13b4: 0x8149, 0x13b5: 0x8171, - 0x13b6: 0x8199, 0x13b7: 0x81c1, 0x13b8: 0x81e9, 0x13b9: 0x8239, 0x13ba: 0x8261, 0x13bb: 0x8289, - 0x13bc: 0x82b1, 0x13bd: 0x82d9, 0x13be: 0x8301, 0x13bf: 0x8329, + 0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040, + 0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040, + 0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040, + 0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09, + 0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479, + 0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81, + 0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1, + 0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19, + 0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91, + 0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1, + 0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09, // Block 0x4f, offset 0x13c0 - 0x13c0: 0x8351, 0x13c1: 0x8379, 0x13c2: 0x83f1, 0x13c3: 0x8419, 0x13c4: 0x84b9, 0x13c5: 0x84e1, - 0x13c6: 0x8509, 0x13c7: 0x8531, 0x13c8: 0x8559, 0x13c9: 0x85d1, 0x13ca: 0x85f9, 0x13cb: 0x8621, - 0x13cc: 0x8649, 0x13cd: 0x8f89, 0x13ce: 0x86c1, 0x13cf: 0x86e9, 0x13d0: 0x8711, 0x13d1: 0x8739, - 0x13d2: 0x87b1, 0x13d3: 0x87d9, 0x13d4: 0x8801, 0x13d5: 0x8829, 0x13d6: 0x8fb1, 0x13d7: 0x88a1, - 0x13d8: 0x88c9, 0x13d9: 0x8fd9, 0x13da: 0x8941, 0x13db: 0x8969, 0x13dc: 0x8991, 0x13dd: 0x89b9, - 0x13de: 0x9001, 0x13df: 0x7c71, 0x13e0: 0x8ee9, 0x13e1: 0x7d39, 0x13e2: 0x8f11, 0x13e3: 0x7e29, - 0x13e4: 0x8f39, 0x13e5: 0x7ec9, 0x13e6: 0x9029, 0x13e7: 0x80d1, 0x13e8: 0x9051, 0x13e9: 0x9079, - 0x13ea: 0x90a1, 0x13eb: 0x8531, 0x13ec: 0x8559, 0x13ed: 0x8649, 0x13ee: 0x8829, 0x13ef: 0x8fb1, - 0x13f0: 0x89b9, 0x13f1: 0x9001, 0x13f2: 0x90c9, 0x13f3: 0x9101, 0x13f4: 0x9139, 0x13f5: 0x9171, - 0x13f6: 0x9199, 0x13f7: 0x91c1, 0x13f8: 0x91e9, 0x13f9: 0x9211, 0x13fa: 0x9239, 0x13fb: 0x9261, - 0x13fc: 0x9289, 0x13fd: 0x92b1, 0x13fe: 0x92d9, 0x13ff: 0x9301, + 0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1, + 0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1, + 0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1, + 0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991, + 0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81, + 0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a, + 0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99, + 0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89, + 0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79, + 0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19, + 0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469, // Block 0x50, offset 0x1400 - 0x1400: 0x9329, 0x1401: 0x9351, 0x1402: 0x9379, 0x1403: 0x93a1, 0x1404: 0x93c9, 0x1405: 0x93f1, - 0x1406: 0x9419, 0x1407: 0x9441, 0x1408: 0x9469, 0x1409: 0x9491, 0x140a: 0x94b9, 0x140b: 0x94e1, - 0x140c: 0x9079, 0x140d: 0x9509, 0x140e: 0x9531, 0x140f: 0x9559, 0x1410: 0x9581, 0x1411: 0x9171, - 0x1412: 0x9199, 0x1413: 0x91c1, 0x1414: 0x91e9, 0x1415: 0x9211, 0x1416: 0x9239, 0x1417: 0x9261, - 0x1418: 0x9289, 0x1419: 0x92b1, 0x141a: 0x92d9, 0x141b: 0x9301, 0x141c: 0x9329, 0x141d: 0x9351, - 0x141e: 0x9379, 0x141f: 0x93a1, 0x1420: 0x93c9, 0x1421: 0x93f1, 0x1422: 0x9419, 0x1423: 0x9441, - 0x1424: 0x9469, 0x1425: 0x9491, 0x1426: 0x94b9, 0x1427: 0x94e1, 0x1428: 0x9079, 0x1429: 0x9509, - 0x142a: 0x9531, 0x142b: 0x9559, 0x142c: 0x9581, 0x142d: 0x9491, 0x142e: 0x94b9, 0x142f: 0x94e1, - 0x1430: 0x9079, 0x1431: 0x9051, 0x1432: 0x90a1, 0x1433: 0x8211, 0x1434: 0x8059, 0x1435: 0x8081, - 0x1436: 0x80a9, 0x1437: 0x9491, 0x1438: 0x94b9, 0x1439: 0x94e1, 0x143a: 0x8211, 0x143b: 0x8239, - 0x143c: 0x95a9, 0x143d: 0x95a9, 0x143e: 0x0018, 0x143f: 0x0018, + 0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649, + 0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9, + 0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49, + 0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21, + 0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9, + 0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01, + 0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91, + 0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9, + 0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171, + 0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289, + 0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329, // Block 0x51, offset 0x1440 - 0x1440: 0x0040, 0x1441: 0x0040, 0x1442: 0x0040, 0x1443: 0x0040, 0x1444: 0x0040, 0x1445: 0x0040, - 0x1446: 0x0040, 0x1447: 0x0040, 0x1448: 0x0040, 0x1449: 0x0040, 0x144a: 0x0040, 0x144b: 0x0040, - 0x144c: 0x0040, 0x144d: 0x0040, 0x144e: 0x0040, 0x144f: 0x0040, 0x1450: 0x95d1, 0x1451: 0x9609, - 0x1452: 0x9609, 0x1453: 0x9641, 0x1454: 0x9679, 0x1455: 0x96b1, 0x1456: 0x96e9, 0x1457: 0x9721, - 0x1458: 0x9759, 0x1459: 0x9759, 0x145a: 0x9791, 0x145b: 0x97c9, 0x145c: 0x9801, 0x145d: 0x9839, - 0x145e: 0x9871, 0x145f: 0x98a9, 0x1460: 0x98a9, 0x1461: 0x98e1, 0x1462: 0x9919, 0x1463: 0x9919, - 0x1464: 0x9951, 0x1465: 0x9951, 0x1466: 0x9989, 0x1467: 0x99c1, 0x1468: 0x99c1, 0x1469: 0x99f9, - 0x146a: 0x9a31, 0x146b: 0x9a31, 0x146c: 0x9a69, 0x146d: 0x9a69, 0x146e: 0x9aa1, 0x146f: 0x9ad9, - 0x1470: 0x9ad9, 0x1471: 0x9b11, 0x1472: 0x9b11, 0x1473: 0x9b49, 0x1474: 0x9b81, 0x1475: 0x9bb9, - 0x1476: 0x9bf1, 0x1477: 0x9bf1, 0x1478: 0x9c29, 0x1479: 0x9c61, 0x147a: 0x9c99, 0x147b: 0x9cd1, - 0x147c: 0x9d09, 0x147d: 0x9d09, 0x147e: 0x9d41, 0x147f: 0x9d79, + 0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1, + 0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621, + 0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739, + 0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1, + 0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9, + 0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29, + 0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079, + 0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1, + 0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171, + 0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261, + 0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301, // Block 0x52, offset 0x1480 - 0x1480: 0xa949, 0x1481: 0xa981, 0x1482: 0xa9b9, 0x1483: 0xa8a1, 0x1484: 0x9bb9, 0x1485: 0x9989, - 0x1486: 0xa9f1, 0x1487: 0xaa29, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, - 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x0040, 0x1491: 0x0040, - 0x1492: 0x0040, 0x1493: 0x0040, 0x1494: 0x0040, 0x1495: 0x0040, 0x1496: 0x0040, 0x1497: 0x0040, - 0x1498: 0x0040, 0x1499: 0x0040, 0x149a: 0x0040, 0x149b: 0x0040, 0x149c: 0x0040, 0x149d: 0x0040, - 0x149e: 0x0040, 0x149f: 0x0040, 0x14a0: 0x0040, 0x14a1: 0x0040, 0x14a2: 0x0040, 0x14a3: 0x0040, - 0x14a4: 0x0040, 0x14a5: 0x0040, 0x14a6: 0x0040, 0x14a7: 0x0040, 0x14a8: 0x0040, 0x14a9: 0x0040, - 0x14aa: 0x0040, 0x14ab: 0x0040, 0x14ac: 0x0040, 0x14ad: 0x0040, 0x14ae: 0x0040, 0x14af: 0x0040, - 0x14b0: 0xaa61, 0x14b1: 0xaa99, 0x14b2: 0xaad1, 0x14b3: 0xab19, 0x14b4: 0xab61, 0x14b5: 0xaba9, - 0x14b6: 0xabf1, 0x14b7: 0xac39, 0x14b8: 0xac81, 0x14b9: 0xacc9, 0x14ba: 0xad02, 0x14bb: 0xae12, - 0x14bc: 0xae91, 0x14bd: 0x0018, 0x14be: 0x0040, 0x14bf: 0x0040, + 0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1, + 0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1, + 0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171, + 0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261, + 0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351, + 0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441, + 0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509, + 0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1, + 0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081, + 0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239, + 0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018, // Block 0x53, offset 0x14c0 - 0x14c0: 0x13c0, 0x14c1: 0x13c0, 0x14c2: 0x13c0, 0x14c3: 0x13c0, 0x14c4: 0x13c0, 0x14c5: 0x13c0, - 0x14c6: 0x13c0, 0x14c7: 0x13c0, 0x14c8: 0x13c0, 0x14c9: 0x13c0, 0x14ca: 0x13c0, 0x14cb: 0x13c0, - 0x14cc: 0x13c0, 0x14cd: 0x13c0, 0x14ce: 0x13c0, 0x14cf: 0x13c0, 0x14d0: 0xaeda, 0x14d1: 0x7d55, - 0x14d2: 0x0040, 0x14d3: 0xaeea, 0x14d4: 0x03c2, 0x14d5: 0xaefa, 0x14d6: 0xaf0a, 0x14d7: 0x7d75, - 0x14d8: 0x7d95, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, - 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x1308, 0x14e1: 0x1308, 0x14e2: 0x1308, 0x14e3: 0x1308, - 0x14e4: 0x1308, 0x14e5: 0x1308, 0x14e6: 0x1308, 0x14e7: 0x1308, 0x14e8: 0x1308, 0x14e9: 0x1308, - 0x14ea: 0x1308, 0x14eb: 0x1308, 0x14ec: 0x1308, 0x14ed: 0x1308, 0x14ee: 0x1308, 0x14ef: 0x1308, - 0x14f0: 0x0040, 0x14f1: 0x7db5, 0x14f2: 0x7dd5, 0x14f3: 0xaf1a, 0x14f4: 0xaf1a, 0x14f5: 0x1fd2, - 0x14f6: 0x1fe2, 0x14f7: 0xaf2a, 0x14f8: 0xaf3a, 0x14f9: 0x7df5, 0x14fa: 0x7e15, 0x14fb: 0x7e35, - 0x14fc: 0x7df5, 0x14fd: 0x7e55, 0x14fe: 0x7e75, 0x14ff: 0x7e55, + 0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040, + 0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, + 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609, + 0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721, + 0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839, + 0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919, + 0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9, + 0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9, + 0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9, + 0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1, + 0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79, // Block 0x54, offset 0x1500 - 0x1500: 0x7e95, 0x1501: 0x7eb5, 0x1502: 0x7ed5, 0x1503: 0x7eb5, 0x1504: 0x7ef5, 0x1505: 0x0018, - 0x1506: 0x0018, 0x1507: 0xaf4a, 0x1508: 0xaf5a, 0x1509: 0x7f16, 0x150a: 0x7f36, 0x150b: 0x7f56, - 0x150c: 0x7f76, 0x150d: 0xaf1a, 0x150e: 0xaf1a, 0x150f: 0xaf1a, 0x1510: 0xaeda, 0x1511: 0x7f95, - 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x03c2, 0x1515: 0xaeea, 0x1516: 0xaf0a, 0x1517: 0xaefa, - 0x1518: 0x7fb5, 0x1519: 0x1fd2, 0x151a: 0x1fe2, 0x151b: 0xaf2a, 0x151c: 0xaf3a, 0x151d: 0x7e95, - 0x151e: 0x7ef5, 0x151f: 0xaf6a, 0x1520: 0xaf7a, 0x1521: 0xaf8a, 0x1522: 0x1fb2, 0x1523: 0xaf99, - 0x1524: 0xafaa, 0x1525: 0xafba, 0x1526: 0x1fc2, 0x1527: 0x0040, 0x1528: 0xafca, 0x1529: 0xafda, - 0x152a: 0xafea, 0x152b: 0xaffa, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, - 0x1530: 0x7fd6, 0x1531: 0xb009, 0x1532: 0x7ff6, 0x1533: 0x0008, 0x1534: 0x8016, 0x1535: 0x0040, - 0x1536: 0x8036, 0x1537: 0xb031, 0x1538: 0x8056, 0x1539: 0xb059, 0x153a: 0x8076, 0x153b: 0xb081, - 0x153c: 0x8096, 0x153d: 0xb0a9, 0x153e: 0x80b6, 0x153f: 0xb0d1, + 0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989, + 0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040, + 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040, + 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040, + 0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, + 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040, + 0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040, + 0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, + 0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9, + 0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12, + 0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040, // Block 0x55, offset 0x1540 - 0x1540: 0xb0f9, 0x1541: 0xb111, 0x1542: 0xb111, 0x1543: 0xb129, 0x1544: 0xb129, 0x1545: 0xb141, - 0x1546: 0xb141, 0x1547: 0xb159, 0x1548: 0xb159, 0x1549: 0xb171, 0x154a: 0xb171, 0x154b: 0xb171, - 0x154c: 0xb171, 0x154d: 0xb189, 0x154e: 0xb189, 0x154f: 0xb1a1, 0x1550: 0xb1a1, 0x1551: 0xb1a1, - 0x1552: 0xb1a1, 0x1553: 0xb1b9, 0x1554: 0xb1b9, 0x1555: 0xb1d1, 0x1556: 0xb1d1, 0x1557: 0xb1d1, - 0x1558: 0xb1d1, 0x1559: 0xb1e9, 0x155a: 0xb1e9, 0x155b: 0xb1e9, 0x155c: 0xb1e9, 0x155d: 0xb201, - 0x155e: 0xb201, 0x155f: 0xb201, 0x1560: 0xb201, 0x1561: 0xb219, 0x1562: 0xb219, 0x1563: 0xb219, - 0x1564: 0xb219, 0x1565: 0xb231, 0x1566: 0xb231, 0x1567: 0xb231, 0x1568: 0xb231, 0x1569: 0xb249, - 0x156a: 0xb249, 0x156b: 0xb261, 0x156c: 0xb261, 0x156d: 0xb279, 0x156e: 0xb279, 0x156f: 0xb291, - 0x1570: 0xb291, 0x1571: 0xb2a9, 0x1572: 0xb2a9, 0x1573: 0xb2a9, 0x1574: 0xb2a9, 0x1575: 0xb2c1, - 0x1576: 0xb2c1, 0x1577: 0xb2c1, 0x1578: 0xb2c1, 0x1579: 0xb2d9, 0x157a: 0xb2d9, 0x157b: 0xb2d9, - 0x157c: 0xb2d9, 0x157d: 0xb2f1, 0x157e: 0xb2f1, 0x157f: 0xb2f1, + 0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0, + 0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0, + 0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55, + 0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75, + 0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040, + 0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308, + 0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308, + 0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308, + 0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2, + 0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35, + 0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55, // Block 0x56, offset 0x1580 - 0x1580: 0xb2f1, 0x1581: 0xb309, 0x1582: 0xb309, 0x1583: 0xb309, 0x1584: 0xb309, 0x1585: 0xb321, - 0x1586: 0xb321, 0x1587: 0xb321, 0x1588: 0xb321, 0x1589: 0xb339, 0x158a: 0xb339, 0x158b: 0xb339, - 0x158c: 0xb339, 0x158d: 0xb351, 0x158e: 0xb351, 0x158f: 0xb351, 0x1590: 0xb351, 0x1591: 0xb369, - 0x1592: 0xb369, 0x1593: 0xb369, 0x1594: 0xb369, 0x1595: 0xb381, 0x1596: 0xb381, 0x1597: 0xb381, - 0x1598: 0xb381, 0x1599: 0xb399, 0x159a: 0xb399, 0x159b: 0xb399, 0x159c: 0xb399, 0x159d: 0xb3b1, - 0x159e: 0xb3b1, 0x159f: 0xb3b1, 0x15a0: 0xb3b1, 0x15a1: 0xb3c9, 0x15a2: 0xb3c9, 0x15a3: 0xb3c9, - 0x15a4: 0xb3c9, 0x15a5: 0xb3e1, 0x15a6: 0xb3e1, 0x15a7: 0xb3e1, 0x15a8: 0xb3e1, 0x15a9: 0xb3f9, - 0x15aa: 0xb3f9, 0x15ab: 0xb3f9, 0x15ac: 0xb3f9, 0x15ad: 0xb411, 0x15ae: 0xb411, 0x15af: 0x7ab1, - 0x15b0: 0x7ab1, 0x15b1: 0xb429, 0x15b2: 0xb429, 0x15b3: 0xb429, 0x15b4: 0xb429, 0x15b5: 0xb441, - 0x15b6: 0xb441, 0x15b7: 0xb469, 0x15b8: 0xb469, 0x15b9: 0xb491, 0x15ba: 0xb491, 0x15bb: 0xb4b9, - 0x15bc: 0xb4b9, 0x15bd: 0x0040, 0x15be: 0x0040, 0x15bf: 0x03c0, + 0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018, + 0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56, + 0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95, + 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa, + 0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95, + 0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99, + 0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda, + 0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, + 0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040, + 0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081, + 0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1, // Block 0x57, offset 0x15c0 - 0x15c0: 0x0040, 0x15c1: 0xaefa, 0x15c2: 0xb4e2, 0x15c3: 0xaf6a, 0x15c4: 0xafda, 0x15c5: 0xafea, - 0x15c6: 0xaf7a, 0x15c7: 0xb4f2, 0x15c8: 0x1fd2, 0x15c9: 0x1fe2, 0x15ca: 0xaf8a, 0x15cb: 0x1fb2, - 0x15cc: 0xaeda, 0x15cd: 0xaf99, 0x15ce: 0x29d1, 0x15cf: 0xb502, 0x15d0: 0x1f41, 0x15d1: 0x00c9, - 0x15d2: 0x0069, 0x15d3: 0x0079, 0x15d4: 0x1f51, 0x15d5: 0x1f61, 0x15d6: 0x1f71, 0x15d7: 0x1f81, - 0x15d8: 0x1f91, 0x15d9: 0x1fa1, 0x15da: 0xaeea, 0x15db: 0x03c2, 0x15dc: 0xafaa, 0x15dd: 0x1fc2, - 0x15de: 0xafba, 0x15df: 0xaf0a, 0x15e0: 0xaffa, 0x15e1: 0x0039, 0x15e2: 0x0ee9, 0x15e3: 0x1159, - 0x15e4: 0x0ef9, 0x15e5: 0x0f09, 0x15e6: 0x1199, 0x15e7: 0x0f31, 0x15e8: 0x0249, 0x15e9: 0x0f41, - 0x15ea: 0x0259, 0x15eb: 0x0f51, 0x15ec: 0x0359, 0x15ed: 0x0f61, 0x15ee: 0x0f71, 0x15ef: 0x00d9, - 0x15f0: 0x0f99, 0x15f1: 0x2039, 0x15f2: 0x0269, 0x15f3: 0x01d9, 0x15f4: 0x0fa9, 0x15f5: 0x0fb9, - 0x15f6: 0x1089, 0x15f7: 0x0279, 0x15f8: 0x0369, 0x15f9: 0x0289, 0x15fa: 0x13d1, 0x15fb: 0xaf4a, - 0x15fc: 0xafca, 0x15fd: 0xaf5a, 0x15fe: 0xb512, 0x15ff: 0xaf1a, + 0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141, + 0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171, + 0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1, + 0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1, + 0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201, + 0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219, + 0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249, + 0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291, + 0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1, + 0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9, + 0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1, // Block 0x58, offset 0x1600 - 0x1600: 0x1caa, 0x1601: 0x0039, 0x1602: 0x0ee9, 0x1603: 0x1159, 0x1604: 0x0ef9, 0x1605: 0x0f09, - 0x1606: 0x1199, 0x1607: 0x0f31, 0x1608: 0x0249, 0x1609: 0x0f41, 0x160a: 0x0259, 0x160b: 0x0f51, - 0x160c: 0x0359, 0x160d: 0x0f61, 0x160e: 0x0f71, 0x160f: 0x00d9, 0x1610: 0x0f99, 0x1611: 0x2039, - 0x1612: 0x0269, 0x1613: 0x01d9, 0x1614: 0x0fa9, 0x1615: 0x0fb9, 0x1616: 0x1089, 0x1617: 0x0279, - 0x1618: 0x0369, 0x1619: 0x0289, 0x161a: 0x13d1, 0x161b: 0xaf2a, 0x161c: 0xb522, 0x161d: 0xaf3a, - 0x161e: 0xb532, 0x161f: 0x80d5, 0x1620: 0x80f5, 0x1621: 0x29d1, 0x1622: 0x8115, 0x1623: 0x8115, - 0x1624: 0x8135, 0x1625: 0x8155, 0x1626: 0x8175, 0x1627: 0x8195, 0x1628: 0x81b5, 0x1629: 0x81d5, - 0x162a: 0x81f5, 0x162b: 0x8215, 0x162c: 0x8235, 0x162d: 0x8255, 0x162e: 0x8275, 0x162f: 0x8295, - 0x1630: 0x82b5, 0x1631: 0x82d5, 0x1632: 0x82f5, 0x1633: 0x8315, 0x1634: 0x8335, 0x1635: 0x8355, - 0x1636: 0x8375, 0x1637: 0x8395, 0x1638: 0x83b5, 0x1639: 0x83d5, 0x163a: 0x83f5, 0x163b: 0x8415, - 0x163c: 0x81b5, 0x163d: 0x8435, 0x163e: 0x8455, 0x163f: 0x8215, + 0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321, + 0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339, + 0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369, + 0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381, + 0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1, + 0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9, + 0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9, + 0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1, + 0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441, + 0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9, + 0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, // Block 0x59, offset 0x1640 - 0x1640: 0x8475, 0x1641: 0x8495, 0x1642: 0x84b5, 0x1643: 0x84d5, 0x1644: 0x84f5, 0x1645: 0x8515, - 0x1646: 0x8535, 0x1647: 0x8555, 0x1648: 0x84d5, 0x1649: 0x8575, 0x164a: 0x84d5, 0x164b: 0x8595, - 0x164c: 0x8595, 0x164d: 0x85b5, 0x164e: 0x85b5, 0x164f: 0x85d5, 0x1650: 0x8515, 0x1651: 0x85f5, - 0x1652: 0x8615, 0x1653: 0x85f5, 0x1654: 0x8635, 0x1655: 0x8615, 0x1656: 0x8655, 0x1657: 0x8655, - 0x1658: 0x8675, 0x1659: 0x8675, 0x165a: 0x8695, 0x165b: 0x8695, 0x165c: 0x8615, 0x165d: 0x8115, - 0x165e: 0x86b5, 0x165f: 0x86d5, 0x1660: 0x0040, 0x1661: 0x86f5, 0x1662: 0x8715, 0x1663: 0x8735, - 0x1664: 0x8755, 0x1665: 0x8735, 0x1666: 0x8775, 0x1667: 0x8795, 0x1668: 0x87b5, 0x1669: 0x87b5, - 0x166a: 0x87d5, 0x166b: 0x87d5, 0x166c: 0x87f5, 0x166d: 0x87f5, 0x166e: 0x87d5, 0x166f: 0x87d5, - 0x1670: 0x8815, 0x1671: 0x8835, 0x1672: 0x8855, 0x1673: 0x8875, 0x1674: 0x8895, 0x1675: 0x88b5, - 0x1676: 0x88b5, 0x1677: 0x88b5, 0x1678: 0x88d5, 0x1679: 0x88d5, 0x167a: 0x88d5, 0x167b: 0x88d5, - 0x167c: 0x87b5, 0x167d: 0x87b5, 0x167e: 0x87b5, 0x167f: 0x0040, + 0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea, + 0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2, + 0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9, + 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81, + 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2, + 0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159, + 0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41, + 0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9, + 0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9, + 0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a, + 0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a, // Block 0x5a, offset 0x1680 - 0x1680: 0x0040, 0x1681: 0x0040, 0x1682: 0x8715, 0x1683: 0x86f5, 0x1684: 0x88f5, 0x1685: 0x86f5, - 0x1686: 0x8715, 0x1687: 0x86f5, 0x1688: 0x0040, 0x1689: 0x0040, 0x168a: 0x8915, 0x168b: 0x8715, - 0x168c: 0x8935, 0x168d: 0x88f5, 0x168e: 0x8935, 0x168f: 0x8715, 0x1690: 0x0040, 0x1691: 0x0040, - 0x1692: 0x8955, 0x1693: 0x8975, 0x1694: 0x8875, 0x1695: 0x8935, 0x1696: 0x88f5, 0x1697: 0x8935, - 0x1698: 0x0040, 0x1699: 0x0040, 0x169a: 0x8995, 0x169b: 0x89b5, 0x169c: 0x8995, 0x169d: 0x0040, - 0x169e: 0x0040, 0x169f: 0x0040, 0x16a0: 0xb541, 0x16a1: 0xb559, 0x16a2: 0xb571, 0x16a3: 0x89d6, - 0x16a4: 0xb589, 0x16a5: 0xb5a1, 0x16a6: 0x89f5, 0x16a7: 0x0040, 0x16a8: 0x8a15, 0x16a9: 0x8a35, - 0x16aa: 0x8a55, 0x16ab: 0x8a35, 0x16ac: 0x8a75, 0x16ad: 0x8a95, 0x16ae: 0x8ab5, 0x16af: 0x0040, - 0x16b0: 0x0040, 0x16b1: 0x0040, 0x16b2: 0x0040, 0x16b3: 0x0040, 0x16b4: 0x0040, 0x16b5: 0x0040, - 0x16b6: 0x0040, 0x16b7: 0x0040, 0x16b8: 0x0040, 0x16b9: 0x0340, 0x16ba: 0x0340, 0x16bb: 0x0340, - 0x16bc: 0x0040, 0x16bd: 0x0040, 0x16be: 0x0040, 0x16bf: 0x0040, + 0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09, + 0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51, + 0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039, + 0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279, + 0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a, + 0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115, + 0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5, + 0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295, + 0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355, + 0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415, + 0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215, // Block 0x5b, offset 0x16c0 - 0x16c0: 0x0208, 0x16c1: 0x0208, 0x16c2: 0x0208, 0x16c3: 0x0208, 0x16c4: 0x0208, 0x16c5: 0x0408, - 0x16c6: 0x0008, 0x16c7: 0x0408, 0x16c8: 0x0018, 0x16c9: 0x0408, 0x16ca: 0x0408, 0x16cb: 0x0008, - 0x16cc: 0x0008, 0x16cd: 0x0108, 0x16ce: 0x0408, 0x16cf: 0x0408, 0x16d0: 0x0408, 0x16d1: 0x0408, - 0x16d2: 0x0408, 0x16d3: 0x0208, 0x16d4: 0x0208, 0x16d5: 0x0208, 0x16d6: 0x0208, 0x16d7: 0x0108, - 0x16d8: 0x0208, 0x16d9: 0x0208, 0x16da: 0x0208, 0x16db: 0x0208, 0x16dc: 0x0208, 0x16dd: 0x0408, - 0x16de: 0x0208, 0x16df: 0x0208, 0x16e0: 0x0208, 0x16e1: 0x0408, 0x16e2: 0x0008, 0x16e3: 0x0008, - 0x16e4: 0x0408, 0x16e5: 0x1308, 0x16e6: 0x1308, 0x16e7: 0x0040, 0x16e8: 0x0040, 0x16e9: 0x0040, - 0x16ea: 0x0040, 0x16eb: 0x0218, 0x16ec: 0x0218, 0x16ed: 0x0218, 0x16ee: 0x0218, 0x16ef: 0x0418, - 0x16f0: 0x0018, 0x16f1: 0x0018, 0x16f2: 0x0018, 0x16f3: 0x0018, 0x16f4: 0x0018, 0x16f5: 0x0018, - 0x16f6: 0x0018, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0040, 0x16fa: 0x0040, 0x16fb: 0x0040, - 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, + 0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515, + 0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595, + 0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5, + 0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655, + 0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115, + 0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735, + 0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5, + 0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5, + 0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5, + 0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5, + 0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040, // Block 0x5c, offset 0x1700 - 0x1700: 0x0208, 0x1701: 0x0408, 0x1702: 0x0208, 0x1703: 0x0408, 0x1704: 0x0408, 0x1705: 0x0408, - 0x1706: 0x0208, 0x1707: 0x0208, 0x1708: 0x0208, 0x1709: 0x0408, 0x170a: 0x0208, 0x170b: 0x0208, - 0x170c: 0x0408, 0x170d: 0x0208, 0x170e: 0x0408, 0x170f: 0x0408, 0x1710: 0x0208, 0x1711: 0x0408, - 0x1712: 0x0040, 0x1713: 0x0040, 0x1714: 0x0040, 0x1715: 0x0040, 0x1716: 0x0040, 0x1717: 0x0040, - 0x1718: 0x0040, 0x1719: 0x0018, 0x171a: 0x0018, 0x171b: 0x0018, 0x171c: 0x0018, 0x171d: 0x0040, - 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0x0040, 0x1721: 0x0040, 0x1722: 0x0040, 0x1723: 0x0040, - 0x1724: 0x0040, 0x1725: 0x0040, 0x1726: 0x0040, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0418, - 0x172a: 0x0418, 0x172b: 0x0418, 0x172c: 0x0418, 0x172d: 0x0218, 0x172e: 0x0218, 0x172f: 0x0018, + 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5, + 0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715, + 0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040, + 0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935, + 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040, + 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6, + 0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35, + 0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040, 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, - 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, + 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340, 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, // Block 0x5d, offset 0x1740 - 0x1740: 0x1308, 0x1741: 0x1308, 0x1742: 0x1008, 0x1743: 0x1008, 0x1744: 0x0040, 0x1745: 0x0008, - 0x1746: 0x0008, 0x1747: 0x0008, 0x1748: 0x0008, 0x1749: 0x0008, 0x174a: 0x0008, 0x174b: 0x0008, - 0x174c: 0x0008, 0x174d: 0x0040, 0x174e: 0x0040, 0x174f: 0x0008, 0x1750: 0x0008, 0x1751: 0x0040, - 0x1752: 0x0040, 0x1753: 0x0008, 0x1754: 0x0008, 0x1755: 0x0008, 0x1756: 0x0008, 0x1757: 0x0008, - 0x1758: 0x0008, 0x1759: 0x0008, 0x175a: 0x0008, 0x175b: 0x0008, 0x175c: 0x0008, 0x175d: 0x0008, - 0x175e: 0x0008, 0x175f: 0x0008, 0x1760: 0x0008, 0x1761: 0x0008, 0x1762: 0x0008, 0x1763: 0x0008, - 0x1764: 0x0008, 0x1765: 0x0008, 0x1766: 0x0008, 0x1767: 0x0008, 0x1768: 0x0008, 0x1769: 0x0040, - 0x176a: 0x0008, 0x176b: 0x0008, 0x176c: 0x0008, 0x176d: 0x0008, 0x176e: 0x0008, 0x176f: 0x0008, - 0x1770: 0x0008, 0x1771: 0x0040, 0x1772: 0x0008, 0x1773: 0x0008, 0x1774: 0x0040, 0x1775: 0x0008, - 0x1776: 0x0008, 0x1777: 0x0008, 0x1778: 0x0008, 0x1779: 0x0008, 0x177a: 0x0040, 0x177b: 0x0040, - 0x177c: 0x1308, 0x177d: 0x0008, 0x177e: 0x1008, 0x177f: 0x1008, + 0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08, + 0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808, + 0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08, + 0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908, + 0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08, + 0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808, + 0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040, + 0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18, + 0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818, + 0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, // Block 0x5e, offset 0x1780 - 0x1780: 0x1308, 0x1781: 0x1008, 0x1782: 0x1008, 0x1783: 0x1008, 0x1784: 0x1008, 0x1785: 0x0040, - 0x1786: 0x0040, 0x1787: 0x1008, 0x1788: 0x1008, 0x1789: 0x0040, 0x178a: 0x0040, 0x178b: 0x1008, - 0x178c: 0x1008, 0x178d: 0x1808, 0x178e: 0x0040, 0x178f: 0x0040, 0x1790: 0x0008, 0x1791: 0x0040, - 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x1008, - 0x1798: 0x0040, 0x1799: 0x0040, 0x179a: 0x0040, 0x179b: 0x0040, 0x179c: 0x0040, 0x179d: 0x0008, - 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x1008, 0x17a3: 0x1008, - 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x1308, 0x17a7: 0x1308, 0x17a8: 0x1308, 0x17a9: 0x1308, - 0x17aa: 0x1308, 0x17ab: 0x1308, 0x17ac: 0x1308, 0x17ad: 0x0040, 0x17ae: 0x0040, 0x17af: 0x0040, - 0x17b0: 0x1308, 0x17b1: 0x1308, 0x17b2: 0x1308, 0x17b3: 0x1308, 0x17b4: 0x1308, 0x17b5: 0x0040, + 0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08, + 0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08, + 0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08, + 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040, + 0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040, + 0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040, + 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18, + 0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818, + 0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040, 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, // Block 0x5f, offset 0x17c0 - 0x17c0: 0x0039, 0x17c1: 0x0ee9, 0x17c2: 0x1159, 0x17c3: 0x0ef9, 0x17c4: 0x0f09, 0x17c5: 0x1199, - 0x17c6: 0x0f31, 0x17c7: 0x0249, 0x17c8: 0x0f41, 0x17c9: 0x0259, 0x17ca: 0x0f51, 0x17cb: 0x0359, - 0x17cc: 0x0f61, 0x17cd: 0x0f71, 0x17ce: 0x00d9, 0x17cf: 0x0f99, 0x17d0: 0x2039, 0x17d1: 0x0269, - 0x17d2: 0x01d9, 0x17d3: 0x0fa9, 0x17d4: 0x0fb9, 0x17d5: 0x1089, 0x17d6: 0x0279, 0x17d7: 0x0369, - 0x17d8: 0x0289, 0x17d9: 0x13d1, 0x17da: 0x0039, 0x17db: 0x0ee9, 0x17dc: 0x1159, 0x17dd: 0x0ef9, - 0x17de: 0x0f09, 0x17df: 0x1199, 0x17e0: 0x0f31, 0x17e1: 0x0249, 0x17e2: 0x0f41, 0x17e3: 0x0259, - 0x17e4: 0x0f51, 0x17e5: 0x0359, 0x17e6: 0x0f61, 0x17e7: 0x0f71, 0x17e8: 0x00d9, 0x17e9: 0x0f99, - 0x17ea: 0x2039, 0x17eb: 0x0269, 0x17ec: 0x01d9, 0x17ed: 0x0fa9, 0x17ee: 0x0fb9, 0x17ef: 0x1089, - 0x17f0: 0x0279, 0x17f1: 0x0369, 0x17f2: 0x0289, 0x17f3: 0x13d1, 0x17f4: 0x0039, 0x17f5: 0x0ee9, - 0x17f6: 0x1159, 0x17f7: 0x0ef9, 0x17f8: 0x0f09, 0x17f9: 0x1199, 0x17fa: 0x0f31, 0x17fb: 0x0249, - 0x17fc: 0x0f41, 0x17fd: 0x0259, 0x17fe: 0x0f51, 0x17ff: 0x0359, + 0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008, + 0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008, + 0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040, + 0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008, + 0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008, + 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008, + 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040, + 0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008, + 0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008, + 0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x0040, + 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008, // Block 0x60, offset 0x1800 - 0x1800: 0x0f61, 0x1801: 0x0f71, 0x1802: 0x00d9, 0x1803: 0x0f99, 0x1804: 0x2039, 0x1805: 0x0269, - 0x1806: 0x01d9, 0x1807: 0x0fa9, 0x1808: 0x0fb9, 0x1809: 0x1089, 0x180a: 0x0279, 0x180b: 0x0369, - 0x180c: 0x0289, 0x180d: 0x13d1, 0x180e: 0x0039, 0x180f: 0x0ee9, 0x1810: 0x1159, 0x1811: 0x0ef9, - 0x1812: 0x0f09, 0x1813: 0x1199, 0x1814: 0x0f31, 0x1815: 0x0040, 0x1816: 0x0f41, 0x1817: 0x0259, - 0x1818: 0x0f51, 0x1819: 0x0359, 0x181a: 0x0f61, 0x181b: 0x0f71, 0x181c: 0x00d9, 0x181d: 0x0f99, - 0x181e: 0x2039, 0x181f: 0x0269, 0x1820: 0x01d9, 0x1821: 0x0fa9, 0x1822: 0x0fb9, 0x1823: 0x1089, - 0x1824: 0x0279, 0x1825: 0x0369, 0x1826: 0x0289, 0x1827: 0x13d1, 0x1828: 0x0039, 0x1829: 0x0ee9, - 0x182a: 0x1159, 0x182b: 0x0ef9, 0x182c: 0x0f09, 0x182d: 0x1199, 0x182e: 0x0f31, 0x182f: 0x0249, - 0x1830: 0x0f41, 0x1831: 0x0259, 0x1832: 0x0f51, 0x1833: 0x0359, 0x1834: 0x0f61, 0x1835: 0x0f71, - 0x1836: 0x00d9, 0x1837: 0x0f99, 0x1838: 0x2039, 0x1839: 0x0269, 0x183a: 0x01d9, 0x183b: 0x0fa9, - 0x183c: 0x0fb9, 0x183d: 0x1089, 0x183e: 0x0279, 0x183f: 0x0369, + 0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040, + 0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008, + 0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040, + 0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008, + 0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008, + 0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008, + 0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308, + 0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040, + 0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040, + 0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040, + 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040, // Block 0x61, offset 0x1840 - 0x1840: 0x0289, 0x1841: 0x13d1, 0x1842: 0x0039, 0x1843: 0x0ee9, 0x1844: 0x1159, 0x1845: 0x0ef9, - 0x1846: 0x0f09, 0x1847: 0x1199, 0x1848: 0x0f31, 0x1849: 0x0249, 0x184a: 0x0f41, 0x184b: 0x0259, - 0x184c: 0x0f51, 0x184d: 0x0359, 0x184e: 0x0f61, 0x184f: 0x0f71, 0x1850: 0x00d9, 0x1851: 0x0f99, - 0x1852: 0x2039, 0x1853: 0x0269, 0x1854: 0x01d9, 0x1855: 0x0fa9, 0x1856: 0x0fb9, 0x1857: 0x1089, - 0x1858: 0x0279, 0x1859: 0x0369, 0x185a: 0x0289, 0x185b: 0x13d1, 0x185c: 0x0039, 0x185d: 0x0040, - 0x185e: 0x1159, 0x185f: 0x0ef9, 0x1860: 0x0040, 0x1861: 0x0040, 0x1862: 0x0f31, 0x1863: 0x0040, - 0x1864: 0x0040, 0x1865: 0x0259, 0x1866: 0x0f51, 0x1867: 0x0040, 0x1868: 0x0040, 0x1869: 0x0f71, - 0x186a: 0x00d9, 0x186b: 0x0f99, 0x186c: 0x2039, 0x186d: 0x0040, 0x186e: 0x01d9, 0x186f: 0x0fa9, - 0x1870: 0x0fb9, 0x1871: 0x1089, 0x1872: 0x0279, 0x1873: 0x0369, 0x1874: 0x0289, 0x1875: 0x13d1, - 0x1876: 0x0039, 0x1877: 0x0ee9, 0x1878: 0x1159, 0x1879: 0x0ef9, 0x187a: 0x0040, 0x187b: 0x1199, - 0x187c: 0x0040, 0x187d: 0x0249, 0x187e: 0x0f41, 0x187f: 0x0259, + 0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199, + 0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359, + 0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269, + 0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369, + 0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9, + 0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259, + 0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99, + 0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089, + 0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9, + 0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249, + 0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359, // Block 0x62, offset 0x1880 - 0x1880: 0x0f51, 0x1881: 0x0359, 0x1882: 0x0f61, 0x1883: 0x0f71, 0x1884: 0x0040, 0x1885: 0x0f99, - 0x1886: 0x2039, 0x1887: 0x0269, 0x1888: 0x01d9, 0x1889: 0x0fa9, 0x188a: 0x0fb9, 0x188b: 0x1089, - 0x188c: 0x0279, 0x188d: 0x0369, 0x188e: 0x0289, 0x188f: 0x13d1, 0x1890: 0x0039, 0x1891: 0x0ee9, - 0x1892: 0x1159, 0x1893: 0x0ef9, 0x1894: 0x0f09, 0x1895: 0x1199, 0x1896: 0x0f31, 0x1897: 0x0249, - 0x1898: 0x0f41, 0x1899: 0x0259, 0x189a: 0x0f51, 0x189b: 0x0359, 0x189c: 0x0f61, 0x189d: 0x0f71, - 0x189e: 0x00d9, 0x189f: 0x0f99, 0x18a0: 0x2039, 0x18a1: 0x0269, 0x18a2: 0x01d9, 0x18a3: 0x0fa9, - 0x18a4: 0x0fb9, 0x18a5: 0x1089, 0x18a6: 0x0279, 0x18a7: 0x0369, 0x18a8: 0x0289, 0x18a9: 0x13d1, - 0x18aa: 0x0039, 0x18ab: 0x0ee9, 0x18ac: 0x1159, 0x18ad: 0x0ef9, 0x18ae: 0x0f09, 0x18af: 0x1199, - 0x18b0: 0x0f31, 0x18b1: 0x0249, 0x18b2: 0x0f41, 0x18b3: 0x0259, 0x18b4: 0x0f51, 0x18b5: 0x0359, - 0x18b6: 0x0f61, 0x18b7: 0x0f71, 0x18b8: 0x00d9, 0x18b9: 0x0f99, 0x18ba: 0x2039, 0x18bb: 0x0269, - 0x18bc: 0x01d9, 0x18bd: 0x0fa9, 0x18be: 0x0fb9, 0x18bf: 0x1089, + 0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269, + 0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369, + 0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9, + 0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259, + 0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99, + 0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089, + 0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9, + 0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249, + 0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71, + 0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9, + 0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369, // Block 0x63, offset 0x18c0 - 0x18c0: 0x0279, 0x18c1: 0x0369, 0x18c2: 0x0289, 0x18c3: 0x13d1, 0x18c4: 0x0039, 0x18c5: 0x0ee9, - 0x18c6: 0x0040, 0x18c7: 0x0ef9, 0x18c8: 0x0f09, 0x18c9: 0x1199, 0x18ca: 0x0f31, 0x18cb: 0x0040, - 0x18cc: 0x0040, 0x18cd: 0x0259, 0x18ce: 0x0f51, 0x18cf: 0x0359, 0x18d0: 0x0f61, 0x18d1: 0x0f71, - 0x18d2: 0x00d9, 0x18d3: 0x0f99, 0x18d4: 0x2039, 0x18d5: 0x0040, 0x18d6: 0x01d9, 0x18d7: 0x0fa9, - 0x18d8: 0x0fb9, 0x18d9: 0x1089, 0x18da: 0x0279, 0x18db: 0x0369, 0x18dc: 0x0289, 0x18dd: 0x0040, - 0x18de: 0x0039, 0x18df: 0x0ee9, 0x18e0: 0x1159, 0x18e1: 0x0ef9, 0x18e2: 0x0f09, 0x18e3: 0x1199, - 0x18e4: 0x0f31, 0x18e5: 0x0249, 0x18e6: 0x0f41, 0x18e7: 0x0259, 0x18e8: 0x0f51, 0x18e9: 0x0359, - 0x18ea: 0x0f61, 0x18eb: 0x0f71, 0x18ec: 0x00d9, 0x18ed: 0x0f99, 0x18ee: 0x2039, 0x18ef: 0x0269, - 0x18f0: 0x01d9, 0x18f1: 0x0fa9, 0x18f2: 0x0fb9, 0x18f3: 0x1089, 0x18f4: 0x0279, 0x18f5: 0x0369, - 0x18f6: 0x0289, 0x18f7: 0x13d1, 0x18f8: 0x0039, 0x18f9: 0x0ee9, 0x18fa: 0x0040, 0x18fb: 0x0ef9, - 0x18fc: 0x0f09, 0x18fd: 0x1199, 0x18fe: 0x0f31, 0x18ff: 0x0040, + 0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9, + 0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259, + 0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99, + 0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089, + 0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040, + 0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040, + 0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71, + 0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9, + 0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1, + 0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199, + 0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259, // Block 0x64, offset 0x1900 - 0x1900: 0x0f41, 0x1901: 0x0259, 0x1902: 0x0f51, 0x1903: 0x0359, 0x1904: 0x0f61, 0x1905: 0x0040, - 0x1906: 0x00d9, 0x1907: 0x0040, 0x1908: 0x0040, 0x1909: 0x0040, 0x190a: 0x01d9, 0x190b: 0x0fa9, - 0x190c: 0x0fb9, 0x190d: 0x1089, 0x190e: 0x0279, 0x190f: 0x0369, 0x1910: 0x0289, 0x1911: 0x0040, - 0x1912: 0x0039, 0x1913: 0x0ee9, 0x1914: 0x1159, 0x1915: 0x0ef9, 0x1916: 0x0f09, 0x1917: 0x1199, - 0x1918: 0x0f31, 0x1919: 0x0249, 0x191a: 0x0f41, 0x191b: 0x0259, 0x191c: 0x0f51, 0x191d: 0x0359, - 0x191e: 0x0f61, 0x191f: 0x0f71, 0x1920: 0x00d9, 0x1921: 0x0f99, 0x1922: 0x2039, 0x1923: 0x0269, - 0x1924: 0x01d9, 0x1925: 0x0fa9, 0x1926: 0x0fb9, 0x1927: 0x1089, 0x1928: 0x0279, 0x1929: 0x0369, - 0x192a: 0x0289, 0x192b: 0x13d1, 0x192c: 0x0039, 0x192d: 0x0ee9, 0x192e: 0x1159, 0x192f: 0x0ef9, - 0x1930: 0x0f09, 0x1931: 0x1199, 0x1932: 0x0f31, 0x1933: 0x0249, 0x1934: 0x0f41, 0x1935: 0x0259, - 0x1936: 0x0f51, 0x1937: 0x0359, 0x1938: 0x0f61, 0x1939: 0x0f71, 0x193a: 0x00d9, 0x193b: 0x0f99, - 0x193c: 0x2039, 0x193d: 0x0269, 0x193e: 0x01d9, 0x193f: 0x0fa9, + 0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99, + 0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089, + 0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9, + 0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249, + 0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71, + 0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9, + 0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1, + 0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199, + 0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359, + 0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269, + 0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089, // Block 0x65, offset 0x1940 - 0x1940: 0x0fb9, 0x1941: 0x1089, 0x1942: 0x0279, 0x1943: 0x0369, 0x1944: 0x0289, 0x1945: 0x13d1, - 0x1946: 0x0039, 0x1947: 0x0ee9, 0x1948: 0x1159, 0x1949: 0x0ef9, 0x194a: 0x0f09, 0x194b: 0x1199, - 0x194c: 0x0f31, 0x194d: 0x0249, 0x194e: 0x0f41, 0x194f: 0x0259, 0x1950: 0x0f51, 0x1951: 0x0359, - 0x1952: 0x0f61, 0x1953: 0x0f71, 0x1954: 0x00d9, 0x1955: 0x0f99, 0x1956: 0x2039, 0x1957: 0x0269, - 0x1958: 0x01d9, 0x1959: 0x0fa9, 0x195a: 0x0fb9, 0x195b: 0x1089, 0x195c: 0x0279, 0x195d: 0x0369, - 0x195e: 0x0289, 0x195f: 0x13d1, 0x1960: 0x0039, 0x1961: 0x0ee9, 0x1962: 0x1159, 0x1963: 0x0ef9, - 0x1964: 0x0f09, 0x1965: 0x1199, 0x1966: 0x0f31, 0x1967: 0x0249, 0x1968: 0x0f41, 0x1969: 0x0259, - 0x196a: 0x0f51, 0x196b: 0x0359, 0x196c: 0x0f61, 0x196d: 0x0f71, 0x196e: 0x00d9, 0x196f: 0x0f99, - 0x1970: 0x2039, 0x1971: 0x0269, 0x1972: 0x01d9, 0x1973: 0x0fa9, 0x1974: 0x0fb9, 0x1975: 0x1089, - 0x1976: 0x0279, 0x1977: 0x0369, 0x1978: 0x0289, 0x1979: 0x13d1, 0x197a: 0x0039, 0x197b: 0x0ee9, - 0x197c: 0x1159, 0x197d: 0x0ef9, 0x197e: 0x0f09, 0x197f: 0x1199, + 0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9, + 0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040, + 0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71, + 0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9, + 0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040, + 0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199, + 0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359, + 0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269, + 0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369, + 0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9, + 0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040, // Block 0x66, offset 0x1980 - 0x1980: 0x0f31, 0x1981: 0x0249, 0x1982: 0x0f41, 0x1983: 0x0259, 0x1984: 0x0f51, 0x1985: 0x0359, - 0x1986: 0x0f61, 0x1987: 0x0f71, 0x1988: 0x00d9, 0x1989: 0x0f99, 0x198a: 0x2039, 0x198b: 0x0269, - 0x198c: 0x01d9, 0x198d: 0x0fa9, 0x198e: 0x0fb9, 0x198f: 0x1089, 0x1990: 0x0279, 0x1991: 0x0369, - 0x1992: 0x0289, 0x1993: 0x13d1, 0x1994: 0x0039, 0x1995: 0x0ee9, 0x1996: 0x1159, 0x1997: 0x0ef9, - 0x1998: 0x0f09, 0x1999: 0x1199, 0x199a: 0x0f31, 0x199b: 0x0249, 0x199c: 0x0f41, 0x199d: 0x0259, - 0x199e: 0x0f51, 0x199f: 0x0359, 0x19a0: 0x0f61, 0x19a1: 0x0f71, 0x19a2: 0x00d9, 0x19a3: 0x0f99, - 0x19a4: 0x2039, 0x19a5: 0x0269, 0x19a6: 0x01d9, 0x19a7: 0x0fa9, 0x19a8: 0x0fb9, 0x19a9: 0x1089, - 0x19aa: 0x0279, 0x19ab: 0x0369, 0x19ac: 0x0289, 0x19ad: 0x13d1, 0x19ae: 0x0039, 0x19af: 0x0ee9, - 0x19b0: 0x1159, 0x19b1: 0x0ef9, 0x19b2: 0x0f09, 0x19b3: 0x1199, 0x19b4: 0x0f31, 0x19b5: 0x0249, - 0x19b6: 0x0f41, 0x19b7: 0x0259, 0x19b8: 0x0f51, 0x19b9: 0x0359, 0x19ba: 0x0f61, 0x19bb: 0x0f71, - 0x19bc: 0x00d9, 0x19bd: 0x0f99, 0x19be: 0x2039, 0x19bf: 0x0269, + 0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040, + 0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9, + 0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040, + 0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199, + 0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359, + 0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269, + 0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369, + 0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9, + 0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259, + 0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99, + 0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9, // Block 0x67, offset 0x19c0 - 0x19c0: 0x01d9, 0x19c1: 0x0fa9, 0x19c2: 0x0fb9, 0x19c3: 0x1089, 0x19c4: 0x0279, 0x19c5: 0x0369, - 0x19c6: 0x0289, 0x19c7: 0x13d1, 0x19c8: 0x0039, 0x19c9: 0x0ee9, 0x19ca: 0x1159, 0x19cb: 0x0ef9, - 0x19cc: 0x0f09, 0x19cd: 0x1199, 0x19ce: 0x0f31, 0x19cf: 0x0249, 0x19d0: 0x0f41, 0x19d1: 0x0259, - 0x19d2: 0x0f51, 0x19d3: 0x0359, 0x19d4: 0x0f61, 0x19d5: 0x0f71, 0x19d6: 0x00d9, 0x19d7: 0x0f99, - 0x19d8: 0x2039, 0x19d9: 0x0269, 0x19da: 0x01d9, 0x19db: 0x0fa9, 0x19dc: 0x0fb9, 0x19dd: 0x1089, - 0x19de: 0x0279, 0x19df: 0x0369, 0x19e0: 0x0289, 0x19e1: 0x13d1, 0x19e2: 0x0039, 0x19e3: 0x0ee9, - 0x19e4: 0x1159, 0x19e5: 0x0ef9, 0x19e6: 0x0f09, 0x19e7: 0x1199, 0x19e8: 0x0f31, 0x19e9: 0x0249, - 0x19ea: 0x0f41, 0x19eb: 0x0259, 0x19ec: 0x0f51, 0x19ed: 0x0359, 0x19ee: 0x0f61, 0x19ef: 0x0f71, - 0x19f0: 0x00d9, 0x19f1: 0x0f99, 0x19f2: 0x2039, 0x19f3: 0x0269, 0x19f4: 0x01d9, 0x19f5: 0x0fa9, - 0x19f6: 0x0fb9, 0x19f7: 0x1089, 0x19f8: 0x0279, 0x19f9: 0x0369, 0x19fa: 0x0289, 0x19fb: 0x13d1, - 0x19fc: 0x0039, 0x19fd: 0x0ee9, 0x19fe: 0x1159, 0x19ff: 0x0ef9, + 0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1, + 0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199, + 0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359, + 0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269, + 0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369, + 0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9, + 0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259, + 0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99, + 0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089, + 0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9, + 0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199, // Block 0x68, offset 0x1a00 - 0x1a00: 0x0f09, 0x1a01: 0x1199, 0x1a02: 0x0f31, 0x1a03: 0x0249, 0x1a04: 0x0f41, 0x1a05: 0x0259, - 0x1a06: 0x0f51, 0x1a07: 0x0359, 0x1a08: 0x0f61, 0x1a09: 0x0f71, 0x1a0a: 0x00d9, 0x1a0b: 0x0f99, - 0x1a0c: 0x2039, 0x1a0d: 0x0269, 0x1a0e: 0x01d9, 0x1a0f: 0x0fa9, 0x1a10: 0x0fb9, 0x1a11: 0x1089, - 0x1a12: 0x0279, 0x1a13: 0x0369, 0x1a14: 0x0289, 0x1a15: 0x13d1, 0x1a16: 0x0039, 0x1a17: 0x0ee9, - 0x1a18: 0x1159, 0x1a19: 0x0ef9, 0x1a1a: 0x0f09, 0x1a1b: 0x1199, 0x1a1c: 0x0f31, 0x1a1d: 0x0249, - 0x1a1e: 0x0f41, 0x1a1f: 0x0259, 0x1a20: 0x0f51, 0x1a21: 0x0359, 0x1a22: 0x0f61, 0x1a23: 0x0f71, - 0x1a24: 0x00d9, 0x1a25: 0x0f99, 0x1a26: 0x2039, 0x1a27: 0x0269, 0x1a28: 0x01d9, 0x1a29: 0x0fa9, - 0x1a2a: 0x0fb9, 0x1a2b: 0x1089, 0x1a2c: 0x0279, 0x1a2d: 0x0369, 0x1a2e: 0x0289, 0x1a2f: 0x13d1, - 0x1a30: 0x0039, 0x1a31: 0x0ee9, 0x1a32: 0x1159, 0x1a33: 0x0ef9, 0x1a34: 0x0f09, 0x1a35: 0x1199, - 0x1a36: 0x0f31, 0x1a37: 0x0249, 0x1a38: 0x0f41, 0x1a39: 0x0259, 0x1a3a: 0x0f51, 0x1a3b: 0x0359, - 0x1a3c: 0x0f61, 0x1a3d: 0x0f71, 0x1a3e: 0x00d9, 0x1a3f: 0x0f99, + 0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359, + 0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269, + 0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369, + 0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9, + 0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259, + 0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99, + 0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089, + 0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9, + 0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249, + 0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71, + 0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269, // Block 0x69, offset 0x1a40 - 0x1a40: 0x2039, 0x1a41: 0x0269, 0x1a42: 0x01d9, 0x1a43: 0x0fa9, 0x1a44: 0x0fb9, 0x1a45: 0x1089, - 0x1a46: 0x0279, 0x1a47: 0x0369, 0x1a48: 0x0289, 0x1a49: 0x13d1, 0x1a4a: 0x0039, 0x1a4b: 0x0ee9, - 0x1a4c: 0x1159, 0x1a4d: 0x0ef9, 0x1a4e: 0x0f09, 0x1a4f: 0x1199, 0x1a50: 0x0f31, 0x1a51: 0x0249, - 0x1a52: 0x0f41, 0x1a53: 0x0259, 0x1a54: 0x0f51, 0x1a55: 0x0359, 0x1a56: 0x0f61, 0x1a57: 0x0f71, - 0x1a58: 0x00d9, 0x1a59: 0x0f99, 0x1a5a: 0x2039, 0x1a5b: 0x0269, 0x1a5c: 0x01d9, 0x1a5d: 0x0fa9, - 0x1a5e: 0x0fb9, 0x1a5f: 0x1089, 0x1a60: 0x0279, 0x1a61: 0x0369, 0x1a62: 0x0289, 0x1a63: 0x13d1, - 0x1a64: 0xba81, 0x1a65: 0xba99, 0x1a66: 0x0040, 0x1a67: 0x0040, 0x1a68: 0xbab1, 0x1a69: 0x1099, - 0x1a6a: 0x10b1, 0x1a6b: 0x10c9, 0x1a6c: 0xbac9, 0x1a6d: 0xbae1, 0x1a6e: 0xbaf9, 0x1a6f: 0x1429, - 0x1a70: 0x1a31, 0x1a71: 0xbb11, 0x1a72: 0xbb29, 0x1a73: 0xbb41, 0x1a74: 0xbb59, 0x1a75: 0xbb71, - 0x1a76: 0xbb89, 0x1a77: 0x2109, 0x1a78: 0x1111, 0x1a79: 0x1429, 0x1a7a: 0xbba1, 0x1a7b: 0xbbb9, - 0x1a7c: 0xbbd1, 0x1a7d: 0x10e1, 0x1a7e: 0x10f9, 0x1a7f: 0xbbe9, + 0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369, + 0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9, + 0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259, + 0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99, + 0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089, + 0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9, + 0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249, + 0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71, + 0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9, + 0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1, + 0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9, // Block 0x6a, offset 0x1a80 - 0x1a80: 0x2079, 0x1a81: 0xbc01, 0x1a82: 0xbab1, 0x1a83: 0x1099, 0x1a84: 0x10b1, 0x1a85: 0x10c9, - 0x1a86: 0xbac9, 0x1a87: 0xbae1, 0x1a88: 0xbaf9, 0x1a89: 0x1429, 0x1a8a: 0x1a31, 0x1a8b: 0xbb11, - 0x1a8c: 0xbb29, 0x1a8d: 0xbb41, 0x1a8e: 0xbb59, 0x1a8f: 0xbb71, 0x1a90: 0xbb89, 0x1a91: 0x2109, - 0x1a92: 0x1111, 0x1a93: 0xbba1, 0x1a94: 0xbba1, 0x1a95: 0xbbb9, 0x1a96: 0xbbd1, 0x1a97: 0x10e1, - 0x1a98: 0x10f9, 0x1a99: 0xbbe9, 0x1a9a: 0x2079, 0x1a9b: 0xbc21, 0x1a9c: 0xbac9, 0x1a9d: 0x1429, - 0x1a9e: 0xbb11, 0x1a9f: 0x10e1, 0x1aa0: 0x1111, 0x1aa1: 0x2109, 0x1aa2: 0xbab1, 0x1aa3: 0x1099, - 0x1aa4: 0x10b1, 0x1aa5: 0x10c9, 0x1aa6: 0xbac9, 0x1aa7: 0xbae1, 0x1aa8: 0xbaf9, 0x1aa9: 0x1429, - 0x1aaa: 0x1a31, 0x1aab: 0xbb11, 0x1aac: 0xbb29, 0x1aad: 0xbb41, 0x1aae: 0xbb59, 0x1aaf: 0xbb71, - 0x1ab0: 0xbb89, 0x1ab1: 0x2109, 0x1ab2: 0x1111, 0x1ab3: 0x1429, 0x1ab4: 0xbba1, 0x1ab5: 0xbbb9, - 0x1ab6: 0xbbd1, 0x1ab7: 0x10e1, 0x1ab8: 0x10f9, 0x1ab9: 0xbbe9, 0x1aba: 0x2079, 0x1abb: 0xbc01, - 0x1abc: 0xbab1, 0x1abd: 0x1099, 0x1abe: 0x10b1, 0x1abf: 0x10c9, + 0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259, + 0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99, + 0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089, + 0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9, + 0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249, + 0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71, + 0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9, + 0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1, + 0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199, + 0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359, + 0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99, // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0xbac9, 0x1ac1: 0xbae1, 0x1ac2: 0xbaf9, 0x1ac3: 0x1429, 0x1ac4: 0x1a31, 0x1ac5: 0xbb11, - 0x1ac6: 0xbb29, 0x1ac7: 0xbb41, 0x1ac8: 0xbb59, 0x1ac9: 0xbb71, 0x1aca: 0xbb89, 0x1acb: 0x2109, - 0x1acc: 0x1111, 0x1acd: 0xbba1, 0x1ace: 0xbba1, 0x1acf: 0xbbb9, 0x1ad0: 0xbbd1, 0x1ad1: 0x10e1, - 0x1ad2: 0x10f9, 0x1ad3: 0xbbe9, 0x1ad4: 0x2079, 0x1ad5: 0xbc21, 0x1ad6: 0xbac9, 0x1ad7: 0x1429, - 0x1ad8: 0xbb11, 0x1ad9: 0x10e1, 0x1ada: 0x1111, 0x1adb: 0x2109, 0x1adc: 0xbab1, 0x1add: 0x1099, - 0x1ade: 0x10b1, 0x1adf: 0x10c9, 0x1ae0: 0xbac9, 0x1ae1: 0xbae1, 0x1ae2: 0xbaf9, 0x1ae3: 0x1429, - 0x1ae4: 0x1a31, 0x1ae5: 0xbb11, 0x1ae6: 0xbb29, 0x1ae7: 0xbb41, 0x1ae8: 0xbb59, 0x1ae9: 0xbb71, - 0x1aea: 0xbb89, 0x1aeb: 0x2109, 0x1aec: 0x1111, 0x1aed: 0x1429, 0x1aee: 0xbba1, 0x1aef: 0xbbb9, - 0x1af0: 0xbbd1, 0x1af1: 0x10e1, 0x1af2: 0x10f9, 0x1af3: 0xbbe9, 0x1af4: 0x2079, 0x1af5: 0xbc01, - 0x1af6: 0xbab1, 0x1af7: 0x1099, 0x1af8: 0x10b1, 0x1af9: 0x10c9, 0x1afa: 0xbac9, 0x1afb: 0xbae1, - 0x1afc: 0xbaf9, 0x1afd: 0x1429, 0x1afe: 0x1a31, 0x1aff: 0xbb11, + 0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089, + 0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9, + 0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249, + 0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71, + 0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9, + 0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1, + 0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099, + 0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429, + 0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71, + 0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9, + 0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9, // Block 0x6c, offset 0x1b00 - 0x1b00: 0xbb29, 0x1b01: 0xbb41, 0x1b02: 0xbb59, 0x1b03: 0xbb71, 0x1b04: 0xbb89, 0x1b05: 0x2109, - 0x1b06: 0x1111, 0x1b07: 0xbba1, 0x1b08: 0xbba1, 0x1b09: 0xbbb9, 0x1b0a: 0xbbd1, 0x1b0b: 0x10e1, - 0x1b0c: 0x10f9, 0x1b0d: 0xbbe9, 0x1b0e: 0x2079, 0x1b0f: 0xbc21, 0x1b10: 0xbac9, 0x1b11: 0x1429, - 0x1b12: 0xbb11, 0x1b13: 0x10e1, 0x1b14: 0x1111, 0x1b15: 0x2109, 0x1b16: 0xbab1, 0x1b17: 0x1099, - 0x1b18: 0x10b1, 0x1b19: 0x10c9, 0x1b1a: 0xbac9, 0x1b1b: 0xbae1, 0x1b1c: 0xbaf9, 0x1b1d: 0x1429, - 0x1b1e: 0x1a31, 0x1b1f: 0xbb11, 0x1b20: 0xbb29, 0x1b21: 0xbb41, 0x1b22: 0xbb59, 0x1b23: 0xbb71, - 0x1b24: 0xbb89, 0x1b25: 0x2109, 0x1b26: 0x1111, 0x1b27: 0x1429, 0x1b28: 0xbba1, 0x1b29: 0xbbb9, - 0x1b2a: 0xbbd1, 0x1b2b: 0x10e1, 0x1b2c: 0x10f9, 0x1b2d: 0xbbe9, 0x1b2e: 0x2079, 0x1b2f: 0xbc01, - 0x1b30: 0xbab1, 0x1b31: 0x1099, 0x1b32: 0x10b1, 0x1b33: 0x10c9, 0x1b34: 0xbac9, 0x1b35: 0xbae1, - 0x1b36: 0xbaf9, 0x1b37: 0x1429, 0x1b38: 0x1a31, 0x1b39: 0xbb11, 0x1b3a: 0xbb29, 0x1b3b: 0xbb41, - 0x1b3c: 0xbb59, 0x1b3d: 0xbb71, 0x1b3e: 0xbb89, 0x1b3f: 0x2109, + 0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9, + 0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11, + 0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109, + 0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1, + 0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429, + 0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099, + 0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429, + 0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71, + 0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9, + 0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01, + 0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9, // Block 0x6d, offset 0x1b40 - 0x1b40: 0x1111, 0x1b41: 0xbba1, 0x1b42: 0xbba1, 0x1b43: 0xbbb9, 0x1b44: 0xbbd1, 0x1b45: 0x10e1, - 0x1b46: 0x10f9, 0x1b47: 0xbbe9, 0x1b48: 0x2079, 0x1b49: 0xbc21, 0x1b4a: 0xbac9, 0x1b4b: 0x1429, - 0x1b4c: 0xbb11, 0x1b4d: 0x10e1, 0x1b4e: 0x1111, 0x1b4f: 0x2109, 0x1b50: 0xbab1, 0x1b51: 0x1099, - 0x1b52: 0x10b1, 0x1b53: 0x10c9, 0x1b54: 0xbac9, 0x1b55: 0xbae1, 0x1b56: 0xbaf9, 0x1b57: 0x1429, - 0x1b58: 0x1a31, 0x1b59: 0xbb11, 0x1b5a: 0xbb29, 0x1b5b: 0xbb41, 0x1b5c: 0xbb59, 0x1b5d: 0xbb71, - 0x1b5e: 0xbb89, 0x1b5f: 0x2109, 0x1b60: 0x1111, 0x1b61: 0x1429, 0x1b62: 0xbba1, 0x1b63: 0xbbb9, - 0x1b64: 0xbbd1, 0x1b65: 0x10e1, 0x1b66: 0x10f9, 0x1b67: 0xbbe9, 0x1b68: 0x2079, 0x1b69: 0xbc01, - 0x1b6a: 0xbab1, 0x1b6b: 0x1099, 0x1b6c: 0x10b1, 0x1b6d: 0x10c9, 0x1b6e: 0xbac9, 0x1b6f: 0xbae1, - 0x1b70: 0xbaf9, 0x1b71: 0x1429, 0x1b72: 0x1a31, 0x1b73: 0xbb11, 0x1b74: 0xbb29, 0x1b75: 0xbb41, - 0x1b76: 0xbb59, 0x1b77: 0xbb71, 0x1b78: 0xbb89, 0x1b79: 0x2109, 0x1b7a: 0x1111, 0x1b7b: 0xbba1, - 0x1b7c: 0xbba1, 0x1b7d: 0xbbb9, 0x1b7e: 0xbbd1, 0x1b7f: 0x10e1, + 0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11, + 0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109, + 0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1, + 0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429, + 0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099, + 0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429, + 0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71, + 0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9, + 0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01, + 0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1, + 0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11, // Block 0x6e, offset 0x1b80 - 0x1b80: 0x10f9, 0x1b81: 0xbbe9, 0x1b82: 0x2079, 0x1b83: 0xbc21, 0x1b84: 0xbac9, 0x1b85: 0x1429, - 0x1b86: 0xbb11, 0x1b87: 0x10e1, 0x1b88: 0x1111, 0x1b89: 0x2109, 0x1b8a: 0xbc41, 0x1b8b: 0xbc41, - 0x1b8c: 0x0040, 0x1b8d: 0x0040, 0x1b8e: 0x1f41, 0x1b8f: 0x00c9, 0x1b90: 0x0069, 0x1b91: 0x0079, - 0x1b92: 0x1f51, 0x1b93: 0x1f61, 0x1b94: 0x1f71, 0x1b95: 0x1f81, 0x1b96: 0x1f91, 0x1b97: 0x1fa1, - 0x1b98: 0x1f41, 0x1b99: 0x00c9, 0x1b9a: 0x0069, 0x1b9b: 0x0079, 0x1b9c: 0x1f51, 0x1b9d: 0x1f61, - 0x1b9e: 0x1f71, 0x1b9f: 0x1f81, 0x1ba0: 0x1f91, 0x1ba1: 0x1fa1, 0x1ba2: 0x1f41, 0x1ba3: 0x00c9, - 0x1ba4: 0x0069, 0x1ba5: 0x0079, 0x1ba6: 0x1f51, 0x1ba7: 0x1f61, 0x1ba8: 0x1f71, 0x1ba9: 0x1f81, - 0x1baa: 0x1f91, 0x1bab: 0x1fa1, 0x1bac: 0x1f41, 0x1bad: 0x00c9, 0x1bae: 0x0069, 0x1baf: 0x0079, - 0x1bb0: 0x1f51, 0x1bb1: 0x1f61, 0x1bb2: 0x1f71, 0x1bb3: 0x1f81, 0x1bb4: 0x1f91, 0x1bb5: 0x1fa1, - 0x1bb6: 0x1f41, 0x1bb7: 0x00c9, 0x1bb8: 0x0069, 0x1bb9: 0x0079, 0x1bba: 0x1f51, 0x1bbb: 0x1f61, - 0x1bbc: 0x1f71, 0x1bbd: 0x1f81, 0x1bbe: 0x1f91, 0x1bbf: 0x1fa1, + 0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109, + 0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1, + 0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429, + 0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099, + 0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429, + 0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71, + 0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9, + 0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01, + 0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1, + 0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41, + 0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109, // Block 0x6f, offset 0x1bc0 - 0x1bc0: 0xe115, 0x1bc1: 0xe115, 0x1bc2: 0xe135, 0x1bc3: 0xe135, 0x1bc4: 0xe115, 0x1bc5: 0xe115, - 0x1bc6: 0xe175, 0x1bc7: 0xe175, 0x1bc8: 0xe115, 0x1bc9: 0xe115, 0x1bca: 0xe135, 0x1bcb: 0xe135, - 0x1bcc: 0xe115, 0x1bcd: 0xe115, 0x1bce: 0xe1f5, 0x1bcf: 0xe1f5, 0x1bd0: 0xe115, 0x1bd1: 0xe115, - 0x1bd2: 0xe135, 0x1bd3: 0xe135, 0x1bd4: 0xe115, 0x1bd5: 0xe115, 0x1bd6: 0xe175, 0x1bd7: 0xe175, - 0x1bd8: 0xe115, 0x1bd9: 0xe115, 0x1bda: 0xe135, 0x1bdb: 0xe135, 0x1bdc: 0xe115, 0x1bdd: 0xe115, - 0x1bde: 0x8b05, 0x1bdf: 0x8b05, 0x1be0: 0x04b5, 0x1be1: 0x04b5, 0x1be2: 0x0208, 0x1be3: 0x0208, - 0x1be4: 0x0208, 0x1be5: 0x0208, 0x1be6: 0x0208, 0x1be7: 0x0208, 0x1be8: 0x0208, 0x1be9: 0x0208, - 0x1bea: 0x0208, 0x1beb: 0x0208, 0x1bec: 0x0208, 0x1bed: 0x0208, 0x1bee: 0x0208, 0x1bef: 0x0208, - 0x1bf0: 0x0208, 0x1bf1: 0x0208, 0x1bf2: 0x0208, 0x1bf3: 0x0208, 0x1bf4: 0x0208, 0x1bf5: 0x0208, - 0x1bf6: 0x0208, 0x1bf7: 0x0208, 0x1bf8: 0x0208, 0x1bf9: 0x0208, 0x1bfa: 0x0208, 0x1bfb: 0x0208, - 0x1bfc: 0x0208, 0x1bfd: 0x0208, 0x1bfe: 0x0208, 0x1bff: 0x0208, + 0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1, + 0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429, + 0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099, + 0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429, + 0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71, + 0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9, + 0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01, + 0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1, + 0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41, + 0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1, + 0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1, // Block 0x70, offset 0x1c00 - 0x1c00: 0xb189, 0x1c01: 0xb1a1, 0x1c02: 0xb201, 0x1c03: 0xb249, 0x1c04: 0x0040, 0x1c05: 0xb411, - 0x1c06: 0xb291, 0x1c07: 0xb219, 0x1c08: 0xb309, 0x1c09: 0xb429, 0x1c0a: 0xb399, 0x1c0b: 0xb3b1, - 0x1c0c: 0xb3c9, 0x1c0d: 0xb3e1, 0x1c0e: 0xb2a9, 0x1c0f: 0xb339, 0x1c10: 0xb369, 0x1c11: 0xb2d9, - 0x1c12: 0xb381, 0x1c13: 0xb279, 0x1c14: 0xb2c1, 0x1c15: 0xb1d1, 0x1c16: 0xb1e9, 0x1c17: 0xb231, - 0x1c18: 0xb261, 0x1c19: 0xb2f1, 0x1c1a: 0xb321, 0x1c1b: 0xb351, 0x1c1c: 0xbc59, 0x1c1d: 0x7949, - 0x1c1e: 0xbc71, 0x1c1f: 0xbc89, 0x1c20: 0x0040, 0x1c21: 0xb1a1, 0x1c22: 0xb201, 0x1c23: 0x0040, - 0x1c24: 0xb3f9, 0x1c25: 0x0040, 0x1c26: 0x0040, 0x1c27: 0xb219, 0x1c28: 0x0040, 0x1c29: 0xb429, - 0x1c2a: 0xb399, 0x1c2b: 0xb3b1, 0x1c2c: 0xb3c9, 0x1c2d: 0xb3e1, 0x1c2e: 0xb2a9, 0x1c2f: 0xb339, - 0x1c30: 0xb369, 0x1c31: 0xb2d9, 0x1c32: 0xb381, 0x1c33: 0x0040, 0x1c34: 0xb2c1, 0x1c35: 0xb1d1, - 0x1c36: 0xb1e9, 0x1c37: 0xb231, 0x1c38: 0x0040, 0x1c39: 0xb2f1, 0x1c3a: 0x0040, 0x1c3b: 0xb351, - 0x1c3c: 0x0040, 0x1c3d: 0x0040, 0x1c3e: 0x0040, 0x1c3f: 0x0040, + 0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429, + 0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41, + 0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079, + 0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1, + 0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61, + 0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9, + 0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81, + 0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079, + 0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1, + 0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61, + 0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1, // Block 0x71, offset 0x1c40 - 0x1c40: 0x0040, 0x1c41: 0x0040, 0x1c42: 0xb201, 0x1c43: 0x0040, 0x1c44: 0x0040, 0x1c45: 0x0040, - 0x1c46: 0x0040, 0x1c47: 0xb219, 0x1c48: 0x0040, 0x1c49: 0xb429, 0x1c4a: 0x0040, 0x1c4b: 0xb3b1, - 0x1c4c: 0x0040, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0x0040, 0x1c51: 0xb2d9, - 0x1c52: 0xb381, 0x1c53: 0x0040, 0x1c54: 0xb2c1, 0x1c55: 0x0040, 0x1c56: 0x0040, 0x1c57: 0xb231, - 0x1c58: 0x0040, 0x1c59: 0xb2f1, 0x1c5a: 0x0040, 0x1c5b: 0xb351, 0x1c5c: 0x0040, 0x1c5d: 0x7949, - 0x1c5e: 0x0040, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, - 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0xb309, 0x1c69: 0xb429, - 0x1c6a: 0xb399, 0x1c6b: 0x0040, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, - 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, - 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0xb321, 0x1c7b: 0xb351, - 0x1c7c: 0xbc59, 0x1c7d: 0x0040, 0x1c7e: 0xbc71, 0x1c7f: 0x0040, + 0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115, + 0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135, + 0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115, + 0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175, + 0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115, + 0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08, + 0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08, + 0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08, + 0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08, + 0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08, + 0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08, // Block 0x72, offset 0x1c80 - 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0xb3f9, 0x1c85: 0xb411, - 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, + 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411, + 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1, 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, - 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x0040, - 0x1c9e: 0x0040, 0x1c9f: 0x0040, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0xb249, - 0x1ca4: 0x0040, 0x1ca5: 0xb411, 0x1ca6: 0xb291, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, - 0x1caa: 0x0040, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, - 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0xb279, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, - 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0xb261, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, + 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949, + 0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, + 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429, + 0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351, 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x0040, 0x1cc1: 0xbca2, 0x1cc2: 0xbcba, 0x1cc3: 0xbcd2, 0x1cc4: 0xbcea, 0x1cc5: 0xbd02, - 0x1cc6: 0xbd1a, 0x1cc7: 0xbd32, 0x1cc8: 0xbd4a, 0x1cc9: 0xbd62, 0x1cca: 0xbd7a, 0x1ccb: 0x0018, - 0x1ccc: 0x0018, 0x1ccd: 0x0040, 0x1cce: 0x0040, 0x1ccf: 0x0040, 0x1cd0: 0xbd92, 0x1cd1: 0xbdb2, - 0x1cd2: 0xbdd2, 0x1cd3: 0xbdf2, 0x1cd4: 0xbe12, 0x1cd5: 0xbe32, 0x1cd6: 0xbe52, 0x1cd7: 0xbe72, - 0x1cd8: 0xbe92, 0x1cd9: 0xbeb2, 0x1cda: 0xbed2, 0x1cdb: 0xbef2, 0x1cdc: 0xbf12, 0x1cdd: 0xbf32, - 0x1cde: 0xbf52, 0x1cdf: 0xbf72, 0x1ce0: 0xbf92, 0x1ce1: 0xbfb2, 0x1ce2: 0xbfd2, 0x1ce3: 0xbff2, - 0x1ce4: 0xc012, 0x1ce5: 0xc032, 0x1ce6: 0xc052, 0x1ce7: 0xc072, 0x1ce8: 0xc092, 0x1ce9: 0xc0b2, - 0x1cea: 0xc0d1, 0x1ceb: 0x1159, 0x1cec: 0x0269, 0x1ced: 0x6671, 0x1cee: 0xc111, 0x1cef: 0x0040, - 0x1cf0: 0x0039, 0x1cf1: 0x0ee9, 0x1cf2: 0x1159, 0x1cf3: 0x0ef9, 0x1cf4: 0x0f09, 0x1cf5: 0x1199, - 0x1cf6: 0x0f31, 0x1cf7: 0x0249, 0x1cf8: 0x0f41, 0x1cf9: 0x0259, 0x1cfa: 0x0f51, 0x1cfb: 0x0359, - 0x1cfc: 0x0f61, 0x1cfd: 0x0f71, 0x1cfe: 0x00d9, 0x1cff: 0x0f99, + 0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040, + 0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, + 0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9, + 0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231, + 0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949, + 0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040, + 0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, + 0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, + 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, + 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, + 0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040, // Block 0x74, offset 0x1d00 - 0x1d00: 0x2039, 0x1d01: 0x0269, 0x1d02: 0x01d9, 0x1d03: 0x0fa9, 0x1d04: 0x0fb9, 0x1d05: 0x1089, - 0x1d06: 0x0279, 0x1d07: 0x0369, 0x1d08: 0x0289, 0x1d09: 0x13d1, 0x1d0a: 0xc129, 0x1d0b: 0x65b1, - 0x1d0c: 0xc141, 0x1d0d: 0x1441, 0x1d0e: 0xc159, 0x1d0f: 0xc179, 0x1d10: 0x0018, 0x1d11: 0x0018, - 0x1d12: 0x0018, 0x1d13: 0x0018, 0x1d14: 0x0018, 0x1d15: 0x0018, 0x1d16: 0x0018, 0x1d17: 0x0018, - 0x1d18: 0x0018, 0x1d19: 0x0018, 0x1d1a: 0x0018, 0x1d1b: 0x0018, 0x1d1c: 0x0018, 0x1d1d: 0x0018, - 0x1d1e: 0x0018, 0x1d1f: 0x0018, 0x1d20: 0x0018, 0x1d21: 0x0018, 0x1d22: 0x0018, 0x1d23: 0x0018, - 0x1d24: 0x0018, 0x1d25: 0x0018, 0x1d26: 0x0018, 0x1d27: 0x0018, 0x1d28: 0x0018, 0x1d29: 0x0018, - 0x1d2a: 0xc191, 0x1d2b: 0xc1a9, 0x1d2c: 0x0040, 0x1d2d: 0x0040, 0x1d2e: 0x0040, 0x1d2f: 0x0040, - 0x1d30: 0x0018, 0x1d31: 0x0018, 0x1d32: 0x0018, 0x1d33: 0x0018, 0x1d34: 0x0018, 0x1d35: 0x0018, - 0x1d36: 0x0018, 0x1d37: 0x0018, 0x1d38: 0x0018, 0x1d39: 0x0018, 0x1d3a: 0x0018, 0x1d3b: 0x0018, - 0x1d3c: 0x0018, 0x1d3d: 0x0018, 0x1d3e: 0x0018, 0x1d3f: 0x0018, + 0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411, + 0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1, + 0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9, + 0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231, + 0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040, + 0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249, + 0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429, + 0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339, + 0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1, + 0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351, + 0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040, // Block 0x75, offset 0x1d40 - 0x1d40: 0xc1d9, 0x1d41: 0xc211, 0x1d42: 0xc249, 0x1d43: 0x0040, 0x1d44: 0x0040, 0x1d45: 0x0040, - 0x1d46: 0x0040, 0x1d47: 0x0040, 0x1d48: 0x0040, 0x1d49: 0x0040, 0x1d4a: 0x0040, 0x1d4b: 0x0040, - 0x1d4c: 0x0040, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xc269, 0x1d51: 0xc289, - 0x1d52: 0xc2a9, 0x1d53: 0xc2c9, 0x1d54: 0xc2e9, 0x1d55: 0xc309, 0x1d56: 0xc329, 0x1d57: 0xc349, - 0x1d58: 0xc369, 0x1d59: 0xc389, 0x1d5a: 0xc3a9, 0x1d5b: 0xc3c9, 0x1d5c: 0xc3e9, 0x1d5d: 0xc409, - 0x1d5e: 0xc429, 0x1d5f: 0xc449, 0x1d60: 0xc469, 0x1d61: 0xc489, 0x1d62: 0xc4a9, 0x1d63: 0xc4c9, - 0x1d64: 0xc4e9, 0x1d65: 0xc509, 0x1d66: 0xc529, 0x1d67: 0xc549, 0x1d68: 0xc569, 0x1d69: 0xc589, - 0x1d6a: 0xc5a9, 0x1d6b: 0xc5c9, 0x1d6c: 0xc5e9, 0x1d6d: 0xc609, 0x1d6e: 0xc629, 0x1d6f: 0xc649, - 0x1d70: 0xc669, 0x1d71: 0xc689, 0x1d72: 0xc6a9, 0x1d73: 0xc6c9, 0x1d74: 0xc6e9, 0x1d75: 0xc709, - 0x1d76: 0xc729, 0x1d77: 0xc749, 0x1d78: 0xc769, 0x1d79: 0xc789, 0x1d7a: 0xc7a9, 0x1d7b: 0xc7c9, - 0x1d7c: 0x0040, 0x1d7d: 0x0040, 0x1d7e: 0x0040, 0x1d7f: 0x0040, + 0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02, + 0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018, + 0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2, + 0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72, + 0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32, + 0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2, + 0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2, + 0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0040, + 0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199, + 0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359, + 0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99, // Block 0x76, offset 0x1d80 - 0x1d80: 0xcaf9, 0x1d81: 0xcb19, 0x1d82: 0xcb39, 0x1d83: 0x8b1d, 0x1d84: 0xcb59, 0x1d85: 0xcb79, - 0x1d86: 0xcb99, 0x1d87: 0xcbb9, 0x1d88: 0xcbd9, 0x1d89: 0xcbf9, 0x1d8a: 0xcc19, 0x1d8b: 0xcc39, - 0x1d8c: 0xcc59, 0x1d8d: 0x8b3d, 0x1d8e: 0xcc79, 0x1d8f: 0xcc99, 0x1d90: 0xccb9, 0x1d91: 0xccd9, - 0x1d92: 0x8b5d, 0x1d93: 0xccf9, 0x1d94: 0xcd19, 0x1d95: 0xc429, 0x1d96: 0x8b7d, 0x1d97: 0xcd39, - 0x1d98: 0xcd59, 0x1d99: 0xcd79, 0x1d9a: 0xcd99, 0x1d9b: 0xcdb9, 0x1d9c: 0x8b9d, 0x1d9d: 0xcdd9, - 0x1d9e: 0xcdf9, 0x1d9f: 0xce19, 0x1da0: 0xce39, 0x1da1: 0xce59, 0x1da2: 0xc789, 0x1da3: 0xce79, - 0x1da4: 0xce99, 0x1da5: 0xceb9, 0x1da6: 0xced9, 0x1da7: 0xcef9, 0x1da8: 0xcf19, 0x1da9: 0xcf39, - 0x1daa: 0xcf59, 0x1dab: 0xcf79, 0x1dac: 0xcf99, 0x1dad: 0xcfb9, 0x1dae: 0xcfd9, 0x1daf: 0xcff9, - 0x1db0: 0xd019, 0x1db1: 0xd039, 0x1db2: 0xd039, 0x1db3: 0xd039, 0x1db4: 0x8bbd, 0x1db5: 0xd059, - 0x1db6: 0xd079, 0x1db7: 0xd099, 0x1db8: 0x8bdd, 0x1db9: 0xd0b9, 0x1dba: 0xd0d9, 0x1dbb: 0xd0f9, - 0x1dbc: 0xd119, 0x1dbd: 0xd139, 0x1dbe: 0xd159, 0x1dbf: 0xd179, + 0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089, + 0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1, + 0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018, + 0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018, + 0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018, + 0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018, + 0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018, + 0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040, + 0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018, + 0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018, + 0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018, // Block 0x77, offset 0x1dc0 - 0x1dc0: 0xd199, 0x1dc1: 0xd1b9, 0x1dc2: 0xd1d9, 0x1dc3: 0xd1f9, 0x1dc4: 0xd219, 0x1dc5: 0xd239, - 0x1dc6: 0xd239, 0x1dc7: 0xd259, 0x1dc8: 0xd279, 0x1dc9: 0xd299, 0x1dca: 0xd2b9, 0x1dcb: 0xd2d9, - 0x1dcc: 0xd2f9, 0x1dcd: 0xd319, 0x1dce: 0xd339, 0x1dcf: 0xd359, 0x1dd0: 0xd379, 0x1dd1: 0xd399, - 0x1dd2: 0xd3b9, 0x1dd3: 0xd3d9, 0x1dd4: 0xd3f9, 0x1dd5: 0xd419, 0x1dd6: 0xd439, 0x1dd7: 0xd459, - 0x1dd8: 0xd479, 0x1dd9: 0x8bfd, 0x1dda: 0xd499, 0x1ddb: 0xd4b9, 0x1ddc: 0xd4d9, 0x1ddd: 0xc309, - 0x1dde: 0xd4f9, 0x1ddf: 0xd519, 0x1de0: 0x8c1d, 0x1de1: 0x8c3d, 0x1de2: 0xd539, 0x1de3: 0xd559, - 0x1de4: 0xd579, 0x1de5: 0xd599, 0x1de6: 0xd5b9, 0x1de7: 0xd5d9, 0x1de8: 0x0040, 0x1de9: 0xd5f9, - 0x1dea: 0xd619, 0x1deb: 0xd619, 0x1dec: 0x8c5d, 0x1ded: 0xd639, 0x1dee: 0xd659, 0x1def: 0xd679, - 0x1df0: 0xd699, 0x1df1: 0x8c7d, 0x1df2: 0xd6b9, 0x1df3: 0xd6d9, 0x1df4: 0x0040, 0x1df5: 0xd6f9, - 0x1df6: 0xd719, 0x1df7: 0xd739, 0x1df8: 0xd759, 0x1df9: 0xd779, 0x1dfa: 0xd799, 0x1dfb: 0x8c9d, - 0x1dfc: 0xd7b9, 0x1dfd: 0x8cbd, 0x1dfe: 0xd7d9, 0x1dff: 0xd7f9, + 0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040, + 0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040, + 0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289, + 0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349, + 0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409, + 0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9, + 0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589, + 0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649, + 0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709, + 0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9, + 0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040, // Block 0x78, offset 0x1e00 - 0x1e00: 0xd819, 0x1e01: 0xd839, 0x1e02: 0xd859, 0x1e03: 0xd879, 0x1e04: 0xd899, 0x1e05: 0xd8b9, - 0x1e06: 0xd8d9, 0x1e07: 0xd8f9, 0x1e08: 0xd919, 0x1e09: 0x8cdd, 0x1e0a: 0xd939, 0x1e0b: 0xd959, - 0x1e0c: 0xd979, 0x1e0d: 0xd999, 0x1e0e: 0xd9b9, 0x1e0f: 0x8cfd, 0x1e10: 0xd9d9, 0x1e11: 0x8d1d, - 0x1e12: 0x8d3d, 0x1e13: 0xd9f9, 0x1e14: 0xda19, 0x1e15: 0xda19, 0x1e16: 0xda39, 0x1e17: 0x8d5d, - 0x1e18: 0x8d7d, 0x1e19: 0xda59, 0x1e1a: 0xda79, 0x1e1b: 0xda99, 0x1e1c: 0xdab9, 0x1e1d: 0xdad9, - 0x1e1e: 0xdaf9, 0x1e1f: 0xdb19, 0x1e20: 0xdb39, 0x1e21: 0xdb59, 0x1e22: 0xdb79, 0x1e23: 0xdb99, - 0x1e24: 0x8d9d, 0x1e25: 0xdbb9, 0x1e26: 0xdbd9, 0x1e27: 0xdbf9, 0x1e28: 0xdc19, 0x1e29: 0xdbf9, - 0x1e2a: 0xdc39, 0x1e2b: 0xdc59, 0x1e2c: 0xdc79, 0x1e2d: 0xdc99, 0x1e2e: 0xdcb9, 0x1e2f: 0xdcd9, - 0x1e30: 0xdcf9, 0x1e31: 0xdd19, 0x1e32: 0xdd39, 0x1e33: 0xdd59, 0x1e34: 0xdd79, 0x1e35: 0xdd99, - 0x1e36: 0xddb9, 0x1e37: 0xddd9, 0x1e38: 0x8dbd, 0x1e39: 0xddf9, 0x1e3a: 0xde19, 0x1e3b: 0xde39, - 0x1e3c: 0xde59, 0x1e3d: 0xde79, 0x1e3e: 0x8ddd, 0x1e3f: 0xde99, + 0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79, + 0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39, + 0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9, + 0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39, + 0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9, + 0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79, + 0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39, + 0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9, + 0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059, + 0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9, + 0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179, // Block 0x79, offset 0x1e40 - 0x1e40: 0xe599, 0x1e41: 0xe5b9, 0x1e42: 0xe5d9, 0x1e43: 0xe5f9, 0x1e44: 0xe619, 0x1e45: 0xe639, - 0x1e46: 0x8efd, 0x1e47: 0xe659, 0x1e48: 0xe679, 0x1e49: 0xe699, 0x1e4a: 0xe6b9, 0x1e4b: 0xe6d9, - 0x1e4c: 0xe6f9, 0x1e4d: 0x8f1d, 0x1e4e: 0xe719, 0x1e4f: 0xe739, 0x1e50: 0x8f3d, 0x1e51: 0x8f5d, - 0x1e52: 0xe759, 0x1e53: 0xe779, 0x1e54: 0xe799, 0x1e55: 0xe7b9, 0x1e56: 0xe7d9, 0x1e57: 0xe7f9, - 0x1e58: 0xe819, 0x1e59: 0xe839, 0x1e5a: 0xe859, 0x1e5b: 0x8f7d, 0x1e5c: 0xe879, 0x1e5d: 0x8f9d, - 0x1e5e: 0xe899, 0x1e5f: 0x0040, 0x1e60: 0xe8b9, 0x1e61: 0xe8d9, 0x1e62: 0xe8f9, 0x1e63: 0x8fbd, - 0x1e64: 0xe919, 0x1e65: 0xe939, 0x1e66: 0x8fdd, 0x1e67: 0x8ffd, 0x1e68: 0xe959, 0x1e69: 0xe979, - 0x1e6a: 0xe999, 0x1e6b: 0xe9b9, 0x1e6c: 0xe9d9, 0x1e6d: 0xe9d9, 0x1e6e: 0xe9f9, 0x1e6f: 0xea19, - 0x1e70: 0xea39, 0x1e71: 0xea59, 0x1e72: 0xea79, 0x1e73: 0xea99, 0x1e74: 0xeab9, 0x1e75: 0x901d, - 0x1e76: 0xead9, 0x1e77: 0x903d, 0x1e78: 0xeaf9, 0x1e79: 0x905d, 0x1e7a: 0xeb19, 0x1e7b: 0x907d, - 0x1e7c: 0x909d, 0x1e7d: 0x90bd, 0x1e7e: 0xeb39, 0x1e7f: 0xeb59, + 0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239, + 0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9, + 0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399, + 0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459, + 0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309, + 0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559, + 0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9, + 0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679, + 0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9, + 0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d, + 0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9, // Block 0x7a, offset 0x1e80 - 0x1e80: 0xeb79, 0x1e81: 0x90dd, 0x1e82: 0x90fd, 0x1e83: 0x911d, 0x1e84: 0x913d, 0x1e85: 0xeb99, - 0x1e86: 0xebb9, 0x1e87: 0xebb9, 0x1e88: 0xebd9, 0x1e89: 0xebf9, 0x1e8a: 0xec19, 0x1e8b: 0xec39, - 0x1e8c: 0xec59, 0x1e8d: 0x915d, 0x1e8e: 0xec79, 0x1e8f: 0xec99, 0x1e90: 0xecb9, 0x1e91: 0xecd9, - 0x1e92: 0x917d, 0x1e93: 0xecf9, 0x1e94: 0x919d, 0x1e95: 0x91bd, 0x1e96: 0xed19, 0x1e97: 0xed39, - 0x1e98: 0xed59, 0x1e99: 0xed79, 0x1e9a: 0xed99, 0x1e9b: 0xedb9, 0x1e9c: 0x91dd, 0x1e9d: 0x91fd, - 0x1e9e: 0x921d, 0x1e9f: 0x0040, 0x1ea0: 0xedd9, 0x1ea1: 0x923d, 0x1ea2: 0xedf9, 0x1ea3: 0xee19, - 0x1ea4: 0xee39, 0x1ea5: 0x925d, 0x1ea6: 0xee59, 0x1ea7: 0xee79, 0x1ea8: 0xee99, 0x1ea9: 0xeeb9, - 0x1eaa: 0xeed9, 0x1eab: 0x927d, 0x1eac: 0xeef9, 0x1ead: 0xef19, 0x1eae: 0xef39, 0x1eaf: 0xef59, - 0x1eb0: 0xef79, 0x1eb1: 0xef99, 0x1eb2: 0x929d, 0x1eb3: 0x92bd, 0x1eb4: 0xefb9, 0x1eb5: 0x92dd, - 0x1eb6: 0xefd9, 0x1eb7: 0x92fd, 0x1eb8: 0xeff9, 0x1eb9: 0xf019, 0x1eba: 0xf039, 0x1ebb: 0x931d, - 0x1ebc: 0x933d, 0x1ebd: 0xf059, 0x1ebe: 0x935d, 0x1ebf: 0xf079, + 0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9, + 0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959, + 0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d, + 0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d, + 0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9, + 0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99, + 0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9, + 0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9, + 0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99, + 0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39, + 0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99, // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0xf6b9, 0x1ec1: 0xf6d9, 0x1ec2: 0xf6f9, 0x1ec3: 0xf719, 0x1ec4: 0xf739, 0x1ec5: 0x951d, - 0x1ec6: 0xf759, 0x1ec7: 0xf779, 0x1ec8: 0xf799, 0x1ec9: 0xf7b9, 0x1eca: 0xf7d9, 0x1ecb: 0x953d, - 0x1ecc: 0x955d, 0x1ecd: 0xf7f9, 0x1ece: 0xf819, 0x1ecf: 0xf839, 0x1ed0: 0xf859, 0x1ed1: 0xf879, - 0x1ed2: 0xf899, 0x1ed3: 0x957d, 0x1ed4: 0xf8b9, 0x1ed5: 0xf8d9, 0x1ed6: 0xf8f9, 0x1ed7: 0xf919, - 0x1ed8: 0x959d, 0x1ed9: 0x95bd, 0x1eda: 0xf939, 0x1edb: 0xf959, 0x1edc: 0xf979, 0x1edd: 0x95dd, - 0x1ede: 0xf999, 0x1edf: 0xf9b9, 0x1ee0: 0x6815, 0x1ee1: 0x95fd, 0x1ee2: 0xf9d9, 0x1ee3: 0xf9f9, - 0x1ee4: 0xfa19, 0x1ee5: 0x961d, 0x1ee6: 0xfa39, 0x1ee7: 0xfa59, 0x1ee8: 0xfa79, 0x1ee9: 0xfa99, - 0x1eea: 0xfab9, 0x1eeb: 0xfad9, 0x1eec: 0xfaf9, 0x1eed: 0x963d, 0x1eee: 0xfb19, 0x1eef: 0xfb39, - 0x1ef0: 0xfb59, 0x1ef1: 0x965d, 0x1ef2: 0xfb79, 0x1ef3: 0xfb99, 0x1ef4: 0xfbb9, 0x1ef5: 0xfbd9, - 0x1ef6: 0x7b35, 0x1ef7: 0x967d, 0x1ef8: 0xfbf9, 0x1ef9: 0xfc19, 0x1efa: 0xfc39, 0x1efb: 0x969d, - 0x1efc: 0xfc59, 0x1efd: 0x96bd, 0x1efe: 0xfc79, 0x1eff: 0xfc79, + 0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639, + 0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9, + 0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d, + 0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9, + 0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d, + 0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd, + 0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979, + 0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19, + 0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d, + 0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d, + 0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59, // Block 0x7c, offset 0x1f00 - 0x1f00: 0xfc99, 0x1f01: 0x96dd, 0x1f02: 0xfcb9, 0x1f03: 0xfcd9, 0x1f04: 0xfcf9, 0x1f05: 0xfd19, - 0x1f06: 0xfd39, 0x1f07: 0xfd59, 0x1f08: 0xfd79, 0x1f09: 0x96fd, 0x1f0a: 0xfd99, 0x1f0b: 0xfdb9, - 0x1f0c: 0xfdd9, 0x1f0d: 0xfdf9, 0x1f0e: 0xfe19, 0x1f0f: 0xfe39, 0x1f10: 0x971d, 0x1f11: 0xfe59, - 0x1f12: 0x973d, 0x1f13: 0x975d, 0x1f14: 0x977d, 0x1f15: 0xfe79, 0x1f16: 0xfe99, 0x1f17: 0xfeb9, - 0x1f18: 0xfed9, 0x1f19: 0xfef9, 0x1f1a: 0xff19, 0x1f1b: 0xff39, 0x1f1c: 0xff59, 0x1f1d: 0x979d, - 0x1f1e: 0x0040, 0x1f1f: 0x0040, 0x1f20: 0x0040, 0x1f21: 0x0040, 0x1f22: 0x0040, 0x1f23: 0x0040, - 0x1f24: 0x0040, 0x1f25: 0x0040, 0x1f26: 0x0040, 0x1f27: 0x0040, 0x1f28: 0x0040, 0x1f29: 0x0040, - 0x1f2a: 0x0040, 0x1f2b: 0x0040, 0x1f2c: 0x0040, 0x1f2d: 0x0040, 0x1f2e: 0x0040, 0x1f2f: 0x0040, - 0x1f30: 0x0040, 0x1f31: 0x0040, 0x1f32: 0x0040, 0x1f33: 0x0040, 0x1f34: 0x0040, 0x1f35: 0x0040, - 0x1f36: 0x0040, 0x1f37: 0x0040, 0x1f38: 0x0040, 0x1f39: 0x0040, 0x1f3a: 0x0040, 0x1f3b: 0x0040, - 0x1f3c: 0x0040, 0x1f3d: 0x0040, 0x1f3e: 0x0040, 0x1f3f: 0x0040, + 0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99, + 0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39, + 0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9, + 0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39, + 0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd, + 0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19, + 0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9, + 0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59, + 0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd, + 0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d, + 0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d, + 0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d, + 0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879, + 0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919, + 0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd, + 0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9, + 0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99, + 0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39, + 0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9, + 0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d, + 0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79, + // Block 0x7e, offset 0x1f80 + 0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19, + 0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9, + 0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59, + 0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9, + 0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d, + 0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040, + 0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040, + 0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040, + 0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040, + 0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040, + 0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040, } -// idnaIndex: 35 blocks, 2240 entries, 4480 bytes +// idnaIndex: 36 blocks, 2304 entries, 4608 bytes // Block 0 is the zero block. -var idnaIndex = [2240]uint16{ +var idnaIndex = [2304]uint16{ // Block 0x0, offset 0x0 // Block 0x1, offset 0x40 // Block 0x2, offset 0x80 // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x7b, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, - 0xc8: 0x06, 0xc9: 0x7c, 0xca: 0x7d, 0xcb: 0x07, 0xcc: 0x7e, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, - 0xd0: 0x7f, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x80, 0xd6: 0x81, 0xd7: 0x82, - 0xd8: 0x0f, 0xd9: 0x83, 0xda: 0x84, 0xdb: 0x10, 0xdc: 0x11, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, + 0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84, + 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88, 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, - 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, + 0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21, // Block 0x4, offset 0x100 - 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x12, 0x126: 0x13, 0x127: 0x14, - 0x128: 0x15, 0x129: 0x16, 0x12a: 0x17, 0x12b: 0x18, 0x12c: 0x19, 0x12d: 0x1a, 0x12e: 0x1b, 0x12f: 0x8d, - 0x130: 0x8e, 0x131: 0x1c, 0x132: 0x1d, 0x133: 0x1e, 0x134: 0x8f, 0x135: 0x1f, 0x136: 0x90, 0x137: 0x91, - 0x138: 0x92, 0x139: 0x93, 0x13a: 0x20, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x21, 0x13e: 0x22, 0x13f: 0x96, + 0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16, + 0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96, // Block 0x5, offset 0x140 - 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9b, 0x147: 0x9b, - 0x148: 0x9d, 0x149: 0x9e, 0x14a: 0x9f, 0x14b: 0xa0, 0x14c: 0xa1, 0x14d: 0xa2, 0x14e: 0xa3, 0x14f: 0xa4, - 0x150: 0xa5, 0x151: 0x9d, 0x152: 0x9d, 0x153: 0x9d, 0x154: 0x9d, 0x155: 0x9d, 0x156: 0x9d, 0x157: 0x9d, - 0x158: 0x9d, 0x159: 0xa6, 0x15a: 0xa7, 0x15b: 0xa8, 0x15c: 0xa9, 0x15d: 0xaa, 0x15e: 0xab, 0x15f: 0xac, - 0x160: 0xad, 0x161: 0xae, 0x162: 0xaf, 0x163: 0xb0, 0x164: 0xb1, 0x165: 0xb2, 0x166: 0xb3, 0x167: 0xb4, - 0x168: 0xb5, 0x169: 0xb6, 0x16a: 0xb7, 0x16b: 0xb8, 0x16c: 0xb9, 0x16d: 0xba, 0x16e: 0xbb, 0x16f: 0xbc, - 0x170: 0xbd, 0x171: 0xbe, 0x172: 0xbf, 0x173: 0xc0, 0x174: 0x23, 0x175: 0x24, 0x176: 0x25, 0x177: 0xc1, - 0x178: 0x26, 0x179: 0x26, 0x17a: 0x27, 0x17b: 0x26, 0x17c: 0xc2, 0x17d: 0x28, 0x17e: 0x29, 0x17f: 0x2a, + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, + 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, + 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, + 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, + 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, + 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, + 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3, + 0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c, // Block 0x6, offset 0x180 - 0x180: 0x2b, 0x181: 0x2c, 0x182: 0x2d, 0x183: 0xc3, 0x184: 0x2e, 0x185: 0x2f, 0x186: 0xc4, 0x187: 0x9b, - 0x188: 0xc5, 0x189: 0xc6, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc7, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xc8, - 0x190: 0xc9, 0x191: 0x30, 0x192: 0x31, 0x193: 0x32, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b, + 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b, + 0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, - 0x1a8: 0xca, 0x1a9: 0xcb, 0x1aa: 0x9b, 0x1ab: 0xcc, 0x1ac: 0x9b, 0x1ad: 0xcd, 0x1ae: 0xce, 0x1af: 0xcf, - 0x1b0: 0xd0, 0x1b1: 0x33, 0x1b2: 0x26, 0x1b3: 0x34, 0x1b4: 0xd1, 0x1b5: 0xd2, 0x1b6: 0xd3, 0x1b7: 0xd4, - 0x1b8: 0xd5, 0x1b9: 0xd6, 0x1ba: 0xd7, 0x1bb: 0xd8, 0x1bc: 0xd9, 0x1bd: 0xda, 0x1be: 0xdb, 0x1bf: 0x35, + 0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0, + 0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5, + 0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37, // Block 0x7, offset 0x1c0 - 0x1c0: 0x36, 0x1c1: 0xdc, 0x1c2: 0xdd, 0x1c3: 0xde, 0x1c4: 0xdf, 0x1c5: 0x37, 0x1c6: 0x38, 0x1c7: 0xe0, - 0x1c8: 0xe1, 0x1c9: 0x39, 0x1ca: 0x3a, 0x1cb: 0x3b, 0x1cc: 0x3c, 0x1cd: 0x3d, 0x1ce: 0x3e, 0x1cf: 0x3f, - 0x1d0: 0x9d, 0x1d1: 0x9d, 0x1d2: 0x9d, 0x1d3: 0x9d, 0x1d4: 0x9d, 0x1d5: 0x9d, 0x1d6: 0x9d, 0x1d7: 0x9d, - 0x1d8: 0x9d, 0x1d9: 0x9d, 0x1da: 0x9d, 0x1db: 0x9d, 0x1dc: 0x9d, 0x1dd: 0x9d, 0x1de: 0x9d, 0x1df: 0x9d, - 0x1e0: 0x9d, 0x1e1: 0x9d, 0x1e2: 0x9d, 0x1e3: 0x9d, 0x1e4: 0x9d, 0x1e5: 0x9d, 0x1e6: 0x9d, 0x1e7: 0x9d, - 0x1e8: 0x9d, 0x1e9: 0x9d, 0x1ea: 0x9d, 0x1eb: 0x9d, 0x1ec: 0x9d, 0x1ed: 0x9d, 0x1ee: 0x9d, 0x1ef: 0x9d, - 0x1f0: 0x9d, 0x1f1: 0x9d, 0x1f2: 0x9d, 0x1f3: 0x9d, 0x1f4: 0x9d, 0x1f5: 0x9d, 0x1f6: 0x9d, 0x1f7: 0x9d, - 0x1f8: 0x9d, 0x1f9: 0x9d, 0x1fa: 0x9d, 0x1fb: 0x9d, 0x1fc: 0x9d, 0x1fd: 0x9d, 0x1fe: 0x9d, 0x1ff: 0x9d, + 0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1, + 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41, + 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, + 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, + 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, + 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, + 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, + 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, // Block 0x8, offset 0x200 - 0x200: 0x9d, 0x201: 0x9d, 0x202: 0x9d, 0x203: 0x9d, 0x204: 0x9d, 0x205: 0x9d, 0x206: 0x9d, 0x207: 0x9d, - 0x208: 0x9d, 0x209: 0x9d, 0x20a: 0x9d, 0x20b: 0x9d, 0x20c: 0x9d, 0x20d: 0x9d, 0x20e: 0x9d, 0x20f: 0x9d, - 0x210: 0x9d, 0x211: 0x9d, 0x212: 0x9d, 0x213: 0x9d, 0x214: 0x9d, 0x215: 0x9d, 0x216: 0x9d, 0x217: 0x9d, - 0x218: 0x9d, 0x219: 0x9d, 0x21a: 0x9d, 0x21b: 0x9d, 0x21c: 0x9d, 0x21d: 0x9d, 0x21e: 0x9d, 0x21f: 0x9d, - 0x220: 0x9d, 0x221: 0x9d, 0x222: 0x9d, 0x223: 0x9d, 0x224: 0x9d, 0x225: 0x9d, 0x226: 0x9d, 0x227: 0x9d, - 0x228: 0x9d, 0x229: 0x9d, 0x22a: 0x9d, 0x22b: 0x9d, 0x22c: 0x9d, 0x22d: 0x9d, 0x22e: 0x9d, 0x22f: 0x9d, - 0x230: 0x9d, 0x231: 0x9d, 0x232: 0x9d, 0x233: 0x9d, 0x234: 0x9d, 0x235: 0x9d, 0x236: 0xb0, 0x237: 0x9b, - 0x238: 0x9d, 0x239: 0x9d, 0x23a: 0x9d, 0x23b: 0x9d, 0x23c: 0x9d, 0x23d: 0x9d, 0x23e: 0x9d, 0x23f: 0x9d, + 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, + 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, + 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, + 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, + 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, + 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, + 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, + 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, // Block 0x9, offset 0x240 - 0x240: 0x9d, 0x241: 0x9d, 0x242: 0x9d, 0x243: 0x9d, 0x244: 0x9d, 0x245: 0x9d, 0x246: 0x9d, 0x247: 0x9d, - 0x248: 0x9d, 0x249: 0x9d, 0x24a: 0x9d, 0x24b: 0x9d, 0x24c: 0x9d, 0x24d: 0x9d, 0x24e: 0x9d, 0x24f: 0x9d, - 0x250: 0x9d, 0x251: 0x9d, 0x252: 0x9d, 0x253: 0x9d, 0x254: 0x9d, 0x255: 0x9d, 0x256: 0x9d, 0x257: 0x9d, - 0x258: 0x9d, 0x259: 0x9d, 0x25a: 0x9d, 0x25b: 0x9d, 0x25c: 0x9d, 0x25d: 0x9d, 0x25e: 0x9d, 0x25f: 0x9d, - 0x260: 0x9d, 0x261: 0x9d, 0x262: 0x9d, 0x263: 0x9d, 0x264: 0x9d, 0x265: 0x9d, 0x266: 0x9d, 0x267: 0x9d, - 0x268: 0x9d, 0x269: 0x9d, 0x26a: 0x9d, 0x26b: 0x9d, 0x26c: 0x9d, 0x26d: 0x9d, 0x26e: 0x9d, 0x26f: 0x9d, - 0x270: 0x9d, 0x271: 0x9d, 0x272: 0x9d, 0x273: 0x9d, 0x274: 0x9d, 0x275: 0x9d, 0x276: 0x9d, 0x277: 0x9d, - 0x278: 0x9d, 0x279: 0x9d, 0x27a: 0x9d, 0x27b: 0x9d, 0x27c: 0x9d, 0x27d: 0x9d, 0x27e: 0x9d, 0x27f: 0x9d, + 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, + 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, + 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, + 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, + 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, + 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, + 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, + 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, // Block 0xa, offset 0x280 - 0x280: 0x9d, 0x281: 0x9d, 0x282: 0x9d, 0x283: 0x9d, 0x284: 0x9d, 0x285: 0x9d, 0x286: 0x9d, 0x287: 0x9d, - 0x288: 0x9d, 0x289: 0x9d, 0x28a: 0x9d, 0x28b: 0x9d, 0x28c: 0x9d, 0x28d: 0x9d, 0x28e: 0x9d, 0x28f: 0x9d, - 0x290: 0x9d, 0x291: 0x9d, 0x292: 0x9d, 0x293: 0x9d, 0x294: 0x9d, 0x295: 0x9d, 0x296: 0x9d, 0x297: 0x9d, - 0x298: 0x9d, 0x299: 0x9d, 0x29a: 0x9d, 0x29b: 0x9d, 0x29c: 0x9d, 0x29d: 0x9d, 0x29e: 0x9d, 0x29f: 0x9d, - 0x2a0: 0x9d, 0x2a1: 0x9d, 0x2a2: 0x9d, 0x2a3: 0x9d, 0x2a4: 0x9d, 0x2a5: 0x9d, 0x2a6: 0x9d, 0x2a7: 0x9d, - 0x2a8: 0x9d, 0x2a9: 0x9d, 0x2aa: 0x9d, 0x2ab: 0x9d, 0x2ac: 0x9d, 0x2ad: 0x9d, 0x2ae: 0x9d, 0x2af: 0x9d, - 0x2b0: 0x9d, 0x2b1: 0x9d, 0x2b2: 0x9d, 0x2b3: 0x9d, 0x2b4: 0x9d, 0x2b5: 0x9d, 0x2b6: 0x9d, 0x2b7: 0x9d, - 0x2b8: 0x9d, 0x2b9: 0x9d, 0x2ba: 0x9d, 0x2bb: 0x9d, 0x2bc: 0x9d, 0x2bd: 0x9d, 0x2be: 0x9d, 0x2bf: 0xe2, + 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, + 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, + 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, + 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, + 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, + 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, + 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, + 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3, // Block 0xb, offset 0x2c0 - 0x2c0: 0x9d, 0x2c1: 0x9d, 0x2c2: 0x9d, 0x2c3: 0x9d, 0x2c4: 0x9d, 0x2c5: 0x9d, 0x2c6: 0x9d, 0x2c7: 0x9d, - 0x2c8: 0x9d, 0x2c9: 0x9d, 0x2ca: 0x9d, 0x2cb: 0x9d, 0x2cc: 0x9d, 0x2cd: 0x9d, 0x2ce: 0x9d, 0x2cf: 0x9d, - 0x2d0: 0x9d, 0x2d1: 0x9d, 0x2d2: 0xe3, 0x2d3: 0xe4, 0x2d4: 0x9d, 0x2d5: 0x9d, 0x2d6: 0x9d, 0x2d7: 0x9d, - 0x2d8: 0xe5, 0x2d9: 0x40, 0x2da: 0x41, 0x2db: 0xe6, 0x2dc: 0x42, 0x2dd: 0x43, 0x2de: 0x44, 0x2df: 0xe7, - 0x2e0: 0xe8, 0x2e1: 0xe9, 0x2e2: 0xea, 0x2e3: 0xeb, 0x2e4: 0xec, 0x2e5: 0xed, 0x2e6: 0xee, 0x2e7: 0xef, - 0x2e8: 0xf0, 0x2e9: 0xf1, 0x2ea: 0xf2, 0x2eb: 0xf3, 0x2ec: 0xf4, 0x2ed: 0xf5, 0x2ee: 0xf6, 0x2ef: 0xf7, - 0x2f0: 0x9d, 0x2f1: 0x9d, 0x2f2: 0x9d, 0x2f3: 0x9d, 0x2f4: 0x9d, 0x2f5: 0x9d, 0x2f6: 0x9d, 0x2f7: 0x9d, - 0x2f8: 0x9d, 0x2f9: 0x9d, 0x2fa: 0x9d, 0x2fb: 0x9d, 0x2fc: 0x9d, 0x2fd: 0x9d, 0x2fe: 0x9d, 0x2ff: 0x9d, + 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, + 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, + 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, + 0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8, + 0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0, + 0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8, + 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, + 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, // Block 0xc, offset 0x300 - 0x300: 0x9d, 0x301: 0x9d, 0x302: 0x9d, 0x303: 0x9d, 0x304: 0x9d, 0x305: 0x9d, 0x306: 0x9d, 0x307: 0x9d, - 0x308: 0x9d, 0x309: 0x9d, 0x30a: 0x9d, 0x30b: 0x9d, 0x30c: 0x9d, 0x30d: 0x9d, 0x30e: 0x9d, 0x30f: 0x9d, - 0x310: 0x9d, 0x311: 0x9d, 0x312: 0x9d, 0x313: 0x9d, 0x314: 0x9d, 0x315: 0x9d, 0x316: 0x9d, 0x317: 0x9d, - 0x318: 0x9d, 0x319: 0x9d, 0x31a: 0x9d, 0x31b: 0x9d, 0x31c: 0x9d, 0x31d: 0x9d, 0x31e: 0xf8, 0x31f: 0xf9, + 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, + 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, + 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, + 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa, // Block 0xd, offset 0x340 - 0x340: 0xb8, 0x341: 0xb8, 0x342: 0xb8, 0x343: 0xb8, 0x344: 0xb8, 0x345: 0xb8, 0x346: 0xb8, 0x347: 0xb8, - 0x348: 0xb8, 0x349: 0xb8, 0x34a: 0xb8, 0x34b: 0xb8, 0x34c: 0xb8, 0x34d: 0xb8, 0x34e: 0xb8, 0x34f: 0xb8, - 0x350: 0xb8, 0x351: 0xb8, 0x352: 0xb8, 0x353: 0xb8, 0x354: 0xb8, 0x355: 0xb8, 0x356: 0xb8, 0x357: 0xb8, - 0x358: 0xb8, 0x359: 0xb8, 0x35a: 0xb8, 0x35b: 0xb8, 0x35c: 0xb8, 0x35d: 0xb8, 0x35e: 0xb8, 0x35f: 0xb8, - 0x360: 0xb8, 0x361: 0xb8, 0x362: 0xb8, 0x363: 0xb8, 0x364: 0xb8, 0x365: 0xb8, 0x366: 0xb8, 0x367: 0xb8, - 0x368: 0xb8, 0x369: 0xb8, 0x36a: 0xb8, 0x36b: 0xb8, 0x36c: 0xb8, 0x36d: 0xb8, 0x36e: 0xb8, 0x36f: 0xb8, - 0x370: 0xb8, 0x371: 0xb8, 0x372: 0xb8, 0x373: 0xb8, 0x374: 0xb8, 0x375: 0xb8, 0x376: 0xb8, 0x377: 0xb8, - 0x378: 0xb8, 0x379: 0xb8, 0x37a: 0xb8, 0x37b: 0xb8, 0x37c: 0xb8, 0x37d: 0xb8, 0x37e: 0xb8, 0x37f: 0xb8, + 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, + 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, + 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, + 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, + 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, + 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, + 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, + 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, // Block 0xe, offset 0x380 - 0x380: 0xb8, 0x381: 0xb8, 0x382: 0xb8, 0x383: 0xb8, 0x384: 0xb8, 0x385: 0xb8, 0x386: 0xb8, 0x387: 0xb8, - 0x388: 0xb8, 0x389: 0xb8, 0x38a: 0xb8, 0x38b: 0xb8, 0x38c: 0xb8, 0x38d: 0xb8, 0x38e: 0xb8, 0x38f: 0xb8, - 0x390: 0xb8, 0x391: 0xb8, 0x392: 0xb8, 0x393: 0xb8, 0x394: 0xb8, 0x395: 0xb8, 0x396: 0xb8, 0x397: 0xb8, - 0x398: 0xb8, 0x399: 0xb8, 0x39a: 0xb8, 0x39b: 0xb8, 0x39c: 0xb8, 0x39d: 0xb8, 0x39e: 0xb8, 0x39f: 0xb8, - 0x3a0: 0xb8, 0x3a1: 0xb8, 0x3a2: 0xb8, 0x3a3: 0xb8, 0x3a4: 0xfa, 0x3a5: 0xfb, 0x3a6: 0xfc, 0x3a7: 0xfd, - 0x3a8: 0x45, 0x3a9: 0xfe, 0x3aa: 0xff, 0x3ab: 0x46, 0x3ac: 0x47, 0x3ad: 0x48, 0x3ae: 0x49, 0x3af: 0x4a, - 0x3b0: 0x100, 0x3b1: 0x4b, 0x3b2: 0x4c, 0x3b3: 0x4d, 0x3b4: 0x4e, 0x3b5: 0x4f, 0x3b6: 0x101, 0x3b7: 0x50, - 0x3b8: 0x51, 0x3b9: 0x52, 0x3ba: 0x53, 0x3bb: 0x54, 0x3bc: 0x55, 0x3bd: 0x56, 0x3be: 0x57, 0x3bf: 0x58, + 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, + 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, + 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, + 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, + 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe, + 0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c, + 0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52, + 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a, // Block 0xf, offset 0x3c0 - 0x3c0: 0x102, 0x3c1: 0x103, 0x3c2: 0x9d, 0x3c3: 0x104, 0x3c4: 0x105, 0x3c5: 0x9b, 0x3c6: 0x106, 0x3c7: 0x107, - 0x3c8: 0xb8, 0x3c9: 0xb8, 0x3ca: 0x108, 0x3cb: 0x109, 0x3cc: 0x10a, 0x3cd: 0x10b, 0x3ce: 0x10c, 0x3cf: 0x10d, - 0x3d0: 0x10e, 0x3d1: 0x9d, 0x3d2: 0x10f, 0x3d3: 0x110, 0x3d4: 0x111, 0x3d5: 0x112, 0x3d6: 0xb8, 0x3d7: 0xb8, - 0x3d8: 0x9d, 0x3d9: 0x9d, 0x3da: 0x9d, 0x3db: 0x9d, 0x3dc: 0x113, 0x3dd: 0x114, 0x3de: 0xb8, 0x3df: 0xb8, - 0x3e0: 0x115, 0x3e1: 0x116, 0x3e2: 0x117, 0x3e3: 0x118, 0x3e4: 0x119, 0x3e5: 0xb8, 0x3e6: 0x11a, 0x3e7: 0x11b, - 0x3e8: 0x11c, 0x3e9: 0x11d, 0x3ea: 0x11e, 0x3eb: 0x59, 0x3ec: 0x11f, 0x3ed: 0x120, 0x3ee: 0x5a, 0x3ef: 0xb8, - 0x3f0: 0x9d, 0x3f1: 0x121, 0x3f2: 0x122, 0x3f3: 0x123, 0x3f4: 0xb8, 0x3f5: 0xb8, 0x3f6: 0xb8, 0x3f7: 0xb8, - 0x3f8: 0xb8, 0x3f9: 0x124, 0x3fa: 0xb8, 0x3fb: 0xb8, 0x3fc: 0xb8, 0x3fd: 0xb8, 0x3fe: 0xb8, 0x3ff: 0xb8, + 0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108, + 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e, + 0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba, + 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba, + 0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c, + 0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba, + 0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, + 0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba, // Block 0x10, offset 0x400 - 0x400: 0x125, 0x401: 0x126, 0x402: 0x127, 0x403: 0x128, 0x404: 0x129, 0x405: 0x12a, 0x406: 0x12b, 0x407: 0x12c, - 0x408: 0x12d, 0x409: 0xb8, 0x40a: 0x12e, 0x40b: 0x12f, 0x40c: 0x5b, 0x40d: 0x5c, 0x40e: 0xb8, 0x40f: 0xb8, - 0x410: 0x130, 0x411: 0x131, 0x412: 0x132, 0x413: 0x133, 0x414: 0xb8, 0x415: 0xb8, 0x416: 0x134, 0x417: 0x135, - 0x418: 0x136, 0x419: 0x137, 0x41a: 0x138, 0x41b: 0x139, 0x41c: 0x13a, 0x41d: 0xb8, 0x41e: 0xb8, 0x41f: 0xb8, - 0x420: 0xb8, 0x421: 0xb8, 0x422: 0x13b, 0x423: 0x13c, 0x424: 0xb8, 0x425: 0xb8, 0x426: 0xb8, 0x427: 0xb8, - 0x428: 0xb8, 0x429: 0xb8, 0x42a: 0xb8, 0x42b: 0x13d, 0x42c: 0xb8, 0x42d: 0xb8, 0x42e: 0xb8, 0x42f: 0xb8, - 0x430: 0x13e, 0x431: 0x13f, 0x432: 0x140, 0x433: 0xb8, 0x434: 0xb8, 0x435: 0xb8, 0x436: 0xb8, 0x437: 0xb8, - 0x438: 0xb8, 0x439: 0xb8, 0x43a: 0xb8, 0x43b: 0xb8, 0x43c: 0xb8, 0x43d: 0xb8, 0x43e: 0xb8, 0x43f: 0xb8, + 0x400: 0x127, 0x401: 0x128, 0x402: 0x129, 0x403: 0x12a, 0x404: 0x12b, 0x405: 0x12c, 0x406: 0x12d, 0x407: 0x12e, + 0x408: 0x12f, 0x409: 0xba, 0x40a: 0x130, 0x40b: 0x131, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba, + 0x410: 0x132, 0x411: 0x133, 0x412: 0x134, 0x413: 0x135, 0x414: 0xba, 0x415: 0xba, 0x416: 0x136, 0x417: 0x137, + 0x418: 0x138, 0x419: 0x139, 0x41a: 0x13a, 0x41b: 0x13b, 0x41c: 0x13c, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, + 0x420: 0xba, 0x421: 0xba, 0x422: 0x13d, 0x423: 0x13e, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, + 0x428: 0x13f, 0x429: 0x140, 0x42a: 0x141, 0x42b: 0x142, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, + 0x430: 0x143, 0x431: 0x144, 0x432: 0x145, 0x433: 0xba, 0x434: 0x146, 0x435: 0x147, 0x436: 0xba, 0x437: 0xba, + 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, // Block 0x11, offset 0x440 - 0x440: 0x9d, 0x441: 0x9d, 0x442: 0x9d, 0x443: 0x9d, 0x444: 0x9d, 0x445: 0x9d, 0x446: 0x9d, 0x447: 0x9d, - 0x448: 0x9d, 0x449: 0x9d, 0x44a: 0x9d, 0x44b: 0x9d, 0x44c: 0x9d, 0x44d: 0x9d, 0x44e: 0x141, 0x44f: 0xb8, - 0x450: 0x9b, 0x451: 0x142, 0x452: 0x9d, 0x453: 0x9d, 0x454: 0x9d, 0x455: 0x143, 0x456: 0xb8, 0x457: 0xb8, - 0x458: 0xb8, 0x459: 0xb8, 0x45a: 0xb8, 0x45b: 0xb8, 0x45c: 0xb8, 0x45d: 0xb8, 0x45e: 0xb8, 0x45f: 0xb8, - 0x460: 0xb8, 0x461: 0xb8, 0x462: 0xb8, 0x463: 0xb8, 0x464: 0xb8, 0x465: 0xb8, 0x466: 0xb8, 0x467: 0xb8, - 0x468: 0xb8, 0x469: 0xb8, 0x46a: 0xb8, 0x46b: 0xb8, 0x46c: 0xb8, 0x46d: 0xb8, 0x46e: 0xb8, 0x46f: 0xb8, - 0x470: 0xb8, 0x471: 0xb8, 0x472: 0xb8, 0x473: 0xb8, 0x474: 0xb8, 0x475: 0xb8, 0x476: 0xb8, 0x477: 0xb8, - 0x478: 0xb8, 0x479: 0xb8, 0x47a: 0xb8, 0x47b: 0xb8, 0x47c: 0xb8, 0x47d: 0xb8, 0x47e: 0xb8, 0x47f: 0xb8, + 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, + 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x148, 0x44f: 0xba, + 0x450: 0x9b, 0x451: 0x149, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x14a, 0x456: 0xba, 0x457: 0xba, + 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, + 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, + 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, + 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, + 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, // Block 0x12, offset 0x480 - 0x480: 0x9d, 0x481: 0x9d, 0x482: 0x9d, 0x483: 0x9d, 0x484: 0x9d, 0x485: 0x9d, 0x486: 0x9d, 0x487: 0x9d, - 0x488: 0x9d, 0x489: 0x9d, 0x48a: 0x9d, 0x48b: 0x9d, 0x48c: 0x9d, 0x48d: 0x9d, 0x48e: 0x9d, 0x48f: 0x9d, - 0x490: 0x144, 0x491: 0xb8, 0x492: 0xb8, 0x493: 0xb8, 0x494: 0xb8, 0x495: 0xb8, 0x496: 0xb8, 0x497: 0xb8, - 0x498: 0xb8, 0x499: 0xb8, 0x49a: 0xb8, 0x49b: 0xb8, 0x49c: 0xb8, 0x49d: 0xb8, 0x49e: 0xb8, 0x49f: 0xb8, - 0x4a0: 0xb8, 0x4a1: 0xb8, 0x4a2: 0xb8, 0x4a3: 0xb8, 0x4a4: 0xb8, 0x4a5: 0xb8, 0x4a6: 0xb8, 0x4a7: 0xb8, - 0x4a8: 0xb8, 0x4a9: 0xb8, 0x4aa: 0xb8, 0x4ab: 0xb8, 0x4ac: 0xb8, 0x4ad: 0xb8, 0x4ae: 0xb8, 0x4af: 0xb8, - 0x4b0: 0xb8, 0x4b1: 0xb8, 0x4b2: 0xb8, 0x4b3: 0xb8, 0x4b4: 0xb8, 0x4b5: 0xb8, 0x4b6: 0xb8, 0x4b7: 0xb8, - 0x4b8: 0xb8, 0x4b9: 0xb8, 0x4ba: 0xb8, 0x4bb: 0xb8, 0x4bc: 0xb8, 0x4bd: 0xb8, 0x4be: 0xb8, 0x4bf: 0xb8, + 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, + 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, + 0x490: 0x14b, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, + 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, + 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, + 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, + 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, + 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, // Block 0x13, offset 0x4c0 - 0x4c0: 0xb8, 0x4c1: 0xb8, 0x4c2: 0xb8, 0x4c3: 0xb8, 0x4c4: 0xb8, 0x4c5: 0xb8, 0x4c6: 0xb8, 0x4c7: 0xb8, - 0x4c8: 0xb8, 0x4c9: 0xb8, 0x4ca: 0xb8, 0x4cb: 0xb8, 0x4cc: 0xb8, 0x4cd: 0xb8, 0x4ce: 0xb8, 0x4cf: 0xb8, - 0x4d0: 0x9d, 0x4d1: 0x9d, 0x4d2: 0x9d, 0x4d3: 0x9d, 0x4d4: 0x9d, 0x4d5: 0x9d, 0x4d6: 0x9d, 0x4d7: 0x9d, - 0x4d8: 0x9d, 0x4d9: 0x145, 0x4da: 0xb8, 0x4db: 0xb8, 0x4dc: 0xb8, 0x4dd: 0xb8, 0x4de: 0xb8, 0x4df: 0xb8, - 0x4e0: 0xb8, 0x4e1: 0xb8, 0x4e2: 0xb8, 0x4e3: 0xb8, 0x4e4: 0xb8, 0x4e5: 0xb8, 0x4e6: 0xb8, 0x4e7: 0xb8, - 0x4e8: 0xb8, 0x4e9: 0xb8, 0x4ea: 0xb8, 0x4eb: 0xb8, 0x4ec: 0xb8, 0x4ed: 0xb8, 0x4ee: 0xb8, 0x4ef: 0xb8, - 0x4f0: 0xb8, 0x4f1: 0xb8, 0x4f2: 0xb8, 0x4f3: 0xb8, 0x4f4: 0xb8, 0x4f5: 0xb8, 0x4f6: 0xb8, 0x4f7: 0xb8, - 0x4f8: 0xb8, 0x4f9: 0xb8, 0x4fa: 0xb8, 0x4fb: 0xb8, 0x4fc: 0xb8, 0x4fd: 0xb8, 0x4fe: 0xb8, 0x4ff: 0xb8, + 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, + 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, + 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, + 0x4d8: 0x9f, 0x4d9: 0x14c, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, + 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, + 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, + 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, + 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, // Block 0x14, offset 0x500 - 0x500: 0xb8, 0x501: 0xb8, 0x502: 0xb8, 0x503: 0xb8, 0x504: 0xb8, 0x505: 0xb8, 0x506: 0xb8, 0x507: 0xb8, - 0x508: 0xb8, 0x509: 0xb8, 0x50a: 0xb8, 0x50b: 0xb8, 0x50c: 0xb8, 0x50d: 0xb8, 0x50e: 0xb8, 0x50f: 0xb8, - 0x510: 0xb8, 0x511: 0xb8, 0x512: 0xb8, 0x513: 0xb8, 0x514: 0xb8, 0x515: 0xb8, 0x516: 0xb8, 0x517: 0xb8, - 0x518: 0xb8, 0x519: 0xb8, 0x51a: 0xb8, 0x51b: 0xb8, 0x51c: 0xb8, 0x51d: 0xb8, 0x51e: 0xb8, 0x51f: 0xb8, - 0x520: 0x9d, 0x521: 0x9d, 0x522: 0x9d, 0x523: 0x9d, 0x524: 0x9d, 0x525: 0x9d, 0x526: 0x9d, 0x527: 0x9d, - 0x528: 0x13d, 0x529: 0x146, 0x52a: 0xb8, 0x52b: 0x147, 0x52c: 0x148, 0x52d: 0x149, 0x52e: 0x14a, 0x52f: 0xb8, - 0x530: 0xb8, 0x531: 0xb8, 0x532: 0xb8, 0x533: 0xb8, 0x534: 0xb8, 0x535: 0xb8, 0x536: 0xb8, 0x537: 0xb8, - 0x538: 0xb8, 0x539: 0xb8, 0x53a: 0xb8, 0x53b: 0xb8, 0x53c: 0x9d, 0x53d: 0x14b, 0x53e: 0x14c, 0x53f: 0x14d, + 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, + 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, + 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, + 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, + 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, + 0x528: 0x142, 0x529: 0x14d, 0x52a: 0xba, 0x52b: 0x14e, 0x52c: 0x14f, 0x52d: 0x150, 0x52e: 0x151, 0x52f: 0xba, + 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, + 0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x152, 0x53e: 0x153, 0x53f: 0x154, // Block 0x15, offset 0x540 - 0x540: 0x9d, 0x541: 0x9d, 0x542: 0x9d, 0x543: 0x9d, 0x544: 0x9d, 0x545: 0x9d, 0x546: 0x9d, 0x547: 0x9d, - 0x548: 0x9d, 0x549: 0x9d, 0x54a: 0x9d, 0x54b: 0x9d, 0x54c: 0x9d, 0x54d: 0x9d, 0x54e: 0x9d, 0x54f: 0x9d, - 0x550: 0x9d, 0x551: 0x9d, 0x552: 0x9d, 0x553: 0x9d, 0x554: 0x9d, 0x555: 0x9d, 0x556: 0x9d, 0x557: 0x9d, - 0x558: 0x9d, 0x559: 0x9d, 0x55a: 0x9d, 0x55b: 0x9d, 0x55c: 0x9d, 0x55d: 0x9d, 0x55e: 0x9d, 0x55f: 0x14e, - 0x560: 0x9d, 0x561: 0x9d, 0x562: 0x9d, 0x563: 0x9d, 0x564: 0x9d, 0x565: 0x9d, 0x566: 0x9d, 0x567: 0x9d, - 0x568: 0x9d, 0x569: 0x9d, 0x56a: 0x9d, 0x56b: 0x14f, 0x56c: 0xb8, 0x56d: 0xb8, 0x56e: 0xb8, 0x56f: 0xb8, - 0x570: 0xb8, 0x571: 0xb8, 0x572: 0xb8, 0x573: 0xb8, 0x574: 0xb8, 0x575: 0xb8, 0x576: 0xb8, 0x577: 0xb8, - 0x578: 0xb8, 0x579: 0xb8, 0x57a: 0xb8, 0x57b: 0xb8, 0x57c: 0xb8, 0x57d: 0xb8, 0x57e: 0xb8, 0x57f: 0xb8, + 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, + 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, + 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, + 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x155, + 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, + 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x156, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, + 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, + 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, // Block 0x16, offset 0x580 - 0x580: 0x150, 0x581: 0xb8, 0x582: 0xb8, 0x583: 0xb8, 0x584: 0xb8, 0x585: 0xb8, 0x586: 0xb8, 0x587: 0xb8, - 0x588: 0xb8, 0x589: 0xb8, 0x58a: 0xb8, 0x58b: 0xb8, 0x58c: 0xb8, 0x58d: 0xb8, 0x58e: 0xb8, 0x58f: 0xb8, - 0x590: 0xb8, 0x591: 0xb8, 0x592: 0xb8, 0x593: 0xb8, 0x594: 0xb8, 0x595: 0xb8, 0x596: 0xb8, 0x597: 0xb8, - 0x598: 0xb8, 0x599: 0xb8, 0x59a: 0xb8, 0x59b: 0xb8, 0x59c: 0xb8, 0x59d: 0xb8, 0x59e: 0xb8, 0x59f: 0xb8, - 0x5a0: 0xb8, 0x5a1: 0xb8, 0x5a2: 0xb8, 0x5a3: 0xb8, 0x5a4: 0xb8, 0x5a5: 0xb8, 0x5a6: 0xb8, 0x5a7: 0xb8, - 0x5a8: 0xb8, 0x5a9: 0xb8, 0x5aa: 0xb8, 0x5ab: 0xb8, 0x5ac: 0xb8, 0x5ad: 0xb8, 0x5ae: 0xb8, 0x5af: 0xb8, - 0x5b0: 0x9d, 0x5b1: 0x151, 0x5b2: 0x152, 0x5b3: 0xb8, 0x5b4: 0xb8, 0x5b5: 0xb8, 0x5b6: 0xb8, 0x5b7: 0xb8, - 0x5b8: 0xb8, 0x5b9: 0xb8, 0x5ba: 0xb8, 0x5bb: 0xb8, 0x5bc: 0xb8, 0x5bd: 0xb8, 0x5be: 0xb8, 0x5bf: 0xb8, + 0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x157, 0x585: 0x158, 0x586: 0x9f, 0x587: 0x9f, + 0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x159, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, + 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, + 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, + 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, + 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, + 0x5b0: 0x9f, 0x5b1: 0x15a, 0x5b2: 0x15b, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, + 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, // Block 0x17, offset 0x5c0 - 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x153, 0x5c4: 0x154, 0x5c5: 0x155, 0x5c6: 0x156, 0x5c7: 0x157, - 0x5c8: 0x9b, 0x5c9: 0x158, 0x5ca: 0xb8, 0x5cb: 0xb8, 0x5cc: 0x9b, 0x5cd: 0x159, 0x5ce: 0xb8, 0x5cf: 0xb8, - 0x5d0: 0x5d, 0x5d1: 0x5e, 0x5d2: 0x5f, 0x5d3: 0x60, 0x5d4: 0x61, 0x5d5: 0x62, 0x5d6: 0x63, 0x5d7: 0x64, - 0x5d8: 0x65, 0x5d9: 0x66, 0x5da: 0x67, 0x5db: 0x68, 0x5dc: 0x69, 0x5dd: 0x6a, 0x5de: 0x6b, 0x5df: 0x6c, + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x15c, 0x5c4: 0x15d, 0x5c5: 0x15e, 0x5c6: 0x15f, 0x5c7: 0x160, + 0x5c8: 0x9b, 0x5c9: 0x161, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x162, 0x5ce: 0xba, 0x5cf: 0xba, + 0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66, + 0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e, 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, - 0x5e8: 0x15a, 0x5e9: 0x15b, 0x5ea: 0x15c, 0x5eb: 0xb8, 0x5ec: 0xb8, 0x5ed: 0xb8, 0x5ee: 0xb8, 0x5ef: 0xb8, - 0x5f0: 0xb8, 0x5f1: 0xb8, 0x5f2: 0xb8, 0x5f3: 0xb8, 0x5f4: 0xb8, 0x5f5: 0xb8, 0x5f6: 0xb8, 0x5f7: 0xb8, - 0x5f8: 0xb8, 0x5f9: 0xb8, 0x5fa: 0xb8, 0x5fb: 0xb8, 0x5fc: 0xb8, 0x5fd: 0xb8, 0x5fe: 0xb8, 0x5ff: 0xb8, + 0x5e8: 0x163, 0x5e9: 0x164, 0x5ea: 0x165, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, + 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, + 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, // Block 0x18, offset 0x600 - 0x600: 0x15d, 0x601: 0xb8, 0x602: 0xb8, 0x603: 0xb8, 0x604: 0xb8, 0x605: 0xb8, 0x606: 0xb8, 0x607: 0xb8, - 0x608: 0xb8, 0x609: 0xb8, 0x60a: 0xb8, 0x60b: 0xb8, 0x60c: 0xb8, 0x60d: 0xb8, 0x60e: 0xb8, 0x60f: 0xb8, - 0x610: 0xb8, 0x611: 0xb8, 0x612: 0xb8, 0x613: 0xb8, 0x614: 0xb8, 0x615: 0xb8, 0x616: 0xb8, 0x617: 0xb8, - 0x618: 0xb8, 0x619: 0xb8, 0x61a: 0xb8, 0x61b: 0xb8, 0x61c: 0xb8, 0x61d: 0xb8, 0x61e: 0xb8, 0x61f: 0xb8, - 0x620: 0x9d, 0x621: 0x9d, 0x622: 0x9d, 0x623: 0x15e, 0x624: 0x6d, 0x625: 0x15f, 0x626: 0xb8, 0x627: 0xb8, - 0x628: 0xb8, 0x629: 0xb8, 0x62a: 0xb8, 0x62b: 0xb8, 0x62c: 0xb8, 0x62d: 0xb8, 0x62e: 0xb8, 0x62f: 0xb8, - 0x630: 0xb8, 0x631: 0xb8, 0x632: 0xb8, 0x633: 0xb8, 0x634: 0xb8, 0x635: 0xb8, 0x636: 0xb8, 0x637: 0xb8, - 0x638: 0x6e, 0x639: 0x6f, 0x63a: 0x70, 0x63b: 0x160, 0x63c: 0xb8, 0x63d: 0xb8, 0x63e: 0xb8, 0x63f: 0xb8, + 0x600: 0x166, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, + 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, + 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, + 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, + 0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x167, 0x624: 0x6f, 0x625: 0x168, 0x626: 0xba, 0x627: 0xba, + 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, + 0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, + 0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x169, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, // Block 0x19, offset 0x640 - 0x640: 0x161, 0x641: 0x9b, 0x642: 0x162, 0x643: 0x163, 0x644: 0x71, 0x645: 0x72, 0x646: 0x164, 0x647: 0x165, - 0x648: 0x73, 0x649: 0x166, 0x64a: 0xb8, 0x64b: 0xb8, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x640: 0x16a, 0x641: 0x9b, 0x642: 0x16b, 0x643: 0x16c, 0x644: 0x73, 0x645: 0x74, 0x646: 0x16d, 0x647: 0x16e, + 0x648: 0x75, 0x649: 0x16f, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, - 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x167, 0x65c: 0x9b, 0x65d: 0x168, 0x65e: 0x9b, 0x65f: 0x169, - 0x660: 0x16a, 0x661: 0x16b, 0x662: 0x16c, 0x663: 0xb8, 0x664: 0x16d, 0x665: 0x16e, 0x666: 0x16f, 0x667: 0x170, - 0x668: 0xb8, 0x669: 0xb8, 0x66a: 0xb8, 0x66b: 0xb8, 0x66c: 0xb8, 0x66d: 0xb8, 0x66e: 0xb8, 0x66f: 0xb8, - 0x670: 0xb8, 0x671: 0xb8, 0x672: 0xb8, 0x673: 0xb8, 0x674: 0xb8, 0x675: 0xb8, 0x676: 0xb8, 0x677: 0xb8, - 0x678: 0xb8, 0x679: 0xb8, 0x67a: 0xb8, 0x67b: 0xb8, 0x67c: 0xb8, 0x67d: 0xb8, 0x67e: 0xb8, 0x67f: 0xb8, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x170, 0x65c: 0x9b, 0x65d: 0x171, 0x65e: 0x9b, 0x65f: 0x172, + 0x660: 0x173, 0x661: 0x174, 0x662: 0x175, 0x663: 0xba, 0x664: 0x176, 0x665: 0x177, 0x666: 0x178, 0x667: 0x179, + 0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, + 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, + 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, // Block 0x1a, offset 0x680 - 0x680: 0x9d, 0x681: 0x9d, 0x682: 0x9d, 0x683: 0x9d, 0x684: 0x9d, 0x685: 0x9d, 0x686: 0x9d, 0x687: 0x9d, - 0x688: 0x9d, 0x689: 0x9d, 0x68a: 0x9d, 0x68b: 0x9d, 0x68c: 0x9d, 0x68d: 0x9d, 0x68e: 0x9d, 0x68f: 0x9d, - 0x690: 0x9d, 0x691: 0x9d, 0x692: 0x9d, 0x693: 0x9d, 0x694: 0x9d, 0x695: 0x9d, 0x696: 0x9d, 0x697: 0x9d, - 0x698: 0x9d, 0x699: 0x9d, 0x69a: 0x9d, 0x69b: 0x171, 0x69c: 0x9d, 0x69d: 0x9d, 0x69e: 0x9d, 0x69f: 0x9d, - 0x6a0: 0x9d, 0x6a1: 0x9d, 0x6a2: 0x9d, 0x6a3: 0x9d, 0x6a4: 0x9d, 0x6a5: 0x9d, 0x6a6: 0x9d, 0x6a7: 0x9d, - 0x6a8: 0x9d, 0x6a9: 0x9d, 0x6aa: 0x9d, 0x6ab: 0x9d, 0x6ac: 0x9d, 0x6ad: 0x9d, 0x6ae: 0x9d, 0x6af: 0x9d, - 0x6b0: 0x9d, 0x6b1: 0x9d, 0x6b2: 0x9d, 0x6b3: 0x9d, 0x6b4: 0x9d, 0x6b5: 0x9d, 0x6b6: 0x9d, 0x6b7: 0x9d, - 0x6b8: 0x9d, 0x6b9: 0x9d, 0x6ba: 0x9d, 0x6bb: 0x9d, 0x6bc: 0x9d, 0x6bd: 0x9d, 0x6be: 0x9d, 0x6bf: 0x9d, + 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, + 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, + 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, + 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x17a, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, + 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, + 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, + 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, + 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, // Block 0x1b, offset 0x6c0 - 0x6c0: 0x9d, 0x6c1: 0x9d, 0x6c2: 0x9d, 0x6c3: 0x9d, 0x6c4: 0x9d, 0x6c5: 0x9d, 0x6c6: 0x9d, 0x6c7: 0x9d, - 0x6c8: 0x9d, 0x6c9: 0x9d, 0x6ca: 0x9d, 0x6cb: 0x9d, 0x6cc: 0x9d, 0x6cd: 0x9d, 0x6ce: 0x9d, 0x6cf: 0x9d, - 0x6d0: 0x9d, 0x6d1: 0x9d, 0x6d2: 0x9d, 0x6d3: 0x9d, 0x6d4: 0x9d, 0x6d5: 0x9d, 0x6d6: 0x9d, 0x6d7: 0x9d, - 0x6d8: 0x9d, 0x6d9: 0x9d, 0x6da: 0x9d, 0x6db: 0x9d, 0x6dc: 0x172, 0x6dd: 0x9d, 0x6de: 0x9d, 0x6df: 0x9d, - 0x6e0: 0x173, 0x6e1: 0x9d, 0x6e2: 0x9d, 0x6e3: 0x9d, 0x6e4: 0x9d, 0x6e5: 0x9d, 0x6e6: 0x9d, 0x6e7: 0x9d, - 0x6e8: 0x9d, 0x6e9: 0x9d, 0x6ea: 0x9d, 0x6eb: 0x9d, 0x6ec: 0x9d, 0x6ed: 0x9d, 0x6ee: 0x9d, 0x6ef: 0x9d, - 0x6f0: 0x9d, 0x6f1: 0x9d, 0x6f2: 0x9d, 0x6f3: 0x9d, 0x6f4: 0x9d, 0x6f5: 0x9d, 0x6f6: 0x9d, 0x6f7: 0x9d, - 0x6f8: 0x9d, 0x6f9: 0x9d, 0x6fa: 0x9d, 0x6fb: 0x9d, 0x6fc: 0x9d, 0x6fd: 0x9d, 0x6fe: 0x9d, 0x6ff: 0x9d, + 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, + 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, + 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, + 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x17b, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, + 0x6e0: 0x17c, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, + 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, + 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, + 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, // Block 0x1c, offset 0x700 - 0x700: 0x9d, 0x701: 0x9d, 0x702: 0x9d, 0x703: 0x9d, 0x704: 0x9d, 0x705: 0x9d, 0x706: 0x9d, 0x707: 0x9d, - 0x708: 0x9d, 0x709: 0x9d, 0x70a: 0x9d, 0x70b: 0x9d, 0x70c: 0x9d, 0x70d: 0x9d, 0x70e: 0x9d, 0x70f: 0x9d, - 0x710: 0x9d, 0x711: 0x9d, 0x712: 0x9d, 0x713: 0x9d, 0x714: 0x9d, 0x715: 0x9d, 0x716: 0x9d, 0x717: 0x9d, - 0x718: 0x9d, 0x719: 0x9d, 0x71a: 0x9d, 0x71b: 0x9d, 0x71c: 0x9d, 0x71d: 0x9d, 0x71e: 0x9d, 0x71f: 0x9d, - 0x720: 0x9d, 0x721: 0x9d, 0x722: 0x9d, 0x723: 0x9d, 0x724: 0x9d, 0x725: 0x9d, 0x726: 0x9d, 0x727: 0x9d, - 0x728: 0x9d, 0x729: 0x9d, 0x72a: 0x9d, 0x72b: 0x9d, 0x72c: 0x9d, 0x72d: 0x9d, 0x72e: 0x9d, 0x72f: 0x9d, - 0x730: 0x9d, 0x731: 0x9d, 0x732: 0x9d, 0x733: 0x9d, 0x734: 0x9d, 0x735: 0x9d, 0x736: 0x9d, 0x737: 0x9d, - 0x738: 0x9d, 0x739: 0x9d, 0x73a: 0x174, 0x73b: 0xb8, 0x73c: 0xb8, 0x73d: 0xb8, 0x73e: 0xb8, 0x73f: 0xb8, + 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, + 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, + 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, + 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, + 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, + 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, + 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, + 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x17d, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f, // Block 0x1d, offset 0x740 - 0x740: 0xb8, 0x741: 0xb8, 0x742: 0xb8, 0x743: 0xb8, 0x744: 0xb8, 0x745: 0xb8, 0x746: 0xb8, 0x747: 0xb8, - 0x748: 0xb8, 0x749: 0xb8, 0x74a: 0xb8, 0x74b: 0xb8, 0x74c: 0xb8, 0x74d: 0xb8, 0x74e: 0xb8, 0x74f: 0xb8, - 0x750: 0xb8, 0x751: 0xb8, 0x752: 0xb8, 0x753: 0xb8, 0x754: 0xb8, 0x755: 0xb8, 0x756: 0xb8, 0x757: 0xb8, - 0x758: 0xb8, 0x759: 0xb8, 0x75a: 0xb8, 0x75b: 0xb8, 0x75c: 0xb8, 0x75d: 0xb8, 0x75e: 0xb8, 0x75f: 0xb8, - 0x760: 0x74, 0x761: 0x75, 0x762: 0x76, 0x763: 0x175, 0x764: 0x77, 0x765: 0x78, 0x766: 0x176, 0x767: 0x79, - 0x768: 0x7a, 0x769: 0xb8, 0x76a: 0xb8, 0x76b: 0xb8, 0x76c: 0xb8, 0x76d: 0xb8, 0x76e: 0xb8, 0x76f: 0xb8, - 0x770: 0xb8, 0x771: 0xb8, 0x772: 0xb8, 0x773: 0xb8, 0x774: 0xb8, 0x775: 0xb8, 0x776: 0xb8, 0x777: 0xb8, - 0x778: 0xb8, 0x779: 0xb8, 0x77a: 0xb8, 0x77b: 0xb8, 0x77c: 0xb8, 0x77d: 0xb8, 0x77e: 0xb8, 0x77f: 0xb8, + 0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f, + 0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f, + 0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f, + 0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f, + 0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f, + 0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x17e, + 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, + 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, // Block 0x1e, offset 0x780 - 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, - 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, - 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, - 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, - 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, - 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, + 0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba, + 0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba, + 0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba, + 0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba, + 0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x17f, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x180, 0x7a7: 0x7b, + 0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba, + 0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba, + 0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba, // Block 0x1f, offset 0x7c0 - 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, - 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, - 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, - 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, - 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, - 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, + 0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07, + 0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17, + 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, + 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c, 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, // Block 0x20, offset 0x800 - 0x800: 0x177, 0x801: 0x178, 0x802: 0xb8, 0x803: 0xb8, 0x804: 0x179, 0x805: 0x179, 0x806: 0x179, 0x807: 0x17a, - 0x808: 0xb8, 0x809: 0xb8, 0x80a: 0xb8, 0x80b: 0xb8, 0x80c: 0xb8, 0x80d: 0xb8, 0x80e: 0xb8, 0x80f: 0xb8, - 0x810: 0xb8, 0x811: 0xb8, 0x812: 0xb8, 0x813: 0xb8, 0x814: 0xb8, 0x815: 0xb8, 0x816: 0xb8, 0x817: 0xb8, - 0x818: 0xb8, 0x819: 0xb8, 0x81a: 0xb8, 0x81b: 0xb8, 0x81c: 0xb8, 0x81d: 0xb8, 0x81e: 0xb8, 0x81f: 0xb8, - 0x820: 0xb8, 0x821: 0xb8, 0x822: 0xb8, 0x823: 0xb8, 0x824: 0xb8, 0x825: 0xb8, 0x826: 0xb8, 0x827: 0xb8, - 0x828: 0xb8, 0x829: 0xb8, 0x82a: 0xb8, 0x82b: 0xb8, 0x82c: 0xb8, 0x82d: 0xb8, 0x82e: 0xb8, 0x82f: 0xb8, - 0x830: 0xb8, 0x831: 0xb8, 0x832: 0xb8, 0x833: 0xb8, 0x834: 0xb8, 0x835: 0xb8, 0x836: 0xb8, 0x837: 0xb8, - 0x838: 0xb8, 0x839: 0xb8, 0x83a: 0xb8, 0x83b: 0xb8, 0x83c: 0xb8, 0x83d: 0xb8, 0x83e: 0xb8, 0x83f: 0xb8, + 0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b, + 0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b, + 0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b, + 0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b, + 0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b, + 0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b, + 0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b, + 0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b, // Block 0x21, offset 0x840 - 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, - 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, - 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, - 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, - 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, - 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, - 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, - 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, + 0x840: 0x181, 0x841: 0x182, 0x842: 0xba, 0x843: 0xba, 0x844: 0x183, 0x845: 0x183, 0x846: 0x183, 0x847: 0x184, + 0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba, + 0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba, + 0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba, + 0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba, + 0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba, + 0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba, + 0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba, // Block 0x22, offset 0x880 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, + 0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b, + 0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b, + 0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b, + 0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b, + 0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b, + 0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b, + 0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b, } -// idnaSparseOffset: 256 entries, 512 bytes -var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x5c, 0x60, 0x6f, 0x74, 0x7b, 0x87, 0x95, 0xa3, 0xa8, 0xb1, 0xc1, 0xcf, 0xdc, 0xe8, 0xf9, 0x103, 0x10a, 0x117, 0x128, 0x12f, 0x13a, 0x149, 0x157, 0x161, 0x163, 0x167, 0x169, 0x175, 0x180, 0x188, 0x18e, 0x194, 0x199, 0x19e, 0x1a1, 0x1a5, 0x1ab, 0x1b0, 0x1bc, 0x1c6, 0x1cc, 0x1dd, 0x1e7, 0x1ea, 0x1f2, 0x1f5, 0x202, 0x20a, 0x20e, 0x215, 0x21d, 0x22d, 0x239, 0x23b, 0x245, 0x251, 0x25d, 0x269, 0x271, 0x276, 0x280, 0x291, 0x295, 0x2a0, 0x2a4, 0x2ad, 0x2b5, 0x2bb, 0x2c0, 0x2c3, 0x2c6, 0x2ca, 0x2d0, 0x2d4, 0x2d8, 0x2de, 0x2e5, 0x2eb, 0x2f3, 0x2fa, 0x305, 0x30f, 0x313, 0x316, 0x31c, 0x320, 0x322, 0x325, 0x327, 0x32a, 0x334, 0x337, 0x346, 0x34a, 0x34f, 0x352, 0x356, 0x35b, 0x360, 0x366, 0x36c, 0x37b, 0x381, 0x385, 0x394, 0x399, 0x3a1, 0x3ab, 0x3b6, 0x3be, 0x3cf, 0x3d8, 0x3e8, 0x3f5, 0x3ff, 0x404, 0x411, 0x415, 0x41a, 0x41c, 0x420, 0x422, 0x426, 0x42f, 0x435, 0x439, 0x449, 0x453, 0x458, 0x45b, 0x461, 0x468, 0x46d, 0x471, 0x477, 0x47c, 0x485, 0x48a, 0x490, 0x497, 0x49e, 0x4a5, 0x4a9, 0x4ae, 0x4b1, 0x4b6, 0x4c2, 0x4c8, 0x4cd, 0x4d4, 0x4dc, 0x4e1, 0x4e5, 0x4f5, 0x4fc, 0x500, 0x504, 0x50b, 0x50e, 0x511, 0x515, 0x519, 0x51f, 0x528, 0x534, 0x53b, 0x544, 0x54c, 0x553, 0x561, 0x56e, 0x57b, 0x584, 0x588, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5e5, 0x5ea, 0x5ed, 0x5f7, 0x600, 0x60c, 0x60f, 0x614, 0x617, 0x61a, 0x61d, 0x624, 0x62b, 0x62f, 0x63a, 0x63d, 0x643, 0x648, 0x64c, 0x64f, 0x652, 0x655, 0x65a, 0x664, 0x667, 0x66b, 0x67a, 0x686, 0x68a, 0x68f, 0x694, 0x698, 0x69d, 0x6a6, 0x6b1, 0x6b7, 0x6bf, 0x6c3, 0x6c7, 0x6cd, 0x6d3, 0x6d8, 0x6db, 0x6e9, 0x6f0, 0x6f3, 0x6f6, 0x6fa, 0x700, 0x705, 0x70f, 0x714, 0x717, 0x71a, 0x71d, 0x720, 0x724, 0x727, 0x737, 0x748, 0x74d, 0x74f, 0x751} +// idnaSparseOffset: 264 entries, 528 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x8a, 0x93, 0xa3, 0xb1, 0xbd, 0xc9, 0xda, 0xe4, 0xeb, 0xf8, 0x109, 0x110, 0x11b, 0x12a, 0x138, 0x142, 0x144, 0x149, 0x14c, 0x14f, 0x151, 0x15d, 0x168, 0x170, 0x176, 0x17c, 0x181, 0x186, 0x189, 0x18d, 0x193, 0x198, 0x1a4, 0x1ae, 0x1b4, 0x1c5, 0x1cf, 0x1d2, 0x1da, 0x1dd, 0x1ea, 0x1f2, 0x1f6, 0x1fd, 0x205, 0x215, 0x221, 0x223, 0x22d, 0x239, 0x245, 0x251, 0x259, 0x25e, 0x268, 0x279, 0x27d, 0x288, 0x28c, 0x295, 0x29d, 0x2a3, 0x2a8, 0x2ab, 0x2af, 0x2b5, 0x2b9, 0x2bd, 0x2c3, 0x2ca, 0x2d0, 0x2d8, 0x2df, 0x2ea, 0x2f4, 0x2f8, 0x2fb, 0x301, 0x305, 0x307, 0x30a, 0x30c, 0x30f, 0x319, 0x31c, 0x32b, 0x32f, 0x334, 0x337, 0x33b, 0x340, 0x345, 0x34b, 0x351, 0x360, 0x366, 0x36a, 0x379, 0x37e, 0x386, 0x390, 0x39b, 0x3a3, 0x3b4, 0x3bd, 0x3cd, 0x3da, 0x3e4, 0x3e9, 0x3f6, 0x3fa, 0x3ff, 0x401, 0x405, 0x407, 0x40b, 0x414, 0x41a, 0x41e, 0x42e, 0x438, 0x43d, 0x440, 0x446, 0x44d, 0x452, 0x456, 0x45c, 0x461, 0x46a, 0x46f, 0x475, 0x47c, 0x483, 0x48a, 0x48e, 0x493, 0x496, 0x49b, 0x4a7, 0x4ad, 0x4b2, 0x4b9, 0x4c1, 0x4c6, 0x4ca, 0x4da, 0x4e1, 0x4e5, 0x4e9, 0x4f0, 0x4f2, 0x4f5, 0x4f8, 0x4fc, 0x500, 0x506, 0x50f, 0x51b, 0x522, 0x52b, 0x533, 0x53a, 0x548, 0x555, 0x562, 0x56b, 0x56f, 0x57d, 0x585, 0x590, 0x599, 0x59f, 0x5a7, 0x5b0, 0x5ba, 0x5bd, 0x5c9, 0x5cc, 0x5d1, 0x5de, 0x5e7, 0x5f3, 0x5f6, 0x600, 0x609, 0x615, 0x622, 0x62a, 0x62d, 0x632, 0x635, 0x638, 0x63b, 0x642, 0x649, 0x64d, 0x658, 0x65b, 0x661, 0x666, 0x66a, 0x66d, 0x670, 0x673, 0x676, 0x679, 0x67e, 0x688, 0x68b, 0x68f, 0x69e, 0x6aa, 0x6ae, 0x6b3, 0x6b8, 0x6bc, 0x6c1, 0x6ca, 0x6d5, 0x6db, 0x6e3, 0x6e7, 0x6eb, 0x6f1, 0x6f7, 0x6fc, 0x6ff, 0x70f, 0x716, 0x719, 0x71c, 0x720, 0x726, 0x72b, 0x730, 0x735, 0x738, 0x73d, 0x740, 0x743, 0x747, 0x74b, 0x74e, 0x75e, 0x76f, 0x774, 0x776, 0x778} -// idnaSparseValues: 1876 entries, 7504 bytes -var idnaSparseValues = [1876]valueRange{ +// idnaSparseValues: 1915 entries, 7660 bytes +var idnaSparseValues = [1915]valueRange{ // Block 0x0, offset 0x0 {value: 0x0000, lo: 0x07}, {value: 0xe105, lo: 0x80, hi: 0x96}, @@ -2382,7 +2415,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xb9, hi: 0xbf}, // Block 0x3, offset 0x25 {value: 0x0000, lo: 0x01}, - {value: 0x1308, lo: 0x80, hi: 0xbf}, + {value: 0x3308, lo: 0x80, hi: 0xbf}, // Block 0x4, offset 0x27 {value: 0x0000, lo: 0x04}, {value: 0x03f5, lo: 0x80, hi: 0x8f}, @@ -2407,155 +2440,123 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x8b, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x1308, lo: 0x91, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbe}, - {value: 0x1308, lo: 0xbf, hi: 0xbf}, + {value: 0x3308, lo: 0x91, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, // Block 0x7, offset 0x3f {value: 0x0000, lo: 0x0b}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0x83}, - {value: 0x1308, lo: 0x84, hi: 0x85}, - {value: 0x0018, lo: 0x86, hi: 0x86}, - {value: 0x1308, lo: 0x87, hi: 0x87}, + {value: 0x0818, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x82}, + {value: 0x0818, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x85}, + {value: 0x0818, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xaa}, + {value: 0x0808, lo: 0x90, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0808, lo: 0xb0, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, // Block 0x8, offset 0x4b - {value: 0x0000, lo: 0x10}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0208, lo: 0x81, hi: 0x87}, - {value: 0x0408, lo: 0x88, hi: 0x88}, - {value: 0x0208, lo: 0x89, hi: 0x8a}, - {value: 0x1308, lo: 0x8b, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xad}, - {value: 0x0208, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb0}, - {value: 0x0408, lo: 0xb1, hi: 0xb3}, - {value: 0x0008, lo: 0xb4, hi: 0xb4}, - {value: 0x0429, lo: 0xb5, hi: 0xb5}, - {value: 0x0451, lo: 0xb6, hi: 0xb6}, - {value: 0x0479, lo: 0xb7, hi: 0xb7}, - {value: 0x04a1, lo: 0xb8, hi: 0xb8}, - {value: 0x0208, lo: 0xb9, hi: 0xbf}, - // Block 0x9, offset 0x5c {value: 0x0000, lo: 0x03}, - {value: 0x0208, lo: 0x80, hi: 0x87}, - {value: 0x0408, lo: 0x88, hi: 0x99}, - {value: 0x0208, lo: 0x9a, hi: 0xbf}, - // Block 0xa, offset 0x60 + {value: 0x0a08, lo: 0x80, hi: 0x87}, + {value: 0x0c08, lo: 0x88, hi: 0x99}, + {value: 0x0a08, lo: 0x9a, hi: 0xbf}, + // Block 0x9, offset 0x4f {value: 0x0000, lo: 0x0e}, - {value: 0x1308, lo: 0x80, hi: 0x8a}, + {value: 0x3308, lo: 0x80, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8c}, - {value: 0x0408, lo: 0x8d, hi: 0x8d}, - {value: 0x0208, lo: 0x8e, hi: 0x98}, - {value: 0x0408, lo: 0x99, hi: 0x9b}, - {value: 0x0208, lo: 0x9c, hi: 0xaa}, - {value: 0x0408, lo: 0xab, hi: 0xac}, - {value: 0x0208, lo: 0xad, hi: 0xb0}, - {value: 0x0408, lo: 0xb1, hi: 0xb1}, - {value: 0x0208, lo: 0xb2, hi: 0xb2}, - {value: 0x0408, lo: 0xb3, hi: 0xb4}, - {value: 0x0208, lo: 0xb5, hi: 0xb7}, - {value: 0x0408, lo: 0xb8, hi: 0xb9}, - {value: 0x0208, lo: 0xba, hi: 0xbf}, - // Block 0xb, offset 0x6f + {value: 0x0c08, lo: 0x8d, hi: 0x8d}, + {value: 0x0a08, lo: 0x8e, hi: 0x98}, + {value: 0x0c08, lo: 0x99, hi: 0x9b}, + {value: 0x0a08, lo: 0x9c, hi: 0xaa}, + {value: 0x0c08, lo: 0xab, hi: 0xac}, + {value: 0x0a08, lo: 0xad, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb1}, + {value: 0x0a08, lo: 0xb2, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xb5, hi: 0xb7}, + {value: 0x0c08, lo: 0xb8, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbf}, + // Block 0xa, offset 0x5e {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xb0}, - {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x0808, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xb0}, + {value: 0x0808, lo: 0xb1, hi: 0xb1}, {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xc, offset 0x74 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0208, lo: 0x8a, hi: 0xaa}, - {value: 0x1308, lo: 0xab, hi: 0xb3}, - {value: 0x0008, lo: 0xb4, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xba}, + // Block 0xb, offset 0x63 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0xd, offset 0x7b + // Block 0xc, offset 0x6b {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x1308, lo: 0x96, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0xa3}, - {value: 0x0008, lo: 0xa4, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xa8}, - {value: 0x1308, lo: 0xa9, hi: 0xad}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x99}, + {value: 0x0808, lo: 0x9a, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa3}, + {value: 0x0808, lo: 0xa4, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa7}, + {value: 0x0808, lo: 0xa8, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbe}, + {value: 0x0818, lo: 0xb0, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xe, offset 0x87 - {value: 0x0000, lo: 0x0d}, - {value: 0x0408, lo: 0x80, hi: 0x80}, - {value: 0x0208, lo: 0x81, hi: 0x85}, - {value: 0x0408, lo: 0x86, hi: 0x87}, - {value: 0x0208, lo: 0x88, hi: 0x88}, - {value: 0x0408, lo: 0x89, hi: 0x89}, - {value: 0x0208, lo: 0x8a, hi: 0x93}, - {value: 0x0408, lo: 0x94, hi: 0x94}, - {value: 0x0208, lo: 0x95, hi: 0x95}, - {value: 0x0008, lo: 0x96, hi: 0x98}, - {value: 0x1308, lo: 0x99, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xf, offset 0x95 + // Block 0xd, offset 0x77 {value: 0x0000, lo: 0x0d}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0208, lo: 0xa0, hi: 0xa9}, - {value: 0x0408, lo: 0xaa, hi: 0xac}, - {value: 0x0008, lo: 0xad, hi: 0xad}, - {value: 0x0408, lo: 0xae, hi: 0xae}, - {value: 0x0208, lo: 0xaf, hi: 0xb0}, - {value: 0x0408, lo: 0xb1, hi: 0xb2}, - {value: 0x0208, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xa0, hi: 0xa9}, + {value: 0x0c08, lo: 0xaa, hi: 0xac}, + {value: 0x0808, lo: 0xad, hi: 0xad}, + {value: 0x0c08, lo: 0xae, hi: 0xae}, + {value: 0x0a08, lo: 0xaf, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb2}, + {value: 0x0a08, lo: 0xb3, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0208, lo: 0xb6, hi: 0xb8}, - {value: 0x0408, lo: 0xb9, hi: 0xb9}, - {value: 0x0208, lo: 0xba, hi: 0xbd}, + {value: 0x0a08, lo: 0xb6, hi: 0xb8}, + {value: 0x0c08, lo: 0xb9, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x10, offset 0xa3 + // Block 0xe, offset 0x85 {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x93}, - {value: 0x1308, lo: 0x94, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x1308, lo: 0xa3, hi: 0xbf}, - // Block 0x11, offset 0xa8 + {value: 0x3308, lo: 0x94, hi: 0xa1}, + {value: 0x0840, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xbf}, + // Block 0xf, offset 0x8a {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0xb9}, - {value: 0x1308, lo: 0xba, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x12, offset 0xb1 + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x10, offset 0x93 {value: 0x0000, lo: 0x0f}, - {value: 0x1308, lo: 0x80, hi: 0x80}, - {value: 0x1008, lo: 0x81, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x85}, - {value: 0x1008, lo: 0x86, hi: 0x88}, + {value: 0x3008, lo: 0x86, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x1008, lo: 0x8a, hi: 0x8c}, - {value: 0x1b08, lo: 0x8d, hi: 0x8d}, + {value: 0x3008, lo: 0x8a, hi: 0x8c}, + {value: 0x3b08, lo: 0x8d, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x96}, - {value: 0x1008, lo: 0x97, hi: 0x97}, + {value: 0x3008, lo: 0x97, hi: 0x97}, {value: 0x0040, lo: 0x98, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x13, offset 0xc1 + // Block 0x11, offset 0xa3 {value: 0x0000, lo: 0x0d}, - {value: 0x1308, lo: 0x80, hi: 0x80}, - {value: 0x1008, lo: 0x81, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, @@ -2566,25 +2567,24 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xaa, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x1308, lo: 0xbe, hi: 0xbf}, - // Block 0x14, offset 0xcf - {value: 0x0000, lo: 0x0c}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x12, offset 0xb1 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, {value: 0x0008, lo: 0x8e, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x91}, {value: 0x0008, lo: 0x92, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x3b08, lo: 0xbb, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x15, offset 0xdc + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x13, offset 0xbd {value: 0x0000, lo: 0x0b}, {value: 0x0040, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x83}, + {value: 0x3008, lo: 0x82, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x99}, @@ -2594,50 +2594,50 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x16, offset 0xe8 + // Block 0x14, offset 0xc9 {value: 0x0000, lo: 0x10}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x89}, - {value: 0x1b08, lo: 0x8a, hi: 0x8a}, + {value: 0x3b08, lo: 0x8a, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8e}, - {value: 0x1008, lo: 0x8f, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0x94}, + {value: 0x3008, lo: 0x8f, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x94}, {value: 0x0040, lo: 0x95, hi: 0x95}, - {value: 0x1308, lo: 0x96, hi: 0x96}, + {value: 0x3308, lo: 0x96, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x1008, lo: 0x98, hi: 0x9f}, + {value: 0x3008, lo: 0x98, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xb1}, - {value: 0x1008, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x17, offset 0xf9 + // Block 0x15, offset 0xda {value: 0x0000, lo: 0x09}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0xb0}, - {value: 0x1308, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb1, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xb2}, {value: 0x08f1, lo: 0xb3, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb9}, - {value: 0x1b08, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xb4, hi: 0xb9}, + {value: 0x3b08, lo: 0xba, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbe}, {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0x18, offset 0x103 + // Block 0x16, offset 0xe4 {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x1308, lo: 0x87, hi: 0x8e}, + {value: 0x3308, lo: 0x87, hi: 0x8e}, {value: 0x0018, lo: 0x8f, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0018, lo: 0x9a, hi: 0x9b}, {value: 0x0040, lo: 0x9c, hi: 0xbf}, - // Block 0x19, offset 0x10a + // Block 0x17, offset 0xeb {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x85}, {value: 0x0008, lo: 0x86, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x1308, lo: 0x88, hi: 0x8d}, + {value: 0x3308, lo: 0x88, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9b}, @@ -2645,76 +2645,76 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0999, lo: 0x9d, hi: 0x9d}, {value: 0x0008, lo: 0x9e, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x1a, offset 0x117 + // Block 0x18, offset 0xf8 {value: 0x0000, lo: 0x10}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x8a}, {value: 0x0008, lo: 0x8b, hi: 0x8b}, {value: 0xe03d, lo: 0x8c, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x97}, - {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x3308, lo: 0x98, hi: 0x99}, {value: 0x0018, lo: 0x9a, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa9}, {value: 0x0018, lo: 0xaa, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, {value: 0x0018, lo: 0xb6, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, {value: 0x0018, lo: 0xb8, hi: 0xb8}, - {value: 0x1308, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xb9, hi: 0xb9}, {value: 0x0018, lo: 0xba, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x1b, offset 0x128 + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x19, offset 0x109 {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x85}, - {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x86, hi: 0x86}, {value: 0x0018, lo: 0x87, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, {value: 0x0018, lo: 0x8e, hi: 0x9a}, {value: 0x0040, lo: 0x9b, hi: 0xbf}, - // Block 0x1c, offset 0x12f + // Block 0x1a, offset 0x110 {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x1008, lo: 0xab, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xb0}, - {value: 0x1008, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb7}, - {value: 0x1008, lo: 0xb8, hi: 0xb8}, - {value: 0x1b08, lo: 0xb9, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbc}, - {value: 0x1308, lo: 0xbd, hi: 0xbe}, + {value: 0x3008, lo: 0xab, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbe}, {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x1d, offset 0x13a + // Block 0x1b, offset 0x11b {value: 0x0000, lo: 0x0e}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0018, lo: 0x8a, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x95}, - {value: 0x1008, lo: 0x96, hi: 0x97}, - {value: 0x1308, lo: 0x98, hi: 0x99}, + {value: 0x3008, lo: 0x96, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, {value: 0x0008, lo: 0x9a, hi: 0x9d}, - {value: 0x1308, lo: 0x9e, hi: 0xa0}, + {value: 0x3308, lo: 0x9e, hi: 0xa0}, {value: 0x0008, lo: 0xa1, hi: 0xa1}, - {value: 0x1008, lo: 0xa2, hi: 0xa4}, + {value: 0x3008, lo: 0xa2, hi: 0xa4}, {value: 0x0008, lo: 0xa5, hi: 0xa6}, - {value: 0x1008, lo: 0xa7, hi: 0xad}, + {value: 0x3008, lo: 0xa7, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xb0}, - {value: 0x1308, lo: 0xb1, hi: 0xb4}, + {value: 0x3308, lo: 0xb1, hi: 0xb4}, {value: 0x0008, lo: 0xb5, hi: 0xbf}, - // Block 0x1e, offset 0x149 + // Block 0x1c, offset 0x12a {value: 0x0000, lo: 0x0d}, {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x1308, lo: 0x82, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x86}, - {value: 0x1008, lo: 0x87, hi: 0x8c}, - {value: 0x1308, lo: 0x8d, hi: 0x8d}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x8c}, + {value: 0x3308, lo: 0x8d, hi: 0x8d}, {value: 0x0008, lo: 0x8e, hi: 0x8e}, - {value: 0x1008, lo: 0x8f, hi: 0x8f}, + {value: 0x3008, lo: 0x8f, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x1008, lo: 0x9a, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x3008, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x1f, offset 0x157 + // Block 0x1d, offset 0x138 {value: 0x0000, lo: 0x09}, {value: 0x0040, lo: 0x80, hi: 0x86}, {value: 0x055d, lo: 0x87, hi: 0x87}, @@ -2725,18 +2725,27 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0xbb, hi: 0xbb}, {value: 0xe105, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0x20, offset 0x161 + // Block 0x1e, offset 0x142 {value: 0x0000, lo: 0x01}, {value: 0x0018, lo: 0x80, hi: 0xbf}, - // Block 0x21, offset 0x163 - {value: 0x0000, lo: 0x03}, + // Block 0x1f, offset 0x144 + {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xbf}, - // Block 0x22, offset 0x167 + {value: 0x2018, lo: 0xa1, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x20, offset 0x149 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa7}, + {value: 0x2018, lo: 0xa8, hi: 0xbf}, + // Block 0x21, offset 0x14c + {value: 0x0000, lo: 0x02}, + {value: 0x2018, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0xbf}, + // Block 0x22, offset 0x14f {value: 0x0000, lo: 0x01}, {value: 0x0008, lo: 0x80, hi: 0xbf}, - // Block 0x23, offset 0x169 + // Block 0x23, offset 0x151 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, @@ -2749,7 +2758,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0x9a, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x24, offset 0x175 + // Block 0x24, offset 0x15d {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, @@ -2761,7 +2770,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xb6, hi: 0xb7}, {value: 0x0008, lo: 0xb8, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x25, offset 0x180 + // Block 0x25, offset 0x168 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0040, lo: 0x81, hi: 0x81}, @@ -2770,146 +2779,146 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0x88, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x26, offset 0x188 + // Block 0x26, offset 0x170 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x91}, {value: 0x0008, lo: 0x92, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x27, offset 0x18e + // Block 0x27, offset 0x176 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x9a}, {value: 0x0040, lo: 0x9b, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9f}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x28, offset 0x194 + // Block 0x28, offset 0x17c {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x29, offset 0x199 + // Block 0x29, offset 0x181 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb7}, {value: 0xe045, lo: 0xb8, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x2a, offset 0x19e + // Block 0x2a, offset 0x186 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x2b, offset 0x1a1 + // Block 0x2b, offset 0x189 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xac}, {value: 0x0018, lo: 0xad, hi: 0xae}, {value: 0x0008, lo: 0xaf, hi: 0xbf}, - // Block 0x2c, offset 0x1a5 + // Block 0x2c, offset 0x18d {value: 0x0000, lo: 0x05}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0x9a}, {value: 0x0018, lo: 0x9b, hi: 0x9c}, {value: 0x0040, lo: 0x9d, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x2d, offset 0x1ab + // Block 0x2d, offset 0x193 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xaa}, {value: 0x0018, lo: 0xab, hi: 0xb0}, {value: 0x0008, lo: 0xb1, hi: 0xb8}, {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0x2e, offset 0x1b0 + // Block 0x2e, offset 0x198 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8d}, {value: 0x0008, lo: 0x8e, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0x93}, - {value: 0x1b08, lo: 0x94, hi: 0x94}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x3b08, lo: 0x94, hi: 0x94}, {value: 0x0040, lo: 0x95, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb3}, - {value: 0x1b08, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, {value: 0x0018, lo: 0xb5, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x2f, offset 0x1bc + // Block 0x2f, offset 0x1a4 {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0x93}, + {value: 0x3308, lo: 0x92, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xb0}, {value: 0x0040, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x30, offset 0x1c6 + // Block 0x30, offset 0x1ae {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0xb3}, - {value: 0x1340, lo: 0xb4, hi: 0xb5}, - {value: 0x1008, lo: 0xb6, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbf}, - // Block 0x31, offset 0x1cc + {value: 0x3340, lo: 0xb4, hi: 0xb5}, + {value: 0x3008, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x31, offset 0x1b4 {value: 0x0000, lo: 0x10}, - {value: 0x1008, lo: 0x80, hi: 0x85}, - {value: 0x1308, lo: 0x86, hi: 0x86}, - {value: 0x1008, lo: 0x87, hi: 0x88}, - {value: 0x1308, lo: 0x89, hi: 0x91}, - {value: 0x1b08, lo: 0x92, hi: 0x92}, - {value: 0x1308, lo: 0x93, hi: 0x93}, + {value: 0x3008, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x91}, + {value: 0x3b08, lo: 0x92, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0x93}, {value: 0x0018, lo: 0x94, hi: 0x96}, {value: 0x0008, lo: 0x97, hi: 0x97}, {value: 0x0018, lo: 0x98, hi: 0x9b}, {value: 0x0008, lo: 0x9c, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9d}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa9}, {value: 0x0040, lo: 0xaa, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x32, offset 0x1dd + // Block 0x32, offset 0x1c5 {value: 0x0000, lo: 0x09}, {value: 0x0018, lo: 0x80, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0x86}, {value: 0x0218, lo: 0x87, hi: 0x87}, {value: 0x0018, lo: 0x88, hi: 0x8a}, - {value: 0x13c0, lo: 0x8b, hi: 0x8d}, + {value: 0x33c0, lo: 0x8b, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0208, lo: 0xa0, hi: 0xbf}, - // Block 0x33, offset 0x1e7 + // Block 0x33, offset 0x1cf {value: 0x0000, lo: 0x02}, {value: 0x0208, lo: 0x80, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x34, offset 0x1ea + // Block 0x34, offset 0x1d2 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x3308, lo: 0x85, hi: 0x86}, {value: 0x0208, lo: 0x87, hi: 0xa8}, - {value: 0x1308, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xa9, hi: 0xa9}, {value: 0x0208, lo: 0xaa, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x35, offset 0x1f2 + // Block 0x35, offset 0x1da {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0x36, offset 0x1f5 + // Block 0x36, offset 0x1dd {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa6}, - {value: 0x1308, lo: 0xa7, hi: 0xa8}, - {value: 0x1008, lo: 0xa9, hi: 0xab}, + {value: 0x3308, lo: 0xa0, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb2}, - {value: 0x1008, lo: 0xb3, hi: 0xb8}, - {value: 0x1308, lo: 0xb9, hi: 0xbb}, + {value: 0x3008, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x37, offset 0x202 + // Block 0x37, offset 0x1ea {value: 0x0000, lo: 0x07}, {value: 0x0018, lo: 0x80, hi: 0x80}, {value: 0x0040, lo: 0x81, hi: 0x83}, @@ -2918,12 +2927,12 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x38, offset 0x20a + // Block 0x38, offset 0x1f2 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x39, offset 0x20e + // Block 0x39, offset 0x1f6 {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0x8f}, @@ -2931,33 +2940,33 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0028, lo: 0x9a, hi: 0x9a}, {value: 0x0040, lo: 0x9b, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0xbf}, - // Block 0x3a, offset 0x215 + // Block 0x3a, offset 0x1fd {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x1308, lo: 0x97, hi: 0x98}, - {value: 0x1008, lo: 0x99, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0x9b}, + {value: 0x3308, lo: 0x97, hi: 0x98}, + {value: 0x3008, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9b}, {value: 0x0040, lo: 0x9c, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x3b, offset 0x21d + // Block 0x3b, offset 0x205 {value: 0x0000, lo: 0x0f}, {value: 0x0008, lo: 0x80, hi: 0x94}, - {value: 0x1008, lo: 0x95, hi: 0x95}, - {value: 0x1308, lo: 0x96, hi: 0x96}, - {value: 0x1008, lo: 0x97, hi: 0x97}, - {value: 0x1308, lo: 0x98, hi: 0x9e}, + {value: 0x3008, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x1b08, lo: 0xa0, hi: 0xa0}, - {value: 0x1008, lo: 0xa1, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xac}, - {value: 0x1008, lo: 0xad, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xbc}, + {value: 0x3b08, lo: 0xa0, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xac}, + {value: 0x3008, lo: 0xad, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x1308, lo: 0xbf, hi: 0xbf}, - // Block 0x3c, offset 0x22d + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x215 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0x8f}, @@ -2967,78 +2976,78 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa7, hi: 0xa7}, {value: 0x0018, lo: 0xa8, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xbd}, - {value: 0x1318, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xb0, hi: 0xbd}, + {value: 0x3318, lo: 0xbe, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x3d, offset 0x239 + // Block 0x3d, offset 0x221 {value: 0x0000, lo: 0x01}, {value: 0x0040, lo: 0x80, hi: 0xbf}, - // Block 0x3e, offset 0x23b + // Block 0x3e, offset 0x223 {value: 0x0000, lo: 0x09}, - {value: 0x1308, lo: 0x80, hi: 0x83}, - {value: 0x1008, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3008, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb4}, - {value: 0x1008, lo: 0xb5, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, - {value: 0x1008, lo: 0xbd, hi: 0xbf}, - // Block 0x3f, offset 0x245 + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x3f, offset 0x22d {value: 0x0000, lo: 0x0b}, - {value: 0x1008, lo: 0x80, hi: 0x81}, - {value: 0x1308, lo: 0x82, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x83}, - {value: 0x1808, lo: 0x84, hi: 0x84}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x3808, lo: 0x84, hi: 0x84}, {value: 0x0008, lo: 0x85, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0018, lo: 0x9a, hi: 0xaa}, - {value: 0x1308, lo: 0xab, hi: 0xb3}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x40, offset 0x251 + // Block 0x40, offset 0x239 {value: 0x0000, lo: 0x0b}, - {value: 0x1308, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xa0}, - {value: 0x1008, lo: 0xa1, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa5}, - {value: 0x1008, lo: 0xa6, hi: 0xa7}, - {value: 0x1308, lo: 0xa8, hi: 0xa9}, - {value: 0x1808, lo: 0xaa, hi: 0xaa}, - {value: 0x1b08, lo: 0xab, hi: 0xab}, - {value: 0x1308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3808, lo: 0xaa, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xbf}, - // Block 0x41, offset 0x25d + // Block 0x41, offset 0x245 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xa6}, - {value: 0x1008, lo: 0xa7, hi: 0xa7}, - {value: 0x1308, lo: 0xa8, hi: 0xa9}, - {value: 0x1008, lo: 0xaa, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xad}, - {value: 0x1008, lo: 0xae, hi: 0xae}, - {value: 0x1308, lo: 0xaf, hi: 0xb1}, - {value: 0x1808, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xa6, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3008, lo: 0xaa, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3808, lo: 0xb2, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbb}, {value: 0x0018, lo: 0xbc, hi: 0xbf}, - // Block 0x42, offset 0x269 + // Block 0x42, offset 0x251 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x1008, lo: 0xa4, hi: 0xab}, - {value: 0x1308, lo: 0xac, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xa4, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xba}, {value: 0x0018, lo: 0xbb, hi: 0xbf}, - // Block 0x43, offset 0x271 + // Block 0x43, offset 0x259 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0x8c}, {value: 0x0008, lo: 0x8d, hi: 0xbd}, {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x44, offset 0x276 + // Block 0x44, offset 0x25e {value: 0x0000, lo: 0x09}, {value: 0x0e29, lo: 0x80, hi: 0x80}, {value: 0x0e41, lo: 0x81, hi: 0x81}, @@ -3049,30 +3058,30 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0eb9, lo: 0x87, hi: 0x87}, {value: 0x057d, lo: 0x88, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0x45, offset 0x280 + // Block 0x45, offset 0x268 {value: 0x0000, lo: 0x10}, {value: 0x0018, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x1308, lo: 0x90, hi: 0x92}, + {value: 0x3308, lo: 0x90, hi: 0x92}, {value: 0x0018, lo: 0x93, hi: 0x93}, - {value: 0x1308, lo: 0x94, hi: 0xa0}, - {value: 0x1008, lo: 0xa1, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa8}, + {value: 0x3308, lo: 0x94, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa8}, {value: 0x0008, lo: 0xa9, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xad}, + {value: 0x3308, lo: 0xad, hi: 0xad}, {value: 0x0008, lo: 0xae, hi: 0xb1}, - {value: 0x1008, lo: 0xb2, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xb9}, + {value: 0x3008, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x46, offset 0x291 + // Block 0x46, offset 0x279 {value: 0x0000, lo: 0x03}, - {value: 0x1308, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x1308, lo: 0xbb, hi: 0xbf}, - // Block 0x47, offset 0x295 + {value: 0x3308, lo: 0x80, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0x47, offset 0x27d {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x87}, {value: 0xe045, lo: 0x88, hi: 0x8f}, @@ -3084,12 +3093,12 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xe045, lo: 0xa8, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb7}, {value: 0xe045, lo: 0xb8, hi: 0xbf}, - // Block 0x48, offset 0x2a0 + // Block 0x48, offset 0x288 {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x1318, lo: 0x90, hi: 0xb0}, + {value: 0x3318, lo: 0x90, hi: 0xb0}, {value: 0x0040, lo: 0xb1, hi: 0xbf}, - // Block 0x49, offset 0x2a4 + // Block 0x49, offset 0x28c {value: 0x0000, lo: 0x08}, {value: 0x0018, lo: 0x80, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x83}, @@ -3099,7 +3108,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0x8a, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x4a, offset 0x2ad + // Block 0x4a, offset 0x295 {value: 0x0000, lo: 0x07}, {value: 0x0018, lo: 0x80, hi: 0xab}, {value: 0x24f1, lo: 0xac, hi: 0xac}, @@ -3108,72 +3117,68 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x2579, lo: 0xaf, hi: 0xaf}, {value: 0x25b1, lo: 0xb0, hi: 0xb0}, {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0x4b, offset 0x2b5 + // Block 0x4b, offset 0x29d {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x9f}, {value: 0x0080, lo: 0xa0, hi: 0xa0}, {value: 0x0018, lo: 0xa1, hi: 0xad}, {value: 0x0080, lo: 0xae, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x4c, offset 0x2bb + // Block 0x4c, offset 0x2a3 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0xa8}, {value: 0x09c5, lo: 0xa9, hi: 0xa9}, {value: 0x09e5, lo: 0xaa, hi: 0xaa}, {value: 0x0018, lo: 0xab, hi: 0xbf}, - // Block 0x4d, offset 0x2c0 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x4e, offset 0x2c3 + // Block 0x4d, offset 0x2a8 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0xa6}, {value: 0x0040, lo: 0xa7, hi: 0xbf}, - // Block 0x4f, offset 0x2c6 + // Block 0x4e, offset 0x2ab {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0x8b}, {value: 0x28c1, lo: 0x8c, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0xbf}, - // Block 0x50, offset 0x2ca + // Block 0x4f, offset 0x2af {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0xb3}, {value: 0x0e66, lo: 0xb4, hi: 0xb4}, {value: 0x292a, lo: 0xb5, hi: 0xb5}, {value: 0x0e86, lo: 0xb6, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x51, offset 0x2d0 + // Block 0x50, offset 0x2b5 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0x9b}, {value: 0x2941, lo: 0x9c, hi: 0x9c}, {value: 0x0018, lo: 0x9d, hi: 0xbf}, - // Block 0x52, offset 0x2d4 + // Block 0x51, offset 0x2b9 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xb5}, {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0x53, offset 0x2d8 + // Block 0x52, offset 0x2bd {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x97}, {value: 0x0018, lo: 0x98, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbc}, {value: 0x0018, lo: 0xbd, hi: 0xbf}, - // Block 0x54, offset 0x2de + // Block 0x53, offset 0x2c3 {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xab}, + {value: 0x0018, lo: 0x8a, hi: 0x92}, + {value: 0x0040, lo: 0x93, hi: 0xab}, {value: 0x0018, lo: 0xac, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x55, offset 0x2e5 + // Block 0x54, offset 0x2ca {value: 0x0000, lo: 0x05}, {value: 0xe185, lo: 0x80, hi: 0x8f}, {value: 0x03f5, lo: 0x90, hi: 0x9f}, {value: 0x0ea5, lo: 0xa0, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x56, offset 0x2eb + // Block 0x55, offset 0x2d0 {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xa5}, {value: 0x0040, lo: 0xa6, hi: 0xa6}, @@ -3182,15 +3187,15 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xad, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x57, offset 0x2f3 + // Block 0x56, offset 0x2d8 {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xae}, {value: 0xe075, lo: 0xaf, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb0}, {value: 0x0040, lo: 0xb1, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0x58, offset 0x2fa + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0x57, offset 0x2df {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x9f}, @@ -3202,7 +3207,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xb7, hi: 0xb7}, {value: 0x0008, lo: 0xb8, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x59, offset 0x305 + // Block 0x58, offset 0x2ea {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, @@ -3212,62 +3217,62 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x97, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xbf}, - // Block 0x5a, offset 0x30f + {value: 0x3308, lo: 0xa0, hi: 0xbf}, + // Block 0x59, offset 0x2f4 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xae}, {value: 0x0008, lo: 0xaf, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x5b, offset 0x313 + // Block 0x5a, offset 0x2f8 {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0xbf}, - // Block 0x5c, offset 0x316 + {value: 0x0018, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0x5b, offset 0x2fb {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9a}, {value: 0x0018, lo: 0x9b, hi: 0x9e}, {value: 0x0edd, lo: 0x9f, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0x5d, offset 0x31c + // Block 0x5c, offset 0x301 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xb2}, {value: 0x0efd, lo: 0xb3, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x5e, offset 0x320 + // Block 0x5d, offset 0x305 {value: 0x0020, lo: 0x01}, {value: 0x0f1d, lo: 0x80, hi: 0xbf}, - // Block 0x5f, offset 0x322 + // Block 0x5e, offset 0x307 {value: 0x0020, lo: 0x02}, {value: 0x171d, lo: 0x80, hi: 0x8f}, {value: 0x18fd, lo: 0x90, hi: 0xbf}, - // Block 0x60, offset 0x325 + // Block 0x5f, offset 0x30a {value: 0x0020, lo: 0x01}, {value: 0x1efd, lo: 0x80, hi: 0xbf}, - // Block 0x61, offset 0x327 + // Block 0x60, offset 0x30c {value: 0x0000, lo: 0x02}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x62, offset 0x32a + // Block 0x61, offset 0x30f {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x98}, - {value: 0x1308, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x99, hi: 0x9a}, {value: 0x29e2, lo: 0x9b, hi: 0x9b}, {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, {value: 0x0008, lo: 0x9d, hi: 0x9e}, {value: 0x2a31, lo: 0x9f, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xa0}, {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x63, offset 0x334 + // Block 0x62, offset 0x319 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xbe}, {value: 0x2a69, lo: 0xbf, hi: 0xbf}, - // Block 0x64, offset 0x337 + // Block 0x63, offset 0x31c {value: 0x0000, lo: 0x0e}, {value: 0x0040, lo: 0x80, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xb0}, + {value: 0x0008, lo: 0x85, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, @@ -3279,150 +3284,150 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x2afd, lo: 0xba, hi: 0xbb}, {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, {value: 0x2afd, lo: 0xbe, hi: 0xbf}, - // Block 0x65, offset 0x346 + // Block 0x64, offset 0x32b {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x66, offset 0x34a + // Block 0x65, offset 0x32f {value: 0x0030, lo: 0x04}, {value: 0x2aa2, lo: 0x80, hi: 0x9d}, {value: 0x305a, lo: 0x9e, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, {value: 0x30a2, lo: 0xa0, hi: 0xbf}, - // Block 0x67, offset 0x34f + // Block 0x66, offset 0x334 {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x68, offset 0x352 + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0x67, offset 0x337 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0x8c}, {value: 0x0040, lo: 0x8d, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x69, offset 0x356 + // Block 0x68, offset 0x33b {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xbd}, {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x6a, offset 0x35b + // Block 0x69, offset 0x340 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xbf}, - // Block 0x6b, offset 0x360 + // Block 0x6a, offset 0x345 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0xa5}, {value: 0x0018, lo: 0xa6, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb0, hi: 0xb1}, {value: 0x0018, lo: 0xb2, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6c, offset 0x366 + // Block 0x6b, offset 0x34b {value: 0x0000, lo: 0x05}, {value: 0x0040, lo: 0x80, hi: 0xb6}, {value: 0x0008, lo: 0xb7, hi: 0xb7}, {value: 0x2009, lo: 0xb8, hi: 0xb8}, {value: 0x6e89, lo: 0xb9, hi: 0xb9}, {value: 0x0008, lo: 0xba, hi: 0xbf}, - // Block 0x6d, offset 0x36c + // Block 0x6c, offset 0x351 {value: 0x0000, lo: 0x0e}, {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x1308, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0x85}, - {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, {value: 0x0008, lo: 0x87, hi: 0x8a}, - {value: 0x1308, lo: 0x8b, hi: 0x8b}, + {value: 0x3308, lo: 0x8b, hi: 0x8b}, {value: 0x0008, lo: 0x8c, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa6}, - {value: 0x1008, lo: 0xa7, hi: 0xa7}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, {value: 0x0018, lo: 0xa8, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x6e, offset 0x37b + // Block 0x6d, offset 0x360 {value: 0x0000, lo: 0x05}, {value: 0x0208, lo: 0x80, hi: 0xb1}, {value: 0x0108, lo: 0xb2, hi: 0xb2}, {value: 0x0008, lo: 0xb3, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6f, offset 0x381 + // Block 0x6e, offset 0x366 {value: 0x0000, lo: 0x03}, - {value: 0x1008, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x80, hi: 0x81}, {value: 0x0008, lo: 0x82, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xbf}, - // Block 0x70, offset 0x385 + {value: 0x3008, lo: 0xb4, hi: 0xbf}, + // Block 0x6f, offset 0x36a {value: 0x0000, lo: 0x0e}, - {value: 0x1008, lo: 0x80, hi: 0x83}, - {value: 0x1b08, lo: 0x84, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x85}, + {value: 0x3008, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0x8d}, {value: 0x0018, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xb1}, + {value: 0x3308, lo: 0xa0, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xb7}, {value: 0x0018, lo: 0xb8, hi: 0xba}, {value: 0x0008, lo: 0xbb, hi: 0xbb}, {value: 0x0018, lo: 0xbc, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x71, offset 0x394 + // Block 0x70, offset 0x379 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xad}, + {value: 0x3308, lo: 0xa6, hi: 0xad}, {value: 0x0018, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x72, offset 0x399 + // Block 0x71, offset 0x37e {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x1308, lo: 0x87, hi: 0x91}, - {value: 0x1008, lo: 0x92, hi: 0x92}, - {value: 0x1808, lo: 0x93, hi: 0x93}, + {value: 0x3308, lo: 0x87, hi: 0x91}, + {value: 0x3008, lo: 0x92, hi: 0x92}, + {value: 0x3808, lo: 0x93, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x73, offset 0x3a1 + // Block 0x72, offset 0x386 {value: 0x0000, lo: 0x09}, - {value: 0x1308, lo: 0x80, hi: 0x82}, - {value: 0x1008, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xb9}, - {value: 0x1008, lo: 0xba, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, - {value: 0x1008, lo: 0xbd, hi: 0xbf}, - // Block 0x74, offset 0x3ab + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb9}, + {value: 0x3008, lo: 0xba, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x73, offset 0x390 {value: 0x0000, lo: 0x0a}, - {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x3808, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8e}, {value: 0x0008, lo: 0x8f, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa5}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x75, offset 0x3b6 + // Block 0x74, offset 0x39b {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xa8}, - {value: 0x1308, lo: 0xa9, hi: 0xae}, - {value: 0x1008, lo: 0xaf, hi: 0xb0}, - {value: 0x1308, lo: 0xb1, hi: 0xb2}, - {value: 0x1008, lo: 0xb3, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x3308, lo: 0xa9, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x76, offset 0x3be + // Block 0x75, offset 0x3a3 {value: 0x0000, lo: 0x10}, {value: 0x0008, lo: 0x80, hi: 0x82}, - {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0x8b}, - {value: 0x1308, lo: 0x8c, hi: 0x8c}, - {value: 0x1008, lo: 0x8d, hi: 0x8d}, + {value: 0x3308, lo: 0x8c, hi: 0x8c}, + {value: 0x3008, lo: 0x8d, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9b}, @@ -3430,38 +3435,38 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa0, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xb9}, {value: 0x0008, lo: 0xba, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbc}, - {value: 0x1008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbd}, {value: 0x0008, lo: 0xbe, hi: 0xbf}, - // Block 0x77, offset 0x3cf + // Block 0x76, offset 0x3b4 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb0}, + {value: 0x3308, lo: 0xb0, hi: 0xb0}, {value: 0x0008, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb4}, + {value: 0x3308, lo: 0xb2, hi: 0xb4}, {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xb8}, + {value: 0x3308, lo: 0xb7, hi: 0xb8}, {value: 0x0008, lo: 0xb9, hi: 0xbd}, - {value: 0x1308, lo: 0xbe, hi: 0xbf}, - // Block 0x78, offset 0x3d8 + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x77, offset 0x3bd {value: 0x0000, lo: 0x0f}, {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x81}, + {value: 0x3308, lo: 0x81, hi: 0x81}, {value: 0x0008, lo: 0x82, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x9a}, {value: 0x0008, lo: 0x9b, hi: 0x9d}, {value: 0x0018, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xaa}, - {value: 0x1008, lo: 0xab, hi: 0xab}, - {value: 0x1308, lo: 0xac, hi: 0xad}, - {value: 0x1008, lo: 0xae, hi: 0xaf}, + {value: 0x3008, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xb4}, - {value: 0x1008, lo: 0xb5, hi: 0xb5}, - {value: 0x1b08, lo: 0xb6, hi: 0xb6}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3b08, lo: 0xb6, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x79, offset 0x3e8 + // Block 0x78, offset 0x3cd {value: 0x0000, lo: 0x0c}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0x86}, @@ -3475,7 +3480,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa8, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x7a, offset 0x3f5 + // Block 0x79, offset 0x3da {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x9a}, {value: 0x0018, lo: 0x9b, hi: 0x9b}, @@ -3486,54 +3491,54 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa0, hi: 0xa5}, {value: 0x0040, lo: 0xa6, hi: 0xaf}, {value: 0x4495, lo: 0xb0, hi: 0xbf}, - // Block 0x7b, offset 0x3ff + // Block 0x7a, offset 0x3e4 {value: 0x0000, lo: 0x04}, {value: 0x44b5, lo: 0x80, hi: 0x8f}, {value: 0x44d5, lo: 0x90, hi: 0x9f}, {value: 0x44f5, lo: 0xa0, hi: 0xaf}, {value: 0x44d5, lo: 0xb0, hi: 0xbf}, - // Block 0x7c, offset 0x404 + // Block 0x7b, offset 0x3e9 {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0xa2}, - {value: 0x1008, lo: 0xa3, hi: 0xa4}, - {value: 0x1308, lo: 0xa5, hi: 0xa5}, - {value: 0x1008, lo: 0xa6, hi: 0xa7}, - {value: 0x1308, lo: 0xa8, hi: 0xa8}, - {value: 0x1008, lo: 0xa9, hi: 0xaa}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xaa}, {value: 0x0018, lo: 0xab, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xac}, - {value: 0x1b08, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3b08, lo: 0xad, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x7d, offset 0x411 + // Block 0x7c, offset 0x3f6 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x7e, offset 0x415 + // Block 0x7d, offset 0x3fa {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x8a}, {value: 0x0018, lo: 0x8b, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x7f, offset 0x41a + // Block 0x7e, offset 0x3ff {value: 0x0020, lo: 0x01}, {value: 0x4515, lo: 0x80, hi: 0xbf}, - // Block 0x80, offset 0x41c + // Block 0x7f, offset 0x401 {value: 0x0020, lo: 0x03}, {value: 0x4d15, lo: 0x80, hi: 0x94}, {value: 0x4ad5, lo: 0x95, hi: 0x95}, {value: 0x4fb5, lo: 0x96, hi: 0xbf}, - // Block 0x81, offset 0x420 + // Block 0x80, offset 0x405 {value: 0x0020, lo: 0x01}, {value: 0x54f5, lo: 0x80, hi: 0xbf}, - // Block 0x82, offset 0x422 + // Block 0x81, offset 0x407 {value: 0x0020, lo: 0x03}, {value: 0x5cf5, lo: 0x80, hi: 0x84}, {value: 0x5655, lo: 0x85, hi: 0x85}, {value: 0x5d95, lo: 0x86, hi: 0xbf}, - // Block 0x83, offset 0x426 + // Block 0x82, offset 0x40b {value: 0x0020, lo: 0x08}, {value: 0x6b55, lo: 0x80, hi: 0x8f}, {value: 0x6d15, lo: 0x90, hi: 0x90}, @@ -3543,19 +3548,19 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xae, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x70d5, lo: 0xb0, hi: 0xbf}, - // Block 0x84, offset 0x42f + // Block 0x83, offset 0x414 {value: 0x0020, lo: 0x05}, {value: 0x72d5, lo: 0x80, hi: 0xad}, {value: 0x6535, lo: 0xae, hi: 0xae}, {value: 0x7895, lo: 0xaf, hi: 0xb5}, {value: 0x6f55, lo: 0xb6, hi: 0xb6}, {value: 0x7975, lo: 0xb7, hi: 0xbf}, - // Block 0x85, offset 0x435 + // Block 0x84, offset 0x41a {value: 0x0028, lo: 0x03}, {value: 0x7c21, lo: 0x80, hi: 0x82}, {value: 0x7be1, lo: 0x83, hi: 0x83}, {value: 0x7c99, lo: 0x84, hi: 0xbf}, - // Block 0x86, offset 0x439 + // Block 0x85, offset 0x41e {value: 0x0038, lo: 0x0f}, {value: 0x9db1, lo: 0x80, hi: 0x83}, {value: 0x9e59, lo: 0x84, hi: 0x85}, @@ -3572,7 +3577,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xa869, lo: 0xbc, hi: 0xbc}, {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, - // Block 0x87, offset 0x449 + // Block 0x86, offset 0x42e {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8c}, @@ -3583,24 +3588,24 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xbc, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbe}, {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x88, offset 0x453 + // Block 0x87, offset 0x438 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0x89, offset 0x458 + // Block 0x88, offset 0x43d {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x8a, offset 0x45b + // Block 0x89, offset 0x440 {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x82}, {value: 0x0040, lo: 0x83, hi: 0x86}, {value: 0x0018, lo: 0x87, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x8b, offset 0x461 + // Block 0x8a, offset 0x446 {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x8e}, {value: 0x0040, lo: 0x8f, hi: 0x8f}, @@ -3608,31 +3613,31 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x9c, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xa0}, {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0x8c, offset 0x468 + // Block 0x8b, offset 0x44d {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbc}, - {value: 0x1308, lo: 0xbd, hi: 0xbd}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x8d, offset 0x46d + // Block 0x8c, offset 0x452 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0x9c}, {value: 0x0040, lo: 0x9d, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x8e, offset 0x471 + // Block 0x8d, offset 0x456 {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x90}, {value: 0x0040, lo: 0x91, hi: 0x9f}, - {value: 0x1308, lo: 0xa0, hi: 0xa0}, + {value: 0x3308, lo: 0xa0, hi: 0xa0}, {value: 0x0018, lo: 0xa1, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x8f, offset 0x477 + // Block 0x8e, offset 0x45c {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x90, offset 0x47c + {value: 0x0040, lo: 0xa4, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xbf}, + // Block 0x8f, offset 0x461 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x81}, @@ -3640,22 +3645,22 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0x8a, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xba}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x91, offset 0x485 + // Block 0x90, offset 0x46a {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x92, offset 0x48a + // Block 0x91, offset 0x46f {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x87}, {value: 0x0008, lo: 0x88, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x93, offset 0x490 + // Block 0x92, offset 0x475 {value: 0x0000, lo: 0x06}, {value: 0xe145, lo: 0x80, hi: 0x87}, {value: 0xe1c5, lo: 0x88, hi: 0x8f}, @@ -3663,7 +3668,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x8ad5, lo: 0x98, hi: 0x9f}, {value: 0x8aed, lo: 0xa0, hi: 0xa7}, {value: 0x0008, lo: 0xa8, hi: 0xbf}, - // Block 0x94, offset 0x497 + // Block 0x93, offset 0x47c {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, @@ -3671,7 +3676,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xaa, hi: 0xaf}, {value: 0x8aed, lo: 0xb0, hi: 0xb7}, {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, - // Block 0x95, offset 0x49e + // Block 0x94, offset 0x483 {value: 0x0000, lo: 0x06}, {value: 0xe145, lo: 0x80, hi: 0x87}, {value: 0xe1c5, lo: 0x88, hi: 0x8f}, @@ -3679,173 +3684,176 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x94, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0xbb}, {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x96, offset 0x4a5 + // Block 0x95, offset 0x48a {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x97, offset 0x4a9 + // Block 0x96, offset 0x48e {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xae}, {value: 0x0018, lo: 0xaf, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x98, offset 0x4ae + // Block 0x97, offset 0x493 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x99, offset 0x4b1 + // Block 0x98, offset 0x496 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xbf}, - // Block 0x9a, offset 0x4b6 + // Block 0x99, offset 0x49b {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x85}, + {value: 0x0808, lo: 0x80, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0808, lo: 0x88, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0xb5}, + {value: 0x0808, lo: 0x8a, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb6}, - {value: 0x0008, lo: 0xb7, hi: 0xb8}, + {value: 0x0808, lo: 0xb7, hi: 0xb8}, {value: 0x0040, lo: 0xb9, hi: 0xbb}, - {value: 0x0008, lo: 0xbc, hi: 0xbc}, + {value: 0x0808, lo: 0xbc, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x9b, offset 0x4c2 + {value: 0x0808, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x4a7 {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0808, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x96}, - {value: 0x0018, lo: 0x97, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x9c, offset 0x4c8 + {value: 0x0818, lo: 0x97, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb6}, + {value: 0x0818, lo: 0xb7, hi: 0xbf}, + // Block 0x9b, offset 0x4ad {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0808, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0xa6}, - {value: 0x0018, lo: 0xa7, hi: 0xaf}, + {value: 0x0818, lo: 0xa7, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x9d, offset 0x4cd + // Block 0x9c, offset 0x4b2 {value: 0x0000, lo: 0x06}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xb3}, - {value: 0x0008, lo: 0xb4, hi: 0xb5}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbf}, - // Block 0x9e, offset 0x4d4 + {value: 0x0818, lo: 0xbb, hi: 0xbf}, + // Block 0x9d, offset 0x4b9 {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0018, lo: 0x96, hi: 0x9b}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0818, lo: 0x96, hi: 0x9b}, {value: 0x0040, lo: 0x9c, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb9}, + {value: 0x0808, lo: 0xa0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0x9f, offset 0x4dc + {value: 0x0818, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x4c1 {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xb7}, + {value: 0x0808, lo: 0x80, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbb}, - {value: 0x0018, lo: 0xbc, hi: 0xbd}, - {value: 0x0008, lo: 0xbe, hi: 0xbf}, - // Block 0xa0, offset 0x4e1 + {value: 0x0818, lo: 0xbc, hi: 0xbd}, + {value: 0x0808, lo: 0xbe, hi: 0xbf}, + // Block 0x9f, offset 0x4c6 {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0x0818, lo: 0x80, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x0018, lo: 0x92, hi: 0xbf}, - // Block 0xa1, offset 0x4e5 + {value: 0x0818, lo: 0x92, hi: 0xbf}, + // Block 0xa0, offset 0x4ca {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x83}, + {value: 0x0808, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x1308, lo: 0x85, hi: 0x86}, + {value: 0x3308, lo: 0x85, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x8b}, - {value: 0x1308, lo: 0x8c, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x93}, + {value: 0x3308, lo: 0x8c, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x94}, - {value: 0x0008, lo: 0x95, hi: 0x97}, + {value: 0x0808, lo: 0x95, hi: 0x97}, {value: 0x0040, lo: 0x98, hi: 0x98}, - {value: 0x0008, lo: 0x99, hi: 0xb3}, + {value: 0x0808, lo: 0x99, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xba}, + {value: 0x3308, lo: 0xb8, hi: 0xba}, {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xa2, offset 0x4f5 + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa1, offset 0x4da {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0818, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x98}, + {value: 0x0818, lo: 0x90, hi: 0x98}, {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbc}, - {value: 0x0018, lo: 0xbd, hi: 0xbf}, - // Block 0xa3, offset 0x4fc + {value: 0x0808, lo: 0xa0, hi: 0xbc}, + {value: 0x0818, lo: 0xbd, hi: 0xbf}, + // Block 0xa2, offset 0x4e1 {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xa4, offset 0x500 + // Block 0xa3, offset 0x4e5 {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0808, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb8}, {value: 0x0018, lo: 0xb9, hi: 0xbf}, - // Block 0xa5, offset 0x504 + // Block 0xa4, offset 0x4e9 {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0808, lo: 0x80, hi: 0x95}, {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0018, lo: 0x98, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x0818, lo: 0x98, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xbf}, - // Block 0xa6, offset 0x50b + {value: 0x0818, lo: 0xb8, hi: 0xbf}, + // Block 0xa5, offset 0x4f0 + {value: 0x0000, lo: 0x01}, + {value: 0x0808, lo: 0x80, hi: 0xbf}, + // Block 0xa6, offset 0x4f2 {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0808, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0xa7, offset 0x50e + // Block 0xa7, offset 0x4f5 {value: 0x0000, lo: 0x02}, {value: 0x03dd, lo: 0x80, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xa8, offset 0x511 + // Block 0xa8, offset 0x4f8 {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0808, lo: 0x80, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbf}, - // Block 0xa9, offset 0x515 + {value: 0x0818, lo: 0xba, hi: 0xbf}, + // Block 0xa9, offset 0x4fc {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbe}, + {value: 0x0818, lo: 0xa0, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xaa, offset 0x519 + // Block 0xaa, offset 0x500 {value: 0x0000, lo: 0x05}, - {value: 0x1008, lo: 0x80, hi: 0x80}, - {value: 0x1308, lo: 0x81, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x51f + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x506 {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x85}, - {value: 0x1b08, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x80, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, {value: 0x0018, lo: 0x87, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x91}, {value: 0x0018, lo: 0x92, hi: 0xa5}, {value: 0x0008, lo: 0xa6, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xac, offset 0x528 + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xac, offset 0x50f {value: 0x0000, lo: 0x0b}, - {value: 0x1308, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb6}, - {value: 0x1008, lo: 0xb7, hi: 0xb8}, - {value: 0x1b08, lo: 0xb9, hi: 0xb9}, - {value: 0x1308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, {value: 0x0018, lo: 0xbb, hi: 0xbc}, {value: 0x0340, lo: 0xbd, hi: 0xbd}, {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0xad, offset 0x534 + // Block 0xad, offset 0x51b {value: 0x0000, lo: 0x06}, {value: 0x0018, lo: 0x80, hi: 0x81}, {value: 0x0040, lo: 0x82, hi: 0x8f}, @@ -3853,39 +3861,39 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xa9, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xae, offset 0x53b + // Block 0xae, offset 0x522 {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xa6}, - {value: 0x1308, lo: 0xa7, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xb2}, - {value: 0x1b08, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xa7, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb2}, + {value: 0x3b08, lo: 0xb3, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xb5}, {value: 0x0008, lo: 0xb6, hi: 0xbf}, - // Block 0xaf, offset 0x544 + // Block 0xaf, offset 0x52b {value: 0x0000, lo: 0x07}, {value: 0x0018, lo: 0x80, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb3}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, {value: 0x0018, lo: 0xb4, hi: 0xb5}, {value: 0x0008, lo: 0xb6, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xb0, offset 0x54c + // Block 0xb0, offset 0x533 {value: 0x0000, lo: 0x06}, - {value: 0x1308, lo: 0x80, hi: 0x81}, - {value: 0x1008, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, {value: 0x0008, lo: 0x83, hi: 0xb2}, - {value: 0x1008, lo: 0xb3, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xbe}, - {value: 0x1008, lo: 0xbf, hi: 0xbf}, - // Block 0xb1, offset 0x553 + {value: 0x3008, lo: 0xb3, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xbe}, + {value: 0x3008, lo: 0xbf, hi: 0xbf}, + // Block 0xb1, offset 0x53a {value: 0x0000, lo: 0x0d}, - {value: 0x1808, lo: 0x80, hi: 0x80}, + {value: 0x3808, lo: 0x80, hi: 0x80}, {value: 0x0008, lo: 0x81, hi: 0x84}, {value: 0x0018, lo: 0x85, hi: 0x89}, - {value: 0x1308, lo: 0x8a, hi: 0x8c}, + {value: 0x3308, lo: 0x8a, hi: 0x8c}, {value: 0x0018, lo: 0x8d, hi: 0x8d}, {value: 0x0040, lo: 0x8e, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x9a}, @@ -3895,21 +3903,21 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xa0, hi: 0xa0}, {value: 0x0018, lo: 0xa1, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xb2, offset 0x561 + // Block 0xb2, offset 0x548 {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x91}, {value: 0x0040, lo: 0x92, hi: 0x92}, {value: 0x0008, lo: 0x93, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xae}, - {value: 0x1308, lo: 0xaf, hi: 0xb1}, - {value: 0x1008, lo: 0xb2, hi: 0xb3}, - {value: 0x1308, lo: 0xb4, hi: 0xb4}, - {value: 0x1808, lo: 0xb5, hi: 0xb5}, - {value: 0x1308, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3808, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, {value: 0x0018, lo: 0xb8, hi: 0xbd}, - {value: 0x1308, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbe, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x56e + // Block 0xb3, offset 0x555 {value: 0x0000, lo: 0x0c}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, @@ -3923,28 +3931,28 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0018, lo: 0xa9, hi: 0xa9}, {value: 0x0040, lo: 0xaa, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0xb4, offset 0x57b + // Block 0xb4, offset 0x562 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x1308, lo: 0x9f, hi: 0x9f}, - {value: 0x1008, lo: 0xa0, hi: 0xa2}, - {value: 0x1308, lo: 0xa3, hi: 0xa9}, - {value: 0x1b08, lo: 0xaa, hi: 0xaa}, + {value: 0x3308, lo: 0x9f, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa9}, + {value: 0x3b08, lo: 0xaa, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xb5, offset 0x584 + // Block 0xb5, offset 0x56b {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x1008, lo: 0xb5, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xbf}, - // Block 0xb6, offset 0x588 + {value: 0x3008, lo: 0xb5, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xb6, offset 0x56f {value: 0x0000, lo: 0x0d}, - {value: 0x1008, lo: 0x80, hi: 0x81}, - {value: 0x1b08, lo: 0x82, hi: 0x82}, - {value: 0x1308, lo: 0x83, hi: 0x84}, - {value: 0x1008, lo: 0x85, hi: 0x85}, - {value: 0x1308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, {value: 0x0008, lo: 0x87, hi: 0x8a}, {value: 0x0018, lo: 0x8b, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, @@ -3953,56 +3961,56 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x9c, hi: 0x9c}, {value: 0x0018, lo: 0x9d, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xb7, offset 0x596 + // Block 0xb7, offset 0x57d {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xb8}, - {value: 0x1008, lo: 0xb9, hi: 0xb9}, - {value: 0x1308, lo: 0xba, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbe}, - {value: 0x1308, lo: 0xbf, hi: 0xbf}, - // Block 0xb8, offset 0x59e + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xb8, offset 0x585 {value: 0x0000, lo: 0x0a}, - {value: 0x1308, lo: 0x80, hi: 0x80}, - {value: 0x1008, lo: 0x81, hi: 0x81}, - {value: 0x1b08, lo: 0x82, hi: 0x82}, - {value: 0x1308, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0x85}, {value: 0x0018, lo: 0x86, hi: 0x86}, {value: 0x0008, lo: 0x87, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xb9, offset 0x5a9 + // Block 0xb9, offset 0x590 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x1008, lo: 0xaf, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb5}, + {value: 0x3008, lo: 0xaf, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0x1008, lo: 0xb8, hi: 0xbb}, - {value: 0x1308, lo: 0xbc, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xba, offset 0x5b2 + {value: 0x3008, lo: 0xb8, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xba, offset 0x599 {value: 0x0000, lo: 0x05}, - {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x97}, {value: 0x0008, lo: 0x98, hi: 0x9b}, - {value: 0x1308, lo: 0x9c, hi: 0x9d}, + {value: 0x3308, lo: 0x9c, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xbb, offset 0x5b8 + // Block 0xbb, offset 0x59f {value: 0x0000, lo: 0x07}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1008, lo: 0xb0, hi: 0xb2}, - {value: 0x1308, lo: 0xb3, hi: 0xba}, - {value: 0x1008, lo: 0xbb, hi: 0xbc}, - {value: 0x1308, lo: 0xbd, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xbc, offset 0x5c0 + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbc, offset 0x5a7 {value: 0x0000, lo: 0x08}, - {value: 0x1308, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x83}, {value: 0x0008, lo: 0x84, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x8f}, @@ -4010,60 +4018,97 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xbd, offset 0x5c9 + // Block 0xbd, offset 0x5b0 {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x1308, lo: 0xab, hi: 0xab}, - {value: 0x1008, lo: 0xac, hi: 0xac}, - {value: 0x1308, lo: 0xad, hi: 0xad}, - {value: 0x1008, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb5}, - {value: 0x1808, lo: 0xb6, hi: 0xb6}, - {value: 0x1308, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb5}, + {value: 0x3808, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0xbe, offset 0x5d3 + // Block 0xbe, offset 0x5ba {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x89}, {value: 0x0040, lo: 0x8a, hi: 0xbf}, - // Block 0xbf, offset 0x5d6 + // Block 0xbf, offset 0x5bd {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9f}, - {value: 0x1008, lo: 0xa0, hi: 0xa1}, - {value: 0x1308, lo: 0xa2, hi: 0xa5}, - {value: 0x1008, lo: 0xa6, hi: 0xa6}, - {value: 0x1308, lo: 0xa7, hi: 0xaa}, - {value: 0x1b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xb9}, {value: 0x0018, lo: 0xba, hi: 0xbf}, - // Block 0xc0, offset 0x5e2 + // Block 0xc0, offset 0x5c9 {value: 0x0000, lo: 0x02}, {value: 0x0040, lo: 0x80, hi: 0x9f}, {value: 0x049d, lo: 0xa0, hi: 0xbf}, - // Block 0xc1, offset 0x5e5 + // Block 0xc1, offset 0x5cc {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xa9}, {value: 0x0018, lo: 0xaa, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xbe}, {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0xc2, offset 0x5ea + // Block 0xc2, offset 0x5d1 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0xc3, offset 0x5de + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x3b08, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0xbf}, + // Block 0xc4, offset 0x5e7 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x89}, + {value: 0x3308, lo: 0x8a, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x98}, + {value: 0x3b08, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xa2}, + {value: 0x0040, lo: 0xa3, hi: 0xbf}, + // Block 0xc5, offset 0x5f3 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb8}, {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0xc3, offset 0x5ed + // Block 0xc6, offset 0x5f6 {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x89}, {value: 0x0008, lo: 0x8a, hi: 0xae}, - {value: 0x1008, lo: 0xaf, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x3008, lo: 0xaf, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x1308, lo: 0xb8, hi: 0xbd}, - {value: 0x1008, lo: 0xbe, hi: 0xbe}, - {value: 0x1b08, lo: 0xbf, hi: 0xbf}, - // Block 0xc4, offset 0x5f7 + {value: 0x3308, lo: 0xb8, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xc7, offset 0x600 {value: 0x0000, lo: 0x08}, {value: 0x0008, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x85}, @@ -4073,42 +4118,65 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xad, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb1}, {value: 0x0008, lo: 0xb2, hi: 0xbf}, - // Block 0xc5, offset 0x600 + // Block 0xc8, offset 0x609 {value: 0x0000, lo: 0x0b}, {value: 0x0008, lo: 0x80, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x1308, lo: 0x92, hi: 0xa7}, + {value: 0x3308, lo: 0x92, hi: 0xa7}, {value: 0x0040, lo: 0xa8, hi: 0xa8}, - {value: 0x1008, lo: 0xa9, hi: 0xa9}, - {value: 0x1308, lo: 0xaa, hi: 0xb0}, - {value: 0x1008, lo: 0xb1, hi: 0xb1}, - {value: 0x1308, lo: 0xb2, hi: 0xb3}, - {value: 0x1008, lo: 0xb4, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb6}, + {value: 0x3008, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xaa, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xc6, offset 0x60c + // Block 0xc9, offset 0x615 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xca, offset 0x622 + {value: 0x0000, lo: 0x07}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xcb, offset 0x62a {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xc7, offset 0x60f + // Block 0xcc, offset 0x62d {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xc8, offset 0x614 + // Block 0xcd, offset 0x632 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x83}, {value: 0x0040, lo: 0x84, hi: 0xbf}, - // Block 0xc9, offset 0x617 + // Block 0xce, offset 0x635 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xbf}, - // Block 0xca, offset 0x61a + // Block 0xcf, offset 0x638 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0xbf}, - // Block 0xcb, offset 0x61d + // Block 0xd0, offset 0x63b {value: 0x0000, lo: 0x06}, {value: 0x0008, lo: 0x80, hi: 0x9e}, {value: 0x0040, lo: 0x9f, hi: 0x9f}, @@ -4116,20 +4184,20 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0xaa, hi: 0xad}, {value: 0x0018, lo: 0xae, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xcc, offset 0x624 + // Block 0xd1, offset 0x642 {value: 0x0000, lo: 0x06}, {value: 0x0040, lo: 0x80, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb4}, + {value: 0x3308, lo: 0xb0, hi: 0xb4}, {value: 0x0018, lo: 0xb5, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xcd, offset 0x62b + // Block 0xd2, offset 0x649 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x1308, lo: 0xb0, hi: 0xb6}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0xce, offset 0x62f + // Block 0xd3, offset 0x64d {value: 0x0000, lo: 0x0a}, {value: 0x0008, lo: 0x80, hi: 0x83}, {value: 0x0018, lo: 0x84, hi: 0x85}, @@ -4141,67 +4209,75 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0008, lo: 0xa3, hi: 0xb7}, {value: 0x0040, lo: 0xb8, hi: 0xbc}, {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0xcf, offset 0x63a + // Block 0xd4, offset 0x658 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0xbf}, - // Block 0xd0, offset 0x63d + // Block 0xd5, offset 0x65b {value: 0x0000, lo: 0x05}, {value: 0x0008, lo: 0x80, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x1008, lo: 0x91, hi: 0xbe}, + {value: 0x3008, lo: 0x91, hi: 0xbe}, {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xd1, offset 0x643 + // Block 0xd6, offset 0x661 {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x8e}, - {value: 0x1308, lo: 0x8f, hi: 0x92}, + {value: 0x3308, lo: 0x8f, hi: 0x92}, {value: 0x0008, lo: 0x93, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xd2, offset 0x648 + // Block 0xd7, offset 0x666 {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0xd3, offset 0x64c + {value: 0x0008, lo: 0xa0, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xd8, offset 0x66a {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xd4, offset 0x64f + // Block 0xd9, offset 0x66d {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb2}, {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xd5, offset 0x652 + // Block 0xda, offset 0x670 {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0xbf}, - // Block 0xd6, offset 0x655 + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xdb, offset 0x673 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xdc, offset 0x676 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0xdd, offset 0x679 {value: 0x0000, lo: 0x04}, {value: 0x0008, lo: 0x80, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xaf}, {value: 0x0008, lo: 0xb0, hi: 0xbc}, {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0xd7, offset 0x65a + // Block 0xde, offset 0x67e {value: 0x0000, lo: 0x09}, {value: 0x0008, lo: 0x80, hi: 0x88}, {value: 0x0040, lo: 0x89, hi: 0x8f}, {value: 0x0008, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9b}, {value: 0x0018, lo: 0x9c, hi: 0x9c}, - {value: 0x1308, lo: 0x9d, hi: 0x9e}, + {value: 0x3308, lo: 0x9d, hi: 0x9e}, {value: 0x0018, lo: 0x9f, hi: 0x9f}, {value: 0x03c0, lo: 0xa0, hi: 0xa3}, {value: 0x0040, lo: 0xa4, hi: 0xbf}, - // Block 0xd8, offset 0x664 + // Block 0xdf, offset 0x688 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xd9, offset 0x667 + // Block 0xe0, offset 0x68b {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xa6}, {value: 0x0040, lo: 0xa7, hi: 0xa8}, {value: 0x0018, lo: 0xa9, hi: 0xbf}, - // Block 0xda, offset 0x66b + // Block 0xe1, offset 0x68f {value: 0x0000, lo: 0x0e}, {value: 0x0018, lo: 0x80, hi: 0x9d}, {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, @@ -4211,127 +4287,127 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xb719, lo: 0xa2, hi: 0xa2}, {value: 0xb781, lo: 0xa3, hi: 0xa3}, {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, - {value: 0x1018, lo: 0xa5, hi: 0xa6}, - {value: 0x1318, lo: 0xa7, hi: 0xa9}, + {value: 0x3018, lo: 0xa5, hi: 0xa6}, + {value: 0x3318, lo: 0xa7, hi: 0xa9}, {value: 0x0018, lo: 0xaa, hi: 0xac}, - {value: 0x1018, lo: 0xad, hi: 0xb2}, + {value: 0x3018, lo: 0xad, hi: 0xb2}, {value: 0x0340, lo: 0xb3, hi: 0xba}, - {value: 0x1318, lo: 0xbb, hi: 0xbf}, - // Block 0xdb, offset 0x67a + {value: 0x3318, lo: 0xbb, hi: 0xbf}, + // Block 0xe2, offset 0x69e {value: 0x0000, lo: 0x0b}, - {value: 0x1318, lo: 0x80, hi: 0x82}, + {value: 0x3318, lo: 0x80, hi: 0x82}, {value: 0x0018, lo: 0x83, hi: 0x84}, - {value: 0x1318, lo: 0x85, hi: 0x8b}, + {value: 0x3318, lo: 0x85, hi: 0x8b}, {value: 0x0018, lo: 0x8c, hi: 0xa9}, - {value: 0x1318, lo: 0xaa, hi: 0xad}, + {value: 0x3318, lo: 0xaa, hi: 0xad}, {value: 0x0018, lo: 0xae, hi: 0xba}, {value: 0xb851, lo: 0xbb, hi: 0xbb}, {value: 0xb899, lo: 0xbc, hi: 0xbc}, {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, {value: 0xb949, lo: 0xbe, hi: 0xbe}, {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, - // Block 0xdc, offset 0x686 + // Block 0xe3, offset 0x6aa {value: 0x0000, lo: 0x03}, {value: 0xba19, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0xa8}, {value: 0x0040, lo: 0xa9, hi: 0xbf}, - // Block 0xdd, offset 0x68a + // Block 0xe4, offset 0x6ae {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x1318, lo: 0x82, hi: 0x84}, + {value: 0x3318, lo: 0x82, hi: 0x84}, {value: 0x0018, lo: 0x85, hi: 0x85}, {value: 0x0040, lo: 0x86, hi: 0xbf}, - // Block 0xde, offset 0x68f + // Block 0xe5, offset 0x6b3 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xb1}, {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xdf, offset 0x694 + // Block 0xe6, offset 0x6b8 {value: 0x0000, lo: 0x03}, - {value: 0x1308, lo: 0x80, hi: 0xb6}, + {value: 0x3308, lo: 0x80, hi: 0xb6}, {value: 0x0018, lo: 0xb7, hi: 0xba}, - {value: 0x1308, lo: 0xbb, hi: 0xbf}, - // Block 0xe0, offset 0x698 + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0xe7, offset 0x6bc {value: 0x0000, lo: 0x04}, - {value: 0x1308, lo: 0x80, hi: 0xac}, + {value: 0x3308, lo: 0x80, hi: 0xac}, {value: 0x0018, lo: 0xad, hi: 0xb4}, - {value: 0x1308, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0xe1, offset 0x69d + // Block 0xe8, offset 0x6c1 {value: 0x0000, lo: 0x08}, {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x1308, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x84, hi: 0x84}, {value: 0x0018, lo: 0x85, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0x9f}, + {value: 0x3308, lo: 0x9b, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x1308, lo: 0xa1, hi: 0xaf}, + {value: 0x3308, lo: 0xa1, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xe2, offset 0x6a6 + // Block 0xe9, offset 0x6ca {value: 0x0000, lo: 0x0a}, - {value: 0x1308, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x80, hi: 0x86}, {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x1308, lo: 0x88, hi: 0x98}, + {value: 0x3308, lo: 0x88, hi: 0x98}, {value: 0x0040, lo: 0x99, hi: 0x9a}, - {value: 0x1308, lo: 0x9b, hi: 0xa1}, + {value: 0x3308, lo: 0x9b, hi: 0xa1}, {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x1308, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa3, hi: 0xa4}, {value: 0x0040, lo: 0xa5, hi: 0xa5}, - {value: 0x1308, lo: 0xa6, hi: 0xaa}, + {value: 0x3308, lo: 0xa6, hi: 0xaa}, {value: 0x0040, lo: 0xab, hi: 0xbf}, - // Block 0xe3, offset 0x6b1 + // Block 0xea, offset 0x6d5 {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0808, lo: 0x80, hi: 0x84}, {value: 0x0040, lo: 0x85, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0x8f}, - {value: 0x1308, lo: 0x90, hi: 0x96}, + {value: 0x0818, lo: 0x87, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xe4, offset 0x6b7 + // Block 0xeb, offset 0x6db {value: 0x0000, lo: 0x07}, - {value: 0x0208, lo: 0x80, hi: 0x83}, - {value: 0x1308, lo: 0x84, hi: 0x8a}, + {value: 0x0a08, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x8a}, {value: 0x0040, lo: 0x8b, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0808, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0818, lo: 0x9e, hi: 0x9f}, {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xe5, offset 0x6bf + // Block 0xec, offset 0x6e3 {value: 0x0000, lo: 0x03}, {value: 0x0040, lo: 0x80, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xb1}, {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xe6, offset 0x6c3 + // Block 0xed, offset 0x6e7 {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0xab}, {value: 0x0040, lo: 0xac, hi: 0xaf}, {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0xe7, offset 0x6c7 + // Block 0xee, offset 0x6eb {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x93}, {value: 0x0040, lo: 0x94, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xae}, {value: 0x0040, lo: 0xaf, hi: 0xb0}, {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0xe8, offset 0x6cd + // Block 0xef, offset 0x6f1 {value: 0x0000, lo: 0x05}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0018, lo: 0x81, hi: 0x8f}, {value: 0x0040, lo: 0x90, hi: 0x90}, {value: 0x0018, lo: 0x91, hi: 0xb5}, {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xe9, offset 0x6d3 + // Block 0xf0, offset 0x6f7 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x8f}, {value: 0xc1c1, lo: 0x90, hi: 0x90}, {value: 0x0018, lo: 0x91, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xea, offset 0x6d8 + // Block 0xf1, offset 0x6fc {value: 0x0000, lo: 0x02}, {value: 0x0040, lo: 0x80, hi: 0xa5}, {value: 0x0018, lo: 0xa6, hi: 0xbf}, - // Block 0xeb, offset 0x6db - {value: 0x0000, lo: 0x0d}, + // Block 0xf2, offset 0x6ff + {value: 0x0000, lo: 0x0f}, {value: 0xc7e9, lo: 0x80, hi: 0x80}, {value: 0xc839, lo: 0x81, hi: 0x81}, {value: 0xc889, lo: 0x82, hi: 0x82}, @@ -4344,84 +4420,88 @@ var idnaSparseValues = [1876]valueRange{ {value: 0x0040, lo: 0x89, hi: 0x8f}, {value: 0xcab9, lo: 0x90, hi: 0x90}, {value: 0xcad9, lo: 0x91, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xbf}, - // Block 0xec, offset 0x6e9 + {value: 0x0040, lo: 0x92, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xbf}, + // Block 0xf3, offset 0x70f {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x92}, - {value: 0x0040, lo: 0x93, hi: 0x9f}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xac}, {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xed, offset 0x6f0 + {value: 0x0018, lo: 0xb0, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xf4, offset 0x716 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0xb3}, {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0xee, offset 0x6f3 + // Block 0xf5, offset 0x719 {value: 0x0000, lo: 0x02}, {value: 0x0018, lo: 0x80, hi: 0x94}, {value: 0x0040, lo: 0x95, hi: 0xbf}, - // Block 0xef, offset 0x6f6 + // Block 0xf6, offset 0x71c {value: 0x0000, lo: 0x03}, {value: 0x0018, lo: 0x80, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0xf0, offset 0x6fa + // Block 0xf7, offset 0x720 {value: 0x0000, lo: 0x05}, {value: 0x0018, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0x99}, {value: 0x0040, lo: 0x9a, hi: 0x9f}, {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0xf1, offset 0x700 + // Block 0xf8, offset 0x726 {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x87}, {value: 0x0040, lo: 0x88, hi: 0x8f}, {value: 0x0018, lo: 0x90, hi: 0xad}, {value: 0x0040, lo: 0xae, hi: 0xbf}, - // Block 0xf2, offset 0x705 - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb2}, - {value: 0x0018, lo: 0xb3, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xf3, offset 0x70f + // Block 0xf9, offset 0x72b {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x8b}, {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xf4, offset 0x714 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xbf}, - // Block 0xf5, offset 0x717 + {value: 0x0018, lo: 0x90, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xfa, offset 0x730 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0xfb, offset 0x735 {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xbf}, + // Block 0xfc, offset 0x738 + {value: 0x0000, lo: 0x04}, {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0xbf}, - // Block 0xf6, offset 0x71a + {value: 0x0040, lo: 0x81, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0xfd, offset 0x73d {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0x96}, {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xf7, offset 0x71d + // Block 0xfe, offset 0x740 {value: 0x0000, lo: 0x02}, {value: 0x0008, lo: 0x80, hi: 0xb4}, {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xf8, offset 0x720 + // Block 0xff, offset 0x743 {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0x9d}, {value: 0x0040, lo: 0x9e, hi: 0x9f}, {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0xf9, offset 0x724 - {value: 0x0000, lo: 0x02}, + // Block 0x100, offset 0x747 + {value: 0x0000, lo: 0x03}, {value: 0x0008, lo: 0x80, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xbf}, - // Block 0xfa, offset 0x727 + {value: 0x0040, lo: 0xa2, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x101, offset 0x74b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x102, offset 0x74e {value: 0x0020, lo: 0x0f}, {value: 0xdeb9, lo: 0x80, hi: 0x89}, {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, @@ -4438,7 +4518,7 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xe4f9, lo: 0xba, hi: 0xba}, {value: 0x8edd, lo: 0xbb, hi: 0xbb}, {value: 0xe519, lo: 0xbc, hi: 0xbf}, - // Block 0xfb, offset 0x737 + // Block 0x103, offset 0x75e {value: 0x0020, lo: 0x10}, {value: 0x937d, lo: 0x80, hi: 0x80}, {value: 0xf099, lo: 0x81, hi: 0x86}, @@ -4455,23 +4535,23 @@ var idnaSparseValues = [1876]valueRange{ {value: 0xf4d9, lo: 0xae, hi: 0xaf}, {value: 0x94dd, lo: 0xb0, hi: 0xb1}, {value: 0xf519, lo: 0xb2, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xfc, offset 0x748 + {value: 0x2040, lo: 0xbf, hi: 0xbf}, + // Block 0x104, offset 0x76f {value: 0x0000, lo: 0x04}, {value: 0x0040, lo: 0x80, hi: 0x80}, {value: 0x0340, lo: 0x81, hi: 0x81}, {value: 0x0040, lo: 0x82, hi: 0x9f}, {value: 0x0340, lo: 0xa0, hi: 0xbf}, - // Block 0xfd, offset 0x74d + // Block 0x105, offset 0x774 {value: 0x0000, lo: 0x01}, {value: 0x0340, lo: 0x80, hi: 0xbf}, - // Block 0xfe, offset 0x74f + // Block 0x106, offset 0x776 {value: 0x0000, lo: 0x01}, - {value: 0x13c0, lo: 0x80, hi: 0xbf}, - // Block 0xff, offset 0x751 + {value: 0x33c0, lo: 0x80, hi: 0xbf}, + // Block 0x107, offset 0x778 {value: 0x0000, lo: 0x02}, - {value: 0x13c0, lo: 0x80, hi: 0xaf}, + {value: 0x33c0, lo: 0x80, hi: 0xaf}, {value: 0x0040, lo: 0xb0, hi: 0xbf}, } -// Total table size 41559 bytes (40KiB); checksum: F4A1FA4E +// Total table size 42115 bytes (41KiB); checksum: F4A1FA4E diff --git a/vendor/golang.org/x/text/internal/export/idna/trieval.go b/vendor/golang.org/x/text/internal/export/idna/trieval.go index 63cb03b59..7a8cf889b 100644 --- a/vendor/golang.org/x/text/internal/export/idna/trieval.go +++ b/vendor/golang.org/x/text/internal/export/idna/trieval.go @@ -26,9 +26,9 @@ package idna // 15..3 index into xor or mapping table // } // } else { -// 15..13 unused -// 12 modifier (including virama) -// 11 virama modifier +// 15..14 unused +// 13 mayNeedNorm +// 12..11 attributes // 10..8 joining type // 7..3 category type // } @@ -49,15 +49,20 @@ const ( joinShift = 8 joinMask = 0x07 - viramaModifier = 0x0800 + // Attributes + attributesMask = 0x1800 + viramaModifier = 0x1800 modifier = 0x1000 + rtl = 0x0800 + + mayNeedNorm = 0x2000 ) // A category corresponds to a category defined in the IDNA mapping table. type category uint16 const ( - unknown category = 0 // not defined currently in unicode. + unknown category = 0 // not currently defined in unicode. mapped category = 1 disallowedSTD3Mapped category = 2 deviation category = 3 @@ -110,5 +115,5 @@ func (c info) isModifier() bool { } func (c info) isViramaModifier() bool { - return c&(viramaModifier|catSmallMask) == viramaModifier + return c&(attributesMask|catSmallMask) == viramaModifier } diff --git a/vendor/golang.org/x/text/internal/format/format.go b/vendor/golang.org/x/text/internal/format/format.go index c70bc0fe2..ee1c57a3c 100644 --- a/vendor/golang.org/x/text/internal/format/format.go +++ b/vendor/golang.org/x/text/internal/format/format.go @@ -24,20 +24,18 @@ type State interface { // Language reports the requested language in which to render a message. Language() language.Tag + // TODO: consider this and removing rune from the Format method in the + // Formatter interface. + // + // Verb returns the format variant to render, analogous to the types used + // in fmt. Use 'v' for the default or only variant. + // Verb() rune + // TODO: more info: - // - sentence context - // - user preferences, like measurement systems - // - options + // - sentence context such as linguistic features passed by the translator. } -// A Statement is a Var or an Expression. -type Statement interface { - statement() +// Formatter is analogous to fmt.Formatter. +type Formatter interface { + Format(state State, verb rune) } - -// A String a literal string format. -type String string - -func (String) statement() {} - -// TODO: Select, Var, Case, StatementSequence diff --git a/vendor/golang.org/x/text/internal/format/parser.go b/vendor/golang.org/x/text/internal/format/parser.go new file mode 100644 index 000000000..f4f37f429 --- /dev/null +++ b/vendor/golang.org/x/text/internal/format/parser.go @@ -0,0 +1,357 @@ +// Copyright 2017 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 format + +import ( + "reflect" + "unicode/utf8" +) + +// A Parser parses a format string. The result from the parse are set in the +// struct fields. +type Parser struct { + Verb rune + + WidthPresent bool + PrecPresent bool + Minus bool + Plus bool + Sharp bool + Space bool + Zero bool + + // For the formats %+v %#v, we set the plusV/sharpV flags + // and clear the plus/sharp flags since %+v and %#v are in effect + // different, flagless formats set at the top level. + PlusV bool + SharpV bool + + HasIndex bool + + Width int + Prec int // precision + + // retain arguments across calls. + Args []interface{} + // retain current argument number across calls + ArgNum int + + // reordered records whether the format string used argument reordering. + Reordered bool + // goodArgNum records whether the most recent reordering directive was valid. + goodArgNum bool + + // position info + format string + startPos int + endPos int + Status Status +} + +// Reset initializes a parser to scan format strings for the given args. +func (p *Parser) Reset(args []interface{}) { + p.Args = args + p.ArgNum = 0 + p.startPos = 0 + p.Reordered = false +} + +// Text returns the part of the format string that was parsed by the last call +// to Scan. It returns the original substitution clause if the current scan +// parsed a substitution. +func (p *Parser) Text() string { return p.format[p.startPos:p.endPos] } + +// SetFormat sets a new format string to parse. It does not reset the argument +// count. +func (p *Parser) SetFormat(format string) { + p.format = format + p.startPos = 0 + p.endPos = 0 +} + +// Status indicates the result type of a call to Scan. +type Status int + +const ( + StatusText Status = iota + StatusSubstitution + StatusBadWidthSubstitution + StatusBadPrecSubstitution + StatusNoVerb + StatusBadArgNum + StatusMissingArg +) + +// ClearFlags reset the parser to default behavior. +func (p *Parser) ClearFlags() { + p.WidthPresent = false + p.PrecPresent = false + p.Minus = false + p.Plus = false + p.Sharp = false + p.Space = false + p.Zero = false + + p.PlusV = false + p.SharpV = false + + p.HasIndex = false +} + +// Scan scans the next part of the format string and sets the status to +// indicate whether it scanned a string literal, substitution or error. +func (p *Parser) Scan() bool { + p.Status = StatusText + format := p.format + end := len(format) + if p.endPos >= end { + return false + } + afterIndex := false // previous item in format was an index like [3]. + + p.startPos = p.endPos + p.goodArgNum = true + i := p.startPos + for i < end && format[i] != '%' { + i++ + } + if i > p.startPos { + p.endPos = i + return true + } + // Process one verb + i++ + + p.Status = StatusSubstitution + + // Do we have flags? + p.ClearFlags() + +simpleFormat: + for ; i < end; i++ { + c := p.format[i] + switch c { + case '#': + p.Sharp = true + case '0': + p.Zero = !p.Minus // Only allow zero padding to the left. + case '+': + p.Plus = true + case '-': + p.Minus = true + p.Zero = false // Do not pad with zeros to the right. + case ' ': + p.Space = true + default: + // Fast path for common case of ascii lower case simple verbs + // without precision or width or argument indices. + if 'a' <= c && c <= 'z' && p.ArgNum < len(p.Args) { + if c == 'v' { + // Go syntax + p.SharpV = p.Sharp + p.Sharp = false + // Struct-field syntax + p.PlusV = p.Plus + p.Plus = false + } + p.Verb = rune(c) + p.ArgNum++ + p.endPos = i + 1 + return true + } + // Format is more complex than simple flags and a verb or is malformed. + break simpleFormat + } + } + + // Do we have an explicit argument index? + i, afterIndex = p.updateArgNumber(format, i) + + // Do we have width? + if i < end && format[i] == '*' { + i++ + p.Width, p.WidthPresent = p.intFromArg() + + if !p.WidthPresent { + p.Status = StatusBadWidthSubstitution + } + + // We have a negative width, so take its value and ensure + // that the minus flag is set + if p.Width < 0 { + p.Width = -p.Width + p.Minus = true + p.Zero = false // Do not pad with zeros to the right. + } + afterIndex = false + } else { + p.Width, p.WidthPresent, i = parsenum(format, i, end) + if afterIndex && p.WidthPresent { // "%[3]2d" + p.goodArgNum = false + } + } + + // Do we have precision? + if i+1 < end && format[i] == '.' { + i++ + if afterIndex { // "%[3].2d" + p.goodArgNum = false + } + i, afterIndex = p.updateArgNumber(format, i) + if i < end && format[i] == '*' { + i++ + p.Prec, p.PrecPresent = p.intFromArg() + // Negative precision arguments don't make sense + if p.Prec < 0 { + p.Prec = 0 + p.PrecPresent = false + } + if !p.PrecPresent { + p.Status = StatusBadPrecSubstitution + } + afterIndex = false + } else { + p.Prec, p.PrecPresent, i = parsenum(format, i, end) + if !p.PrecPresent { + p.Prec = 0 + p.PrecPresent = true + } + } + } + + if !afterIndex { + i, afterIndex = p.updateArgNumber(format, i) + } + p.HasIndex = afterIndex + + if i >= end { + p.endPos = i + p.Status = StatusNoVerb + return true + } + + verb, w := utf8.DecodeRuneInString(format[i:]) + p.endPos = i + w + p.Verb = verb + + switch { + case verb == '%': // Percent does not absorb operands and ignores f.wid and f.prec. + p.startPos = p.endPos - 1 + p.Status = StatusText + case !p.goodArgNum: + p.Status = StatusBadArgNum + case p.ArgNum >= len(p.Args): // No argument left over to print for the current verb. + p.Status = StatusMissingArg + case verb == 'v': + // Go syntax + p.SharpV = p.Sharp + p.Sharp = false + // Struct-field syntax + p.PlusV = p.Plus + p.Plus = false + fallthrough + default: + p.ArgNum++ + } + return true +} + +// intFromArg gets the ArgNumth element of Args. On return, isInt reports +// whether the argument has integer type. +func (p *Parser) intFromArg() (num int, isInt bool) { + if p.ArgNum < len(p.Args) { + arg := p.Args[p.ArgNum] + num, isInt = arg.(int) // Almost always OK. + if !isInt { + // Work harder. + switch v := reflect.ValueOf(arg); v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + n := v.Int() + if int64(int(n)) == n { + num = int(n) + isInt = true + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + n := v.Uint() + if int64(n) >= 0 && uint64(int(n)) == n { + num = int(n) + isInt = true + } + default: + // Already 0, false. + } + } + p.ArgNum++ + if tooLarge(num) { + num = 0 + isInt = false + } + } + return +} + +// parseArgNumber returns the value of the bracketed number, minus 1 +// (explicit argument numbers are one-indexed but we want zero-indexed). +// The opening bracket is known to be present at format[0]. +// The returned values are the index, the number of bytes to consume +// up to the closing paren, if present, and whether the number parsed +// ok. The bytes to consume will be 1 if no closing paren is present. +func parseArgNumber(format string) (index int, wid int, ok bool) { + // There must be at least 3 bytes: [n]. + if len(format) < 3 { + return 0, 1, false + } + + // Find closing bracket. + for i := 1; i < len(format); i++ { + if format[i] == ']' { + width, ok, newi := parsenum(format, 1, i) + if !ok || newi != i { + return 0, i + 1, false + } + return width - 1, i + 1, true // arg numbers are one-indexed and skip paren. + } + } + return 0, 1, false +} + +// updateArgNumber returns the next argument to evaluate, which is either the value of the passed-in +// argNum or the value of the bracketed integer that begins format[i:]. It also returns +// the new value of i, that is, the index of the next byte of the format to process. +func (p *Parser) updateArgNumber(format string, i int) (newi int, found bool) { + if len(format) <= i || format[i] != '[' { + return i, false + } + p.Reordered = true + index, wid, ok := parseArgNumber(format[i:]) + if ok && 0 <= index && index < len(p.Args) { + p.ArgNum = index + return i + wid, true + } + p.goodArgNum = false + return i + wid, ok +} + +// tooLarge reports whether the magnitude of the integer is +// too large to be used as a formatting width or precision. +func tooLarge(x int) bool { + const max int = 1e6 + return x > max || x < -max +} + +// parsenum converts ASCII to integer. num is 0 (and isnum is false) if no number present. +func parsenum(s string, start, end int) (num int, isnum bool, newi int) { + if start >= end { + return 0, false, end + } + for newi = start; newi < end && '0' <= s[newi] && s[newi] <= '9'; newi++ { + if tooLarge(num) { + return 0, false, end // Overflow; crazy long number most likely. + } + num = num*10 + int(s[newi]-'0') + isnum = true + } + return +} diff --git a/vendor/golang.org/x/text/internal/format/parser_test.go b/vendor/golang.org/x/text/internal/format/parser_test.go new file mode 100644 index 000000000..72299082a --- /dev/null +++ b/vendor/golang.org/x/text/internal/format/parser_test.go @@ -0,0 +1,32 @@ +// Copyright 2017 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 format + +import "testing" + +// TODO: most of Parser is tested in x/message. Move some tests here. + +func TestParsenum(t *testing.T) { + testCases := []struct { + s string + start, end int + num int + isnum bool + newi int + }{ + {"a123", 0, 4, 0, false, 0}, + {"1234", 1, 1, 0, false, 1}, + {"123a", 0, 4, 123, true, 3}, + {"12a3", 0, 4, 12, true, 2}, + {"1234", 0, 4, 1234, true, 4}, + {"1a234", 1, 3, 0, false, 1}, + } + for _, tt := range testCases { + num, isnum, newi := parsenum(tt.s, tt.start, tt.end) + if num != tt.num || isnum != tt.isnum || newi != tt.newi { + t.Errorf("parsenum(%q, %d, %d) = %d, %v, %d, want %d, %v, %d", tt.s, tt.start, tt.end, num, isnum, newi, tt.num, tt.isnum, tt.newi) + } + } +} diff --git a/vendor/golang.org/x/text/internal/number/decimal.go b/vendor/golang.org/x/text/internal/number/decimal.go index ef5df60be..9b4035ec4 100644 --- a/vendor/golang.org/x/text/internal/number/decimal.go +++ b/vendor/golang.org/x/text/internal/number/decimal.go @@ -25,37 +25,74 @@ const ( numModes ) -// A RoundingContext indicates how a number should be converted to digits. -type RoundingContext struct { - Mode RoundingMode - Increment int32 // if > 0, round to Increment * 10^-Scale - - Precision int32 // maximum number of significant digits. - Scale int32 // maximum number of decimals after the dot. -} - const maxIntDigits = 20 -// A Decimal represents floating point number represented in digits of the base -// in which a number is to be displayed. Digits represents a number [0, 1.0), -// and the absolute value represented by Decimal is Digits * 10^Exp. -// Leading and trailing zeros may be omitted and Exp may point outside a valid -// position in Digits. +// A Decimal represents a floating point number in decimal format. +// Digits represents a number [0, 1.0), and the absolute value represented by +// Decimal is Digits * 10^Exp. Leading and trailing zeros may be omitted and Exp +// may point outside a valid position in Digits. // // Examples: // Number Decimal // 12345 Digits: [1, 2, 3, 4, 5], Exp: 5 // 12.345 Digits: [1, 2, 3, 4, 5], Exp: 2 // 12000 Digits: [1, 2], Exp: 5 +// 12000.00 Digits: [1, 2], Exp: 5 // 0.00123 Digits: [1, 2, 3], Exp: -2 +// 0 Digits: [], Exp: 0 type Decimal struct { + digits + + buf [maxIntDigits]byte +} + +type digits struct { Digits []byte // mantissa digits, big-endian Exp int32 // exponent Neg bool Inf bool // Takes precedence over Digits and Exp. NaN bool // Takes precedence over Inf. +} - buf [maxIntDigits]byte +// Digits represents a floating point number represented in digits of the +// base in which a number is to be displayed. It is similar to Decimal, but +// keeps track of trailing fraction zeros and the comma placement for +// engineering notation. Digits must have at least one digit. +// +// Examples: +// Number Decimal +// decimal +// 12345 Digits: [1, 2, 3, 4, 5], Exp: 5 End: 5 +// 12.345 Digits: [1, 2, 3, 4, 5], Exp: 2 End: 5 +// 12000 Digits: [1, 2], Exp: 5 End: 5 +// 12000.00 Digits: [1, 2], Exp: 5 End: 7 +// 0.00123 Digits: [1, 2, 3], Exp: -2 End: 3 +// 0 Digits: [], Exp: 0 End: 1 +// scientific (actual exp is Exp - Comma) +// 0e0 Digits: [0], Exp: 1, End: 1, Comma: 1 +// .0e0 Digits: [0], Exp: 0, End: 1, Comma: 0 +// 0.0e0 Digits: [0], Exp: 1, End: 2, Comma: 1 +// 1.23e4 Digits: [1, 2, 3], Exp: 5, End: 3, Comma: 1 +// .123e5 Digits: [1, 2, 3], Exp: 5, End: 3, Comma: 0 +// engineering +// 12.3e3 Digits: [1, 2, 3], Exp: 5, End: 3, Comma: 2 +type Digits struct { + digits + // End indicates the end position of the number. + End int32 // For decimals Exp <= End. For scientific len(Digits) <= End. + // Comma is used for the comma position for scientific (always 0 or 1) and + // engineering notation (always 0, 1, 2, or 3). + Comma uint8 + // IsScientific indicates whether this number is to be rendered as a + // scientific number. + IsScientific bool +} + +func (d *Digits) NumFracDigits() int { + if d.Exp >= d.End { + return 0 + } + return int(d.End - d.Exp) } // normalize returns a new Decimal with leading and trailing zeros removed. @@ -137,7 +174,7 @@ func appendZeros(buf []byte, n int) []byte { return buf } -func (d *Decimal) round(mode RoundingMode, n int) { +func (d *digits) round(mode RoundingMode, n int) { if n >= len(d.Digits) { return } @@ -213,7 +250,7 @@ func (r RoundingMode) roundFloat(x float64) float64 { return i } -func (x *Decimal) roundUp(n int) { +func (x *digits) roundUp(n int) { if n < 0 || n >= len(x.Digits) { return // nothing to do } @@ -234,7 +271,7 @@ func (x *Decimal) roundUp(n int) { // x already trimmed } -func (x *Decimal) roundDown(n int) { +func (x *digits) roundDown(n int) { if n < 0 || n >= len(x.Digits) { return // nothing to do } @@ -244,7 +281,7 @@ func (x *Decimal) roundDown(n int) { // trim cuts off any trailing zeros from x's mantissa; // they are meaningless for the value of x. -func trim(x *Decimal) { +func trim(x *digits) { i := len(x.Digits) for i > 0 && x.Digits[i-1] == 0 { i-- @@ -258,7 +295,7 @@ func trim(x *Decimal) { // A Converter converts a number into decimals according to the given rounding // criteria. type Converter interface { - Convert(d *Decimal, r *RoundingContext) + Convert(d *Decimal, r RoundingContext) } const ( @@ -268,7 +305,7 @@ const ( // Convert converts the given number to the decimal representation using the // supplied RoundingContext. -func (d *Decimal) Convert(r *RoundingContext, number interface{}) { +func (d *Decimal) Convert(r RoundingContext, number interface{}) { switch f := number.(type) { case Converter: d.clear() @@ -298,6 +335,8 @@ func (d *Decimal) Convert(r *RoundingContext, number interface{}) { case uint64: d.ConvertInt(r, unsigned, f) + default: + d.NaN = true // TODO: // case string: if produced by strconv, allows for easy arbitrary pos. // case reflect.Value: @@ -310,7 +349,7 @@ func (d *Decimal) Convert(r *RoundingContext, number interface{}) { } // ConvertInt converts an integer to decimals. -func (d *Decimal) ConvertInt(r *RoundingContext, signed bool, x uint64) { +func (d *Decimal) ConvertInt(r RoundingContext, signed bool, x uint64) { if r.Increment > 0 { // TODO: if uint64 is too large, fall back to float64 if signed { @@ -330,12 +369,30 @@ func (d *Decimal) ConvertInt(r *RoundingContext, signed bool, x uint64) { } // ConvertFloat converts a floating point number to decimals. -func (d *Decimal) ConvertFloat(r *RoundingContext, x float64, size int) { +func (d *Decimal) ConvertFloat(r RoundingContext, x float64, size int) { d.clear() if math.IsNaN(x) { d.NaN = true return } + // Simple case: decimal notation + if r.Increment > 0 { + scale := int(r.IncrementScale) + mult := 1.0 + if scale > len(scales) { + mult = math.Pow(10, float64(scale)) + } else { + mult = scales[scale] + } + // We multiply x instead of dividing inc as it gives less rounding + // issues. + x *= mult + x /= float64(r.Increment) + x = r.Mode.roundFloat(x) + x *= float64(r.Increment) + x /= mult + } + abs := x if x < 0 { d.Neg = true @@ -345,63 +402,71 @@ func (d *Decimal) ConvertFloat(r *RoundingContext, x float64, size int) { d.Inf = true return } - // Simple case: decimal notation - if r.Scale > 0 || r.Increment > 0 || r.Precision == 0 { - if int(r.Scale) > len(scales) { - x *= math.Pow(10, float64(r.Scale)) - } else { - x *= scales[r.Scale] + + // By default we get the exact decimal representation. + verb := byte('g') + prec := -1 + // As the strconv API does not return the rounding accuracy, we can only + // round using ToNearestEven. + if r.Mode == ToNearestEven { + if n := r.RoundSignificantDigits(); n >= 0 { + prec = n + } else if n = r.RoundFractionDigits(); n >= 0 { + prec = n + verb = 'f' } - if r.Increment > 0 { - inc := float64(r.Increment) - x /= float64(inc) - x = r.Mode.roundFloat(x) - x *= inc - } else { - x = r.Mode.roundFloat(x) + } else { + // TODO: At this point strconv's rounding is imprecise to the point that + // it is not useable for this purpose. + // See https://github.com/golang/go/issues/21714 + // If rounding is requested, we ask for a large number of digits and + // round from there to simulate rounding only once. + // Ideally we would have strconv export an AppendDigits that would take + // a rounding mode and/or return an accuracy. Something like this would + // work: + // AppendDigits(dst []byte, x float64, base, size, prec int) (digits []byte, exp, accuracy int) + hasPrec := r.RoundSignificantDigits() >= 0 + hasScale := r.RoundFractionDigits() >= 0 + if hasPrec || hasScale { + // prec is the number of mantissa bits plus some extra for safety. + // We need at least the number of mantissa bits as decimals to + // accurately represent the floating point without rounding, as each + // bit requires one more decimal to represent: 0.5, 0.25, 0.125, ... + prec = 60 } - d.fillIntDigits(uint64(math.Abs(x))) - d.Exp = int32(len(d.Digits)) - r.Scale - return } - // Nasty case (for non-decimal notation). - // Asides from being inefficient, this result is also wrong as it will - // apply ToNearestEven rounding regardless of the user setting. - // TODO: expose functionality in strconv so we can avoid this hack. - // Something like this would work: - // AppendDigits(dst []byte, x float64, base, size, prec int) (digits []byte, exp, accuracy int) - // TODO: This only supports the nearest even rounding mode. - - prec := int(r.Precision) - if prec > 0 { - prec-- - } - b := strconv.AppendFloat(d.Digits, abs, 'e', prec, size) + b := strconv.AppendFloat(d.Digits[:0], abs, verb, prec, size) i := 0 k := 0 - // No need to check i < len(b) as we always have an 'e'. - for { + beforeDot := 1 + for i < len(b) { if c := b[i]; '0' <= c && c <= '9' { b[k] = c - '0' k++ - } else if c != '.' { + d.Exp += int32(beforeDot) + } else if c == '.' { + beforeDot = 0 + d.Exp = int32(k) + } else { break } i++ } d.Digits = b[:k] - i += len("e") - pSign := i - exp := 0 - for i++; i < len(b); i++ { - exp *= 10 - exp += int(b[i] - '0') + if i != len(b) { + i += len("e") + pSign := i + exp := 0 + for i++; i < len(b); i++ { + exp *= 10 + exp += int(b[i] - '0') + } + if b[pSign] == '-' { + exp = -exp + } + d.Exp = int32(exp) + 1 } - if b[pSign] == '-' { - exp = -exp - } - d.Exp = int32(exp) + 1 } func (d *Decimal) fillIntDigits(x uint64) { diff --git a/vendor/golang.org/x/text/internal/number/decimal_test.go b/vendor/golang.org/x/text/internal/number/decimal_test.go index 5c8170049..97c7e25b6 100644 --- a/vendor/golang.org/x/text/internal/number/decimal_test.go +++ b/vendor/golang.org/x/text/internal/number/decimal_test.go @@ -22,6 +22,15 @@ func mkfloat(num string) float64 { // digits are shifted. Numbers may have an additional exponent or be the special // value NaN, Inf, or -Inf. func mkdec(num string) (d Decimal) { + var r RoundingContext + d.Convert(r, dec(num)) + return +} + +type dec string + +func (s dec) Convert(d *Decimal, _ RoundingContext) { + num := string(s) if num[0] == '-' { d.Neg = true num = num[1:] @@ -52,7 +61,7 @@ func mkdec(num string) (d Decimal) { for i := range d.Digits { d.Digits[i] -= '0' } - return d.normalize() + *d = d.normalize() } func byteNum(s string) []byte { @@ -77,11 +86,11 @@ func TestDecimalString(t *testing.T) { want string }{ {want: "0"}, - {Decimal{Digits: nil, Exp: 1000}, "0"}, // exponent of 1000 is ignored - {Decimal{Digits: byteNum("12345"), Exp: 0}, "0.12345"}, - {Decimal{Digits: byteNum("12345"), Exp: -3}, "0.00012345"}, - {Decimal{Digits: byteNum("12345"), Exp: +3}, "123.45"}, - {Decimal{Digits: byteNum("12345"), Exp: +10}, "1234500000"}, + {Decimal{digits: digits{Digits: nil, Exp: 1000}}, "0"}, // exponent of 1000 is ignored + {Decimal{digits: digits{Digits: byteNum("12345"), Exp: 0}}, "0.12345"}, + {Decimal{digits: digits{Digits: byteNum("12345"), Exp: -3}}, "0.00012345"}, + {Decimal{digits: digits{Digits: byteNum("12345"), Exp: +3}}, "123.45"}, + {Decimal{digits: digits{Digits: byteNum("12345"), Exp: +10}}, "1234500000"}, } { if got := test.x.String(); got != test.want { t.Errorf("%v == %q; want %q", test.x, got, test.want) @@ -232,16 +241,26 @@ func TestRounding(t *testing.T) { } func TestConvert(t *testing.T) { - scale2 := &RoundingContext{Scale: 2} - scale2away := &RoundingContext{Scale: 2, Mode: AwayFromZero} - inc0_05 := &RoundingContext{Increment: 5, Scale: 2} - inc50 := &RoundingContext{Increment: 50} - prec3 := &RoundingContext{Precision: 3} + scale2 := RoundingContext{} + scale2.SetScale(2) + scale2away := RoundingContext{Mode: AwayFromZero} + scale2away.SetScale(2) + inc0_05 := RoundingContext{Increment: 5, IncrementScale: 2} + inc0_05.SetScale(2) + inc50 := RoundingContext{Increment: 50} + prec3 := RoundingContext{} + prec3.SetPrecision(3) + roundShift := RoundingContext{DigitShift: 2, MaxFractionDigits: 2} testCases := []struct { x interface{} - rc *RoundingContext + rc RoundingContext out string }{ + {-0.001, scale2, "-0.00"}, + {0.1234, prec3, "0.123"}, + {1234.0, prec3, "1230"}, + {1.2345e10, prec3, "12300000000"}, + {int8(-34), scale2, "-34"}, {int16(-234), scale2, "-234"}, {int32(-234), scale2, "-234"}, @@ -252,25 +271,44 @@ func TestConvert(t *testing.T) { {uint32(234), scale2, "234"}, {uint64(234), scale2, "234"}, {uint(234), scale2, "234"}, - {-0.001, scale2, "-0"}, {-1e9, scale2, "-1000000000.00"}, - {0.234, scale2, "0.23"}, - {0.234, scale2away, "0.24"}, - {0.1234, prec3, "0.123"}, - {1234.0, prec3, "1230"}, - {1.2345e10, prec3, "12300000000"}, + // The following two causes this result to have a lot of digits: + // 1) 0.234 cannot be accurately represented as a float64, and + // 2) as strconv does not support the rounding AwayFromZero, Convert + // leaves the rounding to caller. + {0.234, scale2away, + "0.2340000000000000135447209004269097931683063507080078125"}, + {0.0249, inc0_05, "0.00"}, + {0.025, inc0_05, "0.00"}, + {0.0251, inc0_05, "0.05"}, {0.03, inc0_05, "0.05"}, - {0.025, inc0_05, "0"}, + {0.049, inc0_05, "0.05"}, + {0.05, inc0_05, "0.05"}, + {0.051, inc0_05, "0.05"}, + {0.0749, inc0_05, "0.05"}, {0.075, inc0_05, "0.10"}, + {0.0751, inc0_05, "0.10"}, + {324, inc50, "300"}, {325, inc50, "300"}, + {326, inc50, "350"}, + {349, inc50, "350"}, + {350, inc50, "350"}, + {351, inc50, "350"}, + {374, inc50, "350"}, {375, inc50, "400"}, + {376, inc50, "400"}, + + // Here the scale is 2, but the digits get shifted left. As we use + // AppendFloat to do the rounding an exta 0 gets added. + {0.123, roundShift, "0.1230"}, {converter(3), scale2, "100"}, {math.Inf(1), inc50, "Inf"}, {math.Inf(-1), inc50, "-Inf"}, {math.NaN(), inc50, "NaN"}, + {"clearly not a number", scale2, "NaN"}, } for _, tc := range testCases { var d Decimal @@ -285,7 +323,7 @@ func TestConvert(t *testing.T) { type converter int -func (c converter) Convert(d *Decimal, r *RoundingContext) { +func (c converter) Convert(d *Decimal, r RoundingContext) { d.Digits = append(d.Digits, 1, 0, 0) d.Exp = 3 } diff --git a/vendor/golang.org/x/text/internal/number/format.go b/vendor/golang.org/x/text/internal/number/format.go index 70ddf7df1..910bdeb02 100755 --- a/vendor/golang.org/x/text/internal/number/format.go +++ b/vendor/golang.org/x/text/internal/number/format.go @@ -16,6 +16,13 @@ import ( // - allow user-defined superscript notation (such as 4) // - same for non-breaking spaces, like   +// A VisibleDigits computes digits, comma placement and trailing zeros as they +// will be shown to the user. +type VisibleDigits interface { + Digits(buf []byte, t language.Tag, scale int) Digits + // TODO: Do we also need to add the verb or pass a format.State? +} + // Formatting proceeds along the following lines: // 0) Compose rounding information from format and context. // 1) Convert a number into a Decimal. @@ -28,7 +35,6 @@ import ( type Formatter struct { Pattern Info - RoundingContext } func (f *Formatter) init(t language.Tag, index []uint8) { @@ -57,12 +63,16 @@ func (f *Formatter) InitDecimal(t language.Tag) { // given language. func (f *Formatter) InitScientific(t language.Tag) { f.init(t, tagToScientific) + f.Pattern.MinFractionDigits = 0 + f.Pattern.MaxFractionDigits = -1 } // InitEngineering initializes a Formatter using the default Pattern for the // given language. func (f *Formatter) InitEngineering(t language.Tag) { f.init(t, tagToScientific) + f.Pattern.MinFractionDigits = 0 + f.Pattern.MaxFractionDigits = -1 f.Pattern.MaxIntegerDigits = 3 f.Pattern.MinIntegerDigits = 1 } @@ -82,17 +92,29 @@ func (f *Formatter) InitPerMille(t language.Tag) { func (f *Formatter) Append(dst []byte, x interface{}) []byte { var d Decimal - d.Convert(&f.RoundingContext, x) - return f.Format(dst, &d) + r := f.RoundingContext + d.Convert(r, x) + return f.Render(dst, FormatDigits(&d, r)) +} + +func FormatDigits(d *Decimal, r RoundingContext) Digits { + if r.isScientific() { + return scientificVisibleDigits(r, d) + } + return decimalVisibleDigits(r, d) } func (f *Formatter) Format(dst []byte, d *Decimal) []byte { + return f.Render(dst, FormatDigits(d, f.RoundingContext)) +} + +func (f *Formatter) Render(dst []byte, d Digits) []byte { var result []byte var postPrefix, preSuffix int - if f.MinExponentDigits > 0 { - result, postPrefix, preSuffix = appendScientific(dst, f, d) + if d.IsScientific { + result, postPrefix, preSuffix = appendScientific(dst, f, &d) } else { - result, postPrefix, preSuffix = appendDecimal(dst, f, d) + result, postPrefix, preSuffix = appendDecimal(dst, f, &d) } if f.PadRune == 0 { return result @@ -131,23 +153,86 @@ func (f *Formatter) Format(dst []byte, d *Decimal) []byte { return result } +// decimalVisibleDigits converts d according to the RoundingContext. Note that +// the exponent may change as a result of this operation. +func decimalVisibleDigits(r RoundingContext, d *Decimal) Digits { + if d.NaN || d.Inf { + return Digits{digits: digits{Neg: d.Neg, NaN: d.NaN, Inf: d.Inf}} + } + n := Digits{digits: d.normalize().digits} + + exp := n.Exp + exp += int32(r.DigitShift) + + // Cap integer digits. Remove *most-significant* digits. + if r.MaxIntegerDigits > 0 { + if p := int(exp) - int(r.MaxIntegerDigits); p > 0 { + if p > len(n.Digits) { + p = len(n.Digits) + } + if n.Digits = n.Digits[p:]; len(n.Digits) == 0 { + exp = 0 + } else { + exp -= int32(p) + } + // Strip leading zeros. + for len(n.Digits) > 0 && n.Digits[0] == 0 { + n.Digits = n.Digits[1:] + exp-- + } + } + } + + // Rounding if not already done by Convert. + p := len(n.Digits) + if maxSig := int(r.MaxSignificantDigits); maxSig > 0 { + p = maxSig + } + if maxFrac := int(r.MaxFractionDigits); maxFrac >= 0 { + if cap := int(exp) + maxFrac; cap < p { + p = int(exp) + maxFrac + } + if p < 0 { + p = 0 + } + } + n.round(r.Mode, p) + + // set End (trailing zeros) + n.End = int32(len(n.Digits)) + if n.End == 0 { + exp = 0 + if r.MinFractionDigits > 0 { + n.End = int32(r.MinFractionDigits) + } + if p := int32(r.MinSignificantDigits) - 1; p > n.End { + n.End = p + } + } else { + if end := exp + int32(r.MinFractionDigits); end > n.End { + n.End = end + } + if n.End < int32(r.MinSignificantDigits) { + n.End = int32(r.MinSignificantDigits) + } + } + n.Exp = exp + return n +} + // appendDecimal appends a formatted number to dst. It returns two possible // insertion points for padding. -func appendDecimal(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, preSuf int) { - if dst, ok := f.renderSpecial(dst, d); ok { +func appendDecimal(dst []byte, f *Formatter, n *Digits) (b []byte, postPre, preSuf int) { + if dst, ok := f.renderSpecial(dst, n); ok { return dst, 0, len(dst) } - n := d.normalize() - if maxSig := int(f.MaxSignificantDigits); maxSig > 0 { - n.round(ToZero, maxSig) - } digits := n.Digits exp := n.Exp - exp += int32(f.Pattern.DigitShift) // Split in integer and fraction part. var intDigits, fracDigits []byte - var numInt, numFrac int + numInt := 0 + numFrac := int(n.End - n.Exp) if exp > 0 { numInt = int(exp) if int(exp) >= len(digits) { // ddddd | ddddd00 @@ -155,42 +240,12 @@ func appendDecimal(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, pre } else { // ddd.dd intDigits = digits[:exp] fracDigits = digits[exp:] - numFrac = len(fracDigits) } } else { fracDigits = digits - numFrac = -int(exp) + len(digits) - } - // Cap integer digits. Remove *most-significant* digits. - if f.MaxIntegerDigits > 0 && numInt > int(f.MaxIntegerDigits) { - offset := numInt - int(f.MaxIntegerDigits) - if offset > len(intDigits) { - numInt = 0 - intDigits = nil - } else { - numInt = int(f.MaxIntegerDigits) - intDigits = intDigits[offset:] - // for keeping track of significant digits - digits = digits[offset:] - } - // Strip leading zeros. Resulting number of digits is significant digits. - for len(intDigits) > 0 && intDigits[0] == 0 { - intDigits = intDigits[1:] - digits = digits[1:] - numInt-- - } - } - if f.MaxSignificantDigits == 0 && int(f.MaxFractionDigits) < numFrac { - if extra := numFrac - int(f.MaxFractionDigits); extra > len(fracDigits) { - numFrac = 0 - fracDigits = nil - } else { - numFrac = int(f.MaxFractionDigits) - fracDigits = fracDigits[:len(fracDigits)-extra] - } } - neg := d.Neg + neg := n.Neg affix, suffix := f.getAffixes(neg) dst = appendAffix(dst, f, affix, neg) savedLen := len(dst) @@ -220,68 +275,86 @@ func appendDecimal(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, pre } } - trailZero := int(f.MinFractionDigits) - numFrac - if d := int(f.MinSignificantDigits) - len(digits); d > 0 && d > trailZero { - trailZero = d - } - if numFrac > 0 || trailZero > 0 || f.Flags&AlwaysDecimalSeparator != 0 { + if numFrac > 0 || f.Flags&AlwaysDecimalSeparator != 0 { dst = append(dst, f.Symbol(SymDecimal)...) } - // Add leading zeros - for i := numFrac - len(fracDigits); i > 0; i-- { + // Add trailing zeros + i = 0 + for n := -int(n.Exp); i < n; i++ { dst = f.AppendDigit(dst, 0) } - i = 0 - for ; i < len(fracDigits); i++ { - dst = f.AppendDigit(dst, fracDigits[i]) + for _, d := range fracDigits { + i++ + dst = f.AppendDigit(dst, d) } - for ; trailZero > 0; trailZero-- { + for ; i < numFrac; i++ { dst = f.AppendDigit(dst, 0) } return appendAffix(dst, f, suffix, neg), savedLen, len(dst) } -// appendScientific appends a formatted number to dst. It returns two possible -// insertion points for padding. -func appendScientific(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, preSuf int) { - if dst, ok := f.renderSpecial(dst, d); ok { - return dst, 0, 0 +func scientificVisibleDigits(r RoundingContext, d *Decimal) Digits { + if d.NaN || d.Inf { + return Digits{digits: digits{Neg: d.Neg, NaN: d.NaN, Inf: d.Inf}} } - // Significant digits are transformed by parser for scientific notation and - // do not need to be handled here. - maxInt, numInt := int(f.MaxIntegerDigits), int(f.MinIntegerDigits) + n := Digits{digits: d.normalize().digits, IsScientific: true} + + // Normalize to have at least one digit. This simplifies engineering + // notation. + if len(n.Digits) == 0 { + n.Digits = append(n.Digits, 0) + n.Exp = 1 + } + + // Significant digits are transformed by the parser for scientific notation + // and do not need to be handled here. + maxInt, numInt := int(r.MaxIntegerDigits), int(r.MinIntegerDigits) if numInt == 0 { numInt = 1 } - maxSig := int(f.MaxFractionDigits) + numInt - minSig := int(f.MinFractionDigits) + numInt - n := d.normalize() - if maxSig > 0 { - n.round(ToZero, maxSig) - } - digits := n.Digits - exp := n.Exp // If a maximum number of integers is specified, the minimum must be 1 // and the exponent is grouped by this number (e.g. for engineering) - if len(digits) == 0 { - exp = 0 - } else if maxInt > numInt { + if maxInt > numInt { // Correct the exponent to reflect a single integer digit. - exp-- numInt = 1 // engineering // 0.01234 ([12345]e-1) -> 1.2345e-2 12.345e-3 // 12345 ([12345]e+5) -> 1.2345e4 12.345e3 - d := int(exp) % maxInt + d := int(n.Exp-1) % maxInt if d < 0 { d += maxInt } - exp -= int32(d) numInt += d - } else { - exp -= int32(numInt) } + + p := len(n.Digits) + if maxSig := int(r.MaxSignificantDigits); maxSig > 0 { + p = maxSig + } + if maxFrac := int(r.MaxFractionDigits); maxFrac >= 0 && numInt+maxFrac < p { + p = numInt + maxFrac + } + n.round(r.Mode, p) + + n.Comma = uint8(numInt) + n.End = int32(len(n.Digits)) + if minSig := int32(r.MinFractionDigits) + int32(numInt); n.End < minSig { + n.End = minSig + } + return n +} + +// appendScientific appends a formatted number to dst. It returns two possible +// insertion points for padding. +func appendScientific(dst []byte, f *Formatter, n *Digits) (b []byte, postPre, preSuf int) { + if dst, ok := f.renderSpecial(dst, n); ok { + return dst, 0, 0 + } + digits := n.Digits + numInt := int(n.Comma) + numFrac := int(n.End) - int(n.Comma) + var intDigits, fracDigits []byte if numInt <= len(digits) { intDigits = digits[:numInt] @@ -289,7 +362,7 @@ func appendScientific(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, } else { intDigits = digits } - neg := d.Neg + neg := n.Neg affix, suffix := f.getAffixes(neg) dst = appendAffix(dst, f, affix, neg) savedLen := len(dst) @@ -308,15 +381,14 @@ func appendScientific(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, } } - trailZero := minSig - numInt - len(fracDigits) - if len(fracDigits) > 0 || trailZero > 0 || f.Flags&AlwaysDecimalSeparator != 0 { + if numFrac > 0 || f.Flags&AlwaysDecimalSeparator != 0 { dst = append(dst, f.Symbol(SymDecimal)...) } i = 0 for ; i < len(fracDigits); i++ { dst = f.AppendDigit(dst, fracDigits[i]) } - for ; trailZero > 0; trailZero-- { + for ; i < numFrac; i++ { dst = f.AppendDigit(dst, 0) } @@ -324,6 +396,7 @@ func appendScientific(dst []byte, f *Formatter, d *Decimal) (b []byte, postPre, buf := [12]byte{} // TODO: use exponential if superscripting is not available (no Latin // numbers or no tags) and use exponential in all other cases. + exp := n.Exp - int32(n.Comma) exponential := f.Symbol(SymExponential) if exponential == "E" { dst = append(dst, "\u202f"...) // NARROW NO-BREAK SPACE @@ -408,7 +481,7 @@ func (f *Formatter) getAffixes(neg bool) (affix, suffix string) { return affix, suffix } -func (f *Formatter) renderSpecial(dst []byte, d *Decimal) (b []byte, ok bool) { +func (f *Formatter) renderSpecial(dst []byte, d *Digits) (b []byte, ok bool) { if d.NaN { return fmtNaN(dst, f), true } @@ -422,7 +495,7 @@ func fmtNaN(dst []byte, f *Formatter) []byte { return append(dst, f.Symbol(SymNan)...) } -func fmtInfinite(dst []byte, f *Formatter, d *Decimal) []byte { +func fmtInfinite(dst []byte, f *Formatter, d *Digits) []byte { affix, suffix := f.getAffixes(d.Neg) dst = appendAffix(dst, f, affix, d.Neg) dst = append(dst, f.Symbol(SymInfinity)...) diff --git a/vendor/golang.org/x/text/internal/number/format_test.go b/vendor/golang.org/x/text/internal/number/format_test.go index 4c47bc568..01a089430 100755 --- a/vendor/golang.org/x/text/internal/number/format_test.go +++ b/vendor/golang.org/x/text/internal/number/format_test.go @@ -112,7 +112,7 @@ func TestAppendDecimal(t *testing.T) { test: pairs{ "0": "0", "1234.5678": "1234.5678", - "0.123456789": "0.123456", + "0.123456789": "0.123457", "NaN": "NaN", "Inf": "∞", }, @@ -142,7 +142,7 @@ func TestAppendDecimal(t *testing.T) { pattern: "#,##0.###", test: pairs{ "0": "0", - "1234.5678": "1,234.567", + "1234.5678": "1,234.568", "0.123456789": "0.123", }, }, { @@ -157,7 +157,7 @@ func TestAppendDecimal(t *testing.T) { test: pairs{ "0": "0,00,000", "123456789012": "1,23,45,67,89,012", - "12.3456789": "0,00,012.345", + "12.3456789": "0,00,012.346", "0.123456789": "0,00,000.123", }, @@ -193,7 +193,9 @@ func TestAppendDecimal(t *testing.T) { }, { pattern: "#,max_int=2", pat: &Pattern{ - MaxIntegerDigits: 2, + RoundingContext: RoundingContext{ + MaxIntegerDigits: 2, + }, }, test: pairs{ "2017": "17", @@ -201,8 +203,10 @@ func TestAppendDecimal(t *testing.T) { }, { pattern: "0,max_int=2", pat: &Pattern{ - MaxIntegerDigits: 2, - MinIntegerDigits: 1, + RoundingContext: RoundingContext{ + MaxIntegerDigits: 2, + MinIntegerDigits: 1, + }, }, test: pairs{ "2000": "0", @@ -212,8 +216,10 @@ func TestAppendDecimal(t *testing.T) { }, { pattern: "00,max_int=2", pat: &Pattern{ - MaxIntegerDigits: 2, - MinIntegerDigits: 2, + RoundingContext: RoundingContext{ + MaxIntegerDigits: 2, + MinIntegerDigits: 2, + }, }, test: pairs{ "2000": "00", @@ -223,8 +229,10 @@ func TestAppendDecimal(t *testing.T) { }, { pattern: "@@@@,max_int=2", pat: &Pattern{ - MaxIntegerDigits: 2, - MinSignificantDigits: 4, + RoundingContext: RoundingContext{ + MaxIntegerDigits: 2, + MinSignificantDigits: 4, + }, }, test: pairs{ "2017": "17.00", @@ -237,7 +245,7 @@ func TestAppendDecimal(t *testing.T) { pattern: "@@##", test: pairs{ "1": "1.0", - "0.1": "0.10", + "0.1": "0.10", // leading zero does not count as significant digit "123": "123", "1234": "1234", "12345": "12340", @@ -281,22 +289,25 @@ func TestAppendDecimal(t *testing.T) { pattern: "##0E00", test: pairs{ "100": "100\u202f×\u202f10⁰⁰", - "12345": "10\u202f×\u202f10⁰³", - "123.456": "100\u202f×\u202f10⁰⁰", + "12345": "12\u202f×\u202f10⁰³", + "123.456": "123\u202f×\u202f10⁰⁰", }, }, { pattern: "##0.###E00", test: pairs{ - "100": "100\u202f×\u202f10⁰⁰", - "12345": "12.34\u202f×\u202f10⁰³", - "123.456": "123.4\u202f×\u202f10⁰⁰", + "100": "100\u202f×\u202f10⁰⁰", + "12345": "12.345\u202f×\u202f10⁰³", + "123456": "123.456\u202f×\u202f10⁰³", + "123.456": "123.456\u202f×\u202f10⁰⁰", + "123.4567": "123.457\u202f×\u202f10⁰⁰", }, }, { pattern: "##0.000E00", test: pairs{ - "100": "100.0\u202f×\u202f10⁰⁰", - "12345": "12.34\u202f×\u202f10⁰³", - "123.456": "123.4\u202f×\u202f10⁰⁰", + "100": "100.000\u202f×\u202f10⁰⁰", + "12345": "12.345\u202f×\u202f10⁰³", + "123.456": "123.456\u202f×\u202f10⁰⁰", + "12.3456": "12.346\u202f×\u202f10⁰⁰", }, }, { pattern: "@@E0", @@ -441,11 +452,12 @@ func TestAppendDecimal(t *testing.T) { } var f Formatter f.InitPattern(language.English, pat) - for dec, want := range tc.test { + for num, want := range tc.test { buf := make([]byte, 100) - t.Run(tc.pattern+"/"+dec, func(t *testing.T) { - dec := mkdec(dec) - buf = f.Format(buf[:0], &dec) + t.Run(tc.pattern+"/"+num, func(t *testing.T) { + var d Decimal + d.Convert(f.RoundingContext, dec(num)) + buf = f.Format(buf[:0], &d) if got := string(buf); got != want { t.Errorf("\n got %[1]q (%[1]s)\nwant %[2]q (%[2]s)", got, want) } @@ -470,7 +482,8 @@ func TestLocales(t *testing.T) { t.Run(fmt.Sprint(tc.tag, "/", tc.num), func(t *testing.T) { var f Formatter f.InitDecimal(tc.tag) - d := mkdec(tc.num) + var d Decimal + d.Convert(f.RoundingContext, dec(tc.num)) b := f.Format(nil, &d) if got := string(b); got != tc.want { t.Errorf("got %[1]q (%[1]s); want %[2]q (%[2]s)", got, tc.want) @@ -488,7 +501,8 @@ func TestFormatters(t *testing.T) { }{ {f.InitDecimal, "123456.78", "123,456.78"}, {f.InitScientific, "123456.78", "1.23\u202f×\u202f10⁵"}, - {f.InitEngineering, "123456.78", "123\u202f×\u202f10³"}, + {f.InitEngineering, "123456.78", "123.46\u202f×\u202f10³"}, + {f.InitEngineering, "1234", "1.23\u202f×\u202f10³"}, {f.InitPercent, "0.1234", "12.34%"}, {f.InitPerMille, "0.1234", "123.40‰"}, @@ -496,9 +510,9 @@ func TestFormatters(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprint(i, "/", tc.num), func(t *testing.T) { tc.init(language.English) - f.Pattern.MinFractionDigits = 2 - f.Pattern.MaxFractionDigits = 2 - d := mkdec(tc.num) + f.SetScale(2) + var d Decimal + d.Convert(f.RoundingContext, dec(tc.num)) b := f.Format(nil, &d) if got := string(b); got != tc.want { t.Errorf("got %[1]q (%[1]s); want %[2]q (%[2]s)", got, tc.want) diff --git a/vendor/golang.org/x/text/internal/number/pattern.go b/vendor/golang.org/x/text/internal/number/pattern.go index ef7f087fe..b95ca40e8 100644 --- a/vendor/golang.org/x/text/internal/number/pattern.go +++ b/vendor/golang.org/x/text/internal/number/pattern.go @@ -39,31 +39,84 @@ import ( // // This type is only intended for internal use. type Pattern struct { - // TODO: this struct can be packed a lot better than it is now. Should be - // possible to make it 32 bytes. - - Affix string // includes prefix and suffix. First byte is prefix length. - Offset uint16 // Offset into Affix for prefix and suffix - NegOffset uint16 // Offset into Affix for negative prefix and suffix or 0. + RoundingContext + Affix string // includes prefix and suffix. First byte is prefix length. + Offset uint16 // Offset into Affix for prefix and suffix + NegOffset uint16 // Offset into Affix for negative prefix and suffix or 0. + PadRune rune FormatWidth uint16 - RoundIncrement uint32 // Use Min*Digits to determine scale - PadRune rune - DigitShift uint8 // Number of decimals to shift. Used for % and ‰. - GroupingSize [2]uint8 Flags PatternFlag +} + +// A RoundingContext indicates how a number should be converted to digits. +// It contains all information needed to determine the "visible digits" as +// required by the pluralization rules. +type RoundingContext struct { + // TODO: unify these two fields so that there is a more unambiguous meaning + // of how precision is handled. + MaxSignificantDigits int16 // -1 is unlimited + MaxFractionDigits int16 // -1 is unlimited + + Increment uint32 + IncrementScale uint8 // May differ from printed scale. + + Mode RoundingMode + + DigitShift uint8 // Number of decimals to shift. Used for % and ‰. // Number of digits. - // TODO: consider using uint32 - MinIntegerDigits uint8 + MinIntegerDigits uint8 + MaxIntegerDigits uint8 MinFractionDigits uint8 - MaxFractionDigits uint8 MinSignificantDigits uint8 - MaxSignificantDigits uint8 - MinExponentDigits uint8 + + MinExponentDigits uint8 +} + +// RoundSignificantDigits returns the number of significant digits an +// implementation of Convert may round to or n < 0 if there is no maximum or +// a maximum is not recommended. +func (r *RoundingContext) RoundSignificantDigits() (n int) { + if r.MaxFractionDigits == 0 && r.MaxSignificantDigits > 0 { + return int(r.MaxSignificantDigits) + } else if r.isScientific() && r.MaxIntegerDigits == 1 { + if r.MaxSignificantDigits == 0 || + int(r.MaxFractionDigits+1) == int(r.MaxSignificantDigits) { + // Note: don't add DigitShift: it is only used for decimals. + return int(r.MaxFractionDigits) + 1 + } + } + return -1 +} + +// RoundFractionDigits returns the number of fraction digits an implementation +// of Convert may round to or n < 0 if there is no maximum or a maximum is not +// recommended. +func (r *RoundingContext) RoundFractionDigits() (n int) { + if r.MinExponentDigits == 0 && + r.MaxSignificantDigits == 0 && + r.MaxFractionDigits >= 0 { + return int(r.MaxFractionDigits) + int(r.DigitShift) + } + return -1 +} + +// SetScale fixes the RoundingContext to a fixed number of fraction digits. +func (r *RoundingContext) SetScale(scale int) { + r.MinFractionDigits = uint8(scale) + r.MaxFractionDigits = int16(scale) +} + +func (r *RoundingContext) SetPrecision(prec int) { + r.MaxSignificantDigits = int16(prec) +} + +func (r *RoundingContext) isScientific() bool { + return r.MinExponentDigits > 0 } func (f *Pattern) needsSep(pos int) bool { @@ -177,6 +230,9 @@ func ParsePattern(s string) (f *Pattern, err error) { } else { p.Affix = affix } + if p.Increment == 0 { + p.IncrementScale = 0 + } return p.Pattern, nil } @@ -302,6 +358,7 @@ func (p *parser) number(r rune) state { case '@': p.groupingCount++ p.leadingSharps = 0 + p.MaxFractionDigits = -1 return p.sigDigits(r) case ',': if p.leadingSharps == 0 { // no leading commas @@ -339,7 +396,7 @@ func (p *parser) integer(r rune) state { p.updateGrouping() return next } - p.RoundIncrement = p.RoundIncrement*10 + uint32(r-'0') + p.Increment = p.Increment*10 + uint32(r-'0') p.groupingCount++ p.MinIntegerDigits++ return p.integer @@ -389,7 +446,8 @@ func (p *parser) normalizeSigDigitsWithExponent() state { func (p *parser) fraction(r rune) state { switch r { case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': - p.RoundIncrement = p.RoundIncrement*10 + uint32(r-'0') + p.Increment = p.Increment*10 + uint32(r-'0') + p.IncrementScale++ p.MinFractionDigits++ p.MaxFractionDigits++ case '#': diff --git a/vendor/golang.org/x/text/internal/number/pattern_test.go b/vendor/golang.org/x/text/internal/number/pattern_test.go index 97ff64d55..a7517d004 100644 --- a/vendor/golang.org/x/text/internal/number/pattern_test.go +++ b/vendor/golang.org/x/text/internal/number/pattern_test.go @@ -22,96 +22,122 @@ var testCases = []struct { }, { "0", &Pattern{ - FormatWidth: 1, - MinIntegerDigits: 1, + FormatWidth: 1, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + }, }, }, { "+0", &Pattern{ - Affix: "\x01+\x00", - FormatWidth: 2, - MinIntegerDigits: 1, + Affix: "\x01+\x00", + FormatWidth: 2, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + }, }, }, { "0+", &Pattern{ - Affix: "\x00\x01+", - FormatWidth: 2, - MinIntegerDigits: 1, + Affix: "\x00\x01+", + FormatWidth: 2, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + }, }, }, { "0000", &Pattern{ - FormatWidth: 4, - MinIntegerDigits: 4, + FormatWidth: 4, + RoundingContext: RoundingContext{ + MinIntegerDigits: 4, + }, }, }, { ".#", &Pattern{ - FormatWidth: 2, - MaxFractionDigits: 1, + FormatWidth: 2, + RoundingContext: RoundingContext{ + MaxFractionDigits: 1, + }, }, }, { "#0.###", &Pattern{ - FormatWidth: 6, - MinIntegerDigits: 1, - MaxFractionDigits: 3, + FormatWidth: 6, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxFractionDigits: 3, + }, }, }, { "#0.######", &Pattern{ - FormatWidth: 9, - MinIntegerDigits: 1, - MaxFractionDigits: 6, + FormatWidth: 9, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxFractionDigits: 6, + }, }, }, { "#,0", &Pattern{ - FormatWidth: 3, - GroupingSize: [2]uint8{1, 0}, - MinIntegerDigits: 1, + FormatWidth: 3, + GroupingSize: [2]uint8{1, 0}, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + }, }, }, { "#,0.00", &Pattern{ - FormatWidth: 6, - GroupingSize: [2]uint8{1, 0}, - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, + FormatWidth: 6, + GroupingSize: [2]uint8{1, 0}, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MinFractionDigits: 2, + MaxFractionDigits: 2, + }, }, }, { "#,##0.###", &Pattern{ - FormatWidth: 9, - GroupingSize: [2]uint8{3, 0}, - MinIntegerDigits: 1, - MaxFractionDigits: 3, + FormatWidth: 9, + GroupingSize: [2]uint8{3, 0}, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxFractionDigits: 3, + }, }, }, { "#,##,##0.###", &Pattern{ - FormatWidth: 12, - GroupingSize: [2]uint8{3, 2}, - MinIntegerDigits: 1, - MaxFractionDigits: 3, + FormatWidth: 12, + GroupingSize: [2]uint8{3, 2}, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxFractionDigits: 3, + }, }, }, { // Ignore additional separators. "#,####,##,##0.###", &Pattern{ - FormatWidth: 17, - GroupingSize: [2]uint8{3, 2}, - MinIntegerDigits: 1, - MaxFractionDigits: 3, + FormatWidth: 17, + GroupingSize: [2]uint8{3, 2}, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxFractionDigits: 3, + }, }, }, { "#E0", &Pattern{ - FormatWidth: 3, - MaxIntegerDigits: 1, - MinExponentDigits: 1, + FormatWidth: 3, + RoundingContext: RoundingContext{ + MaxIntegerDigits: 1, + MinExponentDigits: 1, + }, }, }, { // At least one exponent digit is required. As long as this is true, one can @@ -121,30 +147,47 @@ var testCases = []struct { }, { "0E0", &Pattern{ - FormatWidth: 3, - MinIntegerDigits: 1, - MinExponentDigits: 1, + FormatWidth: 3, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MinExponentDigits: 1, + }, + }, +}, { + "##0.###E00", + &Pattern{ + FormatWidth: 10, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxIntegerDigits: 3, + MaxFractionDigits: 3, + MinExponentDigits: 2, + }, }, }, { "##00.0#E0", &Pattern{ - FormatWidth: 9, - MinIntegerDigits: 2, - MaxIntegerDigits: 4, - MinFractionDigits: 1, - MaxFractionDigits: 2, - MinExponentDigits: 1, + FormatWidth: 9, + RoundingContext: RoundingContext{ + MinIntegerDigits: 2, + MaxIntegerDigits: 4, + MinFractionDigits: 1, + MaxFractionDigits: 2, + MinExponentDigits: 1, + }, }, }, { "#00.0E+0", &Pattern{ - FormatWidth: 8, - Flags: AlwaysExpSign, - MinIntegerDigits: 2, - MaxIntegerDigits: 3, - MinFractionDigits: 1, - MaxFractionDigits: 1, - MinExponentDigits: 1, + FormatWidth: 8, + Flags: AlwaysExpSign, + RoundingContext: RoundingContext{ + MinIntegerDigits: 2, + MaxIntegerDigits: 3, + MinFractionDigits: 1, + MaxFractionDigits: 1, + MinExponentDigits: 1, + }, }, }, { "0.0E++0", @@ -156,45 +199,58 @@ var testCases = []struct { // significant digits "@", &Pattern{ - FormatWidth: 1, - MinSignificantDigits: 1, - MaxSignificantDigits: 1, + FormatWidth: 1, + RoundingContext: RoundingContext{ + MinSignificantDigits: 1, + MaxSignificantDigits: 1, + MaxFractionDigits: -1, + }, }, }, { // significant digits "@@@@", &Pattern{ - FormatWidth: 4, - MinSignificantDigits: 4, - MaxSignificantDigits: 4, + FormatWidth: 4, + RoundingContext: RoundingContext{ + MinSignificantDigits: 4, + MaxSignificantDigits: 4, + MaxFractionDigits: -1, + }, }, }, { "@###", &Pattern{ - FormatWidth: 4, - MinSignificantDigits: 1, - MaxSignificantDigits: 4, + FormatWidth: 4, + RoundingContext: RoundingContext{ + MinSignificantDigits: 1, + MaxSignificantDigits: 4, + MaxFractionDigits: -1, + }, }, }, { // Exponents in significant digits mode gets normalized. "@@E0", &Pattern{ - FormatWidth: 4, - MinIntegerDigits: 1, - MaxIntegerDigits: 1, - MinFractionDigits: 1, - MaxFractionDigits: 1, - MinExponentDigits: 1, + FormatWidth: 4, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxIntegerDigits: 1, + MinFractionDigits: 1, + MaxFractionDigits: 1, + MinExponentDigits: 1, + }, }, }, { "@###E00", &Pattern{ - FormatWidth: 7, - MinIntegerDigits: 1, - MaxIntegerDigits: 1, - MinFractionDigits: 0, - MaxFractionDigits: 3, - MinExponentDigits: 2, + FormatWidth: 7, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxIntegerDigits: 1, + MinFractionDigits: 0, + MaxFractionDigits: 3, + MinExponentDigits: 2, + }, }, }, { // The significant digits mode does not allow fractions. @@ -204,73 +260,89 @@ var testCases = []struct { //alternative negative pattern "#0.###;(#0.###)", &Pattern{ - Affix: "\x00\x00\x01(\x01)", - NegOffset: 2, - FormatWidth: 6, - MinIntegerDigits: 1, - MaxFractionDigits: 3, + Affix: "\x00\x00\x01(\x01)", + NegOffset: 2, + FormatWidth: 6, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxFractionDigits: 3, + }, }, }, { // Rounding increment "1.05", &Pattern{ - RoundIncrement: 105, - FormatWidth: 4, - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, + FormatWidth: 4, + RoundingContext: RoundingContext{ + Increment: 105, + IncrementScale: 2, + MinIntegerDigits: 1, + MinFractionDigits: 2, + MaxFractionDigits: 2, + }, }, }, { // Rounding increment with grouping "1,05", &Pattern{ - RoundIncrement: 105, - FormatWidth: 4, - GroupingSize: [2]uint8{2, 0}, - MinIntegerDigits: 3, - MinFractionDigits: 0, - MaxFractionDigits: 0, + FormatWidth: 4, + GroupingSize: [2]uint8{2, 0}, + RoundingContext: RoundingContext{ + Increment: 105, + IncrementScale: 0, + MinIntegerDigits: 3, + MinFractionDigits: 0, + MaxFractionDigits: 0, + }, }, }, { "0.0%", &Pattern{ - Affix: "\x00\x01%", - DigitShift: 2, - FormatWidth: 4, - MinIntegerDigits: 1, - MinFractionDigits: 1, - MaxFractionDigits: 1, + Affix: "\x00\x01%", + FormatWidth: 4, + RoundingContext: RoundingContext{ + DigitShift: 2, + MinIntegerDigits: 1, + MinFractionDigits: 1, + MaxFractionDigits: 1, + }, }, }, { "0.0‰", &Pattern{ - Affix: "\x00\x03‰", - DigitShift: 3, - FormatWidth: 4, - MinIntegerDigits: 1, - MinFractionDigits: 1, - MaxFractionDigits: 1, + Affix: "\x00\x03‰", + FormatWidth: 4, + RoundingContext: RoundingContext{ + DigitShift: 3, + MinIntegerDigits: 1, + MinFractionDigits: 1, + MaxFractionDigits: 1, + }, }, }, { "#,##0.00¤", &Pattern{ - Affix: "\x00\x02¤", - FormatWidth: 9, - GroupingSize: [2]uint8{3, 0}, - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, + Affix: "\x00\x02¤", + FormatWidth: 9, + GroupingSize: [2]uint8{3, 0}, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MinFractionDigits: 2, + MaxFractionDigits: 2, + }, }, }, { "#,##0.00 ¤;(#,##0.00 ¤)", &Pattern{Affix: "\x00\x04\u00a0¤\x01(\x05\u00a0¤)", - NegOffset: 6, - DigitShift: 0, - FormatWidth: 10, - GroupingSize: [2]uint8{3, 0}, - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, + NegOffset: 6, + FormatWidth: 10, + GroupingSize: [2]uint8{3, 0}, + RoundingContext: RoundingContext{ + DigitShift: 0, + MinIntegerDigits: 1, + MinFractionDigits: 2, + MaxFractionDigits: 2, + }, }, }, { // padding @@ -321,16 +393,21 @@ var testCases = []struct { }, { `* #0 o''clock`, &Pattern{Affix: "\x00\x09 o\\'clock", - FormatWidth: 10, - PadRune: 32, - MinIntegerDigits: 0x1}, + FormatWidth: 10, + PadRune: 32, + RoundingContext: RoundingContext{ + MinIntegerDigits: 0x1, + }, + }, }, { `'123'* #0'456'`, &Pattern{Affix: "\x05'123'\x05'456'", - FormatWidth: 8, - PadRune: 32, - MinIntegerDigits: 0x1, - Flags: PadAfterPrefix}, + FormatWidth: 8, + PadRune: 32, + RoundingContext: RoundingContext{ + MinIntegerDigits: 0x1, + }, + Flags: PadAfterPrefix}, }, { // no duplicate padding "*xpre#suf*x", nil, @@ -354,8 +431,8 @@ func TestParsePattern(t *testing.T) { } func TestPatternSize(t *testing.T) { - if sz := unsafe.Sizeof(Pattern{}); sz > 48 { - t.Errorf("got %d; want <= 48", sz) + if sz := unsafe.Sizeof(Pattern{}); sz > 56 { + t.Errorf("got %d; want <= 56", sz) } } diff --git a/vendor/golang.org/x/text/internal/number/tables.go b/vendor/golang.org/x/text/internal/number/tables.go index b08acc48c..286712b17 100644 --- a/vendor/golang.org/x/text/internal/number/tables.go +++ b/vendor/golang.org/x/text/internal/number/tables.go @@ -846,277 +846,309 @@ var tagToPercent = []uint8{ // 754 elements 0x04, 0x04, } // Size: 778 bytes -var formats = []Pattern{Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x0, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, - GroupingSize: [2]uint8{0x0, - 0x0}, - Flags: 0x0, +var formats = []Pattern{Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, MinIntegerDigits: 0x0, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x9, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, - GroupingSize: [2]uint8{0x3, - 0x0}, - Flags: 0x0, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x0, + GroupingSize: [2]uint8{0x0, + 0x0}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 3, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x3, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x3, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, - GroupingSize: [2]uint8{0x0, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x9, + GroupingSize: [2]uint8{0x3, 0x0}, - Flags: 0x0, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, MinIntegerDigits: 0x0, MaxIntegerDigits: 0x1, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x1}, - Pattern{Affix: "\x00\x03\u00a0%", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x7, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, - 0x0}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "\x00\x01%", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x6, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, - 0x0}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0xc, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, - GroupingSize: [2]uint8{0x3, - 0x2}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x3, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "\x00\x01%", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x9, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, - 0x2}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "\x00\x03\u00a0%", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0xa, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, - 0x2}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x9, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x3, GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x0, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x6, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0xd, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, + Affix: "\x00\x03\u00a0%", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x7, + GroupingSize: [2]uint8{0x3, + 0x0}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "\x00\x01%", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x6, + GroupingSize: [2]uint8{0x3, + 0x0}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 3, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0xc, + GroupingSize: [2]uint8{0x3, + 0x2}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "\x00\x01%", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x9, + GroupingSize: [2]uint8{0x3, + 0x2}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "\x00\x03\u00a0%", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0xa, + GroupingSize: [2]uint8{0x3, + 0x2}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 6, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x9, GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x4, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 6, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x6, - MaxFractionDigits: 0x6, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x3}, - Pattern{Affix: "\x00\x01%", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x3, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0xd, GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x0, + Flags: 0x4}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Pattern{Affix: "\x03%\u00a0\x00", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x7, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, - 0x0}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "\x03%\u00a0\x00\x04%\u00a0-\x00", - Offset: 0x0, - NegOffset: 0x5, - FormatWidth: 0x7, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, - 0x0}, - Flags: 0x0, - MinIntegerDigits: 0x1, - MaxIntegerDigits: 0x0, - MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, - MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}, - Pattern{Affix: "\x01[\x01]", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x5, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, + Affix: "\x00\x01%", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x3, GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x0, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "\x03%\u00a0\x00", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x7, + GroupingSize: [2]uint8{0x3, + 0x0}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, + MinIntegerDigits: 0x1, + MaxIntegerDigits: 0x0, + MinFractionDigits: 0x0, + MinSignificantDigits: 0x0, + MinExponentDigits: 0x0}, + Affix: "\x03%\u00a0\x00\x04%\u00a0-\x00", + Offset: 0x0, + NegOffset: 0x5, + PadRune: 0, + FormatWidth: 0x7, + GroupingSize: [2]uint8{0x3, + 0x0}, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, MinIntegerDigits: 0x0, MaxIntegerDigits: 0x1, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x1}, - Pattern{Affix: "", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x1, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x0, + Affix: "\x01[\x01]", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x5, GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x0, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x0, MinIntegerDigits: 0x0, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, MinExponentDigits: 0x0}, - Pattern{Affix: "\x01%\x00", - Offset: 0x0, - NegOffset: 0x0, - FormatWidth: 0x6, - RoundIncrement: 0x0, - PadRune: 0, - DigitShift: 0x2, - GroupingSize: [2]uint8{0x3, + Affix: "", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x1, + GroupingSize: [2]uint8{0x0, 0x0}, - Flags: 0x0, + Flags: 0x0}, + Pattern{RoundingContext: RoundingContext{MaxSignificantDigits: 0, + MaxFractionDigits: 0, + Increment: 0x0, + IncrementScale: 0x0, + Mode: 0x0, + DigitShift: 0x2, MinIntegerDigits: 0x1, MaxIntegerDigits: 0x0, MinFractionDigits: 0x0, - MaxFractionDigits: 0x0, MinSignificantDigits: 0x0, - MaxSignificantDigits: 0x0, - MinExponentDigits: 0x0}} + MinExponentDigits: 0x0}, + Affix: "\x01%\x00", + Offset: 0x0, + NegOffset: 0x0, + PadRune: 0, + FormatWidth: 0x6, + GroupingSize: [2]uint8{0x3, + 0x0}, + Flags: 0x0}} // Total table size 7101 bytes (6KiB); checksum: 5190D0B3 diff --git a/vendor/golang.org/x/text/internal/ucd/ucd.go b/vendor/golang.org/x/text/internal/ucd/ucd.go index 309e8d8b1..8c45b5f3d 100644 --- a/vendor/golang.org/x/text/internal/ucd/ucd.go +++ b/vendor/golang.org/x/text/internal/ucd/ucd.go @@ -11,8 +11,8 @@ package ucd // import "golang.org/x/text/internal/ucd" import ( "bufio" - "bytes" "errors" + "fmt" "io" "log" "regexp" @@ -92,10 +92,11 @@ type Parser struct { keepRanges bool // Don't expand rune ranges in field 0. err error - comment []byte - field [][]byte + comment string + field []string // parsedRange is needed in case Range(0) is called more than once for one // field. In some cases this requires scanning ahead. + line int parsedRange bool rangeStart, rangeEnd rune @@ -103,15 +104,19 @@ type Parser struct { commentHandler func(s string) } -func (p *Parser) setError(err error) { - if p.err == nil { - p.err = err +func (p *Parser) setError(err error, msg string) { + if p.err == nil && err != nil { + if msg == "" { + p.err = fmt.Errorf("ucd:line:%d: %v", p.line, err) + } else { + p.err = fmt.Errorf("ucd:line:%d:%s: %v", p.line, msg, err) + } } } -func (p *Parser) getField(i int) []byte { +func (p *Parser) getField(i int) string { if i >= len(p.field) { - return nil + return "" } return p.field[i] } @@ -139,65 +144,66 @@ func (p *Parser) Next() bool { p.rangeStart++ return true } - p.comment = nil + p.comment = "" p.field = p.field[:0] p.parsedRange = false - for p.scanner.Scan() { - b := p.scanner.Bytes() - if len(b) == 0 { + for p.scanner.Scan() && p.err == nil { + p.line++ + s := p.scanner.Text() + if s == "" { continue } - if b[0] == '#' { + if s[0] == '#' { if p.commentHandler != nil { - p.commentHandler(strings.TrimSpace(string(b[1:]))) + p.commentHandler(strings.TrimSpace(s[1:])) } continue } // Parse line - if i := bytes.IndexByte(b, '#'); i != -1 { - p.comment = bytes.TrimSpace(b[i+1:]) - b = b[:i] + if i := strings.IndexByte(s, '#'); i != -1 { + p.comment = strings.TrimSpace(s[i+1:]) + s = s[:i] } - if b[0] == '@' { + if s[0] == '@' { if p.partHandler != nil { - p.field = append(p.field, bytes.TrimSpace(b[1:])) + p.field = append(p.field, strings.TrimSpace(s[1:])) p.partHandler(p) p.field = p.field[:0] } - p.comment = nil + p.comment = "" continue } for { - i := bytes.IndexByte(b, ';') + i := strings.IndexByte(s, ';') if i == -1 { - p.field = append(p.field, bytes.TrimSpace(b)) + p.field = append(p.field, strings.TrimSpace(s)) break } - p.field = append(p.field, bytes.TrimSpace(b[:i])) - b = b[i+1:] + p.field = append(p.field, strings.TrimSpace(s[:i])) + s = s[i+1:] } if !p.keepRanges { p.rangeStart, p.rangeEnd = p.getRange(0) } return true } - p.setError(p.scanner.Err()) + p.setError(p.scanner.Err(), "scanner failed") return false } -func parseRune(b []byte) (rune, error) { +func parseRune(b string) (rune, error) { if len(b) > 2 && b[0] == 'U' && b[1] == '+' { b = b[2:] } - x, err := strconv.ParseUint(string(b), 16, 32) + x, err := strconv.ParseUint(b, 16, 32) return rune(x), err } -func (p *Parser) parseRune(b []byte) rune { - x, err := parseRune(b) - p.setError(err) +func (p *Parser) parseRune(s string) rune { + x, err := parseRune(s) + p.setError(err, "failed to parse rune") return x } @@ -211,13 +217,13 @@ func (p *Parser) Rune(i int) rune { // Runes interprets and returns field i as a sequence of runes. func (p *Parser) Runes(i int) (runes []rune) { - add := func(b []byte) { - if b = bytes.TrimSpace(b); len(b) > 0 { - runes = append(runes, p.parseRune(b)) + add := func(s string) { + if s = strings.TrimSpace(s); len(s) > 0 { + runes = append(runes, p.parseRune(s)) } } for b := p.getField(i); ; { - i := bytes.IndexByte(b, ' ') + i := strings.IndexByte(b, ' ') if i == -1 { add(b) break @@ -247,7 +253,7 @@ func (p *Parser) Range(i int) (first, last rune) { func (p *Parser) getRange(i int) (first, last rune) { b := p.getField(i) - if k := bytes.Index(b, []byte("..")); k != -1 { + if k := strings.Index(b, ".."); k != -1 { return p.parseRune(b[:k]), p.parseRune(b[k+2:]) } // The first field may not be a rune, in which case we may ignore any error @@ -260,23 +266,24 @@ func (p *Parser) getRange(i int) (first, last rune) { p.keepRanges = true } // Special case for UnicodeData that was retained for backwards compatibility. - if i == 0 && len(p.field) > 1 && bytes.HasSuffix(p.field[1], []byte("First>")) { + if i == 0 && len(p.field) > 1 && strings.HasSuffix(p.field[1], "First>") { if p.parsedRange { return p.rangeStart, p.rangeEnd } mf := reRange.FindStringSubmatch(p.scanner.Text()) + p.line++ if mf == nil || !p.scanner.Scan() { - p.setError(errIncorrectLegacyRange) + p.setError(errIncorrectLegacyRange, "") return x, x } // Using Bytes would be more efficient here, but Text is a lot easier // and this is not a frequent case. ml := reRange.FindStringSubmatch(p.scanner.Text()) if ml == nil || mf[2] != ml[2] || ml[3] != "Last" || mf[4] != ml[4] { - p.setError(errIncorrectLegacyRange) + p.setError(errIncorrectLegacyRange, "") return x, x } - p.rangeStart, p.rangeEnd = x, p.parseRune(p.scanner.Bytes()[:len(ml[1])]) + p.rangeStart, p.rangeEnd = x, p.parseRune(p.scanner.Text()[:len(ml[1])]) p.parsedRange = true return p.rangeStart, p.rangeEnd } @@ -298,34 +305,34 @@ var bools = map[string]bool{ // Bool parses and returns field i as a boolean value. func (p *Parser) Bool(i int) bool { - b := p.getField(i) + f := p.getField(i) for s, v := range bools { - if bstrEq(b, s) { + if f == s { return v } } - p.setError(strconv.ErrSyntax) + p.setError(strconv.ErrSyntax, "error parsing bool") return false } // Int parses and returns field i as an integer value. func (p *Parser) Int(i int) int { x, err := strconv.ParseInt(string(p.getField(i)), 10, 64) - p.setError(err) + p.setError(err, "error parsing int") return int(x) } // Uint parses and returns field i as an unsigned integer value. func (p *Parser) Uint(i int) uint { x, err := strconv.ParseUint(string(p.getField(i)), 10, 64) - p.setError(err) + p.setError(err, "error parsing uint") return uint(x) } // Float parses and returns field i as a decimal value. func (p *Parser) Float(i int) float64 { x, err := strconv.ParseFloat(string(p.getField(i)), 64) - p.setError(err) + p.setError(err, "error parsing float") return x } @@ -353,24 +360,12 @@ var errUndefinedEnum = errors.New("ucd: undefined enum value") // Enum interprets and returns field i as a value that must be one of the values // in enum. func (p *Parser) Enum(i int, enum ...string) string { - b := p.getField(i) + f := p.getField(i) for _, s := range enum { - if bstrEq(b, s) { + if f == s { return s } } - p.setError(errUndefinedEnum) + p.setError(errUndefinedEnum, "error parsing enum") return "" } - -func bstrEq(b []byte, s string) bool { - if len(b) != len(s) { - return false - } - for i, c := range b { - if c != s[i] { - return false - } - } - return true -} diff --git a/vendor/golang.org/x/text/language/data_test.go b/vendor/golang.org/x/text/language/data_test.go deleted file mode 100644 index a1203f2f5..000000000 --- a/vendor/golang.org/x/text/language/data_test.go +++ /dev/null @@ -1,425 +0,0 @@ -// Copyright 2013 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 language - -type matchTest struct { - comment string - supported string - test []struct{ match, desired string } -} - -var matchTests = []matchTest{ - { - "basics", - "fr, en-GB, en", - []struct{ match, desired string }{ - {"en-GB", "en-GB"}, - {"en", "en-US"}, - {"fr", "fr-FR"}, - {"fr", "ja-JP"}, - }, - }, - { - "script fallbacks", - "zh-CN, zh-TW, iw", - []struct{ match, desired string }{ - {"zh-TW", "zh-Hant"}, - {"zh-CN", "zh"}, - {"zh-CN", "zh-Hans-CN"}, - {"zh-TW", "zh-Hant-HK"}, - {"iw", "he-IT"}, - }, - }, - { - "language-specific script fallbacks 1", - "en, sr, nl", - []struct{ match, desired string }{ - {"sr", "sr-Latn"}, - {"en", "sh"}, - {"en", "hr"}, - {"en", "bs"}, - // TODO: consider if the following match is a good one. - // Due to new script first rule, which maybe should be an option. - {"sr", "nl-Cyrl"}, - }, - }, - { - "language-specific script fallbacks 2", - "en, sh", - []struct{ match, desired string }{ - {"sh", "sr"}, - {"sh", "sr-Cyrl"}, - {"sh", "hr"}, - }, - }, - { - "both deprecated and not", - "fil, tl, iw, he", - []struct{ match, desired string }{ - {"he", "he-IT"}, - {"he", "he"}, - {"iw", "iw"}, - {"fil", "fil-IT"}, - {"fil", "fil"}, - {"tl", "tl"}, - }, - }, - { - "nearby languages", - "en, fil, ro, nn", - []struct{ match, desired string }{ - {"fil", "tl"}, - {"ro", "mo"}, - {"nn", "nb"}, - {"en", "ja"}, // make sure default works - }, - }, - { - "nearby languages: Nynorsk to Bokmål", - "en, nb", - []struct{ match, desired string }{ - {"nb", "nn"}, - }, - }, - { - "nearby languages: Danish does not match nn", - "en, nn", - []struct{ match, desired string }{ - {"en", "da"}, - }, - }, - { - "nearby languages: Danish matches no", - "en, no", - []struct{ match, desired string }{ - {"no", "da"}, - }, - }, - { - "nearby languages: Danish matches nb", - "en, nb", - []struct{ match, desired string }{ - {"nb", "da"}, - }, - }, - { - "prefer matching languages over language variants.", - "nn, en-GB", - []struct{ match, desired string }{ - {"en-GB", "no, en-US"}, - {"en-GB", "nb, en-US"}, - }, - }, - { - "deprecated version is closer than same language with other differences", - "nl, he, en-GB", - []struct{ match, desired string }{ - {"he", "iw, en-US"}, - }, - }, - { - "macro equivalent is closer than same language with other differences", - "nl, zh, en-GB, no", - []struct{ match, desired string }{ - {"zh", "cmn, en-US"}, - {"no", "nb, en-US"}, - }, - }, - { - "legacy equivalent is closer than same language with other differences", - "nl, fil, en-GB", - []struct{ match, desired string }{ - {"fil", "tl, en-US"}, - }, - }, - { - "exact over equivalent", - "en, ro, mo, ro-MD", - []struct{ match, desired string }{ - {"ro", "ro"}, - {"mo", "mo"}, - {"ro-MD", "ro-MD"}, - }, - }, - { - "maximization of legacy", - "sr-Cyrl, sr-Latn, ro, ro-MD", - []struct{ match, desired string }{ - {"sr-Latn", "sh"}, - {"ro-MD", "mo"}, - }, - }, - { - "empty", - "", - []struct{ match, desired string }{ - {"und", "fr"}, - {"und", "en"}, - }, - }, - { - "private use subtags", - "fr, en-GB, x-bork, es-ES, es-419", - []struct{ match, desired string }{ - {"fr", "x-piglatin"}, - {"x-bork", "x-bork"}, - }, - }, - { - "grandfathered codes", - "fr, i-klingon, en-Latn-US", - []struct{ match, desired string }{ - {"en-Latn-US", "en-GB-oed"}, - {"tlh", "i-klingon"}, - }, - }, - { - "exact match", - "fr, en-GB, ja, es-ES, es-MX", - []struct{ match, desired string }{ - {"ja", "ja, de"}, - }, - }, - { - "simple variant match", - "fr, en-GB, ja, es-ES, es-MX", - []struct{ match, desired string }{ - // Intentionally avoiding a perfect-match or two candidates for variant matches. - {"en-GB", "de, en-US"}, - // Fall back. - {"fr", "de, zh"}, - }, - }, - { - "best match for traditional Chinese", - // Scenario: An application that only supports Simplified Chinese (and some - // other languages), but does not support Traditional Chinese. zh-Hans-CN - // could be replaced with zh-CN, zh, or zh-Hans, it wouldn't make much of - // a difference. - "fr, zh-Hans-CN, en-US", - []struct{ match, desired string }{ - {"zh-Hans-CN", "zh-TW"}, - {"zh-Hans-CN", "zh-Hant"}, - // One can avoid a zh-Hant to zh-Hans match by including a second language - // preference which is a better match. - {"en-US", "zh-TW, en"}, - {"en-US", "zh-Hant-CN, en"}, - {"zh-Hans-CN", "zh-Hans, en"}, - }, - }, - // More specific region and script tie-breakers. - { - "more specific script should win in case regions are identical", - "af, af-Latn, af-Arab", - []struct{ match, desired string }{ - {"af", "af"}, - {"af", "af-ZA"}, - {"af-Latn", "af-Latn-ZA"}, - {"af-Latn", "af-Latn"}, - }, - }, - { - "more specific region should win", - "nl, nl-NL, nl-BE", - []struct{ match, desired string }{ - {"nl", "nl"}, - {"nl", "nl-Latn"}, - {"nl-NL", "nl-Latn-NL"}, - {"nl-NL", "nl-NL"}, - }, - }, - { - "region may replace matched if matched is enclosing", - "es-419,es", - []struct{ match, desired string }{ - {"es-MX", "es-MX"}, - {"es", "es-SG"}, - }, - }, - { - "more specific region wins over more specific script", - "nl, nl-Latn, nl-NL, nl-BE", - []struct{ match, desired string }{ - {"nl", "nl"}, - {"nl-Latn", "nl-Latn"}, - {"nl-NL", "nl-NL"}, - {"nl-NL", "nl-Latn-NL"}, - }, - }, - // Region distance tie-breakers. - { - "region distance Portuguese", - "pt, pt-PT", - []struct{ match, desired string }{ - {"pt-PT", "pt-ES"}, - }, - }, - { - "region distance French", - "en, fr, fr-CA, fr-CH", - []struct{ match, desired string }{ - {"fr-CA", "fr-US"}, - }, - }, - { - "region distance German", - "de-AT, de-DE, de-CH", - []struct{ match, desired string }{ - {"de-DE", "de"}, - }, - }, - { - "en-AU is closer to en-GB than to en (which is en-US)", - "en, en-GB, es-ES, es-419", - []struct{ match, desired string }{ - {"en-GB", "en-AU"}, - {"es-MX", "es-MX"}, - {"es-ES", "es-PT"}, - }, - }, - // Test exceptions with "und". - // When the undefined language doesn't match anything in the list, return the default, as usual. - // max("und") = "en-Latn-US", and since matching is based on maximized tags, the undefined - // language would normally match English. But that would produce the counterintuitive results. - // Matching "und" to "it,en" would be "en" matching "en" to "it,und" would be "und". - // To avoid this max("und") is defined as "und" - { - "undefined", - "it, fr", - []struct{ match, desired string }{ - {"it", "und"}, - }, - }, - { - "und does not match en", - "it, en", - []struct{ match, desired string }{ - {"it", "und"}, - }, - }, - { - "undefined in priority list", - "it, und", - []struct{ match, desired string }{ - {"und", "und"}, - {"it", "en"}, - }, - }, - // Undefined scripts and regions. - { - "undefined", - "it, fr, zh", - []struct{ match, desired string }{ - {"fr", "und-FR"}, - {"zh", "und-CN"}, - {"zh", "und-Hans"}, - {"zh", "und-Hant"}, - {"it", "und-Latn"}, - }, - }, - // Early termination conditions: do not consider all desired strings if - // a match is good enough. - { - "match on maximized tag", - "fr, en-GB, ja, es-ES, es-MX", - []struct{ match, desired string }{ - // ja-JP matches ja on likely subtags, and it's listed first, - // thus it wins over the second preference en-GB. - {"ja", "ja-JP, en-GB"}, - {"ja", "ja-Jpan-JP, en-GB"}, - }, - }, - { - "pick best maximized tag", - "ja, ja-Jpan-US, ja-JP, en, ru", - []struct{ match, desired string }{ - {"ja", "ja-Jpan, ru"}, - {"ja-JP", "ja-JP, ru"}, - {"ja-Jpan-US", "ja-US, ru"}, - }, - }, - { - "termination: pick best maximized match", - "ja, ja-Jpan, ja-JP, en, ru", - []struct{ match, desired string }{ - {"ja-JP", "ja-Jpan-JP, ru"}, - {"ja-Jpan", "ja-Jpan, ru"}, - }, - }, - { - "no match on maximized", - "en, de, fr, ja", - []struct{ match, desired string }{ - // de maximizes to de-DE. - // Pick the exact match for the secondary language instead. - {"fr", "de-CH, fr"}, - }, - }, - - // Test that the CLDR parent relations are correctly preserved by the matcher. - // These matches may change for different CLDR versions. - { - "parent relation preserved", - "en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK", - []struct{ match, desired string }{ - {"en-GB", "en-150"}, - // {"en-GB", "en-001"}, // TODO: currently en, should probably be en-GB - {"en-GB", "en-AU"}, - {"en-GB", "en-BE"}, - {"en-GB", "en-GG"}, - {"en-GB", "en-GI"}, - {"en-GB", "en-HK"}, - {"en-GB", "en-IE"}, - {"en-GB", "en-IM"}, - {"en-GB", "en-IN"}, - {"en-GB", "en-JE"}, - {"en-GB", "en-MT"}, - {"en-GB", "en-NZ"}, - {"en-GB", "en-PK"}, - {"en-GB", "en-SG"}, - {"en-GB", "en-DE"}, - {"en-GB", "en-MT"}, - {"es-AR", "es-AR"}, - {"es-BO", "es-BO"}, - {"es-CL", "es-CL"}, - {"es-CO", "es-CO"}, - {"es-CR", "es-CR"}, - {"es-CU", "es-CU"}, - {"es-DO", "es-DO"}, - {"es-EC", "es-EC"}, - {"es-GT", "es-GT"}, - {"es-HN", "es-HN"}, - {"es-MX", "es-MX"}, - {"es-NI", "es-NI"}, - {"es-PA", "es-PA"}, - {"es-PE", "es-PE"}, - {"es-PR", "es-PR"}, - {"es", "es-PT"}, - {"es-PY", "es-PY"}, - {"es-SV", "es-SV"}, - {"es-419", "es-US"}, // US is not in Latin America, so don't make more specific. - {"es-UY", "es-UY"}, - {"es-VE", "es-VE"}, - {"pt-PT", "pt-AO"}, - {"pt-PT", "pt-CV"}, - {"pt-PT", "pt-GW"}, - {"pt-PT", "pt-MO"}, - {"pt-PT", "pt-MZ"}, - {"pt-PT", "pt-ST"}, - {"pt-PT", "pt-TL"}, - }, - }, - // Options and variants are inherited from user-defined settings. - { - "preserve Unicode extension", - "en, de, sl-nedis", - []struct{ match, desired string }{ - {"de-u-co-phonebk", "de-FR-u-co-phonebk"}, - {"sl-nedis-u-cu-eur", "sl-nedis-u-cu-eur"}, - {"sl-nedis-u-cu-eur", "sl-u-cu-eur"}, - {"sl-nedis-u-cu-eur", "sl-HR-nedis-u-cu-eur"}, - }, - }, -} diff --git a/vendor/golang.org/x/text/language/display/dict_test.go b/vendor/golang.org/x/text/language/display/dict_test.go index f0b1f7831..17b138980 100644 --- a/vendor/golang.org/x/text/language/display/dict_test.go +++ b/vendor/golang.org/x/text/language/display/dict_test.go @@ -16,7 +16,7 @@ func TestLinking(t *testing.T) { compact := getSize(t, `display.English.Languages().Name(language.English)`) if d := base - compact; d < 1.5*1024*1024 { - t.Errorf("size(base)-size(compact) was %d; want > 1.5MB", base, compact) + t.Errorf("size(base) - size(compact) = %d - %d = was %d; want > 1.5MB", base, compact, d) } } diff --git a/vendor/golang.org/x/text/language/display/display.go b/vendor/golang.org/x/text/language/display/display.go index 738afa496..eafe54a85 100644 --- a/vendor/golang.org/x/text/language/display/display.go +++ b/vendor/golang.org/x/text/language/display/display.go @@ -15,8 +15,10 @@ package display // import "golang.org/x/text/language/display" import ( + "fmt" "strings" + "golang.org/x/text/internal/format" "golang.org/x/text/language" ) @@ -32,6 +34,65 @@ All fairly low priority at the moment: - Consider compressing infrequently used languages and decompress on demand. */ +// A Formatter formats a tag in the current language. It is used in conjunction +// with the message package. +type Formatter struct { + lookup func(tag int, x interface{}) string + x interface{} +} + +// Format implements "golang.org/x/text/internal/format".Formatter. +func (f Formatter) Format(state format.State, verb rune) { + // TODO: there are a lot of inefficiencies in this code. Fix it when we + // language.Tag has embedded compact tags. + t := state.Language() + _, index, _ := matcher.Match(t) + str := f.lookup(index, f.x) + if str == "" { + // TODO: use language-specific punctuation. + // TODO: use codePattern instead of language? + if unknown := f.lookup(index, language.Und); unknown != "" { + fmt.Fprintf(state, "%v (%v)", unknown, f.x) + } else { + fmt.Fprintf(state, "[language: %v]", f.x) + } + } else { + state.Write([]byte(str)) + } +} + +// Language returns a Formatter that renders the name for lang in the +// the current language. x may be a language.Base or a language.Tag. +// It renders lang in the default language if no translation for the current +// language is supported. +func Language(lang interface{}) Formatter { + return Formatter{langFunc, lang} +} + +// Region returns a Formatter that renders the name for region in the current +// language. region may be a language.Region or a language.Tag. +// It renders region in the default language if no translation for the current +// language is supported. +func Region(region interface{}) Formatter { + return Formatter{regionFunc, region} +} + +// Script returns a Formatter that renders the name for script in the current +// language. script may be a language.Script or a language.Tag. +// It renders script in the default language if no translation for the current +// language is supported. +func Script(script interface{}) Formatter { + return Formatter{scriptFunc, script} +} + +// Script returns a Formatter that renders the name for tag in the current +// language. tag may be a language.Tag. +// It renders tag in the default language if no translation for the current +// language is supported. +func Tag(tag interface{}) Formatter { + return Formatter{tagFunc, tag} +} + // A Namer is used to get the name for a given value, such as a Tag, Language, // Script or Region. type Namer interface { @@ -84,6 +145,10 @@ func Languages(t language.Tag) Namer { type languageNamer int +func langFunc(i int, x interface{}) string { + return nameLanguage(languageNamer(i), x) +} + func (n languageNamer) name(i int) string { return lookup(langHeaders[:], int(n), i) } @@ -116,6 +181,10 @@ func Scripts(t language.Tag) Namer { type scriptNamer int +func scriptFunc(i int, x interface{}) string { + return nameScript(scriptNamer(i), x) +} + func (n scriptNamer) name(i int) string { return lookup(scriptHeaders[:], int(n), i) } @@ -140,6 +209,10 @@ func Regions(t language.Tag) Namer { type regionNamer int +func regionFunc(i int, x interface{}) string { + return nameRegion(regionNamer(i), x) +} + func (n regionNamer) name(i int) string { return lookup(regionHeaders[:], int(n), i) } @@ -162,6 +235,10 @@ func Tags(t language.Tag) Namer { type tagNamer int +func tagFunc(i int, x interface{}) string { + return nameTag(languageNamer(i), scriptNamer(i), regionNamer(i), x) +} + // Name implements the Namer interface for tag names. func (n tagNamer) Name(x interface{}) string { return nameTag(languageNamer(n), scriptNamer(n), regionNamer(n), x) diff --git a/vendor/golang.org/x/text/language/display/display_test.go b/vendor/golang.org/x/text/language/display/display_test.go index 38aa87591..35f0878eb 100644 --- a/vendor/golang.org/x/text/language/display/display_test.go +++ b/vendor/golang.org/x/text/language/display/display_test.go @@ -7,11 +7,13 @@ package display import ( "fmt" "reflect" + "strings" "testing" "unicode" "golang.org/x/text/internal/testtext" "golang.org/x/text/language" + "golang.org/x/text/message" ) // TODO: test that tables are properly dropped by the linker for various use @@ -326,7 +328,8 @@ func TestTag(t *testing.T) { tag string name string }{ - {"agq", "sr", ""}, // sr is in Value.Languages(), but is not supported by agq. + // sr is in Value.Languages(), but is not supported by agq. + {"agq", "sr", "|[language: sr]"}, {"nl", "nl", "Nederlands"}, // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called // Flemish in English, though. TODO: check if this is a CLDR bug. @@ -346,8 +349,8 @@ func TestTag(t *testing.T) { {"en", firstLang3ace.String(), "Achinese"}, {"en", firstTagAr001.String(), "Modern Standard Arabic"}, {"en", lastTagZhHant.String(), "Traditional Chinese"}, - {"en", "aaa", ""}, - {"en", "zzj", ""}, + {"en", "aaa", "|Unknown language (aaa)"}, + {"en", "zzj", "|Unknown language (zzj)"}, // If full tag doesn't match, try without script or region. {"en", "aa-Hans", "Afar (Simplified Han)"}, {"en", "af-Arab", "Afrikaans (Arabic)"}, @@ -372,26 +375,46 @@ func TestTag(t *testing.T) { {"ro", "ro-MD", "moldovenească"}, {"ro", "mo", "moldovenească"}, } - for i, tt := range tests { - d := Tags(language.MustParse(tt.dict)) - if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name { - // There are inconsistencies w.r.t. capitalization in the tests - // due to CLDR's update procedure which treats modern and other - // languages differently. - // See http://unicode.org/cldr/trac/ticket/8051. - // TODO: use language capitalization to sanitize the strings. - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.tag, n, tt.name) - } + for _, tt := range tests { + t.Run(tt.dict+"/"+tt.tag, func(t *testing.T) { + name, fmtName := splitName(tt.name) + dict := language.MustParse(tt.dict) + tag := language.Raw.MustParse(tt.tag) + d := Tags(dict) + if n := d.Name(tag); n != name { + // There are inconsistencies w.r.t. capitalization in the tests + // due to CLDR's update procedure which treats modern and other + // languages differently. + // See http://unicode.org/cldr/trac/ticket/8051. + // TODO: use language capitalization to sanitize the strings. + t.Errorf("Name(%s) = %q; want %q", tag, n, name) + } + + p := message.NewPrinter(dict) + if n := p.Sprint(Tag(tag)); n != fmtName { + t.Errorf("Tag(%s) = %q; want %q", tag, n, fmtName) + } + }) } } +func splitName(names string) (name, formatName string) { + split := strings.Split(names, "|") + name, formatName = split[0], split[0] + if len(split) > 1 { + formatName = split[1] + } + return name, formatName +} + func TestLanguage(t *testing.T) { tests := []struct { dict string tag string name string }{ - {"agq", "sr", ""}, // sr is in Value.Languages(), but is not supported by agq. + // sr is in Value.Languages(), but is not supported by agq. + {"agq", "sr", "|[language: sr]"}, // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called // Flemish in English, though. TODO: this is probably incorrect. // West-Vlaams (vls) is not Vlaams. West-Vlaams could be considered its @@ -412,8 +435,8 @@ func TestLanguage(t *testing.T) { {"en", firstLang3ace.String(), "Achinese"}, {"en", firstTagAr001.String(), "Modern Standard Arabic"}, {"en", lastTagZhHant.String(), "Traditional Chinese"}, - {"en", "aaa", ""}, - {"en", "zzj", ""}, + {"en", "aaa", "|Unknown language (aaa)"}, + {"en", "zzj", "|Unknown language (zzj)"}, // If full tag doesn't match, try without script or region. {"en", "aa-Hans", "Afar"}, {"en", "af-Arab", "Afrikaans"}, @@ -421,7 +444,7 @@ func TestLanguage(t *testing.T) { {"en", "aa-GB", "Afar"}, {"en", "af-NA", "Afrikaans"}, {"en", "zu-BR", "Zulu"}, - {"agq", "zh-Hant", ""}, + {"agq", "zh-Hant", "|[language: zh-Hant]"}, // Canonical equivalents. {"ro", "ro-MD", "moldovenească"}, {"ro", "mo", "moldovenească"}, @@ -431,15 +454,26 @@ func TestLanguage(t *testing.T) { {"en", "sr-ME", "Serbian"}, {"en", "sr-Latn-ME", "Serbo-Croatian"}, // See comments in TestTag. } - for i, tt := range tests { + for _, tt := range tests { testtext.Run(t, tt.dict+"/"+tt.tag, func(t *testing.T) { - d := Languages(language.Raw.MustParse(tt.dict)) - if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name { - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.tag, n, tt.name) + name, fmtName := splitName(tt.name) + dict := language.MustParse(tt.dict) + tag := language.Raw.MustParse(tt.tag) + p := message.NewPrinter(dict) + d := Languages(dict) + if n := d.Name(tag); n != name { + t.Errorf("Name(%v) = %q; want %q", tag, n, name) + } + if n := p.Sprint(Language(tag)); n != fmtName { + t.Errorf("Language(%v) = %q; want %q", tag, n, fmtName) } if len(tt.tag) <= 3 { - if n := d.Name(language.MustParseBase(tt.tag)); n != tt.name { - t.Errorf("%d:%s:base(%s): was %q; want %q", i, tt.dict, tt.tag, n, tt.name) + base := language.MustParseBase(tt.tag) + if n := d.Name(base); n != name { + t.Errorf("Name(%v) = %q; want %q", base, n, name) + } + if n := p.Sprint(Language(base)); n != fmtName { + t.Errorf("Language(%v) = %q; want %q", base, n, fmtName) } } }) @@ -468,21 +502,32 @@ func TestScript(t *testing.T) { // Don't introduce scripts with canonicalization. {"en", "sh", "Unknown Script"}, // sh canonicalizes to sr-Latn } - for i, tt := range tests { - d := Scripts(language.MustParse(tt.dict)) - var x interface{} - if unicode.IsUpper(rune(tt.scr[0])) { - x = language.MustParseScript(tt.scr) - tag, _ := language.Raw.Compose(x) - if n := d.Name(tag); n != tt.name { - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.scr, n, tt.name) + for _, tt := range tests { + t.Run(tt.dict+"/"+tt.scr, func(t *testing.T) { + name, fmtName := splitName(tt.name) + dict := language.MustParse(tt.dict) + p := message.NewPrinter(dict) + d := Scripts(dict) + var tag language.Tag + if unicode.IsUpper(rune(tt.scr[0])) { + x := language.MustParseScript(tt.scr) + if n := d.Name(x); n != name { + t.Errorf("Name(%v) = %q; want %q", x, n, name) + } + if n := p.Sprint(Script(x)); n != fmtName { + t.Errorf("Script(%v) = %q; want %q", x, n, fmtName) + } + tag, _ = language.Raw.Compose(x) + } else { + tag = language.Raw.MustParse(tt.scr) } - } else { - x = language.Raw.MustParse(tt.scr) - } - if n := d.Name(x); n != tt.name { - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.scr, n, tt.name) - } + if n := d.Name(tag); n != name { + t.Errorf("Name(%v) = %q; want %q", tag, n, name) + } + if n := p.Sprint(Script(tag)); n != fmtName { + t.Errorf("Script(%v) = %q; want %q", tag, n, fmtName) + } + }) } } @@ -506,23 +551,32 @@ func TestRegion(t *testing.T) { // Don't introduce regions with canonicalization. {"en", "mo", "Unknown Region"}, } - for i, tt := range tests { - d := Regions(language.MustParse(tt.dict)) - var x interface{} - if unicode.IsUpper(rune(tt.reg[0])) { - // Region - x = language.MustParseRegion(tt.reg) - tag, _ := language.Raw.Compose(x) - if n := d.Name(tag); n != tt.name { - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.reg, n, tt.name) + for _, tt := range tests { + t.Run(tt.dict+"/"+tt.reg, func(t *testing.T) { + dict := language.MustParse(tt.dict) + p := message.NewPrinter(dict) + d := Regions(dict) + var tag language.Tag + if unicode.IsUpper(rune(tt.reg[0])) { + // Region + x := language.MustParseRegion(tt.reg) + if n := d.Name(x); n != tt.name { + t.Errorf("Name(%v) = %q; want %q", x, n, tt.name) + } + if n := p.Sprint(Region(x)); n != tt.name { + t.Errorf("Region(%v) = %q; want %q", x, n, tt.name) + } + tag, _ = language.Raw.Compose(x) + } else { + tag = language.Raw.MustParse(tt.reg) } - } else { - // Tag - x = language.Raw.MustParse(tt.reg) - } - if n := d.Name(x); n != tt.name { - t.Errorf("%d:%s:%s: was %q; want %q", i, tt.dict, tt.reg, n, tt.name) - } + if n := d.Name(tag); n != tt.name { + t.Errorf("Name(%v) = %q; want %q", tag, n, tt.name) + } + if n := p.Sprint(Region(tag)); n != tt.name { + t.Errorf("Region(%v) = %q; want %q", tag, n, tt.name) + } + }) } } diff --git a/vendor/golang.org/x/text/language/display/examples_test.go b/vendor/golang.org/x/text/language/display/examples_test.go index f392f2109..15d758434 100644 --- a/vendor/golang.org/x/text/language/display/examples_test.go +++ b/vendor/golang.org/x/text/language/display/examples_test.go @@ -9,8 +9,26 @@ import ( "golang.org/x/text/language" "golang.org/x/text/language/display" + "golang.org/x/text/message" ) +func ExampleFormatter() { + message.SetString(language.Dutch, "In %v people speak %v.", "In %v spreekt men %v.") + + fr := language.French + region, _ := fr.Region() + for _, tag := range []string{"en", "nl"} { + p := message.NewPrinter(language.Make(tag)) + + p.Printf("In %v people speak %v.", display.Region(region), display.Language(fr)) + p.Println() + } + + // Output: + // In France people speak French. + // In Frankrijk spreekt men Frans. +} + func ExampleNamer() { supported := []string{ "en-US", "en-GB", "ja", "zh", "zh-Hans", "zh-Hant", "pt", "pt-PT", "ko", "ar", "el", "ru", "uk", "pa", diff --git a/vendor/golang.org/x/text/language/display/maketables.go b/vendor/golang.org/x/text/language/display/maketables.go index 3fcd9c87d..8f2fd076b 100644 --- a/vendor/golang.org/x/text/language/display/maketables.go +++ b/vendor/golang.org/x/text/language/display/maketables.go @@ -205,7 +205,13 @@ func (b *builder) generate() { b.setData("lang", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) { if ldn.Languages != nil { for _, v := range ldn.Languages.Language { - tag := tagForm.MustParse(v.Type) + lang := v.Type + if lang == "root" { + // We prefer the data from "und" + // TODO: allow both the data for root and und somehow. + continue + } + tag := tagForm.MustParse(lang) if tags.contains(tag) { g.set(loc, tag.String(), v.Data()) } diff --git a/vendor/golang.org/x/text/language/display/tables.go b/vendor/golang.org/x/text/language/display/tables.go index 6493357ef..eb297e33f 100644 --- a/vendor/golang.org/x/text/language/display/tables.go +++ b/vendor/golang.org/x/text/language/display/tables.go @@ -497,16 +497,16 @@ var langHeaders = [252]header{ "sianutulutimnetesoterenatetumtigretivtokelautsakhurklingontlingittal" + "ixíntamashektonga nyasatok pisinturoyotarokotsakoniutsimshiantati mu" + "sulmántumbukatuvalutasawaqtuvinianutamazight del Atles centraludmurt" + - "ugaríticuumbundurootvaivenecianuvepsiuflamencu occidentalfranconianu" + - " del Mainvóticuvorovunjowalserwolayttawaraywashowarlpirichinu wucalm" + - "ucomingrelianusogayaoyapésyangbenyembanheengatucantonészapotecasimbó" + - "licu Blisszeelandészenagatamazight estándar de Marruecoszuniensin co" + - "nteníu llingüísticuzazaárabe estándar modernualemán d’Austriaaltuale" + - "mán de Suizainglés d’Australiainglés de Canadáinglés de Gran Bretaña" + - "inglés d’Estaos Xuníosespañol d’América Llatinaespañol européuespaño" + - "l de Méxicufrancés de Canadáfrancés de Suizabaxu saxónflamencuportug" + - "ués del Brasilportugués européumoldavuserbo-croatasuaḥili del Conguc" + - "hinu simplificáuchinu tradicional", + "ugaríticuumbundullingua desconocidavaivenecianuvepsiuflamencu occide" + + "ntalfranconianu del Mainvóticuvorovunjowalserwolayttawaraywashowarlp" + + "irichinu wucalmucomingrelianusogayaoyapésyangbenyembanheengatucanton" + + "észapotecasimbólicu Blisszeelandészenagatamazight estándar de Marru" + + "ecoszuniensin conteníu llingüísticuzazaárabe estándar modernualemán " + + "d’Austriaaltualemán de Suizainglés d’Australiainglés de Canadáinglés" + + " de Gran Bretañainglés d’Estaos Xuníosespañol d’América Llatinaespañ" + + "ol européuespañol de Méxicufrancés de Canadáfrancés de Suizabaxu sax" + + "ónflamencuportugués del Brasilportugués européumoldavuserbo-croatas" + + "uaḥili del Conguchinu simplificáuchinu tradicional", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x0018, 0x0021, 0x0025, 0x002e, 0x0037, @@ -586,15 +586,15 @@ var langHeaders = [252]header{ 0x1109, 0x1112, 0x1116, 0x111b, 0x111f, 0x1125, 0x112a, 0x112f, 0x1132, 0x1139, 0x1140, 0x1147, 0x114e, 0x1156, 0x115e, 0x1169, 0x1172, 0x1178, 0x117e, 0x1186, 0x118f, 0x119d, 0x11a4, 0x11aa, - 0x11b1, 0x11ba, 0x11d5, 0x11db, 0x11e5, 0x11ec, 0x11f0, 0x11f3, - 0x11fc, 0x1202, 0x1215, 0x1229, 0x1230, 0x1234, 0x1239, 0x123f, - 0x1247, 0x124c, 0x1251, 0x1259, 0x1261, 0x1268, 0x1273, 0x1277, + 0x11b1, 0x11ba, 0x11d5, 0x11db, 0x11e5, 0x11ec, 0x11ff, 0x1202, + 0x120b, 0x1211, 0x1224, 0x1238, 0x123f, 0x1243, 0x1248, 0x124e, + 0x1256, 0x125b, 0x1260, 0x1268, 0x1270, 0x1277, 0x1282, 0x1286, // Entry 240 - 27F - 0x127a, 0x1280, 0x1287, 0x128c, 0x1295, 0x129e, 0x12a6, 0x12b6, - 0x12c0, 0x12c6, 0x12e6, 0x12ea, 0x1308, 0x130c, 0x1324, 0x1324, - 0x1337, 0x134b, 0x1360, 0x1372, 0x138a, 0x13a4, 0x13c1, 0x13d2, - 0x13e5, 0x13e5, 0x13f8, 0x1409, 0x1414, 0x141c, 0x1431, 0x1444, - 0x144b, 0x1457, 0x146a, 0x147c, 0x148d, + 0x1289, 0x128f, 0x1296, 0x129b, 0x12a4, 0x12ad, 0x12b5, 0x12c5, + 0x12cf, 0x12d5, 0x12f5, 0x12f9, 0x1317, 0x131b, 0x1333, 0x1333, + 0x1346, 0x135a, 0x136f, 0x1381, 0x1399, 0x13b3, 0x13d0, 0x13e1, + 0x13f4, 0x13f4, 0x1407, 0x1418, 0x1423, 0x142b, 0x1440, 0x1453, + 0x145a, 0x1466, 0x1479, 0x148b, 0x149c, }, }, { // az @@ -635,13 +635,13 @@ var langHeaders = [252]header{ "ојраборо сеннитачелитшанҹәнуби самилуле самиинари самисколт самисон" + "инкесранан тонгосаһосукумакоморсуријатимнетесотетумтигреклингонток " + "писинтарокотумбукатувалутасавагтувинјанМәркәзи Атлас тамазиҹәсиудму" + - "ртумбундурутваивунјоваллесваламоварајкалмыксогајангбенјембакантонта" + - "мазизунидил мәзмуну јохдурзазамүасир стандарт әрәбАвстрија алманҹас" + - "ыИсвечрә јүксәк алманҹасыАвстралија инҝилисҹәсиКанада инҝилисҹәсиБр" + - "итанија инҝилисҹәсиАмерика инҝилисҹәсиЛатын Америкасы испанҹасыКаст" + - "илија испанҹасыМексика испанҹасыКанада франсызҹасыИсвечрә франсызҹа" + - "сыашағы саксонфламандБразилија португалҹасыПортугалија португалҹасы" + - "Конго суаһилиҹәсисадәләшмиш чинәнәнәви чин", + "ртумбундунамәлум дилваивунјоваллесваламоварајкалмыксогајангбенјемба" + + "кантонтамазизунидил мәзмуну јохдурзазамүасир стандарт әрәбАвстрија " + + "алманҹасыИсвечрә јүксәк алманҹасыАвстралија инҝилисҹәсиКанада инҝил" + + "исҹәсиБританија инҝилисҹәсиАмерика инҝилисҹәсиЛатын Америкасы испан" + + "ҹасыКастилија испанҹасыМексика испанҹасыКанада франсызҹасыИсвечрә ф" + + "рансызҹасыашағы саксонфламандБразилија португалҹасыПортугалија порт" + + "угалҹасыКонго суаһилиҹәсисадәләшмиш чинәнәнәви чин", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0008, 0x0012, 0x0012, 0x0024, 0x002c, 0x0036, 0x0042, @@ -721,15 +721,15 @@ var langHeaders = [252]header{ 0x1071, 0x1071, 0x1071, 0x107b, 0x1083, 0x1083, 0x108d, 0x1097, 0x1097, 0x1097, 0x1097, 0x10a5, 0x10a5, 0x10a5, 0x10a5, 0x10a5, 0x10b6, 0x10b6, 0x10c2, 0x10c2, 0x10c2, 0x10c2, 0x10d0, 0x10dc, - 0x10ea, 0x10fa, 0x1128, 0x1134, 0x1134, 0x1142, 0x1148, 0x114e, - 0x114e, 0x114e, 0x114e, 0x114e, 0x114e, 0x114e, 0x1158, 0x1164, - 0x1170, 0x117a, 0x117a, 0x117a, 0x117a, 0x1186, 0x1186, 0x118e, + 0x10ea, 0x10fa, 0x1128, 0x1134, 0x1134, 0x1142, 0x1157, 0x115d, + 0x115d, 0x115d, 0x115d, 0x115d, 0x115d, 0x115d, 0x1167, 0x1173, + 0x117f, 0x1189, 0x1189, 0x1189, 0x1189, 0x1195, 0x1195, 0x119d, // Entry 240 - 27F - 0x118e, 0x118e, 0x119c, 0x11a6, 0x11a6, 0x11b2, 0x11b2, 0x11b2, - 0x11b2, 0x11b2, 0x11be, 0x11c6, 0x11e8, 0x11f0, 0x1216, 0x1216, - 0x1239, 0x1267, 0x1292, 0x12b5, 0x12de, 0x1303, 0x1333, 0x1358, - 0x1379, 0x1379, 0x139c, 0x13c1, 0x13d8, 0x13e6, 0x1411, 0x1440, - 0x1440, 0x1440, 0x1461, 0x147c, 0x1491, + 0x119d, 0x119d, 0x11ab, 0x11b5, 0x11b5, 0x11c1, 0x11c1, 0x11c1, + 0x11c1, 0x11c1, 0x11cd, 0x11d5, 0x11f7, 0x11ff, 0x1225, 0x1225, + 0x1248, 0x1276, 0x12a1, 0x12c4, 0x12ed, 0x1312, 0x1342, 0x1367, + 0x1388, 0x1388, 0x13ab, 0x13d0, 0x13e7, 0x13f5, 0x1420, 0x144f, + 0x144f, 0x144f, 0x1470, 0x148b, 0x14a0, }, }, { // bas @@ -823,16 +823,16 @@ var langHeaders = [252]header{ "ітшанпаўднёвасаамскаялуле-саамскаяінары-саамскаяколта-саамскаясанін" + "кесранан-тонгасахасукумашумерскаякаморскаясірыйскаятэмнэтэсотэтумты" + "грэклінганток-пісінтарокатумбукатувалутасаўактувінскаяцэнтральнаатл" + - "аская тамазіхтудмурцкаяумбундукораньваівунджовальшскаяволайтаварайв" + - "арлпірыкалмыцкаясогаянгбэнйембакантонскі дыялект кітайскайсапатэкст" + - "андартная мараканская тамазіхтзуніняма моўнага матэрыялузазакісучас" + - "ная стандартная арабскаяаўстрыйская нямецкаяшвейцарская стандартная" + - " нямецкаяаўстралійская англійскаяканадская англійскаябрытанская англ" + - "ійскаяамерыканская англійскаялацінаамерыканская іспанскаяеўрапейска" + - "я іспанскаямексіканская іспанскаяканадская французскаяшвейцарская ф" + - "ранцузскаяніжнесаксонскаяфламандскаябразільская партугальскаяеўрапе" + - "йская партугальскаямалдаўская румынскаясербскахарвацкаякангалезская" + - " суахіліспрошчаная кітайскаятрадыцыйная кітайская", + "аская тамазіхтудмурцкаяумбундуневядомая моваваівунджовальшскаяволай" + + "таварайварлпірыкалмыцкаясогаянгбэнйембакантонскі дыялект кітайскайс" + + "апатэкстандартная мараканская тамазіхтзуніняма моўнага матэрыялузаз" + + "акісучасная стандартная арабскаяаўстрыйская нямецкаяшвейцарская ста" + + "ндартная нямецкаяаўстралійская англійскаяканадская англійскаябрытан" + + "ская англійскаяамерыканская англійскаялацінаамерыканская іспанскаяе" + + "ўрапейская іспанскаямексіканская іспанскаяканадская французскаяшвей" + + "царская французскаяніжнесаксонскаяфламандскаябразільская партугальс" + + "каяеўрапейская партугальскаямалдаўская румынскаясербскахарвацкаякан" + + "галезская суахіліспрошчаная кітайскаятрадыцыйная кітайская", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x003c, 0x004e, 0x0062, @@ -912,15 +912,15 @@ var langHeaders = [252]header{ 0x17e3, 0x17e3, 0x17e3, 0x17ed, 0x17f5, 0x17f5, 0x17ff, 0x1809, 0x1809, 0x1809, 0x1809, 0x1817, 0x1817, 0x1817, 0x1817, 0x1817, 0x1828, 0x1828, 0x1834, 0x1834, 0x1834, 0x1834, 0x1842, 0x184e, - 0x185c, 0x186e, 0x18a3, 0x18b5, 0x18b5, 0x18c3, 0x18cf, 0x18d5, - 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18e1, 0x18f3, - 0x1901, 0x190b, 0x190b, 0x191b, 0x191b, 0x192d, 0x192d, 0x1935, + 0x185c, 0x186e, 0x18a3, 0x18b5, 0x18b5, 0x18c3, 0x18de, 0x18e4, + 0x18e4, 0x18e4, 0x18e4, 0x18e4, 0x18e4, 0x18e4, 0x18f0, 0x1902, + 0x1910, 0x191a, 0x191a, 0x192a, 0x192a, 0x193c, 0x193c, 0x1944, // Entry 240 - 27F - 0x1935, 0x1935, 0x1941, 0x194b, 0x194b, 0x197f, 0x198d, 0x198d, - 0x198d, 0x198d, 0x19cb, 0x19d3, 0x19fd, 0x1a09, 0x1a41, 0x1a41, - 0x1a68, 0x1aa6, 0x1ad5, 0x1afc, 0x1b25, 0x1b52, 0x1b89, 0x1bb2, - 0x1bdd, 0x1bdd, 0x1c06, 0x1c33, 0x1c51, 0x1c67, 0x1c98, 0x1cc9, - 0x1cf0, 0x1d10, 0x1d37, 0x1d5e, 0x1d87, + 0x1944, 0x1944, 0x1950, 0x195a, 0x195a, 0x198e, 0x199c, 0x199c, + 0x199c, 0x199c, 0x19da, 0x19e2, 0x1a0c, 0x1a18, 0x1a50, 0x1a50, + 0x1a77, 0x1ab5, 0x1ae4, 0x1b0b, 0x1b34, 0x1b61, 0x1b98, 0x1bc1, + 0x1bec, 0x1bec, 0x1c15, 0x1c42, 0x1c60, 0x1c76, 0x1ca7, 0x1cd8, + 0x1cff, 0x1d1f, 0x1d46, 0x1d6d, 0x1d96, }, }, { // bem @@ -1400,12 +1400,12 @@ var langHeaders = [252]header{ "ीलुले सामीईनारी सामीस्कोल्ट् सामीसोनिंगकेसोगडीयनस्रनान् टॉंगोसेरेर" + "सुकुमासुसुसुमेरिअनपारंपरीक सिरिआकसिरिआकतीमनेतेरेनोतेतुमटीग्रेटीव्ट" + "ोकेलौक्लींगदनट्लिंगीततमाशेकन्यासा टॉंगातोक पिसीनत्सीमशीआन्टुँबुकाट" + - "ुवालुटुवीउड़मुर्तउगारितीउंबुंडुरुटवाईवोटीकवालामोवारयवाशोकालमीकयाओय" + - "ापीज़ज़ापोतेकब्लीस चिन्हज़ेनागाज़ुनीरिक्तज़ाज़ाजर्मन (ऑस्ट्रिया)उच" + - "्च स्तरिय स्वीस जर्मनअंग्रेज़ी (ऑस्ट्रेलिया का)अंग्रेज़ी (कनाडाई)अ" + - "ंग्रेजी (ब्रिटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्पैनिशईवेरियाई स्" + - "पैनिशफ्रांसीसी (कनाडाई)फ्रांसीसी (स्वीस)फ्लेमीमोल्डेवियन्सर्बो-क्र" + - "ोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)", + "ुवालुटुवीउड़मुर्तउगारितीउंबुंडुअज्ञात या अवैध भाषावाईवोटीकवालामोवा" + + "रयवाशोकालमीकयाओयापीज़ज़ापोतेकब्लीस चिन्हज़ेनागाज़ुनीरिक्तज़ाज़ाजर्" + + "मन (ऑस्ट्रिया)उच्च स्तरिय स्वीस जर्मनअंग्रेज़ी (ऑस्ट्रेलिया का)अंग" + + "्रेज़ी (कनाडाई)अंग्रेजी (ब्रिटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्" + + "पैनिशईवेरियाई स्पैनिशफ्रांसीसी (कनाडाई)फ्रांसीसी (स्वीस)फ्लेमीमोल्" + + "डेवियन्सर्बो-क्रोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0021, 0x0036, 0x004b, 0x0054, 0x006f, 0x0084, @@ -1485,15 +1485,15 @@ var langHeaders = [252]header{ 0x208f, 0x208f, 0x208f, 0x209e, 0x209e, 0x20b0, 0x20bf, 0x20d1, 0x20dd, 0x20ef, 0x20ef, 0x2107, 0x211f, 0x211f, 0x2131, 0x2153, 0x216c, 0x216c, 0x216c, 0x216c, 0x218a, 0x218a, 0x219f, 0x21b1, - 0x21b1, 0x21bd, 0x21bd, 0x21d5, 0x21ea, 0x21ff, 0x2208, 0x2211, - 0x2211, 0x2211, 0x2211, 0x2211, 0x2220, 0x2220, 0x2220, 0x2220, - 0x2232, 0x223e, 0x224a, 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, + 0x21b1, 0x21bd, 0x21bd, 0x21d5, 0x21ea, 0x21ff, 0x2232, 0x223b, + 0x223b, 0x223b, 0x223b, 0x223b, 0x224a, 0x224a, 0x224a, 0x224a, + 0x225c, 0x2268, 0x2274, 0x2274, 0x2274, 0x2286, 0x2286, 0x2286, // Entry 240 - 27F - 0x2265, 0x2277, 0x2277, 0x2277, 0x2277, 0x2277, 0x228f, 0x22ae, - 0x22ae, 0x22c3, 0x22c3, 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x22f3, - 0x2320, 0x235f, 0x23a5, 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, - 0x249b, 0x249b, 0x24cb, 0x24f8, 0x24f8, 0x250a, 0x250a, 0x250a, - 0x252b, 0x2553, 0x2553, 0x2577, 0x25a1, + 0x228f, 0x22a1, 0x22a1, 0x22a1, 0x22a1, 0x22a1, 0x22b9, 0x22d8, + 0x22d8, 0x22ed, 0x22ed, 0x22fc, 0x230b, 0x231d, 0x231d, 0x231d, + 0x234a, 0x2389, 0x23cf, 0x23ff, 0x242f, 0x245f, 0x2497, 0x24c5, + 0x24c5, 0x24c5, 0x24f5, 0x2522, 0x2522, 0x2534, 0x2534, 0x2534, + 0x2555, 0x257d, 0x257d, 0x25a1, 0x25cb, }, }, { // bs @@ -1552,12 +1552,12 @@ var langHeaders = [252]header{ "kesogdiensrananski tongoserersahosukumasususumerskikomorskiklasični " + "sirijskisirijskitimnetesoterenotetumtigretivtokelauklingonskitlingit" + "tamašeknjasa tongatok pisintarokotsimšiantumbukatuvalutasavaktuvinij" + - "skicentralnoatlaski tamazigtudmurtugaritskiumbundukorijenskivaivotsk" + - "ivunjovalservalamovarejvašovarlpirikalmiksogajaojapeškijangbenjembak" + - "antonskizapotečkiblis simbolizenagastandardni marokanski tamazigtzun" + - "ibez lingvističkog sadržajazazamoderni standardni arapskigornjonjema" + - "čki (Švicarska)donjosaksonskiflamanskimoldavskisrpskohrvatskikinesk" + - "i (pojednostavljeni)kineski (tradicionalni)", + "skicentralnoatlaski tamazigtudmurtugaritskiumbundunepoznati jezikvai" + + "votskivunjovalservalamovarejvašovarlpirikalmiksogajaojapeškijangbenj" + + "embakantonskizapotečkiblis simbolizenagastandardni marokanski tamazi" + + "gtzunibez lingvističkog sadržajazazamoderni standardni arapskigornjo" + + "njemački (Švicarska)donjosaksonskiflamanskimoldavskisrpskohrvatskiki" + + "neski (pojednostavljeni)kineski (tradicionalni)", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0024, 0x002c, 0x0035, @@ -1637,15 +1637,15 @@ var langHeaders = [252]header{ 0x0e87, 0x0e87, 0x0e87, 0x0e8c, 0x0e90, 0x0e96, 0x0e9b, 0x0ea0, 0x0ea3, 0x0eaa, 0x0eaa, 0x0eb4, 0x0ebb, 0x0ebb, 0x0ec3, 0x0ece, 0x0ed7, 0x0ed7, 0x0edd, 0x0edd, 0x0ee6, 0x0ee6, 0x0eed, 0x0ef3, - 0x0efa, 0x0f04, 0x0f1d, 0x0f23, 0x0f2c, 0x0f33, 0x0f3d, 0x0f40, - 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f46, 0x0f46, 0x0f4b, 0x0f51, - 0x0f57, 0x0f5c, 0x0f61, 0x0f69, 0x0f69, 0x0f6f, 0x0f6f, 0x0f73, + 0x0efa, 0x0f04, 0x0f1d, 0x0f23, 0x0f2c, 0x0f33, 0x0f42, 0x0f45, + 0x0f45, 0x0f45, 0x0f45, 0x0f45, 0x0f4b, 0x0f4b, 0x0f50, 0x0f56, + 0x0f5c, 0x0f61, 0x0f66, 0x0f6e, 0x0f6e, 0x0f74, 0x0f74, 0x0f78, // Entry 240 - 27F - 0x0f76, 0x0f7e, 0x0f85, 0x0f8a, 0x0f8a, 0x0f93, 0x0f9d, 0x0fa9, - 0x0fa9, 0x0faf, 0x0fcd, 0x0fd1, 0x0fed, 0x0ff1, 0x100b, 0x100b, - 0x100b, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, - 0x1027, 0x1027, 0x1027, 0x1027, 0x1035, 0x103e, 0x103e, 0x103e, - 0x1047, 0x1055, 0x1055, 0x106f, 0x1086, + 0x0f7b, 0x0f83, 0x0f8a, 0x0f8f, 0x0f8f, 0x0f98, 0x0fa2, 0x0fae, + 0x0fae, 0x0fb4, 0x0fd2, 0x0fd6, 0x0ff2, 0x0ff6, 0x1010, 0x1010, + 0x1010, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, 0x102c, + 0x102c, 0x102c, 0x102c, 0x102c, 0x103a, 0x1043, 0x1043, 0x1043, + 0x104c, 0x105a, 0x105a, 0x1074, 0x108b, }, }, { // bs-Cyrl @@ -1696,13 +1696,13 @@ var langHeaders = [252]header{ "нинкесоџијенскисранански тонгосерерсукумасусусумерскикоморскикласич" + "ни сиријскисиријскитимнетеренотетумтигретивтокелауклингонскитлингит" + "тамашекњаса тонгаток писинтсимшиантумбукатувалутувинијскиудмуртугар" + - "итскиумбундурутваивотскиваламоварајвашокалмикјаојапешкикантонскизап" + - "отечкиблисимболизенагазунибез лингвистичког садржајазазаАустријски " + - "немачкиШвајцарски високи немачкиАустралијски енглескиКанадски енгле" + - "скиБритански енглескиСАД енглескиЛатино-амерички шпанскиИберијски ш" + - "панскиКанадски францускиШвајцарски францускифламанскиБразилски порт" + - "угалскиИберијски португалскимолдавскисрпскохрватскикинески (поједно" + - "стављен)кинески (традиционални)", + "итскиумбундунепознат или неважећи језикваивотскиваламоварајвашокалм" + + "икјаојапешкикантонскизапотечкиблисимболизенагазунибез лингвистичког" + + " садржајазазаАустријски немачкиШвајцарски високи немачкиАустралијски" + + " енглескиКанадски енглескиБритански енглескиСАД енглескиЛатино-амери" + + "чки шпанскиИберијски шпанскиКанадски францускиШвајцарски францускиф" + + "ламанскиБразилски португалскиИберијски португалскимолдавскисрпскохр" + + "ватскикинески (поједностављен)кинески (традиционални)", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000e, 0x0022, 0x0036, 0x004e, 0x0056, 0x0066, 0x0080, @@ -1782,15 +1782,15 @@ var langHeaders = [252]header{ 0x1797, 0x1797, 0x1797, 0x17a1, 0x17a1, 0x17ad, 0x17b7, 0x17c1, 0x17c7, 0x17d5, 0x17d5, 0x17e9, 0x17f7, 0x17f7, 0x1805, 0x1818, 0x1829, 0x1829, 0x1829, 0x1829, 0x1839, 0x1839, 0x1847, 0x1853, - 0x1853, 0x1867, 0x1867, 0x1873, 0x1885, 0x1893, 0x1899, 0x189f, - 0x189f, 0x189f, 0x189f, 0x189f, 0x18ab, 0x18ab, 0x18ab, 0x18ab, - 0x18b7, 0x18c1, 0x18c9, 0x18c9, 0x18c9, 0x18d5, 0x18d5, 0x18d5, + 0x1853, 0x1867, 0x1867, 0x1873, 0x1885, 0x1893, 0x18c6, 0x18cc, + 0x18cc, 0x18cc, 0x18cc, 0x18cc, 0x18d8, 0x18d8, 0x18d8, 0x18d8, + 0x18e4, 0x18ee, 0x18f6, 0x18f6, 0x18f6, 0x1902, 0x1902, 0x1902, // Entry 240 - 27F - 0x18db, 0x18e9, 0x18e9, 0x18e9, 0x18e9, 0x18fb, 0x190d, 0x1921, - 0x1921, 0x192d, 0x192d, 0x1935, 0x1967, 0x196f, 0x196f, 0x196f, - 0x1992, 0x19c2, 0x19eb, 0x1a0c, 0x1a2f, 0x1a46, 0x1a72, 0x1a93, - 0x1a93, 0x1a93, 0x1ab6, 0x1add, 0x1add, 0x1aef, 0x1b18, 0x1b41, - 0x1b53, 0x1b6f, 0x1b6f, 0x1b9c, 0x1bc7, + 0x1908, 0x1916, 0x1916, 0x1916, 0x1916, 0x1928, 0x193a, 0x194e, + 0x194e, 0x195a, 0x195a, 0x1962, 0x1994, 0x199c, 0x199c, 0x199c, + 0x19bf, 0x19ef, 0x1a18, 0x1a39, 0x1a5c, 0x1a73, 0x1a9f, 0x1ac0, + 0x1ac0, 0x1ac0, 0x1ae3, 0x1b0a, 0x1b0a, 0x1b1c, 0x1b45, 0x1b6e, + 0x1b80, 0x1b9c, 0x1b9c, 0x1bc9, 0x1bf4, }, }, { // ca @@ -1989,11 +1989,11 @@ var langHeaders = [252]header{ "ᏆᎳᎤᏩᏂᎾᎩᎵᎠᏂ ᏈᏥᏂᏡᏏᎠᏂᎩᏤᎳᏆᏄᏫᎳᎶᏙᎾᎦᏂᎶᎹᏉᎠᏬᎹᏂᎠᏂᏆᏌᏅᏓᏫᏌᎧᎾᏌᎹᏊᎷᏌᏂᏔᎵᎾᎦᎹᏇᏌᏁᎫᏏᏏᎵᎠ" + "ᏂᏍᎦᏗᏏᏂᎦᏎᎾᎪᏱᎳᏈᎶ ᏎᏂᏔᏤᎵᎯᏘᏝᏂᏧᎦᎾᏮ ᏗᏜ ᏌᎻᎷᎴ ᏌᎻᎢᎾᎵ ᏌᎻᏍᎪᎵᏘ ᏌᎻᏐᏂᏂᎨᏏᎳᎾᏂ ᏙᏃᎪᏌᎰ" + "ᏑᎫᎹᎪᎼᎵᎠᏂᏏᎵᎠᎩᏘᎹᏁᏖᏐᏖᏚᎼᏢᏓᏥᏟᎦᎾᏙᎩ ᏈᏏᏂᏔᎶᎪᏛᎹᏊᎧᏚᏩᎷᏔᏌᏩᎩᏚᏫᏂᎠᏂᎠᏰᏟ ᎡᎶᎯ ᏓᏟᎶᏍᏗᏓᏅ" + - "Ꭲ ᏔᎹᏏᏘᎤᏚᎷᏘᎤᎹᏊᏅᏚᎤᎾᏍᎦᎸᏩᏱᏭᎾᏦᏩᎵᏎᎵᏬᎳᏱᏔᏩᎴᎧᎳᎻᎧᏐᎦᏰᎾᎦᏇᏂᏰᎹᏋᎨᎾᏙᏂᏏᎠᏟᎶᏍᏗ ᎼᎶᎪ ᏔᎹ" + - "ᏏᏘᏑᏂᏝ ᎦᏬᏂᎯᏍᏗ ᎦᎸᏛᎢ ᏱᎩᏌᏌᎪᎯᏊ ᎢᎬᏥᎩ ᎠᏟᎶᏍᏗ ᎡᎳᏈᎠᏟᏯᏂ ᎠᏂᏓᏥᏍᏫᏏ ᎦᎸᎳᏗ ᎠᏂᏓᏥᎡᎳᏗᏜ" + - " ᎩᎵᏏᎨᎾᏓ ᎩᎵᏏᎩᎵᏏᏲ ᎩᎵᏏᎠᎹᏰᏟ ᎩᎵᏏᏔᏘᏂ ᎠᎹᏰᏟ ᏍᏆᏂᎠᏂᏍᏆᏂᏱ ᏍᏆᏂᏍᏆᏂᏱ ᏍᏆᏂᎨᎾᏓ ᎦᎸᏥᏍᏫᏏ " + - "ᎦᎸᏥᎡᎳᏗ ᏁᏛᎳᏂᏊᎵᏥᎥᎻ ᏛᏥᏆᏏᎵᎢ ᏉᏧᎦᎵᏉᏥᎦᎳ ᏉᏧᎦᎵᎹᎵᏙᏫᎠ ᏣᎹᏂᎠᏂᎧᏂᎪ ᏍᏩᎯᎵᎠᎯᏗᎨ ᏓᎶᏂᎨᎤ" + - "ᏦᏍᏗ ᏓᎶᏂᎨ", + "Ꭲ ᏔᎹᏏᏘᎤᏚᎷᏘᎤᎹᏊᏅᏚᏄᏬᎵᏍᏛᎾ ᎦᏬᏂᎯᏍᏗᏩᏱᏭᎾᏦᏩᎵᏎᎵᏬᎳᏱᏔᏩᎴᎧᎳᎻᎧᏐᎦᏰᎾᎦᏇᏂᏰᎹᏋᎨᎾᏙᏂᏏᎠᏟᎶᏍ" + + "Ꮧ ᎼᎶᎪ ᏔᎹᏏᏘᏑᏂᏝ ᎦᏬᏂᎯᏍᏗ ᎦᎸᏛᎢ ᏱᎩᏌᏌᎪᎯᏊ ᎢᎬᏥᎩ ᎠᏟᎶᏍᏗ ᎡᎳᏈᎠᏟᏯᏂ ᎠᏂᏓᏥᏍᏫᏏ ᎦᎸᎳᏗ " + + "ᎠᏂᏓᏥᎡᎳᏗᏜ ᎩᎵᏏᎨᎾᏓ ᎩᎵᏏᎩᎵᏏᏲ ᎩᎵᏏᎠᎹᏰᏟ ᎩᎵᏏᏔᏘᏂ ᎠᎹᏰᏟ ᏍᏆᏂᎠᏂᏍᏆᏂᏱ ᏍᏆᏂᏍᏆᏂᏱ ᏍᏆᏂᎨ" + + "ᎾᏓ ᎦᎸᏥᏍᏫᏏ ᎦᎸᏥᎡᎳᏗ ᏁᏛᎳᏂᏊᎵᏥᎥᎻ ᏛᏥᏆᏏᎵᎢ ᏉᏧᎦᎵᏉᏥᎦᎳ ᏉᏧᎦᎵᎹᎵᏙᏫᎠ ᏣᎹᏂᎠᏂᎧᏂᎪ ᏍᏩᎯᎵ" + + "ᎠᎯᏗᎨ ᏓᎶᏂᎨᎤᏦᏍᏗ ᏓᎶᏂᎨ", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0018, 0x0018, 0x002a, 0x0033, 0x0042, 0x0051, @@ -2073,15 +2073,15 @@ var langHeaders = [252]header{ 0x1022, 0x1022, 0x1022, 0x102b, 0x1031, 0x1031, 0x103a, 0x1043, 0x1043, 0x1043, 0x1043, 0x104c, 0x104c, 0x104c, 0x104c, 0x104c, 0x105c, 0x105c, 0x1065, 0x1065, 0x1065, 0x1065, 0x1071, 0x107a, - 0x1086, 0x1095, 0x10ce, 0x10da, 0x10da, 0x10e9, 0x10f8, 0x10fe, - 0x10fe, 0x10fe, 0x10fe, 0x10fe, 0x10fe, 0x10fe, 0x1107, 0x1113, - 0x111f, 0x1125, 0x1125, 0x1125, 0x1125, 0x1131, 0x1131, 0x1137, + 0x1086, 0x1095, 0x10ce, 0x10da, 0x10da, 0x10e9, 0x110e, 0x1114, + 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x111d, 0x1129, + 0x1135, 0x113b, 0x113b, 0x113b, 0x113b, 0x1147, 0x1147, 0x114d, // Entry 240 - 27F - 0x1137, 0x1137, 0x1146, 0x114f, 0x114f, 0x115e, 0x115e, 0x115e, - 0x115e, 0x115e, 0x1184, 0x118a, 0x11b4, 0x11ba, 0x11ea, 0x11ea, - 0x1203, 0x1226, 0x123c, 0x124f, 0x1265, 0x127b, 0x129b, 0x12b7, - 0x12cd, 0x12cd, 0x12e0, 0x12f3, 0x1309, 0x131f, 0x1338, 0x1351, - 0x1370, 0x1370, 0x1386, 0x139f, 0x13b8, + 0x114d, 0x114d, 0x115c, 0x1165, 0x1165, 0x1174, 0x1174, 0x1174, + 0x1174, 0x1174, 0x119a, 0x11a0, 0x11ca, 0x11d0, 0x1200, 0x1200, + 0x1219, 0x123c, 0x1252, 0x1265, 0x127b, 0x1291, 0x12b1, 0x12cd, + 0x12e3, 0x12e3, 0x12f6, 0x1309, 0x131f, 0x1335, 0x134e, 0x1367, + 0x1386, 0x1386, 0x139c, 0x13b5, 0x13ce, }, }, { // ckb @@ -2248,15 +2248,15 @@ var langHeaders = [252]header{ "meregComoregHen SyriegSyriegSilesiegTuluTimnegTesoTerenaTetumegTigre" + "gTifegTocelawegTsakhuregKlingonLlingitTalyshegTamashecegTok PisinTar" + "okoTsaconegTwmbwcaTwfalwegTasawaqTwfwniegTamaseit Canolbarth MorocoF" + - "otiacegWgaritegUmbunduY GwraiddFaiegFenisegFepsFflemeg GorllewinolFo" + - "tegFunjoWalseregWalamoWinarayegWashoWarlpiriCalmycegSogaIangbenIemba" + - "egCantoneegZapotecegBlisssymbolsZêlandegTamaseit SafonolZuniDim cynn" + - "wys ieithyddolZazäegArabeg Modern SafonolAserbaijaneg DeheuolAlmaene" + - "g AwstriaAlmaeneg Safonol y SwistirSaesneg AwstraliaSaesneg CanadaSa" + - "esneg PrydainSaesneg AmericaSbaeneg America LadinSbaeneg EwropSbaene" + - "g MecsicoFfrangeg CanadaFfrangeg y SwistirSacsoneg IselFflemegPortiw" + - "geeg BrasilPortiwgeeg EwropMoldofegSerbo-CroategSwahili’r CongoTsiei" + - "neeg SymledigTsieineeg Traddodiadol", + "otiacegWgaritegUmbunduIaith AnhysbysFaiegFenisegFepsFflemeg Gorllewi" + + "nolFotegFunjoWalseregWalamoWinarayegWashoWarlpiriCalmycegSogaIangben" + + "IembaegCantoneegZapotecegBlisssymbolsZêlandegTamaseit SafonolZuniDim" + + " cynnwys ieithyddolZazäegArabeg Modern SafonolAserbaijaneg DeheuolAl" + + "maeneg AwstriaAlmaeneg Safonol y SwistirSaesneg AwstraliaSaesneg Can" + + "adaSaesneg PrydainSaesneg AmericaSbaeneg America LadinSbaeneg EwropS" + + "baeneg MecsicoFfrangeg CanadaFfrangeg y SwistirSacsoneg IselFflemegP" + + "ortiwgeeg BrasilPortiwgeeg EwropMoldofegSerbo-CroategSwahili’r Congo" + + "Tsieineeg SymledigTsieineeg Traddodiadol", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0007, 0x000f, 0x0018, 0x0023, 0x0029, 0x0030, 0x0038, @@ -2336,15 +2336,15 @@ var langHeaders = [252]header{ 0x0e9a, 0x0ea2, 0x0ea6, 0x0eac, 0x0eb0, 0x0eb6, 0x0ebd, 0x0ec3, 0x0ec8, 0x0ed1, 0x0eda, 0x0ee1, 0x0ee8, 0x0ef0, 0x0efa, 0x0efa, 0x0f03, 0x0f03, 0x0f09, 0x0f11, 0x0f11, 0x0f11, 0x0f18, 0x0f20, - 0x0f27, 0x0f2f, 0x0f49, 0x0f51, 0x0f59, 0x0f60, 0x0f69, 0x0f6e, - 0x0f75, 0x0f79, 0x0f8c, 0x0f8c, 0x0f91, 0x0f91, 0x0f96, 0x0f9e, - 0x0fa4, 0x0fad, 0x0fb2, 0x0fba, 0x0fba, 0x0fc2, 0x0fc2, 0x0fc6, + 0x0f27, 0x0f2f, 0x0f49, 0x0f51, 0x0f59, 0x0f60, 0x0f6e, 0x0f73, + 0x0f7a, 0x0f7e, 0x0f91, 0x0f91, 0x0f96, 0x0f96, 0x0f9b, 0x0fa3, + 0x0fa9, 0x0fb2, 0x0fb7, 0x0fbf, 0x0fbf, 0x0fc7, 0x0fc7, 0x0fcb, // Entry 240 - 27F - 0x0fc6, 0x0fc6, 0x0fcd, 0x0fd4, 0x0fd4, 0x0fdd, 0x0fe6, 0x0ff2, - 0x0ffb, 0x0ffb, 0x100b, 0x100f, 0x1025, 0x102c, 0x1041, 0x1055, - 0x1065, 0x107f, 0x1090, 0x109e, 0x10ad, 0x10bc, 0x10d1, 0x10de, - 0x10ed, 0x10ed, 0x10fc, 0x110e, 0x111b, 0x1122, 0x1133, 0x1143, - 0x114b, 0x1158, 0x1169, 0x117b, 0x1191, + 0x0fcb, 0x0fcb, 0x0fd2, 0x0fd9, 0x0fd9, 0x0fe2, 0x0feb, 0x0ff7, + 0x1000, 0x1000, 0x1010, 0x1014, 0x102a, 0x1031, 0x1046, 0x105a, + 0x106a, 0x1084, 0x1095, 0x10a3, 0x10b2, 0x10c1, 0x10d6, 0x10e3, + 0x10f2, 0x10f2, 0x1101, 0x1113, 0x1120, 0x1127, 0x1138, 0x1148, + 0x1150, 0x115d, 0x116e, 0x1180, 0x1196, }, }, { // da @@ -5091,15 +5091,15 @@ var langHeaders = [252]header{ "oyraboro senniatachelhitashanerahegoaldeko samieralule samierainari-" + "samieraskolt samierasoninkerasrananerasahoasukumerakomoreeraasiriera" + "temneatesoeratetumatigreaklingoneratok pisinatarokoatumbukeratuvalue" + - "ratasawaqatuveraMaroko erdialdeko tamazightaudmurteraumbundueraerroa" + - "vaieravunjoawalsererawelaytasamererakalmykerasogerajangbenerayembaka" + - "ntoneratamazight estandarrazuñiaez dago eduki linguistikorikzazakiaa" + - "rabiera moderno estandarraAustriako alemanaaleman garaia (Suitza)Aus" + - "traliako ingelesaKanadako ingelesaBritainia Handiko ingelesaAEBko in" + - "gelesaLatinoamerikako espainieraespainiera (Europa)Mexikoko espainie" + - "raKanadako frantsesaSuitzako frantsesabehe-saxoieraflandrieraBrasilg" + - "o portugesaportugesa (Europa)moldavieraserbokroazieraKongoko swahili" + - "atxinera soilduatxinera tradizionala", + "ratasawaqatuveraMaroko erdialdeko tamazightaudmurteraumbunduerahizku" + + "ntza ezezagunavaieravunjoawalsererawelaytasamererakalmykerasogerajan" + + "gbenerayembakantoneratamazight estandarrazuñiaez dago eduki linguist" + + "ikorikzazakiaarabiera moderno estandarraAustriako alemanaaleman gara" + + "ia (Suitza)Australiako ingelesaKanadako ingelesaBritainia Handiko in" + + "gelesaAEBko ingelesaLatinoamerikako espainieraespainiera (Europa)Mex" + + "ikoko espainieraKanadako frantsesaSuitzako frantsesabehe-saxoierafla" + + "ndrieraBrasilgo portugesaportugesa (Europa)moldavieraserbokroazieraK" + + "ongoko swahiliatxinera soilduatxinera tradizionala", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0007, 0x0010, 0x0010, 0x001a, 0x0021, 0x0029, 0x0032, @@ -5179,15 +5179,15 @@ var langHeaders = [252]header{ 0x0c47, 0x0c47, 0x0c47, 0x0c4d, 0x0c54, 0x0c54, 0x0c5a, 0x0c60, 0x0c60, 0x0c60, 0x0c60, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c74, 0x0c74, 0x0c7b, 0x0c7b, 0x0c7b, 0x0c7b, 0x0c84, 0x0c8d, - 0x0c95, 0x0c9b, 0x0cb7, 0x0cc0, 0x0cc0, 0x0cca, 0x0ccf, 0x0cd5, - 0x0cd5, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cdb, 0x0ce4, - 0x0ceb, 0x0cf3, 0x0cf3, 0x0cf3, 0x0cf3, 0x0cfc, 0x0cfc, 0x0d02, + 0x0c95, 0x0c9b, 0x0cb7, 0x0cc0, 0x0cc0, 0x0cca, 0x0cdd, 0x0ce3, + 0x0ce3, 0x0ce3, 0x0ce3, 0x0ce3, 0x0ce3, 0x0ce3, 0x0ce9, 0x0cf2, + 0x0cf9, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d0a, 0x0d0a, 0x0d10, // Entry 240 - 27F - 0x0d02, 0x0d02, 0x0d0c, 0x0d11, 0x0d11, 0x0d1a, 0x0d1a, 0x0d1a, - 0x0d1a, 0x0d1a, 0x0d2e, 0x0d34, 0x0d50, 0x0d57, 0x0d72, 0x0d72, - 0x0d83, 0x0d99, 0x0dad, 0x0dbe, 0x0dd8, 0x0de6, 0x0e00, 0x0e13, - 0x0e26, 0x0e26, 0x0e38, 0x0e4a, 0x0e57, 0x0e61, 0x0e73, 0x0e85, - 0x0e8f, 0x0e9d, 0x0ead, 0x0ebc, 0x0ed0, + 0x0d10, 0x0d10, 0x0d1a, 0x0d1f, 0x0d1f, 0x0d28, 0x0d28, 0x0d28, + 0x0d28, 0x0d28, 0x0d3c, 0x0d42, 0x0d5e, 0x0d65, 0x0d80, 0x0d80, + 0x0d91, 0x0da7, 0x0dbb, 0x0dcc, 0x0de6, 0x0df4, 0x0e0e, 0x0e21, + 0x0e34, 0x0e34, 0x0e46, 0x0e58, 0x0e65, 0x0e6f, 0x0e81, 0x0e93, + 0x0e9d, 0x0eab, 0x0ebb, 0x0eca, 0x0ede, }, }, { // ewo @@ -5379,12 +5379,12 @@ var langHeaders = [252]header{ "isilansktskotsktsuður kurdisktsenakoyraboro sennitachelhitshansuður " + "sámisktlule sámisktinari samiskolt sámisktsoninkesranan tongosahosuk" + "umakomorisktsyriactimnetesotetumtigreklingonskttok pisintarokotumbuk" + - "atuvalutasawaqtuvinianmiðatlasfjøll tamazightudmurtumbundurootvaivun" + - "jowalserwolayttawaraywarlpiriwu kinesisktkalmyksogayangbenyembakanto" + - "nesisktvanligt marokanskt tamazightzunieinki málsligt innihaldzazanú" + - "tíðar vanligt arabiskthøgt týskt (Sveis)lágt saksisktflamsktportugis" + - "kiskt (Brasilia)portugiskiskt (Evropa)moldavisktserbokroatisktkongo " + - "svahilieinkult kinesisktvanligt kinesiskt", + "atuvalutasawaqtuvinianmiðatlasfjøll tamazightudmurtumbunduókent málv" + + "aivunjowalserwolayttawaraywarlpiriwu kinesisktkalmyksogayangbenyemba" + + "kantonesisktvanligt marokanskt tamazightzunieinki málsligt innihaldz" + + "azanútíðar vanligt arabiskthøgt týskt (Sveis)lágt saksisktflamsktpor" + + "tugiskiskt (Brasilia)portugiskiskt (Evropa)moldavisktserbokroatisktk" + + "ongo svahilieinkult kinesisktvanligt kinesiskt", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x000e, 0x0017, 0x001b, 0x0024, 0x002e, @@ -5464,15 +5464,15 @@ var langHeaders = [252]header{ 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae6, 0x0aea, 0x0aea, 0x0aef, 0x0af4, 0x0af4, 0x0af4, 0x0af4, 0x0afe, 0x0afe, 0x0afe, 0x0afe, 0x0afe, 0x0b07, 0x0b07, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b14, 0x0b1a, - 0x0b21, 0x0b29, 0x0b42, 0x0b48, 0x0b48, 0x0b4f, 0x0b53, 0x0b56, - 0x0b56, 0x0b56, 0x0b56, 0x0b56, 0x0b56, 0x0b56, 0x0b5b, 0x0b61, - 0x0b69, 0x0b6e, 0x0b6e, 0x0b76, 0x0b82, 0x0b88, 0x0b88, 0x0b8c, + 0x0b21, 0x0b29, 0x0b42, 0x0b48, 0x0b48, 0x0b4f, 0x0b5a, 0x0b5d, + 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b62, 0x0b68, + 0x0b70, 0x0b75, 0x0b75, 0x0b7d, 0x0b89, 0x0b8f, 0x0b8f, 0x0b93, // Entry 240 - 27F - 0x0b8c, 0x0b8c, 0x0b93, 0x0b98, 0x0b98, 0x0ba4, 0x0ba4, 0x0ba4, - 0x0ba4, 0x0ba4, 0x0bc0, 0x0bc4, 0x0bdc, 0x0be0, 0x0bfb, 0x0bfb, - 0x0bfb, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, - 0x0c0f, 0x0c0f, 0x0c0f, 0x0c0f, 0x0c1d, 0x0c24, 0x0c3c, 0x0c52, - 0x0c5c, 0x0c6a, 0x0c77, 0x0c88, 0x0c99, + 0x0b93, 0x0b93, 0x0b9a, 0x0b9f, 0x0b9f, 0x0bab, 0x0bab, 0x0bab, + 0x0bab, 0x0bab, 0x0bc7, 0x0bcb, 0x0be3, 0x0be7, 0x0c02, 0x0c02, + 0x0c02, 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c16, + 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c24, 0x0c2b, 0x0c43, 0x0c59, + 0x0c63, 0x0c71, 0x0c7e, 0x0c8f, 0x0ca0, }, }, { // fr @@ -5804,15 +5804,15 @@ var langHeaders = [252]header{ "nantongoSererSahoSukumaSoesoeSoemeryskShimaoreKlassiek SyryskSyryskT" + "imneTesoTerenoTetunTigreTivTokelausKlingonTlingitTamashekNyasa Tonga" + "Tok PisinTarokoTsimshianToemboekaTuvaluaanskTasawaqTuvinyskTamazight" + - " (Sintraal-Marokko)OedmoertsOegarityskUmbunduRootVaiVotyskVunjoWalse" + - "rWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantoneeskZapotecBli" + - "ssymbolenZenagaStandert Marokkaanske TamazightZuniGjin linguïstyske " + - "ynhâldZazaModern standert ArabyskEastenryks DútskSwitsersk Heechdúts" + - "kAustralysk IngelskKanadeesk IngelskBritsk IngelskAmerikaansk Ingels" + - "kLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaansk SpaanskKana" + - "deesk FrânskSwitserse FrânskVlaamsBrazyljaansk PortugeesEuropees Por" + - "tugeesMoldavyskServokroatyskCongo SwahiliFerienfâldich SineeskTradis" + - "joneel Sineesk", + " (Sintraal-Marokko)OedmoertsOegarityskUmbunduOnbekende taalVaiVotysk" + + "VunjoWalserWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantoneesk" + + "ZapotecBlissymbolenZenagaStandert Marokkaanske TamazightZuniGjin lin" + + "guïstyske ynhâldZazaModern standert ArabyskEastenryks DútskSwitsersk" + + " HeechdútskAustralysk IngelskKanadeesk IngelskBritsk IngelskAmerikaa" + + "nsk IngelskLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaansk S" + + "paanskKanadeesk FrânskSwitserse FrânskVlaamsBrazyljaansk PortugeesEu" + + "ropees PortugeesMoldavyskServokroatyskCongo SwahiliFerienfâldich Sin" + + "eeskTradisjoneel Sineesk", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0015, 0x001f, 0x0023, 0x002b, 0x0035, @@ -5892,15 +5892,15 @@ var langHeaders = [252]header{ 0x0d2c, 0x0d2c, 0x0d2c, 0x0d31, 0x0d35, 0x0d3b, 0x0d40, 0x0d45, 0x0d48, 0x0d50, 0x0d50, 0x0d57, 0x0d5e, 0x0d5e, 0x0d66, 0x0d71, 0x0d7a, 0x0d7a, 0x0d80, 0x0d80, 0x0d89, 0x0d89, 0x0d92, 0x0d9d, - 0x0da4, 0x0dac, 0x0dc8, 0x0dd1, 0x0ddb, 0x0de2, 0x0de6, 0x0de9, - 0x0de9, 0x0de9, 0x0de9, 0x0de9, 0x0def, 0x0def, 0x0df4, 0x0dfa, - 0x0e00, 0x0e05, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e10, 0x0e10, 0x0e14, + 0x0da4, 0x0dac, 0x0dc8, 0x0dd1, 0x0ddb, 0x0de2, 0x0df0, 0x0df3, + 0x0df3, 0x0df3, 0x0df3, 0x0df3, 0x0df9, 0x0df9, 0x0dfe, 0x0e04, + 0x0e0a, 0x0e0f, 0x0e14, 0x0e14, 0x0e14, 0x0e1a, 0x0e1a, 0x0e1e, // Entry 240 - 27F - 0x0e17, 0x0e1d, 0x0e24, 0x0e29, 0x0e29, 0x0e33, 0x0e3a, 0x0e46, - 0x0e46, 0x0e4c, 0x0e6b, 0x0e6f, 0x0e89, 0x0e8d, 0x0ea4, 0x0ea4, - 0x0eb5, 0x0eca, 0x0edc, 0x0eed, 0x0efb, 0x0f0e, 0x0f29, 0x0f3a, - 0x0f4d, 0x0f4d, 0x0f5e, 0x0f6f, 0x0f6f, 0x0f75, 0x0f8b, 0x0f9d, - 0x0fa6, 0x0fb3, 0x0fc0, 0x0fd6, 0x0fea, + 0x0e21, 0x0e27, 0x0e2e, 0x0e33, 0x0e33, 0x0e3d, 0x0e44, 0x0e50, + 0x0e50, 0x0e56, 0x0e75, 0x0e79, 0x0e93, 0x0e97, 0x0eae, 0x0eae, + 0x0ebf, 0x0ed4, 0x0ee6, 0x0ef7, 0x0f05, 0x0f18, 0x0f33, 0x0f44, + 0x0f57, 0x0f57, 0x0f68, 0x0f79, 0x0f79, 0x0f7f, 0x0f95, 0x0fa7, + 0x0fb0, 0x0fbd, 0x0fca, 0x0fe0, 0x0ff4, }, }, { // ga @@ -6106,17 +6106,17 @@ var langHeaders = [252]header{ "sSuraidheac ChlasaigeachSuraidheacTuluTimneTesoTerênaTetumTigreTivTo" + "kelauTsakhurKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoTa" + "rokoTsimshianTatiTumbukaTubhaluTasawaqCànan TuvaTamazight an Atlais " + - "MheadhanaichUdmurtUmbunduRootVaiVepsFlannrais SiarachVõroVunjoGearma" + - "iltis WallisWolayttaWarayWashoWarlpiriWuKalmykSogaYaoCànan YapYangbe" + - "nYembaNheengatuCantonaisZapotecComharran BlissCànan ZeelandZenagaTam" + - "azight Stannardach MorocoZuñiSusbaint nach eil ’na chànanZazakiNuadh" + - "-Arabais StannardachGearmailtis na h-OstaireÀrd-Ghearmailtis na h-Ei" + - "lbheiseBeurla AstràiliaBeurla ChanadaBeurla BhreatainnBeurla na h-Ai" + - "meireagaSpàinntis na h-Aimeireaga LaidinneachSpàinntis EòrpachSpàinn" + - "tis MheagsagachFraingis ChanadaFraingis EilbheiseachSagsannais Ìochd" + - "arachFlannraisPortagailis BhraisileachPortagailis EòrpachMoldobhaisS" + - "èirb-ChròthaisisKiswahili na CongoSìnis ShimplichteSìnis Thradaisea" + - "nta", + "MheadhanaichUdmurtUmbunduCànan neo-aithnichteVaiVepsFlannrais Siarac" + + "hVõroVunjoGearmailtis WallisWolayttaWarayWashoWarlpiriWuKalmykSogaYa" + + "oCànan YapYangbenYembaNheengatuCantonaisZapotecComharran BlissCànan " + + "ZeelandZenagaTamazight Stannardach MorocoZuñiSusbaint nach eil ’na c" + + "hànanZazakiNuadh-Arabais StannardachGearmailtis na h-OstaireÀrd-Ghea" + + "rmailtis na h-EilbheiseBeurla AstràiliaBeurla ChanadaBeurla Bhreatai" + + "nnBeurla na h-AimeireagaSpàinntis na h-Aimeireaga LaidinneachSpàinnt" + + "is EòrpachSpàinntis MheagsagachFraingis ChanadaFraingis Eilbheiseach" + + "Sagsannais ÌochdarachFlannraisPortagailis BhraisileachPortagailis Eò" + + "rpachMoldobhaisSèirb-ChròthaisisKiswahili na CongoSìnis ShimplichteS" + + "ìnis Thradaiseanta", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0017, 0x0021, 0x0025, 0x002e, 0x0037, @@ -6196,15 +6196,15 @@ var langHeaders = [252]header{ 0x1191, 0x1191, 0x1195, 0x119a, 0x119e, 0x11a5, 0x11aa, 0x11af, 0x11b2, 0x11b9, 0x11c0, 0x11c7, 0x11ce, 0x11d4, 0x11dc, 0x11e7, 0x11f0, 0x11f6, 0x11fc, 0x11fc, 0x1205, 0x1209, 0x1210, 0x1217, - 0x121e, 0x1229, 0x1249, 0x124f, 0x124f, 0x1256, 0x125a, 0x125d, - 0x125d, 0x1261, 0x1272, 0x1272, 0x1272, 0x1277, 0x127c, 0x128e, - 0x1296, 0x129b, 0x12a0, 0x12a8, 0x12aa, 0x12b0, 0x12b0, 0x12b4, + 0x121e, 0x1229, 0x1249, 0x124f, 0x124f, 0x1256, 0x126b, 0x126e, + 0x126e, 0x1272, 0x1283, 0x1283, 0x1283, 0x1288, 0x128d, 0x129f, + 0x12a7, 0x12ac, 0x12b1, 0x12b9, 0x12bb, 0x12c1, 0x12c1, 0x12c5, // Entry 240 - 27F - 0x12b7, 0x12c1, 0x12c8, 0x12cd, 0x12d6, 0x12df, 0x12e6, 0x12f5, - 0x1303, 0x1309, 0x1325, 0x132a, 0x1349, 0x134f, 0x1368, 0x1368, - 0x1380, 0x13a0, 0x13b1, 0x13bf, 0x13d0, 0x13e6, 0x140c, 0x141f, - 0x1435, 0x1435, 0x1445, 0x145a, 0x1470, 0x1479, 0x1491, 0x14a5, - 0x14af, 0x14c2, 0x14d4, 0x14e6, 0x14fa, + 0x12c8, 0x12d2, 0x12d9, 0x12de, 0x12e7, 0x12f0, 0x12f7, 0x1306, + 0x1314, 0x131a, 0x1336, 0x133b, 0x135a, 0x1360, 0x1379, 0x1379, + 0x1391, 0x13b1, 0x13c2, 0x13d0, 0x13e1, 0x13f7, 0x141d, 0x1430, + 0x1446, 0x1446, 0x1456, 0x146b, 0x1481, 0x148a, 0x14a2, 0x14b6, + 0x14c0, 0x14d3, 0x14e5, 0x14f7, 0x150b, }, }, { // gl @@ -6247,14 +6247,14 @@ var langHeaders = [252]header{ "tachelhitshansaami meridionalsaami de Lulesaami de Inarisaami de Sko" + "ltsoninkesranan tongosahosukumacomorianosiríacotimnetesotetuntigrékl" + "ingontok pisintarokotumbukatuvaluanotasawaqtuvanianotamazight do Mar" + - "rocos Centraludmurtoumbunduraízvaivunjowalserwolayttawaray-waraywalr" + - "piricalmucosogayangbenyembacantonéstamazight de Marrocos estándarzun" + - "isen contido lingüísticozazakiárabe estándar modernoalemán austríaco" + - "alto alemán suízoinglés australianoinglés canadianoinglés británicoi" + - "nglés dos Estados Unidosespañol latinoamericanocastelánespañol de Mé" + - "xicofrancés canadianofrancés suízobaixo saxónflamencoportugués brasi" + - "leiroportugués europeomoldavoserbocroatasuahili congoléschinés simpl" + - "ificadochinés tradicional", + "rocos Centraludmurtoumbundulingua descoñecidavaivunjowalserwolayttaw" + + "aray-waraywalrpiricalmucosogayangbenyembacantonéstamazight de Marroc" + + "os estándarzunisen contido lingüísticozazakiárabe estándar modernoal" + + "emán austríacoalto alemán suízoinglés australianoinglés canadianoing" + + "lés británicoinglés dos Estados Unidosespañol latinoamericanocastelá" + + "nespañol de Méxicofrancés canadianofrancés suízobaixo saxónflamencop" + + "ortugués brasileiroportugués europeomoldavoserbocroatasuahili congol" + + "éschinés simplificadochinés tradicional", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000b, 0x000b, 0x0015, 0x001a, 0x0022, 0x002b, @@ -6334,15 +6334,15 @@ var langHeaders = [252]header{ 0x0a64, 0x0a64, 0x0a64, 0x0a69, 0x0a6d, 0x0a6d, 0x0a72, 0x0a78, 0x0a78, 0x0a78, 0x0a78, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a88, 0x0a88, 0x0a8e, 0x0a8e, 0x0a8e, 0x0a8e, 0x0a95, 0x0a9e, - 0x0aa5, 0x0aae, 0x0acb, 0x0ad2, 0x0ad2, 0x0ad9, 0x0ade, 0x0ae1, - 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae6, 0x0aec, - 0x0af4, 0x0aff, 0x0aff, 0x0b07, 0x0b07, 0x0b0e, 0x0b0e, 0x0b12, + 0x0aa5, 0x0aae, 0x0acb, 0x0ad2, 0x0ad2, 0x0ad9, 0x0aec, 0x0aef, + 0x0aef, 0x0aef, 0x0aef, 0x0aef, 0x0aef, 0x0aef, 0x0af4, 0x0afa, + 0x0b02, 0x0b0d, 0x0b0d, 0x0b15, 0x0b15, 0x0b1c, 0x0b1c, 0x0b20, // Entry 240 - 27F - 0x0b12, 0x0b12, 0x0b19, 0x0b1e, 0x0b1e, 0x0b27, 0x0b27, 0x0b27, - 0x0b27, 0x0b27, 0x0b46, 0x0b4a, 0x0b63, 0x0b69, 0x0b81, 0x0b81, - 0x0b93, 0x0ba6, 0x0bb9, 0x0bca, 0x0bdc, 0x0bf6, 0x0c0e, 0x0c17, - 0x0c2a, 0x0c2a, 0x0c3c, 0x0c4b, 0x0c57, 0x0c5f, 0x0c74, 0x0c86, - 0x0c8d, 0x0c98, 0x0ca9, 0x0cbd, 0x0cd0, + 0x0b20, 0x0b20, 0x0b27, 0x0b2c, 0x0b2c, 0x0b35, 0x0b35, 0x0b35, + 0x0b35, 0x0b35, 0x0b54, 0x0b58, 0x0b71, 0x0b77, 0x0b8f, 0x0b8f, + 0x0ba1, 0x0bb4, 0x0bc7, 0x0bd8, 0x0bea, 0x0c04, 0x0c1c, 0x0c25, + 0x0c38, 0x0c38, 0x0c4a, 0x0c59, 0x0c65, 0x0c6d, 0x0c82, 0x0c94, + 0x0c9b, 0x0ca6, 0x0cb7, 0x0ccb, 0x0cde, }, }, { // gsw @@ -6406,15 +6406,15 @@ var langHeaders = [252]header{ "tsyrischSyrischTemneTereno-SchpraachTetum-SchpraachTigreTiv-Schpraac" + "hTokelauanischKlingonischTlingit-SchpraachTamaseqTsonga-SchpraachNeu" + "melanesischTsimshian-SchpraachTumbuka-SchpraachElliceanischTuwinisch" + - "UdmurtischUgaritischMbundu-SchpraachRootVai-SchpraachWotischWalamo-S" + - "chpraachWarayWasho-SchpraachKalmückischYao-SchpraachYapesischZapotek" + - "ischBliss-SymboolZenagaZuni-SchpraachKän schpraachliche InhaltZazaÖs" + - "chtriichischs TüütschSchwiizer HochtüütschAuschtralischs ÄnglischKan" + - "adischs ÄnglischBritischs ÄnglischAmerikanischs ÄnglischLatiinamerik" + - "anischs SchpanischIbeerischs SchpanischKanadischs FranzösischSchwiiz" + - "er FranzösischFläämischBrasilianischs PortugiisischIberischs Portugi" + - "isischMoldawischSerbo-KroatischVeräifachts ChineesischTradizionells " + - "Chineesisch", + "UdmurtischUgaritischMbundu-SchpraachUnbeschtimmti SchpraachVai-Schpr" + + "aachWotischWalamo-SchpraachWarayWasho-SchpraachKalmückischYao-Schpra" + + "achYapesischZapotekischBliss-SymboolZenagaZuni-SchpraachKän schpraac" + + "hliche InhaltZazaÖschtriichischs TüütschSchwiizer HochtüütschAuschtr" + + "alischs ÄnglischKanadischs ÄnglischBritischs ÄnglischAmerikanischs Ä" + + "nglischLatiinamerikanischs SchpanischIbeerischs SchpanischKanadischs" + + " FranzösischSchwiizer FranzösischFläämischBrasilianischs Portugiisis" + + "chIberischs PortugiisischMoldawischSerbo-KroatischVeräifachts Chinee" + + "sischTradizionells Chineesisch", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, @@ -6494,15 +6494,15 @@ var langHeaders = [252]header{ 0x0f72, 0x0f72, 0x0f72, 0x0f77, 0x0f77, 0x0f87, 0x0f96, 0x0f9b, 0x0fa8, 0x0fb5, 0x0fb5, 0x0fc0, 0x0fd1, 0x0fd1, 0x0fd8, 0x0fe8, 0x0ff6, 0x0ff6, 0x0ff6, 0x0ff6, 0x1009, 0x1009, 0x101a, 0x1026, - 0x1026, 0x102f, 0x102f, 0x1039, 0x1043, 0x1053, 0x1057, 0x1064, - 0x1064, 0x1064, 0x1064, 0x1064, 0x106b, 0x106b, 0x106b, 0x106b, - 0x107b, 0x1080, 0x108f, 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, + 0x1026, 0x102f, 0x102f, 0x1039, 0x1043, 0x1053, 0x106a, 0x1077, + 0x1077, 0x1077, 0x1077, 0x1077, 0x107e, 0x107e, 0x107e, 0x107e, + 0x108e, 0x1093, 0x10a2, 0x10a2, 0x10a2, 0x10ae, 0x10ae, 0x10ae, // Entry 240 - 27F - 0x10a8, 0x10b1, 0x10b1, 0x10b1, 0x10b1, 0x10b1, 0x10bc, 0x10c9, - 0x10c9, 0x10cf, 0x10cf, 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x10fb, - 0x1115, 0x112c, 0x1144, 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, - 0x11b5, 0x11b5, 0x11cc, 0x11e2, 0x11e2, 0x11ed, 0x1209, 0x1220, - 0x122a, 0x1239, 0x1239, 0x1251, 0x126a, + 0x10bb, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10cf, 0x10dc, + 0x10dc, 0x10e2, 0x10e2, 0x10f0, 0x110a, 0x110e, 0x110e, 0x110e, + 0x1128, 0x113f, 0x1157, 0x116b, 0x117e, 0x1195, 0x11b3, 0x11c8, + 0x11c8, 0x11c8, 0x11df, 0x11f5, 0x11f5, 0x1200, 0x121c, 0x1233, + 0x123d, 0x124c, 0x124c, 0x1264, 0x127d, }, }, { // gu @@ -7858,12 +7858,12 @@ var langHeaders = [252]header{ "سونِنکیےسوگڈِیَنسرٛانَن ٹونٛگوسیٚریرسُکُماسُسوٗسُمیریَنسیٖریٲییٹِمن" + "یےٹیٚریٚنوٹیٹَمٹاےگریےتیٖوٹوکیٖلاوکِلِنگونٹِلِنگِتتاماشیکنیاسا ٹونٛ" + "گاٹاک پِسِنژھِمشِیانتُمبُکاتُوالوٗتُویٖنیَناُدمُرتاُگارتِکیُمبُندوٗ" + - "روٗٹواےووتِکوالامووَریےواشوکالمِکیاویَپیٖززَپوتیٚکزیناگازوٗنیکانٛہہ" + - " تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنسٕوِس ہاےجٔرمَنآسٹریلیَن ا" + - "َنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَنٛگریٖزۍیوٗ ایٚس اَنٛگریٖز" + - "ۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈیَن فریٚنچسٕوٕس فریٚنچفلیٚ" + - "مِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولداوِیَنسیٚربو کروشِیَنسیٚو" + - "د چیٖنیرِوٲجی چیٖنی", + "اَنزٲنۍ یا نَہ لَگہٕہار زبانواےووتِکوالامووَریےواشوکالمِکیاویَپیٖزز" + + "َپوتیٚکزیناگازوٗنیکانٛہہ تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنس" + + "ٕوِس ہاےجٔرمَنآسٹریلیَن اَنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَن" + + "ٛگریٖزۍیوٗ ایٚس اَنٛگریٖزۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈی" + + "َن فریٚنچسٕوٕس فریٚنچفلیٚمِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولد" + + "اوِیَنسیٚربو کروشِیَنسیٚود چیٖنیرِوٲجی چیٖنی", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000a, 0x001e, 0x002e, 0x0044, 0x004e, 0x005c, 0x006c, @@ -7943,15 +7943,15 @@ var langHeaders = [252]header{ 0x164b, 0x164b, 0x164b, 0x1657, 0x1657, 0x1667, 0x1671, 0x167f, 0x1687, 0x1697, 0x1697, 0x16a7, 0x16b7, 0x16b7, 0x16c5, 0x16dc, 0x16ed, 0x16ed, 0x16ed, 0x16ed, 0x16ff, 0x16ff, 0x170d, 0x171b, - 0x171b, 0x172d, 0x172d, 0x173b, 0x174b, 0x175d, 0x1765, 0x176b, - 0x176b, 0x176b, 0x176b, 0x176b, 0x1775, 0x1775, 0x1775, 0x1775, - 0x1781, 0x178b, 0x1793, 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, + 0x171b, 0x172d, 0x172d, 0x173b, 0x174b, 0x175d, 0x1791, 0x1797, + 0x1797, 0x1797, 0x1797, 0x1797, 0x17a1, 0x17a1, 0x17a1, 0x17a1, + 0x17ad, 0x17b7, 0x17bf, 0x17bf, 0x17bf, 0x17cb, 0x17cb, 0x17cb, // Entry 240 - 27F - 0x17a5, 0x17b1, 0x17b1, 0x17b1, 0x17b1, 0x17b1, 0x17c1, 0x17c1, - 0x17c1, 0x17cd, 0x17cd, 0x17d7, 0x180d, 0x1815, 0x1815, 0x1815, - 0x1832, 0x184f, 0x1876, 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, - 0x192b, 0x192b, 0x1948, 0x195f, 0x195f, 0x196d, 0x198e, 0x19b1, - 0x19c5, 0x19e2, 0x19e2, 0x19f7, 0x1a0e, + 0x17d1, 0x17dd, 0x17dd, 0x17dd, 0x17dd, 0x17dd, 0x17ed, 0x17ed, + 0x17ed, 0x17f9, 0x17f9, 0x1803, 0x1839, 0x1841, 0x1841, 0x1841, + 0x185e, 0x187b, 0x18a2, 0x18cb, 0x18f0, 0x1914, 0x193a, 0x1957, + 0x1957, 0x1957, 0x1974, 0x198b, 0x198b, 0x1999, 0x19ba, 0x19dd, + 0x19f1, 0x1a0e, 0x1a0e, 0x1a23, 0x1a3a, }, }, { // ksb @@ -8399,18 +8399,18 @@ var langHeaders = [252]header{ "iv-SproochTokelauaneschTsachureschKlingoneschTlingit-SproochTaleschT" + "amaseqTsonga-SproochNeimelaneseschTuroyoSeediqTsakoneschTsimshian-Sp" + "roochTateschTumbuka-SproochElliceaneschTasawaqTuwineschMëttlert-Atla" + - "s-TamazightUdmurteschUgariteschMbundu-SproochRootVai-SproochVenezesc" + - "hWepseschWestflämeschMainfränkeschWoteschVoroVunjoWalliserdäitschWal" + - "amo-SproochWarayWasho-SproochWu-ChineseschKalmückeschMingrelesch Spr" + - "oochSogaYao-SproochYapeseschYangbenYembaNheengatuKantoneseschZapotek" + - "eschBliss-SymbolerSeelänneschZenagaMarokkanescht Standard-TamazightZ" + - "uni-SproochKeng SproochinhalterZazaModernt HéicharabeschÉisträichesc" + - "ht DäitschSchwäizer HéichdäitschAustralescht EngleschKanadescht Engl" + - "eschBritescht EngleschAmerikanescht EngleschLatäinamerikanescht Spue" + - "neschEuropäescht SpueneschMexikanescht SpueneschKanadescht Franséisc" + - "hSchwäizer FranséischFlämeschBrasilianescht PortugiseschEuropäescht " + - "PortugiseschMoldaweschSerbo-KroateschKongo-SwahiliChinesesch (verein" + - "facht)Chinesesch (traditionell)", + "s-TamazightUdmurteschUgariteschMbundu-SproochOnbestëmmt SproochVai-S" + + "proochVenezeschWepseschWestflämeschMainfränkeschWoteschVoroVunjoWall" + + "iserdäitschWalamo-SproochWarayWasho-SproochWu-ChineseschKalmückeschM" + + "ingrelesch SproochSogaYao-SproochYapeseschYangbenYembaNheengatuKanto" + + "neseschZapotekeschBliss-SymbolerSeelänneschZenagaMarokkanescht Stand" + + "ard-TamazightZuni-SproochKeng SproochinhalterZazaModernt Héicharabes" + + "chÉisträichescht DäitschSchwäizer HéichdäitschAustralescht EngleschK" + + "anadescht EngleschBritescht EngleschAmerikanescht EngleschLatäinamer" + + "ikanescht SpueneschEuropäescht SpueneschMexikanescht SpueneschKanade" + + "scht FranséischSchwäizer FranséischFlämeschBrasilianescht Portugises" + + "chEuropäescht PortugiseschMoldaweschSerbo-KroateschKongo-SwahiliChin" + + "esesch (vereinfacht)Chinesesch (traditionell)", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, @@ -8490,15 +8490,15 @@ var langHeaders = [252]header{ 0x14be, 0x14c8, 0x14cc, 0x14d1, 0x14d5, 0x14e3, 0x14f0, 0x14f5, 0x1500, 0x150d, 0x1518, 0x1523, 0x1532, 0x1539, 0x1540, 0x154e, 0x155c, 0x1562, 0x1568, 0x1572, 0x1583, 0x158a, 0x1599, 0x15a5, - 0x15ac, 0x15b5, 0x15ce, 0x15d8, 0x15e2, 0x15f0, 0x15f4, 0x15ff, - 0x1608, 0x1610, 0x161d, 0x162b, 0x1632, 0x1636, 0x163b, 0x164b, - 0x1659, 0x165e, 0x166b, 0x166b, 0x1678, 0x1684, 0x1697, 0x169b, + 0x15ac, 0x15b5, 0x15ce, 0x15d8, 0x15e2, 0x15f0, 0x1603, 0x160e, + 0x1617, 0x161f, 0x162c, 0x163a, 0x1641, 0x1645, 0x164a, 0x165a, + 0x1668, 0x166d, 0x167a, 0x167a, 0x1687, 0x1693, 0x16a6, 0x16aa, // Entry 240 - 27F - 0x16a6, 0x16af, 0x16b6, 0x16bb, 0x16c4, 0x16d0, 0x16db, 0x16e9, - 0x16f5, 0x16fb, 0x171b, 0x1727, 0x173b, 0x173f, 0x1755, 0x1755, - 0x176e, 0x1787, 0x179c, 0x17af, 0x17c1, 0x17d7, 0x17f5, 0x180b, - 0x1821, 0x1821, 0x1837, 0x184d, 0x184d, 0x1856, 0x1871, 0x188a, - 0x1894, 0x18a3, 0x18b0, 0x18c8, 0x18e1, + 0x16b5, 0x16be, 0x16c5, 0x16ca, 0x16d3, 0x16df, 0x16ea, 0x16f8, + 0x1704, 0x170a, 0x172a, 0x1736, 0x174a, 0x174e, 0x1764, 0x1764, + 0x177d, 0x1796, 0x17ab, 0x17be, 0x17d0, 0x17e6, 0x1804, 0x181a, + 0x1830, 0x1830, 0x1846, 0x185c, 0x185c, 0x1865, 0x1880, 0x1899, + 0x18a3, 0x18b2, 0x18bf, 0x18d7, 0x18f0, }, }, { // lg @@ -9465,14 +9465,15 @@ var langHeaders = [252]header{ "an TongoSererSahoSukumaSusuSumerjanKomorjanSirjanTimneTesoTerenoTetu" + "mTigreTivTokelauKlingonTlingitTamashekNyasa TongaTok PisinTarokoTsim" + "shianTumbukaTuvaluTasawaqTuvinjanTamazight tal-Atlas ĊentraliUdmurtU" + - "garitikuUmbunduRootVaiVotikVunjoWalserWalamoWarayWashoKalmykSogaYaoY" + - "apeseYangbenYembaKantoniżZapotecZenagaTamazight Standard tal-MarokkZ" + - "uniBla kontenut lingwistikuZazaGħarbi Standard ModernĠermaniż Awstri" + - "jakĠermaniż ŻvizzeruIngliż AwstraljanIngliż KanadiżIngliż Brittaniku" + - "Ingliż AmerikanSpanjol Latin AmerikanSpanjol EwropewSpanjol tal-Mess" + - "ikuFranċiż KanadiżFranċiż ŻvizzeruSassonu KomuniFjammingPortugiż tal" + - "-BrażilPortugiż EwropewMoldovanSerbo-KroatSwahili tar-Repubblika Dem" + - "okratika tal-KongoĊiniż SimplifikatĊiniż Tradizzjonali", + "garitikuUmbunduLingwa Mhix MagħrufaVaiVotikVunjoWalserWalamoWarayWas" + + "hoKalmykSogaYaoYapeseYangbenYembaKantoniżZapotecZenagaTamazight Stan" + + "dard tal-MarokkZuniBla kontenut lingwistikuZazaGħarbi Standard Moder" + + "nĠermaniż AwstrijakĠermaniż ŻvizzeruIngliż AwstraljanIngliż KanadiżI" + + "ngliż BrittanikuIngliż AmerikanSpanjol Latin AmerikanSpanjol Ewropew" + + "Spanjol tal-MessikuFranċiż KanadiżFranċiż ŻvizzeruSassonu KomuniFjam" + + "mingPortugiż tal-BrażilPortugiż EwropewMoldovanSerbo-KroatSwahili ta" + + "r-Repubblika Demokratika tal-KongoĊiniż SimplifikatĊiniż Tradizzjona" + + "li", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0014, 0x001c, 0x0020, 0x0028, 0x0031, @@ -9552,15 +9553,15 @@ var langHeaders = [252]header{ 0x0d21, 0x0d21, 0x0d21, 0x0d26, 0x0d2a, 0x0d30, 0x0d35, 0x0d3a, 0x0d3d, 0x0d44, 0x0d44, 0x0d4b, 0x0d52, 0x0d52, 0x0d5a, 0x0d65, 0x0d6e, 0x0d6e, 0x0d74, 0x0d74, 0x0d7d, 0x0d7d, 0x0d84, 0x0d8a, - 0x0d91, 0x0d99, 0x0db6, 0x0dbc, 0x0dc5, 0x0dcc, 0x0dd0, 0x0dd3, - 0x0dd3, 0x0dd3, 0x0dd3, 0x0dd3, 0x0dd8, 0x0dd8, 0x0ddd, 0x0de3, - 0x0de9, 0x0dee, 0x0df3, 0x0df3, 0x0df3, 0x0df9, 0x0df9, 0x0dfd, + 0x0d91, 0x0d99, 0x0db6, 0x0dbc, 0x0dc5, 0x0dcc, 0x0de1, 0x0de4, + 0x0de4, 0x0de4, 0x0de4, 0x0de4, 0x0de9, 0x0de9, 0x0dee, 0x0df4, + 0x0dfa, 0x0dff, 0x0e04, 0x0e04, 0x0e04, 0x0e0a, 0x0e0a, 0x0e0e, // Entry 240 - 27F - 0x0e00, 0x0e06, 0x0e0d, 0x0e12, 0x0e12, 0x0e1b, 0x0e22, 0x0e22, - 0x0e22, 0x0e28, 0x0e45, 0x0e49, 0x0e61, 0x0e65, 0x0e7c, 0x0e7c, - 0x0e90, 0x0ea4, 0x0eb6, 0x0ec6, 0x0ed8, 0x0ee8, 0x0efe, 0x0f0d, - 0x0f20, 0x0f20, 0x0f32, 0x0f45, 0x0f53, 0x0f5b, 0x0f70, 0x0f81, - 0x0f89, 0x0f94, 0x0fc0, 0x0fd3, 0x0fe8, + 0x0e11, 0x0e17, 0x0e1e, 0x0e23, 0x0e23, 0x0e2c, 0x0e33, 0x0e33, + 0x0e33, 0x0e39, 0x0e56, 0x0e5a, 0x0e72, 0x0e76, 0x0e8d, 0x0e8d, + 0x0ea1, 0x0eb5, 0x0ec7, 0x0ed7, 0x0ee9, 0x0ef9, 0x0f0f, 0x0f1e, + 0x0f31, 0x0f31, 0x0f43, 0x0f56, 0x0f64, 0x0f6c, 0x0f81, 0x0f92, + 0x0f9a, 0x0fa5, 0x0fd1, 0x0fe4, 0x0ff9, }, }, { // mua @@ -9966,11 +9967,11 @@ var langHeaders = [252]header{ "ngoserersahosukumasususumeriskshimaoreklassisk syrisksyrisktemneteso" + "terenotetumtigrétivitokelauklingontlingittamasjektonga (Nyasa)tok pi" + "sintarokotsimshiantumbukatuvalutasawaqtuvinisksentral-tamazightudmur" + - "tugaritiskumbundurotvaivotiskvunjowalsertyskwolayttawaraywashokalmyk" + - "isksogayaoyapesiskyangbenyembakantonesiskzapotecblissymbolzenagastan" + - "dard marokkansk tamazightzuniutan språkleg innhaldzazamoderne standa" + - "rdarabiskbritisk engelsklågsaksiskflamskmoldaviskserbokroatiskforenk" + - "la kinesisktradisjonell kinesisk", + "tugaritiskumbunduukjent språkvaivotiskvunjowalsertyskwolayttawaraywa" + + "shokalmykisksogayaoyapesiskyangbenyembakantonesiskzapotecblissymbolz" + + "enagastandard marokkansk tamazightzuniutan språkleg innhaldzazamoder" + + "ne standardarabiskbritisk engelsklågsaksiskflamskmoldaviskserbokroat" + + "iskforenkla kinesisktradisjonell kinesisk", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032, @@ -10050,15 +10051,15 @@ var langHeaders = [252]header{ 0x0d19, 0x0d19, 0x0d19, 0x0d1e, 0x0d22, 0x0d28, 0x0d2d, 0x0d33, 0x0d37, 0x0d3e, 0x0d3e, 0x0d45, 0x0d4c, 0x0d4c, 0x0d54, 0x0d61, 0x0d6a, 0x0d6a, 0x0d70, 0x0d70, 0x0d79, 0x0d79, 0x0d80, 0x0d86, - 0x0d8d, 0x0d95, 0x0da6, 0x0dac, 0x0db5, 0x0dbc, 0x0dbf, 0x0dc2, - 0x0dc2, 0x0dc2, 0x0dc2, 0x0dc2, 0x0dc8, 0x0dc8, 0x0dcd, 0x0dd7, - 0x0ddf, 0x0de4, 0x0de9, 0x0de9, 0x0de9, 0x0df2, 0x0df2, 0x0df6, + 0x0d8d, 0x0d95, 0x0da6, 0x0dac, 0x0db5, 0x0dbc, 0x0dc9, 0x0dcc, + 0x0dcc, 0x0dcc, 0x0dcc, 0x0dcc, 0x0dd2, 0x0dd2, 0x0dd7, 0x0de1, + 0x0de9, 0x0dee, 0x0df3, 0x0df3, 0x0df3, 0x0dfc, 0x0dfc, 0x0e00, // Entry 240 - 27F - 0x0df9, 0x0e01, 0x0e08, 0x0e0d, 0x0e0d, 0x0e18, 0x0e1f, 0x0e29, - 0x0e29, 0x0e2f, 0x0e4c, 0x0e50, 0x0e66, 0x0e6a, 0x0e81, 0x0e81, - 0x0e81, 0x0e81, 0x0e81, 0x0e81, 0x0e90, 0x0e90, 0x0e90, 0x0e90, - 0x0e90, 0x0e90, 0x0e90, 0x0e90, 0x0e9b, 0x0ea1, 0x0ea1, 0x0ea1, - 0x0eaa, 0x0eb7, 0x0eb7, 0x0ec8, 0x0edd, + 0x0e03, 0x0e0b, 0x0e12, 0x0e17, 0x0e17, 0x0e22, 0x0e29, 0x0e33, + 0x0e33, 0x0e39, 0x0e56, 0x0e5a, 0x0e70, 0x0e74, 0x0e8b, 0x0e8b, + 0x0e8b, 0x0e8b, 0x0e8b, 0x0e8b, 0x0e9a, 0x0e9a, 0x0e9a, 0x0e9a, + 0x0e9a, 0x0e9a, 0x0e9a, 0x0e9a, 0x0ea5, 0x0eab, 0x0eab, 0x0eab, + 0x0eb4, 0x0ec1, 0x0ec1, 0x0ed2, 0x0ee7, }, }, { // nnh @@ -10465,13 +10466,13 @@ var langHeaders = [252]header{ " ସାମିସ୍କୋଲ୍ଟ ସାମୀସୋନିଙ୍କେସୋଗଡିଏନ୍ଶାରାନା ଟୋଙ୍ଗୋଶେରେର୍ସୁକୁମାଶୁଶୁସୁମେରି" + "ଆନ୍କ୍ଲାସିକାଲ୍ ସିରିକ୍ସିରିକ୍ତିମନେତେରେନୋତେତୁମ୍ଟାଇଗ୍ରେତୀଭ୍ଟୋକେଲାଉକ୍ଲିଙ" + "୍ଗନ୍ତ୍ଲିଙ୍ଗିଟ୍ତାମାଶେକ୍ନ୍ୟାସା ଟୋଙ୍ଗୋଟୋକ୍ ପିସିନ୍ତିସିମିସିଆନ୍ଟୁମ୍ବୁକାତ" + - "ୁଭାଲୁତୁଭିନିଆନ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁମୂଳଭାଇଭୋଟିକ୍ୱାଲମୋୱାରୈୱାସୋ" + - "କାଲ୍ମୀକ୍ୟାଓୟାପୀସ୍ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାଜୁନୀକୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସା" + - "ମଗ୍ରୀ ନାହିଁଜାଜାଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁର" + - "ାଜୀକାନାଡିଆନ୍ ଇଁରାଜୀବ୍ରିଟିଶ୍ ଇଁରାଜୀୟୁ.ଏସ୍. ଇଁରାଜୀଲାଟିନ୍ ଆମେରିକାନ୍ ସ" + - "୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ" + - "୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆନ୍ସର୍ବୋ-କ୍ରୋଆଟି" + - "ଆନ୍ସରଳିକରଣ ଚାଇନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍", + "ୁଭାଲୁତୁଭିନିଆନ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁଅଜଣା ଏବଂ ଅବୈଧ ଭାଷାଭାଇଭୋଟି" + + "କ୍ୱାଲମୋୱାରୈୱାସୋକାଲ୍ମୀକ୍ୟାଓୟାପୀସ୍ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାଜୁନୀକୌଣସ" + + "ି ଲିଙ୍ଗୁଇଷ୍ଟ ସାମଗ୍ରୀ ନାହିଁଜାଜାଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ଅ" + + "ଷ୍ଟ୍ରେଲିଆନ୍ ଇଁରାଜୀକାନାଡିଆନ୍ ଇଁରାଜୀବ୍ରିଟିଶ୍ ଇଁରାଜୀୟୁ.ଏସ୍. ଇଁରାଜୀଲାଟ" + + "ିନ୍ ଆମେରିକାନ୍ ସ୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍" + + "ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆ" + + "ନ୍ସର୍ବୋ-କ୍ରୋଆଟିଆନ୍ସରଳିକରଣ ଚାଇନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000f, 0x002d, 0x0042, 0x0060, 0x006c, 0x0081, 0x0096, @@ -10551,15 +10552,15 @@ var langHeaders = [252]header{ 0x22c8, 0x22c8, 0x22c8, 0x22d7, 0x22d7, 0x22e9, 0x22fb, 0x2310, 0x231c, 0x2331, 0x2331, 0x234c, 0x236a, 0x236a, 0x2382, 0x23a7, 0x23c6, 0x23c6, 0x23c6, 0x23c6, 0x23e7, 0x23e7, 0x23ff, 0x2411, - 0x2411, 0x242c, 0x242c, 0x2447, 0x2462, 0x247d, 0x2486, 0x248f, - 0x248f, 0x248f, 0x248f, 0x248f, 0x24a1, 0x24a1, 0x24a1, 0x24a1, - 0x24b0, 0x24bc, 0x24c8, 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, + 0x2411, 0x242c, 0x242c, 0x2447, 0x2462, 0x247d, 0x24ad, 0x24b6, + 0x24b6, 0x24b6, 0x24b6, 0x24b6, 0x24c8, 0x24c8, 0x24c8, 0x24c8, + 0x24d7, 0x24e3, 0x24ef, 0x24ef, 0x24ef, 0x2507, 0x2507, 0x2507, // Entry 240 - 27F - 0x24e9, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2513, 0x2537, - 0x2537, 0x2549, 0x2549, 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25b5, - 0x25e6, 0x2618, 0x264f, 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, - 0x2747, 0x2747, 0x2778, 0x27a3, 0x27a3, 0x27bb, 0x27fe, 0x283b, - 0x2859, 0x2887, 0x2887, 0x28b2, 0x28e3, + 0x2510, 0x2522, 0x2522, 0x2522, 0x2522, 0x2522, 0x253a, 0x255e, + 0x255e, 0x2570, 0x2570, 0x257c, 0x25d0, 0x25dc, 0x25dc, 0x25dc, + 0x260d, 0x263f, 0x2676, 0x26a4, 0x26cf, 0x26f3, 0x273a, 0x276e, + 0x276e, 0x276e, 0x279f, 0x27ca, 0x27ca, 0x27e2, 0x2825, 0x2862, + 0x2880, 0x28ae, 0x28ae, 0x28d9, 0x290a, }, }, { // os @@ -12351,16 +12352,16 @@ var langHeaders = [252]header{ "hitshankielâmaadâsämikielâjuulevsämikielâanarâškielânuorttâlâškielâs" + "oninkesranantongosahosukumakielâkomorikielâsyyriakielâtemnekielâates" + "otetumtigrekielâklingonkielâtok pisintarokotumbukakielâtuvalukielâta" + - "sawaqtuvakielâKoskâatlas tamazightudmurtkielâumbunduruotâsvaikielâve" + - "psäkielâvunjowalliskielâwolaitakielâwaraykielâkalmukkielâsogayangben" + - "yembakantonkielâstandard tamazightzunikielâij kielâlâš siskáldâszaza" + - "kielâstandard arabiakielâNuorttâriijkâ saksakielâSveitsi pajesaksaki" + - "elâAustralia eŋgâlâskielâKanada eŋgâlâskielâBritannia eŋgâlâskielâAm" + - "erika eŋgâlâskielâLäättin-Amerika espanjakielâEspanja espanjakielâMe" + - "ksiko espanjakielâKanada ranskakielâSveitsi ranskakielâVuáládâhenâmi" + - "j saksakielâhollandkielâ (flaami)Brasilia portugalkielâPortugal port" + - "ugalkielâKongo swahilikielâoovtâkiärdánis kiinakielâärbivuáválâš kii" + - "nakielâ", + "sawaqtuvakielâKoskâatlas tamazightudmurtkielâumbundutubdâmettumis ki" + + "elâvaikielâvepsäkielâvunjowalliskielâwolaitakielâwaraykielâkalmukkie" + + "lâsogayangbenyembakantonkielâstandard tamazightzunikielâij kielâlâš " + + "siskáldâszazakielâstandard arabiakielâNuorttâriijkâ saksakielâSveits" + + "i pajesaksakielâAustralia eŋgâlâskielâKanada eŋgâlâskielâBritannia e" + + "ŋgâlâskielâAmerika eŋgâlâskielâLäättin-Amerika espanjakielâEspanja " + + "espanjakielâMeksiko espanjakielâKanada ranskakielâSveitsi ranskakiel" + + "âVuáládâhenâmij saksakielâhollandkielâ (flaami)Brasilia portugalkie" + + "lâPortugal portugalkielâKongo swahilikielâoovtâkiärdánis kiinakielâä" + + "rbivuáválâš kiinakielâ", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0004, 0x0011, 0x0011, 0x001a, 0x0024, 0x0030, 0x003e, @@ -12440,15 +12441,15 @@ var langHeaders = [252]header{ 0x0eb1, 0x0eb1, 0x0eb1, 0x0ebc, 0x0ec1, 0x0ec1, 0x0ec6, 0x0ed1, 0x0ed1, 0x0ed1, 0x0ed1, 0x0ede, 0x0ede, 0x0ede, 0x0ede, 0x0ede, 0x0ee7, 0x0ee7, 0x0eed, 0x0eed, 0x0eed, 0x0eed, 0x0efa, 0x0f06, - 0x0f0d, 0x0f17, 0x0f2c, 0x0f38, 0x0f38, 0x0f3f, 0x0f46, 0x0f4f, - 0x0f4f, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f60, 0x0f6c, - 0x0f79, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f90, 0x0f90, 0x0f94, + 0x0f0d, 0x0f17, 0x0f2c, 0x0f38, 0x0f38, 0x0f3f, 0x0f54, 0x0f5d, + 0x0f5d, 0x0f69, 0x0f69, 0x0f69, 0x0f69, 0x0f69, 0x0f6e, 0x0f7a, + 0x0f87, 0x0f92, 0x0f92, 0x0f92, 0x0f92, 0x0f9e, 0x0f9e, 0x0fa2, // Entry 240 - 27F - 0x0f94, 0x0f94, 0x0f9b, 0x0fa0, 0x0fa0, 0x0fac, 0x0fac, 0x0fac, - 0x0fac, 0x0fac, 0x0fbe, 0x0fc8, 0x0fe2, 0x0fec, 0x1001, 0x1001, - 0x101c, 0x1033, 0x104d, 0x1064, 0x107e, 0x1096, 0x10b5, 0x10ca, - 0x10df, 0x10df, 0x10f2, 0x1106, 0x1124, 0x113a, 0x1151, 0x1168, - 0x1168, 0x1168, 0x117b, 0x1198, 0x11b5, + 0x0fa2, 0x0fa2, 0x0fa9, 0x0fae, 0x0fae, 0x0fba, 0x0fba, 0x0fba, + 0x0fba, 0x0fba, 0x0fcc, 0x0fd6, 0x0ff0, 0x0ffa, 0x100f, 0x100f, + 0x102a, 0x1041, 0x105b, 0x1072, 0x108c, 0x10a4, 0x10c3, 0x10d8, + 0x10ed, 0x10ed, 0x1100, 0x1114, 0x1132, 0x1148, 0x115f, 0x1176, + 0x1176, 0x1176, 0x1189, 0x11a6, 0x11c3, }, }, { // sn @@ -13113,8 +13114,8 @@ var langHeaders = [252]header{ "a AljeriaKibuginiKigwichiinKihupaKiingushKilojbanKikachinKikoyra Chi" + "iniKikakoKikomipermyakKikurukhKikumykKilambamakKimokshaKimikmakiKimo" + "hokiKimossiKingiemboonKiinkoPijini ya NijeriaKikiicheKiarabu cha Cha" + - "diKitongo cha SrananKikomoroKisiriaKiudumurtiKirootKiwalserKiarabu c" + - "ha Dunia Kilichosanifishwa", + "diKitongo cha SrananKikomoroKisiriaKiudumurtiKiwalserKiarabu cha Dun" + + "ia Kilichosanifishwa", []uint16{ // 591 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, @@ -13194,12 +13195,12 @@ var langHeaders = [252]header{ 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, - 0x0137, 0x0137, 0x0137, 0x0141, 0x0141, 0x0141, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x014f, - 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, + 0x0137, 0x0137, 0x0137, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, + 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0149, + 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, // Entry 240 - 27F - 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, - 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0172, + 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, + 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x016c, }, }, { // sw-KE @@ -13208,8 +13209,8 @@ var langHeaders = [252]header{ "ia cha JuuKingushiKilojbaniKikachinKikoyra ChiiniKikakoKikomipermyak" + "KikurukhKilambaKimokshaKimicmacKimohokiKiingiemboonKiin’koPijini ya " + "NijeriascoKikoyraboro SenniKiarabu cha ChadiKiscran TongoKicomoroKis" + - "yriaLugha ya Central Atlas TamazightKiudumurtiKirootKiwalserTamazigh" + - "t Sanifu ya MorokoKiarabu cha Sasa Kilichosanifishwa", + "yriaLugha ya Central Atlas TamazightKiudumurtiKiwalserTamazight Sani" + + "fu ya MorokoKiarabu cha Sasa Kilichosanifishwa", []uint16{ // 591 elements // Entry 0 - 3F 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, @@ -13289,12 +13290,12 @@ var langHeaders = [252]header{ 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x015e, 0x015e, 0x017e, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, - 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, 0x0196, - 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, + 0x015e, 0x015e, 0x017e, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, + 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, 0x0190, + 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, // Entry 240 - 27F - 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, - 0x0196, 0x0196, 0x01b0, 0x01b0, 0x01b0, 0x01b0, 0x01d2, + 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, + 0x0190, 0x0190, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01cc, }, }, { // ta @@ -13626,22 +13627,22 @@ var langHeaders = [252]header{ "olea fakatalokolea fakasakōnialea fakatisīmisianilea fakatati-mosele" + "milea fakatumepukalea fakatūvalulea fakatasauakilea fakatuvīnialea f" + "akatamasaiti-ʻatilasi-lolotolea fakaʻutimulitilea fakaʻūkalitilea fa" + - "kaʻumipūnitulea fakaʻilonga-tefitolea fakavailea fakavenēsialea faka" + - "vepisilea fakavelamingi-hihifolea fakafalanikoni-lolotolea fakavotik" + - "ilea fakavōlolea fakavūnisolea fakaʻualiselilea fakaʻuolaitalea faka" + - "ʻualailea fakaʻuasiōlea fakaʻuālipililea fakasiaina-uūlea fakakalim" + - "ikilea fakamingilelialea fakasokalea fakaʻiaolea fakaʻiapilea fakaʻi" + - "angipenilea fakaʻiēmipalea fakaneʻēngatūlea fakakuangitongilea fakas" + - "apotekilea fakaʻilonga-pilisilea fakasēlanilea fakasenakalea fakatam" + - "asaiti-molokolea fakasuniʻikai ha lealea fakasāsālea fakaʻalepea (mā" + - "mani)lea fakasiamane-ʻaositulialea fakasiamane-hake-suisilanilea fak" + - "apālangi-ʻaositelēlialea fakapālangi-kānatalea fakapilitānialea faka" + - "pālangi-ʻamelikalea fakasipēnisi lātini-ʻamelikalea fakasipēnisi-‘iu" + - "lopelea fakasipēnisi-mekisikoulea fakafalanisē-kānatalea fakafalanis" + - "ē-suisilanilea fakasakisoni-hifolea fakahōlani-pelesiumelea fakapot" + - "ukali-palāsililea fakapotukali-ʻiulopelea fakamolitāvialea fakakuloi" + - "sia-sēpialea fakasuahili-kongikōlea fakasiaina-fakafaingofualea faka" + - "siaina-tukufakaholo", + "kaʻumipūnitulea taʻeʻiloalea fakavailea fakavenēsialea fakavepisilea" + + " fakavelamingi-hihifolea fakafalanikoni-lolotolea fakavotikilea faka" + + "vōlolea fakavūnisolea fakaʻualiselilea fakaʻuolaitalea fakaʻualailea" + + " fakaʻuasiōlea fakaʻuālipililea fakasiaina-uūlea fakakalimikilea fak" + + "amingilelialea fakasokalea fakaʻiaolea fakaʻiapilea fakaʻiangipenile" + + "a fakaʻiēmipalea fakaneʻēngatūlea fakakuangitongilea fakasapotekilea" + + " fakaʻilonga-pilisilea fakasēlanilea fakasenakalea fakatamasaiti-mol" + + "okolea fakasuniʻikai ha lealea fakasāsālea fakaʻalepea (māmani)lea f" + + "akasiamane-ʻaositulialea fakasiamane-hake-suisilanilea fakapālangi-ʻ" + + "aositelēlialea fakapālangi-kānatalea fakapilitānialea fakapālangi-ʻa" + + "melikalea fakasipēnisi lātini-ʻamelikalea fakasipēnisi-‘iulopelea fa" + + "kasipēnisi-mekisikoulea fakafalanisē-kānatalea fakafalanisē-suisilan" + + "ilea fakasakisoni-hifolea fakahōlani-pelesiumelea fakapotukali-palās" + + "ililea fakapotukali-ʻiulopelea fakamolitāvialea fakakuloisia-sēpiale" + + "a fakasuahili-kongikōlea fakasiaina-fakafaingofualea fakasiaina-tuku" + + "fakaholo", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0010, 0x0022, 0x0035, 0x0048, 0x0057, 0x0068, 0x0079, @@ -13721,15 +13722,15 @@ var langHeaders = [252]header{ 0x222e, 0x223d, 0x2249, 0x2258, 0x2264, 0x2272, 0x2280, 0x228f, 0x229b, 0x22aa, 0x22b9, 0x22ca, 0x22de, 0x22ec, 0x22fd, 0x2310, 0x2323, 0x2331, 0x233f, 0x234f, 0x2363, 0x2378, 0x2388, 0x2397, - 0x23a7, 0x23b7, 0x23d9, 0x23ec, 0x23fe, 0x2412, 0x2429, 0x2434, - 0x2444, 0x2452, 0x246a, 0x2483, 0x2491, 0x249e, 0x24ad, 0x24bf, - 0x24d0, 0x24df, 0x24ef, 0x2502, 0x2514, 0x2524, 0x2536, 0x2542, + 0x23a7, 0x23b7, 0x23d9, 0x23ec, 0x23fe, 0x2412, 0x2421, 0x242c, + 0x243c, 0x244a, 0x2462, 0x247b, 0x2489, 0x2496, 0x24a5, 0x24b7, + 0x24c8, 0x24d7, 0x24e7, 0x24fa, 0x250c, 0x251c, 0x252e, 0x253a, // Entry 240 - 27F - 0x254f, 0x255d, 0x2570, 0x2581, 0x2595, 0x25a8, 0x25b8, 0x25cf, - 0x25de, 0x25ec, 0x2604, 0x2610, 0x261d, 0x262b, 0x2645, 0x2645, - 0x2660, 0x267e, 0x269d, 0x26b5, 0x26c7, 0x26e1, 0x2704, 0x271f, - 0x273a, 0x273a, 0x2753, 0x276e, 0x2783, 0x279c, 0x27b6, 0x27cf, - 0x27e1, 0x27f8, 0x2810, 0x282c, 0x2847, + 0x2547, 0x2555, 0x2568, 0x2579, 0x258d, 0x25a0, 0x25b0, 0x25c7, + 0x25d6, 0x25e4, 0x25fc, 0x2608, 0x2615, 0x2623, 0x263d, 0x263d, + 0x2658, 0x2676, 0x2695, 0x26ad, 0x26bf, 0x26d9, 0x26fc, 0x2717, + 0x2732, 0x2732, 0x274b, 0x2766, 0x277b, 0x2794, 0x27ae, 0x27c7, + 0x27d9, 0x27f0, 0x2808, 0x2824, 0x283f, }, }, { // tr @@ -13980,15 +13981,15 @@ var langHeaders = [252]header{ "چەتېمنېچەتېسوچەتېرېناچەتېتۇمچەتىگرېچەتىۋچەتوكېلاۋچەكىلىنگونچەتىلىنگ" + "ىتچەتاماشېكچەنياسا توڭانچەتوك-پىسىنچەتوروكوچەسىمشيانچەتۇمبۇكاچەتۇۋا" + "لۇچەشىمالىي سوڭخايچەتوۋاچەمەركىزىي ئاتلاس تامازايتچەئۇدمۇرتچەئۇگارى" + - "تىكچەئۇمبۇندۇچەغول تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولايتاچەۋارايچەۋاش" + - "وچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەزاپوتېكچەبىلىس ب" + - "ەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل مەزمۇنى يوقزاز" + - "اچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچەشىۋىتسارىيە ئې" + - "گىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئەنگلىيە ئىنگلى" + - "زچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئىسپانچەمېكسىكا" + - " ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىرازىلىيە پورتۇگالچ" + - "ەياۋروپا پورتۇگالچەسېرب-كرودىيەچەكونگو سىۋالىچەئاددىي خەنچەمۇرەككەپ" + - " خەنچە", + "تىكچەئۇمبۇندۇچەيوچۇن تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولايتاچەۋارايچەۋ" + + "اشوچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەزاپوتېكچەبىلىس" + + " بەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل مەزمۇنى يوقزا" + + "زاچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچەشىۋىتسارىيە ئ" + + "ېگىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئەنگلىيە ئىنگل" + + "ىزچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئىسپانچەمېكسىك" + + "ا ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىرازىلىيە پورتۇگا" + + "لچەياۋروپا پورتۇگالچەسېرب-كرودىيەچەكونگو سىۋالىچەئاددىي خەنچەمۇرەكك" + + "ەپ خەنچە", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x000e, 0x001e, 0x0030, 0x0044, 0x0052, 0x0062, 0x0074, @@ -14068,15 +14069,15 @@ var langHeaders = [252]header{ 0x1e2d, 0x1e2d, 0x1e2d, 0x1e3b, 0x1e47, 0x1e57, 0x1e65, 0x1e73, 0x1e7d, 0x1e8f, 0x1e8f, 0x1ea3, 0x1eb7, 0x1eb7, 0x1ec9, 0x1ee2, 0x1ef7, 0x1ef7, 0x1f07, 0x1f07, 0x1f19, 0x1f19, 0x1f2b, 0x1f3b, - 0x1f5a, 0x1f66, 0x1f98, 0x1faa, 0x1fc0, 0x1fd4, 0x1fe1, 0x1feb, - 0x1feb, 0x1feb, 0x1feb, 0x1feb, 0x1ff7, 0x1ff7, 0x2005, 0x2015, - 0x2027, 0x2035, 0x2041, 0x2041, 0x2041, 0x2051, 0x2051, 0x205d, + 0x1f5a, 0x1f66, 0x1f98, 0x1faa, 0x1fc0, 0x1fd4, 0x1fe5, 0x1fef, + 0x1fef, 0x1fef, 0x1fef, 0x1fef, 0x1ffb, 0x1ffb, 0x2009, 0x2019, + 0x202b, 0x2039, 0x2045, 0x2045, 0x2045, 0x2055, 0x2055, 0x2061, // Entry 240 - 27F - 0x2067, 0x2071, 0x2081, 0x208f, 0x208f, 0x20a1, 0x20b3, 0x20d0, - 0x20d0, 0x20e0, 0x2114, 0x2120, 0x213c, 0x2148, 0x2183, 0x2183, - 0x21a8, 0x21e0, 0x2209, 0x2228, 0x224b, 0x226e, 0x229a, 0x22b9, - 0x22d8, 0x22d8, 0x22f9, 0x2324, 0x2324, 0x2324, 0x234d, 0x2370, - 0x2370, 0x238b, 0x23a6, 0x23bd, 0x23d8, + 0x206b, 0x2075, 0x2085, 0x2093, 0x2093, 0x20a5, 0x20b7, 0x20d4, + 0x20d4, 0x20e4, 0x2118, 0x2124, 0x2140, 0x214c, 0x2187, 0x2187, + 0x21ac, 0x21e4, 0x220d, 0x222c, 0x224f, 0x2272, 0x229e, 0x22bd, + 0x22dc, 0x22dc, 0x22fd, 0x2328, 0x2328, 0x2328, 0x2351, 0x2374, + 0x2374, 0x238f, 0x23aa, 0x23c1, 0x23dc, }, }, { // uk @@ -15190,10 +15191,10 @@ var langHeaders = [252]header{ "里文瑟爾卡普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯" + "科特薩米文索尼基文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆" + "文特索文泰雷諾文泰頓文蒂格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩" + - "克尼恩文欽西安文穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭" + - "德文美茵-法蘭克尼亞文沃提克文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈" + - "恩加圖文粵語薩波特克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文" + - "佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(剛果)簡體中文繁體中文", + "克尼恩文欽西安文穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文未知語言瓦伊文威尼斯文維普森文西佛" + + "蘭德文美茵-法蘭克尼亞文沃提克文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文" + + "奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜" + + "文佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(剛果)簡體中文繁體中文", []uint16{ // 613 elements // Entry 0 - 3F 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, @@ -15273,15 +15274,15 @@ var langHeaders = [252]header{ 0x1a2e, 0x1a3d, 0x1a46, 0x1a4f, 0x1a58, 0x1a64, 0x1a6d, 0x1a79, 0x1a82, 0x1a8e, 0x1a9a, 0x1aa6, 0x1ab5, 0x1ac1, 0x1ad0, 0x1ae8, 0x1af4, 0x1b00, 0x1b0c, 0x1b1e, 0x1b2a, 0x1b3c, 0x1b4b, 0x1b57, - 0x1b63, 0x1b6c, 0x1b7e, 0x1b8d, 0x1b99, 0x1ba5, 0x1bae, 0x1bb7, - 0x1bc3, 0x1bcf, 0x1bde, 0x1bf7, 0x1c03, 0x1c0c, 0x1c15, 0x1c1e, - 0x1c2a, 0x1c33, 0x1c3c, 0x1c48, 0x1c4e, 0x1c5d, 0x1c6c, 0x1c75, + 0x1b63, 0x1b6c, 0x1b7e, 0x1b8d, 0x1b99, 0x1ba5, 0x1bb1, 0x1bba, + 0x1bc6, 0x1bd2, 0x1be1, 0x1bfa, 0x1c06, 0x1c0f, 0x1c18, 0x1c21, + 0x1c2d, 0x1c36, 0x1c3f, 0x1c4b, 0x1c51, 0x1c60, 0x1c6f, 0x1c78, // Entry 240 - 27F - 0x1c7b, 0x1c84, 0x1c8d, 0x1c99, 0x1ca8, 0x1cae, 0x1cbd, 0x1ccc, - 0x1cd5, 0x1ce1, 0x1cff, 0x1d08, 0x1d17, 0x1d20, 0x1d38, 0x1d38, - 0x1d38, 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d50, - 0x1d50, 0x1d50, 0x1d50, 0x1d50, 0x1d62, 0x1d6e, 0x1d6e, 0x1d6e, - 0x1d7d, 0x1d9b, 0x1db6, 0x1dc2, 0x1dce, + 0x1c7e, 0x1c87, 0x1c90, 0x1c9c, 0x1cab, 0x1cb1, 0x1cc0, 0x1ccf, + 0x1cd8, 0x1ce4, 0x1d02, 0x1d0b, 0x1d1a, 0x1d23, 0x1d3b, 0x1d3b, + 0x1d3b, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, + 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d65, 0x1d71, 0x1d71, 0x1d71, + 0x1d80, 0x1d9e, 0x1db9, 0x1dc5, 0x1dd1, }, }, { // zgh @@ -15488,7 +15489,7 @@ var langHeaders = [252]header{ }, } -const afLangStr string = "" + // Size: 3015 bytes +const afLangStr string = "" + // Size: 3038 bytes "AfarAbkasiesAfrikaansAkanAmhariesAragoneesArabiesAssameesAvariesAymaraAz" + "erbeidjansBaskirBelo-RussiesBulgaarsBislamaBambaraBengaalsTibettaansBret" + "onsBosniesKatalaansTsjetsjenChamorroKorsikaansTsjeggiesKerkslawiesChuvas" + @@ -15527,10 +15528,10 @@ const afLangStr string = "" + // Size: 3015 bytes "sSenaKoyraboro SenniTachelhitShanSuid-SamiLule SamiInari SamiSkolt SamiS" + "oninkeSranan TongoSahoSukumaComoraansSirieseTimneTesoTetoemTigreKlingonT" + "ok PisinTarokoToemboekaTuvaluTasawaqTuvineesSentraal Atlas TamazightUdmu" + - "rtUmbunduRootVaiVunjoWalserWolayttaWarayWarlpiriKalmykSogaYangbenYembaKa" + - "ntoneesStandaard Marokkaanse TamazightZuniGeen linguistiese inhoudZazaMo" + - "derne Standaard ArabiesSwitserse hoog-DuitsSpaans (Suid-Amerika)Nedersak" + - "siesVlaamsMoldawiesSerwo-KroatiesSwahili (Kongo)" + "rtUmbunduOnbekende of ongeldige taalVaiVunjoWalserWolayttaWarayWarlpiriK" + + "almykSogaYangbenYembaKantoneesStandaard Marokkaanse TamazightZuniGeen li" + + "nguistiese inhoudZazaModerne Standaard ArabiesSwitserse hoog-DuitsSpaans" + + " (Suid-Amerika)NedersaksiesVlaamsMoldawiesSerwo-KroatiesSwahili (Kongo)" var afLangIdx = []uint16{ // 611 elements // Entry 0 - 3F @@ -15611,18 +15612,18 @@ var afLangIdx = []uint16{ // 611 elements 0x0a5b, 0x0a5b, 0x0a5b, 0x0a60, 0x0a64, 0x0a64, 0x0a6a, 0x0a6f, 0x0a6f, 0x0a6f, 0x0a6f, 0x0a76, 0x0a76, 0x0a76, 0x0a76, 0x0a76, 0x0a7f, 0x0a7f, 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a8e, 0x0a94, - 0x0a9b, 0x0aa3, 0x0abb, 0x0ac1, 0x0ac1, 0x0ac8, 0x0acc, 0x0acf, - 0x0acf, 0x0acf, 0x0acf, 0x0acf, 0x0acf, 0x0acf, 0x0ad4, 0x0ada, - 0x0ae2, 0x0ae7, 0x0ae7, 0x0aef, 0x0aef, 0x0af5, 0x0af5, 0x0af9, + 0x0a9b, 0x0aa3, 0x0abb, 0x0ac1, 0x0ac1, 0x0ac8, 0x0ae3, 0x0ae6, + 0x0ae6, 0x0ae6, 0x0ae6, 0x0ae6, 0x0ae6, 0x0ae6, 0x0aeb, 0x0af1, + 0x0af9, 0x0afe, 0x0afe, 0x0b06, 0x0b06, 0x0b0c, 0x0b0c, 0x0b10, // Entry 240 - 27F - 0x0af9, 0x0af9, 0x0b00, 0x0b05, 0x0b05, 0x0b0e, 0x0b0e, 0x0b0e, - 0x0b0e, 0x0b0e, 0x0b2d, 0x0b31, 0x0b49, 0x0b4d, 0x0b66, 0x0b66, - 0x0b66, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b8f, 0x0b8f, - 0x0b8f, 0x0b8f, 0x0b8f, 0x0b8f, 0x0b9b, 0x0ba1, 0x0ba1, 0x0ba1, - 0x0baa, 0x0bb8, 0x0bc7, + 0x0b10, 0x0b10, 0x0b17, 0x0b1c, 0x0b1c, 0x0b25, 0x0b25, 0x0b25, + 0x0b25, 0x0b25, 0x0b44, 0x0b48, 0x0b60, 0x0b64, 0x0b7d, 0x0b7d, + 0x0b7d, 0x0b91, 0x0b91, 0x0b91, 0x0b91, 0x0b91, 0x0ba6, 0x0ba6, + 0x0ba6, 0x0ba6, 0x0ba6, 0x0ba6, 0x0bb2, 0x0bb8, 0x0bb8, 0x0bb8, + 0x0bc1, 0x0bcf, 0x0bde, } // Size: 1246 bytes -const amLangStr string = "" + // Size: 6791 bytes +const amLangStr string = "" + // Size: 6810 bytes "አፋርኛአብሐዚኛአቬስታንአፍሪካንኛአካንኛአማርኛአራጎንስዓረብኛአሳሜዛዊአቫሪክአያማርኛአዘርባጃንኛባስኪርኛቤላራሻኛቡልጋሪ" + "ኛቢስላምኛባምባርኛቤንጋሊኛቲቤታንኛብሬቶንኛቦስኒያንኛካታላንኛችችንቻሞሮኮርሲካኛክሪቼክኛቸርች ስላቪክቹቫሽወልሽዴኒሽ" + "ጀርመንዲቬህድዞንግኻኛኢዊግሪክኛእንግሊዝኛኤስፐራንቶስፓንሽኛኢስቶኒያንኛባስክኛፐርሺያኛፉላህፊኒሽፊጂኛፋሮኛፈረንሳይኛ" + @@ -15651,12 +15652,12 @@ const amLangStr string = "" + // Size: 6791 bytes "ያ ፒጂንፐሩሳንኛኪቼቺምቦራዞ ሃይላንድ ኩቹዋራፓኑኢራሮቶንጋሮምቦአሮማንያንርዋሳንዳዌሳክሃሳምቡሩሳንታሊንጋምባይሳንጉ" + "ሲሲሊያንኛስኮትስደቡባዊ ኩርዲሽሴናኮይራቦሮ ሴኒታቼልሂትሻንቻዲያን ዓረብኛሲዳምኛደቡባዊ ሳሚሉሌ ሳሚኢናሪ ሳሚስኮል" + "ት ሳሚሶኒንኬስራናን ቶንጎሳሆኛሱኩማኮሞሪያንክላሲክ ኔይራሲሪያክቲምኔቴሶቴተምትግረክሊንጎንኛቶክ ፒሲንታሮኮቱምቡካቱ" + - "ቫሉታሳዋቅቱቪንያንኛመካከለኛ አትላስ ታማዚግትኡድሙርትኡምቡንዱሩትቫይቩንጆዋልሰርወላይትኛዋራይዋርልፒሪዉ ቻይንኛካል" + - "ማይክሶጋያንግቤንኛየምባካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትዙኒቋንቋዊ ይዘት አይደለምዛዛዘመናዊ መደበኛ " + - "ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እንግሊዝኛየብሪቲሽ እንግሊዝኛየአ" + - "ሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈረንሳይኛየስዊዝ ፈረንሳይኛየታ" + - "ችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቪያንኛሰርቦ-ክሮኤሽያኛኮንጎ ስዋሂሊቀለል ያለ ቻይ" + - "ንኛባህላዊ ቻይንኛ" + "ቫሉታሳዋቅቱቪንያንኛመካከለኛ አትላስ ታማዚግትኡድሙርትኡምቡንዱያልታወቀ ቋንቋቫይቩንጆዋልሰርወላይትኛዋራይዋርልፒሪዉ" + + " ቻይንኛካልማይክሶጋያንግቤንኛየምባካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትዙኒቋንቋዊ ይዘት አይደለምዛዛዘመናዊ " + + "መደበኛ ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እንግሊዝኛየብሪቲሽ እንግ" + + "ሊዝኛየአሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈረንሳይኛየስዊዝ ፈረን" + + "ሳይኛየታችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቪያንኛሰርቦ-ክሮኤሽያኛኮንጎ ስዋሂሊቀለል " + + "ያለ ቻይንኛባህላዊ ቻይንኛ" var amLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -15737,18 +15738,18 @@ var amLangIdx = []uint16{ // 613 elements 0x162d, 0x162d, 0x162d, 0x1636, 0x163c, 0x163c, 0x1645, 0x164e, 0x164e, 0x164e, 0x164e, 0x1660, 0x1660, 0x1660, 0x1660, 0x1660, 0x1670, 0x1670, 0x1679, 0x1679, 0x1679, 0x1679, 0x1685, 0x168e, - 0x169a, 0x16ac, 0x16d8, 0x16e7, 0x16e7, 0x16f6, 0x16fc, 0x1702, - 0x1702, 0x1702, 0x1702, 0x1702, 0x1702, 0x1702, 0x170b, 0x1717, - 0x1726, 0x172f, 0x172f, 0x173e, 0x174e, 0x175d, 0x175d, 0x1763, + 0x169a, 0x16ac, 0x16d8, 0x16e7, 0x16e7, 0x16f6, 0x170f, 0x1715, + 0x1715, 0x1715, 0x1715, 0x1715, 0x1715, 0x1715, 0x171e, 0x172a, + 0x1739, 0x1742, 0x1742, 0x1751, 0x1761, 0x1770, 0x1770, 0x1776, // Entry 240 - 27F - 0x1763, 0x1763, 0x1775, 0x177e, 0x177e, 0x178d, 0x178d, 0x17a5, - 0x17a5, 0x17a5, 0x17ce, 0x17d4, 0x17fa, 0x1800, 0x1826, 0x1826, - 0x1845, 0x186e, 0x1899, 0x18b8, 0x18da, 0x18fc, 0x1922, 0x1941, - 0x1960, 0x1960, 0x197f, 0x199e, 0x19ba, 0x19c6, 0x19e8, 0x1a0a, - 0x1a1f, 0x1a3b, 0x1a51, 0x1a6e, 0x1a87, + 0x1776, 0x1776, 0x1788, 0x1791, 0x1791, 0x17a0, 0x17a0, 0x17b8, + 0x17b8, 0x17b8, 0x17e1, 0x17e7, 0x180d, 0x1813, 0x1839, 0x1839, + 0x1858, 0x1881, 0x18ac, 0x18cb, 0x18ed, 0x190f, 0x1935, 0x1954, + 0x1973, 0x1973, 0x1992, 0x19b1, 0x19cd, 0x19d9, 0x19fb, 0x1a1d, + 0x1a32, 0x1a4e, 0x1a64, 0x1a81, 0x1a9a, } // Size: 1250 bytes -const arLangStr string = "" + // Size: 10039 bytes +const arLangStr string = "" + // Size: 10055 bytes "الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراغونيةالعربيةالأ" + "ساميةالأواريةالأيماراالأذربيجانيةالباشكيريةالبيلاروسيةالبلغاريةالبيسلام" + "يةالبامباراالبنغاليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشامو" + @@ -15812,15 +15813,15 @@ const arLangStr string = "" + // Size: 10039 bytes "سريانية تقليديةالسريانيةالتيمنتيسوالتيرينوالتيتمالتيغريةالتيفالتوكيلاوا" + "لكلينجونالتلينغيتيةالتاماشيكتونجا - نياساالتوك بيسينلغة التاروكوالتسيمش" + "يانالتامبوكاالتوفالوتاساواقالتوفيةالأمازيغية وسط الأطلسالأدمرتاليجاريتي" + - "كالأمبندوالجذرالفايالفوتيكالفونجوالوالسرالولاياتاالوارايالواشووارلبيريا" + - "لوو الصينيةالكالميكالسوغاالياواليابيزيانجبنيمباالكَنْتُونيةالزابوتيكرمو" + - "ز المعايير الأساسيةالزيناجاالتمازيغية المغربية القياسيةالزونيةبدون محتو" + - "ى لغويزازاالعربية الرسمية الحديثةالألمانية النمساويةالألمانية العليا ال" + - "سويسريةالإنجليزية الأستراليةالإنجليزية الكنديةالإنجليزية البريطانيةالإن" + - "جليزية الأمريكيةالإسبانية أمريكا اللاتينيةالإسبانية الأوروبيةالإسبانية " + - "المكسيكيةالفرنسية الكنديةالفرنسية السويسريةالسكسونية السفلىالفلمنكيةالب" + - "رتغالية البرازيليةالبرتغالية الأوروبيةالمولدوفيةصربية-كرواتيةالكونغو ال" + - "سواحليةالصينية المبسطةالصينية التقليدية" + "كالأمبندولغة غير معروفةالفايالفوتيكالفونجوالوالسرالولاياتاالوارايالواشو" + + "وارلبيريالوو الصينيةالكالميكالسوغاالياواليابيزيانجبنيمباالكَنْتُونيةالز" + + "ابوتيكرموز المعايير الأساسيةالزيناجاالتمازيغية المغربية القياسيةالزونية" + + "بدون محتوى لغويزازاالعربية الرسمية الحديثةالألمانية النمساويةالألمانية " + + "العليا السويسريةالإنجليزية الأستراليةالإنجليزية الكنديةالإنجليزية البري" + + "طانيةالإنجليزية الأمريكيةالإسبانية أمريكا اللاتينيةالإسبانية الأوروبيةا" + + "لإسبانية المكسيكيةالفرنسية الكنديةالفرنسية السويسريةالسكسونية السفلىالف" + + "لمنكيةالبرتغالية البرازيليةالبرتغالية الأوروبيةالمولدوفيةصربية-كرواتيةا" + + "لكونغو السواحليةالصينية المبسطةالصينية التقليدية" var arLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -15901,18 +15902,18 @@ var arLangIdx = []uint16{ // 613 elements 0x2123, 0x2123, 0x2123, 0x212f, 0x2137, 0x2147, 0x2153, 0x2163, 0x216d, 0x217f, 0x217f, 0x2191, 0x21a7, 0x21a7, 0x21b9, 0x21d0, 0x21e5, 0x21e5, 0x21fc, 0x21fc, 0x2210, 0x2210, 0x2222, 0x2232, - 0x2240, 0x224e, 0x2276, 0x2284, 0x2298, 0x22a8, 0x22b2, 0x22bc, - 0x22bc, 0x22bc, 0x22bc, 0x22bc, 0x22ca, 0x22ca, 0x22d8, 0x22e6, - 0x22f8, 0x2306, 0x2312, 0x2322, 0x2339, 0x2349, 0x2349, 0x2355, + 0x2240, 0x224e, 0x2276, 0x2284, 0x2298, 0x22a8, 0x22c2, 0x22cc, + 0x22cc, 0x22cc, 0x22cc, 0x22cc, 0x22da, 0x22da, 0x22e8, 0x22f6, + 0x2308, 0x2316, 0x2322, 0x2332, 0x2349, 0x2359, 0x2359, 0x2365, // Entry 240 - 27F - 0x235f, 0x236d, 0x2379, 0x2381, 0x2381, 0x2399, 0x23ab, 0x23d5, - 0x23d5, 0x23e5, 0x241b, 0x2429, 0x2445, 0x244d, 0x2479, 0x2479, - 0x249e, 0x24d0, 0x24f9, 0x251c, 0x2545, 0x256c, 0x259e, 0x25c3, - 0x25e8, 0x25e8, 0x2607, 0x262a, 0x2649, 0x265b, 0x2684, 0x26ab, - 0x26bf, 0x26d8, 0x26f9, 0x2716, 0x2737, + 0x236f, 0x237d, 0x2389, 0x2391, 0x2391, 0x23a9, 0x23bb, 0x23e5, + 0x23e5, 0x23f5, 0x242b, 0x2439, 0x2455, 0x245d, 0x2489, 0x2489, + 0x24ae, 0x24e0, 0x2509, 0x252c, 0x2555, 0x257c, 0x25ae, 0x25d3, + 0x25f8, 0x25f8, 0x2617, 0x263a, 0x2659, 0x266b, 0x2694, 0x26bb, + 0x26cf, 0x26e8, 0x2709, 0x2726, 0x2747, } // Size: 1250 bytes -const azLangStr string = "" + // Size: 3713 bytes +const azLangStr string = "" + // Size: 3722 bytes "afarabxazavestanafrikaansakanamhararaqonərəbassamavaraymaraazərbaycanbaş" + "qırdbelarusbolqarbislamabambarabenqaltibetbretonbosniakkatalançeçençamor" + "okorsikakriçexslavyançuvaşuelsdanimarkaalmanmaldivdzonqaeveyunaningilise" + @@ -15954,14 +15955,15 @@ const azLangStr string = "" + // Size: 3713 bytes "amocənubi samilule samiinari samiskolt samisoninkesoqdiyensranan tonqose" + "rersahosukumasususumeryankomorsuriyatimnetesoterenotetumtiqretivtokelayk" + "linqontlinqittamaşeknyasa tonqatok pisintarokosimşyantumbukatuvalutasava" + - "qtuvinyanMərkəzi Atlas tamazicəsiudmurtuqaritumbundurutvaivotikvunyovall" + - "esvalamovarayvaşovalpirivukalmıksoqayaoyapizyanqbenyembakantonzapotekbli" + - "simbolszenaqatamazizunidil məzmunu yoxdurzazamüasir standart ərəbcənubi " + - "azərbaycanAvstriya almancasıİsveçrə yüksək almancasıAvstraliya ingiliscə" + - "siKanada ingiliscəsiBritaniya ingiliscəsiAmerika ingiliscəsiLatın Amerik" + - "ası ispancasıKastiliya ispancasıMeksika ispancasıKanada fransızcasıİsveç" + - "rə fransızcasıaşağı saksonflamandBraziliya portuqalcasıPortuqaliya portu" + - "qalcasımoldavserb-xorvatKonqo suahilicəsisadələşmiş çinənənəvi çin" + "qtuvinyanMərkəzi Atlas tamazicəsiudmurtuqaritumbundunaməlum dilvaivotikv" + + "unyovallesvalamovarayvaşovalpirivukalmıksoqayaoyapizyanqbenyembakantonza" + + "potekblisimbolszenaqatamazizunidil məzmunu yoxdurzazamüasir standart ərə" + + "bcənubi azərbaycanAvstriya almancasıİsveçrə yüksək almancasıAvstraliya i" + + "ngiliscəsiKanada ingiliscəsiBritaniya ingiliscəsiAmerika ingiliscəsiLatı" + + "n Amerikası ispancasıKastiliya ispancasıMeksika ispancasıKanada fransızc" + + "asıİsveçrə fransızcasıaşağı saksonflamandBraziliya portuqalcasıPortuqali" + + "ya portuqalcasımoldavserb-xorvatKonqo suahilicəsisadələşmiş çinənənəvi ç" + + "in" var azLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -16042,18 +16044,18 @@ var azLangIdx = []uint16{ // 613 elements 0x0ba8, 0x0ba8, 0x0ba8, 0x0bad, 0x0bb1, 0x0bb7, 0x0bbc, 0x0bc1, 0x0bc4, 0x0bcb, 0x0bcb, 0x0bd2, 0x0bd9, 0x0bd9, 0x0be1, 0x0bec, 0x0bf5, 0x0bf5, 0x0bfb, 0x0bfb, 0x0c03, 0x0c03, 0x0c0a, 0x0c10, - 0x0c17, 0x0c1f, 0x0c3a, 0x0c40, 0x0c46, 0x0c4d, 0x0c50, 0x0c53, - 0x0c53, 0x0c53, 0x0c53, 0x0c53, 0x0c58, 0x0c58, 0x0c5d, 0x0c63, - 0x0c69, 0x0c6e, 0x0c73, 0x0c7a, 0x0c7c, 0x0c83, 0x0c83, 0x0c87, + 0x0c17, 0x0c1f, 0x0c3a, 0x0c40, 0x0c46, 0x0c4d, 0x0c59, 0x0c5c, + 0x0c5c, 0x0c5c, 0x0c5c, 0x0c5c, 0x0c61, 0x0c61, 0x0c66, 0x0c6c, + 0x0c72, 0x0c77, 0x0c7c, 0x0c83, 0x0c85, 0x0c8c, 0x0c8c, 0x0c90, // Entry 240 - 27F - 0x0c8a, 0x0c8f, 0x0c96, 0x0c9b, 0x0c9b, 0x0ca1, 0x0ca8, 0x0cb2, - 0x0cb2, 0x0cb8, 0x0cbe, 0x0cc2, 0x0cd5, 0x0cd9, 0x0cf0, 0x0d03, - 0x0d16, 0x0d34, 0x0d4b, 0x0d5e, 0x0d74, 0x0d88, 0x0da4, 0x0db8, - 0x0dca, 0x0dca, 0x0dde, 0x0df6, 0x0e05, 0x0e0c, 0x0e23, 0x0e3c, - 0x0e42, 0x0e4d, 0x0e5f, 0x0e72, 0x0e81, + 0x0c93, 0x0c98, 0x0c9f, 0x0ca4, 0x0ca4, 0x0caa, 0x0cb1, 0x0cbb, + 0x0cbb, 0x0cc1, 0x0cc7, 0x0ccb, 0x0cde, 0x0ce2, 0x0cf9, 0x0d0c, + 0x0d1f, 0x0d3d, 0x0d54, 0x0d67, 0x0d7d, 0x0d91, 0x0dad, 0x0dc1, + 0x0dd3, 0x0dd3, 0x0de7, 0x0dff, 0x0e0e, 0x0e15, 0x0e2c, 0x0e45, + 0x0e4b, 0x0e56, 0x0e68, 0x0e7b, 0x0e8a, } // Size: 1250 bytes -const bgLangStr string = "" + // Size: 7891 bytes +const bgLangStr string = "" + // Size: 7905 bytes "афарабхазкиавестскиафрикаансаканамхарскиарагонскиарабскиасамскиаварскиай" + "мараазербайджанскибашкирскибеларускибългарскибисламабамбарабенгалскитиб" + "етскибретонскибосненскикаталонскичеченскичаморокорсиканскикриичешкицърк" + @@ -16105,11 +16107,12 @@ const bgLangStr string = "" + // Size: 7891 bytes "кисранан тонгосерерсахосукумасусушумерскикоморскикласически сирийскисир" + "ийскитемнетесотеренотетумтигретивтокелайскиклингонскитлингиттамашекниан" + "са тонгаток писинтарокоцимшианскитумбукатувалуанскитасавактувинскицентр" + - "алноатласки тамазигтудмуртскиугаритскиумбундуроотваивотиквунджовалзерск" + - "и немскиваламоварайуашовалпирикалмиксогаяояпезеянгбенйембакантонскизапо" + - "текблис символизенагастандартен марокански тамазигтзунибез лингвистично" + - " съдържаниезазасъвременен стандартен арабскианглийски (САЩ)долносаксонск" + - "ифламандскимолдовскисърбохърватскиконгоански суахиликитайски (опростен)" + "алноатласки тамазигтудмуртскиугаритскиумбундунеопределенваивотиквунджов" + + "алзерски немскиваламоварайуашовалпирикалмиксогаяояпезеянгбенйембакантон" + + "скизапотекблис символизенагастандартен марокански тамазигтзунибез лингв" + + "истично съдържаниезазасъвременен стандартен арабскианглийски (САЩ)долно" + + "саксонскифламандскимолдовскисърбохърватскиконгоански суахиликитайски (о" + + "простен)" var bgLangIdx = []uint16{ // 612 elements // Entry 0 - 3F @@ -16190,18 +16193,18 @@ var bgLangIdx = []uint16{ // 612 elements 0x1b0b, 0x1b0b, 0x1b0b, 0x1b15, 0x1b1d, 0x1b29, 0x1b33, 0x1b3d, 0x1b43, 0x1b57, 0x1b57, 0x1b6b, 0x1b79, 0x1b79, 0x1b87, 0x1b9e, 0x1baf, 0x1baf, 0x1bbb, 0x1bbb, 0x1bcf, 0x1bcf, 0x1bdd, 0x1bf3, - 0x1c01, 0x1c11, 0x1c42, 0x1c54, 0x1c66, 0x1c74, 0x1c7c, 0x1c82, - 0x1c82, 0x1c82, 0x1c82, 0x1c82, 0x1c8c, 0x1c8c, 0x1c98, 0x1cb7, - 0x1cc3, 0x1ccd, 0x1cd5, 0x1ce3, 0x1ce3, 0x1cef, 0x1cef, 0x1cf7, + 0x1c01, 0x1c11, 0x1c42, 0x1c54, 0x1c66, 0x1c74, 0x1c8a, 0x1c90, + 0x1c90, 0x1c90, 0x1c90, 0x1c90, 0x1c9a, 0x1c9a, 0x1ca6, 0x1cc5, + 0x1cd1, 0x1cdb, 0x1ce3, 0x1cf1, 0x1cf1, 0x1cfd, 0x1cfd, 0x1d05, // Entry 240 - 27F - 0x1cfb, 0x1d05, 0x1d11, 0x1d1b, 0x1d1b, 0x1d2d, 0x1d3b, 0x1d52, - 0x1d52, 0x1d5e, 0x1d98, 0x1da0, 0x1dd4, 0x1ddc, 0x1e14, 0x1e14, - 0x1e14, 0x1e14, 0x1e14, 0x1e14, 0x1e14, 0x1e2f, 0x1e2f, 0x1e2f, - 0x1e2f, 0x1e2f, 0x1e2f, 0x1e2f, 0x1e4b, 0x1e5f, 0x1e5f, 0x1e5f, - 0x1e71, 0x1e8d, 0x1eb0, 0x1ed3, + 0x1d09, 0x1d13, 0x1d1f, 0x1d29, 0x1d29, 0x1d3b, 0x1d49, 0x1d60, + 0x1d60, 0x1d6c, 0x1da6, 0x1dae, 0x1de2, 0x1dea, 0x1e22, 0x1e22, + 0x1e22, 0x1e22, 0x1e22, 0x1e22, 0x1e22, 0x1e3d, 0x1e3d, 0x1e3d, + 0x1e3d, 0x1e3d, 0x1e3d, 0x1e3d, 0x1e59, 0x1e6d, 0x1e6d, 0x1e6d, + 0x1e7f, 0x1e9b, 0x1ebe, 0x1ee1, } // Size: 1248 bytes -const bnLangStr string = "" + // Size: 12336 bytes +const bnLangStr string = "" + // Size: 12355 bytes "আফারআবখাজিয়ানআবেস্তীয়আফ্রিকানআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মারা" + "আজারবাইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটনবস" + "নীয়ানকাতালানচেচেনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশজা" + @@ -16254,15 +16257,15 @@ const bnLangStr string = "" + // Size: 12336 bytes "সোগডিয়ানস্রানান টোঙ্গোসেরেরসাহোসুকুমাসুসুসুমেরীয়কমোরিয়ানপ্রাচীন সির" + "িওসিরিয়াকটাইম্নেতেসোতেরেনোতেতুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামা" + "শেকনায়াসা টোঙ্গাটোক পিসিনতারোকোসিমশিয়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনি" + - "য়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্টউগারিটিকউম্বুন্দুমূলভাইভোটিকভুঞ্জো" + - "ওয়ালসেরওয়ালামোওয়ারেওয়াশোওয়ার্লপিরিWu চীনাকাল্মইকসোগাইয়াওইয়াপেসে" + - "য়াঙ্গবেনয়েম্বাক্যানটোনীজজাপোটেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন তামাজিগ" + - "াতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়ান জার্ম" + - "ানসুইস হাই জার্মানঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরেজিআমেরি" + - "কার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান স্প্" + - "যানিশকানাডীয় ফরাসিসুইস ফরাসিলো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগীজইউরোপ" + - "ের পর্তুগীজমলদাভিয়সার্বো-ক্রোয়েশিয়কঙ্গো সোয়াহিলিসরলীকৃত চীনাঐতিহ্য" + - "বাহি চীনা" + "য়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্টউগারিটিকউম্বুন্দুঅজানা ভাষাভাইভোটি" + + "কভুঞ্জোওয়ালসেরওয়ালামোওয়ারেওয়াশোওয়ার্লপিরিWu চীনাকাল্মইকসোগাইয়াওই" + + "য়াপেসেয়াঙ্গবেনয়েম্বাক্যানটোনীজজাপোটেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন " + + "তামাজিগাতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়া" + + "ন জার্মানসুইস হাই জার্মানঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরে" + + "জিআমেরিকার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিক" + + "ান স্প্যানিশকানাডীয় ফরাসিসুইস ফরাসিলো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগ" + + "ীজইউরোপের পর্তুগীজমলদাভিয়সার্বো-ক্রোয়েশিয়কঙ্গো সোয়াহিলিসরলীকৃত চীন" + + "াঐতিহ্যবাহি চীনা" var bnLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -16343,18 +16346,18 @@ var bnLangIdx = []uint16{ // 613 elements 0x2843, 0x2843, 0x2843, 0x2858, 0x2864, 0x2876, 0x2885, 0x289a, 0x28a3, 0x28b8, 0x28b8, 0x28d0, 0x28eb, 0x28eb, 0x2900, 0x2928, 0x2941, 0x2941, 0x2953, 0x2953, 0x296e, 0x296e, 0x2986, 0x2998, - 0x29b3, 0x29d1, 0x2a18, 0x2a2d, 0x2a45, 0x2a60, 0x2a69, 0x2a72, - 0x2a72, 0x2a72, 0x2a72, 0x2a72, 0x2a81, 0x2a81, 0x2a93, 0x2aab, - 0x2ac3, 0x2ad5, 0x2ae7, 0x2b08, 0x2b17, 0x2b2c, 0x2b2c, 0x2b38, + 0x29b3, 0x29d1, 0x2a18, 0x2a2d, 0x2a45, 0x2a60, 0x2a7c, 0x2a85, + 0x2a85, 0x2a85, 0x2a85, 0x2a85, 0x2a94, 0x2a94, 0x2aa6, 0x2abe, + 0x2ad6, 0x2ae8, 0x2afa, 0x2b1b, 0x2b2a, 0x2b3f, 0x2b3f, 0x2b4b, // Entry 240 - 27F - 0x2b47, 0x2b5f, 0x2b7a, 0x2b8f, 0x2b8f, 0x2bad, 0x2bc2, 0x2bde, - 0x2bde, 0x2bf0, 0x2c31, 0x2c3d, 0x2c87, 0x2c93, 0x2cc2, 0x2cc2, - 0x2cf9, 0x2d25, 0x2d59, 0x2d84, 0x2dac, 0x2dd7, 0x2e21, 0x2e55, - 0x2e92, 0x2e92, 0x2eba, 0x2ed6, 0x2ef5, 0x2f0a, 0x2f3e, 0x2f6c, - 0x2f84, 0x2fb8, 0x2fe3, 0x3005, 0x3030, + 0x2b5a, 0x2b72, 0x2b8d, 0x2ba2, 0x2ba2, 0x2bc0, 0x2bd5, 0x2bf1, + 0x2bf1, 0x2c03, 0x2c44, 0x2c50, 0x2c9a, 0x2ca6, 0x2cd5, 0x2cd5, + 0x2d0c, 0x2d38, 0x2d6c, 0x2d97, 0x2dbf, 0x2dea, 0x2e34, 0x2e68, + 0x2ea5, 0x2ea5, 0x2ecd, 0x2ee9, 0x2f08, 0x2f1d, 0x2f51, 0x2f7f, + 0x2f97, 0x2fcb, 0x2ff6, 0x3018, 0x3043, } // Size: 1250 bytes -const caLangStr string = "" + // Size: 4583 bytes +const caLangStr string = "" + // Size: 4595 bytes "àfarabkhazavèsticafrikaansàkanamhàricaragonèsàrabassamèsàvaraimaraazerba" + "idjanèsbaixkirbielorúsbúlgarbislamabambarabengalítibetàbretóbosniàcatalà" + "txetxèchamorrocorscreetxeceslau eclesiàstictxuvaixgal·lèsdanèsalemanydiv" + @@ -16407,15 +16410,15 @@ const caLangStr string = "" + // Size: 4583 bytes "i d’Inarisami skoltsoninkesogdiàsrananserersahosukumasusúsumericomoriàsi" + "ríac clàssicsiríacsilesiàtemnetesoterenatetuntigretivtokelauèstsakhurkli" + "ngoniàtlingittalixamazictongatok pisintarokotsimshiàtat meridionaltumbuk" + - "atuvaluàtasawaqtuviniàamazic del Marroc centraludmurtugaríticumbunduarre" + - "lvaivènetvepseflamenc occidentalvòticvunjowalserametowaraywashowarlpirix" + - "inès wucalmucmingreliàsogayaoyapeàyangbenyembacantonèszapotecasímbols Bl" + - "isszelandèszenagaamazic estàndard marroquízunisense contingut lingüístic" + - "zazaàrab estàndard modernalemany austríacalt alemany suísanglès australi" + - "àanglès canadencanglès britànicanglès americàespanyol hispanoamericàesp" + - "anyol europeuespanyol de Mèxicfrancès canadencfrancès suísbaix saxóflame" + - "ncportuguès del Brasilportuguès de Portugalmoldauserbocroatsuahili del C" + - "ongoxinès simplificatxinès tradicional" + "atuvaluàtasawaqtuviniàamazic del Marroc centraludmurtugaríticumbunduidio" + + "ma desconegutvaivènetvepseflamenc occidentalvòticvunjowalserametowaraywa" + + "showarlpirixinès wucalmucmingreliàsogayaoyapeàyangbenyembacantonèszapote" + + "casímbols Blisszelandèszenagaamazic estàndard marroquízunisense contingu" + + "t lingüísticzazaàrab estàndard modernalemany austríacalt alemany suísang" + + "lès australiàanglès canadencanglès britànicanglès americàespanyol hispan" + + "oamericàespanyol europeuespanyol de Mèxicfrancès canadencfrancès suísbai" + + "x saxóflamencportuguès del Brasilportuguès de Portugalmoldauserbocroatsu" + + "ahili del Congoxinès simplificatxinès tradicional" var caLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -16496,18 +16499,18 @@ var caLangIdx = []uint16{ // 613 elements 0x0edc, 0x0ee4, 0x0ee4, 0x0ee9, 0x0eed, 0x0ef3, 0x0ef8, 0x0efd, 0x0f00, 0x0f0a, 0x0f11, 0x0f1b, 0x0f22, 0x0f27, 0x0f2d, 0x0f32, 0x0f3b, 0x0f3b, 0x0f41, 0x0f41, 0x0f4a, 0x0f58, 0x0f5f, 0x0f67, - 0x0f6e, 0x0f76, 0x0f8f, 0x0f95, 0x0f9e, 0x0fa5, 0x0faa, 0x0fad, - 0x0fb3, 0x0fb8, 0x0fca, 0x0fca, 0x0fd0, 0x0fd0, 0x0fd5, 0x0fdb, - 0x0fe0, 0x0fe5, 0x0fea, 0x0ff2, 0x0ffb, 0x1001, 0x100b, 0x100f, + 0x0f6e, 0x0f76, 0x0f8f, 0x0f95, 0x0f9e, 0x0fa5, 0x0fb6, 0x0fb9, + 0x0fbf, 0x0fc4, 0x0fd6, 0x0fd6, 0x0fdc, 0x0fdc, 0x0fe1, 0x0fe7, + 0x0fec, 0x0ff1, 0x0ff6, 0x0ffe, 0x1007, 0x100d, 0x1017, 0x101b, // Entry 240 - 27F - 0x1012, 0x1018, 0x101f, 0x1024, 0x1024, 0x102d, 0x1035, 0x1043, - 0x104c, 0x1052, 0x106d, 0x1071, 0x108d, 0x1091, 0x10a8, 0x10a8, - 0x10b9, 0x10ca, 0x10dc, 0x10ec, 0x10fd, 0x110d, 0x1125, 0x1135, - 0x1147, 0x1147, 0x1158, 0x1166, 0x1170, 0x1177, 0x118c, 0x11a2, - 0x11a8, 0x11b2, 0x11c3, 0x11d5, 0x11e7, + 0x101e, 0x1024, 0x102b, 0x1030, 0x1030, 0x1039, 0x1041, 0x104f, + 0x1058, 0x105e, 0x1079, 0x107d, 0x1099, 0x109d, 0x10b4, 0x10b4, + 0x10c5, 0x10d6, 0x10e8, 0x10f8, 0x1109, 0x1119, 0x1131, 0x1141, + 0x1153, 0x1153, 0x1164, 0x1172, 0x117c, 0x1183, 0x1198, 0x11ae, + 0x11b4, 0x11be, 0x11cf, 0x11e1, 0x11f3, } // Size: 1250 bytes -const csLangStr string = "" + // Size: 7397 bytes +const csLangStr string = "" + // Size: 7406 bytes "afarštinaabcházštinaavestánštinaafrikánštinaakanštinaamharštinaaragonšti" + "naarabštinaásámštinaavarštinaajmarštinaázerbájdžánštinabaškirštinaběloru" + "štinabulharštinabislamštinabambarštinabengálštinatibetštinabretonštinab" + @@ -16591,16 +16594,16 @@ const csLangStr string = "" + // Size: 7397 bytes "tesoterenotetumštinatigrejštinativštinatokelauštinacachurštinaklingonšti" + "natlingittalyštinatamašektonžština (nyasa)tok pisinturojštinatarokotsako" + "nštinatsimšijské jazykytatštinatumbukštinatuvalštinatasawaqtuvinštinatam" + - "azight (střední Maroko)udmurtštinaugaritštinaumbundukořenvaibenátštinave" + - "pštinavlámština (západní)němčina (mohansko-franské dialekty)votštinavõru" + - "štinavunjoněmčina (walser)wolajtštinawarajštinawaštinawarlpiričínština " + - "(dialekty Wu)kalmyčtinamingrelštinasogštinajaoštinajapštinajangbenštinay" + - "embanheengatukantonštinazapotéčtinabliss systémzélandštinazenagatamazigh" + - "t (standardní marocký)zunijštinažádný jazykový obsahzazaarabština (moder" + - "ní standardní)němčina standardní (Švýcarsko)angličtina (Velká Británie)a" + - "ngličtina (USA)španělština (Evropa)dolnosaštinavlámštinaportugalština (E" + - "vropa)moldavštinasrbochorvatštinasvahilština (Kongo)čínština (zjednoduše" + - "ná)" + "azight (střední Maroko)udmurtštinaugaritštinaumbunduneznámý jazykvaibená" + + "tštinavepštinavlámština (západní)němčina (mohansko-franské dialekty)votš" + + "tinavõruštinavunjoněmčina (walser)wolajtštinawarajštinawaštinawarlpiričí" + + "nština (dialekty Wu)kalmyčtinamingrelštinasogštinajaoštinajapštinajangbe" + + "nštinayembanheengatukantonštinazapotéčtinabliss systémzélandštinazenagat" + + "amazight (standardní marocký)zunijštinažádný jazykový obsahzazaarabština" + + " (moderní standardní)němčina standardní (Švýcarsko)angličtina (Velká Bri" + + "tánie)angličtina (USA)španělština (Evropa)dolnosaštinavlámštinaportugalš" + + "tina (Evropa)moldavštinasrbochorvatštinasvahilština (Kongo)čínština (zje" + + "dnodušená)" var csLangIdx = []uint16{ // 612 elements // Entry 0 - 3F @@ -16681,18 +16684,18 @@ var csLangIdx = []uint16{ // 612 elements 0x1910, 0x191a, 0x1924, 0x1929, 0x192d, 0x1933, 0x193e, 0x194a, 0x1953, 0x1960, 0x196c, 0x1979, 0x1980, 0x198a, 0x1992, 0x19a5, 0x19ae, 0x19b9, 0x19bf, 0x19cb, 0x19de, 0x19e7, 0x19f3, 0x19fe, - 0x1a05, 0x1a10, 0x1a2c, 0x1a38, 0x1a44, 0x1a4b, 0x1a51, 0x1a54, - 0x1a60, 0x1a69, 0x1a80, 0x1aa6, 0x1aaf, 0x1aba, 0x1abf, 0x1ad1, - 0x1add, 0x1ae8, 0x1af0, 0x1af8, 0x1b11, 0x1b1c, 0x1b29, 0x1b32, + 0x1a05, 0x1a10, 0x1a2c, 0x1a38, 0x1a44, 0x1a4b, 0x1a5a, 0x1a5d, + 0x1a69, 0x1a72, 0x1a89, 0x1aaf, 0x1ab8, 0x1ac3, 0x1ac8, 0x1ada, + 0x1ae6, 0x1af1, 0x1af9, 0x1b01, 0x1b1a, 0x1b25, 0x1b32, 0x1b3b, // Entry 240 - 27F - 0x1b3b, 0x1b44, 0x1b51, 0x1b56, 0x1b5f, 0x1b6b, 0x1b78, 0x1b85, - 0x1b92, 0x1b98, 0x1bb8, 0x1bc3, 0x1bdb, 0x1bdf, 0x1c00, 0x1c00, - 0x1c00, 0x1c23, 0x1c23, 0x1c23, 0x1c41, 0x1c52, 0x1c52, 0x1c69, - 0x1c69, 0x1c69, 0x1c69, 0x1c69, 0x1c76, 0x1c81, 0x1c81, 0x1c98, - 0x1ca4, 0x1cb5, 0x1cc9, 0x1ce5, + 0x1b44, 0x1b4d, 0x1b5a, 0x1b5f, 0x1b68, 0x1b74, 0x1b81, 0x1b8e, + 0x1b9b, 0x1ba1, 0x1bc1, 0x1bcc, 0x1be4, 0x1be8, 0x1c09, 0x1c09, + 0x1c09, 0x1c2c, 0x1c2c, 0x1c2c, 0x1c4a, 0x1c5b, 0x1c5b, 0x1c72, + 0x1c72, 0x1c72, 0x1c72, 0x1c72, 0x1c7f, 0x1c8a, 0x1c8a, 0x1ca1, + 0x1cad, 0x1cbe, 0x1cd2, 0x1cee, } // Size: 1248 bytes -const daLangStr string = "" + // Size: 4141 bytes +const daLangStr string = "" + // Size: 4150 bytes "afarabkhasiskavestanafrikaansakanamhariskaragonesiskarabiskassamesiskava" + "riskaymaraaserbajdsjanskbashkirhviderussiskbulgarskbislamabambarabengali" + "tibetanskbretonskbosniskcatalansktjetjenskchamorrokorsikanskcreetjekkisk" + @@ -16743,14 +16746,14 @@ const daLangStr string = "" + // Size: 4141 bytes "oserersahosukumasususumeriskshimaoreklassisk syrisksyrisktemnetesotereno" + "tetumtigretivitokelauklingontlingittamasheknyasa tongansktok pisintaroko" + "tsimshisktumbukatuvalutasawaqtuviniancentralmarokkansk tamazightudmurtug" + - "aristiskumbundurodvaivotiskvunjowalsertyskwalamowaraywashowalbiriwu-kine" + - "siskkalmyksogayaoyapeseyangbenyembakantonesiskzapotecblissymbolerzenagat" + - "amazightzuniintet sprogligt indholdzazamoderne standardarabiskøstrigsk t" + - "yskschweizerhøjtyskaustralsk engelskcanadisk engelskbritisk engelskameri" + - "kansk engelsklatinamerikansk spanskeuropæisk spanskmexicansk spanskcanad" + - "isk franskschweizisk franskflamskbrasiliansk portugisiskeuropæisk portug" + - "isiskmoldoviskserbokroatiskcongolesisk swahiliforenklet kinesisktraditio" + - "nelt kinesisk" + "aristiskumbunduukendt sprogvaivotiskvunjowalsertyskwalamowaraywashowalbi" + + "riwu-kinesiskkalmyksogayaoyapeseyangbenyembakantonesiskzapotecblissymbol" + + "erzenagatamazightzuniintet sprogligt indholdzazamoderne standardarabiskø" + + "strigsk tyskschweizerhøjtyskaustralsk engelskcanadisk engelskbritisk eng" + + "elskamerikansk engelsklatinamerikansk spanskeuropæisk spanskmexicansk sp" + + "anskcanadisk franskschweizisk franskflamskbrasiliansk portugisiskeuropæi" + + "sk portugisiskmoldoviskserbokroatiskcongolesisk swahiliforenklet kinesis" + + "ktraditionelt kinesisk" var daLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -16831,18 +16834,18 @@ var daLangIdx = []uint16{ // 613 elements 0x0d85, 0x0d85, 0x0d85, 0x0d8a, 0x0d8e, 0x0d94, 0x0d99, 0x0d9e, 0x0da2, 0x0da9, 0x0da9, 0x0db0, 0x0db7, 0x0db7, 0x0dbf, 0x0dcd, 0x0dd6, 0x0dd6, 0x0ddc, 0x0ddc, 0x0de5, 0x0de5, 0x0dec, 0x0df2, - 0x0df9, 0x0e01, 0x0e1c, 0x0e22, 0x0e2c, 0x0e33, 0x0e36, 0x0e39, - 0x0e39, 0x0e39, 0x0e39, 0x0e39, 0x0e3f, 0x0e3f, 0x0e44, 0x0e4e, - 0x0e54, 0x0e59, 0x0e5e, 0x0e65, 0x0e70, 0x0e76, 0x0e76, 0x0e7a, + 0x0df9, 0x0e01, 0x0e1c, 0x0e22, 0x0e2c, 0x0e33, 0x0e3f, 0x0e42, + 0x0e42, 0x0e42, 0x0e42, 0x0e42, 0x0e48, 0x0e48, 0x0e4d, 0x0e57, + 0x0e5d, 0x0e62, 0x0e67, 0x0e6e, 0x0e79, 0x0e7f, 0x0e7f, 0x0e83, // Entry 240 - 27F - 0x0e7d, 0x0e83, 0x0e8a, 0x0e8f, 0x0e8f, 0x0e9a, 0x0ea1, 0x0ead, - 0x0ead, 0x0eb3, 0x0ebc, 0x0ec0, 0x0ed7, 0x0edb, 0x0ef2, 0x0ef2, - 0x0f00, 0x0f11, 0x0f22, 0x0f32, 0x0f41, 0x0f53, 0x0f69, 0x0f7a, - 0x0f8a, 0x0f8a, 0x0f99, 0x0faa, 0x0faa, 0x0fb0, 0x0fc7, 0x0fdd, - 0x0fe6, 0x0ff3, 0x1006, 0x1018, 0x102d, + 0x0e86, 0x0e8c, 0x0e93, 0x0e98, 0x0e98, 0x0ea3, 0x0eaa, 0x0eb6, + 0x0eb6, 0x0ebc, 0x0ec5, 0x0ec9, 0x0ee0, 0x0ee4, 0x0efb, 0x0efb, + 0x0f09, 0x0f1a, 0x0f2b, 0x0f3b, 0x0f4a, 0x0f5c, 0x0f72, 0x0f83, + 0x0f93, 0x0f93, 0x0fa2, 0x0fb3, 0x0fb3, 0x0fb9, 0x0fd0, 0x0fe6, + 0x0fef, 0x0ffc, 0x100f, 0x1021, 0x1036, } // Size: 1250 bytes -const deLangStr string = "" + // Size: 5600 bytes +const deLangStr string = "" + // Size: 5614 bytes "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" + "ischAwarischAymaraAserbaidschanischBaschkirischWeißrussischBulgarischBis" + "lamaBambaraBengalischTibetischBretonischBosnischKatalanischTschetschenis" + @@ -16910,16 +16913,17 @@ const deLangStr string = "" + // Size: 5600 bytes "(Wasserpolnisch)TuluTemneTesoTerenoTetumTigreTivTokelauanischTsachurisch" + "KlingonischTlingitTalischTamaseqNyasa TongaNeumelanesischTuroyoTarokoTsa" + "konischTsimshianTatischTumbukaTuvaluischTasawaqTuwinischZentralatlas-Tam" + - "azightUdmurtischUgaritischUmbunduRootVaiVenetischWepsischWestflämischMai" + - "nfränkischWotischVõroVunjoWalliserdeutschWalamoWarayWashoWarlpiriWuKalmü" + - "ckischMingrelischSogaYaoYapesischYangbenYembaNheengatuKantonesischZapote" + - "kischBliss-SymboleSeeländischZenagaTamazightZuniKeine SprachinhalteZazaM" + - "odernes HocharabischÖsterreichisches DeutschSchweizer HochdeutschAustral" + - "isches EnglischKanadisches EnglischBritisches EnglischAmerikanisches Eng" + - "lischLateinamerikanisches SpanischEuropäisches SpanischMexikanisches Spa" + - "nischKanadisches FranzösischSchweizer FranzösischNiedersächsischFlämisch" + - "Brasilianisches PortugiesischEuropäisches PortugiesischMoldauischSerbo-K" + - "roatischKongo-SwahiliChinesisch (vereinfacht)Chinesisch (traditionell)" + "azightUdmurtischUgaritischUmbunduUnbekannte SpracheVaiVenetischWepsischW" + + "estflämischMainfränkischWotischVõroVunjoWalliserdeutschWalamoWarayWashoW" + + "arlpiriWuKalmückischMingrelischSogaYaoYapesischYangbenYembaNheengatuKant" + + "onesischZapotekischBliss-SymboleSeeländischZenagaTamazightZuniKeine Spra" + + "chinhalteZazaModernes HocharabischÖsterreichisches DeutschSchweizer Hoch" + + "deutschAustralisches EnglischKanadisches EnglischBritisches EnglischAmer" + + "ikanisches EnglischLateinamerikanisches SpanischEuropäisches SpanischMex" + + "ikanisches SpanischKanadisches FranzösischSchweizer FranzösischNiedersäc" + + "hsischFlämischBrasilianisches PortugiesischEuropäisches PortugiesischMol" + + "dauischSerbo-KroatischKongo-SwahiliChinesisch (vereinfacht)Chinesisch (t" + + "raditionell)" var deLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -17000,18 +17004,18 @@ var deLangIdx = []uint16{ // 613 elements 0x1223, 0x123e, 0x1242, 0x1247, 0x124b, 0x1251, 0x1256, 0x125b, 0x125e, 0x126b, 0x1276, 0x1281, 0x1288, 0x128f, 0x1296, 0x12a1, 0x12af, 0x12b5, 0x12bb, 0x12c5, 0x12ce, 0x12d5, 0x12dc, 0x12e6, - 0x12ed, 0x12f6, 0x130c, 0x1316, 0x1320, 0x1327, 0x132b, 0x132e, - 0x1337, 0x133f, 0x134c, 0x135a, 0x1361, 0x1366, 0x136b, 0x137a, - 0x1380, 0x1385, 0x138a, 0x1392, 0x1394, 0x13a0, 0x13ab, 0x13af, + 0x12ed, 0x12f6, 0x130c, 0x1316, 0x1320, 0x1327, 0x1339, 0x133c, + 0x1345, 0x134d, 0x135a, 0x1368, 0x136f, 0x1374, 0x1379, 0x1388, + 0x138e, 0x1393, 0x1398, 0x13a0, 0x13a2, 0x13ae, 0x13b9, 0x13bd, // Entry 240 - 27F - 0x13b2, 0x13bb, 0x13c2, 0x13c7, 0x13d0, 0x13dc, 0x13e7, 0x13f4, - 0x1400, 0x1406, 0x140f, 0x1413, 0x1426, 0x142a, 0x143f, 0x143f, - 0x1458, 0x146d, 0x1483, 0x1497, 0x14aa, 0x14c1, 0x14de, 0x14f4, - 0x150a, 0x150a, 0x1522, 0x1538, 0x1548, 0x1551, 0x156e, 0x1589, - 0x1593, 0x15a2, 0x15af, 0x15c7, 0x15e0, + 0x13c0, 0x13c9, 0x13d0, 0x13d5, 0x13de, 0x13ea, 0x13f5, 0x1402, + 0x140e, 0x1414, 0x141d, 0x1421, 0x1434, 0x1438, 0x144d, 0x144d, + 0x1466, 0x147b, 0x1491, 0x14a5, 0x14b8, 0x14cf, 0x14ec, 0x1502, + 0x1518, 0x1518, 0x1530, 0x1546, 0x1556, 0x155f, 0x157c, 0x1597, + 0x15a1, 0x15b0, 0x15bd, 0x15d5, 0x15ee, } // Size: 1250 bytes -const elLangStr string = "" + // Size: 9051 bytes +const elLangStr string = "" + // Size: 9070 bytes "ΑφάρΑμπχαζικάΑβεστάνΑφρικάανςΑκάνΑμαρικάΑραγκονικάΑραβικάΑσαμεζικάΆβαρικ" + "ΑϊμάραΑζερμπαϊτζανικάΜπασκίρΛευκορωσικάΒουλγαρικάΜπισλάμαΜπαμπάραΜπενγκ" + "άλιΘιβετιανάΒρετονικάΒοσνιακάΚαταλανικάΤσετσενικάΚαμόρροΚορσικανικάΚριΤ" + @@ -17068,15 +17072,15 @@ const elLangStr string = "" + // Size: 9051 bytes "έρΣάχοΣουκούμαΣούσουΣουμερικάΚομόρριαΚλασικά ΣυριακάΣυριακάΤίμνεΤέσοΤερ" + "ένοΤέτουμΤίγκρεΤιβΤοκελάουΚλίνγκονΤλίνγκιτΤαμασέκΝιάσα ΤόνγκαΤοκ ΠισίνΤ" + "αρόκοΤσίμσιανΤουμπούκαΤουβαλούΤασαβάκΤουβινικάΤαμαζίτ Κεντρικού ΜαρόκοΟ" + - "υντμούρτΟυγκαριτικάΟυμπούντουΡουτΒάιΒότικΒούντζοΒάλσερΓουάλαμοΓουάρειΓο" + - "υασόΓουαρλπίριwuuΚαλμίκΣόγκαΓιάοΓιαπίζΓιανγκμπένΓιέμπαΚαντονέζικαΖάποτε" + - "κΣύμβολα BlissΖενάγκαΤυπικά Ταμαζίγκτ ΜαρόκουΖούνιΧωρίς γλωσσολογικό πε" + - "ριεχόμενοΖάζαΣύγχρονα Τυπικά ΑραβικάΓερμανικά ΑυστρίαςΆνω Γερμανικά Ελβ" + - "ετίαςΑγγλικά ΑυστραλίαςΑγγλικά ΚαναδάΑγγλικά Ηνωμένου ΒασιλείουΑγγλικά " + - "ΑμερικήςΙσπανικά Λατινικής ΑμερικήςΙσπανικά ΕυρώπηςΙσπανικά ΜεξικούΓαλλ" + - "ικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω Γερμανικά ΟλλανδίαςΦλαμανδικάΠορτογαλικά" + - " ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικάΣερβοκροατικάΚονγκό ΣουαχίλιΑπλοπο" + - "ιημένα ΚινεζικάΠαραδοσιακά Κινεζικά" + "υντμούρτΟυγκαριτικάΟυμπούντουΆγνωστη γλώσσαΒάιΒότικΒούντζοΒάλσερΓουάλαμ" + + "οΓουάρειΓουασόΓουαρλπίριwuuΚαλμίκΣόγκαΓιάοΓιαπίζΓιανγκμπένΓιέμπαΚαντονέ" + + "ζικαΖάποτεκΣύμβολα BlissΖενάγκαΤυπικά Ταμαζίγκτ ΜαρόκουΖούνιΧωρίς γλωσσ" + + "ολογικό περιεχόμενοΖάζαΣύγχρονα Τυπικά ΑραβικάΓερμανικά ΑυστρίαςΆνω Γερ" + + "μανικά ΕλβετίαςΑγγλικά ΑυστραλίαςΑγγλικά ΚαναδάΑγγλικά Ηνωμένου Βασιλεί" + + "ουΑγγλικά ΑμερικήςΙσπανικά Λατινικής ΑμερικήςΙσπανικά ΕυρώπηςΙσπανικά Μ" + + "εξικούΓαλλικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω Γερμανικά ΟλλανδίαςΦλαμανδικάΠ" + + "ορτογαλικά ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικάΣερβοκροατικάΚονγκό Σου" + + "αχίλιΑπλοποιημένα ΚινεζικάΠαραδοσιακά Κινεζικά" var elLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -17157,18 +17161,18 @@ var elLangIdx = []uint16{ // 613 elements 0x1d97, 0x1d97, 0x1d97, 0x1da1, 0x1da9, 0x1db5, 0x1dc1, 0x1dcd, 0x1dd3, 0x1de3, 0x1de3, 0x1df3, 0x1e03, 0x1e03, 0x1e11, 0x1e28, 0x1e39, 0x1e39, 0x1e45, 0x1e45, 0x1e55, 0x1e55, 0x1e67, 0x1e77, - 0x1e85, 0x1e97, 0x1ec5, 0x1ed7, 0x1eed, 0x1f01, 0x1f09, 0x1f0f, - 0x1f0f, 0x1f0f, 0x1f0f, 0x1f0f, 0x1f19, 0x1f19, 0x1f27, 0x1f33, - 0x1f43, 0x1f51, 0x1f5d, 0x1f71, 0x1f74, 0x1f80, 0x1f80, 0x1f8a, + 0x1e85, 0x1e97, 0x1ec5, 0x1ed7, 0x1eed, 0x1f01, 0x1f1c, 0x1f22, + 0x1f22, 0x1f22, 0x1f22, 0x1f22, 0x1f2c, 0x1f2c, 0x1f3a, 0x1f46, + 0x1f56, 0x1f64, 0x1f70, 0x1f84, 0x1f87, 0x1f93, 0x1f93, 0x1f9d, // Entry 240 - 27F - 0x1f92, 0x1f9e, 0x1fb2, 0x1fbe, 0x1fbe, 0x1fd4, 0x1fe2, 0x1ff6, - 0x1ff6, 0x2004, 0x2032, 0x203c, 0x2076, 0x207e, 0x20aa, 0x20aa, - 0x20cd, 0x20f7, 0x211a, 0x2135, 0x2167, 0x2186, 0x21ba, 0x21d9, - 0x21f8, 0x21f8, 0x2213, 0x2232, 0x2260, 0x2274, 0x229d, 0x22c2, - 0x22d4, 0x22ee, 0x230b, 0x2334, 0x235b, + 0x1fa5, 0x1fb1, 0x1fc5, 0x1fd1, 0x1fd1, 0x1fe7, 0x1ff5, 0x2009, + 0x2009, 0x2017, 0x2045, 0x204f, 0x2089, 0x2091, 0x20bd, 0x20bd, + 0x20e0, 0x210a, 0x212d, 0x2148, 0x217a, 0x2199, 0x21cd, 0x21ec, + 0x220b, 0x220b, 0x2226, 0x2245, 0x2273, 0x2287, 0x22b0, 0x22d5, + 0x22e7, 0x2301, 0x231e, 0x2347, 0x236e, } // Size: 1250 bytes -const enLangStr string = "" + // Size: 4944 bytes +const enLangStr string = "" + // Size: 4956 bytes "AfarAbkhazianAvestanAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAym" + "araAzerbaijaniBashkirBelarusianBulgarianBislamaBambaraBanglaTibetanBreto" + "nBosnianCatalanChechenChamorroCorsicanCreeCzechChurch SlavicChuvashWelsh" + @@ -17229,15 +17233,15 @@ const enLangStr string = "" + // Size: 4944 bytes "erianComorianClassical SyriacSyriacSilesianTuluTimneTesoTerenoTetumTigre" + "TivTokelauTsakhurKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoT" + "arokoTsakonianTsimshianMuslim TatTumbukaTuvaluTasawaqTuvinianCentral Atl" + - "as TamazightUdmurtUgariticUmbunduRootVaiVenetianVepsWest FlemishMain-Fra" + - "nconianVoticVõroVunjoWalserWolayttaWarayWashoWarlpiriWu ChineseKalmykMin" + - "grelianSogaYaoYapeseYangbenYembaNheengatuCantoneseZapotecBlissymbolsZeel" + - "andicZenagaStandard Moroccan TamazightZuniNo linguistic contentZazaModer" + - "n Standard ArabicAustrian GermanSwiss High GermanAustralian EnglishCanad" + - "ian EnglishBritish EnglishAmerican EnglishLatin American SpanishEuropean" + - " SpanishMexican SpanishDariCanadian FrenchSwiss FrenchLow SaxonFlemishBr" + - "azilian PortugueseEuropean PortugueseMoldavianSerbo-CroatianCongo Swahil" + - "iSimplified ChineseTraditional Chinese" + "as TamazightUdmurtUgariticUmbunduUnknown languageVaiVenetianVepsWest Fle" + + "mishMain-FranconianVoticVõroVunjoWalserWolayttaWarayWashoWarlpiriWu Chin" + + "eseKalmykMingrelianSogaYaoYapeseYangbenYembaNheengatuCantoneseZapotecBli" + + "ssymbolsZeelandicZenagaStandard Moroccan TamazightZuniNo linguistic cont" + + "entZazaModern Standard ArabicAustrian GermanSwiss High GermanAustralian " + + "EnglishCanadian EnglishBritish EnglishAmerican EnglishLatin American Spa" + + "nishEuropean SpanishMexican SpanishDariCanadian FrenchSwiss FrenchLow Sa" + + "xonFlemishBrazilian PortugueseEuropean PortugueseMoldavianSerbo-Croatian" + + "Congo SwahiliSimplified ChineseTraditional Chinese" var enLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -17318,18 +17322,18 @@ var enLangIdx = []uint16{ // 613 elements 0x1034, 0x103c, 0x1040, 0x1045, 0x1049, 0x104f, 0x1054, 0x1059, 0x105c, 0x1063, 0x106a, 0x1071, 0x1078, 0x107e, 0x1086, 0x1091, 0x109a, 0x10a0, 0x10a6, 0x10af, 0x10b8, 0x10c2, 0x10c9, 0x10cf, - 0x10d6, 0x10de, 0x10f5, 0x10fb, 0x1103, 0x110a, 0x110e, 0x1111, - 0x1119, 0x111d, 0x1129, 0x1138, 0x113d, 0x1142, 0x1147, 0x114d, - 0x1155, 0x115a, 0x115f, 0x1167, 0x1171, 0x1177, 0x1181, 0x1185, + 0x10d6, 0x10de, 0x10f5, 0x10fb, 0x1103, 0x110a, 0x111a, 0x111d, + 0x1125, 0x1129, 0x1135, 0x1144, 0x1149, 0x114e, 0x1153, 0x1159, + 0x1161, 0x1166, 0x116b, 0x1173, 0x117d, 0x1183, 0x118d, 0x1191, // Entry 240 - 27F - 0x1188, 0x118e, 0x1195, 0x119a, 0x11a3, 0x11ac, 0x11b3, 0x11be, - 0x11c7, 0x11cd, 0x11e8, 0x11ec, 0x1201, 0x1205, 0x121b, 0x121b, - 0x122a, 0x123b, 0x124d, 0x125d, 0x126c, 0x127c, 0x1292, 0x12a2, - 0x12b1, 0x12b5, 0x12c4, 0x12d0, 0x12d9, 0x12e0, 0x12f4, 0x1307, - 0x1310, 0x131e, 0x132b, 0x133d, 0x1350, + 0x1194, 0x119a, 0x11a1, 0x11a6, 0x11af, 0x11b8, 0x11bf, 0x11ca, + 0x11d3, 0x11d9, 0x11f4, 0x11f8, 0x120d, 0x1211, 0x1227, 0x1227, + 0x1236, 0x1247, 0x1259, 0x1269, 0x1278, 0x1288, 0x129e, 0x12ae, + 0x12bd, 0x12c1, 0x12d0, 0x12dc, 0x12e5, 0x12ec, 0x1300, 0x1313, + 0x131c, 0x132a, 0x1337, 0x1349, 0x135c, } // Size: 1250 bytes -const esLangStr string = "" + // Size: 4319 bytes +const esLangStr string = "" + // Size: 4332 bytes "afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazer" + "baiyanobaskirbielorrusobúlgarobislamabambarabengalítibetanobretónbosnioc" + "atalánchechenochamorrocorsocreechecoeslavo eclesiásticochuvasiogalésdané" + @@ -17380,14 +17384,15 @@ const esLangStr string = "" + // Size: 4319 bytes "inkésogdianosranan tongoserersahosukumasususumeriocomorensesiríaco clási" + "cosiriacotemnetesoterenotetúntigrétivtokelauanoklingontlingittamashekton" + "ga del Nyasatok pisintarokotsimshianotumbukatuvaluanotasawaqtuvinianotam" + - "azight del Atlas Centraludmurtugaríticoumbunduraízvaivóticovunjowalserwo" + - "laytawaraywashowarlpirichino wukalmyksogayaoyapésyangbenyembacantonészap" + - "otecosímbolos Blisszenagatamazight estándar marroquízuñisin contenido li" + - "ngüísticozazakiárabe estándar modernoalemán austríacoalto alemán suizoin" + - "glés australianoinglés canadienseinglés británicoinglés estadounidensees" + - "pañol latinoamericanoespañol de Españaespañol de Méxicofrancés canadiens" + - "efrancés suizobajo sajónflamencoportugués de Brasilportugués de Portugal" + - "moldavoserbocroatasuajili del Congochino simplificadochino tradicional" + "azight del Atlas Centraludmurtugaríticoumbundulengua desconocidavaivótic" + + "ovunjowalserwolaytawaraywashowarlpirichino wukalmyksogayaoyapésyangbenye" + + "mbacantonészapotecosímbolos Blisszenagatamazight estándar marroquízuñisi" + + "n contenido lingüísticozazakiárabe estándar modernoalemán austríacoalto " + + "alemán suizoinglés australianoinglés canadienseinglés británicoinglés es" + + "tadounidenseespañol latinoamericanoespañol de Españaespañol de Méxicofra" + + "ncés canadiensefrancés suizobajo sajónflamencoportugués de Brasilportugu" + + "és de Portugalmoldavoserbocroatasuajili del Congochino simplificadochin" + + "o tradicional" var esLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -17468,15 +17473,15 @@ var esLangIdx = []uint16{ // 613 elements 0x0df9, 0x0df9, 0x0df9, 0x0dfe, 0x0e02, 0x0e08, 0x0e0e, 0x0e14, 0x0e17, 0x0e21, 0x0e21, 0x0e28, 0x0e2f, 0x0e2f, 0x0e37, 0x0e46, 0x0e4f, 0x0e4f, 0x0e55, 0x0e55, 0x0e5f, 0x0e5f, 0x0e66, 0x0e6f, - 0x0e76, 0x0e7f, 0x0e9a, 0x0ea0, 0x0eaa, 0x0eb1, 0x0eb6, 0x0eb9, - 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, 0x0ec0, 0x0ec0, 0x0ec5, 0x0ecb, - 0x0ed2, 0x0ed7, 0x0edc, 0x0ee4, 0x0eec, 0x0ef2, 0x0ef2, 0x0ef6, + 0x0e76, 0x0e7f, 0x0e9a, 0x0ea0, 0x0eaa, 0x0eb1, 0x0ec3, 0x0ec6, + 0x0ec6, 0x0ec6, 0x0ec6, 0x0ec6, 0x0ecd, 0x0ecd, 0x0ed2, 0x0ed8, + 0x0edf, 0x0ee4, 0x0ee9, 0x0ef1, 0x0ef9, 0x0eff, 0x0eff, 0x0f03, // Entry 240 - 27F - 0x0ef9, 0x0eff, 0x0f06, 0x0f0b, 0x0f0b, 0x0f14, 0x0f1c, 0x0f2b, - 0x0f2b, 0x0f31, 0x0f4e, 0x0f53, 0x0f6e, 0x0f74, 0x0f8c, 0x0f8c, - 0x0f9e, 0x0fb0, 0x0fc3, 0x0fd5, 0x0fe7, 0x0ffd, 0x1015, 0x1028, - 0x103b, 0x103b, 0x104e, 0x105c, 0x1067, 0x106f, 0x1083, 0x1099, - 0x10a0, 0x10ab, 0x10bc, 0x10ce, 0x10df, + 0x0f06, 0x0f0c, 0x0f13, 0x0f18, 0x0f18, 0x0f21, 0x0f29, 0x0f38, + 0x0f38, 0x0f3e, 0x0f5b, 0x0f60, 0x0f7b, 0x0f81, 0x0f99, 0x0f99, + 0x0fab, 0x0fbd, 0x0fd0, 0x0fe2, 0x0ff4, 0x100a, 0x1022, 0x1035, + 0x1048, 0x1048, 0x105b, 0x1069, 0x1074, 0x107c, 0x1090, 0x10a6, + 0x10ad, 0x10b8, 0x10c9, 0x10db, 0x10ec, } // Size: 1250 bytes const es419LangStr string = "" + // Size: 218 bytes @@ -17574,7 +17579,7 @@ var es419LangIdx = []uint16{ // 611 elements 0x00cb, 0x00cb, 0x00da, } // Size: 1246 bytes -const etLangStr string = "" + // Size: 4574 bytes +const etLangStr string = "" + // Size: 4586 bytes "afariabhaasiavestaafrikaaniakaniamharaaragoniaraabiaassamiavaariaimaraas" + "erbaidžaanibaškiirivalgevenebulgaariabislamabambarabengalitiibetibretoon" + "ibosniakatalaanitšetšeenitšamorrokorsikakriitšehhikirikuslaavitšuvašikõm" + @@ -17629,14 +17634,14 @@ const etLangStr string = "" + // Size: 4574 bytes "terfriisisukumasususumerikomoorivanasüüriasüüriasileesiatulutemnetesoter" + "enotetumitigreetivitokelautsahhiklingonitlingititalõšitamašekitšitongauu" + "smelaneesiaturojotarokotsakooniatšimšilõunataaditumbukatuvalutaswaqitõva" + - "tamasiktiudmurdiugaritiumbundurootvaivenetivepsalääneflaamiMaini frangiv" + - "adjavõruvundžowalserivolaitavaraivašovarlpiriuukalmõkimegrelisogajaojapi" + - "yangbenijembanjengatukantonisapoteegiBlissi sümbolidzeelandizenagatamasi" + - "kti (Maroko)sunjimittekeelelinezazaaraabia (tänapäevane)Austria saksaŠve" + - "itsi ülemsaksaAustraalia ingliseKanada ingliseBriti ingliseAmeerika ingl" + - "iseLadina-Ameerika hispaaniaEuroopa hispaaniaMehhiko hispaaniaKanada pra" + - "ntsuseŠveitsi prantsuseHollandi alamsaksaflaamiBrasiilia portugaliEuroop" + - "a portugalimoldovaserbia-horvaadiKongo suahiili" + "tamasiktiudmurdiugaritiumbundumääramata keelvaivenetivepsalääneflaamiMai" + + "ni frangivadjavõruvundžowalserivolaitavaraivašovarlpiriuukalmõkimegrelis" + + "ogajaojapiyangbenijembanjengatukantonisapoteegiBlissi sümbolidzeelandize" + + "nagatamasikti (Maroko)sunjimittekeelelinezazaaraabia (tänapäevane)Austri" + + "a saksaŠveitsi ülemsaksaAustraalia ingliseKanada ingliseBriti ingliseAme" + + "erika ingliseLadina-Ameerika hispaaniaEuroopa hispaaniaMehhiko hispaania" + + "Kanada prantsuseŠveitsi prantsuseHollandi alamsaksaflaamiBrasiilia portu" + + "galiEuroopa portugalimoldovaserbia-horvaadiKongo suahiili" var etLangIdx = []uint16{ // 611 elements // Entry 0 - 3F @@ -17717,18 +17722,18 @@ var etLangIdx = []uint16{ // 611 elements 0x0efb, 0x0f03, 0x0f07, 0x0f0c, 0x0f10, 0x0f16, 0x0f1c, 0x0f22, 0x0f26, 0x0f2d, 0x0f33, 0x0f3b, 0x0f43, 0x0f4b, 0x0f54, 0x0f5d, 0x0f6a, 0x0f70, 0x0f76, 0x0f7f, 0x0f87, 0x0f92, 0x0f99, 0x0f9f, - 0x0fa6, 0x0fab, 0x0fb4, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fcd, 0x0fd0, - 0x0fd6, 0x0fdb, 0x0fe8, 0x0ff4, 0x0ff9, 0x0ffe, 0x1005, 0x100c, - 0x1013, 0x1018, 0x101d, 0x1025, 0x1027, 0x102f, 0x1036, 0x103a, + 0x0fa6, 0x0fab, 0x0fb4, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fd9, 0x0fdc, + 0x0fe2, 0x0fe7, 0x0ff4, 0x1000, 0x1005, 0x100a, 0x1011, 0x1018, + 0x101f, 0x1024, 0x1029, 0x1031, 0x1033, 0x103b, 0x1042, 0x1046, // Entry 240 - 27F - 0x103d, 0x1041, 0x1049, 0x104e, 0x1056, 0x105d, 0x1066, 0x1076, - 0x107e, 0x1084, 0x1096, 0x109b, 0x10a9, 0x10ad, 0x10c4, 0x10c4, - 0x10d1, 0x10e4, 0x10f6, 0x1104, 0x1111, 0x1121, 0x113a, 0x114b, - 0x115c, 0x115c, 0x116c, 0x117e, 0x1190, 0x1196, 0x11a9, 0x11ba, - 0x11c1, 0x11d0, 0x11de, + 0x1049, 0x104d, 0x1055, 0x105a, 0x1062, 0x1069, 0x1072, 0x1082, + 0x108a, 0x1090, 0x10a2, 0x10a7, 0x10b5, 0x10b9, 0x10d0, 0x10d0, + 0x10dd, 0x10f0, 0x1102, 0x1110, 0x111d, 0x112d, 0x1146, 0x1157, + 0x1168, 0x1168, 0x1178, 0x118a, 0x119c, 0x11a2, 0x11b5, 0x11c6, + 0x11cd, 0x11dc, 0x11ea, } // Size: 1246 bytes -const faLangStr string = "" + // Size: 7988 bytes +const faLangStr string = "" + // Size: 8001 bytes "آفاریآبخازیاوستاییآفریکانسآکانامهریآراگونیعربیآسامیآواریآیماراییترکی آذر" + "بایجانیباشغیریبلاروسیبلغاریبیسلامابامباراییبنگالیتبتیبرتونبوسنیاییکاتال" + "انچچنیچاموروییکورسیکریاییچکیاسلاوی کلیساییچوواشیولزیدانمارکیآلمانیدیوهی" + @@ -17782,13 +17787,13 @@ const faLangStr string = "" + // Size: 7988 bytes "ریکوموریسریانی کلاسیکسریانیسیلزیاییتمنه\u200cایتسوییترنوتتومیتیگره" + "\u200cایتیویکلینگونتلین\u200cگیتیتاماشقیتونگایی نیاساتوک\u200cپیسینیتارو" + "کوییتسیم\u200cشیانیتومبوکاییتووالوییتسواکیتوواییآمازیغی اطلس مرکزیاودمو" + - "رتیاوگاریتیامبوندوییریشهویاییوتیونجووالسروالاموواراییواشوییوارلپیریقلمو" + - "قیسوگایییائویییاپییانگبنییمباییکانتونیزاپوتکیزناگاآمازیغی معیار مراکشزو" + - "نیاییبدون محتوای زبانیزازاییعربی رسمیترکی آذری جنوبیآلمانی اتریشآلمانی " + - "معیار سوئیسانگلیسی استرالیاانگلیسی کاناداانگلیسی بریتانیاانگلیسی امریکا" + - "اسپانیایی امریکای لاتیناسپانیایی اروپااسپانیایی مکزیکدریفرانسوی کاناداف" + - "رانسوی سوئیسساکسونی سفلیفلمنگیپرتغالی برزیلپرتغالی اروپامولداویاییصرب و" + - " کرواتیسواحیلی کنگوچینی ساده\u200cشدهچینی سنتی" + "رتیاوگاریتیامبوندوییزبان نامشخصویاییوتیونجووالسروالاموواراییواشوییوارلپ" + + "یریقلموقیسوگایییائویییاپییانگبنییمباییکانتونیزاپوتکیزناگاآمازیغی معیار " + + "مراکشزونیاییبدون محتوای زبانیزازاییعربی رسمیترکی آذری جنوبیآلمانی اتریش" + + "آلمانی معیار سوئیسانگلیسی استرالیاانگلیسی کاناداانگلیسی بریتانیاانگلیسی" + + " امریکااسپانیایی امریکای لاتیناسپانیایی اروپااسپانیایی مکزیکدریفرانسوی ک" + + "انادافرانسوی سوئیسساکسونی سفلیفلمنگیپرتغالی برزیلپرتغالی اروپامولداویای" + + "یصرب و کرواتیسواحیلی کنگوچینی ساده\u200cشدهچینی سنتی" var faLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -17869,18 +17874,18 @@ var faLangIdx = []uint16{ // 613 elements 0x1a6d, 0x1a7d, 0x1a7d, 0x1a8c, 0x1a96, 0x1a9e, 0x1aa8, 0x1ab9, 0x1ac1, 0x1ac1, 0x1ac1, 0x1acf, 0x1ae2, 0x1ae2, 0x1af0, 0x1b09, 0x1b1e, 0x1b1e, 0x1b2e, 0x1b2e, 0x1b43, 0x1b43, 0x1b55, 0x1b65, - 0x1b71, 0x1b7d, 0x1b9f, 0x1baf, 0x1bbf, 0x1bd1, 0x1bd9, 0x1be3, - 0x1be3, 0x1be3, 0x1be3, 0x1be3, 0x1be9, 0x1be9, 0x1bf1, 0x1bfb, - 0x1c07, 0x1c13, 0x1c1f, 0x1c2f, 0x1c2f, 0x1c3b, 0x1c3b, 0x1c47, + 0x1b71, 0x1b7d, 0x1b9f, 0x1baf, 0x1bbf, 0x1bd1, 0x1be6, 0x1bf0, + 0x1bf0, 0x1bf0, 0x1bf0, 0x1bf0, 0x1bf6, 0x1bf6, 0x1bfe, 0x1c08, + 0x1c14, 0x1c20, 0x1c2c, 0x1c3c, 0x1c3c, 0x1c48, 0x1c48, 0x1c54, // Entry 240 - 27F - 0x1c53, 0x1c5b, 0x1c69, 0x1c75, 0x1c75, 0x1c83, 0x1c91, 0x1c91, - 0x1c91, 0x1c9b, 0x1cbf, 0x1ccd, 0x1ced, 0x1cf9, 0x1d0a, 0x1d26, - 0x1d3d, 0x1d5f, 0x1d7e, 0x1d99, 0x1db8, 0x1dd3, 0x1dff, 0x1e1c, - 0x1e39, 0x1e3f, 0x1e5a, 0x1e73, 0x1e8a, 0x1e96, 0x1eaf, 0x1ec8, - 0x1edc, 0x1ef2, 0x1f09, 0x1f23, 0x1f34, + 0x1c60, 0x1c68, 0x1c76, 0x1c82, 0x1c82, 0x1c90, 0x1c9e, 0x1c9e, + 0x1c9e, 0x1ca8, 0x1ccc, 0x1cda, 0x1cfa, 0x1d06, 0x1d17, 0x1d33, + 0x1d4a, 0x1d6c, 0x1d8b, 0x1da6, 0x1dc5, 0x1de0, 0x1e0c, 0x1e29, + 0x1e46, 0x1e4c, 0x1e67, 0x1e80, 0x1e97, 0x1ea3, 0x1ebc, 0x1ed5, + 0x1ee9, 0x1eff, 0x1f16, 0x1f30, 0x1f41, } // Size: 1250 bytes -const fiLangStr string = "" + // Size: 4736 bytes +const fiLangStr string = "" + // Size: 4747 bytes "afarabhaasiavestaafrikaansakanamharaaragoniaarabiaassamiavaariaimaraazer" + "ibaškiirivalkovenäjäbulgariabislamabambarabengalitiibetbretonibosniakata" + "laanitšetšeenitšamorrokorsikacreetšekkikirkkoslaavitšuvassikymritanskasa" + @@ -17937,15 +17942,15 @@ const fiLangStr string = "" + // Size: 4736 bytes "soninkesogdisrananserersahosaterlandinfriisisukumasususumerikomorimuinai" + "ssyyriasyyriasleesiatulutemnetesoterenotetumtigretivtokelautsahuriklingo" + "ntlingittališitamašekmalawintongatok-pisinturojotarokotsakoniatsimšitati" + - "tumbukatuvalutasawaqtuvakeskiatlaksentamazightudmurttiugaritmbundujuuriv" + - "aivenetsiavepsälänsiflaamimaininfrankkivatjavõrovunjowalserwolaittawaray" + - "washowarlpiriwu-kiinakalmukkimingrelisogajaojapiyangbenyembañeengatúkant" + - "oninkiinazapoteekkiblisskieliseelantizenagavakioitu tamazightzuniei kiel" + - "ellistä sisältöäzazayleisarabiaitävallansaksasveitsinyläsaksaaustraliane" + - "nglantikanadanenglantibritannianenglantiamerikanenglantiamerikanespanjae" + - "uroopanespanjameksikonespanjakanadanranskasveitsinranskaalankomaidenalas" + - "aksaflaamibrasilianportugalieuroopanportugalimoldovaserbokroaattikingwan" + - "ayksinkertaistettu kiinaperinteinen kiina" + "tumbukatuvalutasawaqtuvakeskiatlaksentamazightudmurttiugaritmbundutuntem" + + "aton kielivaivenetsiavepsälänsiflaamimaininfrankkivatjavõrovunjowalserwo" + + "laittawaraywashowarlpiriwu-kiinakalmukkimingrelisogajaojapiyangbenyembañ" + + "eengatúkantoninkiinazapoteekkiblisskieliseelantizenagavakioitu tamazight" + + "zuniei kielellistä sisältöäzazayleisarabiaitävallansaksasveitsinyläsaksa" + + "australianenglantikanadanenglantibritannianenglantiamerikanenglantiameri" + + "kanespanjaeuroopanespanjameksikonespanjakanadanranskasveitsinranskaalank" + + "omaidenalasaksaflaamibrasilianportugalieuroopanportugalimoldovaserbokroa" + + "attikingwanayksinkertaistettu kiinaperinteinen kiina" var fiLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -18026,18 +18031,18 @@ var fiLangIdx = []uint16{ // 613 elements 0x0f86, 0x0f8d, 0x0f91, 0x0f96, 0x0f9a, 0x0fa0, 0x0fa5, 0x0faa, 0x0fad, 0x0fb4, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fd0, 0x0fd8, 0x0fe4, 0x0fed, 0x0ff3, 0x0ff9, 0x1001, 0x1008, 0x100c, 0x1013, 0x1019, - 0x1020, 0x1024, 0x103a, 0x1042, 0x1048, 0x104e, 0x1053, 0x1056, - 0x105e, 0x1064, 0x1070, 0x107d, 0x1082, 0x1087, 0x108c, 0x1092, - 0x109a, 0x109f, 0x10a4, 0x10ac, 0x10b4, 0x10bc, 0x10c4, 0x10c8, + 0x1020, 0x1024, 0x103a, 0x1042, 0x1048, 0x104e, 0x105e, 0x1061, + 0x1069, 0x106f, 0x107b, 0x1088, 0x108d, 0x1092, 0x1097, 0x109d, + 0x10a5, 0x10aa, 0x10af, 0x10b7, 0x10bf, 0x10c7, 0x10cf, 0x10d3, // Entry 240 - 27F - 0x10cb, 0x10cf, 0x10d6, 0x10db, 0x10e5, 0x10f2, 0x10fc, 0x1106, - 0x110e, 0x1114, 0x1126, 0x112a, 0x1145, 0x1149, 0x1154, 0x1154, - 0x1163, 0x1174, 0x1186, 0x1195, 0x11a7, 0x11b7, 0x11c6, 0x11d5, - 0x11e4, 0x11e4, 0x11f1, 0x11ff, 0x1213, 0x1219, 0x122b, 0x123c, - 0x1243, 0x1250, 0x1258, 0x126f, 0x1280, + 0x10d6, 0x10da, 0x10e1, 0x10e6, 0x10f0, 0x10fd, 0x1107, 0x1111, + 0x1119, 0x111f, 0x1131, 0x1135, 0x1150, 0x1154, 0x115f, 0x115f, + 0x116e, 0x117f, 0x1191, 0x11a0, 0x11b2, 0x11c2, 0x11d1, 0x11e0, + 0x11ef, 0x11ef, 0x11fc, 0x120a, 0x121e, 0x1224, 0x1236, 0x1247, + 0x124e, 0x125b, 0x1263, 0x127a, 0x128b, } // Size: 1250 bytes -const filLangStr string = "" + // Size: 3132 bytes +const filLangStr string = "" + // Size: 3147 bytes "AfarAbkhazianAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAymaraAzer" + "baijaniBashkirBelarusianBulgarianBislamaBambaraBanglaTibetanBretonBosnia" + "nCatalanChechenChamorroCorsicanCzechChurch SlavicChuvashWelshDanishGerma" + @@ -18074,14 +18079,14 @@ const filLangStr string = "" + // Size: 3132 bytes "nguSicilianScotsKatimugang KurdishSenaKoyraboro SenniTachelhitShanKatimu" + "gang SamiLule SamiInari SamiSkolt SamiSoninkeSranan TongoSahoSukumaComor" + "ianSyriacTimneTesoTetumTigreKlingonTok PisinTarokoTumbukaTuvaluTasawaqTu" + - "vinianCentral Atlas TamazightUdmurtUmbunduRootVaiVunjoWalserWolayttaWara" + - "yWarlpiriKalmykSogaYangbenYembaCantoneseStandard Moroccan TamazightZuniW" + - "alang nilalaman na ukol sa wikaZazaModernong Karaniwang ArabicAustrian G" + - "ermanSwiss High GermanIngles ng AustralyaIngles sa CanadaIngles na Briti" + - "shIngles na AmericanLatin American na EspanyolEuropean SpanishMexican na" + - " EspanyolFrench sa CanadaSwiss na FrenchLow SaxonFlemishPortuges ng Bras" + - "ilEuropean PortugueseMoldavianSerbo-CroatianCongo SwahiliPinasimpleng Ch" + - "ineseTradisyonal na Chinese" + "vinianCentral Atlas TamazightUdmurtUmbunduHindi Kilalang WikaVaiVunjoWal" + + "serWolayttaWarayWarlpiriKalmykSogaYangbenYembaCantoneseStandard Moroccan" + + " TamazightZuniWalang nilalaman na ukol sa wikaZazaModernong Karaniwang A" + + "rabicAustrian GermanSwiss High GermanIngles ng AustralyaIngles sa Canada" + + "Ingles na BritishIngles na AmericanLatin American na EspanyolEuropean Sp" + + "anishMexican na EspanyolFrench sa CanadaSwiss na FrenchLow SaxonFlemishP" + + "ortuges ng BrasilEuropean PortugueseMoldavianSerbo-CroatianCongo Swahili" + + "Pinasimpleng ChineseTradisyonal na Chinese" var filLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -18162,18 +18167,18 @@ var filLangIdx = []uint16{ // 613 elements 0x09ea, 0x09ea, 0x09ea, 0x09ef, 0x09f3, 0x09f3, 0x09f8, 0x09fd, 0x09fd, 0x09fd, 0x09fd, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a0d, 0x0a0d, 0x0a13, 0x0a13, 0x0a13, 0x0a13, 0x0a1a, 0x0a20, - 0x0a27, 0x0a2f, 0x0a46, 0x0a4c, 0x0a4c, 0x0a53, 0x0a57, 0x0a5a, - 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5a, 0x0a5f, 0x0a65, - 0x0a6d, 0x0a72, 0x0a72, 0x0a7a, 0x0a7a, 0x0a80, 0x0a80, 0x0a84, + 0x0a27, 0x0a2f, 0x0a46, 0x0a4c, 0x0a4c, 0x0a53, 0x0a66, 0x0a69, + 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a6e, 0x0a74, + 0x0a7c, 0x0a81, 0x0a81, 0x0a89, 0x0a89, 0x0a8f, 0x0a8f, 0x0a93, // Entry 240 - 27F - 0x0a84, 0x0a84, 0x0a8b, 0x0a90, 0x0a90, 0x0a99, 0x0a99, 0x0a99, - 0x0a99, 0x0a99, 0x0ab4, 0x0ab8, 0x0ad8, 0x0adc, 0x0af7, 0x0af7, - 0x0b06, 0x0b17, 0x0b2a, 0x0b3a, 0x0b4b, 0x0b5d, 0x0b77, 0x0b87, - 0x0b9a, 0x0b9a, 0x0baa, 0x0bb9, 0x0bc2, 0x0bc9, 0x0bdb, 0x0bee, - 0x0bf7, 0x0c05, 0x0c12, 0x0c26, 0x0c3c, + 0x0a93, 0x0a93, 0x0a9a, 0x0a9f, 0x0a9f, 0x0aa8, 0x0aa8, 0x0aa8, + 0x0aa8, 0x0aa8, 0x0ac3, 0x0ac7, 0x0ae7, 0x0aeb, 0x0b06, 0x0b06, + 0x0b15, 0x0b26, 0x0b39, 0x0b49, 0x0b5a, 0x0b6c, 0x0b86, 0x0b96, + 0x0ba9, 0x0ba9, 0x0bb9, 0x0bc8, 0x0bd1, 0x0bd8, 0x0bea, 0x0bfd, + 0x0c06, 0x0c14, 0x0c21, 0x0c35, 0x0c4b, } // Size: 1250 bytes -const frLangStr string = "" + // Size: 5136 bytes +const frLangStr string = "" + // Size: 5151 bytes "afarabkhazeavestiqueafrikaansakanamhariquearagonaisarabeassamaisavarayma" + "raazéribachkirbiélorussebulgarebichelamarbambarabengalitibétainbretonbos" + "niaquecatalantchétchènechamorrocorsecreetchèqueslavon d’églisetchouvache" + @@ -18235,15 +18240,15 @@ const frLangStr string = "" + // Size: 5136 bytes "syriaque classiquesyriaquesilésientouloutemnetesoterenotetumtigrétivtoke" + "lautsakhourklingontlingittalyshtamacheqtonga nyasatok pisintouroyotaroko" + "tsakonientsimshiantati caucasientoumboukatuvalutasawaqtouvatamazight du " + - "Maroc centraloudmourteougaritiqueoumboundouracinevaïvénitienvepseflamand" + - " occidentalfranconien du Mainvotevõrovunjowalserwalamowaraywashowarlpiri" + - "wukalmoukmingréliensogayaoyapoisyangbenyembanheengatoucantonaiszapotèque" + - "symboles Blisszélandaiszenagaamazighe standard marocainzuñisans contenu " + - "linguistiquezazakiarabe standard moderneallemand autrichienallemand suis" + - "seanglais australienanglais canadienanglais britanniqueanglais américain" + - "français canadienfrançais suissebas-saxon néerlandaisflamandportugais br" + - "ésilienportugais européenmoldaveserbo-croateswahili du Congochinois sim" + - "plifiéchinois traditionnel" + "Maroc centraloudmourteougaritiqueoumboundoulangue indéterminéevaïvénitie" + + "nvepseflamand occidentalfranconien du Mainvotevõrovunjowalserwalamowaray" + + "washowarlpiriwukalmoukmingréliensogayaoyapoisyangbenyembanheengatoucanto" + + "naiszapotèquesymboles Blisszélandaiszenagaamazighe standard marocainzuñi" + + "sans contenu linguistiquezazakiarabe standard moderneallemand autrichien" + + "allemand suisseanglais australienanglais canadienanglais britanniqueangl" + + "ais américainfrançais canadienfrançais suissebas-saxon néerlandaisflaman" + + "dportugais brésilienportugais européenmoldaveserbo-croateswahili du Cong" + + "ochinois simplifiéchinois traditionnel" var frLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -18324,15 +18329,15 @@ var frLangIdx = []uint16{ // 613 elements 0x10e9, 0x10f2, 0x10f8, 0x10fd, 0x1101, 0x1107, 0x110c, 0x1112, 0x1115, 0x111c, 0x1124, 0x112b, 0x1132, 0x1138, 0x1140, 0x114b, 0x1154, 0x115b, 0x1161, 0x116a, 0x1173, 0x1181, 0x118a, 0x1190, - 0x1197, 0x119c, 0x11b6, 0x11bf, 0x11ca, 0x11d4, 0x11da, 0x11de, - 0x11e7, 0x11ec, 0x11fe, 0x1210, 0x1214, 0x1219, 0x121e, 0x1224, - 0x122a, 0x122f, 0x1234, 0x123c, 0x123e, 0x1245, 0x1250, 0x1254, + 0x1197, 0x119c, 0x11b6, 0x11bf, 0x11ca, 0x11d4, 0x11e9, 0x11ed, + 0x11f6, 0x11fb, 0x120d, 0x121f, 0x1223, 0x1228, 0x122d, 0x1233, + 0x1239, 0x123e, 0x1243, 0x124b, 0x124d, 0x1254, 0x125f, 0x1263, // Entry 240 - 27F - 0x1257, 0x125d, 0x1264, 0x1269, 0x1273, 0x127c, 0x1286, 0x1294, - 0x129e, 0x12a4, 0x12be, 0x12c3, 0x12dc, 0x12e2, 0x12f8, 0x12f8, - 0x130b, 0x131a, 0x132c, 0x133c, 0x134f, 0x1361, 0x1361, 0x1361, - 0x1361, 0x1361, 0x1373, 0x1383, 0x1399, 0x13a0, 0x13b4, 0x13c7, - 0x13ce, 0x13da, 0x13ea, 0x13fc, 0x1410, + 0x1266, 0x126c, 0x1273, 0x1278, 0x1282, 0x128b, 0x1295, 0x12a3, + 0x12ad, 0x12b3, 0x12cd, 0x12d2, 0x12eb, 0x12f1, 0x1307, 0x1307, + 0x131a, 0x1329, 0x133b, 0x134b, 0x135e, 0x1370, 0x1370, 0x1370, + 0x1370, 0x1370, 0x1382, 0x1392, 0x13a8, 0x13af, 0x13c3, 0x13d6, + 0x13dd, 0x13e9, 0x13f9, 0x140b, 0x141f, } // Size: 1250 bytes const frCALangStr string = "" + // Size: 529 bytes @@ -18435,7 +18440,7 @@ var frCALangIdx = []uint16{ // 611 elements 0x0200, 0x0200, 0x0211, } // Size: 1246 bytes -const guLangStr string = "" + // Size: 11776 bytes +const guLangStr string = "" + // Size: 11798 bytes "અફારઅબખાજિયનઅવેસ્તનઆફ્રિકન્સઅકાનએમ્હારિકઅર્ગોનીઝઅરબીઆસામીઅવેરિકઆયમારાઅઝર" + "બૈજાનીબશ્કીરબેલારુશિયનબલ્ગેરિયનબિસ્લામાબામ્બારાબંગાળીતિબેટીયનબ્રેટોનબો" + "સ્નિયનકતલાનચેચનકેમોરોકોર્સિકનક્રીચેકચર્ચ સ્લાવિકચૂવાશવેલ્શડેનિશજર્મનદિ" + @@ -18485,15 +18490,15 @@ const guLangStr string = "" + // Size: 11776 bytes "્કેસોગ્ડિએનસ્રાનન ટોન્ગોસેરેરસાહોસુકુમાસુસુસુમેરિયનકોમોરિયનપરંપરાગત સિ" + "રિએકસિરિએકતુલુટિમ્નેતેસોતેરેનોતેતુમટાઇગ્રેતિવતોકેલાઉક્લિન્ગોનક્લીન્ગકિ" + "ટતામાશેખન્યાસા ટોન્ગાટોક પિસિનટારોકોસિમ્શિયનમુસ્લિમ તાટતુમ્બુકાતુવાલુત" + - "સાવાકટુવીનિયનસેન્ટ્રલ ઍટ્લસ તામાઝિગ્ટઉદમુર્તયુગેરિટિકઉમ્બુન્ડૂરૂટવાઇવો" + - "ટિકવુન્જોવેલ્સેરવોલાયટ્ટાવારેયવાશોવાર્લ્પીરીwuuકાલ્મિકસોગાયાઓયાપીસયાન્" + - "ગબેનયેમ્બાકેંટોનીઝઝેપોટેકબ્લિસિમ્બોલ્સઝેનાગાપ્રમાણભૂત મોરોક્કન તામાઝિગ" + - "્ટઝૂનીકોઇ ભાષાશાસ્ત્રીય સામગ્રી નથીઝાઝામોડર્ન સ્ટાન્ડર્ડ અરબીઓસ્ટ્રિઅન" + - " જર્મનસ્વિસ હાય જર્મનઓસ્ટ્રેલિયન અંગ્રેજીકેનેડિયન અંગ્રેજીબ્રિટિશ અંગ્રે" + - "જીઅમેરિકન અંગ્રેજીલેટિન અમેરિકન સ્પેનિશયુરોપિયન સ્પેનિશમેક્સિકન સ્પેનિ" + - "શકેનેડિયન ફ્રેંચસ્વિસ ફ્રેંચલો સેક્સોનફ્લેમિશબ્રાઝિલીયન પોર્ટુગીઝયુરોપ" + - "િયન પોર્ટુગીઝમોલડાવિયનસર્બો-ક્રોએશિયનકોંગો સ્વાહિલીસરળીકૃત ચાઇનીઝપારંપ" + - "રિક ચાઇનીઝ" + "સાવાકટુવીનિયનસેન્ટ્રલ ઍટ્લસ તામાઝિગ્ટઉદમુર્તયુગેરિટિકઉમ્બુન્ડૂઅજ્ઞાત ભ" + + "ાષાવાઇવોટિકવુન્જોવેલ્સેરવોલાયટ્ટાવારેયવાશોવાર્લ્પીરીwuuકાલ્મિકસોગાયાઓય" + + "ાપીસયાન્ગબેનયેમ્બાકેંટોનીઝઝેપોટેકબ્લિસિમ્બોલ્સઝેનાગાપ્રમાણભૂત મોરોક્કન" + + " તામાઝિગ્ટઝૂનીકોઇ ભાષાશાસ્ત્રીય સામગ્રી નથીઝાઝામોડર્ન સ્ટાન્ડર્ડ અરબીઓસ્" + + "ટ્રિઅન જર્મનસ્વિસ હાય જર્મનઓસ્ટ્રેલિયન અંગ્રેજીકેનેડિયન અંગ્રેજીબ્રિટિ" + + "શ અંગ્રેજીઅમેરિકન અંગ્રેજીલેટિન અમેરિકન સ્પેનિશયુરોપિયન સ્પેનિશમેક્સિક" + + "ન સ્પેનિશકેનેડિયન ફ્રેંચસ્વિસ ફ્રેંચલો સેક્સોનફ્લેમિશબ્રાઝિલીયન પોર્ટુ" + + "ગીઝયુરોપિયન પોર્ટુગીઝમોલડાવિયનસર્બો-ક્રોએશિયનકોંગો સ્વાહિલીસરળીકૃત ચાઇ" + + "નીઝપારંપરિક ચાઇનીઝ" var guLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -18574,18 +18579,18 @@ var guLangIdx = []uint16{ // 613 elements 0x260c, 0x260c, 0x2618, 0x262a, 0x2636, 0x2648, 0x2657, 0x266c, 0x2675, 0x268a, 0x268a, 0x26a5, 0x26c3, 0x26c3, 0x26d8, 0x26fd, 0x2716, 0x2716, 0x2728, 0x2728, 0x2740, 0x275f, 0x2777, 0x2789, - 0x279b, 0x27b3, 0x27f7, 0x280c, 0x2827, 0x2842, 0x284b, 0x2854, - 0x2854, 0x2854, 0x2854, 0x2854, 0x2863, 0x2863, 0x2875, 0x288a, - 0x28a5, 0x28b4, 0x28c0, 0x28de, 0x28e1, 0x28f6, 0x28f6, 0x2902, + 0x279b, 0x27b3, 0x27f7, 0x280c, 0x2827, 0x2842, 0x2861, 0x286a, + 0x286a, 0x286a, 0x286a, 0x286a, 0x2879, 0x2879, 0x288b, 0x28a0, + 0x28bb, 0x28ca, 0x28d6, 0x28f4, 0x28f7, 0x290c, 0x290c, 0x2918, // Entry 240 - 27F - 0x290b, 0x291a, 0x2932, 0x2944, 0x2944, 0x295c, 0x2971, 0x2998, - 0x2998, 0x29aa, 0x29fa, 0x2a06, 0x2a57, 0x2a63, 0x2aa1, 0x2aa1, - 0x2acc, 0x2af5, 0x2b2f, 0x2b60, 0x2b8e, 0x2bbc, 0x2bf7, 0x2c25, - 0x2c53, 0x2c53, 0x2c7e, 0x2ca0, 0x2cbc, 0x2cd1, 0x2d0b, 0x2d3f, - 0x2d5a, 0x2d85, 0x2dad, 0x2dd5, 0x2e00, + 0x2921, 0x2930, 0x2948, 0x295a, 0x295a, 0x2972, 0x2987, 0x29ae, + 0x29ae, 0x29c0, 0x2a10, 0x2a1c, 0x2a6d, 0x2a79, 0x2ab7, 0x2ab7, + 0x2ae2, 0x2b0b, 0x2b45, 0x2b76, 0x2ba4, 0x2bd2, 0x2c0d, 0x2c3b, + 0x2c69, 0x2c69, 0x2c94, 0x2cb6, 0x2cd2, 0x2ce7, 0x2d21, 0x2d55, + 0x2d70, 0x2d9b, 0x2dc3, 0x2deb, 0x2e16, } // Size: 1250 bytes -const heLangStr string = "" + // Size: 7096 bytes +const heLangStr string = "" + // Size: 7112 bytes "אפאריתאבחזיתאבסטןאפריקאנסאקאןאמהריתאראגוניתערביתאסאמיתאבאריתאיימאריתאזרי" + "תבשקיריתבלארוסיתבולגריתביסלמהבמבארהבנגליתטיבטיתברטוניתבוסניתקטלאניתצ׳צ׳" + "ניתצ׳מורוקורסיקניתקריצ׳כיתסלאבית כנסייתית עתיקהצ׳ובאשוולשיתדניתגרמניתדי" + @@ -18632,11 +18637,11 @@ const heLangStr string = "" + // Size: 7096 bytes "אדיתסידאמוסאמי דרומיתלולה סאמיאינארי סאמיסקולט סאמיסונינקהסוגדיאןסרנאן " + "טונגוסררסאהוסוקומהסוסושומריתסירית קלאסיתסוריתטימנהטסוטרנוטטוםטיגריתטיבט" + "וקלאוקלינגוןטלינגיטטמאשקניאסה טונגהטוק פיסיןטרוקוטסימשיאןטומבוקהטובאלוט" + - "סוואקטוביניתטמזייט של מרכז מרוקואודמורטאוגריתיתאומבונדורוטוואיווטיקוונג" + - "׳ווואלסרווליאטהווראיוואשווורלפיריסינית ווקלמיקיתסוגהיאויאפזיתיאנגבןימבה" + - "קנטונזיתזאפוטקבליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן לשוניזאז" + - "אערבית ספרותיתגרמנית (שוויץ)אנגלית (בריטניה)צרפתית (שוויץ)סקסונית תחתית" + - "פלמיתמולדביתסרבו-קרואטיתסווהילי קונגוסינית פשוטהסינית מסורתית" + "סוואקטוביניתטמזייט של מרכז מרוקואודמורטאוגריתיתאומבונדושפה לא ידועהוואי" + + "ווטיקוונג׳ווואלסרווליאטהווראיוואשווורלפיריסינית ווקלמיקיתסוגהיאויאפזיתי" + + "אנגבןימבהקנטונזיתזאפוטקבליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן" + + " לשוניזאזאערבית ספרותיתגרמנית (שוויץ)אנגלית (בריטניה)צרפתית (שוויץ)סקסונ" + + "ית תחתיתפלמיתמולדביתסרבו-קרואטיתסווהילי קונגוסינית פשוטהסינית מסורתית" var heLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -18717,18 +18722,18 @@ var heLangIdx = []uint16{ // 613 elements 0x185d, 0x185d, 0x185d, 0x1867, 0x186d, 0x1875, 0x187d, 0x1889, 0x188f, 0x189b, 0x189b, 0x18a9, 0x18b7, 0x18b7, 0x18c1, 0x18d6, 0x18e7, 0x18e7, 0x18f1, 0x18f1, 0x1901, 0x1901, 0x190f, 0x191b, - 0x1927, 0x1935, 0x195a, 0x1968, 0x1978, 0x1988, 0x198e, 0x1996, - 0x1996, 0x1996, 0x1996, 0x1996, 0x19a0, 0x19a0, 0x19ac, 0x19b8, - 0x19c6, 0x19d0, 0x19da, 0x19ea, 0x19f9, 0x1a07, 0x1a07, 0x1a0f, + 0x1927, 0x1935, 0x195a, 0x1968, 0x1978, 0x1988, 0x199e, 0x19a6, + 0x19a6, 0x19a6, 0x19a6, 0x19a6, 0x19b0, 0x19b0, 0x19bc, 0x19c8, + 0x19d6, 0x19e0, 0x19ea, 0x19fa, 0x1a09, 0x1a17, 0x1a17, 0x1a1f, // Entry 240 - 27F - 0x1a15, 0x1a21, 0x1a2d, 0x1a35, 0x1a35, 0x1a45, 0x1a51, 0x1a65, - 0x1a65, 0x1a6f, 0x1a97, 0x1a9f, 0x1ab9, 0x1ac1, 0x1ada, 0x1ada, - 0x1ada, 0x1af3, 0x1af3, 0x1af3, 0x1b10, 0x1b10, 0x1b10, 0x1b10, - 0x1b10, 0x1b10, 0x1b10, 0x1b29, 0x1b42, 0x1b4c, 0x1b4c, 0x1b4c, - 0x1b5a, 0x1b71, 0x1b8a, 0x1b9f, 0x1bb8, + 0x1a25, 0x1a31, 0x1a3d, 0x1a45, 0x1a45, 0x1a55, 0x1a61, 0x1a75, + 0x1a75, 0x1a7f, 0x1aa7, 0x1aaf, 0x1ac9, 0x1ad1, 0x1aea, 0x1aea, + 0x1aea, 0x1b03, 0x1b03, 0x1b03, 0x1b20, 0x1b20, 0x1b20, 0x1b20, + 0x1b20, 0x1b20, 0x1b20, 0x1b39, 0x1b52, 0x1b5c, 0x1b5c, 0x1b5c, + 0x1b6a, 0x1b81, 0x1b9a, 0x1baf, 0x1bc8, } // Size: 1250 bytes -const hiLangStr string = "" + // Size: 11573 bytes +const hiLangStr string = "" + // Size: 11595 bytes "अफ़ारअब्ख़ाज़ियनअवस्ताईअफ़्रीकीअकनअम्हेरीअर्गोनीअरबीअसमियाअवेरिकआयमाराअज" + "़रबैजानीबशख़िरबेलारूसीबुल्गारियाईबिस्लामाबाम्बाराबंगालीतिब्बतीब्रेटनबो" + "स्नियाईकातालानचेचनकमोरोकोर्सीकनक्रीचेकचर्च साल्विकचूवाशवेल्शडेनिशजर्मन" + @@ -18777,14 +18782,14 @@ const hiLangStr string = "" + // Size: 11573 bytes "नारी सामीस्कोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसाहोसुकुमासुसु" + "सुमेरियनकोमोरियनक्लासिकल सिरिएकसिरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतो" + "केलाऊक्लिंगनत्लिंगिततामाशेकन्यासा टोन्गाटोक पिसिनतारोकोत्सिमीशियनतम्बू" + - "कातुवालुटासवाकतुवीनियनमध्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्बुन्डुरूटवाई" + - "वॉटिकवुंजोवाल्सरवलामोवारैवाशोवॉल्पेरीकाल्मिकसोगायाओयापीसयांगबेनयेंबाकै" + - "ंटोनीज़ज़ेपोटेकब्लिसिम्बॉल्सज़ेनान्गामानक मोरक्कन तामाज़ाइटज़ूनीकोई भा" + - "षा सामग्री नहींज़ाज़ाआधुनिक मानक अरबीऑस्ट्रियाई जर्मनस्विस उच्च जर्मनऑ" + - "स्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिटिश अंग्रेज़ीअमेरिकी अंग्रेज़" + - "ीलैटिन अमेरिकी स्पेनिशयूरोपीय स्पेनिशमैक्सिकन स्पेनिशकनाडाई फ़्रेंचस्व" + - "िस फ़्रेंचनिचली सैक्सनफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय पुर्तगालीमोलड" + - "ावियनसेर्बो-क्रोएशियाईकांगो स्वाहिलीसरलीकृत चीनीपारंपरिक चीनी" + "कातुवालुटासवाकतुवीनियनमध्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्बुन्डुअज्ञात" + + " भाषावाईवॉटिकवुंजोवाल्सरवलामोवारैवाशोवॉल्पेरीकाल्मिकसोगायाओयापीसयांगबेनय" + + "ेंबाकैंटोनीज़ज़ेपोटेकब्लिसिम्बॉल्सज़ेनान्गामानक मोरक्कन तामाज़ाइटज़ूनी" + + "कोई भाषा सामग्री नहींज़ाज़ाआधुनिक मानक अरबीऑस्ट्रियाई जर्मनस्विस उच्च " + + "जर्मनऑस्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिटिश अंग्रेज़ीअमेरिकी अं" + + "ग्रेज़ीलैटिन अमेरिकी स्पेनिशयूरोपीय स्पेनिशमैक्सिकन स्पेनिशकनाडाई फ़्र" + + "ेंचस्विस फ़्रेंचनिचली सैक्सनफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय पुर्तगा" + + "लीमोलडावियनसेर्बो-क्रोएशियाईकांगो स्वाहिलीसरलीकृत चीनीपारंपरिक चीनी" var hiLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -18865,18 +18870,18 @@ var hiLangIdx = []uint16{ // 613 elements 0x25c9, 0x25c9, 0x25c9, 0x25db, 0x25e7, 0x25f9, 0x2608, 0x261d, 0x2626, 0x263b, 0x263b, 0x2650, 0x2668, 0x2668, 0x267d, 0x26a2, 0x26bb, 0x26bb, 0x26cd, 0x26cd, 0x26eb, 0x26eb, 0x2700, 0x2712, - 0x2724, 0x273c, 0x276b, 0x2780, 0x279b, 0x27b6, 0x27bf, 0x27c8, - 0x27c8, 0x27c8, 0x27c8, 0x27c8, 0x27d7, 0x27d7, 0x27e6, 0x27f8, - 0x2807, 0x2813, 0x281f, 0x2837, 0x2837, 0x284c, 0x284c, 0x2858, + 0x2724, 0x273c, 0x276b, 0x2780, 0x279b, 0x27b6, 0x27d5, 0x27de, + 0x27de, 0x27de, 0x27de, 0x27de, 0x27ed, 0x27ed, 0x27fc, 0x280e, + 0x281d, 0x2829, 0x2835, 0x284d, 0x284d, 0x2862, 0x2862, 0x286e, // Entry 240 - 27F - 0x2861, 0x2870, 0x2885, 0x2894, 0x2894, 0x28af, 0x28c7, 0x28ee, - 0x28ee, 0x2909, 0x2947, 0x2956, 0x298f, 0x29a1, 0x29cd, 0x29cd, - 0x29fb, 0x2a27, 0x2a67, 0x2a95, 0x2ac6, 0x2af7, 0x2b32, 0x2b5d, - 0x2b8b, 0x2b8b, 0x2bb3, 0x2bd8, 0x2bfa, 0x2c12, 0x2c49, 0x2c7a, - 0x2c95, 0x2cc6, 0x2cee, 0x2d10, 0x2d35, + 0x2877, 0x2886, 0x289b, 0x28aa, 0x28aa, 0x28c5, 0x28dd, 0x2904, + 0x2904, 0x291f, 0x295d, 0x296c, 0x29a5, 0x29b7, 0x29e3, 0x29e3, + 0x2a11, 0x2a3d, 0x2a7d, 0x2aab, 0x2adc, 0x2b0d, 0x2b48, 0x2b73, + 0x2ba1, 0x2ba1, 0x2bc9, 0x2bee, 0x2c10, 0x2c28, 0x2c5f, 0x2c90, + 0x2cab, 0x2cdc, 0x2d04, 0x2d26, 0x2d4b, } // Size: 1250 bytes -const hrLangStr string = "" + // Size: 4630 bytes +const hrLangStr string = "" + // Size: 4635 bytes "afarskiabhaskiavestičkiafrikaansakanskiamharskiaragonskiarapskiasamskiav" + "arskiajmarskiazerbajdžanskibaškirskibjeloruskibugarskibislamabambarabang" + "latibetskibretonskibosanskikatalonskičečenskichamorrokorzičkicreečeškicr" + @@ -18931,15 +18936,15 @@ const hrLangStr string = "" + // Size: 4630 bytes "kumasususumerskikomorskiklasični sirskisirijskitemnetesoterenotetumtigri" + "škitivtokelaunskiklingonskitlingittamašečkinyasa tongatok pisintarokots" + "imshiantumbukatuvaluanskitasawaqtuvinskitamašek (Srednji Atlas)udmurtski" + - "ugaritskiumbundukorijenskivaivotskivunjowalserskiwalamowaraywashowarlpir" + - "iwu kineskikalmyksogayaojapskiyangbenyembakantonskizapotečkiBlissovi sim" + - "bolizenagastandardni marokanski tamašekzunibez jezičnog sadržajazazakimo" + - "derni standardni arapskijužnoazerbajdžanskiaustrijski njemačkigornjonjem" + - "ački (švicarski)australski engleskikanadski engleskibritanski engleskiam" + - "erički engleskilatinoamerički španjolskieuropski španjolskimeksički špan" + - "jolskikanadski francuskišvicarski francuskidonjosaksonskiflamanskibrazil" + - "ski portugalskieuropski portugalskimoldavskisrpsko-hrvatskikongoanski sv" + - "ahilikineski (pojednostavljeni)kineski (tradicionalni)" + "ugaritskiumbundunepoznati jezikvaivotskivunjowalserskiwalamowaraywashowa" + + "rlpiriwu kineskikalmyksogayaojapskiyangbenyembakantonskizapotečkiBlissov" + + "i simbolizenagastandardni marokanski tamašekzunibez jezičnog sadržajazaz" + + "akimoderni standardni arapskijužnoazerbajdžanskiaustrijski njemačkigornj" + + "onjemački (švicarski)australski engleskikanadski engleskibritanski engle" + + "skiamerički engleskilatinoamerički španjolskieuropski španjolskimeksički" + + " španjolskikanadski francuskišvicarski francuskidonjosaksonskiflamanskib" + + "razilski portugalskieuropski portugalskimoldavskisrpsko-hrvatskikongoans" + + "ki svahilikineski (pojednostavljeni)kineski (tradicionalni)" var hrLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19020,18 +19025,18 @@ var hrLangIdx = []uint16{ // 613 elements 0x0ee4, 0x0ee4, 0x0ee4, 0x0ee9, 0x0eed, 0x0ef3, 0x0ef8, 0x0f01, 0x0f04, 0x0f0f, 0x0f0f, 0x0f19, 0x0f20, 0x0f20, 0x0f2b, 0x0f36, 0x0f3f, 0x0f3f, 0x0f45, 0x0f45, 0x0f4e, 0x0f4e, 0x0f55, 0x0f60, - 0x0f67, 0x0f6f, 0x0f87, 0x0f90, 0x0f99, 0x0fa0, 0x0faa, 0x0fad, - 0x0fad, 0x0fad, 0x0fad, 0x0fad, 0x0fb3, 0x0fb3, 0x0fb8, 0x0fc1, - 0x0fc7, 0x0fcc, 0x0fd1, 0x0fd9, 0x0fe3, 0x0fe9, 0x0fe9, 0x0fed, + 0x0f67, 0x0f6f, 0x0f87, 0x0f90, 0x0f99, 0x0fa0, 0x0faf, 0x0fb2, + 0x0fb2, 0x0fb2, 0x0fb2, 0x0fb2, 0x0fb8, 0x0fb8, 0x0fbd, 0x0fc6, + 0x0fcc, 0x0fd1, 0x0fd6, 0x0fde, 0x0fe8, 0x0fee, 0x0fee, 0x0ff2, // Entry 240 - 27F - 0x0ff0, 0x0ff6, 0x0ffd, 0x1002, 0x1002, 0x100b, 0x1015, 0x1025, - 0x1025, 0x102b, 0x1049, 0x104d, 0x1064, 0x106a, 0x1084, 0x1099, - 0x10ad, 0x10c9, 0x10dc, 0x10ed, 0x10ff, 0x1111, 0x112c, 0x1140, - 0x1155, 0x1155, 0x1167, 0x117b, 0x1189, 0x1192, 0x11a7, 0x11bb, - 0x11c4, 0x11d3, 0x11e5, 0x11ff, 0x1216, + 0x0ff5, 0x0ffb, 0x1002, 0x1007, 0x1007, 0x1010, 0x101a, 0x102a, + 0x102a, 0x1030, 0x104e, 0x1052, 0x1069, 0x106f, 0x1089, 0x109e, + 0x10b2, 0x10ce, 0x10e1, 0x10f2, 0x1104, 0x1116, 0x1131, 0x1145, + 0x115a, 0x115a, 0x116c, 0x1180, 0x118e, 0x1197, 0x11ac, 0x11c0, + 0x11c9, 0x11d8, 0x11ea, 0x1204, 0x121b, } // Size: 1250 bytes -const huLangStr string = "" + // Size: 4071 bytes +const huLangStr string = "" + // Size: 4083 bytes "afarabházavesztánafrikaansakanamharaaragonézarabasszámiavarajmaraazerbaj" + "dzsánibaskírbelaruszbolgárbislamabambarabanglatibetibretonbosnyákkatalán" + "csecsencsamorókorzikaikrícsehegyházi szlávcsuvaswalesidánnémetdivehidzso" + @@ -19078,14 +19083,14 @@ const huLangStr string = "" + // Size: 4071 bytes "zámiszoninkesogdienszranai tongószererszahószukumaszuszusumércomoreiklas" + "szikus szírszírtemneteszóterenótetumtigrétivtokelauiklingontlingittamase" + "knyugati nyaszatok pisintarokócsimsiánitumbukatuvaluszaváktuvaiközép-atl" + - "aszi tamazigtudmurtugaritiumbunduősivaivotjákvunjowalservalamovaraóvasów" + - "arlpiriwu kínaikalmükszogajaójapijangbenjembakantonizapotékBliss jelképr" + - "endszerzenagamarokkói tamazightzuninincs nyelvészeti tartalomzazamodern " + - "szabányos arabosztrák németsvájci felnémetausztrál angolkanadai angolbri" + - "t angolamerikai angollatin-amerikai spanyoleurópai spanyolspanyol (mexik" + - "ói)kanadai franciasvájci franciaalsószászflamandbrazíliai portugáleuróp" + - "ai portugálmoldvaiszerbhorvátkongói szuahéliegyszerűsített kínaihagyomán" + - "yos kínai" + "aszi tamazigtudmurtugaritiumbunduismeretlen nyelvvaivotjákvunjowalserval" + + "amovaraóvasówarlpiriwu kínaikalmükszogajaójapijangbenjembakantonizapoték" + + "Bliss jelképrendszerzenagamarokkói tamazightzuninincs nyelvészeti tartal" + + "omzazamodern szabányos arabosztrák németsvájci felnémetausztrál angolkan" + + "adai angolbrit angolamerikai angollatin-amerikai spanyoleurópai spanyols" + + "panyol (mexikói)kanadai franciasvájci franciaalsószászflamandbrazíliai p" + + "ortugáleurópai portugálmoldvaiszerbhorvátkongói szuahéliegyszerűsített k" + + "ínaihagyományos kínai" var huLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19166,18 +19171,18 @@ var huLangIdx = []uint16{ // 613 elements 0x0d3c, 0x0d3c, 0x0d3c, 0x0d41, 0x0d47, 0x0d4e, 0x0d53, 0x0d59, 0x0d5c, 0x0d64, 0x0d64, 0x0d6b, 0x0d72, 0x0d72, 0x0d79, 0x0d87, 0x0d90, 0x0d90, 0x0d97, 0x0d97, 0x0da1, 0x0da1, 0x0da8, 0x0dae, - 0x0db5, 0x0dba, 0x0dd2, 0x0dd8, 0x0ddf, 0x0de6, 0x0dea, 0x0ded, - 0x0ded, 0x0ded, 0x0ded, 0x0ded, 0x0df4, 0x0df4, 0x0df9, 0x0dff, - 0x0e05, 0x0e0b, 0x0e10, 0x0e18, 0x0e21, 0x0e28, 0x0e28, 0x0e2d, + 0x0db5, 0x0dba, 0x0dd2, 0x0dd8, 0x0ddf, 0x0de6, 0x0df6, 0x0df9, + 0x0df9, 0x0df9, 0x0df9, 0x0df9, 0x0e00, 0x0e00, 0x0e05, 0x0e0b, + 0x0e11, 0x0e17, 0x0e1c, 0x0e24, 0x0e2d, 0x0e34, 0x0e34, 0x0e39, // Entry 240 - 27F - 0x0e31, 0x0e35, 0x0e3c, 0x0e41, 0x0e41, 0x0e48, 0x0e50, 0x0e65, - 0x0e65, 0x0e6b, 0x0e7e, 0x0e82, 0x0e9d, 0x0ea1, 0x0eb7, 0x0eb7, - 0x0ec6, 0x0ed7, 0x0ee6, 0x0ef3, 0x0efd, 0x0f0b, 0x0f21, 0x0f31, - 0x0f43, 0x0f43, 0x0f52, 0x0f61, 0x0f6c, 0x0f73, 0x0f87, 0x0f99, - 0x0fa0, 0x0fac, 0x0fbd, 0x0fd4, 0x0fe7, + 0x0e3d, 0x0e41, 0x0e48, 0x0e4d, 0x0e4d, 0x0e54, 0x0e5c, 0x0e71, + 0x0e71, 0x0e77, 0x0e8a, 0x0e8e, 0x0ea9, 0x0ead, 0x0ec3, 0x0ec3, + 0x0ed2, 0x0ee3, 0x0ef2, 0x0eff, 0x0f09, 0x0f17, 0x0f2d, 0x0f3d, + 0x0f4f, 0x0f4f, 0x0f5e, 0x0f6d, 0x0f78, 0x0f7f, 0x0f93, 0x0fa5, + 0x0fac, 0x0fb8, 0x0fc9, 0x0fe0, 0x0ff3, } // Size: 1250 bytes -const hyLangStr string = "" + // Size: 8542 bytes +const hyLangStr string = "" + // Size: 8549 bytes "աֆարերենաբխազերենաֆրիկաանսաքանամհարերենարագոներենարաբերենասամերենավարերե" + "նայմարաադրբեջաներենբաշկիրերենբելառուսերենբուլղարերենբիսլամաբամբարաբենգա" + "լերենտիբեթերենբրետոներենբոսնիերենկատալաներենչեչեներենչամոռոկորսիկերենչե" + @@ -19229,16 +19234,16 @@ const hyLangStr string = "" + // Size: 8542 bytes "ոերենսուկումակոմորերենասորերենտուլուտեմնետեսոտերենոտետումտիգրետիվերենտո" + "կելաուցախուրկլինգոնտլինգիտթալիշերենտամաշեկտոկ փիսինտուրոյոտարոկոցակոներ" + "ենցիմշյանտումբուկաթուվալուերենտասավաքտուվերենկենտրոնատլասյան թամազիղտու" + - "դմուրտերենուգարիտերենումբունդուռուտերենվաիվենետերենվեպսերենարևմտաֆլաման" + - "դերենվոդերենվորովունջովալսերենվոլայտավարայերենվաշովարլպիրիվու չինարենկա" + - "լմիկերենսոգայաոյափերենյանգբենեմբականտոներենսապոտեկերենզեյլանդերենզենագա" + - "ընդհանուր մարոկյան թամազիղտզունիերենառանց լեզվային բովանդակությանզազաեր" + - "ենարդի ընդհանուր արաբերենավստրիական գերմաներենշվեյցարական վերին գերմանե" + - "րենավստրալիական անգլերենկանադական անգլերենբրիտանական անգլերենամերիկյան " + - "անգլերենլատինամերիկյան իսպաներենեվրոպական իսպաներենմեքսիկական իսպաներեն" + - "կանադական ֆրանսերենշվեյցարական ֆրանսերենստորին սաքսոներենֆլամանդերենբրա" + - "զիլական պորտուգալերենեվրոպական պորտուգալերենմոլդովերենսերբա-խորվաթերենկ" + - "ոնգոյի սուահիլիպարզեցված չինարենավանդական չինարեն" + "դմուրտերենուգարիտերենումբունդուանհայտ լեզուվաիվենետերենվեպսերենարևմտաֆլ" + + "ամանդերենվոդերենվորովունջովալսերենվոլայտավարայերենվաշովարլպիրիվու չինար" + + "ենկալմիկերենսոգայաոյափերենյանգբենեմբականտոներենսապոտեկերենզեյլանդերենզե" + + "նագաընդհանուր մարոկյան թամազիղտզունիերենառանց լեզվային բովանդակությանզա" + + "զաերենարդի ընդհանուր արաբերենավստրիական գերմաներենշվեյցարական վերին գեր" + + "մաներենավստրալիական անգլերենկանադական անգլերենբրիտանական անգլերենամերիկ" + + "յան անգլերենլատինամերիկյան իսպաներենեվրոպական իսպաներենմեքսիկական իսպան" + + "երենկանադական ֆրանսերենշվեյցարական ֆրանսերենստորին սաքսոներենֆլամանդերե" + + "նբրազիլական պորտուգալերենեվրոպական պորտուգալերենմոլդովերենսերբա-խորվաթե" + + "րենկոնգոյի սուահիլիպարզեցված չինարենավանդական չինարեն" var hyLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19319,18 +19324,18 @@ var hyLangIdx = []uint16{ // 613 elements 0x1aac, 0x1aac, 0x1ab8, 0x1ac2, 0x1aca, 0x1ad6, 0x1ae2, 0x1aec, 0x1afa, 0x1b0a, 0x1b16, 0x1b24, 0x1b32, 0x1b44, 0x1b52, 0x1b52, 0x1b63, 0x1b71, 0x1b7d, 0x1b8f, 0x1b9d, 0x1b9d, 0x1baf, 0x1bc7, - 0x1bd5, 0x1be5, 0x1c14, 0x1c2c, 0x1c42, 0x1c56, 0x1c66, 0x1c6c, - 0x1c7e, 0x1c8e, 0x1cb0, 0x1cb0, 0x1cbe, 0x1cc6, 0x1cd2, 0x1ce2, - 0x1cf0, 0x1d02, 0x1d0a, 0x1d1a, 0x1d2f, 0x1d43, 0x1d43, 0x1d4b, + 0x1bd5, 0x1be5, 0x1c14, 0x1c2c, 0x1c42, 0x1c56, 0x1c6d, 0x1c73, + 0x1c85, 0x1c95, 0x1cb7, 0x1cb7, 0x1cc5, 0x1ccd, 0x1cd9, 0x1ce9, + 0x1cf7, 0x1d09, 0x1d11, 0x1d21, 0x1d36, 0x1d4a, 0x1d4a, 0x1d52, // Entry 240 - 27F - 0x1d51, 0x1d5f, 0x1d6d, 0x1d75, 0x1d75, 0x1d89, 0x1d9f, 0x1d9f, - 0x1db5, 0x1dc1, 0x1df5, 0x1e07, 0x1e3f, 0x1e4f, 0x1e7b, 0x1e7b, - 0x1ea4, 0x1eda, 0x1f03, 0x1f26, 0x1f4b, 0x1f6e, 0x1f9d, 0x1fc2, - 0x1fe9, 0x1fe9, 0x200e, 0x2037, 0x2058, 0x206e, 0x209d, 0x20ca, - 0x20de, 0x20fd, 0x211c, 0x213d, 0x215e, + 0x1d58, 0x1d66, 0x1d74, 0x1d7c, 0x1d7c, 0x1d90, 0x1da6, 0x1da6, + 0x1dbc, 0x1dc8, 0x1dfc, 0x1e0e, 0x1e46, 0x1e56, 0x1e82, 0x1e82, + 0x1eab, 0x1ee1, 0x1f0a, 0x1f2d, 0x1f52, 0x1f75, 0x1fa4, 0x1fc9, + 0x1ff0, 0x1ff0, 0x2015, 0x203e, 0x205f, 0x2075, 0x20a4, 0x20d1, + 0x20e5, 0x2104, 0x2123, 0x2144, 0x2165, } // Size: 1250 bytes -const idLangStr string = "" + // Size: 3994 bytes +const idLangStr string = "" + // Size: 4010 bytes "AfarAbkhazAvestaAfrikaansAkanAmharikAragonArabAssamAvarAymaraAzerbaijani" + "BashkirBelarusiaBulgariaBislamaBambaraBengaliTibetBretonBosniaKatalanChe" + "chenChamorroKorsikaKreeCheskaBahasa Gereja SlavoniaChuvashWelshDanskJerm" + @@ -19381,12 +19386,12 @@ const idLangStr string = "" + // Size: 3994 bytes "ranan TongoSererSahoSukumaSusuSumeriaKomoriaSuriah KlasikSuriahSilesiaTu" + "luTimneTesoTerenoTetunTigreTivTokelauKlingonTlingitTamashekNyasa TongaTo" + "k PisinTuroyoTarokoTsimshiaTat MuslimTumbukaTuvaluTasawaqTuviniaTamazigh" + - "t Maroko TengahUdmurtUgaritUmbunduRootVaiVenesiaVotiaVunjoWalserWalamoWa" + - "raiWashoWarlpiriKalmukSogaYaoYapoisYangbenYembaKantonZapotekBlissymbolZe" + - "nagaTamazight Maroko StandarZuniTidak ada konten linguistikZazaArab Stan" + - "dar ModernJerman Tinggi (Swiss)Inggris (Inggris)Spanyol (Eropa)Portugis " + - "(Eropa)MoldaviaSerbo-KroasiaKongo SwahiliTionghoa (Aksara Sederhana)Tion" + - "ghoa (Aksara Tradisional)" + "t Maroko TengahUdmurtUgaritUmbunduBahasa Tidak DikenalVaiVenesiaVotiaVun" + + "joWalserWalamoWaraiWashoWarlpiriKalmukSogaYaoYapoisYangbenYembaKantonZap" + + "otekBlissymbolZenagaTamazight Maroko StandarZuniTidak ada konten linguis" + + "tikZazaArab Standar ModernJerman Tinggi (Swiss)Inggris (Inggris)Spanyol " + + "(Eropa)Portugis (Eropa)MoldaviaSerbo-KroasiaKongo SwahiliTionghoa (Aksar" + + "a Sederhana)Tionghoa (Aksara Tradisional)" var idLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19467,18 +19472,18 @@ var idLangIdx = []uint16{ // 613 elements 0x0d80, 0x0d87, 0x0d8b, 0x0d90, 0x0d94, 0x0d9a, 0x0d9f, 0x0da4, 0x0da7, 0x0dae, 0x0dae, 0x0db5, 0x0dbc, 0x0dbc, 0x0dc4, 0x0dcf, 0x0dd8, 0x0dde, 0x0de4, 0x0de4, 0x0dec, 0x0df6, 0x0dfd, 0x0e03, - 0x0e0a, 0x0e11, 0x0e28, 0x0e2e, 0x0e34, 0x0e3b, 0x0e3f, 0x0e42, - 0x0e49, 0x0e49, 0x0e49, 0x0e49, 0x0e4e, 0x0e4e, 0x0e53, 0x0e59, - 0x0e5f, 0x0e64, 0x0e69, 0x0e71, 0x0e71, 0x0e77, 0x0e77, 0x0e7b, + 0x0e0a, 0x0e11, 0x0e28, 0x0e2e, 0x0e34, 0x0e3b, 0x0e4f, 0x0e52, + 0x0e59, 0x0e59, 0x0e59, 0x0e59, 0x0e5e, 0x0e5e, 0x0e63, 0x0e69, + 0x0e6f, 0x0e74, 0x0e79, 0x0e81, 0x0e81, 0x0e87, 0x0e87, 0x0e8b, // Entry 240 - 27F - 0x0e7e, 0x0e84, 0x0e8b, 0x0e90, 0x0e90, 0x0e96, 0x0e9d, 0x0ea7, - 0x0ea7, 0x0ead, 0x0ec5, 0x0ec9, 0x0ee4, 0x0ee8, 0x0efb, 0x0efb, - 0x0efb, 0x0f10, 0x0f10, 0x0f10, 0x0f21, 0x0f21, 0x0f21, 0x0f30, - 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f40, - 0x0f48, 0x0f55, 0x0f62, 0x0f7d, 0x0f9a, + 0x0e8e, 0x0e94, 0x0e9b, 0x0ea0, 0x0ea0, 0x0ea6, 0x0ead, 0x0eb7, + 0x0eb7, 0x0ebd, 0x0ed5, 0x0ed9, 0x0ef4, 0x0ef8, 0x0f0b, 0x0f0b, + 0x0f0b, 0x0f20, 0x0f20, 0x0f20, 0x0f31, 0x0f31, 0x0f31, 0x0f40, + 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f50, + 0x0f58, 0x0f65, 0x0f72, 0x0f8d, 0x0faa, } // Size: 1250 bytes -const isLangStr string = "" + // Size: 4605 bytes +const isLangStr string = "" + // Size: 4619 bytes "afárabkasískaavestískaafríkanskaakanamharískaaragonskaarabískaassamskaav" + "arískaaímaraaserskabaskírhvítrússneskabúlgarskabíslamabambarabengalskatí" + "beskabretónskabosnískakatalónskatsjetsjenskakamorrókorsískakrítékkneskak" + @@ -19528,14 +19533,14 @@ const isLangStr string = "" + // Size: 4605 bytes "esamískasóninkesogdíensranan tongoserersahosúkúmasúsúsúmerskashimaoríska" + "klassísk sýrlenskasýrlenskatímnetesóterenótetúmtígretívtókeláskaklingons" + "katlingittamasjektongverska (nyasa)tokpisintarókótsimsískatúmbúkatúvalús" + - "katasawaqtúvínskatamazightúdmúrtúgarítískaúmbúndúrótvaívotískavunjóvalse" + - "rvalamóvaraívasjóvarlpirikalmúkskasógajaójapískayangbenyembakantoneskasa" + - "pótekblisstáknsenagastaðlað marokkóskt tamazightsúníekkert tungumálaefni" + - "zázáískastöðluð nútímaarabískaausturrísk þýskasvissnesk háþýskaáströlsk " + - "enskakanadísk enskabresk enskabandarísk enskarómönsk-amerísk spænskaevró" + - "psk spænskamexíkósk spænskakanadísk franskasvissnesk franskalágsaxneskaf" + - "læmskabrasílísk portúgalskaevrópsk portúgalskamoldóvskaserbókróatískaKon" + - "gó-svahílíkínverska (einfölduð)kínverska (hefðbundin)" + "katasawaqtúvínskatamazightúdmúrtúgarítískaúmbúndúóþekkt tungumálvaívotís" + + "kavunjóvalservalamóvaraívasjóvarlpirikalmúkskasógajaójapískayangbenyemba" + + "kantoneskasapótekblisstáknsenagastaðlað marokkóskt tamazightsúníekkert t" + + "ungumálaefnizázáískastöðluð nútímaarabískaausturrísk þýskasvissnesk háþý" + + "skaáströlsk enskakanadísk enskabresk enskabandarísk enskarómönsk-amerísk" + + " spænskaevrópsk spænskamexíkósk spænskakanadísk franskasvissnesk franska" + + "lágsaxneskaflæmskabrasílísk portúgalskaevrópsk portúgalskamoldóvskaserbó" + + "króatískaKongó-svahílíkínverska (einfölduð)kínverska (hefðbundin)" var isLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19616,18 +19621,18 @@ var isLangIdx = []uint16{ // 613 elements 0x0eff, 0x0eff, 0x0eff, 0x0f05, 0x0f0a, 0x0f11, 0x0f17, 0x0f1d, 0x0f21, 0x0f2c, 0x0f2c, 0x0f36, 0x0f3d, 0x0f3d, 0x0f45, 0x0f57, 0x0f5f, 0x0f5f, 0x0f67, 0x0f67, 0x0f71, 0x0f71, 0x0f7a, 0x0f85, - 0x0f8c, 0x0f96, 0x0f9f, 0x0fa7, 0x0fb4, 0x0fbe, 0x0fc2, 0x0fc6, - 0x0fc6, 0x0fc6, 0x0fc6, 0x0fc6, 0x0fce, 0x0fce, 0x0fd4, 0x0fda, - 0x0fe1, 0x0fe7, 0x0fed, 0x0ff5, 0x0ff5, 0x0fff, 0x0fff, 0x1004, + 0x0f8c, 0x0f96, 0x0f9f, 0x0fa7, 0x0fb4, 0x0fbe, 0x0fd0, 0x0fd4, + 0x0fd4, 0x0fd4, 0x0fd4, 0x0fd4, 0x0fdc, 0x0fdc, 0x0fe2, 0x0fe8, + 0x0fef, 0x0ff5, 0x0ffb, 0x1003, 0x1003, 0x100d, 0x100d, 0x1012, // Entry 240 - 27F - 0x1008, 0x1010, 0x1017, 0x101c, 0x101c, 0x1026, 0x102e, 0x1038, - 0x1038, 0x103e, 0x105d, 0x1063, 0x1078, 0x1083, 0x109f, 0x109f, - 0x10b2, 0x10c6, 0x10d6, 0x10e5, 0x10f0, 0x1100, 0x111b, 0x112c, - 0x113f, 0x113f, 0x1150, 0x1161, 0x116d, 0x1175, 0x118d, 0x11a2, - 0x11ac, 0x11bd, 0x11cd, 0x11e5, 0x11fd, + 0x1016, 0x101e, 0x1025, 0x102a, 0x102a, 0x1034, 0x103c, 0x1046, + 0x1046, 0x104c, 0x106b, 0x1071, 0x1086, 0x1091, 0x10ad, 0x10ad, + 0x10c0, 0x10d4, 0x10e4, 0x10f3, 0x10fe, 0x110e, 0x1129, 0x113a, + 0x114d, 0x114d, 0x115e, 0x116f, 0x117b, 0x1183, 0x119b, 0x11b0, + 0x11ba, 0x11cb, 0x11db, 0x11f3, 0x120b, } // Size: 1250 bytes -const itLangStr string = "" + // Size: 5026 bytes +const itLangStr string = "" + // Size: 5040 bytes "afarabcasoavestanafrikaansakanamaricoaragonesearaboassameseavaroaymaraaz" + "erbaigianobaschirobielorussobulgarobislamabambarabengalesetibetanobreton" + "ebosniacocatalanocecenochamorrocorsocreececoslavo della Chiesaciuvasciog" + @@ -19689,15 +19694,15 @@ const itLangStr string = "" + // Size: 5026 bytes "lassicosiriacoslesianotulutemnetesoterenotetumtigretivtokelautsakhurklin" + "gontlingittalisciotamasheknyasa del Tongatok pisinturoyotarokozaconicots" + "imshiantat islamicotumbukatuvalutasawaqtuviniantamazightudmurtugariticom" + - "bundurootvaivenetovepsofiammingo occidentalevotovõrovunjowalserwalamowar" + - "aywashowarlpiriwukalmykmengreliosogayao (bantu)yapeseyangbenyembanheenga" + - "tucantonesezapotecblissymbolzelandesezenagatamazight del Marocco standar" + - "dzuninessun contenuto linguisticozazaarabo moderno standardtedesco austr" + - "iacoalto tedesco svizzeroinglese australianoinglese canadeseinglese brit" + - "annicoinglese americanospagnolo latinoamericanospagnolo europeospagnolo " + - "messicanofrancese canadesefrancese svizzerobasso tedesco olandesefiammin" + - "goportoghese brasilianoportoghese europeomoldavoserbo-croatoswahili del " + - "Congocinese semplificatocinese tradizionale" + "bundulingua imprecisatavaivenetovepsofiammingo occidentalevotovõrovunjow" + + "alserwalamowaraywashowarlpiriwukalmykmengreliosogayao (bantu)yapeseyangb" + + "enyembanheengatucantonesezapotecblissymbolzelandesezenagatamazight del M" + + "arocco standardzuninessun contenuto linguisticozazaarabo moderno standar" + + "dtedesco austriacoalto tedesco svizzeroinglese australianoinglese canade" + + "seinglese britannicoinglese americanospagnolo latinoamericanospagnolo eu" + + "ropeospagnolo messicanofrancese canadesefrancese svizzerobasso tedesco o" + + "landesefiammingoportoghese brasilianoportoghese europeomoldavoserbo-croa" + + "toswahili del Congocinese semplificatocinese tradizionale" var itLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19778,18 +19783,18 @@ var itLangIdx = []uint16{ // 613 elements 0x106c, 0x1074, 0x1078, 0x107d, 0x1081, 0x1087, 0x108c, 0x1091, 0x1094, 0x109b, 0x10a2, 0x10a9, 0x10b0, 0x10b8, 0x10c0, 0x10cf, 0x10d8, 0x10de, 0x10e4, 0x10ec, 0x10f5, 0x1101, 0x1108, 0x110e, - 0x1115, 0x111d, 0x1126, 0x112c, 0x1135, 0x113b, 0x113f, 0x1142, - 0x1148, 0x114d, 0x1162, 0x1162, 0x1166, 0x116b, 0x1170, 0x1176, - 0x117c, 0x1181, 0x1186, 0x118e, 0x1190, 0x1196, 0x119f, 0x11a3, + 0x1115, 0x111d, 0x1126, 0x112c, 0x1135, 0x113b, 0x114d, 0x1150, + 0x1156, 0x115b, 0x1170, 0x1170, 0x1174, 0x1179, 0x117e, 0x1184, + 0x118a, 0x118f, 0x1194, 0x119c, 0x119e, 0x11a4, 0x11ad, 0x11b1, // Entry 240 - 27F - 0x11ae, 0x11b4, 0x11bb, 0x11c0, 0x11c9, 0x11d2, 0x11d9, 0x11e3, - 0x11ec, 0x11f2, 0x1210, 0x1214, 0x1230, 0x1234, 0x124a, 0x124a, - 0x125b, 0x1270, 0x1283, 0x1293, 0x12a5, 0x12b6, 0x12ce, 0x12de, - 0x12f0, 0x12f0, 0x1301, 0x1312, 0x1328, 0x1331, 0x1346, 0x1358, - 0x135f, 0x136b, 0x137c, 0x138f, 0x13a2, + 0x11bc, 0x11c2, 0x11c9, 0x11ce, 0x11d7, 0x11e0, 0x11e7, 0x11f1, + 0x11fa, 0x1200, 0x121e, 0x1222, 0x123e, 0x1242, 0x1258, 0x1258, + 0x1269, 0x127e, 0x1291, 0x12a1, 0x12b3, 0x12c4, 0x12dc, 0x12ec, + 0x12fe, 0x12fe, 0x130f, 0x1320, 0x1336, 0x133f, 0x1354, 0x1366, + 0x136d, 0x1379, 0x138a, 0x139d, 0x13b0, } // Size: 1250 bytes -const jaLangStr string = "" + // Size: 10070 bytes +const jaLangStr string = "" + // Size: 10073 bytes "アファル語アブハズ語アヴェスタ語アフリカーンス語アカン語アムハラ語アラゴン語アラビア語アッサム語アヴァル語アイマラ語アゼルバイジャン語バシキール" + "語ベラルーシ語ブルガリア語ビスラマ語バンバラ語ベンガル語チベット語ブルトン語ボスニア語カタロニア語チェチェン語チャモロ語コルシカ語クリー語チ" + "ェコ語教会スラブ語チュヴァシ語ウェールズ語デンマーク語ドイツ語ディベヒ語ゾンカ語エウェ語ギリシャ語英語エスペラント語スペイン語エストニア語バ" + @@ -19834,11 +19839,11 @@ const jaLangStr string = "" + // Size: 10070 bytes "ンケ語ソグド語スリナム語セレル語サホ語ザーターフリジア語スクマ語スス語シュメール語コモロ語古典シリア語シリア語シレジア語トゥル語テムネ語テソ" + "語テレーノ語テトゥン語ティグレ語ティブ語トケラウ語ツァフル語クリンゴン語トリンギット語タリシュ語タマシェク語トンガ語(ニアサ)トク・ピシン語" + "トゥロヨ語タロコ語ツァコン語チムシュ語ムスリム・タタール語トゥンブカ語ツバル語タサワク語トゥヴァ語中央アトラス・タマジクト語ウドムルト語ウガ" + - "リト語ムブンドゥ語ルートヴァイ語ヴェネト語ヴェプス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語ウォライタ語ワライ語ワ" + - "ショ語ワルピリ語呉語カルムイク語メグレル語ソガ語ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリスシンボルゼーラント語" + - "ゼナガ語標準モロッコ タマジクト語ズニ語言語的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英語カナダ英語イギリス英" + - "語アメリカ英語スペイン語 (イベリア半島)フレミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語コンゴ・スワヒリ語簡体" + - "中国語繁体中国語" + "リト語ムブンドゥ語言語不明ヴァイ語ヴェネト語ヴェプス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語ウォライタ語ワライ語" + + "ワショ語ワルピリ語呉語カルムイク語メグレル語ソガ語ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリスシンボルゼーラント" + + "語ゼナガ語標準モロッコ タマジクト語ズニ語言語的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英語カナダ英語イギリス" + + "英語アメリカ英語スペイン語 (イベリア半島)フレミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語コンゴ・スワヒリ語簡" + + "体中国語繁体中国語" var jaLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -19919,18 +19924,18 @@ var jaLangIdx = []uint16{ // 613 elements 0x223d, 0x224c, 0x2258, 0x2264, 0x226d, 0x227c, 0x228b, 0x229a, 0x22a6, 0x22b5, 0x22c4, 0x22d6, 0x22eb, 0x22fa, 0x230c, 0x2323, 0x2338, 0x2347, 0x2353, 0x2362, 0x2371, 0x238f, 0x23a1, 0x23ad, - 0x23bc, 0x23cb, 0x23f2, 0x2404, 0x2413, 0x2425, 0x242e, 0x243a, - 0x2449, 0x2458, 0x246a, 0x2482, 0x2491, 0x249d, 0x24ac, 0x24bb, - 0x24cd, 0x24d9, 0x24e5, 0x24f4, 0x24fa, 0x250c, 0x251b, 0x2524, + 0x23bc, 0x23cb, 0x23f2, 0x2404, 0x2413, 0x2425, 0x2431, 0x243d, + 0x244c, 0x245b, 0x246d, 0x2485, 0x2494, 0x24a0, 0x24af, 0x24be, + 0x24d0, 0x24dc, 0x24e8, 0x24f7, 0x24fd, 0x250f, 0x251e, 0x2527, // Entry 240 - 27F - 0x252d, 0x2539, 0x2548, 0x2557, 0x256f, 0x2578, 0x2587, 0x259c, - 0x25ae, 0x25ba, 0x25df, 0x25e8, 0x25fd, 0x2606, 0x2621, 0x2621, - 0x2621, 0x263f, 0x265a, 0x2669, 0x267b, 0x268d, 0x268d, 0x26b1, - 0x26b1, 0x26b1, 0x26b1, 0x26b1, 0x26b1, 0x26c6, 0x26c6, 0x26ed, - 0x26ff, 0x271d, 0x2738, 0x2747, 0x2756, + 0x2530, 0x253c, 0x254b, 0x255a, 0x2572, 0x257b, 0x258a, 0x259f, + 0x25b1, 0x25bd, 0x25e2, 0x25eb, 0x2600, 0x2609, 0x2624, 0x2624, + 0x2624, 0x2642, 0x265d, 0x266c, 0x267e, 0x2690, 0x2690, 0x26b4, + 0x26b4, 0x26b4, 0x26b4, 0x26b4, 0x26b4, 0x26c9, 0x26c9, 0x26f0, + 0x2702, 0x2720, 0x273b, 0x274a, 0x2759, } // Size: 1250 bytes -const kaLangStr string = "" + // Size: 12200 bytes +const kaLangStr string = "" + // Size: 12197 bytes "აფარიაფხაზურიავესტურიაფრიკაანსიაკანიამჰარულიარაგონულიარაბულიასამურიხუნძუ" + "რიაიმარააზერბაიჯანულიბაშკირულიბელორუსულიბულგარულიბისლამაბამბარაბენგალუ" + "რიტიბეტურიბრეტონულიბოსნიურიკატალანურიჩეჩნურიჩამოროკორსიკულიკრიჩეხურისა" + @@ -19981,15 +19986,15 @@ const kaLangStr string = "" + // Size: 12200 bytes "შანიჩადური არაბულისამხრეთსამურილულე-საამურიინარი-საამურისკოლტ-საამურის" + "ონინკესრანან ტონგოსაჰოსუკუმაშუმერულიკომორულიკლასიკური სირიულისირიულიტი" + "ნმეტესოტეტუმითიგრეკლინგონიტოკ-პისინიტაროკოტუმბუკატუვალუტასავაქიტუვაცენ" + - "ტრალური მოროკოს ტამაზიგხტიუდმურტულიუგარითულიუმბუნდუძირეული ენავაივუნჯო" + - "ვალსერიველაითავარაივალპირიყალმუხურისოგაიანგბენიიემბაკანტონურიბლისსიმბო" + - "ლოებიზენაგასტანდარტული მაროკოული ტამაზიგხტიზუნილინგვისტური შიგთავსი არ" + - " არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გერმანულიშვეიცარიული" + - " ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისურიბრიტანული ინგლისური" + - "ამერიკული ინგლისურილათინურ ამერიკული ესპანურიევროპული ესპანურიმექსიკურ" + - "ი ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვემოსაქსონურიფლამანდიუ" + - "რიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლდავურისერბულ-ხორვატულ" + - "იკონგოს სუაჰილიგამარტივებული ჩინურიტრადიციული ჩინური" + "ტრალური მოროკოს ტამაზიგხტიუდმურტულიუგარითულიუმბუნდუუცნობი ენავაივუნჯოვ" + + "ალსერიველაითავარაივალპირიყალმუხურისოგაიანგბენიიემბაკანტონურიბლისსიმბოლ" + + "ოებიზენაგასტანდარტული მაროკოული ტამაზიგხტიზუნილინგვისტური შიგთავსი არ " + + "არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გერმანულიშვეიცარიულ" + + "ი ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისურიბრიტანული ინგლის" + + "ურიამერიკული ინგლისურილათინურ ამერიკული ესპანურიევროპული ესპანურიმექსი" + + "კური ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვემოსაქსონურიფლამან" + + "დიურიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლდავურისერბულ-ხორვა" + + "ტულიკონგოს სუაჰილიგამარტივებული ჩინურიტრადიციული ჩინური" var kaLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -20070,18 +20075,18 @@ var kaLangIdx = []uint16{ // 613 elements 0x27d2, 0x27d2, 0x27d2, 0x27e1, 0x27ed, 0x27ed, 0x27ff, 0x280e, 0x280e, 0x280e, 0x280e, 0x2826, 0x2826, 0x2826, 0x2826, 0x2826, 0x2842, 0x2842, 0x2854, 0x2854, 0x2854, 0x2854, 0x2869, 0x287b, - 0x2893, 0x289f, 0x28f2, 0x290d, 0x2928, 0x293d, 0x295c, 0x2965, - 0x2965, 0x2965, 0x2965, 0x2965, 0x2965, 0x2965, 0x2974, 0x2989, - 0x299e, 0x29ad, 0x29ad, 0x29c2, 0x29c2, 0x29dd, 0x29dd, 0x29e9, + 0x2893, 0x289f, 0x28f2, 0x290d, 0x2928, 0x293d, 0x2959, 0x2962, + 0x2962, 0x2962, 0x2962, 0x2962, 0x2962, 0x2962, 0x2971, 0x2986, + 0x299b, 0x29aa, 0x29aa, 0x29bf, 0x29bf, 0x29da, 0x29da, 0x29e6, // Entry 240 - 27F - 0x29e9, 0x29e9, 0x2a01, 0x2a10, 0x2a10, 0x2a2b, 0x2a2b, 0x2a55, - 0x2a55, 0x2a67, 0x2ac3, 0x2acf, 0x2b1d, 0x2b2f, 0x2b88, 0x2b88, - 0x2bbf, 0x2c08, 0x2c45, 0x2c79, 0x2cb0, 0x2ce7, 0x2d31, 0x2d62, - 0x2d96, 0x2d96, 0x2dc7, 0x2e01, 0x2e2b, 0x2e4c, 0x2e8f, 0x2ecc, - 0x2ee7, 0x2f15, 0x2f3d, 0x2f77, 0x2fa8, + 0x29e6, 0x29e6, 0x29fe, 0x2a0d, 0x2a0d, 0x2a28, 0x2a28, 0x2a52, + 0x2a52, 0x2a64, 0x2ac0, 0x2acc, 0x2b1a, 0x2b2c, 0x2b85, 0x2b85, + 0x2bbc, 0x2c05, 0x2c42, 0x2c76, 0x2cad, 0x2ce4, 0x2d2e, 0x2d5f, + 0x2d93, 0x2d93, 0x2dc4, 0x2dfe, 0x2e28, 0x2e49, 0x2e8c, 0x2ec9, + 0x2ee4, 0x2f12, 0x2f3a, 0x2f74, 0x2fa5, } // Size: 1250 bytes -const kkLangStr string = "" + // Size: 8563 bytes +const kkLangStr string = "" + // Size: 8573 bytes "афар тіліабхаз тіліафрикаанс тіліакан тіліамхар тіліарагон тіліараб тілі" + "ассам тіліавар тіліаймара тіліәзірбайжан тілібашқұрт тілібеларусь тіліб" + "олгар тілібислама тілібамбара тілібенгал тілітибет тілібретон тілібосни" + @@ -20140,12 +20145,12 @@ const kkLangStr string = "" + // Size: 8563 bytes "анан тонго тілісахо тілісукума тілікомор тілісирия тілітемне тілітесо т" + "ілітетум тілітигре тіліклингон тіліток-писин тілітароко тілітумбука тіл" + "ітувалу тілітасавак тілітувин тіліорталық атлас тамазигхт тіліудмурт ті" + - "ліумбунду тіліата тілвай тілівунджо тілівальзер тіліволайта тіліварай т" + - "ілівальбири тіліқалмақ тілісога тіліянгбен тілійемба тілікантон тілімар" + - "окколық стандартты тамазигхт тілізуни тілітілдік мазмұны жоқзаза тіліқа" + - "зіргі стандартты араб тіліағылшын тілі (АҚШ)төменгі саксон тіліфламанд " + - "тілімолдован тілісерб-хорват тіліконго суахили тіліжеңілдетілген қытай " + - "тілідәстүрлі қытай тілі" + "ліумбунду тілібелгісіз тілвай тілівунджо тілівальзер тіліволайта тіліва" + + "рай тілівальбири тіліқалмақ тілісога тіліянгбен тілійемба тілікантон ті" + + "лімарокколық стандартты тамазигхт тілізуни тілітілдік мазмұны жоқзаза т" + + "іліқазіргі стандартты араб тіліағылшын тілі (АҚШ)төменгі саксон тіліфла" + + "манд тілімолдован тілісерб-хорват тіліконго суахили тіліжеңілдетілген қ" + + "ытай тілідәстүрлі қытай тілі" var kkLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -20226,18 +20231,18 @@ var kkLangIdx = []uint16{ // 613 elements 0x1d7a, 0x1d7a, 0x1d7a, 0x1d8d, 0x1d9e, 0x1d9e, 0x1db1, 0x1dc4, 0x1dc4, 0x1dc4, 0x1dc4, 0x1ddb, 0x1ddb, 0x1ddb, 0x1ddb, 0x1ddb, 0x1df5, 0x1df5, 0x1e0a, 0x1e0a, 0x1e0a, 0x1e0a, 0x1e21, 0x1e36, - 0x1e4d, 0x1e60, 0x1e95, 0x1eaa, 0x1eaa, 0x1ec1, 0x1ece, 0x1edd, - 0x1edd, 0x1edd, 0x1edd, 0x1edd, 0x1edd, 0x1edd, 0x1ef2, 0x1f09, - 0x1f20, 0x1f33, 0x1f33, 0x1f4c, 0x1f4c, 0x1f61, 0x1f61, 0x1f72, + 0x1e4d, 0x1e60, 0x1e95, 0x1eaa, 0x1eaa, 0x1ec1, 0x1ed8, 0x1ee7, + 0x1ee7, 0x1ee7, 0x1ee7, 0x1ee7, 0x1ee7, 0x1ee7, 0x1efc, 0x1f13, + 0x1f2a, 0x1f3d, 0x1f3d, 0x1f56, 0x1f56, 0x1f6b, 0x1f6b, 0x1f7c, // Entry 240 - 27F - 0x1f72, 0x1f72, 0x1f87, 0x1f9a, 0x1f9a, 0x1faf, 0x1faf, 0x1faf, - 0x1faf, 0x1faf, 0x1ff4, 0x2005, 0x2027, 0x2038, 0x206d, 0x206d, - 0x206d, 0x206d, 0x206d, 0x206d, 0x206d, 0x208d, 0x208d, 0x208d, - 0x208d, 0x208d, 0x208d, 0x208d, 0x20b1, 0x20c8, 0x20c8, 0x20c8, - 0x20e1, 0x20ff, 0x2121, 0x214f, 0x2173, + 0x1f7c, 0x1f7c, 0x1f91, 0x1fa4, 0x1fa4, 0x1fb9, 0x1fb9, 0x1fb9, + 0x1fb9, 0x1fb9, 0x1ffe, 0x200f, 0x2031, 0x2042, 0x2077, 0x2077, + 0x2077, 0x2077, 0x2077, 0x2077, 0x2077, 0x2097, 0x2097, 0x2097, + 0x2097, 0x2097, 0x2097, 0x2097, 0x20bb, 0x20d2, 0x20d2, 0x20d2, + 0x20eb, 0x2109, 0x212b, 0x2159, 0x217d, } // Size: 1250 bytes -const kmLangStr string = "" + // Size: 8834 bytes +const kmLangStr string = "" + // Size: 8864 bytes "អាហ្វារអាប់ខាហ៊្សានអាវេស្ថានអាហ្វ្រិកានអាកានអំហារិកអារ៉ាហ្គោនអារ៉ាប់អាសា" + "មីសអាវ៉ារីកអីម៉ារ៉ាអាស៊ែបៃហ្សង់បាស្គៀបេឡារុស្សប៊ុលហ្គារីប៊ីស្លាម៉ាបាម្" + "បារាបង់ក្លាដែសទីបេប្រីស្តុនបូស្នីកាតាឡានឈីឆេនឈីម៉ូរ៉ូកូស៊ីខានឆេកឈឺជស្ល" + @@ -20276,11 +20281,11 @@ const kmLangStr string = "" + // Size: 8834 bytes "ឃឺដខាងត្បូងស៊ីណាគុយរ៉ាបូរ៉ុស៊ីនីតាឈីលហ៊ីតសានសាមីខាងត្បូងលូលីសាមីអ៊ីណារ" + "ីសាម៉ីស្កុលសាមីសូនីនគេស្រាណានតុងហ្គោសាហូស៊ូគូម៉ាកូម៉ូរីស៊ីរៀគធីមនីតេសូ" + "ទីទុំធីហ្គ្រាឃ្លីនហ្គុនថុកពីស៊ីនតារ៉ូកូទុមប៊ូកាទូវ៉ាលូតាសាវ៉ាក់ទូវីនៀត" + - "ាម៉ាសាយអាត្លាសកណ្តាលអាត់មូដអាម់ប៊ុនឌូរូតវៃវុនចូវេលសឺវ៉ូឡាយតាវ៉ារេយវ៉ារ" + - "ីប៉ារីកាលមីគសូហ្គាយ៉ាងបេនយេមបាកន្តាំងតាម៉ាហ្សៃម៉ារ៉ុកស្តង់ដាហ្សូនីគ្មា" + - "ន\u200bទិន្នន័យ\u200bភាសាហ្សាហ្សាអារ៉ាប់ផ្លូវការអេស្ប៉ាញ (អ៊ឺរ៉ុប)ហ្សា" + - "ក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម៉ុលដាវីសឺបូក្រូអាតកុងហ្គោស្វា" + - "ហ៊ីលីចិន\u200bអក្សរ\u200bកាត់ចិន\u200bអក្សរ\u200bពេញ" + "ាម៉ាសាយអាត្លាសកណ្តាលអាត់មូដអាម់ប៊ុនឌូភាសាមិនស្គាល់វៃវុនចូវេលសឺវ៉ូឡាយតា" + + "វ៉ារេយវ៉ារីប៉ារីកាលមីគសូហ្គាយ៉ាងបេនយេមបាកន្តាំងតាម៉ាហ្សៃម៉ារ៉ុកស្តង់ដា" + + "ហ្សូនីគ្មាន\u200bទិន្នន័យ\u200bភាសាហ្សាហ្សាអារ៉ាប់ផ្លូវការអេស្ប៉ាញ (អ៊" + + "ឺរ៉ុប)ហ្សាក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម៉ុលដាវីសឺបូក្រូអាតក" + + "ុងហ្គោស្វាហ៊ីលីចិន\u200bអក្សរ\u200bកាត់ចិន\u200bអក្សរ\u200bពេញ" var kmLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -20361,18 +20366,18 @@ var kmLangIdx = []uint16{ // 613 elements 0x1e17, 0x1e17, 0x1e17, 0x1e26, 0x1e32, 0x1e32, 0x1e41, 0x1e59, 0x1e59, 0x1e59, 0x1e59, 0x1e77, 0x1e77, 0x1e77, 0x1e77, 0x1e77, 0x1e92, 0x1e92, 0x1ea7, 0x1ea7, 0x1ea7, 0x1ea7, 0x1ebf, 0x1ed4, - 0x1eef, 0x1f01, 0x1f40, 0x1f55, 0x1f55, 0x1f73, 0x1f7c, 0x1f82, - 0x1f82, 0x1f82, 0x1f82, 0x1f82, 0x1f82, 0x1f82, 0x1f91, 0x1fa0, - 0x1fb8, 0x1fca, 0x1fca, 0x1fe8, 0x1fe8, 0x1ffa, 0x1ffa, 0x200c, + 0x1eef, 0x1f01, 0x1f40, 0x1f55, 0x1f55, 0x1f73, 0x1f9a, 0x1fa0, + 0x1fa0, 0x1fa0, 0x1fa0, 0x1fa0, 0x1fa0, 0x1fa0, 0x1faf, 0x1fbe, + 0x1fd6, 0x1fe8, 0x1fe8, 0x2006, 0x2006, 0x2018, 0x2018, 0x202a, // Entry 240 - 27F - 0x200c, 0x200c, 0x2021, 0x2030, 0x2030, 0x2045, 0x2045, 0x2045, - 0x2045, 0x2045, 0x208a, 0x209c, 0x20d5, 0x20ed, 0x211a, 0x211a, - 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x211a, 0x214a, - 0x214a, 0x214a, 0x214a, 0x214a, 0x217a, 0x218f, 0x218f, 0x21c8, - 0x21e0, 0x2201, 0x2231, 0x225b, 0x2282, + 0x202a, 0x202a, 0x203f, 0x204e, 0x204e, 0x2063, 0x2063, 0x2063, + 0x2063, 0x2063, 0x20a8, 0x20ba, 0x20f3, 0x210b, 0x2138, 0x2138, + 0x2138, 0x2138, 0x2138, 0x2138, 0x2138, 0x2138, 0x2138, 0x2168, + 0x2168, 0x2168, 0x2168, 0x2168, 0x2198, 0x21ad, 0x21ad, 0x21e6, + 0x21fe, 0x221f, 0x224f, 0x2279, 0x22a0, } // Size: 1250 bytes -const knLangStr string = "" + // Size: 12261 bytes +const knLangStr string = "" + // Size: 12283 bytes "ಅಫಾರ್ಅಬ್ಖಾಜಿಯನ್ಅವೆಸ್ಟನ್ಆಫ್ರಿಕಾನ್ಸ್ಅಕಾನ್ಅಂಹರಿಕ್ಅರಗೊನೀಸ್ಅರೇಬಿಕ್ಅಸ್ಸಾಮೀಸ್ಅವ" + "ರಿಕ್ಅಯ್ಮಾರಾಅಜೆರ್ಬೈಜಾನಿಬಶ್ಕಿರ್ಬೆಲರೂಸಿಯನ್ಬಲ್ಗೇರಿಯನ್ಬಿಸ್ಲಾಮಾಬಂಬಾರಾಬಾಂಗ್ಲಾ" + "ಟಿಬೇಟಿಯನ್ಬ್ರೆಟನ್ಬೋಸ್ನಿಯನ್ಕೆಟಲಾನ್ಚೆಚನ್ಕಮೊರೊಕೋರ್ಸಿಕನ್ಕ್ರೀಜೆಕ್ಚರ್ಚ್ ಸ್ಲಾವ" + @@ -20425,15 +20430,15 @@ const knLangStr string = "" + // Size: 12261 bytes "ೇರೇರ್ಸಹೊಸುಕುಮಾಸುಸುಸುಮೇರಿಯನ್ಕೊಮೊರಿಯನ್ಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ಸಿರಿಯಕ್ಟಿಮ್ನೆಟೆಸೊ" + "ಟೆರೆನೋಟೇಟಮ್ಟೈಗ್ರೆಟಿವ್ಟೊಕೆಲಾವ್ಕ್ಲಿಂಗನ್ಟ್ಲಿಂಗಿಟ್ಟಮಾಷೆಕ್ನ್ಯಾಸಾ ಟೋಂಗಾಟೋಕ್ " + "ಪಿಸಿನ್ಟರೊಕೊಸಿಂಶಿಯನ್ತುಂಬುಕಾಟುವಾಲುಟಸವಕ್ಟುವಿನಿಯನ್ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್ಉಡ್" + - "\u200cಮುರ್ಟ್ಉಗಾರಿಟಿಕ್ಉಂಬುಂಡುರೂಟ್ವಾಯಿವೋಟಿಕ್ವುಂಜೊವಾಲ್ಸರ್ವಲಾಯ್ತಾವರಾಯ್ವಾಷೋವಾ" + - "ರ್ಲ್\u200cಪಿರಿವುಕಲ್ಮೈಕ್ಸೊಗಯಾವೊಯಪೀಸೆಯಾಂಗ್ಬೆನ್ಯೆಂಬಾಕ್ಯಾಂಟನೀಸ್ಝೋಪೊಟೆಕ್ಬ್ಲ" + - "ಿಸ್ಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿ" + - "ಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರಮಾಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ಆಸ್" + - "ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್" + - "ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಕೆ" + - "ನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್ ಫ್ರೆಂಚ್ಲೋ ಸ್ಯಾಕ್ಸನ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ" + - "್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮಾಲ್ಡೇವಿಯನ್ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಕಾಂಗೊ ಸ್ವಹಿಲಿಸರಳೀಕೃತ " + - "ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್" + "\u200cಮುರ್ಟ್ಉಗಾರಿಟಿಕ್ಉಂಬುಂಡುಅಪರಿಚಿತ ಭಾಷೆವಾಯಿವೋಟಿಕ್ವುಂಜೊವಾಲ್ಸರ್ವಲಾಯ್ತಾವರಾ" + + "ಯ್ವಾಷೋವಾರ್ಲ್\u200cಪಿರಿವುಕಲ್ಮೈಕ್ಸೊಗಯಾವೊಯಪೀಸೆಯಾಂಗ್ಬೆನ್ಯೆಂಬಾಕ್ಯಾಂಟನೀಸ್ಝೋಪ" + + "ೊಟೆಕ್ಬ್ಲಿಸ್ಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸ" + + "ಂಬಂಧಿ ವಿಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರಮಾಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜ" + + "ರ್ಮನ್ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್ಅಮೆರಿಕನ್ " + + "ಇಂಗ್ಲೀಷ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್" + + "ಯಾನಿಷ್ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್ ಫ್ರೆಂಚ್ಲೋ ಸ್ಯಾಕ್ಸನ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪ" + + "ೋರ್ಚುಗೀಸ್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮಾಲ್ಡೇವಿಯನ್ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಕಾಂಗೊ ಸ್ವಹಿಲಿ" + + "ಸರಳೀಕೃತ ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್" var knLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -20514,18 +20519,18 @@ var knLangIdx = []uint16{ // 613 elements 0x27a5, 0x27a5, 0x27a5, 0x27b7, 0x27c3, 0x27d5, 0x27e4, 0x27f6, 0x2802, 0x281a, 0x281a, 0x2832, 0x284d, 0x284d, 0x2862, 0x2884, 0x28a3, 0x28a3, 0x28b2, 0x28b2, 0x28ca, 0x28ca, 0x28df, 0x28f1, - 0x2900, 0x291b, 0x2950, 0x296e, 0x2989, 0x299e, 0x29aa, 0x29b6, - 0x29b6, 0x29b6, 0x29b6, 0x29b6, 0x29c8, 0x29c8, 0x29d7, 0x29ec, - 0x2a01, 0x2a10, 0x2a1c, 0x2a3d, 0x2a43, 0x2a58, 0x2a58, 0x2a61, + 0x2900, 0x291b, 0x2950, 0x296e, 0x2989, 0x299e, 0x29c0, 0x29cc, + 0x29cc, 0x29cc, 0x29cc, 0x29cc, 0x29de, 0x29de, 0x29ed, 0x2a02, + 0x2a17, 0x2a26, 0x2a32, 0x2a53, 0x2a59, 0x2a6e, 0x2a6e, 0x2a77, // Entry 240 - 27F - 0x2a6d, 0x2a7c, 0x2a97, 0x2aa6, 0x2aa6, 0x2ac4, 0x2adc, 0x2b06, - 0x2b06, 0x2b18, 0x2b6b, 0x2b77, 0x2bc4, 0x2bd0, 0x2c11, 0x2c11, - 0x2c42, 0x2c6e, 0x2cab, 0x2cdf, 0x2d10, 0x2d41, 0x2d91, 0x2dcb, - 0x2e05, 0x2e05, 0x2e36, 0x2e5e, 0x2e80, 0x2e98, 0x2ed8, 0x2f12, - 0x2f33, 0x2f64, 0x2f89, 0x2fb1, 0x2fe5, + 0x2a83, 0x2a92, 0x2aad, 0x2abc, 0x2abc, 0x2ada, 0x2af2, 0x2b1c, + 0x2b1c, 0x2b2e, 0x2b81, 0x2b8d, 0x2bda, 0x2be6, 0x2c27, 0x2c27, + 0x2c58, 0x2c84, 0x2cc1, 0x2cf5, 0x2d26, 0x2d57, 0x2da7, 0x2de1, + 0x2e1b, 0x2e1b, 0x2e4c, 0x2e74, 0x2e96, 0x2eae, 0x2eee, 0x2f28, + 0x2f49, 0x2f7a, 0x2f9f, 0x2fc7, 0x2ffb, } // Size: 1250 bytes -const koLangStr string = "" + // Size: 7030 bytes +const koLangStr string = "" + // Size: 7045 bytes "아파르어압카즈어아베스타어아프리칸스어아칸어암하라어아라곤어아랍어아삼어아바릭어아이마라어아제르바이잔어바슈키르어벨라루스어불가리아어비슬라마어" + "밤바라어벵골어티베트어브르타뉴어보스니아어카탈로니아어체첸어차모로어코르시카어크리어체코어교회 슬라브어추바시어웨일스어덴마크어독일어디베히" + "어종카어에웨어그리스어영어에스페란토어스페인어에스토니아어바스크어페르시아어풀라어핀란드어피지어페로어프랑스어서부 프리지아어아일랜드어스코" + @@ -20558,9 +20563,9 @@ const koLangStr string = "" + // Size: 7030 bytes "니어고대 아일랜드어타셸히트어샨어차디언 아라비아어시다모어남부 사미어룰레 사미어이나리 사미어스콜트 사미어소닌케어소그디엔어스라난 통" + "가어세레르어사호어수쿠마어수수어수메르어코모로어고전 시리아어시리아어팀니어테조어테레노어테툼어티그레어티브어토켈라우제도어차후르어클링온어" + "틀링깃족어탈리쉬어타마섹어니아사 통가어토크 피신어타로코어트심시안어툼부카어투발루어타사와크어투비니안어중앙 모로코 타마지트어우드말트어" + - "유가리틱어움분두어어근바이어보틱어분조어월저어월라이타어와라이어와쇼어왈피리어우어칼미크어소가어야오족어얍페세어양본어옘바어광둥어사포테크어" + - "블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고지 독일어(스위스)영어(호주)저지 색슨" + - "어플라망어몰도바어세르비아-크로아티아어콩고 스와힐리어" + "유가리틱어움분두어알 수 없는 언어바이어보틱어분조어월저어월라이타어와라이어와쇼어왈피리어우어칼미크어소가어야오족어얍페세어양본어옘바어광" + + "둥어사포테크어블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고지 독일어(스위스)영어(호" + + "주)저지 색슨어플라망어몰도바어세르비아-크로아티아어콩고 스와힐리어" var koLangIdx = []uint16{ // 611 elements // Entry 0 - 3F @@ -20641,18 +20646,18 @@ var koLangIdx = []uint16{ // 611 elements 0x186b, 0x186b, 0x186b, 0x1874, 0x187d, 0x1889, 0x1892, 0x189e, 0x18a7, 0x18bc, 0x18c8, 0x18d4, 0x18e3, 0x18ef, 0x18fb, 0x190e, 0x191e, 0x191e, 0x192a, 0x192a, 0x1939, 0x1939, 0x1945, 0x1951, - 0x1960, 0x196f, 0x198f, 0x199e, 0x19ad, 0x19b9, 0x19bf, 0x19c8, - 0x19c8, 0x19c8, 0x19c8, 0x19c8, 0x19d1, 0x19d1, 0x19da, 0x19e3, - 0x19f2, 0x19fe, 0x1a07, 0x1a13, 0x1a19, 0x1a25, 0x1a25, 0x1a2e, + 0x1960, 0x196f, 0x198f, 0x199e, 0x19ad, 0x19b9, 0x19ce, 0x19d7, + 0x19d7, 0x19d7, 0x19d7, 0x19d7, 0x19e0, 0x19e0, 0x19e9, 0x19f2, + 0x1a01, 0x1a0d, 0x1a16, 0x1a22, 0x1a28, 0x1a34, 0x1a34, 0x1a3d, // Entry 240 - 27F - 0x1a3a, 0x1a46, 0x1a4f, 0x1a58, 0x1a58, 0x1a61, 0x1a70, 0x1a80, - 0x1a80, 0x1a8c, 0x1aac, 0x1ab5, 0x1ad0, 0x1ad9, 0x1af0, 0x1af0, - 0x1af0, 0x1b0b, 0x1b19, 0x1b19, 0x1b19, 0x1b19, 0x1b19, 0x1b19, - 0x1b19, 0x1b19, 0x1b19, 0x1b19, 0x1b29, 0x1b35, 0x1b35, 0x1b35, - 0x1b41, 0x1b60, 0x1b76, + 0x1a49, 0x1a55, 0x1a5e, 0x1a67, 0x1a67, 0x1a70, 0x1a7f, 0x1a8f, + 0x1a8f, 0x1a9b, 0x1abb, 0x1ac4, 0x1adf, 0x1ae8, 0x1aff, 0x1aff, + 0x1aff, 0x1b1a, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, + 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b38, 0x1b44, 0x1b44, 0x1b44, + 0x1b50, 0x1b6f, 0x1b85, } // Size: 1246 bytes -const kyLangStr string = "" + // Size: 6711 bytes +const kyLangStr string = "" + // Size: 6728 bytes "афарчаабхазчаафрикаанчааканчаамхарчаарагончоарабчаассамчааварикчеаймарач" + "аазербайжанчабашкырчабеларусчаболгарчабисламачабамбарачабангладешчетибе" + "тчебретончобоснийчекаталанчачеченчечаморрочокорсиканчачехчечиркөө славя" + @@ -20695,12 +20700,12 @@ const kyLangStr string = "" + // Size: 6711 bytes "үштүк курдчасеначакойраборо сенничеташелитчешанчатүштүк саамичелуле-сам" + "ичеинари саамическолт саамичесонинкечесранан тонгочосахочосукумачакомор" + "чосириячатимнечетесочотетумчатигречеклингончоток-писинчетарокочотумбука" + - "чатувалучатасабакчатувинчеБорбордук Атлас тамазитчеудмуртчаумбундучатүп" + - "күвайичевунжочовалцерчевольяттачаварайчаворлпиричеwuuкалмыкчасогачаянгб" + - "енчейембачакантончомарокко тамазигт адабий тилиндезуничетилдик мазмун ж" + - "окзазачаазыркы адабий араб тилиндеадабий немисче (Швейцария)испанча (Ев" + - "ропа)төмөнкү саксончофламандчапортугалча (Европа)молдованчасерб-хорватк" + - "онго суахаличекытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)" + "чатувалучатасабакчатувинчеБорбордук Атлас тамазитчеудмуртчаумбундучабел" + + "гисиз тилдевайичевунжочовалцерчевольяттачаварайчаворлпиричеwuuкалмыкчас" + + "огачаянгбенчейембачакантончомарокко тамазигт адабий тилиндезуничетилдик" + + " мазмун жокзазачаазыркы адабий араб тилиндеадабий немисче (Швейцария)исп" + + "анча (Европа)төмөнкү саксончофламандчапортугалча (Европа)молдованчасерб" + + "-хорватконго суахаличекытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)" var kyLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -20781,18 +20786,18 @@ var kyLangIdx = []uint16{ // 613 elements 0x16a0, 0x16a0, 0x16a0, 0x16ae, 0x16ba, 0x16ba, 0x16c8, 0x16d6, 0x16d6, 0x16d6, 0x16d6, 0x16e8, 0x16e8, 0x16e8, 0x16e8, 0x16e8, 0x16fd, 0x16fd, 0x170d, 0x170d, 0x170d, 0x170d, 0x171f, 0x172f, - 0x1741, 0x174f, 0x177f, 0x178f, 0x178f, 0x17a1, 0x17ab, 0x17b7, - 0x17b7, 0x17b7, 0x17b7, 0x17b7, 0x17b7, 0x17b7, 0x17c5, 0x17d5, - 0x17e9, 0x17f7, 0x17f7, 0x180b, 0x180e, 0x181e, 0x181e, 0x182a, + 0x1741, 0x174f, 0x177f, 0x178f, 0x178f, 0x17a1, 0x17bc, 0x17c8, + 0x17c8, 0x17c8, 0x17c8, 0x17c8, 0x17c8, 0x17c8, 0x17d6, 0x17e6, + 0x17fa, 0x1808, 0x1808, 0x181c, 0x181f, 0x182f, 0x182f, 0x183b, // Entry 240 - 27F - 0x182a, 0x182a, 0x183a, 0x1848, 0x1848, 0x1858, 0x1858, 0x1858, - 0x1858, 0x1858, 0x1893, 0x189f, 0x18bf, 0x18cb, 0x18fc, 0x18fc, - 0x18fc, 0x192c, 0x192c, 0x192c, 0x192c, 0x192c, 0x192c, 0x1949, - 0x1949, 0x1949, 0x1949, 0x1949, 0x1968, 0x197a, 0x197a, 0x199d, - 0x19b1, 0x19c6, 0x19e3, 0x1a18, 0x1a37, + 0x183b, 0x183b, 0x184b, 0x1859, 0x1859, 0x1869, 0x1869, 0x1869, + 0x1869, 0x1869, 0x18a4, 0x18b0, 0x18d0, 0x18dc, 0x190d, 0x190d, + 0x190d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x193d, 0x195a, + 0x195a, 0x195a, 0x195a, 0x195a, 0x1979, 0x198b, 0x198b, 0x19ae, + 0x19c2, 0x19d7, 0x19f4, 0x1a29, 0x1a48, } // Size: 1250 bytes -const loLangStr string = "" + // Size: 10855 bytes +const loLangStr string = "" + // Size: 10894 bytes "ອະຟາແອບຄາຊຽນອາເວັສແຕນອາຟຣິການອາການອຳຮາຣິກອາຣາໂກເນັດອາຣັບອັສຊາມີສອາວາຣິກອ" + "າຍມາລາອາເຊີໄບຈານິບາຣກີເບລາຣັສຊຽນບັງກາຣຽນບິສລະມາບາມບາຣາເບັງກາລີທິເບທັນເ" + "ບຣຕັນບອສນຽນຄາຕາລານຊີເຄນຊາມໍໂຣຄໍຊິກາຄີເຊກໂບດສລາວິກຊູວາຊເວວແດນິຊເຢຍລະມັນ" + @@ -20838,14 +20843,14 @@ const loLangStr string = "" + // Size: 10855 bytes "າດຊິດາໂມຊາມິໃຕ້ລຸນຊາມິອີນາຣິຊາມິສກອດຊາມິໂຊນິນກີຊອກດິນສຣານນານຕອນໂກເຊເລີ" + "ຊາໂຮຊູຄູມ້າຊູຊູຊູເມີເລຍໂຄໂນຣຽນຊີເລຍແບບດັ້ງເດີມຊີເລຍທີມເນເຕໂຊເຕເລໂນເຕຕູ" + "ມໄທກຣີຕີວໂຕເກເລົາຄຣິງກອນທລີງກິດທາມາກເຊກນາຍອາຊາຕອງກາທອກພີຊິນຕາໂລໂກຊີມຊີ" + - "ແອນຕຳບູກາຕູວາລູຕາຊາວັກຕູວີນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູລູດ" + - "ໄວໂວຕິກວັນໂຈວາເຊີວາລາໂມວາເລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແຍງເບນແຢມບາກວາ" + - "ງຕຸ້ງຊາໂປແຕບສັນຍາລັກບລີຊິມເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖານຊູນີບໍ່ມີເນື" + - "້ອຫາພາສາຊາຊາອາຣາບິກມາດຕະຖານສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ ໄຮ ເຈີແມນອັງ" + - "ກິດ (ໂອດສະຕາລີ)ອັງກິດ (ບຣິດທິຊ)ອັງກິດ (ອາເມລິກັນ)ລາຕິນ ອາເມຣິກັນ ສະແປນ" + - "ນິຊສະເປັນ ຢຸໂຣບເມັກຊິກັນ ສະແປນນິຊຟລັງ(ການາດາ)ຊາຊອນ ຕອນໄຕຟລີມິຊປອກຕຸຍກິ" + - "ສ ບະເລຊີ່ນປອກຕຸຍກິສ ຢຸໂຣບໂມດາວຽນເຊີໂບ-ໂກເຊຍຄອງໂກ ຊວາຮີລິຈີນແບບຮຽບງ່າຍຈ" + - "ີນແບບດັ້ງເດີມ" + "ແອນຕຳບູກາຕູວາລູຕາຊາວັກຕູວີນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູບໍ່" + + "ສາມາດລະບຸພາສາໄວໂວຕິກວັນໂຈວາເຊີວາລາໂມວາເລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແ" + + "ຍງເບນແຢມບາກວາງຕຸ້ງຊາໂປແຕບສັນຍາລັກບລີຊິມເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖາ" + + "ນຊູນີບໍ່ມີເນື້ອຫາພາສາຊາຊາອາຣາບິກມາດຕະຖານສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ" + + " ໄຮ ເຈີແມນອັງກິດ (ໂອດສະຕາລີ)ອັງກິດ (ບຣິດທິຊ)ອັງກິດ (ອາເມລິກັນ)ລາຕິນ ອາເມ" + + "ຣິກັນ ສະແປນນິຊສະເປັນ ຢຸໂຣບເມັກຊິກັນ ສະແປນນິຊຟລັງ(ການາດາ)ຊາຊອນ ຕອນໄຕຟລີ" + + "ມິຊປອກຕຸຍກິສ ບະເລຊີ່ນປອກຕຸຍກິສ ຢຸໂຣບໂມດາວຽນເຊີໂບ-ໂກເຊຍຄອງໂກ ຊວາຮີລິຈີນ" + + "ແບບຮຽບງ່າຍຈີນແບບດັ້ງເດີມ" var loLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -20926,18 +20931,18 @@ var loLangIdx = []uint16{ // 613 elements 0x23b1, 0x23b1, 0x23b1, 0x23c0, 0x23cc, 0x23de, 0x23ed, 0x23fc, 0x2405, 0x241d, 0x241d, 0x2432, 0x2447, 0x2447, 0x245f, 0x2483, 0x249b, 0x249b, 0x24ad, 0x24ad, 0x24c5, 0x24c5, 0x24d7, 0x24e9, - 0x24fe, 0x2513, 0x2545, 0x2557, 0x256c, 0x2581, 0x258a, 0x2590, - 0x2590, 0x2590, 0x2590, 0x2590, 0x259f, 0x259f, 0x25ae, 0x25bd, - 0x25cf, 0x25db, 0x25e7, 0x25fc, 0x25fc, 0x260e, 0x260e, 0x261a, + 0x24fe, 0x2513, 0x2545, 0x2557, 0x256c, 0x2581, 0x25b1, 0x25b7, + 0x25b7, 0x25b7, 0x25b7, 0x25b7, 0x25c6, 0x25c6, 0x25d5, 0x25e4, + 0x25f6, 0x2602, 0x260e, 0x2623, 0x2623, 0x2635, 0x2635, 0x2641, // Entry 240 - 27F - 0x2629, 0x2632, 0x2644, 0x2653, 0x2653, 0x266b, 0x2680, 0x26aa, - 0x26aa, 0x26bc, 0x2706, 0x2712, 0x2742, 0x274e, 0x2790, 0x2790, - 0x27c0, 0x27e9, 0x2819, 0x2819, 0x2843, 0x2873, 0x28b7, 0x28d9, - 0x290d, 0x290d, 0x292d, 0x292d, 0x294c, 0x295e, 0x2992, 0x29bd, - 0x29d2, 0x29f1, 0x2a16, 0x2a3d, 0x2a67, + 0x2650, 0x2659, 0x266b, 0x267a, 0x267a, 0x2692, 0x26a7, 0x26d1, + 0x26d1, 0x26e3, 0x272d, 0x2739, 0x2769, 0x2775, 0x27b7, 0x27b7, + 0x27e7, 0x2810, 0x2840, 0x2840, 0x286a, 0x289a, 0x28de, 0x2900, + 0x2934, 0x2934, 0x2954, 0x2954, 0x2973, 0x2985, 0x29b9, 0x29e4, + 0x29f9, 0x2a18, 0x2a3d, 0x2a64, 0x2a8e, } // Size: 1250 bytes -const ltLangStr string = "" + // Size: 5947 bytes +const ltLangStr string = "" + // Size: 5958 bytes "afarųabchazųavestųafrikanųakanųamharųaragonesųarabųasamųavarikųaimarųaze" + "rbaidžaniečiųbaškirųbaltarusiųbulgarųbislamabambarųbengalųtibetiečiųbret" + "onųbosniųkatalonųčečėnųčamorųkorsikiečiųkryčekųbažnytinė slavųčiuvašųval" + @@ -21002,16 +21007,16 @@ const ltLangStr string = "" + // Size: 5947 bytes "sileziečiųtulųtimnetesoTerenotetumtigretivTokelautsakurųklingonųtlingitų" + "talyšųtamašekniasa tongųPapua pidžinųturoyoTarokotsakonųtsimšianmusulmon" + "ų tatųtumbukųTuvalutasavakųtuviųCentrinio Maroko tamazitųudmurtųugaritų" + - "umbundurūtvaivenetųvepsųvakarų flamandųpagrindinė frankonųVotikveruvunjo" + - "valserųvalamovaraiVašovalrpirikinų kalbos vu tarmėkalmukųmegrelųsogųjaoj" + - "apezųjangbenųjembųnjengatukinų kalbos Kantono tarmėzapotekųBLISS simboli" + - "ųzelandųzenagastandartinė Maroko tamazigtųZuninėra kalbinio turiniozaza" + - "šiuolaikinė standartinė arabųAustrijos vokiečiųŠveicarijos aukštutinė v" + - "okiečiųAustralijos anglųKanados anglųDidžiosios Britanijos anglųJungtini" + - "ų Valstijų anglųLotynų Amerikos ispanųEuropos ispanųMeksikos ispanųKana" + - "dos prancūzųŠveicarijos prancūzųŽemutinės Saksonijos (Nyderlandai)flaman" + - "dųBrazilijos portugalųEuropos portugalųmoldavųserbų-kroatųKongo suahilių" + - "supaprastintoji kinųtradicinė kinų" + "umbundunežinoma kalbavaivenetųvepsųvakarų flamandųpagrindinė frankonųVot" + + "ikveruvunjovalserųvalamovaraiVašovalrpirikinų kalbos vu tarmėkalmukųmegr" + + "elųsogųjaojapezųjangbenųjembųnjengatukinų kalbos Kantono tarmėzapotekųBL" + + "ISS simboliųzelandųzenagastandartinė Maroko tamazigtųZuninėra kalbinio t" + + "uriniozazašiuolaikinė standartinė arabųAustrijos vokiečiųŠveicarijos auk" + + "štutinė vokiečiųAustralijos anglųKanados anglųDidžiosios Britanijos ang" + + "lųJungtinių Valstijų anglųLotynų Amerikos ispanųEuropos ispanųMeksikos i" + + "spanųKanados prancūzųŠveicarijos prancūzųŽemutinės Saksonijos (Nyderland" + + "ai)flamandųBrazilijos portugalųEuropos portugalųmoldavųserbų-kroatųKongo" + + " suahiliųsupaprastintoji kinųtradicinė kinų" var ltLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -21092,18 +21097,18 @@ var ltLangIdx = []uint16{ // 613 elements 0x1367, 0x1373, 0x1378, 0x137d, 0x1381, 0x1387, 0x138c, 0x1391, 0x1394, 0x139b, 0x13a3, 0x13ac, 0x13b5, 0x13bd, 0x13c5, 0x13d1, 0x13e0, 0x13e6, 0x13ec, 0x13f4, 0x13fd, 0x140d, 0x1415, 0x141b, - 0x1424, 0x142a, 0x1444, 0x144c, 0x1454, 0x145b, 0x145f, 0x1462, - 0x1469, 0x146f, 0x1480, 0x1495, 0x149a, 0x149e, 0x14a3, 0x14ab, - 0x14b1, 0x14b6, 0x14bb, 0x14c3, 0x14d9, 0x14e1, 0x14e9, 0x14ee, + 0x1424, 0x142a, 0x1444, 0x144c, 0x1454, 0x145b, 0x146a, 0x146d, + 0x1474, 0x147a, 0x148b, 0x14a0, 0x14a5, 0x14a9, 0x14ae, 0x14b6, + 0x14bc, 0x14c1, 0x14c6, 0x14ce, 0x14e4, 0x14ec, 0x14f4, 0x14f9, // Entry 240 - 27F - 0x14f1, 0x14f8, 0x1501, 0x1507, 0x150f, 0x152a, 0x1533, 0x1542, - 0x154a, 0x1550, 0x156e, 0x1572, 0x1588, 0x158c, 0x15ad, 0x15ad, - 0x15c1, 0x15e5, 0x15f7, 0x1605, 0x1622, 0x163d, 0x1655, 0x1664, - 0x1674, 0x1674, 0x1686, 0x169d, 0x16c1, 0x16ca, 0x16df, 0x16f1, - 0x16f9, 0x1707, 0x1716, 0x172b, 0x173b, + 0x14fc, 0x1503, 0x150c, 0x1512, 0x151a, 0x1535, 0x153e, 0x154d, + 0x1555, 0x155b, 0x1579, 0x157d, 0x1593, 0x1597, 0x15b8, 0x15b8, + 0x15cc, 0x15f0, 0x1602, 0x1610, 0x162d, 0x1648, 0x1660, 0x166f, + 0x167f, 0x167f, 0x1691, 0x16a8, 0x16cc, 0x16d5, 0x16ea, 0x16fc, + 0x1704, 0x1712, 0x1721, 0x1736, 0x1746, } // Size: 1250 bytes -const lvLangStr string = "" + // Size: 4355 bytes +const lvLangStr string = "" + // Size: 4366 bytes "afāruabhāzuavestaafrikanduakanuamharuaragoniešuarābuasamiešuavāruaimarua" + "zerbaidžāņubaškīrubaltkrievubulgārubišlamābambarubengāļutibetiešubretoņu" + "bosniešukatalāņučečenučamorrukorsikāņukrīčehubaznīcslāvučuvašuvelsiešudā" + @@ -21152,14 +21157,14 @@ const lvLangStr string = "" + // Size: 4355 bytes "mususušumerukomoruklasiskā sīriešusīriešutemnutesoterenotetumutigrutivut" + "okelaviešuklingoņutlinkitutuareguNjasas tongutokpisinstarokocimšiāņutumb" + "ukutuvaliešutasavakutuviešuCentrālmarokas tamazītsudmurtuugaritiešuumbun" + - "dusaknevajuvotuvundžoVallisas vācuvalamuvarajuvašovarlpirīkalmikusogujao" + - "japiešujanbaņujembukantoniešusapotekublissimbolikazenagustandarta marokā" + - "ņu berberuzunjubez lingvistiska saturazazakimūsdienu standarta arābudie" + - "nvidazerbaidžāņuAustrijas vācuŠveices augšvācuAustrālijas angļuKanādas a" + - "ngļuLielbritānijas angļuASV angļuLatīņamerikas spāņuEiropas spāņuMeksika" + - "s spāņuKanādas frančuŠveices frančulejassakšuflāmuBrazīlijas portugāļuEi" + - "ropas portugāļumoldāvuserbu–horvātuKongo svahiliķīniešu vienkāršotāķīnie" + - "šu tradicionālā" + "dunezināma valodavajuvotuvundžoVallisas vācuvalamuvarajuvašovarlpirīkalm" + + "ikusogujaojapiešujanbaņujembukantoniešusapotekublissimbolikazenagustanda" + + "rta marokāņu berberuzunjubez lingvistiska saturazazakimūsdienu standarta" + + " arābudienvidazerbaidžāņuAustrijas vācuŠveices augšvācuAustrālijas angļu" + + "Kanādas angļuLielbritānijas angļuASV angļuLatīņamerikas spāņuEiropas spā" + + "ņuMeksikas spāņuKanādas frančuŠveices frančulejassakšuflāmuBrazīlijas p" + + "ortugāļuEiropas portugāļumoldāvuserbu–horvātuKongo svahiliķīniešu vienkā" + + "ršotāķīniešu tradicionālā" var lvLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -21240,18 +21245,18 @@ var lvLangIdx = []uint16{ // 613 elements 0x0e09, 0x0e09, 0x0e09, 0x0e0e, 0x0e12, 0x0e18, 0x0e1e, 0x0e23, 0x0e27, 0x0e33, 0x0e33, 0x0e3c, 0x0e44, 0x0e44, 0x0e4b, 0x0e57, 0x0e60, 0x0e60, 0x0e66, 0x0e66, 0x0e71, 0x0e71, 0x0e78, 0x0e82, - 0x0e8a, 0x0e92, 0x0eab, 0x0eb2, 0x0ebd, 0x0ec4, 0x0ec9, 0x0ecd, - 0x0ecd, 0x0ecd, 0x0ecd, 0x0ecd, 0x0ed1, 0x0ed1, 0x0ed8, 0x0ee6, - 0x0eec, 0x0ef2, 0x0ef7, 0x0f00, 0x0f00, 0x0f07, 0x0f07, 0x0f0b, + 0x0e8a, 0x0e92, 0x0eab, 0x0eb2, 0x0ebd, 0x0ec4, 0x0ed4, 0x0ed8, + 0x0ed8, 0x0ed8, 0x0ed8, 0x0ed8, 0x0edc, 0x0edc, 0x0ee3, 0x0ef1, + 0x0ef7, 0x0efd, 0x0f02, 0x0f0b, 0x0f0b, 0x0f12, 0x0f12, 0x0f16, // Entry 240 - 27F - 0x0f0e, 0x0f16, 0x0f1e, 0x0f23, 0x0f23, 0x0f2e, 0x0f36, 0x0f43, - 0x0f43, 0x0f49, 0x0f65, 0x0f6a, 0x0f81, 0x0f87, 0x0fa1, 0x0fb7, - 0x0fc6, 0x0fd9, 0x0fec, 0x0ffb, 0x1011, 0x101b, 0x1032, 0x1041, - 0x1051, 0x1051, 0x1061, 0x1071, 0x107c, 0x1082, 0x1099, 0x10ac, - 0x10b4, 0x10c4, 0x10d1, 0x10ea, 0x1103, + 0x0f19, 0x0f21, 0x0f29, 0x0f2e, 0x0f2e, 0x0f39, 0x0f41, 0x0f4e, + 0x0f4e, 0x0f54, 0x0f70, 0x0f75, 0x0f8c, 0x0f92, 0x0fac, 0x0fc2, + 0x0fd1, 0x0fe4, 0x0ff7, 0x1006, 0x101c, 0x1026, 0x103d, 0x104c, + 0x105c, 0x105c, 0x106c, 0x107c, 0x1087, 0x108d, 0x10a4, 0x10b7, + 0x10bf, 0x10cf, 0x10dc, 0x10f5, 0x110e, } // Size: 1250 bytes -const mkLangStr string = "" + // Size: 10280 bytes +const mkLangStr string = "" + // Size: 10297 bytes "афарскиапхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" + "арскиајмарскиазербејџанскибашкирскибелорускибугарскибисламабамбарабенга" + "лскитибетскибретонскибосанскикаталонскичеченскичаморскикорзиканскикриче" + @@ -21317,14 +21322,15 @@ const mkLangStr string = "" + // Size: 10280 bytes "ен сирискисирискишлезискитулутимнетесотеренотетумтигретивтокелауанскица" + "хурскиклингонскитлингитталишкитамашекњаса тонгаток писинтуројотарокоцак" + "онскицимшијанскитатскитумбукатувалуанскитазавактуванскицентралноатланск" + - "и тамазитскиудмуртскиугаритскиумбундукоренвајвенетскивепшкизападнофлама" + - "нскимајнскофранконскивотскивирувунџовалсерволамоварајскивашоварлпиривук" + - "алмичкимегрелскисогајаојапскијенгбенјембањенгатукантонскизапотечкиблисс" + - "имболизеландскизенагастандарден марокански тамазитскизунибез лингвистич" + - "ка содржиназазалитературен арапскиавстралиски англискиканадски англиски" + - "британски англискиамерикански англискишпански (во Европа)канадски франц" + - "ускишвајцарски францускифламанскипортугалски (во Европа)молдавскисрпско" + - "хрватскиконгоански свахилипоедноставен кинескитрадиционален кинески" + "и тамазитскиудмуртскиугаритскиумбундунепознат јазиквајвенетскивепшкизап" + + "аднофламанскимајнскофранконскивотскивирувунџовалсерволамоварајскивашова" + + "рлпиривукалмичкимегрелскисогајаојапскијенгбенјембањенгатукантонскизапот" + + "ечкиблиссимболизеландскизенагастандарден марокански тамазитскизунибез л" + + "ингвистичка содржиназазалитературен арапскиавстралиски англискиканадски" + + " англискибритански англискиамерикански англискишпански (во Европа)канадс" + + "ки францускишвајцарски францускифламанскипортугалски (во Европа)молдавс" + + "кисрпскохрватскиконгоански свахилипоедноставен кинескитрадиционален кин" + + "ески" var mkLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -21405,18 +21411,18 @@ var mkLangIdx = []uint16{ // 613 elements 0x2251, 0x2261, 0x2269, 0x2273, 0x227b, 0x2287, 0x2291, 0x229b, 0x22a1, 0x22b9, 0x22c9, 0x22dd, 0x22eb, 0x22f9, 0x2307, 0x231a, 0x232b, 0x2337, 0x2343, 0x2353, 0x2369, 0x2375, 0x2383, 0x2399, - 0x23a7, 0x23b7, 0x23ee, 0x2400, 0x2412, 0x2420, 0x242a, 0x2430, - 0x2440, 0x244c, 0x246c, 0x248e, 0x249a, 0x24a2, 0x24ac, 0x24b8, - 0x24c4, 0x24d4, 0x24dc, 0x24ec, 0x24f0, 0x2500, 0x2512, 0x251a, + 0x23a7, 0x23b7, 0x23ee, 0x2400, 0x2412, 0x2420, 0x243b, 0x2441, + 0x2451, 0x245d, 0x247d, 0x249f, 0x24ab, 0x24b3, 0x24bd, 0x24c9, + 0x24d5, 0x24e5, 0x24ed, 0x24fd, 0x2501, 0x2511, 0x2523, 0x252b, // Entry 240 - 27F - 0x2520, 0x252c, 0x253a, 0x2544, 0x2552, 0x2564, 0x2576, 0x258c, - 0x259e, 0x25aa, 0x25e8, 0x25f0, 0x2620, 0x2628, 0x264d, 0x264d, - 0x264d, 0x264d, 0x2674, 0x2695, 0x26b8, 0x26df, 0x26df, 0x2701, - 0x2701, 0x2701, 0x2724, 0x274b, 0x274b, 0x275d, 0x275d, 0x2787, - 0x2799, 0x27b5, 0x27d8, 0x27ff, 0x2828, + 0x2531, 0x253d, 0x254b, 0x2555, 0x2563, 0x2575, 0x2587, 0x259d, + 0x25af, 0x25bb, 0x25f9, 0x2601, 0x2631, 0x2639, 0x265e, 0x265e, + 0x265e, 0x265e, 0x2685, 0x26a6, 0x26c9, 0x26f0, 0x26f0, 0x2712, + 0x2712, 0x2712, 0x2735, 0x275c, 0x275c, 0x276e, 0x276e, 0x2798, + 0x27aa, 0x27c6, 0x27e9, 0x2810, 0x2839, } // Size: 1250 bytes -const mlLangStr string = "" + // Size: 12319 bytes +const mlLangStr string = "" + // Size: 12329 bytes "അഫാർഅബ്\u200cഖാസിയൻഅവസ്റ്റാൻആഫ്രിക്കാൻസ്അകാൻ\u200cഅംഹാരിക്അരഗോണീസ്അറബിക്" + "ആസ്സാമീസ്അവാരിക്അയ്മാറഅസർബൈജാനിബഷ്ഖിർബെലാറുഷ്യൻബൾഗേറിയൻബിസ്\u200cലാമബം" + "ബാറബംഗാളിടിബറ്റൻബ്രെട്ടൺബോസ്നിയൻകറ്റാലാൻചെചൻചമോറോകോർസിക്കൻക്രീചെക്ക്ചർ" + @@ -21470,12 +21476,12 @@ const mlLangStr string = "" + // Size: 12319 bytes "െറർസാഹോസുകുമസുസുസുമേരിയൻകൊമോറിയൻപുരാതന സുറിയാനിഭാഷസുറിയാനിടിംനേടെസോടെറ" + "േനോടെറ്റുംടൈഗ്രിടിവ്ടൊക്കേലൗക്ലിംഗോൺലിംഗ്വിറ്റ്ടമഷേക്ന്യാസാ ഡോങ്കടോക് " + "പിസിൻതരോക്കോസിംഷ്യൻടുംബുകടുവാലുടസവാക്ക്തുവിനിയൻമധ്യ അറ്റ്\u200cലസ് ടമാ" + - "സൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്ദുമൂലഭാഷവൈവോട്ടിക്വുൻജോവാൾസർവൊലൈറ്റവാര" + - "േയ്വാഷൊവൂൾപിരിവു ചൈനീസ്കൽമൈക്സോഗോയാവോയെപ്പീസ്യാംഗ്ബെൻയംബകാന്റണീസ്സാപ്പ" + - "ോടെക്ബ്ലിസ്സിംബൽസ്സെനഗസ്റ്റാൻഡേർഡ് മൊറോക്കൻ റ്റാമസിയറ്റ്സുനിഭാഷാപരമായ " + - "ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്ഓസ്\u200cട്രിയൻ ജർമൻസ" + - "്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്ലീഷ്കനേഡിയൻ ഇംഗ്ലീഷ്ബ്രിട്ടീഷ് ഇംഗ്" + - "ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരിക്കൻ സ്\u200cപാനിഷ്യൂറോപ്യൻ സ്" + + "സൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്ദുഅജ്ഞാത ഭാഷവൈവോട്ടിക്വുൻജോവാൾസർവൊലൈറ്" + + "റവാരേയ്വാഷൊവൂൾപിരിവു ചൈനീസ്കൽമൈക്സോഗോയാവോയെപ്പീസ്യാംഗ്ബെൻയംബകാന്റണീസ്സ" + + "ാപ്പോടെക്ബ്ലിസ്സിംബൽസ്സെനഗസ്റ്റാൻഡേർഡ് മൊറോക്കൻ റ്റാമസിയറ്റ്സുനിഭാഷാപര" + + "മായ ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്ഓസ്\u200cട്രിയൻ ജ" + + "ർമൻസ്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്ലീഷ്കനേഡിയൻ ഇംഗ്ലീഷ്ബ്രിട്ടീഷ് " + + "ഇംഗ്ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരിക്കൻ സ്\u200cപാനിഷ്യൂറോപ്യൻ സ്" + "\u200cപാനിഷ്മെക്സിക്കൻ സ്പാനിഷ്കനേഡിയൻ ഫ്രഞ്ച്സ്വിസ് ഫ്രഞ്ച്ലോ സാക്സൺഫ്ല" + "മിഷ്ബ്രസീലിയൻ പോർച്ചുഗീസ്യൂറോപ്യൻ പോർച്ചുഗീസ്മോൾഡാവിയൻസെർബോ-ക്രൊയേഷ്യൻ" + "കോംഗോ സ്വാഹിലിലളിതമാക്കിയ ചൈനീസ്പരമ്പരാഗത ചൈനീസ്" @@ -21559,18 +21565,18 @@ var mlLangIdx = []uint16{ // 613 elements 0x27c7, 0x27c7, 0x27c7, 0x27d6, 0x27e2, 0x27f4, 0x2809, 0x281b, 0x2827, 0x283f, 0x283f, 0x2857, 0x2878, 0x2878, 0x288a, 0x28ac, 0x28c8, 0x28c8, 0x28dd, 0x28dd, 0x28f2, 0x28f2, 0x2904, 0x2916, - 0x292e, 0x2946, 0x298a, 0x29a8, 0x29c6, 0x29de, 0x29f0, 0x29f6, - 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x2a0e, 0x2a0e, 0x2a1d, 0x2a2c, - 0x2a41, 0x2a53, 0x2a5f, 0x2a74, 0x2a8d, 0x2a9f, 0x2a9f, 0x2aab, + 0x292e, 0x2946, 0x298a, 0x29a8, 0x29c6, 0x29de, 0x29fa, 0x2a00, + 0x2a00, 0x2a00, 0x2a00, 0x2a00, 0x2a18, 0x2a18, 0x2a27, 0x2a36, + 0x2a4b, 0x2a5d, 0x2a69, 0x2a7e, 0x2a97, 0x2aa9, 0x2aa9, 0x2ab5, // Entry 240 - 27F - 0x2ab7, 0x2acf, 0x2ae7, 0x2af0, 0x2af0, 0x2b0b, 0x2b29, 0x2b50, - 0x2b50, 0x2b5c, 0x2bbe, 0x2bca, 0x2c1f, 0x2c2b, 0x2c75, 0x2c75, - 0x2ca0, 0x2cc6, 0x2d03, 0x2d31, 0x2d68, 0x2d9c, 0x2de9, 0x2e1d, - 0x2e54, 0x2e54, 0x2e7f, 0x2ea7, 0x2ec0, 0x2ed5, 0x2f12, 0x2f4c, - 0x2f67, 0x2f95, 0x2fbd, 0x2ff1, 0x301f, + 0x2ac1, 0x2ad9, 0x2af1, 0x2afa, 0x2afa, 0x2b15, 0x2b33, 0x2b5a, + 0x2b5a, 0x2b66, 0x2bc8, 0x2bd4, 0x2c29, 0x2c35, 0x2c7f, 0x2c7f, + 0x2caa, 0x2cd0, 0x2d0d, 0x2d3b, 0x2d72, 0x2da6, 0x2df3, 0x2e27, + 0x2e5e, 0x2e5e, 0x2e89, 0x2eb1, 0x2eca, 0x2edf, 0x2f1c, 0x2f56, + 0x2f71, 0x2f9f, 0x2fc7, 0x2ffb, 0x3029, } // Size: 1250 bytes -const mnLangStr string = "" + // Size: 5582 bytes +const mnLangStr string = "" + // Size: 5605 bytes "афарабхазафрикаканамхарарагонарабассамавар хэлаймараазербайжанбашкирбела" + "русьболгарбисламбамбарабенгалтөвдбретонбосникаталанчеченьчаморро хэлкор" + "сикчехсүмийн славян хэлчувашуэльсданигермандивехи хэлжонхаэвэгреканглиэ" + @@ -21605,13 +21611,13 @@ const mnLangStr string = "" + // Size: 5582 bytes "нталингамбайсангүсицилийншотландуудсенакёраборо сенитачелхитшаньөмнөд с" + "амилюле самиинари самисколт самисонинкесранан тонгосахосукумакомори хэл" + "сирийнтимнтэсотетумтигрклингон хэлток писинтарокотумбулатувалутасавакту" + - "ватөв атласын тамазайтудмуртумбундурутвайвунжоуолсэруоллайттаварайхалим" + - "аг хэлсогаянгбенембакантон хэлтамазитзунихэл зүйн агуулгагүйзазастандар" + - "т арабавстри германшвейцари дээр германавстрали англиканад англибритани" + - "йн англиамерикийн англилатин америкийн испаниевропын испанимексикийн ис" + - "паниканад францшвейцари францбага саксонфламандпортугаль (бразил)европы" + - "н португальмолдавхорватын сербконго свахилихялбаршуулсан хятадуламжлалт" + - " хятад" + "ватөв атласын тамазайтудмуртумбундутодорхойгүй хэлвайвунжоуолсэруоллайт" + + "таварайхалимаг хэлсогаянгбенембакантон хэлтамазитзунихэл зүйн агуулгагү" + + "йзазастандарт арабавстри германшвейцари дээр германавстрали англиканад " + + "англибританийн англиамерикийн англилатин америкийн испаниевропын испани" + + "мексикийн испаниканад францшвейцари францбага саксонфламандпортугаль (б" + + "разил)европын португальмолдавхорватын сербконго свахилихялбаршуулсан хя" + + "тадуламжлалт хятад" var mnLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -21692,18 +21698,18 @@ var mnLangIdx = []uint16{ // 613 elements 0x120b, 0x120b, 0x120b, 0x1213, 0x121b, 0x121b, 0x1225, 0x122d, 0x122d, 0x122d, 0x122d, 0x1242, 0x1242, 0x1242, 0x1242, 0x1242, 0x1253, 0x1253, 0x125f, 0x125f, 0x125f, 0x125f, 0x126d, 0x1279, - 0x1287, 0x128f, 0x12b5, 0x12c1, 0x12c1, 0x12cf, 0x12d5, 0x12db, - 0x12db, 0x12db, 0x12db, 0x12db, 0x12db, 0x12db, 0x12e5, 0x12f1, - 0x1303, 0x130d, 0x130d, 0x130d, 0x130d, 0x1322, 0x1322, 0x132a, + 0x1287, 0x128f, 0x12b5, 0x12c1, 0x12c1, 0x12cf, 0x12ec, 0x12f2, + 0x12f2, 0x12f2, 0x12f2, 0x12f2, 0x12f2, 0x12f2, 0x12fc, 0x1308, + 0x131a, 0x1324, 0x1324, 0x1324, 0x1324, 0x1339, 0x1339, 0x1341, // Entry 240 - 27F - 0x132a, 0x132a, 0x1336, 0x133e, 0x133e, 0x1351, 0x1351, 0x1351, - 0x1351, 0x1351, 0x135f, 0x1367, 0x138b, 0x1393, 0x13ac, 0x13ac, - 0x13c5, 0x13eb, 0x1406, 0x141b, 0x1438, 0x1455, 0x147f, 0x149a, - 0x14b9, 0x14b9, 0x14ce, 0x14e9, 0x14fe, 0x150c, 0x152d, 0x154e, - 0x155a, 0x1573, 0x158c, 0x15b1, 0x15ce, + 0x1341, 0x1341, 0x134d, 0x1355, 0x1355, 0x1368, 0x1368, 0x1368, + 0x1368, 0x1368, 0x1376, 0x137e, 0x13a2, 0x13aa, 0x13c3, 0x13c3, + 0x13dc, 0x1402, 0x141d, 0x1432, 0x144f, 0x146c, 0x1496, 0x14b1, + 0x14d0, 0x14d0, 0x14e5, 0x1500, 0x1515, 0x1523, 0x1544, 0x1565, + 0x1571, 0x158a, 0x15a3, 0x15c8, 0x15e5, } // Size: 1250 bytes -const mrLangStr string = "" + // Size: 11500 bytes +const mrLangStr string = "" + // Size: 11522 bytes "अफारअबखेजियनअवेस्तनअफ्रिकान्सअकानअम्हारिकअर्गोनीजअरबीआसामीअ\u200dॅव्हेरि" + "कऐमराअझरबैजानीबष्किरबेलारुशियनबल्गेरियनबिस्लामाबाम्बाराबंगालीतिबेटीब्र" + "ेतॉनबोस्नियनकातालानचेचेनकॅमोरोकॉर्सिकनक्रीझेकचर्च स्लाव्हिकचूवाशवेल्शड" + @@ -21752,14 +21758,14 @@ const mrLangStr string = "" + // Size: 11500 bytes "ोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसाहोसुकुमासुसुसुमेरियनकोमो" + "रियनअभिजात सिरियाकसिरियाकटिम्नेतेसोतेरेनोतेतुमटाइग्रेतिवटोकेलाऊक्लिंगो" + "नलिंगिततामाशेकन्यासा टोन्गाटोक पिसिनतारोकोसिम्शियनतुम्बुकाटुवालुतासाव्" + - "हाकटुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयुगॅरिटिकउम्बुन्डुरूटवाईवॉटिकवुंज" + - "ोवालसेरवोलायतावारेवाशोवार्लपिरीव्हू चिनीकाल्मिकसोगायाओयापीसयानगबेनयेमब" + - "ाकँटोनीजझेपोटेकब्लिसिम्बॉल्सझेनान्गाप्रमाण मोरोक्कन तॅमॅझायटझुनीभाषावै" + - "ज्ञानिक सामग्री नाहीझाझाआधुनिक प्रमाणित अरबीऑस्ट्रियन जर्मनस्विस हाय ज" + - "र्मनऑस्ट्रेलियन इंग्रजीकॅनडियन इंग्रजीब्रिटिश इंग्रजीअमेरिकन इंग्रजीलॅ" + - "टिन अमेरिकन स्पॅनिशयुरोपियन स्पॅनिशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस" + - " फ्रेंचलो सॅक्सनफ्लेमिशब्राझिलियन पोर्तुगीजयुरोपियन पोर्तुगीजमोल्डाव्हिय" + - "नसर्बो-क्रोएशियनकाँगो स्वाहिलीसरलीकृत चीनीपारंपारिक चीनी" + "हाकटुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयुगॅरिटिकउम्बुन्डुअज्ञात भाषावाईव" + + "ॉटिकवुंजोवालसेरवोलायतावारेवाशोवार्लपिरीव्हू चिनीकाल्मिकसोगायाओयापीसयान" + + "गबेनयेमबाकँटोनीजझेपोटेकब्लिसिम्बॉल्सझेनान्गाप्रमाण मोरोक्कन तॅमॅझायटझु" + + "नीभाषावैज्ञानिक सामग्री नाहीझाझाआधुनिक प्रमाणित अरबीऑस्ट्रियन जर्मनस्व" + + "िस हाय जर्मनऑस्ट्रेलियन इंग्रजीकॅनडियन इंग्रजीब्रिटिश इंग्रजीअमेरिकन इ" + + "ंग्रजीलॅटिन अमेरिकन स्पॅनिशयुरोपियन स्पॅनिशमेक्सिकन स्पॅनिशकॅनडियन फ्र" + + "ेंचस्विस फ्रेंचलो सॅक्सनफ्लेमिशब्राझिलियन पोर्तुगीजयुरोपियन पोर्तुगीजम" + + "ोल्डाव्हियनसर्बो-क्रोएशियनकाँगो स्वाहिलीसरलीकृत चीनीपारंपारिक चीनी" var mrLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -21840,18 +21846,18 @@ var mrLangIdx = []uint16{ // 613 elements 0x2565, 0x2565, 0x2565, 0x2577, 0x2583, 0x2595, 0x25a4, 0x25b9, 0x25c2, 0x25d7, 0x25d7, 0x25ef, 0x2601, 0x2601, 0x2616, 0x263b, 0x2654, 0x2654, 0x2666, 0x2666, 0x267e, 0x267e, 0x2696, 0x26a8, - 0x26c3, 0x26db, 0x2710, 0x2725, 0x2740, 0x275b, 0x2764, 0x276d, - 0x276d, 0x276d, 0x276d, 0x276d, 0x277c, 0x277c, 0x278b, 0x279d, - 0x27b2, 0x27be, 0x27ca, 0x27e5, 0x27fe, 0x2813, 0x2813, 0x281f, + 0x26c3, 0x26db, 0x2710, 0x2725, 0x2740, 0x275b, 0x277a, 0x2783, + 0x2783, 0x2783, 0x2783, 0x2783, 0x2792, 0x2792, 0x27a1, 0x27b3, + 0x27c8, 0x27d4, 0x27e0, 0x27fb, 0x2814, 0x2829, 0x2829, 0x2835, // Entry 240 - 27F - 0x2828, 0x2837, 0x284c, 0x285b, 0x285b, 0x2870, 0x2885, 0x28ac, - 0x28ac, 0x28c4, 0x2908, 0x2914, 0x295e, 0x296a, 0x29a2, 0x29a2, - 0x29cd, 0x29f6, 0x2a2d, 0x2a58, 0x2a83, 0x2aae, 0x2ae9, 0x2b17, - 0x2b45, 0x2b45, 0x2b6d, 0x2b8f, 0x2ba8, 0x2bbd, 0x2bf7, 0x2c2b, - 0x2c4f, 0x2c7a, 0x2ca2, 0x2cc4, 0x2cec, + 0x283e, 0x284d, 0x2862, 0x2871, 0x2871, 0x2886, 0x289b, 0x28c2, + 0x28c2, 0x28da, 0x291e, 0x292a, 0x2974, 0x2980, 0x29b8, 0x29b8, + 0x29e3, 0x2a0c, 0x2a43, 0x2a6e, 0x2a99, 0x2ac4, 0x2aff, 0x2b2d, + 0x2b5b, 0x2b5b, 0x2b83, 0x2ba5, 0x2bbe, 0x2bd3, 0x2c0d, 0x2c41, + 0x2c65, 0x2c90, 0x2cb8, 0x2cda, 0x2d02, } // Size: 1250 bytes -const msLangStr string = "" + // Size: 3266 bytes +const msLangStr string = "" + // Size: 3284 bytes "aaAbkhaziaAvestanAfrikaansAkanAmharicAragonArabAssamAvaricAymaraAzerbaij" + "anBashkirBelarusBulgariaBislamaBambaraBenggalaTibetBretonBosniaCatalonia" + "ChechenChamorroCorsicaCzechSlavik GerejaChuvashWalesDenmarkJermanDivehiD" + @@ -21891,13 +21897,13 @@ const msLangStr string = "" + // Size: 3266 bytes "achelhitShanArab ChadianSami SelatanLule SamiInari SamiSkolt SamiSoninke" + "Sranan TongoSahoSukumaComoriaSyriacTimneTesoTetumTigreKlingonTalyshTok P" + "isinTarokoTumbukaTuvaluTasawaqTuvinianTamazight Atlas TengahUdmurtUmbund" + - "uRootVaiVunjoWalserWolayttaWarayWarlpiriCina WuKalmykSogaYangbenYembaKan" + - "tonisTamazight Maghribi StandardZuniTiada kandungan linguistikZazaArab S" + - "tandard ModenJerman AustriaJerman Halus SwitzerlandInggeris AustraliaIng" + - "geris KanadaInggeris BritishInggeris ASSepanyol Amerika LatinSepanyol Er" + - "opahSepanyol MexicoPerancis KanadaPerancis SwitzerlandSaxon RendahFlemis" + - "hPortugis BrazilPortugis EropahMoldaviaSerboCroatiaCongo SwahiliCina Rin" + - "gkasCina Tradisional" + "uBahasa Tidak DiketahuiVaiVunjoWalserWolayttaWarayWarlpiriCina WuKalmykS" + + "ogaYangbenYembaKantonisTamazight Maghribi StandardZuniTiada kandungan li" + + "nguistikZazaArab Standard ModenJerman AustriaJerman Halus SwitzerlandIng" + + "geris AustraliaInggeris KanadaInggeris BritishInggeris ASSepanyol Amerik" + + "a LatinSepanyol EropahSepanyol MexicoPerancis KanadaPerancis Switzerland" + + "Saxon RendahFlemishPortugis BrazilPortugis EropahMoldaviaSerboCroatiaCon" + + "go SwahiliCina RingkasCina Tradisional" var msLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -21978,18 +21984,18 @@ var msLangIdx = []uint16{ // 613 elements 0x0a91, 0x0a91, 0x0a91, 0x0a96, 0x0a9a, 0x0a9a, 0x0a9f, 0x0aa4, 0x0aa4, 0x0aa4, 0x0aa4, 0x0aab, 0x0aab, 0x0ab1, 0x0ab1, 0x0ab1, 0x0aba, 0x0aba, 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac7, 0x0acd, - 0x0ad4, 0x0adc, 0x0af2, 0x0af8, 0x0af8, 0x0aff, 0x0b03, 0x0b06, - 0x0b06, 0x0b06, 0x0b06, 0x0b06, 0x0b06, 0x0b06, 0x0b0b, 0x0b11, - 0x0b19, 0x0b1e, 0x0b1e, 0x0b26, 0x0b2d, 0x0b33, 0x0b33, 0x0b37, + 0x0ad4, 0x0adc, 0x0af2, 0x0af8, 0x0af8, 0x0aff, 0x0b15, 0x0b18, + 0x0b18, 0x0b18, 0x0b18, 0x0b18, 0x0b18, 0x0b18, 0x0b1d, 0x0b23, + 0x0b2b, 0x0b30, 0x0b30, 0x0b38, 0x0b3f, 0x0b45, 0x0b45, 0x0b49, // Entry 240 - 27F - 0x0b37, 0x0b37, 0x0b3e, 0x0b43, 0x0b43, 0x0b4b, 0x0b4b, 0x0b4b, - 0x0b4b, 0x0b4b, 0x0b66, 0x0b6a, 0x0b84, 0x0b88, 0x0b9b, 0x0b9b, - 0x0ba9, 0x0bc1, 0x0bd3, 0x0be2, 0x0bf2, 0x0bfd, 0x0c13, 0x0c22, - 0x0c31, 0x0c31, 0x0c40, 0x0c54, 0x0c60, 0x0c67, 0x0c76, 0x0c85, - 0x0c8d, 0x0c99, 0x0ca6, 0x0cb2, 0x0cc2, + 0x0b49, 0x0b49, 0x0b50, 0x0b55, 0x0b55, 0x0b5d, 0x0b5d, 0x0b5d, + 0x0b5d, 0x0b5d, 0x0b78, 0x0b7c, 0x0b96, 0x0b9a, 0x0bad, 0x0bad, + 0x0bbb, 0x0bd3, 0x0be5, 0x0bf4, 0x0c04, 0x0c0f, 0x0c25, 0x0c34, + 0x0c43, 0x0c43, 0x0c52, 0x0c66, 0x0c72, 0x0c79, 0x0c88, 0x0c97, + 0x0c9f, 0x0cab, 0x0cb8, 0x0cc4, 0x0cd4, } // Size: 1250 bytes -const myLangStr string = "" + // Size: 10322 bytes +const myLangStr string = "" + // Size: 10320 bytes "အာဖာအဘ်ခါဇီရာတောင်အာဖရိကအာကန်အမ်ဟာရစ်ခ်အာရာဂွန်အာရဗီအာသံအာဗာရစ်ခ်အိုင်မာ" + "ရအဇာဘိုင်ဂျန်ဘက်ရှ်ကာဘီလာရုဇ်ဘူလ်ဂေးရီးယားဘစ်စ်လာမာဘန်ဘာရာဘင်္ဂါလီတိဘက" + "်ဘရီတွန်ဘော့စ်နီးယားကတ်တလန်ချက်ချန်းချမိုရိုခိုစီကန်ခရီးချက်ချပ်ချ် စလ" + @@ -22034,7 +22040,7 @@ const myLangStr string = "" + // Size: 10322 bytes " ဆမ်နီအိုင်းရစ် ဟောင်းတာချယ်လ်ဟစ်ရှမ်းတောင် ဆာမိလူလီ ဆာမိအီနာရီ ဆာမိစခို" + "းလ် ဆမ်မီဆိုနင်ကေးဆရာနန် တွန်ဂိုဆာဟိုဆူကူမာကိုမိုရီးယန်းဆီးရီးယားတင်မ်" + "နဲတီဆိုတီတွမ်တီဂရီကလင်ဂွန်တော့ခ် ပိစင်တရိုကိုတမ်ဘူကာတူဗာလူတာဆာဝါခ်တူဗန" + - "်အလယ်အာ့တလာစ် တာမာဇိုက်အူမူရတ်အူဘန်ဒူမူလရင်းမြစ်ဗိုင်ဗွန်ဂျိုဝေါလ်ဆာဝိ" + + "်အလယ်အာ့တလာစ် တာမာဇိုက်အူမူရတ်အူဘန်ဒူမသိသော ဘာသာဗိုင်ဗွန်ဂျိုဝေါလ်ဆာဝိ" + "ုလက်တာဝါရေးဝေါလ်ပီရီကာလ်မိုက်ဆိုဂါရန်ဘဲန်ရမ်ဘာကွမ်တုံမိုရိုကို တမဇိုက်" + "ဇူနီဘာသာစကားနှင့် ပတ်သက်သောအရာ မရှိပါဇာဇာဩစတြီးယား ဂျာမန်အလီမဲန်နစ် ဂျ" + "ာမန်ဩစတြေးလျှ အင်္ဂလိပ်ကနေဒါ အင်္ဂလိပ်ဗြိတိသျှ အင်္ဂလိပ်အမေရိကန် အင်္ဂ" + @@ -22120,18 +22126,18 @@ var myLangIdx = []uint16{ // 611 elements 0x22e7, 0x22e7, 0x22e7, 0x22fc, 0x230b, 0x230b, 0x231d, 0x232c, 0x232c, 0x232c, 0x232c, 0x2344, 0x2344, 0x2344, 0x2344, 0x2344, 0x2366, 0x2366, 0x237b, 0x237b, 0x237b, 0x237b, 0x2390, 0x23a2, - 0x23ba, 0x23c9, 0x2409, 0x241e, 0x241e, 0x2433, 0x2454, 0x2463, - 0x2463, 0x2463, 0x2463, 0x2463, 0x2463, 0x2463, 0x247b, 0x2490, - 0x24a8, 0x24b7, 0x24b7, 0x24d2, 0x24d2, 0x24ed, 0x24ed, 0x24fc, + 0x23ba, 0x23c9, 0x2409, 0x241e, 0x241e, 0x2433, 0x2452, 0x2461, + 0x2461, 0x2461, 0x2461, 0x2461, 0x2461, 0x2461, 0x2479, 0x248e, + 0x24a6, 0x24b5, 0x24b5, 0x24d0, 0x24d0, 0x24eb, 0x24eb, 0x24fa, // Entry 240 - 27F - 0x24fc, 0x24fc, 0x2511, 0x2520, 0x2520, 0x2535, 0x2535, 0x2535, - 0x2535, 0x2535, 0x2566, 0x2572, 0x25d1, 0x25dd, 0x25dd, 0x25dd, - 0x260b, 0x263c, 0x2673, 0x269e, 0x26d2, 0x2706, 0x2706, 0x2727, - 0x2727, 0x2727, 0x274c, 0x276e, 0x279b, 0x27b6, 0x27e1, 0x2809, - 0x2827, 0x2827, 0x2852, + 0x24fa, 0x24fa, 0x250f, 0x251e, 0x251e, 0x2533, 0x2533, 0x2533, + 0x2533, 0x2533, 0x2564, 0x2570, 0x25cf, 0x25db, 0x25db, 0x25db, + 0x2609, 0x263a, 0x2671, 0x269c, 0x26d0, 0x2704, 0x2704, 0x2725, + 0x2725, 0x2725, 0x274a, 0x276c, 0x2799, 0x27b4, 0x27df, 0x2807, + 0x2825, 0x2825, 0x2850, } // Size: 1246 bytes -const neLangStr string = "" + // Size: 13512 bytes +const neLangStr string = "" + // Size: 13539 bytes "अफारअब्खाजियालीअवेस्तानअफ्रिकान्सआकानअम्हारिकअरागोनीअरबीआसामीअवारिकऐमारा" + "अजरबैजानीबास्किरबेलारुसीबुल्गेरियालीबिस्लामबाम्बाराबंगालीतिब्बतीब्रेटन" + "बोस्नियालीक्याटालनचेचेनचामोर्रोकोर्सिकनक्रीचेकचर्च स्लाभिकचुभासवेल्शडे" + @@ -22190,14 +22196,14 @@ const neLangStr string = "" + // Size: 13512 bytes "ीदक्षिणी सामीलुले सामीइनारी सामीस्कोइट सामीसोनिन्केस्रानान टोङ्गोसाहोस" + "ुकुमासुसूसुमेरियालीकोमोरीपरम्परागत सिरियाकसिरियाकटिम्नेटेसोटेटुमटिग्रे" + "क्लिङ्गनन्यास टोङ्गाटोक पिसिनटारोकोमुस्लिम टाटटुम्बुकाटुभालुतासावाकटुभ" + - "िनियालीकेन्द्रीय एट्लास टामाजिघटउड्मुर्टउम्बुन्डीrootभाइमुख्य-फ्राङ्को" + - "नियालीभुन्जोवाल्सरवोलेट्टावारेवार्ल्पिरीकाल्मिकमिनग्रेलियालीसोगायाङ्बे" + - "नयेम्बान्हिनगातुकान्टोनियालीब्लिससिम्बोल्समानक मोरोक्कोन तामाजिघटजुनीभ" + - "ाषिक सामग्री छैनजाजाआधुनिक मानक अरबीअस्ट्रियाली जर्मनस्वीस हाई जर्मनअस" + - "्ट्रेलियाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअमेरिकी अङ्ग" + - "्रेजील्याटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्यानेडाली फ्" + - "रान्सेलीतल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुगीकङ्गो स्व" + - "ाहिलीसरलिकृत चिनियाँपरम्परागत चिनियाँ" + "िनियालीकेन्द्रीय एट्लास टामाजिघटउड्मुर्टउम्बुन्डीअज्ञात भाषाभाइमुख्य-फ" + + "्राङ्कोनियालीभुन्जोवाल्सरवोलेट्टावारेवार्ल्पिरीकाल्मिकमिनग्रेलियालीसोग" + + "ायाङ्बेनयेम्बान्हिनगातुकान्टोनियालीब्लिससिम्बोल्समानक मोरोक्कोन तामाजि" + + "घटजुनीभाषिक सामग्री छैनजाजाआधुनिक मानक अरबीअस्ट्रियाली जर्मनस्वीस हाई " + + "जर्मनअस्ट्रेलियाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअमेरि" + + "की अङ्ग्रेजील्याटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्याने" + + "डाली फ्रान्सेलीतल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुगीकङ" + + "्गो स्वाहिलीसरलिकृत चिनियाँपरम्परागत चिनियाँ" var neLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -22278,18 +22284,18 @@ var neLangIdx = []uint16{ // 613 elements 0x2dce, 0x2dce, 0x2dce, 0x2de0, 0x2dec, 0x2dec, 0x2dfb, 0x2e0d, 0x2e0d, 0x2e0d, 0x2e0d, 0x2e25, 0x2e25, 0x2e25, 0x2e25, 0x2e47, 0x2e60, 0x2e60, 0x2e72, 0x2e72, 0x2e72, 0x2e91, 0x2ea9, 0x2ebb, - 0x2ed0, 0x2eee, 0x2f35, 0x2f4d, 0x2f4d, 0x2f68, 0x2f6c, 0x2f75, - 0x2f75, 0x2f75, 0x2f75, 0x2faf, 0x2faf, 0x2faf, 0x2fc1, 0x2fd3, - 0x2feb, 0x2ff7, 0x2ff7, 0x3015, 0x3015, 0x302a, 0x3051, 0x305d, + 0x2ed0, 0x2eee, 0x2f35, 0x2f4d, 0x2f4d, 0x2f68, 0x2f87, 0x2f90, + 0x2f90, 0x2f90, 0x2f90, 0x2fca, 0x2fca, 0x2fca, 0x2fdc, 0x2fee, + 0x3006, 0x3012, 0x3012, 0x3030, 0x3030, 0x3045, 0x306c, 0x3078, // Entry 240 - 27F - 0x305d, 0x305d, 0x3072, 0x3084, 0x309f, 0x30c3, 0x30c3, 0x30ed, - 0x30ed, 0x30ed, 0x312e, 0x313a, 0x3169, 0x3175, 0x31a1, 0x31a1, - 0x31d2, 0x31fb, 0x323e, 0x3278, 0x32a9, 0x32da, 0x3318, 0x3343, - 0x336e, 0x336e, 0x33ab, 0x33ab, 0x33cd, 0x33e2, 0x3413, 0x3444, - 0x3444, 0x3444, 0x346c, 0x3497, 0x34c8, + 0x3078, 0x3078, 0x308d, 0x309f, 0x30ba, 0x30de, 0x30de, 0x3108, + 0x3108, 0x3108, 0x3149, 0x3155, 0x3184, 0x3190, 0x31bc, 0x31bc, + 0x31ed, 0x3216, 0x3259, 0x3293, 0x32c4, 0x32f5, 0x3333, 0x335e, + 0x3389, 0x3389, 0x33c6, 0x33c6, 0x33e8, 0x33fd, 0x342e, 0x345f, + 0x345f, 0x345f, 0x3487, 0x34b2, 0x34e3, } // Size: 1250 bytes -const nlLangStr string = "" + // Size: 4728 bytes +const nlLangStr string = "" + // Size: 4738 bytes "AfarAbchazischAvestischAfrikaansAkanAmhaarsAragoneesArabischAssameesAvar" + "ischAymaraAzerbeidzjaansBasjkiersWit-RussischBulgaarsBislamaBambaraBenga" + "alsTibetaansBretonsBosnischCatalaansTsjetsjeensChamorroCorsicaansCreeTsj" + @@ -22351,11 +22357,11 @@ const nlLangStr string = "" + // Size: 4728 bytes "ek SyrischSyrischSilezischTuluTimneTesoTerenoTetunTigreTivTokelausTsakhu" + "rKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoTarokoTsakonischT" + "simshianMoslim TatToemboekaTuvaluaansTasawaqToevaansTamazight (Centraal-" + - "Marokko)OedmoertsOegaritischUmbunduRootVaiVenetiaansWepsischWest-VlaamsO" + - "pperfrankischVotischVõroVunjoWalserWolayttaWarayWashoWarlpiriWuyuKalmuks" + - "MingreelsSogaYaoYapeesYangbenYembaNheengatuKantoneesZapotecBlissymbolenZ" + - "eeuwsZenagaStandaard Marokkaanse TamazightZunigeen linguïstische inhoudZ" + - "azaServo-Kroatisch" + "Marokko)OedmoertsOegaritischUmbunduonbekende taalVaiVenetiaansWepsischWe" + + "st-VlaamsOpperfrankischVotischVõroVunjoWalserWolayttaWarayWashoWarlpiriW" + + "uyuKalmuksMingreelsSogaYaoYapeesYangbenYembaNheengatuKantoneesZapotecBli" + + "ssymbolenZeeuwsZenagaStandaard Marokkaanse TamazightZunigeen linguïstisc" + + "he inhoudZazaServo-Kroatisch" var nlLangIdx = []uint16{ // 610 elements // Entry 0 - 3F @@ -22436,18 +22442,18 @@ var nlLangIdx = []uint16{ // 610 elements 0x107d, 0x1086, 0x108a, 0x108f, 0x1093, 0x1099, 0x109e, 0x10a3, 0x10a6, 0x10ae, 0x10b5, 0x10bc, 0x10c3, 0x10c9, 0x10d1, 0x10dc, 0x10e5, 0x10eb, 0x10f1, 0x10fb, 0x1104, 0x110e, 0x1117, 0x1121, - 0x1128, 0x1130, 0x114c, 0x1155, 0x1160, 0x1167, 0x116b, 0x116e, - 0x1178, 0x1180, 0x118b, 0x1199, 0x11a0, 0x11a5, 0x11aa, 0x11b0, - 0x11b8, 0x11bd, 0x11c2, 0x11ca, 0x11ce, 0x11d5, 0x11de, 0x11e2, + 0x1128, 0x1130, 0x114c, 0x1155, 0x1160, 0x1167, 0x1175, 0x1178, + 0x1182, 0x118a, 0x1195, 0x11a3, 0x11aa, 0x11af, 0x11b4, 0x11ba, + 0x11c2, 0x11c7, 0x11cc, 0x11d4, 0x11d8, 0x11df, 0x11e8, 0x11ec, // Entry 240 - 27F - 0x11e5, 0x11eb, 0x11f2, 0x11f7, 0x1200, 0x1209, 0x1210, 0x121c, - 0x1222, 0x1228, 0x1247, 0x124b, 0x1265, 0x1269, 0x1269, 0x1269, - 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, - 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, 0x1269, - 0x1269, 0x1278, + 0x11ef, 0x11f5, 0x11fc, 0x1201, 0x120a, 0x1213, 0x121a, 0x1226, + 0x122c, 0x1232, 0x1251, 0x1255, 0x126f, 0x1273, 0x1273, 0x1273, + 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, + 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, 0x1273, + 0x1273, 0x1282, } // Size: 1244 bytes -const noLangStr string = "" + // Size: 4834 bytes +const noLangStr string = "" + // Size: 4844 bytes "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamesiskavari" + "skaymaraaserbajdsjanskbasjkirskhviterussiskbulgarskbislamabambarabengali" + "tibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcreetsjekk" + @@ -22509,12 +22515,12 @@ const noLangStr string = "" + // Size: 4834 bytes "iskschlesisktulutemnetesoterenotetumtigrétivtokelauisktsakhurskklingontl" + "ingittalysjtamasjeknyasa-tongansktok pisinturoyotarokotsakonisktsimshian" + "muslimsk tattumbukatuvalsktasawaqtuvinsksentralmarokkansk tamazightudmur" + - "tiskugaritiskumbundurotvaivenetianskvepsiskvestflamskMain-frankiskvotisk" + - "sørestiskvunjowalsertyskwolayttawaray-waraywashowarlpiriwukalmukkiskming" + - "relsksogayaoyapesiskyangbenyembanheengatukantonesiskzapotekiskblissymbol" + - "erzeeuwszenagastandard marrokansk tamazightzuniuten språklig innholdzaza" + - "iskmoderne standardarabisknedersaksiskflamskmoldovskserbokroatiskkongole" + - "sisk swahiliforenklet kinesisktradisjonell kinesisk" + "tiskugaritiskumbunduukjent språkvaivenetianskvepsiskvestflamskMain-frank" + + "iskvotisksørestiskvunjowalsertyskwolayttawaray-waraywashowarlpiriwukalmu" + + "kkiskmingrelsksogayaoyapesiskyangbenyembanheengatukantonesiskzapotekiskb" + + "lissymbolerzeeuwszenagastandard marrokansk tamazightzuniuten språklig in" + + "nholdzazaiskmoderne standardarabisknedersaksiskflamskmoldovskserbokroati" + + "skkongolesisk swahiliforenklet kinesisktradisjonell kinesisk" var noLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -22595,18 +22601,18 @@ var noLangIdx = []uint16{ // 613 elements 0x106f, 0x1078, 0x107c, 0x1081, 0x1085, 0x108b, 0x1090, 0x1096, 0x1099, 0x10a3, 0x10ac, 0x10b3, 0x10ba, 0x10c0, 0x10c8, 0x10d6, 0x10df, 0x10e5, 0x10eb, 0x10f4, 0x10fd, 0x1109, 0x1110, 0x1117, - 0x111e, 0x1125, 0x1140, 0x1149, 0x1152, 0x1159, 0x115c, 0x115f, - 0x1169, 0x1170, 0x117a, 0x1187, 0x118d, 0x1197, 0x119c, 0x11a6, - 0x11ae, 0x11b9, 0x11be, 0x11c6, 0x11c8, 0x11d2, 0x11db, 0x11df, + 0x111e, 0x1125, 0x1140, 0x1149, 0x1152, 0x1159, 0x1166, 0x1169, + 0x1173, 0x117a, 0x1184, 0x1191, 0x1197, 0x11a1, 0x11a6, 0x11b0, + 0x11b8, 0x11c3, 0x11c8, 0x11d0, 0x11d2, 0x11dc, 0x11e5, 0x11e9, // Entry 240 - 27F - 0x11e2, 0x11ea, 0x11f1, 0x11f6, 0x11ff, 0x120a, 0x1214, 0x1220, - 0x1226, 0x122c, 0x1249, 0x124d, 0x1263, 0x126a, 0x1281, 0x1281, - 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, 0x1281, - 0x1281, 0x1281, 0x1281, 0x1281, 0x128d, 0x1293, 0x1293, 0x1293, - 0x129b, 0x12a8, 0x12bb, 0x12cd, 0x12e2, + 0x11ec, 0x11f4, 0x11fb, 0x1200, 0x1209, 0x1214, 0x121e, 0x122a, + 0x1230, 0x1236, 0x1253, 0x1257, 0x126d, 0x1274, 0x128b, 0x128b, + 0x128b, 0x128b, 0x128b, 0x128b, 0x128b, 0x128b, 0x128b, 0x128b, + 0x128b, 0x128b, 0x128b, 0x128b, 0x1297, 0x129d, 0x129d, 0x129d, + 0x12a5, 0x12b2, 0x12c5, 0x12d7, 0x12ec, } // Size: 1250 bytes -const paLangStr string = "" + // Size: 8148 bytes +const paLangStr string = "" + // Size: 8173 bytes "ਅਫ਼ਾਰਅਬਖਾਜ਼ੀਅਨਅਫ਼ਰੀਕੀਅਕਾਨਅਮਹਾਰਿਕਅਰਾਗੋਨੀਅਰਬੀਅਸਾਮੀਅਵਾਰਿਕਅਈਮਾਰਾਅਜ਼ਰਬਾਈਜਾਨੀਬ" + "ਸ਼ਕੀਰਬੇਲਾਰੂਸੀਬੁਲਗਾਰੀਆਈਬਿਸਲਾਮਾਬੰਬਾਰਾਬੰਗਾਲੀਤਿੱਬਤੀਬਰੇਟਨਬੋਸਨੀਆਈਕੈਟਾਲਾਨਚੇਚਨ" + "ਚਮੋਰੋਕੋਰਸੀਕਨਚੈੱਕਚਰਚ ਸਲਾਵੀਚੁਵਾਸ਼ਵੈਲਸ਼ਡੈਨਿਸ਼ਜਰਮਨਦਿਵੇਹੀਜ਼ੋਂਗਖਾਈਵਈਯੂਨਾਨੀਅੰ" + @@ -22642,11 +22648,11 @@ const paLangStr string = "" + // Size: 8148 bytes "ਖਣੀ ਕੁਰਦਿਸ਼ਸੇਨਾਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀਟਚੇਲਹਿਟਸ਼ਾਨਦੱਖਣੀ ਸਾਮੀਲਿਊਲ ਸਾਮੀਇਨਾਰੀ ਸਾਮੀ" + "ਸਕੌਲਟ ਸਾਮੀਸੋਨਿੰਕੇਸ੍ਰਾਨਾਨ ਟੋਂਗੋਸਾਹੋਸੁਕੁਮਾਕੋਮੋਰੀਅਨਸੀਰੀਆਈਟਿਮਨੇਟੇਸੋਟੇਟਮਟਿਗ" + "ਰਾਕਲਿੰਗਨਟੋਕ ਪਿਸਿਨਟਾਰੋਕੋਤੁੰਬੁਕਾਟਿਊਵਾਲੂਤਾਸਾਵਿਕਤੁਵੀਨੀਅਨਮੱਧ ਐਟਲਸ ਤਮਾਜ਼ਿਤਉਦ" + - "ਮੁਰਤਉਮਬੁੰਡੂਰੂਟਵਾਈਵੂੰਜੋਵਾਲਸਰਵੋਲਾਏਟਾਵੈਰੇਵਾਲਪੁਰੀਚੀਨੀ ਵੂਕਾਲਮਿਕਸੋਗਾਯਾਂਗਬੇਨਯ" + - "ੇਂਬਾਕੈਂਟੋਨੀਜ਼ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕਜ਼ੂਨੀਬੋਲੀ ਸੰਬੰਧੀ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂਜ਼ਾ" + - "ਜ਼ਾਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਜਰਮਨ (ਆਸਟਰੀਆਈ)ਅੰਗਰੇਜ਼ੀ (ਬਰਤਾਨਵੀ)ਅੰਗਰੇਜ਼ੀ (ਅਮਰੀਕੀ)ਸ" + - "ਪੇਨੀ (ਯੂਰਪੀ)ਫਰਾਂਸੀਸੀ (ਕੈਨੇਡੀਅਨ)ਲੋ ਸੈਕਸਨਫਲੈਮਿਸ਼ਪੁਰਤਗਾਲੀ (ਬ੍ਰਾਜ਼ੀਲੀ)ਪੁਰਤ" + - "ਗਾਲੀ (ਯੂਰਪੀ)ਮੋਲਡਾਵੀਆਈਚੀਨੀ (ਸਰਲ)ਚੀਨੀ (ਰਵਾਇਤੀ)" + "ਮੁਰਤਉਮਬੁੰਡੂਅਣਪਛਾਤੀ ਬੋਲੀਵਾਈਵੂੰਜੋਵਾਲਸਰਵੋਲਾਏਟਾਵੈਰੇਵਾਲਪੁਰੀਚੀਨੀ ਵੂਕਾਲਮਿਕਸੋਗ" + + "ਾਯਾਂਗਬੇਨਯੇਂਬਾਕੈਂਟੋਨੀਜ਼ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕਜ਼ੂਨੀਬੋਲੀ ਸੰਬੰਧੀ ਕੋਈ ਸਮੱਗਰ" + + "ੀ ਨਹੀਂਜ਼ਾਜ਼ਾਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਜਰਮਨ (ਆਸਟਰੀਆਈ)ਅੰਗਰੇਜ਼ੀ (ਬਰਤਾਨਵੀ)ਅੰਗਰੇਜ਼ੀ " + + "(ਅਮਰੀਕੀ)ਸਪੇਨੀ (ਯੂਰਪੀ)ਫਰਾਂਸੀਸੀ (ਕੈਨੇਡੀਅਨ)ਲੋ ਸੈਕਸਨਫਲੈਮਿਸ਼ਪੁਰਤਗਾਲੀ (ਬ੍ਰਾਜ਼ੀ" + + "ਲੀ)ਪੁਰਤਗਾਲੀ (ਯੂਰਪੀ)ਮੋਲਡਾਵੀਆਈਚੀਨੀ (ਸਰਲ)ਚੀਨੀ (ਰਵਾਇਤੀ)" var paLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -22727,18 +22733,18 @@ var paLangIdx = []uint16{ // 613 elements 0x1b56, 0x1b56, 0x1b56, 0x1b65, 0x1b71, 0x1b71, 0x1b7d, 0x1b8c, 0x1b8c, 0x1b8c, 0x1b8c, 0x1b9e, 0x1b9e, 0x1b9e, 0x1b9e, 0x1b9e, 0x1bb7, 0x1bb7, 0x1bc9, 0x1bc9, 0x1bc9, 0x1bc9, 0x1bde, 0x1bf3, - 0x1c08, 0x1c20, 0x1c4c, 0x1c5e, 0x1c5e, 0x1c73, 0x1c7c, 0x1c85, - 0x1c85, 0x1c85, 0x1c85, 0x1c85, 0x1c85, 0x1c85, 0x1c94, 0x1ca3, - 0x1cb8, 0x1cc4, 0x1cc4, 0x1cd9, 0x1cec, 0x1cfe, 0x1cfe, 0x1d0a, + 0x1c08, 0x1c20, 0x1c4c, 0x1c5e, 0x1c5e, 0x1c73, 0x1c95, 0x1c9e, + 0x1c9e, 0x1c9e, 0x1c9e, 0x1c9e, 0x1c9e, 0x1c9e, 0x1cad, 0x1cbc, + 0x1cd1, 0x1cdd, 0x1cdd, 0x1cf2, 0x1d05, 0x1d17, 0x1d17, 0x1d23, // Entry 240 - 27F - 0x1d0a, 0x1d0a, 0x1d1f, 0x1d2e, 0x1d2e, 0x1d49, 0x1d49, 0x1d49, - 0x1d49, 0x1d49, 0x1d87, 0x1d96, 0x1ddf, 0x1df1, 0x1e20, 0x1e20, - 0x1e44, 0x1e44, 0x1e44, 0x1e44, 0x1e74, 0x1ea1, 0x1ea1, 0x1ec2, - 0x1ec2, 0x1ec2, 0x1ef5, 0x1ef5, 0x1f0b, 0x1f20, 0x1f56, 0x1f80, - 0x1f9b, 0x1f9b, 0x1f9b, 0x1fb3, 0x1fd4, + 0x1d23, 0x1d23, 0x1d38, 0x1d47, 0x1d47, 0x1d62, 0x1d62, 0x1d62, + 0x1d62, 0x1d62, 0x1da0, 0x1daf, 0x1df8, 0x1e0a, 0x1e39, 0x1e39, + 0x1e5d, 0x1e5d, 0x1e5d, 0x1e5d, 0x1e8d, 0x1eba, 0x1eba, 0x1edb, + 0x1edb, 0x1edb, 0x1f0e, 0x1f0e, 0x1f24, 0x1f39, 0x1f6f, 0x1f99, + 0x1fb4, 0x1fb4, 0x1fb4, 0x1fcc, 0x1fed, } // Size: 1250 bytes -const plLangStr string = "" + // Size: 5567 bytes +const plLangStr string = "" + // Size: 5568 bytes "afarabchaskiawestyjskiafrikaansakanamharskiaragońskiarabskiasamskiawarsk" + "iajmaraazerbejdżańskibaszkirskibiałoruskibułgarskibislamabambarabengalsk" + "itybetańskibretońskibośniackikatalońskiczeczeńskiczamorrokorsykańskikric" + @@ -22804,17 +22810,17 @@ const plLangStr string = "" + // Size: 5567 bytes "susumeryjskikomoryjskisyriackisyryjskiśląskitulutemneatesoterenotetumtig" + "retiwtokelaucachurskiklingońskitlingittałyskitamaszektonga (Niasa)tok pi" + "sinturoyotarokocakońskitsimshiantackitumbukatuvalutasawaqtuwińskitamazig" + - "ht (Atlas Środkowy)udmurckiugaryckiumbundujęzyk rdzennywaiweneckiwepskiz" + - "achodnioflamandzkimeński frankońskiwotiackivõrovunjowalserwolaytawarajwa" + - "showarlpiriwukałmuckimegrelskisogayaojapskiyangbenyembanheengatukantońsk" + - "izapoteckiblisszelandzkizenagastandardowy marokański tamazightzunibrak t" + - "reści o charakterze językowymzazakiwspółczesny arabskiaustriacki niemiec" + - "kiwysokoniemiecki (Szwajcaria)australijski angielskikanadyjski angielski" + - "brytyjski angielskiamerykański angielskiamerykański hiszpańskieuropejski" + - " hiszpańskimeksykański hiszpańskikanadyjski francuskiszwajcarski francus" + - "kidolnosaksońskiflamandzkibrazylijski portugalskieuropejski portugalskim" + - "ołdawskiserbsko-chorwackikongijski suahilichiński uproszczonychiński tra" + - "dycyjny" + "ht (Atlas Środkowy)udmurckiugaryckiumbundunieznany językwaiweneckiwepski" + + "zachodnioflamandzkimeński frankońskiwotiackivõrovunjowalserwolaytawarajw" + + "ashowarlpiriwukałmuckimegrelskisogayaojapskiyangbenyembanheengatukantońs" + + "kizapoteckiblisszelandzkizenagastandardowy marokański tamazightzunibrak " + + "treści o charakterze językowymzazakiwspółczesny arabskiaustriacki niemie" + + "ckiwysokoniemiecki (Szwajcaria)australijski angielskikanadyjski angielsk" + + "ibrytyjski angielskiamerykański angielskiamerykański hiszpańskieuropejsk" + + "i hiszpańskimeksykański hiszpańskikanadyjski francuskiszwajcarski francu" + + "skidolnosaksońskiflamandzkibrazylijski portugalskieuropejski portugalski" + + "mołdawskiserbsko-chorwackikongijski suahilichiński uproszczonychiński tr" + + "adycyjny" var plLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -22895,18 +22901,18 @@ var plLangIdx = []uint16{ // 613 elements 0x121a, 0x1222, 0x1226, 0x122b, 0x1230, 0x1236, 0x123b, 0x1240, 0x1243, 0x124a, 0x1253, 0x125e, 0x1265, 0x126d, 0x1275, 0x1282, 0x128b, 0x1291, 0x1297, 0x12a0, 0x12a9, 0x12ae, 0x12b5, 0x12bb, - 0x12c2, 0x12cb, 0x12e6, 0x12ee, 0x12f6, 0x12fd, 0x130b, 0x130e, - 0x1315, 0x131b, 0x132e, 0x1341, 0x1349, 0x134e, 0x1353, 0x1359, - 0x1360, 0x1365, 0x136a, 0x1372, 0x1374, 0x137d, 0x1386, 0x138a, + 0x12c2, 0x12cb, 0x12e6, 0x12ee, 0x12f6, 0x12fd, 0x130c, 0x130f, + 0x1316, 0x131c, 0x132f, 0x1342, 0x134a, 0x134f, 0x1354, 0x135a, + 0x1361, 0x1366, 0x136b, 0x1373, 0x1375, 0x137e, 0x1387, 0x138b, // Entry 240 - 27F - 0x138d, 0x1393, 0x139a, 0x139f, 0x13a8, 0x13b2, 0x13bb, 0x13c0, - 0x13c9, 0x13cf, 0x13f0, 0x13f4, 0x1419, 0x141f, 0x1434, 0x1434, - 0x1448, 0x1464, 0x147a, 0x148e, 0x14a1, 0x14b7, 0x14cf, 0x14e5, - 0x14fd, 0x14fd, 0x1511, 0x1526, 0x1535, 0x153f, 0x1556, 0x156c, - 0x1576, 0x1587, 0x1598, 0x15ac, 0x15bf, + 0x138e, 0x1394, 0x139b, 0x13a0, 0x13a9, 0x13b3, 0x13bc, 0x13c1, + 0x13ca, 0x13d0, 0x13f1, 0x13f5, 0x141a, 0x1420, 0x1435, 0x1435, + 0x1449, 0x1465, 0x147b, 0x148f, 0x14a2, 0x14b8, 0x14d0, 0x14e6, + 0x14fe, 0x14fe, 0x1512, 0x1527, 0x1536, 0x1540, 0x1557, 0x156d, + 0x1577, 0x1588, 0x1599, 0x15ad, 0x15c0, } // Size: 1250 bytes -const ptLangStr string = "" + // Size: 4104 bytes +const ptLangStr string = "" + // Size: 4119 bytes "afarabcázioavésticoafricânerakanamáricoaragonêsárabeassamêsavaricaimaraa" + "zerbaijanobashkirbielorrussobúlgarobislamábambarabengalitibetanobretãobó" + "sniocatalãochechenochamorrocórsicocreetchecoeslavo eclesiásticotchuvache" + @@ -22957,11 +22963,12 @@ const ptLangStr string = "" + // Size: 4104 bytes "rinamêssereresahosukumasususumériocomorianosiríaco clássicosiríacotimnet" + "esoterenotétumtigrétivtoquelauanoklingontlinguitetamaxequetonganês de Ny" + "asatok pisintarokotsimshianotumbukatuvaluanotasawaqtuvinianotamazight do" + - " Atlas Centraludmurteugaríticoumbunduraizvaivóticovunjowalserwolayttawar" + - "aywashowarlpiriwukalmyklusogayaoyapeseyangbenyembacantonêszapotecosímbol" + - "os bliszenagatamazight marroquino padrãozunhisem conteúdo linguísticozaz" + - "aárabe modernoazeri sulalto alemão (Suíça)baixo saxãoflamengomoldávioser" + - "vo-croatasuaíli do Congochinês simplificadochinês tradicional" + " Atlas Centraludmurteugaríticoumbunduidioma desconhecidovaivóticovunjowa" + + "lserwolayttawaraywashowarlpiriwukalmyklusogayaoyapeseyangbenyembacantonê" + + "szapotecosímbolos bliszenagatamazight marroquino padrãozunhisem conteúdo" + + " linguísticozazaárabe modernoazeri sulalto alemão (Suíça)baixo saxãoflam" + + "engomoldávioservo-croatasuaíli do Congochinês simplificadochinês tradici" + + "onal" var ptLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -23042,18 +23049,18 @@ var ptLangIdx = []uint16{ // 613 elements 0x0e02, 0x0e02, 0x0e02, 0x0e07, 0x0e0b, 0x0e11, 0x0e17, 0x0e1d, 0x0e20, 0x0e2b, 0x0e2b, 0x0e32, 0x0e3b, 0x0e3b, 0x0e44, 0x0e56, 0x0e5f, 0x0e5f, 0x0e65, 0x0e65, 0x0e6f, 0x0e6f, 0x0e76, 0x0e7f, - 0x0e86, 0x0e8f, 0x0ea9, 0x0eb0, 0x0eba, 0x0ec1, 0x0ec5, 0x0ec8, - 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ecf, 0x0ecf, 0x0ed4, 0x0eda, - 0x0ee2, 0x0ee7, 0x0eec, 0x0ef4, 0x0ef6, 0x0efc, 0x0efc, 0x0f02, + 0x0e86, 0x0e8f, 0x0ea9, 0x0eb0, 0x0eba, 0x0ec1, 0x0ed4, 0x0ed7, + 0x0ed7, 0x0ed7, 0x0ed7, 0x0ed7, 0x0ede, 0x0ede, 0x0ee3, 0x0ee9, + 0x0ef1, 0x0ef6, 0x0efb, 0x0f03, 0x0f05, 0x0f0b, 0x0f0b, 0x0f11, // Entry 240 - 27F - 0x0f05, 0x0f0b, 0x0f12, 0x0f17, 0x0f17, 0x0f20, 0x0f28, 0x0f36, - 0x0f36, 0x0f3c, 0x0f58, 0x0f5d, 0x0f77, 0x0f7b, 0x0f89, 0x0f92, - 0x0f92, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, - 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fb4, 0x0fbc, 0x0fbc, 0x0fbc, - 0x0fc5, 0x0fd1, 0x0fe1, 0x0ff5, 0x1008, + 0x0f14, 0x0f1a, 0x0f21, 0x0f26, 0x0f26, 0x0f2f, 0x0f37, 0x0f45, + 0x0f45, 0x0f4b, 0x0f67, 0x0f6c, 0x0f86, 0x0f8a, 0x0f98, 0x0fa1, + 0x0fa1, 0x0fb7, 0x0fb7, 0x0fb7, 0x0fb7, 0x0fb7, 0x0fb7, 0x0fb7, + 0x0fb7, 0x0fb7, 0x0fb7, 0x0fb7, 0x0fc3, 0x0fcb, 0x0fcb, 0x0fcb, + 0x0fd4, 0x0fe0, 0x0ff0, 0x1004, 0x1017, } // Size: 1250 bytes -const ptPTLangStr string = "" + // Size: 882 bytes +const ptPTLangStr string = "" + // Size: 878 bytes "africanêschecochuvasheweestóniofrísico ocidentalhaúçahindiarménioigbocan" + "arimgandamacedónionorueguês nynorsknorueguês bokmåloccitanoosséticopolac" + "opastókinyarwandasami do nortetigríniaturcomanotongaiorubainglês antigom" + @@ -23062,10 +23069,10 @@ const ptPTLangStr string = "" + // Size: 882 bytes "ássicoalemão suíçocabardianocrioulo cabo-verdianolezghianoluri do norte" + "luomohawkbaixo-alemãonórdico antigolíngua pangasinesapersa antigolíngua " + "pohnpeicaprovençal antigorajastanêssakhairlandês antigoárabe do Chadeina" + - "ri samirootvaisogaárabe moderno padrãoalemão austríacoalto alemão suíçoi" + - "nglês australianoinglês canadianoinglês britânicoinglês americanoespanho" + - "l latino-americanoespanhol europeufrancês canadianofrancês suíçobaixo-sa" + - "xãoportuguês do Brasilportuguês europeu" + "ri samivaisogaárabe moderno padrãoalemão austríacoalto alemão suíçoinglê" + + "s australianoinglês canadianoinglês britânicoinglês americanoespanhol la" + + "tino-americanoespanhol europeufrancês canadianofrancês suíçobaixo-saxãop" + + "ortuguês do Brasilportuguês europeu" var ptPTLangIdx = []uint16{ // 608 elements // Entry 0 - 3F @@ -23146,17 +23153,17 @@ var ptPTLangIdx = []uint16{ // 608 elements 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, - 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x026b, 0x026e, - 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, - 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x0272, + 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x026a, + 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, + 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026e, // Entry 240 - 27F - 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, - 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0288, 0x0288, - 0x029a, 0x02ae, 0x02c1, 0x02d2, 0x02e4, 0x02f5, 0x030e, 0x031e, - 0x031e, 0x031e, 0x0330, 0x0340, 0x034c, 0x034c, 0x0360, 0x0372, + 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, + 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, 0x0284, 0x0284, + 0x0296, 0x02aa, 0x02bd, 0x02ce, 0x02e0, 0x02f1, 0x030a, 0x031a, + 0x031a, 0x031a, 0x032c, 0x033c, 0x0348, 0x0348, 0x035c, 0x036e, } // Size: 1240 bytes -const roLangStr string = "" + // Size: 4228 bytes +const roLangStr string = "" + // Size: 4243 bytes "afarabhazăavestanăafrikaansakanamharicăaragonezăarabăasamezăavarăaymaraa" + "zerăbașkirăbielorusăbulgarăbislamabambarabengalezătibetanăbretonăbosniac" + "ăcatalanăcecenăchamorrocorsicanăcreecehăslavonăciuvașăgalezădanezăgerma" + @@ -23207,12 +23214,12 @@ const roLangStr string = "" + // Size: 4228 bytes "samiinari samiskolt samisoninkesogdiensranan tongoserersahosukumasususum" + "erianăcomorezăsiriacă clasicăsiriacătimnetesoterenotetumtigretivtokelauk" + "lingonianătlingittamasheknyasa tongatok pisintarokotsimshiantumbukatuval" + - "utasawaqtuvanătamazight central marocanăudmurtugariticăumbundurootvaivot" + - "icăvunjowalserwolaitawaraywashowarlpirichineză wucalmucăsogayaoyapezăyan" + - "gbenyembacantonezăzapotecăsimboluri Bilsszenagatamazight standard maroca" + - "năzunifară conținut lingvisticzazaarabă standard modernăgermană standard" + - " (Elveția)saxona de josflamandămoldoveneascăsârbo-croatăswahili (R.D. Co" + - "ngo)chineză tradițională" + "utasawaqtuvanătamazight central marocanăudmurtugariticăumbundulimbă necu" + + "noscutăvaivoticăvunjowalserwolaitawaraywashowarlpirichineză wucalmucăsog" + + "ayaoyapezăyangbenyembacantonezăzapotecăsimboluri Bilsszenagatamazight st" + + "andard marocanăzunifară conținut lingvisticzazaarabă standard modernăger" + + "mană standard (Elveția)saxona de josflamandămoldoveneascăsârbo-croatăswa" + + "hili (R.D. Congo)chineză tradițională" var roLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -23293,18 +23300,18 @@ var roLangIdx = []uint16{ // 613 elements 0x0e80, 0x0e80, 0x0e80, 0x0e85, 0x0e89, 0x0e8f, 0x0e94, 0x0e99, 0x0e9c, 0x0ea3, 0x0ea3, 0x0eaf, 0x0eb6, 0x0eb6, 0x0ebe, 0x0ec9, 0x0ed2, 0x0ed2, 0x0ed8, 0x0ed8, 0x0ee1, 0x0ee1, 0x0ee8, 0x0eee, - 0x0ef5, 0x0efc, 0x0f17, 0x0f1d, 0x0f27, 0x0f2e, 0x0f32, 0x0f35, - 0x0f35, 0x0f35, 0x0f35, 0x0f35, 0x0f3c, 0x0f3c, 0x0f41, 0x0f47, - 0x0f4e, 0x0f53, 0x0f58, 0x0f60, 0x0f6b, 0x0f73, 0x0f73, 0x0f77, + 0x0ef5, 0x0efc, 0x0f17, 0x0f1d, 0x0f27, 0x0f2e, 0x0f41, 0x0f44, + 0x0f44, 0x0f44, 0x0f44, 0x0f44, 0x0f4b, 0x0f4b, 0x0f50, 0x0f56, + 0x0f5d, 0x0f62, 0x0f67, 0x0f6f, 0x0f7a, 0x0f82, 0x0f82, 0x0f86, // Entry 240 - 27F - 0x0f7a, 0x0f81, 0x0f88, 0x0f8d, 0x0f8d, 0x0f97, 0x0fa0, 0x0faf, - 0x0faf, 0x0fb5, 0x0fd1, 0x0fd5, 0x0fef, 0x0ff3, 0x100b, 0x100b, - 0x100b, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, 0x1027, - 0x1027, 0x1027, 0x1027, 0x1027, 0x1034, 0x103d, 0x103d, 0x103d, - 0x104b, 0x1059, 0x106d, 0x106d, 0x1084, + 0x0f89, 0x0f90, 0x0f97, 0x0f9c, 0x0f9c, 0x0fa6, 0x0faf, 0x0fbe, + 0x0fbe, 0x0fc4, 0x0fe0, 0x0fe4, 0x0ffe, 0x1002, 0x101a, 0x101a, + 0x101a, 0x1036, 0x1036, 0x1036, 0x1036, 0x1036, 0x1036, 0x1036, + 0x1036, 0x1036, 0x1036, 0x1036, 0x1043, 0x104c, 0x104c, 0x104c, + 0x105a, 0x1068, 0x107c, 0x107c, 0x1093, } // Size: 1250 bytes -const ruLangStr string = "" + // Size: 9389 bytes +const ruLangStr string = "" + // Size: 9395 bytes "афарскийабхазскийавестийскийафрикаансаканамхарскийарагонскийарабскийасса" + "мскийаварскийаймараазербайджанскийбашкирскийбелорусскийболгарскийбислам" + "абамбарабенгальскийтибетскийбретонскийбоснийскийкаталанскийчеченскийчам" + @@ -23362,16 +23369,16 @@ const ruLangStr string = "" + // Size: 9389 bytes "ерерсахосукумасусушумерскийкоморскийклассический сирийскийсирийскийтемн" + "етесотеренотетумтигретивитокелайскийклингонскийтлингиттамашектонгаток-п" + "исинтуройоседекскийцимшиантумбукатувалутасавактувинскийсреднеатласский " + - "тамазигхтскийудмуртскийугаритскийумбундукорневой языкваиводскийвунджова" + - "ллисскийволамоварайвашовальбиривукалмыцкийсогаяояпянгбенйембакантонский" + - "сапотекскийблиссимволиказенагскийтамазигхтскийзуньинет языкового матери" + - "алазазаарабский литературныйавстрийский немецкийлитературный швейцарски" + - "й немецкийавстралийский английскийканадский английскийбританский англий" + - "скийамериканский английскийлатиноамериканский испанскийевропейский испа" + - "нскиймексиканский испанскийканадский французскийшвейцарский французский" + - "нижнесаксонскийфламандскийбразильский португальскийевропейский португал" + - "ьскиймолдавскийсербскохорватскийконголезский суахиликитайский, упрощенн" + - "ое письмокитайский, традиционное письмо" + "тамазигхтскийудмуртскийугаритскийумбундунеизвестный языкваиводскийвундж" + + "оваллисскийволамоварайвашовальбиривукалмыцкийсогаяояпянгбенйембакантонс" + + "кийсапотекскийблиссимволиказенагскийтамазигхтскийзуньинет языкового мат" + + "ериалазазаарабский литературныйавстрийский немецкийлитературный швейцар" + + "ский немецкийавстралийский английскийканадский английскийбританский анг" + + "лийскийамериканский английскийлатиноамериканский испанскийевропейский и" + + "спанскиймексиканский испанскийканадский французскийшвейцарский французс" + + "кийнижнесаксонскийфламандскийбразильский португальскийевропейский порту" + + "гальскиймолдавскийсербскохорватскийконголезский суахиликитайский, упрощ" + + "енное письмокитайский, традиционное письмо" var ruLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -23452,18 +23459,18 @@ var ruLangIdx = []uint16{ // 613 elements 0x1e58, 0x1e58, 0x1e58, 0x1e62, 0x1e6a, 0x1e76, 0x1e80, 0x1e8a, 0x1e92, 0x1ea8, 0x1ea8, 0x1ebe, 0x1ecc, 0x1ecc, 0x1eda, 0x1ee4, 0x1ef5, 0x1f01, 0x1f13, 0x1f13, 0x1f21, 0x1f21, 0x1f2f, 0x1f3b, - 0x1f49, 0x1f5b, 0x1f94, 0x1fa8, 0x1fbc, 0x1fca, 0x1fe3, 0x1fe9, - 0x1fe9, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ff7, 0x1ff7, 0x2003, 0x2017, - 0x2023, 0x202d, 0x2035, 0x2045, 0x2049, 0x205b, 0x205b, 0x2063, + 0x1f49, 0x1f5b, 0x1f94, 0x1fa8, 0x1fbc, 0x1fca, 0x1fe9, 0x1fef, + 0x1fef, 0x1fef, 0x1fef, 0x1fef, 0x1ffd, 0x1ffd, 0x2009, 0x201d, + 0x2029, 0x2033, 0x203b, 0x204b, 0x204f, 0x2061, 0x2061, 0x2069, // Entry 240 - 27F - 0x2067, 0x206b, 0x2077, 0x2081, 0x2081, 0x2095, 0x20ab, 0x20c5, - 0x20c5, 0x20d7, 0x20f1, 0x20fb, 0x2127, 0x212f, 0x2158, 0x2158, - 0x217f, 0x21bf, 0x21ee, 0x2215, 0x223e, 0x226b, 0x22a2, 0x22cb, - 0x22f6, 0x22f6, 0x231f, 0x234c, 0x236a, 0x2380, 0x23b1, 0x23e2, - 0x23f6, 0x2418, 0x243f, 0x2474, 0x24ad, + 0x206d, 0x2071, 0x207d, 0x2087, 0x2087, 0x209b, 0x20b1, 0x20cb, + 0x20cb, 0x20dd, 0x20f7, 0x2101, 0x212d, 0x2135, 0x215e, 0x215e, + 0x2185, 0x21c5, 0x21f4, 0x221b, 0x2244, 0x2271, 0x22a8, 0x22d1, + 0x22fc, 0x22fc, 0x2325, 0x2352, 0x2370, 0x2386, 0x23b7, 0x23e8, + 0x23fc, 0x241e, 0x2445, 0x247a, 0x24b3, } // Size: 1250 bytes -const siLangStr string = "" + // Size: 9440 bytes +const siLangStr string = "" + // Size: 9465 bytes "අෆාර්ඇබ්කාසියානුඅප්\u200dරිකානුඅකාන්ඇම්හාරික්ඇරගොනීස්අරාබිඇසමියානුඇවරික්" + "අයිමරාඅසර්බයිජාන්බාෂ්කිර්බෙලරුසියානුබල්ගේරියානුබිස්ලමාබම්බරාබෙංගාලිටිබ" + "ෙට්බ්\u200dරේටොන්බොස්නියානුකැටලන්චෙච්නියානුචමොරොක්\u200dරොඑශියානුචෙත්ච" + @@ -23504,14 +23511,14 @@ const siLangStr string = "" + // Size: 9440 bytes "රො සෙන්නිටචේල්හිට්ශාන්දකුණු සාමිලුලේ සාමිඉනාරි සාමිස්කොල්ට් සාමිසොනින්" + "කෙස්\u200dරන් ටොන්ගොසහොසුකුමාකොමොරියන්ස්\u200dරයෑක්ටිම්නෙටෙසෝටේටම්ටීග්" + "\u200dරෙක්ලින්ගොන්ටොක් පිසින්ටරොකොටුම්බුකාටුවාලුටසවාක්ටුවිනියන්මධ්\u200d" + - "යම ඇට්ලස් ටමසිට්අඩ්මර්ට්උබුන්ඩුරූට්වයිවුන්ජෝවොල්සර්වොලෙට්ටවොරෙය්වොපිරි" + - "වූ චයිනිස්කල්මික්සොගායන්ග්බෙන්යෙම්බාකැන්ටොනීස්සම්මත මොරොක්කෝ ටමසිග්ත්ස" + - "ුනිවාග් විද්\u200dයා අන්තර්ගතයක් නැතසාසානවීන සම්මත අරාබිඔස්ට්\u200dරිය" + - "ානු ජර්මන්ස්විස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසිකැනේඩියා" + - "නු ඉංග්\u200dරීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු ඉංග්" + - "\u200dරීසිලතින් ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤකැනේඩිය" + - "ානු ප්\u200dරංශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල පෘතුග" + - "ීසියුරෝපීය පෘතුගීසිමොල්ඩවිආනුසුළුකළ චීනසාම්ප්\u200dරදායික චීන" + "යම ඇට්ලස් ටමසිට්අඩ්මර්ට්උබුන්ඩුනොදන්නා භාෂාවවයිවුන්ජෝවොල්සර්වොලෙට්ටවොර" + + "ෙය්වොපිරිවූ චයිනිස්කල්මික්සොගායන්ග්බෙන්යෙම්බාකැන්ටොනීස්සම්මත මොරොක්කෝ " + + "ටමසිග්ත්සුනිවාග් විද්\u200dයා අන්තර්ගතයක් නැතසාසානවීන සම්මත අරාබිඔස්ට්" + + "\u200dරියානු ජර්මන්ස්විස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසික" + + "ැනේඩියානු ඉංග්\u200dරීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු " + + "ඉංග්\u200dරීසිලතින් ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤක" + + "ැනේඩියානු ප්\u200dරංශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල" + + " පෘතුගීසියුරෝපීය පෘතුගීසිමොල්ඩවිආනුසුළුකළ චීනසාම්ප්\u200dරදායික චීන" var siLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -23592,18 +23599,18 @@ var siLangIdx = []uint16{ // 613 elements 0x1e78, 0x1e78, 0x1e78, 0x1e8a, 0x1e96, 0x1e96, 0x1ea5, 0x1eba, 0x1eba, 0x1eba, 0x1eba, 0x1ed8, 0x1ed8, 0x1ed8, 0x1ed8, 0x1ed8, 0x1ef7, 0x1ef7, 0x1f06, 0x1f06, 0x1f06, 0x1f06, 0x1f1e, 0x1f30, - 0x1f42, 0x1f5d, 0x1f95, 0x1fad, 0x1fad, 0x1fc2, 0x1fce, 0x1fd7, - 0x1fd7, 0x1fd7, 0x1fd7, 0x1fd7, 0x1fd7, 0x1fd7, 0x1fe9, 0x1ffe, - 0x2013, 0x2025, 0x2025, 0x2037, 0x2053, 0x2068, 0x2068, 0x2074, + 0x1f42, 0x1f5d, 0x1f95, 0x1fad, 0x1fad, 0x1fc2, 0x1fe7, 0x1ff0, + 0x1ff0, 0x1ff0, 0x1ff0, 0x1ff0, 0x1ff0, 0x1ff0, 0x2002, 0x2017, + 0x202c, 0x203e, 0x203e, 0x2050, 0x206c, 0x2081, 0x2081, 0x208d, // Entry 240 - 27F - 0x2074, 0x2074, 0x208f, 0x20a1, 0x20a1, 0x20bf, 0x20bf, 0x20bf, - 0x20bf, 0x20bf, 0x2100, 0x210c, 0x215a, 0x2166, 0x2192, 0x2192, - 0x21c9, 0x21fb, 0x2241, 0x227b, 0x22b8, 0x22ef, 0x232d, 0x2358, - 0x238c, 0x238c, 0x23bd, 0x23e2, 0x2401, 0x2419, 0x2447, 0x2475, - 0x2493, 0x2493, 0x2493, 0x24af, 0x24e0, + 0x208d, 0x208d, 0x20a8, 0x20ba, 0x20ba, 0x20d8, 0x20d8, 0x20d8, + 0x20d8, 0x20d8, 0x2119, 0x2125, 0x2173, 0x217f, 0x21ab, 0x21ab, + 0x21e2, 0x2214, 0x225a, 0x2294, 0x22d1, 0x2308, 0x2346, 0x2371, + 0x23a5, 0x23a5, 0x23d6, 0x23fb, 0x241a, 0x2432, 0x2460, 0x248e, + 0x24ac, 0x24ac, 0x24ac, 0x24c8, 0x24f9, } // Size: 1250 bytes -const skLangStr string = "" + // Size: 5794 bytes +const skLangStr string = "" + // Size: 5802 bytes "afarčinaabcházčinaavestčinaafrikánčinaakančinaamharčinaaragónčinaarabčin" + "aásamčinaavarčinaaymarčinaazerbajdžančinabaškirčinabieloruštinabulharčin" + "abislamabambarčinabengálčinatibetčinabretónčinabosniačtinakatalánčinačeč" + @@ -23666,16 +23673,16 @@ const skLangStr string = "" + // Size: 5794 bytes "nasahosukumasususumerčinakomorčinasýrčina (klasická)sýrčinatemnetesoterê" + "natetumčinatigrejčinativtokelauštinaklingónčinatlingitčinatuaregčinaňasa" + " tonganovoguinejský pidžintarokocimšjančinatumbukatuvalčinatasawaqtuvian" + - "činastredomarocká tuaregčinaudmurtčinaugaritčinaumbundukoreňvaivodčinav" + - "unjowalserčinawalamčinawaraywashowarlpirikalmyčtinasogajaojapčinajangben" + - "yembakantončinazapotéčtinasystém Blisszenagatuaregčina (štandardná maroc" + - "ká)zuništinabez jazykového obsahuzazaarabčina (moderná štandardná)nemčin" + - "a (rakúska)nemčina (švajčiarska spisovná)angličtina (austrálska)angličti" + - "na (kanadská)angličtina (britská)angličtina (americká)španielčina (latin" + - "skoamerická)španielčina (európska)španielčina (mexická)francúzština (kan" + - "adská)francúzština (švajčiarska)dolná saštinaflámčinaportugalčina (brazí" + - "lska)portugalčina (európska)moldavčinasrbochorvátčinasvahilčina (konžská" + - ")čínština (zjednodušená)čínština (tradičná)" + "činastredomarocká tuaregčinaudmurtčinaugaritčinaumbunduneznámy jazykvai" + + "vodčinavunjowalserčinawalamčinawaraywashowarlpirikalmyčtinasogajaojapčin" + + "ajangbenyembakantončinazapotéčtinasystém Blisszenagatuaregčina (štandard" + + "ná marocká)zuništinabez jazykového obsahuzazaarabčina (moderná štandardn" + + "á)nemčina (rakúska)nemčina (švajčiarska spisovná)angličtina (austrálska" + + ")angličtina (kanadská)angličtina (britská)angličtina (americká)španielči" + + "na (latinskoamerická)španielčina (európska)španielčina (mexická)francúzš" + + "tina (kanadská)francúzština (švajčiarska)dolná saštinaflámčinaportugalči" + + "na (brazílska)portugalčina (európska)moldavčinasrbochorvátčinasvahilčina" + + " (konžská)čínština (zjednodušená)čínština (tradičná)" var skLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -23756,18 +23763,18 @@ var skLangIdx = []uint16{ // 613 elements 0x12f6, 0x12f6, 0x12f6, 0x12fb, 0x12ff, 0x1306, 0x1310, 0x131b, 0x131e, 0x132b, 0x132b, 0x1338, 0x1344, 0x1344, 0x134f, 0x135a, 0x1370, 0x1370, 0x1376, 0x1376, 0x1383, 0x1383, 0x138a, 0x1394, - 0x139b, 0x13a6, 0x13c0, 0x13cb, 0x13d6, 0x13dd, 0x13e3, 0x13e6, - 0x13e6, 0x13e6, 0x13e6, 0x13e6, 0x13ee, 0x13ee, 0x13f3, 0x13fe, - 0x1408, 0x140d, 0x1412, 0x141a, 0x141a, 0x1425, 0x1425, 0x1429, + 0x139b, 0x13a6, 0x13c0, 0x13cb, 0x13d6, 0x13dd, 0x13eb, 0x13ee, + 0x13ee, 0x13ee, 0x13ee, 0x13ee, 0x13f6, 0x13f6, 0x13fb, 0x1406, + 0x1410, 0x1415, 0x141a, 0x1422, 0x1422, 0x142d, 0x142d, 0x1431, // Entry 240 - 27F - 0x142c, 0x1434, 0x143b, 0x1440, 0x1440, 0x144b, 0x1458, 0x1465, - 0x1465, 0x146b, 0x148e, 0x1498, 0x14ae, 0x14b2, 0x14d3, 0x14d3, - 0x14e6, 0x1508, 0x1521, 0x1538, 0x154e, 0x1565, 0x1586, 0x159f, - 0x15b7, 0x15b7, 0x15d1, 0x15ef, 0x15fe, 0x1608, 0x1622, 0x163b, - 0x1646, 0x1657, 0x166e, 0x168a, 0x16a2, + 0x1434, 0x143c, 0x1443, 0x1448, 0x1448, 0x1453, 0x1460, 0x146d, + 0x146d, 0x1473, 0x1496, 0x14a0, 0x14b6, 0x14ba, 0x14db, 0x14db, + 0x14ee, 0x1510, 0x1529, 0x1540, 0x1556, 0x156d, 0x158e, 0x15a7, + 0x15bf, 0x15bf, 0x15d9, 0x15f7, 0x1606, 0x1610, 0x162a, 0x1643, + 0x164e, 0x165f, 0x1676, 0x1692, 0x16aa, } // Size: 1250 bytes -const slLangStr string = "" + // Size: 6423 bytes +const slLangStr string = "" + // Size: 6424 bytes "afarščinaabhaščinaavestijščinaafrikanščinaakanščinaamharščinaaragonščina" + "arabščinaasamščinaavarščinaajmarščinaazerbajdžanščinabaškirščinabelorušč" + "inabolgarščinabislamščinabambarščinabengalščinatibetanščinabretonščinabo" + @@ -23836,16 +23843,16 @@ const slLangStr string = "" + // Size: 6423 bytes "inatemnejščinatesotetumščinatigrejščinativščinatokelavščinaklingonščinat" + "lingitščinatamajaščinamalavijska tongščinatok pisintarokotsimščinatumbuk" + "ščinatuvalujščinatasawaqtuvinščinatamašek (srednji atlas)udmurtščinauga" + - "ritski jezikumbundščinarootščinavajščinavotjaščinavunjowalservalamščinav" + - "arajščinavašajščinavarlpirščinakalmiščinasogščinajaojščinajapščinajangbe" + - "njembajščinakantonščinazapoteščinaznakovni jezik Blisszenaščinastandardn" + - "i maroški tamazigzunijščinabrez jezikoslovne vsebinezazajščinasodobna st" + - "andardna arabščinaavstrijska nemščinavisoka nemščina (Švica)avstralska a" + - "ngleščinakanadska angleščinaangleščina (VB)angleščina (ZDA)latinskoameri" + - "ška španščinaiberska španščinakanadska francoščinašvicarska francoščina" + - "nizka saščinaflamščinabrazilska portugalščinaiberska portugalščinamoldav" + - "ščinasrbohrvaščinakongoška svahilščinapoenostavljena kitajščinatradicio" + - "nalna kitajščina" + "ritski jezikumbundščinaneznan jezikvajščinavotjaščinavunjowalservalamšči" + + "navarajščinavašajščinavarlpirščinakalmiščinasogščinajaojščinajapščinajan" + + "gbenjembajščinakantonščinazapoteščinaznakovni jezik Blisszenaščinastanda" + + "rdni maroški tamazigzunijščinabrez jezikoslovne vsebinezazajščinasodobna" + + " standardna arabščinaavstrijska nemščinavisoka nemščina (Švica)avstralsk" + + "a angleščinakanadska angleščinaangleščina (VB)angleščina (ZDA)latinskoam" + + "eriška španščinaiberska španščinakanadska francoščinašvicarska francošči" + + "nanizka saščinaflamščinabrazilska portugalščinaiberska portugalščinamold" + + "avščinasrbohrvaščinakongoška svahilščinapoenostavljena kitajščinatradici" + + "onalna kitajščina" var slLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -23926,18 +23933,18 @@ var slLangIdx = []uint16{ // 613 elements 0x153c, 0x153c, 0x153c, 0x1549, 0x154d, 0x154d, 0x1559, 0x1566, 0x1570, 0x157e, 0x157e, 0x158c, 0x159a, 0x159a, 0x15a7, 0x15bd, 0x15c6, 0x15c6, 0x15cc, 0x15cc, 0x15d7, 0x15d7, 0x15e4, 0x15f2, - 0x15f9, 0x1605, 0x161d, 0x162a, 0x1639, 0x1646, 0x1651, 0x165b, - 0x165b, 0x165b, 0x165b, 0x165b, 0x1667, 0x1667, 0x166c, 0x1672, - 0x167e, 0x168a, 0x1697, 0x16a5, 0x16a5, 0x16b1, 0x16b1, 0x16bb, + 0x15f9, 0x1605, 0x161d, 0x162a, 0x1639, 0x1646, 0x1652, 0x165c, + 0x165c, 0x165c, 0x165c, 0x165c, 0x1668, 0x1668, 0x166d, 0x1673, + 0x167f, 0x168b, 0x1698, 0x16a6, 0x16a6, 0x16b2, 0x16b2, 0x16bc, // Entry 240 - 27F - 0x16c6, 0x16d0, 0x16d7, 0x16e4, 0x16e4, 0x16f1, 0x16fe, 0x1712, - 0x1712, 0x171d, 0x1738, 0x1744, 0x175d, 0x1769, 0x1787, 0x1787, - 0x179c, 0x17b6, 0x17cd, 0x17e2, 0x17f3, 0x1805, 0x1823, 0x1837, - 0x1837, 0x1837, 0x184d, 0x1865, 0x1874, 0x187f, 0x1898, 0x18af, - 0x18bc, 0x18cb, 0x18e2, 0x18fd, 0x1917, + 0x16c7, 0x16d1, 0x16d8, 0x16e5, 0x16e5, 0x16f2, 0x16ff, 0x1713, + 0x1713, 0x171e, 0x1739, 0x1745, 0x175e, 0x176a, 0x1788, 0x1788, + 0x179d, 0x17b7, 0x17ce, 0x17e3, 0x17f4, 0x1806, 0x1824, 0x1838, + 0x1838, 0x1838, 0x184e, 0x1866, 0x1875, 0x1880, 0x1899, 0x18b0, + 0x18bd, 0x18cc, 0x18e3, 0x18fe, 0x1918, } // Size: 1250 bytes -const sqLangStr string = "" + // Size: 4427 bytes +const sqLangStr string = "" + // Size: 4430 bytes "afarishtabkazishtafrikanishtakanishtamarishtaragonezishtarabishtasamezis" + "htavarikishtajmarishtazerbajxhanishtbashkirishtbjellorusishtbullgarishtb" + "islamishtbambarishtbengalishttibetishtbretonishtboshnjakishtkatalonishtç" + @@ -23990,15 +23997,15 @@ const sqLangStr string = "" + // Size: 4427 bytes "samishte skoltisoninkishtsrananisht (sranantongoisht)sahoishtsukumaishtk" + "amorianishtsiriakishttimneishttesoishttetumishttigreishtklingonishtpisin" + "ishte tokutorokoishttumbukaishttuvaluishttasavakishttuvinianishttamaziat" + - "ishte atlase qendroreudmurtishtumbunduishtrutishtvaishtvunxhoishtualseri" + - "shtulajtaishtuarajishtuarlpirishtkalmikishtsogishtjangbenishtjembaishtka" + - "ntonezishttamaziatishte standarde marokenezunishtnuk ka përmbajtje gjuhë" + - "sorezazaishtarabishte standarde modernegjermanishte austriakegjermanisht" + - "e zvicerane (dialekti i Alpeve)anglishte australianeanglishte kanadezean" + - "glishte britanikeanglishte amerikanespanjishte amerikano-latinespanjisht" + - "e evropianespanjishte meksikanefrëngjishte kanadezefrëngjishte zvicerane" + - "gjermanishte saksone e vendeve të ulëtaflamandishtportugalishte brazilia" + - "neportugalishte evropianemoldavishtserbo-kroatishtsuahilishte kongoje" + "ishte atlase qendroreudmurtishtumbunduishte panjohurvaishtvunxhoishtuals" + + "erishtulajtaishtuarajishtuarlpirishtkalmikishtsogishtjangbenishtjembaish" + + "tkantonezishttamaziatishte standarde marokenezunishtnuk ka përmbajtje gj" + + "uhësorezazaishtarabishte standarde modernegjermanishte austriakegjermani" + + "shte zvicerane (dialekti i Alpeve)anglishte australianeanglishte kanadez" + + "eanglishte britanikeanglishte amerikanespanjishte amerikano-latinespanji" + + "shte evropianespanjishte meksikanefrëngjishte kanadezefrëngjishte zvicer" + + "anegjermanishte saksone e vendeve të ulëtaflamandishtportugalishte brazi" + + "lianeportugalishte evropianemoldavishtserbo-kroatishtsuahilishte kongoje" var sqLangIdx = []uint16{ // 611 elements // Entry 0 - 3F @@ -24079,18 +24086,18 @@ var sqLangIdx = []uint16{ // 611 elements 0x0e45, 0x0e45, 0x0e45, 0x0e4e, 0x0e56, 0x0e56, 0x0e5f, 0x0e68, 0x0e68, 0x0e68, 0x0e68, 0x0e73, 0x0e73, 0x0e73, 0x0e73, 0x0e73, 0x0e82, 0x0e82, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e97, 0x0ea1, - 0x0eac, 0x0eb8, 0x0ed5, 0x0edf, 0x0edf, 0x0eea, 0x0ef1, 0x0ef7, - 0x0ef7, 0x0ef7, 0x0ef7, 0x0ef7, 0x0ef7, 0x0ef7, 0x0f01, 0x0f0b, - 0x0f15, 0x0f1e, 0x0f1e, 0x0f29, 0x0f29, 0x0f33, 0x0f33, 0x0f3a, + 0x0eac, 0x0eb8, 0x0ed5, 0x0edf, 0x0edf, 0x0eea, 0x0ef4, 0x0efa, + 0x0efa, 0x0efa, 0x0efa, 0x0efa, 0x0efa, 0x0efa, 0x0f04, 0x0f0e, + 0x0f18, 0x0f21, 0x0f21, 0x0f2c, 0x0f2c, 0x0f36, 0x0f36, 0x0f3d, // Entry 240 - 27F - 0x0f3a, 0x0f3a, 0x0f45, 0x0f4e, 0x0f4e, 0x0f5a, 0x0f5a, 0x0f5a, - 0x0f5a, 0x0f5a, 0x0f7a, 0x0f81, 0x0f9e, 0x0fa6, 0x0fc1, 0x0fc1, - 0x0fd7, 0x1001, 0x1016, 0x1028, 0x103b, 0x104e, 0x1069, 0x107d, - 0x1091, 0x1091, 0x10a6, 0x10bc, 0x10e5, 0x10f0, 0x1108, 0x111f, - 0x1129, 0x1138, 0x114b, + 0x0f3d, 0x0f3d, 0x0f48, 0x0f51, 0x0f51, 0x0f5d, 0x0f5d, 0x0f5d, + 0x0f5d, 0x0f5d, 0x0f7d, 0x0f84, 0x0fa1, 0x0fa9, 0x0fc4, 0x0fc4, + 0x0fda, 0x1004, 0x1019, 0x102b, 0x103e, 0x1051, 0x106c, 0x1080, + 0x1094, 0x1094, 0x10a9, 0x10bf, 0x10e8, 0x10f3, 0x110b, 0x1122, + 0x112c, 0x113b, 0x114e, } // Size: 1246 bytes -const srLangStr string = "" + // Size: 8071 bytes +const srLangStr string = "" + // Size: 8092 bytes "афарскиабхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" + "арскиајмараазербејџанскибашкирскибелорускибугарскибисламабамбарабенгалс" + "китибетанскибретонскибосанскикаталонскичеченскичаморокорзиканскикричешк" + @@ -24142,13 +24149,13 @@ const srLangStr string = "" + // Size: 8071 bytes "кисранан тонгосерерскисахосукумасусусумерскикоморскисиријачкисиријскити" + "мнетесотеренотетумтигретивтокелауклингонскитлингиттамашекњаса тонгаток " + "писинтарокоцимшиантумбукатувалутасавактувинскицентралноатласки тамазигт" + - "удмуртскиугаритскиумбундуРутваиводскивунџовалсерскиволајтаварајскивашов" + - "арлпирикалмичкисогајаојапскијангбенјембакантонскизапотечкиблисимболизен" + - "агастандардни марокански тамазигтзунибез лингвистичког садржајазазасавр" + - "емени стандардни арапскишвајцарски високи немачкиенглески (Велика Брита" + - "нија)енглески (Сједињене Америчке Државе)нискосаксонскифламанскипортуга" + - "лски (Португал)молдавскисрпскохрватскикисвахилипоједностављени кинескит" + - "радиционални кинески" + "удмуртскиугаритскиумбундунепознат језикваиводскивунџовалсерскиволајтава" + + "рајскивашоварлпирикалмичкисогајаојапскијангбенјембакантонскизапотечкибл" + + "исимболизенагастандардни марокански тамазигтзунибез лингвистичког садрж" + + "ајазазасавремени стандардни арапскишвајцарски високи немачкиенглески (В" + + "елика Британија)енглески (Сједињене Америчке Државе)нискосаксонскифлама" + + "нскипортугалски (Португал)молдавскисрпскохрватскикисвахилипоједноставље" + + "ни кинескитрадиционални кинески" var srLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -24229,18 +24236,18 @@ var srLangIdx = []uint16{ // 613 elements 0x1b04, 0x1b04, 0x1b04, 0x1b0e, 0x1b16, 0x1b22, 0x1b2c, 0x1b36, 0x1b3c, 0x1b4a, 0x1b4a, 0x1b5e, 0x1b6c, 0x1b6c, 0x1b7a, 0x1b8d, 0x1b9e, 0x1b9e, 0x1baa, 0x1baa, 0x1bb8, 0x1bb8, 0x1bc6, 0x1bd2, - 0x1be0, 0x1bf0, 0x1c21, 0x1c33, 0x1c45, 0x1c53, 0x1c59, 0x1c5f, - 0x1c5f, 0x1c5f, 0x1c5f, 0x1c5f, 0x1c6b, 0x1c6b, 0x1c75, 0x1c87, - 0x1c95, 0x1ca5, 0x1cad, 0x1cbd, 0x1cbd, 0x1ccd, 0x1ccd, 0x1cd5, + 0x1be0, 0x1bf0, 0x1c21, 0x1c33, 0x1c45, 0x1c53, 0x1c6e, 0x1c74, + 0x1c74, 0x1c74, 0x1c74, 0x1c74, 0x1c80, 0x1c80, 0x1c8a, 0x1c9c, + 0x1caa, 0x1cba, 0x1cc2, 0x1cd2, 0x1cd2, 0x1ce2, 0x1ce2, 0x1cea, // Entry 240 - 27F - 0x1cdb, 0x1ce7, 0x1cf5, 0x1cff, 0x1cff, 0x1d11, 0x1d23, 0x1d37, - 0x1d37, 0x1d43, 0x1d7d, 0x1d85, 0x1db7, 0x1dbf, 0x1df5, 0x1df5, - 0x1df5, 0x1e25, 0x1e25, 0x1e25, 0x1e57, 0x1e9a, 0x1e9a, 0x1e9a, - 0x1e9a, 0x1e9a, 0x1e9a, 0x1e9a, 0x1eb6, 0x1ec8, 0x1ec8, 0x1ef1, - 0x1f03, 0x1f1f, 0x1f31, 0x1f5e, 0x1f87, + 0x1cf0, 0x1cfc, 0x1d0a, 0x1d14, 0x1d14, 0x1d26, 0x1d38, 0x1d4c, + 0x1d4c, 0x1d58, 0x1d92, 0x1d9a, 0x1dcc, 0x1dd4, 0x1e0a, 0x1e0a, + 0x1e0a, 0x1e3a, 0x1e3a, 0x1e3a, 0x1e6c, 0x1eaf, 0x1eaf, 0x1eaf, + 0x1eaf, 0x1eaf, 0x1eaf, 0x1eaf, 0x1ecb, 0x1edd, 0x1edd, 0x1f06, + 0x1f18, 0x1f34, 0x1f46, 0x1f73, 0x1f9c, } // Size: 1250 bytes -const srLatnLangStr string = "" + // Size: 4236 bytes +const srLatnLangStr string = "" + // Size: 4247 bytes "afarskiabhaskiavestanskiafrikansakanskiamharskiaragonskiarapskiasamskiav" + "arskiajmaraazerbejdžanskibaškirskibeloruskibugarskibislamabambarabengals" + "kitibetanskibretonskibosanskikatalonskičečenskičamorokorzikanskikričeški" + @@ -24292,13 +24299,13 @@ const srLatnLangStr string = "" + // Size: 4236 bytes "ngosererskisahosukumasususumerskikomorskisirijačkisirijskitimnetesoteren" + "otetumtigretivtokelauklingonskitlingittamašeknjasa tongatok pisintarokoc" + "imšiantumbukatuvalutasavaktuvinskicentralnoatlaski tamazigtudmurtskiugar" + - "itskiumbunduRutvaivodskivundžovalserskivolajtavarajskivašovarlpirikalmič" + - "kisogajaojapskijangbenjembakantonskizapotečkiblisimbolizenagastandardni " + - "marokanski tamazigtzunibez lingvističkog sadržajazazasavremeni standardn" + - "i arapskišvajcarski visoki nemačkiengleski (Velika Britanija)engleski (S" + - "jedinjene Američke Države)niskosaksonskiflamanskiportugalski (Portugal)m" + - "oldavskisrpskohrvatskikisvahilipojednostavljeni kineskitradicionalni kin" + - "eski" + "itskiumbundunepoznat jezikvaivodskivundžovalserskivolajtavarajskivašovar" + + "lpirikalmičkisogajaojapskijangbenjembakantonskizapotečkiblisimbolizenaga" + + "standardni marokanski tamazigtzunibez lingvističkog sadržajazazasavremen" + + "i standardni arapskišvajcarski visoki nemačkiengleski (Velika Britanija)" + + "engleski (Sjedinjene Američke Države)niskosaksonskiflamanskiportugalski " + + "(Portugal)moldavskisrpskohrvatskikisvahilipojednostavljeni kineskitradic" + + "ionalni kineski" var srLatnLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -24379,18 +24386,18 @@ var srLatnLangIdx = []uint16{ // 613 elements 0x0e2e, 0x0e2e, 0x0e2e, 0x0e33, 0x0e37, 0x0e3d, 0x0e42, 0x0e47, 0x0e4a, 0x0e51, 0x0e51, 0x0e5b, 0x0e62, 0x0e62, 0x0e6a, 0x0e75, 0x0e7e, 0x0e7e, 0x0e84, 0x0e84, 0x0e8c, 0x0e8c, 0x0e93, 0x0e99, - 0x0ea0, 0x0ea8, 0x0ec1, 0x0eca, 0x0ed3, 0x0eda, 0x0edd, 0x0ee0, - 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee6, 0x0ee6, 0x0eed, 0x0ef6, - 0x0efd, 0x0f05, 0x0f0a, 0x0f12, 0x0f12, 0x0f1b, 0x0f1b, 0x0f1f, + 0x0ea0, 0x0ea8, 0x0ec1, 0x0eca, 0x0ed3, 0x0eda, 0x0ee8, 0x0eeb, + 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0ef1, 0x0ef1, 0x0ef8, 0x0f01, + 0x0f08, 0x0f10, 0x0f15, 0x0f1d, 0x0f1d, 0x0f26, 0x0f26, 0x0f2a, // Entry 240 - 27F - 0x0f22, 0x0f28, 0x0f2f, 0x0f34, 0x0f34, 0x0f3d, 0x0f47, 0x0f51, - 0x0f51, 0x0f57, 0x0f75, 0x0f79, 0x0f95, 0x0f99, 0x0fb5, 0x0fb5, - 0x0fb5, 0x0fd0, 0x0fd0, 0x0fd0, 0x0feb, 0x1012, 0x1012, 0x1012, - 0x1012, 0x1012, 0x1012, 0x1012, 0x1020, 0x1029, 0x1029, 0x103f, - 0x1048, 0x1056, 0x105f, 0x1077, 0x108c, + 0x0f2d, 0x0f33, 0x0f3a, 0x0f3f, 0x0f3f, 0x0f48, 0x0f52, 0x0f5c, + 0x0f5c, 0x0f62, 0x0f80, 0x0f84, 0x0fa0, 0x0fa4, 0x0fc0, 0x0fc0, + 0x0fc0, 0x0fdb, 0x0fdb, 0x0fdb, 0x0ff6, 0x101d, 0x101d, 0x101d, + 0x101d, 0x101d, 0x101d, 0x101d, 0x102b, 0x1034, 0x1034, 0x104a, + 0x1053, 0x1061, 0x106a, 0x1082, 0x1097, } // Size: 1250 bytes -const svLangStr string = "" + // Size: 5455 bytes +const svLangStr string = "" + // Size: 5468 bytes "afarabchaziskaavestiskaafrikaansakanamhariskaaragonesiskaarabiskaassames" + "iskaavariskaaymaraazerbajdzjanskabasjkiriskavitryskabulgariskabislamabam" + "barabengalitibetanskabretonskabosniskakatalanskatjetjenskachamorrokorsik" + @@ -24456,16 +24463,17 @@ const svLangStr string = "" + // Size: 5455 bytes "sisk syriskasyriskasilesiskatulutemnetesoterenotetumtigrétivitokelauiska" + "tsakhurklingonskatlingittalyshtamasheknyasatonganskatok pisinturoyotarok" + "otsakodiskatsimshianmuslimsk tatariskatumbukatuvaluanskatasawaqtuviniska" + - "centralmarockansk tamazightudmurtiskaugaritiskaumbundurotvajvenetianskav" + - "epsvästflamländskaMain-frankiskavotiskavõruvunjowalsertyskawalamowaraywa" + - "showarlpiriwukalmuckiskamingrelianskalusogakiyaojapetiskayangbenbamileké" + - "-jembanheengatukantonesiskazapotekblissymbolerzeeländskazenagamarockansk" + - " standard-tamazightzuniinget språkligt innehållzazaiskamodern standardar" + - "abiskaösterrikisk tyskaschweizisk högtyskaaustralisk engelskakanadensisk" + - " engelskabrittisk engelskaamerikansk engelskalatinamerikansk spanskaeuro" + - "peisk spanskamexikansk spanskakanadensisk franskaschweizisk franskalågsa" + - "xiskaflamländskabrasiliansk portugisiskaeuropeisk portugisiskamoldaviska" + - "serbokroatiskaKongo-swahiliförenklad kinesiskatraditionell kinesiska" + "centralmarockansk tamazightudmurtiskaugaritiskaumbunduobestämt språkvajv" + + "enetianskavepsvästflamländskaMain-frankiskavotiskavõruvunjowalsertyskawa" + + "lamowaraywashowarlpiriwukalmuckiskamingrelianskalusogakiyaojapetiskayang" + + "benbamileké-jembanheengatukantonesiskazapotekblissymbolerzeeländskazenag" + + "amarockansk standard-tamazightzuniinget språkligt innehållzazaiskamodern" + + " standardarabiskaösterrikisk tyskaschweizisk högtyskaaustralisk engelska" + + "kanadensisk engelskabrittisk engelskaamerikansk engelskalatinamerikansk " + + "spanskaeuropeisk spanskamexikansk spanskakanadensisk franskaschweizisk f" + + "ranskalågsaxiskaflamländskabrasiliansk portugisiskaeuropeisk portugisisk" + + "amoldaviskaserbokroatiskaKongo-swahiliförenklad kinesiskatraditionell ki" + + "nesiska" var svLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -24546,18 +24554,18 @@ var svLangIdx = []uint16{ // 613 elements 0x11b1, 0x11ba, 0x11be, 0x11c3, 0x11c7, 0x11cd, 0x11d2, 0x11d8, 0x11dc, 0x11e7, 0x11ee, 0x11f8, 0x11ff, 0x1205, 0x120d, 0x121b, 0x1224, 0x122a, 0x1230, 0x123a, 0x1243, 0x1255, 0x125c, 0x1267, - 0x126e, 0x1277, 0x1292, 0x129c, 0x12a6, 0x12ad, 0x12b0, 0x12b3, - 0x12be, 0x12c2, 0x12d3, 0x12e1, 0x12e8, 0x12ed, 0x12f2, 0x12fd, - 0x1303, 0x1308, 0x130d, 0x1315, 0x1317, 0x1322, 0x132f, 0x1335, + 0x126e, 0x1277, 0x1292, 0x129c, 0x12a6, 0x12ad, 0x12bd, 0x12c0, + 0x12cb, 0x12cf, 0x12e0, 0x12ee, 0x12f5, 0x12fa, 0x12ff, 0x130a, + 0x1310, 0x1315, 0x131a, 0x1322, 0x1324, 0x132f, 0x133c, 0x1342, // Entry 240 - 27F - 0x133a, 0x1343, 0x134a, 0x1359, 0x1362, 0x136e, 0x1375, 0x1381, - 0x138c, 0x1392, 0x13af, 0x13b3, 0x13cd, 0x13d5, 0x13ec, 0x13ec, - 0x13fe, 0x1412, 0x1425, 0x1439, 0x144a, 0x145d, 0x1474, 0x1485, - 0x1496, 0x1496, 0x14a9, 0x14bb, 0x14c6, 0x14d2, 0x14ea, 0x1500, - 0x150a, 0x1518, 0x1525, 0x1539, 0x154f, + 0x1347, 0x1350, 0x1357, 0x1366, 0x136f, 0x137b, 0x1382, 0x138e, + 0x1399, 0x139f, 0x13bc, 0x13c0, 0x13da, 0x13e2, 0x13f9, 0x13f9, + 0x140b, 0x141f, 0x1432, 0x1446, 0x1457, 0x146a, 0x1481, 0x1492, + 0x14a3, 0x14a3, 0x14b6, 0x14c8, 0x14d3, 0x14df, 0x14f7, 0x150d, + 0x1517, 0x1525, 0x1532, 0x1546, 0x155c, } // Size: 1250 bytes -const swLangStr string = "" + // Size: 3904 bytes +const swLangStr string = "" + // Size: 3919 bytes "KiafarKiabkhaziKiafrikanaKiakaniKiamhariKiaragoniKiarabuKiassamKiavariKi" + "aymaraKiazerbaijaniKibashkirKibelarusiKibulgariaKibislamaKibambaraKibeng" + "aliKitibetiKibretoniKibosniaKikatalaniKichecheniaKichamorroKikosikaniKic" + @@ -24607,12 +24615,12 @@ const swLangStr string = "" + // Size: 3904 bytes "ha KusiniKisami cha LuleKisami cha InariKisami cha SkoltKisoninkeLugha y" + "a Sranan TongoKisahoKisukumaKisusuShikomorLugha ya SyriacKitemneKitesoKi" + "tetumKitigreKiklingoniKitokpisinKitarokoKitumbukaKituvaluKitasawaqKituva" + - "Central Atlas TamazightUdmurtUmbunduRootKivaiKivunjoWalserKiwolayttaKiwa" + - "rayKiwarlpiriKikalmykKisogaKiyaoKiyangbenKiyembaKikantoniTamaziti Sanifu" + - " ya KimorokoKizuniHakuna maudhui ya lughaKizazaKiarabu Sanifu cha Kisasa" + - "Kihispania (Uhispania)Kihispania (Mexico)Kifaransa (Canada)KiflemiKireno" + - " (Brazil)Kiserbia-kroeshiaKingwanaKichina (Kilichorahisishwa)Kichina cha" + - " Jadi" + "Central Atlas TamazightUdmurtUmbunduLugha IsiyojulikanaKivaiKivunjoWalse" + + "rKiwolayttaKiwarayKiwarlpiriKikalmykKisogaKiyaoKiyangbenKiyembaKikantoni" + + "Tamaziti Sanifu ya KimorokoKizuniHakuna maudhui ya lughaKizazaKiarabu Sa" + + "nifu cha KisasaKihispania (Uhispania)Kihispania (Mexico)Kifaransa (Canad" + + "a)KiflemiKireno (Brazil)Kiserbia-kroeshiaKingwanaKichina (Kilichorahisis" + + "hwa)Kichina cha Jadi" var swLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -24693,18 +24701,18 @@ var swLangIdx = []uint16{ // 613 elements 0x0d7c, 0x0d7c, 0x0d7c, 0x0d83, 0x0d89, 0x0d89, 0x0d90, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0da1, 0x0da1, 0x0da1, 0x0da1, 0x0da1, 0x0dab, 0x0dab, 0x0db3, 0x0db3, 0x0db3, 0x0db3, 0x0dbc, 0x0dc4, - 0x0dcd, 0x0dd3, 0x0dea, 0x0df0, 0x0df0, 0x0df7, 0x0dfb, 0x0e00, - 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e00, 0x0e07, 0x0e0d, - 0x0e17, 0x0e1e, 0x0e1e, 0x0e28, 0x0e28, 0x0e30, 0x0e30, 0x0e36, + 0x0dcd, 0x0dd3, 0x0dea, 0x0df0, 0x0df0, 0x0df7, 0x0e0a, 0x0e0f, + 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e16, 0x0e1c, + 0x0e26, 0x0e2d, 0x0e2d, 0x0e37, 0x0e37, 0x0e3f, 0x0e3f, 0x0e45, // Entry 240 - 27F - 0x0e3b, 0x0e3b, 0x0e44, 0x0e4b, 0x0e4b, 0x0e54, 0x0e54, 0x0e54, - 0x0e54, 0x0e54, 0x0e6f, 0x0e75, 0x0e8c, 0x0e92, 0x0eab, 0x0eab, - 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0eab, 0x0ec1, - 0x0ed4, 0x0ed4, 0x0ee6, 0x0ee6, 0x0ee6, 0x0eed, 0x0efc, 0x0efc, - 0x0efc, 0x0f0d, 0x0f15, 0x0f30, 0x0f40, + 0x0e4a, 0x0e4a, 0x0e53, 0x0e5a, 0x0e5a, 0x0e63, 0x0e63, 0x0e63, + 0x0e63, 0x0e63, 0x0e7e, 0x0e84, 0x0e9b, 0x0ea1, 0x0eba, 0x0eba, + 0x0eba, 0x0eba, 0x0eba, 0x0eba, 0x0eba, 0x0eba, 0x0eba, 0x0ed0, + 0x0ee3, 0x0ee3, 0x0ef5, 0x0ef5, 0x0ef5, 0x0efc, 0x0f0b, 0x0f0b, + 0x0f0b, 0x0f1c, 0x0f24, 0x0f3f, 0x0f4f, } // Size: 1250 bytes -const taLangStr string = "" + // Size: 12975 bytes +const taLangStr string = "" + // Size: 13006 bytes "அஃபார்அப்காஜியான்அவெஸ்தான்ஆஃப்ரிகான்ஸ்அகான்அம்ஹாரிக்ஆர்கோனீஸ்அரபிக்அஸ்ஸா" + "மீஸ்அவேரிக்அய்மராஅஸர்பைஜானிபஷ்கிர்பெலாருஷியன்பல்கேரியன்பிஸ்லாமாபம்பாரா" + "வங்காளம்திபெத்தியன்பிரெட்டன்போஸ்னியன்கேட்டலான்செச்சென்சாமோரோகார்சிகன்க" + @@ -24759,15 +24767,15 @@ const taLangStr string = "" + // Size: 12975 bytes "்ட் சமிசோனின்கேசோக்தியன்ஸ்ரானன் டோங்கோசெரெர்சஹோசுகுமாசுசுசுமேரியன்கொமோ" + "ரியன்பாரம்பரிய சிரியாக்சிரியாக்டிம்னேடெசோடெரெனோடெடும்டைக்ரேடிவ்டோகேலௌக" + "்ளிங்கோன்லிங்கிட்தமஷேக்நயாசா டோங்காடோக் பிஸின்தரோகோட்ஸிம்ஷியன்தும்புகா" + - "டுவாலுடசவாக்டுவினியன்மத்திய அட்லஸ் டமசைட்உட்முர்ட்உகாரிடிக்அம்பொண்டுரூ" + - "ட்வைவோட்க்வுன்ஜோவால்சேர்வோலாய்ட்டாவாரேவாஷோவல்பிரிவூ சீனம்கல்மிக்சோகாயா" + - "வ்யாபேசேயாங்பென்யெம்பாகாண்டோனீஸ்ஜாபோடெக்ப்லிஸ்ஸிம்பால்ஸ்ஜெனகாஸ்டாண்டர்" + - "ட் மொராக்கன் தமாசைட்ஜூனிமொழி உள்ளடக்கம் ஏதுமில்லைஜாஜாநவீன நிலையான அரபி" + - "க்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை ஜெர்மன்ஆஸ்திரேலிய ஆங்கிலம்கனடிய ஆங்கிலம்பி" + - "ரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்கிலம்லத்தின் அமெரிக்க ஸ்பானிஷ்ஐரோப்பிய ஸ்" + - "பானிஷ்மெக்ஸிகன் ஸ்பானிஷ்கனடிய பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன்ஃப்லெமிஷ" + - "்பிரேசிலிய போர்ச்சுகீஸ்ஐரோப்பிய போர்ச்சுகீஸ்மோல்டாவியன்செர்போ-குரோஷியன" + - "்காங்கோ ஸ்வாஹிலிஎளிதாக்கப்பட்ட சீனம்பாரம்பரிய சீனம்" + "டுவாலுடசவாக்டுவினியன்மத்திய அட்லஸ் டமசைட்உட்முர்ட்உகாரிடிக்அம்பொண்டுஅற" + + "ியப்படாத மொழிவைவோட்க்வுன்ஜோவால்சேர்வோலாய்ட்டாவாரேவாஷோவல்பிரிவூ சீனம்கல" + + "்மிக்சோகாயாவ்யாபேசேயாங்பென்யெம்பாகாண்டோனீஸ்ஜாபோடெக்ப்லிஸ்ஸிம்பால்ஸ்ஜென" + + "காஸ்டாண்டர்ட் மொராக்கன் தமாசைட்ஜூனிமொழி உள்ளடக்கம் ஏதுமில்லைஜாஜாநவீன ந" + + "ிலையான அரபிக்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை ஜெர்மன்ஆஸ்திரேலிய ஆங்கிலம்கனடிய" + + " ஆங்கிலம்பிரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்கிலம்லத்தின் அமெரிக்க ஸ்பானிஷ்ஐர" + + "ோப்பிய ஸ்பானிஷ்மெக்ஸிகன் ஸ்பானிஷ்கனடிய பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன" + + "்ஃப்லெமிஷ்பிரேசிலிய போர்ச்சுகீஸ்ஐரோப்பிய போர்ச்சுகீஸ்மோல்டாவியன்செர்போ" + + "-குரோஷியன்காங்கோ ஸ்வாஹிலிஎளிதாக்கப்பட்ட சீனம்பாரம்பரிய சீனம்" var taLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -24848,18 +24856,18 @@ var taLangIdx = []uint16{ // 613 elements 0x2a7d, 0x2a7d, 0x2a7d, 0x2a8f, 0x2a9b, 0x2aad, 0x2abf, 0x2ad1, 0x2add, 0x2aef, 0x2aef, 0x2b0d, 0x2b25, 0x2b25, 0x2b37, 0x2b59, 0x2b78, 0x2b78, 0x2b87, 0x2b87, 0x2ba8, 0x2ba8, 0x2bc0, 0x2bd2, - 0x2be4, 0x2bff, 0x2c37, 0x2c52, 0x2c6d, 0x2c88, 0x2c94, 0x2c9a, - 0x2c9a, 0x2c9a, 0x2c9a, 0x2c9a, 0x2cac, 0x2cac, 0x2cbe, 0x2cd6, - 0x2cf4, 0x2d00, 0x2d0c, 0x2d21, 0x2d37, 0x2d4c, 0x2d4c, 0x2d58, + 0x2be4, 0x2bff, 0x2c37, 0x2c52, 0x2c6d, 0x2c88, 0x2cb3, 0x2cb9, + 0x2cb9, 0x2cb9, 0x2cb9, 0x2cb9, 0x2ccb, 0x2ccb, 0x2cdd, 0x2cf5, + 0x2d13, 0x2d1f, 0x2d2b, 0x2d40, 0x2d56, 0x2d6b, 0x2d6b, 0x2d77, // Entry 240 - 27F - 0x2d64, 0x2d76, 0x2d8e, 0x2da0, 0x2da0, 0x2dbe, 0x2dd6, 0x2e06, - 0x2e06, 0x2e15, 0x2e68, 0x2e74, 0x2ebb, 0x2ec7, 0x2efc, 0x2efc, - 0x2f2a, 0x2f59, 0x2f90, 0x2fb8, 0x2fef, 0x3020, 0x3067, 0x3098, - 0x30cc, 0x30cc, 0x30f4, 0x311c, 0x3138, 0x3153, 0x3193, 0x31d0, - 0x31f1, 0x321f, 0x324a, 0x3284, 0x32af, + 0x2d83, 0x2d95, 0x2dad, 0x2dbf, 0x2dbf, 0x2ddd, 0x2df5, 0x2e25, + 0x2e25, 0x2e34, 0x2e87, 0x2e93, 0x2eda, 0x2ee6, 0x2f1b, 0x2f1b, + 0x2f49, 0x2f78, 0x2faf, 0x2fd7, 0x300e, 0x303f, 0x3086, 0x30b7, + 0x30eb, 0x30eb, 0x3113, 0x313b, 0x3157, 0x3172, 0x31b2, 0x31ef, + 0x3210, 0x323e, 0x3269, 0x32a3, 0x32ce, } // Size: 1250 bytes -const teLangStr string = "" + // Size: 12415 bytes +const teLangStr string = "" + // Size: 12434 bytes "అఫార్అబ్ఖాజియన్అవేస్టాన్ఆఫ్రికాన్స్అకాన్అమ్హారిక్అరగోనిస్అరబిక్అస్సామీస్" + "అవారిక్ఐమారాఅజర్బైజానిబష్కిర్బెలరుషియన్బల్గేరియన్బిస్లామాబంబారాబాంగ్లా" + "టిబెటన్బ్రెటన్బోస్నియన్కెటలాన్చెచెన్చమర్రోకోర్సికన్క్రిచెక్చర్చ స్లావి" + @@ -24912,15 +24920,15 @@ const teLangStr string = "" + // Size: 12415 bytes "గ్డియన్స్రానన్ టోనగోసెరేర్సహోసుకుమాసుసుసుమేరియాన్కొమొరియన్సాంప్రదాయ సి" + "రియాక్సిరియాక్తుళుటింనేటెసోటెరెనోటేటంటీగ్రెటివ్టోకెలావ్క్లింగాన్ట్లింగ" + "ిట్టామషేక్న్యాసా టోన్గాటోక్ పిసిన్తరోకోశింషీయన్టుంబుకాటువాలుటసావాఖ్టువ" + - "ినియన్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర్ట్ఉగారిటిక్ఉమ్బుండురూట్వాయివోటిక" + - "్వుంజొవాల్సర్వాలేట్టావారేవాషోవార్లపిరివు చైనీస్కల్మిక్సొగాయాయేయాపిస్యా" + - "ంగ్\u200cబెన్యెంబాకాంటనీస్జపోటెక్బ్లిసింబల్స్జెనాగాప్రామాణిక మొరొకన్ త" + - "మజియట్జునిలిపి లేదుజాజాఆధునిక ప్రామాణిక అరబిక్ఆస్ట్రేలియన్ జర్మన్స్విస" + - "్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీష్కెనడియన్ ఇంగ్లీష్బ్రిటిష్ ఇంగ్లీష్అమెర" + - "ికన్ ఇంగ్లీష్లాటిన్ అమెరికన్ స్పానిష్యూరోపియన్ స్పానిష్మెక్సికన్ స్పాన" + - "ిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్రెంచ్లో సాక్సన్ఫ్లెమిష్బ్రెజీలియన్ పోర్చు" + - "గీస్యూరోపియన్ పోర్చుగీస్మొల్డావియన్సేర్బో-క్రొయేషియన్కాంగో స్వాహిలిసరళ" + - "ీకృత చైనీస్సాంప్రదాయక చైనీస్" + "ినియన్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర్ట్ఉగారిటిక్ఉమ్బుండుతెలియని భాషవా" + + "యివోటిక్వుంజొవాల్సర్వాలేట్టావారేవాషోవార్లపిరివు చైనీస్కల్మిక్సొగాయాయేయ" + + "ాపిస్యాంగ్\u200cబెన్యెంబాకాంటనీస్జపోటెక్బ్లిసింబల్స్జెనాగాప్రామాణిక మొ" + + "రొకన్ తమజియట్జునిలిపి లేదుజాజాఆధునిక ప్రామాణిక అరబిక్ఆస్ట్రేలియన్ జర్మ" + + "న్స్విస్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీష్కెనడియన్ ఇంగ్లీష్బ్రిటిష్ ఇంగ్ల" + + "ీష్అమెరికన్ ఇంగ్లీష్లాటిన్ అమెరికన్ స్పానిష్యూరోపియన్ స్పానిష్మెక్సికన" + + "్ స్పానిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్రెంచ్లో సాక్సన్ఫ్లెమిష్బ్రెజీలియన్" + + " పోర్చుగీస్యూరోపియన్ పోర్చుగీస్మొల్డావియన్సేర్బో-క్రొయేషియన్కాంగో స్వాహి" + + "లిసరళీకృత చైనీస్సాంప్రదాయక చైనీస్" var teLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -25001,18 +25009,18 @@ var teLangIdx = []uint16{ // 613 elements 0x286c, 0x286c, 0x2878, 0x2887, 0x2893, 0x28a5, 0x28b1, 0x28c3, 0x28cf, 0x28e7, 0x28e7, 0x2902, 0x291d, 0x291d, 0x2932, 0x2957, 0x2976, 0x2976, 0x2985, 0x2985, 0x299d, 0x299d, 0x29b2, 0x29c4, - 0x29d9, 0x29f4, 0x2a3b, 0x2a56, 0x2a71, 0x2a89, 0x2a95, 0x2aa1, - 0x2aa1, 0x2aa1, 0x2aa1, 0x2aa1, 0x2ab3, 0x2ab3, 0x2ac2, 0x2ad7, - 0x2aef, 0x2afb, 0x2b07, 0x2b22, 0x2b3b, 0x2b50, 0x2b50, 0x2b5c, + 0x29d9, 0x29f4, 0x2a3b, 0x2a56, 0x2a71, 0x2a89, 0x2aa8, 0x2ab4, + 0x2ab4, 0x2ab4, 0x2ab4, 0x2ab4, 0x2ac6, 0x2ac6, 0x2ad5, 0x2aea, + 0x2b02, 0x2b0e, 0x2b1a, 0x2b35, 0x2b4e, 0x2b63, 0x2b63, 0x2b6f, // Entry 240 - 27F - 0x2b68, 0x2b7a, 0x2b98, 0x2ba7, 0x2ba7, 0x2bbf, 0x2bd4, 0x2bf8, - 0x2bf8, 0x2c0a, 0x2c51, 0x2c5d, 0x2c76, 0x2c82, 0x2cc3, 0x2cc3, - 0x2cfa, 0x2d26, 0x2d63, 0x2d94, 0x2dc5, 0x2df6, 0x2e3a, 0x2e6e, - 0x2ea2, 0x2ea2, 0x2ed3, 0x2efb, 0x2f17, 0x2f2f, 0x2f6f, 0x2fa9, - 0x2fca, 0x2ffe, 0x3026, 0x304e, 0x307f, + 0x2b7b, 0x2b8d, 0x2bab, 0x2bba, 0x2bba, 0x2bd2, 0x2be7, 0x2c0b, + 0x2c0b, 0x2c1d, 0x2c64, 0x2c70, 0x2c89, 0x2c95, 0x2cd6, 0x2cd6, + 0x2d0d, 0x2d39, 0x2d76, 0x2da7, 0x2dd8, 0x2e09, 0x2e4d, 0x2e81, + 0x2eb5, 0x2eb5, 0x2ee6, 0x2f0e, 0x2f2a, 0x2f42, 0x2f82, 0x2fbc, + 0x2fdd, 0x3011, 0x3039, 0x3061, 0x3092, } // Size: 1250 bytes -const thLangStr string = "" + // Size: 13813 bytes +const thLangStr string = "" + // Size: 13852 bytes "อะฟาร์อับคาซอเวสตะแอฟริกานส์อาคันอัมฮาราอารากอนอาหรับอัสสัมอาวาร์ไอย์มาร" + "าอาเซอร์ไบจานบัชคีร์เบลารุสบัลแกเรียบิสลามาบัมบาราเบงกาลีทิเบตเบรตันบอ" + "สเนียกาตาลังเชเชนชามอร์โรคอร์ซิกาครีเช็กเชอร์ชสลาวิกชูวัชเวลส์เดนมาร์ก" + @@ -25071,15 +25079,15 @@ const thLangStr string = "" + // Size: 13813 bytes "ซูซูเมอโคเมอเรียนซีเรียแบบดั้งเดิมซีเรียไซลีเซียตูลูทิมเนเตโซเทเรโนเตต" + "ุมตีเกรทิฟโตเกเลาแซคเซอร์คลิงกอนทลิงกิตทาลิชทามาเชกไนอะซาตองกาท็อกพิซิ" + "นตูโรโยทาโรโกซาโคเนียซิมชีแอนตัตมุสลิมทุมบูกาตูวาลูตัสซาวัคตูวาทามาไซต" + - "์แอตลาสกลางอุดมูร์ตยูการิตอุมบุนดูรูทไวเวเนโต้เวปส์เฟลมิชตะวันตกเมน-ฟร" + - "านโกเนียโวทิกโวโรวุนจูวัลเซอร์วาลาโมวาเรย์วาโชวอล์เพอร์รีจีนอู๋คัลมืยค" + - "์เมเกรเลียโซกาเย้ายัปแยงเบนเยมบาเหงงกาตุกวางตุ้งซาโปเตกบลิสซิมโบลส์เซแ" + - "ลนด์เซนากาทามาไซต์โมร็อกโกมาตรฐานซูนิไม่มีข้อมูลภาษาซาซาอาหรับมาตรฐานส" + - "มัยใหม่เยอรมัน - ออสเตรียเยอรมันสูง (สวิส)อังกฤษ - ออสเตรเลียอังกฤษ - " + - "แคนาดาอังกฤษ - สหราชอาณาจักรอังกฤษ - อเมริกันสเปน - ละตินอเมริกาสเปน -" + - " ยุโรปสเปน - เม็กซิโกฝรั่งเศส - แคนาดาฝรั่งเศส (สวิส)แซกซอนใต้เฟลมิชโปรต" + - "ุเกส - บราซิลโปรตุเกส - ยุโรปมอลโดวาเซอร์โบ-โครเอเชียสวาฮีลี-คองโกจีนต" + - "ัวย่อจีนตัวเต็ม" + "์แอตลาสกลางอุดมูร์ตยูการิตอุมบุนดูภาษาที่ไม่รู้จักไวเวเนโต้เวปส์เฟลมิช" + + "ตะวันตกเมน-ฟรานโกเนียโวทิกโวโรวุนจูวัลเซอร์วาลาโมวาเรย์วาโชวอล์เพอร์รี" + + "จีนอู๋คัลมืยค์เมเกรเลียโซกาเย้ายัปแยงเบนเยมบาเหงงกาตุกวางตุ้งซาโปเตกบล" + + "ิสซิมโบลส์เซแลนด์เซนากาทามาไซต์โมร็อกโกมาตรฐานซูนิไม่มีข้อมูลภาษาซาซาอ" + + "าหรับมาตรฐานสมัยใหม่เยอรมัน - ออสเตรียเยอรมันสูง (สวิส)อังกฤษ - ออสเตร" + + "เลียอังกฤษ - แคนาดาอังกฤษ - สหราชอาณาจักรอังกฤษ - อเมริกันสเปน - ละติน" + + "อเมริกาสเปน - ยุโรปสเปน - เม็กซิโกฝรั่งเศส - แคนาดาฝรั่งเศส (สวิส)แซกซ" + + "อนใต้เฟลมิชโปรตุเกส - บราซิลโปรตุเกส - ยุโรปมอลโดวาเซอร์โบ-โครเอเชียสว" + + "าฮีลี-คองโกจีนตัวย่อจีนตัวเต็ม" var thLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -25160,18 +25168,18 @@ var thLangIdx = []uint16{ // 613 elements 0x2d88, 0x2da0, 0x2dac, 0x2dbb, 0x2dc7, 0x2dd9, 0x2de8, 0x2df7, 0x2e00, 0x2e15, 0x2e2d, 0x2e42, 0x2e57, 0x2e66, 0x2e7b, 0x2e9c, 0x2eb7, 0x2ec9, 0x2edb, 0x2ef3, 0x2f0b, 0x2f26, 0x2f3b, 0x2f4d, - 0x2f65, 0x2f71, 0x2fa7, 0x2fbf, 0x2fd4, 0x2fec, 0x2ff5, 0x2ffb, - 0x3010, 0x301f, 0x3046, 0x306e, 0x307d, 0x3089, 0x3098, 0x30b0, - 0x30c2, 0x30d4, 0x30e0, 0x3101, 0x3113, 0x312b, 0x3146, 0x3152, + 0x2f65, 0x2f71, 0x2fa7, 0x2fbf, 0x2fd4, 0x2fec, 0x301c, 0x3022, + 0x3037, 0x3046, 0x306d, 0x3095, 0x30a4, 0x30b0, 0x30bf, 0x30d7, + 0x30e9, 0x30fb, 0x3107, 0x3128, 0x313a, 0x3152, 0x316d, 0x3179, // Entry 240 - 27F - 0x315e, 0x3167, 0x3179, 0x3188, 0x31a0, 0x31b8, 0x31cd, 0x31f1, - 0x3206, 0x3218, 0x325d, 0x3269, 0x3296, 0x32a2, 0x32e1, 0x32e1, - 0x3311, 0x333e, 0x3371, 0x3398, 0x33d4, 0x3401, 0x3434, 0x3452, - 0x3479, 0x3479, 0x34a6, 0x34cd, 0x34e8, 0x34fa, 0x3527, 0x3551, - 0x3566, 0x3597, 0x35bc, 0x35d7, 0x35f5, + 0x3185, 0x318e, 0x31a0, 0x31af, 0x31c7, 0x31df, 0x31f4, 0x3218, + 0x322d, 0x323f, 0x3284, 0x3290, 0x32bd, 0x32c9, 0x3308, 0x3308, + 0x3338, 0x3365, 0x3398, 0x33bf, 0x33fb, 0x3428, 0x345b, 0x3479, + 0x34a0, 0x34a0, 0x34cd, 0x34f4, 0x350f, 0x3521, 0x354e, 0x3578, + 0x358d, 0x35be, 0x35e3, 0x35fe, 0x361c, } // Size: 1250 bytes -const trLangStr string = "" + // Size: 5927 bytes +const trLangStr string = "" + // Size: 5935 bytes "AfarAbhazcaAvestçeAfrikaancaAkanAmharcaAragoncaArapçaAssamcaAvar DiliAym" + "araAzericeBaşkırtçaBelarusçaBulgarcaBislamaBambaraBengalceTibetçeBretonc" + "aBoşnakçaKatalancaÇeçenceÇamorro diliKorsikacaKriceÇekçeKilise SlavcasıÇ" + @@ -25241,16 +25249,16 @@ const trLangStr string = "" + // Size: 5927 bytes "ilezyacaTulucaTimneTesoTerenoTetumTigreTivTokelau diliSahurcaKlingoncaTl" + "ingitTalışçaTamaşekNyasa TongaTok PisinTuroyoTarokoTsakoncaTsimshianTatç" + "aTumbukaTuvalyancaTasawaqTuvacaOrta Atlas TamazigtiUdmurtçaUgarit diliUm" + - "bunduKökenVaiVenedikçeVeps diliBatı FlamancaMain Frankonya DiliVotçaVõro" + - "VunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiKalmıkçaMegrelceSogaYaoYapça" + - "YangbenYembaNheengatuKantoncaZapotek diliBlis SembolleriZelandacaZenaga " + - "diliStandart Fas TamazigtiZuniceDilbilim içeriği yokZazacaModern Standar" + - "t ArapçaGüney AzericeAvusturya Almancasıİsviçre Yüksek AlmancasıAvustral" + - "ya İngilizcesiKanada İngilizcesiİngiliz İngilizcesiAmerikan İngilizcesiL" + - "atin Amerika İspanyolcasıAvrupa İspanyolcasıMeksika İspanyolcasıKanada F" + - "ransızcasıİsviçre FransızcasıAşağı SaksoncaFlamancaBrezilya Portekizcesi" + - "Avrupa PortekizcesiMoldovacaSırp-Hırvat DiliKongo SvahiliBasitleştirilmi" + - "ş ÇinceGeleneksel Çince" + "bunduBilinmeyen DilVaiVenedikçeVeps diliBatı FlamancaMain Frankonya Dili" + + "VotçaVõroVunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiKalmıkçaMegrelceSog" + + "aYaoYapçaYangbenYembaNheengatuKantoncaZapotek diliBlis SembolleriZelanda" + + "caZenaga diliStandart Fas TamazigtiZuniceDilbilim içeriği yokZazacaModer" + + "n Standart ArapçaGüney AzericeAvusturya Almancasıİsviçre Yüksek Almancas" + + "ıAvustralya İngilizcesiKanada İngilizcesiİngiliz İngilizcesiAmerikan İn" + + "gilizcesiLatin Amerika İspanyolcasıAvrupa İspanyolcasıMeksika İspanyolca" + + "sıKanada Fransızcasıİsviçre FransızcasıAşağı SaksoncaFlamancaBrezilya Po" + + "rtekizcesiAvrupa PortekizcesiMoldovacaSırp-Hırvat DiliKongo SvahiliBasit" + + "leştirilmiş ÇinceGeleneksel Çince" var trLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -25331,18 +25339,18 @@ var trLangIdx = []uint16{ // 613 elements 0x137c, 0x1385, 0x138b, 0x1390, 0x1394, 0x139a, 0x139f, 0x13a4, 0x13a7, 0x13b3, 0x13ba, 0x13c3, 0x13ca, 0x13d4, 0x13dc, 0x13e7, 0x13f0, 0x13f6, 0x13fc, 0x1404, 0x140d, 0x1413, 0x141a, 0x1424, - 0x142b, 0x1431, 0x1445, 0x144e, 0x1459, 0x1460, 0x1466, 0x1469, - 0x1473, 0x147c, 0x148a, 0x149d, 0x14a3, 0x14a8, 0x14ad, 0x14b3, - 0x14b9, 0x14be, 0x14c3, 0x14cb, 0x14d6, 0x14e0, 0x14e8, 0x14ec, + 0x142b, 0x1431, 0x1445, 0x144e, 0x1459, 0x1460, 0x146e, 0x1471, + 0x147b, 0x1484, 0x1492, 0x14a5, 0x14ab, 0x14b0, 0x14b5, 0x14bb, + 0x14c1, 0x14c6, 0x14cb, 0x14d3, 0x14de, 0x14e8, 0x14f0, 0x14f4, // Entry 240 - 27F - 0x14ef, 0x14f5, 0x14fc, 0x1501, 0x150a, 0x1512, 0x151e, 0x152d, - 0x1536, 0x1541, 0x1557, 0x155d, 0x1573, 0x1579, 0x1590, 0x159e, - 0x15b2, 0x15ce, 0x15e5, 0x15f8, 0x160d, 0x1622, 0x163e, 0x1653, - 0x1669, 0x1669, 0x167d, 0x1694, 0x16a5, 0x16ad, 0x16c2, 0x16d5, - 0x16de, 0x16f0, 0x16fd, 0x1716, 0x1727, + 0x14f7, 0x14fd, 0x1504, 0x1509, 0x1512, 0x151a, 0x1526, 0x1535, + 0x153e, 0x1549, 0x155f, 0x1565, 0x157b, 0x1581, 0x1598, 0x15a6, + 0x15ba, 0x15d6, 0x15ed, 0x1600, 0x1615, 0x162a, 0x1646, 0x165b, + 0x1671, 0x1671, 0x1685, 0x169c, 0x16ad, 0x16b5, 0x16ca, 0x16dd, + 0x16e6, 0x16f8, 0x1705, 0x171e, 0x172f, } // Size: 1250 bytes -const ukLangStr string = "" + // Size: 9189 bytes +const ukLangStr string = "" + // Size: 9202 bytes "афарськаабхазькаавестійськаафрикаансаканамхарськаарагонськаарабськаассам" + "ськааварськааймараазербайджанськабашкирськабілоруськаболгарськабісламаб" + "амбарабенгальськатибетськабретонськабоснійськакаталонськачеченськачамор" + @@ -25401,14 +25409,14 @@ const ukLangStr string = "" + // Size: 9189 bytes "тсонінкесогдійськасранан тонгосерерсахосукумасусушумерськакоморськасирі" + "йська класичнасирійськатемнетесотеренотетумтигретівтокелауклінгонтлінгі" + "ттамашекньяса тонгаток-пісінтарокоцимшиантумбукатувалутасавактувинськац" + - "ентральномароканська тамазітудмуртськаугаритськаумбундукоріньваїводська" + - "вуньовалзерськаваламоварайвашовалпірікалмицькасогаяояпянгбенємбакантонс" + - "ькасапотекськаблісса мовазенагастандартна марокканська берберськазуньїн" + - "емає мовного вмістузазакісучасна стандартна арабськапівденноазербайджан" + - "ськаверхньонімецька (Швейцарія)британська англійськаамериканська англій" + - "ськаіспанська (Європа)нижньосаксонськафламандськапортугальська (Європа)" + - "молдавськасербсько-хорватськаконгійське суахілікитайська спрощенакитайс" + - "ька традиційна" + "ентральномароканська тамазітудмуртськаугаритськаумбундуневідома моваваї" + + "водськавуньовалзерськаваламоварайвашовалпірікалмицькасогаяояпянгбенємба" + + "кантонськасапотекськаблісса мовазенагастандартна марокканська берберськ" + + "азуньїнемає мовного вмістузазакісучасна стандартна арабськапівденноазер" + + "байджанськаверхньонімецька (Швейцарія)британська англійськаамериканська" + + " англійськаіспанська (Європа)нижньосаксонськафламандськапортугальська (Є" + + "вропа)молдавськасербсько-хорватськаконгійське суахілікитайська спрощена" + + "китайська традиційна" var ukLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -25489,18 +25497,18 @@ var ukLangIdx = []uint16{ // 613 elements 0x1f12, 0x1f12, 0x1f12, 0x1f1c, 0x1f24, 0x1f30, 0x1f3a, 0x1f44, 0x1f4a, 0x1f58, 0x1f58, 0x1f66, 0x1f74, 0x1f74, 0x1f82, 0x1f97, 0x1fa8, 0x1fa8, 0x1fb4, 0x1fb4, 0x1fc2, 0x1fc2, 0x1fd0, 0x1fdc, - 0x1fea, 0x1ffc, 0x2035, 0x2049, 0x205d, 0x206b, 0x2077, 0x207d, - 0x207d, 0x207d, 0x207d, 0x207d, 0x208b, 0x208b, 0x2095, 0x20a9, - 0x20b5, 0x20bf, 0x20c7, 0x20d5, 0x20d5, 0x20e7, 0x20e7, 0x20ef, + 0x1fea, 0x1ffc, 0x2035, 0x2049, 0x205d, 0x206b, 0x2084, 0x208a, + 0x208a, 0x208a, 0x208a, 0x208a, 0x2098, 0x2098, 0x20a2, 0x20b6, + 0x20c2, 0x20cc, 0x20d4, 0x20e2, 0x20e2, 0x20f4, 0x20f4, 0x20fc, // Entry 240 - 27F - 0x20f3, 0x20f7, 0x2103, 0x210b, 0x210b, 0x211f, 0x2135, 0x214a, - 0x214a, 0x2156, 0x2198, 0x21a2, 0x21c8, 0x21d4, 0x2208, 0x2236, - 0x2236, 0x2269, 0x2269, 0x2269, 0x2292, 0x22bf, 0x22bf, 0x22e0, - 0x22e0, 0x22e0, 0x22e0, 0x22e0, 0x2300, 0x2316, 0x2316, 0x233f, - 0x2353, 0x2378, 0x239b, 0x23be, 0x23e5, + 0x2100, 0x2104, 0x2110, 0x2118, 0x2118, 0x212c, 0x2142, 0x2157, + 0x2157, 0x2163, 0x21a5, 0x21af, 0x21d5, 0x21e1, 0x2215, 0x2243, + 0x2243, 0x2276, 0x2276, 0x2276, 0x229f, 0x22cc, 0x22cc, 0x22ed, + 0x22ed, 0x22ed, 0x22ed, 0x22ed, 0x230d, 0x2323, 0x2323, 0x234c, + 0x2360, 0x2385, 0x23a8, 0x23cb, 0x23f2, } // Size: 1250 bytes -const urLangStr string = "" + // Size: 5313 bytes +const urLangStr string = "" + // Size: 5330 bytes "افارابقازیانایفریکانزاکانامہاریاراگونیزعربیآسامیاواریایماراآذربائیجانیبا" + "شکیربیلاروسیبلغاریبسلامابمبارابنگالیتبتیبریٹنبوسنیکیٹالانچیچنکموروکوراس" + "یکنچیکچرچ سلاؤچوواشویلشڈینشجرمنڈیویہیژونگکھاایویونانیانگریزیایسپرانٹوہس" + @@ -25533,13 +25541,13 @@ const urLangStr string = "" + // Size: 5313 bytes "یسیلینسکاٹجنوبی کردسیناكويرابورو سينیتشلحيتشانجنوبی سامیلول سامیاناری س" + "امیسکولٹ سامیسوننکےسرانن ٹونگوساہوسکوماکوموریائیسریانیٹمنےتیسوٹیٹمٹگرےک" + "لنگنٹوک پِسِنٹوروکوٹمبوکاتووالوتاساواقتووینینسینٹرل ایٹلس ٹمازائٹادمورت" + - "اومبوندوروٹوائیونجووالسروولایتاوارےوارلپیریwuuکالمیکسوگایانگبینیمباکینٹ" + - "ونیزاسٹینڈرڈ مراقشی تمازیقیزونیکوئی لسانی مواد نہیںزازاماڈرن اسٹینڈرڈ ع" + - "ربیآزربائیجانی (عربی)آسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکینیڈ" + - "ین انگریزیبرطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییورپی ہسپان" + - "ویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرازیلی پرتگ" + - "الییورپی پرتگالیمالدوواسربو-کروئیشینکانگو سواحلیچینی (آسان کردہ)روایتی " + - "چینی" + "اومبوندونامعلوم زبانوائیونجووالسروولایتاوارےوارلپیریwuuکالمیکسوگایانگبی" + + "نیمباکینٹونیزاسٹینڈرڈ مراقشی تمازیقیزونیکوئی لسانی مواد نہیںزازاماڈرن ا" + + "سٹینڈرڈ عربیآزربائیجانی (عربی)آسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگ" + + "ریزیکینیڈین انگریزیبرطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییو" + + "رپی ہسپانویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرا" + + "زیلی پرتگالییورپی پرتگالیمالدوواسربو-کروئیشینکانگو سواحلیچینی (آسان کرد" + + "ہ)روایتی چینی" var urLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -25620,15 +25628,15 @@ var urLangIdx = []uint16{ // 613 elements 0x10dc, 0x10dc, 0x10dc, 0x10e4, 0x10ec, 0x10ec, 0x10f4, 0x10fc, 0x10fc, 0x10fc, 0x10fc, 0x1106, 0x1106, 0x1106, 0x1106, 0x1106, 0x1117, 0x1117, 0x1123, 0x1123, 0x1123, 0x1123, 0x112f, 0x113b, - 0x1149, 0x1157, 0x117d, 0x1189, 0x1189, 0x1199, 0x119f, 0x11a7, - 0x11a7, 0x11a7, 0x11a7, 0x11a7, 0x11a7, 0x11a7, 0x11af, 0x11b9, - 0x11c7, 0x11cf, 0x11cf, 0x11df, 0x11e2, 0x11ee, 0x11ee, 0x11f6, + 0x1149, 0x1157, 0x117d, 0x1189, 0x1189, 0x1199, 0x11b0, 0x11b8, + 0x11b8, 0x11b8, 0x11b8, 0x11b8, 0x11b8, 0x11b8, 0x11c0, 0x11ca, + 0x11d8, 0x11e0, 0x11e0, 0x11f0, 0x11f3, 0x11ff, 0x11ff, 0x1207, // Entry 240 - 27F - 0x11f6, 0x11f6, 0x1204, 0x120c, 0x120c, 0x121c, 0x121c, 0x121c, - 0x121c, 0x121c, 0x1248, 0x1250, 0x1275, 0x127d, 0x12a1, 0x12c2, - 0x12db, 0x12f5, 0x1318, 0x1335, 0x1352, 0x136d, 0x1395, 0x13ae, - 0x13cb, 0x13cb, 0x13ea, 0x13fd, 0x1410, 0x141c, 0x1439, 0x1452, - 0x1460, 0x1479, 0x1490, 0x14ac, 0x14c1, + 0x1207, 0x1207, 0x1215, 0x121d, 0x121d, 0x122d, 0x122d, 0x122d, + 0x122d, 0x122d, 0x1259, 0x1261, 0x1286, 0x128e, 0x12b2, 0x12d3, + 0x12ec, 0x1306, 0x1329, 0x1346, 0x1363, 0x137e, 0x13a6, 0x13bf, + 0x13dc, 0x13dc, 0x13fb, 0x140e, 0x1421, 0x142d, 0x144a, 0x1463, + 0x1471, 0x148a, 0x14a1, 0x14bd, 0x14d2, } // Size: 1250 bytes const uzLangStr string = "" + // Size: 2777 bytes @@ -25664,13 +25672,13 @@ const uzLangStr string = "" + // Size: 2777 bytes "angusitsiliyashotlandjanubiy kurdsenakoyraboro-sennitashelxitshanjanubiy" + " saamlule-saaminari-saamskolt-saamsoninkesranan-tongosukumaqamartimnetes" + "otetumtigreklingontok-piksintarokotumbukatuvalutasavaktuvamarkaziy atlas" + - " tamazigxtudmurtumbundutub aholi tilivaivunjovarayvalbiriwuuqalmoqsogaya" + - "ngbenyembakantontamazigxtzunitil tarkibi yo‘qzazastandart arabnemis (Avs" + - "triya)yuqori nemis (Shveytsariya)ingliz (Avstraliya)ingliz (Kanada)ingli" + - "z (Britaniya)ingliz (Amerika)ispan (Lotin Amerikasi)ispan (Yevropa)ispan" + - " (Meksika)fransuz (Kanada)fransuz (Shveytsariya)quyi saksonflamandportug" + - "al (Braziliya)portugal (Yevropa)moldovansuaxili (Kongo)xitoy (soddalashg" + - "an)xitoy (an’anaviy)" + " tamazigxtudmurtumbundunoma’lum tilvaivunjovarayvalbiriwuuqalmoqsogayang" + + "benyembakantontamazigxtzunitil tarkibi yo‘qzazastandart arabnemis (Avstr" + + "iya)yuqori nemis (Shveytsariya)ingliz (Avstraliya)ingliz (Kanada)ingliz " + + "(Britaniya)ingliz (Amerika)ispan (Lotin Amerikasi)ispan (Yevropa)ispan (" + + "Meksika)fransuz (Kanada)fransuz (Shveytsariya)quyi saksonflamandportugal" + + " (Braziliya)portugal (Yevropa)moldovansuaxili (Kongo)xitoy (soddalashgan" + + ")xitoy (an’anaviy)" var uzLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -25762,7 +25770,7 @@ var uzLangIdx = []uint16{ // 613 elements 0x0aa3, 0x0aa3, 0x0ab2, 0x0ac6, 0x0ad9, } // Size: 1250 bytes -const viLangStr string = "" + // Size: 8662 bytes +const viLangStr string = "" + // Size: 8681 bytes "Tiếng AfarTiếng AbkhaziaTiếng AvestanTiếng AfrikaansTiếng AkanTiếng Amha" + "ricTiếng AragonTiếng Ả RậpTiếng AssamTiếng AvaricTiếng AymaraTiếng Azerb" + "aijanTiếng BashkirTiếng BelarusTiếng BulgariaTiếng BislamaTiếng BambaraT" + @@ -25856,15 +25864,15 @@ const viLangStr string = "" + // Size: 8662 bytes "iếng TigreTiếng TivTiếng TokelauTiếng KlingonTiếng TlingitTiếng Tamashek" + "Tiếng Nyasa TongaTiếng Tok PisinTiếng TarokoTiếng TsimshianTiếng Tumbuka" + "Tiếng TuvaluTiếng TasawaqTiếng TuvinianTiếng Tamazight Miền Trung Ma-rốc" + - "Tiếng UdmurtTiếng UgariticTiếng UmbunduTiếng RootTiếng VaiTiếng VoticTiế" + - "ng VunjoTiếng WalserTiếng WalamoTiếng WarayTiếng WashoTiếng WarlpiriTiến" + - "g NgôTiếng KalmykTiếng SogaTiếng YaoTiếng YapTiếng YangbenTiếng YembaTiế" + - "ng Quảng ĐôngTiếng ZapotecKý hiệu BlissymbolsTiếng ZenagaTiếng Tamazight" + - " Chuẩn của Ma-rốcTiếng ZuniKhông có nội dung ngôn ngữTiếng ZazaTiếng Ả R" + - "ập Hiện đạiTiếng Thượng Giéc-man (Thụy Sĩ)Tiếng Anh (Anh)Tiếng Anh (Mỹ" + - ")Tiếng Tây Ban Nha (Mỹ La tinh)Tiếng Tây Ban Nha (Châu Âu)Tiếng Hạ Saxon" + - "Tiếng FlemishTiếng Bồ Đào Nha (Châu Âu)Tiếng MoldovaTiếng Serbo-CroatiaT" + - "iếng Swahili Congo" + "Tiếng UdmurtTiếng UgariticTiếng UmbunduNgôn ngữ không xác địnhTiếng VaiT" + + "iếng VoticTiếng VunjoTiếng WalserTiếng WalamoTiếng WarayTiếng WashoTiếng" + + " WarlpiriTiếng NgôTiếng KalmykTiếng SogaTiếng YaoTiếng YapTiếng YangbenT" + + "iếng YembaTiếng Quảng ĐôngTiếng ZapotecKý hiệu BlissymbolsTiếng ZenagaTi" + + "ếng Tamazight Chuẩn của Ma-rốcTiếng ZuniKhông có nội dung ngôn ngữTiến" + + "g ZazaTiếng Ả Rập Hiện đạiTiếng Thượng Giéc-man (Thụy Sĩ)Tiếng Anh (Anh)" + + "Tiếng Anh (Mỹ)Tiếng Tây Ban Nha (Mỹ La tinh)Tiếng Tây Ban Nha (Châu Âu)T" + + "iếng Hạ SaxonTiếng FlemishTiếng Bồ Đào Nha (Châu Âu)Tiếng MoldovaTiếng S" + + "erbo-CroatiaTiếng Swahili Congo" var viLangIdx = []uint16{ // 611 elements // Entry 0 - 3F @@ -25945,18 +25953,18 @@ var viLangIdx = []uint16{ // 611 elements 0x1dd8, 0x1dd8, 0x1dd8, 0x1de5, 0x1df1, 0x1dff, 0x1e0c, 0x1e19, 0x1e24, 0x1e33, 0x1e33, 0x1e42, 0x1e51, 0x1e51, 0x1e61, 0x1e74, 0x1e85, 0x1e85, 0x1e93, 0x1e93, 0x1ea4, 0x1ea4, 0x1eb3, 0x1ec1, - 0x1ed0, 0x1ee0, 0x1f07, 0x1f15, 0x1f25, 0x1f34, 0x1f40, 0x1f4b, - 0x1f4b, 0x1f4b, 0x1f4b, 0x1f4b, 0x1f58, 0x1f58, 0x1f65, 0x1f73, - 0x1f81, 0x1f8e, 0x1f9b, 0x1fab, 0x1fb7, 0x1fc5, 0x1fc5, 0x1fd1, + 0x1ed0, 0x1ee0, 0x1f07, 0x1f15, 0x1f25, 0x1f34, 0x1f53, 0x1f5e, + 0x1f5e, 0x1f5e, 0x1f5e, 0x1f5e, 0x1f6b, 0x1f6b, 0x1f78, 0x1f86, + 0x1f94, 0x1fa1, 0x1fae, 0x1fbe, 0x1fca, 0x1fd8, 0x1fd8, 0x1fe4, // Entry 240 - 27F - 0x1fdc, 0x1fe7, 0x1ff6, 0x2003, 0x2003, 0x2019, 0x2028, 0x203e, - 0x203e, 0x204c, 0x2074, 0x2080, 0x20a1, 0x20ad, 0x20cc, 0x20cc, - 0x20cc, 0x20f4, 0x20f4, 0x20f4, 0x2105, 0x2117, 0x213a, 0x215a, - 0x215a, 0x215a, 0x215a, 0x215a, 0x216c, 0x217b, 0x217b, 0x219d, - 0x21ac, 0x21c1, 0x21d6, + 0x1fef, 0x1ffa, 0x2009, 0x2016, 0x2016, 0x202c, 0x203b, 0x2051, + 0x2051, 0x205f, 0x2087, 0x2093, 0x20b4, 0x20c0, 0x20df, 0x20df, + 0x20df, 0x2107, 0x2107, 0x2107, 0x2118, 0x212a, 0x214d, 0x216d, + 0x216d, 0x216d, 0x216d, 0x216d, 0x217f, 0x218e, 0x218e, 0x21b0, + 0x21bf, 0x21d4, 0x21e9, } // Size: 1246 bytes -const zhLangStr string = "" + // Size: 6428 bytes +const zhLangStr string = "" + // Size: 6431 bytes "阿法尔文阿布哈西亚语阿维斯塔文南非荷兰语阿肯文阿姆哈拉文阿拉贡文阿拉伯语阿萨姆文阿瓦尔文艾马拉文阿塞拜疆语巴什基尔文白俄罗斯语保加利亚语比斯拉马" + "文班巴拉文孟加拉语藏语布列塔尼文波斯尼亚语加泰罗尼亚语车臣文查莫罗文科西嘉文克里族文捷克语教会斯拉夫文楚瓦什文威尔士语丹麦语德文迪维希文宗卡" + "文埃维文希腊语英语世界语西班牙文爱沙尼亚语巴斯克文波斯文富拉文芬兰语斐济文法罗文法语西弗里西亚文爱尔兰语苏格兰盖尔文加利西亚语瓜拉尼文古吉拉" + @@ -25984,10 +25992,10 @@ const zhLangStr string = "" + // Size: 6428 bytes "斯坦文拉帕努伊文拉罗汤加文兰博文吉普赛文阿罗蒙文罗瓦文桑达韦文萨哈文萨马利亚阿拉姆文桑布鲁文萨萨克文桑塔利文甘拜文桑古文西西里文苏格兰文南库" + "尔德文塞内卡文塞纳文塞尔库普文东桑海文古爱尔兰文希尔哈文掸文乍得阿拉伯文悉达摩文南萨米文律勒萨米文伊纳里萨米文斯科特萨米文索宁克文粟特文苏里" + "南汤加文塞雷尔文萨霍文苏库马文苏苏文苏美尔文科摩罗文古典叙利亚文古叙利亚文泰姆奈文特索文特伦诺文德顿文提格雷文蒂夫文托克劳文克林贡文特林吉特" + - "文塔马奇克文尼亚萨汤加文托克皮辛文太鲁阁文钦西安文通布卡文图瓦卢文北桑海文图瓦文塔马齐格特文乌德穆尔特文乌加里特文翁本杜文根语言瓦伊文维普森" + - "文沃提克文温旧文瓦尔瑟文瓦拉莫文瓦瑞文瓦绍文瓦尔皮瑞文吴语卡尔梅克文索加文瑶族语雅浦文洋卞文耶姆巴文粤语萨波蒂克文布里斯符号泽纳加文标准摩洛" + - "哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯语南阿塞拜疆文奥地利德文瑞士高地德文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文低萨克森文佛兰" + - "德文巴西葡萄牙文欧洲葡萄牙文摩尔多瓦文塞尔维亚-克罗地亚文刚果斯瓦希里文简体中文繁体中文" + "文塔马奇克文尼亚萨汤加文托克皮辛文太鲁阁文钦西安文通布卡文图瓦卢文北桑海文图瓦文塔马齐格特文乌德穆尔特文乌加里特文翁本杜文未知语言瓦伊文维普" + + "森文沃提克文温旧文瓦尔瑟文瓦拉莫文瓦瑞文瓦绍文瓦尔皮瑞文吴语卡尔梅克文索加文瑶族语雅浦文洋卞文耶姆巴文粤语萨波蒂克文布里斯符号泽纳加文标准摩" + + "洛哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯语南阿塞拜疆文奥地利德文瑞士高地德文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文低萨克森文佛" + + "兰德文巴西葡萄牙文欧洲葡萄牙文摩尔多瓦文塞尔维亚-克罗地亚文刚果斯瓦希里文简体中文繁体中文" var zhLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -26068,18 +26076,18 @@ var zhLangIdx = []uint16{ // 613 elements 0x15c1, 0x15c1, 0x15c1, 0x15cd, 0x15d6, 0x15e2, 0x15eb, 0x15f7, 0x1600, 0x160c, 0x160c, 0x1618, 0x1627, 0x1627, 0x1636, 0x1648, 0x1657, 0x1657, 0x1663, 0x1663, 0x166f, 0x166f, 0x167b, 0x1687, - 0x1693, 0x169c, 0x16ae, 0x16c0, 0x16cf, 0x16db, 0x16e4, 0x16ed, - 0x16ed, 0x16f9, 0x16f9, 0x16f9, 0x1705, 0x1705, 0x170e, 0x171a, - 0x1726, 0x172f, 0x1738, 0x1747, 0x174d, 0x175c, 0x175c, 0x1765, + 0x1693, 0x169c, 0x16ae, 0x16c0, 0x16cf, 0x16db, 0x16e7, 0x16f0, + 0x16f0, 0x16fc, 0x16fc, 0x16fc, 0x1708, 0x1708, 0x1711, 0x171d, + 0x1729, 0x1732, 0x173b, 0x174a, 0x1750, 0x175f, 0x175f, 0x1768, // Entry 240 - 27F - 0x176e, 0x1777, 0x1780, 0x178c, 0x178c, 0x1792, 0x17a1, 0x17b0, - 0x17b0, 0x17bc, 0x17da, 0x17e3, 0x17f2, 0x17fb, 0x1813, 0x1825, - 0x1834, 0x1846, 0x1846, 0x1846, 0x1846, 0x1846, 0x185e, 0x1870, - 0x1885, 0x1885, 0x1885, 0x1885, 0x1894, 0x18a0, 0x18b2, 0x18c4, - 0x18d3, 0x18ef, 0x1904, 0x1910, 0x191c, + 0x1771, 0x177a, 0x1783, 0x178f, 0x178f, 0x1795, 0x17a4, 0x17b3, + 0x17b3, 0x17bf, 0x17dd, 0x17e6, 0x17f5, 0x17fe, 0x1816, 0x1828, + 0x1837, 0x1849, 0x1849, 0x1849, 0x1849, 0x1849, 0x1861, 0x1873, + 0x1888, 0x1888, 0x1888, 0x1888, 0x1897, 0x18a3, 0x18b5, 0x18c7, + 0x18d6, 0x18f2, 0x1907, 0x1913, 0x191f, } // Size: 1250 bytes -const zhHantLangStr string = "" + // Size: 7573 bytes +const zhHantLangStr string = "" + // Size: 7576 bytes "阿法文阿布哈茲文阿維斯塔文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什喀爾文白俄羅斯文保加利亞文比斯拉馬文班" + "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰蘭文車臣文查莫洛文科西嘉文克里文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗卡文埃維文希" + "臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉尼文古吉拉特文曼島文" + @@ -26113,10 +26121,10 @@ const zhHantLangStr string = "" + // Size: 7573 bytes "東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納里薩米文斯科特薩米文索尼基文索格" + "底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆文特索文泰雷諾文泰頓文蒂格雷文" + "提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克尼恩文欽西安文穆斯林塔特文圖姆布卡文" + - "吐瓦魯文北桑海文圖瓦文中阿特拉斯塔馬塞特文烏德穆爾特文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-法蘭克尼亞文沃提克文佛羅文" + - "溫舊文瓦爾瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤納" + - "加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(" + - "剛果)簡體中文繁體中文" + "吐瓦魯文北桑海文圖瓦文中阿特拉斯塔馬塞特文烏德穆爾特文烏加列文姆本杜文未知語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-法蘭克尼亞文沃提克文佛羅" + + "文溫舊文瓦爾瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤" + + "納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文" + + "(剛果)簡體中文繁體中文" var zhHantLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -26197,18 +26205,18 @@ var zhHantLangIdx = []uint16{ // 613 elements 0x19e3, 0x19f2, 0x19fb, 0x1a04, 0x1a0d, 0x1a19, 0x1a22, 0x1a2e, 0x1a37, 0x1a43, 0x1a4f, 0x1a5b, 0x1a6a, 0x1a76, 0x1a85, 0x1a9d, 0x1aa9, 0x1ab5, 0x1ac1, 0x1ad3, 0x1adf, 0x1af1, 0x1b00, 0x1b0c, - 0x1b18, 0x1b21, 0x1b3f, 0x1b51, 0x1b5d, 0x1b69, 0x1b72, 0x1b7b, - 0x1b87, 0x1b93, 0x1ba2, 0x1bbb, 0x1bc7, 0x1bd0, 0x1bd9, 0x1be5, - 0x1bf1, 0x1bfa, 0x1c03, 0x1c0f, 0x1c15, 0x1c24, 0x1c33, 0x1c3c, + 0x1b18, 0x1b21, 0x1b3f, 0x1b51, 0x1b5d, 0x1b69, 0x1b75, 0x1b7e, + 0x1b8a, 0x1b96, 0x1ba5, 0x1bbe, 0x1bca, 0x1bd3, 0x1bdc, 0x1be8, + 0x1bf4, 0x1bfd, 0x1c06, 0x1c12, 0x1c18, 0x1c27, 0x1c36, 0x1c3f, // Entry 240 - 27F - 0x1c42, 0x1c4b, 0x1c54, 0x1c60, 0x1c6f, 0x1c75, 0x1c84, 0x1c93, - 0x1c9c, 0x1ca8, 0x1cc6, 0x1ccf, 0x1cde, 0x1ce7, 0x1cff, 0x1cff, - 0x1cff, 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d17, - 0x1d17, 0x1d17, 0x1d17, 0x1d17, 0x1d29, 0x1d35, 0x1d35, 0x1d35, - 0x1d44, 0x1d62, 0x1d7d, 0x1d89, 0x1d95, + 0x1c45, 0x1c4e, 0x1c57, 0x1c63, 0x1c72, 0x1c78, 0x1c87, 0x1c96, + 0x1c9f, 0x1cab, 0x1cc9, 0x1cd2, 0x1ce1, 0x1cea, 0x1d02, 0x1d02, + 0x1d02, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, + 0x1d1a, 0x1d1a, 0x1d1a, 0x1d1a, 0x1d2c, 0x1d38, 0x1d38, 0x1d38, + 0x1d47, 0x1d65, 0x1d80, 0x1d8c, 0x1d98, } // Size: 1250 bytes -const zuLangStr string = "" + // Size: 4670 bytes +const zuLangStr string = "" + // Size: 4680 bytes "isi-Afarisi-Abkhaziani-Afrikaansisi-Akanisi-Amharicisi-Aragoneseisi-Arab" + "icisi-Assameseisi-Avaricisi-Aymaraisi-Azerbaijaniisi-Bashkirisi-Belarusi" + "anisi-Bulgarii-Bislamaisi-Bambaraisi-Bengaliisi-Tibetanisi-Bretonisi-Bos" + @@ -26265,15 +26273,15 @@ const zuLangStr string = "" + // Size: 4670 bytes "ri Samiisi-Skolt Samii-Soninkei-Sranan Tongoi-Sahoi-Sukumaisi-Comoriani-" + "Syriacisi-Timneisi-Tesoisi-Tetumisi-Tigreisi-Klingonisi-Tok Pisinisi-Tar" + "okoisi-Tumbukaisi-Tuvaluisi-Tasawaqisi-Tuvinianisi-Central Atlas Tamazig" + - "htisi-Udmurtisi-Umbundui-Rootisi-VaiisiVunjoisi-Walserisi-Wolayttaisi-Wa" + - "rayisi-Warlpiriisi-Wu Chineseisi-Kalmykisi-Sogaisi-Yangbenisi-Yembaisi-C" + - "antoneseisi-Moroccan Tamazight esivamileisi-Zuniakukho okuqukethwe kolim" + - "iisi-Zazaisi-Arabic esivamile sesimanjeisi-Austrian Germani-Swiss High G" + - "ermanisi-Austrillian Englishi-Canadian Englishi-British Englishi-America" + - "n Englishisi-Latin American Spanishi-European Spanishi-Mexican Spanishi-" + - "Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Flemishisi-Brazillian Port" + - "ugueseisi-European Portugueseisi-Moldavianisi-Serbo-Croatianisi-Congo Sw" + - "ahiliisi-Chinese (esenziwe-lula)isi-Chinese (Okosiko)" + "htisi-Udmurtisi-Umbunduulimi olungaziwaisi-VaiisiVunjoisi-Walserisi-Wola" + + "yttaisi-Warayisi-Warlpiriisi-Wu Chineseisi-Kalmykisi-Sogaisi-Yangbenisi-" + + "Yembaisi-Cantoneseisi-Moroccan Tamazight esivamileisi-Zuniakukho okuquke" + + "thwe kolimiisi-Zazaisi-Arabic esivamile sesimanjeisi-Austrian Germani-Sw" + + "iss High Germanisi-Austrillian Englishi-Canadian Englishi-British Englis" + + "hi-American Englishisi-Latin American Spanishi-European Spanishi-Mexican" + + " Spanishi-Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Flemishisi-Brazi" + + "llian Portugueseisi-European Portugueseisi-Moldavianisi-Serbo-Croatianis" + + "i-Congo Swahiliisi-Chinese (esenziwe-lula)isi-Chinese (Okosiko)" var zuLangIdx = []uint16{ // 613 elements // Entry 0 - 3F @@ -26354,18 +26362,18 @@ var zuLangIdx = []uint16{ // 613 elements 0x0f3f, 0x0f3f, 0x0f3f, 0x0f48, 0x0f50, 0x0f50, 0x0f59, 0x0f62, 0x0f62, 0x0f62, 0x0f62, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f7a, 0x0f7a, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f8f, 0x0f99, - 0x0fa4, 0x0fb0, 0x0fcb, 0x0fd5, 0x0fd5, 0x0fe0, 0x0fe6, 0x0fed, - 0x0fed, 0x0fed, 0x0fed, 0x0fed, 0x0fed, 0x0fed, 0x0ff5, 0x0fff, - 0x100b, 0x1014, 0x1014, 0x1020, 0x102e, 0x1038, 0x1038, 0x1040, + 0x0fa4, 0x0fb0, 0x0fcb, 0x0fd5, 0x0fd5, 0x0fe0, 0x0ff0, 0x0ff7, + 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, 0x0fff, 0x1009, + 0x1015, 0x101e, 0x101e, 0x102a, 0x1038, 0x1042, 0x1042, 0x104a, // Entry 240 - 27F - 0x1040, 0x1040, 0x104b, 0x1054, 0x1054, 0x1061, 0x1061, 0x1061, - 0x1061, 0x1061, 0x1081, 0x1089, 0x10a2, 0x10aa, 0x10c8, 0x10c8, - 0x10db, 0x10ee, 0x1105, 0x1117, 0x1128, 0x113a, 0x1154, 0x1166, - 0x1177, 0x1177, 0x1188, 0x1196, 0x11a3, 0x11ae, 0x11c7, 0x11de, - 0x11eb, 0x11fd, 0x120e, 0x1229, 0x123e, + 0x104a, 0x104a, 0x1055, 0x105e, 0x105e, 0x106b, 0x106b, 0x106b, + 0x106b, 0x106b, 0x108b, 0x1093, 0x10ac, 0x10b4, 0x10d2, 0x10d2, + 0x10e5, 0x10f8, 0x110f, 0x1121, 0x1132, 0x1144, 0x115e, 0x1170, + 0x1181, 0x1181, 0x1192, 0x11a0, 0x11ad, 0x11b8, 0x11d1, 0x11e8, + 0x11f5, 0x1207, 0x1218, 0x1233, 0x1248, } // Size: 1250 bytes -// Total size for lang: 1022818 bytes (1022 KB) +// Total size for lang: 1024178 bytes (1024 KB) // Number of keys: 175 var ( @@ -50333,4 +50341,4 @@ var selfHeaders = [1]header{ // Total size for self: 4040 bytes (4 KB) -// Total table size 2127659 bytes (2077KiB); checksum: E92D966F +// Total table size 2129019 bytes (2079KiB); checksum: C21E1902 diff --git a/vendor/golang.org/x/text/language/doc.go b/vendor/golang.org/x/text/language/doc.go new file mode 100644 index 000000000..8afecd50e --- /dev/null +++ b/vendor/golang.org/x/text/language/doc.go @@ -0,0 +1,102 @@ +// Copyright 2017 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 language implements BCP 47 language tags and related functionality. +// +// The most important function of package language is to match a list of +// user-preferred languages to a list of supported languages. +// It alleviates the developer of dealing with the complexity of this process +// and provides the user with the best experience +// (see https://blog.golang.org/matchlang). +// +// +// Matching preferred against supported languages +// +// A Matcher for an application that supports English, Australian English, +// Danish, and standard Mandarin can be created as follows: +// +// var matcher = language.NewMatcher([]language.Tag{ +// language.English, // The first language is used as fallback. +// language.MustParse("en-AU"), +// language.Danish, +// language.Chinese, +// }) +// +// This list of supported languages is typically implied by the languages for +// which there exists translations of the user interface. +// +// User-preferred languages usually come as a comma-separated list of BCP 47 +// language tags. +// The MatchString finds best matches for such strings: +// +// handler(w http.ResponseWriter, r *http.Request) { +// lang, _ := r.Cookie("lang") +// accept := r.Header.Get("Accept-Language") +// tag, _ := language.MatchStrings(matcher, lang.String(), accept) +// +// // tag should now be used for the initialization of any +// // locale-specific service. +// } +// +// The Matcher's Match method can be used to match Tags directly. +// +// Matchers are aware of the intricacies of equivalence between languages, such +// as deprecated subtags, legacy tags, macro languages, mutual +// intelligibility between scripts and languages, and transparently passing +// BCP 47 user configuration. +// For instance, it will know that a reader of Bokmål Danish can read Norwegian +// and will know that Cantonese ("yue") is a good match for "zh-HK". +// +// +// Using match results +// +// To guarantee a consistent user experience to the user it is important to +// use the same language tag for the selection of any locale-specific services. +// For example, it is utterly confusing to substitute spelled-out numbers +// or dates in one language in text of another language. +// More subtly confusing is using the wrong sorting order or casing +// algorithm for a certain language. +// +// All the packages in x/text that provide locale-specific services +// (e.g. collate, cases) should be initialized with the tag that was +// obtained at the start of an interaction with the user. +// +// Note that Tag that is returned by Match and MatchString may differ from any +// of the supported languages, as it may contain carried over settings from +// the user tags. +// This may be inconvenient when your application has some additional +// locale-specific data for your supported languages. +// Match and MatchString both return the index of the matched supported tag +// to simplify associating such data with the matched tag. +// +// +// Canonicalization +// +// If one uses the Matcher to compare languages one does not need to +// worry about canonicalization. +// +// The meaning of a Tag varies per application. The language package +// therefore delays canonicalization and preserves information as much +// as possible. The Matcher, however, will always take into account that +// two different tags may represent the same language. +// +// By default, only legacy and deprecated tags are converted into their +// canonical equivalent. All other information is preserved. This approach makes +// the confidence scores more accurate and allows matchers to distinguish +// between variants that are otherwise lost. +// +// As a consequence, two tags that should be treated as identical according to +// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The +// Matcher handles such distinctions, though, and is aware of the +// equivalence relations. The CanonType type can be used to alter the +// canonicalization form. +// +// References +// +// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47 +// +package language // import "golang.org/x/text/language" + +// TODO: explanation on how to match languages for your own locale-specific +// service. diff --git a/vendor/golang.org/x/text/language/examples_test.go b/vendor/golang.org/x/text/language/examples_test.go index 05e712d77..d5e8176dc 100644 --- a/vendor/golang.org/x/text/language/examples_test.go +++ b/vendor/golang.org/x/text/language/examples_test.go @@ -6,6 +6,7 @@ package language_test import ( "fmt" + "net/http" "golang.org/x/text/language" ) @@ -274,7 +275,7 @@ func ExampleMatcher() { fmt.Println("----") - // Croatian speakers will likely understand Serbian written in Latin script. + // Someone specifying sr-Latn is probably fine with getting Croatian. fmt.Println(m.Match(language.Make("sr-Latn"))) // We match SimplifiedChinese, but with Low confidence. @@ -331,11 +332,27 @@ func ExampleMatcher() { // af 3 High // ---- // iw 9 Exact - // iw-IL 8 Exact + // he 10 Exact // ---- // fr-u-cu-frf 2 Exact // fr-u-cu-frf 2 High // en-u-co-phonebk 0 No + + // TODO: "he" should be "he-u-rg-IL High" +} + +func ExampleMatchStrings() { + // languages supported by this service: + matcher := language.NewMatcher([]language.Tag{ + language.English, language.Dutch, language.German, + }) + + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + lang, _ := r.Cookie("lang") + tag, _ := language.MatchStrings(matcher, lang.String(), r.Header.Get("Accept-Language")) + + fmt.Println("User language:", tag) + }) } func ExampleComprehends() { diff --git a/vendor/golang.org/x/text/language/gen.go b/vendor/golang.org/x/text/language/gen.go index 153269bc1..7c260e5c2 100644 --- a/vendor/golang.org/x/text/language/gen.go +++ b/vendor/golang.org/x/text/language/gen.go @@ -698,8 +698,8 @@ func (b *builder) computeRegionGroups() { b.groups[group] = index(len(b.groups)) } } - if len(b.groups) > 32 { - log.Fatalf("only 32 groups supported, found %d", len(b.groups)) + if len(b.groups) > 64 { + log.Fatalf("only 64 groups supported, found %d", len(b.groups)) } b.writeConst("nRegionGroups", len(b.groups)) } @@ -1417,20 +1417,27 @@ func (b *builder) writeMatchData() { } b.writeSlice("regionToGroups", regionToGroups) + // maps language id to in- and out-of-group region. + paradigmLocales := [][3]uint16{} + locales := strings.Split(lm[0].ParadigmLocales[0].Locales, " ") + for i := 0; i < len(locales); i += 2 { + x := [3]uint16{} + for j := 0; j < 2; j++ { + pc := strings.SplitN(locales[i+j], "-", 2) + x[0] = b.langIndex(pc[0]) + if len(pc) == 2 { + x[1+j] = uint16(b.region.index(pc[1])) + } + } + paradigmLocales = append(paradigmLocales, x) + } + b.writeSlice("paradigmLocales", paradigmLocales) + b.writeType(mutualIntelligibility{}) b.writeType(scriptIntelligibility{}) b.writeType(regionIntelligibility{}) - matchLang := []mutualIntelligibility{{ - // TODO: remove once CLDR is fixed. - want: uint16(b.langIndex("sr")), - have: uint16(b.langIndex("hr")), - distance: uint8(5), - }, { - want: uint16(b.langIndex("sr")), - have: uint16(b.langIndex("bs")), - distance: uint8(5), - }} + matchLang := []mutualIntelligibility{} matchScript := []scriptIntelligibility{} matchRegion := []regionIntelligibility{} // Convert the languageMatch entries in lists keyed by desired language. @@ -1559,7 +1566,7 @@ func (b *builder) writeRegionInclusionData() { } } - regionContainment := make([]uint32, len(b.groups)) + regionContainment := make([]uint64, len(b.groups)) for _, g := range b.groups { l := containment[g] @@ -1577,10 +1584,10 @@ func (b *builder) writeRegionInclusionData() { b.writeSlice("regionContainment", regionContainment) regionInclusion := make([]uint8, len(b.region.s)) - bvs := make(map[uint32]index) + bvs := make(map[uint64]index) // Make the first bitvector positions correspond with the groups. for r, i := range b.groups { - bv := uint32(1 << i) + bv := uint64(1 << i) for _, g := range mm[r] { bv |= 1 << g } @@ -1589,7 +1596,7 @@ func (b *builder) writeRegionInclusionData() { } for r := 1; r < len(b.region.s); r++ { if _, ok := b.groups[r]; !ok { - bv := uint32(0) + bv := uint64(0) for _, g := range mm[r] { bv |= 1 << g } @@ -1604,9 +1611,9 @@ func (b *builder) writeRegionInclusionData() { } } b.writeSlice("regionInclusion", regionInclusion) - regionInclusionBits := make([]uint32, len(bvs)) + regionInclusionBits := make([]uint64, len(bvs)) for k, v := range bvs { - regionInclusionBits[v] = uint32(k) + regionInclusionBits[v] = uint64(k) } // Add bit vectors for increasingly large distances until a fixed point is reached. regionInclusionNext := []uint8{} diff --git a/vendor/golang.org/x/text/language/index.go b/vendor/golang.org/x/text/language/index.go index 973db9fd5..69ac557dc 100644 --- a/vendor/golang.org/x/text/language/index.go +++ b/vendor/golang.org/x/text/language/index.go @@ -7,763 +7,763 @@ package language const NumCompactTags = 754 var specialTags = []Tag{ // 2 elements - 0: {lang: 0xd7, region: 0x6d, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"}, - 1: {lang: 0x138, region: 0x134, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"}, + 0: {lang: 0xd7, region: 0x6e, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"}, + 1: {lang: 0x138, region: 0x135, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"}, } // Size: 72 bytes var coreTags = map[uint32]uint16{ 0x0: 0, // und 0x01600000: 3, // af - 0x016000d1: 4, // af-NA - 0x01600160: 5, // af-ZA + 0x016000d2: 4, // af-NA + 0x01600161: 5, // af-ZA 0x01c00000: 6, // agq - 0x01c00051: 7, // agq-CM + 0x01c00052: 7, // agq-CM 0x02100000: 8, // ak - 0x0210007f: 9, // ak-GH + 0x02100080: 9, // ak-GH 0x02700000: 10, // am - 0x0270006e: 11, // am-ET + 0x0270006f: 11, // am-ET 0x03a00000: 12, // ar 0x03a00001: 13, // ar-001 - 0x03a00022: 14, // ar-AE - 0x03a00038: 15, // ar-BH - 0x03a00061: 16, // ar-DJ - 0x03a00066: 17, // ar-DZ - 0x03a0006a: 18, // ar-EG - 0x03a0006b: 19, // ar-EH - 0x03a0006c: 20, // ar-ER - 0x03a00096: 21, // ar-IL - 0x03a0009a: 22, // ar-IQ - 0x03a000a0: 23, // ar-JO - 0x03a000a7: 24, // ar-KM - 0x03a000ab: 25, // ar-KW - 0x03a000af: 26, // ar-LB - 0x03a000b8: 27, // ar-LY - 0x03a000b9: 28, // ar-MA - 0x03a000c8: 29, // ar-MR - 0x03a000e0: 30, // ar-OM - 0x03a000ec: 31, // ar-PS - 0x03a000f2: 32, // ar-QA - 0x03a00107: 33, // ar-SA - 0x03a0010a: 34, // ar-SD - 0x03a00114: 35, // ar-SO - 0x03a00116: 36, // ar-SS - 0x03a0011b: 37, // ar-SY - 0x03a0011f: 38, // ar-TD - 0x03a00127: 39, // ar-TN - 0x03a0015d: 40, // ar-YE + 0x03a00023: 14, // ar-AE + 0x03a00039: 15, // ar-BH + 0x03a00062: 16, // ar-DJ + 0x03a00067: 17, // ar-DZ + 0x03a0006b: 18, // ar-EG + 0x03a0006c: 19, // ar-EH + 0x03a0006d: 20, // ar-ER + 0x03a00097: 21, // ar-IL + 0x03a0009b: 22, // ar-IQ + 0x03a000a1: 23, // ar-JO + 0x03a000a8: 24, // ar-KM + 0x03a000ac: 25, // ar-KW + 0x03a000b0: 26, // ar-LB + 0x03a000b9: 27, // ar-LY + 0x03a000ba: 28, // ar-MA + 0x03a000c9: 29, // ar-MR + 0x03a000e1: 30, // ar-OM + 0x03a000ed: 31, // ar-PS + 0x03a000f3: 32, // ar-QA + 0x03a00108: 33, // ar-SA + 0x03a0010b: 34, // ar-SD + 0x03a00115: 35, // ar-SO + 0x03a00117: 36, // ar-SS + 0x03a0011c: 37, // ar-SY + 0x03a00120: 38, // ar-TD + 0x03a00128: 39, // ar-TN + 0x03a0015e: 40, // ar-YE 0x04000000: 41, // ars 0x04300000: 42, // as - 0x04300098: 43, // as-IN + 0x04300099: 43, // as-IN 0x04400000: 44, // asa - 0x0440012e: 45, // asa-TZ + 0x0440012f: 45, // asa-TZ 0x04800000: 46, // ast - 0x0480006d: 47, // ast-ES + 0x0480006e: 47, // ast-ES 0x05800000: 48, // az 0x0581e000: 49, // az-Cyrl - 0x0581e031: 50, // az-Cyrl-AZ - 0x05852000: 51, // az-Latn - 0x05852031: 52, // az-Latn-AZ + 0x0581e032: 50, // az-Cyrl-AZ + 0x05855000: 51, // az-Latn + 0x05855032: 52, // az-Latn-AZ 0x05e00000: 53, // bas - 0x05e00051: 54, // bas-CM + 0x05e00052: 54, // bas-CM 0x07100000: 55, // be - 0x07100046: 56, // be-BY + 0x07100047: 56, // be-BY 0x07500000: 57, // bem - 0x07500161: 58, // bem-ZM + 0x07500162: 58, // bem-ZM 0x07900000: 59, // bez - 0x0790012e: 60, // bez-TZ + 0x0790012f: 60, // bez-TZ 0x07e00000: 61, // bg - 0x07e00037: 62, // bg-BG + 0x07e00038: 62, // bg-BG 0x08200000: 63, // bh 0x0a000000: 64, // bm - 0x0a0000c2: 65, // bm-ML + 0x0a0000c3: 65, // bm-ML 0x0a500000: 66, // bn - 0x0a500034: 67, // bn-BD - 0x0a500098: 68, // bn-IN + 0x0a500035: 67, // bn-BD + 0x0a500099: 68, // bn-IN 0x0a900000: 69, // bo - 0x0a900052: 70, // bo-CN - 0x0a900098: 71, // bo-IN + 0x0a900053: 70, // bo-CN + 0x0a900099: 71, // bo-IN 0x0b200000: 72, // br - 0x0b200077: 73, // br-FR + 0x0b200078: 73, // br-FR 0x0b500000: 74, // brx - 0x0b500098: 75, // brx-IN + 0x0b500099: 75, // brx-IN 0x0b700000: 76, // bs 0x0b71e000: 77, // bs-Cyrl - 0x0b71e032: 78, // bs-Cyrl-BA - 0x0b752000: 79, // bs-Latn - 0x0b752032: 80, // bs-Latn-BA + 0x0b71e033: 78, // bs-Cyrl-BA + 0x0b755000: 79, // bs-Latn + 0x0b755033: 80, // bs-Latn-BA 0x0d700000: 81, // ca - 0x0d700021: 82, // ca-AD - 0x0d70006d: 83, // ca-ES - 0x0d700077: 84, // ca-FR - 0x0d70009d: 85, // ca-IT + 0x0d700022: 82, // ca-AD + 0x0d70006e: 83, // ca-ES + 0x0d700078: 84, // ca-FR + 0x0d70009e: 85, // ca-IT 0x0dc00000: 86, // ce - 0x0dc00105: 87, // ce-RU + 0x0dc00106: 87, // ce-RU 0x0df00000: 88, // cgg - 0x0df00130: 89, // cgg-UG + 0x0df00131: 89, // cgg-UG 0x0e500000: 90, // chr - 0x0e500134: 91, // chr-US + 0x0e500135: 91, // chr-US 0x0e900000: 92, // ckb - 0x0e90009a: 93, // ckb-IQ - 0x0e90009b: 94, // ckb-IR + 0x0e90009b: 93, // ckb-IQ + 0x0e90009c: 94, // ckb-IR 0x0f900000: 95, // cs - 0x0f90005d: 96, // cs-CZ + 0x0f90005e: 96, // cs-CZ 0x0fd00000: 97, // cu - 0x0fd00105: 98, // cu-RU + 0x0fd00106: 98, // cu-RU 0x0ff00000: 99, // cy - 0x0ff0007a: 100, // cy-GB + 0x0ff0007b: 100, // cy-GB 0x10000000: 101, // da - 0x10000062: 102, // da-DK - 0x10000081: 103, // da-GL + 0x10000063: 102, // da-DK + 0x10000082: 103, // da-GL 0x10700000: 104, // dav - 0x107000a3: 105, // dav-KE + 0x107000a4: 105, // dav-KE 0x10c00000: 106, // de - 0x10c0002d: 107, // de-AT - 0x10c00035: 108, // de-BE - 0x10c0004d: 109, // de-CH - 0x10c0005f: 110, // de-DE - 0x10c0009d: 111, // de-IT - 0x10c000b1: 112, // de-LI - 0x10c000b6: 113, // de-LU + 0x10c0002e: 107, // de-AT + 0x10c00036: 108, // de-BE + 0x10c0004e: 109, // de-CH + 0x10c00060: 110, // de-DE + 0x10c0009e: 111, // de-IT + 0x10c000b2: 112, // de-LI + 0x10c000b7: 113, // de-LU 0x11600000: 114, // dje - 0x116000d3: 115, // dje-NE + 0x116000d4: 115, // dje-NE 0x11e00000: 116, // dsb - 0x11e0005f: 117, // dsb-DE + 0x11e00060: 117, // dsb-DE 0x12300000: 118, // dua - 0x12300051: 119, // dua-CM + 0x12300052: 119, // dua-CM 0x12700000: 120, // dv 0x12a00000: 121, // dyo - 0x12a00113: 122, // dyo-SN + 0x12a00114: 122, // dyo-SN 0x12c00000: 123, // dz - 0x12c00042: 124, // dz-BT + 0x12c00043: 124, // dz-BT 0x12e00000: 125, // ebu - 0x12e000a3: 126, // ebu-KE + 0x12e000a4: 126, // ebu-KE 0x12f00000: 127, // ee - 0x12f0007f: 128, // ee-GH - 0x12f00121: 129, // ee-TG + 0x12f00080: 128, // ee-GH + 0x12f00122: 129, // ee-TG 0x13500000: 130, // el - 0x1350005c: 131, // el-CY - 0x13500086: 132, // el-GR + 0x1350005d: 131, // el-CY + 0x13500087: 132, // el-GR 0x13800000: 133, // en 0x13800001: 134, // en-001 0x1380001a: 135, // en-150 - 0x13800024: 136, // en-AG - 0x13800025: 137, // en-AI - 0x1380002c: 138, // en-AS - 0x1380002d: 139, // en-AT - 0x1380002e: 140, // en-AU - 0x13800033: 141, // en-BB - 0x13800035: 142, // en-BE - 0x13800039: 143, // en-BI - 0x1380003c: 144, // en-BM - 0x13800041: 145, // en-BS - 0x13800045: 146, // en-BW - 0x13800047: 147, // en-BZ - 0x13800048: 148, // en-CA - 0x13800049: 149, // en-CC - 0x1380004d: 150, // en-CH - 0x1380004f: 151, // en-CK - 0x13800051: 152, // en-CM - 0x1380005b: 153, // en-CX - 0x1380005c: 154, // en-CY - 0x1380005f: 155, // en-DE - 0x13800060: 156, // en-DG - 0x13800062: 157, // en-DK - 0x13800063: 158, // en-DM - 0x1380006c: 159, // en-ER - 0x13800071: 160, // en-FI - 0x13800072: 161, // en-FJ - 0x13800073: 162, // en-FK - 0x13800074: 163, // en-FM - 0x1380007a: 164, // en-GB - 0x1380007b: 165, // en-GD - 0x1380007e: 166, // en-GG - 0x1380007f: 167, // en-GH - 0x13800080: 168, // en-GI - 0x13800082: 169, // en-GM - 0x13800089: 170, // en-GU - 0x1380008b: 171, // en-GY - 0x1380008c: 172, // en-HK - 0x13800095: 173, // en-IE - 0x13800096: 174, // en-IL - 0x13800097: 175, // en-IM - 0x13800098: 176, // en-IN - 0x13800099: 177, // en-IO - 0x1380009e: 178, // en-JE - 0x1380009f: 179, // en-JM - 0x138000a3: 180, // en-KE - 0x138000a6: 181, // en-KI - 0x138000a8: 182, // en-KN - 0x138000ac: 183, // en-KY - 0x138000b0: 184, // en-LC - 0x138000b3: 185, // en-LR - 0x138000b4: 186, // en-LS - 0x138000be: 187, // en-MG - 0x138000bf: 188, // en-MH - 0x138000c5: 189, // en-MO - 0x138000c6: 190, // en-MP - 0x138000c9: 191, // en-MS - 0x138000ca: 192, // en-MT - 0x138000cb: 193, // en-MU - 0x138000cd: 194, // en-MW - 0x138000cf: 195, // en-MY - 0x138000d1: 196, // en-NA - 0x138000d4: 197, // en-NF - 0x138000d5: 198, // en-NG - 0x138000d8: 199, // en-NL - 0x138000dc: 200, // en-NR - 0x138000de: 201, // en-NU - 0x138000df: 202, // en-NZ - 0x138000e5: 203, // en-PG - 0x138000e6: 204, // en-PH - 0x138000e7: 205, // en-PK - 0x138000ea: 206, // en-PN - 0x138000eb: 207, // en-PR - 0x138000ef: 208, // en-PW - 0x13800106: 209, // en-RW - 0x13800108: 210, // en-SB - 0x13800109: 211, // en-SC - 0x1380010a: 212, // en-SD - 0x1380010b: 213, // en-SE - 0x1380010c: 214, // en-SG - 0x1380010d: 215, // en-SH - 0x1380010e: 216, // en-SI - 0x13800111: 217, // en-SL - 0x13800116: 218, // en-SS - 0x1380011a: 219, // en-SX - 0x1380011c: 220, // en-SZ - 0x1380011e: 221, // en-TC - 0x13800124: 222, // en-TK - 0x13800128: 223, // en-TO - 0x1380012b: 224, // en-TT - 0x1380012c: 225, // en-TV - 0x1380012e: 226, // en-TZ - 0x13800130: 227, // en-UG - 0x13800132: 228, // en-UM - 0x13800134: 229, // en-US - 0x13800138: 230, // en-VC - 0x1380013b: 231, // en-VG - 0x1380013c: 232, // en-VI - 0x1380013e: 233, // en-VU - 0x13800141: 234, // en-WS - 0x13800160: 235, // en-ZA - 0x13800161: 236, // en-ZM - 0x13800163: 237, // en-ZW + 0x13800025: 136, // en-AG + 0x13800026: 137, // en-AI + 0x1380002d: 138, // en-AS + 0x1380002e: 139, // en-AT + 0x1380002f: 140, // en-AU + 0x13800034: 141, // en-BB + 0x13800036: 142, // en-BE + 0x1380003a: 143, // en-BI + 0x1380003d: 144, // en-BM + 0x13800042: 145, // en-BS + 0x13800046: 146, // en-BW + 0x13800048: 147, // en-BZ + 0x13800049: 148, // en-CA + 0x1380004a: 149, // en-CC + 0x1380004e: 150, // en-CH + 0x13800050: 151, // en-CK + 0x13800052: 152, // en-CM + 0x1380005c: 153, // en-CX + 0x1380005d: 154, // en-CY + 0x13800060: 155, // en-DE + 0x13800061: 156, // en-DG + 0x13800063: 157, // en-DK + 0x13800064: 158, // en-DM + 0x1380006d: 159, // en-ER + 0x13800072: 160, // en-FI + 0x13800073: 161, // en-FJ + 0x13800074: 162, // en-FK + 0x13800075: 163, // en-FM + 0x1380007b: 164, // en-GB + 0x1380007c: 165, // en-GD + 0x1380007f: 166, // en-GG + 0x13800080: 167, // en-GH + 0x13800081: 168, // en-GI + 0x13800083: 169, // en-GM + 0x1380008a: 170, // en-GU + 0x1380008c: 171, // en-GY + 0x1380008d: 172, // en-HK + 0x13800096: 173, // en-IE + 0x13800097: 174, // en-IL + 0x13800098: 175, // en-IM + 0x13800099: 176, // en-IN + 0x1380009a: 177, // en-IO + 0x1380009f: 178, // en-JE + 0x138000a0: 179, // en-JM + 0x138000a4: 180, // en-KE + 0x138000a7: 181, // en-KI + 0x138000a9: 182, // en-KN + 0x138000ad: 183, // en-KY + 0x138000b1: 184, // en-LC + 0x138000b4: 185, // en-LR + 0x138000b5: 186, // en-LS + 0x138000bf: 187, // en-MG + 0x138000c0: 188, // en-MH + 0x138000c6: 189, // en-MO + 0x138000c7: 190, // en-MP + 0x138000ca: 191, // en-MS + 0x138000cb: 192, // en-MT + 0x138000cc: 193, // en-MU + 0x138000ce: 194, // en-MW + 0x138000d0: 195, // en-MY + 0x138000d2: 196, // en-NA + 0x138000d5: 197, // en-NF + 0x138000d6: 198, // en-NG + 0x138000d9: 199, // en-NL + 0x138000dd: 200, // en-NR + 0x138000df: 201, // en-NU + 0x138000e0: 202, // en-NZ + 0x138000e6: 203, // en-PG + 0x138000e7: 204, // en-PH + 0x138000e8: 205, // en-PK + 0x138000eb: 206, // en-PN + 0x138000ec: 207, // en-PR + 0x138000f0: 208, // en-PW + 0x13800107: 209, // en-RW + 0x13800109: 210, // en-SB + 0x1380010a: 211, // en-SC + 0x1380010b: 212, // en-SD + 0x1380010c: 213, // en-SE + 0x1380010d: 214, // en-SG + 0x1380010e: 215, // en-SH + 0x1380010f: 216, // en-SI + 0x13800112: 217, // en-SL + 0x13800117: 218, // en-SS + 0x1380011b: 219, // en-SX + 0x1380011d: 220, // en-SZ + 0x1380011f: 221, // en-TC + 0x13800125: 222, // en-TK + 0x13800129: 223, // en-TO + 0x1380012c: 224, // en-TT + 0x1380012d: 225, // en-TV + 0x1380012f: 226, // en-TZ + 0x13800131: 227, // en-UG + 0x13800133: 228, // en-UM + 0x13800135: 229, // en-US + 0x13800139: 230, // en-VC + 0x1380013c: 231, // en-VG + 0x1380013d: 232, // en-VI + 0x1380013f: 233, // en-VU + 0x13800142: 234, // en-WS + 0x13800161: 235, // en-ZA + 0x13800162: 236, // en-ZM + 0x13800164: 237, // en-ZW 0x13b00000: 238, // eo 0x13b00001: 239, // eo-001 0x13d00000: 240, // es - 0x13d0001e: 241, // es-419 - 0x13d0002b: 242, // es-AR - 0x13d0003e: 243, // es-BO - 0x13d00040: 244, // es-BR - 0x13d00047: 245, // es-BZ - 0x13d00050: 246, // es-CL - 0x13d00053: 247, // es-CO - 0x13d00055: 248, // es-CR - 0x13d00058: 249, // es-CU - 0x13d00064: 250, // es-DO - 0x13d00067: 251, // es-EA - 0x13d00068: 252, // es-EC - 0x13d0006d: 253, // es-ES - 0x13d00085: 254, // es-GQ - 0x13d00088: 255, // es-GT - 0x13d0008e: 256, // es-HN - 0x13d00093: 257, // es-IC - 0x13d000ce: 258, // es-MX - 0x13d000d7: 259, // es-NI - 0x13d000e1: 260, // es-PA - 0x13d000e3: 261, // es-PE - 0x13d000e6: 262, // es-PH - 0x13d000eb: 263, // es-PR - 0x13d000f0: 264, // es-PY - 0x13d00119: 265, // es-SV - 0x13d00134: 266, // es-US - 0x13d00135: 267, // es-UY - 0x13d0013a: 268, // es-VE + 0x13d0001f: 241, // es-419 + 0x13d0002c: 242, // es-AR + 0x13d0003f: 243, // es-BO + 0x13d00041: 244, // es-BR + 0x13d00048: 245, // es-BZ + 0x13d00051: 246, // es-CL + 0x13d00054: 247, // es-CO + 0x13d00056: 248, // es-CR + 0x13d00059: 249, // es-CU + 0x13d00065: 250, // es-DO + 0x13d00068: 251, // es-EA + 0x13d00069: 252, // es-EC + 0x13d0006e: 253, // es-ES + 0x13d00086: 254, // es-GQ + 0x13d00089: 255, // es-GT + 0x13d0008f: 256, // es-HN + 0x13d00094: 257, // es-IC + 0x13d000cf: 258, // es-MX + 0x13d000d8: 259, // es-NI + 0x13d000e2: 260, // es-PA + 0x13d000e4: 261, // es-PE + 0x13d000e7: 262, // es-PH + 0x13d000ec: 263, // es-PR + 0x13d000f1: 264, // es-PY + 0x13d0011a: 265, // es-SV + 0x13d00135: 266, // es-US + 0x13d00136: 267, // es-UY + 0x13d0013b: 268, // es-VE 0x13f00000: 269, // et - 0x13f00069: 270, // et-EE + 0x13f0006a: 270, // et-EE 0x14400000: 271, // eu - 0x1440006d: 272, // eu-ES + 0x1440006e: 272, // eu-ES 0x14500000: 273, // ewo - 0x14500051: 274, // ewo-CM + 0x14500052: 274, // ewo-CM 0x14700000: 275, // fa - 0x14700023: 276, // fa-AF - 0x1470009b: 277, // fa-IR + 0x14700024: 276, // fa-AF + 0x1470009c: 277, // fa-IR 0x14d00000: 278, // ff - 0x14d00051: 279, // ff-CM - 0x14d00083: 280, // ff-GN - 0x14d000c8: 281, // ff-MR - 0x14d00113: 282, // ff-SN + 0x14d00052: 279, // ff-CM + 0x14d00084: 280, // ff-GN + 0x14d000c9: 281, // ff-MR + 0x14d00114: 282, // ff-SN 0x15000000: 283, // fi - 0x15000071: 284, // fi-FI + 0x15000072: 284, // fi-FI 0x15200000: 285, // fil - 0x152000e6: 286, // fil-PH + 0x152000e7: 286, // fil-PH 0x15700000: 287, // fo - 0x15700062: 288, // fo-DK - 0x15700075: 289, // fo-FO + 0x15700063: 288, // fo-DK + 0x15700076: 289, // fo-FO 0x15d00000: 290, // fr - 0x15d00035: 291, // fr-BE - 0x15d00036: 292, // fr-BF - 0x15d00039: 293, // fr-BI - 0x15d0003a: 294, // fr-BJ - 0x15d0003b: 295, // fr-BL - 0x15d00048: 296, // fr-CA - 0x15d0004a: 297, // fr-CD - 0x15d0004b: 298, // fr-CF - 0x15d0004c: 299, // fr-CG - 0x15d0004d: 300, // fr-CH - 0x15d0004e: 301, // fr-CI - 0x15d00051: 302, // fr-CM - 0x15d00061: 303, // fr-DJ - 0x15d00066: 304, // fr-DZ - 0x15d00077: 305, // fr-FR - 0x15d00079: 306, // fr-GA - 0x15d0007d: 307, // fr-GF - 0x15d00083: 308, // fr-GN - 0x15d00084: 309, // fr-GP - 0x15d00085: 310, // fr-GQ - 0x15d00090: 311, // fr-HT - 0x15d000a7: 312, // fr-KM - 0x15d000b6: 313, // fr-LU - 0x15d000b9: 314, // fr-MA - 0x15d000ba: 315, // fr-MC - 0x15d000bd: 316, // fr-MF - 0x15d000be: 317, // fr-MG - 0x15d000c2: 318, // fr-ML - 0x15d000c7: 319, // fr-MQ - 0x15d000c8: 320, // fr-MR - 0x15d000cb: 321, // fr-MU - 0x15d000d2: 322, // fr-NC - 0x15d000d3: 323, // fr-NE - 0x15d000e4: 324, // fr-PF - 0x15d000e9: 325, // fr-PM - 0x15d00101: 326, // fr-RE - 0x15d00106: 327, // fr-RW - 0x15d00109: 328, // fr-SC - 0x15d00113: 329, // fr-SN - 0x15d0011b: 330, // fr-SY - 0x15d0011f: 331, // fr-TD - 0x15d00121: 332, // fr-TG - 0x15d00127: 333, // fr-TN - 0x15d0013e: 334, // fr-VU - 0x15d0013f: 335, // fr-WF - 0x15d0015e: 336, // fr-YT + 0x15d00036: 291, // fr-BE + 0x15d00037: 292, // fr-BF + 0x15d0003a: 293, // fr-BI + 0x15d0003b: 294, // fr-BJ + 0x15d0003c: 295, // fr-BL + 0x15d00049: 296, // fr-CA + 0x15d0004b: 297, // fr-CD + 0x15d0004c: 298, // fr-CF + 0x15d0004d: 299, // fr-CG + 0x15d0004e: 300, // fr-CH + 0x15d0004f: 301, // fr-CI + 0x15d00052: 302, // fr-CM + 0x15d00062: 303, // fr-DJ + 0x15d00067: 304, // fr-DZ + 0x15d00078: 305, // fr-FR + 0x15d0007a: 306, // fr-GA + 0x15d0007e: 307, // fr-GF + 0x15d00084: 308, // fr-GN + 0x15d00085: 309, // fr-GP + 0x15d00086: 310, // fr-GQ + 0x15d00091: 311, // fr-HT + 0x15d000a8: 312, // fr-KM + 0x15d000b7: 313, // fr-LU + 0x15d000ba: 314, // fr-MA + 0x15d000bb: 315, // fr-MC + 0x15d000be: 316, // fr-MF + 0x15d000bf: 317, // fr-MG + 0x15d000c3: 318, // fr-ML + 0x15d000c8: 319, // fr-MQ + 0x15d000c9: 320, // fr-MR + 0x15d000cc: 321, // fr-MU + 0x15d000d3: 322, // fr-NC + 0x15d000d4: 323, // fr-NE + 0x15d000e5: 324, // fr-PF + 0x15d000ea: 325, // fr-PM + 0x15d00102: 326, // fr-RE + 0x15d00107: 327, // fr-RW + 0x15d0010a: 328, // fr-SC + 0x15d00114: 329, // fr-SN + 0x15d0011c: 330, // fr-SY + 0x15d00120: 331, // fr-TD + 0x15d00122: 332, // fr-TG + 0x15d00128: 333, // fr-TN + 0x15d0013f: 334, // fr-VU + 0x15d00140: 335, // fr-WF + 0x15d0015f: 336, // fr-YT 0x16800000: 337, // fur - 0x1680009d: 338, // fur-IT + 0x1680009e: 338, // fur-IT 0x16c00000: 339, // fy - 0x16c000d8: 340, // fy-NL + 0x16c000d9: 340, // fy-NL 0x16d00000: 341, // ga - 0x16d00095: 342, // ga-IE + 0x16d00096: 342, // ga-IE 0x17c00000: 343, // gd - 0x17c0007a: 344, // gd-GB + 0x17c0007b: 344, // gd-GB 0x18e00000: 345, // gl - 0x18e0006d: 346, // gl-ES + 0x18e0006e: 346, // gl-ES 0x1a100000: 347, // gsw - 0x1a10004d: 348, // gsw-CH - 0x1a100077: 349, // gsw-FR - 0x1a1000b1: 350, // gsw-LI + 0x1a10004e: 348, // gsw-CH + 0x1a100078: 349, // gsw-FR + 0x1a1000b2: 350, // gsw-LI 0x1a200000: 351, // gu - 0x1a200098: 352, // gu-IN + 0x1a200099: 352, // gu-IN 0x1a700000: 353, // guw 0x1a900000: 354, // guz - 0x1a9000a3: 355, // guz-KE + 0x1a9000a4: 355, // guz-KE 0x1aa00000: 356, // gv - 0x1aa00097: 357, // gv-IM + 0x1aa00098: 357, // gv-IM 0x1b200000: 358, // ha - 0x1b20007f: 359, // ha-GH - 0x1b2000d3: 360, // ha-NE - 0x1b2000d5: 361, // ha-NG + 0x1b200080: 359, // ha-GH + 0x1b2000d4: 360, // ha-NE + 0x1b2000d6: 361, // ha-NG 0x1b600000: 362, // haw - 0x1b600134: 363, // haw-US + 0x1b600135: 363, // haw-US 0x1ba00000: 364, // he - 0x1ba00096: 365, // he-IL + 0x1ba00097: 365, // he-IL 0x1bc00000: 366, // hi - 0x1bc00098: 367, // hi-IN + 0x1bc00099: 367, // hi-IN 0x1cf00000: 368, // hr - 0x1cf00032: 369, // hr-BA - 0x1cf0008f: 370, // hr-HR + 0x1cf00033: 369, // hr-BA + 0x1cf00090: 370, // hr-HR 0x1d000000: 371, // hsb - 0x1d00005f: 372, // hsb-DE + 0x1d000060: 372, // hsb-DE 0x1d300000: 373, // hu - 0x1d300091: 374, // hu-HU + 0x1d300092: 374, // hu-HU 0x1d500000: 375, // hy - 0x1d500027: 376, // hy-AM + 0x1d500028: 376, // hy-AM 0x1df00000: 377, // id - 0x1df00094: 378, // id-ID + 0x1df00095: 378, // id-ID 0x1e500000: 379, // ig - 0x1e5000d5: 380, // ig-NG + 0x1e5000d6: 380, // ig-NG 0x1e800000: 381, // ii - 0x1e800052: 382, // ii-CN + 0x1e800053: 382, // ii-CN 0x1f600000: 383, // is - 0x1f60009c: 384, // is-IS + 0x1f60009d: 384, // is-IS 0x1f700000: 385, // it - 0x1f70004d: 386, // it-CH - 0x1f70009d: 387, // it-IT - 0x1f700112: 388, // it-SM - 0x1f700137: 389, // it-VA + 0x1f70004e: 386, // it-CH + 0x1f70009e: 387, // it-IT + 0x1f700113: 388, // it-SM + 0x1f700138: 389, // it-VA 0x1f800000: 390, // iu 0x1fe00000: 391, // ja - 0x1fe000a1: 392, // ja-JP + 0x1fe000a2: 392, // ja-JP 0x20100000: 393, // jbo 0x20500000: 394, // jgo - 0x20500051: 395, // jgo-CM + 0x20500052: 395, // jgo-CM 0x20800000: 396, // jmc - 0x2080012e: 397, // jmc-TZ + 0x2080012f: 397, // jmc-TZ 0x20c00000: 398, // jv 0x20e00000: 399, // ka - 0x20e0007c: 400, // ka-GE + 0x20e0007d: 400, // ka-GE 0x21000000: 401, // kab - 0x21000066: 402, // kab-DZ + 0x21000067: 402, // kab-DZ 0x21400000: 403, // kaj 0x21500000: 404, // kam - 0x215000a3: 405, // kam-KE + 0x215000a4: 405, // kam-KE 0x21d00000: 406, // kcg 0x22100000: 407, // kde - 0x2210012e: 408, // kde-TZ + 0x2210012f: 408, // kde-TZ 0x22500000: 409, // kea - 0x22500059: 410, // kea-CV + 0x2250005a: 410, // kea-CV 0x23200000: 411, // khq - 0x232000c2: 412, // khq-ML + 0x232000c3: 412, // khq-ML 0x23700000: 413, // ki - 0x237000a3: 414, // ki-KE + 0x237000a4: 414, // ki-KE 0x24000000: 415, // kk - 0x240000ad: 416, // kk-KZ + 0x240000ae: 416, // kk-KZ 0x24200000: 417, // kkj - 0x24200051: 418, // kkj-CM + 0x24200052: 418, // kkj-CM 0x24300000: 419, // kl - 0x24300081: 420, // kl-GL + 0x24300082: 420, // kl-GL 0x24400000: 421, // kln - 0x244000a3: 422, // kln-KE + 0x244000a4: 422, // kln-KE 0x24800000: 423, // km - 0x248000a5: 424, // km-KH + 0x248000a6: 424, // km-KH 0x24f00000: 425, // kn - 0x24f00098: 426, // kn-IN + 0x24f00099: 426, // kn-IN 0x25200000: 427, // ko - 0x252000a9: 428, // ko-KP - 0x252000aa: 429, // ko-KR + 0x252000aa: 428, // ko-KP + 0x252000ab: 429, // ko-KR 0x25400000: 430, // kok - 0x25400098: 431, // kok-IN + 0x25400099: 431, // kok-IN 0x26800000: 432, // ks - 0x26800098: 433, // ks-IN + 0x26800099: 433, // ks-IN 0x26900000: 434, // ksb - 0x2690012e: 435, // ksb-TZ + 0x2690012f: 435, // ksb-TZ 0x26b00000: 436, // ksf - 0x26b00051: 437, // ksf-CM + 0x26b00052: 437, // ksf-CM 0x26c00000: 438, // ksh - 0x26c0005f: 439, // ksh-DE + 0x26c00060: 439, // ksh-DE 0x27200000: 440, // ku 0x27f00000: 441, // kw - 0x27f0007a: 442, // kw-GB + 0x27f0007b: 442, // kw-GB 0x28800000: 443, // ky - 0x288000a4: 444, // ky-KG + 0x288000a5: 444, // ky-KG 0x28f00000: 445, // lag - 0x28f0012e: 446, // lag-TZ + 0x28f0012f: 446, // lag-TZ 0x29300000: 447, // lb - 0x293000b6: 448, // lb-LU + 0x293000b7: 448, // lb-LU 0x2a100000: 449, // lg - 0x2a100130: 450, // lg-UG + 0x2a100131: 450, // lg-UG 0x2ad00000: 451, // lkt - 0x2ad00134: 452, // lkt-US + 0x2ad00135: 452, // lkt-US 0x2b300000: 453, // ln - 0x2b300029: 454, // ln-AO - 0x2b30004a: 455, // ln-CD - 0x2b30004b: 456, // ln-CF - 0x2b30004c: 457, // ln-CG + 0x2b30002a: 454, // ln-AO + 0x2b30004b: 455, // ln-CD + 0x2b30004c: 456, // ln-CF + 0x2b30004d: 457, // ln-CG 0x2b600000: 458, // lo - 0x2b6000ae: 459, // lo-LA + 0x2b6000af: 459, // lo-LA 0x2bd00000: 460, // lrc - 0x2bd0009a: 461, // lrc-IQ - 0x2bd0009b: 462, // lrc-IR + 0x2bd0009b: 461, // lrc-IQ + 0x2bd0009c: 462, // lrc-IR 0x2be00000: 463, // lt - 0x2be000b5: 464, // lt-LT + 0x2be000b6: 464, // lt-LT 0x2c000000: 465, // lu - 0x2c00004a: 466, // lu-CD + 0x2c00004b: 466, // lu-CD 0x2c200000: 467, // luo - 0x2c2000a3: 468, // luo-KE + 0x2c2000a4: 468, // luo-KE 0x2c300000: 469, // luy - 0x2c3000a3: 470, // luy-KE + 0x2c3000a4: 470, // luy-KE 0x2c500000: 471, // lv - 0x2c5000b7: 472, // lv-LV + 0x2c5000b8: 472, // lv-LV 0x2cf00000: 473, // mas - 0x2cf000a3: 474, // mas-KE - 0x2cf0012e: 475, // mas-TZ + 0x2cf000a4: 474, // mas-KE + 0x2cf0012f: 475, // mas-TZ 0x2e700000: 476, // mer - 0x2e7000a3: 477, // mer-KE + 0x2e7000a4: 477, // mer-KE 0x2eb00000: 478, // mfe - 0x2eb000cb: 479, // mfe-MU + 0x2eb000cc: 479, // mfe-MU 0x2ef00000: 480, // mg - 0x2ef000be: 481, // mg-MG + 0x2ef000bf: 481, // mg-MG 0x2f000000: 482, // mgh - 0x2f0000d0: 483, // mgh-MZ + 0x2f0000d1: 483, // mgh-MZ 0x2f200000: 484, // mgo - 0x2f200051: 485, // mgo-CM + 0x2f200052: 485, // mgo-CM 0x2fd00000: 486, // mk - 0x2fd000c1: 487, // mk-MK + 0x2fd000c2: 487, // mk-MK 0x30200000: 488, // ml - 0x30200098: 489, // ml-IN + 0x30200099: 489, // ml-IN 0x30900000: 490, // mn - 0x309000c4: 491, // mn-MN + 0x309000c5: 491, // mn-MN 0x31900000: 492, // mr - 0x31900098: 493, // mr-IN + 0x31900099: 493, // mr-IN 0x31d00000: 494, // ms - 0x31d0003d: 495, // ms-BN - 0x31d000cf: 496, // ms-MY - 0x31d0010c: 497, // ms-SG + 0x31d0003e: 495, // ms-BN + 0x31d000d0: 496, // ms-MY + 0x31d0010d: 497, // ms-SG 0x31e00000: 498, // mt - 0x31e000ca: 499, // mt-MT + 0x31e000cb: 499, // mt-MT 0x32300000: 500, // mua - 0x32300051: 501, // mua-CM + 0x32300052: 501, // mua-CM 0x32f00000: 502, // my - 0x32f000c3: 503, // my-MM + 0x32f000c4: 503, // my-MM 0x33800000: 504, // mzn - 0x3380009b: 505, // mzn-IR + 0x3380009c: 505, // mzn-IR 0x33f00000: 506, // nah 0x34300000: 507, // naq - 0x343000d1: 508, // naq-NA + 0x343000d2: 508, // naq-NA 0x34500000: 509, // nb - 0x345000d9: 510, // nb-NO - 0x3450010f: 511, // nb-SJ + 0x345000da: 510, // nb-NO + 0x34500110: 511, // nb-SJ 0x34c00000: 512, // nd - 0x34c00163: 513, // nd-ZW + 0x34c00164: 513, // nd-ZW 0x34e00000: 514, // nds - 0x34e0005f: 515, // nds-DE - 0x34e000d8: 516, // nds-NL + 0x34e00060: 515, // nds-DE + 0x34e000d9: 516, // nds-NL 0x34f00000: 517, // ne - 0x34f00098: 518, // ne-IN - 0x34f000da: 519, // ne-NP + 0x34f00099: 518, // ne-IN + 0x34f000db: 519, // ne-NP 0x36500000: 520, // nl - 0x3650002f: 521, // nl-AW - 0x36500035: 522, // nl-BE - 0x3650003f: 523, // nl-BQ - 0x3650005a: 524, // nl-CW - 0x365000d8: 525, // nl-NL - 0x36500115: 526, // nl-SR - 0x3650011a: 527, // nl-SX + 0x36500030: 521, // nl-AW + 0x36500036: 522, // nl-BE + 0x36500040: 523, // nl-BQ + 0x3650005b: 524, // nl-CW + 0x365000d9: 525, // nl-NL + 0x36500116: 526, // nl-SR + 0x3650011b: 527, // nl-SX 0x36600000: 528, // nmg - 0x36600051: 529, // nmg-CM + 0x36600052: 529, // nmg-CM 0x36800000: 530, // nn - 0x368000d9: 531, // nn-NO + 0x368000da: 531, // nn-NO 0x36a00000: 532, // nnh - 0x36a00051: 533, // nnh-CM + 0x36a00052: 533, // nnh-CM 0x36d00000: 534, // no 0x37300000: 535, // nqo 0x37400000: 536, // nr 0x37800000: 537, // nso 0x37e00000: 538, // nus - 0x37e00116: 539, // nus-SS + 0x37e00117: 539, // nus-SS 0x38500000: 540, // ny 0x38700000: 541, // nyn - 0x38700130: 542, // nyn-UG + 0x38700131: 542, // nyn-UG 0x38e00000: 543, // om - 0x38e0006e: 544, // om-ET - 0x38e000a3: 545, // om-KE + 0x38e0006f: 544, // om-ET + 0x38e000a4: 545, // om-KE 0x39300000: 546, // or - 0x39300098: 547, // or-IN + 0x39300099: 547, // or-IN 0x39600000: 548, // os - 0x3960007c: 549, // os-GE - 0x39600105: 550, // os-RU + 0x3960007d: 549, // os-GE + 0x39600106: 550, // os-RU 0x39b00000: 551, // pa 0x39b05000: 552, // pa-Arab - 0x39b050e7: 553, // pa-Arab-PK - 0x39b2f000: 554, // pa-Guru - 0x39b2f098: 555, // pa-Guru-IN + 0x39b050e8: 553, // pa-Arab-PK + 0x39b32000: 554, // pa-Guru + 0x39b32099: 555, // pa-Guru-IN 0x39f00000: 556, // pap 0x3b100000: 557, // pl - 0x3b1000e8: 558, // pl-PL + 0x3b1000e9: 558, // pl-PL 0x3bb00000: 559, // prg 0x3bb00001: 560, // prg-001 0x3bc00000: 561, // ps - 0x3bc00023: 562, // ps-AF + 0x3bc00024: 562, // ps-AF 0x3be00000: 563, // pt - 0x3be00029: 564, // pt-AO - 0x3be00040: 565, // pt-BR - 0x3be0004d: 566, // pt-CH - 0x3be00059: 567, // pt-CV - 0x3be00085: 568, // pt-GQ - 0x3be0008a: 569, // pt-GW - 0x3be000b6: 570, // pt-LU - 0x3be000c5: 571, // pt-MO - 0x3be000d0: 572, // pt-MZ - 0x3be000ed: 573, // pt-PT - 0x3be00117: 574, // pt-ST - 0x3be00125: 575, // pt-TL + 0x3be0002a: 564, // pt-AO + 0x3be00041: 565, // pt-BR + 0x3be0004e: 566, // pt-CH + 0x3be0005a: 567, // pt-CV + 0x3be00086: 568, // pt-GQ + 0x3be0008b: 569, // pt-GW + 0x3be000b7: 570, // pt-LU + 0x3be000c6: 571, // pt-MO + 0x3be000d1: 572, // pt-MZ + 0x3be000ee: 573, // pt-PT + 0x3be00118: 574, // pt-ST + 0x3be00126: 575, // pt-TL 0x3c200000: 576, // qu - 0x3c20003e: 577, // qu-BO - 0x3c200068: 578, // qu-EC - 0x3c2000e3: 579, // qu-PE + 0x3c20003f: 577, // qu-BO + 0x3c200069: 578, // qu-EC + 0x3c2000e4: 579, // qu-PE 0x3d200000: 580, // rm - 0x3d20004d: 581, // rm-CH + 0x3d20004e: 581, // rm-CH 0x3d700000: 582, // rn - 0x3d700039: 583, // rn-BI + 0x3d70003a: 583, // rn-BI 0x3da00000: 584, // ro - 0x3da000bb: 585, // ro-MD - 0x3da00103: 586, // ro-RO + 0x3da000bc: 585, // ro-MD + 0x3da00104: 586, // ro-RO 0x3dc00000: 587, // rof - 0x3dc0012e: 588, // rof-TZ + 0x3dc0012f: 588, // rof-TZ 0x3e000000: 589, // ru - 0x3e000046: 590, // ru-BY - 0x3e0000a4: 591, // ru-KG - 0x3e0000ad: 592, // ru-KZ - 0x3e0000bb: 593, // ru-MD - 0x3e000105: 594, // ru-RU - 0x3e00012f: 595, // ru-UA + 0x3e000047: 590, // ru-BY + 0x3e0000a5: 591, // ru-KG + 0x3e0000ae: 592, // ru-KZ + 0x3e0000bc: 593, // ru-MD + 0x3e000106: 594, // ru-RU + 0x3e000130: 595, // ru-UA 0x3e300000: 596, // rw - 0x3e300106: 597, // rw-RW + 0x3e300107: 597, // rw-RW 0x3e400000: 598, // rwk - 0x3e40012e: 599, // rwk-TZ + 0x3e40012f: 599, // rwk-TZ 0x3e900000: 600, // sah - 0x3e900105: 601, // sah-RU + 0x3e900106: 601, // sah-RU 0x3ea00000: 602, // saq - 0x3ea000a3: 603, // saq-KE + 0x3ea000a4: 603, // saq-KE 0x3f100000: 604, // sbp - 0x3f10012e: 605, // sbp-TZ + 0x3f10012f: 605, // sbp-TZ 0x3fa00000: 606, // sdh 0x3fb00000: 607, // se - 0x3fb00071: 608, // se-FI - 0x3fb000d9: 609, // se-NO - 0x3fb0010b: 610, // se-SE + 0x3fb00072: 608, // se-FI + 0x3fb000da: 609, // se-NO + 0x3fb0010c: 610, // se-SE 0x3fd00000: 611, // seh - 0x3fd000d0: 612, // seh-MZ + 0x3fd000d1: 612, // seh-MZ 0x3ff00000: 613, // ses - 0x3ff000c2: 614, // ses-ML + 0x3ff000c3: 614, // ses-ML 0x40000000: 615, // sg - 0x4000004b: 616, // sg-CF + 0x4000004c: 616, // sg-CF 0x40600000: 617, // shi - 0x40652000: 618, // shi-Latn - 0x406520b9: 619, // shi-Latn-MA - 0x406d2000: 620, // shi-Tfng - 0x406d20b9: 621, // shi-Tfng-MA + 0x40655000: 618, // shi-Latn + 0x406550ba: 619, // shi-Latn-MA + 0x406d8000: 620, // shi-Tfng + 0x406d80ba: 621, // shi-Tfng-MA 0x40a00000: 622, // si - 0x40a000b2: 623, // si-LK + 0x40a000b3: 623, // si-LK 0x41000000: 624, // sk - 0x41000110: 625, // sk-SK + 0x41000111: 625, // sk-SK 0x41400000: 626, // sl - 0x4140010e: 627, // sl-SI + 0x4140010f: 627, // sl-SI 0x41a00000: 628, // sma 0x41b00000: 629, // smi 0x41c00000: 630, // smj 0x41d00000: 631, // smn - 0x41d00071: 632, // smn-FI + 0x41d00072: 632, // smn-FI 0x42000000: 633, // sms 0x42100000: 634, // sn - 0x42100163: 635, // sn-ZW + 0x42100164: 635, // sn-ZW 0x42700000: 636, // so - 0x42700061: 637, // so-DJ - 0x4270006e: 638, // so-ET - 0x427000a3: 639, // so-KE - 0x42700114: 640, // so-SO + 0x42700062: 637, // so-DJ + 0x4270006f: 638, // so-ET + 0x427000a4: 639, // so-KE + 0x42700115: 640, // so-SO 0x42f00000: 641, // sq - 0x42f00026: 642, // sq-AL - 0x42f000c1: 643, // sq-MK - 0x42f0014c: 644, // sq-XK + 0x42f00027: 642, // sq-AL + 0x42f000c2: 643, // sq-MK + 0x42f0014d: 644, // sq-XK 0x43000000: 645, // sr 0x4301e000: 646, // sr-Cyrl - 0x4301e032: 647, // sr-Cyrl-BA - 0x4301e0bc: 648, // sr-Cyrl-ME - 0x4301e104: 649, // sr-Cyrl-RS - 0x4301e14c: 650, // sr-Cyrl-XK - 0x43052000: 651, // sr-Latn - 0x43052032: 652, // sr-Latn-BA - 0x430520bc: 653, // sr-Latn-ME - 0x43052104: 654, // sr-Latn-RS - 0x4305214c: 655, // sr-Latn-XK + 0x4301e033: 647, // sr-Cyrl-BA + 0x4301e0bd: 648, // sr-Cyrl-ME + 0x4301e105: 649, // sr-Cyrl-RS + 0x4301e14d: 650, // sr-Cyrl-XK + 0x43055000: 651, // sr-Latn + 0x43055033: 652, // sr-Latn-BA + 0x430550bd: 653, // sr-Latn-ME + 0x43055105: 654, // sr-Latn-RS + 0x4305514d: 655, // sr-Latn-XK 0x43500000: 656, // ss 0x43800000: 657, // ssy 0x43900000: 658, // st 0x44200000: 659, // sv - 0x44200030: 660, // sv-AX - 0x44200071: 661, // sv-FI - 0x4420010b: 662, // sv-SE + 0x44200031: 660, // sv-AX + 0x44200072: 661, // sv-FI + 0x4420010c: 662, // sv-SE 0x44300000: 663, // sw - 0x4430004a: 664, // sw-CD - 0x443000a3: 665, // sw-KE - 0x4430012e: 666, // sw-TZ - 0x44300130: 667, // sw-UG + 0x4430004b: 664, // sw-CD + 0x443000a4: 665, // sw-KE + 0x4430012f: 666, // sw-TZ + 0x44300131: 667, // sw-UG 0x44c00000: 668, // syr 0x44e00000: 669, // ta - 0x44e00098: 670, // ta-IN - 0x44e000b2: 671, // ta-LK - 0x44e000cf: 672, // ta-MY - 0x44e0010c: 673, // ta-SG + 0x44e00099: 670, // ta-IN + 0x44e000b3: 671, // ta-LK + 0x44e000d0: 672, // ta-MY + 0x44e0010d: 673, // ta-SG 0x45f00000: 674, // te - 0x45f00098: 675, // te-IN + 0x45f00099: 675, // te-IN 0x46200000: 676, // teo - 0x462000a3: 677, // teo-KE - 0x46200130: 678, // teo-UG + 0x462000a4: 677, // teo-KE + 0x46200131: 678, // teo-UG 0x46900000: 679, // th - 0x46900122: 680, // th-TH + 0x46900123: 680, // th-TH 0x46d00000: 681, // ti - 0x46d0006c: 682, // ti-ER - 0x46d0006e: 683, // ti-ET + 0x46d0006d: 682, // ti-ER + 0x46d0006f: 683, // ti-ET 0x46f00000: 684, // tig 0x47400000: 685, // tk - 0x47400126: 686, // tk-TM + 0x47400127: 686, // tk-TM 0x47e00000: 687, // tn 0x48000000: 688, // to - 0x48000128: 689, // to-TO + 0x48000129: 689, // to-TO 0x48800000: 690, // tr - 0x4880005c: 691, // tr-CY - 0x4880012a: 692, // tr-TR + 0x4880005d: 691, // tr-CY + 0x4880012b: 692, // tr-TR 0x48c00000: 693, // ts 0x4a200000: 694, // twq - 0x4a2000d3: 695, // twq-NE + 0x4a2000d4: 695, // twq-NE 0x4a700000: 696, // tzm - 0x4a7000b9: 697, // tzm-MA + 0x4a7000ba: 697, // tzm-MA 0x4aa00000: 698, // ug - 0x4aa00052: 699, // ug-CN + 0x4aa00053: 699, // ug-CN 0x4ac00000: 700, // uk - 0x4ac0012f: 701, // uk-UA + 0x4ac00130: 701, // uk-UA 0x4b200000: 702, // ur - 0x4b200098: 703, // ur-IN - 0x4b2000e7: 704, // ur-PK + 0x4b200099: 703, // ur-IN + 0x4b2000e8: 704, // ur-PK 0x4ba00000: 705, // uz 0x4ba05000: 706, // uz-Arab - 0x4ba05023: 707, // uz-Arab-AF + 0x4ba05024: 707, // uz-Arab-AF 0x4ba1e000: 708, // uz-Cyrl - 0x4ba1e136: 709, // uz-Cyrl-UZ - 0x4ba52000: 710, // uz-Latn - 0x4ba52136: 711, // uz-Latn-UZ + 0x4ba1e137: 709, // uz-Cyrl-UZ + 0x4ba55000: 710, // uz-Latn + 0x4ba55137: 711, // uz-Latn-UZ 0x4bc00000: 712, // vai - 0x4bc52000: 713, // vai-Latn - 0x4bc520b3: 714, // vai-Latn-LR - 0x4bcd9000: 715, // vai-Vaii - 0x4bcd90b3: 716, // vai-Vaii-LR + 0x4bc55000: 713, // vai-Latn + 0x4bc550b4: 714, // vai-Latn-LR + 0x4bcdf000: 715, // vai-Vaii + 0x4bcdf0b4: 716, // vai-Vaii-LR 0x4be00000: 717, // ve 0x4c100000: 718, // vi - 0x4c10013d: 719, // vi-VN + 0x4c10013e: 719, // vi-VN 0x4c700000: 720, // vo 0x4c700001: 721, // vo-001 0x4ca00000: 722, // vun - 0x4ca0012e: 723, // vun-TZ + 0x4ca0012f: 723, // vun-TZ 0x4cc00000: 724, // wa 0x4cd00000: 725, // wae - 0x4cd0004d: 726, // wae-CH + 0x4cd0004e: 726, // wae-CH 0x4e300000: 727, // wo 0x4f000000: 728, // xh 0x4f900000: 729, // xog - 0x4f900130: 730, // xog-UG + 0x4f900131: 730, // xog-UG 0x50700000: 731, // yav - 0x50700051: 732, // yav-CM + 0x50700052: 732, // yav-CM 0x51000000: 733, // yi 0x51000001: 734, // yi-001 0x51600000: 735, // yo - 0x5160003a: 736, // yo-BJ - 0x516000d5: 737, // yo-NG + 0x5160003b: 736, // yo-BJ + 0x516000d6: 737, // yo-NG 0x51d00000: 738, // yue - 0x51d0008c: 739, // yue-HK + 0x51d0008d: 739, // yue-HK 0x52600000: 740, // zgh - 0x526000b9: 741, // zgh-MA + 0x526000ba: 741, // zgh-MA 0x52700000: 742, // zh - 0x52734000: 743, // zh-Hans - 0x52734052: 744, // zh-Hans-CN - 0x5273408c: 745, // zh-Hans-HK - 0x527340c5: 746, // zh-Hans-MO - 0x5273410c: 747, // zh-Hans-SG - 0x52735000: 748, // zh-Hant - 0x5273508c: 749, // zh-Hant-HK - 0x527350c5: 750, // zh-Hant-MO - 0x5273512d: 751, // zh-Hant-TW + 0x52737000: 743, // zh-Hans + 0x52737053: 744, // zh-Hans-CN + 0x5273708d: 745, // zh-Hans-HK + 0x527370c6: 746, // zh-Hans-MO + 0x5273710d: 747, // zh-Hans-SG + 0x52738000: 748, // zh-Hant + 0x5273808d: 749, // zh-Hant-HK + 0x527380c6: 750, // zh-Hant-MO + 0x5273812e: 751, // zh-Hant-TW 0x52c00000: 752, // zu - 0x52c00160: 753, // zu-ZA + 0x52c00161: 753, // zu-ZA } // Total table size 4592 bytes (4KiB); checksum: C25F8AFF diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go index f1012c952..b65e213ff 100644 --- a/vendor/golang.org/x/text/language/language.go +++ b/vendor/golang.org/x/text/language/language.go @@ -5,102 +5,7 @@ //go:generate go run gen.go gen_common.go -output tables.go //go:generate go run gen_index.go -// Package language implements BCP 47 language tags and related functionality. -// -// The Tag type, which is used to represent languages, is agnostic to the -// meaning of its subtags. Tags are not fully canonicalized to preserve -// information that may be valuable in certain contexts. As a consequence, two -// different tags may represent identical languages. -// -// Initializing language- or locale-specific components usually consists of -// two steps. The first step is to select a display language based on the -// preferred languages of the user and the languages supported by an application. -// The second step is to create the language-specific services based on -// this selection. Each is discussed in more details below. -// -// Matching preferred against supported languages -// -// An application may support various languages. This list is typically limited -// by the languages for which there exists translations of the user interface. -// Similarly, a user may provide a list of preferred languages which is limited -// by the languages understood by this user. -// An application should use a Matcher to find the best supported language based -// on the user's preferred list. -// Matchers are aware of the intricacies of equivalence between languages. -// The default Matcher implementation takes into account things such as -// deprecated subtags, legacy tags, and mutual intelligibility between scripts -// and languages. -// -// A Matcher for English, Australian English, Danish, and standard Mandarin can -// be defined as follows: -// -// var matcher = language.NewMatcher([]language.Tag{ -// language.English, // The first language is used as fallback. -// language.MustParse("en-AU"), -// language.Danish, -// language.Chinese, -// }) -// -// The following code selects the best match for someone speaking Spanish and -// Norwegian: -// -// preferred := []language.Tag{ language.Spanish, language.Norwegian } -// tag, _, _ := matcher.Match(preferred...) -// -// In this case, the best match is Danish, as Danish is sufficiently a match to -// Norwegian to not have to fall back to the default. -// See ParseAcceptLanguage on how to handle the Accept-Language HTTP header. -// -// Selecting language-specific services -// -// One should always use the Tag returned by the Matcher to create an instance -// of any of the language-specific services provided by the text repository. -// This prevents the mixing of languages, such as having a different language for -// messages and display names, as well as improper casing or sorting order for -// the selected language. -// Using the returned Tag also allows user-defined settings, such as collation -// order or numbering system to be transparently passed as options. -// -// If you have language-specific data in your application, however, it will in -// most cases suffice to use the index returned by the matcher to identify -// the user language. -// The following loop provides an alternative in case this is not sufficient: -// -// supported := map[language.Tag]data{ -// language.English: enData, -// language.MustParse("en-AU"): enAUData, -// language.Danish: daData, -// language.Chinese: zhData, -// } -// tag, _, _ := matcher.Match(preferred...) -// for ; tag != language.Und; tag = tag.Parent() { -// if v, ok := supported[tag]; ok { -// return v -// } -// } -// return enData // should not reach here -// -// Repeatedly taking the Parent of the tag returned by Match will eventually -// match one of the tags used to initialize the Matcher. -// -// Canonicalization -// -// By default, only legacy and deprecated tags are converted into their -// canonical equivalent. All other information is preserved. This approach makes -// the confidence scores more accurate and allows matchers to distinguish -// between variants that are otherwise lost. -// -// As a consequence, two tags that should be treated as identical according to -// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The -// Matchers will handle such distinctions, though, and are aware of the -// equivalence relations. The CanonType type can be used to alter the -// canonicalization form. -// -// References -// -// BCP 47 - Tags for Identifying Languages -// http://tools.ietf.org/html/bcp47 -package language // import "golang.org/x/text/language" +package language // TODO: Remove above NOTE after: // - verifying that tables are dropped correctly (most notably matcher tables). @@ -394,6 +299,26 @@ func (t Tag) String() string { return string(buf[:t.genCoreBytes(buf[:])]) } +// MarshalText implements encoding.TextMarshaler. +func (t Tag) MarshalText() (text []byte, err error) { + if t.str != "" { + text = append(text, t.str...) + } else if t.script == 0 && t.region == 0 { + text = append(text, t.lang.String()...) + } else { + buf := [maxCoreSize]byte{} + text = buf[:t.genCoreBytes(buf[:])] + } + return text, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (t *Tag) UnmarshalText(text []byte) error { + tag, err := Raw.Parse(string(text)) + *t = tag + return err +} + // Base returns the base language of the language tag. If the base language is // unspecified, an attempt will be made to infer it from the context. // It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. diff --git a/vendor/golang.org/x/text/language/language_test.go b/vendor/golang.org/x/text/language/language_test.go index f7c2d88ab..684ac2e66 100644 --- a/vendor/golang.org/x/text/language/language_test.go +++ b/vendor/golang.org/x/text/language/language_test.go @@ -106,6 +106,39 @@ func TestCompactIndex(t *testing.T) { } } +func TestMarshal(t *testing.T) { + testCases := []string{ + // TODO: these values will change with each CLDR update. This issue + // will be solved if we decide to fix the indexes. + "und", + "ca-ES-valencia", + "ca-ES-valencia-u-va-posix", + "ca-ES-valencia-u-co-phonebk", + "ca-ES-valencia-u-co-phonebk-va-posix", + "x-klingon", + "en-US", + "en-US-u-va-posix", + "en", + "en-u-co-phonebk", + "en-001", + "sh", + } + for _, tc := range testCases { + var tag Tag + err := tag.UnmarshalText([]byte(tc)) + if err != nil { + t.Errorf("UnmarshalText(%q): unexpected error: %v", tc, err) + } + b, err := tag.MarshalText() + if err != nil { + t.Errorf("MarshalText(%q): unexpected error: %v", tc, err) + } + if got := string(b); got != tc { + t.Errorf("%s: got %q; want %q", tc, got, tc) + } + } +} + func TestBase(t *testing.T) { tests := []struct { loc, lang string diff --git a/vendor/golang.org/x/text/language/match.go b/vendor/golang.org/x/text/language/match.go index 63bc744a3..15b74d125 100644 --- a/vendor/golang.org/x/text/language/match.go +++ b/vendor/golang.org/x/text/language/match.go @@ -16,6 +16,29 @@ func PreferSameScript(preferSame bool) MatchOption { return func(m *matcher) { m.preferSameScript = preferSame } } +// TODO(v1.0.0): consider making Matcher a concrete type, instead of interface. +// There doesn't seem to be too much need for multiple types. +// Making it a concrete type allows MatchStrings to be a method, which will +// improve its discoverability. + +// MatchStrings parses and matches the given strings until one of them matches +// the language in the Matcher. A string may be an Accept-Language header as +// handled by ParseAcceptLanguage. The default language is returned if no +// other language matched. +func MatchStrings(m Matcher, lang ...string) (tag Tag, index int) { + for _, accept := range lang { + desired, _, err := ParseAcceptLanguage(accept) + if err != nil { + continue + } + if tag, index, conf := m.Match(desired...); conf != No { + return tag, index + } + } + tag, index, _ = m.Match() + return +} + // Matcher is the interface that wraps the Match method. // // Match returns the best match for any of the given tags, along with @@ -83,9 +106,8 @@ func (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) { // to do after the fact, so we do it here. // TODO: add in alternative variants to -u-va-. // TODO: add preferred region to -u-rg-. - // TODO: add other extensions. Merge with existing extensions. - if u, ok := w.Extension('u'); ok { - t, _ = Raw.Compose(t, u) + if e := w.Extensions(); len(e) > 0 { + t, _ = Raw.Compose(t, e) } return t, index, c } @@ -122,7 +144,7 @@ var ErrMissingLikelyTagsData = errors.New("missing likely tags data") // addLikelySubtags sets subtags to their most likely value, given the locale. // In most cases this means setting fields for unknown values, but in some -// cases it may alter a value. It returns a ErrMissingLikelyTagsData error +// cases it may alter a value. It returns an ErrMissingLikelyTagsData error // if the given locale cannot be expanded. func (t Tag) addLikelySubtags() (Tag, error) { id, err := addTags(t) @@ -331,8 +353,9 @@ func minimizeTags(t Tag) (Tag, error) { // 1) compute the match between the two tags. // 2) if the match is better than the previous best match, replace it // with the new match. (see next section) -// b) if the current best match is above a certain threshold, return this -// match without proceeding to the next tag in "desired". [See Note 1] +// b) if the current best match is Exact and pin is true the result will be +// frozen to the language found thusfar, although better matches may +// still be found for the same language. // 3) If the best match so far is below a certain threshold, return "default". // // Ranking: @@ -381,9 +404,6 @@ func minimizeTags(t Tag) (Tag, error) { // found wins. // // Notes: -// [1] Note that even if we may not have a perfect match, if a match is above a -// certain threshold, it is considered a better match than any other match -// to a tag later in the list of preferred language tags. // [2] In practice, as matching of Exact is done in a separate phase from // matching the other levels, we reuse the Exact level to mean MaxExact in // the second phase. As a consequence, we only need the levels defined by @@ -429,8 +449,8 @@ type matcher struct { // matchHeader has the lists of tags for exact matches and matches based on // maximized and canonicalized tags for a given language. type matchHeader struct { - exact []*haveTag - max []*haveTag + haveTags []*haveTag + original bool } // haveTag holds a supported Tag and its maximized script and region. The maximized @@ -460,7 +480,7 @@ type haveTag struct { func makeHaveTag(tag Tag, index int) (haveTag, langID) { max := tag - if tag.lang != 0 { + if tag.lang != 0 || tag.region != 0 || tag.script != 0 { max, _ = max.canonicalize(All) max, _ = addTags(max) max.remakeString() @@ -485,29 +505,27 @@ func altScript(l langID, s scriptID) scriptID { // addIfNew adds a haveTag to the list of tags only if it is a unique tag. // Tags that have the same maximized values are linked by index. func (h *matchHeader) addIfNew(n haveTag, exact bool) { + h.original = h.original || exact // Don't add new exact matches. - for _, v := range h.exact { + for _, v := range h.haveTags { if v.tag.equalsRest(n.tag) { return } } - if exact { - h.exact = append(h.exact, &n) - } // Allow duplicate maximized tags, but create a linked list to allow quickly // comparing the equivalents and bail out. - for i, v := range h.max { + for i, v := range h.haveTags { if v.maxScript == n.maxScript && v.maxRegion == n.maxRegion && v.tag.variantOrPrivateTagStr() == n.tag.variantOrPrivateTagStr() { - for h.max[i].nextMax != 0 { - i = int(h.max[i].nextMax) + for h.haveTags[i].nextMax != 0 { + i = int(h.haveTags[i].nextMax) } - h.max[i].nextMax = uint16(len(h.max)) + h.haveTags[i].nextMax = uint16(len(h.haveTags)) break } } - h.max = append(h.max, &n) + h.haveTags = append(h.haveTags, &n) } // header returns the matchHeader for the given language. It creates one if @@ -553,27 +571,26 @@ func newMatcher(supported []Tag, options []MatchOption) *matcher { m.header(tag.lang).addIfNew(pair, true) m.supported = append(m.supported, &pair) } - m.default_ = m.header(supported[0].lang).exact[0] + m.default_ = m.header(supported[0].lang).haveTags[0] + // Keep these in two different loops to support the case that two equivalent + // languages are distinguished, such as iw and he. for i, tag := range supported { pair, max := makeHaveTag(tag, i) if max != tag.lang { - m.header(max).addIfNew(pair, false) + m.header(max).addIfNew(pair, true) } } - // TODO: include alt script. - // - don't replace regions, but allow regions to be made more specific. - // update is used to add indexes in the map for equivalent languages. - // If force is true, the update will also apply to derived entries. To - // avoid applying a "transitive closure", use false. - update := func(want, have uint16, conf Confidence, force bool) { + // update will only add entries to original indexes, thus not computing any + // transitive relations. + update := func(want, have uint16, conf Confidence) { if hh := m.index[langID(have)]; hh != nil { - if !force && len(hh.exact) == 0 { + if !hh.original { return } hw := m.header(langID(want)) - for _, ht := range hh.max { + for _, ht := range hh.haveTags { v := *ht if conf < v.conf { v.conf = conf @@ -582,7 +599,7 @@ func newMatcher(supported []Tag, options []MatchOption) *matcher { if v.altScript != 0 { v.altScript = altScript(langID(want), v.maxScript) } - hw.addIfNew(v, conf == Exact && len(hh.exact) > 0) + hw.addIfNew(v, conf == Exact && hh.original) } } } @@ -590,9 +607,9 @@ func newMatcher(supported []Tag, options []MatchOption) *matcher { // Add entries for languages with mutual intelligibility as defined by CLDR's // languageMatch data. for _, ml := range matchLang { - update(ml.want, ml.have, toConf(ml.distance), false) + update(ml.want, ml.have, toConf(ml.distance)) if !ml.oneway { - update(ml.have, ml.want, toConf(ml.distance), false) + update(ml.have, ml.want, toConf(ml.distance)) } } @@ -602,10 +619,6 @@ func newMatcher(supported []Tag, options []MatchOption) *matcher { // (their canonicalization simply substitutes a different language code, but // nothing else), the match confidence is Exact, otherwise it is High. for i, lm := range langAliasMap { - if lm.from == _sh { - continue - } - // If deprecated codes match and there is no fiddling with the script or // or region, we consider it an exact match. conf := Exact @@ -613,9 +626,9 @@ func newMatcher(supported []Tag, options []MatchOption) *matcher { if !isExactEquivalent(langID(lm.from)) { conf = High } - update(lm.to, lm.from, conf, true) + update(lm.to, lm.from, conf) } - update(lm.from, lm.to, conf, true) + update(lm.from, lm.to, conf) } return m } @@ -624,28 +637,29 @@ func newMatcher(supported []Tag, options []MatchOption) *matcher { // account the order of preference of the given tags. func (m *matcher) getBest(want ...Tag) (got *haveTag, orig Tag, c Confidence) { best := bestMatch{} - for _, w := range want { + for i, w := range want { var max Tag // Check for exact match first. h := m.index[w.lang] if w.lang != 0 { - // Base language is defined. if h == nil { continue } - for i := range h.exact { - have := h.exact[i] - if have.tag.equalsRest(w) { - return have, w, Exact - } + // Base language is defined. + max, _ = w.canonicalize(Legacy | Deprecated | Macro) + // A region that is added through canonicalization is stronger than + // a maximized region: set it in the original (e.g. mo -> ro-MD). + if w.region != max.region { + w.region = max.region } - max, _ = w.canonicalize(Legacy | Deprecated) + // TODO: should we do the same for scripts? + // See test case: en, sr, nl ; sh ; sr max, _ = addTags(max) } else { // Base language is not defined. if h != nil { - for i := range h.exact { - have := h.exact[i] + for i := range h.haveTags { + have := h.haveTags[i] if have.tag.equalsRest(w) { return have, w, Exact } @@ -661,16 +675,23 @@ func (m *matcher) getBest(want ...Tag) (got *haveTag, orig Tag, c Confidence) { continue } } + pin := true + for _, t := range want[i+1:] { + if w.lang == t.lang { + pin = false + break + } + } // Check for match based on maximized tag. - for i := range h.max { - have := h.max[i] - best.update(have, w, max.script, max.region) + for i := range h.haveTags { + have := h.haveTags[i] + best.update(have, w, max.script, max.region, pin) if best.conf == Exact { for have.nextMax != 0 { - have = h.max[have.nextMax] - best.update(have, w, max.script, max.region) + have = h.haveTags[have.nextMax] + best.update(have, w, max.script, max.region, pin) } - return best.have, best.want, High + return best.have, best.want, best.conf } } } @@ -685,43 +706,68 @@ func (m *matcher) getBest(want ...Tag) (got *haveTag, orig Tag, c Confidence) { // bestMatch accumulates the best match so far. type bestMatch struct { - have *haveTag - want Tag - conf Confidence + have *haveTag + want Tag + conf Confidence + pinnedRegion regionID + pinLanguage bool + sameRegionGroup bool // Cached results from applying tie-breaking rules. origLang bool origReg bool + paradigmReg bool regGroupDist uint8 - regDist uint8 origScript bool - parentDist uint8 // 255 if have is not an ancestor of want tag. } // update updates the existing best match if the new pair is considered to be a -// better match. -// To determine if the given pair is a better match, it first computes the rough -// confidence level. If this surpasses the current match, it will replace it and -// update the tie-breaker rule cache. If there is a tie, it proceeds with applying -// a series of tie-breaker rules. If there is no conclusive winner after applying -// the tie-breaker rules, it leaves the current match as the preferred match. -func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion regionID) { +// better match. To determine if the given pair is a better match, it first +// computes the rough confidence level. If this surpasses the current match, it +// will replace it and update the tie-breaker rule cache. If there is a tie, it +// proceeds with applying a series of tie-breaker rules. If there is no +// conclusive winner after applying the tie-breaker rules, it leaves the current +// match as the preferred match. +// +// If pin is true and have and tag are a strong match, it will henceforth only +// consider matches for this language. This corresponds to the nothing that most +// users have a strong preference for the first defined language. A user can +// still prefer a second language over a dialect of the preferred language by +// explicitly specifying dialects, e.g. "en, nl, en-GB". In this case pin should +// be false. +func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion regionID, pin bool) { // Bail if the maximum attainable confidence is below that of the current best match. c := have.conf if c < m.conf { return } - if have.maxScript != maxScript { + // Don't change the language once we already have found an exact match. + if m.pinLanguage && tag.lang != m.want.lang { + return + } + // Pin the region group if we are comparing tags for the same language. + if tag.lang == m.want.lang && m.sameRegionGroup { + _, sameGroup := regionGroupDist(m.pinnedRegion, have.maxRegion, have.maxScript, m.want.lang) + if !sameGroup { + return + } + } + if c == Exact && have.maxScript == maxScript { + // If there is another language and then another entry of this language, + // don't pin anything, otherwise pin the language. + m.pinLanguage = pin + } + if have.tag.equalsRest(tag) { + } else if have.maxScript != maxScript { // There is usually very little comprehension between different scripts. - // In a few cases there may still be Low comprehension. This possibility is - // pre-computed and stored in have.altScript. + // In a few cases there may still be Low comprehension. This possibility + // is pre-computed and stored in have.altScript. if Low < m.conf || have.altScript != maxScript { return } c = Low } else if have.maxRegion != maxRegion { - // There is usually a small difference between languages across regions. - // We use the region distance (below) to disambiguate between equal matches. if High < c { + // There is usually a small difference between languages across regions. c = High } } @@ -748,14 +794,6 @@ func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion beaten = true } - regGroupDist := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.lang) - if !beaten && m.regGroupDist != regGroupDist { - if regGroupDist > m.regGroupDist { - return - } - beaten = true - } - // We prefer if the pre-maximized region was specified and identical. origReg := have.tag.region == tag.region && tag.region != 0 if !beaten && m.origReg != origReg { @@ -765,24 +803,17 @@ func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion beaten = true } - // TODO: remove the region distance rule. Region distance has been replaced - // by the region grouping rule. For now we leave it as it still seems to - // have a net positive effect when applied after the grouping rule. - // Possible solutions: - // - apply the primary locale rule first to effectively disable region - // region distance if groups are defined. - // - express the following errors in terms of grouping (if possible) - // - find another method of handling the following cases. - // maximization of legacy: find mo in - // "sr-Cyrl, sr-Latn, ro, ro-MD": have ro; want ro-MD (High) - // region distance French: find fr-US in - // "en, fr, fr-CA, fr-CH": have fr; want fr-CA (High) + regGroupDist, sameGroup := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.lang) + if !beaten && m.regGroupDist != regGroupDist { + if regGroupDist > m.regGroupDist { + return + } + beaten = true + } - // Next we prefer smaller distances between regions, as defined by - // regionDist. - regDist := uint8(regionDistance(have.maxRegion, maxRegion)) - if !beaten && m.regDist != regDist { - if regDist > m.regDist { + paradigmReg := isParadigmLocale(tag.lang, have.maxRegion) + if !beaten && m.paradigmReg != paradigmReg { + if !paradigmReg { return } beaten = true @@ -797,52 +828,35 @@ func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion beaten = true } - // Finally we prefer tags which have a closer parent relationship. - // TODO: the parent relationship no longer seems necessary. It doesn't hurt - // to leave it in as the final tie-breaker, though, especially until the - // grouping data has further matured. - parentDist := parentDistance(have.tag.region, tag) - if !beaten && m.parentDist != parentDist { - if parentDist > m.parentDist { - return - } - beaten = true - } - // Update m to the newly found best match. if beaten { m.have = have m.want = tag m.conf = c + m.pinnedRegion = maxRegion + m.sameRegionGroup = sameGroup m.origLang = origLang m.origReg = origReg + m.paradigmReg = paradigmReg m.origScript = origScript m.regGroupDist = regGroupDist - m.regDist = regDist - m.parentDist = parentDist } } -// parentDistance returns the number of times Parent must be called before the -// regions match. It is assumed that it has already been checked that lang and -// script are identical. If haveRegion does not occur in the ancestor chain of -// tag, it returns 255. -func parentDistance(haveRegion regionID, tag Tag) uint8 { - p := tag.Parent() - d := uint8(1) - for haveRegion != p.region { - if p.region == 0 { - return 255 +func isParadigmLocale(lang langID, r regionID) bool { + for _, e := range paradigmLocales { + if langID(e[0]) == lang && (r == regionID(e[1]) || r == regionID(e[2])) { + return true } - p = p.Parent() - d++ } - return d + return false } // regionGroupDist computes the distance between two regions based on their // CLDR grouping. -func regionGroupDist(a, b regionID, script scriptID, lang langID) uint8 { +func regionGroupDist(a, b regionID, script scriptID, lang langID) (dist uint8, same bool) { + const defaultDistance = 4 + aGroup := uint(regionToGroups[a]) << 1 bGroup := uint(regionToGroups[b]) << 1 for _, ri := range matchRegion { @@ -850,40 +864,16 @@ func regionGroupDist(a, b regionID, script scriptID, lang langID) uint8 { group := uint(1 << (ri.group &^ 0x80)) if 0x80&ri.group == 0 { if aGroup&bGroup&group != 0 { // Both regions are in the group. - return ri.distance + return ri.distance, ri.distance == defaultDistance } } else { if (aGroup|bGroup)&group == 0 { // Both regions are not in the group. - return ri.distance + return ri.distance, ri.distance == defaultDistance } } } } - const defaultDistance = 4 - return defaultDistance -} - -// regionDistance computes the distance between two regions based on the -// distance in the graph of region containments as defined in CLDR. It iterates -// over increasingly inclusive sets of groups, represented as bit vectors, until -// the source bit vector has bits in common with the destination vector. -func regionDistance(a, b regionID) int { - if a == b { - return 0 - } - p, q := regionInclusion[a], regionInclusion[b] - if p < nRegionGroups { - p, q = q, p - } - set := regionInclusionBits - if q < nRegionGroups && set[p]&(1< is not expanded to the appropriate language. - "en-Hant-TW,und-TW/zh-Hant": true, // match: got "en-Hant-TW"; want "und-TW" - "en-Hant-TW,und-TW/zh": true, // match: got "en-Hant-TW"; want "und-TW" // Honor the wildcard match. This may only be useful to select non-exact // stuff. "mul,af/nl": true, // match: got "af"; want "mul" @@ -63,15 +67,6 @@ var skip = map[string]bool{ // Inconsistencies with Mark Davis' implementation where it is not clear // which is better. - // Go prefers exact matches over less exact preferred ones. - // Preferring desired ones might be better. - "en,de,fr,ja/de-CH,fr": true, // match: got "fr"; want "de" - "en-GB,en,de,fr,ja/de-CH,fr": true, // match: got "fr"; want "de" - "pt-PT,pt-BR,es,es-419/pt-US,pt-PT": true, // match: got "pt-PT"; want "pt-BR" - "pt-PT,pt,es,es-419/pt-US,pt-PT,pt": true, // match: got "pt-PT"; want "pt" - "en,sv/en-GB,sv": true, // match: got "sv"; want "en" - "en-NZ,en-IT/en-US": true, // match: got "en-IT"; want "en-NZ" - // Inconsistencies in combined. I think the Go approach is more appropriate. // We could use -u-rg- and -u-va- as alternative. "und,fr/fr-BE-fonipa": true, // combined: got "fr"; want "fr-BE-fonipa" @@ -80,20 +75,8 @@ var skip = map[string]bool{ "und,no/nn-BE-fonipa": true, // combined: got "no"; want "no-BE-fonipa" "50,und,fr-CA-fonupa/fr-BE-fonipa": true, // combined: got "fr-CA-fonupa"; want "fr-BE-fonipa" - // Spec says prefer primary locales. But what is the benefit? Shouldn't - // the developer just not specify the primary locale first in the list? - // TODO: consider adding a SortByPreferredLocale function to ensure tags - // are ordered such that the preferred locale rule is observed. - // TODO: most of these cases are solved by getting rid of the region - // distance tie-breaker rule (see comments there). - "und,es,es-MA,es-MX,es-419/es-EA": true, // match: got "es-MA"; want "es" - "und,es-MA,es,es-419,es-MX/es-EA": true, // match: got "es-MA"; want "es" - "und,en,en-GU,en-IN,en-GB/en-ZA": true, // match: got "en-IN"; want "en-GB" - "und,en,en-GU,en-IN,en-GB/en-VI": true, // match: got "en-GU"; want "en" - "und,en-GU,en,en-GB,en-IN/en-VI": true, // match: got "en-GU"; want "en" - - // Falling back to the default seems more appropriate than falling back - // on a language with the same script. + // The initial number is a threshold. As we don't use scoring, we will not + // implement this. "50,und,fr-Cyrl-CA-fonupa/fr-BE-fonipa": true, // match: got "und"; want "fr-Cyrl-CA-fonupa" // combined: got "und"; want "fr-Cyrl-BE-fonipa" @@ -106,11 +89,65 @@ var skip = map[string]bool{ func makeTagList(s string) (tags []Tag) { for _, s := range strings.Split(s, ",") { - tags = append(tags, Make(strings.TrimSpace(s))) + tags = append(tags, mk(strings.TrimSpace(s))) } return tags } +func TestMatchStrings(t *testing.T) { + testCases := []struct { + supported string + desired string // strings separted by | + tag string + index int + }{{ + supported: "en", + desired: "", + tag: "en", + index: 0, + }, { + supported: "en", + desired: "nl", + tag: "en", + index: 0, + }, { + supported: "en,nl", + desired: "nl", + tag: "nl", + index: 1, + }, { + supported: "en,nl", + desired: "nl|en", + tag: "nl", + index: 1, + }, { + supported: "en-GB,nl", + desired: "en ; q=0.1,nl", + tag: "nl", + index: 1, + }, { + supported: "en-GB,nl", + desired: "en;q=0.005 | dk; q=0.1,nl ", + tag: "en-GB", + index: 0, + }, { + // do not match faulty tags with und + supported: "en,und", + desired: "|en", + tag: "en", + index: 0, + }} + for _, tc := range testCases { + t.Run(path.Join(tc.supported, tc.desired), func(t *testing.T) { + m := NewMatcher(makeTagList(tc.supported)) + tag, index := MatchStrings(m, strings.Split(tc.desired, "|")...) + if tag.String() != tc.tag || index != tc.index { + t.Errorf("got %v, %d; want %v, %d", tag, index, tc.tag, tc.index) + } + }) + } +} + func TestAddLikelySubtags(t *testing.T) { tests := []struct{ in, out string }{ {"aa", "aa-Latn-ET"}, @@ -132,6 +169,7 @@ func TestAddLikelySubtags(t *testing.T) { {"und-YT", "fr-Latn-YT"}, {"und-Arab", "ar-Arab-EG"}, {"und-AM", "hy-Armn-AM"}, + {"und-TW", "zh-Hant-TW"}, {"und-002", "en-Latn-NG"}, {"und-Latn-002", "en-Latn-NG"}, {"en-Latn-002", "en-Latn-NG"}, @@ -266,6 +304,12 @@ func TestRegionGroups(t *testing.T) { }{ {"zh-TW", "zh-HK", 5}, {"zh-MO", "zh-HK", 4}, + {"es-ES", "es-AR", 5}, + {"es-ES", "es", 4}, + {"es-419", "es-MX", 4}, + {"es-AR", "es-MX", 4}, + {"es-ES", "es-MX", 5}, + {"es-PT", "es-MX", 5}, } for _, tc := range testCases { a := MustParse(tc.a) @@ -277,67 +321,27 @@ func TestRegionGroups(t *testing.T) { t.Errorf("scripts differ: %q vs %q", aScript, bScript) continue } - d := regionGroupDist(a.region, b.region, aScript.scriptID, a.lang) + d, _ := regionGroupDist(a.region, b.region, aScript.scriptID, a.lang) if d != tc.distance { t.Errorf("got %q; want %q", d, tc.distance) } } } -func TestRegionDistance(t *testing.T) { - tests := []struct { - a, b string - d int - }{ - {"NL", "NL", 0}, - {"NL", "EU", 1}, - {"EU", "NL", 1}, - {"005", "005", 0}, - {"NL", "BE", 2}, - {"CO", "005", 1}, - {"005", "CO", 1}, - {"CO", "419", 2}, - {"419", "CO", 2}, - {"005", "419", 1}, - {"419", "005", 1}, - {"001", "013", 2}, - {"013", "001", 2}, - {"CO", "CW", 4}, - {"CO", "PW", 6}, - {"CO", "BV", 6}, - {"ZZ", "QQ", 2}, +func TestIsParadigmLocale(t *testing.T) { + testCases := map[string]bool{ + "en-US": true, + "en-GB": true, + "en-VI": false, + "es-GB": false, + "es-ES": true, + "es-419": true, } - for i, tt := range tests { - testtext.Run(t, tt.a+"/"+tt.b, func(t *testing.T) { - ra, _ := getRegionID([]byte(tt.a)) - rb, _ := getRegionID([]byte(tt.b)) - if d := regionDistance(ra, rb); d != tt.d { - t.Errorf("%d: d(%s, %s) = %v; want %v", i, tt.a, tt.b, d, tt.d) - } - }) - } -} - -func TestParentDistance(t *testing.T) { - tests := []struct { - parent string - tag string - d uint8 - }{ - {"en-001", "en-AU", 1}, - {"pt-PT", "pt-AO", 1}, - {"pt", "pt-AO", 2}, - {"en-AU", "en-GB", 255}, - {"en-NL", "en-AU", 255}, - // Note that pt-BR and en-US are not automatically minimized. - {"pt-BR", "pt-AO", 255}, - {"en-US", "en-AU", 255}, - } - for _, tt := range tests { - r := Raw.MustParse(tt.parent).region - tag := Raw.MustParse(tt.tag) - if d := parentDistance(r, tag); d != tt.d { - t.Errorf("d(%s, %s) was %d; want %d", r, tag, d, tt.d) + for str, want := range testCases { + tag := Make(str) + got := isParadigmLocale(tag.lang, tag.region) + if got != want { + t.Errorf("isPL(%q) = %v; want %v", str, got, want) } } } @@ -355,12 +359,8 @@ func (m *matcher) String() string { func (h *matchHeader) String() string { w := &bytes.Buffer{} - fmt.Fprintf(w, "exact: ") - for _, h := range h.exact { - fmt.Fprintf(w, "%v, ", h) - } - fmt.Fprint(w, "; max: ") - for _, h := range h.max { + fmt.Fprint(w, "haveTag: ") + for _, h := range h.haveTags { fmt.Fprintf(w, "%v, ", h) } return w.String() @@ -370,35 +370,8 @@ func (t haveTag) String() string { return fmt.Sprintf("%v:%d:%v:%v-%v|%v", t.tag, t.index, t.conf, t.maxRegion, t.maxScript, t.altScript) } -func parseSupported(list string) (out []Tag) { - for _, s := range strings.Split(list, ",") { - out = append(out, mk(strings.TrimSpace(s))) - } - return out -} - -// The test set for TestBestMatch is defined in data_test.go. -func TestBestMatch(t *testing.T) { - for _, tt := range matchTests { - supported := parseSupported(tt.supported) - m := newMatcher(supported, nil) - if *verbose { - fmt.Printf("%s:\n%v\n", tt.comment, m) - } - for _, tm := range tt.test { - t.Run(path.Join(tt.comment, tt.supported, tm.desired), func(t *testing.T) { - tag, _, conf := m.Match(parseSupported(tm.desired)...) - if tag.String() != tm.match { - t.Errorf("find %s in %q: have %s; want %s (%v)", tm.desired, tt.supported, tag, tm.match, conf) - } - }) - - } - } -} - func TestBestMatchAlloc(t *testing.T) { - m := NewMatcher(parseSupported("en sr nl")) + m := NewMatcher(makeTagList("en sr nl")) // Go allocates when creating a list of tags from a single tag! list := []Tag{English} avg := testtext.AllocsPerRun(1, func() { diff --git a/vendor/golang.org/x/text/language/parse.go b/vendor/golang.org/x/text/language/parse.go index cfa28f56e..fca2d30e5 100644 --- a/vendor/golang.org/x/text/language/parse.go +++ b/vendor/golang.org/x/text/language/parse.go @@ -765,7 +765,7 @@ func nextExtension(s string, p int) int { var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight") -// ParseAcceptLanguage parses the contents of a Accept-Language header as +// ParseAcceptLanguage parses the contents of an Accept-Language header as // defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and // a list of corresponding quality weights. It is more permissive than RFC 2616 // and may return non-nil slices even if the input is not valid. diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go index a108554a4..ec17f97ad 100644 --- a/vendor/golang.org/x/text/language/tables.go +++ b/vendor/golang.org/x/text/language/tables.go @@ -7,11 +7,11 @@ import "golang.org/x/text/internal/tag" // CLDRVersion is the CLDR version from which the tables in this package are derived. const CLDRVersion = "31" -const numLanguages = 8654 +const numLanguages = 8665 -const numScripts = 230 +const numScripts = 237 -const numRegions = 356 +const numRegions = 357 type fromTo struct { from uint16 @@ -333,7 +333,7 @@ var langNoIndex = [2197]uint8{ // Entry 200 - 23F 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27, 0xcd, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, - 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xcf, 0xe0, 0xdf, + 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe0, 0xdf, 0x03, 0x44, 0x08, 0x10, 0x01, 0x04, 0x01, 0xe3, 0x92, 0x54, 0xdb, 0x28, 0xd1, 0x5f, 0xf6, 0x6d, 0x79, 0xed, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01, @@ -354,7 +354,7 @@ var langNoIndex = [2197]uint8{ 0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, - 0xe5, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, + 0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04, 0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20, // Entry 2C0 - 2FF @@ -398,7 +398,7 @@ var langNoIndex = [2197]uint8{ 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7, 0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x00, 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xd9, 0x0e, 0x11, - 0x84, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01, + 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01, 0x05, 0xd1, 0x50, 0x58, 0x00, 0x00, 0x00, 0x10, 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2, 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe, @@ -414,12 +414,12 @@ var langNoIndex = [2197]uint8{ // Entry 440 - 47F 0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d, 0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd, - 0x7f, 0x4e, 0xbf, 0x8e, 0xae, 0xff, 0xee, 0xdf, + 0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf, 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7, 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce, 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xbd, 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff, - 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x04, 0x44, + 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4, // Entry 480 - 4BF 0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xfd, 0x99, 0xfb, 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20, @@ -473,7 +473,7 @@ var langNoIndex = [2197]uint8{ 0x31, 0x00, 0x00, 0x00, 0x01, 0x10, 0x02, 0x20, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00, 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f, - 0x1f, 0x18, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe, + 0x1f, 0x98, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe, // Entry 600 - 63F 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9, 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1, @@ -484,7 +484,7 @@ var langNoIndex = [2197]uint8{ 0xbe, 0x5f, 0x46, 0x1b, 0xe9, 0x5f, 0x50, 0x18, 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f, // Entry 640 - 67F - 0x75, 0xc4, 0x7d, 0x81, 0x82, 0xf1, 0x57, 0x6c, + 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf1, 0x57, 0x6c, 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde, 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x1f, 0x00, 0x98, 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff, @@ -500,7 +500,7 @@ var langNoIndex = [2197]uint8{ 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06, 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x04, 0x00, 0x10, 0x8c, 0x58, 0xd5, 0x0d, 0x0f, + 0x04, 0x00, 0x10, 0xcc, 0x58, 0xd5, 0x0d, 0x0f, // Entry 6C0 - 6FF 0x14, 0x4d, 0xf1, 0x16, 0x44, 0xd1, 0x42, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, @@ -521,7 +521,7 @@ var langNoIndex = [2197]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 740 - 77F 0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e, - 0xa0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x44, + 0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x44, 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04, 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a, 0x01, 0x00, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55, @@ -533,7 +533,7 @@ var langNoIndex = [2197]uint8{ 0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00, 0x10, 0x03, 0x11, 0x02, 0x01, 0x00, 0x00, 0xf0, 0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78, - 0x78, 0x15, 0x50, 0x00, 0xa4, 0x84, 0xa9, 0x41, + 0x78, 0x15, 0x50, 0x01, 0xa4, 0x84, 0xa9, 0x41, 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x00, 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02, 0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed, @@ -582,8 +582,8 @@ var altLangIndex = [6]uint16{ } // langAliasMap maps langIDs to their suggested replacements. -// Size: 644 bytes, 161 elements -var langAliasMap = [161]fromTo{ +// Size: 656 bytes, 164 elements +var langAliasMap = [164]fromTo{ 0: {from: 0x82, to: 0x88}, 1: {from: 0x185, to: 0x1ac}, 2: {from: 0x1f1, to: 0x1df}, @@ -659,142 +659,145 @@ var langAliasMap = [161]fromTo{ 72: {from: 0x1a87, to: 0x1f6}, 73: {from: 0x1b57, to: 0x1f8}, 74: {from: 0x1b83, to: 0x1512}, - 75: {from: 0x2035, to: 0x37ae}, - 76: {from: 0x203a, to: 0x20da}, - 77: {from: 0x2057, to: 0x309}, - 78: {from: 0x20e0, to: 0x272}, - 79: {from: 0x20eb, to: 0x261}, - 80: {from: 0x20ef, to: 0x22b}, - 81: {from: 0x20f6, to: 0x254}, - 82: {from: 0x210c, to: 0x21e8}, - 83: {from: 0x2132, to: 0x27b}, - 84: {from: 0x2196, to: 0x120}, - 85: {from: 0x21cb, to: 0x155e}, - 86: {from: 0x21e3, to: 0x502}, - 87: {from: 0x21f1, to: 0x49d}, - 88: {from: 0x222a, to: 0x120}, - 89: {from: 0x2234, to: 0x120}, - 90: {from: 0x225f, to: 0x927}, - 91: {from: 0x2313, to: 0x3223}, - 92: {from: 0x237f, to: 0x3362}, - 93: {from: 0x246f, to: 0x2c5}, - 94: {from: 0x24e1, to: 0x2fd}, - 95: {from: 0x24ed, to: 0x2f8}, - 96: {from: 0x24f7, to: 0x31d}, - 97: {from: 0x254d, to: 0xb58}, - 98: {from: 0x25a6, to: 0xe2}, - 99: {from: 0x263b, to: 0x2ce}, - 100: {from: 0x26c6, to: 0x26b1}, - 101: {from: 0x26f6, to: 0x3c6}, - 102: {from: 0x2724, to: 0x3cac}, - 103: {from: 0x2762, to: 0x26b1}, - 104: {from: 0x2786, to: 0x4355}, - 105: {from: 0x28ec, to: 0x2834}, - 106: {from: 0x2911, to: 0x34f}, - 107: {from: 0x2983, to: 0x2da4}, - 108: {from: 0x2b17, to: 0x38b}, - 109: {from: 0x2bf9, to: 0x393}, - 110: {from: 0x2c3c, to: 0x3cac}, - 111: {from: 0x2cf9, to: 0x3bc}, - 112: {from: 0x2d10, to: 0x594}, - 113: {from: 0x2d44, to: 0x147}, - 114: {from: 0x2d45, to: 0x147}, - 115: {from: 0x2dfc, to: 0x2ef}, - 116: {from: 0x2e05, to: 0x19c9}, - 117: {from: 0x2e17, to: 0x2d92}, - 118: {from: 0x2e1e, to: 0x290}, - 119: {from: 0x2e51, to: 0x7d}, - 120: {from: 0x2e62, to: 0x227f}, - 121: {from: 0x2e9d, to: 0x2e98}, - 122: {from: 0x2eec, to: 0x2ed4}, - 123: {from: 0x3190, to: 0x3c2}, - 124: {from: 0x3363, to: 0x338b}, - 125: {from: 0x3427, to: 0x3da}, - 126: {from: 0x34eb, to: 0x18cd}, - 127: {from: 0x35e3, to: 0x410}, - 128: {from: 0x3655, to: 0x244}, - 129: {from: 0x3673, to: 0x3f2}, - 130: {from: 0x36fa, to: 0x443}, - 131: {from: 0x37bd, to: 0x120}, - 132: {from: 0x3813, to: 0x38ef}, - 133: {from: 0x3828, to: 0x2c98}, - 134: {from: 0x382c, to: 0xa9}, - 135: {from: 0x382f, to: 0x3225}, - 136: {from: 0x3869, to: 0x39a3}, - 137: {from: 0x388f, to: 0x3fbd}, - 138: {from: 0x38a2, to: 0x39d4}, - 139: {from: 0x38b1, to: 0x1fa1}, - 140: {from: 0x38b2, to: 0x2e97}, - 141: {from: 0x3959, to: 0x47c}, - 142: {from: 0x3b4b, to: 0xd8e}, - 143: {from: 0x3b75, to: 0x136}, - 144: {from: 0x3c96, to: 0x4ba}, - 145: {from: 0x3fba, to: 0xff}, - 146: {from: 0x4205, to: 0xa8e}, - 147: {from: 0x42bb, to: 0x570}, - 148: {from: 0x42f6, to: 0x3f5d}, - 149: {from: 0x4375, to: 0x258}, - 150: {from: 0x43c8, to: 0x36c8}, - 151: {from: 0x43ca, to: 0x10e}, - 152: {from: 0x44ac, to: 0x331f}, - 153: {from: 0x44e0, to: 0x510}, - 154: {from: 0x45c7, to: 0x2406}, - 155: {from: 0x45da, to: 0x26d9}, - 156: {from: 0x460d, to: 0x48ab}, - 157: {from: 0x46ab, to: 0x469d}, - 158: {from: 0x473b, to: 0x4742}, - 159: {from: 0x4913, to: 0x31d}, - 160: {from: 0x49a4, to: 0x521}, + 75: {from: 0x1d61, to: 0x2c98}, + 76: {from: 0x2035, to: 0x37ae}, + 77: {from: 0x203a, to: 0x20da}, + 78: {from: 0x2057, to: 0x309}, + 79: {from: 0x20e0, to: 0x272}, + 80: {from: 0x20eb, to: 0x261}, + 81: {from: 0x20ef, to: 0x22b}, + 82: {from: 0x20f6, to: 0x254}, + 83: {from: 0x210c, to: 0x21e8}, + 84: {from: 0x2132, to: 0x27b}, + 85: {from: 0x215d, to: 0x910}, + 86: {from: 0x2196, to: 0x120}, + 87: {from: 0x21cb, to: 0x155e}, + 88: {from: 0x21e3, to: 0x502}, + 89: {from: 0x21f1, to: 0x49d}, + 90: {from: 0x222a, to: 0x120}, + 91: {from: 0x2234, to: 0x120}, + 92: {from: 0x225f, to: 0x927}, + 93: {from: 0x2313, to: 0x3223}, + 94: {from: 0x237f, to: 0x3362}, + 95: {from: 0x246f, to: 0x2c5}, + 96: {from: 0x24e1, to: 0x2fd}, + 97: {from: 0x24ed, to: 0x2f8}, + 98: {from: 0x24f7, to: 0x31d}, + 99: {from: 0x254d, to: 0xb58}, + 100: {from: 0x25a6, to: 0xe2}, + 101: {from: 0x263b, to: 0x2ce}, + 102: {from: 0x26c6, to: 0x26b1}, + 103: {from: 0x26f6, to: 0x3c6}, + 104: {from: 0x2724, to: 0x3cac}, + 105: {from: 0x2762, to: 0x26b1}, + 106: {from: 0x2786, to: 0x4355}, + 107: {from: 0x28ec, to: 0x2834}, + 108: {from: 0x2911, to: 0x34f}, + 109: {from: 0x2983, to: 0x2da4}, + 110: {from: 0x2b17, to: 0x38b}, + 111: {from: 0x2bf9, to: 0x393}, + 112: {from: 0x2c3c, to: 0x3cac}, + 113: {from: 0x2cf9, to: 0x3bc}, + 114: {from: 0x2d10, to: 0x594}, + 115: {from: 0x2d44, to: 0x147}, + 116: {from: 0x2d45, to: 0x147}, + 117: {from: 0x2dfc, to: 0x2ef}, + 118: {from: 0x2e05, to: 0x19c9}, + 119: {from: 0x2e17, to: 0x2d92}, + 120: {from: 0x2e1e, to: 0x290}, + 121: {from: 0x2e51, to: 0x7d}, + 122: {from: 0x2e62, to: 0x227f}, + 123: {from: 0x2e9d, to: 0x2e98}, + 124: {from: 0x2eec, to: 0x2ed4}, + 125: {from: 0x3190, to: 0x3c2}, + 126: {from: 0x3363, to: 0x338b}, + 127: {from: 0x3427, to: 0x3da}, + 128: {from: 0x34eb, to: 0x18cd}, + 129: {from: 0x35c5, to: 0x2c98}, + 130: {from: 0x35e3, to: 0x410}, + 131: {from: 0x3655, to: 0x244}, + 132: {from: 0x3673, to: 0x3f2}, + 133: {from: 0x36fa, to: 0x443}, + 134: {from: 0x37bd, to: 0x120}, + 135: {from: 0x3813, to: 0x38ef}, + 136: {from: 0x3828, to: 0x2c98}, + 137: {from: 0x382c, to: 0xa9}, + 138: {from: 0x382f, to: 0x3225}, + 139: {from: 0x3869, to: 0x39a3}, + 140: {from: 0x388f, to: 0x3fbd}, + 141: {from: 0x38a2, to: 0x39d4}, + 142: {from: 0x38b1, to: 0x1fa1}, + 143: {from: 0x38b2, to: 0x2e97}, + 144: {from: 0x3959, to: 0x47c}, + 145: {from: 0x3b4b, to: 0xd8e}, + 146: {from: 0x3b75, to: 0x136}, + 147: {from: 0x3c96, to: 0x4ba}, + 148: {from: 0x3fba, to: 0xff}, + 149: {from: 0x4205, to: 0xa8e}, + 150: {from: 0x42bb, to: 0x570}, + 151: {from: 0x42f6, to: 0x3f5d}, + 152: {from: 0x4375, to: 0x258}, + 153: {from: 0x43c8, to: 0x36c8}, + 154: {from: 0x43ca, to: 0x10e}, + 155: {from: 0x44ac, to: 0x331f}, + 156: {from: 0x44e0, to: 0x510}, + 157: {from: 0x45c7, to: 0x2406}, + 158: {from: 0x45da, to: 0x26d9}, + 159: {from: 0x460d, to: 0x48ab}, + 160: {from: 0x46ab, to: 0x469d}, + 161: {from: 0x473b, to: 0x4742}, + 162: {from: 0x4913, to: 0x31d}, + 163: {from: 0x49a4, to: 0x521}, } -// Size: 161 bytes, 161 elements -var langAliasTypes = [161]langAliasType{ +// Size: 164 bytes, 164 elements +var langAliasTypes = [164]langAliasType{ // Entry 0 - 3F 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2, 1, 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, // Entry 40 - 7F - 1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 1, 1, 1, - 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 2, - 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, - 0, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 2, + 1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, + 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, + 0, 1, 0, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, // Entry 80 - BF - 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, - 1, 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, - 1, + 0, 0, 2, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 1, 1, 1, } const ( - _Latn = 82 - _Hani = 50 - _Hans = 52 - _Hant = 53 - _Qaaa = 131 - _Qaai = 139 - _Qabx = 180 - _Zinh = 224 - _Zyyy = 229 - _Zzzz = 230 + _Latn = 85 + _Hani = 53 + _Hans = 55 + _Hant = 56 + _Qaaa = 136 + _Qaai = 144 + _Qabx = 185 + _Zinh = 231 + _Zyyy = 236 + _Zzzz = 237 ) // script is an alphabetically sorted list of ISO 15924 codes. The index // of the script in the string, divided by 4, is the internal scriptID. -const script tag.Index = "" + // Size: 928 bytes +const script tag.Index = "" + // Size: 956 bytes "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + - "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgyd" + - "EgyhEgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHanbHangHaniHanoHansHant" + - "HatrHebrHiraHluwHmngHrktHungIndsItalJamoJavaJpanJurcKaliKanaKharKhmrKhoj" + - "KitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepcLimbLinaLinbLisuLoma" + - "LyciLydiMahjMandManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymr" + - "NarbNbatNewaNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlp" + - "PhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" + - "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" + - "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" + - "QabxRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrc" + - "SyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirh" + - "UgarVaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff" + - "\xff" + "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDogrDsrtDupl" + + "EgydEgyhEgypElbaEthiGeokGeorGlagGongGonmGothGranGrekGujrGuruHanbHangHani" + + "HanoHansHantHatrHebrHiraHluwHmngHrktHungIndsItalJamoJavaJpanJurcKaliKana" + + "KharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepcLimbLina" + + "LinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedfMendMercMeroMlymModiMong" + + "MoonMrooMteiMultMymrNarbNbatNewaNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalm" + + "PaucPermPhagPhliPhlpPhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaaeQaafQaagQaah" + + "QaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaaz" + + "QabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabr" + + "QabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSiddSind" + + "SinhSoraSoyoSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTeng" + + "TfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWoleXpeoXsuxYiiiZanbZinhZmthZsye" + + "ZsymZxxxZyyyZzzz\xff\xff\xff\xff" // suppressScript is an index from langID to the dominant script for that language, // if it exists. If a script is given, it should be suppressed from the language tag. @@ -803,16 +806,16 @@ var suppressScript = [1327]uint8{ // Entry 0 - 3F 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 40 - 7F 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -825,56 +828,56 @@ var suppressScript = [1327]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry C0 - FF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, // Entry 100 - 13F - 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, - 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, + 0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, // Entry 140 - 17F - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 180 - 1BF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, - 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x55, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x37, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x00, 0x00, // Entry 1C0 - 1FF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x52, 0x00, 0x52, 0x52, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x55, 0x00, 0x55, 0x55, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, - 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, + 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, // Entry 200 - 23F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -882,9 +885,9 @@ var suppressScript = [1327]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 240 - 27F - 0x1e, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, - 0x00, 0x00, 0x4b, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, + 0x00, 0x00, 0x4e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -892,179 +895,179 @@ var suppressScript = [1327]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 280 - 2BF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x4f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, // Entry 2C0 - 2FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, // Entry 300 - 33F - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, // Entry 340 - 37F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x52, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x75, 0x55, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 380 - 3BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, - 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, + 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x52, 0x00, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x55, 0x00, // Entry 3C0 - 3FF - 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 400 - 43F - 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 440 - 47F - 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, + 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xd5, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xdb, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, // Entry 480 - 4BF - 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, // Entry 4C0 - 4FF - 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 500 - 53F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, } const ( _001 = 1 - _419 = 30 - _BR = 64 - _CA = 72 - _ES = 109 - _GB = 122 - _MD = 187 - _PT = 237 - _UK = 305 - _US = 308 - _ZZ = 356 - _XA = 322 - _XC = 324 - _XK = 332 + _419 = 31 + _BR = 65 + _CA = 73 + _ES = 110 + _GB = 123 + _MD = 188 + _PT = 238 + _UK = 306 + _US = 309 + _ZZ = 357 + _XA = 323 + _XC = 325 + _XK = 333 ) // isoRegionOffset needs to be added to the index of regionISO to obtain the regionID // for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for // the UN.M49 codes used for groups.) -const isoRegionOffset = 31 +const isoRegionOffset = 32 // regionTypes defines the status of a region for various standards. -// Size: 357 bytes, 357 elements -var regionTypes = [357]uint8{ +// Size: 358 bytes, 358 elements +var regionTypes = [358]uint8{ // Entry 0 - 3F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // Entry 40 - 7F - 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x04, 0x00, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, - 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x04, + 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, + 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // Entry 80 - BF 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // Entry C0 - FF - 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, - 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, 0x06, 0x06, - 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, - 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, // Entry 100 - 13F - 0x05, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x05, 0x05, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, // Entry 140 - 17F - 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, 0x06, 0x04, - 0x06, 0x06, 0x04, 0x06, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, 0x06, + 0x04, 0x06, 0x06, 0x04, 0x06, 0x05, } // regionISO holds a list of alphabetically sorted 2-letter ISO region codes. @@ -1102,89 +1105,89 @@ const altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN" // of the 3-letter ISO codes in altRegionISO3. // Size: 22 bytes, 11 elements var altRegionIDs = [11]uint16{ - 0x0056, 0x006f, 0x0087, 0x00a7, 0x00a9, 0x00ac, 0x00e9, 0x0104, - 0x0120, 0x015e, 0x00db, + 0x0057, 0x0070, 0x0088, 0x00a8, 0x00aa, 0x00ad, 0x00ea, 0x0105, + 0x0121, 0x015f, 0x00dc, } // Size: 80 bytes, 20 elements var regionOldMap = [20]fromTo{ - 0: {from: 0x43, to: 0xc3}, - 1: {from: 0x57, to: 0xa6}, - 2: {from: 0x5e, to: 0x5f}, - 3: {from: 0x65, to: 0x3a}, - 4: {from: 0x78, to: 0x77}, - 5: {from: 0x92, to: 0x36}, - 6: {from: 0xa2, to: 0x132}, - 7: {from: 0xc0, to: 0x132}, - 8: {from: 0xd6, to: 0x13e}, - 9: {from: 0xdb, to: 0x2a}, - 10: {from: 0xee, to: 0x132}, - 11: {from: 0xf1, to: 0xe1}, - 12: {from: 0xfb, to: 0x6f}, - 13: {from: 0x102, to: 0x163}, - 14: {from: 0x129, to: 0x125}, - 15: {from: 0x131, to: 0x7a}, - 16: {from: 0x139, to: 0x13d}, - 17: {from: 0x140, to: 0x132}, - 18: {from: 0x15c, to: 0x15d}, - 19: {from: 0x162, to: 0x4a}, + 0: {from: 0x44, to: 0xc4}, + 1: {from: 0x58, to: 0xa7}, + 2: {from: 0x5f, to: 0x60}, + 3: {from: 0x66, to: 0x3b}, + 4: {from: 0x79, to: 0x78}, + 5: {from: 0x93, to: 0x37}, + 6: {from: 0xa3, to: 0x133}, + 7: {from: 0xc1, to: 0x133}, + 8: {from: 0xd7, to: 0x13f}, + 9: {from: 0xdc, to: 0x2b}, + 10: {from: 0xef, to: 0x133}, + 11: {from: 0xf2, to: 0xe2}, + 12: {from: 0xfc, to: 0x70}, + 13: {from: 0x103, to: 0x164}, + 14: {from: 0x12a, to: 0x126}, + 15: {from: 0x132, to: 0x7b}, + 16: {from: 0x13a, to: 0x13e}, + 17: {from: 0x141, to: 0x133}, + 18: {from: 0x15d, to: 0x15e}, + 19: {from: 0x163, to: 0x4b}, } // m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are // codes indicating collections of regions. -// Size: 714 bytes, 357 elements -var m49 = [357]int16{ +// Size: 716 bytes, 358 elements +var m49 = [358]int16{ // Entry 0 - 3F 0, 1, 2, 3, 5, 9, 11, 13, 14, 15, 17, 18, 19, 21, 29, 30, 34, 35, 39, 53, 54, 57, 61, 142, - 143, 145, 150, 151, 154, 155, 419, 958, - 0, 20, 784, 4, 28, 660, 8, 51, - 530, 24, 10, 32, 16, 40, 36, 533, - 248, 31, 70, 52, 50, 56, 854, 100, - 48, 108, 204, 652, 60, 96, 68, 535, + 143, 145, 150, 151, 154, 155, 202, 419, + 958, 0, 20, 784, 4, 28, 660, 8, + 51, 530, 24, 10, 32, 16, 40, 36, + 533, 248, 31, 70, 52, 50, 56, 854, + 100, 48, 108, 204, 652, 60, 96, 68, // Entry 40 - 7F - 76, 44, 64, 104, 74, 72, 112, 84, - 124, 166, 180, 140, 178, 756, 384, 184, - 152, 120, 156, 170, 0, 188, 891, 296, - 192, 132, 531, 162, 196, 203, 278, 276, - 0, 262, 208, 212, 214, 204, 12, 0, - 218, 233, 818, 732, 232, 724, 231, 967, - 0, 246, 242, 238, 583, 234, 0, 250, - 249, 266, 826, 308, 268, 254, 831, 288, + 535, 76, 44, 64, 104, 74, 72, 112, + 84, 124, 166, 180, 140, 178, 756, 384, + 184, 152, 120, 156, 170, 0, 188, 891, + 296, 192, 132, 531, 162, 196, 203, 278, + 276, 0, 262, 208, 212, 214, 204, 12, + 0, 218, 233, 818, 732, 232, 724, 231, + 967, 0, 246, 242, 238, 583, 234, 0, + 250, 249, 266, 826, 308, 268, 254, 831, // Entry 80 - BF - 292, 304, 270, 324, 312, 226, 300, 239, - 320, 316, 624, 328, 344, 334, 340, 191, - 332, 348, 854, 0, 360, 372, 376, 833, - 356, 86, 368, 364, 352, 380, 832, 388, - 400, 392, 581, 404, 417, 116, 296, 174, - 659, 408, 410, 414, 136, 398, 418, 422, - 662, 438, 144, 430, 426, 440, 442, 428, - 434, 504, 492, 498, 499, 663, 450, 584, + 288, 292, 304, 270, 324, 312, 226, 300, + 239, 320, 316, 624, 328, 344, 334, 340, + 191, 332, 348, 854, 0, 360, 372, 376, + 833, 356, 86, 368, 364, 352, 380, 832, + 388, 400, 392, 581, 404, 417, 116, 296, + 174, 659, 408, 410, 414, 136, 398, 418, + 422, 662, 438, 144, 430, 426, 440, 442, + 428, 434, 504, 492, 498, 499, 663, 450, // Entry C0 - FF - 581, 807, 466, 104, 496, 446, 580, 474, - 478, 500, 470, 480, 462, 454, 484, 458, - 508, 516, 540, 562, 574, 566, 548, 558, - 528, 578, 524, 10, 520, 536, 570, 554, - 512, 591, 0, 604, 258, 598, 608, 586, - 616, 666, 612, 630, 275, 620, 581, 585, - 600, 591, 634, 959, 960, 961, 962, 963, - 964, 965, 966, 967, 968, 969, 970, 971, + 584, 581, 807, 466, 104, 496, 446, 580, + 474, 478, 500, 470, 480, 462, 454, 484, + 458, 508, 516, 540, 562, 574, 566, 548, + 558, 528, 578, 524, 10, 520, 536, 570, + 554, 512, 591, 0, 604, 258, 598, 608, + 586, 616, 666, 612, 630, 275, 620, 581, + 585, 600, 591, 634, 959, 960, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, // Entry 100 - 13F - 972, 638, 716, 642, 688, 643, 646, 682, - 90, 690, 729, 752, 702, 654, 705, 744, - 703, 694, 674, 686, 706, 740, 728, 678, - 810, 222, 534, 760, 748, 0, 796, 148, - 260, 768, 764, 762, 772, 626, 795, 788, - 776, 626, 792, 780, 798, 158, 834, 804, - 800, 826, 581, 0, 840, 858, 860, 336, - 670, 704, 862, 92, 850, 704, 548, 876, + 971, 972, 638, 716, 642, 688, 643, 646, + 682, 90, 690, 729, 752, 702, 654, 705, + 744, 703, 694, 674, 686, 706, 740, 728, + 678, 810, 222, 534, 760, 748, 0, 796, + 148, 260, 768, 764, 762, 772, 626, 795, + 788, 776, 626, 792, 780, 798, 158, 834, + 804, 800, 826, 581, 0, 840, 858, 860, + 336, 670, 704, 862, 92, 850, 704, 548, // Entry 140 - 17F - 581, 882, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, - 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 720, 887, 175, 891, - 710, 894, 180, 716, 999, + 876, 581, 882, 973, 974, 975, 976, 977, + 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 720, 887, 175, + 891, 710, 894, 180, 716, 999, } // m49Index gives indexes into fromM49 based on the three most significant bits @@ -1194,149 +1197,157 @@ var m49 = [357]int16{ // The region code is stored in the 9 lsb of the indexed value. // Size: 18 bytes, 9 elements var m49Index = [9]int16{ - 0, 59, 107, 142, 180, 219, 258, 290, - 332, + 0, 59, 108, 143, 181, 220, 259, 291, + 333, } // fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details. -// Size: 664 bytes, 332 elements -var fromM49 = [332]uint16{ +// Size: 666 bytes, 333 elements +var fromM49 = [333]uint16{ // Entry 0 - 3F - 0x0201, 0x0402, 0x0603, 0x0823, 0x0a04, 0x1026, 0x1205, 0x142a, - 0x1606, 0x1866, 0x1a07, 0x1c08, 0x1e09, 0x202c, 0x220a, 0x240b, - 0x260c, 0x2821, 0x2a0d, 0x3029, 0x3824, 0x3a0e, 0x3c0f, 0x3e31, - 0x402b, 0x4410, 0x4611, 0x482e, 0x4e12, 0x502d, 0x5841, 0x6038, - 0x6434, 0x6627, 0x6833, 0x6a13, 0x6c14, 0x7035, 0x7215, 0x783c, - 0x7a16, 0x8042, 0x883e, 0x8c32, 0x9045, 0x9444, 0x9840, 0xa847, - 0xac99, 0xb508, 0xb93b, 0xc03d, 0xc837, 0xd0c3, 0xd839, 0xe046, - 0xe8a5, 0xf051, 0xf848, 0x0859, 0x10ac, 0x184b, 0x1c17, 0x1e18, + 0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b, + 0x1606, 0x1867, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b, + 0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32, + 0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039, + 0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d, + 0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848, + 0xac9a, 0xb509, 0xb93c, 0xc03e, 0xc838, 0xd0c4, 0xd83a, 0xe047, + 0xe8a6, 0xf052, 0xf849, 0x085a, 0x10ad, 0x184c, 0x1c17, 0x1e18, // Entry 40 - 7F - 0x20b2, 0x2219, 0x291f, 0x2c1a, 0x2e1b, 0x3050, 0x341c, 0x361d, - 0x3852, 0x3d2d, 0x445b, 0x4c49, 0x5453, 0x5ca7, 0x5f5e, 0x644c, - 0x684a, 0x704f, 0x7855, 0x7e8f, 0x8058, 0x885c, 0x965d, 0x983a, - 0xa062, 0xa863, 0xac64, 0xb468, 0xbd19, 0xc485, 0xcc6e, 0xce6e, - 0xd06c, 0xd269, 0xd475, 0xdc73, 0xde87, 0xe472, 0xec71, 0xf030, - 0xf278, 0xf477, 0xfc7d, 0x04e4, 0x0920, 0x0c61, 0x1479, 0x187c, - 0x1c82, 0x26ec, 0x285f, 0x2c5e, 0x305f, 0x407f, 0x4880, 0x50a6, - 0x5886, 0x6081, 0x687b, 0x7084, 0x7889, 0x8088, 0x8883, 0x908b, + 0x20b3, 0x2219, 0x2920, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d, + 0x3853, 0x3d2e, 0x445c, 0x4c4a, 0x5454, 0x5ca8, 0x5f5f, 0x644d, + 0x684b, 0x7050, 0x7856, 0x7e90, 0x8059, 0x885d, 0x941e, 0x965e, + 0x983b, 0xa063, 0xa864, 0xac65, 0xb469, 0xbd1a, 0xc486, 0xcc6f, + 0xce6f, 0xd06d, 0xd26a, 0xd476, 0xdc74, 0xde88, 0xe473, 0xec72, + 0xf031, 0xf279, 0xf478, 0xfc7e, 0x04e5, 0x0921, 0x0c62, 0x147a, + 0x187d, 0x1c83, 0x26ed, 0x2860, 0x2c5f, 0x3060, 0x4080, 0x4881, + 0x50a7, 0x5887, 0x6082, 0x687c, 0x7085, 0x788a, 0x8089, 0x8884, // Entry 80 - BF - 0x9890, 0x9c8d, 0xa137, 0xa88e, 0xb08c, 0xb891, 0xc09c, 0xc898, - 0xd094, 0xd89b, 0xe09a, 0xe895, 0xf096, 0xf89d, 0x004e, 0x089f, - 0x10a1, 0x1cad, 0x20a0, 0x28a3, 0x30a9, 0x34aa, 0x3cab, 0x42a4, - 0x44ae, 0x461e, 0x4caf, 0x54b4, 0x58b7, 0x5cb3, 0x64b8, 0x6cb1, - 0x70b5, 0x74b6, 0x7cc5, 0x84be, 0x8ccd, 0x94cf, 0x9ccc, 0xa4c2, - 0xacca, 0xb4c7, 0xbcc8, 0xc0cb, 0xc8ce, 0xd8ba, 0xe0c4, 0xe4bb, - 0xe6bc, 0xe8c9, 0xf0b9, 0xf8d0, 0x00e0, 0x08d1, 0x10dc, 0x18da, - 0x20d8, 0x2428, 0x265a, 0x2a2f, 0x2d1a, 0x2e3f, 0x30dd, 0x38d2, + 0x908c, 0x9891, 0x9c8e, 0xa138, 0xa88f, 0xb08d, 0xb892, 0xc09d, + 0xc899, 0xd095, 0xd89c, 0xe09b, 0xe896, 0xf097, 0xf89e, 0x004f, + 0x08a0, 0x10a2, 0x1cae, 0x20a1, 0x28a4, 0x30aa, 0x34ab, 0x3cac, + 0x42a5, 0x44af, 0x461f, 0x4cb0, 0x54b5, 0x58b8, 0x5cb4, 0x64b9, + 0x6cb2, 0x70b6, 0x74b7, 0x7cc6, 0x84bf, 0x8cce, 0x94d0, 0x9ccd, + 0xa4c3, 0xaccb, 0xb4c8, 0xbcc9, 0xc0cc, 0xc8cf, 0xd8bb, 0xe0c5, + 0xe4bc, 0xe6bd, 0xe8ca, 0xf0ba, 0xf8d1, 0x00e1, 0x08d2, 0x10dd, + 0x18db, 0x20d9, 0x2429, 0x265b, 0x2a30, 0x2d1b, 0x2e40, 0x30de, // Entry C0 - FF - 0x493e, 0x54df, 0x5cd7, 0x64d3, 0x6cd5, 0x74de, 0x7cd4, 0x84d9, - 0x88c6, 0x8b32, 0x8e74, 0x90bf, 0x92ef, 0x94e7, 0x9ee1, 0xace5, - 0xb0f0, 0xb8e3, 0xc0e6, 0xc8ea, 0xd0e8, 0xd8ed, 0xe08a, 0xe525, - 0xeceb, 0xf4f2, 0xfd01, 0x0503, 0x0705, 0x0d06, 0x183b, 0x1d0d, - 0x26a8, 0x2825, 0x2cb0, 0x2ebd, 0x34e9, 0x3d38, 0x4512, 0x4d17, - 0x5507, 0x5d13, 0x6104, 0x6509, 0x6d11, 0x7d0c, 0x7f10, 0x813d, - 0x830e, 0x8514, 0x8d60, 0x9963, 0xa15c, 0xa86d, 0xb116, 0xb30a, - 0xb86b, 0xc10a, 0xc915, 0xd10f, 0xd91c, 0xe10b, 0xe84d, 0xf11b, + 0x38d3, 0x493f, 0x54e0, 0x5cd8, 0x64d4, 0x6cd6, 0x74df, 0x7cd5, + 0x84da, 0x88c7, 0x8b33, 0x8e75, 0x90c0, 0x92f0, 0x94e8, 0x9ee2, + 0xace6, 0xb0f1, 0xb8e4, 0xc0e7, 0xc8eb, 0xd0e9, 0xd8ee, 0xe08b, + 0xe526, 0xecec, 0xf4f3, 0xfd02, 0x0504, 0x0706, 0x0d07, 0x183c, + 0x1d0e, 0x26a9, 0x2826, 0x2cb1, 0x2ebe, 0x34ea, 0x3d39, 0x4513, + 0x4d18, 0x5508, 0x5d14, 0x6105, 0x650a, 0x6d12, 0x7d0d, 0x7f11, + 0x813e, 0x830f, 0x8515, 0x8d61, 0x9964, 0xa15d, 0xa86e, 0xb117, + 0xb30b, 0xb86c, 0xc10b, 0xc916, 0xd110, 0xd91d, 0xe10c, 0xe84e, // Entry 100 - 13F - 0xf523, 0xf922, 0x0121, 0x0924, 0x1128, 0x192b, 0x2022, 0x2927, - 0x312a, 0x3726, 0x391e, 0x3d2c, 0x4130, 0x492f, 0x4ec1, 0x5518, - 0x646a, 0x747a, 0x7e7e, 0x809e, 0x8297, 0x852e, 0x9134, 0xa53c, - 0xac36, 0xb535, 0xb936, 0xbd3a, 0xd93f, 0xe541, 0xed5d, 0xef5d, - 0xf656, 0xfd61, 0x7c1f, 0x7ef3, 0x80f4, 0x82f5, 0x84f6, 0x86f7, - 0x88f8, 0x8af9, 0x8cfa, 0x8e6f, 0x90fc, 0x92fd, 0x94fe, 0x96ff, - 0x9900, 0x9b42, 0x9d43, 0x9f44, 0xa145, 0xa346, 0xa547, 0xa748, - 0xa949, 0xab4a, 0xad4b, 0xaf4c, 0xb14d, 0xb34e, 0xb54f, 0xb750, + 0xf11c, 0xf524, 0xf923, 0x0122, 0x0925, 0x1129, 0x192c, 0x2023, + 0x2928, 0x312b, 0x3727, 0x391f, 0x3d2d, 0x4131, 0x4930, 0x4ec2, + 0x5519, 0x646b, 0x747b, 0x7e7f, 0x809f, 0x8298, 0x852f, 0x9135, + 0xa53d, 0xac37, 0xb536, 0xb937, 0xbd3b, 0xd940, 0xe542, 0xed5e, + 0xef5e, 0xf657, 0xfd62, 0x7c20, 0x7ef4, 0x80f5, 0x82f6, 0x84f7, + 0x86f8, 0x88f9, 0x8afa, 0x8cfb, 0x8e70, 0x90fd, 0x92fe, 0x94ff, + 0x9700, 0x9901, 0x9b43, 0x9d44, 0x9f45, 0xa146, 0xa347, 0xa548, + 0xa749, 0xa94a, 0xab4b, 0xad4c, 0xaf4d, 0xb14e, 0xb34f, 0xb550, // Entry 140 - 17F - 0xb951, 0xbb52, 0xbd53, 0xbf54, 0xc155, 0xc356, 0xc557, 0xc758, - 0xc959, 0xcb5a, 0xcd5b, 0xcf64, + 0xb751, 0xb952, 0xbb53, 0xbd54, 0xbf55, 0xc156, 0xc357, 0xc558, + 0xc759, 0xc95a, 0xcb5b, 0xcd5c, 0xcf65, } -// Size: 1463 bytes +// Size: 1615 bytes var variantIndex = map[string]uint8{ "1606nict": 0x0, "1694acad": 0x1, "1901": 0x2, "1959acad": 0x3, - "1994": 0x45, + "1994": 0x4d, "1996": 0x4, "abl1943": 0x5, - "alalc97": 0x47, - "aluku": 0x6, - "ao1990": 0x7, - "arevela": 0x8, - "arevmda": 0x9, - "baku1926": 0xa, - "balanka": 0xb, - "barla": 0xc, - "basiceng": 0xd, - "bauddha": 0xe, - "biscayan": 0xf, - "biske": 0x40, - "bohoric": 0x10, - "boont": 0x11, - "colb1945": 0x12, - "cornu": 0x13, - "dajnko": 0x14, - "ekavsk": 0x15, - "emodeng": 0x16, - "fonipa": 0x48, - "fonnapa": 0x49, - "fonupa": 0x4a, - "fonxsamp": 0x4b, - "hepburn": 0x17, - "heploc": 0x46, - "hognorsk": 0x18, - "ijekavsk": 0x19, - "itihasa": 0x1a, - "jauer": 0x1b, - "jyutping": 0x1c, - "kkcor": 0x1d, - "kociewie": 0x1e, - "kscor": 0x1f, - "laukika": 0x20, - "lipaw": 0x41, - "luna1918": 0x21, - "metelko": 0x22, - "monoton": 0x23, - "ndyuka": 0x24, - "nedis": 0x25, - "newfound": 0x26, - "njiva": 0x42, - "nulik": 0x27, - "osojs": 0x43, - "oxendict": 0x28, - "pamaka": 0x29, - "petr1708": 0x2a, - "pinyin": 0x2b, - "polyton": 0x2c, - "puter": 0x2d, - "rigik": 0x2e, - "rozaj": 0x2f, - "rumgr": 0x30, - "scotland": 0x31, - "scouse": 0x32, - "simple": 0x4c, - "solba": 0x44, - "sotav": 0x33, - "surmiran": 0x34, - "sursilv": 0x35, - "sutsilv": 0x36, - "tarask": 0x37, - "uccor": 0x38, - "ucrcor": 0x39, - "ulster": 0x3a, - "unifon": 0x3b, - "vaidika": 0x3c, - "valencia": 0x3d, - "vallader": 0x3e, - "wadegile": 0x3f, + "akuapem": 0x6, + "alalc97": 0x4f, + "aluku": 0x7, + "ao1990": 0x8, + "arevela": 0x9, + "arevmda": 0xa, + "asante": 0xb, + "baku1926": 0xc, + "balanka": 0xd, + "barla": 0xe, + "basiceng": 0xf, + "bauddha": 0x10, + "biscayan": 0x11, + "biske": 0x48, + "bohoric": 0x12, + "boont": 0x13, + "colb1945": 0x14, + "cornu": 0x15, + "dajnko": 0x16, + "ekavsk": 0x17, + "emodeng": 0x18, + "fonipa": 0x50, + "fonnapa": 0x51, + "fonupa": 0x52, + "fonxsamp": 0x53, + "hepburn": 0x19, + "heploc": 0x4e, + "hognorsk": 0x1a, + "hsistemo": 0x1b, + "ijekavsk": 0x1c, + "itihasa": 0x1d, + "jauer": 0x1e, + "jyutping": 0x1f, + "kkcor": 0x20, + "kociewie": 0x21, + "kscor": 0x22, + "laukika": 0x23, + "lipaw": 0x49, + "luna1918": 0x24, + "metelko": 0x25, + "monoton": 0x26, + "ndyuka": 0x27, + "nedis": 0x28, + "newfound": 0x29, + "njiva": 0x4a, + "nulik": 0x2a, + "osojs": 0x4b, + "oxendict": 0x2b, + "pahawh2": 0x2c, + "pahawh3": 0x2d, + "pahawh4": 0x2e, + "pamaka": 0x2f, + "petr1708": 0x30, + "pinyin": 0x31, + "polyton": 0x32, + "puter": 0x33, + "rigik": 0x34, + "rozaj": 0x35, + "rumgr": 0x36, + "scotland": 0x37, + "scouse": 0x38, + "simple": 0x54, + "solba": 0x4c, + "sotav": 0x39, + "spanglis": 0x3a, + "surmiran": 0x3b, + "sursilv": 0x3c, + "sutsilv": 0x3d, + "tarask": 0x3e, + "uccor": 0x3f, + "ucrcor": 0x40, + "ulster": 0x41, + "unifon": 0x42, + "vaidika": 0x43, + "valencia": 0x44, + "vallader": 0x45, + "wadegile": 0x46, + "xsistemo": 0x47, } // variantNumSpecialized is the number of specialized variants in variants. -const variantNumSpecialized = 71 +const variantNumSpecialized = 79 // nRegionGroups is the number of region groups. -const nRegionGroups = 32 +const nRegionGroups = 33 type likelyLangRegion struct { lang uint16 @@ -1345,147 +1356,147 @@ type likelyLangRegion struct { // likelyScript is a lookup table, indexed by scriptID, for the most likely // languages and regions given a script. -// Size: 928 bytes, 232 elements -var likelyScript = [232]likelyLangRegion{ - 1: {lang: 0x14d, region: 0x83}, - 3: {lang: 0x2a0, region: 0x105}, - 4: {lang: 0x1f, region: 0x98}, - 5: {lang: 0x3a, region: 0x6a}, - 7: {lang: 0x3b, region: 0x9b}, - 8: {lang: 0x1d5, region: 0x27}, - 9: {lang: 0x13, region: 0x9b}, - 10: {lang: 0x5b, region: 0x94}, - 11: {lang: 0x60, region: 0x51}, - 12: {lang: 0xb9, region: 0xb3}, - 13: {lang: 0x63, region: 0x94}, - 14: {lang: 0xa5, region: 0x34}, - 15: {lang: 0x3e7, region: 0x98}, - 17: {lang: 0x527, region: 0x12d}, - 18: {lang: 0x3af, region: 0x98}, - 19: {lang: 0x15d, region: 0x77}, - 20: {lang: 0xc2, region: 0x94}, - 21: {lang: 0x9d, region: 0xe6}, - 22: {lang: 0xdb, region: 0x34}, - 23: {lang: 0xf2, region: 0x48}, - 24: {lang: 0x4ee, region: 0x12a}, - 25: {lang: 0xe7, region: 0x13d}, - 26: {lang: 0xe5, region: 0x134}, - 28: {lang: 0xf0, region: 0x6a}, - 29: {lang: 0x19e, region: 0x5c}, - 30: {lang: 0x3e0, region: 0x105}, - 32: {lang: 0x1bc, region: 0x98}, - 34: {lang: 0x15d, region: 0x77}, - 37: {lang: 0x132, region: 0x6a}, - 38: {lang: 0x42f, region: 0x26}, - 39: {lang: 0x27, region: 0x6e}, - 41: {lang: 0x20e, region: 0x7c}, - 42: {lang: 0xfd, region: 0x37}, - 43: {lang: 0x19c, region: 0x12f}, - 44: {lang: 0x3e7, region: 0x98}, - 45: {lang: 0x135, region: 0x86}, - 46: {lang: 0x1a2, region: 0x98}, - 47: {lang: 0x39b, region: 0x98}, - 48: {lang: 0x527, region: 0x12d}, - 49: {lang: 0x252, region: 0xaa}, - 50: {lang: 0x527, region: 0x52}, - 51: {lang: 0x1c9, region: 0xe6}, - 52: {lang: 0x527, region: 0x52}, - 53: {lang: 0x527, region: 0x12d}, - 54: {lang: 0x2fb, region: 0x9a}, - 55: {lang: 0x1ba, region: 0x96}, - 56: {lang: 0x1fe, region: 0xa1}, - 57: {lang: 0x1c3, region: 0x12a}, - 58: {lang: 0x1c8, region: 0xae}, - 60: {lang: 0x1d3, region: 0x91}, - 62: {lang: 0x141, region: 0x9d}, - 63: {lang: 0x252, region: 0xaa}, - 64: {lang: 0x20c, region: 0x94}, - 65: {lang: 0x1fe, region: 0xa1}, - 67: {lang: 0x134, region: 0xc3}, - 68: {lang: 0x1fe, region: 0xa1}, - 69: {lang: 0x3b9, region: 0xe7}, - 70: {lang: 0x248, region: 0xa5}, - 71: {lang: 0x3f8, region: 0x98}, - 74: {lang: 0x24f, region: 0x98}, - 75: {lang: 0x252, region: 0xaa}, - 77: {lang: 0x88, region: 0x98}, - 78: {lang: 0x36e, region: 0x122}, - 79: {lang: 0x2b6, region: 0xae}, - 84: {lang: 0x29d, region: 0x98}, - 85: {lang: 0x2a6, region: 0x98}, - 86: {lang: 0x28d, region: 0x86}, - 87: {lang: 0x19e, region: 0x86}, - 88: {lang: 0x2aa, region: 0x52}, - 90: {lang: 0x4f2, region: 0x12a}, - 91: {lang: 0x4f3, region: 0x12a}, - 92: {lang: 0x1bc, region: 0x98}, - 93: {lang: 0x335, region: 0x9b}, - 94: {lang: 0x4f5, region: 0x52}, - 95: {lang: 0xa9, region: 0x52}, - 97: {lang: 0x2e6, region: 0x111}, - 98: {lang: 0x4f6, region: 0x10a}, - 99: {lang: 0x4f6, region: 0x10a}, - 100: {lang: 0x302, region: 0x98}, - 101: {lang: 0x319, region: 0x98}, - 102: {lang: 0x309, region: 0x52}, - 104: {lang: 0x31c, region: 0x34}, - 105: {lang: 0x30c, region: 0x98}, - 106: {lang: 0x412, region: 0xe7}, - 107: {lang: 0x32f, region: 0xc3}, - 108: {lang: 0x4f7, region: 0x107}, - 109: {lang: 0x3b, region: 0xa0}, - 110: {lang: 0x351, region: 0xda}, - 112: {lang: 0x2ce, region: 0x83}, - 114: {lang: 0x401, region: 0x95}, - 115: {lang: 0x3ec, region: 0x98}, - 116: {lang: 0x399, region: 0xc4}, - 117: {lang: 0x393, region: 0x98}, - 118: {lang: 0x397, region: 0x134}, - 119: {lang: 0x427, region: 0x114}, - 120: {lang: 0x3b, region: 0x11b}, - 121: {lang: 0xfc, region: 0xc3}, - 122: {lang: 0x27b, region: 0x105}, - 123: {lang: 0x2c7, region: 0x52}, - 124: {lang: 0x39d, region: 0x9b}, - 125: {lang: 0x39d, region: 0x52}, - 127: {lang: 0x3ab, region: 0xaf}, - 129: {lang: 0x1c4, region: 0x52}, - 130: {lang: 0x4fb, region: 0x9b}, - 181: {lang: 0x3c9, region: 0x94}, - 183: {lang: 0x370, region: 0x10b}, - 184: {lang: 0x41e, region: 0x96}, - 186: {lang: 0x4fd, region: 0x15d}, - 187: {lang: 0x3ee, region: 0x98}, - 188: {lang: 0x45, region: 0x134}, - 189: {lang: 0x138, region: 0x7a}, - 190: {lang: 0x3e7, region: 0x98}, - 191: {lang: 0x3e7, region: 0x98}, - 192: {lang: 0x3f8, region: 0x98}, - 193: {lang: 0x40a, region: 0xb2}, - 194: {lang: 0x431, region: 0x98}, - 195: {lang: 0x43c, region: 0x94}, - 196: {lang: 0x44b, region: 0x34}, - 197: {lang: 0x44c, region: 0x9a}, - 201: {lang: 0x458, region: 0xe6}, - 202: {lang: 0x119, region: 0x98}, - 203: {lang: 0x45c, region: 0x52}, - 204: {lang: 0x230, region: 0x52}, - 205: {lang: 0x44e, region: 0x98}, - 206: {lang: 0x4a3, region: 0x52}, - 207: {lang: 0x9f, region: 0x13d}, - 208: {lang: 0x45f, region: 0x98}, - 210: {lang: 0x526, region: 0xb9}, - 211: {lang: 0x152, region: 0xe6}, - 212: {lang: 0x127, region: 0xcc}, - 213: {lang: 0x469, region: 0x122}, - 214: {lang: 0xa9, region: 0x52}, - 215: {lang: 0x2cc, region: 0x98}, - 216: {lang: 0x4ab, region: 0x11b}, - 217: {lang: 0x4bc, region: 0xb3}, - 219: {lang: 0x1cc, region: 0x98}, - 221: {lang: 0x3a7, region: 0x9b}, - 222: {lang: 0x22, region: 0x9a}, - 223: {lang: 0x1e8, region: 0x52}, +// Size: 956 bytes, 239 elements +var likelyScript = [239]likelyLangRegion{ + 1: {lang: 0x14d, region: 0x84}, + 3: {lang: 0x2a0, region: 0x106}, + 4: {lang: 0x1f, region: 0x99}, + 5: {lang: 0x3a, region: 0x6b}, + 7: {lang: 0x3b, region: 0x9c}, + 8: {lang: 0x1d5, region: 0x28}, + 9: {lang: 0x13, region: 0x9c}, + 10: {lang: 0x5b, region: 0x95}, + 11: {lang: 0x60, region: 0x52}, + 12: {lang: 0xb9, region: 0xb4}, + 13: {lang: 0x63, region: 0x95}, + 14: {lang: 0xa5, region: 0x35}, + 15: {lang: 0x3e7, region: 0x99}, + 17: {lang: 0x527, region: 0x12e}, + 18: {lang: 0x3af, region: 0x99}, + 19: {lang: 0x15d, region: 0x78}, + 20: {lang: 0xc2, region: 0x95}, + 21: {lang: 0x9d, region: 0xe7}, + 22: {lang: 0xdb, region: 0x35}, + 23: {lang: 0xf2, region: 0x49}, + 24: {lang: 0x4ee, region: 0x12b}, + 25: {lang: 0xe7, region: 0x13e}, + 26: {lang: 0xe5, region: 0x135}, + 28: {lang: 0xf0, region: 0x6b}, + 29: {lang: 0x19e, region: 0x5d}, + 30: {lang: 0x3e0, region: 0x106}, + 32: {lang: 0x1bc, region: 0x99}, + 35: {lang: 0x15d, region: 0x78}, + 38: {lang: 0x132, region: 0x6b}, + 39: {lang: 0x42f, region: 0x27}, + 40: {lang: 0x27, region: 0x6f}, + 42: {lang: 0x20e, region: 0x7d}, + 43: {lang: 0xfd, region: 0x38}, + 46: {lang: 0x19c, region: 0x130}, + 47: {lang: 0x3e7, region: 0x99}, + 48: {lang: 0x135, region: 0x87}, + 49: {lang: 0x1a2, region: 0x99}, + 50: {lang: 0x39b, region: 0x99}, + 51: {lang: 0x527, region: 0x12e}, + 52: {lang: 0x252, region: 0xab}, + 53: {lang: 0x527, region: 0x53}, + 54: {lang: 0x1c9, region: 0xe7}, + 55: {lang: 0x527, region: 0x53}, + 56: {lang: 0x527, region: 0x12e}, + 57: {lang: 0x2fb, region: 0x9b}, + 58: {lang: 0x1ba, region: 0x97}, + 59: {lang: 0x1fe, region: 0xa2}, + 60: {lang: 0x1c3, region: 0x12b}, + 61: {lang: 0x1c8, region: 0xaf}, + 63: {lang: 0x1d3, region: 0x92}, + 65: {lang: 0x141, region: 0x9e}, + 66: {lang: 0x252, region: 0xab}, + 67: {lang: 0x20c, region: 0x95}, + 68: {lang: 0x1fe, region: 0xa2}, + 70: {lang: 0x134, region: 0xc4}, + 71: {lang: 0x1fe, region: 0xa2}, + 72: {lang: 0x3b9, region: 0xe8}, + 73: {lang: 0x248, region: 0xa6}, + 74: {lang: 0x3f8, region: 0x99}, + 77: {lang: 0x24f, region: 0x99}, + 78: {lang: 0x252, region: 0xab}, + 80: {lang: 0x88, region: 0x99}, + 81: {lang: 0x36e, region: 0x123}, + 82: {lang: 0x2b6, region: 0xaf}, + 87: {lang: 0x29d, region: 0x99}, + 88: {lang: 0x2a6, region: 0x99}, + 89: {lang: 0x28d, region: 0x87}, + 90: {lang: 0x19e, region: 0x87}, + 91: {lang: 0x2aa, region: 0x53}, + 93: {lang: 0x4f2, region: 0x12b}, + 94: {lang: 0x4f3, region: 0x12b}, + 95: {lang: 0x1bc, region: 0x99}, + 97: {lang: 0x335, region: 0x9c}, + 98: {lang: 0x4f5, region: 0x53}, + 99: {lang: 0xa9, region: 0x53}, + 102: {lang: 0x2e6, region: 0x112}, + 103: {lang: 0x4f6, region: 0x10b}, + 104: {lang: 0x4f6, region: 0x10b}, + 105: {lang: 0x302, region: 0x99}, + 106: {lang: 0x319, region: 0x99}, + 107: {lang: 0x309, region: 0x53}, + 109: {lang: 0x31c, region: 0x35}, + 110: {lang: 0x30c, region: 0x99}, + 111: {lang: 0x412, region: 0xe8}, + 112: {lang: 0x32f, region: 0xc4}, + 113: {lang: 0x4f7, region: 0x108}, + 114: {lang: 0x3b, region: 0xa1}, + 115: {lang: 0x351, region: 0xdb}, + 117: {lang: 0x2ce, region: 0x84}, + 119: {lang: 0x401, region: 0x96}, + 120: {lang: 0x3ec, region: 0x99}, + 121: {lang: 0x399, region: 0xc5}, + 122: {lang: 0x393, region: 0x99}, + 123: {lang: 0x397, region: 0x135}, + 124: {lang: 0x427, region: 0x115}, + 125: {lang: 0x3b, region: 0x11c}, + 126: {lang: 0xfc, region: 0xc4}, + 127: {lang: 0x27b, region: 0x106}, + 128: {lang: 0x2c7, region: 0x53}, + 129: {lang: 0x39d, region: 0x9c}, + 130: {lang: 0x39d, region: 0x53}, + 132: {lang: 0x3ab, region: 0xb0}, + 134: {lang: 0x1c4, region: 0x53}, + 135: {lang: 0x4fb, region: 0x9c}, + 186: {lang: 0x3c9, region: 0x95}, + 188: {lang: 0x370, region: 0x10c}, + 189: {lang: 0x41e, region: 0x97}, + 191: {lang: 0x4fd, region: 0x15e}, + 192: {lang: 0x3ee, region: 0x99}, + 193: {lang: 0x45, region: 0x135}, + 194: {lang: 0x138, region: 0x7b}, + 195: {lang: 0x3e7, region: 0x99}, + 196: {lang: 0x3e7, region: 0x99}, + 197: {lang: 0x3f8, region: 0x99}, + 198: {lang: 0x40a, region: 0xb3}, + 199: {lang: 0x431, region: 0x99}, + 201: {lang: 0x43c, region: 0x95}, + 202: {lang: 0x44b, region: 0x35}, + 203: {lang: 0x44c, region: 0x9b}, + 207: {lang: 0x458, region: 0xe7}, + 208: {lang: 0x119, region: 0x99}, + 209: {lang: 0x45c, region: 0x53}, + 210: {lang: 0x230, region: 0x53}, + 211: {lang: 0x44e, region: 0x99}, + 212: {lang: 0x4a3, region: 0x53}, + 213: {lang: 0x9f, region: 0x13e}, + 214: {lang: 0x45f, region: 0x99}, + 216: {lang: 0x526, region: 0xba}, + 217: {lang: 0x152, region: 0xe7}, + 218: {lang: 0x127, region: 0xcd}, + 219: {lang: 0x469, region: 0x123}, + 220: {lang: 0xa9, region: 0x53}, + 221: {lang: 0x2cc, region: 0x99}, + 222: {lang: 0x4ab, region: 0x11c}, + 223: {lang: 0x4bc, region: 0xb4}, + 225: {lang: 0x1cc, region: 0x99}, + 227: {lang: 0x3a7, region: 0x9c}, + 228: {lang: 0x22, region: 0x9b}, + 229: {lang: 0x1e8, region: 0x53}, } type likelyScriptRegion struct { @@ -1500,1417 +1511,1417 @@ type likelyScriptRegion struct { // of the list in likelyLangList. // Size: 5308 bytes, 1327 elements var likelyLang = [1327]likelyScriptRegion{ - 0: {region: 0x134, script: 0x52, flags: 0x0}, - 1: {region: 0x6e, script: 0x52, flags: 0x0}, - 2: {region: 0x164, script: 0x52, flags: 0x0}, - 3: {region: 0x164, script: 0x52, flags: 0x0}, - 4: {region: 0x164, script: 0x52, flags: 0x0}, - 5: {region: 0x7c, script: 0x1e, flags: 0x0}, - 6: {region: 0x164, script: 0x52, flags: 0x0}, - 7: {region: 0x164, script: 0x1e, flags: 0x0}, - 8: {region: 0x7f, script: 0x52, flags: 0x0}, - 9: {region: 0x164, script: 0x52, flags: 0x0}, - 10: {region: 0x164, script: 0x52, flags: 0x0}, - 11: {region: 0x164, script: 0x52, flags: 0x0}, - 12: {region: 0x94, script: 0x52, flags: 0x0}, - 13: {region: 0x130, script: 0x52, flags: 0x0}, - 14: {region: 0x7f, script: 0x52, flags: 0x0}, - 15: {region: 0x164, script: 0x52, flags: 0x0}, - 16: {region: 0x164, script: 0x52, flags: 0x0}, - 17: {region: 0x105, script: 0x1e, flags: 0x0}, - 18: {region: 0x164, script: 0x52, flags: 0x0}, - 19: {region: 0x9b, script: 0x9, flags: 0x0}, - 20: {region: 0x127, script: 0x5, flags: 0x0}, - 21: {region: 0x164, script: 0x52, flags: 0x0}, - 22: {region: 0x160, script: 0x52, flags: 0x0}, - 23: {region: 0x164, script: 0x52, flags: 0x0}, - 24: {region: 0x164, script: 0x52, flags: 0x0}, - 25: {region: 0x164, script: 0x52, flags: 0x0}, - 26: {region: 0x164, script: 0x52, flags: 0x0}, - 27: {region: 0x164, script: 0x52, flags: 0x0}, - 28: {region: 0x51, script: 0x52, flags: 0x0}, - 29: {region: 0x164, script: 0x52, flags: 0x0}, - 30: {region: 0x164, script: 0x52, flags: 0x0}, - 31: {region: 0x98, script: 0x4, flags: 0x0}, - 32: {region: 0x164, script: 0x52, flags: 0x0}, - 33: {region: 0x7f, script: 0x52, flags: 0x0}, - 34: {region: 0x9a, script: 0xde, flags: 0x0}, - 35: {region: 0x164, script: 0x52, flags: 0x0}, - 36: {region: 0x164, script: 0x52, flags: 0x0}, - 37: {region: 0x14c, script: 0x52, flags: 0x0}, - 38: {region: 0x105, script: 0x1e, flags: 0x0}, - 39: {region: 0x6e, script: 0x27, flags: 0x0}, - 40: {region: 0x164, script: 0x52, flags: 0x0}, - 41: {region: 0x164, script: 0x52, flags: 0x0}, - 42: {region: 0xd5, script: 0x52, flags: 0x0}, - 43: {region: 0x164, script: 0x52, flags: 0x0}, - 45: {region: 0x164, script: 0x52, flags: 0x0}, - 46: {region: 0x164, script: 0x52, flags: 0x0}, - 47: {region: 0x164, script: 0x52, flags: 0x0}, - 48: {region: 0x164, script: 0x52, flags: 0x0}, - 49: {region: 0x164, script: 0x52, flags: 0x0}, - 50: {region: 0x164, script: 0x52, flags: 0x0}, - 51: {region: 0x94, script: 0x52, flags: 0x0}, - 52: {region: 0x164, script: 0x5, flags: 0x0}, - 53: {region: 0x121, script: 0x5, flags: 0x0}, - 54: {region: 0x164, script: 0x52, flags: 0x0}, - 55: {region: 0x164, script: 0x52, flags: 0x0}, - 56: {region: 0x164, script: 0x52, flags: 0x0}, - 57: {region: 0x164, script: 0x52, flags: 0x0}, - 58: {region: 0x6a, script: 0x5, flags: 0x0}, + 0: {region: 0x135, script: 0x55, flags: 0x0}, + 1: {region: 0x6f, script: 0x55, flags: 0x0}, + 2: {region: 0x165, script: 0x55, flags: 0x0}, + 3: {region: 0x165, script: 0x55, flags: 0x0}, + 4: {region: 0x165, script: 0x55, flags: 0x0}, + 5: {region: 0x7d, script: 0x1e, flags: 0x0}, + 6: {region: 0x165, script: 0x55, flags: 0x0}, + 7: {region: 0x165, script: 0x1e, flags: 0x0}, + 8: {region: 0x80, script: 0x55, flags: 0x0}, + 9: {region: 0x165, script: 0x55, flags: 0x0}, + 10: {region: 0x165, script: 0x55, flags: 0x0}, + 11: {region: 0x165, script: 0x55, flags: 0x0}, + 12: {region: 0x95, script: 0x55, flags: 0x0}, + 13: {region: 0x131, script: 0x55, flags: 0x0}, + 14: {region: 0x80, script: 0x55, flags: 0x0}, + 15: {region: 0x165, script: 0x55, flags: 0x0}, + 16: {region: 0x165, script: 0x55, flags: 0x0}, + 17: {region: 0x106, script: 0x1e, flags: 0x0}, + 18: {region: 0x165, script: 0x55, flags: 0x0}, + 19: {region: 0x9c, script: 0x9, flags: 0x0}, + 20: {region: 0x128, script: 0x5, flags: 0x0}, + 21: {region: 0x165, script: 0x55, flags: 0x0}, + 22: {region: 0x161, script: 0x55, flags: 0x0}, + 23: {region: 0x165, script: 0x55, flags: 0x0}, + 24: {region: 0x165, script: 0x55, flags: 0x0}, + 25: {region: 0x165, script: 0x55, flags: 0x0}, + 26: {region: 0x165, script: 0x55, flags: 0x0}, + 27: {region: 0x165, script: 0x55, flags: 0x0}, + 28: {region: 0x52, script: 0x55, flags: 0x0}, + 29: {region: 0x165, script: 0x55, flags: 0x0}, + 30: {region: 0x165, script: 0x55, flags: 0x0}, + 31: {region: 0x99, script: 0x4, flags: 0x0}, + 32: {region: 0x165, script: 0x55, flags: 0x0}, + 33: {region: 0x80, script: 0x55, flags: 0x0}, + 34: {region: 0x9b, script: 0xe4, flags: 0x0}, + 35: {region: 0x165, script: 0x55, flags: 0x0}, + 36: {region: 0x165, script: 0x55, flags: 0x0}, + 37: {region: 0x14d, script: 0x55, flags: 0x0}, + 38: {region: 0x106, script: 0x1e, flags: 0x0}, + 39: {region: 0x6f, script: 0x28, flags: 0x0}, + 40: {region: 0x165, script: 0x55, flags: 0x0}, + 41: {region: 0x165, script: 0x55, flags: 0x0}, + 42: {region: 0xd6, script: 0x55, flags: 0x0}, + 43: {region: 0x165, script: 0x55, flags: 0x0}, + 45: {region: 0x165, script: 0x55, flags: 0x0}, + 46: {region: 0x165, script: 0x55, flags: 0x0}, + 47: {region: 0x165, script: 0x55, flags: 0x0}, + 48: {region: 0x165, script: 0x55, flags: 0x0}, + 49: {region: 0x165, script: 0x55, flags: 0x0}, + 50: {region: 0x165, script: 0x55, flags: 0x0}, + 51: {region: 0x95, script: 0x55, flags: 0x0}, + 52: {region: 0x165, script: 0x5, flags: 0x0}, + 53: {region: 0x122, script: 0x5, flags: 0x0}, + 54: {region: 0x165, script: 0x55, flags: 0x0}, + 55: {region: 0x165, script: 0x55, flags: 0x0}, + 56: {region: 0x165, script: 0x55, flags: 0x0}, + 57: {region: 0x165, script: 0x55, flags: 0x0}, + 58: {region: 0x6b, script: 0x5, flags: 0x0}, 59: {region: 0x0, script: 0x3, flags: 0x1}, - 60: {region: 0x164, script: 0x52, flags: 0x0}, - 61: {region: 0x50, script: 0x52, flags: 0x0}, - 62: {region: 0x3e, script: 0x52, flags: 0x0}, - 63: {region: 0x66, script: 0x5, flags: 0x0}, - 65: {region: 0xb9, script: 0x5, flags: 0x0}, - 66: {region: 0x6a, script: 0x5, flags: 0x0}, - 67: {region: 0x98, script: 0xe, flags: 0x0}, - 68: {region: 0x12e, script: 0x52, flags: 0x0}, - 69: {region: 0x134, script: 0xbc, flags: 0x0}, - 70: {region: 0x164, script: 0x52, flags: 0x0}, - 71: {region: 0x164, script: 0x52, flags: 0x0}, - 72: {region: 0x6d, script: 0x52, flags: 0x0}, - 73: {region: 0x164, script: 0x52, flags: 0x0}, - 74: {region: 0x164, script: 0x52, flags: 0x0}, - 75: {region: 0x48, script: 0x52, flags: 0x0}, - 76: {region: 0x164, script: 0x52, flags: 0x0}, - 77: {region: 0x105, script: 0x1e, flags: 0x0}, - 78: {region: 0x164, script: 0x5, flags: 0x0}, - 79: {region: 0x164, script: 0x52, flags: 0x0}, - 80: {region: 0x164, script: 0x52, flags: 0x0}, - 81: {region: 0x164, script: 0x52, flags: 0x0}, - 82: {region: 0x98, script: 0x20, flags: 0x0}, - 83: {region: 0x164, script: 0x52, flags: 0x0}, - 84: {region: 0x164, script: 0x52, flags: 0x0}, - 85: {region: 0x164, script: 0x52, flags: 0x0}, - 86: {region: 0x3e, script: 0x52, flags: 0x0}, - 87: {region: 0x164, script: 0x52, flags: 0x0}, + 60: {region: 0x165, script: 0x55, flags: 0x0}, + 61: {region: 0x51, script: 0x55, flags: 0x0}, + 62: {region: 0x3f, script: 0x55, flags: 0x0}, + 63: {region: 0x67, script: 0x5, flags: 0x0}, + 65: {region: 0xba, script: 0x5, flags: 0x0}, + 66: {region: 0x6b, script: 0x5, flags: 0x0}, + 67: {region: 0x99, script: 0xe, flags: 0x0}, + 68: {region: 0x12f, script: 0x55, flags: 0x0}, + 69: {region: 0x135, script: 0xc1, flags: 0x0}, + 70: {region: 0x165, script: 0x55, flags: 0x0}, + 71: {region: 0x165, script: 0x55, flags: 0x0}, + 72: {region: 0x6e, script: 0x55, flags: 0x0}, + 73: {region: 0x165, script: 0x55, flags: 0x0}, + 74: {region: 0x165, script: 0x55, flags: 0x0}, + 75: {region: 0x49, script: 0x55, flags: 0x0}, + 76: {region: 0x165, script: 0x55, flags: 0x0}, + 77: {region: 0x106, script: 0x1e, flags: 0x0}, + 78: {region: 0x165, script: 0x5, flags: 0x0}, + 79: {region: 0x165, script: 0x55, flags: 0x0}, + 80: {region: 0x165, script: 0x55, flags: 0x0}, + 81: {region: 0x165, script: 0x55, flags: 0x0}, + 82: {region: 0x99, script: 0x20, flags: 0x0}, + 83: {region: 0x165, script: 0x55, flags: 0x0}, + 84: {region: 0x165, script: 0x55, flags: 0x0}, + 85: {region: 0x165, script: 0x55, flags: 0x0}, + 86: {region: 0x3f, script: 0x55, flags: 0x0}, + 87: {region: 0x165, script: 0x55, flags: 0x0}, 88: {region: 0x3, script: 0x5, flags: 0x1}, - 89: {region: 0x105, script: 0x1e, flags: 0x0}, - 90: {region: 0xe7, script: 0x5, flags: 0x0}, - 91: {region: 0x94, script: 0x52, flags: 0x0}, - 92: {region: 0xda, script: 0x20, flags: 0x0}, - 93: {region: 0x2d, script: 0x52, flags: 0x0}, - 94: {region: 0x51, script: 0x52, flags: 0x0}, - 95: {region: 0x164, script: 0x52, flags: 0x0}, - 96: {region: 0x51, script: 0xb, flags: 0x0}, - 97: {region: 0x164, script: 0x52, flags: 0x0}, - 98: {region: 0x164, script: 0x52, flags: 0x0}, - 99: {region: 0x94, script: 0x52, flags: 0x0}, - 100: {region: 0x164, script: 0x52, flags: 0x0}, - 101: {region: 0x51, script: 0x52, flags: 0x0}, - 102: {region: 0x164, script: 0x52, flags: 0x0}, - 103: {region: 0x164, script: 0x52, flags: 0x0}, - 104: {region: 0x164, script: 0x52, flags: 0x0}, - 105: {region: 0x164, script: 0x52, flags: 0x0}, - 106: {region: 0x4e, script: 0x52, flags: 0x0}, - 107: {region: 0x164, script: 0x52, flags: 0x0}, - 108: {region: 0x164, script: 0x52, flags: 0x0}, - 109: {region: 0x164, script: 0x52, flags: 0x0}, - 110: {region: 0x164, script: 0x27, flags: 0x0}, - 111: {region: 0x164, script: 0x52, flags: 0x0}, - 112: {region: 0x164, script: 0x52, flags: 0x0}, - 113: {region: 0x46, script: 0x1e, flags: 0x0}, - 114: {region: 0x164, script: 0x52, flags: 0x0}, - 115: {region: 0x164, script: 0x52, flags: 0x0}, - 116: {region: 0x10a, script: 0x5, flags: 0x0}, - 117: {region: 0x161, script: 0x52, flags: 0x0}, - 118: {region: 0x164, script: 0x52, flags: 0x0}, - 119: {region: 0x94, script: 0x52, flags: 0x0}, - 120: {region: 0x164, script: 0x52, flags: 0x0}, - 121: {region: 0x12e, script: 0x52, flags: 0x0}, - 122: {region: 0x51, script: 0x52, flags: 0x0}, - 123: {region: 0x98, script: 0xcd, flags: 0x0}, - 124: {region: 0xe7, script: 0x5, flags: 0x0}, - 125: {region: 0x98, script: 0x20, flags: 0x0}, - 126: {region: 0x37, script: 0x1e, flags: 0x0}, - 127: {region: 0x98, script: 0x20, flags: 0x0}, - 128: {region: 0xe7, script: 0x5, flags: 0x0}, - 129: {region: 0x12a, script: 0x2d, flags: 0x0}, - 131: {region: 0x98, script: 0x20, flags: 0x0}, - 132: {region: 0x164, script: 0x52, flags: 0x0}, - 133: {region: 0x98, script: 0x20, flags: 0x0}, - 134: {region: 0xe6, script: 0x52, flags: 0x0}, - 135: {region: 0x164, script: 0x52, flags: 0x0}, - 136: {region: 0x98, script: 0x20, flags: 0x0}, - 137: {region: 0x164, script: 0x52, flags: 0x0}, - 138: {region: 0x13e, script: 0x52, flags: 0x0}, - 139: {region: 0x164, script: 0x52, flags: 0x0}, - 140: {region: 0x164, script: 0x52, flags: 0x0}, - 141: {region: 0xe6, script: 0x52, flags: 0x0}, - 142: {region: 0x164, script: 0x52, flags: 0x0}, - 143: {region: 0xd5, script: 0x52, flags: 0x0}, - 144: {region: 0x164, script: 0x52, flags: 0x0}, - 145: {region: 0x164, script: 0x52, flags: 0x0}, - 146: {region: 0x164, script: 0x52, flags: 0x0}, - 147: {region: 0x164, script: 0x27, flags: 0x0}, - 148: {region: 0x98, script: 0x20, flags: 0x0}, - 149: {region: 0x94, script: 0x52, flags: 0x0}, - 150: {region: 0x164, script: 0x52, flags: 0x0}, - 151: {region: 0x164, script: 0x52, flags: 0x0}, - 152: {region: 0x113, script: 0x52, flags: 0x0}, - 153: {region: 0x164, script: 0x52, flags: 0x0}, - 154: {region: 0x164, script: 0x52, flags: 0x0}, - 155: {region: 0x51, script: 0x52, flags: 0x0}, - 156: {region: 0x164, script: 0x52, flags: 0x0}, - 157: {region: 0xe6, script: 0x52, flags: 0x0}, - 158: {region: 0x164, script: 0x52, flags: 0x0}, - 159: {region: 0x13d, script: 0xcf, flags: 0x0}, - 160: {region: 0xc2, script: 0x52, flags: 0x0}, - 161: {region: 0x164, script: 0x52, flags: 0x0}, - 162: {region: 0x164, script: 0x52, flags: 0x0}, - 163: {region: 0xc2, script: 0x52, flags: 0x0}, - 164: {region: 0x164, script: 0x52, flags: 0x0}, - 165: {region: 0x34, script: 0xe, flags: 0x0}, - 166: {region: 0x164, script: 0x52, flags: 0x0}, - 167: {region: 0x164, script: 0x52, flags: 0x0}, - 168: {region: 0x164, script: 0x52, flags: 0x0}, - 169: {region: 0x52, script: 0xd6, flags: 0x0}, - 170: {region: 0x164, script: 0x52, flags: 0x0}, - 171: {region: 0x164, script: 0x52, flags: 0x0}, - 172: {region: 0x164, script: 0x52, flags: 0x0}, - 173: {region: 0x98, script: 0xe, flags: 0x0}, - 174: {region: 0x164, script: 0x52, flags: 0x0}, - 175: {region: 0x9b, script: 0x5, flags: 0x0}, - 176: {region: 0x164, script: 0x52, flags: 0x0}, - 177: {region: 0x4e, script: 0x52, flags: 0x0}, - 178: {region: 0x77, script: 0x52, flags: 0x0}, - 179: {region: 0x98, script: 0x20, flags: 0x0}, - 180: {region: 0xe7, script: 0x5, flags: 0x0}, - 181: {region: 0x98, script: 0x20, flags: 0x0}, - 182: {region: 0x164, script: 0x52, flags: 0x0}, - 183: {region: 0x32, script: 0x52, flags: 0x0}, - 184: {region: 0x164, script: 0x52, flags: 0x0}, - 185: {region: 0xb3, script: 0xc, flags: 0x0}, - 186: {region: 0x51, script: 0x52, flags: 0x0}, - 187: {region: 0x164, script: 0x27, flags: 0x0}, - 188: {region: 0xe6, script: 0x52, flags: 0x0}, - 189: {region: 0x164, script: 0x52, flags: 0x0}, - 190: {region: 0xe7, script: 0x20, flags: 0x0}, - 191: {region: 0x105, script: 0x1e, flags: 0x0}, - 192: {region: 0x15e, script: 0x52, flags: 0x0}, - 193: {region: 0x164, script: 0x52, flags: 0x0}, - 194: {region: 0x94, script: 0x52, flags: 0x0}, - 195: {region: 0x164, script: 0x52, flags: 0x0}, - 196: {region: 0x51, script: 0x52, flags: 0x0}, - 197: {region: 0x164, script: 0x52, flags: 0x0}, - 198: {region: 0x164, script: 0x52, flags: 0x0}, - 199: {region: 0x164, script: 0x52, flags: 0x0}, - 200: {region: 0x85, script: 0x52, flags: 0x0}, - 201: {region: 0x164, script: 0x52, flags: 0x0}, - 202: {region: 0x164, script: 0x52, flags: 0x0}, - 203: {region: 0x164, script: 0x52, flags: 0x0}, - 204: {region: 0x164, script: 0x52, flags: 0x0}, - 205: {region: 0x6c, script: 0x27, flags: 0x0}, - 206: {region: 0x164, script: 0x52, flags: 0x0}, - 207: {region: 0x164, script: 0x52, flags: 0x0}, - 208: {region: 0x51, script: 0x52, flags: 0x0}, - 209: {region: 0x164, script: 0x52, flags: 0x0}, - 210: {region: 0x164, script: 0x52, flags: 0x0}, - 211: {region: 0xc2, script: 0x52, flags: 0x0}, - 212: {region: 0x164, script: 0x52, flags: 0x0}, - 213: {region: 0x164, script: 0x52, flags: 0x0}, - 214: {region: 0x164, script: 0x52, flags: 0x0}, - 215: {region: 0x6d, script: 0x52, flags: 0x0}, - 216: {region: 0x164, script: 0x52, flags: 0x0}, - 217: {region: 0x164, script: 0x52, flags: 0x0}, - 218: {region: 0xd5, script: 0x52, flags: 0x0}, - 219: {region: 0x34, script: 0x16, flags: 0x0}, - 220: {region: 0x105, script: 0x1e, flags: 0x0}, - 221: {region: 0xe6, script: 0x52, flags: 0x0}, - 222: {region: 0x164, script: 0x52, flags: 0x0}, - 223: {region: 0x130, script: 0x52, flags: 0x0}, - 224: {region: 0x89, script: 0x52, flags: 0x0}, - 225: {region: 0x74, script: 0x52, flags: 0x0}, - 226: {region: 0x105, script: 0x1e, flags: 0x0}, - 227: {region: 0x134, script: 0x52, flags: 0x0}, - 228: {region: 0x48, script: 0x52, flags: 0x0}, - 229: {region: 0x134, script: 0x1a, flags: 0x0}, - 230: {region: 0xa5, script: 0x5, flags: 0x0}, - 231: {region: 0x13d, script: 0x19, flags: 0x0}, - 232: {region: 0x164, script: 0x52, flags: 0x0}, - 233: {region: 0x9a, script: 0x5, flags: 0x0}, - 234: {region: 0x164, script: 0x52, flags: 0x0}, - 235: {region: 0x164, script: 0x52, flags: 0x0}, - 236: {region: 0x164, script: 0x52, flags: 0x0}, - 237: {region: 0x164, script: 0x52, flags: 0x0}, - 238: {region: 0x164, script: 0x52, flags: 0x0}, - 239: {region: 0x77, script: 0x52, flags: 0x0}, - 240: {region: 0x6a, script: 0x1c, flags: 0x0}, - 241: {region: 0xe6, script: 0x52, flags: 0x0}, - 242: {region: 0x48, script: 0x17, flags: 0x0}, - 243: {region: 0x12f, script: 0x1e, flags: 0x0}, - 244: {region: 0x48, script: 0x17, flags: 0x0}, - 245: {region: 0x48, script: 0x17, flags: 0x0}, - 246: {region: 0x48, script: 0x17, flags: 0x0}, - 247: {region: 0x48, script: 0x17, flags: 0x0}, - 248: {region: 0x109, script: 0x52, flags: 0x0}, - 249: {region: 0x5d, script: 0x52, flags: 0x0}, - 250: {region: 0xe8, script: 0x52, flags: 0x0}, - 251: {region: 0x48, script: 0x17, flags: 0x0}, - 252: {region: 0xc3, script: 0x79, flags: 0x0}, + 89: {region: 0x106, script: 0x1e, flags: 0x0}, + 90: {region: 0xe8, script: 0x5, flags: 0x0}, + 91: {region: 0x95, script: 0x55, flags: 0x0}, + 92: {region: 0xdb, script: 0x20, flags: 0x0}, + 93: {region: 0x2e, script: 0x55, flags: 0x0}, + 94: {region: 0x52, script: 0x55, flags: 0x0}, + 95: {region: 0x165, script: 0x55, flags: 0x0}, + 96: {region: 0x52, script: 0xb, flags: 0x0}, + 97: {region: 0x165, script: 0x55, flags: 0x0}, + 98: {region: 0x165, script: 0x55, flags: 0x0}, + 99: {region: 0x95, script: 0x55, flags: 0x0}, + 100: {region: 0x165, script: 0x55, flags: 0x0}, + 101: {region: 0x52, script: 0x55, flags: 0x0}, + 102: {region: 0x165, script: 0x55, flags: 0x0}, + 103: {region: 0x165, script: 0x55, flags: 0x0}, + 104: {region: 0x165, script: 0x55, flags: 0x0}, + 105: {region: 0x165, script: 0x55, flags: 0x0}, + 106: {region: 0x4f, script: 0x55, flags: 0x0}, + 107: {region: 0x165, script: 0x55, flags: 0x0}, + 108: {region: 0x165, script: 0x55, flags: 0x0}, + 109: {region: 0x165, script: 0x55, flags: 0x0}, + 110: {region: 0x165, script: 0x28, flags: 0x0}, + 111: {region: 0x165, script: 0x55, flags: 0x0}, + 112: {region: 0x165, script: 0x55, flags: 0x0}, + 113: {region: 0x47, script: 0x1e, flags: 0x0}, + 114: {region: 0x165, script: 0x55, flags: 0x0}, + 115: {region: 0x165, script: 0x55, flags: 0x0}, + 116: {region: 0x10b, script: 0x5, flags: 0x0}, + 117: {region: 0x162, script: 0x55, flags: 0x0}, + 118: {region: 0x165, script: 0x55, flags: 0x0}, + 119: {region: 0x95, script: 0x55, flags: 0x0}, + 120: {region: 0x165, script: 0x55, flags: 0x0}, + 121: {region: 0x12f, script: 0x55, flags: 0x0}, + 122: {region: 0x52, script: 0x55, flags: 0x0}, + 123: {region: 0x99, script: 0xd3, flags: 0x0}, + 124: {region: 0xe8, script: 0x5, flags: 0x0}, + 125: {region: 0x99, script: 0x20, flags: 0x0}, + 126: {region: 0x38, script: 0x1e, flags: 0x0}, + 127: {region: 0x99, script: 0x20, flags: 0x0}, + 128: {region: 0xe8, script: 0x5, flags: 0x0}, + 129: {region: 0x12b, script: 0x30, flags: 0x0}, + 131: {region: 0x99, script: 0x20, flags: 0x0}, + 132: {region: 0x165, script: 0x55, flags: 0x0}, + 133: {region: 0x99, script: 0x20, flags: 0x0}, + 134: {region: 0xe7, script: 0x55, flags: 0x0}, + 135: {region: 0x165, script: 0x55, flags: 0x0}, + 136: {region: 0x99, script: 0x20, flags: 0x0}, + 137: {region: 0x165, script: 0x55, flags: 0x0}, + 138: {region: 0x13f, script: 0x55, flags: 0x0}, + 139: {region: 0x165, script: 0x55, flags: 0x0}, + 140: {region: 0x165, script: 0x55, flags: 0x0}, + 141: {region: 0xe7, script: 0x55, flags: 0x0}, + 142: {region: 0x165, script: 0x55, flags: 0x0}, + 143: {region: 0xd6, script: 0x55, flags: 0x0}, + 144: {region: 0x165, script: 0x55, flags: 0x0}, + 145: {region: 0x165, script: 0x55, flags: 0x0}, + 146: {region: 0x165, script: 0x55, flags: 0x0}, + 147: {region: 0x165, script: 0x28, flags: 0x0}, + 148: {region: 0x99, script: 0x20, flags: 0x0}, + 149: {region: 0x95, script: 0x55, flags: 0x0}, + 150: {region: 0x165, script: 0x55, flags: 0x0}, + 151: {region: 0x165, script: 0x55, flags: 0x0}, + 152: {region: 0x114, script: 0x55, flags: 0x0}, + 153: {region: 0x165, script: 0x55, flags: 0x0}, + 154: {region: 0x165, script: 0x55, flags: 0x0}, + 155: {region: 0x52, script: 0x55, flags: 0x0}, + 156: {region: 0x165, script: 0x55, flags: 0x0}, + 157: {region: 0xe7, script: 0x55, flags: 0x0}, + 158: {region: 0x165, script: 0x55, flags: 0x0}, + 159: {region: 0x13e, script: 0xd5, flags: 0x0}, + 160: {region: 0xc3, script: 0x55, flags: 0x0}, + 161: {region: 0x165, script: 0x55, flags: 0x0}, + 162: {region: 0x165, script: 0x55, flags: 0x0}, + 163: {region: 0xc3, script: 0x55, flags: 0x0}, + 164: {region: 0x165, script: 0x55, flags: 0x0}, + 165: {region: 0x35, script: 0xe, flags: 0x0}, + 166: {region: 0x165, script: 0x55, flags: 0x0}, + 167: {region: 0x165, script: 0x55, flags: 0x0}, + 168: {region: 0x165, script: 0x55, flags: 0x0}, + 169: {region: 0x53, script: 0xdc, flags: 0x0}, + 170: {region: 0x165, script: 0x55, flags: 0x0}, + 171: {region: 0x165, script: 0x55, flags: 0x0}, + 172: {region: 0x165, script: 0x55, flags: 0x0}, + 173: {region: 0x99, script: 0xe, flags: 0x0}, + 174: {region: 0x165, script: 0x55, flags: 0x0}, + 175: {region: 0x9c, script: 0x5, flags: 0x0}, + 176: {region: 0x165, script: 0x55, flags: 0x0}, + 177: {region: 0x4f, script: 0x55, flags: 0x0}, + 178: {region: 0x78, script: 0x55, flags: 0x0}, + 179: {region: 0x99, script: 0x20, flags: 0x0}, + 180: {region: 0xe8, script: 0x5, flags: 0x0}, + 181: {region: 0x99, script: 0x20, flags: 0x0}, + 182: {region: 0x165, script: 0x55, flags: 0x0}, + 183: {region: 0x33, script: 0x55, flags: 0x0}, + 184: {region: 0x165, script: 0x55, flags: 0x0}, + 185: {region: 0xb4, script: 0xc, flags: 0x0}, + 186: {region: 0x52, script: 0x55, flags: 0x0}, + 187: {region: 0x165, script: 0x28, flags: 0x0}, + 188: {region: 0xe7, script: 0x55, flags: 0x0}, + 189: {region: 0x165, script: 0x55, flags: 0x0}, + 190: {region: 0xe8, script: 0x20, flags: 0x0}, + 191: {region: 0x106, script: 0x1e, flags: 0x0}, + 192: {region: 0x15f, script: 0x55, flags: 0x0}, + 193: {region: 0x165, script: 0x55, flags: 0x0}, + 194: {region: 0x95, script: 0x55, flags: 0x0}, + 195: {region: 0x165, script: 0x55, flags: 0x0}, + 196: {region: 0x52, script: 0x55, flags: 0x0}, + 197: {region: 0x165, script: 0x55, flags: 0x0}, + 198: {region: 0x165, script: 0x55, flags: 0x0}, + 199: {region: 0x165, script: 0x55, flags: 0x0}, + 200: {region: 0x86, script: 0x55, flags: 0x0}, + 201: {region: 0x165, script: 0x55, flags: 0x0}, + 202: {region: 0x165, script: 0x55, flags: 0x0}, + 203: {region: 0x165, script: 0x55, flags: 0x0}, + 204: {region: 0x165, script: 0x55, flags: 0x0}, + 205: {region: 0x6d, script: 0x28, flags: 0x0}, + 206: {region: 0x165, script: 0x55, flags: 0x0}, + 207: {region: 0x165, script: 0x55, flags: 0x0}, + 208: {region: 0x52, script: 0x55, flags: 0x0}, + 209: {region: 0x165, script: 0x55, flags: 0x0}, + 210: {region: 0x165, script: 0x55, flags: 0x0}, + 211: {region: 0xc3, script: 0x55, flags: 0x0}, + 212: {region: 0x165, script: 0x55, flags: 0x0}, + 213: {region: 0x165, script: 0x55, flags: 0x0}, + 214: {region: 0x165, script: 0x55, flags: 0x0}, + 215: {region: 0x6e, script: 0x55, flags: 0x0}, + 216: {region: 0x165, script: 0x55, flags: 0x0}, + 217: {region: 0x165, script: 0x55, flags: 0x0}, + 218: {region: 0xd6, script: 0x55, flags: 0x0}, + 219: {region: 0x35, script: 0x16, flags: 0x0}, + 220: {region: 0x106, script: 0x1e, flags: 0x0}, + 221: {region: 0xe7, script: 0x55, flags: 0x0}, + 222: {region: 0x165, script: 0x55, flags: 0x0}, + 223: {region: 0x131, script: 0x55, flags: 0x0}, + 224: {region: 0x8a, script: 0x55, flags: 0x0}, + 225: {region: 0x75, script: 0x55, flags: 0x0}, + 226: {region: 0x106, script: 0x1e, flags: 0x0}, + 227: {region: 0x135, script: 0x55, flags: 0x0}, + 228: {region: 0x49, script: 0x55, flags: 0x0}, + 229: {region: 0x135, script: 0x1a, flags: 0x0}, + 230: {region: 0xa6, script: 0x5, flags: 0x0}, + 231: {region: 0x13e, script: 0x19, flags: 0x0}, + 232: {region: 0x165, script: 0x55, flags: 0x0}, + 233: {region: 0x9b, script: 0x5, flags: 0x0}, + 234: {region: 0x165, script: 0x55, flags: 0x0}, + 235: {region: 0x165, script: 0x55, flags: 0x0}, + 236: {region: 0x165, script: 0x55, flags: 0x0}, + 237: {region: 0x165, script: 0x55, flags: 0x0}, + 238: {region: 0x165, script: 0x55, flags: 0x0}, + 239: {region: 0x78, script: 0x55, flags: 0x0}, + 240: {region: 0x6b, script: 0x1c, flags: 0x0}, + 241: {region: 0xe7, script: 0x55, flags: 0x0}, + 242: {region: 0x49, script: 0x17, flags: 0x0}, + 243: {region: 0x130, script: 0x1e, flags: 0x0}, + 244: {region: 0x49, script: 0x17, flags: 0x0}, + 245: {region: 0x49, script: 0x17, flags: 0x0}, + 246: {region: 0x49, script: 0x17, flags: 0x0}, + 247: {region: 0x49, script: 0x17, flags: 0x0}, + 248: {region: 0x10a, script: 0x55, flags: 0x0}, + 249: {region: 0x5e, script: 0x55, flags: 0x0}, + 250: {region: 0xe9, script: 0x55, flags: 0x0}, + 251: {region: 0x49, script: 0x17, flags: 0x0}, + 252: {region: 0xc4, script: 0x7e, flags: 0x0}, 253: {region: 0x8, script: 0x2, flags: 0x1}, - 254: {region: 0x105, script: 0x1e, flags: 0x0}, - 255: {region: 0x7a, script: 0x52, flags: 0x0}, - 256: {region: 0x62, script: 0x52, flags: 0x0}, - 257: {region: 0x164, script: 0x52, flags: 0x0}, - 258: {region: 0x164, script: 0x52, flags: 0x0}, - 259: {region: 0x164, script: 0x52, flags: 0x0}, - 260: {region: 0x164, script: 0x52, flags: 0x0}, - 261: {region: 0x134, script: 0x52, flags: 0x0}, - 262: {region: 0x105, script: 0x1e, flags: 0x0}, - 263: {region: 0xa3, script: 0x52, flags: 0x0}, - 264: {region: 0x164, script: 0x52, flags: 0x0}, - 265: {region: 0x164, script: 0x52, flags: 0x0}, - 266: {region: 0x98, script: 0x5, flags: 0x0}, - 267: {region: 0x164, script: 0x52, flags: 0x0}, - 268: {region: 0x5f, script: 0x52, flags: 0x0}, - 269: {region: 0x164, script: 0x52, flags: 0x0}, - 270: {region: 0x48, script: 0x52, flags: 0x0}, - 271: {region: 0x164, script: 0x52, flags: 0x0}, - 272: {region: 0x164, script: 0x52, flags: 0x0}, - 273: {region: 0x164, script: 0x52, flags: 0x0}, - 274: {region: 0x164, script: 0x5, flags: 0x0}, - 275: {region: 0x48, script: 0x52, flags: 0x0}, - 276: {region: 0x164, script: 0x52, flags: 0x0}, - 277: {region: 0x164, script: 0x52, flags: 0x0}, - 278: {region: 0xd3, script: 0x52, flags: 0x0}, - 279: {region: 0x4e, script: 0x52, flags: 0x0}, - 280: {region: 0x164, script: 0x52, flags: 0x0}, - 281: {region: 0x98, script: 0x5, flags: 0x0}, - 282: {region: 0x164, script: 0x52, flags: 0x0}, - 283: {region: 0x164, script: 0x52, flags: 0x0}, - 284: {region: 0x164, script: 0x52, flags: 0x0}, - 285: {region: 0x164, script: 0x27, flags: 0x0}, - 286: {region: 0x5f, script: 0x52, flags: 0x0}, - 287: {region: 0xc2, script: 0x52, flags: 0x0}, - 288: {region: 0xcf, script: 0x52, flags: 0x0}, - 289: {region: 0x164, script: 0x52, flags: 0x0}, - 290: {region: 0xda, script: 0x20, flags: 0x0}, - 291: {region: 0x51, script: 0x52, flags: 0x0}, - 292: {region: 0x164, script: 0x52, flags: 0x0}, - 293: {region: 0x164, script: 0x52, flags: 0x0}, - 294: {region: 0x164, script: 0x52, flags: 0x0}, - 295: {region: 0xcc, script: 0xd4, flags: 0x0}, - 296: {region: 0x164, script: 0x52, flags: 0x0}, - 297: {region: 0x164, script: 0x52, flags: 0x0}, - 298: {region: 0x113, script: 0x52, flags: 0x0}, - 299: {region: 0x36, script: 0x52, flags: 0x0}, - 300: {region: 0x42, script: 0xd6, flags: 0x0}, - 301: {region: 0x164, script: 0x52, flags: 0x0}, - 302: {region: 0xa3, script: 0x52, flags: 0x0}, - 303: {region: 0x7f, script: 0x52, flags: 0x0}, - 304: {region: 0xd5, script: 0x52, flags: 0x0}, - 305: {region: 0x9d, script: 0x52, flags: 0x0}, - 306: {region: 0x6a, script: 0x25, flags: 0x0}, - 307: {region: 0x164, script: 0x52, flags: 0x0}, - 308: {region: 0xc3, script: 0x43, flags: 0x0}, - 309: {region: 0x86, script: 0x2d, flags: 0x0}, - 310: {region: 0x164, script: 0x52, flags: 0x0}, - 311: {region: 0x164, script: 0x52, flags: 0x0}, + 254: {region: 0x106, script: 0x1e, flags: 0x0}, + 255: {region: 0x7b, script: 0x55, flags: 0x0}, + 256: {region: 0x63, script: 0x55, flags: 0x0}, + 257: {region: 0x165, script: 0x55, flags: 0x0}, + 258: {region: 0x165, script: 0x55, flags: 0x0}, + 259: {region: 0x165, script: 0x55, flags: 0x0}, + 260: {region: 0x165, script: 0x55, flags: 0x0}, + 261: {region: 0x135, script: 0x55, flags: 0x0}, + 262: {region: 0x106, script: 0x1e, flags: 0x0}, + 263: {region: 0xa4, script: 0x55, flags: 0x0}, + 264: {region: 0x165, script: 0x55, flags: 0x0}, + 265: {region: 0x165, script: 0x55, flags: 0x0}, + 266: {region: 0x99, script: 0x5, flags: 0x0}, + 267: {region: 0x165, script: 0x55, flags: 0x0}, + 268: {region: 0x60, script: 0x55, flags: 0x0}, + 269: {region: 0x165, script: 0x55, flags: 0x0}, + 270: {region: 0x49, script: 0x55, flags: 0x0}, + 271: {region: 0x165, script: 0x55, flags: 0x0}, + 272: {region: 0x165, script: 0x55, flags: 0x0}, + 273: {region: 0x165, script: 0x55, flags: 0x0}, + 274: {region: 0x165, script: 0x5, flags: 0x0}, + 275: {region: 0x49, script: 0x55, flags: 0x0}, + 276: {region: 0x165, script: 0x55, flags: 0x0}, + 277: {region: 0x165, script: 0x55, flags: 0x0}, + 278: {region: 0xd4, script: 0x55, flags: 0x0}, + 279: {region: 0x4f, script: 0x55, flags: 0x0}, + 280: {region: 0x165, script: 0x55, flags: 0x0}, + 281: {region: 0x99, script: 0x5, flags: 0x0}, + 282: {region: 0x165, script: 0x55, flags: 0x0}, + 283: {region: 0x165, script: 0x55, flags: 0x0}, + 284: {region: 0x165, script: 0x55, flags: 0x0}, + 285: {region: 0x165, script: 0x28, flags: 0x0}, + 286: {region: 0x60, script: 0x55, flags: 0x0}, + 287: {region: 0xc3, script: 0x55, flags: 0x0}, + 288: {region: 0xd0, script: 0x55, flags: 0x0}, + 289: {region: 0x165, script: 0x55, flags: 0x0}, + 290: {region: 0xdb, script: 0x20, flags: 0x0}, + 291: {region: 0x52, script: 0x55, flags: 0x0}, + 292: {region: 0x165, script: 0x55, flags: 0x0}, + 293: {region: 0x165, script: 0x55, flags: 0x0}, + 294: {region: 0x165, script: 0x55, flags: 0x0}, + 295: {region: 0xcd, script: 0xda, flags: 0x0}, + 296: {region: 0x165, script: 0x55, flags: 0x0}, + 297: {region: 0x165, script: 0x55, flags: 0x0}, + 298: {region: 0x114, script: 0x55, flags: 0x0}, + 299: {region: 0x37, script: 0x55, flags: 0x0}, + 300: {region: 0x43, script: 0xdc, flags: 0x0}, + 301: {region: 0x165, script: 0x55, flags: 0x0}, + 302: {region: 0xa4, script: 0x55, flags: 0x0}, + 303: {region: 0x80, script: 0x55, flags: 0x0}, + 304: {region: 0xd6, script: 0x55, flags: 0x0}, + 305: {region: 0x9e, script: 0x55, flags: 0x0}, + 306: {region: 0x6b, script: 0x26, flags: 0x0}, + 307: {region: 0x165, script: 0x55, flags: 0x0}, + 308: {region: 0xc4, script: 0x46, flags: 0x0}, + 309: {region: 0x87, script: 0x30, flags: 0x0}, + 310: {region: 0x165, script: 0x55, flags: 0x0}, + 311: {region: 0x165, script: 0x55, flags: 0x0}, 312: {region: 0xa, script: 0x2, flags: 0x1}, - 313: {region: 0x164, script: 0x52, flags: 0x0}, - 314: {region: 0x164, script: 0x52, flags: 0x0}, - 315: {region: 0x1, script: 0x52, flags: 0x0}, - 316: {region: 0x164, script: 0x52, flags: 0x0}, - 317: {region: 0x6d, script: 0x52, flags: 0x0}, - 318: {region: 0x134, script: 0x52, flags: 0x0}, - 319: {region: 0x69, script: 0x52, flags: 0x0}, - 320: {region: 0x164, script: 0x52, flags: 0x0}, - 321: {region: 0x9d, script: 0x3e, flags: 0x0}, - 322: {region: 0x164, script: 0x52, flags: 0x0}, - 323: {region: 0x164, script: 0x52, flags: 0x0}, - 324: {region: 0x6d, script: 0x52, flags: 0x0}, - 325: {region: 0x51, script: 0x52, flags: 0x0}, - 326: {region: 0x6d, script: 0x52, flags: 0x0}, - 327: {region: 0x9b, script: 0x5, flags: 0x0}, - 328: {region: 0x164, script: 0x52, flags: 0x0}, - 329: {region: 0x164, script: 0x52, flags: 0x0}, - 330: {region: 0x164, script: 0x52, flags: 0x0}, - 331: {region: 0x164, script: 0x52, flags: 0x0}, - 332: {region: 0x85, script: 0x52, flags: 0x0}, + 313: {region: 0x165, script: 0x55, flags: 0x0}, + 314: {region: 0x165, script: 0x55, flags: 0x0}, + 315: {region: 0x1, script: 0x55, flags: 0x0}, + 316: {region: 0x165, script: 0x55, flags: 0x0}, + 317: {region: 0x6e, script: 0x55, flags: 0x0}, + 318: {region: 0x135, script: 0x55, flags: 0x0}, + 319: {region: 0x6a, script: 0x55, flags: 0x0}, + 320: {region: 0x165, script: 0x55, flags: 0x0}, + 321: {region: 0x9e, script: 0x41, flags: 0x0}, + 322: {region: 0x165, script: 0x55, flags: 0x0}, + 323: {region: 0x165, script: 0x55, flags: 0x0}, + 324: {region: 0x6e, script: 0x55, flags: 0x0}, + 325: {region: 0x52, script: 0x55, flags: 0x0}, + 326: {region: 0x6e, script: 0x55, flags: 0x0}, + 327: {region: 0x9c, script: 0x5, flags: 0x0}, + 328: {region: 0x165, script: 0x55, flags: 0x0}, + 329: {region: 0x165, script: 0x55, flags: 0x0}, + 330: {region: 0x165, script: 0x55, flags: 0x0}, + 331: {region: 0x165, script: 0x55, flags: 0x0}, + 332: {region: 0x86, script: 0x55, flags: 0x0}, 333: {region: 0xc, script: 0x2, flags: 0x1}, - 334: {region: 0x164, script: 0x52, flags: 0x0}, - 335: {region: 0xc2, script: 0x52, flags: 0x0}, - 336: {region: 0x71, script: 0x52, flags: 0x0}, - 337: {region: 0x10a, script: 0x5, flags: 0x0}, - 338: {region: 0xe6, script: 0x52, flags: 0x0}, - 339: {region: 0x10b, script: 0x52, flags: 0x0}, - 340: {region: 0x72, script: 0x52, flags: 0x0}, - 341: {region: 0x164, script: 0x52, flags: 0x0}, - 342: {region: 0x164, script: 0x52, flags: 0x0}, - 343: {region: 0x75, script: 0x52, flags: 0x0}, - 344: {region: 0x164, script: 0x52, flags: 0x0}, - 345: {region: 0x3a, script: 0x52, flags: 0x0}, - 346: {region: 0x164, script: 0x52, flags: 0x0}, - 347: {region: 0x164, script: 0x52, flags: 0x0}, - 348: {region: 0x164, script: 0x52, flags: 0x0}, - 349: {region: 0x77, script: 0x52, flags: 0x0}, - 350: {region: 0x134, script: 0x52, flags: 0x0}, - 351: {region: 0x77, script: 0x52, flags: 0x0}, - 352: {region: 0x5f, script: 0x52, flags: 0x0}, - 353: {region: 0x5f, script: 0x52, flags: 0x0}, - 354: {region: 0x51, script: 0x5, flags: 0x0}, - 355: {region: 0x13f, script: 0x52, flags: 0x0}, - 356: {region: 0x164, script: 0x52, flags: 0x0}, - 357: {region: 0x83, script: 0x52, flags: 0x0}, - 358: {region: 0x164, script: 0x52, flags: 0x0}, - 359: {region: 0xd3, script: 0x52, flags: 0x0}, - 360: {region: 0x9d, script: 0x52, flags: 0x0}, - 361: {region: 0xd5, script: 0x52, flags: 0x0}, - 362: {region: 0x164, script: 0x52, flags: 0x0}, - 363: {region: 0x10a, script: 0x52, flags: 0x0}, - 364: {region: 0xd8, script: 0x52, flags: 0x0}, - 365: {region: 0x95, script: 0x52, flags: 0x0}, - 366: {region: 0x7f, script: 0x52, flags: 0x0}, - 367: {region: 0x164, script: 0x52, flags: 0x0}, - 368: {region: 0xbb, script: 0x52, flags: 0x0}, - 369: {region: 0x164, script: 0x52, flags: 0x0}, - 370: {region: 0x164, script: 0x52, flags: 0x0}, - 371: {region: 0x164, script: 0x52, flags: 0x0}, - 372: {region: 0x52, script: 0x34, flags: 0x0}, - 373: {region: 0x164, script: 0x52, flags: 0x0}, - 374: {region: 0x94, script: 0x52, flags: 0x0}, - 375: {region: 0x164, script: 0x52, flags: 0x0}, - 376: {region: 0x98, script: 0x20, flags: 0x0}, - 377: {region: 0x164, script: 0x52, flags: 0x0}, - 378: {region: 0x9b, script: 0x5, flags: 0x0}, - 379: {region: 0x7d, script: 0x52, flags: 0x0}, - 380: {region: 0x7a, script: 0x52, flags: 0x0}, - 381: {region: 0x164, script: 0x52, flags: 0x0}, - 382: {region: 0x164, script: 0x52, flags: 0x0}, - 383: {region: 0x164, script: 0x52, flags: 0x0}, - 384: {region: 0x164, script: 0x52, flags: 0x0}, - 385: {region: 0x164, script: 0x52, flags: 0x0}, - 386: {region: 0x164, script: 0x52, flags: 0x0}, - 387: {region: 0x6e, script: 0x27, flags: 0x0}, - 388: {region: 0x164, script: 0x52, flags: 0x0}, - 389: {region: 0xda, script: 0x20, flags: 0x0}, - 390: {region: 0x164, script: 0x52, flags: 0x0}, - 391: {region: 0xa6, script: 0x52, flags: 0x0}, - 392: {region: 0x164, script: 0x52, flags: 0x0}, - 393: {region: 0xe7, script: 0x5, flags: 0x0}, - 394: {region: 0x164, script: 0x52, flags: 0x0}, - 395: {region: 0xe7, script: 0x5, flags: 0x0}, - 396: {region: 0x164, script: 0x52, flags: 0x0}, - 397: {region: 0x164, script: 0x52, flags: 0x0}, - 398: {region: 0x6d, script: 0x52, flags: 0x0}, - 399: {region: 0x9b, script: 0x5, flags: 0x0}, - 400: {region: 0x164, script: 0x52, flags: 0x0}, - 401: {region: 0x164, script: 0x27, flags: 0x0}, - 402: {region: 0xf0, script: 0x52, flags: 0x0}, - 403: {region: 0x164, script: 0x52, flags: 0x0}, - 404: {region: 0x164, script: 0x52, flags: 0x0}, - 405: {region: 0x164, script: 0x52, flags: 0x0}, - 406: {region: 0x164, script: 0x27, flags: 0x0}, - 407: {region: 0x164, script: 0x52, flags: 0x0}, - 408: {region: 0x98, script: 0x20, flags: 0x0}, - 409: {region: 0x98, script: 0xd0, flags: 0x0}, - 410: {region: 0x94, script: 0x52, flags: 0x0}, - 411: {region: 0xd8, script: 0x52, flags: 0x0}, - 412: {region: 0x12f, script: 0x2b, flags: 0x0}, - 413: {region: 0x164, script: 0x52, flags: 0x0}, + 334: {region: 0x165, script: 0x55, flags: 0x0}, + 335: {region: 0xc3, script: 0x55, flags: 0x0}, + 336: {region: 0x72, script: 0x55, flags: 0x0}, + 337: {region: 0x10b, script: 0x5, flags: 0x0}, + 338: {region: 0xe7, script: 0x55, flags: 0x0}, + 339: {region: 0x10c, script: 0x55, flags: 0x0}, + 340: {region: 0x73, script: 0x55, flags: 0x0}, + 341: {region: 0x165, script: 0x55, flags: 0x0}, + 342: {region: 0x165, script: 0x55, flags: 0x0}, + 343: {region: 0x76, script: 0x55, flags: 0x0}, + 344: {region: 0x165, script: 0x55, flags: 0x0}, + 345: {region: 0x3b, script: 0x55, flags: 0x0}, + 346: {region: 0x165, script: 0x55, flags: 0x0}, + 347: {region: 0x165, script: 0x55, flags: 0x0}, + 348: {region: 0x165, script: 0x55, flags: 0x0}, + 349: {region: 0x78, script: 0x55, flags: 0x0}, + 350: {region: 0x135, script: 0x55, flags: 0x0}, + 351: {region: 0x78, script: 0x55, flags: 0x0}, + 352: {region: 0x60, script: 0x55, flags: 0x0}, + 353: {region: 0x60, script: 0x55, flags: 0x0}, + 354: {region: 0x52, script: 0x5, flags: 0x0}, + 355: {region: 0x140, script: 0x55, flags: 0x0}, + 356: {region: 0x165, script: 0x55, flags: 0x0}, + 357: {region: 0x84, script: 0x55, flags: 0x0}, + 358: {region: 0x165, script: 0x55, flags: 0x0}, + 359: {region: 0xd4, script: 0x55, flags: 0x0}, + 360: {region: 0x9e, script: 0x55, flags: 0x0}, + 361: {region: 0xd6, script: 0x55, flags: 0x0}, + 362: {region: 0x165, script: 0x55, flags: 0x0}, + 363: {region: 0x10b, script: 0x55, flags: 0x0}, + 364: {region: 0xd9, script: 0x55, flags: 0x0}, + 365: {region: 0x96, script: 0x55, flags: 0x0}, + 366: {region: 0x80, script: 0x55, flags: 0x0}, + 367: {region: 0x165, script: 0x55, flags: 0x0}, + 368: {region: 0xbc, script: 0x55, flags: 0x0}, + 369: {region: 0x165, script: 0x55, flags: 0x0}, + 370: {region: 0x165, script: 0x55, flags: 0x0}, + 371: {region: 0x165, script: 0x55, flags: 0x0}, + 372: {region: 0x53, script: 0x37, flags: 0x0}, + 373: {region: 0x165, script: 0x55, flags: 0x0}, + 374: {region: 0x95, script: 0x55, flags: 0x0}, + 375: {region: 0x165, script: 0x55, flags: 0x0}, + 376: {region: 0x99, script: 0x20, flags: 0x0}, + 377: {region: 0x165, script: 0x55, flags: 0x0}, + 378: {region: 0x9c, script: 0x5, flags: 0x0}, + 379: {region: 0x7e, script: 0x55, flags: 0x0}, + 380: {region: 0x7b, script: 0x55, flags: 0x0}, + 381: {region: 0x165, script: 0x55, flags: 0x0}, + 382: {region: 0x165, script: 0x55, flags: 0x0}, + 383: {region: 0x165, script: 0x55, flags: 0x0}, + 384: {region: 0x165, script: 0x55, flags: 0x0}, + 385: {region: 0x165, script: 0x55, flags: 0x0}, + 386: {region: 0x165, script: 0x55, flags: 0x0}, + 387: {region: 0x6f, script: 0x28, flags: 0x0}, + 388: {region: 0x165, script: 0x55, flags: 0x0}, + 389: {region: 0xdb, script: 0x20, flags: 0x0}, + 390: {region: 0x165, script: 0x55, flags: 0x0}, + 391: {region: 0xa7, script: 0x55, flags: 0x0}, + 392: {region: 0x165, script: 0x55, flags: 0x0}, + 393: {region: 0xe8, script: 0x5, flags: 0x0}, + 394: {region: 0x165, script: 0x55, flags: 0x0}, + 395: {region: 0xe8, script: 0x5, flags: 0x0}, + 396: {region: 0x165, script: 0x55, flags: 0x0}, + 397: {region: 0x165, script: 0x55, flags: 0x0}, + 398: {region: 0x6e, script: 0x55, flags: 0x0}, + 399: {region: 0x9c, script: 0x5, flags: 0x0}, + 400: {region: 0x165, script: 0x55, flags: 0x0}, + 401: {region: 0x165, script: 0x28, flags: 0x0}, + 402: {region: 0xf1, script: 0x55, flags: 0x0}, + 403: {region: 0x165, script: 0x55, flags: 0x0}, + 404: {region: 0x165, script: 0x55, flags: 0x0}, + 405: {region: 0x165, script: 0x55, flags: 0x0}, + 406: {region: 0x165, script: 0x28, flags: 0x0}, + 407: {region: 0x165, script: 0x55, flags: 0x0}, + 408: {region: 0x99, script: 0x20, flags: 0x0}, + 409: {region: 0x99, script: 0xd6, flags: 0x0}, + 410: {region: 0x95, script: 0x55, flags: 0x0}, + 411: {region: 0xd9, script: 0x55, flags: 0x0}, + 412: {region: 0x130, script: 0x2e, flags: 0x0}, + 413: {region: 0x165, script: 0x55, flags: 0x0}, 414: {region: 0xe, script: 0x2, flags: 0x1}, - 415: {region: 0x98, script: 0xe, flags: 0x0}, - 416: {region: 0x164, script: 0x52, flags: 0x0}, - 417: {region: 0x4d, script: 0x52, flags: 0x0}, - 418: {region: 0x98, script: 0x2e, flags: 0x0}, - 419: {region: 0x40, script: 0x52, flags: 0x0}, - 420: {region: 0x53, script: 0x52, flags: 0x0}, - 421: {region: 0x164, script: 0x52, flags: 0x0}, - 422: {region: 0x7f, script: 0x52, flags: 0x0}, - 423: {region: 0x164, script: 0x52, flags: 0x0}, - 424: {region: 0x164, script: 0x52, flags: 0x0}, - 425: {region: 0xa3, script: 0x52, flags: 0x0}, - 426: {region: 0x97, script: 0x52, flags: 0x0}, - 427: {region: 0x164, script: 0x52, flags: 0x0}, - 428: {region: 0xda, script: 0x20, flags: 0x0}, - 429: {region: 0x164, script: 0x52, flags: 0x0}, - 430: {region: 0x164, script: 0x5, flags: 0x0}, - 431: {region: 0x48, script: 0x52, flags: 0x0}, - 432: {region: 0x164, script: 0x5, flags: 0x0}, - 433: {region: 0x164, script: 0x52, flags: 0x0}, + 415: {region: 0x99, script: 0xe, flags: 0x0}, + 416: {region: 0x165, script: 0x55, flags: 0x0}, + 417: {region: 0x4e, script: 0x55, flags: 0x0}, + 418: {region: 0x99, script: 0x31, flags: 0x0}, + 419: {region: 0x41, script: 0x55, flags: 0x0}, + 420: {region: 0x54, script: 0x55, flags: 0x0}, + 421: {region: 0x165, script: 0x55, flags: 0x0}, + 422: {region: 0x80, script: 0x55, flags: 0x0}, + 423: {region: 0x165, script: 0x55, flags: 0x0}, + 424: {region: 0x165, script: 0x55, flags: 0x0}, + 425: {region: 0xa4, script: 0x55, flags: 0x0}, + 426: {region: 0x98, script: 0x55, flags: 0x0}, + 427: {region: 0x165, script: 0x55, flags: 0x0}, + 428: {region: 0xdb, script: 0x20, flags: 0x0}, + 429: {region: 0x165, script: 0x55, flags: 0x0}, + 430: {region: 0x165, script: 0x5, flags: 0x0}, + 431: {region: 0x49, script: 0x55, flags: 0x0}, + 432: {region: 0x165, script: 0x5, flags: 0x0}, + 433: {region: 0x165, script: 0x55, flags: 0x0}, 434: {region: 0x10, script: 0x3, flags: 0x1}, - 435: {region: 0x164, script: 0x52, flags: 0x0}, - 436: {region: 0x52, script: 0x34, flags: 0x0}, - 437: {region: 0x164, script: 0x52, flags: 0x0}, - 438: {region: 0x134, script: 0x52, flags: 0x0}, - 439: {region: 0x23, script: 0x5, flags: 0x0}, - 440: {region: 0x164, script: 0x52, flags: 0x0}, - 441: {region: 0x164, script: 0x27, flags: 0x0}, - 442: {region: 0x96, script: 0x37, flags: 0x0}, - 443: {region: 0x164, script: 0x52, flags: 0x0}, - 444: {region: 0x98, script: 0x20, flags: 0x0}, - 445: {region: 0x164, script: 0x52, flags: 0x0}, - 446: {region: 0x72, script: 0x52, flags: 0x0}, - 447: {region: 0x164, script: 0x52, flags: 0x0}, - 448: {region: 0x164, script: 0x52, flags: 0x0}, - 449: {region: 0xe6, script: 0x52, flags: 0x0}, - 450: {region: 0x164, script: 0x52, flags: 0x0}, - 451: {region: 0x12a, script: 0x39, flags: 0x0}, - 452: {region: 0x52, script: 0x81, flags: 0x0}, - 453: {region: 0x164, script: 0x52, flags: 0x0}, - 454: {region: 0xe7, script: 0x5, flags: 0x0}, - 455: {region: 0x98, script: 0x20, flags: 0x0}, - 456: {region: 0xae, script: 0x3a, flags: 0x0}, - 457: {region: 0xe6, script: 0x52, flags: 0x0}, - 458: {region: 0xe7, script: 0x5, flags: 0x0}, - 459: {region: 0xe5, script: 0x52, flags: 0x0}, - 460: {region: 0x98, script: 0x20, flags: 0x0}, - 461: {region: 0x98, script: 0x20, flags: 0x0}, - 462: {region: 0x164, script: 0x52, flags: 0x0}, - 463: {region: 0x8f, script: 0x52, flags: 0x0}, - 464: {region: 0x5f, script: 0x52, flags: 0x0}, - 465: {region: 0x52, script: 0x34, flags: 0x0}, - 466: {region: 0x90, script: 0x52, flags: 0x0}, - 467: {region: 0x91, script: 0x52, flags: 0x0}, - 468: {region: 0x164, script: 0x52, flags: 0x0}, - 469: {region: 0x27, script: 0x8, flags: 0x0}, - 470: {region: 0xd1, script: 0x52, flags: 0x0}, - 471: {region: 0x77, script: 0x52, flags: 0x0}, - 472: {region: 0x164, script: 0x52, flags: 0x0}, - 473: {region: 0x164, script: 0x52, flags: 0x0}, - 474: {region: 0xcf, script: 0x52, flags: 0x0}, - 475: {region: 0xd5, script: 0x52, flags: 0x0}, - 476: {region: 0x164, script: 0x52, flags: 0x0}, - 477: {region: 0x164, script: 0x52, flags: 0x0}, - 478: {region: 0x164, script: 0x52, flags: 0x0}, - 479: {region: 0x94, script: 0x52, flags: 0x0}, - 480: {region: 0x164, script: 0x52, flags: 0x0}, - 481: {region: 0x164, script: 0x52, flags: 0x0}, - 482: {region: 0x164, script: 0x52, flags: 0x0}, - 484: {region: 0x121, script: 0x52, flags: 0x0}, - 485: {region: 0xd5, script: 0x52, flags: 0x0}, - 486: {region: 0x164, script: 0x52, flags: 0x0}, - 487: {region: 0x164, script: 0x52, flags: 0x0}, - 488: {region: 0x52, script: 0xdf, flags: 0x0}, - 489: {region: 0x164, script: 0x52, flags: 0x0}, - 490: {region: 0x134, script: 0x52, flags: 0x0}, - 491: {region: 0x164, script: 0x52, flags: 0x0}, - 492: {region: 0x48, script: 0x52, flags: 0x0}, - 493: {region: 0x164, script: 0x52, flags: 0x0}, - 494: {region: 0x164, script: 0x52, flags: 0x0}, - 495: {region: 0xe6, script: 0x52, flags: 0x0}, - 496: {region: 0x164, script: 0x52, flags: 0x0}, - 497: {region: 0x94, script: 0x52, flags: 0x0}, - 498: {region: 0x105, script: 0x1e, flags: 0x0}, - 500: {region: 0x164, script: 0x52, flags: 0x0}, - 501: {region: 0x164, script: 0x52, flags: 0x0}, - 502: {region: 0x9c, script: 0x52, flags: 0x0}, - 503: {region: 0x9d, script: 0x52, flags: 0x0}, - 504: {region: 0x48, script: 0x17, flags: 0x0}, - 505: {region: 0x96, script: 0x37, flags: 0x0}, - 506: {region: 0x164, script: 0x52, flags: 0x0}, - 507: {region: 0x164, script: 0x52, flags: 0x0}, - 508: {region: 0x105, script: 0x52, flags: 0x0}, - 509: {region: 0x164, script: 0x52, flags: 0x0}, - 510: {region: 0xa1, script: 0x41, flags: 0x0}, - 511: {region: 0x164, script: 0x52, flags: 0x0}, - 512: {region: 0x9f, script: 0x52, flags: 0x0}, - 514: {region: 0x164, script: 0x52, flags: 0x0}, - 515: {region: 0x164, script: 0x52, flags: 0x0}, - 516: {region: 0x164, script: 0x52, flags: 0x0}, - 517: {region: 0x51, script: 0x52, flags: 0x0}, - 518: {region: 0x12f, script: 0x37, flags: 0x0}, - 519: {region: 0x164, script: 0x52, flags: 0x0}, - 520: {region: 0x12e, script: 0x52, flags: 0x0}, - 521: {region: 0xda, script: 0x20, flags: 0x0}, - 522: {region: 0x164, script: 0x52, flags: 0x0}, - 523: {region: 0x62, script: 0x52, flags: 0x0}, - 524: {region: 0x94, script: 0x52, flags: 0x0}, - 525: {region: 0x94, script: 0x52, flags: 0x0}, - 526: {region: 0x7c, script: 0x29, flags: 0x0}, - 527: {region: 0x136, script: 0x1e, flags: 0x0}, - 528: {region: 0x66, script: 0x52, flags: 0x0}, - 529: {region: 0xc3, script: 0x52, flags: 0x0}, - 530: {region: 0x164, script: 0x52, flags: 0x0}, - 531: {region: 0x164, script: 0x52, flags: 0x0}, - 532: {region: 0xd5, script: 0x52, flags: 0x0}, - 533: {region: 0xa3, script: 0x52, flags: 0x0}, - 534: {region: 0xc2, script: 0x52, flags: 0x0}, - 535: {region: 0x105, script: 0x1e, flags: 0x0}, - 536: {region: 0x164, script: 0x52, flags: 0x0}, - 537: {region: 0x164, script: 0x52, flags: 0x0}, - 538: {region: 0x164, script: 0x52, flags: 0x0}, - 539: {region: 0x164, script: 0x52, flags: 0x0}, - 540: {region: 0xd3, script: 0x5, flags: 0x0}, - 541: {region: 0xd5, script: 0x52, flags: 0x0}, - 542: {region: 0x163, script: 0x52, flags: 0x0}, - 543: {region: 0x164, script: 0x52, flags: 0x0}, - 544: {region: 0x164, script: 0x52, flags: 0x0}, - 545: {region: 0x12e, script: 0x52, flags: 0x0}, - 546: {region: 0x121, script: 0x5, flags: 0x0}, - 547: {region: 0x164, script: 0x52, flags: 0x0}, - 548: {region: 0x122, script: 0xd5, flags: 0x0}, - 549: {region: 0x59, script: 0x52, flags: 0x0}, - 550: {region: 0x51, script: 0x52, flags: 0x0}, - 551: {region: 0x164, script: 0x52, flags: 0x0}, - 552: {region: 0x4e, script: 0x52, flags: 0x0}, - 553: {region: 0x98, script: 0x20, flags: 0x0}, - 554: {region: 0x98, script: 0x20, flags: 0x0}, - 555: {region: 0x4a, script: 0x52, flags: 0x0}, - 556: {region: 0x94, script: 0x52, flags: 0x0}, - 557: {region: 0x164, script: 0x52, flags: 0x0}, - 558: {region: 0x40, script: 0x52, flags: 0x0}, - 559: {region: 0x98, script: 0x52, flags: 0x0}, - 560: {region: 0x52, script: 0xcc, flags: 0x0}, - 561: {region: 0x98, script: 0x20, flags: 0x0}, - 562: {region: 0xc2, script: 0x52, flags: 0x0}, - 563: {region: 0x164, script: 0x52, flags: 0x0}, - 564: {region: 0x98, script: 0x6b, flags: 0x0}, - 565: {region: 0xe7, script: 0x5, flags: 0x0}, - 566: {region: 0x164, script: 0x52, flags: 0x0}, - 567: {region: 0xa3, script: 0x52, flags: 0x0}, - 568: {region: 0x164, script: 0x52, flags: 0x0}, - 569: {region: 0x12a, script: 0x52, flags: 0x0}, - 570: {region: 0x164, script: 0x52, flags: 0x0}, - 571: {region: 0xd1, script: 0x52, flags: 0x0}, - 572: {region: 0x164, script: 0x52, flags: 0x0}, - 573: {region: 0xae, script: 0x4f, flags: 0x0}, - 574: {region: 0x164, script: 0x52, flags: 0x0}, - 575: {region: 0x164, script: 0x52, flags: 0x0}, + 435: {region: 0x165, script: 0x55, flags: 0x0}, + 436: {region: 0x53, script: 0x37, flags: 0x0}, + 437: {region: 0x165, script: 0x55, flags: 0x0}, + 438: {region: 0x135, script: 0x55, flags: 0x0}, + 439: {region: 0x24, script: 0x5, flags: 0x0}, + 440: {region: 0x165, script: 0x55, flags: 0x0}, + 441: {region: 0x165, script: 0x28, flags: 0x0}, + 442: {region: 0x97, script: 0x3a, flags: 0x0}, + 443: {region: 0x165, script: 0x55, flags: 0x0}, + 444: {region: 0x99, script: 0x20, flags: 0x0}, + 445: {region: 0x165, script: 0x55, flags: 0x0}, + 446: {region: 0x73, script: 0x55, flags: 0x0}, + 447: {region: 0x165, script: 0x55, flags: 0x0}, + 448: {region: 0x165, script: 0x55, flags: 0x0}, + 449: {region: 0xe7, script: 0x55, flags: 0x0}, + 450: {region: 0x165, script: 0x55, flags: 0x0}, + 451: {region: 0x12b, script: 0x3c, flags: 0x0}, + 452: {region: 0x53, script: 0x86, flags: 0x0}, + 453: {region: 0x165, script: 0x55, flags: 0x0}, + 454: {region: 0xe8, script: 0x5, flags: 0x0}, + 455: {region: 0x99, script: 0x20, flags: 0x0}, + 456: {region: 0xaf, script: 0x3d, flags: 0x0}, + 457: {region: 0xe7, script: 0x55, flags: 0x0}, + 458: {region: 0xe8, script: 0x5, flags: 0x0}, + 459: {region: 0xe6, script: 0x55, flags: 0x0}, + 460: {region: 0x99, script: 0x20, flags: 0x0}, + 461: {region: 0x99, script: 0x20, flags: 0x0}, + 462: {region: 0x165, script: 0x55, flags: 0x0}, + 463: {region: 0x90, script: 0x55, flags: 0x0}, + 464: {region: 0x60, script: 0x55, flags: 0x0}, + 465: {region: 0x53, script: 0x37, flags: 0x0}, + 466: {region: 0x91, script: 0x55, flags: 0x0}, + 467: {region: 0x92, script: 0x55, flags: 0x0}, + 468: {region: 0x165, script: 0x55, flags: 0x0}, + 469: {region: 0x28, script: 0x8, flags: 0x0}, + 470: {region: 0xd2, script: 0x55, flags: 0x0}, + 471: {region: 0x78, script: 0x55, flags: 0x0}, + 472: {region: 0x165, script: 0x55, flags: 0x0}, + 473: {region: 0x165, script: 0x55, flags: 0x0}, + 474: {region: 0xd0, script: 0x55, flags: 0x0}, + 475: {region: 0xd6, script: 0x55, flags: 0x0}, + 476: {region: 0x165, script: 0x55, flags: 0x0}, + 477: {region: 0x165, script: 0x55, flags: 0x0}, + 478: {region: 0x165, script: 0x55, flags: 0x0}, + 479: {region: 0x95, script: 0x55, flags: 0x0}, + 480: {region: 0x165, script: 0x55, flags: 0x0}, + 481: {region: 0x165, script: 0x55, flags: 0x0}, + 482: {region: 0x165, script: 0x55, flags: 0x0}, + 484: {region: 0x122, script: 0x55, flags: 0x0}, + 485: {region: 0xd6, script: 0x55, flags: 0x0}, + 486: {region: 0x165, script: 0x55, flags: 0x0}, + 487: {region: 0x165, script: 0x55, flags: 0x0}, + 488: {region: 0x53, script: 0xe5, flags: 0x0}, + 489: {region: 0x165, script: 0x55, flags: 0x0}, + 490: {region: 0x135, script: 0x55, flags: 0x0}, + 491: {region: 0x165, script: 0x55, flags: 0x0}, + 492: {region: 0x49, script: 0x55, flags: 0x0}, + 493: {region: 0x165, script: 0x55, flags: 0x0}, + 494: {region: 0x165, script: 0x55, flags: 0x0}, + 495: {region: 0xe7, script: 0x55, flags: 0x0}, + 496: {region: 0x165, script: 0x55, flags: 0x0}, + 497: {region: 0x95, script: 0x55, flags: 0x0}, + 498: {region: 0x106, script: 0x1e, flags: 0x0}, + 500: {region: 0x165, script: 0x55, flags: 0x0}, + 501: {region: 0x165, script: 0x55, flags: 0x0}, + 502: {region: 0x9d, script: 0x55, flags: 0x0}, + 503: {region: 0x9e, script: 0x55, flags: 0x0}, + 504: {region: 0x49, script: 0x17, flags: 0x0}, + 505: {region: 0x97, script: 0x3a, flags: 0x0}, + 506: {region: 0x165, script: 0x55, flags: 0x0}, + 507: {region: 0x165, script: 0x55, flags: 0x0}, + 508: {region: 0x106, script: 0x55, flags: 0x0}, + 509: {region: 0x165, script: 0x55, flags: 0x0}, + 510: {region: 0xa2, script: 0x44, flags: 0x0}, + 511: {region: 0x165, script: 0x55, flags: 0x0}, + 512: {region: 0xa0, script: 0x55, flags: 0x0}, + 514: {region: 0x165, script: 0x55, flags: 0x0}, + 515: {region: 0x165, script: 0x55, flags: 0x0}, + 516: {region: 0x165, script: 0x55, flags: 0x0}, + 517: {region: 0x52, script: 0x55, flags: 0x0}, + 518: {region: 0x130, script: 0x3a, flags: 0x0}, + 519: {region: 0x165, script: 0x55, flags: 0x0}, + 520: {region: 0x12f, script: 0x55, flags: 0x0}, + 521: {region: 0xdb, script: 0x20, flags: 0x0}, + 522: {region: 0x165, script: 0x55, flags: 0x0}, + 523: {region: 0x63, script: 0x55, flags: 0x0}, + 524: {region: 0x95, script: 0x55, flags: 0x0}, + 525: {region: 0x95, script: 0x55, flags: 0x0}, + 526: {region: 0x7d, script: 0x2a, flags: 0x0}, + 527: {region: 0x137, script: 0x1e, flags: 0x0}, + 528: {region: 0x67, script: 0x55, flags: 0x0}, + 529: {region: 0xc4, script: 0x55, flags: 0x0}, + 530: {region: 0x165, script: 0x55, flags: 0x0}, + 531: {region: 0x165, script: 0x55, flags: 0x0}, + 532: {region: 0xd6, script: 0x55, flags: 0x0}, + 533: {region: 0xa4, script: 0x55, flags: 0x0}, + 534: {region: 0xc3, script: 0x55, flags: 0x0}, + 535: {region: 0x106, script: 0x1e, flags: 0x0}, + 536: {region: 0x165, script: 0x55, flags: 0x0}, + 537: {region: 0x165, script: 0x55, flags: 0x0}, + 538: {region: 0x165, script: 0x55, flags: 0x0}, + 539: {region: 0x165, script: 0x55, flags: 0x0}, + 540: {region: 0xd4, script: 0x5, flags: 0x0}, + 541: {region: 0xd6, script: 0x55, flags: 0x0}, + 542: {region: 0x164, script: 0x55, flags: 0x0}, + 543: {region: 0x165, script: 0x55, flags: 0x0}, + 544: {region: 0x165, script: 0x55, flags: 0x0}, + 545: {region: 0x12f, script: 0x55, flags: 0x0}, + 546: {region: 0x122, script: 0x5, flags: 0x0}, + 547: {region: 0x165, script: 0x55, flags: 0x0}, + 548: {region: 0x123, script: 0xdb, flags: 0x0}, + 549: {region: 0x5a, script: 0x55, flags: 0x0}, + 550: {region: 0x52, script: 0x55, flags: 0x0}, + 551: {region: 0x165, script: 0x55, flags: 0x0}, + 552: {region: 0x4f, script: 0x55, flags: 0x0}, + 553: {region: 0x99, script: 0x20, flags: 0x0}, + 554: {region: 0x99, script: 0x20, flags: 0x0}, + 555: {region: 0x4b, script: 0x55, flags: 0x0}, + 556: {region: 0x95, script: 0x55, flags: 0x0}, + 557: {region: 0x165, script: 0x55, flags: 0x0}, + 558: {region: 0x41, script: 0x55, flags: 0x0}, + 559: {region: 0x99, script: 0x55, flags: 0x0}, + 560: {region: 0x53, script: 0xd2, flags: 0x0}, + 561: {region: 0x99, script: 0x20, flags: 0x0}, + 562: {region: 0xc3, script: 0x55, flags: 0x0}, + 563: {region: 0x165, script: 0x55, flags: 0x0}, + 564: {region: 0x99, script: 0x70, flags: 0x0}, + 565: {region: 0xe8, script: 0x5, flags: 0x0}, + 566: {region: 0x165, script: 0x55, flags: 0x0}, + 567: {region: 0xa4, script: 0x55, flags: 0x0}, + 568: {region: 0x165, script: 0x55, flags: 0x0}, + 569: {region: 0x12b, script: 0x55, flags: 0x0}, + 570: {region: 0x165, script: 0x55, flags: 0x0}, + 571: {region: 0xd2, script: 0x55, flags: 0x0}, + 572: {region: 0x165, script: 0x55, flags: 0x0}, + 573: {region: 0xaf, script: 0x52, flags: 0x0}, + 574: {region: 0x165, script: 0x55, flags: 0x0}, + 575: {region: 0x165, script: 0x55, flags: 0x0}, 576: {region: 0x13, script: 0x6, flags: 0x1}, - 577: {region: 0x164, script: 0x52, flags: 0x0}, - 578: {region: 0x51, script: 0x52, flags: 0x0}, - 579: {region: 0x81, script: 0x52, flags: 0x0}, - 580: {region: 0xa3, script: 0x52, flags: 0x0}, - 581: {region: 0x164, script: 0x52, flags: 0x0}, - 582: {region: 0x164, script: 0x52, flags: 0x0}, - 583: {region: 0x164, script: 0x52, flags: 0x0}, - 584: {region: 0xa5, script: 0x46, flags: 0x0}, - 585: {region: 0x29, script: 0x52, flags: 0x0}, - 586: {region: 0x164, script: 0x52, flags: 0x0}, - 587: {region: 0x164, script: 0x52, flags: 0x0}, - 588: {region: 0x164, script: 0x52, flags: 0x0}, - 589: {region: 0x164, script: 0x52, flags: 0x0}, - 590: {region: 0x164, script: 0x52, flags: 0x0}, - 591: {region: 0x98, script: 0x4a, flags: 0x0}, - 592: {region: 0x113, script: 0x52, flags: 0x0}, - 593: {region: 0x164, script: 0x52, flags: 0x0}, - 594: {region: 0xaa, script: 0x4b, flags: 0x0}, - 595: {region: 0x105, script: 0x1e, flags: 0x0}, - 596: {region: 0x98, script: 0x20, flags: 0x0}, - 597: {region: 0x164, script: 0x52, flags: 0x0}, - 598: {region: 0x74, script: 0x52, flags: 0x0}, - 599: {region: 0x164, script: 0x52, flags: 0x0}, - 600: {region: 0xb3, script: 0x52, flags: 0x0}, - 601: {region: 0x164, script: 0x52, flags: 0x0}, - 602: {region: 0x164, script: 0x52, flags: 0x0}, - 603: {region: 0x164, script: 0x52, flags: 0x0}, - 604: {region: 0x164, script: 0x52, flags: 0x0}, - 605: {region: 0x164, script: 0x52, flags: 0x0}, - 606: {region: 0x164, script: 0x52, flags: 0x0}, - 607: {region: 0x164, script: 0x52, flags: 0x0}, - 608: {region: 0x164, script: 0x27, flags: 0x0}, - 610: {region: 0x105, script: 0x1e, flags: 0x0}, - 611: {region: 0x111, script: 0x52, flags: 0x0}, - 612: {region: 0xe6, script: 0x52, flags: 0x0}, - 613: {region: 0x105, script: 0x52, flags: 0x0}, - 614: {region: 0x164, script: 0x52, flags: 0x0}, - 615: {region: 0x98, script: 0x20, flags: 0x0}, - 616: {region: 0x98, script: 0x5, flags: 0x0}, - 617: {region: 0x12e, script: 0x52, flags: 0x0}, - 618: {region: 0x164, script: 0x52, flags: 0x0}, - 619: {region: 0x51, script: 0x52, flags: 0x0}, - 620: {region: 0x5f, script: 0x52, flags: 0x0}, - 621: {region: 0x164, script: 0x52, flags: 0x0}, - 622: {region: 0x164, script: 0x52, flags: 0x0}, - 623: {region: 0x164, script: 0x27, flags: 0x0}, - 624: {region: 0x164, script: 0x52, flags: 0x0}, - 625: {region: 0x164, script: 0x52, flags: 0x0}, + 577: {region: 0x165, script: 0x55, flags: 0x0}, + 578: {region: 0x52, script: 0x55, flags: 0x0}, + 579: {region: 0x82, script: 0x55, flags: 0x0}, + 580: {region: 0xa4, script: 0x55, flags: 0x0}, + 581: {region: 0x165, script: 0x55, flags: 0x0}, + 582: {region: 0x165, script: 0x55, flags: 0x0}, + 583: {region: 0x165, script: 0x55, flags: 0x0}, + 584: {region: 0xa6, script: 0x49, flags: 0x0}, + 585: {region: 0x2a, script: 0x55, flags: 0x0}, + 586: {region: 0x165, script: 0x55, flags: 0x0}, + 587: {region: 0x165, script: 0x55, flags: 0x0}, + 588: {region: 0x165, script: 0x55, flags: 0x0}, + 589: {region: 0x165, script: 0x55, flags: 0x0}, + 590: {region: 0x165, script: 0x55, flags: 0x0}, + 591: {region: 0x99, script: 0x4d, flags: 0x0}, + 592: {region: 0x114, script: 0x55, flags: 0x0}, + 593: {region: 0x165, script: 0x55, flags: 0x0}, + 594: {region: 0xab, script: 0x4e, flags: 0x0}, + 595: {region: 0x106, script: 0x1e, flags: 0x0}, + 596: {region: 0x99, script: 0x20, flags: 0x0}, + 597: {region: 0x165, script: 0x55, flags: 0x0}, + 598: {region: 0x75, script: 0x55, flags: 0x0}, + 599: {region: 0x165, script: 0x55, flags: 0x0}, + 600: {region: 0xb4, script: 0x55, flags: 0x0}, + 601: {region: 0x165, script: 0x55, flags: 0x0}, + 602: {region: 0x165, script: 0x55, flags: 0x0}, + 603: {region: 0x165, script: 0x55, flags: 0x0}, + 604: {region: 0x165, script: 0x55, flags: 0x0}, + 605: {region: 0x165, script: 0x55, flags: 0x0}, + 606: {region: 0x165, script: 0x55, flags: 0x0}, + 607: {region: 0x165, script: 0x55, flags: 0x0}, + 608: {region: 0x165, script: 0x28, flags: 0x0}, + 610: {region: 0x106, script: 0x1e, flags: 0x0}, + 611: {region: 0x112, script: 0x55, flags: 0x0}, + 612: {region: 0xe7, script: 0x55, flags: 0x0}, + 613: {region: 0x106, script: 0x55, flags: 0x0}, + 614: {region: 0x165, script: 0x55, flags: 0x0}, + 615: {region: 0x99, script: 0x20, flags: 0x0}, + 616: {region: 0x99, script: 0x5, flags: 0x0}, + 617: {region: 0x12f, script: 0x55, flags: 0x0}, + 618: {region: 0x165, script: 0x55, flags: 0x0}, + 619: {region: 0x52, script: 0x55, flags: 0x0}, + 620: {region: 0x60, script: 0x55, flags: 0x0}, + 621: {region: 0x165, script: 0x55, flags: 0x0}, + 622: {region: 0x165, script: 0x55, flags: 0x0}, + 623: {region: 0x165, script: 0x28, flags: 0x0}, + 624: {region: 0x165, script: 0x55, flags: 0x0}, + 625: {region: 0x165, script: 0x55, flags: 0x0}, 626: {region: 0x19, script: 0x3, flags: 0x1}, - 627: {region: 0x164, script: 0x52, flags: 0x0}, - 628: {region: 0x164, script: 0x52, flags: 0x0}, - 629: {region: 0x164, script: 0x52, flags: 0x0}, - 630: {region: 0x164, script: 0x52, flags: 0x0}, - 631: {region: 0x105, script: 0x1e, flags: 0x0}, - 632: {region: 0x164, script: 0x52, flags: 0x0}, - 633: {region: 0x164, script: 0x52, flags: 0x0}, - 634: {region: 0x164, script: 0x52, flags: 0x0}, - 635: {region: 0x105, script: 0x1e, flags: 0x0}, - 636: {region: 0x164, script: 0x52, flags: 0x0}, - 637: {region: 0x94, script: 0x52, flags: 0x0}, - 638: {region: 0xe7, script: 0x5, flags: 0x0}, - 639: {region: 0x7a, script: 0x52, flags: 0x0}, - 640: {region: 0x164, script: 0x52, flags: 0x0}, - 641: {region: 0x164, script: 0x52, flags: 0x0}, - 642: {region: 0x164, script: 0x52, flags: 0x0}, - 643: {region: 0x164, script: 0x27, flags: 0x0}, - 644: {region: 0x122, script: 0xd5, flags: 0x0}, - 645: {region: 0xe7, script: 0x5, flags: 0x0}, - 646: {region: 0x164, script: 0x52, flags: 0x0}, - 647: {region: 0x164, script: 0x52, flags: 0x0}, + 627: {region: 0x165, script: 0x55, flags: 0x0}, + 628: {region: 0x165, script: 0x55, flags: 0x0}, + 629: {region: 0x165, script: 0x55, flags: 0x0}, + 630: {region: 0x165, script: 0x55, flags: 0x0}, + 631: {region: 0x106, script: 0x1e, flags: 0x0}, + 632: {region: 0x165, script: 0x55, flags: 0x0}, + 633: {region: 0x165, script: 0x55, flags: 0x0}, + 634: {region: 0x165, script: 0x55, flags: 0x0}, + 635: {region: 0x106, script: 0x1e, flags: 0x0}, + 636: {region: 0x165, script: 0x55, flags: 0x0}, + 637: {region: 0x95, script: 0x55, flags: 0x0}, + 638: {region: 0xe8, script: 0x5, flags: 0x0}, + 639: {region: 0x7b, script: 0x55, flags: 0x0}, + 640: {region: 0x165, script: 0x55, flags: 0x0}, + 641: {region: 0x165, script: 0x55, flags: 0x0}, + 642: {region: 0x165, script: 0x55, flags: 0x0}, + 643: {region: 0x165, script: 0x28, flags: 0x0}, + 644: {region: 0x123, script: 0xdb, flags: 0x0}, + 645: {region: 0xe8, script: 0x5, flags: 0x0}, + 646: {region: 0x165, script: 0x55, flags: 0x0}, + 647: {region: 0x165, script: 0x55, flags: 0x0}, 648: {region: 0x1c, script: 0x5, flags: 0x1}, - 649: {region: 0x164, script: 0x52, flags: 0x0}, - 650: {region: 0x164, script: 0x52, flags: 0x0}, - 651: {region: 0x164, script: 0x52, flags: 0x0}, - 652: {region: 0x137, script: 0x52, flags: 0x0}, - 653: {region: 0x86, script: 0x56, flags: 0x0}, - 654: {region: 0x96, script: 0x37, flags: 0x0}, - 655: {region: 0x12e, script: 0x52, flags: 0x0}, - 656: {region: 0xe7, script: 0x5, flags: 0x0}, - 657: {region: 0x130, script: 0x52, flags: 0x0}, - 658: {region: 0x164, script: 0x52, flags: 0x0}, - 659: {region: 0xb6, script: 0x52, flags: 0x0}, - 660: {region: 0x105, script: 0x1e, flags: 0x0}, - 661: {region: 0x164, script: 0x52, flags: 0x0}, - 662: {region: 0x94, script: 0x52, flags: 0x0}, - 663: {region: 0x164, script: 0x52, flags: 0x0}, - 664: {region: 0x52, script: 0xd5, flags: 0x0}, - 665: {region: 0x164, script: 0x52, flags: 0x0}, - 666: {region: 0x164, script: 0x52, flags: 0x0}, - 667: {region: 0x164, script: 0x52, flags: 0x0}, - 668: {region: 0x164, script: 0x52, flags: 0x0}, - 669: {region: 0x98, script: 0x54, flags: 0x0}, - 670: {region: 0x164, script: 0x52, flags: 0x0}, - 671: {region: 0x164, script: 0x52, flags: 0x0}, - 672: {region: 0x105, script: 0x1e, flags: 0x0}, - 673: {region: 0x130, script: 0x52, flags: 0x0}, - 674: {region: 0x164, script: 0x52, flags: 0x0}, - 675: {region: 0xd8, script: 0x52, flags: 0x0}, - 676: {region: 0x164, script: 0x52, flags: 0x0}, - 677: {region: 0x164, script: 0x52, flags: 0x0}, + 649: {region: 0x165, script: 0x55, flags: 0x0}, + 650: {region: 0x165, script: 0x55, flags: 0x0}, + 651: {region: 0x165, script: 0x55, flags: 0x0}, + 652: {region: 0x138, script: 0x55, flags: 0x0}, + 653: {region: 0x87, script: 0x59, flags: 0x0}, + 654: {region: 0x97, script: 0x3a, flags: 0x0}, + 655: {region: 0x12f, script: 0x55, flags: 0x0}, + 656: {region: 0xe8, script: 0x5, flags: 0x0}, + 657: {region: 0x131, script: 0x55, flags: 0x0}, + 658: {region: 0x165, script: 0x55, flags: 0x0}, + 659: {region: 0xb7, script: 0x55, flags: 0x0}, + 660: {region: 0x106, script: 0x1e, flags: 0x0}, + 661: {region: 0x165, script: 0x55, flags: 0x0}, + 662: {region: 0x95, script: 0x55, flags: 0x0}, + 663: {region: 0x165, script: 0x55, flags: 0x0}, + 664: {region: 0x53, script: 0xdb, flags: 0x0}, + 665: {region: 0x165, script: 0x55, flags: 0x0}, + 666: {region: 0x165, script: 0x55, flags: 0x0}, + 667: {region: 0x165, script: 0x55, flags: 0x0}, + 668: {region: 0x165, script: 0x55, flags: 0x0}, + 669: {region: 0x99, script: 0x57, flags: 0x0}, + 670: {region: 0x165, script: 0x55, flags: 0x0}, + 671: {region: 0x165, script: 0x55, flags: 0x0}, + 672: {region: 0x106, script: 0x1e, flags: 0x0}, + 673: {region: 0x131, script: 0x55, flags: 0x0}, + 674: {region: 0x165, script: 0x55, flags: 0x0}, + 675: {region: 0xd9, script: 0x55, flags: 0x0}, + 676: {region: 0x165, script: 0x55, flags: 0x0}, + 677: {region: 0x165, script: 0x55, flags: 0x0}, 678: {region: 0x21, script: 0x2, flags: 0x1}, - 679: {region: 0x164, script: 0x52, flags: 0x0}, - 680: {region: 0x164, script: 0x52, flags: 0x0}, - 681: {region: 0x9d, script: 0x52, flags: 0x0}, - 682: {region: 0x52, script: 0x58, flags: 0x0}, - 683: {region: 0x94, script: 0x52, flags: 0x0}, - 684: {region: 0x9b, script: 0x5, flags: 0x0}, - 685: {region: 0x134, script: 0x52, flags: 0x0}, - 686: {region: 0x164, script: 0x52, flags: 0x0}, - 687: {region: 0x164, script: 0x52, flags: 0x0}, - 688: {region: 0x98, script: 0xd0, flags: 0x0}, - 689: {region: 0x9d, script: 0x52, flags: 0x0}, - 690: {region: 0x164, script: 0x52, flags: 0x0}, - 691: {region: 0x4a, script: 0x52, flags: 0x0}, - 692: {region: 0x164, script: 0x52, flags: 0x0}, - 693: {region: 0x164, script: 0x52, flags: 0x0}, - 694: {region: 0xae, script: 0x4f, flags: 0x0}, - 695: {region: 0x164, script: 0x52, flags: 0x0}, - 696: {region: 0x164, script: 0x52, flags: 0x0}, - 697: {region: 0x4a, script: 0x52, flags: 0x0}, - 698: {region: 0x164, script: 0x52, flags: 0x0}, - 699: {region: 0x164, script: 0x52, flags: 0x0}, - 700: {region: 0x161, script: 0x52, flags: 0x0}, - 701: {region: 0x9b, script: 0x5, flags: 0x0}, - 702: {region: 0xb5, script: 0x52, flags: 0x0}, - 703: {region: 0xb7, script: 0x52, flags: 0x0}, - 704: {region: 0x4a, script: 0x52, flags: 0x0}, - 705: {region: 0x4a, script: 0x52, flags: 0x0}, - 706: {region: 0xa3, script: 0x52, flags: 0x0}, - 707: {region: 0xa3, script: 0x52, flags: 0x0}, - 708: {region: 0x9b, script: 0x5, flags: 0x0}, - 709: {region: 0xb7, script: 0x52, flags: 0x0}, - 710: {region: 0x122, script: 0xd5, flags: 0x0}, - 711: {region: 0x52, script: 0x34, flags: 0x0}, - 712: {region: 0x12a, script: 0x52, flags: 0x0}, - 713: {region: 0x94, script: 0x52, flags: 0x0}, - 714: {region: 0x51, script: 0x52, flags: 0x0}, - 715: {region: 0x98, script: 0x20, flags: 0x0}, - 716: {region: 0x98, script: 0x20, flags: 0x0}, - 717: {region: 0x94, script: 0x52, flags: 0x0}, + 679: {region: 0x165, script: 0x55, flags: 0x0}, + 680: {region: 0x165, script: 0x55, flags: 0x0}, + 681: {region: 0x9e, script: 0x55, flags: 0x0}, + 682: {region: 0x53, script: 0x5b, flags: 0x0}, + 683: {region: 0x95, script: 0x55, flags: 0x0}, + 684: {region: 0x9c, script: 0x5, flags: 0x0}, + 685: {region: 0x135, script: 0x55, flags: 0x0}, + 686: {region: 0x165, script: 0x55, flags: 0x0}, + 687: {region: 0x165, script: 0x55, flags: 0x0}, + 688: {region: 0x99, script: 0xd6, flags: 0x0}, + 689: {region: 0x9e, script: 0x55, flags: 0x0}, + 690: {region: 0x165, script: 0x55, flags: 0x0}, + 691: {region: 0x4b, script: 0x55, flags: 0x0}, + 692: {region: 0x165, script: 0x55, flags: 0x0}, + 693: {region: 0x165, script: 0x55, flags: 0x0}, + 694: {region: 0xaf, script: 0x52, flags: 0x0}, + 695: {region: 0x165, script: 0x55, flags: 0x0}, + 696: {region: 0x165, script: 0x55, flags: 0x0}, + 697: {region: 0x4b, script: 0x55, flags: 0x0}, + 698: {region: 0x165, script: 0x55, flags: 0x0}, + 699: {region: 0x165, script: 0x55, flags: 0x0}, + 700: {region: 0x162, script: 0x55, flags: 0x0}, + 701: {region: 0x9c, script: 0x5, flags: 0x0}, + 702: {region: 0xb6, script: 0x55, flags: 0x0}, + 703: {region: 0xb8, script: 0x55, flags: 0x0}, + 704: {region: 0x4b, script: 0x55, flags: 0x0}, + 705: {region: 0x4b, script: 0x55, flags: 0x0}, + 706: {region: 0xa4, script: 0x55, flags: 0x0}, + 707: {region: 0xa4, script: 0x55, flags: 0x0}, + 708: {region: 0x9c, script: 0x5, flags: 0x0}, + 709: {region: 0xb8, script: 0x55, flags: 0x0}, + 710: {region: 0x123, script: 0xdb, flags: 0x0}, + 711: {region: 0x53, script: 0x37, flags: 0x0}, + 712: {region: 0x12b, script: 0x55, flags: 0x0}, + 713: {region: 0x95, script: 0x55, flags: 0x0}, + 714: {region: 0x52, script: 0x55, flags: 0x0}, + 715: {region: 0x99, script: 0x20, flags: 0x0}, + 716: {region: 0x99, script: 0x20, flags: 0x0}, + 717: {region: 0x95, script: 0x55, flags: 0x0}, 718: {region: 0x23, script: 0x3, flags: 0x1}, - 719: {region: 0xa3, script: 0x52, flags: 0x0}, - 720: {region: 0x164, script: 0x52, flags: 0x0}, - 721: {region: 0xce, script: 0x52, flags: 0x0}, - 722: {region: 0x164, script: 0x52, flags: 0x0}, - 723: {region: 0x164, script: 0x52, flags: 0x0}, - 724: {region: 0x164, script: 0x52, flags: 0x0}, - 725: {region: 0x164, script: 0x52, flags: 0x0}, - 726: {region: 0x164, script: 0x52, flags: 0x0}, - 727: {region: 0x164, script: 0x52, flags: 0x0}, - 728: {region: 0x164, script: 0x52, flags: 0x0}, - 729: {region: 0x164, script: 0x52, flags: 0x0}, - 730: {region: 0x164, script: 0x52, flags: 0x0}, - 731: {region: 0x164, script: 0x52, flags: 0x0}, - 732: {region: 0x164, script: 0x52, flags: 0x0}, - 733: {region: 0x164, script: 0x5, flags: 0x0}, - 734: {region: 0x105, script: 0x1e, flags: 0x0}, - 735: {region: 0xe6, script: 0x52, flags: 0x0}, - 736: {region: 0x164, script: 0x52, flags: 0x0}, - 737: {region: 0x94, script: 0x52, flags: 0x0}, - 738: {region: 0x164, script: 0x27, flags: 0x0}, - 739: {region: 0x164, script: 0x52, flags: 0x0}, - 740: {region: 0x164, script: 0x52, flags: 0x0}, - 741: {region: 0x164, script: 0x52, flags: 0x0}, - 742: {region: 0x111, script: 0x52, flags: 0x0}, - 743: {region: 0xa3, script: 0x52, flags: 0x0}, - 744: {region: 0x164, script: 0x52, flags: 0x0}, - 745: {region: 0x164, script: 0x52, flags: 0x0}, - 746: {region: 0x122, script: 0x5, flags: 0x0}, - 747: {region: 0xcb, script: 0x52, flags: 0x0}, - 748: {region: 0x164, script: 0x52, flags: 0x0}, - 749: {region: 0x164, script: 0x52, flags: 0x0}, - 750: {region: 0x164, script: 0x52, flags: 0x0}, - 751: {region: 0xbe, script: 0x52, flags: 0x0}, - 752: {region: 0xd0, script: 0x52, flags: 0x0}, - 753: {region: 0x164, script: 0x52, flags: 0x0}, - 754: {region: 0x51, script: 0x52, flags: 0x0}, - 755: {region: 0xda, script: 0x20, flags: 0x0}, - 756: {region: 0x12e, script: 0x52, flags: 0x0}, - 757: {region: 0xbf, script: 0x52, flags: 0x0}, - 758: {region: 0x164, script: 0x52, flags: 0x0}, - 759: {region: 0x164, script: 0x52, flags: 0x0}, - 760: {region: 0xdf, script: 0x52, flags: 0x0}, - 761: {region: 0x164, script: 0x52, flags: 0x0}, - 762: {region: 0x94, script: 0x52, flags: 0x0}, - 763: {region: 0x9a, script: 0x36, flags: 0x0}, - 764: {region: 0x164, script: 0x52, flags: 0x0}, - 765: {region: 0xc1, script: 0x1e, flags: 0x0}, - 766: {region: 0x164, script: 0x5, flags: 0x0}, - 767: {region: 0x164, script: 0x52, flags: 0x0}, - 768: {region: 0x164, script: 0x52, flags: 0x0}, - 769: {region: 0x164, script: 0x52, flags: 0x0}, - 770: {region: 0x98, script: 0x64, flags: 0x0}, - 771: {region: 0x164, script: 0x52, flags: 0x0}, - 772: {region: 0x164, script: 0x52, flags: 0x0}, - 773: {region: 0x10a, script: 0x52, flags: 0x0}, - 774: {region: 0x164, script: 0x52, flags: 0x0}, - 775: {region: 0x164, script: 0x52, flags: 0x0}, - 776: {region: 0x164, script: 0x52, flags: 0x0}, + 719: {region: 0xa4, script: 0x55, flags: 0x0}, + 720: {region: 0x165, script: 0x55, flags: 0x0}, + 721: {region: 0xcf, script: 0x55, flags: 0x0}, + 722: {region: 0x165, script: 0x55, flags: 0x0}, + 723: {region: 0x165, script: 0x55, flags: 0x0}, + 724: {region: 0x165, script: 0x55, flags: 0x0}, + 725: {region: 0x165, script: 0x55, flags: 0x0}, + 726: {region: 0x165, script: 0x55, flags: 0x0}, + 727: {region: 0x165, script: 0x55, flags: 0x0}, + 728: {region: 0x165, script: 0x55, flags: 0x0}, + 729: {region: 0x165, script: 0x55, flags: 0x0}, + 730: {region: 0x165, script: 0x55, flags: 0x0}, + 731: {region: 0x165, script: 0x55, flags: 0x0}, + 732: {region: 0x165, script: 0x55, flags: 0x0}, + 733: {region: 0x165, script: 0x5, flags: 0x0}, + 734: {region: 0x106, script: 0x1e, flags: 0x0}, + 735: {region: 0xe7, script: 0x55, flags: 0x0}, + 736: {region: 0x165, script: 0x55, flags: 0x0}, + 737: {region: 0x95, script: 0x55, flags: 0x0}, + 738: {region: 0x165, script: 0x28, flags: 0x0}, + 739: {region: 0x165, script: 0x55, flags: 0x0}, + 740: {region: 0x165, script: 0x55, flags: 0x0}, + 741: {region: 0x165, script: 0x55, flags: 0x0}, + 742: {region: 0x112, script: 0x55, flags: 0x0}, + 743: {region: 0xa4, script: 0x55, flags: 0x0}, + 744: {region: 0x165, script: 0x55, flags: 0x0}, + 745: {region: 0x165, script: 0x55, flags: 0x0}, + 746: {region: 0x123, script: 0x5, flags: 0x0}, + 747: {region: 0xcc, script: 0x55, flags: 0x0}, + 748: {region: 0x165, script: 0x55, flags: 0x0}, + 749: {region: 0x165, script: 0x55, flags: 0x0}, + 750: {region: 0x165, script: 0x55, flags: 0x0}, + 751: {region: 0xbf, script: 0x55, flags: 0x0}, + 752: {region: 0xd1, script: 0x55, flags: 0x0}, + 753: {region: 0x165, script: 0x55, flags: 0x0}, + 754: {region: 0x52, script: 0x55, flags: 0x0}, + 755: {region: 0xdb, script: 0x20, flags: 0x0}, + 756: {region: 0x12f, script: 0x55, flags: 0x0}, + 757: {region: 0xc0, script: 0x55, flags: 0x0}, + 758: {region: 0x165, script: 0x55, flags: 0x0}, + 759: {region: 0x165, script: 0x55, flags: 0x0}, + 760: {region: 0xe0, script: 0x55, flags: 0x0}, + 761: {region: 0x165, script: 0x55, flags: 0x0}, + 762: {region: 0x95, script: 0x55, flags: 0x0}, + 763: {region: 0x9b, script: 0x39, flags: 0x0}, + 764: {region: 0x165, script: 0x55, flags: 0x0}, + 765: {region: 0xc2, script: 0x1e, flags: 0x0}, + 766: {region: 0x165, script: 0x5, flags: 0x0}, + 767: {region: 0x165, script: 0x55, flags: 0x0}, + 768: {region: 0x165, script: 0x55, flags: 0x0}, + 769: {region: 0x165, script: 0x55, flags: 0x0}, + 770: {region: 0x99, script: 0x69, flags: 0x0}, + 771: {region: 0x165, script: 0x55, flags: 0x0}, + 772: {region: 0x165, script: 0x55, flags: 0x0}, + 773: {region: 0x10b, script: 0x55, flags: 0x0}, + 774: {region: 0x165, script: 0x55, flags: 0x0}, + 775: {region: 0x165, script: 0x55, flags: 0x0}, + 776: {region: 0x165, script: 0x55, flags: 0x0}, 777: {region: 0x26, script: 0x3, flags: 0x1}, - 778: {region: 0x164, script: 0x52, flags: 0x0}, - 779: {region: 0x164, script: 0x52, flags: 0x0}, - 780: {region: 0x98, script: 0xe, flags: 0x0}, - 781: {region: 0xc3, script: 0x6b, flags: 0x0}, - 783: {region: 0x164, script: 0x52, flags: 0x0}, - 784: {region: 0x48, script: 0x52, flags: 0x0}, - 785: {region: 0x48, script: 0x52, flags: 0x0}, - 786: {region: 0x36, script: 0x52, flags: 0x0}, - 787: {region: 0x164, script: 0x52, flags: 0x0}, - 788: {region: 0x164, script: 0x52, flags: 0x0}, - 789: {region: 0x164, script: 0x52, flags: 0x0}, - 790: {region: 0x164, script: 0x52, flags: 0x0}, - 791: {region: 0x164, script: 0x52, flags: 0x0}, - 792: {region: 0x164, script: 0x52, flags: 0x0}, - 793: {region: 0x98, script: 0x20, flags: 0x0}, - 794: {region: 0xda, script: 0x20, flags: 0x0}, - 795: {region: 0x105, script: 0x1e, flags: 0x0}, - 796: {region: 0x34, script: 0x68, flags: 0x0}, + 778: {region: 0x165, script: 0x55, flags: 0x0}, + 779: {region: 0x165, script: 0x55, flags: 0x0}, + 780: {region: 0x99, script: 0xe, flags: 0x0}, + 781: {region: 0xc4, script: 0x70, flags: 0x0}, + 783: {region: 0x165, script: 0x55, flags: 0x0}, + 784: {region: 0x49, script: 0x55, flags: 0x0}, + 785: {region: 0x49, script: 0x55, flags: 0x0}, + 786: {region: 0x37, script: 0x55, flags: 0x0}, + 787: {region: 0x165, script: 0x55, flags: 0x0}, + 788: {region: 0x165, script: 0x55, flags: 0x0}, + 789: {region: 0x165, script: 0x55, flags: 0x0}, + 790: {region: 0x165, script: 0x55, flags: 0x0}, + 791: {region: 0x165, script: 0x55, flags: 0x0}, + 792: {region: 0x165, script: 0x55, flags: 0x0}, + 793: {region: 0x99, script: 0x20, flags: 0x0}, + 794: {region: 0xdb, script: 0x20, flags: 0x0}, + 795: {region: 0x106, script: 0x1e, flags: 0x0}, + 796: {region: 0x35, script: 0x6d, flags: 0x0}, 797: {region: 0x29, script: 0x3, flags: 0x1}, - 798: {region: 0xca, script: 0x52, flags: 0x0}, - 799: {region: 0x164, script: 0x52, flags: 0x0}, - 800: {region: 0x164, script: 0x52, flags: 0x0}, - 801: {region: 0x164, script: 0x52, flags: 0x0}, - 802: {region: 0x98, script: 0x20, flags: 0x0}, - 803: {region: 0x51, script: 0x52, flags: 0x0}, - 805: {region: 0x164, script: 0x52, flags: 0x0}, - 806: {region: 0x134, script: 0x52, flags: 0x0}, - 807: {region: 0x164, script: 0x52, flags: 0x0}, - 808: {region: 0x164, script: 0x52, flags: 0x0}, - 809: {region: 0xe7, script: 0x5, flags: 0x0}, - 810: {region: 0xc2, script: 0x52, flags: 0x0}, - 811: {region: 0x98, script: 0x20, flags: 0x0}, - 812: {region: 0x94, script: 0x52, flags: 0x0}, - 813: {region: 0x163, script: 0x52, flags: 0x0}, - 814: {region: 0x164, script: 0x52, flags: 0x0}, - 815: {region: 0xc3, script: 0x6b, flags: 0x0}, - 816: {region: 0x164, script: 0x52, flags: 0x0}, - 817: {region: 0x164, script: 0x27, flags: 0x0}, - 818: {region: 0x105, script: 0x1e, flags: 0x0}, - 819: {region: 0x164, script: 0x52, flags: 0x0}, - 820: {region: 0x130, script: 0x52, flags: 0x0}, - 821: {region: 0x9b, script: 0x5d, flags: 0x0}, - 822: {region: 0x164, script: 0x52, flags: 0x0}, - 823: {region: 0x164, script: 0x52, flags: 0x0}, - 824: {region: 0x9b, script: 0x5, flags: 0x0}, - 825: {region: 0x164, script: 0x52, flags: 0x0}, - 826: {region: 0x164, script: 0x52, flags: 0x0}, - 827: {region: 0x164, script: 0x52, flags: 0x0}, - 828: {region: 0xdc, script: 0x52, flags: 0x0}, - 829: {region: 0x164, script: 0x52, flags: 0x0}, - 830: {region: 0x164, script: 0x52, flags: 0x0}, - 832: {region: 0x164, script: 0x52, flags: 0x0}, - 833: {region: 0x52, script: 0x34, flags: 0x0}, - 834: {region: 0x9d, script: 0x52, flags: 0x0}, - 835: {region: 0xd1, script: 0x52, flags: 0x0}, - 836: {region: 0x164, script: 0x52, flags: 0x0}, - 837: {region: 0xd9, script: 0x52, flags: 0x0}, - 838: {region: 0x164, script: 0x52, flags: 0x0}, - 839: {region: 0x164, script: 0x52, flags: 0x0}, - 840: {region: 0x164, script: 0x52, flags: 0x0}, - 841: {region: 0xce, script: 0x52, flags: 0x0}, - 842: {region: 0x164, script: 0x52, flags: 0x0}, - 843: {region: 0x164, script: 0x52, flags: 0x0}, - 844: {region: 0x163, script: 0x52, flags: 0x0}, - 845: {region: 0xd0, script: 0x52, flags: 0x0}, - 846: {region: 0x5f, script: 0x52, flags: 0x0}, - 847: {region: 0xda, script: 0x20, flags: 0x0}, - 848: {region: 0x164, script: 0x52, flags: 0x0}, - 849: {region: 0xda, script: 0x20, flags: 0x0}, - 850: {region: 0x164, script: 0x52, flags: 0x0}, - 851: {region: 0x164, script: 0x52, flags: 0x0}, - 852: {region: 0xd1, script: 0x52, flags: 0x0}, - 853: {region: 0x164, script: 0x52, flags: 0x0}, - 854: {region: 0x164, script: 0x52, flags: 0x0}, - 855: {region: 0xd0, script: 0x52, flags: 0x0}, - 856: {region: 0x164, script: 0x52, flags: 0x0}, - 857: {region: 0xce, script: 0x52, flags: 0x0}, - 858: {region: 0xce, script: 0x52, flags: 0x0}, - 859: {region: 0x164, script: 0x52, flags: 0x0}, - 860: {region: 0x164, script: 0x52, flags: 0x0}, - 861: {region: 0x94, script: 0x52, flags: 0x0}, - 862: {region: 0x164, script: 0x52, flags: 0x0}, - 863: {region: 0xde, script: 0x52, flags: 0x0}, - 864: {region: 0x164, script: 0x52, flags: 0x0}, - 865: {region: 0x164, script: 0x52, flags: 0x0}, - 866: {region: 0x98, script: 0x52, flags: 0x0}, - 867: {region: 0x164, script: 0x52, flags: 0x0}, - 868: {region: 0x164, script: 0x52, flags: 0x0}, - 869: {region: 0xd8, script: 0x52, flags: 0x0}, - 870: {region: 0x51, script: 0x52, flags: 0x0}, - 871: {region: 0x164, script: 0x52, flags: 0x0}, - 872: {region: 0xd9, script: 0x52, flags: 0x0}, - 873: {region: 0x164, script: 0x52, flags: 0x0}, - 874: {region: 0x51, script: 0x52, flags: 0x0}, - 875: {region: 0x164, script: 0x52, flags: 0x0}, - 876: {region: 0x164, script: 0x52, flags: 0x0}, - 877: {region: 0xd9, script: 0x52, flags: 0x0}, - 878: {region: 0x122, script: 0x4e, flags: 0x0}, - 879: {region: 0x98, script: 0x20, flags: 0x0}, - 880: {region: 0x10b, script: 0xb7, flags: 0x0}, - 881: {region: 0x164, script: 0x52, flags: 0x0}, - 882: {region: 0x164, script: 0x52, flags: 0x0}, - 883: {region: 0x83, script: 0x70, flags: 0x0}, - 884: {region: 0x160, script: 0x52, flags: 0x0}, - 885: {region: 0x164, script: 0x52, flags: 0x0}, - 886: {region: 0x48, script: 0x17, flags: 0x0}, - 887: {region: 0x164, script: 0x52, flags: 0x0}, - 888: {region: 0x160, script: 0x52, flags: 0x0}, - 889: {region: 0x164, script: 0x52, flags: 0x0}, - 890: {region: 0x164, script: 0x52, flags: 0x0}, - 891: {region: 0x164, script: 0x52, flags: 0x0}, - 892: {region: 0x164, script: 0x52, flags: 0x0}, - 893: {region: 0x164, script: 0x52, flags: 0x0}, - 894: {region: 0x116, script: 0x52, flags: 0x0}, - 895: {region: 0x164, script: 0x52, flags: 0x0}, - 896: {region: 0x164, script: 0x52, flags: 0x0}, - 897: {region: 0x134, script: 0x52, flags: 0x0}, - 898: {region: 0x164, script: 0x52, flags: 0x0}, - 899: {region: 0x52, script: 0x52, flags: 0x0}, - 900: {region: 0x164, script: 0x52, flags: 0x0}, - 901: {region: 0xcd, script: 0x52, flags: 0x0}, - 902: {region: 0x12e, script: 0x52, flags: 0x0}, - 903: {region: 0x130, script: 0x52, flags: 0x0}, - 904: {region: 0x7f, script: 0x52, flags: 0x0}, - 905: {region: 0x77, script: 0x52, flags: 0x0}, - 906: {region: 0x164, script: 0x52, flags: 0x0}, - 908: {region: 0x164, script: 0x52, flags: 0x0}, - 909: {region: 0x164, script: 0x52, flags: 0x0}, - 910: {region: 0x6e, script: 0x52, flags: 0x0}, - 911: {region: 0x164, script: 0x52, flags: 0x0}, - 912: {region: 0x164, script: 0x52, flags: 0x0}, - 913: {region: 0x164, script: 0x52, flags: 0x0}, - 914: {region: 0x164, script: 0x52, flags: 0x0}, - 915: {region: 0x98, script: 0x75, flags: 0x0}, - 916: {region: 0x164, script: 0x52, flags: 0x0}, - 917: {region: 0x164, script: 0x5, flags: 0x0}, - 918: {region: 0x7c, script: 0x1e, flags: 0x0}, - 919: {region: 0x134, script: 0x76, flags: 0x0}, - 920: {region: 0x164, script: 0x5, flags: 0x0}, - 921: {region: 0xc4, script: 0x74, flags: 0x0}, - 922: {region: 0x164, script: 0x52, flags: 0x0}, + 798: {region: 0xcb, script: 0x55, flags: 0x0}, + 799: {region: 0x165, script: 0x55, flags: 0x0}, + 800: {region: 0x165, script: 0x55, flags: 0x0}, + 801: {region: 0x165, script: 0x55, flags: 0x0}, + 802: {region: 0x99, script: 0x20, flags: 0x0}, + 803: {region: 0x52, script: 0x55, flags: 0x0}, + 805: {region: 0x165, script: 0x55, flags: 0x0}, + 806: {region: 0x135, script: 0x55, flags: 0x0}, + 807: {region: 0x165, script: 0x55, flags: 0x0}, + 808: {region: 0x165, script: 0x55, flags: 0x0}, + 809: {region: 0xe8, script: 0x5, flags: 0x0}, + 810: {region: 0xc3, script: 0x55, flags: 0x0}, + 811: {region: 0x99, script: 0x20, flags: 0x0}, + 812: {region: 0x95, script: 0x55, flags: 0x0}, + 813: {region: 0x164, script: 0x55, flags: 0x0}, + 814: {region: 0x165, script: 0x55, flags: 0x0}, + 815: {region: 0xc4, script: 0x70, flags: 0x0}, + 816: {region: 0x165, script: 0x55, flags: 0x0}, + 817: {region: 0x165, script: 0x28, flags: 0x0}, + 818: {region: 0x106, script: 0x1e, flags: 0x0}, + 819: {region: 0x165, script: 0x55, flags: 0x0}, + 820: {region: 0x131, script: 0x55, flags: 0x0}, + 821: {region: 0x9c, script: 0x61, flags: 0x0}, + 822: {region: 0x165, script: 0x55, flags: 0x0}, + 823: {region: 0x165, script: 0x55, flags: 0x0}, + 824: {region: 0x9c, script: 0x5, flags: 0x0}, + 825: {region: 0x165, script: 0x55, flags: 0x0}, + 826: {region: 0x165, script: 0x55, flags: 0x0}, + 827: {region: 0x165, script: 0x55, flags: 0x0}, + 828: {region: 0xdd, script: 0x55, flags: 0x0}, + 829: {region: 0x165, script: 0x55, flags: 0x0}, + 830: {region: 0x165, script: 0x55, flags: 0x0}, + 832: {region: 0x165, script: 0x55, flags: 0x0}, + 833: {region: 0x53, script: 0x37, flags: 0x0}, + 834: {region: 0x9e, script: 0x55, flags: 0x0}, + 835: {region: 0xd2, script: 0x55, flags: 0x0}, + 836: {region: 0x165, script: 0x55, flags: 0x0}, + 837: {region: 0xda, script: 0x55, flags: 0x0}, + 838: {region: 0x165, script: 0x55, flags: 0x0}, + 839: {region: 0x165, script: 0x55, flags: 0x0}, + 840: {region: 0x165, script: 0x55, flags: 0x0}, + 841: {region: 0xcf, script: 0x55, flags: 0x0}, + 842: {region: 0x165, script: 0x55, flags: 0x0}, + 843: {region: 0x165, script: 0x55, flags: 0x0}, + 844: {region: 0x164, script: 0x55, flags: 0x0}, + 845: {region: 0xd1, script: 0x55, flags: 0x0}, + 846: {region: 0x60, script: 0x55, flags: 0x0}, + 847: {region: 0xdb, script: 0x20, flags: 0x0}, + 848: {region: 0x165, script: 0x55, flags: 0x0}, + 849: {region: 0xdb, script: 0x20, flags: 0x0}, + 850: {region: 0x165, script: 0x55, flags: 0x0}, + 851: {region: 0x165, script: 0x55, flags: 0x0}, + 852: {region: 0xd2, script: 0x55, flags: 0x0}, + 853: {region: 0x165, script: 0x55, flags: 0x0}, + 854: {region: 0x165, script: 0x55, flags: 0x0}, + 855: {region: 0xd1, script: 0x55, flags: 0x0}, + 856: {region: 0x165, script: 0x55, flags: 0x0}, + 857: {region: 0xcf, script: 0x55, flags: 0x0}, + 858: {region: 0xcf, script: 0x55, flags: 0x0}, + 859: {region: 0x165, script: 0x55, flags: 0x0}, + 860: {region: 0x165, script: 0x55, flags: 0x0}, + 861: {region: 0x95, script: 0x55, flags: 0x0}, + 862: {region: 0x165, script: 0x55, flags: 0x0}, + 863: {region: 0xdf, script: 0x55, flags: 0x0}, + 864: {region: 0x165, script: 0x55, flags: 0x0}, + 865: {region: 0x165, script: 0x55, flags: 0x0}, + 866: {region: 0x99, script: 0x55, flags: 0x0}, + 867: {region: 0x165, script: 0x55, flags: 0x0}, + 868: {region: 0x165, script: 0x55, flags: 0x0}, + 869: {region: 0xd9, script: 0x55, flags: 0x0}, + 870: {region: 0x52, script: 0x55, flags: 0x0}, + 871: {region: 0x165, script: 0x55, flags: 0x0}, + 872: {region: 0xda, script: 0x55, flags: 0x0}, + 873: {region: 0x165, script: 0x55, flags: 0x0}, + 874: {region: 0x52, script: 0x55, flags: 0x0}, + 875: {region: 0x165, script: 0x55, flags: 0x0}, + 876: {region: 0x165, script: 0x55, flags: 0x0}, + 877: {region: 0xda, script: 0x55, flags: 0x0}, + 878: {region: 0x123, script: 0x51, flags: 0x0}, + 879: {region: 0x99, script: 0x20, flags: 0x0}, + 880: {region: 0x10c, script: 0xbc, flags: 0x0}, + 881: {region: 0x165, script: 0x55, flags: 0x0}, + 882: {region: 0x165, script: 0x55, flags: 0x0}, + 883: {region: 0x84, script: 0x75, flags: 0x0}, + 884: {region: 0x161, script: 0x55, flags: 0x0}, + 885: {region: 0x165, script: 0x55, flags: 0x0}, + 886: {region: 0x49, script: 0x17, flags: 0x0}, + 887: {region: 0x165, script: 0x55, flags: 0x0}, + 888: {region: 0x161, script: 0x55, flags: 0x0}, + 889: {region: 0x165, script: 0x55, flags: 0x0}, + 890: {region: 0x165, script: 0x55, flags: 0x0}, + 891: {region: 0x165, script: 0x55, flags: 0x0}, + 892: {region: 0x165, script: 0x55, flags: 0x0}, + 893: {region: 0x165, script: 0x55, flags: 0x0}, + 894: {region: 0x117, script: 0x55, flags: 0x0}, + 895: {region: 0x165, script: 0x55, flags: 0x0}, + 896: {region: 0x165, script: 0x55, flags: 0x0}, + 897: {region: 0x135, script: 0x55, flags: 0x0}, + 898: {region: 0x165, script: 0x55, flags: 0x0}, + 899: {region: 0x53, script: 0x55, flags: 0x0}, + 900: {region: 0x165, script: 0x55, flags: 0x0}, + 901: {region: 0xce, script: 0x55, flags: 0x0}, + 902: {region: 0x12f, script: 0x55, flags: 0x0}, + 903: {region: 0x131, script: 0x55, flags: 0x0}, + 904: {region: 0x80, script: 0x55, flags: 0x0}, + 905: {region: 0x78, script: 0x55, flags: 0x0}, + 906: {region: 0x165, script: 0x55, flags: 0x0}, + 908: {region: 0x165, script: 0x55, flags: 0x0}, + 909: {region: 0x165, script: 0x55, flags: 0x0}, + 910: {region: 0x6f, script: 0x55, flags: 0x0}, + 911: {region: 0x165, script: 0x55, flags: 0x0}, + 912: {region: 0x165, script: 0x55, flags: 0x0}, + 913: {region: 0x165, script: 0x55, flags: 0x0}, + 914: {region: 0x165, script: 0x55, flags: 0x0}, + 915: {region: 0x99, script: 0x7a, flags: 0x0}, + 916: {region: 0x165, script: 0x55, flags: 0x0}, + 917: {region: 0x165, script: 0x5, flags: 0x0}, + 918: {region: 0x7d, script: 0x1e, flags: 0x0}, + 919: {region: 0x135, script: 0x7b, flags: 0x0}, + 920: {region: 0x165, script: 0x5, flags: 0x0}, + 921: {region: 0xc5, script: 0x79, flags: 0x0}, + 922: {region: 0x165, script: 0x55, flags: 0x0}, 923: {region: 0x2c, script: 0x3, flags: 0x1}, - 924: {region: 0xe6, script: 0x52, flags: 0x0}, + 924: {region: 0xe7, script: 0x55, flags: 0x0}, 925: {region: 0x2f, script: 0x2, flags: 0x1}, - 926: {region: 0xe6, script: 0x52, flags: 0x0}, - 927: {region: 0x2f, script: 0x52, flags: 0x0}, - 928: {region: 0xef, script: 0x52, flags: 0x0}, - 929: {region: 0x164, script: 0x52, flags: 0x0}, - 930: {region: 0x77, script: 0x52, flags: 0x0}, - 931: {region: 0xd5, script: 0x52, flags: 0x0}, - 932: {region: 0x134, script: 0x52, flags: 0x0}, - 933: {region: 0x48, script: 0x52, flags: 0x0}, - 934: {region: 0x164, script: 0x52, flags: 0x0}, - 935: {region: 0x9b, script: 0xdd, flags: 0x0}, - 936: {region: 0x164, script: 0x52, flags: 0x0}, - 937: {region: 0x5f, script: 0x52, flags: 0x0}, - 938: {region: 0x164, script: 0x5, flags: 0x0}, - 939: {region: 0xaf, script: 0x7f, flags: 0x0}, - 941: {region: 0x164, script: 0x52, flags: 0x0}, - 942: {region: 0x164, script: 0x52, flags: 0x0}, - 943: {region: 0x98, script: 0x12, flags: 0x0}, - 944: {region: 0xa3, script: 0x52, flags: 0x0}, - 945: {region: 0xe8, script: 0x52, flags: 0x0}, - 946: {region: 0x164, script: 0x52, flags: 0x0}, - 947: {region: 0x9d, script: 0x52, flags: 0x0}, - 948: {region: 0x164, script: 0x52, flags: 0x0}, - 949: {region: 0x164, script: 0x52, flags: 0x0}, - 950: {region: 0x86, script: 0x2d, flags: 0x0}, - 951: {region: 0x74, script: 0x52, flags: 0x0}, - 952: {region: 0x164, script: 0x52, flags: 0x0}, - 953: {region: 0xe7, script: 0x45, flags: 0x0}, - 954: {region: 0x9b, script: 0x5, flags: 0x0}, - 955: {region: 0x1, script: 0x52, flags: 0x0}, - 956: {region: 0x23, script: 0x5, flags: 0x0}, - 957: {region: 0x164, script: 0x52, flags: 0x0}, - 958: {region: 0x40, script: 0x52, flags: 0x0}, - 959: {region: 0x164, script: 0x52, flags: 0x0}, - 960: {region: 0x79, script: 0x52, flags: 0x0}, - 961: {region: 0x164, script: 0x52, flags: 0x0}, - 962: {region: 0xe3, script: 0x52, flags: 0x0}, - 963: {region: 0x88, script: 0x52, flags: 0x0}, - 964: {region: 0x68, script: 0x52, flags: 0x0}, - 965: {region: 0x164, script: 0x52, flags: 0x0}, - 966: {region: 0x98, script: 0x20, flags: 0x0}, - 967: {region: 0x164, script: 0x52, flags: 0x0}, - 968: {region: 0x101, script: 0x52, flags: 0x0}, - 969: {region: 0x94, script: 0x52, flags: 0x0}, - 970: {region: 0x164, script: 0x52, flags: 0x0}, - 971: {region: 0x164, script: 0x52, flags: 0x0}, - 972: {region: 0x9d, script: 0x52, flags: 0x0}, - 973: {region: 0x164, script: 0x5, flags: 0x0}, - 974: {region: 0x98, script: 0x52, flags: 0x0}, + 926: {region: 0xe7, script: 0x55, flags: 0x0}, + 927: {region: 0x30, script: 0x55, flags: 0x0}, + 928: {region: 0xf0, script: 0x55, flags: 0x0}, + 929: {region: 0x165, script: 0x55, flags: 0x0}, + 930: {region: 0x78, script: 0x55, flags: 0x0}, + 931: {region: 0xd6, script: 0x55, flags: 0x0}, + 932: {region: 0x135, script: 0x55, flags: 0x0}, + 933: {region: 0x49, script: 0x55, flags: 0x0}, + 934: {region: 0x165, script: 0x55, flags: 0x0}, + 935: {region: 0x9c, script: 0xe3, flags: 0x0}, + 936: {region: 0x165, script: 0x55, flags: 0x0}, + 937: {region: 0x60, script: 0x55, flags: 0x0}, + 938: {region: 0x165, script: 0x5, flags: 0x0}, + 939: {region: 0xb0, script: 0x84, flags: 0x0}, + 941: {region: 0x165, script: 0x55, flags: 0x0}, + 942: {region: 0x165, script: 0x55, flags: 0x0}, + 943: {region: 0x99, script: 0x12, flags: 0x0}, + 944: {region: 0xa4, script: 0x55, flags: 0x0}, + 945: {region: 0xe9, script: 0x55, flags: 0x0}, + 946: {region: 0x165, script: 0x55, flags: 0x0}, + 947: {region: 0x9e, script: 0x55, flags: 0x0}, + 948: {region: 0x165, script: 0x55, flags: 0x0}, + 949: {region: 0x165, script: 0x55, flags: 0x0}, + 950: {region: 0x87, script: 0x30, flags: 0x0}, + 951: {region: 0x75, script: 0x55, flags: 0x0}, + 952: {region: 0x165, script: 0x55, flags: 0x0}, + 953: {region: 0xe8, script: 0x48, flags: 0x0}, + 954: {region: 0x9c, script: 0x5, flags: 0x0}, + 955: {region: 0x1, script: 0x55, flags: 0x0}, + 956: {region: 0x24, script: 0x5, flags: 0x0}, + 957: {region: 0x165, script: 0x55, flags: 0x0}, + 958: {region: 0x41, script: 0x55, flags: 0x0}, + 959: {region: 0x165, script: 0x55, flags: 0x0}, + 960: {region: 0x7a, script: 0x55, flags: 0x0}, + 961: {region: 0x165, script: 0x55, flags: 0x0}, + 962: {region: 0xe4, script: 0x55, flags: 0x0}, + 963: {region: 0x89, script: 0x55, flags: 0x0}, + 964: {region: 0x69, script: 0x55, flags: 0x0}, + 965: {region: 0x165, script: 0x55, flags: 0x0}, + 966: {region: 0x99, script: 0x20, flags: 0x0}, + 967: {region: 0x165, script: 0x55, flags: 0x0}, + 968: {region: 0x102, script: 0x55, flags: 0x0}, + 969: {region: 0x95, script: 0x55, flags: 0x0}, + 970: {region: 0x165, script: 0x55, flags: 0x0}, + 971: {region: 0x165, script: 0x55, flags: 0x0}, + 972: {region: 0x9e, script: 0x55, flags: 0x0}, + 973: {region: 0x165, script: 0x5, flags: 0x0}, + 974: {region: 0x99, script: 0x55, flags: 0x0}, 975: {region: 0x31, script: 0x2, flags: 0x1}, - 976: {region: 0xda, script: 0x20, flags: 0x0}, - 977: {region: 0x34, script: 0xe, flags: 0x0}, - 978: {region: 0x4d, script: 0x52, flags: 0x0}, - 979: {region: 0x71, script: 0x52, flags: 0x0}, - 980: {region: 0x4d, script: 0x52, flags: 0x0}, - 981: {region: 0x9b, script: 0x5, flags: 0x0}, - 982: {region: 0x10b, script: 0x52, flags: 0x0}, - 983: {region: 0x39, script: 0x52, flags: 0x0}, - 984: {region: 0x164, script: 0x52, flags: 0x0}, - 985: {region: 0xd0, script: 0x52, flags: 0x0}, - 986: {region: 0x103, script: 0x52, flags: 0x0}, - 987: {region: 0x94, script: 0x52, flags: 0x0}, - 988: {region: 0x12e, script: 0x52, flags: 0x0}, - 989: {region: 0x164, script: 0x52, flags: 0x0}, - 990: {region: 0x164, script: 0x52, flags: 0x0}, - 991: {region: 0x72, script: 0x52, flags: 0x0}, - 992: {region: 0x105, script: 0x1e, flags: 0x0}, - 993: {region: 0x12f, script: 0x1e, flags: 0x0}, - 994: {region: 0x108, script: 0x52, flags: 0x0}, - 995: {region: 0x106, script: 0x52, flags: 0x0}, - 996: {region: 0x12e, script: 0x52, flags: 0x0}, - 997: {region: 0x164, script: 0x52, flags: 0x0}, - 998: {region: 0xa1, script: 0x44, flags: 0x0}, - 999: {region: 0x98, script: 0x20, flags: 0x0}, - 1000: {region: 0x7f, script: 0x52, flags: 0x0}, - 1001: {region: 0x105, script: 0x1e, flags: 0x0}, - 1002: {region: 0xa3, script: 0x52, flags: 0x0}, - 1003: {region: 0x94, script: 0x52, flags: 0x0}, - 1004: {region: 0x98, script: 0x52, flags: 0x0}, - 1005: {region: 0x113, script: 0x52, flags: 0x0}, - 1006: {region: 0x98, script: 0xbb, flags: 0x0}, - 1007: {region: 0x164, script: 0x52, flags: 0x0}, - 1008: {region: 0x164, script: 0x52, flags: 0x0}, - 1009: {region: 0x12e, script: 0x52, flags: 0x0}, - 1010: {region: 0x9d, script: 0x52, flags: 0x0}, - 1011: {region: 0x98, script: 0x20, flags: 0x0}, - 1012: {region: 0x164, script: 0x5, flags: 0x0}, - 1013: {region: 0x9d, script: 0x52, flags: 0x0}, - 1014: {region: 0x7a, script: 0x52, flags: 0x0}, - 1015: {region: 0x48, script: 0x52, flags: 0x0}, + 976: {region: 0xdb, script: 0x20, flags: 0x0}, + 977: {region: 0x35, script: 0xe, flags: 0x0}, + 978: {region: 0x4e, script: 0x55, flags: 0x0}, + 979: {region: 0x72, script: 0x55, flags: 0x0}, + 980: {region: 0x4e, script: 0x55, flags: 0x0}, + 981: {region: 0x9c, script: 0x5, flags: 0x0}, + 982: {region: 0x10c, script: 0x55, flags: 0x0}, + 983: {region: 0x3a, script: 0x55, flags: 0x0}, + 984: {region: 0x165, script: 0x55, flags: 0x0}, + 985: {region: 0xd1, script: 0x55, flags: 0x0}, + 986: {region: 0x104, script: 0x55, flags: 0x0}, + 987: {region: 0x95, script: 0x55, flags: 0x0}, + 988: {region: 0x12f, script: 0x55, flags: 0x0}, + 989: {region: 0x165, script: 0x55, flags: 0x0}, + 990: {region: 0x165, script: 0x55, flags: 0x0}, + 991: {region: 0x73, script: 0x55, flags: 0x0}, + 992: {region: 0x106, script: 0x1e, flags: 0x0}, + 993: {region: 0x130, script: 0x1e, flags: 0x0}, + 994: {region: 0x109, script: 0x55, flags: 0x0}, + 995: {region: 0x107, script: 0x55, flags: 0x0}, + 996: {region: 0x12f, script: 0x55, flags: 0x0}, + 997: {region: 0x165, script: 0x55, flags: 0x0}, + 998: {region: 0xa2, script: 0x47, flags: 0x0}, + 999: {region: 0x99, script: 0x20, flags: 0x0}, + 1000: {region: 0x80, script: 0x55, flags: 0x0}, + 1001: {region: 0x106, script: 0x1e, flags: 0x0}, + 1002: {region: 0xa4, script: 0x55, flags: 0x0}, + 1003: {region: 0x95, script: 0x55, flags: 0x0}, + 1004: {region: 0x99, script: 0x55, flags: 0x0}, + 1005: {region: 0x114, script: 0x55, flags: 0x0}, + 1006: {region: 0x99, script: 0xc0, flags: 0x0}, + 1007: {region: 0x165, script: 0x55, flags: 0x0}, + 1008: {region: 0x165, script: 0x55, flags: 0x0}, + 1009: {region: 0x12f, script: 0x55, flags: 0x0}, + 1010: {region: 0x9e, script: 0x55, flags: 0x0}, + 1011: {region: 0x99, script: 0x20, flags: 0x0}, + 1012: {region: 0x165, script: 0x5, flags: 0x0}, + 1013: {region: 0x9e, script: 0x55, flags: 0x0}, + 1014: {region: 0x7b, script: 0x55, flags: 0x0}, + 1015: {region: 0x49, script: 0x55, flags: 0x0}, 1016: {region: 0x33, script: 0x4, flags: 0x1}, - 1017: {region: 0x9d, script: 0x52, flags: 0x0}, - 1018: {region: 0x9b, script: 0x5, flags: 0x0}, - 1019: {region: 0xd9, script: 0x52, flags: 0x0}, - 1020: {region: 0x4e, script: 0x52, flags: 0x0}, - 1021: {region: 0xd0, script: 0x52, flags: 0x0}, - 1022: {region: 0xce, script: 0x52, flags: 0x0}, - 1023: {region: 0xc2, script: 0x52, flags: 0x0}, - 1024: {region: 0x4b, script: 0x52, flags: 0x0}, - 1025: {region: 0x95, script: 0x72, flags: 0x0}, - 1026: {region: 0xb5, script: 0x52, flags: 0x0}, - 1027: {region: 0x164, script: 0x27, flags: 0x0}, - 1028: {region: 0x164, script: 0x52, flags: 0x0}, - 1030: {region: 0xb9, script: 0xd2, flags: 0x0}, - 1031: {region: 0x164, script: 0x52, flags: 0x0}, - 1032: {region: 0xc3, script: 0x6b, flags: 0x0}, - 1033: {region: 0x164, script: 0x5, flags: 0x0}, - 1034: {region: 0xb2, script: 0xc1, flags: 0x0}, - 1035: {region: 0x6e, script: 0x52, flags: 0x0}, - 1036: {region: 0x164, script: 0x52, flags: 0x0}, - 1037: {region: 0x164, script: 0x52, flags: 0x0}, - 1038: {region: 0x164, script: 0x52, flags: 0x0}, - 1039: {region: 0x164, script: 0x52, flags: 0x0}, - 1040: {region: 0x110, script: 0x52, flags: 0x0}, - 1041: {region: 0x164, script: 0x52, flags: 0x0}, - 1042: {region: 0xe7, script: 0x5, flags: 0x0}, - 1043: {region: 0x164, script: 0x52, flags: 0x0}, - 1044: {region: 0x10e, script: 0x52, flags: 0x0}, - 1045: {region: 0x164, script: 0x52, flags: 0x0}, - 1046: {region: 0xe8, script: 0x52, flags: 0x0}, - 1047: {region: 0x164, script: 0x52, flags: 0x0}, - 1048: {region: 0x94, script: 0x52, flags: 0x0}, - 1049: {region: 0x141, script: 0x52, flags: 0x0}, - 1050: {region: 0x10b, script: 0x52, flags: 0x0}, - 1052: {region: 0x10b, script: 0x52, flags: 0x0}, - 1053: {region: 0x71, script: 0x52, flags: 0x0}, - 1054: {region: 0x96, script: 0xb8, flags: 0x0}, - 1055: {region: 0x164, script: 0x52, flags: 0x0}, - 1056: {region: 0x71, script: 0x52, flags: 0x0}, - 1057: {region: 0x163, script: 0x52, flags: 0x0}, - 1058: {region: 0x164, script: 0x52, flags: 0x0}, - 1059: {region: 0xc2, script: 0x52, flags: 0x0}, - 1060: {region: 0x164, script: 0x52, flags: 0x0}, - 1061: {region: 0x164, script: 0x52, flags: 0x0}, - 1062: {region: 0x164, script: 0x52, flags: 0x0}, - 1063: {region: 0x114, script: 0x52, flags: 0x0}, - 1064: {region: 0x164, script: 0x52, flags: 0x0}, - 1065: {region: 0x164, script: 0x52, flags: 0x0}, - 1066: {region: 0x122, script: 0xd5, flags: 0x0}, - 1067: {region: 0x164, script: 0x52, flags: 0x0}, - 1068: {region: 0x164, script: 0x52, flags: 0x0}, - 1069: {region: 0x164, script: 0x52, flags: 0x0}, - 1070: {region: 0x164, script: 0x52, flags: 0x0}, - 1071: {region: 0x26, script: 0x52, flags: 0x0}, + 1017: {region: 0x9e, script: 0x55, flags: 0x0}, + 1018: {region: 0x9c, script: 0x5, flags: 0x0}, + 1019: {region: 0xda, script: 0x55, flags: 0x0}, + 1020: {region: 0x4f, script: 0x55, flags: 0x0}, + 1021: {region: 0xd1, script: 0x55, flags: 0x0}, + 1022: {region: 0xcf, script: 0x55, flags: 0x0}, + 1023: {region: 0xc3, script: 0x55, flags: 0x0}, + 1024: {region: 0x4c, script: 0x55, flags: 0x0}, + 1025: {region: 0x96, script: 0x77, flags: 0x0}, + 1026: {region: 0xb6, script: 0x55, flags: 0x0}, + 1027: {region: 0x165, script: 0x28, flags: 0x0}, + 1028: {region: 0x165, script: 0x55, flags: 0x0}, + 1030: {region: 0xba, script: 0xd8, flags: 0x0}, + 1031: {region: 0x165, script: 0x55, flags: 0x0}, + 1032: {region: 0xc4, script: 0x70, flags: 0x0}, + 1033: {region: 0x165, script: 0x5, flags: 0x0}, + 1034: {region: 0xb3, script: 0xc6, flags: 0x0}, + 1035: {region: 0x6f, script: 0x55, flags: 0x0}, + 1036: {region: 0x165, script: 0x55, flags: 0x0}, + 1037: {region: 0x165, script: 0x55, flags: 0x0}, + 1038: {region: 0x165, script: 0x55, flags: 0x0}, + 1039: {region: 0x165, script: 0x55, flags: 0x0}, + 1040: {region: 0x111, script: 0x55, flags: 0x0}, + 1041: {region: 0x165, script: 0x55, flags: 0x0}, + 1042: {region: 0xe8, script: 0x5, flags: 0x0}, + 1043: {region: 0x165, script: 0x55, flags: 0x0}, + 1044: {region: 0x10f, script: 0x55, flags: 0x0}, + 1045: {region: 0x165, script: 0x55, flags: 0x0}, + 1046: {region: 0xe9, script: 0x55, flags: 0x0}, + 1047: {region: 0x165, script: 0x55, flags: 0x0}, + 1048: {region: 0x95, script: 0x55, flags: 0x0}, + 1049: {region: 0x142, script: 0x55, flags: 0x0}, + 1050: {region: 0x10c, script: 0x55, flags: 0x0}, + 1052: {region: 0x10c, script: 0x55, flags: 0x0}, + 1053: {region: 0x72, script: 0x55, flags: 0x0}, + 1054: {region: 0x97, script: 0xbd, flags: 0x0}, + 1055: {region: 0x165, script: 0x55, flags: 0x0}, + 1056: {region: 0x72, script: 0x55, flags: 0x0}, + 1057: {region: 0x164, script: 0x55, flags: 0x0}, + 1058: {region: 0x165, script: 0x55, flags: 0x0}, + 1059: {region: 0xc3, script: 0x55, flags: 0x0}, + 1060: {region: 0x165, script: 0x55, flags: 0x0}, + 1061: {region: 0x165, script: 0x55, flags: 0x0}, + 1062: {region: 0x165, script: 0x55, flags: 0x0}, + 1063: {region: 0x115, script: 0x55, flags: 0x0}, + 1064: {region: 0x165, script: 0x55, flags: 0x0}, + 1065: {region: 0x165, script: 0x55, flags: 0x0}, + 1066: {region: 0x123, script: 0xdb, flags: 0x0}, + 1067: {region: 0x165, script: 0x55, flags: 0x0}, + 1068: {region: 0x165, script: 0x55, flags: 0x0}, + 1069: {region: 0x165, script: 0x55, flags: 0x0}, + 1070: {region: 0x165, script: 0x55, flags: 0x0}, + 1071: {region: 0x27, script: 0x55, flags: 0x0}, 1072: {region: 0x37, script: 0x5, flags: 0x1}, - 1073: {region: 0x98, script: 0xc2, flags: 0x0}, - 1074: {region: 0x115, script: 0x52, flags: 0x0}, - 1075: {region: 0x113, script: 0x52, flags: 0x0}, - 1076: {region: 0x98, script: 0x20, flags: 0x0}, - 1077: {region: 0x160, script: 0x52, flags: 0x0}, - 1078: {region: 0x164, script: 0x52, flags: 0x0}, - 1079: {region: 0x164, script: 0x52, flags: 0x0}, - 1080: {region: 0x6c, script: 0x52, flags: 0x0}, - 1081: {region: 0x160, script: 0x52, flags: 0x0}, - 1082: {region: 0x164, script: 0x52, flags: 0x0}, - 1083: {region: 0x5f, script: 0x52, flags: 0x0}, - 1084: {region: 0x94, script: 0x52, flags: 0x0}, - 1085: {region: 0x164, script: 0x52, flags: 0x0}, - 1086: {region: 0x164, script: 0x52, flags: 0x0}, - 1087: {region: 0x12e, script: 0x52, flags: 0x0}, - 1088: {region: 0x164, script: 0x52, flags: 0x0}, - 1089: {region: 0x83, script: 0x52, flags: 0x0}, - 1090: {region: 0x10b, script: 0x52, flags: 0x0}, - 1091: {region: 0x12e, script: 0x52, flags: 0x0}, - 1092: {region: 0x15e, script: 0x5, flags: 0x0}, - 1093: {region: 0x4a, script: 0x52, flags: 0x0}, - 1094: {region: 0x5f, script: 0x52, flags: 0x0}, - 1095: {region: 0x164, script: 0x52, flags: 0x0}, - 1096: {region: 0x98, script: 0x20, flags: 0x0}, - 1097: {region: 0x94, script: 0x52, flags: 0x0}, - 1098: {region: 0x164, script: 0x52, flags: 0x0}, - 1099: {region: 0x34, script: 0xe, flags: 0x0}, - 1100: {region: 0x9a, script: 0xc5, flags: 0x0}, - 1101: {region: 0xe8, script: 0x52, flags: 0x0}, - 1102: {region: 0x98, script: 0xcd, flags: 0x0}, - 1103: {region: 0xda, script: 0x20, flags: 0x0}, - 1104: {region: 0x164, script: 0x52, flags: 0x0}, - 1105: {region: 0x164, script: 0x52, flags: 0x0}, - 1106: {region: 0x164, script: 0x52, flags: 0x0}, - 1107: {region: 0x164, script: 0x52, flags: 0x0}, - 1108: {region: 0x164, script: 0x52, flags: 0x0}, - 1109: {region: 0x164, script: 0x52, flags: 0x0}, - 1110: {region: 0x164, script: 0x52, flags: 0x0}, - 1111: {region: 0x164, script: 0x52, flags: 0x0}, - 1112: {region: 0xe6, script: 0x52, flags: 0x0}, - 1113: {region: 0x164, script: 0x52, flags: 0x0}, - 1114: {region: 0x164, script: 0x52, flags: 0x0}, - 1115: {region: 0x98, script: 0x4a, flags: 0x0}, - 1116: {region: 0x52, script: 0xcb, flags: 0x0}, - 1117: {region: 0xda, script: 0x20, flags: 0x0}, - 1118: {region: 0xda, script: 0x20, flags: 0x0}, - 1119: {region: 0x98, script: 0xd0, flags: 0x0}, - 1120: {region: 0x164, script: 0x52, flags: 0x0}, - 1121: {region: 0x111, script: 0x52, flags: 0x0}, - 1122: {region: 0x130, script: 0x52, flags: 0x0}, - 1123: {region: 0x125, script: 0x52, flags: 0x0}, - 1124: {region: 0x164, script: 0x52, flags: 0x0}, + 1073: {region: 0x99, script: 0xc7, flags: 0x0}, + 1074: {region: 0x116, script: 0x55, flags: 0x0}, + 1075: {region: 0x114, script: 0x55, flags: 0x0}, + 1076: {region: 0x99, script: 0x20, flags: 0x0}, + 1077: {region: 0x161, script: 0x55, flags: 0x0}, + 1078: {region: 0x165, script: 0x55, flags: 0x0}, + 1079: {region: 0x165, script: 0x55, flags: 0x0}, + 1080: {region: 0x6d, script: 0x55, flags: 0x0}, + 1081: {region: 0x161, script: 0x55, flags: 0x0}, + 1082: {region: 0x165, script: 0x55, flags: 0x0}, + 1083: {region: 0x60, script: 0x55, flags: 0x0}, + 1084: {region: 0x95, script: 0x55, flags: 0x0}, + 1085: {region: 0x165, script: 0x55, flags: 0x0}, + 1086: {region: 0x165, script: 0x55, flags: 0x0}, + 1087: {region: 0x12f, script: 0x55, flags: 0x0}, + 1088: {region: 0x165, script: 0x55, flags: 0x0}, + 1089: {region: 0x84, script: 0x55, flags: 0x0}, + 1090: {region: 0x10c, script: 0x55, flags: 0x0}, + 1091: {region: 0x12f, script: 0x55, flags: 0x0}, + 1092: {region: 0x15f, script: 0x5, flags: 0x0}, + 1093: {region: 0x4b, script: 0x55, flags: 0x0}, + 1094: {region: 0x60, script: 0x55, flags: 0x0}, + 1095: {region: 0x165, script: 0x55, flags: 0x0}, + 1096: {region: 0x99, script: 0x20, flags: 0x0}, + 1097: {region: 0x95, script: 0x55, flags: 0x0}, + 1098: {region: 0x165, script: 0x55, flags: 0x0}, + 1099: {region: 0x35, script: 0xe, flags: 0x0}, + 1100: {region: 0x9b, script: 0xcb, flags: 0x0}, + 1101: {region: 0xe9, script: 0x55, flags: 0x0}, + 1102: {region: 0x99, script: 0xd3, flags: 0x0}, + 1103: {region: 0xdb, script: 0x20, flags: 0x0}, + 1104: {region: 0x165, script: 0x55, flags: 0x0}, + 1105: {region: 0x165, script: 0x55, flags: 0x0}, + 1106: {region: 0x165, script: 0x55, flags: 0x0}, + 1107: {region: 0x165, script: 0x55, flags: 0x0}, + 1108: {region: 0x165, script: 0x55, flags: 0x0}, + 1109: {region: 0x165, script: 0x55, flags: 0x0}, + 1110: {region: 0x165, script: 0x55, flags: 0x0}, + 1111: {region: 0x165, script: 0x55, flags: 0x0}, + 1112: {region: 0xe7, script: 0x55, flags: 0x0}, + 1113: {region: 0x165, script: 0x55, flags: 0x0}, + 1114: {region: 0x165, script: 0x55, flags: 0x0}, + 1115: {region: 0x99, script: 0x4d, flags: 0x0}, + 1116: {region: 0x53, script: 0xd1, flags: 0x0}, + 1117: {region: 0xdb, script: 0x20, flags: 0x0}, + 1118: {region: 0xdb, script: 0x20, flags: 0x0}, + 1119: {region: 0x99, script: 0xd6, flags: 0x0}, + 1120: {region: 0x165, script: 0x55, flags: 0x0}, + 1121: {region: 0x112, script: 0x55, flags: 0x0}, + 1122: {region: 0x131, script: 0x55, flags: 0x0}, + 1123: {region: 0x126, script: 0x55, flags: 0x0}, + 1124: {region: 0x165, script: 0x55, flags: 0x0}, 1125: {region: 0x3c, script: 0x3, flags: 0x1}, - 1126: {region: 0x164, script: 0x52, flags: 0x0}, - 1127: {region: 0x164, script: 0x52, flags: 0x0}, - 1128: {region: 0x164, script: 0x52, flags: 0x0}, - 1129: {region: 0x122, script: 0xd5, flags: 0x0}, - 1130: {region: 0xda, script: 0x20, flags: 0x0}, - 1131: {region: 0xda, script: 0x20, flags: 0x0}, - 1132: {region: 0xda, script: 0x20, flags: 0x0}, - 1133: {region: 0x6e, script: 0x27, flags: 0x0}, - 1134: {region: 0x164, script: 0x52, flags: 0x0}, - 1135: {region: 0x6c, script: 0x27, flags: 0x0}, - 1136: {region: 0x164, script: 0x52, flags: 0x0}, - 1137: {region: 0x164, script: 0x52, flags: 0x0}, - 1138: {region: 0x164, script: 0x52, flags: 0x0}, - 1139: {region: 0xd5, script: 0x52, flags: 0x0}, - 1140: {region: 0x126, script: 0x52, flags: 0x0}, - 1141: {region: 0x124, script: 0x52, flags: 0x0}, - 1142: {region: 0x31, script: 0x52, flags: 0x0}, - 1143: {region: 0xda, script: 0x20, flags: 0x0}, - 1144: {region: 0xe6, script: 0x52, flags: 0x0}, - 1145: {region: 0x164, script: 0x52, flags: 0x0}, - 1146: {region: 0x164, script: 0x52, flags: 0x0}, - 1147: {region: 0x31, script: 0x52, flags: 0x0}, - 1148: {region: 0xd3, script: 0x52, flags: 0x0}, - 1149: {region: 0x164, script: 0x52, flags: 0x0}, - 1150: {region: 0x160, script: 0x52, flags: 0x0}, - 1151: {region: 0x164, script: 0x52, flags: 0x0}, - 1152: {region: 0x128, script: 0x52, flags: 0x0}, - 1153: {region: 0x164, script: 0x52, flags: 0x0}, - 1154: {region: 0xcd, script: 0x52, flags: 0x0}, - 1155: {region: 0x164, script: 0x52, flags: 0x0}, - 1156: {region: 0xe5, script: 0x52, flags: 0x0}, - 1157: {region: 0x164, script: 0x52, flags: 0x0}, - 1158: {region: 0x164, script: 0x52, flags: 0x0}, - 1159: {region: 0x164, script: 0x52, flags: 0x0}, - 1160: {region: 0x12a, script: 0x52, flags: 0x0}, - 1161: {region: 0x12a, script: 0x52, flags: 0x0}, - 1162: {region: 0x12d, script: 0x52, flags: 0x0}, - 1163: {region: 0x164, script: 0x5, flags: 0x0}, - 1164: {region: 0x160, script: 0x52, flags: 0x0}, - 1165: {region: 0x86, script: 0x2d, flags: 0x0}, - 1166: {region: 0xda, script: 0x20, flags: 0x0}, - 1167: {region: 0xe6, script: 0x52, flags: 0x0}, - 1168: {region: 0x42, script: 0xd6, flags: 0x0}, - 1169: {region: 0x164, script: 0x52, flags: 0x0}, - 1170: {region: 0x105, script: 0x1e, flags: 0x0}, - 1171: {region: 0x164, script: 0x52, flags: 0x0}, - 1172: {region: 0x164, script: 0x52, flags: 0x0}, - 1173: {region: 0x130, script: 0x52, flags: 0x0}, - 1174: {region: 0x164, script: 0x52, flags: 0x0}, - 1175: {region: 0x122, script: 0xd5, flags: 0x0}, - 1176: {region: 0x31, script: 0x52, flags: 0x0}, - 1177: {region: 0x164, script: 0x52, flags: 0x0}, - 1178: {region: 0x164, script: 0x52, flags: 0x0}, - 1179: {region: 0xcd, script: 0x52, flags: 0x0}, - 1180: {region: 0x164, script: 0x52, flags: 0x0}, - 1181: {region: 0x164, script: 0x52, flags: 0x0}, - 1182: {region: 0x12c, script: 0x52, flags: 0x0}, - 1183: {region: 0x164, script: 0x52, flags: 0x0}, - 1185: {region: 0x164, script: 0x52, flags: 0x0}, - 1186: {region: 0xd3, script: 0x52, flags: 0x0}, - 1187: {region: 0x52, script: 0xce, flags: 0x0}, - 1188: {region: 0xe4, script: 0x52, flags: 0x0}, - 1189: {region: 0x164, script: 0x52, flags: 0x0}, - 1190: {region: 0x105, script: 0x1e, flags: 0x0}, - 1191: {region: 0xb9, script: 0x52, flags: 0x0}, - 1192: {region: 0x164, script: 0x52, flags: 0x0}, - 1193: {region: 0x105, script: 0x1e, flags: 0x0}, + 1126: {region: 0x165, script: 0x55, flags: 0x0}, + 1127: {region: 0x165, script: 0x55, flags: 0x0}, + 1128: {region: 0x165, script: 0x55, flags: 0x0}, + 1129: {region: 0x123, script: 0xdb, flags: 0x0}, + 1130: {region: 0xdb, script: 0x20, flags: 0x0}, + 1131: {region: 0xdb, script: 0x20, flags: 0x0}, + 1132: {region: 0xdb, script: 0x20, flags: 0x0}, + 1133: {region: 0x6f, script: 0x28, flags: 0x0}, + 1134: {region: 0x165, script: 0x55, flags: 0x0}, + 1135: {region: 0x6d, script: 0x28, flags: 0x0}, + 1136: {region: 0x165, script: 0x55, flags: 0x0}, + 1137: {region: 0x165, script: 0x55, flags: 0x0}, + 1138: {region: 0x165, script: 0x55, flags: 0x0}, + 1139: {region: 0xd6, script: 0x55, flags: 0x0}, + 1140: {region: 0x127, script: 0x55, flags: 0x0}, + 1141: {region: 0x125, script: 0x55, flags: 0x0}, + 1142: {region: 0x32, script: 0x55, flags: 0x0}, + 1143: {region: 0xdb, script: 0x20, flags: 0x0}, + 1144: {region: 0xe7, script: 0x55, flags: 0x0}, + 1145: {region: 0x165, script: 0x55, flags: 0x0}, + 1146: {region: 0x165, script: 0x55, flags: 0x0}, + 1147: {region: 0x32, script: 0x55, flags: 0x0}, + 1148: {region: 0xd4, script: 0x55, flags: 0x0}, + 1149: {region: 0x165, script: 0x55, flags: 0x0}, + 1150: {region: 0x161, script: 0x55, flags: 0x0}, + 1151: {region: 0x165, script: 0x55, flags: 0x0}, + 1152: {region: 0x129, script: 0x55, flags: 0x0}, + 1153: {region: 0x165, script: 0x55, flags: 0x0}, + 1154: {region: 0xce, script: 0x55, flags: 0x0}, + 1155: {region: 0x165, script: 0x55, flags: 0x0}, + 1156: {region: 0xe6, script: 0x55, flags: 0x0}, + 1157: {region: 0x165, script: 0x55, flags: 0x0}, + 1158: {region: 0x165, script: 0x55, flags: 0x0}, + 1159: {region: 0x165, script: 0x55, flags: 0x0}, + 1160: {region: 0x12b, script: 0x55, flags: 0x0}, + 1161: {region: 0x12b, script: 0x55, flags: 0x0}, + 1162: {region: 0x12e, script: 0x55, flags: 0x0}, + 1163: {region: 0x165, script: 0x5, flags: 0x0}, + 1164: {region: 0x161, script: 0x55, flags: 0x0}, + 1165: {region: 0x87, script: 0x30, flags: 0x0}, + 1166: {region: 0xdb, script: 0x20, flags: 0x0}, + 1167: {region: 0xe7, script: 0x55, flags: 0x0}, + 1168: {region: 0x43, script: 0xdc, flags: 0x0}, + 1169: {region: 0x165, script: 0x55, flags: 0x0}, + 1170: {region: 0x106, script: 0x1e, flags: 0x0}, + 1171: {region: 0x165, script: 0x55, flags: 0x0}, + 1172: {region: 0x165, script: 0x55, flags: 0x0}, + 1173: {region: 0x131, script: 0x55, flags: 0x0}, + 1174: {region: 0x165, script: 0x55, flags: 0x0}, + 1175: {region: 0x123, script: 0xdb, flags: 0x0}, + 1176: {region: 0x32, script: 0x55, flags: 0x0}, + 1177: {region: 0x165, script: 0x55, flags: 0x0}, + 1178: {region: 0x165, script: 0x55, flags: 0x0}, + 1179: {region: 0xce, script: 0x55, flags: 0x0}, + 1180: {region: 0x165, script: 0x55, flags: 0x0}, + 1181: {region: 0x165, script: 0x55, flags: 0x0}, + 1182: {region: 0x12d, script: 0x55, flags: 0x0}, + 1183: {region: 0x165, script: 0x55, flags: 0x0}, + 1185: {region: 0x165, script: 0x55, flags: 0x0}, + 1186: {region: 0xd4, script: 0x55, flags: 0x0}, + 1187: {region: 0x53, script: 0xd4, flags: 0x0}, + 1188: {region: 0xe5, script: 0x55, flags: 0x0}, + 1189: {region: 0x165, script: 0x55, flags: 0x0}, + 1190: {region: 0x106, script: 0x1e, flags: 0x0}, + 1191: {region: 0xba, script: 0x55, flags: 0x0}, + 1192: {region: 0x165, script: 0x55, flags: 0x0}, + 1193: {region: 0x106, script: 0x1e, flags: 0x0}, 1194: {region: 0x3f, script: 0x4, flags: 0x1}, - 1195: {region: 0x11b, script: 0xd8, flags: 0x0}, - 1196: {region: 0x12f, script: 0x1e, flags: 0x0}, - 1197: {region: 0x74, script: 0x52, flags: 0x0}, - 1198: {region: 0x29, script: 0x52, flags: 0x0}, + 1195: {region: 0x11c, script: 0xde, flags: 0x0}, + 1196: {region: 0x130, script: 0x1e, flags: 0x0}, + 1197: {region: 0x75, script: 0x55, flags: 0x0}, + 1198: {region: 0x2a, script: 0x55, flags: 0x0}, 1200: {region: 0x43, script: 0x3, flags: 0x1}, - 1201: {region: 0x98, script: 0xe, flags: 0x0}, - 1202: {region: 0xe7, script: 0x5, flags: 0x0}, - 1203: {region: 0x164, script: 0x52, flags: 0x0}, - 1204: {region: 0x164, script: 0x52, flags: 0x0}, - 1205: {region: 0x164, script: 0x52, flags: 0x0}, - 1206: {region: 0x164, script: 0x52, flags: 0x0}, - 1207: {region: 0x164, script: 0x52, flags: 0x0}, - 1208: {region: 0x164, script: 0x52, flags: 0x0}, - 1209: {region: 0x164, script: 0x52, flags: 0x0}, + 1201: {region: 0x99, script: 0xe, flags: 0x0}, + 1202: {region: 0xe8, script: 0x5, flags: 0x0}, + 1203: {region: 0x165, script: 0x55, flags: 0x0}, + 1204: {region: 0x165, script: 0x55, flags: 0x0}, + 1205: {region: 0x165, script: 0x55, flags: 0x0}, + 1206: {region: 0x165, script: 0x55, flags: 0x0}, + 1207: {region: 0x165, script: 0x55, flags: 0x0}, + 1208: {region: 0x165, script: 0x55, flags: 0x0}, + 1209: {region: 0x165, script: 0x55, flags: 0x0}, 1210: {region: 0x46, script: 0x4, flags: 0x1}, - 1211: {region: 0x164, script: 0x52, flags: 0x0}, - 1212: {region: 0xb3, script: 0xd9, flags: 0x0}, - 1213: {region: 0x164, script: 0x52, flags: 0x0}, - 1214: {region: 0x160, script: 0x52, flags: 0x0}, - 1215: {region: 0x9d, script: 0x52, flags: 0x0}, - 1216: {region: 0x105, script: 0x52, flags: 0x0}, - 1217: {region: 0x13d, script: 0x52, flags: 0x0}, - 1218: {region: 0x11a, script: 0x52, flags: 0x0}, - 1219: {region: 0x164, script: 0x52, flags: 0x0}, - 1220: {region: 0x35, script: 0x52, flags: 0x0}, - 1221: {region: 0x5f, script: 0x52, flags: 0x0}, - 1222: {region: 0xd0, script: 0x52, flags: 0x0}, - 1223: {region: 0x1, script: 0x52, flags: 0x0}, - 1224: {region: 0x105, script: 0x52, flags: 0x0}, - 1225: {region: 0x69, script: 0x52, flags: 0x0}, - 1226: {region: 0x12e, script: 0x52, flags: 0x0}, - 1227: {region: 0x164, script: 0x52, flags: 0x0}, - 1228: {region: 0x35, script: 0x52, flags: 0x0}, - 1229: {region: 0x4d, script: 0x52, flags: 0x0}, - 1230: {region: 0x164, script: 0x52, flags: 0x0}, - 1231: {region: 0x6e, script: 0x27, flags: 0x0}, - 1232: {region: 0x164, script: 0x52, flags: 0x0}, - 1233: {region: 0xe6, script: 0x52, flags: 0x0}, - 1234: {region: 0x2e, script: 0x52, flags: 0x0}, - 1235: {region: 0x98, script: 0xd0, flags: 0x0}, - 1236: {region: 0x98, script: 0x20, flags: 0x0}, - 1237: {region: 0x164, script: 0x52, flags: 0x0}, - 1238: {region: 0x164, script: 0x52, flags: 0x0}, - 1239: {region: 0x164, script: 0x52, flags: 0x0}, - 1240: {region: 0x164, script: 0x52, flags: 0x0}, - 1241: {region: 0x164, script: 0x52, flags: 0x0}, - 1242: {region: 0x164, script: 0x52, flags: 0x0}, - 1243: {region: 0x164, script: 0x52, flags: 0x0}, - 1244: {region: 0x164, script: 0x52, flags: 0x0}, - 1245: {region: 0x164, script: 0x52, flags: 0x0}, - 1246: {region: 0x13f, script: 0x52, flags: 0x0}, - 1247: {region: 0x164, script: 0x52, flags: 0x0}, - 1248: {region: 0x164, script: 0x52, flags: 0x0}, - 1249: {region: 0xa7, script: 0x5, flags: 0x0}, - 1250: {region: 0x164, script: 0x52, flags: 0x0}, - 1251: {region: 0x113, script: 0x52, flags: 0x0}, - 1252: {region: 0x164, script: 0x52, flags: 0x0}, - 1253: {region: 0x164, script: 0x52, flags: 0x0}, - 1254: {region: 0x164, script: 0x52, flags: 0x0}, - 1255: {region: 0x164, script: 0x52, flags: 0x0}, - 1256: {region: 0x98, script: 0x20, flags: 0x0}, - 1257: {region: 0x52, script: 0x34, flags: 0x0}, - 1258: {region: 0x164, script: 0x52, flags: 0x0}, - 1259: {region: 0x164, script: 0x52, flags: 0x0}, - 1260: {region: 0x40, script: 0x52, flags: 0x0}, - 1261: {region: 0x164, script: 0x52, flags: 0x0}, - 1262: {region: 0x12a, script: 0x18, flags: 0x0}, - 1263: {region: 0x164, script: 0x52, flags: 0x0}, - 1264: {region: 0x160, script: 0x52, flags: 0x0}, - 1265: {region: 0x164, script: 0x52, flags: 0x0}, - 1266: {region: 0x12a, script: 0x5a, flags: 0x0}, - 1267: {region: 0x12a, script: 0x5b, flags: 0x0}, - 1268: {region: 0x7c, script: 0x29, flags: 0x0}, - 1269: {region: 0x52, script: 0x5e, flags: 0x0}, - 1270: {region: 0x10a, script: 0x62, flags: 0x0}, - 1271: {region: 0x107, script: 0x6c, flags: 0x0}, - 1272: {region: 0x98, script: 0x20, flags: 0x0}, - 1273: {region: 0x130, script: 0x52, flags: 0x0}, - 1274: {region: 0x164, script: 0x52, flags: 0x0}, - 1275: {region: 0x9b, script: 0x82, flags: 0x0}, - 1276: {region: 0x164, script: 0x52, flags: 0x0}, - 1277: {region: 0x15d, script: 0xba, flags: 0x0}, - 1278: {region: 0x164, script: 0x52, flags: 0x0}, - 1279: {region: 0x164, script: 0x52, flags: 0x0}, - 1280: {region: 0xda, script: 0x20, flags: 0x0}, - 1281: {region: 0x164, script: 0x52, flags: 0x0}, - 1282: {region: 0x164, script: 0x52, flags: 0x0}, - 1283: {region: 0xd0, script: 0x52, flags: 0x0}, - 1284: {region: 0x74, script: 0x52, flags: 0x0}, - 1285: {region: 0x164, script: 0x52, flags: 0x0}, - 1286: {region: 0x164, script: 0x52, flags: 0x0}, - 1287: {region: 0x51, script: 0x52, flags: 0x0}, - 1288: {region: 0x164, script: 0x52, flags: 0x0}, - 1289: {region: 0x164, script: 0x52, flags: 0x0}, - 1290: {region: 0x164, script: 0x52, flags: 0x0}, - 1291: {region: 0x51, script: 0x52, flags: 0x0}, - 1292: {region: 0x164, script: 0x52, flags: 0x0}, - 1293: {region: 0x164, script: 0x52, flags: 0x0}, - 1294: {region: 0x164, script: 0x52, flags: 0x0}, - 1295: {region: 0x164, script: 0x52, flags: 0x0}, - 1296: {region: 0x1, script: 0x37, flags: 0x0}, - 1297: {region: 0x164, script: 0x52, flags: 0x0}, - 1298: {region: 0x164, script: 0x52, flags: 0x0}, - 1299: {region: 0x164, script: 0x52, flags: 0x0}, - 1300: {region: 0x164, script: 0x52, flags: 0x0}, - 1301: {region: 0x164, script: 0x52, flags: 0x0}, - 1302: {region: 0xd5, script: 0x52, flags: 0x0}, - 1303: {region: 0x164, script: 0x52, flags: 0x0}, - 1304: {region: 0x164, script: 0x52, flags: 0x0}, - 1305: {region: 0x164, script: 0x52, flags: 0x0}, - 1306: {region: 0x40, script: 0x52, flags: 0x0}, - 1307: {region: 0x164, script: 0x52, flags: 0x0}, - 1308: {region: 0xce, script: 0x52, flags: 0x0}, + 1211: {region: 0x165, script: 0x55, flags: 0x0}, + 1212: {region: 0xb4, script: 0xdf, flags: 0x0}, + 1213: {region: 0x165, script: 0x55, flags: 0x0}, + 1214: {region: 0x161, script: 0x55, flags: 0x0}, + 1215: {region: 0x9e, script: 0x55, flags: 0x0}, + 1216: {region: 0x106, script: 0x55, flags: 0x0}, + 1217: {region: 0x13e, script: 0x55, flags: 0x0}, + 1218: {region: 0x11b, script: 0x55, flags: 0x0}, + 1219: {region: 0x165, script: 0x55, flags: 0x0}, + 1220: {region: 0x36, script: 0x55, flags: 0x0}, + 1221: {region: 0x60, script: 0x55, flags: 0x0}, + 1222: {region: 0xd1, script: 0x55, flags: 0x0}, + 1223: {region: 0x1, script: 0x55, flags: 0x0}, + 1224: {region: 0x106, script: 0x55, flags: 0x0}, + 1225: {region: 0x6a, script: 0x55, flags: 0x0}, + 1226: {region: 0x12f, script: 0x55, flags: 0x0}, + 1227: {region: 0x165, script: 0x55, flags: 0x0}, + 1228: {region: 0x36, script: 0x55, flags: 0x0}, + 1229: {region: 0x4e, script: 0x55, flags: 0x0}, + 1230: {region: 0x165, script: 0x55, flags: 0x0}, + 1231: {region: 0x6f, script: 0x28, flags: 0x0}, + 1232: {region: 0x165, script: 0x55, flags: 0x0}, + 1233: {region: 0xe7, script: 0x55, flags: 0x0}, + 1234: {region: 0x2f, script: 0x55, flags: 0x0}, + 1235: {region: 0x99, script: 0xd6, flags: 0x0}, + 1236: {region: 0x99, script: 0x20, flags: 0x0}, + 1237: {region: 0x165, script: 0x55, flags: 0x0}, + 1238: {region: 0x165, script: 0x55, flags: 0x0}, + 1239: {region: 0x165, script: 0x55, flags: 0x0}, + 1240: {region: 0x165, script: 0x55, flags: 0x0}, + 1241: {region: 0x165, script: 0x55, flags: 0x0}, + 1242: {region: 0x165, script: 0x55, flags: 0x0}, + 1243: {region: 0x165, script: 0x55, flags: 0x0}, + 1244: {region: 0x165, script: 0x55, flags: 0x0}, + 1245: {region: 0x165, script: 0x55, flags: 0x0}, + 1246: {region: 0x140, script: 0x55, flags: 0x0}, + 1247: {region: 0x165, script: 0x55, flags: 0x0}, + 1248: {region: 0x165, script: 0x55, flags: 0x0}, + 1249: {region: 0xa8, script: 0x5, flags: 0x0}, + 1250: {region: 0x165, script: 0x55, flags: 0x0}, + 1251: {region: 0x114, script: 0x55, flags: 0x0}, + 1252: {region: 0x165, script: 0x55, flags: 0x0}, + 1253: {region: 0x165, script: 0x55, flags: 0x0}, + 1254: {region: 0x165, script: 0x55, flags: 0x0}, + 1255: {region: 0x165, script: 0x55, flags: 0x0}, + 1256: {region: 0x99, script: 0x20, flags: 0x0}, + 1257: {region: 0x53, script: 0x37, flags: 0x0}, + 1258: {region: 0x165, script: 0x55, flags: 0x0}, + 1259: {region: 0x165, script: 0x55, flags: 0x0}, + 1260: {region: 0x41, script: 0x55, flags: 0x0}, + 1261: {region: 0x165, script: 0x55, flags: 0x0}, + 1262: {region: 0x12b, script: 0x18, flags: 0x0}, + 1263: {region: 0x165, script: 0x55, flags: 0x0}, + 1264: {region: 0x161, script: 0x55, flags: 0x0}, + 1265: {region: 0x165, script: 0x55, flags: 0x0}, + 1266: {region: 0x12b, script: 0x5d, flags: 0x0}, + 1267: {region: 0x12b, script: 0x5e, flags: 0x0}, + 1268: {region: 0x7d, script: 0x2a, flags: 0x0}, + 1269: {region: 0x53, script: 0x62, flags: 0x0}, + 1270: {region: 0x10b, script: 0x67, flags: 0x0}, + 1271: {region: 0x108, script: 0x71, flags: 0x0}, + 1272: {region: 0x99, script: 0x20, flags: 0x0}, + 1273: {region: 0x131, script: 0x55, flags: 0x0}, + 1274: {region: 0x165, script: 0x55, flags: 0x0}, + 1275: {region: 0x9c, script: 0x87, flags: 0x0}, + 1276: {region: 0x165, script: 0x55, flags: 0x0}, + 1277: {region: 0x15e, script: 0xbf, flags: 0x0}, + 1278: {region: 0x165, script: 0x55, flags: 0x0}, + 1279: {region: 0x165, script: 0x55, flags: 0x0}, + 1280: {region: 0xdb, script: 0x20, flags: 0x0}, + 1281: {region: 0x165, script: 0x55, flags: 0x0}, + 1282: {region: 0x165, script: 0x55, flags: 0x0}, + 1283: {region: 0xd1, script: 0x55, flags: 0x0}, + 1284: {region: 0x75, script: 0x55, flags: 0x0}, + 1285: {region: 0x165, script: 0x55, flags: 0x0}, + 1286: {region: 0x165, script: 0x55, flags: 0x0}, + 1287: {region: 0x52, script: 0x55, flags: 0x0}, + 1288: {region: 0x165, script: 0x55, flags: 0x0}, + 1289: {region: 0x165, script: 0x55, flags: 0x0}, + 1290: {region: 0x165, script: 0x55, flags: 0x0}, + 1291: {region: 0x52, script: 0x55, flags: 0x0}, + 1292: {region: 0x165, script: 0x55, flags: 0x0}, + 1293: {region: 0x165, script: 0x55, flags: 0x0}, + 1294: {region: 0x165, script: 0x55, flags: 0x0}, + 1295: {region: 0x165, script: 0x55, flags: 0x0}, + 1296: {region: 0x1, script: 0x3a, flags: 0x0}, + 1297: {region: 0x165, script: 0x55, flags: 0x0}, + 1298: {region: 0x165, script: 0x55, flags: 0x0}, + 1299: {region: 0x165, script: 0x55, flags: 0x0}, + 1300: {region: 0x165, script: 0x55, flags: 0x0}, + 1301: {region: 0x165, script: 0x55, flags: 0x0}, + 1302: {region: 0xd6, script: 0x55, flags: 0x0}, + 1303: {region: 0x165, script: 0x55, flags: 0x0}, + 1304: {region: 0x165, script: 0x55, flags: 0x0}, + 1305: {region: 0x165, script: 0x55, flags: 0x0}, + 1306: {region: 0x41, script: 0x55, flags: 0x0}, + 1307: {region: 0x165, script: 0x55, flags: 0x0}, + 1308: {region: 0xcf, script: 0x55, flags: 0x0}, 1309: {region: 0x4a, script: 0x3, flags: 0x1}, - 1310: {region: 0x164, script: 0x52, flags: 0x0}, - 1311: {region: 0x164, script: 0x52, flags: 0x0}, - 1312: {region: 0x164, script: 0x52, flags: 0x0}, - 1313: {region: 0x52, script: 0x52, flags: 0x0}, - 1314: {region: 0x10a, script: 0x52, flags: 0x0}, - 1316: {region: 0xa7, script: 0x5, flags: 0x0}, - 1317: {region: 0xd8, script: 0x52, flags: 0x0}, - 1318: {region: 0xb9, script: 0xd2, flags: 0x0}, + 1310: {region: 0x165, script: 0x55, flags: 0x0}, + 1311: {region: 0x165, script: 0x55, flags: 0x0}, + 1312: {region: 0x165, script: 0x55, flags: 0x0}, + 1313: {region: 0x53, script: 0x55, flags: 0x0}, + 1314: {region: 0x10b, script: 0x55, flags: 0x0}, + 1316: {region: 0xa8, script: 0x5, flags: 0x0}, + 1317: {region: 0xd9, script: 0x55, flags: 0x0}, + 1318: {region: 0xba, script: 0xd8, flags: 0x0}, 1319: {region: 0x4d, script: 0x14, flags: 0x1}, - 1320: {region: 0x164, script: 0x52, flags: 0x0}, - 1321: {region: 0x121, script: 0x52, flags: 0x0}, - 1322: {region: 0xcf, script: 0x52, flags: 0x0}, - 1323: {region: 0x164, script: 0x52, flags: 0x0}, - 1324: {region: 0x160, script: 0x52, flags: 0x0}, - 1326: {region: 0x12a, script: 0x52, flags: 0x0}, + 1320: {region: 0x165, script: 0x55, flags: 0x0}, + 1321: {region: 0x122, script: 0x55, flags: 0x0}, + 1322: {region: 0xd0, script: 0x55, flags: 0x0}, + 1323: {region: 0x165, script: 0x55, flags: 0x0}, + 1324: {region: 0x161, script: 0x55, flags: 0x0}, + 1326: {region: 0x12b, script: 0x55, flags: 0x0}, } // likelyLangList holds lists info associated with likelyLang. // Size: 388 bytes, 97 elements var likelyLangList = [97]likelyScriptRegion{ - 0: {region: 0x9b, script: 0x7, flags: 0x0}, - 1: {region: 0xa0, script: 0x6d, flags: 0x2}, - 2: {region: 0x11b, script: 0x78, flags: 0x2}, - 3: {region: 0x31, script: 0x52, flags: 0x0}, - 4: {region: 0x9a, script: 0x5, flags: 0x4}, - 5: {region: 0x9b, script: 0x5, flags: 0x4}, - 6: {region: 0x105, script: 0x1e, flags: 0x4}, - 7: {region: 0x9b, script: 0x5, flags: 0x2}, - 8: {region: 0x105, script: 0x1e, flags: 0x0}, - 9: {region: 0x37, script: 0x2a, flags: 0x2}, - 10: {region: 0x134, script: 0x52, flags: 0x0}, - 11: {region: 0x7a, script: 0xbd, flags: 0x2}, - 12: {region: 0x113, script: 0x52, flags: 0x0}, - 13: {region: 0x83, script: 0x1, flags: 0x2}, - 14: {region: 0x5c, script: 0x1d, flags: 0x0}, - 15: {region: 0x86, script: 0x57, flags: 0x2}, - 16: {region: 0xd5, script: 0x52, flags: 0x0}, - 17: {region: 0x51, script: 0x5, flags: 0x4}, - 18: {region: 0x10a, script: 0x5, flags: 0x4}, - 19: {region: 0xad, script: 0x1e, flags: 0x0}, - 20: {region: 0x23, script: 0x5, flags: 0x4}, - 21: {region: 0x52, script: 0x5, flags: 0x4}, - 22: {region: 0x9b, script: 0x5, flags: 0x4}, - 23: {region: 0xc4, script: 0x5, flags: 0x4}, - 24: {region: 0x52, script: 0x5, flags: 0x2}, - 25: {region: 0x12a, script: 0x52, flags: 0x0}, - 26: {region: 0xaf, script: 0x5, flags: 0x4}, - 27: {region: 0x9a, script: 0x5, flags: 0x2}, - 28: {region: 0xa4, script: 0x1e, flags: 0x0}, - 29: {region: 0x52, script: 0x5, flags: 0x4}, - 30: {region: 0x12a, script: 0x52, flags: 0x4}, - 31: {region: 0x52, script: 0x5, flags: 0x2}, - 32: {region: 0x12a, script: 0x52, flags: 0x2}, - 33: {region: 0xda, script: 0x20, flags: 0x0}, - 34: {region: 0x98, script: 0x55, flags: 0x2}, - 35: {region: 0x82, script: 0x52, flags: 0x0}, - 36: {region: 0x83, script: 0x70, flags: 0x4}, - 37: {region: 0x83, script: 0x70, flags: 0x2}, - 38: {region: 0xc4, script: 0x1e, flags: 0x0}, - 39: {region: 0x52, script: 0x66, flags: 0x4}, - 40: {region: 0x52, script: 0x66, flags: 0x2}, - 41: {region: 0xcf, script: 0x52, flags: 0x0}, - 42: {region: 0x49, script: 0x5, flags: 0x4}, - 43: {region: 0x94, script: 0x5, flags: 0x4}, - 44: {region: 0x98, script: 0x2f, flags: 0x0}, - 45: {region: 0xe7, script: 0x5, flags: 0x4}, - 46: {region: 0xe7, script: 0x5, flags: 0x2}, - 47: {region: 0x9b, script: 0x7c, flags: 0x0}, - 48: {region: 0x52, script: 0x7d, flags: 0x2}, - 49: {region: 0xb9, script: 0xd2, flags: 0x0}, - 50: {region: 0xd8, script: 0x52, flags: 0x4}, - 51: {region: 0xe7, script: 0x5, flags: 0x0}, - 52: {region: 0x98, script: 0x20, flags: 0x2}, - 53: {region: 0x98, script: 0x47, flags: 0x2}, - 54: {region: 0x98, script: 0xc0, flags: 0x2}, - 55: {region: 0x104, script: 0x1e, flags: 0x0}, - 56: {region: 0xbc, script: 0x52, flags: 0x4}, - 57: {region: 0x103, script: 0x52, flags: 0x4}, - 58: {region: 0x105, script: 0x52, flags: 0x4}, - 59: {region: 0x12a, script: 0x52, flags: 0x4}, - 60: {region: 0x123, script: 0x1e, flags: 0x0}, - 61: {region: 0xe7, script: 0x5, flags: 0x4}, - 62: {region: 0xe7, script: 0x5, flags: 0x2}, - 63: {region: 0x52, script: 0x5, flags: 0x0}, - 64: {region: 0xad, script: 0x1e, flags: 0x4}, - 65: {region: 0xc4, script: 0x1e, flags: 0x4}, - 66: {region: 0xad, script: 0x1e, flags: 0x2}, - 67: {region: 0x98, script: 0xe, flags: 0x0}, - 68: {region: 0xda, script: 0x20, flags: 0x4}, - 69: {region: 0xda, script: 0x20, flags: 0x2}, - 70: {region: 0x136, script: 0x52, flags: 0x0}, - 71: {region: 0x23, script: 0x5, flags: 0x4}, - 72: {region: 0x52, script: 0x1e, flags: 0x4}, - 73: {region: 0x23, script: 0x5, flags: 0x2}, - 74: {region: 0x8c, script: 0x35, flags: 0x0}, - 75: {region: 0x52, script: 0x34, flags: 0x4}, - 76: {region: 0x52, script: 0x34, flags: 0x2}, - 77: {region: 0x52, script: 0x34, flags: 0x0}, - 78: {region: 0x2e, script: 0x35, flags: 0x4}, - 79: {region: 0x3d, script: 0x35, flags: 0x4}, - 80: {region: 0x7a, script: 0x35, flags: 0x4}, - 81: {region: 0x7d, script: 0x35, flags: 0x4}, - 82: {region: 0x8c, script: 0x35, flags: 0x4}, - 83: {region: 0x94, script: 0x35, flags: 0x4}, - 84: {region: 0xc5, script: 0x35, flags: 0x4}, - 85: {region: 0xcf, script: 0x35, flags: 0x4}, - 86: {region: 0xe1, script: 0x35, flags: 0x4}, - 87: {region: 0xe4, script: 0x35, flags: 0x4}, - 88: {region: 0xe6, script: 0x35, flags: 0x4}, - 89: {region: 0x115, script: 0x35, flags: 0x4}, - 90: {region: 0x122, script: 0x35, flags: 0x4}, - 91: {region: 0x12d, script: 0x35, flags: 0x4}, - 92: {region: 0x134, script: 0x35, flags: 0x4}, - 93: {region: 0x13d, script: 0x35, flags: 0x4}, - 94: {region: 0x12d, script: 0x11, flags: 0x2}, - 95: {region: 0x12d, script: 0x30, flags: 0x2}, - 96: {region: 0x12d, script: 0x35, flags: 0x2}, + 0: {region: 0x9c, script: 0x7, flags: 0x0}, + 1: {region: 0xa1, script: 0x72, flags: 0x2}, + 2: {region: 0x11c, script: 0x7d, flags: 0x2}, + 3: {region: 0x32, script: 0x55, flags: 0x0}, + 4: {region: 0x9b, script: 0x5, flags: 0x4}, + 5: {region: 0x9c, script: 0x5, flags: 0x4}, + 6: {region: 0x106, script: 0x1e, flags: 0x4}, + 7: {region: 0x9c, script: 0x5, flags: 0x2}, + 8: {region: 0x106, script: 0x1e, flags: 0x0}, + 9: {region: 0x38, script: 0x2b, flags: 0x2}, + 10: {region: 0x135, script: 0x55, flags: 0x0}, + 11: {region: 0x7b, script: 0xc2, flags: 0x2}, + 12: {region: 0x114, script: 0x55, flags: 0x0}, + 13: {region: 0x84, script: 0x1, flags: 0x2}, + 14: {region: 0x5d, script: 0x1d, flags: 0x0}, + 15: {region: 0x87, script: 0x5a, flags: 0x2}, + 16: {region: 0xd6, script: 0x55, flags: 0x0}, + 17: {region: 0x52, script: 0x5, flags: 0x4}, + 18: {region: 0x10b, script: 0x5, flags: 0x4}, + 19: {region: 0xae, script: 0x1e, flags: 0x0}, + 20: {region: 0x24, script: 0x5, flags: 0x4}, + 21: {region: 0x53, script: 0x5, flags: 0x4}, + 22: {region: 0x9c, script: 0x5, flags: 0x4}, + 23: {region: 0xc5, script: 0x5, flags: 0x4}, + 24: {region: 0x53, script: 0x5, flags: 0x2}, + 25: {region: 0x12b, script: 0x55, flags: 0x0}, + 26: {region: 0xb0, script: 0x5, flags: 0x4}, + 27: {region: 0x9b, script: 0x5, flags: 0x2}, + 28: {region: 0xa5, script: 0x1e, flags: 0x0}, + 29: {region: 0x53, script: 0x5, flags: 0x4}, + 30: {region: 0x12b, script: 0x55, flags: 0x4}, + 31: {region: 0x53, script: 0x5, flags: 0x2}, + 32: {region: 0x12b, script: 0x55, flags: 0x2}, + 33: {region: 0xdb, script: 0x20, flags: 0x0}, + 34: {region: 0x99, script: 0x58, flags: 0x2}, + 35: {region: 0x83, script: 0x55, flags: 0x0}, + 36: {region: 0x84, script: 0x75, flags: 0x4}, + 37: {region: 0x84, script: 0x75, flags: 0x2}, + 38: {region: 0xc5, script: 0x1e, flags: 0x0}, + 39: {region: 0x53, script: 0x6b, flags: 0x4}, + 40: {region: 0x53, script: 0x6b, flags: 0x2}, + 41: {region: 0xd0, script: 0x55, flags: 0x0}, + 42: {region: 0x4a, script: 0x5, flags: 0x4}, + 43: {region: 0x95, script: 0x5, flags: 0x4}, + 44: {region: 0x99, script: 0x32, flags: 0x0}, + 45: {region: 0xe8, script: 0x5, flags: 0x4}, + 46: {region: 0xe8, script: 0x5, flags: 0x2}, + 47: {region: 0x9c, script: 0x81, flags: 0x0}, + 48: {region: 0x53, script: 0x82, flags: 0x2}, + 49: {region: 0xba, script: 0xd8, flags: 0x0}, + 50: {region: 0xd9, script: 0x55, flags: 0x4}, + 51: {region: 0xe8, script: 0x5, flags: 0x0}, + 52: {region: 0x99, script: 0x20, flags: 0x2}, + 53: {region: 0x99, script: 0x4a, flags: 0x2}, + 54: {region: 0x99, script: 0xc5, flags: 0x2}, + 55: {region: 0x105, script: 0x1e, flags: 0x0}, + 56: {region: 0xbd, script: 0x55, flags: 0x4}, + 57: {region: 0x104, script: 0x55, flags: 0x4}, + 58: {region: 0x106, script: 0x55, flags: 0x4}, + 59: {region: 0x12b, script: 0x55, flags: 0x4}, + 60: {region: 0x124, script: 0x1e, flags: 0x0}, + 61: {region: 0xe8, script: 0x5, flags: 0x4}, + 62: {region: 0xe8, script: 0x5, flags: 0x2}, + 63: {region: 0x53, script: 0x5, flags: 0x0}, + 64: {region: 0xae, script: 0x1e, flags: 0x4}, + 65: {region: 0xc5, script: 0x1e, flags: 0x4}, + 66: {region: 0xae, script: 0x1e, flags: 0x2}, + 67: {region: 0x99, script: 0xe, flags: 0x0}, + 68: {region: 0xdb, script: 0x20, flags: 0x4}, + 69: {region: 0xdb, script: 0x20, flags: 0x2}, + 70: {region: 0x137, script: 0x55, flags: 0x0}, + 71: {region: 0x24, script: 0x5, flags: 0x4}, + 72: {region: 0x53, script: 0x1e, flags: 0x4}, + 73: {region: 0x24, script: 0x5, flags: 0x2}, + 74: {region: 0x8d, script: 0x38, flags: 0x0}, + 75: {region: 0x53, script: 0x37, flags: 0x4}, + 76: {region: 0x53, script: 0x37, flags: 0x2}, + 77: {region: 0x53, script: 0x37, flags: 0x0}, + 78: {region: 0x2f, script: 0x38, flags: 0x4}, + 79: {region: 0x3e, script: 0x38, flags: 0x4}, + 80: {region: 0x7b, script: 0x38, flags: 0x4}, + 81: {region: 0x7e, script: 0x38, flags: 0x4}, + 82: {region: 0x8d, script: 0x38, flags: 0x4}, + 83: {region: 0x95, script: 0x38, flags: 0x4}, + 84: {region: 0xc6, script: 0x38, flags: 0x4}, + 85: {region: 0xd0, script: 0x38, flags: 0x4}, + 86: {region: 0xe2, script: 0x38, flags: 0x4}, + 87: {region: 0xe5, script: 0x38, flags: 0x4}, + 88: {region: 0xe7, script: 0x38, flags: 0x4}, + 89: {region: 0x116, script: 0x38, flags: 0x4}, + 90: {region: 0x123, script: 0x38, flags: 0x4}, + 91: {region: 0x12e, script: 0x38, flags: 0x4}, + 92: {region: 0x135, script: 0x38, flags: 0x4}, + 93: {region: 0x13e, script: 0x38, flags: 0x4}, + 94: {region: 0x12e, script: 0x11, flags: 0x2}, + 95: {region: 0x12e, script: 0x33, flags: 0x2}, + 96: {region: 0x12e, script: 0x38, flags: 0x2}, } type likelyLangScript struct { @@ -2924,307 +2935,307 @@ type likelyLangScript struct { // for a given regionID, lang and script are the index and size respectively // of the list in likelyRegionList. // TODO: exclude containers and user-definable regions from the list. -// Size: 1428 bytes, 357 elements -var likelyRegion = [357]likelyLangScript{ - 33: {lang: 0xd7, script: 0x52, flags: 0x0}, - 34: {lang: 0x3a, script: 0x5, flags: 0x0}, - 35: {lang: 0x0, script: 0x2, flags: 0x1}, - 38: {lang: 0x2, script: 0x2, flags: 0x1}, - 39: {lang: 0x4, script: 0x2, flags: 0x1}, - 41: {lang: 0x3be, script: 0x52, flags: 0x0}, - 42: {lang: 0x0, script: 0x52, flags: 0x0}, - 43: {lang: 0x13d, script: 0x52, flags: 0x0}, - 44: {lang: 0x419, script: 0x52, flags: 0x0}, - 45: {lang: 0x10c, script: 0x52, flags: 0x0}, - 47: {lang: 0x365, script: 0x52, flags: 0x0}, - 48: {lang: 0x442, script: 0x52, flags: 0x0}, - 49: {lang: 0x58, script: 0x52, flags: 0x0}, - 50: {lang: 0x6, script: 0x2, flags: 0x1}, - 52: {lang: 0xa5, script: 0xe, flags: 0x0}, - 53: {lang: 0x365, script: 0x52, flags: 0x0}, - 54: {lang: 0x15d, script: 0x52, flags: 0x0}, - 55: {lang: 0x7e, script: 0x1e, flags: 0x0}, - 56: {lang: 0x3a, script: 0x5, flags: 0x0}, - 57: {lang: 0x3d7, script: 0x52, flags: 0x0}, - 58: {lang: 0x15d, script: 0x52, flags: 0x0}, - 59: {lang: 0x15d, script: 0x52, flags: 0x0}, - 61: {lang: 0x31d, script: 0x52, flags: 0x0}, - 62: {lang: 0x13d, script: 0x52, flags: 0x0}, - 63: {lang: 0x39f, script: 0x52, flags: 0x0}, - 64: {lang: 0x3be, script: 0x52, flags: 0x0}, - 66: {lang: 0x8, script: 0x2, flags: 0x1}, - 68: {lang: 0x0, script: 0x52, flags: 0x0}, - 70: {lang: 0x71, script: 0x1e, flags: 0x0}, - 72: {lang: 0x510, script: 0x37, flags: 0x2}, - 73: {lang: 0x31d, script: 0x5, flags: 0x2}, - 74: {lang: 0x443, script: 0x52, flags: 0x0}, - 75: {lang: 0x15d, script: 0x52, flags: 0x0}, - 76: {lang: 0x15d, script: 0x52, flags: 0x0}, - 77: {lang: 0x10c, script: 0x52, flags: 0x0}, - 78: {lang: 0x15d, script: 0x52, flags: 0x0}, - 80: {lang: 0x13d, script: 0x52, flags: 0x0}, - 81: {lang: 0x15d, script: 0x52, flags: 0x0}, - 82: {lang: 0xa, script: 0x5, flags: 0x1}, - 83: {lang: 0x13d, script: 0x52, flags: 0x0}, - 84: {lang: 0x0, script: 0x52, flags: 0x0}, - 85: {lang: 0x13d, script: 0x52, flags: 0x0}, - 88: {lang: 0x13d, script: 0x52, flags: 0x0}, - 89: {lang: 0x3be, script: 0x52, flags: 0x0}, - 90: {lang: 0x39f, script: 0x52, flags: 0x0}, - 92: {lang: 0xf, script: 0x2, flags: 0x1}, - 93: {lang: 0xf9, script: 0x52, flags: 0x0}, - 95: {lang: 0x10c, script: 0x52, flags: 0x0}, - 97: {lang: 0x1, script: 0x52, flags: 0x0}, - 98: {lang: 0x100, script: 0x52, flags: 0x0}, - 100: {lang: 0x13d, script: 0x52, flags: 0x0}, - 102: {lang: 0x11, script: 0x2, flags: 0x1}, - 103: {lang: 0x13d, script: 0x52, flags: 0x0}, - 104: {lang: 0x13d, script: 0x52, flags: 0x0}, - 105: {lang: 0x13f, script: 0x52, flags: 0x0}, - 106: {lang: 0x3a, script: 0x5, flags: 0x0}, +// Size: 1432 bytes, 358 elements +var likelyRegion = [358]likelyLangScript{ + 34: {lang: 0xd7, script: 0x55, flags: 0x0}, + 35: {lang: 0x3a, script: 0x5, flags: 0x0}, + 36: {lang: 0x0, script: 0x2, flags: 0x1}, + 39: {lang: 0x2, script: 0x2, flags: 0x1}, + 40: {lang: 0x4, script: 0x2, flags: 0x1}, + 42: {lang: 0x3be, script: 0x55, flags: 0x0}, + 43: {lang: 0x0, script: 0x55, flags: 0x0}, + 44: {lang: 0x13d, script: 0x55, flags: 0x0}, + 45: {lang: 0x419, script: 0x55, flags: 0x0}, + 46: {lang: 0x10c, script: 0x55, flags: 0x0}, + 48: {lang: 0x365, script: 0x55, flags: 0x0}, + 49: {lang: 0x442, script: 0x55, flags: 0x0}, + 50: {lang: 0x58, script: 0x55, flags: 0x0}, + 51: {lang: 0x6, script: 0x2, flags: 0x1}, + 53: {lang: 0xa5, script: 0xe, flags: 0x0}, + 54: {lang: 0x365, script: 0x55, flags: 0x0}, + 55: {lang: 0x15d, script: 0x55, flags: 0x0}, + 56: {lang: 0x7e, script: 0x1e, flags: 0x0}, + 57: {lang: 0x3a, script: 0x5, flags: 0x0}, + 58: {lang: 0x3d7, script: 0x55, flags: 0x0}, + 59: {lang: 0x15d, script: 0x55, flags: 0x0}, + 60: {lang: 0x15d, script: 0x55, flags: 0x0}, + 62: {lang: 0x31d, script: 0x55, flags: 0x0}, + 63: {lang: 0x13d, script: 0x55, flags: 0x0}, + 64: {lang: 0x39f, script: 0x55, flags: 0x0}, + 65: {lang: 0x3be, script: 0x55, flags: 0x0}, + 67: {lang: 0x8, script: 0x2, flags: 0x1}, + 69: {lang: 0x0, script: 0x55, flags: 0x0}, + 71: {lang: 0x71, script: 0x1e, flags: 0x0}, + 73: {lang: 0x510, script: 0x3a, flags: 0x2}, + 74: {lang: 0x31d, script: 0x5, flags: 0x2}, + 75: {lang: 0x443, script: 0x55, flags: 0x0}, + 76: {lang: 0x15d, script: 0x55, flags: 0x0}, + 77: {lang: 0x15d, script: 0x55, flags: 0x0}, + 78: {lang: 0x10c, script: 0x55, flags: 0x0}, + 79: {lang: 0x15d, script: 0x55, flags: 0x0}, + 81: {lang: 0x13d, script: 0x55, flags: 0x0}, + 82: {lang: 0x15d, script: 0x55, flags: 0x0}, + 83: {lang: 0xa, script: 0x5, flags: 0x1}, + 84: {lang: 0x13d, script: 0x55, flags: 0x0}, + 85: {lang: 0x0, script: 0x55, flags: 0x0}, + 86: {lang: 0x13d, script: 0x55, flags: 0x0}, + 89: {lang: 0x13d, script: 0x55, flags: 0x0}, + 90: {lang: 0x3be, script: 0x55, flags: 0x0}, + 91: {lang: 0x39f, script: 0x55, flags: 0x0}, + 93: {lang: 0xf, script: 0x2, flags: 0x1}, + 94: {lang: 0xf9, script: 0x55, flags: 0x0}, + 96: {lang: 0x10c, script: 0x55, flags: 0x0}, + 98: {lang: 0x1, script: 0x55, flags: 0x0}, + 99: {lang: 0x100, script: 0x55, flags: 0x0}, + 101: {lang: 0x13d, script: 0x55, flags: 0x0}, + 103: {lang: 0x11, script: 0x2, flags: 0x1}, + 104: {lang: 0x13d, script: 0x55, flags: 0x0}, + 105: {lang: 0x13d, script: 0x55, flags: 0x0}, + 106: {lang: 0x13f, script: 0x55, flags: 0x0}, 107: {lang: 0x3a, script: 0x5, flags: 0x0}, - 108: {lang: 0x46d, script: 0x27, flags: 0x0}, - 109: {lang: 0x13d, script: 0x52, flags: 0x0}, - 110: {lang: 0x13, script: 0x2, flags: 0x1}, - 112: {lang: 0x10c, script: 0x52, flags: 0x0}, - 113: {lang: 0x150, script: 0x52, flags: 0x0}, - 114: {lang: 0x1be, script: 0x20, flags: 0x2}, - 117: {lang: 0x157, script: 0x52, flags: 0x0}, - 119: {lang: 0x15d, script: 0x52, flags: 0x0}, - 121: {lang: 0x15d, script: 0x52, flags: 0x0}, - 122: {lang: 0x15, script: 0x2, flags: 0x1}, - 124: {lang: 0x17, script: 0x3, flags: 0x1}, - 125: {lang: 0x15d, script: 0x52, flags: 0x0}, - 127: {lang: 0x21, script: 0x52, flags: 0x0}, - 129: {lang: 0x243, script: 0x52, flags: 0x0}, - 131: {lang: 0x15d, script: 0x52, flags: 0x0}, - 132: {lang: 0x15d, script: 0x52, flags: 0x0}, - 133: {lang: 0x13d, script: 0x52, flags: 0x0}, - 134: {lang: 0x1a, script: 0x2, flags: 0x1}, - 135: {lang: 0x0, script: 0x52, flags: 0x0}, - 136: {lang: 0x13d, script: 0x52, flags: 0x0}, - 138: {lang: 0x3be, script: 0x52, flags: 0x0}, - 140: {lang: 0x527, script: 0x35, flags: 0x0}, - 141: {lang: 0x0, script: 0x52, flags: 0x0}, - 142: {lang: 0x13d, script: 0x52, flags: 0x0}, - 143: {lang: 0x1cf, script: 0x52, flags: 0x0}, - 144: {lang: 0x1d2, script: 0x52, flags: 0x0}, - 145: {lang: 0x1d3, script: 0x52, flags: 0x0}, - 147: {lang: 0x13d, script: 0x52, flags: 0x0}, - 148: {lang: 0x1c, script: 0x2, flags: 0x1}, - 150: {lang: 0x1ba, script: 0x37, flags: 0x0}, - 152: {lang: 0x1e, script: 0x3, flags: 0x1}, - 154: {lang: 0x3a, script: 0x5, flags: 0x0}, - 155: {lang: 0x21, script: 0x2, flags: 0x1}, - 156: {lang: 0x1f6, script: 0x52, flags: 0x0}, - 157: {lang: 0x1f7, script: 0x52, flags: 0x0}, - 160: {lang: 0x3a, script: 0x5, flags: 0x0}, - 161: {lang: 0x1fe, script: 0x41, flags: 0x0}, - 163: {lang: 0x443, script: 0x52, flags: 0x0}, - 164: {lang: 0x288, script: 0x1e, flags: 0x0}, - 165: {lang: 0x23, script: 0x3, flags: 0x1}, - 167: {lang: 0x26, script: 0x2, flags: 0x1}, - 169: {lang: 0x252, script: 0x4b, flags: 0x0}, - 170: {lang: 0x252, script: 0x4b, flags: 0x0}, - 171: {lang: 0x3a, script: 0x5, flags: 0x0}, - 173: {lang: 0x3e0, script: 0x1e, flags: 0x0}, - 174: {lang: 0x28, script: 0x2, flags: 0x1}, - 175: {lang: 0x3a, script: 0x5, flags: 0x0}, - 177: {lang: 0x10c, script: 0x52, flags: 0x0}, - 178: {lang: 0x40a, script: 0xc1, flags: 0x0}, - 180: {lang: 0x439, script: 0x52, flags: 0x0}, - 181: {lang: 0x2be, script: 0x52, flags: 0x0}, - 182: {lang: 0x15d, script: 0x52, flags: 0x0}, - 183: {lang: 0x2c5, script: 0x52, flags: 0x0}, - 184: {lang: 0x3a, script: 0x5, flags: 0x0}, - 185: {lang: 0x2a, script: 0x2, flags: 0x1}, - 186: {lang: 0x15d, script: 0x52, flags: 0x0}, - 187: {lang: 0x2c, script: 0x2, flags: 0x1}, - 188: {lang: 0x430, script: 0x52, flags: 0x0}, - 189: {lang: 0x15d, script: 0x52, flags: 0x0}, - 190: {lang: 0x2ef, script: 0x52, flags: 0x0}, - 193: {lang: 0x2e, script: 0x2, flags: 0x1}, - 194: {lang: 0xa0, script: 0x52, flags: 0x0}, - 195: {lang: 0x30, script: 0x2, flags: 0x1}, - 196: {lang: 0x32, script: 0x2, flags: 0x1}, - 197: {lang: 0x34, script: 0x2, flags: 0x1}, - 199: {lang: 0x15d, script: 0x52, flags: 0x0}, - 200: {lang: 0x36, script: 0x2, flags: 0x1}, - 202: {lang: 0x31e, script: 0x52, flags: 0x0}, - 203: {lang: 0x38, script: 0x3, flags: 0x1}, - 204: {lang: 0x127, script: 0xd4, flags: 0x0}, - 206: {lang: 0x13d, script: 0x52, flags: 0x0}, - 207: {lang: 0x31d, script: 0x52, flags: 0x0}, - 208: {lang: 0x3be, script: 0x52, flags: 0x0}, - 209: {lang: 0x16, script: 0x52, flags: 0x0}, - 210: {lang: 0x15d, script: 0x52, flags: 0x0}, - 211: {lang: 0x1b2, script: 0x52, flags: 0x0}, - 213: {lang: 0x1b2, script: 0x5, flags: 0x2}, - 215: {lang: 0x13d, script: 0x52, flags: 0x0}, - 216: {lang: 0x365, script: 0x52, flags: 0x0}, - 217: {lang: 0x345, script: 0x52, flags: 0x0}, - 218: {lang: 0x34f, script: 0x20, flags: 0x0}, - 224: {lang: 0x3a, script: 0x5, flags: 0x0}, - 225: {lang: 0x13d, script: 0x52, flags: 0x0}, - 227: {lang: 0x13d, script: 0x52, flags: 0x0}, - 228: {lang: 0x15d, script: 0x52, flags: 0x0}, - 229: {lang: 0x484, script: 0x52, flags: 0x0}, - 230: {lang: 0x152, script: 0x52, flags: 0x0}, - 231: {lang: 0x3b, script: 0x3, flags: 0x1}, - 232: {lang: 0x3b1, script: 0x52, flags: 0x0}, - 233: {lang: 0x15d, script: 0x52, flags: 0x0}, - 235: {lang: 0x13d, script: 0x52, flags: 0x0}, - 236: {lang: 0x3a, script: 0x5, flags: 0x0}, - 237: {lang: 0x3be, script: 0x52, flags: 0x0}, - 239: {lang: 0x3a0, script: 0x52, flags: 0x0}, - 240: {lang: 0x192, script: 0x52, flags: 0x0}, - 242: {lang: 0x3a, script: 0x5, flags: 0x0}, - 257: {lang: 0x15d, script: 0x52, flags: 0x0}, - 259: {lang: 0x3e, script: 0x2, flags: 0x1}, - 260: {lang: 0x430, script: 0x1e, flags: 0x0}, - 261: {lang: 0x40, script: 0x2, flags: 0x1}, - 262: {lang: 0x3e3, script: 0x52, flags: 0x0}, - 263: {lang: 0x3a, script: 0x5, flags: 0x0}, - 265: {lang: 0x15d, script: 0x52, flags: 0x0}, - 266: {lang: 0x3a, script: 0x5, flags: 0x0}, - 267: {lang: 0x42, script: 0x2, flags: 0x1}, - 270: {lang: 0x414, script: 0x52, flags: 0x0}, - 271: {lang: 0x345, script: 0x52, flags: 0x0}, - 272: {lang: 0x44, script: 0x2, flags: 0x1}, - 274: {lang: 0x1f7, script: 0x52, flags: 0x0}, - 275: {lang: 0x15d, script: 0x52, flags: 0x0}, - 276: {lang: 0x427, script: 0x52, flags: 0x0}, - 277: {lang: 0x365, script: 0x52, flags: 0x0}, - 279: {lang: 0x3be, script: 0x52, flags: 0x0}, - 281: {lang: 0x13d, script: 0x52, flags: 0x0}, - 283: {lang: 0x46, script: 0x2, flags: 0x1}, - 287: {lang: 0x15d, script: 0x52, flags: 0x0}, - 288: {lang: 0x15d, script: 0x52, flags: 0x0}, - 289: {lang: 0x48, script: 0x2, flags: 0x1}, - 290: {lang: 0x4a, script: 0x3, flags: 0x1}, - 291: {lang: 0x4d, script: 0x2, flags: 0x1}, - 292: {lang: 0x475, script: 0x52, flags: 0x0}, - 293: {lang: 0x3be, script: 0x52, flags: 0x0}, - 294: {lang: 0x474, script: 0x52, flags: 0x0}, - 295: {lang: 0x4f, script: 0x2, flags: 0x1}, - 296: {lang: 0x480, script: 0x52, flags: 0x0}, - 298: {lang: 0x51, script: 0x4, flags: 0x1}, - 300: {lang: 0x49e, script: 0x52, flags: 0x0}, - 301: {lang: 0x55, script: 0x2, flags: 0x1}, - 302: {lang: 0x443, script: 0x52, flags: 0x0}, - 303: {lang: 0x57, script: 0x3, flags: 0x1}, - 304: {lang: 0x443, script: 0x52, flags: 0x0}, - 308: {lang: 0x510, script: 0x37, flags: 0x2}, - 309: {lang: 0x13d, script: 0x52, flags: 0x0}, - 310: {lang: 0x4ba, script: 0x52, flags: 0x0}, - 311: {lang: 0x1f7, script: 0x52, flags: 0x0}, - 314: {lang: 0x13d, script: 0x52, flags: 0x0}, - 317: {lang: 0x4c1, script: 0x52, flags: 0x0}, - 318: {lang: 0x8a, script: 0x52, flags: 0x0}, - 319: {lang: 0x15d, script: 0x52, flags: 0x0}, - 321: {lang: 0x419, script: 0x52, flags: 0x0}, - 332: {lang: 0x5a, script: 0x2, flags: 0x1}, - 349: {lang: 0x3a, script: 0x5, flags: 0x0}, - 350: {lang: 0x5c, script: 0x2, flags: 0x1}, - 355: {lang: 0x421, script: 0x52, flags: 0x0}, + 108: {lang: 0x3a, script: 0x5, flags: 0x0}, + 109: {lang: 0x46d, script: 0x28, flags: 0x0}, + 110: {lang: 0x13d, script: 0x55, flags: 0x0}, + 111: {lang: 0x13, script: 0x2, flags: 0x1}, + 113: {lang: 0x10c, script: 0x55, flags: 0x0}, + 114: {lang: 0x150, script: 0x55, flags: 0x0}, + 115: {lang: 0x1be, script: 0x20, flags: 0x2}, + 118: {lang: 0x157, script: 0x55, flags: 0x0}, + 120: {lang: 0x15d, script: 0x55, flags: 0x0}, + 122: {lang: 0x15d, script: 0x55, flags: 0x0}, + 123: {lang: 0x15, script: 0x2, flags: 0x1}, + 125: {lang: 0x17, script: 0x3, flags: 0x1}, + 126: {lang: 0x15d, script: 0x55, flags: 0x0}, + 128: {lang: 0x21, script: 0x55, flags: 0x0}, + 130: {lang: 0x243, script: 0x55, flags: 0x0}, + 132: {lang: 0x15d, script: 0x55, flags: 0x0}, + 133: {lang: 0x15d, script: 0x55, flags: 0x0}, + 134: {lang: 0x13d, script: 0x55, flags: 0x0}, + 135: {lang: 0x1a, script: 0x2, flags: 0x1}, + 136: {lang: 0x0, script: 0x55, flags: 0x0}, + 137: {lang: 0x13d, script: 0x55, flags: 0x0}, + 139: {lang: 0x3be, script: 0x55, flags: 0x0}, + 141: {lang: 0x527, script: 0x38, flags: 0x0}, + 142: {lang: 0x0, script: 0x55, flags: 0x0}, + 143: {lang: 0x13d, script: 0x55, flags: 0x0}, + 144: {lang: 0x1cf, script: 0x55, flags: 0x0}, + 145: {lang: 0x1d2, script: 0x55, flags: 0x0}, + 146: {lang: 0x1d3, script: 0x55, flags: 0x0}, + 148: {lang: 0x13d, script: 0x55, flags: 0x0}, + 149: {lang: 0x1c, script: 0x2, flags: 0x1}, + 151: {lang: 0x1ba, script: 0x3a, flags: 0x0}, + 153: {lang: 0x1e, script: 0x3, flags: 0x1}, + 155: {lang: 0x3a, script: 0x5, flags: 0x0}, + 156: {lang: 0x21, script: 0x2, flags: 0x1}, + 157: {lang: 0x1f6, script: 0x55, flags: 0x0}, + 158: {lang: 0x1f7, script: 0x55, flags: 0x0}, + 161: {lang: 0x3a, script: 0x5, flags: 0x0}, + 162: {lang: 0x1fe, script: 0x44, flags: 0x0}, + 164: {lang: 0x443, script: 0x55, flags: 0x0}, + 165: {lang: 0x288, script: 0x1e, flags: 0x0}, + 166: {lang: 0x23, script: 0x3, flags: 0x1}, + 168: {lang: 0x26, script: 0x2, flags: 0x1}, + 170: {lang: 0x252, script: 0x4e, flags: 0x0}, + 171: {lang: 0x252, script: 0x4e, flags: 0x0}, + 172: {lang: 0x3a, script: 0x5, flags: 0x0}, + 174: {lang: 0x3e0, script: 0x1e, flags: 0x0}, + 175: {lang: 0x28, script: 0x2, flags: 0x1}, + 176: {lang: 0x3a, script: 0x5, flags: 0x0}, + 178: {lang: 0x10c, script: 0x55, flags: 0x0}, + 179: {lang: 0x40a, script: 0xc6, flags: 0x0}, + 181: {lang: 0x439, script: 0x55, flags: 0x0}, + 182: {lang: 0x2be, script: 0x55, flags: 0x0}, + 183: {lang: 0x15d, script: 0x55, flags: 0x0}, + 184: {lang: 0x2c5, script: 0x55, flags: 0x0}, + 185: {lang: 0x3a, script: 0x5, flags: 0x0}, + 186: {lang: 0x2a, script: 0x2, flags: 0x1}, + 187: {lang: 0x15d, script: 0x55, flags: 0x0}, + 188: {lang: 0x2c, script: 0x2, flags: 0x1}, + 189: {lang: 0x430, script: 0x55, flags: 0x0}, + 190: {lang: 0x15d, script: 0x55, flags: 0x0}, + 191: {lang: 0x2ef, script: 0x55, flags: 0x0}, + 194: {lang: 0x2e, script: 0x2, flags: 0x1}, + 195: {lang: 0xa0, script: 0x55, flags: 0x0}, + 196: {lang: 0x30, script: 0x2, flags: 0x1}, + 197: {lang: 0x32, script: 0x2, flags: 0x1}, + 198: {lang: 0x34, script: 0x2, flags: 0x1}, + 200: {lang: 0x15d, script: 0x55, flags: 0x0}, + 201: {lang: 0x36, script: 0x2, flags: 0x1}, + 203: {lang: 0x31e, script: 0x55, flags: 0x0}, + 204: {lang: 0x38, script: 0x3, flags: 0x1}, + 205: {lang: 0x127, script: 0xda, flags: 0x0}, + 207: {lang: 0x13d, script: 0x55, flags: 0x0}, + 208: {lang: 0x31d, script: 0x55, flags: 0x0}, + 209: {lang: 0x3be, script: 0x55, flags: 0x0}, + 210: {lang: 0x16, script: 0x55, flags: 0x0}, + 211: {lang: 0x15d, script: 0x55, flags: 0x0}, + 212: {lang: 0x1b2, script: 0x55, flags: 0x0}, + 214: {lang: 0x1b2, script: 0x5, flags: 0x2}, + 216: {lang: 0x13d, script: 0x55, flags: 0x0}, + 217: {lang: 0x365, script: 0x55, flags: 0x0}, + 218: {lang: 0x345, script: 0x55, flags: 0x0}, + 219: {lang: 0x34f, script: 0x20, flags: 0x0}, + 225: {lang: 0x3a, script: 0x5, flags: 0x0}, + 226: {lang: 0x13d, script: 0x55, flags: 0x0}, + 228: {lang: 0x13d, script: 0x55, flags: 0x0}, + 229: {lang: 0x15d, script: 0x55, flags: 0x0}, + 230: {lang: 0x484, script: 0x55, flags: 0x0}, + 231: {lang: 0x152, script: 0x55, flags: 0x0}, + 232: {lang: 0x3b, script: 0x3, flags: 0x1}, + 233: {lang: 0x3b1, script: 0x55, flags: 0x0}, + 234: {lang: 0x15d, script: 0x55, flags: 0x0}, + 236: {lang: 0x13d, script: 0x55, flags: 0x0}, + 237: {lang: 0x3a, script: 0x5, flags: 0x0}, + 238: {lang: 0x3be, script: 0x55, flags: 0x0}, + 240: {lang: 0x3a0, script: 0x55, flags: 0x0}, + 241: {lang: 0x192, script: 0x55, flags: 0x0}, + 243: {lang: 0x3a, script: 0x5, flags: 0x0}, + 258: {lang: 0x15d, script: 0x55, flags: 0x0}, + 260: {lang: 0x3e, script: 0x2, flags: 0x1}, + 261: {lang: 0x430, script: 0x1e, flags: 0x0}, + 262: {lang: 0x40, script: 0x2, flags: 0x1}, + 263: {lang: 0x3e3, script: 0x55, flags: 0x0}, + 264: {lang: 0x3a, script: 0x5, flags: 0x0}, + 266: {lang: 0x15d, script: 0x55, flags: 0x0}, + 267: {lang: 0x3a, script: 0x5, flags: 0x0}, + 268: {lang: 0x42, script: 0x2, flags: 0x1}, + 271: {lang: 0x414, script: 0x55, flags: 0x0}, + 272: {lang: 0x345, script: 0x55, flags: 0x0}, + 273: {lang: 0x44, script: 0x2, flags: 0x1}, + 275: {lang: 0x1f7, script: 0x55, flags: 0x0}, + 276: {lang: 0x15d, script: 0x55, flags: 0x0}, + 277: {lang: 0x427, script: 0x55, flags: 0x0}, + 278: {lang: 0x365, script: 0x55, flags: 0x0}, + 280: {lang: 0x3be, script: 0x55, flags: 0x0}, + 282: {lang: 0x13d, script: 0x55, flags: 0x0}, + 284: {lang: 0x46, script: 0x2, flags: 0x1}, + 288: {lang: 0x15d, script: 0x55, flags: 0x0}, + 289: {lang: 0x15d, script: 0x55, flags: 0x0}, + 290: {lang: 0x48, script: 0x2, flags: 0x1}, + 291: {lang: 0x4a, script: 0x3, flags: 0x1}, + 292: {lang: 0x4d, script: 0x2, flags: 0x1}, + 293: {lang: 0x475, script: 0x55, flags: 0x0}, + 294: {lang: 0x3be, script: 0x55, flags: 0x0}, + 295: {lang: 0x474, script: 0x55, flags: 0x0}, + 296: {lang: 0x4f, script: 0x2, flags: 0x1}, + 297: {lang: 0x480, script: 0x55, flags: 0x0}, + 299: {lang: 0x51, script: 0x4, flags: 0x1}, + 301: {lang: 0x49e, script: 0x55, flags: 0x0}, + 302: {lang: 0x55, script: 0x2, flags: 0x1}, + 303: {lang: 0x443, script: 0x55, flags: 0x0}, + 304: {lang: 0x57, script: 0x3, flags: 0x1}, + 305: {lang: 0x443, script: 0x55, flags: 0x0}, + 309: {lang: 0x510, script: 0x3a, flags: 0x2}, + 310: {lang: 0x13d, script: 0x55, flags: 0x0}, + 311: {lang: 0x4ba, script: 0x55, flags: 0x0}, + 312: {lang: 0x1f7, script: 0x55, flags: 0x0}, + 315: {lang: 0x13d, script: 0x55, flags: 0x0}, + 318: {lang: 0x4c1, script: 0x55, flags: 0x0}, + 319: {lang: 0x8a, script: 0x55, flags: 0x0}, + 320: {lang: 0x15d, script: 0x55, flags: 0x0}, + 322: {lang: 0x419, script: 0x55, flags: 0x0}, + 333: {lang: 0x5a, script: 0x2, flags: 0x1}, + 350: {lang: 0x3a, script: 0x5, flags: 0x0}, + 351: {lang: 0x5c, script: 0x2, flags: 0x1}, + 356: {lang: 0x421, script: 0x55, flags: 0x0}, } // likelyRegionList holds lists info associated with likelyRegion. // Size: 376 bytes, 94 elements var likelyRegionList = [94]likelyLangScript{ 0: {lang: 0x147, script: 0x5, flags: 0x0}, - 1: {lang: 0x474, script: 0x52, flags: 0x0}, - 2: {lang: 0x42f, script: 0x52, flags: 0x0}, + 1: {lang: 0x474, script: 0x55, flags: 0x0}, + 2: {lang: 0x42f, script: 0x55, flags: 0x0}, 3: {lang: 0x2fd, script: 0x1e, flags: 0x0}, 4: {lang: 0x1d5, script: 0x8, flags: 0x0}, - 5: {lang: 0x272, script: 0x52, flags: 0x0}, - 6: {lang: 0xb7, script: 0x52, flags: 0x0}, + 5: {lang: 0x272, script: 0x55, flags: 0x0}, + 6: {lang: 0xb7, script: 0x55, flags: 0x0}, 7: {lang: 0x430, script: 0x1e, flags: 0x0}, - 8: {lang: 0x12c, script: 0xd6, flags: 0x0}, + 8: {lang: 0x12c, script: 0xdc, flags: 0x0}, 9: {lang: 0x34f, script: 0x20, flags: 0x0}, - 10: {lang: 0x527, script: 0x34, flags: 0x0}, + 10: {lang: 0x527, script: 0x37, flags: 0x0}, 11: {lang: 0x4aa, script: 0x5, flags: 0x0}, - 12: {lang: 0x51d, script: 0x35, flags: 0x0}, - 13: {lang: 0x521, script: 0x52, flags: 0x0}, - 14: {lang: 0x298, script: 0xd5, flags: 0x0}, - 15: {lang: 0x135, script: 0x2d, flags: 0x0}, - 16: {lang: 0x488, script: 0x52, flags: 0x0}, + 12: {lang: 0x51d, script: 0x38, flags: 0x0}, + 13: {lang: 0x521, script: 0x55, flags: 0x0}, + 14: {lang: 0x298, script: 0xdb, flags: 0x0}, + 15: {lang: 0x135, script: 0x30, flags: 0x0}, + 16: {lang: 0x488, script: 0x55, flags: 0x0}, 17: {lang: 0x3a, script: 0x5, flags: 0x0}, - 18: {lang: 0x15d, script: 0x52, flags: 0x0}, - 19: {lang: 0x27, script: 0x27, flags: 0x0}, - 20: {lang: 0x138, script: 0x52, flags: 0x0}, + 18: {lang: 0x15d, script: 0x55, flags: 0x0}, + 19: {lang: 0x27, script: 0x28, flags: 0x0}, + 20: {lang: 0x138, script: 0x55, flags: 0x0}, 21: {lang: 0x268, script: 0x5, flags: 0x2}, - 22: {lang: 0x510, script: 0x37, flags: 0x2}, - 23: {lang: 0x20e, script: 0x29, flags: 0x0}, + 22: {lang: 0x510, script: 0x3a, flags: 0x2}, + 23: {lang: 0x20e, script: 0x2a, flags: 0x0}, 24: {lang: 0x5, script: 0x1e, flags: 0x0}, - 25: {lang: 0x272, script: 0x52, flags: 0x0}, - 26: {lang: 0x135, script: 0x2d, flags: 0x0}, + 25: {lang: 0x272, script: 0x55, flags: 0x0}, + 26: {lang: 0x135, script: 0x30, flags: 0x0}, 27: {lang: 0x2fd, script: 0x1e, flags: 0x0}, - 28: {lang: 0x1df, script: 0x52, flags: 0x0}, + 28: {lang: 0x1df, script: 0x55, flags: 0x0}, 29: {lang: 0x31d, script: 0x5, flags: 0x0}, 30: {lang: 0x1bc, script: 0x20, flags: 0x0}, 31: {lang: 0x4b2, script: 0x5, flags: 0x0}, - 32: {lang: 0x234, script: 0x6b, flags: 0x0}, + 32: {lang: 0x234, script: 0x70, flags: 0x0}, 33: {lang: 0x147, script: 0x5, flags: 0x0}, - 34: {lang: 0x474, script: 0x52, flags: 0x0}, - 35: {lang: 0x248, script: 0x46, flags: 0x0}, + 34: {lang: 0x474, script: 0x55, flags: 0x0}, + 35: {lang: 0x248, script: 0x49, flags: 0x0}, 36: {lang: 0xe6, script: 0x5, flags: 0x0}, - 37: {lang: 0x224, script: 0xd5, flags: 0x0}, + 37: {lang: 0x224, script: 0xdb, flags: 0x0}, 38: {lang: 0x3a, script: 0x5, flags: 0x0}, - 39: {lang: 0x15d, script: 0x52, flags: 0x0}, - 40: {lang: 0x2b6, script: 0x4f, flags: 0x0}, - 41: {lang: 0x224, script: 0xd5, flags: 0x0}, + 39: {lang: 0x15d, script: 0x55, flags: 0x0}, + 40: {lang: 0x2b6, script: 0x52, flags: 0x0}, + 41: {lang: 0x224, script: 0xdb, flags: 0x0}, 42: {lang: 0x3a, script: 0x5, flags: 0x0}, - 43: {lang: 0x15d, script: 0x52, flags: 0x0}, - 44: {lang: 0x3da, script: 0x52, flags: 0x0}, + 43: {lang: 0x15d, script: 0x55, flags: 0x0}, + 44: {lang: 0x3da, script: 0x55, flags: 0x0}, 45: {lang: 0x4ac, script: 0x1e, flags: 0x0}, 46: {lang: 0x2fd, script: 0x1e, flags: 0x0}, - 47: {lang: 0x42f, script: 0x52, flags: 0x0}, - 48: {lang: 0x32f, script: 0x6b, flags: 0x0}, - 49: {lang: 0x211, script: 0x52, flags: 0x0}, + 47: {lang: 0x42f, script: 0x55, flags: 0x0}, + 48: {lang: 0x32f, script: 0x70, flags: 0x0}, + 49: {lang: 0x211, script: 0x55, flags: 0x0}, 50: {lang: 0x309, script: 0x1e, flags: 0x0}, 51: {lang: 0x240, script: 0x5, flags: 0x0}, - 52: {lang: 0x527, script: 0x35, flags: 0x0}, - 53: {lang: 0x3be, script: 0x52, flags: 0x0}, + 52: {lang: 0x527, script: 0x38, flags: 0x0}, + 53: {lang: 0x3be, script: 0x55, flags: 0x0}, 54: {lang: 0x3a, script: 0x5, flags: 0x0}, - 55: {lang: 0x15d, script: 0x52, flags: 0x0}, - 56: {lang: 0x2eb, script: 0x52, flags: 0x0}, + 55: {lang: 0x15d, script: 0x55, flags: 0x0}, + 56: {lang: 0x2eb, script: 0x55, flags: 0x0}, 57: {lang: 0x4b2, script: 0x5, flags: 0x0}, 58: {lang: 0x88, script: 0x20, flags: 0x0}, 59: {lang: 0x4b2, script: 0x5, flags: 0x0}, 60: {lang: 0x4b2, script: 0x5, flags: 0x0}, 61: {lang: 0xbe, script: 0x20, flags: 0x0}, - 62: {lang: 0x3da, script: 0x52, flags: 0x0}, + 62: {lang: 0x3da, script: 0x55, flags: 0x0}, 63: {lang: 0x7e, script: 0x1e, flags: 0x0}, 64: {lang: 0x3e0, script: 0x1e, flags: 0x0}, - 65: {lang: 0x265, script: 0x52, flags: 0x0}, - 66: {lang: 0x442, script: 0x52, flags: 0x0}, - 67: {lang: 0x510, script: 0x37, flags: 0x0}, - 68: {lang: 0x410, script: 0x52, flags: 0x0}, + 65: {lang: 0x265, script: 0x55, flags: 0x0}, + 66: {lang: 0x442, script: 0x55, flags: 0x0}, + 67: {lang: 0x510, script: 0x3a, flags: 0x0}, + 68: {lang: 0x410, script: 0x55, flags: 0x0}, 69: {lang: 0x4ac, script: 0x1e, flags: 0x0}, 70: {lang: 0x3a, script: 0x5, flags: 0x0}, - 71: {lang: 0x15d, script: 0x52, flags: 0x0}, - 72: {lang: 0x15d, script: 0x52, flags: 0x0}, + 71: {lang: 0x15d, script: 0x55, flags: 0x0}, + 72: {lang: 0x15d, script: 0x55, flags: 0x0}, 73: {lang: 0x35, script: 0x5, flags: 0x0}, - 74: {lang: 0x469, script: 0xd5, flags: 0x0}, + 74: {lang: 0x469, script: 0xdb, flags: 0x0}, 75: {lang: 0x2ea, script: 0x5, flags: 0x0}, - 76: {lang: 0x30d, script: 0x6b, flags: 0x0}, + 76: {lang: 0x30d, script: 0x70, flags: 0x0}, 77: {lang: 0x465, script: 0x1e, flags: 0x0}, 78: {lang: 0x147, script: 0x5, flags: 0x0}, 79: {lang: 0x3a, script: 0x5, flags: 0x0}, - 80: {lang: 0x15d, script: 0x52, flags: 0x0}, - 81: {lang: 0x488, script: 0x52, flags: 0x0}, + 80: {lang: 0x15d, script: 0x55, flags: 0x0}, + 81: {lang: 0x488, script: 0x55, flags: 0x0}, 82: {lang: 0x58, script: 0x5, flags: 0x0}, 83: {lang: 0x217, script: 0x1e, flags: 0x0}, - 84: {lang: 0x81, script: 0x2d, flags: 0x0}, - 85: {lang: 0x527, script: 0x35, flags: 0x0}, - 86: {lang: 0x48a, script: 0x52, flags: 0x0}, + 84: {lang: 0x81, script: 0x30, flags: 0x0}, + 85: {lang: 0x527, script: 0x38, flags: 0x0}, + 86: {lang: 0x48a, script: 0x55, flags: 0x0}, 87: {lang: 0x4ac, script: 0x1e, flags: 0x0}, - 88: {lang: 0x510, script: 0x37, flags: 0x0}, - 89: {lang: 0x3b1, script: 0x52, flags: 0x0}, - 90: {lang: 0x42f, script: 0x52, flags: 0x0}, + 88: {lang: 0x510, script: 0x3a, flags: 0x0}, + 89: {lang: 0x3b1, script: 0x55, flags: 0x0}, + 90: {lang: 0x42f, script: 0x55, flags: 0x0}, 91: {lang: 0x430, script: 0x1e, flags: 0x0}, - 92: {lang: 0x15d, script: 0x52, flags: 0x0}, + 92: {lang: 0x15d, script: 0x55, flags: 0x0}, 93: {lang: 0x444, script: 0x5, flags: 0x0}, } @@ -3234,94 +3245,101 @@ type likelyTag struct { script uint8 } -// Size: 192 bytes, 32 elements -var likelyRegionGroup = [32]likelyTag{ - 1: {lang: 0x138, region: 0xd5, script: 0x52}, - 2: {lang: 0x138, region: 0x134, script: 0x52}, - 3: {lang: 0x3be, region: 0x40, script: 0x52}, - 4: {lang: 0x138, region: 0x2e, script: 0x52}, - 5: {lang: 0x138, region: 0xd5, script: 0x52}, - 6: {lang: 0x13d, region: 0xce, script: 0x52}, - 7: {lang: 0x443, region: 0x12e, script: 0x52}, - 8: {lang: 0x3a, region: 0x6a, script: 0x5}, - 9: {lang: 0x443, region: 0x4a, script: 0x52}, - 10: {lang: 0x138, region: 0x160, script: 0x52}, - 11: {lang: 0x138, region: 0x134, script: 0x52}, - 12: {lang: 0x138, region: 0x134, script: 0x52}, - 13: {lang: 0x13d, region: 0x58, script: 0x52}, - 14: {lang: 0x527, region: 0x52, script: 0x34}, - 15: {lang: 0x1bc, region: 0x98, script: 0x20}, - 16: {lang: 0x1df, region: 0x94, script: 0x52}, - 17: {lang: 0x1f7, region: 0x9d, script: 0x52}, - 18: {lang: 0x138, region: 0x2e, script: 0x52}, - 19: {lang: 0x138, region: 0xe5, script: 0x52}, - 20: {lang: 0x138, region: 0x89, script: 0x52}, - 21: {lang: 0x419, region: 0x141, script: 0x52}, - 22: {lang: 0x527, region: 0x52, script: 0x34}, - 23: {lang: 0x4ba, region: 0x136, script: 0x52}, - 24: {lang: 0x3a, region: 0x107, script: 0x5}, - 25: {lang: 0x3e0, region: 0x105, script: 0x1e}, - 26: {lang: 0x3e0, region: 0x105, script: 0x1e}, - 27: {lang: 0x138, region: 0x7a, script: 0x52}, - 28: {lang: 0x10c, region: 0x5f, script: 0x52}, - 29: {lang: 0x13d, region: 0x1e, script: 0x52}, - 30: {lang: 0x138, region: 0x99, script: 0x52}, - 31: {lang: 0x138, region: 0x7a, script: 0x52}, +// Size: 198 bytes, 33 elements +var likelyRegionGroup = [33]likelyTag{ + 1: {lang: 0x138, region: 0xd6, script: 0x55}, + 2: {lang: 0x138, region: 0x135, script: 0x55}, + 3: {lang: 0x3be, region: 0x41, script: 0x55}, + 4: {lang: 0x138, region: 0x2f, script: 0x55}, + 5: {lang: 0x138, region: 0xd6, script: 0x55}, + 6: {lang: 0x13d, region: 0xcf, script: 0x55}, + 7: {lang: 0x443, region: 0x12f, script: 0x55}, + 8: {lang: 0x3a, region: 0x6b, script: 0x5}, + 9: {lang: 0x443, region: 0x4b, script: 0x55}, + 10: {lang: 0x138, region: 0x161, script: 0x55}, + 11: {lang: 0x138, region: 0x135, script: 0x55}, + 12: {lang: 0x138, region: 0x135, script: 0x55}, + 13: {lang: 0x13d, region: 0x59, script: 0x55}, + 14: {lang: 0x527, region: 0x53, script: 0x37}, + 15: {lang: 0x1bc, region: 0x99, script: 0x20}, + 16: {lang: 0x1df, region: 0x95, script: 0x55}, + 17: {lang: 0x1f7, region: 0x9e, script: 0x55}, + 18: {lang: 0x138, region: 0x2f, script: 0x55}, + 19: {lang: 0x138, region: 0xe6, script: 0x55}, + 20: {lang: 0x138, region: 0x8a, script: 0x55}, + 21: {lang: 0x419, region: 0x142, script: 0x55}, + 22: {lang: 0x527, region: 0x53, script: 0x37}, + 23: {lang: 0x4ba, region: 0x137, script: 0x55}, + 24: {lang: 0x3a, region: 0x108, script: 0x5}, + 25: {lang: 0x3e0, region: 0x106, script: 0x1e}, + 26: {lang: 0x3e0, region: 0x106, script: 0x1e}, + 27: {lang: 0x138, region: 0x7b, script: 0x55}, + 28: {lang: 0x10c, region: 0x60, script: 0x55}, + 30: {lang: 0x13d, region: 0x1f, script: 0x55}, + 31: {lang: 0x138, region: 0x9a, script: 0x55}, + 32: {lang: 0x138, region: 0x7b, script: 0x55}, } -// Size: 357 bytes, 357 elements -var regionToGroups = [357]uint8{ +// Size: 358 bytes, 358 elements +var regionToGroups = [358]uint8{ // Entry 0 - 3F 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, - // Entry 40 - 7F - 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, - 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, - // Entry 80 - BF - 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, - // Entry C0 - FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x04, - 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, + // Entry 40 - 7F + 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, + // Entry 80 - BF + 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, + // Entry C0 - FF + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, + 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 100 - 13F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, 0x00, 0x00, - 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, 0x00, // Entry 140 - 17F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +} + +// Size: 18 bytes, 3 elements +var paradigmLocales = [3][3]uint16{ + 0: [3]uint16{0x138, 0x0, 0x7b}, + 1: [3]uint16{0x13d, 0x0, 0x1f}, + 2: [3]uint16{0x3be, 0x41, 0xee}, } type mutualIntelligibility struct { @@ -3349,8 +3367,8 @@ type regionIntelligibility struct { // matchLang holds pairs of langIDs of base languages that are typically // mutually intelligible. Each pair is associated with a confidence and // whether the intelligibility goes one or both ways. -// Size: 690 bytes, 115 elements -var matchLang = [115]mutualIntelligibility{ +// Size: 678 bytes, 113 elements +var matchLang = [113]mutualIntelligibility{ 0: {want: 0x1cf, have: 0xb7, distance: 0x4, oneway: false}, 1: {want: 0x405, have: 0xb7, distance: 0x4, oneway: false}, 2: {want: 0x405, have: 0x1cf, distance: 0x4, oneway: false}, @@ -3358,146 +3376,144 @@ var matchLang = [115]mutualIntelligibility{ 4: {want: 0x438, have: 0x1, distance: 0x4, oneway: false}, 5: {want: 0x1a1, have: 0x10c, distance: 0x4, oneway: true}, 6: {want: 0x293, have: 0x10c, distance: 0x4, oneway: true}, - 7: {want: 0x430, have: 0x1cf, distance: 0x5, oneway: false}, - 8: {want: 0x430, have: 0xb7, distance: 0x5, oneway: false}, - 9: {want: 0x100, have: 0x36d, distance: 0x8, oneway: false}, - 10: {want: 0x100, have: 0x345, distance: 0x8, oneway: false}, - 11: {want: 0x5, have: 0x3e0, distance: 0xa, oneway: true}, - 12: {want: 0xd, have: 0x138, distance: 0xa, oneway: true}, - 13: {want: 0x16, have: 0x365, distance: 0xa, oneway: true}, - 14: {want: 0x21, have: 0x138, distance: 0xa, oneway: true}, - 15: {want: 0x56, have: 0x13d, distance: 0xa, oneway: true}, - 16: {want: 0x58, have: 0x3e0, distance: 0xa, oneway: true}, - 17: {want: 0x71, have: 0x3e0, distance: 0xa, oneway: true}, - 18: {want: 0x75, have: 0x138, distance: 0xa, oneway: true}, - 19: {want: 0x82, have: 0x1bc, distance: 0xa, oneway: true}, - 20: {want: 0xa5, have: 0x138, distance: 0xa, oneway: true}, - 21: {want: 0xb2, have: 0x15d, distance: 0xa, oneway: true}, - 22: {want: 0xdd, have: 0x152, distance: 0xa, oneway: true}, - 23: {want: 0xe5, have: 0x138, distance: 0xa, oneway: true}, - 24: {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true}, - 25: {want: 0xef, have: 0x15d, distance: 0xa, oneway: true}, - 26: {want: 0xf8, have: 0x15d, distance: 0xa, oneway: true}, - 27: {want: 0xff, have: 0x138, distance: 0xa, oneway: true}, - 28: {want: 0x12f, have: 0x138, distance: 0xa, oneway: true}, - 29: {want: 0x13b, have: 0x138, distance: 0xa, oneway: true}, - 30: {want: 0x13f, have: 0x150, distance: 0xa, oneway: true}, - 31: {want: 0x144, have: 0x13d, distance: 0xa, oneway: true}, - 32: {want: 0x157, have: 0x100, distance: 0xa, oneway: true}, - 33: {want: 0x16c, have: 0x365, distance: 0xa, oneway: true}, - 34: {want: 0x16d, have: 0x138, distance: 0xa, oneway: true}, - 35: {want: 0x16e, have: 0x138, distance: 0xa, oneway: true}, - 36: {want: 0x17c, have: 0x138, distance: 0xa, oneway: true}, - 37: {want: 0x18e, have: 0x13d, distance: 0xa, oneway: true}, - 38: {want: 0x192, have: 0x13d, distance: 0xa, oneway: true}, - 39: {want: 0x1a2, have: 0x1bc, distance: 0xa, oneway: true}, - 40: {want: 0x1b2, have: 0x138, distance: 0xa, oneway: true}, - 41: {want: 0x1b6, have: 0x138, distance: 0xa, oneway: true}, - 42: {want: 0x1d2, have: 0x15d, distance: 0xa, oneway: true}, - 43: {want: 0x1d5, have: 0x3e0, distance: 0xa, oneway: true}, - 44: {want: 0x1d7, have: 0x138, distance: 0xa, oneway: true}, - 45: {want: 0x1e5, have: 0x138, distance: 0xa, oneway: true}, - 46: {want: 0x1f6, have: 0x138, distance: 0xa, oneway: true}, - 47: {want: 0x20c, have: 0x1df, distance: 0xa, oneway: true}, - 48: {want: 0x20e, have: 0x138, distance: 0xa, oneway: true}, - 49: {want: 0x22b, have: 0x15d, distance: 0xa, oneway: true}, - 50: {want: 0x240, have: 0x3e0, distance: 0xa, oneway: true}, - 51: {want: 0x248, have: 0x138, distance: 0xa, oneway: true}, - 52: {want: 0x24f, have: 0x138, distance: 0xa, oneway: true}, - 53: {want: 0x263, have: 0x138, distance: 0xa, oneway: true}, - 54: {want: 0x272, have: 0x488, distance: 0xa, oneway: true}, - 55: {want: 0x288, have: 0x3e0, distance: 0xa, oneway: true}, - 56: {want: 0x28c, have: 0x1f7, distance: 0xa, oneway: true}, - 57: {want: 0x2a1, have: 0x138, distance: 0xa, oneway: true}, - 58: {want: 0x2b3, have: 0x15d, distance: 0xa, oneway: true}, - 59: {want: 0x2b6, have: 0x138, distance: 0xa, oneway: true}, - 60: {want: 0x2bc, have: 0x138, distance: 0xa, oneway: true}, - 61: {want: 0x2c1, have: 0x15d, distance: 0xa, oneway: true}, - 62: {want: 0x2eb, have: 0x138, distance: 0xa, oneway: true}, - 63: {want: 0x2ef, have: 0x15d, distance: 0xa, oneway: true}, - 64: {want: 0x2f8, have: 0x138, distance: 0xa, oneway: true}, - 65: {want: 0x2fd, have: 0x7e, distance: 0xa, oneway: true}, - 66: {want: 0x302, have: 0x138, distance: 0xa, oneway: true}, - 67: {want: 0x309, have: 0x3e0, distance: 0xa, oneway: true}, - 68: {want: 0x319, have: 0x1bc, distance: 0xa, oneway: true}, - 69: {want: 0x31d, have: 0x1df, distance: 0xa, oneway: true}, - 70: {want: 0x31e, have: 0x138, distance: 0xa, oneway: true}, - 71: {want: 0x32f, have: 0x138, distance: 0xa, oneway: true}, - 72: {want: 0x34f, have: 0x138, distance: 0xa, oneway: true}, - 73: {want: 0x368, have: 0x345, distance: 0xa, oneway: false}, - 74: {want: 0x368, have: 0x36d, distance: 0xa, oneway: true}, - 75: {want: 0x378, have: 0x138, distance: 0xa, oneway: true}, - 76: {want: 0x385, have: 0x138, distance: 0xa, oneway: true}, - 77: {want: 0x387, have: 0x138, distance: 0xa, oneway: true}, - 78: {want: 0x389, have: 0x15d, distance: 0xa, oneway: true}, - 79: {want: 0x38e, have: 0x138, distance: 0xa, oneway: true}, - 80: {want: 0x393, have: 0x138, distance: 0xa, oneway: true}, - 81: {want: 0x39b, have: 0x138, distance: 0xa, oneway: true}, - 82: {want: 0x3a3, have: 0x138, distance: 0xa, oneway: true}, - 83: {want: 0x3bc, have: 0x138, distance: 0xa, oneway: true}, - 84: {want: 0x3c2, have: 0x13d, distance: 0xa, oneway: true}, - 85: {want: 0x3d2, have: 0x10c, distance: 0xa, oneway: true}, - 86: {want: 0x3d7, have: 0x138, distance: 0xa, oneway: true}, - 87: {want: 0x3e3, have: 0x15d, distance: 0xa, oneway: true}, - 88: {want: 0x3e7, have: 0x1bc, distance: 0xa, oneway: true}, - 89: {want: 0x3f8, have: 0x138, distance: 0xa, oneway: true}, - 90: {want: 0x40a, have: 0x138, distance: 0xa, oneway: true}, - 91: {want: 0x421, have: 0x138, distance: 0xa, oneway: true}, - 92: {want: 0x427, have: 0x138, distance: 0xa, oneway: true}, - 93: {want: 0x42f, have: 0x138, distance: 0xa, oneway: true}, - 94: {want: 0x439, have: 0x138, distance: 0xa, oneway: true}, - 95: {want: 0x43c, have: 0x1df, distance: 0xa, oneway: true}, - 96: {want: 0x443, have: 0x138, distance: 0xa, oneway: true}, - 97: {want: 0x44e, have: 0x138, distance: 0xa, oneway: true}, - 98: {want: 0x45f, have: 0x138, distance: 0xa, oneway: true}, - 99: {want: 0x465, have: 0x3e0, distance: 0xa, oneway: true}, - 100: {want: 0x46d, have: 0x138, distance: 0xa, oneway: true}, - 101: {want: 0x474, have: 0x3e0, distance: 0xa, oneway: true}, - 102: {want: 0x3880, have: 0x138, distance: 0xa, oneway: true}, - 103: {want: 0x47e, have: 0x138, distance: 0xa, oneway: true}, - 104: {want: 0x480, have: 0x138, distance: 0xa, oneway: true}, - 105: {want: 0x492, have: 0x3e0, distance: 0xa, oneway: true}, - 106: {want: 0x49b, have: 0x138, distance: 0xa, oneway: true}, - 107: {want: 0x4aa, have: 0x527, distance: 0xa, oneway: true}, - 108: {want: 0x4b2, have: 0x138, distance: 0xa, oneway: true}, - 109: {want: 0x4ba, have: 0x3e0, distance: 0xa, oneway: true}, - 110: {want: 0x4e3, have: 0x15d, distance: 0xa, oneway: true}, - 111: {want: 0x4f0, have: 0x138, distance: 0xa, oneway: true}, - 112: {want: 0x510, have: 0x138, distance: 0xa, oneway: true}, - 113: {want: 0x516, have: 0x138, distance: 0xa, oneway: true}, - 114: {want: 0x52c, have: 0x138, distance: 0xa, oneway: true}, + 7: {want: 0x100, have: 0x36d, distance: 0x8, oneway: false}, + 8: {want: 0x100, have: 0x345, distance: 0x8, oneway: false}, + 9: {want: 0x5, have: 0x3e0, distance: 0xa, oneway: true}, + 10: {want: 0xd, have: 0x138, distance: 0xa, oneway: true}, + 11: {want: 0x16, have: 0x365, distance: 0xa, oneway: true}, + 12: {want: 0x21, have: 0x138, distance: 0xa, oneway: true}, + 13: {want: 0x56, have: 0x13d, distance: 0xa, oneway: true}, + 14: {want: 0x58, have: 0x3e0, distance: 0xa, oneway: true}, + 15: {want: 0x71, have: 0x3e0, distance: 0xa, oneway: true}, + 16: {want: 0x75, have: 0x138, distance: 0xa, oneway: true}, + 17: {want: 0x82, have: 0x1bc, distance: 0xa, oneway: true}, + 18: {want: 0xa5, have: 0x138, distance: 0xa, oneway: true}, + 19: {want: 0xb2, have: 0x15d, distance: 0xa, oneway: true}, + 20: {want: 0xdd, have: 0x152, distance: 0xa, oneway: true}, + 21: {want: 0xe5, have: 0x138, distance: 0xa, oneway: true}, + 22: {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true}, + 23: {want: 0xef, have: 0x15d, distance: 0xa, oneway: true}, + 24: {want: 0xf8, have: 0x15d, distance: 0xa, oneway: true}, + 25: {want: 0xff, have: 0x138, distance: 0xa, oneway: true}, + 26: {want: 0x12f, have: 0x138, distance: 0xa, oneway: true}, + 27: {want: 0x13b, have: 0x138, distance: 0xa, oneway: true}, + 28: {want: 0x13f, have: 0x150, distance: 0xa, oneway: true}, + 29: {want: 0x144, have: 0x13d, distance: 0xa, oneway: true}, + 30: {want: 0x157, have: 0x100, distance: 0xa, oneway: true}, + 31: {want: 0x16c, have: 0x365, distance: 0xa, oneway: true}, + 32: {want: 0x16d, have: 0x138, distance: 0xa, oneway: true}, + 33: {want: 0x16e, have: 0x138, distance: 0xa, oneway: true}, + 34: {want: 0x17c, have: 0x138, distance: 0xa, oneway: true}, + 35: {want: 0x18e, have: 0x13d, distance: 0xa, oneway: true}, + 36: {want: 0x192, have: 0x13d, distance: 0xa, oneway: true}, + 37: {want: 0x1a2, have: 0x1bc, distance: 0xa, oneway: true}, + 38: {want: 0x1b2, have: 0x138, distance: 0xa, oneway: true}, + 39: {want: 0x1b6, have: 0x138, distance: 0xa, oneway: true}, + 40: {want: 0x1d2, have: 0x15d, distance: 0xa, oneway: true}, + 41: {want: 0x1d5, have: 0x3e0, distance: 0xa, oneway: true}, + 42: {want: 0x1d7, have: 0x138, distance: 0xa, oneway: true}, + 43: {want: 0x1e5, have: 0x138, distance: 0xa, oneway: true}, + 44: {want: 0x1f6, have: 0x138, distance: 0xa, oneway: true}, + 45: {want: 0x20c, have: 0x1df, distance: 0xa, oneway: true}, + 46: {want: 0x20e, have: 0x138, distance: 0xa, oneway: true}, + 47: {want: 0x22b, have: 0x15d, distance: 0xa, oneway: true}, + 48: {want: 0x240, have: 0x3e0, distance: 0xa, oneway: true}, + 49: {want: 0x248, have: 0x138, distance: 0xa, oneway: true}, + 50: {want: 0x24f, have: 0x138, distance: 0xa, oneway: true}, + 51: {want: 0x263, have: 0x138, distance: 0xa, oneway: true}, + 52: {want: 0x272, have: 0x488, distance: 0xa, oneway: true}, + 53: {want: 0x288, have: 0x3e0, distance: 0xa, oneway: true}, + 54: {want: 0x28c, have: 0x1f7, distance: 0xa, oneway: true}, + 55: {want: 0x2a1, have: 0x138, distance: 0xa, oneway: true}, + 56: {want: 0x2b3, have: 0x15d, distance: 0xa, oneway: true}, + 57: {want: 0x2b6, have: 0x138, distance: 0xa, oneway: true}, + 58: {want: 0x2bc, have: 0x138, distance: 0xa, oneway: true}, + 59: {want: 0x2c1, have: 0x15d, distance: 0xa, oneway: true}, + 60: {want: 0x2eb, have: 0x138, distance: 0xa, oneway: true}, + 61: {want: 0x2ef, have: 0x15d, distance: 0xa, oneway: true}, + 62: {want: 0x2f8, have: 0x138, distance: 0xa, oneway: true}, + 63: {want: 0x2fd, have: 0x7e, distance: 0xa, oneway: true}, + 64: {want: 0x302, have: 0x138, distance: 0xa, oneway: true}, + 65: {want: 0x309, have: 0x3e0, distance: 0xa, oneway: true}, + 66: {want: 0x319, have: 0x1bc, distance: 0xa, oneway: true}, + 67: {want: 0x31d, have: 0x1df, distance: 0xa, oneway: true}, + 68: {want: 0x31e, have: 0x138, distance: 0xa, oneway: true}, + 69: {want: 0x32f, have: 0x138, distance: 0xa, oneway: true}, + 70: {want: 0x34f, have: 0x138, distance: 0xa, oneway: true}, + 71: {want: 0x368, have: 0x345, distance: 0xa, oneway: false}, + 72: {want: 0x368, have: 0x36d, distance: 0xa, oneway: true}, + 73: {want: 0x378, have: 0x138, distance: 0xa, oneway: true}, + 74: {want: 0x385, have: 0x138, distance: 0xa, oneway: true}, + 75: {want: 0x387, have: 0x138, distance: 0xa, oneway: true}, + 76: {want: 0x389, have: 0x15d, distance: 0xa, oneway: true}, + 77: {want: 0x38e, have: 0x138, distance: 0xa, oneway: true}, + 78: {want: 0x393, have: 0x138, distance: 0xa, oneway: true}, + 79: {want: 0x39b, have: 0x138, distance: 0xa, oneway: true}, + 80: {want: 0x3a3, have: 0x138, distance: 0xa, oneway: true}, + 81: {want: 0x3bc, have: 0x138, distance: 0xa, oneway: true}, + 82: {want: 0x3c2, have: 0x13d, distance: 0xa, oneway: true}, + 83: {want: 0x3d2, have: 0x10c, distance: 0xa, oneway: true}, + 84: {want: 0x3d7, have: 0x138, distance: 0xa, oneway: true}, + 85: {want: 0x3e3, have: 0x15d, distance: 0xa, oneway: true}, + 86: {want: 0x3e7, have: 0x1bc, distance: 0xa, oneway: true}, + 87: {want: 0x3f8, have: 0x138, distance: 0xa, oneway: true}, + 88: {want: 0x40a, have: 0x138, distance: 0xa, oneway: true}, + 89: {want: 0x421, have: 0x138, distance: 0xa, oneway: true}, + 90: {want: 0x427, have: 0x138, distance: 0xa, oneway: true}, + 91: {want: 0x42f, have: 0x138, distance: 0xa, oneway: true}, + 92: {want: 0x439, have: 0x138, distance: 0xa, oneway: true}, + 93: {want: 0x43c, have: 0x1df, distance: 0xa, oneway: true}, + 94: {want: 0x443, have: 0x138, distance: 0xa, oneway: true}, + 95: {want: 0x44e, have: 0x138, distance: 0xa, oneway: true}, + 96: {want: 0x45f, have: 0x138, distance: 0xa, oneway: true}, + 97: {want: 0x465, have: 0x3e0, distance: 0xa, oneway: true}, + 98: {want: 0x46d, have: 0x138, distance: 0xa, oneway: true}, + 99: {want: 0x474, have: 0x3e0, distance: 0xa, oneway: true}, + 100: {want: 0x3880, have: 0x138, distance: 0xa, oneway: true}, + 101: {want: 0x47e, have: 0x138, distance: 0xa, oneway: true}, + 102: {want: 0x480, have: 0x138, distance: 0xa, oneway: true}, + 103: {want: 0x492, have: 0x3e0, distance: 0xa, oneway: true}, + 104: {want: 0x49b, have: 0x138, distance: 0xa, oneway: true}, + 105: {want: 0x4aa, have: 0x527, distance: 0xa, oneway: true}, + 106: {want: 0x4b2, have: 0x138, distance: 0xa, oneway: true}, + 107: {want: 0x4ba, have: 0x3e0, distance: 0xa, oneway: true}, + 108: {want: 0x4e3, have: 0x15d, distance: 0xa, oneway: true}, + 109: {want: 0x4f0, have: 0x138, distance: 0xa, oneway: true}, + 110: {want: 0x510, have: 0x138, distance: 0xa, oneway: true}, + 111: {want: 0x516, have: 0x138, distance: 0xa, oneway: true}, + 112: {want: 0x52c, have: 0x138, distance: 0xa, oneway: true}, } // matchScript holds pairs of scriptIDs where readers of one script // can typically also read the other. Each is associated with a confidence. // Size: 208 bytes, 26 elements var matchScript = [26]scriptIntelligibility{ - 0: {wantLang: 0x430, haveLang: 0x430, wantScript: 0x52, haveScript: 0x1e, distance: 0x5}, - 1: {wantLang: 0x430, haveLang: 0x430, wantScript: 0x1e, haveScript: 0x52, distance: 0x5}, - 2: {wantLang: 0x58, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa}, - 3: {wantLang: 0xa5, haveLang: 0x138, wantScript: 0xe, haveScript: 0x52, distance: 0xa}, + 0: {wantLang: 0x430, haveLang: 0x430, wantScript: 0x55, haveScript: 0x1e, distance: 0x5}, + 1: {wantLang: 0x430, haveLang: 0x430, wantScript: 0x1e, haveScript: 0x55, distance: 0x5}, + 2: {wantLang: 0x58, haveLang: 0x3e0, wantScript: 0x55, haveScript: 0x1e, distance: 0xa}, + 3: {wantLang: 0xa5, haveLang: 0x138, wantScript: 0xe, haveScript: 0x55, distance: 0xa}, 4: {wantLang: 0x1d5, haveLang: 0x3e0, wantScript: 0x8, haveScript: 0x1e, distance: 0xa}, - 5: {wantLang: 0x20e, haveLang: 0x138, wantScript: 0x29, haveScript: 0x52, distance: 0xa}, - 6: {wantLang: 0x248, haveLang: 0x138, wantScript: 0x46, haveScript: 0x52, distance: 0xa}, - 7: {wantLang: 0x24f, haveLang: 0x138, wantScript: 0x4a, haveScript: 0x52, distance: 0xa}, - 8: {wantLang: 0x2b6, haveLang: 0x138, wantScript: 0x4f, haveScript: 0x52, distance: 0xa}, - 9: {wantLang: 0x302, haveLang: 0x138, wantScript: 0x64, haveScript: 0x52, distance: 0xa}, - 10: {wantLang: 0x32f, haveLang: 0x138, wantScript: 0x6b, haveScript: 0x52, distance: 0xa}, - 11: {wantLang: 0x34f, haveLang: 0x138, wantScript: 0x20, haveScript: 0x52, distance: 0xa}, - 12: {wantLang: 0x393, haveLang: 0x138, wantScript: 0x75, haveScript: 0x52, distance: 0xa}, - 13: {wantLang: 0x39b, haveLang: 0x138, wantScript: 0x2f, haveScript: 0x52, distance: 0xa}, - 14: {wantLang: 0x3bc, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa}, - 15: {wantLang: 0x3f8, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa}, - 16: {wantLang: 0x40a, haveLang: 0x138, wantScript: 0xc1, haveScript: 0x52, distance: 0xa}, - 17: {wantLang: 0x44e, haveLang: 0x138, wantScript: 0xcd, haveScript: 0x52, distance: 0xa}, - 18: {wantLang: 0x45f, haveLang: 0x138, wantScript: 0xd0, haveScript: 0x52, distance: 0xa}, - 19: {wantLang: 0x46d, haveLang: 0x138, wantScript: 0x27, haveScript: 0x52, distance: 0xa}, - 20: {wantLang: 0x474, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa}, - 21: {wantLang: 0x4b2, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa}, - 22: {wantLang: 0x4ba, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa}, - 23: {wantLang: 0x510, haveLang: 0x138, wantScript: 0x37, haveScript: 0x52, distance: 0xa}, - 24: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x34, haveScript: 0x35, distance: 0xf}, - 25: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x35, haveScript: 0x34, distance: 0x13}, + 5: {wantLang: 0x20e, haveLang: 0x138, wantScript: 0x2a, haveScript: 0x55, distance: 0xa}, + 6: {wantLang: 0x248, haveLang: 0x138, wantScript: 0x49, haveScript: 0x55, distance: 0xa}, + 7: {wantLang: 0x24f, haveLang: 0x138, wantScript: 0x4d, haveScript: 0x55, distance: 0xa}, + 8: {wantLang: 0x2b6, haveLang: 0x138, wantScript: 0x52, haveScript: 0x55, distance: 0xa}, + 9: {wantLang: 0x302, haveLang: 0x138, wantScript: 0x69, haveScript: 0x55, distance: 0xa}, + 10: {wantLang: 0x32f, haveLang: 0x138, wantScript: 0x70, haveScript: 0x55, distance: 0xa}, + 11: {wantLang: 0x34f, haveLang: 0x138, wantScript: 0x20, haveScript: 0x55, distance: 0xa}, + 12: {wantLang: 0x393, haveLang: 0x138, wantScript: 0x7a, haveScript: 0x55, distance: 0xa}, + 13: {wantLang: 0x39b, haveLang: 0x138, wantScript: 0x32, haveScript: 0x55, distance: 0xa}, + 14: {wantLang: 0x3bc, haveLang: 0x138, wantScript: 0x5, haveScript: 0x55, distance: 0xa}, + 15: {wantLang: 0x3f8, haveLang: 0x138, wantScript: 0x5, haveScript: 0x55, distance: 0xa}, + 16: {wantLang: 0x40a, haveLang: 0x138, wantScript: 0xc6, haveScript: 0x55, distance: 0xa}, + 17: {wantLang: 0x44e, haveLang: 0x138, wantScript: 0xd3, haveScript: 0x55, distance: 0xa}, + 18: {wantLang: 0x45f, haveLang: 0x138, wantScript: 0xd6, haveScript: 0x55, distance: 0xa}, + 19: {wantLang: 0x46d, haveLang: 0x138, wantScript: 0x28, haveScript: 0x55, distance: 0xa}, + 20: {wantLang: 0x474, haveLang: 0x3e0, wantScript: 0x55, haveScript: 0x1e, distance: 0xa}, + 21: {wantLang: 0x4b2, haveLang: 0x138, wantScript: 0x5, haveScript: 0x55, distance: 0xa}, + 22: {wantLang: 0x4ba, haveLang: 0x3e0, wantScript: 0x55, haveScript: 0x1e, distance: 0xa}, + 23: {wantLang: 0x510, haveLang: 0x138, wantScript: 0x3a, haveScript: 0x55, distance: 0xa}, + 24: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x37, haveScript: 0x38, distance: 0xf}, + 25: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x38, haveScript: 0x37, distance: 0x13}, } // Size: 90 bytes, 15 elements @@ -3510,128 +3526,133 @@ var matchRegion = [15]regionIntelligibility{ 5: {lang: 0x13d, script: 0x0, group: 0x83, distance: 0x4}, 6: {lang: 0x3be, script: 0x0, group: 0x3, distance: 0x4}, 7: {lang: 0x3be, script: 0x0, group: 0x83, distance: 0x4}, - 8: {lang: 0x527, script: 0x35, group: 0x2, distance: 0x4}, - 9: {lang: 0x527, script: 0x35, group: 0x82, distance: 0x4}, + 8: {lang: 0x527, script: 0x38, group: 0x2, distance: 0x4}, + 9: {lang: 0x527, script: 0x38, group: 0x82, distance: 0x4}, 10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5}, 11: {lang: 0x138, script: 0x0, group: 0x80, distance: 0x5}, 12: {lang: 0x13d, script: 0x0, group: 0x80, distance: 0x5}, 13: {lang: 0x3be, script: 0x0, group: 0x80, distance: 0x5}, - 14: {lang: 0x527, script: 0x35, group: 0x80, distance: 0x5}, + 14: {lang: 0x527, script: 0x38, group: 0x80, distance: 0x5}, } -// Size: 128 bytes, 32 elements -var regionContainment = [32]uint32{ - 0xffffffff, 0x000007a2, 0x00003044, 0x00000008, - 0x403c0010, 0x00000020, 0x00000040, 0x00000080, - 0x00000100, 0x00000200, 0x00000400, 0x2000384c, - 0x00001000, 0x00002000, 0x00004000, 0x00008000, - 0x00010000, 0x00020000, 0x00040000, 0x00080000, - 0x00100000, 0x00200000, 0x01c1c000, 0x00800000, - 0x01000000, 0x1e020000, 0x04000000, 0x08000000, - 0x10000000, 0x20002048, 0x40000000, 0x80000000, +// Size: 264 bytes, 33 elements +var regionContainment = [33]uint64{ + // Entry 0 - 1F + 0x00000001dfffffff, 0x00000000000007a2, 0x0000000000003044, 0x0000000000000008, + 0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080, + 0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c, + 0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000, + 0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000, + 0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000, + 0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000, + 0x0000000010000000, 0x0000000020000000, 0x0000000040002048, 0x0000000080000000, + // Entry 20 - 3F + 0x0000000100000000, } // regionInclusion maps region identifiers to sets of regions in regionInclusionBits, // where each set holds all groupings that are directly connected in a region // containment graph. -// Size: 357 bytes, 357 elements -var regionInclusion = [357]uint8{ +// Size: 358 bytes, 358 elements +var regionInclusion = [358]uint8{ // Entry 0 - 3F 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, - 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, - 0x21, 0x22, 0x23, 0x24, 0x25, 0x25, 0x22, 0x23, - 0x25, 0x26, 0x21, 0x27, 0x28, 0x29, 0x2a, 0x25, - 0x2b, 0x23, 0x22, 0x25, 0x24, 0x29, 0x2c, 0x2d, - 0x23, 0x2e, 0x2c, 0x25, 0x2f, 0x30, 0x27, 0x25, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23, + 0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b, + 0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d, + 0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28, // Entry 40 - 7F - 0x27, 0x25, 0x24, 0x30, 0x21, 0x31, 0x32, 0x33, - 0x2f, 0x21, 0x26, 0x26, 0x26, 0x34, 0x2c, 0x28, - 0x27, 0x26, 0x35, 0x27, 0x21, 0x33, 0x22, 0x20, - 0x25, 0x2c, 0x25, 0x21, 0x36, 0x2d, 0x34, 0x29, - 0x21, 0x2e, 0x37, 0x25, 0x25, 0x20, 0x38, 0x38, - 0x27, 0x37, 0x38, 0x38, 0x2e, 0x39, 0x2e, 0x1f, - 0x20, 0x37, 0x3a, 0x27, 0x3b, 0x2b, 0x20, 0x29, - 0x34, 0x26, 0x37, 0x25, 0x23, 0x27, 0x2b, 0x2c, + 0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33, + 0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d, + 0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x34, 0x23, + 0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e, 0x35, + 0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21, 0x39, + 0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a, 0x2f, + 0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c, 0x21, + 0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28, 0x2c, // Entry 80 - BF - 0x22, 0x2f, 0x2c, 0x2c, 0x25, 0x26, 0x39, 0x21, - 0x33, 0x3b, 0x2c, 0x27, 0x35, 0x21, 0x33, 0x39, - 0x25, 0x2d, 0x20, 0x38, 0x30, 0x37, 0x23, 0x2b, - 0x24, 0x21, 0x23, 0x24, 0x2b, 0x39, 0x2b, 0x25, - 0x23, 0x35, 0x20, 0x2e, 0x3c, 0x30, 0x3b, 0x2e, - 0x25, 0x35, 0x35, 0x23, 0x25, 0x3c, 0x30, 0x23, - 0x25, 0x34, 0x24, 0x2c, 0x31, 0x37, 0x29, 0x37, - 0x38, 0x38, 0x34, 0x32, 0x22, 0x25, 0x2e, 0x3b, + 0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27, 0x3a, + 0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22, 0x34, + 0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38, 0x24, + 0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a, 0x2c, + 0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31, 0x3c, + 0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d, 0x31, + 0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38, 0x2a, + 0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26, 0x2f, // Entry C0 - FF - 0x20, 0x22, 0x2c, 0x30, 0x35, 0x35, 0x3b, 0x25, - 0x2c, 0x25, 0x39, 0x2e, 0x24, 0x2e, 0x33, 0x30, - 0x2e, 0x31, 0x3a, 0x2c, 0x2a, 0x2c, 0x20, 0x33, - 0x29, 0x2b, 0x24, 0x20, 0x3b, 0x23, 0x28, 0x2a, - 0x23, 0x33, 0x20, 0x27, 0x28, 0x3a, 0x30, 0x24, - 0x2d, 0x2f, 0x28, 0x25, 0x23, 0x39, 0x20, 0x3b, - 0x27, 0x20, 0x23, 0x20, 0x20, 0x1e, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36, 0x3c, + 0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f, 0x34, + 0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d, 0x21, + 0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24, 0x29, + 0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b, 0x31, + 0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a, 0x21, + 0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, // Entry 100 - 13F - 0x20, 0x2e, 0x20, 0x2d, 0x22, 0x32, 0x2e, 0x23, - 0x3a, 0x2e, 0x38, 0x37, 0x30, 0x2c, 0x39, 0x2b, - 0x2d, 0x2c, 0x22, 0x2c, 0x2e, 0x27, 0x2e, 0x26, - 0x32, 0x33, 0x25, 0x23, 0x31, 0x21, 0x25, 0x26, - 0x21, 0x2c, 0x30, 0x3c, 0x28, 0x30, 0x3c, 0x38, - 0x28, 0x30, 0x23, 0x25, 0x28, 0x35, 0x2e, 0x32, - 0x2e, 0x20, 0x21, 0x20, 0x2f, 0x27, 0x3c, 0x22, - 0x25, 0x20, 0x27, 0x25, 0x25, 0x30, 0x3a, 0x28, + 0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33, 0x2f, + 0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d, 0x3a, + 0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28, 0x2f, + 0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22, 0x26, + 0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31, 0x3d, + 0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36, 0x2f, + 0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28, 0x3d, + 0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31, 0x3b, // Entry 140 - 17F - 0x20, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x23, 0x23, 0x2e, 0x22, - 0x31, 0x2e, 0x26, 0x2e, 0x20, + 0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24, 0x2f, + 0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21, } // regionInclusionBits is an array of bit vectors where every vector represents // a set of region groupings. These sets are used to compute the distance // between two regions for the purpose of language matching. -// Size: 288 bytes, 72 elements -var regionInclusionBits = [72]uint32{ +// Size: 584 bytes, 73 elements +var regionInclusionBits = [73]uint64{ // Entry 0 - 1F - 0x82400813, 0x000007a3, 0x00003844, 0x20000808, - 0x403c0011, 0x00000022, 0x20000844, 0x00000082, - 0x00000102, 0x00000202, 0x00000402, 0x2000384d, - 0x00001804, 0x20002804, 0x00404000, 0x00408000, - 0x00410000, 0x02020000, 0x00040010, 0x00080010, - 0x00100010, 0x00200010, 0x01c1c001, 0x00c00000, - 0x01400000, 0x1e020001, 0x06000000, 0x0a000000, - 0x12000000, 0x20002848, 0x40000010, 0x80000001, + 0x0000000102400813, 0x00000000000007a3, 0x0000000000003844, 0x0000000040000808, + 0x00000000803c0011, 0x0000000000000022, 0x0000000040000844, 0x0000000000000082, + 0x0000000000000102, 0x0000000000000202, 0x0000000000000402, 0x000000004000384d, + 0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000, + 0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010, + 0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000, + 0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000, + 0x0000000012000000, 0x0000000020000000, 0x0000000040002848, 0x0000000080000010, // Entry 20 - 3F - 0x00000001, 0x40000000, 0x00020000, 0x01000000, - 0x00008000, 0x00002000, 0x00000200, 0x00000008, - 0x00200000, 0x90000000, 0x00040000, 0x08000000, - 0x00000020, 0x84000000, 0x00000080, 0x00001000, - 0x00010000, 0x00000400, 0x04000000, 0x00000040, - 0x10000000, 0x00004000, 0x81000000, 0x88000000, - 0x00000100, 0x80020000, 0x00080000, 0x00100000, - 0x00800000, 0xffffffff, 0x82400fb3, 0xc27c0813, + 0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000, + 0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200, + 0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000, + 0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080, + 0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000, + 0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000, + 0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000, + 0x0000000000100000, 0x0000000000800000, 0x00000001dfffffff, 0x0000000102400fb3, // Entry 40 - 5F - 0xa240385f, 0x83c1c813, 0x9e420813, 0x92000001, - 0x86000001, 0x81400001, 0x8a000001, 0x82020001, + 0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813, + 0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001, + 0x0000000102020001, } // regionInclusionNext marks, for each entry in regionInclusionBits, the set of // all groups that are reachable from the groups set in the respective entry. -// Size: 72 bytes, 72 elements -var regionInclusionNext = [72]uint8{ +// Size: 73 bytes, 73 elements +var regionInclusionNext = [73]uint8{ // Entry 0 - 3F - 0x3d, 0x3e, 0x0b, 0x0b, 0x3f, 0x01, 0x0b, 0x01, - 0x01, 0x01, 0x01, 0x40, 0x0b, 0x0b, 0x16, 0x16, - 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x41, 0x16, - 0x16, 0x42, 0x19, 0x19, 0x19, 0x0b, 0x04, 0x00, - 0x00, 0x1e, 0x11, 0x18, 0x0f, 0x0d, 0x09, 0x03, - 0x15, 0x43, 0x12, 0x1b, 0x05, 0x44, 0x07, 0x0c, - 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x45, 0x46, - 0x08, 0x47, 0x13, 0x14, 0x17, 0x3d, 0x3d, 0x3d, + 0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01, + 0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16, + 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16, + 0x16, 0x43, 0x19, 0x19, 0x19, 0x1d, 0x0b, 0x04, + 0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09, + 0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07, + 0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46, + 0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e, // Entry 40 - 7F - 0x3d, 0x3d, 0x3d, 0x42, 0x42, 0x41, 0x42, 0x42, + 0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43, + 0x43, } type parentRel struct { @@ -3644,11 +3665,11 @@ type parentRel struct { // Size: 414 bytes, 5 elements var parents = [5]parentRel{ - 0: {lang: 0x138, script: 0x0, maxScript: 0x52, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x72, 0x73, 0x74, 0x7a, 0x7b, 0x7e, 0x7f, 0x80, 0x82, 0x8b, 0x8c, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9e, 0x9f, 0xa3, 0xa6, 0xa8, 0xac, 0xb0, 0xb3, 0xb4, 0xbe, 0xc5, 0xc9, 0xca, 0xcb, 0xcd, 0xcf, 0xd1, 0xd4, 0xd5, 0xdc, 0xde, 0xdf, 0xe5, 0xe6, 0xe7, 0xea, 0xef, 0x106, 0x108, 0x109, 0x10a, 0x10c, 0x10d, 0x111, 0x116, 0x11a, 0x11c, 0x11e, 0x124, 0x128, 0x12b, 0x12c, 0x12e, 0x130, 0x138, 0x13b, 0x13e, 0x141, 0x160, 0x161, 0x163}}, - 1: {lang: 0x138, script: 0x0, maxScript: 0x52, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x71, 0xd8, 0x10b, 0x10e}}, - 2: {lang: 0x13d, script: 0x0, maxScript: 0x52, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x40, 0x47, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x88, 0x8e, 0xce, 0xd7, 0xe1, 0xe3, 0xeb, 0xf0, 0x119, 0x134, 0x135, 0x13a}}, - 3: {lang: 0x3be, script: 0x0, maxScript: 0x52, toRegion: 0xed, fromRegion: []uint16{0x29, 0x4d, 0x59, 0x85, 0x8a, 0xb6, 0xc5, 0xd0, 0x117, 0x125}}, - 4: {lang: 0x527, script: 0x35, maxScript: 0x35, toRegion: 0x8c, fromRegion: []uint16{0xc5}}, + 0: {lang: 0x138, script: 0x0, maxScript: 0x55, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5c, 0x5d, 0x61, 0x64, 0x6d, 0x73, 0x74, 0x75, 0x7b, 0x7c, 0x7f, 0x80, 0x81, 0x83, 0x8c, 0x8d, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9f, 0xa0, 0xa4, 0xa7, 0xa9, 0xad, 0xb1, 0xb4, 0xb5, 0xbf, 0xc6, 0xca, 0xcb, 0xcc, 0xce, 0xd0, 0xd2, 0xd5, 0xd6, 0xdd, 0xdf, 0xe0, 0xe6, 0xe7, 0xe8, 0xeb, 0xf0, 0x107, 0x109, 0x10a, 0x10b, 0x10d, 0x10e, 0x112, 0x117, 0x11b, 0x11d, 0x11f, 0x125, 0x129, 0x12c, 0x12d, 0x12f, 0x131, 0x139, 0x13c, 0x13f, 0x142, 0x161, 0x162, 0x164}}, + 1: {lang: 0x138, script: 0x0, maxScript: 0x55, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x60, 0x63, 0x72, 0xd9, 0x10c, 0x10f}}, + 2: {lang: 0x13d, script: 0x0, maxScript: 0x55, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x56, 0x59, 0x65, 0x69, 0x89, 0x8f, 0xcf, 0xd8, 0xe2, 0xe4, 0xec, 0xf1, 0x11a, 0x135, 0x136, 0x13b}}, + 3: {lang: 0x3be, script: 0x0, maxScript: 0x55, toRegion: 0xee, fromRegion: []uint16{0x2a, 0x4e, 0x5a, 0x86, 0x8b, 0xb7, 0xc6, 0xd1, 0x118, 0x126}}, + 4: {lang: 0x527, script: 0x38, maxScript: 0x38, toRegion: 0x8d, fromRegion: []uint16{0xc6}}, } -// Total table size 26496 bytes (25KiB); checksum: 6E24B15A +// Total table size 27175 bytes (26KiB); checksum: 569649CD diff --git a/vendor/golang.org/x/text/language/testdata/localeMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt similarity index 100% rename from vendor/golang.org/x/text/language/testdata/localeMatcherTest.txt rename to vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt diff --git a/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt new file mode 100644 index 000000000..4f4c6093e --- /dev/null +++ b/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt @@ -0,0 +1,226 @@ +# basics +fr, en-GB, en ; en-GB ; en-GB +fr, en-GB, en ; en-US ; en +fr, en-GB, en ; fr-FR ; fr +fr, en-GB, en ; ja-JP ; fr + +# script fallbacks +zh-CN, zh-TW, iw ; zh-Hant ; zh-TW +zh-CN, zh-TW, iw ; zh ; zh-CN +zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN +zh-CN, zh-TW, iw ; zh-Hant-HK ; zh-TW +zh-CN, zh-TW, iw ; he-IT ; iw ; iw + +# language-specific script fallbacks 1 +en, sr, nl ; sr-Latn ; sr +en, sr, nl ; sh ; sr # different script, but seems okay and is as CLDR suggests +en, sr, nl ; hr ; en +en, sr, nl ; bs ; en +en, sr, nl ; nl-Cyrl ; sr + +# language-specific script fallbacks 2 +en, sh ; sr ; sh +en, sh ; sr-Cyrl ; sh +en, sh ; hr ; sh + +# don't match hr to sr-Latn +en, sr-Latn ; hr ; en + +# both deprecated and not +fil, tl, iw, he ; he-IT ; he +fil, tl, iw, he ; he ; he +fil, tl, iw, he ; iw ; iw +fil, tl, iw, he ; fil-IT ; fil +fil, tl, iw, he ; fil ; fil +fil, tl, iw, he ; tl ; tl + +# nearby languages +en, fil, ro, nn ; tl ; fil +en, fil, ro, nn ; mo ; ro +en, fil, ro, nn ; nb ; nn +en, fil, ro, nn ; ja ; en + +# nearby languages: Nynorsk to Bokmål +en, nb ; nn ; nb + +# nearby languages: Danish does not match nn +en, nn ; da ; en + +# nearby languages: Danish matches no +en, no ; da ; no + +# nearby languages: Danish matches nb +en, nb ; da ; nb + +# prefer matching languages over language variants. +nn, en-GB ; no, en-US ; en-GB +nn, en-GB ; nb, en-US ; en-GB + +# deprecated version is closer than same language with other differences +nl, he, en-GB ; iw, en-US ; he + +# macro equivalent is closer than same language with other differences +nl, zh, en-GB, no ; cmn, en-US ; zh +nl, zh, en-GB, no ; nb, en-US ; no + +# legacy equivalent is closer than same language with other differences +nl, fil, en-GB ; tl, en-US ; fil + +# distinguish near equivalents +en, ro, mo, ro-MD ; ro ; ro +en, ro, mo, ro-MD ; mo ; mo +en, ro, mo, ro-MD ; ro-MD ; ro-MD + +# maximization of legacy +sr-Cyrl, sr-Latn, ro, ro-MD ; sh ; sr-Latn +sr-Cyrl, sr-Latn, ro, ro-MD ; mo ; ro-MD + +# empty + ; fr ; und + ; en ; und + +# private use subtags +fr, en-GB, x-bork, es-ES, es-419 ; x-piglatin ; fr +fr, en-GB, x-bork, es-ES, es-419 ; x-bork ; x-bork + +# grandfathered codes +fr, i-klingon, en-Latn-US ; en-GB-oed ; en-Latn-US +fr, i-klingon, en-Latn-US ; i-klingon ; tlh + + +# simple variant match +fr, en-GB, ja, es-ES, es-MX ; de, en-US ; en-GB +fr, en-GB, ja, es-ES, es-MX ; de, zh ; fr + +# best match for traditional Chinese +fr, zh-Hans-CN, en-US ; zh-TW ; zh-Hans-CN +fr, zh-Hans-CN, en-US ; zh-Hant ; zh-Hans-CN +fr, zh-Hans-CN, en-US ; zh-TW, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hant-CN, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hans, en ; zh-Hans-CN + +# more specific script should win in case regions are identical +af, af-Latn, af-Arab ; af ; af +af, af-Latn, af-Arab ; af-ZA ; af +af, af-Latn, af-Arab ; af-Latn-ZA ; af-Latn +af, af-Latn, af-Arab ; af-Latn ; af-Latn + +# more specific region should win +nl, nl-NL, nl-BE ; nl ; nl +nl, nl-NL, nl-BE ; nl-Latn ; nl +nl, nl-NL, nl-BE ; nl-Latn-NL ; nl-NL +nl, nl-NL, nl-BE ; nl-NL ; nl-NL + +# region may replace matched if matched is enclosing +es-419,es ; es-MX ; es-419 ; es-MX +es-419,es ; es-SG ; es + +# more specific region wins over more specific script +nl, nl-Latn, nl-NL, nl-BE ; nl ; nl +nl, nl-Latn, nl-NL, nl-BE ; nl-Latn ; nl-Latn +nl, nl-Latn, nl-NL, nl-BE ; nl-NL ; nl-NL +nl, nl-Latn, nl-NL, nl-BE ; nl-Latn-NL ; nl-NL + +# region distance Portuguese +pt, pt-PT ; pt-ES ; pt-PT + +# if no preferred locale specified, pick top language, not regional +en, fr, fr-CA, fr-CH ; fr-US ; fr #TODO: ; fr-u-rg-US + +# region distance German +de-AT, de-DE, de-CH ; de ; de-DE + +# en-AU is closer to en-GB than to en (which is en-US) +en, en-GB, es-ES, es-419 ; en-AU ; en-GB +en, en-GB, es-ES, es-419 ; es-MX ; es-419 ; es-MX +en, en-GB, es-ES, es-419 ; es-PT ; es-ES + +# undefined +it, fr ; und ; it + +# und does not match en +it, en ; und ; it + +# undefined in priority list +it, und ; und ; und +it, und ; en ; it + +# undefined +it, fr, zh ; und-FR ; fr +it, fr, zh ; und-CN ; zh +it, fr, zh ; und-Hans ; zh +it, fr, zh ; und-Hant ; zh +it, fr, zh ; und-Latn ; it + +# match on maximized tag +fr, en-GB, ja, es-ES, es-MX ; ja-JP, en-GB ; ja +fr, en-GB, ja, es-ES, es-MX ; ja-Jpan-JP, en-GB ; ja + +# pick best maximized tag +ja, ja-Jpan-US, ja-JP, en, ru ; ja-Jpan, ru ; ja +ja, ja-Jpan-US, ja-JP, en, ru ; ja-JP, ru ; ja-JP +ja, ja-Jpan-US, ja-JP, en, ru ; ja-US, ru ; ja-Jpan-US + +# termination: pick best maximized match +ja, ja-Jpan, ja-JP, en, ru ; ja-Jpan-JP, ru ; ja-JP +ja, ja-Jpan, ja-JP, en, ru ; ja-Jpan, ru ; ja-Jpan + +# same language over exact, but distinguish when user is explicit +fr, en-GB, ja, es-ES, es-MX ; ja, de ; ja +en, de, fr, ja ; de-CH, fr ; de # TODO: ; de-u-rg-CH +en-GB, nl ; en, nl ; en-GB +en-GB, nl ; en, nl, en-GB ; nl + +# parent relation preserved +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-150 ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-AU ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-BE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-GG ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-GI ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-HK ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IM ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IN ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-JE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-MT ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-NZ ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-PK ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-SG ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-DE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-MT ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-AR ; es-419 ; es-AR +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-BO ; es-419 ; es-BO +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CL ; es-419 ; es-CL +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CO ; es-419 ; es-CO +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CR ; es-419 ; es-CR +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CU ; es-419 ; es-CU +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-DO ; es-419 ; es-DO +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-EC ; es-419 ; es-EC +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-GT ; es-419 ; es-GT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-HN ; es-419 ; es-HN +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-MX ; es-419 ; es-MX +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-NI ; es-419 ; es-NI +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PA ; es-419 ; es-PA +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PE ; es-419 ; es-PE +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PR ; es-419 ; es-PR +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PT ; es +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PY ; es-419 ; es-PY +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-SV ; es-419 ; es-SV +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-US ; es-419 +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-UY ; es-419 ; es-UY +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-VE ; es-419 ; es-VE +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-AO ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-CV ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-GW ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-MO ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-MZ ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-ST ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-TL ; pt-PT + +# preserve extensions +en, de, sl-nedis ; de-FR-u-co-phonebk ; de ; de-u-co-phonebk +en, de, sl-nedis ; sl-nedis-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur +en, de, sl-nedis ; sl-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur +en, de, sl-nedis ; sl-HR-nedis-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur +en, de, sl-nedis ; de-t-m0-iso-i0-pinyin ; de ; de-t-m0-iso-i0-pinyin + diff --git a/vendor/golang.org/x/text/message/catalog.go b/vendor/golang.org/x/text/message/catalog.go index 2f65b4bbc..569e09f9e 100644 --- a/vendor/golang.org/x/text/message/catalog.go +++ b/vendor/golang.org/x/text/message/catalog.go @@ -13,9 +13,9 @@ import ( ) // DefaultCatalog is used by SetString. -var DefaultCatalog *catalog.Catalog = defaultCatalog +var DefaultCatalog catalog.Catalog = defaultCatalog -var defaultCatalog = catalog.New() +var defaultCatalog = catalog.NewBuilder() // SetString calls SetString on the initial default Catalog. func SetString(tag language.Tag, key string, msg string) error { diff --git a/vendor/golang.org/x/text/message/catalog/catalog.go b/vendor/golang.org/x/text/message/catalog/catalog.go index 957444c10..7933b6688 100644 --- a/vendor/golang.org/x/text/message/catalog/catalog.go +++ b/vendor/golang.org/x/text/message/catalog/catalog.go @@ -156,12 +156,85 @@ import ( "errors" "fmt" + "golang.org/x/text/internal" + "golang.org/x/text/internal/catmsg" "golang.org/x/text/language" ) -// A Catalog holds translations for messages for supported languages. -type Catalog struct { +// A Catalog allows lookup of translated messages. +type Catalog interface { + // Languages returns all languages for which the Catalog contains variants. + Languages() []language.Tag + + // A Context is used for evaluating Messages. + Context(tag language.Tag, r catmsg.Renderer) *Context + + lookup(tag language.Tag, key string) (data string, ok bool) +} + +// NewFromMap creates a Catalog from the given map. If a Dictionary is +// underspecified the entry is retrieved from a parent language. +func NewFromMap(dictionaries map[string]Dictionary, opts ...Option) (Catalog, error) { + c := &catalog{ + dicts: map[language.Tag]Dictionary{}, + } + for lang, dict := range dictionaries { + tag, err := language.Parse(lang) + if err != nil { + return nil, fmt.Errorf("catalog: invalid language tag %q", lang) + } + if _, ok := c.dicts[tag]; ok { + return nil, fmt.Errorf("catalog: duplicate entry for tag %q after normalization", tag) + } + c.dicts[tag] = dict + c.langs = append(c.langs, tag) + } + internal.SortTags(c.langs) + return c, nil +} + +// A Dictionary is a source of translations for a single language. +type Dictionary interface { + // Lookup returns a message compiled with catmsg.Compile for the given key. + // It returns false for ok if such a message could not be found. + Lookup(key string) (data string, ok bool) +} + +type catalog struct { + langs []language.Tag + dicts map[language.Tag]Dictionary + macros store +} + +func (c *catalog) Languages() []language.Tag { return c.langs } + +func (c *catalog) lookup(tag language.Tag, key string) (data string, ok bool) { + for ; ; tag = tag.Parent() { + if dict, ok := c.dicts[tag]; ok { + if data, ok := dict.Lookup(key); ok { + return data, true + } + } + if tag == language.Und { + break + } + } + return "", false +} + +// Context returns a Context for formatting messages. +// Only one Message may be formatted per context at any given time. +func (c *catalog) Context(tag language.Tag, r catmsg.Renderer) *Context { + return &Context{ + cat: c, + tag: tag, + dec: catmsg.NewDecoder(tag, r, &dict{&c.macros, tag}), + } +} + +// A Builder allows building a Catalog programmatically. +type Builder struct { options index store @@ -186,9 +259,9 @@ type Option func(*options) // // func Dict(tag language.Tag, d ...Dictionary) Option -// New returns a new Catalog. -func New(opts ...Option) *Catalog { - c := &Catalog{} +// NewBuilder returns an empty mutable Catalog. +func NewBuilder(opts ...Option) *Builder { + c := &Builder{} for _, o := range opts { o(&c.options) } @@ -196,12 +269,12 @@ func New(opts ...Option) *Catalog { } // Languages returns all languages for which the Catalog contains variants. -func (c *Catalog) Languages() []language.Tag { +func (c *Builder) Languages() []language.Tag { return c.index.languages() } // SetString is shorthand for Set(tag, key, String(msg)). -func (c *Catalog) SetString(tag language.Tag, key string, msg string) error { +func (c *Builder) SetString(tag language.Tag, key string, msg string) error { return c.set(tag, key, &c.index, String(msg)) } @@ -209,26 +282,20 @@ func (c *Catalog) SetString(tag language.Tag, key string, msg string) error { // // When evaluation this message, the first Message in the sequence to msgs to // evaluate to a string will be the message returned. -func (c *Catalog) Set(tag language.Tag, key string, msg ...Message) error { +func (c *Builder) Set(tag language.Tag, key string, msg ...Message) error { return c.set(tag, key, &c.index, msg...) } // SetMacro defines a Message that may be substituted in another message. // The arguments to a macro Message are passed as arguments in the // placeholder the form "${foo(arg1, arg2)}". -func (c *Catalog) SetMacro(tag language.Tag, name string, msg ...Message) error { +func (c *Builder) SetMacro(tag language.Tag, name string, msg ...Message) error { return c.set(tag, name, &c.macros, msg...) } // ErrNotFound indicates there was no message for the given key. var ErrNotFound = errors.New("catalog: message not found") -// A Message holds a collection of translations for the same phrase that may -// vary based on the values of substitution arguments. -type Message interface { - catmsg.Message -} - // String specifies a plain message string. It can be used as fallback if no // other strings match or as a simple standalone message. // @@ -247,44 +314,28 @@ func Var(name string, msg ...Message) Message { return &catmsg.Var{Name: name, Message: firstInSequence(msg)} } -// firstInSequence is a message type that prints the first message in the -// sequence that resolves to a match for the given substitution arguments. -type firstInSequence []Message - -func (s firstInSequence) Compile(e *catmsg.Encoder) error { - e.EncodeMessageType(catmsg.First) - err := catmsg.ErrIncomplete - for i, m := range s { - if err == nil { - return fmt.Errorf("catalog: message argument %d is complete and blocks subsequent messages", i-1) - } - err = e.EncodeMessage(m) - } - return err -} - // Context returns a Context for formatting messages. // Only one Message may be formatted per context at any given time. -func (c *Catalog) Context(tag language.Tag, r catmsg.Renderer) *Context { +func (b *Builder) Context(tag language.Tag, r catmsg.Renderer) *Context { return &Context{ - cat: c, + cat: b, tag: tag, - dec: catmsg.NewDecoder(tag, r, &dict{&c.macros, tag}), + dec: catmsg.NewDecoder(tag, r, &dict{&b.macros, tag}), } } // A Context is used for evaluating Messages. // Only one Message may be formatted per context at any given time. type Context struct { - cat *Catalog - tag language.Tag + cat Catalog + tag language.Tag // TODO: use compact index. dec *catmsg.Decoder } // Execute looks up and executes the message with the given key. // It returns ErrNotFound if no message could be found in the index. func (c *Context) Execute(key string) error { - data, ok := c.cat.index.lookup(c.tag, key) + data, ok := c.cat.lookup(c.tag, key) if !ok { return ErrNotFound } diff --git a/vendor/golang.org/x/text/message/catalog/catalog_test.go b/vendor/golang.org/x/text/message/catalog/catalog_test.go index 97ab4d88a..7fc2ea7d1 100644 --- a/vendor/golang.org/x/text/message/catalog/catalog_test.go +++ b/vendor/golang.org/x/text/message/catalog/catalog_test.go @@ -124,14 +124,21 @@ var testCases = []struct { {"en", "macroU", "Hello macroU!"}, }}} -func initCat(entries []entry) (*Catalog, []language.Tag) { +func setMacros(b *Builder) { + b.SetMacro(language.English, "macro1", String("Joe")) + b.SetMacro(language.Und, "macro2", String("${macro1(1)}")) + b.SetMacro(language.English, "macroU", noMatchMessage{}) +} + +func initBuilder(t *testing.T, entries []entry) (Catalog, []language.Tag) { tags := []language.Tag{} - cat := New() + cat := NewBuilder() for _, e := range entries { tag := language.MustParse(e.tag) tags = append(tags, tag) switch msg := e.msg.(type) { case string: + cat.SetString(tag, e.key, msg) case Message: cat.Set(tag, e.key, msg) @@ -139,17 +146,53 @@ func initCat(entries []entry) (*Catalog, []language.Tag) { cat.Set(tag, e.key, msg...) } } + setMacros(cat) return cat, internal.UniqueTags(tags) } -func TestCatalog(t *testing.T) { +type dictionary map[string]string + +func (d dictionary) Lookup(key string) (data string, ok bool) { + data, ok = d[key] + return data, ok +} + +func initCatalog(t *testing.T, entries []entry) (Catalog, []language.Tag) { + m := map[string]Dictionary{} + for _, e := range entries { + m[e.tag] = dictionary{} + } + for _, e := range entries { + var msg Message + switch x := e.msg.(type) { + case string: + msg = String(x) + case Message: + msg = x + case []Message: + msg = firstInSequence(x) + } + data, _ := catmsg.Compile(language.MustParse(e.tag), nil, msg) + m[e.tag].(dictionary)[e.key] = data + } + c, err := NewFromMap(m) + if err != nil { + t.Fatal(err) + } + // TODO: implement macros for fixed catalogs. + b := NewBuilder() + setMacros(b) + c.(*catalog).macros.index = b.macros.index + return c, c.Languages() +} + +func TestCatalog(t *testing.T) { testCatalog(t, initCatalog) } +func TestBuilder(t *testing.T) { testCatalog(t, initBuilder) } + +func testCatalog(t *testing.T, init func(*testing.T, []entry) (Catalog, []language.Tag)) { for _, tc := range testCases { t.Run(fmt.Sprintf("%s", tc.desc), func(t *testing.T) { - cat, wantTags := initCat(tc.cat) - cat.SetMacro(language.English, "macro1", String("Joe")) - cat.SetMacro(language.Und, "macro2", String("${macro1(1)}")) - cat.SetMacro(language.English, "macroU", noMatchMessage{}) - + cat, wantTags := init(t, tc.cat) if got := cat.Languages(); !reflect.DeepEqual(got, wantTags) { t.Errorf("%s:Languages: got %v; want %v", tc.desc, got, wantTags) } diff --git a/vendor/golang.org/x/text/message/catalog/dict.go b/vendor/golang.org/x/text/message/catalog/dict.go index 1810fabc6..74272c79b 100644 --- a/vendor/golang.org/x/text/message/catalog/dict.go +++ b/vendor/golang.org/x/text/message/catalog/dict.go @@ -33,7 +33,11 @@ func (d *dict) Lookup(key string) (data string, ok bool) { return d.s.lookup(d.tag, key) } -func (c *Catalog) set(tag language.Tag, key string, s *store, msg ...Message) error { +func (b *Builder) lookup(tag language.Tag, key string) (data string, ok bool) { + return b.index.lookup(tag, key) +} + +func (c *Builder) set(tag language.Tag, key string, s *store, msg ...Message) error { data, err := catmsg.Compile(tag, &dict{&c.macros, tag}, firstInSequence(msg)) s.mutex.Lock() diff --git a/vendor/golang.org/x/text/message/catalog/go19.go b/vendor/golang.org/x/text/message/catalog/go19.go new file mode 100644 index 000000000..147fc7cf5 --- /dev/null +++ b/vendor/golang.org/x/text/message/catalog/go19.go @@ -0,0 +1,15 @@ +// Copyright 2017 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. + +// +build go1.9 + +package catalog + +import "golang.org/x/text/internal/catmsg" + +// A Message holds a collection of translations for the same phrase that may +// vary based on the values of substitution arguments. +type Message = catmsg.Message + +type firstInSequence = catmsg.FirstOf diff --git a/vendor/golang.org/x/text/message/catalog/gopre19.go b/vendor/golang.org/x/text/message/catalog/gopre19.go new file mode 100644 index 000000000..a9753b905 --- /dev/null +++ b/vendor/golang.org/x/text/message/catalog/gopre19.go @@ -0,0 +1,23 @@ +// Copyright 2017 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. + +// +build !go1.9 + +package catalog + +import "golang.org/x/text/internal/catmsg" + +// A Message holds a collection of translations for the same phrase that may +// vary based on the values of substitution arguments. +type Message interface { + catmsg.Message +} + +func firstInSequence(m []Message) catmsg.Message { + a := []catmsg.Message{} + for _, m := range m { + a = append(a, m) + } + return catmsg.FirstOf(a) +} diff --git a/vendor/golang.org/x/text/message/doc.go b/vendor/golang.org/x/text/message/doc.go new file mode 100644 index 000000000..89c1592a4 --- /dev/null +++ b/vendor/golang.org/x/text/message/doc.go @@ -0,0 +1,100 @@ +// Copyright 2017 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 message implements formatted I/O for localized strings with functions +// analogous to the fmt's print functions. It is a drop-in replacement for fmt. +// +// +// Localized Formatting +// +// A format string can be localized by replacing any of the print functions of +// fmt with an equivalent call to a Printer. +// +// p := message.NewPrinter(language.English) +// p.Println(123456.78) // Prints 123,456.78 +// +// p.Printf("%d ducks in a row", 4331) // Prints 4,331 ducks in a row +// +// p := message.NewPrinter(language.Dutch) +// p.Println("Hoogte: %f meter", 1244.9) // Prints Hoogte: 1.244,9 meter +// +// p := message.NewPrinter(language.Bengali) +// p.Println(123456.78) // Prints ১,২৩,৪৫৬.৭৮ +// +// Printer currently supports numbers and specialized types for which packages +// exist in x/text. Other builtin types such as time.Time and slices are +// planned. +// +// Format strings largely have the same meaning as with fmt with the following +// notable exceptions: +// - flag # always resorts to fmt for printing +// - verb 'f', 'e', 'g', 'd' use localized formatting unless the '#' flag is +// specified. +// +// See package fmt for more options. +// +// +// Translation +// +// The format strings that are passed to Printf, Sprintf, Fprintf, or Errorf +// are used as keys to look up translations for the specified languages. +// More on how these need to be specified below. +// +// One can use arbitrary keys to distinguish between otherwise ambiguous +// strings: +// p := message.NewPrinter(language.English) +// p.Printf("archive(noun)") // Prints "archive" +// p.Printf("archive(verb)") // Prints "archive" +// +// p := message.NewPrinter(language.German) +// p.Printf("archive(noun)") // Prints "Archiv" +// p.Printf("archive(verb)") // Prints "archivieren" +// +// To retain the fallback functionality, use Key: +// p.Printf(message.Key("archive(noun)", "archive")) +// p.Printf(message.Key("archive(verb)", "archive")) +// +// +// Translation Pipeline +// +// Format strings that contain text need to be translated to support different +// locales. The first step is to extract strings that need to be translated. +// +// 1. Install gotext +// go get -u golang.org/x/text/cmd/gotext +// gotext -help +// +// 2. Mark strings in your source to be translated by using message.Printer, +// instead of the functions of the fmt package. +// +// 3. Extract the strings from your source +// +// gotext extract +// +// The output will be written to the textdata directory. +// +// 4. Send the files for translation +// +// It is planned to support multiple formats, but for now one will have to +// rewrite the JSON output to the desired format. +// +// 5. Inject translations into program +// +// 6. Repeat from 2 +// +// Right now this has to be done programmatically with calls to Set or +// SetString. These functions as well as the methods defined in +// see also package golang.org/x/text/message/catalog can be used to implement +// either dynamic or static loading of messages. +// +// +// Plural and Gender Forms +// +// Translated messages can vary based on the plural and gender forms of +// substitution values. In general, it is up to the translators to provide +// alternative translations for such forms. See the packages in +// golang.org/x/text/feature and golang.org/x/text/message/catalog for more +// information. +// +package message diff --git a/vendor/golang.org/x/text/message/examples_test.go b/vendor/golang.org/x/text/message/examples_test.go new file mode 100644 index 000000000..c73eaf90b --- /dev/null +++ b/vendor/golang.org/x/text/message/examples_test.go @@ -0,0 +1,42 @@ +// Copyright 2017 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 message_test + +import ( + "net/http" + + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func Example_http() { + // languages supported by this service: + matcher := language.NewMatcher(message.DefaultCatalog.Languages()) + + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + lang, _ := r.Cookie("lang") + accept := r.Header.Get("Accept-Language") + fallback := "en" + tag, _ := language.MatchStrings(matcher, lang.String(), accept, fallback) + + p := message.NewPrinter(tag) + + p.Fprintln(w, "User language is", tag) + }) +} + +func ExamplePrinter_numbers() { + for _, lang := range []string{"en", "de", "de-CH", "fr", "bn"} { + p := message.NewPrinter(language.Make(lang)) + p.Printf("%-6s %g\n", lang, 123456.78) + } + + // Output: + // en 123,456.78 + // de 123.456,78 + // de-CH 123’456.78 + // fr 123 456,78 + // bn ১,২৩,৪৫৬.৭৮ +} diff --git a/vendor/golang.org/x/text/message/fmt_test.go b/vendor/golang.org/x/text/message/fmt_test.go index 0dbedcbca..2d6872bf8 100755 --- a/vendor/golang.org/x/text/message/fmt_test.go +++ b/vendor/golang.org/x/text/message/fmt_test.go @@ -475,10 +475,8 @@ var fmtTests = []struct { {"%.4b", float32(1.0), "8388608p-23"}, {"%.4b", -1.0, "-4503599627370496p-52"}, // Test correct f.intbuf boundary checks. - // TODO: the following cases won't work because of rounding errors. We can - // fix this if we expose the internals of strconv. - // {"%.68f", 1.0, zeroFill("1.", 68, "")}, // TODO(bug): rounding error - // {"%.68f", -1.0, zeroFill("-1.", 68, "")}, // TODO(bug): rounding error + {"%.68f", 1.0, zeroFill("1.", 68, "")}, + {"%.68f", -1.0, zeroFill("-1.", 68, "")}, // float infinites and NaNs {"%f", posInf, "∞"}, {"%.1f", negInf, "-∞"}, @@ -565,8 +563,8 @@ var fmtTests = []struct { // old test/fmt_test.go {"%e", 1.0, "1.000000\u202f×\u202f10⁰⁰"}, - {"%e", 1234.5678e3, "1.234570\u202f×\u202f10⁰⁶"}, - {"%e", 1234.5678e-8, "1.234570\u202f×\u202f10⁻⁰⁵"}, + {"%e", 1234.5678e3, "1.234568\u202f×\u202f10⁰⁶"}, + {"%e", 1234.5678e-8, "1.234568\u202f×\u202f10⁻⁰⁵"}, {"%e", -7.0, "-7.000000\u202f×\u202f10⁰⁰"}, {"%e", -1e-9, "-1.000000\u202f×\u202f10⁻⁰⁹"}, {"%f", 1234.5678e3, "1,234,567.800000"}, @@ -580,8 +578,8 @@ var fmtTests = []struct { {"%g", -1e-9, "-1\u202f×\u202f10⁻⁰⁹"}, {"%g", float32(-1e-9), "-1\u202f×\u202f10⁻⁰⁹"}, {"%E", 1.0, "1.000000\u202f×\u202f10⁰⁰"}, - {"%E", 1234.5678e3, "1.234570\u202f×\u202f10⁰⁶"}, - {"%E", 1234.5678e-8, "1.234570\u202f×\u202f10⁻⁰⁵"}, + {"%E", 1234.5678e3, "1.234568\u202f×\u202f10⁰⁶"}, + {"%E", 1234.5678e-8, "1.234568\u202f×\u202f10⁻⁰⁵"}, {"%E", -7.0, "-7.000000\u202f×\u202f10⁰⁰"}, {"%E", -1e-9, "-1.000000\u202f×\u202f10⁻⁰⁹"}, {"%G", 1234.5678e3, "1.2345678\u202f×\u202f10⁰⁶"}, @@ -1788,7 +1786,12 @@ func TestNilDoesNotBecomeTyped(t *testing.T) { type B struct{} var a *A = nil var b B = B{} - got := p.Sprintf("%s %s %s %s %s", nil, a, nil, b, nil) // go vet should complain about this line. + + // indirect the Sprintf call through this noVetWarn variable to avoid + // "go test" failing vet checks in Go 1.10+. + noVetWarn := p.Sprintf + got := noVetWarn("%s %s %s %s %s", nil, a, nil, b, nil) + const expect = "%!s() %!s(*message.A=) %!s() {} %!s()" if got != expect { t.Errorf("expected:\n\t%q\ngot:\n\t%q", expect, got) @@ -1866,26 +1869,3 @@ func TestFormatterFlags(t *testing.T) { } } } - -func TestParsenum(t *testing.T) { - testCases := []struct { - s string - start, end int - num int - isnum bool - newi int - }{ - {"a123", 0, 4, 0, false, 0}, - {"1234", 1, 1, 0, false, 1}, - {"123a", 0, 4, 123, true, 3}, - {"12a3", 0, 4, 12, true, 2}, - {"1234", 0, 4, 1234, true, 4}, - {"1a234", 1, 3, 0, false, 1}, - } - for _, tt := range testCases { - num, isnum, newi := parsenum(tt.s, tt.start, tt.end) - if num != tt.num || isnum != tt.isnum || newi != tt.newi { - t.Errorf("parsenum(%q, %d, %d) = %d, %v, %d, want %d, %v, %d", tt.s, tt.start, tt.end, num, isnum, newi, tt.num, tt.isnum, tt.newi) - } - } -} diff --git a/vendor/golang.org/x/text/message/format.go b/vendor/golang.org/x/text/message/format.go index d3340d194..a47d17dd4 100644 --- a/vendor/golang.org/x/text/message/format.go +++ b/vendor/golang.org/x/text/message/format.go @@ -8,6 +8,8 @@ import ( "bytes" "strconv" "unicode/utf8" + + "golang.org/x/text/internal/format" ) const ( @@ -20,45 +22,21 @@ const ( unsigned = false ) -// flags placed in a separate struct for easy clearing. -type fmtFlags struct { - widPresent bool - precPresent bool - minus bool - plus bool - sharp bool - space bool - zero bool - - // For the formats %+v %#v, we set the plusV/sharpV flags - // and clear the plus/sharp flags since %+v and %#v are in effect - // different, flagless formats set at the top level. - plusV bool - sharpV bool -} - // A formatInfo is the raw formatter used by Printf etc. // It prints into a buffer that must be set up separately. type formatInfo struct { buf *bytes.Buffer - fmtFlags - - wid int // width - prec int // precision + format.Parser // intbuf is large enough to store %b of an int64 with a sign and // avoids padding at the end of the struct on 32 bit architectures. intbuf [68]byte } -func (f *formatInfo) clearflags() { - f.fmtFlags = fmtFlags{} -} - func (f *formatInfo) init(buf *bytes.Buffer) { + f.ClearFlags() f.buf = buf - f.clearflags() } // writePadding generates n bytes of padding. @@ -69,7 +47,7 @@ func (f *formatInfo) writePadding(n int) { f.buf.Grow(n) // Decide which byte the padding should be filled with. padByte := byte(' ') - if f.zero { + if f.Zero { padByte = byte('0') } // Fill padding with padByte. @@ -80,12 +58,12 @@ func (f *formatInfo) writePadding(n int) { // pad appends b to f.buf, padded on left (!f.minus) or right (f.minus). func (f *formatInfo) pad(b []byte) { - if !f.widPresent || f.wid == 0 { + if !f.WidthPresent || f.Width == 0 { f.buf.Write(b) return } - width := f.wid - utf8.RuneCount(b) - if !f.minus { + width := f.Width - utf8.RuneCount(b) + if !f.Minus { // left padding f.writePadding(width) f.buf.Write(b) @@ -98,12 +76,12 @@ func (f *formatInfo) pad(b []byte) { // padString appends s to f.buf, padded on left (!f.minus) or right (f.minus). func (f *formatInfo) padString(s string) { - if !f.widPresent || f.wid == 0 { + if !f.WidthPresent || f.Width == 0 { f.buf.WriteString(s) return } - width := f.wid - utf8.RuneCountInString(s) - if !f.minus { + width := f.Width - utf8.RuneCountInString(s) + if !f.Minus { // left padding f.writePadding(width) f.buf.WriteString(s) @@ -131,8 +109,8 @@ func (f *formatInfo) fmt_unicode(u uint64) { // for formatting -1 with %#U ("U+FFFFFFFFFFFFFFFF") which fits // into the already allocated intbuf with a capacity of 68 bytes. prec := 4 - if f.precPresent && f.prec > 4 { - prec = f.prec + if f.PrecPresent && f.Prec > 4 { + prec = f.Prec // Compute space needed for "U+" , number, " '", character, "'". width := 2 + prec + 2 + utf8.UTFMax + 1 if width > len(buf) { @@ -144,7 +122,7 @@ func (f *formatInfo) fmt_unicode(u uint64) { i := len(buf) // For %#U we want to add a space and a quoted character at the end of the buffer. - if f.sharp && u <= utf8.MaxRune && strconv.IsPrint(rune(u)) { + if f.Sharp && u <= utf8.MaxRune && strconv.IsPrint(rune(u)) { i-- buf[i] = '\'' i -= utf8.RuneLen(rune(u)) @@ -176,10 +154,10 @@ func (f *formatInfo) fmt_unicode(u uint64) { i-- buf[i] = 'U' - oldZero := f.zero - f.zero = false + oldZero := f.Zero + f.Zero = false f.pad(buf[i:]) - f.zero = oldZero + f.Zero = oldZero } // fmt_integer formats signed and unsigned integers. @@ -192,9 +170,9 @@ func (f *formatInfo) fmt_integer(u uint64, base int, isSigned bool, digits strin buf := f.intbuf[0:] // The already allocated f.intbuf with a capacity of 68 bytes // is large enough for integer formatting when no precision or width is set. - if f.widPresent || f.precPresent { + if f.WidthPresent || f.PrecPresent { // Account 3 extra bytes for possible addition of a sign and "0x". - width := 3 + f.wid + f.prec // wid and prec are always positive. + width := 3 + f.Width + f.Prec // wid and prec are always positive. if width > len(buf) { // We're going to need a bigger boat. buf = make([]byte, width) @@ -205,19 +183,19 @@ func (f *formatInfo) fmt_integer(u uint64, base int, isSigned bool, digits strin // If both are specified the f.zero flag is ignored and // padding with spaces is used instead. prec := 0 - if f.precPresent { - prec = f.prec + if f.PrecPresent { + prec = f.Prec // Precision of 0 and value of 0 means "print nothing" but padding. if prec == 0 && u == 0 { - oldZero := f.zero - f.zero = false - f.writePadding(f.wid) - f.zero = oldZero + oldZero := f.Zero + f.Zero = false + f.writePadding(f.Width) + f.Zero = oldZero return } - } else if f.zero && f.widPresent { - prec = f.wid - if negative || f.plus || f.space { + } else if f.Zero && f.WidthPresent { + prec = f.Width + if negative || f.Plus || f.Space { prec-- // leave room for sign } } @@ -265,7 +243,7 @@ func (f *formatInfo) fmt_integer(u uint64, base int, isSigned bool, digits strin } // Various prefixes: 0x, -, etc. - if f.sharp { + if f.Sharp { switch base { case 8: if buf[i] != '0' { @@ -284,26 +262,26 @@ func (f *formatInfo) fmt_integer(u uint64, base int, isSigned bool, digits strin if negative { i-- buf[i] = '-' - } else if f.plus { + } else if f.Plus { i-- buf[i] = '+' - } else if f.space { + } else if f.Space { i-- buf[i] = ' ' } // Left padding with zeros has already been handled like precision earlier // or the f.zero flag is ignored due to an explicitly set precision. - oldZero := f.zero - f.zero = false + oldZero := f.Zero + f.Zero = false f.pad(buf[i:]) - f.zero = oldZero + f.Zero = oldZero } // truncate truncates the string to the specified precision, if present. func (f *formatInfo) truncate(s string) string { - if f.precPresent { - n := f.prec + if f.PrecPresent { + n := f.Prec for i := range s { n-- if n < 0 { @@ -328,46 +306,46 @@ func (f *formatInfo) fmt_sbx(s string, b []byte, digits string) { length = len(s) } // Set length to not process more bytes than the precision demands. - if f.precPresent && f.prec < length { - length = f.prec + if f.PrecPresent && f.Prec < length { + length = f.Prec } // Compute width of the encoding taking into account the f.sharp and f.space flag. width := 2 * length if width > 0 { - if f.space { + if f.Space { // Each element encoded by two hexadecimals will get a leading 0x or 0X. - if f.sharp { + if f.Sharp { width *= 2 } // Elements will be separated by a space. width += length - 1 - } else if f.sharp { + } else if f.Sharp { // Only a leading 0x or 0X will be added for the whole string. width += 2 } } else { // The byte slice or string that should be encoded is empty. - if f.widPresent { - f.writePadding(f.wid) + if f.WidthPresent { + f.writePadding(f.Width) } return } // Handle padding to the left. - if f.widPresent && f.wid > width && !f.minus { - f.writePadding(f.wid - width) + if f.WidthPresent && f.Width > width && !f.Minus { + f.writePadding(f.Width - width) } // Write the encoding directly into the output buffer. buf := f.buf - if f.sharp { + if f.Sharp { // Add leading 0x or 0X. buf.WriteByte('0') buf.WriteByte(digits[16]) } var c byte for i := 0; i < length; i++ { - if f.space && i > 0 { + if f.Space && i > 0 { // Separate elements with a space. buf.WriteByte(' ') - if f.sharp { + if f.Sharp { // Add leading 0x or 0X for each element. buf.WriteByte('0') buf.WriteByte(digits[16]) @@ -383,8 +361,8 @@ func (f *formatInfo) fmt_sbx(s string, b []byte, digits string) { buf.WriteByte(digits[c&0xF]) } // Handle padding to the right. - if f.widPresent && f.wid > width && f.minus { - f.writePadding(f.wid - width) + if f.WidthPresent && f.Width > width && f.Minus { + f.writePadding(f.Width - width) } } @@ -403,12 +381,12 @@ func (f *formatInfo) fmt_bx(b []byte, digits string) { // if the string does not contain any control characters other than tab. func (f *formatInfo) fmt_q(s string) { s = f.truncate(s) - if f.sharp && strconv.CanBackquote(s) { + if f.Sharp && strconv.CanBackquote(s) { f.padString("`" + s + "`") return } buf := f.intbuf[:0] - if f.plus { + if f.Plus { f.pad(strconv.AppendQuoteToASCII(buf, s)) } else { f.pad(strconv.AppendQuote(buf, s)) @@ -435,7 +413,7 @@ func (f *formatInfo) fmt_qc(c uint64) { r = utf8.RuneError } buf := f.intbuf[:0] - if f.plus { + if f.Plus { f.pad(strconv.AppendQuoteRuneToASCII(buf, r)) } else { f.pad(strconv.AppendQuoteRune(buf, r)) @@ -446,8 +424,8 @@ func (f *formatInfo) fmt_qc(c uint64) { // for strconv.AppendFloat and therefore fits into a byte. func (f *formatInfo) fmt_float(v float64, size int, verb rune, prec int) { // Explicit precision in format specifier overrules default precision. - if f.precPresent { - prec = f.prec + if f.PrecPresent { + prec = f.Prec } // Format number, reserving space for leading + sign if needed. num := strconv.AppendFloat(f.intbuf[:1], v, byte(verb), prec, size) @@ -458,25 +436,25 @@ func (f *formatInfo) fmt_float(v float64, size int, verb rune, prec int) { } // f.space means to add a leading space instead of a "+" sign unless // the sign is explicitly asked for by f.plus. - if f.space && num[0] == '+' && !f.plus { + if f.Space && num[0] == '+' && !f.Plus { num[0] = ' ' } // Special handling for infinities and NaN, // which don't look like a number so shouldn't be padded with zeros. if num[1] == 'I' || num[1] == 'N' { - oldZero := f.zero - f.zero = false + oldZero := f.Zero + f.Zero = false // Remove sign before NaN if not asked for. - if num[1] == 'N' && !f.space && !f.plus { + if num[1] == 'N' && !f.Space && !f.Plus { num = num[1:] } f.pad(num) - f.zero = oldZero + f.Zero = oldZero return } // The sharp flag forces printing a decimal point for non-binary formats // and retains trailing zeros, which we may need to restore. - if f.sharp && verb != 'b' { + if f.Sharp && verb != 'b' { digits := 0 switch verb { case 'v', 'g', 'G': @@ -515,12 +493,12 @@ func (f *formatInfo) fmt_float(v float64, size int, verb rune, prec int) { num = append(num, tail...) } // We want a sign if asked for and if the sign is not positive. - if f.plus || num[0] != '+' { + if f.Plus || num[0] != '+' { // If we're zero padding to the left we want the sign before the leading zeros. // Achieve this by writing the sign out and then padding the unsigned number. - if f.zero && f.widPresent && f.wid > len(num) { + if f.Zero && f.WidthPresent && f.Width > len(num) { f.buf.WriteByte(num[0]) - f.writePadding(f.wid - len(num)) + f.writePadding(f.Width - len(num)) f.buf.Write(num[1:]) return } diff --git a/vendor/golang.org/x/text/message/message.go b/vendor/golang.org/x/text/message/message.go index 92791236d..841a98a99 100644 --- a/vendor/golang.org/x/text/message/message.go +++ b/vendor/golang.org/x/text/message/message.go @@ -2,41 +2,31 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package message implements formatted I/O for localized strings with functions -// analogous to the fmt's print functions. -// -// These are the important differences with fmt: -// - Output varies per locale. -// - The '#' flag is used to bypass localization. -// -// NOTE: Under construction. See https://golang.org/design/12750-localization -// and its corresponding proposal issue https://golang.org/issues/12750. package message // import "golang.org/x/text/message" import ( "io" "os" + "golang.org/x/text/internal/number" "golang.org/x/text/language" "golang.org/x/text/message/catalog" ) -// TODO: allow more than one goroutine per printer. This will allow porting from -// fmt much less error prone. - // A Printer implements language-specific formatted I/O analogous to the fmt -// package. Only one goroutine may use a Printer at the same time. +// package. type Printer struct { - // Wrap the fields in a hidden type to hide some of the implemented methods. - printer printer + // the language + tag language.Tag - // NOTE: limiting one goroutine per Printer allows for many optimizations - // and simplifications. We can consider removing this restriction down the - // road if it the benefits do not seem to outweigh the disadvantages. + toDecimal number.Formatter + toScientific number.Formatter + + cat catalog.Catalog } type options struct { - cat *catalog.Catalog + cat catalog.Catalog // TODO: // - allow %s to print integers in written form (tables are likely too large // to enable this by default). @@ -48,39 +38,42 @@ type options struct { type Option func(o *options) // Catalog defines the catalog to be used. -func Catalog(c *catalog.Catalog) Option { +func Catalog(c catalog.Catalog) Option { return func(o *options) { o.cat = c } } // NewPrinter returns a Printer that formats messages tailored to language t. func NewPrinter(t language.Tag, opts ...Option) *Printer { options := &options{ - cat: defaultCatalog, + cat: DefaultCatalog, } for _, o := range opts { o(options) } - p := &Printer{printer{ + p := &Printer{ tag: t, - }} - p.printer.toDecimal.InitDecimal(t) - p.printer.toScientific.InitScientific(t) - p.printer.catContext = options.cat.Context(t, &p.printer) + cat: options.cat, + } + p.toDecimal.InitDecimal(t) + p.toScientific.InitScientific(t) return p } // Sprint is like fmt.Sprint, but using language-specific formatting. func (p *Printer) Sprint(a ...interface{}) string { - p.printer.reset() - p.printer.doPrint(a) - return p.printer.String() + pp := newPrinter(p) + pp.doPrint(a) + s := pp.String() + pp.free() + return s } // Fprint is like fmt.Fprint, but using language-specific formatting. func (p *Printer) Fprint(w io.Writer, a ...interface{}) (n int, err error) { - p.printer.reset() - p.printer.doPrint(a) - n64, err := io.Copy(w, &p.printer.Buffer) + pp := newPrinter(p) + pp.doPrint(a) + n64, err := io.Copy(w, &pp.Buffer) + pp.free() return int(n64), err } @@ -91,16 +84,19 @@ func (p *Printer) Print(a ...interface{}) (n int, err error) { // Sprintln is like fmt.Sprintln, but using language-specific formatting. func (p *Printer) Sprintln(a ...interface{}) string { - p.printer.reset() - p.printer.doPrintln(a) - return p.printer.String() + pp := newPrinter(p) + pp.doPrintln(a) + s := pp.String() + pp.free() + return s } // Fprintln is like fmt.Fprintln, but using language-specific formatting. func (p *Printer) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { - p.printer.reset() - p.printer.doPrintln(a) - n64, err := io.Copy(w, &p.printer.Buffer) + pp := newPrinter(p) + pp.doPrintln(a) + n64, err := io.Copy(w, &pp.Buffer) + pp.free() return int(n64), err } @@ -111,25 +107,34 @@ func (p *Printer) Println(a ...interface{}) (n int, err error) { // Sprintf is like fmt.Sprintf, but using language-specific formatting. func (p *Printer) Sprintf(key Reference, a ...interface{}) string { - lookupAndFormat(p, key, a) - return p.printer.String() + pp := newPrinter(p) + lookupAndFormat(pp, key, a) + s := pp.String() + pp.free() + return s } // Fprintf is like fmt.Fprintf, but using language-specific formatting. func (p *Printer) Fprintf(w io.Writer, key Reference, a ...interface{}) (n int, err error) { - lookupAndFormat(p, key, a) - return w.Write(p.printer.Bytes()) + pp := newPrinter(p) + lookupAndFormat(pp, key, a) + n, err = w.Write(pp.Bytes()) + pp.free() + return n, err + } // Printf is like fmt.Printf, but using language-specific formatting. func (p *Printer) Printf(key Reference, a ...interface{}) (n int, err error) { - lookupAndFormat(p, key, a) - return os.Stdout.Write(p.printer.Bytes()) + pp := newPrinter(p) + lookupAndFormat(pp, key, a) + n, err = os.Stdout.Write(pp.Bytes()) + pp.free() + return n, err } -func lookupAndFormat(p *Printer, r Reference, a []interface{}) { - p.printer.reset() - p.printer.args = a +func lookupAndFormat(p *printer, r Reference, a []interface{}) { + p.fmt.Reset(a) var id, msg string switch v := r.(type) { case string: @@ -140,9 +145,9 @@ func lookupAndFormat(p *Printer, r Reference, a []interface{}) { panic("key argument is not a Reference") } - if p.printer.catContext.Execute(id) == catalog.ErrNotFound { - if p.printer.catContext.Execute(msg) == catalog.ErrNotFound { - p.printer.Render(msg) + if p.catContext.Execute(id) == catalog.ErrNotFound { + if p.catContext.Execute(msg) == catalog.ErrNotFound { + p.Render(msg) return } } @@ -150,8 +155,9 @@ func lookupAndFormat(p *Printer, r Reference, a []interface{}) { // Arg implements catmsg.Renderer. func (p *printer) Arg(i int) interface{} { // TODO, also return "ok" bool - if uint(i) < uint(len(p.args)) { - return p.args[i] + i-- + if uint(i) < uint(len(p.fmt.Args)) { + return p.fmt.Args[i] } return nil } diff --git a/vendor/golang.org/x/text/message/message_test.go b/vendor/golang.org/x/text/message/message_test.go index 091ed3bcb..326f716fb 100644 --- a/vendor/golang.org/x/text/message/message_test.go +++ b/vendor/golang.org/x/text/message/message_test.go @@ -169,9 +169,9 @@ func TestLocalization(t *testing.T) { type entry struct{ tag, key, msg string } -func initCat(entries []entry) (*catalog.Catalog, []language.Tag) { +func initCat(entries []entry) (*catalog.Builder, []language.Tag) { tags := []language.Tag{} - cat := catalog.New() + cat := catalog.NewBuilder() for _, e := range entries { tag := language.MustParse(e.tag) tags = append(tags, tag) diff --git a/vendor/golang.org/x/text/message/print.go b/vendor/golang.org/x/text/message/print.go index 8c8a23f15..777e1724a 100644 --- a/vendor/golang.org/x/text/message/print.go +++ b/vendor/golang.org/x/text/message/print.go @@ -9,8 +9,10 @@ import ( "fmt" // TODO: consider copying interfaces from package fmt to avoid dependency. "math" "reflect" + "sync" "unicode/utf8" + "golang.org/x/text/internal/format" "golang.org/x/text/internal/number" "golang.org/x/text/language" "golang.org/x/text/message/catalog" @@ -36,21 +38,42 @@ const ( invReflectString = "" ) +var printerPool = sync.Pool{ + New: func() interface{} { return new(printer) }, +} + +// newPrinter allocates a new printer struct or grabs a cached one. +func newPrinter(pp *Printer) *printer { + p := printerPool.Get().(*printer) + p.Printer = *pp + // TODO: cache most of the following call. + p.catContext = pp.cat.Context(pp.tag, p) + + p.panicking = false + p.erroring = false + p.fmt.init(&p.Buffer) + return p +} + +// free saves used printer structs in printerFree; avoids an allocation per invocation. +func (p *printer) free() { + p.Buffer.Reset() + p.arg = nil + p.value = reflect.Value{} + printerPool.Put(p) +} + // printer is used to store a printer's state. // It implements "golang.org/x/text/internal/format".State. type printer struct { + Printer + // the context for looking up message translations catContext *catalog.Context - // the language - tag language.Tag // buffer for accumulating output. bytes.Buffer - // retain arguments across calls. - args []interface{} - // retain current argument number across calls - argNum int // arg holds the current item, as an interface{}. arg interface{} // value is used instead of arg for reflect values. @@ -59,47 +82,31 @@ type printer struct { // fmt is used to format basic items such as integers or strings. fmt formatInfo - // reordered records whether the format string used argument reordering. - reordered bool - // goodArgNum records whether the most recent reordering directive was valid. - goodArgNum bool // panicking is set by catchPanic to avoid infinite panic, recover, panic, ... recursion. panicking bool // erroring is set when printing an error string to guard against calling handleMethods. erroring bool - - toDecimal number.Formatter - toScientific number.Formatter -} - -func (p *printer) reset() { - p.Buffer.Reset() - p.argNum = 0 - p.reordered = false - p.panicking = false - p.erroring = false - p.fmt.init(&p.Buffer) } // Language implements "golang.org/x/text/internal/format".State. func (p *printer) Language() language.Tag { return p.tag } -func (p *printer) Width() (wid int, ok bool) { return p.fmt.wid, p.fmt.widPresent } +func (p *printer) Width() (wid int, ok bool) { return p.fmt.Width, p.fmt.WidthPresent } -func (p *printer) Precision() (prec int, ok bool) { return p.fmt.prec, p.fmt.precPresent } +func (p *printer) Precision() (prec int, ok bool) { return p.fmt.Prec, p.fmt.PrecPresent } func (p *printer) Flag(b int) bool { switch b { case '-': - return p.fmt.minus + return p.fmt.Minus case '+': - return p.fmt.plus || p.fmt.plusV + return p.fmt.Plus || p.fmt.PlusV case '#': - return p.fmt.sharp || p.fmt.sharpV + return p.fmt.Sharp || p.fmt.SharpV case ' ': - return p.fmt.space + return p.fmt.Space case '0': - return p.fmt.zero + return p.fmt.Zero } return false } @@ -115,28 +122,6 @@ func getField(v reflect.Value, i int) reflect.Value { return val } -// tooLarge reports whether the magnitude of the integer is -// too large to be used as a formatting width or precision. -func tooLarge(x int) bool { - const max int = 1e6 - return x > max || x < -max -} - -// parsenum converts ASCII to integer. num is 0 (and isnum is false) if no number present. -func parsenum(s string, start, end int) (num int, isnum bool, newi int) { - if start >= end { - return 0, false, end - } - for newi = start; newi < end && '0' <= s[newi] && s[newi] <= '9'; newi++ { - if tooLarge(num) { - return 0, false, end // Overflow; crazy long number most likely. - } - num = num*10 + int(s[newi]-'0') - isnum = true - } - return -} - func (p *printer) unknownType(v reflect.Value) { if !v.IsValid() { p.WriteString(nilAngleString) @@ -180,23 +165,23 @@ func (p *printer) fmtBool(v bool, verb rune) { // fmt0x64 formats a uint64 in hexadecimal and prefixes it with 0x or // not, as requested, by temporarily setting the sharp flag. func (p *printer) fmt0x64(v uint64, leading0x bool) { - sharp := p.fmt.sharp - p.fmt.sharp = leading0x + sharp := p.fmt.Sharp + p.fmt.Sharp = leading0x p.fmt.fmt_integer(v, 16, unsigned, ldigits) - p.fmt.sharp = sharp + p.fmt.Sharp = sharp } // fmtInteger formats a signed or unsigned integer. func (p *printer) fmtInteger(v uint64, isSigned bool, verb rune) { switch verb { case 'v': - if p.fmt.sharpV && !isSigned { + if p.fmt.SharpV && !isSigned { p.fmt0x64(v, true) return } fallthrough case 'd': - if p.fmt.sharp || p.fmt.sharpV { + if p.fmt.Sharp || p.fmt.SharpV { p.fmt.fmt_integer(v, 10, isSigned, ldigits) } else { p.fmtDecimalInt(v, isSigned) @@ -234,19 +219,19 @@ func (p *printer) fmtFloat(v float64, size int, verb rune) { verb = 'g' fallthrough case 'g', 'G': - if p.fmt.sharp || p.fmt.sharpV { + if p.fmt.Sharp || p.fmt.SharpV { p.fmt.fmt_float(v, size, verb, -1) } else { - p.fmtVariableFloat(v, size, -1) + p.fmtVariableFloat(v, size) } case 'e', 'E': - if p.fmt.sharp || p.fmt.sharpV { + if p.fmt.Sharp || p.fmt.SharpV { p.fmt.fmt_float(v, size, verb, 6) } else { p.fmtScientific(v, size, 6) } case 'f', 'F': - if p.fmt.sharp || p.fmt.sharpV { + if p.fmt.Sharp || p.fmt.SharpV { p.fmt.fmt_float(v, size, verb, 6) } else { p.fmtDecimalFloat(v, size, 6) @@ -258,9 +243,9 @@ func (p *printer) fmtFloat(v float64, size int, verb rune) { func (p *printer) setFlags(f *number.Formatter) { f.Flags &^= number.ElideSign - if p.fmt.plus || p.fmt.space { + if p.fmt.Plus || p.fmt.Space { f.Flags |= number.AlwaysSign - if !p.fmt.plus { + if !p.fmt.Plus { f.Flags |= number.ElideSign } } else { @@ -270,13 +255,13 @@ func (p *printer) setFlags(f *number.Formatter) { func (p *printer) updatePadding(f *number.Formatter) { f.Flags &^= number.PadMask - if p.fmt.minus { + if p.fmt.Minus { f.Flags |= number.PadAfterSuffix } else { f.Flags |= number.PadBeforePrefix } f.PadRune = ' ' - f.FormatWidth = uint16(p.fmt.wid) + f.FormatWidth = uint16(p.fmt.Width) } func (p *printer) initDecimal(minFrac, maxFrac int) { @@ -284,18 +269,18 @@ func (p *printer) initDecimal(minFrac, maxFrac int) { f.MinIntegerDigits = 1 f.MaxIntegerDigits = 0 f.MinFractionDigits = uint8(minFrac) - f.MaxFractionDigits = uint8(maxFrac) + f.MaxFractionDigits = int16(maxFrac) p.setFlags(f) f.PadRune = 0 - if p.fmt.widPresent { - if p.fmt.zero { - wid := p.fmt.wid + if p.fmt.WidthPresent { + if p.fmt.Zero { + wid := p.fmt.Width // Use significant integers for this. // TODO: this is not the same as width, but so be it. if f.MinFractionDigits > 0 { wid -= 1 + int(f.MinFractionDigits) } - if p.fmt.plus || p.fmt.space { + if p.fmt.Plus || p.fmt.Space { wid-- } if wid > 0 && wid > int(f.MinIntegerDigits) { @@ -308,14 +293,19 @@ func (p *printer) initDecimal(minFrac, maxFrac int) { func (p *printer) initScientific(minFrac, maxFrac int) { f := &p.toScientific - f.MinFractionDigits = uint8(minFrac) - f.MaxFractionDigits = uint8(maxFrac) + if maxFrac < 0 { + f.SetPrecision(maxFrac) + } else { + f.SetPrecision(maxFrac + 1) + f.MinFractionDigits = uint8(minFrac) + f.MaxFractionDigits = int16(maxFrac) + } f.MinExponentDigits = 2 p.setFlags(f) f.PadRune = 0 - if p.fmt.widPresent { + if p.fmt.WidthPresent { f.Flags &^= number.PadMask - if p.fmt.zero { + if p.fmt.Zero { f.PadRune = f.Digit(0) f.Flags |= number.PadAfterPrefix } else { @@ -328,22 +318,21 @@ func (p *printer) initScientific(minFrac, maxFrac int) { func (p *printer) fmtDecimalInt(v uint64, isSigned bool) { var d number.Decimal - p.toDecimal.RoundingContext.Scale = 0 - d.ConvertInt(&p.toDecimal.RoundingContext, isSigned, v) f := &p.toDecimal - if p.fmt.precPresent { + if p.fmt.PrecPresent { p.setFlags(f) - f.MinIntegerDigits = uint8(p.fmt.prec) + f.MinIntegerDigits = uint8(p.fmt.Prec) f.MaxIntegerDigits = 0 f.MinFractionDigits = 0 f.MaxFractionDigits = 0 - if p.fmt.widPresent { + if p.fmt.WidthPresent { p.updatePadding(f) } } else { p.initDecimal(0, 0) } + d.ConvertInt(p.toDecimal.RoundingContext, isSigned, v) out := p.toDecimal.Format([]byte(nil), &d) p.Buffer.Write(out) @@ -351,25 +340,24 @@ func (p *printer) fmtDecimalInt(v uint64, isSigned bool) { func (p *printer) fmtDecimalFloat(v float64, size, prec int) { var d number.Decimal - if p.fmt.precPresent { - prec = p.fmt.prec + if p.fmt.PrecPresent { + prec = p.fmt.Prec } - p.toDecimal.RoundingContext.Scale = int32(prec) - d.ConvertFloat(&p.toDecimal.RoundingContext, v, size) - p.initDecimal(prec, prec) + d.ConvertFloat(p.toDecimal.RoundingContext, v, size) out := p.toDecimal.Format([]byte(nil), &d) p.Buffer.Write(out) } -func (p *printer) fmtVariableFloat(v float64, size, prec int) { - if p.fmt.precPresent { - prec = p.fmt.prec +func (p *printer) fmtVariableFloat(v float64, size int) { + prec := -1 + if p.fmt.PrecPresent { + prec = p.fmt.Prec } var d number.Decimal - p.toScientific.RoundingContext.Precision = int32(prec) - d.ConvertFloat(&p.toScientific.RoundingContext, v, size) + p.initScientific(0, prec) + d.ConvertFloat(p.toScientific.RoundingContext, v, size) // Copy logic of 'g' formatting from strconv. It is simplified a bit as // we don't have to mind having prec > len(d.Digits). @@ -404,13 +392,12 @@ func (p *printer) fmtVariableFloat(v float64, size, prec int) { func (p *printer) fmtScientific(v float64, size, prec int) { var d number.Decimal - if p.fmt.precPresent { - prec = p.fmt.prec + if p.fmt.PrecPresent { + prec = p.fmt.Prec } - p.toScientific.RoundingContext.Precision = int32(prec) - d.ConvertFloat(&p.toScientific.RoundingContext, v, size) - p.initScientific(prec, prec) + rc := p.toScientific.RoundingContext + d.ConvertFloat(rc, v, size) out := p.toScientific.Format([]byte(nil), &d) p.Buffer.Write(out) @@ -454,11 +441,11 @@ func (p *printer) fmtComplex(v complex128, size int, verb rune) { p.WriteString("i)") return } - oldPlus := p.fmt.plus - p.fmt.plus = true + oldPlus := p.fmt.Plus + p.fmt.Plus = true p.fmtFloat(imag(v), size/2, verb) p.WriteString("i)") // TODO: use symbol? - p.fmt.plus = oldPlus + p.fmt.Plus = oldPlus default: p.badVerb(verb) } @@ -467,7 +454,7 @@ func (p *printer) fmtComplex(v complex128, size int, verb rune) { func (p *printer) fmtString(v string, verb rune) { switch verb { case 'v': - if p.fmt.sharpV { + if p.fmt.SharpV { p.fmt.fmt_q(v) } else { p.fmt.fmt_s(v) @@ -488,7 +475,7 @@ func (p *printer) fmtString(v string, verb rune) { func (p *printer) fmtBytes(v []byte, verb rune, typeString string) { switch verb { case 'v', 'd': - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(typeString) if v == nil { p.WriteString(nilParenString) @@ -537,7 +524,7 @@ func (p *printer) fmtPointer(value reflect.Value, verb rune) { switch verb { case 'v': - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteByte('(') p.WriteString(value.Type().String()) p.WriteString(")(") @@ -551,14 +538,14 @@ func (p *printer) fmtPointer(value reflect.Value, verb rune) { if u == 0 { p.fmt.padString(nilAngleString) } else { - p.fmt0x64(uint64(u), !p.fmt.sharp) + p.fmt0x64(uint64(u), !p.fmt.Sharp) } } case 'p': - p.fmt0x64(uint64(u), !p.fmt.sharp) + p.fmt0x64(uint64(u), !p.fmt.Sharp) case 'b', 'o', 'd', 'x', 'X': if verb == 'd' { - p.fmt.sharp = true // Print as standard go. TODO: does this make sense? + p.fmt.Sharp = true // Print as standard go. TODO: does this make sense? } p.fmtInteger(uint64(u), unsigned, verb) default: @@ -582,9 +569,9 @@ func (p *printer) catchPanic(arg interface{}, verb rune) { panic(err) } - oldFlags := p.fmt.fmtFlags + oldFlags := p.fmt.Parser // For this output we want default behavior. - p.fmt.clearflags() + p.fmt.ClearFlags() p.WriteString(percentBangString) p.WriteRune(verb) @@ -594,7 +581,7 @@ func (p *printer) catchPanic(arg interface{}, verb rune) { p.panicking = false p.WriteByte(')') - p.fmt.fmtFlags = oldFlags + p.fmt.Parser = oldFlags } } @@ -603,6 +590,12 @@ func (p *printer) handleMethods(verb rune) (handled bool) { return } // Is it a Formatter? + if formatter, ok := p.arg.(format.Formatter); ok { + handled = true + defer p.catchPanic(p.arg, verb) + formatter.Format(p, verb) + return + } if formatter, ok := p.arg.(fmt.Formatter); ok { handled = true defer p.catchPanic(p.arg, verb) @@ -611,7 +604,7 @@ func (p *printer) handleMethods(verb rune) (handled bool) { } // If we're doing Go syntax and the argument knows how to supply it, take care of it now. - if p.fmt.sharpV { + if p.fmt.SharpV { if stringer, ok := p.arg.(fmt.GoStringer); ok { handled = true defer p.catchPanic(p.arg, verb) @@ -772,7 +765,7 @@ func (p *printer) printValue(value reflect.Value, verb rune, depth int) { case reflect.String: p.fmtString(f.String(), verb) case reflect.Map: - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(f.Type().String()) if f.IsNil() { p.WriteString(nilParenString) @@ -785,7 +778,7 @@ func (p *printer) printValue(value reflect.Value, verb rune, depth int) { keys := f.MapKeys() for i, key := range keys { if i > 0 { - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(commaSpaceString) } else { p.WriteByte(' ') @@ -795,25 +788,25 @@ func (p *printer) printValue(value reflect.Value, verb rune, depth int) { p.WriteByte(':') p.printValue(f.MapIndex(key), verb, depth+1) } - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteByte('}') } else { p.WriteByte(']') } case reflect.Struct: - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(f.Type().String()) } p.WriteByte('{') for i := 0; i < f.NumField(); i++ { if i > 0 { - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(commaSpaceString) } else { p.WriteByte(' ') } } - if p.fmt.plusV || p.fmt.sharpV { + if p.fmt.PlusV || p.fmt.SharpV { if name := f.Type().Field(i).Name; name != "" { p.WriteString(name) p.WriteByte(':') @@ -825,7 +818,7 @@ func (p *printer) printValue(value reflect.Value, verb rune, depth int) { case reflect.Interface: value := f.Elem() if !value.IsValid() { - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(f.Type().String()) p.WriteString(nilParenString) } else { @@ -858,7 +851,7 @@ func (p *printer) printValue(value reflect.Value, verb rune, depth int) { return } } - if p.fmt.sharpV { + if p.fmt.SharpV { p.WriteString(f.Type().String()) if f.Kind() == reflect.Slice && f.IsNil() { p.WriteString(nilParenString) @@ -901,81 +894,6 @@ func (p *printer) printValue(value reflect.Value, verb rune, depth int) { } } -// intFromArg gets the argNumth element of a. On return, isInt reports whether the argument has integer type. -func (p *printer) intFromArg() (num int, isInt bool) { - if p.argNum < len(p.args) { - arg := p.args[p.argNum] - num, isInt = arg.(int) // Almost always OK. - if !isInt { - // Work harder. - switch v := reflect.ValueOf(arg); v.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - n := v.Int() - if int64(int(n)) == n { - num = int(n) - isInt = true - } - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - n := v.Uint() - if int64(n) >= 0 && uint64(int(n)) == n { - num = int(n) - isInt = true - } - default: - // Already 0, false. - } - } - p.argNum++ - if tooLarge(num) { - num = 0 - isInt = false - } - } - return -} - -// parseArgNumber returns the value of the bracketed number, minus 1 -// (explicit argument numbers are one-indexed but we want zero-indexed). -// The opening bracket is known to be present at format[0]. -// The returned values are the index, the number of bytes to consume -// up to the closing paren, if present, and whether the number parsed -// ok. The bytes to consume will be 1 if no closing paren is present. -func parseArgNumber(format string) (index int, wid int, ok bool) { - // There must be at least 3 bytes: [n]. - if len(format) < 3 { - return 0, 1, false - } - - // Find closing bracket. - for i := 1; i < len(format); i++ { - if format[i] == ']' { - width, ok, newi := parsenum(format, 1, i) - if !ok || newi != i { - return 0, i + 1, false - } - return width - 1, i + 1, true // arg numbers are one-indexed and skip paren. - } - } - return 0, 1, false -} - -// updateArgNumber returns the next argument to evaluate, which is either the value of the passed-in -// argNum or the value of the bracketed integer that begins format[i:]. It also returns -// the new value of i, that is, the index of the next byte of the format to process. -func (p *printer) updateArgNumber(format string, i int) (newi int, found bool) { - if len(format) <= i || format[i] != '[' { - return i, false - } - p.reordered = true - index, wid, ok := parseArgNumber(format[i:]) - if ok && 0 <= index && index < len(p.args) { - p.argNum = index - return i + wid, true - } - p.goodArgNum = false - return i + wid, ok -} - func (p *printer) badArgNum(verb rune) { p.WriteString(percentBangString) p.WriteRune(verb) @@ -988,151 +906,27 @@ func (p *printer) missingArg(verb rune) { p.WriteString(missingString) } -func (p *printer) doPrintf(format string) { - end := len(format) - afterIndex := false // previous item in format was an index like [3]. -formatLoop: - for i := 0; i < end; { - p.goodArgNum = true - lasti := i - for i < end && format[i] != '%' { - i++ - } - if i > lasti { - p.WriteString(format[lasti:i]) - } - if i >= end { - // done processing format string - break - } - - // Process one verb - i++ - - // Do we have flags? - p.fmt.clearflags() - simpleFormat: - for ; i < end; i++ { - c := format[i] - switch c { - case '#': - p.fmt.sharp = true - case '0': - p.fmt.zero = !p.fmt.minus // Only allow zero padding to the left. - case '+': - p.fmt.plus = true - case '-': - p.fmt.minus = true - p.fmt.zero = false // Do not pad with zeros to the right. - case ' ': - p.fmt.space = true - default: - // Fast path for common case of ascii lower case simple verbs - // without precision or width or argument indices. - if 'a' <= c && c <= 'z' && p.argNum < len(p.args) { - if c == 'v' { - // Go syntax - p.fmt.sharpV = p.fmt.sharp - p.fmt.sharp = false - // Struct-field syntax - p.fmt.plusV = p.fmt.plus - p.fmt.plus = false - } - p.printArg(p.Arg(p.argNum), rune(c)) - p.argNum++ - i++ - continue formatLoop - } - // Format is more complex than simple flags and a verb or is malformed. - break simpleFormat - } - } - - // Do we have an explicit argument index? - i, afterIndex = p.updateArgNumber(format, i) - - // Do we have width? - if i < end && format[i] == '*' { - i++ - p.fmt.wid, p.fmt.widPresent = p.intFromArg() - - if !p.fmt.widPresent { - p.WriteString(badWidthString) - } - - // We have a negative width, so take its value and ensure - // that the minus flag is set - if p.fmt.wid < 0 { - p.fmt.wid = -p.fmt.wid - p.fmt.minus = true - p.fmt.zero = false // Do not pad with zeros to the right. - } - afterIndex = false - } else { - p.fmt.wid, p.fmt.widPresent, i = parsenum(format, i, end) - if afterIndex && p.fmt.widPresent { // "%[3]2d" - p.goodArgNum = false - } - } - - // Do we have precision? - if i+1 < end && format[i] == '.' { - i++ - if afterIndex { // "%[3].2d" - p.goodArgNum = false - } - i, afterIndex = p.updateArgNumber(format, i) - if i < end && format[i] == '*' { - i++ - p.fmt.prec, p.fmt.precPresent = p.intFromArg() - // Negative precision arguments don't make sense - if p.fmt.prec < 0 { - p.fmt.prec = 0 - p.fmt.precPresent = false - } - if !p.fmt.precPresent { - p.WriteString(badPrecString) - } - afterIndex = false - } else { - p.fmt.prec, p.fmt.precPresent, i = parsenum(format, i, end) - if !p.fmt.precPresent { - p.fmt.prec = 0 - p.fmt.precPresent = true - } - } - } - - if !afterIndex { - i, afterIndex = p.updateArgNumber(format, i) - } - - if i >= end { +func (p *printer) doPrintf(fmt string) { + for p.fmt.Parser.SetFormat(fmt); p.fmt.Scan(); { + switch p.fmt.Status { + case format.StatusText: + p.WriteString(p.fmt.Text()) + case format.StatusSubstitution: + p.printArg(p.Arg(p.fmt.ArgNum), p.fmt.Verb) + case format.StatusBadWidthSubstitution: + p.WriteString(badWidthString) + p.printArg(p.Arg(p.fmt.ArgNum), p.fmt.Verb) + case format.StatusBadPrecSubstitution: + p.WriteString(badPrecString) + p.printArg(p.Arg(p.fmt.ArgNum), p.fmt.Verb) + case format.StatusNoVerb: p.WriteString(noVerbString) - break - } - - verb, w := utf8.DecodeRuneInString(format[i:]) - i += w - - switch { - case verb == '%': // Percent does not absorb operands and ignores f.wid and f.prec. - p.WriteByte('%') - case !p.goodArgNum: - p.badArgNum(verb) - case p.argNum >= len(p.args): // No argument left over to print for the current verb. - p.missingArg(verb) - case verb == 'v': - // Go syntax - p.fmt.sharpV = p.fmt.sharp - p.fmt.sharp = false - // Struct-field syntax - p.fmt.plusV = p.fmt.plus - p.fmt.plus = false - fallthrough + case format.StatusBadArgNum: + p.badArgNum(p.fmt.Verb) + case format.StatusMissingArg: + p.missingArg(p.fmt.Verb) default: - p.printArg(p.args[p.argNum], verb) - p.argNum++ + panic("unreachable") } } @@ -1140,10 +934,10 @@ formatLoop: // argument. Note that this behavior is necessarily different from fmt: // different variants of messages may opt to drop some or all of the // arguments. - if !p.reordered && p.argNum < len(p.args) && p.argNum != 0 { - p.fmt.clearflags() + if !p.fmt.Reordered && p.fmt.ArgNum < len(p.fmt.Args) && p.fmt.ArgNum != 0 { + p.fmt.ClearFlags() p.WriteString(extraString) - for i, arg := range p.args[p.argNum:] { + for i, arg := range p.fmt.Args[p.fmt.ArgNum:] { if i > 0 { p.WriteString(commaSpaceString) } @@ -1151,7 +945,7 @@ formatLoop: p.WriteString(nilAngleString) } else { p.WriteString(reflect.TypeOf(arg).String()) - p.WriteByte('=') + p.WriteString("=") p.printArg(arg, 'v') } } diff --git a/vendor/golang.org/x/text/number/doc.go b/vendor/golang.org/x/text/number/doc.go new file mode 100644 index 000000000..2ad8d431a --- /dev/null +++ b/vendor/golang.org/x/text/number/doc.go @@ -0,0 +1,28 @@ +// Copyright 2017 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 number formats numbers according to the customs of different locales. +// +// The number formats of this package allow for greater formatting flexibility +// than passing values to message.Printf calls as is. It currently supports the +// builtin Go types and anything that implements the Convert interface +// (currently internal). +// +// p := message.NewPrinter(language.English) +// +// p.Printf("%v bottles of beer on the wall.", number.Decimal(1234)) +// // Prints: 1,234 bottles of beer on the wall. +// +// p.Printf("%v of gophers lose too much fur", number.Percent(0.12)) +// // Prints: 12% of gophers lose too much fur. +// +// p := message.NewPrinter(language.Dutch) +// +// p.Printf("There are %v bikes per household.", number.Decimal(1.2)) +// // Prints: Er zijn 1,2 fietsen per huishouden. +// +// +// The width and scale specified in the formatting directives override the +// configuration of the formatter. +package number diff --git a/vendor/golang.org/x/text/number/examples_test.go b/vendor/golang.org/x/text/number/examples_test.go new file mode 100644 index 000000000..fb9bcc960 --- /dev/null +++ b/vendor/golang.org/x/text/number/examples_test.go @@ -0,0 +1,28 @@ +// Copyright 2017 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 number_test + +import ( + "golang.org/x/text/language" + "golang.org/x/text/message" + "golang.org/x/text/number" +) + +func ExampleMaxIntegerDigits() { + const year = 1999 + p := message.NewPrinter(language.English) + p.Println("Year:", number.Decimal(year, number.MaxIntegerDigits(2))) + + // Output: + // Year: 99 +} + +func ExampleIncrementString() { + p := message.NewPrinter(language.English) + + p.Println(number.Decimal(1.33, number.IncrementString("0.50"))) + + // Output: 1.50 +} diff --git a/vendor/golang.org/x/text/number/format.go b/vendor/golang.org/x/text/number/format.go new file mode 100755 index 000000000..1c3d41be0 --- /dev/null +++ b/vendor/golang.org/x/text/number/format.go @@ -0,0 +1,122 @@ +// Copyright 2017 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 number + +import ( + "fmt" + "strings" + + "golang.org/x/text/feature/plural" + "golang.org/x/text/internal/format" + "golang.org/x/text/internal/number" + "golang.org/x/text/language" +) + +// A FormatFunc formates a number. +type FormatFunc func(x interface{}, opts ...Option) Formatter + +// NewFormat creates a FormatFunc based on another FormatFunc and new options. +// Use NewFormat to cash the creation of formatters. +func NewFormat(format FormatFunc, opts ...Option) FormatFunc { + o := *format(nil).options + n := len(o.options) + o.options = append(o.options[:n:n], opts...) + return func(x interface{}, opts ...Option) Formatter { + return newFormatter(&o, opts, x) + } +} + +type options struct { + verbs string + initFunc initFunc + options []Option + pluralFunc func(t language.Tag, scale int) (f plural.Form, n int) +} + +type optionFlag uint16 + +const ( + hasScale optionFlag = 1 << iota + hasPrecision + noSeparator + exact +) + +type initFunc func(f *number.Formatter, t language.Tag) + +func newFormatter(o *options, opts []Option, value interface{}) Formatter { + if len(opts) > 0 { + n := *o + n.options = opts + o = &n + } + return Formatter{o, value} +} + +func newOptions(verbs string, f initFunc) *options { + return &options{verbs: verbs, initFunc: f} +} + +type Formatter struct { + *options + value interface{} +} + +// Format implements format.Formatter. It is for internal use only for now. +func (f Formatter) Format(state format.State, verb rune) { + // TODO: consider implementing fmt.Formatter instead and using the following + // piece of code. This allows numbers to be rendered mostly as expected + // when using fmt. But it may get weird with the spellout options and we + // may need more of format.State over time. + // lang := language.Und + // if s, ok := state.(format.State); ok { + // lang = s.Language() + // } + + lang := state.Language() + if !strings.Contains(f.verbs, string(verb)) { + fmt.Fprintf(state, "%%!%s(%T=%v)", string(verb), f.value, f.value) + return + } + var p number.Formatter + f.initFunc(&p, lang) + for _, o := range f.options.options { + o(lang, &p) + } + if w, ok := state.Width(); ok { + p.FormatWidth = uint16(w) + } + if prec, ok := state.Precision(); ok { + switch verb { + case 'd': + p.SetScale(0) + case 'f': + p.SetScale(prec) + case 'e': + p.SetPrecision(prec + 1) + case 'g': + p.SetPrecision(prec) + } + } + var d number.Decimal + d.Convert(p.RoundingContext, f.value) + state.Write(p.Format(nil, &d)) +} + +// Digits returns information about which logical digits will be presented to +// the user. This information is relevant, for instance, to determine plural +// forms. +func (f Formatter) Digits(buf []byte, tag language.Tag, scale int) number.Digits { + var p number.Formatter + f.initFunc(&p, tag) + if scale >= 0 { + // TODO: this only works well for decimal numbers, which is generally + // fine. + p.SetScale(scale) + } + var d number.Decimal + d.Convert(p.RoundingContext, f.value) + return number.FormatDigits(&d, p.RoundingContext) +} diff --git a/vendor/golang.org/x/text/number/format_test.go b/vendor/golang.org/x/text/number/format_test.go new file mode 100644 index 000000000..0205f8d0d --- /dev/null +++ b/vendor/golang.org/x/text/number/format_test.go @@ -0,0 +1,112 @@ +// Copyright 2017 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 number + +import ( + "fmt" + "testing" + + "golang.org/x/text/feature/plural" + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func TestWrongVerb(t *testing.T) { + testCases := []struct { + f Formatter + fmt string + want string + }{{ + f: Decimal(12), + fmt: "%e", + want: "%!e(int=12)", + }, { + f: Scientific(12), + fmt: "%f", + want: "%!f(int=12)", + }, { + f: Engineering(12), + fmt: "%f", + want: "%!f(int=12)", + }, { + f: Percent(12), + fmt: "%e", + want: "%!e(int=12)", + }} + for _, tc := range testCases { + t.Run("", func(t *testing.T) { + tag := language.Und + got := message.NewPrinter(tag).Sprintf(tc.fmt, tc.f) + if got != tc.want { + t.Errorf("got %q; want %q", got, tc.want) + } + }) + } +} + +func TestDigits(t *testing.T) { + testCases := []struct { + f Formatter + scale int + want string + }{{ + f: Decimal(3), + scale: 0, + want: "digits:[3] exp:1 comma:0 end:1", + }, { + f: Decimal(3.1), + scale: 0, + want: "digits:[3] exp:1 comma:0 end:1", + }, { + f: Scientific(3.1), + scale: 0, + want: "digits:[3] exp:1 comma:1 end:1", + }, { + f: Scientific(3.1), + scale: 3, + want: "digits:[3 1] exp:1 comma:1 end:4", + }} + for _, tc := range testCases { + t.Run("", func(t *testing.T) { + d := tc.f.Digits(nil, language.Croatian, tc.scale) + got := fmt.Sprintf("digits:%d exp:%d comma:%d end:%d", d.Digits, d.Exp, d.Comma, d.End) + if got != tc.want { + t.Errorf("got %v; want %v", got, tc.want) + } + }) + } +} + +func TestPluralIntegration(t *testing.T) { + testCases := []struct { + f Formatter + want string + }{{ + f: Decimal(1), + want: "one: 1", + }, { + f: Decimal(5), + want: "other: 5", + }} + for _, tc := range testCases { + t.Run("", func(t *testing.T) { + message.Set(language.English, "num %f", plural.Selectf(1, "%f", + "one", "one: %f", + "other", "other: %f")) + + p := message.NewPrinter(language.English) + + // Indirect the call to p.Sprintf through the variable f + // to avoid Go tip failing a vet check. + // TODO: remove once vet check has been fixed. See Issue #22936. + f := p.Sprintf + got := f("num %f", tc.f) + + if got != tc.want { + t.Errorf("got %q; want %q", got, tc.want) + } + }) + } +} diff --git a/vendor/golang.org/x/text/number/number.go b/vendor/golang.org/x/text/number/number.go new file mode 100755 index 000000000..f5ca93b15 --- /dev/null +++ b/vendor/golang.org/x/text/number/number.go @@ -0,0 +1,77 @@ +// Copyright 2017 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 number + +// TODO: +// p.Printf("The gauge was at %v.", number.Spell(number.Percent(23))) +// // Prints: The gauge was at twenty-three percent. +// +// p.Printf("From here to %v!", number.Spell(math.Inf())) +// // Prints: From here to infinity! +// + +import ( + "golang.org/x/text/internal/number" +) + +const ( + decimalVerbs = "vfgd" + scientificVerbs = "veg" +) + +// Decimal formats a number as a floating point decimal. +func Decimal(x interface{}, opts ...Option) Formatter { + return newFormatter(decimalOptions, opts, x) +} + +var decimalOptions = newOptions(decimalVerbs, (*number.Formatter).InitDecimal) + +// Scientific formats a number in scientific format. +func Scientific(x interface{}, opts ...Option) Formatter { + return newFormatter(scientificOptions, opts, x) +} + +var scientificOptions = newOptions(scientificVerbs, (*number.Formatter).InitScientific) + +// Engineering formats a number using engineering notation, which is like +// scientific notation, but with the exponent normalized to multiples of 3. +func Engineering(x interface{}, opts ...Option) Formatter { + return newFormatter(engineeringOptions, opts, x) +} + +var engineeringOptions = newOptions(scientificVerbs, (*number.Formatter).InitEngineering) + +// Percent formats a number as a percentage. A value of 1.0 means 100%. +func Percent(x interface{}, opts ...Option) Formatter { + return newFormatter(percentOptions, opts, x) +} + +var percentOptions = newOptions(decimalVerbs, (*number.Formatter).InitPercent) + +// PerMille formats a number as a per mille indication. A value of 1.0 means +// 1000‰. +func PerMille(x interface{}, opts ...Option) Formatter { + return newFormatter(perMilleOptions, opts, x) +} + +var perMilleOptions = newOptions(decimalVerbs, (*number.Formatter).InitPerMille) + +// TODO: +// - Shortest: akin to verb 'g' of 'G' +// +// TODO: RBNF forms: +// - Compact: 1M 3.5T +// - CompactBinary: 1Mi 3.5Ti +// - Long: 1 million +// - Ordinal: +// - Roman: MCMIIXX +// - RomanSmall: mcmiixx +// - Text: numbers as it typically appears in running text, allowing +// language-specific choices for when to use numbers and when to use words. +// - Spell?: spelled-out number. Maybe just allow as an option? + +// NOTE: both spelled-out numbers and ordinals, to render correctly, need +// detailed linguistic information from the translated string into which they +// are substituted. We will need to implement that first. diff --git a/vendor/golang.org/x/text/number/number_test.go b/vendor/golang.org/x/text/number/number_test.go new file mode 100644 index 000000000..3dcac3649 --- /dev/null +++ b/vendor/golang.org/x/text/number/number_test.go @@ -0,0 +1,190 @@ +// Copyright 2017 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 number + +import ( + "strings" + "testing" + + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func TestFormatter(t *testing.T) { + overrides := map[string]string{ + "en": "*e#######0", + "nl": "*n#######0", + } + testCases := []struct { + desc string + tag string + f Formatter + want string + }{{ + desc: "decimal", + f: Decimal(3), + want: "3", + }, { + desc: "decimal fraction", + f: Decimal(0.123), + want: "0.123", + }, { + desc: "separators", + f: Decimal(1234.567), + want: "1,234.567", + }, { + desc: "no separators", + f: Decimal(1234.567, NoSeparator()), + want: "1234.567", + }, { + desc: "max integer", + f: Decimal(1973, MaxIntegerDigits(2)), + want: "73", + }, { + desc: "max integer overflow", + f: Decimal(1973, MaxIntegerDigits(1000)), + want: "1,973", + }, { + desc: "min integer", + f: Decimal(12, MinIntegerDigits(5)), + want: "00,012", + }, { + desc: "max fraction zero", + f: Decimal(0.12345, MaxFractionDigits(0)), + want: "0", + }, { + desc: "max fraction 2", + f: Decimal(0.12, MaxFractionDigits(2)), + want: "0.12", + }, { + desc: "min fraction 2", + f: Decimal(0.12, MaxFractionDigits(2)), + want: "0.12", + }, { + desc: "max fraction overflow", + f: Decimal(0.125, MaxFractionDigits(1e6)), + want: "0.125", + }, { + desc: "min integer overflow", + f: Decimal(0, MinIntegerDigits(1e6)), + want: strings.Repeat("000,", 255/3-1) + "000", + }, { + desc: "min fraction overflow", + f: Decimal(0, MinFractionDigits(1e6)), + want: "0." + strings.Repeat("0", 255), // TODO: fraction separators + }, { + desc: "format width", + f: Decimal(123, FormatWidth(10)), + want: " 123", + }, { + desc: "format width pad option before", + f: Decimal(123, Pad('*'), FormatWidth(10)), + want: "*******123", + }, { + desc: "format width pad option after", + f: Decimal(123, FormatWidth(10), Pad('*')), + want: "*******123", + }, { + desc: "format width illegal", + f: Decimal(123, FormatWidth(-1)), + want: "123", + }, { + desc: "increment", + f: Decimal(10.33, IncrementString("0.5")), + want: "10.5", + }, { + desc: "increment", + f: Decimal(10, IncrementString("ppp")), + want: "10", + }, { + desc: "increment and scale", + f: Decimal(10.33, IncrementString("0.5"), Scale(2)), + want: "10.50", + }, { + desc: "pattern overrides en", + tag: "en", + f: Decimal(101, PatternOverrides(overrides)), + want: "eeeee101", + }, { + desc: "pattern overrides nl", + tag: "nl", + f: Decimal(101, PatternOverrides(overrides)), + want: "nnnnn101", + }, { + desc: "pattern overrides de", + tag: "de", + f: Decimal(101, PatternOverrides(overrides)), + want: "101", + }, { + desc: "language selection", + tag: "bn", + f: Decimal(123456.78, Scale(2)), + want: "১,২৩,৪৫৬.৭৮", + }, { + desc: "scale", + f: Decimal(1234.567, Scale(2)), + want: "1,234.57", + }, { + desc: "scientific", + f: Scientific(3.00), + want: "3\u202f×\u202f10⁰", + }, { + desc: "scientific", + f: Scientific(1234), + want: "1.234\u202f×\u202f10³", + }, { + desc: "scientific", + f: Scientific(1234, Scale(2)), + want: "1.23\u202f×\u202f10³", + }, { + desc: "engineering", + f: Engineering(12345), + want: "12.345\u202f×\u202f10³", + }, { + desc: "engineering scale", + f: Engineering(12345, Scale(2)), + want: "12.34\u202f×\u202f10³", + }, { + desc: "engineering precision(4)", + f: Engineering(12345, Precision(4)), + want: "12.34\u202f×\u202f10³", + }, { + desc: "engineering precision(2)", + f: Engineering(1234.5, Precision(2)), + want: "1.2\u202f×\u202f10³", + }, { + desc: "percent", + f: Percent(0.12), + want: "12%", + }, { + desc: "permille", + f: PerMille(0.123), + want: "123‰", + }, { + desc: "percent rounding", + f: PerMille(0.12345), + want: "123‰", + }, { + desc: "percent fraction", + f: PerMille(0.12345, Scale(2)), + want: "123.45‰", + }, { + desc: "percent fraction", + f: PerMille(0.12344, Scale(1)), + want: "123.4‰", + }} + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + tag := language.Und + if tc.tag != "" { + tag = language.MustParse(tc.tag) + } + got := message.NewPrinter(tag).Sprint(tc.f) + if got != tc.want { + t.Errorf("got %q; want %q", got, tc.want) + } + }) + } +} diff --git a/vendor/golang.org/x/text/number/option.go b/vendor/golang.org/x/text/number/option.go new file mode 100644 index 000000000..de96f8eaa --- /dev/null +++ b/vendor/golang.org/x/text/number/option.go @@ -0,0 +1,177 @@ +// Copyright 2017 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 number + +import ( + "fmt" + + "golang.org/x/text/internal/number" + "golang.org/x/text/language" +) + +// An Option configures a Formatter. +type Option option + +type option func(tag language.Tag, f *number.Formatter) + +// TODO: SpellOut requires support of the ICU RBNF format. +// func SpellOut() Option + +// NoSeparator causes a number to be displayed without grouping separators. +func NoSeparator() Option { + return func(t language.Tag, f *number.Formatter) { + f.GroupingSize = [2]uint8{} + } +} + +// MaxIntegerDigits limits the number of integer digits, eliminating the +// most significant digits. +func MaxIntegerDigits(max int) Option { + return func(t language.Tag, f *number.Formatter) { + if max >= 1<<8 { + max = (1 << 8) - 1 + } + f.MaxIntegerDigits = uint8(max) + } +} + +// MinIntegerDigits specifies the minimum number of integer digits, adding +// leading zeros when needed. +func MinIntegerDigits(min int) Option { + return func(t language.Tag, f *number.Formatter) { + if min >= 1<<8 { + min = (1 << 8) - 1 + } + f.MinIntegerDigits = uint8(min) + } +} + +// MaxFractionDigits specifies the maximum number of fractional digits. +func MaxFractionDigits(max int) Option { + return func(t language.Tag, f *number.Formatter) { + if max >= 1<<15 { + max = (1 << 15) - 1 + } + f.MaxFractionDigits = int16(max) + } +} + +// MinFractionDigits specifies the minimum number of fractional digits. +func MinFractionDigits(min int) Option { + return func(t language.Tag, f *number.Formatter) { + if min >= 1<<8 { + min = (1 << 8) - 1 + } + f.MinFractionDigits = uint8(min) + } +} + +// Precision sets the maximum number of significant digits. A negative value +// means exact. +func Precision(prec int) Option { + return func(t language.Tag, f *number.Formatter) { + f.SetPrecision(prec) + } +} + +// Scale simultaneously sets MinFractionDigits and MaxFractionDigits to the +// given value. +func Scale(decimals int) Option { + return func(t language.Tag, f *number.Formatter) { + f.SetScale(decimals) + } +} + +// IncrementString sets the incremental value to which numbers should be +// rounded. For instance: Increment("0.05") will cause 1.44 to round to 1.45. +// IncrementString also sets scale to the scale of the increment. +func IncrementString(decimal string) Option { + increment := 0 + scale := 0 + d := decimal + p := 0 + for ; p < len(d) && '0' <= d[p] && d[p] <= '9'; p++ { + increment *= 10 + increment += int(d[p]) - '0' + } + if p < len(d) && d[p] == '.' { + for p++; p < len(d) && '0' <= d[p] && d[p] <= '9'; p++ { + increment *= 10 + increment += int(d[p]) - '0' + scale++ + } + } + if p < len(d) { + increment = 0 + scale = 0 + } + return func(t language.Tag, f *number.Formatter) { + f.Increment = uint32(increment) + f.IncrementScale = uint8(scale) + f.SetScale(scale) + } +} + +func noop(language.Tag, *number.Formatter) {} + +// PatternOverrides allows users to specify alternative patterns for specific +// languages. The Pattern will be overridden for all languages in a subgroup as +// well. The function will panic for invalid input. It is best to create this +// option at startup time. +// PatternOverrides must be the first Option passed to a formatter. +func PatternOverrides(patterns map[string]string) Option { + // TODO: make it so that it does not have to be the first option. + // TODO: use -x-nochild to indicate it does not override child tags. + m := map[language.Tag]*number.Pattern{} + for k, v := range patterns { + tag := language.MustParse(k) + p, err := number.ParsePattern(v) + if err != nil { + panic(fmt.Errorf("number: PatternOverrides: %v", err)) + } + m[tag] = p + } + return func(t language.Tag, f *number.Formatter) { + // TODO: Use language grouping relation instead of parent relation. + // TODO: Should parent implement the grouping relation? + for lang := t; ; lang = t.Parent() { + if p, ok := m[lang]; ok { + f.Pattern = *p + break + } + if lang == language.Und { + break + } + } + } +} + +// FormatWidth sets the total format width. +func FormatWidth(n int) Option { + if n <= 0 { + return noop + } + return func(t language.Tag, f *number.Formatter) { + f.FormatWidth = uint16(n) + if f.PadRune == 0 { + f.PadRune = ' ' + } + } +} + +// Pad sets the rune to be used for filling up to the format width. +func Pad(r rune) Option { + return func(t language.Tag, f *number.Formatter) { + f.PadRune = r + } +} + +// TODO: +// - FormatPosition (using type aliasing?) +// - Multiplier: find a better way to represent and figure out what to do +// with clashes with percent/permille. +// - NumberingSystem(nu string): not accessable in number.Info now. Also, should +// this be keyed by language or generic? +// - SymbolOverrides(symbols map[string]map[number.SymbolType]string) Option diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule.go b/vendor/golang.org/x/text/secure/bidirule/bidirule.go index a7161bdd9..0e6b85824 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule.go @@ -155,6 +155,7 @@ func DirectionString(s string) bidi.Direction { e, sz := bidi.LookupString(s[i:]) if sz == 0 { i++ + continue } c := e.Class() if c == bidi.R || c == bidi.AL || c == bidi.AN { @@ -203,9 +204,6 @@ func (t *Transformer) isRTL() bool { } func (t *Transformer) isFinal() bool { - if !t.isRTL() { - return true - } return t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial } diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go b/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go index 0794b3d7d..4b6c612dc 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go @@ -120,43 +120,53 @@ var testCases = [][]ruleTest{ }, { in: strEN, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strEN), }, { in: strES, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strES), }, { in: strET, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strET), }, { in: strCS, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strCS), }, { in: strNSM, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strNSM), }, { in: strBN, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strBN), }, { in: strB, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strB), }, { in: strS, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strS), }, { in: strWS, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strWS), }, { in: strON, dir: bidi.LeftToRight, - err: nil, // not an RTL string + err: ErrInvalid, + n: len(strON), }, { in: strEN + strR, dir: bidi.RightToLeft, @@ -506,8 +516,8 @@ var testCases = [][]ruleTest{ }, { in: strL + strB + strL, dir: bidi.LeftToRight, - n: len(strL + strAN + strL), - err: nil, + n: len(strL + strB + strL), + err: ErrInvalid, }, { in: strL + strB + strL + strR, dir: bidi.RightToLeft, @@ -517,7 +527,7 @@ var testCases = [][]ruleTest{ in: strL + strS + strL, dir: bidi.LeftToRight, n: len(strL + strS + strL), - err: nil, + err: ErrInvalid, }, { in: strL + strS + strL + strR, dir: bidi.RightToLeft, @@ -527,7 +537,7 @@ var testCases = [][]ruleTest{ in: strL + strWS + strL, dir: bidi.LeftToRight, n: len(strL + strWS + strL), - err: nil, + err: ErrInvalid, }, { in: strL + strWS + strL + strR, dir: bidi.RightToLeft, @@ -560,7 +570,7 @@ var testCases = [][]ruleTest{ in: strL + strES, dir: bidi.LeftToRight, n: len(strL + strES), - err: nil, + err: ErrInvalid, }, { in: strL + strES + strR, dir: bidi.RightToLeft, @@ -570,7 +580,7 @@ var testCases = [][]ruleTest{ in: strL + strCS, dir: bidi.LeftToRight, n: len(strL + strCS), - err: nil, + err: ErrInvalid, }, { in: strL + strCS + strR, dir: bidi.RightToLeft, @@ -580,7 +590,7 @@ var testCases = [][]ruleTest{ in: strL + strET, dir: bidi.LeftToRight, n: len(strL + strET), - err: nil, + err: ErrInvalid, }, { in: strL + strET + strR, dir: bidi.RightToLeft, @@ -590,7 +600,7 @@ var testCases = [][]ruleTest{ in: strL + strON, dir: bidi.LeftToRight, n: len(strL + strON), - err: nil, + err: ErrInvalid, }, { in: strL + strON + strR, dir: bidi.RightToLeft, @@ -600,7 +610,7 @@ var testCases = [][]ruleTest{ in: strL + strBN, dir: bidi.LeftToRight, n: len(strL + strBN), - err: nil, + err: ErrInvalid, }, { in: strL + strBN + strR, dir: bidi.RightToLeft, @@ -625,31 +635,31 @@ var testCases = [][]ruleTest{ in: strL + strB, dir: bidi.LeftToRight, n: len(strL + strB), - err: nil, + err: ErrInvalid, }, { in: strL + strB + strR, dir: bidi.RightToLeft, n: len(strL + strB), err: ErrInvalid, }, { - in: strL + strB, + in: strL + strS, dir: bidi.LeftToRight, - n: len(strL + strB), - err: nil, - }, { - in: strL + strB + strR, - dir: bidi.RightToLeft, - n: len(strL + strB), + n: len(strL + strS), err: ErrInvalid, }, { - in: strL + strB, - dir: bidi.LeftToRight, - n: len(strL + strB), - err: nil, - }, { - in: strL + strB + strR, + in: strL + strS + strR, dir: bidi.RightToLeft, - n: len(strL + strB), + n: len(strL + strS), + err: ErrInvalid, + }, { + in: strL + strWS, + dir: bidi.LeftToRight, + n: len(strL + strWS), + err: ErrInvalid, + }, { + in: strL + strWS + strR, + dir: bidi.RightToLeft, + n: len(strL + strWS), err: ErrInvalid, }}, @@ -687,6 +697,11 @@ var testCases = [][]ruleTest{ szDst: 5, nSrc: 5, err0: transform.ErrShortDst, + }, { + in: "\U000102f7", + dir: bidi.LeftToRight, + n: len("\U000102f7"), + err: ErrInvalid, }, { // Short destination splitting input rune in: "e\u0301", @@ -696,6 +711,17 @@ var testCases = [][]ruleTest{ szDst: 2, nSrc: 1, err0: transform.ErrShortDst, + }, { + // Unicode 10.0.0 IDNA test string. + in: "FAX\u2a77\U0001d186", + dir: bidi.LeftToRight, + n: len("FAX\u2a77\U0001d186"), + err: ErrInvalid, + }, { + in: "\x80\u0660", + dir: bidi.RightToLeft, + n: 0, + err: ErrInvalid, }}, } diff --git a/vendor/golang.org/x/text/secure/precis/doc.go b/vendor/golang.org/x/text/secure/precis/doc.go index 48500fe1c..939ff222d 100644 --- a/vendor/golang.org/x/text/secure/precis/doc.go +++ b/vendor/golang.org/x/text/secure/precis/doc.go @@ -4,8 +4,8 @@ // Package precis contains types and functions for the preparation, // enforcement, and comparison of internationalized strings ("PRECIS") as -// defined in RFC 7564. It also contains several pre-defined profiles for -// passwords, nicknames, and usernames as defined in RFC 7613 and RFC 7700. +// defined in RFC 8264. It also contains several pre-defined profiles for +// passwords, nicknames, and usernames as defined in RFC 8265 and RFC 8266. // // BE ADVISED: This package is under construction and the API may change in // backwards incompatible ways and without notice. diff --git a/vendor/golang.org/x/text/secure/precis/enforce_test.go b/vendor/golang.org/x/text/secure/precis/enforce_test.go index d36a9809c..126a2d7a7 100644 --- a/vendor/golang.org/x/text/secure/precis/enforce_test.go +++ b/vendor/golang.org/x/text/secure/precis/enforce_test.go @@ -210,27 +210,27 @@ var enforceTestCases = []struct { {"\u03D2", "", errDisallowedRune}, {"\u03B0", "\u03B0", nil}, {"foo bar", "", errDisallowedRune}, - {"♚", "", errDisallowedRune}, + {"♚", "", bidirule.ErrInvalid}, {"\u007E", "~", nil}, {"a", "a", nil}, {"!", "!", nil}, - {"²", "", errDisallowedRune}, + {"²", "", bidirule.ErrInvalid}, {"\t", "", errDisallowedRune}, {"\n", "", errDisallowedRune}, - {"\u26D6", "", errDisallowedRune}, - {"\u26FF", "", errDisallowedRune}, + {"\u26D6", "", bidirule.ErrInvalid}, + {"\u26FF", "", bidirule.ErrInvalid}, {"\uFB00", "", errDisallowedRune}, - {"\u1680", "", errDisallowedRune}, + {"\u1680", "", bidirule.ErrInvalid}, {" ", "", errDisallowedRune}, {" ", "", errDisallowedRune}, {"\u01C5", "", errDisallowedRune}, - {"\u16EE", "", errDisallowedRune}, // Nl RUNIC ARLAUG SYMBOL - {"\u0488", "", errDisallowedRune}, // Me COMBINING CYRILLIC HUNDRED THOUSANDS SIGN - {"\u212B", "\u00e5", nil}, // Angstrom sign, NFC -> U+00E5 - {"A\u030A", "å", nil}, // A + ring - {"\u00C5", "å", nil}, // A with ring - {"\u00E7", "ç", nil}, // c cedille - {"\u0063\u0327", "ç", nil}, // c + cedille + {"\u16EE", "", errDisallowedRune}, // Nl RUNIC ARLAUG SYMBOL + {"\u0488", "", bidirule.ErrInvalid}, // Me COMBINING CYRILLIC HUNDRED THOUSANDS SIGN + {"\u212B", "\u00e5", nil}, // Angstrom sign, NFC -> U+00E5 + {"A\u030A", "å", nil}, // A + ring + {"\u00C5", "å", nil}, // A with ring + {"\u00E7", "ç", nil}, // c cedille + {"\u0063\u0327", "ç", nil}, // c + cedille {"\u0158", "ř", nil}, {"\u0052\u030C", "ř", nil}, @@ -279,13 +279,16 @@ func TestBytes(t *testing.T) { t.Errorf("got %+q (err: %v); want %+q (err: %v)", string(e), err, tc.output, tc.err) } }) - // Test that calling Bytes with something that doesn't transform returns a - // copy. - orig := []byte("hello") - b, _ := NewFreeform().Bytes(orig) - if reflect.ValueOf(b).Pointer() == reflect.ValueOf(orig).Pointer() { - t.Error("original and result are the same slice; should be a copy") - } + + t.Run("Copy", func(t *testing.T) { + // Test that calling Bytes with something that doesn't transform returns a + // copy. + orig := []byte("hello") + b, _ := NewFreeform().Bytes(orig) + if reflect.ValueOf(b).Pointer() == reflect.ValueOf(orig).Pointer() { + t.Error("original and result are the same slice; should be a copy") + } + }) } func TestAppend(t *testing.T) { diff --git a/vendor/golang.org/x/text/secure/precis/nickname.go b/vendor/golang.org/x/text/secure/precis/nickname.go index cd54b9e69..11e0ccbb1 100644 --- a/vendor/golang.org/x/text/secure/precis/nickname.go +++ b/vendor/golang.org/x/text/secure/precis/nickname.go @@ -23,24 +23,26 @@ func (t *nickAdditionalMapping) Reset() { } func (t *nickAdditionalMapping) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - // RFC 7700 §2.1. Rules + // RFC 8266 §2.1. Rules // // 2. Additional Mapping Rule: The additional mapping rule consists of - // the following sub-rules. + // the following sub-rules. // - // 1. Any instances of non-ASCII space MUST be mapped to ASCII - // space (U+0020); a non-ASCII space is any Unicode code point - // having a general category of "Zs", naturally with the - // exception of U+0020. + // a. Map any instances of non-ASCII space to SPACE (U+0020); a + // non-ASCII space is any Unicode code point having a general + // category of "Zs", naturally with the exception of SPACE + // (U+0020). (The inclusion of only ASCII space prevents + // confusion with various non-ASCII space code points, many of + // which are difficult to reproduce across different input + // methods.) // - // 2. Any instances of the ASCII space character at the beginning - // or end of a nickname MUST be removed (e.g., "stpeter " is - // mapped to "stpeter"). + // b. Remove any instances of the ASCII space character at the + // beginning or end of a nickname (e.g., "stpeter " is mapped to + // "stpeter"). // - // 3. Interior sequences of more than one ASCII space character - // MUST be mapped to a single ASCII space character (e.g., - // "St Peter" is mapped to "St Peter"). - + // c. Map interior sequences of more than one ASCII space character + // to a single ASCII space character (e.g., "St Peter" is + // mapped to "St Peter"). for nSrc < len(src) { r, size := utf8.DecodeRune(src[nSrc:]) if size == 0 { // Incomplete UTF-8 encoding diff --git a/vendor/golang.org/x/text/secure/precis/options.go b/vendor/golang.org/x/text/secure/precis/options.go index 488f0b1f7..26143db75 100644 --- a/vendor/golang.org/x/text/secure/precis/options.go +++ b/vendor/golang.org/x/text/secure/precis/options.go @@ -28,6 +28,7 @@ type options struct { width transform.SpanningTransformer disallowEmpty bool bidiRule bool + repeat bool // Comparison options ignorecase bool @@ -78,6 +79,9 @@ var ( bidiRule = func(o *options) { o.bidiRule = true } + repeat = func(o *options) { + o.repeat = true + } ) // TODO: move this logic to package transform diff --git a/vendor/golang.org/x/text/secure/precis/profile.go b/vendor/golang.org/x/text/secure/precis/profile.go index bf1025338..0419159b4 100644 --- a/vendor/golang.org/x/text/secure/precis/profile.go +++ b/vendor/golang.org/x/text/secure/precis/profile.go @@ -60,26 +60,44 @@ func (p *Profile) NewTransformer() *Transformer { // These transforms are applied in the order defined in // https://tools.ietf.org/html/rfc7564#section-7 - if p.options.foldWidth { - ts = append(ts, width.Fold) + // RFC 8266 §2.1: + // + // Implementation experience has shown that applying the rules for the + // Nickname profile is not an idempotent procedure for all code points. + // Therefore, an implementation SHOULD apply the rules repeatedly until + // the output string is stable; if the output string does not stabilize + // after reapplying the rules three (3) additional times after the first + // application, the implementation SHOULD terminate application of the + // rules and reject the input string as invalid. + // + // There is no known string that will change indefinitely, so repeat 4 times + // and rely on the Span method to keep things relatively performant. + r := 1 + if p.options.repeat { + r = 4 } + for ; r > 0; r-- { + if p.options.foldWidth { + ts = append(ts, width.Fold) + } - for _, f := range p.options.additional { - ts = append(ts, f()) + for _, f := range p.options.additional { + ts = append(ts, f()) + } + + if p.options.cases != nil { + ts = append(ts, p.options.cases) + } + + ts = append(ts, p.options.norm) + + if p.options.bidiRule { + ts = append(ts, bidirule.New()) + } + + ts = append(ts, &checker{p: p, allowed: p.Allowed()}) } - if p.options.cases != nil { - ts = append(ts, p.options.cases) - } - - ts = append(ts, p.options.norm) - - if p.options.bidiRule { - ts = append(ts, bidirule.New()) - } - - ts = append(ts, &checker{p: p, allowed: p.Allowed()}) - // TODO: Add the disallow empty rule with a dummy transformer? return &Transformer{transform.Chain(ts...)} @@ -162,42 +180,48 @@ func (b *buffers) enforce(p *Profile, src []byte, comparing bool) (str []byte, e } // These transforms are applied in the order defined in - // https://tools.ietf.org/html/rfc7564#section-7 + // https://tools.ietf.org/html/rfc8264#section-7 - // TODO: allow different width transforms options. - if p.options.foldWidth || (p.options.ignorecase && comparing) { - b.apply(foldWidthT) + r := 1 + if p.options.repeat { + r = 4 } - for _, f := range p.options.additional { - if err = b.apply(f()); err != nil { + for ; r > 0; r-- { + // TODO: allow different width transforms options. + if p.options.foldWidth || (p.options.ignorecase && comparing) { + b.apply(foldWidthT) + } + for _, f := range p.options.additional { + if err = b.apply(f()); err != nil { + return nil, err + } + } + if p.options.cases != nil { + b.apply(p.options.cases) + } + if comparing && p.options.ignorecase { + b.apply(lowerCaseT) + } + b.apply(p.norm) + if p.options.bidiRule && !bidirule.Valid(b.src) { + return nil, bidirule.ErrInvalid + } + c := checker{p: p} + if _, err := c.span(b.src, true); err != nil { return nil, err } - } - if p.options.cases != nil { - b.apply(p.options.cases) - } - if comparing && p.options.ignorecase { - b.apply(lowerCaseT) - } - b.apply(p.norm) - if p.options.bidiRule && !bidirule.Valid(b.src) { - return nil, bidirule.ErrInvalid - } - c := checker{p: p} - if _, err := c.span(b.src, true); err != nil { - return nil, err - } - if p.disallow != nil { - for i := 0; i < len(b.src); { - r, size := utf8.DecodeRune(b.src[i:]) - if p.disallow.Contains(r) { - return nil, errDisallowedRune + if p.disallow != nil { + for i := 0; i < len(b.src); { + r, size := utf8.DecodeRune(b.src[i:]) + if p.disallow.Contains(r) { + return nil, errDisallowedRune + } + i += size } - i += size } - } - if p.options.disallowEmpty && len(b.src) == 0 { - return nil, errEmptyString + if p.options.disallowEmpty && len(b.src) == 0 { + return nil, errEmptyString + } } return b.src, nil } diff --git a/vendor/golang.org/x/text/secure/precis/profile_test.go b/vendor/golang.org/x/text/secure/precis/profile_test.go index 916fc8b6d..4edb28a76 100644 --- a/vendor/golang.org/x/text/secure/precis/profile_test.go +++ b/vendor/golang.org/x/text/secure/precis/profile_test.go @@ -103,9 +103,9 @@ var compareTestCases = []struct { // After applying the Nickname profile, \u00a8 becomes \u0020\u0308, // however because the nickname profile is not idempotent, applying it again - // to \u0020\u0308 results in \u0308. This behavior is "correct", even if it - // is unexpected. - {"\u00a8", "\u0020\u0308", false}, + // to \u0020\u0308 results in \u0308. + {"\u00a8", "\u0020\u0308", true}, + {"\u00a8", "\u0308", true}, {"\u0020\u0308", "\u0308", true}, }}, } diff --git a/vendor/golang.org/x/text/secure/precis/profiles.go b/vendor/golang.org/x/text/secure/precis/profiles.go index 86010025c..061936d98 100644 --- a/vendor/golang.org/x/text/secure/precis/profiles.go +++ b/vendor/golang.org/x/text/secure/precis/profiles.go @@ -13,18 +13,17 @@ import ( ) var ( - // Implements the Nickname profile specified in RFC 7700. - // The nickname profile is not idempotent and may need to be applied multiple - // times before being used for comparisons. + // Implements the Nickname profile specified in RFC 8266. Nickname *Profile = nickname - // Implements the UsernameCaseMapped profile specified in RFC 7613. + // Implements the UsernameCaseMapped profile specified in RFC 8265. UsernameCaseMapped *Profile = usernameCaseMap - // Implements the UsernameCasePreserved profile specified in RFC 7613. + // Implements the UsernameCasePreserved profile specified in RFC 8265. UsernameCasePreserved *Profile = usernameNoCaseMap - // Implements the OpaqueString profile defined in RFC 7613 for passwords and other secure labels. + // Implements the OpaqueString profile defined in RFC 8265 for passwords and + // other secure labels. OpaqueString *Profile = opaquestring ) @@ -37,6 +36,7 @@ var ( IgnoreCase, Norm(norm.NFKC), DisallowEmpty, + repeat, ), class: freeform, } diff --git a/vendor/golang.org/x/text/secure/precis/tables.go b/vendor/golang.org/x/text/secure/precis/tables.go index 2f550c1ef..113d5d29e 100644 --- a/vendor/golang.org/x/text/secure/precis/tables.go +++ b/vendor/golang.org/x/text/secure/precis/tables.go @@ -3,7 +3,7 @@ package precis // UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" +const UnicodeVersion = "10.0.0" // lookup returns the trie value for the first UTF-8 encoding in s and // the width in bytes of this encoding. The size will be 0 if s does not @@ -175,7 +175,7 @@ func (t *derivedPropertiesTrie) lookupStringUnsafe(s string) uint8 { return 0 } -// derivedPropertiesTrie. Total size: 25344 bytes (24.75 KiB). Checksum: c5b977d76d42d8a. +// derivedPropertiesTrie. Total size: 25920 bytes (25.31 KiB). Checksum: 25eb1c8ad0a9331f. type derivedPropertiesTrie struct{} func newDerivedPropertiesTrie(i int) *derivedPropertiesTrie { @@ -190,9 +190,9 @@ func (t *derivedPropertiesTrie) lookupValue(n uint32, b byte) uint8 { } } -// derivedPropertiesValues: 324 blocks, 20736 entries, 20736 bytes +// derivedPropertiesValues: 331 blocks, 21184 entries, 21184 bytes // The third block is the zero block. -var derivedPropertiesValues = [20736]uint8{ +var derivedPropertiesValues = [21184]uint8{ // Block 0x0, offset 0x0 0x00: 0x0040, 0x01: 0x0040, 0x02: 0x0040, 0x03: 0x0040, 0x04: 0x0040, 0x05: 0x0040, 0x06: 0x0040, 0x07: 0x0040, 0x08: 0x0040, 0x09: 0x0040, 0x0a: 0x0040, 0x0b: 0x0040, @@ -531,7 +531,9 @@ var derivedPropertiesValues = [20736]uint8{ 0x74c: 0x00c2, 0x74d: 0x00c2, 0x74e: 0x00c2, 0x74f: 0x00c2, 0x750: 0x00c2, 0x751: 0x00c2, 0x752: 0x00c2, 0x753: 0x00c2, 0x754: 0x00c4, 0x755: 0x00c2, 0x756: 0x00c0, 0x757: 0x00c0, 0x758: 0x00c0, 0x759: 0x00c3, 0x75a: 0x00c3, 0x75b: 0x00c3, - 0x75e: 0x0080, + 0x75e: 0x0080, 0x760: 0x00c2, 0x761: 0x00c0, 0x762: 0x00c2, 0x763: 0x00c2, + 0x764: 0x00c2, 0x765: 0x00c2, 0x766: 0x00c0, 0x767: 0x00c4, 0x768: 0x00c2, 0x769: 0x00c4, + 0x76a: 0x00c4, // Block 0x1e, offset 0x780 0x7a0: 0x00c2, 0x7a1: 0x00c2, 0x7a2: 0x00c2, 0x7a3: 0x00c2, 0x7a4: 0x00c2, 0x7a5: 0x00c2, 0x7a6: 0x00c2, 0x7a7: 0x00c2, 0x7a8: 0x00c2, 0x7a9: 0x00c2, @@ -595,6 +597,7 @@ var derivedPropertiesValues = [20736]uint8{ 0x8ea: 0x00c0, 0x8eb: 0x00c0, 0x8ec: 0x00c0, 0x8ed: 0x00c0, 0x8ee: 0x00c0, 0x8ef: 0x00c0, 0x8f0: 0x00c0, 0x8f1: 0x00c0, 0x8f2: 0x0080, 0x8f3: 0x0080, 0x8f4: 0x0080, 0x8f5: 0x0080, 0x8f6: 0x0080, 0x8f7: 0x0080, 0x8f8: 0x0080, 0x8f9: 0x0080, 0x8fa: 0x0080, 0x8fb: 0x0080, + 0x8fc: 0x00c0, 0x8fd: 0x0080, // Block 0x24, offset 0x900 0x901: 0x00c3, 0x902: 0x00c3, 0x903: 0x00c0, 0x905: 0x00c0, 0x906: 0x00c0, 0x907: 0x00c0, 0x908: 0x00c0, 0x909: 0x00c0, 0x90a: 0x00c0, @@ -636,7 +639,8 @@ var derivedPropertiesValues = [20736]uint8{ 0x9e6: 0x00c0, 0x9e7: 0x00c0, 0x9e8: 0x00c0, 0x9e9: 0x00c0, 0x9ea: 0x00c0, 0x9eb: 0x00c0, 0x9ec: 0x00c0, 0x9ed: 0x00c0, 0x9ee: 0x00c0, 0x9ef: 0x00c0, 0x9f0: 0x0080, 0x9f1: 0x0080, - 0x9f9: 0x00c0, + 0x9f9: 0x00c0, 0x9fa: 0x00c3, 0x9fb: 0x00c3, + 0x9fc: 0x00c3, 0x9fd: 0x00c3, 0x9fe: 0x00c3, 0x9ff: 0x00c3, // Block 0x28, offset 0xa00 0xa01: 0x00c3, 0xa02: 0x00c0, 0xa03: 0x00c0, 0xa05: 0x00c0, 0xa06: 0x00c0, 0xa07: 0x00c0, 0xa08: 0x00c0, 0xa09: 0x00c0, 0xa0a: 0x00c0, 0xa0b: 0x00c0, @@ -726,7 +730,7 @@ var derivedPropertiesValues = [20736]uint8{ 0xbea: 0x00c0, 0xbeb: 0x00c0, 0xbec: 0x00c0, 0xbed: 0x00c0, 0xbee: 0x00c0, 0xbef: 0x00c0, 0xbf1: 0x00c0, 0xbf2: 0x00c0, // Block 0x30, offset 0xc00 - 0xc01: 0x00c3, 0xc02: 0x00c0, 0xc03: 0x00c0, 0xc05: 0x00c0, + 0xc00: 0x00c3, 0xc01: 0x00c3, 0xc02: 0x00c0, 0xc03: 0x00c0, 0xc05: 0x00c0, 0xc06: 0x00c0, 0xc07: 0x00c0, 0xc08: 0x00c0, 0xc09: 0x00c0, 0xc0a: 0x00c0, 0xc0b: 0x00c0, 0xc0c: 0x00c0, 0xc0e: 0x00c0, 0xc0f: 0x00c0, 0xc10: 0x00c0, 0xc12: 0x00c0, 0xc13: 0x00c0, 0xc14: 0x00c0, 0xc15: 0x00c0, 0xc16: 0x00c0, 0xc17: 0x00c0, @@ -735,8 +739,8 @@ var derivedPropertiesValues = [20736]uint8{ 0xc24: 0x00c0, 0xc25: 0x00c0, 0xc26: 0x00c0, 0xc27: 0x00c0, 0xc28: 0x00c0, 0xc29: 0x00c0, 0xc2a: 0x00c0, 0xc2b: 0x00c0, 0xc2c: 0x00c0, 0xc2d: 0x00c0, 0xc2e: 0x00c0, 0xc2f: 0x00c0, 0xc30: 0x00c0, 0xc31: 0x00c0, 0xc32: 0x00c0, 0xc33: 0x00c0, 0xc34: 0x00c0, 0xc35: 0x00c0, - 0xc36: 0x00c0, 0xc37: 0x00c0, 0xc38: 0x00c0, 0xc39: 0x00c0, 0xc3a: 0x00c0, - 0xc3d: 0x00c0, 0xc3e: 0x00c0, 0xc3f: 0x00c0, + 0xc36: 0x00c0, 0xc37: 0x00c0, 0xc38: 0x00c0, 0xc39: 0x00c0, 0xc3a: 0x00c0, 0xc3b: 0x00c6, + 0xc3c: 0x00c6, 0xc3d: 0x00c0, 0xc3e: 0x00c0, 0xc3f: 0x00c0, // Block 0x31, offset 0xc40 0xc40: 0x00c0, 0xc41: 0x00c3, 0xc42: 0x00c3, 0xc43: 0x00c3, 0xc44: 0x00c3, 0xc46: 0x00c0, 0xc47: 0x00c0, 0xc48: 0x00c0, 0xc4a: 0x00c0, 0xc4b: 0x00c0, @@ -1292,7 +1296,7 @@ var derivedPropertiesValues = [20736]uint8{ 0x18a4: 0x00c3, 0x18a5: 0x00c3, 0x18a6: 0x00c3, 0x18a7: 0x00c3, 0x18a8: 0x00c3, 0x18a9: 0x00c0, 0x18aa: 0x00c0, 0x18ab: 0x00c0, 0x18ac: 0x00c0, 0x18ad: 0x00c3, 0x18ae: 0x00c0, 0x18af: 0x00c0, 0x18b0: 0x00c0, 0x18b1: 0x00c0, 0x18b2: 0x00c0, 0x18b3: 0x00c0, 0x18b4: 0x00c3, 0x18b5: 0x00c0, - 0x18b6: 0x00c0, 0x18b8: 0x00c3, 0x18b9: 0x00c3, + 0x18b6: 0x00c0, 0x18b7: 0x00c0, 0x18b8: 0x00c3, 0x18b9: 0x00c3, // Block 0x63, offset 0x18c0 0x18c0: 0x00c0, 0x18c1: 0x00c0, 0x18c2: 0x00c0, 0x18c3: 0x00c0, 0x18c4: 0x00c0, 0x18c5: 0x00c0, 0x18c6: 0x00c0, 0x18c7: 0x00c0, 0x18c8: 0x00c0, 0x18c9: 0x00c0, 0x18ca: 0x00c0, 0x18cb: 0x00c0, @@ -1339,7 +1343,7 @@ var derivedPropertiesValues = [20736]uint8{ 0x19a4: 0x00c3, 0x19a5: 0x00c3, 0x19a6: 0x00c3, 0x19a7: 0x00c3, 0x19a8: 0x00c3, 0x19a9: 0x00c3, 0x19aa: 0x00c3, 0x19ab: 0x00c3, 0x19ac: 0x00c3, 0x19ad: 0x00c3, 0x19ae: 0x00c3, 0x19af: 0x00c3, 0x19b0: 0x00c3, 0x19b1: 0x00c3, 0x19b2: 0x00c3, 0x19b3: 0x00c3, 0x19b4: 0x00c3, 0x19b5: 0x00c3, - 0x19bb: 0x00c3, + 0x19b6: 0x00c3, 0x19b7: 0x00c3, 0x19b8: 0x00c3, 0x19b9: 0x00c3, 0x19bb: 0x00c3, 0x19bc: 0x00c3, 0x19bd: 0x00c3, 0x19be: 0x00c3, 0x19bf: 0x00c3, // Block 0x67, offset 0x19c0 0x19c0: 0x00c0, 0x19c1: 0x00c0, 0x19c2: 0x00c0, 0x19c3: 0x00c0, 0x19c4: 0x00c0, 0x19c5: 0x00c0, @@ -1436,7 +1440,7 @@ var derivedPropertiesValues = [20736]uint8{ 0x1baa: 0x0080, 0x1bab: 0x0080, 0x1bac: 0x0080, 0x1bad: 0x0080, 0x1bae: 0x0080, 0x1baf: 0x0080, 0x1bb0: 0x0080, 0x1bb1: 0x0080, 0x1bb2: 0x0080, 0x1bb3: 0x0080, 0x1bb4: 0x0080, 0x1bb5: 0x0080, 0x1bb6: 0x0080, 0x1bb7: 0x0080, 0x1bb8: 0x0080, 0x1bb9: 0x0080, 0x1bba: 0x0080, 0x1bbb: 0x0080, - 0x1bbc: 0x0080, 0x1bbd: 0x0080, 0x1bbe: 0x0080, + 0x1bbc: 0x0080, 0x1bbd: 0x0080, 0x1bbe: 0x0080, 0x1bbf: 0x0080, // Block 0x6f, offset 0x1bc0 0x1bd0: 0x00c3, 0x1bd1: 0x00c3, 0x1bd2: 0x00c3, 0x1bd3: 0x00c3, 0x1bd4: 0x00c3, 0x1bd5: 0x00c3, 0x1bd6: 0x00c3, 0x1bd7: 0x00c3, @@ -1500,81 +1504,82 @@ var derivedPropertiesValues = [20736]uint8{ 0x1d12: 0x0080, 0x1d13: 0x0080, 0x1d14: 0x0080, 0x1d15: 0x0080, 0x1d16: 0x0080, 0x1d17: 0x0080, 0x1d18: 0x0080, 0x1d19: 0x0080, 0x1d1a: 0x0080, 0x1d1b: 0x0080, 0x1d1c: 0x0080, 0x1d1d: 0x0080, 0x1d1e: 0x0080, 0x1d1f: 0x0080, 0x1d20: 0x0080, 0x1d21: 0x0080, 0x1d22: 0x0080, 0x1d23: 0x0080, - 0x1d24: 0x0080, 0x1d25: 0x0080, 0x1d26: 0x0080, 0x1d27: 0x0080, 0x1d28: 0x0080, 0x1d29: 0x0080, - 0x1d2a: 0x0080, 0x1d2b: 0x0080, 0x1d2c: 0x0080, 0x1d2d: 0x0080, 0x1d2e: 0x0080, 0x1d2f: 0x0080, - 0x1d30: 0x0080, 0x1d31: 0x0080, 0x1d32: 0x0080, 0x1d33: 0x0080, 0x1d34: 0x0080, 0x1d35: 0x0080, - 0x1d36: 0x0080, 0x1d37: 0x0080, 0x1d38: 0x0080, 0x1d39: 0x0080, 0x1d3a: 0x0080, 0x1d3b: 0x0080, - 0x1d3c: 0x0080, 0x1d3d: 0x0080, 0x1d3e: 0x0080, + 0x1d24: 0x0080, 0x1d25: 0x0080, 0x1d26: 0x0080, // Block 0x75, offset 0x1d40 0x1d40: 0x0080, 0x1d41: 0x0080, 0x1d42: 0x0080, 0x1d43: 0x0080, 0x1d44: 0x0080, 0x1d45: 0x0080, - 0x1d46: 0x0080, 0x1d47: 0x0080, 0x1d48: 0x0080, 0x1d49: 0x0080, 0x1d4a: 0x0080, 0x1d4b: 0x0080, - 0x1d4c: 0x0080, 0x1d4d: 0x0080, 0x1d4e: 0x0080, 0x1d4f: 0x0080, 0x1d50: 0x0080, 0x1d51: 0x0080, - 0x1d52: 0x0080, 0x1d53: 0x0080, 0x1d54: 0x0080, 0x1d55: 0x0080, 0x1d56: 0x0080, 0x1d57: 0x0080, - 0x1d58: 0x0080, 0x1d59: 0x0080, 0x1d5a: 0x0080, 0x1d5b: 0x0080, 0x1d5c: 0x0080, 0x1d5d: 0x0080, - 0x1d5e: 0x0080, 0x1d5f: 0x0080, 0x1d60: 0x0080, 0x1d61: 0x0080, 0x1d62: 0x0080, 0x1d63: 0x0080, - 0x1d64: 0x0080, 0x1d65: 0x0080, 0x1d66: 0x0080, + 0x1d46: 0x0080, 0x1d47: 0x0080, 0x1d48: 0x0080, 0x1d49: 0x0080, 0x1d4a: 0x0080, + 0x1d60: 0x0080, 0x1d61: 0x0080, 0x1d62: 0x0080, 0x1d63: 0x0080, + 0x1d64: 0x0080, 0x1d65: 0x0080, 0x1d66: 0x0080, 0x1d67: 0x0080, 0x1d68: 0x0080, 0x1d69: 0x0080, + 0x1d6a: 0x0080, 0x1d6b: 0x0080, 0x1d6c: 0x0080, 0x1d6d: 0x0080, 0x1d6e: 0x0080, 0x1d6f: 0x0080, + 0x1d70: 0x0080, 0x1d71: 0x0080, 0x1d72: 0x0080, 0x1d73: 0x0080, 0x1d74: 0x0080, 0x1d75: 0x0080, + 0x1d76: 0x0080, 0x1d77: 0x0080, 0x1d78: 0x0080, 0x1d79: 0x0080, 0x1d7a: 0x0080, 0x1d7b: 0x0080, + 0x1d7c: 0x0080, 0x1d7d: 0x0080, 0x1d7e: 0x0080, 0x1d7f: 0x0080, // Block 0x76, offset 0x1d80 0x1d80: 0x0080, 0x1d81: 0x0080, 0x1d82: 0x0080, 0x1d83: 0x0080, 0x1d84: 0x0080, 0x1d85: 0x0080, - 0x1d86: 0x0080, 0x1d87: 0x0080, 0x1d88: 0x0080, 0x1d89: 0x0080, 0x1d8a: 0x0080, - 0x1da0: 0x0080, 0x1da1: 0x0080, 0x1da2: 0x0080, 0x1da3: 0x0080, + 0x1d86: 0x0080, 0x1d87: 0x0080, 0x1d88: 0x0080, 0x1d89: 0x0080, 0x1d8a: 0x0080, 0x1d8b: 0x0080, + 0x1d8c: 0x0080, 0x1d8d: 0x0080, 0x1d8e: 0x0080, 0x1d8f: 0x0080, 0x1d90: 0x0080, 0x1d91: 0x0080, + 0x1d92: 0x0080, 0x1d93: 0x0080, 0x1d94: 0x0080, 0x1d95: 0x0080, 0x1d96: 0x0080, 0x1d97: 0x0080, + 0x1d98: 0x0080, 0x1d99: 0x0080, 0x1d9a: 0x0080, 0x1d9b: 0x0080, 0x1d9c: 0x0080, 0x1d9d: 0x0080, + 0x1d9e: 0x0080, 0x1d9f: 0x0080, 0x1da0: 0x0080, 0x1da1: 0x0080, 0x1da2: 0x0080, 0x1da3: 0x0080, 0x1da4: 0x0080, 0x1da5: 0x0080, 0x1da6: 0x0080, 0x1da7: 0x0080, 0x1da8: 0x0080, 0x1da9: 0x0080, 0x1daa: 0x0080, 0x1dab: 0x0080, 0x1dac: 0x0080, 0x1dad: 0x0080, 0x1dae: 0x0080, 0x1daf: 0x0080, - 0x1db0: 0x0080, 0x1db1: 0x0080, 0x1db2: 0x0080, 0x1db3: 0x0080, 0x1db4: 0x0080, 0x1db5: 0x0080, + 0x1db0: 0x0080, 0x1db1: 0x0080, 0x1db2: 0x0080, 0x1db3: 0x0080, 0x1db6: 0x0080, 0x1db7: 0x0080, 0x1db8: 0x0080, 0x1db9: 0x0080, 0x1dba: 0x0080, 0x1dbb: 0x0080, 0x1dbc: 0x0080, 0x1dbd: 0x0080, 0x1dbe: 0x0080, 0x1dbf: 0x0080, // Block 0x77, offset 0x1dc0 0x1dc0: 0x0080, 0x1dc1: 0x0080, 0x1dc2: 0x0080, 0x1dc3: 0x0080, 0x1dc4: 0x0080, 0x1dc5: 0x0080, 0x1dc6: 0x0080, 0x1dc7: 0x0080, 0x1dc8: 0x0080, 0x1dc9: 0x0080, 0x1dca: 0x0080, 0x1dcb: 0x0080, 0x1dcc: 0x0080, 0x1dcd: 0x0080, 0x1dce: 0x0080, 0x1dcf: 0x0080, 0x1dd0: 0x0080, 0x1dd1: 0x0080, - 0x1dd2: 0x0080, 0x1dd3: 0x0080, 0x1dd4: 0x0080, 0x1dd5: 0x0080, 0x1dd6: 0x0080, 0x1dd7: 0x0080, + 0x1dd2: 0x0080, 0x1dd3: 0x0080, 0x1dd4: 0x0080, 0x1dd5: 0x0080, 0x1dd8: 0x0080, 0x1dd9: 0x0080, 0x1dda: 0x0080, 0x1ddb: 0x0080, 0x1ddc: 0x0080, 0x1ddd: 0x0080, 0x1dde: 0x0080, 0x1ddf: 0x0080, 0x1de0: 0x0080, 0x1de1: 0x0080, 0x1de2: 0x0080, 0x1de3: 0x0080, 0x1de4: 0x0080, 0x1de5: 0x0080, 0x1de6: 0x0080, 0x1de7: 0x0080, 0x1de8: 0x0080, 0x1de9: 0x0080, 0x1dea: 0x0080, 0x1deb: 0x0080, 0x1dec: 0x0080, 0x1ded: 0x0080, 0x1dee: 0x0080, 0x1def: 0x0080, - 0x1df0: 0x0080, 0x1df1: 0x0080, 0x1df2: 0x0080, 0x1df3: 0x0080, - 0x1df6: 0x0080, 0x1df7: 0x0080, 0x1df8: 0x0080, 0x1df9: 0x0080, 0x1dfa: 0x0080, 0x1dfb: 0x0080, - 0x1dfc: 0x0080, 0x1dfd: 0x0080, 0x1dfe: 0x0080, 0x1dff: 0x0080, + 0x1df0: 0x0080, 0x1df1: 0x0080, 0x1df2: 0x0080, 0x1df3: 0x0080, 0x1df4: 0x0080, 0x1df5: 0x0080, + 0x1df6: 0x0080, 0x1df7: 0x0080, 0x1df8: 0x0080, 0x1df9: 0x0080, + 0x1dfd: 0x0080, 0x1dfe: 0x0080, 0x1dff: 0x0080, // Block 0x78, offset 0x1e00 0x1e00: 0x0080, 0x1e01: 0x0080, 0x1e02: 0x0080, 0x1e03: 0x0080, 0x1e04: 0x0080, 0x1e05: 0x0080, - 0x1e06: 0x0080, 0x1e07: 0x0080, 0x1e08: 0x0080, 0x1e09: 0x0080, 0x1e0a: 0x0080, 0x1e0b: 0x0080, + 0x1e06: 0x0080, 0x1e07: 0x0080, 0x1e08: 0x0080, 0x1e0a: 0x0080, 0x1e0b: 0x0080, 0x1e0c: 0x0080, 0x1e0d: 0x0080, 0x1e0e: 0x0080, 0x1e0f: 0x0080, 0x1e10: 0x0080, 0x1e11: 0x0080, - 0x1e12: 0x0080, 0x1e13: 0x0080, 0x1e14: 0x0080, 0x1e15: 0x0080, - 0x1e18: 0x0080, 0x1e19: 0x0080, 0x1e1a: 0x0080, 0x1e1b: 0x0080, 0x1e1c: 0x0080, 0x1e1d: 0x0080, - 0x1e1e: 0x0080, 0x1e1f: 0x0080, 0x1e20: 0x0080, 0x1e21: 0x0080, 0x1e22: 0x0080, 0x1e23: 0x0080, - 0x1e24: 0x0080, 0x1e25: 0x0080, 0x1e26: 0x0080, 0x1e27: 0x0080, 0x1e28: 0x0080, 0x1e29: 0x0080, - 0x1e2a: 0x0080, 0x1e2b: 0x0080, 0x1e2c: 0x0080, 0x1e2d: 0x0080, 0x1e2e: 0x0080, 0x1e2f: 0x0080, - 0x1e30: 0x0080, 0x1e31: 0x0080, 0x1e32: 0x0080, 0x1e33: 0x0080, 0x1e34: 0x0080, 0x1e35: 0x0080, - 0x1e36: 0x0080, 0x1e37: 0x0080, 0x1e38: 0x0080, 0x1e39: 0x0080, - 0x1e3d: 0x0080, 0x1e3e: 0x0080, 0x1e3f: 0x0080, + 0x1e12: 0x0080, + 0x1e2c: 0x0080, 0x1e2d: 0x0080, 0x1e2e: 0x0080, 0x1e2f: 0x0080, // Block 0x79, offset 0x1e40 - 0x1e40: 0x0080, 0x1e41: 0x0080, 0x1e42: 0x0080, 0x1e43: 0x0080, 0x1e44: 0x0080, 0x1e45: 0x0080, - 0x1e46: 0x0080, 0x1e47: 0x0080, 0x1e48: 0x0080, 0x1e4a: 0x0080, 0x1e4b: 0x0080, - 0x1e4c: 0x0080, 0x1e4d: 0x0080, 0x1e4e: 0x0080, 0x1e4f: 0x0080, 0x1e50: 0x0080, 0x1e51: 0x0080, - 0x1e6c: 0x0080, 0x1e6d: 0x0080, 0x1e6e: 0x0080, 0x1e6f: 0x0080, + 0x1e40: 0x00c0, 0x1e41: 0x00c0, 0x1e42: 0x00c0, 0x1e43: 0x00c0, 0x1e44: 0x00c0, 0x1e45: 0x00c0, + 0x1e46: 0x00c0, 0x1e47: 0x00c0, 0x1e48: 0x00c0, 0x1e49: 0x00c0, 0x1e4a: 0x00c0, 0x1e4b: 0x00c0, + 0x1e4c: 0x00c0, 0x1e4d: 0x00c0, 0x1e4e: 0x00c0, 0x1e4f: 0x00c0, 0x1e50: 0x00c0, 0x1e51: 0x00c0, + 0x1e52: 0x00c0, 0x1e53: 0x00c0, 0x1e54: 0x00c0, 0x1e55: 0x00c0, 0x1e56: 0x00c0, 0x1e57: 0x00c0, + 0x1e58: 0x00c0, 0x1e59: 0x00c0, 0x1e5a: 0x00c0, 0x1e5b: 0x00c0, 0x1e5c: 0x00c0, 0x1e5d: 0x00c0, + 0x1e5e: 0x00c0, 0x1e5f: 0x00c0, 0x1e60: 0x00c0, 0x1e61: 0x00c0, 0x1e62: 0x00c0, 0x1e63: 0x00c0, + 0x1e64: 0x00c0, 0x1e65: 0x00c0, 0x1e66: 0x00c0, 0x1e67: 0x00c0, 0x1e68: 0x00c0, 0x1e69: 0x00c0, + 0x1e6a: 0x00c0, 0x1e6b: 0x00c0, 0x1e6c: 0x00c0, 0x1e6d: 0x00c0, 0x1e6e: 0x00c0, + 0x1e70: 0x00c0, 0x1e71: 0x00c0, 0x1e72: 0x00c0, 0x1e73: 0x00c0, 0x1e74: 0x00c0, 0x1e75: 0x00c0, + 0x1e76: 0x00c0, 0x1e77: 0x00c0, 0x1e78: 0x00c0, 0x1e79: 0x00c0, 0x1e7a: 0x00c0, 0x1e7b: 0x00c0, + 0x1e7c: 0x00c0, 0x1e7d: 0x00c0, 0x1e7e: 0x00c0, 0x1e7f: 0x00c0, // Block 0x7a, offset 0x1e80 0x1e80: 0x00c0, 0x1e81: 0x00c0, 0x1e82: 0x00c0, 0x1e83: 0x00c0, 0x1e84: 0x00c0, 0x1e85: 0x00c0, 0x1e86: 0x00c0, 0x1e87: 0x00c0, 0x1e88: 0x00c0, 0x1e89: 0x00c0, 0x1e8a: 0x00c0, 0x1e8b: 0x00c0, 0x1e8c: 0x00c0, 0x1e8d: 0x00c0, 0x1e8e: 0x00c0, 0x1e8f: 0x00c0, 0x1e90: 0x00c0, 0x1e91: 0x00c0, 0x1e92: 0x00c0, 0x1e93: 0x00c0, 0x1e94: 0x00c0, 0x1e95: 0x00c0, 0x1e96: 0x00c0, 0x1e97: 0x00c0, 0x1e98: 0x00c0, 0x1e99: 0x00c0, 0x1e9a: 0x00c0, 0x1e9b: 0x00c0, 0x1e9c: 0x00c0, 0x1e9d: 0x00c0, - 0x1e9e: 0x00c0, 0x1e9f: 0x00c0, 0x1ea0: 0x00c0, 0x1ea1: 0x00c0, 0x1ea2: 0x00c0, 0x1ea3: 0x00c0, + 0x1e9e: 0x00c0, 0x1ea0: 0x00c0, 0x1ea1: 0x00c0, 0x1ea2: 0x00c0, 0x1ea3: 0x00c0, 0x1ea4: 0x00c0, 0x1ea5: 0x00c0, 0x1ea6: 0x00c0, 0x1ea7: 0x00c0, 0x1ea8: 0x00c0, 0x1ea9: 0x00c0, - 0x1eaa: 0x00c0, 0x1eab: 0x00c0, 0x1eac: 0x00c0, 0x1ead: 0x00c0, 0x1eae: 0x00c0, + 0x1eaa: 0x00c0, 0x1eab: 0x00c0, 0x1eac: 0x00c0, 0x1ead: 0x00c0, 0x1eae: 0x00c0, 0x1eaf: 0x00c0, 0x1eb0: 0x00c0, 0x1eb1: 0x00c0, 0x1eb2: 0x00c0, 0x1eb3: 0x00c0, 0x1eb4: 0x00c0, 0x1eb5: 0x00c0, 0x1eb6: 0x00c0, 0x1eb7: 0x00c0, 0x1eb8: 0x00c0, 0x1eb9: 0x00c0, 0x1eba: 0x00c0, 0x1ebb: 0x00c0, - 0x1ebc: 0x00c0, 0x1ebd: 0x00c0, 0x1ebe: 0x00c0, 0x1ebf: 0x00c0, + 0x1ebc: 0x0080, 0x1ebd: 0x0080, 0x1ebe: 0x00c0, 0x1ebf: 0x00c0, // Block 0x7b, offset 0x1ec0 0x1ec0: 0x00c0, 0x1ec1: 0x00c0, 0x1ec2: 0x00c0, 0x1ec3: 0x00c0, 0x1ec4: 0x00c0, 0x1ec5: 0x00c0, 0x1ec6: 0x00c0, 0x1ec7: 0x00c0, 0x1ec8: 0x00c0, 0x1ec9: 0x00c0, 0x1eca: 0x00c0, 0x1ecb: 0x00c0, 0x1ecc: 0x00c0, 0x1ecd: 0x00c0, 0x1ece: 0x00c0, 0x1ecf: 0x00c0, 0x1ed0: 0x00c0, 0x1ed1: 0x00c0, 0x1ed2: 0x00c0, 0x1ed3: 0x00c0, 0x1ed4: 0x00c0, 0x1ed5: 0x00c0, 0x1ed6: 0x00c0, 0x1ed7: 0x00c0, 0x1ed8: 0x00c0, 0x1ed9: 0x00c0, 0x1eda: 0x00c0, 0x1edb: 0x00c0, 0x1edc: 0x00c0, 0x1edd: 0x00c0, - 0x1ede: 0x00c0, 0x1ee0: 0x00c0, 0x1ee1: 0x00c0, 0x1ee2: 0x00c0, 0x1ee3: 0x00c0, - 0x1ee4: 0x00c0, 0x1ee5: 0x00c0, 0x1ee6: 0x00c0, 0x1ee7: 0x00c0, 0x1ee8: 0x00c0, 0x1ee9: 0x00c0, - 0x1eea: 0x00c0, 0x1eeb: 0x00c0, 0x1eec: 0x00c0, 0x1eed: 0x00c0, 0x1eee: 0x00c0, 0x1eef: 0x00c0, - 0x1ef0: 0x00c0, 0x1ef1: 0x00c0, 0x1ef2: 0x00c0, 0x1ef3: 0x00c0, 0x1ef4: 0x00c0, 0x1ef5: 0x00c0, - 0x1ef6: 0x00c0, 0x1ef7: 0x00c0, 0x1ef8: 0x00c0, 0x1ef9: 0x00c0, 0x1efa: 0x00c0, 0x1efb: 0x00c0, - 0x1efc: 0x0080, 0x1efd: 0x0080, 0x1efe: 0x00c0, 0x1eff: 0x00c0, + 0x1ede: 0x00c0, 0x1edf: 0x00c0, 0x1ee0: 0x00c0, 0x1ee1: 0x00c0, 0x1ee2: 0x00c0, 0x1ee3: 0x00c0, + 0x1ee4: 0x00c0, 0x1ee5: 0x0080, 0x1ee6: 0x0080, 0x1ee7: 0x0080, 0x1ee8: 0x0080, 0x1ee9: 0x0080, + 0x1eea: 0x0080, 0x1eeb: 0x00c0, 0x1eec: 0x00c0, 0x1eed: 0x00c0, 0x1eee: 0x00c0, 0x1eef: 0x00c3, + 0x1ef0: 0x00c3, 0x1ef1: 0x00c3, 0x1ef2: 0x00c0, 0x1ef3: 0x00c0, + 0x1ef9: 0x0080, 0x1efa: 0x0080, 0x1efb: 0x0080, + 0x1efc: 0x0080, 0x1efd: 0x0080, 0x1efe: 0x0080, 0x1eff: 0x0080, // Block 0x7c, offset 0x1f00 0x1f00: 0x00c0, 0x1f01: 0x00c0, 0x1f02: 0x00c0, 0x1f03: 0x00c0, 0x1f04: 0x00c0, 0x1f05: 0x00c0, 0x1f06: 0x00c0, 0x1f07: 0x00c0, 0x1f08: 0x00c0, 0x1f09: 0x00c0, 0x1f0a: 0x00c0, 0x1f0b: 0x00c0, @@ -1582,11 +1587,11 @@ var derivedPropertiesValues = [20736]uint8{ 0x1f12: 0x00c0, 0x1f13: 0x00c0, 0x1f14: 0x00c0, 0x1f15: 0x00c0, 0x1f16: 0x00c0, 0x1f17: 0x00c0, 0x1f18: 0x00c0, 0x1f19: 0x00c0, 0x1f1a: 0x00c0, 0x1f1b: 0x00c0, 0x1f1c: 0x00c0, 0x1f1d: 0x00c0, 0x1f1e: 0x00c0, 0x1f1f: 0x00c0, 0x1f20: 0x00c0, 0x1f21: 0x00c0, 0x1f22: 0x00c0, 0x1f23: 0x00c0, - 0x1f24: 0x00c0, 0x1f25: 0x0080, 0x1f26: 0x0080, 0x1f27: 0x0080, 0x1f28: 0x0080, 0x1f29: 0x0080, - 0x1f2a: 0x0080, 0x1f2b: 0x00c0, 0x1f2c: 0x00c0, 0x1f2d: 0x00c0, 0x1f2e: 0x00c0, 0x1f2f: 0x00c3, - 0x1f30: 0x00c3, 0x1f31: 0x00c3, 0x1f32: 0x00c0, 0x1f33: 0x00c0, - 0x1f39: 0x0080, 0x1f3a: 0x0080, 0x1f3b: 0x0080, - 0x1f3c: 0x0080, 0x1f3d: 0x0080, 0x1f3e: 0x0080, 0x1f3f: 0x0080, + 0x1f24: 0x00c0, 0x1f25: 0x00c0, 0x1f27: 0x00c0, + 0x1f2d: 0x00c0, + 0x1f30: 0x00c0, 0x1f31: 0x00c0, 0x1f32: 0x00c0, 0x1f33: 0x00c0, 0x1f34: 0x00c0, 0x1f35: 0x00c0, + 0x1f36: 0x00c0, 0x1f37: 0x00c0, 0x1f38: 0x00c0, 0x1f39: 0x00c0, 0x1f3a: 0x00c0, 0x1f3b: 0x00c0, + 0x1f3c: 0x00c0, 0x1f3d: 0x00c0, 0x1f3e: 0x00c0, 0x1f3f: 0x00c0, // Block 0x7d, offset 0x1f40 0x1f40: 0x00c0, 0x1f41: 0x00c0, 0x1f42: 0x00c0, 0x1f43: 0x00c0, 0x1f44: 0x00c0, 0x1f45: 0x00c0, 0x1f46: 0x00c0, 0x1f47: 0x00c0, 0x1f48: 0x00c0, 0x1f49: 0x00c0, 0x1f4a: 0x00c0, 0x1f4b: 0x00c0, @@ -1594,71 +1599,70 @@ var derivedPropertiesValues = [20736]uint8{ 0x1f52: 0x00c0, 0x1f53: 0x00c0, 0x1f54: 0x00c0, 0x1f55: 0x00c0, 0x1f56: 0x00c0, 0x1f57: 0x00c0, 0x1f58: 0x00c0, 0x1f59: 0x00c0, 0x1f5a: 0x00c0, 0x1f5b: 0x00c0, 0x1f5c: 0x00c0, 0x1f5d: 0x00c0, 0x1f5e: 0x00c0, 0x1f5f: 0x00c0, 0x1f60: 0x00c0, 0x1f61: 0x00c0, 0x1f62: 0x00c0, 0x1f63: 0x00c0, - 0x1f64: 0x00c0, 0x1f65: 0x00c0, 0x1f67: 0x00c0, - 0x1f6d: 0x00c0, - 0x1f70: 0x00c0, 0x1f71: 0x00c0, 0x1f72: 0x00c0, 0x1f73: 0x00c0, 0x1f74: 0x00c0, 0x1f75: 0x00c0, - 0x1f76: 0x00c0, 0x1f77: 0x00c0, 0x1f78: 0x00c0, 0x1f79: 0x00c0, 0x1f7a: 0x00c0, 0x1f7b: 0x00c0, - 0x1f7c: 0x00c0, 0x1f7d: 0x00c0, 0x1f7e: 0x00c0, 0x1f7f: 0x00c0, + 0x1f64: 0x00c0, 0x1f65: 0x00c0, 0x1f66: 0x00c0, 0x1f67: 0x00c0, + 0x1f6f: 0x0080, + 0x1f70: 0x0080, + 0x1f7f: 0x00c6, // Block 0x7e, offset 0x1f80 0x1f80: 0x00c0, 0x1f81: 0x00c0, 0x1f82: 0x00c0, 0x1f83: 0x00c0, 0x1f84: 0x00c0, 0x1f85: 0x00c0, 0x1f86: 0x00c0, 0x1f87: 0x00c0, 0x1f88: 0x00c0, 0x1f89: 0x00c0, 0x1f8a: 0x00c0, 0x1f8b: 0x00c0, 0x1f8c: 0x00c0, 0x1f8d: 0x00c0, 0x1f8e: 0x00c0, 0x1f8f: 0x00c0, 0x1f90: 0x00c0, 0x1f91: 0x00c0, - 0x1f92: 0x00c0, 0x1f93: 0x00c0, 0x1f94: 0x00c0, 0x1f95: 0x00c0, 0x1f96: 0x00c0, 0x1f97: 0x00c0, - 0x1f98: 0x00c0, 0x1f99: 0x00c0, 0x1f9a: 0x00c0, 0x1f9b: 0x00c0, 0x1f9c: 0x00c0, 0x1f9d: 0x00c0, - 0x1f9e: 0x00c0, 0x1f9f: 0x00c0, 0x1fa0: 0x00c0, 0x1fa1: 0x00c0, 0x1fa2: 0x00c0, 0x1fa3: 0x00c0, - 0x1fa4: 0x00c0, 0x1fa5: 0x00c0, 0x1fa6: 0x00c0, 0x1fa7: 0x00c0, - 0x1faf: 0x0080, - 0x1fb0: 0x0080, - 0x1fbf: 0x00c6, + 0x1f92: 0x00c0, 0x1f93: 0x00c0, 0x1f94: 0x00c0, 0x1f95: 0x00c0, 0x1f96: 0x00c0, + 0x1fa0: 0x00c0, 0x1fa1: 0x00c0, 0x1fa2: 0x00c0, 0x1fa3: 0x00c0, + 0x1fa4: 0x00c0, 0x1fa5: 0x00c0, 0x1fa6: 0x00c0, 0x1fa8: 0x00c0, 0x1fa9: 0x00c0, + 0x1faa: 0x00c0, 0x1fab: 0x00c0, 0x1fac: 0x00c0, 0x1fad: 0x00c0, 0x1fae: 0x00c0, + 0x1fb0: 0x00c0, 0x1fb1: 0x00c0, 0x1fb2: 0x00c0, 0x1fb3: 0x00c0, 0x1fb4: 0x00c0, 0x1fb5: 0x00c0, + 0x1fb6: 0x00c0, 0x1fb8: 0x00c0, 0x1fb9: 0x00c0, 0x1fba: 0x00c0, 0x1fbb: 0x00c0, + 0x1fbc: 0x00c0, 0x1fbd: 0x00c0, 0x1fbe: 0x00c0, // Block 0x7f, offset 0x1fc0 0x1fc0: 0x00c0, 0x1fc1: 0x00c0, 0x1fc2: 0x00c0, 0x1fc3: 0x00c0, 0x1fc4: 0x00c0, 0x1fc5: 0x00c0, - 0x1fc6: 0x00c0, 0x1fc7: 0x00c0, 0x1fc8: 0x00c0, 0x1fc9: 0x00c0, 0x1fca: 0x00c0, 0x1fcb: 0x00c0, - 0x1fcc: 0x00c0, 0x1fcd: 0x00c0, 0x1fce: 0x00c0, 0x1fcf: 0x00c0, 0x1fd0: 0x00c0, 0x1fd1: 0x00c0, + 0x1fc6: 0x00c0, 0x1fc8: 0x00c0, 0x1fc9: 0x00c0, 0x1fca: 0x00c0, 0x1fcb: 0x00c0, + 0x1fcc: 0x00c0, 0x1fcd: 0x00c0, 0x1fce: 0x00c0, 0x1fd0: 0x00c0, 0x1fd1: 0x00c0, 0x1fd2: 0x00c0, 0x1fd3: 0x00c0, 0x1fd4: 0x00c0, 0x1fd5: 0x00c0, 0x1fd6: 0x00c0, - 0x1fe0: 0x00c0, 0x1fe1: 0x00c0, 0x1fe2: 0x00c0, 0x1fe3: 0x00c0, - 0x1fe4: 0x00c0, 0x1fe5: 0x00c0, 0x1fe6: 0x00c0, 0x1fe8: 0x00c0, 0x1fe9: 0x00c0, - 0x1fea: 0x00c0, 0x1feb: 0x00c0, 0x1fec: 0x00c0, 0x1fed: 0x00c0, 0x1fee: 0x00c0, - 0x1ff0: 0x00c0, 0x1ff1: 0x00c0, 0x1ff2: 0x00c0, 0x1ff3: 0x00c0, 0x1ff4: 0x00c0, 0x1ff5: 0x00c0, - 0x1ff6: 0x00c0, 0x1ff8: 0x00c0, 0x1ff9: 0x00c0, 0x1ffa: 0x00c0, 0x1ffb: 0x00c0, - 0x1ffc: 0x00c0, 0x1ffd: 0x00c0, 0x1ffe: 0x00c0, + 0x1fd8: 0x00c0, 0x1fd9: 0x00c0, 0x1fda: 0x00c0, 0x1fdb: 0x00c0, 0x1fdc: 0x00c0, 0x1fdd: 0x00c0, + 0x1fde: 0x00c0, 0x1fe0: 0x00c3, 0x1fe1: 0x00c3, 0x1fe2: 0x00c3, 0x1fe3: 0x00c3, + 0x1fe4: 0x00c3, 0x1fe5: 0x00c3, 0x1fe6: 0x00c3, 0x1fe7: 0x00c3, 0x1fe8: 0x00c3, 0x1fe9: 0x00c3, + 0x1fea: 0x00c3, 0x1feb: 0x00c3, 0x1fec: 0x00c3, 0x1fed: 0x00c3, 0x1fee: 0x00c3, 0x1fef: 0x00c3, + 0x1ff0: 0x00c3, 0x1ff1: 0x00c3, 0x1ff2: 0x00c3, 0x1ff3: 0x00c3, 0x1ff4: 0x00c3, 0x1ff5: 0x00c3, + 0x1ff6: 0x00c3, 0x1ff7: 0x00c3, 0x1ff8: 0x00c3, 0x1ff9: 0x00c3, 0x1ffa: 0x00c3, 0x1ffb: 0x00c3, + 0x1ffc: 0x00c3, 0x1ffd: 0x00c3, 0x1ffe: 0x00c3, 0x1fff: 0x00c3, // Block 0x80, offset 0x2000 - 0x2000: 0x00c0, 0x2001: 0x00c0, 0x2002: 0x00c0, 0x2003: 0x00c0, 0x2004: 0x00c0, 0x2005: 0x00c0, - 0x2006: 0x00c0, 0x2008: 0x00c0, 0x2009: 0x00c0, 0x200a: 0x00c0, 0x200b: 0x00c0, - 0x200c: 0x00c0, 0x200d: 0x00c0, 0x200e: 0x00c0, 0x2010: 0x00c0, 0x2011: 0x00c0, - 0x2012: 0x00c0, 0x2013: 0x00c0, 0x2014: 0x00c0, 0x2015: 0x00c0, 0x2016: 0x00c0, - 0x2018: 0x00c0, 0x2019: 0x00c0, 0x201a: 0x00c0, 0x201b: 0x00c0, 0x201c: 0x00c0, 0x201d: 0x00c0, - 0x201e: 0x00c0, 0x2020: 0x00c3, 0x2021: 0x00c3, 0x2022: 0x00c3, 0x2023: 0x00c3, - 0x2024: 0x00c3, 0x2025: 0x00c3, 0x2026: 0x00c3, 0x2027: 0x00c3, 0x2028: 0x00c3, 0x2029: 0x00c3, - 0x202a: 0x00c3, 0x202b: 0x00c3, 0x202c: 0x00c3, 0x202d: 0x00c3, 0x202e: 0x00c3, 0x202f: 0x00c3, - 0x2030: 0x00c3, 0x2031: 0x00c3, 0x2032: 0x00c3, 0x2033: 0x00c3, 0x2034: 0x00c3, 0x2035: 0x00c3, - 0x2036: 0x00c3, 0x2037: 0x00c3, 0x2038: 0x00c3, 0x2039: 0x00c3, 0x203a: 0x00c3, 0x203b: 0x00c3, - 0x203c: 0x00c3, 0x203d: 0x00c3, 0x203e: 0x00c3, 0x203f: 0x00c3, + 0x2000: 0x0080, 0x2001: 0x0080, 0x2002: 0x0080, 0x2003: 0x0080, 0x2004: 0x0080, 0x2005: 0x0080, + 0x2006: 0x0080, 0x2007: 0x0080, 0x2008: 0x0080, 0x2009: 0x0080, 0x200a: 0x0080, 0x200b: 0x0080, + 0x200c: 0x0080, 0x200d: 0x0080, 0x200e: 0x0080, 0x200f: 0x0080, 0x2010: 0x0080, 0x2011: 0x0080, + 0x2012: 0x0080, 0x2013: 0x0080, 0x2014: 0x0080, 0x2015: 0x0080, 0x2016: 0x0080, 0x2017: 0x0080, + 0x2018: 0x0080, 0x2019: 0x0080, 0x201a: 0x0080, 0x201b: 0x0080, 0x201c: 0x0080, 0x201d: 0x0080, + 0x201e: 0x0080, 0x201f: 0x0080, 0x2020: 0x0080, 0x2021: 0x0080, 0x2022: 0x0080, 0x2023: 0x0080, + 0x2024: 0x0080, 0x2025: 0x0080, 0x2026: 0x0080, 0x2027: 0x0080, 0x2028: 0x0080, 0x2029: 0x0080, + 0x202a: 0x0080, 0x202b: 0x0080, 0x202c: 0x0080, 0x202d: 0x0080, 0x202e: 0x0080, 0x202f: 0x00c0, + 0x2030: 0x0080, 0x2031: 0x0080, 0x2032: 0x0080, 0x2033: 0x0080, 0x2034: 0x0080, 0x2035: 0x0080, + 0x2036: 0x0080, 0x2037: 0x0080, 0x2038: 0x0080, 0x2039: 0x0080, 0x203a: 0x0080, 0x203b: 0x0080, + 0x203c: 0x0080, 0x203d: 0x0080, 0x203e: 0x0080, 0x203f: 0x0080, // Block 0x81, offset 0x2040 0x2040: 0x0080, 0x2041: 0x0080, 0x2042: 0x0080, 0x2043: 0x0080, 0x2044: 0x0080, 0x2045: 0x0080, - 0x2046: 0x0080, 0x2047: 0x0080, 0x2048: 0x0080, 0x2049: 0x0080, 0x204a: 0x0080, 0x204b: 0x0080, - 0x204c: 0x0080, 0x204d: 0x0080, 0x204e: 0x0080, 0x204f: 0x0080, 0x2050: 0x0080, 0x2051: 0x0080, - 0x2052: 0x0080, 0x2053: 0x0080, 0x2054: 0x0080, 0x2055: 0x0080, 0x2056: 0x0080, 0x2057: 0x0080, - 0x2058: 0x0080, 0x2059: 0x0080, 0x205a: 0x0080, 0x205b: 0x0080, 0x205c: 0x0080, 0x205d: 0x0080, - 0x205e: 0x0080, 0x205f: 0x0080, 0x2060: 0x0080, 0x2061: 0x0080, 0x2062: 0x0080, 0x2063: 0x0080, - 0x2064: 0x0080, 0x2065: 0x0080, 0x2066: 0x0080, 0x2067: 0x0080, 0x2068: 0x0080, 0x2069: 0x0080, - 0x206a: 0x0080, 0x206b: 0x0080, 0x206c: 0x0080, 0x206d: 0x0080, 0x206e: 0x0080, 0x206f: 0x00c0, - 0x2070: 0x0080, 0x2071: 0x0080, 0x2072: 0x0080, 0x2073: 0x0080, 0x2074: 0x0080, 0x2075: 0x0080, - 0x2076: 0x0080, 0x2077: 0x0080, 0x2078: 0x0080, 0x2079: 0x0080, 0x207a: 0x0080, 0x207b: 0x0080, - 0x207c: 0x0080, 0x207d: 0x0080, 0x207e: 0x0080, 0x207f: 0x0080, + 0x2046: 0x0080, 0x2047: 0x0080, 0x2048: 0x0080, 0x2049: 0x0080, // Block 0x82, offset 0x2080 - 0x2080: 0x0080, 0x2081: 0x0080, 0x2082: 0x0080, 0x2083: 0x0080, 0x2084: 0x0080, + 0x2080: 0x008c, 0x2081: 0x008c, 0x2082: 0x008c, 0x2083: 0x008c, 0x2084: 0x008c, 0x2085: 0x008c, + 0x2086: 0x008c, 0x2087: 0x008c, 0x2088: 0x008c, 0x2089: 0x008c, 0x208a: 0x008c, 0x208b: 0x008c, + 0x208c: 0x008c, 0x208d: 0x008c, 0x208e: 0x008c, 0x208f: 0x008c, 0x2090: 0x008c, 0x2091: 0x008c, + 0x2092: 0x008c, 0x2093: 0x008c, 0x2094: 0x008c, 0x2095: 0x008c, 0x2096: 0x008c, 0x2097: 0x008c, + 0x2098: 0x008c, 0x2099: 0x008c, 0x209b: 0x008c, 0x209c: 0x008c, 0x209d: 0x008c, + 0x209e: 0x008c, 0x209f: 0x008c, 0x20a0: 0x008c, 0x20a1: 0x008c, 0x20a2: 0x008c, 0x20a3: 0x008c, + 0x20a4: 0x008c, 0x20a5: 0x008c, 0x20a6: 0x008c, 0x20a7: 0x008c, 0x20a8: 0x008c, 0x20a9: 0x008c, + 0x20aa: 0x008c, 0x20ab: 0x008c, 0x20ac: 0x008c, 0x20ad: 0x008c, 0x20ae: 0x008c, 0x20af: 0x008c, + 0x20b0: 0x008c, 0x20b1: 0x008c, 0x20b2: 0x008c, 0x20b3: 0x008c, 0x20b4: 0x008c, 0x20b5: 0x008c, + 0x20b6: 0x008c, 0x20b7: 0x008c, 0x20b8: 0x008c, 0x20b9: 0x008c, 0x20ba: 0x008c, 0x20bb: 0x008c, + 0x20bc: 0x008c, 0x20bd: 0x008c, 0x20be: 0x008c, 0x20bf: 0x008c, // Block 0x83, offset 0x20c0 0x20c0: 0x008c, 0x20c1: 0x008c, 0x20c2: 0x008c, 0x20c3: 0x008c, 0x20c4: 0x008c, 0x20c5: 0x008c, 0x20c6: 0x008c, 0x20c7: 0x008c, 0x20c8: 0x008c, 0x20c9: 0x008c, 0x20ca: 0x008c, 0x20cb: 0x008c, 0x20cc: 0x008c, 0x20cd: 0x008c, 0x20ce: 0x008c, 0x20cf: 0x008c, 0x20d0: 0x008c, 0x20d1: 0x008c, 0x20d2: 0x008c, 0x20d3: 0x008c, 0x20d4: 0x008c, 0x20d5: 0x008c, 0x20d6: 0x008c, 0x20d7: 0x008c, - 0x20d8: 0x008c, 0x20d9: 0x008c, 0x20db: 0x008c, 0x20dc: 0x008c, 0x20dd: 0x008c, + 0x20d8: 0x008c, 0x20d9: 0x008c, 0x20da: 0x008c, 0x20db: 0x008c, 0x20dc: 0x008c, 0x20dd: 0x008c, 0x20de: 0x008c, 0x20df: 0x008c, 0x20e0: 0x008c, 0x20e1: 0x008c, 0x20e2: 0x008c, 0x20e3: 0x008c, 0x20e4: 0x008c, 0x20e5: 0x008c, 0x20e6: 0x008c, 0x20e7: 0x008c, 0x20e8: 0x008c, 0x20e9: 0x008c, 0x20ea: 0x008c, 0x20eb: 0x008c, 0x20ec: 0x008c, 0x20ed: 0x008c, 0x20ee: 0x008c, 0x20ef: 0x008c, - 0x20f0: 0x008c, 0x20f1: 0x008c, 0x20f2: 0x008c, 0x20f3: 0x008c, 0x20f4: 0x008c, 0x20f5: 0x008c, - 0x20f6: 0x008c, 0x20f7: 0x008c, 0x20f8: 0x008c, 0x20f9: 0x008c, 0x20fa: 0x008c, 0x20fb: 0x008c, - 0x20fc: 0x008c, 0x20fd: 0x008c, 0x20fe: 0x008c, 0x20ff: 0x008c, + 0x20f0: 0x008c, 0x20f1: 0x008c, 0x20f2: 0x008c, 0x20f3: 0x008c, // Block 0x84, offset 0x2100 0x2100: 0x008c, 0x2101: 0x008c, 0x2102: 0x008c, 0x2103: 0x008c, 0x2104: 0x008c, 0x2105: 0x008c, 0x2106: 0x008c, 0x2107: 0x008c, 0x2108: 0x008c, 0x2109: 0x008c, 0x210a: 0x008c, 0x210b: 0x008c, @@ -1668,45 +1672,47 @@ var derivedPropertiesValues = [20736]uint8{ 0x211e: 0x008c, 0x211f: 0x008c, 0x2120: 0x008c, 0x2121: 0x008c, 0x2122: 0x008c, 0x2123: 0x008c, 0x2124: 0x008c, 0x2125: 0x008c, 0x2126: 0x008c, 0x2127: 0x008c, 0x2128: 0x008c, 0x2129: 0x008c, 0x212a: 0x008c, 0x212b: 0x008c, 0x212c: 0x008c, 0x212d: 0x008c, 0x212e: 0x008c, 0x212f: 0x008c, - 0x2130: 0x008c, 0x2131: 0x008c, 0x2132: 0x008c, 0x2133: 0x008c, + 0x2130: 0x008c, 0x2131: 0x008c, 0x2132: 0x008c, 0x2133: 0x008c, 0x2134: 0x008c, 0x2135: 0x008c, + 0x2136: 0x008c, 0x2137: 0x008c, 0x2138: 0x008c, 0x2139: 0x008c, 0x213a: 0x008c, 0x213b: 0x008c, + 0x213c: 0x008c, 0x213d: 0x008c, 0x213e: 0x008c, 0x213f: 0x008c, // Block 0x85, offset 0x2140 0x2140: 0x008c, 0x2141: 0x008c, 0x2142: 0x008c, 0x2143: 0x008c, 0x2144: 0x008c, 0x2145: 0x008c, 0x2146: 0x008c, 0x2147: 0x008c, 0x2148: 0x008c, 0x2149: 0x008c, 0x214a: 0x008c, 0x214b: 0x008c, 0x214c: 0x008c, 0x214d: 0x008c, 0x214e: 0x008c, 0x214f: 0x008c, 0x2150: 0x008c, 0x2151: 0x008c, - 0x2152: 0x008c, 0x2153: 0x008c, 0x2154: 0x008c, 0x2155: 0x008c, 0x2156: 0x008c, 0x2157: 0x008c, - 0x2158: 0x008c, 0x2159: 0x008c, 0x215a: 0x008c, 0x215b: 0x008c, 0x215c: 0x008c, 0x215d: 0x008c, - 0x215e: 0x008c, 0x215f: 0x008c, 0x2160: 0x008c, 0x2161: 0x008c, 0x2162: 0x008c, 0x2163: 0x008c, - 0x2164: 0x008c, 0x2165: 0x008c, 0x2166: 0x008c, 0x2167: 0x008c, 0x2168: 0x008c, 0x2169: 0x008c, - 0x216a: 0x008c, 0x216b: 0x008c, 0x216c: 0x008c, 0x216d: 0x008c, 0x216e: 0x008c, 0x216f: 0x008c, - 0x2170: 0x008c, 0x2171: 0x008c, 0x2172: 0x008c, 0x2173: 0x008c, 0x2174: 0x008c, 0x2175: 0x008c, - 0x2176: 0x008c, 0x2177: 0x008c, 0x2178: 0x008c, 0x2179: 0x008c, 0x217a: 0x008c, 0x217b: 0x008c, - 0x217c: 0x008c, 0x217d: 0x008c, 0x217e: 0x008c, 0x217f: 0x008c, + 0x2152: 0x008c, 0x2153: 0x008c, 0x2154: 0x008c, 0x2155: 0x008c, + 0x2170: 0x0080, 0x2171: 0x0080, 0x2172: 0x0080, 0x2173: 0x0080, 0x2174: 0x0080, 0x2175: 0x0080, + 0x2176: 0x0080, 0x2177: 0x0080, 0x2178: 0x0080, 0x2179: 0x0080, 0x217a: 0x0080, 0x217b: 0x0080, // Block 0x86, offset 0x2180 - 0x2180: 0x008c, 0x2181: 0x008c, 0x2182: 0x008c, 0x2183: 0x008c, 0x2184: 0x008c, 0x2185: 0x008c, - 0x2186: 0x008c, 0x2187: 0x008c, 0x2188: 0x008c, 0x2189: 0x008c, 0x218a: 0x008c, 0x218b: 0x008c, - 0x218c: 0x008c, 0x218d: 0x008c, 0x218e: 0x008c, 0x218f: 0x008c, 0x2190: 0x008c, 0x2191: 0x008c, - 0x2192: 0x008c, 0x2193: 0x008c, 0x2194: 0x008c, 0x2195: 0x008c, - 0x21b0: 0x0080, 0x21b1: 0x0080, 0x21b2: 0x0080, 0x21b3: 0x0080, 0x21b4: 0x0080, 0x21b5: 0x0080, - 0x21b6: 0x0080, 0x21b7: 0x0080, 0x21b8: 0x0080, 0x21b9: 0x0080, 0x21ba: 0x0080, 0x21bb: 0x0080, + 0x2180: 0x0080, 0x2181: 0x0080, 0x2182: 0x0080, 0x2183: 0x0080, 0x2184: 0x0080, 0x2185: 0x00cc, + 0x2186: 0x00c0, 0x2187: 0x00cc, 0x2188: 0x0080, 0x2189: 0x0080, 0x218a: 0x0080, 0x218b: 0x0080, + 0x218c: 0x0080, 0x218d: 0x0080, 0x218e: 0x0080, 0x218f: 0x0080, 0x2190: 0x0080, 0x2191: 0x0080, + 0x2192: 0x0080, 0x2193: 0x0080, 0x2194: 0x0080, 0x2195: 0x0080, 0x2196: 0x0080, 0x2197: 0x0080, + 0x2198: 0x0080, 0x2199: 0x0080, 0x219a: 0x0080, 0x219b: 0x0080, 0x219c: 0x0080, 0x219d: 0x0080, + 0x219e: 0x0080, 0x219f: 0x0080, 0x21a0: 0x0080, 0x21a1: 0x008c, 0x21a2: 0x008c, 0x21a3: 0x008c, + 0x21a4: 0x008c, 0x21a5: 0x008c, 0x21a6: 0x008c, 0x21a7: 0x008c, 0x21a8: 0x008c, 0x21a9: 0x008c, + 0x21aa: 0x00c3, 0x21ab: 0x00c3, 0x21ac: 0x00c3, 0x21ad: 0x00c3, 0x21ae: 0x0040, 0x21af: 0x0040, + 0x21b0: 0x0080, 0x21b1: 0x0040, 0x21b2: 0x0040, 0x21b3: 0x0040, 0x21b4: 0x0040, 0x21b5: 0x0040, + 0x21b6: 0x0080, 0x21b7: 0x0080, 0x21b8: 0x008c, 0x21b9: 0x008c, 0x21ba: 0x008c, 0x21bb: 0x0040, + 0x21bc: 0x00c0, 0x21bd: 0x0080, 0x21be: 0x0080, 0x21bf: 0x0080, // Block 0x87, offset 0x21c0 - 0x21c0: 0x0080, 0x21c1: 0x0080, 0x21c2: 0x0080, 0x21c3: 0x0080, 0x21c4: 0x0080, 0x21c5: 0x00cc, - 0x21c6: 0x00c0, 0x21c7: 0x00cc, 0x21c8: 0x0080, 0x21c9: 0x0080, 0x21ca: 0x0080, 0x21cb: 0x0080, - 0x21cc: 0x0080, 0x21cd: 0x0080, 0x21ce: 0x0080, 0x21cf: 0x0080, 0x21d0: 0x0080, 0x21d1: 0x0080, - 0x21d2: 0x0080, 0x21d3: 0x0080, 0x21d4: 0x0080, 0x21d5: 0x0080, 0x21d6: 0x0080, 0x21d7: 0x0080, - 0x21d8: 0x0080, 0x21d9: 0x0080, 0x21da: 0x0080, 0x21db: 0x0080, 0x21dc: 0x0080, 0x21dd: 0x0080, - 0x21de: 0x0080, 0x21df: 0x0080, 0x21e0: 0x0080, 0x21e1: 0x008c, 0x21e2: 0x008c, 0x21e3: 0x008c, - 0x21e4: 0x008c, 0x21e5: 0x008c, 0x21e6: 0x008c, 0x21e7: 0x008c, 0x21e8: 0x008c, 0x21e9: 0x008c, - 0x21ea: 0x00c3, 0x21eb: 0x00c3, 0x21ec: 0x00c3, 0x21ed: 0x00c3, 0x21ee: 0x0040, 0x21ef: 0x0040, - 0x21f0: 0x0080, 0x21f1: 0x0040, 0x21f2: 0x0040, 0x21f3: 0x0040, 0x21f4: 0x0040, 0x21f5: 0x0040, - 0x21f6: 0x0080, 0x21f7: 0x0080, 0x21f8: 0x008c, 0x21f9: 0x008c, 0x21fa: 0x008c, 0x21fb: 0x0040, - 0x21fc: 0x00c0, 0x21fd: 0x0080, 0x21fe: 0x0080, 0x21ff: 0x0080, + 0x21c1: 0x00cc, 0x21c2: 0x00cc, 0x21c3: 0x00cc, 0x21c4: 0x00cc, 0x21c5: 0x00cc, + 0x21c6: 0x00cc, 0x21c7: 0x00cc, 0x21c8: 0x00cc, 0x21c9: 0x00cc, 0x21ca: 0x00cc, 0x21cb: 0x00cc, + 0x21cc: 0x00cc, 0x21cd: 0x00cc, 0x21ce: 0x00cc, 0x21cf: 0x00cc, 0x21d0: 0x00cc, 0x21d1: 0x00cc, + 0x21d2: 0x00cc, 0x21d3: 0x00cc, 0x21d4: 0x00cc, 0x21d5: 0x00cc, 0x21d6: 0x00cc, 0x21d7: 0x00cc, + 0x21d8: 0x00cc, 0x21d9: 0x00cc, 0x21da: 0x00cc, 0x21db: 0x00cc, 0x21dc: 0x00cc, 0x21dd: 0x00cc, + 0x21de: 0x00cc, 0x21df: 0x00cc, 0x21e0: 0x00cc, 0x21e1: 0x00cc, 0x21e2: 0x00cc, 0x21e3: 0x00cc, + 0x21e4: 0x00cc, 0x21e5: 0x00cc, 0x21e6: 0x00cc, 0x21e7: 0x00cc, 0x21e8: 0x00cc, 0x21e9: 0x00cc, + 0x21ea: 0x00cc, 0x21eb: 0x00cc, 0x21ec: 0x00cc, 0x21ed: 0x00cc, 0x21ee: 0x00cc, 0x21ef: 0x00cc, + 0x21f0: 0x00cc, 0x21f1: 0x00cc, 0x21f2: 0x00cc, 0x21f3: 0x00cc, 0x21f4: 0x00cc, 0x21f5: 0x00cc, + 0x21f6: 0x00cc, 0x21f7: 0x00cc, 0x21f8: 0x00cc, 0x21f9: 0x00cc, 0x21fa: 0x00cc, 0x21fb: 0x00cc, + 0x21fc: 0x00cc, 0x21fd: 0x00cc, 0x21fe: 0x00cc, 0x21ff: 0x00cc, // Block 0x88, offset 0x2200 - 0x2201: 0x00cc, 0x2202: 0x00cc, 0x2203: 0x00cc, 0x2204: 0x00cc, 0x2205: 0x00cc, + 0x2200: 0x00cc, 0x2201: 0x00cc, 0x2202: 0x00cc, 0x2203: 0x00cc, 0x2204: 0x00cc, 0x2205: 0x00cc, 0x2206: 0x00cc, 0x2207: 0x00cc, 0x2208: 0x00cc, 0x2209: 0x00cc, 0x220a: 0x00cc, 0x220b: 0x00cc, 0x220c: 0x00cc, 0x220d: 0x00cc, 0x220e: 0x00cc, 0x220f: 0x00cc, 0x2210: 0x00cc, 0x2211: 0x00cc, - 0x2212: 0x00cc, 0x2213: 0x00cc, 0x2214: 0x00cc, 0x2215: 0x00cc, 0x2216: 0x00cc, 0x2217: 0x00cc, - 0x2218: 0x00cc, 0x2219: 0x00cc, 0x221a: 0x00cc, 0x221b: 0x00cc, 0x221c: 0x00cc, 0x221d: 0x00cc, - 0x221e: 0x00cc, 0x221f: 0x00cc, 0x2220: 0x00cc, 0x2221: 0x00cc, 0x2222: 0x00cc, 0x2223: 0x00cc, + 0x2212: 0x00cc, 0x2213: 0x00cc, 0x2214: 0x00cc, 0x2215: 0x00cc, 0x2216: 0x00cc, + 0x2219: 0x00c3, 0x221a: 0x00c3, 0x221b: 0x0080, 0x221c: 0x0080, 0x221d: 0x00cc, + 0x221e: 0x00cc, 0x221f: 0x008c, 0x2220: 0x0080, 0x2221: 0x00cc, 0x2222: 0x00cc, 0x2223: 0x00cc, 0x2224: 0x00cc, 0x2225: 0x00cc, 0x2226: 0x00cc, 0x2227: 0x00cc, 0x2228: 0x00cc, 0x2229: 0x00cc, 0x222a: 0x00cc, 0x222b: 0x00cc, 0x222c: 0x00cc, 0x222d: 0x00cc, 0x222e: 0x00cc, 0x222f: 0x00cc, 0x2230: 0x00cc, 0x2231: 0x00cc, 0x2232: 0x00cc, 0x2233: 0x00cc, 0x2234: 0x00cc, 0x2235: 0x00cc, @@ -1716,107 +1722,107 @@ var derivedPropertiesValues = [20736]uint8{ 0x2240: 0x00cc, 0x2241: 0x00cc, 0x2242: 0x00cc, 0x2243: 0x00cc, 0x2244: 0x00cc, 0x2245: 0x00cc, 0x2246: 0x00cc, 0x2247: 0x00cc, 0x2248: 0x00cc, 0x2249: 0x00cc, 0x224a: 0x00cc, 0x224b: 0x00cc, 0x224c: 0x00cc, 0x224d: 0x00cc, 0x224e: 0x00cc, 0x224f: 0x00cc, 0x2250: 0x00cc, 0x2251: 0x00cc, - 0x2252: 0x00cc, 0x2253: 0x00cc, 0x2254: 0x00cc, 0x2255: 0x00cc, 0x2256: 0x00cc, - 0x2259: 0x00c3, 0x225a: 0x00c3, 0x225b: 0x0080, 0x225c: 0x0080, 0x225d: 0x00cc, - 0x225e: 0x00cc, 0x225f: 0x008c, 0x2260: 0x0080, 0x2261: 0x00cc, 0x2262: 0x00cc, 0x2263: 0x00cc, + 0x2252: 0x00cc, 0x2253: 0x00cc, 0x2254: 0x00cc, 0x2255: 0x00cc, 0x2256: 0x00cc, 0x2257: 0x00cc, + 0x2258: 0x00cc, 0x2259: 0x00cc, 0x225a: 0x00cc, 0x225b: 0x00cc, 0x225c: 0x00cc, 0x225d: 0x00cc, + 0x225e: 0x00cc, 0x225f: 0x00cc, 0x2260: 0x00cc, 0x2261: 0x00cc, 0x2262: 0x00cc, 0x2263: 0x00cc, 0x2264: 0x00cc, 0x2265: 0x00cc, 0x2266: 0x00cc, 0x2267: 0x00cc, 0x2268: 0x00cc, 0x2269: 0x00cc, 0x226a: 0x00cc, 0x226b: 0x00cc, 0x226c: 0x00cc, 0x226d: 0x00cc, 0x226e: 0x00cc, 0x226f: 0x00cc, 0x2270: 0x00cc, 0x2271: 0x00cc, 0x2272: 0x00cc, 0x2273: 0x00cc, 0x2274: 0x00cc, 0x2275: 0x00cc, - 0x2276: 0x00cc, 0x2277: 0x00cc, 0x2278: 0x00cc, 0x2279: 0x00cc, 0x227a: 0x00cc, 0x227b: 0x00cc, - 0x227c: 0x00cc, 0x227d: 0x00cc, 0x227e: 0x00cc, 0x227f: 0x00cc, + 0x2276: 0x00cc, 0x2277: 0x00cc, 0x2278: 0x00cc, 0x2279: 0x00cc, 0x227a: 0x00cc, 0x227b: 0x00d2, + 0x227c: 0x00c0, 0x227d: 0x00cc, 0x227e: 0x00cc, 0x227f: 0x008c, // Block 0x8a, offset 0x2280 - 0x2280: 0x00cc, 0x2281: 0x00cc, 0x2282: 0x00cc, 0x2283: 0x00cc, 0x2284: 0x00cc, 0x2285: 0x00cc, - 0x2286: 0x00cc, 0x2287: 0x00cc, 0x2288: 0x00cc, 0x2289: 0x00cc, 0x228a: 0x00cc, 0x228b: 0x00cc, - 0x228c: 0x00cc, 0x228d: 0x00cc, 0x228e: 0x00cc, 0x228f: 0x00cc, 0x2290: 0x00cc, 0x2291: 0x00cc, - 0x2292: 0x00cc, 0x2293: 0x00cc, 0x2294: 0x00cc, 0x2295: 0x00cc, 0x2296: 0x00cc, 0x2297: 0x00cc, - 0x2298: 0x00cc, 0x2299: 0x00cc, 0x229a: 0x00cc, 0x229b: 0x00cc, 0x229c: 0x00cc, 0x229d: 0x00cc, - 0x229e: 0x00cc, 0x229f: 0x00cc, 0x22a0: 0x00cc, 0x22a1: 0x00cc, 0x22a2: 0x00cc, 0x22a3: 0x00cc, - 0x22a4: 0x00cc, 0x22a5: 0x00cc, 0x22a6: 0x00cc, 0x22a7: 0x00cc, 0x22a8: 0x00cc, 0x22a9: 0x00cc, - 0x22aa: 0x00cc, 0x22ab: 0x00cc, 0x22ac: 0x00cc, 0x22ad: 0x00cc, 0x22ae: 0x00cc, 0x22af: 0x00cc, - 0x22b0: 0x00cc, 0x22b1: 0x00cc, 0x22b2: 0x00cc, 0x22b3: 0x00cc, 0x22b4: 0x00cc, 0x22b5: 0x00cc, - 0x22b6: 0x00cc, 0x22b7: 0x00cc, 0x22b8: 0x00cc, 0x22b9: 0x00cc, 0x22ba: 0x00cc, 0x22bb: 0x00d2, - 0x22bc: 0x00c0, 0x22bd: 0x00cc, 0x22be: 0x00cc, 0x22bf: 0x008c, + 0x2285: 0x00c0, + 0x2286: 0x00c0, 0x2287: 0x00c0, 0x2288: 0x00c0, 0x2289: 0x00c0, 0x228a: 0x00c0, 0x228b: 0x00c0, + 0x228c: 0x00c0, 0x228d: 0x00c0, 0x228e: 0x00c0, 0x228f: 0x00c0, 0x2290: 0x00c0, 0x2291: 0x00c0, + 0x2292: 0x00c0, 0x2293: 0x00c0, 0x2294: 0x00c0, 0x2295: 0x00c0, 0x2296: 0x00c0, 0x2297: 0x00c0, + 0x2298: 0x00c0, 0x2299: 0x00c0, 0x229a: 0x00c0, 0x229b: 0x00c0, 0x229c: 0x00c0, 0x229d: 0x00c0, + 0x229e: 0x00c0, 0x229f: 0x00c0, 0x22a0: 0x00c0, 0x22a1: 0x00c0, 0x22a2: 0x00c0, 0x22a3: 0x00c0, + 0x22a4: 0x00c0, 0x22a5: 0x00c0, 0x22a6: 0x00c0, 0x22a7: 0x00c0, 0x22a8: 0x00c0, 0x22a9: 0x00c0, + 0x22aa: 0x00c0, 0x22ab: 0x00c0, 0x22ac: 0x00c0, 0x22ad: 0x00c0, 0x22ae: 0x00c0, + 0x22b1: 0x0080, 0x22b2: 0x0080, 0x22b3: 0x0080, 0x22b4: 0x0080, 0x22b5: 0x0080, + 0x22b6: 0x0080, 0x22b7: 0x0080, 0x22b8: 0x0080, 0x22b9: 0x0080, 0x22ba: 0x0080, 0x22bb: 0x0080, + 0x22bc: 0x0080, 0x22bd: 0x0080, 0x22be: 0x0080, 0x22bf: 0x0080, // Block 0x8b, offset 0x22c0 - 0x22c5: 0x00c0, - 0x22c6: 0x00c0, 0x22c7: 0x00c0, 0x22c8: 0x00c0, 0x22c9: 0x00c0, 0x22ca: 0x00c0, 0x22cb: 0x00c0, - 0x22cc: 0x00c0, 0x22cd: 0x00c0, 0x22ce: 0x00c0, 0x22cf: 0x00c0, 0x22d0: 0x00c0, 0x22d1: 0x00c0, - 0x22d2: 0x00c0, 0x22d3: 0x00c0, 0x22d4: 0x00c0, 0x22d5: 0x00c0, 0x22d6: 0x00c0, 0x22d7: 0x00c0, - 0x22d8: 0x00c0, 0x22d9: 0x00c0, 0x22da: 0x00c0, 0x22db: 0x00c0, 0x22dc: 0x00c0, 0x22dd: 0x00c0, - 0x22de: 0x00c0, 0x22df: 0x00c0, 0x22e0: 0x00c0, 0x22e1: 0x00c0, 0x22e2: 0x00c0, 0x22e3: 0x00c0, - 0x22e4: 0x00c0, 0x22e5: 0x00c0, 0x22e6: 0x00c0, 0x22e7: 0x00c0, 0x22e8: 0x00c0, 0x22e9: 0x00c0, - 0x22ea: 0x00c0, 0x22eb: 0x00c0, 0x22ec: 0x00c0, 0x22ed: 0x00c0, - 0x22f1: 0x0080, 0x22f2: 0x0080, 0x22f3: 0x0080, 0x22f4: 0x0080, 0x22f5: 0x0080, + 0x22c0: 0x0080, 0x22c1: 0x0080, 0x22c2: 0x0080, 0x22c3: 0x0080, 0x22c4: 0x0080, 0x22c5: 0x0080, + 0x22c6: 0x0080, 0x22c7: 0x0080, 0x22c8: 0x0080, 0x22c9: 0x0080, 0x22ca: 0x0080, 0x22cb: 0x0080, + 0x22cc: 0x0080, 0x22cd: 0x0080, 0x22ce: 0x0080, 0x22cf: 0x0080, 0x22d0: 0x0080, 0x22d1: 0x0080, + 0x22d2: 0x0080, 0x22d3: 0x0080, 0x22d4: 0x0080, 0x22d5: 0x0080, 0x22d6: 0x0080, 0x22d7: 0x0080, + 0x22d8: 0x0080, 0x22d9: 0x0080, 0x22da: 0x0080, 0x22db: 0x0080, 0x22dc: 0x0080, 0x22dd: 0x0080, + 0x22de: 0x0080, 0x22df: 0x0080, 0x22e0: 0x0080, 0x22e1: 0x0080, 0x22e2: 0x0080, 0x22e3: 0x0080, + 0x22e4: 0x0040, 0x22e5: 0x0080, 0x22e6: 0x0080, 0x22e7: 0x0080, 0x22e8: 0x0080, 0x22e9: 0x0080, + 0x22ea: 0x0080, 0x22eb: 0x0080, 0x22ec: 0x0080, 0x22ed: 0x0080, 0x22ee: 0x0080, 0x22ef: 0x0080, + 0x22f0: 0x0080, 0x22f1: 0x0080, 0x22f2: 0x0080, 0x22f3: 0x0080, 0x22f4: 0x0080, 0x22f5: 0x0080, 0x22f6: 0x0080, 0x22f7: 0x0080, 0x22f8: 0x0080, 0x22f9: 0x0080, 0x22fa: 0x0080, 0x22fb: 0x0080, 0x22fc: 0x0080, 0x22fd: 0x0080, 0x22fe: 0x0080, 0x22ff: 0x0080, // Block 0x8c, offset 0x2300 0x2300: 0x0080, 0x2301: 0x0080, 0x2302: 0x0080, 0x2303: 0x0080, 0x2304: 0x0080, 0x2305: 0x0080, 0x2306: 0x0080, 0x2307: 0x0080, 0x2308: 0x0080, 0x2309: 0x0080, 0x230a: 0x0080, 0x230b: 0x0080, - 0x230c: 0x0080, 0x230d: 0x0080, 0x230e: 0x0080, 0x230f: 0x0080, 0x2310: 0x0080, 0x2311: 0x0080, + 0x230c: 0x0080, 0x230d: 0x0080, 0x230e: 0x0080, 0x2310: 0x0080, 0x2311: 0x0080, 0x2312: 0x0080, 0x2313: 0x0080, 0x2314: 0x0080, 0x2315: 0x0080, 0x2316: 0x0080, 0x2317: 0x0080, 0x2318: 0x0080, 0x2319: 0x0080, 0x231a: 0x0080, 0x231b: 0x0080, 0x231c: 0x0080, 0x231d: 0x0080, - 0x231e: 0x0080, 0x231f: 0x0080, 0x2320: 0x0080, 0x2321: 0x0080, 0x2322: 0x0080, 0x2323: 0x0080, - 0x2324: 0x0040, 0x2325: 0x0080, 0x2326: 0x0080, 0x2327: 0x0080, 0x2328: 0x0080, 0x2329: 0x0080, - 0x232a: 0x0080, 0x232b: 0x0080, 0x232c: 0x0080, 0x232d: 0x0080, 0x232e: 0x0080, 0x232f: 0x0080, - 0x2330: 0x0080, 0x2331: 0x0080, 0x2332: 0x0080, 0x2333: 0x0080, 0x2334: 0x0080, 0x2335: 0x0080, - 0x2336: 0x0080, 0x2337: 0x0080, 0x2338: 0x0080, 0x2339: 0x0080, 0x233a: 0x0080, 0x233b: 0x0080, - 0x233c: 0x0080, 0x233d: 0x0080, 0x233e: 0x0080, 0x233f: 0x0080, + 0x231e: 0x0080, 0x231f: 0x0080, 0x2320: 0x00c0, 0x2321: 0x00c0, 0x2322: 0x00c0, 0x2323: 0x00c0, + 0x2324: 0x00c0, 0x2325: 0x00c0, 0x2326: 0x00c0, 0x2327: 0x00c0, 0x2328: 0x00c0, 0x2329: 0x00c0, + 0x232a: 0x00c0, 0x232b: 0x00c0, 0x232c: 0x00c0, 0x232d: 0x00c0, 0x232e: 0x00c0, 0x232f: 0x00c0, + 0x2330: 0x00c0, 0x2331: 0x00c0, 0x2332: 0x00c0, 0x2333: 0x00c0, 0x2334: 0x00c0, 0x2335: 0x00c0, + 0x2336: 0x00c0, 0x2337: 0x00c0, 0x2338: 0x00c0, 0x2339: 0x00c0, 0x233a: 0x00c0, // Block 0x8d, offset 0x2340 0x2340: 0x0080, 0x2341: 0x0080, 0x2342: 0x0080, 0x2343: 0x0080, 0x2344: 0x0080, 0x2345: 0x0080, 0x2346: 0x0080, 0x2347: 0x0080, 0x2348: 0x0080, 0x2349: 0x0080, 0x234a: 0x0080, 0x234b: 0x0080, - 0x234c: 0x0080, 0x234d: 0x0080, 0x234e: 0x0080, 0x2350: 0x0080, 0x2351: 0x0080, + 0x234c: 0x0080, 0x234d: 0x0080, 0x234e: 0x0080, 0x234f: 0x0080, 0x2350: 0x0080, 0x2351: 0x0080, 0x2352: 0x0080, 0x2353: 0x0080, 0x2354: 0x0080, 0x2355: 0x0080, 0x2356: 0x0080, 0x2357: 0x0080, 0x2358: 0x0080, 0x2359: 0x0080, 0x235a: 0x0080, 0x235b: 0x0080, 0x235c: 0x0080, 0x235d: 0x0080, - 0x235e: 0x0080, 0x235f: 0x0080, 0x2360: 0x00c0, 0x2361: 0x00c0, 0x2362: 0x00c0, 0x2363: 0x00c0, - 0x2364: 0x00c0, 0x2365: 0x00c0, 0x2366: 0x00c0, 0x2367: 0x00c0, 0x2368: 0x00c0, 0x2369: 0x00c0, - 0x236a: 0x00c0, 0x236b: 0x00c0, 0x236c: 0x00c0, 0x236d: 0x00c0, 0x236e: 0x00c0, 0x236f: 0x00c0, - 0x2370: 0x00c0, 0x2371: 0x00c0, 0x2372: 0x00c0, 0x2373: 0x00c0, 0x2374: 0x00c0, 0x2375: 0x00c0, - 0x2376: 0x00c0, 0x2377: 0x00c0, 0x2378: 0x00c0, 0x2379: 0x00c0, 0x237a: 0x00c0, + 0x235e: 0x0080, 0x235f: 0x0080, 0x2360: 0x0080, 0x2361: 0x0080, 0x2362: 0x0080, 0x2363: 0x0080, + 0x2370: 0x00cc, 0x2371: 0x00cc, 0x2372: 0x00cc, 0x2373: 0x00cc, 0x2374: 0x00cc, 0x2375: 0x00cc, + 0x2376: 0x00cc, 0x2377: 0x00cc, 0x2378: 0x00cc, 0x2379: 0x00cc, 0x237a: 0x00cc, 0x237b: 0x00cc, + 0x237c: 0x00cc, 0x237d: 0x00cc, 0x237e: 0x00cc, 0x237f: 0x00cc, // Block 0x8e, offset 0x2380 0x2380: 0x0080, 0x2381: 0x0080, 0x2382: 0x0080, 0x2383: 0x0080, 0x2384: 0x0080, 0x2385: 0x0080, 0x2386: 0x0080, 0x2387: 0x0080, 0x2388: 0x0080, 0x2389: 0x0080, 0x238a: 0x0080, 0x238b: 0x0080, 0x238c: 0x0080, 0x238d: 0x0080, 0x238e: 0x0080, 0x238f: 0x0080, 0x2390: 0x0080, 0x2391: 0x0080, 0x2392: 0x0080, 0x2393: 0x0080, 0x2394: 0x0080, 0x2395: 0x0080, 0x2396: 0x0080, 0x2397: 0x0080, 0x2398: 0x0080, 0x2399: 0x0080, 0x239a: 0x0080, 0x239b: 0x0080, 0x239c: 0x0080, 0x239d: 0x0080, - 0x239e: 0x0080, 0x239f: 0x0080, 0x23a0: 0x0080, 0x23a1: 0x0080, 0x23a2: 0x0080, 0x23a3: 0x0080, - 0x23b0: 0x00cc, 0x23b1: 0x00cc, 0x23b2: 0x00cc, 0x23b3: 0x00cc, 0x23b4: 0x00cc, 0x23b5: 0x00cc, - 0x23b6: 0x00cc, 0x23b7: 0x00cc, 0x23b8: 0x00cc, 0x23b9: 0x00cc, 0x23ba: 0x00cc, 0x23bb: 0x00cc, - 0x23bc: 0x00cc, 0x23bd: 0x00cc, 0x23be: 0x00cc, 0x23bf: 0x00cc, + 0x239e: 0x0080, 0x23a0: 0x0080, 0x23a1: 0x0080, 0x23a2: 0x0080, 0x23a3: 0x0080, + 0x23a4: 0x0080, 0x23a5: 0x0080, 0x23a6: 0x0080, 0x23a7: 0x0080, 0x23a8: 0x0080, 0x23a9: 0x0080, + 0x23aa: 0x0080, 0x23ab: 0x0080, 0x23ac: 0x0080, 0x23ad: 0x0080, 0x23ae: 0x0080, 0x23af: 0x0080, + 0x23b0: 0x0080, 0x23b1: 0x0080, 0x23b2: 0x0080, 0x23b3: 0x0080, 0x23b4: 0x0080, 0x23b5: 0x0080, + 0x23b6: 0x0080, 0x23b7: 0x0080, 0x23b8: 0x0080, 0x23b9: 0x0080, 0x23ba: 0x0080, 0x23bb: 0x0080, + 0x23bc: 0x0080, 0x23bd: 0x0080, 0x23be: 0x0080, 0x23bf: 0x0080, // Block 0x8f, offset 0x23c0 0x23c0: 0x0080, 0x23c1: 0x0080, 0x23c2: 0x0080, 0x23c3: 0x0080, 0x23c4: 0x0080, 0x23c5: 0x0080, 0x23c6: 0x0080, 0x23c7: 0x0080, 0x23c8: 0x0080, 0x23c9: 0x0080, 0x23ca: 0x0080, 0x23cb: 0x0080, - 0x23cc: 0x0080, 0x23cd: 0x0080, 0x23ce: 0x0080, 0x23cf: 0x0080, 0x23d0: 0x0080, 0x23d1: 0x0080, - 0x23d2: 0x0080, 0x23d3: 0x0080, 0x23d4: 0x0080, 0x23d5: 0x0080, 0x23d6: 0x0080, 0x23d7: 0x0080, - 0x23d8: 0x0080, 0x23d9: 0x0080, 0x23da: 0x0080, 0x23db: 0x0080, 0x23dc: 0x0080, 0x23dd: 0x0080, - 0x23de: 0x0080, 0x23e0: 0x0080, 0x23e1: 0x0080, 0x23e2: 0x0080, 0x23e3: 0x0080, - 0x23e4: 0x0080, 0x23e5: 0x0080, 0x23e6: 0x0080, 0x23e7: 0x0080, 0x23e8: 0x0080, 0x23e9: 0x0080, - 0x23ea: 0x0080, 0x23eb: 0x0080, 0x23ec: 0x0080, 0x23ed: 0x0080, 0x23ee: 0x0080, 0x23ef: 0x0080, - 0x23f0: 0x0080, 0x23f1: 0x0080, 0x23f2: 0x0080, 0x23f3: 0x0080, 0x23f4: 0x0080, 0x23f5: 0x0080, - 0x23f6: 0x0080, 0x23f7: 0x0080, 0x23f8: 0x0080, 0x23f9: 0x0080, 0x23fa: 0x0080, 0x23fb: 0x0080, - 0x23fc: 0x0080, 0x23fd: 0x0080, 0x23fe: 0x0080, 0x23ff: 0x0080, + 0x23cc: 0x0080, 0x23cd: 0x0080, 0x23ce: 0x0080, 0x23cf: 0x0080, 0x23d0: 0x008c, 0x23d1: 0x008c, + 0x23d2: 0x008c, 0x23d3: 0x008c, 0x23d4: 0x008c, 0x23d5: 0x008c, 0x23d6: 0x008c, 0x23d7: 0x008c, + 0x23d8: 0x008c, 0x23d9: 0x008c, 0x23da: 0x008c, 0x23db: 0x008c, 0x23dc: 0x008c, 0x23dd: 0x008c, + 0x23de: 0x008c, 0x23df: 0x008c, 0x23e0: 0x008c, 0x23e1: 0x008c, 0x23e2: 0x008c, 0x23e3: 0x008c, + 0x23e4: 0x008c, 0x23e5: 0x008c, 0x23e6: 0x008c, 0x23e7: 0x008c, 0x23e8: 0x008c, 0x23e9: 0x008c, + 0x23ea: 0x008c, 0x23eb: 0x008c, 0x23ec: 0x008c, 0x23ed: 0x008c, 0x23ee: 0x008c, 0x23ef: 0x008c, + 0x23f0: 0x008c, 0x23f1: 0x008c, 0x23f2: 0x008c, 0x23f3: 0x008c, 0x23f4: 0x008c, 0x23f5: 0x008c, + 0x23f6: 0x008c, 0x23f7: 0x008c, 0x23f8: 0x008c, 0x23f9: 0x008c, 0x23fa: 0x008c, 0x23fb: 0x008c, + 0x23fc: 0x008c, 0x23fd: 0x008c, 0x23fe: 0x008c, // Block 0x90, offset 0x2400 - 0x2400: 0x0080, 0x2401: 0x0080, 0x2402: 0x0080, 0x2403: 0x0080, 0x2404: 0x0080, 0x2405: 0x0080, - 0x2406: 0x0080, 0x2407: 0x0080, 0x2408: 0x0080, 0x2409: 0x0080, 0x240a: 0x0080, 0x240b: 0x0080, - 0x240c: 0x0080, 0x240d: 0x0080, 0x240e: 0x0080, 0x240f: 0x0080, 0x2410: 0x008c, 0x2411: 0x008c, + 0x2400: 0x008c, 0x2401: 0x008c, 0x2402: 0x008c, 0x2403: 0x008c, 0x2404: 0x008c, 0x2405: 0x008c, + 0x2406: 0x008c, 0x2407: 0x008c, 0x2408: 0x008c, 0x2409: 0x008c, 0x240a: 0x008c, 0x240b: 0x008c, + 0x240c: 0x008c, 0x240d: 0x008c, 0x240e: 0x008c, 0x240f: 0x008c, 0x2410: 0x008c, 0x2411: 0x008c, 0x2412: 0x008c, 0x2413: 0x008c, 0x2414: 0x008c, 0x2415: 0x008c, 0x2416: 0x008c, 0x2417: 0x008c, - 0x2418: 0x008c, 0x2419: 0x008c, 0x241a: 0x008c, 0x241b: 0x008c, 0x241c: 0x008c, 0x241d: 0x008c, - 0x241e: 0x008c, 0x241f: 0x008c, 0x2420: 0x008c, 0x2421: 0x008c, 0x2422: 0x008c, 0x2423: 0x008c, - 0x2424: 0x008c, 0x2425: 0x008c, 0x2426: 0x008c, 0x2427: 0x008c, 0x2428: 0x008c, 0x2429: 0x008c, - 0x242a: 0x008c, 0x242b: 0x008c, 0x242c: 0x008c, 0x242d: 0x008c, 0x242e: 0x008c, 0x242f: 0x008c, - 0x2430: 0x008c, 0x2431: 0x008c, 0x2432: 0x008c, 0x2433: 0x008c, 0x2434: 0x008c, 0x2435: 0x008c, - 0x2436: 0x008c, 0x2437: 0x008c, 0x2438: 0x008c, 0x2439: 0x008c, 0x243a: 0x008c, 0x243b: 0x008c, - 0x243c: 0x008c, 0x243d: 0x008c, 0x243e: 0x008c, + 0x2418: 0x0080, 0x2419: 0x0080, 0x241a: 0x0080, 0x241b: 0x0080, 0x241c: 0x0080, 0x241d: 0x0080, + 0x241e: 0x0080, 0x241f: 0x0080, 0x2420: 0x0080, 0x2421: 0x0080, 0x2422: 0x0080, 0x2423: 0x0080, + 0x2424: 0x0080, 0x2425: 0x0080, 0x2426: 0x0080, 0x2427: 0x0080, 0x2428: 0x0080, 0x2429: 0x0080, + 0x242a: 0x0080, 0x242b: 0x0080, 0x242c: 0x0080, 0x242d: 0x0080, 0x242e: 0x0080, 0x242f: 0x0080, + 0x2430: 0x0080, 0x2431: 0x0080, 0x2432: 0x0080, 0x2433: 0x0080, 0x2434: 0x0080, 0x2435: 0x0080, + 0x2436: 0x0080, 0x2437: 0x0080, 0x2438: 0x0080, 0x2439: 0x0080, 0x243a: 0x0080, 0x243b: 0x0080, + 0x243c: 0x0080, 0x243d: 0x0080, 0x243e: 0x0080, 0x243f: 0x0080, // Block 0x91, offset 0x2440 - 0x2440: 0x008c, 0x2441: 0x008c, 0x2442: 0x008c, 0x2443: 0x008c, 0x2444: 0x008c, 0x2445: 0x008c, - 0x2446: 0x008c, 0x2447: 0x008c, 0x2448: 0x008c, 0x2449: 0x008c, 0x244a: 0x008c, 0x244b: 0x008c, - 0x244c: 0x008c, 0x244d: 0x008c, 0x244e: 0x008c, 0x244f: 0x008c, 0x2450: 0x008c, 0x2451: 0x008c, - 0x2452: 0x008c, 0x2453: 0x008c, 0x2454: 0x008c, 0x2455: 0x008c, 0x2456: 0x008c, 0x2457: 0x008c, - 0x2458: 0x0080, 0x2459: 0x0080, 0x245a: 0x0080, 0x245b: 0x0080, 0x245c: 0x0080, 0x245d: 0x0080, - 0x245e: 0x0080, 0x245f: 0x0080, 0x2460: 0x0080, 0x2461: 0x0080, 0x2462: 0x0080, 0x2463: 0x0080, - 0x2464: 0x0080, 0x2465: 0x0080, 0x2466: 0x0080, 0x2467: 0x0080, 0x2468: 0x0080, 0x2469: 0x0080, - 0x246a: 0x0080, 0x246b: 0x0080, 0x246c: 0x0080, 0x246d: 0x0080, 0x246e: 0x0080, 0x246f: 0x0080, - 0x2470: 0x0080, 0x2471: 0x0080, 0x2472: 0x0080, 0x2473: 0x0080, 0x2474: 0x0080, 0x2475: 0x0080, - 0x2476: 0x0080, 0x2477: 0x0080, 0x2478: 0x0080, 0x2479: 0x0080, 0x247a: 0x0080, 0x247b: 0x0080, - 0x247c: 0x0080, 0x247d: 0x0080, 0x247e: 0x0080, 0x247f: 0x0080, + 0x2440: 0x00cc, 0x2441: 0x00cc, 0x2442: 0x00cc, 0x2443: 0x00cc, 0x2444: 0x00cc, 0x2445: 0x00cc, + 0x2446: 0x00cc, 0x2447: 0x00cc, 0x2448: 0x00cc, 0x2449: 0x00cc, 0x244a: 0x00cc, 0x244b: 0x00cc, + 0x244c: 0x00cc, 0x244d: 0x00cc, 0x244e: 0x00cc, 0x244f: 0x00cc, 0x2450: 0x00cc, 0x2451: 0x00cc, + 0x2452: 0x00cc, 0x2453: 0x00cc, 0x2454: 0x00cc, 0x2455: 0x00cc, 0x2456: 0x00cc, 0x2457: 0x00cc, + 0x2458: 0x00cc, 0x2459: 0x00cc, 0x245a: 0x00cc, 0x245b: 0x00cc, 0x245c: 0x00cc, 0x245d: 0x00cc, + 0x245e: 0x00cc, 0x245f: 0x00cc, 0x2460: 0x00cc, 0x2461: 0x00cc, 0x2462: 0x00cc, 0x2463: 0x00cc, + 0x2464: 0x00cc, 0x2465: 0x00cc, 0x2466: 0x00cc, 0x2467: 0x00cc, 0x2468: 0x00cc, 0x2469: 0x00cc, + 0x246a: 0x00cc, 0x246b: 0x00cc, 0x246c: 0x00cc, 0x246d: 0x00cc, 0x246e: 0x00cc, 0x246f: 0x00cc, + 0x2470: 0x00cc, 0x2471: 0x00cc, 0x2472: 0x00cc, 0x2473: 0x00cc, 0x2474: 0x00cc, 0x2475: 0x00cc, + 0x2476: 0x00cc, 0x2477: 0x00cc, 0x2478: 0x00cc, 0x2479: 0x00cc, 0x247a: 0x00cc, 0x247b: 0x00cc, + 0x247c: 0x00cc, 0x247d: 0x00cc, 0x247e: 0x00cc, 0x247f: 0x00cc, // Block 0x92, offset 0x2480 0x2480: 0x00cc, 0x2481: 0x00cc, 0x2482: 0x00cc, 0x2483: 0x00cc, 0x2484: 0x00cc, 0x2485: 0x00cc, 0x2486: 0x00cc, 0x2487: 0x00cc, 0x2488: 0x00cc, 0x2489: 0x00cc, 0x248a: 0x00cc, 0x248b: 0x00cc, @@ -1827,8 +1833,6 @@ var derivedPropertiesValues = [20736]uint8{ 0x24a4: 0x00cc, 0x24a5: 0x00cc, 0x24a6: 0x00cc, 0x24a7: 0x00cc, 0x24a8: 0x00cc, 0x24a9: 0x00cc, 0x24aa: 0x00cc, 0x24ab: 0x00cc, 0x24ac: 0x00cc, 0x24ad: 0x00cc, 0x24ae: 0x00cc, 0x24af: 0x00cc, 0x24b0: 0x00cc, 0x24b1: 0x00cc, 0x24b2: 0x00cc, 0x24b3: 0x00cc, 0x24b4: 0x00cc, 0x24b5: 0x00cc, - 0x24b6: 0x00cc, 0x24b7: 0x00cc, 0x24b8: 0x00cc, 0x24b9: 0x00cc, 0x24ba: 0x00cc, 0x24bb: 0x00cc, - 0x24bc: 0x00cc, 0x24bd: 0x00cc, 0x24be: 0x00cc, 0x24bf: 0x00cc, // Block 0x93, offset 0x24c0 0x24c0: 0x00cc, 0x24c1: 0x00cc, 0x24c2: 0x00cc, 0x24c3: 0x00cc, 0x24c4: 0x00cc, 0x24c5: 0x00cc, 0x24c6: 0x00cc, 0x24c7: 0x00cc, 0x24c8: 0x00cc, 0x24c9: 0x00cc, 0x24ca: 0x00cc, 0x24cb: 0x00cc, @@ -1837,250 +1841,255 @@ var derivedPropertiesValues = [20736]uint8{ 0x24d8: 0x00cc, 0x24d9: 0x00cc, 0x24da: 0x00cc, 0x24db: 0x00cc, 0x24dc: 0x00cc, 0x24dd: 0x00cc, 0x24de: 0x00cc, 0x24df: 0x00cc, 0x24e0: 0x00cc, 0x24e1: 0x00cc, 0x24e2: 0x00cc, 0x24e3: 0x00cc, 0x24e4: 0x00cc, 0x24e5: 0x00cc, 0x24e6: 0x00cc, 0x24e7: 0x00cc, 0x24e8: 0x00cc, 0x24e9: 0x00cc, - 0x24ea: 0x00cc, 0x24eb: 0x00cc, 0x24ec: 0x00cc, 0x24ed: 0x00cc, 0x24ee: 0x00cc, 0x24ef: 0x00cc, - 0x24f0: 0x00cc, 0x24f1: 0x00cc, 0x24f2: 0x00cc, 0x24f3: 0x00cc, 0x24f4: 0x00cc, 0x24f5: 0x00cc, + 0x24ea: 0x00cc, // Block 0x94, offset 0x2500 - 0x2500: 0x00cc, 0x2501: 0x00cc, 0x2502: 0x00cc, 0x2503: 0x00cc, 0x2504: 0x00cc, 0x2505: 0x00cc, - 0x2506: 0x00cc, 0x2507: 0x00cc, 0x2508: 0x00cc, 0x2509: 0x00cc, 0x250a: 0x00cc, 0x250b: 0x00cc, - 0x250c: 0x00cc, 0x250d: 0x00cc, 0x250e: 0x00cc, 0x250f: 0x00cc, 0x2510: 0x00cc, 0x2511: 0x00cc, - 0x2512: 0x00cc, 0x2513: 0x00cc, 0x2514: 0x00cc, 0x2515: 0x00cc, + 0x2500: 0x00c0, 0x2501: 0x00c0, 0x2502: 0x00c0, 0x2503: 0x00c0, 0x2504: 0x00c0, 0x2505: 0x00c0, + 0x2506: 0x00c0, 0x2507: 0x00c0, 0x2508: 0x00c0, 0x2509: 0x00c0, 0x250a: 0x00c0, 0x250b: 0x00c0, + 0x250c: 0x00c0, 0x2510: 0x0080, 0x2511: 0x0080, + 0x2512: 0x0080, 0x2513: 0x0080, 0x2514: 0x0080, 0x2515: 0x0080, 0x2516: 0x0080, 0x2517: 0x0080, + 0x2518: 0x0080, 0x2519: 0x0080, 0x251a: 0x0080, 0x251b: 0x0080, 0x251c: 0x0080, 0x251d: 0x0080, + 0x251e: 0x0080, 0x251f: 0x0080, 0x2520: 0x0080, 0x2521: 0x0080, 0x2522: 0x0080, 0x2523: 0x0080, + 0x2524: 0x0080, 0x2525: 0x0080, 0x2526: 0x0080, 0x2527: 0x0080, 0x2528: 0x0080, 0x2529: 0x0080, + 0x252a: 0x0080, 0x252b: 0x0080, 0x252c: 0x0080, 0x252d: 0x0080, 0x252e: 0x0080, 0x252f: 0x0080, + 0x2530: 0x0080, 0x2531: 0x0080, 0x2532: 0x0080, 0x2533: 0x0080, 0x2534: 0x0080, 0x2535: 0x0080, + 0x2536: 0x0080, 0x2537: 0x0080, 0x2538: 0x0080, 0x2539: 0x0080, 0x253a: 0x0080, 0x253b: 0x0080, + 0x253c: 0x0080, 0x253d: 0x0080, 0x253e: 0x0080, 0x253f: 0x0080, // Block 0x95, offset 0x2540 - 0x2540: 0x00c0, 0x2541: 0x00c0, 0x2542: 0x00c0, 0x2543: 0x00c0, 0x2544: 0x00c0, 0x2545: 0x00c0, - 0x2546: 0x00c0, 0x2547: 0x00c0, 0x2548: 0x00c0, 0x2549: 0x00c0, 0x254a: 0x00c0, 0x254b: 0x00c0, - 0x254c: 0x00c0, 0x2550: 0x0080, 0x2551: 0x0080, - 0x2552: 0x0080, 0x2553: 0x0080, 0x2554: 0x0080, 0x2555: 0x0080, 0x2556: 0x0080, 0x2557: 0x0080, - 0x2558: 0x0080, 0x2559: 0x0080, 0x255a: 0x0080, 0x255b: 0x0080, 0x255c: 0x0080, 0x255d: 0x0080, - 0x255e: 0x0080, 0x255f: 0x0080, 0x2560: 0x0080, 0x2561: 0x0080, 0x2562: 0x0080, 0x2563: 0x0080, - 0x2564: 0x0080, 0x2565: 0x0080, 0x2566: 0x0080, 0x2567: 0x0080, 0x2568: 0x0080, 0x2569: 0x0080, - 0x256a: 0x0080, 0x256b: 0x0080, 0x256c: 0x0080, 0x256d: 0x0080, 0x256e: 0x0080, 0x256f: 0x0080, - 0x2570: 0x0080, 0x2571: 0x0080, 0x2572: 0x0080, 0x2573: 0x0080, 0x2574: 0x0080, 0x2575: 0x0080, - 0x2576: 0x0080, 0x2577: 0x0080, 0x2578: 0x0080, 0x2579: 0x0080, 0x257a: 0x0080, 0x257b: 0x0080, - 0x257c: 0x0080, 0x257d: 0x0080, 0x257e: 0x0080, 0x257f: 0x0080, + 0x2540: 0x0080, 0x2541: 0x0080, 0x2542: 0x0080, 0x2543: 0x0080, 0x2544: 0x0080, 0x2545: 0x0080, + 0x2546: 0x0080, + 0x2550: 0x00c0, 0x2551: 0x00c0, + 0x2552: 0x00c0, 0x2553: 0x00c0, 0x2554: 0x00c0, 0x2555: 0x00c0, 0x2556: 0x00c0, 0x2557: 0x00c0, + 0x2558: 0x00c0, 0x2559: 0x00c0, 0x255a: 0x00c0, 0x255b: 0x00c0, 0x255c: 0x00c0, 0x255d: 0x00c0, + 0x255e: 0x00c0, 0x255f: 0x00c0, 0x2560: 0x00c0, 0x2561: 0x00c0, 0x2562: 0x00c0, 0x2563: 0x00c0, + 0x2564: 0x00c0, 0x2565: 0x00c0, 0x2566: 0x00c0, 0x2567: 0x00c0, 0x2568: 0x00c0, 0x2569: 0x00c0, + 0x256a: 0x00c0, 0x256b: 0x00c0, 0x256c: 0x00c0, 0x256d: 0x00c0, 0x256e: 0x00c0, 0x256f: 0x00c0, + 0x2570: 0x00c0, 0x2571: 0x00c0, 0x2572: 0x00c0, 0x2573: 0x00c0, 0x2574: 0x00c0, 0x2575: 0x00c0, + 0x2576: 0x00c0, 0x2577: 0x00c0, 0x2578: 0x00c0, 0x2579: 0x00c0, 0x257a: 0x00c0, 0x257b: 0x00c0, + 0x257c: 0x00c0, 0x257d: 0x00c0, 0x257e: 0x0080, 0x257f: 0x0080, // Block 0x96, offset 0x2580 - 0x2580: 0x0080, 0x2581: 0x0080, 0x2582: 0x0080, 0x2583: 0x0080, 0x2584: 0x0080, 0x2585: 0x0080, - 0x2586: 0x0080, - 0x2590: 0x00c0, 0x2591: 0x00c0, + 0x2580: 0x00c0, 0x2581: 0x00c0, 0x2582: 0x00c0, 0x2583: 0x00c0, 0x2584: 0x00c0, 0x2585: 0x00c0, + 0x2586: 0x00c0, 0x2587: 0x00c0, 0x2588: 0x00c0, 0x2589: 0x00c0, 0x258a: 0x00c0, 0x258b: 0x00c0, + 0x258c: 0x00c0, 0x258d: 0x0080, 0x258e: 0x0080, 0x258f: 0x0080, 0x2590: 0x00c0, 0x2591: 0x00c0, 0x2592: 0x00c0, 0x2593: 0x00c0, 0x2594: 0x00c0, 0x2595: 0x00c0, 0x2596: 0x00c0, 0x2597: 0x00c0, 0x2598: 0x00c0, 0x2599: 0x00c0, 0x259a: 0x00c0, 0x259b: 0x00c0, 0x259c: 0x00c0, 0x259d: 0x00c0, 0x259e: 0x00c0, 0x259f: 0x00c0, 0x25a0: 0x00c0, 0x25a1: 0x00c0, 0x25a2: 0x00c0, 0x25a3: 0x00c0, 0x25a4: 0x00c0, 0x25a5: 0x00c0, 0x25a6: 0x00c0, 0x25a7: 0x00c0, 0x25a8: 0x00c0, 0x25a9: 0x00c0, - 0x25aa: 0x00c0, 0x25ab: 0x00c0, 0x25ac: 0x00c0, 0x25ad: 0x00c0, 0x25ae: 0x00c0, 0x25af: 0x00c0, - 0x25b0: 0x00c0, 0x25b1: 0x00c0, 0x25b2: 0x00c0, 0x25b3: 0x00c0, 0x25b4: 0x00c0, 0x25b5: 0x00c0, - 0x25b6: 0x00c0, 0x25b7: 0x00c0, 0x25b8: 0x00c0, 0x25b9: 0x00c0, 0x25ba: 0x00c0, 0x25bb: 0x00c0, - 0x25bc: 0x00c0, 0x25bd: 0x00c0, 0x25be: 0x0080, 0x25bf: 0x0080, + 0x25aa: 0x00c0, 0x25ab: 0x00c0, // Block 0x97, offset 0x25c0 0x25c0: 0x00c0, 0x25c1: 0x00c0, 0x25c2: 0x00c0, 0x25c3: 0x00c0, 0x25c4: 0x00c0, 0x25c5: 0x00c0, 0x25c6: 0x00c0, 0x25c7: 0x00c0, 0x25c8: 0x00c0, 0x25c9: 0x00c0, 0x25ca: 0x00c0, 0x25cb: 0x00c0, - 0x25cc: 0x00c0, 0x25cd: 0x0080, 0x25ce: 0x0080, 0x25cf: 0x0080, 0x25d0: 0x00c0, 0x25d1: 0x00c0, + 0x25cc: 0x00c0, 0x25cd: 0x00c0, 0x25ce: 0x00c0, 0x25cf: 0x00c0, 0x25d0: 0x00c0, 0x25d1: 0x00c0, 0x25d2: 0x00c0, 0x25d3: 0x00c0, 0x25d4: 0x00c0, 0x25d5: 0x00c0, 0x25d6: 0x00c0, 0x25d7: 0x00c0, 0x25d8: 0x00c0, 0x25d9: 0x00c0, 0x25da: 0x00c0, 0x25db: 0x00c0, 0x25dc: 0x00c0, 0x25dd: 0x00c0, 0x25de: 0x00c0, 0x25df: 0x00c0, 0x25e0: 0x00c0, 0x25e1: 0x00c0, 0x25e2: 0x00c0, 0x25e3: 0x00c0, 0x25e4: 0x00c0, 0x25e5: 0x00c0, 0x25e6: 0x00c0, 0x25e7: 0x00c0, 0x25e8: 0x00c0, 0x25e9: 0x00c0, - 0x25ea: 0x00c0, 0x25eb: 0x00c0, + 0x25ea: 0x00c0, 0x25eb: 0x00c0, 0x25ec: 0x00c0, 0x25ed: 0x00c0, 0x25ee: 0x00c0, 0x25ef: 0x00c3, + 0x25f0: 0x0083, 0x25f1: 0x0083, 0x25f2: 0x0083, 0x25f3: 0x0080, 0x25f4: 0x00c3, 0x25f5: 0x00c3, + 0x25f6: 0x00c3, 0x25f7: 0x00c3, 0x25f8: 0x00c3, 0x25f9: 0x00c3, 0x25fa: 0x00c3, 0x25fb: 0x00c3, + 0x25fc: 0x00c3, 0x25fd: 0x00c3, 0x25fe: 0x0080, 0x25ff: 0x00c0, // Block 0x98, offset 0x2600 0x2600: 0x00c0, 0x2601: 0x00c0, 0x2602: 0x00c0, 0x2603: 0x00c0, 0x2604: 0x00c0, 0x2605: 0x00c0, 0x2606: 0x00c0, 0x2607: 0x00c0, 0x2608: 0x00c0, 0x2609: 0x00c0, 0x260a: 0x00c0, 0x260b: 0x00c0, 0x260c: 0x00c0, 0x260d: 0x00c0, 0x260e: 0x00c0, 0x260f: 0x00c0, 0x2610: 0x00c0, 0x2611: 0x00c0, 0x2612: 0x00c0, 0x2613: 0x00c0, 0x2614: 0x00c0, 0x2615: 0x00c0, 0x2616: 0x00c0, 0x2617: 0x00c0, - 0x2618: 0x00c0, 0x2619: 0x00c0, 0x261a: 0x00c0, 0x261b: 0x00c0, 0x261c: 0x00c0, 0x261d: 0x00c0, - 0x261e: 0x00c0, 0x261f: 0x00c0, 0x2620: 0x00c0, 0x2621: 0x00c0, 0x2622: 0x00c0, 0x2623: 0x00c0, + 0x2618: 0x00c0, 0x2619: 0x00c0, 0x261a: 0x00c0, 0x261b: 0x00c0, 0x261c: 0x0080, 0x261d: 0x0080, + 0x261e: 0x00c3, 0x261f: 0x00c3, 0x2620: 0x00c0, 0x2621: 0x00c0, 0x2622: 0x00c0, 0x2623: 0x00c0, 0x2624: 0x00c0, 0x2625: 0x00c0, 0x2626: 0x00c0, 0x2627: 0x00c0, 0x2628: 0x00c0, 0x2629: 0x00c0, - 0x262a: 0x00c0, 0x262b: 0x00c0, 0x262c: 0x00c0, 0x262d: 0x00c0, 0x262e: 0x00c0, 0x262f: 0x00c3, - 0x2630: 0x0083, 0x2631: 0x0083, 0x2632: 0x0083, 0x2633: 0x0080, 0x2634: 0x00c3, 0x2635: 0x00c3, - 0x2636: 0x00c3, 0x2637: 0x00c3, 0x2638: 0x00c3, 0x2639: 0x00c3, 0x263a: 0x00c3, 0x263b: 0x00c3, - 0x263c: 0x00c3, 0x263d: 0x00c3, 0x263e: 0x0080, 0x263f: 0x00c0, + 0x262a: 0x00c0, 0x262b: 0x00c0, 0x262c: 0x00c0, 0x262d: 0x00c0, 0x262e: 0x00c0, 0x262f: 0x00c0, + 0x2630: 0x00c0, 0x2631: 0x00c0, 0x2632: 0x00c0, 0x2633: 0x00c0, 0x2634: 0x00c0, 0x2635: 0x00c0, + 0x2636: 0x00c0, 0x2637: 0x00c0, 0x2638: 0x00c0, 0x2639: 0x00c0, 0x263a: 0x00c0, 0x263b: 0x00c0, + 0x263c: 0x00c0, 0x263d: 0x00c0, 0x263e: 0x00c0, 0x263f: 0x00c0, // Block 0x99, offset 0x2640 0x2640: 0x00c0, 0x2641: 0x00c0, 0x2642: 0x00c0, 0x2643: 0x00c0, 0x2644: 0x00c0, 0x2645: 0x00c0, 0x2646: 0x00c0, 0x2647: 0x00c0, 0x2648: 0x00c0, 0x2649: 0x00c0, 0x264a: 0x00c0, 0x264b: 0x00c0, 0x264c: 0x00c0, 0x264d: 0x00c0, 0x264e: 0x00c0, 0x264f: 0x00c0, 0x2650: 0x00c0, 0x2651: 0x00c0, 0x2652: 0x00c0, 0x2653: 0x00c0, 0x2654: 0x00c0, 0x2655: 0x00c0, 0x2656: 0x00c0, 0x2657: 0x00c0, - 0x2658: 0x00c0, 0x2659: 0x00c0, 0x265a: 0x00c0, 0x265b: 0x00c0, 0x265c: 0x0080, 0x265d: 0x0080, - 0x265e: 0x00c3, 0x265f: 0x00c3, 0x2660: 0x00c0, 0x2661: 0x00c0, 0x2662: 0x00c0, 0x2663: 0x00c0, - 0x2664: 0x00c0, 0x2665: 0x00c0, 0x2666: 0x00c0, 0x2667: 0x00c0, 0x2668: 0x00c0, 0x2669: 0x00c0, - 0x266a: 0x00c0, 0x266b: 0x00c0, 0x266c: 0x00c0, 0x266d: 0x00c0, 0x266e: 0x00c0, 0x266f: 0x00c0, - 0x2670: 0x00c0, 0x2671: 0x00c0, 0x2672: 0x00c0, 0x2673: 0x00c0, 0x2674: 0x00c0, 0x2675: 0x00c0, - 0x2676: 0x00c0, 0x2677: 0x00c0, 0x2678: 0x00c0, 0x2679: 0x00c0, 0x267a: 0x00c0, 0x267b: 0x00c0, - 0x267c: 0x00c0, 0x267d: 0x00c0, 0x267e: 0x00c0, 0x267f: 0x00c0, + 0x2658: 0x00c0, 0x2659: 0x00c0, 0x265a: 0x00c0, 0x265b: 0x00c0, 0x265c: 0x00c0, 0x265d: 0x00c0, + 0x265e: 0x00c0, 0x265f: 0x00c0, 0x2660: 0x00c0, 0x2661: 0x00c0, 0x2662: 0x00c0, 0x2663: 0x00c0, + 0x2664: 0x00c0, 0x2665: 0x00c0, 0x2666: 0x0080, 0x2667: 0x0080, 0x2668: 0x0080, 0x2669: 0x0080, + 0x266a: 0x0080, 0x266b: 0x0080, 0x266c: 0x0080, 0x266d: 0x0080, 0x266e: 0x0080, 0x266f: 0x0080, + 0x2670: 0x00c3, 0x2671: 0x00c3, 0x2672: 0x0080, 0x2673: 0x0080, 0x2674: 0x0080, 0x2675: 0x0080, + 0x2676: 0x0080, 0x2677: 0x0080, // Block 0x9a, offset 0x2680 - 0x2680: 0x00c0, 0x2681: 0x00c0, 0x2682: 0x00c0, 0x2683: 0x00c0, 0x2684: 0x00c0, 0x2685: 0x00c0, - 0x2686: 0x00c0, 0x2687: 0x00c0, 0x2688: 0x00c0, 0x2689: 0x00c0, 0x268a: 0x00c0, 0x268b: 0x00c0, - 0x268c: 0x00c0, 0x268d: 0x00c0, 0x268e: 0x00c0, 0x268f: 0x00c0, 0x2690: 0x00c0, 0x2691: 0x00c0, - 0x2692: 0x00c0, 0x2693: 0x00c0, 0x2694: 0x00c0, 0x2695: 0x00c0, 0x2696: 0x00c0, 0x2697: 0x00c0, + 0x2680: 0x0080, 0x2681: 0x0080, 0x2682: 0x0080, 0x2683: 0x0080, 0x2684: 0x0080, 0x2685: 0x0080, + 0x2686: 0x0080, 0x2687: 0x0080, 0x2688: 0x0080, 0x2689: 0x0080, 0x268a: 0x0080, 0x268b: 0x0080, + 0x268c: 0x0080, 0x268d: 0x0080, 0x268e: 0x0080, 0x268f: 0x0080, 0x2690: 0x0080, 0x2691: 0x0080, + 0x2692: 0x0080, 0x2693: 0x0080, 0x2694: 0x0080, 0x2695: 0x0080, 0x2696: 0x0080, 0x2697: 0x00c0, 0x2698: 0x00c0, 0x2699: 0x00c0, 0x269a: 0x00c0, 0x269b: 0x00c0, 0x269c: 0x00c0, 0x269d: 0x00c0, - 0x269e: 0x00c0, 0x269f: 0x00c0, 0x26a0: 0x00c0, 0x26a1: 0x00c0, 0x26a2: 0x00c0, 0x26a3: 0x00c0, - 0x26a4: 0x00c0, 0x26a5: 0x00c0, 0x26a6: 0x0080, 0x26a7: 0x0080, 0x26a8: 0x0080, 0x26a9: 0x0080, - 0x26aa: 0x0080, 0x26ab: 0x0080, 0x26ac: 0x0080, 0x26ad: 0x0080, 0x26ae: 0x0080, 0x26af: 0x0080, - 0x26b0: 0x00c3, 0x26b1: 0x00c3, 0x26b2: 0x0080, 0x26b3: 0x0080, 0x26b4: 0x0080, 0x26b5: 0x0080, - 0x26b6: 0x0080, 0x26b7: 0x0080, + 0x269e: 0x00c0, 0x269f: 0x00c0, 0x26a0: 0x0080, 0x26a1: 0x0080, 0x26a2: 0x00c0, 0x26a3: 0x00c0, + 0x26a4: 0x00c0, 0x26a5: 0x00c0, 0x26a6: 0x00c0, 0x26a7: 0x00c0, 0x26a8: 0x00c0, 0x26a9: 0x00c0, + 0x26aa: 0x00c0, 0x26ab: 0x00c0, 0x26ac: 0x00c0, 0x26ad: 0x00c0, 0x26ae: 0x00c0, 0x26af: 0x00c0, + 0x26b0: 0x00c0, 0x26b1: 0x00c0, 0x26b2: 0x00c0, 0x26b3: 0x00c0, 0x26b4: 0x00c0, 0x26b5: 0x00c0, + 0x26b6: 0x00c0, 0x26b7: 0x00c0, 0x26b8: 0x00c0, 0x26b9: 0x00c0, 0x26ba: 0x00c0, 0x26bb: 0x00c0, + 0x26bc: 0x00c0, 0x26bd: 0x00c0, 0x26be: 0x00c0, 0x26bf: 0x00c0, // Block 0x9b, offset 0x26c0 - 0x26c0: 0x0080, 0x26c1: 0x0080, 0x26c2: 0x0080, 0x26c3: 0x0080, 0x26c4: 0x0080, 0x26c5: 0x0080, - 0x26c6: 0x0080, 0x26c7: 0x0080, 0x26c8: 0x0080, 0x26c9: 0x0080, 0x26ca: 0x0080, 0x26cb: 0x0080, - 0x26cc: 0x0080, 0x26cd: 0x0080, 0x26ce: 0x0080, 0x26cf: 0x0080, 0x26d0: 0x0080, 0x26d1: 0x0080, - 0x26d2: 0x0080, 0x26d3: 0x0080, 0x26d4: 0x0080, 0x26d5: 0x0080, 0x26d6: 0x0080, 0x26d7: 0x00c0, + 0x26c0: 0x00c0, 0x26c1: 0x00c0, 0x26c2: 0x00c0, 0x26c3: 0x00c0, 0x26c4: 0x00c0, 0x26c5: 0x00c0, + 0x26c6: 0x00c0, 0x26c7: 0x00c0, 0x26c8: 0x00c0, 0x26c9: 0x00c0, 0x26ca: 0x00c0, 0x26cb: 0x00c0, + 0x26cc: 0x00c0, 0x26cd: 0x00c0, 0x26ce: 0x00c0, 0x26cf: 0x00c0, 0x26d0: 0x00c0, 0x26d1: 0x00c0, + 0x26d2: 0x00c0, 0x26d3: 0x00c0, 0x26d4: 0x00c0, 0x26d5: 0x00c0, 0x26d6: 0x00c0, 0x26d7: 0x00c0, 0x26d8: 0x00c0, 0x26d9: 0x00c0, 0x26da: 0x00c0, 0x26db: 0x00c0, 0x26dc: 0x00c0, 0x26dd: 0x00c0, - 0x26de: 0x00c0, 0x26df: 0x00c0, 0x26e0: 0x0080, 0x26e1: 0x0080, 0x26e2: 0x00c0, 0x26e3: 0x00c0, + 0x26de: 0x00c0, 0x26df: 0x00c0, 0x26e0: 0x00c0, 0x26e1: 0x00c0, 0x26e2: 0x00c0, 0x26e3: 0x00c0, 0x26e4: 0x00c0, 0x26e5: 0x00c0, 0x26e6: 0x00c0, 0x26e7: 0x00c0, 0x26e8: 0x00c0, 0x26e9: 0x00c0, 0x26ea: 0x00c0, 0x26eb: 0x00c0, 0x26ec: 0x00c0, 0x26ed: 0x00c0, 0x26ee: 0x00c0, 0x26ef: 0x00c0, - 0x26f0: 0x00c0, 0x26f1: 0x00c0, 0x26f2: 0x00c0, 0x26f3: 0x00c0, 0x26f4: 0x00c0, 0x26f5: 0x00c0, + 0x26f0: 0x0080, 0x26f1: 0x00c0, 0x26f2: 0x00c0, 0x26f3: 0x00c0, 0x26f4: 0x00c0, 0x26f5: 0x00c0, 0x26f6: 0x00c0, 0x26f7: 0x00c0, 0x26f8: 0x00c0, 0x26f9: 0x00c0, 0x26fa: 0x00c0, 0x26fb: 0x00c0, 0x26fc: 0x00c0, 0x26fd: 0x00c0, 0x26fe: 0x00c0, 0x26ff: 0x00c0, // Block 0x9c, offset 0x2700 0x2700: 0x00c0, 0x2701: 0x00c0, 0x2702: 0x00c0, 0x2703: 0x00c0, 0x2704: 0x00c0, 0x2705: 0x00c0, - 0x2706: 0x00c0, 0x2707: 0x00c0, 0x2708: 0x00c0, 0x2709: 0x00c0, 0x270a: 0x00c0, 0x270b: 0x00c0, + 0x2706: 0x00c0, 0x2707: 0x00c0, 0x2708: 0x00c0, 0x2709: 0x0080, 0x270a: 0x0080, 0x270b: 0x00c0, 0x270c: 0x00c0, 0x270d: 0x00c0, 0x270e: 0x00c0, 0x270f: 0x00c0, 0x2710: 0x00c0, 0x2711: 0x00c0, 0x2712: 0x00c0, 0x2713: 0x00c0, 0x2714: 0x00c0, 0x2715: 0x00c0, 0x2716: 0x00c0, 0x2717: 0x00c0, 0x2718: 0x00c0, 0x2719: 0x00c0, 0x271a: 0x00c0, 0x271b: 0x00c0, 0x271c: 0x00c0, 0x271d: 0x00c0, 0x271e: 0x00c0, 0x271f: 0x00c0, 0x2720: 0x00c0, 0x2721: 0x00c0, 0x2722: 0x00c0, 0x2723: 0x00c0, 0x2724: 0x00c0, 0x2725: 0x00c0, 0x2726: 0x00c0, 0x2727: 0x00c0, 0x2728: 0x00c0, 0x2729: 0x00c0, - 0x272a: 0x00c0, 0x272b: 0x00c0, 0x272c: 0x00c0, 0x272d: 0x00c0, 0x272e: 0x00c0, 0x272f: 0x00c0, - 0x2730: 0x0080, 0x2731: 0x00c0, 0x2732: 0x00c0, 0x2733: 0x00c0, 0x2734: 0x00c0, 0x2735: 0x00c0, - 0x2736: 0x00c0, 0x2737: 0x00c0, 0x2738: 0x00c0, 0x2739: 0x00c0, 0x273a: 0x00c0, 0x273b: 0x00c0, - 0x273c: 0x00c0, 0x273d: 0x00c0, 0x273e: 0x00c0, 0x273f: 0x00c0, + 0x272a: 0x00c0, 0x272b: 0x00c0, 0x272c: 0x00c0, 0x272d: 0x00c0, 0x272e: 0x00c0, + 0x2730: 0x00c0, 0x2731: 0x00c0, 0x2732: 0x00c0, 0x2733: 0x00c0, 0x2734: 0x00c0, 0x2735: 0x00c0, + 0x2736: 0x00c0, 0x2737: 0x00c0, // Block 0x9d, offset 0x2740 - 0x2740: 0x00c0, 0x2741: 0x00c0, 0x2742: 0x00c0, 0x2743: 0x00c0, 0x2744: 0x00c0, 0x2745: 0x00c0, - 0x2746: 0x00c0, 0x2747: 0x00c0, 0x2748: 0x00c0, 0x2749: 0x0080, 0x274a: 0x0080, 0x274b: 0x00c0, - 0x274c: 0x00c0, 0x274d: 0x00c0, 0x274e: 0x00c0, 0x274f: 0x00c0, 0x2750: 0x00c0, 0x2751: 0x00c0, - 0x2752: 0x00c0, 0x2753: 0x00c0, 0x2754: 0x00c0, 0x2755: 0x00c0, 0x2756: 0x00c0, 0x2757: 0x00c0, - 0x2758: 0x00c0, 0x2759: 0x00c0, 0x275a: 0x00c0, 0x275b: 0x00c0, 0x275c: 0x00c0, 0x275d: 0x00c0, - 0x275e: 0x00c0, 0x275f: 0x00c0, 0x2760: 0x00c0, 0x2761: 0x00c0, 0x2762: 0x00c0, 0x2763: 0x00c0, - 0x2764: 0x00c0, 0x2765: 0x00c0, 0x2766: 0x00c0, 0x2767: 0x00c0, 0x2768: 0x00c0, 0x2769: 0x00c0, - 0x276a: 0x00c0, 0x276b: 0x00c0, 0x276c: 0x00c0, 0x276d: 0x00c0, 0x276e: 0x00c0, - 0x2770: 0x00c0, 0x2771: 0x00c0, 0x2772: 0x00c0, 0x2773: 0x00c0, 0x2774: 0x00c0, 0x2775: 0x00c0, - 0x2776: 0x00c0, 0x2777: 0x00c0, + 0x2777: 0x00c0, 0x2778: 0x0080, 0x2779: 0x0080, 0x277a: 0x00c0, 0x277b: 0x00c0, + 0x277c: 0x00c0, 0x277d: 0x00c0, 0x277e: 0x00c0, 0x277f: 0x00c0, // Block 0x9e, offset 0x2780 - 0x27b7: 0x00c0, 0x27b8: 0x0080, 0x27b9: 0x0080, 0x27ba: 0x00c0, 0x27bb: 0x00c0, - 0x27bc: 0x00c0, 0x27bd: 0x00c0, 0x27be: 0x00c0, 0x27bf: 0x00c0, + 0x2780: 0x00c0, 0x2781: 0x00c0, 0x2782: 0x00c3, 0x2783: 0x00c0, 0x2784: 0x00c0, 0x2785: 0x00c0, + 0x2786: 0x00c6, 0x2787: 0x00c0, 0x2788: 0x00c0, 0x2789: 0x00c0, 0x278a: 0x00c0, 0x278b: 0x00c3, + 0x278c: 0x00c0, 0x278d: 0x00c0, 0x278e: 0x00c0, 0x278f: 0x00c0, 0x2790: 0x00c0, 0x2791: 0x00c0, + 0x2792: 0x00c0, 0x2793: 0x00c0, 0x2794: 0x00c0, 0x2795: 0x00c0, 0x2796: 0x00c0, 0x2797: 0x00c0, + 0x2798: 0x00c0, 0x2799: 0x00c0, 0x279a: 0x00c0, 0x279b: 0x00c0, 0x279c: 0x00c0, 0x279d: 0x00c0, + 0x279e: 0x00c0, 0x279f: 0x00c0, 0x27a0: 0x00c0, 0x27a1: 0x00c0, 0x27a2: 0x00c0, 0x27a3: 0x00c0, + 0x27a4: 0x00c0, 0x27a5: 0x00c3, 0x27a6: 0x00c3, 0x27a7: 0x00c0, 0x27a8: 0x0080, 0x27a9: 0x0080, + 0x27aa: 0x0080, 0x27ab: 0x0080, + 0x27b0: 0x0080, 0x27b1: 0x0080, 0x27b2: 0x0080, 0x27b3: 0x0080, 0x27b4: 0x0080, 0x27b5: 0x0080, + 0x27b6: 0x0080, 0x27b7: 0x0080, 0x27b8: 0x0080, 0x27b9: 0x0080, // Block 0x9f, offset 0x27c0 - 0x27c0: 0x00c0, 0x27c1: 0x00c0, 0x27c2: 0x00c3, 0x27c3: 0x00c0, 0x27c4: 0x00c0, 0x27c5: 0x00c0, - 0x27c6: 0x00c6, 0x27c7: 0x00c0, 0x27c8: 0x00c0, 0x27c9: 0x00c0, 0x27ca: 0x00c0, 0x27cb: 0x00c3, - 0x27cc: 0x00c0, 0x27cd: 0x00c0, 0x27ce: 0x00c0, 0x27cf: 0x00c0, 0x27d0: 0x00c0, 0x27d1: 0x00c0, - 0x27d2: 0x00c0, 0x27d3: 0x00c0, 0x27d4: 0x00c0, 0x27d5: 0x00c0, 0x27d6: 0x00c0, 0x27d7: 0x00c0, - 0x27d8: 0x00c0, 0x27d9: 0x00c0, 0x27da: 0x00c0, 0x27db: 0x00c0, 0x27dc: 0x00c0, 0x27dd: 0x00c0, - 0x27de: 0x00c0, 0x27df: 0x00c0, 0x27e0: 0x00c0, 0x27e1: 0x00c0, 0x27e2: 0x00c0, 0x27e3: 0x00c0, - 0x27e4: 0x00c0, 0x27e5: 0x00c3, 0x27e6: 0x00c3, 0x27e7: 0x00c0, 0x27e8: 0x0080, 0x27e9: 0x0080, - 0x27ea: 0x0080, 0x27eb: 0x0080, - 0x27f0: 0x0080, 0x27f1: 0x0080, 0x27f2: 0x0080, 0x27f3: 0x0080, 0x27f4: 0x0080, 0x27f5: 0x0080, - 0x27f6: 0x0080, 0x27f7: 0x0080, 0x27f8: 0x0080, 0x27f9: 0x0080, + 0x27c0: 0x00c2, 0x27c1: 0x00c2, 0x27c2: 0x00c2, 0x27c3: 0x00c2, 0x27c4: 0x00c2, 0x27c5: 0x00c2, + 0x27c6: 0x00c2, 0x27c7: 0x00c2, 0x27c8: 0x00c2, 0x27c9: 0x00c2, 0x27ca: 0x00c2, 0x27cb: 0x00c2, + 0x27cc: 0x00c2, 0x27cd: 0x00c2, 0x27ce: 0x00c2, 0x27cf: 0x00c2, 0x27d0: 0x00c2, 0x27d1: 0x00c2, + 0x27d2: 0x00c2, 0x27d3: 0x00c2, 0x27d4: 0x00c2, 0x27d5: 0x00c2, 0x27d6: 0x00c2, 0x27d7: 0x00c2, + 0x27d8: 0x00c2, 0x27d9: 0x00c2, 0x27da: 0x00c2, 0x27db: 0x00c2, 0x27dc: 0x00c2, 0x27dd: 0x00c2, + 0x27de: 0x00c2, 0x27df: 0x00c2, 0x27e0: 0x00c2, 0x27e1: 0x00c2, 0x27e2: 0x00c2, 0x27e3: 0x00c2, + 0x27e4: 0x00c2, 0x27e5: 0x00c2, 0x27e6: 0x00c2, 0x27e7: 0x00c2, 0x27e8: 0x00c2, 0x27e9: 0x00c2, + 0x27ea: 0x00c2, 0x27eb: 0x00c2, 0x27ec: 0x00c2, 0x27ed: 0x00c2, 0x27ee: 0x00c2, 0x27ef: 0x00c2, + 0x27f0: 0x00c2, 0x27f1: 0x00c2, 0x27f2: 0x00c1, 0x27f3: 0x00c0, 0x27f4: 0x0080, 0x27f5: 0x0080, + 0x27f6: 0x0080, 0x27f7: 0x0080, // Block 0xa0, offset 0x2800 - 0x2800: 0x00c2, 0x2801: 0x00c2, 0x2802: 0x00c2, 0x2803: 0x00c2, 0x2804: 0x00c2, 0x2805: 0x00c2, - 0x2806: 0x00c2, 0x2807: 0x00c2, 0x2808: 0x00c2, 0x2809: 0x00c2, 0x280a: 0x00c2, 0x280b: 0x00c2, - 0x280c: 0x00c2, 0x280d: 0x00c2, 0x280e: 0x00c2, 0x280f: 0x00c2, 0x2810: 0x00c2, 0x2811: 0x00c2, - 0x2812: 0x00c2, 0x2813: 0x00c2, 0x2814: 0x00c2, 0x2815: 0x00c2, 0x2816: 0x00c2, 0x2817: 0x00c2, - 0x2818: 0x00c2, 0x2819: 0x00c2, 0x281a: 0x00c2, 0x281b: 0x00c2, 0x281c: 0x00c2, 0x281d: 0x00c2, - 0x281e: 0x00c2, 0x281f: 0x00c2, 0x2820: 0x00c2, 0x2821: 0x00c2, 0x2822: 0x00c2, 0x2823: 0x00c2, - 0x2824: 0x00c2, 0x2825: 0x00c2, 0x2826: 0x00c2, 0x2827: 0x00c2, 0x2828: 0x00c2, 0x2829: 0x00c2, - 0x282a: 0x00c2, 0x282b: 0x00c2, 0x282c: 0x00c2, 0x282d: 0x00c2, 0x282e: 0x00c2, 0x282f: 0x00c2, - 0x2830: 0x00c2, 0x2831: 0x00c2, 0x2832: 0x00c1, 0x2833: 0x00c0, 0x2834: 0x0080, 0x2835: 0x0080, - 0x2836: 0x0080, 0x2837: 0x0080, + 0x2800: 0x00c0, 0x2801: 0x00c0, 0x2802: 0x00c0, 0x2803: 0x00c0, 0x2804: 0x00c6, 0x2805: 0x00c3, + 0x280e: 0x0080, 0x280f: 0x0080, 0x2810: 0x00c0, 0x2811: 0x00c0, + 0x2812: 0x00c0, 0x2813: 0x00c0, 0x2814: 0x00c0, 0x2815: 0x00c0, 0x2816: 0x00c0, 0x2817: 0x00c0, + 0x2818: 0x00c0, 0x2819: 0x00c0, + 0x2820: 0x00c3, 0x2821: 0x00c3, 0x2822: 0x00c3, 0x2823: 0x00c3, + 0x2824: 0x00c3, 0x2825: 0x00c3, 0x2826: 0x00c3, 0x2827: 0x00c3, 0x2828: 0x00c3, 0x2829: 0x00c3, + 0x282a: 0x00c3, 0x282b: 0x00c3, 0x282c: 0x00c3, 0x282d: 0x00c3, 0x282e: 0x00c3, 0x282f: 0x00c3, + 0x2830: 0x00c3, 0x2831: 0x00c3, 0x2832: 0x00c0, 0x2833: 0x00c0, 0x2834: 0x00c0, 0x2835: 0x00c0, + 0x2836: 0x00c0, 0x2837: 0x00c0, 0x2838: 0x0080, 0x2839: 0x0080, 0x283a: 0x0080, 0x283b: 0x00c0, + 0x283c: 0x0080, 0x283d: 0x00c0, // Block 0xa1, offset 0x2840 - 0x2840: 0x00c0, 0x2841: 0x00c0, 0x2842: 0x00c0, 0x2843: 0x00c0, 0x2844: 0x00c6, 0x2845: 0x00c3, - 0x284e: 0x0080, 0x284f: 0x0080, 0x2850: 0x00c0, 0x2851: 0x00c0, + 0x2840: 0x00c0, 0x2841: 0x00c0, 0x2842: 0x00c0, 0x2843: 0x00c0, 0x2844: 0x00c0, 0x2845: 0x00c0, + 0x2846: 0x00c0, 0x2847: 0x00c0, 0x2848: 0x00c0, 0x2849: 0x00c0, 0x284a: 0x00c0, 0x284b: 0x00c0, + 0x284c: 0x00c0, 0x284d: 0x00c0, 0x284e: 0x00c0, 0x284f: 0x00c0, 0x2850: 0x00c0, 0x2851: 0x00c0, 0x2852: 0x00c0, 0x2853: 0x00c0, 0x2854: 0x00c0, 0x2855: 0x00c0, 0x2856: 0x00c0, 0x2857: 0x00c0, - 0x2858: 0x00c0, 0x2859: 0x00c0, - 0x2860: 0x00c3, 0x2861: 0x00c3, 0x2862: 0x00c3, 0x2863: 0x00c3, - 0x2864: 0x00c3, 0x2865: 0x00c3, 0x2866: 0x00c3, 0x2867: 0x00c3, 0x2868: 0x00c3, 0x2869: 0x00c3, - 0x286a: 0x00c3, 0x286b: 0x00c3, 0x286c: 0x00c3, 0x286d: 0x00c3, 0x286e: 0x00c3, 0x286f: 0x00c3, - 0x2870: 0x00c3, 0x2871: 0x00c3, 0x2872: 0x00c0, 0x2873: 0x00c0, 0x2874: 0x00c0, 0x2875: 0x00c0, - 0x2876: 0x00c0, 0x2877: 0x00c0, 0x2878: 0x0080, 0x2879: 0x0080, 0x287a: 0x0080, 0x287b: 0x00c0, - 0x287c: 0x0080, 0x287d: 0x00c0, + 0x2858: 0x00c0, 0x2859: 0x00c0, 0x285a: 0x00c0, 0x285b: 0x00c0, 0x285c: 0x00c0, 0x285d: 0x00c0, + 0x285e: 0x00c0, 0x285f: 0x00c0, 0x2860: 0x00c0, 0x2861: 0x00c0, 0x2862: 0x00c0, 0x2863: 0x00c0, + 0x2864: 0x00c0, 0x2865: 0x00c0, 0x2866: 0x00c3, 0x2867: 0x00c3, 0x2868: 0x00c3, 0x2869: 0x00c3, + 0x286a: 0x00c3, 0x286b: 0x00c3, 0x286c: 0x00c3, 0x286d: 0x00c3, 0x286e: 0x0080, 0x286f: 0x0080, + 0x2870: 0x00c0, 0x2871: 0x00c0, 0x2872: 0x00c0, 0x2873: 0x00c0, 0x2874: 0x00c0, 0x2875: 0x00c0, + 0x2876: 0x00c0, 0x2877: 0x00c0, 0x2878: 0x00c0, 0x2879: 0x00c0, 0x287a: 0x00c0, 0x287b: 0x00c0, + 0x287c: 0x00c0, 0x287d: 0x00c0, 0x287e: 0x00c0, 0x287f: 0x00c0, // Block 0xa2, offset 0x2880 0x2880: 0x00c0, 0x2881: 0x00c0, 0x2882: 0x00c0, 0x2883: 0x00c0, 0x2884: 0x00c0, 0x2885: 0x00c0, - 0x2886: 0x00c0, 0x2887: 0x00c0, 0x2888: 0x00c0, 0x2889: 0x00c0, 0x288a: 0x00c0, 0x288b: 0x00c0, - 0x288c: 0x00c0, 0x288d: 0x00c0, 0x288e: 0x00c0, 0x288f: 0x00c0, 0x2890: 0x00c0, 0x2891: 0x00c0, - 0x2892: 0x00c0, 0x2893: 0x00c0, 0x2894: 0x00c0, 0x2895: 0x00c0, 0x2896: 0x00c0, 0x2897: 0x00c0, - 0x2898: 0x00c0, 0x2899: 0x00c0, 0x289a: 0x00c0, 0x289b: 0x00c0, 0x289c: 0x00c0, 0x289d: 0x00c0, - 0x289e: 0x00c0, 0x289f: 0x00c0, 0x28a0: 0x00c0, 0x28a1: 0x00c0, 0x28a2: 0x00c0, 0x28a3: 0x00c0, - 0x28a4: 0x00c0, 0x28a5: 0x00c0, 0x28a6: 0x00c3, 0x28a7: 0x00c3, 0x28a8: 0x00c3, 0x28a9: 0x00c3, - 0x28aa: 0x00c3, 0x28ab: 0x00c3, 0x28ac: 0x00c3, 0x28ad: 0x00c3, 0x28ae: 0x0080, 0x28af: 0x0080, - 0x28b0: 0x00c0, 0x28b1: 0x00c0, 0x28b2: 0x00c0, 0x28b3: 0x00c0, 0x28b4: 0x00c0, 0x28b5: 0x00c0, - 0x28b6: 0x00c0, 0x28b7: 0x00c0, 0x28b8: 0x00c0, 0x28b9: 0x00c0, 0x28ba: 0x00c0, 0x28bb: 0x00c0, - 0x28bc: 0x00c0, 0x28bd: 0x00c0, 0x28be: 0x00c0, 0x28bf: 0x00c0, + 0x2886: 0x00c0, 0x2887: 0x00c3, 0x2888: 0x00c3, 0x2889: 0x00c3, 0x288a: 0x00c3, 0x288b: 0x00c3, + 0x288c: 0x00c3, 0x288d: 0x00c3, 0x288e: 0x00c3, 0x288f: 0x00c3, 0x2890: 0x00c3, 0x2891: 0x00c3, + 0x2892: 0x00c0, 0x2893: 0x00c5, + 0x289f: 0x0080, 0x28a0: 0x0040, 0x28a1: 0x0040, 0x28a2: 0x0040, 0x28a3: 0x0040, + 0x28a4: 0x0040, 0x28a5: 0x0040, 0x28a6: 0x0040, 0x28a7: 0x0040, 0x28a8: 0x0040, 0x28a9: 0x0040, + 0x28aa: 0x0040, 0x28ab: 0x0040, 0x28ac: 0x0040, 0x28ad: 0x0040, 0x28ae: 0x0040, 0x28af: 0x0040, + 0x28b0: 0x0040, 0x28b1: 0x0040, 0x28b2: 0x0040, 0x28b3: 0x0040, 0x28b4: 0x0040, 0x28b5: 0x0040, + 0x28b6: 0x0040, 0x28b7: 0x0040, 0x28b8: 0x0040, 0x28b9: 0x0040, 0x28ba: 0x0040, 0x28bb: 0x0040, + 0x28bc: 0x0040, // Block 0xa3, offset 0x28c0 - 0x28c0: 0x00c0, 0x28c1: 0x00c0, 0x28c2: 0x00c0, 0x28c3: 0x00c0, 0x28c4: 0x00c0, 0x28c5: 0x00c0, - 0x28c6: 0x00c0, 0x28c7: 0x00c3, 0x28c8: 0x00c3, 0x28c9: 0x00c3, 0x28ca: 0x00c3, 0x28cb: 0x00c3, - 0x28cc: 0x00c3, 0x28cd: 0x00c3, 0x28ce: 0x00c3, 0x28cf: 0x00c3, 0x28d0: 0x00c3, 0x28d1: 0x00c3, - 0x28d2: 0x00c0, 0x28d3: 0x00c5, - 0x28df: 0x0080, 0x28e0: 0x0040, 0x28e1: 0x0040, 0x28e2: 0x0040, 0x28e3: 0x0040, - 0x28e4: 0x0040, 0x28e5: 0x0040, 0x28e6: 0x0040, 0x28e7: 0x0040, 0x28e8: 0x0040, 0x28e9: 0x0040, - 0x28ea: 0x0040, 0x28eb: 0x0040, 0x28ec: 0x0040, 0x28ed: 0x0040, 0x28ee: 0x0040, 0x28ef: 0x0040, - 0x28f0: 0x0040, 0x28f1: 0x0040, 0x28f2: 0x0040, 0x28f3: 0x0040, 0x28f4: 0x0040, 0x28f5: 0x0040, - 0x28f6: 0x0040, 0x28f7: 0x0040, 0x28f8: 0x0040, 0x28f9: 0x0040, 0x28fa: 0x0040, 0x28fb: 0x0040, - 0x28fc: 0x0040, + 0x28c0: 0x00c3, 0x28c1: 0x00c3, 0x28c2: 0x00c3, 0x28c3: 0x00c0, 0x28c4: 0x00c0, 0x28c5: 0x00c0, + 0x28c6: 0x00c0, 0x28c7: 0x00c0, 0x28c8: 0x00c0, 0x28c9: 0x00c0, 0x28ca: 0x00c0, 0x28cb: 0x00c0, + 0x28cc: 0x00c0, 0x28cd: 0x00c0, 0x28ce: 0x00c0, 0x28cf: 0x00c0, 0x28d0: 0x00c0, 0x28d1: 0x00c0, + 0x28d2: 0x00c0, 0x28d3: 0x00c0, 0x28d4: 0x00c0, 0x28d5: 0x00c0, 0x28d6: 0x00c0, 0x28d7: 0x00c0, + 0x28d8: 0x00c0, 0x28d9: 0x00c0, 0x28da: 0x00c0, 0x28db: 0x00c0, 0x28dc: 0x00c0, 0x28dd: 0x00c0, + 0x28de: 0x00c0, 0x28df: 0x00c0, 0x28e0: 0x00c0, 0x28e1: 0x00c0, 0x28e2: 0x00c0, 0x28e3: 0x00c0, + 0x28e4: 0x00c0, 0x28e5: 0x00c0, 0x28e6: 0x00c0, 0x28e7: 0x00c0, 0x28e8: 0x00c0, 0x28e9: 0x00c0, + 0x28ea: 0x00c0, 0x28eb: 0x00c0, 0x28ec: 0x00c0, 0x28ed: 0x00c0, 0x28ee: 0x00c0, 0x28ef: 0x00c0, + 0x28f0: 0x00c0, 0x28f1: 0x00c0, 0x28f2: 0x00c0, 0x28f3: 0x00c3, 0x28f4: 0x00c0, 0x28f5: 0x00c0, + 0x28f6: 0x00c3, 0x28f7: 0x00c3, 0x28f8: 0x00c3, 0x28f9: 0x00c3, 0x28fa: 0x00c0, 0x28fb: 0x00c0, + 0x28fc: 0x00c3, 0x28fd: 0x00c0, 0x28fe: 0x00c0, 0x28ff: 0x00c0, // Block 0xa4, offset 0x2900 - 0x2900: 0x00c3, 0x2901: 0x00c3, 0x2902: 0x00c3, 0x2903: 0x00c0, 0x2904: 0x00c0, 0x2905: 0x00c0, - 0x2906: 0x00c0, 0x2907: 0x00c0, 0x2908: 0x00c0, 0x2909: 0x00c0, 0x290a: 0x00c0, 0x290b: 0x00c0, - 0x290c: 0x00c0, 0x290d: 0x00c0, 0x290e: 0x00c0, 0x290f: 0x00c0, 0x2910: 0x00c0, 0x2911: 0x00c0, + 0x2900: 0x00c5, 0x2901: 0x0080, 0x2902: 0x0080, 0x2903: 0x0080, 0x2904: 0x0080, 0x2905: 0x0080, + 0x2906: 0x0080, 0x2907: 0x0080, 0x2908: 0x0080, 0x2909: 0x0080, 0x290a: 0x0080, 0x290b: 0x0080, + 0x290c: 0x0080, 0x290d: 0x0080, 0x290f: 0x00c0, 0x2910: 0x00c0, 0x2911: 0x00c0, 0x2912: 0x00c0, 0x2913: 0x00c0, 0x2914: 0x00c0, 0x2915: 0x00c0, 0x2916: 0x00c0, 0x2917: 0x00c0, - 0x2918: 0x00c0, 0x2919: 0x00c0, 0x291a: 0x00c0, 0x291b: 0x00c0, 0x291c: 0x00c0, 0x291d: 0x00c0, - 0x291e: 0x00c0, 0x291f: 0x00c0, 0x2920: 0x00c0, 0x2921: 0x00c0, 0x2922: 0x00c0, 0x2923: 0x00c0, - 0x2924: 0x00c0, 0x2925: 0x00c0, 0x2926: 0x00c0, 0x2927: 0x00c0, 0x2928: 0x00c0, 0x2929: 0x00c0, + 0x2918: 0x00c0, 0x2919: 0x00c0, + 0x291e: 0x0080, 0x291f: 0x0080, 0x2920: 0x00c0, 0x2921: 0x00c0, 0x2922: 0x00c0, 0x2923: 0x00c0, + 0x2924: 0x00c0, 0x2925: 0x00c3, 0x2926: 0x00c0, 0x2927: 0x00c0, 0x2928: 0x00c0, 0x2929: 0x00c0, 0x292a: 0x00c0, 0x292b: 0x00c0, 0x292c: 0x00c0, 0x292d: 0x00c0, 0x292e: 0x00c0, 0x292f: 0x00c0, - 0x2930: 0x00c0, 0x2931: 0x00c0, 0x2932: 0x00c0, 0x2933: 0x00c3, 0x2934: 0x00c0, 0x2935: 0x00c0, - 0x2936: 0x00c3, 0x2937: 0x00c3, 0x2938: 0x00c3, 0x2939: 0x00c3, 0x293a: 0x00c0, 0x293b: 0x00c0, - 0x293c: 0x00c3, 0x293d: 0x00c0, 0x293e: 0x00c0, 0x293f: 0x00c0, + 0x2930: 0x00c0, 0x2931: 0x00c0, 0x2932: 0x00c0, 0x2933: 0x00c0, 0x2934: 0x00c0, 0x2935: 0x00c0, + 0x2936: 0x00c0, 0x2937: 0x00c0, 0x2938: 0x00c0, 0x2939: 0x00c0, 0x293a: 0x00c0, 0x293b: 0x00c0, + 0x293c: 0x00c0, 0x293d: 0x00c0, 0x293e: 0x00c0, // Block 0xa5, offset 0x2940 - 0x2940: 0x00c5, 0x2941: 0x0080, 0x2942: 0x0080, 0x2943: 0x0080, 0x2944: 0x0080, 0x2945: 0x0080, - 0x2946: 0x0080, 0x2947: 0x0080, 0x2948: 0x0080, 0x2949: 0x0080, 0x294a: 0x0080, 0x294b: 0x0080, - 0x294c: 0x0080, 0x294d: 0x0080, 0x294f: 0x00c0, 0x2950: 0x00c0, 0x2951: 0x00c0, + 0x2940: 0x00c0, 0x2941: 0x00c0, 0x2942: 0x00c0, 0x2943: 0x00c0, 0x2944: 0x00c0, 0x2945: 0x00c0, + 0x2946: 0x00c0, 0x2947: 0x00c0, 0x2948: 0x00c0, 0x2949: 0x00c0, 0x294a: 0x00c0, 0x294b: 0x00c0, + 0x294c: 0x00c0, 0x294d: 0x00c0, 0x294e: 0x00c0, 0x294f: 0x00c0, 0x2950: 0x00c0, 0x2951: 0x00c0, 0x2952: 0x00c0, 0x2953: 0x00c0, 0x2954: 0x00c0, 0x2955: 0x00c0, 0x2956: 0x00c0, 0x2957: 0x00c0, - 0x2958: 0x00c0, 0x2959: 0x00c0, - 0x295e: 0x0080, 0x295f: 0x0080, 0x2960: 0x00c0, 0x2961: 0x00c0, 0x2962: 0x00c0, 0x2963: 0x00c0, - 0x2964: 0x00c0, 0x2965: 0x00c3, 0x2966: 0x00c0, 0x2967: 0x00c0, 0x2968: 0x00c0, 0x2969: 0x00c0, - 0x296a: 0x00c0, 0x296b: 0x00c0, 0x296c: 0x00c0, 0x296d: 0x00c0, 0x296e: 0x00c0, 0x296f: 0x00c0, - 0x2970: 0x00c0, 0x2971: 0x00c0, 0x2972: 0x00c0, 0x2973: 0x00c0, 0x2974: 0x00c0, 0x2975: 0x00c0, - 0x2976: 0x00c0, 0x2977: 0x00c0, 0x2978: 0x00c0, 0x2979: 0x00c0, 0x297a: 0x00c0, 0x297b: 0x00c0, - 0x297c: 0x00c0, 0x297d: 0x00c0, 0x297e: 0x00c0, + 0x2958: 0x00c0, 0x2959: 0x00c0, 0x295a: 0x00c0, 0x295b: 0x00c0, 0x295c: 0x00c0, 0x295d: 0x00c0, + 0x295e: 0x00c0, 0x295f: 0x00c0, 0x2960: 0x00c0, 0x2961: 0x00c0, 0x2962: 0x00c0, 0x2963: 0x00c0, + 0x2964: 0x00c0, 0x2965: 0x00c0, 0x2966: 0x00c0, 0x2967: 0x00c0, 0x2968: 0x00c0, 0x2969: 0x00c3, + 0x296a: 0x00c3, 0x296b: 0x00c3, 0x296c: 0x00c3, 0x296d: 0x00c3, 0x296e: 0x00c3, 0x296f: 0x00c0, + 0x2970: 0x00c0, 0x2971: 0x00c3, 0x2972: 0x00c3, 0x2973: 0x00c0, 0x2974: 0x00c0, 0x2975: 0x00c3, + 0x2976: 0x00c3, // Block 0xa6, offset 0x2980 - 0x2980: 0x00c0, 0x2981: 0x00c0, 0x2982: 0x00c0, 0x2983: 0x00c0, 0x2984: 0x00c0, 0x2985: 0x00c0, + 0x2980: 0x00c0, 0x2981: 0x00c0, 0x2982: 0x00c0, 0x2983: 0x00c3, 0x2984: 0x00c0, 0x2985: 0x00c0, 0x2986: 0x00c0, 0x2987: 0x00c0, 0x2988: 0x00c0, 0x2989: 0x00c0, 0x298a: 0x00c0, 0x298b: 0x00c0, - 0x298c: 0x00c0, 0x298d: 0x00c0, 0x298e: 0x00c0, 0x298f: 0x00c0, 0x2990: 0x00c0, 0x2991: 0x00c0, + 0x298c: 0x00c3, 0x298d: 0x00c0, 0x2990: 0x00c0, 0x2991: 0x00c0, 0x2992: 0x00c0, 0x2993: 0x00c0, 0x2994: 0x00c0, 0x2995: 0x00c0, 0x2996: 0x00c0, 0x2997: 0x00c0, - 0x2998: 0x00c0, 0x2999: 0x00c0, 0x299a: 0x00c0, 0x299b: 0x00c0, 0x299c: 0x00c0, 0x299d: 0x00c0, - 0x299e: 0x00c0, 0x299f: 0x00c0, 0x29a0: 0x00c0, 0x29a1: 0x00c0, 0x29a2: 0x00c0, 0x29a3: 0x00c0, - 0x29a4: 0x00c0, 0x29a5: 0x00c0, 0x29a6: 0x00c0, 0x29a7: 0x00c0, 0x29a8: 0x00c0, 0x29a9: 0x00c3, - 0x29aa: 0x00c3, 0x29ab: 0x00c3, 0x29ac: 0x00c3, 0x29ad: 0x00c3, 0x29ae: 0x00c3, 0x29af: 0x00c0, - 0x29b0: 0x00c0, 0x29b1: 0x00c3, 0x29b2: 0x00c3, 0x29b3: 0x00c0, 0x29b4: 0x00c0, 0x29b5: 0x00c3, - 0x29b6: 0x00c3, + 0x2998: 0x00c0, 0x2999: 0x00c0, 0x299c: 0x0080, 0x299d: 0x0080, + 0x299e: 0x0080, 0x299f: 0x0080, 0x29a0: 0x00c0, 0x29a1: 0x00c0, 0x29a2: 0x00c0, 0x29a3: 0x00c0, + 0x29a4: 0x00c0, 0x29a5: 0x00c0, 0x29a6: 0x00c0, 0x29a7: 0x00c0, 0x29a8: 0x00c0, 0x29a9: 0x00c0, + 0x29aa: 0x00c0, 0x29ab: 0x00c0, 0x29ac: 0x00c0, 0x29ad: 0x00c0, 0x29ae: 0x00c0, 0x29af: 0x00c0, + 0x29b0: 0x00c0, 0x29b1: 0x00c0, 0x29b2: 0x00c0, 0x29b3: 0x00c0, 0x29b4: 0x00c0, 0x29b5: 0x00c0, + 0x29b6: 0x00c0, 0x29b7: 0x0080, 0x29b8: 0x0080, 0x29b9: 0x0080, 0x29ba: 0x00c0, 0x29bb: 0x00c0, + 0x29bc: 0x00c3, 0x29bd: 0x00c0, 0x29be: 0x00c0, 0x29bf: 0x00c0, // Block 0xa7, offset 0x29c0 - 0x29c0: 0x00c0, 0x29c1: 0x00c0, 0x29c2: 0x00c0, 0x29c3: 0x00c3, 0x29c4: 0x00c0, 0x29c5: 0x00c0, + 0x29c0: 0x00c0, 0x29c1: 0x00c0, 0x29c2: 0x00c0, 0x29c3: 0x00c0, 0x29c4: 0x00c0, 0x29c5: 0x00c0, 0x29c6: 0x00c0, 0x29c7: 0x00c0, 0x29c8: 0x00c0, 0x29c9: 0x00c0, 0x29ca: 0x00c0, 0x29cb: 0x00c0, - 0x29cc: 0x00c3, 0x29cd: 0x00c0, 0x29d0: 0x00c0, 0x29d1: 0x00c0, + 0x29cc: 0x00c0, 0x29cd: 0x00c0, 0x29ce: 0x00c0, 0x29cf: 0x00c0, 0x29d0: 0x00c0, 0x29d1: 0x00c0, 0x29d2: 0x00c0, 0x29d3: 0x00c0, 0x29d4: 0x00c0, 0x29d5: 0x00c0, 0x29d6: 0x00c0, 0x29d7: 0x00c0, - 0x29d8: 0x00c0, 0x29d9: 0x00c0, 0x29dc: 0x0080, 0x29dd: 0x0080, - 0x29de: 0x0080, 0x29df: 0x0080, 0x29e0: 0x00c0, 0x29e1: 0x00c0, 0x29e2: 0x00c0, 0x29e3: 0x00c0, + 0x29d8: 0x00c0, 0x29d9: 0x00c0, 0x29da: 0x00c0, 0x29db: 0x00c0, 0x29dc: 0x00c0, 0x29dd: 0x00c0, + 0x29de: 0x00c0, 0x29df: 0x00c0, 0x29e0: 0x00c0, 0x29e1: 0x00c0, 0x29e2: 0x00c0, 0x29e3: 0x00c0, 0x29e4: 0x00c0, 0x29e5: 0x00c0, 0x29e6: 0x00c0, 0x29e7: 0x00c0, 0x29e8: 0x00c0, 0x29e9: 0x00c0, 0x29ea: 0x00c0, 0x29eb: 0x00c0, 0x29ec: 0x00c0, 0x29ed: 0x00c0, 0x29ee: 0x00c0, 0x29ef: 0x00c0, - 0x29f0: 0x00c0, 0x29f1: 0x00c0, 0x29f2: 0x00c0, 0x29f3: 0x00c0, 0x29f4: 0x00c0, 0x29f5: 0x00c0, - 0x29f6: 0x00c0, 0x29f7: 0x0080, 0x29f8: 0x0080, 0x29f9: 0x0080, 0x29fa: 0x00c0, 0x29fb: 0x00c0, - 0x29fc: 0x00c3, 0x29fd: 0x00c0, 0x29fe: 0x00c0, 0x29ff: 0x00c0, + 0x29f0: 0x00c3, 0x29f1: 0x00c0, 0x29f2: 0x00c3, 0x29f3: 0x00c3, 0x29f4: 0x00c3, 0x29f5: 0x00c0, + 0x29f6: 0x00c0, 0x29f7: 0x00c3, 0x29f8: 0x00c3, 0x29f9: 0x00c0, 0x29fa: 0x00c0, 0x29fb: 0x00c0, + 0x29fc: 0x00c0, 0x29fd: 0x00c0, 0x29fe: 0x00c3, 0x29ff: 0x00c3, // Block 0xa8, offset 0x2a00 - 0x2a00: 0x00c0, 0x2a01: 0x00c0, 0x2a02: 0x00c0, 0x2a03: 0x00c0, 0x2a04: 0x00c0, 0x2a05: 0x00c0, - 0x2a06: 0x00c0, 0x2a07: 0x00c0, 0x2a08: 0x00c0, 0x2a09: 0x00c0, 0x2a0a: 0x00c0, 0x2a0b: 0x00c0, - 0x2a0c: 0x00c0, 0x2a0d: 0x00c0, 0x2a0e: 0x00c0, 0x2a0f: 0x00c0, 0x2a10: 0x00c0, 0x2a11: 0x00c0, - 0x2a12: 0x00c0, 0x2a13: 0x00c0, 0x2a14: 0x00c0, 0x2a15: 0x00c0, 0x2a16: 0x00c0, 0x2a17: 0x00c0, - 0x2a18: 0x00c0, 0x2a19: 0x00c0, 0x2a1a: 0x00c0, 0x2a1b: 0x00c0, 0x2a1c: 0x00c0, 0x2a1d: 0x00c0, - 0x2a1e: 0x00c0, 0x2a1f: 0x00c0, 0x2a20: 0x00c0, 0x2a21: 0x00c0, 0x2a22: 0x00c0, 0x2a23: 0x00c0, + 0x2a00: 0x00c0, 0x2a01: 0x00c3, 0x2a02: 0x00c0, + 0x2a1b: 0x00c0, 0x2a1c: 0x00c0, 0x2a1d: 0x00c0, + 0x2a1e: 0x0080, 0x2a1f: 0x0080, 0x2a20: 0x00c0, 0x2a21: 0x00c0, 0x2a22: 0x00c0, 0x2a23: 0x00c0, 0x2a24: 0x00c0, 0x2a25: 0x00c0, 0x2a26: 0x00c0, 0x2a27: 0x00c0, 0x2a28: 0x00c0, 0x2a29: 0x00c0, - 0x2a2a: 0x00c0, 0x2a2b: 0x00c0, 0x2a2c: 0x00c0, 0x2a2d: 0x00c0, 0x2a2e: 0x00c0, 0x2a2f: 0x00c0, - 0x2a30: 0x00c3, 0x2a31: 0x00c0, 0x2a32: 0x00c3, 0x2a33: 0x00c3, 0x2a34: 0x00c3, 0x2a35: 0x00c0, - 0x2a36: 0x00c0, 0x2a37: 0x00c3, 0x2a38: 0x00c3, 0x2a39: 0x00c0, 0x2a3a: 0x00c0, 0x2a3b: 0x00c0, - 0x2a3c: 0x00c0, 0x2a3d: 0x00c0, 0x2a3e: 0x00c3, 0x2a3f: 0x00c3, + 0x2a2a: 0x00c0, 0x2a2b: 0x00c0, 0x2a2c: 0x00c3, 0x2a2d: 0x00c3, 0x2a2e: 0x00c0, 0x2a2f: 0x00c0, + 0x2a30: 0x0080, 0x2a31: 0x0080, 0x2a32: 0x00c0, 0x2a33: 0x00c0, 0x2a34: 0x00c0, 0x2a35: 0x00c0, + 0x2a36: 0x00c6, // Block 0xa9, offset 0x2a40 - 0x2a40: 0x00c0, 0x2a41: 0x00c3, 0x2a42: 0x00c0, - 0x2a5b: 0x00c0, 0x2a5c: 0x00c0, 0x2a5d: 0x00c0, - 0x2a5e: 0x0080, 0x2a5f: 0x0080, 0x2a60: 0x00c0, 0x2a61: 0x00c0, 0x2a62: 0x00c0, 0x2a63: 0x00c0, - 0x2a64: 0x00c0, 0x2a65: 0x00c0, 0x2a66: 0x00c0, 0x2a67: 0x00c0, 0x2a68: 0x00c0, 0x2a69: 0x00c0, - 0x2a6a: 0x00c0, 0x2a6b: 0x00c0, 0x2a6c: 0x00c3, 0x2a6d: 0x00c3, 0x2a6e: 0x00c0, 0x2a6f: 0x00c0, - 0x2a70: 0x0080, 0x2a71: 0x0080, 0x2a72: 0x00c0, 0x2a73: 0x00c0, 0x2a74: 0x00c0, 0x2a75: 0x00c0, - 0x2a76: 0x00c6, + 0x2a41: 0x00c0, 0x2a42: 0x00c0, 0x2a43: 0x00c0, 0x2a44: 0x00c0, 0x2a45: 0x00c0, + 0x2a46: 0x00c0, 0x2a49: 0x00c0, 0x2a4a: 0x00c0, 0x2a4b: 0x00c0, + 0x2a4c: 0x00c0, 0x2a4d: 0x00c0, 0x2a4e: 0x00c0, 0x2a51: 0x00c0, + 0x2a52: 0x00c0, 0x2a53: 0x00c0, 0x2a54: 0x00c0, 0x2a55: 0x00c0, 0x2a56: 0x00c0, + 0x2a60: 0x00c0, 0x2a61: 0x00c0, 0x2a62: 0x00c0, 0x2a63: 0x00c0, + 0x2a64: 0x00c0, 0x2a65: 0x00c0, 0x2a66: 0x00c0, 0x2a68: 0x00c0, 0x2a69: 0x00c0, + 0x2a6a: 0x00c0, 0x2a6b: 0x00c0, 0x2a6c: 0x00c0, 0x2a6d: 0x00c0, 0x2a6e: 0x00c0, + 0x2a70: 0x00c0, 0x2a71: 0x00c0, 0x2a72: 0x00c0, 0x2a73: 0x00c0, 0x2a74: 0x00c0, 0x2a75: 0x00c0, + 0x2a76: 0x00c0, 0x2a77: 0x00c0, 0x2a78: 0x00c0, 0x2a79: 0x00c0, 0x2a7a: 0x00c0, 0x2a7b: 0x00c0, + 0x2a7c: 0x00c0, 0x2a7d: 0x00c0, 0x2a7e: 0x00c0, 0x2a7f: 0x00c0, // Block 0xaa, offset 0x2a80 - 0x2a81: 0x00c0, 0x2a82: 0x00c0, 0x2a83: 0x00c0, 0x2a84: 0x00c0, 0x2a85: 0x00c0, - 0x2a86: 0x00c0, 0x2a89: 0x00c0, 0x2a8a: 0x00c0, 0x2a8b: 0x00c0, - 0x2a8c: 0x00c0, 0x2a8d: 0x00c0, 0x2a8e: 0x00c0, 0x2a91: 0x00c0, - 0x2a92: 0x00c0, 0x2a93: 0x00c0, 0x2a94: 0x00c0, 0x2a95: 0x00c0, 0x2a96: 0x00c0, - 0x2aa0: 0x00c0, 0x2aa1: 0x00c0, 0x2aa2: 0x00c0, 0x2aa3: 0x00c0, - 0x2aa4: 0x00c0, 0x2aa5: 0x00c0, 0x2aa6: 0x00c0, 0x2aa8: 0x00c0, 0x2aa9: 0x00c0, - 0x2aaa: 0x00c0, 0x2aab: 0x00c0, 0x2aac: 0x00c0, 0x2aad: 0x00c0, 0x2aae: 0x00c0, + 0x2a80: 0x00c0, 0x2a81: 0x00c0, 0x2a82: 0x00c0, 0x2a83: 0x00c0, 0x2a84: 0x00c0, 0x2a85: 0x00c0, + 0x2a86: 0x00c0, 0x2a87: 0x00c0, 0x2a88: 0x00c0, 0x2a89: 0x00c0, 0x2a8a: 0x00c0, 0x2a8b: 0x00c0, + 0x2a8c: 0x00c0, 0x2a8d: 0x00c0, 0x2a8e: 0x00c0, 0x2a8f: 0x00c0, 0x2a90: 0x00c0, 0x2a91: 0x00c0, + 0x2a92: 0x00c0, 0x2a93: 0x00c0, 0x2a94: 0x00c0, 0x2a95: 0x00c0, 0x2a96: 0x00c0, 0x2a97: 0x00c0, + 0x2a98: 0x00c0, 0x2a99: 0x00c0, 0x2a9a: 0x00c0, 0x2a9b: 0x0080, 0x2a9c: 0x0080, 0x2a9d: 0x0080, + 0x2a9e: 0x0080, 0x2a9f: 0x0080, 0x2aa0: 0x00c0, 0x2aa1: 0x00c0, 0x2aa2: 0x00c0, 0x2aa3: 0x00c0, + 0x2aa4: 0x00c0, 0x2aa5: 0x00c8, 0x2ab0: 0x00c0, 0x2ab1: 0x00c0, 0x2ab2: 0x00c0, 0x2ab3: 0x00c0, 0x2ab4: 0x00c0, 0x2ab5: 0x00c0, 0x2ab6: 0x00c0, 0x2ab7: 0x00c0, 0x2ab8: 0x00c0, 0x2ab9: 0x00c0, 0x2aba: 0x00c0, 0x2abb: 0x00c0, 0x2abc: 0x00c0, 0x2abd: 0x00c0, 0x2abe: 0x00c0, 0x2abf: 0x00c0, @@ -2089,12 +2098,12 @@ var derivedPropertiesValues = [20736]uint8{ 0x2ac6: 0x00c0, 0x2ac7: 0x00c0, 0x2ac8: 0x00c0, 0x2ac9: 0x00c0, 0x2aca: 0x00c0, 0x2acb: 0x00c0, 0x2acc: 0x00c0, 0x2acd: 0x00c0, 0x2ace: 0x00c0, 0x2acf: 0x00c0, 0x2ad0: 0x00c0, 0x2ad1: 0x00c0, 0x2ad2: 0x00c0, 0x2ad3: 0x00c0, 0x2ad4: 0x00c0, 0x2ad5: 0x00c0, 0x2ad6: 0x00c0, 0x2ad7: 0x00c0, - 0x2ad8: 0x00c0, 0x2ad9: 0x00c0, 0x2ada: 0x00c0, 0x2adb: 0x0080, 0x2adc: 0x0080, 0x2add: 0x0080, - 0x2ade: 0x0080, 0x2adf: 0x0080, 0x2ae0: 0x00c0, 0x2ae1: 0x00c0, 0x2ae2: 0x00c0, 0x2ae3: 0x00c0, - 0x2ae4: 0x00c0, 0x2ae5: 0x00c8, + 0x2ad8: 0x00c0, 0x2ad9: 0x00c0, 0x2ada: 0x00c0, 0x2adb: 0x00c0, 0x2adc: 0x00c0, 0x2add: 0x00c0, + 0x2ade: 0x00c0, 0x2adf: 0x00c0, 0x2ae0: 0x00c0, 0x2ae1: 0x00c0, 0x2ae2: 0x00c0, 0x2ae3: 0x00c0, + 0x2ae4: 0x00c0, 0x2ae5: 0x00c3, 0x2ae6: 0x00c0, 0x2ae7: 0x00c0, 0x2ae8: 0x00c3, 0x2ae9: 0x00c0, + 0x2aea: 0x00c0, 0x2aeb: 0x0080, 0x2aec: 0x00c0, 0x2aed: 0x00c6, 0x2af0: 0x00c0, 0x2af1: 0x00c0, 0x2af2: 0x00c0, 0x2af3: 0x00c0, 0x2af4: 0x00c0, 0x2af5: 0x00c0, - 0x2af6: 0x00c0, 0x2af7: 0x00c0, 0x2af8: 0x00c0, 0x2af9: 0x00c0, 0x2afa: 0x00c0, 0x2afb: 0x00c0, - 0x2afc: 0x00c0, 0x2afd: 0x00c0, 0x2afe: 0x00c0, 0x2aff: 0x00c0, + 0x2af6: 0x00c0, 0x2af7: 0x00c0, 0x2af8: 0x00c0, 0x2af9: 0x00c0, // Block 0xac, offset 0x2b00 0x2b00: 0x00c0, 0x2b01: 0x00c0, 0x2b02: 0x00c0, 0x2b03: 0x00c0, 0x2b04: 0x00c0, 0x2b05: 0x00c0, 0x2b06: 0x00c0, 0x2b07: 0x00c0, 0x2b08: 0x00c0, 0x2b09: 0x00c0, 0x2b0a: 0x00c0, 0x2b0b: 0x00c0, @@ -2102,40 +2111,41 @@ var derivedPropertiesValues = [20736]uint8{ 0x2b12: 0x00c0, 0x2b13: 0x00c0, 0x2b14: 0x00c0, 0x2b15: 0x00c0, 0x2b16: 0x00c0, 0x2b17: 0x00c0, 0x2b18: 0x00c0, 0x2b19: 0x00c0, 0x2b1a: 0x00c0, 0x2b1b: 0x00c0, 0x2b1c: 0x00c0, 0x2b1d: 0x00c0, 0x2b1e: 0x00c0, 0x2b1f: 0x00c0, 0x2b20: 0x00c0, 0x2b21: 0x00c0, 0x2b22: 0x00c0, 0x2b23: 0x00c0, - 0x2b24: 0x00c0, 0x2b25: 0x00c3, 0x2b26: 0x00c0, 0x2b27: 0x00c0, 0x2b28: 0x00c3, 0x2b29: 0x00c0, - 0x2b2a: 0x00c0, 0x2b2b: 0x0080, 0x2b2c: 0x00c0, 0x2b2d: 0x00c6, - 0x2b30: 0x00c0, 0x2b31: 0x00c0, 0x2b32: 0x00c0, 0x2b33: 0x00c0, 0x2b34: 0x00c0, 0x2b35: 0x00c0, - 0x2b36: 0x00c0, 0x2b37: 0x00c0, 0x2b38: 0x00c0, 0x2b39: 0x00c0, + 0x2b30: 0x0040, 0x2b31: 0x0040, 0x2b32: 0x0040, 0x2b33: 0x0040, 0x2b34: 0x0040, 0x2b35: 0x0040, + 0x2b36: 0x0040, 0x2b37: 0x0040, 0x2b38: 0x0040, 0x2b39: 0x0040, 0x2b3a: 0x0040, 0x2b3b: 0x0040, + 0x2b3c: 0x0040, 0x2b3d: 0x0040, 0x2b3e: 0x0040, 0x2b3f: 0x0040, // Block 0xad, offset 0x2b40 - 0x2b40: 0x00c0, 0x2b41: 0x00c0, 0x2b42: 0x00c0, 0x2b43: 0x00c0, 0x2b44: 0x00c0, 0x2b45: 0x00c0, - 0x2b46: 0x00c0, 0x2b47: 0x00c0, 0x2b48: 0x00c0, 0x2b49: 0x00c0, 0x2b4a: 0x00c0, 0x2b4b: 0x00c0, - 0x2b4c: 0x00c0, 0x2b4d: 0x00c0, 0x2b4e: 0x00c0, 0x2b4f: 0x00c0, 0x2b50: 0x00c0, 0x2b51: 0x00c0, - 0x2b52: 0x00c0, 0x2b53: 0x00c0, 0x2b54: 0x00c0, 0x2b55: 0x00c0, 0x2b56: 0x00c0, 0x2b57: 0x00c0, - 0x2b58: 0x00c0, 0x2b59: 0x00c0, 0x2b5a: 0x00c0, 0x2b5b: 0x00c0, 0x2b5c: 0x00c0, 0x2b5d: 0x00c0, - 0x2b5e: 0x00c0, 0x2b5f: 0x00c0, 0x2b60: 0x00c0, 0x2b61: 0x00c0, 0x2b62: 0x00c0, 0x2b63: 0x00c0, + 0x2b40: 0x0040, 0x2b41: 0x0040, 0x2b42: 0x0040, 0x2b43: 0x0040, 0x2b44: 0x0040, 0x2b45: 0x0040, + 0x2b46: 0x0040, 0x2b4b: 0x0040, + 0x2b4c: 0x0040, 0x2b4d: 0x0040, 0x2b4e: 0x0040, 0x2b4f: 0x0040, 0x2b50: 0x0040, 0x2b51: 0x0040, + 0x2b52: 0x0040, 0x2b53: 0x0040, 0x2b54: 0x0040, 0x2b55: 0x0040, 0x2b56: 0x0040, 0x2b57: 0x0040, + 0x2b58: 0x0040, 0x2b59: 0x0040, 0x2b5a: 0x0040, 0x2b5b: 0x0040, 0x2b5c: 0x0040, 0x2b5d: 0x0040, + 0x2b5e: 0x0040, 0x2b5f: 0x0040, 0x2b60: 0x0040, 0x2b61: 0x0040, 0x2b62: 0x0040, 0x2b63: 0x0040, + 0x2b64: 0x0040, 0x2b65: 0x0040, 0x2b66: 0x0040, 0x2b67: 0x0040, 0x2b68: 0x0040, 0x2b69: 0x0040, + 0x2b6a: 0x0040, 0x2b6b: 0x0040, 0x2b6c: 0x0040, 0x2b6d: 0x0040, 0x2b6e: 0x0040, 0x2b6f: 0x0040, 0x2b70: 0x0040, 0x2b71: 0x0040, 0x2b72: 0x0040, 0x2b73: 0x0040, 0x2b74: 0x0040, 0x2b75: 0x0040, 0x2b76: 0x0040, 0x2b77: 0x0040, 0x2b78: 0x0040, 0x2b79: 0x0040, 0x2b7a: 0x0040, 0x2b7b: 0x0040, - 0x2b7c: 0x0040, 0x2b7d: 0x0040, 0x2b7e: 0x0040, 0x2b7f: 0x0040, // Block 0xae, offset 0x2b80 - 0x2b80: 0x0040, 0x2b81: 0x0040, 0x2b82: 0x0040, 0x2b83: 0x0040, 0x2b84: 0x0040, 0x2b85: 0x0040, - 0x2b86: 0x0040, 0x2b8b: 0x0040, - 0x2b8c: 0x0040, 0x2b8d: 0x0040, 0x2b8e: 0x0040, 0x2b8f: 0x0040, 0x2b90: 0x0040, 0x2b91: 0x0040, - 0x2b92: 0x0040, 0x2b93: 0x0040, 0x2b94: 0x0040, 0x2b95: 0x0040, 0x2b96: 0x0040, 0x2b97: 0x0040, - 0x2b98: 0x0040, 0x2b99: 0x0040, 0x2b9a: 0x0040, 0x2b9b: 0x0040, 0x2b9c: 0x0040, 0x2b9d: 0x0040, - 0x2b9e: 0x0040, 0x2b9f: 0x0040, 0x2ba0: 0x0040, 0x2ba1: 0x0040, 0x2ba2: 0x0040, 0x2ba3: 0x0040, - 0x2ba4: 0x0040, 0x2ba5: 0x0040, 0x2ba6: 0x0040, 0x2ba7: 0x0040, 0x2ba8: 0x0040, 0x2ba9: 0x0040, - 0x2baa: 0x0040, 0x2bab: 0x0040, 0x2bac: 0x0040, 0x2bad: 0x0040, 0x2bae: 0x0040, 0x2baf: 0x0040, - 0x2bb0: 0x0040, 0x2bb1: 0x0040, 0x2bb2: 0x0040, 0x2bb3: 0x0040, 0x2bb4: 0x0040, 0x2bb5: 0x0040, - 0x2bb6: 0x0040, 0x2bb7: 0x0040, 0x2bb8: 0x0040, 0x2bb9: 0x0040, 0x2bba: 0x0040, 0x2bbb: 0x0040, + 0x2b80: 0x008c, 0x2b81: 0x008c, 0x2b82: 0x008c, 0x2b83: 0x008c, 0x2b84: 0x008c, 0x2b85: 0x008c, + 0x2b86: 0x008c, 0x2b87: 0x008c, 0x2b88: 0x008c, 0x2b89: 0x008c, 0x2b8a: 0x008c, 0x2b8b: 0x008c, + 0x2b8c: 0x008c, 0x2b8d: 0x008c, 0x2b8e: 0x00cc, 0x2b8f: 0x00cc, 0x2b90: 0x008c, 0x2b91: 0x00cc, + 0x2b92: 0x008c, 0x2b93: 0x00cc, 0x2b94: 0x00cc, 0x2b95: 0x008c, 0x2b96: 0x008c, 0x2b97: 0x008c, + 0x2b98: 0x008c, 0x2b99: 0x008c, 0x2b9a: 0x008c, 0x2b9b: 0x008c, 0x2b9c: 0x008c, 0x2b9d: 0x008c, + 0x2b9e: 0x008c, 0x2b9f: 0x00cc, 0x2ba0: 0x008c, 0x2ba1: 0x00cc, 0x2ba2: 0x008c, 0x2ba3: 0x00cc, + 0x2ba4: 0x00cc, 0x2ba5: 0x008c, 0x2ba6: 0x008c, 0x2ba7: 0x00cc, 0x2ba8: 0x00cc, 0x2ba9: 0x00cc, + 0x2baa: 0x008c, 0x2bab: 0x008c, 0x2bac: 0x008c, 0x2bad: 0x008c, 0x2bae: 0x008c, 0x2baf: 0x008c, + 0x2bb0: 0x008c, 0x2bb1: 0x008c, 0x2bb2: 0x008c, 0x2bb3: 0x008c, 0x2bb4: 0x008c, 0x2bb5: 0x008c, + 0x2bb6: 0x008c, 0x2bb7: 0x008c, 0x2bb8: 0x008c, 0x2bb9: 0x008c, 0x2bba: 0x008c, 0x2bbb: 0x008c, + 0x2bbc: 0x008c, 0x2bbd: 0x008c, 0x2bbe: 0x008c, 0x2bbf: 0x008c, // Block 0xaf, offset 0x2bc0 0x2bc0: 0x008c, 0x2bc1: 0x008c, 0x2bc2: 0x008c, 0x2bc3: 0x008c, 0x2bc4: 0x008c, 0x2bc5: 0x008c, 0x2bc6: 0x008c, 0x2bc7: 0x008c, 0x2bc8: 0x008c, 0x2bc9: 0x008c, 0x2bca: 0x008c, 0x2bcb: 0x008c, - 0x2bcc: 0x008c, 0x2bcd: 0x008c, 0x2bce: 0x00cc, 0x2bcf: 0x00cc, 0x2bd0: 0x008c, 0x2bd1: 0x00cc, - 0x2bd2: 0x008c, 0x2bd3: 0x00cc, 0x2bd4: 0x00cc, 0x2bd5: 0x008c, 0x2bd6: 0x008c, 0x2bd7: 0x008c, + 0x2bcc: 0x008c, 0x2bcd: 0x008c, 0x2bce: 0x008c, 0x2bcf: 0x008c, 0x2bd0: 0x008c, 0x2bd1: 0x008c, + 0x2bd2: 0x008c, 0x2bd3: 0x008c, 0x2bd4: 0x008c, 0x2bd5: 0x008c, 0x2bd6: 0x008c, 0x2bd7: 0x008c, 0x2bd8: 0x008c, 0x2bd9: 0x008c, 0x2bda: 0x008c, 0x2bdb: 0x008c, 0x2bdc: 0x008c, 0x2bdd: 0x008c, - 0x2bde: 0x008c, 0x2bdf: 0x00cc, 0x2be0: 0x008c, 0x2be1: 0x00cc, 0x2be2: 0x008c, 0x2be3: 0x00cc, - 0x2be4: 0x00cc, 0x2be5: 0x008c, 0x2be6: 0x008c, 0x2be7: 0x00cc, 0x2be8: 0x00cc, 0x2be9: 0x00cc, - 0x2bea: 0x008c, 0x2beb: 0x008c, 0x2bec: 0x008c, 0x2bed: 0x008c, 0x2bee: 0x008c, 0x2bef: 0x008c, + 0x2bde: 0x008c, 0x2bdf: 0x008c, 0x2be0: 0x008c, 0x2be1: 0x008c, 0x2be2: 0x008c, 0x2be3: 0x008c, + 0x2be4: 0x008c, 0x2be5: 0x008c, 0x2be6: 0x008c, 0x2be7: 0x008c, 0x2be8: 0x008c, 0x2be9: 0x008c, + 0x2bea: 0x008c, 0x2beb: 0x008c, 0x2bec: 0x008c, 0x2bed: 0x008c, 0x2bf0: 0x008c, 0x2bf1: 0x008c, 0x2bf2: 0x008c, 0x2bf3: 0x008c, 0x2bf4: 0x008c, 0x2bf5: 0x008c, 0x2bf6: 0x008c, 0x2bf7: 0x008c, 0x2bf8: 0x008c, 0x2bf9: 0x008c, 0x2bfa: 0x008c, 0x2bfb: 0x008c, 0x2bfc: 0x008c, 0x2bfd: 0x008c, 0x2bfe: 0x008c, 0x2bff: 0x008c, @@ -2144,35 +2154,33 @@ var derivedPropertiesValues = [20736]uint8{ 0x2c06: 0x008c, 0x2c07: 0x008c, 0x2c08: 0x008c, 0x2c09: 0x008c, 0x2c0a: 0x008c, 0x2c0b: 0x008c, 0x2c0c: 0x008c, 0x2c0d: 0x008c, 0x2c0e: 0x008c, 0x2c0f: 0x008c, 0x2c10: 0x008c, 0x2c11: 0x008c, 0x2c12: 0x008c, 0x2c13: 0x008c, 0x2c14: 0x008c, 0x2c15: 0x008c, 0x2c16: 0x008c, 0x2c17: 0x008c, - 0x2c18: 0x008c, 0x2c19: 0x008c, 0x2c1a: 0x008c, 0x2c1b: 0x008c, 0x2c1c: 0x008c, 0x2c1d: 0x008c, - 0x2c1e: 0x008c, 0x2c1f: 0x008c, 0x2c20: 0x008c, 0x2c21: 0x008c, 0x2c22: 0x008c, 0x2c23: 0x008c, - 0x2c24: 0x008c, 0x2c25: 0x008c, 0x2c26: 0x008c, 0x2c27: 0x008c, 0x2c28: 0x008c, 0x2c29: 0x008c, - 0x2c2a: 0x008c, 0x2c2b: 0x008c, 0x2c2c: 0x008c, 0x2c2d: 0x008c, - 0x2c30: 0x008c, 0x2c31: 0x008c, 0x2c32: 0x008c, 0x2c33: 0x008c, 0x2c34: 0x008c, 0x2c35: 0x008c, - 0x2c36: 0x008c, 0x2c37: 0x008c, 0x2c38: 0x008c, 0x2c39: 0x008c, 0x2c3a: 0x008c, 0x2c3b: 0x008c, - 0x2c3c: 0x008c, 0x2c3d: 0x008c, 0x2c3e: 0x008c, 0x2c3f: 0x008c, + 0x2c18: 0x008c, 0x2c19: 0x008c, // Block 0xb1, offset 0x2c40 - 0x2c40: 0x008c, 0x2c41: 0x008c, 0x2c42: 0x008c, 0x2c43: 0x008c, 0x2c44: 0x008c, 0x2c45: 0x008c, - 0x2c46: 0x008c, 0x2c47: 0x008c, 0x2c48: 0x008c, 0x2c49: 0x008c, 0x2c4a: 0x008c, 0x2c4b: 0x008c, - 0x2c4c: 0x008c, 0x2c4d: 0x008c, 0x2c4e: 0x008c, 0x2c4f: 0x008c, 0x2c50: 0x008c, 0x2c51: 0x008c, - 0x2c52: 0x008c, 0x2c53: 0x008c, 0x2c54: 0x008c, 0x2c55: 0x008c, 0x2c56: 0x008c, 0x2c57: 0x008c, - 0x2c58: 0x008c, 0x2c59: 0x008c, + 0x2c40: 0x0080, 0x2c41: 0x0080, 0x2c42: 0x0080, 0x2c43: 0x0080, 0x2c44: 0x0080, 0x2c45: 0x0080, + 0x2c46: 0x0080, + 0x2c53: 0x0080, 0x2c54: 0x0080, 0x2c55: 0x0080, 0x2c56: 0x0080, 0x2c57: 0x0080, + 0x2c5d: 0x008a, + 0x2c5e: 0x00cb, 0x2c5f: 0x008a, 0x2c60: 0x008a, 0x2c61: 0x008a, 0x2c62: 0x008a, 0x2c63: 0x008a, + 0x2c64: 0x008a, 0x2c65: 0x008a, 0x2c66: 0x008a, 0x2c67: 0x008a, 0x2c68: 0x008a, 0x2c69: 0x008a, + 0x2c6a: 0x008a, 0x2c6b: 0x008a, 0x2c6c: 0x008a, 0x2c6d: 0x008a, 0x2c6e: 0x008a, 0x2c6f: 0x008a, + 0x2c70: 0x008a, 0x2c71: 0x008a, 0x2c72: 0x008a, 0x2c73: 0x008a, 0x2c74: 0x008a, 0x2c75: 0x008a, + 0x2c76: 0x008a, 0x2c78: 0x008a, 0x2c79: 0x008a, 0x2c7a: 0x008a, 0x2c7b: 0x008a, + 0x2c7c: 0x008a, 0x2c7e: 0x008a, // Block 0xb2, offset 0x2c80 - 0x2c80: 0x0080, 0x2c81: 0x0080, 0x2c82: 0x0080, 0x2c83: 0x0080, 0x2c84: 0x0080, 0x2c85: 0x0080, - 0x2c86: 0x0080, - 0x2c93: 0x0080, 0x2c94: 0x0080, 0x2c95: 0x0080, 0x2c96: 0x0080, 0x2c97: 0x0080, - 0x2c9d: 0x008a, - 0x2c9e: 0x00cb, 0x2c9f: 0x008a, 0x2ca0: 0x008a, 0x2ca1: 0x008a, 0x2ca2: 0x008a, 0x2ca3: 0x008a, - 0x2ca4: 0x008a, 0x2ca5: 0x008a, 0x2ca6: 0x008a, 0x2ca7: 0x008a, 0x2ca8: 0x008a, 0x2ca9: 0x008a, - 0x2caa: 0x008a, 0x2cab: 0x008a, 0x2cac: 0x008a, 0x2cad: 0x008a, 0x2cae: 0x008a, 0x2caf: 0x008a, - 0x2cb0: 0x008a, 0x2cb1: 0x008a, 0x2cb2: 0x008a, 0x2cb3: 0x008a, 0x2cb4: 0x008a, 0x2cb5: 0x008a, - 0x2cb6: 0x008a, 0x2cb8: 0x008a, 0x2cb9: 0x008a, 0x2cba: 0x008a, 0x2cbb: 0x008a, - 0x2cbc: 0x008a, 0x2cbe: 0x008a, + 0x2c80: 0x008a, 0x2c81: 0x008a, 0x2c83: 0x008a, 0x2c84: 0x008a, + 0x2c86: 0x008a, 0x2c87: 0x008a, 0x2c88: 0x008a, 0x2c89: 0x008a, 0x2c8a: 0x008a, 0x2c8b: 0x008a, + 0x2c8c: 0x008a, 0x2c8d: 0x008a, 0x2c8e: 0x008a, 0x2c8f: 0x008a, 0x2c90: 0x0080, 0x2c91: 0x0080, + 0x2c92: 0x0080, 0x2c93: 0x0080, 0x2c94: 0x0080, 0x2c95: 0x0080, 0x2c96: 0x0080, 0x2c97: 0x0080, + 0x2c98: 0x0080, 0x2c99: 0x0080, 0x2c9a: 0x0080, 0x2c9b: 0x0080, 0x2c9c: 0x0080, 0x2c9d: 0x0080, + 0x2c9e: 0x0080, 0x2c9f: 0x0080, 0x2ca0: 0x0080, 0x2ca1: 0x0080, 0x2ca2: 0x0080, 0x2ca3: 0x0080, + 0x2ca4: 0x0080, 0x2ca5: 0x0080, 0x2ca6: 0x0080, 0x2ca7: 0x0080, 0x2ca8: 0x0080, 0x2ca9: 0x0080, + 0x2caa: 0x0080, 0x2cab: 0x0080, 0x2cac: 0x0080, 0x2cad: 0x0080, 0x2cae: 0x0080, 0x2caf: 0x0080, + 0x2cb0: 0x0080, 0x2cb1: 0x0080, 0x2cb2: 0x0080, 0x2cb3: 0x0080, 0x2cb4: 0x0080, 0x2cb5: 0x0080, + 0x2cb6: 0x0080, 0x2cb7: 0x0080, 0x2cb8: 0x0080, 0x2cb9: 0x0080, 0x2cba: 0x0080, 0x2cbb: 0x0080, + 0x2cbc: 0x0080, 0x2cbd: 0x0080, 0x2cbe: 0x0080, 0x2cbf: 0x0080, // Block 0xb3, offset 0x2cc0 - 0x2cc0: 0x008a, 0x2cc1: 0x008a, 0x2cc3: 0x008a, 0x2cc4: 0x008a, - 0x2cc6: 0x008a, 0x2cc7: 0x008a, 0x2cc8: 0x008a, 0x2cc9: 0x008a, 0x2cca: 0x008a, 0x2ccb: 0x008a, - 0x2ccc: 0x008a, 0x2ccd: 0x008a, 0x2cce: 0x008a, 0x2ccf: 0x008a, 0x2cd0: 0x0080, 0x2cd1: 0x0080, - 0x2cd2: 0x0080, 0x2cd3: 0x0080, 0x2cd4: 0x0080, 0x2cd5: 0x0080, 0x2cd6: 0x0080, 0x2cd7: 0x0080, + 0x2cc0: 0x0080, 0x2cc1: 0x0080, + 0x2cd3: 0x0080, 0x2cd4: 0x0080, 0x2cd5: 0x0080, 0x2cd6: 0x0080, 0x2cd7: 0x0080, 0x2cd8: 0x0080, 0x2cd9: 0x0080, 0x2cda: 0x0080, 0x2cdb: 0x0080, 0x2cdc: 0x0080, 0x2cdd: 0x0080, 0x2cde: 0x0080, 0x2cdf: 0x0080, 0x2ce0: 0x0080, 0x2ce1: 0x0080, 0x2ce2: 0x0080, 0x2ce3: 0x0080, 0x2ce4: 0x0080, 0x2ce5: 0x0080, 0x2ce6: 0x0080, 0x2ce7: 0x0080, 0x2ce8: 0x0080, 0x2ce9: 0x0080, @@ -2181,8 +2189,8 @@ var derivedPropertiesValues = [20736]uint8{ 0x2cf6: 0x0080, 0x2cf7: 0x0080, 0x2cf8: 0x0080, 0x2cf9: 0x0080, 0x2cfa: 0x0080, 0x2cfb: 0x0080, 0x2cfc: 0x0080, 0x2cfd: 0x0080, 0x2cfe: 0x0080, 0x2cff: 0x0080, // Block 0xb4, offset 0x2d00 - 0x2d00: 0x0080, 0x2d01: 0x0080, - 0x2d13: 0x0080, 0x2d14: 0x0080, 0x2d15: 0x0080, 0x2d16: 0x0080, 0x2d17: 0x0080, + 0x2d10: 0x0080, 0x2d11: 0x0080, + 0x2d12: 0x0080, 0x2d13: 0x0080, 0x2d14: 0x0080, 0x2d15: 0x0080, 0x2d16: 0x0080, 0x2d17: 0x0080, 0x2d18: 0x0080, 0x2d19: 0x0080, 0x2d1a: 0x0080, 0x2d1b: 0x0080, 0x2d1c: 0x0080, 0x2d1d: 0x0080, 0x2d1e: 0x0080, 0x2d1f: 0x0080, 0x2d20: 0x0080, 0x2d21: 0x0080, 0x2d22: 0x0080, 0x2d23: 0x0080, 0x2d24: 0x0080, 0x2d25: 0x0080, 0x2d26: 0x0080, 0x2d27: 0x0080, 0x2d28: 0x0080, 0x2d29: 0x0080, @@ -2191,7 +2199,9 @@ var derivedPropertiesValues = [20736]uint8{ 0x2d36: 0x0080, 0x2d37: 0x0080, 0x2d38: 0x0080, 0x2d39: 0x0080, 0x2d3a: 0x0080, 0x2d3b: 0x0080, 0x2d3c: 0x0080, 0x2d3d: 0x0080, 0x2d3e: 0x0080, 0x2d3f: 0x0080, // Block 0xb5, offset 0x2d40 - 0x2d50: 0x0080, 0x2d51: 0x0080, + 0x2d40: 0x0080, 0x2d41: 0x0080, 0x2d42: 0x0080, 0x2d43: 0x0080, 0x2d44: 0x0080, 0x2d45: 0x0080, + 0x2d46: 0x0080, 0x2d47: 0x0080, 0x2d48: 0x0080, 0x2d49: 0x0080, 0x2d4a: 0x0080, 0x2d4b: 0x0080, + 0x2d4c: 0x0080, 0x2d4d: 0x0080, 0x2d4e: 0x0080, 0x2d4f: 0x0080, 0x2d52: 0x0080, 0x2d53: 0x0080, 0x2d54: 0x0080, 0x2d55: 0x0080, 0x2d56: 0x0080, 0x2d57: 0x0080, 0x2d58: 0x0080, 0x2d59: 0x0080, 0x2d5a: 0x0080, 0x2d5b: 0x0080, 0x2d5c: 0x0080, 0x2d5d: 0x0080, 0x2d5e: 0x0080, 0x2d5f: 0x0080, 0x2d60: 0x0080, 0x2d61: 0x0080, 0x2d62: 0x0080, 0x2d63: 0x0080, @@ -2202,48 +2212,48 @@ var derivedPropertiesValues = [20736]uint8{ 0x2d7c: 0x0080, 0x2d7d: 0x0080, 0x2d7e: 0x0080, 0x2d7f: 0x0080, // Block 0xb6, offset 0x2d80 0x2d80: 0x0080, 0x2d81: 0x0080, 0x2d82: 0x0080, 0x2d83: 0x0080, 0x2d84: 0x0080, 0x2d85: 0x0080, - 0x2d86: 0x0080, 0x2d87: 0x0080, 0x2d88: 0x0080, 0x2d89: 0x0080, 0x2d8a: 0x0080, 0x2d8b: 0x0080, - 0x2d8c: 0x0080, 0x2d8d: 0x0080, 0x2d8e: 0x0080, 0x2d8f: 0x0080, - 0x2d92: 0x0080, 0x2d93: 0x0080, 0x2d94: 0x0080, 0x2d95: 0x0080, 0x2d96: 0x0080, 0x2d97: 0x0080, - 0x2d98: 0x0080, 0x2d99: 0x0080, 0x2d9a: 0x0080, 0x2d9b: 0x0080, 0x2d9c: 0x0080, 0x2d9d: 0x0080, - 0x2d9e: 0x0080, 0x2d9f: 0x0080, 0x2da0: 0x0080, 0x2da1: 0x0080, 0x2da2: 0x0080, 0x2da3: 0x0080, - 0x2da4: 0x0080, 0x2da5: 0x0080, 0x2da6: 0x0080, 0x2da7: 0x0080, 0x2da8: 0x0080, 0x2da9: 0x0080, - 0x2daa: 0x0080, 0x2dab: 0x0080, 0x2dac: 0x0080, 0x2dad: 0x0080, 0x2dae: 0x0080, 0x2daf: 0x0080, + 0x2d86: 0x0080, 0x2d87: 0x0080, 0x2db0: 0x0080, 0x2db1: 0x0080, 0x2db2: 0x0080, 0x2db3: 0x0080, 0x2db4: 0x0080, 0x2db5: 0x0080, 0x2db6: 0x0080, 0x2db7: 0x0080, 0x2db8: 0x0080, 0x2db9: 0x0080, 0x2dba: 0x0080, 0x2dbb: 0x0080, - 0x2dbc: 0x0080, 0x2dbd: 0x0080, 0x2dbe: 0x0080, 0x2dbf: 0x0080, + 0x2dbc: 0x0080, 0x2dbd: 0x0080, // Block 0xb7, offset 0x2dc0 - 0x2dc0: 0x0080, 0x2dc1: 0x0080, 0x2dc2: 0x0080, 0x2dc3: 0x0080, 0x2dc4: 0x0080, 0x2dc5: 0x0080, - 0x2dc6: 0x0080, 0x2dc7: 0x0080, + 0x2dc0: 0x0040, 0x2dc1: 0x0040, 0x2dc2: 0x0040, 0x2dc3: 0x0040, 0x2dc4: 0x0040, 0x2dc5: 0x0040, + 0x2dc6: 0x0040, 0x2dc7: 0x0040, 0x2dc8: 0x0040, 0x2dc9: 0x0040, 0x2dca: 0x0040, 0x2dcb: 0x0040, + 0x2dcc: 0x0040, 0x2dcd: 0x0040, 0x2dce: 0x0040, 0x2dcf: 0x0040, 0x2dd0: 0x0080, 0x2dd1: 0x0080, + 0x2dd2: 0x0080, 0x2dd3: 0x0080, 0x2dd4: 0x0080, 0x2dd5: 0x0080, 0x2dd6: 0x0080, 0x2dd7: 0x0080, + 0x2dd8: 0x0080, 0x2dd9: 0x0080, + 0x2de0: 0x00c3, 0x2de1: 0x00c3, 0x2de2: 0x00c3, 0x2de3: 0x00c3, + 0x2de4: 0x00c3, 0x2de5: 0x00c3, 0x2de6: 0x00c3, 0x2de7: 0x00c3, 0x2de8: 0x00c3, 0x2de9: 0x00c3, + 0x2dea: 0x00c3, 0x2deb: 0x00c3, 0x2dec: 0x00c3, 0x2ded: 0x00c3, 0x2dee: 0x00c3, 0x2def: 0x00c3, 0x2df0: 0x0080, 0x2df1: 0x0080, 0x2df2: 0x0080, 0x2df3: 0x0080, 0x2df4: 0x0080, 0x2df5: 0x0080, 0x2df6: 0x0080, 0x2df7: 0x0080, 0x2df8: 0x0080, 0x2df9: 0x0080, 0x2dfa: 0x0080, 0x2dfb: 0x0080, - 0x2dfc: 0x0080, 0x2dfd: 0x0080, + 0x2dfc: 0x0080, 0x2dfd: 0x0080, 0x2dfe: 0x0080, 0x2dff: 0x0080, // Block 0xb8, offset 0x2e00 - 0x2e00: 0x0040, 0x2e01: 0x0040, 0x2e02: 0x0040, 0x2e03: 0x0040, 0x2e04: 0x0040, 0x2e05: 0x0040, - 0x2e06: 0x0040, 0x2e07: 0x0040, 0x2e08: 0x0040, 0x2e09: 0x0040, 0x2e0a: 0x0040, 0x2e0b: 0x0040, - 0x2e0c: 0x0040, 0x2e0d: 0x0040, 0x2e0e: 0x0040, 0x2e0f: 0x0040, 0x2e10: 0x0080, 0x2e11: 0x0080, - 0x2e12: 0x0080, 0x2e13: 0x0080, 0x2e14: 0x0080, 0x2e15: 0x0080, 0x2e16: 0x0080, 0x2e17: 0x0080, - 0x2e18: 0x0080, 0x2e19: 0x0080, - 0x2e20: 0x00c3, 0x2e21: 0x00c3, 0x2e22: 0x00c3, 0x2e23: 0x00c3, - 0x2e24: 0x00c3, 0x2e25: 0x00c3, 0x2e26: 0x00c3, 0x2e27: 0x00c3, 0x2e28: 0x00c3, 0x2e29: 0x00c3, - 0x2e2a: 0x00c3, 0x2e2b: 0x00c3, 0x2e2c: 0x00c3, 0x2e2d: 0x00c3, 0x2e2e: 0x00c3, 0x2e2f: 0x00c3, - 0x2e30: 0x0080, 0x2e31: 0x0080, 0x2e32: 0x0080, 0x2e33: 0x0080, 0x2e34: 0x0080, 0x2e35: 0x0080, + 0x2e00: 0x0080, 0x2e01: 0x0080, 0x2e02: 0x0080, 0x2e03: 0x0080, 0x2e04: 0x0080, 0x2e05: 0x0080, + 0x2e06: 0x0080, 0x2e07: 0x0080, 0x2e08: 0x0080, 0x2e09: 0x0080, 0x2e0a: 0x0080, 0x2e0b: 0x0080, + 0x2e0c: 0x0080, 0x2e0d: 0x0080, 0x2e0e: 0x0080, 0x2e0f: 0x0080, 0x2e10: 0x0080, 0x2e11: 0x0080, + 0x2e12: 0x0080, 0x2e14: 0x0080, 0x2e15: 0x0080, 0x2e16: 0x0080, 0x2e17: 0x0080, + 0x2e18: 0x0080, 0x2e19: 0x0080, 0x2e1a: 0x0080, 0x2e1b: 0x0080, 0x2e1c: 0x0080, 0x2e1d: 0x0080, + 0x2e1e: 0x0080, 0x2e1f: 0x0080, 0x2e20: 0x0080, 0x2e21: 0x0080, 0x2e22: 0x0080, 0x2e23: 0x0080, + 0x2e24: 0x0080, 0x2e25: 0x0080, 0x2e26: 0x0080, 0x2e28: 0x0080, 0x2e29: 0x0080, + 0x2e2a: 0x0080, 0x2e2b: 0x0080, + 0x2e30: 0x0080, 0x2e31: 0x0080, 0x2e32: 0x0080, 0x2e33: 0x00c0, 0x2e34: 0x0080, 0x2e36: 0x0080, 0x2e37: 0x0080, 0x2e38: 0x0080, 0x2e39: 0x0080, 0x2e3a: 0x0080, 0x2e3b: 0x0080, 0x2e3c: 0x0080, 0x2e3d: 0x0080, 0x2e3e: 0x0080, 0x2e3f: 0x0080, // Block 0xb9, offset 0x2e40 0x2e40: 0x0080, 0x2e41: 0x0080, 0x2e42: 0x0080, 0x2e43: 0x0080, 0x2e44: 0x0080, 0x2e45: 0x0080, 0x2e46: 0x0080, 0x2e47: 0x0080, 0x2e48: 0x0080, 0x2e49: 0x0080, 0x2e4a: 0x0080, 0x2e4b: 0x0080, 0x2e4c: 0x0080, 0x2e4d: 0x0080, 0x2e4e: 0x0080, 0x2e4f: 0x0080, 0x2e50: 0x0080, 0x2e51: 0x0080, - 0x2e52: 0x0080, 0x2e54: 0x0080, 0x2e55: 0x0080, 0x2e56: 0x0080, 0x2e57: 0x0080, + 0x2e52: 0x0080, 0x2e53: 0x0080, 0x2e54: 0x0080, 0x2e55: 0x0080, 0x2e56: 0x0080, 0x2e57: 0x0080, 0x2e58: 0x0080, 0x2e59: 0x0080, 0x2e5a: 0x0080, 0x2e5b: 0x0080, 0x2e5c: 0x0080, 0x2e5d: 0x0080, 0x2e5e: 0x0080, 0x2e5f: 0x0080, 0x2e60: 0x0080, 0x2e61: 0x0080, 0x2e62: 0x0080, 0x2e63: 0x0080, - 0x2e64: 0x0080, 0x2e65: 0x0080, 0x2e66: 0x0080, 0x2e68: 0x0080, 0x2e69: 0x0080, - 0x2e6a: 0x0080, 0x2e6b: 0x0080, - 0x2e70: 0x0080, 0x2e71: 0x0080, 0x2e72: 0x0080, 0x2e73: 0x00c0, 0x2e74: 0x0080, + 0x2e64: 0x0080, 0x2e65: 0x0080, 0x2e66: 0x0080, 0x2e67: 0x0080, 0x2e68: 0x0080, 0x2e69: 0x0080, + 0x2e6a: 0x0080, 0x2e6b: 0x0080, 0x2e6c: 0x0080, 0x2e6d: 0x0080, 0x2e6e: 0x0080, 0x2e6f: 0x0080, + 0x2e70: 0x0080, 0x2e71: 0x0080, 0x2e72: 0x0080, 0x2e73: 0x0080, 0x2e74: 0x0080, 0x2e75: 0x0080, 0x2e76: 0x0080, 0x2e77: 0x0080, 0x2e78: 0x0080, 0x2e79: 0x0080, 0x2e7a: 0x0080, 0x2e7b: 0x0080, - 0x2e7c: 0x0080, 0x2e7d: 0x0080, 0x2e7e: 0x0080, 0x2e7f: 0x0080, + 0x2e7c: 0x0080, 0x2e7f: 0x0040, // Block 0xba, offset 0x2e80 - 0x2e80: 0x0080, 0x2e81: 0x0080, 0x2e82: 0x0080, 0x2e83: 0x0080, 0x2e84: 0x0080, 0x2e85: 0x0080, + 0x2e81: 0x0080, 0x2e82: 0x0080, 0x2e83: 0x0080, 0x2e84: 0x0080, 0x2e85: 0x0080, 0x2e86: 0x0080, 0x2e87: 0x0080, 0x2e88: 0x0080, 0x2e89: 0x0080, 0x2e8a: 0x0080, 0x2e8b: 0x0080, 0x2e8c: 0x0080, 0x2e8d: 0x0080, 0x2e8e: 0x0080, 0x2e8f: 0x0080, 0x2e90: 0x0080, 0x2e91: 0x0080, 0x2e92: 0x0080, 0x2e93: 0x0080, 0x2e94: 0x0080, 0x2e95: 0x0080, 0x2e96: 0x0080, 0x2e97: 0x0080, @@ -2253,205 +2263,205 @@ var derivedPropertiesValues = [20736]uint8{ 0x2eaa: 0x0080, 0x2eab: 0x0080, 0x2eac: 0x0080, 0x2ead: 0x0080, 0x2eae: 0x0080, 0x2eaf: 0x0080, 0x2eb0: 0x0080, 0x2eb1: 0x0080, 0x2eb2: 0x0080, 0x2eb3: 0x0080, 0x2eb4: 0x0080, 0x2eb5: 0x0080, 0x2eb6: 0x0080, 0x2eb7: 0x0080, 0x2eb8: 0x0080, 0x2eb9: 0x0080, 0x2eba: 0x0080, 0x2ebb: 0x0080, - 0x2ebc: 0x0080, 0x2ebf: 0x0040, + 0x2ebc: 0x0080, 0x2ebd: 0x0080, 0x2ebe: 0x0080, 0x2ebf: 0x0080, // Block 0xbb, offset 0x2ec0 - 0x2ec1: 0x0080, 0x2ec2: 0x0080, 0x2ec3: 0x0080, 0x2ec4: 0x0080, 0x2ec5: 0x0080, + 0x2ec0: 0x0080, 0x2ec1: 0x0080, 0x2ec2: 0x0080, 0x2ec3: 0x0080, 0x2ec4: 0x0080, 0x2ec5: 0x0080, 0x2ec6: 0x0080, 0x2ec7: 0x0080, 0x2ec8: 0x0080, 0x2ec9: 0x0080, 0x2eca: 0x0080, 0x2ecb: 0x0080, 0x2ecc: 0x0080, 0x2ecd: 0x0080, 0x2ece: 0x0080, 0x2ecf: 0x0080, 0x2ed0: 0x0080, 0x2ed1: 0x0080, 0x2ed2: 0x0080, 0x2ed3: 0x0080, 0x2ed4: 0x0080, 0x2ed5: 0x0080, 0x2ed6: 0x0080, 0x2ed7: 0x0080, 0x2ed8: 0x0080, 0x2ed9: 0x0080, 0x2eda: 0x0080, 0x2edb: 0x0080, 0x2edc: 0x0080, 0x2edd: 0x0080, 0x2ede: 0x0080, 0x2edf: 0x0080, 0x2ee0: 0x0080, 0x2ee1: 0x0080, 0x2ee2: 0x0080, 0x2ee3: 0x0080, - 0x2ee4: 0x0080, 0x2ee5: 0x0080, 0x2ee6: 0x0080, 0x2ee7: 0x0080, 0x2ee8: 0x0080, 0x2ee9: 0x0080, - 0x2eea: 0x0080, 0x2eeb: 0x0080, 0x2eec: 0x0080, 0x2eed: 0x0080, 0x2eee: 0x0080, 0x2eef: 0x0080, - 0x2ef0: 0x0080, 0x2ef1: 0x0080, 0x2ef2: 0x0080, 0x2ef3: 0x0080, 0x2ef4: 0x0080, 0x2ef5: 0x0080, - 0x2ef6: 0x0080, 0x2ef7: 0x0080, 0x2ef8: 0x0080, 0x2ef9: 0x0080, 0x2efa: 0x0080, 0x2efb: 0x0080, - 0x2efc: 0x0080, 0x2efd: 0x0080, 0x2efe: 0x0080, 0x2eff: 0x0080, + 0x2ee4: 0x0080, 0x2ee5: 0x0080, 0x2ee6: 0x008c, 0x2ee7: 0x008c, 0x2ee8: 0x008c, 0x2ee9: 0x008c, + 0x2eea: 0x008c, 0x2eeb: 0x008c, 0x2eec: 0x008c, 0x2eed: 0x008c, 0x2eee: 0x008c, 0x2eef: 0x008c, + 0x2ef0: 0x0080, 0x2ef1: 0x008c, 0x2ef2: 0x008c, 0x2ef3: 0x008c, 0x2ef4: 0x008c, 0x2ef5: 0x008c, + 0x2ef6: 0x008c, 0x2ef7: 0x008c, 0x2ef8: 0x008c, 0x2ef9: 0x008c, 0x2efa: 0x008c, 0x2efb: 0x008c, + 0x2efc: 0x008c, 0x2efd: 0x008c, 0x2efe: 0x008c, 0x2eff: 0x008c, // Block 0xbc, offset 0x2f00 - 0x2f00: 0x0080, 0x2f01: 0x0080, 0x2f02: 0x0080, 0x2f03: 0x0080, 0x2f04: 0x0080, 0x2f05: 0x0080, - 0x2f06: 0x0080, 0x2f07: 0x0080, 0x2f08: 0x0080, 0x2f09: 0x0080, 0x2f0a: 0x0080, 0x2f0b: 0x0080, - 0x2f0c: 0x0080, 0x2f0d: 0x0080, 0x2f0e: 0x0080, 0x2f0f: 0x0080, 0x2f10: 0x0080, 0x2f11: 0x0080, - 0x2f12: 0x0080, 0x2f13: 0x0080, 0x2f14: 0x0080, 0x2f15: 0x0080, 0x2f16: 0x0080, 0x2f17: 0x0080, - 0x2f18: 0x0080, 0x2f19: 0x0080, 0x2f1a: 0x0080, 0x2f1b: 0x0080, 0x2f1c: 0x0080, 0x2f1d: 0x0080, - 0x2f1e: 0x0080, 0x2f1f: 0x0080, 0x2f20: 0x0080, 0x2f21: 0x0080, 0x2f22: 0x0080, 0x2f23: 0x0080, - 0x2f24: 0x0080, 0x2f25: 0x0080, 0x2f26: 0x008c, 0x2f27: 0x008c, 0x2f28: 0x008c, 0x2f29: 0x008c, - 0x2f2a: 0x008c, 0x2f2b: 0x008c, 0x2f2c: 0x008c, 0x2f2d: 0x008c, 0x2f2e: 0x008c, 0x2f2f: 0x008c, - 0x2f30: 0x0080, 0x2f31: 0x008c, 0x2f32: 0x008c, 0x2f33: 0x008c, 0x2f34: 0x008c, 0x2f35: 0x008c, - 0x2f36: 0x008c, 0x2f37: 0x008c, 0x2f38: 0x008c, 0x2f39: 0x008c, 0x2f3a: 0x008c, 0x2f3b: 0x008c, - 0x2f3c: 0x008c, 0x2f3d: 0x008c, 0x2f3e: 0x008c, 0x2f3f: 0x008c, + 0x2f00: 0x008c, 0x2f01: 0x008c, 0x2f02: 0x008c, 0x2f03: 0x008c, 0x2f04: 0x008c, 0x2f05: 0x008c, + 0x2f06: 0x008c, 0x2f07: 0x008c, 0x2f08: 0x008c, 0x2f09: 0x008c, 0x2f0a: 0x008c, 0x2f0b: 0x008c, + 0x2f0c: 0x008c, 0x2f0d: 0x008c, 0x2f0e: 0x008c, 0x2f0f: 0x008c, 0x2f10: 0x008c, 0x2f11: 0x008c, + 0x2f12: 0x008c, 0x2f13: 0x008c, 0x2f14: 0x008c, 0x2f15: 0x008c, 0x2f16: 0x008c, 0x2f17: 0x008c, + 0x2f18: 0x008c, 0x2f19: 0x008c, 0x2f1a: 0x008c, 0x2f1b: 0x008c, 0x2f1c: 0x008c, 0x2f1d: 0x008c, + 0x2f1e: 0x0080, 0x2f1f: 0x0080, 0x2f20: 0x0040, 0x2f21: 0x0080, 0x2f22: 0x0080, 0x2f23: 0x0080, + 0x2f24: 0x0080, 0x2f25: 0x0080, 0x2f26: 0x0080, 0x2f27: 0x0080, 0x2f28: 0x0080, 0x2f29: 0x0080, + 0x2f2a: 0x0080, 0x2f2b: 0x0080, 0x2f2c: 0x0080, 0x2f2d: 0x0080, 0x2f2e: 0x0080, 0x2f2f: 0x0080, + 0x2f30: 0x0080, 0x2f31: 0x0080, 0x2f32: 0x0080, 0x2f33: 0x0080, 0x2f34: 0x0080, 0x2f35: 0x0080, + 0x2f36: 0x0080, 0x2f37: 0x0080, 0x2f38: 0x0080, 0x2f39: 0x0080, 0x2f3a: 0x0080, 0x2f3b: 0x0080, + 0x2f3c: 0x0080, 0x2f3d: 0x0080, 0x2f3e: 0x0080, // Block 0xbd, offset 0x2f40 - 0x2f40: 0x008c, 0x2f41: 0x008c, 0x2f42: 0x008c, 0x2f43: 0x008c, 0x2f44: 0x008c, 0x2f45: 0x008c, - 0x2f46: 0x008c, 0x2f47: 0x008c, 0x2f48: 0x008c, 0x2f49: 0x008c, 0x2f4a: 0x008c, 0x2f4b: 0x008c, - 0x2f4c: 0x008c, 0x2f4d: 0x008c, 0x2f4e: 0x008c, 0x2f4f: 0x008c, 0x2f50: 0x008c, 0x2f51: 0x008c, - 0x2f52: 0x008c, 0x2f53: 0x008c, 0x2f54: 0x008c, 0x2f55: 0x008c, 0x2f56: 0x008c, 0x2f57: 0x008c, - 0x2f58: 0x008c, 0x2f59: 0x008c, 0x2f5a: 0x008c, 0x2f5b: 0x008c, 0x2f5c: 0x008c, 0x2f5d: 0x008c, - 0x2f5e: 0x0080, 0x2f5f: 0x0080, 0x2f60: 0x0040, 0x2f61: 0x0080, 0x2f62: 0x0080, 0x2f63: 0x0080, - 0x2f64: 0x0080, 0x2f65: 0x0080, 0x2f66: 0x0080, 0x2f67: 0x0080, 0x2f68: 0x0080, 0x2f69: 0x0080, - 0x2f6a: 0x0080, 0x2f6b: 0x0080, 0x2f6c: 0x0080, 0x2f6d: 0x0080, 0x2f6e: 0x0080, 0x2f6f: 0x0080, - 0x2f70: 0x0080, 0x2f71: 0x0080, 0x2f72: 0x0080, 0x2f73: 0x0080, 0x2f74: 0x0080, 0x2f75: 0x0080, - 0x2f76: 0x0080, 0x2f77: 0x0080, 0x2f78: 0x0080, 0x2f79: 0x0080, 0x2f7a: 0x0080, 0x2f7b: 0x0080, - 0x2f7c: 0x0080, 0x2f7d: 0x0080, 0x2f7e: 0x0080, + 0x2f42: 0x0080, 0x2f43: 0x0080, 0x2f44: 0x0080, 0x2f45: 0x0080, + 0x2f46: 0x0080, 0x2f47: 0x0080, 0x2f4a: 0x0080, 0x2f4b: 0x0080, + 0x2f4c: 0x0080, 0x2f4d: 0x0080, 0x2f4e: 0x0080, 0x2f4f: 0x0080, + 0x2f52: 0x0080, 0x2f53: 0x0080, 0x2f54: 0x0080, 0x2f55: 0x0080, 0x2f56: 0x0080, 0x2f57: 0x0080, + 0x2f5a: 0x0080, 0x2f5b: 0x0080, 0x2f5c: 0x0080, + 0x2f60: 0x0080, 0x2f61: 0x0080, 0x2f62: 0x0080, 0x2f63: 0x0080, + 0x2f64: 0x0080, 0x2f65: 0x0080, 0x2f66: 0x0080, 0x2f68: 0x0080, 0x2f69: 0x0080, + 0x2f6a: 0x0080, 0x2f6b: 0x0080, 0x2f6c: 0x0080, 0x2f6d: 0x0080, 0x2f6e: 0x0080, + 0x2f79: 0x0040, 0x2f7a: 0x0040, 0x2f7b: 0x0040, + 0x2f7c: 0x0080, 0x2f7d: 0x0080, // Block 0xbe, offset 0x2f80 - 0x2f82: 0x0080, 0x2f83: 0x0080, 0x2f84: 0x0080, 0x2f85: 0x0080, - 0x2f86: 0x0080, 0x2f87: 0x0080, 0x2f8a: 0x0080, 0x2f8b: 0x0080, - 0x2f8c: 0x0080, 0x2f8d: 0x0080, 0x2f8e: 0x0080, 0x2f8f: 0x0080, - 0x2f92: 0x0080, 0x2f93: 0x0080, 0x2f94: 0x0080, 0x2f95: 0x0080, 0x2f96: 0x0080, 0x2f97: 0x0080, - 0x2f9a: 0x0080, 0x2f9b: 0x0080, 0x2f9c: 0x0080, - 0x2fa0: 0x0080, 0x2fa1: 0x0080, 0x2fa2: 0x0080, 0x2fa3: 0x0080, - 0x2fa4: 0x0080, 0x2fa5: 0x0080, 0x2fa6: 0x0080, 0x2fa8: 0x0080, 0x2fa9: 0x0080, - 0x2faa: 0x0080, 0x2fab: 0x0080, 0x2fac: 0x0080, 0x2fad: 0x0080, 0x2fae: 0x0080, - 0x2fb9: 0x0040, 0x2fba: 0x0040, 0x2fbb: 0x0040, - 0x2fbc: 0x0080, 0x2fbd: 0x0080, + 0x2f80: 0x00c0, 0x2f81: 0x00c0, 0x2f82: 0x00c0, 0x2f83: 0x00c0, 0x2f84: 0x00c0, 0x2f85: 0x00c0, + 0x2f86: 0x00c0, 0x2f87: 0x00c0, 0x2f88: 0x00c0, 0x2f89: 0x00c0, 0x2f8a: 0x00c0, 0x2f8b: 0x00c0, + 0x2f8d: 0x00c0, 0x2f8e: 0x00c0, 0x2f8f: 0x00c0, 0x2f90: 0x00c0, 0x2f91: 0x00c0, + 0x2f92: 0x00c0, 0x2f93: 0x00c0, 0x2f94: 0x00c0, 0x2f95: 0x00c0, 0x2f96: 0x00c0, 0x2f97: 0x00c0, + 0x2f98: 0x00c0, 0x2f99: 0x00c0, 0x2f9a: 0x00c0, 0x2f9b: 0x00c0, 0x2f9c: 0x00c0, 0x2f9d: 0x00c0, + 0x2f9e: 0x00c0, 0x2f9f: 0x00c0, 0x2fa0: 0x00c0, 0x2fa1: 0x00c0, 0x2fa2: 0x00c0, 0x2fa3: 0x00c0, + 0x2fa4: 0x00c0, 0x2fa5: 0x00c0, 0x2fa6: 0x00c0, 0x2fa8: 0x00c0, 0x2fa9: 0x00c0, + 0x2faa: 0x00c0, 0x2fab: 0x00c0, 0x2fac: 0x00c0, 0x2fad: 0x00c0, 0x2fae: 0x00c0, 0x2faf: 0x00c0, + 0x2fb0: 0x00c0, 0x2fb1: 0x00c0, 0x2fb2: 0x00c0, 0x2fb3: 0x00c0, 0x2fb4: 0x00c0, 0x2fb5: 0x00c0, + 0x2fb6: 0x00c0, 0x2fb7: 0x00c0, 0x2fb8: 0x00c0, 0x2fb9: 0x00c0, 0x2fba: 0x00c0, + 0x2fbc: 0x00c0, 0x2fbd: 0x00c0, 0x2fbf: 0x00c0, // Block 0xbf, offset 0x2fc0 0x2fc0: 0x00c0, 0x2fc1: 0x00c0, 0x2fc2: 0x00c0, 0x2fc3: 0x00c0, 0x2fc4: 0x00c0, 0x2fc5: 0x00c0, 0x2fc6: 0x00c0, 0x2fc7: 0x00c0, 0x2fc8: 0x00c0, 0x2fc9: 0x00c0, 0x2fca: 0x00c0, 0x2fcb: 0x00c0, - 0x2fcd: 0x00c0, 0x2fce: 0x00c0, 0x2fcf: 0x00c0, 0x2fd0: 0x00c0, 0x2fd1: 0x00c0, + 0x2fcc: 0x00c0, 0x2fcd: 0x00c0, 0x2fd0: 0x00c0, 0x2fd1: 0x00c0, 0x2fd2: 0x00c0, 0x2fd3: 0x00c0, 0x2fd4: 0x00c0, 0x2fd5: 0x00c0, 0x2fd6: 0x00c0, 0x2fd7: 0x00c0, 0x2fd8: 0x00c0, 0x2fd9: 0x00c0, 0x2fda: 0x00c0, 0x2fdb: 0x00c0, 0x2fdc: 0x00c0, 0x2fdd: 0x00c0, - 0x2fde: 0x00c0, 0x2fdf: 0x00c0, 0x2fe0: 0x00c0, 0x2fe1: 0x00c0, 0x2fe2: 0x00c0, 0x2fe3: 0x00c0, - 0x2fe4: 0x00c0, 0x2fe5: 0x00c0, 0x2fe6: 0x00c0, 0x2fe8: 0x00c0, 0x2fe9: 0x00c0, - 0x2fea: 0x00c0, 0x2feb: 0x00c0, 0x2fec: 0x00c0, 0x2fed: 0x00c0, 0x2fee: 0x00c0, 0x2fef: 0x00c0, - 0x2ff0: 0x00c0, 0x2ff1: 0x00c0, 0x2ff2: 0x00c0, 0x2ff3: 0x00c0, 0x2ff4: 0x00c0, 0x2ff5: 0x00c0, - 0x2ff6: 0x00c0, 0x2ff7: 0x00c0, 0x2ff8: 0x00c0, 0x2ff9: 0x00c0, 0x2ffa: 0x00c0, - 0x2ffc: 0x00c0, 0x2ffd: 0x00c0, 0x2fff: 0x00c0, // Block 0xc0, offset 0x3000 0x3000: 0x00c0, 0x3001: 0x00c0, 0x3002: 0x00c0, 0x3003: 0x00c0, 0x3004: 0x00c0, 0x3005: 0x00c0, 0x3006: 0x00c0, 0x3007: 0x00c0, 0x3008: 0x00c0, 0x3009: 0x00c0, 0x300a: 0x00c0, 0x300b: 0x00c0, - 0x300c: 0x00c0, 0x300d: 0x00c0, 0x3010: 0x00c0, 0x3011: 0x00c0, + 0x300c: 0x00c0, 0x300d: 0x00c0, 0x300e: 0x00c0, 0x300f: 0x00c0, 0x3010: 0x00c0, 0x3011: 0x00c0, 0x3012: 0x00c0, 0x3013: 0x00c0, 0x3014: 0x00c0, 0x3015: 0x00c0, 0x3016: 0x00c0, 0x3017: 0x00c0, 0x3018: 0x00c0, 0x3019: 0x00c0, 0x301a: 0x00c0, 0x301b: 0x00c0, 0x301c: 0x00c0, 0x301d: 0x00c0, + 0x301e: 0x00c0, 0x301f: 0x00c0, 0x3020: 0x00c0, 0x3021: 0x00c0, 0x3022: 0x00c0, 0x3023: 0x00c0, + 0x3024: 0x00c0, 0x3025: 0x00c0, 0x3026: 0x00c0, 0x3027: 0x00c0, 0x3028: 0x00c0, 0x3029: 0x00c0, + 0x302a: 0x00c0, 0x302b: 0x00c0, 0x302c: 0x00c0, 0x302d: 0x00c0, 0x302e: 0x00c0, 0x302f: 0x00c0, + 0x3030: 0x00c0, 0x3031: 0x00c0, 0x3032: 0x00c0, 0x3033: 0x00c0, 0x3034: 0x00c0, 0x3035: 0x00c0, + 0x3036: 0x00c0, 0x3037: 0x00c0, 0x3038: 0x00c0, 0x3039: 0x00c0, 0x303a: 0x00c0, // Block 0xc1, offset 0x3040 - 0x3040: 0x00c0, 0x3041: 0x00c0, 0x3042: 0x00c0, 0x3043: 0x00c0, 0x3044: 0x00c0, 0x3045: 0x00c0, - 0x3046: 0x00c0, 0x3047: 0x00c0, 0x3048: 0x00c0, 0x3049: 0x00c0, 0x304a: 0x00c0, 0x304b: 0x00c0, - 0x304c: 0x00c0, 0x304d: 0x00c0, 0x304e: 0x00c0, 0x304f: 0x00c0, 0x3050: 0x00c0, 0x3051: 0x00c0, - 0x3052: 0x00c0, 0x3053: 0x00c0, 0x3054: 0x00c0, 0x3055: 0x00c0, 0x3056: 0x00c0, 0x3057: 0x00c0, - 0x3058: 0x00c0, 0x3059: 0x00c0, 0x305a: 0x00c0, 0x305b: 0x00c0, 0x305c: 0x00c0, 0x305d: 0x00c0, - 0x305e: 0x00c0, 0x305f: 0x00c0, 0x3060: 0x00c0, 0x3061: 0x00c0, 0x3062: 0x00c0, 0x3063: 0x00c0, - 0x3064: 0x00c0, 0x3065: 0x00c0, 0x3066: 0x00c0, 0x3067: 0x00c0, 0x3068: 0x00c0, 0x3069: 0x00c0, - 0x306a: 0x00c0, 0x306b: 0x00c0, 0x306c: 0x00c0, 0x306d: 0x00c0, 0x306e: 0x00c0, 0x306f: 0x00c0, - 0x3070: 0x00c0, 0x3071: 0x00c0, 0x3072: 0x00c0, 0x3073: 0x00c0, 0x3074: 0x00c0, 0x3075: 0x00c0, - 0x3076: 0x00c0, 0x3077: 0x00c0, 0x3078: 0x00c0, 0x3079: 0x00c0, 0x307a: 0x00c0, + 0x3040: 0x0080, 0x3041: 0x0080, 0x3042: 0x0080, + 0x3047: 0x0080, 0x3048: 0x0080, 0x3049: 0x0080, 0x304a: 0x0080, 0x304b: 0x0080, + 0x304c: 0x0080, 0x304d: 0x0080, 0x304e: 0x0080, 0x304f: 0x0080, 0x3050: 0x0080, 0x3051: 0x0080, + 0x3052: 0x0080, 0x3053: 0x0080, 0x3054: 0x0080, 0x3055: 0x0080, 0x3056: 0x0080, 0x3057: 0x0080, + 0x3058: 0x0080, 0x3059: 0x0080, 0x305a: 0x0080, 0x305b: 0x0080, 0x305c: 0x0080, 0x305d: 0x0080, + 0x305e: 0x0080, 0x305f: 0x0080, 0x3060: 0x0080, 0x3061: 0x0080, 0x3062: 0x0080, 0x3063: 0x0080, + 0x3064: 0x0080, 0x3065: 0x0080, 0x3066: 0x0080, 0x3067: 0x0080, 0x3068: 0x0080, 0x3069: 0x0080, + 0x306a: 0x0080, 0x306b: 0x0080, 0x306c: 0x0080, 0x306d: 0x0080, 0x306e: 0x0080, 0x306f: 0x0080, + 0x3070: 0x0080, 0x3071: 0x0080, 0x3072: 0x0080, 0x3073: 0x0080, + 0x3077: 0x0080, 0x3078: 0x0080, 0x3079: 0x0080, 0x307a: 0x0080, 0x307b: 0x0080, + 0x307c: 0x0080, 0x307d: 0x0080, 0x307e: 0x0080, 0x307f: 0x0080, // Block 0xc2, offset 0x3080 - 0x3080: 0x0080, 0x3081: 0x0080, 0x3082: 0x0080, - 0x3087: 0x0080, 0x3088: 0x0080, 0x3089: 0x0080, 0x308a: 0x0080, 0x308b: 0x0080, - 0x308c: 0x0080, 0x308d: 0x0080, 0x308e: 0x0080, 0x308f: 0x0080, 0x3090: 0x0080, 0x3091: 0x0080, - 0x3092: 0x0080, 0x3093: 0x0080, 0x3094: 0x0080, 0x3095: 0x0080, 0x3096: 0x0080, 0x3097: 0x0080, - 0x3098: 0x0080, 0x3099: 0x0080, 0x309a: 0x0080, 0x309b: 0x0080, 0x309c: 0x0080, 0x309d: 0x0080, - 0x309e: 0x0080, 0x309f: 0x0080, 0x30a0: 0x0080, 0x30a1: 0x0080, 0x30a2: 0x0080, 0x30a3: 0x0080, - 0x30a4: 0x0080, 0x30a5: 0x0080, 0x30a6: 0x0080, 0x30a7: 0x0080, 0x30a8: 0x0080, 0x30a9: 0x0080, - 0x30aa: 0x0080, 0x30ab: 0x0080, 0x30ac: 0x0080, 0x30ad: 0x0080, 0x30ae: 0x0080, 0x30af: 0x0080, - 0x30b0: 0x0080, 0x30b1: 0x0080, 0x30b2: 0x0080, 0x30b3: 0x0080, - 0x30b7: 0x0080, 0x30b8: 0x0080, 0x30b9: 0x0080, 0x30ba: 0x0080, 0x30bb: 0x0080, - 0x30bc: 0x0080, 0x30bd: 0x0080, 0x30be: 0x0080, 0x30bf: 0x0080, + 0x3080: 0x0088, 0x3081: 0x0088, 0x3082: 0x0088, 0x3083: 0x0088, 0x3084: 0x0088, 0x3085: 0x0088, + 0x3086: 0x0088, 0x3087: 0x0088, 0x3088: 0x0088, 0x3089: 0x0088, 0x308a: 0x0088, 0x308b: 0x0088, + 0x308c: 0x0088, 0x308d: 0x0088, 0x308e: 0x0088, 0x308f: 0x0088, 0x3090: 0x0088, 0x3091: 0x0088, + 0x3092: 0x0088, 0x3093: 0x0088, 0x3094: 0x0088, 0x3095: 0x0088, 0x3096: 0x0088, 0x3097: 0x0088, + 0x3098: 0x0088, 0x3099: 0x0088, 0x309a: 0x0088, 0x309b: 0x0088, 0x309c: 0x0088, 0x309d: 0x0088, + 0x309e: 0x0088, 0x309f: 0x0088, 0x30a0: 0x0088, 0x30a1: 0x0088, 0x30a2: 0x0088, 0x30a3: 0x0088, + 0x30a4: 0x0088, 0x30a5: 0x0088, 0x30a6: 0x0088, 0x30a7: 0x0088, 0x30a8: 0x0088, 0x30a9: 0x0088, + 0x30aa: 0x0088, 0x30ab: 0x0088, 0x30ac: 0x0088, 0x30ad: 0x0088, 0x30ae: 0x0088, 0x30af: 0x0088, + 0x30b0: 0x0088, 0x30b1: 0x0088, 0x30b2: 0x0088, 0x30b3: 0x0088, 0x30b4: 0x0088, 0x30b5: 0x0088, + 0x30b6: 0x0088, 0x30b7: 0x0088, 0x30b8: 0x0088, 0x30b9: 0x0088, 0x30ba: 0x0088, 0x30bb: 0x0088, + 0x30bc: 0x0088, 0x30bd: 0x0088, 0x30be: 0x0088, 0x30bf: 0x0088, // Block 0xc3, offset 0x30c0 0x30c0: 0x0088, 0x30c1: 0x0088, 0x30c2: 0x0088, 0x30c3: 0x0088, 0x30c4: 0x0088, 0x30c5: 0x0088, 0x30c6: 0x0088, 0x30c7: 0x0088, 0x30c8: 0x0088, 0x30c9: 0x0088, 0x30ca: 0x0088, 0x30cb: 0x0088, - 0x30cc: 0x0088, 0x30cd: 0x0088, 0x30ce: 0x0088, 0x30cf: 0x0088, 0x30d0: 0x0088, 0x30d1: 0x0088, - 0x30d2: 0x0088, 0x30d3: 0x0088, 0x30d4: 0x0088, 0x30d5: 0x0088, 0x30d6: 0x0088, 0x30d7: 0x0088, - 0x30d8: 0x0088, 0x30d9: 0x0088, 0x30da: 0x0088, 0x30db: 0x0088, 0x30dc: 0x0088, 0x30dd: 0x0088, - 0x30de: 0x0088, 0x30df: 0x0088, 0x30e0: 0x0088, 0x30e1: 0x0088, 0x30e2: 0x0088, 0x30e3: 0x0088, - 0x30e4: 0x0088, 0x30e5: 0x0088, 0x30e6: 0x0088, 0x30e7: 0x0088, 0x30e8: 0x0088, 0x30e9: 0x0088, - 0x30ea: 0x0088, 0x30eb: 0x0088, 0x30ec: 0x0088, 0x30ed: 0x0088, 0x30ee: 0x0088, 0x30ef: 0x0088, - 0x30f0: 0x0088, 0x30f1: 0x0088, 0x30f2: 0x0088, 0x30f3: 0x0088, 0x30f4: 0x0088, 0x30f5: 0x0088, - 0x30f6: 0x0088, 0x30f7: 0x0088, 0x30f8: 0x0088, 0x30f9: 0x0088, 0x30fa: 0x0088, 0x30fb: 0x0088, - 0x30fc: 0x0088, 0x30fd: 0x0088, 0x30fe: 0x0088, 0x30ff: 0x0088, + 0x30cc: 0x0088, 0x30cd: 0x0088, 0x30ce: 0x0088, 0x30d0: 0x0080, 0x30d1: 0x0080, + 0x30d2: 0x0080, 0x30d3: 0x0080, 0x30d4: 0x0080, 0x30d5: 0x0080, 0x30d6: 0x0080, 0x30d7: 0x0080, + 0x30d8: 0x0080, 0x30d9: 0x0080, 0x30da: 0x0080, 0x30db: 0x0080, + 0x30e0: 0x0088, // Block 0xc4, offset 0x3100 - 0x3100: 0x0088, 0x3101: 0x0088, 0x3102: 0x0088, 0x3103: 0x0088, 0x3104: 0x0088, 0x3105: 0x0088, - 0x3106: 0x0088, 0x3107: 0x0088, 0x3108: 0x0088, 0x3109: 0x0088, 0x310a: 0x0088, 0x310b: 0x0088, - 0x310c: 0x0088, 0x310d: 0x0088, 0x310e: 0x0088, 0x3110: 0x0080, 0x3111: 0x0080, + 0x3110: 0x0080, 0x3111: 0x0080, 0x3112: 0x0080, 0x3113: 0x0080, 0x3114: 0x0080, 0x3115: 0x0080, 0x3116: 0x0080, 0x3117: 0x0080, - 0x3118: 0x0080, 0x3119: 0x0080, 0x311a: 0x0080, 0x311b: 0x0080, - 0x3120: 0x0088, + 0x3118: 0x0080, 0x3119: 0x0080, 0x311a: 0x0080, 0x311b: 0x0080, 0x311c: 0x0080, 0x311d: 0x0080, + 0x311e: 0x0080, 0x311f: 0x0080, 0x3120: 0x0080, 0x3121: 0x0080, 0x3122: 0x0080, 0x3123: 0x0080, + 0x3124: 0x0080, 0x3125: 0x0080, 0x3126: 0x0080, 0x3127: 0x0080, 0x3128: 0x0080, 0x3129: 0x0080, + 0x312a: 0x0080, 0x312b: 0x0080, 0x312c: 0x0080, 0x312d: 0x0080, 0x312e: 0x0080, 0x312f: 0x0080, + 0x3130: 0x0080, 0x3131: 0x0080, 0x3132: 0x0080, 0x3133: 0x0080, 0x3134: 0x0080, 0x3135: 0x0080, + 0x3136: 0x0080, 0x3137: 0x0080, 0x3138: 0x0080, 0x3139: 0x0080, 0x313a: 0x0080, 0x313b: 0x0080, + 0x313c: 0x0080, 0x313d: 0x00c3, // Block 0xc5, offset 0x3140 - 0x3150: 0x0080, 0x3151: 0x0080, - 0x3152: 0x0080, 0x3153: 0x0080, 0x3154: 0x0080, 0x3155: 0x0080, 0x3156: 0x0080, 0x3157: 0x0080, - 0x3158: 0x0080, 0x3159: 0x0080, 0x315a: 0x0080, 0x315b: 0x0080, 0x315c: 0x0080, 0x315d: 0x0080, - 0x315e: 0x0080, 0x315f: 0x0080, 0x3160: 0x0080, 0x3161: 0x0080, 0x3162: 0x0080, 0x3163: 0x0080, - 0x3164: 0x0080, 0x3165: 0x0080, 0x3166: 0x0080, 0x3167: 0x0080, 0x3168: 0x0080, 0x3169: 0x0080, - 0x316a: 0x0080, 0x316b: 0x0080, 0x316c: 0x0080, 0x316d: 0x0080, 0x316e: 0x0080, 0x316f: 0x0080, - 0x3170: 0x0080, 0x3171: 0x0080, 0x3172: 0x0080, 0x3173: 0x0080, 0x3174: 0x0080, 0x3175: 0x0080, - 0x3176: 0x0080, 0x3177: 0x0080, 0x3178: 0x0080, 0x3179: 0x0080, 0x317a: 0x0080, 0x317b: 0x0080, - 0x317c: 0x0080, 0x317d: 0x00c3, + 0x3140: 0x00c0, 0x3141: 0x00c0, 0x3142: 0x00c0, 0x3143: 0x00c0, 0x3144: 0x00c0, 0x3145: 0x00c0, + 0x3146: 0x00c0, 0x3147: 0x00c0, 0x3148: 0x00c0, 0x3149: 0x00c0, 0x314a: 0x00c0, 0x314b: 0x00c0, + 0x314c: 0x00c0, 0x314d: 0x00c0, 0x314e: 0x00c0, 0x314f: 0x00c0, 0x3150: 0x00c0, 0x3151: 0x00c0, + 0x3152: 0x00c0, 0x3153: 0x00c0, 0x3154: 0x00c0, 0x3155: 0x00c0, 0x3156: 0x00c0, 0x3157: 0x00c0, + 0x3158: 0x00c0, 0x3159: 0x00c0, 0x315a: 0x00c0, 0x315b: 0x00c0, 0x315c: 0x00c0, + 0x3160: 0x00c0, 0x3161: 0x00c0, 0x3162: 0x00c0, 0x3163: 0x00c0, + 0x3164: 0x00c0, 0x3165: 0x00c0, 0x3166: 0x00c0, 0x3167: 0x00c0, 0x3168: 0x00c0, 0x3169: 0x00c0, + 0x316a: 0x00c0, 0x316b: 0x00c0, 0x316c: 0x00c0, 0x316d: 0x00c0, 0x316e: 0x00c0, 0x316f: 0x00c0, + 0x3170: 0x00c0, 0x3171: 0x00c0, 0x3172: 0x00c0, 0x3173: 0x00c0, 0x3174: 0x00c0, 0x3175: 0x00c0, + 0x3176: 0x00c0, 0x3177: 0x00c0, 0x3178: 0x00c0, 0x3179: 0x00c0, 0x317a: 0x00c0, 0x317b: 0x00c0, + 0x317c: 0x00c0, 0x317d: 0x00c0, 0x317e: 0x00c0, 0x317f: 0x00c0, // Block 0xc6, offset 0x3180 0x3180: 0x00c0, 0x3181: 0x00c0, 0x3182: 0x00c0, 0x3183: 0x00c0, 0x3184: 0x00c0, 0x3185: 0x00c0, 0x3186: 0x00c0, 0x3187: 0x00c0, 0x3188: 0x00c0, 0x3189: 0x00c0, 0x318a: 0x00c0, 0x318b: 0x00c0, - 0x318c: 0x00c0, 0x318d: 0x00c0, 0x318e: 0x00c0, 0x318f: 0x00c0, 0x3190: 0x00c0, 0x3191: 0x00c0, - 0x3192: 0x00c0, 0x3193: 0x00c0, 0x3194: 0x00c0, 0x3195: 0x00c0, 0x3196: 0x00c0, 0x3197: 0x00c0, - 0x3198: 0x00c0, 0x3199: 0x00c0, 0x319a: 0x00c0, 0x319b: 0x00c0, 0x319c: 0x00c0, - 0x31a0: 0x00c0, 0x31a1: 0x00c0, 0x31a2: 0x00c0, 0x31a3: 0x00c0, - 0x31a4: 0x00c0, 0x31a5: 0x00c0, 0x31a6: 0x00c0, 0x31a7: 0x00c0, 0x31a8: 0x00c0, 0x31a9: 0x00c0, - 0x31aa: 0x00c0, 0x31ab: 0x00c0, 0x31ac: 0x00c0, 0x31ad: 0x00c0, 0x31ae: 0x00c0, 0x31af: 0x00c0, - 0x31b0: 0x00c0, 0x31b1: 0x00c0, 0x31b2: 0x00c0, 0x31b3: 0x00c0, 0x31b4: 0x00c0, 0x31b5: 0x00c0, - 0x31b6: 0x00c0, 0x31b7: 0x00c0, 0x31b8: 0x00c0, 0x31b9: 0x00c0, 0x31ba: 0x00c0, 0x31bb: 0x00c0, - 0x31bc: 0x00c0, 0x31bd: 0x00c0, 0x31be: 0x00c0, 0x31bf: 0x00c0, + 0x318c: 0x00c0, 0x318d: 0x00c0, 0x318e: 0x00c0, 0x318f: 0x00c0, 0x3190: 0x00c0, + 0x31a0: 0x00c3, 0x31a1: 0x0080, 0x31a2: 0x0080, 0x31a3: 0x0080, + 0x31a4: 0x0080, 0x31a5: 0x0080, 0x31a6: 0x0080, 0x31a7: 0x0080, 0x31a8: 0x0080, 0x31a9: 0x0080, + 0x31aa: 0x0080, 0x31ab: 0x0080, 0x31ac: 0x0080, 0x31ad: 0x0080, 0x31ae: 0x0080, 0x31af: 0x0080, + 0x31b0: 0x0080, 0x31b1: 0x0080, 0x31b2: 0x0080, 0x31b3: 0x0080, 0x31b4: 0x0080, 0x31b5: 0x0080, + 0x31b6: 0x0080, 0x31b7: 0x0080, 0x31b8: 0x0080, 0x31b9: 0x0080, 0x31ba: 0x0080, 0x31bb: 0x0080, // Block 0xc7, offset 0x31c0 0x31c0: 0x00c0, 0x31c1: 0x00c0, 0x31c2: 0x00c0, 0x31c3: 0x00c0, 0x31c4: 0x00c0, 0x31c5: 0x00c0, 0x31c6: 0x00c0, 0x31c7: 0x00c0, 0x31c8: 0x00c0, 0x31c9: 0x00c0, 0x31ca: 0x00c0, 0x31cb: 0x00c0, - 0x31cc: 0x00c0, 0x31cd: 0x00c0, 0x31ce: 0x00c0, 0x31cf: 0x00c0, 0x31d0: 0x00c0, - 0x31e0: 0x00c3, 0x31e1: 0x0080, 0x31e2: 0x0080, 0x31e3: 0x0080, - 0x31e4: 0x0080, 0x31e5: 0x0080, 0x31e6: 0x0080, 0x31e7: 0x0080, 0x31e8: 0x0080, 0x31e9: 0x0080, - 0x31ea: 0x0080, 0x31eb: 0x0080, 0x31ec: 0x0080, 0x31ed: 0x0080, 0x31ee: 0x0080, 0x31ef: 0x0080, - 0x31f0: 0x0080, 0x31f1: 0x0080, 0x31f2: 0x0080, 0x31f3: 0x0080, 0x31f4: 0x0080, 0x31f5: 0x0080, - 0x31f6: 0x0080, 0x31f7: 0x0080, 0x31f8: 0x0080, 0x31f9: 0x0080, 0x31fa: 0x0080, 0x31fb: 0x0080, + 0x31cc: 0x00c0, 0x31cd: 0x00c0, 0x31ce: 0x00c0, 0x31cf: 0x00c0, 0x31d0: 0x00c0, 0x31d1: 0x00c0, + 0x31d2: 0x00c0, 0x31d3: 0x00c0, 0x31d4: 0x00c0, 0x31d5: 0x00c0, 0x31d6: 0x00c0, 0x31d7: 0x00c0, + 0x31d8: 0x00c0, 0x31d9: 0x00c0, 0x31da: 0x00c0, 0x31db: 0x00c0, 0x31dc: 0x00c0, 0x31dd: 0x00c0, + 0x31de: 0x00c0, 0x31df: 0x00c0, 0x31e0: 0x0080, 0x31e1: 0x0080, 0x31e2: 0x0080, 0x31e3: 0x0080, + 0x31ed: 0x00c0, 0x31ee: 0x00c0, 0x31ef: 0x00c0, + 0x31f0: 0x00c0, 0x31f1: 0x00c0, 0x31f2: 0x00c0, 0x31f3: 0x00c0, 0x31f4: 0x00c0, 0x31f5: 0x00c0, + 0x31f6: 0x00c0, 0x31f7: 0x00c0, 0x31f8: 0x00c0, 0x31f9: 0x00c0, 0x31fa: 0x00c0, 0x31fb: 0x00c0, + 0x31fc: 0x00c0, 0x31fd: 0x00c0, 0x31fe: 0x00c0, 0x31ff: 0x00c0, // Block 0xc8, offset 0x3200 - 0x3200: 0x00c0, 0x3201: 0x00c0, 0x3202: 0x00c0, 0x3203: 0x00c0, 0x3204: 0x00c0, 0x3205: 0x00c0, - 0x3206: 0x00c0, 0x3207: 0x00c0, 0x3208: 0x00c0, 0x3209: 0x00c0, 0x320a: 0x00c0, 0x320b: 0x00c0, - 0x320c: 0x00c0, 0x320d: 0x00c0, 0x320e: 0x00c0, 0x320f: 0x00c0, 0x3210: 0x00c0, 0x3211: 0x00c0, + 0x3200: 0x00c0, 0x3201: 0x0080, 0x3202: 0x00c0, 0x3203: 0x00c0, 0x3204: 0x00c0, 0x3205: 0x00c0, + 0x3206: 0x00c0, 0x3207: 0x00c0, 0x3208: 0x00c0, 0x3209: 0x00c0, 0x320a: 0x0080, + 0x3210: 0x00c0, 0x3211: 0x00c0, 0x3212: 0x00c0, 0x3213: 0x00c0, 0x3214: 0x00c0, 0x3215: 0x00c0, 0x3216: 0x00c0, 0x3217: 0x00c0, 0x3218: 0x00c0, 0x3219: 0x00c0, 0x321a: 0x00c0, 0x321b: 0x00c0, 0x321c: 0x00c0, 0x321d: 0x00c0, - 0x321e: 0x00c0, 0x321f: 0x00c0, 0x3220: 0x0080, 0x3221: 0x0080, 0x3222: 0x0080, 0x3223: 0x0080, + 0x321e: 0x00c0, 0x321f: 0x00c0, 0x3220: 0x00c0, 0x3221: 0x00c0, 0x3222: 0x00c0, 0x3223: 0x00c0, + 0x3224: 0x00c0, 0x3225: 0x00c0, 0x3226: 0x00c0, 0x3227: 0x00c0, 0x3228: 0x00c0, 0x3229: 0x00c0, + 0x322a: 0x00c0, 0x322b: 0x00c0, 0x322c: 0x00c0, 0x322d: 0x00c0, 0x322e: 0x00c0, 0x322f: 0x00c0, 0x3230: 0x00c0, 0x3231: 0x00c0, 0x3232: 0x00c0, 0x3233: 0x00c0, 0x3234: 0x00c0, 0x3235: 0x00c0, - 0x3236: 0x00c0, 0x3237: 0x00c0, 0x3238: 0x00c0, 0x3239: 0x00c0, 0x323a: 0x00c0, 0x323b: 0x00c0, - 0x323c: 0x00c0, 0x323d: 0x00c0, 0x323e: 0x00c0, 0x323f: 0x00c0, + 0x3236: 0x00c3, 0x3237: 0x00c3, 0x3238: 0x00c3, 0x3239: 0x00c3, 0x323a: 0x00c3, // Block 0xc9, offset 0x3240 - 0x3240: 0x00c0, 0x3241: 0x0080, 0x3242: 0x00c0, 0x3243: 0x00c0, 0x3244: 0x00c0, 0x3245: 0x00c0, - 0x3246: 0x00c0, 0x3247: 0x00c0, 0x3248: 0x00c0, 0x3249: 0x00c0, 0x324a: 0x0080, - 0x3250: 0x00c0, 0x3251: 0x00c0, + 0x3240: 0x00c0, 0x3241: 0x00c0, 0x3242: 0x00c0, 0x3243: 0x00c0, 0x3244: 0x00c0, 0x3245: 0x00c0, + 0x3246: 0x00c0, 0x3247: 0x00c0, 0x3248: 0x00c0, 0x3249: 0x00c0, 0x324a: 0x00c0, 0x324b: 0x00c0, + 0x324c: 0x00c0, 0x324d: 0x00c0, 0x324e: 0x00c0, 0x324f: 0x00c0, 0x3250: 0x00c0, 0x3251: 0x00c0, 0x3252: 0x00c0, 0x3253: 0x00c0, 0x3254: 0x00c0, 0x3255: 0x00c0, 0x3256: 0x00c0, 0x3257: 0x00c0, 0x3258: 0x00c0, 0x3259: 0x00c0, 0x325a: 0x00c0, 0x325b: 0x00c0, 0x325c: 0x00c0, 0x325d: 0x00c0, - 0x325e: 0x00c0, 0x325f: 0x00c0, 0x3260: 0x00c0, 0x3261: 0x00c0, 0x3262: 0x00c0, 0x3263: 0x00c0, + 0x325f: 0x0080, 0x3260: 0x00c0, 0x3261: 0x00c0, 0x3262: 0x00c0, 0x3263: 0x00c0, 0x3264: 0x00c0, 0x3265: 0x00c0, 0x3266: 0x00c0, 0x3267: 0x00c0, 0x3268: 0x00c0, 0x3269: 0x00c0, 0x326a: 0x00c0, 0x326b: 0x00c0, 0x326c: 0x00c0, 0x326d: 0x00c0, 0x326e: 0x00c0, 0x326f: 0x00c0, 0x3270: 0x00c0, 0x3271: 0x00c0, 0x3272: 0x00c0, 0x3273: 0x00c0, 0x3274: 0x00c0, 0x3275: 0x00c0, - 0x3276: 0x00c3, 0x3277: 0x00c3, 0x3278: 0x00c3, 0x3279: 0x00c3, 0x327a: 0x00c3, + 0x3276: 0x00c0, 0x3277: 0x00c0, 0x3278: 0x00c0, 0x3279: 0x00c0, 0x327a: 0x00c0, 0x327b: 0x00c0, + 0x327c: 0x00c0, 0x327d: 0x00c0, 0x327e: 0x00c0, 0x327f: 0x00c0, // Block 0xca, offset 0x3280 - 0x3280: 0x00c0, 0x3281: 0x00c0, 0x3282: 0x00c0, 0x3283: 0x00c0, 0x3284: 0x00c0, 0x3285: 0x00c0, - 0x3286: 0x00c0, 0x3287: 0x00c0, 0x3288: 0x00c0, 0x3289: 0x00c0, 0x328a: 0x00c0, 0x328b: 0x00c0, - 0x328c: 0x00c0, 0x328d: 0x00c0, 0x328e: 0x00c0, 0x328f: 0x00c0, 0x3290: 0x00c0, 0x3291: 0x00c0, - 0x3292: 0x00c0, 0x3293: 0x00c0, 0x3294: 0x00c0, 0x3295: 0x00c0, 0x3296: 0x00c0, 0x3297: 0x00c0, - 0x3298: 0x00c0, 0x3299: 0x00c0, 0x329a: 0x00c0, 0x329b: 0x00c0, 0x329c: 0x00c0, 0x329d: 0x00c0, - 0x329f: 0x0080, 0x32a0: 0x00c0, 0x32a1: 0x00c0, 0x32a2: 0x00c0, 0x32a3: 0x00c0, - 0x32a4: 0x00c0, 0x32a5: 0x00c0, 0x32a6: 0x00c0, 0x32a7: 0x00c0, 0x32a8: 0x00c0, 0x32a9: 0x00c0, - 0x32aa: 0x00c0, 0x32ab: 0x00c0, 0x32ac: 0x00c0, 0x32ad: 0x00c0, 0x32ae: 0x00c0, 0x32af: 0x00c0, - 0x32b0: 0x00c0, 0x32b1: 0x00c0, 0x32b2: 0x00c0, 0x32b3: 0x00c0, 0x32b4: 0x00c0, 0x32b5: 0x00c0, - 0x32b6: 0x00c0, 0x32b7: 0x00c0, 0x32b8: 0x00c0, 0x32b9: 0x00c0, 0x32ba: 0x00c0, 0x32bb: 0x00c0, - 0x32bc: 0x00c0, 0x32bd: 0x00c0, 0x32be: 0x00c0, 0x32bf: 0x00c0, + 0x3280: 0x00c0, 0x3281: 0x00c0, 0x3282: 0x00c0, 0x3283: 0x00c0, + 0x3288: 0x00c0, 0x3289: 0x00c0, 0x328a: 0x00c0, 0x328b: 0x00c0, + 0x328c: 0x00c0, 0x328d: 0x00c0, 0x328e: 0x00c0, 0x328f: 0x00c0, 0x3290: 0x0080, 0x3291: 0x0080, + 0x3292: 0x0080, 0x3293: 0x0080, 0x3294: 0x0080, 0x3295: 0x0080, // Block 0xcb, offset 0x32c0 - 0x32c0: 0x00c0, 0x32c1: 0x00c0, 0x32c2: 0x00c0, 0x32c3: 0x00c0, - 0x32c8: 0x00c0, 0x32c9: 0x00c0, 0x32ca: 0x00c0, 0x32cb: 0x00c0, - 0x32cc: 0x00c0, 0x32cd: 0x00c0, 0x32ce: 0x00c0, 0x32cf: 0x00c0, 0x32d0: 0x0080, 0x32d1: 0x0080, - 0x32d2: 0x0080, 0x32d3: 0x0080, 0x32d4: 0x0080, 0x32d5: 0x0080, + 0x32c0: 0x00c0, 0x32c1: 0x00c0, 0x32c2: 0x00c0, 0x32c3: 0x00c0, 0x32c4: 0x00c0, 0x32c5: 0x00c0, + 0x32c6: 0x00c0, 0x32c7: 0x00c0, 0x32c8: 0x00c0, 0x32c9: 0x00c0, 0x32ca: 0x00c0, 0x32cb: 0x00c0, + 0x32cc: 0x00c0, 0x32cd: 0x00c0, 0x32ce: 0x00c0, 0x32cf: 0x00c0, 0x32d0: 0x00c0, 0x32d1: 0x00c0, + 0x32d2: 0x00c0, 0x32d3: 0x00c0, 0x32d4: 0x00c0, 0x32d5: 0x00c0, 0x32d6: 0x00c0, 0x32d7: 0x00c0, + 0x32d8: 0x00c0, 0x32d9: 0x00c0, 0x32da: 0x00c0, 0x32db: 0x00c0, 0x32dc: 0x00c0, 0x32dd: 0x00c0, + 0x32e0: 0x00c0, 0x32e1: 0x00c0, 0x32e2: 0x00c0, 0x32e3: 0x00c0, + 0x32e4: 0x00c0, 0x32e5: 0x00c0, 0x32e6: 0x00c0, 0x32e7: 0x00c0, 0x32e8: 0x00c0, 0x32e9: 0x00c0, + 0x32f0: 0x00c0, 0x32f1: 0x00c0, 0x32f2: 0x00c0, 0x32f3: 0x00c0, 0x32f4: 0x00c0, 0x32f5: 0x00c0, + 0x32f6: 0x00c0, 0x32f7: 0x00c0, 0x32f8: 0x00c0, 0x32f9: 0x00c0, 0x32fa: 0x00c0, 0x32fb: 0x00c0, + 0x32fc: 0x00c0, 0x32fd: 0x00c0, 0x32fe: 0x00c0, 0x32ff: 0x00c0, // Block 0xcc, offset 0x3300 0x3300: 0x00c0, 0x3301: 0x00c0, 0x3302: 0x00c0, 0x3303: 0x00c0, 0x3304: 0x00c0, 0x3305: 0x00c0, 0x3306: 0x00c0, 0x3307: 0x00c0, 0x3308: 0x00c0, 0x3309: 0x00c0, 0x330a: 0x00c0, 0x330b: 0x00c0, 0x330c: 0x00c0, 0x330d: 0x00c0, 0x330e: 0x00c0, 0x330f: 0x00c0, 0x3310: 0x00c0, 0x3311: 0x00c0, - 0x3312: 0x00c0, 0x3313: 0x00c0, 0x3314: 0x00c0, 0x3315: 0x00c0, 0x3316: 0x00c0, 0x3317: 0x00c0, + 0x3312: 0x00c0, 0x3313: 0x00c0, 0x3318: 0x00c0, 0x3319: 0x00c0, 0x331a: 0x00c0, 0x331b: 0x00c0, 0x331c: 0x00c0, 0x331d: 0x00c0, - 0x3320: 0x00c0, 0x3321: 0x00c0, 0x3322: 0x00c0, 0x3323: 0x00c0, + 0x331e: 0x00c0, 0x331f: 0x00c0, 0x3320: 0x00c0, 0x3321: 0x00c0, 0x3322: 0x00c0, 0x3323: 0x00c0, 0x3324: 0x00c0, 0x3325: 0x00c0, 0x3326: 0x00c0, 0x3327: 0x00c0, 0x3328: 0x00c0, 0x3329: 0x00c0, + 0x332a: 0x00c0, 0x332b: 0x00c0, 0x332c: 0x00c0, 0x332d: 0x00c0, 0x332e: 0x00c0, 0x332f: 0x00c0, 0x3330: 0x00c0, 0x3331: 0x00c0, 0x3332: 0x00c0, 0x3333: 0x00c0, 0x3334: 0x00c0, 0x3335: 0x00c0, 0x3336: 0x00c0, 0x3337: 0x00c0, 0x3338: 0x00c0, 0x3339: 0x00c0, 0x333a: 0x00c0, 0x333b: 0x00c0, - 0x333c: 0x00c0, 0x333d: 0x00c0, 0x333e: 0x00c0, 0x333f: 0x00c0, // Block 0xcd, offset 0x3340 0x3340: 0x00c0, 0x3341: 0x00c0, 0x3342: 0x00c0, 0x3343: 0x00c0, 0x3344: 0x00c0, 0x3345: 0x00c0, 0x3346: 0x00c0, 0x3347: 0x00c0, 0x3348: 0x00c0, 0x3349: 0x00c0, 0x334a: 0x00c0, 0x334b: 0x00c0, 0x334c: 0x00c0, 0x334d: 0x00c0, 0x334e: 0x00c0, 0x334f: 0x00c0, 0x3350: 0x00c0, 0x3351: 0x00c0, - 0x3352: 0x00c0, 0x3353: 0x00c0, + 0x3352: 0x00c0, 0x3353: 0x00c0, 0x3354: 0x00c0, 0x3355: 0x00c0, 0x3356: 0x00c0, 0x3357: 0x00c0, 0x3358: 0x00c0, 0x3359: 0x00c0, 0x335a: 0x00c0, 0x335b: 0x00c0, 0x335c: 0x00c0, 0x335d: 0x00c0, 0x335e: 0x00c0, 0x335f: 0x00c0, 0x3360: 0x00c0, 0x3361: 0x00c0, 0x3362: 0x00c0, 0x3363: 0x00c0, - 0x3364: 0x00c0, 0x3365: 0x00c0, 0x3366: 0x00c0, 0x3367: 0x00c0, 0x3368: 0x00c0, 0x3369: 0x00c0, - 0x336a: 0x00c0, 0x336b: 0x00c0, 0x336c: 0x00c0, 0x336d: 0x00c0, 0x336e: 0x00c0, 0x336f: 0x00c0, + 0x3364: 0x00c0, 0x3365: 0x00c0, 0x3366: 0x00c0, 0x3367: 0x00c0, 0x3370: 0x00c0, 0x3371: 0x00c0, 0x3372: 0x00c0, 0x3373: 0x00c0, 0x3374: 0x00c0, 0x3375: 0x00c0, 0x3376: 0x00c0, 0x3377: 0x00c0, 0x3378: 0x00c0, 0x3379: 0x00c0, 0x337a: 0x00c0, 0x337b: 0x00c0, + 0x337c: 0x00c0, 0x337d: 0x00c0, 0x337e: 0x00c0, 0x337f: 0x00c0, // Block 0xce, offset 0x3380 0x3380: 0x00c0, 0x3381: 0x00c0, 0x3382: 0x00c0, 0x3383: 0x00c0, 0x3384: 0x00c0, 0x3385: 0x00c0, 0x3386: 0x00c0, 0x3387: 0x00c0, 0x3388: 0x00c0, 0x3389: 0x00c0, 0x338a: 0x00c0, 0x338b: 0x00c0, @@ -2459,10 +2469,7 @@ var derivedPropertiesValues = [20736]uint8{ 0x3392: 0x00c0, 0x3393: 0x00c0, 0x3394: 0x00c0, 0x3395: 0x00c0, 0x3396: 0x00c0, 0x3397: 0x00c0, 0x3398: 0x00c0, 0x3399: 0x00c0, 0x339a: 0x00c0, 0x339b: 0x00c0, 0x339c: 0x00c0, 0x339d: 0x00c0, 0x339e: 0x00c0, 0x339f: 0x00c0, 0x33a0: 0x00c0, 0x33a1: 0x00c0, 0x33a2: 0x00c0, 0x33a3: 0x00c0, - 0x33a4: 0x00c0, 0x33a5: 0x00c0, 0x33a6: 0x00c0, 0x33a7: 0x00c0, - 0x33b0: 0x00c0, 0x33b1: 0x00c0, 0x33b2: 0x00c0, 0x33b3: 0x00c0, 0x33b4: 0x00c0, 0x33b5: 0x00c0, - 0x33b6: 0x00c0, 0x33b7: 0x00c0, 0x33b8: 0x00c0, 0x33b9: 0x00c0, 0x33ba: 0x00c0, 0x33bb: 0x00c0, - 0x33bc: 0x00c0, 0x33bd: 0x00c0, 0x33be: 0x00c0, 0x33bf: 0x00c0, + 0x33af: 0x0080, // Block 0xcf, offset 0x33c0 0x33c0: 0x00c0, 0x33c1: 0x00c0, 0x33c2: 0x00c0, 0x33c3: 0x00c0, 0x33c4: 0x00c0, 0x33c5: 0x00c0, 0x33c6: 0x00c0, 0x33c7: 0x00c0, 0x33c8: 0x00c0, 0x33c9: 0x00c0, 0x33ca: 0x00c0, 0x33cb: 0x00c0, @@ -2470,162 +2477,164 @@ var derivedPropertiesValues = [20736]uint8{ 0x33d2: 0x00c0, 0x33d3: 0x00c0, 0x33d4: 0x00c0, 0x33d5: 0x00c0, 0x33d6: 0x00c0, 0x33d7: 0x00c0, 0x33d8: 0x00c0, 0x33d9: 0x00c0, 0x33da: 0x00c0, 0x33db: 0x00c0, 0x33dc: 0x00c0, 0x33dd: 0x00c0, 0x33de: 0x00c0, 0x33df: 0x00c0, 0x33e0: 0x00c0, 0x33e1: 0x00c0, 0x33e2: 0x00c0, 0x33e3: 0x00c0, - 0x33ef: 0x0080, + 0x33e4: 0x00c0, 0x33e5: 0x00c0, 0x33e6: 0x00c0, 0x33e7: 0x00c0, 0x33e8: 0x00c0, 0x33e9: 0x00c0, + 0x33ea: 0x00c0, 0x33eb: 0x00c0, 0x33ec: 0x00c0, 0x33ed: 0x00c0, 0x33ee: 0x00c0, 0x33ef: 0x00c0, + 0x33f0: 0x00c0, 0x33f1: 0x00c0, 0x33f2: 0x00c0, 0x33f3: 0x00c0, 0x33f4: 0x00c0, 0x33f5: 0x00c0, + 0x33f6: 0x00c0, // Block 0xd0, offset 0x3400 0x3400: 0x00c0, 0x3401: 0x00c0, 0x3402: 0x00c0, 0x3403: 0x00c0, 0x3404: 0x00c0, 0x3405: 0x00c0, 0x3406: 0x00c0, 0x3407: 0x00c0, 0x3408: 0x00c0, 0x3409: 0x00c0, 0x340a: 0x00c0, 0x340b: 0x00c0, 0x340c: 0x00c0, 0x340d: 0x00c0, 0x340e: 0x00c0, 0x340f: 0x00c0, 0x3410: 0x00c0, 0x3411: 0x00c0, - 0x3412: 0x00c0, 0x3413: 0x00c0, 0x3414: 0x00c0, 0x3415: 0x00c0, 0x3416: 0x00c0, 0x3417: 0x00c0, - 0x3418: 0x00c0, 0x3419: 0x00c0, 0x341a: 0x00c0, 0x341b: 0x00c0, 0x341c: 0x00c0, 0x341d: 0x00c0, - 0x341e: 0x00c0, 0x341f: 0x00c0, 0x3420: 0x00c0, 0x3421: 0x00c0, 0x3422: 0x00c0, 0x3423: 0x00c0, - 0x3424: 0x00c0, 0x3425: 0x00c0, 0x3426: 0x00c0, 0x3427: 0x00c0, 0x3428: 0x00c0, 0x3429: 0x00c0, - 0x342a: 0x00c0, 0x342b: 0x00c0, 0x342c: 0x00c0, 0x342d: 0x00c0, 0x342e: 0x00c0, 0x342f: 0x00c0, - 0x3430: 0x00c0, 0x3431: 0x00c0, 0x3432: 0x00c0, 0x3433: 0x00c0, 0x3434: 0x00c0, 0x3435: 0x00c0, - 0x3436: 0x00c0, + 0x3412: 0x00c0, 0x3413: 0x00c0, 0x3414: 0x00c0, 0x3415: 0x00c0, + 0x3420: 0x00c0, 0x3421: 0x00c0, 0x3422: 0x00c0, 0x3423: 0x00c0, + 0x3424: 0x00c0, 0x3425: 0x00c0, 0x3426: 0x00c0, 0x3427: 0x00c0, // Block 0xd1, offset 0x3440 0x3440: 0x00c0, 0x3441: 0x00c0, 0x3442: 0x00c0, 0x3443: 0x00c0, 0x3444: 0x00c0, 0x3445: 0x00c0, - 0x3446: 0x00c0, 0x3447: 0x00c0, 0x3448: 0x00c0, 0x3449: 0x00c0, 0x344a: 0x00c0, 0x344b: 0x00c0, + 0x3448: 0x00c0, 0x344a: 0x00c0, 0x344b: 0x00c0, 0x344c: 0x00c0, 0x344d: 0x00c0, 0x344e: 0x00c0, 0x344f: 0x00c0, 0x3450: 0x00c0, 0x3451: 0x00c0, - 0x3452: 0x00c0, 0x3453: 0x00c0, 0x3454: 0x00c0, 0x3455: 0x00c0, - 0x3460: 0x00c0, 0x3461: 0x00c0, 0x3462: 0x00c0, 0x3463: 0x00c0, - 0x3464: 0x00c0, 0x3465: 0x00c0, 0x3466: 0x00c0, 0x3467: 0x00c0, + 0x3452: 0x00c0, 0x3453: 0x00c0, 0x3454: 0x00c0, 0x3455: 0x00c0, 0x3456: 0x00c0, 0x3457: 0x00c0, + 0x3458: 0x00c0, 0x3459: 0x00c0, 0x345a: 0x00c0, 0x345b: 0x00c0, 0x345c: 0x00c0, 0x345d: 0x00c0, + 0x345e: 0x00c0, 0x345f: 0x00c0, 0x3460: 0x00c0, 0x3461: 0x00c0, 0x3462: 0x00c0, 0x3463: 0x00c0, + 0x3464: 0x00c0, 0x3465: 0x00c0, 0x3466: 0x00c0, 0x3467: 0x00c0, 0x3468: 0x00c0, 0x3469: 0x00c0, + 0x346a: 0x00c0, 0x346b: 0x00c0, 0x346c: 0x00c0, 0x346d: 0x00c0, 0x346e: 0x00c0, 0x346f: 0x00c0, + 0x3470: 0x00c0, 0x3471: 0x00c0, 0x3472: 0x00c0, 0x3473: 0x00c0, 0x3474: 0x00c0, 0x3475: 0x00c0, + 0x3477: 0x00c0, 0x3478: 0x00c0, + 0x347c: 0x00c0, 0x347f: 0x00c0, // Block 0xd2, offset 0x3480 0x3480: 0x00c0, 0x3481: 0x00c0, 0x3482: 0x00c0, 0x3483: 0x00c0, 0x3484: 0x00c0, 0x3485: 0x00c0, - 0x3488: 0x00c0, 0x348a: 0x00c0, 0x348b: 0x00c0, + 0x3486: 0x00c0, 0x3487: 0x00c0, 0x3488: 0x00c0, 0x3489: 0x00c0, 0x348a: 0x00c0, 0x348b: 0x00c0, 0x348c: 0x00c0, 0x348d: 0x00c0, 0x348e: 0x00c0, 0x348f: 0x00c0, 0x3490: 0x00c0, 0x3491: 0x00c0, - 0x3492: 0x00c0, 0x3493: 0x00c0, 0x3494: 0x00c0, 0x3495: 0x00c0, 0x3496: 0x00c0, 0x3497: 0x00c0, - 0x3498: 0x00c0, 0x3499: 0x00c0, 0x349a: 0x00c0, 0x349b: 0x00c0, 0x349c: 0x00c0, 0x349d: 0x00c0, - 0x349e: 0x00c0, 0x349f: 0x00c0, 0x34a0: 0x00c0, 0x34a1: 0x00c0, 0x34a2: 0x00c0, 0x34a3: 0x00c0, + 0x3492: 0x00c0, 0x3493: 0x00c0, 0x3494: 0x00c0, 0x3495: 0x00c0, 0x3497: 0x0080, + 0x3498: 0x0080, 0x3499: 0x0080, 0x349a: 0x0080, 0x349b: 0x0080, 0x349c: 0x0080, 0x349d: 0x0080, + 0x349e: 0x0080, 0x349f: 0x0080, 0x34a0: 0x00c0, 0x34a1: 0x00c0, 0x34a2: 0x00c0, 0x34a3: 0x00c0, 0x34a4: 0x00c0, 0x34a5: 0x00c0, 0x34a6: 0x00c0, 0x34a7: 0x00c0, 0x34a8: 0x00c0, 0x34a9: 0x00c0, 0x34aa: 0x00c0, 0x34ab: 0x00c0, 0x34ac: 0x00c0, 0x34ad: 0x00c0, 0x34ae: 0x00c0, 0x34af: 0x00c0, 0x34b0: 0x00c0, 0x34b1: 0x00c0, 0x34b2: 0x00c0, 0x34b3: 0x00c0, 0x34b4: 0x00c0, 0x34b5: 0x00c0, - 0x34b7: 0x00c0, 0x34b8: 0x00c0, - 0x34bc: 0x00c0, 0x34bf: 0x00c0, + 0x34b6: 0x00c0, 0x34b7: 0x0080, 0x34b8: 0x0080, 0x34b9: 0x0080, 0x34ba: 0x0080, 0x34bb: 0x0080, + 0x34bc: 0x0080, 0x34bd: 0x0080, 0x34be: 0x0080, 0x34bf: 0x0080, // Block 0xd3, offset 0x34c0 0x34c0: 0x00c0, 0x34c1: 0x00c0, 0x34c2: 0x00c0, 0x34c3: 0x00c0, 0x34c4: 0x00c0, 0x34c5: 0x00c0, 0x34c6: 0x00c0, 0x34c7: 0x00c0, 0x34c8: 0x00c0, 0x34c9: 0x00c0, 0x34ca: 0x00c0, 0x34cb: 0x00c0, 0x34cc: 0x00c0, 0x34cd: 0x00c0, 0x34ce: 0x00c0, 0x34cf: 0x00c0, 0x34d0: 0x00c0, 0x34d1: 0x00c0, - 0x34d2: 0x00c0, 0x34d3: 0x00c0, 0x34d4: 0x00c0, 0x34d5: 0x00c0, 0x34d7: 0x0080, - 0x34d8: 0x0080, 0x34d9: 0x0080, 0x34da: 0x0080, 0x34db: 0x0080, 0x34dc: 0x0080, 0x34dd: 0x0080, - 0x34de: 0x0080, 0x34df: 0x0080, 0x34e0: 0x00c0, 0x34e1: 0x00c0, 0x34e2: 0x00c0, 0x34e3: 0x00c0, - 0x34e4: 0x00c0, 0x34e5: 0x00c0, 0x34e6: 0x00c0, 0x34e7: 0x00c0, 0x34e8: 0x00c0, 0x34e9: 0x00c0, - 0x34ea: 0x00c0, 0x34eb: 0x00c0, 0x34ec: 0x00c0, 0x34ed: 0x00c0, 0x34ee: 0x00c0, 0x34ef: 0x00c0, - 0x34f0: 0x00c0, 0x34f1: 0x00c0, 0x34f2: 0x00c0, 0x34f3: 0x00c0, 0x34f4: 0x00c0, 0x34f5: 0x00c0, - 0x34f6: 0x00c0, 0x34f7: 0x0080, 0x34f8: 0x0080, 0x34f9: 0x0080, 0x34fa: 0x0080, 0x34fb: 0x0080, - 0x34fc: 0x0080, 0x34fd: 0x0080, 0x34fe: 0x0080, 0x34ff: 0x0080, + 0x34d2: 0x00c0, 0x34d3: 0x00c0, 0x34d4: 0x00c0, 0x34d5: 0x00c0, 0x34d6: 0x00c0, 0x34d7: 0x00c0, + 0x34d8: 0x00c0, 0x34d9: 0x00c0, 0x34da: 0x00c0, 0x34db: 0x00c0, 0x34dc: 0x00c0, 0x34dd: 0x00c0, + 0x34de: 0x00c0, + 0x34e7: 0x0080, 0x34e8: 0x0080, 0x34e9: 0x0080, + 0x34ea: 0x0080, 0x34eb: 0x0080, 0x34ec: 0x0080, 0x34ed: 0x0080, 0x34ee: 0x0080, 0x34ef: 0x0080, // Block 0xd4, offset 0x3500 - 0x3500: 0x00c0, 0x3501: 0x00c0, 0x3502: 0x00c0, 0x3503: 0x00c0, 0x3504: 0x00c0, 0x3505: 0x00c0, - 0x3506: 0x00c0, 0x3507: 0x00c0, 0x3508: 0x00c0, 0x3509: 0x00c0, 0x350a: 0x00c0, 0x350b: 0x00c0, - 0x350c: 0x00c0, 0x350d: 0x00c0, 0x350e: 0x00c0, 0x350f: 0x00c0, 0x3510: 0x00c0, 0x3511: 0x00c0, - 0x3512: 0x00c0, 0x3513: 0x00c0, 0x3514: 0x00c0, 0x3515: 0x00c0, 0x3516: 0x00c0, 0x3517: 0x00c0, - 0x3518: 0x00c0, 0x3519: 0x00c0, 0x351a: 0x00c0, 0x351b: 0x00c0, 0x351c: 0x00c0, 0x351d: 0x00c0, - 0x351e: 0x00c0, - 0x3527: 0x0080, 0x3528: 0x0080, 0x3529: 0x0080, - 0x352a: 0x0080, 0x352b: 0x0080, 0x352c: 0x0080, 0x352d: 0x0080, 0x352e: 0x0080, 0x352f: 0x0080, + 0x3520: 0x00c0, 0x3521: 0x00c0, 0x3522: 0x00c0, 0x3523: 0x00c0, + 0x3524: 0x00c0, 0x3525: 0x00c0, 0x3526: 0x00c0, 0x3527: 0x00c0, 0x3528: 0x00c0, 0x3529: 0x00c0, + 0x352a: 0x00c0, 0x352b: 0x00c0, 0x352c: 0x00c0, 0x352d: 0x00c0, 0x352e: 0x00c0, 0x352f: 0x00c0, + 0x3530: 0x00c0, 0x3531: 0x00c0, 0x3532: 0x00c0, 0x3534: 0x00c0, 0x3535: 0x00c0, + 0x353b: 0x0080, + 0x353c: 0x0080, 0x353d: 0x0080, 0x353e: 0x0080, 0x353f: 0x0080, // Block 0xd5, offset 0x3540 - 0x3560: 0x00c0, 0x3561: 0x00c0, 0x3562: 0x00c0, 0x3563: 0x00c0, + 0x3540: 0x00c0, 0x3541: 0x00c0, 0x3542: 0x00c0, 0x3543: 0x00c0, 0x3544: 0x00c0, 0x3545: 0x00c0, + 0x3546: 0x00c0, 0x3547: 0x00c0, 0x3548: 0x00c0, 0x3549: 0x00c0, 0x354a: 0x00c0, 0x354b: 0x00c0, + 0x354c: 0x00c0, 0x354d: 0x00c0, 0x354e: 0x00c0, 0x354f: 0x00c0, 0x3550: 0x00c0, 0x3551: 0x00c0, + 0x3552: 0x00c0, 0x3553: 0x00c0, 0x3554: 0x00c0, 0x3555: 0x00c0, 0x3556: 0x0080, 0x3557: 0x0080, + 0x3558: 0x0080, 0x3559: 0x0080, 0x355a: 0x0080, 0x355b: 0x0080, + 0x355f: 0x0080, 0x3560: 0x00c0, 0x3561: 0x00c0, 0x3562: 0x00c0, 0x3563: 0x00c0, 0x3564: 0x00c0, 0x3565: 0x00c0, 0x3566: 0x00c0, 0x3567: 0x00c0, 0x3568: 0x00c0, 0x3569: 0x00c0, 0x356a: 0x00c0, 0x356b: 0x00c0, 0x356c: 0x00c0, 0x356d: 0x00c0, 0x356e: 0x00c0, 0x356f: 0x00c0, - 0x3570: 0x00c0, 0x3571: 0x00c0, 0x3572: 0x00c0, 0x3574: 0x00c0, 0x3575: 0x00c0, - 0x357b: 0x0080, - 0x357c: 0x0080, 0x357d: 0x0080, 0x357e: 0x0080, 0x357f: 0x0080, + 0x3570: 0x00c0, 0x3571: 0x00c0, 0x3572: 0x00c0, 0x3573: 0x00c0, 0x3574: 0x00c0, 0x3575: 0x00c0, + 0x3576: 0x00c0, 0x3577: 0x00c0, 0x3578: 0x00c0, 0x3579: 0x00c0, + 0x357f: 0x0080, // Block 0xd6, offset 0x3580 0x3580: 0x00c0, 0x3581: 0x00c0, 0x3582: 0x00c0, 0x3583: 0x00c0, 0x3584: 0x00c0, 0x3585: 0x00c0, 0x3586: 0x00c0, 0x3587: 0x00c0, 0x3588: 0x00c0, 0x3589: 0x00c0, 0x358a: 0x00c0, 0x358b: 0x00c0, 0x358c: 0x00c0, 0x358d: 0x00c0, 0x358e: 0x00c0, 0x358f: 0x00c0, 0x3590: 0x00c0, 0x3591: 0x00c0, - 0x3592: 0x00c0, 0x3593: 0x00c0, 0x3594: 0x00c0, 0x3595: 0x00c0, 0x3596: 0x0080, 0x3597: 0x0080, - 0x3598: 0x0080, 0x3599: 0x0080, 0x359a: 0x0080, 0x359b: 0x0080, - 0x359f: 0x0080, 0x35a0: 0x00c0, 0x35a1: 0x00c0, 0x35a2: 0x00c0, 0x35a3: 0x00c0, + 0x3592: 0x00c0, 0x3593: 0x00c0, 0x3594: 0x00c0, 0x3595: 0x00c0, 0x3596: 0x00c0, 0x3597: 0x00c0, + 0x3598: 0x00c0, 0x3599: 0x00c0, 0x359a: 0x00c0, 0x359b: 0x00c0, 0x359c: 0x00c0, 0x359d: 0x00c0, + 0x359e: 0x00c0, 0x359f: 0x00c0, 0x35a0: 0x00c0, 0x35a1: 0x00c0, 0x35a2: 0x00c0, 0x35a3: 0x00c0, 0x35a4: 0x00c0, 0x35a5: 0x00c0, 0x35a6: 0x00c0, 0x35a7: 0x00c0, 0x35a8: 0x00c0, 0x35a9: 0x00c0, 0x35aa: 0x00c0, 0x35ab: 0x00c0, 0x35ac: 0x00c0, 0x35ad: 0x00c0, 0x35ae: 0x00c0, 0x35af: 0x00c0, 0x35b0: 0x00c0, 0x35b1: 0x00c0, 0x35b2: 0x00c0, 0x35b3: 0x00c0, 0x35b4: 0x00c0, 0x35b5: 0x00c0, - 0x35b6: 0x00c0, 0x35b7: 0x00c0, 0x35b8: 0x00c0, 0x35b9: 0x00c0, - 0x35bf: 0x0080, + 0x35b6: 0x00c0, 0x35b7: 0x00c0, + 0x35bc: 0x0080, 0x35bd: 0x0080, 0x35be: 0x00c0, 0x35bf: 0x00c0, // Block 0xd7, offset 0x35c0 - 0x35c0: 0x00c0, 0x35c1: 0x00c0, 0x35c2: 0x00c0, 0x35c3: 0x00c0, 0x35c4: 0x00c0, 0x35c5: 0x00c0, - 0x35c6: 0x00c0, 0x35c7: 0x00c0, 0x35c8: 0x00c0, 0x35c9: 0x00c0, 0x35ca: 0x00c0, 0x35cb: 0x00c0, - 0x35cc: 0x00c0, 0x35cd: 0x00c0, 0x35ce: 0x00c0, 0x35cf: 0x00c0, 0x35d0: 0x00c0, 0x35d1: 0x00c0, - 0x35d2: 0x00c0, 0x35d3: 0x00c0, 0x35d4: 0x00c0, 0x35d5: 0x00c0, 0x35d6: 0x00c0, 0x35d7: 0x00c0, - 0x35d8: 0x00c0, 0x35d9: 0x00c0, 0x35da: 0x00c0, 0x35db: 0x00c0, 0x35dc: 0x00c0, 0x35dd: 0x00c0, + 0x35c0: 0x00c0, 0x35c1: 0x00c3, 0x35c2: 0x00c3, 0x35c3: 0x00c3, 0x35c5: 0x00c3, + 0x35c6: 0x00c3, + 0x35cc: 0x00c3, 0x35cd: 0x00c3, 0x35ce: 0x00c3, 0x35cf: 0x00c3, 0x35d0: 0x00c0, 0x35d1: 0x00c0, + 0x35d2: 0x00c0, 0x35d3: 0x00c0, 0x35d5: 0x00c0, 0x35d6: 0x00c0, 0x35d7: 0x00c0, + 0x35d9: 0x00c0, 0x35da: 0x00c0, 0x35db: 0x00c0, 0x35dc: 0x00c0, 0x35dd: 0x00c0, 0x35de: 0x00c0, 0x35df: 0x00c0, 0x35e0: 0x00c0, 0x35e1: 0x00c0, 0x35e2: 0x00c0, 0x35e3: 0x00c0, 0x35e4: 0x00c0, 0x35e5: 0x00c0, 0x35e6: 0x00c0, 0x35e7: 0x00c0, 0x35e8: 0x00c0, 0x35e9: 0x00c0, 0x35ea: 0x00c0, 0x35eb: 0x00c0, 0x35ec: 0x00c0, 0x35ed: 0x00c0, 0x35ee: 0x00c0, 0x35ef: 0x00c0, - 0x35f0: 0x00c0, 0x35f1: 0x00c0, 0x35f2: 0x00c0, 0x35f3: 0x00c0, 0x35f4: 0x00c0, 0x35f5: 0x00c0, - 0x35f6: 0x00c0, 0x35f7: 0x00c0, - 0x35fc: 0x0080, 0x35fd: 0x0080, 0x35fe: 0x00c0, 0x35ff: 0x00c0, + 0x35f0: 0x00c0, 0x35f1: 0x00c0, 0x35f2: 0x00c0, 0x35f3: 0x00c0, + 0x35f8: 0x00c3, 0x35f9: 0x00c3, 0x35fa: 0x00c3, + 0x35ff: 0x00c6, // Block 0xd8, offset 0x3600 - 0x3600: 0x00c0, 0x3601: 0x00c3, 0x3602: 0x00c3, 0x3603: 0x00c3, 0x3605: 0x00c3, - 0x3606: 0x00c3, - 0x360c: 0x00c3, 0x360d: 0x00c3, 0x360e: 0x00c3, 0x360f: 0x00c3, 0x3610: 0x00c0, 0x3611: 0x00c0, - 0x3612: 0x00c0, 0x3613: 0x00c0, 0x3615: 0x00c0, 0x3616: 0x00c0, 0x3617: 0x00c0, - 0x3619: 0x00c0, 0x361a: 0x00c0, 0x361b: 0x00c0, 0x361c: 0x00c0, 0x361d: 0x00c0, - 0x361e: 0x00c0, 0x361f: 0x00c0, 0x3620: 0x00c0, 0x3621: 0x00c0, 0x3622: 0x00c0, 0x3623: 0x00c0, + 0x3600: 0x0080, 0x3601: 0x0080, 0x3602: 0x0080, 0x3603: 0x0080, 0x3604: 0x0080, 0x3605: 0x0080, + 0x3606: 0x0080, 0x3607: 0x0080, + 0x3610: 0x0080, 0x3611: 0x0080, + 0x3612: 0x0080, 0x3613: 0x0080, 0x3614: 0x0080, 0x3615: 0x0080, 0x3616: 0x0080, 0x3617: 0x0080, + 0x3618: 0x0080, + 0x3620: 0x00c0, 0x3621: 0x00c0, 0x3622: 0x00c0, 0x3623: 0x00c0, 0x3624: 0x00c0, 0x3625: 0x00c0, 0x3626: 0x00c0, 0x3627: 0x00c0, 0x3628: 0x00c0, 0x3629: 0x00c0, 0x362a: 0x00c0, 0x362b: 0x00c0, 0x362c: 0x00c0, 0x362d: 0x00c0, 0x362e: 0x00c0, 0x362f: 0x00c0, - 0x3630: 0x00c0, 0x3631: 0x00c0, 0x3632: 0x00c0, 0x3633: 0x00c0, - 0x3638: 0x00c3, 0x3639: 0x00c3, 0x363a: 0x00c3, - 0x363f: 0x00c6, + 0x3630: 0x00c0, 0x3631: 0x00c0, 0x3632: 0x00c0, 0x3633: 0x00c0, 0x3634: 0x00c0, 0x3635: 0x00c0, + 0x3636: 0x00c0, 0x3637: 0x00c0, 0x3638: 0x00c0, 0x3639: 0x00c0, 0x363a: 0x00c0, 0x363b: 0x00c0, + 0x363c: 0x00c0, 0x363d: 0x0080, 0x363e: 0x0080, 0x363f: 0x0080, // Block 0xd9, offset 0x3640 - 0x3640: 0x0080, 0x3641: 0x0080, 0x3642: 0x0080, 0x3643: 0x0080, 0x3644: 0x0080, 0x3645: 0x0080, - 0x3646: 0x0080, 0x3647: 0x0080, - 0x3650: 0x0080, 0x3651: 0x0080, - 0x3652: 0x0080, 0x3653: 0x0080, 0x3654: 0x0080, 0x3655: 0x0080, 0x3656: 0x0080, 0x3657: 0x0080, - 0x3658: 0x0080, - 0x3660: 0x00c0, 0x3661: 0x00c0, 0x3662: 0x00c0, 0x3663: 0x00c0, - 0x3664: 0x00c0, 0x3665: 0x00c0, 0x3666: 0x00c0, 0x3667: 0x00c0, 0x3668: 0x00c0, 0x3669: 0x00c0, - 0x366a: 0x00c0, 0x366b: 0x00c0, 0x366c: 0x00c0, 0x366d: 0x00c0, 0x366e: 0x00c0, 0x366f: 0x00c0, - 0x3670: 0x00c0, 0x3671: 0x00c0, 0x3672: 0x00c0, 0x3673: 0x00c0, 0x3674: 0x00c0, 0x3675: 0x00c0, - 0x3676: 0x00c0, 0x3677: 0x00c0, 0x3678: 0x00c0, 0x3679: 0x00c0, 0x367a: 0x00c0, 0x367b: 0x00c0, - 0x367c: 0x00c0, 0x367d: 0x0080, 0x367e: 0x0080, 0x367f: 0x0080, + 0x3640: 0x00c0, 0x3641: 0x00c0, 0x3642: 0x00c0, 0x3643: 0x00c0, 0x3644: 0x00c0, 0x3645: 0x00c0, + 0x3646: 0x00c0, 0x3647: 0x00c0, 0x3648: 0x00c0, 0x3649: 0x00c0, 0x364a: 0x00c0, 0x364b: 0x00c0, + 0x364c: 0x00c0, 0x364d: 0x00c0, 0x364e: 0x00c0, 0x364f: 0x00c0, 0x3650: 0x00c0, 0x3651: 0x00c0, + 0x3652: 0x00c0, 0x3653: 0x00c0, 0x3654: 0x00c0, 0x3655: 0x00c0, 0x3656: 0x00c0, 0x3657: 0x00c0, + 0x3658: 0x00c0, 0x3659: 0x00c0, 0x365a: 0x00c0, 0x365b: 0x00c0, 0x365c: 0x00c0, 0x365d: 0x0080, + 0x365e: 0x0080, 0x365f: 0x0080, // Block 0xda, offset 0x3680 - 0x3680: 0x00c0, 0x3681: 0x00c0, 0x3682: 0x00c0, 0x3683: 0x00c0, 0x3684: 0x00c0, 0x3685: 0x00c0, - 0x3686: 0x00c0, 0x3687: 0x00c0, 0x3688: 0x00c0, 0x3689: 0x00c0, 0x368a: 0x00c0, 0x368b: 0x00c0, - 0x368c: 0x00c0, 0x368d: 0x00c0, 0x368e: 0x00c0, 0x368f: 0x00c0, 0x3690: 0x00c0, 0x3691: 0x00c0, - 0x3692: 0x00c0, 0x3693: 0x00c0, 0x3694: 0x00c0, 0x3695: 0x00c0, 0x3696: 0x00c0, 0x3697: 0x00c0, - 0x3698: 0x00c0, 0x3699: 0x00c0, 0x369a: 0x00c0, 0x369b: 0x00c0, 0x369c: 0x00c0, 0x369d: 0x0080, - 0x369e: 0x0080, 0x369f: 0x0080, + 0x3680: 0x00c2, 0x3681: 0x00c2, 0x3682: 0x00c2, 0x3683: 0x00c2, 0x3684: 0x00c2, 0x3685: 0x00c4, + 0x3686: 0x00c0, 0x3687: 0x00c4, 0x3688: 0x0080, 0x3689: 0x00c4, 0x368a: 0x00c4, 0x368b: 0x00c0, + 0x368c: 0x00c0, 0x368d: 0x00c1, 0x368e: 0x00c4, 0x368f: 0x00c4, 0x3690: 0x00c4, 0x3691: 0x00c4, + 0x3692: 0x00c4, 0x3693: 0x00c2, 0x3694: 0x00c2, 0x3695: 0x00c2, 0x3696: 0x00c2, 0x3697: 0x00c1, + 0x3698: 0x00c2, 0x3699: 0x00c2, 0x369a: 0x00c2, 0x369b: 0x00c2, 0x369c: 0x00c2, 0x369d: 0x00c4, + 0x369e: 0x00c2, 0x369f: 0x00c2, 0x36a0: 0x00c2, 0x36a1: 0x00c4, 0x36a2: 0x00c0, 0x36a3: 0x00c0, + 0x36a4: 0x00c4, 0x36a5: 0x00c3, 0x36a6: 0x00c3, + 0x36ab: 0x0082, 0x36ac: 0x0082, 0x36ad: 0x0082, 0x36ae: 0x0082, 0x36af: 0x0084, + 0x36b0: 0x0080, 0x36b1: 0x0080, 0x36b2: 0x0080, 0x36b3: 0x0080, 0x36b4: 0x0080, 0x36b5: 0x0080, + 0x36b6: 0x0080, // Block 0xdb, offset 0x36c0 - 0x36c0: 0x00c2, 0x36c1: 0x00c2, 0x36c2: 0x00c2, 0x36c3: 0x00c2, 0x36c4: 0x00c2, 0x36c5: 0x00c4, - 0x36c6: 0x00c0, 0x36c7: 0x00c4, 0x36c8: 0x0080, 0x36c9: 0x00c4, 0x36ca: 0x00c4, 0x36cb: 0x00c0, - 0x36cc: 0x00c0, 0x36cd: 0x00c1, 0x36ce: 0x00c4, 0x36cf: 0x00c4, 0x36d0: 0x00c4, 0x36d1: 0x00c4, - 0x36d2: 0x00c4, 0x36d3: 0x00c2, 0x36d4: 0x00c2, 0x36d5: 0x00c2, 0x36d6: 0x00c2, 0x36d7: 0x00c1, - 0x36d8: 0x00c2, 0x36d9: 0x00c2, 0x36da: 0x00c2, 0x36db: 0x00c2, 0x36dc: 0x00c2, 0x36dd: 0x00c4, - 0x36de: 0x00c2, 0x36df: 0x00c2, 0x36e0: 0x00c2, 0x36e1: 0x00c4, 0x36e2: 0x00c0, 0x36e3: 0x00c0, - 0x36e4: 0x00c4, 0x36e5: 0x00c3, 0x36e6: 0x00c3, - 0x36eb: 0x0082, 0x36ec: 0x0082, 0x36ed: 0x0082, 0x36ee: 0x0082, 0x36ef: 0x0084, - 0x36f0: 0x0080, 0x36f1: 0x0080, 0x36f2: 0x0080, 0x36f3: 0x0080, 0x36f4: 0x0080, 0x36f5: 0x0080, - 0x36f6: 0x0080, + 0x36c0: 0x00c0, 0x36c1: 0x00c0, 0x36c2: 0x00c0, 0x36c3: 0x00c0, 0x36c4: 0x00c0, 0x36c5: 0x00c0, + 0x36c6: 0x00c0, 0x36c7: 0x00c0, 0x36c8: 0x00c0, 0x36c9: 0x00c0, 0x36ca: 0x00c0, 0x36cb: 0x00c0, + 0x36cc: 0x00c0, 0x36cd: 0x00c0, 0x36ce: 0x00c0, 0x36cf: 0x00c0, 0x36d0: 0x00c0, 0x36d1: 0x00c0, + 0x36d2: 0x00c0, 0x36d3: 0x00c0, 0x36d4: 0x00c0, 0x36d5: 0x00c0, 0x36d6: 0x00c0, 0x36d7: 0x00c0, + 0x36d8: 0x00c0, 0x36d9: 0x00c0, 0x36da: 0x00c0, 0x36db: 0x00c0, 0x36dc: 0x00c0, 0x36dd: 0x00c0, + 0x36de: 0x00c0, 0x36df: 0x00c0, 0x36e0: 0x00c0, 0x36e1: 0x00c0, 0x36e2: 0x00c0, 0x36e3: 0x00c0, + 0x36e4: 0x00c0, 0x36e5: 0x00c0, 0x36e6: 0x00c0, 0x36e7: 0x00c0, 0x36e8: 0x00c0, 0x36e9: 0x00c0, + 0x36ea: 0x00c0, 0x36eb: 0x00c0, 0x36ec: 0x00c0, 0x36ed: 0x00c0, 0x36ee: 0x00c0, 0x36ef: 0x00c0, + 0x36f0: 0x00c0, 0x36f1: 0x00c0, 0x36f2: 0x00c0, 0x36f3: 0x00c0, 0x36f4: 0x00c0, 0x36f5: 0x00c0, + 0x36f9: 0x0080, 0x36fa: 0x0080, 0x36fb: 0x0080, + 0x36fc: 0x0080, 0x36fd: 0x0080, 0x36fe: 0x0080, 0x36ff: 0x0080, // Block 0xdc, offset 0x3700 0x3700: 0x00c0, 0x3701: 0x00c0, 0x3702: 0x00c0, 0x3703: 0x00c0, 0x3704: 0x00c0, 0x3705: 0x00c0, 0x3706: 0x00c0, 0x3707: 0x00c0, 0x3708: 0x00c0, 0x3709: 0x00c0, 0x370a: 0x00c0, 0x370b: 0x00c0, 0x370c: 0x00c0, 0x370d: 0x00c0, 0x370e: 0x00c0, 0x370f: 0x00c0, 0x3710: 0x00c0, 0x3711: 0x00c0, - 0x3712: 0x00c0, 0x3713: 0x00c0, 0x3714: 0x00c0, 0x3715: 0x00c0, 0x3716: 0x00c0, 0x3717: 0x00c0, - 0x3718: 0x00c0, 0x3719: 0x00c0, 0x371a: 0x00c0, 0x371b: 0x00c0, 0x371c: 0x00c0, 0x371d: 0x00c0, - 0x371e: 0x00c0, 0x371f: 0x00c0, 0x3720: 0x00c0, 0x3721: 0x00c0, 0x3722: 0x00c0, 0x3723: 0x00c0, + 0x3712: 0x00c0, 0x3713: 0x00c0, 0x3714: 0x00c0, 0x3715: 0x00c0, + 0x3718: 0x0080, 0x3719: 0x0080, 0x371a: 0x0080, 0x371b: 0x0080, 0x371c: 0x0080, 0x371d: 0x0080, + 0x371e: 0x0080, 0x371f: 0x0080, 0x3720: 0x00c0, 0x3721: 0x00c0, 0x3722: 0x00c0, 0x3723: 0x00c0, 0x3724: 0x00c0, 0x3725: 0x00c0, 0x3726: 0x00c0, 0x3727: 0x00c0, 0x3728: 0x00c0, 0x3729: 0x00c0, 0x372a: 0x00c0, 0x372b: 0x00c0, 0x372c: 0x00c0, 0x372d: 0x00c0, 0x372e: 0x00c0, 0x372f: 0x00c0, - 0x3730: 0x00c0, 0x3731: 0x00c0, 0x3732: 0x00c0, 0x3733: 0x00c0, 0x3734: 0x00c0, 0x3735: 0x00c0, - 0x3739: 0x0080, 0x373a: 0x0080, 0x373b: 0x0080, + 0x3730: 0x00c0, 0x3731: 0x00c0, 0x3732: 0x00c0, + 0x3738: 0x0080, 0x3739: 0x0080, 0x373a: 0x0080, 0x373b: 0x0080, 0x373c: 0x0080, 0x373d: 0x0080, 0x373e: 0x0080, 0x373f: 0x0080, // Block 0xdd, offset 0x3740 - 0x3740: 0x00c0, 0x3741: 0x00c0, 0x3742: 0x00c0, 0x3743: 0x00c0, 0x3744: 0x00c0, 0x3745: 0x00c0, - 0x3746: 0x00c0, 0x3747: 0x00c0, 0x3748: 0x00c0, 0x3749: 0x00c0, 0x374a: 0x00c0, 0x374b: 0x00c0, - 0x374c: 0x00c0, 0x374d: 0x00c0, 0x374e: 0x00c0, 0x374f: 0x00c0, 0x3750: 0x00c0, 0x3751: 0x00c0, - 0x3752: 0x00c0, 0x3753: 0x00c0, 0x3754: 0x00c0, 0x3755: 0x00c0, - 0x3758: 0x0080, 0x3759: 0x0080, 0x375a: 0x0080, 0x375b: 0x0080, 0x375c: 0x0080, 0x375d: 0x0080, - 0x375e: 0x0080, 0x375f: 0x0080, 0x3760: 0x00c0, 0x3761: 0x00c0, 0x3762: 0x00c0, 0x3763: 0x00c0, - 0x3764: 0x00c0, 0x3765: 0x00c0, 0x3766: 0x00c0, 0x3767: 0x00c0, 0x3768: 0x00c0, 0x3769: 0x00c0, - 0x376a: 0x00c0, 0x376b: 0x00c0, 0x376c: 0x00c0, 0x376d: 0x00c0, 0x376e: 0x00c0, 0x376f: 0x00c0, - 0x3770: 0x00c0, 0x3771: 0x00c0, 0x3772: 0x00c0, - 0x3778: 0x0080, 0x3779: 0x0080, 0x377a: 0x0080, 0x377b: 0x0080, - 0x377c: 0x0080, 0x377d: 0x0080, 0x377e: 0x0080, 0x377f: 0x0080, + 0x3740: 0x00c2, 0x3741: 0x00c4, 0x3742: 0x00c2, 0x3743: 0x00c4, 0x3744: 0x00c4, 0x3745: 0x00c4, + 0x3746: 0x00c2, 0x3747: 0x00c2, 0x3748: 0x00c2, 0x3749: 0x00c4, 0x374a: 0x00c2, 0x374b: 0x00c2, + 0x374c: 0x00c4, 0x374d: 0x00c2, 0x374e: 0x00c4, 0x374f: 0x00c4, 0x3750: 0x00c2, 0x3751: 0x00c4, + 0x3759: 0x0080, 0x375a: 0x0080, 0x375b: 0x0080, 0x375c: 0x0080, + 0x3769: 0x0084, + 0x376a: 0x0084, 0x376b: 0x0084, 0x376c: 0x0084, 0x376d: 0x0082, 0x376e: 0x0082, 0x376f: 0x0080, // Block 0xde, offset 0x3780 - 0x3780: 0x00c2, 0x3781: 0x00c4, 0x3782: 0x00c2, 0x3783: 0x00c4, 0x3784: 0x00c4, 0x3785: 0x00c4, - 0x3786: 0x00c2, 0x3787: 0x00c2, 0x3788: 0x00c2, 0x3789: 0x00c4, 0x378a: 0x00c2, 0x378b: 0x00c2, - 0x378c: 0x00c4, 0x378d: 0x00c2, 0x378e: 0x00c4, 0x378f: 0x00c4, 0x3790: 0x00c2, 0x3791: 0x00c4, - 0x3799: 0x0080, 0x379a: 0x0080, 0x379b: 0x0080, 0x379c: 0x0080, - 0x37a9: 0x0084, - 0x37aa: 0x0084, 0x37ab: 0x0084, 0x37ac: 0x0084, 0x37ad: 0x0082, 0x37ae: 0x0082, 0x37af: 0x0080, + 0x3780: 0x00c0, 0x3781: 0x00c0, 0x3782: 0x00c0, 0x3783: 0x00c0, 0x3784: 0x00c0, 0x3785: 0x00c0, + 0x3786: 0x00c0, 0x3787: 0x00c0, 0x3788: 0x00c0, 0x3789: 0x00c0, 0x378a: 0x00c0, 0x378b: 0x00c0, + 0x378c: 0x00c0, 0x378d: 0x00c0, 0x378e: 0x00c0, 0x378f: 0x00c0, 0x3790: 0x00c0, 0x3791: 0x00c0, + 0x3792: 0x00c0, 0x3793: 0x00c0, 0x3794: 0x00c0, 0x3795: 0x00c0, 0x3796: 0x00c0, 0x3797: 0x00c0, + 0x3798: 0x00c0, 0x3799: 0x00c0, 0x379a: 0x00c0, 0x379b: 0x00c0, 0x379c: 0x00c0, 0x379d: 0x00c0, + 0x379e: 0x00c0, 0x379f: 0x00c0, 0x37a0: 0x00c0, 0x37a1: 0x00c0, 0x37a2: 0x00c0, 0x37a3: 0x00c0, + 0x37a4: 0x00c0, 0x37a5: 0x00c0, 0x37a6: 0x00c0, 0x37a7: 0x00c0, 0x37a8: 0x00c0, 0x37a9: 0x00c0, + 0x37aa: 0x00c0, 0x37ab: 0x00c0, 0x37ac: 0x00c0, 0x37ad: 0x00c0, 0x37ae: 0x00c0, 0x37af: 0x00c0, + 0x37b0: 0x00c0, 0x37b1: 0x00c0, 0x37b2: 0x00c0, // Block 0xdf, offset 0x37c0 0x37c0: 0x00c0, 0x37c1: 0x00c0, 0x37c2: 0x00c0, 0x37c3: 0x00c0, 0x37c4: 0x00c0, 0x37c5: 0x00c0, 0x37c6: 0x00c0, 0x37c7: 0x00c0, 0x37c8: 0x00c0, 0x37c9: 0x00c0, 0x37ca: 0x00c0, 0x37cb: 0x00c0, @@ -2636,378 +2645,388 @@ var derivedPropertiesValues = [20736]uint8{ 0x37e4: 0x00c0, 0x37e5: 0x00c0, 0x37e6: 0x00c0, 0x37e7: 0x00c0, 0x37e8: 0x00c0, 0x37e9: 0x00c0, 0x37ea: 0x00c0, 0x37eb: 0x00c0, 0x37ec: 0x00c0, 0x37ed: 0x00c0, 0x37ee: 0x00c0, 0x37ef: 0x00c0, 0x37f0: 0x00c0, 0x37f1: 0x00c0, 0x37f2: 0x00c0, + 0x37fa: 0x0080, 0x37fb: 0x0080, + 0x37fc: 0x0080, 0x37fd: 0x0080, 0x37fe: 0x0080, 0x37ff: 0x0080, // Block 0xe0, offset 0x3800 - 0x3800: 0x00c0, 0x3801: 0x00c0, 0x3802: 0x00c0, 0x3803: 0x00c0, 0x3804: 0x00c0, 0x3805: 0x00c0, - 0x3806: 0x00c0, 0x3807: 0x00c0, 0x3808: 0x00c0, 0x3809: 0x00c0, 0x380a: 0x00c0, 0x380b: 0x00c0, - 0x380c: 0x00c0, 0x380d: 0x00c0, 0x380e: 0x00c0, 0x380f: 0x00c0, 0x3810: 0x00c0, 0x3811: 0x00c0, - 0x3812: 0x00c0, 0x3813: 0x00c0, 0x3814: 0x00c0, 0x3815: 0x00c0, 0x3816: 0x00c0, 0x3817: 0x00c0, - 0x3818: 0x00c0, 0x3819: 0x00c0, 0x381a: 0x00c0, 0x381b: 0x00c0, 0x381c: 0x00c0, 0x381d: 0x00c0, - 0x381e: 0x00c0, 0x381f: 0x00c0, 0x3820: 0x00c0, 0x3821: 0x00c0, 0x3822: 0x00c0, 0x3823: 0x00c0, - 0x3824: 0x00c0, 0x3825: 0x00c0, 0x3826: 0x00c0, 0x3827: 0x00c0, 0x3828: 0x00c0, 0x3829: 0x00c0, - 0x382a: 0x00c0, 0x382b: 0x00c0, 0x382c: 0x00c0, 0x382d: 0x00c0, 0x382e: 0x00c0, 0x382f: 0x00c0, - 0x3830: 0x00c0, 0x3831: 0x00c0, 0x3832: 0x00c0, - 0x383a: 0x0080, 0x383b: 0x0080, - 0x383c: 0x0080, 0x383d: 0x0080, 0x383e: 0x0080, 0x383f: 0x0080, + 0x3820: 0x0080, 0x3821: 0x0080, 0x3822: 0x0080, 0x3823: 0x0080, + 0x3824: 0x0080, 0x3825: 0x0080, 0x3826: 0x0080, 0x3827: 0x0080, 0x3828: 0x0080, 0x3829: 0x0080, + 0x382a: 0x0080, 0x382b: 0x0080, 0x382c: 0x0080, 0x382d: 0x0080, 0x382e: 0x0080, 0x382f: 0x0080, + 0x3830: 0x0080, 0x3831: 0x0080, 0x3832: 0x0080, 0x3833: 0x0080, 0x3834: 0x0080, 0x3835: 0x0080, + 0x3836: 0x0080, 0x3837: 0x0080, 0x3838: 0x0080, 0x3839: 0x0080, 0x383a: 0x0080, 0x383b: 0x0080, + 0x383c: 0x0080, 0x383d: 0x0080, 0x383e: 0x0080, // Block 0xe1, offset 0x3840 - 0x3860: 0x0080, 0x3861: 0x0080, 0x3862: 0x0080, 0x3863: 0x0080, - 0x3864: 0x0080, 0x3865: 0x0080, 0x3866: 0x0080, 0x3867: 0x0080, 0x3868: 0x0080, 0x3869: 0x0080, - 0x386a: 0x0080, 0x386b: 0x0080, 0x386c: 0x0080, 0x386d: 0x0080, 0x386e: 0x0080, 0x386f: 0x0080, - 0x3870: 0x0080, 0x3871: 0x0080, 0x3872: 0x0080, 0x3873: 0x0080, 0x3874: 0x0080, 0x3875: 0x0080, - 0x3876: 0x0080, 0x3877: 0x0080, 0x3878: 0x0080, 0x3879: 0x0080, 0x387a: 0x0080, 0x387b: 0x0080, - 0x387c: 0x0080, 0x387d: 0x0080, 0x387e: 0x0080, + 0x3840: 0x00c0, 0x3841: 0x00c3, 0x3842: 0x00c0, 0x3843: 0x00c0, 0x3844: 0x00c0, 0x3845: 0x00c0, + 0x3846: 0x00c0, 0x3847: 0x00c0, 0x3848: 0x00c0, 0x3849: 0x00c0, 0x384a: 0x00c0, 0x384b: 0x00c0, + 0x384c: 0x00c0, 0x384d: 0x00c0, 0x384e: 0x00c0, 0x384f: 0x00c0, 0x3850: 0x00c0, 0x3851: 0x00c0, + 0x3852: 0x00c0, 0x3853: 0x00c0, 0x3854: 0x00c0, 0x3855: 0x00c0, 0x3856: 0x00c0, 0x3857: 0x00c0, + 0x3858: 0x00c0, 0x3859: 0x00c0, 0x385a: 0x00c0, 0x385b: 0x00c0, 0x385c: 0x00c0, 0x385d: 0x00c0, + 0x385e: 0x00c0, 0x385f: 0x00c0, 0x3860: 0x00c0, 0x3861: 0x00c0, 0x3862: 0x00c0, 0x3863: 0x00c0, + 0x3864: 0x00c0, 0x3865: 0x00c0, 0x3866: 0x00c0, 0x3867: 0x00c0, 0x3868: 0x00c0, 0x3869: 0x00c0, + 0x386a: 0x00c0, 0x386b: 0x00c0, 0x386c: 0x00c0, 0x386d: 0x00c0, 0x386e: 0x00c0, 0x386f: 0x00c0, + 0x3870: 0x00c0, 0x3871: 0x00c0, 0x3872: 0x00c0, 0x3873: 0x00c0, 0x3874: 0x00c0, 0x3875: 0x00c0, + 0x3876: 0x00c0, 0x3877: 0x00c0, 0x3878: 0x00c3, 0x3879: 0x00c3, 0x387a: 0x00c3, 0x387b: 0x00c3, + 0x387c: 0x00c3, 0x387d: 0x00c3, 0x387e: 0x00c3, 0x387f: 0x00c3, // Block 0xe2, offset 0x3880 - 0x3880: 0x00c0, 0x3881: 0x00c3, 0x3882: 0x00c0, 0x3883: 0x00c0, 0x3884: 0x00c0, 0x3885: 0x00c0, - 0x3886: 0x00c0, 0x3887: 0x00c0, 0x3888: 0x00c0, 0x3889: 0x00c0, 0x388a: 0x00c0, 0x388b: 0x00c0, - 0x388c: 0x00c0, 0x388d: 0x00c0, 0x388e: 0x00c0, 0x388f: 0x00c0, 0x3890: 0x00c0, 0x3891: 0x00c0, - 0x3892: 0x00c0, 0x3893: 0x00c0, 0x3894: 0x00c0, 0x3895: 0x00c0, 0x3896: 0x00c0, 0x3897: 0x00c0, - 0x3898: 0x00c0, 0x3899: 0x00c0, 0x389a: 0x00c0, 0x389b: 0x00c0, 0x389c: 0x00c0, 0x389d: 0x00c0, - 0x389e: 0x00c0, 0x389f: 0x00c0, 0x38a0: 0x00c0, 0x38a1: 0x00c0, 0x38a2: 0x00c0, 0x38a3: 0x00c0, - 0x38a4: 0x00c0, 0x38a5: 0x00c0, 0x38a6: 0x00c0, 0x38a7: 0x00c0, 0x38a8: 0x00c0, 0x38a9: 0x00c0, + 0x3880: 0x00c3, 0x3881: 0x00c3, 0x3882: 0x00c3, 0x3883: 0x00c3, 0x3884: 0x00c3, 0x3885: 0x00c3, + 0x3886: 0x00c6, 0x3887: 0x0080, 0x3888: 0x0080, 0x3889: 0x0080, 0x388a: 0x0080, 0x388b: 0x0080, + 0x388c: 0x0080, 0x388d: 0x0080, + 0x3892: 0x0080, 0x3893: 0x0080, 0x3894: 0x0080, 0x3895: 0x0080, 0x3896: 0x0080, 0x3897: 0x0080, + 0x3898: 0x0080, 0x3899: 0x0080, 0x389a: 0x0080, 0x389b: 0x0080, 0x389c: 0x0080, 0x389d: 0x0080, + 0x389e: 0x0080, 0x389f: 0x0080, 0x38a0: 0x0080, 0x38a1: 0x0080, 0x38a2: 0x0080, 0x38a3: 0x0080, + 0x38a4: 0x0080, 0x38a5: 0x0080, 0x38a6: 0x00c0, 0x38a7: 0x00c0, 0x38a8: 0x00c0, 0x38a9: 0x00c0, 0x38aa: 0x00c0, 0x38ab: 0x00c0, 0x38ac: 0x00c0, 0x38ad: 0x00c0, 0x38ae: 0x00c0, 0x38af: 0x00c0, - 0x38b0: 0x00c0, 0x38b1: 0x00c0, 0x38b2: 0x00c0, 0x38b3: 0x00c0, 0x38b4: 0x00c0, 0x38b5: 0x00c0, - 0x38b6: 0x00c0, 0x38b7: 0x00c0, 0x38b8: 0x00c3, 0x38b9: 0x00c3, 0x38ba: 0x00c3, 0x38bb: 0x00c3, - 0x38bc: 0x00c3, 0x38bd: 0x00c3, 0x38be: 0x00c3, 0x38bf: 0x00c3, + 0x38bf: 0x00c6, // Block 0xe3, offset 0x38c0 - 0x38c0: 0x00c3, 0x38c1: 0x00c3, 0x38c2: 0x00c3, 0x38c3: 0x00c3, 0x38c4: 0x00c3, 0x38c5: 0x00c3, - 0x38c6: 0x00c6, 0x38c7: 0x0080, 0x38c8: 0x0080, 0x38c9: 0x0080, 0x38ca: 0x0080, 0x38cb: 0x0080, - 0x38cc: 0x0080, 0x38cd: 0x0080, - 0x38d2: 0x0080, 0x38d3: 0x0080, 0x38d4: 0x0080, 0x38d5: 0x0080, 0x38d6: 0x0080, 0x38d7: 0x0080, - 0x38d8: 0x0080, 0x38d9: 0x0080, 0x38da: 0x0080, 0x38db: 0x0080, 0x38dc: 0x0080, 0x38dd: 0x0080, - 0x38de: 0x0080, 0x38df: 0x0080, 0x38e0: 0x0080, 0x38e1: 0x0080, 0x38e2: 0x0080, 0x38e3: 0x0080, - 0x38e4: 0x0080, 0x38e5: 0x0080, 0x38e6: 0x00c0, 0x38e7: 0x00c0, 0x38e8: 0x00c0, 0x38e9: 0x00c0, + 0x38c0: 0x00c3, 0x38c1: 0x00c3, 0x38c2: 0x00c0, 0x38c3: 0x00c0, 0x38c4: 0x00c0, 0x38c5: 0x00c0, + 0x38c6: 0x00c0, 0x38c7: 0x00c0, 0x38c8: 0x00c0, 0x38c9: 0x00c0, 0x38ca: 0x00c0, 0x38cb: 0x00c0, + 0x38cc: 0x00c0, 0x38cd: 0x00c0, 0x38ce: 0x00c0, 0x38cf: 0x00c0, 0x38d0: 0x00c0, 0x38d1: 0x00c0, + 0x38d2: 0x00c0, 0x38d3: 0x00c0, 0x38d4: 0x00c0, 0x38d5: 0x00c0, 0x38d6: 0x00c0, 0x38d7: 0x00c0, + 0x38d8: 0x00c0, 0x38d9: 0x00c0, 0x38da: 0x00c0, 0x38db: 0x00c0, 0x38dc: 0x00c0, 0x38dd: 0x00c0, + 0x38de: 0x00c0, 0x38df: 0x00c0, 0x38e0: 0x00c0, 0x38e1: 0x00c0, 0x38e2: 0x00c0, 0x38e3: 0x00c0, + 0x38e4: 0x00c0, 0x38e5: 0x00c0, 0x38e6: 0x00c0, 0x38e7: 0x00c0, 0x38e8: 0x00c0, 0x38e9: 0x00c0, 0x38ea: 0x00c0, 0x38eb: 0x00c0, 0x38ec: 0x00c0, 0x38ed: 0x00c0, 0x38ee: 0x00c0, 0x38ef: 0x00c0, - 0x38ff: 0x00c6, + 0x38f0: 0x00c0, 0x38f1: 0x00c0, 0x38f2: 0x00c0, 0x38f3: 0x00c3, 0x38f4: 0x00c3, 0x38f5: 0x00c3, + 0x38f6: 0x00c3, 0x38f7: 0x00c0, 0x38f8: 0x00c0, 0x38f9: 0x00c6, 0x38fa: 0x00c3, 0x38fb: 0x0080, + 0x38fc: 0x0080, 0x38fd: 0x0040, 0x38fe: 0x0080, 0x38ff: 0x0080, // Block 0xe4, offset 0x3900 - 0x3900: 0x00c3, 0x3901: 0x00c3, 0x3902: 0x00c0, 0x3903: 0x00c0, 0x3904: 0x00c0, 0x3905: 0x00c0, - 0x3906: 0x00c0, 0x3907: 0x00c0, 0x3908: 0x00c0, 0x3909: 0x00c0, 0x390a: 0x00c0, 0x390b: 0x00c0, - 0x390c: 0x00c0, 0x390d: 0x00c0, 0x390e: 0x00c0, 0x390f: 0x00c0, 0x3910: 0x00c0, 0x3911: 0x00c0, + 0x3900: 0x0080, 0x3901: 0x0080, + 0x3910: 0x00c0, 0x3911: 0x00c0, 0x3912: 0x00c0, 0x3913: 0x00c0, 0x3914: 0x00c0, 0x3915: 0x00c0, 0x3916: 0x00c0, 0x3917: 0x00c0, 0x3918: 0x00c0, 0x3919: 0x00c0, 0x391a: 0x00c0, 0x391b: 0x00c0, 0x391c: 0x00c0, 0x391d: 0x00c0, 0x391e: 0x00c0, 0x391f: 0x00c0, 0x3920: 0x00c0, 0x3921: 0x00c0, 0x3922: 0x00c0, 0x3923: 0x00c0, - 0x3924: 0x00c0, 0x3925: 0x00c0, 0x3926: 0x00c0, 0x3927: 0x00c0, 0x3928: 0x00c0, 0x3929: 0x00c0, - 0x392a: 0x00c0, 0x392b: 0x00c0, 0x392c: 0x00c0, 0x392d: 0x00c0, 0x392e: 0x00c0, 0x392f: 0x00c0, - 0x3930: 0x00c0, 0x3931: 0x00c0, 0x3932: 0x00c0, 0x3933: 0x00c3, 0x3934: 0x00c3, 0x3935: 0x00c3, - 0x3936: 0x00c3, 0x3937: 0x00c0, 0x3938: 0x00c0, 0x3939: 0x00c6, 0x393a: 0x00c3, 0x393b: 0x0080, - 0x393c: 0x0080, 0x393d: 0x0040, 0x393e: 0x0080, 0x393f: 0x0080, + 0x3924: 0x00c0, 0x3925: 0x00c0, 0x3926: 0x00c0, 0x3927: 0x00c0, 0x3928: 0x00c0, + 0x3930: 0x00c0, 0x3931: 0x00c0, 0x3932: 0x00c0, 0x3933: 0x00c0, 0x3934: 0x00c0, 0x3935: 0x00c0, + 0x3936: 0x00c0, 0x3937: 0x00c0, 0x3938: 0x00c0, 0x3939: 0x00c0, // Block 0xe5, offset 0x3940 - 0x3940: 0x0080, 0x3941: 0x0080, - 0x3950: 0x00c0, 0x3951: 0x00c0, + 0x3940: 0x00c3, 0x3941: 0x00c3, 0x3942: 0x00c3, 0x3943: 0x00c0, 0x3944: 0x00c0, 0x3945: 0x00c0, + 0x3946: 0x00c0, 0x3947: 0x00c0, 0x3948: 0x00c0, 0x3949: 0x00c0, 0x394a: 0x00c0, 0x394b: 0x00c0, + 0x394c: 0x00c0, 0x394d: 0x00c0, 0x394e: 0x00c0, 0x394f: 0x00c0, 0x3950: 0x00c0, 0x3951: 0x00c0, 0x3952: 0x00c0, 0x3953: 0x00c0, 0x3954: 0x00c0, 0x3955: 0x00c0, 0x3956: 0x00c0, 0x3957: 0x00c0, 0x3958: 0x00c0, 0x3959: 0x00c0, 0x395a: 0x00c0, 0x395b: 0x00c0, 0x395c: 0x00c0, 0x395d: 0x00c0, 0x395e: 0x00c0, 0x395f: 0x00c0, 0x3960: 0x00c0, 0x3961: 0x00c0, 0x3962: 0x00c0, 0x3963: 0x00c0, - 0x3964: 0x00c0, 0x3965: 0x00c0, 0x3966: 0x00c0, 0x3967: 0x00c0, 0x3968: 0x00c0, - 0x3970: 0x00c0, 0x3971: 0x00c0, 0x3972: 0x00c0, 0x3973: 0x00c0, 0x3974: 0x00c0, 0x3975: 0x00c0, - 0x3976: 0x00c0, 0x3977: 0x00c0, 0x3978: 0x00c0, 0x3979: 0x00c0, + 0x3964: 0x00c0, 0x3965: 0x00c0, 0x3966: 0x00c0, 0x3967: 0x00c3, 0x3968: 0x00c3, 0x3969: 0x00c3, + 0x396a: 0x00c3, 0x396b: 0x00c3, 0x396c: 0x00c0, 0x396d: 0x00c3, 0x396e: 0x00c3, 0x396f: 0x00c3, + 0x3970: 0x00c3, 0x3971: 0x00c3, 0x3972: 0x00c3, 0x3973: 0x00c6, 0x3974: 0x00c6, + 0x3976: 0x00c0, 0x3977: 0x00c0, 0x3978: 0x00c0, 0x3979: 0x00c0, 0x397a: 0x00c0, 0x397b: 0x00c0, + 0x397c: 0x00c0, 0x397d: 0x00c0, 0x397e: 0x00c0, 0x397f: 0x00c0, // Block 0xe6, offset 0x3980 - 0x3980: 0x00c3, 0x3981: 0x00c3, 0x3982: 0x00c3, 0x3983: 0x00c0, 0x3984: 0x00c0, 0x3985: 0x00c0, - 0x3986: 0x00c0, 0x3987: 0x00c0, 0x3988: 0x00c0, 0x3989: 0x00c0, 0x398a: 0x00c0, 0x398b: 0x00c0, - 0x398c: 0x00c0, 0x398d: 0x00c0, 0x398e: 0x00c0, 0x398f: 0x00c0, 0x3990: 0x00c0, 0x3991: 0x00c0, + 0x3980: 0x0080, 0x3981: 0x0080, 0x3982: 0x0080, 0x3983: 0x0080, + 0x3990: 0x00c0, 0x3991: 0x00c0, 0x3992: 0x00c0, 0x3993: 0x00c0, 0x3994: 0x00c0, 0x3995: 0x00c0, 0x3996: 0x00c0, 0x3997: 0x00c0, 0x3998: 0x00c0, 0x3999: 0x00c0, 0x399a: 0x00c0, 0x399b: 0x00c0, 0x399c: 0x00c0, 0x399d: 0x00c0, 0x399e: 0x00c0, 0x399f: 0x00c0, 0x39a0: 0x00c0, 0x39a1: 0x00c0, 0x39a2: 0x00c0, 0x39a3: 0x00c0, - 0x39a4: 0x00c0, 0x39a5: 0x00c0, 0x39a6: 0x00c0, 0x39a7: 0x00c3, 0x39a8: 0x00c3, 0x39a9: 0x00c3, - 0x39aa: 0x00c3, 0x39ab: 0x00c3, 0x39ac: 0x00c0, 0x39ad: 0x00c3, 0x39ae: 0x00c3, 0x39af: 0x00c3, - 0x39b0: 0x00c3, 0x39b1: 0x00c3, 0x39b2: 0x00c3, 0x39b3: 0x00c6, 0x39b4: 0x00c6, - 0x39b6: 0x00c0, 0x39b7: 0x00c0, 0x39b8: 0x00c0, 0x39b9: 0x00c0, 0x39ba: 0x00c0, 0x39bb: 0x00c0, - 0x39bc: 0x00c0, 0x39bd: 0x00c0, 0x39be: 0x00c0, 0x39bf: 0x00c0, + 0x39a4: 0x00c0, 0x39a5: 0x00c0, 0x39a6: 0x00c0, 0x39a7: 0x00c0, 0x39a8: 0x00c0, 0x39a9: 0x00c0, + 0x39aa: 0x00c0, 0x39ab: 0x00c0, 0x39ac: 0x00c0, 0x39ad: 0x00c0, 0x39ae: 0x00c0, 0x39af: 0x00c0, + 0x39b0: 0x00c0, 0x39b1: 0x00c0, 0x39b2: 0x00c0, 0x39b3: 0x00c3, 0x39b4: 0x0080, 0x39b5: 0x0080, + 0x39b6: 0x00c0, // Block 0xe7, offset 0x39c0 - 0x39c0: 0x0080, 0x39c1: 0x0080, 0x39c2: 0x0080, 0x39c3: 0x0080, - 0x39d0: 0x00c0, 0x39d1: 0x00c0, + 0x39c0: 0x00c3, 0x39c1: 0x00c3, 0x39c2: 0x00c0, 0x39c3: 0x00c0, 0x39c4: 0x00c0, 0x39c5: 0x00c0, + 0x39c6: 0x00c0, 0x39c7: 0x00c0, 0x39c8: 0x00c0, 0x39c9: 0x00c0, 0x39ca: 0x00c0, 0x39cb: 0x00c0, + 0x39cc: 0x00c0, 0x39cd: 0x00c0, 0x39ce: 0x00c0, 0x39cf: 0x00c0, 0x39d0: 0x00c0, 0x39d1: 0x00c0, 0x39d2: 0x00c0, 0x39d3: 0x00c0, 0x39d4: 0x00c0, 0x39d5: 0x00c0, 0x39d6: 0x00c0, 0x39d7: 0x00c0, 0x39d8: 0x00c0, 0x39d9: 0x00c0, 0x39da: 0x00c0, 0x39db: 0x00c0, 0x39dc: 0x00c0, 0x39dd: 0x00c0, 0x39de: 0x00c0, 0x39df: 0x00c0, 0x39e0: 0x00c0, 0x39e1: 0x00c0, 0x39e2: 0x00c0, 0x39e3: 0x00c0, 0x39e4: 0x00c0, 0x39e5: 0x00c0, 0x39e6: 0x00c0, 0x39e7: 0x00c0, 0x39e8: 0x00c0, 0x39e9: 0x00c0, 0x39ea: 0x00c0, 0x39eb: 0x00c0, 0x39ec: 0x00c0, 0x39ed: 0x00c0, 0x39ee: 0x00c0, 0x39ef: 0x00c0, - 0x39f0: 0x00c0, 0x39f1: 0x00c0, 0x39f2: 0x00c0, 0x39f3: 0x00c3, 0x39f4: 0x0080, 0x39f5: 0x0080, - 0x39f6: 0x00c0, + 0x39f0: 0x00c0, 0x39f1: 0x00c0, 0x39f2: 0x00c0, 0x39f3: 0x00c0, 0x39f4: 0x00c0, 0x39f5: 0x00c0, + 0x39f6: 0x00c3, 0x39f7: 0x00c3, 0x39f8: 0x00c3, 0x39f9: 0x00c3, 0x39fa: 0x00c3, 0x39fb: 0x00c3, + 0x39fc: 0x00c3, 0x39fd: 0x00c3, 0x39fe: 0x00c3, 0x39ff: 0x00c0, // Block 0xe8, offset 0x3a00 - 0x3a00: 0x00c3, 0x3a01: 0x00c3, 0x3a02: 0x00c0, 0x3a03: 0x00c0, 0x3a04: 0x00c0, 0x3a05: 0x00c0, - 0x3a06: 0x00c0, 0x3a07: 0x00c0, 0x3a08: 0x00c0, 0x3a09: 0x00c0, 0x3a0a: 0x00c0, 0x3a0b: 0x00c0, - 0x3a0c: 0x00c0, 0x3a0d: 0x00c0, 0x3a0e: 0x00c0, 0x3a0f: 0x00c0, 0x3a10: 0x00c0, 0x3a11: 0x00c0, + 0x3a00: 0x00c5, 0x3a01: 0x00c0, 0x3a02: 0x00c0, 0x3a03: 0x00c0, 0x3a04: 0x00c0, 0x3a05: 0x0080, + 0x3a06: 0x0080, 0x3a07: 0x0080, 0x3a08: 0x0080, 0x3a09: 0x0080, 0x3a0a: 0x00c3, 0x3a0b: 0x00c3, + 0x3a0c: 0x00c3, 0x3a0d: 0x0080, 0x3a10: 0x00c0, 0x3a11: 0x00c0, 0x3a12: 0x00c0, 0x3a13: 0x00c0, 0x3a14: 0x00c0, 0x3a15: 0x00c0, 0x3a16: 0x00c0, 0x3a17: 0x00c0, - 0x3a18: 0x00c0, 0x3a19: 0x00c0, 0x3a1a: 0x00c0, 0x3a1b: 0x00c0, 0x3a1c: 0x00c0, 0x3a1d: 0x00c0, - 0x3a1e: 0x00c0, 0x3a1f: 0x00c0, 0x3a20: 0x00c0, 0x3a21: 0x00c0, 0x3a22: 0x00c0, 0x3a23: 0x00c0, - 0x3a24: 0x00c0, 0x3a25: 0x00c0, 0x3a26: 0x00c0, 0x3a27: 0x00c0, 0x3a28: 0x00c0, 0x3a29: 0x00c0, - 0x3a2a: 0x00c0, 0x3a2b: 0x00c0, 0x3a2c: 0x00c0, 0x3a2d: 0x00c0, 0x3a2e: 0x00c0, 0x3a2f: 0x00c0, - 0x3a30: 0x00c0, 0x3a31: 0x00c0, 0x3a32: 0x00c0, 0x3a33: 0x00c0, 0x3a34: 0x00c0, 0x3a35: 0x00c0, - 0x3a36: 0x00c3, 0x3a37: 0x00c3, 0x3a38: 0x00c3, 0x3a39: 0x00c3, 0x3a3a: 0x00c3, 0x3a3b: 0x00c3, - 0x3a3c: 0x00c3, 0x3a3d: 0x00c3, 0x3a3e: 0x00c3, 0x3a3f: 0x00c0, + 0x3a18: 0x00c0, 0x3a19: 0x00c0, 0x3a1a: 0x00c0, 0x3a1b: 0x0080, 0x3a1c: 0x00c0, 0x3a1d: 0x0080, + 0x3a1e: 0x0080, 0x3a1f: 0x0080, 0x3a21: 0x0080, 0x3a22: 0x0080, 0x3a23: 0x0080, + 0x3a24: 0x0080, 0x3a25: 0x0080, 0x3a26: 0x0080, 0x3a27: 0x0080, 0x3a28: 0x0080, 0x3a29: 0x0080, + 0x3a2a: 0x0080, 0x3a2b: 0x0080, 0x3a2c: 0x0080, 0x3a2d: 0x0080, 0x3a2e: 0x0080, 0x3a2f: 0x0080, + 0x3a30: 0x0080, 0x3a31: 0x0080, 0x3a32: 0x0080, 0x3a33: 0x0080, 0x3a34: 0x0080, // Block 0xe9, offset 0x3a40 - 0x3a40: 0x00c5, 0x3a41: 0x00c0, 0x3a42: 0x00c0, 0x3a43: 0x00c0, 0x3a44: 0x00c0, 0x3a45: 0x0080, - 0x3a46: 0x0080, 0x3a47: 0x0080, 0x3a48: 0x0080, 0x3a49: 0x0080, 0x3a4a: 0x00c3, 0x3a4b: 0x00c3, - 0x3a4c: 0x00c3, 0x3a4d: 0x0080, 0x3a50: 0x00c0, 0x3a51: 0x00c0, - 0x3a52: 0x00c0, 0x3a53: 0x00c0, 0x3a54: 0x00c0, 0x3a55: 0x00c0, 0x3a56: 0x00c0, 0x3a57: 0x00c0, - 0x3a58: 0x00c0, 0x3a59: 0x00c0, 0x3a5a: 0x00c0, 0x3a5b: 0x0080, 0x3a5c: 0x00c0, 0x3a5d: 0x0080, - 0x3a5e: 0x0080, 0x3a5f: 0x0080, 0x3a61: 0x0080, 0x3a62: 0x0080, 0x3a63: 0x0080, - 0x3a64: 0x0080, 0x3a65: 0x0080, 0x3a66: 0x0080, 0x3a67: 0x0080, 0x3a68: 0x0080, 0x3a69: 0x0080, - 0x3a6a: 0x0080, 0x3a6b: 0x0080, 0x3a6c: 0x0080, 0x3a6d: 0x0080, 0x3a6e: 0x0080, 0x3a6f: 0x0080, - 0x3a70: 0x0080, 0x3a71: 0x0080, 0x3a72: 0x0080, 0x3a73: 0x0080, 0x3a74: 0x0080, + 0x3a40: 0x00c0, 0x3a41: 0x00c0, 0x3a42: 0x00c0, 0x3a43: 0x00c0, 0x3a44: 0x00c0, 0x3a45: 0x00c0, + 0x3a46: 0x00c0, 0x3a47: 0x00c0, 0x3a48: 0x00c0, 0x3a49: 0x00c0, 0x3a4a: 0x00c0, 0x3a4b: 0x00c0, + 0x3a4c: 0x00c0, 0x3a4d: 0x00c0, 0x3a4e: 0x00c0, 0x3a4f: 0x00c0, 0x3a50: 0x00c0, 0x3a51: 0x00c0, + 0x3a53: 0x00c0, 0x3a54: 0x00c0, 0x3a55: 0x00c0, 0x3a56: 0x00c0, 0x3a57: 0x00c0, + 0x3a58: 0x00c0, 0x3a59: 0x00c0, 0x3a5a: 0x00c0, 0x3a5b: 0x00c0, 0x3a5c: 0x00c0, 0x3a5d: 0x00c0, + 0x3a5e: 0x00c0, 0x3a5f: 0x00c0, 0x3a60: 0x00c0, 0x3a61: 0x00c0, 0x3a62: 0x00c0, 0x3a63: 0x00c0, + 0x3a64: 0x00c0, 0x3a65: 0x00c0, 0x3a66: 0x00c0, 0x3a67: 0x00c0, 0x3a68: 0x00c0, 0x3a69: 0x00c0, + 0x3a6a: 0x00c0, 0x3a6b: 0x00c0, 0x3a6c: 0x00c0, 0x3a6d: 0x00c0, 0x3a6e: 0x00c0, 0x3a6f: 0x00c3, + 0x3a70: 0x00c3, 0x3a71: 0x00c3, 0x3a72: 0x00c0, 0x3a73: 0x00c0, 0x3a74: 0x00c3, 0x3a75: 0x00c5, + 0x3a76: 0x00c3, 0x3a77: 0x00c3, 0x3a78: 0x0080, 0x3a79: 0x0080, 0x3a7a: 0x0080, 0x3a7b: 0x0080, + 0x3a7c: 0x0080, 0x3a7d: 0x0080, 0x3a7e: 0x00c3, // Block 0xea, offset 0x3a80 0x3a80: 0x00c0, 0x3a81: 0x00c0, 0x3a82: 0x00c0, 0x3a83: 0x00c0, 0x3a84: 0x00c0, 0x3a85: 0x00c0, - 0x3a86: 0x00c0, 0x3a87: 0x00c0, 0x3a88: 0x00c0, 0x3a89: 0x00c0, 0x3a8a: 0x00c0, 0x3a8b: 0x00c0, - 0x3a8c: 0x00c0, 0x3a8d: 0x00c0, 0x3a8e: 0x00c0, 0x3a8f: 0x00c0, 0x3a90: 0x00c0, 0x3a91: 0x00c0, - 0x3a93: 0x00c0, 0x3a94: 0x00c0, 0x3a95: 0x00c0, 0x3a96: 0x00c0, 0x3a97: 0x00c0, + 0x3a86: 0x00c0, 0x3a88: 0x00c0, 0x3a8a: 0x00c0, 0x3a8b: 0x00c0, + 0x3a8c: 0x00c0, 0x3a8d: 0x00c0, 0x3a8f: 0x00c0, 0x3a90: 0x00c0, 0x3a91: 0x00c0, + 0x3a92: 0x00c0, 0x3a93: 0x00c0, 0x3a94: 0x00c0, 0x3a95: 0x00c0, 0x3a96: 0x00c0, 0x3a97: 0x00c0, 0x3a98: 0x00c0, 0x3a99: 0x00c0, 0x3a9a: 0x00c0, 0x3a9b: 0x00c0, 0x3a9c: 0x00c0, 0x3a9d: 0x00c0, - 0x3a9e: 0x00c0, 0x3a9f: 0x00c0, 0x3aa0: 0x00c0, 0x3aa1: 0x00c0, 0x3aa2: 0x00c0, 0x3aa3: 0x00c0, - 0x3aa4: 0x00c0, 0x3aa5: 0x00c0, 0x3aa6: 0x00c0, 0x3aa7: 0x00c0, 0x3aa8: 0x00c0, 0x3aa9: 0x00c0, - 0x3aaa: 0x00c0, 0x3aab: 0x00c0, 0x3aac: 0x00c0, 0x3aad: 0x00c0, 0x3aae: 0x00c0, 0x3aaf: 0x00c3, - 0x3ab0: 0x00c3, 0x3ab1: 0x00c3, 0x3ab2: 0x00c0, 0x3ab3: 0x00c0, 0x3ab4: 0x00c3, 0x3ab5: 0x00c5, - 0x3ab6: 0x00c3, 0x3ab7: 0x00c3, 0x3ab8: 0x0080, 0x3ab9: 0x0080, 0x3aba: 0x0080, 0x3abb: 0x0080, - 0x3abc: 0x0080, 0x3abd: 0x0080, 0x3abe: 0x00c3, + 0x3a9f: 0x00c0, 0x3aa0: 0x00c0, 0x3aa1: 0x00c0, 0x3aa2: 0x00c0, 0x3aa3: 0x00c0, + 0x3aa4: 0x00c0, 0x3aa5: 0x00c0, 0x3aa6: 0x00c0, 0x3aa7: 0x00c0, 0x3aa8: 0x00c0, 0x3aa9: 0x0080, + 0x3ab0: 0x00c0, 0x3ab1: 0x00c0, 0x3ab2: 0x00c0, 0x3ab3: 0x00c0, 0x3ab4: 0x00c0, 0x3ab5: 0x00c0, + 0x3ab6: 0x00c0, 0x3ab7: 0x00c0, 0x3ab8: 0x00c0, 0x3ab9: 0x00c0, 0x3aba: 0x00c0, 0x3abb: 0x00c0, + 0x3abc: 0x00c0, 0x3abd: 0x00c0, 0x3abe: 0x00c0, 0x3abf: 0x00c0, // Block 0xeb, offset 0x3ac0 0x3ac0: 0x00c0, 0x3ac1: 0x00c0, 0x3ac2: 0x00c0, 0x3ac3: 0x00c0, 0x3ac4: 0x00c0, 0x3ac5: 0x00c0, - 0x3ac6: 0x00c0, 0x3ac8: 0x00c0, 0x3aca: 0x00c0, 0x3acb: 0x00c0, - 0x3acc: 0x00c0, 0x3acd: 0x00c0, 0x3acf: 0x00c0, 0x3ad0: 0x00c0, 0x3ad1: 0x00c0, + 0x3ac6: 0x00c0, 0x3ac7: 0x00c0, 0x3ac8: 0x00c0, 0x3ac9: 0x00c0, 0x3aca: 0x00c0, 0x3acb: 0x00c0, + 0x3acc: 0x00c0, 0x3acd: 0x00c0, 0x3ace: 0x00c0, 0x3acf: 0x00c0, 0x3ad0: 0x00c0, 0x3ad1: 0x00c0, 0x3ad2: 0x00c0, 0x3ad3: 0x00c0, 0x3ad4: 0x00c0, 0x3ad5: 0x00c0, 0x3ad6: 0x00c0, 0x3ad7: 0x00c0, 0x3ad8: 0x00c0, 0x3ad9: 0x00c0, 0x3ada: 0x00c0, 0x3adb: 0x00c0, 0x3adc: 0x00c0, 0x3add: 0x00c0, - 0x3adf: 0x00c0, 0x3ae0: 0x00c0, 0x3ae1: 0x00c0, 0x3ae2: 0x00c0, 0x3ae3: 0x00c0, - 0x3ae4: 0x00c0, 0x3ae5: 0x00c0, 0x3ae6: 0x00c0, 0x3ae7: 0x00c0, 0x3ae8: 0x00c0, 0x3ae9: 0x0080, + 0x3ade: 0x00c0, 0x3adf: 0x00c3, 0x3ae0: 0x00c0, 0x3ae1: 0x00c0, 0x3ae2: 0x00c0, 0x3ae3: 0x00c3, + 0x3ae4: 0x00c3, 0x3ae5: 0x00c3, 0x3ae6: 0x00c3, 0x3ae7: 0x00c3, 0x3ae8: 0x00c3, 0x3ae9: 0x00c3, + 0x3aea: 0x00c6, 0x3af0: 0x00c0, 0x3af1: 0x00c0, 0x3af2: 0x00c0, 0x3af3: 0x00c0, 0x3af4: 0x00c0, 0x3af5: 0x00c0, - 0x3af6: 0x00c0, 0x3af7: 0x00c0, 0x3af8: 0x00c0, 0x3af9: 0x00c0, 0x3afa: 0x00c0, 0x3afb: 0x00c0, - 0x3afc: 0x00c0, 0x3afd: 0x00c0, 0x3afe: 0x00c0, 0x3aff: 0x00c0, + 0x3af6: 0x00c0, 0x3af7: 0x00c0, 0x3af8: 0x00c0, 0x3af9: 0x00c0, // Block 0xec, offset 0x3b00 - 0x3b00: 0x00c0, 0x3b01: 0x00c0, 0x3b02: 0x00c0, 0x3b03: 0x00c0, 0x3b04: 0x00c0, 0x3b05: 0x00c0, + 0x3b00: 0x00c3, 0x3b01: 0x00c3, 0x3b02: 0x00c0, 0x3b03: 0x00c0, 0x3b05: 0x00c0, 0x3b06: 0x00c0, 0x3b07: 0x00c0, 0x3b08: 0x00c0, 0x3b09: 0x00c0, 0x3b0a: 0x00c0, 0x3b0b: 0x00c0, - 0x3b0c: 0x00c0, 0x3b0d: 0x00c0, 0x3b0e: 0x00c0, 0x3b0f: 0x00c0, 0x3b10: 0x00c0, 0x3b11: 0x00c0, - 0x3b12: 0x00c0, 0x3b13: 0x00c0, 0x3b14: 0x00c0, 0x3b15: 0x00c0, 0x3b16: 0x00c0, 0x3b17: 0x00c0, + 0x3b0c: 0x00c0, 0x3b0f: 0x00c0, 0x3b10: 0x00c0, + 0x3b13: 0x00c0, 0x3b14: 0x00c0, 0x3b15: 0x00c0, 0x3b16: 0x00c0, 0x3b17: 0x00c0, 0x3b18: 0x00c0, 0x3b19: 0x00c0, 0x3b1a: 0x00c0, 0x3b1b: 0x00c0, 0x3b1c: 0x00c0, 0x3b1d: 0x00c0, - 0x3b1e: 0x00c0, 0x3b1f: 0x00c3, 0x3b20: 0x00c0, 0x3b21: 0x00c0, 0x3b22: 0x00c0, 0x3b23: 0x00c3, - 0x3b24: 0x00c3, 0x3b25: 0x00c3, 0x3b26: 0x00c3, 0x3b27: 0x00c3, 0x3b28: 0x00c3, 0x3b29: 0x00c3, - 0x3b2a: 0x00c6, - 0x3b30: 0x00c0, 0x3b31: 0x00c0, 0x3b32: 0x00c0, 0x3b33: 0x00c0, 0x3b34: 0x00c0, 0x3b35: 0x00c0, + 0x3b1e: 0x00c0, 0x3b1f: 0x00c0, 0x3b20: 0x00c0, 0x3b21: 0x00c0, 0x3b22: 0x00c0, 0x3b23: 0x00c0, + 0x3b24: 0x00c0, 0x3b25: 0x00c0, 0x3b26: 0x00c0, 0x3b27: 0x00c0, 0x3b28: 0x00c0, + 0x3b2a: 0x00c0, 0x3b2b: 0x00c0, 0x3b2c: 0x00c0, 0x3b2d: 0x00c0, 0x3b2e: 0x00c0, 0x3b2f: 0x00c0, + 0x3b30: 0x00c0, 0x3b32: 0x00c0, 0x3b33: 0x00c0, 0x3b35: 0x00c0, 0x3b36: 0x00c0, 0x3b37: 0x00c0, 0x3b38: 0x00c0, 0x3b39: 0x00c0, + 0x3b3c: 0x00c3, 0x3b3d: 0x00c0, 0x3b3e: 0x00c0, 0x3b3f: 0x00c0, // Block 0xed, offset 0x3b40 - 0x3b40: 0x00c3, 0x3b41: 0x00c3, 0x3b42: 0x00c0, 0x3b43: 0x00c0, 0x3b45: 0x00c0, - 0x3b46: 0x00c0, 0x3b47: 0x00c0, 0x3b48: 0x00c0, 0x3b49: 0x00c0, 0x3b4a: 0x00c0, 0x3b4b: 0x00c0, - 0x3b4c: 0x00c0, 0x3b4f: 0x00c0, 0x3b50: 0x00c0, - 0x3b53: 0x00c0, 0x3b54: 0x00c0, 0x3b55: 0x00c0, 0x3b56: 0x00c0, 0x3b57: 0x00c0, - 0x3b58: 0x00c0, 0x3b59: 0x00c0, 0x3b5a: 0x00c0, 0x3b5b: 0x00c0, 0x3b5c: 0x00c0, 0x3b5d: 0x00c0, + 0x3b40: 0x00c3, 0x3b41: 0x00c0, 0x3b42: 0x00c0, 0x3b43: 0x00c0, 0x3b44: 0x00c0, + 0x3b47: 0x00c0, 0x3b48: 0x00c0, 0x3b4b: 0x00c0, + 0x3b4c: 0x00c0, 0x3b4d: 0x00c5, 0x3b50: 0x00c0, + 0x3b57: 0x00c0, + 0x3b5d: 0x00c0, 0x3b5e: 0x00c0, 0x3b5f: 0x00c0, 0x3b60: 0x00c0, 0x3b61: 0x00c0, 0x3b62: 0x00c0, 0x3b63: 0x00c0, - 0x3b64: 0x00c0, 0x3b65: 0x00c0, 0x3b66: 0x00c0, 0x3b67: 0x00c0, 0x3b68: 0x00c0, - 0x3b6a: 0x00c0, 0x3b6b: 0x00c0, 0x3b6c: 0x00c0, 0x3b6d: 0x00c0, 0x3b6e: 0x00c0, 0x3b6f: 0x00c0, - 0x3b70: 0x00c0, 0x3b72: 0x00c0, 0x3b73: 0x00c0, 0x3b75: 0x00c0, - 0x3b76: 0x00c0, 0x3b77: 0x00c0, 0x3b78: 0x00c0, 0x3b79: 0x00c0, - 0x3b7c: 0x00c3, 0x3b7d: 0x00c0, 0x3b7e: 0x00c0, 0x3b7f: 0x00c0, + 0x3b66: 0x00c3, 0x3b67: 0x00c3, 0x3b68: 0x00c3, 0x3b69: 0x00c3, + 0x3b6a: 0x00c3, 0x3b6b: 0x00c3, 0x3b6c: 0x00c3, + 0x3b70: 0x00c3, 0x3b71: 0x00c3, 0x3b72: 0x00c3, 0x3b73: 0x00c3, 0x3b74: 0x00c3, // Block 0xee, offset 0x3b80 - 0x3b80: 0x00c3, 0x3b81: 0x00c0, 0x3b82: 0x00c0, 0x3b83: 0x00c0, 0x3b84: 0x00c0, - 0x3b87: 0x00c0, 0x3b88: 0x00c0, 0x3b8b: 0x00c0, - 0x3b8c: 0x00c0, 0x3b8d: 0x00c5, 0x3b90: 0x00c0, - 0x3b97: 0x00c0, - 0x3b9d: 0x00c0, + 0x3b80: 0x00c0, 0x3b81: 0x00c0, 0x3b82: 0x00c0, 0x3b83: 0x00c0, 0x3b84: 0x00c0, 0x3b85: 0x00c0, + 0x3b86: 0x00c0, 0x3b87: 0x00c0, 0x3b88: 0x00c0, 0x3b89: 0x00c0, 0x3b8a: 0x00c0, 0x3b8b: 0x00c0, + 0x3b8c: 0x00c0, 0x3b8d: 0x00c0, 0x3b8e: 0x00c0, 0x3b8f: 0x00c0, 0x3b90: 0x00c0, 0x3b91: 0x00c0, + 0x3b92: 0x00c0, 0x3b93: 0x00c0, 0x3b94: 0x00c0, 0x3b95: 0x00c0, 0x3b96: 0x00c0, 0x3b97: 0x00c0, + 0x3b98: 0x00c0, 0x3b99: 0x00c0, 0x3b9a: 0x00c0, 0x3b9b: 0x00c0, 0x3b9c: 0x00c0, 0x3b9d: 0x00c0, 0x3b9e: 0x00c0, 0x3b9f: 0x00c0, 0x3ba0: 0x00c0, 0x3ba1: 0x00c0, 0x3ba2: 0x00c0, 0x3ba3: 0x00c0, - 0x3ba6: 0x00c3, 0x3ba7: 0x00c3, 0x3ba8: 0x00c3, 0x3ba9: 0x00c3, - 0x3baa: 0x00c3, 0x3bab: 0x00c3, 0x3bac: 0x00c3, - 0x3bb0: 0x00c3, 0x3bb1: 0x00c3, 0x3bb2: 0x00c3, 0x3bb3: 0x00c3, 0x3bb4: 0x00c3, + 0x3ba4: 0x00c0, 0x3ba5: 0x00c0, 0x3ba6: 0x00c0, 0x3ba7: 0x00c0, 0x3ba8: 0x00c0, 0x3ba9: 0x00c0, + 0x3baa: 0x00c0, 0x3bab: 0x00c0, 0x3bac: 0x00c0, 0x3bad: 0x00c0, 0x3bae: 0x00c0, 0x3baf: 0x00c0, + 0x3bb0: 0x00c0, 0x3bb1: 0x00c0, 0x3bb2: 0x00c0, 0x3bb3: 0x00c0, 0x3bb4: 0x00c0, 0x3bb5: 0x00c0, + 0x3bb6: 0x00c0, 0x3bb7: 0x00c0, 0x3bb8: 0x00c3, 0x3bb9: 0x00c3, 0x3bba: 0x00c3, 0x3bbb: 0x00c3, + 0x3bbc: 0x00c3, 0x3bbd: 0x00c3, 0x3bbe: 0x00c3, 0x3bbf: 0x00c3, // Block 0xef, offset 0x3bc0 - 0x3bc0: 0x00c0, 0x3bc1: 0x00c0, 0x3bc2: 0x00c0, 0x3bc3: 0x00c0, 0x3bc4: 0x00c0, 0x3bc5: 0x00c0, - 0x3bc6: 0x00c0, 0x3bc7: 0x00c0, 0x3bc8: 0x00c0, 0x3bc9: 0x00c0, 0x3bca: 0x00c0, 0x3bcb: 0x00c0, - 0x3bcc: 0x00c0, 0x3bcd: 0x00c0, 0x3bce: 0x00c0, 0x3bcf: 0x00c0, 0x3bd0: 0x00c0, 0x3bd1: 0x00c0, + 0x3bc0: 0x00c0, 0x3bc1: 0x00c0, 0x3bc2: 0x00c6, 0x3bc3: 0x00c3, 0x3bc4: 0x00c3, 0x3bc5: 0x00c0, + 0x3bc6: 0x00c3, 0x3bc7: 0x00c0, 0x3bc8: 0x00c0, 0x3bc9: 0x00c0, 0x3bca: 0x00c0, 0x3bcb: 0x0080, + 0x3bcc: 0x0080, 0x3bcd: 0x0080, 0x3bce: 0x0080, 0x3bcf: 0x0080, 0x3bd0: 0x00c0, 0x3bd1: 0x00c0, 0x3bd2: 0x00c0, 0x3bd3: 0x00c0, 0x3bd4: 0x00c0, 0x3bd5: 0x00c0, 0x3bd6: 0x00c0, 0x3bd7: 0x00c0, - 0x3bd8: 0x00c0, 0x3bd9: 0x00c0, 0x3bda: 0x00c0, 0x3bdb: 0x00c0, 0x3bdc: 0x00c0, 0x3bdd: 0x00c0, - 0x3bde: 0x00c0, 0x3bdf: 0x00c0, 0x3be0: 0x00c0, 0x3be1: 0x00c0, 0x3be2: 0x00c0, 0x3be3: 0x00c0, - 0x3be4: 0x00c0, 0x3be5: 0x00c0, 0x3be6: 0x00c0, 0x3be7: 0x00c0, 0x3be8: 0x00c0, 0x3be9: 0x00c0, - 0x3bea: 0x00c0, 0x3beb: 0x00c0, 0x3bec: 0x00c0, 0x3bed: 0x00c0, 0x3bee: 0x00c0, 0x3bef: 0x00c0, - 0x3bf0: 0x00c0, 0x3bf1: 0x00c0, 0x3bf2: 0x00c0, 0x3bf3: 0x00c0, 0x3bf4: 0x00c0, 0x3bf5: 0x00c0, - 0x3bf6: 0x00c0, 0x3bf7: 0x00c0, 0x3bf8: 0x00c3, 0x3bf9: 0x00c3, 0x3bfa: 0x00c3, 0x3bfb: 0x00c3, - 0x3bfc: 0x00c3, 0x3bfd: 0x00c3, 0x3bfe: 0x00c3, 0x3bff: 0x00c3, + 0x3bd8: 0x00c0, 0x3bd9: 0x00c0, 0x3bdb: 0x0080, 0x3bdd: 0x0080, // Block 0xf0, offset 0x3c00 - 0x3c00: 0x00c0, 0x3c01: 0x00c0, 0x3c02: 0x00c6, 0x3c03: 0x00c3, 0x3c04: 0x00c3, 0x3c05: 0x00c0, - 0x3c06: 0x00c3, 0x3c07: 0x00c0, 0x3c08: 0x00c0, 0x3c09: 0x00c0, 0x3c0a: 0x00c0, 0x3c0b: 0x0080, - 0x3c0c: 0x0080, 0x3c0d: 0x0080, 0x3c0e: 0x0080, 0x3c0f: 0x0080, 0x3c10: 0x00c0, 0x3c11: 0x00c0, + 0x3c00: 0x00c0, 0x3c01: 0x00c0, 0x3c02: 0x00c0, 0x3c03: 0x00c0, 0x3c04: 0x00c0, 0x3c05: 0x00c0, + 0x3c06: 0x00c0, 0x3c07: 0x00c0, 0x3c08: 0x00c0, 0x3c09: 0x00c0, 0x3c0a: 0x00c0, 0x3c0b: 0x00c0, + 0x3c0c: 0x00c0, 0x3c0d: 0x00c0, 0x3c0e: 0x00c0, 0x3c0f: 0x00c0, 0x3c10: 0x00c0, 0x3c11: 0x00c0, 0x3c12: 0x00c0, 0x3c13: 0x00c0, 0x3c14: 0x00c0, 0x3c15: 0x00c0, 0x3c16: 0x00c0, 0x3c17: 0x00c0, - 0x3c18: 0x00c0, 0x3c19: 0x00c0, 0x3c1b: 0x0080, 0x3c1d: 0x0080, + 0x3c18: 0x00c0, 0x3c19: 0x00c0, 0x3c1a: 0x00c0, 0x3c1b: 0x00c0, 0x3c1c: 0x00c0, 0x3c1d: 0x00c0, + 0x3c1e: 0x00c0, 0x3c1f: 0x00c0, 0x3c20: 0x00c0, 0x3c21: 0x00c0, 0x3c22: 0x00c0, 0x3c23: 0x00c0, + 0x3c24: 0x00c0, 0x3c25: 0x00c0, 0x3c26: 0x00c0, 0x3c27: 0x00c0, 0x3c28: 0x00c0, 0x3c29: 0x00c0, + 0x3c2a: 0x00c0, 0x3c2b: 0x00c0, 0x3c2c: 0x00c0, 0x3c2d: 0x00c0, 0x3c2e: 0x00c0, 0x3c2f: 0x00c0, + 0x3c30: 0x00c0, 0x3c31: 0x00c0, 0x3c32: 0x00c0, 0x3c33: 0x00c3, 0x3c34: 0x00c3, 0x3c35: 0x00c3, + 0x3c36: 0x00c3, 0x3c37: 0x00c3, 0x3c38: 0x00c3, 0x3c39: 0x00c0, 0x3c3a: 0x00c3, 0x3c3b: 0x00c0, + 0x3c3c: 0x00c0, 0x3c3d: 0x00c0, 0x3c3e: 0x00c0, 0x3c3f: 0x00c3, // Block 0xf1, offset 0x3c40 - 0x3c40: 0x00c0, 0x3c41: 0x00c0, 0x3c42: 0x00c0, 0x3c43: 0x00c0, 0x3c44: 0x00c0, 0x3c45: 0x00c0, - 0x3c46: 0x00c0, 0x3c47: 0x00c0, 0x3c48: 0x00c0, 0x3c49: 0x00c0, 0x3c4a: 0x00c0, 0x3c4b: 0x00c0, - 0x3c4c: 0x00c0, 0x3c4d: 0x00c0, 0x3c4e: 0x00c0, 0x3c4f: 0x00c0, 0x3c50: 0x00c0, 0x3c51: 0x00c0, + 0x3c40: 0x00c3, 0x3c41: 0x00c0, 0x3c42: 0x00c6, 0x3c43: 0x00c3, 0x3c44: 0x00c0, 0x3c45: 0x00c0, + 0x3c46: 0x0080, 0x3c47: 0x00c0, + 0x3c50: 0x00c0, 0x3c51: 0x00c0, 0x3c52: 0x00c0, 0x3c53: 0x00c0, 0x3c54: 0x00c0, 0x3c55: 0x00c0, 0x3c56: 0x00c0, 0x3c57: 0x00c0, - 0x3c58: 0x00c0, 0x3c59: 0x00c0, 0x3c5a: 0x00c0, 0x3c5b: 0x00c0, 0x3c5c: 0x00c0, 0x3c5d: 0x00c0, - 0x3c5e: 0x00c0, 0x3c5f: 0x00c0, 0x3c60: 0x00c0, 0x3c61: 0x00c0, 0x3c62: 0x00c0, 0x3c63: 0x00c0, - 0x3c64: 0x00c0, 0x3c65: 0x00c0, 0x3c66: 0x00c0, 0x3c67: 0x00c0, 0x3c68: 0x00c0, 0x3c69: 0x00c0, - 0x3c6a: 0x00c0, 0x3c6b: 0x00c0, 0x3c6c: 0x00c0, 0x3c6d: 0x00c0, 0x3c6e: 0x00c0, 0x3c6f: 0x00c0, - 0x3c70: 0x00c0, 0x3c71: 0x00c0, 0x3c72: 0x00c0, 0x3c73: 0x00c3, 0x3c74: 0x00c3, 0x3c75: 0x00c3, - 0x3c76: 0x00c3, 0x3c77: 0x00c3, 0x3c78: 0x00c3, 0x3c79: 0x00c0, 0x3c7a: 0x00c3, 0x3c7b: 0x00c0, - 0x3c7c: 0x00c0, 0x3c7d: 0x00c0, 0x3c7e: 0x00c0, 0x3c7f: 0x00c3, + 0x3c58: 0x00c0, 0x3c59: 0x00c0, // Block 0xf2, offset 0x3c80 - 0x3c80: 0x00c3, 0x3c81: 0x00c0, 0x3c82: 0x00c6, 0x3c83: 0x00c3, 0x3c84: 0x00c0, 0x3c85: 0x00c0, - 0x3c86: 0x0080, 0x3c87: 0x00c0, - 0x3c90: 0x00c0, 0x3c91: 0x00c0, + 0x3c80: 0x00c0, 0x3c81: 0x00c0, 0x3c82: 0x00c0, 0x3c83: 0x00c0, 0x3c84: 0x00c0, 0x3c85: 0x00c0, + 0x3c86: 0x00c0, 0x3c87: 0x00c0, 0x3c88: 0x00c0, 0x3c89: 0x00c0, 0x3c8a: 0x00c0, 0x3c8b: 0x00c0, + 0x3c8c: 0x00c0, 0x3c8d: 0x00c0, 0x3c8e: 0x00c0, 0x3c8f: 0x00c0, 0x3c90: 0x00c0, 0x3c91: 0x00c0, 0x3c92: 0x00c0, 0x3c93: 0x00c0, 0x3c94: 0x00c0, 0x3c95: 0x00c0, 0x3c96: 0x00c0, 0x3c97: 0x00c0, - 0x3c98: 0x00c0, 0x3c99: 0x00c0, + 0x3c98: 0x00c0, 0x3c99: 0x00c0, 0x3c9a: 0x00c0, 0x3c9b: 0x00c0, 0x3c9c: 0x00c0, 0x3c9d: 0x00c0, + 0x3c9e: 0x00c0, 0x3c9f: 0x00c0, 0x3ca0: 0x00c0, 0x3ca1: 0x00c0, 0x3ca2: 0x00c0, 0x3ca3: 0x00c0, + 0x3ca4: 0x00c0, 0x3ca5: 0x00c0, 0x3ca6: 0x00c0, 0x3ca7: 0x00c0, 0x3ca8: 0x00c0, 0x3ca9: 0x00c0, + 0x3caa: 0x00c0, 0x3cab: 0x00c0, 0x3cac: 0x00c0, 0x3cad: 0x00c0, 0x3cae: 0x00c0, 0x3caf: 0x00c0, + 0x3cb0: 0x00c0, 0x3cb1: 0x00c0, 0x3cb2: 0x00c3, 0x3cb3: 0x00c3, 0x3cb4: 0x00c3, 0x3cb5: 0x00c3, + 0x3cb8: 0x00c0, 0x3cb9: 0x00c0, 0x3cba: 0x00c0, 0x3cbb: 0x00c0, + 0x3cbc: 0x00c3, 0x3cbd: 0x00c3, 0x3cbe: 0x00c0, 0x3cbf: 0x00c6, // Block 0xf3, offset 0x3cc0 - 0x3cc0: 0x00c0, 0x3cc1: 0x00c0, 0x3cc2: 0x00c0, 0x3cc3: 0x00c0, 0x3cc4: 0x00c0, 0x3cc5: 0x00c0, - 0x3cc6: 0x00c0, 0x3cc7: 0x00c0, 0x3cc8: 0x00c0, 0x3cc9: 0x00c0, 0x3cca: 0x00c0, 0x3ccb: 0x00c0, - 0x3ccc: 0x00c0, 0x3ccd: 0x00c0, 0x3cce: 0x00c0, 0x3ccf: 0x00c0, 0x3cd0: 0x00c0, 0x3cd1: 0x00c0, - 0x3cd2: 0x00c0, 0x3cd3: 0x00c0, 0x3cd4: 0x00c0, 0x3cd5: 0x00c0, 0x3cd6: 0x00c0, 0x3cd7: 0x00c0, - 0x3cd8: 0x00c0, 0x3cd9: 0x00c0, 0x3cda: 0x00c0, 0x3cdb: 0x00c0, 0x3cdc: 0x00c0, 0x3cdd: 0x00c0, - 0x3cde: 0x00c0, 0x3cdf: 0x00c0, 0x3ce0: 0x00c0, 0x3ce1: 0x00c0, 0x3ce2: 0x00c0, 0x3ce3: 0x00c0, - 0x3ce4: 0x00c0, 0x3ce5: 0x00c0, 0x3ce6: 0x00c0, 0x3ce7: 0x00c0, 0x3ce8: 0x00c0, 0x3ce9: 0x00c0, - 0x3cea: 0x00c0, 0x3ceb: 0x00c0, 0x3cec: 0x00c0, 0x3ced: 0x00c0, 0x3cee: 0x00c0, 0x3cef: 0x00c0, - 0x3cf0: 0x00c0, 0x3cf1: 0x00c0, 0x3cf2: 0x00c3, 0x3cf3: 0x00c3, 0x3cf4: 0x00c3, 0x3cf5: 0x00c3, - 0x3cf8: 0x00c0, 0x3cf9: 0x00c0, 0x3cfa: 0x00c0, 0x3cfb: 0x00c0, - 0x3cfc: 0x00c3, 0x3cfd: 0x00c3, 0x3cfe: 0x00c0, 0x3cff: 0x00c6, + 0x3cc0: 0x00c3, 0x3cc1: 0x0080, 0x3cc2: 0x0080, 0x3cc3: 0x0080, 0x3cc4: 0x0080, 0x3cc5: 0x0080, + 0x3cc6: 0x0080, 0x3cc7: 0x0080, 0x3cc8: 0x0080, 0x3cc9: 0x0080, 0x3cca: 0x0080, 0x3ccb: 0x0080, + 0x3ccc: 0x0080, 0x3ccd: 0x0080, 0x3cce: 0x0080, 0x3ccf: 0x0080, 0x3cd0: 0x0080, 0x3cd1: 0x0080, + 0x3cd2: 0x0080, 0x3cd3: 0x0080, 0x3cd4: 0x0080, 0x3cd5: 0x0080, 0x3cd6: 0x0080, 0x3cd7: 0x0080, + 0x3cd8: 0x00c0, 0x3cd9: 0x00c0, 0x3cda: 0x00c0, 0x3cdb: 0x00c0, 0x3cdc: 0x00c3, 0x3cdd: 0x00c3, // Block 0xf4, offset 0x3d00 - 0x3d00: 0x00c3, 0x3d01: 0x0080, 0x3d02: 0x0080, 0x3d03: 0x0080, 0x3d04: 0x0080, 0x3d05: 0x0080, - 0x3d06: 0x0080, 0x3d07: 0x0080, 0x3d08: 0x0080, 0x3d09: 0x0080, 0x3d0a: 0x0080, 0x3d0b: 0x0080, - 0x3d0c: 0x0080, 0x3d0d: 0x0080, 0x3d0e: 0x0080, 0x3d0f: 0x0080, 0x3d10: 0x0080, 0x3d11: 0x0080, - 0x3d12: 0x0080, 0x3d13: 0x0080, 0x3d14: 0x0080, 0x3d15: 0x0080, 0x3d16: 0x0080, 0x3d17: 0x0080, - 0x3d18: 0x00c0, 0x3d19: 0x00c0, 0x3d1a: 0x00c0, 0x3d1b: 0x00c0, 0x3d1c: 0x00c3, 0x3d1d: 0x00c3, + 0x3d00: 0x00c0, 0x3d01: 0x00c0, 0x3d02: 0x00c0, 0x3d03: 0x00c0, 0x3d04: 0x00c0, 0x3d05: 0x00c0, + 0x3d06: 0x00c0, 0x3d07: 0x00c0, 0x3d08: 0x00c0, 0x3d09: 0x00c0, 0x3d0a: 0x00c0, 0x3d0b: 0x00c0, + 0x3d0c: 0x00c0, 0x3d0d: 0x00c0, 0x3d0e: 0x00c0, 0x3d0f: 0x00c0, 0x3d10: 0x00c0, 0x3d11: 0x00c0, + 0x3d12: 0x00c0, 0x3d13: 0x00c0, 0x3d14: 0x00c0, 0x3d15: 0x00c0, 0x3d16: 0x00c0, 0x3d17: 0x00c0, + 0x3d18: 0x00c0, 0x3d19: 0x00c0, 0x3d1a: 0x00c0, 0x3d1b: 0x00c0, 0x3d1c: 0x00c0, 0x3d1d: 0x00c0, + 0x3d1e: 0x00c0, 0x3d1f: 0x00c0, 0x3d20: 0x00c0, 0x3d21: 0x00c0, 0x3d22: 0x00c0, 0x3d23: 0x00c0, + 0x3d24: 0x00c0, 0x3d25: 0x00c0, 0x3d26: 0x00c0, 0x3d27: 0x00c0, 0x3d28: 0x00c0, 0x3d29: 0x00c0, + 0x3d2a: 0x00c0, 0x3d2b: 0x00c0, 0x3d2c: 0x00c0, 0x3d2d: 0x00c0, 0x3d2e: 0x00c0, 0x3d2f: 0x00c0, + 0x3d30: 0x00c0, 0x3d31: 0x00c0, 0x3d32: 0x00c0, 0x3d33: 0x00c3, 0x3d34: 0x00c3, 0x3d35: 0x00c3, + 0x3d36: 0x00c3, 0x3d37: 0x00c3, 0x3d38: 0x00c3, 0x3d39: 0x00c3, 0x3d3a: 0x00c3, 0x3d3b: 0x00c0, + 0x3d3c: 0x00c0, 0x3d3d: 0x00c3, 0x3d3e: 0x00c0, 0x3d3f: 0x00c6, // Block 0xf5, offset 0x3d40 - 0x3d40: 0x00c0, 0x3d41: 0x00c0, 0x3d42: 0x00c0, 0x3d43: 0x00c0, 0x3d44: 0x00c0, 0x3d45: 0x00c0, - 0x3d46: 0x00c0, 0x3d47: 0x00c0, 0x3d48: 0x00c0, 0x3d49: 0x00c0, 0x3d4a: 0x00c0, 0x3d4b: 0x00c0, - 0x3d4c: 0x00c0, 0x3d4d: 0x00c0, 0x3d4e: 0x00c0, 0x3d4f: 0x00c0, 0x3d50: 0x00c0, 0x3d51: 0x00c0, + 0x3d40: 0x00c3, 0x3d41: 0x0080, 0x3d42: 0x0080, 0x3d43: 0x0080, 0x3d44: 0x00c0, + 0x3d50: 0x00c0, 0x3d51: 0x00c0, 0x3d52: 0x00c0, 0x3d53: 0x00c0, 0x3d54: 0x00c0, 0x3d55: 0x00c0, 0x3d56: 0x00c0, 0x3d57: 0x00c0, - 0x3d58: 0x00c0, 0x3d59: 0x00c0, 0x3d5a: 0x00c0, 0x3d5b: 0x00c0, 0x3d5c: 0x00c0, 0x3d5d: 0x00c0, - 0x3d5e: 0x00c0, 0x3d5f: 0x00c0, 0x3d60: 0x00c0, 0x3d61: 0x00c0, 0x3d62: 0x00c0, 0x3d63: 0x00c0, - 0x3d64: 0x00c0, 0x3d65: 0x00c0, 0x3d66: 0x00c0, 0x3d67: 0x00c0, 0x3d68: 0x00c0, 0x3d69: 0x00c0, - 0x3d6a: 0x00c0, 0x3d6b: 0x00c0, 0x3d6c: 0x00c0, 0x3d6d: 0x00c0, 0x3d6e: 0x00c0, 0x3d6f: 0x00c0, - 0x3d70: 0x00c0, 0x3d71: 0x00c0, 0x3d72: 0x00c0, 0x3d73: 0x00c3, 0x3d74: 0x00c3, 0x3d75: 0x00c3, - 0x3d76: 0x00c3, 0x3d77: 0x00c3, 0x3d78: 0x00c3, 0x3d79: 0x00c3, 0x3d7a: 0x00c3, 0x3d7b: 0x00c0, - 0x3d7c: 0x00c0, 0x3d7d: 0x00c3, 0x3d7e: 0x00c0, 0x3d7f: 0x00c6, + 0x3d58: 0x00c0, 0x3d59: 0x00c0, + 0x3d60: 0x0080, 0x3d61: 0x0080, 0x3d62: 0x0080, 0x3d63: 0x0080, + 0x3d64: 0x0080, 0x3d65: 0x0080, 0x3d66: 0x0080, 0x3d67: 0x0080, 0x3d68: 0x0080, 0x3d69: 0x0080, + 0x3d6a: 0x0080, 0x3d6b: 0x0080, 0x3d6c: 0x0080, // Block 0xf6, offset 0x3d80 - 0x3d80: 0x00c3, 0x3d81: 0x0080, 0x3d82: 0x0080, 0x3d83: 0x0080, 0x3d84: 0x00c0, - 0x3d90: 0x00c0, 0x3d91: 0x00c0, + 0x3d80: 0x00c0, 0x3d81: 0x00c0, 0x3d82: 0x00c0, 0x3d83: 0x00c0, 0x3d84: 0x00c0, 0x3d85: 0x00c0, + 0x3d86: 0x00c0, 0x3d87: 0x00c0, 0x3d88: 0x00c0, 0x3d89: 0x00c0, 0x3d8a: 0x00c0, 0x3d8b: 0x00c0, + 0x3d8c: 0x00c0, 0x3d8d: 0x00c0, 0x3d8e: 0x00c0, 0x3d8f: 0x00c0, 0x3d90: 0x00c0, 0x3d91: 0x00c0, 0x3d92: 0x00c0, 0x3d93: 0x00c0, 0x3d94: 0x00c0, 0x3d95: 0x00c0, 0x3d96: 0x00c0, 0x3d97: 0x00c0, - 0x3d98: 0x00c0, 0x3d99: 0x00c0, - 0x3da0: 0x0080, 0x3da1: 0x0080, 0x3da2: 0x0080, 0x3da3: 0x0080, - 0x3da4: 0x0080, 0x3da5: 0x0080, 0x3da6: 0x0080, 0x3da7: 0x0080, 0x3da8: 0x0080, 0x3da9: 0x0080, - 0x3daa: 0x0080, 0x3dab: 0x0080, 0x3dac: 0x0080, + 0x3d98: 0x00c0, 0x3d99: 0x00c0, 0x3d9a: 0x00c0, 0x3d9b: 0x00c0, 0x3d9c: 0x00c0, 0x3d9d: 0x00c0, + 0x3d9e: 0x00c0, 0x3d9f: 0x00c0, 0x3da0: 0x00c0, 0x3da1: 0x00c0, 0x3da2: 0x00c0, 0x3da3: 0x00c0, + 0x3da4: 0x00c0, 0x3da5: 0x00c0, 0x3da6: 0x00c0, 0x3da7: 0x00c0, 0x3da8: 0x00c0, 0x3da9: 0x00c0, + 0x3daa: 0x00c0, 0x3dab: 0x00c3, 0x3dac: 0x00c0, 0x3dad: 0x00c3, 0x3dae: 0x00c0, 0x3daf: 0x00c0, + 0x3db0: 0x00c3, 0x3db1: 0x00c3, 0x3db2: 0x00c3, 0x3db3: 0x00c3, 0x3db4: 0x00c3, 0x3db5: 0x00c3, + 0x3db6: 0x00c5, 0x3db7: 0x00c3, // Block 0xf7, offset 0x3dc0 0x3dc0: 0x00c0, 0x3dc1: 0x00c0, 0x3dc2: 0x00c0, 0x3dc3: 0x00c0, 0x3dc4: 0x00c0, 0x3dc5: 0x00c0, - 0x3dc6: 0x00c0, 0x3dc7: 0x00c0, 0x3dc8: 0x00c0, 0x3dc9: 0x00c0, 0x3dca: 0x00c0, 0x3dcb: 0x00c0, - 0x3dcc: 0x00c0, 0x3dcd: 0x00c0, 0x3dce: 0x00c0, 0x3dcf: 0x00c0, 0x3dd0: 0x00c0, 0x3dd1: 0x00c0, - 0x3dd2: 0x00c0, 0x3dd3: 0x00c0, 0x3dd4: 0x00c0, 0x3dd5: 0x00c0, 0x3dd6: 0x00c0, 0x3dd7: 0x00c0, - 0x3dd8: 0x00c0, 0x3dd9: 0x00c0, 0x3dda: 0x00c0, 0x3ddb: 0x00c0, 0x3ddc: 0x00c0, 0x3ddd: 0x00c0, - 0x3dde: 0x00c0, 0x3ddf: 0x00c0, 0x3de0: 0x00c0, 0x3de1: 0x00c0, 0x3de2: 0x00c0, 0x3de3: 0x00c0, - 0x3de4: 0x00c0, 0x3de5: 0x00c0, 0x3de6: 0x00c0, 0x3de7: 0x00c0, 0x3de8: 0x00c0, 0x3de9: 0x00c0, - 0x3dea: 0x00c0, 0x3deb: 0x00c3, 0x3dec: 0x00c0, 0x3ded: 0x00c3, 0x3dee: 0x00c0, 0x3def: 0x00c0, - 0x3df0: 0x00c3, 0x3df1: 0x00c3, 0x3df2: 0x00c3, 0x3df3: 0x00c3, 0x3df4: 0x00c3, 0x3df5: 0x00c3, - 0x3df6: 0x00c5, 0x3df7: 0x00c3, + 0x3dc6: 0x00c0, 0x3dc7: 0x00c0, 0x3dc8: 0x00c0, 0x3dc9: 0x00c0, // Block 0xf8, offset 0x3e00 0x3e00: 0x00c0, 0x3e01: 0x00c0, 0x3e02: 0x00c0, 0x3e03: 0x00c0, 0x3e04: 0x00c0, 0x3e05: 0x00c0, - 0x3e06: 0x00c0, 0x3e07: 0x00c0, 0x3e08: 0x00c0, 0x3e09: 0x00c0, + 0x3e06: 0x00c0, 0x3e07: 0x00c0, 0x3e08: 0x00c0, 0x3e09: 0x00c0, 0x3e0a: 0x00c0, 0x3e0b: 0x00c0, + 0x3e0c: 0x00c0, 0x3e0d: 0x00c0, 0x3e0e: 0x00c0, 0x3e0f: 0x00c0, 0x3e10: 0x00c0, 0x3e11: 0x00c0, + 0x3e12: 0x00c0, 0x3e13: 0x00c0, 0x3e14: 0x00c0, 0x3e15: 0x00c0, 0x3e16: 0x00c0, 0x3e17: 0x00c0, + 0x3e18: 0x00c0, 0x3e19: 0x00c0, 0x3e1d: 0x00c3, + 0x3e1e: 0x00c3, 0x3e1f: 0x00c3, 0x3e20: 0x00c0, 0x3e21: 0x00c0, 0x3e22: 0x00c3, 0x3e23: 0x00c3, + 0x3e24: 0x00c3, 0x3e25: 0x00c3, 0x3e26: 0x00c0, 0x3e27: 0x00c3, 0x3e28: 0x00c3, 0x3e29: 0x00c3, + 0x3e2a: 0x00c3, 0x3e2b: 0x00c6, + 0x3e30: 0x00c0, 0x3e31: 0x00c0, 0x3e32: 0x00c0, 0x3e33: 0x00c0, 0x3e34: 0x00c0, 0x3e35: 0x00c0, + 0x3e36: 0x00c0, 0x3e37: 0x00c0, 0x3e38: 0x00c0, 0x3e39: 0x00c0, 0x3e3a: 0x0080, 0x3e3b: 0x0080, + 0x3e3c: 0x0080, 0x3e3d: 0x0080, 0x3e3e: 0x0080, 0x3e3f: 0x0080, // Block 0xf9, offset 0x3e40 - 0x3e40: 0x00c0, 0x3e41: 0x00c0, 0x3e42: 0x00c0, 0x3e43: 0x00c0, 0x3e44: 0x00c0, 0x3e45: 0x00c0, - 0x3e46: 0x00c0, 0x3e47: 0x00c0, 0x3e48: 0x00c0, 0x3e49: 0x00c0, 0x3e4a: 0x00c0, 0x3e4b: 0x00c0, - 0x3e4c: 0x00c0, 0x3e4d: 0x00c0, 0x3e4e: 0x00c0, 0x3e4f: 0x00c0, 0x3e50: 0x00c0, 0x3e51: 0x00c0, - 0x3e52: 0x00c0, 0x3e53: 0x00c0, 0x3e54: 0x00c0, 0x3e55: 0x00c0, 0x3e56: 0x00c0, 0x3e57: 0x00c0, - 0x3e58: 0x00c0, 0x3e59: 0x00c0, 0x3e5d: 0x00c3, - 0x3e5e: 0x00c3, 0x3e5f: 0x00c3, 0x3e60: 0x00c0, 0x3e61: 0x00c0, 0x3e62: 0x00c3, 0x3e63: 0x00c3, - 0x3e64: 0x00c3, 0x3e65: 0x00c3, 0x3e66: 0x00c0, 0x3e67: 0x00c3, 0x3e68: 0x00c3, 0x3e69: 0x00c3, - 0x3e6a: 0x00c3, 0x3e6b: 0x00c6, + 0x3e60: 0x00c0, 0x3e61: 0x00c0, 0x3e62: 0x00c0, 0x3e63: 0x00c0, + 0x3e64: 0x00c0, 0x3e65: 0x00c0, 0x3e66: 0x00c0, 0x3e67: 0x00c0, 0x3e68: 0x00c0, 0x3e69: 0x00c0, + 0x3e6a: 0x00c0, 0x3e6b: 0x00c0, 0x3e6c: 0x00c0, 0x3e6d: 0x00c0, 0x3e6e: 0x00c0, 0x3e6f: 0x00c0, 0x3e70: 0x00c0, 0x3e71: 0x00c0, 0x3e72: 0x00c0, 0x3e73: 0x00c0, 0x3e74: 0x00c0, 0x3e75: 0x00c0, - 0x3e76: 0x00c0, 0x3e77: 0x00c0, 0x3e78: 0x00c0, 0x3e79: 0x00c0, 0x3e7a: 0x0080, 0x3e7b: 0x0080, - 0x3e7c: 0x0080, 0x3e7d: 0x0080, 0x3e7e: 0x0080, 0x3e7f: 0x0080, + 0x3e76: 0x00c0, 0x3e77: 0x00c0, 0x3e78: 0x00c0, 0x3e79: 0x00c0, 0x3e7a: 0x00c0, 0x3e7b: 0x00c0, + 0x3e7c: 0x00c0, 0x3e7d: 0x00c0, 0x3e7e: 0x00c0, 0x3e7f: 0x00c0, // Block 0xfa, offset 0x3e80 - 0x3ea0: 0x00c0, 0x3ea1: 0x00c0, 0x3ea2: 0x00c0, 0x3ea3: 0x00c0, + 0x3e80: 0x00c0, 0x3e81: 0x00c0, 0x3e82: 0x00c0, 0x3e83: 0x00c0, 0x3e84: 0x00c0, 0x3e85: 0x00c0, + 0x3e86: 0x00c0, 0x3e87: 0x00c0, 0x3e88: 0x00c0, 0x3e89: 0x00c0, 0x3e8a: 0x00c0, 0x3e8b: 0x00c0, + 0x3e8c: 0x00c0, 0x3e8d: 0x00c0, 0x3e8e: 0x00c0, 0x3e8f: 0x00c0, 0x3e90: 0x00c0, 0x3e91: 0x00c0, + 0x3e92: 0x00c0, 0x3e93: 0x00c0, 0x3e94: 0x00c0, 0x3e95: 0x00c0, 0x3e96: 0x00c0, 0x3e97: 0x00c0, + 0x3e98: 0x00c0, 0x3e99: 0x00c0, 0x3e9a: 0x00c0, 0x3e9b: 0x00c0, 0x3e9c: 0x00c0, 0x3e9d: 0x00c0, + 0x3e9e: 0x00c0, 0x3e9f: 0x00c0, 0x3ea0: 0x00c0, 0x3ea1: 0x00c0, 0x3ea2: 0x00c0, 0x3ea3: 0x00c0, 0x3ea4: 0x00c0, 0x3ea5: 0x00c0, 0x3ea6: 0x00c0, 0x3ea7: 0x00c0, 0x3ea8: 0x00c0, 0x3ea9: 0x00c0, - 0x3eaa: 0x00c0, 0x3eab: 0x00c0, 0x3eac: 0x00c0, 0x3ead: 0x00c0, 0x3eae: 0x00c0, 0x3eaf: 0x00c0, - 0x3eb0: 0x00c0, 0x3eb1: 0x00c0, 0x3eb2: 0x00c0, 0x3eb3: 0x00c0, 0x3eb4: 0x00c0, 0x3eb5: 0x00c0, - 0x3eb6: 0x00c0, 0x3eb7: 0x00c0, 0x3eb8: 0x00c0, 0x3eb9: 0x00c0, 0x3eba: 0x00c0, 0x3ebb: 0x00c0, - 0x3ebc: 0x00c0, 0x3ebd: 0x00c0, 0x3ebe: 0x00c0, 0x3ebf: 0x00c0, + 0x3eaa: 0x0080, 0x3eab: 0x0080, 0x3eac: 0x0080, 0x3ead: 0x0080, 0x3eae: 0x0080, 0x3eaf: 0x0080, + 0x3eb0: 0x0080, 0x3eb1: 0x0080, 0x3eb2: 0x0080, + 0x3ebf: 0x00c0, // Block 0xfb, offset 0x3ec0 - 0x3ec0: 0x00c0, 0x3ec1: 0x00c0, 0x3ec2: 0x00c0, 0x3ec3: 0x00c0, 0x3ec4: 0x00c0, 0x3ec5: 0x00c0, - 0x3ec6: 0x00c0, 0x3ec7: 0x00c0, 0x3ec8: 0x00c0, 0x3ec9: 0x00c0, 0x3eca: 0x00c0, 0x3ecb: 0x00c0, + 0x3ec0: 0x00c0, 0x3ec1: 0x00c3, 0x3ec2: 0x00c3, 0x3ec3: 0x00c3, 0x3ec4: 0x00c3, 0x3ec5: 0x00c3, + 0x3ec6: 0x00c3, 0x3ec7: 0x00c0, 0x3ec8: 0x00c0, 0x3ec9: 0x00c3, 0x3eca: 0x00c3, 0x3ecb: 0x00c0, 0x3ecc: 0x00c0, 0x3ecd: 0x00c0, 0x3ece: 0x00c0, 0x3ecf: 0x00c0, 0x3ed0: 0x00c0, 0x3ed1: 0x00c0, 0x3ed2: 0x00c0, 0x3ed3: 0x00c0, 0x3ed4: 0x00c0, 0x3ed5: 0x00c0, 0x3ed6: 0x00c0, 0x3ed7: 0x00c0, 0x3ed8: 0x00c0, 0x3ed9: 0x00c0, 0x3eda: 0x00c0, 0x3edb: 0x00c0, 0x3edc: 0x00c0, 0x3edd: 0x00c0, 0x3ede: 0x00c0, 0x3edf: 0x00c0, 0x3ee0: 0x00c0, 0x3ee1: 0x00c0, 0x3ee2: 0x00c0, 0x3ee3: 0x00c0, 0x3ee4: 0x00c0, 0x3ee5: 0x00c0, 0x3ee6: 0x00c0, 0x3ee7: 0x00c0, 0x3ee8: 0x00c0, 0x3ee9: 0x00c0, - 0x3eea: 0x0080, 0x3eeb: 0x0080, 0x3eec: 0x0080, 0x3eed: 0x0080, 0x3eee: 0x0080, 0x3eef: 0x0080, - 0x3ef0: 0x0080, 0x3ef1: 0x0080, 0x3ef2: 0x0080, - 0x3eff: 0x00c0, + 0x3eea: 0x00c0, 0x3eeb: 0x00c0, 0x3eec: 0x00c0, 0x3eed: 0x00c0, 0x3eee: 0x00c0, 0x3eef: 0x00c0, + 0x3ef0: 0x00c0, 0x3ef1: 0x00c0, 0x3ef2: 0x00c0, 0x3ef3: 0x00c3, 0x3ef4: 0x00c6, 0x3ef5: 0x00c3, + 0x3ef6: 0x00c3, 0x3ef7: 0x00c3, 0x3ef8: 0x00c3, 0x3ef9: 0x00c0, 0x3efa: 0x00c0, 0x3efb: 0x00c3, + 0x3efc: 0x00c3, 0x3efd: 0x00c3, 0x3efe: 0x00c3, 0x3eff: 0x0080, // Block 0xfc, offset 0x3f00 - 0x3f00: 0x00c0, 0x3f01: 0x00c0, 0x3f02: 0x00c0, 0x3f03: 0x00c0, 0x3f04: 0x00c0, 0x3f05: 0x00c0, - 0x3f06: 0x00c0, 0x3f07: 0x00c0, 0x3f08: 0x00c0, 0x3f09: 0x00c0, 0x3f0a: 0x00c0, 0x3f0b: 0x00c0, - 0x3f0c: 0x00c0, 0x3f0d: 0x00c0, 0x3f0e: 0x00c0, 0x3f0f: 0x00c0, 0x3f10: 0x00c0, 0x3f11: 0x00c0, - 0x3f12: 0x00c0, 0x3f13: 0x00c0, 0x3f14: 0x00c0, 0x3f15: 0x00c0, 0x3f16: 0x00c0, 0x3f17: 0x00c0, - 0x3f18: 0x00c0, 0x3f19: 0x00c0, 0x3f1a: 0x00c0, 0x3f1b: 0x00c0, 0x3f1c: 0x00c0, 0x3f1d: 0x00c0, + 0x3f00: 0x0080, 0x3f01: 0x0080, 0x3f02: 0x0080, 0x3f03: 0x0080, 0x3f04: 0x0080, 0x3f05: 0x0080, + 0x3f06: 0x0080, 0x3f07: 0x00c6, + 0x3f10: 0x00c0, 0x3f11: 0x00c3, + 0x3f12: 0x00c3, 0x3f13: 0x00c3, 0x3f14: 0x00c3, 0x3f15: 0x00c3, 0x3f16: 0x00c3, 0x3f17: 0x00c0, + 0x3f18: 0x00c0, 0x3f19: 0x00c3, 0x3f1a: 0x00c3, 0x3f1b: 0x00c3, 0x3f1c: 0x00c0, 0x3f1d: 0x00c0, 0x3f1e: 0x00c0, 0x3f1f: 0x00c0, 0x3f20: 0x00c0, 0x3f21: 0x00c0, 0x3f22: 0x00c0, 0x3f23: 0x00c0, 0x3f24: 0x00c0, 0x3f25: 0x00c0, 0x3f26: 0x00c0, 0x3f27: 0x00c0, 0x3f28: 0x00c0, 0x3f29: 0x00c0, 0x3f2a: 0x00c0, 0x3f2b: 0x00c0, 0x3f2c: 0x00c0, 0x3f2d: 0x00c0, 0x3f2e: 0x00c0, 0x3f2f: 0x00c0, 0x3f30: 0x00c0, 0x3f31: 0x00c0, 0x3f32: 0x00c0, 0x3f33: 0x00c0, 0x3f34: 0x00c0, 0x3f35: 0x00c0, - 0x3f36: 0x00c0, 0x3f37: 0x00c0, 0x3f38: 0x00c0, + 0x3f36: 0x00c0, 0x3f37: 0x00c0, 0x3f38: 0x00c0, 0x3f39: 0x00c0, 0x3f3a: 0x00c0, 0x3f3b: 0x00c0, + 0x3f3c: 0x00c0, 0x3f3d: 0x00c0, 0x3f3e: 0x00c0, 0x3f3f: 0x00c0, // Block 0xfd, offset 0x3f40 - 0x3f40: 0x00c0, 0x3f41: 0x00c0, 0x3f42: 0x00c0, 0x3f43: 0x00c0, 0x3f44: 0x00c0, 0x3f45: 0x00c0, - 0x3f46: 0x00c0, 0x3f47: 0x00c0, 0x3f48: 0x00c0, 0x3f4a: 0x00c0, 0x3f4b: 0x00c0, - 0x3f4c: 0x00c0, 0x3f4d: 0x00c0, 0x3f4e: 0x00c0, 0x3f4f: 0x00c0, 0x3f50: 0x00c0, 0x3f51: 0x00c0, - 0x3f52: 0x00c0, 0x3f53: 0x00c0, 0x3f54: 0x00c0, 0x3f55: 0x00c0, 0x3f56: 0x00c0, 0x3f57: 0x00c0, - 0x3f58: 0x00c0, 0x3f59: 0x00c0, 0x3f5a: 0x00c0, 0x3f5b: 0x00c0, 0x3f5c: 0x00c0, 0x3f5d: 0x00c0, - 0x3f5e: 0x00c0, 0x3f5f: 0x00c0, 0x3f60: 0x00c0, 0x3f61: 0x00c0, 0x3f62: 0x00c0, 0x3f63: 0x00c0, - 0x3f64: 0x00c0, 0x3f65: 0x00c0, 0x3f66: 0x00c0, 0x3f67: 0x00c0, 0x3f68: 0x00c0, 0x3f69: 0x00c0, - 0x3f6a: 0x00c0, 0x3f6b: 0x00c0, 0x3f6c: 0x00c0, 0x3f6d: 0x00c0, 0x3f6e: 0x00c0, 0x3f6f: 0x00c0, - 0x3f70: 0x00c3, 0x3f71: 0x00c3, 0x3f72: 0x00c3, 0x3f73: 0x00c3, 0x3f74: 0x00c3, 0x3f75: 0x00c3, - 0x3f76: 0x00c3, 0x3f78: 0x00c3, 0x3f79: 0x00c3, 0x3f7a: 0x00c3, 0x3f7b: 0x00c3, - 0x3f7c: 0x00c3, 0x3f7d: 0x00c3, 0x3f7e: 0x00c0, 0x3f7f: 0x00c6, + 0x3f40: 0x00c0, 0x3f41: 0x00c0, 0x3f42: 0x00c0, 0x3f43: 0x00c0, + 0x3f46: 0x00c0, 0x3f47: 0x00c0, 0x3f48: 0x00c0, 0x3f49: 0x00c0, 0x3f4a: 0x00c3, 0x3f4b: 0x00c3, + 0x3f4c: 0x00c3, 0x3f4d: 0x00c3, 0x3f4e: 0x00c3, 0x3f4f: 0x00c3, 0x3f50: 0x00c3, 0x3f51: 0x00c3, + 0x3f52: 0x00c3, 0x3f53: 0x00c3, 0x3f54: 0x00c3, 0x3f55: 0x00c3, 0x3f56: 0x00c3, 0x3f57: 0x00c0, + 0x3f58: 0x00c3, 0x3f59: 0x00c6, 0x3f5a: 0x0080, 0x3f5b: 0x0080, 0x3f5c: 0x0080, + 0x3f5e: 0x0080, 0x3f5f: 0x0080, 0x3f60: 0x0080, 0x3f61: 0x0080, 0x3f62: 0x0080, // Block 0xfe, offset 0x3f80 - 0x3f80: 0x00c0, 0x3f81: 0x0080, 0x3f82: 0x0080, 0x3f83: 0x0080, 0x3f84: 0x0080, 0x3f85: 0x0080, - 0x3f90: 0x00c0, 0x3f91: 0x00c0, + 0x3f80: 0x00c0, 0x3f81: 0x00c0, 0x3f82: 0x00c0, 0x3f83: 0x00c0, 0x3f84: 0x00c0, 0x3f85: 0x00c0, + 0x3f86: 0x00c0, 0x3f87: 0x00c0, 0x3f88: 0x00c0, 0x3f89: 0x00c0, 0x3f8a: 0x00c0, 0x3f8b: 0x00c0, + 0x3f8c: 0x00c0, 0x3f8d: 0x00c0, 0x3f8e: 0x00c0, 0x3f8f: 0x00c0, 0x3f90: 0x00c0, 0x3f91: 0x00c0, 0x3f92: 0x00c0, 0x3f93: 0x00c0, 0x3f94: 0x00c0, 0x3f95: 0x00c0, 0x3f96: 0x00c0, 0x3f97: 0x00c0, - 0x3f98: 0x00c0, 0x3f99: 0x00c0, 0x3f9a: 0x0080, 0x3f9b: 0x0080, 0x3f9c: 0x0080, 0x3f9d: 0x0080, - 0x3f9e: 0x0080, 0x3f9f: 0x0080, 0x3fa0: 0x0080, 0x3fa1: 0x0080, 0x3fa2: 0x0080, 0x3fa3: 0x0080, - 0x3fa4: 0x0080, 0x3fa5: 0x0080, 0x3fa6: 0x0080, 0x3fa7: 0x0080, 0x3fa8: 0x0080, 0x3fa9: 0x0080, - 0x3faa: 0x0080, 0x3fab: 0x0080, 0x3fac: 0x0080, - 0x3fb0: 0x0080, 0x3fb1: 0x0080, 0x3fb2: 0x00c0, 0x3fb3: 0x00c0, 0x3fb4: 0x00c0, 0x3fb5: 0x00c0, - 0x3fb6: 0x00c0, 0x3fb7: 0x00c0, 0x3fb8: 0x00c0, 0x3fb9: 0x00c0, 0x3fba: 0x00c0, 0x3fbb: 0x00c0, - 0x3fbc: 0x00c0, 0x3fbd: 0x00c0, 0x3fbe: 0x00c0, 0x3fbf: 0x00c0, + 0x3f98: 0x00c0, 0x3f99: 0x00c0, 0x3f9a: 0x00c0, 0x3f9b: 0x00c0, 0x3f9c: 0x00c0, 0x3f9d: 0x00c0, + 0x3f9e: 0x00c0, 0x3f9f: 0x00c0, 0x3fa0: 0x00c0, 0x3fa1: 0x00c0, 0x3fa2: 0x00c0, 0x3fa3: 0x00c0, + 0x3fa4: 0x00c0, 0x3fa5: 0x00c0, 0x3fa6: 0x00c0, 0x3fa7: 0x00c0, 0x3fa8: 0x00c0, 0x3fa9: 0x00c0, + 0x3faa: 0x00c0, 0x3fab: 0x00c0, 0x3fac: 0x00c0, 0x3fad: 0x00c0, 0x3fae: 0x00c0, 0x3faf: 0x00c0, + 0x3fb0: 0x00c0, 0x3fb1: 0x00c0, 0x3fb2: 0x00c0, 0x3fb3: 0x00c0, 0x3fb4: 0x00c0, 0x3fb5: 0x00c0, + 0x3fb6: 0x00c0, 0x3fb7: 0x00c0, 0x3fb8: 0x00c0, // Block 0xff, offset 0x3fc0 0x3fc0: 0x00c0, 0x3fc1: 0x00c0, 0x3fc2: 0x00c0, 0x3fc3: 0x00c0, 0x3fc4: 0x00c0, 0x3fc5: 0x00c0, - 0x3fc6: 0x00c0, 0x3fc7: 0x00c0, 0x3fc8: 0x00c0, 0x3fc9: 0x00c0, 0x3fca: 0x00c0, 0x3fcb: 0x00c0, - 0x3fcc: 0x00c0, 0x3fcd: 0x00c0, 0x3fce: 0x00c0, 0x3fcf: 0x00c0, - 0x3fd2: 0x00c3, 0x3fd3: 0x00c3, 0x3fd4: 0x00c3, 0x3fd5: 0x00c3, 0x3fd6: 0x00c3, 0x3fd7: 0x00c3, - 0x3fd8: 0x00c3, 0x3fd9: 0x00c3, 0x3fda: 0x00c3, 0x3fdb: 0x00c3, 0x3fdc: 0x00c3, 0x3fdd: 0x00c3, - 0x3fde: 0x00c3, 0x3fdf: 0x00c3, 0x3fe0: 0x00c3, 0x3fe1: 0x00c3, 0x3fe2: 0x00c3, 0x3fe3: 0x00c3, - 0x3fe4: 0x00c3, 0x3fe5: 0x00c3, 0x3fe6: 0x00c3, 0x3fe7: 0x00c3, 0x3fe9: 0x00c0, - 0x3fea: 0x00c3, 0x3feb: 0x00c3, 0x3fec: 0x00c3, 0x3fed: 0x00c3, 0x3fee: 0x00c3, 0x3fef: 0x00c3, - 0x3ff0: 0x00c3, 0x3ff1: 0x00c0, 0x3ff2: 0x00c3, 0x3ff3: 0x00c3, 0x3ff4: 0x00c0, 0x3ff5: 0x00c3, - 0x3ff6: 0x00c3, + 0x3fc6: 0x00c0, 0x3fc7: 0x00c0, 0x3fc8: 0x00c0, 0x3fca: 0x00c0, 0x3fcb: 0x00c0, + 0x3fcc: 0x00c0, 0x3fcd: 0x00c0, 0x3fce: 0x00c0, 0x3fcf: 0x00c0, 0x3fd0: 0x00c0, 0x3fd1: 0x00c0, + 0x3fd2: 0x00c0, 0x3fd3: 0x00c0, 0x3fd4: 0x00c0, 0x3fd5: 0x00c0, 0x3fd6: 0x00c0, 0x3fd7: 0x00c0, + 0x3fd8: 0x00c0, 0x3fd9: 0x00c0, 0x3fda: 0x00c0, 0x3fdb: 0x00c0, 0x3fdc: 0x00c0, 0x3fdd: 0x00c0, + 0x3fde: 0x00c0, 0x3fdf: 0x00c0, 0x3fe0: 0x00c0, 0x3fe1: 0x00c0, 0x3fe2: 0x00c0, 0x3fe3: 0x00c0, + 0x3fe4: 0x00c0, 0x3fe5: 0x00c0, 0x3fe6: 0x00c0, 0x3fe7: 0x00c0, 0x3fe8: 0x00c0, 0x3fe9: 0x00c0, + 0x3fea: 0x00c0, 0x3feb: 0x00c0, 0x3fec: 0x00c0, 0x3fed: 0x00c0, 0x3fee: 0x00c0, 0x3fef: 0x00c0, + 0x3ff0: 0x00c3, 0x3ff1: 0x00c3, 0x3ff2: 0x00c3, 0x3ff3: 0x00c3, 0x3ff4: 0x00c3, 0x3ff5: 0x00c3, + 0x3ff6: 0x00c3, 0x3ff8: 0x00c3, 0x3ff9: 0x00c3, 0x3ffa: 0x00c3, 0x3ffb: 0x00c3, + 0x3ffc: 0x00c3, 0x3ffd: 0x00c3, 0x3ffe: 0x00c0, 0x3fff: 0x00c6, // Block 0x100, offset 0x4000 - 0x4000: 0x00c0, 0x4001: 0x00c0, 0x4002: 0x00c0, 0x4003: 0x00c0, 0x4004: 0x00c0, 0x4005: 0x00c0, - 0x4006: 0x00c0, 0x4007: 0x00c0, 0x4008: 0x00c0, 0x4009: 0x00c0, 0x400a: 0x00c0, 0x400b: 0x00c0, - 0x400c: 0x00c0, 0x400d: 0x00c0, 0x400e: 0x00c0, 0x400f: 0x00c0, 0x4010: 0x00c0, 0x4011: 0x00c0, + 0x4000: 0x00c0, 0x4001: 0x0080, 0x4002: 0x0080, 0x4003: 0x0080, 0x4004: 0x0080, 0x4005: 0x0080, + 0x4010: 0x00c0, 0x4011: 0x00c0, 0x4012: 0x00c0, 0x4013: 0x00c0, 0x4014: 0x00c0, 0x4015: 0x00c0, 0x4016: 0x00c0, 0x4017: 0x00c0, - 0x4018: 0x00c0, 0x4019: 0x00c0, + 0x4018: 0x00c0, 0x4019: 0x00c0, 0x401a: 0x0080, 0x401b: 0x0080, 0x401c: 0x0080, 0x401d: 0x0080, + 0x401e: 0x0080, 0x401f: 0x0080, 0x4020: 0x0080, 0x4021: 0x0080, 0x4022: 0x0080, 0x4023: 0x0080, + 0x4024: 0x0080, 0x4025: 0x0080, 0x4026: 0x0080, 0x4027: 0x0080, 0x4028: 0x0080, 0x4029: 0x0080, + 0x402a: 0x0080, 0x402b: 0x0080, 0x402c: 0x0080, + 0x4030: 0x0080, 0x4031: 0x0080, 0x4032: 0x00c0, 0x4033: 0x00c0, 0x4034: 0x00c0, 0x4035: 0x00c0, + 0x4036: 0x00c0, 0x4037: 0x00c0, 0x4038: 0x00c0, 0x4039: 0x00c0, 0x403a: 0x00c0, 0x403b: 0x00c0, + 0x403c: 0x00c0, 0x403d: 0x00c0, 0x403e: 0x00c0, 0x403f: 0x00c0, // Block 0x101, offset 0x4040 - 0x4040: 0x0080, 0x4041: 0x0080, 0x4042: 0x0080, 0x4043: 0x0080, 0x4044: 0x0080, 0x4045: 0x0080, - 0x4046: 0x0080, 0x4047: 0x0080, 0x4048: 0x0080, 0x4049: 0x0080, 0x404a: 0x0080, 0x404b: 0x0080, - 0x404c: 0x0080, 0x404d: 0x0080, 0x404e: 0x0080, 0x404f: 0x0080, 0x4050: 0x0080, 0x4051: 0x0080, - 0x4052: 0x0080, 0x4053: 0x0080, 0x4054: 0x0080, 0x4055: 0x0080, 0x4056: 0x0080, 0x4057: 0x0080, - 0x4058: 0x0080, 0x4059: 0x0080, 0x405a: 0x0080, 0x405b: 0x0080, 0x405c: 0x0080, 0x405d: 0x0080, - 0x405e: 0x0080, 0x405f: 0x0080, 0x4060: 0x0080, 0x4061: 0x0080, 0x4062: 0x0080, 0x4063: 0x0080, - 0x4064: 0x0080, 0x4065: 0x0080, 0x4066: 0x0080, 0x4067: 0x0080, 0x4068: 0x0080, 0x4069: 0x0080, - 0x406a: 0x0080, 0x406b: 0x0080, 0x406c: 0x0080, 0x406d: 0x0080, 0x406e: 0x0080, - 0x4070: 0x0080, 0x4071: 0x0080, 0x4072: 0x0080, 0x4073: 0x0080, 0x4074: 0x0080, + 0x4040: 0x00c0, 0x4041: 0x00c0, 0x4042: 0x00c0, 0x4043: 0x00c0, 0x4044: 0x00c0, 0x4045: 0x00c0, + 0x4046: 0x00c0, 0x4047: 0x00c0, 0x4048: 0x00c0, 0x4049: 0x00c0, 0x404a: 0x00c0, 0x404b: 0x00c0, + 0x404c: 0x00c0, 0x404d: 0x00c0, 0x404e: 0x00c0, 0x404f: 0x00c0, + 0x4052: 0x00c3, 0x4053: 0x00c3, 0x4054: 0x00c3, 0x4055: 0x00c3, 0x4056: 0x00c3, 0x4057: 0x00c3, + 0x4058: 0x00c3, 0x4059: 0x00c3, 0x405a: 0x00c3, 0x405b: 0x00c3, 0x405c: 0x00c3, 0x405d: 0x00c3, + 0x405e: 0x00c3, 0x405f: 0x00c3, 0x4060: 0x00c3, 0x4061: 0x00c3, 0x4062: 0x00c3, 0x4063: 0x00c3, + 0x4064: 0x00c3, 0x4065: 0x00c3, 0x4066: 0x00c3, 0x4067: 0x00c3, 0x4069: 0x00c0, + 0x406a: 0x00c3, 0x406b: 0x00c3, 0x406c: 0x00c3, 0x406d: 0x00c3, 0x406e: 0x00c3, 0x406f: 0x00c3, + 0x4070: 0x00c3, 0x4071: 0x00c0, 0x4072: 0x00c3, 0x4073: 0x00c3, 0x4074: 0x00c0, 0x4075: 0x00c3, + 0x4076: 0x00c3, // Block 0x102, offset 0x4080 - 0x4080: 0x00c0, 0x4081: 0x00c0, 0x4082: 0x00c0, 0x4083: 0x00c0, + 0x4080: 0x00c0, 0x4081: 0x00c0, 0x4082: 0x00c0, 0x4083: 0x00c0, 0x4084: 0x00c0, 0x4085: 0x00c0, + 0x4086: 0x00c0, 0x4088: 0x00c0, 0x4089: 0x00c0, 0x408b: 0x00c0, + 0x408c: 0x00c0, 0x408d: 0x00c0, 0x408e: 0x00c0, 0x408f: 0x00c0, 0x4090: 0x00c0, 0x4091: 0x00c0, + 0x4092: 0x00c0, 0x4093: 0x00c0, 0x4094: 0x00c0, 0x4095: 0x00c0, 0x4096: 0x00c0, 0x4097: 0x00c0, + 0x4098: 0x00c0, 0x4099: 0x00c0, 0x409a: 0x00c0, 0x409b: 0x00c0, 0x409c: 0x00c0, 0x409d: 0x00c0, + 0x409e: 0x00c0, 0x409f: 0x00c0, 0x40a0: 0x00c0, 0x40a1: 0x00c0, 0x40a2: 0x00c0, 0x40a3: 0x00c0, + 0x40a4: 0x00c0, 0x40a5: 0x00c0, 0x40a6: 0x00c0, 0x40a7: 0x00c0, 0x40a8: 0x00c0, 0x40a9: 0x00c0, + 0x40aa: 0x00c0, 0x40ab: 0x00c0, 0x40ac: 0x00c0, 0x40ad: 0x00c0, 0x40ae: 0x00c0, 0x40af: 0x00c0, + 0x40b0: 0x00c0, 0x40b1: 0x00c3, 0x40b2: 0x00c3, 0x40b3: 0x00c3, 0x40b4: 0x00c3, 0x40b5: 0x00c3, + 0x40b6: 0x00c3, 0x40ba: 0x00c3, + 0x40bc: 0x00c3, 0x40bd: 0x00c3, 0x40bf: 0x00c3, // Block 0x103, offset 0x40c0 - 0x40c0: 0x00c0, 0x40c1: 0x00c0, 0x40c2: 0x00c0, 0x40c3: 0x00c0, 0x40c4: 0x00c0, 0x40c5: 0x00c0, - 0x40c6: 0x00c0, 0x40c7: 0x00c0, 0x40c8: 0x00c0, 0x40c9: 0x00c0, 0x40ca: 0x00c0, 0x40cb: 0x00c0, - 0x40cc: 0x00c0, 0x40cd: 0x00c0, 0x40ce: 0x00c0, 0x40cf: 0x00c0, 0x40d0: 0x00c0, 0x40d1: 0x00c0, + 0x40c0: 0x00c3, 0x40c1: 0x00c3, 0x40c2: 0x00c3, 0x40c3: 0x00c3, 0x40c4: 0x00c6, 0x40c5: 0x00c6, + 0x40c6: 0x00c0, 0x40c7: 0x00c3, + 0x40d0: 0x00c0, 0x40d1: 0x00c0, 0x40d2: 0x00c0, 0x40d3: 0x00c0, 0x40d4: 0x00c0, 0x40d5: 0x00c0, 0x40d6: 0x00c0, 0x40d7: 0x00c0, - 0x40d8: 0x00c0, 0x40d9: 0x00c0, 0x40da: 0x00c0, 0x40db: 0x00c0, 0x40dc: 0x00c0, 0x40dd: 0x00c0, - 0x40de: 0x00c0, 0x40df: 0x00c0, 0x40e0: 0x00c0, 0x40e1: 0x00c0, 0x40e2: 0x00c0, 0x40e3: 0x00c0, - 0x40e4: 0x00c0, 0x40e5: 0x00c0, 0x40e6: 0x00c0, 0x40e7: 0x00c0, 0x40e8: 0x00c0, 0x40e9: 0x00c0, - 0x40ea: 0x00c0, 0x40eb: 0x00c0, 0x40ec: 0x00c0, 0x40ed: 0x00c0, 0x40ee: 0x00c0, + 0x40d8: 0x00c0, 0x40d9: 0x00c0, // Block 0x104, offset 0x4100 0x4100: 0x00c0, 0x4101: 0x00c0, 0x4102: 0x00c0, 0x4103: 0x00c0, 0x4104: 0x00c0, 0x4105: 0x00c0, - 0x4106: 0x00c0, + 0x4106: 0x00c0, 0x4107: 0x00c0, 0x4108: 0x00c0, 0x4109: 0x00c0, 0x410a: 0x00c0, 0x410b: 0x00c0, + 0x410c: 0x00c0, 0x410d: 0x00c0, 0x410e: 0x00c0, 0x410f: 0x00c0, 0x4110: 0x00c0, 0x4111: 0x00c0, + 0x4112: 0x00c0, 0x4113: 0x00c0, 0x4114: 0x00c0, 0x4115: 0x00c0, 0x4116: 0x00c0, 0x4117: 0x00c0, + 0x4118: 0x00c0, 0x4119: 0x00c0, // Block 0x105, offset 0x4140 - 0x4140: 0x00c0, 0x4141: 0x00c0, 0x4142: 0x00c0, 0x4143: 0x00c0, 0x4144: 0x00c0, 0x4145: 0x00c0, - 0x4146: 0x00c0, 0x4147: 0x00c0, 0x4148: 0x00c0, 0x4149: 0x00c0, 0x414a: 0x00c0, 0x414b: 0x00c0, - 0x414c: 0x00c0, 0x414d: 0x00c0, 0x414e: 0x00c0, 0x414f: 0x00c0, 0x4150: 0x00c0, 0x4151: 0x00c0, - 0x4152: 0x00c0, 0x4153: 0x00c0, 0x4154: 0x00c0, 0x4155: 0x00c0, 0x4156: 0x00c0, 0x4157: 0x00c0, - 0x4158: 0x00c0, 0x4159: 0x00c0, 0x415a: 0x00c0, 0x415b: 0x00c0, 0x415c: 0x00c0, 0x415d: 0x00c0, - 0x415e: 0x00c0, 0x4160: 0x00c0, 0x4161: 0x00c0, 0x4162: 0x00c0, 0x4163: 0x00c0, - 0x4164: 0x00c0, 0x4165: 0x00c0, 0x4166: 0x00c0, 0x4167: 0x00c0, 0x4168: 0x00c0, 0x4169: 0x00c0, - 0x416e: 0x0080, 0x416f: 0x0080, + 0x4140: 0x0080, 0x4141: 0x0080, 0x4142: 0x0080, 0x4143: 0x0080, 0x4144: 0x0080, 0x4145: 0x0080, + 0x4146: 0x0080, 0x4147: 0x0080, 0x4148: 0x0080, 0x4149: 0x0080, 0x414a: 0x0080, 0x414b: 0x0080, + 0x414c: 0x0080, 0x414d: 0x0080, 0x414e: 0x0080, 0x414f: 0x0080, 0x4150: 0x0080, 0x4151: 0x0080, + 0x4152: 0x0080, 0x4153: 0x0080, 0x4154: 0x0080, 0x4155: 0x0080, 0x4156: 0x0080, 0x4157: 0x0080, + 0x4158: 0x0080, 0x4159: 0x0080, 0x415a: 0x0080, 0x415b: 0x0080, 0x415c: 0x0080, 0x415d: 0x0080, + 0x415e: 0x0080, 0x415f: 0x0080, 0x4160: 0x0080, 0x4161: 0x0080, 0x4162: 0x0080, 0x4163: 0x0080, + 0x4164: 0x0080, 0x4165: 0x0080, 0x4166: 0x0080, 0x4167: 0x0080, 0x4168: 0x0080, 0x4169: 0x0080, + 0x416a: 0x0080, 0x416b: 0x0080, 0x416c: 0x0080, 0x416d: 0x0080, 0x416e: 0x0080, + 0x4170: 0x0080, 0x4171: 0x0080, 0x4172: 0x0080, 0x4173: 0x0080, 0x4174: 0x0080, // Block 0x106, offset 0x4180 - 0x4190: 0x00c0, 0x4191: 0x00c0, - 0x4192: 0x00c0, 0x4193: 0x00c0, 0x4194: 0x00c0, 0x4195: 0x00c0, 0x4196: 0x00c0, 0x4197: 0x00c0, - 0x4198: 0x00c0, 0x4199: 0x00c0, 0x419a: 0x00c0, 0x419b: 0x00c0, 0x419c: 0x00c0, 0x419d: 0x00c0, - 0x419e: 0x00c0, 0x419f: 0x00c0, 0x41a0: 0x00c0, 0x41a1: 0x00c0, 0x41a2: 0x00c0, 0x41a3: 0x00c0, - 0x41a4: 0x00c0, 0x41a5: 0x00c0, 0x41a6: 0x00c0, 0x41a7: 0x00c0, 0x41a8: 0x00c0, 0x41a9: 0x00c0, - 0x41aa: 0x00c0, 0x41ab: 0x00c0, 0x41ac: 0x00c0, 0x41ad: 0x00c0, - 0x41b0: 0x00c3, 0x41b1: 0x00c3, 0x41b2: 0x00c3, 0x41b3: 0x00c3, 0x41b4: 0x00c3, 0x41b5: 0x0080, + 0x4180: 0x00c0, 0x4181: 0x00c0, 0x4182: 0x00c0, 0x4183: 0x00c0, // Block 0x107, offset 0x41c0 0x41c0: 0x00c0, 0x41c1: 0x00c0, 0x41c2: 0x00c0, 0x41c3: 0x00c0, 0x41c4: 0x00c0, 0x41c5: 0x00c0, 0x41c6: 0x00c0, 0x41c7: 0x00c0, 0x41c8: 0x00c0, 0x41c9: 0x00c0, 0x41ca: 0x00c0, 0x41cb: 0x00c0, @@ -3016,146 +3035,140 @@ var derivedPropertiesValues = [20736]uint8{ 0x41d8: 0x00c0, 0x41d9: 0x00c0, 0x41da: 0x00c0, 0x41db: 0x00c0, 0x41dc: 0x00c0, 0x41dd: 0x00c0, 0x41de: 0x00c0, 0x41df: 0x00c0, 0x41e0: 0x00c0, 0x41e1: 0x00c0, 0x41e2: 0x00c0, 0x41e3: 0x00c0, 0x41e4: 0x00c0, 0x41e5: 0x00c0, 0x41e6: 0x00c0, 0x41e7: 0x00c0, 0x41e8: 0x00c0, 0x41e9: 0x00c0, - 0x41ea: 0x00c0, 0x41eb: 0x00c0, 0x41ec: 0x00c0, 0x41ed: 0x00c0, 0x41ee: 0x00c0, 0x41ef: 0x00c0, - 0x41f0: 0x00c3, 0x41f1: 0x00c3, 0x41f2: 0x00c3, 0x41f3: 0x00c3, 0x41f4: 0x00c3, 0x41f5: 0x00c3, - 0x41f6: 0x00c3, 0x41f7: 0x0080, 0x41f8: 0x0080, 0x41f9: 0x0080, 0x41fa: 0x0080, 0x41fb: 0x0080, - 0x41fc: 0x0080, 0x41fd: 0x0080, 0x41fe: 0x0080, 0x41ff: 0x0080, + 0x41ea: 0x00c0, 0x41eb: 0x00c0, 0x41ec: 0x00c0, 0x41ed: 0x00c0, 0x41ee: 0x00c0, // Block 0x108, offset 0x4200 - 0x4200: 0x00c0, 0x4201: 0x00c0, 0x4202: 0x00c0, 0x4203: 0x00c0, 0x4204: 0x0080, 0x4205: 0x0080, - 0x4210: 0x00c0, 0x4211: 0x00c0, - 0x4212: 0x00c0, 0x4213: 0x00c0, 0x4214: 0x00c0, 0x4215: 0x00c0, 0x4216: 0x00c0, 0x4217: 0x00c0, - 0x4218: 0x00c0, 0x4219: 0x00c0, 0x421b: 0x0080, 0x421c: 0x0080, 0x421d: 0x0080, - 0x421e: 0x0080, 0x421f: 0x0080, 0x4220: 0x0080, 0x4221: 0x0080, 0x4223: 0x00c0, - 0x4224: 0x00c0, 0x4225: 0x00c0, 0x4226: 0x00c0, 0x4227: 0x00c0, 0x4228: 0x00c0, 0x4229: 0x00c0, - 0x422a: 0x00c0, 0x422b: 0x00c0, 0x422c: 0x00c0, 0x422d: 0x00c0, 0x422e: 0x00c0, 0x422f: 0x00c0, - 0x4230: 0x00c0, 0x4231: 0x00c0, 0x4232: 0x00c0, 0x4233: 0x00c0, 0x4234: 0x00c0, 0x4235: 0x00c0, - 0x4236: 0x00c0, 0x4237: 0x00c0, - 0x423d: 0x00c0, 0x423e: 0x00c0, 0x423f: 0x00c0, + 0x4200: 0x00c0, 0x4201: 0x00c0, 0x4202: 0x00c0, 0x4203: 0x00c0, 0x4204: 0x00c0, 0x4205: 0x00c0, + 0x4206: 0x00c0, // Block 0x109, offset 0x4240 0x4240: 0x00c0, 0x4241: 0x00c0, 0x4242: 0x00c0, 0x4243: 0x00c0, 0x4244: 0x00c0, 0x4245: 0x00c0, 0x4246: 0x00c0, 0x4247: 0x00c0, 0x4248: 0x00c0, 0x4249: 0x00c0, 0x424a: 0x00c0, 0x424b: 0x00c0, - 0x424c: 0x00c0, 0x424d: 0x00c0, 0x424e: 0x00c0, 0x424f: 0x00c0, + 0x424c: 0x00c0, 0x424d: 0x00c0, 0x424e: 0x00c0, 0x424f: 0x00c0, 0x4250: 0x00c0, 0x4251: 0x00c0, + 0x4252: 0x00c0, 0x4253: 0x00c0, 0x4254: 0x00c0, 0x4255: 0x00c0, 0x4256: 0x00c0, 0x4257: 0x00c0, + 0x4258: 0x00c0, 0x4259: 0x00c0, 0x425a: 0x00c0, 0x425b: 0x00c0, 0x425c: 0x00c0, 0x425d: 0x00c0, + 0x425e: 0x00c0, 0x4260: 0x00c0, 0x4261: 0x00c0, 0x4262: 0x00c0, 0x4263: 0x00c0, + 0x4264: 0x00c0, 0x4265: 0x00c0, 0x4266: 0x00c0, 0x4267: 0x00c0, 0x4268: 0x00c0, 0x4269: 0x00c0, + 0x426e: 0x0080, 0x426f: 0x0080, // Block 0x10a, offset 0x4280 - 0x4280: 0x00c0, 0x4281: 0x00c0, 0x4282: 0x00c0, 0x4283: 0x00c0, 0x4284: 0x00c0, 0x4290: 0x00c0, 0x4291: 0x00c0, 0x4292: 0x00c0, 0x4293: 0x00c0, 0x4294: 0x00c0, 0x4295: 0x00c0, 0x4296: 0x00c0, 0x4297: 0x00c0, 0x4298: 0x00c0, 0x4299: 0x00c0, 0x429a: 0x00c0, 0x429b: 0x00c0, 0x429c: 0x00c0, 0x429d: 0x00c0, 0x429e: 0x00c0, 0x429f: 0x00c0, 0x42a0: 0x00c0, 0x42a1: 0x00c0, 0x42a2: 0x00c0, 0x42a3: 0x00c0, 0x42a4: 0x00c0, 0x42a5: 0x00c0, 0x42a6: 0x00c0, 0x42a7: 0x00c0, 0x42a8: 0x00c0, 0x42a9: 0x00c0, - 0x42aa: 0x00c0, 0x42ab: 0x00c0, 0x42ac: 0x00c0, 0x42ad: 0x00c0, 0x42ae: 0x00c0, 0x42af: 0x00c0, - 0x42b0: 0x00c0, 0x42b1: 0x00c0, 0x42b2: 0x00c0, 0x42b3: 0x00c0, 0x42b4: 0x00c0, 0x42b5: 0x00c0, - 0x42b6: 0x00c0, 0x42b7: 0x00c0, 0x42b8: 0x00c0, 0x42b9: 0x00c0, 0x42ba: 0x00c0, 0x42bb: 0x00c0, - 0x42bc: 0x00c0, 0x42bd: 0x00c0, 0x42be: 0x00c0, + 0x42aa: 0x00c0, 0x42ab: 0x00c0, 0x42ac: 0x00c0, 0x42ad: 0x00c0, + 0x42b0: 0x00c3, 0x42b1: 0x00c3, 0x42b2: 0x00c3, 0x42b3: 0x00c3, 0x42b4: 0x00c3, 0x42b5: 0x0080, // Block 0x10b, offset 0x42c0 - 0x42cf: 0x00c3, 0x42d0: 0x00c3, 0x42d1: 0x00c3, - 0x42d2: 0x00c3, 0x42d3: 0x00c0, 0x42d4: 0x00c0, 0x42d5: 0x00c0, 0x42d6: 0x00c0, 0x42d7: 0x00c0, + 0x42c0: 0x00c0, 0x42c1: 0x00c0, 0x42c2: 0x00c0, 0x42c3: 0x00c0, 0x42c4: 0x00c0, 0x42c5: 0x00c0, + 0x42c6: 0x00c0, 0x42c7: 0x00c0, 0x42c8: 0x00c0, 0x42c9: 0x00c0, 0x42ca: 0x00c0, 0x42cb: 0x00c0, + 0x42cc: 0x00c0, 0x42cd: 0x00c0, 0x42ce: 0x00c0, 0x42cf: 0x00c0, 0x42d0: 0x00c0, 0x42d1: 0x00c0, + 0x42d2: 0x00c0, 0x42d3: 0x00c0, 0x42d4: 0x00c0, 0x42d5: 0x00c0, 0x42d6: 0x00c0, 0x42d7: 0x00c0, 0x42d8: 0x00c0, 0x42d9: 0x00c0, 0x42da: 0x00c0, 0x42db: 0x00c0, 0x42dc: 0x00c0, 0x42dd: 0x00c0, - 0x42de: 0x00c0, 0x42df: 0x00c0, + 0x42de: 0x00c0, 0x42df: 0x00c0, 0x42e0: 0x00c0, 0x42e1: 0x00c0, 0x42e2: 0x00c0, 0x42e3: 0x00c0, + 0x42e4: 0x00c0, 0x42e5: 0x00c0, 0x42e6: 0x00c0, 0x42e7: 0x00c0, 0x42e8: 0x00c0, 0x42e9: 0x00c0, + 0x42ea: 0x00c0, 0x42eb: 0x00c0, 0x42ec: 0x00c0, 0x42ed: 0x00c0, 0x42ee: 0x00c0, 0x42ef: 0x00c0, + 0x42f0: 0x00c3, 0x42f1: 0x00c3, 0x42f2: 0x00c3, 0x42f3: 0x00c3, 0x42f4: 0x00c3, 0x42f5: 0x00c3, + 0x42f6: 0x00c3, 0x42f7: 0x0080, 0x42f8: 0x0080, 0x42f9: 0x0080, 0x42fa: 0x0080, 0x42fb: 0x0080, + 0x42fc: 0x0080, 0x42fd: 0x0080, 0x42fe: 0x0080, 0x42ff: 0x0080, // Block 0x10c, offset 0x4300 - 0x4320: 0x00c0, + 0x4300: 0x00c0, 0x4301: 0x00c0, 0x4302: 0x00c0, 0x4303: 0x00c0, 0x4304: 0x0080, 0x4305: 0x0080, + 0x4310: 0x00c0, 0x4311: 0x00c0, + 0x4312: 0x00c0, 0x4313: 0x00c0, 0x4314: 0x00c0, 0x4315: 0x00c0, 0x4316: 0x00c0, 0x4317: 0x00c0, + 0x4318: 0x00c0, 0x4319: 0x00c0, 0x431b: 0x0080, 0x431c: 0x0080, 0x431d: 0x0080, + 0x431e: 0x0080, 0x431f: 0x0080, 0x4320: 0x0080, 0x4321: 0x0080, 0x4323: 0x00c0, + 0x4324: 0x00c0, 0x4325: 0x00c0, 0x4326: 0x00c0, 0x4327: 0x00c0, 0x4328: 0x00c0, 0x4329: 0x00c0, + 0x432a: 0x00c0, 0x432b: 0x00c0, 0x432c: 0x00c0, 0x432d: 0x00c0, 0x432e: 0x00c0, 0x432f: 0x00c0, + 0x4330: 0x00c0, 0x4331: 0x00c0, 0x4332: 0x00c0, 0x4333: 0x00c0, 0x4334: 0x00c0, 0x4335: 0x00c0, + 0x4336: 0x00c0, 0x4337: 0x00c0, + 0x433d: 0x00c0, 0x433e: 0x00c0, 0x433f: 0x00c0, // Block 0x10d, offset 0x4340 0x4340: 0x00c0, 0x4341: 0x00c0, 0x4342: 0x00c0, 0x4343: 0x00c0, 0x4344: 0x00c0, 0x4345: 0x00c0, 0x4346: 0x00c0, 0x4347: 0x00c0, 0x4348: 0x00c0, 0x4349: 0x00c0, 0x434a: 0x00c0, 0x434b: 0x00c0, - 0x434c: 0x00c0, 0x434d: 0x00c0, 0x434e: 0x00c0, 0x434f: 0x00c0, 0x4350: 0x00c0, 0x4351: 0x00c0, - 0x4352: 0x00c0, 0x4353: 0x00c0, 0x4354: 0x00c0, 0x4355: 0x00c0, 0x4356: 0x00c0, 0x4357: 0x00c0, - 0x4358: 0x00c0, 0x4359: 0x00c0, 0x435a: 0x00c0, 0x435b: 0x00c0, 0x435c: 0x00c0, 0x435d: 0x00c0, - 0x435e: 0x00c0, 0x435f: 0x00c0, 0x4360: 0x00c0, 0x4361: 0x00c0, 0x4362: 0x00c0, 0x4363: 0x00c0, - 0x4364: 0x00c0, 0x4365: 0x00c0, 0x4366: 0x00c0, 0x4367: 0x00c0, 0x4368: 0x00c0, 0x4369: 0x00c0, - 0x436a: 0x00c0, 0x436b: 0x00c0, 0x436c: 0x00c0, + 0x434c: 0x00c0, 0x434d: 0x00c0, 0x434e: 0x00c0, 0x434f: 0x00c0, // Block 0x10e, offset 0x4380 - 0x4380: 0x00cc, 0x4381: 0x00cc, + 0x4380: 0x00c0, 0x4381: 0x00c0, 0x4382: 0x00c0, 0x4383: 0x00c0, 0x4384: 0x00c0, + 0x4390: 0x00c0, 0x4391: 0x00c0, + 0x4392: 0x00c0, 0x4393: 0x00c0, 0x4394: 0x00c0, 0x4395: 0x00c0, 0x4396: 0x00c0, 0x4397: 0x00c0, + 0x4398: 0x00c0, 0x4399: 0x00c0, 0x439a: 0x00c0, 0x439b: 0x00c0, 0x439c: 0x00c0, 0x439d: 0x00c0, + 0x439e: 0x00c0, 0x439f: 0x00c0, 0x43a0: 0x00c0, 0x43a1: 0x00c0, 0x43a2: 0x00c0, 0x43a3: 0x00c0, + 0x43a4: 0x00c0, 0x43a5: 0x00c0, 0x43a6: 0x00c0, 0x43a7: 0x00c0, 0x43a8: 0x00c0, 0x43a9: 0x00c0, + 0x43aa: 0x00c0, 0x43ab: 0x00c0, 0x43ac: 0x00c0, 0x43ad: 0x00c0, 0x43ae: 0x00c0, 0x43af: 0x00c0, + 0x43b0: 0x00c0, 0x43b1: 0x00c0, 0x43b2: 0x00c0, 0x43b3: 0x00c0, 0x43b4: 0x00c0, 0x43b5: 0x00c0, + 0x43b6: 0x00c0, 0x43b7: 0x00c0, 0x43b8: 0x00c0, 0x43b9: 0x00c0, 0x43ba: 0x00c0, 0x43bb: 0x00c0, + 0x43bc: 0x00c0, 0x43bd: 0x00c0, 0x43be: 0x00c0, // Block 0x10f, offset 0x43c0 - 0x43c0: 0x00c0, 0x43c1: 0x00c0, 0x43c2: 0x00c0, 0x43c3: 0x00c0, 0x43c4: 0x00c0, 0x43c5: 0x00c0, - 0x43c6: 0x00c0, 0x43c7: 0x00c0, 0x43c8: 0x00c0, 0x43c9: 0x00c0, 0x43ca: 0x00c0, 0x43cb: 0x00c0, - 0x43cc: 0x00c0, 0x43cd: 0x00c0, 0x43ce: 0x00c0, 0x43cf: 0x00c0, 0x43d0: 0x00c0, 0x43d1: 0x00c0, - 0x43d2: 0x00c0, 0x43d3: 0x00c0, 0x43d4: 0x00c0, 0x43d5: 0x00c0, 0x43d6: 0x00c0, 0x43d7: 0x00c0, + 0x43cf: 0x00c3, 0x43d0: 0x00c3, 0x43d1: 0x00c3, + 0x43d2: 0x00c3, 0x43d3: 0x00c0, 0x43d4: 0x00c0, 0x43d5: 0x00c0, 0x43d6: 0x00c0, 0x43d7: 0x00c0, 0x43d8: 0x00c0, 0x43d9: 0x00c0, 0x43da: 0x00c0, 0x43db: 0x00c0, 0x43dc: 0x00c0, 0x43dd: 0x00c0, - 0x43de: 0x00c0, 0x43df: 0x00c0, 0x43e0: 0x00c0, 0x43e1: 0x00c0, 0x43e2: 0x00c0, 0x43e3: 0x00c0, - 0x43e4: 0x00c0, 0x43e5: 0x00c0, 0x43e6: 0x00c0, 0x43e7: 0x00c0, 0x43e8: 0x00c0, 0x43e9: 0x00c0, - 0x43ea: 0x00c0, - 0x43f0: 0x00c0, 0x43f1: 0x00c0, 0x43f2: 0x00c0, 0x43f3: 0x00c0, 0x43f4: 0x00c0, 0x43f5: 0x00c0, - 0x43f6: 0x00c0, 0x43f7: 0x00c0, 0x43f8: 0x00c0, 0x43f9: 0x00c0, 0x43fa: 0x00c0, 0x43fb: 0x00c0, - 0x43fc: 0x00c0, + 0x43de: 0x00c0, 0x43df: 0x00c0, // Block 0x110, offset 0x4400 - 0x4400: 0x00c0, 0x4401: 0x00c0, 0x4402: 0x00c0, 0x4403: 0x00c0, 0x4404: 0x00c0, 0x4405: 0x00c0, - 0x4406: 0x00c0, 0x4407: 0x00c0, 0x4408: 0x00c0, - 0x4410: 0x00c0, 0x4411: 0x00c0, - 0x4412: 0x00c0, 0x4413: 0x00c0, 0x4414: 0x00c0, 0x4415: 0x00c0, 0x4416: 0x00c0, 0x4417: 0x00c0, - 0x4418: 0x00c0, 0x4419: 0x00c0, 0x441c: 0x0080, 0x441d: 0x00c3, - 0x441e: 0x00c3, 0x441f: 0x0080, 0x4420: 0x0040, 0x4421: 0x0040, 0x4422: 0x0040, 0x4423: 0x0040, + 0x4420: 0x00c0, 0x4421: 0x00c0, // Block 0x111, offset 0x4440 - 0x4440: 0x0080, 0x4441: 0x0080, 0x4442: 0x0080, 0x4443: 0x0080, 0x4444: 0x0080, 0x4445: 0x0080, - 0x4446: 0x0080, 0x4447: 0x0080, 0x4448: 0x0080, 0x4449: 0x0080, 0x444a: 0x0080, 0x444b: 0x0080, - 0x444c: 0x0080, 0x444d: 0x0080, 0x444e: 0x0080, 0x444f: 0x0080, 0x4450: 0x0080, 0x4451: 0x0080, - 0x4452: 0x0080, 0x4453: 0x0080, 0x4454: 0x0080, 0x4455: 0x0080, 0x4456: 0x0080, 0x4457: 0x0080, - 0x4458: 0x0080, 0x4459: 0x0080, 0x445a: 0x0080, 0x445b: 0x0080, 0x445c: 0x0080, 0x445d: 0x0080, - 0x445e: 0x0080, 0x445f: 0x0080, 0x4460: 0x0080, 0x4461: 0x0080, 0x4462: 0x0080, 0x4463: 0x0080, - 0x4464: 0x0080, 0x4465: 0x0080, 0x4466: 0x0080, 0x4467: 0x0080, 0x4468: 0x0080, 0x4469: 0x0080, - 0x446a: 0x0080, 0x446b: 0x0080, 0x446c: 0x0080, 0x446d: 0x0080, 0x446e: 0x0080, 0x446f: 0x0080, - 0x4470: 0x0080, 0x4471: 0x0080, 0x4472: 0x0080, 0x4473: 0x0080, 0x4474: 0x0080, 0x4475: 0x0080, + 0x4440: 0x00c0, 0x4441: 0x00c0, 0x4442: 0x00c0, 0x4443: 0x00c0, 0x4444: 0x00c0, 0x4445: 0x00c0, + 0x4446: 0x00c0, 0x4447: 0x00c0, 0x4448: 0x00c0, 0x4449: 0x00c0, 0x444a: 0x00c0, 0x444b: 0x00c0, + 0x444c: 0x00c0, 0x444d: 0x00c0, 0x444e: 0x00c0, 0x444f: 0x00c0, 0x4450: 0x00c0, 0x4451: 0x00c0, + 0x4452: 0x00c0, 0x4453: 0x00c0, 0x4454: 0x00c0, 0x4455: 0x00c0, 0x4456: 0x00c0, 0x4457: 0x00c0, + 0x4458: 0x00c0, 0x4459: 0x00c0, 0x445a: 0x00c0, 0x445b: 0x00c0, 0x445c: 0x00c0, 0x445d: 0x00c0, + 0x445e: 0x00c0, 0x445f: 0x00c0, 0x4460: 0x00c0, 0x4461: 0x00c0, 0x4462: 0x00c0, 0x4463: 0x00c0, + 0x4464: 0x00c0, 0x4465: 0x00c0, 0x4466: 0x00c0, 0x4467: 0x00c0, 0x4468: 0x00c0, 0x4469: 0x00c0, + 0x446a: 0x00c0, 0x446b: 0x00c0, 0x446c: 0x00c0, // Block 0x112, offset 0x4480 - 0x4480: 0x0080, 0x4481: 0x0080, 0x4482: 0x0080, 0x4483: 0x0080, 0x4484: 0x0080, 0x4485: 0x0080, - 0x4486: 0x0080, 0x4487: 0x0080, 0x4488: 0x0080, 0x4489: 0x0080, 0x448a: 0x0080, 0x448b: 0x0080, - 0x448c: 0x0080, 0x448d: 0x0080, 0x448e: 0x0080, 0x448f: 0x0080, 0x4490: 0x0080, 0x4491: 0x0080, - 0x4492: 0x0080, 0x4493: 0x0080, 0x4494: 0x0080, 0x4495: 0x0080, 0x4496: 0x0080, 0x4497: 0x0080, - 0x4498: 0x0080, 0x4499: 0x0080, 0x449a: 0x0080, 0x449b: 0x0080, 0x449c: 0x0080, 0x449d: 0x0080, - 0x449e: 0x0080, 0x449f: 0x0080, 0x44a0: 0x0080, 0x44a1: 0x0080, 0x44a2: 0x0080, 0x44a3: 0x0080, - 0x44a4: 0x0080, 0x44a5: 0x0080, 0x44a6: 0x0080, 0x44a9: 0x0080, - 0x44aa: 0x0080, 0x44ab: 0x0080, 0x44ac: 0x0080, 0x44ad: 0x0080, 0x44ae: 0x0080, 0x44af: 0x0080, - 0x44b0: 0x0080, 0x44b1: 0x0080, 0x44b2: 0x0080, 0x44b3: 0x0080, 0x44b4: 0x0080, 0x44b5: 0x0080, - 0x44b6: 0x0080, 0x44b7: 0x0080, 0x44b8: 0x0080, 0x44b9: 0x0080, 0x44ba: 0x0080, 0x44bb: 0x0080, - 0x44bc: 0x0080, 0x44bd: 0x0080, 0x44be: 0x0080, 0x44bf: 0x0080, + 0x4480: 0x00cc, 0x4481: 0x00cc, 0x4482: 0x00cc, 0x4483: 0x00cc, 0x4484: 0x00cc, 0x4485: 0x00cc, + 0x4486: 0x00cc, 0x4487: 0x00cc, 0x4488: 0x00cc, 0x4489: 0x00cc, 0x448a: 0x00cc, 0x448b: 0x00cc, + 0x448c: 0x00cc, 0x448d: 0x00cc, 0x448e: 0x00cc, 0x448f: 0x00cc, 0x4490: 0x00cc, 0x4491: 0x00cc, + 0x4492: 0x00cc, 0x4493: 0x00cc, 0x4494: 0x00cc, 0x4495: 0x00cc, 0x4496: 0x00cc, 0x4497: 0x00cc, + 0x4498: 0x00cc, 0x4499: 0x00cc, 0x449a: 0x00cc, 0x449b: 0x00cc, 0x449c: 0x00cc, 0x449d: 0x00cc, + 0x449e: 0x00cc, // Block 0x113, offset 0x44c0 - 0x44c0: 0x0080, 0x44c1: 0x0080, 0x44c2: 0x0080, 0x44c3: 0x0080, 0x44c4: 0x0080, 0x44c5: 0x0080, - 0x44c6: 0x0080, 0x44c7: 0x0080, 0x44c8: 0x0080, 0x44c9: 0x0080, 0x44ca: 0x0080, 0x44cb: 0x0080, - 0x44cc: 0x0080, 0x44cd: 0x0080, 0x44ce: 0x0080, 0x44cf: 0x0080, 0x44d0: 0x0080, 0x44d1: 0x0080, - 0x44d2: 0x0080, 0x44d3: 0x0080, 0x44d4: 0x0080, 0x44d5: 0x0080, 0x44d6: 0x0080, 0x44d7: 0x0080, - 0x44d8: 0x0080, 0x44d9: 0x0080, 0x44da: 0x0080, 0x44db: 0x0080, 0x44dc: 0x0080, 0x44dd: 0x0080, - 0x44de: 0x0080, 0x44df: 0x0080, 0x44e0: 0x0080, 0x44e1: 0x0080, 0x44e2: 0x0080, 0x44e3: 0x0080, - 0x44e4: 0x0080, 0x44e5: 0x00c0, 0x44e6: 0x00c0, 0x44e7: 0x00c3, 0x44e8: 0x00c3, 0x44e9: 0x00c3, - 0x44ea: 0x0080, 0x44eb: 0x0080, 0x44ec: 0x0080, 0x44ed: 0x00c0, 0x44ee: 0x00c0, 0x44ef: 0x00c0, - 0x44f0: 0x00c0, 0x44f1: 0x00c0, 0x44f2: 0x00c0, 0x44f3: 0x0040, 0x44f4: 0x0040, 0x44f5: 0x0040, - 0x44f6: 0x0040, 0x44f7: 0x0040, 0x44f8: 0x0040, 0x44f9: 0x0040, 0x44fa: 0x0040, 0x44fb: 0x00c3, - 0x44fc: 0x00c3, 0x44fd: 0x00c3, 0x44fe: 0x00c3, 0x44ff: 0x00c3, + 0x44f0: 0x00c0, 0x44f1: 0x00c0, 0x44f2: 0x00c0, 0x44f3: 0x00c0, 0x44f4: 0x00c0, 0x44f5: 0x00c0, + 0x44f6: 0x00c0, 0x44f7: 0x00c0, 0x44f8: 0x00c0, 0x44f9: 0x00c0, 0x44fa: 0x00c0, 0x44fb: 0x00c0, + 0x44fc: 0x00c0, 0x44fd: 0x00c0, 0x44fe: 0x00c0, 0x44ff: 0x00c0, // Block 0x114, offset 0x4500 - 0x4500: 0x00c3, 0x4501: 0x00c3, 0x4502: 0x00c3, 0x4503: 0x0080, 0x4504: 0x0080, 0x4505: 0x00c3, - 0x4506: 0x00c3, 0x4507: 0x00c3, 0x4508: 0x00c3, 0x4509: 0x00c3, 0x450a: 0x00c3, 0x450b: 0x00c3, - 0x450c: 0x0080, 0x450d: 0x0080, 0x450e: 0x0080, 0x450f: 0x0080, 0x4510: 0x0080, 0x4511: 0x0080, - 0x4512: 0x0080, 0x4513: 0x0080, 0x4514: 0x0080, 0x4515: 0x0080, 0x4516: 0x0080, 0x4517: 0x0080, - 0x4518: 0x0080, 0x4519: 0x0080, 0x451a: 0x0080, 0x451b: 0x0080, 0x451c: 0x0080, 0x451d: 0x0080, - 0x451e: 0x0080, 0x451f: 0x0080, 0x4520: 0x0080, 0x4521: 0x0080, 0x4522: 0x0080, 0x4523: 0x0080, - 0x4524: 0x0080, 0x4525: 0x0080, 0x4526: 0x0080, 0x4527: 0x0080, 0x4528: 0x0080, 0x4529: 0x0080, - 0x452a: 0x00c3, 0x452b: 0x00c3, 0x452c: 0x00c3, 0x452d: 0x00c3, 0x452e: 0x0080, 0x452f: 0x0080, - 0x4530: 0x0080, 0x4531: 0x0080, 0x4532: 0x0080, 0x4533: 0x0080, 0x4534: 0x0080, 0x4535: 0x0080, - 0x4536: 0x0080, 0x4537: 0x0080, 0x4538: 0x0080, 0x4539: 0x0080, 0x453a: 0x0080, 0x453b: 0x0080, - 0x453c: 0x0080, 0x453d: 0x0080, 0x453e: 0x0080, 0x453f: 0x0080, + 0x4500: 0x00c0, 0x4501: 0x00c0, 0x4502: 0x00c0, 0x4503: 0x00c0, 0x4504: 0x00c0, 0x4505: 0x00c0, + 0x4506: 0x00c0, 0x4507: 0x00c0, 0x4508: 0x00c0, 0x4509: 0x00c0, 0x450a: 0x00c0, 0x450b: 0x00c0, + 0x450c: 0x00c0, 0x450d: 0x00c0, 0x450e: 0x00c0, 0x450f: 0x00c0, 0x4510: 0x00c0, 0x4511: 0x00c0, + 0x4512: 0x00c0, 0x4513: 0x00c0, 0x4514: 0x00c0, 0x4515: 0x00c0, 0x4516: 0x00c0, 0x4517: 0x00c0, + 0x4518: 0x00c0, 0x4519: 0x00c0, 0x451a: 0x00c0, 0x451b: 0x00c0, 0x451c: 0x00c0, 0x451d: 0x00c0, + 0x451e: 0x00c0, 0x451f: 0x00c0, 0x4520: 0x00c0, 0x4521: 0x00c0, 0x4522: 0x00c0, 0x4523: 0x00c0, + 0x4524: 0x00c0, 0x4525: 0x00c0, 0x4526: 0x00c0, 0x4527: 0x00c0, 0x4528: 0x00c0, 0x4529: 0x00c0, + 0x452a: 0x00c0, 0x452b: 0x00c0, 0x452c: 0x00c0, 0x452d: 0x00c0, 0x452e: 0x00c0, 0x452f: 0x00c0, + 0x4530: 0x00c0, 0x4531: 0x00c0, 0x4532: 0x00c0, 0x4533: 0x00c0, 0x4534: 0x00c0, 0x4535: 0x00c0, + 0x4536: 0x00c0, 0x4537: 0x00c0, 0x4538: 0x00c0, 0x4539: 0x00c0, 0x453a: 0x00c0, 0x453b: 0x00c0, // Block 0x115, offset 0x4540 - 0x4540: 0x0080, 0x4541: 0x0080, 0x4542: 0x0080, 0x4543: 0x0080, 0x4544: 0x0080, 0x4545: 0x0080, - 0x4546: 0x0080, 0x4547: 0x0080, 0x4548: 0x0080, 0x4549: 0x0080, 0x454a: 0x0080, 0x454b: 0x0080, - 0x454c: 0x0080, 0x454d: 0x0080, 0x454e: 0x0080, 0x454f: 0x0080, 0x4550: 0x0080, 0x4551: 0x0080, - 0x4552: 0x0080, 0x4553: 0x0080, 0x4554: 0x0080, 0x4555: 0x0080, 0x4556: 0x0080, 0x4557: 0x0080, - 0x4558: 0x0080, 0x4559: 0x0080, 0x455a: 0x0080, 0x455b: 0x0080, 0x455c: 0x0080, 0x455d: 0x0080, - 0x455e: 0x0080, 0x455f: 0x0080, 0x4560: 0x0080, 0x4561: 0x0080, 0x4562: 0x0080, 0x4563: 0x0080, - 0x4564: 0x0080, 0x4565: 0x0080, 0x4566: 0x0080, 0x4567: 0x0080, 0x4568: 0x0080, + 0x4540: 0x00c0, 0x4541: 0x00c0, 0x4542: 0x00c0, 0x4543: 0x00c0, 0x4544: 0x00c0, 0x4545: 0x00c0, + 0x4546: 0x00c0, 0x4547: 0x00c0, 0x4548: 0x00c0, 0x4549: 0x00c0, 0x454a: 0x00c0, 0x454b: 0x00c0, + 0x454c: 0x00c0, 0x454d: 0x00c0, 0x454e: 0x00c0, 0x454f: 0x00c0, 0x4550: 0x00c0, 0x4551: 0x00c0, + 0x4552: 0x00c0, 0x4553: 0x00c0, 0x4554: 0x00c0, 0x4555: 0x00c0, 0x4556: 0x00c0, 0x4557: 0x00c0, + 0x4558: 0x00c0, 0x4559: 0x00c0, 0x455a: 0x00c0, 0x455b: 0x00c0, 0x455c: 0x00c0, 0x455d: 0x00c0, + 0x455e: 0x00c0, 0x455f: 0x00c0, 0x4560: 0x00c0, 0x4561: 0x00c0, 0x4562: 0x00c0, 0x4563: 0x00c0, + 0x4564: 0x00c0, 0x4565: 0x00c0, 0x4566: 0x00c0, 0x4567: 0x00c0, 0x4568: 0x00c0, 0x4569: 0x00c0, + 0x456a: 0x00c0, + 0x4570: 0x00c0, 0x4571: 0x00c0, 0x4572: 0x00c0, 0x4573: 0x00c0, 0x4574: 0x00c0, 0x4575: 0x00c0, + 0x4576: 0x00c0, 0x4577: 0x00c0, 0x4578: 0x00c0, 0x4579: 0x00c0, 0x457a: 0x00c0, 0x457b: 0x00c0, + 0x457c: 0x00c0, // Block 0x116, offset 0x4580 - 0x4580: 0x0088, 0x4581: 0x0088, 0x4582: 0x00c9, 0x4583: 0x00c9, 0x4584: 0x00c9, 0x4585: 0x0088, + 0x4580: 0x00c0, 0x4581: 0x00c0, 0x4582: 0x00c0, 0x4583: 0x00c0, 0x4584: 0x00c0, 0x4585: 0x00c0, + 0x4586: 0x00c0, 0x4587: 0x00c0, 0x4588: 0x00c0, + 0x4590: 0x00c0, 0x4591: 0x00c0, + 0x4592: 0x00c0, 0x4593: 0x00c0, 0x4594: 0x00c0, 0x4595: 0x00c0, 0x4596: 0x00c0, 0x4597: 0x00c0, + 0x4598: 0x00c0, 0x4599: 0x00c0, 0x459c: 0x0080, 0x459d: 0x00c3, + 0x459e: 0x00c3, 0x459f: 0x0080, 0x45a0: 0x0040, 0x45a1: 0x0040, 0x45a2: 0x0040, 0x45a3: 0x0040, // Block 0x117, offset 0x45c0 0x45c0: 0x0080, 0x45c1: 0x0080, 0x45c2: 0x0080, 0x45c3: 0x0080, 0x45c4: 0x0080, 0x45c5: 0x0080, 0x45c6: 0x0080, 0x45c7: 0x0080, 0x45c8: 0x0080, 0x45c9: 0x0080, 0x45ca: 0x0080, 0x45cb: 0x0080, 0x45cc: 0x0080, 0x45cd: 0x0080, 0x45ce: 0x0080, 0x45cf: 0x0080, 0x45d0: 0x0080, 0x45d1: 0x0080, - 0x45d2: 0x0080, 0x45d3: 0x0080, 0x45d4: 0x0080, 0x45d5: 0x0080, 0x45d6: 0x0080, - 0x45e0: 0x0080, 0x45e1: 0x0080, 0x45e2: 0x0080, 0x45e3: 0x0080, + 0x45d2: 0x0080, 0x45d3: 0x0080, 0x45d4: 0x0080, 0x45d5: 0x0080, 0x45d6: 0x0080, 0x45d7: 0x0080, + 0x45d8: 0x0080, 0x45d9: 0x0080, 0x45da: 0x0080, 0x45db: 0x0080, 0x45dc: 0x0080, 0x45dd: 0x0080, + 0x45de: 0x0080, 0x45df: 0x0080, 0x45e0: 0x0080, 0x45e1: 0x0080, 0x45e2: 0x0080, 0x45e3: 0x0080, 0x45e4: 0x0080, 0x45e5: 0x0080, 0x45e6: 0x0080, 0x45e7: 0x0080, 0x45e8: 0x0080, 0x45e9: 0x0080, 0x45ea: 0x0080, 0x45eb: 0x0080, 0x45ec: 0x0080, 0x45ed: 0x0080, 0x45ee: 0x0080, 0x45ef: 0x0080, - 0x45f0: 0x0080, 0x45f1: 0x0080, + 0x45f0: 0x0080, 0x45f1: 0x0080, 0x45f2: 0x0080, 0x45f3: 0x0080, 0x45f4: 0x0080, 0x45f5: 0x0080, // Block 0x118, offset 0x4600 0x4600: 0x0080, 0x4601: 0x0080, 0x4602: 0x0080, 0x4603: 0x0080, 0x4604: 0x0080, 0x4605: 0x0080, 0x4606: 0x0080, 0x4607: 0x0080, 0x4608: 0x0080, 0x4609: 0x0080, 0x460a: 0x0080, 0x460b: 0x0080, 0x460c: 0x0080, 0x460d: 0x0080, 0x460e: 0x0080, 0x460f: 0x0080, 0x4610: 0x0080, 0x4611: 0x0080, - 0x4612: 0x0080, 0x4613: 0x0080, 0x4614: 0x0080, 0x4616: 0x0080, 0x4617: 0x0080, + 0x4612: 0x0080, 0x4613: 0x0080, 0x4614: 0x0080, 0x4615: 0x0080, 0x4616: 0x0080, 0x4617: 0x0080, 0x4618: 0x0080, 0x4619: 0x0080, 0x461a: 0x0080, 0x461b: 0x0080, 0x461c: 0x0080, 0x461d: 0x0080, 0x461e: 0x0080, 0x461f: 0x0080, 0x4620: 0x0080, 0x4621: 0x0080, 0x4622: 0x0080, 0x4623: 0x0080, - 0x4624: 0x0080, 0x4625: 0x0080, 0x4626: 0x0080, 0x4627: 0x0080, 0x4628: 0x0080, 0x4629: 0x0080, + 0x4624: 0x0080, 0x4625: 0x0080, 0x4626: 0x0080, 0x4629: 0x0080, 0x462a: 0x0080, 0x462b: 0x0080, 0x462c: 0x0080, 0x462d: 0x0080, 0x462e: 0x0080, 0x462f: 0x0080, 0x4630: 0x0080, 0x4631: 0x0080, 0x4632: 0x0080, 0x4633: 0x0080, 0x4634: 0x0080, 0x4635: 0x0080, 0x4636: 0x0080, 0x4637: 0x0080, 0x4638: 0x0080, 0x4639: 0x0080, 0x463a: 0x0080, 0x463b: 0x0080, @@ -3165,66 +3178,49 @@ var derivedPropertiesValues = [20736]uint8{ 0x4646: 0x0080, 0x4647: 0x0080, 0x4648: 0x0080, 0x4649: 0x0080, 0x464a: 0x0080, 0x464b: 0x0080, 0x464c: 0x0080, 0x464d: 0x0080, 0x464e: 0x0080, 0x464f: 0x0080, 0x4650: 0x0080, 0x4651: 0x0080, 0x4652: 0x0080, 0x4653: 0x0080, 0x4654: 0x0080, 0x4655: 0x0080, 0x4656: 0x0080, 0x4657: 0x0080, - 0x4658: 0x0080, 0x4659: 0x0080, 0x465a: 0x0080, 0x465b: 0x0080, 0x465c: 0x0080, - 0x465e: 0x0080, 0x465f: 0x0080, 0x4662: 0x0080, - 0x4665: 0x0080, 0x4666: 0x0080, 0x4669: 0x0080, - 0x466a: 0x0080, 0x466b: 0x0080, 0x466c: 0x0080, 0x466e: 0x0080, 0x466f: 0x0080, - 0x4670: 0x0080, 0x4671: 0x0080, 0x4672: 0x0080, 0x4673: 0x0080, 0x4674: 0x0080, 0x4675: 0x0080, - 0x4676: 0x0080, 0x4677: 0x0080, 0x4678: 0x0080, 0x4679: 0x0080, 0x467b: 0x0080, - 0x467d: 0x0080, 0x467e: 0x0080, 0x467f: 0x0080, + 0x4658: 0x0080, 0x4659: 0x0080, 0x465a: 0x0080, 0x465b: 0x0080, 0x465c: 0x0080, 0x465d: 0x0080, + 0x465e: 0x0080, 0x465f: 0x0080, 0x4660: 0x0080, 0x4661: 0x0080, 0x4662: 0x0080, 0x4663: 0x0080, + 0x4664: 0x0080, 0x4665: 0x00c0, 0x4666: 0x00c0, 0x4667: 0x00c3, 0x4668: 0x00c3, 0x4669: 0x00c3, + 0x466a: 0x0080, 0x466b: 0x0080, 0x466c: 0x0080, 0x466d: 0x00c0, 0x466e: 0x00c0, 0x466f: 0x00c0, + 0x4670: 0x00c0, 0x4671: 0x00c0, 0x4672: 0x00c0, 0x4673: 0x0040, 0x4674: 0x0040, 0x4675: 0x0040, + 0x4676: 0x0040, 0x4677: 0x0040, 0x4678: 0x0040, 0x4679: 0x0040, 0x467a: 0x0040, 0x467b: 0x00c3, + 0x467c: 0x00c3, 0x467d: 0x00c3, 0x467e: 0x00c3, 0x467f: 0x00c3, // Block 0x11a, offset 0x4680 - 0x4680: 0x0080, 0x4681: 0x0080, 0x4682: 0x0080, 0x4683: 0x0080, 0x4685: 0x0080, - 0x4686: 0x0080, 0x4687: 0x0080, 0x4688: 0x0080, 0x4689: 0x0080, 0x468a: 0x0080, 0x468b: 0x0080, + 0x4680: 0x00c3, 0x4681: 0x00c3, 0x4682: 0x00c3, 0x4683: 0x0080, 0x4684: 0x0080, 0x4685: 0x00c3, + 0x4686: 0x00c3, 0x4687: 0x00c3, 0x4688: 0x00c3, 0x4689: 0x00c3, 0x468a: 0x00c3, 0x468b: 0x00c3, 0x468c: 0x0080, 0x468d: 0x0080, 0x468e: 0x0080, 0x468f: 0x0080, 0x4690: 0x0080, 0x4691: 0x0080, 0x4692: 0x0080, 0x4693: 0x0080, 0x4694: 0x0080, 0x4695: 0x0080, 0x4696: 0x0080, 0x4697: 0x0080, 0x4698: 0x0080, 0x4699: 0x0080, 0x469a: 0x0080, 0x469b: 0x0080, 0x469c: 0x0080, 0x469d: 0x0080, 0x469e: 0x0080, 0x469f: 0x0080, 0x46a0: 0x0080, 0x46a1: 0x0080, 0x46a2: 0x0080, 0x46a3: 0x0080, 0x46a4: 0x0080, 0x46a5: 0x0080, 0x46a6: 0x0080, 0x46a7: 0x0080, 0x46a8: 0x0080, 0x46a9: 0x0080, - 0x46aa: 0x0080, 0x46ab: 0x0080, 0x46ac: 0x0080, 0x46ad: 0x0080, 0x46ae: 0x0080, 0x46af: 0x0080, + 0x46aa: 0x00c3, 0x46ab: 0x00c3, 0x46ac: 0x00c3, 0x46ad: 0x00c3, 0x46ae: 0x0080, 0x46af: 0x0080, 0x46b0: 0x0080, 0x46b1: 0x0080, 0x46b2: 0x0080, 0x46b3: 0x0080, 0x46b4: 0x0080, 0x46b5: 0x0080, 0x46b6: 0x0080, 0x46b7: 0x0080, 0x46b8: 0x0080, 0x46b9: 0x0080, 0x46ba: 0x0080, 0x46bb: 0x0080, 0x46bc: 0x0080, 0x46bd: 0x0080, 0x46be: 0x0080, 0x46bf: 0x0080, // Block 0x11b, offset 0x46c0 0x46c0: 0x0080, 0x46c1: 0x0080, 0x46c2: 0x0080, 0x46c3: 0x0080, 0x46c4: 0x0080, 0x46c5: 0x0080, - 0x46c7: 0x0080, 0x46c8: 0x0080, 0x46c9: 0x0080, 0x46ca: 0x0080, - 0x46cd: 0x0080, 0x46ce: 0x0080, 0x46cf: 0x0080, 0x46d0: 0x0080, 0x46d1: 0x0080, - 0x46d2: 0x0080, 0x46d3: 0x0080, 0x46d4: 0x0080, 0x46d6: 0x0080, 0x46d7: 0x0080, - 0x46d8: 0x0080, 0x46d9: 0x0080, 0x46da: 0x0080, 0x46db: 0x0080, 0x46dc: 0x0080, + 0x46c6: 0x0080, 0x46c7: 0x0080, 0x46c8: 0x0080, 0x46c9: 0x0080, 0x46ca: 0x0080, 0x46cb: 0x0080, + 0x46cc: 0x0080, 0x46cd: 0x0080, 0x46ce: 0x0080, 0x46cf: 0x0080, 0x46d0: 0x0080, 0x46d1: 0x0080, + 0x46d2: 0x0080, 0x46d3: 0x0080, 0x46d4: 0x0080, 0x46d5: 0x0080, 0x46d6: 0x0080, 0x46d7: 0x0080, + 0x46d8: 0x0080, 0x46d9: 0x0080, 0x46da: 0x0080, 0x46db: 0x0080, 0x46dc: 0x0080, 0x46dd: 0x0080, 0x46de: 0x0080, 0x46df: 0x0080, 0x46e0: 0x0080, 0x46e1: 0x0080, 0x46e2: 0x0080, 0x46e3: 0x0080, - 0x46e4: 0x0080, 0x46e5: 0x0080, 0x46e6: 0x0080, 0x46e7: 0x0080, 0x46e8: 0x0080, 0x46e9: 0x0080, - 0x46ea: 0x0080, 0x46eb: 0x0080, 0x46ec: 0x0080, 0x46ed: 0x0080, 0x46ee: 0x0080, 0x46ef: 0x0080, - 0x46f0: 0x0080, 0x46f1: 0x0080, 0x46f2: 0x0080, 0x46f3: 0x0080, 0x46f4: 0x0080, 0x46f5: 0x0080, - 0x46f6: 0x0080, 0x46f7: 0x0080, 0x46f8: 0x0080, 0x46f9: 0x0080, 0x46fb: 0x0080, - 0x46fc: 0x0080, 0x46fd: 0x0080, 0x46fe: 0x0080, + 0x46e4: 0x0080, 0x46e5: 0x0080, 0x46e6: 0x0080, 0x46e7: 0x0080, 0x46e8: 0x0080, // Block 0x11c, offset 0x4700 - 0x4700: 0x0080, 0x4701: 0x0080, 0x4702: 0x0080, 0x4703: 0x0080, 0x4704: 0x0080, - 0x4706: 0x0080, 0x470a: 0x0080, 0x470b: 0x0080, - 0x470c: 0x0080, 0x470d: 0x0080, 0x470e: 0x0080, 0x470f: 0x0080, 0x4710: 0x0080, - 0x4712: 0x0080, 0x4713: 0x0080, 0x4714: 0x0080, 0x4715: 0x0080, 0x4716: 0x0080, 0x4717: 0x0080, - 0x4718: 0x0080, 0x4719: 0x0080, 0x471a: 0x0080, 0x471b: 0x0080, 0x471c: 0x0080, 0x471d: 0x0080, - 0x471e: 0x0080, 0x471f: 0x0080, 0x4720: 0x0080, 0x4721: 0x0080, 0x4722: 0x0080, 0x4723: 0x0080, - 0x4724: 0x0080, 0x4725: 0x0080, 0x4726: 0x0080, 0x4727: 0x0080, 0x4728: 0x0080, 0x4729: 0x0080, - 0x472a: 0x0080, 0x472b: 0x0080, 0x472c: 0x0080, 0x472d: 0x0080, 0x472e: 0x0080, 0x472f: 0x0080, - 0x4730: 0x0080, 0x4731: 0x0080, 0x4732: 0x0080, 0x4733: 0x0080, 0x4734: 0x0080, 0x4735: 0x0080, - 0x4736: 0x0080, 0x4737: 0x0080, 0x4738: 0x0080, 0x4739: 0x0080, 0x473a: 0x0080, 0x473b: 0x0080, - 0x473c: 0x0080, 0x473d: 0x0080, 0x473e: 0x0080, 0x473f: 0x0080, + 0x4700: 0x0088, 0x4701: 0x0088, 0x4702: 0x00c9, 0x4703: 0x00c9, 0x4704: 0x00c9, 0x4705: 0x0088, // Block 0x11d, offset 0x4740 0x4740: 0x0080, 0x4741: 0x0080, 0x4742: 0x0080, 0x4743: 0x0080, 0x4744: 0x0080, 0x4745: 0x0080, 0x4746: 0x0080, 0x4747: 0x0080, 0x4748: 0x0080, 0x4749: 0x0080, 0x474a: 0x0080, 0x474b: 0x0080, 0x474c: 0x0080, 0x474d: 0x0080, 0x474e: 0x0080, 0x474f: 0x0080, 0x4750: 0x0080, 0x4751: 0x0080, - 0x4752: 0x0080, 0x4753: 0x0080, 0x4754: 0x0080, 0x4755: 0x0080, 0x4756: 0x0080, 0x4757: 0x0080, - 0x4758: 0x0080, 0x4759: 0x0080, 0x475a: 0x0080, 0x475b: 0x0080, 0x475c: 0x0080, 0x475d: 0x0080, - 0x475e: 0x0080, 0x475f: 0x0080, 0x4760: 0x0080, 0x4761: 0x0080, 0x4762: 0x0080, 0x4763: 0x0080, - 0x4764: 0x0080, 0x4765: 0x0080, 0x4768: 0x0080, 0x4769: 0x0080, + 0x4752: 0x0080, 0x4753: 0x0080, 0x4754: 0x0080, 0x4755: 0x0080, 0x4756: 0x0080, + 0x4760: 0x0080, 0x4761: 0x0080, 0x4762: 0x0080, 0x4763: 0x0080, + 0x4764: 0x0080, 0x4765: 0x0080, 0x4766: 0x0080, 0x4767: 0x0080, 0x4768: 0x0080, 0x4769: 0x0080, 0x476a: 0x0080, 0x476b: 0x0080, 0x476c: 0x0080, 0x476d: 0x0080, 0x476e: 0x0080, 0x476f: 0x0080, - 0x4770: 0x0080, 0x4771: 0x0080, 0x4772: 0x0080, 0x4773: 0x0080, 0x4774: 0x0080, 0x4775: 0x0080, - 0x4776: 0x0080, 0x4777: 0x0080, 0x4778: 0x0080, 0x4779: 0x0080, 0x477a: 0x0080, 0x477b: 0x0080, - 0x477c: 0x0080, 0x477d: 0x0080, 0x477e: 0x0080, 0x477f: 0x0080, + 0x4770: 0x0080, 0x4771: 0x0080, // Block 0x11e, offset 0x4780 0x4780: 0x0080, 0x4781: 0x0080, 0x4782: 0x0080, 0x4783: 0x0080, 0x4784: 0x0080, 0x4785: 0x0080, 0x4786: 0x0080, 0x4787: 0x0080, 0x4788: 0x0080, 0x4789: 0x0080, 0x478a: 0x0080, 0x478b: 0x0080, - 0x478e: 0x0080, 0x478f: 0x0080, 0x4790: 0x0080, 0x4791: 0x0080, - 0x4792: 0x0080, 0x4793: 0x0080, 0x4794: 0x0080, 0x4795: 0x0080, 0x4796: 0x0080, 0x4797: 0x0080, + 0x478c: 0x0080, 0x478d: 0x0080, 0x478e: 0x0080, 0x478f: 0x0080, 0x4790: 0x0080, 0x4791: 0x0080, + 0x4792: 0x0080, 0x4793: 0x0080, 0x4794: 0x0080, 0x4796: 0x0080, 0x4797: 0x0080, 0x4798: 0x0080, 0x4799: 0x0080, 0x479a: 0x0080, 0x479b: 0x0080, 0x479c: 0x0080, 0x479d: 0x0080, 0x479e: 0x0080, 0x479f: 0x0080, 0x47a0: 0x0080, 0x47a1: 0x0080, 0x47a2: 0x0080, 0x47a3: 0x0080, 0x47a4: 0x0080, 0x47a5: 0x0080, 0x47a6: 0x0080, 0x47a7: 0x0080, 0x47a8: 0x0080, 0x47a9: 0x0080, @@ -3233,333 +3229,428 @@ var derivedPropertiesValues = [20736]uint8{ 0x47b6: 0x0080, 0x47b7: 0x0080, 0x47b8: 0x0080, 0x47b9: 0x0080, 0x47ba: 0x0080, 0x47bb: 0x0080, 0x47bc: 0x0080, 0x47bd: 0x0080, 0x47be: 0x0080, 0x47bf: 0x0080, // Block 0x11f, offset 0x47c0 - 0x47c0: 0x00c3, 0x47c1: 0x00c3, 0x47c2: 0x00c3, 0x47c3: 0x00c3, 0x47c4: 0x00c3, 0x47c5: 0x00c3, - 0x47c6: 0x00c3, 0x47c7: 0x00c3, 0x47c8: 0x00c3, 0x47c9: 0x00c3, 0x47ca: 0x00c3, 0x47cb: 0x00c3, - 0x47cc: 0x00c3, 0x47cd: 0x00c3, 0x47ce: 0x00c3, 0x47cf: 0x00c3, 0x47d0: 0x00c3, 0x47d1: 0x00c3, - 0x47d2: 0x00c3, 0x47d3: 0x00c3, 0x47d4: 0x00c3, 0x47d5: 0x00c3, 0x47d6: 0x00c3, 0x47d7: 0x00c3, - 0x47d8: 0x00c3, 0x47d9: 0x00c3, 0x47da: 0x00c3, 0x47db: 0x00c3, 0x47dc: 0x00c3, 0x47dd: 0x00c3, - 0x47de: 0x00c3, 0x47df: 0x00c3, 0x47e0: 0x00c3, 0x47e1: 0x00c3, 0x47e2: 0x00c3, 0x47e3: 0x00c3, - 0x47e4: 0x00c3, 0x47e5: 0x00c3, 0x47e6: 0x00c3, 0x47e7: 0x00c3, 0x47e8: 0x00c3, 0x47e9: 0x00c3, - 0x47ea: 0x00c3, 0x47eb: 0x00c3, 0x47ec: 0x00c3, 0x47ed: 0x00c3, 0x47ee: 0x00c3, 0x47ef: 0x00c3, - 0x47f0: 0x00c3, 0x47f1: 0x00c3, 0x47f2: 0x00c3, 0x47f3: 0x00c3, 0x47f4: 0x00c3, 0x47f5: 0x00c3, - 0x47f6: 0x00c3, 0x47f7: 0x0080, 0x47f8: 0x0080, 0x47f9: 0x0080, 0x47fa: 0x0080, 0x47fb: 0x00c3, - 0x47fc: 0x00c3, 0x47fd: 0x00c3, 0x47fe: 0x00c3, 0x47ff: 0x00c3, + 0x47c0: 0x0080, 0x47c1: 0x0080, 0x47c2: 0x0080, 0x47c3: 0x0080, 0x47c4: 0x0080, 0x47c5: 0x0080, + 0x47c6: 0x0080, 0x47c7: 0x0080, 0x47c8: 0x0080, 0x47c9: 0x0080, 0x47ca: 0x0080, 0x47cb: 0x0080, + 0x47cc: 0x0080, 0x47cd: 0x0080, 0x47ce: 0x0080, 0x47cf: 0x0080, 0x47d0: 0x0080, 0x47d1: 0x0080, + 0x47d2: 0x0080, 0x47d3: 0x0080, 0x47d4: 0x0080, 0x47d5: 0x0080, 0x47d6: 0x0080, 0x47d7: 0x0080, + 0x47d8: 0x0080, 0x47d9: 0x0080, 0x47da: 0x0080, 0x47db: 0x0080, 0x47dc: 0x0080, + 0x47de: 0x0080, 0x47df: 0x0080, 0x47e2: 0x0080, + 0x47e5: 0x0080, 0x47e6: 0x0080, 0x47e9: 0x0080, + 0x47ea: 0x0080, 0x47eb: 0x0080, 0x47ec: 0x0080, 0x47ee: 0x0080, 0x47ef: 0x0080, + 0x47f0: 0x0080, 0x47f1: 0x0080, 0x47f2: 0x0080, 0x47f3: 0x0080, 0x47f4: 0x0080, 0x47f5: 0x0080, + 0x47f6: 0x0080, 0x47f7: 0x0080, 0x47f8: 0x0080, 0x47f9: 0x0080, 0x47fb: 0x0080, + 0x47fd: 0x0080, 0x47fe: 0x0080, 0x47ff: 0x0080, // Block 0x120, offset 0x4800 - 0x4800: 0x00c3, 0x4801: 0x00c3, 0x4802: 0x00c3, 0x4803: 0x00c3, 0x4804: 0x00c3, 0x4805: 0x00c3, - 0x4806: 0x00c3, 0x4807: 0x00c3, 0x4808: 0x00c3, 0x4809: 0x00c3, 0x480a: 0x00c3, 0x480b: 0x00c3, - 0x480c: 0x00c3, 0x480d: 0x00c3, 0x480e: 0x00c3, 0x480f: 0x00c3, 0x4810: 0x00c3, 0x4811: 0x00c3, - 0x4812: 0x00c3, 0x4813: 0x00c3, 0x4814: 0x00c3, 0x4815: 0x00c3, 0x4816: 0x00c3, 0x4817: 0x00c3, - 0x4818: 0x00c3, 0x4819: 0x00c3, 0x481a: 0x00c3, 0x481b: 0x00c3, 0x481c: 0x00c3, 0x481d: 0x00c3, - 0x481e: 0x00c3, 0x481f: 0x00c3, 0x4820: 0x00c3, 0x4821: 0x00c3, 0x4822: 0x00c3, 0x4823: 0x00c3, - 0x4824: 0x00c3, 0x4825: 0x00c3, 0x4826: 0x00c3, 0x4827: 0x00c3, 0x4828: 0x00c3, 0x4829: 0x00c3, - 0x482a: 0x00c3, 0x482b: 0x00c3, 0x482c: 0x00c3, 0x482d: 0x0080, 0x482e: 0x0080, 0x482f: 0x0080, - 0x4830: 0x0080, 0x4831: 0x0080, 0x4832: 0x0080, 0x4833: 0x0080, 0x4834: 0x0080, 0x4835: 0x00c3, + 0x4800: 0x0080, 0x4801: 0x0080, 0x4802: 0x0080, 0x4803: 0x0080, 0x4805: 0x0080, + 0x4806: 0x0080, 0x4807: 0x0080, 0x4808: 0x0080, 0x4809: 0x0080, 0x480a: 0x0080, 0x480b: 0x0080, + 0x480c: 0x0080, 0x480d: 0x0080, 0x480e: 0x0080, 0x480f: 0x0080, 0x4810: 0x0080, 0x4811: 0x0080, + 0x4812: 0x0080, 0x4813: 0x0080, 0x4814: 0x0080, 0x4815: 0x0080, 0x4816: 0x0080, 0x4817: 0x0080, + 0x4818: 0x0080, 0x4819: 0x0080, 0x481a: 0x0080, 0x481b: 0x0080, 0x481c: 0x0080, 0x481d: 0x0080, + 0x481e: 0x0080, 0x481f: 0x0080, 0x4820: 0x0080, 0x4821: 0x0080, 0x4822: 0x0080, 0x4823: 0x0080, + 0x4824: 0x0080, 0x4825: 0x0080, 0x4826: 0x0080, 0x4827: 0x0080, 0x4828: 0x0080, 0x4829: 0x0080, + 0x482a: 0x0080, 0x482b: 0x0080, 0x482c: 0x0080, 0x482d: 0x0080, 0x482e: 0x0080, 0x482f: 0x0080, + 0x4830: 0x0080, 0x4831: 0x0080, 0x4832: 0x0080, 0x4833: 0x0080, 0x4834: 0x0080, 0x4835: 0x0080, 0x4836: 0x0080, 0x4837: 0x0080, 0x4838: 0x0080, 0x4839: 0x0080, 0x483a: 0x0080, 0x483b: 0x0080, 0x483c: 0x0080, 0x483d: 0x0080, 0x483e: 0x0080, 0x483f: 0x0080, // Block 0x121, offset 0x4840 - 0x4840: 0x0080, 0x4841: 0x0080, 0x4842: 0x0080, 0x4843: 0x0080, 0x4844: 0x00c3, 0x4845: 0x0080, - 0x4846: 0x0080, 0x4847: 0x0080, 0x4848: 0x0080, 0x4849: 0x0080, 0x484a: 0x0080, 0x484b: 0x0080, - 0x485b: 0x00c3, 0x485c: 0x00c3, 0x485d: 0x00c3, - 0x485e: 0x00c3, 0x485f: 0x00c3, 0x4861: 0x00c3, 0x4862: 0x00c3, 0x4863: 0x00c3, - 0x4864: 0x00c3, 0x4865: 0x00c3, 0x4866: 0x00c3, 0x4867: 0x00c3, 0x4868: 0x00c3, 0x4869: 0x00c3, - 0x486a: 0x00c3, 0x486b: 0x00c3, 0x486c: 0x00c3, 0x486d: 0x00c3, 0x486e: 0x00c3, 0x486f: 0x00c3, + 0x4840: 0x0080, 0x4841: 0x0080, 0x4842: 0x0080, 0x4843: 0x0080, 0x4844: 0x0080, 0x4845: 0x0080, + 0x4847: 0x0080, 0x4848: 0x0080, 0x4849: 0x0080, 0x484a: 0x0080, + 0x484d: 0x0080, 0x484e: 0x0080, 0x484f: 0x0080, 0x4850: 0x0080, 0x4851: 0x0080, + 0x4852: 0x0080, 0x4853: 0x0080, 0x4854: 0x0080, 0x4856: 0x0080, 0x4857: 0x0080, + 0x4858: 0x0080, 0x4859: 0x0080, 0x485a: 0x0080, 0x485b: 0x0080, 0x485c: 0x0080, + 0x485e: 0x0080, 0x485f: 0x0080, 0x4860: 0x0080, 0x4861: 0x0080, 0x4862: 0x0080, 0x4863: 0x0080, + 0x4864: 0x0080, 0x4865: 0x0080, 0x4866: 0x0080, 0x4867: 0x0080, 0x4868: 0x0080, 0x4869: 0x0080, + 0x486a: 0x0080, 0x486b: 0x0080, 0x486c: 0x0080, 0x486d: 0x0080, 0x486e: 0x0080, 0x486f: 0x0080, + 0x4870: 0x0080, 0x4871: 0x0080, 0x4872: 0x0080, 0x4873: 0x0080, 0x4874: 0x0080, 0x4875: 0x0080, + 0x4876: 0x0080, 0x4877: 0x0080, 0x4878: 0x0080, 0x4879: 0x0080, 0x487b: 0x0080, + 0x487c: 0x0080, 0x487d: 0x0080, 0x487e: 0x0080, // Block 0x122, offset 0x4880 - 0x4880: 0x00c3, 0x4881: 0x00c3, 0x4882: 0x00c3, 0x4883: 0x00c3, 0x4884: 0x00c3, 0x4885: 0x00c3, - 0x4886: 0x00c3, 0x4888: 0x00c3, 0x4889: 0x00c3, 0x488a: 0x00c3, 0x488b: 0x00c3, - 0x488c: 0x00c3, 0x488d: 0x00c3, 0x488e: 0x00c3, 0x488f: 0x00c3, 0x4890: 0x00c3, 0x4891: 0x00c3, - 0x4892: 0x00c3, 0x4893: 0x00c3, 0x4894: 0x00c3, 0x4895: 0x00c3, 0x4896: 0x00c3, 0x4897: 0x00c3, - 0x4898: 0x00c3, 0x489b: 0x00c3, 0x489c: 0x00c3, 0x489d: 0x00c3, - 0x489e: 0x00c3, 0x489f: 0x00c3, 0x48a0: 0x00c3, 0x48a1: 0x00c3, 0x48a3: 0x00c3, - 0x48a4: 0x00c3, 0x48a6: 0x00c3, 0x48a7: 0x00c3, 0x48a8: 0x00c3, 0x48a9: 0x00c3, - 0x48aa: 0x00c3, + 0x4880: 0x0080, 0x4881: 0x0080, 0x4882: 0x0080, 0x4883: 0x0080, 0x4884: 0x0080, + 0x4886: 0x0080, 0x488a: 0x0080, 0x488b: 0x0080, + 0x488c: 0x0080, 0x488d: 0x0080, 0x488e: 0x0080, 0x488f: 0x0080, 0x4890: 0x0080, + 0x4892: 0x0080, 0x4893: 0x0080, 0x4894: 0x0080, 0x4895: 0x0080, 0x4896: 0x0080, 0x4897: 0x0080, + 0x4898: 0x0080, 0x4899: 0x0080, 0x489a: 0x0080, 0x489b: 0x0080, 0x489c: 0x0080, 0x489d: 0x0080, + 0x489e: 0x0080, 0x489f: 0x0080, 0x48a0: 0x0080, 0x48a1: 0x0080, 0x48a2: 0x0080, 0x48a3: 0x0080, + 0x48a4: 0x0080, 0x48a5: 0x0080, 0x48a6: 0x0080, 0x48a7: 0x0080, 0x48a8: 0x0080, 0x48a9: 0x0080, + 0x48aa: 0x0080, 0x48ab: 0x0080, 0x48ac: 0x0080, 0x48ad: 0x0080, 0x48ae: 0x0080, 0x48af: 0x0080, + 0x48b0: 0x0080, 0x48b1: 0x0080, 0x48b2: 0x0080, 0x48b3: 0x0080, 0x48b4: 0x0080, 0x48b5: 0x0080, + 0x48b6: 0x0080, 0x48b7: 0x0080, 0x48b8: 0x0080, 0x48b9: 0x0080, 0x48ba: 0x0080, 0x48bb: 0x0080, + 0x48bc: 0x0080, 0x48bd: 0x0080, 0x48be: 0x0080, 0x48bf: 0x0080, // Block 0x123, offset 0x48c0 - 0x48c0: 0x00c0, 0x48c1: 0x00c0, 0x48c2: 0x00c0, 0x48c3: 0x00c0, 0x48c4: 0x00c0, - 0x48c7: 0x0080, 0x48c8: 0x0080, 0x48c9: 0x0080, 0x48ca: 0x0080, 0x48cb: 0x0080, - 0x48cc: 0x0080, 0x48cd: 0x0080, 0x48ce: 0x0080, 0x48cf: 0x0080, 0x48d0: 0x00c3, 0x48d1: 0x00c3, - 0x48d2: 0x00c3, 0x48d3: 0x00c3, 0x48d4: 0x00c3, 0x48d5: 0x00c3, 0x48d6: 0x00c3, + 0x48c0: 0x0080, 0x48c1: 0x0080, 0x48c2: 0x0080, 0x48c3: 0x0080, 0x48c4: 0x0080, 0x48c5: 0x0080, + 0x48c6: 0x0080, 0x48c7: 0x0080, 0x48c8: 0x0080, 0x48c9: 0x0080, 0x48ca: 0x0080, 0x48cb: 0x0080, + 0x48cc: 0x0080, 0x48cd: 0x0080, 0x48ce: 0x0080, 0x48cf: 0x0080, 0x48d0: 0x0080, 0x48d1: 0x0080, + 0x48d2: 0x0080, 0x48d3: 0x0080, 0x48d4: 0x0080, 0x48d5: 0x0080, 0x48d6: 0x0080, 0x48d7: 0x0080, + 0x48d8: 0x0080, 0x48d9: 0x0080, 0x48da: 0x0080, 0x48db: 0x0080, 0x48dc: 0x0080, 0x48dd: 0x0080, + 0x48de: 0x0080, 0x48df: 0x0080, 0x48e0: 0x0080, 0x48e1: 0x0080, 0x48e2: 0x0080, 0x48e3: 0x0080, + 0x48e4: 0x0080, 0x48e5: 0x0080, 0x48e8: 0x0080, 0x48e9: 0x0080, + 0x48ea: 0x0080, 0x48eb: 0x0080, 0x48ec: 0x0080, 0x48ed: 0x0080, 0x48ee: 0x0080, 0x48ef: 0x0080, + 0x48f0: 0x0080, 0x48f1: 0x0080, 0x48f2: 0x0080, 0x48f3: 0x0080, 0x48f4: 0x0080, 0x48f5: 0x0080, + 0x48f6: 0x0080, 0x48f7: 0x0080, 0x48f8: 0x0080, 0x48f9: 0x0080, 0x48fa: 0x0080, 0x48fb: 0x0080, + 0x48fc: 0x0080, 0x48fd: 0x0080, 0x48fe: 0x0080, 0x48ff: 0x0080, // Block 0x124, offset 0x4900 - 0x4900: 0x00c2, 0x4901: 0x00c2, 0x4902: 0x00c2, 0x4903: 0x00c2, 0x4904: 0x00c2, 0x4905: 0x00c2, - 0x4906: 0x00c2, 0x4907: 0x00c2, 0x4908: 0x00c2, 0x4909: 0x00c2, 0x490a: 0x00c2, 0x490b: 0x00c2, - 0x490c: 0x00c2, 0x490d: 0x00c2, 0x490e: 0x00c2, 0x490f: 0x00c2, 0x4910: 0x00c2, 0x4911: 0x00c2, - 0x4912: 0x00c2, 0x4913: 0x00c2, 0x4914: 0x00c2, 0x4915: 0x00c2, 0x4916: 0x00c2, 0x4917: 0x00c2, - 0x4918: 0x00c2, 0x4919: 0x00c2, 0x491a: 0x00c2, 0x491b: 0x00c2, 0x491c: 0x00c2, 0x491d: 0x00c2, - 0x491e: 0x00c2, 0x491f: 0x00c2, 0x4920: 0x00c2, 0x4921: 0x00c2, 0x4922: 0x00c2, 0x4923: 0x00c2, - 0x4924: 0x00c2, 0x4925: 0x00c2, 0x4926: 0x00c2, 0x4927: 0x00c2, 0x4928: 0x00c2, 0x4929: 0x00c2, - 0x492a: 0x00c2, 0x492b: 0x00c2, 0x492c: 0x00c2, 0x492d: 0x00c2, 0x492e: 0x00c2, 0x492f: 0x00c2, - 0x4930: 0x00c2, 0x4931: 0x00c2, 0x4932: 0x00c2, 0x4933: 0x00c2, 0x4934: 0x00c2, 0x4935: 0x00c2, - 0x4936: 0x00c2, 0x4937: 0x00c2, 0x4938: 0x00c2, 0x4939: 0x00c2, 0x493a: 0x00c2, 0x493b: 0x00c2, - 0x493c: 0x00c2, 0x493d: 0x00c2, 0x493e: 0x00c2, 0x493f: 0x00c2, + 0x4900: 0x0080, 0x4901: 0x0080, 0x4902: 0x0080, 0x4903: 0x0080, 0x4904: 0x0080, 0x4905: 0x0080, + 0x4906: 0x0080, 0x4907: 0x0080, 0x4908: 0x0080, 0x4909: 0x0080, 0x490a: 0x0080, 0x490b: 0x0080, + 0x490e: 0x0080, 0x490f: 0x0080, 0x4910: 0x0080, 0x4911: 0x0080, + 0x4912: 0x0080, 0x4913: 0x0080, 0x4914: 0x0080, 0x4915: 0x0080, 0x4916: 0x0080, 0x4917: 0x0080, + 0x4918: 0x0080, 0x4919: 0x0080, 0x491a: 0x0080, 0x491b: 0x0080, 0x491c: 0x0080, 0x491d: 0x0080, + 0x491e: 0x0080, 0x491f: 0x0080, 0x4920: 0x0080, 0x4921: 0x0080, 0x4922: 0x0080, 0x4923: 0x0080, + 0x4924: 0x0080, 0x4925: 0x0080, 0x4926: 0x0080, 0x4927: 0x0080, 0x4928: 0x0080, 0x4929: 0x0080, + 0x492a: 0x0080, 0x492b: 0x0080, 0x492c: 0x0080, 0x492d: 0x0080, 0x492e: 0x0080, 0x492f: 0x0080, + 0x4930: 0x0080, 0x4931: 0x0080, 0x4932: 0x0080, 0x4933: 0x0080, 0x4934: 0x0080, 0x4935: 0x0080, + 0x4936: 0x0080, 0x4937: 0x0080, 0x4938: 0x0080, 0x4939: 0x0080, 0x493a: 0x0080, 0x493b: 0x0080, + 0x493c: 0x0080, 0x493d: 0x0080, 0x493e: 0x0080, 0x493f: 0x0080, // Block 0x125, offset 0x4940 - 0x4940: 0x00c2, 0x4941: 0x00c2, 0x4942: 0x00c2, 0x4943: 0x00c2, 0x4944: 0x00c3, 0x4945: 0x00c3, - 0x4946: 0x00c3, 0x4947: 0x00c3, 0x4948: 0x00c3, 0x4949: 0x00c3, 0x494a: 0x00c3, - 0x4950: 0x00c0, 0x4951: 0x00c0, - 0x4952: 0x00c0, 0x4953: 0x00c0, 0x4954: 0x00c0, 0x4955: 0x00c0, 0x4956: 0x00c0, 0x4957: 0x00c0, - 0x4958: 0x00c0, 0x4959: 0x00c0, - 0x495e: 0x0080, 0x495f: 0x0080, + 0x4940: 0x00c3, 0x4941: 0x00c3, 0x4942: 0x00c3, 0x4943: 0x00c3, 0x4944: 0x00c3, 0x4945: 0x00c3, + 0x4946: 0x00c3, 0x4947: 0x00c3, 0x4948: 0x00c3, 0x4949: 0x00c3, 0x494a: 0x00c3, 0x494b: 0x00c3, + 0x494c: 0x00c3, 0x494d: 0x00c3, 0x494e: 0x00c3, 0x494f: 0x00c3, 0x4950: 0x00c3, 0x4951: 0x00c3, + 0x4952: 0x00c3, 0x4953: 0x00c3, 0x4954: 0x00c3, 0x4955: 0x00c3, 0x4956: 0x00c3, 0x4957: 0x00c3, + 0x4958: 0x00c3, 0x4959: 0x00c3, 0x495a: 0x00c3, 0x495b: 0x00c3, 0x495c: 0x00c3, 0x495d: 0x00c3, + 0x495e: 0x00c3, 0x495f: 0x00c3, 0x4960: 0x00c3, 0x4961: 0x00c3, 0x4962: 0x00c3, 0x4963: 0x00c3, + 0x4964: 0x00c3, 0x4965: 0x00c3, 0x4966: 0x00c3, 0x4967: 0x00c3, 0x4968: 0x00c3, 0x4969: 0x00c3, + 0x496a: 0x00c3, 0x496b: 0x00c3, 0x496c: 0x00c3, 0x496d: 0x00c3, 0x496e: 0x00c3, 0x496f: 0x00c3, + 0x4970: 0x00c3, 0x4971: 0x00c3, 0x4972: 0x00c3, 0x4973: 0x00c3, 0x4974: 0x00c3, 0x4975: 0x00c3, + 0x4976: 0x00c3, 0x4977: 0x0080, 0x4978: 0x0080, 0x4979: 0x0080, 0x497a: 0x0080, 0x497b: 0x00c3, + 0x497c: 0x00c3, 0x497d: 0x00c3, 0x497e: 0x00c3, 0x497f: 0x00c3, // Block 0x126, offset 0x4980 - 0x4980: 0x0080, 0x4981: 0x0080, 0x4982: 0x0080, 0x4983: 0x0080, 0x4985: 0x0080, - 0x4986: 0x0080, 0x4987: 0x0080, 0x4988: 0x0080, 0x4989: 0x0080, 0x498a: 0x0080, 0x498b: 0x0080, - 0x498c: 0x0080, 0x498d: 0x0080, 0x498e: 0x0080, 0x498f: 0x0080, 0x4990: 0x0080, 0x4991: 0x0080, - 0x4992: 0x0080, 0x4993: 0x0080, 0x4994: 0x0080, 0x4995: 0x0080, 0x4996: 0x0080, 0x4997: 0x0080, - 0x4998: 0x0080, 0x4999: 0x0080, 0x499a: 0x0080, 0x499b: 0x0080, 0x499c: 0x0080, 0x499d: 0x0080, - 0x499e: 0x0080, 0x499f: 0x0080, 0x49a1: 0x0080, 0x49a2: 0x0080, - 0x49a4: 0x0080, 0x49a7: 0x0080, 0x49a9: 0x0080, - 0x49aa: 0x0080, 0x49ab: 0x0080, 0x49ac: 0x0080, 0x49ad: 0x0080, 0x49ae: 0x0080, 0x49af: 0x0080, - 0x49b0: 0x0080, 0x49b1: 0x0080, 0x49b2: 0x0080, 0x49b4: 0x0080, 0x49b5: 0x0080, - 0x49b6: 0x0080, 0x49b7: 0x0080, 0x49b9: 0x0080, 0x49bb: 0x0080, + 0x4980: 0x00c3, 0x4981: 0x00c3, 0x4982: 0x00c3, 0x4983: 0x00c3, 0x4984: 0x00c3, 0x4985: 0x00c3, + 0x4986: 0x00c3, 0x4987: 0x00c3, 0x4988: 0x00c3, 0x4989: 0x00c3, 0x498a: 0x00c3, 0x498b: 0x00c3, + 0x498c: 0x00c3, 0x498d: 0x00c3, 0x498e: 0x00c3, 0x498f: 0x00c3, 0x4990: 0x00c3, 0x4991: 0x00c3, + 0x4992: 0x00c3, 0x4993: 0x00c3, 0x4994: 0x00c3, 0x4995: 0x00c3, 0x4996: 0x00c3, 0x4997: 0x00c3, + 0x4998: 0x00c3, 0x4999: 0x00c3, 0x499a: 0x00c3, 0x499b: 0x00c3, 0x499c: 0x00c3, 0x499d: 0x00c3, + 0x499e: 0x00c3, 0x499f: 0x00c3, 0x49a0: 0x00c3, 0x49a1: 0x00c3, 0x49a2: 0x00c3, 0x49a3: 0x00c3, + 0x49a4: 0x00c3, 0x49a5: 0x00c3, 0x49a6: 0x00c3, 0x49a7: 0x00c3, 0x49a8: 0x00c3, 0x49a9: 0x00c3, + 0x49aa: 0x00c3, 0x49ab: 0x00c3, 0x49ac: 0x00c3, 0x49ad: 0x0080, 0x49ae: 0x0080, 0x49af: 0x0080, + 0x49b0: 0x0080, 0x49b1: 0x0080, 0x49b2: 0x0080, 0x49b3: 0x0080, 0x49b4: 0x0080, 0x49b5: 0x00c3, + 0x49b6: 0x0080, 0x49b7: 0x0080, 0x49b8: 0x0080, 0x49b9: 0x0080, 0x49ba: 0x0080, 0x49bb: 0x0080, + 0x49bc: 0x0080, 0x49bd: 0x0080, 0x49be: 0x0080, 0x49bf: 0x0080, // Block 0x127, offset 0x49c0 - 0x49c2: 0x0080, - 0x49c7: 0x0080, 0x49c9: 0x0080, 0x49cb: 0x0080, - 0x49cd: 0x0080, 0x49ce: 0x0080, 0x49cf: 0x0080, 0x49d1: 0x0080, - 0x49d2: 0x0080, 0x49d4: 0x0080, 0x49d7: 0x0080, - 0x49d9: 0x0080, 0x49db: 0x0080, 0x49dd: 0x0080, - 0x49df: 0x0080, 0x49e1: 0x0080, 0x49e2: 0x0080, - 0x49e4: 0x0080, 0x49e7: 0x0080, 0x49e8: 0x0080, 0x49e9: 0x0080, - 0x49ea: 0x0080, 0x49ec: 0x0080, 0x49ed: 0x0080, 0x49ee: 0x0080, 0x49ef: 0x0080, - 0x49f0: 0x0080, 0x49f1: 0x0080, 0x49f2: 0x0080, 0x49f4: 0x0080, 0x49f5: 0x0080, - 0x49f6: 0x0080, 0x49f7: 0x0080, 0x49f9: 0x0080, 0x49fa: 0x0080, 0x49fb: 0x0080, - 0x49fc: 0x0080, 0x49fe: 0x0080, + 0x49c0: 0x0080, 0x49c1: 0x0080, 0x49c2: 0x0080, 0x49c3: 0x0080, 0x49c4: 0x00c3, 0x49c5: 0x0080, + 0x49c6: 0x0080, 0x49c7: 0x0080, 0x49c8: 0x0080, 0x49c9: 0x0080, 0x49ca: 0x0080, 0x49cb: 0x0080, + 0x49db: 0x00c3, 0x49dc: 0x00c3, 0x49dd: 0x00c3, + 0x49de: 0x00c3, 0x49df: 0x00c3, 0x49e1: 0x00c3, 0x49e2: 0x00c3, 0x49e3: 0x00c3, + 0x49e4: 0x00c3, 0x49e5: 0x00c3, 0x49e6: 0x00c3, 0x49e7: 0x00c3, 0x49e8: 0x00c3, 0x49e9: 0x00c3, + 0x49ea: 0x00c3, 0x49eb: 0x00c3, 0x49ec: 0x00c3, 0x49ed: 0x00c3, 0x49ee: 0x00c3, 0x49ef: 0x00c3, // Block 0x128, offset 0x4a00 - 0x4a00: 0x0080, 0x4a01: 0x0080, 0x4a02: 0x0080, 0x4a03: 0x0080, 0x4a04: 0x0080, 0x4a05: 0x0080, - 0x4a06: 0x0080, 0x4a07: 0x0080, 0x4a08: 0x0080, 0x4a09: 0x0080, 0x4a0b: 0x0080, - 0x4a0c: 0x0080, 0x4a0d: 0x0080, 0x4a0e: 0x0080, 0x4a0f: 0x0080, 0x4a10: 0x0080, 0x4a11: 0x0080, - 0x4a12: 0x0080, 0x4a13: 0x0080, 0x4a14: 0x0080, 0x4a15: 0x0080, 0x4a16: 0x0080, 0x4a17: 0x0080, - 0x4a18: 0x0080, 0x4a19: 0x0080, 0x4a1a: 0x0080, 0x4a1b: 0x0080, - 0x4a21: 0x0080, 0x4a22: 0x0080, 0x4a23: 0x0080, - 0x4a25: 0x0080, 0x4a26: 0x0080, 0x4a27: 0x0080, 0x4a28: 0x0080, 0x4a29: 0x0080, - 0x4a2b: 0x0080, 0x4a2c: 0x0080, 0x4a2d: 0x0080, 0x4a2e: 0x0080, 0x4a2f: 0x0080, - 0x4a30: 0x0080, 0x4a31: 0x0080, 0x4a32: 0x0080, 0x4a33: 0x0080, 0x4a34: 0x0080, 0x4a35: 0x0080, - 0x4a36: 0x0080, 0x4a37: 0x0080, 0x4a38: 0x0080, 0x4a39: 0x0080, 0x4a3a: 0x0080, 0x4a3b: 0x0080, + 0x4a00: 0x00c3, 0x4a01: 0x00c3, 0x4a02: 0x00c3, 0x4a03: 0x00c3, 0x4a04: 0x00c3, 0x4a05: 0x00c3, + 0x4a06: 0x00c3, 0x4a08: 0x00c3, 0x4a09: 0x00c3, 0x4a0a: 0x00c3, 0x4a0b: 0x00c3, + 0x4a0c: 0x00c3, 0x4a0d: 0x00c3, 0x4a0e: 0x00c3, 0x4a0f: 0x00c3, 0x4a10: 0x00c3, 0x4a11: 0x00c3, + 0x4a12: 0x00c3, 0x4a13: 0x00c3, 0x4a14: 0x00c3, 0x4a15: 0x00c3, 0x4a16: 0x00c3, 0x4a17: 0x00c3, + 0x4a18: 0x00c3, 0x4a1b: 0x00c3, 0x4a1c: 0x00c3, 0x4a1d: 0x00c3, + 0x4a1e: 0x00c3, 0x4a1f: 0x00c3, 0x4a20: 0x00c3, 0x4a21: 0x00c3, 0x4a23: 0x00c3, + 0x4a24: 0x00c3, 0x4a26: 0x00c3, 0x4a27: 0x00c3, 0x4a28: 0x00c3, 0x4a29: 0x00c3, + 0x4a2a: 0x00c3, // Block 0x129, offset 0x4a40 - 0x4a70: 0x0080, 0x4a71: 0x0080, + 0x4a40: 0x00c0, 0x4a41: 0x00c0, 0x4a42: 0x00c0, 0x4a43: 0x00c0, 0x4a44: 0x00c0, + 0x4a47: 0x0080, 0x4a48: 0x0080, 0x4a49: 0x0080, 0x4a4a: 0x0080, 0x4a4b: 0x0080, + 0x4a4c: 0x0080, 0x4a4d: 0x0080, 0x4a4e: 0x0080, 0x4a4f: 0x0080, 0x4a50: 0x00c3, 0x4a51: 0x00c3, + 0x4a52: 0x00c3, 0x4a53: 0x00c3, 0x4a54: 0x00c3, 0x4a55: 0x00c3, 0x4a56: 0x00c3, // Block 0x12a, offset 0x4a80 - 0x4a80: 0x0080, 0x4a81: 0x0080, 0x4a82: 0x0080, 0x4a83: 0x0080, 0x4a84: 0x0080, 0x4a85: 0x0080, - 0x4a86: 0x0080, 0x4a87: 0x0080, 0x4a88: 0x0080, 0x4a89: 0x0080, 0x4a8a: 0x0080, 0x4a8b: 0x0080, - 0x4a8c: 0x0080, 0x4a8d: 0x0080, 0x4a8e: 0x0080, 0x4a8f: 0x0080, 0x4a90: 0x0080, 0x4a91: 0x0080, - 0x4a92: 0x0080, 0x4a93: 0x0080, 0x4a94: 0x0080, 0x4a95: 0x0080, 0x4a96: 0x0080, 0x4a97: 0x0080, - 0x4a98: 0x0080, 0x4a99: 0x0080, 0x4a9a: 0x0080, 0x4a9b: 0x0080, 0x4a9c: 0x0080, 0x4a9d: 0x0080, - 0x4a9e: 0x0080, 0x4a9f: 0x0080, 0x4aa0: 0x0080, 0x4aa1: 0x0080, 0x4aa2: 0x0080, 0x4aa3: 0x0080, - 0x4aa4: 0x0080, 0x4aa5: 0x0080, 0x4aa6: 0x0080, 0x4aa7: 0x0080, 0x4aa8: 0x0080, 0x4aa9: 0x0080, - 0x4aaa: 0x0080, 0x4aab: 0x0080, - 0x4ab0: 0x0080, 0x4ab1: 0x0080, 0x4ab2: 0x0080, 0x4ab3: 0x0080, 0x4ab4: 0x0080, 0x4ab5: 0x0080, - 0x4ab6: 0x0080, 0x4ab7: 0x0080, 0x4ab8: 0x0080, 0x4ab9: 0x0080, 0x4aba: 0x0080, 0x4abb: 0x0080, - 0x4abc: 0x0080, 0x4abd: 0x0080, 0x4abe: 0x0080, 0x4abf: 0x0080, + 0x4a80: 0x00c2, 0x4a81: 0x00c2, 0x4a82: 0x00c2, 0x4a83: 0x00c2, 0x4a84: 0x00c2, 0x4a85: 0x00c2, + 0x4a86: 0x00c2, 0x4a87: 0x00c2, 0x4a88: 0x00c2, 0x4a89: 0x00c2, 0x4a8a: 0x00c2, 0x4a8b: 0x00c2, + 0x4a8c: 0x00c2, 0x4a8d: 0x00c2, 0x4a8e: 0x00c2, 0x4a8f: 0x00c2, 0x4a90: 0x00c2, 0x4a91: 0x00c2, + 0x4a92: 0x00c2, 0x4a93: 0x00c2, 0x4a94: 0x00c2, 0x4a95: 0x00c2, 0x4a96: 0x00c2, 0x4a97: 0x00c2, + 0x4a98: 0x00c2, 0x4a99: 0x00c2, 0x4a9a: 0x00c2, 0x4a9b: 0x00c2, 0x4a9c: 0x00c2, 0x4a9d: 0x00c2, + 0x4a9e: 0x00c2, 0x4a9f: 0x00c2, 0x4aa0: 0x00c2, 0x4aa1: 0x00c2, 0x4aa2: 0x00c2, 0x4aa3: 0x00c2, + 0x4aa4: 0x00c2, 0x4aa5: 0x00c2, 0x4aa6: 0x00c2, 0x4aa7: 0x00c2, 0x4aa8: 0x00c2, 0x4aa9: 0x00c2, + 0x4aaa: 0x00c2, 0x4aab: 0x00c2, 0x4aac: 0x00c2, 0x4aad: 0x00c2, 0x4aae: 0x00c2, 0x4aaf: 0x00c2, + 0x4ab0: 0x00c2, 0x4ab1: 0x00c2, 0x4ab2: 0x00c2, 0x4ab3: 0x00c2, 0x4ab4: 0x00c2, 0x4ab5: 0x00c2, + 0x4ab6: 0x00c2, 0x4ab7: 0x00c2, 0x4ab8: 0x00c2, 0x4ab9: 0x00c2, 0x4aba: 0x00c2, 0x4abb: 0x00c2, + 0x4abc: 0x00c2, 0x4abd: 0x00c2, 0x4abe: 0x00c2, 0x4abf: 0x00c2, // Block 0x12b, offset 0x4ac0 - 0x4ac0: 0x0080, 0x4ac1: 0x0080, 0x4ac2: 0x0080, 0x4ac3: 0x0080, 0x4ac4: 0x0080, 0x4ac5: 0x0080, - 0x4ac6: 0x0080, 0x4ac7: 0x0080, 0x4ac8: 0x0080, 0x4ac9: 0x0080, 0x4aca: 0x0080, 0x4acb: 0x0080, - 0x4acc: 0x0080, 0x4acd: 0x0080, 0x4ace: 0x0080, 0x4acf: 0x0080, 0x4ad0: 0x0080, 0x4ad1: 0x0080, - 0x4ad2: 0x0080, 0x4ad3: 0x0080, - 0x4ae0: 0x0080, 0x4ae1: 0x0080, 0x4ae2: 0x0080, 0x4ae3: 0x0080, - 0x4ae4: 0x0080, 0x4ae5: 0x0080, 0x4ae6: 0x0080, 0x4ae7: 0x0080, 0x4ae8: 0x0080, 0x4ae9: 0x0080, - 0x4aea: 0x0080, 0x4aeb: 0x0080, 0x4aec: 0x0080, 0x4aed: 0x0080, 0x4aee: 0x0080, - 0x4af1: 0x0080, 0x4af2: 0x0080, 0x4af3: 0x0080, 0x4af4: 0x0080, 0x4af5: 0x0080, - 0x4af6: 0x0080, 0x4af7: 0x0080, 0x4af8: 0x0080, 0x4af9: 0x0080, 0x4afa: 0x0080, 0x4afb: 0x0080, - 0x4afc: 0x0080, 0x4afd: 0x0080, 0x4afe: 0x0080, 0x4aff: 0x0080, + 0x4ac0: 0x00c2, 0x4ac1: 0x00c2, 0x4ac2: 0x00c2, 0x4ac3: 0x00c2, 0x4ac4: 0x00c3, 0x4ac5: 0x00c3, + 0x4ac6: 0x00c3, 0x4ac7: 0x00c3, 0x4ac8: 0x00c3, 0x4ac9: 0x00c3, 0x4aca: 0x00c3, + 0x4ad0: 0x00c0, 0x4ad1: 0x00c0, + 0x4ad2: 0x00c0, 0x4ad3: 0x00c0, 0x4ad4: 0x00c0, 0x4ad5: 0x00c0, 0x4ad6: 0x00c0, 0x4ad7: 0x00c0, + 0x4ad8: 0x00c0, 0x4ad9: 0x00c0, + 0x4ade: 0x0080, 0x4adf: 0x0080, // Block 0x12c, offset 0x4b00 - 0x4b01: 0x0080, 0x4b02: 0x0080, 0x4b03: 0x0080, 0x4b04: 0x0080, 0x4b05: 0x0080, + 0x4b00: 0x0080, 0x4b01: 0x0080, 0x4b02: 0x0080, 0x4b03: 0x0080, 0x4b05: 0x0080, 0x4b06: 0x0080, 0x4b07: 0x0080, 0x4b08: 0x0080, 0x4b09: 0x0080, 0x4b0a: 0x0080, 0x4b0b: 0x0080, - 0x4b0c: 0x0080, 0x4b0d: 0x0080, 0x4b0e: 0x0080, 0x4b0f: 0x0080, 0x4b11: 0x0080, + 0x4b0c: 0x0080, 0x4b0d: 0x0080, 0x4b0e: 0x0080, 0x4b0f: 0x0080, 0x4b10: 0x0080, 0x4b11: 0x0080, 0x4b12: 0x0080, 0x4b13: 0x0080, 0x4b14: 0x0080, 0x4b15: 0x0080, 0x4b16: 0x0080, 0x4b17: 0x0080, 0x4b18: 0x0080, 0x4b19: 0x0080, 0x4b1a: 0x0080, 0x4b1b: 0x0080, 0x4b1c: 0x0080, 0x4b1d: 0x0080, - 0x4b1e: 0x0080, 0x4b1f: 0x0080, 0x4b20: 0x0080, 0x4b21: 0x0080, 0x4b22: 0x0080, 0x4b23: 0x0080, - 0x4b24: 0x0080, 0x4b25: 0x0080, 0x4b26: 0x0080, 0x4b27: 0x0080, 0x4b28: 0x0080, 0x4b29: 0x0080, + 0x4b1e: 0x0080, 0x4b1f: 0x0080, 0x4b21: 0x0080, 0x4b22: 0x0080, + 0x4b24: 0x0080, 0x4b27: 0x0080, 0x4b29: 0x0080, 0x4b2a: 0x0080, 0x4b2b: 0x0080, 0x4b2c: 0x0080, 0x4b2d: 0x0080, 0x4b2e: 0x0080, 0x4b2f: 0x0080, - 0x4b30: 0x0080, 0x4b31: 0x0080, 0x4b32: 0x0080, 0x4b33: 0x0080, 0x4b34: 0x0080, 0x4b35: 0x0080, + 0x4b30: 0x0080, 0x4b31: 0x0080, 0x4b32: 0x0080, 0x4b34: 0x0080, 0x4b35: 0x0080, + 0x4b36: 0x0080, 0x4b37: 0x0080, 0x4b39: 0x0080, 0x4b3b: 0x0080, // Block 0x12d, offset 0x4b40 - 0x4b40: 0x0080, 0x4b41: 0x0080, 0x4b42: 0x0080, 0x4b43: 0x0080, 0x4b44: 0x0080, 0x4b45: 0x0080, - 0x4b46: 0x0080, 0x4b47: 0x0080, 0x4b48: 0x0080, 0x4b49: 0x0080, 0x4b4a: 0x0080, 0x4b4b: 0x0080, - 0x4b4c: 0x0080, 0x4b50: 0x0080, 0x4b51: 0x0080, - 0x4b52: 0x0080, 0x4b53: 0x0080, 0x4b54: 0x0080, 0x4b55: 0x0080, 0x4b56: 0x0080, 0x4b57: 0x0080, - 0x4b58: 0x0080, 0x4b59: 0x0080, 0x4b5a: 0x0080, 0x4b5b: 0x0080, 0x4b5c: 0x0080, 0x4b5d: 0x0080, - 0x4b5e: 0x0080, 0x4b5f: 0x0080, 0x4b60: 0x0080, 0x4b61: 0x0080, 0x4b62: 0x0080, 0x4b63: 0x0080, - 0x4b64: 0x0080, 0x4b65: 0x0080, 0x4b66: 0x0080, 0x4b67: 0x0080, 0x4b68: 0x0080, 0x4b69: 0x0080, - 0x4b6a: 0x0080, 0x4b6b: 0x0080, 0x4b6c: 0x0080, 0x4b6d: 0x0080, 0x4b6e: 0x0080, - 0x4b70: 0x0080, 0x4b71: 0x0080, 0x4b72: 0x0080, 0x4b73: 0x0080, 0x4b74: 0x0080, 0x4b75: 0x0080, - 0x4b76: 0x0080, 0x4b77: 0x0080, 0x4b78: 0x0080, 0x4b79: 0x0080, 0x4b7a: 0x0080, 0x4b7b: 0x0080, - 0x4b7c: 0x0080, 0x4b7d: 0x0080, 0x4b7e: 0x0080, 0x4b7f: 0x0080, + 0x4b42: 0x0080, + 0x4b47: 0x0080, 0x4b49: 0x0080, 0x4b4b: 0x0080, + 0x4b4d: 0x0080, 0x4b4e: 0x0080, 0x4b4f: 0x0080, 0x4b51: 0x0080, + 0x4b52: 0x0080, 0x4b54: 0x0080, 0x4b57: 0x0080, + 0x4b59: 0x0080, 0x4b5b: 0x0080, 0x4b5d: 0x0080, + 0x4b5f: 0x0080, 0x4b61: 0x0080, 0x4b62: 0x0080, + 0x4b64: 0x0080, 0x4b67: 0x0080, 0x4b68: 0x0080, 0x4b69: 0x0080, + 0x4b6a: 0x0080, 0x4b6c: 0x0080, 0x4b6d: 0x0080, 0x4b6e: 0x0080, 0x4b6f: 0x0080, + 0x4b70: 0x0080, 0x4b71: 0x0080, 0x4b72: 0x0080, 0x4b74: 0x0080, 0x4b75: 0x0080, + 0x4b76: 0x0080, 0x4b77: 0x0080, 0x4b79: 0x0080, 0x4b7a: 0x0080, 0x4b7b: 0x0080, + 0x4b7c: 0x0080, 0x4b7e: 0x0080, // Block 0x12e, offset 0x4b80 0x4b80: 0x0080, 0x4b81: 0x0080, 0x4b82: 0x0080, 0x4b83: 0x0080, 0x4b84: 0x0080, 0x4b85: 0x0080, - 0x4b86: 0x0080, 0x4b87: 0x0080, 0x4b88: 0x0080, 0x4b89: 0x0080, 0x4b8a: 0x0080, 0x4b8b: 0x0080, + 0x4b86: 0x0080, 0x4b87: 0x0080, 0x4b88: 0x0080, 0x4b89: 0x0080, 0x4b8b: 0x0080, 0x4b8c: 0x0080, 0x4b8d: 0x0080, 0x4b8e: 0x0080, 0x4b8f: 0x0080, 0x4b90: 0x0080, 0x4b91: 0x0080, 0x4b92: 0x0080, 0x4b93: 0x0080, 0x4b94: 0x0080, 0x4b95: 0x0080, 0x4b96: 0x0080, 0x4b97: 0x0080, - 0x4b98: 0x0080, 0x4b99: 0x0080, 0x4b9a: 0x0080, 0x4b9b: 0x0080, 0x4b9c: 0x0080, 0x4b9d: 0x0080, - 0x4b9e: 0x0080, 0x4b9f: 0x0080, 0x4ba0: 0x0080, 0x4ba1: 0x0080, 0x4ba2: 0x0080, 0x4ba3: 0x0080, - 0x4ba4: 0x0080, 0x4ba5: 0x0080, 0x4ba6: 0x0080, 0x4ba7: 0x0080, 0x4ba8: 0x0080, 0x4ba9: 0x0080, - 0x4baa: 0x0080, 0x4bab: 0x0080, 0x4bac: 0x0080, + 0x4b98: 0x0080, 0x4b99: 0x0080, 0x4b9a: 0x0080, 0x4b9b: 0x0080, + 0x4ba1: 0x0080, 0x4ba2: 0x0080, 0x4ba3: 0x0080, + 0x4ba5: 0x0080, 0x4ba6: 0x0080, 0x4ba7: 0x0080, 0x4ba8: 0x0080, 0x4ba9: 0x0080, + 0x4bab: 0x0080, 0x4bac: 0x0080, 0x4bad: 0x0080, 0x4bae: 0x0080, 0x4baf: 0x0080, + 0x4bb0: 0x0080, 0x4bb1: 0x0080, 0x4bb2: 0x0080, 0x4bb3: 0x0080, 0x4bb4: 0x0080, 0x4bb5: 0x0080, + 0x4bb6: 0x0080, 0x4bb7: 0x0080, 0x4bb8: 0x0080, 0x4bb9: 0x0080, 0x4bba: 0x0080, 0x4bbb: 0x0080, // Block 0x12f, offset 0x4bc0 - 0x4be6: 0x0080, 0x4be7: 0x0080, 0x4be8: 0x0080, 0x4be9: 0x0080, - 0x4bea: 0x0080, 0x4beb: 0x0080, 0x4bec: 0x0080, 0x4bed: 0x0080, 0x4bee: 0x0080, 0x4bef: 0x0080, - 0x4bf0: 0x0080, 0x4bf1: 0x0080, 0x4bf2: 0x0080, 0x4bf3: 0x0080, 0x4bf4: 0x0080, 0x4bf5: 0x0080, - 0x4bf6: 0x0080, 0x4bf7: 0x0080, 0x4bf8: 0x0080, 0x4bf9: 0x0080, 0x4bfa: 0x0080, 0x4bfb: 0x0080, - 0x4bfc: 0x0080, 0x4bfd: 0x0080, 0x4bfe: 0x0080, 0x4bff: 0x0080, + 0x4bf0: 0x0080, 0x4bf1: 0x0080, // Block 0x130, offset 0x4c00 - 0x4c00: 0x008c, 0x4c01: 0x0080, 0x4c02: 0x0080, - 0x4c10: 0x0080, 0x4c11: 0x0080, + 0x4c00: 0x0080, 0x4c01: 0x0080, 0x4c02: 0x0080, 0x4c03: 0x0080, 0x4c04: 0x0080, 0x4c05: 0x0080, + 0x4c06: 0x0080, 0x4c07: 0x0080, 0x4c08: 0x0080, 0x4c09: 0x0080, 0x4c0a: 0x0080, 0x4c0b: 0x0080, + 0x4c0c: 0x0080, 0x4c0d: 0x0080, 0x4c0e: 0x0080, 0x4c0f: 0x0080, 0x4c10: 0x0080, 0x4c11: 0x0080, 0x4c12: 0x0080, 0x4c13: 0x0080, 0x4c14: 0x0080, 0x4c15: 0x0080, 0x4c16: 0x0080, 0x4c17: 0x0080, 0x4c18: 0x0080, 0x4c19: 0x0080, 0x4c1a: 0x0080, 0x4c1b: 0x0080, 0x4c1c: 0x0080, 0x4c1d: 0x0080, 0x4c1e: 0x0080, 0x4c1f: 0x0080, 0x4c20: 0x0080, 0x4c21: 0x0080, 0x4c22: 0x0080, 0x4c23: 0x0080, 0x4c24: 0x0080, 0x4c25: 0x0080, 0x4c26: 0x0080, 0x4c27: 0x0080, 0x4c28: 0x0080, 0x4c29: 0x0080, - 0x4c2a: 0x0080, 0x4c2b: 0x0080, 0x4c2c: 0x0080, 0x4c2d: 0x0080, 0x4c2e: 0x0080, 0x4c2f: 0x0080, + 0x4c2a: 0x0080, 0x4c2b: 0x0080, 0x4c30: 0x0080, 0x4c31: 0x0080, 0x4c32: 0x0080, 0x4c33: 0x0080, 0x4c34: 0x0080, 0x4c35: 0x0080, 0x4c36: 0x0080, 0x4c37: 0x0080, 0x4c38: 0x0080, 0x4c39: 0x0080, 0x4c3a: 0x0080, 0x4c3b: 0x0080, + 0x4c3c: 0x0080, 0x4c3d: 0x0080, 0x4c3e: 0x0080, 0x4c3f: 0x0080, // Block 0x131, offset 0x4c40 0x4c40: 0x0080, 0x4c41: 0x0080, 0x4c42: 0x0080, 0x4c43: 0x0080, 0x4c44: 0x0080, 0x4c45: 0x0080, - 0x4c46: 0x0080, 0x4c47: 0x0080, 0x4c48: 0x0080, - 0x4c50: 0x0080, 0x4c51: 0x0080, + 0x4c46: 0x0080, 0x4c47: 0x0080, 0x4c48: 0x0080, 0x4c49: 0x0080, 0x4c4a: 0x0080, 0x4c4b: 0x0080, + 0x4c4c: 0x0080, 0x4c4d: 0x0080, 0x4c4e: 0x0080, 0x4c4f: 0x0080, 0x4c50: 0x0080, 0x4c51: 0x0080, + 0x4c52: 0x0080, 0x4c53: 0x0080, + 0x4c60: 0x0080, 0x4c61: 0x0080, 0x4c62: 0x0080, 0x4c63: 0x0080, + 0x4c64: 0x0080, 0x4c65: 0x0080, 0x4c66: 0x0080, 0x4c67: 0x0080, 0x4c68: 0x0080, 0x4c69: 0x0080, + 0x4c6a: 0x0080, 0x4c6b: 0x0080, 0x4c6c: 0x0080, 0x4c6d: 0x0080, 0x4c6e: 0x0080, + 0x4c71: 0x0080, 0x4c72: 0x0080, 0x4c73: 0x0080, 0x4c74: 0x0080, 0x4c75: 0x0080, + 0x4c76: 0x0080, 0x4c77: 0x0080, 0x4c78: 0x0080, 0x4c79: 0x0080, 0x4c7a: 0x0080, 0x4c7b: 0x0080, + 0x4c7c: 0x0080, 0x4c7d: 0x0080, 0x4c7e: 0x0080, 0x4c7f: 0x0080, // Block 0x132, offset 0x4c80 - 0x4c80: 0x0080, 0x4c81: 0x0080, 0x4c82: 0x0080, 0x4c83: 0x0080, 0x4c84: 0x0080, 0x4c85: 0x0080, + 0x4c81: 0x0080, 0x4c82: 0x0080, 0x4c83: 0x0080, 0x4c84: 0x0080, 0x4c85: 0x0080, 0x4c86: 0x0080, 0x4c87: 0x0080, 0x4c88: 0x0080, 0x4c89: 0x0080, 0x4c8a: 0x0080, 0x4c8b: 0x0080, - 0x4c8c: 0x0080, 0x4c8d: 0x0080, 0x4c8e: 0x0080, 0x4c8f: 0x0080, 0x4c90: 0x0080, 0x4c91: 0x0080, - 0x4c92: 0x0080, - 0x4ca0: 0x0080, 0x4ca1: 0x0080, 0x4ca2: 0x0080, 0x4ca3: 0x0080, + 0x4c8c: 0x0080, 0x4c8d: 0x0080, 0x4c8e: 0x0080, 0x4c8f: 0x0080, 0x4c91: 0x0080, + 0x4c92: 0x0080, 0x4c93: 0x0080, 0x4c94: 0x0080, 0x4c95: 0x0080, 0x4c96: 0x0080, 0x4c97: 0x0080, + 0x4c98: 0x0080, 0x4c99: 0x0080, 0x4c9a: 0x0080, 0x4c9b: 0x0080, 0x4c9c: 0x0080, 0x4c9d: 0x0080, + 0x4c9e: 0x0080, 0x4c9f: 0x0080, 0x4ca0: 0x0080, 0x4ca1: 0x0080, 0x4ca2: 0x0080, 0x4ca3: 0x0080, 0x4ca4: 0x0080, 0x4ca5: 0x0080, 0x4ca6: 0x0080, 0x4ca7: 0x0080, 0x4ca8: 0x0080, 0x4ca9: 0x0080, - 0x4caa: 0x0080, 0x4cab: 0x0080, 0x4cac: 0x0080, + 0x4caa: 0x0080, 0x4cab: 0x0080, 0x4cac: 0x0080, 0x4cad: 0x0080, 0x4cae: 0x0080, 0x4caf: 0x0080, 0x4cb0: 0x0080, 0x4cb1: 0x0080, 0x4cb2: 0x0080, 0x4cb3: 0x0080, 0x4cb4: 0x0080, 0x4cb5: 0x0080, - 0x4cb6: 0x0080, // Block 0x133, offset 0x4cc0 0x4cc0: 0x0080, 0x4cc1: 0x0080, 0x4cc2: 0x0080, 0x4cc3: 0x0080, 0x4cc4: 0x0080, 0x4cc5: 0x0080, 0x4cc6: 0x0080, 0x4cc7: 0x0080, 0x4cc8: 0x0080, 0x4cc9: 0x0080, 0x4cca: 0x0080, 0x4ccb: 0x0080, - 0x4ccc: 0x0080, 0x4ccd: 0x0080, 0x4cce: 0x0080, 0x4ccf: 0x0080, 0x4cd0: 0x0080, 0x4cd1: 0x0080, + 0x4ccc: 0x0080, 0x4cd0: 0x0080, 0x4cd1: 0x0080, 0x4cd2: 0x0080, 0x4cd3: 0x0080, 0x4cd4: 0x0080, 0x4cd5: 0x0080, 0x4cd6: 0x0080, 0x4cd7: 0x0080, 0x4cd8: 0x0080, 0x4cd9: 0x0080, 0x4cda: 0x0080, 0x4cdb: 0x0080, 0x4cdc: 0x0080, 0x4cdd: 0x0080, 0x4cde: 0x0080, 0x4cdf: 0x0080, 0x4ce0: 0x0080, 0x4ce1: 0x0080, 0x4ce2: 0x0080, 0x4ce3: 0x0080, 0x4ce4: 0x0080, 0x4ce5: 0x0080, 0x4ce6: 0x0080, 0x4ce7: 0x0080, 0x4ce8: 0x0080, 0x4ce9: 0x0080, - 0x4cea: 0x0080, 0x4ceb: 0x0080, 0x4cec: 0x0080, 0x4ced: 0x0080, 0x4cee: 0x0080, 0x4cef: 0x0080, - 0x4cf0: 0x0080, 0x4cf1: 0x0080, 0x4cf2: 0x0080, 0x4cf3: 0x0080, + 0x4cea: 0x0080, 0x4ceb: 0x0080, 0x4cec: 0x0080, 0x4ced: 0x0080, 0x4cee: 0x0080, + 0x4cf0: 0x0080, 0x4cf1: 0x0080, 0x4cf2: 0x0080, 0x4cf3: 0x0080, 0x4cf4: 0x0080, 0x4cf5: 0x0080, + 0x4cf6: 0x0080, 0x4cf7: 0x0080, 0x4cf8: 0x0080, 0x4cf9: 0x0080, 0x4cfa: 0x0080, 0x4cfb: 0x0080, + 0x4cfc: 0x0080, 0x4cfd: 0x0080, 0x4cfe: 0x0080, 0x4cff: 0x0080, // Block 0x134, offset 0x4d00 0x4d00: 0x0080, 0x4d01: 0x0080, 0x4d02: 0x0080, 0x4d03: 0x0080, 0x4d04: 0x0080, 0x4d05: 0x0080, 0x4d06: 0x0080, 0x4d07: 0x0080, 0x4d08: 0x0080, 0x4d09: 0x0080, 0x4d0a: 0x0080, 0x4d0b: 0x0080, 0x4d0c: 0x0080, 0x4d0d: 0x0080, 0x4d0e: 0x0080, 0x4d0f: 0x0080, 0x4d10: 0x0080, 0x4d11: 0x0080, - 0x4d12: 0x0080, 0x4d13: 0x0080, 0x4d14: 0x0080, + 0x4d12: 0x0080, 0x4d13: 0x0080, 0x4d14: 0x0080, 0x4d15: 0x0080, 0x4d16: 0x0080, 0x4d17: 0x0080, + 0x4d18: 0x0080, 0x4d19: 0x0080, 0x4d1a: 0x0080, 0x4d1b: 0x0080, 0x4d1c: 0x0080, 0x4d1d: 0x0080, + 0x4d1e: 0x0080, 0x4d1f: 0x0080, 0x4d20: 0x0080, 0x4d21: 0x0080, 0x4d22: 0x0080, 0x4d23: 0x0080, + 0x4d24: 0x0080, 0x4d25: 0x0080, 0x4d26: 0x0080, 0x4d27: 0x0080, 0x4d28: 0x0080, 0x4d29: 0x0080, + 0x4d2a: 0x0080, 0x4d2b: 0x0080, 0x4d2c: 0x0080, // Block 0x135, offset 0x4d40 - 0x4d40: 0x0080, 0x4d41: 0x0080, 0x4d42: 0x0080, 0x4d43: 0x0080, 0x4d44: 0x0080, 0x4d45: 0x0080, - 0x4d46: 0x0080, 0x4d47: 0x0080, 0x4d48: 0x0080, 0x4d49: 0x0080, 0x4d4a: 0x0080, 0x4d4b: 0x0080, - 0x4d50: 0x0080, 0x4d51: 0x0080, - 0x4d52: 0x0080, 0x4d53: 0x0080, 0x4d54: 0x0080, 0x4d55: 0x0080, 0x4d56: 0x0080, 0x4d57: 0x0080, - 0x4d58: 0x0080, 0x4d59: 0x0080, 0x4d5a: 0x0080, 0x4d5b: 0x0080, 0x4d5c: 0x0080, 0x4d5d: 0x0080, - 0x4d5e: 0x0080, 0x4d5f: 0x0080, 0x4d60: 0x0080, 0x4d61: 0x0080, 0x4d62: 0x0080, 0x4d63: 0x0080, - 0x4d64: 0x0080, 0x4d65: 0x0080, 0x4d66: 0x0080, 0x4d67: 0x0080, 0x4d68: 0x0080, 0x4d69: 0x0080, + 0x4d66: 0x0080, 0x4d67: 0x0080, 0x4d68: 0x0080, 0x4d69: 0x0080, 0x4d6a: 0x0080, 0x4d6b: 0x0080, 0x4d6c: 0x0080, 0x4d6d: 0x0080, 0x4d6e: 0x0080, 0x4d6f: 0x0080, 0x4d70: 0x0080, 0x4d71: 0x0080, 0x4d72: 0x0080, 0x4d73: 0x0080, 0x4d74: 0x0080, 0x4d75: 0x0080, 0x4d76: 0x0080, 0x4d77: 0x0080, 0x4d78: 0x0080, 0x4d79: 0x0080, 0x4d7a: 0x0080, 0x4d7b: 0x0080, 0x4d7c: 0x0080, 0x4d7d: 0x0080, 0x4d7e: 0x0080, 0x4d7f: 0x0080, // Block 0x136, offset 0x4d80 - 0x4d80: 0x0080, 0x4d81: 0x0080, 0x4d82: 0x0080, 0x4d83: 0x0080, 0x4d84: 0x0080, 0x4d85: 0x0080, - 0x4d86: 0x0080, 0x4d87: 0x0080, + 0x4d80: 0x008c, 0x4d81: 0x0080, 0x4d82: 0x0080, 0x4d90: 0x0080, 0x4d91: 0x0080, 0x4d92: 0x0080, 0x4d93: 0x0080, 0x4d94: 0x0080, 0x4d95: 0x0080, 0x4d96: 0x0080, 0x4d97: 0x0080, - 0x4d98: 0x0080, 0x4d99: 0x0080, - 0x4da0: 0x0080, 0x4da1: 0x0080, 0x4da2: 0x0080, 0x4da3: 0x0080, + 0x4d98: 0x0080, 0x4d99: 0x0080, 0x4d9a: 0x0080, 0x4d9b: 0x0080, 0x4d9c: 0x0080, 0x4d9d: 0x0080, + 0x4d9e: 0x0080, 0x4d9f: 0x0080, 0x4da0: 0x0080, 0x4da1: 0x0080, 0x4da2: 0x0080, 0x4da3: 0x0080, 0x4da4: 0x0080, 0x4da5: 0x0080, 0x4da6: 0x0080, 0x4da7: 0x0080, 0x4da8: 0x0080, 0x4da9: 0x0080, 0x4daa: 0x0080, 0x4dab: 0x0080, 0x4dac: 0x0080, 0x4dad: 0x0080, 0x4dae: 0x0080, 0x4daf: 0x0080, 0x4db0: 0x0080, 0x4db1: 0x0080, 0x4db2: 0x0080, 0x4db3: 0x0080, 0x4db4: 0x0080, 0x4db5: 0x0080, 0x4db6: 0x0080, 0x4db7: 0x0080, 0x4db8: 0x0080, 0x4db9: 0x0080, 0x4dba: 0x0080, 0x4dbb: 0x0080, - 0x4dbc: 0x0080, 0x4dbd: 0x0080, 0x4dbe: 0x0080, 0x4dbf: 0x0080, // Block 0x137, offset 0x4dc0 0x4dc0: 0x0080, 0x4dc1: 0x0080, 0x4dc2: 0x0080, 0x4dc3: 0x0080, 0x4dc4: 0x0080, 0x4dc5: 0x0080, - 0x4dc6: 0x0080, 0x4dc7: 0x0080, + 0x4dc6: 0x0080, 0x4dc7: 0x0080, 0x4dc8: 0x0080, 0x4dd0: 0x0080, 0x4dd1: 0x0080, - 0x4dd2: 0x0080, 0x4dd3: 0x0080, 0x4dd4: 0x0080, 0x4dd5: 0x0080, 0x4dd6: 0x0080, 0x4dd7: 0x0080, - 0x4dd8: 0x0080, 0x4dd9: 0x0080, 0x4dda: 0x0080, 0x4ddb: 0x0080, 0x4ddc: 0x0080, 0x4ddd: 0x0080, - 0x4dde: 0x0080, 0x4ddf: 0x0080, 0x4de0: 0x0080, 0x4de1: 0x0080, 0x4de2: 0x0080, 0x4de3: 0x0080, - 0x4de4: 0x0080, 0x4de5: 0x0080, 0x4de6: 0x0080, 0x4de7: 0x0080, 0x4de8: 0x0080, 0x4de9: 0x0080, - 0x4dea: 0x0080, 0x4deb: 0x0080, 0x4dec: 0x0080, 0x4ded: 0x0080, + 0x4de0: 0x0080, 0x4de1: 0x0080, 0x4de2: 0x0080, 0x4de3: 0x0080, + 0x4de4: 0x0080, 0x4de5: 0x0080, // Block 0x138, offset 0x4e00 - 0x4e10: 0x0080, 0x4e11: 0x0080, - 0x4e12: 0x0080, 0x4e13: 0x0080, 0x4e14: 0x0080, 0x4e15: 0x0080, 0x4e16: 0x0080, 0x4e17: 0x0080, - 0x4e18: 0x0080, 0x4e19: 0x0080, 0x4e1a: 0x0080, 0x4e1b: 0x0080, 0x4e1c: 0x0080, 0x4e1d: 0x0080, - 0x4e1e: 0x0080, 0x4e20: 0x0080, 0x4e21: 0x0080, 0x4e22: 0x0080, 0x4e23: 0x0080, - 0x4e24: 0x0080, 0x4e25: 0x0080, 0x4e26: 0x0080, 0x4e27: 0x0080, - 0x4e30: 0x0080, 0x4e33: 0x0080, 0x4e34: 0x0080, 0x4e35: 0x0080, - 0x4e36: 0x0080, 0x4e37: 0x0080, 0x4e38: 0x0080, 0x4e39: 0x0080, 0x4e3a: 0x0080, 0x4e3b: 0x0080, - 0x4e3c: 0x0080, 0x4e3d: 0x0080, 0x4e3e: 0x0080, + 0x4e00: 0x0080, 0x4e01: 0x0080, 0x4e02: 0x0080, 0x4e03: 0x0080, 0x4e04: 0x0080, 0x4e05: 0x0080, + 0x4e06: 0x0080, 0x4e07: 0x0080, 0x4e08: 0x0080, 0x4e09: 0x0080, 0x4e0a: 0x0080, 0x4e0b: 0x0080, + 0x4e0c: 0x0080, 0x4e0d: 0x0080, 0x4e0e: 0x0080, 0x4e0f: 0x0080, 0x4e10: 0x0080, 0x4e11: 0x0080, + 0x4e12: 0x0080, 0x4e13: 0x0080, 0x4e14: 0x0080, + 0x4e20: 0x0080, 0x4e21: 0x0080, 0x4e22: 0x0080, 0x4e23: 0x0080, + 0x4e24: 0x0080, 0x4e25: 0x0080, 0x4e26: 0x0080, 0x4e27: 0x0080, 0x4e28: 0x0080, 0x4e29: 0x0080, + 0x4e2a: 0x0080, 0x4e2b: 0x0080, 0x4e2c: 0x0080, + 0x4e30: 0x0080, 0x4e31: 0x0080, 0x4e32: 0x0080, 0x4e33: 0x0080, 0x4e34: 0x0080, 0x4e35: 0x0080, + 0x4e36: 0x0080, 0x4e37: 0x0080, 0x4e38: 0x0080, // Block 0x139, offset 0x4e40 0x4e40: 0x0080, 0x4e41: 0x0080, 0x4e42: 0x0080, 0x4e43: 0x0080, 0x4e44: 0x0080, 0x4e45: 0x0080, 0x4e46: 0x0080, 0x4e47: 0x0080, 0x4e48: 0x0080, 0x4e49: 0x0080, 0x4e4a: 0x0080, 0x4e4b: 0x0080, - 0x4e50: 0x0080, 0x4e51: 0x0080, + 0x4e4c: 0x0080, 0x4e4d: 0x0080, 0x4e4e: 0x0080, 0x4e4f: 0x0080, 0x4e50: 0x0080, 0x4e51: 0x0080, 0x4e52: 0x0080, 0x4e53: 0x0080, 0x4e54: 0x0080, 0x4e55: 0x0080, 0x4e56: 0x0080, 0x4e57: 0x0080, 0x4e58: 0x0080, 0x4e59: 0x0080, 0x4e5a: 0x0080, 0x4e5b: 0x0080, 0x4e5c: 0x0080, 0x4e5d: 0x0080, - 0x4e5e: 0x0080, + 0x4e5e: 0x0080, 0x4e5f: 0x0080, 0x4e60: 0x0080, 0x4e61: 0x0080, 0x4e62: 0x0080, 0x4e63: 0x0080, + 0x4e64: 0x0080, 0x4e65: 0x0080, 0x4e66: 0x0080, 0x4e67: 0x0080, 0x4e68: 0x0080, 0x4e69: 0x0080, + 0x4e6a: 0x0080, 0x4e6b: 0x0080, 0x4e6c: 0x0080, 0x4e6d: 0x0080, 0x4e6e: 0x0080, 0x4e6f: 0x0080, + 0x4e70: 0x0080, 0x4e71: 0x0080, 0x4e72: 0x0080, 0x4e73: 0x0080, // Block 0x13a, offset 0x4e80 0x4e80: 0x0080, 0x4e81: 0x0080, 0x4e82: 0x0080, 0x4e83: 0x0080, 0x4e84: 0x0080, 0x4e85: 0x0080, 0x4e86: 0x0080, 0x4e87: 0x0080, 0x4e88: 0x0080, 0x4e89: 0x0080, 0x4e8a: 0x0080, 0x4e8b: 0x0080, 0x4e8c: 0x0080, 0x4e8d: 0x0080, 0x4e8e: 0x0080, 0x4e8f: 0x0080, 0x4e90: 0x0080, 0x4e91: 0x0080, + 0x4e92: 0x0080, 0x4e93: 0x0080, 0x4e94: 0x0080, // Block 0x13b, offset 0x4ec0 - 0x4ec0: 0x0080, + 0x4ec0: 0x0080, 0x4ec1: 0x0080, 0x4ec2: 0x0080, 0x4ec3: 0x0080, 0x4ec4: 0x0080, 0x4ec5: 0x0080, + 0x4ec6: 0x0080, 0x4ec7: 0x0080, 0x4ec8: 0x0080, 0x4ec9: 0x0080, 0x4eca: 0x0080, 0x4ecb: 0x0080, + 0x4ed0: 0x0080, 0x4ed1: 0x0080, + 0x4ed2: 0x0080, 0x4ed3: 0x0080, 0x4ed4: 0x0080, 0x4ed5: 0x0080, 0x4ed6: 0x0080, 0x4ed7: 0x0080, + 0x4ed8: 0x0080, 0x4ed9: 0x0080, 0x4eda: 0x0080, 0x4edb: 0x0080, 0x4edc: 0x0080, 0x4edd: 0x0080, + 0x4ede: 0x0080, 0x4edf: 0x0080, 0x4ee0: 0x0080, 0x4ee1: 0x0080, 0x4ee2: 0x0080, 0x4ee3: 0x0080, + 0x4ee4: 0x0080, 0x4ee5: 0x0080, 0x4ee6: 0x0080, 0x4ee7: 0x0080, 0x4ee8: 0x0080, 0x4ee9: 0x0080, + 0x4eea: 0x0080, 0x4eeb: 0x0080, 0x4eec: 0x0080, 0x4eed: 0x0080, 0x4eee: 0x0080, 0x4eef: 0x0080, + 0x4ef0: 0x0080, 0x4ef1: 0x0080, 0x4ef2: 0x0080, 0x4ef3: 0x0080, 0x4ef4: 0x0080, 0x4ef5: 0x0080, + 0x4ef6: 0x0080, 0x4ef7: 0x0080, 0x4ef8: 0x0080, 0x4ef9: 0x0080, 0x4efa: 0x0080, 0x4efb: 0x0080, + 0x4efc: 0x0080, 0x4efd: 0x0080, 0x4efe: 0x0080, 0x4eff: 0x0080, // Block 0x13c, offset 0x4f00 - 0x4f00: 0x00cc, 0x4f01: 0x00cc, 0x4f02: 0x00cc, 0x4f03: 0x00cc, 0x4f04: 0x00cc, 0x4f05: 0x00cc, - 0x4f06: 0x00cc, 0x4f07: 0x00cc, 0x4f08: 0x00cc, 0x4f09: 0x00cc, 0x4f0a: 0x00cc, 0x4f0b: 0x00cc, - 0x4f0c: 0x00cc, 0x4f0d: 0x00cc, 0x4f0e: 0x00cc, 0x4f0f: 0x00cc, 0x4f10: 0x00cc, 0x4f11: 0x00cc, - 0x4f12: 0x00cc, 0x4f13: 0x00cc, 0x4f14: 0x00cc, 0x4f15: 0x00cc, 0x4f16: 0x00cc, + 0x4f00: 0x0080, 0x4f01: 0x0080, 0x4f02: 0x0080, 0x4f03: 0x0080, 0x4f04: 0x0080, 0x4f05: 0x0080, + 0x4f06: 0x0080, 0x4f07: 0x0080, + 0x4f10: 0x0080, 0x4f11: 0x0080, + 0x4f12: 0x0080, 0x4f13: 0x0080, 0x4f14: 0x0080, 0x4f15: 0x0080, 0x4f16: 0x0080, 0x4f17: 0x0080, + 0x4f18: 0x0080, 0x4f19: 0x0080, + 0x4f20: 0x0080, 0x4f21: 0x0080, 0x4f22: 0x0080, 0x4f23: 0x0080, + 0x4f24: 0x0080, 0x4f25: 0x0080, 0x4f26: 0x0080, 0x4f27: 0x0080, 0x4f28: 0x0080, 0x4f29: 0x0080, + 0x4f2a: 0x0080, 0x4f2b: 0x0080, 0x4f2c: 0x0080, 0x4f2d: 0x0080, 0x4f2e: 0x0080, 0x4f2f: 0x0080, + 0x4f30: 0x0080, 0x4f31: 0x0080, 0x4f32: 0x0080, 0x4f33: 0x0080, 0x4f34: 0x0080, 0x4f35: 0x0080, + 0x4f36: 0x0080, 0x4f37: 0x0080, 0x4f38: 0x0080, 0x4f39: 0x0080, 0x4f3a: 0x0080, 0x4f3b: 0x0080, + 0x4f3c: 0x0080, 0x4f3d: 0x0080, 0x4f3e: 0x0080, 0x4f3f: 0x0080, // Block 0x13d, offset 0x4f40 - 0x4f40: 0x00cc, 0x4f41: 0x00cc, 0x4f42: 0x00cc, 0x4f43: 0x00cc, 0x4f44: 0x00cc, 0x4f45: 0x00cc, - 0x4f46: 0x00cc, 0x4f47: 0x00cc, 0x4f48: 0x00cc, 0x4f49: 0x00cc, 0x4f4a: 0x00cc, 0x4f4b: 0x00cc, - 0x4f4c: 0x00cc, 0x4f4d: 0x00cc, 0x4f4e: 0x00cc, 0x4f4f: 0x00cc, 0x4f50: 0x00cc, 0x4f51: 0x00cc, - 0x4f52: 0x00cc, 0x4f53: 0x00cc, 0x4f54: 0x00cc, 0x4f55: 0x00cc, 0x4f56: 0x00cc, 0x4f57: 0x00cc, - 0x4f58: 0x00cc, 0x4f59: 0x00cc, 0x4f5a: 0x00cc, 0x4f5b: 0x00cc, 0x4f5c: 0x00cc, 0x4f5d: 0x00cc, - 0x4f5e: 0x00cc, 0x4f5f: 0x00cc, 0x4f60: 0x00cc, 0x4f61: 0x00cc, 0x4f62: 0x00cc, 0x4f63: 0x00cc, - 0x4f64: 0x00cc, 0x4f65: 0x00cc, 0x4f66: 0x00cc, 0x4f67: 0x00cc, 0x4f68: 0x00cc, 0x4f69: 0x00cc, - 0x4f6a: 0x00cc, 0x4f6b: 0x00cc, 0x4f6c: 0x00cc, 0x4f6d: 0x00cc, 0x4f6e: 0x00cc, 0x4f6f: 0x00cc, - 0x4f70: 0x00cc, 0x4f71: 0x00cc, 0x4f72: 0x00cc, 0x4f73: 0x00cc, 0x4f74: 0x00cc, + 0x4f40: 0x0080, 0x4f41: 0x0080, 0x4f42: 0x0080, 0x4f43: 0x0080, 0x4f44: 0x0080, 0x4f45: 0x0080, + 0x4f46: 0x0080, 0x4f47: 0x0080, + 0x4f50: 0x0080, 0x4f51: 0x0080, + 0x4f52: 0x0080, 0x4f53: 0x0080, 0x4f54: 0x0080, 0x4f55: 0x0080, 0x4f56: 0x0080, 0x4f57: 0x0080, + 0x4f58: 0x0080, 0x4f59: 0x0080, 0x4f5a: 0x0080, 0x4f5b: 0x0080, 0x4f5c: 0x0080, 0x4f5d: 0x0080, + 0x4f5e: 0x0080, 0x4f5f: 0x0080, 0x4f60: 0x0080, 0x4f61: 0x0080, 0x4f62: 0x0080, 0x4f63: 0x0080, + 0x4f64: 0x0080, 0x4f65: 0x0080, 0x4f66: 0x0080, 0x4f67: 0x0080, 0x4f68: 0x0080, 0x4f69: 0x0080, + 0x4f6a: 0x0080, 0x4f6b: 0x0080, 0x4f6c: 0x0080, 0x4f6d: 0x0080, // Block 0x13e, offset 0x4f80 - 0x4f80: 0x00cc, 0x4f81: 0x00cc, 0x4f82: 0x00cc, 0x4f83: 0x00cc, 0x4f84: 0x00cc, 0x4f85: 0x00cc, - 0x4f86: 0x00cc, 0x4f87: 0x00cc, 0x4f88: 0x00cc, 0x4f89: 0x00cc, 0x4f8a: 0x00cc, 0x4f8b: 0x00cc, - 0x4f8c: 0x00cc, 0x4f8d: 0x00cc, 0x4f8e: 0x00cc, 0x4f8f: 0x00cc, 0x4f90: 0x00cc, 0x4f91: 0x00cc, - 0x4f92: 0x00cc, 0x4f93: 0x00cc, 0x4f94: 0x00cc, 0x4f95: 0x00cc, 0x4f96: 0x00cc, 0x4f97: 0x00cc, - 0x4f98: 0x00cc, 0x4f99: 0x00cc, 0x4f9a: 0x00cc, 0x4f9b: 0x00cc, 0x4f9c: 0x00cc, 0x4f9d: 0x00cc, - 0x4fa0: 0x00cc, 0x4fa1: 0x00cc, 0x4fa2: 0x00cc, 0x4fa3: 0x00cc, - 0x4fa4: 0x00cc, 0x4fa5: 0x00cc, 0x4fa6: 0x00cc, 0x4fa7: 0x00cc, 0x4fa8: 0x00cc, 0x4fa9: 0x00cc, - 0x4faa: 0x00cc, 0x4fab: 0x00cc, 0x4fac: 0x00cc, 0x4fad: 0x00cc, 0x4fae: 0x00cc, 0x4faf: 0x00cc, - 0x4fb0: 0x00cc, 0x4fb1: 0x00cc, 0x4fb2: 0x00cc, 0x4fb3: 0x00cc, 0x4fb4: 0x00cc, 0x4fb5: 0x00cc, - 0x4fb6: 0x00cc, 0x4fb7: 0x00cc, 0x4fb8: 0x00cc, 0x4fb9: 0x00cc, 0x4fba: 0x00cc, 0x4fbb: 0x00cc, - 0x4fbc: 0x00cc, 0x4fbd: 0x00cc, 0x4fbe: 0x00cc, 0x4fbf: 0x00cc, + 0x4f80: 0x0080, 0x4f81: 0x0080, 0x4f82: 0x0080, 0x4f83: 0x0080, 0x4f84: 0x0080, 0x4f85: 0x0080, + 0x4f86: 0x0080, 0x4f87: 0x0080, 0x4f88: 0x0080, 0x4f89: 0x0080, 0x4f8a: 0x0080, 0x4f8b: 0x0080, + 0x4f90: 0x0080, 0x4f91: 0x0080, + 0x4f92: 0x0080, 0x4f93: 0x0080, 0x4f94: 0x0080, 0x4f95: 0x0080, 0x4f96: 0x0080, 0x4f97: 0x0080, + 0x4f98: 0x0080, 0x4f99: 0x0080, 0x4f9a: 0x0080, 0x4f9b: 0x0080, 0x4f9c: 0x0080, 0x4f9d: 0x0080, + 0x4f9e: 0x0080, 0x4f9f: 0x0080, 0x4fa0: 0x0080, 0x4fa1: 0x0080, 0x4fa2: 0x0080, 0x4fa3: 0x0080, + 0x4fa4: 0x0080, 0x4fa5: 0x0080, 0x4fa6: 0x0080, 0x4fa7: 0x0080, 0x4fa8: 0x0080, 0x4fa9: 0x0080, + 0x4faa: 0x0080, 0x4fab: 0x0080, 0x4fac: 0x0080, 0x4fad: 0x0080, 0x4fae: 0x0080, 0x4faf: 0x0080, + 0x4fb0: 0x0080, 0x4fb1: 0x0080, 0x4fb2: 0x0080, 0x4fb3: 0x0080, 0x4fb4: 0x0080, 0x4fb5: 0x0080, + 0x4fb6: 0x0080, 0x4fb7: 0x0080, 0x4fb8: 0x0080, 0x4fb9: 0x0080, 0x4fba: 0x0080, 0x4fbb: 0x0080, + 0x4fbc: 0x0080, 0x4fbd: 0x0080, 0x4fbe: 0x0080, // Block 0x13f, offset 0x4fc0 - 0x4fc0: 0x00cc, 0x4fc1: 0x00cc, 0x4fc2: 0x00cc, 0x4fc3: 0x00cc, 0x4fc4: 0x00cc, 0x4fc5: 0x00cc, - 0x4fc6: 0x00cc, 0x4fc7: 0x00cc, 0x4fc8: 0x00cc, 0x4fc9: 0x00cc, 0x4fca: 0x00cc, 0x4fcb: 0x00cc, - 0x4fcc: 0x00cc, 0x4fcd: 0x00cc, 0x4fce: 0x00cc, 0x4fcf: 0x00cc, 0x4fd0: 0x00cc, 0x4fd1: 0x00cc, - 0x4fd2: 0x00cc, 0x4fd3: 0x00cc, 0x4fd4: 0x00cc, 0x4fd5: 0x00cc, 0x4fd6: 0x00cc, 0x4fd7: 0x00cc, - 0x4fd8: 0x00cc, 0x4fd9: 0x00cc, 0x4fda: 0x00cc, 0x4fdb: 0x00cc, 0x4fdc: 0x00cc, 0x4fdd: 0x00cc, - 0x4fde: 0x00cc, 0x4fdf: 0x00cc, 0x4fe0: 0x00cc, 0x4fe1: 0x00cc, + 0x4fc0: 0x0080, 0x4fc1: 0x0080, 0x4fc2: 0x0080, 0x4fc3: 0x0080, 0x4fc4: 0x0080, 0x4fc5: 0x0080, + 0x4fc6: 0x0080, 0x4fc7: 0x0080, 0x4fc8: 0x0080, 0x4fc9: 0x0080, 0x4fca: 0x0080, 0x4fcb: 0x0080, + 0x4fcc: 0x0080, 0x4fd0: 0x0080, 0x4fd1: 0x0080, + 0x4fd2: 0x0080, 0x4fd3: 0x0080, 0x4fd4: 0x0080, 0x4fd5: 0x0080, 0x4fd6: 0x0080, 0x4fd7: 0x0080, + 0x4fd8: 0x0080, 0x4fd9: 0x0080, 0x4fda: 0x0080, 0x4fdb: 0x0080, 0x4fdc: 0x0080, 0x4fdd: 0x0080, + 0x4fde: 0x0080, 0x4fdf: 0x0080, 0x4fe0: 0x0080, 0x4fe1: 0x0080, 0x4fe2: 0x0080, 0x4fe3: 0x0080, + 0x4fe4: 0x0080, 0x4fe5: 0x0080, 0x4fe6: 0x0080, 0x4fe7: 0x0080, 0x4fe8: 0x0080, 0x4fe9: 0x0080, + 0x4fea: 0x0080, 0x4feb: 0x0080, // Block 0x140, offset 0x5000 - 0x5000: 0x008c, 0x5001: 0x008c, 0x5002: 0x008c, 0x5003: 0x008c, 0x5004: 0x008c, 0x5005: 0x008c, - 0x5006: 0x008c, 0x5007: 0x008c, 0x5008: 0x008c, 0x5009: 0x008c, 0x500a: 0x008c, 0x500b: 0x008c, - 0x500c: 0x008c, 0x500d: 0x008c, 0x500e: 0x008c, 0x500f: 0x008c, 0x5010: 0x008c, 0x5011: 0x008c, - 0x5012: 0x008c, 0x5013: 0x008c, 0x5014: 0x008c, 0x5015: 0x008c, 0x5016: 0x008c, 0x5017: 0x008c, - 0x5018: 0x008c, 0x5019: 0x008c, 0x501a: 0x008c, 0x501b: 0x008c, 0x501c: 0x008c, 0x501d: 0x008c, + 0x5000: 0x0080, 0x5001: 0x0080, 0x5002: 0x0080, 0x5003: 0x0080, 0x5004: 0x0080, 0x5005: 0x0080, + 0x5006: 0x0080, 0x5007: 0x0080, 0x5008: 0x0080, 0x5009: 0x0080, 0x500a: 0x0080, 0x500b: 0x0080, + 0x500c: 0x0080, 0x500d: 0x0080, 0x500e: 0x0080, 0x500f: 0x0080, 0x5010: 0x0080, 0x5011: 0x0080, + 0x5012: 0x0080, 0x5013: 0x0080, 0x5014: 0x0080, 0x5015: 0x0080, 0x5016: 0x0080, 0x5017: 0x0080, // Block 0x141, offset 0x5040 - 0x5041: 0x0040, - 0x5060: 0x0040, 0x5061: 0x0040, 0x5062: 0x0040, 0x5063: 0x0040, - 0x5064: 0x0040, 0x5065: 0x0040, 0x5066: 0x0040, 0x5067: 0x0040, 0x5068: 0x0040, 0x5069: 0x0040, - 0x506a: 0x0040, 0x506b: 0x0040, 0x506c: 0x0040, 0x506d: 0x0040, 0x506e: 0x0040, 0x506f: 0x0040, - 0x5070: 0x0040, 0x5071: 0x0040, 0x5072: 0x0040, 0x5073: 0x0040, 0x5074: 0x0040, 0x5075: 0x0040, - 0x5076: 0x0040, 0x5077: 0x0040, 0x5078: 0x0040, 0x5079: 0x0040, 0x507a: 0x0040, 0x507b: 0x0040, - 0x507c: 0x0040, 0x507d: 0x0040, 0x507e: 0x0040, 0x507f: 0x0040, + 0x5040: 0x0080, + 0x5050: 0x0080, 0x5051: 0x0080, + 0x5052: 0x0080, 0x5053: 0x0080, 0x5054: 0x0080, 0x5055: 0x0080, 0x5056: 0x0080, 0x5057: 0x0080, + 0x5058: 0x0080, 0x5059: 0x0080, 0x505a: 0x0080, 0x505b: 0x0080, 0x505c: 0x0080, 0x505d: 0x0080, + 0x505e: 0x0080, 0x505f: 0x0080, 0x5060: 0x0080, 0x5061: 0x0080, 0x5062: 0x0080, 0x5063: 0x0080, + 0x5064: 0x0080, 0x5065: 0x0080, 0x5066: 0x0080, // Block 0x142, offset 0x5080 - 0x5080: 0x0040, 0x5081: 0x0040, 0x5082: 0x0040, 0x5083: 0x0040, 0x5084: 0x0040, 0x5085: 0x0040, - 0x5086: 0x0040, 0x5087: 0x0040, 0x5088: 0x0040, 0x5089: 0x0040, 0x508a: 0x0040, 0x508b: 0x0040, - 0x508c: 0x0040, 0x508d: 0x0040, 0x508e: 0x0040, 0x508f: 0x0040, 0x5090: 0x0040, 0x5091: 0x0040, - 0x5092: 0x0040, 0x5093: 0x0040, 0x5094: 0x0040, 0x5095: 0x0040, 0x5096: 0x0040, 0x5097: 0x0040, - 0x5098: 0x0040, 0x5099: 0x0040, 0x509a: 0x0040, 0x509b: 0x0040, 0x509c: 0x0040, 0x509d: 0x0040, - 0x509e: 0x0040, 0x509f: 0x0040, 0x50a0: 0x0040, 0x50a1: 0x0040, 0x50a2: 0x0040, 0x50a3: 0x0040, - 0x50a4: 0x0040, 0x50a5: 0x0040, 0x50a6: 0x0040, 0x50a7: 0x0040, 0x50a8: 0x0040, 0x50a9: 0x0040, - 0x50aa: 0x0040, 0x50ab: 0x0040, 0x50ac: 0x0040, 0x50ad: 0x0040, 0x50ae: 0x0040, 0x50af: 0x0040, + 0x5080: 0x00cc, 0x5081: 0x00cc, 0x5082: 0x00cc, 0x5083: 0x00cc, 0x5084: 0x00cc, 0x5085: 0x00cc, + 0x5086: 0x00cc, 0x5087: 0x00cc, 0x5088: 0x00cc, 0x5089: 0x00cc, 0x508a: 0x00cc, 0x508b: 0x00cc, + 0x508c: 0x00cc, 0x508d: 0x00cc, 0x508e: 0x00cc, 0x508f: 0x00cc, 0x5090: 0x00cc, 0x5091: 0x00cc, + 0x5092: 0x00cc, 0x5093: 0x00cc, 0x5094: 0x00cc, 0x5095: 0x00cc, 0x5096: 0x00cc, // Block 0x143, offset 0x50c0 - 0x50c0: 0x0040, 0x50c1: 0x0040, 0x50c2: 0x0040, 0x50c3: 0x0040, 0x50c4: 0x0040, 0x50c5: 0x0040, - 0x50c6: 0x0040, 0x50c7: 0x0040, 0x50c8: 0x0040, 0x50c9: 0x0040, 0x50ca: 0x0040, 0x50cb: 0x0040, - 0x50cc: 0x0040, 0x50cd: 0x0040, 0x50ce: 0x0040, 0x50cf: 0x0040, 0x50d0: 0x0040, 0x50d1: 0x0040, - 0x50d2: 0x0040, 0x50d3: 0x0040, 0x50d4: 0x0040, 0x50d5: 0x0040, 0x50d6: 0x0040, 0x50d7: 0x0040, - 0x50d8: 0x0040, 0x50d9: 0x0040, 0x50da: 0x0040, 0x50db: 0x0040, 0x50dc: 0x0040, 0x50dd: 0x0040, - 0x50de: 0x0040, 0x50df: 0x0040, 0x50e0: 0x0040, 0x50e1: 0x0040, 0x50e2: 0x0040, 0x50e3: 0x0040, - 0x50e4: 0x0040, 0x50e5: 0x0040, 0x50e6: 0x0040, 0x50e7: 0x0040, 0x50e8: 0x0040, 0x50e9: 0x0040, - 0x50ea: 0x0040, 0x50eb: 0x0040, 0x50ec: 0x0040, 0x50ed: 0x0040, 0x50ee: 0x0040, 0x50ef: 0x0040, - 0x50f0: 0x0040, 0x50f1: 0x0040, 0x50f2: 0x0040, 0x50f3: 0x0040, 0x50f4: 0x0040, 0x50f5: 0x0040, - 0x50f6: 0x0040, 0x50f7: 0x0040, 0x50f8: 0x0040, 0x50f9: 0x0040, 0x50fa: 0x0040, 0x50fb: 0x0040, - 0x50fc: 0x0040, 0x50fd: 0x0040, + 0x50c0: 0x00cc, 0x50c1: 0x00cc, 0x50c2: 0x00cc, 0x50c3: 0x00cc, 0x50c4: 0x00cc, 0x50c5: 0x00cc, + 0x50c6: 0x00cc, 0x50c7: 0x00cc, 0x50c8: 0x00cc, 0x50c9: 0x00cc, 0x50ca: 0x00cc, 0x50cb: 0x00cc, + 0x50cc: 0x00cc, 0x50cd: 0x00cc, 0x50ce: 0x00cc, 0x50cf: 0x00cc, 0x50d0: 0x00cc, 0x50d1: 0x00cc, + 0x50d2: 0x00cc, 0x50d3: 0x00cc, 0x50d4: 0x00cc, 0x50d5: 0x00cc, 0x50d6: 0x00cc, 0x50d7: 0x00cc, + 0x50d8: 0x00cc, 0x50d9: 0x00cc, 0x50da: 0x00cc, 0x50db: 0x00cc, 0x50dc: 0x00cc, 0x50dd: 0x00cc, + 0x50de: 0x00cc, 0x50df: 0x00cc, 0x50e0: 0x00cc, 0x50e1: 0x00cc, 0x50e2: 0x00cc, 0x50e3: 0x00cc, + 0x50e4: 0x00cc, 0x50e5: 0x00cc, 0x50e6: 0x00cc, 0x50e7: 0x00cc, 0x50e8: 0x00cc, 0x50e9: 0x00cc, + 0x50ea: 0x00cc, 0x50eb: 0x00cc, 0x50ec: 0x00cc, 0x50ed: 0x00cc, 0x50ee: 0x00cc, 0x50ef: 0x00cc, + 0x50f0: 0x00cc, 0x50f1: 0x00cc, 0x50f2: 0x00cc, 0x50f3: 0x00cc, 0x50f4: 0x00cc, + // Block 0x144, offset 0x5100 + 0x5100: 0x00cc, 0x5101: 0x00cc, 0x5102: 0x00cc, 0x5103: 0x00cc, 0x5104: 0x00cc, 0x5105: 0x00cc, + 0x5106: 0x00cc, 0x5107: 0x00cc, 0x5108: 0x00cc, 0x5109: 0x00cc, 0x510a: 0x00cc, 0x510b: 0x00cc, + 0x510c: 0x00cc, 0x510d: 0x00cc, 0x510e: 0x00cc, 0x510f: 0x00cc, 0x5110: 0x00cc, 0x5111: 0x00cc, + 0x5112: 0x00cc, 0x5113: 0x00cc, 0x5114: 0x00cc, 0x5115: 0x00cc, 0x5116: 0x00cc, 0x5117: 0x00cc, + 0x5118: 0x00cc, 0x5119: 0x00cc, 0x511a: 0x00cc, 0x511b: 0x00cc, 0x511c: 0x00cc, 0x511d: 0x00cc, + 0x5120: 0x00cc, 0x5121: 0x00cc, 0x5122: 0x00cc, 0x5123: 0x00cc, + 0x5124: 0x00cc, 0x5125: 0x00cc, 0x5126: 0x00cc, 0x5127: 0x00cc, 0x5128: 0x00cc, 0x5129: 0x00cc, + 0x512a: 0x00cc, 0x512b: 0x00cc, 0x512c: 0x00cc, 0x512d: 0x00cc, 0x512e: 0x00cc, 0x512f: 0x00cc, + 0x5130: 0x00cc, 0x5131: 0x00cc, 0x5132: 0x00cc, 0x5133: 0x00cc, 0x5134: 0x00cc, 0x5135: 0x00cc, + 0x5136: 0x00cc, 0x5137: 0x00cc, 0x5138: 0x00cc, 0x5139: 0x00cc, 0x513a: 0x00cc, 0x513b: 0x00cc, + 0x513c: 0x00cc, 0x513d: 0x00cc, 0x513e: 0x00cc, 0x513f: 0x00cc, + // Block 0x145, offset 0x5140 + 0x5140: 0x00cc, 0x5141: 0x00cc, 0x5142: 0x00cc, 0x5143: 0x00cc, 0x5144: 0x00cc, 0x5145: 0x00cc, + 0x5146: 0x00cc, 0x5147: 0x00cc, 0x5148: 0x00cc, 0x5149: 0x00cc, 0x514a: 0x00cc, 0x514b: 0x00cc, + 0x514c: 0x00cc, 0x514d: 0x00cc, 0x514e: 0x00cc, 0x514f: 0x00cc, 0x5150: 0x00cc, 0x5151: 0x00cc, + 0x5152: 0x00cc, 0x5153: 0x00cc, 0x5154: 0x00cc, 0x5155: 0x00cc, 0x5156: 0x00cc, 0x5157: 0x00cc, + 0x5158: 0x00cc, 0x5159: 0x00cc, 0x515a: 0x00cc, 0x515b: 0x00cc, 0x515c: 0x00cc, 0x515d: 0x00cc, + 0x515e: 0x00cc, 0x515f: 0x00cc, 0x5160: 0x00cc, 0x5161: 0x00cc, + 0x5170: 0x00cc, 0x5171: 0x00cc, 0x5172: 0x00cc, 0x5173: 0x00cc, 0x5174: 0x00cc, 0x5175: 0x00cc, + 0x5176: 0x00cc, 0x5177: 0x00cc, 0x5178: 0x00cc, 0x5179: 0x00cc, 0x517a: 0x00cc, 0x517b: 0x00cc, + 0x517c: 0x00cc, 0x517d: 0x00cc, 0x517e: 0x00cc, 0x517f: 0x00cc, + // Block 0x146, offset 0x5180 + 0x5180: 0x00cc, 0x5181: 0x00cc, 0x5182: 0x00cc, 0x5183: 0x00cc, 0x5184: 0x00cc, 0x5185: 0x00cc, + 0x5186: 0x00cc, 0x5187: 0x00cc, 0x5188: 0x00cc, 0x5189: 0x00cc, 0x518a: 0x00cc, 0x518b: 0x00cc, + 0x518c: 0x00cc, 0x518d: 0x00cc, 0x518e: 0x00cc, 0x518f: 0x00cc, 0x5190: 0x00cc, 0x5191: 0x00cc, + 0x5192: 0x00cc, 0x5193: 0x00cc, 0x5194: 0x00cc, 0x5195: 0x00cc, 0x5196: 0x00cc, 0x5197: 0x00cc, + 0x5198: 0x00cc, 0x5199: 0x00cc, 0x519a: 0x00cc, 0x519b: 0x00cc, 0x519c: 0x00cc, 0x519d: 0x00cc, + 0x519e: 0x00cc, 0x519f: 0x00cc, 0x51a0: 0x00cc, + // Block 0x147, offset 0x51c0 + 0x51c0: 0x008c, 0x51c1: 0x008c, 0x51c2: 0x008c, 0x51c3: 0x008c, 0x51c4: 0x008c, 0x51c5: 0x008c, + 0x51c6: 0x008c, 0x51c7: 0x008c, 0x51c8: 0x008c, 0x51c9: 0x008c, 0x51ca: 0x008c, 0x51cb: 0x008c, + 0x51cc: 0x008c, 0x51cd: 0x008c, 0x51ce: 0x008c, 0x51cf: 0x008c, 0x51d0: 0x008c, 0x51d1: 0x008c, + 0x51d2: 0x008c, 0x51d3: 0x008c, 0x51d4: 0x008c, 0x51d5: 0x008c, 0x51d6: 0x008c, 0x51d7: 0x008c, + 0x51d8: 0x008c, 0x51d9: 0x008c, 0x51da: 0x008c, 0x51db: 0x008c, 0x51dc: 0x008c, 0x51dd: 0x008c, + // Block 0x148, offset 0x5200 + 0x5201: 0x0040, + 0x5220: 0x0040, 0x5221: 0x0040, 0x5222: 0x0040, 0x5223: 0x0040, + 0x5224: 0x0040, 0x5225: 0x0040, 0x5226: 0x0040, 0x5227: 0x0040, 0x5228: 0x0040, 0x5229: 0x0040, + 0x522a: 0x0040, 0x522b: 0x0040, 0x522c: 0x0040, 0x522d: 0x0040, 0x522e: 0x0040, 0x522f: 0x0040, + 0x5230: 0x0040, 0x5231: 0x0040, 0x5232: 0x0040, 0x5233: 0x0040, 0x5234: 0x0040, 0x5235: 0x0040, + 0x5236: 0x0040, 0x5237: 0x0040, 0x5238: 0x0040, 0x5239: 0x0040, 0x523a: 0x0040, 0x523b: 0x0040, + 0x523c: 0x0040, 0x523d: 0x0040, 0x523e: 0x0040, 0x523f: 0x0040, + // Block 0x149, offset 0x5240 + 0x5240: 0x0040, 0x5241: 0x0040, 0x5242: 0x0040, 0x5243: 0x0040, 0x5244: 0x0040, 0x5245: 0x0040, + 0x5246: 0x0040, 0x5247: 0x0040, 0x5248: 0x0040, 0x5249: 0x0040, 0x524a: 0x0040, 0x524b: 0x0040, + 0x524c: 0x0040, 0x524d: 0x0040, 0x524e: 0x0040, 0x524f: 0x0040, 0x5250: 0x0040, 0x5251: 0x0040, + 0x5252: 0x0040, 0x5253: 0x0040, 0x5254: 0x0040, 0x5255: 0x0040, 0x5256: 0x0040, 0x5257: 0x0040, + 0x5258: 0x0040, 0x5259: 0x0040, 0x525a: 0x0040, 0x525b: 0x0040, 0x525c: 0x0040, 0x525d: 0x0040, + 0x525e: 0x0040, 0x525f: 0x0040, 0x5260: 0x0040, 0x5261: 0x0040, 0x5262: 0x0040, 0x5263: 0x0040, + 0x5264: 0x0040, 0x5265: 0x0040, 0x5266: 0x0040, 0x5267: 0x0040, 0x5268: 0x0040, 0x5269: 0x0040, + 0x526a: 0x0040, 0x526b: 0x0040, 0x526c: 0x0040, 0x526d: 0x0040, 0x526e: 0x0040, 0x526f: 0x0040, + // Block 0x14a, offset 0x5280 + 0x5280: 0x0040, 0x5281: 0x0040, 0x5282: 0x0040, 0x5283: 0x0040, 0x5284: 0x0040, 0x5285: 0x0040, + 0x5286: 0x0040, 0x5287: 0x0040, 0x5288: 0x0040, 0x5289: 0x0040, 0x528a: 0x0040, 0x528b: 0x0040, + 0x528c: 0x0040, 0x528d: 0x0040, 0x528e: 0x0040, 0x528f: 0x0040, 0x5290: 0x0040, 0x5291: 0x0040, + 0x5292: 0x0040, 0x5293: 0x0040, 0x5294: 0x0040, 0x5295: 0x0040, 0x5296: 0x0040, 0x5297: 0x0040, + 0x5298: 0x0040, 0x5299: 0x0040, 0x529a: 0x0040, 0x529b: 0x0040, 0x529c: 0x0040, 0x529d: 0x0040, + 0x529e: 0x0040, 0x529f: 0x0040, 0x52a0: 0x0040, 0x52a1: 0x0040, 0x52a2: 0x0040, 0x52a3: 0x0040, + 0x52a4: 0x0040, 0x52a5: 0x0040, 0x52a6: 0x0040, 0x52a7: 0x0040, 0x52a8: 0x0040, 0x52a9: 0x0040, + 0x52aa: 0x0040, 0x52ab: 0x0040, 0x52ac: 0x0040, 0x52ad: 0x0040, 0x52ae: 0x0040, 0x52af: 0x0040, + 0x52b0: 0x0040, 0x52b1: 0x0040, 0x52b2: 0x0040, 0x52b3: 0x0040, 0x52b4: 0x0040, 0x52b5: 0x0040, + 0x52b6: 0x0040, 0x52b7: 0x0040, 0x52b8: 0x0040, 0x52b9: 0x0040, 0x52ba: 0x0040, 0x52bb: 0x0040, + 0x52bc: 0x0040, 0x52bd: 0x0040, } -// derivedPropertiesIndex: 36 blocks, 2304 entries, 4608 bytes +// derivedPropertiesIndex: 37 blocks, 2368 entries, 4736 bytes // Block 0 is the zero block. -var derivedPropertiesIndex = [2304]uint16{ +var derivedPropertiesIndex = [2368]uint16{ // Block 0x0, offset 0x0 // Block 0x1, offset 0x40 // Block 0x2, offset 0x80 @@ -3570,7 +3661,7 @@ var derivedPropertiesIndex = [2304]uint16{ 0xd8: 0x12, 0xd9: 0x13, 0xda: 0x14, 0xdb: 0x15, 0xdc: 0x16, 0xdd: 0x17, 0xde: 0x18, 0xdf: 0x19, 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x0a, 0xec: 0x0a, 0xed: 0x0b, 0xee: 0x0c, 0xef: 0x0d, - 0xf0: 0x1d, 0xf3: 0x20, 0xf4: 0x21, + 0xf0: 0x1e, 0xf3: 0x21, 0xf4: 0x22, // Block 0x4, offset 0x100 0x120: 0x1a, 0x121: 0x1b, 0x122: 0x1c, 0x123: 0x1d, 0x124: 0x1e, 0x125: 0x1f, 0x126: 0x20, 0x127: 0x21, 0x128: 0x22, 0x129: 0x23, 0x12a: 0x24, 0x12b: 0x25, 0x12c: 0x26, 0x12d: 0x27, 0x12e: 0x28, 0x12f: 0x29, @@ -3587,56 +3678,56 @@ var derivedPropertiesIndex = [2304]uint16{ 0x178: 0x05, 0x179: 0x05, 0x17a: 0x65, 0x17b: 0x05, 0x17c: 0x66, 0x17d: 0x67, 0x17e: 0x68, 0x17f: 0x69, // Block 0x6, offset 0x180 0x180: 0x6a, 0x181: 0x6b, 0x182: 0x6c, 0x183: 0x6d, 0x184: 0x6e, 0x185: 0x6f, 0x186: 0x70, 0x187: 0x71, - 0x188: 0x71, 0x189: 0x71, 0x18a: 0x71, 0x18b: 0x71, 0x18c: 0x71, 0x18d: 0x71, 0x18e: 0x71, 0x18f: 0x72, - 0x190: 0x73, 0x191: 0x74, 0x192: 0x71, 0x193: 0x71, 0x194: 0x71, 0x195: 0x71, 0x196: 0x71, 0x197: 0x71, + 0x188: 0x71, 0x189: 0x71, 0x18a: 0x71, 0x18b: 0x71, 0x18c: 0x71, 0x18d: 0x71, 0x18e: 0x71, 0x18f: 0x71, + 0x190: 0x72, 0x191: 0x73, 0x192: 0x71, 0x193: 0x71, 0x194: 0x71, 0x195: 0x71, 0x196: 0x71, 0x197: 0x71, 0x198: 0x71, 0x199: 0x71, 0x19a: 0x71, 0x19b: 0x71, 0x19c: 0x71, 0x19d: 0x71, 0x19e: 0x71, 0x19f: 0x71, 0x1a0: 0x71, 0x1a1: 0x71, 0x1a2: 0x71, 0x1a3: 0x71, 0x1a4: 0x71, 0x1a5: 0x71, 0x1a6: 0x71, 0x1a7: 0x71, - 0x1a8: 0x71, 0x1a9: 0x71, 0x1aa: 0x71, 0x1ab: 0x71, 0x1ac: 0x71, 0x1ad: 0x75, 0x1ae: 0x76, 0x1af: 0x77, - 0x1b0: 0x78, 0x1b1: 0x79, 0x1b2: 0x05, 0x1b3: 0x7a, 0x1b4: 0x7b, 0x1b5: 0x7c, 0x1b6: 0x7d, 0x1b7: 0x7e, - 0x1b8: 0x7f, 0x1b9: 0x80, 0x1ba: 0x81, 0x1bb: 0x82, 0x1bc: 0x83, 0x1bd: 0x83, 0x1be: 0x83, 0x1bf: 0x84, + 0x1a8: 0x71, 0x1a9: 0x71, 0x1aa: 0x71, 0x1ab: 0x71, 0x1ac: 0x71, 0x1ad: 0x74, 0x1ae: 0x75, 0x1af: 0x76, + 0x1b0: 0x77, 0x1b1: 0x78, 0x1b2: 0x05, 0x1b3: 0x79, 0x1b4: 0x7a, 0x1b5: 0x7b, 0x1b6: 0x7c, 0x1b7: 0x7d, + 0x1b8: 0x7e, 0x1b9: 0x7f, 0x1ba: 0x80, 0x1bb: 0x81, 0x1bc: 0x82, 0x1bd: 0x82, 0x1be: 0x82, 0x1bf: 0x83, // Block 0x7, offset 0x1c0 - 0x1c0: 0x85, 0x1c1: 0x86, 0x1c2: 0x87, 0x1c3: 0x88, 0x1c4: 0x89, 0x1c5: 0x8a, 0x1c6: 0x8b, 0x1c7: 0x8c, - 0x1c8: 0x8d, 0x1c9: 0x71, 0x1ca: 0x71, 0x1cb: 0x8e, 0x1cc: 0x83, 0x1cd: 0x8f, 0x1ce: 0x71, 0x1cf: 0x71, - 0x1d0: 0x90, 0x1d1: 0x90, 0x1d2: 0x90, 0x1d3: 0x90, 0x1d4: 0x90, 0x1d5: 0x90, 0x1d6: 0x90, 0x1d7: 0x90, - 0x1d8: 0x90, 0x1d9: 0x90, 0x1da: 0x90, 0x1db: 0x90, 0x1dc: 0x90, 0x1dd: 0x90, 0x1de: 0x90, 0x1df: 0x90, - 0x1e0: 0x90, 0x1e1: 0x90, 0x1e2: 0x90, 0x1e3: 0x90, 0x1e4: 0x90, 0x1e5: 0x90, 0x1e6: 0x90, 0x1e7: 0x90, - 0x1e8: 0x90, 0x1e9: 0x90, 0x1ea: 0x90, 0x1eb: 0x90, 0x1ec: 0x90, 0x1ed: 0x90, 0x1ee: 0x90, 0x1ef: 0x90, - 0x1f0: 0x90, 0x1f1: 0x90, 0x1f2: 0x90, 0x1f3: 0x90, 0x1f4: 0x90, 0x1f5: 0x90, 0x1f6: 0x90, 0x1f7: 0x90, - 0x1f8: 0x90, 0x1f9: 0x90, 0x1fa: 0x90, 0x1fb: 0x90, 0x1fc: 0x90, 0x1fd: 0x90, 0x1fe: 0x90, 0x1ff: 0x90, + 0x1c0: 0x84, 0x1c1: 0x85, 0x1c2: 0x86, 0x1c3: 0x87, 0x1c4: 0x88, 0x1c5: 0x89, 0x1c6: 0x8a, 0x1c7: 0x8b, + 0x1c8: 0x8c, 0x1c9: 0x71, 0x1ca: 0x71, 0x1cb: 0x8d, 0x1cc: 0x82, 0x1cd: 0x8e, 0x1ce: 0x71, 0x1cf: 0x71, + 0x1d0: 0x8f, 0x1d1: 0x8f, 0x1d2: 0x8f, 0x1d3: 0x8f, 0x1d4: 0x8f, 0x1d5: 0x8f, 0x1d6: 0x8f, 0x1d7: 0x8f, + 0x1d8: 0x8f, 0x1d9: 0x8f, 0x1da: 0x8f, 0x1db: 0x8f, 0x1dc: 0x8f, 0x1dd: 0x8f, 0x1de: 0x8f, 0x1df: 0x8f, + 0x1e0: 0x8f, 0x1e1: 0x8f, 0x1e2: 0x8f, 0x1e3: 0x8f, 0x1e4: 0x8f, 0x1e5: 0x8f, 0x1e6: 0x8f, 0x1e7: 0x8f, + 0x1e8: 0x8f, 0x1e9: 0x8f, 0x1ea: 0x8f, 0x1eb: 0x8f, 0x1ec: 0x8f, 0x1ed: 0x8f, 0x1ee: 0x8f, 0x1ef: 0x8f, + 0x1f0: 0x8f, 0x1f1: 0x8f, 0x1f2: 0x8f, 0x1f3: 0x8f, 0x1f4: 0x8f, 0x1f5: 0x8f, 0x1f6: 0x8f, 0x1f7: 0x8f, + 0x1f8: 0x8f, 0x1f9: 0x8f, 0x1fa: 0x8f, 0x1fb: 0x8f, 0x1fc: 0x8f, 0x1fd: 0x8f, 0x1fe: 0x8f, 0x1ff: 0x8f, // Block 0x8, offset 0x200 - 0x200: 0x90, 0x201: 0x90, 0x202: 0x90, 0x203: 0x90, 0x204: 0x90, 0x205: 0x90, 0x206: 0x90, 0x207: 0x90, - 0x208: 0x90, 0x209: 0x90, 0x20a: 0x90, 0x20b: 0x90, 0x20c: 0x90, 0x20d: 0x90, 0x20e: 0x90, 0x20f: 0x90, - 0x210: 0x90, 0x211: 0x90, 0x212: 0x90, 0x213: 0x90, 0x214: 0x90, 0x215: 0x90, 0x216: 0x90, 0x217: 0x90, - 0x218: 0x90, 0x219: 0x90, 0x21a: 0x90, 0x21b: 0x90, 0x21c: 0x90, 0x21d: 0x90, 0x21e: 0x90, 0x21f: 0x90, - 0x220: 0x90, 0x221: 0x90, 0x222: 0x90, 0x223: 0x90, 0x224: 0x90, 0x225: 0x90, 0x226: 0x90, 0x227: 0x90, - 0x228: 0x90, 0x229: 0x90, 0x22a: 0x90, 0x22b: 0x90, 0x22c: 0x90, 0x22d: 0x90, 0x22e: 0x90, 0x22f: 0x90, - 0x230: 0x90, 0x231: 0x90, 0x232: 0x90, 0x233: 0x90, 0x234: 0x90, 0x235: 0x90, 0x236: 0x91, 0x237: 0x71, - 0x238: 0x90, 0x239: 0x90, 0x23a: 0x90, 0x23b: 0x90, 0x23c: 0x90, 0x23d: 0x90, 0x23e: 0x90, 0x23f: 0x90, + 0x200: 0x8f, 0x201: 0x8f, 0x202: 0x8f, 0x203: 0x8f, 0x204: 0x8f, 0x205: 0x8f, 0x206: 0x8f, 0x207: 0x8f, + 0x208: 0x8f, 0x209: 0x8f, 0x20a: 0x8f, 0x20b: 0x8f, 0x20c: 0x8f, 0x20d: 0x8f, 0x20e: 0x8f, 0x20f: 0x8f, + 0x210: 0x8f, 0x211: 0x8f, 0x212: 0x8f, 0x213: 0x8f, 0x214: 0x8f, 0x215: 0x8f, 0x216: 0x8f, 0x217: 0x8f, + 0x218: 0x8f, 0x219: 0x8f, 0x21a: 0x8f, 0x21b: 0x8f, 0x21c: 0x8f, 0x21d: 0x8f, 0x21e: 0x8f, 0x21f: 0x8f, + 0x220: 0x8f, 0x221: 0x8f, 0x222: 0x8f, 0x223: 0x8f, 0x224: 0x8f, 0x225: 0x8f, 0x226: 0x8f, 0x227: 0x8f, + 0x228: 0x8f, 0x229: 0x8f, 0x22a: 0x8f, 0x22b: 0x8f, 0x22c: 0x8f, 0x22d: 0x8f, 0x22e: 0x8f, 0x22f: 0x8f, + 0x230: 0x8f, 0x231: 0x8f, 0x232: 0x8f, 0x233: 0x8f, 0x234: 0x8f, 0x235: 0x8f, 0x236: 0x90, 0x237: 0x71, + 0x238: 0x8f, 0x239: 0x8f, 0x23a: 0x8f, 0x23b: 0x8f, 0x23c: 0x8f, 0x23d: 0x8f, 0x23e: 0x8f, 0x23f: 0x8f, // Block 0x9, offset 0x240 - 0x240: 0x90, 0x241: 0x90, 0x242: 0x90, 0x243: 0x90, 0x244: 0x90, 0x245: 0x90, 0x246: 0x90, 0x247: 0x90, - 0x248: 0x90, 0x249: 0x90, 0x24a: 0x90, 0x24b: 0x90, 0x24c: 0x90, 0x24d: 0x90, 0x24e: 0x90, 0x24f: 0x90, - 0x250: 0x90, 0x251: 0x90, 0x252: 0x90, 0x253: 0x90, 0x254: 0x90, 0x255: 0x90, 0x256: 0x90, 0x257: 0x90, - 0x258: 0x90, 0x259: 0x90, 0x25a: 0x90, 0x25b: 0x90, 0x25c: 0x90, 0x25d: 0x90, 0x25e: 0x90, 0x25f: 0x90, - 0x260: 0x90, 0x261: 0x90, 0x262: 0x90, 0x263: 0x90, 0x264: 0x90, 0x265: 0x90, 0x266: 0x90, 0x267: 0x90, - 0x268: 0x90, 0x269: 0x90, 0x26a: 0x90, 0x26b: 0x90, 0x26c: 0x90, 0x26d: 0x90, 0x26e: 0x90, 0x26f: 0x90, - 0x270: 0x90, 0x271: 0x90, 0x272: 0x90, 0x273: 0x90, 0x274: 0x90, 0x275: 0x90, 0x276: 0x90, 0x277: 0x90, - 0x278: 0x90, 0x279: 0x90, 0x27a: 0x90, 0x27b: 0x90, 0x27c: 0x90, 0x27d: 0x90, 0x27e: 0x90, 0x27f: 0x90, + 0x240: 0x8f, 0x241: 0x8f, 0x242: 0x8f, 0x243: 0x8f, 0x244: 0x8f, 0x245: 0x8f, 0x246: 0x8f, 0x247: 0x8f, + 0x248: 0x8f, 0x249: 0x8f, 0x24a: 0x8f, 0x24b: 0x8f, 0x24c: 0x8f, 0x24d: 0x8f, 0x24e: 0x8f, 0x24f: 0x8f, + 0x250: 0x8f, 0x251: 0x8f, 0x252: 0x8f, 0x253: 0x8f, 0x254: 0x8f, 0x255: 0x8f, 0x256: 0x8f, 0x257: 0x8f, + 0x258: 0x8f, 0x259: 0x8f, 0x25a: 0x8f, 0x25b: 0x8f, 0x25c: 0x8f, 0x25d: 0x8f, 0x25e: 0x8f, 0x25f: 0x8f, + 0x260: 0x8f, 0x261: 0x8f, 0x262: 0x8f, 0x263: 0x8f, 0x264: 0x8f, 0x265: 0x8f, 0x266: 0x8f, 0x267: 0x8f, + 0x268: 0x8f, 0x269: 0x8f, 0x26a: 0x8f, 0x26b: 0x8f, 0x26c: 0x8f, 0x26d: 0x8f, 0x26e: 0x8f, 0x26f: 0x8f, + 0x270: 0x8f, 0x271: 0x8f, 0x272: 0x8f, 0x273: 0x8f, 0x274: 0x8f, 0x275: 0x8f, 0x276: 0x8f, 0x277: 0x8f, + 0x278: 0x8f, 0x279: 0x8f, 0x27a: 0x8f, 0x27b: 0x8f, 0x27c: 0x8f, 0x27d: 0x8f, 0x27e: 0x8f, 0x27f: 0x8f, // Block 0xa, offset 0x280 - 0x280: 0x90, 0x281: 0x90, 0x282: 0x90, 0x283: 0x90, 0x284: 0x90, 0x285: 0x90, 0x286: 0x90, 0x287: 0x90, - 0x288: 0x90, 0x289: 0x90, 0x28a: 0x90, 0x28b: 0x90, 0x28c: 0x90, 0x28d: 0x90, 0x28e: 0x90, 0x28f: 0x90, - 0x290: 0x90, 0x291: 0x90, 0x292: 0x90, 0x293: 0x90, 0x294: 0x90, 0x295: 0x90, 0x296: 0x90, 0x297: 0x90, - 0x298: 0x90, 0x299: 0x90, 0x29a: 0x90, 0x29b: 0x90, 0x29c: 0x90, 0x29d: 0x90, 0x29e: 0x90, 0x29f: 0x90, - 0x2a0: 0x90, 0x2a1: 0x90, 0x2a2: 0x90, 0x2a3: 0x90, 0x2a4: 0x90, 0x2a5: 0x90, 0x2a6: 0x90, 0x2a7: 0x90, - 0x2a8: 0x90, 0x2a9: 0x90, 0x2aa: 0x90, 0x2ab: 0x90, 0x2ac: 0x90, 0x2ad: 0x90, 0x2ae: 0x90, 0x2af: 0x90, - 0x2b0: 0x90, 0x2b1: 0x90, 0x2b2: 0x90, 0x2b3: 0x90, 0x2b4: 0x90, 0x2b5: 0x90, 0x2b6: 0x90, 0x2b7: 0x90, - 0x2b8: 0x90, 0x2b9: 0x90, 0x2ba: 0x90, 0x2bb: 0x90, 0x2bc: 0x90, 0x2bd: 0x90, 0x2be: 0x90, 0x2bf: 0x92, + 0x280: 0x8f, 0x281: 0x8f, 0x282: 0x8f, 0x283: 0x8f, 0x284: 0x8f, 0x285: 0x8f, 0x286: 0x8f, 0x287: 0x8f, + 0x288: 0x8f, 0x289: 0x8f, 0x28a: 0x8f, 0x28b: 0x8f, 0x28c: 0x8f, 0x28d: 0x8f, 0x28e: 0x8f, 0x28f: 0x8f, + 0x290: 0x8f, 0x291: 0x8f, 0x292: 0x8f, 0x293: 0x8f, 0x294: 0x8f, 0x295: 0x8f, 0x296: 0x8f, 0x297: 0x8f, + 0x298: 0x8f, 0x299: 0x8f, 0x29a: 0x8f, 0x29b: 0x8f, 0x29c: 0x8f, 0x29d: 0x8f, 0x29e: 0x8f, 0x29f: 0x8f, + 0x2a0: 0x8f, 0x2a1: 0x8f, 0x2a2: 0x8f, 0x2a3: 0x8f, 0x2a4: 0x8f, 0x2a5: 0x8f, 0x2a6: 0x8f, 0x2a7: 0x8f, + 0x2a8: 0x8f, 0x2a9: 0x8f, 0x2aa: 0x8f, 0x2ab: 0x8f, 0x2ac: 0x8f, 0x2ad: 0x8f, 0x2ae: 0x8f, 0x2af: 0x8f, + 0x2b0: 0x8f, 0x2b1: 0x8f, 0x2b2: 0x8f, 0x2b3: 0x8f, 0x2b4: 0x8f, 0x2b5: 0x8f, 0x2b6: 0x8f, 0x2b7: 0x8f, + 0x2b8: 0x8f, 0x2b9: 0x8f, 0x2ba: 0x8f, 0x2bb: 0x8f, 0x2bc: 0x8f, 0x2bd: 0x8f, 0x2be: 0x8f, 0x2bf: 0x91, // Block 0xb, offset 0x2c0 0x2c0: 0x05, 0x2c1: 0x05, 0x2c2: 0x05, 0x2c3: 0x05, 0x2c4: 0x05, 0x2c5: 0x05, 0x2c6: 0x05, 0x2c7: 0x05, 0x2c8: 0x05, 0x2c9: 0x05, 0x2ca: 0x05, 0x2cb: 0x05, 0x2cc: 0x05, 0x2cd: 0x05, 0x2ce: 0x05, 0x2cf: 0x05, - 0x2d0: 0x05, 0x2d1: 0x05, 0x2d2: 0x93, 0x2d3: 0x94, 0x2d4: 0x05, 0x2d5: 0x05, 0x2d6: 0x05, 0x2d7: 0x05, - 0x2d8: 0x95, 0x2d9: 0x96, 0x2da: 0x97, 0x2db: 0x98, 0x2dc: 0x99, 0x2dd: 0x9a, 0x2de: 0x9b, 0x2df: 0x9c, - 0x2e0: 0x9d, 0x2e1: 0x9e, 0x2e2: 0x05, 0x2e3: 0x9f, 0x2e4: 0xa0, 0x2e5: 0xa1, 0x2e6: 0xa2, 0x2e7: 0xa3, - 0x2e8: 0xa4, 0x2e9: 0xa5, 0x2ea: 0xa6, 0x2eb: 0xa7, 0x2ec: 0xa8, 0x2ed: 0xa9, 0x2ee: 0x05, 0x2ef: 0xaa, + 0x2d0: 0x05, 0x2d1: 0x05, 0x2d2: 0x92, 0x2d3: 0x93, 0x2d4: 0x05, 0x2d5: 0x05, 0x2d6: 0x05, 0x2d7: 0x05, + 0x2d8: 0x94, 0x2d9: 0x95, 0x2da: 0x96, 0x2db: 0x97, 0x2dc: 0x98, 0x2dd: 0x99, 0x2de: 0x9a, 0x2df: 0x9b, + 0x2e0: 0x9c, 0x2e1: 0x9d, 0x2e2: 0x05, 0x2e3: 0x9e, 0x2e4: 0x9f, 0x2e5: 0xa0, 0x2e6: 0xa1, 0x2e7: 0xa2, + 0x2e8: 0xa3, 0x2e9: 0xa4, 0x2ea: 0xa5, 0x2eb: 0xa6, 0x2ec: 0xa7, 0x2ed: 0xa8, 0x2ee: 0x05, 0x2ef: 0xa9, 0x2f0: 0x05, 0x2f1: 0x05, 0x2f2: 0x05, 0x2f3: 0x05, 0x2f4: 0x05, 0x2f5: 0x05, 0x2f6: 0x05, 0x2f7: 0x05, 0x2f8: 0x05, 0x2f9: 0x05, 0x2fa: 0x05, 0x2fb: 0x05, 0x2fc: 0x05, 0x2fd: 0x05, 0x2fe: 0x05, 0x2ff: 0x05, // Block 0xc, offset 0x300 @@ -3652,7 +3743,7 @@ var derivedPropertiesIndex = [2304]uint16{ 0x340: 0x05, 0x341: 0x05, 0x342: 0x05, 0x343: 0x05, 0x344: 0x05, 0x345: 0x05, 0x346: 0x05, 0x347: 0x05, 0x348: 0x05, 0x349: 0x05, 0x34a: 0x05, 0x34b: 0x05, 0x34c: 0x05, 0x34d: 0x05, 0x34e: 0x05, 0x34f: 0x05, 0x350: 0x05, 0x351: 0x05, 0x352: 0x05, 0x353: 0x05, 0x354: 0x05, 0x355: 0x05, 0x356: 0x05, 0x357: 0x05, - 0x358: 0x05, 0x359: 0x05, 0x35a: 0x05, 0x35b: 0x05, 0x35c: 0x05, 0x35d: 0x05, 0x35e: 0xab, 0x35f: 0xac, + 0x358: 0x05, 0x359: 0x05, 0x35a: 0x05, 0x35b: 0x05, 0x35c: 0x05, 0x35d: 0x05, 0x35e: 0xaa, 0x35f: 0xab, // Block 0xe, offset 0x380 0x380: 0x3e, 0x381: 0x3e, 0x382: 0x3e, 0x383: 0x3e, 0x384: 0x3e, 0x385: 0x3e, 0x386: 0x3e, 0x387: 0x3e, 0x388: 0x3e, 0x389: 0x3e, 0x38a: 0x3e, 0x38b: 0x3e, 0x38c: 0x3e, 0x38d: 0x3e, 0x38e: 0x3e, 0x38f: 0x3e, @@ -3667,122 +3758,130 @@ var derivedPropertiesIndex = [2304]uint16{ 0x3c8: 0x3e, 0x3c9: 0x3e, 0x3ca: 0x3e, 0x3cb: 0x3e, 0x3cc: 0x3e, 0x3cd: 0x3e, 0x3ce: 0x3e, 0x3cf: 0x3e, 0x3d0: 0x3e, 0x3d1: 0x3e, 0x3d2: 0x3e, 0x3d3: 0x3e, 0x3d4: 0x3e, 0x3d5: 0x3e, 0x3d6: 0x3e, 0x3d7: 0x3e, 0x3d8: 0x3e, 0x3d9: 0x3e, 0x3da: 0x3e, 0x3db: 0x3e, 0x3dc: 0x3e, 0x3dd: 0x3e, 0x3de: 0x3e, 0x3df: 0x3e, - 0x3e0: 0x3e, 0x3e1: 0x3e, 0x3e2: 0x3e, 0x3e3: 0x3e, 0x3e4: 0x83, 0x3e5: 0x83, 0x3e6: 0x83, 0x3e7: 0x83, - 0x3e8: 0xad, 0x3e9: 0xae, 0x3ea: 0x83, 0x3eb: 0xaf, 0x3ec: 0xb0, 0x3ed: 0xb1, 0x3ee: 0x71, 0x3ef: 0xb2, - 0x3f0: 0x71, 0x3f1: 0x71, 0x3f2: 0x71, 0x3f3: 0x71, 0x3f4: 0x71, 0x3f5: 0xb3, 0x3f6: 0xb4, 0x3f7: 0xb5, - 0x3f8: 0xb6, 0x3f9: 0xb7, 0x3fa: 0x71, 0x3fb: 0xb8, 0x3fc: 0xb9, 0x3fd: 0xba, 0x3fe: 0xbb, 0x3ff: 0xbc, + 0x3e0: 0x3e, 0x3e1: 0x3e, 0x3e2: 0x3e, 0x3e3: 0x3e, 0x3e4: 0x82, 0x3e5: 0x82, 0x3e6: 0x82, 0x3e7: 0x82, + 0x3e8: 0xac, 0x3e9: 0xad, 0x3ea: 0x82, 0x3eb: 0xae, 0x3ec: 0xaf, 0x3ed: 0xb0, 0x3ee: 0x71, 0x3ef: 0xb1, + 0x3f0: 0x71, 0x3f1: 0x71, 0x3f2: 0x71, 0x3f3: 0x71, 0x3f4: 0x71, 0x3f5: 0xb2, 0x3f6: 0xb3, 0x3f7: 0xb4, + 0x3f8: 0xb5, 0x3f9: 0xb6, 0x3fa: 0x71, 0x3fb: 0xb7, 0x3fc: 0xb8, 0x3fd: 0xb9, 0x3fe: 0xba, 0x3ff: 0xbb, // Block 0x10, offset 0x400 - 0x400: 0xbd, 0x401: 0xbe, 0x402: 0x05, 0x403: 0xbf, 0x404: 0xc0, 0x405: 0xc1, 0x406: 0xc2, 0x407: 0xc3, - 0x40a: 0xc4, 0x40b: 0xc5, 0x40c: 0xc6, 0x40d: 0xc7, 0x40e: 0xc8, 0x40f: 0xc9, - 0x410: 0x05, 0x411: 0x05, 0x412: 0xca, 0x413: 0xcb, 0x414: 0xcc, 0x415: 0xcd, - 0x418: 0x05, 0x419: 0x05, 0x41a: 0x05, 0x41b: 0x05, 0x41c: 0xce, 0x41d: 0xcf, - 0x420: 0xd0, 0x421: 0xd1, 0x422: 0xd2, 0x423: 0xd3, 0x424: 0xd4, 0x426: 0xd5, 0x427: 0xb4, - 0x428: 0xd6, 0x429: 0xd7, 0x42a: 0xd8, 0x42b: 0xd9, 0x42c: 0xda, 0x42d: 0xdb, 0x42e: 0xdc, - 0x430: 0x05, 0x431: 0x5f, 0x432: 0xdd, 0x433: 0xde, - 0x439: 0xdf, + 0x400: 0xbc, 0x401: 0xbd, 0x402: 0x05, 0x403: 0xbe, 0x404: 0xbf, 0x405: 0xc0, 0x406: 0xc1, 0x407: 0xc2, + 0x40a: 0xc3, 0x40b: 0xc4, 0x40c: 0xc5, 0x40d: 0xc6, 0x40e: 0xc7, 0x40f: 0xc8, + 0x410: 0x05, 0x411: 0x05, 0x412: 0xc9, 0x413: 0xca, 0x414: 0xcb, 0x415: 0xcc, + 0x418: 0x05, 0x419: 0x05, 0x41a: 0x05, 0x41b: 0x05, 0x41c: 0xcd, 0x41d: 0xce, + 0x420: 0xcf, 0x421: 0xd0, 0x422: 0xd1, 0x423: 0xd2, 0x424: 0xd3, 0x426: 0xd4, 0x427: 0xb3, + 0x428: 0xd5, 0x429: 0xd6, 0x42a: 0xd7, 0x42b: 0xd8, 0x42c: 0xd9, 0x42d: 0xda, 0x42e: 0xdb, + 0x430: 0x05, 0x431: 0x5f, 0x432: 0xdc, 0x433: 0xdd, + 0x439: 0xde, // Block 0x11, offset 0x440 - 0x440: 0xe0, 0x441: 0xe1, 0x442: 0xe2, 0x443: 0xe3, 0x444: 0xe4, 0x445: 0xe5, 0x446: 0xe6, 0x447: 0xe7, - 0x448: 0xe8, 0x44a: 0xe9, 0x44b: 0xea, 0x44c: 0xeb, 0x44d: 0xec, - 0x450: 0xed, 0x451: 0xee, 0x452: 0xef, 0x453: 0xf0, 0x456: 0xf1, 0x457: 0xf2, - 0x458: 0xf3, 0x459: 0xf4, 0x45a: 0xf5, 0x45b: 0xf6, 0x45c: 0xf7, - 0x462: 0xf8, 0x463: 0xf9, - 0x46b: 0xfa, - 0x470: 0xfb, 0x471: 0xfc, 0x472: 0xfd, + 0x440: 0xdf, 0x441: 0xe0, 0x442: 0xe1, 0x443: 0xe2, 0x444: 0xe3, 0x445: 0xe4, 0x446: 0xe5, 0x447: 0xe6, + 0x448: 0xe7, 0x44a: 0xe8, 0x44b: 0xe9, 0x44c: 0xea, 0x44d: 0xeb, + 0x450: 0xec, 0x451: 0xed, 0x452: 0xee, 0x453: 0xef, 0x456: 0xf0, 0x457: 0xf1, + 0x458: 0xf2, 0x459: 0xf3, 0x45a: 0xf4, 0x45b: 0xf5, 0x45c: 0xf6, + 0x462: 0xf7, 0x463: 0xf8, + 0x468: 0xf9, 0x469: 0xfa, 0x46a: 0xfb, 0x46b: 0xfc, + 0x470: 0xfd, 0x471: 0xfe, 0x472: 0xff, 0x474: 0x100, 0x475: 0x101, // Block 0x12, offset 0x480 0x480: 0x05, 0x481: 0x05, 0x482: 0x05, 0x483: 0x05, 0x484: 0x05, 0x485: 0x05, 0x486: 0x05, 0x487: 0x05, - 0x488: 0x05, 0x489: 0x05, 0x48a: 0x05, 0x48b: 0x05, 0x48c: 0x05, 0x48d: 0x05, 0x48e: 0xfe, - 0x490: 0x71, 0x491: 0xff, 0x492: 0x05, 0x493: 0x05, 0x494: 0x05, 0x495: 0x100, + 0x488: 0x05, 0x489: 0x05, 0x48a: 0x05, 0x48b: 0x05, 0x48c: 0x05, 0x48d: 0x05, 0x48e: 0x102, + 0x490: 0x71, 0x491: 0x103, 0x492: 0x05, 0x493: 0x05, 0x494: 0x05, 0x495: 0x104, // Block 0x13, offset 0x4c0 0x4c0: 0x05, 0x4c1: 0x05, 0x4c2: 0x05, 0x4c3: 0x05, 0x4c4: 0x05, 0x4c5: 0x05, 0x4c6: 0x05, 0x4c7: 0x05, 0x4c8: 0x05, 0x4c9: 0x05, 0x4ca: 0x05, 0x4cb: 0x05, 0x4cc: 0x05, 0x4cd: 0x05, 0x4ce: 0x05, 0x4cf: 0x05, - 0x4d0: 0x101, + 0x4d0: 0x105, // Block 0x14, offset 0x500 0x510: 0x05, 0x511: 0x05, 0x512: 0x05, 0x513: 0x05, 0x514: 0x05, 0x515: 0x05, 0x516: 0x05, 0x517: 0x05, - 0x518: 0x05, 0x519: 0x102, + 0x518: 0x05, 0x519: 0x106, // Block 0x15, offset 0x540 0x560: 0x05, 0x561: 0x05, 0x562: 0x05, 0x563: 0x05, 0x564: 0x05, 0x565: 0x05, 0x566: 0x05, 0x567: 0x05, - 0x568: 0xfa, 0x569: 0x103, 0x56b: 0x104, 0x56c: 0x105, 0x56d: 0x106, 0x56e: 0x107, - 0x57c: 0x05, 0x57d: 0x108, 0x57e: 0x109, 0x57f: 0x10a, + 0x568: 0xfc, 0x569: 0x107, 0x56b: 0x108, 0x56c: 0x109, 0x56d: 0x10a, 0x56e: 0x10b, + 0x57c: 0x05, 0x57d: 0x10c, 0x57e: 0x10d, 0x57f: 0x10e, // Block 0x16, offset 0x580 0x580: 0x05, 0x581: 0x05, 0x582: 0x05, 0x583: 0x05, 0x584: 0x05, 0x585: 0x05, 0x586: 0x05, 0x587: 0x05, 0x588: 0x05, 0x589: 0x05, 0x58a: 0x05, 0x58b: 0x05, 0x58c: 0x05, 0x58d: 0x05, 0x58e: 0x05, 0x58f: 0x05, 0x590: 0x05, 0x591: 0x05, 0x592: 0x05, 0x593: 0x05, 0x594: 0x05, 0x595: 0x05, 0x596: 0x05, 0x597: 0x05, - 0x598: 0x05, 0x599: 0x05, 0x59a: 0x05, 0x59b: 0x05, 0x59c: 0x05, 0x59d: 0x05, 0x59e: 0x05, 0x59f: 0x10b, + 0x598: 0x05, 0x599: 0x05, 0x59a: 0x05, 0x59b: 0x05, 0x59c: 0x05, 0x59d: 0x05, 0x59e: 0x05, 0x59f: 0x10f, 0x5a0: 0x05, 0x5a1: 0x05, 0x5a2: 0x05, 0x5a3: 0x05, 0x5a4: 0x05, 0x5a5: 0x05, 0x5a6: 0x05, 0x5a7: 0x05, - 0x5a8: 0x05, 0x5a9: 0x05, 0x5aa: 0x05, 0x5ab: 0xdd, + 0x5a8: 0x05, 0x5a9: 0x05, 0x5aa: 0x05, 0x5ab: 0xdc, // Block 0x17, offset 0x5c0 - 0x5c0: 0x10c, - 0x5f0: 0x05, 0x5f1: 0x10d, 0x5f2: 0x10e, + 0x5c0: 0x8f, 0x5c1: 0x8f, 0x5c2: 0x8f, 0x5c3: 0x8f, 0x5c4: 0x110, 0x5c5: 0x111, 0x5c6: 0x05, 0x5c7: 0x05, + 0x5c8: 0x05, 0x5c9: 0x05, 0x5ca: 0x05, 0x5cb: 0x112, + 0x5f0: 0x05, 0x5f1: 0x113, 0x5f2: 0x114, // Block 0x18, offset 0x600 - 0x600: 0x71, 0x601: 0x71, 0x602: 0x71, 0x603: 0x10f, 0x604: 0x110, 0x605: 0x111, 0x606: 0x112, 0x607: 0x113, - 0x608: 0xc1, 0x609: 0x114, 0x60c: 0x71, 0x60d: 0x115, - 0x610: 0x71, 0x611: 0x116, 0x612: 0x117, 0x613: 0x118, 0x614: 0x119, 0x615: 0x11a, 0x616: 0x71, 0x617: 0x71, - 0x618: 0x71, 0x619: 0x71, 0x61a: 0x11b, 0x61b: 0x71, 0x61c: 0x71, 0x61d: 0x71, 0x61e: 0x71, 0x61f: 0x11c, + 0x600: 0x71, 0x601: 0x71, 0x602: 0x71, 0x603: 0x115, 0x604: 0x116, 0x605: 0x117, 0x606: 0x118, 0x607: 0x119, + 0x608: 0xc0, 0x609: 0x11a, 0x60c: 0x71, 0x60d: 0x11b, + 0x610: 0x71, 0x611: 0x11c, 0x612: 0x11d, 0x613: 0x11e, 0x614: 0x11f, 0x615: 0x120, 0x616: 0x71, 0x617: 0x71, + 0x618: 0x71, 0x619: 0x71, 0x61a: 0x121, 0x61b: 0x71, 0x61c: 0x71, 0x61d: 0x71, 0x61e: 0x71, 0x61f: 0x122, 0x620: 0x71, 0x621: 0x71, 0x622: 0x71, 0x623: 0x71, 0x624: 0x71, 0x625: 0x71, 0x626: 0x71, 0x627: 0x71, - 0x628: 0x11d, 0x629: 0x11e, 0x62a: 0x11f, + 0x628: 0x123, 0x629: 0x124, 0x62a: 0x125, // Block 0x19, offset 0x640 - 0x640: 0x120, - 0x660: 0x05, 0x661: 0x05, 0x662: 0x05, 0x663: 0x121, 0x664: 0x122, 0x665: 0x123, - 0x678: 0x124, 0x679: 0x125, 0x67a: 0x126, 0x67b: 0x127, + 0x640: 0x126, + 0x660: 0x05, 0x661: 0x05, 0x662: 0x05, 0x663: 0x127, 0x664: 0x128, 0x665: 0x129, + 0x678: 0x12a, 0x679: 0x12b, 0x67a: 0x12c, 0x67b: 0x12d, // Block 0x1a, offset 0x680 - 0x680: 0x128, 0x681: 0x71, 0x682: 0x129, 0x683: 0x12a, 0x684: 0x12b, 0x685: 0x128, 0x686: 0x12c, 0x687: 0x12d, - 0x688: 0x12e, 0x689: 0x12f, 0x68c: 0x71, 0x68d: 0x71, 0x68e: 0x71, 0x68f: 0x71, + 0x680: 0x12e, 0x681: 0x71, 0x682: 0x12f, 0x683: 0x130, 0x684: 0x131, 0x685: 0x12e, 0x686: 0x132, 0x687: 0x133, + 0x688: 0x134, 0x689: 0x135, 0x68c: 0x71, 0x68d: 0x71, 0x68e: 0x71, 0x68f: 0x71, 0x690: 0x71, 0x691: 0x71, 0x692: 0x71, 0x693: 0x71, 0x694: 0x71, 0x695: 0x71, 0x696: 0x71, 0x697: 0x71, - 0x698: 0x71, 0x699: 0x71, 0x69a: 0x71, 0x69b: 0x130, 0x69c: 0x71, 0x69d: 0x131, 0x69e: 0x71, 0x69f: 0x132, - 0x6a0: 0x133, 0x6a1: 0x134, 0x6a2: 0x135, 0x6a4: 0x136, 0x6a5: 0x137, 0x6a6: 0x138, 0x6a7: 0x139, + 0x698: 0x71, 0x699: 0x71, 0x69a: 0x71, 0x69b: 0x136, 0x69c: 0x71, 0x69d: 0x137, 0x69e: 0x71, 0x69f: 0x138, + 0x6a0: 0x139, 0x6a1: 0x13a, 0x6a2: 0x13b, 0x6a4: 0x13c, 0x6a5: 0x13d, 0x6a6: 0x13e, 0x6a7: 0x13f, // Block 0x1b, offset 0x6c0 - 0x6c0: 0x90, 0x6c1: 0x90, 0x6c2: 0x90, 0x6c3: 0x90, 0x6c4: 0x90, 0x6c5: 0x90, 0x6c6: 0x90, 0x6c7: 0x90, - 0x6c8: 0x90, 0x6c9: 0x90, 0x6ca: 0x90, 0x6cb: 0x90, 0x6cc: 0x90, 0x6cd: 0x90, 0x6ce: 0x90, 0x6cf: 0x90, - 0x6d0: 0x90, 0x6d1: 0x90, 0x6d2: 0x90, 0x6d3: 0x90, 0x6d4: 0x90, 0x6d5: 0x90, 0x6d6: 0x90, 0x6d7: 0x90, - 0x6d8: 0x90, 0x6d9: 0x90, 0x6da: 0x90, 0x6db: 0x13a, 0x6dc: 0x90, 0x6dd: 0x90, 0x6de: 0x90, 0x6df: 0x90, - 0x6e0: 0x90, 0x6e1: 0x90, 0x6e2: 0x90, 0x6e3: 0x90, 0x6e4: 0x90, 0x6e5: 0x90, 0x6e6: 0x90, 0x6e7: 0x90, - 0x6e8: 0x90, 0x6e9: 0x90, 0x6ea: 0x90, 0x6eb: 0x90, 0x6ec: 0x90, 0x6ed: 0x90, 0x6ee: 0x90, 0x6ef: 0x90, - 0x6f0: 0x90, 0x6f1: 0x90, 0x6f2: 0x90, 0x6f3: 0x90, 0x6f4: 0x90, 0x6f5: 0x90, 0x6f6: 0x90, 0x6f7: 0x90, - 0x6f8: 0x90, 0x6f9: 0x90, 0x6fa: 0x90, 0x6fb: 0x90, 0x6fc: 0x90, 0x6fd: 0x90, 0x6fe: 0x90, 0x6ff: 0x90, + 0x6c0: 0x8f, 0x6c1: 0x8f, 0x6c2: 0x8f, 0x6c3: 0x8f, 0x6c4: 0x8f, 0x6c5: 0x8f, 0x6c6: 0x8f, 0x6c7: 0x8f, + 0x6c8: 0x8f, 0x6c9: 0x8f, 0x6ca: 0x8f, 0x6cb: 0x8f, 0x6cc: 0x8f, 0x6cd: 0x8f, 0x6ce: 0x8f, 0x6cf: 0x8f, + 0x6d0: 0x8f, 0x6d1: 0x8f, 0x6d2: 0x8f, 0x6d3: 0x8f, 0x6d4: 0x8f, 0x6d5: 0x8f, 0x6d6: 0x8f, 0x6d7: 0x8f, + 0x6d8: 0x8f, 0x6d9: 0x8f, 0x6da: 0x8f, 0x6db: 0x140, 0x6dc: 0x8f, 0x6dd: 0x8f, 0x6de: 0x8f, 0x6df: 0x8f, + 0x6e0: 0x8f, 0x6e1: 0x8f, 0x6e2: 0x8f, 0x6e3: 0x8f, 0x6e4: 0x8f, 0x6e5: 0x8f, 0x6e6: 0x8f, 0x6e7: 0x8f, + 0x6e8: 0x8f, 0x6e9: 0x8f, 0x6ea: 0x8f, 0x6eb: 0x8f, 0x6ec: 0x8f, 0x6ed: 0x8f, 0x6ee: 0x8f, 0x6ef: 0x8f, + 0x6f0: 0x8f, 0x6f1: 0x8f, 0x6f2: 0x8f, 0x6f3: 0x8f, 0x6f4: 0x8f, 0x6f5: 0x8f, 0x6f6: 0x8f, 0x6f7: 0x8f, + 0x6f8: 0x8f, 0x6f9: 0x8f, 0x6fa: 0x8f, 0x6fb: 0x8f, 0x6fc: 0x8f, 0x6fd: 0x8f, 0x6fe: 0x8f, 0x6ff: 0x8f, // Block 0x1c, offset 0x700 - 0x700: 0x90, 0x701: 0x90, 0x702: 0x90, 0x703: 0x90, 0x704: 0x90, 0x705: 0x90, 0x706: 0x90, 0x707: 0x90, - 0x708: 0x90, 0x709: 0x90, 0x70a: 0x90, 0x70b: 0x90, 0x70c: 0x90, 0x70d: 0x90, 0x70e: 0x90, 0x70f: 0x90, - 0x710: 0x90, 0x711: 0x90, 0x712: 0x90, 0x713: 0x90, 0x714: 0x90, 0x715: 0x90, 0x716: 0x90, 0x717: 0x90, - 0x718: 0x90, 0x719: 0x90, 0x71a: 0x90, 0x71b: 0x90, 0x71c: 0x13b, 0x71d: 0x90, 0x71e: 0x90, 0x71f: 0x90, - 0x720: 0x13c, 0x721: 0x90, 0x722: 0x90, 0x723: 0x90, 0x724: 0x90, 0x725: 0x90, 0x726: 0x90, 0x727: 0x90, - 0x728: 0x90, 0x729: 0x90, 0x72a: 0x90, 0x72b: 0x90, 0x72c: 0x90, 0x72d: 0x90, 0x72e: 0x90, 0x72f: 0x90, - 0x730: 0x90, 0x731: 0x90, 0x732: 0x90, 0x733: 0x90, 0x734: 0x90, 0x735: 0x90, 0x736: 0x90, 0x737: 0x90, - 0x738: 0x90, 0x739: 0x90, 0x73a: 0x90, 0x73b: 0x90, 0x73c: 0x90, 0x73d: 0x90, 0x73e: 0x90, 0x73f: 0x90, + 0x700: 0x8f, 0x701: 0x8f, 0x702: 0x8f, 0x703: 0x8f, 0x704: 0x8f, 0x705: 0x8f, 0x706: 0x8f, 0x707: 0x8f, + 0x708: 0x8f, 0x709: 0x8f, 0x70a: 0x8f, 0x70b: 0x8f, 0x70c: 0x8f, 0x70d: 0x8f, 0x70e: 0x8f, 0x70f: 0x8f, + 0x710: 0x8f, 0x711: 0x8f, 0x712: 0x8f, 0x713: 0x8f, 0x714: 0x8f, 0x715: 0x8f, 0x716: 0x8f, 0x717: 0x8f, + 0x718: 0x8f, 0x719: 0x8f, 0x71a: 0x8f, 0x71b: 0x8f, 0x71c: 0x141, 0x71d: 0x8f, 0x71e: 0x8f, 0x71f: 0x8f, + 0x720: 0x142, 0x721: 0x8f, 0x722: 0x8f, 0x723: 0x8f, 0x724: 0x8f, 0x725: 0x8f, 0x726: 0x8f, 0x727: 0x8f, + 0x728: 0x8f, 0x729: 0x8f, 0x72a: 0x8f, 0x72b: 0x8f, 0x72c: 0x8f, 0x72d: 0x8f, 0x72e: 0x8f, 0x72f: 0x8f, + 0x730: 0x8f, 0x731: 0x8f, 0x732: 0x8f, 0x733: 0x8f, 0x734: 0x8f, 0x735: 0x8f, 0x736: 0x8f, 0x737: 0x8f, + 0x738: 0x8f, 0x739: 0x8f, 0x73a: 0x8f, 0x73b: 0x8f, 0x73c: 0x8f, 0x73d: 0x8f, 0x73e: 0x8f, 0x73f: 0x8f, // Block 0x1d, offset 0x740 - 0x740: 0x90, 0x741: 0x90, 0x742: 0x90, 0x743: 0x90, 0x744: 0x90, 0x745: 0x90, 0x746: 0x90, 0x747: 0x90, - 0x748: 0x90, 0x749: 0x90, 0x74a: 0x90, 0x74b: 0x90, 0x74c: 0x90, 0x74d: 0x90, 0x74e: 0x90, 0x74f: 0x90, - 0x750: 0x90, 0x751: 0x90, 0x752: 0x90, 0x753: 0x90, 0x754: 0x90, 0x755: 0x90, 0x756: 0x90, 0x757: 0x90, - 0x758: 0x90, 0x759: 0x90, 0x75a: 0x90, 0x75b: 0x90, 0x75c: 0x90, 0x75d: 0x90, 0x75e: 0x90, 0x75f: 0x90, - 0x760: 0x90, 0x761: 0x90, 0x762: 0x90, 0x763: 0x90, 0x764: 0x90, 0x765: 0x90, 0x766: 0x90, 0x767: 0x90, - 0x768: 0x90, 0x769: 0x90, 0x76a: 0x90, 0x76b: 0x90, 0x76c: 0x90, 0x76d: 0x90, 0x76e: 0x90, 0x76f: 0x90, - 0x770: 0x90, 0x771: 0x90, 0x772: 0x90, 0x773: 0x90, 0x774: 0x90, 0x775: 0x90, 0x776: 0x90, 0x777: 0x90, - 0x778: 0x90, 0x779: 0x90, 0x77a: 0x13d, + 0x740: 0x8f, 0x741: 0x8f, 0x742: 0x8f, 0x743: 0x8f, 0x744: 0x8f, 0x745: 0x8f, 0x746: 0x8f, 0x747: 0x8f, + 0x748: 0x8f, 0x749: 0x8f, 0x74a: 0x8f, 0x74b: 0x8f, 0x74c: 0x8f, 0x74d: 0x8f, 0x74e: 0x8f, 0x74f: 0x8f, + 0x750: 0x8f, 0x751: 0x8f, 0x752: 0x8f, 0x753: 0x8f, 0x754: 0x8f, 0x755: 0x8f, 0x756: 0x8f, 0x757: 0x8f, + 0x758: 0x8f, 0x759: 0x8f, 0x75a: 0x8f, 0x75b: 0x8f, 0x75c: 0x8f, 0x75d: 0x8f, 0x75e: 0x8f, 0x75f: 0x8f, + 0x760: 0x8f, 0x761: 0x8f, 0x762: 0x8f, 0x763: 0x8f, 0x764: 0x8f, 0x765: 0x8f, 0x766: 0x8f, 0x767: 0x8f, + 0x768: 0x8f, 0x769: 0x8f, 0x76a: 0x8f, 0x76b: 0x8f, 0x76c: 0x8f, 0x76d: 0x8f, 0x76e: 0x8f, 0x76f: 0x8f, + 0x770: 0x8f, 0x771: 0x8f, 0x772: 0x8f, 0x773: 0x8f, 0x774: 0x8f, 0x775: 0x8f, 0x776: 0x8f, 0x777: 0x8f, + 0x778: 0x8f, 0x779: 0x8f, 0x77a: 0x143, 0x77b: 0x8f, 0x77c: 0x8f, 0x77d: 0x8f, 0x77e: 0x8f, 0x77f: 0x8f, // Block 0x1e, offset 0x780 - 0x7a0: 0x83, 0x7a1: 0x83, 0x7a2: 0x83, 0x7a3: 0x83, 0x7a4: 0x83, 0x7a5: 0x83, 0x7a6: 0x83, 0x7a7: 0x83, - 0x7a8: 0x13e, + 0x780: 0x8f, 0x781: 0x8f, 0x782: 0x8f, 0x783: 0x8f, 0x784: 0x8f, 0x785: 0x8f, 0x786: 0x8f, 0x787: 0x8f, + 0x788: 0x8f, 0x789: 0x8f, 0x78a: 0x8f, 0x78b: 0x8f, 0x78c: 0x8f, 0x78d: 0x8f, 0x78e: 0x8f, 0x78f: 0x8f, + 0x790: 0x8f, 0x791: 0x8f, 0x792: 0x8f, 0x793: 0x8f, 0x794: 0x8f, 0x795: 0x8f, 0x796: 0x8f, 0x797: 0x8f, + 0x798: 0x8f, 0x799: 0x8f, 0x79a: 0x8f, 0x79b: 0x8f, 0x79c: 0x8f, 0x79d: 0x8f, 0x79e: 0x8f, 0x79f: 0x8f, + 0x7a0: 0x8f, 0x7a1: 0x8f, 0x7a2: 0x8f, 0x7a3: 0x8f, 0x7a4: 0x8f, 0x7a5: 0x8f, 0x7a6: 0x8f, 0x7a7: 0x8f, + 0x7a8: 0x8f, 0x7a9: 0x8f, 0x7aa: 0x8f, 0x7ab: 0x8f, 0x7ac: 0x8f, 0x7ad: 0x8f, 0x7ae: 0x8f, 0x7af: 0x144, // Block 0x1f, offset 0x7c0 - 0x7d0: 0x0e, 0x7d1: 0x0f, 0x7d2: 0x10, 0x7d3: 0x11, 0x7d4: 0x12, 0x7d6: 0x13, 0x7d7: 0x0a, - 0x7d8: 0x14, 0x7db: 0x15, 0x7dd: 0x16, 0x7de: 0x17, 0x7df: 0x18, - 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, - 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x19, 0x7eb: 0x1a, 0x7ec: 0x1b, 0x7ef: 0x1c, + 0x7e0: 0x82, 0x7e1: 0x82, 0x7e2: 0x82, 0x7e3: 0x82, 0x7e4: 0x82, 0x7e5: 0x82, 0x7e6: 0x82, 0x7e7: 0x82, + 0x7e8: 0x145, // Block 0x20, offset 0x800 - 0x800: 0x13f, 0x801: 0x3e, 0x804: 0x3e, 0x805: 0x3e, 0x806: 0x3e, 0x807: 0x140, + 0x810: 0x0e, 0x811: 0x0f, 0x812: 0x10, 0x813: 0x11, 0x814: 0x12, 0x816: 0x13, 0x817: 0x0a, + 0x818: 0x14, 0x81b: 0x15, 0x81d: 0x16, 0x81e: 0x17, 0x81f: 0x18, + 0x820: 0x07, 0x821: 0x07, 0x822: 0x07, 0x823: 0x07, 0x824: 0x07, 0x825: 0x07, 0x826: 0x07, 0x827: 0x07, + 0x828: 0x07, 0x829: 0x07, 0x82a: 0x19, 0x82b: 0x1a, 0x82c: 0x1b, 0x82d: 0x07, 0x82e: 0x1c, 0x82f: 0x1d, // Block 0x21, offset 0x840 - 0x840: 0x3e, 0x841: 0x3e, 0x842: 0x3e, 0x843: 0x3e, 0x844: 0x3e, 0x845: 0x3e, 0x846: 0x3e, 0x847: 0x3e, - 0x848: 0x3e, 0x849: 0x3e, 0x84a: 0x3e, 0x84b: 0x3e, 0x84c: 0x3e, 0x84d: 0x3e, 0x84e: 0x3e, 0x84f: 0x3e, - 0x850: 0x3e, 0x851: 0x3e, 0x852: 0x3e, 0x853: 0x3e, 0x854: 0x3e, 0x855: 0x3e, 0x856: 0x3e, 0x857: 0x3e, - 0x858: 0x3e, 0x859: 0x3e, 0x85a: 0x3e, 0x85b: 0x3e, 0x85c: 0x3e, 0x85d: 0x3e, 0x85e: 0x3e, 0x85f: 0x3e, - 0x860: 0x3e, 0x861: 0x3e, 0x862: 0x3e, 0x863: 0x3e, 0x864: 0x3e, 0x865: 0x3e, 0x866: 0x3e, 0x867: 0x3e, - 0x868: 0x3e, 0x869: 0x3e, 0x86a: 0x3e, 0x86b: 0x3e, 0x86c: 0x3e, 0x86d: 0x3e, 0x86e: 0x3e, 0x86f: 0x3e, - 0x870: 0x3e, 0x871: 0x3e, 0x872: 0x3e, 0x873: 0x3e, 0x874: 0x3e, 0x875: 0x3e, 0x876: 0x3e, 0x877: 0x3e, - 0x878: 0x3e, 0x879: 0x3e, 0x87a: 0x3e, 0x87b: 0x3e, 0x87c: 0x3e, 0x87d: 0x3e, 0x87e: 0x3e, 0x87f: 0x141, + 0x840: 0x146, 0x841: 0x3e, 0x844: 0x3e, 0x845: 0x3e, 0x846: 0x3e, 0x847: 0x147, // Block 0x22, offset 0x880 - 0x8a0: 0x1e, - 0x8b0: 0x0c, 0x8b1: 0x0c, 0x8b2: 0x0c, 0x8b3: 0x0c, 0x8b4: 0x0c, 0x8b5: 0x0c, 0x8b6: 0x0c, 0x8b7: 0x0c, - 0x8b8: 0x0c, 0x8b9: 0x0c, 0x8ba: 0x0c, 0x8bb: 0x0c, 0x8bc: 0x0c, 0x8bd: 0x0c, 0x8be: 0x0c, 0x8bf: 0x1f, + 0x880: 0x3e, 0x881: 0x3e, 0x882: 0x3e, 0x883: 0x3e, 0x884: 0x3e, 0x885: 0x3e, 0x886: 0x3e, 0x887: 0x3e, + 0x888: 0x3e, 0x889: 0x3e, 0x88a: 0x3e, 0x88b: 0x3e, 0x88c: 0x3e, 0x88d: 0x3e, 0x88e: 0x3e, 0x88f: 0x3e, + 0x890: 0x3e, 0x891: 0x3e, 0x892: 0x3e, 0x893: 0x3e, 0x894: 0x3e, 0x895: 0x3e, 0x896: 0x3e, 0x897: 0x3e, + 0x898: 0x3e, 0x899: 0x3e, 0x89a: 0x3e, 0x89b: 0x3e, 0x89c: 0x3e, 0x89d: 0x3e, 0x89e: 0x3e, 0x89f: 0x3e, + 0x8a0: 0x3e, 0x8a1: 0x3e, 0x8a2: 0x3e, 0x8a3: 0x3e, 0x8a4: 0x3e, 0x8a5: 0x3e, 0x8a6: 0x3e, 0x8a7: 0x3e, + 0x8a8: 0x3e, 0x8a9: 0x3e, 0x8aa: 0x3e, 0x8ab: 0x3e, 0x8ac: 0x3e, 0x8ad: 0x3e, 0x8ae: 0x3e, 0x8af: 0x3e, + 0x8b0: 0x3e, 0x8b1: 0x3e, 0x8b2: 0x3e, 0x8b3: 0x3e, 0x8b4: 0x3e, 0x8b5: 0x3e, 0x8b6: 0x3e, 0x8b7: 0x3e, + 0x8b8: 0x3e, 0x8b9: 0x3e, 0x8ba: 0x3e, 0x8bb: 0x3e, 0x8bc: 0x3e, 0x8bd: 0x3e, 0x8be: 0x3e, 0x8bf: 0x148, // Block 0x23, offset 0x8c0 - 0x8c0: 0x0c, 0x8c1: 0x0c, 0x8c2: 0x0c, 0x8c3: 0x0c, 0x8c4: 0x0c, 0x8c5: 0x0c, 0x8c6: 0x0c, 0x8c7: 0x0c, - 0x8c8: 0x0c, 0x8c9: 0x0c, 0x8ca: 0x0c, 0x8cb: 0x0c, 0x8cc: 0x0c, 0x8cd: 0x0c, 0x8ce: 0x0c, 0x8cf: 0x1f, + 0x8e0: 0x1f, + 0x8f0: 0x0c, 0x8f1: 0x0c, 0x8f2: 0x0c, 0x8f3: 0x0c, 0x8f4: 0x0c, 0x8f5: 0x0c, 0x8f6: 0x0c, 0x8f7: 0x0c, + 0x8f8: 0x0c, 0x8f9: 0x0c, 0x8fa: 0x0c, 0x8fb: 0x0c, 0x8fc: 0x0c, 0x8fd: 0x0c, 0x8fe: 0x0c, 0x8ff: 0x20, + // Block 0x24, offset 0x900 + 0x900: 0x0c, 0x901: 0x0c, 0x902: 0x0c, 0x903: 0x0c, 0x904: 0x0c, 0x905: 0x0c, 0x906: 0x0c, 0x907: 0x0c, + 0x908: 0x0c, 0x909: 0x0c, 0x90a: 0x0c, 0x90b: 0x0c, 0x90c: 0x0c, 0x90d: 0x0c, 0x90e: 0x0c, 0x90f: 0x20, } -// Total table size 25344 bytes (24KiB); checksum: 811C9DC5 +// Total table size 25920 bytes (25KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/unicode/bidi/tables.go b/vendor/golang.org/x/text/unicode/bidi/tables.go index 7212d5add..a0b2b17a1 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables.go @@ -3,7 +3,7 @@ package bidi // UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" +const UnicodeVersion = "10.0.0" // xorMasks contains masks to be xor-ed with brackets to get the reverse // version. @@ -181,7 +181,7 @@ func (t *bidiTrie) lookupStringUnsafe(s string) uint8 { return 0 } -// bidiTrie. Total size: 15744 bytes (15.38 KiB). Checksum: b4c3b70954803b86. +// bidiTrie. Total size: 16128 bytes (15.75 KiB). Checksum: 8122d83e461996f. type bidiTrie struct{} func newBidiTrie(i int) *bidiTrie { @@ -196,9 +196,9 @@ func (t *bidiTrie) lookupValue(n uint32, b byte) uint8 { } } -// bidiValues: 222 blocks, 14208 entries, 14208 bytes +// bidiValues: 228 blocks, 14592 entries, 14592 bytes // The third block is the zero block. -var bidiValues = [14208]uint8{ +var bidiValues = [14592]uint8{ // Block 0x0, offset 0x0 0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b, 0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008, @@ -415,9 +415,9 @@ var bidiValues = [14208]uint8{ 0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001, 0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001, 0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001, - 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x0001, 0x5e1: 0x0001, 0x5e2: 0x0001, 0x5e3: 0x0001, - 0x5e4: 0x0001, 0x5e5: 0x0001, 0x5e6: 0x0001, 0x5e7: 0x0001, 0x5e8: 0x0001, 0x5e9: 0x0001, - 0x5ea: 0x0001, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001, + 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d, + 0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d, + 0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d, 0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001, 0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001, 0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001, @@ -478,6 +478,8 @@ var bidiValues = [14208]uint8{ 0x80d: 0x000c, 0x822: 0x000c, 0x823: 0x000c, 0x831: 0x0004, + 0x83a: 0x000c, 0x83b: 0x000c, + 0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c, // Block 0x21, offset 0x840 0x841: 0x000c, 0x87c: 0x000c, 0x87f: 0x000c, @@ -508,7 +510,9 @@ var bidiValues = [14208]uint8{ 0x9cc: 0x000c, 0x9cd: 0x000c, 0x9e2: 0x000c, 0x9e3: 0x000c, // Block 0x28, offset 0xa00 - 0xa01: 0x000c, + 0xa00: 0x000c, 0xa01: 0x000c, + 0xa3b: 0x000c, + 0xa3c: 0x000c, // Block 0x29, offset 0xa40 0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c, 0xa4d: 0x000c, @@ -675,7 +679,7 @@ var bidiValues = [14208]uint8{ 0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c, 0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c, 0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c, - 0x133b: 0x000c, + 0x1336: 0x000c, 0x1337: 0x000c, 0x1338: 0x000c, 0x1339: 0x000c, 0x133b: 0x000c, 0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c, // Block 0x4d, offset 0x1340 0x137d: 0x000a, 0x137f: 0x000a, @@ -813,36 +817,36 @@ var bidiValues = [14208]uint8{ 0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a, 0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a, 0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a, - 0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a, - 0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a, - 0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a, - 0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a, - 0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, + 0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, // Block 0x5c, offset 0x1700 0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a, - 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a, - 0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a, - 0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a, - 0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a, - 0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a, - 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, + 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, + 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a, + 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a, + 0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a, + 0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a, + 0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a, + 0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a, // Block 0x5d, offset 0x1740 0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a, - 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a, - 0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a, - 0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a, - 0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a, - 0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a, - 0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a, - 0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a, + 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x0002, 0x1749: 0x0002, 0x174a: 0x0002, 0x174b: 0x0002, + 0x174c: 0x0002, 0x174d: 0x0002, 0x174e: 0x0002, 0x174f: 0x0002, 0x1750: 0x0002, 0x1751: 0x0002, + 0x1752: 0x0002, 0x1753: 0x0002, 0x1754: 0x0002, 0x1755: 0x0002, 0x1756: 0x0002, 0x1757: 0x0002, + 0x1758: 0x0002, 0x1759: 0x0002, 0x175a: 0x0002, 0x175b: 0x0002, // Block 0x5e, offset 0x1780 - 0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a, - 0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002, - 0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002, - 0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002, - 0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002, + 0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a, + 0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a, + 0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a, + 0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a, // Block 0x5f, offset 0x17c0 - 0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a, + 0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a, + 0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x000a, 0x17c9: 0x000a, 0x17ca: 0x000a, 0x17cb: 0x000a, + 0x17cc: 0x000a, 0x17cd: 0x000a, 0x17ce: 0x000a, 0x17cf: 0x000a, 0x17d0: 0x000a, 0x17d1: 0x000a, + 0x17d2: 0x000a, 0x17d3: 0x000a, 0x17d4: 0x000a, 0x17d5: 0x000a, 0x17d6: 0x000a, 0x17d7: 0x000a, + 0x17d8: 0x000a, 0x17d9: 0x000a, 0x17da: 0x000a, 0x17db: 0x000a, 0x17dc: 0x000a, 0x17dd: 0x000a, + 0x17de: 0x000a, 0x17df: 0x000a, 0x17e0: 0x000a, 0x17e1: 0x000a, 0x17e2: 0x000a, 0x17e3: 0x000a, + 0x17e4: 0x000a, 0x17e5: 0x000a, 0x17e6: 0x000a, 0x17e7: 0x000a, 0x17e8: 0x000a, 0x17e9: 0x000a, + 0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a, 0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a, 0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a, 0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a, @@ -853,282 +857,284 @@ var bidiValues = [14208]uint8{ 0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a, 0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a, 0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a, - 0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a, - 0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a, - 0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a, + 0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x003a, 0x1829: 0x002a, + 0x182a: 0x003a, 0x182b: 0x002a, 0x182c: 0x003a, 0x182d: 0x002a, 0x182e: 0x003a, 0x182f: 0x002a, + 0x1830: 0x003a, 0x1831: 0x002a, 0x1832: 0x003a, 0x1833: 0x002a, 0x1834: 0x003a, 0x1835: 0x002a, 0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a, 0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a, // Block 0x61, offset 0x1840 - 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a, - 0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a, + 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x009a, + 0x1846: 0x008a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a, 0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a, 0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a, 0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a, 0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a, - 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a, + 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x003a, 0x1867: 0x002a, 0x1868: 0x003a, 0x1869: 0x002a, 0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a, - 0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a, + 0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a, 0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a, 0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a, // Block 0x62, offset 0x1880 - 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a, - 0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a, - 0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a, - 0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a, - 0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a, + 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x007a, 0x1884: 0x006a, 0x1885: 0x009a, + 0x1886: 0x008a, 0x1887: 0x00ba, 0x1888: 0x00aa, 0x1889: 0x009a, 0x188a: 0x008a, 0x188b: 0x007a, + 0x188c: 0x006a, 0x188d: 0x00da, 0x188e: 0x002a, 0x188f: 0x003a, 0x1890: 0x00ca, 0x1891: 0x009a, + 0x1892: 0x008a, 0x1893: 0x007a, 0x1894: 0x006a, 0x1895: 0x009a, 0x1896: 0x008a, 0x1897: 0x00ba, + 0x1898: 0x00aa, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a, 0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a, - 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a, - 0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a, + 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x000a, 0x18a9: 0x000a, + 0x18aa: 0x000a, 0x18ab: 0x000a, 0x18ac: 0x000a, 0x18ad: 0x000a, 0x18ae: 0x000a, 0x18af: 0x000a, 0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a, 0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a, 0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a, // Block 0x63, offset 0x18c0 - 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a, - 0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a, - 0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a, - 0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba, - 0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a, + 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x000a, + 0x18c6: 0x000a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a, + 0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a, + 0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a, + 0x18d8: 0x003a, 0x18d9: 0x002a, 0x18da: 0x003a, 0x18db: 0x002a, 0x18dc: 0x000a, 0x18dd: 0x000a, 0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a, 0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a, 0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a, 0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a, 0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a, - 0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a, + 0x18fc: 0x003a, 0x18fd: 0x002a, 0x18fe: 0x000a, 0x18ff: 0x000a, // Block 0x64, offset 0x1900 0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a, 0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a, 0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a, 0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a, - 0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a, + 0x1918: 0x000a, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a, 0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a, 0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a, 0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a, - 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a, + 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a, - 0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a, + 0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a, // Block 0x65, offset 0x1940 0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a, 0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a, 0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a, - 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a, + 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a, 0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a, 0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a, 0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a, - 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, - 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a, - 0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a, + 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a, + 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, + 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a, // Block 0x66, offset 0x1980 0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a, - 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a, + 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a, 0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a, - 0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, - 0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a, - 0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a, - 0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a, - 0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a, - 0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a, - 0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, - 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a, + 0x1992: 0x000a, + 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a, // Block 0x67, offset 0x19c0 - 0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a, - 0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a, - 0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a, - 0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a, + 0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a, + 0x19ea: 0x000a, 0x19ef: 0x000c, + 0x19f0: 0x000c, 0x19f1: 0x000c, + 0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a, + 0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a, // Block 0x68, offset 0x1a00 - 0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a, - 0x1a2a: 0x000a, 0x1a2f: 0x000c, - 0x1a30: 0x000c, 0x1a31: 0x000c, - 0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a, - 0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a, + 0x1a3f: 0x000c, // Block 0x69, offset 0x1a40 - 0x1a7f: 0x000c, + 0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c, + 0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c, + 0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c, + 0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c, + 0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c, + 0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c, // Block 0x6a, offset 0x1a80 - 0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c, - 0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c, - 0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c, - 0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c, - 0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c, - 0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c, + 0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a, + 0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a, + 0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a, + 0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a, + 0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a, + 0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a, + 0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a, + 0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a, + 0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a, + 0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a, + 0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a, // Block 0x6b, offset 0x1ac0 0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a, - 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a, - 0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a, - 0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a, - 0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a, - 0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a, - 0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a, - 0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a, - 0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a, - 0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a, - 0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a, + 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, // Block 0x6c, offset 0x1b00 - 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, + 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a, + 0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a, + 0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a, + 0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a, + 0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a, + 0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a, + 0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a, + 0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a, + 0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a, + 0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a, + 0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a, // Block 0x6d, offset 0x1b40 0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a, 0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a, 0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a, 0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a, - 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a, + 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a, 0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a, 0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a, 0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a, - 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a, - 0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a, - 0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a, + 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, // Block 0x6e, offset 0x1b80 0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a, 0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a, 0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a, - 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a, - 0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a, - 0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a, - 0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a, - 0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a, - 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, + 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, + 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a, + 0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a, // Block 0x6f, offset 0x1bc0 - 0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a, - 0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a, - 0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a, - 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a, - 0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a, - 0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a, + 0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, + 0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a, + 0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a, + 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a, + 0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a, + 0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a, + 0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c, + 0x1bf0: 0x000a, + 0x1bf6: 0x000a, 0x1bf7: 0x000a, + 0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a, // Block 0x70, offset 0x1c00 - 0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a, - 0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a, - 0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a, - 0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a, - 0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a, - 0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a, - 0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c, - 0x1c30: 0x000a, - 0x1c36: 0x000a, 0x1c37: 0x000a, - 0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a, + 0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a, + 0x1c20: 0x000a, // Block 0x71, offset 0x1c40 - 0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a, - 0x1c60: 0x000a, + 0x1c7b: 0x000a, // Block 0x72, offset 0x1c80 - 0x1cbb: 0x000a, + 0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a, + 0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a, + 0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a, + 0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a, + 0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a, + 0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a, // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a, - 0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a, - 0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a, - 0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a, - 0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a, - 0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a, + 0x1cdd: 0x000a, + 0x1cde: 0x000a, // Block 0x74, offset 0x1d00 - 0x1d1d: 0x000a, - 0x1d1e: 0x000a, + 0x1d10: 0x000a, 0x1d11: 0x000a, + 0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a, + 0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a, + 0x1d1e: 0x000a, 0x1d1f: 0x000a, + 0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a, // Block 0x75, offset 0x1d40 - 0x1d50: 0x000a, 0x1d51: 0x000a, - 0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a, - 0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a, - 0x1d5e: 0x000a, 0x1d5f: 0x000a, - 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, + 0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a, + 0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a, + 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a, // Block 0x76, offset 0x1d80 - 0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a, - 0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a, - 0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a, + 0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a, // Block 0x77, offset 0x1dc0 - 0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a, + 0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a, // Block 0x78, offset 0x1e00 - 0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a, + 0x1e1e: 0x000a, 0x1e1f: 0x000a, + 0x1e3f: 0x000a, // Block 0x79, offset 0x1e40 - 0x1e5e: 0x000a, 0x1e5f: 0x000a, - 0x1e7f: 0x000a, + 0x1e50: 0x000a, 0x1e51: 0x000a, + 0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a, + 0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a, + 0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a, + 0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a, + 0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a, + 0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a, + 0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a, + 0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a, // Block 0x7a, offset 0x1e80 - 0x1e90: 0x000a, 0x1e91: 0x000a, - 0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a, - 0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a, - 0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a, - 0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a, - 0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a, - 0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a, - 0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a, - 0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a, + 0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a, + 0x1e86: 0x000a, // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a, - 0x1ec6: 0x000a, + 0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a, // Block 0x7c, offset 0x1f00 - 0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a, + 0x1f2f: 0x000c, + 0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c, + 0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c, + 0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a, // Block 0x7d, offset 0x1f40 - 0x1f6f: 0x000c, - 0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c, - 0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c, - 0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a, + 0x1f5e: 0x000c, 0x1f5f: 0x000c, // Block 0x7e, offset 0x1f80 - 0x1f9e: 0x000c, 0x1f9f: 0x000c, + 0x1fb0: 0x000c, 0x1fb1: 0x000c, // Block 0x7f, offset 0x1fc0 - 0x1ff0: 0x000c, 0x1ff1: 0x000c, + 0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a, + 0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a, + 0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a, + 0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a, + 0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a, + 0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a, // Block 0x80, offset 0x2000 - 0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a, - 0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a, - 0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a, - 0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a, - 0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a, - 0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a, + 0x2008: 0x000a, // Block 0x81, offset 0x2040 - 0x2048: 0x000a, + 0x2042: 0x000c, + 0x2046: 0x000c, 0x204b: 0x000c, + 0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a, + 0x206a: 0x000a, 0x206b: 0x000a, + 0x2078: 0x0004, 0x2079: 0x0004, // Block 0x82, offset 0x2080 - 0x2082: 0x000c, - 0x2086: 0x000c, 0x208b: 0x000c, - 0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a, - 0x20aa: 0x000a, 0x20ab: 0x000a, - 0x20b8: 0x0004, 0x20b9: 0x0004, + 0x20b4: 0x000a, 0x20b5: 0x000a, + 0x20b6: 0x000a, 0x20b7: 0x000a, // Block 0x83, offset 0x20c0 - 0x20f4: 0x000a, 0x20f5: 0x000a, - 0x20f6: 0x000a, 0x20f7: 0x000a, + 0x20c4: 0x000c, 0x20c5: 0x000c, + 0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c, + 0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c, + 0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c, + 0x20f0: 0x000c, 0x20f1: 0x000c, // Block 0x84, offset 0x2100 - 0x2104: 0x000c, 0x2105: 0x000c, - 0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c, - 0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c, - 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c, - 0x2130: 0x000c, 0x2131: 0x000c, + 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c, + 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, // Block 0x85, offset 0x2140 - 0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c, - 0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c, + 0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c, + 0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c, // Block 0x86, offset 0x2180 - 0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c, - 0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c, + 0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c, + 0x21b3: 0x000c, + 0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c, + 0x21bc: 0x000c, // Block 0x87, offset 0x21c0 - 0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c, - 0x21f3: 0x000c, - 0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c, - 0x21fc: 0x000c, + 0x21e5: 0x000c, // Block 0x88, offset 0x2200 - 0x2225: 0x000c, + 0x2229: 0x000c, + 0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c, + 0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c, + 0x2236: 0x000c, // Block 0x89, offset 0x2240 - 0x2269: 0x000c, - 0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c, - 0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c, - 0x2276: 0x000c, + 0x2243: 0x000c, + 0x224c: 0x000c, + 0x227c: 0x000c, // Block 0x8a, offset 0x2280 - 0x2283: 0x000c, - 0x228c: 0x000c, - 0x22bc: 0x000c, + 0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c, + 0x22b7: 0x000c, 0x22b8: 0x000c, + 0x22be: 0x000c, 0x22bf: 0x000c, // Block 0x8b, offset 0x22c0 - 0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c, - 0x22f7: 0x000c, 0x22f8: 0x000c, - 0x22fe: 0x000c, 0x22ff: 0x000c, + 0x22c1: 0x000c, + 0x22ec: 0x000c, 0x22ed: 0x000c, + 0x22f6: 0x000c, // Block 0x8c, offset 0x2300 - 0x2301: 0x000c, - 0x232c: 0x000c, 0x232d: 0x000c, - 0x2336: 0x000c, + 0x2325: 0x000c, 0x2328: 0x000c, + 0x232d: 0x000c, // Block 0x8d, offset 0x2340 - 0x2365: 0x000c, 0x2368: 0x000c, - 0x236d: 0x000c, + 0x235d: 0x0001, + 0x235e: 0x000c, 0x235f: 0x0001, 0x2360: 0x0001, 0x2361: 0x0001, 0x2362: 0x0001, 0x2363: 0x0001, + 0x2364: 0x0001, 0x2365: 0x0001, 0x2366: 0x0001, 0x2367: 0x0001, 0x2368: 0x0001, 0x2369: 0x0003, + 0x236a: 0x0001, 0x236b: 0x0001, 0x236c: 0x0001, 0x236d: 0x0001, 0x236e: 0x0001, 0x236f: 0x0001, + 0x2370: 0x0001, 0x2371: 0x0001, 0x2372: 0x0001, 0x2373: 0x0001, 0x2374: 0x0001, 0x2375: 0x0001, + 0x2376: 0x0001, 0x2377: 0x0001, 0x2378: 0x0001, 0x2379: 0x0001, 0x237a: 0x0001, 0x237b: 0x0001, + 0x237c: 0x0001, 0x237d: 0x0001, 0x237e: 0x0001, 0x237f: 0x0001, // Block 0x8e, offset 0x2380 - 0x239d: 0x0001, - 0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001, - 0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003, - 0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001, - 0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001, - 0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001, - 0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001, + 0x2380: 0x0001, 0x2381: 0x0001, 0x2382: 0x0001, 0x2383: 0x0001, 0x2384: 0x0001, 0x2385: 0x0001, + 0x2386: 0x0001, 0x2387: 0x0001, 0x2388: 0x0001, 0x2389: 0x0001, 0x238a: 0x0001, 0x238b: 0x0001, + 0x238c: 0x0001, 0x238d: 0x0001, 0x238e: 0x0001, 0x238f: 0x0001, 0x2390: 0x000d, 0x2391: 0x000d, + 0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d, + 0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d, + 0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d, + 0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d, + 0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d, + 0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d, + 0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d, + 0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000d, 0x23bf: 0x000d, // Block 0x8f, offset 0x23c0 - 0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001, - 0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001, - 0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d, + 0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000d, 0x23c4: 0x000d, 0x23c5: 0x000d, + 0x23c6: 0x000d, 0x23c7: 0x000d, 0x23c8: 0x000d, 0x23c9: 0x000d, 0x23ca: 0x000d, 0x23cb: 0x000d, + 0x23cc: 0x000d, 0x23cd: 0x000d, 0x23ce: 0x000d, 0x23cf: 0x000d, 0x23d0: 0x000d, 0x23d1: 0x000d, 0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d, 0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d, 0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d, @@ -1136,143 +1142,143 @@ var bidiValues = [14208]uint8{ 0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d, 0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d, 0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d, - 0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d, + 0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000a, 0x23ff: 0x000a, // Block 0x90, offset 0x2400 0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d, 0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d, - 0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d, - 0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d, - 0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d, - 0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d, - 0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d, - 0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d, + 0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000b, 0x2411: 0x000b, + 0x2412: 0x000b, 0x2413: 0x000b, 0x2414: 0x000b, 0x2415: 0x000b, 0x2416: 0x000b, 0x2417: 0x000b, + 0x2418: 0x000b, 0x2419: 0x000b, 0x241a: 0x000b, 0x241b: 0x000b, 0x241c: 0x000b, 0x241d: 0x000b, + 0x241e: 0x000b, 0x241f: 0x000b, 0x2420: 0x000b, 0x2421: 0x000b, 0x2422: 0x000b, 0x2423: 0x000b, + 0x2424: 0x000b, 0x2425: 0x000b, 0x2426: 0x000b, 0x2427: 0x000b, 0x2428: 0x000b, 0x2429: 0x000b, + 0x242a: 0x000b, 0x242b: 0x000b, 0x242c: 0x000b, 0x242d: 0x000b, 0x242e: 0x000b, 0x242f: 0x000b, 0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d, 0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d, - 0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a, + 0x243c: 0x000d, 0x243d: 0x000a, 0x243e: 0x000d, 0x243f: 0x000d, // Block 0x91, offset 0x2440 - 0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d, - 0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d, - 0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000b, 0x2451: 0x000b, - 0x2452: 0x000b, 0x2453: 0x000b, 0x2454: 0x000b, 0x2455: 0x000b, 0x2456: 0x000b, 0x2457: 0x000b, - 0x2458: 0x000b, 0x2459: 0x000b, 0x245a: 0x000b, 0x245b: 0x000b, 0x245c: 0x000b, 0x245d: 0x000b, - 0x245e: 0x000b, 0x245f: 0x000b, 0x2460: 0x000b, 0x2461: 0x000b, 0x2462: 0x000b, 0x2463: 0x000b, - 0x2464: 0x000b, 0x2465: 0x000b, 0x2466: 0x000b, 0x2467: 0x000b, 0x2468: 0x000b, 0x2469: 0x000b, - 0x246a: 0x000b, 0x246b: 0x000b, 0x246c: 0x000b, 0x246d: 0x000b, 0x246e: 0x000b, 0x246f: 0x000b, - 0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d, - 0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d, - 0x247c: 0x000d, 0x247d: 0x000a, 0x247e: 0x000d, 0x247f: 0x000d, + 0x2440: 0x000c, 0x2441: 0x000c, 0x2442: 0x000c, 0x2443: 0x000c, 0x2444: 0x000c, 0x2445: 0x000c, + 0x2446: 0x000c, 0x2447: 0x000c, 0x2448: 0x000c, 0x2449: 0x000c, 0x244a: 0x000c, 0x244b: 0x000c, + 0x244c: 0x000c, 0x244d: 0x000c, 0x244e: 0x000c, 0x244f: 0x000c, 0x2450: 0x000a, 0x2451: 0x000a, + 0x2452: 0x000a, 0x2453: 0x000a, 0x2454: 0x000a, 0x2455: 0x000a, 0x2456: 0x000a, 0x2457: 0x000a, + 0x2458: 0x000a, 0x2459: 0x000a, + 0x2460: 0x000c, 0x2461: 0x000c, 0x2462: 0x000c, 0x2463: 0x000c, + 0x2464: 0x000c, 0x2465: 0x000c, 0x2466: 0x000c, 0x2467: 0x000c, 0x2468: 0x000c, 0x2469: 0x000c, + 0x246a: 0x000c, 0x246b: 0x000c, 0x246c: 0x000c, 0x246d: 0x000c, 0x246e: 0x000c, 0x246f: 0x000c, + 0x2470: 0x000a, 0x2471: 0x000a, 0x2472: 0x000a, 0x2473: 0x000a, 0x2474: 0x000a, 0x2475: 0x000a, + 0x2476: 0x000a, 0x2477: 0x000a, 0x2478: 0x000a, 0x2479: 0x000a, 0x247a: 0x000a, 0x247b: 0x000a, + 0x247c: 0x000a, 0x247d: 0x000a, 0x247e: 0x000a, 0x247f: 0x000a, // Block 0x92, offset 0x2480 - 0x2480: 0x000c, 0x2481: 0x000c, 0x2482: 0x000c, 0x2483: 0x000c, 0x2484: 0x000c, 0x2485: 0x000c, - 0x2486: 0x000c, 0x2487: 0x000c, 0x2488: 0x000c, 0x2489: 0x000c, 0x248a: 0x000c, 0x248b: 0x000c, - 0x248c: 0x000c, 0x248d: 0x000c, 0x248e: 0x000c, 0x248f: 0x000c, 0x2490: 0x000a, 0x2491: 0x000a, - 0x2492: 0x000a, 0x2493: 0x000a, 0x2494: 0x000a, 0x2495: 0x000a, 0x2496: 0x000a, 0x2497: 0x000a, - 0x2498: 0x000a, 0x2499: 0x000a, - 0x24a0: 0x000c, 0x24a1: 0x000c, 0x24a2: 0x000c, 0x24a3: 0x000c, - 0x24a4: 0x000c, 0x24a5: 0x000c, 0x24a6: 0x000c, 0x24a7: 0x000c, 0x24a8: 0x000c, 0x24a9: 0x000c, - 0x24aa: 0x000c, 0x24ab: 0x000c, 0x24ac: 0x000c, 0x24ad: 0x000c, 0x24ae: 0x000c, 0x24af: 0x000c, - 0x24b0: 0x000a, 0x24b1: 0x000a, 0x24b2: 0x000a, 0x24b3: 0x000a, 0x24b4: 0x000a, 0x24b5: 0x000a, - 0x24b6: 0x000a, 0x24b7: 0x000a, 0x24b8: 0x000a, 0x24b9: 0x000a, 0x24ba: 0x000a, 0x24bb: 0x000a, - 0x24bc: 0x000a, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a, + 0x2480: 0x000a, 0x2481: 0x000a, 0x2482: 0x000a, 0x2483: 0x000a, 0x2484: 0x000a, 0x2485: 0x000a, + 0x2486: 0x000a, 0x2487: 0x000a, 0x2488: 0x000a, 0x2489: 0x000a, 0x248a: 0x000a, 0x248b: 0x000a, + 0x248c: 0x000a, 0x248d: 0x000a, 0x248e: 0x000a, 0x248f: 0x000a, 0x2490: 0x0006, 0x2491: 0x000a, + 0x2492: 0x0006, 0x2494: 0x000a, 0x2495: 0x0006, 0x2496: 0x000a, 0x2497: 0x000a, + 0x2498: 0x000a, 0x2499: 0x009a, 0x249a: 0x008a, 0x249b: 0x007a, 0x249c: 0x006a, 0x249d: 0x009a, + 0x249e: 0x008a, 0x249f: 0x0004, 0x24a0: 0x000a, 0x24a1: 0x000a, 0x24a2: 0x0003, 0x24a3: 0x0003, + 0x24a4: 0x000a, 0x24a5: 0x000a, 0x24a6: 0x000a, 0x24a8: 0x000a, 0x24a9: 0x0004, + 0x24aa: 0x0004, 0x24ab: 0x000a, + 0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d, + 0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d, + 0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000d, // Block 0x93, offset 0x24c0 - 0x24c0: 0x000a, 0x24c1: 0x000a, 0x24c2: 0x000a, 0x24c3: 0x000a, 0x24c4: 0x000a, 0x24c5: 0x000a, - 0x24c6: 0x000a, 0x24c7: 0x000a, 0x24c8: 0x000a, 0x24c9: 0x000a, 0x24ca: 0x000a, 0x24cb: 0x000a, - 0x24cc: 0x000a, 0x24cd: 0x000a, 0x24ce: 0x000a, 0x24cf: 0x000a, 0x24d0: 0x0006, 0x24d1: 0x000a, - 0x24d2: 0x0006, 0x24d4: 0x000a, 0x24d5: 0x0006, 0x24d6: 0x000a, 0x24d7: 0x000a, - 0x24d8: 0x000a, 0x24d9: 0x009a, 0x24da: 0x008a, 0x24db: 0x007a, 0x24dc: 0x006a, 0x24dd: 0x009a, - 0x24de: 0x008a, 0x24df: 0x0004, 0x24e0: 0x000a, 0x24e1: 0x000a, 0x24e2: 0x0003, 0x24e3: 0x0003, - 0x24e4: 0x000a, 0x24e5: 0x000a, 0x24e6: 0x000a, 0x24e8: 0x000a, 0x24e9: 0x0004, - 0x24ea: 0x0004, 0x24eb: 0x000a, + 0x24c0: 0x000d, 0x24c1: 0x000d, 0x24c2: 0x000d, 0x24c3: 0x000d, 0x24c4: 0x000d, 0x24c5: 0x000d, + 0x24c6: 0x000d, 0x24c7: 0x000d, 0x24c8: 0x000d, 0x24c9: 0x000d, 0x24ca: 0x000d, 0x24cb: 0x000d, + 0x24cc: 0x000d, 0x24cd: 0x000d, 0x24ce: 0x000d, 0x24cf: 0x000d, 0x24d0: 0x000d, 0x24d1: 0x000d, + 0x24d2: 0x000d, 0x24d3: 0x000d, 0x24d4: 0x000d, 0x24d5: 0x000d, 0x24d6: 0x000d, 0x24d7: 0x000d, + 0x24d8: 0x000d, 0x24d9: 0x000d, 0x24da: 0x000d, 0x24db: 0x000d, 0x24dc: 0x000d, 0x24dd: 0x000d, + 0x24de: 0x000d, 0x24df: 0x000d, 0x24e0: 0x000d, 0x24e1: 0x000d, 0x24e2: 0x000d, 0x24e3: 0x000d, + 0x24e4: 0x000d, 0x24e5: 0x000d, 0x24e6: 0x000d, 0x24e7: 0x000d, 0x24e8: 0x000d, 0x24e9: 0x000d, + 0x24ea: 0x000d, 0x24eb: 0x000d, 0x24ec: 0x000d, 0x24ed: 0x000d, 0x24ee: 0x000d, 0x24ef: 0x000d, 0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d, 0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d, - 0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000d, + 0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000b, // Block 0x94, offset 0x2500 - 0x2500: 0x000d, 0x2501: 0x000d, 0x2502: 0x000d, 0x2503: 0x000d, 0x2504: 0x000d, 0x2505: 0x000d, - 0x2506: 0x000d, 0x2507: 0x000d, 0x2508: 0x000d, 0x2509: 0x000d, 0x250a: 0x000d, 0x250b: 0x000d, - 0x250c: 0x000d, 0x250d: 0x000d, 0x250e: 0x000d, 0x250f: 0x000d, 0x2510: 0x000d, 0x2511: 0x000d, - 0x2512: 0x000d, 0x2513: 0x000d, 0x2514: 0x000d, 0x2515: 0x000d, 0x2516: 0x000d, 0x2517: 0x000d, - 0x2518: 0x000d, 0x2519: 0x000d, 0x251a: 0x000d, 0x251b: 0x000d, 0x251c: 0x000d, 0x251d: 0x000d, - 0x251e: 0x000d, 0x251f: 0x000d, 0x2520: 0x000d, 0x2521: 0x000d, 0x2522: 0x000d, 0x2523: 0x000d, - 0x2524: 0x000d, 0x2525: 0x000d, 0x2526: 0x000d, 0x2527: 0x000d, 0x2528: 0x000d, 0x2529: 0x000d, - 0x252a: 0x000d, 0x252b: 0x000d, 0x252c: 0x000d, 0x252d: 0x000d, 0x252e: 0x000d, 0x252f: 0x000d, - 0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d, - 0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d, - 0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000b, + 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x0004, 0x2504: 0x0004, 0x2505: 0x0004, + 0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x003a, 0x2509: 0x002a, 0x250a: 0x000a, 0x250b: 0x0003, + 0x250c: 0x0006, 0x250d: 0x0003, 0x250e: 0x0006, 0x250f: 0x0006, 0x2510: 0x0002, 0x2511: 0x0002, + 0x2512: 0x0002, 0x2513: 0x0002, 0x2514: 0x0002, 0x2515: 0x0002, 0x2516: 0x0002, 0x2517: 0x0002, + 0x2518: 0x0002, 0x2519: 0x0002, 0x251a: 0x0006, 0x251b: 0x000a, 0x251c: 0x000a, 0x251d: 0x000a, + 0x251e: 0x000a, 0x251f: 0x000a, 0x2520: 0x000a, + 0x253b: 0x005a, + 0x253c: 0x000a, 0x253d: 0x004a, 0x253e: 0x000a, 0x253f: 0x000a, // Block 0x95, offset 0x2540 - 0x2541: 0x000a, 0x2542: 0x000a, 0x2543: 0x0004, 0x2544: 0x0004, 0x2545: 0x0004, - 0x2546: 0x000a, 0x2547: 0x000a, 0x2548: 0x003a, 0x2549: 0x002a, 0x254a: 0x000a, 0x254b: 0x0003, - 0x254c: 0x0006, 0x254d: 0x0003, 0x254e: 0x0006, 0x254f: 0x0006, 0x2550: 0x0002, 0x2551: 0x0002, - 0x2552: 0x0002, 0x2553: 0x0002, 0x2554: 0x0002, 0x2555: 0x0002, 0x2556: 0x0002, 0x2557: 0x0002, - 0x2558: 0x0002, 0x2559: 0x0002, 0x255a: 0x0006, 0x255b: 0x000a, 0x255c: 0x000a, 0x255d: 0x000a, - 0x255e: 0x000a, 0x255f: 0x000a, 0x2560: 0x000a, - 0x257b: 0x005a, - 0x257c: 0x000a, 0x257d: 0x004a, 0x257e: 0x000a, 0x257f: 0x000a, + 0x2540: 0x000a, + 0x255b: 0x005a, 0x255c: 0x000a, 0x255d: 0x004a, + 0x255e: 0x000a, 0x255f: 0x00fa, 0x2560: 0x00ea, 0x2561: 0x000a, 0x2562: 0x003a, 0x2563: 0x002a, + 0x2564: 0x000a, 0x2565: 0x000a, // Block 0x96, offset 0x2580 - 0x2580: 0x000a, - 0x259b: 0x005a, 0x259c: 0x000a, 0x259d: 0x004a, - 0x259e: 0x000a, 0x259f: 0x00fa, 0x25a0: 0x00ea, 0x25a1: 0x000a, 0x25a2: 0x003a, 0x25a3: 0x002a, - 0x25a4: 0x000a, 0x25a5: 0x000a, + 0x25a0: 0x0004, 0x25a1: 0x0004, 0x25a2: 0x000a, 0x25a3: 0x000a, + 0x25a4: 0x000a, 0x25a5: 0x0004, 0x25a6: 0x0004, 0x25a8: 0x000a, 0x25a9: 0x000a, + 0x25aa: 0x000a, 0x25ab: 0x000a, 0x25ac: 0x000a, 0x25ad: 0x000a, 0x25ae: 0x000a, + 0x25b0: 0x000b, 0x25b1: 0x000b, 0x25b2: 0x000b, 0x25b3: 0x000b, 0x25b4: 0x000b, 0x25b5: 0x000b, + 0x25b6: 0x000b, 0x25b7: 0x000b, 0x25b8: 0x000b, 0x25b9: 0x000a, 0x25ba: 0x000a, 0x25bb: 0x000a, + 0x25bc: 0x000a, 0x25bd: 0x000a, 0x25be: 0x000b, 0x25bf: 0x000b, // Block 0x97, offset 0x25c0 - 0x25e0: 0x0004, 0x25e1: 0x0004, 0x25e2: 0x000a, 0x25e3: 0x000a, - 0x25e4: 0x000a, 0x25e5: 0x0004, 0x25e6: 0x0004, 0x25e8: 0x000a, 0x25e9: 0x000a, - 0x25ea: 0x000a, 0x25eb: 0x000a, 0x25ec: 0x000a, 0x25ed: 0x000a, 0x25ee: 0x000a, - 0x25f0: 0x000b, 0x25f1: 0x000b, 0x25f2: 0x000b, 0x25f3: 0x000b, 0x25f4: 0x000b, 0x25f5: 0x000b, - 0x25f6: 0x000b, 0x25f7: 0x000b, 0x25f8: 0x000b, 0x25f9: 0x000a, 0x25fa: 0x000a, 0x25fb: 0x000a, - 0x25fc: 0x000a, 0x25fd: 0x000a, 0x25fe: 0x000b, 0x25ff: 0x000b, + 0x25c1: 0x000a, // Block 0x98, offset 0x2600 - 0x2601: 0x000a, + 0x2600: 0x000a, 0x2601: 0x000a, 0x2602: 0x000a, 0x2603: 0x000a, 0x2604: 0x000a, 0x2605: 0x000a, + 0x2606: 0x000a, 0x2607: 0x000a, 0x2608: 0x000a, 0x2609: 0x000a, 0x260a: 0x000a, 0x260b: 0x000a, + 0x260c: 0x000a, 0x2610: 0x000a, 0x2611: 0x000a, + 0x2612: 0x000a, 0x2613: 0x000a, 0x2614: 0x000a, 0x2615: 0x000a, 0x2616: 0x000a, 0x2617: 0x000a, + 0x2618: 0x000a, 0x2619: 0x000a, 0x261a: 0x000a, 0x261b: 0x000a, + 0x2620: 0x000a, // Block 0x99, offset 0x2640 - 0x2640: 0x000a, 0x2641: 0x000a, 0x2642: 0x000a, 0x2643: 0x000a, 0x2644: 0x000a, 0x2645: 0x000a, - 0x2646: 0x000a, 0x2647: 0x000a, 0x2648: 0x000a, 0x2649: 0x000a, 0x264a: 0x000a, 0x264b: 0x000a, - 0x264c: 0x000a, 0x2650: 0x000a, 0x2651: 0x000a, - 0x2652: 0x000a, 0x2653: 0x000a, 0x2654: 0x000a, 0x2655: 0x000a, 0x2656: 0x000a, 0x2657: 0x000a, - 0x2658: 0x000a, 0x2659: 0x000a, 0x265a: 0x000a, 0x265b: 0x000a, - 0x2660: 0x000a, + 0x267d: 0x000c, // Block 0x9a, offset 0x2680 - 0x26bd: 0x000c, + 0x26a0: 0x000c, 0x26a1: 0x0002, 0x26a2: 0x0002, 0x26a3: 0x0002, + 0x26a4: 0x0002, 0x26a5: 0x0002, 0x26a6: 0x0002, 0x26a7: 0x0002, 0x26a8: 0x0002, 0x26a9: 0x0002, + 0x26aa: 0x0002, 0x26ab: 0x0002, 0x26ac: 0x0002, 0x26ad: 0x0002, 0x26ae: 0x0002, 0x26af: 0x0002, + 0x26b0: 0x0002, 0x26b1: 0x0002, 0x26b2: 0x0002, 0x26b3: 0x0002, 0x26b4: 0x0002, 0x26b5: 0x0002, + 0x26b6: 0x0002, 0x26b7: 0x0002, 0x26b8: 0x0002, 0x26b9: 0x0002, 0x26ba: 0x0002, 0x26bb: 0x0002, // Block 0x9b, offset 0x26c0 - 0x26e0: 0x000c, 0x26e1: 0x0002, 0x26e2: 0x0002, 0x26e3: 0x0002, - 0x26e4: 0x0002, 0x26e5: 0x0002, 0x26e6: 0x0002, 0x26e7: 0x0002, 0x26e8: 0x0002, 0x26e9: 0x0002, - 0x26ea: 0x0002, 0x26eb: 0x0002, 0x26ec: 0x0002, 0x26ed: 0x0002, 0x26ee: 0x0002, 0x26ef: 0x0002, - 0x26f0: 0x0002, 0x26f1: 0x0002, 0x26f2: 0x0002, 0x26f3: 0x0002, 0x26f4: 0x0002, 0x26f5: 0x0002, - 0x26f6: 0x0002, 0x26f7: 0x0002, 0x26f8: 0x0002, 0x26f9: 0x0002, 0x26fa: 0x0002, 0x26fb: 0x0002, + 0x26f6: 0x000c, 0x26f7: 0x000c, 0x26f8: 0x000c, 0x26f9: 0x000c, 0x26fa: 0x000c, // Block 0x9c, offset 0x2700 - 0x2736: 0x000c, 0x2737: 0x000c, 0x2738: 0x000c, 0x2739: 0x000c, 0x273a: 0x000c, + 0x2700: 0x0001, 0x2701: 0x0001, 0x2702: 0x0001, 0x2703: 0x0001, 0x2704: 0x0001, 0x2705: 0x0001, + 0x2706: 0x0001, 0x2707: 0x0001, 0x2708: 0x0001, 0x2709: 0x0001, 0x270a: 0x0001, 0x270b: 0x0001, + 0x270c: 0x0001, 0x270d: 0x0001, 0x270e: 0x0001, 0x270f: 0x0001, 0x2710: 0x0001, 0x2711: 0x0001, + 0x2712: 0x0001, 0x2713: 0x0001, 0x2714: 0x0001, 0x2715: 0x0001, 0x2716: 0x0001, 0x2717: 0x0001, + 0x2718: 0x0001, 0x2719: 0x0001, 0x271a: 0x0001, 0x271b: 0x0001, 0x271c: 0x0001, 0x271d: 0x0001, + 0x271e: 0x0001, 0x271f: 0x0001, 0x2720: 0x0001, 0x2721: 0x0001, 0x2722: 0x0001, 0x2723: 0x0001, + 0x2724: 0x0001, 0x2725: 0x0001, 0x2726: 0x0001, 0x2727: 0x0001, 0x2728: 0x0001, 0x2729: 0x0001, + 0x272a: 0x0001, 0x272b: 0x0001, 0x272c: 0x0001, 0x272d: 0x0001, 0x272e: 0x0001, 0x272f: 0x0001, + 0x2730: 0x0001, 0x2731: 0x0001, 0x2732: 0x0001, 0x2733: 0x0001, 0x2734: 0x0001, 0x2735: 0x0001, + 0x2736: 0x0001, 0x2737: 0x0001, 0x2738: 0x0001, 0x2739: 0x0001, 0x273a: 0x0001, 0x273b: 0x0001, + 0x273c: 0x0001, 0x273d: 0x0001, 0x273e: 0x0001, 0x273f: 0x0001, // Block 0x9d, offset 0x2740 0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001, 0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001, 0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001, 0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001, 0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001, - 0x275e: 0x0001, 0x275f: 0x0001, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001, + 0x275e: 0x0001, 0x275f: 0x000a, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001, 0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001, 0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001, 0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001, 0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001, 0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001, // Block 0x9e, offset 0x2780 - 0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001, - 0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001, - 0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001, + 0x2780: 0x0001, 0x2781: 0x000c, 0x2782: 0x000c, 0x2783: 0x000c, 0x2784: 0x0001, 0x2785: 0x000c, + 0x2786: 0x000c, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001, + 0x278c: 0x000c, 0x278d: 0x000c, 0x278e: 0x000c, 0x278f: 0x000c, 0x2790: 0x0001, 0x2791: 0x0001, 0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001, 0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001, - 0x279e: 0x0001, 0x279f: 0x000a, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001, + 0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001, 0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001, 0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001, 0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001, - 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001, - 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001, + 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x000c, 0x27b9: 0x000c, 0x27ba: 0x000c, 0x27bb: 0x0001, + 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x000c, // Block 0x9f, offset 0x27c0 - 0x27c0: 0x0001, 0x27c1: 0x000c, 0x27c2: 0x000c, 0x27c3: 0x000c, 0x27c4: 0x0001, 0x27c5: 0x000c, - 0x27c6: 0x000c, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001, - 0x27cc: 0x000c, 0x27cd: 0x000c, 0x27ce: 0x000c, 0x27cf: 0x000c, 0x27d0: 0x0001, 0x27d1: 0x0001, + 0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001, + 0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001, + 0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001, 0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001, 0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001, 0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001, - 0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001, + 0x27e4: 0x0001, 0x27e5: 0x000c, 0x27e6: 0x000c, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001, 0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001, 0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001, - 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x000c, 0x27f9: 0x000c, 0x27fa: 0x000c, 0x27fb: 0x0001, - 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x000c, + 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001, + 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001, // Block 0xa0, offset 0x2800 0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001, 0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001, @@ -1280,382 +1286,409 @@ var bidiValues = [14208]uint8{ 0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001, 0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001, 0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001, - 0x2824: 0x0001, 0x2825: 0x000c, 0x2826: 0x000c, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001, + 0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001, 0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001, 0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001, - 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x0001, 0x283a: 0x0001, 0x283b: 0x0001, - 0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x0001, + 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x000a, 0x283a: 0x000a, 0x283b: 0x000a, + 0x283c: 0x000a, 0x283d: 0x000a, 0x283e: 0x000a, 0x283f: 0x000a, // Block 0xa1, offset 0x2840 0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001, 0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001, 0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001, 0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001, 0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001, - 0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001, - 0x2864: 0x0001, 0x2865: 0x0001, 0x2866: 0x0001, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001, - 0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001, - 0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001, - 0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x000a, 0x287a: 0x000a, 0x287b: 0x000a, - 0x287c: 0x000a, 0x287d: 0x000a, 0x287e: 0x000a, 0x287f: 0x000a, + 0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0005, 0x2861: 0x0005, 0x2862: 0x0005, 0x2863: 0x0005, + 0x2864: 0x0005, 0x2865: 0x0005, 0x2866: 0x0005, 0x2867: 0x0005, 0x2868: 0x0005, 0x2869: 0x0005, + 0x286a: 0x0005, 0x286b: 0x0005, 0x286c: 0x0005, 0x286d: 0x0005, 0x286e: 0x0005, 0x286f: 0x0005, + 0x2870: 0x0005, 0x2871: 0x0005, 0x2872: 0x0005, 0x2873: 0x0005, 0x2874: 0x0005, 0x2875: 0x0005, + 0x2876: 0x0005, 0x2877: 0x0005, 0x2878: 0x0005, 0x2879: 0x0005, 0x287a: 0x0005, 0x287b: 0x0005, + 0x287c: 0x0005, 0x287d: 0x0005, 0x287e: 0x0005, 0x287f: 0x0001, // Block 0xa2, offset 0x2880 - 0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001, - 0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001, - 0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001, - 0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001, - 0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001, - 0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0005, 0x28a1: 0x0005, 0x28a2: 0x0005, 0x28a3: 0x0005, - 0x28a4: 0x0005, 0x28a5: 0x0005, 0x28a6: 0x0005, 0x28a7: 0x0005, 0x28a8: 0x0005, 0x28a9: 0x0005, - 0x28aa: 0x0005, 0x28ab: 0x0005, 0x28ac: 0x0005, 0x28ad: 0x0005, 0x28ae: 0x0005, 0x28af: 0x0005, - 0x28b0: 0x0005, 0x28b1: 0x0005, 0x28b2: 0x0005, 0x28b3: 0x0005, 0x28b4: 0x0005, 0x28b5: 0x0005, - 0x28b6: 0x0005, 0x28b7: 0x0005, 0x28b8: 0x0005, 0x28b9: 0x0005, 0x28ba: 0x0005, 0x28bb: 0x0005, - 0x28bc: 0x0005, 0x28bd: 0x0005, 0x28be: 0x0005, 0x28bf: 0x0001, + 0x2881: 0x000c, + 0x28b8: 0x000c, 0x28b9: 0x000c, 0x28ba: 0x000c, 0x28bb: 0x000c, + 0x28bc: 0x000c, 0x28bd: 0x000c, 0x28be: 0x000c, 0x28bf: 0x000c, // Block 0xa3, offset 0x28c0 - 0x28c1: 0x000c, - 0x28f8: 0x000c, 0x28f9: 0x000c, 0x28fa: 0x000c, 0x28fb: 0x000c, - 0x28fc: 0x000c, 0x28fd: 0x000c, 0x28fe: 0x000c, 0x28ff: 0x000c, + 0x28c0: 0x000c, 0x28c1: 0x000c, 0x28c2: 0x000c, 0x28c3: 0x000c, 0x28c4: 0x000c, 0x28c5: 0x000c, + 0x28c6: 0x000c, + 0x28d2: 0x000a, 0x28d3: 0x000a, 0x28d4: 0x000a, 0x28d5: 0x000a, 0x28d6: 0x000a, 0x28d7: 0x000a, + 0x28d8: 0x000a, 0x28d9: 0x000a, 0x28da: 0x000a, 0x28db: 0x000a, 0x28dc: 0x000a, 0x28dd: 0x000a, + 0x28de: 0x000a, 0x28df: 0x000a, 0x28e0: 0x000a, 0x28e1: 0x000a, 0x28e2: 0x000a, 0x28e3: 0x000a, + 0x28e4: 0x000a, 0x28e5: 0x000a, + 0x28ff: 0x000c, // Block 0xa4, offset 0x2900 - 0x2900: 0x000c, 0x2901: 0x000c, 0x2902: 0x000c, 0x2903: 0x000c, 0x2904: 0x000c, 0x2905: 0x000c, - 0x2906: 0x000c, - 0x2912: 0x000a, 0x2913: 0x000a, 0x2914: 0x000a, 0x2915: 0x000a, 0x2916: 0x000a, 0x2917: 0x000a, - 0x2918: 0x000a, 0x2919: 0x000a, 0x291a: 0x000a, 0x291b: 0x000a, 0x291c: 0x000a, 0x291d: 0x000a, - 0x291e: 0x000a, 0x291f: 0x000a, 0x2920: 0x000a, 0x2921: 0x000a, 0x2922: 0x000a, 0x2923: 0x000a, - 0x2924: 0x000a, 0x2925: 0x000a, - 0x293f: 0x000c, + 0x2900: 0x000c, 0x2901: 0x000c, + 0x2933: 0x000c, 0x2934: 0x000c, 0x2935: 0x000c, + 0x2936: 0x000c, 0x2939: 0x000c, 0x293a: 0x000c, // Block 0xa5, offset 0x2940 - 0x2940: 0x000c, 0x2941: 0x000c, - 0x2973: 0x000c, 0x2974: 0x000c, 0x2975: 0x000c, - 0x2976: 0x000c, 0x2979: 0x000c, 0x297a: 0x000c, + 0x2940: 0x000c, 0x2941: 0x000c, 0x2942: 0x000c, + 0x2967: 0x000c, 0x2968: 0x000c, 0x2969: 0x000c, + 0x296a: 0x000c, 0x296b: 0x000c, 0x296d: 0x000c, 0x296e: 0x000c, 0x296f: 0x000c, + 0x2970: 0x000c, 0x2971: 0x000c, 0x2972: 0x000c, 0x2973: 0x000c, 0x2974: 0x000c, // Block 0xa6, offset 0x2980 - 0x2980: 0x000c, 0x2981: 0x000c, 0x2982: 0x000c, - 0x29a7: 0x000c, 0x29a8: 0x000c, 0x29a9: 0x000c, - 0x29aa: 0x000c, 0x29ab: 0x000c, 0x29ad: 0x000c, 0x29ae: 0x000c, 0x29af: 0x000c, - 0x29b0: 0x000c, 0x29b1: 0x000c, 0x29b2: 0x000c, 0x29b3: 0x000c, 0x29b4: 0x000c, + 0x29b3: 0x000c, // Block 0xa7, offset 0x29c0 - 0x29f3: 0x000c, + 0x29c0: 0x000c, 0x29c1: 0x000c, + 0x29f6: 0x000c, 0x29f7: 0x000c, 0x29f8: 0x000c, 0x29f9: 0x000c, 0x29fa: 0x000c, 0x29fb: 0x000c, + 0x29fc: 0x000c, 0x29fd: 0x000c, 0x29fe: 0x000c, // Block 0xa8, offset 0x2a00 - 0x2a00: 0x000c, 0x2a01: 0x000c, - 0x2a36: 0x000c, 0x2a37: 0x000c, 0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c, - 0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c, + 0x2a0a: 0x000c, 0x2a0b: 0x000c, + 0x2a0c: 0x000c, // Block 0xa9, offset 0x2a40 - 0x2a4a: 0x000c, 0x2a4b: 0x000c, - 0x2a4c: 0x000c, + 0x2a6f: 0x000c, + 0x2a70: 0x000c, 0x2a71: 0x000c, 0x2a74: 0x000c, + 0x2a76: 0x000c, 0x2a77: 0x000c, + 0x2a7e: 0x000c, // Block 0xaa, offset 0x2a80 - 0x2aaf: 0x000c, - 0x2ab0: 0x000c, 0x2ab1: 0x000c, 0x2ab4: 0x000c, - 0x2ab6: 0x000c, 0x2ab7: 0x000c, - 0x2abe: 0x000c, + 0x2a9f: 0x000c, 0x2aa3: 0x000c, + 0x2aa4: 0x000c, 0x2aa5: 0x000c, 0x2aa6: 0x000c, 0x2aa7: 0x000c, 0x2aa8: 0x000c, 0x2aa9: 0x000c, + 0x2aaa: 0x000c, // Block 0xab, offset 0x2ac0 - 0x2adf: 0x000c, 0x2ae3: 0x000c, - 0x2ae4: 0x000c, 0x2ae5: 0x000c, 0x2ae6: 0x000c, 0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c, - 0x2aea: 0x000c, + 0x2ac0: 0x000c, 0x2ac1: 0x000c, + 0x2afc: 0x000c, // Block 0xac, offset 0x2b00 - 0x2b00: 0x000c, 0x2b01: 0x000c, - 0x2b3c: 0x000c, + 0x2b00: 0x000c, + 0x2b26: 0x000c, 0x2b27: 0x000c, 0x2b28: 0x000c, 0x2b29: 0x000c, + 0x2b2a: 0x000c, 0x2b2b: 0x000c, 0x2b2c: 0x000c, + 0x2b30: 0x000c, 0x2b31: 0x000c, 0x2b32: 0x000c, 0x2b33: 0x000c, 0x2b34: 0x000c, // Block 0xad, offset 0x2b40 - 0x2b40: 0x000c, - 0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c, - 0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6c: 0x000c, - 0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c, + 0x2b78: 0x000c, 0x2b79: 0x000c, 0x2b7a: 0x000c, 0x2b7b: 0x000c, + 0x2b7c: 0x000c, 0x2b7d: 0x000c, 0x2b7e: 0x000c, 0x2b7f: 0x000c, // Block 0xae, offset 0x2b80 - 0x2bb8: 0x000c, 0x2bb9: 0x000c, 0x2bba: 0x000c, 0x2bbb: 0x000c, - 0x2bbc: 0x000c, 0x2bbd: 0x000c, 0x2bbe: 0x000c, 0x2bbf: 0x000c, + 0x2b82: 0x000c, 0x2b83: 0x000c, 0x2b84: 0x000c, + 0x2b86: 0x000c, // Block 0xaf, offset 0x2bc0 - 0x2bc2: 0x000c, 0x2bc3: 0x000c, 0x2bc4: 0x000c, - 0x2bc6: 0x000c, + 0x2bf3: 0x000c, 0x2bf4: 0x000c, 0x2bf5: 0x000c, + 0x2bf6: 0x000c, 0x2bf7: 0x000c, 0x2bf8: 0x000c, 0x2bfa: 0x000c, + 0x2bff: 0x000c, // Block 0xb0, offset 0x2c00 - 0x2c33: 0x000c, 0x2c34: 0x000c, 0x2c35: 0x000c, - 0x2c36: 0x000c, 0x2c37: 0x000c, 0x2c38: 0x000c, 0x2c3a: 0x000c, - 0x2c3f: 0x000c, + 0x2c00: 0x000c, 0x2c02: 0x000c, 0x2c03: 0x000c, // Block 0xb1, offset 0x2c40 - 0x2c40: 0x000c, 0x2c42: 0x000c, 0x2c43: 0x000c, + 0x2c72: 0x000c, 0x2c73: 0x000c, 0x2c74: 0x000c, 0x2c75: 0x000c, + 0x2c7c: 0x000c, 0x2c7d: 0x000c, 0x2c7f: 0x000c, // Block 0xb2, offset 0x2c80 - 0x2cb2: 0x000c, 0x2cb3: 0x000c, 0x2cb4: 0x000c, 0x2cb5: 0x000c, - 0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbf: 0x000c, + 0x2c80: 0x000c, + 0x2c9c: 0x000c, 0x2c9d: 0x000c, // Block 0xb3, offset 0x2cc0 - 0x2cc0: 0x000c, - 0x2cdc: 0x000c, 0x2cdd: 0x000c, + 0x2cf3: 0x000c, 0x2cf4: 0x000c, 0x2cf5: 0x000c, + 0x2cf6: 0x000c, 0x2cf7: 0x000c, 0x2cf8: 0x000c, 0x2cf9: 0x000c, 0x2cfa: 0x000c, + 0x2cfd: 0x000c, 0x2cff: 0x000c, // Block 0xb4, offset 0x2d00 - 0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c, - 0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c, - 0x2d3d: 0x000c, 0x2d3f: 0x000c, + 0x2d00: 0x000c, + 0x2d20: 0x000a, 0x2d21: 0x000a, 0x2d22: 0x000a, 0x2d23: 0x000a, + 0x2d24: 0x000a, 0x2d25: 0x000a, 0x2d26: 0x000a, 0x2d27: 0x000a, 0x2d28: 0x000a, 0x2d29: 0x000a, + 0x2d2a: 0x000a, 0x2d2b: 0x000a, 0x2d2c: 0x000a, // Block 0xb5, offset 0x2d40 - 0x2d40: 0x000c, - 0x2d60: 0x000a, 0x2d61: 0x000a, 0x2d62: 0x000a, 0x2d63: 0x000a, - 0x2d64: 0x000a, 0x2d65: 0x000a, 0x2d66: 0x000a, 0x2d67: 0x000a, 0x2d68: 0x000a, 0x2d69: 0x000a, - 0x2d6a: 0x000a, 0x2d6b: 0x000a, 0x2d6c: 0x000a, + 0x2d6b: 0x000c, 0x2d6d: 0x000c, + 0x2d70: 0x000c, 0x2d71: 0x000c, 0x2d72: 0x000c, 0x2d73: 0x000c, 0x2d74: 0x000c, 0x2d75: 0x000c, + 0x2d77: 0x000c, // Block 0xb6, offset 0x2d80 - 0x2dab: 0x000c, 0x2dad: 0x000c, - 0x2db0: 0x000c, 0x2db1: 0x000c, 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c, - 0x2db7: 0x000c, + 0x2d9d: 0x000c, + 0x2d9e: 0x000c, 0x2d9f: 0x000c, 0x2da2: 0x000c, 0x2da3: 0x000c, + 0x2da4: 0x000c, 0x2da5: 0x000c, 0x2da7: 0x000c, 0x2da8: 0x000c, 0x2da9: 0x000c, + 0x2daa: 0x000c, 0x2dab: 0x000c, // Block 0xb7, offset 0x2dc0 - 0x2ddd: 0x000c, - 0x2dde: 0x000c, 0x2ddf: 0x000c, 0x2de2: 0x000c, 0x2de3: 0x000c, - 0x2de4: 0x000c, 0x2de5: 0x000c, 0x2de7: 0x000c, 0x2de8: 0x000c, 0x2de9: 0x000c, - 0x2dea: 0x000c, 0x2deb: 0x000c, + 0x2dc1: 0x000c, 0x2dc2: 0x000c, 0x2dc3: 0x000c, 0x2dc4: 0x000c, 0x2dc5: 0x000c, + 0x2dc6: 0x000c, 0x2dc9: 0x000c, 0x2dca: 0x000c, + 0x2df3: 0x000c, 0x2df4: 0x000c, 0x2df5: 0x000c, + 0x2df6: 0x000c, 0x2df7: 0x000c, 0x2df8: 0x000c, 0x2dfb: 0x000c, + 0x2dfc: 0x000c, 0x2dfd: 0x000c, 0x2dfe: 0x000c, // Block 0xb8, offset 0x2e00 - 0x2e30: 0x000c, 0x2e31: 0x000c, 0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c, - 0x2e36: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c, 0x2e3b: 0x000c, - 0x2e3c: 0x000c, 0x2e3d: 0x000c, + 0x2e07: 0x000c, + 0x2e11: 0x000c, + 0x2e12: 0x000c, 0x2e13: 0x000c, 0x2e14: 0x000c, 0x2e15: 0x000c, 0x2e16: 0x000c, + 0x2e19: 0x000c, 0x2e1a: 0x000c, 0x2e1b: 0x000c, // Block 0xb9, offset 0x2e40 - 0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c, 0x2e57: 0x000c, - 0x2e58: 0x000c, 0x2e59: 0x000c, 0x2e5a: 0x000c, 0x2e5b: 0x000c, 0x2e5c: 0x000c, 0x2e5d: 0x000c, - 0x2e5e: 0x000c, 0x2e5f: 0x000c, 0x2e60: 0x000c, 0x2e61: 0x000c, 0x2e62: 0x000c, 0x2e63: 0x000c, - 0x2e64: 0x000c, 0x2e65: 0x000c, 0x2e66: 0x000c, 0x2e67: 0x000c, - 0x2e6a: 0x000c, 0x2e6b: 0x000c, 0x2e6c: 0x000c, 0x2e6d: 0x000c, 0x2e6e: 0x000c, 0x2e6f: 0x000c, - 0x2e70: 0x000c, 0x2e72: 0x000c, 0x2e73: 0x000c, 0x2e75: 0x000c, - 0x2e76: 0x000c, + 0x2e4a: 0x000c, 0x2e4b: 0x000c, + 0x2e4c: 0x000c, 0x2e4d: 0x000c, 0x2e4e: 0x000c, 0x2e4f: 0x000c, 0x2e50: 0x000c, 0x2e51: 0x000c, + 0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c, + 0x2e58: 0x000c, 0x2e59: 0x000c, // Block 0xba, offset 0x2e80 - 0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, + 0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c, + 0x2eb6: 0x000c, 0x2eb8: 0x000c, 0x2eb9: 0x000c, 0x2eba: 0x000c, 0x2ebb: 0x000c, + 0x2ebc: 0x000c, 0x2ebd: 0x000c, // Block 0xbb, offset 0x2ec0 - 0x2ef0: 0x000c, 0x2ef1: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef4: 0x000c, 0x2ef5: 0x000c, + 0x2ed2: 0x000c, 0x2ed3: 0x000c, 0x2ed4: 0x000c, 0x2ed5: 0x000c, 0x2ed6: 0x000c, 0x2ed7: 0x000c, + 0x2ed8: 0x000c, 0x2ed9: 0x000c, 0x2eda: 0x000c, 0x2edb: 0x000c, 0x2edc: 0x000c, 0x2edd: 0x000c, + 0x2ede: 0x000c, 0x2edf: 0x000c, 0x2ee0: 0x000c, 0x2ee1: 0x000c, 0x2ee2: 0x000c, 0x2ee3: 0x000c, + 0x2ee4: 0x000c, 0x2ee5: 0x000c, 0x2ee6: 0x000c, 0x2ee7: 0x000c, + 0x2eea: 0x000c, 0x2eeb: 0x000c, 0x2eec: 0x000c, 0x2eed: 0x000c, 0x2eee: 0x000c, 0x2eef: 0x000c, + 0x2ef0: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef5: 0x000c, 0x2ef6: 0x000c, // Block 0xbc, offset 0x2f00 - 0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c, - 0x2f12: 0x000c, + 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c, + 0x2f36: 0x000c, 0x2f3a: 0x000c, + 0x2f3c: 0x000c, 0x2f3d: 0x000c, 0x2f3f: 0x000c, // Block 0xbd, offset 0x2f40 - 0x2f5d: 0x000c, - 0x2f5e: 0x000c, 0x2f60: 0x000b, 0x2f61: 0x000b, 0x2f62: 0x000b, 0x2f63: 0x000b, + 0x2f40: 0x000c, 0x2f41: 0x000c, 0x2f42: 0x000c, 0x2f43: 0x000c, 0x2f44: 0x000c, 0x2f45: 0x000c, + 0x2f47: 0x000c, // Block 0xbe, offset 0x2f80 - 0x2fa7: 0x000c, 0x2fa8: 0x000c, 0x2fa9: 0x000c, - 0x2fb3: 0x000b, 0x2fb4: 0x000b, 0x2fb5: 0x000b, - 0x2fb6: 0x000b, 0x2fb7: 0x000b, 0x2fb8: 0x000b, 0x2fb9: 0x000b, 0x2fba: 0x000b, 0x2fbb: 0x000c, - 0x2fbc: 0x000c, 0x2fbd: 0x000c, 0x2fbe: 0x000c, 0x2fbf: 0x000c, + 0x2fb0: 0x000c, 0x2fb1: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb4: 0x000c, // Block 0xbf, offset 0x2fc0 - 0x2fc0: 0x000c, 0x2fc1: 0x000c, 0x2fc2: 0x000c, 0x2fc5: 0x000c, - 0x2fc6: 0x000c, 0x2fc7: 0x000c, 0x2fc8: 0x000c, 0x2fc9: 0x000c, 0x2fca: 0x000c, 0x2fcb: 0x000c, - 0x2fea: 0x000c, 0x2feb: 0x000c, 0x2fec: 0x000c, 0x2fed: 0x000c, + 0x2ff0: 0x000c, 0x2ff1: 0x000c, 0x2ff2: 0x000c, 0x2ff3: 0x000c, 0x2ff4: 0x000c, 0x2ff5: 0x000c, + 0x2ff6: 0x000c, // Block 0xc0, offset 0x3000 - 0x3000: 0x000a, 0x3001: 0x000a, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000a, + 0x300f: 0x000c, 0x3010: 0x000c, 0x3011: 0x000c, + 0x3012: 0x000c, // Block 0xc1, offset 0x3040 - 0x3040: 0x000a, 0x3041: 0x000a, 0x3042: 0x000a, 0x3043: 0x000a, 0x3044: 0x000a, 0x3045: 0x000a, - 0x3046: 0x000a, 0x3047: 0x000a, 0x3048: 0x000a, 0x3049: 0x000a, 0x304a: 0x000a, 0x304b: 0x000a, - 0x304c: 0x000a, 0x304d: 0x000a, 0x304e: 0x000a, 0x304f: 0x000a, 0x3050: 0x000a, 0x3051: 0x000a, - 0x3052: 0x000a, 0x3053: 0x000a, 0x3054: 0x000a, 0x3055: 0x000a, 0x3056: 0x000a, + 0x305d: 0x000c, + 0x305e: 0x000c, 0x3060: 0x000b, 0x3061: 0x000b, 0x3062: 0x000b, 0x3063: 0x000b, // Block 0xc2, offset 0x3080 - 0x309b: 0x000a, + 0x30a7: 0x000c, 0x30a8: 0x000c, 0x30a9: 0x000c, + 0x30b3: 0x000b, 0x30b4: 0x000b, 0x30b5: 0x000b, + 0x30b6: 0x000b, 0x30b7: 0x000b, 0x30b8: 0x000b, 0x30b9: 0x000b, 0x30ba: 0x000b, 0x30bb: 0x000c, + 0x30bc: 0x000c, 0x30bd: 0x000c, 0x30be: 0x000c, 0x30bf: 0x000c, // Block 0xc3, offset 0x30c0 - 0x30d5: 0x000a, + 0x30c0: 0x000c, 0x30c1: 0x000c, 0x30c2: 0x000c, 0x30c5: 0x000c, + 0x30c6: 0x000c, 0x30c7: 0x000c, 0x30c8: 0x000c, 0x30c9: 0x000c, 0x30ca: 0x000c, 0x30cb: 0x000c, + 0x30ea: 0x000c, 0x30eb: 0x000c, 0x30ec: 0x000c, 0x30ed: 0x000c, // Block 0xc4, offset 0x3100 - 0x310f: 0x000a, + 0x3100: 0x000a, 0x3101: 0x000a, 0x3102: 0x000c, 0x3103: 0x000c, 0x3104: 0x000c, 0x3105: 0x000a, // Block 0xc5, offset 0x3140 - 0x3149: 0x000a, + 0x3140: 0x000a, 0x3141: 0x000a, 0x3142: 0x000a, 0x3143: 0x000a, 0x3144: 0x000a, 0x3145: 0x000a, + 0x3146: 0x000a, 0x3147: 0x000a, 0x3148: 0x000a, 0x3149: 0x000a, 0x314a: 0x000a, 0x314b: 0x000a, + 0x314c: 0x000a, 0x314d: 0x000a, 0x314e: 0x000a, 0x314f: 0x000a, 0x3150: 0x000a, 0x3151: 0x000a, + 0x3152: 0x000a, 0x3153: 0x000a, 0x3154: 0x000a, 0x3155: 0x000a, 0x3156: 0x000a, // Block 0xc6, offset 0x3180 - 0x3183: 0x000a, - 0x318e: 0x0002, 0x318f: 0x0002, 0x3190: 0x0002, 0x3191: 0x0002, - 0x3192: 0x0002, 0x3193: 0x0002, 0x3194: 0x0002, 0x3195: 0x0002, 0x3196: 0x0002, 0x3197: 0x0002, - 0x3198: 0x0002, 0x3199: 0x0002, 0x319a: 0x0002, 0x319b: 0x0002, 0x319c: 0x0002, 0x319d: 0x0002, - 0x319e: 0x0002, 0x319f: 0x0002, 0x31a0: 0x0002, 0x31a1: 0x0002, 0x31a2: 0x0002, 0x31a3: 0x0002, - 0x31a4: 0x0002, 0x31a5: 0x0002, 0x31a6: 0x0002, 0x31a7: 0x0002, 0x31a8: 0x0002, 0x31a9: 0x0002, - 0x31aa: 0x0002, 0x31ab: 0x0002, 0x31ac: 0x0002, 0x31ad: 0x0002, 0x31ae: 0x0002, 0x31af: 0x0002, - 0x31b0: 0x0002, 0x31b1: 0x0002, 0x31b2: 0x0002, 0x31b3: 0x0002, 0x31b4: 0x0002, 0x31b5: 0x0002, - 0x31b6: 0x0002, 0x31b7: 0x0002, 0x31b8: 0x0002, 0x31b9: 0x0002, 0x31ba: 0x0002, 0x31bb: 0x0002, - 0x31bc: 0x0002, 0x31bd: 0x0002, 0x31be: 0x0002, 0x31bf: 0x0002, + 0x319b: 0x000a, // Block 0xc7, offset 0x31c0 - 0x31c0: 0x000c, 0x31c1: 0x000c, 0x31c2: 0x000c, 0x31c3: 0x000c, 0x31c4: 0x000c, 0x31c5: 0x000c, - 0x31c6: 0x000c, 0x31c7: 0x000c, 0x31c8: 0x000c, 0x31c9: 0x000c, 0x31ca: 0x000c, 0x31cb: 0x000c, - 0x31cc: 0x000c, 0x31cd: 0x000c, 0x31ce: 0x000c, 0x31cf: 0x000c, 0x31d0: 0x000c, 0x31d1: 0x000c, - 0x31d2: 0x000c, 0x31d3: 0x000c, 0x31d4: 0x000c, 0x31d5: 0x000c, 0x31d6: 0x000c, 0x31d7: 0x000c, - 0x31d8: 0x000c, 0x31d9: 0x000c, 0x31da: 0x000c, 0x31db: 0x000c, 0x31dc: 0x000c, 0x31dd: 0x000c, - 0x31de: 0x000c, 0x31df: 0x000c, 0x31e0: 0x000c, 0x31e1: 0x000c, 0x31e2: 0x000c, 0x31e3: 0x000c, - 0x31e4: 0x000c, 0x31e5: 0x000c, 0x31e6: 0x000c, 0x31e7: 0x000c, 0x31e8: 0x000c, 0x31e9: 0x000c, - 0x31ea: 0x000c, 0x31eb: 0x000c, 0x31ec: 0x000c, 0x31ed: 0x000c, 0x31ee: 0x000c, 0x31ef: 0x000c, - 0x31f0: 0x000c, 0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c, - 0x31f6: 0x000c, 0x31fb: 0x000c, - 0x31fc: 0x000c, 0x31fd: 0x000c, 0x31fe: 0x000c, 0x31ff: 0x000c, + 0x31d5: 0x000a, // Block 0xc8, offset 0x3200 - 0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c, - 0x3206: 0x000c, 0x3207: 0x000c, 0x3208: 0x000c, 0x3209: 0x000c, 0x320a: 0x000c, 0x320b: 0x000c, - 0x320c: 0x000c, 0x320d: 0x000c, 0x320e: 0x000c, 0x320f: 0x000c, 0x3210: 0x000c, 0x3211: 0x000c, - 0x3212: 0x000c, 0x3213: 0x000c, 0x3214: 0x000c, 0x3215: 0x000c, 0x3216: 0x000c, 0x3217: 0x000c, - 0x3218: 0x000c, 0x3219: 0x000c, 0x321a: 0x000c, 0x321b: 0x000c, 0x321c: 0x000c, 0x321d: 0x000c, - 0x321e: 0x000c, 0x321f: 0x000c, 0x3220: 0x000c, 0x3221: 0x000c, 0x3222: 0x000c, 0x3223: 0x000c, - 0x3224: 0x000c, 0x3225: 0x000c, 0x3226: 0x000c, 0x3227: 0x000c, 0x3228: 0x000c, 0x3229: 0x000c, - 0x322a: 0x000c, 0x322b: 0x000c, 0x322c: 0x000c, - 0x3235: 0x000c, + 0x320f: 0x000a, // Block 0xc9, offset 0x3240 - 0x3244: 0x000c, - 0x325b: 0x000c, 0x325c: 0x000c, 0x325d: 0x000c, - 0x325e: 0x000c, 0x325f: 0x000c, 0x3261: 0x000c, 0x3262: 0x000c, 0x3263: 0x000c, - 0x3264: 0x000c, 0x3265: 0x000c, 0x3266: 0x000c, 0x3267: 0x000c, 0x3268: 0x000c, 0x3269: 0x000c, - 0x326a: 0x000c, 0x326b: 0x000c, 0x326c: 0x000c, 0x326d: 0x000c, 0x326e: 0x000c, 0x326f: 0x000c, + 0x3249: 0x000a, // Block 0xca, offset 0x3280 - 0x3280: 0x000c, 0x3281: 0x000c, 0x3282: 0x000c, 0x3283: 0x000c, 0x3284: 0x000c, 0x3285: 0x000c, - 0x3286: 0x000c, 0x3288: 0x000c, 0x3289: 0x000c, 0x328a: 0x000c, 0x328b: 0x000c, - 0x328c: 0x000c, 0x328d: 0x000c, 0x328e: 0x000c, 0x328f: 0x000c, 0x3290: 0x000c, 0x3291: 0x000c, - 0x3292: 0x000c, 0x3293: 0x000c, 0x3294: 0x000c, 0x3295: 0x000c, 0x3296: 0x000c, 0x3297: 0x000c, - 0x3298: 0x000c, 0x329b: 0x000c, 0x329c: 0x000c, 0x329d: 0x000c, - 0x329e: 0x000c, 0x329f: 0x000c, 0x32a0: 0x000c, 0x32a1: 0x000c, 0x32a3: 0x000c, - 0x32a4: 0x000c, 0x32a6: 0x000c, 0x32a7: 0x000c, 0x32a8: 0x000c, 0x32a9: 0x000c, - 0x32aa: 0x000c, + 0x3283: 0x000a, + 0x328e: 0x0002, 0x328f: 0x0002, 0x3290: 0x0002, 0x3291: 0x0002, + 0x3292: 0x0002, 0x3293: 0x0002, 0x3294: 0x0002, 0x3295: 0x0002, 0x3296: 0x0002, 0x3297: 0x0002, + 0x3298: 0x0002, 0x3299: 0x0002, 0x329a: 0x0002, 0x329b: 0x0002, 0x329c: 0x0002, 0x329d: 0x0002, + 0x329e: 0x0002, 0x329f: 0x0002, 0x32a0: 0x0002, 0x32a1: 0x0002, 0x32a2: 0x0002, 0x32a3: 0x0002, + 0x32a4: 0x0002, 0x32a5: 0x0002, 0x32a6: 0x0002, 0x32a7: 0x0002, 0x32a8: 0x0002, 0x32a9: 0x0002, + 0x32aa: 0x0002, 0x32ab: 0x0002, 0x32ac: 0x0002, 0x32ad: 0x0002, 0x32ae: 0x0002, 0x32af: 0x0002, + 0x32b0: 0x0002, 0x32b1: 0x0002, 0x32b2: 0x0002, 0x32b3: 0x0002, 0x32b4: 0x0002, 0x32b5: 0x0002, + 0x32b6: 0x0002, 0x32b7: 0x0002, 0x32b8: 0x0002, 0x32b9: 0x0002, 0x32ba: 0x0002, 0x32bb: 0x0002, + 0x32bc: 0x0002, 0x32bd: 0x0002, 0x32be: 0x0002, 0x32bf: 0x0002, // Block 0xcb, offset 0x32c0 - 0x32c0: 0x0001, 0x32c1: 0x0001, 0x32c2: 0x0001, 0x32c3: 0x0001, 0x32c4: 0x0001, 0x32c5: 0x0001, - 0x32c6: 0x0001, 0x32c7: 0x0001, 0x32c8: 0x0001, 0x32c9: 0x0001, 0x32ca: 0x0001, 0x32cb: 0x0001, - 0x32cc: 0x0001, 0x32cd: 0x0001, 0x32ce: 0x0001, 0x32cf: 0x0001, 0x32d0: 0x000c, 0x32d1: 0x000c, - 0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x0001, - 0x32d8: 0x0001, 0x32d9: 0x0001, 0x32da: 0x0001, 0x32db: 0x0001, 0x32dc: 0x0001, 0x32dd: 0x0001, - 0x32de: 0x0001, 0x32df: 0x0001, 0x32e0: 0x0001, 0x32e1: 0x0001, 0x32e2: 0x0001, 0x32e3: 0x0001, - 0x32e4: 0x0001, 0x32e5: 0x0001, 0x32e6: 0x0001, 0x32e7: 0x0001, 0x32e8: 0x0001, 0x32e9: 0x0001, - 0x32ea: 0x0001, 0x32eb: 0x0001, 0x32ec: 0x0001, 0x32ed: 0x0001, 0x32ee: 0x0001, 0x32ef: 0x0001, - 0x32f0: 0x0001, 0x32f1: 0x0001, 0x32f2: 0x0001, 0x32f3: 0x0001, 0x32f4: 0x0001, 0x32f5: 0x0001, - 0x32f6: 0x0001, 0x32f7: 0x0001, 0x32f8: 0x0001, 0x32f9: 0x0001, 0x32fa: 0x0001, 0x32fb: 0x0001, - 0x32fc: 0x0001, 0x32fd: 0x0001, 0x32fe: 0x0001, 0x32ff: 0x0001, + 0x32c0: 0x000c, 0x32c1: 0x000c, 0x32c2: 0x000c, 0x32c3: 0x000c, 0x32c4: 0x000c, 0x32c5: 0x000c, + 0x32c6: 0x000c, 0x32c7: 0x000c, 0x32c8: 0x000c, 0x32c9: 0x000c, 0x32ca: 0x000c, 0x32cb: 0x000c, + 0x32cc: 0x000c, 0x32cd: 0x000c, 0x32ce: 0x000c, 0x32cf: 0x000c, 0x32d0: 0x000c, 0x32d1: 0x000c, + 0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x000c, + 0x32d8: 0x000c, 0x32d9: 0x000c, 0x32da: 0x000c, 0x32db: 0x000c, 0x32dc: 0x000c, 0x32dd: 0x000c, + 0x32de: 0x000c, 0x32df: 0x000c, 0x32e0: 0x000c, 0x32e1: 0x000c, 0x32e2: 0x000c, 0x32e3: 0x000c, + 0x32e4: 0x000c, 0x32e5: 0x000c, 0x32e6: 0x000c, 0x32e7: 0x000c, 0x32e8: 0x000c, 0x32e9: 0x000c, + 0x32ea: 0x000c, 0x32eb: 0x000c, 0x32ec: 0x000c, 0x32ed: 0x000c, 0x32ee: 0x000c, 0x32ef: 0x000c, + 0x32f0: 0x000c, 0x32f1: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f4: 0x000c, 0x32f5: 0x000c, + 0x32f6: 0x000c, 0x32fb: 0x000c, + 0x32fc: 0x000c, 0x32fd: 0x000c, 0x32fe: 0x000c, 0x32ff: 0x000c, // Block 0xcc, offset 0x3300 - 0x3300: 0x0001, 0x3301: 0x0001, 0x3302: 0x0001, 0x3303: 0x0001, 0x3304: 0x000c, 0x3305: 0x000c, - 0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x0001, - 0x330c: 0x0001, 0x330d: 0x0001, 0x330e: 0x0001, 0x330f: 0x0001, 0x3310: 0x0001, 0x3311: 0x0001, - 0x3312: 0x0001, 0x3313: 0x0001, 0x3314: 0x0001, 0x3315: 0x0001, 0x3316: 0x0001, 0x3317: 0x0001, - 0x3318: 0x0001, 0x3319: 0x0001, 0x331a: 0x0001, 0x331b: 0x0001, 0x331c: 0x0001, 0x331d: 0x0001, - 0x331e: 0x0001, 0x331f: 0x0001, 0x3320: 0x0001, 0x3321: 0x0001, 0x3322: 0x0001, 0x3323: 0x0001, - 0x3324: 0x0001, 0x3325: 0x0001, 0x3326: 0x0001, 0x3327: 0x0001, 0x3328: 0x0001, 0x3329: 0x0001, - 0x332a: 0x0001, 0x332b: 0x0001, 0x332c: 0x0001, 0x332d: 0x0001, 0x332e: 0x0001, 0x332f: 0x0001, - 0x3330: 0x0001, 0x3331: 0x0001, 0x3332: 0x0001, 0x3333: 0x0001, 0x3334: 0x0001, 0x3335: 0x0001, - 0x3336: 0x0001, 0x3337: 0x0001, 0x3338: 0x0001, 0x3339: 0x0001, 0x333a: 0x0001, 0x333b: 0x0001, - 0x333c: 0x0001, 0x333d: 0x0001, 0x333e: 0x0001, 0x333f: 0x0001, + 0x3300: 0x000c, 0x3301: 0x000c, 0x3302: 0x000c, 0x3303: 0x000c, 0x3304: 0x000c, 0x3305: 0x000c, + 0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x000c, + 0x330c: 0x000c, 0x330d: 0x000c, 0x330e: 0x000c, 0x330f: 0x000c, 0x3310: 0x000c, 0x3311: 0x000c, + 0x3312: 0x000c, 0x3313: 0x000c, 0x3314: 0x000c, 0x3315: 0x000c, 0x3316: 0x000c, 0x3317: 0x000c, + 0x3318: 0x000c, 0x3319: 0x000c, 0x331a: 0x000c, 0x331b: 0x000c, 0x331c: 0x000c, 0x331d: 0x000c, + 0x331e: 0x000c, 0x331f: 0x000c, 0x3320: 0x000c, 0x3321: 0x000c, 0x3322: 0x000c, 0x3323: 0x000c, + 0x3324: 0x000c, 0x3325: 0x000c, 0x3326: 0x000c, 0x3327: 0x000c, 0x3328: 0x000c, 0x3329: 0x000c, + 0x332a: 0x000c, 0x332b: 0x000c, 0x332c: 0x000c, + 0x3335: 0x000c, // Block 0xcd, offset 0x3340 - 0x3340: 0x000d, 0x3341: 0x000d, 0x3342: 0x000d, 0x3343: 0x000d, 0x3344: 0x000d, 0x3345: 0x000d, - 0x3346: 0x000d, 0x3347: 0x000d, 0x3348: 0x000d, 0x3349: 0x000d, 0x334a: 0x000d, 0x334b: 0x000d, - 0x334c: 0x000d, 0x334d: 0x000d, 0x334e: 0x000d, 0x334f: 0x000d, 0x3350: 0x000d, 0x3351: 0x000d, - 0x3352: 0x000d, 0x3353: 0x000d, 0x3354: 0x000d, 0x3355: 0x000d, 0x3356: 0x000d, 0x3357: 0x000d, - 0x3358: 0x000d, 0x3359: 0x000d, 0x335a: 0x000d, 0x335b: 0x000d, 0x335c: 0x000d, 0x335d: 0x000d, - 0x335e: 0x000d, 0x335f: 0x000d, 0x3360: 0x000d, 0x3361: 0x000d, 0x3362: 0x000d, 0x3363: 0x000d, - 0x3364: 0x000d, 0x3365: 0x000d, 0x3366: 0x000d, 0x3367: 0x000d, 0x3368: 0x000d, 0x3369: 0x000d, - 0x336a: 0x000d, 0x336b: 0x000d, 0x336c: 0x000d, 0x336d: 0x000d, 0x336e: 0x000d, 0x336f: 0x000d, - 0x3370: 0x000a, 0x3371: 0x000a, 0x3372: 0x000d, 0x3373: 0x000d, 0x3374: 0x000d, 0x3375: 0x000d, - 0x3376: 0x000d, 0x3377: 0x000d, 0x3378: 0x000d, 0x3379: 0x000d, 0x337a: 0x000d, 0x337b: 0x000d, - 0x337c: 0x000d, 0x337d: 0x000d, 0x337e: 0x000d, 0x337f: 0x000d, + 0x3344: 0x000c, + 0x335b: 0x000c, 0x335c: 0x000c, 0x335d: 0x000c, + 0x335e: 0x000c, 0x335f: 0x000c, 0x3361: 0x000c, 0x3362: 0x000c, 0x3363: 0x000c, + 0x3364: 0x000c, 0x3365: 0x000c, 0x3366: 0x000c, 0x3367: 0x000c, 0x3368: 0x000c, 0x3369: 0x000c, + 0x336a: 0x000c, 0x336b: 0x000c, 0x336c: 0x000c, 0x336d: 0x000c, 0x336e: 0x000c, 0x336f: 0x000c, // Block 0xce, offset 0x3380 - 0x3380: 0x000a, 0x3381: 0x000a, 0x3382: 0x000a, 0x3383: 0x000a, 0x3384: 0x000a, 0x3385: 0x000a, - 0x3386: 0x000a, 0x3387: 0x000a, 0x3388: 0x000a, 0x3389: 0x000a, 0x338a: 0x000a, 0x338b: 0x000a, - 0x338c: 0x000a, 0x338d: 0x000a, 0x338e: 0x000a, 0x338f: 0x000a, 0x3390: 0x000a, 0x3391: 0x000a, - 0x3392: 0x000a, 0x3393: 0x000a, 0x3394: 0x000a, 0x3395: 0x000a, 0x3396: 0x000a, 0x3397: 0x000a, - 0x3398: 0x000a, 0x3399: 0x000a, 0x339a: 0x000a, 0x339b: 0x000a, 0x339c: 0x000a, 0x339d: 0x000a, - 0x339e: 0x000a, 0x339f: 0x000a, 0x33a0: 0x000a, 0x33a1: 0x000a, 0x33a2: 0x000a, 0x33a3: 0x000a, - 0x33a4: 0x000a, 0x33a5: 0x000a, 0x33a6: 0x000a, 0x33a7: 0x000a, 0x33a8: 0x000a, 0x33a9: 0x000a, - 0x33aa: 0x000a, 0x33ab: 0x000a, - 0x33b0: 0x000a, 0x33b1: 0x000a, 0x33b2: 0x000a, 0x33b3: 0x000a, 0x33b4: 0x000a, 0x33b5: 0x000a, - 0x33b6: 0x000a, 0x33b7: 0x000a, 0x33b8: 0x000a, 0x33b9: 0x000a, 0x33ba: 0x000a, 0x33bb: 0x000a, - 0x33bc: 0x000a, 0x33bd: 0x000a, 0x33be: 0x000a, 0x33bf: 0x000a, + 0x3380: 0x000c, 0x3381: 0x000c, 0x3382: 0x000c, 0x3383: 0x000c, 0x3384: 0x000c, 0x3385: 0x000c, + 0x3386: 0x000c, 0x3388: 0x000c, 0x3389: 0x000c, 0x338a: 0x000c, 0x338b: 0x000c, + 0x338c: 0x000c, 0x338d: 0x000c, 0x338e: 0x000c, 0x338f: 0x000c, 0x3390: 0x000c, 0x3391: 0x000c, + 0x3392: 0x000c, 0x3393: 0x000c, 0x3394: 0x000c, 0x3395: 0x000c, 0x3396: 0x000c, 0x3397: 0x000c, + 0x3398: 0x000c, 0x339b: 0x000c, 0x339c: 0x000c, 0x339d: 0x000c, + 0x339e: 0x000c, 0x339f: 0x000c, 0x33a0: 0x000c, 0x33a1: 0x000c, 0x33a3: 0x000c, + 0x33a4: 0x000c, 0x33a6: 0x000c, 0x33a7: 0x000c, 0x33a8: 0x000c, 0x33a9: 0x000c, + 0x33aa: 0x000c, // Block 0xcf, offset 0x33c0 - 0x33c0: 0x000a, 0x33c1: 0x000a, 0x33c2: 0x000a, 0x33c3: 0x000a, 0x33c4: 0x000a, 0x33c5: 0x000a, - 0x33c6: 0x000a, 0x33c7: 0x000a, 0x33c8: 0x000a, 0x33c9: 0x000a, 0x33ca: 0x000a, 0x33cb: 0x000a, - 0x33cc: 0x000a, 0x33cd: 0x000a, 0x33ce: 0x000a, 0x33cf: 0x000a, 0x33d0: 0x000a, 0x33d1: 0x000a, - 0x33d2: 0x000a, 0x33d3: 0x000a, - 0x33e0: 0x000a, 0x33e1: 0x000a, 0x33e2: 0x000a, 0x33e3: 0x000a, - 0x33e4: 0x000a, 0x33e5: 0x000a, 0x33e6: 0x000a, 0x33e7: 0x000a, 0x33e8: 0x000a, 0x33e9: 0x000a, - 0x33ea: 0x000a, 0x33eb: 0x000a, 0x33ec: 0x000a, 0x33ed: 0x000a, 0x33ee: 0x000a, - 0x33f1: 0x000a, 0x33f2: 0x000a, 0x33f3: 0x000a, 0x33f4: 0x000a, 0x33f5: 0x000a, - 0x33f6: 0x000a, 0x33f7: 0x000a, 0x33f8: 0x000a, 0x33f9: 0x000a, 0x33fa: 0x000a, 0x33fb: 0x000a, - 0x33fc: 0x000a, 0x33fd: 0x000a, 0x33fe: 0x000a, 0x33ff: 0x000a, + 0x33c0: 0x0001, 0x33c1: 0x0001, 0x33c2: 0x0001, 0x33c3: 0x0001, 0x33c4: 0x0001, 0x33c5: 0x0001, + 0x33c6: 0x0001, 0x33c7: 0x0001, 0x33c8: 0x0001, 0x33c9: 0x0001, 0x33ca: 0x0001, 0x33cb: 0x0001, + 0x33cc: 0x0001, 0x33cd: 0x0001, 0x33ce: 0x0001, 0x33cf: 0x0001, 0x33d0: 0x000c, 0x33d1: 0x000c, + 0x33d2: 0x000c, 0x33d3: 0x000c, 0x33d4: 0x000c, 0x33d5: 0x000c, 0x33d6: 0x000c, 0x33d7: 0x0001, + 0x33d8: 0x0001, 0x33d9: 0x0001, 0x33da: 0x0001, 0x33db: 0x0001, 0x33dc: 0x0001, 0x33dd: 0x0001, + 0x33de: 0x0001, 0x33df: 0x0001, 0x33e0: 0x0001, 0x33e1: 0x0001, 0x33e2: 0x0001, 0x33e3: 0x0001, + 0x33e4: 0x0001, 0x33e5: 0x0001, 0x33e6: 0x0001, 0x33e7: 0x0001, 0x33e8: 0x0001, 0x33e9: 0x0001, + 0x33ea: 0x0001, 0x33eb: 0x0001, 0x33ec: 0x0001, 0x33ed: 0x0001, 0x33ee: 0x0001, 0x33ef: 0x0001, + 0x33f0: 0x0001, 0x33f1: 0x0001, 0x33f2: 0x0001, 0x33f3: 0x0001, 0x33f4: 0x0001, 0x33f5: 0x0001, + 0x33f6: 0x0001, 0x33f7: 0x0001, 0x33f8: 0x0001, 0x33f9: 0x0001, 0x33fa: 0x0001, 0x33fb: 0x0001, + 0x33fc: 0x0001, 0x33fd: 0x0001, 0x33fe: 0x0001, 0x33ff: 0x0001, // Block 0xd0, offset 0x3400 - 0x3401: 0x000a, 0x3402: 0x000a, 0x3403: 0x000a, 0x3404: 0x000a, 0x3405: 0x000a, - 0x3406: 0x000a, 0x3407: 0x000a, 0x3408: 0x000a, 0x3409: 0x000a, 0x340a: 0x000a, 0x340b: 0x000a, - 0x340c: 0x000a, 0x340d: 0x000a, 0x340e: 0x000a, 0x340f: 0x000a, 0x3411: 0x000a, - 0x3412: 0x000a, 0x3413: 0x000a, 0x3414: 0x000a, 0x3415: 0x000a, 0x3416: 0x000a, 0x3417: 0x000a, - 0x3418: 0x000a, 0x3419: 0x000a, 0x341a: 0x000a, 0x341b: 0x000a, 0x341c: 0x000a, 0x341d: 0x000a, - 0x341e: 0x000a, 0x341f: 0x000a, 0x3420: 0x000a, 0x3421: 0x000a, 0x3422: 0x000a, 0x3423: 0x000a, - 0x3424: 0x000a, 0x3425: 0x000a, 0x3426: 0x000a, 0x3427: 0x000a, 0x3428: 0x000a, 0x3429: 0x000a, - 0x342a: 0x000a, 0x342b: 0x000a, 0x342c: 0x000a, 0x342d: 0x000a, 0x342e: 0x000a, 0x342f: 0x000a, - 0x3430: 0x000a, 0x3431: 0x000a, 0x3432: 0x000a, 0x3433: 0x000a, 0x3434: 0x000a, 0x3435: 0x000a, + 0x3400: 0x0001, 0x3401: 0x0001, 0x3402: 0x0001, 0x3403: 0x0001, 0x3404: 0x000c, 0x3405: 0x000c, + 0x3406: 0x000c, 0x3407: 0x000c, 0x3408: 0x000c, 0x3409: 0x000c, 0x340a: 0x000c, 0x340b: 0x0001, + 0x340c: 0x0001, 0x340d: 0x0001, 0x340e: 0x0001, 0x340f: 0x0001, 0x3410: 0x0001, 0x3411: 0x0001, + 0x3412: 0x0001, 0x3413: 0x0001, 0x3414: 0x0001, 0x3415: 0x0001, 0x3416: 0x0001, 0x3417: 0x0001, + 0x3418: 0x0001, 0x3419: 0x0001, 0x341a: 0x0001, 0x341b: 0x0001, 0x341c: 0x0001, 0x341d: 0x0001, + 0x341e: 0x0001, 0x341f: 0x0001, 0x3420: 0x0001, 0x3421: 0x0001, 0x3422: 0x0001, 0x3423: 0x0001, + 0x3424: 0x0001, 0x3425: 0x0001, 0x3426: 0x0001, 0x3427: 0x0001, 0x3428: 0x0001, 0x3429: 0x0001, + 0x342a: 0x0001, 0x342b: 0x0001, 0x342c: 0x0001, 0x342d: 0x0001, 0x342e: 0x0001, 0x342f: 0x0001, + 0x3430: 0x0001, 0x3431: 0x0001, 0x3432: 0x0001, 0x3433: 0x0001, 0x3434: 0x0001, 0x3435: 0x0001, + 0x3436: 0x0001, 0x3437: 0x0001, 0x3438: 0x0001, 0x3439: 0x0001, 0x343a: 0x0001, 0x343b: 0x0001, + 0x343c: 0x0001, 0x343d: 0x0001, 0x343e: 0x0001, 0x343f: 0x0001, // Block 0xd1, offset 0x3440 - 0x3440: 0x0002, 0x3441: 0x0002, 0x3442: 0x0002, 0x3443: 0x0002, 0x3444: 0x0002, 0x3445: 0x0002, - 0x3446: 0x0002, 0x3447: 0x0002, 0x3448: 0x0002, 0x3449: 0x0002, 0x344a: 0x0002, 0x344b: 0x000a, - 0x344c: 0x000a, + 0x3440: 0x000d, 0x3441: 0x000d, 0x3442: 0x000d, 0x3443: 0x000d, 0x3444: 0x000d, 0x3445: 0x000d, + 0x3446: 0x000d, 0x3447: 0x000d, 0x3448: 0x000d, 0x3449: 0x000d, 0x344a: 0x000d, 0x344b: 0x000d, + 0x344c: 0x000d, 0x344d: 0x000d, 0x344e: 0x000d, 0x344f: 0x000d, 0x3450: 0x000d, 0x3451: 0x000d, + 0x3452: 0x000d, 0x3453: 0x000d, 0x3454: 0x000d, 0x3455: 0x000d, 0x3456: 0x000d, 0x3457: 0x000d, + 0x3458: 0x000d, 0x3459: 0x000d, 0x345a: 0x000d, 0x345b: 0x000d, 0x345c: 0x000d, 0x345d: 0x000d, + 0x345e: 0x000d, 0x345f: 0x000d, 0x3460: 0x000d, 0x3461: 0x000d, 0x3462: 0x000d, 0x3463: 0x000d, + 0x3464: 0x000d, 0x3465: 0x000d, 0x3466: 0x000d, 0x3467: 0x000d, 0x3468: 0x000d, 0x3469: 0x000d, + 0x346a: 0x000d, 0x346b: 0x000d, 0x346c: 0x000d, 0x346d: 0x000d, 0x346e: 0x000d, 0x346f: 0x000d, + 0x3470: 0x000a, 0x3471: 0x000a, 0x3472: 0x000d, 0x3473: 0x000d, 0x3474: 0x000d, 0x3475: 0x000d, + 0x3476: 0x000d, 0x3477: 0x000d, 0x3478: 0x000d, 0x3479: 0x000d, 0x347a: 0x000d, 0x347b: 0x000d, + 0x347c: 0x000d, 0x347d: 0x000d, 0x347e: 0x000d, 0x347f: 0x000d, // Block 0xd2, offset 0x3480 + 0x3480: 0x000a, 0x3481: 0x000a, 0x3482: 0x000a, 0x3483: 0x000a, 0x3484: 0x000a, 0x3485: 0x000a, + 0x3486: 0x000a, 0x3487: 0x000a, 0x3488: 0x000a, 0x3489: 0x000a, 0x348a: 0x000a, 0x348b: 0x000a, + 0x348c: 0x000a, 0x348d: 0x000a, 0x348e: 0x000a, 0x348f: 0x000a, 0x3490: 0x000a, 0x3491: 0x000a, + 0x3492: 0x000a, 0x3493: 0x000a, 0x3494: 0x000a, 0x3495: 0x000a, 0x3496: 0x000a, 0x3497: 0x000a, + 0x3498: 0x000a, 0x3499: 0x000a, 0x349a: 0x000a, 0x349b: 0x000a, 0x349c: 0x000a, 0x349d: 0x000a, + 0x349e: 0x000a, 0x349f: 0x000a, 0x34a0: 0x000a, 0x34a1: 0x000a, 0x34a2: 0x000a, 0x34a3: 0x000a, + 0x34a4: 0x000a, 0x34a5: 0x000a, 0x34a6: 0x000a, 0x34a7: 0x000a, 0x34a8: 0x000a, 0x34a9: 0x000a, 0x34aa: 0x000a, 0x34ab: 0x000a, + 0x34b0: 0x000a, 0x34b1: 0x000a, 0x34b2: 0x000a, 0x34b3: 0x000a, 0x34b4: 0x000a, 0x34b5: 0x000a, + 0x34b6: 0x000a, 0x34b7: 0x000a, 0x34b8: 0x000a, 0x34b9: 0x000a, 0x34ba: 0x000a, 0x34bb: 0x000a, + 0x34bc: 0x000a, 0x34bd: 0x000a, 0x34be: 0x000a, 0x34bf: 0x000a, // Block 0xd3, offset 0x34c0 0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a, 0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a, 0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a, - 0x34d2: 0x000a, + 0x34d2: 0x000a, 0x34d3: 0x000a, 0x34e0: 0x000a, 0x34e1: 0x000a, 0x34e2: 0x000a, 0x34e3: 0x000a, 0x34e4: 0x000a, 0x34e5: 0x000a, 0x34e6: 0x000a, 0x34e7: 0x000a, 0x34e8: 0x000a, 0x34e9: 0x000a, - 0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a, - 0x34f0: 0x000a, 0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a, - 0x34f6: 0x000a, + 0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a, 0x34ed: 0x000a, 0x34ee: 0x000a, + 0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a, + 0x34f6: 0x000a, 0x34f7: 0x000a, 0x34f8: 0x000a, 0x34f9: 0x000a, 0x34fa: 0x000a, 0x34fb: 0x000a, + 0x34fc: 0x000a, 0x34fd: 0x000a, 0x34fe: 0x000a, 0x34ff: 0x000a, // Block 0xd4, offset 0x3500 - 0x3500: 0x000a, 0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a, + 0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a, 0x3506: 0x000a, 0x3507: 0x000a, 0x3508: 0x000a, 0x3509: 0x000a, 0x350a: 0x000a, 0x350b: 0x000a, - 0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3510: 0x000a, 0x3511: 0x000a, - 0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a, + 0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3511: 0x000a, + 0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a, 0x3515: 0x000a, 0x3516: 0x000a, 0x3517: 0x000a, + 0x3518: 0x000a, 0x3519: 0x000a, 0x351a: 0x000a, 0x351b: 0x000a, 0x351c: 0x000a, 0x351d: 0x000a, + 0x351e: 0x000a, 0x351f: 0x000a, 0x3520: 0x000a, 0x3521: 0x000a, 0x3522: 0x000a, 0x3523: 0x000a, + 0x3524: 0x000a, 0x3525: 0x000a, 0x3526: 0x000a, 0x3527: 0x000a, 0x3528: 0x000a, 0x3529: 0x000a, + 0x352a: 0x000a, 0x352b: 0x000a, 0x352c: 0x000a, 0x352d: 0x000a, 0x352e: 0x000a, 0x352f: 0x000a, + 0x3530: 0x000a, 0x3531: 0x000a, 0x3532: 0x000a, 0x3533: 0x000a, 0x3534: 0x000a, 0x3535: 0x000a, // Block 0xd5, offset 0x3540 - 0x3540: 0x000a, 0x3541: 0x000a, 0x3542: 0x000a, 0x3543: 0x000a, 0x3544: 0x000a, 0x3545: 0x000a, - 0x3546: 0x000a, 0x3547: 0x000a, 0x3548: 0x000a, 0x3549: 0x000a, 0x354a: 0x000a, 0x354b: 0x000a, - 0x3550: 0x000a, 0x3551: 0x000a, - 0x3552: 0x000a, 0x3553: 0x000a, 0x3554: 0x000a, 0x3555: 0x000a, 0x3556: 0x000a, 0x3557: 0x000a, - 0x3558: 0x000a, 0x3559: 0x000a, 0x355a: 0x000a, 0x355b: 0x000a, 0x355c: 0x000a, 0x355d: 0x000a, - 0x355e: 0x000a, 0x355f: 0x000a, 0x3560: 0x000a, 0x3561: 0x000a, 0x3562: 0x000a, 0x3563: 0x000a, - 0x3564: 0x000a, 0x3565: 0x000a, 0x3566: 0x000a, 0x3567: 0x000a, 0x3568: 0x000a, 0x3569: 0x000a, - 0x356a: 0x000a, 0x356b: 0x000a, 0x356c: 0x000a, 0x356d: 0x000a, 0x356e: 0x000a, 0x356f: 0x000a, - 0x3570: 0x000a, 0x3571: 0x000a, 0x3572: 0x000a, 0x3573: 0x000a, 0x3574: 0x000a, 0x3575: 0x000a, - 0x3576: 0x000a, 0x3577: 0x000a, 0x3578: 0x000a, 0x3579: 0x000a, 0x357a: 0x000a, 0x357b: 0x000a, - 0x357c: 0x000a, 0x357d: 0x000a, 0x357e: 0x000a, 0x357f: 0x000a, + 0x3540: 0x0002, 0x3541: 0x0002, 0x3542: 0x0002, 0x3543: 0x0002, 0x3544: 0x0002, 0x3545: 0x0002, + 0x3546: 0x0002, 0x3547: 0x0002, 0x3548: 0x0002, 0x3549: 0x0002, 0x354a: 0x0002, 0x354b: 0x000a, + 0x354c: 0x000a, // Block 0xd6, offset 0x3580 - 0x3580: 0x000a, 0x3581: 0x000a, 0x3582: 0x000a, 0x3583: 0x000a, 0x3584: 0x000a, 0x3585: 0x000a, - 0x3586: 0x000a, 0x3587: 0x000a, - 0x3590: 0x000a, 0x3591: 0x000a, - 0x3592: 0x000a, 0x3593: 0x000a, 0x3594: 0x000a, 0x3595: 0x000a, 0x3596: 0x000a, 0x3597: 0x000a, - 0x3598: 0x000a, 0x3599: 0x000a, - 0x35a0: 0x000a, 0x35a1: 0x000a, 0x35a2: 0x000a, 0x35a3: 0x000a, - 0x35a4: 0x000a, 0x35a5: 0x000a, 0x35a6: 0x000a, 0x35a7: 0x000a, 0x35a8: 0x000a, 0x35a9: 0x000a, - 0x35aa: 0x000a, 0x35ab: 0x000a, 0x35ac: 0x000a, 0x35ad: 0x000a, 0x35ae: 0x000a, 0x35af: 0x000a, - 0x35b0: 0x000a, 0x35b1: 0x000a, 0x35b2: 0x000a, 0x35b3: 0x000a, 0x35b4: 0x000a, 0x35b5: 0x000a, - 0x35b6: 0x000a, 0x35b7: 0x000a, 0x35b8: 0x000a, 0x35b9: 0x000a, 0x35ba: 0x000a, 0x35bb: 0x000a, - 0x35bc: 0x000a, 0x35bd: 0x000a, 0x35be: 0x000a, 0x35bf: 0x000a, + 0x35aa: 0x000a, 0x35ab: 0x000a, // Block 0xd7, offset 0x35c0 - 0x35c0: 0x000a, 0x35c1: 0x000a, 0x35c2: 0x000a, 0x35c3: 0x000a, 0x35c4: 0x000a, 0x35c5: 0x000a, - 0x35c6: 0x000a, 0x35c7: 0x000a, - 0x35d0: 0x000a, 0x35d1: 0x000a, - 0x35d2: 0x000a, 0x35d3: 0x000a, 0x35d4: 0x000a, 0x35d5: 0x000a, 0x35d6: 0x000a, 0x35d7: 0x000a, - 0x35d8: 0x000a, 0x35d9: 0x000a, 0x35da: 0x000a, 0x35db: 0x000a, 0x35dc: 0x000a, 0x35dd: 0x000a, - 0x35de: 0x000a, 0x35df: 0x000a, 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a, - 0x35e4: 0x000a, 0x35e5: 0x000a, 0x35e6: 0x000a, 0x35e7: 0x000a, 0x35e8: 0x000a, 0x35e9: 0x000a, - 0x35ea: 0x000a, 0x35eb: 0x000a, 0x35ec: 0x000a, 0x35ed: 0x000a, + 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a, + 0x35e4: 0x000a, 0x35e5: 0x000a, // Block 0xd8, offset 0x3600 - 0x3610: 0x000a, 0x3611: 0x000a, - 0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a, 0x3615: 0x000a, 0x3616: 0x000a, 0x3617: 0x000a, - 0x3618: 0x000a, 0x3619: 0x000a, 0x361a: 0x000a, 0x361b: 0x000a, 0x361c: 0x000a, 0x361d: 0x000a, - 0x361e: 0x000a, 0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a, - 0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, - 0x3630: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a, - 0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, 0x3639: 0x000a, 0x363a: 0x000a, 0x363b: 0x000a, - 0x363c: 0x000a, 0x363d: 0x000a, 0x363e: 0x000a, + 0x3600: 0x000a, 0x3601: 0x000a, 0x3602: 0x000a, 0x3603: 0x000a, 0x3604: 0x000a, 0x3605: 0x000a, + 0x3606: 0x000a, 0x3607: 0x000a, 0x3608: 0x000a, 0x3609: 0x000a, 0x360a: 0x000a, 0x360b: 0x000a, + 0x360c: 0x000a, 0x360d: 0x000a, 0x360e: 0x000a, 0x360f: 0x000a, 0x3610: 0x000a, 0x3611: 0x000a, + 0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a, + 0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a, + 0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, 0x3628: 0x000a, 0x3629: 0x000a, + 0x362a: 0x000a, 0x362b: 0x000a, 0x362c: 0x000a, + 0x3630: 0x000a, 0x3631: 0x000a, 0x3632: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a, + 0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, // Block 0xd9, offset 0x3640 0x3640: 0x000a, 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a, 0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a, - 0x3650: 0x000a, 0x3651: 0x000a, - 0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, 0x3655: 0x000a, 0x3656: 0x000a, 0x3657: 0x000a, - 0x3658: 0x000a, 0x3659: 0x000a, 0x365a: 0x000a, 0x365b: 0x000a, 0x365c: 0x000a, 0x365d: 0x000a, - 0x365e: 0x000a, + 0x364c: 0x000a, 0x364d: 0x000a, 0x364e: 0x000a, 0x364f: 0x000a, 0x3650: 0x000a, 0x3651: 0x000a, + 0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, // Block 0xda, offset 0x3680 0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000a, 0x3683: 0x000a, 0x3684: 0x000a, 0x3685: 0x000a, 0x3686: 0x000a, 0x3687: 0x000a, 0x3688: 0x000a, 0x3689: 0x000a, 0x368a: 0x000a, 0x368b: 0x000a, - 0x368c: 0x000a, 0x368d: 0x000a, 0x368e: 0x000a, 0x368f: 0x000a, 0x3690: 0x000a, 0x3691: 0x000a, + 0x3690: 0x000a, 0x3691: 0x000a, + 0x3692: 0x000a, 0x3693: 0x000a, 0x3694: 0x000a, 0x3695: 0x000a, 0x3696: 0x000a, 0x3697: 0x000a, + 0x3698: 0x000a, 0x3699: 0x000a, 0x369a: 0x000a, 0x369b: 0x000a, 0x369c: 0x000a, 0x369d: 0x000a, + 0x369e: 0x000a, 0x369f: 0x000a, 0x36a0: 0x000a, 0x36a1: 0x000a, 0x36a2: 0x000a, 0x36a3: 0x000a, + 0x36a4: 0x000a, 0x36a5: 0x000a, 0x36a6: 0x000a, 0x36a7: 0x000a, 0x36a8: 0x000a, 0x36a9: 0x000a, + 0x36aa: 0x000a, 0x36ab: 0x000a, 0x36ac: 0x000a, 0x36ad: 0x000a, 0x36ae: 0x000a, 0x36af: 0x000a, + 0x36b0: 0x000a, 0x36b1: 0x000a, 0x36b2: 0x000a, 0x36b3: 0x000a, 0x36b4: 0x000a, 0x36b5: 0x000a, + 0x36b6: 0x000a, 0x36b7: 0x000a, 0x36b8: 0x000a, 0x36b9: 0x000a, 0x36ba: 0x000a, 0x36bb: 0x000a, + 0x36bc: 0x000a, 0x36bd: 0x000a, 0x36be: 0x000a, 0x36bf: 0x000a, // Block 0xdb, offset 0x36c0 - 0x36fe: 0x000b, 0x36ff: 0x000b, + 0x36c0: 0x000a, 0x36c1: 0x000a, 0x36c2: 0x000a, 0x36c3: 0x000a, 0x36c4: 0x000a, 0x36c5: 0x000a, + 0x36c6: 0x000a, 0x36c7: 0x000a, + 0x36d0: 0x000a, 0x36d1: 0x000a, + 0x36d2: 0x000a, 0x36d3: 0x000a, 0x36d4: 0x000a, 0x36d5: 0x000a, 0x36d6: 0x000a, 0x36d7: 0x000a, + 0x36d8: 0x000a, 0x36d9: 0x000a, + 0x36e0: 0x000a, 0x36e1: 0x000a, 0x36e2: 0x000a, 0x36e3: 0x000a, + 0x36e4: 0x000a, 0x36e5: 0x000a, 0x36e6: 0x000a, 0x36e7: 0x000a, 0x36e8: 0x000a, 0x36e9: 0x000a, + 0x36ea: 0x000a, 0x36eb: 0x000a, 0x36ec: 0x000a, 0x36ed: 0x000a, 0x36ee: 0x000a, 0x36ef: 0x000a, + 0x36f0: 0x000a, 0x36f1: 0x000a, 0x36f2: 0x000a, 0x36f3: 0x000a, 0x36f4: 0x000a, 0x36f5: 0x000a, + 0x36f6: 0x000a, 0x36f7: 0x000a, 0x36f8: 0x000a, 0x36f9: 0x000a, 0x36fa: 0x000a, 0x36fb: 0x000a, + 0x36fc: 0x000a, 0x36fd: 0x000a, 0x36fe: 0x000a, 0x36ff: 0x000a, // Block 0xdc, offset 0x3700 - 0x3700: 0x000b, 0x3701: 0x000b, 0x3702: 0x000b, 0x3703: 0x000b, 0x3704: 0x000b, 0x3705: 0x000b, - 0x3706: 0x000b, 0x3707: 0x000b, 0x3708: 0x000b, 0x3709: 0x000b, 0x370a: 0x000b, 0x370b: 0x000b, - 0x370c: 0x000b, 0x370d: 0x000b, 0x370e: 0x000b, 0x370f: 0x000b, 0x3710: 0x000b, 0x3711: 0x000b, - 0x3712: 0x000b, 0x3713: 0x000b, 0x3714: 0x000b, 0x3715: 0x000b, 0x3716: 0x000b, 0x3717: 0x000b, - 0x3718: 0x000b, 0x3719: 0x000b, 0x371a: 0x000b, 0x371b: 0x000b, 0x371c: 0x000b, 0x371d: 0x000b, - 0x371e: 0x000b, 0x371f: 0x000b, 0x3720: 0x000b, 0x3721: 0x000b, 0x3722: 0x000b, 0x3723: 0x000b, - 0x3724: 0x000b, 0x3725: 0x000b, 0x3726: 0x000b, 0x3727: 0x000b, 0x3728: 0x000b, 0x3729: 0x000b, - 0x372a: 0x000b, 0x372b: 0x000b, 0x372c: 0x000b, 0x372d: 0x000b, 0x372e: 0x000b, 0x372f: 0x000b, - 0x3730: 0x000b, 0x3731: 0x000b, 0x3732: 0x000b, 0x3733: 0x000b, 0x3734: 0x000b, 0x3735: 0x000b, - 0x3736: 0x000b, 0x3737: 0x000b, 0x3738: 0x000b, 0x3739: 0x000b, 0x373a: 0x000b, 0x373b: 0x000b, - 0x373c: 0x000b, 0x373d: 0x000b, 0x373e: 0x000b, 0x373f: 0x000b, + 0x3700: 0x000a, 0x3701: 0x000a, 0x3702: 0x000a, 0x3703: 0x000a, 0x3704: 0x000a, 0x3705: 0x000a, + 0x3706: 0x000a, 0x3707: 0x000a, + 0x3710: 0x000a, 0x3711: 0x000a, + 0x3712: 0x000a, 0x3713: 0x000a, 0x3714: 0x000a, 0x3715: 0x000a, 0x3716: 0x000a, 0x3717: 0x000a, + 0x3718: 0x000a, 0x3719: 0x000a, 0x371a: 0x000a, 0x371b: 0x000a, 0x371c: 0x000a, 0x371d: 0x000a, + 0x371e: 0x000a, 0x371f: 0x000a, 0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a, + 0x3724: 0x000a, 0x3725: 0x000a, 0x3726: 0x000a, 0x3727: 0x000a, 0x3728: 0x000a, 0x3729: 0x000a, + 0x372a: 0x000a, 0x372b: 0x000a, 0x372c: 0x000a, 0x372d: 0x000a, // Block 0xdd, offset 0x3740 - 0x3740: 0x000c, 0x3741: 0x000c, 0x3742: 0x000c, 0x3743: 0x000c, 0x3744: 0x000c, 0x3745: 0x000c, - 0x3746: 0x000c, 0x3747: 0x000c, 0x3748: 0x000c, 0x3749: 0x000c, 0x374a: 0x000c, 0x374b: 0x000c, - 0x374c: 0x000c, 0x374d: 0x000c, 0x374e: 0x000c, 0x374f: 0x000c, 0x3750: 0x000c, 0x3751: 0x000c, - 0x3752: 0x000c, 0x3753: 0x000c, 0x3754: 0x000c, 0x3755: 0x000c, 0x3756: 0x000c, 0x3757: 0x000c, - 0x3758: 0x000c, 0x3759: 0x000c, 0x375a: 0x000c, 0x375b: 0x000c, 0x375c: 0x000c, 0x375d: 0x000c, - 0x375e: 0x000c, 0x375f: 0x000c, 0x3760: 0x000c, 0x3761: 0x000c, 0x3762: 0x000c, 0x3763: 0x000c, - 0x3764: 0x000c, 0x3765: 0x000c, 0x3766: 0x000c, 0x3767: 0x000c, 0x3768: 0x000c, 0x3769: 0x000c, - 0x376a: 0x000c, 0x376b: 0x000c, 0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c, - 0x3770: 0x000b, 0x3771: 0x000b, 0x3772: 0x000b, 0x3773: 0x000b, 0x3774: 0x000b, 0x3775: 0x000b, - 0x3776: 0x000b, 0x3777: 0x000b, 0x3778: 0x000b, 0x3779: 0x000b, 0x377a: 0x000b, 0x377b: 0x000b, - 0x377c: 0x000b, 0x377d: 0x000b, 0x377e: 0x000b, 0x377f: 0x000b, + 0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a, + 0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a, + 0x3750: 0x000a, 0x3751: 0x000a, + 0x3752: 0x000a, 0x3753: 0x000a, 0x3754: 0x000a, 0x3755: 0x000a, 0x3756: 0x000a, 0x3757: 0x000a, + 0x3758: 0x000a, 0x3759: 0x000a, 0x375a: 0x000a, 0x375b: 0x000a, 0x375c: 0x000a, 0x375d: 0x000a, + 0x375e: 0x000a, 0x375f: 0x000a, 0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a, + 0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a, + 0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a, 0x376d: 0x000a, 0x376e: 0x000a, 0x376f: 0x000a, + 0x3770: 0x000a, 0x3771: 0x000a, 0x3772: 0x000a, 0x3773: 0x000a, 0x3774: 0x000a, 0x3775: 0x000a, + 0x3776: 0x000a, 0x3777: 0x000a, 0x3778: 0x000a, 0x3779: 0x000a, 0x377a: 0x000a, 0x377b: 0x000a, + 0x377c: 0x000a, 0x377d: 0x000a, 0x377e: 0x000a, + // Block 0xde, offset 0x3780 + 0x3780: 0x000a, 0x3781: 0x000a, 0x3782: 0x000a, 0x3783: 0x000a, 0x3784: 0x000a, 0x3785: 0x000a, + 0x3786: 0x000a, 0x3787: 0x000a, 0x3788: 0x000a, 0x3789: 0x000a, 0x378a: 0x000a, 0x378b: 0x000a, + 0x378c: 0x000a, 0x3790: 0x000a, 0x3791: 0x000a, + 0x3792: 0x000a, 0x3793: 0x000a, 0x3794: 0x000a, 0x3795: 0x000a, 0x3796: 0x000a, 0x3797: 0x000a, + 0x3798: 0x000a, 0x3799: 0x000a, 0x379a: 0x000a, 0x379b: 0x000a, 0x379c: 0x000a, 0x379d: 0x000a, + 0x379e: 0x000a, 0x379f: 0x000a, 0x37a0: 0x000a, 0x37a1: 0x000a, 0x37a2: 0x000a, 0x37a3: 0x000a, + 0x37a4: 0x000a, 0x37a5: 0x000a, 0x37a6: 0x000a, 0x37a7: 0x000a, 0x37a8: 0x000a, 0x37a9: 0x000a, + 0x37aa: 0x000a, 0x37ab: 0x000a, + // Block 0xdf, offset 0x37c0 + 0x37c0: 0x000a, 0x37c1: 0x000a, 0x37c2: 0x000a, 0x37c3: 0x000a, 0x37c4: 0x000a, 0x37c5: 0x000a, + 0x37c6: 0x000a, 0x37c7: 0x000a, 0x37c8: 0x000a, 0x37c9: 0x000a, 0x37ca: 0x000a, 0x37cb: 0x000a, + 0x37cc: 0x000a, 0x37cd: 0x000a, 0x37ce: 0x000a, 0x37cf: 0x000a, 0x37d0: 0x000a, 0x37d1: 0x000a, + 0x37d2: 0x000a, 0x37d3: 0x000a, 0x37d4: 0x000a, 0x37d5: 0x000a, 0x37d6: 0x000a, 0x37d7: 0x000a, + // Block 0xe0, offset 0x3800 + 0x3800: 0x000a, + 0x3810: 0x000a, 0x3811: 0x000a, + 0x3812: 0x000a, 0x3813: 0x000a, 0x3814: 0x000a, 0x3815: 0x000a, 0x3816: 0x000a, 0x3817: 0x000a, + 0x3818: 0x000a, 0x3819: 0x000a, 0x381a: 0x000a, 0x381b: 0x000a, 0x381c: 0x000a, 0x381d: 0x000a, + 0x381e: 0x000a, 0x381f: 0x000a, 0x3820: 0x000a, 0x3821: 0x000a, 0x3822: 0x000a, 0x3823: 0x000a, + 0x3824: 0x000a, 0x3825: 0x000a, 0x3826: 0x000a, + // Block 0xe1, offset 0x3840 + 0x387e: 0x000b, 0x387f: 0x000b, + // Block 0xe2, offset 0x3880 + 0x3880: 0x000b, 0x3881: 0x000b, 0x3882: 0x000b, 0x3883: 0x000b, 0x3884: 0x000b, 0x3885: 0x000b, + 0x3886: 0x000b, 0x3887: 0x000b, 0x3888: 0x000b, 0x3889: 0x000b, 0x388a: 0x000b, 0x388b: 0x000b, + 0x388c: 0x000b, 0x388d: 0x000b, 0x388e: 0x000b, 0x388f: 0x000b, 0x3890: 0x000b, 0x3891: 0x000b, + 0x3892: 0x000b, 0x3893: 0x000b, 0x3894: 0x000b, 0x3895: 0x000b, 0x3896: 0x000b, 0x3897: 0x000b, + 0x3898: 0x000b, 0x3899: 0x000b, 0x389a: 0x000b, 0x389b: 0x000b, 0x389c: 0x000b, 0x389d: 0x000b, + 0x389e: 0x000b, 0x389f: 0x000b, 0x38a0: 0x000b, 0x38a1: 0x000b, 0x38a2: 0x000b, 0x38a3: 0x000b, + 0x38a4: 0x000b, 0x38a5: 0x000b, 0x38a6: 0x000b, 0x38a7: 0x000b, 0x38a8: 0x000b, 0x38a9: 0x000b, + 0x38aa: 0x000b, 0x38ab: 0x000b, 0x38ac: 0x000b, 0x38ad: 0x000b, 0x38ae: 0x000b, 0x38af: 0x000b, + 0x38b0: 0x000b, 0x38b1: 0x000b, 0x38b2: 0x000b, 0x38b3: 0x000b, 0x38b4: 0x000b, 0x38b5: 0x000b, + 0x38b6: 0x000b, 0x38b7: 0x000b, 0x38b8: 0x000b, 0x38b9: 0x000b, 0x38ba: 0x000b, 0x38bb: 0x000b, + 0x38bc: 0x000b, 0x38bd: 0x000b, 0x38be: 0x000b, 0x38bf: 0x000b, + // Block 0xe3, offset 0x38c0 + 0x38c0: 0x000c, 0x38c1: 0x000c, 0x38c2: 0x000c, 0x38c3: 0x000c, 0x38c4: 0x000c, 0x38c5: 0x000c, + 0x38c6: 0x000c, 0x38c7: 0x000c, 0x38c8: 0x000c, 0x38c9: 0x000c, 0x38ca: 0x000c, 0x38cb: 0x000c, + 0x38cc: 0x000c, 0x38cd: 0x000c, 0x38ce: 0x000c, 0x38cf: 0x000c, 0x38d0: 0x000c, 0x38d1: 0x000c, + 0x38d2: 0x000c, 0x38d3: 0x000c, 0x38d4: 0x000c, 0x38d5: 0x000c, 0x38d6: 0x000c, 0x38d7: 0x000c, + 0x38d8: 0x000c, 0x38d9: 0x000c, 0x38da: 0x000c, 0x38db: 0x000c, 0x38dc: 0x000c, 0x38dd: 0x000c, + 0x38de: 0x000c, 0x38df: 0x000c, 0x38e0: 0x000c, 0x38e1: 0x000c, 0x38e2: 0x000c, 0x38e3: 0x000c, + 0x38e4: 0x000c, 0x38e5: 0x000c, 0x38e6: 0x000c, 0x38e7: 0x000c, 0x38e8: 0x000c, 0x38e9: 0x000c, + 0x38ea: 0x000c, 0x38eb: 0x000c, 0x38ec: 0x000c, 0x38ed: 0x000c, 0x38ee: 0x000c, 0x38ef: 0x000c, + 0x38f0: 0x000b, 0x38f1: 0x000b, 0x38f2: 0x000b, 0x38f3: 0x000b, 0x38f4: 0x000b, 0x38f5: 0x000b, + 0x38f6: 0x000b, 0x38f7: 0x000b, 0x38f8: 0x000b, 0x38f9: 0x000b, 0x38fa: 0x000b, 0x38fb: 0x000b, + 0x38fc: 0x000b, 0x38fd: 0x000b, 0x38fe: 0x000b, 0x38ff: 0x000b, } // bidiIndex: 24 blocks, 1536 entries, 1536 bytes @@ -1688,65 +1721,66 @@ var bidiIndex = [1536]uint8{ 0x17e: 0x4b, 0x17f: 0x4c, // Block 0x6, offset 0x180 0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54, - 0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x59, - 0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54, - 0x198: 0x54, 0x199: 0x54, 0x19a: 0x5e, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5f, 0x19e: 0x54, 0x19f: 0x60, - 0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x61, 0x1a7: 0x62, - 0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x65, - 0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68, - 0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6d, + 0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x54, + 0x190: 0x59, 0x191: 0x5a, 0x192: 0x5b, 0x193: 0x5c, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54, + 0x198: 0x54, 0x199: 0x54, 0x19a: 0x5d, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5e, 0x19e: 0x54, 0x19f: 0x5f, + 0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x60, 0x1a7: 0x61, + 0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x62, 0x1ae: 0x63, 0x1af: 0x64, + 0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67, + 0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6c, // Block 0x7, offset 0x1c0 - 0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71, - 0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77, + 0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70, + 0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76, // Block 0x8, offset 0x200 0x237: 0x54, // Block 0x9, offset 0x240 - 0x252: 0x78, 0x253: 0x79, - 0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f, - 0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86, - 0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26f: 0x8b, + 0x252: 0x77, 0x253: 0x78, + 0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e, + 0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85, + 0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26f: 0x8a, // Block 0xa, offset 0x280 - 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e, - 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8f, - 0x2b8: 0x90, 0x2b9: 0x91, 0x2ba: 0x0e, 0x2bb: 0x92, 0x2bc: 0x93, 0x2bd: 0x94, 0x2bf: 0x95, + 0x2ac: 0x8b, 0x2ad: 0x8c, 0x2ae: 0x0e, 0x2af: 0x0e, + 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8d, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8e, + 0x2b8: 0x8f, 0x2b9: 0x90, 0x2ba: 0x0e, 0x2bb: 0x91, 0x2bc: 0x92, 0x2bd: 0x93, 0x2bf: 0x94, // Block 0xb, offset 0x2c0 - 0x2c4: 0x96, 0x2c5: 0x54, 0x2c6: 0x97, 0x2c7: 0x98, - 0x2cb: 0x99, 0x2cd: 0x9a, - 0x2e0: 0x9b, 0x2e1: 0x9b, 0x2e2: 0x9b, 0x2e3: 0x9b, 0x2e4: 0x9c, 0x2e5: 0x9b, 0x2e6: 0x9b, 0x2e7: 0x9b, - 0x2e8: 0x9d, 0x2e9: 0x9b, 0x2ea: 0x9b, 0x2eb: 0x9e, 0x2ec: 0x9f, 0x2ed: 0x9b, 0x2ee: 0x9b, 0x2ef: 0x9b, - 0x2f0: 0x9b, 0x2f1: 0x9b, 0x2f2: 0x9b, 0x2f3: 0x9b, 0x2f4: 0x9b, 0x2f5: 0x9b, 0x2f6: 0x9b, 0x2f7: 0x9b, - 0x2f8: 0x9b, 0x2f9: 0xa0, 0x2fa: 0x9b, 0x2fb: 0x9b, 0x2fc: 0x9b, 0x2fd: 0x9b, 0x2fe: 0x9b, 0x2ff: 0x9b, + 0x2c4: 0x95, 0x2c5: 0x54, 0x2c6: 0x96, 0x2c7: 0x97, + 0x2cb: 0x98, 0x2cd: 0x99, + 0x2e0: 0x9a, 0x2e1: 0x9a, 0x2e2: 0x9a, 0x2e3: 0x9a, 0x2e4: 0x9b, 0x2e5: 0x9a, 0x2e6: 0x9a, 0x2e7: 0x9a, + 0x2e8: 0x9c, 0x2e9: 0x9a, 0x2ea: 0x9a, 0x2eb: 0x9d, 0x2ec: 0x9e, 0x2ed: 0x9a, 0x2ee: 0x9a, 0x2ef: 0x9a, + 0x2f0: 0x9a, 0x2f1: 0x9a, 0x2f2: 0x9a, 0x2f3: 0x9a, 0x2f4: 0x9a, 0x2f5: 0x9a, 0x2f6: 0x9a, 0x2f7: 0x9a, + 0x2f8: 0x9a, 0x2f9: 0x9f, 0x2fa: 0x9a, 0x2fb: 0x9a, 0x2fc: 0x9a, 0x2fd: 0x9a, 0x2fe: 0x9a, 0x2ff: 0x9a, // Block 0xc, offset 0x300 - 0x300: 0xa1, 0x301: 0xa2, 0x302: 0xa3, 0x304: 0xa4, 0x305: 0xa5, 0x306: 0xa6, 0x307: 0xa7, - 0x308: 0xa8, 0x30b: 0xa9, 0x30c: 0xaa, 0x30d: 0xab, - 0x310: 0xac, 0x311: 0xad, 0x312: 0xae, 0x313: 0xaf, 0x316: 0xb0, 0x317: 0xb1, - 0x318: 0xb2, 0x319: 0xb3, 0x31a: 0xb4, 0x31c: 0xb5, - 0x330: 0xb6, 0x332: 0xb7, + 0x300: 0xa0, 0x301: 0xa1, 0x302: 0xa2, 0x304: 0xa3, 0x305: 0xa4, 0x306: 0xa5, 0x307: 0xa6, + 0x308: 0xa7, 0x30b: 0xa8, 0x30c: 0xa9, 0x30d: 0xaa, + 0x310: 0xab, 0x311: 0xac, 0x312: 0xad, 0x313: 0xae, 0x316: 0xaf, 0x317: 0xb0, + 0x318: 0xb1, 0x319: 0xb2, 0x31a: 0xb3, 0x31c: 0xb4, + 0x328: 0xb5, 0x329: 0xb6, 0x32a: 0xb7, + 0x330: 0xb8, 0x332: 0xb9, 0x334: 0xba, 0x335: 0xbb, // Block 0xd, offset 0x340 - 0x36b: 0xb8, 0x36c: 0xb9, - 0x37e: 0xba, + 0x36b: 0xbc, 0x36c: 0xbd, + 0x37e: 0xbe, // Block 0xe, offset 0x380 - 0x3b2: 0xbb, + 0x3b2: 0xbf, // Block 0xf, offset 0x3c0 - 0x3c5: 0xbc, 0x3c6: 0xbd, - 0x3c8: 0x54, 0x3c9: 0xbe, 0x3cc: 0x54, 0x3cd: 0xbf, - 0x3db: 0xc0, 0x3dc: 0xc1, 0x3dd: 0xc2, 0x3de: 0xc3, 0x3df: 0xc4, - 0x3e8: 0xc5, 0x3e9: 0xc6, 0x3ea: 0xc7, + 0x3c5: 0xc0, 0x3c6: 0xc1, + 0x3c8: 0x54, 0x3c9: 0xc2, 0x3cc: 0x54, 0x3cd: 0xc3, + 0x3db: 0xc4, 0x3dc: 0xc5, 0x3dd: 0xc6, 0x3de: 0xc7, 0x3df: 0xc8, + 0x3e8: 0xc9, 0x3e9: 0xca, 0x3ea: 0xcb, // Block 0x10, offset 0x400 - 0x400: 0xc8, - 0x420: 0x9b, 0x421: 0x9b, 0x422: 0x9b, 0x423: 0xc9, 0x424: 0x9b, 0x425: 0xca, 0x426: 0x9b, 0x427: 0x9b, - 0x428: 0x9b, 0x429: 0x9b, 0x42a: 0x9b, 0x42b: 0x9b, 0x42c: 0x9b, 0x42d: 0x9b, 0x42e: 0x9b, 0x42f: 0x9b, - 0x430: 0x9b, 0x431: 0x9b, 0x432: 0x9b, 0x433: 0x9b, 0x434: 0x9b, 0x435: 0x9b, 0x436: 0x9b, 0x437: 0x9b, - 0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcb, 0x43c: 0x9b, 0x43d: 0x9b, 0x43e: 0x9b, 0x43f: 0x9b, + 0x400: 0xcc, + 0x420: 0x9a, 0x421: 0x9a, 0x422: 0x9a, 0x423: 0xcd, 0x424: 0x9a, 0x425: 0xce, 0x426: 0x9a, 0x427: 0x9a, + 0x428: 0x9a, 0x429: 0x9a, 0x42a: 0x9a, 0x42b: 0x9a, 0x42c: 0x9a, 0x42d: 0x9a, 0x42e: 0x9a, 0x42f: 0x9a, + 0x430: 0x9a, 0x431: 0x9a, 0x432: 0x9a, 0x433: 0x9a, 0x434: 0x9a, 0x435: 0x9a, 0x436: 0x9a, 0x437: 0x9a, + 0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcf, 0x43c: 0x9a, 0x43d: 0x9a, 0x43e: 0x9a, 0x43f: 0x9a, // Block 0x11, offset 0x440 - 0x440: 0xcc, 0x441: 0x54, 0x442: 0xcd, 0x443: 0xce, 0x444: 0xcf, 0x445: 0xd0, - 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54, + 0x440: 0xd0, 0x441: 0x54, 0x442: 0xd1, 0x443: 0xd2, 0x444: 0xd3, 0x445: 0xd4, + 0x449: 0xd5, 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54, 0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54, - 0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd1, 0x45c: 0x54, 0x45d: 0x6c, 0x45e: 0x54, 0x45f: 0xd2, - 0x460: 0xd3, 0x461: 0xd4, 0x462: 0xd5, 0x464: 0xd6, 0x465: 0xd7, 0x466: 0xd8, 0x467: 0x36, - 0x47f: 0xd9, + 0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd6, 0x45c: 0x54, 0x45d: 0x6b, 0x45e: 0x54, 0x45f: 0xd7, + 0x460: 0xd8, 0x461: 0xd9, 0x462: 0xda, 0x464: 0xdb, 0x465: 0xdc, 0x466: 0xdd, 0x467: 0xde, + 0x47f: 0xdf, // Block 0x12, offset 0x480 - 0x4bf: 0xd9, + 0x4bf: 0xdf, // Block 0x13, offset 0x4c0 0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b, 0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f, @@ -1758,14 +1792,14 @@ var bidiIndex = [1536]uint8{ 0x52f: 0x10, 0x53f: 0x10, // Block 0x15, offset 0x540 - 0x540: 0xda, 0x541: 0xda, 0x542: 0xda, 0x543: 0xda, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xdb, - 0x548: 0xda, 0x549: 0xda, 0x54a: 0xda, 0x54b: 0xda, 0x54c: 0xda, 0x54d: 0xda, 0x54e: 0xda, 0x54f: 0xda, - 0x550: 0xda, 0x551: 0xda, 0x552: 0xda, 0x553: 0xda, 0x554: 0xda, 0x555: 0xda, 0x556: 0xda, 0x557: 0xda, - 0x558: 0xda, 0x559: 0xda, 0x55a: 0xda, 0x55b: 0xda, 0x55c: 0xda, 0x55d: 0xda, 0x55e: 0xda, 0x55f: 0xda, - 0x560: 0xda, 0x561: 0xda, 0x562: 0xda, 0x563: 0xda, 0x564: 0xda, 0x565: 0xda, 0x566: 0xda, 0x567: 0xda, - 0x568: 0xda, 0x569: 0xda, 0x56a: 0xda, 0x56b: 0xda, 0x56c: 0xda, 0x56d: 0xda, 0x56e: 0xda, 0x56f: 0xda, - 0x570: 0xda, 0x571: 0xda, 0x572: 0xda, 0x573: 0xda, 0x574: 0xda, 0x575: 0xda, 0x576: 0xda, 0x577: 0xda, - 0x578: 0xda, 0x579: 0xda, 0x57a: 0xda, 0x57b: 0xda, 0x57c: 0xda, 0x57d: 0xda, 0x57e: 0xda, 0x57f: 0xda, + 0x540: 0xe0, 0x541: 0xe0, 0x542: 0xe0, 0x543: 0xe0, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xe1, + 0x548: 0xe0, 0x549: 0xe0, 0x54a: 0xe0, 0x54b: 0xe0, 0x54c: 0xe0, 0x54d: 0xe0, 0x54e: 0xe0, 0x54f: 0xe0, + 0x550: 0xe0, 0x551: 0xe0, 0x552: 0xe0, 0x553: 0xe0, 0x554: 0xe0, 0x555: 0xe0, 0x556: 0xe0, 0x557: 0xe0, + 0x558: 0xe0, 0x559: 0xe0, 0x55a: 0xe0, 0x55b: 0xe0, 0x55c: 0xe0, 0x55d: 0xe0, 0x55e: 0xe0, 0x55f: 0xe0, + 0x560: 0xe0, 0x561: 0xe0, 0x562: 0xe0, 0x563: 0xe0, 0x564: 0xe0, 0x565: 0xe0, 0x566: 0xe0, 0x567: 0xe0, + 0x568: 0xe0, 0x569: 0xe0, 0x56a: 0xe0, 0x56b: 0xe0, 0x56c: 0xe0, 0x56d: 0xe0, 0x56e: 0xe0, 0x56f: 0xe0, + 0x570: 0xe0, 0x571: 0xe0, 0x572: 0xe0, 0x573: 0xe0, 0x574: 0xe0, 0x575: 0xe0, 0x576: 0xe0, 0x577: 0xe0, + 0x578: 0xe0, 0x579: 0xe0, 0x57a: 0xe0, 0x57b: 0xe0, 0x57c: 0xe0, 0x57d: 0xe0, 0x57e: 0xe0, 0x57f: 0xe0, // Block 0x16, offset 0x580 0x58f: 0x10, 0x59f: 0x10, @@ -1776,4 +1810,4 @@ var bidiIndex = [1536]uint8{ 0x5cf: 0x10, } -// Total table size 15800 bytes (15KiB); checksum: F50EF68C +// Total table size 16184 bytes (15KiB); checksum: F50EF68C diff --git a/vendor/golang.org/x/text/unicode/cldr/base.go b/vendor/golang.org/x/text/unicode/cldr/base.go index 2382f4d6d..63cdc16c6 100644 --- a/vendor/golang.org/x/text/unicode/cldr/base.go +++ b/vendor/golang.org/x/text/unicode/cldr/base.go @@ -62,6 +62,11 @@ func (e *Common) Default() string { return "" } +// Element returns the XML element name. +func (e *Common) Element() string { + return e.name +} + // GetCommon returns e. It is provided such that Common implements Elem. func (e *Common) GetCommon() *Common { return e diff --git a/vendor/golang.org/x/text/unicode/cldr/decode.go b/vendor/golang.org/x/text/unicode/cldr/decode.go index e5ee4aed1..094d43139 100644 --- a/vendor/golang.org/x/text/unicode/cldr/decode.go +++ b/vendor/golang.org/x/text/unicode/cldr/decode.go @@ -47,7 +47,7 @@ type Loader interface { Reader(i int) (io.ReadCloser, error) } -var fileRe = regexp.MustCompile(".*/(.*)/(.*)\\.xml") +var fileRe = regexp.MustCompile(`.*[/\\](.*)[/\\](.*)\.xml`) // Decode loads and decodes the files represented by l. func (d *Decoder) Decode(l Loader) (cldr *CLDR, err error) { diff --git a/vendor/golang.org/x/text/unicode/norm/norm_test.go b/vendor/golang.org/x/text/unicode/norm/norm_test.go deleted file mode 100644 index 12dacfcf3..000000000 --- a/vendor/golang.org/x/text/unicode/norm/norm_test.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2011 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 norm_test - -import ( - "testing" -) - -func TestPlaceHolder(t *testing.T) { - // Does nothing, just allows the Makefile to be canonical - // while waiting for the package itself to be written. -} diff --git a/vendor/golang.org/x/text/unicode/norm/tables.go b/vendor/golang.org/x/text/unicode/norm/tables.go index bf9ff8038..316b093c5 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables.go +++ b/vendor/golang.org/x/text/unicode/norm/tables.go @@ -4,7 +4,7 @@ package norm const ( // Version is the Unicode edition from which the tables are derived. - Version = "9.0.0" + Version = "10.0.0" // MaxTransformChunkSize indicates the maximum number of bytes that Transform // may need to write atomically for any Form. Making a destination buffer at @@ -2896,7 +2896,7 @@ func (t *nfcTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// nfcTrie. Total size: 10332 bytes (10.09 KiB). Checksum: 51cc525b297fc970. +// nfcTrie. Total size: 10442 bytes (10.20 KiB). Checksum: 4ba400a9d8208e03. type nfcTrie struct{} func newNfcTrie(i int) *nfcTrie { @@ -2906,17 +2906,17 @@ func newNfcTrie(i int) *nfcTrie { // lookupValue determines the type of block n and looks up the value for b. func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 { switch { - case n < 44: + case n < 45: return uint16(nfcValues[n<<6+uint32(b)]) default: - n -= 44 + n -= 45 return uint16(nfcSparse.lookup(n, b)) } } -// nfcValues: 46 blocks, 2944 entries, 5888 bytes +// nfcValues: 47 blocks, 3008 entries, 6016 bytes // The third block is the zero block. -var nfcValues = [2944]uint16{ +var nfcValues = [3008]uint16{ // Block 0x0, offset 0x0 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, // Block 0x1, offset 0x40 @@ -3073,341 +3073,353 @@ var nfcValues = [2944]uint16{ 0x3fa: 0xa000, 0x3fb: 0x2d56, 0x3fc: 0xa000, 0x3fd: 0x2d5e, 0x3fe: 0xa000, 0x3ff: 0xa000, // Block 0x10, offset 0x400 - 0x400: 0x2f97, 0x401: 0x32a3, 0x402: 0x2fa1, 0x403: 0x32ad, 0x404: 0x2fa6, 0x405: 0x32b2, - 0x406: 0x2fab, 0x407: 0x32b7, 0x408: 0x38cc, 0x409: 0x3a5b, 0x40a: 0x2fc4, 0x40b: 0x32d0, - 0x40c: 0x2fce, 0x40d: 0x32da, 0x40e: 0x2fdd, 0x40f: 0x32e9, 0x410: 0x2fd3, 0x411: 0x32df, - 0x412: 0x2fd8, 0x413: 0x32e4, 0x414: 0x38ef, 0x415: 0x3a7e, 0x416: 0x38f6, 0x417: 0x3a85, - 0x418: 0x3019, 0x419: 0x3325, 0x41a: 0x301e, 0x41b: 0x332a, 0x41c: 0x3904, 0x41d: 0x3a93, - 0x41e: 0x3023, 0x41f: 0x332f, 0x420: 0x3032, 0x421: 0x333e, 0x422: 0x3050, 0x423: 0x335c, - 0x424: 0x305f, 0x425: 0x336b, 0x426: 0x3055, 0x427: 0x3361, 0x428: 0x3064, 0x429: 0x3370, - 0x42a: 0x3069, 0x42b: 0x3375, 0x42c: 0x30af, 0x42d: 0x33bb, 0x42e: 0x390b, 0x42f: 0x3a9a, - 0x430: 0x30b9, 0x431: 0x33ca, 0x432: 0x30c3, 0x433: 0x33d4, 0x434: 0x30cd, 0x435: 0x33de, - 0x436: 0x46c4, 0x437: 0x4755, 0x438: 0x3912, 0x439: 0x3aa1, 0x43a: 0x30e6, 0x43b: 0x33f7, - 0x43c: 0x30e1, 0x43d: 0x33f2, 0x43e: 0x30eb, 0x43f: 0x33fc, + 0x400: 0x8132, 0x401: 0x8132, 0x402: 0x812d, 0x403: 0x8132, 0x404: 0x8132, 0x405: 0x8132, + 0x406: 0x8132, 0x407: 0x8132, 0x408: 0x8132, 0x409: 0x8132, 0x40a: 0x812d, 0x40b: 0x8132, + 0x40c: 0x8132, 0x40d: 0x8135, 0x40e: 0x812a, 0x40f: 0x812d, 0x410: 0x8129, 0x411: 0x8132, + 0x412: 0x8132, 0x413: 0x8132, 0x414: 0x8132, 0x415: 0x8132, 0x416: 0x8132, 0x417: 0x8132, + 0x418: 0x8132, 0x419: 0x8132, 0x41a: 0x8132, 0x41b: 0x8132, 0x41c: 0x8132, 0x41d: 0x8132, + 0x41e: 0x8132, 0x41f: 0x8132, 0x420: 0x8132, 0x421: 0x8132, 0x422: 0x8132, 0x423: 0x8132, + 0x424: 0x8132, 0x425: 0x8132, 0x426: 0x8132, 0x427: 0x8132, 0x428: 0x8132, 0x429: 0x8132, + 0x42a: 0x8132, 0x42b: 0x8132, 0x42c: 0x8132, 0x42d: 0x8132, 0x42e: 0x8132, 0x42f: 0x8132, + 0x430: 0x8132, 0x431: 0x8132, 0x432: 0x8132, 0x433: 0x8132, 0x434: 0x8132, 0x435: 0x8132, + 0x436: 0x8133, 0x437: 0x8131, 0x438: 0x8131, 0x439: 0x812d, 0x43b: 0x8132, + 0x43c: 0x8134, 0x43d: 0x812d, 0x43e: 0x8132, 0x43f: 0x812d, // Block 0x11, offset 0x440 - 0x440: 0x30f0, 0x441: 0x3401, 0x442: 0x30f5, 0x443: 0x3406, 0x444: 0x3109, 0x445: 0x341a, - 0x446: 0x3113, 0x447: 0x3424, 0x448: 0x3122, 0x449: 0x3433, 0x44a: 0x311d, 0x44b: 0x342e, - 0x44c: 0x3935, 0x44d: 0x3ac4, 0x44e: 0x3943, 0x44f: 0x3ad2, 0x450: 0x394a, 0x451: 0x3ad9, - 0x452: 0x3951, 0x453: 0x3ae0, 0x454: 0x314f, 0x455: 0x3460, 0x456: 0x3154, 0x457: 0x3465, - 0x458: 0x315e, 0x459: 0x346f, 0x45a: 0x46f1, 0x45b: 0x4782, 0x45c: 0x3997, 0x45d: 0x3b26, - 0x45e: 0x3177, 0x45f: 0x3488, 0x460: 0x3181, 0x461: 0x3492, 0x462: 0x4700, 0x463: 0x4791, - 0x464: 0x399e, 0x465: 0x3b2d, 0x466: 0x39a5, 0x467: 0x3b34, 0x468: 0x39ac, 0x469: 0x3b3b, - 0x46a: 0x3190, 0x46b: 0x34a1, 0x46c: 0x319a, 0x46d: 0x34b0, 0x46e: 0x31ae, 0x46f: 0x34c4, - 0x470: 0x31a9, 0x471: 0x34bf, 0x472: 0x31ea, 0x473: 0x3500, 0x474: 0x31f9, 0x475: 0x350f, - 0x476: 0x31f4, 0x477: 0x350a, 0x478: 0x39b3, 0x479: 0x3b42, 0x47a: 0x39ba, 0x47b: 0x3b49, - 0x47c: 0x31fe, 0x47d: 0x3514, 0x47e: 0x3203, 0x47f: 0x3519, + 0x440: 0x2f97, 0x441: 0x32a3, 0x442: 0x2fa1, 0x443: 0x32ad, 0x444: 0x2fa6, 0x445: 0x32b2, + 0x446: 0x2fab, 0x447: 0x32b7, 0x448: 0x38cc, 0x449: 0x3a5b, 0x44a: 0x2fc4, 0x44b: 0x32d0, + 0x44c: 0x2fce, 0x44d: 0x32da, 0x44e: 0x2fdd, 0x44f: 0x32e9, 0x450: 0x2fd3, 0x451: 0x32df, + 0x452: 0x2fd8, 0x453: 0x32e4, 0x454: 0x38ef, 0x455: 0x3a7e, 0x456: 0x38f6, 0x457: 0x3a85, + 0x458: 0x3019, 0x459: 0x3325, 0x45a: 0x301e, 0x45b: 0x332a, 0x45c: 0x3904, 0x45d: 0x3a93, + 0x45e: 0x3023, 0x45f: 0x332f, 0x460: 0x3032, 0x461: 0x333e, 0x462: 0x3050, 0x463: 0x335c, + 0x464: 0x305f, 0x465: 0x336b, 0x466: 0x3055, 0x467: 0x3361, 0x468: 0x3064, 0x469: 0x3370, + 0x46a: 0x3069, 0x46b: 0x3375, 0x46c: 0x30af, 0x46d: 0x33bb, 0x46e: 0x390b, 0x46f: 0x3a9a, + 0x470: 0x30b9, 0x471: 0x33ca, 0x472: 0x30c3, 0x473: 0x33d4, 0x474: 0x30cd, 0x475: 0x33de, + 0x476: 0x46c4, 0x477: 0x4755, 0x478: 0x3912, 0x479: 0x3aa1, 0x47a: 0x30e6, 0x47b: 0x33f7, + 0x47c: 0x30e1, 0x47d: 0x33f2, 0x47e: 0x30eb, 0x47f: 0x33fc, // Block 0x12, offset 0x480 - 0x480: 0x3208, 0x481: 0x351e, 0x482: 0x320d, 0x483: 0x3523, 0x484: 0x321c, 0x485: 0x3532, - 0x486: 0x3217, 0x487: 0x352d, 0x488: 0x3221, 0x489: 0x353c, 0x48a: 0x3226, 0x48b: 0x3541, - 0x48c: 0x322b, 0x48d: 0x3546, 0x48e: 0x3249, 0x48f: 0x3564, 0x490: 0x3262, 0x491: 0x3582, - 0x492: 0x3271, 0x493: 0x3591, 0x494: 0x3276, 0x495: 0x3596, 0x496: 0x337a, 0x497: 0x34a6, - 0x498: 0x3537, 0x499: 0x3573, 0x49b: 0x35d1, - 0x4a0: 0x46a1, 0x4a1: 0x4732, 0x4a2: 0x2f83, 0x4a3: 0x328f, - 0x4a4: 0x3878, 0x4a5: 0x3a07, 0x4a6: 0x3871, 0x4a7: 0x3a00, 0x4a8: 0x3886, 0x4a9: 0x3a15, - 0x4aa: 0x387f, 0x4ab: 0x3a0e, 0x4ac: 0x38be, 0x4ad: 0x3a4d, 0x4ae: 0x3894, 0x4af: 0x3a23, - 0x4b0: 0x388d, 0x4b1: 0x3a1c, 0x4b2: 0x38a2, 0x4b3: 0x3a31, 0x4b4: 0x389b, 0x4b5: 0x3a2a, - 0x4b6: 0x38c5, 0x4b7: 0x3a54, 0x4b8: 0x46b5, 0x4b9: 0x4746, 0x4ba: 0x3000, 0x4bb: 0x330c, - 0x4bc: 0x2fec, 0x4bd: 0x32f8, 0x4be: 0x38da, 0x4bf: 0x3a69, + 0x480: 0x30f0, 0x481: 0x3401, 0x482: 0x30f5, 0x483: 0x3406, 0x484: 0x3109, 0x485: 0x341a, + 0x486: 0x3113, 0x487: 0x3424, 0x488: 0x3122, 0x489: 0x3433, 0x48a: 0x311d, 0x48b: 0x342e, + 0x48c: 0x3935, 0x48d: 0x3ac4, 0x48e: 0x3943, 0x48f: 0x3ad2, 0x490: 0x394a, 0x491: 0x3ad9, + 0x492: 0x3951, 0x493: 0x3ae0, 0x494: 0x314f, 0x495: 0x3460, 0x496: 0x3154, 0x497: 0x3465, + 0x498: 0x315e, 0x499: 0x346f, 0x49a: 0x46f1, 0x49b: 0x4782, 0x49c: 0x3997, 0x49d: 0x3b26, + 0x49e: 0x3177, 0x49f: 0x3488, 0x4a0: 0x3181, 0x4a1: 0x3492, 0x4a2: 0x4700, 0x4a3: 0x4791, + 0x4a4: 0x399e, 0x4a5: 0x3b2d, 0x4a6: 0x39a5, 0x4a7: 0x3b34, 0x4a8: 0x39ac, 0x4a9: 0x3b3b, + 0x4aa: 0x3190, 0x4ab: 0x34a1, 0x4ac: 0x319a, 0x4ad: 0x34b0, 0x4ae: 0x31ae, 0x4af: 0x34c4, + 0x4b0: 0x31a9, 0x4b1: 0x34bf, 0x4b2: 0x31ea, 0x4b3: 0x3500, 0x4b4: 0x31f9, 0x4b5: 0x350f, + 0x4b6: 0x31f4, 0x4b7: 0x350a, 0x4b8: 0x39b3, 0x4b9: 0x3b42, 0x4ba: 0x39ba, 0x4bb: 0x3b49, + 0x4bc: 0x31fe, 0x4bd: 0x3514, 0x4be: 0x3203, 0x4bf: 0x3519, // Block 0x13, offset 0x4c0 - 0x4c0: 0x38d3, 0x4c1: 0x3a62, 0x4c2: 0x38e8, 0x4c3: 0x3a77, 0x4c4: 0x38e1, 0x4c5: 0x3a70, - 0x4c6: 0x38fd, 0x4c7: 0x3a8c, 0x4c8: 0x3091, 0x4c9: 0x339d, 0x4ca: 0x30a5, 0x4cb: 0x33b1, - 0x4cc: 0x46e7, 0x4cd: 0x4778, 0x4ce: 0x3136, 0x4cf: 0x3447, 0x4d0: 0x3920, 0x4d1: 0x3aaf, - 0x4d2: 0x3919, 0x4d3: 0x3aa8, 0x4d4: 0x392e, 0x4d5: 0x3abd, 0x4d6: 0x3927, 0x4d7: 0x3ab6, - 0x4d8: 0x3989, 0x4d9: 0x3b18, 0x4da: 0x396d, 0x4db: 0x3afc, 0x4dc: 0x3966, 0x4dd: 0x3af5, - 0x4de: 0x397b, 0x4df: 0x3b0a, 0x4e0: 0x3974, 0x4e1: 0x3b03, 0x4e2: 0x3982, 0x4e3: 0x3b11, - 0x4e4: 0x31e5, 0x4e5: 0x34fb, 0x4e6: 0x31c7, 0x4e7: 0x34dd, 0x4e8: 0x39e4, 0x4e9: 0x3b73, - 0x4ea: 0x39dd, 0x4eb: 0x3b6c, 0x4ec: 0x39f2, 0x4ed: 0x3b81, 0x4ee: 0x39eb, 0x4ef: 0x3b7a, - 0x4f0: 0x39f9, 0x4f1: 0x3b88, 0x4f2: 0x3230, 0x4f3: 0x354b, 0x4f4: 0x3258, 0x4f5: 0x3578, - 0x4f6: 0x3253, 0x4f7: 0x356e, 0x4f8: 0x323f, 0x4f9: 0x355a, + 0x4c0: 0x3208, 0x4c1: 0x351e, 0x4c2: 0x320d, 0x4c3: 0x3523, 0x4c4: 0x321c, 0x4c5: 0x3532, + 0x4c6: 0x3217, 0x4c7: 0x352d, 0x4c8: 0x3221, 0x4c9: 0x353c, 0x4ca: 0x3226, 0x4cb: 0x3541, + 0x4cc: 0x322b, 0x4cd: 0x3546, 0x4ce: 0x3249, 0x4cf: 0x3564, 0x4d0: 0x3262, 0x4d1: 0x3582, + 0x4d2: 0x3271, 0x4d3: 0x3591, 0x4d4: 0x3276, 0x4d5: 0x3596, 0x4d6: 0x337a, 0x4d7: 0x34a6, + 0x4d8: 0x3537, 0x4d9: 0x3573, 0x4db: 0x35d1, + 0x4e0: 0x46a1, 0x4e1: 0x4732, 0x4e2: 0x2f83, 0x4e3: 0x328f, + 0x4e4: 0x3878, 0x4e5: 0x3a07, 0x4e6: 0x3871, 0x4e7: 0x3a00, 0x4e8: 0x3886, 0x4e9: 0x3a15, + 0x4ea: 0x387f, 0x4eb: 0x3a0e, 0x4ec: 0x38be, 0x4ed: 0x3a4d, 0x4ee: 0x3894, 0x4ef: 0x3a23, + 0x4f0: 0x388d, 0x4f1: 0x3a1c, 0x4f2: 0x38a2, 0x4f3: 0x3a31, 0x4f4: 0x389b, 0x4f5: 0x3a2a, + 0x4f6: 0x38c5, 0x4f7: 0x3a54, 0x4f8: 0x46b5, 0x4f9: 0x4746, 0x4fa: 0x3000, 0x4fb: 0x330c, + 0x4fc: 0x2fec, 0x4fd: 0x32f8, 0x4fe: 0x38da, 0x4ff: 0x3a69, // Block 0x14, offset 0x500 - 0x500: 0x4804, 0x501: 0x480a, 0x502: 0x491e, 0x503: 0x4936, 0x504: 0x4926, 0x505: 0x493e, - 0x506: 0x492e, 0x507: 0x4946, 0x508: 0x47aa, 0x509: 0x47b0, 0x50a: 0x488e, 0x50b: 0x48a6, - 0x50c: 0x4896, 0x50d: 0x48ae, 0x50e: 0x489e, 0x50f: 0x48b6, 0x510: 0x4816, 0x511: 0x481c, - 0x512: 0x3db8, 0x513: 0x3dc8, 0x514: 0x3dc0, 0x515: 0x3dd0, - 0x518: 0x47b6, 0x519: 0x47bc, 0x51a: 0x3ce8, 0x51b: 0x3cf8, 0x51c: 0x3cf0, 0x51d: 0x3d00, - 0x520: 0x482e, 0x521: 0x4834, 0x522: 0x494e, 0x523: 0x4966, - 0x524: 0x4956, 0x525: 0x496e, 0x526: 0x495e, 0x527: 0x4976, 0x528: 0x47c2, 0x529: 0x47c8, - 0x52a: 0x48be, 0x52b: 0x48d6, 0x52c: 0x48c6, 0x52d: 0x48de, 0x52e: 0x48ce, 0x52f: 0x48e6, - 0x530: 0x4846, 0x531: 0x484c, 0x532: 0x3e18, 0x533: 0x3e30, 0x534: 0x3e20, 0x535: 0x3e38, - 0x536: 0x3e28, 0x537: 0x3e40, 0x538: 0x47ce, 0x539: 0x47d4, 0x53a: 0x3d18, 0x53b: 0x3d30, - 0x53c: 0x3d20, 0x53d: 0x3d38, 0x53e: 0x3d28, 0x53f: 0x3d40, + 0x500: 0x38d3, 0x501: 0x3a62, 0x502: 0x38e8, 0x503: 0x3a77, 0x504: 0x38e1, 0x505: 0x3a70, + 0x506: 0x38fd, 0x507: 0x3a8c, 0x508: 0x3091, 0x509: 0x339d, 0x50a: 0x30a5, 0x50b: 0x33b1, + 0x50c: 0x46e7, 0x50d: 0x4778, 0x50e: 0x3136, 0x50f: 0x3447, 0x510: 0x3920, 0x511: 0x3aaf, + 0x512: 0x3919, 0x513: 0x3aa8, 0x514: 0x392e, 0x515: 0x3abd, 0x516: 0x3927, 0x517: 0x3ab6, + 0x518: 0x3989, 0x519: 0x3b18, 0x51a: 0x396d, 0x51b: 0x3afc, 0x51c: 0x3966, 0x51d: 0x3af5, + 0x51e: 0x397b, 0x51f: 0x3b0a, 0x520: 0x3974, 0x521: 0x3b03, 0x522: 0x3982, 0x523: 0x3b11, + 0x524: 0x31e5, 0x525: 0x34fb, 0x526: 0x31c7, 0x527: 0x34dd, 0x528: 0x39e4, 0x529: 0x3b73, + 0x52a: 0x39dd, 0x52b: 0x3b6c, 0x52c: 0x39f2, 0x52d: 0x3b81, 0x52e: 0x39eb, 0x52f: 0x3b7a, + 0x530: 0x39f9, 0x531: 0x3b88, 0x532: 0x3230, 0x533: 0x354b, 0x534: 0x3258, 0x535: 0x3578, + 0x536: 0x3253, 0x537: 0x356e, 0x538: 0x323f, 0x539: 0x355a, // Block 0x15, offset 0x540 - 0x540: 0x4852, 0x541: 0x4858, 0x542: 0x3e48, 0x543: 0x3e58, 0x544: 0x3e50, 0x545: 0x3e60, - 0x548: 0x47da, 0x549: 0x47e0, 0x54a: 0x3d48, 0x54b: 0x3d58, - 0x54c: 0x3d50, 0x54d: 0x3d60, 0x550: 0x4864, 0x551: 0x486a, - 0x552: 0x3e80, 0x553: 0x3e98, 0x554: 0x3e88, 0x555: 0x3ea0, 0x556: 0x3e90, 0x557: 0x3ea8, - 0x559: 0x47e6, 0x55b: 0x3d68, 0x55d: 0x3d70, - 0x55f: 0x3d78, 0x560: 0x487c, 0x561: 0x4882, 0x562: 0x497e, 0x563: 0x4996, - 0x564: 0x4986, 0x565: 0x499e, 0x566: 0x498e, 0x567: 0x49a6, 0x568: 0x47ec, 0x569: 0x47f2, - 0x56a: 0x48ee, 0x56b: 0x4906, 0x56c: 0x48f6, 0x56d: 0x490e, 0x56e: 0x48fe, 0x56f: 0x4916, - 0x570: 0x47f8, 0x571: 0x431e, 0x572: 0x3691, 0x573: 0x4324, 0x574: 0x4822, 0x575: 0x432a, - 0x576: 0x36a3, 0x577: 0x4330, 0x578: 0x36c1, 0x579: 0x4336, 0x57a: 0x36d9, 0x57b: 0x433c, - 0x57c: 0x4870, 0x57d: 0x4342, + 0x540: 0x4804, 0x541: 0x480a, 0x542: 0x491e, 0x543: 0x4936, 0x544: 0x4926, 0x545: 0x493e, + 0x546: 0x492e, 0x547: 0x4946, 0x548: 0x47aa, 0x549: 0x47b0, 0x54a: 0x488e, 0x54b: 0x48a6, + 0x54c: 0x4896, 0x54d: 0x48ae, 0x54e: 0x489e, 0x54f: 0x48b6, 0x550: 0x4816, 0x551: 0x481c, + 0x552: 0x3db8, 0x553: 0x3dc8, 0x554: 0x3dc0, 0x555: 0x3dd0, + 0x558: 0x47b6, 0x559: 0x47bc, 0x55a: 0x3ce8, 0x55b: 0x3cf8, 0x55c: 0x3cf0, 0x55d: 0x3d00, + 0x560: 0x482e, 0x561: 0x4834, 0x562: 0x494e, 0x563: 0x4966, + 0x564: 0x4956, 0x565: 0x496e, 0x566: 0x495e, 0x567: 0x4976, 0x568: 0x47c2, 0x569: 0x47c8, + 0x56a: 0x48be, 0x56b: 0x48d6, 0x56c: 0x48c6, 0x56d: 0x48de, 0x56e: 0x48ce, 0x56f: 0x48e6, + 0x570: 0x4846, 0x571: 0x484c, 0x572: 0x3e18, 0x573: 0x3e30, 0x574: 0x3e20, 0x575: 0x3e38, + 0x576: 0x3e28, 0x577: 0x3e40, 0x578: 0x47ce, 0x579: 0x47d4, 0x57a: 0x3d18, 0x57b: 0x3d30, + 0x57c: 0x3d20, 0x57d: 0x3d38, 0x57e: 0x3d28, 0x57f: 0x3d40, // Block 0x16, offset 0x580 - 0x580: 0x3da0, 0x581: 0x3da8, 0x582: 0x4184, 0x583: 0x41a2, 0x584: 0x418e, 0x585: 0x41ac, - 0x586: 0x4198, 0x587: 0x41b6, 0x588: 0x3cd8, 0x589: 0x3ce0, 0x58a: 0x40d0, 0x58b: 0x40ee, - 0x58c: 0x40da, 0x58d: 0x40f8, 0x58e: 0x40e4, 0x58f: 0x4102, 0x590: 0x3de8, 0x591: 0x3df0, - 0x592: 0x41c0, 0x593: 0x41de, 0x594: 0x41ca, 0x595: 0x41e8, 0x596: 0x41d4, 0x597: 0x41f2, - 0x598: 0x3d08, 0x599: 0x3d10, 0x59a: 0x410c, 0x59b: 0x412a, 0x59c: 0x4116, 0x59d: 0x4134, - 0x59e: 0x4120, 0x59f: 0x413e, 0x5a0: 0x3ec0, 0x5a1: 0x3ec8, 0x5a2: 0x41fc, 0x5a3: 0x421a, - 0x5a4: 0x4206, 0x5a5: 0x4224, 0x5a6: 0x4210, 0x5a7: 0x422e, 0x5a8: 0x3d80, 0x5a9: 0x3d88, - 0x5aa: 0x4148, 0x5ab: 0x4166, 0x5ac: 0x4152, 0x5ad: 0x4170, 0x5ae: 0x415c, 0x5af: 0x417a, - 0x5b0: 0x3685, 0x5b1: 0x367f, 0x5b2: 0x3d90, 0x5b3: 0x368b, 0x5b4: 0x3d98, - 0x5b6: 0x4810, 0x5b7: 0x3db0, 0x5b8: 0x35f5, 0x5b9: 0x35ef, 0x5ba: 0x35e3, 0x5bb: 0x42ee, - 0x5bc: 0x35fb, 0x5bd: 0x8100, 0x5be: 0x01d3, 0x5bf: 0xa100, + 0x580: 0x4852, 0x581: 0x4858, 0x582: 0x3e48, 0x583: 0x3e58, 0x584: 0x3e50, 0x585: 0x3e60, + 0x588: 0x47da, 0x589: 0x47e0, 0x58a: 0x3d48, 0x58b: 0x3d58, + 0x58c: 0x3d50, 0x58d: 0x3d60, 0x590: 0x4864, 0x591: 0x486a, + 0x592: 0x3e80, 0x593: 0x3e98, 0x594: 0x3e88, 0x595: 0x3ea0, 0x596: 0x3e90, 0x597: 0x3ea8, + 0x599: 0x47e6, 0x59b: 0x3d68, 0x59d: 0x3d70, + 0x59f: 0x3d78, 0x5a0: 0x487c, 0x5a1: 0x4882, 0x5a2: 0x497e, 0x5a3: 0x4996, + 0x5a4: 0x4986, 0x5a5: 0x499e, 0x5a6: 0x498e, 0x5a7: 0x49a6, 0x5a8: 0x47ec, 0x5a9: 0x47f2, + 0x5aa: 0x48ee, 0x5ab: 0x4906, 0x5ac: 0x48f6, 0x5ad: 0x490e, 0x5ae: 0x48fe, 0x5af: 0x4916, + 0x5b0: 0x47f8, 0x5b1: 0x431e, 0x5b2: 0x3691, 0x5b3: 0x4324, 0x5b4: 0x4822, 0x5b5: 0x432a, + 0x5b6: 0x36a3, 0x5b7: 0x4330, 0x5b8: 0x36c1, 0x5b9: 0x4336, 0x5ba: 0x36d9, 0x5bb: 0x433c, + 0x5bc: 0x4870, 0x5bd: 0x4342, // Block 0x17, offset 0x5c0 - 0x5c0: 0x8100, 0x5c1: 0x35a7, 0x5c2: 0x3dd8, 0x5c3: 0x369d, 0x5c4: 0x3de0, - 0x5c6: 0x483a, 0x5c7: 0x3df8, 0x5c8: 0x3601, 0x5c9: 0x42f4, 0x5ca: 0x360d, 0x5cb: 0x42fa, - 0x5cc: 0x3619, 0x5cd: 0x3b8f, 0x5ce: 0x3b96, 0x5cf: 0x3b9d, 0x5d0: 0x36b5, 0x5d1: 0x36af, - 0x5d2: 0x3e00, 0x5d3: 0x44e4, 0x5d6: 0x36bb, 0x5d7: 0x3e10, - 0x5d8: 0x3631, 0x5d9: 0x362b, 0x5da: 0x361f, 0x5db: 0x4300, 0x5dd: 0x3ba4, - 0x5de: 0x3bab, 0x5df: 0x3bb2, 0x5e0: 0x36eb, 0x5e1: 0x36e5, 0x5e2: 0x3e68, 0x5e3: 0x44ec, - 0x5e4: 0x36cd, 0x5e5: 0x36d3, 0x5e6: 0x36f1, 0x5e7: 0x3e78, 0x5e8: 0x3661, 0x5e9: 0x365b, - 0x5ea: 0x364f, 0x5eb: 0x430c, 0x5ec: 0x3649, 0x5ed: 0x359b, 0x5ee: 0x42e8, 0x5ef: 0x0081, - 0x5f2: 0x3eb0, 0x5f3: 0x36f7, 0x5f4: 0x3eb8, - 0x5f6: 0x4888, 0x5f7: 0x3ed0, 0x5f8: 0x363d, 0x5f9: 0x4306, 0x5fa: 0x366d, 0x5fb: 0x4318, - 0x5fc: 0x3679, 0x5fd: 0x4256, 0x5fe: 0xa100, + 0x5c0: 0x3da0, 0x5c1: 0x3da8, 0x5c2: 0x4184, 0x5c3: 0x41a2, 0x5c4: 0x418e, 0x5c5: 0x41ac, + 0x5c6: 0x4198, 0x5c7: 0x41b6, 0x5c8: 0x3cd8, 0x5c9: 0x3ce0, 0x5ca: 0x40d0, 0x5cb: 0x40ee, + 0x5cc: 0x40da, 0x5cd: 0x40f8, 0x5ce: 0x40e4, 0x5cf: 0x4102, 0x5d0: 0x3de8, 0x5d1: 0x3df0, + 0x5d2: 0x41c0, 0x5d3: 0x41de, 0x5d4: 0x41ca, 0x5d5: 0x41e8, 0x5d6: 0x41d4, 0x5d7: 0x41f2, + 0x5d8: 0x3d08, 0x5d9: 0x3d10, 0x5da: 0x410c, 0x5db: 0x412a, 0x5dc: 0x4116, 0x5dd: 0x4134, + 0x5de: 0x4120, 0x5df: 0x413e, 0x5e0: 0x3ec0, 0x5e1: 0x3ec8, 0x5e2: 0x41fc, 0x5e3: 0x421a, + 0x5e4: 0x4206, 0x5e5: 0x4224, 0x5e6: 0x4210, 0x5e7: 0x422e, 0x5e8: 0x3d80, 0x5e9: 0x3d88, + 0x5ea: 0x4148, 0x5eb: 0x4166, 0x5ec: 0x4152, 0x5ed: 0x4170, 0x5ee: 0x415c, 0x5ef: 0x417a, + 0x5f0: 0x3685, 0x5f1: 0x367f, 0x5f2: 0x3d90, 0x5f3: 0x368b, 0x5f4: 0x3d98, + 0x5f6: 0x4810, 0x5f7: 0x3db0, 0x5f8: 0x35f5, 0x5f9: 0x35ef, 0x5fa: 0x35e3, 0x5fb: 0x42ee, + 0x5fc: 0x35fb, 0x5fd: 0x8100, 0x5fe: 0x01d3, 0x5ff: 0xa100, // Block 0x18, offset 0x600 - 0x601: 0x3c06, 0x603: 0xa000, 0x604: 0x3c0d, 0x605: 0xa000, - 0x607: 0x3c14, 0x608: 0xa000, 0x609: 0x3c1b, - 0x60d: 0xa000, - 0x620: 0x2f65, 0x621: 0xa000, 0x622: 0x3c29, - 0x624: 0xa000, 0x625: 0xa000, - 0x62d: 0x3c22, 0x62e: 0x2f60, 0x62f: 0x2f6a, - 0x630: 0x3c30, 0x631: 0x3c37, 0x632: 0xa000, 0x633: 0xa000, 0x634: 0x3c3e, 0x635: 0x3c45, - 0x636: 0xa000, 0x637: 0xa000, 0x638: 0x3c4c, 0x639: 0x3c53, 0x63a: 0xa000, 0x63b: 0xa000, - 0x63c: 0xa000, 0x63d: 0xa000, + 0x600: 0x8100, 0x601: 0x35a7, 0x602: 0x3dd8, 0x603: 0x369d, 0x604: 0x3de0, + 0x606: 0x483a, 0x607: 0x3df8, 0x608: 0x3601, 0x609: 0x42f4, 0x60a: 0x360d, 0x60b: 0x42fa, + 0x60c: 0x3619, 0x60d: 0x3b8f, 0x60e: 0x3b96, 0x60f: 0x3b9d, 0x610: 0x36b5, 0x611: 0x36af, + 0x612: 0x3e00, 0x613: 0x44e4, 0x616: 0x36bb, 0x617: 0x3e10, + 0x618: 0x3631, 0x619: 0x362b, 0x61a: 0x361f, 0x61b: 0x4300, 0x61d: 0x3ba4, + 0x61e: 0x3bab, 0x61f: 0x3bb2, 0x620: 0x36eb, 0x621: 0x36e5, 0x622: 0x3e68, 0x623: 0x44ec, + 0x624: 0x36cd, 0x625: 0x36d3, 0x626: 0x36f1, 0x627: 0x3e78, 0x628: 0x3661, 0x629: 0x365b, + 0x62a: 0x364f, 0x62b: 0x430c, 0x62c: 0x3649, 0x62d: 0x359b, 0x62e: 0x42e8, 0x62f: 0x0081, + 0x632: 0x3eb0, 0x633: 0x36f7, 0x634: 0x3eb8, + 0x636: 0x4888, 0x637: 0x3ed0, 0x638: 0x363d, 0x639: 0x4306, 0x63a: 0x366d, 0x63b: 0x4318, + 0x63c: 0x3679, 0x63d: 0x4256, 0x63e: 0xa100, // Block 0x19, offset 0x640 - 0x640: 0x3c5a, 0x641: 0x3c61, 0x642: 0xa000, 0x643: 0xa000, 0x644: 0x3c76, 0x645: 0x3c7d, - 0x646: 0xa000, 0x647: 0xa000, 0x648: 0x3c84, 0x649: 0x3c8b, - 0x651: 0xa000, - 0x652: 0xa000, - 0x662: 0xa000, - 0x668: 0xa000, 0x669: 0xa000, - 0x66b: 0xa000, 0x66c: 0x3ca0, 0x66d: 0x3ca7, 0x66e: 0x3cae, 0x66f: 0x3cb5, - 0x672: 0xa000, 0x673: 0xa000, 0x674: 0xa000, 0x675: 0xa000, + 0x641: 0x3c06, 0x643: 0xa000, 0x644: 0x3c0d, 0x645: 0xa000, + 0x647: 0x3c14, 0x648: 0xa000, 0x649: 0x3c1b, + 0x64d: 0xa000, + 0x660: 0x2f65, 0x661: 0xa000, 0x662: 0x3c29, + 0x664: 0xa000, 0x665: 0xa000, + 0x66d: 0x3c22, 0x66e: 0x2f60, 0x66f: 0x2f6a, + 0x670: 0x3c30, 0x671: 0x3c37, 0x672: 0xa000, 0x673: 0xa000, 0x674: 0x3c3e, 0x675: 0x3c45, + 0x676: 0xa000, 0x677: 0xa000, 0x678: 0x3c4c, 0x679: 0x3c53, 0x67a: 0xa000, 0x67b: 0xa000, + 0x67c: 0xa000, 0x67d: 0xa000, // Block 0x1a, offset 0x680 - 0x686: 0xa000, 0x68b: 0xa000, - 0x68c: 0x3f08, 0x68d: 0xa000, 0x68e: 0x3f10, 0x68f: 0xa000, 0x690: 0x3f18, 0x691: 0xa000, - 0x692: 0x3f20, 0x693: 0xa000, 0x694: 0x3f28, 0x695: 0xa000, 0x696: 0x3f30, 0x697: 0xa000, - 0x698: 0x3f38, 0x699: 0xa000, 0x69a: 0x3f40, 0x69b: 0xa000, 0x69c: 0x3f48, 0x69d: 0xa000, - 0x69e: 0x3f50, 0x69f: 0xa000, 0x6a0: 0x3f58, 0x6a1: 0xa000, 0x6a2: 0x3f60, - 0x6a4: 0xa000, 0x6a5: 0x3f68, 0x6a6: 0xa000, 0x6a7: 0x3f70, 0x6a8: 0xa000, 0x6a9: 0x3f78, - 0x6af: 0xa000, - 0x6b0: 0x3f80, 0x6b1: 0x3f88, 0x6b2: 0xa000, 0x6b3: 0x3f90, 0x6b4: 0x3f98, 0x6b5: 0xa000, - 0x6b6: 0x3fa0, 0x6b7: 0x3fa8, 0x6b8: 0xa000, 0x6b9: 0x3fb0, 0x6ba: 0x3fb8, 0x6bb: 0xa000, - 0x6bc: 0x3fc0, 0x6bd: 0x3fc8, + 0x680: 0x3c5a, 0x681: 0x3c61, 0x682: 0xa000, 0x683: 0xa000, 0x684: 0x3c76, 0x685: 0x3c7d, + 0x686: 0xa000, 0x687: 0xa000, 0x688: 0x3c84, 0x689: 0x3c8b, + 0x691: 0xa000, + 0x692: 0xa000, + 0x6a2: 0xa000, + 0x6a8: 0xa000, 0x6a9: 0xa000, + 0x6ab: 0xa000, 0x6ac: 0x3ca0, 0x6ad: 0x3ca7, 0x6ae: 0x3cae, 0x6af: 0x3cb5, + 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0xa000, 0x6b5: 0xa000, // Block 0x1b, offset 0x6c0 - 0x6d4: 0x3f00, - 0x6d9: 0x9903, 0x6da: 0x9903, 0x6db: 0x8100, 0x6dc: 0x8100, 0x6dd: 0xa000, - 0x6de: 0x3fd0, - 0x6e6: 0xa000, - 0x6eb: 0xa000, 0x6ec: 0x3fe0, 0x6ed: 0xa000, 0x6ee: 0x3fe8, 0x6ef: 0xa000, - 0x6f0: 0x3ff0, 0x6f1: 0xa000, 0x6f2: 0x3ff8, 0x6f3: 0xa000, 0x6f4: 0x4000, 0x6f5: 0xa000, - 0x6f6: 0x4008, 0x6f7: 0xa000, 0x6f8: 0x4010, 0x6f9: 0xa000, 0x6fa: 0x4018, 0x6fb: 0xa000, - 0x6fc: 0x4020, 0x6fd: 0xa000, 0x6fe: 0x4028, 0x6ff: 0xa000, + 0x6c6: 0xa000, 0x6cb: 0xa000, + 0x6cc: 0x3f08, 0x6cd: 0xa000, 0x6ce: 0x3f10, 0x6cf: 0xa000, 0x6d0: 0x3f18, 0x6d1: 0xa000, + 0x6d2: 0x3f20, 0x6d3: 0xa000, 0x6d4: 0x3f28, 0x6d5: 0xa000, 0x6d6: 0x3f30, 0x6d7: 0xa000, + 0x6d8: 0x3f38, 0x6d9: 0xa000, 0x6da: 0x3f40, 0x6db: 0xa000, 0x6dc: 0x3f48, 0x6dd: 0xa000, + 0x6de: 0x3f50, 0x6df: 0xa000, 0x6e0: 0x3f58, 0x6e1: 0xa000, 0x6e2: 0x3f60, + 0x6e4: 0xa000, 0x6e5: 0x3f68, 0x6e6: 0xa000, 0x6e7: 0x3f70, 0x6e8: 0xa000, 0x6e9: 0x3f78, + 0x6ef: 0xa000, + 0x6f0: 0x3f80, 0x6f1: 0x3f88, 0x6f2: 0xa000, 0x6f3: 0x3f90, 0x6f4: 0x3f98, 0x6f5: 0xa000, + 0x6f6: 0x3fa0, 0x6f7: 0x3fa8, 0x6f8: 0xa000, 0x6f9: 0x3fb0, 0x6fa: 0x3fb8, 0x6fb: 0xa000, + 0x6fc: 0x3fc0, 0x6fd: 0x3fc8, // Block 0x1c, offset 0x700 - 0x700: 0x4030, 0x701: 0xa000, 0x702: 0x4038, 0x704: 0xa000, 0x705: 0x4040, - 0x706: 0xa000, 0x707: 0x4048, 0x708: 0xa000, 0x709: 0x4050, - 0x70f: 0xa000, 0x710: 0x4058, 0x711: 0x4060, - 0x712: 0xa000, 0x713: 0x4068, 0x714: 0x4070, 0x715: 0xa000, 0x716: 0x4078, 0x717: 0x4080, - 0x718: 0xa000, 0x719: 0x4088, 0x71a: 0x4090, 0x71b: 0xa000, 0x71c: 0x4098, 0x71d: 0x40a0, - 0x72f: 0xa000, - 0x730: 0xa000, 0x731: 0xa000, 0x732: 0xa000, 0x734: 0x3fd8, - 0x737: 0x40a8, 0x738: 0x40b0, 0x739: 0x40b8, 0x73a: 0x40c0, - 0x73d: 0xa000, 0x73e: 0x40c8, + 0x714: 0x3f00, + 0x719: 0x9903, 0x71a: 0x9903, 0x71b: 0x8100, 0x71c: 0x8100, 0x71d: 0xa000, + 0x71e: 0x3fd0, + 0x726: 0xa000, + 0x72b: 0xa000, 0x72c: 0x3fe0, 0x72d: 0xa000, 0x72e: 0x3fe8, 0x72f: 0xa000, + 0x730: 0x3ff0, 0x731: 0xa000, 0x732: 0x3ff8, 0x733: 0xa000, 0x734: 0x4000, 0x735: 0xa000, + 0x736: 0x4008, 0x737: 0xa000, 0x738: 0x4010, 0x739: 0xa000, 0x73a: 0x4018, 0x73b: 0xa000, + 0x73c: 0x4020, 0x73d: 0xa000, 0x73e: 0x4028, 0x73f: 0xa000, // Block 0x1d, offset 0x740 - 0x740: 0x1377, 0x741: 0x0cfb, 0x742: 0x13d3, 0x743: 0x139f, 0x744: 0x0e57, 0x745: 0x06eb, - 0x746: 0x08df, 0x747: 0x162b, 0x748: 0x162b, 0x749: 0x0a0b, 0x74a: 0x145f, 0x74b: 0x0943, - 0x74c: 0x0a07, 0x74d: 0x0bef, 0x74e: 0x0fcf, 0x74f: 0x115f, 0x750: 0x1297, 0x751: 0x12d3, - 0x752: 0x1307, 0x753: 0x141b, 0x754: 0x0d73, 0x755: 0x0dff, 0x756: 0x0eab, 0x757: 0x0f43, - 0x758: 0x125f, 0x759: 0x1447, 0x75a: 0x1573, 0x75b: 0x070f, 0x75c: 0x08b3, 0x75d: 0x0d87, - 0x75e: 0x0ecf, 0x75f: 0x1293, 0x760: 0x15c3, 0x761: 0x0ab3, 0x762: 0x0e77, 0x763: 0x1283, - 0x764: 0x1317, 0x765: 0x0c23, 0x766: 0x11bb, 0x767: 0x12df, 0x768: 0x0b1f, 0x769: 0x0d0f, - 0x76a: 0x0e17, 0x76b: 0x0f1b, 0x76c: 0x1427, 0x76d: 0x074f, 0x76e: 0x07e7, 0x76f: 0x0853, - 0x770: 0x0c8b, 0x771: 0x0d7f, 0x772: 0x0ecb, 0x773: 0x0fef, 0x774: 0x1177, 0x775: 0x128b, - 0x776: 0x12a3, 0x777: 0x13c7, 0x778: 0x14ef, 0x779: 0x15a3, 0x77a: 0x15bf, 0x77b: 0x102b, - 0x77c: 0x106b, 0x77d: 0x1123, 0x77e: 0x1243, 0x77f: 0x147b, + 0x740: 0x4030, 0x741: 0xa000, 0x742: 0x4038, 0x744: 0xa000, 0x745: 0x4040, + 0x746: 0xa000, 0x747: 0x4048, 0x748: 0xa000, 0x749: 0x4050, + 0x74f: 0xa000, 0x750: 0x4058, 0x751: 0x4060, + 0x752: 0xa000, 0x753: 0x4068, 0x754: 0x4070, 0x755: 0xa000, 0x756: 0x4078, 0x757: 0x4080, + 0x758: 0xa000, 0x759: 0x4088, 0x75a: 0x4090, 0x75b: 0xa000, 0x75c: 0x4098, 0x75d: 0x40a0, + 0x76f: 0xa000, + 0x770: 0xa000, 0x771: 0xa000, 0x772: 0xa000, 0x774: 0x3fd8, + 0x777: 0x40a8, 0x778: 0x40b0, 0x779: 0x40b8, 0x77a: 0x40c0, + 0x77d: 0xa000, 0x77e: 0x40c8, // Block 0x1e, offset 0x780 - 0x780: 0x15cb, 0x781: 0x134b, 0x782: 0x09c7, 0x783: 0x0b3b, 0x784: 0x10db, 0x785: 0x119b, - 0x786: 0x0eff, 0x787: 0x1033, 0x788: 0x1397, 0x789: 0x14e7, 0x78a: 0x09c3, 0x78b: 0x0a8f, - 0x78c: 0x0d77, 0x78d: 0x0e2b, 0x78e: 0x0e5f, 0x78f: 0x1113, 0x790: 0x113b, 0x791: 0x14a7, - 0x792: 0x084f, 0x793: 0x11a7, 0x794: 0x07f3, 0x795: 0x07ef, 0x796: 0x1097, 0x797: 0x1127, - 0x798: 0x125b, 0x799: 0x14af, 0x79a: 0x1367, 0x79b: 0x0c27, 0x79c: 0x0d73, 0x79d: 0x1357, - 0x79e: 0x06f7, 0x79f: 0x0a63, 0x7a0: 0x0b93, 0x7a1: 0x0f2f, 0x7a2: 0x0faf, 0x7a3: 0x0873, - 0x7a4: 0x103b, 0x7a5: 0x075f, 0x7a6: 0x0b77, 0x7a7: 0x06d7, 0x7a8: 0x0deb, 0x7a9: 0x0ca3, - 0x7aa: 0x110f, 0x7ab: 0x08c7, 0x7ac: 0x09b3, 0x7ad: 0x0ffb, 0x7ae: 0x1263, 0x7af: 0x133b, - 0x7b0: 0x0db7, 0x7b1: 0x13f7, 0x7b2: 0x0de3, 0x7b3: 0x0c37, 0x7b4: 0x121b, 0x7b5: 0x0c57, - 0x7b6: 0x0fab, 0x7b7: 0x072b, 0x7b8: 0x07a7, 0x7b9: 0x07eb, 0x7ba: 0x0d53, 0x7bb: 0x10fb, - 0x7bc: 0x11f3, 0x7bd: 0x1347, 0x7be: 0x145b, 0x7bf: 0x085b, + 0x780: 0x1377, 0x781: 0x0cfb, 0x782: 0x13d3, 0x783: 0x139f, 0x784: 0x0e57, 0x785: 0x06eb, + 0x786: 0x08df, 0x787: 0x162b, 0x788: 0x162b, 0x789: 0x0a0b, 0x78a: 0x145f, 0x78b: 0x0943, + 0x78c: 0x0a07, 0x78d: 0x0bef, 0x78e: 0x0fcf, 0x78f: 0x115f, 0x790: 0x1297, 0x791: 0x12d3, + 0x792: 0x1307, 0x793: 0x141b, 0x794: 0x0d73, 0x795: 0x0dff, 0x796: 0x0eab, 0x797: 0x0f43, + 0x798: 0x125f, 0x799: 0x1447, 0x79a: 0x1573, 0x79b: 0x070f, 0x79c: 0x08b3, 0x79d: 0x0d87, + 0x79e: 0x0ecf, 0x79f: 0x1293, 0x7a0: 0x15c3, 0x7a1: 0x0ab3, 0x7a2: 0x0e77, 0x7a3: 0x1283, + 0x7a4: 0x1317, 0x7a5: 0x0c23, 0x7a6: 0x11bb, 0x7a7: 0x12df, 0x7a8: 0x0b1f, 0x7a9: 0x0d0f, + 0x7aa: 0x0e17, 0x7ab: 0x0f1b, 0x7ac: 0x1427, 0x7ad: 0x074f, 0x7ae: 0x07e7, 0x7af: 0x0853, + 0x7b0: 0x0c8b, 0x7b1: 0x0d7f, 0x7b2: 0x0ecb, 0x7b3: 0x0fef, 0x7b4: 0x1177, 0x7b5: 0x128b, + 0x7b6: 0x12a3, 0x7b7: 0x13c7, 0x7b8: 0x14ef, 0x7b9: 0x15a3, 0x7ba: 0x15bf, 0x7bb: 0x102b, + 0x7bc: 0x106b, 0x7bd: 0x1123, 0x7be: 0x1243, 0x7bf: 0x147b, // Block 0x1f, offset 0x7c0 - 0x7c0: 0x090f, 0x7c1: 0x0a17, 0x7c2: 0x0b2f, 0x7c3: 0x0cbf, 0x7c4: 0x0e7b, 0x7c5: 0x103f, - 0x7c6: 0x1497, 0x7c7: 0x157b, 0x7c8: 0x15cf, 0x7c9: 0x15e7, 0x7ca: 0x0837, 0x7cb: 0x0cf3, - 0x7cc: 0x0da3, 0x7cd: 0x13eb, 0x7ce: 0x0afb, 0x7cf: 0x0bd7, 0x7d0: 0x0bf3, 0x7d1: 0x0c83, - 0x7d2: 0x0e6b, 0x7d3: 0x0eb7, 0x7d4: 0x0f67, 0x7d5: 0x108b, 0x7d6: 0x112f, 0x7d7: 0x1193, - 0x7d8: 0x13db, 0x7d9: 0x126b, 0x7da: 0x1403, 0x7db: 0x147f, 0x7dc: 0x080f, 0x7dd: 0x083b, - 0x7de: 0x0923, 0x7df: 0x0ea7, 0x7e0: 0x12f3, 0x7e1: 0x133b, 0x7e2: 0x0b1b, 0x7e3: 0x0b8b, - 0x7e4: 0x0c4f, 0x7e5: 0x0daf, 0x7e6: 0x10d7, 0x7e7: 0x0f23, 0x7e8: 0x073b, 0x7e9: 0x097f, - 0x7ea: 0x0a63, 0x7eb: 0x0ac7, 0x7ec: 0x0b97, 0x7ed: 0x0f3f, 0x7ee: 0x0f5b, 0x7ef: 0x116b, - 0x7f0: 0x118b, 0x7f1: 0x1463, 0x7f2: 0x14e3, 0x7f3: 0x14f3, 0x7f4: 0x152f, 0x7f5: 0x0753, - 0x7f6: 0x107f, 0x7f7: 0x144f, 0x7f8: 0x14cb, 0x7f9: 0x0baf, 0x7fa: 0x0717, 0x7fb: 0x0777, - 0x7fc: 0x0a67, 0x7fd: 0x0a87, 0x7fe: 0x0caf, 0x7ff: 0x0d73, + 0x7c0: 0x15cb, 0x7c1: 0x134b, 0x7c2: 0x09c7, 0x7c3: 0x0b3b, 0x7c4: 0x10db, 0x7c5: 0x119b, + 0x7c6: 0x0eff, 0x7c7: 0x1033, 0x7c8: 0x1397, 0x7c9: 0x14e7, 0x7ca: 0x09c3, 0x7cb: 0x0a8f, + 0x7cc: 0x0d77, 0x7cd: 0x0e2b, 0x7ce: 0x0e5f, 0x7cf: 0x1113, 0x7d0: 0x113b, 0x7d1: 0x14a7, + 0x7d2: 0x084f, 0x7d3: 0x11a7, 0x7d4: 0x07f3, 0x7d5: 0x07ef, 0x7d6: 0x1097, 0x7d7: 0x1127, + 0x7d8: 0x125b, 0x7d9: 0x14af, 0x7da: 0x1367, 0x7db: 0x0c27, 0x7dc: 0x0d73, 0x7dd: 0x1357, + 0x7de: 0x06f7, 0x7df: 0x0a63, 0x7e0: 0x0b93, 0x7e1: 0x0f2f, 0x7e2: 0x0faf, 0x7e3: 0x0873, + 0x7e4: 0x103b, 0x7e5: 0x075f, 0x7e6: 0x0b77, 0x7e7: 0x06d7, 0x7e8: 0x0deb, 0x7e9: 0x0ca3, + 0x7ea: 0x110f, 0x7eb: 0x08c7, 0x7ec: 0x09b3, 0x7ed: 0x0ffb, 0x7ee: 0x1263, 0x7ef: 0x133b, + 0x7f0: 0x0db7, 0x7f1: 0x13f7, 0x7f2: 0x0de3, 0x7f3: 0x0c37, 0x7f4: 0x121b, 0x7f5: 0x0c57, + 0x7f6: 0x0fab, 0x7f7: 0x072b, 0x7f8: 0x07a7, 0x7f9: 0x07eb, 0x7fa: 0x0d53, 0x7fb: 0x10fb, + 0x7fc: 0x11f3, 0x7fd: 0x1347, 0x7fe: 0x145b, 0x7ff: 0x085b, // Block 0x20, offset 0x800 - 0x800: 0x0ec3, 0x801: 0x0fcb, 0x802: 0x1277, 0x803: 0x1417, 0x804: 0x1623, 0x805: 0x0ce3, - 0x806: 0x14a3, 0x807: 0x0833, 0x808: 0x0d2f, 0x809: 0x0d3b, 0x80a: 0x0e0f, 0x80b: 0x0e47, - 0x80c: 0x0f4b, 0x80d: 0x0fa7, 0x80e: 0x1027, 0x80f: 0x110b, 0x810: 0x153b, 0x811: 0x07af, - 0x812: 0x0c03, 0x813: 0x14b3, 0x814: 0x0767, 0x815: 0x0aab, 0x816: 0x0e2f, 0x817: 0x13df, - 0x818: 0x0b67, 0x819: 0x0bb7, 0x81a: 0x0d43, 0x81b: 0x0f2f, 0x81c: 0x14bb, 0x81d: 0x0817, - 0x81e: 0x08ff, 0x81f: 0x0a97, 0x820: 0x0cd3, 0x821: 0x0d1f, 0x822: 0x0d5f, 0x823: 0x0df3, - 0x824: 0x0f47, 0x825: 0x0fbb, 0x826: 0x1157, 0x827: 0x12f7, 0x828: 0x1303, 0x829: 0x1457, - 0x82a: 0x14d7, 0x82b: 0x0883, 0x82c: 0x0e4b, 0x82d: 0x0903, 0x82e: 0x0ec7, 0x82f: 0x0f6b, - 0x830: 0x1287, 0x831: 0x14bf, 0x832: 0x15ab, 0x833: 0x15d3, 0x834: 0x0d37, 0x835: 0x0e27, - 0x836: 0x11c3, 0x837: 0x10b7, 0x838: 0x10c3, 0x839: 0x10e7, 0x83a: 0x0f17, 0x83b: 0x0e9f, - 0x83c: 0x1363, 0x83d: 0x0733, 0x83e: 0x122b, 0x83f: 0x081b, + 0x800: 0x090f, 0x801: 0x0a17, 0x802: 0x0b2f, 0x803: 0x0cbf, 0x804: 0x0e7b, 0x805: 0x103f, + 0x806: 0x1497, 0x807: 0x157b, 0x808: 0x15cf, 0x809: 0x15e7, 0x80a: 0x0837, 0x80b: 0x0cf3, + 0x80c: 0x0da3, 0x80d: 0x13eb, 0x80e: 0x0afb, 0x80f: 0x0bd7, 0x810: 0x0bf3, 0x811: 0x0c83, + 0x812: 0x0e6b, 0x813: 0x0eb7, 0x814: 0x0f67, 0x815: 0x108b, 0x816: 0x112f, 0x817: 0x1193, + 0x818: 0x13db, 0x819: 0x126b, 0x81a: 0x1403, 0x81b: 0x147f, 0x81c: 0x080f, 0x81d: 0x083b, + 0x81e: 0x0923, 0x81f: 0x0ea7, 0x820: 0x12f3, 0x821: 0x133b, 0x822: 0x0b1b, 0x823: 0x0b8b, + 0x824: 0x0c4f, 0x825: 0x0daf, 0x826: 0x10d7, 0x827: 0x0f23, 0x828: 0x073b, 0x829: 0x097f, + 0x82a: 0x0a63, 0x82b: 0x0ac7, 0x82c: 0x0b97, 0x82d: 0x0f3f, 0x82e: 0x0f5b, 0x82f: 0x116b, + 0x830: 0x118b, 0x831: 0x1463, 0x832: 0x14e3, 0x833: 0x14f3, 0x834: 0x152f, 0x835: 0x0753, + 0x836: 0x107f, 0x837: 0x144f, 0x838: 0x14cb, 0x839: 0x0baf, 0x83a: 0x0717, 0x83b: 0x0777, + 0x83c: 0x0a67, 0x83d: 0x0a87, 0x83e: 0x0caf, 0x83f: 0x0d73, // Block 0x21, offset 0x840 - 0x840: 0x080b, 0x841: 0x0b0b, 0x842: 0x0c2b, 0x843: 0x10f3, 0x844: 0x0a53, 0x845: 0x0e03, - 0x846: 0x0cef, 0x847: 0x13e7, 0x848: 0x12e7, 0x849: 0x14ab, 0x84a: 0x1323, 0x84b: 0x0b27, - 0x84c: 0x0787, 0x84d: 0x095b, 0x850: 0x09af, - 0x852: 0x0cdf, 0x855: 0x07f7, 0x856: 0x0f1f, 0x857: 0x0fe3, - 0x858: 0x1047, 0x859: 0x1063, 0x85a: 0x1067, 0x85b: 0x107b, 0x85c: 0x14fb, 0x85d: 0x10eb, - 0x85e: 0x116f, 0x860: 0x128f, 0x862: 0x1353, - 0x865: 0x1407, 0x866: 0x1433, - 0x86a: 0x154f, 0x86b: 0x1553, 0x86c: 0x1557, 0x86d: 0x15bb, 0x86e: 0x142b, 0x86f: 0x14c7, - 0x870: 0x0757, 0x871: 0x077b, 0x872: 0x078f, 0x873: 0x084b, 0x874: 0x0857, 0x875: 0x0897, - 0x876: 0x094b, 0x877: 0x0967, 0x878: 0x096f, 0x879: 0x09ab, 0x87a: 0x09b7, 0x87b: 0x0a93, - 0x87c: 0x0a9b, 0x87d: 0x0ba3, 0x87e: 0x0bcb, 0x87f: 0x0bd3, + 0x840: 0x0ec3, 0x841: 0x0fcb, 0x842: 0x1277, 0x843: 0x1417, 0x844: 0x1623, 0x845: 0x0ce3, + 0x846: 0x14a3, 0x847: 0x0833, 0x848: 0x0d2f, 0x849: 0x0d3b, 0x84a: 0x0e0f, 0x84b: 0x0e47, + 0x84c: 0x0f4b, 0x84d: 0x0fa7, 0x84e: 0x1027, 0x84f: 0x110b, 0x850: 0x153b, 0x851: 0x07af, + 0x852: 0x0c03, 0x853: 0x14b3, 0x854: 0x0767, 0x855: 0x0aab, 0x856: 0x0e2f, 0x857: 0x13df, + 0x858: 0x0b67, 0x859: 0x0bb7, 0x85a: 0x0d43, 0x85b: 0x0f2f, 0x85c: 0x14bb, 0x85d: 0x0817, + 0x85e: 0x08ff, 0x85f: 0x0a97, 0x860: 0x0cd3, 0x861: 0x0d1f, 0x862: 0x0d5f, 0x863: 0x0df3, + 0x864: 0x0f47, 0x865: 0x0fbb, 0x866: 0x1157, 0x867: 0x12f7, 0x868: 0x1303, 0x869: 0x1457, + 0x86a: 0x14d7, 0x86b: 0x0883, 0x86c: 0x0e4b, 0x86d: 0x0903, 0x86e: 0x0ec7, 0x86f: 0x0f6b, + 0x870: 0x1287, 0x871: 0x14bf, 0x872: 0x15ab, 0x873: 0x15d3, 0x874: 0x0d37, 0x875: 0x0e27, + 0x876: 0x11c3, 0x877: 0x10b7, 0x878: 0x10c3, 0x879: 0x10e7, 0x87a: 0x0f17, 0x87b: 0x0e9f, + 0x87c: 0x1363, 0x87d: 0x0733, 0x87e: 0x122b, 0x87f: 0x081b, // Block 0x22, offset 0x880 - 0x880: 0x0beb, 0x881: 0x0c97, 0x882: 0x0cc7, 0x883: 0x0ce7, 0x884: 0x0d57, 0x885: 0x0e1b, - 0x886: 0x0e37, 0x887: 0x0e67, 0x888: 0x0ebb, 0x889: 0x0edb, 0x88a: 0x0f4f, 0x88b: 0x102f, - 0x88c: 0x104b, 0x88d: 0x1053, 0x88e: 0x104f, 0x88f: 0x1057, 0x890: 0x105b, 0x891: 0x105f, - 0x892: 0x1073, 0x893: 0x1077, 0x894: 0x109b, 0x895: 0x10af, 0x896: 0x10cb, 0x897: 0x112f, - 0x898: 0x1137, 0x899: 0x113f, 0x89a: 0x1153, 0x89b: 0x117b, 0x89c: 0x11cb, 0x89d: 0x11ff, - 0x89e: 0x11ff, 0x89f: 0x1267, 0x8a0: 0x130f, 0x8a1: 0x1327, 0x8a2: 0x135b, 0x8a3: 0x135f, - 0x8a4: 0x13a3, 0x8a5: 0x13a7, 0x8a6: 0x13ff, 0x8a7: 0x1407, 0x8a8: 0x14db, 0x8a9: 0x151f, - 0x8aa: 0x1537, 0x8ab: 0x0b9b, 0x8ac: 0x171e, 0x8ad: 0x11e3, - 0x8b0: 0x06df, 0x8b1: 0x07e3, 0x8b2: 0x07a3, 0x8b3: 0x074b, 0x8b4: 0x078b, 0x8b5: 0x07b7, - 0x8b6: 0x0847, 0x8b7: 0x0863, 0x8b8: 0x094b, 0x8b9: 0x0937, 0x8ba: 0x0947, 0x8bb: 0x0963, - 0x8bc: 0x09af, 0x8bd: 0x09bf, 0x8be: 0x0a03, 0x8bf: 0x0a0f, + 0x880: 0x080b, 0x881: 0x0b0b, 0x882: 0x0c2b, 0x883: 0x10f3, 0x884: 0x0a53, 0x885: 0x0e03, + 0x886: 0x0cef, 0x887: 0x13e7, 0x888: 0x12e7, 0x889: 0x14ab, 0x88a: 0x1323, 0x88b: 0x0b27, + 0x88c: 0x0787, 0x88d: 0x095b, 0x890: 0x09af, + 0x892: 0x0cdf, 0x895: 0x07f7, 0x896: 0x0f1f, 0x897: 0x0fe3, + 0x898: 0x1047, 0x899: 0x1063, 0x89a: 0x1067, 0x89b: 0x107b, 0x89c: 0x14fb, 0x89d: 0x10eb, + 0x89e: 0x116f, 0x8a0: 0x128f, 0x8a2: 0x1353, + 0x8a5: 0x1407, 0x8a6: 0x1433, + 0x8aa: 0x154f, 0x8ab: 0x1553, 0x8ac: 0x1557, 0x8ad: 0x15bb, 0x8ae: 0x142b, 0x8af: 0x14c7, + 0x8b0: 0x0757, 0x8b1: 0x077b, 0x8b2: 0x078f, 0x8b3: 0x084b, 0x8b4: 0x0857, 0x8b5: 0x0897, + 0x8b6: 0x094b, 0x8b7: 0x0967, 0x8b8: 0x096f, 0x8b9: 0x09ab, 0x8ba: 0x09b7, 0x8bb: 0x0a93, + 0x8bc: 0x0a9b, 0x8bd: 0x0ba3, 0x8be: 0x0bcb, 0x8bf: 0x0bd3, // Block 0x23, offset 0x8c0 - 0x8c0: 0x0a2b, 0x8c1: 0x0a3b, 0x8c2: 0x0b23, 0x8c3: 0x0b2b, 0x8c4: 0x0b5b, 0x8c5: 0x0b7b, - 0x8c6: 0x0bab, 0x8c7: 0x0bc3, 0x8c8: 0x0bb3, 0x8c9: 0x0bd3, 0x8ca: 0x0bc7, 0x8cb: 0x0beb, - 0x8cc: 0x0c07, 0x8cd: 0x0c5f, 0x8ce: 0x0c6b, 0x8cf: 0x0c73, 0x8d0: 0x0c9b, 0x8d1: 0x0cdf, - 0x8d2: 0x0d0f, 0x8d3: 0x0d13, 0x8d4: 0x0d27, 0x8d5: 0x0da7, 0x8d6: 0x0db7, 0x8d7: 0x0e0f, - 0x8d8: 0x0e5b, 0x8d9: 0x0e53, 0x8da: 0x0e67, 0x8db: 0x0e83, 0x8dc: 0x0ebb, 0x8dd: 0x1013, - 0x8de: 0x0edf, 0x8df: 0x0f13, 0x8e0: 0x0f1f, 0x8e1: 0x0f5f, 0x8e2: 0x0f7b, 0x8e3: 0x0f9f, - 0x8e4: 0x0fc3, 0x8e5: 0x0fc7, 0x8e6: 0x0fe3, 0x8e7: 0x0fe7, 0x8e8: 0x0ff7, 0x8e9: 0x100b, - 0x8ea: 0x1007, 0x8eb: 0x1037, 0x8ec: 0x10b3, 0x8ed: 0x10cb, 0x8ee: 0x10e3, 0x8ef: 0x111b, - 0x8f0: 0x112f, 0x8f1: 0x114b, 0x8f2: 0x117b, 0x8f3: 0x122f, 0x8f4: 0x1257, 0x8f5: 0x12cb, - 0x8f6: 0x1313, 0x8f7: 0x131f, 0x8f8: 0x1327, 0x8f9: 0x133f, 0x8fa: 0x1353, 0x8fb: 0x1343, - 0x8fc: 0x135b, 0x8fd: 0x1357, 0x8fe: 0x134f, 0x8ff: 0x135f, + 0x8c0: 0x0beb, 0x8c1: 0x0c97, 0x8c2: 0x0cc7, 0x8c3: 0x0ce7, 0x8c4: 0x0d57, 0x8c5: 0x0e1b, + 0x8c6: 0x0e37, 0x8c7: 0x0e67, 0x8c8: 0x0ebb, 0x8c9: 0x0edb, 0x8ca: 0x0f4f, 0x8cb: 0x102f, + 0x8cc: 0x104b, 0x8cd: 0x1053, 0x8ce: 0x104f, 0x8cf: 0x1057, 0x8d0: 0x105b, 0x8d1: 0x105f, + 0x8d2: 0x1073, 0x8d3: 0x1077, 0x8d4: 0x109b, 0x8d5: 0x10af, 0x8d6: 0x10cb, 0x8d7: 0x112f, + 0x8d8: 0x1137, 0x8d9: 0x113f, 0x8da: 0x1153, 0x8db: 0x117b, 0x8dc: 0x11cb, 0x8dd: 0x11ff, + 0x8de: 0x11ff, 0x8df: 0x1267, 0x8e0: 0x130f, 0x8e1: 0x1327, 0x8e2: 0x135b, 0x8e3: 0x135f, + 0x8e4: 0x13a3, 0x8e5: 0x13a7, 0x8e6: 0x13ff, 0x8e7: 0x1407, 0x8e8: 0x14db, 0x8e9: 0x151f, + 0x8ea: 0x1537, 0x8eb: 0x0b9b, 0x8ec: 0x171e, 0x8ed: 0x11e3, + 0x8f0: 0x06df, 0x8f1: 0x07e3, 0x8f2: 0x07a3, 0x8f3: 0x074b, 0x8f4: 0x078b, 0x8f5: 0x07b7, + 0x8f6: 0x0847, 0x8f7: 0x0863, 0x8f8: 0x094b, 0x8f9: 0x0937, 0x8fa: 0x0947, 0x8fb: 0x0963, + 0x8fc: 0x09af, 0x8fd: 0x09bf, 0x8fe: 0x0a03, 0x8ff: 0x0a0f, // Block 0x24, offset 0x900 - 0x900: 0x136b, 0x901: 0x13a7, 0x902: 0x13e3, 0x903: 0x1413, 0x904: 0x144b, 0x905: 0x146b, - 0x906: 0x14b7, 0x907: 0x14db, 0x908: 0x14fb, 0x909: 0x150f, 0x90a: 0x151f, 0x90b: 0x152b, - 0x90c: 0x1537, 0x90d: 0x158b, 0x90e: 0x162b, 0x90f: 0x16b5, 0x910: 0x16b0, 0x911: 0x16e2, - 0x912: 0x0607, 0x913: 0x062f, 0x914: 0x0633, 0x915: 0x1764, 0x916: 0x1791, 0x917: 0x1809, - 0x918: 0x1617, 0x919: 0x1627, + 0x900: 0x0a2b, 0x901: 0x0a3b, 0x902: 0x0b23, 0x903: 0x0b2b, 0x904: 0x0b5b, 0x905: 0x0b7b, + 0x906: 0x0bab, 0x907: 0x0bc3, 0x908: 0x0bb3, 0x909: 0x0bd3, 0x90a: 0x0bc7, 0x90b: 0x0beb, + 0x90c: 0x0c07, 0x90d: 0x0c5f, 0x90e: 0x0c6b, 0x90f: 0x0c73, 0x910: 0x0c9b, 0x911: 0x0cdf, + 0x912: 0x0d0f, 0x913: 0x0d13, 0x914: 0x0d27, 0x915: 0x0da7, 0x916: 0x0db7, 0x917: 0x0e0f, + 0x918: 0x0e5b, 0x919: 0x0e53, 0x91a: 0x0e67, 0x91b: 0x0e83, 0x91c: 0x0ebb, 0x91d: 0x1013, + 0x91e: 0x0edf, 0x91f: 0x0f13, 0x920: 0x0f1f, 0x921: 0x0f5f, 0x922: 0x0f7b, 0x923: 0x0f9f, + 0x924: 0x0fc3, 0x925: 0x0fc7, 0x926: 0x0fe3, 0x927: 0x0fe7, 0x928: 0x0ff7, 0x929: 0x100b, + 0x92a: 0x1007, 0x92b: 0x1037, 0x92c: 0x10b3, 0x92d: 0x10cb, 0x92e: 0x10e3, 0x92f: 0x111b, + 0x930: 0x112f, 0x931: 0x114b, 0x932: 0x117b, 0x933: 0x122f, 0x934: 0x1257, 0x935: 0x12cb, + 0x936: 0x1313, 0x937: 0x131f, 0x938: 0x1327, 0x939: 0x133f, 0x93a: 0x1353, 0x93b: 0x1343, + 0x93c: 0x135b, 0x93d: 0x1357, 0x93e: 0x134f, 0x93f: 0x135f, // Block 0x25, offset 0x940 - 0x940: 0x06fb, 0x941: 0x06f3, 0x942: 0x0703, 0x943: 0x1647, 0x944: 0x0747, 0x945: 0x0757, - 0x946: 0x075b, 0x947: 0x0763, 0x948: 0x076b, 0x949: 0x076f, 0x94a: 0x077b, 0x94b: 0x0773, - 0x94c: 0x05b3, 0x94d: 0x165b, 0x94e: 0x078f, 0x94f: 0x0793, 0x950: 0x0797, 0x951: 0x07b3, - 0x952: 0x164c, 0x953: 0x05b7, 0x954: 0x079f, 0x955: 0x07bf, 0x956: 0x1656, 0x957: 0x07cf, - 0x958: 0x07d7, 0x959: 0x0737, 0x95a: 0x07df, 0x95b: 0x07e3, 0x95c: 0x1831, 0x95d: 0x07ff, - 0x95e: 0x0807, 0x95f: 0x05bf, 0x960: 0x081f, 0x961: 0x0823, 0x962: 0x082b, 0x963: 0x082f, - 0x964: 0x05c3, 0x965: 0x0847, 0x966: 0x084b, 0x967: 0x0857, 0x968: 0x0863, 0x969: 0x0867, - 0x96a: 0x086b, 0x96b: 0x0873, 0x96c: 0x0893, 0x96d: 0x0897, 0x96e: 0x089f, 0x96f: 0x08af, - 0x970: 0x08b7, 0x971: 0x08bb, 0x972: 0x08bb, 0x973: 0x08bb, 0x974: 0x166a, 0x975: 0x0e93, - 0x976: 0x08cf, 0x977: 0x08d7, 0x978: 0x166f, 0x979: 0x08e3, 0x97a: 0x08eb, 0x97b: 0x08f3, - 0x97c: 0x091b, 0x97d: 0x0907, 0x97e: 0x0913, 0x97f: 0x0917, + 0x940: 0x136b, 0x941: 0x13a7, 0x942: 0x13e3, 0x943: 0x1413, 0x944: 0x144b, 0x945: 0x146b, + 0x946: 0x14b7, 0x947: 0x14db, 0x948: 0x14fb, 0x949: 0x150f, 0x94a: 0x151f, 0x94b: 0x152b, + 0x94c: 0x1537, 0x94d: 0x158b, 0x94e: 0x162b, 0x94f: 0x16b5, 0x950: 0x16b0, 0x951: 0x16e2, + 0x952: 0x0607, 0x953: 0x062f, 0x954: 0x0633, 0x955: 0x1764, 0x956: 0x1791, 0x957: 0x1809, + 0x958: 0x1617, 0x959: 0x1627, // Block 0x26, offset 0x980 - 0x980: 0x091f, 0x981: 0x0927, 0x982: 0x092b, 0x983: 0x0933, 0x984: 0x093b, 0x985: 0x093f, - 0x986: 0x093f, 0x987: 0x0947, 0x988: 0x094f, 0x989: 0x0953, 0x98a: 0x095f, 0x98b: 0x0983, - 0x98c: 0x0967, 0x98d: 0x0987, 0x98e: 0x096b, 0x98f: 0x0973, 0x990: 0x080b, 0x991: 0x09cf, - 0x992: 0x0997, 0x993: 0x099b, 0x994: 0x099f, 0x995: 0x0993, 0x996: 0x09a7, 0x997: 0x09a3, - 0x998: 0x09bb, 0x999: 0x1674, 0x99a: 0x09d7, 0x99b: 0x09db, 0x99c: 0x09e3, 0x99d: 0x09ef, - 0x99e: 0x09f7, 0x99f: 0x0a13, 0x9a0: 0x1679, 0x9a1: 0x167e, 0x9a2: 0x0a1f, 0x9a3: 0x0a23, - 0x9a4: 0x0a27, 0x9a5: 0x0a1b, 0x9a6: 0x0a2f, 0x9a7: 0x05c7, 0x9a8: 0x05cb, 0x9a9: 0x0a37, - 0x9aa: 0x0a3f, 0x9ab: 0x0a3f, 0x9ac: 0x1683, 0x9ad: 0x0a5b, 0x9ae: 0x0a5f, 0x9af: 0x0a63, - 0x9b0: 0x0a6b, 0x9b1: 0x1688, 0x9b2: 0x0a73, 0x9b3: 0x0a77, 0x9b4: 0x0b4f, 0x9b5: 0x0a7f, - 0x9b6: 0x05cf, 0x9b7: 0x0a8b, 0x9b8: 0x0a9b, 0x9b9: 0x0aa7, 0x9ba: 0x0aa3, 0x9bb: 0x1692, - 0x9bc: 0x0aaf, 0x9bd: 0x1697, 0x9be: 0x0abb, 0x9bf: 0x0ab7, + 0x980: 0x06fb, 0x981: 0x06f3, 0x982: 0x0703, 0x983: 0x1647, 0x984: 0x0747, 0x985: 0x0757, + 0x986: 0x075b, 0x987: 0x0763, 0x988: 0x076b, 0x989: 0x076f, 0x98a: 0x077b, 0x98b: 0x0773, + 0x98c: 0x05b3, 0x98d: 0x165b, 0x98e: 0x078f, 0x98f: 0x0793, 0x990: 0x0797, 0x991: 0x07b3, + 0x992: 0x164c, 0x993: 0x05b7, 0x994: 0x079f, 0x995: 0x07bf, 0x996: 0x1656, 0x997: 0x07cf, + 0x998: 0x07d7, 0x999: 0x0737, 0x99a: 0x07df, 0x99b: 0x07e3, 0x99c: 0x1831, 0x99d: 0x07ff, + 0x99e: 0x0807, 0x99f: 0x05bf, 0x9a0: 0x081f, 0x9a1: 0x0823, 0x9a2: 0x082b, 0x9a3: 0x082f, + 0x9a4: 0x05c3, 0x9a5: 0x0847, 0x9a6: 0x084b, 0x9a7: 0x0857, 0x9a8: 0x0863, 0x9a9: 0x0867, + 0x9aa: 0x086b, 0x9ab: 0x0873, 0x9ac: 0x0893, 0x9ad: 0x0897, 0x9ae: 0x089f, 0x9af: 0x08af, + 0x9b0: 0x08b7, 0x9b1: 0x08bb, 0x9b2: 0x08bb, 0x9b3: 0x08bb, 0x9b4: 0x166a, 0x9b5: 0x0e93, + 0x9b6: 0x08cf, 0x9b7: 0x08d7, 0x9b8: 0x166f, 0x9b9: 0x08e3, 0x9ba: 0x08eb, 0x9bb: 0x08f3, + 0x9bc: 0x091b, 0x9bd: 0x0907, 0x9be: 0x0913, 0x9bf: 0x0917, // Block 0x27, offset 0x9c0 - 0x9c0: 0x0abf, 0x9c1: 0x0acf, 0x9c2: 0x0ad3, 0x9c3: 0x05d3, 0x9c4: 0x0ae3, 0x9c5: 0x0aeb, - 0x9c6: 0x0aef, 0x9c7: 0x0af3, 0x9c8: 0x05d7, 0x9c9: 0x169c, 0x9ca: 0x05db, 0x9cb: 0x0b0f, - 0x9cc: 0x0b13, 0x9cd: 0x0b17, 0x9ce: 0x0b1f, 0x9cf: 0x1863, 0x9d0: 0x0b37, 0x9d1: 0x16a6, - 0x9d2: 0x16a6, 0x9d3: 0x11d7, 0x9d4: 0x0b47, 0x9d5: 0x0b47, 0x9d6: 0x05df, 0x9d7: 0x16c9, - 0x9d8: 0x179b, 0x9d9: 0x0b57, 0x9da: 0x0b5f, 0x9db: 0x05e3, 0x9dc: 0x0b73, 0x9dd: 0x0b83, - 0x9de: 0x0b87, 0x9df: 0x0b8f, 0x9e0: 0x0b9f, 0x9e1: 0x05eb, 0x9e2: 0x05e7, 0x9e3: 0x0ba3, - 0x9e4: 0x16ab, 0x9e5: 0x0ba7, 0x9e6: 0x0bbb, 0x9e7: 0x0bbf, 0x9e8: 0x0bc3, 0x9e9: 0x0bbf, - 0x9ea: 0x0bcf, 0x9eb: 0x0bd3, 0x9ec: 0x0be3, 0x9ed: 0x0bdb, 0x9ee: 0x0bdf, 0x9ef: 0x0be7, - 0x9f0: 0x0beb, 0x9f1: 0x0bef, 0x9f2: 0x0bfb, 0x9f3: 0x0bff, 0x9f4: 0x0c17, 0x9f5: 0x0c1f, - 0x9f6: 0x0c2f, 0x9f7: 0x0c43, 0x9f8: 0x16ba, 0x9f9: 0x0c3f, 0x9fa: 0x0c33, 0x9fb: 0x0c4b, - 0x9fc: 0x0c53, 0x9fd: 0x0c67, 0x9fe: 0x16bf, 0x9ff: 0x0c6f, + 0x9c0: 0x091f, 0x9c1: 0x0927, 0x9c2: 0x092b, 0x9c3: 0x0933, 0x9c4: 0x093b, 0x9c5: 0x093f, + 0x9c6: 0x093f, 0x9c7: 0x0947, 0x9c8: 0x094f, 0x9c9: 0x0953, 0x9ca: 0x095f, 0x9cb: 0x0983, + 0x9cc: 0x0967, 0x9cd: 0x0987, 0x9ce: 0x096b, 0x9cf: 0x0973, 0x9d0: 0x080b, 0x9d1: 0x09cf, + 0x9d2: 0x0997, 0x9d3: 0x099b, 0x9d4: 0x099f, 0x9d5: 0x0993, 0x9d6: 0x09a7, 0x9d7: 0x09a3, + 0x9d8: 0x09bb, 0x9d9: 0x1674, 0x9da: 0x09d7, 0x9db: 0x09db, 0x9dc: 0x09e3, 0x9dd: 0x09ef, + 0x9de: 0x09f7, 0x9df: 0x0a13, 0x9e0: 0x1679, 0x9e1: 0x167e, 0x9e2: 0x0a1f, 0x9e3: 0x0a23, + 0x9e4: 0x0a27, 0x9e5: 0x0a1b, 0x9e6: 0x0a2f, 0x9e7: 0x05c7, 0x9e8: 0x05cb, 0x9e9: 0x0a37, + 0x9ea: 0x0a3f, 0x9eb: 0x0a3f, 0x9ec: 0x1683, 0x9ed: 0x0a5b, 0x9ee: 0x0a5f, 0x9ef: 0x0a63, + 0x9f0: 0x0a6b, 0x9f1: 0x1688, 0x9f2: 0x0a73, 0x9f3: 0x0a77, 0x9f4: 0x0b4f, 0x9f5: 0x0a7f, + 0x9f6: 0x05cf, 0x9f7: 0x0a8b, 0x9f8: 0x0a9b, 0x9f9: 0x0aa7, 0x9fa: 0x0aa3, 0x9fb: 0x1692, + 0x9fc: 0x0aaf, 0x9fd: 0x1697, 0x9fe: 0x0abb, 0x9ff: 0x0ab7, // Block 0x28, offset 0xa00 - 0xa00: 0x0c63, 0xa01: 0x0c5b, 0xa02: 0x05ef, 0xa03: 0x0c77, 0xa04: 0x0c7f, 0xa05: 0x0c87, - 0xa06: 0x0c7b, 0xa07: 0x05f3, 0xa08: 0x0c97, 0xa09: 0x0c9f, 0xa0a: 0x16c4, 0xa0b: 0x0ccb, - 0xa0c: 0x0cff, 0xa0d: 0x0cdb, 0xa0e: 0x05ff, 0xa0f: 0x0ce7, 0xa10: 0x05fb, 0xa11: 0x05f7, - 0xa12: 0x07c3, 0xa13: 0x07c7, 0xa14: 0x0d03, 0xa15: 0x0ceb, 0xa16: 0x11ab, 0xa17: 0x0663, - 0xa18: 0x0d0f, 0xa19: 0x0d13, 0xa1a: 0x0d17, 0xa1b: 0x0d2b, 0xa1c: 0x0d23, 0xa1d: 0x16dd, - 0xa1e: 0x0603, 0xa1f: 0x0d3f, 0xa20: 0x0d33, 0xa21: 0x0d4f, 0xa22: 0x0d57, 0xa23: 0x16e7, - 0xa24: 0x0d5b, 0xa25: 0x0d47, 0xa26: 0x0d63, 0xa27: 0x0607, 0xa28: 0x0d67, 0xa29: 0x0d6b, - 0xa2a: 0x0d6f, 0xa2b: 0x0d7b, 0xa2c: 0x16ec, 0xa2d: 0x0d83, 0xa2e: 0x060b, 0xa2f: 0x0d8f, - 0xa30: 0x16f1, 0xa31: 0x0d93, 0xa32: 0x060f, 0xa33: 0x0d9f, 0xa34: 0x0dab, 0xa35: 0x0db7, - 0xa36: 0x0dbb, 0xa37: 0x16f6, 0xa38: 0x168d, 0xa39: 0x16fb, 0xa3a: 0x0ddb, 0xa3b: 0x1700, - 0xa3c: 0x0de7, 0xa3d: 0x0def, 0xa3e: 0x0ddf, 0xa3f: 0x0dfb, + 0xa00: 0x0abf, 0xa01: 0x0acf, 0xa02: 0x0ad3, 0xa03: 0x05d3, 0xa04: 0x0ae3, 0xa05: 0x0aeb, + 0xa06: 0x0aef, 0xa07: 0x0af3, 0xa08: 0x05d7, 0xa09: 0x169c, 0xa0a: 0x05db, 0xa0b: 0x0b0f, + 0xa0c: 0x0b13, 0xa0d: 0x0b17, 0xa0e: 0x0b1f, 0xa0f: 0x1863, 0xa10: 0x0b37, 0xa11: 0x16a6, + 0xa12: 0x16a6, 0xa13: 0x11d7, 0xa14: 0x0b47, 0xa15: 0x0b47, 0xa16: 0x05df, 0xa17: 0x16c9, + 0xa18: 0x179b, 0xa19: 0x0b57, 0xa1a: 0x0b5f, 0xa1b: 0x05e3, 0xa1c: 0x0b73, 0xa1d: 0x0b83, + 0xa1e: 0x0b87, 0xa1f: 0x0b8f, 0xa20: 0x0b9f, 0xa21: 0x05eb, 0xa22: 0x05e7, 0xa23: 0x0ba3, + 0xa24: 0x16ab, 0xa25: 0x0ba7, 0xa26: 0x0bbb, 0xa27: 0x0bbf, 0xa28: 0x0bc3, 0xa29: 0x0bbf, + 0xa2a: 0x0bcf, 0xa2b: 0x0bd3, 0xa2c: 0x0be3, 0xa2d: 0x0bdb, 0xa2e: 0x0bdf, 0xa2f: 0x0be7, + 0xa30: 0x0beb, 0xa31: 0x0bef, 0xa32: 0x0bfb, 0xa33: 0x0bff, 0xa34: 0x0c17, 0xa35: 0x0c1f, + 0xa36: 0x0c2f, 0xa37: 0x0c43, 0xa38: 0x16ba, 0xa39: 0x0c3f, 0xa3a: 0x0c33, 0xa3b: 0x0c4b, + 0xa3c: 0x0c53, 0xa3d: 0x0c67, 0xa3e: 0x16bf, 0xa3f: 0x0c6f, // Block 0x29, offset 0xa40 - 0xa40: 0x0e0b, 0xa41: 0x0e1b, 0xa42: 0x0e0f, 0xa43: 0x0e13, 0xa44: 0x0e1f, 0xa45: 0x0e23, - 0xa46: 0x1705, 0xa47: 0x0e07, 0xa48: 0x0e3b, 0xa49: 0x0e3f, 0xa4a: 0x0613, 0xa4b: 0x0e53, - 0xa4c: 0x0e4f, 0xa4d: 0x170a, 0xa4e: 0x0e33, 0xa4f: 0x0e6f, 0xa50: 0x170f, 0xa51: 0x1714, - 0xa52: 0x0e73, 0xa53: 0x0e87, 0xa54: 0x0e83, 0xa55: 0x0e7f, 0xa56: 0x0617, 0xa57: 0x0e8b, - 0xa58: 0x0e9b, 0xa59: 0x0e97, 0xa5a: 0x0ea3, 0xa5b: 0x1651, 0xa5c: 0x0eb3, 0xa5d: 0x1719, - 0xa5e: 0x0ebf, 0xa5f: 0x1723, 0xa60: 0x0ed3, 0xa61: 0x0edf, 0xa62: 0x0ef3, 0xa63: 0x1728, - 0xa64: 0x0f07, 0xa65: 0x0f0b, 0xa66: 0x172d, 0xa67: 0x1732, 0xa68: 0x0f27, 0xa69: 0x0f37, - 0xa6a: 0x061b, 0xa6b: 0x0f3b, 0xa6c: 0x061f, 0xa6d: 0x061f, 0xa6e: 0x0f53, 0xa6f: 0x0f57, - 0xa70: 0x0f5f, 0xa71: 0x0f63, 0xa72: 0x0f6f, 0xa73: 0x0623, 0xa74: 0x0f87, 0xa75: 0x1737, - 0xa76: 0x0fa3, 0xa77: 0x173c, 0xa78: 0x0faf, 0xa79: 0x16a1, 0xa7a: 0x0fbf, 0xa7b: 0x1741, - 0xa7c: 0x1746, 0xa7d: 0x174b, 0xa7e: 0x0627, 0xa7f: 0x062b, + 0xa40: 0x0c63, 0xa41: 0x0c5b, 0xa42: 0x05ef, 0xa43: 0x0c77, 0xa44: 0x0c7f, 0xa45: 0x0c87, + 0xa46: 0x0c7b, 0xa47: 0x05f3, 0xa48: 0x0c97, 0xa49: 0x0c9f, 0xa4a: 0x16c4, 0xa4b: 0x0ccb, + 0xa4c: 0x0cff, 0xa4d: 0x0cdb, 0xa4e: 0x05ff, 0xa4f: 0x0ce7, 0xa50: 0x05fb, 0xa51: 0x05f7, + 0xa52: 0x07c3, 0xa53: 0x07c7, 0xa54: 0x0d03, 0xa55: 0x0ceb, 0xa56: 0x11ab, 0xa57: 0x0663, + 0xa58: 0x0d0f, 0xa59: 0x0d13, 0xa5a: 0x0d17, 0xa5b: 0x0d2b, 0xa5c: 0x0d23, 0xa5d: 0x16dd, + 0xa5e: 0x0603, 0xa5f: 0x0d3f, 0xa60: 0x0d33, 0xa61: 0x0d4f, 0xa62: 0x0d57, 0xa63: 0x16e7, + 0xa64: 0x0d5b, 0xa65: 0x0d47, 0xa66: 0x0d63, 0xa67: 0x0607, 0xa68: 0x0d67, 0xa69: 0x0d6b, + 0xa6a: 0x0d6f, 0xa6b: 0x0d7b, 0xa6c: 0x16ec, 0xa6d: 0x0d83, 0xa6e: 0x060b, 0xa6f: 0x0d8f, + 0xa70: 0x16f1, 0xa71: 0x0d93, 0xa72: 0x060f, 0xa73: 0x0d9f, 0xa74: 0x0dab, 0xa75: 0x0db7, + 0xa76: 0x0dbb, 0xa77: 0x16f6, 0xa78: 0x168d, 0xa79: 0x16fb, 0xa7a: 0x0ddb, 0xa7b: 0x1700, + 0xa7c: 0x0de7, 0xa7d: 0x0def, 0xa7e: 0x0ddf, 0xa7f: 0x0dfb, // Block 0x2a, offset 0xa80 - 0xa80: 0x0ff7, 0xa81: 0x1755, 0xa82: 0x1750, 0xa83: 0x175a, 0xa84: 0x175f, 0xa85: 0x0fff, - 0xa86: 0x1003, 0xa87: 0x1003, 0xa88: 0x100b, 0xa89: 0x0633, 0xa8a: 0x100f, 0xa8b: 0x0637, - 0xa8c: 0x063b, 0xa8d: 0x1769, 0xa8e: 0x1023, 0xa8f: 0x102b, 0xa90: 0x1037, 0xa91: 0x063f, - 0xa92: 0x176e, 0xa93: 0x105b, 0xa94: 0x1773, 0xa95: 0x1778, 0xa96: 0x107b, 0xa97: 0x1093, - 0xa98: 0x0643, 0xa99: 0x109b, 0xa9a: 0x109f, 0xa9b: 0x10a3, 0xa9c: 0x177d, 0xa9d: 0x1782, - 0xa9e: 0x1782, 0xa9f: 0x10bb, 0xaa0: 0x0647, 0xaa1: 0x1787, 0xaa2: 0x10cf, 0xaa3: 0x10d3, - 0xaa4: 0x064b, 0xaa5: 0x178c, 0xaa6: 0x10ef, 0xaa7: 0x064f, 0xaa8: 0x10ff, 0xaa9: 0x10f7, - 0xaaa: 0x1107, 0xaab: 0x1796, 0xaac: 0x111f, 0xaad: 0x0653, 0xaae: 0x112b, 0xaaf: 0x1133, - 0xab0: 0x1143, 0xab1: 0x0657, 0xab2: 0x17a0, 0xab3: 0x17a5, 0xab4: 0x065b, 0xab5: 0x17aa, - 0xab6: 0x115b, 0xab7: 0x17af, 0xab8: 0x1167, 0xab9: 0x1173, 0xaba: 0x117b, 0xabb: 0x17b4, - 0xabc: 0x17b9, 0xabd: 0x118f, 0xabe: 0x17be, 0xabf: 0x1197, + 0xa80: 0x0e0b, 0xa81: 0x0e1b, 0xa82: 0x0e0f, 0xa83: 0x0e13, 0xa84: 0x0e1f, 0xa85: 0x0e23, + 0xa86: 0x1705, 0xa87: 0x0e07, 0xa88: 0x0e3b, 0xa89: 0x0e3f, 0xa8a: 0x0613, 0xa8b: 0x0e53, + 0xa8c: 0x0e4f, 0xa8d: 0x170a, 0xa8e: 0x0e33, 0xa8f: 0x0e6f, 0xa90: 0x170f, 0xa91: 0x1714, + 0xa92: 0x0e73, 0xa93: 0x0e87, 0xa94: 0x0e83, 0xa95: 0x0e7f, 0xa96: 0x0617, 0xa97: 0x0e8b, + 0xa98: 0x0e9b, 0xa99: 0x0e97, 0xa9a: 0x0ea3, 0xa9b: 0x1651, 0xa9c: 0x0eb3, 0xa9d: 0x1719, + 0xa9e: 0x0ebf, 0xa9f: 0x1723, 0xaa0: 0x0ed3, 0xaa1: 0x0edf, 0xaa2: 0x0ef3, 0xaa3: 0x1728, + 0xaa4: 0x0f07, 0xaa5: 0x0f0b, 0xaa6: 0x172d, 0xaa7: 0x1732, 0xaa8: 0x0f27, 0xaa9: 0x0f37, + 0xaaa: 0x061b, 0xaab: 0x0f3b, 0xaac: 0x061f, 0xaad: 0x061f, 0xaae: 0x0f53, 0xaaf: 0x0f57, + 0xab0: 0x0f5f, 0xab1: 0x0f63, 0xab2: 0x0f6f, 0xab3: 0x0623, 0xab4: 0x0f87, 0xab5: 0x1737, + 0xab6: 0x0fa3, 0xab7: 0x173c, 0xab8: 0x0faf, 0xab9: 0x16a1, 0xaba: 0x0fbf, 0xabb: 0x1741, + 0xabc: 0x1746, 0xabd: 0x174b, 0xabe: 0x0627, 0xabf: 0x062b, // Block 0x2b, offset 0xac0 - 0xac0: 0x16ce, 0xac1: 0x065f, 0xac2: 0x11af, 0xac3: 0x11b3, 0xac4: 0x0667, 0xac5: 0x11b7, - 0xac6: 0x0a33, 0xac7: 0x17c3, 0xac8: 0x17c8, 0xac9: 0x16d3, 0xaca: 0x16d8, 0xacb: 0x11d7, - 0xacc: 0x11db, 0xacd: 0x13f3, 0xace: 0x066b, 0xacf: 0x1207, 0xad0: 0x1203, 0xad1: 0x120b, - 0xad2: 0x083f, 0xad3: 0x120f, 0xad4: 0x1213, 0xad5: 0x1217, 0xad6: 0x121f, 0xad7: 0x17cd, - 0xad8: 0x121b, 0xad9: 0x1223, 0xada: 0x1237, 0xadb: 0x123b, 0xadc: 0x1227, 0xadd: 0x123f, - 0xade: 0x1253, 0xadf: 0x1267, 0xae0: 0x1233, 0xae1: 0x1247, 0xae2: 0x124b, 0xae3: 0x124f, - 0xae4: 0x17d2, 0xae5: 0x17dc, 0xae6: 0x17d7, 0xae7: 0x066f, 0xae8: 0x126f, 0xae9: 0x1273, - 0xaea: 0x127b, 0xaeb: 0x17f0, 0xaec: 0x127f, 0xaed: 0x17e1, 0xaee: 0x0673, 0xaef: 0x0677, - 0xaf0: 0x17e6, 0xaf1: 0x17eb, 0xaf2: 0x067b, 0xaf3: 0x129f, 0xaf4: 0x12a3, 0xaf5: 0x12a7, - 0xaf6: 0x12ab, 0xaf7: 0x12b7, 0xaf8: 0x12b3, 0xaf9: 0x12bf, 0xafa: 0x12bb, 0xafb: 0x12cb, - 0xafc: 0x12c3, 0xafd: 0x12c7, 0xafe: 0x12cf, 0xaff: 0x067f, + 0xac0: 0x0ff7, 0xac1: 0x1755, 0xac2: 0x1750, 0xac3: 0x175a, 0xac4: 0x175f, 0xac5: 0x0fff, + 0xac6: 0x1003, 0xac7: 0x1003, 0xac8: 0x100b, 0xac9: 0x0633, 0xaca: 0x100f, 0xacb: 0x0637, + 0xacc: 0x063b, 0xacd: 0x1769, 0xace: 0x1023, 0xacf: 0x102b, 0xad0: 0x1037, 0xad1: 0x063f, + 0xad2: 0x176e, 0xad3: 0x105b, 0xad4: 0x1773, 0xad5: 0x1778, 0xad6: 0x107b, 0xad7: 0x1093, + 0xad8: 0x0643, 0xad9: 0x109b, 0xada: 0x109f, 0xadb: 0x10a3, 0xadc: 0x177d, 0xadd: 0x1782, + 0xade: 0x1782, 0xadf: 0x10bb, 0xae0: 0x0647, 0xae1: 0x1787, 0xae2: 0x10cf, 0xae3: 0x10d3, + 0xae4: 0x064b, 0xae5: 0x178c, 0xae6: 0x10ef, 0xae7: 0x064f, 0xae8: 0x10ff, 0xae9: 0x10f7, + 0xaea: 0x1107, 0xaeb: 0x1796, 0xaec: 0x111f, 0xaed: 0x0653, 0xaee: 0x112b, 0xaef: 0x1133, + 0xaf0: 0x1143, 0xaf1: 0x0657, 0xaf2: 0x17a0, 0xaf3: 0x17a5, 0xaf4: 0x065b, 0xaf5: 0x17aa, + 0xaf6: 0x115b, 0xaf7: 0x17af, 0xaf8: 0x1167, 0xaf9: 0x1173, 0xafa: 0x117b, 0xafb: 0x17b4, + 0xafc: 0x17b9, 0xafd: 0x118f, 0xafe: 0x17be, 0xaff: 0x1197, // Block 0x2c, offset 0xb00 - 0xb00: 0x12d7, 0xb01: 0x12db, 0xb02: 0x0683, 0xb03: 0x12eb, 0xb04: 0x12ef, 0xb05: 0x17f5, - 0xb06: 0x12fb, 0xb07: 0x12ff, 0xb08: 0x0687, 0xb09: 0x130b, 0xb0a: 0x05bb, 0xb0b: 0x17fa, - 0xb0c: 0x17ff, 0xb0d: 0x068b, 0xb0e: 0x068f, 0xb0f: 0x1337, 0xb10: 0x134f, 0xb11: 0x136b, - 0xb12: 0x137b, 0xb13: 0x1804, 0xb14: 0x138f, 0xb15: 0x1393, 0xb16: 0x13ab, 0xb17: 0x13b7, - 0xb18: 0x180e, 0xb19: 0x1660, 0xb1a: 0x13c3, 0xb1b: 0x13bf, 0xb1c: 0x13cb, 0xb1d: 0x1665, - 0xb1e: 0x13d7, 0xb1f: 0x13e3, 0xb20: 0x1813, 0xb21: 0x1818, 0xb22: 0x1423, 0xb23: 0x142f, - 0xb24: 0x1437, 0xb25: 0x181d, 0xb26: 0x143b, 0xb27: 0x1467, 0xb28: 0x1473, 0xb29: 0x1477, - 0xb2a: 0x146f, 0xb2b: 0x1483, 0xb2c: 0x1487, 0xb2d: 0x1822, 0xb2e: 0x1493, 0xb2f: 0x0693, - 0xb30: 0x149b, 0xb31: 0x1827, 0xb32: 0x0697, 0xb33: 0x14d3, 0xb34: 0x0ac3, 0xb35: 0x14eb, - 0xb36: 0x182c, 0xb37: 0x1836, 0xb38: 0x069b, 0xb39: 0x069f, 0xb3a: 0x1513, 0xb3b: 0x183b, - 0xb3c: 0x06a3, 0xb3d: 0x1840, 0xb3e: 0x152b, 0xb3f: 0x152b, + 0xb00: 0x16ce, 0xb01: 0x065f, 0xb02: 0x11af, 0xb03: 0x11b3, 0xb04: 0x0667, 0xb05: 0x11b7, + 0xb06: 0x0a33, 0xb07: 0x17c3, 0xb08: 0x17c8, 0xb09: 0x16d3, 0xb0a: 0x16d8, 0xb0b: 0x11d7, + 0xb0c: 0x11db, 0xb0d: 0x13f3, 0xb0e: 0x066b, 0xb0f: 0x1207, 0xb10: 0x1203, 0xb11: 0x120b, + 0xb12: 0x083f, 0xb13: 0x120f, 0xb14: 0x1213, 0xb15: 0x1217, 0xb16: 0x121f, 0xb17: 0x17cd, + 0xb18: 0x121b, 0xb19: 0x1223, 0xb1a: 0x1237, 0xb1b: 0x123b, 0xb1c: 0x1227, 0xb1d: 0x123f, + 0xb1e: 0x1253, 0xb1f: 0x1267, 0xb20: 0x1233, 0xb21: 0x1247, 0xb22: 0x124b, 0xb23: 0x124f, + 0xb24: 0x17d2, 0xb25: 0x17dc, 0xb26: 0x17d7, 0xb27: 0x066f, 0xb28: 0x126f, 0xb29: 0x1273, + 0xb2a: 0x127b, 0xb2b: 0x17f0, 0xb2c: 0x127f, 0xb2d: 0x17e1, 0xb2e: 0x0673, 0xb2f: 0x0677, + 0xb30: 0x17e6, 0xb31: 0x17eb, 0xb32: 0x067b, 0xb33: 0x129f, 0xb34: 0x12a3, 0xb35: 0x12a7, + 0xb36: 0x12ab, 0xb37: 0x12b7, 0xb38: 0x12b3, 0xb39: 0x12bf, 0xb3a: 0x12bb, 0xb3b: 0x12cb, + 0xb3c: 0x12c3, 0xb3d: 0x12c7, 0xb3e: 0x12cf, 0xb3f: 0x067f, // Block 0x2d, offset 0xb40 - 0xb40: 0x1533, 0xb41: 0x1845, 0xb42: 0x154b, 0xb43: 0x06a7, 0xb44: 0x155b, 0xb45: 0x1567, - 0xb46: 0x156f, 0xb47: 0x1577, 0xb48: 0x06ab, 0xb49: 0x184a, 0xb4a: 0x158b, 0xb4b: 0x15a7, - 0xb4c: 0x15b3, 0xb4d: 0x06af, 0xb4e: 0x06b3, 0xb4f: 0x15b7, 0xb50: 0x184f, 0xb51: 0x06b7, - 0xb52: 0x1854, 0xb53: 0x1859, 0xb54: 0x185e, 0xb55: 0x15db, 0xb56: 0x06bb, 0xb57: 0x15ef, - 0xb58: 0x15f7, 0xb59: 0x15fb, 0xb5a: 0x1603, 0xb5b: 0x160b, 0xb5c: 0x1613, 0xb5d: 0x1868, + 0xb40: 0x12d7, 0xb41: 0x12db, 0xb42: 0x0683, 0xb43: 0x12eb, 0xb44: 0x12ef, 0xb45: 0x17f5, + 0xb46: 0x12fb, 0xb47: 0x12ff, 0xb48: 0x0687, 0xb49: 0x130b, 0xb4a: 0x05bb, 0xb4b: 0x17fa, + 0xb4c: 0x17ff, 0xb4d: 0x068b, 0xb4e: 0x068f, 0xb4f: 0x1337, 0xb50: 0x134f, 0xb51: 0x136b, + 0xb52: 0x137b, 0xb53: 0x1804, 0xb54: 0x138f, 0xb55: 0x1393, 0xb56: 0x13ab, 0xb57: 0x13b7, + 0xb58: 0x180e, 0xb59: 0x1660, 0xb5a: 0x13c3, 0xb5b: 0x13bf, 0xb5c: 0x13cb, 0xb5d: 0x1665, + 0xb5e: 0x13d7, 0xb5f: 0x13e3, 0xb60: 0x1813, 0xb61: 0x1818, 0xb62: 0x1423, 0xb63: 0x142f, + 0xb64: 0x1437, 0xb65: 0x181d, 0xb66: 0x143b, 0xb67: 0x1467, 0xb68: 0x1473, 0xb69: 0x1477, + 0xb6a: 0x146f, 0xb6b: 0x1483, 0xb6c: 0x1487, 0xb6d: 0x1822, 0xb6e: 0x1493, 0xb6f: 0x0693, + 0xb70: 0x149b, 0xb71: 0x1827, 0xb72: 0x0697, 0xb73: 0x14d3, 0xb74: 0x0ac3, 0xb75: 0x14eb, + 0xb76: 0x182c, 0xb77: 0x1836, 0xb78: 0x069b, 0xb79: 0x069f, 0xb7a: 0x1513, 0xb7b: 0x183b, + 0xb7c: 0x06a3, 0xb7d: 0x1840, 0xb7e: 0x152b, 0xb7f: 0x152b, + // Block 0x2e, offset 0xb80 + 0xb80: 0x1533, 0xb81: 0x1845, 0xb82: 0x154b, 0xb83: 0x06a7, 0xb84: 0x155b, 0xb85: 0x1567, + 0xb86: 0x156f, 0xb87: 0x1577, 0xb88: 0x06ab, 0xb89: 0x184a, 0xb8a: 0x158b, 0xb8b: 0x15a7, + 0xb8c: 0x15b3, 0xb8d: 0x06af, 0xb8e: 0x06b3, 0xb8f: 0x15b7, 0xb90: 0x184f, 0xb91: 0x06b7, + 0xb92: 0x1854, 0xb93: 0x1859, 0xb94: 0x185e, 0xb95: 0x15db, 0xb96: 0x06bb, 0xb97: 0x15ef, + 0xb98: 0x15f7, 0xb99: 0x15fb, 0xb9a: 0x1603, 0xb9b: 0x160b, 0xb9c: 0x1613, 0xb9d: 0x1868, } // nfcIndex: 22 blocks, 1408 entries, 1408 bytes @@ -3417,33 +3429,33 @@ var nfcIndex = [1408]uint8{ // Block 0x1, offset 0x40 // Block 0x2, offset 0x80 // Block 0x3, offset 0xc0 - 0xc2: 0x2c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2d, 0xc7: 0x04, - 0xc8: 0x05, 0xca: 0x2e, 0xcb: 0x2f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x30, - 0xd0: 0x09, 0xd1: 0x31, 0xd2: 0x32, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x33, - 0xd8: 0x34, 0xd9: 0x0c, 0xdb: 0x35, 0xdc: 0x36, 0xdd: 0x37, 0xdf: 0x38, + 0xc2: 0x2d, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2e, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x2f, 0xcb: 0x30, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x31, + 0xd0: 0x09, 0xd1: 0x32, 0xd2: 0x33, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x34, + 0xd8: 0x35, 0xd9: 0x0c, 0xdb: 0x36, 0xdc: 0x37, 0xdd: 0x38, 0xdf: 0x39, 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, 0xf0: 0x13, // Block 0x4, offset 0x100 - 0x120: 0x39, 0x121: 0x3a, 0x123: 0x3b, 0x124: 0x3c, 0x125: 0x3d, 0x126: 0x3e, 0x127: 0x3f, - 0x128: 0x40, 0x129: 0x41, 0x12a: 0x42, 0x12b: 0x43, 0x12c: 0x3e, 0x12d: 0x44, 0x12e: 0x45, 0x12f: 0x46, - 0x131: 0x47, 0x132: 0x48, 0x133: 0x49, 0x134: 0x4a, 0x135: 0x4b, 0x137: 0x4c, - 0x138: 0x4d, 0x139: 0x4e, 0x13a: 0x4f, 0x13b: 0x50, 0x13c: 0x51, 0x13d: 0x52, 0x13e: 0x53, 0x13f: 0x54, + 0x120: 0x3a, 0x121: 0x3b, 0x123: 0x3c, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40, + 0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47, + 0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d, + 0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55, // Block 0x5, offset 0x140 - 0x140: 0x55, 0x142: 0x56, 0x144: 0x57, 0x145: 0x58, 0x146: 0x59, 0x147: 0x5a, - 0x14d: 0x5b, - 0x15c: 0x5c, 0x15f: 0x5d, - 0x162: 0x5e, 0x164: 0x5f, - 0x168: 0x60, 0x169: 0x61, 0x16a: 0x62, 0x16c: 0x0d, 0x16d: 0x63, 0x16e: 0x64, 0x16f: 0x65, - 0x170: 0x66, 0x173: 0x67, 0x177: 0x68, - 0x178: 0x0e, 0x179: 0x0f, 0x17a: 0x10, 0x17b: 0x11, 0x17c: 0x12, 0x17d: 0x13, 0x17e: 0x14, 0x17f: 0x15, + 0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b, + 0x14d: 0x5c, + 0x15c: 0x5d, 0x15f: 0x5e, + 0x162: 0x5f, 0x164: 0x60, + 0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16c: 0x0d, 0x16d: 0x64, 0x16e: 0x65, 0x16f: 0x66, + 0x170: 0x67, 0x173: 0x68, 0x177: 0x0e, + 0x178: 0x0f, 0x179: 0x10, 0x17a: 0x11, 0x17b: 0x12, 0x17c: 0x13, 0x17d: 0x14, 0x17e: 0x15, 0x17f: 0x16, // Block 0x6, offset 0x180 0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d, - 0x188: 0x6e, 0x189: 0x16, 0x18a: 0x17, 0x18b: 0x6f, 0x18c: 0x70, + 0x188: 0x6e, 0x189: 0x17, 0x18a: 0x18, 0x18b: 0x6f, 0x18c: 0x70, 0x1ab: 0x71, 0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74, // Block 0x7, offset 0x1c0 - 0x1c0: 0x75, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a, 0x1c4: 0x76, 0x1c5: 0x77, + 0x1c0: 0x75, 0x1c1: 0x19, 0x1c2: 0x1a, 0x1c3: 0x1b, 0x1c4: 0x76, 0x1c5: 0x77, 0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a, // Block 0x8, offset 0x200 0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d, @@ -3475,8 +3487,8 @@ var nfcIndex = [1408]uint8{ 0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d, 0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e, // Block 0xc, offset 0x300 - 0x324: 0x1b, 0x325: 0x1c, 0x326: 0x1d, 0x327: 0x1e, - 0x328: 0x1f, 0x329: 0x20, 0x32a: 0x21, 0x32b: 0x22, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91, + 0x324: 0x1c, 0x325: 0x1d, 0x326: 0x1e, 0x327: 0x1f, + 0x328: 0x20, 0x329: 0x21, 0x32a: 0x22, 0x32b: 0x23, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91, 0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95, 0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b, // Block 0xd, offset 0x340 @@ -3485,36 +3497,37 @@ var nfcIndex = [1408]uint8{ 0x368: 0x9f, 0x36b: 0xa0, // Block 0xe, offset 0x380 0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0xa4, - 0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3e, 0x38d: 0xa7, + 0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3f, 0x38d: 0xa7, 0x391: 0xa8, 0x392: 0xa9, 0x393: 0xaa, 0x396: 0xab, 0x397: 0xac, 0x398: 0x73, 0x39a: 0xad, 0x39c: 0xae, - 0x3b0: 0x73, + 0x3a8: 0xaf, 0x3a9: 0xb0, 0x3aa: 0xb1, + 0x3b0: 0x73, 0x3b5: 0xb2, // Block 0xf, offset 0x3c0 - 0x3eb: 0xaf, 0x3ec: 0xb0, + 0x3eb: 0xb3, 0x3ec: 0xb4, // Block 0x10, offset 0x400 - 0x432: 0xb1, + 0x432: 0xb5, // Block 0x11, offset 0x440 - 0x445: 0xb2, 0x446: 0xb3, 0x447: 0xb4, - 0x449: 0xb5, + 0x445: 0xb6, 0x446: 0xb7, 0x447: 0xb8, + 0x449: 0xb9, // Block 0x12, offset 0x480 - 0x480: 0xb6, - 0x4a3: 0xb7, 0x4a5: 0xb8, + 0x480: 0xba, + 0x4a3: 0xbb, 0x4a5: 0xbc, // Block 0x13, offset 0x4c0 - 0x4c8: 0xb9, + 0x4c8: 0xbd, // Block 0x14, offset 0x500 - 0x520: 0x23, 0x521: 0x24, 0x522: 0x25, 0x523: 0x26, 0x524: 0x27, 0x525: 0x28, 0x526: 0x29, 0x527: 0x2a, - 0x528: 0x2b, + 0x520: 0x24, 0x521: 0x25, 0x522: 0x26, 0x523: 0x27, 0x524: 0x28, 0x525: 0x29, 0x526: 0x2a, 0x527: 0x2b, + 0x528: 0x2c, // Block 0x15, offset 0x540 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, 0x56f: 0x12, } -// nfcSparseOffset: 142 entries, 284 bytes -var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc7, 0xce, 0xd6, 0xd9, 0xdb, 0xdd, 0xdf, 0xe4, 0xf5, 0x101, 0x103, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x118, 0x11b, 0x11d, 0x120, 0x123, 0x127, 0x12c, 0x135, 0x137, 0x13a, 0x13c, 0x147, 0x157, 0x15b, 0x169, 0x16c, 0x172, 0x178, 0x183, 0x187, 0x189, 0x18b, 0x18d, 0x18f, 0x191, 0x197, 0x19b, 0x19d, 0x19f, 0x1a7, 0x1ab, 0x1ae, 0x1b0, 0x1b2, 0x1b4, 0x1b7, 0x1b9, 0x1bb, 0x1bd, 0x1bf, 0x1c5, 0x1c8, 0x1ca, 0x1d1, 0x1d7, 0x1dd, 0x1e5, 0x1eb, 0x1f1, 0x1f7, 0x1fb, 0x209, 0x212, 0x215, 0x218, 0x21a, 0x21d, 0x21f, 0x223, 0x228, 0x22a, 0x22c, 0x231, 0x237, 0x239, 0x23b, 0x23d, 0x243, 0x246, 0x249, 0x251, 0x258, 0x25b, 0x25e, 0x260, 0x268, 0x26b, 0x272, 0x275, 0x27b, 0x27d, 0x280, 0x282, 0x284, 0x286, 0x288, 0x295, 0x29f, 0x2a1, 0x2a3, 0x2a9, 0x2ab, 0x2ae} +// nfcSparseOffset: 145 entries, 290 bytes +var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc8, 0xcf, 0xd7, 0xda, 0xdc, 0xde, 0xe0, 0xe5, 0xf6, 0x102, 0x104, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x119, 0x11c, 0x11e, 0x121, 0x124, 0x128, 0x12d, 0x136, 0x138, 0x13b, 0x13d, 0x148, 0x14c, 0x15a, 0x15d, 0x163, 0x169, 0x174, 0x178, 0x17a, 0x17c, 0x17e, 0x180, 0x182, 0x188, 0x18c, 0x18e, 0x190, 0x198, 0x19c, 0x19f, 0x1a1, 0x1a3, 0x1a5, 0x1a8, 0x1aa, 0x1ac, 0x1ae, 0x1b0, 0x1b6, 0x1b9, 0x1bb, 0x1c2, 0x1c8, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e8, 0x1ec, 0x1fa, 0x203, 0x206, 0x209, 0x20b, 0x20e, 0x210, 0x214, 0x219, 0x21b, 0x21d, 0x222, 0x228, 0x22a, 0x22c, 0x22e, 0x234, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x259, 0x25c, 0x263, 0x266, 0x26c, 0x26e, 0x271, 0x273, 0x275, 0x277, 0x279, 0x27c, 0x27e, 0x280, 0x282, 0x28f, 0x299, 0x29b, 0x29d, 0x2a3, 0x2a5, 0x2a8} -// nfcSparseValues: 688 entries, 2752 bytes -var nfcSparseValues = [688]valueRange{ +// nfcSparseValues: 682 entries, 2728 bytes +var nfcSparseValues = [682]valueRange{ // Block 0x0, offset 0x0 {value: 0x0000, lo: 0x04}, {value: 0xa100, lo: 0xa8, hi: 0xa8}, @@ -3743,9 +3756,10 @@ var nfcSparseValues = [688]valueRange{ {value: 0x8104, lo: 0x8d, hi: 0x8d}, {value: 0x9900, lo: 0x95, hi: 0x96}, // Block 0x1e, offset 0xc5 - {value: 0x0000, lo: 0x01}, + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xbb, hi: 0xbc}, {value: 0x9900, lo: 0xbe, hi: 0xbe}, - // Block 0x1f, offset 0xc7 + // Block 0x1f, offset 0xc8 {value: 0x0000, lo: 0x06}, {value: 0xa000, lo: 0x86, hi: 0x87}, {value: 0x2cfe, lo: 0x8a, hi: 0x8a}, @@ -3753,7 +3767,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0x2d06, lo: 0x8c, hi: 0x8c}, {value: 0x8104, lo: 0x8d, hi: 0x8d}, {value: 0x9900, lo: 0x97, hi: 0x97}, - // Block 0x20, offset 0xce + // Block 0x20, offset 0xcf {value: 0x6bea, lo: 0x07}, {value: 0x9904, lo: 0x8a, hi: 0x8a}, {value: 0x9900, lo: 0x8f, hi: 0x8f}, @@ -3762,26 +3776,26 @@ var nfcSparseValues = [688]valueRange{ {value: 0x2f58, lo: 0x9c, hi: 0x9c}, {value: 0x2de3, lo: 0x9d, hi: 0x9d}, {value: 0x2d16, lo: 0x9e, hi: 0x9f}, - // Block 0x21, offset 0xd6 + // Block 0x21, offset 0xd7 {value: 0x0000, lo: 0x02}, {value: 0x8122, lo: 0xb8, hi: 0xb9}, {value: 0x8104, lo: 0xba, hi: 0xba}, - // Block 0x22, offset 0xd9 + // Block 0x22, offset 0xda {value: 0x0000, lo: 0x01}, {value: 0x8123, lo: 0x88, hi: 0x8b}, - // Block 0x23, offset 0xdb + // Block 0x23, offset 0xdc {value: 0x0000, lo: 0x01}, {value: 0x8124, lo: 0xb8, hi: 0xb9}, - // Block 0x24, offset 0xdd + // Block 0x24, offset 0xde {value: 0x0000, lo: 0x01}, {value: 0x8125, lo: 0x88, hi: 0x8b}, - // Block 0x25, offset 0xdf + // Block 0x25, offset 0xe0 {value: 0x0000, lo: 0x04}, {value: 0x812d, lo: 0x98, hi: 0x99}, {value: 0x812d, lo: 0xb5, hi: 0xb5}, {value: 0x812d, lo: 0xb7, hi: 0xb7}, {value: 0x812b, lo: 0xb9, hi: 0xb9}, - // Block 0x26, offset 0xe4 + // Block 0x26, offset 0xe5 {value: 0x0000, lo: 0x10}, {value: 0x2644, lo: 0x83, hi: 0x83}, {value: 0x264b, lo: 0x8d, hi: 0x8d}, @@ -3799,7 +3813,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0x45bc, lo: 0xb8, hi: 0xb8}, {value: 0x8200, lo: 0xb9, hi: 0xb9}, {value: 0x8127, lo: 0xba, hi: 0xbd}, - // Block 0x27, offset 0xf5 + // Block 0x27, offset 0xf6 {value: 0x0000, lo: 0x0b}, {value: 0x8127, lo: 0x80, hi: 0x80}, {value: 0x4a96, lo: 0x81, hi: 0x81}, @@ -3812,65 +3826,65 @@ var nfcSparseValues = [688]valueRange{ {value: 0x2683, lo: 0xa7, hi: 0xa7}, {value: 0x268a, lo: 0xac, hi: 0xac}, {value: 0x2667, lo: 0xb9, hi: 0xb9}, - // Block 0x28, offset 0x101 + // Block 0x28, offset 0x102 {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0x86, hi: 0x86}, - // Block 0x29, offset 0x103 + // Block 0x29, offset 0x104 {value: 0x0000, lo: 0x05}, {value: 0xa000, lo: 0xa5, hi: 0xa5}, {value: 0x2d1e, lo: 0xa6, hi: 0xa6}, {value: 0x9900, lo: 0xae, hi: 0xae}, {value: 0x8102, lo: 0xb7, hi: 0xb7}, {value: 0x8104, lo: 0xb9, hi: 0xba}, - // Block 0x2a, offset 0x109 + // Block 0x2a, offset 0x10a {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0x8d, hi: 0x8d}, - // Block 0x2b, offset 0x10b + // Block 0x2b, offset 0x10c {value: 0x0000, lo: 0x01}, {value: 0xa000, lo: 0x80, hi: 0x92}, - // Block 0x2c, offset 0x10d + // Block 0x2c, offset 0x10e {value: 0x0000, lo: 0x01}, {value: 0xb900, lo: 0xa1, hi: 0xb5}, - // Block 0x2d, offset 0x10f + // Block 0x2d, offset 0x110 {value: 0x0000, lo: 0x01}, {value: 0x9900, lo: 0xa8, hi: 0xbf}, - // Block 0x2e, offset 0x111 + // Block 0x2e, offset 0x112 {value: 0x0000, lo: 0x01}, {value: 0x9900, lo: 0x80, hi: 0x82}, - // Block 0x2f, offset 0x113 + // Block 0x2f, offset 0x114 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x9d, hi: 0x9f}, - // Block 0x30, offset 0x115 + // Block 0x30, offset 0x116 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x94, hi: 0x94}, {value: 0x8104, lo: 0xb4, hi: 0xb4}, - // Block 0x31, offset 0x118 + // Block 0x31, offset 0x119 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x92, hi: 0x92}, {value: 0x8132, lo: 0x9d, hi: 0x9d}, - // Block 0x32, offset 0x11b + // Block 0x32, offset 0x11c {value: 0x0000, lo: 0x01}, {value: 0x8131, lo: 0xa9, hi: 0xa9}, - // Block 0x33, offset 0x11d + // Block 0x33, offset 0x11e {value: 0x0004, lo: 0x02}, {value: 0x812e, lo: 0xb9, hi: 0xba}, {value: 0x812d, lo: 0xbb, hi: 0xbb}, - // Block 0x34, offset 0x120 + // Block 0x34, offset 0x121 {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0x97, hi: 0x97}, {value: 0x812d, lo: 0x98, hi: 0x98}, - // Block 0x35, offset 0x123 + // Block 0x35, offset 0x124 {value: 0x0000, lo: 0x03}, {value: 0x8104, lo: 0xa0, hi: 0xa0}, {value: 0x8132, lo: 0xb5, hi: 0xbc}, {value: 0x812d, lo: 0xbf, hi: 0xbf}, - // Block 0x36, offset 0x127 + // Block 0x36, offset 0x128 {value: 0x0000, lo: 0x04}, {value: 0x8132, lo: 0xb0, hi: 0xb4}, {value: 0x812d, lo: 0xb5, hi: 0xba}, {value: 0x8132, lo: 0xbb, hi: 0xbc}, {value: 0x812d, lo: 0xbd, hi: 0xbd}, - // Block 0x37, offset 0x12c + // Block 0x37, offset 0x12d {value: 0x0000, lo: 0x08}, {value: 0x2d66, lo: 0x80, hi: 0x80}, {value: 0x2d6e, lo: 0x81, hi: 0x81}, @@ -3880,17 +3894,17 @@ var nfcSparseValues = [688]valueRange{ {value: 0x8132, lo: 0xab, hi: 0xab}, {value: 0x812d, lo: 0xac, hi: 0xac}, {value: 0x8132, lo: 0xad, hi: 0xb3}, - // Block 0x38, offset 0x135 + // Block 0x38, offset 0x136 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xaa, hi: 0xab}, - // Block 0x39, offset 0x137 + // Block 0x39, offset 0x138 {value: 0x0000, lo: 0x02}, {value: 0x8102, lo: 0xa6, hi: 0xa6}, {value: 0x8104, lo: 0xb2, hi: 0xb3}, - // Block 0x3a, offset 0x13a + // Block 0x3a, offset 0x13b {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0xb7, hi: 0xb7}, - // Block 0x3b, offset 0x13c + // Block 0x3b, offset 0x13d {value: 0x0000, lo: 0x0a}, {value: 0x8132, lo: 0x90, hi: 0x92}, {value: 0x8101, lo: 0x94, hi: 0x94}, @@ -3902,29 +3916,12 @@ var nfcSparseValues = [688]valueRange{ {value: 0x812d, lo: 0xad, hi: 0xad}, {value: 0x8132, lo: 0xb4, hi: 0xb4}, {value: 0x8132, lo: 0xb8, hi: 0xb9}, - // Block 0x3c, offset 0x147 - {value: 0x0000, lo: 0x0f}, - {value: 0x8132, lo: 0x80, hi: 0x81}, - {value: 0x812d, lo: 0x82, hi: 0x82}, - {value: 0x8132, lo: 0x83, hi: 0x89}, - {value: 0x812d, lo: 0x8a, hi: 0x8a}, - {value: 0x8132, lo: 0x8b, hi: 0x8c}, - {value: 0x8135, lo: 0x8d, hi: 0x8d}, - {value: 0x812a, lo: 0x8e, hi: 0x8e}, - {value: 0x812d, lo: 0x8f, hi: 0x8f}, - {value: 0x8129, lo: 0x90, hi: 0x90}, - {value: 0x8132, lo: 0x91, hi: 0xb5}, - {value: 0x8132, lo: 0xbb, hi: 0xbb}, - {value: 0x8134, lo: 0xbc, hi: 0xbc}, - {value: 0x812d, lo: 0xbd, hi: 0xbd}, - {value: 0x8132, lo: 0xbe, hi: 0xbe}, - {value: 0x812d, lo: 0xbf, hi: 0xbf}, - // Block 0x3d, offset 0x157 + // Block 0x3c, offset 0x148 {value: 0x0004, lo: 0x03}, {value: 0x0433, lo: 0x80, hi: 0x81}, {value: 0x8100, lo: 0x97, hi: 0x97}, {value: 0x8100, lo: 0xbe, hi: 0xbe}, - // Block 0x3e, offset 0x15b + // Block 0x3d, offset 0x14c {value: 0x0000, lo: 0x0d}, {value: 0x8132, lo: 0x90, hi: 0x91}, {value: 0x8101, lo: 0x92, hi: 0x93}, @@ -3939,25 +3936,25 @@ var nfcSparseValues = [688]valueRange{ {value: 0x8101, lo: 0xaa, hi: 0xab}, {value: 0x812d, lo: 0xac, hi: 0xaf}, {value: 0x8132, lo: 0xb0, hi: 0xb0}, - // Block 0x3f, offset 0x169 + // Block 0x3e, offset 0x15a {value: 0x427b, lo: 0x02}, {value: 0x01b8, lo: 0xa6, hi: 0xa6}, {value: 0x0057, lo: 0xaa, hi: 0xab}, - // Block 0x40, offset 0x16c + // Block 0x3f, offset 0x15d {value: 0x0007, lo: 0x05}, {value: 0xa000, lo: 0x90, hi: 0x90}, {value: 0xa000, lo: 0x92, hi: 0x92}, {value: 0xa000, lo: 0x94, hi: 0x94}, {value: 0x3bb9, lo: 0x9a, hi: 0x9b}, {value: 0x3bc7, lo: 0xae, hi: 0xae}, - // Block 0x41, offset 0x172 + // Block 0x40, offset 0x163 {value: 0x000e, lo: 0x05}, {value: 0x3bce, lo: 0x8d, hi: 0x8e}, {value: 0x3bd5, lo: 0x8f, hi: 0x8f}, {value: 0xa000, lo: 0x90, hi: 0x90}, {value: 0xa000, lo: 0x92, hi: 0x92}, {value: 0xa000, lo: 0x94, hi: 0x94}, - // Block 0x42, offset 0x178 + // Block 0x41, offset 0x169 {value: 0x6408, lo: 0x0a}, {value: 0xa000, lo: 0x83, hi: 0x83}, {value: 0x3be3, lo: 0x84, hi: 0x84}, @@ -3969,45 +3966,45 @@ var nfcSparseValues = [688]valueRange{ {value: 0x3bf8, lo: 0xa4, hi: 0xa5}, {value: 0x3bff, lo: 0xa6, hi: 0xa6}, {value: 0xa000, lo: 0xbc, hi: 0xbc}, - // Block 0x43, offset 0x183 + // Block 0x42, offset 0x174 {value: 0x0007, lo: 0x03}, {value: 0x3c68, lo: 0xa0, hi: 0xa1}, {value: 0x3c92, lo: 0xa2, hi: 0xa3}, {value: 0x3cbc, lo: 0xaa, hi: 0xad}, - // Block 0x44, offset 0x187 + // Block 0x43, offset 0x178 {value: 0x0004, lo: 0x01}, {value: 0x048b, lo: 0xa9, hi: 0xaa}, - // Block 0x45, offset 0x189 + // Block 0x44, offset 0x17a {value: 0x0000, lo: 0x01}, {value: 0x44dd, lo: 0x9c, hi: 0x9c}, - // Block 0x46, offset 0x18b + // Block 0x45, offset 0x17c {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xaf, hi: 0xb1}, - // Block 0x47, offset 0x18d + // Block 0x46, offset 0x17e {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x48, offset 0x18f + // Block 0x47, offset 0x180 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xa0, hi: 0xbf}, - // Block 0x49, offset 0x191 + // Block 0x48, offset 0x182 {value: 0x0000, lo: 0x05}, {value: 0x812c, lo: 0xaa, hi: 0xaa}, {value: 0x8131, lo: 0xab, hi: 0xab}, {value: 0x8133, lo: 0xac, hi: 0xac}, {value: 0x812e, lo: 0xad, hi: 0xad}, {value: 0x812f, lo: 0xae, hi: 0xaf}, - // Block 0x4a, offset 0x197 + // Block 0x49, offset 0x188 {value: 0x0000, lo: 0x03}, {value: 0x4a9f, lo: 0xb3, hi: 0xb3}, {value: 0x4a9f, lo: 0xb5, hi: 0xb6}, {value: 0x4a9f, lo: 0xba, hi: 0xbf}, - // Block 0x4b, offset 0x19b + // Block 0x4a, offset 0x18c {value: 0x0000, lo: 0x01}, {value: 0x4a9f, lo: 0x8f, hi: 0xa3}, - // Block 0x4c, offset 0x19d + // Block 0x4b, offset 0x18e {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0xae, hi: 0xbe}, - // Block 0x4d, offset 0x19f + // Block 0x4c, offset 0x190 {value: 0x0000, lo: 0x07}, {value: 0x8100, lo: 0x84, hi: 0x84}, {value: 0x8100, lo: 0x87, hi: 0x87}, @@ -4016,55 +4013,55 @@ var nfcSparseValues = [688]valueRange{ {value: 0x8100, lo: 0xa1, hi: 0xa1}, {value: 0x8100, lo: 0xb2, hi: 0xb2}, {value: 0x8100, lo: 0xbb, hi: 0xbb}, - // Block 0x4e, offset 0x1a7 + // Block 0x4d, offset 0x198 {value: 0x0000, lo: 0x03}, {value: 0x8100, lo: 0x80, hi: 0x80}, {value: 0x8100, lo: 0x8b, hi: 0x8b}, {value: 0x8100, lo: 0x8e, hi: 0x8e}, - // Block 0x4f, offset 0x1ab + // Block 0x4e, offset 0x19c {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0xaf, hi: 0xaf}, {value: 0x8132, lo: 0xb4, hi: 0xbd}, - // Block 0x50, offset 0x1ae + // Block 0x4f, offset 0x19f {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x9e, hi: 0x9f}, - // Block 0x51, offset 0x1b0 + // Block 0x50, offset 0x1a1 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xb0, hi: 0xb1}, - // Block 0x52, offset 0x1b2 + // Block 0x51, offset 0x1a3 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0x86, hi: 0x86}, - // Block 0x53, offset 0x1b4 + // Block 0x52, offset 0x1a5 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x84, hi: 0x84}, {value: 0x8132, lo: 0xa0, hi: 0xb1}, - // Block 0x54, offset 0x1b7 + // Block 0x53, offset 0x1a8 {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0xab, hi: 0xad}, - // Block 0x55, offset 0x1b9 + // Block 0x54, offset 0x1aa {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0x93, hi: 0x93}, - // Block 0x56, offset 0x1bb + // Block 0x55, offset 0x1ac {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0xb3, hi: 0xb3}, - // Block 0x57, offset 0x1bd + // Block 0x56, offset 0x1ae {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0x80, hi: 0x80}, - // Block 0x58, offset 0x1bf + // Block 0x57, offset 0x1b0 {value: 0x0000, lo: 0x05}, {value: 0x8132, lo: 0xb0, hi: 0xb0}, {value: 0x8132, lo: 0xb2, hi: 0xb3}, {value: 0x812d, lo: 0xb4, hi: 0xb4}, {value: 0x8132, lo: 0xb7, hi: 0xb8}, {value: 0x8132, lo: 0xbe, hi: 0xbf}, - // Block 0x59, offset 0x1c5 + // Block 0x58, offset 0x1b6 {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0x81, hi: 0x81}, {value: 0x8104, lo: 0xb6, hi: 0xb6}, - // Block 0x5a, offset 0x1c8 + // Block 0x59, offset 0x1b9 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xad, hi: 0xad}, - // Block 0x5b, offset 0x1ca + // Block 0x5a, offset 0x1bb {value: 0x0000, lo: 0x06}, {value: 0xe500, lo: 0x80, hi: 0x80}, {value: 0xc600, lo: 0x81, hi: 0x9b}, @@ -4072,21 +4069,21 @@ var nfcSparseValues = [688]valueRange{ {value: 0xc600, lo: 0x9d, hi: 0xb7}, {value: 0xe500, lo: 0xb8, hi: 0xb8}, {value: 0xc600, lo: 0xb9, hi: 0xbf}, - // Block 0x5c, offset 0x1d1 + // Block 0x5b, offset 0x1c2 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x93}, {value: 0xe500, lo: 0x94, hi: 0x94}, {value: 0xc600, lo: 0x95, hi: 0xaf}, {value: 0xe500, lo: 0xb0, hi: 0xb0}, {value: 0xc600, lo: 0xb1, hi: 0xbf}, - // Block 0x5d, offset 0x1d7 + // Block 0x5c, offset 0x1c8 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x8b}, {value: 0xe500, lo: 0x8c, hi: 0x8c}, {value: 0xc600, lo: 0x8d, hi: 0xa7}, {value: 0xe500, lo: 0xa8, hi: 0xa8}, {value: 0xc600, lo: 0xa9, hi: 0xbf}, - // Block 0x5e, offset 0x1dd + // Block 0x5d, offset 0x1ce {value: 0x0000, lo: 0x07}, {value: 0xc600, lo: 0x80, hi: 0x83}, {value: 0xe500, lo: 0x84, hi: 0x84}, @@ -4095,33 +4092,33 @@ var nfcSparseValues = [688]valueRange{ {value: 0xc600, lo: 0xa1, hi: 0xbb}, {value: 0xe500, lo: 0xbc, hi: 0xbc}, {value: 0xc600, lo: 0xbd, hi: 0xbf}, - // Block 0x5f, offset 0x1e5 + // Block 0x5e, offset 0x1d6 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x97}, {value: 0xe500, lo: 0x98, hi: 0x98}, {value: 0xc600, lo: 0x99, hi: 0xb3}, {value: 0xe500, lo: 0xb4, hi: 0xb4}, {value: 0xc600, lo: 0xb5, hi: 0xbf}, - // Block 0x60, offset 0x1eb + // Block 0x5f, offset 0x1dc {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x8f}, {value: 0xe500, lo: 0x90, hi: 0x90}, {value: 0xc600, lo: 0x91, hi: 0xab}, {value: 0xe500, lo: 0xac, hi: 0xac}, {value: 0xc600, lo: 0xad, hi: 0xbf}, - // Block 0x61, offset 0x1f1 + // Block 0x60, offset 0x1e2 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x87}, {value: 0xe500, lo: 0x88, hi: 0x88}, {value: 0xc600, lo: 0x89, hi: 0xa3}, {value: 0xe500, lo: 0xa4, hi: 0xa4}, {value: 0xc600, lo: 0xa5, hi: 0xbf}, - // Block 0x62, offset 0x1f7 + // Block 0x61, offset 0x1e8 {value: 0x0000, lo: 0x03}, {value: 0xc600, lo: 0x80, hi: 0x87}, {value: 0xe500, lo: 0x88, hi: 0x88}, {value: 0xc600, lo: 0x89, hi: 0xa3}, - // Block 0x63, offset 0x1fb + // Block 0x62, offset 0x1ec {value: 0x0006, lo: 0x0d}, {value: 0x4390, lo: 0x9d, hi: 0x9d}, {value: 0x8115, lo: 0x9e, hi: 0x9e}, @@ -4136,7 +4133,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0x4396, lo: 0xb9, hi: 0xbb}, {value: 0x43ae, lo: 0xbc, hi: 0xbc}, {value: 0x43b4, lo: 0xbe, hi: 0xbe}, - // Block 0x64, offset 0x209 + // Block 0x63, offset 0x1fa {value: 0x0006, lo: 0x08}, {value: 0x43ba, lo: 0x80, hi: 0x81}, {value: 0x43c6, lo: 0x83, hi: 0x84}, @@ -4146,79 +4143,79 @@ var nfcSparseValues = [688]valueRange{ {value: 0x4360, lo: 0x8c, hi: 0x8c}, {value: 0x43a8, lo: 0x8d, hi: 0x8d}, {value: 0x43d2, lo: 0x8e, hi: 0x8e}, - // Block 0x65, offset 0x212 + // Block 0x64, offset 0x203 {value: 0x0000, lo: 0x02}, {value: 0x8100, lo: 0xa4, hi: 0xa5}, {value: 0x8100, lo: 0xb0, hi: 0xb1}, - // Block 0x66, offset 0x215 + // Block 0x65, offset 0x206 {value: 0x0000, lo: 0x02}, {value: 0x8100, lo: 0x9b, hi: 0x9d}, {value: 0x8200, lo: 0x9e, hi: 0xa3}, - // Block 0x67, offset 0x218 + // Block 0x66, offset 0x209 {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0x90, hi: 0x90}, - // Block 0x68, offset 0x21a + // Block 0x67, offset 0x20b {value: 0x0000, lo: 0x02}, {value: 0x8100, lo: 0x99, hi: 0x99}, {value: 0x8200, lo: 0xb2, hi: 0xb4}, - // Block 0x69, offset 0x21d + // Block 0x68, offset 0x20e {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0xbc, hi: 0xbd}, - // Block 0x6a, offset 0x21f + // Block 0x69, offset 0x210 {value: 0x0000, lo: 0x03}, {value: 0x8132, lo: 0xa0, hi: 0xa6}, {value: 0x812d, lo: 0xa7, hi: 0xad}, {value: 0x8132, lo: 0xae, hi: 0xaf}, - // Block 0x6b, offset 0x223 + // Block 0x6a, offset 0x214 {value: 0x0000, lo: 0x04}, {value: 0x8100, lo: 0x89, hi: 0x8c}, {value: 0x8100, lo: 0xb0, hi: 0xb2}, {value: 0x8100, lo: 0xb4, hi: 0xb4}, {value: 0x8100, lo: 0xb6, hi: 0xbf}, - // Block 0x6c, offset 0x228 + // Block 0x6b, offset 0x219 {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0x81, hi: 0x8c}, - // Block 0x6d, offset 0x22a + // Block 0x6c, offset 0x21b {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0xb5, hi: 0xba}, - // Block 0x6e, offset 0x22c + // Block 0x6d, offset 0x21d {value: 0x0000, lo: 0x04}, {value: 0x4a9f, lo: 0x9e, hi: 0x9f}, {value: 0x4a9f, lo: 0xa3, hi: 0xa3}, {value: 0x4a9f, lo: 0xa5, hi: 0xa6}, {value: 0x4a9f, lo: 0xaa, hi: 0xaf}, - // Block 0x6f, offset 0x231 + // Block 0x6e, offset 0x222 {value: 0x0000, lo: 0x05}, {value: 0x4a9f, lo: 0x82, hi: 0x87}, {value: 0x4a9f, lo: 0x8a, hi: 0x8f}, {value: 0x4a9f, lo: 0x92, hi: 0x97}, {value: 0x4a9f, lo: 0x9a, hi: 0x9c}, {value: 0x8100, lo: 0xa3, hi: 0xa3}, - // Block 0x70, offset 0x237 + // Block 0x6f, offset 0x228 {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0xbd, hi: 0xbd}, - // Block 0x71, offset 0x239 + // Block 0x70, offset 0x22a {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0xa0, hi: 0xa0}, - // Block 0x72, offset 0x23b + // Block 0x71, offset 0x22c {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xb6, hi: 0xba}, - // Block 0x73, offset 0x23d + // Block 0x72, offset 0x22e {value: 0x002c, lo: 0x05}, {value: 0x812d, lo: 0x8d, hi: 0x8d}, {value: 0x8132, lo: 0x8f, hi: 0x8f}, {value: 0x8132, lo: 0xb8, hi: 0xb8}, {value: 0x8101, lo: 0xb9, hi: 0xba}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x74, offset 0x243 + // Block 0x73, offset 0x234 {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0xa5, hi: 0xa5}, {value: 0x812d, lo: 0xa6, hi: 0xa6}, - // Block 0x75, offset 0x246 + // Block 0x74, offset 0x237 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x86, hi: 0x86}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x76, offset 0x249 + // Block 0x75, offset 0x23a {value: 0x17fe, lo: 0x07}, {value: 0xa000, lo: 0x99, hi: 0x99}, {value: 0x4238, lo: 0x9a, hi: 0x9a}, @@ -4227,7 +4224,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0xa000, lo: 0xa5, hi: 0xa5}, {value: 0x424c, lo: 0xab, hi: 0xab}, {value: 0x8104, lo: 0xb9, hi: 0xba}, - // Block 0x77, offset 0x251 + // Block 0x76, offset 0x242 {value: 0x0000, lo: 0x06}, {value: 0x8132, lo: 0x80, hi: 0x82}, {value: 0x9900, lo: 0xa7, hi: 0xa7}, @@ -4235,18 +4232,18 @@ var nfcSparseValues = [688]valueRange{ {value: 0x2d88, lo: 0xaf, hi: 0xaf}, {value: 0xa000, lo: 0xb1, hi: 0xb2}, {value: 0x8104, lo: 0xb3, hi: 0xb4}, - // Block 0x78, offset 0x258 + // Block 0x77, offset 0x249 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x80, hi: 0x80}, {value: 0x8102, lo: 0x8a, hi: 0x8a}, - // Block 0x79, offset 0x25b + // Block 0x78, offset 0x24c {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0xb5, hi: 0xb5}, {value: 0x8102, lo: 0xb6, hi: 0xb6}, - // Block 0x7a, offset 0x25e + // Block 0x79, offset 0x24f {value: 0x0002, lo: 0x01}, {value: 0x8102, lo: 0xa9, hi: 0xaa}, - // Block 0x7b, offset 0x260 + // Block 0x7a, offset 0x251 {value: 0x0000, lo: 0x07}, {value: 0xa000, lo: 0x87, hi: 0x87}, {value: 0x2d92, lo: 0x8b, hi: 0x8b}, @@ -4255,11 +4252,11 @@ var nfcSparseValues = [688]valueRange{ {value: 0x9900, lo: 0x97, hi: 0x97}, {value: 0x8132, lo: 0xa6, hi: 0xac}, {value: 0x8132, lo: 0xb0, hi: 0xb4}, - // Block 0x7c, offset 0x268 + // Block 0x7b, offset 0x259 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x82, hi: 0x82}, {value: 0x8102, lo: 0x86, hi: 0x86}, - // Block 0x7d, offset 0x26b + // Block 0x7c, offset 0x25c {value: 0x6b5a, lo: 0x06}, {value: 0x9900, lo: 0xb0, hi: 0xb0}, {value: 0xa000, lo: 0xb9, hi: 0xb9}, @@ -4267,37 +4264,50 @@ var nfcSparseValues = [688]valueRange{ {value: 0x2db0, lo: 0xbb, hi: 0xbb}, {value: 0x2da6, lo: 0xbc, hi: 0xbd}, {value: 0x2dba, lo: 0xbe, hi: 0xbe}, - // Block 0x7e, offset 0x272 + // Block 0x7d, offset 0x263 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x82, hi: 0x82}, {value: 0x8102, lo: 0x83, hi: 0x83}, - // Block 0x7f, offset 0x275 + // Block 0x7e, offset 0x266 {value: 0x0000, lo: 0x05}, {value: 0x9900, lo: 0xaf, hi: 0xaf}, {value: 0xa000, lo: 0xb8, hi: 0xb9}, {value: 0x2dc4, lo: 0xba, hi: 0xba}, {value: 0x2dce, lo: 0xbb, hi: 0xbb}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x80, offset 0x27b + // Block 0x7f, offset 0x26c {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0x80, hi: 0x80}, - // Block 0x81, offset 0x27d + // Block 0x80, offset 0x26e {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0xb6, hi: 0xb6}, {value: 0x8102, lo: 0xb7, hi: 0xb7}, - // Block 0x82, offset 0x280 + // Block 0x81, offset 0x271 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xab, hi: 0xab}, - // Block 0x83, offset 0x282 + // Block 0x82, offset 0x273 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x83, offset 0x275 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x87, hi: 0x87}, + // Block 0x84, offset 0x277 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x99, hi: 0x99}, + // Block 0x85, offset 0x279 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0x82, hi: 0x82}, + {value: 0x8104, lo: 0x84, hi: 0x85}, + // Block 0x86, offset 0x27c {value: 0x0000, lo: 0x01}, {value: 0x8101, lo: 0xb0, hi: 0xb4}, - // Block 0x84, offset 0x284 + // Block 0x87, offset 0x27e {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xb0, hi: 0xb6}, - // Block 0x85, offset 0x286 + // Block 0x88, offset 0x280 {value: 0x0000, lo: 0x01}, {value: 0x8101, lo: 0x9e, hi: 0x9e}, - // Block 0x86, offset 0x288 + // Block 0x89, offset 0x282 {value: 0x0000, lo: 0x0c}, {value: 0x45cc, lo: 0x9e, hi: 0x9e}, {value: 0x45d6, lo: 0x9f, hi: 0x9f}, @@ -4311,7 +4321,7 @@ var nfcSparseValues = [688]valueRange{ {value: 0x8130, lo: 0xad, hi: 0xad}, {value: 0x812b, lo: 0xae, hi: 0xb2}, {value: 0x812d, lo: 0xbb, hi: 0xbf}, - // Block 0x87, offset 0x295 + // Block 0x8a, offset 0x28f {value: 0x0000, lo: 0x09}, {value: 0x812d, lo: 0x80, hi: 0x82}, {value: 0x8132, lo: 0x85, hi: 0x89}, @@ -4322,27 +4332,27 @@ var nfcSparseValues = [688]valueRange{ {value: 0x4650, lo: 0xbd, hi: 0xbd}, {value: 0x466c, lo: 0xbe, hi: 0xbe}, {value: 0x465e, lo: 0xbf, hi: 0xbf}, - // Block 0x88, offset 0x29f + // Block 0x8b, offset 0x299 {value: 0x0000, lo: 0x01}, {value: 0x467a, lo: 0x80, hi: 0x80}, - // Block 0x89, offset 0x2a1 + // Block 0x8c, offset 0x29b {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x82, hi: 0x84}, - // Block 0x8a, offset 0x2a3 + // Block 0x8d, offset 0x29d {value: 0x0000, lo: 0x05}, {value: 0x8132, lo: 0x80, hi: 0x86}, {value: 0x8132, lo: 0x88, hi: 0x98}, {value: 0x8132, lo: 0x9b, hi: 0xa1}, {value: 0x8132, lo: 0xa3, hi: 0xa4}, {value: 0x8132, lo: 0xa6, hi: 0xaa}, - // Block 0x8b, offset 0x2a9 + // Block 0x8e, offset 0x2a3 {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0x90, hi: 0x96}, - // Block 0x8c, offset 0x2ab + // Block 0x8f, offset 0x2a5 {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0x84, hi: 0x89}, {value: 0x8102, lo: 0x8a, hi: 0x8a}, - // Block 0x8d, offset 0x2ae + // Block 0x90, offset 0x2a8 {value: 0x0000, lo: 0x01}, {value: 0x8100, lo: 0x93, hi: 0x93}, } @@ -4517,7 +4527,7 @@ func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// nfkcTrie. Total size: 16994 bytes (16.60 KiB). Checksum: c3ed54ee046f3c46. +// nfkcTrie. Total size: 17104 bytes (16.70 KiB). Checksum: d985061cf5307b35. type nfkcTrie struct{} func newNfkcTrie(i int) *nfkcTrie { @@ -4527,17 +4537,17 @@ func newNfkcTrie(i int) *nfkcTrie { // lookupValue determines the type of block n and looks up the value for b. func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 { switch { - case n < 90: + case n < 91: return uint16(nfkcValues[n<<6+uint32(b)]) default: - n -= 90 + n -= 91 return uint16(nfkcSparse.lookup(n, b)) } } -// nfkcValues: 92 blocks, 5888 entries, 11776 bytes +// nfkcValues: 93 blocks, 5952 entries, 11904 bytes // The third block is the zero block. -var nfkcValues = [5888]uint16{ +var nfkcValues = [5952]uint16{ // Block 0x0, offset 0x0 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, // Block 0x1, offset 0x40 @@ -4721,824 +4731,836 @@ var nfkcValues = [5888]uint16{ 0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5, 0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0, // Block 0x13, offset 0x4c0 - 0x4c0: 0x2f97, 0x4c1: 0x32a3, 0x4c2: 0x2fa1, 0x4c3: 0x32ad, 0x4c4: 0x2fa6, 0x4c5: 0x32b2, - 0x4c6: 0x2fab, 0x4c7: 0x32b7, 0x4c8: 0x38cc, 0x4c9: 0x3a5b, 0x4ca: 0x2fc4, 0x4cb: 0x32d0, - 0x4cc: 0x2fce, 0x4cd: 0x32da, 0x4ce: 0x2fdd, 0x4cf: 0x32e9, 0x4d0: 0x2fd3, 0x4d1: 0x32df, - 0x4d2: 0x2fd8, 0x4d3: 0x32e4, 0x4d4: 0x38ef, 0x4d5: 0x3a7e, 0x4d6: 0x38f6, 0x4d7: 0x3a85, - 0x4d8: 0x3019, 0x4d9: 0x3325, 0x4da: 0x301e, 0x4db: 0x332a, 0x4dc: 0x3904, 0x4dd: 0x3a93, - 0x4de: 0x3023, 0x4df: 0x332f, 0x4e0: 0x3032, 0x4e1: 0x333e, 0x4e2: 0x3050, 0x4e3: 0x335c, - 0x4e4: 0x305f, 0x4e5: 0x336b, 0x4e6: 0x3055, 0x4e7: 0x3361, 0x4e8: 0x3064, 0x4e9: 0x3370, - 0x4ea: 0x3069, 0x4eb: 0x3375, 0x4ec: 0x30af, 0x4ed: 0x33bb, 0x4ee: 0x390b, 0x4ef: 0x3a9a, - 0x4f0: 0x30b9, 0x4f1: 0x33ca, 0x4f2: 0x30c3, 0x4f3: 0x33d4, 0x4f4: 0x30cd, 0x4f5: 0x33de, - 0x4f6: 0x46c4, 0x4f7: 0x4755, 0x4f8: 0x3912, 0x4f9: 0x3aa1, 0x4fa: 0x30e6, 0x4fb: 0x33f7, - 0x4fc: 0x30e1, 0x4fd: 0x33f2, 0x4fe: 0x30eb, 0x4ff: 0x33fc, + 0x4c0: 0x8132, 0x4c1: 0x8132, 0x4c2: 0x812d, 0x4c3: 0x8132, 0x4c4: 0x8132, 0x4c5: 0x8132, + 0x4c6: 0x8132, 0x4c7: 0x8132, 0x4c8: 0x8132, 0x4c9: 0x8132, 0x4ca: 0x812d, 0x4cb: 0x8132, + 0x4cc: 0x8132, 0x4cd: 0x8135, 0x4ce: 0x812a, 0x4cf: 0x812d, 0x4d0: 0x8129, 0x4d1: 0x8132, + 0x4d2: 0x8132, 0x4d3: 0x8132, 0x4d4: 0x8132, 0x4d5: 0x8132, 0x4d6: 0x8132, 0x4d7: 0x8132, + 0x4d8: 0x8132, 0x4d9: 0x8132, 0x4da: 0x8132, 0x4db: 0x8132, 0x4dc: 0x8132, 0x4dd: 0x8132, + 0x4de: 0x8132, 0x4df: 0x8132, 0x4e0: 0x8132, 0x4e1: 0x8132, 0x4e2: 0x8132, 0x4e3: 0x8132, + 0x4e4: 0x8132, 0x4e5: 0x8132, 0x4e6: 0x8132, 0x4e7: 0x8132, 0x4e8: 0x8132, 0x4e9: 0x8132, + 0x4ea: 0x8132, 0x4eb: 0x8132, 0x4ec: 0x8132, 0x4ed: 0x8132, 0x4ee: 0x8132, 0x4ef: 0x8132, + 0x4f0: 0x8132, 0x4f1: 0x8132, 0x4f2: 0x8132, 0x4f3: 0x8132, 0x4f4: 0x8132, 0x4f5: 0x8132, + 0x4f6: 0x8133, 0x4f7: 0x8131, 0x4f8: 0x8131, 0x4f9: 0x812d, 0x4fb: 0x8132, + 0x4fc: 0x8134, 0x4fd: 0x812d, 0x4fe: 0x8132, 0x4ff: 0x812d, // Block 0x14, offset 0x500 - 0x500: 0x30f0, 0x501: 0x3401, 0x502: 0x30f5, 0x503: 0x3406, 0x504: 0x3109, 0x505: 0x341a, - 0x506: 0x3113, 0x507: 0x3424, 0x508: 0x3122, 0x509: 0x3433, 0x50a: 0x311d, 0x50b: 0x342e, - 0x50c: 0x3935, 0x50d: 0x3ac4, 0x50e: 0x3943, 0x50f: 0x3ad2, 0x510: 0x394a, 0x511: 0x3ad9, - 0x512: 0x3951, 0x513: 0x3ae0, 0x514: 0x314f, 0x515: 0x3460, 0x516: 0x3154, 0x517: 0x3465, - 0x518: 0x315e, 0x519: 0x346f, 0x51a: 0x46f1, 0x51b: 0x4782, 0x51c: 0x3997, 0x51d: 0x3b26, - 0x51e: 0x3177, 0x51f: 0x3488, 0x520: 0x3181, 0x521: 0x3492, 0x522: 0x4700, 0x523: 0x4791, - 0x524: 0x399e, 0x525: 0x3b2d, 0x526: 0x39a5, 0x527: 0x3b34, 0x528: 0x39ac, 0x529: 0x3b3b, - 0x52a: 0x3190, 0x52b: 0x34a1, 0x52c: 0x319a, 0x52d: 0x34b0, 0x52e: 0x31ae, 0x52f: 0x34c4, - 0x530: 0x31a9, 0x531: 0x34bf, 0x532: 0x31ea, 0x533: 0x3500, 0x534: 0x31f9, 0x535: 0x350f, - 0x536: 0x31f4, 0x537: 0x350a, 0x538: 0x39b3, 0x539: 0x3b42, 0x53a: 0x39ba, 0x53b: 0x3b49, - 0x53c: 0x31fe, 0x53d: 0x3514, 0x53e: 0x3203, 0x53f: 0x3519, + 0x500: 0x2f97, 0x501: 0x32a3, 0x502: 0x2fa1, 0x503: 0x32ad, 0x504: 0x2fa6, 0x505: 0x32b2, + 0x506: 0x2fab, 0x507: 0x32b7, 0x508: 0x38cc, 0x509: 0x3a5b, 0x50a: 0x2fc4, 0x50b: 0x32d0, + 0x50c: 0x2fce, 0x50d: 0x32da, 0x50e: 0x2fdd, 0x50f: 0x32e9, 0x510: 0x2fd3, 0x511: 0x32df, + 0x512: 0x2fd8, 0x513: 0x32e4, 0x514: 0x38ef, 0x515: 0x3a7e, 0x516: 0x38f6, 0x517: 0x3a85, + 0x518: 0x3019, 0x519: 0x3325, 0x51a: 0x301e, 0x51b: 0x332a, 0x51c: 0x3904, 0x51d: 0x3a93, + 0x51e: 0x3023, 0x51f: 0x332f, 0x520: 0x3032, 0x521: 0x333e, 0x522: 0x3050, 0x523: 0x335c, + 0x524: 0x305f, 0x525: 0x336b, 0x526: 0x3055, 0x527: 0x3361, 0x528: 0x3064, 0x529: 0x3370, + 0x52a: 0x3069, 0x52b: 0x3375, 0x52c: 0x30af, 0x52d: 0x33bb, 0x52e: 0x390b, 0x52f: 0x3a9a, + 0x530: 0x30b9, 0x531: 0x33ca, 0x532: 0x30c3, 0x533: 0x33d4, 0x534: 0x30cd, 0x535: 0x33de, + 0x536: 0x46c4, 0x537: 0x4755, 0x538: 0x3912, 0x539: 0x3aa1, 0x53a: 0x30e6, 0x53b: 0x33f7, + 0x53c: 0x30e1, 0x53d: 0x33f2, 0x53e: 0x30eb, 0x53f: 0x33fc, // Block 0x15, offset 0x540 - 0x540: 0x3208, 0x541: 0x351e, 0x542: 0x320d, 0x543: 0x3523, 0x544: 0x321c, 0x545: 0x3532, - 0x546: 0x3217, 0x547: 0x352d, 0x548: 0x3221, 0x549: 0x353c, 0x54a: 0x3226, 0x54b: 0x3541, - 0x54c: 0x322b, 0x54d: 0x3546, 0x54e: 0x3249, 0x54f: 0x3564, 0x550: 0x3262, 0x551: 0x3582, - 0x552: 0x3271, 0x553: 0x3591, 0x554: 0x3276, 0x555: 0x3596, 0x556: 0x337a, 0x557: 0x34a6, - 0x558: 0x3537, 0x559: 0x3573, 0x55a: 0x1be0, 0x55b: 0x42d7, - 0x560: 0x46a1, 0x561: 0x4732, 0x562: 0x2f83, 0x563: 0x328f, - 0x564: 0x3878, 0x565: 0x3a07, 0x566: 0x3871, 0x567: 0x3a00, 0x568: 0x3886, 0x569: 0x3a15, - 0x56a: 0x387f, 0x56b: 0x3a0e, 0x56c: 0x38be, 0x56d: 0x3a4d, 0x56e: 0x3894, 0x56f: 0x3a23, - 0x570: 0x388d, 0x571: 0x3a1c, 0x572: 0x38a2, 0x573: 0x3a31, 0x574: 0x389b, 0x575: 0x3a2a, - 0x576: 0x38c5, 0x577: 0x3a54, 0x578: 0x46b5, 0x579: 0x4746, 0x57a: 0x3000, 0x57b: 0x330c, - 0x57c: 0x2fec, 0x57d: 0x32f8, 0x57e: 0x38da, 0x57f: 0x3a69, + 0x540: 0x30f0, 0x541: 0x3401, 0x542: 0x30f5, 0x543: 0x3406, 0x544: 0x3109, 0x545: 0x341a, + 0x546: 0x3113, 0x547: 0x3424, 0x548: 0x3122, 0x549: 0x3433, 0x54a: 0x311d, 0x54b: 0x342e, + 0x54c: 0x3935, 0x54d: 0x3ac4, 0x54e: 0x3943, 0x54f: 0x3ad2, 0x550: 0x394a, 0x551: 0x3ad9, + 0x552: 0x3951, 0x553: 0x3ae0, 0x554: 0x314f, 0x555: 0x3460, 0x556: 0x3154, 0x557: 0x3465, + 0x558: 0x315e, 0x559: 0x346f, 0x55a: 0x46f1, 0x55b: 0x4782, 0x55c: 0x3997, 0x55d: 0x3b26, + 0x55e: 0x3177, 0x55f: 0x3488, 0x560: 0x3181, 0x561: 0x3492, 0x562: 0x4700, 0x563: 0x4791, + 0x564: 0x399e, 0x565: 0x3b2d, 0x566: 0x39a5, 0x567: 0x3b34, 0x568: 0x39ac, 0x569: 0x3b3b, + 0x56a: 0x3190, 0x56b: 0x34a1, 0x56c: 0x319a, 0x56d: 0x34b0, 0x56e: 0x31ae, 0x56f: 0x34c4, + 0x570: 0x31a9, 0x571: 0x34bf, 0x572: 0x31ea, 0x573: 0x3500, 0x574: 0x31f9, 0x575: 0x350f, + 0x576: 0x31f4, 0x577: 0x350a, 0x578: 0x39b3, 0x579: 0x3b42, 0x57a: 0x39ba, 0x57b: 0x3b49, + 0x57c: 0x31fe, 0x57d: 0x3514, 0x57e: 0x3203, 0x57f: 0x3519, // Block 0x16, offset 0x580 - 0x580: 0x38d3, 0x581: 0x3a62, 0x582: 0x38e8, 0x583: 0x3a77, 0x584: 0x38e1, 0x585: 0x3a70, - 0x586: 0x38fd, 0x587: 0x3a8c, 0x588: 0x3091, 0x589: 0x339d, 0x58a: 0x30a5, 0x58b: 0x33b1, - 0x58c: 0x46e7, 0x58d: 0x4778, 0x58e: 0x3136, 0x58f: 0x3447, 0x590: 0x3920, 0x591: 0x3aaf, - 0x592: 0x3919, 0x593: 0x3aa8, 0x594: 0x392e, 0x595: 0x3abd, 0x596: 0x3927, 0x597: 0x3ab6, - 0x598: 0x3989, 0x599: 0x3b18, 0x59a: 0x396d, 0x59b: 0x3afc, 0x59c: 0x3966, 0x59d: 0x3af5, - 0x59e: 0x397b, 0x59f: 0x3b0a, 0x5a0: 0x3974, 0x5a1: 0x3b03, 0x5a2: 0x3982, 0x5a3: 0x3b11, - 0x5a4: 0x31e5, 0x5a5: 0x34fb, 0x5a6: 0x31c7, 0x5a7: 0x34dd, 0x5a8: 0x39e4, 0x5a9: 0x3b73, - 0x5aa: 0x39dd, 0x5ab: 0x3b6c, 0x5ac: 0x39f2, 0x5ad: 0x3b81, 0x5ae: 0x39eb, 0x5af: 0x3b7a, - 0x5b0: 0x39f9, 0x5b1: 0x3b88, 0x5b2: 0x3230, 0x5b3: 0x354b, 0x5b4: 0x3258, 0x5b5: 0x3578, - 0x5b6: 0x3253, 0x5b7: 0x356e, 0x5b8: 0x323f, 0x5b9: 0x355a, + 0x580: 0x3208, 0x581: 0x351e, 0x582: 0x320d, 0x583: 0x3523, 0x584: 0x321c, 0x585: 0x3532, + 0x586: 0x3217, 0x587: 0x352d, 0x588: 0x3221, 0x589: 0x353c, 0x58a: 0x3226, 0x58b: 0x3541, + 0x58c: 0x322b, 0x58d: 0x3546, 0x58e: 0x3249, 0x58f: 0x3564, 0x590: 0x3262, 0x591: 0x3582, + 0x592: 0x3271, 0x593: 0x3591, 0x594: 0x3276, 0x595: 0x3596, 0x596: 0x337a, 0x597: 0x34a6, + 0x598: 0x3537, 0x599: 0x3573, 0x59a: 0x1be0, 0x59b: 0x42d7, + 0x5a0: 0x46a1, 0x5a1: 0x4732, 0x5a2: 0x2f83, 0x5a3: 0x328f, + 0x5a4: 0x3878, 0x5a5: 0x3a07, 0x5a6: 0x3871, 0x5a7: 0x3a00, 0x5a8: 0x3886, 0x5a9: 0x3a15, + 0x5aa: 0x387f, 0x5ab: 0x3a0e, 0x5ac: 0x38be, 0x5ad: 0x3a4d, 0x5ae: 0x3894, 0x5af: 0x3a23, + 0x5b0: 0x388d, 0x5b1: 0x3a1c, 0x5b2: 0x38a2, 0x5b3: 0x3a31, 0x5b4: 0x389b, 0x5b5: 0x3a2a, + 0x5b6: 0x38c5, 0x5b7: 0x3a54, 0x5b8: 0x46b5, 0x5b9: 0x4746, 0x5ba: 0x3000, 0x5bb: 0x330c, + 0x5bc: 0x2fec, 0x5bd: 0x32f8, 0x5be: 0x38da, 0x5bf: 0x3a69, // Block 0x17, offset 0x5c0 - 0x5c0: 0x4804, 0x5c1: 0x480a, 0x5c2: 0x491e, 0x5c3: 0x4936, 0x5c4: 0x4926, 0x5c5: 0x493e, - 0x5c6: 0x492e, 0x5c7: 0x4946, 0x5c8: 0x47aa, 0x5c9: 0x47b0, 0x5ca: 0x488e, 0x5cb: 0x48a6, - 0x5cc: 0x4896, 0x5cd: 0x48ae, 0x5ce: 0x489e, 0x5cf: 0x48b6, 0x5d0: 0x4816, 0x5d1: 0x481c, - 0x5d2: 0x3db8, 0x5d3: 0x3dc8, 0x5d4: 0x3dc0, 0x5d5: 0x3dd0, - 0x5d8: 0x47b6, 0x5d9: 0x47bc, 0x5da: 0x3ce8, 0x5db: 0x3cf8, 0x5dc: 0x3cf0, 0x5dd: 0x3d00, - 0x5e0: 0x482e, 0x5e1: 0x4834, 0x5e2: 0x494e, 0x5e3: 0x4966, - 0x5e4: 0x4956, 0x5e5: 0x496e, 0x5e6: 0x495e, 0x5e7: 0x4976, 0x5e8: 0x47c2, 0x5e9: 0x47c8, - 0x5ea: 0x48be, 0x5eb: 0x48d6, 0x5ec: 0x48c6, 0x5ed: 0x48de, 0x5ee: 0x48ce, 0x5ef: 0x48e6, - 0x5f0: 0x4846, 0x5f1: 0x484c, 0x5f2: 0x3e18, 0x5f3: 0x3e30, 0x5f4: 0x3e20, 0x5f5: 0x3e38, - 0x5f6: 0x3e28, 0x5f7: 0x3e40, 0x5f8: 0x47ce, 0x5f9: 0x47d4, 0x5fa: 0x3d18, 0x5fb: 0x3d30, - 0x5fc: 0x3d20, 0x5fd: 0x3d38, 0x5fe: 0x3d28, 0x5ff: 0x3d40, + 0x5c0: 0x38d3, 0x5c1: 0x3a62, 0x5c2: 0x38e8, 0x5c3: 0x3a77, 0x5c4: 0x38e1, 0x5c5: 0x3a70, + 0x5c6: 0x38fd, 0x5c7: 0x3a8c, 0x5c8: 0x3091, 0x5c9: 0x339d, 0x5ca: 0x30a5, 0x5cb: 0x33b1, + 0x5cc: 0x46e7, 0x5cd: 0x4778, 0x5ce: 0x3136, 0x5cf: 0x3447, 0x5d0: 0x3920, 0x5d1: 0x3aaf, + 0x5d2: 0x3919, 0x5d3: 0x3aa8, 0x5d4: 0x392e, 0x5d5: 0x3abd, 0x5d6: 0x3927, 0x5d7: 0x3ab6, + 0x5d8: 0x3989, 0x5d9: 0x3b18, 0x5da: 0x396d, 0x5db: 0x3afc, 0x5dc: 0x3966, 0x5dd: 0x3af5, + 0x5de: 0x397b, 0x5df: 0x3b0a, 0x5e0: 0x3974, 0x5e1: 0x3b03, 0x5e2: 0x3982, 0x5e3: 0x3b11, + 0x5e4: 0x31e5, 0x5e5: 0x34fb, 0x5e6: 0x31c7, 0x5e7: 0x34dd, 0x5e8: 0x39e4, 0x5e9: 0x3b73, + 0x5ea: 0x39dd, 0x5eb: 0x3b6c, 0x5ec: 0x39f2, 0x5ed: 0x3b81, 0x5ee: 0x39eb, 0x5ef: 0x3b7a, + 0x5f0: 0x39f9, 0x5f1: 0x3b88, 0x5f2: 0x3230, 0x5f3: 0x354b, 0x5f4: 0x3258, 0x5f5: 0x3578, + 0x5f6: 0x3253, 0x5f7: 0x356e, 0x5f8: 0x323f, 0x5f9: 0x355a, // Block 0x18, offset 0x600 - 0x600: 0x4852, 0x601: 0x4858, 0x602: 0x3e48, 0x603: 0x3e58, 0x604: 0x3e50, 0x605: 0x3e60, - 0x608: 0x47da, 0x609: 0x47e0, 0x60a: 0x3d48, 0x60b: 0x3d58, - 0x60c: 0x3d50, 0x60d: 0x3d60, 0x610: 0x4864, 0x611: 0x486a, - 0x612: 0x3e80, 0x613: 0x3e98, 0x614: 0x3e88, 0x615: 0x3ea0, 0x616: 0x3e90, 0x617: 0x3ea8, - 0x619: 0x47e6, 0x61b: 0x3d68, 0x61d: 0x3d70, - 0x61f: 0x3d78, 0x620: 0x487c, 0x621: 0x4882, 0x622: 0x497e, 0x623: 0x4996, - 0x624: 0x4986, 0x625: 0x499e, 0x626: 0x498e, 0x627: 0x49a6, 0x628: 0x47ec, 0x629: 0x47f2, - 0x62a: 0x48ee, 0x62b: 0x4906, 0x62c: 0x48f6, 0x62d: 0x490e, 0x62e: 0x48fe, 0x62f: 0x4916, - 0x630: 0x47f8, 0x631: 0x431e, 0x632: 0x3691, 0x633: 0x4324, 0x634: 0x4822, 0x635: 0x432a, - 0x636: 0x36a3, 0x637: 0x4330, 0x638: 0x36c1, 0x639: 0x4336, 0x63a: 0x36d9, 0x63b: 0x433c, - 0x63c: 0x4870, 0x63d: 0x4342, + 0x600: 0x4804, 0x601: 0x480a, 0x602: 0x491e, 0x603: 0x4936, 0x604: 0x4926, 0x605: 0x493e, + 0x606: 0x492e, 0x607: 0x4946, 0x608: 0x47aa, 0x609: 0x47b0, 0x60a: 0x488e, 0x60b: 0x48a6, + 0x60c: 0x4896, 0x60d: 0x48ae, 0x60e: 0x489e, 0x60f: 0x48b6, 0x610: 0x4816, 0x611: 0x481c, + 0x612: 0x3db8, 0x613: 0x3dc8, 0x614: 0x3dc0, 0x615: 0x3dd0, + 0x618: 0x47b6, 0x619: 0x47bc, 0x61a: 0x3ce8, 0x61b: 0x3cf8, 0x61c: 0x3cf0, 0x61d: 0x3d00, + 0x620: 0x482e, 0x621: 0x4834, 0x622: 0x494e, 0x623: 0x4966, + 0x624: 0x4956, 0x625: 0x496e, 0x626: 0x495e, 0x627: 0x4976, 0x628: 0x47c2, 0x629: 0x47c8, + 0x62a: 0x48be, 0x62b: 0x48d6, 0x62c: 0x48c6, 0x62d: 0x48de, 0x62e: 0x48ce, 0x62f: 0x48e6, + 0x630: 0x4846, 0x631: 0x484c, 0x632: 0x3e18, 0x633: 0x3e30, 0x634: 0x3e20, 0x635: 0x3e38, + 0x636: 0x3e28, 0x637: 0x3e40, 0x638: 0x47ce, 0x639: 0x47d4, 0x63a: 0x3d18, 0x63b: 0x3d30, + 0x63c: 0x3d20, 0x63d: 0x3d38, 0x63e: 0x3d28, 0x63f: 0x3d40, // Block 0x19, offset 0x640 - 0x640: 0x3da0, 0x641: 0x3da8, 0x642: 0x4184, 0x643: 0x41a2, 0x644: 0x418e, 0x645: 0x41ac, - 0x646: 0x4198, 0x647: 0x41b6, 0x648: 0x3cd8, 0x649: 0x3ce0, 0x64a: 0x40d0, 0x64b: 0x40ee, - 0x64c: 0x40da, 0x64d: 0x40f8, 0x64e: 0x40e4, 0x64f: 0x4102, 0x650: 0x3de8, 0x651: 0x3df0, - 0x652: 0x41c0, 0x653: 0x41de, 0x654: 0x41ca, 0x655: 0x41e8, 0x656: 0x41d4, 0x657: 0x41f2, - 0x658: 0x3d08, 0x659: 0x3d10, 0x65a: 0x410c, 0x65b: 0x412a, 0x65c: 0x4116, 0x65d: 0x4134, - 0x65e: 0x4120, 0x65f: 0x413e, 0x660: 0x3ec0, 0x661: 0x3ec8, 0x662: 0x41fc, 0x663: 0x421a, - 0x664: 0x4206, 0x665: 0x4224, 0x666: 0x4210, 0x667: 0x422e, 0x668: 0x3d80, 0x669: 0x3d88, - 0x66a: 0x4148, 0x66b: 0x4166, 0x66c: 0x4152, 0x66d: 0x4170, 0x66e: 0x415c, 0x66f: 0x417a, - 0x670: 0x3685, 0x671: 0x367f, 0x672: 0x3d90, 0x673: 0x368b, 0x674: 0x3d98, - 0x676: 0x4810, 0x677: 0x3db0, 0x678: 0x35f5, 0x679: 0x35ef, 0x67a: 0x35e3, 0x67b: 0x42ee, - 0x67c: 0x35fb, 0x67d: 0x4287, 0x67e: 0x01d3, 0x67f: 0x4287, + 0x640: 0x4852, 0x641: 0x4858, 0x642: 0x3e48, 0x643: 0x3e58, 0x644: 0x3e50, 0x645: 0x3e60, + 0x648: 0x47da, 0x649: 0x47e0, 0x64a: 0x3d48, 0x64b: 0x3d58, + 0x64c: 0x3d50, 0x64d: 0x3d60, 0x650: 0x4864, 0x651: 0x486a, + 0x652: 0x3e80, 0x653: 0x3e98, 0x654: 0x3e88, 0x655: 0x3ea0, 0x656: 0x3e90, 0x657: 0x3ea8, + 0x659: 0x47e6, 0x65b: 0x3d68, 0x65d: 0x3d70, + 0x65f: 0x3d78, 0x660: 0x487c, 0x661: 0x4882, 0x662: 0x497e, 0x663: 0x4996, + 0x664: 0x4986, 0x665: 0x499e, 0x666: 0x498e, 0x667: 0x49a6, 0x668: 0x47ec, 0x669: 0x47f2, + 0x66a: 0x48ee, 0x66b: 0x4906, 0x66c: 0x48f6, 0x66d: 0x490e, 0x66e: 0x48fe, 0x66f: 0x4916, + 0x670: 0x47f8, 0x671: 0x431e, 0x672: 0x3691, 0x673: 0x4324, 0x674: 0x4822, 0x675: 0x432a, + 0x676: 0x36a3, 0x677: 0x4330, 0x678: 0x36c1, 0x679: 0x4336, 0x67a: 0x36d9, 0x67b: 0x433c, + 0x67c: 0x4870, 0x67d: 0x4342, // Block 0x1a, offset 0x680 - 0x680: 0x42a0, 0x681: 0x4482, 0x682: 0x3dd8, 0x683: 0x369d, 0x684: 0x3de0, - 0x686: 0x483a, 0x687: 0x3df8, 0x688: 0x3601, 0x689: 0x42f4, 0x68a: 0x360d, 0x68b: 0x42fa, - 0x68c: 0x3619, 0x68d: 0x4489, 0x68e: 0x4490, 0x68f: 0x4497, 0x690: 0x36b5, 0x691: 0x36af, - 0x692: 0x3e00, 0x693: 0x44e4, 0x696: 0x36bb, 0x697: 0x3e10, - 0x698: 0x3631, 0x699: 0x362b, 0x69a: 0x361f, 0x69b: 0x4300, 0x69d: 0x449e, - 0x69e: 0x44a5, 0x69f: 0x44ac, 0x6a0: 0x36eb, 0x6a1: 0x36e5, 0x6a2: 0x3e68, 0x6a3: 0x44ec, - 0x6a4: 0x36cd, 0x6a5: 0x36d3, 0x6a6: 0x36f1, 0x6a7: 0x3e78, 0x6a8: 0x3661, 0x6a9: 0x365b, - 0x6aa: 0x364f, 0x6ab: 0x430c, 0x6ac: 0x3649, 0x6ad: 0x4474, 0x6ae: 0x447b, 0x6af: 0x0081, - 0x6b2: 0x3eb0, 0x6b3: 0x36f7, 0x6b4: 0x3eb8, - 0x6b6: 0x4888, 0x6b7: 0x3ed0, 0x6b8: 0x363d, 0x6b9: 0x4306, 0x6ba: 0x366d, 0x6bb: 0x4318, - 0x6bc: 0x3679, 0x6bd: 0x425a, 0x6be: 0x428c, + 0x680: 0x3da0, 0x681: 0x3da8, 0x682: 0x4184, 0x683: 0x41a2, 0x684: 0x418e, 0x685: 0x41ac, + 0x686: 0x4198, 0x687: 0x41b6, 0x688: 0x3cd8, 0x689: 0x3ce0, 0x68a: 0x40d0, 0x68b: 0x40ee, + 0x68c: 0x40da, 0x68d: 0x40f8, 0x68e: 0x40e4, 0x68f: 0x4102, 0x690: 0x3de8, 0x691: 0x3df0, + 0x692: 0x41c0, 0x693: 0x41de, 0x694: 0x41ca, 0x695: 0x41e8, 0x696: 0x41d4, 0x697: 0x41f2, + 0x698: 0x3d08, 0x699: 0x3d10, 0x69a: 0x410c, 0x69b: 0x412a, 0x69c: 0x4116, 0x69d: 0x4134, + 0x69e: 0x4120, 0x69f: 0x413e, 0x6a0: 0x3ec0, 0x6a1: 0x3ec8, 0x6a2: 0x41fc, 0x6a3: 0x421a, + 0x6a4: 0x4206, 0x6a5: 0x4224, 0x6a6: 0x4210, 0x6a7: 0x422e, 0x6a8: 0x3d80, 0x6a9: 0x3d88, + 0x6aa: 0x4148, 0x6ab: 0x4166, 0x6ac: 0x4152, 0x6ad: 0x4170, 0x6ae: 0x415c, 0x6af: 0x417a, + 0x6b0: 0x3685, 0x6b1: 0x367f, 0x6b2: 0x3d90, 0x6b3: 0x368b, 0x6b4: 0x3d98, + 0x6b6: 0x4810, 0x6b7: 0x3db0, 0x6b8: 0x35f5, 0x6b9: 0x35ef, 0x6ba: 0x35e3, 0x6bb: 0x42ee, + 0x6bc: 0x35fb, 0x6bd: 0x4287, 0x6be: 0x01d3, 0x6bf: 0x4287, // Block 0x1b, offset 0x6c0 - 0x6c0: 0x1bd8, 0x6c1: 0x1bdc, 0x6c2: 0x0047, 0x6c3: 0x1c54, 0x6c5: 0x1be8, - 0x6c6: 0x1bec, 0x6c7: 0x00e9, 0x6c9: 0x1c58, 0x6ca: 0x008f, 0x6cb: 0x0051, - 0x6cc: 0x0051, 0x6cd: 0x0051, 0x6ce: 0x0091, 0x6cf: 0x00da, 0x6d0: 0x0053, 0x6d1: 0x0053, - 0x6d2: 0x0059, 0x6d3: 0x0099, 0x6d5: 0x005d, 0x6d6: 0x198d, - 0x6d9: 0x0061, 0x6da: 0x0063, 0x6db: 0x0065, 0x6dc: 0x0065, 0x6dd: 0x0065, - 0x6e0: 0x199f, 0x6e1: 0x1bc8, 0x6e2: 0x19a8, - 0x6e4: 0x0075, 0x6e6: 0x01b8, 0x6e8: 0x0075, - 0x6ea: 0x0057, 0x6eb: 0x42d2, 0x6ec: 0x0045, 0x6ed: 0x0047, 0x6ef: 0x008b, - 0x6f0: 0x004b, 0x6f1: 0x004d, 0x6f3: 0x005b, 0x6f4: 0x009f, 0x6f5: 0x0215, - 0x6f6: 0x0218, 0x6f7: 0x021b, 0x6f8: 0x021e, 0x6f9: 0x0093, 0x6fb: 0x1b98, - 0x6fc: 0x01e8, 0x6fd: 0x01c1, 0x6fe: 0x0179, 0x6ff: 0x01a0, + 0x6c0: 0x42a0, 0x6c1: 0x4482, 0x6c2: 0x3dd8, 0x6c3: 0x369d, 0x6c4: 0x3de0, + 0x6c6: 0x483a, 0x6c7: 0x3df8, 0x6c8: 0x3601, 0x6c9: 0x42f4, 0x6ca: 0x360d, 0x6cb: 0x42fa, + 0x6cc: 0x3619, 0x6cd: 0x4489, 0x6ce: 0x4490, 0x6cf: 0x4497, 0x6d0: 0x36b5, 0x6d1: 0x36af, + 0x6d2: 0x3e00, 0x6d3: 0x44e4, 0x6d6: 0x36bb, 0x6d7: 0x3e10, + 0x6d8: 0x3631, 0x6d9: 0x362b, 0x6da: 0x361f, 0x6db: 0x4300, 0x6dd: 0x449e, + 0x6de: 0x44a5, 0x6df: 0x44ac, 0x6e0: 0x36eb, 0x6e1: 0x36e5, 0x6e2: 0x3e68, 0x6e3: 0x44ec, + 0x6e4: 0x36cd, 0x6e5: 0x36d3, 0x6e6: 0x36f1, 0x6e7: 0x3e78, 0x6e8: 0x3661, 0x6e9: 0x365b, + 0x6ea: 0x364f, 0x6eb: 0x430c, 0x6ec: 0x3649, 0x6ed: 0x4474, 0x6ee: 0x447b, 0x6ef: 0x0081, + 0x6f2: 0x3eb0, 0x6f3: 0x36f7, 0x6f4: 0x3eb8, + 0x6f6: 0x4888, 0x6f7: 0x3ed0, 0x6f8: 0x363d, 0x6f9: 0x4306, 0x6fa: 0x366d, 0x6fb: 0x4318, + 0x6fc: 0x3679, 0x6fd: 0x425a, 0x6fe: 0x428c, // Block 0x1c, offset 0x700 - 0x700: 0x0463, 0x705: 0x0049, - 0x706: 0x0089, 0x707: 0x008b, 0x708: 0x0093, 0x709: 0x0095, - 0x710: 0x222e, 0x711: 0x223a, - 0x712: 0x22ee, 0x713: 0x2216, 0x714: 0x229a, 0x715: 0x2222, 0x716: 0x22a0, 0x717: 0x22b8, - 0x718: 0x22c4, 0x719: 0x2228, 0x71a: 0x22ca, 0x71b: 0x2234, 0x71c: 0x22be, 0x71d: 0x22d0, - 0x71e: 0x22d6, 0x71f: 0x1cbc, 0x720: 0x0053, 0x721: 0x195a, 0x722: 0x1ba4, 0x723: 0x1963, - 0x724: 0x006d, 0x725: 0x19ab, 0x726: 0x1bd0, 0x727: 0x1d48, 0x728: 0x1966, 0x729: 0x0071, - 0x72a: 0x19b7, 0x72b: 0x1bd4, 0x72c: 0x0059, 0x72d: 0x0047, 0x72e: 0x0049, 0x72f: 0x005b, - 0x730: 0x0093, 0x731: 0x19e4, 0x732: 0x1c18, 0x733: 0x19ed, 0x734: 0x00ad, 0x735: 0x1a62, - 0x736: 0x1c4c, 0x737: 0x1d5c, 0x738: 0x19f0, 0x739: 0x00b1, 0x73a: 0x1a65, 0x73b: 0x1c50, - 0x73c: 0x0099, 0x73d: 0x0087, 0x73e: 0x0089, 0x73f: 0x009b, + 0x700: 0x1bd8, 0x701: 0x1bdc, 0x702: 0x0047, 0x703: 0x1c54, 0x705: 0x1be8, + 0x706: 0x1bec, 0x707: 0x00e9, 0x709: 0x1c58, 0x70a: 0x008f, 0x70b: 0x0051, + 0x70c: 0x0051, 0x70d: 0x0051, 0x70e: 0x0091, 0x70f: 0x00da, 0x710: 0x0053, 0x711: 0x0053, + 0x712: 0x0059, 0x713: 0x0099, 0x715: 0x005d, 0x716: 0x198d, + 0x719: 0x0061, 0x71a: 0x0063, 0x71b: 0x0065, 0x71c: 0x0065, 0x71d: 0x0065, + 0x720: 0x199f, 0x721: 0x1bc8, 0x722: 0x19a8, + 0x724: 0x0075, 0x726: 0x01b8, 0x728: 0x0075, + 0x72a: 0x0057, 0x72b: 0x42d2, 0x72c: 0x0045, 0x72d: 0x0047, 0x72f: 0x008b, + 0x730: 0x004b, 0x731: 0x004d, 0x733: 0x005b, 0x734: 0x009f, 0x735: 0x0215, + 0x736: 0x0218, 0x737: 0x021b, 0x738: 0x021e, 0x739: 0x0093, 0x73b: 0x1b98, + 0x73c: 0x01e8, 0x73d: 0x01c1, 0x73e: 0x0179, 0x73f: 0x01a0, // Block 0x1d, offset 0x740 - 0x741: 0x3c06, 0x743: 0xa000, 0x744: 0x3c0d, 0x745: 0xa000, - 0x747: 0x3c14, 0x748: 0xa000, 0x749: 0x3c1b, - 0x74d: 0xa000, - 0x760: 0x2f65, 0x761: 0xa000, 0x762: 0x3c29, - 0x764: 0xa000, 0x765: 0xa000, - 0x76d: 0x3c22, 0x76e: 0x2f60, 0x76f: 0x2f6a, - 0x770: 0x3c30, 0x771: 0x3c37, 0x772: 0xa000, 0x773: 0xa000, 0x774: 0x3c3e, 0x775: 0x3c45, - 0x776: 0xa000, 0x777: 0xa000, 0x778: 0x3c4c, 0x779: 0x3c53, 0x77a: 0xa000, 0x77b: 0xa000, - 0x77c: 0xa000, 0x77d: 0xa000, + 0x740: 0x0463, 0x745: 0x0049, + 0x746: 0x0089, 0x747: 0x008b, 0x748: 0x0093, 0x749: 0x0095, + 0x750: 0x222e, 0x751: 0x223a, + 0x752: 0x22ee, 0x753: 0x2216, 0x754: 0x229a, 0x755: 0x2222, 0x756: 0x22a0, 0x757: 0x22b8, + 0x758: 0x22c4, 0x759: 0x2228, 0x75a: 0x22ca, 0x75b: 0x2234, 0x75c: 0x22be, 0x75d: 0x22d0, + 0x75e: 0x22d6, 0x75f: 0x1cbc, 0x760: 0x0053, 0x761: 0x195a, 0x762: 0x1ba4, 0x763: 0x1963, + 0x764: 0x006d, 0x765: 0x19ab, 0x766: 0x1bd0, 0x767: 0x1d48, 0x768: 0x1966, 0x769: 0x0071, + 0x76a: 0x19b7, 0x76b: 0x1bd4, 0x76c: 0x0059, 0x76d: 0x0047, 0x76e: 0x0049, 0x76f: 0x005b, + 0x770: 0x0093, 0x771: 0x19e4, 0x772: 0x1c18, 0x773: 0x19ed, 0x774: 0x00ad, 0x775: 0x1a62, + 0x776: 0x1c4c, 0x777: 0x1d5c, 0x778: 0x19f0, 0x779: 0x00b1, 0x77a: 0x1a65, 0x77b: 0x1c50, + 0x77c: 0x0099, 0x77d: 0x0087, 0x77e: 0x0089, 0x77f: 0x009b, // Block 0x1e, offset 0x780 - 0x780: 0x3c5a, 0x781: 0x3c61, 0x782: 0xa000, 0x783: 0xa000, 0x784: 0x3c76, 0x785: 0x3c7d, - 0x786: 0xa000, 0x787: 0xa000, 0x788: 0x3c84, 0x789: 0x3c8b, - 0x791: 0xa000, - 0x792: 0xa000, - 0x7a2: 0xa000, - 0x7a8: 0xa000, 0x7a9: 0xa000, - 0x7ab: 0xa000, 0x7ac: 0x3ca0, 0x7ad: 0x3ca7, 0x7ae: 0x3cae, 0x7af: 0x3cb5, - 0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0xa000, 0x7b5: 0xa000, + 0x781: 0x3c06, 0x783: 0xa000, 0x784: 0x3c0d, 0x785: 0xa000, + 0x787: 0x3c14, 0x788: 0xa000, 0x789: 0x3c1b, + 0x78d: 0xa000, + 0x7a0: 0x2f65, 0x7a1: 0xa000, 0x7a2: 0x3c29, + 0x7a4: 0xa000, 0x7a5: 0xa000, + 0x7ad: 0x3c22, 0x7ae: 0x2f60, 0x7af: 0x2f6a, + 0x7b0: 0x3c30, 0x7b1: 0x3c37, 0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0x3c3e, 0x7b5: 0x3c45, + 0x7b6: 0xa000, 0x7b7: 0xa000, 0x7b8: 0x3c4c, 0x7b9: 0x3c53, 0x7ba: 0xa000, 0x7bb: 0xa000, + 0x7bc: 0xa000, 0x7bd: 0xa000, // Block 0x1f, offset 0x7c0 - 0x7e0: 0x0023, 0x7e1: 0x0025, 0x7e2: 0x0027, 0x7e3: 0x0029, - 0x7e4: 0x002b, 0x7e5: 0x002d, 0x7e6: 0x002f, 0x7e7: 0x0031, 0x7e8: 0x0033, 0x7e9: 0x1882, - 0x7ea: 0x1885, 0x7eb: 0x1888, 0x7ec: 0x188b, 0x7ed: 0x188e, 0x7ee: 0x1891, 0x7ef: 0x1894, - 0x7f0: 0x1897, 0x7f1: 0x189a, 0x7f2: 0x189d, 0x7f3: 0x18a6, 0x7f4: 0x1a68, 0x7f5: 0x1a6c, - 0x7f6: 0x1a70, 0x7f7: 0x1a74, 0x7f8: 0x1a78, 0x7f9: 0x1a7c, 0x7fa: 0x1a80, 0x7fb: 0x1a84, - 0x7fc: 0x1a88, 0x7fd: 0x1c80, 0x7fe: 0x1c85, 0x7ff: 0x1c8a, + 0x7c0: 0x3c5a, 0x7c1: 0x3c61, 0x7c2: 0xa000, 0x7c3: 0xa000, 0x7c4: 0x3c76, 0x7c5: 0x3c7d, + 0x7c6: 0xa000, 0x7c7: 0xa000, 0x7c8: 0x3c84, 0x7c9: 0x3c8b, + 0x7d1: 0xa000, + 0x7d2: 0xa000, + 0x7e2: 0xa000, + 0x7e8: 0xa000, 0x7e9: 0xa000, + 0x7eb: 0xa000, 0x7ec: 0x3ca0, 0x7ed: 0x3ca7, 0x7ee: 0x3cae, 0x7ef: 0x3cb5, + 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0xa000, 0x7f5: 0xa000, // Block 0x20, offset 0x800 - 0x800: 0x1c8f, 0x801: 0x1c94, 0x802: 0x1c99, 0x803: 0x1c9e, 0x804: 0x1ca3, 0x805: 0x1ca8, - 0x806: 0x1cad, 0x807: 0x1cb2, 0x808: 0x187f, 0x809: 0x18a3, 0x80a: 0x18c7, 0x80b: 0x18eb, - 0x80c: 0x190f, 0x80d: 0x1918, 0x80e: 0x191e, 0x80f: 0x1924, 0x810: 0x192a, 0x811: 0x1b60, - 0x812: 0x1b64, 0x813: 0x1b68, 0x814: 0x1b6c, 0x815: 0x1b70, 0x816: 0x1b74, 0x817: 0x1b78, - 0x818: 0x1b7c, 0x819: 0x1b80, 0x81a: 0x1b84, 0x81b: 0x1b88, 0x81c: 0x1af4, 0x81d: 0x1af8, - 0x81e: 0x1afc, 0x81f: 0x1b00, 0x820: 0x1b04, 0x821: 0x1b08, 0x822: 0x1b0c, 0x823: 0x1b10, - 0x824: 0x1b14, 0x825: 0x1b18, 0x826: 0x1b1c, 0x827: 0x1b20, 0x828: 0x1b24, 0x829: 0x1b28, - 0x82a: 0x1b2c, 0x82b: 0x1b30, 0x82c: 0x1b34, 0x82d: 0x1b38, 0x82e: 0x1b3c, 0x82f: 0x1b40, - 0x830: 0x1b44, 0x831: 0x1b48, 0x832: 0x1b4c, 0x833: 0x1b50, 0x834: 0x1b54, 0x835: 0x1b58, - 0x836: 0x0043, 0x837: 0x0045, 0x838: 0x0047, 0x839: 0x0049, 0x83a: 0x004b, 0x83b: 0x004d, - 0x83c: 0x004f, 0x83d: 0x0051, 0x83e: 0x0053, 0x83f: 0x0055, + 0x820: 0x0023, 0x821: 0x0025, 0x822: 0x0027, 0x823: 0x0029, + 0x824: 0x002b, 0x825: 0x002d, 0x826: 0x002f, 0x827: 0x0031, 0x828: 0x0033, 0x829: 0x1882, + 0x82a: 0x1885, 0x82b: 0x1888, 0x82c: 0x188b, 0x82d: 0x188e, 0x82e: 0x1891, 0x82f: 0x1894, + 0x830: 0x1897, 0x831: 0x189a, 0x832: 0x189d, 0x833: 0x18a6, 0x834: 0x1a68, 0x835: 0x1a6c, + 0x836: 0x1a70, 0x837: 0x1a74, 0x838: 0x1a78, 0x839: 0x1a7c, 0x83a: 0x1a80, 0x83b: 0x1a84, + 0x83c: 0x1a88, 0x83d: 0x1c80, 0x83e: 0x1c85, 0x83f: 0x1c8a, // Block 0x21, offset 0x840 - 0x840: 0x06bf, 0x841: 0x06e3, 0x842: 0x06ef, 0x843: 0x06ff, 0x844: 0x0707, 0x845: 0x0713, - 0x846: 0x071b, 0x847: 0x0723, 0x848: 0x072f, 0x849: 0x0783, 0x84a: 0x079b, 0x84b: 0x07ab, - 0x84c: 0x07bb, 0x84d: 0x07cb, 0x84e: 0x07db, 0x84f: 0x07fb, 0x850: 0x07ff, 0x851: 0x0803, - 0x852: 0x0837, 0x853: 0x085f, 0x854: 0x086f, 0x855: 0x0877, 0x856: 0x087b, 0x857: 0x0887, - 0x858: 0x08a3, 0x859: 0x08a7, 0x85a: 0x08bf, 0x85b: 0x08c3, 0x85c: 0x08cb, 0x85d: 0x08db, - 0x85e: 0x0977, 0x85f: 0x098b, 0x860: 0x09cb, 0x861: 0x09df, 0x862: 0x09e7, 0x863: 0x09eb, - 0x864: 0x09fb, 0x865: 0x0a17, 0x866: 0x0a43, 0x867: 0x0a4f, 0x868: 0x0a6f, 0x869: 0x0a7b, - 0x86a: 0x0a7f, 0x86b: 0x0a83, 0x86c: 0x0a9b, 0x86d: 0x0a9f, 0x86e: 0x0acb, 0x86f: 0x0ad7, - 0x870: 0x0adf, 0x871: 0x0ae7, 0x872: 0x0af7, 0x873: 0x0aff, 0x874: 0x0b07, 0x875: 0x0b33, - 0x876: 0x0b37, 0x877: 0x0b3f, 0x878: 0x0b43, 0x879: 0x0b4b, 0x87a: 0x0b53, 0x87b: 0x0b63, - 0x87c: 0x0b7f, 0x87d: 0x0bf7, 0x87e: 0x0c0b, 0x87f: 0x0c0f, + 0x840: 0x1c8f, 0x841: 0x1c94, 0x842: 0x1c99, 0x843: 0x1c9e, 0x844: 0x1ca3, 0x845: 0x1ca8, + 0x846: 0x1cad, 0x847: 0x1cb2, 0x848: 0x187f, 0x849: 0x18a3, 0x84a: 0x18c7, 0x84b: 0x18eb, + 0x84c: 0x190f, 0x84d: 0x1918, 0x84e: 0x191e, 0x84f: 0x1924, 0x850: 0x192a, 0x851: 0x1b60, + 0x852: 0x1b64, 0x853: 0x1b68, 0x854: 0x1b6c, 0x855: 0x1b70, 0x856: 0x1b74, 0x857: 0x1b78, + 0x858: 0x1b7c, 0x859: 0x1b80, 0x85a: 0x1b84, 0x85b: 0x1b88, 0x85c: 0x1af4, 0x85d: 0x1af8, + 0x85e: 0x1afc, 0x85f: 0x1b00, 0x860: 0x1b04, 0x861: 0x1b08, 0x862: 0x1b0c, 0x863: 0x1b10, + 0x864: 0x1b14, 0x865: 0x1b18, 0x866: 0x1b1c, 0x867: 0x1b20, 0x868: 0x1b24, 0x869: 0x1b28, + 0x86a: 0x1b2c, 0x86b: 0x1b30, 0x86c: 0x1b34, 0x86d: 0x1b38, 0x86e: 0x1b3c, 0x86f: 0x1b40, + 0x870: 0x1b44, 0x871: 0x1b48, 0x872: 0x1b4c, 0x873: 0x1b50, 0x874: 0x1b54, 0x875: 0x1b58, + 0x876: 0x0043, 0x877: 0x0045, 0x878: 0x0047, 0x879: 0x0049, 0x87a: 0x004b, 0x87b: 0x004d, + 0x87c: 0x004f, 0x87d: 0x0051, 0x87e: 0x0053, 0x87f: 0x0055, // Block 0x22, offset 0x880 - 0x880: 0x0c8f, 0x881: 0x0c93, 0x882: 0x0ca7, 0x883: 0x0cab, 0x884: 0x0cb3, 0x885: 0x0cbb, - 0x886: 0x0cc3, 0x887: 0x0ccf, 0x888: 0x0cf7, 0x889: 0x0d07, 0x88a: 0x0d1b, 0x88b: 0x0d8b, - 0x88c: 0x0d97, 0x88d: 0x0da7, 0x88e: 0x0db3, 0x88f: 0x0dbf, 0x890: 0x0dc7, 0x891: 0x0dcb, - 0x892: 0x0dcf, 0x893: 0x0dd3, 0x894: 0x0dd7, 0x895: 0x0e8f, 0x896: 0x0ed7, 0x897: 0x0ee3, - 0x898: 0x0ee7, 0x899: 0x0eeb, 0x89a: 0x0eef, 0x89b: 0x0ef7, 0x89c: 0x0efb, 0x89d: 0x0f0f, - 0x89e: 0x0f2b, 0x89f: 0x0f33, 0x8a0: 0x0f73, 0x8a1: 0x0f77, 0x8a2: 0x0f7f, 0x8a3: 0x0f83, - 0x8a4: 0x0f8b, 0x8a5: 0x0f8f, 0x8a6: 0x0fb3, 0x8a7: 0x0fb7, 0x8a8: 0x0fd3, 0x8a9: 0x0fd7, - 0x8aa: 0x0fdb, 0x8ab: 0x0fdf, 0x8ac: 0x0ff3, 0x8ad: 0x1017, 0x8ae: 0x101b, 0x8af: 0x101f, - 0x8b0: 0x1043, 0x8b1: 0x1083, 0x8b2: 0x1087, 0x8b3: 0x10a7, 0x8b4: 0x10b7, 0x8b5: 0x10bf, - 0x8b6: 0x10df, 0x8b7: 0x1103, 0x8b8: 0x1147, 0x8b9: 0x114f, 0x8ba: 0x1163, 0x8bb: 0x116f, - 0x8bc: 0x1177, 0x8bd: 0x117f, 0x8be: 0x1183, 0x8bf: 0x1187, + 0x880: 0x06bf, 0x881: 0x06e3, 0x882: 0x06ef, 0x883: 0x06ff, 0x884: 0x0707, 0x885: 0x0713, + 0x886: 0x071b, 0x887: 0x0723, 0x888: 0x072f, 0x889: 0x0783, 0x88a: 0x079b, 0x88b: 0x07ab, + 0x88c: 0x07bb, 0x88d: 0x07cb, 0x88e: 0x07db, 0x88f: 0x07fb, 0x890: 0x07ff, 0x891: 0x0803, + 0x892: 0x0837, 0x893: 0x085f, 0x894: 0x086f, 0x895: 0x0877, 0x896: 0x087b, 0x897: 0x0887, + 0x898: 0x08a3, 0x899: 0x08a7, 0x89a: 0x08bf, 0x89b: 0x08c3, 0x89c: 0x08cb, 0x89d: 0x08db, + 0x89e: 0x0977, 0x89f: 0x098b, 0x8a0: 0x09cb, 0x8a1: 0x09df, 0x8a2: 0x09e7, 0x8a3: 0x09eb, + 0x8a4: 0x09fb, 0x8a5: 0x0a17, 0x8a6: 0x0a43, 0x8a7: 0x0a4f, 0x8a8: 0x0a6f, 0x8a9: 0x0a7b, + 0x8aa: 0x0a7f, 0x8ab: 0x0a83, 0x8ac: 0x0a9b, 0x8ad: 0x0a9f, 0x8ae: 0x0acb, 0x8af: 0x0ad7, + 0x8b0: 0x0adf, 0x8b1: 0x0ae7, 0x8b2: 0x0af7, 0x8b3: 0x0aff, 0x8b4: 0x0b07, 0x8b5: 0x0b33, + 0x8b6: 0x0b37, 0x8b7: 0x0b3f, 0x8b8: 0x0b43, 0x8b9: 0x0b4b, 0x8ba: 0x0b53, 0x8bb: 0x0b63, + 0x8bc: 0x0b7f, 0x8bd: 0x0bf7, 0x8be: 0x0c0b, 0x8bf: 0x0c0f, // Block 0x23, offset 0x8c0 - 0x8c0: 0x119f, 0x8c1: 0x11a3, 0x8c2: 0x11bf, 0x8c3: 0x11c7, 0x8c4: 0x11cf, 0x8c5: 0x11d3, - 0x8c6: 0x11df, 0x8c7: 0x11e7, 0x8c8: 0x11eb, 0x8c9: 0x11ef, 0x8ca: 0x11f7, 0x8cb: 0x11fb, - 0x8cc: 0x129b, 0x8cd: 0x12af, 0x8ce: 0x12e3, 0x8cf: 0x12e7, 0x8d0: 0x12ef, 0x8d1: 0x131b, - 0x8d2: 0x1323, 0x8d3: 0x132b, 0x8d4: 0x1333, 0x8d5: 0x136f, 0x8d6: 0x1373, 0x8d7: 0x137b, - 0x8d8: 0x137f, 0x8d9: 0x1383, 0x8da: 0x13af, 0x8db: 0x13b3, 0x8dc: 0x13bb, 0x8dd: 0x13cf, - 0x8de: 0x13d3, 0x8df: 0x13ef, 0x8e0: 0x13f7, 0x8e1: 0x13fb, 0x8e2: 0x141f, 0x8e3: 0x143f, - 0x8e4: 0x1453, 0x8e5: 0x1457, 0x8e6: 0x145f, 0x8e7: 0x148b, 0x8e8: 0x148f, 0x8e9: 0x149f, - 0x8ea: 0x14c3, 0x8eb: 0x14cf, 0x8ec: 0x14df, 0x8ed: 0x14f7, 0x8ee: 0x14ff, 0x8ef: 0x1503, - 0x8f0: 0x1507, 0x8f1: 0x150b, 0x8f2: 0x1517, 0x8f3: 0x151b, 0x8f4: 0x1523, 0x8f5: 0x153f, - 0x8f6: 0x1543, 0x8f7: 0x1547, 0x8f8: 0x155f, 0x8f9: 0x1563, 0x8fa: 0x156b, 0x8fb: 0x157f, - 0x8fc: 0x1583, 0x8fd: 0x1587, 0x8fe: 0x158f, 0x8ff: 0x1593, + 0x8c0: 0x0c8f, 0x8c1: 0x0c93, 0x8c2: 0x0ca7, 0x8c3: 0x0cab, 0x8c4: 0x0cb3, 0x8c5: 0x0cbb, + 0x8c6: 0x0cc3, 0x8c7: 0x0ccf, 0x8c8: 0x0cf7, 0x8c9: 0x0d07, 0x8ca: 0x0d1b, 0x8cb: 0x0d8b, + 0x8cc: 0x0d97, 0x8cd: 0x0da7, 0x8ce: 0x0db3, 0x8cf: 0x0dbf, 0x8d0: 0x0dc7, 0x8d1: 0x0dcb, + 0x8d2: 0x0dcf, 0x8d3: 0x0dd3, 0x8d4: 0x0dd7, 0x8d5: 0x0e8f, 0x8d6: 0x0ed7, 0x8d7: 0x0ee3, + 0x8d8: 0x0ee7, 0x8d9: 0x0eeb, 0x8da: 0x0eef, 0x8db: 0x0ef7, 0x8dc: 0x0efb, 0x8dd: 0x0f0f, + 0x8de: 0x0f2b, 0x8df: 0x0f33, 0x8e0: 0x0f73, 0x8e1: 0x0f77, 0x8e2: 0x0f7f, 0x8e3: 0x0f83, + 0x8e4: 0x0f8b, 0x8e5: 0x0f8f, 0x8e6: 0x0fb3, 0x8e7: 0x0fb7, 0x8e8: 0x0fd3, 0x8e9: 0x0fd7, + 0x8ea: 0x0fdb, 0x8eb: 0x0fdf, 0x8ec: 0x0ff3, 0x8ed: 0x1017, 0x8ee: 0x101b, 0x8ef: 0x101f, + 0x8f0: 0x1043, 0x8f1: 0x1083, 0x8f2: 0x1087, 0x8f3: 0x10a7, 0x8f4: 0x10b7, 0x8f5: 0x10bf, + 0x8f6: 0x10df, 0x8f7: 0x1103, 0x8f8: 0x1147, 0x8f9: 0x114f, 0x8fa: 0x1163, 0x8fb: 0x116f, + 0x8fc: 0x1177, 0x8fd: 0x117f, 0x8fe: 0x1183, 0x8ff: 0x1187, // Block 0x24, offset 0x900 - 0x906: 0xa000, 0x90b: 0xa000, - 0x90c: 0x3f08, 0x90d: 0xa000, 0x90e: 0x3f10, 0x90f: 0xa000, 0x910: 0x3f18, 0x911: 0xa000, - 0x912: 0x3f20, 0x913: 0xa000, 0x914: 0x3f28, 0x915: 0xa000, 0x916: 0x3f30, 0x917: 0xa000, - 0x918: 0x3f38, 0x919: 0xa000, 0x91a: 0x3f40, 0x91b: 0xa000, 0x91c: 0x3f48, 0x91d: 0xa000, - 0x91e: 0x3f50, 0x91f: 0xa000, 0x920: 0x3f58, 0x921: 0xa000, 0x922: 0x3f60, - 0x924: 0xa000, 0x925: 0x3f68, 0x926: 0xa000, 0x927: 0x3f70, 0x928: 0xa000, 0x929: 0x3f78, - 0x92f: 0xa000, - 0x930: 0x3f80, 0x931: 0x3f88, 0x932: 0xa000, 0x933: 0x3f90, 0x934: 0x3f98, 0x935: 0xa000, - 0x936: 0x3fa0, 0x937: 0x3fa8, 0x938: 0xa000, 0x939: 0x3fb0, 0x93a: 0x3fb8, 0x93b: 0xa000, - 0x93c: 0x3fc0, 0x93d: 0x3fc8, + 0x900: 0x119f, 0x901: 0x11a3, 0x902: 0x11bf, 0x903: 0x11c7, 0x904: 0x11cf, 0x905: 0x11d3, + 0x906: 0x11df, 0x907: 0x11e7, 0x908: 0x11eb, 0x909: 0x11ef, 0x90a: 0x11f7, 0x90b: 0x11fb, + 0x90c: 0x129b, 0x90d: 0x12af, 0x90e: 0x12e3, 0x90f: 0x12e7, 0x910: 0x12ef, 0x911: 0x131b, + 0x912: 0x1323, 0x913: 0x132b, 0x914: 0x1333, 0x915: 0x136f, 0x916: 0x1373, 0x917: 0x137b, + 0x918: 0x137f, 0x919: 0x1383, 0x91a: 0x13af, 0x91b: 0x13b3, 0x91c: 0x13bb, 0x91d: 0x13cf, + 0x91e: 0x13d3, 0x91f: 0x13ef, 0x920: 0x13f7, 0x921: 0x13fb, 0x922: 0x141f, 0x923: 0x143f, + 0x924: 0x1453, 0x925: 0x1457, 0x926: 0x145f, 0x927: 0x148b, 0x928: 0x148f, 0x929: 0x149f, + 0x92a: 0x14c3, 0x92b: 0x14cf, 0x92c: 0x14df, 0x92d: 0x14f7, 0x92e: 0x14ff, 0x92f: 0x1503, + 0x930: 0x1507, 0x931: 0x150b, 0x932: 0x1517, 0x933: 0x151b, 0x934: 0x1523, 0x935: 0x153f, + 0x936: 0x1543, 0x937: 0x1547, 0x938: 0x155f, 0x939: 0x1563, 0x93a: 0x156b, 0x93b: 0x157f, + 0x93c: 0x1583, 0x93d: 0x1587, 0x93e: 0x158f, 0x93f: 0x1593, // Block 0x25, offset 0x940 - 0x954: 0x3f00, - 0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x42dc, 0x95c: 0x42e2, 0x95d: 0xa000, - 0x95e: 0x3fd0, 0x95f: 0x26b4, - 0x966: 0xa000, - 0x96b: 0xa000, 0x96c: 0x3fe0, 0x96d: 0xa000, 0x96e: 0x3fe8, 0x96f: 0xa000, - 0x970: 0x3ff0, 0x971: 0xa000, 0x972: 0x3ff8, 0x973: 0xa000, 0x974: 0x4000, 0x975: 0xa000, - 0x976: 0x4008, 0x977: 0xa000, 0x978: 0x4010, 0x979: 0xa000, 0x97a: 0x4018, 0x97b: 0xa000, - 0x97c: 0x4020, 0x97d: 0xa000, 0x97e: 0x4028, 0x97f: 0xa000, + 0x946: 0xa000, 0x94b: 0xa000, + 0x94c: 0x3f08, 0x94d: 0xa000, 0x94e: 0x3f10, 0x94f: 0xa000, 0x950: 0x3f18, 0x951: 0xa000, + 0x952: 0x3f20, 0x953: 0xa000, 0x954: 0x3f28, 0x955: 0xa000, 0x956: 0x3f30, 0x957: 0xa000, + 0x958: 0x3f38, 0x959: 0xa000, 0x95a: 0x3f40, 0x95b: 0xa000, 0x95c: 0x3f48, 0x95d: 0xa000, + 0x95e: 0x3f50, 0x95f: 0xa000, 0x960: 0x3f58, 0x961: 0xa000, 0x962: 0x3f60, + 0x964: 0xa000, 0x965: 0x3f68, 0x966: 0xa000, 0x967: 0x3f70, 0x968: 0xa000, 0x969: 0x3f78, + 0x96f: 0xa000, + 0x970: 0x3f80, 0x971: 0x3f88, 0x972: 0xa000, 0x973: 0x3f90, 0x974: 0x3f98, 0x975: 0xa000, + 0x976: 0x3fa0, 0x977: 0x3fa8, 0x978: 0xa000, 0x979: 0x3fb0, 0x97a: 0x3fb8, 0x97b: 0xa000, + 0x97c: 0x3fc0, 0x97d: 0x3fc8, // Block 0x26, offset 0x980 - 0x980: 0x4030, 0x981: 0xa000, 0x982: 0x4038, 0x984: 0xa000, 0x985: 0x4040, - 0x986: 0xa000, 0x987: 0x4048, 0x988: 0xa000, 0x989: 0x4050, - 0x98f: 0xa000, 0x990: 0x4058, 0x991: 0x4060, - 0x992: 0xa000, 0x993: 0x4068, 0x994: 0x4070, 0x995: 0xa000, 0x996: 0x4078, 0x997: 0x4080, - 0x998: 0xa000, 0x999: 0x4088, 0x99a: 0x4090, 0x99b: 0xa000, 0x99c: 0x4098, 0x99d: 0x40a0, - 0x9af: 0xa000, - 0x9b0: 0xa000, 0x9b1: 0xa000, 0x9b2: 0xa000, 0x9b4: 0x3fd8, - 0x9b7: 0x40a8, 0x9b8: 0x40b0, 0x9b9: 0x40b8, 0x9ba: 0x40c0, - 0x9bd: 0xa000, 0x9be: 0x40c8, 0x9bf: 0x26c9, + 0x994: 0x3f00, + 0x999: 0x9903, 0x99a: 0x9903, 0x99b: 0x42dc, 0x99c: 0x42e2, 0x99d: 0xa000, + 0x99e: 0x3fd0, 0x99f: 0x26b4, + 0x9a6: 0xa000, + 0x9ab: 0xa000, 0x9ac: 0x3fe0, 0x9ad: 0xa000, 0x9ae: 0x3fe8, 0x9af: 0xa000, + 0x9b0: 0x3ff0, 0x9b1: 0xa000, 0x9b2: 0x3ff8, 0x9b3: 0xa000, 0x9b4: 0x4000, 0x9b5: 0xa000, + 0x9b6: 0x4008, 0x9b7: 0xa000, 0x9b8: 0x4010, 0x9b9: 0xa000, 0x9ba: 0x4018, 0x9bb: 0xa000, + 0x9bc: 0x4020, 0x9bd: 0xa000, 0x9be: 0x4028, 0x9bf: 0xa000, // Block 0x27, offset 0x9c0 - 0x9c0: 0x0367, 0x9c1: 0x032b, 0x9c2: 0x032f, 0x9c3: 0x0333, 0x9c4: 0x037b, 0x9c5: 0x0337, - 0x9c6: 0x033b, 0x9c7: 0x033f, 0x9c8: 0x0343, 0x9c9: 0x0347, 0x9ca: 0x034b, 0x9cb: 0x034f, - 0x9cc: 0x0353, 0x9cd: 0x0357, 0x9ce: 0x035b, 0x9cf: 0x49bd, 0x9d0: 0x49c3, 0x9d1: 0x49c9, - 0x9d2: 0x49cf, 0x9d3: 0x49d5, 0x9d4: 0x49db, 0x9d5: 0x49e1, 0x9d6: 0x49e7, 0x9d7: 0x49ed, - 0x9d8: 0x49f3, 0x9d9: 0x49f9, 0x9da: 0x49ff, 0x9db: 0x4a05, 0x9dc: 0x4a0b, 0x9dd: 0x4a11, - 0x9de: 0x4a17, 0x9df: 0x4a1d, 0x9e0: 0x4a23, 0x9e1: 0x4a29, 0x9e2: 0x4a2f, 0x9e3: 0x4a35, - 0x9e4: 0x03c3, 0x9e5: 0x035f, 0x9e6: 0x0363, 0x9e7: 0x03e7, 0x9e8: 0x03eb, 0x9e9: 0x03ef, - 0x9ea: 0x03f3, 0x9eb: 0x03f7, 0x9ec: 0x03fb, 0x9ed: 0x03ff, 0x9ee: 0x036b, 0x9ef: 0x0403, - 0x9f0: 0x0407, 0x9f1: 0x036f, 0x9f2: 0x0373, 0x9f3: 0x0377, 0x9f4: 0x037f, 0x9f5: 0x0383, - 0x9f6: 0x0387, 0x9f7: 0x038b, 0x9f8: 0x038f, 0x9f9: 0x0393, 0x9fa: 0x0397, 0x9fb: 0x039b, - 0x9fc: 0x039f, 0x9fd: 0x03a3, 0x9fe: 0x03a7, 0x9ff: 0x03ab, + 0x9c0: 0x4030, 0x9c1: 0xa000, 0x9c2: 0x4038, 0x9c4: 0xa000, 0x9c5: 0x4040, + 0x9c6: 0xa000, 0x9c7: 0x4048, 0x9c8: 0xa000, 0x9c9: 0x4050, + 0x9cf: 0xa000, 0x9d0: 0x4058, 0x9d1: 0x4060, + 0x9d2: 0xa000, 0x9d3: 0x4068, 0x9d4: 0x4070, 0x9d5: 0xa000, 0x9d6: 0x4078, 0x9d7: 0x4080, + 0x9d8: 0xa000, 0x9d9: 0x4088, 0x9da: 0x4090, 0x9db: 0xa000, 0x9dc: 0x4098, 0x9dd: 0x40a0, + 0x9ef: 0xa000, + 0x9f0: 0xa000, 0x9f1: 0xa000, 0x9f2: 0xa000, 0x9f4: 0x3fd8, + 0x9f7: 0x40a8, 0x9f8: 0x40b0, 0x9f9: 0x40b8, 0x9fa: 0x40c0, + 0x9fd: 0xa000, 0x9fe: 0x40c8, 0x9ff: 0x26c9, // Block 0x28, offset 0xa00 - 0xa00: 0x03af, 0xa01: 0x03b3, 0xa02: 0x040b, 0xa03: 0x040f, 0xa04: 0x03b7, 0xa05: 0x03bb, - 0xa06: 0x03bf, 0xa07: 0x03c7, 0xa08: 0x03cb, 0xa09: 0x03cf, 0xa0a: 0x03d3, 0xa0b: 0x03d7, - 0xa0c: 0x03db, 0xa0d: 0x03df, 0xa0e: 0x03e3, - 0xa12: 0x06bf, 0xa13: 0x071b, 0xa14: 0x06cb, 0xa15: 0x097b, 0xa16: 0x06cf, 0xa17: 0x06e7, - 0xa18: 0x06d3, 0xa19: 0x0f93, 0xa1a: 0x0707, 0xa1b: 0x06db, 0xa1c: 0x06c3, 0xa1d: 0x09ff, - 0xa1e: 0x098f, 0xa1f: 0x072f, + 0xa00: 0x0367, 0xa01: 0x032b, 0xa02: 0x032f, 0xa03: 0x0333, 0xa04: 0x037b, 0xa05: 0x0337, + 0xa06: 0x033b, 0xa07: 0x033f, 0xa08: 0x0343, 0xa09: 0x0347, 0xa0a: 0x034b, 0xa0b: 0x034f, + 0xa0c: 0x0353, 0xa0d: 0x0357, 0xa0e: 0x035b, 0xa0f: 0x49bd, 0xa10: 0x49c3, 0xa11: 0x49c9, + 0xa12: 0x49cf, 0xa13: 0x49d5, 0xa14: 0x49db, 0xa15: 0x49e1, 0xa16: 0x49e7, 0xa17: 0x49ed, + 0xa18: 0x49f3, 0xa19: 0x49f9, 0xa1a: 0x49ff, 0xa1b: 0x4a05, 0xa1c: 0x4a0b, 0xa1d: 0x4a11, + 0xa1e: 0x4a17, 0xa1f: 0x4a1d, 0xa20: 0x4a23, 0xa21: 0x4a29, 0xa22: 0x4a2f, 0xa23: 0x4a35, + 0xa24: 0x03c3, 0xa25: 0x035f, 0xa26: 0x0363, 0xa27: 0x03e7, 0xa28: 0x03eb, 0xa29: 0x03ef, + 0xa2a: 0x03f3, 0xa2b: 0x03f7, 0xa2c: 0x03fb, 0xa2d: 0x03ff, 0xa2e: 0x036b, 0xa2f: 0x0403, + 0xa30: 0x0407, 0xa31: 0x036f, 0xa32: 0x0373, 0xa33: 0x0377, 0xa34: 0x037f, 0xa35: 0x0383, + 0xa36: 0x0387, 0xa37: 0x038b, 0xa38: 0x038f, 0xa39: 0x0393, 0xa3a: 0x0397, 0xa3b: 0x039b, + 0xa3c: 0x039f, 0xa3d: 0x03a3, 0xa3e: 0x03a7, 0xa3f: 0x03ab, // Block 0x29, offset 0xa40 - 0xa40: 0x2054, 0xa41: 0x205a, 0xa42: 0x2060, 0xa43: 0x2066, 0xa44: 0x206c, 0xa45: 0x2072, - 0xa46: 0x2078, 0xa47: 0x207e, 0xa48: 0x2084, 0xa49: 0x208a, 0xa4a: 0x2090, 0xa4b: 0x2096, - 0xa4c: 0x209c, 0xa4d: 0x20a2, 0xa4e: 0x2726, 0xa4f: 0x272f, 0xa50: 0x2738, 0xa51: 0x2741, - 0xa52: 0x274a, 0xa53: 0x2753, 0xa54: 0x275c, 0xa55: 0x2765, 0xa56: 0x276e, 0xa57: 0x2780, - 0xa58: 0x2789, 0xa59: 0x2792, 0xa5a: 0x279b, 0xa5b: 0x27a4, 0xa5c: 0x2777, 0xa5d: 0x2bac, - 0xa5e: 0x2aed, 0xa60: 0x20a8, 0xa61: 0x20c0, 0xa62: 0x20b4, 0xa63: 0x2108, - 0xa64: 0x20c6, 0xa65: 0x20e4, 0xa66: 0x20ae, 0xa67: 0x20de, 0xa68: 0x20ba, 0xa69: 0x20f0, - 0xa6a: 0x2120, 0xa6b: 0x213e, 0xa6c: 0x2138, 0xa6d: 0x212c, 0xa6e: 0x217a, 0xa6f: 0x210e, - 0xa70: 0x211a, 0xa71: 0x2132, 0xa72: 0x2126, 0xa73: 0x2150, 0xa74: 0x20fc, 0xa75: 0x2144, - 0xa76: 0x216e, 0xa77: 0x2156, 0xa78: 0x20ea, 0xa79: 0x20cc, 0xa7a: 0x2102, 0xa7b: 0x2114, - 0xa7c: 0x214a, 0xa7d: 0x20d2, 0xa7e: 0x2174, 0xa7f: 0x20f6, + 0xa40: 0x03af, 0xa41: 0x03b3, 0xa42: 0x040b, 0xa43: 0x040f, 0xa44: 0x03b7, 0xa45: 0x03bb, + 0xa46: 0x03bf, 0xa47: 0x03c7, 0xa48: 0x03cb, 0xa49: 0x03cf, 0xa4a: 0x03d3, 0xa4b: 0x03d7, + 0xa4c: 0x03db, 0xa4d: 0x03df, 0xa4e: 0x03e3, + 0xa52: 0x06bf, 0xa53: 0x071b, 0xa54: 0x06cb, 0xa55: 0x097b, 0xa56: 0x06cf, 0xa57: 0x06e7, + 0xa58: 0x06d3, 0xa59: 0x0f93, 0xa5a: 0x0707, 0xa5b: 0x06db, 0xa5c: 0x06c3, 0xa5d: 0x09ff, + 0xa5e: 0x098f, 0xa5f: 0x072f, // Block 0x2a, offset 0xa80 - 0xa80: 0x215c, 0xa81: 0x20d8, 0xa82: 0x2162, 0xa83: 0x2168, 0xa84: 0x092f, 0xa85: 0x0b03, - 0xa86: 0x0ca7, 0xa87: 0x10c7, - 0xa90: 0x1bc4, 0xa91: 0x18a9, - 0xa92: 0x18ac, 0xa93: 0x18af, 0xa94: 0x18b2, 0xa95: 0x18b5, 0xa96: 0x18b8, 0xa97: 0x18bb, - 0xa98: 0x18be, 0xa99: 0x18c1, 0xa9a: 0x18ca, 0xa9b: 0x18cd, 0xa9c: 0x18d0, 0xa9d: 0x18d3, - 0xa9e: 0x18d6, 0xa9f: 0x18d9, 0xaa0: 0x0313, 0xaa1: 0x031b, 0xaa2: 0x031f, 0xaa3: 0x0327, - 0xaa4: 0x032b, 0xaa5: 0x032f, 0xaa6: 0x0337, 0xaa7: 0x033f, 0xaa8: 0x0343, 0xaa9: 0x034b, - 0xaaa: 0x034f, 0xaab: 0x0353, 0xaac: 0x0357, 0xaad: 0x035b, 0xaae: 0x2e18, 0xaaf: 0x2e20, - 0xab0: 0x2e28, 0xab1: 0x2e30, 0xab2: 0x2e38, 0xab3: 0x2e40, 0xab4: 0x2e48, 0xab5: 0x2e50, - 0xab6: 0x2e60, 0xab7: 0x2e68, 0xab8: 0x2e70, 0xab9: 0x2e78, 0xaba: 0x2e80, 0xabb: 0x2e88, - 0xabc: 0x2ed3, 0xabd: 0x2e9b, 0xabe: 0x2e58, + 0xa80: 0x2054, 0xa81: 0x205a, 0xa82: 0x2060, 0xa83: 0x2066, 0xa84: 0x206c, 0xa85: 0x2072, + 0xa86: 0x2078, 0xa87: 0x207e, 0xa88: 0x2084, 0xa89: 0x208a, 0xa8a: 0x2090, 0xa8b: 0x2096, + 0xa8c: 0x209c, 0xa8d: 0x20a2, 0xa8e: 0x2726, 0xa8f: 0x272f, 0xa90: 0x2738, 0xa91: 0x2741, + 0xa92: 0x274a, 0xa93: 0x2753, 0xa94: 0x275c, 0xa95: 0x2765, 0xa96: 0x276e, 0xa97: 0x2780, + 0xa98: 0x2789, 0xa99: 0x2792, 0xa9a: 0x279b, 0xa9b: 0x27a4, 0xa9c: 0x2777, 0xa9d: 0x2bac, + 0xa9e: 0x2aed, 0xaa0: 0x20a8, 0xaa1: 0x20c0, 0xaa2: 0x20b4, 0xaa3: 0x2108, + 0xaa4: 0x20c6, 0xaa5: 0x20e4, 0xaa6: 0x20ae, 0xaa7: 0x20de, 0xaa8: 0x20ba, 0xaa9: 0x20f0, + 0xaaa: 0x2120, 0xaab: 0x213e, 0xaac: 0x2138, 0xaad: 0x212c, 0xaae: 0x217a, 0xaaf: 0x210e, + 0xab0: 0x211a, 0xab1: 0x2132, 0xab2: 0x2126, 0xab3: 0x2150, 0xab4: 0x20fc, 0xab5: 0x2144, + 0xab6: 0x216e, 0xab7: 0x2156, 0xab8: 0x20ea, 0xab9: 0x20cc, 0xaba: 0x2102, 0xabb: 0x2114, + 0xabc: 0x214a, 0xabd: 0x20d2, 0xabe: 0x2174, 0xabf: 0x20f6, // Block 0x2b, offset 0xac0 - 0xac0: 0x06bf, 0xac1: 0x071b, 0xac2: 0x06cb, 0xac3: 0x097b, 0xac4: 0x071f, 0xac5: 0x07af, - 0xac6: 0x06c7, 0xac7: 0x07ab, 0xac8: 0x070b, 0xac9: 0x0887, 0xaca: 0x0d07, 0xacb: 0x0e8f, - 0xacc: 0x0dd7, 0xacd: 0x0d1b, 0xace: 0x145f, 0xacf: 0x098b, 0xad0: 0x0ccf, 0xad1: 0x0d4b, - 0xad2: 0x0d0b, 0xad3: 0x104b, 0xad4: 0x08fb, 0xad5: 0x0f03, 0xad6: 0x1387, 0xad7: 0x105f, - 0xad8: 0x0843, 0xad9: 0x108f, 0xada: 0x0f9b, 0xadb: 0x0a17, 0xadc: 0x140f, 0xadd: 0x077f, - 0xade: 0x08ab, 0xadf: 0x0df7, 0xae0: 0x1527, 0xae1: 0x0743, 0xae2: 0x07d3, 0xae3: 0x0d9b, - 0xae4: 0x06cf, 0xae5: 0x06e7, 0xae6: 0x06d3, 0xae7: 0x0adb, 0xae8: 0x08ef, 0xae9: 0x087f, - 0xaea: 0x0a57, 0xaeb: 0x0a4b, 0xaec: 0x0feb, 0xaed: 0x073f, 0xaee: 0x139b, 0xaef: 0x089b, - 0xaf0: 0x09f3, 0xaf1: 0x18dc, 0xaf2: 0x18df, 0xaf3: 0x18e2, 0xaf4: 0x18e5, 0xaf5: 0x18ee, - 0xaf6: 0x18f1, 0xaf7: 0x18f4, 0xaf8: 0x18f7, 0xaf9: 0x18fa, 0xafa: 0x18fd, 0xafb: 0x1900, - 0xafc: 0x1903, 0xafd: 0x1906, 0xafe: 0x1909, 0xaff: 0x1912, + 0xac0: 0x215c, 0xac1: 0x20d8, 0xac2: 0x2162, 0xac3: 0x2168, 0xac4: 0x092f, 0xac5: 0x0b03, + 0xac6: 0x0ca7, 0xac7: 0x10c7, + 0xad0: 0x1bc4, 0xad1: 0x18a9, + 0xad2: 0x18ac, 0xad3: 0x18af, 0xad4: 0x18b2, 0xad5: 0x18b5, 0xad6: 0x18b8, 0xad7: 0x18bb, + 0xad8: 0x18be, 0xad9: 0x18c1, 0xada: 0x18ca, 0xadb: 0x18cd, 0xadc: 0x18d0, 0xadd: 0x18d3, + 0xade: 0x18d6, 0xadf: 0x18d9, 0xae0: 0x0313, 0xae1: 0x031b, 0xae2: 0x031f, 0xae3: 0x0327, + 0xae4: 0x032b, 0xae5: 0x032f, 0xae6: 0x0337, 0xae7: 0x033f, 0xae8: 0x0343, 0xae9: 0x034b, + 0xaea: 0x034f, 0xaeb: 0x0353, 0xaec: 0x0357, 0xaed: 0x035b, 0xaee: 0x2e18, 0xaef: 0x2e20, + 0xaf0: 0x2e28, 0xaf1: 0x2e30, 0xaf2: 0x2e38, 0xaf3: 0x2e40, 0xaf4: 0x2e48, 0xaf5: 0x2e50, + 0xaf6: 0x2e60, 0xaf7: 0x2e68, 0xaf8: 0x2e70, 0xaf9: 0x2e78, 0xafa: 0x2e80, 0xafb: 0x2e88, + 0xafc: 0x2ed3, 0xafd: 0x2e9b, 0xafe: 0x2e58, // Block 0x2c, offset 0xb00 - 0xb00: 0x1cc6, 0xb01: 0x1cd5, 0xb02: 0x1ce4, 0xb03: 0x1cf3, 0xb04: 0x1d02, 0xb05: 0x1d11, - 0xb06: 0x1d20, 0xb07: 0x1d2f, 0xb08: 0x1d3e, 0xb09: 0x218c, 0xb0a: 0x219e, 0xb0b: 0x21b0, - 0xb0c: 0x1954, 0xb0d: 0x1c04, 0xb0e: 0x19d2, 0xb0f: 0x1ba8, 0xb10: 0x04cb, 0xb11: 0x04d3, - 0xb12: 0x04db, 0xb13: 0x04e3, 0xb14: 0x04eb, 0xb15: 0x04ef, 0xb16: 0x04f3, 0xb17: 0x04f7, - 0xb18: 0x04fb, 0xb19: 0x04ff, 0xb1a: 0x0503, 0xb1b: 0x0507, 0xb1c: 0x050b, 0xb1d: 0x050f, - 0xb1e: 0x0513, 0xb1f: 0x0517, 0xb20: 0x051b, 0xb21: 0x0523, 0xb22: 0x0527, 0xb23: 0x052b, - 0xb24: 0x052f, 0xb25: 0x0533, 0xb26: 0x0537, 0xb27: 0x053b, 0xb28: 0x053f, 0xb29: 0x0543, - 0xb2a: 0x0547, 0xb2b: 0x054b, 0xb2c: 0x054f, 0xb2d: 0x0553, 0xb2e: 0x0557, 0xb2f: 0x055b, - 0xb30: 0x055f, 0xb31: 0x0563, 0xb32: 0x0567, 0xb33: 0x056f, 0xb34: 0x0577, 0xb35: 0x057f, - 0xb36: 0x0583, 0xb37: 0x0587, 0xb38: 0x058b, 0xb39: 0x058f, 0xb3a: 0x0593, 0xb3b: 0x0597, - 0xb3c: 0x059b, 0xb3d: 0x059f, 0xb3e: 0x05a3, + 0xb00: 0x06bf, 0xb01: 0x071b, 0xb02: 0x06cb, 0xb03: 0x097b, 0xb04: 0x071f, 0xb05: 0x07af, + 0xb06: 0x06c7, 0xb07: 0x07ab, 0xb08: 0x070b, 0xb09: 0x0887, 0xb0a: 0x0d07, 0xb0b: 0x0e8f, + 0xb0c: 0x0dd7, 0xb0d: 0x0d1b, 0xb0e: 0x145f, 0xb0f: 0x098b, 0xb10: 0x0ccf, 0xb11: 0x0d4b, + 0xb12: 0x0d0b, 0xb13: 0x104b, 0xb14: 0x08fb, 0xb15: 0x0f03, 0xb16: 0x1387, 0xb17: 0x105f, + 0xb18: 0x0843, 0xb19: 0x108f, 0xb1a: 0x0f9b, 0xb1b: 0x0a17, 0xb1c: 0x140f, 0xb1d: 0x077f, + 0xb1e: 0x08ab, 0xb1f: 0x0df7, 0xb20: 0x1527, 0xb21: 0x0743, 0xb22: 0x07d3, 0xb23: 0x0d9b, + 0xb24: 0x06cf, 0xb25: 0x06e7, 0xb26: 0x06d3, 0xb27: 0x0adb, 0xb28: 0x08ef, 0xb29: 0x087f, + 0xb2a: 0x0a57, 0xb2b: 0x0a4b, 0xb2c: 0x0feb, 0xb2d: 0x073f, 0xb2e: 0x139b, 0xb2f: 0x089b, + 0xb30: 0x09f3, 0xb31: 0x18dc, 0xb32: 0x18df, 0xb33: 0x18e2, 0xb34: 0x18e5, 0xb35: 0x18ee, + 0xb36: 0x18f1, 0xb37: 0x18f4, 0xb38: 0x18f7, 0xb39: 0x18fa, 0xb3a: 0x18fd, 0xb3b: 0x1900, + 0xb3c: 0x1903, 0xb3d: 0x1906, 0xb3e: 0x1909, 0xb3f: 0x1912, // Block 0x2d, offset 0xb40 - 0xb40: 0x2b0c, 0xb41: 0x29a8, 0xb42: 0x2b1c, 0xb43: 0x2880, 0xb44: 0x2ee4, 0xb45: 0x288a, - 0xb46: 0x2894, 0xb47: 0x2f28, 0xb48: 0x29b5, 0xb49: 0x289e, 0xb4a: 0x28a8, 0xb4b: 0x28b2, - 0xb4c: 0x29dc, 0xb4d: 0x29e9, 0xb4e: 0x29c2, 0xb4f: 0x29cf, 0xb50: 0x2ea9, 0xb51: 0x29f6, - 0xb52: 0x2a03, 0xb53: 0x2bbe, 0xb54: 0x26bb, 0xb55: 0x2bd1, 0xb56: 0x2be4, 0xb57: 0x2b2c, - 0xb58: 0x2a10, 0xb59: 0x2bf7, 0xb5a: 0x2c0a, 0xb5b: 0x2a1d, 0xb5c: 0x28bc, 0xb5d: 0x28c6, - 0xb5e: 0x2eb7, 0xb5f: 0x2a2a, 0xb60: 0x2b3c, 0xb61: 0x2ef5, 0xb62: 0x28d0, 0xb63: 0x28da, - 0xb64: 0x2a37, 0xb65: 0x28e4, 0xb66: 0x28ee, 0xb67: 0x26d0, 0xb68: 0x26d7, 0xb69: 0x28f8, - 0xb6a: 0x2902, 0xb6b: 0x2c1d, 0xb6c: 0x2a44, 0xb6d: 0x2b4c, 0xb6e: 0x2c30, 0xb6f: 0x2a51, - 0xb70: 0x2916, 0xb71: 0x290c, 0xb72: 0x2f3c, 0xb73: 0x2a5e, 0xb74: 0x2c43, 0xb75: 0x2920, - 0xb76: 0x2b5c, 0xb77: 0x292a, 0xb78: 0x2a78, 0xb79: 0x2934, 0xb7a: 0x2a85, 0xb7b: 0x2f06, - 0xb7c: 0x2a6b, 0xb7d: 0x2b6c, 0xb7e: 0x2a92, 0xb7f: 0x26de, + 0xb40: 0x1cc6, 0xb41: 0x1cd5, 0xb42: 0x1ce4, 0xb43: 0x1cf3, 0xb44: 0x1d02, 0xb45: 0x1d11, + 0xb46: 0x1d20, 0xb47: 0x1d2f, 0xb48: 0x1d3e, 0xb49: 0x218c, 0xb4a: 0x219e, 0xb4b: 0x21b0, + 0xb4c: 0x1954, 0xb4d: 0x1c04, 0xb4e: 0x19d2, 0xb4f: 0x1ba8, 0xb50: 0x04cb, 0xb51: 0x04d3, + 0xb52: 0x04db, 0xb53: 0x04e3, 0xb54: 0x04eb, 0xb55: 0x04ef, 0xb56: 0x04f3, 0xb57: 0x04f7, + 0xb58: 0x04fb, 0xb59: 0x04ff, 0xb5a: 0x0503, 0xb5b: 0x0507, 0xb5c: 0x050b, 0xb5d: 0x050f, + 0xb5e: 0x0513, 0xb5f: 0x0517, 0xb60: 0x051b, 0xb61: 0x0523, 0xb62: 0x0527, 0xb63: 0x052b, + 0xb64: 0x052f, 0xb65: 0x0533, 0xb66: 0x0537, 0xb67: 0x053b, 0xb68: 0x053f, 0xb69: 0x0543, + 0xb6a: 0x0547, 0xb6b: 0x054b, 0xb6c: 0x054f, 0xb6d: 0x0553, 0xb6e: 0x0557, 0xb6f: 0x055b, + 0xb70: 0x055f, 0xb71: 0x0563, 0xb72: 0x0567, 0xb73: 0x056f, 0xb74: 0x0577, 0xb75: 0x057f, + 0xb76: 0x0583, 0xb77: 0x0587, 0xb78: 0x058b, 0xb79: 0x058f, 0xb7a: 0x0593, 0xb7b: 0x0597, + 0xb7c: 0x059b, 0xb7d: 0x059f, 0xb7e: 0x05a3, // Block 0x2e, offset 0xb80 - 0xb80: 0x2f17, 0xb81: 0x293e, 0xb82: 0x2948, 0xb83: 0x2a9f, 0xb84: 0x2952, 0xb85: 0x295c, - 0xb86: 0x2966, 0xb87: 0x2b7c, 0xb88: 0x2aac, 0xb89: 0x26e5, 0xb8a: 0x2c56, 0xb8b: 0x2e90, - 0xb8c: 0x2b8c, 0xb8d: 0x2ab9, 0xb8e: 0x2ec5, 0xb8f: 0x2970, 0xb90: 0x297a, 0xb91: 0x2ac6, - 0xb92: 0x26ec, 0xb93: 0x2ad3, 0xb94: 0x2b9c, 0xb95: 0x26f3, 0xb96: 0x2c69, 0xb97: 0x2984, - 0xb98: 0x1cb7, 0xb99: 0x1ccb, 0xb9a: 0x1cda, 0xb9b: 0x1ce9, 0xb9c: 0x1cf8, 0xb9d: 0x1d07, - 0xb9e: 0x1d16, 0xb9f: 0x1d25, 0xba0: 0x1d34, 0xba1: 0x1d43, 0xba2: 0x2192, 0xba3: 0x21a4, - 0xba4: 0x21b6, 0xba5: 0x21c2, 0xba6: 0x21ce, 0xba7: 0x21da, 0xba8: 0x21e6, 0xba9: 0x21f2, - 0xbaa: 0x21fe, 0xbab: 0x220a, 0xbac: 0x2246, 0xbad: 0x2252, 0xbae: 0x225e, 0xbaf: 0x226a, - 0xbb0: 0x2276, 0xbb1: 0x1c14, 0xbb2: 0x19c6, 0xbb3: 0x1936, 0xbb4: 0x1be4, 0xbb5: 0x1a47, - 0xbb6: 0x1a56, 0xbb7: 0x19cc, 0xbb8: 0x1bfc, 0xbb9: 0x1c00, 0xbba: 0x1960, 0xbbb: 0x2701, - 0xbbc: 0x270f, 0xbbd: 0x26fa, 0xbbe: 0x2708, 0xbbf: 0x2ae0, + 0xb80: 0x2b0c, 0xb81: 0x29a8, 0xb82: 0x2b1c, 0xb83: 0x2880, 0xb84: 0x2ee4, 0xb85: 0x288a, + 0xb86: 0x2894, 0xb87: 0x2f28, 0xb88: 0x29b5, 0xb89: 0x289e, 0xb8a: 0x28a8, 0xb8b: 0x28b2, + 0xb8c: 0x29dc, 0xb8d: 0x29e9, 0xb8e: 0x29c2, 0xb8f: 0x29cf, 0xb90: 0x2ea9, 0xb91: 0x29f6, + 0xb92: 0x2a03, 0xb93: 0x2bbe, 0xb94: 0x26bb, 0xb95: 0x2bd1, 0xb96: 0x2be4, 0xb97: 0x2b2c, + 0xb98: 0x2a10, 0xb99: 0x2bf7, 0xb9a: 0x2c0a, 0xb9b: 0x2a1d, 0xb9c: 0x28bc, 0xb9d: 0x28c6, + 0xb9e: 0x2eb7, 0xb9f: 0x2a2a, 0xba0: 0x2b3c, 0xba1: 0x2ef5, 0xba2: 0x28d0, 0xba3: 0x28da, + 0xba4: 0x2a37, 0xba5: 0x28e4, 0xba6: 0x28ee, 0xba7: 0x26d0, 0xba8: 0x26d7, 0xba9: 0x28f8, + 0xbaa: 0x2902, 0xbab: 0x2c1d, 0xbac: 0x2a44, 0xbad: 0x2b4c, 0xbae: 0x2c30, 0xbaf: 0x2a51, + 0xbb0: 0x2916, 0xbb1: 0x290c, 0xbb2: 0x2f3c, 0xbb3: 0x2a5e, 0xbb4: 0x2c43, 0xbb5: 0x2920, + 0xbb6: 0x2b5c, 0xbb7: 0x292a, 0xbb8: 0x2a78, 0xbb9: 0x2934, 0xbba: 0x2a85, 0xbbb: 0x2f06, + 0xbbc: 0x2a6b, 0xbbd: 0x2b6c, 0xbbe: 0x2a92, 0xbbf: 0x26de, // Block 0x2f, offset 0xbc0 - 0xbc0: 0x1a4a, 0xbc1: 0x1a32, 0xbc2: 0x1c60, 0xbc3: 0x1a1a, 0xbc4: 0x19f3, 0xbc5: 0x1969, - 0xbc6: 0x1978, 0xbc7: 0x1948, 0xbc8: 0x1bf0, 0xbc9: 0x1d52, 0xbca: 0x1a4d, 0xbcb: 0x1a35, - 0xbcc: 0x1c64, 0xbcd: 0x1c70, 0xbce: 0x1a26, 0xbcf: 0x19fc, 0xbd0: 0x1957, 0xbd1: 0x1c1c, - 0xbd2: 0x1bb0, 0xbd3: 0x1b9c, 0xbd4: 0x1bcc, 0xbd5: 0x1c74, 0xbd6: 0x1a29, 0xbd7: 0x19c9, - 0xbd8: 0x19ff, 0xbd9: 0x19de, 0xbda: 0x1a41, 0xbdb: 0x1c78, 0xbdc: 0x1a2c, 0xbdd: 0x19c0, - 0xbde: 0x1a02, 0xbdf: 0x1c3c, 0xbe0: 0x1bf4, 0xbe1: 0x1a14, 0xbe2: 0x1c24, 0xbe3: 0x1c40, - 0xbe4: 0x1bf8, 0xbe5: 0x1a17, 0xbe6: 0x1c28, 0xbe7: 0x22e8, 0xbe8: 0x22fc, 0xbe9: 0x1996, - 0xbea: 0x1c20, 0xbeb: 0x1bb4, 0xbec: 0x1ba0, 0xbed: 0x1c48, 0xbee: 0x2716, 0xbef: 0x27ad, - 0xbf0: 0x1a59, 0xbf1: 0x1a44, 0xbf2: 0x1c7c, 0xbf3: 0x1a2f, 0xbf4: 0x1a50, 0xbf5: 0x1a38, - 0xbf6: 0x1c68, 0xbf7: 0x1a1d, 0xbf8: 0x19f6, 0xbf9: 0x1981, 0xbfa: 0x1a53, 0xbfb: 0x1a3b, - 0xbfc: 0x1c6c, 0xbfd: 0x1a20, 0xbfe: 0x19f9, 0xbff: 0x1984, + 0xbc0: 0x2f17, 0xbc1: 0x293e, 0xbc2: 0x2948, 0xbc3: 0x2a9f, 0xbc4: 0x2952, 0xbc5: 0x295c, + 0xbc6: 0x2966, 0xbc7: 0x2b7c, 0xbc8: 0x2aac, 0xbc9: 0x26e5, 0xbca: 0x2c56, 0xbcb: 0x2e90, + 0xbcc: 0x2b8c, 0xbcd: 0x2ab9, 0xbce: 0x2ec5, 0xbcf: 0x2970, 0xbd0: 0x297a, 0xbd1: 0x2ac6, + 0xbd2: 0x26ec, 0xbd3: 0x2ad3, 0xbd4: 0x2b9c, 0xbd5: 0x26f3, 0xbd6: 0x2c69, 0xbd7: 0x2984, + 0xbd8: 0x1cb7, 0xbd9: 0x1ccb, 0xbda: 0x1cda, 0xbdb: 0x1ce9, 0xbdc: 0x1cf8, 0xbdd: 0x1d07, + 0xbde: 0x1d16, 0xbdf: 0x1d25, 0xbe0: 0x1d34, 0xbe1: 0x1d43, 0xbe2: 0x2192, 0xbe3: 0x21a4, + 0xbe4: 0x21b6, 0xbe5: 0x21c2, 0xbe6: 0x21ce, 0xbe7: 0x21da, 0xbe8: 0x21e6, 0xbe9: 0x21f2, + 0xbea: 0x21fe, 0xbeb: 0x220a, 0xbec: 0x2246, 0xbed: 0x2252, 0xbee: 0x225e, 0xbef: 0x226a, + 0xbf0: 0x2276, 0xbf1: 0x1c14, 0xbf2: 0x19c6, 0xbf3: 0x1936, 0xbf4: 0x1be4, 0xbf5: 0x1a47, + 0xbf6: 0x1a56, 0xbf7: 0x19cc, 0xbf8: 0x1bfc, 0xbf9: 0x1c00, 0xbfa: 0x1960, 0xbfb: 0x2701, + 0xbfc: 0x270f, 0xbfd: 0x26fa, 0xbfe: 0x2708, 0xbff: 0x2ae0, // Block 0x30, offset 0xc00 - 0xc00: 0x1c2c, 0xc01: 0x1bb8, 0xc02: 0x1d4d, 0xc03: 0x1939, 0xc04: 0x19ba, 0xc05: 0x19bd, - 0xc06: 0x22f5, 0xc07: 0x1b94, 0xc08: 0x19c3, 0xc09: 0x194b, 0xc0a: 0x19e1, 0xc0b: 0x194e, - 0xc0c: 0x19ea, 0xc0d: 0x196c, 0xc0e: 0x196f, 0xc0f: 0x1a05, 0xc10: 0x1a0b, 0xc11: 0x1a0e, - 0xc12: 0x1c30, 0xc13: 0x1a11, 0xc14: 0x1a23, 0xc15: 0x1c38, 0xc16: 0x1c44, 0xc17: 0x1990, - 0xc18: 0x1d57, 0xc19: 0x1bbc, 0xc1a: 0x1993, 0xc1b: 0x1a5c, 0xc1c: 0x19a5, 0xc1d: 0x19b4, - 0xc1e: 0x22e2, 0xc1f: 0x22dc, 0xc20: 0x1cc1, 0xc21: 0x1cd0, 0xc22: 0x1cdf, 0xc23: 0x1cee, - 0xc24: 0x1cfd, 0xc25: 0x1d0c, 0xc26: 0x1d1b, 0xc27: 0x1d2a, 0xc28: 0x1d39, 0xc29: 0x2186, - 0xc2a: 0x2198, 0xc2b: 0x21aa, 0xc2c: 0x21bc, 0xc2d: 0x21c8, 0xc2e: 0x21d4, 0xc2f: 0x21e0, - 0xc30: 0x21ec, 0xc31: 0x21f8, 0xc32: 0x2204, 0xc33: 0x2240, 0xc34: 0x224c, 0xc35: 0x2258, - 0xc36: 0x2264, 0xc37: 0x2270, 0xc38: 0x227c, 0xc39: 0x2282, 0xc3a: 0x2288, 0xc3b: 0x228e, - 0xc3c: 0x2294, 0xc3d: 0x22a6, 0xc3e: 0x22ac, 0xc3f: 0x1c10, + 0xc00: 0x1a4a, 0xc01: 0x1a32, 0xc02: 0x1c60, 0xc03: 0x1a1a, 0xc04: 0x19f3, 0xc05: 0x1969, + 0xc06: 0x1978, 0xc07: 0x1948, 0xc08: 0x1bf0, 0xc09: 0x1d52, 0xc0a: 0x1a4d, 0xc0b: 0x1a35, + 0xc0c: 0x1c64, 0xc0d: 0x1c70, 0xc0e: 0x1a26, 0xc0f: 0x19fc, 0xc10: 0x1957, 0xc11: 0x1c1c, + 0xc12: 0x1bb0, 0xc13: 0x1b9c, 0xc14: 0x1bcc, 0xc15: 0x1c74, 0xc16: 0x1a29, 0xc17: 0x19c9, + 0xc18: 0x19ff, 0xc19: 0x19de, 0xc1a: 0x1a41, 0xc1b: 0x1c78, 0xc1c: 0x1a2c, 0xc1d: 0x19c0, + 0xc1e: 0x1a02, 0xc1f: 0x1c3c, 0xc20: 0x1bf4, 0xc21: 0x1a14, 0xc22: 0x1c24, 0xc23: 0x1c40, + 0xc24: 0x1bf8, 0xc25: 0x1a17, 0xc26: 0x1c28, 0xc27: 0x22e8, 0xc28: 0x22fc, 0xc29: 0x1996, + 0xc2a: 0x1c20, 0xc2b: 0x1bb4, 0xc2c: 0x1ba0, 0xc2d: 0x1c48, 0xc2e: 0x2716, 0xc2f: 0x27ad, + 0xc30: 0x1a59, 0xc31: 0x1a44, 0xc32: 0x1c7c, 0xc33: 0x1a2f, 0xc34: 0x1a50, 0xc35: 0x1a38, + 0xc36: 0x1c68, 0xc37: 0x1a1d, 0xc38: 0x19f6, 0xc39: 0x1981, 0xc3a: 0x1a53, 0xc3b: 0x1a3b, + 0xc3c: 0x1c6c, 0xc3d: 0x1a20, 0xc3e: 0x19f9, 0xc3f: 0x1984, // Block 0x31, offset 0xc40 - 0xc40: 0x1377, 0xc41: 0x0cfb, 0xc42: 0x13d3, 0xc43: 0x139f, 0xc44: 0x0e57, 0xc45: 0x06eb, - 0xc46: 0x08df, 0xc47: 0x162b, 0xc48: 0x162b, 0xc49: 0x0a0b, 0xc4a: 0x145f, 0xc4b: 0x0943, - 0xc4c: 0x0a07, 0xc4d: 0x0bef, 0xc4e: 0x0fcf, 0xc4f: 0x115f, 0xc50: 0x1297, 0xc51: 0x12d3, - 0xc52: 0x1307, 0xc53: 0x141b, 0xc54: 0x0d73, 0xc55: 0x0dff, 0xc56: 0x0eab, 0xc57: 0x0f43, - 0xc58: 0x125f, 0xc59: 0x1447, 0xc5a: 0x1573, 0xc5b: 0x070f, 0xc5c: 0x08b3, 0xc5d: 0x0d87, - 0xc5e: 0x0ecf, 0xc5f: 0x1293, 0xc60: 0x15c3, 0xc61: 0x0ab3, 0xc62: 0x0e77, 0xc63: 0x1283, - 0xc64: 0x1317, 0xc65: 0x0c23, 0xc66: 0x11bb, 0xc67: 0x12df, 0xc68: 0x0b1f, 0xc69: 0x0d0f, - 0xc6a: 0x0e17, 0xc6b: 0x0f1b, 0xc6c: 0x1427, 0xc6d: 0x074f, 0xc6e: 0x07e7, 0xc6f: 0x0853, - 0xc70: 0x0c8b, 0xc71: 0x0d7f, 0xc72: 0x0ecb, 0xc73: 0x0fef, 0xc74: 0x1177, 0xc75: 0x128b, - 0xc76: 0x12a3, 0xc77: 0x13c7, 0xc78: 0x14ef, 0xc79: 0x15a3, 0xc7a: 0x15bf, 0xc7b: 0x102b, - 0xc7c: 0x106b, 0xc7d: 0x1123, 0xc7e: 0x1243, 0xc7f: 0x147b, + 0xc40: 0x1c2c, 0xc41: 0x1bb8, 0xc42: 0x1d4d, 0xc43: 0x1939, 0xc44: 0x19ba, 0xc45: 0x19bd, + 0xc46: 0x22f5, 0xc47: 0x1b94, 0xc48: 0x19c3, 0xc49: 0x194b, 0xc4a: 0x19e1, 0xc4b: 0x194e, + 0xc4c: 0x19ea, 0xc4d: 0x196c, 0xc4e: 0x196f, 0xc4f: 0x1a05, 0xc50: 0x1a0b, 0xc51: 0x1a0e, + 0xc52: 0x1c30, 0xc53: 0x1a11, 0xc54: 0x1a23, 0xc55: 0x1c38, 0xc56: 0x1c44, 0xc57: 0x1990, + 0xc58: 0x1d57, 0xc59: 0x1bbc, 0xc5a: 0x1993, 0xc5b: 0x1a5c, 0xc5c: 0x19a5, 0xc5d: 0x19b4, + 0xc5e: 0x22e2, 0xc5f: 0x22dc, 0xc60: 0x1cc1, 0xc61: 0x1cd0, 0xc62: 0x1cdf, 0xc63: 0x1cee, + 0xc64: 0x1cfd, 0xc65: 0x1d0c, 0xc66: 0x1d1b, 0xc67: 0x1d2a, 0xc68: 0x1d39, 0xc69: 0x2186, + 0xc6a: 0x2198, 0xc6b: 0x21aa, 0xc6c: 0x21bc, 0xc6d: 0x21c8, 0xc6e: 0x21d4, 0xc6f: 0x21e0, + 0xc70: 0x21ec, 0xc71: 0x21f8, 0xc72: 0x2204, 0xc73: 0x2240, 0xc74: 0x224c, 0xc75: 0x2258, + 0xc76: 0x2264, 0xc77: 0x2270, 0xc78: 0x227c, 0xc79: 0x2282, 0xc7a: 0x2288, 0xc7b: 0x228e, + 0xc7c: 0x2294, 0xc7d: 0x22a6, 0xc7e: 0x22ac, 0xc7f: 0x1c10, // Block 0x32, offset 0xc80 - 0xc80: 0x15cb, 0xc81: 0x134b, 0xc82: 0x09c7, 0xc83: 0x0b3b, 0xc84: 0x10db, 0xc85: 0x119b, - 0xc86: 0x0eff, 0xc87: 0x1033, 0xc88: 0x1397, 0xc89: 0x14e7, 0xc8a: 0x09c3, 0xc8b: 0x0a8f, - 0xc8c: 0x0d77, 0xc8d: 0x0e2b, 0xc8e: 0x0e5f, 0xc8f: 0x1113, 0xc90: 0x113b, 0xc91: 0x14a7, - 0xc92: 0x084f, 0xc93: 0x11a7, 0xc94: 0x07f3, 0xc95: 0x07ef, 0xc96: 0x1097, 0xc97: 0x1127, - 0xc98: 0x125b, 0xc99: 0x14af, 0xc9a: 0x1367, 0xc9b: 0x0c27, 0xc9c: 0x0d73, 0xc9d: 0x1357, - 0xc9e: 0x06f7, 0xc9f: 0x0a63, 0xca0: 0x0b93, 0xca1: 0x0f2f, 0xca2: 0x0faf, 0xca3: 0x0873, - 0xca4: 0x103b, 0xca5: 0x075f, 0xca6: 0x0b77, 0xca7: 0x06d7, 0xca8: 0x0deb, 0xca9: 0x0ca3, - 0xcaa: 0x110f, 0xcab: 0x08c7, 0xcac: 0x09b3, 0xcad: 0x0ffb, 0xcae: 0x1263, 0xcaf: 0x133b, - 0xcb0: 0x0db7, 0xcb1: 0x13f7, 0xcb2: 0x0de3, 0xcb3: 0x0c37, 0xcb4: 0x121b, 0xcb5: 0x0c57, - 0xcb6: 0x0fab, 0xcb7: 0x072b, 0xcb8: 0x07a7, 0xcb9: 0x07eb, 0xcba: 0x0d53, 0xcbb: 0x10fb, - 0xcbc: 0x11f3, 0xcbd: 0x1347, 0xcbe: 0x145b, 0xcbf: 0x085b, + 0xc80: 0x1377, 0xc81: 0x0cfb, 0xc82: 0x13d3, 0xc83: 0x139f, 0xc84: 0x0e57, 0xc85: 0x06eb, + 0xc86: 0x08df, 0xc87: 0x162b, 0xc88: 0x162b, 0xc89: 0x0a0b, 0xc8a: 0x145f, 0xc8b: 0x0943, + 0xc8c: 0x0a07, 0xc8d: 0x0bef, 0xc8e: 0x0fcf, 0xc8f: 0x115f, 0xc90: 0x1297, 0xc91: 0x12d3, + 0xc92: 0x1307, 0xc93: 0x141b, 0xc94: 0x0d73, 0xc95: 0x0dff, 0xc96: 0x0eab, 0xc97: 0x0f43, + 0xc98: 0x125f, 0xc99: 0x1447, 0xc9a: 0x1573, 0xc9b: 0x070f, 0xc9c: 0x08b3, 0xc9d: 0x0d87, + 0xc9e: 0x0ecf, 0xc9f: 0x1293, 0xca0: 0x15c3, 0xca1: 0x0ab3, 0xca2: 0x0e77, 0xca3: 0x1283, + 0xca4: 0x1317, 0xca5: 0x0c23, 0xca6: 0x11bb, 0xca7: 0x12df, 0xca8: 0x0b1f, 0xca9: 0x0d0f, + 0xcaa: 0x0e17, 0xcab: 0x0f1b, 0xcac: 0x1427, 0xcad: 0x074f, 0xcae: 0x07e7, 0xcaf: 0x0853, + 0xcb0: 0x0c8b, 0xcb1: 0x0d7f, 0xcb2: 0x0ecb, 0xcb3: 0x0fef, 0xcb4: 0x1177, 0xcb5: 0x128b, + 0xcb6: 0x12a3, 0xcb7: 0x13c7, 0xcb8: 0x14ef, 0xcb9: 0x15a3, 0xcba: 0x15bf, 0xcbb: 0x102b, + 0xcbc: 0x106b, 0xcbd: 0x1123, 0xcbe: 0x1243, 0xcbf: 0x147b, // Block 0x33, offset 0xcc0 - 0xcc0: 0x090f, 0xcc1: 0x0a17, 0xcc2: 0x0b2f, 0xcc3: 0x0cbf, 0xcc4: 0x0e7b, 0xcc5: 0x103f, - 0xcc6: 0x1497, 0xcc7: 0x157b, 0xcc8: 0x15cf, 0xcc9: 0x15e7, 0xcca: 0x0837, 0xccb: 0x0cf3, - 0xccc: 0x0da3, 0xccd: 0x13eb, 0xcce: 0x0afb, 0xccf: 0x0bd7, 0xcd0: 0x0bf3, 0xcd1: 0x0c83, - 0xcd2: 0x0e6b, 0xcd3: 0x0eb7, 0xcd4: 0x0f67, 0xcd5: 0x108b, 0xcd6: 0x112f, 0xcd7: 0x1193, - 0xcd8: 0x13db, 0xcd9: 0x126b, 0xcda: 0x1403, 0xcdb: 0x147f, 0xcdc: 0x080f, 0xcdd: 0x083b, - 0xcde: 0x0923, 0xcdf: 0x0ea7, 0xce0: 0x12f3, 0xce1: 0x133b, 0xce2: 0x0b1b, 0xce3: 0x0b8b, - 0xce4: 0x0c4f, 0xce5: 0x0daf, 0xce6: 0x10d7, 0xce7: 0x0f23, 0xce8: 0x073b, 0xce9: 0x097f, - 0xcea: 0x0a63, 0xceb: 0x0ac7, 0xcec: 0x0b97, 0xced: 0x0f3f, 0xcee: 0x0f5b, 0xcef: 0x116b, - 0xcf0: 0x118b, 0xcf1: 0x1463, 0xcf2: 0x14e3, 0xcf3: 0x14f3, 0xcf4: 0x152f, 0xcf5: 0x0753, - 0xcf6: 0x107f, 0xcf7: 0x144f, 0xcf8: 0x14cb, 0xcf9: 0x0baf, 0xcfa: 0x0717, 0xcfb: 0x0777, - 0xcfc: 0x0a67, 0xcfd: 0x0a87, 0xcfe: 0x0caf, 0xcff: 0x0d73, + 0xcc0: 0x15cb, 0xcc1: 0x134b, 0xcc2: 0x09c7, 0xcc3: 0x0b3b, 0xcc4: 0x10db, 0xcc5: 0x119b, + 0xcc6: 0x0eff, 0xcc7: 0x1033, 0xcc8: 0x1397, 0xcc9: 0x14e7, 0xcca: 0x09c3, 0xccb: 0x0a8f, + 0xccc: 0x0d77, 0xccd: 0x0e2b, 0xcce: 0x0e5f, 0xccf: 0x1113, 0xcd0: 0x113b, 0xcd1: 0x14a7, + 0xcd2: 0x084f, 0xcd3: 0x11a7, 0xcd4: 0x07f3, 0xcd5: 0x07ef, 0xcd6: 0x1097, 0xcd7: 0x1127, + 0xcd8: 0x125b, 0xcd9: 0x14af, 0xcda: 0x1367, 0xcdb: 0x0c27, 0xcdc: 0x0d73, 0xcdd: 0x1357, + 0xcde: 0x06f7, 0xcdf: 0x0a63, 0xce0: 0x0b93, 0xce1: 0x0f2f, 0xce2: 0x0faf, 0xce3: 0x0873, + 0xce4: 0x103b, 0xce5: 0x075f, 0xce6: 0x0b77, 0xce7: 0x06d7, 0xce8: 0x0deb, 0xce9: 0x0ca3, + 0xcea: 0x110f, 0xceb: 0x08c7, 0xcec: 0x09b3, 0xced: 0x0ffb, 0xcee: 0x1263, 0xcef: 0x133b, + 0xcf0: 0x0db7, 0xcf1: 0x13f7, 0xcf2: 0x0de3, 0xcf3: 0x0c37, 0xcf4: 0x121b, 0xcf5: 0x0c57, + 0xcf6: 0x0fab, 0xcf7: 0x072b, 0xcf8: 0x07a7, 0xcf9: 0x07eb, 0xcfa: 0x0d53, 0xcfb: 0x10fb, + 0xcfc: 0x11f3, 0xcfd: 0x1347, 0xcfe: 0x145b, 0xcff: 0x085b, // Block 0x34, offset 0xd00 - 0xd00: 0x0ec3, 0xd01: 0x0fcb, 0xd02: 0x1277, 0xd03: 0x1417, 0xd04: 0x1623, 0xd05: 0x0ce3, - 0xd06: 0x14a3, 0xd07: 0x0833, 0xd08: 0x0d2f, 0xd09: 0x0d3b, 0xd0a: 0x0e0f, 0xd0b: 0x0e47, - 0xd0c: 0x0f4b, 0xd0d: 0x0fa7, 0xd0e: 0x1027, 0xd0f: 0x110b, 0xd10: 0x153b, 0xd11: 0x07af, - 0xd12: 0x0c03, 0xd13: 0x14b3, 0xd14: 0x0767, 0xd15: 0x0aab, 0xd16: 0x0e2f, 0xd17: 0x13df, - 0xd18: 0x0b67, 0xd19: 0x0bb7, 0xd1a: 0x0d43, 0xd1b: 0x0f2f, 0xd1c: 0x14bb, 0xd1d: 0x0817, - 0xd1e: 0x08ff, 0xd1f: 0x0a97, 0xd20: 0x0cd3, 0xd21: 0x0d1f, 0xd22: 0x0d5f, 0xd23: 0x0df3, - 0xd24: 0x0f47, 0xd25: 0x0fbb, 0xd26: 0x1157, 0xd27: 0x12f7, 0xd28: 0x1303, 0xd29: 0x1457, - 0xd2a: 0x14d7, 0xd2b: 0x0883, 0xd2c: 0x0e4b, 0xd2d: 0x0903, 0xd2e: 0x0ec7, 0xd2f: 0x0f6b, - 0xd30: 0x1287, 0xd31: 0x14bf, 0xd32: 0x15ab, 0xd33: 0x15d3, 0xd34: 0x0d37, 0xd35: 0x0e27, - 0xd36: 0x11c3, 0xd37: 0x10b7, 0xd38: 0x10c3, 0xd39: 0x10e7, 0xd3a: 0x0f17, 0xd3b: 0x0e9f, - 0xd3c: 0x1363, 0xd3d: 0x0733, 0xd3e: 0x122b, 0xd3f: 0x081b, + 0xd00: 0x090f, 0xd01: 0x0a17, 0xd02: 0x0b2f, 0xd03: 0x0cbf, 0xd04: 0x0e7b, 0xd05: 0x103f, + 0xd06: 0x1497, 0xd07: 0x157b, 0xd08: 0x15cf, 0xd09: 0x15e7, 0xd0a: 0x0837, 0xd0b: 0x0cf3, + 0xd0c: 0x0da3, 0xd0d: 0x13eb, 0xd0e: 0x0afb, 0xd0f: 0x0bd7, 0xd10: 0x0bf3, 0xd11: 0x0c83, + 0xd12: 0x0e6b, 0xd13: 0x0eb7, 0xd14: 0x0f67, 0xd15: 0x108b, 0xd16: 0x112f, 0xd17: 0x1193, + 0xd18: 0x13db, 0xd19: 0x126b, 0xd1a: 0x1403, 0xd1b: 0x147f, 0xd1c: 0x080f, 0xd1d: 0x083b, + 0xd1e: 0x0923, 0xd1f: 0x0ea7, 0xd20: 0x12f3, 0xd21: 0x133b, 0xd22: 0x0b1b, 0xd23: 0x0b8b, + 0xd24: 0x0c4f, 0xd25: 0x0daf, 0xd26: 0x10d7, 0xd27: 0x0f23, 0xd28: 0x073b, 0xd29: 0x097f, + 0xd2a: 0x0a63, 0xd2b: 0x0ac7, 0xd2c: 0x0b97, 0xd2d: 0x0f3f, 0xd2e: 0x0f5b, 0xd2f: 0x116b, + 0xd30: 0x118b, 0xd31: 0x1463, 0xd32: 0x14e3, 0xd33: 0x14f3, 0xd34: 0x152f, 0xd35: 0x0753, + 0xd36: 0x107f, 0xd37: 0x144f, 0xd38: 0x14cb, 0xd39: 0x0baf, 0xd3a: 0x0717, 0xd3b: 0x0777, + 0xd3c: 0x0a67, 0xd3d: 0x0a87, 0xd3e: 0x0caf, 0xd3f: 0x0d73, // Block 0x35, offset 0xd40 - 0xd40: 0x080b, 0xd41: 0x0b0b, 0xd42: 0x0c2b, 0xd43: 0x10f3, 0xd44: 0x0a53, 0xd45: 0x0e03, - 0xd46: 0x0cef, 0xd47: 0x13e7, 0xd48: 0x12e7, 0xd49: 0x14ab, 0xd4a: 0x1323, 0xd4b: 0x0b27, - 0xd4c: 0x0787, 0xd4d: 0x095b, 0xd50: 0x09af, - 0xd52: 0x0cdf, 0xd55: 0x07f7, 0xd56: 0x0f1f, 0xd57: 0x0fe3, - 0xd58: 0x1047, 0xd59: 0x1063, 0xd5a: 0x1067, 0xd5b: 0x107b, 0xd5c: 0x14fb, 0xd5d: 0x10eb, - 0xd5e: 0x116f, 0xd60: 0x128f, 0xd62: 0x1353, - 0xd65: 0x1407, 0xd66: 0x1433, - 0xd6a: 0x154f, 0xd6b: 0x1553, 0xd6c: 0x1557, 0xd6d: 0x15bb, 0xd6e: 0x142b, 0xd6f: 0x14c7, - 0xd70: 0x0757, 0xd71: 0x077b, 0xd72: 0x078f, 0xd73: 0x084b, 0xd74: 0x0857, 0xd75: 0x0897, - 0xd76: 0x094b, 0xd77: 0x0967, 0xd78: 0x096f, 0xd79: 0x09ab, 0xd7a: 0x09b7, 0xd7b: 0x0a93, - 0xd7c: 0x0a9b, 0xd7d: 0x0ba3, 0xd7e: 0x0bcb, 0xd7f: 0x0bd3, + 0xd40: 0x0ec3, 0xd41: 0x0fcb, 0xd42: 0x1277, 0xd43: 0x1417, 0xd44: 0x1623, 0xd45: 0x0ce3, + 0xd46: 0x14a3, 0xd47: 0x0833, 0xd48: 0x0d2f, 0xd49: 0x0d3b, 0xd4a: 0x0e0f, 0xd4b: 0x0e47, + 0xd4c: 0x0f4b, 0xd4d: 0x0fa7, 0xd4e: 0x1027, 0xd4f: 0x110b, 0xd50: 0x153b, 0xd51: 0x07af, + 0xd52: 0x0c03, 0xd53: 0x14b3, 0xd54: 0x0767, 0xd55: 0x0aab, 0xd56: 0x0e2f, 0xd57: 0x13df, + 0xd58: 0x0b67, 0xd59: 0x0bb7, 0xd5a: 0x0d43, 0xd5b: 0x0f2f, 0xd5c: 0x14bb, 0xd5d: 0x0817, + 0xd5e: 0x08ff, 0xd5f: 0x0a97, 0xd60: 0x0cd3, 0xd61: 0x0d1f, 0xd62: 0x0d5f, 0xd63: 0x0df3, + 0xd64: 0x0f47, 0xd65: 0x0fbb, 0xd66: 0x1157, 0xd67: 0x12f7, 0xd68: 0x1303, 0xd69: 0x1457, + 0xd6a: 0x14d7, 0xd6b: 0x0883, 0xd6c: 0x0e4b, 0xd6d: 0x0903, 0xd6e: 0x0ec7, 0xd6f: 0x0f6b, + 0xd70: 0x1287, 0xd71: 0x14bf, 0xd72: 0x15ab, 0xd73: 0x15d3, 0xd74: 0x0d37, 0xd75: 0x0e27, + 0xd76: 0x11c3, 0xd77: 0x10b7, 0xd78: 0x10c3, 0xd79: 0x10e7, 0xd7a: 0x0f17, 0xd7b: 0x0e9f, + 0xd7c: 0x1363, 0xd7d: 0x0733, 0xd7e: 0x122b, 0xd7f: 0x081b, // Block 0x36, offset 0xd80 - 0xd80: 0x0beb, 0xd81: 0x0c97, 0xd82: 0x0cc7, 0xd83: 0x0ce7, 0xd84: 0x0d57, 0xd85: 0x0e1b, - 0xd86: 0x0e37, 0xd87: 0x0e67, 0xd88: 0x0ebb, 0xd89: 0x0edb, 0xd8a: 0x0f4f, 0xd8b: 0x102f, - 0xd8c: 0x104b, 0xd8d: 0x1053, 0xd8e: 0x104f, 0xd8f: 0x1057, 0xd90: 0x105b, 0xd91: 0x105f, - 0xd92: 0x1073, 0xd93: 0x1077, 0xd94: 0x109b, 0xd95: 0x10af, 0xd96: 0x10cb, 0xd97: 0x112f, - 0xd98: 0x1137, 0xd99: 0x113f, 0xd9a: 0x1153, 0xd9b: 0x117b, 0xd9c: 0x11cb, 0xd9d: 0x11ff, - 0xd9e: 0x11ff, 0xd9f: 0x1267, 0xda0: 0x130f, 0xda1: 0x1327, 0xda2: 0x135b, 0xda3: 0x135f, - 0xda4: 0x13a3, 0xda5: 0x13a7, 0xda6: 0x13ff, 0xda7: 0x1407, 0xda8: 0x14db, 0xda9: 0x151f, - 0xdaa: 0x1537, 0xdab: 0x0b9b, 0xdac: 0x171e, 0xdad: 0x11e3, - 0xdb0: 0x06df, 0xdb1: 0x07e3, 0xdb2: 0x07a3, 0xdb3: 0x074b, 0xdb4: 0x078b, 0xdb5: 0x07b7, - 0xdb6: 0x0847, 0xdb7: 0x0863, 0xdb8: 0x094b, 0xdb9: 0x0937, 0xdba: 0x0947, 0xdbb: 0x0963, - 0xdbc: 0x09af, 0xdbd: 0x09bf, 0xdbe: 0x0a03, 0xdbf: 0x0a0f, + 0xd80: 0x080b, 0xd81: 0x0b0b, 0xd82: 0x0c2b, 0xd83: 0x10f3, 0xd84: 0x0a53, 0xd85: 0x0e03, + 0xd86: 0x0cef, 0xd87: 0x13e7, 0xd88: 0x12e7, 0xd89: 0x14ab, 0xd8a: 0x1323, 0xd8b: 0x0b27, + 0xd8c: 0x0787, 0xd8d: 0x095b, 0xd90: 0x09af, + 0xd92: 0x0cdf, 0xd95: 0x07f7, 0xd96: 0x0f1f, 0xd97: 0x0fe3, + 0xd98: 0x1047, 0xd99: 0x1063, 0xd9a: 0x1067, 0xd9b: 0x107b, 0xd9c: 0x14fb, 0xd9d: 0x10eb, + 0xd9e: 0x116f, 0xda0: 0x128f, 0xda2: 0x1353, + 0xda5: 0x1407, 0xda6: 0x1433, + 0xdaa: 0x154f, 0xdab: 0x1553, 0xdac: 0x1557, 0xdad: 0x15bb, 0xdae: 0x142b, 0xdaf: 0x14c7, + 0xdb0: 0x0757, 0xdb1: 0x077b, 0xdb2: 0x078f, 0xdb3: 0x084b, 0xdb4: 0x0857, 0xdb5: 0x0897, + 0xdb6: 0x094b, 0xdb7: 0x0967, 0xdb8: 0x096f, 0xdb9: 0x09ab, 0xdba: 0x09b7, 0xdbb: 0x0a93, + 0xdbc: 0x0a9b, 0xdbd: 0x0ba3, 0xdbe: 0x0bcb, 0xdbf: 0x0bd3, // Block 0x37, offset 0xdc0 - 0xdc0: 0x0a2b, 0xdc1: 0x0a3b, 0xdc2: 0x0b23, 0xdc3: 0x0b2b, 0xdc4: 0x0b5b, 0xdc5: 0x0b7b, - 0xdc6: 0x0bab, 0xdc7: 0x0bc3, 0xdc8: 0x0bb3, 0xdc9: 0x0bd3, 0xdca: 0x0bc7, 0xdcb: 0x0beb, - 0xdcc: 0x0c07, 0xdcd: 0x0c5f, 0xdce: 0x0c6b, 0xdcf: 0x0c73, 0xdd0: 0x0c9b, 0xdd1: 0x0cdf, - 0xdd2: 0x0d0f, 0xdd3: 0x0d13, 0xdd4: 0x0d27, 0xdd5: 0x0da7, 0xdd6: 0x0db7, 0xdd7: 0x0e0f, - 0xdd8: 0x0e5b, 0xdd9: 0x0e53, 0xdda: 0x0e67, 0xddb: 0x0e83, 0xddc: 0x0ebb, 0xddd: 0x1013, - 0xdde: 0x0edf, 0xddf: 0x0f13, 0xde0: 0x0f1f, 0xde1: 0x0f5f, 0xde2: 0x0f7b, 0xde3: 0x0f9f, - 0xde4: 0x0fc3, 0xde5: 0x0fc7, 0xde6: 0x0fe3, 0xde7: 0x0fe7, 0xde8: 0x0ff7, 0xde9: 0x100b, - 0xdea: 0x1007, 0xdeb: 0x1037, 0xdec: 0x10b3, 0xded: 0x10cb, 0xdee: 0x10e3, 0xdef: 0x111b, - 0xdf0: 0x112f, 0xdf1: 0x114b, 0xdf2: 0x117b, 0xdf3: 0x122f, 0xdf4: 0x1257, 0xdf5: 0x12cb, - 0xdf6: 0x1313, 0xdf7: 0x131f, 0xdf8: 0x1327, 0xdf9: 0x133f, 0xdfa: 0x1353, 0xdfb: 0x1343, - 0xdfc: 0x135b, 0xdfd: 0x1357, 0xdfe: 0x134f, 0xdff: 0x135f, + 0xdc0: 0x0beb, 0xdc1: 0x0c97, 0xdc2: 0x0cc7, 0xdc3: 0x0ce7, 0xdc4: 0x0d57, 0xdc5: 0x0e1b, + 0xdc6: 0x0e37, 0xdc7: 0x0e67, 0xdc8: 0x0ebb, 0xdc9: 0x0edb, 0xdca: 0x0f4f, 0xdcb: 0x102f, + 0xdcc: 0x104b, 0xdcd: 0x1053, 0xdce: 0x104f, 0xdcf: 0x1057, 0xdd0: 0x105b, 0xdd1: 0x105f, + 0xdd2: 0x1073, 0xdd3: 0x1077, 0xdd4: 0x109b, 0xdd5: 0x10af, 0xdd6: 0x10cb, 0xdd7: 0x112f, + 0xdd8: 0x1137, 0xdd9: 0x113f, 0xdda: 0x1153, 0xddb: 0x117b, 0xddc: 0x11cb, 0xddd: 0x11ff, + 0xdde: 0x11ff, 0xddf: 0x1267, 0xde0: 0x130f, 0xde1: 0x1327, 0xde2: 0x135b, 0xde3: 0x135f, + 0xde4: 0x13a3, 0xde5: 0x13a7, 0xde6: 0x13ff, 0xde7: 0x1407, 0xde8: 0x14db, 0xde9: 0x151f, + 0xdea: 0x1537, 0xdeb: 0x0b9b, 0xdec: 0x171e, 0xded: 0x11e3, + 0xdf0: 0x06df, 0xdf1: 0x07e3, 0xdf2: 0x07a3, 0xdf3: 0x074b, 0xdf4: 0x078b, 0xdf5: 0x07b7, + 0xdf6: 0x0847, 0xdf7: 0x0863, 0xdf8: 0x094b, 0xdf9: 0x0937, 0xdfa: 0x0947, 0xdfb: 0x0963, + 0xdfc: 0x09af, 0xdfd: 0x09bf, 0xdfe: 0x0a03, 0xdff: 0x0a0f, // Block 0x38, offset 0xe00 - 0xe00: 0x136b, 0xe01: 0x13a7, 0xe02: 0x13e3, 0xe03: 0x1413, 0xe04: 0x144b, 0xe05: 0x146b, - 0xe06: 0x14b7, 0xe07: 0x14db, 0xe08: 0x14fb, 0xe09: 0x150f, 0xe0a: 0x151f, 0xe0b: 0x152b, - 0xe0c: 0x1537, 0xe0d: 0x158b, 0xe0e: 0x162b, 0xe0f: 0x16b5, 0xe10: 0x16b0, 0xe11: 0x16e2, - 0xe12: 0x0607, 0xe13: 0x062f, 0xe14: 0x0633, 0xe15: 0x1764, 0xe16: 0x1791, 0xe17: 0x1809, - 0xe18: 0x1617, 0xe19: 0x1627, + 0xe00: 0x0a2b, 0xe01: 0x0a3b, 0xe02: 0x0b23, 0xe03: 0x0b2b, 0xe04: 0x0b5b, 0xe05: 0x0b7b, + 0xe06: 0x0bab, 0xe07: 0x0bc3, 0xe08: 0x0bb3, 0xe09: 0x0bd3, 0xe0a: 0x0bc7, 0xe0b: 0x0beb, + 0xe0c: 0x0c07, 0xe0d: 0x0c5f, 0xe0e: 0x0c6b, 0xe0f: 0x0c73, 0xe10: 0x0c9b, 0xe11: 0x0cdf, + 0xe12: 0x0d0f, 0xe13: 0x0d13, 0xe14: 0x0d27, 0xe15: 0x0da7, 0xe16: 0x0db7, 0xe17: 0x0e0f, + 0xe18: 0x0e5b, 0xe19: 0x0e53, 0xe1a: 0x0e67, 0xe1b: 0x0e83, 0xe1c: 0x0ebb, 0xe1d: 0x1013, + 0xe1e: 0x0edf, 0xe1f: 0x0f13, 0xe20: 0x0f1f, 0xe21: 0x0f5f, 0xe22: 0x0f7b, 0xe23: 0x0f9f, + 0xe24: 0x0fc3, 0xe25: 0x0fc7, 0xe26: 0x0fe3, 0xe27: 0x0fe7, 0xe28: 0x0ff7, 0xe29: 0x100b, + 0xe2a: 0x1007, 0xe2b: 0x1037, 0xe2c: 0x10b3, 0xe2d: 0x10cb, 0xe2e: 0x10e3, 0xe2f: 0x111b, + 0xe30: 0x112f, 0xe31: 0x114b, 0xe32: 0x117b, 0xe33: 0x122f, 0xe34: 0x1257, 0xe35: 0x12cb, + 0xe36: 0x1313, 0xe37: 0x131f, 0xe38: 0x1327, 0xe39: 0x133f, 0xe3a: 0x1353, 0xe3b: 0x1343, + 0xe3c: 0x135b, 0xe3d: 0x1357, 0xe3e: 0x134f, 0xe3f: 0x135f, // Block 0x39, offset 0xe40 - 0xe40: 0x19d5, 0xe41: 0x19d8, 0xe42: 0x19db, 0xe43: 0x1c08, 0xe44: 0x1c0c, 0xe45: 0x1a5f, - 0xe46: 0x1a5f, - 0xe53: 0x1d75, 0xe54: 0x1d66, 0xe55: 0x1d6b, 0xe56: 0x1d7a, 0xe57: 0x1d70, - 0xe5d: 0x4390, - 0xe5e: 0x8115, 0xe5f: 0x4402, 0xe60: 0x022d, 0xe61: 0x0215, 0xe62: 0x021e, 0xe63: 0x0221, - 0xe64: 0x0224, 0xe65: 0x0227, 0xe66: 0x022a, 0xe67: 0x0230, 0xe68: 0x0233, 0xe69: 0x0017, - 0xe6a: 0x43f0, 0xe6b: 0x43f6, 0xe6c: 0x44f4, 0xe6d: 0x44fc, 0xe6e: 0x4348, 0xe6f: 0x434e, - 0xe70: 0x4354, 0xe71: 0x435a, 0xe72: 0x4366, 0xe73: 0x436c, 0xe74: 0x4372, 0xe75: 0x437e, - 0xe76: 0x4384, 0xe78: 0x438a, 0xe79: 0x4396, 0xe7a: 0x439c, 0xe7b: 0x43a2, - 0xe7c: 0x43ae, 0xe7e: 0x43b4, + 0xe40: 0x136b, 0xe41: 0x13a7, 0xe42: 0x13e3, 0xe43: 0x1413, 0xe44: 0x144b, 0xe45: 0x146b, + 0xe46: 0x14b7, 0xe47: 0x14db, 0xe48: 0x14fb, 0xe49: 0x150f, 0xe4a: 0x151f, 0xe4b: 0x152b, + 0xe4c: 0x1537, 0xe4d: 0x158b, 0xe4e: 0x162b, 0xe4f: 0x16b5, 0xe50: 0x16b0, 0xe51: 0x16e2, + 0xe52: 0x0607, 0xe53: 0x062f, 0xe54: 0x0633, 0xe55: 0x1764, 0xe56: 0x1791, 0xe57: 0x1809, + 0xe58: 0x1617, 0xe59: 0x1627, // Block 0x3a, offset 0xe80 - 0xe80: 0x43ba, 0xe81: 0x43c0, 0xe83: 0x43c6, 0xe84: 0x43cc, - 0xe86: 0x43d8, 0xe87: 0x43de, 0xe88: 0x43e4, 0xe89: 0x43ea, 0xe8a: 0x43fc, 0xe8b: 0x4378, - 0xe8c: 0x4360, 0xe8d: 0x43a8, 0xe8e: 0x43d2, 0xe8f: 0x1d7f, 0xe90: 0x0299, 0xe91: 0x0299, - 0xe92: 0x02a2, 0xe93: 0x02a2, 0xe94: 0x02a2, 0xe95: 0x02a2, 0xe96: 0x02a5, 0xe97: 0x02a5, - 0xe98: 0x02a5, 0xe99: 0x02a5, 0xe9a: 0x02ab, 0xe9b: 0x02ab, 0xe9c: 0x02ab, 0xe9d: 0x02ab, - 0xe9e: 0x029f, 0xe9f: 0x029f, 0xea0: 0x029f, 0xea1: 0x029f, 0xea2: 0x02a8, 0xea3: 0x02a8, - 0xea4: 0x02a8, 0xea5: 0x02a8, 0xea6: 0x029c, 0xea7: 0x029c, 0xea8: 0x029c, 0xea9: 0x029c, - 0xeaa: 0x02cf, 0xeab: 0x02cf, 0xeac: 0x02cf, 0xead: 0x02cf, 0xeae: 0x02d2, 0xeaf: 0x02d2, - 0xeb0: 0x02d2, 0xeb1: 0x02d2, 0xeb2: 0x02b1, 0xeb3: 0x02b1, 0xeb4: 0x02b1, 0xeb5: 0x02b1, - 0xeb6: 0x02ae, 0xeb7: 0x02ae, 0xeb8: 0x02ae, 0xeb9: 0x02ae, 0xeba: 0x02b4, 0xebb: 0x02b4, - 0xebc: 0x02b4, 0xebd: 0x02b4, 0xebe: 0x02b7, 0xebf: 0x02b7, + 0xe80: 0x19d5, 0xe81: 0x19d8, 0xe82: 0x19db, 0xe83: 0x1c08, 0xe84: 0x1c0c, 0xe85: 0x1a5f, + 0xe86: 0x1a5f, + 0xe93: 0x1d75, 0xe94: 0x1d66, 0xe95: 0x1d6b, 0xe96: 0x1d7a, 0xe97: 0x1d70, + 0xe9d: 0x4390, + 0xe9e: 0x8115, 0xe9f: 0x4402, 0xea0: 0x022d, 0xea1: 0x0215, 0xea2: 0x021e, 0xea3: 0x0221, + 0xea4: 0x0224, 0xea5: 0x0227, 0xea6: 0x022a, 0xea7: 0x0230, 0xea8: 0x0233, 0xea9: 0x0017, + 0xeaa: 0x43f0, 0xeab: 0x43f6, 0xeac: 0x44f4, 0xead: 0x44fc, 0xeae: 0x4348, 0xeaf: 0x434e, + 0xeb0: 0x4354, 0xeb1: 0x435a, 0xeb2: 0x4366, 0xeb3: 0x436c, 0xeb4: 0x4372, 0xeb5: 0x437e, + 0xeb6: 0x4384, 0xeb8: 0x438a, 0xeb9: 0x4396, 0xeba: 0x439c, 0xebb: 0x43a2, + 0xebc: 0x43ae, 0xebe: 0x43b4, // Block 0x3b, offset 0xec0 - 0xec0: 0x02b7, 0xec1: 0x02b7, 0xec2: 0x02c0, 0xec3: 0x02c0, 0xec4: 0x02bd, 0xec5: 0x02bd, - 0xec6: 0x02c3, 0xec7: 0x02c3, 0xec8: 0x02ba, 0xec9: 0x02ba, 0xeca: 0x02c9, 0xecb: 0x02c9, - 0xecc: 0x02c6, 0xecd: 0x02c6, 0xece: 0x02d5, 0xecf: 0x02d5, 0xed0: 0x02d5, 0xed1: 0x02d5, - 0xed2: 0x02db, 0xed3: 0x02db, 0xed4: 0x02db, 0xed5: 0x02db, 0xed6: 0x02e1, 0xed7: 0x02e1, - 0xed8: 0x02e1, 0xed9: 0x02e1, 0xeda: 0x02de, 0xedb: 0x02de, 0xedc: 0x02de, 0xedd: 0x02de, - 0xede: 0x02e4, 0xedf: 0x02e4, 0xee0: 0x02e7, 0xee1: 0x02e7, 0xee2: 0x02e7, 0xee3: 0x02e7, - 0xee4: 0x446e, 0xee5: 0x446e, 0xee6: 0x02ed, 0xee7: 0x02ed, 0xee8: 0x02ed, 0xee9: 0x02ed, - 0xeea: 0x02ea, 0xeeb: 0x02ea, 0xeec: 0x02ea, 0xeed: 0x02ea, 0xeee: 0x0308, 0xeef: 0x0308, - 0xef0: 0x4468, 0xef1: 0x4468, + 0xec0: 0x43ba, 0xec1: 0x43c0, 0xec3: 0x43c6, 0xec4: 0x43cc, + 0xec6: 0x43d8, 0xec7: 0x43de, 0xec8: 0x43e4, 0xec9: 0x43ea, 0xeca: 0x43fc, 0xecb: 0x4378, + 0xecc: 0x4360, 0xecd: 0x43a8, 0xece: 0x43d2, 0xecf: 0x1d7f, 0xed0: 0x0299, 0xed1: 0x0299, + 0xed2: 0x02a2, 0xed3: 0x02a2, 0xed4: 0x02a2, 0xed5: 0x02a2, 0xed6: 0x02a5, 0xed7: 0x02a5, + 0xed8: 0x02a5, 0xed9: 0x02a5, 0xeda: 0x02ab, 0xedb: 0x02ab, 0xedc: 0x02ab, 0xedd: 0x02ab, + 0xede: 0x029f, 0xedf: 0x029f, 0xee0: 0x029f, 0xee1: 0x029f, 0xee2: 0x02a8, 0xee3: 0x02a8, + 0xee4: 0x02a8, 0xee5: 0x02a8, 0xee6: 0x029c, 0xee7: 0x029c, 0xee8: 0x029c, 0xee9: 0x029c, + 0xeea: 0x02cf, 0xeeb: 0x02cf, 0xeec: 0x02cf, 0xeed: 0x02cf, 0xeee: 0x02d2, 0xeef: 0x02d2, + 0xef0: 0x02d2, 0xef1: 0x02d2, 0xef2: 0x02b1, 0xef3: 0x02b1, 0xef4: 0x02b1, 0xef5: 0x02b1, + 0xef6: 0x02ae, 0xef7: 0x02ae, 0xef8: 0x02ae, 0xef9: 0x02ae, 0xefa: 0x02b4, 0xefb: 0x02b4, + 0xefc: 0x02b4, 0xefd: 0x02b4, 0xefe: 0x02b7, 0xeff: 0x02b7, // Block 0x3c, offset 0xf00 - 0xf13: 0x02d8, 0xf14: 0x02d8, 0xf15: 0x02d8, 0xf16: 0x02d8, 0xf17: 0x02f6, - 0xf18: 0x02f6, 0xf19: 0x02f3, 0xf1a: 0x02f3, 0xf1b: 0x02f9, 0xf1c: 0x02f9, 0xf1d: 0x204f, - 0xf1e: 0x02ff, 0xf1f: 0x02ff, 0xf20: 0x02f0, 0xf21: 0x02f0, 0xf22: 0x02fc, 0xf23: 0x02fc, - 0xf24: 0x0305, 0xf25: 0x0305, 0xf26: 0x0305, 0xf27: 0x0305, 0xf28: 0x028d, 0xf29: 0x028d, - 0xf2a: 0x25aa, 0xf2b: 0x25aa, 0xf2c: 0x261a, 0xf2d: 0x261a, 0xf2e: 0x25e9, 0xf2f: 0x25e9, - 0xf30: 0x2605, 0xf31: 0x2605, 0xf32: 0x25fe, 0xf33: 0x25fe, 0xf34: 0x260c, 0xf35: 0x260c, - 0xf36: 0x2613, 0xf37: 0x2613, 0xf38: 0x2613, 0xf39: 0x25f0, 0xf3a: 0x25f0, 0xf3b: 0x25f0, - 0xf3c: 0x0302, 0xf3d: 0x0302, 0xf3e: 0x0302, 0xf3f: 0x0302, + 0xf00: 0x02b7, 0xf01: 0x02b7, 0xf02: 0x02c0, 0xf03: 0x02c0, 0xf04: 0x02bd, 0xf05: 0x02bd, + 0xf06: 0x02c3, 0xf07: 0x02c3, 0xf08: 0x02ba, 0xf09: 0x02ba, 0xf0a: 0x02c9, 0xf0b: 0x02c9, + 0xf0c: 0x02c6, 0xf0d: 0x02c6, 0xf0e: 0x02d5, 0xf0f: 0x02d5, 0xf10: 0x02d5, 0xf11: 0x02d5, + 0xf12: 0x02db, 0xf13: 0x02db, 0xf14: 0x02db, 0xf15: 0x02db, 0xf16: 0x02e1, 0xf17: 0x02e1, + 0xf18: 0x02e1, 0xf19: 0x02e1, 0xf1a: 0x02de, 0xf1b: 0x02de, 0xf1c: 0x02de, 0xf1d: 0x02de, + 0xf1e: 0x02e4, 0xf1f: 0x02e4, 0xf20: 0x02e7, 0xf21: 0x02e7, 0xf22: 0x02e7, 0xf23: 0x02e7, + 0xf24: 0x446e, 0xf25: 0x446e, 0xf26: 0x02ed, 0xf27: 0x02ed, 0xf28: 0x02ed, 0xf29: 0x02ed, + 0xf2a: 0x02ea, 0xf2b: 0x02ea, 0xf2c: 0x02ea, 0xf2d: 0x02ea, 0xf2e: 0x0308, 0xf2f: 0x0308, + 0xf30: 0x4468, 0xf31: 0x4468, // Block 0x3d, offset 0xf40 - 0xf40: 0x25b1, 0xf41: 0x25b8, 0xf42: 0x25d4, 0xf43: 0x25f0, 0xf44: 0x25f7, 0xf45: 0x1d89, - 0xf46: 0x1d8e, 0xf47: 0x1d93, 0xf48: 0x1da2, 0xf49: 0x1db1, 0xf4a: 0x1db6, 0xf4b: 0x1dbb, - 0xf4c: 0x1dc0, 0xf4d: 0x1dc5, 0xf4e: 0x1dd4, 0xf4f: 0x1de3, 0xf50: 0x1de8, 0xf51: 0x1ded, - 0xf52: 0x1dfc, 0xf53: 0x1e0b, 0xf54: 0x1e10, 0xf55: 0x1e15, 0xf56: 0x1e1a, 0xf57: 0x1e29, - 0xf58: 0x1e2e, 0xf59: 0x1e3d, 0xf5a: 0x1e42, 0xf5b: 0x1e47, 0xf5c: 0x1e56, 0xf5d: 0x1e5b, - 0xf5e: 0x1e60, 0xf5f: 0x1e6a, 0xf60: 0x1ea6, 0xf61: 0x1eb5, 0xf62: 0x1ec4, 0xf63: 0x1ec9, - 0xf64: 0x1ece, 0xf65: 0x1ed8, 0xf66: 0x1ee7, 0xf67: 0x1eec, 0xf68: 0x1efb, 0xf69: 0x1f00, - 0xf6a: 0x1f05, 0xf6b: 0x1f14, 0xf6c: 0x1f19, 0xf6d: 0x1f28, 0xf6e: 0x1f2d, 0xf6f: 0x1f32, - 0xf70: 0x1f37, 0xf71: 0x1f3c, 0xf72: 0x1f41, 0xf73: 0x1f46, 0xf74: 0x1f4b, 0xf75: 0x1f50, - 0xf76: 0x1f55, 0xf77: 0x1f5a, 0xf78: 0x1f5f, 0xf79: 0x1f64, 0xf7a: 0x1f69, 0xf7b: 0x1f6e, - 0xf7c: 0x1f73, 0xf7d: 0x1f78, 0xf7e: 0x1f7d, 0xf7f: 0x1f87, + 0xf53: 0x02d8, 0xf54: 0x02d8, 0xf55: 0x02d8, 0xf56: 0x02d8, 0xf57: 0x02f6, + 0xf58: 0x02f6, 0xf59: 0x02f3, 0xf5a: 0x02f3, 0xf5b: 0x02f9, 0xf5c: 0x02f9, 0xf5d: 0x204f, + 0xf5e: 0x02ff, 0xf5f: 0x02ff, 0xf60: 0x02f0, 0xf61: 0x02f0, 0xf62: 0x02fc, 0xf63: 0x02fc, + 0xf64: 0x0305, 0xf65: 0x0305, 0xf66: 0x0305, 0xf67: 0x0305, 0xf68: 0x028d, 0xf69: 0x028d, + 0xf6a: 0x25aa, 0xf6b: 0x25aa, 0xf6c: 0x261a, 0xf6d: 0x261a, 0xf6e: 0x25e9, 0xf6f: 0x25e9, + 0xf70: 0x2605, 0xf71: 0x2605, 0xf72: 0x25fe, 0xf73: 0x25fe, 0xf74: 0x260c, 0xf75: 0x260c, + 0xf76: 0x2613, 0xf77: 0x2613, 0xf78: 0x2613, 0xf79: 0x25f0, 0xf7a: 0x25f0, 0xf7b: 0x25f0, + 0xf7c: 0x0302, 0xf7d: 0x0302, 0xf7e: 0x0302, 0xf7f: 0x0302, // Block 0x3e, offset 0xf80 - 0xf80: 0x1f8c, 0xf81: 0x1f91, 0xf82: 0x1f96, 0xf83: 0x1fa0, 0xf84: 0x1fa5, 0xf85: 0x1faf, - 0xf86: 0x1fb4, 0xf87: 0x1fb9, 0xf88: 0x1fbe, 0xf89: 0x1fc3, 0xf8a: 0x1fc8, 0xf8b: 0x1fcd, - 0xf8c: 0x1fd2, 0xf8d: 0x1fd7, 0xf8e: 0x1fe6, 0xf8f: 0x1ff5, 0xf90: 0x1ffa, 0xf91: 0x1fff, - 0xf92: 0x2004, 0xf93: 0x2009, 0xf94: 0x200e, 0xf95: 0x2018, 0xf96: 0x201d, 0xf97: 0x2022, - 0xf98: 0x2031, 0xf99: 0x2040, 0xf9a: 0x2045, 0xf9b: 0x4420, 0xf9c: 0x4426, 0xf9d: 0x445c, - 0xf9e: 0x44b3, 0xf9f: 0x44ba, 0xfa0: 0x44c1, 0xfa1: 0x44c8, 0xfa2: 0x44cf, 0xfa3: 0x44d6, - 0xfa4: 0x25c6, 0xfa5: 0x25cd, 0xfa6: 0x25d4, 0xfa7: 0x25db, 0xfa8: 0x25f0, 0xfa9: 0x25f7, - 0xfaa: 0x1d98, 0xfab: 0x1d9d, 0xfac: 0x1da2, 0xfad: 0x1da7, 0xfae: 0x1db1, 0xfaf: 0x1db6, - 0xfb0: 0x1dca, 0xfb1: 0x1dcf, 0xfb2: 0x1dd4, 0xfb3: 0x1dd9, 0xfb4: 0x1de3, 0xfb5: 0x1de8, - 0xfb6: 0x1df2, 0xfb7: 0x1df7, 0xfb8: 0x1dfc, 0xfb9: 0x1e01, 0xfba: 0x1e0b, 0xfbb: 0x1e10, - 0xfbc: 0x1f3c, 0xfbd: 0x1f41, 0xfbe: 0x1f50, 0xfbf: 0x1f55, + 0xf80: 0x25b1, 0xf81: 0x25b8, 0xf82: 0x25d4, 0xf83: 0x25f0, 0xf84: 0x25f7, 0xf85: 0x1d89, + 0xf86: 0x1d8e, 0xf87: 0x1d93, 0xf88: 0x1da2, 0xf89: 0x1db1, 0xf8a: 0x1db6, 0xf8b: 0x1dbb, + 0xf8c: 0x1dc0, 0xf8d: 0x1dc5, 0xf8e: 0x1dd4, 0xf8f: 0x1de3, 0xf90: 0x1de8, 0xf91: 0x1ded, + 0xf92: 0x1dfc, 0xf93: 0x1e0b, 0xf94: 0x1e10, 0xf95: 0x1e15, 0xf96: 0x1e1a, 0xf97: 0x1e29, + 0xf98: 0x1e2e, 0xf99: 0x1e3d, 0xf9a: 0x1e42, 0xf9b: 0x1e47, 0xf9c: 0x1e56, 0xf9d: 0x1e5b, + 0xf9e: 0x1e60, 0xf9f: 0x1e6a, 0xfa0: 0x1ea6, 0xfa1: 0x1eb5, 0xfa2: 0x1ec4, 0xfa3: 0x1ec9, + 0xfa4: 0x1ece, 0xfa5: 0x1ed8, 0xfa6: 0x1ee7, 0xfa7: 0x1eec, 0xfa8: 0x1efb, 0xfa9: 0x1f00, + 0xfaa: 0x1f05, 0xfab: 0x1f14, 0xfac: 0x1f19, 0xfad: 0x1f28, 0xfae: 0x1f2d, 0xfaf: 0x1f32, + 0xfb0: 0x1f37, 0xfb1: 0x1f3c, 0xfb2: 0x1f41, 0xfb3: 0x1f46, 0xfb4: 0x1f4b, 0xfb5: 0x1f50, + 0xfb6: 0x1f55, 0xfb7: 0x1f5a, 0xfb8: 0x1f5f, 0xfb9: 0x1f64, 0xfba: 0x1f69, 0xfbb: 0x1f6e, + 0xfbc: 0x1f73, 0xfbd: 0x1f78, 0xfbe: 0x1f7d, 0xfbf: 0x1f87, // Block 0x3f, offset 0xfc0 - 0xfc0: 0x1f5a, 0xfc1: 0x1f6e, 0xfc2: 0x1f73, 0xfc3: 0x1f78, 0xfc4: 0x1f7d, 0xfc5: 0x1f96, - 0xfc6: 0x1fa0, 0xfc7: 0x1fa5, 0xfc8: 0x1faa, 0xfc9: 0x1fbe, 0xfca: 0x1fdc, 0xfcb: 0x1fe1, - 0xfcc: 0x1fe6, 0xfcd: 0x1feb, 0xfce: 0x1ff5, 0xfcf: 0x1ffa, 0xfd0: 0x445c, 0xfd1: 0x2027, - 0xfd2: 0x202c, 0xfd3: 0x2031, 0xfd4: 0x2036, 0xfd5: 0x2040, 0xfd6: 0x2045, 0xfd7: 0x25b1, - 0xfd8: 0x25b8, 0xfd9: 0x25bf, 0xfda: 0x25d4, 0xfdb: 0x25e2, 0xfdc: 0x1d89, 0xfdd: 0x1d8e, - 0xfde: 0x1d93, 0xfdf: 0x1da2, 0xfe0: 0x1dac, 0xfe1: 0x1dbb, 0xfe2: 0x1dc0, 0xfe3: 0x1dc5, - 0xfe4: 0x1dd4, 0xfe5: 0x1dde, 0xfe6: 0x1dfc, 0xfe7: 0x1e15, 0xfe8: 0x1e1a, 0xfe9: 0x1e29, - 0xfea: 0x1e2e, 0xfeb: 0x1e3d, 0xfec: 0x1e47, 0xfed: 0x1e56, 0xfee: 0x1e5b, 0xfef: 0x1e60, - 0xff0: 0x1e6a, 0xff1: 0x1ea6, 0xff2: 0x1eab, 0xff3: 0x1eb5, 0xff4: 0x1ec4, 0xff5: 0x1ec9, - 0xff6: 0x1ece, 0xff7: 0x1ed8, 0xff8: 0x1ee7, 0xff9: 0x1efb, 0xffa: 0x1f00, 0xffb: 0x1f05, - 0xffc: 0x1f14, 0xffd: 0x1f19, 0xffe: 0x1f28, 0xfff: 0x1f2d, + 0xfc0: 0x1f8c, 0xfc1: 0x1f91, 0xfc2: 0x1f96, 0xfc3: 0x1fa0, 0xfc4: 0x1fa5, 0xfc5: 0x1faf, + 0xfc6: 0x1fb4, 0xfc7: 0x1fb9, 0xfc8: 0x1fbe, 0xfc9: 0x1fc3, 0xfca: 0x1fc8, 0xfcb: 0x1fcd, + 0xfcc: 0x1fd2, 0xfcd: 0x1fd7, 0xfce: 0x1fe6, 0xfcf: 0x1ff5, 0xfd0: 0x1ffa, 0xfd1: 0x1fff, + 0xfd2: 0x2004, 0xfd3: 0x2009, 0xfd4: 0x200e, 0xfd5: 0x2018, 0xfd6: 0x201d, 0xfd7: 0x2022, + 0xfd8: 0x2031, 0xfd9: 0x2040, 0xfda: 0x2045, 0xfdb: 0x4420, 0xfdc: 0x4426, 0xfdd: 0x445c, + 0xfde: 0x44b3, 0xfdf: 0x44ba, 0xfe0: 0x44c1, 0xfe1: 0x44c8, 0xfe2: 0x44cf, 0xfe3: 0x44d6, + 0xfe4: 0x25c6, 0xfe5: 0x25cd, 0xfe6: 0x25d4, 0xfe7: 0x25db, 0xfe8: 0x25f0, 0xfe9: 0x25f7, + 0xfea: 0x1d98, 0xfeb: 0x1d9d, 0xfec: 0x1da2, 0xfed: 0x1da7, 0xfee: 0x1db1, 0xfef: 0x1db6, + 0xff0: 0x1dca, 0xff1: 0x1dcf, 0xff2: 0x1dd4, 0xff3: 0x1dd9, 0xff4: 0x1de3, 0xff5: 0x1de8, + 0xff6: 0x1df2, 0xff7: 0x1df7, 0xff8: 0x1dfc, 0xff9: 0x1e01, 0xffa: 0x1e0b, 0xffb: 0x1e10, + 0xffc: 0x1f3c, 0xffd: 0x1f41, 0xffe: 0x1f50, 0xfff: 0x1f55, // Block 0x40, offset 0x1000 - 0x1000: 0x1f32, 0x1001: 0x1f37, 0x1002: 0x1f46, 0x1003: 0x1f4b, 0x1004: 0x1f5f, 0x1005: 0x1f64, - 0x1006: 0x1f69, 0x1007: 0x1f6e, 0x1008: 0x1f73, 0x1009: 0x1f87, 0x100a: 0x1f8c, 0x100b: 0x1f91, - 0x100c: 0x1f96, 0x100d: 0x1f9b, 0x100e: 0x1faf, 0x100f: 0x1fb4, 0x1010: 0x1fb9, 0x1011: 0x1fbe, - 0x1012: 0x1fcd, 0x1013: 0x1fd2, 0x1014: 0x1fd7, 0x1015: 0x1fe6, 0x1016: 0x1ff0, 0x1017: 0x1fff, - 0x1018: 0x2004, 0x1019: 0x4450, 0x101a: 0x2018, 0x101b: 0x201d, 0x101c: 0x2022, 0x101d: 0x2031, - 0x101e: 0x203b, 0x101f: 0x25d4, 0x1020: 0x25e2, 0x1021: 0x1da2, 0x1022: 0x1dac, 0x1023: 0x1dd4, - 0x1024: 0x1dde, 0x1025: 0x1dfc, 0x1026: 0x1e06, 0x1027: 0x1e6a, 0x1028: 0x1e6f, 0x1029: 0x1e92, - 0x102a: 0x1e97, 0x102b: 0x1f6e, 0x102c: 0x1f73, 0x102d: 0x1f96, 0x102e: 0x1fe6, 0x102f: 0x1ff0, - 0x1030: 0x2031, 0x1031: 0x203b, 0x1032: 0x4504, 0x1033: 0x450c, 0x1034: 0x4514, 0x1035: 0x1ef1, - 0x1036: 0x1ef6, 0x1037: 0x1f0a, 0x1038: 0x1f0f, 0x1039: 0x1f1e, 0x103a: 0x1f23, 0x103b: 0x1e74, - 0x103c: 0x1e79, 0x103d: 0x1e9c, 0x103e: 0x1ea1, 0x103f: 0x1e33, + 0x1000: 0x1f5a, 0x1001: 0x1f6e, 0x1002: 0x1f73, 0x1003: 0x1f78, 0x1004: 0x1f7d, 0x1005: 0x1f96, + 0x1006: 0x1fa0, 0x1007: 0x1fa5, 0x1008: 0x1faa, 0x1009: 0x1fbe, 0x100a: 0x1fdc, 0x100b: 0x1fe1, + 0x100c: 0x1fe6, 0x100d: 0x1feb, 0x100e: 0x1ff5, 0x100f: 0x1ffa, 0x1010: 0x445c, 0x1011: 0x2027, + 0x1012: 0x202c, 0x1013: 0x2031, 0x1014: 0x2036, 0x1015: 0x2040, 0x1016: 0x2045, 0x1017: 0x25b1, + 0x1018: 0x25b8, 0x1019: 0x25bf, 0x101a: 0x25d4, 0x101b: 0x25e2, 0x101c: 0x1d89, 0x101d: 0x1d8e, + 0x101e: 0x1d93, 0x101f: 0x1da2, 0x1020: 0x1dac, 0x1021: 0x1dbb, 0x1022: 0x1dc0, 0x1023: 0x1dc5, + 0x1024: 0x1dd4, 0x1025: 0x1dde, 0x1026: 0x1dfc, 0x1027: 0x1e15, 0x1028: 0x1e1a, 0x1029: 0x1e29, + 0x102a: 0x1e2e, 0x102b: 0x1e3d, 0x102c: 0x1e47, 0x102d: 0x1e56, 0x102e: 0x1e5b, 0x102f: 0x1e60, + 0x1030: 0x1e6a, 0x1031: 0x1ea6, 0x1032: 0x1eab, 0x1033: 0x1eb5, 0x1034: 0x1ec4, 0x1035: 0x1ec9, + 0x1036: 0x1ece, 0x1037: 0x1ed8, 0x1038: 0x1ee7, 0x1039: 0x1efb, 0x103a: 0x1f00, 0x103b: 0x1f05, + 0x103c: 0x1f14, 0x103d: 0x1f19, 0x103e: 0x1f28, 0x103f: 0x1f2d, // Block 0x41, offset 0x1040 - 0x1040: 0x1e38, 0x1041: 0x1e1f, 0x1042: 0x1e24, 0x1043: 0x1e4c, 0x1044: 0x1e51, 0x1045: 0x1eba, - 0x1046: 0x1ebf, 0x1047: 0x1edd, 0x1048: 0x1ee2, 0x1049: 0x1e7e, 0x104a: 0x1e83, 0x104b: 0x1e88, - 0x104c: 0x1e92, 0x104d: 0x1e8d, 0x104e: 0x1e65, 0x104f: 0x1eb0, 0x1050: 0x1ed3, 0x1051: 0x1ef1, - 0x1052: 0x1ef6, 0x1053: 0x1f0a, 0x1054: 0x1f0f, 0x1055: 0x1f1e, 0x1056: 0x1f23, 0x1057: 0x1e74, - 0x1058: 0x1e79, 0x1059: 0x1e9c, 0x105a: 0x1ea1, 0x105b: 0x1e33, 0x105c: 0x1e38, 0x105d: 0x1e1f, - 0x105e: 0x1e24, 0x105f: 0x1e4c, 0x1060: 0x1e51, 0x1061: 0x1eba, 0x1062: 0x1ebf, 0x1063: 0x1edd, - 0x1064: 0x1ee2, 0x1065: 0x1e7e, 0x1066: 0x1e83, 0x1067: 0x1e88, 0x1068: 0x1e92, 0x1069: 0x1e8d, - 0x106a: 0x1e65, 0x106b: 0x1eb0, 0x106c: 0x1ed3, 0x106d: 0x1e7e, 0x106e: 0x1e83, 0x106f: 0x1e88, - 0x1070: 0x1e92, 0x1071: 0x1e6f, 0x1072: 0x1e97, 0x1073: 0x1eec, 0x1074: 0x1e56, 0x1075: 0x1e5b, - 0x1076: 0x1e60, 0x1077: 0x1e7e, 0x1078: 0x1e83, 0x1079: 0x1e88, 0x107a: 0x1eec, 0x107b: 0x1efb, - 0x107c: 0x4408, 0x107d: 0x4408, + 0x1040: 0x1f32, 0x1041: 0x1f37, 0x1042: 0x1f46, 0x1043: 0x1f4b, 0x1044: 0x1f5f, 0x1045: 0x1f64, + 0x1046: 0x1f69, 0x1047: 0x1f6e, 0x1048: 0x1f73, 0x1049: 0x1f87, 0x104a: 0x1f8c, 0x104b: 0x1f91, + 0x104c: 0x1f96, 0x104d: 0x1f9b, 0x104e: 0x1faf, 0x104f: 0x1fb4, 0x1050: 0x1fb9, 0x1051: 0x1fbe, + 0x1052: 0x1fcd, 0x1053: 0x1fd2, 0x1054: 0x1fd7, 0x1055: 0x1fe6, 0x1056: 0x1ff0, 0x1057: 0x1fff, + 0x1058: 0x2004, 0x1059: 0x4450, 0x105a: 0x2018, 0x105b: 0x201d, 0x105c: 0x2022, 0x105d: 0x2031, + 0x105e: 0x203b, 0x105f: 0x25d4, 0x1060: 0x25e2, 0x1061: 0x1da2, 0x1062: 0x1dac, 0x1063: 0x1dd4, + 0x1064: 0x1dde, 0x1065: 0x1dfc, 0x1066: 0x1e06, 0x1067: 0x1e6a, 0x1068: 0x1e6f, 0x1069: 0x1e92, + 0x106a: 0x1e97, 0x106b: 0x1f6e, 0x106c: 0x1f73, 0x106d: 0x1f96, 0x106e: 0x1fe6, 0x106f: 0x1ff0, + 0x1070: 0x2031, 0x1071: 0x203b, 0x1072: 0x4504, 0x1073: 0x450c, 0x1074: 0x4514, 0x1075: 0x1ef1, + 0x1076: 0x1ef6, 0x1077: 0x1f0a, 0x1078: 0x1f0f, 0x1079: 0x1f1e, 0x107a: 0x1f23, 0x107b: 0x1e74, + 0x107c: 0x1e79, 0x107d: 0x1e9c, 0x107e: 0x1ea1, 0x107f: 0x1e33, // Block 0x42, offset 0x1080 - 0x1090: 0x2311, 0x1091: 0x2326, - 0x1092: 0x2326, 0x1093: 0x232d, 0x1094: 0x2334, 0x1095: 0x2349, 0x1096: 0x2350, 0x1097: 0x2357, - 0x1098: 0x237a, 0x1099: 0x237a, 0x109a: 0x239d, 0x109b: 0x2396, 0x109c: 0x23b2, 0x109d: 0x23a4, - 0x109e: 0x23ab, 0x109f: 0x23ce, 0x10a0: 0x23ce, 0x10a1: 0x23c7, 0x10a2: 0x23d5, 0x10a3: 0x23d5, - 0x10a4: 0x23ff, 0x10a5: 0x23ff, 0x10a6: 0x241b, 0x10a7: 0x23e3, 0x10a8: 0x23e3, 0x10a9: 0x23dc, - 0x10aa: 0x23f1, 0x10ab: 0x23f1, 0x10ac: 0x23f8, 0x10ad: 0x23f8, 0x10ae: 0x2422, 0x10af: 0x2430, - 0x10b0: 0x2430, 0x10b1: 0x2437, 0x10b2: 0x2437, 0x10b3: 0x243e, 0x10b4: 0x2445, 0x10b5: 0x244c, - 0x10b6: 0x2453, 0x10b7: 0x2453, 0x10b8: 0x245a, 0x10b9: 0x2468, 0x10ba: 0x2476, 0x10bb: 0x246f, - 0x10bc: 0x247d, 0x10bd: 0x247d, 0x10be: 0x2492, 0x10bf: 0x2499, + 0x1080: 0x1e38, 0x1081: 0x1e1f, 0x1082: 0x1e24, 0x1083: 0x1e4c, 0x1084: 0x1e51, 0x1085: 0x1eba, + 0x1086: 0x1ebf, 0x1087: 0x1edd, 0x1088: 0x1ee2, 0x1089: 0x1e7e, 0x108a: 0x1e83, 0x108b: 0x1e88, + 0x108c: 0x1e92, 0x108d: 0x1e8d, 0x108e: 0x1e65, 0x108f: 0x1eb0, 0x1090: 0x1ed3, 0x1091: 0x1ef1, + 0x1092: 0x1ef6, 0x1093: 0x1f0a, 0x1094: 0x1f0f, 0x1095: 0x1f1e, 0x1096: 0x1f23, 0x1097: 0x1e74, + 0x1098: 0x1e79, 0x1099: 0x1e9c, 0x109a: 0x1ea1, 0x109b: 0x1e33, 0x109c: 0x1e38, 0x109d: 0x1e1f, + 0x109e: 0x1e24, 0x109f: 0x1e4c, 0x10a0: 0x1e51, 0x10a1: 0x1eba, 0x10a2: 0x1ebf, 0x10a3: 0x1edd, + 0x10a4: 0x1ee2, 0x10a5: 0x1e7e, 0x10a6: 0x1e83, 0x10a7: 0x1e88, 0x10a8: 0x1e92, 0x10a9: 0x1e8d, + 0x10aa: 0x1e65, 0x10ab: 0x1eb0, 0x10ac: 0x1ed3, 0x10ad: 0x1e7e, 0x10ae: 0x1e83, 0x10af: 0x1e88, + 0x10b0: 0x1e92, 0x10b1: 0x1e6f, 0x10b2: 0x1e97, 0x10b3: 0x1eec, 0x10b4: 0x1e56, 0x10b5: 0x1e5b, + 0x10b6: 0x1e60, 0x10b7: 0x1e7e, 0x10b8: 0x1e83, 0x10b9: 0x1e88, 0x10ba: 0x1eec, 0x10bb: 0x1efb, + 0x10bc: 0x4408, 0x10bd: 0x4408, // Block 0x43, offset 0x10c0 - 0x10c0: 0x24ca, 0x10c1: 0x24d8, 0x10c2: 0x24d1, 0x10c3: 0x24b5, 0x10c4: 0x24b5, 0x10c5: 0x24df, - 0x10c6: 0x24df, 0x10c7: 0x24e6, 0x10c8: 0x24e6, 0x10c9: 0x2510, 0x10ca: 0x2517, 0x10cb: 0x251e, - 0x10cc: 0x24f4, 0x10cd: 0x2502, 0x10ce: 0x2525, 0x10cf: 0x252c, - 0x10d2: 0x24fb, 0x10d3: 0x2580, 0x10d4: 0x2587, 0x10d5: 0x255d, 0x10d6: 0x2564, 0x10d7: 0x2548, - 0x10d8: 0x2548, 0x10d9: 0x254f, 0x10da: 0x2579, 0x10db: 0x2572, 0x10dc: 0x259c, 0x10dd: 0x259c, - 0x10de: 0x230a, 0x10df: 0x231f, 0x10e0: 0x2318, 0x10e1: 0x2342, 0x10e2: 0x233b, 0x10e3: 0x2365, - 0x10e4: 0x235e, 0x10e5: 0x2388, 0x10e6: 0x236c, 0x10e7: 0x2381, 0x10e8: 0x23b9, 0x10e9: 0x2406, - 0x10ea: 0x23ea, 0x10eb: 0x2429, 0x10ec: 0x24c3, 0x10ed: 0x24ed, 0x10ee: 0x2595, 0x10ef: 0x258e, - 0x10f0: 0x25a3, 0x10f1: 0x253a, 0x10f2: 0x24a0, 0x10f3: 0x256b, 0x10f4: 0x2492, 0x10f5: 0x24ca, - 0x10f6: 0x2461, 0x10f7: 0x24ae, 0x10f8: 0x2541, 0x10f9: 0x2533, 0x10fa: 0x24bc, 0x10fb: 0x24a7, - 0x10fc: 0x24bc, 0x10fd: 0x2541, 0x10fe: 0x2373, 0x10ff: 0x238f, + 0x10d0: 0x2311, 0x10d1: 0x2326, + 0x10d2: 0x2326, 0x10d3: 0x232d, 0x10d4: 0x2334, 0x10d5: 0x2349, 0x10d6: 0x2350, 0x10d7: 0x2357, + 0x10d8: 0x237a, 0x10d9: 0x237a, 0x10da: 0x239d, 0x10db: 0x2396, 0x10dc: 0x23b2, 0x10dd: 0x23a4, + 0x10de: 0x23ab, 0x10df: 0x23ce, 0x10e0: 0x23ce, 0x10e1: 0x23c7, 0x10e2: 0x23d5, 0x10e3: 0x23d5, + 0x10e4: 0x23ff, 0x10e5: 0x23ff, 0x10e6: 0x241b, 0x10e7: 0x23e3, 0x10e8: 0x23e3, 0x10e9: 0x23dc, + 0x10ea: 0x23f1, 0x10eb: 0x23f1, 0x10ec: 0x23f8, 0x10ed: 0x23f8, 0x10ee: 0x2422, 0x10ef: 0x2430, + 0x10f0: 0x2430, 0x10f1: 0x2437, 0x10f2: 0x2437, 0x10f3: 0x243e, 0x10f4: 0x2445, 0x10f5: 0x244c, + 0x10f6: 0x2453, 0x10f7: 0x2453, 0x10f8: 0x245a, 0x10f9: 0x2468, 0x10fa: 0x2476, 0x10fb: 0x246f, + 0x10fc: 0x247d, 0x10fd: 0x247d, 0x10fe: 0x2492, 0x10ff: 0x2499, // Block 0x44, offset 0x1100 - 0x1100: 0x2509, 0x1101: 0x2484, 0x1102: 0x2303, 0x1103: 0x24a7, 0x1104: 0x244c, 0x1105: 0x241b, - 0x1106: 0x23c0, 0x1107: 0x2556, - 0x1130: 0x2414, 0x1131: 0x248b, 0x1132: 0x27bf, 0x1133: 0x27b6, 0x1134: 0x27ec, 0x1135: 0x27da, - 0x1136: 0x27c8, 0x1137: 0x27e3, 0x1138: 0x27f5, 0x1139: 0x240d, 0x113a: 0x2c7c, 0x113b: 0x2afc, - 0x113c: 0x27d1, + 0x1100: 0x24ca, 0x1101: 0x24d8, 0x1102: 0x24d1, 0x1103: 0x24b5, 0x1104: 0x24b5, 0x1105: 0x24df, + 0x1106: 0x24df, 0x1107: 0x24e6, 0x1108: 0x24e6, 0x1109: 0x2510, 0x110a: 0x2517, 0x110b: 0x251e, + 0x110c: 0x24f4, 0x110d: 0x2502, 0x110e: 0x2525, 0x110f: 0x252c, + 0x1112: 0x24fb, 0x1113: 0x2580, 0x1114: 0x2587, 0x1115: 0x255d, 0x1116: 0x2564, 0x1117: 0x2548, + 0x1118: 0x2548, 0x1119: 0x254f, 0x111a: 0x2579, 0x111b: 0x2572, 0x111c: 0x259c, 0x111d: 0x259c, + 0x111e: 0x230a, 0x111f: 0x231f, 0x1120: 0x2318, 0x1121: 0x2342, 0x1122: 0x233b, 0x1123: 0x2365, + 0x1124: 0x235e, 0x1125: 0x2388, 0x1126: 0x236c, 0x1127: 0x2381, 0x1128: 0x23b9, 0x1129: 0x2406, + 0x112a: 0x23ea, 0x112b: 0x2429, 0x112c: 0x24c3, 0x112d: 0x24ed, 0x112e: 0x2595, 0x112f: 0x258e, + 0x1130: 0x25a3, 0x1131: 0x253a, 0x1132: 0x24a0, 0x1133: 0x256b, 0x1134: 0x2492, 0x1135: 0x24ca, + 0x1136: 0x2461, 0x1137: 0x24ae, 0x1138: 0x2541, 0x1139: 0x2533, 0x113a: 0x24bc, 0x113b: 0x24a7, + 0x113c: 0x24bc, 0x113d: 0x2541, 0x113e: 0x2373, 0x113f: 0x238f, // Block 0x45, offset 0x1140 - 0x1150: 0x0019, 0x1151: 0x0483, - 0x1152: 0x0487, 0x1153: 0x0035, 0x1154: 0x0037, 0x1155: 0x0003, 0x1156: 0x003f, 0x1157: 0x04bf, - 0x1158: 0x04c3, 0x1159: 0x1b5c, - 0x1160: 0x8132, 0x1161: 0x8132, 0x1162: 0x8132, 0x1163: 0x8132, - 0x1164: 0x8132, 0x1165: 0x8132, 0x1166: 0x8132, 0x1167: 0x812d, 0x1168: 0x812d, 0x1169: 0x812d, - 0x116a: 0x812d, 0x116b: 0x812d, 0x116c: 0x812d, 0x116d: 0x812d, 0x116e: 0x8132, 0x116f: 0x8132, - 0x1170: 0x1873, 0x1171: 0x0443, 0x1172: 0x043f, 0x1173: 0x007f, 0x1174: 0x007f, 0x1175: 0x0011, - 0x1176: 0x0013, 0x1177: 0x00b7, 0x1178: 0x00bb, 0x1179: 0x04b7, 0x117a: 0x04bb, 0x117b: 0x04ab, - 0x117c: 0x04af, 0x117d: 0x0493, 0x117e: 0x0497, 0x117f: 0x048b, + 0x1140: 0x2509, 0x1141: 0x2484, 0x1142: 0x2303, 0x1143: 0x24a7, 0x1144: 0x244c, 0x1145: 0x241b, + 0x1146: 0x23c0, 0x1147: 0x2556, + 0x1170: 0x2414, 0x1171: 0x248b, 0x1172: 0x27bf, 0x1173: 0x27b6, 0x1174: 0x27ec, 0x1175: 0x27da, + 0x1176: 0x27c8, 0x1177: 0x27e3, 0x1178: 0x27f5, 0x1179: 0x240d, 0x117a: 0x2c7c, 0x117b: 0x2afc, + 0x117c: 0x27d1, // Block 0x46, offset 0x1180 - 0x1180: 0x048f, 0x1181: 0x049b, 0x1182: 0x049f, 0x1183: 0x04a3, 0x1184: 0x04a7, - 0x1187: 0x0077, 0x1188: 0x007b, 0x1189: 0x4269, 0x118a: 0x4269, 0x118b: 0x4269, - 0x118c: 0x4269, 0x118d: 0x007f, 0x118e: 0x007f, 0x118f: 0x007f, 0x1190: 0x0019, 0x1191: 0x0483, - 0x1192: 0x001d, 0x1194: 0x0037, 0x1195: 0x0035, 0x1196: 0x003f, 0x1197: 0x0003, - 0x1198: 0x0443, 0x1199: 0x0011, 0x119a: 0x0013, 0x119b: 0x00b7, 0x119c: 0x00bb, 0x119d: 0x04b7, - 0x119e: 0x04bb, 0x119f: 0x0007, 0x11a0: 0x000d, 0x11a1: 0x0015, 0x11a2: 0x0017, 0x11a3: 0x001b, - 0x11a4: 0x0039, 0x11a5: 0x003d, 0x11a6: 0x003b, 0x11a8: 0x0079, 0x11a9: 0x0009, - 0x11aa: 0x000b, 0x11ab: 0x0041, - 0x11b0: 0x42aa, 0x11b1: 0x442c, 0x11b2: 0x42af, 0x11b4: 0x42b4, - 0x11b6: 0x42b9, 0x11b7: 0x4432, 0x11b8: 0x42be, 0x11b9: 0x4438, 0x11ba: 0x42c3, 0x11bb: 0x443e, - 0x11bc: 0x42c8, 0x11bd: 0x4444, 0x11be: 0x42cd, 0x11bf: 0x444a, + 0x1190: 0x0019, 0x1191: 0x0483, + 0x1192: 0x0487, 0x1193: 0x0035, 0x1194: 0x0037, 0x1195: 0x0003, 0x1196: 0x003f, 0x1197: 0x04bf, + 0x1198: 0x04c3, 0x1199: 0x1b5c, + 0x11a0: 0x8132, 0x11a1: 0x8132, 0x11a2: 0x8132, 0x11a3: 0x8132, + 0x11a4: 0x8132, 0x11a5: 0x8132, 0x11a6: 0x8132, 0x11a7: 0x812d, 0x11a8: 0x812d, 0x11a9: 0x812d, + 0x11aa: 0x812d, 0x11ab: 0x812d, 0x11ac: 0x812d, 0x11ad: 0x812d, 0x11ae: 0x8132, 0x11af: 0x8132, + 0x11b0: 0x1873, 0x11b1: 0x0443, 0x11b2: 0x043f, 0x11b3: 0x007f, 0x11b4: 0x007f, 0x11b5: 0x0011, + 0x11b6: 0x0013, 0x11b7: 0x00b7, 0x11b8: 0x00bb, 0x11b9: 0x04b7, 0x11ba: 0x04bb, 0x11bb: 0x04ab, + 0x11bc: 0x04af, 0x11bd: 0x0493, 0x11be: 0x0497, 0x11bf: 0x048b, // Block 0x47, offset 0x11c0 - 0x11c0: 0x0236, 0x11c1: 0x440e, 0x11c2: 0x440e, 0x11c3: 0x4414, 0x11c4: 0x4414, 0x11c5: 0x4456, - 0x11c6: 0x4456, 0x11c7: 0x441a, 0x11c8: 0x441a, 0x11c9: 0x4462, 0x11ca: 0x4462, 0x11cb: 0x4462, - 0x11cc: 0x4462, 0x11cd: 0x0239, 0x11ce: 0x0239, 0x11cf: 0x023c, 0x11d0: 0x023c, 0x11d1: 0x023c, - 0x11d2: 0x023c, 0x11d3: 0x023f, 0x11d4: 0x023f, 0x11d5: 0x0242, 0x11d6: 0x0242, 0x11d7: 0x0242, - 0x11d8: 0x0242, 0x11d9: 0x0245, 0x11da: 0x0245, 0x11db: 0x0245, 0x11dc: 0x0245, 0x11dd: 0x0248, - 0x11de: 0x0248, 0x11df: 0x0248, 0x11e0: 0x0248, 0x11e1: 0x024b, 0x11e2: 0x024b, 0x11e3: 0x024b, - 0x11e4: 0x024b, 0x11e5: 0x024e, 0x11e6: 0x024e, 0x11e7: 0x024e, 0x11e8: 0x024e, 0x11e9: 0x0251, - 0x11ea: 0x0251, 0x11eb: 0x0254, 0x11ec: 0x0254, 0x11ed: 0x0257, 0x11ee: 0x0257, 0x11ef: 0x025a, - 0x11f0: 0x025a, 0x11f1: 0x025d, 0x11f2: 0x025d, 0x11f3: 0x025d, 0x11f4: 0x025d, 0x11f5: 0x0260, - 0x11f6: 0x0260, 0x11f7: 0x0260, 0x11f8: 0x0260, 0x11f9: 0x0263, 0x11fa: 0x0263, 0x11fb: 0x0263, - 0x11fc: 0x0263, 0x11fd: 0x0266, 0x11fe: 0x0266, 0x11ff: 0x0266, + 0x11c0: 0x048f, 0x11c1: 0x049b, 0x11c2: 0x049f, 0x11c3: 0x04a3, 0x11c4: 0x04a7, + 0x11c7: 0x0077, 0x11c8: 0x007b, 0x11c9: 0x4269, 0x11ca: 0x4269, 0x11cb: 0x4269, + 0x11cc: 0x4269, 0x11cd: 0x007f, 0x11ce: 0x007f, 0x11cf: 0x007f, 0x11d0: 0x0019, 0x11d1: 0x0483, + 0x11d2: 0x001d, 0x11d4: 0x0037, 0x11d5: 0x0035, 0x11d6: 0x003f, 0x11d7: 0x0003, + 0x11d8: 0x0443, 0x11d9: 0x0011, 0x11da: 0x0013, 0x11db: 0x00b7, 0x11dc: 0x00bb, 0x11dd: 0x04b7, + 0x11de: 0x04bb, 0x11df: 0x0007, 0x11e0: 0x000d, 0x11e1: 0x0015, 0x11e2: 0x0017, 0x11e3: 0x001b, + 0x11e4: 0x0039, 0x11e5: 0x003d, 0x11e6: 0x003b, 0x11e8: 0x0079, 0x11e9: 0x0009, + 0x11ea: 0x000b, 0x11eb: 0x0041, + 0x11f0: 0x42aa, 0x11f1: 0x442c, 0x11f2: 0x42af, 0x11f4: 0x42b4, + 0x11f6: 0x42b9, 0x11f7: 0x4432, 0x11f8: 0x42be, 0x11f9: 0x4438, 0x11fa: 0x42c3, 0x11fb: 0x443e, + 0x11fc: 0x42c8, 0x11fd: 0x4444, 0x11fe: 0x42cd, 0x11ff: 0x444a, // Block 0x48, offset 0x1200 - 0x1200: 0x0266, 0x1201: 0x0269, 0x1202: 0x0269, 0x1203: 0x0269, 0x1204: 0x0269, 0x1205: 0x026c, - 0x1206: 0x026c, 0x1207: 0x026c, 0x1208: 0x026c, 0x1209: 0x026f, 0x120a: 0x026f, 0x120b: 0x026f, - 0x120c: 0x026f, 0x120d: 0x0272, 0x120e: 0x0272, 0x120f: 0x0272, 0x1210: 0x0272, 0x1211: 0x0275, - 0x1212: 0x0275, 0x1213: 0x0275, 0x1214: 0x0275, 0x1215: 0x0278, 0x1216: 0x0278, 0x1217: 0x0278, - 0x1218: 0x0278, 0x1219: 0x027b, 0x121a: 0x027b, 0x121b: 0x027b, 0x121c: 0x027b, 0x121d: 0x027e, - 0x121e: 0x027e, 0x121f: 0x027e, 0x1220: 0x027e, 0x1221: 0x0281, 0x1222: 0x0281, 0x1223: 0x0281, - 0x1224: 0x0281, 0x1225: 0x0284, 0x1226: 0x0284, 0x1227: 0x0284, 0x1228: 0x0284, 0x1229: 0x0287, - 0x122a: 0x0287, 0x122b: 0x0287, 0x122c: 0x0287, 0x122d: 0x028a, 0x122e: 0x028a, 0x122f: 0x028d, - 0x1230: 0x028d, 0x1231: 0x0290, 0x1232: 0x0290, 0x1233: 0x0290, 0x1234: 0x0290, 0x1235: 0x2e00, - 0x1236: 0x2e00, 0x1237: 0x2e08, 0x1238: 0x2e08, 0x1239: 0x2e10, 0x123a: 0x2e10, 0x123b: 0x1f82, - 0x123c: 0x1f82, + 0x1200: 0x0236, 0x1201: 0x440e, 0x1202: 0x440e, 0x1203: 0x4414, 0x1204: 0x4414, 0x1205: 0x4456, + 0x1206: 0x4456, 0x1207: 0x441a, 0x1208: 0x441a, 0x1209: 0x4462, 0x120a: 0x4462, 0x120b: 0x4462, + 0x120c: 0x4462, 0x120d: 0x0239, 0x120e: 0x0239, 0x120f: 0x023c, 0x1210: 0x023c, 0x1211: 0x023c, + 0x1212: 0x023c, 0x1213: 0x023f, 0x1214: 0x023f, 0x1215: 0x0242, 0x1216: 0x0242, 0x1217: 0x0242, + 0x1218: 0x0242, 0x1219: 0x0245, 0x121a: 0x0245, 0x121b: 0x0245, 0x121c: 0x0245, 0x121d: 0x0248, + 0x121e: 0x0248, 0x121f: 0x0248, 0x1220: 0x0248, 0x1221: 0x024b, 0x1222: 0x024b, 0x1223: 0x024b, + 0x1224: 0x024b, 0x1225: 0x024e, 0x1226: 0x024e, 0x1227: 0x024e, 0x1228: 0x024e, 0x1229: 0x0251, + 0x122a: 0x0251, 0x122b: 0x0254, 0x122c: 0x0254, 0x122d: 0x0257, 0x122e: 0x0257, 0x122f: 0x025a, + 0x1230: 0x025a, 0x1231: 0x025d, 0x1232: 0x025d, 0x1233: 0x025d, 0x1234: 0x025d, 0x1235: 0x0260, + 0x1236: 0x0260, 0x1237: 0x0260, 0x1238: 0x0260, 0x1239: 0x0263, 0x123a: 0x0263, 0x123b: 0x0263, + 0x123c: 0x0263, 0x123d: 0x0266, 0x123e: 0x0266, 0x123f: 0x0266, // Block 0x49, offset 0x1240 - 0x1240: 0x0081, 0x1241: 0x0083, 0x1242: 0x0085, 0x1243: 0x0087, 0x1244: 0x0089, 0x1245: 0x008b, - 0x1246: 0x008d, 0x1247: 0x008f, 0x1248: 0x0091, 0x1249: 0x0093, 0x124a: 0x0095, 0x124b: 0x0097, - 0x124c: 0x0099, 0x124d: 0x009b, 0x124e: 0x009d, 0x124f: 0x009f, 0x1250: 0x00a1, 0x1251: 0x00a3, - 0x1252: 0x00a5, 0x1253: 0x00a7, 0x1254: 0x00a9, 0x1255: 0x00ab, 0x1256: 0x00ad, 0x1257: 0x00af, - 0x1258: 0x00b1, 0x1259: 0x00b3, 0x125a: 0x00b5, 0x125b: 0x00b7, 0x125c: 0x00b9, 0x125d: 0x00bb, - 0x125e: 0x00bd, 0x125f: 0x0477, 0x1260: 0x047b, 0x1261: 0x0487, 0x1262: 0x049b, 0x1263: 0x049f, - 0x1264: 0x0483, 0x1265: 0x05ab, 0x1266: 0x05a3, 0x1267: 0x04c7, 0x1268: 0x04cf, 0x1269: 0x04d7, - 0x126a: 0x04df, 0x126b: 0x04e7, 0x126c: 0x056b, 0x126d: 0x0573, 0x126e: 0x057b, 0x126f: 0x051f, - 0x1270: 0x05af, 0x1271: 0x04cb, 0x1272: 0x04d3, 0x1273: 0x04db, 0x1274: 0x04e3, 0x1275: 0x04eb, - 0x1276: 0x04ef, 0x1277: 0x04f3, 0x1278: 0x04f7, 0x1279: 0x04fb, 0x127a: 0x04ff, 0x127b: 0x0503, - 0x127c: 0x0507, 0x127d: 0x050b, 0x127e: 0x050f, 0x127f: 0x0513, + 0x1240: 0x0266, 0x1241: 0x0269, 0x1242: 0x0269, 0x1243: 0x0269, 0x1244: 0x0269, 0x1245: 0x026c, + 0x1246: 0x026c, 0x1247: 0x026c, 0x1248: 0x026c, 0x1249: 0x026f, 0x124a: 0x026f, 0x124b: 0x026f, + 0x124c: 0x026f, 0x124d: 0x0272, 0x124e: 0x0272, 0x124f: 0x0272, 0x1250: 0x0272, 0x1251: 0x0275, + 0x1252: 0x0275, 0x1253: 0x0275, 0x1254: 0x0275, 0x1255: 0x0278, 0x1256: 0x0278, 0x1257: 0x0278, + 0x1258: 0x0278, 0x1259: 0x027b, 0x125a: 0x027b, 0x125b: 0x027b, 0x125c: 0x027b, 0x125d: 0x027e, + 0x125e: 0x027e, 0x125f: 0x027e, 0x1260: 0x027e, 0x1261: 0x0281, 0x1262: 0x0281, 0x1263: 0x0281, + 0x1264: 0x0281, 0x1265: 0x0284, 0x1266: 0x0284, 0x1267: 0x0284, 0x1268: 0x0284, 0x1269: 0x0287, + 0x126a: 0x0287, 0x126b: 0x0287, 0x126c: 0x0287, 0x126d: 0x028a, 0x126e: 0x028a, 0x126f: 0x028d, + 0x1270: 0x028d, 0x1271: 0x0290, 0x1272: 0x0290, 0x1273: 0x0290, 0x1274: 0x0290, 0x1275: 0x2e00, + 0x1276: 0x2e00, 0x1277: 0x2e08, 0x1278: 0x2e08, 0x1279: 0x2e10, 0x127a: 0x2e10, 0x127b: 0x1f82, + 0x127c: 0x1f82, // Block 0x4a, offset 0x1280 - 0x1280: 0x0517, 0x1281: 0x051b, 0x1282: 0x0523, 0x1283: 0x0527, 0x1284: 0x052b, 0x1285: 0x052f, - 0x1286: 0x0533, 0x1287: 0x0537, 0x1288: 0x053b, 0x1289: 0x053f, 0x128a: 0x0543, 0x128b: 0x0547, - 0x128c: 0x054b, 0x128d: 0x054f, 0x128e: 0x0553, 0x128f: 0x0557, 0x1290: 0x055b, 0x1291: 0x055f, - 0x1292: 0x0563, 0x1293: 0x0567, 0x1294: 0x056f, 0x1295: 0x0577, 0x1296: 0x057f, 0x1297: 0x0583, - 0x1298: 0x0587, 0x1299: 0x058b, 0x129a: 0x058f, 0x129b: 0x0593, 0x129c: 0x0597, 0x129d: 0x05a7, - 0x129e: 0x4a78, 0x129f: 0x4a7e, 0x12a0: 0x03c3, 0x12a1: 0x0313, 0x12a2: 0x0317, 0x12a3: 0x4a3b, - 0x12a4: 0x031b, 0x12a5: 0x4a41, 0x12a6: 0x4a47, 0x12a7: 0x031f, 0x12a8: 0x0323, 0x12a9: 0x0327, - 0x12aa: 0x4a4d, 0x12ab: 0x4a53, 0x12ac: 0x4a59, 0x12ad: 0x4a5f, 0x12ae: 0x4a65, 0x12af: 0x4a6b, - 0x12b0: 0x0367, 0x12b1: 0x032b, 0x12b2: 0x032f, 0x12b3: 0x0333, 0x12b4: 0x037b, 0x12b5: 0x0337, - 0x12b6: 0x033b, 0x12b7: 0x033f, 0x12b8: 0x0343, 0x12b9: 0x0347, 0x12ba: 0x034b, 0x12bb: 0x034f, - 0x12bc: 0x0353, 0x12bd: 0x0357, 0x12be: 0x035b, + 0x1280: 0x0081, 0x1281: 0x0083, 0x1282: 0x0085, 0x1283: 0x0087, 0x1284: 0x0089, 0x1285: 0x008b, + 0x1286: 0x008d, 0x1287: 0x008f, 0x1288: 0x0091, 0x1289: 0x0093, 0x128a: 0x0095, 0x128b: 0x0097, + 0x128c: 0x0099, 0x128d: 0x009b, 0x128e: 0x009d, 0x128f: 0x009f, 0x1290: 0x00a1, 0x1291: 0x00a3, + 0x1292: 0x00a5, 0x1293: 0x00a7, 0x1294: 0x00a9, 0x1295: 0x00ab, 0x1296: 0x00ad, 0x1297: 0x00af, + 0x1298: 0x00b1, 0x1299: 0x00b3, 0x129a: 0x00b5, 0x129b: 0x00b7, 0x129c: 0x00b9, 0x129d: 0x00bb, + 0x129e: 0x00bd, 0x129f: 0x0477, 0x12a0: 0x047b, 0x12a1: 0x0487, 0x12a2: 0x049b, 0x12a3: 0x049f, + 0x12a4: 0x0483, 0x12a5: 0x05ab, 0x12a6: 0x05a3, 0x12a7: 0x04c7, 0x12a8: 0x04cf, 0x12a9: 0x04d7, + 0x12aa: 0x04df, 0x12ab: 0x04e7, 0x12ac: 0x056b, 0x12ad: 0x0573, 0x12ae: 0x057b, 0x12af: 0x051f, + 0x12b0: 0x05af, 0x12b1: 0x04cb, 0x12b2: 0x04d3, 0x12b3: 0x04db, 0x12b4: 0x04e3, 0x12b5: 0x04eb, + 0x12b6: 0x04ef, 0x12b7: 0x04f3, 0x12b8: 0x04f7, 0x12b9: 0x04fb, 0x12ba: 0x04ff, 0x12bb: 0x0503, + 0x12bc: 0x0507, 0x12bd: 0x050b, 0x12be: 0x050f, 0x12bf: 0x0513, // Block 0x4b, offset 0x12c0 - 0x12c2: 0x49bd, 0x12c3: 0x49c3, 0x12c4: 0x49c9, 0x12c5: 0x49cf, - 0x12c6: 0x49d5, 0x12c7: 0x49db, 0x12ca: 0x49e1, 0x12cb: 0x49e7, - 0x12cc: 0x49ed, 0x12cd: 0x49f3, 0x12ce: 0x49f9, 0x12cf: 0x49ff, - 0x12d2: 0x4a05, 0x12d3: 0x4a0b, 0x12d4: 0x4a11, 0x12d5: 0x4a17, 0x12d6: 0x4a1d, 0x12d7: 0x4a23, - 0x12da: 0x4a29, 0x12db: 0x4a2f, 0x12dc: 0x4a35, - 0x12e0: 0x00bf, 0x12e1: 0x00c2, 0x12e2: 0x00cb, 0x12e3: 0x4264, - 0x12e4: 0x00c8, 0x12e5: 0x00c5, 0x12e6: 0x0447, 0x12e8: 0x046b, 0x12e9: 0x044b, - 0x12ea: 0x044f, 0x12eb: 0x0453, 0x12ec: 0x0457, 0x12ed: 0x046f, 0x12ee: 0x0473, + 0x12c0: 0x0517, 0x12c1: 0x051b, 0x12c2: 0x0523, 0x12c3: 0x0527, 0x12c4: 0x052b, 0x12c5: 0x052f, + 0x12c6: 0x0533, 0x12c7: 0x0537, 0x12c8: 0x053b, 0x12c9: 0x053f, 0x12ca: 0x0543, 0x12cb: 0x0547, + 0x12cc: 0x054b, 0x12cd: 0x054f, 0x12ce: 0x0553, 0x12cf: 0x0557, 0x12d0: 0x055b, 0x12d1: 0x055f, + 0x12d2: 0x0563, 0x12d3: 0x0567, 0x12d4: 0x056f, 0x12d5: 0x0577, 0x12d6: 0x057f, 0x12d7: 0x0583, + 0x12d8: 0x0587, 0x12d9: 0x058b, 0x12da: 0x058f, 0x12db: 0x0593, 0x12dc: 0x0597, 0x12dd: 0x05a7, + 0x12de: 0x4a78, 0x12df: 0x4a7e, 0x12e0: 0x03c3, 0x12e1: 0x0313, 0x12e2: 0x0317, 0x12e3: 0x4a3b, + 0x12e4: 0x031b, 0x12e5: 0x4a41, 0x12e6: 0x4a47, 0x12e7: 0x031f, 0x12e8: 0x0323, 0x12e9: 0x0327, + 0x12ea: 0x4a4d, 0x12eb: 0x4a53, 0x12ec: 0x4a59, 0x12ed: 0x4a5f, 0x12ee: 0x4a65, 0x12ef: 0x4a6b, + 0x12f0: 0x0367, 0x12f1: 0x032b, 0x12f2: 0x032f, 0x12f3: 0x0333, 0x12f4: 0x037b, 0x12f5: 0x0337, + 0x12f6: 0x033b, 0x12f7: 0x033f, 0x12f8: 0x0343, 0x12f9: 0x0347, 0x12fa: 0x034b, 0x12fb: 0x034f, + 0x12fc: 0x0353, 0x12fd: 0x0357, 0x12fe: 0x035b, // Block 0x4c, offset 0x1300 - 0x1300: 0x0063, 0x1301: 0x0065, 0x1302: 0x0067, 0x1303: 0x0069, 0x1304: 0x006b, 0x1305: 0x006d, - 0x1306: 0x006f, 0x1307: 0x0071, 0x1308: 0x0073, 0x1309: 0x0075, 0x130a: 0x0083, 0x130b: 0x0085, - 0x130c: 0x0087, 0x130d: 0x0089, 0x130e: 0x008b, 0x130f: 0x008d, 0x1310: 0x008f, 0x1311: 0x0091, - 0x1312: 0x0093, 0x1313: 0x0095, 0x1314: 0x0097, 0x1315: 0x0099, 0x1316: 0x009b, 0x1317: 0x009d, - 0x1318: 0x009f, 0x1319: 0x00a1, 0x131a: 0x00a3, 0x131b: 0x00a5, 0x131c: 0x00a7, 0x131d: 0x00a9, - 0x131e: 0x00ab, 0x131f: 0x00ad, 0x1320: 0x00af, 0x1321: 0x00b1, 0x1322: 0x00b3, 0x1323: 0x00b5, - 0x1324: 0x00dd, 0x1325: 0x00f2, 0x1328: 0x0173, 0x1329: 0x0176, - 0x132a: 0x0179, 0x132b: 0x017c, 0x132c: 0x017f, 0x132d: 0x0182, 0x132e: 0x0185, 0x132f: 0x0188, - 0x1330: 0x018b, 0x1331: 0x018e, 0x1332: 0x0191, 0x1333: 0x0194, 0x1334: 0x0197, 0x1335: 0x019a, - 0x1336: 0x019d, 0x1337: 0x01a0, 0x1338: 0x01a3, 0x1339: 0x0188, 0x133a: 0x01a6, 0x133b: 0x01a9, - 0x133c: 0x01ac, 0x133d: 0x01af, 0x133e: 0x01b2, 0x133f: 0x01b5, + 0x1302: 0x49bd, 0x1303: 0x49c3, 0x1304: 0x49c9, 0x1305: 0x49cf, + 0x1306: 0x49d5, 0x1307: 0x49db, 0x130a: 0x49e1, 0x130b: 0x49e7, + 0x130c: 0x49ed, 0x130d: 0x49f3, 0x130e: 0x49f9, 0x130f: 0x49ff, + 0x1312: 0x4a05, 0x1313: 0x4a0b, 0x1314: 0x4a11, 0x1315: 0x4a17, 0x1316: 0x4a1d, 0x1317: 0x4a23, + 0x131a: 0x4a29, 0x131b: 0x4a2f, 0x131c: 0x4a35, + 0x1320: 0x00bf, 0x1321: 0x00c2, 0x1322: 0x00cb, 0x1323: 0x4264, + 0x1324: 0x00c8, 0x1325: 0x00c5, 0x1326: 0x0447, 0x1328: 0x046b, 0x1329: 0x044b, + 0x132a: 0x044f, 0x132b: 0x0453, 0x132c: 0x0457, 0x132d: 0x046f, 0x132e: 0x0473, // Block 0x4d, offset 0x1340 - 0x1340: 0x01fd, 0x1341: 0x0200, 0x1342: 0x0203, 0x1343: 0x045b, 0x1344: 0x01c7, 0x1345: 0x01d0, - 0x1346: 0x01d6, 0x1347: 0x01fa, 0x1348: 0x01eb, 0x1349: 0x01e8, 0x134a: 0x0206, 0x134b: 0x0209, - 0x134e: 0x0021, 0x134f: 0x0023, 0x1350: 0x0025, 0x1351: 0x0027, - 0x1352: 0x0029, 0x1353: 0x002b, 0x1354: 0x002d, 0x1355: 0x002f, 0x1356: 0x0031, 0x1357: 0x0033, - 0x1358: 0x0021, 0x1359: 0x0023, 0x135a: 0x0025, 0x135b: 0x0027, 0x135c: 0x0029, 0x135d: 0x002b, - 0x135e: 0x002d, 0x135f: 0x002f, 0x1360: 0x0031, 0x1361: 0x0033, 0x1362: 0x0021, 0x1363: 0x0023, - 0x1364: 0x0025, 0x1365: 0x0027, 0x1366: 0x0029, 0x1367: 0x002b, 0x1368: 0x002d, 0x1369: 0x002f, - 0x136a: 0x0031, 0x136b: 0x0033, 0x136c: 0x0021, 0x136d: 0x0023, 0x136e: 0x0025, 0x136f: 0x0027, - 0x1370: 0x0029, 0x1371: 0x002b, 0x1372: 0x002d, 0x1373: 0x002f, 0x1374: 0x0031, 0x1375: 0x0033, - 0x1376: 0x0021, 0x1377: 0x0023, 0x1378: 0x0025, 0x1379: 0x0027, 0x137a: 0x0029, 0x137b: 0x002b, - 0x137c: 0x002d, 0x137d: 0x002f, 0x137e: 0x0031, 0x137f: 0x0033, + 0x1340: 0x0063, 0x1341: 0x0065, 0x1342: 0x0067, 0x1343: 0x0069, 0x1344: 0x006b, 0x1345: 0x006d, + 0x1346: 0x006f, 0x1347: 0x0071, 0x1348: 0x0073, 0x1349: 0x0075, 0x134a: 0x0083, 0x134b: 0x0085, + 0x134c: 0x0087, 0x134d: 0x0089, 0x134e: 0x008b, 0x134f: 0x008d, 0x1350: 0x008f, 0x1351: 0x0091, + 0x1352: 0x0093, 0x1353: 0x0095, 0x1354: 0x0097, 0x1355: 0x0099, 0x1356: 0x009b, 0x1357: 0x009d, + 0x1358: 0x009f, 0x1359: 0x00a1, 0x135a: 0x00a3, 0x135b: 0x00a5, 0x135c: 0x00a7, 0x135d: 0x00a9, + 0x135e: 0x00ab, 0x135f: 0x00ad, 0x1360: 0x00af, 0x1361: 0x00b1, 0x1362: 0x00b3, 0x1363: 0x00b5, + 0x1364: 0x00dd, 0x1365: 0x00f2, 0x1368: 0x0173, 0x1369: 0x0176, + 0x136a: 0x0179, 0x136b: 0x017c, 0x136c: 0x017f, 0x136d: 0x0182, 0x136e: 0x0185, 0x136f: 0x0188, + 0x1370: 0x018b, 0x1371: 0x018e, 0x1372: 0x0191, 0x1373: 0x0194, 0x1374: 0x0197, 0x1375: 0x019a, + 0x1376: 0x019d, 0x1377: 0x01a0, 0x1378: 0x01a3, 0x1379: 0x0188, 0x137a: 0x01a6, 0x137b: 0x01a9, + 0x137c: 0x01ac, 0x137d: 0x01af, 0x137e: 0x01b2, 0x137f: 0x01b5, // Block 0x4e, offset 0x1380 - 0x1380: 0x0239, 0x1381: 0x023c, 0x1382: 0x0248, 0x1383: 0x0251, 0x1385: 0x028a, - 0x1386: 0x025a, 0x1387: 0x024b, 0x1388: 0x0269, 0x1389: 0x0290, 0x138a: 0x027b, 0x138b: 0x027e, - 0x138c: 0x0281, 0x138d: 0x0284, 0x138e: 0x025d, 0x138f: 0x026f, 0x1390: 0x0275, 0x1391: 0x0263, - 0x1392: 0x0278, 0x1393: 0x0257, 0x1394: 0x0260, 0x1395: 0x0242, 0x1396: 0x0245, 0x1397: 0x024e, - 0x1398: 0x0254, 0x1399: 0x0266, 0x139a: 0x026c, 0x139b: 0x0272, 0x139c: 0x0293, 0x139d: 0x02e4, - 0x139e: 0x02cc, 0x139f: 0x0296, 0x13a1: 0x023c, 0x13a2: 0x0248, - 0x13a4: 0x0287, 0x13a7: 0x024b, 0x13a9: 0x0290, - 0x13aa: 0x027b, 0x13ab: 0x027e, 0x13ac: 0x0281, 0x13ad: 0x0284, 0x13ae: 0x025d, 0x13af: 0x026f, - 0x13b0: 0x0275, 0x13b1: 0x0263, 0x13b2: 0x0278, 0x13b4: 0x0260, 0x13b5: 0x0242, - 0x13b6: 0x0245, 0x13b7: 0x024e, 0x13b9: 0x0266, 0x13bb: 0x0272, + 0x1380: 0x01fd, 0x1381: 0x0200, 0x1382: 0x0203, 0x1383: 0x045b, 0x1384: 0x01c7, 0x1385: 0x01d0, + 0x1386: 0x01d6, 0x1387: 0x01fa, 0x1388: 0x01eb, 0x1389: 0x01e8, 0x138a: 0x0206, 0x138b: 0x0209, + 0x138e: 0x0021, 0x138f: 0x0023, 0x1390: 0x0025, 0x1391: 0x0027, + 0x1392: 0x0029, 0x1393: 0x002b, 0x1394: 0x002d, 0x1395: 0x002f, 0x1396: 0x0031, 0x1397: 0x0033, + 0x1398: 0x0021, 0x1399: 0x0023, 0x139a: 0x0025, 0x139b: 0x0027, 0x139c: 0x0029, 0x139d: 0x002b, + 0x139e: 0x002d, 0x139f: 0x002f, 0x13a0: 0x0031, 0x13a1: 0x0033, 0x13a2: 0x0021, 0x13a3: 0x0023, + 0x13a4: 0x0025, 0x13a5: 0x0027, 0x13a6: 0x0029, 0x13a7: 0x002b, 0x13a8: 0x002d, 0x13a9: 0x002f, + 0x13aa: 0x0031, 0x13ab: 0x0033, 0x13ac: 0x0021, 0x13ad: 0x0023, 0x13ae: 0x0025, 0x13af: 0x0027, + 0x13b0: 0x0029, 0x13b1: 0x002b, 0x13b2: 0x002d, 0x13b3: 0x002f, 0x13b4: 0x0031, 0x13b5: 0x0033, + 0x13b6: 0x0021, 0x13b7: 0x0023, 0x13b8: 0x0025, 0x13b9: 0x0027, 0x13ba: 0x0029, 0x13bb: 0x002b, + 0x13bc: 0x002d, 0x13bd: 0x002f, 0x13be: 0x0031, 0x13bf: 0x0033, // Block 0x4f, offset 0x13c0 - 0x13c2: 0x0248, - 0x13c7: 0x024b, 0x13c9: 0x0290, 0x13cb: 0x027e, - 0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d1: 0x0263, - 0x13d2: 0x0278, 0x13d4: 0x0260, 0x13d7: 0x024e, - 0x13d9: 0x0266, 0x13db: 0x0272, 0x13dd: 0x02e4, - 0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248, - 0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e8: 0x0269, 0x13e9: 0x0290, - 0x13ea: 0x027b, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f, + 0x13c0: 0x0239, 0x13c1: 0x023c, 0x13c2: 0x0248, 0x13c3: 0x0251, 0x13c5: 0x028a, + 0x13c6: 0x025a, 0x13c7: 0x024b, 0x13c8: 0x0269, 0x13c9: 0x0290, 0x13ca: 0x027b, 0x13cb: 0x027e, + 0x13cc: 0x0281, 0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d0: 0x0275, 0x13d1: 0x0263, + 0x13d2: 0x0278, 0x13d3: 0x0257, 0x13d4: 0x0260, 0x13d5: 0x0242, 0x13d6: 0x0245, 0x13d7: 0x024e, + 0x13d8: 0x0254, 0x13d9: 0x0266, 0x13da: 0x026c, 0x13db: 0x0272, 0x13dc: 0x0293, 0x13dd: 0x02e4, + 0x13de: 0x02cc, 0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248, + 0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e9: 0x0290, + 0x13ea: 0x027b, 0x13eb: 0x027e, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f, 0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242, - 0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fa: 0x026c, 0x13fb: 0x0272, - 0x13fc: 0x0293, 0x13fe: 0x02cc, + 0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fb: 0x0272, // Block 0x50, offset 0x1400 - 0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1404: 0x0287, 0x1405: 0x028a, - 0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140b: 0x027e, - 0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263, - 0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e, - 0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272, - 0x1421: 0x023c, 0x1422: 0x0248, 0x1423: 0x0251, - 0x1425: 0x028a, 0x1426: 0x025a, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290, - 0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f, - 0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1433: 0x0257, 0x1434: 0x0260, 0x1435: 0x0242, - 0x1436: 0x0245, 0x1437: 0x024e, 0x1438: 0x0254, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272, + 0x1402: 0x0248, + 0x1407: 0x024b, 0x1409: 0x0290, 0x140b: 0x027e, + 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1411: 0x0263, + 0x1412: 0x0278, 0x1414: 0x0260, 0x1417: 0x024e, + 0x1419: 0x0266, 0x141b: 0x0272, 0x141d: 0x02e4, + 0x141f: 0x0296, 0x1421: 0x023c, 0x1422: 0x0248, + 0x1424: 0x0287, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290, + 0x142a: 0x027b, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f, + 0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1434: 0x0260, 0x1435: 0x0242, + 0x1436: 0x0245, 0x1437: 0x024e, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272, + 0x143c: 0x0293, 0x143e: 0x02cc, // Block 0x51, offset 0x1440 - 0x1440: 0x1879, 0x1441: 0x1876, 0x1442: 0x187c, 0x1443: 0x18a0, 0x1444: 0x18c4, 0x1445: 0x18e8, - 0x1446: 0x190c, 0x1447: 0x1915, 0x1448: 0x191b, 0x1449: 0x1921, 0x144a: 0x1927, - 0x1450: 0x1a8c, 0x1451: 0x1a90, - 0x1452: 0x1a94, 0x1453: 0x1a98, 0x1454: 0x1a9c, 0x1455: 0x1aa0, 0x1456: 0x1aa4, 0x1457: 0x1aa8, - 0x1458: 0x1aac, 0x1459: 0x1ab0, 0x145a: 0x1ab4, 0x145b: 0x1ab8, 0x145c: 0x1abc, 0x145d: 0x1ac0, - 0x145e: 0x1ac4, 0x145f: 0x1ac8, 0x1460: 0x1acc, 0x1461: 0x1ad0, 0x1462: 0x1ad4, 0x1463: 0x1ad8, - 0x1464: 0x1adc, 0x1465: 0x1ae0, 0x1466: 0x1ae4, 0x1467: 0x1ae8, 0x1468: 0x1aec, 0x1469: 0x1af0, - 0x146a: 0x271e, 0x146b: 0x0047, 0x146c: 0x0065, 0x146d: 0x193c, 0x146e: 0x19b1, - 0x1470: 0x0043, 0x1471: 0x0045, 0x1472: 0x0047, 0x1473: 0x0049, 0x1474: 0x004b, 0x1475: 0x004d, - 0x1476: 0x004f, 0x1477: 0x0051, 0x1478: 0x0053, 0x1479: 0x0055, 0x147a: 0x0057, 0x147b: 0x0059, - 0x147c: 0x005b, 0x147d: 0x005d, 0x147e: 0x005f, 0x147f: 0x0061, + 0x1440: 0x0239, 0x1441: 0x023c, 0x1442: 0x0248, 0x1443: 0x0251, 0x1444: 0x0287, 0x1445: 0x028a, + 0x1446: 0x025a, 0x1447: 0x024b, 0x1448: 0x0269, 0x1449: 0x0290, 0x144b: 0x027e, + 0x144c: 0x0281, 0x144d: 0x0284, 0x144e: 0x025d, 0x144f: 0x026f, 0x1450: 0x0275, 0x1451: 0x0263, + 0x1452: 0x0278, 0x1453: 0x0257, 0x1454: 0x0260, 0x1455: 0x0242, 0x1456: 0x0245, 0x1457: 0x024e, + 0x1458: 0x0254, 0x1459: 0x0266, 0x145a: 0x026c, 0x145b: 0x0272, + 0x1461: 0x023c, 0x1462: 0x0248, 0x1463: 0x0251, + 0x1465: 0x028a, 0x1466: 0x025a, 0x1467: 0x024b, 0x1468: 0x0269, 0x1469: 0x0290, + 0x146b: 0x027e, 0x146c: 0x0281, 0x146d: 0x0284, 0x146e: 0x025d, 0x146f: 0x026f, + 0x1470: 0x0275, 0x1471: 0x0263, 0x1472: 0x0278, 0x1473: 0x0257, 0x1474: 0x0260, 0x1475: 0x0242, + 0x1476: 0x0245, 0x1477: 0x024e, 0x1478: 0x0254, 0x1479: 0x0266, 0x147a: 0x026c, 0x147b: 0x0272, // Block 0x52, offset 0x1480 - 0x1480: 0x26ad, 0x1481: 0x26c2, 0x1482: 0x0503, - 0x1490: 0x0c0f, 0x1491: 0x0a47, - 0x1492: 0x08d3, 0x1493: 0x45c4, 0x1494: 0x071b, 0x1495: 0x09ef, 0x1496: 0x132f, 0x1497: 0x09ff, - 0x1498: 0x0727, 0x1499: 0x0cd7, 0x149a: 0x0eaf, 0x149b: 0x0caf, 0x149c: 0x0827, 0x149d: 0x0b6b, - 0x149e: 0x07bf, 0x149f: 0x0cb7, 0x14a0: 0x0813, 0x14a1: 0x1117, 0x14a2: 0x0f83, 0x14a3: 0x138b, - 0x14a4: 0x09d3, 0x14a5: 0x090b, 0x14a6: 0x0e63, 0x14a7: 0x0c1b, 0x14a8: 0x0c47, 0x14a9: 0x06bf, - 0x14aa: 0x06cb, 0x14ab: 0x140b, 0x14ac: 0x0adb, 0x14ad: 0x06e7, 0x14ae: 0x08ef, 0x14af: 0x0c3b, - 0x14b0: 0x13b3, 0x14b1: 0x0c13, 0x14b2: 0x106f, 0x14b3: 0x10ab, 0x14b4: 0x08f7, 0x14b5: 0x0e43, - 0x14b6: 0x0d0b, 0x14b7: 0x0d07, 0x14b8: 0x0f97, 0x14b9: 0x082b, 0x14ba: 0x0957, 0x14bb: 0x1443, + 0x1480: 0x1879, 0x1481: 0x1876, 0x1482: 0x187c, 0x1483: 0x18a0, 0x1484: 0x18c4, 0x1485: 0x18e8, + 0x1486: 0x190c, 0x1487: 0x1915, 0x1488: 0x191b, 0x1489: 0x1921, 0x148a: 0x1927, + 0x1490: 0x1a8c, 0x1491: 0x1a90, + 0x1492: 0x1a94, 0x1493: 0x1a98, 0x1494: 0x1a9c, 0x1495: 0x1aa0, 0x1496: 0x1aa4, 0x1497: 0x1aa8, + 0x1498: 0x1aac, 0x1499: 0x1ab0, 0x149a: 0x1ab4, 0x149b: 0x1ab8, 0x149c: 0x1abc, 0x149d: 0x1ac0, + 0x149e: 0x1ac4, 0x149f: 0x1ac8, 0x14a0: 0x1acc, 0x14a1: 0x1ad0, 0x14a2: 0x1ad4, 0x14a3: 0x1ad8, + 0x14a4: 0x1adc, 0x14a5: 0x1ae0, 0x14a6: 0x1ae4, 0x14a7: 0x1ae8, 0x14a8: 0x1aec, 0x14a9: 0x1af0, + 0x14aa: 0x271e, 0x14ab: 0x0047, 0x14ac: 0x0065, 0x14ad: 0x193c, 0x14ae: 0x19b1, + 0x14b0: 0x0043, 0x14b1: 0x0045, 0x14b2: 0x0047, 0x14b3: 0x0049, 0x14b4: 0x004b, 0x14b5: 0x004d, + 0x14b6: 0x004f, 0x14b7: 0x0051, 0x14b8: 0x0053, 0x14b9: 0x0055, 0x14ba: 0x0057, 0x14bb: 0x0059, + 0x14bc: 0x005b, 0x14bd: 0x005d, 0x14be: 0x005f, 0x14bf: 0x0061, // Block 0x53, offset 0x14c0 - 0x14c0: 0x06fb, 0x14c1: 0x06f3, 0x14c2: 0x0703, 0x14c3: 0x1647, 0x14c4: 0x0747, 0x14c5: 0x0757, - 0x14c6: 0x075b, 0x14c7: 0x0763, 0x14c8: 0x076b, 0x14c9: 0x076f, 0x14ca: 0x077b, 0x14cb: 0x0773, - 0x14cc: 0x05b3, 0x14cd: 0x165b, 0x14ce: 0x078f, 0x14cf: 0x0793, 0x14d0: 0x0797, 0x14d1: 0x07b3, - 0x14d2: 0x164c, 0x14d3: 0x05b7, 0x14d4: 0x079f, 0x14d5: 0x07bf, 0x14d6: 0x1656, 0x14d7: 0x07cf, - 0x14d8: 0x07d7, 0x14d9: 0x0737, 0x14da: 0x07df, 0x14db: 0x07e3, 0x14dc: 0x1831, 0x14dd: 0x07ff, - 0x14de: 0x0807, 0x14df: 0x05bf, 0x14e0: 0x081f, 0x14e1: 0x0823, 0x14e2: 0x082b, 0x14e3: 0x082f, - 0x14e4: 0x05c3, 0x14e5: 0x0847, 0x14e6: 0x084b, 0x14e7: 0x0857, 0x14e8: 0x0863, 0x14e9: 0x0867, - 0x14ea: 0x086b, 0x14eb: 0x0873, 0x14ec: 0x0893, 0x14ed: 0x0897, 0x14ee: 0x089f, 0x14ef: 0x08af, - 0x14f0: 0x08b7, 0x14f1: 0x08bb, 0x14f2: 0x08bb, 0x14f3: 0x08bb, 0x14f4: 0x166a, 0x14f5: 0x0e93, - 0x14f6: 0x08cf, 0x14f7: 0x08d7, 0x14f8: 0x166f, 0x14f9: 0x08e3, 0x14fa: 0x08eb, 0x14fb: 0x08f3, - 0x14fc: 0x091b, 0x14fd: 0x0907, 0x14fe: 0x0913, 0x14ff: 0x0917, + 0x14c0: 0x26ad, 0x14c1: 0x26c2, 0x14c2: 0x0503, + 0x14d0: 0x0c0f, 0x14d1: 0x0a47, + 0x14d2: 0x08d3, 0x14d3: 0x45c4, 0x14d4: 0x071b, 0x14d5: 0x09ef, 0x14d6: 0x132f, 0x14d7: 0x09ff, + 0x14d8: 0x0727, 0x14d9: 0x0cd7, 0x14da: 0x0eaf, 0x14db: 0x0caf, 0x14dc: 0x0827, 0x14dd: 0x0b6b, + 0x14de: 0x07bf, 0x14df: 0x0cb7, 0x14e0: 0x0813, 0x14e1: 0x1117, 0x14e2: 0x0f83, 0x14e3: 0x138b, + 0x14e4: 0x09d3, 0x14e5: 0x090b, 0x14e6: 0x0e63, 0x14e7: 0x0c1b, 0x14e8: 0x0c47, 0x14e9: 0x06bf, + 0x14ea: 0x06cb, 0x14eb: 0x140b, 0x14ec: 0x0adb, 0x14ed: 0x06e7, 0x14ee: 0x08ef, 0x14ef: 0x0c3b, + 0x14f0: 0x13b3, 0x14f1: 0x0c13, 0x14f2: 0x106f, 0x14f3: 0x10ab, 0x14f4: 0x08f7, 0x14f5: 0x0e43, + 0x14f6: 0x0d0b, 0x14f7: 0x0d07, 0x14f8: 0x0f97, 0x14f9: 0x082b, 0x14fa: 0x0957, 0x14fb: 0x1443, // Block 0x54, offset 0x1500 - 0x1500: 0x091f, 0x1501: 0x0927, 0x1502: 0x092b, 0x1503: 0x0933, 0x1504: 0x093b, 0x1505: 0x093f, - 0x1506: 0x093f, 0x1507: 0x0947, 0x1508: 0x094f, 0x1509: 0x0953, 0x150a: 0x095f, 0x150b: 0x0983, - 0x150c: 0x0967, 0x150d: 0x0987, 0x150e: 0x096b, 0x150f: 0x0973, 0x1510: 0x080b, 0x1511: 0x09cf, - 0x1512: 0x0997, 0x1513: 0x099b, 0x1514: 0x099f, 0x1515: 0x0993, 0x1516: 0x09a7, 0x1517: 0x09a3, - 0x1518: 0x09bb, 0x1519: 0x1674, 0x151a: 0x09d7, 0x151b: 0x09db, 0x151c: 0x09e3, 0x151d: 0x09ef, - 0x151e: 0x09f7, 0x151f: 0x0a13, 0x1520: 0x1679, 0x1521: 0x167e, 0x1522: 0x0a1f, 0x1523: 0x0a23, - 0x1524: 0x0a27, 0x1525: 0x0a1b, 0x1526: 0x0a2f, 0x1527: 0x05c7, 0x1528: 0x05cb, 0x1529: 0x0a37, - 0x152a: 0x0a3f, 0x152b: 0x0a3f, 0x152c: 0x1683, 0x152d: 0x0a5b, 0x152e: 0x0a5f, 0x152f: 0x0a63, - 0x1530: 0x0a6b, 0x1531: 0x1688, 0x1532: 0x0a73, 0x1533: 0x0a77, 0x1534: 0x0b4f, 0x1535: 0x0a7f, - 0x1536: 0x05cf, 0x1537: 0x0a8b, 0x1538: 0x0a9b, 0x1539: 0x0aa7, 0x153a: 0x0aa3, 0x153b: 0x1692, - 0x153c: 0x0aaf, 0x153d: 0x1697, 0x153e: 0x0abb, 0x153f: 0x0ab7, + 0x1500: 0x06fb, 0x1501: 0x06f3, 0x1502: 0x0703, 0x1503: 0x1647, 0x1504: 0x0747, 0x1505: 0x0757, + 0x1506: 0x075b, 0x1507: 0x0763, 0x1508: 0x076b, 0x1509: 0x076f, 0x150a: 0x077b, 0x150b: 0x0773, + 0x150c: 0x05b3, 0x150d: 0x165b, 0x150e: 0x078f, 0x150f: 0x0793, 0x1510: 0x0797, 0x1511: 0x07b3, + 0x1512: 0x164c, 0x1513: 0x05b7, 0x1514: 0x079f, 0x1515: 0x07bf, 0x1516: 0x1656, 0x1517: 0x07cf, + 0x1518: 0x07d7, 0x1519: 0x0737, 0x151a: 0x07df, 0x151b: 0x07e3, 0x151c: 0x1831, 0x151d: 0x07ff, + 0x151e: 0x0807, 0x151f: 0x05bf, 0x1520: 0x081f, 0x1521: 0x0823, 0x1522: 0x082b, 0x1523: 0x082f, + 0x1524: 0x05c3, 0x1525: 0x0847, 0x1526: 0x084b, 0x1527: 0x0857, 0x1528: 0x0863, 0x1529: 0x0867, + 0x152a: 0x086b, 0x152b: 0x0873, 0x152c: 0x0893, 0x152d: 0x0897, 0x152e: 0x089f, 0x152f: 0x08af, + 0x1530: 0x08b7, 0x1531: 0x08bb, 0x1532: 0x08bb, 0x1533: 0x08bb, 0x1534: 0x166a, 0x1535: 0x0e93, + 0x1536: 0x08cf, 0x1537: 0x08d7, 0x1538: 0x166f, 0x1539: 0x08e3, 0x153a: 0x08eb, 0x153b: 0x08f3, + 0x153c: 0x091b, 0x153d: 0x0907, 0x153e: 0x0913, 0x153f: 0x0917, // Block 0x55, offset 0x1540 - 0x1540: 0x0abf, 0x1541: 0x0acf, 0x1542: 0x0ad3, 0x1543: 0x05d3, 0x1544: 0x0ae3, 0x1545: 0x0aeb, - 0x1546: 0x0aef, 0x1547: 0x0af3, 0x1548: 0x05d7, 0x1549: 0x169c, 0x154a: 0x05db, 0x154b: 0x0b0f, - 0x154c: 0x0b13, 0x154d: 0x0b17, 0x154e: 0x0b1f, 0x154f: 0x1863, 0x1550: 0x0b37, 0x1551: 0x16a6, - 0x1552: 0x16a6, 0x1553: 0x11d7, 0x1554: 0x0b47, 0x1555: 0x0b47, 0x1556: 0x05df, 0x1557: 0x16c9, - 0x1558: 0x179b, 0x1559: 0x0b57, 0x155a: 0x0b5f, 0x155b: 0x05e3, 0x155c: 0x0b73, 0x155d: 0x0b83, - 0x155e: 0x0b87, 0x155f: 0x0b8f, 0x1560: 0x0b9f, 0x1561: 0x05eb, 0x1562: 0x05e7, 0x1563: 0x0ba3, - 0x1564: 0x16ab, 0x1565: 0x0ba7, 0x1566: 0x0bbb, 0x1567: 0x0bbf, 0x1568: 0x0bc3, 0x1569: 0x0bbf, - 0x156a: 0x0bcf, 0x156b: 0x0bd3, 0x156c: 0x0be3, 0x156d: 0x0bdb, 0x156e: 0x0bdf, 0x156f: 0x0be7, - 0x1570: 0x0beb, 0x1571: 0x0bef, 0x1572: 0x0bfb, 0x1573: 0x0bff, 0x1574: 0x0c17, 0x1575: 0x0c1f, - 0x1576: 0x0c2f, 0x1577: 0x0c43, 0x1578: 0x16ba, 0x1579: 0x0c3f, 0x157a: 0x0c33, 0x157b: 0x0c4b, - 0x157c: 0x0c53, 0x157d: 0x0c67, 0x157e: 0x16bf, 0x157f: 0x0c6f, + 0x1540: 0x091f, 0x1541: 0x0927, 0x1542: 0x092b, 0x1543: 0x0933, 0x1544: 0x093b, 0x1545: 0x093f, + 0x1546: 0x093f, 0x1547: 0x0947, 0x1548: 0x094f, 0x1549: 0x0953, 0x154a: 0x095f, 0x154b: 0x0983, + 0x154c: 0x0967, 0x154d: 0x0987, 0x154e: 0x096b, 0x154f: 0x0973, 0x1550: 0x080b, 0x1551: 0x09cf, + 0x1552: 0x0997, 0x1553: 0x099b, 0x1554: 0x099f, 0x1555: 0x0993, 0x1556: 0x09a7, 0x1557: 0x09a3, + 0x1558: 0x09bb, 0x1559: 0x1674, 0x155a: 0x09d7, 0x155b: 0x09db, 0x155c: 0x09e3, 0x155d: 0x09ef, + 0x155e: 0x09f7, 0x155f: 0x0a13, 0x1560: 0x1679, 0x1561: 0x167e, 0x1562: 0x0a1f, 0x1563: 0x0a23, + 0x1564: 0x0a27, 0x1565: 0x0a1b, 0x1566: 0x0a2f, 0x1567: 0x05c7, 0x1568: 0x05cb, 0x1569: 0x0a37, + 0x156a: 0x0a3f, 0x156b: 0x0a3f, 0x156c: 0x1683, 0x156d: 0x0a5b, 0x156e: 0x0a5f, 0x156f: 0x0a63, + 0x1570: 0x0a6b, 0x1571: 0x1688, 0x1572: 0x0a73, 0x1573: 0x0a77, 0x1574: 0x0b4f, 0x1575: 0x0a7f, + 0x1576: 0x05cf, 0x1577: 0x0a8b, 0x1578: 0x0a9b, 0x1579: 0x0aa7, 0x157a: 0x0aa3, 0x157b: 0x1692, + 0x157c: 0x0aaf, 0x157d: 0x1697, 0x157e: 0x0abb, 0x157f: 0x0ab7, // Block 0x56, offset 0x1580 - 0x1580: 0x0c63, 0x1581: 0x0c5b, 0x1582: 0x05ef, 0x1583: 0x0c77, 0x1584: 0x0c7f, 0x1585: 0x0c87, - 0x1586: 0x0c7b, 0x1587: 0x05f3, 0x1588: 0x0c97, 0x1589: 0x0c9f, 0x158a: 0x16c4, 0x158b: 0x0ccb, - 0x158c: 0x0cff, 0x158d: 0x0cdb, 0x158e: 0x05ff, 0x158f: 0x0ce7, 0x1590: 0x05fb, 0x1591: 0x05f7, - 0x1592: 0x07c3, 0x1593: 0x07c7, 0x1594: 0x0d03, 0x1595: 0x0ceb, 0x1596: 0x11ab, 0x1597: 0x0663, - 0x1598: 0x0d0f, 0x1599: 0x0d13, 0x159a: 0x0d17, 0x159b: 0x0d2b, 0x159c: 0x0d23, 0x159d: 0x16dd, - 0x159e: 0x0603, 0x159f: 0x0d3f, 0x15a0: 0x0d33, 0x15a1: 0x0d4f, 0x15a2: 0x0d57, 0x15a3: 0x16e7, - 0x15a4: 0x0d5b, 0x15a5: 0x0d47, 0x15a6: 0x0d63, 0x15a7: 0x0607, 0x15a8: 0x0d67, 0x15a9: 0x0d6b, - 0x15aa: 0x0d6f, 0x15ab: 0x0d7b, 0x15ac: 0x16ec, 0x15ad: 0x0d83, 0x15ae: 0x060b, 0x15af: 0x0d8f, - 0x15b0: 0x16f1, 0x15b1: 0x0d93, 0x15b2: 0x060f, 0x15b3: 0x0d9f, 0x15b4: 0x0dab, 0x15b5: 0x0db7, - 0x15b6: 0x0dbb, 0x15b7: 0x16f6, 0x15b8: 0x168d, 0x15b9: 0x16fb, 0x15ba: 0x0ddb, 0x15bb: 0x1700, - 0x15bc: 0x0de7, 0x15bd: 0x0def, 0x15be: 0x0ddf, 0x15bf: 0x0dfb, + 0x1580: 0x0abf, 0x1581: 0x0acf, 0x1582: 0x0ad3, 0x1583: 0x05d3, 0x1584: 0x0ae3, 0x1585: 0x0aeb, + 0x1586: 0x0aef, 0x1587: 0x0af3, 0x1588: 0x05d7, 0x1589: 0x169c, 0x158a: 0x05db, 0x158b: 0x0b0f, + 0x158c: 0x0b13, 0x158d: 0x0b17, 0x158e: 0x0b1f, 0x158f: 0x1863, 0x1590: 0x0b37, 0x1591: 0x16a6, + 0x1592: 0x16a6, 0x1593: 0x11d7, 0x1594: 0x0b47, 0x1595: 0x0b47, 0x1596: 0x05df, 0x1597: 0x16c9, + 0x1598: 0x179b, 0x1599: 0x0b57, 0x159a: 0x0b5f, 0x159b: 0x05e3, 0x159c: 0x0b73, 0x159d: 0x0b83, + 0x159e: 0x0b87, 0x159f: 0x0b8f, 0x15a0: 0x0b9f, 0x15a1: 0x05eb, 0x15a2: 0x05e7, 0x15a3: 0x0ba3, + 0x15a4: 0x16ab, 0x15a5: 0x0ba7, 0x15a6: 0x0bbb, 0x15a7: 0x0bbf, 0x15a8: 0x0bc3, 0x15a9: 0x0bbf, + 0x15aa: 0x0bcf, 0x15ab: 0x0bd3, 0x15ac: 0x0be3, 0x15ad: 0x0bdb, 0x15ae: 0x0bdf, 0x15af: 0x0be7, + 0x15b0: 0x0beb, 0x15b1: 0x0bef, 0x15b2: 0x0bfb, 0x15b3: 0x0bff, 0x15b4: 0x0c17, 0x15b5: 0x0c1f, + 0x15b6: 0x0c2f, 0x15b7: 0x0c43, 0x15b8: 0x16ba, 0x15b9: 0x0c3f, 0x15ba: 0x0c33, 0x15bb: 0x0c4b, + 0x15bc: 0x0c53, 0x15bd: 0x0c67, 0x15be: 0x16bf, 0x15bf: 0x0c6f, // Block 0x57, offset 0x15c0 - 0x15c0: 0x0e0b, 0x15c1: 0x0e1b, 0x15c2: 0x0e0f, 0x15c3: 0x0e13, 0x15c4: 0x0e1f, 0x15c5: 0x0e23, - 0x15c6: 0x1705, 0x15c7: 0x0e07, 0x15c8: 0x0e3b, 0x15c9: 0x0e3f, 0x15ca: 0x0613, 0x15cb: 0x0e53, - 0x15cc: 0x0e4f, 0x15cd: 0x170a, 0x15ce: 0x0e33, 0x15cf: 0x0e6f, 0x15d0: 0x170f, 0x15d1: 0x1714, - 0x15d2: 0x0e73, 0x15d3: 0x0e87, 0x15d4: 0x0e83, 0x15d5: 0x0e7f, 0x15d6: 0x0617, 0x15d7: 0x0e8b, - 0x15d8: 0x0e9b, 0x15d9: 0x0e97, 0x15da: 0x0ea3, 0x15db: 0x1651, 0x15dc: 0x0eb3, 0x15dd: 0x1719, - 0x15de: 0x0ebf, 0x15df: 0x1723, 0x15e0: 0x0ed3, 0x15e1: 0x0edf, 0x15e2: 0x0ef3, 0x15e3: 0x1728, - 0x15e4: 0x0f07, 0x15e5: 0x0f0b, 0x15e6: 0x172d, 0x15e7: 0x1732, 0x15e8: 0x0f27, 0x15e9: 0x0f37, - 0x15ea: 0x061b, 0x15eb: 0x0f3b, 0x15ec: 0x061f, 0x15ed: 0x061f, 0x15ee: 0x0f53, 0x15ef: 0x0f57, - 0x15f0: 0x0f5f, 0x15f1: 0x0f63, 0x15f2: 0x0f6f, 0x15f3: 0x0623, 0x15f4: 0x0f87, 0x15f5: 0x1737, - 0x15f6: 0x0fa3, 0x15f7: 0x173c, 0x15f8: 0x0faf, 0x15f9: 0x16a1, 0x15fa: 0x0fbf, 0x15fb: 0x1741, - 0x15fc: 0x1746, 0x15fd: 0x174b, 0x15fe: 0x0627, 0x15ff: 0x062b, + 0x15c0: 0x0c63, 0x15c1: 0x0c5b, 0x15c2: 0x05ef, 0x15c3: 0x0c77, 0x15c4: 0x0c7f, 0x15c5: 0x0c87, + 0x15c6: 0x0c7b, 0x15c7: 0x05f3, 0x15c8: 0x0c97, 0x15c9: 0x0c9f, 0x15ca: 0x16c4, 0x15cb: 0x0ccb, + 0x15cc: 0x0cff, 0x15cd: 0x0cdb, 0x15ce: 0x05ff, 0x15cf: 0x0ce7, 0x15d0: 0x05fb, 0x15d1: 0x05f7, + 0x15d2: 0x07c3, 0x15d3: 0x07c7, 0x15d4: 0x0d03, 0x15d5: 0x0ceb, 0x15d6: 0x11ab, 0x15d7: 0x0663, + 0x15d8: 0x0d0f, 0x15d9: 0x0d13, 0x15da: 0x0d17, 0x15db: 0x0d2b, 0x15dc: 0x0d23, 0x15dd: 0x16dd, + 0x15de: 0x0603, 0x15df: 0x0d3f, 0x15e0: 0x0d33, 0x15e1: 0x0d4f, 0x15e2: 0x0d57, 0x15e3: 0x16e7, + 0x15e4: 0x0d5b, 0x15e5: 0x0d47, 0x15e6: 0x0d63, 0x15e7: 0x0607, 0x15e8: 0x0d67, 0x15e9: 0x0d6b, + 0x15ea: 0x0d6f, 0x15eb: 0x0d7b, 0x15ec: 0x16ec, 0x15ed: 0x0d83, 0x15ee: 0x060b, 0x15ef: 0x0d8f, + 0x15f0: 0x16f1, 0x15f1: 0x0d93, 0x15f2: 0x060f, 0x15f3: 0x0d9f, 0x15f4: 0x0dab, 0x15f5: 0x0db7, + 0x15f6: 0x0dbb, 0x15f7: 0x16f6, 0x15f8: 0x168d, 0x15f9: 0x16fb, 0x15fa: 0x0ddb, 0x15fb: 0x1700, + 0x15fc: 0x0de7, 0x15fd: 0x0def, 0x15fe: 0x0ddf, 0x15ff: 0x0dfb, // Block 0x58, offset 0x1600 - 0x1600: 0x0ff7, 0x1601: 0x1755, 0x1602: 0x1750, 0x1603: 0x175a, 0x1604: 0x175f, 0x1605: 0x0fff, - 0x1606: 0x1003, 0x1607: 0x1003, 0x1608: 0x100b, 0x1609: 0x0633, 0x160a: 0x100f, 0x160b: 0x0637, - 0x160c: 0x063b, 0x160d: 0x1769, 0x160e: 0x1023, 0x160f: 0x102b, 0x1610: 0x1037, 0x1611: 0x063f, - 0x1612: 0x176e, 0x1613: 0x105b, 0x1614: 0x1773, 0x1615: 0x1778, 0x1616: 0x107b, 0x1617: 0x1093, - 0x1618: 0x0643, 0x1619: 0x109b, 0x161a: 0x109f, 0x161b: 0x10a3, 0x161c: 0x177d, 0x161d: 0x1782, - 0x161e: 0x1782, 0x161f: 0x10bb, 0x1620: 0x0647, 0x1621: 0x1787, 0x1622: 0x10cf, 0x1623: 0x10d3, - 0x1624: 0x064b, 0x1625: 0x178c, 0x1626: 0x10ef, 0x1627: 0x064f, 0x1628: 0x10ff, 0x1629: 0x10f7, - 0x162a: 0x1107, 0x162b: 0x1796, 0x162c: 0x111f, 0x162d: 0x0653, 0x162e: 0x112b, 0x162f: 0x1133, - 0x1630: 0x1143, 0x1631: 0x0657, 0x1632: 0x17a0, 0x1633: 0x17a5, 0x1634: 0x065b, 0x1635: 0x17aa, - 0x1636: 0x115b, 0x1637: 0x17af, 0x1638: 0x1167, 0x1639: 0x1173, 0x163a: 0x117b, 0x163b: 0x17b4, - 0x163c: 0x17b9, 0x163d: 0x118f, 0x163e: 0x17be, 0x163f: 0x1197, + 0x1600: 0x0e0b, 0x1601: 0x0e1b, 0x1602: 0x0e0f, 0x1603: 0x0e13, 0x1604: 0x0e1f, 0x1605: 0x0e23, + 0x1606: 0x1705, 0x1607: 0x0e07, 0x1608: 0x0e3b, 0x1609: 0x0e3f, 0x160a: 0x0613, 0x160b: 0x0e53, + 0x160c: 0x0e4f, 0x160d: 0x170a, 0x160e: 0x0e33, 0x160f: 0x0e6f, 0x1610: 0x170f, 0x1611: 0x1714, + 0x1612: 0x0e73, 0x1613: 0x0e87, 0x1614: 0x0e83, 0x1615: 0x0e7f, 0x1616: 0x0617, 0x1617: 0x0e8b, + 0x1618: 0x0e9b, 0x1619: 0x0e97, 0x161a: 0x0ea3, 0x161b: 0x1651, 0x161c: 0x0eb3, 0x161d: 0x1719, + 0x161e: 0x0ebf, 0x161f: 0x1723, 0x1620: 0x0ed3, 0x1621: 0x0edf, 0x1622: 0x0ef3, 0x1623: 0x1728, + 0x1624: 0x0f07, 0x1625: 0x0f0b, 0x1626: 0x172d, 0x1627: 0x1732, 0x1628: 0x0f27, 0x1629: 0x0f37, + 0x162a: 0x061b, 0x162b: 0x0f3b, 0x162c: 0x061f, 0x162d: 0x061f, 0x162e: 0x0f53, 0x162f: 0x0f57, + 0x1630: 0x0f5f, 0x1631: 0x0f63, 0x1632: 0x0f6f, 0x1633: 0x0623, 0x1634: 0x0f87, 0x1635: 0x1737, + 0x1636: 0x0fa3, 0x1637: 0x173c, 0x1638: 0x0faf, 0x1639: 0x16a1, 0x163a: 0x0fbf, 0x163b: 0x1741, + 0x163c: 0x1746, 0x163d: 0x174b, 0x163e: 0x0627, 0x163f: 0x062b, // Block 0x59, offset 0x1640 - 0x1640: 0x16ce, 0x1641: 0x065f, 0x1642: 0x11af, 0x1643: 0x11b3, 0x1644: 0x0667, 0x1645: 0x11b7, - 0x1646: 0x0a33, 0x1647: 0x17c3, 0x1648: 0x17c8, 0x1649: 0x16d3, 0x164a: 0x16d8, 0x164b: 0x11d7, - 0x164c: 0x11db, 0x164d: 0x13f3, 0x164e: 0x066b, 0x164f: 0x1207, 0x1650: 0x1203, 0x1651: 0x120b, - 0x1652: 0x083f, 0x1653: 0x120f, 0x1654: 0x1213, 0x1655: 0x1217, 0x1656: 0x121f, 0x1657: 0x17cd, - 0x1658: 0x121b, 0x1659: 0x1223, 0x165a: 0x1237, 0x165b: 0x123b, 0x165c: 0x1227, 0x165d: 0x123f, - 0x165e: 0x1253, 0x165f: 0x1267, 0x1660: 0x1233, 0x1661: 0x1247, 0x1662: 0x124b, 0x1663: 0x124f, - 0x1664: 0x17d2, 0x1665: 0x17dc, 0x1666: 0x17d7, 0x1667: 0x066f, 0x1668: 0x126f, 0x1669: 0x1273, - 0x166a: 0x127b, 0x166b: 0x17f0, 0x166c: 0x127f, 0x166d: 0x17e1, 0x166e: 0x0673, 0x166f: 0x0677, - 0x1670: 0x17e6, 0x1671: 0x17eb, 0x1672: 0x067b, 0x1673: 0x129f, 0x1674: 0x12a3, 0x1675: 0x12a7, - 0x1676: 0x12ab, 0x1677: 0x12b7, 0x1678: 0x12b3, 0x1679: 0x12bf, 0x167a: 0x12bb, 0x167b: 0x12cb, - 0x167c: 0x12c3, 0x167d: 0x12c7, 0x167e: 0x12cf, 0x167f: 0x067f, + 0x1640: 0x0ff7, 0x1641: 0x1755, 0x1642: 0x1750, 0x1643: 0x175a, 0x1644: 0x175f, 0x1645: 0x0fff, + 0x1646: 0x1003, 0x1647: 0x1003, 0x1648: 0x100b, 0x1649: 0x0633, 0x164a: 0x100f, 0x164b: 0x0637, + 0x164c: 0x063b, 0x164d: 0x1769, 0x164e: 0x1023, 0x164f: 0x102b, 0x1650: 0x1037, 0x1651: 0x063f, + 0x1652: 0x176e, 0x1653: 0x105b, 0x1654: 0x1773, 0x1655: 0x1778, 0x1656: 0x107b, 0x1657: 0x1093, + 0x1658: 0x0643, 0x1659: 0x109b, 0x165a: 0x109f, 0x165b: 0x10a3, 0x165c: 0x177d, 0x165d: 0x1782, + 0x165e: 0x1782, 0x165f: 0x10bb, 0x1660: 0x0647, 0x1661: 0x1787, 0x1662: 0x10cf, 0x1663: 0x10d3, + 0x1664: 0x064b, 0x1665: 0x178c, 0x1666: 0x10ef, 0x1667: 0x064f, 0x1668: 0x10ff, 0x1669: 0x10f7, + 0x166a: 0x1107, 0x166b: 0x1796, 0x166c: 0x111f, 0x166d: 0x0653, 0x166e: 0x112b, 0x166f: 0x1133, + 0x1670: 0x1143, 0x1671: 0x0657, 0x1672: 0x17a0, 0x1673: 0x17a5, 0x1674: 0x065b, 0x1675: 0x17aa, + 0x1676: 0x115b, 0x1677: 0x17af, 0x1678: 0x1167, 0x1679: 0x1173, 0x167a: 0x117b, 0x167b: 0x17b4, + 0x167c: 0x17b9, 0x167d: 0x118f, 0x167e: 0x17be, 0x167f: 0x1197, // Block 0x5a, offset 0x1680 - 0x1680: 0x12d7, 0x1681: 0x12db, 0x1682: 0x0683, 0x1683: 0x12eb, 0x1684: 0x12ef, 0x1685: 0x17f5, - 0x1686: 0x12fb, 0x1687: 0x12ff, 0x1688: 0x0687, 0x1689: 0x130b, 0x168a: 0x05bb, 0x168b: 0x17fa, - 0x168c: 0x17ff, 0x168d: 0x068b, 0x168e: 0x068f, 0x168f: 0x1337, 0x1690: 0x134f, 0x1691: 0x136b, - 0x1692: 0x137b, 0x1693: 0x1804, 0x1694: 0x138f, 0x1695: 0x1393, 0x1696: 0x13ab, 0x1697: 0x13b7, - 0x1698: 0x180e, 0x1699: 0x1660, 0x169a: 0x13c3, 0x169b: 0x13bf, 0x169c: 0x13cb, 0x169d: 0x1665, - 0x169e: 0x13d7, 0x169f: 0x13e3, 0x16a0: 0x1813, 0x16a1: 0x1818, 0x16a2: 0x1423, 0x16a3: 0x142f, - 0x16a4: 0x1437, 0x16a5: 0x181d, 0x16a6: 0x143b, 0x16a7: 0x1467, 0x16a8: 0x1473, 0x16a9: 0x1477, - 0x16aa: 0x146f, 0x16ab: 0x1483, 0x16ac: 0x1487, 0x16ad: 0x1822, 0x16ae: 0x1493, 0x16af: 0x0693, - 0x16b0: 0x149b, 0x16b1: 0x1827, 0x16b2: 0x0697, 0x16b3: 0x14d3, 0x16b4: 0x0ac3, 0x16b5: 0x14eb, - 0x16b6: 0x182c, 0x16b7: 0x1836, 0x16b8: 0x069b, 0x16b9: 0x069f, 0x16ba: 0x1513, 0x16bb: 0x183b, - 0x16bc: 0x06a3, 0x16bd: 0x1840, 0x16be: 0x152b, 0x16bf: 0x152b, + 0x1680: 0x16ce, 0x1681: 0x065f, 0x1682: 0x11af, 0x1683: 0x11b3, 0x1684: 0x0667, 0x1685: 0x11b7, + 0x1686: 0x0a33, 0x1687: 0x17c3, 0x1688: 0x17c8, 0x1689: 0x16d3, 0x168a: 0x16d8, 0x168b: 0x11d7, + 0x168c: 0x11db, 0x168d: 0x13f3, 0x168e: 0x066b, 0x168f: 0x1207, 0x1690: 0x1203, 0x1691: 0x120b, + 0x1692: 0x083f, 0x1693: 0x120f, 0x1694: 0x1213, 0x1695: 0x1217, 0x1696: 0x121f, 0x1697: 0x17cd, + 0x1698: 0x121b, 0x1699: 0x1223, 0x169a: 0x1237, 0x169b: 0x123b, 0x169c: 0x1227, 0x169d: 0x123f, + 0x169e: 0x1253, 0x169f: 0x1267, 0x16a0: 0x1233, 0x16a1: 0x1247, 0x16a2: 0x124b, 0x16a3: 0x124f, + 0x16a4: 0x17d2, 0x16a5: 0x17dc, 0x16a6: 0x17d7, 0x16a7: 0x066f, 0x16a8: 0x126f, 0x16a9: 0x1273, + 0x16aa: 0x127b, 0x16ab: 0x17f0, 0x16ac: 0x127f, 0x16ad: 0x17e1, 0x16ae: 0x0673, 0x16af: 0x0677, + 0x16b0: 0x17e6, 0x16b1: 0x17eb, 0x16b2: 0x067b, 0x16b3: 0x129f, 0x16b4: 0x12a3, 0x16b5: 0x12a7, + 0x16b6: 0x12ab, 0x16b7: 0x12b7, 0x16b8: 0x12b3, 0x16b9: 0x12bf, 0x16ba: 0x12bb, 0x16bb: 0x12cb, + 0x16bc: 0x12c3, 0x16bd: 0x12c7, 0x16be: 0x12cf, 0x16bf: 0x067f, // Block 0x5b, offset 0x16c0 - 0x16c0: 0x1533, 0x16c1: 0x1845, 0x16c2: 0x154b, 0x16c3: 0x06a7, 0x16c4: 0x155b, 0x16c5: 0x1567, - 0x16c6: 0x156f, 0x16c7: 0x1577, 0x16c8: 0x06ab, 0x16c9: 0x184a, 0x16ca: 0x158b, 0x16cb: 0x15a7, - 0x16cc: 0x15b3, 0x16cd: 0x06af, 0x16ce: 0x06b3, 0x16cf: 0x15b7, 0x16d0: 0x184f, 0x16d1: 0x06b7, - 0x16d2: 0x1854, 0x16d3: 0x1859, 0x16d4: 0x185e, 0x16d5: 0x15db, 0x16d6: 0x06bb, 0x16d7: 0x15ef, - 0x16d8: 0x15f7, 0x16d9: 0x15fb, 0x16da: 0x1603, 0x16db: 0x160b, 0x16dc: 0x1613, 0x16dd: 0x1868, + 0x16c0: 0x12d7, 0x16c1: 0x12db, 0x16c2: 0x0683, 0x16c3: 0x12eb, 0x16c4: 0x12ef, 0x16c5: 0x17f5, + 0x16c6: 0x12fb, 0x16c7: 0x12ff, 0x16c8: 0x0687, 0x16c9: 0x130b, 0x16ca: 0x05bb, 0x16cb: 0x17fa, + 0x16cc: 0x17ff, 0x16cd: 0x068b, 0x16ce: 0x068f, 0x16cf: 0x1337, 0x16d0: 0x134f, 0x16d1: 0x136b, + 0x16d2: 0x137b, 0x16d3: 0x1804, 0x16d4: 0x138f, 0x16d5: 0x1393, 0x16d6: 0x13ab, 0x16d7: 0x13b7, + 0x16d8: 0x180e, 0x16d9: 0x1660, 0x16da: 0x13c3, 0x16db: 0x13bf, 0x16dc: 0x13cb, 0x16dd: 0x1665, + 0x16de: 0x13d7, 0x16df: 0x13e3, 0x16e0: 0x1813, 0x16e1: 0x1818, 0x16e2: 0x1423, 0x16e3: 0x142f, + 0x16e4: 0x1437, 0x16e5: 0x181d, 0x16e6: 0x143b, 0x16e7: 0x1467, 0x16e8: 0x1473, 0x16e9: 0x1477, + 0x16ea: 0x146f, 0x16eb: 0x1483, 0x16ec: 0x1487, 0x16ed: 0x1822, 0x16ee: 0x1493, 0x16ef: 0x0693, + 0x16f0: 0x149b, 0x16f1: 0x1827, 0x16f2: 0x0697, 0x16f3: 0x14d3, 0x16f4: 0x0ac3, 0x16f5: 0x14eb, + 0x16f6: 0x182c, 0x16f7: 0x1836, 0x16f8: 0x069b, 0x16f9: 0x069f, 0x16fa: 0x1513, 0x16fb: 0x183b, + 0x16fc: 0x06a3, 0x16fd: 0x1840, 0x16fe: 0x152b, 0x16ff: 0x152b, + // Block 0x5c, offset 0x1700 + 0x1700: 0x1533, 0x1701: 0x1845, 0x1702: 0x154b, 0x1703: 0x06a7, 0x1704: 0x155b, 0x1705: 0x1567, + 0x1706: 0x156f, 0x1707: 0x1577, 0x1708: 0x06ab, 0x1709: 0x184a, 0x170a: 0x158b, 0x170b: 0x15a7, + 0x170c: 0x15b3, 0x170d: 0x06af, 0x170e: 0x06b3, 0x170f: 0x15b7, 0x1710: 0x184f, 0x1711: 0x06b7, + 0x1712: 0x1854, 0x1713: 0x1859, 0x1714: 0x185e, 0x1715: 0x15db, 0x1716: 0x06bb, 0x1717: 0x15ef, + 0x1718: 0x15f7, 0x1719: 0x15fb, 0x171a: 0x1603, 0x171b: 0x160b, 0x171c: 0x1613, 0x171d: 0x1868, } // nfkcIndex: 22 blocks, 1408 entries, 1408 bytes @@ -5548,36 +5570,36 @@ var nfkcIndex = [1408]uint8{ // Block 0x1, offset 0x40 // Block 0x2, offset 0x80 // Block 0x3, offset 0xc0 - 0xc2: 0x5a, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5b, 0xc7: 0x04, - 0xc8: 0x05, 0xca: 0x5c, 0xcb: 0x5d, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09, - 0xd0: 0x0a, 0xd1: 0x5e, 0xd2: 0x5f, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x60, - 0xd8: 0x61, 0xd9: 0x0d, 0xdb: 0x62, 0xdc: 0x63, 0xdd: 0x64, 0xdf: 0x65, + 0xc2: 0x5b, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5c, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x5d, 0xcb: 0x5e, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09, + 0xd0: 0x0a, 0xd1: 0x5f, 0xd2: 0x60, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x61, + 0xd8: 0x62, 0xd9: 0x0d, 0xdb: 0x63, 0xdc: 0x64, 0xdd: 0x65, 0xdf: 0x66, 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, 0xf0: 0x13, // Block 0x4, offset 0x100 - 0x120: 0x66, 0x121: 0x67, 0x123: 0x68, 0x124: 0x69, 0x125: 0x6a, 0x126: 0x6b, 0x127: 0x6c, - 0x128: 0x6d, 0x129: 0x6e, 0x12a: 0x6f, 0x12b: 0x70, 0x12c: 0x6b, 0x12d: 0x71, 0x12e: 0x72, 0x12f: 0x73, - 0x131: 0x74, 0x132: 0x75, 0x133: 0x76, 0x134: 0x77, 0x135: 0x78, 0x137: 0x79, - 0x138: 0x7a, 0x139: 0x7b, 0x13a: 0x7c, 0x13b: 0x7d, 0x13c: 0x7e, 0x13d: 0x7f, 0x13e: 0x80, 0x13f: 0x81, + 0x120: 0x67, 0x121: 0x68, 0x123: 0x69, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d, + 0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74, + 0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a, + 0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82, // Block 0x5, offset 0x140 - 0x140: 0x82, 0x142: 0x83, 0x143: 0x84, 0x144: 0x85, 0x145: 0x86, 0x146: 0x87, 0x147: 0x88, - 0x14d: 0x89, - 0x15c: 0x8a, 0x15f: 0x8b, - 0x162: 0x8c, 0x164: 0x8d, - 0x168: 0x8e, 0x169: 0x8f, 0x16a: 0x90, 0x16c: 0x0e, 0x16d: 0x91, 0x16e: 0x92, 0x16f: 0x93, - 0x170: 0x94, 0x173: 0x95, 0x174: 0x96, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x97, - 0x178: 0x11, 0x179: 0x12, 0x17a: 0x13, 0x17b: 0x14, 0x17c: 0x15, 0x17d: 0x16, 0x17e: 0x17, 0x17f: 0x18, + 0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89, + 0x14d: 0x8a, + 0x15c: 0x8b, 0x15f: 0x8c, + 0x162: 0x8d, 0x164: 0x8e, + 0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16c: 0x0e, 0x16d: 0x92, 0x16e: 0x93, 0x16f: 0x94, + 0x170: 0x95, 0x173: 0x96, 0x174: 0x97, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x11, + 0x178: 0x12, 0x179: 0x13, 0x17a: 0x14, 0x17b: 0x15, 0x17c: 0x16, 0x17d: 0x17, 0x17e: 0x18, 0x17f: 0x19, // Block 0x6, offset 0x180 - 0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x9c, 0x187: 0x9d, - 0x188: 0x9e, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9f, 0x18c: 0xa0, - 0x191: 0x1d, 0x192: 0x1e, 0x193: 0xa1, + 0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x1a, 0x185: 0x1b, 0x186: 0x9c, 0x187: 0x9d, + 0x188: 0x9e, 0x189: 0x1c, 0x18a: 0x1d, 0x18b: 0x9f, 0x18c: 0xa0, + 0x191: 0x1e, 0x192: 0x1f, 0x193: 0xa1, 0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4, 0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8, - 0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xab, + 0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x20, 0x1bd: 0x21, 0x1be: 0x22, 0x1bf: 0xab, // Block 0x7, offset 0x1c0 - 0x1c0: 0xac, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xad, 0x1c5: 0x25, 0x1c6: 0x26, - 0x1c8: 0x27, 0x1c9: 0x28, 0x1ca: 0x29, 0x1cb: 0x2a, 0x1cc: 0x2b, 0x1cd: 0x2c, 0x1ce: 0x2d, 0x1cf: 0x2e, + 0x1c0: 0xac, 0x1c1: 0x23, 0x1c2: 0x24, 0x1c3: 0x25, 0x1c4: 0xad, 0x1c5: 0x26, 0x1c6: 0x27, + 0x1c8: 0x28, 0x1c9: 0x29, 0x1ca: 0x2a, 0x1cb: 0x2b, 0x1cc: 0x2c, 0x1cd: 0x2d, 0x1ce: 0x2e, 0x1cf: 0x2f, // Block 0x8, offset 0x200 0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2, 0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8, @@ -5608,50 +5630,51 @@ var nfkcIndex = [1408]uint8{ 0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3, 0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4, // Block 0xc, offset 0x300 - 0x324: 0x2f, 0x325: 0x30, 0x326: 0x31, 0x327: 0x32, - 0x328: 0x33, 0x329: 0x34, 0x32a: 0x35, 0x32b: 0x36, 0x32c: 0x37, 0x32d: 0x38, 0x32e: 0x39, 0x32f: 0x3a, - 0x330: 0x3b, 0x331: 0x3c, 0x332: 0x3d, 0x333: 0x3e, 0x334: 0x3f, 0x335: 0x40, 0x336: 0x41, 0x337: 0x42, - 0x338: 0x43, 0x339: 0x44, 0x33a: 0x45, 0x33b: 0x46, 0x33c: 0xc5, 0x33d: 0x47, 0x33e: 0x48, 0x33f: 0x49, + 0x324: 0x30, 0x325: 0x31, 0x326: 0x32, 0x327: 0x33, + 0x328: 0x34, 0x329: 0x35, 0x32a: 0x36, 0x32b: 0x37, 0x32c: 0x38, 0x32d: 0x39, 0x32e: 0x3a, 0x32f: 0x3b, + 0x330: 0x3c, 0x331: 0x3d, 0x332: 0x3e, 0x333: 0x3f, 0x334: 0x40, 0x335: 0x41, 0x336: 0x42, 0x337: 0x43, + 0x338: 0x44, 0x339: 0x45, 0x33a: 0x46, 0x33b: 0x47, 0x33c: 0xc5, 0x33d: 0x48, 0x33e: 0x49, 0x33f: 0x4a, // Block 0xd, offset 0x340 0x347: 0xc6, 0x34b: 0xc7, 0x34d: 0xc8, 0x368: 0xc9, 0x36b: 0xca, // Block 0xe, offset 0x380 0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xce, - 0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6b, 0x38d: 0xd1, + 0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6c, 0x38d: 0xd1, 0x391: 0xd2, 0x392: 0xd3, 0x393: 0xd4, 0x396: 0xd5, 0x397: 0xd6, 0x398: 0xd7, 0x39a: 0xd8, 0x39c: 0xd9, - 0x3b0: 0xd7, + 0x3a8: 0xda, 0x3a9: 0xdb, 0x3aa: 0xdc, + 0x3b0: 0xd7, 0x3b5: 0xdd, // Block 0xf, offset 0x3c0 - 0x3eb: 0xda, 0x3ec: 0xdb, + 0x3eb: 0xde, 0x3ec: 0xdf, // Block 0x10, offset 0x400 - 0x432: 0xdc, + 0x432: 0xe0, // Block 0x11, offset 0x440 - 0x445: 0xdd, 0x446: 0xde, 0x447: 0xdf, - 0x449: 0xe0, - 0x450: 0xe1, 0x451: 0xe2, 0x452: 0xe3, 0x453: 0xe4, 0x454: 0xe5, 0x455: 0xe6, 0x456: 0xe7, 0x457: 0xe8, - 0x458: 0xe9, 0x459: 0xea, 0x45a: 0x4a, 0x45b: 0xeb, 0x45c: 0xec, 0x45d: 0xed, 0x45e: 0xee, 0x45f: 0x4b, + 0x445: 0xe1, 0x446: 0xe2, 0x447: 0xe3, + 0x449: 0xe4, + 0x450: 0xe5, 0x451: 0xe6, 0x452: 0xe7, 0x453: 0xe8, 0x454: 0xe9, 0x455: 0xea, 0x456: 0xeb, 0x457: 0xec, + 0x458: 0xed, 0x459: 0xee, 0x45a: 0x4b, 0x45b: 0xef, 0x45c: 0xf0, 0x45d: 0xf1, 0x45e: 0xf2, 0x45f: 0x4c, // Block 0x12, offset 0x480 - 0x480: 0xef, - 0x4a3: 0xf0, 0x4a5: 0xf1, - 0x4b8: 0x4c, 0x4b9: 0x4d, 0x4ba: 0x4e, + 0x480: 0xf3, + 0x4a3: 0xf4, 0x4a5: 0xf5, + 0x4b8: 0x4d, 0x4b9: 0x4e, 0x4ba: 0x4f, // Block 0x13, offset 0x4c0 - 0x4c4: 0x4f, 0x4c5: 0xf2, 0x4c6: 0xf3, - 0x4c8: 0x50, 0x4c9: 0xf4, + 0x4c4: 0x50, 0x4c5: 0xf6, 0x4c6: 0xf7, + 0x4c8: 0x51, 0x4c9: 0xf8, // Block 0x14, offset 0x500 - 0x520: 0x51, 0x521: 0x52, 0x522: 0x53, 0x523: 0x54, 0x524: 0x55, 0x525: 0x56, 0x526: 0x57, 0x527: 0x58, - 0x528: 0x59, + 0x520: 0x52, 0x521: 0x53, 0x522: 0x54, 0x523: 0x55, 0x524: 0x56, 0x525: 0x57, 0x526: 0x58, 0x527: 0x59, + 0x528: 0x5a, // Block 0x15, offset 0x540 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, 0x56f: 0x12, } -// nfkcSparseOffset: 155 entries, 310 bytes -var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd4, 0xdb, 0xe3, 0xe7, 0xe9, 0xec, 0xf0, 0xf6, 0x107, 0x113, 0x115, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12c, 0x12f, 0x131, 0x134, 0x137, 0x13b, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x176, 0x184, 0x192, 0x1a2, 0x1b0, 0x1b7, 0x1bd, 0x1cc, 0x1d0, 0x1d2, 0x1d6, 0x1d8, 0x1db, 0x1dd, 0x1e0, 0x1e2, 0x1e5, 0x1e7, 0x1e9, 0x1eb, 0x1f7, 0x201, 0x20b, 0x20e, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21d, 0x21f, 0x221, 0x223, 0x225, 0x22b, 0x22e, 0x232, 0x234, 0x23b, 0x241, 0x247, 0x24f, 0x255, 0x25b, 0x261, 0x265, 0x267, 0x269, 0x26b, 0x26d, 0x273, 0x276, 0x279, 0x281, 0x288, 0x28b, 0x28e, 0x290, 0x298, 0x29b, 0x2a2, 0x2a5, 0x2ab, 0x2ad, 0x2af, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2c7, 0x2d1, 0x2d3, 0x2d5, 0x2d9, 0x2de, 0x2ea, 0x2ef, 0x2f8, 0x2fe, 0x303, 0x307, 0x30c, 0x310, 0x320, 0x32e, 0x33c, 0x34a, 0x350, 0x352, 0x355, 0x35f, 0x361} +// nfkcSparseOffset: 158 entries, 316 bytes +var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd5, 0xdc, 0xe4, 0xe8, 0xea, 0xed, 0xf1, 0xf7, 0x108, 0x114, 0x116, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12d, 0x130, 0x132, 0x135, 0x138, 0x13c, 0x141, 0x14a, 0x14c, 0x14f, 0x151, 0x15c, 0x167, 0x175, 0x183, 0x193, 0x1a1, 0x1a8, 0x1ae, 0x1bd, 0x1c1, 0x1c3, 0x1c7, 0x1c9, 0x1cc, 0x1ce, 0x1d1, 0x1d3, 0x1d6, 0x1d8, 0x1da, 0x1dc, 0x1e8, 0x1f2, 0x1fc, 0x1ff, 0x203, 0x205, 0x207, 0x209, 0x20b, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x21c, 0x21f, 0x223, 0x225, 0x22c, 0x232, 0x238, 0x240, 0x246, 0x24c, 0x252, 0x256, 0x258, 0x25a, 0x25c, 0x25e, 0x264, 0x267, 0x26a, 0x272, 0x279, 0x27c, 0x27f, 0x281, 0x289, 0x28c, 0x293, 0x296, 0x29c, 0x29e, 0x2a0, 0x2a3, 0x2a5, 0x2a7, 0x2a9, 0x2ab, 0x2ae, 0x2b0, 0x2b2, 0x2b4, 0x2c1, 0x2cb, 0x2cd, 0x2cf, 0x2d3, 0x2d8, 0x2e4, 0x2e9, 0x2f2, 0x2f8, 0x2fd, 0x301, 0x306, 0x30a, 0x31a, 0x328, 0x336, 0x344, 0x34a, 0x34c, 0x34f, 0x359, 0x35b} -// nfkcSparseValues: 875 entries, 3500 bytes -var nfkcSparseValues = [875]valueRange{ +// nfkcSparseValues: 869 entries, 3476 bytes +var nfkcSparseValues = [869]valueRange{ // Block 0x0, offset 0x0 {value: 0x0002, lo: 0x0d}, {value: 0x0001, lo: 0xa0, hi: 0xa0}, @@ -5892,9 +5915,10 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x8104, lo: 0x8d, hi: 0x8d}, {value: 0x9900, lo: 0x95, hi: 0x96}, // Block 0x1d, offset 0xd2 - {value: 0x0000, lo: 0x01}, + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xbb, hi: 0xbc}, {value: 0x9900, lo: 0xbe, hi: 0xbe}, - // Block 0x1e, offset 0xd4 + // Block 0x1e, offset 0xd5 {value: 0x0000, lo: 0x06}, {value: 0xa000, lo: 0x86, hi: 0x87}, {value: 0x2cfe, lo: 0x8a, hi: 0x8a}, @@ -5902,7 +5926,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x2d06, lo: 0x8c, hi: 0x8c}, {value: 0x8104, lo: 0x8d, hi: 0x8d}, {value: 0x9900, lo: 0x97, hi: 0x97}, - // Block 0x1f, offset 0xdb + // Block 0x1f, offset 0xdc {value: 0x6bea, lo: 0x07}, {value: 0x9904, lo: 0x8a, hi: 0x8a}, {value: 0x9900, lo: 0x8f, hi: 0x8f}, @@ -5911,31 +5935,31 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x2f58, lo: 0x9c, hi: 0x9c}, {value: 0x2de3, lo: 0x9d, hi: 0x9d}, {value: 0x2d16, lo: 0x9e, hi: 0x9f}, - // Block 0x20, offset 0xe3 + // Block 0x20, offset 0xe4 {value: 0x0000, lo: 0x03}, {value: 0x2621, lo: 0xb3, hi: 0xb3}, {value: 0x8122, lo: 0xb8, hi: 0xb9}, {value: 0x8104, lo: 0xba, hi: 0xba}, - // Block 0x21, offset 0xe7 + // Block 0x21, offset 0xe8 {value: 0x0000, lo: 0x01}, {value: 0x8123, lo: 0x88, hi: 0x8b}, - // Block 0x22, offset 0xe9 + // Block 0x22, offset 0xea {value: 0x0000, lo: 0x02}, {value: 0x2636, lo: 0xb3, hi: 0xb3}, {value: 0x8124, lo: 0xb8, hi: 0xb9}, - // Block 0x23, offset 0xec + // Block 0x23, offset 0xed {value: 0x0000, lo: 0x03}, {value: 0x8125, lo: 0x88, hi: 0x8b}, {value: 0x2628, lo: 0x9c, hi: 0x9c}, {value: 0x262f, lo: 0x9d, hi: 0x9d}, - // Block 0x24, offset 0xf0 + // Block 0x24, offset 0xf1 {value: 0x0000, lo: 0x05}, {value: 0x030b, lo: 0x8c, hi: 0x8c}, {value: 0x812d, lo: 0x98, hi: 0x99}, {value: 0x812d, lo: 0xb5, hi: 0xb5}, {value: 0x812d, lo: 0xb7, hi: 0xb7}, {value: 0x812b, lo: 0xb9, hi: 0xb9}, - // Block 0x25, offset 0xf6 + // Block 0x25, offset 0xf7 {value: 0x0000, lo: 0x10}, {value: 0x2644, lo: 0x83, hi: 0x83}, {value: 0x264b, lo: 0x8d, hi: 0x8d}, @@ -5953,7 +5977,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x45bc, lo: 0xb8, hi: 0xb8}, {value: 0x45ff, lo: 0xb9, hi: 0xb9}, {value: 0x8127, lo: 0xba, hi: 0xbd}, - // Block 0x26, offset 0x107 + // Block 0x26, offset 0x108 {value: 0x0000, lo: 0x0b}, {value: 0x8127, lo: 0x80, hi: 0x80}, {value: 0x4a96, lo: 0x81, hi: 0x81}, @@ -5966,68 +5990,68 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x2683, lo: 0xa7, hi: 0xa7}, {value: 0x268a, lo: 0xac, hi: 0xac}, {value: 0x2667, lo: 0xb9, hi: 0xb9}, - // Block 0x27, offset 0x113 + // Block 0x27, offset 0x114 {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0x86, hi: 0x86}, - // Block 0x28, offset 0x115 + // Block 0x28, offset 0x116 {value: 0x0000, lo: 0x05}, {value: 0xa000, lo: 0xa5, hi: 0xa5}, {value: 0x2d1e, lo: 0xa6, hi: 0xa6}, {value: 0x9900, lo: 0xae, hi: 0xae}, {value: 0x8102, lo: 0xb7, hi: 0xb7}, {value: 0x8104, lo: 0xb9, hi: 0xba}, - // Block 0x29, offset 0x11b + // Block 0x29, offset 0x11c {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0x8d, hi: 0x8d}, - // Block 0x2a, offset 0x11d + // Block 0x2a, offset 0x11e {value: 0x0000, lo: 0x01}, {value: 0x030f, lo: 0xbc, hi: 0xbc}, - // Block 0x2b, offset 0x11f + // Block 0x2b, offset 0x120 {value: 0x0000, lo: 0x01}, {value: 0xa000, lo: 0x80, hi: 0x92}, - // Block 0x2c, offset 0x121 + // Block 0x2c, offset 0x122 {value: 0x0000, lo: 0x01}, {value: 0xb900, lo: 0xa1, hi: 0xb5}, - // Block 0x2d, offset 0x123 + // Block 0x2d, offset 0x124 {value: 0x0000, lo: 0x01}, {value: 0x9900, lo: 0xa8, hi: 0xbf}, - // Block 0x2e, offset 0x125 + // Block 0x2e, offset 0x126 {value: 0x0000, lo: 0x01}, {value: 0x9900, lo: 0x80, hi: 0x82}, - // Block 0x2f, offset 0x127 + // Block 0x2f, offset 0x128 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x9d, hi: 0x9f}, - // Block 0x30, offset 0x129 + // Block 0x30, offset 0x12a {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x94, hi: 0x94}, {value: 0x8104, lo: 0xb4, hi: 0xb4}, - // Block 0x31, offset 0x12c + // Block 0x31, offset 0x12d {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x92, hi: 0x92}, {value: 0x8132, lo: 0x9d, hi: 0x9d}, - // Block 0x32, offset 0x12f + // Block 0x32, offset 0x130 {value: 0x0000, lo: 0x01}, {value: 0x8131, lo: 0xa9, hi: 0xa9}, - // Block 0x33, offset 0x131 + // Block 0x33, offset 0x132 {value: 0x0004, lo: 0x02}, {value: 0x812e, lo: 0xb9, hi: 0xba}, {value: 0x812d, lo: 0xbb, hi: 0xbb}, - // Block 0x34, offset 0x134 + // Block 0x34, offset 0x135 {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0x97, hi: 0x97}, {value: 0x812d, lo: 0x98, hi: 0x98}, - // Block 0x35, offset 0x137 + // Block 0x35, offset 0x138 {value: 0x0000, lo: 0x03}, {value: 0x8104, lo: 0xa0, hi: 0xa0}, {value: 0x8132, lo: 0xb5, hi: 0xbc}, {value: 0x812d, lo: 0xbf, hi: 0xbf}, - // Block 0x36, offset 0x13b + // Block 0x36, offset 0x13c {value: 0x0000, lo: 0x04}, {value: 0x8132, lo: 0xb0, hi: 0xb4}, {value: 0x812d, lo: 0xb5, hi: 0xba}, {value: 0x8132, lo: 0xbb, hi: 0xbc}, {value: 0x812d, lo: 0xbd, hi: 0xbd}, - // Block 0x37, offset 0x140 + // Block 0x37, offset 0x141 {value: 0x0000, lo: 0x08}, {value: 0x2d66, lo: 0x80, hi: 0x80}, {value: 0x2d6e, lo: 0x81, hi: 0x81}, @@ -6037,17 +6061,17 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x8132, lo: 0xab, hi: 0xab}, {value: 0x812d, lo: 0xac, hi: 0xac}, {value: 0x8132, lo: 0xad, hi: 0xb3}, - // Block 0x38, offset 0x149 + // Block 0x38, offset 0x14a {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xaa, hi: 0xab}, - // Block 0x39, offset 0x14b + // Block 0x39, offset 0x14c {value: 0x0000, lo: 0x02}, {value: 0x8102, lo: 0xa6, hi: 0xa6}, {value: 0x8104, lo: 0xb2, hi: 0xb3}, - // Block 0x3a, offset 0x14e + // Block 0x3a, offset 0x14f {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0xb7, hi: 0xb7}, - // Block 0x3b, offset 0x150 + // Block 0x3b, offset 0x151 {value: 0x0000, lo: 0x0a}, {value: 0x8132, lo: 0x90, hi: 0x92}, {value: 0x8101, lo: 0x94, hi: 0x94}, @@ -6059,7 +6083,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x812d, lo: 0xad, hi: 0xad}, {value: 0x8132, lo: 0xb4, hi: 0xb4}, {value: 0x8132, lo: 0xb8, hi: 0xb9}, - // Block 0x3c, offset 0x15b + // Block 0x3c, offset 0x15c {value: 0x0002, lo: 0x0a}, {value: 0x0043, lo: 0xac, hi: 0xac}, {value: 0x00d1, lo: 0xad, hi: 0xad}, @@ -6071,24 +6095,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x00ef, lo: 0xbd, hi: 0xbd}, {value: 0x0061, lo: 0xbe, hi: 0xbe}, {value: 0x0065, lo: 0xbf, hi: 0xbf}, - // Block 0x3d, offset 0x166 - {value: 0x0000, lo: 0x0f}, - {value: 0x8132, lo: 0x80, hi: 0x81}, - {value: 0x812d, lo: 0x82, hi: 0x82}, - {value: 0x8132, lo: 0x83, hi: 0x89}, - {value: 0x812d, lo: 0x8a, hi: 0x8a}, - {value: 0x8132, lo: 0x8b, hi: 0x8c}, - {value: 0x8135, lo: 0x8d, hi: 0x8d}, - {value: 0x812a, lo: 0x8e, hi: 0x8e}, - {value: 0x812d, lo: 0x8f, hi: 0x8f}, - {value: 0x8129, lo: 0x90, hi: 0x90}, - {value: 0x8132, lo: 0x91, hi: 0xb5}, - {value: 0x8132, lo: 0xbb, hi: 0xbb}, - {value: 0x8134, lo: 0xbc, hi: 0xbc}, - {value: 0x812d, lo: 0xbd, hi: 0xbd}, - {value: 0x8132, lo: 0xbe, hi: 0xbe}, - {value: 0x812d, lo: 0xbf, hi: 0xbf}, - // Block 0x3e, offset 0x176 + // Block 0x3d, offset 0x167 {value: 0x0000, lo: 0x0d}, {value: 0x0001, lo: 0x80, hi: 0x8a}, {value: 0x043b, lo: 0x91, hi: 0x91}, @@ -6103,7 +6110,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x2808, lo: 0xb7, hi: 0xb7}, {value: 0x186d, lo: 0xbc, hi: 0xbc}, {value: 0x4269, lo: 0xbe, hi: 0xbe}, - // Block 0x3f, offset 0x184 + // Block 0x3e, offset 0x175 {value: 0x0002, lo: 0x0d}, {value: 0x1933, lo: 0x87, hi: 0x87}, {value: 0x1930, lo: 0x88, hi: 0x88}, @@ -6118,7 +6125,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x003b, lo: 0xbc, hi: 0xbc}, {value: 0x0011, lo: 0xbd, hi: 0xbe}, {value: 0x009d, lo: 0xbf, hi: 0xbf}, - // Block 0x40, offset 0x192 + // Block 0x3f, offset 0x183 {value: 0x0002, lo: 0x0f}, {value: 0x0021, lo: 0x80, hi: 0x89}, {value: 0x0017, lo: 0x8a, hi: 0x8a}, @@ -6135,7 +6142,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x00a1, lo: 0x9a, hi: 0x9a}, {value: 0x00a7, lo: 0x9b, hi: 0x9c}, {value: 0x1999, lo: 0xa8, hi: 0xa8}, - // Block 0x41, offset 0x1a2 + // Block 0x40, offset 0x193 {value: 0x0000, lo: 0x0d}, {value: 0x8132, lo: 0x90, hi: 0x91}, {value: 0x8101, lo: 0x92, hi: 0x93}, @@ -6150,7 +6157,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x8101, lo: 0xaa, hi: 0xab}, {value: 0x812d, lo: 0xac, hi: 0xaf}, {value: 0x8132, lo: 0xb0, hi: 0xb0}, - // Block 0x42, offset 0x1b0 + // Block 0x41, offset 0x1a1 {value: 0x0007, lo: 0x06}, {value: 0x2180, lo: 0x89, hi: 0x89}, {value: 0xa000, lo: 0x90, hi: 0x90}, @@ -6158,14 +6165,14 @@ var nfkcSparseValues = [875]valueRange{ {value: 0xa000, lo: 0x94, hi: 0x94}, {value: 0x3bb9, lo: 0x9a, hi: 0x9b}, {value: 0x3bc7, lo: 0xae, hi: 0xae}, - // Block 0x43, offset 0x1b7 + // Block 0x42, offset 0x1a8 {value: 0x000e, lo: 0x05}, {value: 0x3bce, lo: 0x8d, hi: 0x8e}, {value: 0x3bd5, lo: 0x8f, hi: 0x8f}, {value: 0xa000, lo: 0x90, hi: 0x90}, {value: 0xa000, lo: 0x92, hi: 0x92}, {value: 0xa000, lo: 0x94, hi: 0x94}, - // Block 0x44, offset 0x1bd + // Block 0x43, offset 0x1ae {value: 0x0173, lo: 0x0e}, {value: 0xa000, lo: 0x83, hi: 0x83}, {value: 0x3be3, lo: 0x84, hi: 0x84}, @@ -6181,50 +6188,50 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x26a6, lo: 0xaf, hi: 0xaf}, {value: 0x281c, lo: 0xb0, hi: 0xb0}, {value: 0xa000, lo: 0xbc, hi: 0xbc}, - // Block 0x45, offset 0x1cc + // Block 0x44, offset 0x1bd {value: 0x0007, lo: 0x03}, {value: 0x3c68, lo: 0xa0, hi: 0xa1}, {value: 0x3c92, lo: 0xa2, hi: 0xa3}, {value: 0x3cbc, lo: 0xaa, hi: 0xad}, - // Block 0x46, offset 0x1d0 + // Block 0x45, offset 0x1c1 {value: 0x0004, lo: 0x01}, {value: 0x048b, lo: 0xa9, hi: 0xaa}, - // Block 0x47, offset 0x1d2 + // Block 0x46, offset 0x1c3 {value: 0x0002, lo: 0x03}, {value: 0x0057, lo: 0x80, hi: 0x8f}, {value: 0x0083, lo: 0x90, hi: 0xa9}, {value: 0x0021, lo: 0xaa, hi: 0xaa}, - // Block 0x48, offset 0x1d6 + // Block 0x47, offset 0x1c7 {value: 0x0000, lo: 0x01}, {value: 0x299b, lo: 0x8c, hi: 0x8c}, - // Block 0x49, offset 0x1d8 + // Block 0x48, offset 0x1c9 {value: 0x0263, lo: 0x02}, {value: 0x1b8c, lo: 0xb4, hi: 0xb4}, {value: 0x192d, lo: 0xb5, hi: 0xb6}, - // Block 0x4a, offset 0x1db + // Block 0x49, offset 0x1cc {value: 0x0000, lo: 0x01}, {value: 0x44dd, lo: 0x9c, hi: 0x9c}, - // Block 0x4b, offset 0x1dd + // Block 0x4a, offset 0x1ce {value: 0x0000, lo: 0x02}, {value: 0x0095, lo: 0xbc, hi: 0xbc}, {value: 0x006d, lo: 0xbd, hi: 0xbd}, - // Block 0x4c, offset 0x1e0 + // Block 0x4b, offset 0x1d1 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xaf, hi: 0xb1}, - // Block 0x4d, offset 0x1e2 + // Block 0x4c, offset 0x1d3 {value: 0x0000, lo: 0x02}, {value: 0x047f, lo: 0xaf, hi: 0xaf}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x4e, offset 0x1e5 + // Block 0x4d, offset 0x1d6 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xa0, hi: 0xbf}, - // Block 0x4f, offset 0x1e7 + // Block 0x4e, offset 0x1d8 {value: 0x0000, lo: 0x01}, {value: 0x0dc3, lo: 0x9f, hi: 0x9f}, - // Block 0x50, offset 0x1e9 + // Block 0x4f, offset 0x1da {value: 0x0000, lo: 0x01}, {value: 0x162f, lo: 0xb3, hi: 0xb3}, - // Block 0x51, offset 0x1eb + // Block 0x50, offset 0x1dc {value: 0x0004, lo: 0x0b}, {value: 0x1597, lo: 0x80, hi: 0x82}, {value: 0x15af, lo: 0x83, hi: 0x83}, @@ -6237,7 +6244,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x161b, lo: 0x91, hi: 0x93}, {value: 0x162b, lo: 0x94, hi: 0x94}, {value: 0x1633, lo: 0x95, hi: 0x95}, - // Block 0x52, offset 0x1f7 + // Block 0x51, offset 0x1e8 {value: 0x0004, lo: 0x09}, {value: 0x0001, lo: 0x80, hi: 0x80}, {value: 0x812c, lo: 0xaa, hi: 0xaa}, @@ -6248,7 +6255,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x812f, lo: 0xaf, hi: 0xaf}, {value: 0x04b3, lo: 0xb6, hi: 0xb6}, {value: 0x0887, lo: 0xb8, hi: 0xba}, - // Block 0x53, offset 0x201 + // Block 0x52, offset 0x1f2 {value: 0x0006, lo: 0x09}, {value: 0x0313, lo: 0xb1, hi: 0xb1}, {value: 0x0317, lo: 0xb2, hi: 0xb2}, @@ -6259,63 +6266,63 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x0323, lo: 0xb8, hi: 0xb8}, {value: 0x0327, lo: 0xb9, hi: 0xb9}, {value: 0x4a4d, lo: 0xba, hi: 0xbf}, - // Block 0x54, offset 0x20b + // Block 0x53, offset 0x1fc {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0xaf, hi: 0xaf}, {value: 0x8132, lo: 0xb4, hi: 0xbd}, - // Block 0x55, offset 0x20e + // Block 0x54, offset 0x1ff {value: 0x0000, lo: 0x03}, {value: 0x020f, lo: 0x9c, hi: 0x9c}, {value: 0x0212, lo: 0x9d, hi: 0x9d}, {value: 0x8132, lo: 0x9e, hi: 0x9f}, - // Block 0x56, offset 0x212 + // Block 0x55, offset 0x203 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xb0, hi: 0xb1}, - // Block 0x57, offset 0x214 + // Block 0x56, offset 0x205 {value: 0x0000, lo: 0x01}, {value: 0x163b, lo: 0xb0, hi: 0xb0}, - // Block 0x58, offset 0x216 + // Block 0x57, offset 0x207 {value: 0x000c, lo: 0x01}, {value: 0x00d7, lo: 0xb8, hi: 0xb9}, - // Block 0x59, offset 0x218 + // Block 0x58, offset 0x209 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0x86, hi: 0x86}, - // Block 0x5a, offset 0x21a + // Block 0x59, offset 0x20b {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x84, hi: 0x84}, {value: 0x8132, lo: 0xa0, hi: 0xb1}, - // Block 0x5b, offset 0x21d + // Block 0x5a, offset 0x20e {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0xab, hi: 0xad}, - // Block 0x5c, offset 0x21f + // Block 0x5b, offset 0x210 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0x93, hi: 0x93}, - // Block 0x5d, offset 0x221 + // Block 0x5c, offset 0x212 {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0xb3, hi: 0xb3}, - // Block 0x5e, offset 0x223 + // Block 0x5d, offset 0x214 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0x80, hi: 0x80}, - // Block 0x5f, offset 0x225 + // Block 0x5e, offset 0x216 {value: 0x0000, lo: 0x05}, {value: 0x8132, lo: 0xb0, hi: 0xb0}, {value: 0x8132, lo: 0xb2, hi: 0xb3}, {value: 0x812d, lo: 0xb4, hi: 0xb4}, {value: 0x8132, lo: 0xb7, hi: 0xb8}, {value: 0x8132, lo: 0xbe, hi: 0xbf}, - // Block 0x60, offset 0x22b + // Block 0x5f, offset 0x21c {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0x81, hi: 0x81}, {value: 0x8104, lo: 0xb6, hi: 0xb6}, - // Block 0x61, offset 0x22e + // Block 0x60, offset 0x21f {value: 0x0008, lo: 0x03}, {value: 0x1637, lo: 0x9c, hi: 0x9d}, {value: 0x0125, lo: 0x9e, hi: 0x9e}, {value: 0x1643, lo: 0x9f, hi: 0x9f}, - // Block 0x62, offset 0x232 + // Block 0x61, offset 0x223 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xad, hi: 0xad}, - // Block 0x63, offset 0x234 + // Block 0x62, offset 0x225 {value: 0x0000, lo: 0x06}, {value: 0xe500, lo: 0x80, hi: 0x80}, {value: 0xc600, lo: 0x81, hi: 0x9b}, @@ -6323,21 +6330,21 @@ var nfkcSparseValues = [875]valueRange{ {value: 0xc600, lo: 0x9d, hi: 0xb7}, {value: 0xe500, lo: 0xb8, hi: 0xb8}, {value: 0xc600, lo: 0xb9, hi: 0xbf}, - // Block 0x64, offset 0x23b + // Block 0x63, offset 0x22c {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x93}, {value: 0xe500, lo: 0x94, hi: 0x94}, {value: 0xc600, lo: 0x95, hi: 0xaf}, {value: 0xe500, lo: 0xb0, hi: 0xb0}, {value: 0xc600, lo: 0xb1, hi: 0xbf}, - // Block 0x65, offset 0x241 + // Block 0x64, offset 0x232 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x8b}, {value: 0xe500, lo: 0x8c, hi: 0x8c}, {value: 0xc600, lo: 0x8d, hi: 0xa7}, {value: 0xe500, lo: 0xa8, hi: 0xa8}, {value: 0xc600, lo: 0xa9, hi: 0xbf}, - // Block 0x66, offset 0x247 + // Block 0x65, offset 0x238 {value: 0x0000, lo: 0x07}, {value: 0xc600, lo: 0x80, hi: 0x83}, {value: 0xe500, lo: 0x84, hi: 0x84}, @@ -6346,60 +6353,60 @@ var nfkcSparseValues = [875]valueRange{ {value: 0xc600, lo: 0xa1, hi: 0xbb}, {value: 0xe500, lo: 0xbc, hi: 0xbc}, {value: 0xc600, lo: 0xbd, hi: 0xbf}, - // Block 0x67, offset 0x24f + // Block 0x66, offset 0x240 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x97}, {value: 0xe500, lo: 0x98, hi: 0x98}, {value: 0xc600, lo: 0x99, hi: 0xb3}, {value: 0xe500, lo: 0xb4, hi: 0xb4}, {value: 0xc600, lo: 0xb5, hi: 0xbf}, - // Block 0x68, offset 0x255 + // Block 0x67, offset 0x246 {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x8f}, {value: 0xe500, lo: 0x90, hi: 0x90}, {value: 0xc600, lo: 0x91, hi: 0xab}, {value: 0xe500, lo: 0xac, hi: 0xac}, {value: 0xc600, lo: 0xad, hi: 0xbf}, - // Block 0x69, offset 0x25b + // Block 0x68, offset 0x24c {value: 0x0000, lo: 0x05}, {value: 0xc600, lo: 0x80, hi: 0x87}, {value: 0xe500, lo: 0x88, hi: 0x88}, {value: 0xc600, lo: 0x89, hi: 0xa3}, {value: 0xe500, lo: 0xa4, hi: 0xa4}, {value: 0xc600, lo: 0xa5, hi: 0xbf}, - // Block 0x6a, offset 0x261 + // Block 0x69, offset 0x252 {value: 0x0000, lo: 0x03}, {value: 0xc600, lo: 0x80, hi: 0x87}, {value: 0xe500, lo: 0x88, hi: 0x88}, {value: 0xc600, lo: 0x89, hi: 0xa3}, - // Block 0x6b, offset 0x265 + // Block 0x6a, offset 0x256 {value: 0x0002, lo: 0x01}, {value: 0x0003, lo: 0x81, hi: 0xbf}, - // Block 0x6c, offset 0x267 + // Block 0x6b, offset 0x258 {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0xbd, hi: 0xbd}, - // Block 0x6d, offset 0x269 + // Block 0x6c, offset 0x25a {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0xa0, hi: 0xa0}, - // Block 0x6e, offset 0x26b + // Block 0x6d, offset 0x25c {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xb6, hi: 0xba}, - // Block 0x6f, offset 0x26d + // Block 0x6e, offset 0x25e {value: 0x002c, lo: 0x05}, {value: 0x812d, lo: 0x8d, hi: 0x8d}, {value: 0x8132, lo: 0x8f, hi: 0x8f}, {value: 0x8132, lo: 0xb8, hi: 0xb8}, {value: 0x8101, lo: 0xb9, hi: 0xba}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x70, offset 0x273 + // Block 0x6f, offset 0x264 {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0xa5, hi: 0xa5}, {value: 0x812d, lo: 0xa6, hi: 0xa6}, - // Block 0x71, offset 0x276 + // Block 0x70, offset 0x267 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x86, hi: 0x86}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x72, offset 0x279 + // Block 0x71, offset 0x26a {value: 0x17fe, lo: 0x07}, {value: 0xa000, lo: 0x99, hi: 0x99}, {value: 0x4238, lo: 0x9a, hi: 0x9a}, @@ -6408,7 +6415,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0xa000, lo: 0xa5, hi: 0xa5}, {value: 0x424c, lo: 0xab, hi: 0xab}, {value: 0x8104, lo: 0xb9, hi: 0xba}, - // Block 0x73, offset 0x281 + // Block 0x72, offset 0x272 {value: 0x0000, lo: 0x06}, {value: 0x8132, lo: 0x80, hi: 0x82}, {value: 0x9900, lo: 0xa7, hi: 0xa7}, @@ -6416,18 +6423,18 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x2d88, lo: 0xaf, hi: 0xaf}, {value: 0xa000, lo: 0xb1, hi: 0xb2}, {value: 0x8104, lo: 0xb3, hi: 0xb4}, - // Block 0x74, offset 0x288 + // Block 0x73, offset 0x279 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x80, hi: 0x80}, {value: 0x8102, lo: 0x8a, hi: 0x8a}, - // Block 0x75, offset 0x28b + // Block 0x74, offset 0x27c {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0xb5, hi: 0xb5}, {value: 0x8102, lo: 0xb6, hi: 0xb6}, - // Block 0x76, offset 0x28e + // Block 0x75, offset 0x27f {value: 0x0002, lo: 0x01}, {value: 0x8102, lo: 0xa9, hi: 0xaa}, - // Block 0x77, offset 0x290 + // Block 0x76, offset 0x281 {value: 0x0000, lo: 0x07}, {value: 0xa000, lo: 0x87, hi: 0x87}, {value: 0x2d92, lo: 0x8b, hi: 0x8b}, @@ -6436,11 +6443,11 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x9900, lo: 0x97, hi: 0x97}, {value: 0x8132, lo: 0xa6, hi: 0xac}, {value: 0x8132, lo: 0xb0, hi: 0xb4}, - // Block 0x78, offset 0x298 + // Block 0x77, offset 0x289 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x82, hi: 0x82}, {value: 0x8102, lo: 0x86, hi: 0x86}, - // Block 0x79, offset 0x29b + // Block 0x78, offset 0x28c {value: 0x6b5a, lo: 0x06}, {value: 0x9900, lo: 0xb0, hi: 0xb0}, {value: 0xa000, lo: 0xb9, hi: 0xb9}, @@ -6448,40 +6455,53 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x2db0, lo: 0xbb, hi: 0xbb}, {value: 0x2da6, lo: 0xbc, hi: 0xbd}, {value: 0x2dba, lo: 0xbe, hi: 0xbe}, - // Block 0x7a, offset 0x2a2 + // Block 0x79, offset 0x293 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0x82, hi: 0x82}, {value: 0x8102, lo: 0x83, hi: 0x83}, - // Block 0x7b, offset 0x2a5 + // Block 0x7a, offset 0x296 {value: 0x0000, lo: 0x05}, {value: 0x9900, lo: 0xaf, hi: 0xaf}, {value: 0xa000, lo: 0xb8, hi: 0xb9}, {value: 0x2dc4, lo: 0xba, hi: 0xba}, {value: 0x2dce, lo: 0xbb, hi: 0xbb}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x7c, offset 0x2ab + // Block 0x7b, offset 0x29c {value: 0x0000, lo: 0x01}, {value: 0x8102, lo: 0x80, hi: 0x80}, - // Block 0x7d, offset 0x2ad + // Block 0x7c, offset 0x29e {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xbf, hi: 0xbf}, - // Block 0x7e, offset 0x2af + // Block 0x7d, offset 0x2a0 {value: 0x0000, lo: 0x02}, {value: 0x8104, lo: 0xb6, hi: 0xb6}, {value: 0x8102, lo: 0xb7, hi: 0xb7}, - // Block 0x7f, offset 0x2b2 + // Block 0x7e, offset 0x2a3 {value: 0x0000, lo: 0x01}, {value: 0x8104, lo: 0xab, hi: 0xab}, - // Block 0x80, offset 0x2b4 + // Block 0x7f, offset 0x2a5 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x80, offset 0x2a7 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x87, hi: 0x87}, + // Block 0x81, offset 0x2a9 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x99, hi: 0x99}, + // Block 0x82, offset 0x2ab + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0x82, hi: 0x82}, + {value: 0x8104, lo: 0x84, hi: 0x85}, + // Block 0x83, offset 0x2ae {value: 0x0000, lo: 0x01}, {value: 0x8101, lo: 0xb0, hi: 0xb4}, - // Block 0x81, offset 0x2b6 + // Block 0x84, offset 0x2b0 {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0xb0, hi: 0xb6}, - // Block 0x82, offset 0x2b8 + // Block 0x85, offset 0x2b2 {value: 0x0000, lo: 0x01}, {value: 0x8101, lo: 0x9e, hi: 0x9e}, - // Block 0x83, offset 0x2ba + // Block 0x86, offset 0x2b4 {value: 0x0000, lo: 0x0c}, {value: 0x45cc, lo: 0x9e, hi: 0x9e}, {value: 0x45d6, lo: 0x9f, hi: 0x9f}, @@ -6495,7 +6515,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x8130, lo: 0xad, hi: 0xad}, {value: 0x812b, lo: 0xae, hi: 0xb2}, {value: 0x812d, lo: 0xbb, hi: 0xbf}, - // Block 0x84, offset 0x2c7 + // Block 0x87, offset 0x2c1 {value: 0x0000, lo: 0x09}, {value: 0x812d, lo: 0x80, hi: 0x82}, {value: 0x8132, lo: 0x85, hi: 0x89}, @@ -6506,24 +6526,24 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x4650, lo: 0xbd, hi: 0xbd}, {value: 0x466c, lo: 0xbe, hi: 0xbe}, {value: 0x465e, lo: 0xbf, hi: 0xbf}, - // Block 0x85, offset 0x2d1 + // Block 0x88, offset 0x2cb {value: 0x0000, lo: 0x01}, {value: 0x467a, lo: 0x80, hi: 0x80}, - // Block 0x86, offset 0x2d3 + // Block 0x89, offset 0x2cd {value: 0x0000, lo: 0x01}, {value: 0x8132, lo: 0x82, hi: 0x84}, - // Block 0x87, offset 0x2d5 + // Block 0x8a, offset 0x2cf {value: 0x0002, lo: 0x03}, {value: 0x0043, lo: 0x80, hi: 0x99}, {value: 0x0083, lo: 0x9a, hi: 0xb3}, {value: 0x0043, lo: 0xb4, hi: 0xbf}, - // Block 0x88, offset 0x2d9 + // Block 0x8b, offset 0x2d3 {value: 0x0002, lo: 0x04}, {value: 0x005b, lo: 0x80, hi: 0x8d}, {value: 0x0083, lo: 0x8e, hi: 0x94}, {value: 0x0093, lo: 0x96, hi: 0xa7}, {value: 0x0043, lo: 0xa8, hi: 0xbf}, - // Block 0x89, offset 0x2de + // Block 0x8c, offset 0x2d8 {value: 0x0002, lo: 0x0b}, {value: 0x0073, lo: 0x80, hi: 0x81}, {value: 0x0083, lo: 0x82, hi: 0x9b}, @@ -6536,13 +6556,13 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x0083, lo: 0xb6, hi: 0xb9}, {value: 0x008d, lo: 0xbb, hi: 0xbb}, {value: 0x0091, lo: 0xbd, hi: 0xbf}, - // Block 0x8a, offset 0x2ea + // Block 0x8d, offset 0x2e4 {value: 0x0002, lo: 0x04}, {value: 0x0097, lo: 0x80, hi: 0x83}, {value: 0x00a1, lo: 0x85, hi: 0x8f}, {value: 0x0043, lo: 0x90, hi: 0xa9}, {value: 0x0083, lo: 0xaa, hi: 0xbf}, - // Block 0x8b, offset 0x2ef + // Block 0x8e, offset 0x2e9 {value: 0x0002, lo: 0x08}, {value: 0x00af, lo: 0x80, hi: 0x83}, {value: 0x0043, lo: 0x84, hi: 0x85}, @@ -6552,36 +6572,36 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x0083, lo: 0x9e, hi: 0xb7}, {value: 0x0043, lo: 0xb8, hi: 0xb9}, {value: 0x0049, lo: 0xbb, hi: 0xbe}, - // Block 0x8c, offset 0x2f8 + // Block 0x8f, offset 0x2f2 {value: 0x0002, lo: 0x05}, {value: 0x0053, lo: 0x80, hi: 0x84}, {value: 0x005f, lo: 0x86, hi: 0x86}, {value: 0x0067, lo: 0x8a, hi: 0x90}, {value: 0x0083, lo: 0x92, hi: 0xab}, {value: 0x0043, lo: 0xac, hi: 0xbf}, - // Block 0x8d, offset 0x2fe + // Block 0x90, offset 0x2f8 {value: 0x0002, lo: 0x04}, {value: 0x006b, lo: 0x80, hi: 0x85}, {value: 0x0083, lo: 0x86, hi: 0x9f}, {value: 0x0043, lo: 0xa0, hi: 0xb9}, {value: 0x0083, lo: 0xba, hi: 0xbf}, - // Block 0x8e, offset 0x303 + // Block 0x91, offset 0x2fd {value: 0x0002, lo: 0x03}, {value: 0x008f, lo: 0x80, hi: 0x93}, {value: 0x0043, lo: 0x94, hi: 0xad}, {value: 0x0083, lo: 0xae, hi: 0xbf}, - // Block 0x8f, offset 0x307 + // Block 0x92, offset 0x301 {value: 0x0002, lo: 0x04}, {value: 0x00a7, lo: 0x80, hi: 0x87}, {value: 0x0043, lo: 0x88, hi: 0xa1}, {value: 0x0083, lo: 0xa2, hi: 0xbb}, {value: 0x0043, lo: 0xbc, hi: 0xbf}, - // Block 0x90, offset 0x30c + // Block 0x93, offset 0x306 {value: 0x0002, lo: 0x03}, {value: 0x004b, lo: 0x80, hi: 0x95}, {value: 0x0083, lo: 0x96, hi: 0xaf}, {value: 0x0043, lo: 0xb0, hi: 0xbf}, - // Block 0x91, offset 0x310 + // Block 0x94, offset 0x30a {value: 0x0003, lo: 0x0f}, {value: 0x01b8, lo: 0x80, hi: 0x80}, {value: 0x045f, lo: 0x81, hi: 0x81}, @@ -6598,7 +6618,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x01a6, lo: 0xb4, hi: 0xba}, {value: 0x045f, lo: 0xbb, hi: 0xbb}, {value: 0x01bb, lo: 0xbc, hi: 0xbf}, - // Block 0x92, offset 0x320 + // Block 0x95, offset 0x31a {value: 0x0003, lo: 0x0d}, {value: 0x01c7, lo: 0x80, hi: 0x94}, {value: 0x045b, lo: 0x95, hi: 0x95}, @@ -6613,7 +6633,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x01a6, lo: 0xae, hi: 0xb4}, {value: 0x045f, lo: 0xb5, hi: 0xb5}, {value: 0x01bb, lo: 0xb6, hi: 0xbf}, - // Block 0x93, offset 0x32e + // Block 0x96, offset 0x328 {value: 0x0003, lo: 0x0d}, {value: 0x01d9, lo: 0x80, hi: 0x8e}, {value: 0x045b, lo: 0x8f, hi: 0x8f}, @@ -6628,7 +6648,7 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x01a6, lo: 0xa8, hi: 0xae}, {value: 0x045f, lo: 0xaf, hi: 0xaf}, {value: 0x01bb, lo: 0xb0, hi: 0xbf}, - // Block 0x94, offset 0x33c + // Block 0x97, offset 0x336 {value: 0x0003, lo: 0x0d}, {value: 0x01eb, lo: 0x80, hi: 0x88}, {value: 0x045b, lo: 0x89, hi: 0x89}, @@ -6643,21 +6663,21 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x01a6, lo: 0xa2, hi: 0xa8}, {value: 0x045f, lo: 0xa9, hi: 0xa9}, {value: 0x01bb, lo: 0xaa, hi: 0xbf}, - // Block 0x95, offset 0x34a + // Block 0x98, offset 0x344 {value: 0x0000, lo: 0x05}, {value: 0x8132, lo: 0x80, hi: 0x86}, {value: 0x8132, lo: 0x88, hi: 0x98}, {value: 0x8132, lo: 0x9b, hi: 0xa1}, {value: 0x8132, lo: 0xa3, hi: 0xa4}, {value: 0x8132, lo: 0xa6, hi: 0xaa}, - // Block 0x96, offset 0x350 + // Block 0x99, offset 0x34a {value: 0x0000, lo: 0x01}, {value: 0x812d, lo: 0x90, hi: 0x96}, - // Block 0x97, offset 0x352 + // Block 0x9a, offset 0x34c {value: 0x0000, lo: 0x02}, {value: 0x8132, lo: 0x84, hi: 0x89}, {value: 0x8102, lo: 0x8a, hi: 0x8a}, - // Block 0x98, offset 0x355 + // Block 0x9b, offset 0x34f {value: 0x0002, lo: 0x09}, {value: 0x0063, lo: 0x80, hi: 0x89}, {value: 0x1951, lo: 0x8a, hi: 0x8a}, @@ -6668,10 +6688,10 @@ var nfkcSparseValues = [875]valueRange{ {value: 0x19ae, lo: 0x8f, hi: 0x8f}, {value: 0x197b, lo: 0xaa, hi: 0xaa}, {value: 0x197e, lo: 0xab, hi: 0xab}, - // Block 0x99, offset 0x35f + // Block 0x9c, offset 0x359 {value: 0x0000, lo: 0x01}, {value: 0x193f, lo: 0x90, hi: 0x90}, - // Block 0x9a, offset 0x361 + // Block 0x9d, offset 0x35b {value: 0x0028, lo: 0x09}, {value: 0x2862, lo: 0x80, hi: 0x80}, {value: 0x2826, lo: 0x81, hi: 0x81}, @@ -7628,4 +7648,4 @@ var recompMap = map[uint32]rune{ 0x15B915AF: 0x115BB, } -// Total size of tables: 53KB (54006 bytes) +// Total size of tables: 53KB (54226 bytes) diff --git a/vendor/golang.org/x/text/unicode/norm/transform.go b/vendor/golang.org/x/text/unicode/norm/transform.go index 8589067cd..9f47efbaf 100644 --- a/vendor/golang.org/x/text/unicode/norm/transform.go +++ b/vendor/golang.org/x/text/unicode/norm/transform.go @@ -40,7 +40,7 @@ func (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) } func flushTransform(rb *reorderBuffer) bool { - // Write out (must fully fit in dst, or else it is a ErrShortDst). + // Write out (must fully fit in dst, or else it is an ErrShortDst). if len(rb.out) < rb.nrune*utf8.UTFMax { return false } diff --git a/vendor/golang.org/x/text/unicode/rangetable/gen.go b/vendor/golang.org/x/text/unicode/rangetable/gen.go index bea49dda1..6a64e42ab 100644 --- a/vendor/golang.org/x/text/unicode/rangetable/gen.go +++ b/vendor/golang.org/x/text/unicode/rangetable/gen.go @@ -13,12 +13,13 @@ import ( "io" "log" "reflect" - "sort" "strings" "unicode" + "golang.org/x/text/collate" "golang.org/x/text/internal/gen" "golang.org/x/text/internal/ucd" + "golang.org/x/text/language" "golang.org/x/text/unicode/rangetable" ) @@ -37,8 +38,9 @@ func getVersions() []string { log.Fatal(bootstrapMessage) } + c := collate.New(language.Und, collate.Numeric) versions := strings.Split(*versionList, ",") - sort.Strings(versions) + c.SortStrings(versions) // Ensure that at least the current version is included. for _, v := range versions { @@ -48,7 +50,7 @@ func getVersions() []string { } versions = append(versions, gen.UnicodeVersion()) - sort.Strings(versions) + c.SortStrings(versions) return versions } diff --git a/vendor/golang.org/x/text/unicode/rangetable/tables.go b/vendor/golang.org/x/text/unicode/rangetable/tables.go index 61c989b4c..73179c0e0 100644 --- a/vendor/golang.org/x/text/unicode/rangetable/tables.go +++ b/vendor/golang.org/x/text/unicode/rangetable/tables.go @@ -2,22 +2,23 @@ package rangetable -//go:generate go run gen.go --versions=4.1.0,5.0.0,5.1.0,5.2.0,6.0.0,6.1.0,6.2.0,6.3.0,7.0.0,8.0.0,9.0.0 +//go:generate go run gen.go --versions=4.1.0,5.1.0,5.2.0,5.0.0,6.1.0,6.2.0,6.3.0,6.0.0,7.0.0,8.0.0,9.0.0,10.0.0 import "unicode" var assigned = map[string]*unicode.RangeTable{ - "4.1.0": assigned4_1_0, - "5.0.0": assigned5_0_0, - "5.1.0": assigned5_1_0, - "5.2.0": assigned5_2_0, - "6.0.0": assigned6_0_0, - "6.1.0": assigned6_1_0, - "6.2.0": assigned6_2_0, - "6.3.0": assigned6_3_0, - "7.0.0": assigned7_0_0, - "8.0.0": assigned8_0_0, - "9.0.0": assigned9_0_0, + "4.1.0": assigned4_1_0, + "5.1.0": assigned5_1_0, + "5.2.0": assigned5_2_0, + "5.0.0": assigned5_0_0, + "6.1.0": assigned6_1_0, + "6.2.0": assigned6_2_0, + "6.3.0": assigned6_3_0, + "6.0.0": assigned6_0_0, + "7.0.0": assigned7_0_0, + "8.0.0": assigned8_0_0, + "9.0.0": assigned9_0_0, + "10.0.0": assigned10_0_0, } // size 2924 bytes (2 KiB) @@ -443,440 +444,6 @@ var assigned4_1_0 = &unicode.RangeTable{ LatinOffset: 0, } -// size 3026 bytes (2 KiB) -var assigned5_0_0 = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x0000, 0x036f, 1}, - {0x0374, 0x0375, 1}, - {0x037a, 0x037e, 1}, - {0x0384, 0x038a, 1}, - {0x038c, 0x038e, 2}, - {0x038f, 0x03a1, 1}, - {0x03a3, 0x03ce, 1}, - {0x03d0, 0x0486, 1}, - {0x0488, 0x0513, 1}, - {0x0531, 0x0556, 1}, - {0x0559, 0x055f, 1}, - {0x0561, 0x0587, 1}, - {0x0589, 0x058a, 1}, - {0x0591, 0x05c7, 1}, - {0x05d0, 0x05ea, 1}, - {0x05f0, 0x05f4, 1}, - {0x0600, 0x0603, 1}, - {0x060b, 0x0615, 1}, - {0x061b, 0x061e, 3}, - {0x061f, 0x0621, 2}, - {0x0622, 0x063a, 1}, - {0x0640, 0x065e, 1}, - {0x0660, 0x070d, 1}, - {0x070f, 0x074a, 1}, - {0x074d, 0x076d, 1}, - {0x0780, 0x07b1, 1}, - {0x07c0, 0x07fa, 1}, - {0x0901, 0x0939, 1}, - {0x093c, 0x094d, 1}, - {0x0950, 0x0954, 1}, - {0x0958, 0x0970, 1}, - {0x097b, 0x097f, 1}, - {0x0981, 0x0983, 1}, - {0x0985, 0x098c, 1}, - {0x098f, 0x0990, 1}, - {0x0993, 0x09a8, 1}, - {0x09aa, 0x09b0, 1}, - {0x09b2, 0x09b6, 4}, - {0x09b7, 0x09b9, 1}, - {0x09bc, 0x09c4, 1}, - {0x09c7, 0x09c8, 1}, - {0x09cb, 0x09ce, 1}, - {0x09d7, 0x09dc, 5}, - {0x09dd, 0x09df, 2}, - {0x09e0, 0x09e3, 1}, - {0x09e6, 0x09fa, 1}, - {0x0a01, 0x0a03, 1}, - {0x0a05, 0x0a0a, 1}, - {0x0a0f, 0x0a10, 1}, - {0x0a13, 0x0a28, 1}, - {0x0a2a, 0x0a30, 1}, - {0x0a32, 0x0a33, 1}, - {0x0a35, 0x0a36, 1}, - {0x0a38, 0x0a39, 1}, - {0x0a3c, 0x0a3e, 2}, - {0x0a3f, 0x0a42, 1}, - {0x0a47, 0x0a48, 1}, - {0x0a4b, 0x0a4d, 1}, - {0x0a59, 0x0a5c, 1}, - {0x0a5e, 0x0a66, 8}, - {0x0a67, 0x0a74, 1}, - {0x0a81, 0x0a83, 1}, - {0x0a85, 0x0a8d, 1}, - {0x0a8f, 0x0a91, 1}, - {0x0a93, 0x0aa8, 1}, - {0x0aaa, 0x0ab0, 1}, - {0x0ab2, 0x0ab3, 1}, - {0x0ab5, 0x0ab9, 1}, - {0x0abc, 0x0ac5, 1}, - {0x0ac7, 0x0ac9, 1}, - {0x0acb, 0x0acd, 1}, - {0x0ad0, 0x0ae0, 16}, - {0x0ae1, 0x0ae3, 1}, - {0x0ae6, 0x0aef, 1}, - {0x0af1, 0x0b01, 16}, - {0x0b02, 0x0b03, 1}, - {0x0b05, 0x0b0c, 1}, - {0x0b0f, 0x0b10, 1}, - {0x0b13, 0x0b28, 1}, - {0x0b2a, 0x0b30, 1}, - {0x0b32, 0x0b33, 1}, - {0x0b35, 0x0b39, 1}, - {0x0b3c, 0x0b43, 1}, - {0x0b47, 0x0b48, 1}, - {0x0b4b, 0x0b4d, 1}, - {0x0b56, 0x0b57, 1}, - {0x0b5c, 0x0b5d, 1}, - {0x0b5f, 0x0b61, 1}, - {0x0b66, 0x0b71, 1}, - {0x0b82, 0x0b83, 1}, - {0x0b85, 0x0b8a, 1}, - {0x0b8e, 0x0b90, 1}, - {0x0b92, 0x0b95, 1}, - {0x0b99, 0x0b9a, 1}, - {0x0b9c, 0x0b9e, 2}, - {0x0b9f, 0x0ba3, 4}, - {0x0ba4, 0x0ba8, 4}, - {0x0ba9, 0x0baa, 1}, - {0x0bae, 0x0bb9, 1}, - {0x0bbe, 0x0bc2, 1}, - {0x0bc6, 0x0bc8, 1}, - {0x0bca, 0x0bcd, 1}, - {0x0bd7, 0x0be6, 15}, - {0x0be7, 0x0bfa, 1}, - {0x0c01, 0x0c03, 1}, - {0x0c05, 0x0c0c, 1}, - {0x0c0e, 0x0c10, 1}, - {0x0c12, 0x0c28, 1}, - {0x0c2a, 0x0c33, 1}, - {0x0c35, 0x0c39, 1}, - {0x0c3e, 0x0c44, 1}, - {0x0c46, 0x0c48, 1}, - {0x0c4a, 0x0c4d, 1}, - {0x0c55, 0x0c56, 1}, - {0x0c60, 0x0c61, 1}, - {0x0c66, 0x0c6f, 1}, - {0x0c82, 0x0c83, 1}, - {0x0c85, 0x0c8c, 1}, - {0x0c8e, 0x0c90, 1}, - {0x0c92, 0x0ca8, 1}, - {0x0caa, 0x0cb3, 1}, - {0x0cb5, 0x0cb9, 1}, - {0x0cbc, 0x0cc4, 1}, - {0x0cc6, 0x0cc8, 1}, - {0x0cca, 0x0ccd, 1}, - {0x0cd5, 0x0cd6, 1}, - {0x0cde, 0x0ce0, 2}, - {0x0ce1, 0x0ce3, 1}, - {0x0ce6, 0x0cef, 1}, - {0x0cf1, 0x0cf2, 1}, - {0x0d02, 0x0d03, 1}, - {0x0d05, 0x0d0c, 1}, - {0x0d0e, 0x0d10, 1}, - {0x0d12, 0x0d28, 1}, - {0x0d2a, 0x0d39, 1}, - {0x0d3e, 0x0d43, 1}, - {0x0d46, 0x0d48, 1}, - {0x0d4a, 0x0d4d, 1}, - {0x0d57, 0x0d60, 9}, - {0x0d61, 0x0d66, 5}, - {0x0d67, 0x0d6f, 1}, - {0x0d82, 0x0d83, 1}, - {0x0d85, 0x0d96, 1}, - {0x0d9a, 0x0db1, 1}, - {0x0db3, 0x0dbb, 1}, - {0x0dbd, 0x0dc0, 3}, - {0x0dc1, 0x0dc6, 1}, - {0x0dca, 0x0dcf, 5}, - {0x0dd0, 0x0dd4, 1}, - {0x0dd6, 0x0dd8, 2}, - {0x0dd9, 0x0ddf, 1}, - {0x0df2, 0x0df4, 1}, - {0x0e01, 0x0e3a, 1}, - {0x0e3f, 0x0e5b, 1}, - {0x0e81, 0x0e82, 1}, - {0x0e84, 0x0e87, 3}, - {0x0e88, 0x0e8a, 2}, - {0x0e8d, 0x0e94, 7}, - {0x0e95, 0x0e97, 1}, - {0x0e99, 0x0e9f, 1}, - {0x0ea1, 0x0ea3, 1}, - {0x0ea5, 0x0ea7, 2}, - {0x0eaa, 0x0eab, 1}, - {0x0ead, 0x0eb9, 1}, - {0x0ebb, 0x0ebd, 1}, - {0x0ec0, 0x0ec4, 1}, - {0x0ec6, 0x0ec8, 2}, - {0x0ec9, 0x0ecd, 1}, - {0x0ed0, 0x0ed9, 1}, - {0x0edc, 0x0edd, 1}, - {0x0f00, 0x0f47, 1}, - {0x0f49, 0x0f6a, 1}, - {0x0f71, 0x0f8b, 1}, - {0x0f90, 0x0f97, 1}, - {0x0f99, 0x0fbc, 1}, - {0x0fbe, 0x0fcc, 1}, - {0x0fcf, 0x0fd1, 1}, - {0x1000, 0x1021, 1}, - {0x1023, 0x1027, 1}, - {0x1029, 0x102a, 1}, - {0x102c, 0x1032, 1}, - {0x1036, 0x1039, 1}, - {0x1040, 0x1059, 1}, - {0x10a0, 0x10c5, 1}, - {0x10d0, 0x10fc, 1}, - {0x1100, 0x1159, 1}, - {0x115f, 0x11a2, 1}, - {0x11a8, 0x11f9, 1}, - {0x1200, 0x1248, 1}, - {0x124a, 0x124d, 1}, - {0x1250, 0x1256, 1}, - {0x1258, 0x125a, 2}, - {0x125b, 0x125d, 1}, - {0x1260, 0x1288, 1}, - {0x128a, 0x128d, 1}, - {0x1290, 0x12b0, 1}, - {0x12b2, 0x12b5, 1}, - {0x12b8, 0x12be, 1}, - {0x12c0, 0x12c2, 2}, - {0x12c3, 0x12c5, 1}, - {0x12c8, 0x12d6, 1}, - {0x12d8, 0x1310, 1}, - {0x1312, 0x1315, 1}, - {0x1318, 0x135a, 1}, - {0x135f, 0x137c, 1}, - {0x1380, 0x1399, 1}, - {0x13a0, 0x13f4, 1}, - {0x1401, 0x1676, 1}, - {0x1680, 0x169c, 1}, - {0x16a0, 0x16f0, 1}, - {0x1700, 0x170c, 1}, - {0x170e, 0x1714, 1}, - {0x1720, 0x1736, 1}, - {0x1740, 0x1753, 1}, - {0x1760, 0x176c, 1}, - {0x176e, 0x1770, 1}, - {0x1772, 0x1773, 1}, - {0x1780, 0x17dd, 1}, - {0x17e0, 0x17e9, 1}, - {0x17f0, 0x17f9, 1}, - {0x1800, 0x180e, 1}, - {0x1810, 0x1819, 1}, - {0x1820, 0x1877, 1}, - {0x1880, 0x18a9, 1}, - {0x1900, 0x191c, 1}, - {0x1920, 0x192b, 1}, - {0x1930, 0x193b, 1}, - {0x1940, 0x1944, 4}, - {0x1945, 0x196d, 1}, - {0x1970, 0x1974, 1}, - {0x1980, 0x19a9, 1}, - {0x19b0, 0x19c9, 1}, - {0x19d0, 0x19d9, 1}, - {0x19de, 0x1a1b, 1}, - {0x1a1e, 0x1a1f, 1}, - {0x1b00, 0x1b4b, 1}, - {0x1b50, 0x1b7c, 1}, - {0x1d00, 0x1dca, 1}, - {0x1dfe, 0x1e9b, 1}, - {0x1ea0, 0x1ef9, 1}, - {0x1f00, 0x1f15, 1}, - {0x1f18, 0x1f1d, 1}, - {0x1f20, 0x1f45, 1}, - {0x1f48, 0x1f4d, 1}, - {0x1f50, 0x1f57, 1}, - {0x1f59, 0x1f5f, 2}, - {0x1f60, 0x1f7d, 1}, - {0x1f80, 0x1fb4, 1}, - {0x1fb6, 0x1fc4, 1}, - {0x1fc6, 0x1fd3, 1}, - {0x1fd6, 0x1fdb, 1}, - {0x1fdd, 0x1fef, 1}, - {0x1ff2, 0x1ff4, 1}, - {0x1ff6, 0x1ffe, 1}, - {0x2000, 0x2063, 1}, - {0x206a, 0x2071, 1}, - {0x2074, 0x208e, 1}, - {0x2090, 0x2094, 1}, - {0x20a0, 0x20b5, 1}, - {0x20d0, 0x20ef, 1}, - {0x2100, 0x214e, 1}, - {0x2153, 0x2184, 1}, - {0x2190, 0x23e7, 1}, - {0x2400, 0x2426, 1}, - {0x2440, 0x244a, 1}, - {0x2460, 0x269c, 1}, - {0x26a0, 0x26b2, 1}, - {0x2701, 0x2704, 1}, - {0x2706, 0x2709, 1}, - {0x270c, 0x2727, 1}, - {0x2729, 0x274b, 1}, - {0x274d, 0x274f, 2}, - {0x2750, 0x2752, 1}, - {0x2756, 0x2758, 2}, - {0x2759, 0x275e, 1}, - {0x2761, 0x2794, 1}, - {0x2798, 0x27af, 1}, - {0x27b1, 0x27be, 1}, - {0x27c0, 0x27ca, 1}, - {0x27d0, 0x27eb, 1}, - {0x27f0, 0x2b1a, 1}, - {0x2b20, 0x2b23, 1}, - {0x2c00, 0x2c2e, 1}, - {0x2c30, 0x2c5e, 1}, - {0x2c60, 0x2c6c, 1}, - {0x2c74, 0x2c77, 1}, - {0x2c80, 0x2cea, 1}, - {0x2cf9, 0x2d25, 1}, - {0x2d30, 0x2d65, 1}, - {0x2d6f, 0x2d80, 17}, - {0x2d81, 0x2d96, 1}, - {0x2da0, 0x2da6, 1}, - {0x2da8, 0x2dae, 1}, - {0x2db0, 0x2db6, 1}, - {0x2db8, 0x2dbe, 1}, - {0x2dc0, 0x2dc6, 1}, - {0x2dc8, 0x2dce, 1}, - {0x2dd0, 0x2dd6, 1}, - {0x2dd8, 0x2dde, 1}, - {0x2e00, 0x2e17, 1}, - {0x2e1c, 0x2e1d, 1}, - {0x2e80, 0x2e99, 1}, - {0x2e9b, 0x2ef3, 1}, - {0x2f00, 0x2fd5, 1}, - {0x2ff0, 0x2ffb, 1}, - {0x3000, 0x303f, 1}, - {0x3041, 0x3096, 1}, - {0x3099, 0x30ff, 1}, - {0x3105, 0x312c, 1}, - {0x3131, 0x318e, 1}, - {0x3190, 0x31b7, 1}, - {0x31c0, 0x31cf, 1}, - {0x31f0, 0x321e, 1}, - {0x3220, 0x3243, 1}, - {0x3250, 0x32fe, 1}, - {0x3300, 0x4db5, 1}, - {0x4dc0, 0x9fbb, 1}, - {0xa000, 0xa48c, 1}, - {0xa490, 0xa4c6, 1}, - {0xa700, 0xa71a, 1}, - {0xa720, 0xa721, 1}, - {0xa800, 0xa82b, 1}, - {0xa840, 0xa877, 1}, - {0xac00, 0xd7a3, 1}, - {0xd800, 0xfa2d, 1}, - {0xfa30, 0xfa6a, 1}, - {0xfa70, 0xfad9, 1}, - {0xfb00, 0xfb06, 1}, - {0xfb13, 0xfb17, 1}, - {0xfb1d, 0xfb36, 1}, - {0xfb38, 0xfb3c, 1}, - {0xfb3e, 0xfb40, 2}, - {0xfb41, 0xfb43, 2}, - {0xfb44, 0xfb46, 2}, - {0xfb47, 0xfbb1, 1}, - {0xfbd3, 0xfd3f, 1}, - {0xfd50, 0xfd8f, 1}, - {0xfd92, 0xfdc7, 1}, - {0xfdf0, 0xfdfd, 1}, - {0xfe00, 0xfe19, 1}, - {0xfe20, 0xfe23, 1}, - {0xfe30, 0xfe52, 1}, - {0xfe54, 0xfe66, 1}, - {0xfe68, 0xfe6b, 1}, - {0xfe70, 0xfe74, 1}, - {0xfe76, 0xfefc, 1}, - {0xfeff, 0xff01, 2}, - {0xff02, 0xffbe, 1}, - {0xffc2, 0xffc7, 1}, - {0xffca, 0xffcf, 1}, - {0xffd2, 0xffd7, 1}, - {0xffda, 0xffdc, 1}, - {0xffe0, 0xffe6, 1}, - {0xffe8, 0xffee, 1}, - {0xfff9, 0xfffd, 1}, - }, - R32: []unicode.Range32{ - {0x00010000, 0x0001000b, 1}, - {0x0001000d, 0x00010026, 1}, - {0x00010028, 0x0001003a, 1}, - {0x0001003c, 0x0001003d, 1}, - {0x0001003f, 0x0001004d, 1}, - {0x00010050, 0x0001005d, 1}, - {0x00010080, 0x000100fa, 1}, - {0x00010100, 0x00010102, 1}, - {0x00010107, 0x00010133, 1}, - {0x00010137, 0x0001018a, 1}, - {0x00010300, 0x0001031e, 1}, - {0x00010320, 0x00010323, 1}, - {0x00010330, 0x0001034a, 1}, - {0x00010380, 0x0001039d, 1}, - {0x0001039f, 0x000103c3, 1}, - {0x000103c8, 0x000103d5, 1}, - {0x00010400, 0x0001049d, 1}, - {0x000104a0, 0x000104a9, 1}, - {0x00010800, 0x00010805, 1}, - {0x00010808, 0x0001080a, 2}, - {0x0001080b, 0x00010835, 1}, - {0x00010837, 0x00010838, 1}, - {0x0001083c, 0x0001083f, 3}, - {0x00010900, 0x00010919, 1}, - {0x0001091f, 0x00010a00, 225}, - {0x00010a01, 0x00010a03, 1}, - {0x00010a05, 0x00010a06, 1}, - {0x00010a0c, 0x00010a13, 1}, - {0x00010a15, 0x00010a17, 1}, - {0x00010a19, 0x00010a33, 1}, - {0x00010a38, 0x00010a3a, 1}, - {0x00010a3f, 0x00010a47, 1}, - {0x00010a50, 0x00010a58, 1}, - {0x00012000, 0x0001236e, 1}, - {0x00012400, 0x00012462, 1}, - {0x00012470, 0x00012473, 1}, - {0x0001d000, 0x0001d0f5, 1}, - {0x0001d100, 0x0001d126, 1}, - {0x0001d12a, 0x0001d1dd, 1}, - {0x0001d200, 0x0001d245, 1}, - {0x0001d300, 0x0001d356, 1}, - {0x0001d360, 0x0001d371, 1}, - {0x0001d400, 0x0001d454, 1}, - {0x0001d456, 0x0001d49c, 1}, - {0x0001d49e, 0x0001d49f, 1}, - {0x0001d4a2, 0x0001d4a5, 3}, - {0x0001d4a6, 0x0001d4a9, 3}, - {0x0001d4aa, 0x0001d4ac, 1}, - {0x0001d4ae, 0x0001d4b9, 1}, - {0x0001d4bb, 0x0001d4bd, 2}, - {0x0001d4be, 0x0001d4c3, 1}, - {0x0001d4c5, 0x0001d505, 1}, - {0x0001d507, 0x0001d50a, 1}, - {0x0001d50d, 0x0001d514, 1}, - {0x0001d516, 0x0001d51c, 1}, - {0x0001d51e, 0x0001d539, 1}, - {0x0001d53b, 0x0001d53e, 1}, - {0x0001d540, 0x0001d544, 1}, - {0x0001d546, 0x0001d54a, 4}, - {0x0001d54b, 0x0001d550, 1}, - {0x0001d552, 0x0001d6a5, 1}, - {0x0001d6a8, 0x0001d7cb, 1}, - {0x0001d7ce, 0x0001d7ff, 1}, - {0x00020000, 0x0002a6d6, 1}, - {0x0002f800, 0x0002fa1d, 1}, - {0x000e0001, 0x000e0020, 31}, - {0x000e0021, 0x000e007f, 1}, - {0x000e0100, 0x000e01ef, 1}, - {0x000f0000, 0x000ffffd, 1}, - {0x00100000, 0x0010fffd, 1}, - }, - LatinOffset: 0, -} - // size 3152 bytes (3 KiB) var assigned5_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ @@ -1809,15 +1376,18 @@ var assigned5_2_0 = &unicode.RangeTable{ LatinOffset: 0, } -// size 3812 bytes (3 KiB) -var assigned6_0_0 = &unicode.RangeTable{ +// size 3026 bytes (2 KiB) +var assigned5_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ - {0x0000, 0x0377, 1}, + {0x0000, 0x036f, 1}, + {0x0374, 0x0375, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, - {0x03a3, 0x0527, 1}, + {0x03a3, 0x03ce, 1}, + {0x03d0, 0x0486, 1}, + {0x0488, 0x0513, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, @@ -1826,17 +1396,21 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, - {0x0606, 0x061b, 1}, - {0x061e, 0x070d, 1}, + {0x060b, 0x0615, 1}, + {0x061b, 0x061e, 3}, + {0x061f, 0x0621, 2}, + {0x0622, 0x063a, 1}, + {0x0640, 0x065e, 1}, + {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, - {0x074d, 0x07b1, 1}, + {0x074d, 0x076d, 1}, + {0x0780, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, - {0x0800, 0x082d, 1}, - {0x0830, 0x083e, 1}, - {0x0840, 0x085b, 1}, - {0x085e, 0x0900, 162}, - {0x0901, 0x0977, 1}, - {0x0979, 0x097f, 1}, + {0x0901, 0x0939, 1}, + {0x093c, 0x094d, 1}, + {0x0950, 0x0954, 1}, + {0x0958, 0x0970, 1}, + {0x097b, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, @@ -1850,7 +1424,7 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, - {0x09e6, 0x09fb, 1}, + {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, @@ -1863,10 +1437,9 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, - {0x0a51, 0x0a59, 8}, - {0x0a5a, 0x0a5c, 1}, + {0x0a59, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, - {0x0a67, 0x0a75, 1}, + {0x0a67, 0x0a74, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, @@ -1888,13 +1461,13 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, - {0x0b3c, 0x0b44, 1}, + {0x0b3c, 0x0b43, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, - {0x0b5f, 0x0b63, 1}, - {0x0b66, 0x0b77, 1}, + {0x0b5f, 0x0b61, 1}, + {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, @@ -1908,22 +1481,20 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, - {0x0bd0, 0x0bd7, 7}, - {0x0be6, 0x0bfa, 1}, + {0x0bd7, 0x0be6, 15}, + {0x0be7, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, - {0x0c3d, 0x0c44, 1}, + {0x0c3e, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, - {0x0c58, 0x0c59, 1}, - {0x0c60, 0x0c63, 1}, + {0x0c60, 0x0c61, 1}, {0x0c66, 0x0c6f, 1}, - {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, @@ -1941,14 +1512,14 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, - {0x0d12, 0x0d3a, 1}, - {0x0d3d, 0x0d44, 1}, + {0x0d12, 0x0d28, 1}, + {0x0d2a, 0x0d39, 1}, + {0x0d3e, 0x0d43, 1}, {0x0d46, 0x0d48, 1}, - {0x0d4a, 0x0d4e, 1}, + {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, - {0x0d61, 0x0d63, 1}, - {0x0d66, 0x0d75, 1}, - {0x0d79, 0x0d7f, 1}, + {0x0d61, 0x0d66, 5}, + {0x0d67, 0x0d6f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, @@ -1979,14 +1550,24 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, - {0x0f49, 0x0f6c, 1}, - {0x0f71, 0x0f97, 1}, + {0x0f49, 0x0f6a, 1}, + {0x0f71, 0x0f8b, 1}, + {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, - {0x0fce, 0x0fda, 1}, - {0x1000, 0x10c5, 1}, + {0x0fcf, 0x0fd1, 1}, + {0x1000, 0x1021, 1}, + {0x1023, 0x1027, 1}, + {0x1029, 0x102a, 1}, + {0x102c, 0x1032, 1}, + {0x1036, 0x1039, 1}, + {0x1040, 0x1059, 1}, + {0x10a0, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, - {0x1100, 0x1248, 1}, + {0x1100, 0x1159, 1}, + {0x115f, 0x11a2, 1}, + {0x11a8, 0x11f9, 1}, + {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, @@ -2002,10 +1583,11 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, - {0x135d, 0x137c, 1}, + {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, - {0x1400, 0x169c, 1}, + {0x1401, 0x1676, 1}, + {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, @@ -2020,34 +1602,24 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, - {0x1880, 0x18aa, 1}, - {0x18b0, 0x18f5, 1}, + {0x1880, 0x18a9, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, - {0x1980, 0x19ab, 1}, + {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, - {0x19d0, 0x19da, 1}, + {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, - {0x1a1e, 0x1a5e, 1}, - {0x1a60, 0x1a7c, 1}, - {0x1a7f, 0x1a89, 1}, - {0x1a90, 0x1a99, 1}, - {0x1aa0, 0x1aad, 1}, + {0x1a1e, 0x1a1f, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, - {0x1b80, 0x1baa, 1}, - {0x1bae, 0x1bb9, 1}, - {0x1bc0, 0x1bf3, 1}, - {0x1bfc, 0x1c37, 1}, - {0x1c3b, 0x1c49, 1}, - {0x1c4d, 0x1c7f, 1}, - {0x1cd0, 0x1cf2, 1}, - {0x1d00, 0x1de6, 1}, - {0x1dfc, 0x1f15, 1}, + {0x1d00, 0x1dca, 1}, + {0x1dfe, 0x1e9b, 1}, + {0x1ea0, 0x1ef9, 1}, + {0x1f00, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, @@ -2061,28 +1633,43 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, - {0x2000, 0x2064, 1}, + {0x2000, 0x2063, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, - {0x2090, 0x209c, 1}, - {0x20a0, 0x20b9, 1}, - {0x20d0, 0x20f0, 1}, - {0x2100, 0x2189, 1}, - {0x2190, 0x23f3, 1}, + {0x2090, 0x2094, 1}, + {0x20a0, 0x20b5, 1}, + {0x20d0, 0x20ef, 1}, + {0x2100, 0x214e, 1}, + {0x2153, 0x2184, 1}, + {0x2190, 0x23e7, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, - {0x2460, 0x26ff, 1}, - {0x2701, 0x27ca, 1}, - {0x27cc, 0x27ce, 2}, - {0x27cf, 0x2b4c, 1}, - {0x2b50, 0x2b59, 1}, + {0x2460, 0x269c, 1}, + {0x26a0, 0x26b2, 1}, + {0x2701, 0x2704, 1}, + {0x2706, 0x2709, 1}, + {0x270c, 0x2727, 1}, + {0x2729, 0x274b, 1}, + {0x274d, 0x274f, 2}, + {0x2750, 0x2752, 1}, + {0x2756, 0x2758, 2}, + {0x2759, 0x275e, 1}, + {0x2761, 0x2794, 1}, + {0x2798, 0x27af, 1}, + {0x27b1, 0x27be, 1}, + {0x27c0, 0x27ca, 1}, + {0x27d0, 0x27eb, 1}, + {0x27f0, 0x2b1a, 1}, + {0x2b20, 0x2b23, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, - {0x2c60, 0x2cf1, 1}, + {0x2c60, 0x2c6c, 1}, + {0x2c74, 0x2c77, 1}, + {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, - {0x2d6f, 0x2d70, 1}, - {0x2d7f, 0x2d96, 1}, + {0x2d6f, 0x2d80, 17}, + {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, @@ -2091,7 +1678,8 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, - {0x2de0, 0x2e31, 1}, + {0x2e00, 0x2e17, 1}, + {0x2e1c, 0x2e1d, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, @@ -2099,52 +1687,24 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, - {0x3105, 0x312d, 1}, + {0x3105, 0x312c, 1}, {0x3131, 0x318e, 1}, - {0x3190, 0x31ba, 1}, - {0x31c0, 0x31e3, 1}, + {0x3190, 0x31b7, 1}, + {0x31c0, 0x31cf, 1}, {0x31f0, 0x321e, 1}, - {0x3220, 0x32fe, 1}, + {0x3220, 0x3243, 1}, + {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, - {0x4dc0, 0x9fcb, 1}, + {0x4dc0, 0x9fbb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, - {0xa4d0, 0xa62b, 1}, - {0xa640, 0xa673, 1}, - {0xa67c, 0xa697, 1}, - {0xa6a0, 0xa6f7, 1}, - {0xa700, 0xa78e, 1}, - {0xa790, 0xa791, 1}, - {0xa7a0, 0xa7a9, 1}, - {0xa7fa, 0xa82b, 1}, - {0xa830, 0xa839, 1}, + {0xa700, 0xa71a, 1}, + {0xa720, 0xa721, 1}, + {0xa800, 0xa82b, 1}, {0xa840, 0xa877, 1}, - {0xa880, 0xa8c4, 1}, - {0xa8ce, 0xa8d9, 1}, - {0xa8e0, 0xa8fb, 1}, - {0xa900, 0xa953, 1}, - {0xa95f, 0xa97c, 1}, - {0xa980, 0xa9cd, 1}, - {0xa9cf, 0xa9d9, 1}, - {0xa9de, 0xa9df, 1}, - {0xaa00, 0xaa36, 1}, - {0xaa40, 0xaa4d, 1}, - {0xaa50, 0xaa59, 1}, - {0xaa5c, 0xaa7b, 1}, - {0xaa80, 0xaac2, 1}, - {0xaadb, 0xaadf, 1}, - {0xab01, 0xab06, 1}, - {0xab09, 0xab0e, 1}, - {0xab11, 0xab16, 1}, - {0xab20, 0xab26, 1}, - {0xab28, 0xab2e, 1}, - {0xabc0, 0xabed, 1}, - {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, - {0xd7b0, 0xd7c6, 1}, - {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa2d, 1}, - {0xfa30, 0xfa6d, 1}, + {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, @@ -2153,13 +1713,13 @@ var assigned6_0_0 = &unicode.RangeTable{ {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, - {0xfb47, 0xfbc1, 1}, + {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, - {0xfe20, 0xfe26, 1}, + {0xfe20, 0xfe23, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, @@ -2186,10 +1746,6 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, - {0x00010190, 0x0001019b, 1}, - {0x000101d0, 0x000101fd, 1}, - {0x00010280, 0x0001029c, 1}, - {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, @@ -2203,11 +1759,8 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, - {0x00010840, 0x00010855, 1}, - {0x00010857, 0x0001085f, 1}, - {0x00010900, 0x0001091b, 1}, - {0x0001091f, 0x00010939, 1}, - {0x0001093f, 0x00010a00, 193}, + {0x00010900, 0x00010919, 1}, + {0x0001091f, 0x00010a00, 225}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, @@ -2216,25 +1769,12 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, - {0x00010a60, 0x00010a7f, 1}, - {0x00010b00, 0x00010b35, 1}, - {0x00010b39, 0x00010b55, 1}, - {0x00010b58, 0x00010b72, 1}, - {0x00010b78, 0x00010b7f, 1}, - {0x00010c00, 0x00010c48, 1}, - {0x00010e60, 0x00010e7e, 1}, - {0x00011000, 0x0001104d, 1}, - {0x00011052, 0x0001106f, 1}, - {0x00011080, 0x000110c1, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, - {0x00013000, 0x0001342e, 1}, - {0x00016800, 0x00016a38, 1}, - {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, - {0x0001d129, 0x0001d1dd, 1}, + {0x0001d12a, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, @@ -2259,49 +1799,7 @@ var assigned6_0_0 = &unicode.RangeTable{ {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, - {0x0001f000, 0x0001f02b, 1}, - {0x0001f030, 0x0001f093, 1}, - {0x0001f0a0, 0x0001f0ae, 1}, - {0x0001f0b1, 0x0001f0be, 1}, - {0x0001f0c1, 0x0001f0cf, 1}, - {0x0001f0d1, 0x0001f0df, 1}, - {0x0001f100, 0x0001f10a, 1}, - {0x0001f110, 0x0001f12e, 1}, - {0x0001f130, 0x0001f169, 1}, - {0x0001f170, 0x0001f19a, 1}, - {0x0001f1e6, 0x0001f202, 1}, - {0x0001f210, 0x0001f23a, 1}, - {0x0001f240, 0x0001f248, 1}, - {0x0001f250, 0x0001f251, 1}, - {0x0001f300, 0x0001f320, 1}, - {0x0001f330, 0x0001f335, 1}, - {0x0001f337, 0x0001f37c, 1}, - {0x0001f380, 0x0001f393, 1}, - {0x0001f3a0, 0x0001f3c4, 1}, - {0x0001f3c6, 0x0001f3ca, 1}, - {0x0001f3e0, 0x0001f3f0, 1}, - {0x0001f400, 0x0001f43e, 1}, - {0x0001f440, 0x0001f442, 2}, - {0x0001f443, 0x0001f4f7, 1}, - {0x0001f4f9, 0x0001f4fc, 1}, - {0x0001f500, 0x0001f53d, 1}, - {0x0001f550, 0x0001f567, 1}, - {0x0001f5fb, 0x0001f5ff, 1}, - {0x0001f601, 0x0001f610, 1}, - {0x0001f612, 0x0001f614, 1}, - {0x0001f616, 0x0001f61c, 2}, - {0x0001f61d, 0x0001f61e, 1}, - {0x0001f620, 0x0001f625, 1}, - {0x0001f628, 0x0001f62b, 1}, - {0x0001f62d, 0x0001f630, 3}, - {0x0001f631, 0x0001f633, 1}, - {0x0001f635, 0x0001f640, 1}, - {0x0001f645, 0x0001f64f, 1}, - {0x0001f680, 0x0001f6c5, 1}, - {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, - {0x0002a700, 0x0002b734, 1}, - {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, @@ -3905,6 +3403,509 @@ var assigned6_3_0 = &unicode.RangeTable{ LatinOffset: 0, } +// size 3812 bytes (3 KiB) +var assigned6_0_0 = &unicode.RangeTable{ + R16: []unicode.Range16{ + {0x0000, 0x0377, 1}, + {0x037a, 0x037e, 1}, + {0x0384, 0x038a, 1}, + {0x038c, 0x038e, 2}, + {0x038f, 0x03a1, 1}, + {0x03a3, 0x0527, 1}, + {0x0531, 0x0556, 1}, + {0x0559, 0x055f, 1}, + {0x0561, 0x0587, 1}, + {0x0589, 0x058a, 1}, + {0x0591, 0x05c7, 1}, + {0x05d0, 0x05ea, 1}, + {0x05f0, 0x05f4, 1}, + {0x0600, 0x0603, 1}, + {0x0606, 0x061b, 1}, + {0x061e, 0x070d, 1}, + {0x070f, 0x074a, 1}, + {0x074d, 0x07b1, 1}, + {0x07c0, 0x07fa, 1}, + {0x0800, 0x082d, 1}, + {0x0830, 0x083e, 1}, + {0x0840, 0x085b, 1}, + {0x085e, 0x0900, 162}, + {0x0901, 0x0977, 1}, + {0x0979, 0x097f, 1}, + {0x0981, 0x0983, 1}, + {0x0985, 0x098c, 1}, + {0x098f, 0x0990, 1}, + {0x0993, 0x09a8, 1}, + {0x09aa, 0x09b0, 1}, + {0x09b2, 0x09b6, 4}, + {0x09b7, 0x09b9, 1}, + {0x09bc, 0x09c4, 1}, + {0x09c7, 0x09c8, 1}, + {0x09cb, 0x09ce, 1}, + {0x09d7, 0x09dc, 5}, + {0x09dd, 0x09df, 2}, + {0x09e0, 0x09e3, 1}, + {0x09e6, 0x09fb, 1}, + {0x0a01, 0x0a03, 1}, + {0x0a05, 0x0a0a, 1}, + {0x0a0f, 0x0a10, 1}, + {0x0a13, 0x0a28, 1}, + {0x0a2a, 0x0a30, 1}, + {0x0a32, 0x0a33, 1}, + {0x0a35, 0x0a36, 1}, + {0x0a38, 0x0a39, 1}, + {0x0a3c, 0x0a3e, 2}, + {0x0a3f, 0x0a42, 1}, + {0x0a47, 0x0a48, 1}, + {0x0a4b, 0x0a4d, 1}, + {0x0a51, 0x0a59, 8}, + {0x0a5a, 0x0a5c, 1}, + {0x0a5e, 0x0a66, 8}, + {0x0a67, 0x0a75, 1}, + {0x0a81, 0x0a83, 1}, + {0x0a85, 0x0a8d, 1}, + {0x0a8f, 0x0a91, 1}, + {0x0a93, 0x0aa8, 1}, + {0x0aaa, 0x0ab0, 1}, + {0x0ab2, 0x0ab3, 1}, + {0x0ab5, 0x0ab9, 1}, + {0x0abc, 0x0ac5, 1}, + {0x0ac7, 0x0ac9, 1}, + {0x0acb, 0x0acd, 1}, + {0x0ad0, 0x0ae0, 16}, + {0x0ae1, 0x0ae3, 1}, + {0x0ae6, 0x0aef, 1}, + {0x0af1, 0x0b01, 16}, + {0x0b02, 0x0b03, 1}, + {0x0b05, 0x0b0c, 1}, + {0x0b0f, 0x0b10, 1}, + {0x0b13, 0x0b28, 1}, + {0x0b2a, 0x0b30, 1}, + {0x0b32, 0x0b33, 1}, + {0x0b35, 0x0b39, 1}, + {0x0b3c, 0x0b44, 1}, + {0x0b47, 0x0b48, 1}, + {0x0b4b, 0x0b4d, 1}, + {0x0b56, 0x0b57, 1}, + {0x0b5c, 0x0b5d, 1}, + {0x0b5f, 0x0b63, 1}, + {0x0b66, 0x0b77, 1}, + {0x0b82, 0x0b83, 1}, + {0x0b85, 0x0b8a, 1}, + {0x0b8e, 0x0b90, 1}, + {0x0b92, 0x0b95, 1}, + {0x0b99, 0x0b9a, 1}, + {0x0b9c, 0x0b9e, 2}, + {0x0b9f, 0x0ba3, 4}, + {0x0ba4, 0x0ba8, 4}, + {0x0ba9, 0x0baa, 1}, + {0x0bae, 0x0bb9, 1}, + {0x0bbe, 0x0bc2, 1}, + {0x0bc6, 0x0bc8, 1}, + {0x0bca, 0x0bcd, 1}, + {0x0bd0, 0x0bd7, 7}, + {0x0be6, 0x0bfa, 1}, + {0x0c01, 0x0c03, 1}, + {0x0c05, 0x0c0c, 1}, + {0x0c0e, 0x0c10, 1}, + {0x0c12, 0x0c28, 1}, + {0x0c2a, 0x0c33, 1}, + {0x0c35, 0x0c39, 1}, + {0x0c3d, 0x0c44, 1}, + {0x0c46, 0x0c48, 1}, + {0x0c4a, 0x0c4d, 1}, + {0x0c55, 0x0c56, 1}, + {0x0c58, 0x0c59, 1}, + {0x0c60, 0x0c63, 1}, + {0x0c66, 0x0c6f, 1}, + {0x0c78, 0x0c7f, 1}, + {0x0c82, 0x0c83, 1}, + {0x0c85, 0x0c8c, 1}, + {0x0c8e, 0x0c90, 1}, + {0x0c92, 0x0ca8, 1}, + {0x0caa, 0x0cb3, 1}, + {0x0cb5, 0x0cb9, 1}, + {0x0cbc, 0x0cc4, 1}, + {0x0cc6, 0x0cc8, 1}, + {0x0cca, 0x0ccd, 1}, + {0x0cd5, 0x0cd6, 1}, + {0x0cde, 0x0ce0, 2}, + {0x0ce1, 0x0ce3, 1}, + {0x0ce6, 0x0cef, 1}, + {0x0cf1, 0x0cf2, 1}, + {0x0d02, 0x0d03, 1}, + {0x0d05, 0x0d0c, 1}, + {0x0d0e, 0x0d10, 1}, + {0x0d12, 0x0d3a, 1}, + {0x0d3d, 0x0d44, 1}, + {0x0d46, 0x0d48, 1}, + {0x0d4a, 0x0d4e, 1}, + {0x0d57, 0x0d60, 9}, + {0x0d61, 0x0d63, 1}, + {0x0d66, 0x0d75, 1}, + {0x0d79, 0x0d7f, 1}, + {0x0d82, 0x0d83, 1}, + {0x0d85, 0x0d96, 1}, + {0x0d9a, 0x0db1, 1}, + {0x0db3, 0x0dbb, 1}, + {0x0dbd, 0x0dc0, 3}, + {0x0dc1, 0x0dc6, 1}, + {0x0dca, 0x0dcf, 5}, + {0x0dd0, 0x0dd4, 1}, + {0x0dd6, 0x0dd8, 2}, + {0x0dd9, 0x0ddf, 1}, + {0x0df2, 0x0df4, 1}, + {0x0e01, 0x0e3a, 1}, + {0x0e3f, 0x0e5b, 1}, + {0x0e81, 0x0e82, 1}, + {0x0e84, 0x0e87, 3}, + {0x0e88, 0x0e8a, 2}, + {0x0e8d, 0x0e94, 7}, + {0x0e95, 0x0e97, 1}, + {0x0e99, 0x0e9f, 1}, + {0x0ea1, 0x0ea3, 1}, + {0x0ea5, 0x0ea7, 2}, + {0x0eaa, 0x0eab, 1}, + {0x0ead, 0x0eb9, 1}, + {0x0ebb, 0x0ebd, 1}, + {0x0ec0, 0x0ec4, 1}, + {0x0ec6, 0x0ec8, 2}, + {0x0ec9, 0x0ecd, 1}, + {0x0ed0, 0x0ed9, 1}, + {0x0edc, 0x0edd, 1}, + {0x0f00, 0x0f47, 1}, + {0x0f49, 0x0f6c, 1}, + {0x0f71, 0x0f97, 1}, + {0x0f99, 0x0fbc, 1}, + {0x0fbe, 0x0fcc, 1}, + {0x0fce, 0x0fda, 1}, + {0x1000, 0x10c5, 1}, + {0x10d0, 0x10fc, 1}, + {0x1100, 0x1248, 1}, + {0x124a, 0x124d, 1}, + {0x1250, 0x1256, 1}, + {0x1258, 0x125a, 2}, + {0x125b, 0x125d, 1}, + {0x1260, 0x1288, 1}, + {0x128a, 0x128d, 1}, + {0x1290, 0x12b0, 1}, + {0x12b2, 0x12b5, 1}, + {0x12b8, 0x12be, 1}, + {0x12c0, 0x12c2, 2}, + {0x12c3, 0x12c5, 1}, + {0x12c8, 0x12d6, 1}, + {0x12d8, 0x1310, 1}, + {0x1312, 0x1315, 1}, + {0x1318, 0x135a, 1}, + {0x135d, 0x137c, 1}, + {0x1380, 0x1399, 1}, + {0x13a0, 0x13f4, 1}, + {0x1400, 0x169c, 1}, + {0x16a0, 0x16f0, 1}, + {0x1700, 0x170c, 1}, + {0x170e, 0x1714, 1}, + {0x1720, 0x1736, 1}, + {0x1740, 0x1753, 1}, + {0x1760, 0x176c, 1}, + {0x176e, 0x1770, 1}, + {0x1772, 0x1773, 1}, + {0x1780, 0x17dd, 1}, + {0x17e0, 0x17e9, 1}, + {0x17f0, 0x17f9, 1}, + {0x1800, 0x180e, 1}, + {0x1810, 0x1819, 1}, + {0x1820, 0x1877, 1}, + {0x1880, 0x18aa, 1}, + {0x18b0, 0x18f5, 1}, + {0x1900, 0x191c, 1}, + {0x1920, 0x192b, 1}, + {0x1930, 0x193b, 1}, + {0x1940, 0x1944, 4}, + {0x1945, 0x196d, 1}, + {0x1970, 0x1974, 1}, + {0x1980, 0x19ab, 1}, + {0x19b0, 0x19c9, 1}, + {0x19d0, 0x19da, 1}, + {0x19de, 0x1a1b, 1}, + {0x1a1e, 0x1a5e, 1}, + {0x1a60, 0x1a7c, 1}, + {0x1a7f, 0x1a89, 1}, + {0x1a90, 0x1a99, 1}, + {0x1aa0, 0x1aad, 1}, + {0x1b00, 0x1b4b, 1}, + {0x1b50, 0x1b7c, 1}, + {0x1b80, 0x1baa, 1}, + {0x1bae, 0x1bb9, 1}, + {0x1bc0, 0x1bf3, 1}, + {0x1bfc, 0x1c37, 1}, + {0x1c3b, 0x1c49, 1}, + {0x1c4d, 0x1c7f, 1}, + {0x1cd0, 0x1cf2, 1}, + {0x1d00, 0x1de6, 1}, + {0x1dfc, 0x1f15, 1}, + {0x1f18, 0x1f1d, 1}, + {0x1f20, 0x1f45, 1}, + {0x1f48, 0x1f4d, 1}, + {0x1f50, 0x1f57, 1}, + {0x1f59, 0x1f5f, 2}, + {0x1f60, 0x1f7d, 1}, + {0x1f80, 0x1fb4, 1}, + {0x1fb6, 0x1fc4, 1}, + {0x1fc6, 0x1fd3, 1}, + {0x1fd6, 0x1fdb, 1}, + {0x1fdd, 0x1fef, 1}, + {0x1ff2, 0x1ff4, 1}, + {0x1ff6, 0x1ffe, 1}, + {0x2000, 0x2064, 1}, + {0x206a, 0x2071, 1}, + {0x2074, 0x208e, 1}, + {0x2090, 0x209c, 1}, + {0x20a0, 0x20b9, 1}, + {0x20d0, 0x20f0, 1}, + {0x2100, 0x2189, 1}, + {0x2190, 0x23f3, 1}, + {0x2400, 0x2426, 1}, + {0x2440, 0x244a, 1}, + {0x2460, 0x26ff, 1}, + {0x2701, 0x27ca, 1}, + {0x27cc, 0x27ce, 2}, + {0x27cf, 0x2b4c, 1}, + {0x2b50, 0x2b59, 1}, + {0x2c00, 0x2c2e, 1}, + {0x2c30, 0x2c5e, 1}, + {0x2c60, 0x2cf1, 1}, + {0x2cf9, 0x2d25, 1}, + {0x2d30, 0x2d65, 1}, + {0x2d6f, 0x2d70, 1}, + {0x2d7f, 0x2d96, 1}, + {0x2da0, 0x2da6, 1}, + {0x2da8, 0x2dae, 1}, + {0x2db0, 0x2db6, 1}, + {0x2db8, 0x2dbe, 1}, + {0x2dc0, 0x2dc6, 1}, + {0x2dc8, 0x2dce, 1}, + {0x2dd0, 0x2dd6, 1}, + {0x2dd8, 0x2dde, 1}, + {0x2de0, 0x2e31, 1}, + {0x2e80, 0x2e99, 1}, + {0x2e9b, 0x2ef3, 1}, + {0x2f00, 0x2fd5, 1}, + {0x2ff0, 0x2ffb, 1}, + {0x3000, 0x303f, 1}, + {0x3041, 0x3096, 1}, + {0x3099, 0x30ff, 1}, + {0x3105, 0x312d, 1}, + {0x3131, 0x318e, 1}, + {0x3190, 0x31ba, 1}, + {0x31c0, 0x31e3, 1}, + {0x31f0, 0x321e, 1}, + {0x3220, 0x32fe, 1}, + {0x3300, 0x4db5, 1}, + {0x4dc0, 0x9fcb, 1}, + {0xa000, 0xa48c, 1}, + {0xa490, 0xa4c6, 1}, + {0xa4d0, 0xa62b, 1}, + {0xa640, 0xa673, 1}, + {0xa67c, 0xa697, 1}, + {0xa6a0, 0xa6f7, 1}, + {0xa700, 0xa78e, 1}, + {0xa790, 0xa791, 1}, + {0xa7a0, 0xa7a9, 1}, + {0xa7fa, 0xa82b, 1}, + {0xa830, 0xa839, 1}, + {0xa840, 0xa877, 1}, + {0xa880, 0xa8c4, 1}, + {0xa8ce, 0xa8d9, 1}, + {0xa8e0, 0xa8fb, 1}, + {0xa900, 0xa953, 1}, + {0xa95f, 0xa97c, 1}, + {0xa980, 0xa9cd, 1}, + {0xa9cf, 0xa9d9, 1}, + {0xa9de, 0xa9df, 1}, + {0xaa00, 0xaa36, 1}, + {0xaa40, 0xaa4d, 1}, + {0xaa50, 0xaa59, 1}, + {0xaa5c, 0xaa7b, 1}, + {0xaa80, 0xaac2, 1}, + {0xaadb, 0xaadf, 1}, + {0xab01, 0xab06, 1}, + {0xab09, 0xab0e, 1}, + {0xab11, 0xab16, 1}, + {0xab20, 0xab26, 1}, + {0xab28, 0xab2e, 1}, + {0xabc0, 0xabed, 1}, + {0xabf0, 0xabf9, 1}, + {0xac00, 0xd7a3, 1}, + {0xd7b0, 0xd7c6, 1}, + {0xd7cb, 0xd7fb, 1}, + {0xd800, 0xfa2d, 1}, + {0xfa30, 0xfa6d, 1}, + {0xfa70, 0xfad9, 1}, + {0xfb00, 0xfb06, 1}, + {0xfb13, 0xfb17, 1}, + {0xfb1d, 0xfb36, 1}, + {0xfb38, 0xfb3c, 1}, + {0xfb3e, 0xfb40, 2}, + {0xfb41, 0xfb43, 2}, + {0xfb44, 0xfb46, 2}, + {0xfb47, 0xfbc1, 1}, + {0xfbd3, 0xfd3f, 1}, + {0xfd50, 0xfd8f, 1}, + {0xfd92, 0xfdc7, 1}, + {0xfdf0, 0xfdfd, 1}, + {0xfe00, 0xfe19, 1}, + {0xfe20, 0xfe26, 1}, + {0xfe30, 0xfe52, 1}, + {0xfe54, 0xfe66, 1}, + {0xfe68, 0xfe6b, 1}, + {0xfe70, 0xfe74, 1}, + {0xfe76, 0xfefc, 1}, + {0xfeff, 0xff01, 2}, + {0xff02, 0xffbe, 1}, + {0xffc2, 0xffc7, 1}, + {0xffca, 0xffcf, 1}, + {0xffd2, 0xffd7, 1}, + {0xffda, 0xffdc, 1}, + {0xffe0, 0xffe6, 1}, + {0xffe8, 0xffee, 1}, + {0xfff9, 0xfffd, 1}, + }, + R32: []unicode.Range32{ + {0x00010000, 0x0001000b, 1}, + {0x0001000d, 0x00010026, 1}, + {0x00010028, 0x0001003a, 1}, + {0x0001003c, 0x0001003d, 1}, + {0x0001003f, 0x0001004d, 1}, + {0x00010050, 0x0001005d, 1}, + {0x00010080, 0x000100fa, 1}, + {0x00010100, 0x00010102, 1}, + {0x00010107, 0x00010133, 1}, + {0x00010137, 0x0001018a, 1}, + {0x00010190, 0x0001019b, 1}, + {0x000101d0, 0x000101fd, 1}, + {0x00010280, 0x0001029c, 1}, + {0x000102a0, 0x000102d0, 1}, + {0x00010300, 0x0001031e, 1}, + {0x00010320, 0x00010323, 1}, + {0x00010330, 0x0001034a, 1}, + {0x00010380, 0x0001039d, 1}, + {0x0001039f, 0x000103c3, 1}, + {0x000103c8, 0x000103d5, 1}, + {0x00010400, 0x0001049d, 1}, + {0x000104a0, 0x000104a9, 1}, + {0x00010800, 0x00010805, 1}, + {0x00010808, 0x0001080a, 2}, + {0x0001080b, 0x00010835, 1}, + {0x00010837, 0x00010838, 1}, + {0x0001083c, 0x0001083f, 3}, + {0x00010840, 0x00010855, 1}, + {0x00010857, 0x0001085f, 1}, + {0x00010900, 0x0001091b, 1}, + {0x0001091f, 0x00010939, 1}, + {0x0001093f, 0x00010a00, 193}, + {0x00010a01, 0x00010a03, 1}, + {0x00010a05, 0x00010a06, 1}, + {0x00010a0c, 0x00010a13, 1}, + {0x00010a15, 0x00010a17, 1}, + {0x00010a19, 0x00010a33, 1}, + {0x00010a38, 0x00010a3a, 1}, + {0x00010a3f, 0x00010a47, 1}, + {0x00010a50, 0x00010a58, 1}, + {0x00010a60, 0x00010a7f, 1}, + {0x00010b00, 0x00010b35, 1}, + {0x00010b39, 0x00010b55, 1}, + {0x00010b58, 0x00010b72, 1}, + {0x00010b78, 0x00010b7f, 1}, + {0x00010c00, 0x00010c48, 1}, + {0x00010e60, 0x00010e7e, 1}, + {0x00011000, 0x0001104d, 1}, + {0x00011052, 0x0001106f, 1}, + {0x00011080, 0x000110c1, 1}, + {0x00012000, 0x0001236e, 1}, + {0x00012400, 0x00012462, 1}, + {0x00012470, 0x00012473, 1}, + {0x00013000, 0x0001342e, 1}, + {0x00016800, 0x00016a38, 1}, + {0x0001b000, 0x0001b001, 1}, + {0x0001d000, 0x0001d0f5, 1}, + {0x0001d100, 0x0001d126, 1}, + {0x0001d129, 0x0001d1dd, 1}, + {0x0001d200, 0x0001d245, 1}, + {0x0001d300, 0x0001d356, 1}, + {0x0001d360, 0x0001d371, 1}, + {0x0001d400, 0x0001d454, 1}, + {0x0001d456, 0x0001d49c, 1}, + {0x0001d49e, 0x0001d49f, 1}, + {0x0001d4a2, 0x0001d4a5, 3}, + {0x0001d4a6, 0x0001d4a9, 3}, + {0x0001d4aa, 0x0001d4ac, 1}, + {0x0001d4ae, 0x0001d4b9, 1}, + {0x0001d4bb, 0x0001d4bd, 2}, + {0x0001d4be, 0x0001d4c3, 1}, + {0x0001d4c5, 0x0001d505, 1}, + {0x0001d507, 0x0001d50a, 1}, + {0x0001d50d, 0x0001d514, 1}, + {0x0001d516, 0x0001d51c, 1}, + {0x0001d51e, 0x0001d539, 1}, + {0x0001d53b, 0x0001d53e, 1}, + {0x0001d540, 0x0001d544, 1}, + {0x0001d546, 0x0001d54a, 4}, + {0x0001d54b, 0x0001d550, 1}, + {0x0001d552, 0x0001d6a5, 1}, + {0x0001d6a8, 0x0001d7cb, 1}, + {0x0001d7ce, 0x0001d7ff, 1}, + {0x0001f000, 0x0001f02b, 1}, + {0x0001f030, 0x0001f093, 1}, + {0x0001f0a0, 0x0001f0ae, 1}, + {0x0001f0b1, 0x0001f0be, 1}, + {0x0001f0c1, 0x0001f0cf, 1}, + {0x0001f0d1, 0x0001f0df, 1}, + {0x0001f100, 0x0001f10a, 1}, + {0x0001f110, 0x0001f12e, 1}, + {0x0001f130, 0x0001f169, 1}, + {0x0001f170, 0x0001f19a, 1}, + {0x0001f1e6, 0x0001f202, 1}, + {0x0001f210, 0x0001f23a, 1}, + {0x0001f240, 0x0001f248, 1}, + {0x0001f250, 0x0001f251, 1}, + {0x0001f300, 0x0001f320, 1}, + {0x0001f330, 0x0001f335, 1}, + {0x0001f337, 0x0001f37c, 1}, + {0x0001f380, 0x0001f393, 1}, + {0x0001f3a0, 0x0001f3c4, 1}, + {0x0001f3c6, 0x0001f3ca, 1}, + {0x0001f3e0, 0x0001f3f0, 1}, + {0x0001f400, 0x0001f43e, 1}, + {0x0001f440, 0x0001f442, 2}, + {0x0001f443, 0x0001f4f7, 1}, + {0x0001f4f9, 0x0001f4fc, 1}, + {0x0001f500, 0x0001f53d, 1}, + {0x0001f550, 0x0001f567, 1}, + {0x0001f5fb, 0x0001f5ff, 1}, + {0x0001f601, 0x0001f610, 1}, + {0x0001f612, 0x0001f614, 1}, + {0x0001f616, 0x0001f61c, 2}, + {0x0001f61d, 0x0001f61e, 1}, + {0x0001f620, 0x0001f625, 1}, + {0x0001f628, 0x0001f62b, 1}, + {0x0001f62d, 0x0001f630, 3}, + {0x0001f631, 0x0001f633, 1}, + {0x0001f635, 0x0001f640, 1}, + {0x0001f645, 0x0001f64f, 1}, + {0x0001f680, 0x0001f6c5, 1}, + {0x0001f700, 0x0001f773, 1}, + {0x00020000, 0x0002a6d6, 1}, + {0x0002a700, 0x0002b734, 1}, + {0x0002b740, 0x0002b81d, 1}, + {0x0002f800, 0x0002fa1d, 1}, + {0x000e0001, 0x000e0020, 31}, + {0x000e0021, 0x000e007f, 1}, + {0x000e0100, 0x000e01ef, 1}, + {0x000f0000, 0x000ffffd, 1}, + {0x00100000, 0x0010fffd, 1}, + }, + LatinOffset: 0, +} + // size 4898 bytes (4 KiB) var assigned7_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ @@ -5732,4 +5733,644 @@ var assigned9_0_0 = &unicode.RangeTable{ LatinOffset: 0, } -// Total size 44206 bytes (43 KiB) +// size 5492 bytes (5 KiB) +var assigned10_0_0 = &unicode.RangeTable{ + R16: []unicode.Range16{ + {0x0000, 0x0377, 1}, + {0x037a, 0x037f, 1}, + {0x0384, 0x038a, 1}, + {0x038c, 0x038e, 2}, + {0x038f, 0x03a1, 1}, + {0x03a3, 0x052f, 1}, + {0x0531, 0x0556, 1}, + {0x0559, 0x055f, 1}, + {0x0561, 0x0587, 1}, + {0x0589, 0x058a, 1}, + {0x058d, 0x058f, 1}, + {0x0591, 0x05c7, 1}, + {0x05d0, 0x05ea, 1}, + {0x05f0, 0x05f4, 1}, + {0x0600, 0x061c, 1}, + {0x061e, 0x070d, 1}, + {0x070f, 0x074a, 1}, + {0x074d, 0x07b1, 1}, + {0x07c0, 0x07fa, 1}, + {0x0800, 0x082d, 1}, + {0x0830, 0x083e, 1}, + {0x0840, 0x085b, 1}, + {0x085e, 0x0860, 2}, + {0x0861, 0x086a, 1}, + {0x08a0, 0x08b4, 1}, + {0x08b6, 0x08bd, 1}, + {0x08d4, 0x0983, 1}, + {0x0985, 0x098c, 1}, + {0x098f, 0x0990, 1}, + {0x0993, 0x09a8, 1}, + {0x09aa, 0x09b0, 1}, + {0x09b2, 0x09b6, 4}, + {0x09b7, 0x09b9, 1}, + {0x09bc, 0x09c4, 1}, + {0x09c7, 0x09c8, 1}, + {0x09cb, 0x09ce, 1}, + {0x09d7, 0x09dc, 5}, + {0x09dd, 0x09df, 2}, + {0x09e0, 0x09e3, 1}, + {0x09e6, 0x09fd, 1}, + {0x0a01, 0x0a03, 1}, + {0x0a05, 0x0a0a, 1}, + {0x0a0f, 0x0a10, 1}, + {0x0a13, 0x0a28, 1}, + {0x0a2a, 0x0a30, 1}, + {0x0a32, 0x0a33, 1}, + {0x0a35, 0x0a36, 1}, + {0x0a38, 0x0a39, 1}, + {0x0a3c, 0x0a3e, 2}, + {0x0a3f, 0x0a42, 1}, + {0x0a47, 0x0a48, 1}, + {0x0a4b, 0x0a4d, 1}, + {0x0a51, 0x0a59, 8}, + {0x0a5a, 0x0a5c, 1}, + {0x0a5e, 0x0a66, 8}, + {0x0a67, 0x0a75, 1}, + {0x0a81, 0x0a83, 1}, + {0x0a85, 0x0a8d, 1}, + {0x0a8f, 0x0a91, 1}, + {0x0a93, 0x0aa8, 1}, + {0x0aaa, 0x0ab0, 1}, + {0x0ab2, 0x0ab3, 1}, + {0x0ab5, 0x0ab9, 1}, + {0x0abc, 0x0ac5, 1}, + {0x0ac7, 0x0ac9, 1}, + {0x0acb, 0x0acd, 1}, + {0x0ad0, 0x0ae0, 16}, + {0x0ae1, 0x0ae3, 1}, + {0x0ae6, 0x0af1, 1}, + {0x0af9, 0x0aff, 1}, + {0x0b01, 0x0b03, 1}, + {0x0b05, 0x0b0c, 1}, + {0x0b0f, 0x0b10, 1}, + {0x0b13, 0x0b28, 1}, + {0x0b2a, 0x0b30, 1}, + {0x0b32, 0x0b33, 1}, + {0x0b35, 0x0b39, 1}, + {0x0b3c, 0x0b44, 1}, + {0x0b47, 0x0b48, 1}, + {0x0b4b, 0x0b4d, 1}, + {0x0b56, 0x0b57, 1}, + {0x0b5c, 0x0b5d, 1}, + {0x0b5f, 0x0b63, 1}, + {0x0b66, 0x0b77, 1}, + {0x0b82, 0x0b83, 1}, + {0x0b85, 0x0b8a, 1}, + {0x0b8e, 0x0b90, 1}, + {0x0b92, 0x0b95, 1}, + {0x0b99, 0x0b9a, 1}, + {0x0b9c, 0x0b9e, 2}, + {0x0b9f, 0x0ba3, 4}, + {0x0ba4, 0x0ba8, 4}, + {0x0ba9, 0x0baa, 1}, + {0x0bae, 0x0bb9, 1}, + {0x0bbe, 0x0bc2, 1}, + {0x0bc6, 0x0bc8, 1}, + {0x0bca, 0x0bcd, 1}, + {0x0bd0, 0x0bd7, 7}, + {0x0be6, 0x0bfa, 1}, + {0x0c00, 0x0c03, 1}, + {0x0c05, 0x0c0c, 1}, + {0x0c0e, 0x0c10, 1}, + {0x0c12, 0x0c28, 1}, + {0x0c2a, 0x0c39, 1}, + {0x0c3d, 0x0c44, 1}, + {0x0c46, 0x0c48, 1}, + {0x0c4a, 0x0c4d, 1}, + {0x0c55, 0x0c56, 1}, + {0x0c58, 0x0c5a, 1}, + {0x0c60, 0x0c63, 1}, + {0x0c66, 0x0c6f, 1}, + {0x0c78, 0x0c83, 1}, + {0x0c85, 0x0c8c, 1}, + {0x0c8e, 0x0c90, 1}, + {0x0c92, 0x0ca8, 1}, + {0x0caa, 0x0cb3, 1}, + {0x0cb5, 0x0cb9, 1}, + {0x0cbc, 0x0cc4, 1}, + {0x0cc6, 0x0cc8, 1}, + {0x0cca, 0x0ccd, 1}, + {0x0cd5, 0x0cd6, 1}, + {0x0cde, 0x0ce0, 2}, + {0x0ce1, 0x0ce3, 1}, + {0x0ce6, 0x0cef, 1}, + {0x0cf1, 0x0cf2, 1}, + {0x0d00, 0x0d03, 1}, + {0x0d05, 0x0d0c, 1}, + {0x0d0e, 0x0d10, 1}, + {0x0d12, 0x0d44, 1}, + {0x0d46, 0x0d48, 1}, + {0x0d4a, 0x0d4f, 1}, + {0x0d54, 0x0d63, 1}, + {0x0d66, 0x0d7f, 1}, + {0x0d82, 0x0d83, 1}, + {0x0d85, 0x0d96, 1}, + {0x0d9a, 0x0db1, 1}, + {0x0db3, 0x0dbb, 1}, + {0x0dbd, 0x0dc0, 3}, + {0x0dc1, 0x0dc6, 1}, + {0x0dca, 0x0dcf, 5}, + {0x0dd0, 0x0dd4, 1}, + {0x0dd6, 0x0dd8, 2}, + {0x0dd9, 0x0ddf, 1}, + {0x0de6, 0x0def, 1}, + {0x0df2, 0x0df4, 1}, + {0x0e01, 0x0e3a, 1}, + {0x0e3f, 0x0e5b, 1}, + {0x0e81, 0x0e82, 1}, + {0x0e84, 0x0e87, 3}, + {0x0e88, 0x0e8a, 2}, + {0x0e8d, 0x0e94, 7}, + {0x0e95, 0x0e97, 1}, + {0x0e99, 0x0e9f, 1}, + {0x0ea1, 0x0ea3, 1}, + {0x0ea5, 0x0ea7, 2}, + {0x0eaa, 0x0eab, 1}, + {0x0ead, 0x0eb9, 1}, + {0x0ebb, 0x0ebd, 1}, + {0x0ec0, 0x0ec4, 1}, + {0x0ec6, 0x0ec8, 2}, + {0x0ec9, 0x0ecd, 1}, + {0x0ed0, 0x0ed9, 1}, + {0x0edc, 0x0edf, 1}, + {0x0f00, 0x0f47, 1}, + {0x0f49, 0x0f6c, 1}, + {0x0f71, 0x0f97, 1}, + {0x0f99, 0x0fbc, 1}, + {0x0fbe, 0x0fcc, 1}, + {0x0fce, 0x0fda, 1}, + {0x1000, 0x10c5, 1}, + {0x10c7, 0x10cd, 6}, + {0x10d0, 0x1248, 1}, + {0x124a, 0x124d, 1}, + {0x1250, 0x1256, 1}, + {0x1258, 0x125a, 2}, + {0x125b, 0x125d, 1}, + {0x1260, 0x1288, 1}, + {0x128a, 0x128d, 1}, + {0x1290, 0x12b0, 1}, + {0x12b2, 0x12b5, 1}, + {0x12b8, 0x12be, 1}, + {0x12c0, 0x12c2, 2}, + {0x12c3, 0x12c5, 1}, + {0x12c8, 0x12d6, 1}, + {0x12d8, 0x1310, 1}, + {0x1312, 0x1315, 1}, + {0x1318, 0x135a, 1}, + {0x135d, 0x137c, 1}, + {0x1380, 0x1399, 1}, + {0x13a0, 0x13f5, 1}, + {0x13f8, 0x13fd, 1}, + {0x1400, 0x169c, 1}, + {0x16a0, 0x16f8, 1}, + {0x1700, 0x170c, 1}, + {0x170e, 0x1714, 1}, + {0x1720, 0x1736, 1}, + {0x1740, 0x1753, 1}, + {0x1760, 0x176c, 1}, + {0x176e, 0x1770, 1}, + {0x1772, 0x1773, 1}, + {0x1780, 0x17dd, 1}, + {0x17e0, 0x17e9, 1}, + {0x17f0, 0x17f9, 1}, + {0x1800, 0x180e, 1}, + {0x1810, 0x1819, 1}, + {0x1820, 0x1877, 1}, + {0x1880, 0x18aa, 1}, + {0x18b0, 0x18f5, 1}, + {0x1900, 0x191e, 1}, + {0x1920, 0x192b, 1}, + {0x1930, 0x193b, 1}, + {0x1940, 0x1944, 4}, + {0x1945, 0x196d, 1}, + {0x1970, 0x1974, 1}, + {0x1980, 0x19ab, 1}, + {0x19b0, 0x19c9, 1}, + {0x19d0, 0x19da, 1}, + {0x19de, 0x1a1b, 1}, + {0x1a1e, 0x1a5e, 1}, + {0x1a60, 0x1a7c, 1}, + {0x1a7f, 0x1a89, 1}, + {0x1a90, 0x1a99, 1}, + {0x1aa0, 0x1aad, 1}, + {0x1ab0, 0x1abe, 1}, + {0x1b00, 0x1b4b, 1}, + {0x1b50, 0x1b7c, 1}, + {0x1b80, 0x1bf3, 1}, + {0x1bfc, 0x1c37, 1}, + {0x1c3b, 0x1c49, 1}, + {0x1c4d, 0x1c88, 1}, + {0x1cc0, 0x1cc7, 1}, + {0x1cd0, 0x1cf9, 1}, + {0x1d00, 0x1df9, 1}, + {0x1dfb, 0x1f15, 1}, + {0x1f18, 0x1f1d, 1}, + {0x1f20, 0x1f45, 1}, + {0x1f48, 0x1f4d, 1}, + {0x1f50, 0x1f57, 1}, + {0x1f59, 0x1f5f, 2}, + {0x1f60, 0x1f7d, 1}, + {0x1f80, 0x1fb4, 1}, + {0x1fb6, 0x1fc4, 1}, + {0x1fc6, 0x1fd3, 1}, + {0x1fd6, 0x1fdb, 1}, + {0x1fdd, 0x1fef, 1}, + {0x1ff2, 0x1ff4, 1}, + {0x1ff6, 0x1ffe, 1}, + {0x2000, 0x2064, 1}, + {0x2066, 0x2071, 1}, + {0x2074, 0x208e, 1}, + {0x2090, 0x209c, 1}, + {0x20a0, 0x20bf, 1}, + {0x20d0, 0x20f0, 1}, + {0x2100, 0x218b, 1}, + {0x2190, 0x2426, 1}, + {0x2440, 0x244a, 1}, + {0x2460, 0x2b73, 1}, + {0x2b76, 0x2b95, 1}, + {0x2b98, 0x2bb9, 1}, + {0x2bbd, 0x2bc8, 1}, + {0x2bca, 0x2bd2, 1}, + {0x2bec, 0x2bef, 1}, + {0x2c00, 0x2c2e, 1}, + {0x2c30, 0x2c5e, 1}, + {0x2c60, 0x2cf3, 1}, + {0x2cf9, 0x2d25, 1}, + {0x2d27, 0x2d2d, 6}, + {0x2d30, 0x2d67, 1}, + {0x2d6f, 0x2d70, 1}, + {0x2d7f, 0x2d96, 1}, + {0x2da0, 0x2da6, 1}, + {0x2da8, 0x2dae, 1}, + {0x2db0, 0x2db6, 1}, + {0x2db8, 0x2dbe, 1}, + {0x2dc0, 0x2dc6, 1}, + {0x2dc8, 0x2dce, 1}, + {0x2dd0, 0x2dd6, 1}, + {0x2dd8, 0x2dde, 1}, + {0x2de0, 0x2e49, 1}, + {0x2e80, 0x2e99, 1}, + {0x2e9b, 0x2ef3, 1}, + {0x2f00, 0x2fd5, 1}, + {0x2ff0, 0x2ffb, 1}, + {0x3000, 0x303f, 1}, + {0x3041, 0x3096, 1}, + {0x3099, 0x30ff, 1}, + {0x3105, 0x312e, 1}, + {0x3131, 0x318e, 1}, + {0x3190, 0x31ba, 1}, + {0x31c0, 0x31e3, 1}, + {0x31f0, 0x321e, 1}, + {0x3220, 0x32fe, 1}, + {0x3300, 0x4db5, 1}, + {0x4dc0, 0x9fea, 1}, + {0xa000, 0xa48c, 1}, + {0xa490, 0xa4c6, 1}, + {0xa4d0, 0xa62b, 1}, + {0xa640, 0xa6f7, 1}, + {0xa700, 0xa7ae, 1}, + {0xa7b0, 0xa7b7, 1}, + {0xa7f7, 0xa82b, 1}, + {0xa830, 0xa839, 1}, + {0xa840, 0xa877, 1}, + {0xa880, 0xa8c5, 1}, + {0xa8ce, 0xa8d9, 1}, + {0xa8e0, 0xa8fd, 1}, + {0xa900, 0xa953, 1}, + {0xa95f, 0xa97c, 1}, + {0xa980, 0xa9cd, 1}, + {0xa9cf, 0xa9d9, 1}, + {0xa9de, 0xa9fe, 1}, + {0xaa00, 0xaa36, 1}, + {0xaa40, 0xaa4d, 1}, + {0xaa50, 0xaa59, 1}, + {0xaa5c, 0xaac2, 1}, + {0xaadb, 0xaaf6, 1}, + {0xab01, 0xab06, 1}, + {0xab09, 0xab0e, 1}, + {0xab11, 0xab16, 1}, + {0xab20, 0xab26, 1}, + {0xab28, 0xab2e, 1}, + {0xab30, 0xab65, 1}, + {0xab70, 0xabed, 1}, + {0xabf0, 0xabf9, 1}, + {0xac00, 0xd7a3, 1}, + {0xd7b0, 0xd7c6, 1}, + {0xd7cb, 0xd7fb, 1}, + {0xd800, 0xfa6d, 1}, + {0xfa70, 0xfad9, 1}, + {0xfb00, 0xfb06, 1}, + {0xfb13, 0xfb17, 1}, + {0xfb1d, 0xfb36, 1}, + {0xfb38, 0xfb3c, 1}, + {0xfb3e, 0xfb40, 2}, + {0xfb41, 0xfb43, 2}, + {0xfb44, 0xfb46, 2}, + {0xfb47, 0xfbc1, 1}, + {0xfbd3, 0xfd3f, 1}, + {0xfd50, 0xfd8f, 1}, + {0xfd92, 0xfdc7, 1}, + {0xfdf0, 0xfdfd, 1}, + {0xfe00, 0xfe19, 1}, + {0xfe20, 0xfe52, 1}, + {0xfe54, 0xfe66, 1}, + {0xfe68, 0xfe6b, 1}, + {0xfe70, 0xfe74, 1}, + {0xfe76, 0xfefc, 1}, + {0xfeff, 0xff01, 2}, + {0xff02, 0xffbe, 1}, + {0xffc2, 0xffc7, 1}, + {0xffca, 0xffcf, 1}, + {0xffd2, 0xffd7, 1}, + {0xffda, 0xffdc, 1}, + {0xffe0, 0xffe6, 1}, + {0xffe8, 0xffee, 1}, + {0xfff9, 0xfffd, 1}, + }, + R32: []unicode.Range32{ + {0x00010000, 0x0001000b, 1}, + {0x0001000d, 0x00010026, 1}, + {0x00010028, 0x0001003a, 1}, + {0x0001003c, 0x0001003d, 1}, + {0x0001003f, 0x0001004d, 1}, + {0x00010050, 0x0001005d, 1}, + {0x00010080, 0x000100fa, 1}, + {0x00010100, 0x00010102, 1}, + {0x00010107, 0x00010133, 1}, + {0x00010137, 0x0001018e, 1}, + {0x00010190, 0x0001019b, 1}, + {0x000101a0, 0x000101d0, 48}, + {0x000101d1, 0x000101fd, 1}, + {0x00010280, 0x0001029c, 1}, + {0x000102a0, 0x000102d0, 1}, + {0x000102e0, 0x000102fb, 1}, + {0x00010300, 0x00010323, 1}, + {0x0001032d, 0x0001034a, 1}, + {0x00010350, 0x0001037a, 1}, + {0x00010380, 0x0001039d, 1}, + {0x0001039f, 0x000103c3, 1}, + {0x000103c8, 0x000103d5, 1}, + {0x00010400, 0x0001049d, 1}, + {0x000104a0, 0x000104a9, 1}, + {0x000104b0, 0x000104d3, 1}, + {0x000104d8, 0x000104fb, 1}, + {0x00010500, 0x00010527, 1}, + {0x00010530, 0x00010563, 1}, + {0x0001056f, 0x00010600, 145}, + {0x00010601, 0x00010736, 1}, + {0x00010740, 0x00010755, 1}, + {0x00010760, 0x00010767, 1}, + {0x00010800, 0x00010805, 1}, + {0x00010808, 0x0001080a, 2}, + {0x0001080b, 0x00010835, 1}, + {0x00010837, 0x00010838, 1}, + {0x0001083c, 0x0001083f, 3}, + {0x00010840, 0x00010855, 1}, + {0x00010857, 0x0001089e, 1}, + {0x000108a7, 0x000108af, 1}, + {0x000108e0, 0x000108f2, 1}, + {0x000108f4, 0x000108f5, 1}, + {0x000108fb, 0x0001091b, 1}, + {0x0001091f, 0x00010939, 1}, + {0x0001093f, 0x00010980, 65}, + {0x00010981, 0x000109b7, 1}, + {0x000109bc, 0x000109cf, 1}, + {0x000109d2, 0x00010a03, 1}, + {0x00010a05, 0x00010a06, 1}, + {0x00010a0c, 0x00010a13, 1}, + {0x00010a15, 0x00010a17, 1}, + {0x00010a19, 0x00010a33, 1}, + {0x00010a38, 0x00010a3a, 1}, + {0x00010a3f, 0x00010a47, 1}, + {0x00010a50, 0x00010a58, 1}, + {0x00010a60, 0x00010a9f, 1}, + {0x00010ac0, 0x00010ae6, 1}, + {0x00010aeb, 0x00010af6, 1}, + {0x00010b00, 0x00010b35, 1}, + {0x00010b39, 0x00010b55, 1}, + {0x00010b58, 0x00010b72, 1}, + {0x00010b78, 0x00010b91, 1}, + {0x00010b99, 0x00010b9c, 1}, + {0x00010ba9, 0x00010baf, 1}, + {0x00010c00, 0x00010c48, 1}, + {0x00010c80, 0x00010cb2, 1}, + {0x00010cc0, 0x00010cf2, 1}, + {0x00010cfa, 0x00010cff, 1}, + {0x00010e60, 0x00010e7e, 1}, + {0x00011000, 0x0001104d, 1}, + {0x00011052, 0x0001106f, 1}, + {0x0001107f, 0x000110c1, 1}, + {0x000110d0, 0x000110e8, 1}, + {0x000110f0, 0x000110f9, 1}, + {0x00011100, 0x00011134, 1}, + {0x00011136, 0x00011143, 1}, + {0x00011150, 0x00011176, 1}, + {0x00011180, 0x000111cd, 1}, + {0x000111d0, 0x000111df, 1}, + {0x000111e1, 0x000111f4, 1}, + {0x00011200, 0x00011211, 1}, + {0x00011213, 0x0001123e, 1}, + {0x00011280, 0x00011286, 1}, + {0x00011288, 0x0001128a, 2}, + {0x0001128b, 0x0001128d, 1}, + {0x0001128f, 0x0001129d, 1}, + {0x0001129f, 0x000112a9, 1}, + {0x000112b0, 0x000112ea, 1}, + {0x000112f0, 0x000112f9, 1}, + {0x00011300, 0x00011303, 1}, + {0x00011305, 0x0001130c, 1}, + {0x0001130f, 0x00011310, 1}, + {0x00011313, 0x00011328, 1}, + {0x0001132a, 0x00011330, 1}, + {0x00011332, 0x00011333, 1}, + {0x00011335, 0x00011339, 1}, + {0x0001133c, 0x00011344, 1}, + {0x00011347, 0x00011348, 1}, + {0x0001134b, 0x0001134d, 1}, + {0x00011350, 0x00011357, 7}, + {0x0001135d, 0x00011363, 1}, + {0x00011366, 0x0001136c, 1}, + {0x00011370, 0x00011374, 1}, + {0x00011400, 0x00011459, 1}, + {0x0001145b, 0x0001145d, 2}, + {0x00011480, 0x000114c7, 1}, + {0x000114d0, 0x000114d9, 1}, + {0x00011580, 0x000115b5, 1}, + {0x000115b8, 0x000115dd, 1}, + {0x00011600, 0x00011644, 1}, + {0x00011650, 0x00011659, 1}, + {0x00011660, 0x0001166c, 1}, + {0x00011680, 0x000116b7, 1}, + {0x000116c0, 0x000116c9, 1}, + {0x00011700, 0x00011719, 1}, + {0x0001171d, 0x0001172b, 1}, + {0x00011730, 0x0001173f, 1}, + {0x000118a0, 0x000118f2, 1}, + {0x000118ff, 0x00011a00, 257}, + {0x00011a01, 0x00011a47, 1}, + {0x00011a50, 0x00011a83, 1}, + {0x00011a86, 0x00011a9c, 1}, + {0x00011a9e, 0x00011aa2, 1}, + {0x00011ac0, 0x00011af8, 1}, + {0x00011c00, 0x00011c08, 1}, + {0x00011c0a, 0x00011c36, 1}, + {0x00011c38, 0x00011c45, 1}, + {0x00011c50, 0x00011c6c, 1}, + {0x00011c70, 0x00011c8f, 1}, + {0x00011c92, 0x00011ca7, 1}, + {0x00011ca9, 0x00011cb6, 1}, + {0x00011d00, 0x00011d06, 1}, + {0x00011d08, 0x00011d09, 1}, + {0x00011d0b, 0x00011d36, 1}, + {0x00011d3a, 0x00011d3c, 2}, + {0x00011d3d, 0x00011d3f, 2}, + {0x00011d40, 0x00011d47, 1}, + {0x00011d50, 0x00011d59, 1}, + {0x00012000, 0x00012399, 1}, + {0x00012400, 0x0001246e, 1}, + {0x00012470, 0x00012474, 1}, + {0x00012480, 0x00012543, 1}, + {0x00013000, 0x0001342e, 1}, + {0x00014400, 0x00014646, 1}, + {0x00016800, 0x00016a38, 1}, + {0x00016a40, 0x00016a5e, 1}, + {0x00016a60, 0x00016a69, 1}, + {0x00016a6e, 0x00016a6f, 1}, + {0x00016ad0, 0x00016aed, 1}, + {0x00016af0, 0x00016af5, 1}, + {0x00016b00, 0x00016b45, 1}, + {0x00016b50, 0x00016b59, 1}, + {0x00016b5b, 0x00016b61, 1}, + {0x00016b63, 0x00016b77, 1}, + {0x00016b7d, 0x00016b8f, 1}, + {0x00016f00, 0x00016f44, 1}, + {0x00016f50, 0x00016f7e, 1}, + {0x00016f8f, 0x00016f9f, 1}, + {0x00016fe0, 0x00016fe1, 1}, + {0x00017000, 0x000187ec, 1}, + {0x00018800, 0x00018af2, 1}, + {0x0001b000, 0x0001b11e, 1}, + {0x0001b170, 0x0001b2fb, 1}, + {0x0001bc00, 0x0001bc6a, 1}, + {0x0001bc70, 0x0001bc7c, 1}, + {0x0001bc80, 0x0001bc88, 1}, + {0x0001bc90, 0x0001bc99, 1}, + {0x0001bc9c, 0x0001bca3, 1}, + {0x0001d000, 0x0001d0f5, 1}, + {0x0001d100, 0x0001d126, 1}, + {0x0001d129, 0x0001d1e8, 1}, + {0x0001d200, 0x0001d245, 1}, + {0x0001d300, 0x0001d356, 1}, + {0x0001d360, 0x0001d371, 1}, + {0x0001d400, 0x0001d454, 1}, + {0x0001d456, 0x0001d49c, 1}, + {0x0001d49e, 0x0001d49f, 1}, + {0x0001d4a2, 0x0001d4a5, 3}, + {0x0001d4a6, 0x0001d4a9, 3}, + {0x0001d4aa, 0x0001d4ac, 1}, + {0x0001d4ae, 0x0001d4b9, 1}, + {0x0001d4bb, 0x0001d4bd, 2}, + {0x0001d4be, 0x0001d4c3, 1}, + {0x0001d4c5, 0x0001d505, 1}, + {0x0001d507, 0x0001d50a, 1}, + {0x0001d50d, 0x0001d514, 1}, + {0x0001d516, 0x0001d51c, 1}, + {0x0001d51e, 0x0001d539, 1}, + {0x0001d53b, 0x0001d53e, 1}, + {0x0001d540, 0x0001d544, 1}, + {0x0001d546, 0x0001d54a, 4}, + {0x0001d54b, 0x0001d550, 1}, + {0x0001d552, 0x0001d6a5, 1}, + {0x0001d6a8, 0x0001d7cb, 1}, + {0x0001d7ce, 0x0001da8b, 1}, + {0x0001da9b, 0x0001da9f, 1}, + {0x0001daa1, 0x0001daaf, 1}, + {0x0001e000, 0x0001e006, 1}, + {0x0001e008, 0x0001e018, 1}, + {0x0001e01b, 0x0001e021, 1}, + {0x0001e023, 0x0001e024, 1}, + {0x0001e026, 0x0001e02a, 1}, + {0x0001e800, 0x0001e8c4, 1}, + {0x0001e8c7, 0x0001e8d6, 1}, + {0x0001e900, 0x0001e94a, 1}, + {0x0001e950, 0x0001e959, 1}, + {0x0001e95e, 0x0001e95f, 1}, + {0x0001ee00, 0x0001ee03, 1}, + {0x0001ee05, 0x0001ee1f, 1}, + {0x0001ee21, 0x0001ee22, 1}, + {0x0001ee24, 0x0001ee27, 3}, + {0x0001ee29, 0x0001ee32, 1}, + {0x0001ee34, 0x0001ee37, 1}, + {0x0001ee39, 0x0001ee3b, 2}, + {0x0001ee42, 0x0001ee47, 5}, + {0x0001ee49, 0x0001ee4d, 2}, + {0x0001ee4e, 0x0001ee4f, 1}, + {0x0001ee51, 0x0001ee52, 1}, + {0x0001ee54, 0x0001ee57, 3}, + {0x0001ee59, 0x0001ee61, 2}, + {0x0001ee62, 0x0001ee64, 2}, + {0x0001ee67, 0x0001ee6a, 1}, + {0x0001ee6c, 0x0001ee72, 1}, + {0x0001ee74, 0x0001ee77, 1}, + {0x0001ee79, 0x0001ee7c, 1}, + {0x0001ee7e, 0x0001ee80, 2}, + {0x0001ee81, 0x0001ee89, 1}, + {0x0001ee8b, 0x0001ee9b, 1}, + {0x0001eea1, 0x0001eea3, 1}, + {0x0001eea5, 0x0001eea9, 1}, + {0x0001eeab, 0x0001eebb, 1}, + {0x0001eef0, 0x0001eef1, 1}, + {0x0001f000, 0x0001f02b, 1}, + {0x0001f030, 0x0001f093, 1}, + {0x0001f0a0, 0x0001f0ae, 1}, + {0x0001f0b1, 0x0001f0bf, 1}, + {0x0001f0c1, 0x0001f0cf, 1}, + {0x0001f0d1, 0x0001f0f5, 1}, + {0x0001f100, 0x0001f10c, 1}, + {0x0001f110, 0x0001f12e, 1}, + {0x0001f130, 0x0001f16b, 1}, + {0x0001f170, 0x0001f1ac, 1}, + {0x0001f1e6, 0x0001f202, 1}, + {0x0001f210, 0x0001f23b, 1}, + {0x0001f240, 0x0001f248, 1}, + {0x0001f250, 0x0001f251, 1}, + {0x0001f260, 0x0001f265, 1}, + {0x0001f300, 0x0001f6d4, 1}, + {0x0001f6e0, 0x0001f6ec, 1}, + {0x0001f6f0, 0x0001f6f8, 1}, + {0x0001f700, 0x0001f773, 1}, + {0x0001f780, 0x0001f7d4, 1}, + {0x0001f800, 0x0001f80b, 1}, + {0x0001f810, 0x0001f847, 1}, + {0x0001f850, 0x0001f859, 1}, + {0x0001f860, 0x0001f887, 1}, + {0x0001f890, 0x0001f8ad, 1}, + {0x0001f900, 0x0001f90b, 1}, + {0x0001f910, 0x0001f93e, 1}, + {0x0001f940, 0x0001f94c, 1}, + {0x0001f950, 0x0001f96b, 1}, + {0x0001f980, 0x0001f997, 1}, + {0x0001f9c0, 0x0001f9d0, 16}, + {0x0001f9d1, 0x0001f9e6, 1}, + {0x00020000, 0x0002a6d6, 1}, + {0x0002a700, 0x0002b734, 1}, + {0x0002b740, 0x0002b81d, 1}, + {0x0002b820, 0x0002cea1, 1}, + {0x0002ceb0, 0x0002ebe0, 1}, + {0x0002f800, 0x0002fa1d, 1}, + {0x000e0001, 0x000e0020, 31}, + {0x000e0021, 0x000e007f, 1}, + {0x000e0100, 0x000e01ef, 1}, + {0x000f0000, 0x000ffffd, 1}, + {0x00100000, 0x0010fffd, 1}, + }, + LatinOffset: 0, +} + +// Total size 49698 bytes (48 KiB) diff --git a/vendor/golang.org/x/text/width/tables.go b/vendor/golang.org/x/text/width/tables.go index e21f0b838..710fd7525 100644 --- a/vendor/golang.org/x/text/width/tables.go +++ b/vendor/golang.org/x/text/width/tables.go @@ -3,7 +3,7 @@ package width // UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" +const UnicodeVersion = "10.0.0" // lookup returns the trie value for the first UTF-8 encoding in s and // the width in bytes of this encoding. The size will be 0 if s does not @@ -175,7 +175,7 @@ func (t *widthTrie) lookupStringUnsafe(s string) uint16 { return 0 } -// widthTrie. Total size: 14080 bytes (13.75 KiB). Checksum: 3b8aeb3dc03667a3. +// widthTrie. Total size: 14336 bytes (14.00 KiB). Checksum: c59df54630d3dc4a. type widthTrie struct{} func newWidthTrie(i int) *widthTrie { @@ -190,9 +190,9 @@ func (t *widthTrie) lookupValue(n uint32, b byte) uint16 { } } -// widthValues: 99 blocks, 6336 entries, 12672 bytes +// widthValues: 101 blocks, 6464 entries, 12928 bytes // The third block is the zero block. -var widthValues = [6336]uint16{ +var widthValues = [6464]uint16{ // Block 0x0, offset 0x0 0x20: 0x6001, 0x21: 0x6002, 0x22: 0x6002, 0x23: 0x6002, 0x24: 0x6002, 0x25: 0x6002, 0x26: 0x6002, 0x27: 0x6002, 0x28: 0x6002, 0x29: 0x6002, @@ -606,7 +606,7 @@ var widthValues = [6336]uint16{ 0xd98: 0x4000, 0xd99: 0x4000, 0xd9a: 0x4000, 0xd9b: 0x4000, 0xd9c: 0x4000, 0xd9d: 0x4000, 0xd9e: 0x4000, 0xd9f: 0x4000, 0xda0: 0x4000, 0xda1: 0x4000, 0xda2: 0x4000, 0xda3: 0x4000, 0xda4: 0x4000, 0xda5: 0x4000, 0xda6: 0x4000, 0xda7: 0x4000, 0xda8: 0x4000, 0xda9: 0x4000, - 0xdaa: 0x4000, 0xdab: 0x4000, 0xdac: 0x4000, 0xdad: 0x4000, + 0xdaa: 0x4000, 0xdab: 0x4000, 0xdac: 0x4000, 0xdad: 0x4000, 0xdae: 0x4000, 0xdb1: 0x403e, 0xdb2: 0x403e, 0xdb3: 0x403e, 0xdb4: 0x403e, 0xdb5: 0x403e, 0xdb6: 0x403e, 0xdb7: 0x403e, 0xdb8: 0x403e, 0xdb9: 0x403e, 0xdba: 0x403e, 0xdbb: 0x403e, 0xdbc: 0x403e, 0xdbd: 0x403e, 0xdbe: 0x403e, 0xdbf: 0x403e, @@ -773,7 +773,7 @@ var widthValues = [6336]uint16{ 0x11aa: 0xb092, 0x11ab: 0xb091, 0x11ac: 0xb093, 0x11ad: 0xb094, 0x11ae: 0xb095, 0x11bd: 0x2000, // Block 0x47, offset 0x11c0 - 0x11e0: 0x4000, + 0x11e0: 0x4000, 0x11e1: 0x4000, // Block 0x48, offset 0x1200 0x1200: 0x4000, 0x1201: 0x4000, 0x1202: 0x4000, 0x1203: 0x4000, 0x1204: 0x4000, 0x1205: 0x4000, 0x1206: 0x4000, 0x1207: 0x4000, 0x1208: 0x4000, 0x1209: 0x4000, 0x120a: 0x4000, 0x120b: 0x4000, @@ -794,109 +794,108 @@ var widthValues = [6336]uint16{ 0x126a: 0x4000, 0x126b: 0x4000, 0x126c: 0x4000, 0x126d: 0x4000, 0x126e: 0x4000, 0x126f: 0x4000, 0x1270: 0x4000, 0x1271: 0x4000, 0x1272: 0x4000, // Block 0x4a, offset 0x1280 - 0x1280: 0x4000, 0x1281: 0x4000, + 0x1280: 0x4000, 0x1281: 0x4000, 0x1282: 0x4000, 0x1283: 0x4000, 0x1284: 0x4000, 0x1285: 0x4000, + 0x1286: 0x4000, 0x1287: 0x4000, 0x1288: 0x4000, 0x1289: 0x4000, 0x128a: 0x4000, 0x128b: 0x4000, + 0x128c: 0x4000, 0x128d: 0x4000, 0x128e: 0x4000, 0x128f: 0x4000, 0x1290: 0x4000, 0x1291: 0x4000, + 0x1292: 0x4000, 0x1293: 0x4000, 0x1294: 0x4000, 0x1295: 0x4000, 0x1296: 0x4000, 0x1297: 0x4000, + 0x1298: 0x4000, 0x1299: 0x4000, 0x129a: 0x4000, 0x129b: 0x4000, 0x129c: 0x4000, 0x129d: 0x4000, + 0x129e: 0x4000, // Block 0x4b, offset 0x12c0 - 0x12c4: 0x4000, + 0x12f0: 0x4000, 0x12f1: 0x4000, 0x12f2: 0x4000, 0x12f3: 0x4000, 0x12f4: 0x4000, 0x12f5: 0x4000, + 0x12f6: 0x4000, 0x12f7: 0x4000, 0x12f8: 0x4000, 0x12f9: 0x4000, 0x12fa: 0x4000, 0x12fb: 0x4000, + 0x12fc: 0x4000, 0x12fd: 0x4000, 0x12fe: 0x4000, 0x12ff: 0x4000, // Block 0x4c, offset 0x1300 - 0x130f: 0x4000, + 0x1300: 0x4000, 0x1301: 0x4000, 0x1302: 0x4000, 0x1303: 0x4000, 0x1304: 0x4000, 0x1305: 0x4000, + 0x1306: 0x4000, 0x1307: 0x4000, 0x1308: 0x4000, 0x1309: 0x4000, 0x130a: 0x4000, 0x130b: 0x4000, + 0x130c: 0x4000, 0x130d: 0x4000, 0x130e: 0x4000, 0x130f: 0x4000, 0x1310: 0x4000, 0x1311: 0x4000, + 0x1312: 0x4000, 0x1313: 0x4000, 0x1314: 0x4000, 0x1315: 0x4000, 0x1316: 0x4000, 0x1317: 0x4000, + 0x1318: 0x4000, 0x1319: 0x4000, 0x131a: 0x4000, 0x131b: 0x4000, 0x131c: 0x4000, 0x131d: 0x4000, + 0x131e: 0x4000, 0x131f: 0x4000, 0x1320: 0x4000, 0x1321: 0x4000, 0x1322: 0x4000, 0x1323: 0x4000, + 0x1324: 0x4000, 0x1325: 0x4000, 0x1326: 0x4000, 0x1327: 0x4000, 0x1328: 0x4000, 0x1329: 0x4000, + 0x132a: 0x4000, 0x132b: 0x4000, 0x132c: 0x4000, 0x132d: 0x4000, 0x132e: 0x4000, 0x132f: 0x4000, + 0x1330: 0x4000, 0x1331: 0x4000, 0x1332: 0x4000, 0x1333: 0x4000, 0x1334: 0x4000, 0x1335: 0x4000, + 0x1336: 0x4000, 0x1337: 0x4000, 0x1338: 0x4000, 0x1339: 0x4000, 0x133a: 0x4000, 0x133b: 0x4000, // Block 0x4d, offset 0x1340 - 0x1340: 0x2000, 0x1341: 0x2000, 0x1342: 0x2000, 0x1343: 0x2000, 0x1344: 0x2000, 0x1345: 0x2000, - 0x1346: 0x2000, 0x1347: 0x2000, 0x1348: 0x2000, 0x1349: 0x2000, 0x134a: 0x2000, - 0x1350: 0x2000, 0x1351: 0x2000, - 0x1352: 0x2000, 0x1353: 0x2000, 0x1354: 0x2000, 0x1355: 0x2000, 0x1356: 0x2000, 0x1357: 0x2000, - 0x1358: 0x2000, 0x1359: 0x2000, 0x135a: 0x2000, 0x135b: 0x2000, 0x135c: 0x2000, 0x135d: 0x2000, - 0x135e: 0x2000, 0x135f: 0x2000, 0x1360: 0x2000, 0x1361: 0x2000, 0x1362: 0x2000, 0x1363: 0x2000, - 0x1364: 0x2000, 0x1365: 0x2000, 0x1366: 0x2000, 0x1367: 0x2000, 0x1368: 0x2000, 0x1369: 0x2000, - 0x136a: 0x2000, 0x136b: 0x2000, 0x136c: 0x2000, 0x136d: 0x2000, - 0x1370: 0x2000, 0x1371: 0x2000, 0x1372: 0x2000, 0x1373: 0x2000, 0x1374: 0x2000, 0x1375: 0x2000, - 0x1376: 0x2000, 0x1377: 0x2000, 0x1378: 0x2000, 0x1379: 0x2000, 0x137a: 0x2000, 0x137b: 0x2000, - 0x137c: 0x2000, 0x137d: 0x2000, 0x137e: 0x2000, 0x137f: 0x2000, + 0x1344: 0x4000, // Block 0x4e, offset 0x1380 - 0x1380: 0x2000, 0x1381: 0x2000, 0x1382: 0x2000, 0x1383: 0x2000, 0x1384: 0x2000, 0x1385: 0x2000, - 0x1386: 0x2000, 0x1387: 0x2000, 0x1388: 0x2000, 0x1389: 0x2000, 0x138a: 0x2000, 0x138b: 0x2000, - 0x138c: 0x2000, 0x138d: 0x2000, 0x138e: 0x2000, 0x138f: 0x2000, 0x1390: 0x2000, 0x1391: 0x2000, - 0x1392: 0x2000, 0x1393: 0x2000, 0x1394: 0x2000, 0x1395: 0x2000, 0x1396: 0x2000, 0x1397: 0x2000, - 0x1398: 0x2000, 0x1399: 0x2000, 0x139a: 0x2000, 0x139b: 0x2000, 0x139c: 0x2000, 0x139d: 0x2000, - 0x139e: 0x2000, 0x139f: 0x2000, 0x13a0: 0x2000, 0x13a1: 0x2000, 0x13a2: 0x2000, 0x13a3: 0x2000, - 0x13a4: 0x2000, 0x13a5: 0x2000, 0x13a6: 0x2000, 0x13a7: 0x2000, 0x13a8: 0x2000, 0x13a9: 0x2000, - 0x13b0: 0x2000, 0x13b1: 0x2000, 0x13b2: 0x2000, 0x13b3: 0x2000, 0x13b4: 0x2000, 0x13b5: 0x2000, - 0x13b6: 0x2000, 0x13b7: 0x2000, 0x13b8: 0x2000, 0x13b9: 0x2000, 0x13ba: 0x2000, 0x13bb: 0x2000, - 0x13bc: 0x2000, 0x13bd: 0x2000, 0x13be: 0x2000, 0x13bf: 0x2000, + 0x138f: 0x4000, // Block 0x4f, offset 0x13c0 0x13c0: 0x2000, 0x13c1: 0x2000, 0x13c2: 0x2000, 0x13c3: 0x2000, 0x13c4: 0x2000, 0x13c5: 0x2000, - 0x13c6: 0x2000, 0x13c7: 0x2000, 0x13c8: 0x2000, 0x13c9: 0x2000, 0x13ca: 0x2000, 0x13cb: 0x2000, - 0x13cc: 0x2000, 0x13cd: 0x2000, 0x13ce: 0x4000, 0x13cf: 0x2000, 0x13d0: 0x2000, 0x13d1: 0x4000, - 0x13d2: 0x4000, 0x13d3: 0x4000, 0x13d4: 0x4000, 0x13d5: 0x4000, 0x13d6: 0x4000, 0x13d7: 0x4000, - 0x13d8: 0x4000, 0x13d9: 0x4000, 0x13da: 0x4000, 0x13db: 0x2000, 0x13dc: 0x2000, 0x13dd: 0x2000, + 0x13c6: 0x2000, 0x13c7: 0x2000, 0x13c8: 0x2000, 0x13c9: 0x2000, 0x13ca: 0x2000, + 0x13d0: 0x2000, 0x13d1: 0x2000, + 0x13d2: 0x2000, 0x13d3: 0x2000, 0x13d4: 0x2000, 0x13d5: 0x2000, 0x13d6: 0x2000, 0x13d7: 0x2000, + 0x13d8: 0x2000, 0x13d9: 0x2000, 0x13da: 0x2000, 0x13db: 0x2000, 0x13dc: 0x2000, 0x13dd: 0x2000, 0x13de: 0x2000, 0x13df: 0x2000, 0x13e0: 0x2000, 0x13e1: 0x2000, 0x13e2: 0x2000, 0x13e3: 0x2000, 0x13e4: 0x2000, 0x13e5: 0x2000, 0x13e6: 0x2000, 0x13e7: 0x2000, 0x13e8: 0x2000, 0x13e9: 0x2000, - 0x13ea: 0x2000, 0x13eb: 0x2000, 0x13ec: 0x2000, + 0x13ea: 0x2000, 0x13eb: 0x2000, 0x13ec: 0x2000, 0x13ed: 0x2000, + 0x13f0: 0x2000, 0x13f1: 0x2000, 0x13f2: 0x2000, 0x13f3: 0x2000, 0x13f4: 0x2000, 0x13f5: 0x2000, + 0x13f6: 0x2000, 0x13f7: 0x2000, 0x13f8: 0x2000, 0x13f9: 0x2000, 0x13fa: 0x2000, 0x13fb: 0x2000, + 0x13fc: 0x2000, 0x13fd: 0x2000, 0x13fe: 0x2000, 0x13ff: 0x2000, // Block 0x50, offset 0x1400 - 0x1400: 0x4000, 0x1401: 0x4000, 0x1402: 0x4000, - 0x1410: 0x4000, 0x1411: 0x4000, - 0x1412: 0x4000, 0x1413: 0x4000, 0x1414: 0x4000, 0x1415: 0x4000, 0x1416: 0x4000, 0x1417: 0x4000, - 0x1418: 0x4000, 0x1419: 0x4000, 0x141a: 0x4000, 0x141b: 0x4000, 0x141c: 0x4000, 0x141d: 0x4000, - 0x141e: 0x4000, 0x141f: 0x4000, 0x1420: 0x4000, 0x1421: 0x4000, 0x1422: 0x4000, 0x1423: 0x4000, - 0x1424: 0x4000, 0x1425: 0x4000, 0x1426: 0x4000, 0x1427: 0x4000, 0x1428: 0x4000, 0x1429: 0x4000, - 0x142a: 0x4000, 0x142b: 0x4000, 0x142c: 0x4000, 0x142d: 0x4000, 0x142e: 0x4000, 0x142f: 0x4000, - 0x1430: 0x4000, 0x1431: 0x4000, 0x1432: 0x4000, 0x1433: 0x4000, 0x1434: 0x4000, 0x1435: 0x4000, - 0x1436: 0x4000, 0x1437: 0x4000, 0x1438: 0x4000, 0x1439: 0x4000, 0x143a: 0x4000, 0x143b: 0x4000, + 0x1400: 0x2000, 0x1401: 0x2000, 0x1402: 0x2000, 0x1403: 0x2000, 0x1404: 0x2000, 0x1405: 0x2000, + 0x1406: 0x2000, 0x1407: 0x2000, 0x1408: 0x2000, 0x1409: 0x2000, 0x140a: 0x2000, 0x140b: 0x2000, + 0x140c: 0x2000, 0x140d: 0x2000, 0x140e: 0x2000, 0x140f: 0x2000, 0x1410: 0x2000, 0x1411: 0x2000, + 0x1412: 0x2000, 0x1413: 0x2000, 0x1414: 0x2000, 0x1415: 0x2000, 0x1416: 0x2000, 0x1417: 0x2000, + 0x1418: 0x2000, 0x1419: 0x2000, 0x141a: 0x2000, 0x141b: 0x2000, 0x141c: 0x2000, 0x141d: 0x2000, + 0x141e: 0x2000, 0x141f: 0x2000, 0x1420: 0x2000, 0x1421: 0x2000, 0x1422: 0x2000, 0x1423: 0x2000, + 0x1424: 0x2000, 0x1425: 0x2000, 0x1426: 0x2000, 0x1427: 0x2000, 0x1428: 0x2000, 0x1429: 0x2000, + 0x1430: 0x2000, 0x1431: 0x2000, 0x1432: 0x2000, 0x1433: 0x2000, 0x1434: 0x2000, 0x1435: 0x2000, + 0x1436: 0x2000, 0x1437: 0x2000, 0x1438: 0x2000, 0x1439: 0x2000, 0x143a: 0x2000, 0x143b: 0x2000, + 0x143c: 0x2000, 0x143d: 0x2000, 0x143e: 0x2000, 0x143f: 0x2000, // Block 0x51, offset 0x1440 - 0x1440: 0x4000, 0x1441: 0x4000, 0x1442: 0x4000, 0x1443: 0x4000, 0x1444: 0x4000, 0x1445: 0x4000, - 0x1446: 0x4000, 0x1447: 0x4000, 0x1448: 0x4000, - 0x1450: 0x4000, 0x1451: 0x4000, + 0x1440: 0x2000, 0x1441: 0x2000, 0x1442: 0x2000, 0x1443: 0x2000, 0x1444: 0x2000, 0x1445: 0x2000, + 0x1446: 0x2000, 0x1447: 0x2000, 0x1448: 0x2000, 0x1449: 0x2000, 0x144a: 0x2000, 0x144b: 0x2000, + 0x144c: 0x2000, 0x144d: 0x2000, 0x144e: 0x4000, 0x144f: 0x2000, 0x1450: 0x2000, 0x1451: 0x4000, + 0x1452: 0x4000, 0x1453: 0x4000, 0x1454: 0x4000, 0x1455: 0x4000, 0x1456: 0x4000, 0x1457: 0x4000, + 0x1458: 0x4000, 0x1459: 0x4000, 0x145a: 0x4000, 0x145b: 0x2000, 0x145c: 0x2000, 0x145d: 0x2000, + 0x145e: 0x2000, 0x145f: 0x2000, 0x1460: 0x2000, 0x1461: 0x2000, 0x1462: 0x2000, 0x1463: 0x2000, + 0x1464: 0x2000, 0x1465: 0x2000, 0x1466: 0x2000, 0x1467: 0x2000, 0x1468: 0x2000, 0x1469: 0x2000, + 0x146a: 0x2000, 0x146b: 0x2000, 0x146c: 0x2000, // Block 0x52, offset 0x1480 - 0x1480: 0x4000, 0x1481: 0x4000, 0x1482: 0x4000, 0x1483: 0x4000, 0x1484: 0x4000, 0x1485: 0x4000, - 0x1486: 0x4000, 0x1487: 0x4000, 0x1488: 0x4000, 0x1489: 0x4000, 0x148a: 0x4000, 0x148b: 0x4000, - 0x148c: 0x4000, 0x148d: 0x4000, 0x148e: 0x4000, 0x148f: 0x4000, 0x1490: 0x4000, 0x1491: 0x4000, + 0x1480: 0x4000, 0x1481: 0x4000, 0x1482: 0x4000, + 0x1490: 0x4000, 0x1491: 0x4000, 0x1492: 0x4000, 0x1493: 0x4000, 0x1494: 0x4000, 0x1495: 0x4000, 0x1496: 0x4000, 0x1497: 0x4000, 0x1498: 0x4000, 0x1499: 0x4000, 0x149a: 0x4000, 0x149b: 0x4000, 0x149c: 0x4000, 0x149d: 0x4000, - 0x149e: 0x4000, 0x149f: 0x4000, 0x14a0: 0x4000, - 0x14ad: 0x4000, 0x14ae: 0x4000, 0x14af: 0x4000, + 0x149e: 0x4000, 0x149f: 0x4000, 0x14a0: 0x4000, 0x14a1: 0x4000, 0x14a2: 0x4000, 0x14a3: 0x4000, + 0x14a4: 0x4000, 0x14a5: 0x4000, 0x14a6: 0x4000, 0x14a7: 0x4000, 0x14a8: 0x4000, 0x14a9: 0x4000, + 0x14aa: 0x4000, 0x14ab: 0x4000, 0x14ac: 0x4000, 0x14ad: 0x4000, 0x14ae: 0x4000, 0x14af: 0x4000, 0x14b0: 0x4000, 0x14b1: 0x4000, 0x14b2: 0x4000, 0x14b3: 0x4000, 0x14b4: 0x4000, 0x14b5: 0x4000, - 0x14b7: 0x4000, 0x14b8: 0x4000, 0x14b9: 0x4000, 0x14ba: 0x4000, 0x14bb: 0x4000, - 0x14bc: 0x4000, 0x14bd: 0x4000, 0x14be: 0x4000, 0x14bf: 0x4000, + 0x14b6: 0x4000, 0x14b7: 0x4000, 0x14b8: 0x4000, 0x14b9: 0x4000, 0x14ba: 0x4000, 0x14bb: 0x4000, // Block 0x53, offset 0x14c0 0x14c0: 0x4000, 0x14c1: 0x4000, 0x14c2: 0x4000, 0x14c3: 0x4000, 0x14c4: 0x4000, 0x14c5: 0x4000, - 0x14c6: 0x4000, 0x14c7: 0x4000, 0x14c8: 0x4000, 0x14c9: 0x4000, 0x14ca: 0x4000, 0x14cb: 0x4000, - 0x14cc: 0x4000, 0x14cd: 0x4000, 0x14ce: 0x4000, 0x14cf: 0x4000, 0x14d0: 0x4000, 0x14d1: 0x4000, - 0x14d2: 0x4000, 0x14d3: 0x4000, 0x14d4: 0x4000, 0x14d5: 0x4000, 0x14d6: 0x4000, 0x14d7: 0x4000, - 0x14d8: 0x4000, 0x14d9: 0x4000, 0x14da: 0x4000, 0x14db: 0x4000, 0x14dc: 0x4000, 0x14dd: 0x4000, - 0x14de: 0x4000, 0x14df: 0x4000, 0x14e0: 0x4000, 0x14e1: 0x4000, 0x14e2: 0x4000, 0x14e3: 0x4000, - 0x14e4: 0x4000, 0x14e5: 0x4000, 0x14e6: 0x4000, 0x14e7: 0x4000, 0x14e8: 0x4000, 0x14e9: 0x4000, - 0x14ea: 0x4000, 0x14eb: 0x4000, 0x14ec: 0x4000, 0x14ed: 0x4000, 0x14ee: 0x4000, 0x14ef: 0x4000, - 0x14f0: 0x4000, 0x14f1: 0x4000, 0x14f2: 0x4000, 0x14f3: 0x4000, 0x14f4: 0x4000, 0x14f5: 0x4000, - 0x14f6: 0x4000, 0x14f7: 0x4000, 0x14f8: 0x4000, 0x14f9: 0x4000, 0x14fa: 0x4000, 0x14fb: 0x4000, - 0x14fc: 0x4000, 0x14fe: 0x4000, 0x14ff: 0x4000, + 0x14c6: 0x4000, 0x14c7: 0x4000, 0x14c8: 0x4000, + 0x14d0: 0x4000, 0x14d1: 0x4000, + 0x14e0: 0x4000, 0x14e1: 0x4000, 0x14e2: 0x4000, 0x14e3: 0x4000, + 0x14e4: 0x4000, 0x14e5: 0x4000, // Block 0x54, offset 0x1500 0x1500: 0x4000, 0x1501: 0x4000, 0x1502: 0x4000, 0x1503: 0x4000, 0x1504: 0x4000, 0x1505: 0x4000, 0x1506: 0x4000, 0x1507: 0x4000, 0x1508: 0x4000, 0x1509: 0x4000, 0x150a: 0x4000, 0x150b: 0x4000, 0x150c: 0x4000, 0x150d: 0x4000, 0x150e: 0x4000, 0x150f: 0x4000, 0x1510: 0x4000, 0x1511: 0x4000, - 0x1512: 0x4000, 0x1513: 0x4000, - 0x1520: 0x4000, 0x1521: 0x4000, 0x1522: 0x4000, 0x1523: 0x4000, - 0x1524: 0x4000, 0x1525: 0x4000, 0x1526: 0x4000, 0x1527: 0x4000, 0x1528: 0x4000, 0x1529: 0x4000, - 0x152a: 0x4000, 0x152b: 0x4000, 0x152c: 0x4000, 0x152d: 0x4000, 0x152e: 0x4000, 0x152f: 0x4000, + 0x1512: 0x4000, 0x1513: 0x4000, 0x1514: 0x4000, 0x1515: 0x4000, 0x1516: 0x4000, 0x1517: 0x4000, + 0x1518: 0x4000, 0x1519: 0x4000, 0x151a: 0x4000, 0x151b: 0x4000, 0x151c: 0x4000, 0x151d: 0x4000, + 0x151e: 0x4000, 0x151f: 0x4000, 0x1520: 0x4000, + 0x152d: 0x4000, 0x152e: 0x4000, 0x152f: 0x4000, 0x1530: 0x4000, 0x1531: 0x4000, 0x1532: 0x4000, 0x1533: 0x4000, 0x1534: 0x4000, 0x1535: 0x4000, - 0x1536: 0x4000, 0x1537: 0x4000, 0x1538: 0x4000, 0x1539: 0x4000, 0x153a: 0x4000, 0x153b: 0x4000, + 0x1537: 0x4000, 0x1538: 0x4000, 0x1539: 0x4000, 0x153a: 0x4000, 0x153b: 0x4000, 0x153c: 0x4000, 0x153d: 0x4000, 0x153e: 0x4000, 0x153f: 0x4000, // Block 0x55, offset 0x1540 0x1540: 0x4000, 0x1541: 0x4000, 0x1542: 0x4000, 0x1543: 0x4000, 0x1544: 0x4000, 0x1545: 0x4000, - 0x1546: 0x4000, 0x1547: 0x4000, 0x1548: 0x4000, 0x1549: 0x4000, 0x154a: 0x4000, - 0x154f: 0x4000, 0x1550: 0x4000, 0x1551: 0x4000, - 0x1552: 0x4000, 0x1553: 0x4000, - 0x1560: 0x4000, 0x1561: 0x4000, 0x1562: 0x4000, 0x1563: 0x4000, + 0x1546: 0x4000, 0x1547: 0x4000, 0x1548: 0x4000, 0x1549: 0x4000, 0x154a: 0x4000, 0x154b: 0x4000, + 0x154c: 0x4000, 0x154d: 0x4000, 0x154e: 0x4000, 0x154f: 0x4000, 0x1550: 0x4000, 0x1551: 0x4000, + 0x1552: 0x4000, 0x1553: 0x4000, 0x1554: 0x4000, 0x1555: 0x4000, 0x1556: 0x4000, 0x1557: 0x4000, + 0x1558: 0x4000, 0x1559: 0x4000, 0x155a: 0x4000, 0x155b: 0x4000, 0x155c: 0x4000, 0x155d: 0x4000, + 0x155e: 0x4000, 0x155f: 0x4000, 0x1560: 0x4000, 0x1561: 0x4000, 0x1562: 0x4000, 0x1563: 0x4000, 0x1564: 0x4000, 0x1565: 0x4000, 0x1566: 0x4000, 0x1567: 0x4000, 0x1568: 0x4000, 0x1569: 0x4000, 0x156a: 0x4000, 0x156b: 0x4000, 0x156c: 0x4000, 0x156d: 0x4000, 0x156e: 0x4000, 0x156f: 0x4000, - 0x1570: 0x4000, 0x1574: 0x4000, - 0x1578: 0x4000, 0x1579: 0x4000, 0x157a: 0x4000, 0x157b: 0x4000, - 0x157c: 0x4000, 0x157d: 0x4000, 0x157e: 0x4000, 0x157f: 0x4000, + 0x1570: 0x4000, 0x1571: 0x4000, 0x1572: 0x4000, 0x1573: 0x4000, 0x1574: 0x4000, 0x1575: 0x4000, + 0x1576: 0x4000, 0x1577: 0x4000, 0x1578: 0x4000, 0x1579: 0x4000, 0x157a: 0x4000, 0x157b: 0x4000, + 0x157c: 0x4000, 0x157e: 0x4000, 0x157f: 0x4000, // Block 0x56, offset 0x1580 - 0x1580: 0x4000, 0x1582: 0x4000, 0x1583: 0x4000, 0x1584: 0x4000, 0x1585: 0x4000, + 0x1580: 0x4000, 0x1581: 0x4000, 0x1582: 0x4000, 0x1583: 0x4000, 0x1584: 0x4000, 0x1585: 0x4000, 0x1586: 0x4000, 0x1587: 0x4000, 0x1588: 0x4000, 0x1589: 0x4000, 0x158a: 0x4000, 0x158b: 0x4000, 0x158c: 0x4000, 0x158d: 0x4000, 0x158e: 0x4000, 0x158f: 0x4000, 0x1590: 0x4000, 0x1591: 0x4000, - 0x1592: 0x4000, 0x1593: 0x4000, 0x1594: 0x4000, 0x1595: 0x4000, 0x1596: 0x4000, 0x1597: 0x4000, - 0x1598: 0x4000, 0x1599: 0x4000, 0x159a: 0x4000, 0x159b: 0x4000, 0x159c: 0x4000, 0x159d: 0x4000, - 0x159e: 0x4000, 0x159f: 0x4000, 0x15a0: 0x4000, 0x15a1: 0x4000, 0x15a2: 0x4000, 0x15a3: 0x4000, + 0x1592: 0x4000, 0x1593: 0x4000, + 0x15a0: 0x4000, 0x15a1: 0x4000, 0x15a2: 0x4000, 0x15a3: 0x4000, 0x15a4: 0x4000, 0x15a5: 0x4000, 0x15a6: 0x4000, 0x15a7: 0x4000, 0x15a8: 0x4000, 0x15a9: 0x4000, 0x15aa: 0x4000, 0x15ab: 0x4000, 0x15ac: 0x4000, 0x15ad: 0x4000, 0x15ae: 0x4000, 0x15af: 0x4000, 0x15b0: 0x4000, 0x15b1: 0x4000, 0x15b2: 0x4000, 0x15b3: 0x4000, 0x15b4: 0x4000, 0x15b5: 0x4000, @@ -904,18 +903,17 @@ var widthValues = [6336]uint16{ 0x15bc: 0x4000, 0x15bd: 0x4000, 0x15be: 0x4000, 0x15bf: 0x4000, // Block 0x57, offset 0x15c0 0x15c0: 0x4000, 0x15c1: 0x4000, 0x15c2: 0x4000, 0x15c3: 0x4000, 0x15c4: 0x4000, 0x15c5: 0x4000, - 0x15c6: 0x4000, 0x15c7: 0x4000, 0x15c8: 0x4000, 0x15c9: 0x4000, 0x15ca: 0x4000, 0x15cb: 0x4000, - 0x15cc: 0x4000, 0x15cd: 0x4000, 0x15ce: 0x4000, 0x15cf: 0x4000, 0x15d0: 0x4000, 0x15d1: 0x4000, - 0x15d2: 0x4000, 0x15d3: 0x4000, 0x15d4: 0x4000, 0x15d5: 0x4000, 0x15d6: 0x4000, 0x15d7: 0x4000, - 0x15d8: 0x4000, 0x15d9: 0x4000, 0x15da: 0x4000, 0x15db: 0x4000, 0x15dc: 0x4000, 0x15dd: 0x4000, - 0x15de: 0x4000, 0x15df: 0x4000, 0x15e0: 0x4000, 0x15e1: 0x4000, 0x15e2: 0x4000, 0x15e3: 0x4000, + 0x15c6: 0x4000, 0x15c7: 0x4000, 0x15c8: 0x4000, 0x15c9: 0x4000, 0x15ca: 0x4000, + 0x15cf: 0x4000, 0x15d0: 0x4000, 0x15d1: 0x4000, + 0x15d2: 0x4000, 0x15d3: 0x4000, + 0x15e0: 0x4000, 0x15e1: 0x4000, 0x15e2: 0x4000, 0x15e3: 0x4000, 0x15e4: 0x4000, 0x15e5: 0x4000, 0x15e6: 0x4000, 0x15e7: 0x4000, 0x15e8: 0x4000, 0x15e9: 0x4000, 0x15ea: 0x4000, 0x15eb: 0x4000, 0x15ec: 0x4000, 0x15ed: 0x4000, 0x15ee: 0x4000, 0x15ef: 0x4000, - 0x15f0: 0x4000, 0x15f1: 0x4000, 0x15f2: 0x4000, 0x15f3: 0x4000, 0x15f4: 0x4000, 0x15f5: 0x4000, - 0x15f6: 0x4000, 0x15f7: 0x4000, 0x15f8: 0x4000, 0x15f9: 0x4000, 0x15fa: 0x4000, 0x15fb: 0x4000, - 0x15fc: 0x4000, 0x15ff: 0x4000, + 0x15f0: 0x4000, 0x15f4: 0x4000, + 0x15f8: 0x4000, 0x15f9: 0x4000, 0x15fa: 0x4000, 0x15fb: 0x4000, + 0x15fc: 0x4000, 0x15fd: 0x4000, 0x15fe: 0x4000, 0x15ff: 0x4000, // Block 0x58, offset 0x1600 - 0x1600: 0x4000, 0x1601: 0x4000, 0x1602: 0x4000, 0x1603: 0x4000, 0x1604: 0x4000, 0x1605: 0x4000, + 0x1600: 0x4000, 0x1602: 0x4000, 0x1603: 0x4000, 0x1604: 0x4000, 0x1605: 0x4000, 0x1606: 0x4000, 0x1607: 0x4000, 0x1608: 0x4000, 0x1609: 0x4000, 0x160a: 0x4000, 0x160b: 0x4000, 0x160c: 0x4000, 0x160d: 0x4000, 0x160e: 0x4000, 0x160f: 0x4000, 0x1610: 0x4000, 0x1611: 0x4000, 0x1612: 0x4000, 0x1613: 0x4000, 0x1614: 0x4000, 0x1615: 0x4000, 0x1616: 0x4000, 0x1617: 0x4000, @@ -925,66 +923,99 @@ var widthValues = [6336]uint16{ 0x162a: 0x4000, 0x162b: 0x4000, 0x162c: 0x4000, 0x162d: 0x4000, 0x162e: 0x4000, 0x162f: 0x4000, 0x1630: 0x4000, 0x1631: 0x4000, 0x1632: 0x4000, 0x1633: 0x4000, 0x1634: 0x4000, 0x1635: 0x4000, 0x1636: 0x4000, 0x1637: 0x4000, 0x1638: 0x4000, 0x1639: 0x4000, 0x163a: 0x4000, 0x163b: 0x4000, - 0x163c: 0x4000, 0x163d: 0x4000, + 0x163c: 0x4000, 0x163d: 0x4000, 0x163e: 0x4000, 0x163f: 0x4000, // Block 0x59, offset 0x1640 - 0x164b: 0x4000, - 0x164c: 0x4000, 0x164d: 0x4000, 0x164e: 0x4000, 0x1650: 0x4000, 0x1651: 0x4000, + 0x1640: 0x4000, 0x1641: 0x4000, 0x1642: 0x4000, 0x1643: 0x4000, 0x1644: 0x4000, 0x1645: 0x4000, + 0x1646: 0x4000, 0x1647: 0x4000, 0x1648: 0x4000, 0x1649: 0x4000, 0x164a: 0x4000, 0x164b: 0x4000, + 0x164c: 0x4000, 0x164d: 0x4000, 0x164e: 0x4000, 0x164f: 0x4000, 0x1650: 0x4000, 0x1651: 0x4000, 0x1652: 0x4000, 0x1653: 0x4000, 0x1654: 0x4000, 0x1655: 0x4000, 0x1656: 0x4000, 0x1657: 0x4000, 0x1658: 0x4000, 0x1659: 0x4000, 0x165a: 0x4000, 0x165b: 0x4000, 0x165c: 0x4000, 0x165d: 0x4000, 0x165e: 0x4000, 0x165f: 0x4000, 0x1660: 0x4000, 0x1661: 0x4000, 0x1662: 0x4000, 0x1663: 0x4000, - 0x1664: 0x4000, 0x1665: 0x4000, 0x1666: 0x4000, 0x1667: 0x4000, - 0x167a: 0x4000, + 0x1664: 0x4000, 0x1665: 0x4000, 0x1666: 0x4000, 0x1667: 0x4000, 0x1668: 0x4000, 0x1669: 0x4000, + 0x166a: 0x4000, 0x166b: 0x4000, 0x166c: 0x4000, 0x166d: 0x4000, 0x166e: 0x4000, 0x166f: 0x4000, + 0x1670: 0x4000, 0x1671: 0x4000, 0x1672: 0x4000, 0x1673: 0x4000, 0x1674: 0x4000, 0x1675: 0x4000, + 0x1676: 0x4000, 0x1677: 0x4000, 0x1678: 0x4000, 0x1679: 0x4000, 0x167a: 0x4000, 0x167b: 0x4000, + 0x167c: 0x4000, 0x167f: 0x4000, // Block 0x5a, offset 0x1680 - 0x1695: 0x4000, 0x1696: 0x4000, - 0x16a4: 0x4000, + 0x1680: 0x4000, 0x1681: 0x4000, 0x1682: 0x4000, 0x1683: 0x4000, 0x1684: 0x4000, 0x1685: 0x4000, + 0x1686: 0x4000, 0x1687: 0x4000, 0x1688: 0x4000, 0x1689: 0x4000, 0x168a: 0x4000, 0x168b: 0x4000, + 0x168c: 0x4000, 0x168d: 0x4000, 0x168e: 0x4000, 0x168f: 0x4000, 0x1690: 0x4000, 0x1691: 0x4000, + 0x1692: 0x4000, 0x1693: 0x4000, 0x1694: 0x4000, 0x1695: 0x4000, 0x1696: 0x4000, 0x1697: 0x4000, + 0x1698: 0x4000, 0x1699: 0x4000, 0x169a: 0x4000, 0x169b: 0x4000, 0x169c: 0x4000, 0x169d: 0x4000, + 0x169e: 0x4000, 0x169f: 0x4000, 0x16a0: 0x4000, 0x16a1: 0x4000, 0x16a2: 0x4000, 0x16a3: 0x4000, + 0x16a4: 0x4000, 0x16a5: 0x4000, 0x16a6: 0x4000, 0x16a7: 0x4000, 0x16a8: 0x4000, 0x16a9: 0x4000, + 0x16aa: 0x4000, 0x16ab: 0x4000, 0x16ac: 0x4000, 0x16ad: 0x4000, 0x16ae: 0x4000, 0x16af: 0x4000, + 0x16b0: 0x4000, 0x16b1: 0x4000, 0x16b2: 0x4000, 0x16b3: 0x4000, 0x16b4: 0x4000, 0x16b5: 0x4000, + 0x16b6: 0x4000, 0x16b7: 0x4000, 0x16b8: 0x4000, 0x16b9: 0x4000, 0x16ba: 0x4000, 0x16bb: 0x4000, + 0x16bc: 0x4000, 0x16bd: 0x4000, // Block 0x5b, offset 0x16c0 - 0x16fb: 0x4000, - 0x16fc: 0x4000, 0x16fd: 0x4000, 0x16fe: 0x4000, 0x16ff: 0x4000, + 0x16cb: 0x4000, + 0x16cc: 0x4000, 0x16cd: 0x4000, 0x16ce: 0x4000, 0x16d0: 0x4000, 0x16d1: 0x4000, + 0x16d2: 0x4000, 0x16d3: 0x4000, 0x16d4: 0x4000, 0x16d5: 0x4000, 0x16d6: 0x4000, 0x16d7: 0x4000, + 0x16d8: 0x4000, 0x16d9: 0x4000, 0x16da: 0x4000, 0x16db: 0x4000, 0x16dc: 0x4000, 0x16dd: 0x4000, + 0x16de: 0x4000, 0x16df: 0x4000, 0x16e0: 0x4000, 0x16e1: 0x4000, 0x16e2: 0x4000, 0x16e3: 0x4000, + 0x16e4: 0x4000, 0x16e5: 0x4000, 0x16e6: 0x4000, 0x16e7: 0x4000, + 0x16fa: 0x4000, // Block 0x5c, offset 0x1700 - 0x1700: 0x4000, 0x1701: 0x4000, 0x1702: 0x4000, 0x1703: 0x4000, 0x1704: 0x4000, 0x1705: 0x4000, - 0x1706: 0x4000, 0x1707: 0x4000, 0x1708: 0x4000, 0x1709: 0x4000, 0x170a: 0x4000, 0x170b: 0x4000, - 0x170c: 0x4000, 0x170d: 0x4000, 0x170e: 0x4000, 0x170f: 0x4000, + 0x1715: 0x4000, 0x1716: 0x4000, + 0x1724: 0x4000, // Block 0x5d, offset 0x1740 - 0x1740: 0x4000, 0x1741: 0x4000, 0x1742: 0x4000, 0x1743: 0x4000, 0x1744: 0x4000, 0x1745: 0x4000, - 0x174c: 0x4000, 0x1750: 0x4000, 0x1751: 0x4000, - 0x1752: 0x4000, - 0x176b: 0x4000, 0x176c: 0x4000, - 0x1774: 0x4000, 0x1775: 0x4000, - 0x1776: 0x4000, + 0x177b: 0x4000, + 0x177c: 0x4000, 0x177d: 0x4000, 0x177e: 0x4000, 0x177f: 0x4000, // Block 0x5e, offset 0x1780 - 0x1790: 0x4000, 0x1791: 0x4000, - 0x1792: 0x4000, 0x1793: 0x4000, 0x1794: 0x4000, 0x1795: 0x4000, 0x1796: 0x4000, 0x1797: 0x4000, - 0x1798: 0x4000, 0x1799: 0x4000, 0x179a: 0x4000, 0x179b: 0x4000, 0x179c: 0x4000, 0x179d: 0x4000, - 0x179e: 0x4000, 0x17a0: 0x4000, 0x17a1: 0x4000, 0x17a2: 0x4000, 0x17a3: 0x4000, - 0x17a4: 0x4000, 0x17a5: 0x4000, 0x17a6: 0x4000, 0x17a7: 0x4000, - 0x17b0: 0x4000, 0x17b3: 0x4000, 0x17b4: 0x4000, 0x17b5: 0x4000, - 0x17b6: 0x4000, 0x17b7: 0x4000, 0x17b8: 0x4000, 0x17b9: 0x4000, 0x17ba: 0x4000, 0x17bb: 0x4000, - 0x17bc: 0x4000, 0x17bd: 0x4000, 0x17be: 0x4000, + 0x1780: 0x4000, 0x1781: 0x4000, 0x1782: 0x4000, 0x1783: 0x4000, 0x1784: 0x4000, 0x1785: 0x4000, + 0x1786: 0x4000, 0x1787: 0x4000, 0x1788: 0x4000, 0x1789: 0x4000, 0x178a: 0x4000, 0x178b: 0x4000, + 0x178c: 0x4000, 0x178d: 0x4000, 0x178e: 0x4000, 0x178f: 0x4000, // Block 0x5f, offset 0x17c0 0x17c0: 0x4000, 0x17c1: 0x4000, 0x17c2: 0x4000, 0x17c3: 0x4000, 0x17c4: 0x4000, 0x17c5: 0x4000, - 0x17c6: 0x4000, 0x17c7: 0x4000, 0x17c8: 0x4000, 0x17c9: 0x4000, 0x17ca: 0x4000, 0x17cb: 0x4000, - 0x17d0: 0x4000, 0x17d1: 0x4000, - 0x17d2: 0x4000, 0x17d3: 0x4000, 0x17d4: 0x4000, 0x17d5: 0x4000, 0x17d6: 0x4000, 0x17d7: 0x4000, - 0x17d8: 0x4000, 0x17d9: 0x4000, 0x17da: 0x4000, 0x17db: 0x4000, 0x17dc: 0x4000, 0x17dd: 0x4000, - 0x17de: 0x4000, + 0x17cc: 0x4000, 0x17d0: 0x4000, 0x17d1: 0x4000, + 0x17d2: 0x4000, + 0x17eb: 0x4000, 0x17ec: 0x4000, + 0x17f4: 0x4000, 0x17f5: 0x4000, + 0x17f6: 0x4000, 0x17f7: 0x4000, 0x17f8: 0x4000, // Block 0x60, offset 0x1800 - 0x1800: 0x4000, 0x1801: 0x4000, 0x1802: 0x4000, 0x1803: 0x4000, 0x1804: 0x4000, 0x1805: 0x4000, - 0x1806: 0x4000, 0x1807: 0x4000, 0x1808: 0x4000, 0x1809: 0x4000, 0x180a: 0x4000, 0x180b: 0x4000, - 0x180c: 0x4000, 0x180d: 0x4000, 0x180e: 0x4000, 0x180f: 0x4000, 0x1810: 0x4000, 0x1811: 0x4000, + 0x1810: 0x4000, 0x1811: 0x4000, + 0x1812: 0x4000, 0x1813: 0x4000, 0x1814: 0x4000, 0x1815: 0x4000, 0x1816: 0x4000, 0x1817: 0x4000, + 0x1818: 0x4000, 0x1819: 0x4000, 0x181a: 0x4000, 0x181b: 0x4000, 0x181c: 0x4000, 0x181d: 0x4000, + 0x181e: 0x4000, 0x181f: 0x4000, 0x1820: 0x4000, 0x1821: 0x4000, 0x1822: 0x4000, 0x1823: 0x4000, + 0x1824: 0x4000, 0x1825: 0x4000, 0x1826: 0x4000, 0x1827: 0x4000, 0x1828: 0x4000, 0x1829: 0x4000, + 0x182a: 0x4000, 0x182b: 0x4000, 0x182c: 0x4000, 0x182d: 0x4000, 0x182e: 0x4000, 0x182f: 0x4000, + 0x1830: 0x4000, 0x1831: 0x4000, 0x1832: 0x4000, 0x1833: 0x4000, 0x1834: 0x4000, 0x1835: 0x4000, + 0x1836: 0x4000, 0x1837: 0x4000, 0x1838: 0x4000, 0x1839: 0x4000, 0x183a: 0x4000, 0x183b: 0x4000, + 0x183c: 0x4000, 0x183d: 0x4000, 0x183e: 0x4000, // Block 0x61, offset 0x1840 - 0x1840: 0x4000, + 0x1840: 0x4000, 0x1841: 0x4000, 0x1842: 0x4000, 0x1843: 0x4000, 0x1844: 0x4000, 0x1845: 0x4000, + 0x1846: 0x4000, 0x1847: 0x4000, 0x1848: 0x4000, 0x1849: 0x4000, 0x184a: 0x4000, 0x184b: 0x4000, + 0x184c: 0x4000, 0x1850: 0x4000, 0x1851: 0x4000, + 0x1852: 0x4000, 0x1853: 0x4000, 0x1854: 0x4000, 0x1855: 0x4000, 0x1856: 0x4000, 0x1857: 0x4000, + 0x1858: 0x4000, 0x1859: 0x4000, 0x185a: 0x4000, 0x185b: 0x4000, 0x185c: 0x4000, 0x185d: 0x4000, + 0x185e: 0x4000, 0x185f: 0x4000, 0x1860: 0x4000, 0x1861: 0x4000, 0x1862: 0x4000, 0x1863: 0x4000, + 0x1864: 0x4000, 0x1865: 0x4000, 0x1866: 0x4000, 0x1867: 0x4000, 0x1868: 0x4000, 0x1869: 0x4000, + 0x186a: 0x4000, 0x186b: 0x4000, // Block 0x62, offset 0x1880 - 0x1880: 0x2000, 0x1881: 0x2000, 0x1882: 0x2000, 0x1883: 0x2000, 0x1884: 0x2000, 0x1885: 0x2000, - 0x1886: 0x2000, 0x1887: 0x2000, 0x1888: 0x2000, 0x1889: 0x2000, 0x188a: 0x2000, 0x188b: 0x2000, - 0x188c: 0x2000, 0x188d: 0x2000, 0x188e: 0x2000, 0x188f: 0x2000, 0x1890: 0x2000, 0x1891: 0x2000, - 0x1892: 0x2000, 0x1893: 0x2000, 0x1894: 0x2000, 0x1895: 0x2000, 0x1896: 0x2000, 0x1897: 0x2000, - 0x1898: 0x2000, 0x1899: 0x2000, 0x189a: 0x2000, 0x189b: 0x2000, 0x189c: 0x2000, 0x189d: 0x2000, - 0x189e: 0x2000, 0x189f: 0x2000, 0x18a0: 0x2000, 0x18a1: 0x2000, 0x18a2: 0x2000, 0x18a3: 0x2000, - 0x18a4: 0x2000, 0x18a5: 0x2000, 0x18a6: 0x2000, 0x18a7: 0x2000, 0x18a8: 0x2000, 0x18a9: 0x2000, - 0x18aa: 0x2000, 0x18ab: 0x2000, 0x18ac: 0x2000, 0x18ad: 0x2000, 0x18ae: 0x2000, 0x18af: 0x2000, - 0x18b0: 0x2000, 0x18b1: 0x2000, 0x18b2: 0x2000, 0x18b3: 0x2000, 0x18b4: 0x2000, 0x18b5: 0x2000, - 0x18b6: 0x2000, 0x18b7: 0x2000, 0x18b8: 0x2000, 0x18b9: 0x2000, 0x18ba: 0x2000, 0x18bb: 0x2000, - 0x18bc: 0x2000, 0x18bd: 0x2000, + 0x1880: 0x4000, 0x1881: 0x4000, 0x1882: 0x4000, 0x1883: 0x4000, 0x1884: 0x4000, 0x1885: 0x4000, + 0x1886: 0x4000, 0x1887: 0x4000, 0x1888: 0x4000, 0x1889: 0x4000, 0x188a: 0x4000, 0x188b: 0x4000, + 0x188c: 0x4000, 0x188d: 0x4000, 0x188e: 0x4000, 0x188f: 0x4000, 0x1890: 0x4000, 0x1891: 0x4000, + 0x1892: 0x4000, 0x1893: 0x4000, 0x1894: 0x4000, 0x1895: 0x4000, 0x1896: 0x4000, 0x1897: 0x4000, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x4000, + 0x18d0: 0x4000, 0x18d1: 0x4000, + 0x18d2: 0x4000, 0x18d3: 0x4000, 0x18d4: 0x4000, 0x18d5: 0x4000, 0x18d6: 0x4000, 0x18d7: 0x4000, + 0x18d8: 0x4000, 0x18d9: 0x4000, 0x18da: 0x4000, 0x18db: 0x4000, 0x18dc: 0x4000, 0x18dd: 0x4000, + 0x18de: 0x4000, 0x18df: 0x4000, 0x18e0: 0x4000, 0x18e1: 0x4000, 0x18e2: 0x4000, 0x18e3: 0x4000, + 0x18e4: 0x4000, 0x18e5: 0x4000, 0x18e6: 0x4000, + // Block 0x64, offset 0x1900 + 0x1900: 0x2000, 0x1901: 0x2000, 0x1902: 0x2000, 0x1903: 0x2000, 0x1904: 0x2000, 0x1905: 0x2000, + 0x1906: 0x2000, 0x1907: 0x2000, 0x1908: 0x2000, 0x1909: 0x2000, 0x190a: 0x2000, 0x190b: 0x2000, + 0x190c: 0x2000, 0x190d: 0x2000, 0x190e: 0x2000, 0x190f: 0x2000, 0x1910: 0x2000, 0x1911: 0x2000, + 0x1912: 0x2000, 0x1913: 0x2000, 0x1914: 0x2000, 0x1915: 0x2000, 0x1916: 0x2000, 0x1917: 0x2000, + 0x1918: 0x2000, 0x1919: 0x2000, 0x191a: 0x2000, 0x191b: 0x2000, 0x191c: 0x2000, 0x191d: 0x2000, + 0x191e: 0x2000, 0x191f: 0x2000, 0x1920: 0x2000, 0x1921: 0x2000, 0x1922: 0x2000, 0x1923: 0x2000, + 0x1924: 0x2000, 0x1925: 0x2000, 0x1926: 0x2000, 0x1927: 0x2000, 0x1928: 0x2000, 0x1929: 0x2000, + 0x192a: 0x2000, 0x192b: 0x2000, 0x192c: 0x2000, 0x192d: 0x2000, 0x192e: 0x2000, 0x192f: 0x2000, + 0x1930: 0x2000, 0x1931: 0x2000, 0x1932: 0x2000, 0x1933: 0x2000, 0x1934: 0x2000, 0x1935: 0x2000, + 0x1936: 0x2000, 0x1937: 0x2000, 0x1938: 0x2000, 0x1939: 0x2000, 0x193a: 0x2000, 0x193b: 0x2000, + 0x193c: 0x2000, 0x193d: 0x2000, } // widthIndex: 22 blocks, 1408 entries, 1408 bytes @@ -1076,13 +1107,14 @@ var widthIndex = [1408]uint8{ 0x3a0: 0x0e, 0x3a1: 0x0e, 0x3a2: 0x0e, 0x3a3: 0x0e, 0x3a4: 0x0e, 0x3a5: 0x0e, 0x3a6: 0x0e, 0x3a7: 0x0e, 0x3a8: 0x0e, 0x3a9: 0x0e, 0x3aa: 0x0e, 0x3ab: 0x47, // Block 0xf, offset 0x3c0 - 0x3c0: 0x48, + 0x3c0: 0x0e, 0x3c1: 0x0e, 0x3c2: 0x0e, 0x3c3: 0x0e, 0x3c4: 0x48, 0x3c5: 0x49, 0x3c6: 0x0e, 0x3c7: 0x0e, + 0x3c8: 0x0e, 0x3c9: 0x0e, 0x3ca: 0x0e, 0x3cb: 0x4a, // Block 0x10, offset 0x400 - 0x400: 0x49, 0x403: 0x4a, 0x404: 0x4b, 0x405: 0x4c, 0x406: 0x4d, - 0x408: 0x4e, 0x409: 0x4f, 0x40c: 0x50, 0x40d: 0x51, 0x40e: 0x52, 0x40f: 0x53, - 0x410: 0x3a, 0x411: 0x54, 0x412: 0x0e, 0x413: 0x55, 0x414: 0x56, 0x415: 0x57, 0x416: 0x58, 0x417: 0x59, - 0x418: 0x0e, 0x419: 0x5a, 0x41a: 0x0e, 0x41b: 0x5b, - 0x424: 0x5c, 0x425: 0x5d, 0x426: 0x5e, 0x427: 0x5f, + 0x400: 0x4b, 0x403: 0x4c, 0x404: 0x4d, 0x405: 0x4e, 0x406: 0x4f, + 0x408: 0x50, 0x409: 0x51, 0x40c: 0x52, 0x40d: 0x53, 0x40e: 0x54, 0x40f: 0x55, + 0x410: 0x3a, 0x411: 0x56, 0x412: 0x0e, 0x413: 0x57, 0x414: 0x58, 0x415: 0x59, 0x416: 0x5a, 0x417: 0x5b, + 0x418: 0x0e, 0x419: 0x5c, 0x41a: 0x0e, 0x41b: 0x5d, + 0x424: 0x5e, 0x425: 0x5f, 0x426: 0x60, 0x427: 0x61, // Block 0x11, offset 0x440 0x456: 0x0b, 0x457: 0x06, 0x458: 0x0c, 0x45b: 0x0d, 0x45f: 0x0e, @@ -1100,7 +1132,7 @@ var widthIndex = [1408]uint8{ 0x4e0: 0x08, 0x4e1: 0x08, 0x4e2: 0x08, 0x4e3: 0x08, 0x4e4: 0x08, 0x4e5: 0x08, 0x4e6: 0x08, 0x4e7: 0x08, 0x4e8: 0x08, 0x4e9: 0x08, 0x4ea: 0x08, 0x4eb: 0x08, 0x4ec: 0x08, 0x4ed: 0x08, 0x4ee: 0x08, 0x4ef: 0x08, 0x4f0: 0x08, 0x4f1: 0x08, 0x4f2: 0x08, 0x4f3: 0x08, 0x4f4: 0x08, 0x4f5: 0x08, 0x4f6: 0x08, 0x4f7: 0x08, - 0x4f8: 0x08, 0x4f9: 0x08, 0x4fa: 0x08, 0x4fb: 0x08, 0x4fc: 0x08, 0x4fd: 0x08, 0x4fe: 0x08, 0x4ff: 0x60, + 0x4f8: 0x08, 0x4f9: 0x08, 0x4fa: 0x08, 0x4fb: 0x08, 0x4fc: 0x08, 0x4fd: 0x08, 0x4fe: 0x08, 0x4ff: 0x62, // Block 0x14, offset 0x500 0x520: 0x10, 0x530: 0x09, 0x531: 0x09, 0x532: 0x09, 0x533: 0x09, 0x534: 0x09, 0x535: 0x09, 0x536: 0x09, 0x537: 0x09, @@ -1281,4 +1313,4 @@ var inverseData = [150][4]byte{ {0x03, 0xe2, 0x97, 0x25}, } -// Total table size 14680 bytes (14KiB) +// Total table size 14936 bytes (14KiB) diff --git a/vendor/github.com/google/go-querystring/LICENSE b/vendor/gopkg.in/inf.v0/LICENSE similarity index 93% rename from vendor/github.com/google/go-querystring/LICENSE rename to vendor/gopkg.in/inf.v0/LICENSE index ae121a1e4..87a5cede3 100644 --- a/vendor/github.com/google/go-querystring/LICENSE +++ b/vendor/gopkg.in/inf.v0/LICENSE @@ -1,4 +1,5 @@ -Copyright (c) 2013 Google. All rights reserved. +Copyright (c) 2012 Péter Surányi. Portions Copyright (c) 2009 The Go +Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/gopkg.in/inf.v0/benchmark_test.go b/vendor/gopkg.in/inf.v0/benchmark_test.go new file mode 100644 index 000000000..27071da0e --- /dev/null +++ b/vendor/gopkg.in/inf.v0/benchmark_test.go @@ -0,0 +1,210 @@ +package inf + +import ( + "fmt" + "math/big" + "math/rand" + "sync" + "testing" +) + +const maxcap = 1024 * 1024 +const bits = 256 +const maxscale = 32 + +var once sync.Once + +var decInput [][2]Dec +var intInput [][2]big.Int + +var initBench = func() { + decInput = make([][2]Dec, maxcap) + intInput = make([][2]big.Int, maxcap) + max := new(big.Int).Lsh(big.NewInt(1), bits) + r := rand.New(rand.NewSource(0)) + for i := 0; i < cap(decInput); i++ { + decInput[i][0].SetUnscaledBig(new(big.Int).Rand(r, max)). + SetScale(Scale(r.Int31n(int32(2*maxscale-1)) - int32(maxscale))) + decInput[i][1].SetUnscaledBig(new(big.Int).Rand(r, max)). + SetScale(Scale(r.Int31n(int32(2*maxscale-1)) - int32(maxscale))) + } + for i := 0; i < cap(intInput); i++ { + intInput[i][0].Rand(r, max) + intInput[i][1].Rand(r, max) + } +} + +func doBenchmarkDec1(b *testing.B, f func(z *Dec)) { + once.Do(initBench) + b.ResetTimer() + b.StartTimer() + for i := 0; i < b.N; i++ { + f(&decInput[i%maxcap][0]) + } +} + +func doBenchmarkDec2(b *testing.B, f func(x, y *Dec)) { + once.Do(initBench) + b.ResetTimer() + b.StartTimer() + for i := 0; i < b.N; i++ { + f(&decInput[i%maxcap][0], &decInput[i%maxcap][1]) + } +} + +func doBenchmarkInt1(b *testing.B, f func(z *big.Int)) { + once.Do(initBench) + b.ResetTimer() + b.StartTimer() + for i := 0; i < b.N; i++ { + f(&intInput[i%maxcap][0]) + } +} + +func doBenchmarkInt2(b *testing.B, f func(x, y *big.Int)) { + once.Do(initBench) + b.ResetTimer() + b.StartTimer() + for i := 0; i < b.N; i++ { + f(&intInput[i%maxcap][0], &intInput[i%maxcap][1]) + } +} + +func Benchmark_Dec_String(b *testing.B) { + doBenchmarkDec1(b, func(x *Dec) { + x.String() + }) +} + +func Benchmark_Dec_StringScan(b *testing.B) { + doBenchmarkDec1(b, func(x *Dec) { + s := x.String() + d := new(Dec) + fmt.Sscan(s, d) + }) +} + +func Benchmark_Dec_GobEncode(b *testing.B) { + doBenchmarkDec1(b, func(x *Dec) { + x.GobEncode() + }) +} + +func Benchmark_Dec_GobEnDecode(b *testing.B) { + doBenchmarkDec1(b, func(x *Dec) { + g, _ := x.GobEncode() + new(Dec).GobDecode(g) + }) +} + +func Benchmark_Dec_Add(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + ys := y.Scale() + y.SetScale(x.Scale()) + _ = new(Dec).Add(x, y) + y.SetScale(ys) + }) +} + +func Benchmark_Dec_AddMixed(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + _ = new(Dec).Add(x, y) + }) +} + +func Benchmark_Dec_Sub(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + ys := y.Scale() + y.SetScale(x.Scale()) + _ = new(Dec).Sub(x, y) + y.SetScale(ys) + }) +} + +func Benchmark_Dec_SubMixed(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + _ = new(Dec).Sub(x, y) + }) +} + +func Benchmark_Dec_Mul(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + _ = new(Dec).Mul(x, y) + }) +} + +func Benchmark_Dec_Mul_QuoExact(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + v := new(Dec).Mul(x, y) + _ = new(Dec).QuoExact(v, y) + }) +} + +func Benchmark_Dec_QuoRound_Fixed_Down(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + _ = new(Dec).QuoRound(x, y, 0, RoundDown) + }) +} + +func Benchmark_Dec_QuoRound_Fixed_HalfUp(b *testing.B) { + doBenchmarkDec2(b, func(x, y *Dec) { + _ = new(Dec).QuoRound(x, y, 0, RoundHalfUp) + }) +} + +func Benchmark_Int_String(b *testing.B) { + doBenchmarkInt1(b, func(x *big.Int) { + x.String() + }) +} + +func Benchmark_Int_StringScan(b *testing.B) { + doBenchmarkInt1(b, func(x *big.Int) { + s := x.String() + d := new(big.Int) + fmt.Sscan(s, d) + }) +} + +func Benchmark_Int_GobEncode(b *testing.B) { + doBenchmarkInt1(b, func(x *big.Int) { + x.GobEncode() + }) +} + +func Benchmark_Int_GobEnDecode(b *testing.B) { + doBenchmarkInt1(b, func(x *big.Int) { + g, _ := x.GobEncode() + new(big.Int).GobDecode(g) + }) +} + +func Benchmark_Int_Add(b *testing.B) { + doBenchmarkInt2(b, func(x, y *big.Int) { + _ = new(big.Int).Add(x, y) + }) +} + +func Benchmark_Int_Sub(b *testing.B) { + doBenchmarkInt2(b, func(x, y *big.Int) { + _ = new(big.Int).Sub(x, y) + }) +} + +func Benchmark_Int_Mul(b *testing.B) { + doBenchmarkInt2(b, func(x, y *big.Int) { + _ = new(big.Int).Mul(x, y) + }) +} + +func Benchmark_Int_Quo(b *testing.B) { + doBenchmarkInt2(b, func(x, y *big.Int) { + _ = new(big.Int).Quo(x, y) + }) +} + +func Benchmark_Int_QuoRem(b *testing.B) { + doBenchmarkInt2(b, func(x, y *big.Int) { + _, _ = new(big.Int).QuoRem(x, y, new(big.Int)) + }) +} diff --git a/vendor/gopkg.in/inf.v0/dec.go b/vendor/gopkg.in/inf.v0/dec.go new file mode 100644 index 000000000..3b4afedf1 --- /dev/null +++ b/vendor/gopkg.in/inf.v0/dec.go @@ -0,0 +1,615 @@ +// Package inf (type inf.Dec) implements "infinite-precision" decimal +// arithmetic. +// "Infinite precision" describes two characteristics: practically unlimited +// precision for decimal number representation and no support for calculating +// with any specific fixed precision. +// (Although there is no practical limit on precision, inf.Dec can only +// represent finite decimals.) +// +// This package is currently in experimental stage and the API may change. +// +// This package does NOT support: +// - rounding to specific precisions (as opposed to specific decimal positions) +// - the notion of context (each rounding must be explicit) +// - NaN and Inf values, and distinguishing between positive and negative zero +// - conversions to and from float32/64 types +// +// Features considered for possible addition: +// + formatting options +// + Exp method +// + combined operations such as AddRound/MulAdd etc +// + exchanging data in decimal32/64/128 formats +// +package inf // import "gopkg.in/inf.v0" + +// TODO: +// - avoid excessive deep copying (quo and rounders) + +import ( + "fmt" + "io" + "math/big" + "strings" +) + +// A Dec represents a signed arbitrary-precision decimal. +// It is a combination of a sign, an arbitrary-precision integer coefficient +// value, and a signed fixed-precision exponent value. +// The sign and the coefficient value are handled together as a signed value +// and referred to as the unscaled value. +// (Positive and negative zero values are not distinguished.) +// Since the exponent is most commonly non-positive, it is handled in negated +// form and referred to as scale. +// +// The mathematical value of a Dec equals: +// +// unscaled * 10**(-scale) +// +// Note that different Dec representations may have equal mathematical values. +// +// unscaled scale String() +// ------------------------- +// 0 0 "0" +// 0 2 "0.00" +// 0 -2 "0" +// 1 0 "1" +// 100 2 "1.00" +// 10 0 "10" +// 1 -1 "10" +// +// The zero value for a Dec represents the value 0 with scale 0. +// +// Operations are typically performed through the *Dec type. +// The semantics of the assignment operation "=" for "bare" Dec values is +// undefined and should not be relied on. +// +// Methods are typically of the form: +// +// func (z *Dec) Op(x, y *Dec) *Dec +// +// and implement operations z = x Op y with the result as receiver; if it +// is one of the operands it may be overwritten (and its memory reused). +// To enable chaining of operations, the result is also returned. Methods +// returning a result other than *Dec take one of the operands as the receiver. +// +// A "bare" Quo method (quotient / division operation) is not provided, as the +// result is not always a finite decimal and thus in general cannot be +// represented as a Dec. +// Instead, in the common case when rounding is (potentially) necessary, +// QuoRound should be used with a Scale and a Rounder. +// QuoExact or QuoRound with RoundExact can be used in the special cases when it +// is known that the result is always a finite decimal. +// +type Dec struct { + unscaled big.Int + scale Scale +} + +// Scale represents the type used for the scale of a Dec. +type Scale int32 + +const scaleSize = 4 // bytes in a Scale value + +// Scaler represents a method for obtaining the scale to use for the result of +// an operation on x and y. +type scaler interface { + Scale(x *Dec, y *Dec) Scale +} + +var bigInt = [...]*big.Int{ + big.NewInt(0), big.NewInt(1), big.NewInt(2), big.NewInt(3), big.NewInt(4), + big.NewInt(5), big.NewInt(6), big.NewInt(7), big.NewInt(8), big.NewInt(9), + big.NewInt(10), +} + +var exp10cache [64]big.Int = func() [64]big.Int { + e10, e10i := [64]big.Int{}, bigInt[1] + for i, _ := range e10 { + e10[i].Set(e10i) + e10i = new(big.Int).Mul(e10i, bigInt[10]) + } + return e10 +}() + +// NewDec allocates and returns a new Dec set to the given int64 unscaled value +// and scale. +func NewDec(unscaled int64, scale Scale) *Dec { + return new(Dec).SetUnscaled(unscaled).SetScale(scale) +} + +// NewDecBig allocates and returns a new Dec set to the given *big.Int unscaled +// value and scale. +func NewDecBig(unscaled *big.Int, scale Scale) *Dec { + return new(Dec).SetUnscaledBig(unscaled).SetScale(scale) +} + +// Scale returns the scale of x. +func (x *Dec) Scale() Scale { + return x.scale +} + +// Unscaled returns the unscaled value of x for u and true for ok when the +// unscaled value can be represented as int64; otherwise it returns an undefined +// int64 value for u and false for ok. Use x.UnscaledBig().Int64() to avoid +// checking the validity of the value when the check is known to be redundant. +func (x *Dec) Unscaled() (u int64, ok bool) { + u = x.unscaled.Int64() + var i big.Int + ok = i.SetInt64(u).Cmp(&x.unscaled) == 0 + return +} + +// UnscaledBig returns the unscaled value of x as *big.Int. +func (x *Dec) UnscaledBig() *big.Int { + return &x.unscaled +} + +// SetScale sets the scale of z, with the unscaled value unchanged, and returns +// z. +// The mathematical value of the Dec changes as if it was multiplied by +// 10**(oldscale-scale). +func (z *Dec) SetScale(scale Scale) *Dec { + z.scale = scale + return z +} + +// SetUnscaled sets the unscaled value of z, with the scale unchanged, and +// returns z. +func (z *Dec) SetUnscaled(unscaled int64) *Dec { + z.unscaled.SetInt64(unscaled) + return z +} + +// SetUnscaledBig sets the unscaled value of z, with the scale unchanged, and +// returns z. +func (z *Dec) SetUnscaledBig(unscaled *big.Int) *Dec { + z.unscaled.Set(unscaled) + return z +} + +// Set sets z to the value of x and returns z. +// It does nothing if z == x. +func (z *Dec) Set(x *Dec) *Dec { + if z != x { + z.SetUnscaledBig(x.UnscaledBig()) + z.SetScale(x.Scale()) + } + return z +} + +// Sign returns: +// +// -1 if x < 0 +// 0 if x == 0 +// +1 if x > 0 +// +func (x *Dec) Sign() int { + return x.UnscaledBig().Sign() +} + +// Neg sets z to -x and returns z. +func (z *Dec) Neg(x *Dec) *Dec { + z.SetScale(x.Scale()) + z.UnscaledBig().Neg(x.UnscaledBig()) + return z +} + +// Cmp compares x and y and returns: +// +// -1 if x < y +// 0 if x == y +// +1 if x > y +// +func (x *Dec) Cmp(y *Dec) int { + xx, yy := upscale(x, y) + return xx.UnscaledBig().Cmp(yy.UnscaledBig()) +} + +// Abs sets z to |x| (the absolute value of x) and returns z. +func (z *Dec) Abs(x *Dec) *Dec { + z.SetScale(x.Scale()) + z.UnscaledBig().Abs(x.UnscaledBig()) + return z +} + +// Add sets z to the sum x+y and returns z. +// The scale of z is the greater of the scales of x and y. +func (z *Dec) Add(x, y *Dec) *Dec { + xx, yy := upscale(x, y) + z.SetScale(xx.Scale()) + z.UnscaledBig().Add(xx.UnscaledBig(), yy.UnscaledBig()) + return z +} + +// Sub sets z to the difference x-y and returns z. +// The scale of z is the greater of the scales of x and y. +func (z *Dec) Sub(x, y *Dec) *Dec { + xx, yy := upscale(x, y) + z.SetScale(xx.Scale()) + z.UnscaledBig().Sub(xx.UnscaledBig(), yy.UnscaledBig()) + return z +} + +// Mul sets z to the product x*y and returns z. +// The scale of z is the sum of the scales of x and y. +func (z *Dec) Mul(x, y *Dec) *Dec { + z.SetScale(x.Scale() + y.Scale()) + z.UnscaledBig().Mul(x.UnscaledBig(), y.UnscaledBig()) + return z +} + +// Round sets z to the value of x rounded to Scale s using Rounder r, and +// returns z. +func (z *Dec) Round(x *Dec, s Scale, r Rounder) *Dec { + return z.QuoRound(x, NewDec(1, 0), s, r) +} + +// QuoRound sets z to the quotient x/y, rounded using the given Rounder to the +// specified scale. +// +// If the rounder is RoundExact but the result can not be expressed exactly at +// the specified scale, QuoRound returns nil, and the value of z is undefined. +// +// There is no corresponding Div method; the equivalent can be achieved through +// the choice of Rounder used. +// +func (z *Dec) QuoRound(x, y *Dec, s Scale, r Rounder) *Dec { + return z.quo(x, y, sclr{s}, r) +} + +func (z *Dec) quo(x, y *Dec, s scaler, r Rounder) *Dec { + scl := s.Scale(x, y) + var zzz *Dec + if r.UseRemainder() { + zz, rA, rB := new(Dec).quoRem(x, y, scl, true, new(big.Int), new(big.Int)) + zzz = r.Round(new(Dec), zz, rA, rB) + } else { + zz, _, _ := new(Dec).quoRem(x, y, scl, false, nil, nil) + zzz = r.Round(new(Dec), zz, nil, nil) + } + if zzz == nil { + return nil + } + return z.Set(zzz) +} + +// QuoExact sets z to the quotient x/y and returns z when x/y is a finite +// decimal. Otherwise it returns nil and the value of z is undefined. +// +// The scale of a non-nil result is "x.Scale() - y.Scale()" or greater; it is +// calculated so that the remainder will be zero whenever x/y is a finite +// decimal. +func (z *Dec) QuoExact(x, y *Dec) *Dec { + return z.quo(x, y, scaleQuoExact{}, RoundExact) +} + +// quoRem sets z to the quotient x/y with the scale s, and if useRem is true, +// it sets remNum and remDen to the numerator and denominator of the remainder. +// It returns z, remNum and remDen. +// +// The remainder is normalized to the range -1 < r < 1 to simplify rounding; +// that is, the results satisfy the following equation: +// +// x / y = z + (remNum/remDen) * 10**(-z.Scale()) +// +// See Rounder for more details about rounding. +// +func (z *Dec) quoRem(x, y *Dec, s Scale, useRem bool, + remNum, remDen *big.Int) (*Dec, *big.Int, *big.Int) { + // difference (required adjustment) compared to "canonical" result scale + shift := s - (x.Scale() - y.Scale()) + // pointers to adjusted unscaled dividend and divisor + var ix, iy *big.Int + switch { + case shift > 0: + // increased scale: decimal-shift dividend left + ix = new(big.Int).Mul(x.UnscaledBig(), exp10(shift)) + iy = y.UnscaledBig() + case shift < 0: + // decreased scale: decimal-shift divisor left + ix = x.UnscaledBig() + iy = new(big.Int).Mul(y.UnscaledBig(), exp10(-shift)) + default: + ix = x.UnscaledBig() + iy = y.UnscaledBig() + } + // save a copy of iy in case it to be overwritten with the result + iy2 := iy + if iy == z.UnscaledBig() { + iy2 = new(big.Int).Set(iy) + } + // set scale + z.SetScale(s) + // set unscaled + if useRem { + // Int division + _, intr := z.UnscaledBig().QuoRem(ix, iy, new(big.Int)) + // set remainder + remNum.Set(intr) + remDen.Set(iy2) + } else { + z.UnscaledBig().Quo(ix, iy) + } + return z, remNum, remDen +} + +type sclr struct{ s Scale } + +func (s sclr) Scale(x, y *Dec) Scale { + return s.s +} + +type scaleQuoExact struct{} + +func (sqe scaleQuoExact) Scale(x, y *Dec) Scale { + rem := new(big.Rat).SetFrac(x.UnscaledBig(), y.UnscaledBig()) + f2, f5 := factor2(rem.Denom()), factor(rem.Denom(), bigInt[5]) + var f10 Scale + if f2 > f5 { + f10 = Scale(f2) + } else { + f10 = Scale(f5) + } + return x.Scale() - y.Scale() + f10 +} + +func factor(n *big.Int, p *big.Int) int { + // could be improved for large factors + d, f := n, 0 + for { + dd, dm := new(big.Int).DivMod(d, p, new(big.Int)) + if dm.Sign() == 0 { + f++ + d = dd + } else { + break + } + } + return f +} + +func factor2(n *big.Int) int { + // could be improved for large factors + f := 0 + for ; n.Bit(f) == 0; f++ { + } + return f +} + +func upscale(a, b *Dec) (*Dec, *Dec) { + if a.Scale() == b.Scale() { + return a, b + } + if a.Scale() > b.Scale() { + bb := b.rescale(a.Scale()) + return a, bb + } + aa := a.rescale(b.Scale()) + return aa, b +} + +func exp10(x Scale) *big.Int { + if int(x) < len(exp10cache) { + return &exp10cache[int(x)] + } + return new(big.Int).Exp(bigInt[10], big.NewInt(int64(x)), nil) +} + +func (x *Dec) rescale(newScale Scale) *Dec { + shift := newScale - x.Scale() + switch { + case shift < 0: + e := exp10(-shift) + return NewDecBig(new(big.Int).Quo(x.UnscaledBig(), e), newScale) + case shift > 0: + e := exp10(shift) + return NewDecBig(new(big.Int).Mul(x.UnscaledBig(), e), newScale) + } + return x +} + +var zeros = []byte("00000000000000000000000000000000" + + "00000000000000000000000000000000") +var lzeros = Scale(len(zeros)) + +func appendZeros(s []byte, n Scale) []byte { + for i := Scale(0); i < n; i += lzeros { + if n > i+lzeros { + s = append(s, zeros...) + } else { + s = append(s, zeros[0:n-i]...) + } + } + return s +} + +func (x *Dec) String() string { + if x == nil { + return "" + } + scale := x.Scale() + s := []byte(x.UnscaledBig().String()) + if scale <= 0 { + if scale != 0 && x.unscaled.Sign() != 0 { + s = appendZeros(s, -scale) + } + return string(s) + } + negbit := Scale(-((x.Sign() - 1) / 2)) + // scale > 0 + lens := Scale(len(s)) + if lens-negbit <= scale { + ss := make([]byte, 0, scale+2) + if negbit == 1 { + ss = append(ss, '-') + } + ss = append(ss, '0', '.') + ss = appendZeros(ss, scale-lens+negbit) + ss = append(ss, s[negbit:]...) + return string(ss) + } + // lens > scale + ss := make([]byte, 0, lens+1) + ss = append(ss, s[:lens-scale]...) + ss = append(ss, '.') + ss = append(ss, s[lens-scale:]...) + return string(ss) +} + +// Format is a support routine for fmt.Formatter. It accepts the decimal +// formats 'd' and 'f', and handles both equivalently. +// Width, precision, flags and bases 2, 8, 16 are not supported. +func (x *Dec) Format(s fmt.State, ch rune) { + if ch != 'd' && ch != 'f' && ch != 'v' && ch != 's' { + fmt.Fprintf(s, "%%!%c(dec.Dec=%s)", ch, x.String()) + return + } + fmt.Fprintf(s, x.String()) +} + +func (z *Dec) scan(r io.RuneScanner) (*Dec, error) { + unscaled := make([]byte, 0, 256) // collects chars of unscaled as bytes + dp, dg := -1, -1 // indexes of decimal point, first digit +loop: + for { + ch, _, err := r.ReadRune() + if err == io.EOF { + break loop + } + if err != nil { + return nil, err + } + switch { + case ch == '+' || ch == '-': + if len(unscaled) > 0 || dp >= 0 { // must be first character + r.UnreadRune() + break loop + } + case ch == '.': + if dp >= 0 { + r.UnreadRune() + break loop + } + dp = len(unscaled) + continue // don't add to unscaled + case ch >= '0' && ch <= '9': + if dg == -1 { + dg = len(unscaled) + } + default: + r.UnreadRune() + break loop + } + unscaled = append(unscaled, byte(ch)) + } + if dg == -1 { + return nil, fmt.Errorf("no digits read") + } + if dp >= 0 { + z.SetScale(Scale(len(unscaled) - dp)) + } else { + z.SetScale(0) + } + _, ok := z.UnscaledBig().SetString(string(unscaled), 10) + if !ok { + return nil, fmt.Errorf("invalid decimal: %s", string(unscaled)) + } + return z, nil +} + +// SetString sets z to the value of s, interpreted as a decimal (base 10), +// and returns z and a boolean indicating success. The scale of z is the +// number of digits after the decimal point (including any trailing 0s), +// or 0 if there is no decimal point. If SetString fails, the value of z +// is undefined but the returned value is nil. +func (z *Dec) SetString(s string) (*Dec, bool) { + r := strings.NewReader(s) + _, err := z.scan(r) + if err != nil { + return nil, false + } + _, _, err = r.ReadRune() + if err != io.EOF { + return nil, false + } + // err == io.EOF => scan consumed all of s + return z, true +} + +// Scan is a support routine for fmt.Scanner; it sets z to the value of +// the scanned number. It accepts the decimal formats 'd' and 'f', and +// handles both equivalently. Bases 2, 8, 16 are not supported. +// The scale of z is the number of digits after the decimal point +// (including any trailing 0s), or 0 if there is no decimal point. +func (z *Dec) Scan(s fmt.ScanState, ch rune) error { + if ch != 'd' && ch != 'f' && ch != 's' && ch != 'v' { + return fmt.Errorf("Dec.Scan: invalid verb '%c'", ch) + } + s.SkipSpace() + _, err := z.scan(s) + return err +} + +// Gob encoding version +const decGobVersion byte = 1 + +func scaleBytes(s Scale) []byte { + buf := make([]byte, scaleSize) + i := scaleSize + for j := 0; j < scaleSize; j++ { + i-- + buf[i] = byte(s) + s >>= 8 + } + return buf +} + +func scale(b []byte) (s Scale) { + for j := 0; j < scaleSize; j++ { + s <<= 8 + s |= Scale(b[j]) + } + return +} + +// GobEncode implements the gob.GobEncoder interface. +func (x *Dec) GobEncode() ([]byte, error) { + buf, err := x.UnscaledBig().GobEncode() + if err != nil { + return nil, err + } + buf = append(append(buf, scaleBytes(x.Scale())...), decGobVersion) + return buf, nil +} + +// GobDecode implements the gob.GobDecoder interface. +func (z *Dec) GobDecode(buf []byte) error { + if len(buf) == 0 { + return fmt.Errorf("Dec.GobDecode: no data") + } + b := buf[len(buf)-1] + if b != decGobVersion { + return fmt.Errorf("Dec.GobDecode: encoding version %d not supported", b) + } + l := len(buf) - scaleSize - 1 + err := z.UnscaledBig().GobDecode(buf[:l]) + if err != nil { + return err + } + z.SetScale(scale(buf[l : l+scaleSize])) + return nil +} + +// MarshalText implements the encoding.TextMarshaler interface. +func (x *Dec) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +func (z *Dec) UnmarshalText(data []byte) error { + _, ok := z.SetString(string(data)) + if !ok { + return fmt.Errorf("invalid inf.Dec") + } + return nil +} diff --git a/vendor/gopkg.in/inf.v0/dec_go1_2_test.go b/vendor/gopkg.in/inf.v0/dec_go1_2_test.go new file mode 100644 index 000000000..5df0f7b55 --- /dev/null +++ b/vendor/gopkg.in/inf.v0/dec_go1_2_test.go @@ -0,0 +1,33 @@ +// +build go1.2 + +package inf + +import ( + "encoding" + "encoding/json" + "testing" +) + +var _ encoding.TextMarshaler = new(Dec) +var _ encoding.TextUnmarshaler = new(Dec) + +type Obj struct { + Val *Dec +} + +func TestDecJsonMarshalUnmarshal(t *testing.T) { + o := Obj{Val: NewDec(123, 2)} + js, err := json.Marshal(o) + if err != nil { + t.Fatalf("json.Marshal(%v): got %v, want ok", o, err) + } + o2 := &Obj{} + err = json.Unmarshal(js, o2) + if err != nil { + t.Fatalf("json.Unmarshal(%#q): got %v, want ok", js, err) + } + if o.Val.Scale() != o2.Val.Scale() || + o.Val.UnscaledBig().Cmp(o2.Val.UnscaledBig()) != 0 { + t.Fatalf("json.Unmarshal(json.Marshal(%v)): want %v, got %v", o, o, o2) + } +} diff --git a/vendor/gopkg.in/inf.v0/dec_internal_test.go b/vendor/gopkg.in/inf.v0/dec_internal_test.go new file mode 100644 index 000000000..d4fbe3e5b --- /dev/null +++ b/vendor/gopkg.in/inf.v0/dec_internal_test.go @@ -0,0 +1,40 @@ +package inf + +import ( + "math/big" + "testing" +) + +var decQuoRemZZZ = []struct { + z, x, y *Dec + r *big.Rat + srA, srB int +}{ + // basic examples + {NewDec(1, 0), NewDec(2, 0), NewDec(2, 0), big.NewRat(0, 1), 0, 1}, + {NewDec(15, 1), NewDec(3, 0), NewDec(2, 0), big.NewRat(0, 1), 0, 1}, + {NewDec(1, 1), NewDec(1, 0), NewDec(10, 0), big.NewRat(0, 1), 0, 1}, + {NewDec(0, 0), NewDec(2, 0), NewDec(3, 0), big.NewRat(2, 3), 1, 1}, + {NewDec(0, 0), NewDec(2, 0), NewDec(6, 0), big.NewRat(1, 3), 1, 1}, + {NewDec(1, 1), NewDec(2, 0), NewDec(12, 0), big.NewRat(2, 3), 1, 1}, + + // examples from the Go Language Specification + {NewDec(1, 0), NewDec(5, 0), NewDec(3, 0), big.NewRat(2, 3), 1, 1}, + {NewDec(-1, 0), NewDec(-5, 0), NewDec(3, 0), big.NewRat(-2, 3), -1, 1}, + {NewDec(-1, 0), NewDec(5, 0), NewDec(-3, 0), big.NewRat(-2, 3), 1, -1}, + {NewDec(1, 0), NewDec(-5, 0), NewDec(-3, 0), big.NewRat(2, 3), -1, -1}, +} + +func TestDecQuoRem(t *testing.T) { + for i, a := range decQuoRemZZZ { + z, rA, rB := new(Dec), new(big.Int), new(big.Int) + s := scaleQuoExact{}.Scale(a.x, a.y) + z.quoRem(a.x, a.y, s, true, rA, rB) + if a.z.Cmp(z) != 0 || a.r.Cmp(new(big.Rat).SetFrac(rA, rB)) != 0 { + t.Errorf("#%d QuoRemZZZ got %v, %v, %v; expected %v, %v", i, z, rA, rB, a.z, a.r) + } + if a.srA != rA.Sign() || a.srB != rB.Sign() { + t.Errorf("#%d QuoRemZZZ wrong signs, got %v, %v; expected %v, %v", i, rA.Sign(), rB.Sign(), a.srA, a.srB) + } + } +} diff --git a/vendor/gopkg.in/inf.v0/dec_test.go b/vendor/gopkg.in/inf.v0/dec_test.go new file mode 100644 index 000000000..e4b09b3fd --- /dev/null +++ b/vendor/gopkg.in/inf.v0/dec_test.go @@ -0,0 +1,379 @@ +package inf_test + +import ( + "bytes" + "encoding/gob" + "fmt" + "math/big" + "strings" + "testing" + + "gopkg.in/inf.v0" +) + +type decFunZZ func(z, x, y *inf.Dec) *inf.Dec +type decArgZZ struct { + z, x, y *inf.Dec +} + +var decSumZZ = []decArgZZ{ + {inf.NewDec(0, 0), inf.NewDec(0, 0), inf.NewDec(0, 0)}, + {inf.NewDec(1, 0), inf.NewDec(1, 0), inf.NewDec(0, 0)}, + {inf.NewDec(1111111110, 0), inf.NewDec(123456789, 0), inf.NewDec(987654321, 0)}, + {inf.NewDec(-1, 0), inf.NewDec(-1, 0), inf.NewDec(0, 0)}, + {inf.NewDec(864197532, 0), inf.NewDec(-123456789, 0), inf.NewDec(987654321, 0)}, + {inf.NewDec(-1111111110, 0), inf.NewDec(-123456789, 0), inf.NewDec(-987654321, 0)}, + {inf.NewDec(12, 2), inf.NewDec(1, 1), inf.NewDec(2, 2)}, +} + +var decProdZZ = []decArgZZ{ + {inf.NewDec(0, 0), inf.NewDec(0, 0), inf.NewDec(0, 0)}, + {inf.NewDec(0, 0), inf.NewDec(1, 0), inf.NewDec(0, 0)}, + {inf.NewDec(1, 0), inf.NewDec(1, 0), inf.NewDec(1, 0)}, + {inf.NewDec(-991*991, 0), inf.NewDec(991, 0), inf.NewDec(-991, 0)}, + {inf.NewDec(2, 3), inf.NewDec(1, 1), inf.NewDec(2, 2)}, + {inf.NewDec(2, -3), inf.NewDec(1, -1), inf.NewDec(2, -2)}, + {inf.NewDec(2, 3), inf.NewDec(1, 1), inf.NewDec(2, 2)}, +} + +func TestDecSignZ(t *testing.T) { + var zero inf.Dec + for _, a := range decSumZZ { + s := a.z.Sign() + e := a.z.Cmp(&zero) + if s != e { + t.Errorf("got %d; want %d for z = %v", s, e, a.z) + } + } +} + +func TestDecAbsZ(t *testing.T) { + var zero inf.Dec + for _, a := range decSumZZ { + var z inf.Dec + z.Abs(a.z) + var e inf.Dec + e.Set(a.z) + if e.Cmp(&zero) < 0 { + e.Sub(&zero, &e) + } + if z.Cmp(&e) != 0 { + t.Errorf("got z = %v; want %v", z, e) + } + } +} + +func testDecFunZZ(t *testing.T, msg string, f decFunZZ, a decArgZZ) { + var z inf.Dec + f(&z, a.x, a.y) + if (&z).Cmp(a.z) != 0 { + t.Errorf("%s%+v\n\tgot z = %v; want %v", msg, a, &z, a.z) + } +} + +func TestDecSumZZ(t *testing.T) { + AddZZ := func(z, x, y *inf.Dec) *inf.Dec { return z.Add(x, y) } + SubZZ := func(z, x, y *inf.Dec) *inf.Dec { return z.Sub(x, y) } + for _, a := range decSumZZ { + arg := a + testDecFunZZ(t, "AddZZ", AddZZ, arg) + + arg = decArgZZ{a.z, a.y, a.x} + testDecFunZZ(t, "AddZZ symmetric", AddZZ, arg) + + arg = decArgZZ{a.x, a.z, a.y} + testDecFunZZ(t, "SubZZ", SubZZ, arg) + + arg = decArgZZ{a.y, a.z, a.x} + testDecFunZZ(t, "SubZZ symmetric", SubZZ, arg) + } +} + +func TestDecProdZZ(t *testing.T) { + MulZZ := func(z, x, y *inf.Dec) *inf.Dec { return z.Mul(x, y) } + for _, a := range decProdZZ { + arg := a + testDecFunZZ(t, "MulZZ", MulZZ, arg) + + arg = decArgZZ{a.z, a.y, a.x} + testDecFunZZ(t, "MulZZ symmetric", MulZZ, arg) + } +} + +var decUnscaledTests = []struct { + d *inf.Dec + u int64 // ignored when ok == false + ok bool +}{ + {new(inf.Dec), 0, true}, + {inf.NewDec(-1<<63, 0), -1 << 63, true}, + {inf.NewDec(-(-1<<63 + 1), 0), -(-1<<63 + 1), true}, + {new(inf.Dec).Neg(inf.NewDec(-1<<63, 0)), 0, false}, + {new(inf.Dec).Sub(inf.NewDec(-1<<63, 0), inf.NewDec(1, 0)), 0, false}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), 0, false}, +} + +func TestDecUnscaled(t *testing.T) { + for i, tt := range decUnscaledTests { + u, ok := tt.d.Unscaled() + if ok != tt.ok { + t.Errorf("#%d Unscaled: got %v, expected %v", i, ok, tt.ok) + } else if ok && u != tt.u { + t.Errorf("#%d Unscaled: got %v, expected %v", i, u, tt.u) + } + } +} + +var decRoundTests = [...]struct { + in *inf.Dec + s inf.Scale + r inf.Rounder + exp *inf.Dec +}{ + {inf.NewDec(123424999999999993, 15), 2, inf.RoundHalfUp, inf.NewDec(12342, 2)}, + {inf.NewDec(123425000000000001, 15), 2, inf.RoundHalfUp, inf.NewDec(12343, 2)}, + {inf.NewDec(123424999999999993, 15), 15, inf.RoundHalfUp, inf.NewDec(123424999999999993, 15)}, + {inf.NewDec(123424999999999993, 15), 16, inf.RoundHalfUp, inf.NewDec(1234249999999999930, 16)}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), -1, inf.RoundHalfUp, inf.NewDec(1844674407370955162, -1)}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), -2, inf.RoundHalfUp, inf.NewDec(184467440737095516, -2)}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), -3, inf.RoundHalfUp, inf.NewDec(18446744073709552, -3)}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), -4, inf.RoundHalfUp, inf.NewDec(1844674407370955, -4)}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), -5, inf.RoundHalfUp, inf.NewDec(184467440737096, -5)}, + {inf.NewDecBig(new(big.Int).Lsh(big.NewInt(1), 64), 0), -6, inf.RoundHalfUp, inf.NewDec(18446744073710, -6)}, +} + +func TestDecRound(t *testing.T) { + for i, tt := range decRoundTests { + z := new(inf.Dec).Round(tt.in, tt.s, tt.r) + if tt.exp.Cmp(z) != 0 { + t.Errorf("#%d Round got %v; expected %v", i, z, tt.exp) + } + } +} + +var decStringTests = []struct { + in string + out string + val int64 + scale inf.Scale // skip SetString if negative + ok bool + scanOk bool +}{ + {in: "", ok: false, scanOk: false}, + {in: "a", ok: false, scanOk: false}, + {in: "z", ok: false, scanOk: false}, + {in: "+", ok: false, scanOk: false}, + {in: "-", ok: false, scanOk: false}, + {in: "g", ok: false, scanOk: false}, + {in: ".", ok: false, scanOk: false}, + {in: ".-0", ok: false, scanOk: false}, + {in: ".+0", ok: false, scanOk: false}, + // Scannable but not SetStringable + {"0b", "ignored", 0, 0, false, true}, + {"0x", "ignored", 0, 0, false, true}, + {"0xg", "ignored", 0, 0, false, true}, + {"0.0g", "ignored", 0, 1, false, true}, + // examples from godoc for Dec + {"0", "0", 0, 0, true, true}, + {"0.00", "0.00", 0, 2, true, true}, + {"ignored", "0", 0, -2, true, false}, + {"1", "1", 1, 0, true, true}, + {"1.00", "1.00", 100, 2, true, true}, + {"10", "10", 10, 0, true, true}, + {"ignored", "10", 1, -1, true, false}, + // other tests + {"+0", "0", 0, 0, true, true}, + {"-0", "0", 0, 0, true, true}, + {"0.0", "0.0", 0, 1, true, true}, + {"0.1", "0.1", 1, 1, true, true}, + {"0.", "0", 0, 0, true, true}, + {"-10", "-10", -1, -1, true, true}, + {"-1", "-1", -1, 0, true, true}, + {"-0.1", "-0.1", -1, 1, true, true}, + {"-0.01", "-0.01", -1, 2, true, true}, + {"+0.", "0", 0, 0, true, true}, + {"-0.", "0", 0, 0, true, true}, + {".0", "0.0", 0, 1, true, true}, + {"+.0", "0.0", 0, 1, true, true}, + {"-.0", "0.0", 0, 1, true, true}, + {"0.0000000000", "0.0000000000", 0, 10, true, true}, + {"0.0000000001", "0.0000000001", 1, 10, true, true}, + {"-0.0000000000", "0.0000000000", 0, 10, true, true}, + {"-0.0000000001", "-0.0000000001", -1, 10, true, true}, + {"-10", "-10", -10, 0, true, true}, + {"+10", "10", 10, 0, true, true}, + {"00", "0", 0, 0, true, true}, + {"023", "23", 23, 0, true, true}, // decimal, not octal + {"-02.3", "-2.3", -23, 1, true, true}, // decimal, not octal +} + +func TestDecGetString(t *testing.T) { + z := new(inf.Dec) + for i, test := range decStringTests { + if !test.ok { + continue + } + z.SetUnscaled(test.val) + z.SetScale(test.scale) + + s := z.String() + if s != test.out { + t.Errorf("#%da got %s; want %s", i, s, test.out) + } + + s = fmt.Sprintf("%d", z) + if s != test.out { + t.Errorf("#%db got %s; want %s", i, s, test.out) + } + } +} + +func TestDecSetString(t *testing.T) { + tmp := new(inf.Dec) + for i, test := range decStringTests { + if test.scale < 0 { + // SetString only supports scale >= 0 + continue + } + // initialize to a non-zero value so that issues with parsing + // 0 are detected + tmp.Set(inf.NewDec(1234567890, 123)) + n1, ok1 := new(inf.Dec).SetString(test.in) + n2, ok2 := tmp.SetString(test.in) + expected := inf.NewDec(test.val, test.scale) + if ok1 != test.ok || ok2 != test.ok { + t.Errorf("#%d (input '%s') ok incorrect (should be %t)", i, test.in, test.ok) + continue + } + if !ok1 { + if n1 != nil { + t.Errorf("#%d (input '%s') n1 != nil", i, test.in) + } + continue + } + if !ok2 { + if n2 != nil { + t.Errorf("#%d (input '%s') n2 != nil", i, test.in) + } + continue + } + + if n1.Cmp(expected) != 0 { + t.Errorf("#%d (input '%s') got: %s want: %d", i, test.in, n1, test.val) + } + if n2.Cmp(expected) != 0 { + t.Errorf("#%d (input '%s') got: %s want: %d", i, test.in, n2, test.val) + } + } +} + +func TestDecScan(t *testing.T) { + tmp := new(inf.Dec) + for i, test := range decStringTests { + if test.scale < 0 { + // SetString only supports scale >= 0 + continue + } + // initialize to a non-zero value so that issues with parsing + // 0 are detected + tmp.Set(inf.NewDec(1234567890, 123)) + n1, n2 := new(inf.Dec), tmp + nn1, err1 := fmt.Sscan(test.in, n1) + nn2, err2 := fmt.Sscan(test.in, n2) + if !test.scanOk { + if err1 == nil || err2 == nil { + t.Errorf("#%d (input '%s') ok incorrect, should be %t", i, test.in, test.scanOk) + } + continue + } + expected := inf.NewDec(test.val, test.scale) + if nn1 != 1 || err1 != nil || nn2 != 1 || err2 != nil { + t.Errorf("#%d (input '%s') error %d %v, %d %v", i, test.in, nn1, err1, nn2, err2) + continue + } + if n1.Cmp(expected) != 0 { + t.Errorf("#%d (input '%s') got: %s want: %d", i, test.in, n1, test.val) + } + if n2.Cmp(expected) != 0 { + t.Errorf("#%d (input '%s') got: %s want: %d", i, test.in, n2, test.val) + } + } +} + +var decScanNextTests = []struct { + in string + ok bool + next rune +}{ + {"", false, 0}, + {"a", false, 'a'}, + {"z", false, 'z'}, + {"+", false, 0}, + {"-", false, 0}, + {"g", false, 'g'}, + {".", false, 0}, + {".-0", false, '-'}, + {".+0", false, '+'}, + {"0b", true, 'b'}, + {"0x", true, 'x'}, + {"0xg", true, 'x'}, + {"0.0g", true, 'g'}, +} + +func TestDecScanNext(t *testing.T) { + for i, test := range decScanNextTests { + rdr := strings.NewReader(test.in) + n1 := new(inf.Dec) + nn1, _ := fmt.Fscan(rdr, n1) + if (test.ok && nn1 == 0) || (!test.ok && nn1 > 0) { + t.Errorf("#%d (input '%s') ok incorrect should be %t", i, test.in, test.ok) + continue + } + r := rune(0) + nn2, err := fmt.Fscanf(rdr, "%c", &r) + if test.next != r { + t.Errorf("#%d (input '%s') next incorrect, got %c should be %c, %d, %v", i, test.in, r, test.next, nn2, err) + } + } +} + +var decGobEncodingTests = []string{ + "0", + "1", + "2", + "10", + "42", + "1234567890", + "298472983472983471903246121093472394872319615612417471234712061", +} + +func TestDecGobEncoding(t *testing.T) { + var medium bytes.Buffer + enc := gob.NewEncoder(&medium) + dec := gob.NewDecoder(&medium) + for i, test := range decGobEncodingTests { + for j := 0; j < 2; j++ { + for k := inf.Scale(-5); k <= 5; k++ { + medium.Reset() // empty buffer for each test case (in case of failures) + stest := test + if j != 0 { + // negative numbers + stest = "-" + test + } + var tx inf.Dec + tx.SetString(stest) + tx.SetScale(k) // test with positive, negative, and zero scale + if err := enc.Encode(&tx); err != nil { + t.Errorf("#%d%c: encoding failed: %s", i, 'a'+j, err) + } + var rx inf.Dec + if err := dec.Decode(&rx); err != nil { + t.Errorf("#%d%c: decoding failed: %s", i, 'a'+j, err) + } + if rx.Cmp(&tx) != 0 { + t.Errorf("#%d%c: transmission failed: got %s want %s", i, 'a'+j, &rx, &tx) + } + } + } + } +} diff --git a/vendor/gopkg.in/inf.v0/example_test.go b/vendor/gopkg.in/inf.v0/example_test.go new file mode 100644 index 000000000..fa1e54d16 --- /dev/null +++ b/vendor/gopkg.in/inf.v0/example_test.go @@ -0,0 +1,62 @@ +package inf_test + +import ( + "fmt" + "log" +) + +import "gopkg.in/inf.v0" + +func ExampleDec_SetString() { + d := new(inf.Dec) + d.SetString("012345.67890") // decimal; leading 0 ignored; trailing 0 kept + fmt.Println(d) + // Output: 12345.67890 +} + +func ExampleDec_Scan() { + // The Scan function is rarely used directly; + // the fmt package recognizes it as an implementation of fmt.Scanner. + d := new(inf.Dec) + _, err := fmt.Sscan("184467440.73709551617", d) + if err != nil { + log.Println("error scanning value:", err) + } else { + fmt.Println(d) + } + // Output: 184467440.73709551617 +} + +func ExampleDec_QuoRound_scale2RoundDown() { + // 10 / 3 is an infinite decimal; it has no exact Dec representation + x, y := inf.NewDec(10, 0), inf.NewDec(3, 0) + // use 2 digits beyond the decimal point, round towards 0 + z := new(inf.Dec).QuoRound(x, y, 2, inf.RoundDown) + fmt.Println(z) + // Output: 3.33 +} + +func ExampleDec_QuoRound_scale2RoundCeil() { + // -42 / 400 is an finite decimal with 3 digits beyond the decimal point + x, y := inf.NewDec(-42, 0), inf.NewDec(400, 0) + // use 2 digits beyond decimal point, round towards positive infinity + z := new(inf.Dec).QuoRound(x, y, 2, inf.RoundCeil) + fmt.Println(z) + // Output: -0.10 +} + +func ExampleDec_QuoExact_ok() { + // 1 / 25 is a finite decimal; it has exact Dec representation + x, y := inf.NewDec(1, 0), inf.NewDec(25, 0) + z := new(inf.Dec).QuoExact(x, y) + fmt.Println(z) + // Output: 0.04 +} + +func ExampleDec_QuoExact_fail() { + // 1 / 3 is an infinite decimal; it has no exact Dec representation + x, y := inf.NewDec(1, 0), inf.NewDec(3, 0) + z := new(inf.Dec).QuoExact(x, y) + fmt.Println(z) + // Output: +} diff --git a/vendor/gopkg.in/inf.v0/rounder.go b/vendor/gopkg.in/inf.v0/rounder.go new file mode 100644 index 000000000..3a97ef529 --- /dev/null +++ b/vendor/gopkg.in/inf.v0/rounder.go @@ -0,0 +1,145 @@ +package inf + +import ( + "math/big" +) + +// Rounder represents a method for rounding the (possibly infinite decimal) +// result of a division to a finite Dec. It is used by Dec.Round() and +// Dec.Quo(). +// +// See the Example for results of using each Rounder with some sample values. +// +type Rounder rounder + +// See http://speleotrove.com/decimal/damodel.html#refround for more detailed +// definitions of these rounding modes. +var ( + RoundDown Rounder // towards 0 + RoundUp Rounder // away from 0 + RoundFloor Rounder // towards -infinity + RoundCeil Rounder // towards +infinity + RoundHalfDown Rounder // to nearest; towards 0 if same distance + RoundHalfUp Rounder // to nearest; away from 0 if same distance + RoundHalfEven Rounder // to nearest; even last digit if same distance +) + +// RoundExact is to be used in the case when rounding is not necessary. +// When used with Quo or Round, it returns the result verbatim when it can be +// expressed exactly with the given precision, and it returns nil otherwise. +// QuoExact is a shorthand for using Quo with RoundExact. +var RoundExact Rounder + +type rounder interface { + + // When UseRemainder() returns true, the Round() method is passed the + // remainder of the division, expressed as the numerator and denominator of + // a rational. + UseRemainder() bool + + // Round sets the rounded value of a quotient to z, and returns z. + // quo is rounded down (truncated towards zero) to the scale obtained from + // the Scaler in Quo(). + // + // When the remainder is not used, remNum and remDen are nil. + // When used, the remainder is normalized between -1 and 1; that is: + // + // -|remDen| < remNum < |remDen| + // + // remDen has the same sign as y, and remNum is zero or has the same sign + // as x. + Round(z, quo *Dec, remNum, remDen *big.Int) *Dec +} + +type rndr struct { + useRem bool + round func(z, quo *Dec, remNum, remDen *big.Int) *Dec +} + +func (r rndr) UseRemainder() bool { + return r.useRem +} + +func (r rndr) Round(z, quo *Dec, remNum, remDen *big.Int) *Dec { + return r.round(z, quo, remNum, remDen) +} + +var intSign = []*big.Int{big.NewInt(-1), big.NewInt(0), big.NewInt(1)} + +func roundHalf(f func(c int, odd uint) (roundUp bool)) func(z, q *Dec, rA, rB *big.Int) *Dec { + return func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + brA, brB := rA.BitLen(), rB.BitLen() + if brA < brB-1 { + // brA < brB-1 => |rA| < |rB/2| + return z + } + roundUp := false + srA, srB := rA.Sign(), rB.Sign() + s := srA * srB + if brA == brB-1 { + rA2 := new(big.Int).Lsh(rA, 1) + if s < 0 { + rA2.Neg(rA2) + } + roundUp = f(rA2.Cmp(rB)*srB, z.UnscaledBig().Bit(0)) + } else { + // brA > brB-1 => |rA| > |rB/2| + roundUp = true + } + if roundUp { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[s+1]) + } + return z + } +} + +func init() { + RoundExact = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + if rA.Sign() != 0 { + return nil + } + return z.Set(q) + }} + RoundDown = rndr{false, + func(z, q *Dec, rA, rB *big.Int) *Dec { + return z.Set(q) + }} + RoundUp = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + if rA.Sign() != 0 { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[rA.Sign()*rB.Sign()+1]) + } + return z + }} + RoundFloor = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + if rA.Sign()*rB.Sign() < 0 { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[0]) + } + return z + }} + RoundCeil = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + if rA.Sign()*rB.Sign() > 0 { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[2]) + } + return z + }} + RoundHalfDown = rndr{true, roundHalf( + func(c int, odd uint) bool { + return c > 0 + })} + RoundHalfUp = rndr{true, roundHalf( + func(c int, odd uint) bool { + return c >= 0 + })} + RoundHalfEven = rndr{true, roundHalf( + func(c int, odd uint) bool { + return c > 0 || c == 0 && odd == 1 + })} +} diff --git a/vendor/gopkg.in/inf.v0/rounder_example_test.go b/vendor/gopkg.in/inf.v0/rounder_example_test.go new file mode 100644 index 000000000..803c1d7ee --- /dev/null +++ b/vendor/gopkg.in/inf.v0/rounder_example_test.go @@ -0,0 +1,72 @@ +package inf_test + +import ( + "fmt" + "os" + "text/tabwriter" + + "gopkg.in/inf.v0" +) + +// This example displays the results of Dec.Round with each of the Rounders. +// +func ExampleRounder() { + var vals = []struct { + x string + s inf.Scale + }{ + {"-0.18", 1}, {"-0.15", 1}, {"-0.12", 1}, {"-0.10", 1}, + {"-0.08", 1}, {"-0.05", 1}, {"-0.02", 1}, {"0.00", 1}, + {"0.02", 1}, {"0.05", 1}, {"0.08", 1}, {"0.10", 1}, + {"0.12", 1}, {"0.15", 1}, {"0.18", 1}, + } + + var rounders = []struct { + name string + rounder inf.Rounder + }{ + {"RoundDown", inf.RoundDown}, {"RoundUp", inf.RoundUp}, + {"RoundCeil", inf.RoundCeil}, {"RoundFloor", inf.RoundFloor}, + {"RoundHalfDown", inf.RoundHalfDown}, {"RoundHalfUp", inf.RoundHalfUp}, + {"RoundHalfEven", inf.RoundHalfEven}, {"RoundExact", inf.RoundExact}, + } + + fmt.Println("The results of new(inf.Dec).Round(x, s, inf.RoundXXX):\n") + w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.AlignRight) + fmt.Fprint(w, "x\ts\t|\t") + for _, r := range rounders { + fmt.Fprintf(w, "%s\t", r.name[5:]) + } + fmt.Fprintln(w) + for _, v := range vals { + fmt.Fprintf(w, "%s\t%d\t|\t", v.x, v.s) + for _, r := range rounders { + x, _ := new(inf.Dec).SetString(v.x) + z := new(inf.Dec).Round(x, v.s, r.rounder) + fmt.Fprintf(w, "%d\t", z) + } + fmt.Fprintln(w) + } + w.Flush() + + // Output: + // The results of new(inf.Dec).Round(x, s, inf.RoundXXX): + // + // x s | Down Up Ceil Floor HalfDown HalfUp HalfEven Exact + // -0.18 1 | -0.1 -0.2 -0.1 -0.2 -0.2 -0.2 -0.2 + // -0.15 1 | -0.1 -0.2 -0.1 -0.2 -0.1 -0.2 -0.2 + // -0.12 1 | -0.1 -0.2 -0.1 -0.2 -0.1 -0.1 -0.1 + // -0.10 1 | -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 + // -0.08 1 | 0.0 -0.1 0.0 -0.1 -0.1 -0.1 -0.1 + // -0.05 1 | 0.0 -0.1 0.0 -0.1 0.0 -0.1 0.0 + // -0.02 1 | 0.0 -0.1 0.0 -0.1 0.0 0.0 0.0 + // 0.00 1 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + // 0.02 1 | 0.0 0.1 0.1 0.0 0.0 0.0 0.0 + // 0.05 1 | 0.0 0.1 0.1 0.0 0.0 0.1 0.0 + // 0.08 1 | 0.0 0.1 0.1 0.0 0.1 0.1 0.1 + // 0.10 1 | 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 + // 0.12 1 | 0.1 0.2 0.2 0.1 0.1 0.1 0.1 + // 0.15 1 | 0.1 0.2 0.2 0.1 0.1 0.2 0.2 + // 0.18 1 | 0.1 0.2 0.2 0.1 0.2 0.2 0.2 + +} diff --git a/vendor/gopkg.in/inf.v0/rounder_test.go b/vendor/gopkg.in/inf.v0/rounder_test.go new file mode 100644 index 000000000..d7e14c58c --- /dev/null +++ b/vendor/gopkg.in/inf.v0/rounder_test.go @@ -0,0 +1,109 @@ +package inf_test + +import ( + "math/big" + "testing" + + "gopkg.in/inf.v0" +) + +var decRounderInputs = [...]struct { + quo *inf.Dec + rA, rB *big.Int +}{ + // examples from go language spec + {inf.NewDec(1, 0), big.NewInt(2), big.NewInt(3)}, // 5 / 3 + {inf.NewDec(-1, 0), big.NewInt(-2), big.NewInt(3)}, // -5 / 3 + {inf.NewDec(-1, 0), big.NewInt(2), big.NewInt(-3)}, // 5 / -3 + {inf.NewDec(1, 0), big.NewInt(-2), big.NewInt(-3)}, // -5 / -3 + // examples from godoc + {inf.NewDec(-1, 1), big.NewInt(-8), big.NewInt(10)}, + {inf.NewDec(-1, 1), big.NewInt(-5), big.NewInt(10)}, + {inf.NewDec(-1, 1), big.NewInt(-2), big.NewInt(10)}, + {inf.NewDec(0, 1), big.NewInt(-8), big.NewInt(10)}, + {inf.NewDec(0, 1), big.NewInt(-5), big.NewInt(10)}, + {inf.NewDec(0, 1), big.NewInt(-2), big.NewInt(10)}, + {inf.NewDec(0, 1), big.NewInt(0), big.NewInt(1)}, + {inf.NewDec(0, 1), big.NewInt(2), big.NewInt(10)}, + {inf.NewDec(0, 1), big.NewInt(5), big.NewInt(10)}, + {inf.NewDec(0, 1), big.NewInt(8), big.NewInt(10)}, + {inf.NewDec(1, 1), big.NewInt(2), big.NewInt(10)}, + {inf.NewDec(1, 1), big.NewInt(5), big.NewInt(10)}, + {inf.NewDec(1, 1), big.NewInt(8), big.NewInt(10)}, +} + +var decRounderResults = [...]struct { + rounder inf.Rounder + results [len(decRounderInputs)]*inf.Dec +}{ + {inf.RoundExact, [...]*inf.Dec{nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, + inf.NewDec(0, 1), nil, nil, nil, nil, nil, nil}}, + {inf.RoundDown, [...]*inf.Dec{ + inf.NewDec(1, 0), inf.NewDec(-1, 0), inf.NewDec(-1, 0), inf.NewDec(1, 0), + inf.NewDec(-1, 1), inf.NewDec(-1, 1), inf.NewDec(-1, 1), + inf.NewDec(0, 1), inf.NewDec(0, 1), inf.NewDec(0, 1), + inf.NewDec(0, 1), + inf.NewDec(0, 1), inf.NewDec(0, 1), inf.NewDec(0, 1), + inf.NewDec(1, 1), inf.NewDec(1, 1), inf.NewDec(1, 1)}}, + {inf.RoundUp, [...]*inf.Dec{ + inf.NewDec(2, 0), inf.NewDec(-2, 0), inf.NewDec(-2, 0), inf.NewDec(2, 0), + inf.NewDec(-2, 1), inf.NewDec(-2, 1), inf.NewDec(-2, 1), + inf.NewDec(-1, 1), inf.NewDec(-1, 1), inf.NewDec(-1, 1), + inf.NewDec(0, 1), + inf.NewDec(1, 1), inf.NewDec(1, 1), inf.NewDec(1, 1), + inf.NewDec(2, 1), inf.NewDec(2, 1), inf.NewDec(2, 1)}}, + {inf.RoundHalfDown, [...]*inf.Dec{ + inf.NewDec(2, 0), inf.NewDec(-2, 0), inf.NewDec(-2, 0), inf.NewDec(2, 0), + inf.NewDec(-2, 1), inf.NewDec(-1, 1), inf.NewDec(-1, 1), + inf.NewDec(-1, 1), inf.NewDec(0, 1), inf.NewDec(0, 1), + inf.NewDec(0, 1), + inf.NewDec(0, 1), inf.NewDec(0, 1), inf.NewDec(1, 1), + inf.NewDec(1, 1), inf.NewDec(1, 1), inf.NewDec(2, 1)}}, + {inf.RoundHalfUp, [...]*inf.Dec{ + inf.NewDec(2, 0), inf.NewDec(-2, 0), inf.NewDec(-2, 0), inf.NewDec(2, 0), + inf.NewDec(-2, 1), inf.NewDec(-2, 1), inf.NewDec(-1, 1), + inf.NewDec(-1, 1), inf.NewDec(-1, 1), inf.NewDec(0, 1), + inf.NewDec(0, 1), + inf.NewDec(0, 1), inf.NewDec(1, 1), inf.NewDec(1, 1), + inf.NewDec(1, 1), inf.NewDec(2, 1), inf.NewDec(2, 1)}}, + {inf.RoundHalfEven, [...]*inf.Dec{ + inf.NewDec(2, 0), inf.NewDec(-2, 0), inf.NewDec(-2, 0), inf.NewDec(2, 0), + inf.NewDec(-2, 1), inf.NewDec(-2, 1), inf.NewDec(-1, 1), + inf.NewDec(-1, 1), inf.NewDec(0, 1), inf.NewDec(0, 1), + inf.NewDec(0, 1), + inf.NewDec(0, 1), inf.NewDec(0, 1), inf.NewDec(1, 1), + inf.NewDec(1, 1), inf.NewDec(2, 1), inf.NewDec(2, 1)}}, + {inf.RoundFloor, [...]*inf.Dec{ + inf.NewDec(1, 0), inf.NewDec(-2, 0), inf.NewDec(-2, 0), inf.NewDec(1, 0), + inf.NewDec(-2, 1), inf.NewDec(-2, 1), inf.NewDec(-2, 1), + inf.NewDec(-1, 1), inf.NewDec(-1, 1), inf.NewDec(-1, 1), + inf.NewDec(0, 1), + inf.NewDec(0, 1), inf.NewDec(0, 1), inf.NewDec(0, 1), + inf.NewDec(1, 1), inf.NewDec(1, 1), inf.NewDec(1, 1)}}, + {inf.RoundCeil, [...]*inf.Dec{ + inf.NewDec(2, 0), inf.NewDec(-1, 0), inf.NewDec(-1, 0), inf.NewDec(2, 0), + inf.NewDec(-1, 1), inf.NewDec(-1, 1), inf.NewDec(-1, 1), + inf.NewDec(0, 1), inf.NewDec(0, 1), inf.NewDec(0, 1), + inf.NewDec(0, 1), + inf.NewDec(1, 1), inf.NewDec(1, 1), inf.NewDec(1, 1), + inf.NewDec(2, 1), inf.NewDec(2, 1), inf.NewDec(2, 1)}}, +} + +func TestDecRounders(t *testing.T) { + for i, a := range decRounderResults { + for j, input := range decRounderInputs { + q := new(inf.Dec).Set(input.quo) + rA, rB := new(big.Int).Set(input.rA), new(big.Int).Set(input.rB) + res := a.rounder.Round(new(inf.Dec), q, rA, rB) + if a.results[j] == nil && res == nil { + continue + } + if (a.results[j] == nil && res != nil) || + (a.results[j] != nil && res == nil) || + a.results[j].Cmp(res) != 0 { + t.Errorf("#%d,%d Rounder got %v; expected %v", i, j, res, a.results[j]) + } + } + } +} diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml deleted file mode 100644 index 004172a2e..000000000 --- a/vendor/gopkg.in/yaml.v2/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go - -go: - - 1.4 - - 1.5 - - 1.6 - - tip - -go_import_path: gopkg.in/yaml.v2 diff --git a/vendor/gopkg.in/yaml.v2/LICENSE b/vendor/gopkg.in/yaml.v2/LICENSE index 8dada3eda..a68e67f01 100644 --- a/vendor/gopkg.in/yaml.v2/LICENSE +++ b/vendor/gopkg.in/yaml.v2/LICENSE @@ -1,201 +1,188 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Copyright (c) 2011-2014 - Canonical Inc. - 1. Definitions. +This software is licensed under the LGPLv3, included below. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +As a special exception to the GNU Lesser General Public License version 3 +("LGPL3"), the copyright holders of this Library give you permission to +convey to a third party a Combined Work that links statically or dynamically +to this Library without providing any Minimal Corresponding Source or +Minimal Application Code as set out in 4d or providing the installation +information set out in section 4e, provided that you comply with the other +provisions of LGPL3 and provided that you meet, for the Application the +terms and conditions of the license(s) which apply to the Application. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +Except as stated in this special exception, the provisions of LGPL3 will +continue to comply in full to this Library. If you modify this Library, you +may apply this exception to your version of this Library, but you are not +obliged to do so. If you do not wish to do so, delete this exception +statement from your version. This exception does not (and cannot) modify any +license terms which apply to the Application, with which you must still +comply. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. + 0. Additional Definitions. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + 1. Exception to Section 3 of the GNU GPL. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + 2. Conveying Modified Versions. - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + 3. Object Code Incorporating Material from Library Header Files. - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. - END OF TERMS AND CONDITIONS + b) Accompany the object code with a copy of the GNU GPL and this license + document. - APPENDIX: How to apply the Apache License to your work. + 4. Combined Works. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: - Copyright {yyyy} {name of copyright owner} + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. - http://www.apache.org/licenses/LICENSE-2.0 + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md index 7a512d67c..7b8bd8670 100644 --- a/vendor/gopkg.in/yaml.v2/README.md +++ b/vendor/gopkg.in/yaml.v2/README.md @@ -42,14 +42,12 @@ The package API for yaml v2 will remain stable as described in [gopkg.in](https: License ------- -The yaml package is licensed under the Apache License 2.0. Please see the LICENSE file for details. +The yaml package is licensed under the LGPL with an exception that allows it to be linked statically. Please see the LICENSE file for details. Example ------- -Some more examples can be found in the "examples" folder. - ```Go package main diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go index db1f5f206..085cddc44 100644 --- a/vendor/gopkg.in/yaml.v2/decode.go +++ b/vendor/gopkg.in/yaml.v2/decode.go @@ -120,6 +120,7 @@ func (p *parser) parse() *node { default: panic("attempted to parse unknown event: " + strconv.Itoa(int(p.event.typ))) } + panic("unreachable") } func (p *parser) node(kind int) *node { @@ -190,7 +191,6 @@ type decoder struct { aliases map[string]bool mapType reflect.Type terrors []string - strict bool } var ( @@ -200,8 +200,8 @@ var ( ifaceType = defaultMapType.Elem() ) -func newDecoder(strict bool) *decoder { - d := &decoder{mapType: defaultMapType, strict: strict} +func newDecoder() *decoder { + d := &decoder{mapType: defaultMapType} d.aliases = make(map[string]bool) return d } @@ -251,7 +251,7 @@ func (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) { // // If n holds a null value, prepare returns before doing anything. func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { - if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "" && n.implicit) { + if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "") { return out, false, false } again := true @@ -640,8 +640,6 @@ func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) { value := reflect.New(elemType).Elem() d.unmarshal(n.children[i+1], value) inlineMap.SetMapIndex(name, value) - } else if d.strict { - d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in struct %s", n.line+1, name.String(), out.Type())) } } return true diff --git a/vendor/gopkg.in/yaml.v2/decode_test.go b/vendor/gopkg.in/yaml.v2/decode_test.go index 713b1ee9c..04fdd9e72 100644 --- a/vendor/gopkg.in/yaml.v2/decode_test.go +++ b/vendor/gopkg.in/yaml.v2/decode_test.go @@ -405,12 +405,6 @@ var unmarshalTests = []struct { map[string]interface{}{"v": 1}, }, - // Non-specific tag (Issue #75) - { - "v: ! test", - map[string]interface{}{"v": "test"}, - }, - // Anchors and aliases. { "a: &x 1\nb: &y 2\nc: *x\nd: *y\n", @@ -557,7 +551,7 @@ var unmarshalTests = []struct { }, { "a: 2015-02-24T18:19:39Z\n", - map[string]time.Time{"a": time.Unix(1424801979, 0).In(time.UTC)}, + map[string]time.Time{"a": time.Unix(1424801979, 0)}, }, // Encode empty lists as zero-length slices. @@ -565,37 +559,6 @@ var unmarshalTests = []struct { "a: []", &struct{ A []int }{[]int{}}, }, - - // UTF-16-LE - { - "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n\x00", - M{"ñoño": "very yes"}, - }, - // UTF-16-LE with surrogate. - { - "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \x00=\xd8\xd4\xdf\n\x00", - M{"ñoño": "very yes 🟔"}, - }, - - // UTF-16-BE - { - "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n", - M{"ñoño": "very yes"}, - }, - // UTF-16-BE with surrogate. - { - "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \xd8=\xdf\xd4\x00\n", - M{"ñoño": "very yes 🟔"}, - }, - - // YAML Float regex shouldn't match this - { - "a: 123456e1\n", - M{"a": "123456e1"}, - }, { - "a: 123456E1\n", - M{"a": "123456E1"}, - }, } type M map[interface{}]interface{} @@ -610,8 +573,7 @@ type inlineC struct { } func (s *S) TestUnmarshal(c *C) { - for i, item := range unmarshalTests { - c.Logf("test %d: %q", i, item.data) + for _, item := range unmarshalTests { t := reflect.ValueOf(item.value).Type() var value interface{} switch t.Kind() { @@ -655,7 +617,6 @@ var unmarshalErrorTests = []struct { {"a: !!binary ==", "yaml: !!binary value contains invalid base64 data"}, {"{[.]}", `yaml: invalid map key: \[\]interface \{\}\{"\."\}`}, {"{{.}}", `yaml: invalid map key: map\[interface\ \{\}\]interface \{\}\{".":interface \{\}\(nil\)\}`}, - {"%TAG !%79! tag:yaml.org,2002:\n---\nv: !%79!int '1'", "yaml: did not find expected whitespace"}, } func (s *S) TestUnmarshalErrors(c *C) { @@ -677,7 +638,6 @@ var unmarshalerTests = []struct { {`_: BAR!`, "!!str", "BAR!"}, {`_: "BAR!"`, "!!str", "BAR!"}, {"_: !!foo 'BAR!'", "!!foo", "BAR!"}, - {`_: ""`, "!!str", ""}, } var unmarshalerResult = map[int]error{} @@ -976,17 +936,6 @@ func (s *S) TestUnmarshalSliceOnPreset(c *C) { c.Assert(v.A, DeepEquals, []int{2}) } -func (s *S) TestUnmarshalStrict(c *C) { - v := struct{ A, B int }{} - - err := yaml.UnmarshalStrict([]byte("a: 1\nb: 2"), &v) - c.Check(err, IsNil) - err = yaml.Unmarshal([]byte("a: 1\nb: 2\nc: 3"), &v) - c.Check(err, IsNil) - err = yaml.UnmarshalStrict([]byte("a: 1\nb: 2\nc: 3"), &v) - c.Check(err, ErrorMatches, "yaml: unmarshal errors:\n line 1: field c not found in struct struct { A int; B int }") -} - //var data []byte //func init() { // var err error diff --git a/vendor/gopkg.in/yaml.v2/emitterc.go b/vendor/gopkg.in/yaml.v2/emitterc.go index 41de8b856..2befd553e 100644 --- a/vendor/gopkg.in/yaml.v2/emitterc.go +++ b/vendor/gopkg.in/yaml.v2/emitterc.go @@ -666,6 +666,7 @@ func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, return yaml_emitter_set_emitter_error(emitter, "expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS") } + return false } // Expect ALIAS. @@ -994,7 +995,7 @@ func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { break_space = false space_break = false - preceded_by_whitespace = false + preceeded_by_whitespace = false followed_by_whitespace = false previous_space = false previous_break = false @@ -1016,7 +1017,7 @@ func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { flow_indicators = true } - preceded_by_whitespace = true + preceeded_by_whitespace = true for i, w := 0, 0; i < len(value); i += w { w = width(value[i]) followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) @@ -1047,7 +1048,7 @@ func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { block_indicators = true } case '#': - if preceded_by_whitespace { + if preceeded_by_whitespace { flow_indicators = true block_indicators = true } @@ -1088,7 +1089,7 @@ func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { } // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. - preceded_by_whitespace = is_blankz(value, i) + preceeded_by_whitespace = is_blankz(value, i) } emitter.scalar_data.multiline = line_breaks diff --git a/vendor/gopkg.in/yaml.v2/example_embedded_test.go b/vendor/gopkg.in/yaml.v2/example_embedded_test.go deleted file mode 100644 index c8b241d54..000000000 --- a/vendor/gopkg.in/yaml.v2/example_embedded_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package yaml_test - -import ( - "fmt" - "log" - - "gopkg.in/yaml.v2" -) - -// An example showing how to unmarshal embedded -// structs from YAML. - -type StructA struct { - A string `yaml:"a"` -} - -type StructB struct { - // Embedded structs are not treated as embedded in YAML by default. To do that, - // add the ",inline" annotation below - StructA `yaml:",inline"` - B string `yaml:"b"` -} - -var data = ` -a: a string from struct A -b: a string from struct B -` - -func ExampleUnmarshal_embedded() { - var b StructB - - err := yaml.Unmarshal([]byte(data), &b) - if err != nil { - log.Fatal("cannot unmarshal data: %v", err) - } - fmt.Println(b.A) - fmt.Println(b.B) - // Output: - // a string from struct A - // a string from struct B -} diff --git a/vendor/gopkg.in/yaml.v2/parserc.go b/vendor/gopkg.in/yaml.v2/parserc.go index 81d05dfe5..0a7037ad1 100644 --- a/vendor/gopkg.in/yaml.v2/parserc.go +++ b/vendor/gopkg.in/yaml.v2/parserc.go @@ -166,6 +166,7 @@ func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool default: panic("invalid parser state") } + return false } // Parse the production: diff --git a/vendor/gopkg.in/yaml.v2/readerc.go b/vendor/gopkg.in/yaml.v2/readerc.go index f45079171..d5fb09727 100644 --- a/vendor/gopkg.in/yaml.v2/readerc.go +++ b/vendor/gopkg.in/yaml.v2/readerc.go @@ -247,7 +247,7 @@ func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { if parser.encoding == yaml_UTF16LE_ENCODING { low, high = 0, 1 } else { - low, high = 1, 0 + high, low = 1, 0 } // The UTF-16 encoding is not as simple as one might @@ -357,26 +357,23 @@ func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { if value <= 0x7F { // 0000 0000-0000 007F . 0xxxxxxx parser.buffer[buffer_len+0] = byte(value) - buffer_len += 1 } else if value <= 0x7FF { // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) - buffer_len += 2 } else if value <= 0xFFFF { // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) - buffer_len += 3 } else { // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) - buffer_len += 4 } + buffer_len += width parser.unread++ } diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go index 232313cc0..93a863274 100644 --- a/vendor/gopkg.in/yaml.v2/resolve.go +++ b/vendor/gopkg.in/yaml.v2/resolve.go @@ -3,7 +3,6 @@ package yaml import ( "encoding/base64" "math" - "regexp" "strconv" "strings" "unicode/utf8" @@ -81,8 +80,6 @@ func resolvableTag(tag string) bool { return false } -var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) - func resolve(tag string, in string) (rtag string, out interface{}) { if !resolvableTag(tag) { return tag, in @@ -138,11 +135,9 @@ func resolve(tag string, in string) (rtag string, out interface{}) { if err == nil { return yaml_INT_TAG, uintv } - if yamlStyleFloat.MatchString(plain) { - floatv, err := strconv.ParseFloat(plain, 64) - if err == nil { - return yaml_FLOAT_TAG, floatv - } + floatv, err := strconv.ParseFloat(plain, 64) + if err == nil { + return yaml_FLOAT_TAG, floatv } if strings.HasPrefix(plain, "0b") { intv, err := strconv.ParseInt(plain[2:], 2, 64) diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go index 074484455..d97d76fa5 100644 --- a/vendor/gopkg.in/yaml.v2/scannerc.go +++ b/vendor/gopkg.in/yaml.v2/scannerc.go @@ -9,7 +9,7 @@ import ( // ************ // // The following notes assume that you are familiar with the YAML specification -// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in +// (http://yaml.org/spec/cvs/current.html). We mostly follow it, although in // some cases we are less restrictive that it requires. // // The process of transforming a YAML stream into a sequence of events is @@ -611,7 +611,7 @@ func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, co if directive { context = "while parsing a %TAG directive" } - return yaml_parser_set_scanner_error(parser, context, context_mark, problem) + return yaml_parser_set_scanner_error(parser, context, context_mark, "did not find URI escaped octet") } func trace(args ...interface{}) func() { @@ -1546,7 +1546,7 @@ func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool // Unknown directive. } else { yaml_parser_set_scanner_error(parser, "while scanning a directive", - start_mark, "found unknown directive name") + start_mark, "found uknown directive name") return false } @@ -1944,7 +1944,7 @@ func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_ma } else { // It's either the '!' tag or not really a tag handle. If it's a %TAG // directive, it's an error. If it's a tag token, it must be a part of URI. - if directive && string(s) != "!" { + if directive && !(s[0] == '!' && s[1] == 0) { yaml_parser_set_scanner_tag_error(parser, directive, start_mark, "did not find expected '!'") return false @@ -1959,7 +1959,6 @@ func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_ma func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { //size_t length = head ? strlen((char *)head) : 0 var s []byte - hasTag := len(head) > 0 // Copy the head if needed. // @@ -2001,10 +2000,10 @@ func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { return false } - hasTag = true } - if !hasTag { + // Check if the tag is non-empty. + if len(s) == 0 { yaml_parser_set_scanner_tag_error(parser, directive, start_mark, "did not find expected tag URI") return false diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go index bf18884e0..d133edf9d 100644 --- a/vendor/gopkg.in/yaml.v2/yaml.go +++ b/vendor/gopkg.in/yaml.v2/yaml.go @@ -77,19 +77,8 @@ type Marshaler interface { // supported tag options. // func Unmarshal(in []byte, out interface{}) (err error) { - return unmarshal(in, out, false) -} - -// UnmarshalStrict is like Unmarshal except that any fields that are found -// in the data that do not have corresponding struct members will result in -// an error. -func UnmarshalStrict(in []byte, out interface{}) (err error) { - return unmarshal(in, out, true) -} - -func unmarshal(in []byte, out interface{}, strict bool) (err error) { defer handleErr(&err) - d := newDecoder(strict) + d := newDecoder() p := newParser(in) defer p.destroy() node := p.parse() @@ -233,7 +222,7 @@ func getStructInfo(st reflect.Type) (*structInfo, error) { inlineMap := -1 for i := 0; i != n; i++ { field := st.Field(i) - if field.PkgPath != "" && !field.Anonymous { + if field.PkgPath != "" { continue // Private field } diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/gopkg.in/yaml.v2/yamlh.go index 3caeca049..d60a6b6b0 100644 --- a/vendor/gopkg.in/yaml.v2/yamlh.go +++ b/vendor/gopkg.in/yaml.v2/yamlh.go @@ -508,7 +508,7 @@ type yaml_parser_t struct { problem string // Error description. - // The byte about which the problem occurred. + // The byte about which the problem occured. problem_offset int problem_value int problem_mark yaml_mark_t diff --git a/vendor/k8s.io/apimachinery/Godeps/Godeps.json b/vendor/k8s.io/apimachinery/Godeps/Godeps.json new file mode 100644 index 000000000..2b3187b33 --- /dev/null +++ b/vendor/k8s.io/apimachinery/Godeps/Godeps.json @@ -0,0 +1,193 @@ +{ + "ImportPath": "k8s.io/apimachinery", + "GoVersion": "go1.8", + "GodepVersion": "v79", + "Packages": [ + "./..." + ], + "Deps": [ + { + "ImportPath": "github.com/PuerkitoBio/purell", + "Comment": "v1.0.0", + "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" + }, + { + "ImportPath": "github.com/PuerkitoBio/urlesc", + "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" + }, + { + "ImportPath": "github.com/davecgh/go-spew/spew", + "Rev": "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d" + }, + { + "ImportPath": "github.com/docker/spdystream", + "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" + }, + { + "ImportPath": "github.com/docker/spdystream/spdy", + "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" + }, + { + "ImportPath": "github.com/elazarl/goproxy", + "Comment": "v1.0-104-gc4fc265", + "Rev": "c4fc26588b6ef8af07a191fcb6476387bdd46711" + }, + { + "ImportPath": "github.com/emicklei/go-restful", + "Comment": "2.2.0-4-gff4f55a", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/emicklei/go-restful/log", + "Comment": "2.2.0-4-gff4f55a", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/evanphx/json-patch", + "Rev": "ba18e35c5c1b36ef6334cad706eb681153d2d379" + }, + { + "ImportPath": "github.com/ghodss/yaml", + "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" + }, + { + "ImportPath": "github.com/go-openapi/jsonpointer", + "Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98" + }, + { + "ImportPath": "github.com/go-openapi/jsonreference", + "Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" + }, + { + "ImportPath": "github.com/go-openapi/spec", + "Rev": "6aced65f8501fe1217321abf0749d354824ba2ff" + }, + { + "ImportPath": "github.com/go-openapi/swag", + "Rev": "1d0bd113de87027671077d3c71eb3ac5d7dbba72" + }, + { + "ImportPath": "github.com/gogo/protobuf/proto", + "Comment": "v0.4-3-gc0656ed", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/gogo/protobuf/sortkeys", + "Comment": "v0.4-3-gc0656ed", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/golang/glog", + "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" + }, + { + "ImportPath": "github.com/golang/groupcache/lru", + "Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" + }, + { + "ImportPath": "github.com/golang/protobuf/proto", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/google/gofuzz", + "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru", + "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru/simplelru", + "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + }, + { + "ImportPath": "github.com/mailru/easyjson/buffer", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/mailru/easyjson/jlexer", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/mailru/easyjson/jwriter", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/pborman/uuid", + "Rev": "ca53cad383cad2479bbba7f7a1a05797ec1386e4" + }, + { + "ImportPath": "github.com/spf13/pflag", + "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" + }, + { + "ImportPath": "github.com/ugorji/go/codec", + "Rev": "ded73eae5db7e7a0ef6f55aace87a2873c5d2b74" + }, + { + "ImportPath": "golang.org/x/net/http2", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/http2/hpack", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/idna", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/lex/httplex", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/text/cases", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/internal/tag", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/language", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/runes", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/secure/bidirule", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/secure/precis", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/transform", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/unicode/bidi", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/unicode/norm", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/width", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "gopkg.in/inf.v0", + "Comment": "v0.9.0", + "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + }, + { + "ImportPath": "gopkg.in/yaml.v2", + "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77" + } + ] +} diff --git a/vendor/k8s.io/apimachinery/Godeps/Readme b/vendor/k8s.io/apimachinery/Godeps/Readme new file mode 100644 index 000000000..4cdaa53d5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/Godeps/Readme @@ -0,0 +1,5 @@ +This directory tree is generated automatically by godep. + +Please do not edit. + +See https://github.com/tools/godep for more information. diff --git a/vendor/k8s.io/apimachinery/LICENSE b/vendor/k8s.io/apimachinery/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/k8s.io/apimachinery/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/k8s.io/apimachinery/OWNERS b/vendor/k8s.io/apimachinery/OWNERS new file mode 100644 index 000000000..2719ec920 --- /dev/null +++ b/vendor/k8s.io/apimachinery/OWNERS @@ -0,0 +1,21 @@ +approvers: +- lavalamp +- smarterclayton +- deads2k +- sttts +- liggitt +- caesarxuchao +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- derekwaynecarr +- caesarxuchao +- mikedanese +- liggitt +- gmarek +- sttts +- ncdc +- timstclair diff --git a/vendor/k8s.io/apimachinery/README.md b/vendor/k8s.io/apimachinery/README.md new file mode 100644 index 000000000..98899fb58 --- /dev/null +++ b/vendor/k8s.io/apimachinery/README.md @@ -0,0 +1,29 @@ +# apimachinery + +Scheme, typing, encoding, decoding, and conversion packages for Kubernetes and Kubernetes-like API objects. + + +## Purpose + +This library is a shared dependency for servers and clients to work with Kubernetes API infrastructure without direct +type dependencies. It's first comsumers are `k8s.io/kubernetes`, `k8s.io/client-go`, and `k8s.io/apiserver`. + + +## Compatibility + +There are *NO compatibility guarantees* for this repository. It is in direct support of Kubernetes, so branches +will track Kubernetes and be compatible with that repo. As we more cleanly separate the layers, we will review the +compatibility guarantee. + + +## Where does it come from? + +`apimachinery` is synced from https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery. +Code changes are made in that location, merged into `k8s.io/kubernetes` and later synced here. + + +## Things you should *NOT* do + + 1. Add API types to this repo. This is for the machinery, not for the types. + 2. Directly modify any files under `pkg` in this repo. Those are driven from `k8s.io/kuberenetes/staging/src/k8s.io/apimachinery`. + 3. Expect compatibility. This repo is direct support of Kubernetes and the API isn't yet stable enough for API guarantees. \ No newline at end of file diff --git a/vendor/k8s.io/apimachinery/hack/godep-deps.sh b/vendor/k8s.io/apimachinery/hack/godep-deps.sh new file mode 100755 index 000000000..eb99b9f17 --- /dev/null +++ b/vendor/k8s.io/apimachinery/hack/godep-deps.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# overall flow +# 1. make a clean gopath +# 2. godep restore based on k8s.io/kuberentes provided manifest +# 3. go get anything unlisted. This handles deps from k8s.io/* +# 4. remove old vendoring data +# 5. vendor packages we need +# 6. remove anything vendored from k8s.io/* from vendor, but not manifest. +# This allows go get to work and still be able to flatten dependencies. +# 6. copy new vendored packages and save them + +set -o errexit +set -o nounset +set -o pipefail + +goPath=$(mktemp -d "${TMPDIR:-/tmp/}$(basename 0).XXXXXXXXXXXX") +echo ${goPath} + +export GOPATH=${goPath} + +mkdir -p ${goPath}/src/k8s.io/apimachinery +cp -R . ${goPath}/src/k8s.io/apimachinery + +pushd ${goPath}/src/k8s.io/apimachinery +rm -rf vendor || true + +# restore what we have in our new manifest that we've sync +godep restore + +# the manifest doesn't include any levels of k8s.io dependencies so load them using the go get +# assume you sync all the repos at the same time, the leves you get will be correct +go get -d ./... || true + +# save the new levels of dependencies +rm -rf vendor || true +rm -rf Godeps || true +godep save ./... +popd + +# remove the vendor dir we have and move the one we just made +rm -rf vendor || true +rm -rf Godeps || true +git rm -rf vendor || true +git rm -rf Godeps || true +mv ${goPath}/src/k8s.io/apimachinery/vendor . +mv ${goPath}/src/k8s.io/apimachinery/Godeps . +git add vendor +git add Godeps +git commit -m "sync: resync vendor folder" + diff --git a/vendor/k8s.io/apimachinery/hack/sync-from-kubernetes.sh b/vendor/k8s.io/apimachinery/hack/sync-from-kubernetes.sh new file mode 100755 index 000000000..164120f24 --- /dev/null +++ b/vendor/k8s.io/apimachinery/hack/sync-from-kubernetes.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# overall flow +# 1. fetch the current level of k8s.io/kubernetes +# 2. check out the k8s.io/kubernetes HEAD into a separate branch +# 3. rewrite the history on that branch to *only* include staging/src/k8s.io/apimachinery +# 4. locate all commits between the last time we sync'ed and now +# 5. switch back to the starting branch +# 6. for each commit, cherry-pick it (which will keep authorship) into current branch +# 7. update metadata files indicating which commits we've sync'ed to + +set -e + +ROOT=$(dirname "${BASH_SOURCE}")/.. +dir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename 0).XXXXXXXXXXXX") + +git remote add upstream-kube git@github.com:kubernetes/kubernetes.git || true +git fetch upstream-kube + +currBranch=$(git rev-parse --abbrev-ref HEAD) +previousKubeSHA=$(cat kubernetes-sha) +previousBranchSHA=$(cat filter-branch-sha) + +git branch -D kube-sync || true +git checkout upstream-kube/master -b kube-sync +git reset --hard upstream-kube/master +newKubeSHA=$(git log --oneline --format='%H' kube-sync -1) + +# this command rewrite git history to *only* include staging/src/k8s.io/apimachinery +git filter-branch -f --subdirectory-filter staging/src/k8s.io/apimachinery HEAD + +newBranchSHA=$(git log --oneline --format='%H' kube-sync -1) +git log --no-merges --format='%H' --reverse ${previousBranchSHA}..HEAD > ${dir}/commits + +git checkout ${currBranch} + +while read commitSHA; do + echo "working ${commitSHA}" + git cherry-pick ${commitSHA} +done <${dir}/commits + +# update the vendored godeps +${ROOT}/hack/godep-deps.sh + +# track the k8s.io/kubernetes commit SHA so we can always determine which level of kube this repo matches +# track the filtered branch commit SHA so that we can determine which commits need to be picked +echo ${newKubeSHA} > kubernetes-sha +echo ${newBranchSHA} > filter-branch-sha +git commit -m "sync(k8s.io/kubernetes): ${newKubeSHA}" -- kubernetes-sha filter-branch-sha + diff --git a/vendor/k8s.io/apimachinery/kubernetes-sha b/vendor/k8s.io/apimachinery/kubernetes-sha new file mode 100644 index 000000000..18df71895 --- /dev/null +++ b/vendor/k8s.io/apimachinery/kubernetes-sha @@ -0,0 +1 @@ +63422dcdec9cd0b4e20325496f83c8b4f0da0295 diff --git a/vendor/k8s.io/apimachinery/pkg/OWNERS b/vendor/k8s.io/apimachinery/pkg/OWNERS new file mode 100644 index 000000000..63bb7814f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/OWNERS @@ -0,0 +1,6 @@ +approvers: +- caesarxuchao +- deads2k +- lavalamp +- smarterclayton +- liggitt diff --git a/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD b/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD new file mode 100644 index 000000000..7a21f2db5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/equality/BUILD @@ -0,0 +1,21 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["semantic.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go b/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go new file mode 100644 index 000000000..3ebd8c719 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/equality/semantic.go @@ -0,0 +1,46 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package equality + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" +) + +// Semantic can do semantic deep equality checks for api objects. +// Example: apiequality.Semantic.DeepEqual(aPod, aPodWithNonNilButEmptyMaps) == true +var Semantic = conversion.EqualitiesOrDie( + func(a, b resource.Quantity) bool { + // Ignore formatting, only care that numeric value stayed the same. + // TODO: if we decide it's important, it should be safe to start comparing the format. + // + // Uninitialized quantities are equivalent to 0 quantities. + return a.Cmp(b) == 0 + }, + func(a, b metav1.Time) bool { + return a.UTC() == b.UTC() + }, + func(a, b labels.Selector) bool { + return a.String() == b.String() + }, + func(a, b fields.Selector) bool { + return a.String() == b.String() + }, +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD b/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD new file mode 100644 index 000000000..50f9237a4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["errors_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "errors.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS new file mode 100755 index 000000000..e664b2015 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS @@ -0,0 +1,26 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- brendandburns +- derekwaynecarr +- caesarxuchao +- mikedanese +- liggitt +- nikhiljindal +- gmarek +- erictune +- saad-ali +- janetkuo +- timstclair +- eparis +- timothysc +- dims +- hongchaodeng +- krousey +- satnam6502 +- cjcullen +- david-mcmahon +- goltermann diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/doc.go b/vendor/k8s.io/apimachinery/pkg/api/errors/doc.go new file mode 100644 index 000000000..167baf680 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package errors provides detailed error types for api field validation. +package errors // import "k8s.io/apimachinery/pkg/api/errors" diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go new file mode 100644 index 000000000..560c889b9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go @@ -0,0 +1,478 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package errors + +import ( + "encoding/json" + "fmt" + "net/http" + "strings" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +// HTTP Status codes not in the golang http package. +const ( + StatusUnprocessableEntity = 422 + StatusTooManyRequests = 429 + // StatusServerTimeout is an indication that a transient server error has + // occurred and the client *should* retry, with an optional Retry-After + // header to specify the back off window. + StatusServerTimeout = 504 +) + +// StatusError is an error intended for consumption by a REST API server; it can also be +// reconstructed by clients from a REST response. Public to allow easy type switches. +type StatusError struct { + ErrStatus metav1.Status +} + +// APIStatus is exposed by errors that can be converted to an api.Status object +// for finer grained details. +type APIStatus interface { + Status() metav1.Status +} + +var _ error = &StatusError{} + +// Error implements the Error interface. +func (e *StatusError) Error() string { + return e.ErrStatus.Message +} + +// Status allows access to e's status without having to know the detailed workings +// of StatusError. +func (e *StatusError) Status() metav1.Status { + return e.ErrStatus +} + +// DebugError reports extended info about the error to debug output. +func (e *StatusError) DebugError() (string, []interface{}) { + if out, err := json.MarshalIndent(e.ErrStatus, "", " "); err == nil { + return "server response object: %s", []interface{}{string(out)} + } + return "server response object: %#v", []interface{}{e.ErrStatus} +} + +// UnexpectedObjectError can be returned by FromObject if it's passed a non-status object. +type UnexpectedObjectError struct { + Object runtime.Object +} + +// Error returns an error message describing 'u'. +func (u *UnexpectedObjectError) Error() string { + return fmt.Sprintf("unexpected object: %v", u.Object) +} + +// FromObject generates an StatusError from an metav1.Status, if that is the type of obj; otherwise, +// returns an UnexpecteObjectError. +func FromObject(obj runtime.Object) error { + switch t := obj.(type) { + case *metav1.Status: + return &StatusError{*t} + } + return &UnexpectedObjectError{obj} +} + +// NewNotFound returns a new error which indicates that the resource of the kind and the name was not found. +func NewNotFound(qualifiedResource schema.GroupResource, name string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusNotFound, + Reason: metav1.StatusReasonNotFound, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("%s %q not found", qualifiedResource.String(), name), + }} +} + +// NewAlreadyExists returns an error indicating the item requested exists by that identifier. +func NewAlreadyExists(qualifiedResource schema.GroupResource, name string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusConflict, + Reason: metav1.StatusReasonAlreadyExists, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("%s %q already exists", qualifiedResource.String(), name), + }} +} + +// NewUnauthorized returns an error indicating the client is not authorized to perform the requested +// action. +func NewUnauthorized(reason string) *StatusError { + message := reason + if len(message) == 0 { + message = "not authorized" + } + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusUnauthorized, + Reason: metav1.StatusReasonUnauthorized, + Message: message, + }} +} + +// NewForbidden returns an error indicating the requested action was forbidden +func NewForbidden(qualifiedResource schema.GroupResource, name string, err error) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusForbidden, + Reason: metav1.StatusReasonForbidden, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("%s %q is forbidden: %v", qualifiedResource.String(), name, err), + }} +} + +// NewConflict returns an error indicating the item can't be updated as provided. +func NewConflict(qualifiedResource schema.GroupResource, name string, err error) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusConflict, + Reason: metav1.StatusReasonConflict, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("Operation cannot be fulfilled on %s %q: %v", qualifiedResource.String(), name, err), + }} +} + +// NewGone returns an error indicating the item no longer available at the server and no forwarding address is known. +func NewGone(message string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusGone, + Reason: metav1.StatusReasonGone, + Message: message, + }} +} + +// NewInvalid returns an error indicating the item is invalid and cannot be processed. +func NewInvalid(qualifiedKind schema.GroupKind, name string, errs field.ErrorList) *StatusError { + causes := make([]metav1.StatusCause, 0, len(errs)) + for i := range errs { + err := errs[i] + causes = append(causes, metav1.StatusCause{ + Type: metav1.CauseType(err.Type), + Message: err.ErrorBody(), + Field: err.Field, + }) + } + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: StatusUnprocessableEntity, // RFC 4918: StatusUnprocessableEntity + Reason: metav1.StatusReasonInvalid, + Details: &metav1.StatusDetails{ + Group: qualifiedKind.Group, + Kind: qualifiedKind.Kind, + Name: name, + Causes: causes, + }, + Message: fmt.Sprintf("%s %q is invalid: %v", qualifiedKind.String(), name, errs.ToAggregate()), + }} +} + +// NewBadRequest creates an error that indicates that the request is invalid and can not be processed. +func NewBadRequest(reason string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusBadRequest, + Reason: metav1.StatusReasonBadRequest, + Message: reason, + }} +} + +// NewServiceUnavailable creates an error that indicates that the requested service is unavailable. +func NewServiceUnavailable(reason string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusServiceUnavailable, + Reason: metav1.StatusReasonServiceUnavailable, + Message: reason, + }} +} + +// NewMethodNotSupported returns an error indicating the requested action is not supported on this kind. +func NewMethodNotSupported(qualifiedResource schema.GroupResource, action string) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusMethodNotAllowed, + Reason: metav1.StatusReasonMethodNotAllowed, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + }, + Message: fmt.Sprintf("%s is not supported on resources of kind %q", action, qualifiedResource.String()), + }} +} + +// NewServerTimeout returns an error indicating the requested action could not be completed due to a +// transient error, and the client should try again. +func NewServerTimeout(qualifiedResource schema.GroupResource, operation string, retryAfterSeconds int) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusInternalServerError, + Reason: metav1.StatusReasonServerTimeout, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: operation, + RetryAfterSeconds: int32(retryAfterSeconds), + }, + Message: fmt.Sprintf("The %s operation against %s could not be completed at this time, please try again.", operation, qualifiedResource.String()), + }} +} + +// NewServerTimeoutForKind should not exist. Server timeouts happen when accessing resources, the Kind is just what we +// happened to be looking at when the request failed. This delegates to keep code sane, but we should work towards removing this. +func NewServerTimeoutForKind(qualifiedKind schema.GroupKind, operation string, retryAfterSeconds int) *StatusError { + return NewServerTimeout(schema.GroupResource{Group: qualifiedKind.Group, Resource: qualifiedKind.Kind}, operation, retryAfterSeconds) +} + +// NewInternalError returns an error indicating the item is invalid and cannot be processed. +func NewInternalError(err error) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: http.StatusInternalServerError, + Reason: metav1.StatusReasonInternalError, + Details: &metav1.StatusDetails{ + Causes: []metav1.StatusCause{{Message: err.Error()}}, + }, + Message: fmt.Sprintf("Internal error occurred: %v", err), + }} +} + +// NewTimeoutError returns an error indicating that a timeout occurred before the request +// could be completed. Clients may retry, but the operation may still complete. +func NewTimeoutError(message string, retryAfterSeconds int) *StatusError { + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: StatusServerTimeout, + Reason: metav1.StatusReasonTimeout, + Message: fmt.Sprintf("Timeout: %s", message), + Details: &metav1.StatusDetails{ + RetryAfterSeconds: int32(retryAfterSeconds), + }, + }} +} + +// NewGenericServerResponse returns a new error for server responses that are not in a recognizable form. +func NewGenericServerResponse(code int, verb string, qualifiedResource schema.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError { + reason := metav1.StatusReasonUnknown + message := fmt.Sprintf("the server responded with the status code %d but did not return more information", code) + switch code { + case http.StatusConflict: + if verb == "POST" { + reason = metav1.StatusReasonAlreadyExists + } else { + reason = metav1.StatusReasonConflict + } + message = "the server reported a conflict" + case http.StatusNotFound: + reason = metav1.StatusReasonNotFound + message = "the server could not find the requested resource" + case http.StatusBadRequest: + reason = metav1.StatusReasonBadRequest + message = "the server rejected our request for an unknown reason" + case http.StatusUnauthorized: + reason = metav1.StatusReasonUnauthorized + message = "the server has asked for the client to provide credentials" + case http.StatusForbidden: + reason = metav1.StatusReasonForbidden + // the server message has details about who is trying to perform what action. Keep its message. + message = serverMessage + case http.StatusMethodNotAllowed: + reason = metav1.StatusReasonMethodNotAllowed + message = "the server does not allow this method on the requested resource" + case StatusUnprocessableEntity: + reason = metav1.StatusReasonInvalid + message = "the server rejected our request due to an error in our request" + case StatusServerTimeout: + reason = metav1.StatusReasonServerTimeout + message = "the server cannot complete the requested operation at this time, try again later" + case StatusTooManyRequests: + reason = metav1.StatusReasonTimeout + message = "the server has received too many requests and has asked us to try again later" + default: + if code >= 500 { + reason = metav1.StatusReasonInternalError + message = fmt.Sprintf("an error on the server (%q) has prevented the request from succeeding", serverMessage) + } + } + switch { + case !qualifiedResource.Empty() && len(name) > 0: + message = fmt.Sprintf("%s (%s %s %s)", message, strings.ToLower(verb), qualifiedResource.String(), name) + case !qualifiedResource.Empty(): + message = fmt.Sprintf("%s (%s %s)", message, strings.ToLower(verb), qualifiedResource.String()) + } + var causes []metav1.StatusCause + if isUnexpectedResponse { + causes = []metav1.StatusCause{ + { + Type: metav1.CauseTypeUnexpectedServerResponse, + Message: serverMessage, + }, + } + } else { + causes = nil + } + return &StatusError{metav1.Status{ + Status: metav1.StatusFailure, + Code: int32(code), + Reason: reason, + Details: &metav1.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + + Causes: causes, + RetryAfterSeconds: int32(retryAfterSeconds), + }, + Message: message, + }} +} + +// IsNotFound returns true if the specified error was created by NewNotFound. +func IsNotFound(err error) bool { + return reasonForError(err) == metav1.StatusReasonNotFound +} + +// IsAlreadyExists determines if the err is an error which indicates that a specified resource already exists. +func IsAlreadyExists(err error) bool { + return reasonForError(err) == metav1.StatusReasonAlreadyExists +} + +// IsConflict determines if the err is an error which indicates the provided update conflicts. +func IsConflict(err error) bool { + return reasonForError(err) == metav1.StatusReasonConflict +} + +// IsInvalid determines if the err is an error which indicates the provided resource is not valid. +func IsInvalid(err error) bool { + return reasonForError(err) == metav1.StatusReasonInvalid +} + +// IsMethodNotSupported determines if the err is an error which indicates the provided action could not +// be performed because it is not supported by the server. +func IsMethodNotSupported(err error) bool { + return reasonForError(err) == metav1.StatusReasonMethodNotAllowed +} + +// IsBadRequest determines if err is an error which indicates that the request is invalid. +func IsBadRequest(err error) bool { + return reasonForError(err) == metav1.StatusReasonBadRequest +} + +// IsUnauthorized determines if err is an error which indicates that the request is unauthorized and +// requires authentication by the user. +func IsUnauthorized(err error) bool { + return reasonForError(err) == metav1.StatusReasonUnauthorized +} + +// IsForbidden determines if err is an error which indicates that the request is forbidden and cannot +// be completed as requested. +func IsForbidden(err error) bool { + return reasonForError(err) == metav1.StatusReasonForbidden +} + +// IsTimeout determines if err is an error which indicates that request times out due to long +// processing. +func IsTimeout(err error) bool { + return reasonForError(err) == metav1.StatusReasonTimeout +} + +// IsServerTimeout determines if err is an error which indicates that the request needs to be retried +// by the client. +func IsServerTimeout(err error) bool { + return reasonForError(err) == metav1.StatusReasonServerTimeout +} + +// IsInternalError determines if err is an error which indicates an internal server error. +func IsInternalError(err error) bool { + return reasonForError(err) == metav1.StatusReasonInternalError +} + +// IsTooManyRequests determines if err is an error which indicates that there are too many requests +// that the server cannot handle. +// TODO: update IsTooManyRequests() when the TooManyRequests(429) error returned from the API server has a non-empty Reason field +func IsTooManyRequests(err error) bool { + switch t := err.(type) { + case APIStatus: + return t.Status().Code == StatusTooManyRequests + } + return false +} + +// IsUnexpectedServerError returns true if the server response was not in the expected API format, +// and may be the result of another HTTP actor. +func IsUnexpectedServerError(err error) bool { + switch t := err.(type) { + case APIStatus: + if d := t.Status().Details; d != nil { + for _, cause := range d.Causes { + if cause.Type == metav1.CauseTypeUnexpectedServerResponse { + return true + } + } + } + } + return false +} + +// IsUnexpectedObjectError determines if err is due to an unexpected object from the master. +func IsUnexpectedObjectError(err error) bool { + _, ok := err.(*UnexpectedObjectError) + return err != nil && ok +} + +// SuggestsClientDelay returns true if this error suggests a client delay as well as the +// suggested seconds to wait, or false if the error does not imply a wait. +func SuggestsClientDelay(err error) (int, bool) { + switch t := err.(type) { + case APIStatus: + if t.Status().Details != nil { + switch t.Status().Reason { + case metav1.StatusReasonServerTimeout, metav1.StatusReasonTimeout: + return int(t.Status().Details.RetryAfterSeconds), true + } + } + } + return 0, false +} + +func reasonForError(err error) metav1.StatusReason { + switch t := err.(type) { + case APIStatus: + return t.Status().Reason + } + return metav1.StatusReasonUnknown +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go b/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go new file mode 100644 index 000000000..c488d2d24 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/errors/errors_test.go @@ -0,0 +1,196 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package errors + +import ( + "errors" + "fmt" + "reflect" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +func resource(resource string) schema.GroupResource { + return schema.GroupResource{Group: "", Resource: resource} +} +func kind(kind string) schema.GroupKind { + return schema.GroupKind{Group: "", Kind: kind} +} + +func TestErrorNew(t *testing.T) { + err := NewAlreadyExists(resource("tests"), "1") + if !IsAlreadyExists(err) { + t.Errorf("expected to be %s", metav1.StatusReasonAlreadyExists) + } + if IsConflict(err) { + t.Errorf("expected to not be %s", metav1.StatusReasonConflict) + } + if IsNotFound(err) { + t.Errorf(fmt.Sprintf("expected to not be %s", metav1.StatusReasonNotFound)) + } + if IsInvalid(err) { + t.Errorf("expected to not be %s", metav1.StatusReasonInvalid) + } + if IsBadRequest(err) { + t.Errorf("expected to not be %s", metav1.StatusReasonBadRequest) + } + if IsForbidden(err) { + t.Errorf("expected to not be %s", metav1.StatusReasonForbidden) + } + if IsServerTimeout(err) { + t.Errorf("expected to not be %s", metav1.StatusReasonServerTimeout) + } + if IsMethodNotSupported(err) { + t.Errorf("expected to not be %s", metav1.StatusReasonMethodNotAllowed) + } + + if !IsConflict(NewConflict(resource("tests"), "2", errors.New("message"))) { + t.Errorf("expected to be conflict") + } + if !IsNotFound(NewNotFound(resource("tests"), "3")) { + t.Errorf("expected to be %s", metav1.StatusReasonNotFound) + } + if !IsInvalid(NewInvalid(kind("Test"), "2", nil)) { + t.Errorf("expected to be %s", metav1.StatusReasonInvalid) + } + if !IsBadRequest(NewBadRequest("reason")) { + t.Errorf("expected to be %s", metav1.StatusReasonBadRequest) + } + if !IsForbidden(NewForbidden(resource("tests"), "2", errors.New("reason"))) { + t.Errorf("expected to be %s", metav1.StatusReasonForbidden) + } + if !IsUnauthorized(NewUnauthorized("reason")) { + t.Errorf("expected to be %s", metav1.StatusReasonUnauthorized) + } + if !IsServerTimeout(NewServerTimeout(resource("tests"), "reason", 0)) { + t.Errorf("expected to be %s", metav1.StatusReasonServerTimeout) + } + if time, ok := SuggestsClientDelay(NewServerTimeout(resource("tests"), "doing something", 10)); time != 10 || !ok { + t.Errorf("expected to be %s", metav1.StatusReasonServerTimeout) + } + if time, ok := SuggestsClientDelay(NewTimeoutError("test reason", 10)); time != 10 || !ok { + t.Errorf("expected to be %s", metav1.StatusReasonTimeout) + } + if !IsMethodNotSupported(NewMethodNotSupported(resource("foos"), "delete")) { + t.Errorf("expected to be %s", metav1.StatusReasonMethodNotAllowed) + } +} + +func TestNewInvalid(t *testing.T) { + testCases := []struct { + Err *field.Error + Details *metav1.StatusDetails + }{ + { + field.Duplicate(field.NewPath("field[0].name"), "bar"), + &metav1.StatusDetails{ + Kind: "Kind", + Name: "name", + Causes: []metav1.StatusCause{{ + Type: metav1.CauseTypeFieldValueDuplicate, + Field: "field[0].name", + }}, + }, + }, + { + field.Invalid(field.NewPath("field[0].name"), "bar", "detail"), + &metav1.StatusDetails{ + Kind: "Kind", + Name: "name", + Causes: []metav1.StatusCause{{ + Type: metav1.CauseTypeFieldValueInvalid, + Field: "field[0].name", + }}, + }, + }, + { + field.NotFound(field.NewPath("field[0].name"), "bar"), + &metav1.StatusDetails{ + Kind: "Kind", + Name: "name", + Causes: []metav1.StatusCause{{ + Type: metav1.CauseTypeFieldValueNotFound, + Field: "field[0].name", + }}, + }, + }, + { + field.NotSupported(field.NewPath("field[0].name"), "bar", nil), + &metav1.StatusDetails{ + Kind: "Kind", + Name: "name", + Causes: []metav1.StatusCause{{ + Type: metav1.CauseTypeFieldValueNotSupported, + Field: "field[0].name", + }}, + }, + }, + { + field.Required(field.NewPath("field[0].name"), ""), + &metav1.StatusDetails{ + Kind: "Kind", + Name: "name", + Causes: []metav1.StatusCause{{ + Type: metav1.CauseTypeFieldValueRequired, + Field: "field[0].name", + }}, + }, + }, + } + for i, testCase := range testCases { + vErr, expected := testCase.Err, testCase.Details + expected.Causes[0].Message = vErr.ErrorBody() + err := NewInvalid(kind("Kind"), "name", field.ErrorList{vErr}) + status := err.ErrStatus + if status.Code != 422 || status.Reason != metav1.StatusReasonInvalid { + t.Errorf("%d: unexpected status: %#v", i, status) + } + if !reflect.DeepEqual(expected, status.Details) { + t.Errorf("%d: expected %#v, got %#v", i, expected, status.Details) + } + } +} + +func Test_reasonForError(t *testing.T) { + if e, a := metav1.StatusReasonUnknown, reasonForError(nil); e != a { + t.Errorf("unexpected reason type: %#v", a) + } +} + +type TestType struct{} + +func (obj *TestType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +func TestFromObject(t *testing.T) { + table := []struct { + obj runtime.Object + message string + }{ + {&metav1.Status{Message: "foobar"}, "foobar"}, + {&TestType{}, "unexpected object: &{}"}, + } + + for _, item := range table { + if e, a := item.message, FromObject(item.obj).Error(); e != a { + t.Errorf("Expected %v, got %v", e, a) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD b/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD new file mode 100644 index 000000000..b148d5cee --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/BUILD @@ -0,0 +1,59 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "meta_test.go", + "multirestmapper_test.go", + "priority_test.go", + "restmapper_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "default.go", + "doc.go", + "errors.go", + "firsthit_restmapper.go", + "help.go", + "interfaces.go", + "meta.go", + "multirestmapper.go", + "priority.go", + "restmapper.go", + "unstructured.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS new file mode 100755 index 000000000..6044c031e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS @@ -0,0 +1,26 @@ +reviewers: +- thockin +- smarterclayton +- wojtek-t +- deads2k +- brendandburns +- derekwaynecarr +- caesarxuchao +- mikedanese +- liggitt +- nikhiljindal +- gmarek +- kargakis +- janetkuo +- ncdc +- eparis +- dims +- krousey +- markturansky +- fabioy +- resouer +- david-mcmahon +- mfojtik +- jianhuiz +- feihujiang +- ghodss diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/default.go b/vendor/k8s.io/apimachinery/pkg/api/meta/default.go new file mode 100644 index 000000000..5ea906a2a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/default.go @@ -0,0 +1,51 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "strings" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" +) + +// NewDefaultRESTMapperFromScheme instantiates a DefaultRESTMapper based on types registered in the given scheme. +func NewDefaultRESTMapperFromScheme(defaultGroupVersions []schema.GroupVersion, interfacesFunc VersionInterfacesFunc, + importPathPrefix string, ignoredKinds, rootScoped sets.String, scheme *runtime.Scheme) *DefaultRESTMapper { + + mapper := NewDefaultRESTMapper(defaultGroupVersions, interfacesFunc) + // enumerate all supported versions, get the kinds, and register with the mapper how to address + // our resources. + for _, gv := range defaultGroupVersions { + for kind, oType := range scheme.KnownTypes(gv) { + gvk := gv.WithKind(kind) + // TODO: Remove import path check. + // We check the import path because we currently stuff both "api" and "extensions" objects + // into the same group within Scheme since Scheme has no notion of groups yet. + if !strings.Contains(oType.PkgPath(), importPathPrefix) || ignoredKinds.Has(kind) { + continue + } + scope := RESTScopeNamespace + if rootScoped.Has(kind) { + scope = RESTScopeRoot + } + mapper.Add(gvk, scope) + } + } + return mapper +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/doc.go b/vendor/k8s.io/apimachinery/pkg/api/meta/doc.go new file mode 100644 index 000000000..b6d42acf8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package meta provides functions for retrieving API metadata from objects +// belonging to the Kubernetes API +package meta // import "k8s.io/apimachinery/pkg/api/meta" diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/errors.go b/vendor/k8s.io/apimachinery/pkg/api/meta/errors.go new file mode 100644 index 000000000..1503bd6d8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/errors.go @@ -0,0 +1,105 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// AmbiguousResourceError is returned if the RESTMapper finds multiple matches for a resource +type AmbiguousResourceError struct { + PartialResource schema.GroupVersionResource + + MatchingResources []schema.GroupVersionResource + MatchingKinds []schema.GroupVersionKind +} + +func (e *AmbiguousResourceError) Error() string { + switch { + case len(e.MatchingKinds) > 0 && len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v and kinds %v", e.PartialResource, e.MatchingResources, e.MatchingKinds) + case len(e.MatchingKinds) > 0: + return fmt.Sprintf("%v matches multiple kinds %v", e.PartialResource, e.MatchingKinds) + case len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v", e.PartialResource, e.MatchingResources) + } + return fmt.Sprintf("%v matches multiple resources or kinds", e.PartialResource) +} + +// AmbiguousKindError is returned if the RESTMapper finds multiple matches for a kind +type AmbiguousKindError struct { + PartialKind schema.GroupVersionKind + + MatchingResources []schema.GroupVersionResource + MatchingKinds []schema.GroupVersionKind +} + +func (e *AmbiguousKindError) Error() string { + switch { + case len(e.MatchingKinds) > 0 && len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v and kinds %v", e.PartialKind, e.MatchingResources, e.MatchingKinds) + case len(e.MatchingKinds) > 0: + return fmt.Sprintf("%v matches multiple kinds %v", e.PartialKind, e.MatchingKinds) + case len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v", e.PartialKind, e.MatchingResources) + } + return fmt.Sprintf("%v matches multiple resources or kinds", e.PartialKind) +} + +func IsAmbiguousError(err error) bool { + if err == nil { + return false + } + switch err.(type) { + case *AmbiguousResourceError, *AmbiguousKindError: + return true + default: + return false + } +} + +// NoResourceMatchError is returned if the RESTMapper can't find any match for a resource +type NoResourceMatchError struct { + PartialResource schema.GroupVersionResource +} + +func (e *NoResourceMatchError) Error() string { + return fmt.Sprintf("no matches for %v", e.PartialResource) +} + +// NoKindMatchError is returned if the RESTMapper can't find any match for a kind +type NoKindMatchError struct { + PartialKind schema.GroupVersionKind +} + +func (e *NoKindMatchError) Error() string { + return fmt.Sprintf("no matches for %v", e.PartialKind) +} + +func IsNoMatchError(err error) bool { + if err == nil { + return false + } + switch err.(type) { + case *NoResourceMatchError, *NoKindMatchError: + return true + default: + return false + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go new file mode 100644 index 000000000..fd2210022 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/firsthit_restmapper.go @@ -0,0 +1,97 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime/schema" + utilerrors "k8s.io/apimachinery/pkg/util/errors" +) + +// FirstHitRESTMapper is a wrapper for multiple RESTMappers which returns the +// first successful result for the singular requests +type FirstHitRESTMapper struct { + MultiRESTMapper +} + +func (m FirstHitRESTMapper) String() string { + return fmt.Sprintf("FirstHitRESTMapper{\n\t%v\n}", m.MultiRESTMapper) +} + +func (m FirstHitRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { + errors := []error{} + for _, t := range m.MultiRESTMapper { + ret, err := t.ResourceFor(resource) + if err == nil { + return ret, nil + } + errors = append(errors, err) + } + + return schema.GroupVersionResource{}, collapseAggregateErrors(errors) +} + +func (m FirstHitRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { + errors := []error{} + for _, t := range m.MultiRESTMapper { + ret, err := t.KindFor(resource) + if err == nil { + return ret, nil + } + errors = append(errors, err) + } + + return schema.GroupVersionKind{}, collapseAggregateErrors(errors) +} + +// RESTMapping provides the REST mapping for the resource based on the +// kind and version. This implementation supports multiple REST schemas and +// return the first match. +func (m FirstHitRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) { + errors := []error{} + for _, t := range m.MultiRESTMapper { + ret, err := t.RESTMapping(gk, versions...) + if err == nil { + return ret, nil + } + errors = append(errors, err) + } + + return nil, collapseAggregateErrors(errors) +} + +// collapseAggregateErrors returns the minimal errors. it handles empty as nil, handles one item in a list +// by returning the item, and collapses all NoMatchErrors to a single one (since they should all be the same) +func collapseAggregateErrors(errors []error) error { + if len(errors) == 0 { + return nil + } + if len(errors) == 1 { + return errors[0] + } + + allNoMatchErrors := true + for _, err := range errors { + allNoMatchErrors = allNoMatchErrors && IsNoMatchError(err) + } + if allNoMatchErrors { + return errors[0] + } + + return utilerrors.NewAggregate(errors) +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/help.go b/vendor/k8s.io/apimachinery/pkg/api/meta/help.go new file mode 100644 index 000000000..9e0fb152a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/help.go @@ -0,0 +1,202 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + "reflect" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" +) + +// IsListType returns true if the provided Object has a slice called Items +func IsListType(obj runtime.Object) bool { + // if we're a runtime.Unstructured, check whether this is a list. + // TODO: refactor GetItemsPtr to use an interface that returns []runtime.Object + if unstructured, ok := obj.(runtime.Unstructured); ok { + return unstructured.IsList() + } + + _, err := GetItemsPtr(obj) + return err == nil +} + +// GetItemsPtr returns a pointer to the list object's Items member. +// If 'list' doesn't have an Items member, it's not really a list type +// and an error will be returned. +// This function will either return a pointer to a slice, or an error, but not both. +func GetItemsPtr(list runtime.Object) (interface{}, error) { + v, err := conversion.EnforcePtr(list) + if err != nil { + return nil, err + } + + items := v.FieldByName("Items") + if !items.IsValid() { + return nil, fmt.Errorf("no Items field in %#v", list) + } + switch items.Kind() { + case reflect.Interface, reflect.Ptr: + target := reflect.TypeOf(items.Interface()).Elem() + if target.Kind() != reflect.Slice { + return nil, fmt.Errorf("items: Expected slice, got %s", target.Kind()) + } + return items.Interface(), nil + case reflect.Slice: + return items.Addr().Interface(), nil + default: + return nil, fmt.Errorf("items: Expected slice, got %s", items.Kind()) + } +} + +// EachListItem invokes fn on each runtime.Object in the list. Any error immediately terminates +// the loop. +func EachListItem(obj runtime.Object, fn func(runtime.Object) error) error { + // TODO: Change to an interface call? + itemsPtr, err := GetItemsPtr(obj) + if err != nil { + return err + } + items, err := conversion.EnforcePtr(itemsPtr) + if err != nil { + return err + } + len := items.Len() + if len == 0 { + return nil + } + takeAddr := false + if elemType := items.Type().Elem(); elemType.Kind() != reflect.Ptr && elemType.Kind() != reflect.Interface { + if !items.Index(0).CanAddr() { + return fmt.Errorf("unable to take address of items in %T for EachListItem", obj) + } + takeAddr = true + } + + for i := 0; i < len; i++ { + raw := items.Index(i) + if takeAddr { + raw = raw.Addr() + } + switch item := raw.Interface().(type) { + case *runtime.RawExtension: + if err := fn(item.Object); err != nil { + return err + } + case runtime.Object: + if err := fn(item); err != nil { + return err + } + default: + obj, ok := item.(runtime.Object) + if !ok { + return fmt.Errorf("%v: item[%v]: Expected object, got %#v(%s)", obj, i, raw.Interface(), raw.Kind()) + } + if err := fn(obj); err != nil { + return err + } + } + } + return nil +} + +// ExtractList returns obj's Items element as an array of runtime.Objects. +// Returns an error if obj is not a List type (does not have an Items member). +func ExtractList(obj runtime.Object) ([]runtime.Object, error) { + itemsPtr, err := GetItemsPtr(obj) + if err != nil { + return nil, err + } + items, err := conversion.EnforcePtr(itemsPtr) + if err != nil { + return nil, err + } + list := make([]runtime.Object, items.Len()) + for i := range list { + raw := items.Index(i) + switch item := raw.Interface().(type) { + case runtime.RawExtension: + switch { + case item.Object != nil: + list[i] = item.Object + case item.Raw != nil: + // TODO: Set ContentEncoding and ContentType correctly. + list[i] = &runtime.Unknown{Raw: item.Raw} + default: + list[i] = nil + } + case runtime.Object: + list[i] = item + default: + var found bool + if list[i], found = raw.Addr().Interface().(runtime.Object); !found { + return nil, fmt.Errorf("%v: item[%v]: Expected object, got %#v(%s)", obj, i, raw.Interface(), raw.Kind()) + } + } + } + return list, nil +} + +// objectSliceType is the type of a slice of Objects +var objectSliceType = reflect.TypeOf([]runtime.Object{}) + +// SetList sets the given list object's Items member have the elements given in +// objects. +// Returns an error if list is not a List type (does not have an Items member), +// or if any of the objects are not of the right type. +func SetList(list runtime.Object, objects []runtime.Object) error { + itemsPtr, err := GetItemsPtr(list) + if err != nil { + return err + } + items, err := conversion.EnforcePtr(itemsPtr) + if err != nil { + return err + } + if items.Type() == objectSliceType { + items.Set(reflect.ValueOf(objects)) + return nil + } + slice := reflect.MakeSlice(items.Type(), len(objects), len(objects)) + for i := range objects { + dest := slice.Index(i) + if dest.Type() == reflect.TypeOf(runtime.RawExtension{}) { + dest = dest.FieldByName("Object") + } + + // check to see if you're directly assignable + if reflect.TypeOf(objects[i]).AssignableTo(dest.Type()) { + dest.Set(reflect.ValueOf(objects[i])) + continue + } + + src, err := conversion.EnforcePtr(objects[i]) + if err != nil { + return err + } + if src.Type().AssignableTo(dest.Type()) { + dest.Set(src) + } else if src.Type().ConvertibleTo(dest.Type()) { + dest.Set(src.Convert(dest.Type())) + } else { + return fmt.Errorf("item[%d]: can't assign or convert %v into %v", i, src.Type(), dest.Type()) + } + } + items.Set(slice) + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go b/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go new file mode 100644 index 000000000..b2c8c97b1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/interfaces.go @@ -0,0 +1,146 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" +) + +// VersionInterfaces contains the interfaces one should use for dealing with types of a particular version. +type VersionInterfaces struct { + runtime.ObjectConvertor + MetadataAccessor +} + +type ListMetaAccessor interface { + GetListMeta() List +} + +// List lets you work with list metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field will be a no-op and return a default value. +type List metav1.List + +// Type exposes the type and APIVersion of versioned or internal API objects. +type Type metav1.Type + +// MetadataAccessor lets you work with object and list metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field (Name, UID, Namespace on lists) will be a no-op and return +// a default value. +// +// MetadataAccessor exposes Interface in a way that can be used with multiple objects. +type MetadataAccessor interface { + APIVersion(obj runtime.Object) (string, error) + SetAPIVersion(obj runtime.Object, version string) error + + Kind(obj runtime.Object) (string, error) + SetKind(obj runtime.Object, kind string) error + + Namespace(obj runtime.Object) (string, error) + SetNamespace(obj runtime.Object, namespace string) error + + Name(obj runtime.Object) (string, error) + SetName(obj runtime.Object, name string) error + + GenerateName(obj runtime.Object) (string, error) + SetGenerateName(obj runtime.Object, name string) error + + UID(obj runtime.Object) (types.UID, error) + SetUID(obj runtime.Object, uid types.UID) error + + SelfLink(obj runtime.Object) (string, error) + SetSelfLink(obj runtime.Object, selfLink string) error + + Labels(obj runtime.Object) (map[string]string, error) + SetLabels(obj runtime.Object, labels map[string]string) error + + Annotations(obj runtime.Object) (map[string]string, error) + SetAnnotations(obj runtime.Object, annotations map[string]string) error + + runtime.ResourceVersioner +} + +type RESTScopeName string + +const ( + RESTScopeNameNamespace RESTScopeName = "namespace" + RESTScopeNameRoot RESTScopeName = "root" +) + +// RESTScope contains the information needed to deal with REST resources that are in a resource hierarchy +type RESTScope interface { + // Name of the scope + Name() RESTScopeName + // ParamName is the optional name of the parameter that should be inserted in the resource url + // If empty, no param will be inserted + ParamName() string + // ArgumentName is the optional name that should be used for the variable holding the value. + ArgumentName() string + // ParamDescription is the optional description to use to document the parameter in api documentation + ParamDescription() string +} + +// RESTMapping contains the information needed to deal with objects of a specific +// resource and kind in a RESTful manner. +type RESTMapping struct { + // Resource is a string representing the name of this resource as a REST client would see it + Resource string + + GroupVersionKind schema.GroupVersionKind + + // Scope contains the information needed to deal with REST Resources that are in a resource hierarchy + Scope RESTScope + + runtime.ObjectConvertor + MetadataAccessor +} + +// RESTMapper allows clients to map resources to kind, and map kind and version +// to interfaces for manipulating those objects. It is primarily intended for +// consumers of Kubernetes compatible REST APIs as defined in docs/devel/api-conventions.md. +// +// The Kubernetes API provides versioned resources and object kinds which are scoped +// to API groups. In other words, kinds and resources should not be assumed to be +// unique across groups. +// +// TODO: split into sub-interfaces +type RESTMapper interface { + // KindFor takes a partial resource and returns the single match. Returns an error if there are multiple matches + KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) + + // KindsFor takes a partial resource and returns the list of potential kinds in priority order + KindsFor(resource schema.GroupVersionResource) ([]schema.GroupVersionKind, error) + + // ResourceFor takes a partial resource and returns the single match. Returns an error if there are multiple matches + ResourceFor(input schema.GroupVersionResource) (schema.GroupVersionResource, error) + + // ResourcesFor takes a partial resource and returns the list of potential resource in priority order + ResourcesFor(input schema.GroupVersionResource) ([]schema.GroupVersionResource, error) + + // RESTMapping identifies a preferred resource mapping for the provided group kind. + RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) + // RESTMappings returns all resource mappings for the provided group kind if no + // version search is provided. Otherwise identifies a preferred resource mapping for + // the provided version(s). + RESTMappings(gk schema.GroupKind, versions ...string) ([]*RESTMapping, error) + + ResourceSingularizer(resource string) (singular string, err error) +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go b/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go new file mode 100644 index 000000000..45d850ea8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/meta.go @@ -0,0 +1,610 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + "reflect" + + "github.com/golang/glog" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1alpha1 "k8s.io/apimachinery/pkg/apis/meta/v1alpha1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" +) + +// errNotList is returned when an object implements the Object style interfaces but not the List style +// interfaces. +var errNotList = fmt.Errorf("object does not implement the List interfaces") + +// ListAccessor returns a List interface for the provided object or an error if the object does +// not provide List. +// IMPORTANT: Objects are a superset of lists, so all Objects return List metadata. Do not use this +// check to determine whether an object *is* a List. +// TODO: return bool instead of error +func ListAccessor(obj interface{}) (List, error) { + switch t := obj.(type) { + case List: + return t, nil + case metav1.List: + return t, nil + case ListMetaAccessor: + if m := t.GetListMeta(); m != nil { + return m, nil + } + return nil, errNotList + case metav1.ListMetaAccessor: + if m := t.GetListMeta(); m != nil { + return m, nil + } + return nil, errNotList + case metav1.Object: + return t, nil + case metav1.ObjectMetaAccessor: + if m := t.GetObjectMeta(); m != nil { + return m, nil + } + return nil, errNotList + default: + return nil, errNotList + } +} + +// errNotObject is returned when an object implements the List style interfaces but not the Object style +// interfaces. +var errNotObject = fmt.Errorf("object does not implement the Object interfaces") + +// Accessor takes an arbitrary object pointer and returns meta.Interface. +// obj must be a pointer to an API type. An error is returned if the minimum +// required fields are missing. Fields that are not required return the default +// value and are a no-op if set. +// TODO: return bool instead of error +func Accessor(obj interface{}) (metav1.Object, error) { + switch t := obj.(type) { + case metav1.Object: + return t, nil + case metav1.ObjectMetaAccessor: + if m := t.GetObjectMeta(); m != nil { + return m, nil + } + return nil, errNotObject + default: + return nil, errNotObject + } +} + +// AsPartialObjectMetadata takes the metav1 interface and returns a partial object. +// TODO: consider making this solely a conversion action. +func AsPartialObjectMetadata(m metav1.Object) *metav1alpha1.PartialObjectMetadata { + switch t := m.(type) { + case *metav1.ObjectMeta: + return &metav1alpha1.PartialObjectMetadata{ObjectMeta: *t} + default: + return &metav1alpha1.PartialObjectMetadata{ + ObjectMeta: metav1.ObjectMeta{ + Name: m.GetName(), + GenerateName: m.GetGenerateName(), + Namespace: m.GetNamespace(), + SelfLink: m.GetSelfLink(), + UID: m.GetUID(), + ResourceVersion: m.GetResourceVersion(), + Generation: m.GetGeneration(), + CreationTimestamp: m.GetCreationTimestamp(), + DeletionTimestamp: m.GetDeletionTimestamp(), + DeletionGracePeriodSeconds: m.GetDeletionGracePeriodSeconds(), + Labels: m.GetLabels(), + Annotations: m.GetAnnotations(), + OwnerReferences: m.GetOwnerReferences(), + Finalizers: m.GetFinalizers(), + ClusterName: m.GetClusterName(), + Initializers: m.GetInitializers(), + }, + } + } +} + +// TypeAccessor returns an interface that allows retrieving and modifying the APIVersion +// and Kind of an in-memory internal object. +// TODO: this interface is used to test code that does not have ObjectMeta or ListMeta +// in round tripping (objects which can use apiVersion/kind, but do not fit the Kube +// api conventions). +func TypeAccessor(obj interface{}) (Type, error) { + if typed, ok := obj.(runtime.Object); ok { + return objectAccessor{typed}, nil + } + v, err := conversion.EnforcePtr(obj) + if err != nil { + return nil, err + } + t := v.Type() + if v.Kind() != reflect.Struct { + return nil, fmt.Errorf("expected struct, but got %v: %v (%#v)", v.Kind(), t, v.Interface()) + } + + typeMeta := v.FieldByName("TypeMeta") + if !typeMeta.IsValid() { + return nil, fmt.Errorf("struct %v lacks embedded TypeMeta type", t) + } + a := &genericAccessor{} + if err := extractFromTypeMeta(typeMeta, a); err != nil { + return nil, fmt.Errorf("unable to find type fields on %#v: %v", typeMeta, err) + } + return a, nil +} + +type objectAccessor struct { + runtime.Object +} + +func (obj objectAccessor) GetKind() string { + return obj.GetObjectKind().GroupVersionKind().Kind +} + +func (obj objectAccessor) SetKind(kind string) { + gvk := obj.GetObjectKind().GroupVersionKind() + gvk.Kind = kind + obj.GetObjectKind().SetGroupVersionKind(gvk) +} + +func (obj objectAccessor) GetAPIVersion() string { + return obj.GetObjectKind().GroupVersionKind().GroupVersion().String() +} + +func (obj objectAccessor) SetAPIVersion(version string) { + gvk := obj.GetObjectKind().GroupVersionKind() + gv, err := schema.ParseGroupVersion(version) + if err != nil { + gv = schema.GroupVersion{Version: version} + } + gvk.Group, gvk.Version = gv.Group, gv.Version + obj.GetObjectKind().SetGroupVersionKind(gvk) +} + +// NewAccessor returns a MetadataAccessor that can retrieve +// or manipulate resource version on objects derived from core API +// metadata concepts. +func NewAccessor() MetadataAccessor { + return resourceAccessor{} +} + +// resourceAccessor implements ResourceVersioner and SelfLinker. +type resourceAccessor struct{} + +func (resourceAccessor) Kind(obj runtime.Object) (string, error) { + return objectAccessor{obj}.GetKind(), nil +} + +func (resourceAccessor) SetKind(obj runtime.Object, kind string) error { + objectAccessor{obj}.SetKind(kind) + return nil +} + +func (resourceAccessor) APIVersion(obj runtime.Object) (string, error) { + return objectAccessor{obj}.GetAPIVersion(), nil +} + +func (resourceAccessor) SetAPIVersion(obj runtime.Object, version string) error { + objectAccessor{obj}.SetAPIVersion(version) + return nil +} + +func (resourceAccessor) Namespace(obj runtime.Object) (string, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetNamespace(), nil +} + +func (resourceAccessor) SetNamespace(obj runtime.Object, namespace string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetNamespace(namespace) + return nil +} + +func (resourceAccessor) Name(obj runtime.Object) (string, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetName(), nil +} + +func (resourceAccessor) SetName(obj runtime.Object, name string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetName(name) + return nil +} + +func (resourceAccessor) GenerateName(obj runtime.Object) (string, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetGenerateName(), nil +} + +func (resourceAccessor) SetGenerateName(obj runtime.Object, name string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetGenerateName(name) + return nil +} + +func (resourceAccessor) UID(obj runtime.Object) (types.UID, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetUID(), nil +} + +func (resourceAccessor) SetUID(obj runtime.Object, uid types.UID) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetUID(uid) + return nil +} + +func (resourceAccessor) SelfLink(obj runtime.Object) (string, error) { + accessor, err := ListAccessor(obj) + if err != nil { + return "", err + } + return accessor.GetSelfLink(), nil +} + +func (resourceAccessor) SetSelfLink(obj runtime.Object, selfLink string) error { + accessor, err := ListAccessor(obj) + if err != nil { + return err + } + accessor.SetSelfLink(selfLink) + return nil +} + +func (resourceAccessor) Labels(obj runtime.Object) (map[string]string, error) { + accessor, err := Accessor(obj) + if err != nil { + return nil, err + } + return accessor.GetLabels(), nil +} + +func (resourceAccessor) SetLabels(obj runtime.Object, labels map[string]string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetLabels(labels) + return nil +} + +func (resourceAccessor) Annotations(obj runtime.Object) (map[string]string, error) { + accessor, err := Accessor(obj) + if err != nil { + return nil, err + } + return accessor.GetAnnotations(), nil +} + +func (resourceAccessor) SetAnnotations(obj runtime.Object, annotations map[string]string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetAnnotations(annotations) + return nil +} + +func (resourceAccessor) ResourceVersion(obj runtime.Object) (string, error) { + accessor, err := ListAccessor(obj) + if err != nil { + return "", err + } + return accessor.GetResourceVersion(), nil +} + +func (resourceAccessor) SetResourceVersion(obj runtime.Object, version string) error { + accessor, err := ListAccessor(obj) + if err != nil { + return err + } + accessor.SetResourceVersion(version) + return nil +} + +// extractFromOwnerReference extracts v to o. v is the OwnerReferences field of an object. +func extractFromOwnerReference(v reflect.Value, o *metav1.OwnerReference) error { + if err := runtime.Field(v, "APIVersion", &o.APIVersion); err != nil { + return err + } + if err := runtime.Field(v, "Kind", &o.Kind); err != nil { + return err + } + if err := runtime.Field(v, "Name", &o.Name); err != nil { + return err + } + if err := runtime.Field(v, "UID", &o.UID); err != nil { + return err + } + var controllerPtr *bool + if err := runtime.Field(v, "Controller", &controllerPtr); err != nil { + return err + } + if controllerPtr != nil { + controller := *controllerPtr + o.Controller = &controller + } + var blockOwnerDeletionPtr *bool + if err := runtime.Field(v, "BlockOwnerDeletion", &blockOwnerDeletionPtr); err != nil { + return err + } + if blockOwnerDeletionPtr != nil { + block := *blockOwnerDeletionPtr + o.BlockOwnerDeletion = &block + } + return nil +} + +// setOwnerReference sets v to o. v is the OwnerReferences field of an object. +func setOwnerReference(v reflect.Value, o *metav1.OwnerReference) error { + if err := runtime.SetField(o.APIVersion, v, "APIVersion"); err != nil { + return err + } + if err := runtime.SetField(o.Kind, v, "Kind"); err != nil { + return err + } + if err := runtime.SetField(o.Name, v, "Name"); err != nil { + return err + } + if err := runtime.SetField(o.UID, v, "UID"); err != nil { + return err + } + if o.Controller != nil { + controller := *(o.Controller) + if err := runtime.SetField(&controller, v, "Controller"); err != nil { + return err + } + } + if o.BlockOwnerDeletion != nil { + block := *(o.BlockOwnerDeletion) + if err := runtime.SetField(&block, v, "BlockOwnerDeletion"); err != nil { + return err + } + } + return nil +} + +// genericAccessor contains pointers to strings that can modify an arbitrary +// struct and implements the Accessor interface. +type genericAccessor struct { + namespace *string + name *string + generateName *string + uid *types.UID + apiVersion *string + kind *string + resourceVersion *string + selfLink *string + creationTimestamp *metav1.Time + deletionTimestamp **metav1.Time + labels *map[string]string + annotations *map[string]string + ownerReferences reflect.Value + finalizers *[]string +} + +func (a genericAccessor) GetNamespace() string { + if a.namespace == nil { + return "" + } + return *a.namespace +} + +func (a genericAccessor) SetNamespace(namespace string) { + if a.namespace == nil { + return + } + *a.namespace = namespace +} + +func (a genericAccessor) GetName() string { + if a.name == nil { + return "" + } + return *a.name +} + +func (a genericAccessor) SetName(name string) { + if a.name == nil { + return + } + *a.name = name +} + +func (a genericAccessor) GetGenerateName() string { + if a.generateName == nil { + return "" + } + return *a.generateName +} + +func (a genericAccessor) SetGenerateName(generateName string) { + if a.generateName == nil { + return + } + *a.generateName = generateName +} + +func (a genericAccessor) GetUID() types.UID { + if a.uid == nil { + return "" + } + return *a.uid +} + +func (a genericAccessor) SetUID(uid types.UID) { + if a.uid == nil { + return + } + *a.uid = uid +} + +func (a genericAccessor) GetAPIVersion() string { + return *a.apiVersion +} + +func (a genericAccessor) SetAPIVersion(version string) { + *a.apiVersion = version +} + +func (a genericAccessor) GetKind() string { + return *a.kind +} + +func (a genericAccessor) SetKind(kind string) { + *a.kind = kind +} + +func (a genericAccessor) GetResourceVersion() string { + return *a.resourceVersion +} + +func (a genericAccessor) SetResourceVersion(version string) { + *a.resourceVersion = version +} + +func (a genericAccessor) GetSelfLink() string { + return *a.selfLink +} + +func (a genericAccessor) SetSelfLink(selfLink string) { + *a.selfLink = selfLink +} + +func (a genericAccessor) GetCreationTimestamp() metav1.Time { + return *a.creationTimestamp +} + +func (a genericAccessor) SetCreationTimestamp(timestamp metav1.Time) { + *a.creationTimestamp = timestamp +} + +func (a genericAccessor) GetDeletionTimestamp() *metav1.Time { + return *a.deletionTimestamp +} + +func (a genericAccessor) SetDeletionTimestamp(timestamp *metav1.Time) { + *a.deletionTimestamp = timestamp +} + +func (a genericAccessor) GetLabels() map[string]string { + if a.labels == nil { + return nil + } + return *a.labels +} + +func (a genericAccessor) SetLabels(labels map[string]string) { + *a.labels = labels +} + +func (a genericAccessor) GetAnnotations() map[string]string { + if a.annotations == nil { + return nil + } + return *a.annotations +} + +func (a genericAccessor) SetAnnotations(annotations map[string]string) { + if a.annotations == nil { + emptyAnnotations := make(map[string]string) + a.annotations = &emptyAnnotations + } + *a.annotations = annotations +} + +func (a genericAccessor) GetFinalizers() []string { + if a.finalizers == nil { + return nil + } + return *a.finalizers +} + +func (a genericAccessor) SetFinalizers(finalizers []string) { + *a.finalizers = finalizers +} + +func (a genericAccessor) GetOwnerReferences() []metav1.OwnerReference { + var ret []metav1.OwnerReference + s := a.ownerReferences + if s.Kind() != reflect.Ptr || s.Elem().Kind() != reflect.Slice { + glog.Errorf("expect %v to be a pointer to slice", s) + return ret + } + s = s.Elem() + // Set the capacity to one element greater to avoid copy if the caller later append an element. + ret = make([]metav1.OwnerReference, s.Len(), s.Len()+1) + for i := 0; i < s.Len(); i++ { + if err := extractFromOwnerReference(s.Index(i), &ret[i]); err != nil { + glog.Errorf("extractFromOwnerReference failed: %v", err) + return ret + } + } + return ret +} + +func (a genericAccessor) SetOwnerReferences(references []metav1.OwnerReference) { + s := a.ownerReferences + if s.Kind() != reflect.Ptr || s.Elem().Kind() != reflect.Slice { + glog.Errorf("expect %v to be a pointer to slice", s) + } + s = s.Elem() + newReferences := reflect.MakeSlice(s.Type(), len(references), len(references)) + for i := 0; i < len(references); i++ { + if err := setOwnerReference(newReferences.Index(i), &references[i]); err != nil { + glog.Errorf("setOwnerReference failed: %v", err) + return + } + } + s.Set(newReferences) +} + +// extractFromTypeMeta extracts pointers to version and kind fields from an object +func extractFromTypeMeta(v reflect.Value, a *genericAccessor) error { + if err := runtime.FieldPtr(v, "APIVersion", &a.apiVersion); err != nil { + return err + } + if err := runtime.FieldPtr(v, "Kind", &a.kind); err != nil { + return err + } + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/meta_test.go b/vendor/k8s.io/apimachinery/pkg/api/meta/meta_test.go new file mode 100644 index 000000000..c7b753e0f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/meta_test.go @@ -0,0 +1,51 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "math/rand" + "reflect" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1alpha1 "k8s.io/apimachinery/pkg/apis/meta/v1alpha1" + "k8s.io/apimachinery/pkg/util/diff" + + fuzz "github.com/google/gofuzz" +) + +func TestAsPartialObjectMetadata(t *testing.T) { + f := fuzz.New().NilChance(.5).NumElements(0, 1).RandSource(rand.NewSource(1)) + + for i := 0; i < 100; i++ { + m := &metav1.ObjectMeta{} + f.Fuzz(m) + partial := AsPartialObjectMetadata(m) + if !reflect.DeepEqual(&partial.ObjectMeta, m) { + t.Fatalf("incomplete partial object metadata: %s", diff.ObjectReflectDiff(&partial.ObjectMeta, m)) + } + } + + for i := 0; i < 100; i++ { + m := &metav1alpha1.PartialObjectMetadata{} + f.Fuzz(&m.ObjectMeta) + partial := AsPartialObjectMetadata(m) + if !reflect.DeepEqual(&partial.ObjectMeta, &m.ObjectMeta) { + t.Fatalf("incomplete partial object metadata: %s", diff.ObjectReflectDiff(&partial.ObjectMeta, &m.ObjectMeta)) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go new file mode 100644 index 000000000..679098fe5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper.go @@ -0,0 +1,210 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + "strings" + + "k8s.io/apimachinery/pkg/runtime/schema" + utilerrors "k8s.io/apimachinery/pkg/util/errors" +) + +// MultiRESTMapper is a wrapper for multiple RESTMappers. +type MultiRESTMapper []RESTMapper + +func (m MultiRESTMapper) String() string { + nested := []string{} + for _, t := range m { + currString := fmt.Sprintf("%v", t) + splitStrings := strings.Split(currString, "\n") + nested = append(nested, strings.Join(splitStrings, "\n\t")) + } + + return fmt.Sprintf("MultiRESTMapper{\n\t%s\n}", strings.Join(nested, "\n\t")) +} + +// ResourceSingularizer converts a REST resource name from plural to singular (e.g., from pods to pod) +// This implementation supports multiple REST schemas and return the first match. +func (m MultiRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + for _, t := range m { + singular, err = t.ResourceSingularizer(resource) + if err == nil { + return + } + } + return +} + +func (m MultiRESTMapper) ResourcesFor(resource schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { + allGVRs := []schema.GroupVersionResource{} + for _, t := range m { + gvrs, err := t.ResourcesFor(resource) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + return nil, err + } + + // walk the existing values to de-dup + for _, curr := range gvrs { + found := false + for _, existing := range allGVRs { + if curr == existing { + found = true + break + } + } + + if !found { + allGVRs = append(allGVRs, curr) + } + } + } + + if len(allGVRs) == 0 { + return nil, &NoResourceMatchError{PartialResource: resource} + } + + return allGVRs, nil +} + +func (m MultiRESTMapper) KindsFor(resource schema.GroupVersionResource) (gvk []schema.GroupVersionKind, err error) { + allGVKs := []schema.GroupVersionKind{} + for _, t := range m { + gvks, err := t.KindsFor(resource) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + return nil, err + } + + // walk the existing values to de-dup + for _, curr := range gvks { + found := false + for _, existing := range allGVKs { + if curr == existing { + found = true + break + } + } + + if !found { + allGVKs = append(allGVKs, curr) + } + } + } + + if len(allGVKs) == 0 { + return nil, &NoResourceMatchError{PartialResource: resource} + } + + return allGVKs, nil +} + +func (m MultiRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { + resources, err := m.ResourcesFor(resource) + if err != nil { + return schema.GroupVersionResource{}, err + } + if len(resources) == 1 { + return resources[0], nil + } + + return schema.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} +} + +func (m MultiRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { + kinds, err := m.KindsFor(resource) + if err != nil { + return schema.GroupVersionKind{}, err + } + if len(kinds) == 1 { + return kinds[0], nil + } + + return schema.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} +} + +// RESTMapping provides the REST mapping for the resource based on the +// kind and version. This implementation supports multiple REST schemas and +// return the first match. +func (m MultiRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) { + allMappings := []*RESTMapping{} + errors := []error{} + + for _, t := range m { + currMapping, err := t.RESTMapping(gk, versions...) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + errors = append(errors, err) + continue + } + + allMappings = append(allMappings, currMapping) + } + + // if we got exactly one mapping, then use it even if other requested failed + if len(allMappings) == 1 { + return allMappings[0], nil + } + if len(allMappings) > 1 { + var kinds []schema.GroupVersionKind + for _, m := range allMappings { + kinds = append(kinds, m.GroupVersionKind) + } + return nil, &AmbiguousKindError{PartialKind: gk.WithVersion(""), MatchingKinds: kinds} + } + if len(errors) > 0 { + return nil, utilerrors.NewAggregate(errors) + } + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} +} + +// RESTMappings returns all possible RESTMappings for the provided group kind, or an error +// if the type is not recognized. +func (m MultiRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*RESTMapping, error) { + var allMappings []*RESTMapping + var errors []error + + for _, t := range m { + currMappings, err := t.RESTMappings(gk, versions...) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + errors = append(errors, err) + continue + } + allMappings = append(allMappings, currMappings...) + } + if len(errors) > 0 { + return nil, utilerrors.NewAggregate(errors) + } + if len(allMappings) == 0 { + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} + } + return allMappings, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper_test.go b/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper_test.go new file mode 100644 index 000000000..dec07a16f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/multirestmapper_test.go @@ -0,0 +1,355 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "errors" + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestMultiRESTMapperResourceFor(t *testing.T) { + tcs := []struct { + name string + + mapper MultiRESTMapper + input schema.GroupVersionResource + result schema.GroupVersionResource + err error + }{ + { + name: "empty", + mapper: MultiRESTMapper{}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: schema.GroupVersionResource{}, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "ignore not found", + mapper: MultiRESTMapper{fixedRESTMapper{err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "IGNORE_THIS"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: schema.GroupVersionResource{}, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "accept first failure", + mapper: MultiRESTMapper{fixedRESTMapper{err: errors.New("fail on this")}, fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{{Resource: "unused"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: schema.GroupVersionResource{}, + err: errors.New("fail on this"), + }, + } + + for _, tc := range tcs { + actualResult, actualErr := tc.mapper.ResourceFor(tc.input) + if e, a := tc.result, actualResult; e != a { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + switch { + case tc.err == nil && actualErr == nil: + case tc.err == nil: + t.Errorf("%s: unexpected error: %v", tc.name, actualErr) + case actualErr == nil: + t.Errorf("%s: expected error: %v got nil", tc.name, tc.err) + case tc.err.Error() != actualErr.Error(): + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestMultiRESTMapperResourcesFor(t *testing.T) { + tcs := []struct { + name string + + mapper MultiRESTMapper + input schema.GroupVersionResource + result []schema.GroupVersionResource + err error + }{ + { + name: "empty", + mapper: MultiRESTMapper{}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: nil, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "ignore not found", + mapper: MultiRESTMapper{fixedRESTMapper{err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "IGNORE_THIS"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: nil, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "accept first failure", + mapper: MultiRESTMapper{fixedRESTMapper{err: errors.New("fail on this")}, fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{{Resource: "unused"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: nil, + err: errors.New("fail on this"), + }, + { + name: "union and dedup", + mapper: MultiRESTMapper{ + fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{{Resource: "dupe"}, {Resource: "first"}}}, + fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{{Resource: "dupe"}, {Resource: "second"}}}, + }, + input: schema.GroupVersionResource{Resource: "foo"}, + result: []schema.GroupVersionResource{{Resource: "dupe"}, {Resource: "first"}, {Resource: "second"}}, + }, + { + name: "skip not and continue", + mapper: MultiRESTMapper{ + fixedRESTMapper{err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "IGNORE_THIS"}}}, + fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{{Resource: "first"}, {Resource: "second"}}}, + }, + input: schema.GroupVersionResource{Resource: "foo"}, + result: []schema.GroupVersionResource{{Resource: "first"}, {Resource: "second"}}, + }, + } + + for _, tc := range tcs { + actualResult, actualErr := tc.mapper.ResourcesFor(tc.input) + if e, a := tc.result, actualResult; !reflect.DeepEqual(e, a) { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + switch { + case tc.err == nil && actualErr == nil: + case tc.err == nil: + t.Errorf("%s: unexpected error: %v", tc.name, actualErr) + case actualErr == nil: + t.Errorf("%s: expected error: %v got nil", tc.name, tc.err) + case tc.err.Error() != actualErr.Error(): + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestMultiRESTMapperKindsFor(t *testing.T) { + tcs := []struct { + name string + + mapper MultiRESTMapper + input schema.GroupVersionResource + result []schema.GroupVersionKind + err error + }{ + { + name: "empty", + mapper: MultiRESTMapper{}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: nil, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "ignore not found", + mapper: MultiRESTMapper{fixedRESTMapper{err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "IGNORE_THIS"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: nil, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "accept first failure", + mapper: MultiRESTMapper{fixedRESTMapper{err: errors.New("fail on this")}, fixedRESTMapper{kindsFor: []schema.GroupVersionKind{{Kind: "unused"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: nil, + err: errors.New("fail on this"), + }, + { + name: "union and dedup", + mapper: MultiRESTMapper{ + fixedRESTMapper{kindsFor: []schema.GroupVersionKind{{Kind: "dupe"}, {Kind: "first"}}}, + fixedRESTMapper{kindsFor: []schema.GroupVersionKind{{Kind: "dupe"}, {Kind: "second"}}}, + }, + input: schema.GroupVersionResource{Resource: "foo"}, + result: []schema.GroupVersionKind{{Kind: "dupe"}, {Kind: "first"}, {Kind: "second"}}, + }, + { + name: "skip not and continue", + mapper: MultiRESTMapper{ + fixedRESTMapper{err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "IGNORE_THIS"}}}, + fixedRESTMapper{kindsFor: []schema.GroupVersionKind{{Kind: "first"}, {Kind: "second"}}}, + }, + input: schema.GroupVersionResource{Resource: "foo"}, + result: []schema.GroupVersionKind{{Kind: "first"}, {Kind: "second"}}, + }, + } + + for _, tc := range tcs { + actualResult, actualErr := tc.mapper.KindsFor(tc.input) + if e, a := tc.result, actualResult; !reflect.DeepEqual(e, a) { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + switch { + case tc.err == nil && actualErr == nil: + case tc.err == nil: + t.Errorf("%s: unexpected error: %v", tc.name, actualErr) + case actualErr == nil: + t.Errorf("%s: expected error: %v got nil", tc.name, tc.err) + case tc.err.Error() != actualErr.Error(): + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestMultiRESTMapperKindFor(t *testing.T) { + tcs := []struct { + name string + + mapper MultiRESTMapper + input schema.GroupVersionResource + result schema.GroupVersionKind + err error + }{ + { + name: "empty", + mapper: MultiRESTMapper{}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: schema.GroupVersionKind{}, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "ignore not found", + mapper: MultiRESTMapper{fixedRESTMapper{err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "IGNORE_THIS"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: schema.GroupVersionKind{}, + err: &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Resource: "foo"}}, + }, + { + name: "accept first failure", + mapper: MultiRESTMapper{fixedRESTMapper{err: errors.New("fail on this")}, fixedRESTMapper{kindsFor: []schema.GroupVersionKind{{Kind: "unused"}}}}, + input: schema.GroupVersionResource{Resource: "foo"}, + result: schema.GroupVersionKind{}, + err: errors.New("fail on this"), + }, + } + + for _, tc := range tcs { + actualResult, actualErr := tc.mapper.KindFor(tc.input) + if e, a := tc.result, actualResult; e != a { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + switch { + case tc.err == nil && actualErr == nil: + case tc.err == nil: + t.Errorf("%s: unexpected error: %v", tc.name, actualErr) + case actualErr == nil: + t.Errorf("%s: expected error: %v got nil", tc.name, tc.err) + case tc.err.Error() != actualErr.Error(): + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestMultiRESTMapperRESTMappings(t *testing.T) { + mapping1, mapping2 := &RESTMapping{}, &RESTMapping{} + tcs := []struct { + name string + + mapper MultiRESTMapper + input schema.GroupKind + result []*RESTMapping + err error + }{ + { + name: "empty", + mapper: MultiRESTMapper{}, + input: schema.GroupKind{Kind: "Foo"}, + result: nil, + err: &NoKindMatchError{PartialKind: schema.GroupVersionKind{Kind: "Foo"}}, + }, + { + name: "ignore not found", + mapper: MultiRESTMapper{fixedRESTMapper{err: &NoKindMatchError{PartialKind: schema.GroupVersionKind{Kind: "IGNORE_THIS"}}}}, + input: schema.GroupKind{Kind: "Foo"}, + result: nil, + err: &NoKindMatchError{PartialKind: schema.GroupVersionKind{Kind: "Foo"}}, + }, + { + name: "accept first failure", + mapper: MultiRESTMapper{fixedRESTMapper{err: errors.New("fail on this")}, fixedRESTMapper{mappings: []*RESTMapping{mapping1}}}, + input: schema.GroupKind{Kind: "Foo"}, + result: nil, + err: errors.New("fail on this"), + }, + { + name: "return both", + mapper: MultiRESTMapper{fixedRESTMapper{mappings: []*RESTMapping{mapping1}}, fixedRESTMapper{mappings: []*RESTMapping{mapping2}}}, + input: schema.GroupKind{Kind: "Foo"}, + result: []*RESTMapping{mapping1, mapping2}, + }, + } + + for _, tc := range tcs { + actualResult, actualErr := tc.mapper.RESTMappings(tc.input) + if e, a := tc.result, actualResult; !reflect.DeepEqual(e, a) { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + switch { + case tc.err == nil && actualErr == nil: + case tc.err == nil: + t.Errorf("%s: unexpected error: %v", tc.name, actualErr) + case actualErr == nil: + t.Errorf("%s: expected error: %v got nil", tc.name, tc.err) + case tc.err.Error() != actualErr.Error(): + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +type fixedRESTMapper struct { + resourcesFor []schema.GroupVersionResource + kindsFor []schema.GroupVersionKind + resourceFor schema.GroupVersionResource + kindFor schema.GroupVersionKind + mappings []*RESTMapping + + err error +} + +func (m fixedRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + return "", m.err +} + +func (m fixedRESTMapper) ResourcesFor(resource schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { + return m.resourcesFor, m.err +} + +func (m fixedRESTMapper) KindsFor(resource schema.GroupVersionResource) (gvk []schema.GroupVersionKind, err error) { + return m.kindsFor, m.err +} + +func (m fixedRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { + return m.resourceFor, m.err +} + +func (m fixedRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { + return m.kindFor, m.err +} + +func (m fixedRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (mapping *RESTMapping, err error) { + return nil, m.err +} + +func (m fixedRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) (mappings []*RESTMapping, err error) { + return m.mappings, m.err +} + +func (m fixedRESTMapper) ResourceIsValid(resource schema.GroupVersionResource) bool { + return false +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/priority.go b/vendor/k8s.io/apimachinery/pkg/api/meta/priority.go new file mode 100644 index 000000000..2a14aa7ab --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/priority.go @@ -0,0 +1,222 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const ( + AnyGroup = "*" + AnyVersion = "*" + AnyResource = "*" + AnyKind = "*" +) + +// PriorityRESTMapper is a wrapper for automatically choosing a particular Resource or Kind +// when multiple matches are possible +type PriorityRESTMapper struct { + // Delegate is the RESTMapper to use to locate all the Kind and Resource matches + Delegate RESTMapper + + // ResourcePriority is a list of priority patterns to apply to matching resources. + // The list of all matching resources is narrowed based on the patterns until only one remains. + // A pattern with no matches is skipped. A pattern with more than one match uses its + // matches as the list to continue matching against. + ResourcePriority []schema.GroupVersionResource + + // KindPriority is a list of priority patterns to apply to matching kinds. + // The list of all matching kinds is narrowed based on the patterns until only one remains. + // A pattern with no matches is skipped. A pattern with more than one match uses its + // matches as the list to continue matching against. + KindPriority []schema.GroupVersionKind +} + +func (m PriorityRESTMapper) String() string { + return fmt.Sprintf("PriorityRESTMapper{\n\t%v\n\t%v\n\t%v\n}", m.ResourcePriority, m.KindPriority, m.Delegate) +} + +// ResourceFor finds all resources, then passes them through the ResourcePriority patterns to find a single matching hit. +func (m PriorityRESTMapper) ResourceFor(partiallySpecifiedResource schema.GroupVersionResource) (schema.GroupVersionResource, error) { + originalGVRs, err := m.Delegate.ResourcesFor(partiallySpecifiedResource) + if err != nil { + return schema.GroupVersionResource{}, err + } + if len(originalGVRs) == 1 { + return originalGVRs[0], nil + } + + remainingGVRs := append([]schema.GroupVersionResource{}, originalGVRs...) + for _, pattern := range m.ResourcePriority { + matchedGVRs := []schema.GroupVersionResource{} + for _, gvr := range remainingGVRs { + if resourceMatches(pattern, gvr) { + matchedGVRs = append(matchedGVRs, gvr) + } + } + + switch len(matchedGVRs) { + case 0: + // if you have no matches, then nothing matched this pattern just move to the next + continue + case 1: + // one match, return + return matchedGVRs[0], nil + default: + // more than one match, use the matched hits as the list moving to the next pattern. + // this way you can have a series of selection criteria + remainingGVRs = matchedGVRs + } + } + + return schema.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingResources: originalGVRs} +} + +// KindFor finds all kinds, then passes them through the KindPriority patterns to find a single matching hit. +func (m PriorityRESTMapper) KindFor(partiallySpecifiedResource schema.GroupVersionResource) (schema.GroupVersionKind, error) { + originalGVKs, err := m.Delegate.KindsFor(partiallySpecifiedResource) + if err != nil { + return schema.GroupVersionKind{}, err + } + if len(originalGVKs) == 1 { + return originalGVKs[0], nil + } + + remainingGVKs := append([]schema.GroupVersionKind{}, originalGVKs...) + for _, pattern := range m.KindPriority { + matchedGVKs := []schema.GroupVersionKind{} + for _, gvr := range remainingGVKs { + if kindMatches(pattern, gvr) { + matchedGVKs = append(matchedGVKs, gvr) + } + } + + switch len(matchedGVKs) { + case 0: + // if you have no matches, then nothing matched this pattern just move to the next + continue + case 1: + // one match, return + return matchedGVKs[0], nil + default: + // more than one match, use the matched hits as the list moving to the next pattern. + // this way you can have a series of selection criteria + remainingGVKs = matchedGVKs + } + } + + return schema.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingKinds: originalGVKs} +} + +func resourceMatches(pattern schema.GroupVersionResource, resource schema.GroupVersionResource) bool { + if pattern.Group != AnyGroup && pattern.Group != resource.Group { + return false + } + if pattern.Version != AnyVersion && pattern.Version != resource.Version { + return false + } + if pattern.Resource != AnyResource && pattern.Resource != resource.Resource { + return false + } + + return true +} + +func kindMatches(pattern schema.GroupVersionKind, kind schema.GroupVersionKind) bool { + if pattern.Group != AnyGroup && pattern.Group != kind.Group { + return false + } + if pattern.Version != AnyVersion && pattern.Version != kind.Version { + return false + } + if pattern.Kind != AnyKind && pattern.Kind != kind.Kind { + return false + } + + return true +} + +func (m PriorityRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (mapping *RESTMapping, err error) { + mappings, err := m.Delegate.RESTMappings(gk) + if err != nil { + return nil, err + } + + // any versions the user provides take priority + priorities := m.KindPriority + if len(versions) > 0 { + priorities = make([]schema.GroupVersionKind, 0, len(m.KindPriority)+len(versions)) + for _, version := range versions { + gv := schema.GroupVersion{ + Version: version, + Group: gk.Group, + } + priorities = append(priorities, gv.WithKind(AnyKind)) + } + priorities = append(priorities, m.KindPriority...) + } + + remaining := append([]*RESTMapping{}, mappings...) + for _, pattern := range priorities { + var matching []*RESTMapping + for _, m := range remaining { + if kindMatches(pattern, m.GroupVersionKind) { + matching = append(matching, m) + } + } + + switch len(matching) { + case 0: + // if you have no matches, then nothing matched this pattern just move to the next + continue + case 1: + // one match, return + return matching[0], nil + default: + // more than one match, use the matched hits as the list moving to the next pattern. + // this way you can have a series of selection criteria + remaining = matching + } + } + if len(remaining) == 1 { + return remaining[0], nil + } + + var kinds []schema.GroupVersionKind + for _, m := range mappings { + kinds = append(kinds, m.GroupVersionKind) + } + return nil, &AmbiguousKindError{PartialKind: gk.WithVersion(""), MatchingKinds: kinds} +} + +func (m PriorityRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*RESTMapping, error) { + return m.Delegate.RESTMappings(gk, versions...) +} + +func (m PriorityRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + return m.Delegate.ResourceSingularizer(resource) +} + +func (m PriorityRESTMapper) ResourcesFor(partiallySpecifiedResource schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { + return m.Delegate.ResourcesFor(partiallySpecifiedResource) +} + +func (m PriorityRESTMapper) KindsFor(partiallySpecifiedResource schema.GroupVersionResource) (gvk []schema.GroupVersionKind, err error) { + return m.Delegate.KindsFor(partiallySpecifiedResource) +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/priority_test.go b/vendor/k8s.io/apimachinery/pkg/api/meta/priority_test.go new file mode 100644 index 000000000..f273a39f9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/priority_test.go @@ -0,0 +1,346 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "errors" + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestPriorityRESTMapperResourceForErrorHandling(t *testing.T) { + tcs := []struct { + name string + + delegate RESTMapper + resourcePatterns []schema.GroupVersionResource + result schema.GroupVersionResource + err string + }{ + { + name: "single hit", + delegate: fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{{Resource: "single-hit"}}}, + result: schema.GroupVersionResource{Resource: "single-hit"}, + }, + { + name: "ambiguous match", + delegate: fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{ + {Group: "one", Version: "a", Resource: "first"}, + {Group: "two", Version: "b", Resource: "second"}, + }}, + err: "matches multiple resources", + }, + { + name: "group selection", + delegate: fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{ + {Group: "one", Version: "a", Resource: "first"}, + {Group: "two", Version: "b", Resource: "second"}, + }}, + resourcePatterns: []schema.GroupVersionResource{ + {Group: "one", Version: AnyVersion, Resource: AnyResource}, + }, + result: schema.GroupVersionResource{Group: "one", Version: "a", Resource: "first"}, + }, + { + name: "empty match continues", + delegate: fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{ + {Group: "one", Version: "a", Resource: "first"}, + {Group: "two", Version: "b", Resource: "second"}, + }}, + resourcePatterns: []schema.GroupVersionResource{ + {Group: "fail", Version: AnyVersion, Resource: AnyResource}, + {Group: "one", Version: AnyVersion, Resource: AnyResource}, + }, + result: schema.GroupVersionResource{Group: "one", Version: "a", Resource: "first"}, + }, + { + name: "group followed by version selection", + delegate: fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{ + {Group: "one", Version: "a", Resource: "first"}, + {Group: "two", Version: "b", Resource: "second"}, + {Group: "one", Version: "c", Resource: "third"}, + }}, + resourcePatterns: []schema.GroupVersionResource{ + {Group: "one", Version: AnyVersion, Resource: AnyResource}, + {Group: AnyGroup, Version: "a", Resource: AnyResource}, + }, + result: schema.GroupVersionResource{Group: "one", Version: "a", Resource: "first"}, + }, + { + name: "resource selection", + delegate: fixedRESTMapper{resourcesFor: []schema.GroupVersionResource{ + {Group: "one", Version: "a", Resource: "first"}, + {Group: "one", Version: "a", Resource: "second"}, + }}, + resourcePatterns: []schema.GroupVersionResource{ + {Group: AnyGroup, Version: AnyVersion, Resource: "second"}, + }, + result: schema.GroupVersionResource{Group: "one", Version: "a", Resource: "second"}, + }, + } + + for _, tc := range tcs { + mapper := PriorityRESTMapper{Delegate: tc.delegate, ResourcePriority: tc.resourcePatterns} + + actualResult, actualErr := mapper.ResourceFor(schema.GroupVersionResource{}) + if e, a := tc.result, actualResult; e != a { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + if len(tc.err) == 0 && actualErr == nil { + continue + } + if len(tc.err) > 0 && actualErr == nil { + t.Errorf("%s: missing expected err: %v", tc.name, tc.err) + continue + } + if !strings.Contains(actualErr.Error(), tc.err) { + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestPriorityRESTMapperKindForErrorHandling(t *testing.T) { + tcs := []struct { + name string + + delegate RESTMapper + kindPatterns []schema.GroupVersionKind + result schema.GroupVersionKind + err string + }{ + { + name: "single hit", + delegate: fixedRESTMapper{kindsFor: []schema.GroupVersionKind{{Kind: "single-hit"}}}, + result: schema.GroupVersionKind{Kind: "single-hit"}, + }, + { + name: "ambiguous match", + delegate: fixedRESTMapper{kindsFor: []schema.GroupVersionKind{ + {Group: "one", Version: "a", Kind: "first"}, + {Group: "two", Version: "b", Kind: "second"}, + }}, + err: "matches multiple kinds", + }, + { + name: "group selection", + delegate: fixedRESTMapper{kindsFor: []schema.GroupVersionKind{ + {Group: "one", Version: "a", Kind: "first"}, + {Group: "two", Version: "b", Kind: "second"}, + }}, + kindPatterns: []schema.GroupVersionKind{ + {Group: "one", Version: AnyVersion, Kind: AnyKind}, + }, + result: schema.GroupVersionKind{Group: "one", Version: "a", Kind: "first"}, + }, + { + name: "empty match continues", + delegate: fixedRESTMapper{kindsFor: []schema.GroupVersionKind{ + {Group: "one", Version: "a", Kind: "first"}, + {Group: "two", Version: "b", Kind: "second"}, + }}, + kindPatterns: []schema.GroupVersionKind{ + {Group: "fail", Version: AnyVersion, Kind: AnyKind}, + {Group: "one", Version: AnyVersion, Kind: AnyKind}, + }, + result: schema.GroupVersionKind{Group: "one", Version: "a", Kind: "first"}, + }, + { + name: "group followed by version selection", + delegate: fixedRESTMapper{kindsFor: []schema.GroupVersionKind{ + {Group: "one", Version: "a", Kind: "first"}, + {Group: "two", Version: "b", Kind: "second"}, + {Group: "one", Version: "c", Kind: "third"}, + }}, + kindPatterns: []schema.GroupVersionKind{ + {Group: "one", Version: AnyVersion, Kind: AnyKind}, + {Group: AnyGroup, Version: "a", Kind: AnyKind}, + }, + result: schema.GroupVersionKind{Group: "one", Version: "a", Kind: "first"}, + }, + { + name: "kind selection", + delegate: fixedRESTMapper{kindsFor: []schema.GroupVersionKind{ + {Group: "one", Version: "a", Kind: "first"}, + {Group: "one", Version: "a", Kind: "second"}, + }}, + kindPatterns: []schema.GroupVersionKind{ + {Group: AnyGroup, Version: AnyVersion, Kind: "second"}, + }, + result: schema.GroupVersionKind{Group: "one", Version: "a", Kind: "second"}, + }, + } + + for _, tc := range tcs { + mapper := PriorityRESTMapper{Delegate: tc.delegate, KindPriority: tc.kindPatterns} + + actualResult, actualErr := mapper.KindFor(schema.GroupVersionResource{}) + if e, a := tc.result, actualResult; e != a { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + if len(tc.err) == 0 && actualErr == nil { + continue + } + if len(tc.err) > 0 && actualErr == nil { + t.Errorf("%s: missing expected err: %v", tc.name, tc.err) + continue + } + if !strings.Contains(actualErr.Error(), tc.err) { + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestPriorityRESTMapperRESTMapping(t *testing.T) { + mapping1 := &RESTMapping{ + GroupVersionKind: schema.GroupVersionKind{Kind: "Foo", Version: "v1alpha1"}, + } + mapping2 := &RESTMapping{ + GroupVersionKind: schema.GroupVersionKind{Kind: "Foo", Version: "v1"}, + } + mapping3 := &RESTMapping{ + GroupVersionKind: schema.GroupVersionKind{Group: "other", Kind: "Foo", Version: "v1"}, + } + allMappers := MultiRESTMapper{ + fixedRESTMapper{mappings: []*RESTMapping{mapping1}}, + fixedRESTMapper{mappings: []*RESTMapping{mapping2}}, + fixedRESTMapper{mappings: []*RESTMapping{mapping3}}, + } + tcs := []struct { + name string + + mapper PriorityRESTMapper + input schema.GroupKind + result *RESTMapping + err error + }{ + { + name: "empty", + mapper: PriorityRESTMapper{Delegate: MultiRESTMapper{}}, + input: schema.GroupKind{Kind: "Foo"}, + err: &NoKindMatchError{PartialKind: schema.GroupVersionKind{Kind: "Foo"}}, + }, + { + name: "ignore not found", + mapper: PriorityRESTMapper{Delegate: MultiRESTMapper{fixedRESTMapper{err: &NoKindMatchError{PartialKind: schema.GroupVersionKind{Kind: "IGNORE_THIS"}}}}}, + input: schema.GroupKind{Kind: "Foo"}, + err: &NoKindMatchError{PartialKind: schema.GroupVersionKind{Kind: "Foo"}}, + }, + { + name: "accept first failure", + mapper: PriorityRESTMapper{Delegate: MultiRESTMapper{fixedRESTMapper{err: errors.New("fail on this")}, fixedRESTMapper{mappings: []*RESTMapping{mapping1}}}}, + input: schema.GroupKind{Kind: "Foo"}, + err: errors.New("fail on this"), + }, + { + name: "return error for ambiguous", + mapper: PriorityRESTMapper{ + Delegate: allMappers, + }, + input: schema.GroupKind{Kind: "Foo"}, + err: &AmbiguousKindError{ + PartialKind: schema.GroupVersionKind{Kind: "Foo"}, + MatchingKinds: []schema.GroupVersionKind{ + {Kind: "Foo", Version: "v1alpha1"}, + {Kind: "Foo", Version: "v1"}, + {Group: "other", Kind: "Foo", Version: "v1"}, + }, + }, + }, + { + name: "accept only item", + mapper: PriorityRESTMapper{ + Delegate: fixedRESTMapper{mappings: []*RESTMapping{mapping1}}, + }, + input: schema.GroupKind{Kind: "Foo"}, + result: mapping1, + }, + { + name: "return single priority", + mapper: PriorityRESTMapper{ + Delegate: allMappers, + KindPriority: []schema.GroupVersionKind{{Version: "v1", Kind: AnyKind}, {Version: "v1alpha1", Kind: AnyKind}}, + }, + input: schema.GroupKind{Kind: "Foo"}, + result: mapping2, + }, + { + name: "return out of group match", + mapper: PriorityRESTMapper{ + Delegate: allMappers, + KindPriority: []schema.GroupVersionKind{{Group: AnyGroup, Version: "v1", Kind: AnyKind}, {Group: "other", Version: AnyVersion, Kind: AnyKind}}, + }, + input: schema.GroupKind{Kind: "Foo"}, + result: mapping3, + }, + } + + for _, tc := range tcs { + actualResult, actualErr := tc.mapper.RESTMapping(tc.input) + if e, a := tc.result, actualResult; !reflect.DeepEqual(e, a) { + t.Errorf("%s: expected %v, got %v", tc.name, e, a) + } + switch { + case tc.err == nil && actualErr == nil: + case tc.err == nil: + t.Errorf("%s: unexpected error: %v", tc.name, actualErr) + case actualErr == nil: + t.Errorf("%s: expected error: %v got nil", tc.name, tc.err) + case tc.err.Error() != actualErr.Error(): + t.Errorf("%s: expected %v, got %v", tc.name, tc.err, actualErr) + } + } +} + +func TestPriorityRESTMapperRESTMappingHonorsUserVersion(t *testing.T) { + mappingV2alpha1 := &RESTMapping{ + GroupVersionKind: schema.GroupVersionKind{Group: "Bar", Kind: "Foo", Version: "v2alpha1"}, + } + mappingV1 := &RESTMapping{ + GroupVersionKind: schema.GroupVersionKind{Group: "Bar", Kind: "Foo", Version: "v1"}, + } + + allMappers := MultiRESTMapper{ + fixedRESTMapper{mappings: []*RESTMapping{mappingV2alpha1}}, + fixedRESTMapper{mappings: []*RESTMapping{mappingV1}}, + } + + mapper := PriorityRESTMapper{ + Delegate: allMappers, + KindPriority: []schema.GroupVersionKind{{Group: "Bar", Version: "v2alpha1", Kind: AnyKind}, {Group: "Bar", Version: AnyVersion, Kind: AnyKind}}, + } + + outMapping1, err := mapper.RESTMapping(schema.GroupKind{Group: "Bar", Kind: "Foo"}, "v1") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + if outMapping1 != mappingV1 { + t.Errorf("asked for version %v, expected mapping for %v, got mapping for %v", "v1", mappingV1.GroupVersionKind, outMapping1.GroupVersionKind) + } + + outMapping2, err := mapper.RESTMapping(schema.GroupKind{Group: "Bar", Kind: "Foo"}, "v2alpha1") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + if outMapping2 != mappingV2alpha1 { + t.Errorf("asked for version %v, expected mapping for %v, got mapping for %v", "v2alpha1", mappingV2alpha1.GroupVersionKind, outMapping2.GroupVersionKind) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go new file mode 100644 index 000000000..c6b2597dd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper.go @@ -0,0 +1,545 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// TODO: move everything in this file to pkg/api/rest +package meta + +import ( + "fmt" + "sort" + "strings" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// Implements RESTScope interface +type restScope struct { + name RESTScopeName + paramName string + argumentName string + paramDescription string +} + +func (r *restScope) Name() RESTScopeName { + return r.name +} +func (r *restScope) ParamName() string { + return r.paramName +} +func (r *restScope) ArgumentName() string { + return r.argumentName +} +func (r *restScope) ParamDescription() string { + return r.paramDescription +} + +var RESTScopeNamespace = &restScope{ + name: RESTScopeNameNamespace, + paramName: "namespaces", + argumentName: "namespace", + paramDescription: "object name and auth scope, such as for teams and projects", +} + +var RESTScopeRoot = &restScope{ + name: RESTScopeNameRoot, +} + +// DefaultRESTMapper exposes mappings between the types defined in a +// runtime.Scheme. It assumes that all types defined the provided scheme +// can be mapped with the provided MetadataAccessor and Codec interfaces. +// +// The resource name of a Kind is defined as the lowercase, +// English-plural version of the Kind string. +// When converting from resource to Kind, the singular version of the +// resource name is also accepted for convenience. +// +// TODO: Only accept plural for some operations for increased control? +// (`get pod bar` vs `get pods bar`) +type DefaultRESTMapper struct { + defaultGroupVersions []schema.GroupVersion + + resourceToKind map[schema.GroupVersionResource]schema.GroupVersionKind + kindToPluralResource map[schema.GroupVersionKind]schema.GroupVersionResource + kindToScope map[schema.GroupVersionKind]RESTScope + singularToPlural map[schema.GroupVersionResource]schema.GroupVersionResource + pluralToSingular map[schema.GroupVersionResource]schema.GroupVersionResource + + interfacesFunc VersionInterfacesFunc +} + +func (m *DefaultRESTMapper) String() string { + return fmt.Sprintf("DefaultRESTMapper{kindToPluralResource=%v}", m.kindToPluralResource) +} + +var _ RESTMapper = &DefaultRESTMapper{} + +// VersionInterfacesFunc returns the appropriate typer, and metadata accessor for a +// given api version, or an error if no such api version exists. +type VersionInterfacesFunc func(version schema.GroupVersion) (*VersionInterfaces, error) + +// NewDefaultRESTMapper initializes a mapping between Kind and APIVersion +// to a resource name and back based on the objects in a runtime.Scheme +// and the Kubernetes API conventions. Takes a group name, a priority list of the versions +// to search when an object has no default version (set empty to return an error), +// and a function that retrieves the correct metadata for a given version. +func NewDefaultRESTMapper(defaultGroupVersions []schema.GroupVersion, f VersionInterfacesFunc) *DefaultRESTMapper { + resourceToKind := make(map[schema.GroupVersionResource]schema.GroupVersionKind) + kindToPluralResource := make(map[schema.GroupVersionKind]schema.GroupVersionResource) + kindToScope := make(map[schema.GroupVersionKind]RESTScope) + singularToPlural := make(map[schema.GroupVersionResource]schema.GroupVersionResource) + pluralToSingular := make(map[schema.GroupVersionResource]schema.GroupVersionResource) + // TODO: verify name mappings work correctly when versions differ + + return &DefaultRESTMapper{ + resourceToKind: resourceToKind, + kindToPluralResource: kindToPluralResource, + kindToScope: kindToScope, + defaultGroupVersions: defaultGroupVersions, + singularToPlural: singularToPlural, + pluralToSingular: pluralToSingular, + interfacesFunc: f, + } +} + +func (m *DefaultRESTMapper) Add(kind schema.GroupVersionKind, scope RESTScope) { + plural, singular := UnsafeGuessKindToResource(kind) + + m.singularToPlural[singular] = plural + m.pluralToSingular[plural] = singular + + m.resourceToKind[singular] = kind + m.resourceToKind[plural] = kind + + m.kindToPluralResource[kind] = plural + m.kindToScope[kind] = scope +} + +// unpluralizedSuffixes is a list of resource suffixes that are the same plural and singular +// This is only is only necessary because some bits of code are lazy and don't actually use the RESTMapper like they should. +// TODO eliminate this so that different callers can correctly map to resources. This probably means updating all +// callers to use the RESTMapper they mean. +var unpluralizedSuffixes = []string{ + "endpoints", +} + +// UnsafeGuessKindToResource converts Kind to a resource name. +// Broken. This method only "sort of" works when used outside of this package. It assumes that Kinds and Resources match +// and they aren't guaranteed to do so. +func UnsafeGuessKindToResource(kind schema.GroupVersionKind) ( /*plural*/ schema.GroupVersionResource /*singular*/, schema.GroupVersionResource) { + kindName := kind.Kind + if len(kindName) == 0 { + return schema.GroupVersionResource{}, schema.GroupVersionResource{} + } + singularName := strings.ToLower(kindName) + singular := kind.GroupVersion().WithResource(singularName) + + for _, skip := range unpluralizedSuffixes { + if strings.HasSuffix(singularName, skip) { + return singular, singular + } + } + + switch string(singularName[len(singularName)-1]) { + case "s": + return kind.GroupVersion().WithResource(singularName + "es"), singular + case "y": + return kind.GroupVersion().WithResource(strings.TrimSuffix(singularName, "y") + "ies"), singular + } + + return kind.GroupVersion().WithResource(singularName + "s"), singular +} + +// ResourceSingularizer implements RESTMapper +// It converts a resource name from plural to singular (e.g., from pods to pod) +func (m *DefaultRESTMapper) ResourceSingularizer(resourceType string) (string, error) { + partialResource := schema.GroupVersionResource{Resource: resourceType} + resources, err := m.ResourcesFor(partialResource) + if err != nil { + return resourceType, err + } + + singular := schema.GroupVersionResource{} + for _, curr := range resources { + currSingular, ok := m.pluralToSingular[curr] + if !ok { + continue + } + if singular.Empty() { + singular = currSingular + continue + } + + if currSingular.Resource != singular.Resource { + return resourceType, fmt.Errorf("multiple possible singular resources (%v) found for %v", resources, resourceType) + } + } + + if singular.Empty() { + return resourceType, fmt.Errorf("no singular of resource %v has been defined", resourceType) + } + + return singular.Resource, nil +} + +// coerceResourceForMatching makes the resource lower case and converts internal versions to unspecified (legacy behavior) +func coerceResourceForMatching(resource schema.GroupVersionResource) schema.GroupVersionResource { + resource.Resource = strings.ToLower(resource.Resource) + if resource.Version == runtime.APIVersionInternal { + resource.Version = "" + } + + return resource +} + +func (m *DefaultRESTMapper) ResourcesFor(input schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { + resource := coerceResourceForMatching(input) + + hasResource := len(resource.Resource) > 0 + hasGroup := len(resource.Group) > 0 + hasVersion := len(resource.Version) > 0 + + if !hasResource { + return nil, fmt.Errorf("a resource must be present, got: %v", resource) + } + + ret := []schema.GroupVersionResource{} + switch { + case hasGroup && hasVersion: + // fully qualified. Find the exact match + for plural, singular := range m.pluralToSingular { + if singular == resource { + ret = append(ret, plural) + break + } + if plural == resource { + ret = append(ret, plural) + break + } + } + + case hasGroup: + // given a group, prefer an exact match. If you don't find one, resort to a prefix match on group + foundExactMatch := false + requestedGroupResource := resource.GroupResource() + for plural, singular := range m.pluralToSingular { + if singular.GroupResource() == requestedGroupResource { + foundExactMatch = true + ret = append(ret, plural) + } + if plural.GroupResource() == requestedGroupResource { + foundExactMatch = true + ret = append(ret, plural) + } + } + + // if you didn't find an exact match, match on group prefixing. This allows storageclass.storage to match + // storageclass.storage.k8s.io + if !foundExactMatch { + for plural, singular := range m.pluralToSingular { + if !strings.HasPrefix(plural.Group, requestedGroupResource.Group) { + continue + } + if singular.Resource == requestedGroupResource.Resource { + ret = append(ret, plural) + } + if plural.Resource == requestedGroupResource.Resource { + ret = append(ret, plural) + } + } + + } + + case hasVersion: + for plural, singular := range m.pluralToSingular { + if singular.Version == resource.Version && singular.Resource == resource.Resource { + ret = append(ret, plural) + } + if plural.Version == resource.Version && plural.Resource == resource.Resource { + ret = append(ret, plural) + } + } + + default: + for plural, singular := range m.pluralToSingular { + if singular.Resource == resource.Resource { + ret = append(ret, plural) + } + if plural.Resource == resource.Resource { + ret = append(ret, plural) + } + } + } + + if len(ret) == 0 { + return nil, &NoResourceMatchError{PartialResource: resource} + } + + sort.Sort(resourceByPreferredGroupVersion{ret, m.defaultGroupVersions}) + return ret, nil +} + +func (m *DefaultRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { + resources, err := m.ResourcesFor(resource) + if err != nil { + return schema.GroupVersionResource{}, err + } + if len(resources) == 1 { + return resources[0], nil + } + + return schema.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} +} + +func (m *DefaultRESTMapper) KindsFor(input schema.GroupVersionResource) ([]schema.GroupVersionKind, error) { + resource := coerceResourceForMatching(input) + + hasResource := len(resource.Resource) > 0 + hasGroup := len(resource.Group) > 0 + hasVersion := len(resource.Version) > 0 + + if !hasResource { + return nil, fmt.Errorf("a resource must be present, got: %v", resource) + } + + ret := []schema.GroupVersionKind{} + switch { + // fully qualified. Find the exact match + case hasGroup && hasVersion: + kind, exists := m.resourceToKind[resource] + if exists { + ret = append(ret, kind) + } + + case hasGroup: + foundExactMatch := false + requestedGroupResource := resource.GroupResource() + for currResource, currKind := range m.resourceToKind { + if currResource.GroupResource() == requestedGroupResource { + foundExactMatch = true + ret = append(ret, currKind) + } + } + + // if you didn't find an exact match, match on group prefixing. This allows storageclass.storage to match + // storageclass.storage.k8s.io + if !foundExactMatch { + for currResource, currKind := range m.resourceToKind { + if !strings.HasPrefix(currResource.Group, requestedGroupResource.Group) { + continue + } + if currResource.Resource == requestedGroupResource.Resource { + ret = append(ret, currKind) + } + } + + } + + case hasVersion: + for currResource, currKind := range m.resourceToKind { + if currResource.Version == resource.Version && currResource.Resource == resource.Resource { + ret = append(ret, currKind) + } + } + + default: + for currResource, currKind := range m.resourceToKind { + if currResource.Resource == resource.Resource { + ret = append(ret, currKind) + } + } + } + + if len(ret) == 0 { + return nil, &NoResourceMatchError{PartialResource: input} + } + + sort.Sort(kindByPreferredGroupVersion{ret, m.defaultGroupVersions}) + return ret, nil +} + +func (m *DefaultRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { + kinds, err := m.KindsFor(resource) + if err != nil { + return schema.GroupVersionKind{}, err + } + if len(kinds) == 1 { + return kinds[0], nil + } + + return schema.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} +} + +type kindByPreferredGroupVersion struct { + list []schema.GroupVersionKind + sortOrder []schema.GroupVersion +} + +func (o kindByPreferredGroupVersion) Len() int { return len(o.list) } +func (o kindByPreferredGroupVersion) Swap(i, j int) { o.list[i], o.list[j] = o.list[j], o.list[i] } +func (o kindByPreferredGroupVersion) Less(i, j int) bool { + lhs := o.list[i] + rhs := o.list[j] + if lhs == rhs { + return false + } + + if lhs.GroupVersion() == rhs.GroupVersion() { + return lhs.Kind < rhs.Kind + } + + // otherwise, the difference is in the GroupVersion, so we need to sort with respect to the preferred order + lhsIndex := -1 + rhsIndex := -1 + + for i := range o.sortOrder { + if o.sortOrder[i] == lhs.GroupVersion() { + lhsIndex = i + } + if o.sortOrder[i] == rhs.GroupVersion() { + rhsIndex = i + } + } + + if rhsIndex == -1 { + return true + } + + return lhsIndex < rhsIndex +} + +type resourceByPreferredGroupVersion struct { + list []schema.GroupVersionResource + sortOrder []schema.GroupVersion +} + +func (o resourceByPreferredGroupVersion) Len() int { return len(o.list) } +func (o resourceByPreferredGroupVersion) Swap(i, j int) { o.list[i], o.list[j] = o.list[j], o.list[i] } +func (o resourceByPreferredGroupVersion) Less(i, j int) bool { + lhs := o.list[i] + rhs := o.list[j] + if lhs == rhs { + return false + } + + if lhs.GroupVersion() == rhs.GroupVersion() { + return lhs.Resource < rhs.Resource + } + + // otherwise, the difference is in the GroupVersion, so we need to sort with respect to the preferred order + lhsIndex := -1 + rhsIndex := -1 + + for i := range o.sortOrder { + if o.sortOrder[i] == lhs.GroupVersion() { + lhsIndex = i + } + if o.sortOrder[i] == rhs.GroupVersion() { + rhsIndex = i + } + } + + if rhsIndex == -1 { + return true + } + + return lhsIndex < rhsIndex +} + +// RESTMapping returns a struct representing the resource path and conversion interfaces a +// RESTClient should use to operate on the provided group/kind in order of versions. If a version search +// order is not provided, the search order provided to DefaultRESTMapper will be used to resolve which +// version should be used to access the named group/kind. +func (m *DefaultRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) { + mappings, err := m.RESTMappings(gk, versions...) + if err != nil { + return nil, err + } + if len(mappings) == 0 { + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} + } + // since we rely on RESTMappings method + // take the first match and return to the caller + // as this was the existing behavior. + return mappings[0], nil +} + +// RESTMappings returns the RESTMappings for the provided group kind. If a version search order +// is not provided, the search order provided to DefaultRESTMapper will be used. +func (m *DefaultRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*RESTMapping, error) { + mappings := make([]*RESTMapping, 0) + potentialGVK := make([]schema.GroupVersionKind, 0) + hadVersion := false + + // Pick an appropriate version + for _, version := range versions { + if len(version) == 0 || version == runtime.APIVersionInternal { + continue + } + currGVK := gk.WithVersion(version) + hadVersion = true + if _, ok := m.kindToPluralResource[currGVK]; ok { + potentialGVK = append(potentialGVK, currGVK) + break + } + } + // Use the default preferred versions + if !hadVersion && len(potentialGVK) == 0 { + for _, gv := range m.defaultGroupVersions { + if gv.Group != gk.Group { + continue + } + potentialGVK = append(potentialGVK, gk.WithVersion(gv.Version)) + } + } + + if len(potentialGVK) == 0 { + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} + } + + for _, gvk := range potentialGVK { + //Ensure we have a REST mapping + res, ok := m.kindToPluralResource[gvk] + if !ok { + continue + } + + // Ensure we have a REST scope + scope, ok := m.kindToScope[gvk] + if !ok { + return nil, fmt.Errorf("the provided version %q and kind %q cannot be mapped to a supported scope", gvk.GroupVersion(), gvk.Kind) + } + + interfaces, err := m.interfacesFunc(gvk.GroupVersion()) + if err != nil { + return nil, fmt.Errorf("the provided version %q has no relevant versions: %v", gvk.GroupVersion().String(), err) + } + + mappings = append(mappings, &RESTMapping{ + Resource: res.Resource, + GroupVersionKind: gvk, + Scope: scope, + + ObjectConvertor: interfaces.ObjectConvertor, + MetadataAccessor: interfaces.MetadataAccessor, + }) + } + + if len(mappings) == 0 { + return nil, &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Group: gk.Group, Resource: gk.Kind}} + } + return mappings, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper_test.go b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper_test.go new file mode 100644 index 000000000..292c4149e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/restmapper_test.go @@ -0,0 +1,751 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "errors" + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type fakeConvertor struct{} + +func (fakeConvertor) Convert(in, out, context interface{}) error { + return nil +} + +func (fakeConvertor) ConvertToVersion(in runtime.Object, _ runtime.GroupVersioner) (runtime.Object, error) { + return in, nil +} + +func (fakeConvertor) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { + return label, value, nil +} + +var validAccessor = resourceAccessor{} +var validConvertor = fakeConvertor{} + +func fakeInterfaces(version schema.GroupVersion) (*VersionInterfaces, error) { + return &VersionInterfaces{ObjectConvertor: validConvertor, MetadataAccessor: validAccessor}, nil +} + +var unmatchedErr = errors.New("no version") + +func unmatchedVersionInterfaces(version schema.GroupVersion) (*VersionInterfaces, error) { + return nil, unmatchedErr +} + +func TestRESTMapperVersionAndKindForResource(t *testing.T) { + testGroup := "test.group" + testVersion := "test" + testGroupVersion := schema.GroupVersion{Group: testGroup, Version: testVersion} + + testCases := []struct { + Resource schema.GroupVersionResource + GroupVersionToRegister schema.GroupVersion + ExpectedGVK schema.GroupVersionKind + Err bool + }{ + {Resource: schema.GroupVersionResource{Resource: "internalobjec"}, Err: true}, + {Resource: schema.GroupVersionResource{Resource: "internalObjec"}, Err: true}, + + {Resource: schema.GroupVersionResource{Resource: "internalobject"}, ExpectedGVK: testGroupVersion.WithKind("InternalObject")}, + {Resource: schema.GroupVersionResource{Resource: "internalobjects"}, ExpectedGVK: testGroupVersion.WithKind("InternalObject")}, + } + for i, testCase := range testCases { + mapper := NewDefaultRESTMapper([]schema.GroupVersion{testGroupVersion}, fakeInterfaces) + if len(testCase.ExpectedGVK.Kind) != 0 { + mapper.Add(testCase.ExpectedGVK, RESTScopeNamespace) + } + actualGVK, err := mapper.KindFor(testCase.Resource) + + hasErr := err != nil + if hasErr != testCase.Err { + t.Errorf("%d: unexpected error behavior %t: %v", i, testCase.Err, err) + continue + } + if err != nil { + continue + } + + if actualGVK != testCase.ExpectedGVK { + t.Errorf("%d: unexpected version and kind: e=%s a=%s", i, testCase.ExpectedGVK, actualGVK) + } + } +} + +func TestRESTMapperGroupForResource(t *testing.T) { + testCases := []struct { + Resource schema.GroupVersionResource + GroupVersionKind schema.GroupVersionKind + Err bool + }{ + {Resource: schema.GroupVersionResource{Resource: "myObject"}, GroupVersionKind: schema.GroupVersionKind{Group: "testapi", Version: "test", Kind: "MyObject"}}, + {Resource: schema.GroupVersionResource{Resource: "myobject"}, GroupVersionKind: schema.GroupVersionKind{Group: "testapi2", Version: "test", Kind: "MyObject"}}, + {Resource: schema.GroupVersionResource{Resource: "myObje"}, Err: true, GroupVersionKind: schema.GroupVersionKind{Group: "testapi", Version: "test", Kind: "MyObject"}}, + {Resource: schema.GroupVersionResource{Resource: "myobje"}, Err: true, GroupVersionKind: schema.GroupVersionKind{Group: "testapi", Version: "test", Kind: "MyObject"}}, + } + for i, testCase := range testCases { + mapper := NewDefaultRESTMapper([]schema.GroupVersion{testCase.GroupVersionKind.GroupVersion()}, fakeInterfaces) + mapper.Add(testCase.GroupVersionKind, RESTScopeNamespace) + + actualGVK, err := mapper.KindFor(testCase.Resource) + if testCase.Err { + if err == nil { + t.Errorf("%d: expected error", i) + } + } else if err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + } else if actualGVK != testCase.GroupVersionKind { + t.Errorf("%d: expected group %q, got %q", i, testCase.GroupVersionKind, actualGVK) + } + } +} + +func TestRESTMapperKindsFor(t *testing.T) { + testCases := []struct { + Name string + PreferredOrder []schema.GroupVersion + KindsToRegister []schema.GroupVersionKind + PartialResourceToRequest schema.GroupVersionResource + + ExpectedKinds []schema.GroupVersionKind + ExpectedKindErr string + }{ + { + // exact matches are preferred + Name: "groups, with group exact", + PreferredOrder: []schema.GroupVersion{ + {Group: "first-group-1", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group-1", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + PartialResourceToRequest: schema.GroupVersionResource{Group: "first-group", Resource: "my-kind"}, + + ExpectedKinds: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + }, + + { + // group prefixes work + Name: "groups, with group prefix", + PreferredOrder: []schema.GroupVersion{ + {Group: "second-group", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + }, + PartialResourceToRequest: schema.GroupVersionResource{Group: "first", Resource: "my-kind"}, + + ExpectedKinds: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + }, + + { + // group prefixes can be ambiguous + Name: "groups, with ambiguous group prefix", + PreferredOrder: []schema.GroupVersion{ + {Group: "first-group-1", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group-1", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + PartialResourceToRequest: schema.GroupVersionResource{Group: "first", Resource: "my-kind"}, + + ExpectedKinds: []schema.GroupVersionKind{ + {Group: "first-group-1", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + ExpectedKindErr: " matches multiple kinds ", + }, + + { + Name: "ambiguous groups, with preference order", + PreferredOrder: []schema.GroupVersion{ + {Group: "second-group", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "your-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "your-kind"}, + }, + PartialResourceToRequest: schema.GroupVersionResource{Resource: "my-kinds"}, + + ExpectedKinds: []schema.GroupVersionKind{ + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + ExpectedKindErr: " matches multiple kinds ", + }, + + { + Name: "ambiguous groups, with explicit group match", + PreferredOrder: []schema.GroupVersion{ + {Group: "second-group", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "your-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "your-kind"}, + }, + PartialResourceToRequest: schema.GroupVersionResource{Group: "first-group", Resource: "my-kinds"}, + + ExpectedKinds: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + }, + + { + Name: "ambiguous groups, with ambiguous version match", + PreferredOrder: []schema.GroupVersion{ + {Group: "first-group", Version: "first-version"}, + {Group: "second-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "your-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "your-kind"}, + }, + PartialResourceToRequest: schema.GroupVersionResource{Version: "first-version", Resource: "my-kinds"}, + + ExpectedKinds: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + }, + ExpectedKindErr: " matches multiple kinds ", + }, + } + for _, testCase := range testCases { + tcName := testCase.Name + mapper := NewDefaultRESTMapper(testCase.PreferredOrder, fakeInterfaces) + for _, kind := range testCase.KindsToRegister { + mapper.Add(kind, RESTScopeNamespace) + } + + actualKinds, err := mapper.KindsFor(testCase.PartialResourceToRequest) + if err != nil { + t.Errorf("%s: unexpected error: %v", tcName, err) + continue + } + if !reflect.DeepEqual(testCase.ExpectedKinds, actualKinds) { + t.Errorf("%s: expected %v, got %v", tcName, testCase.ExpectedKinds, actualKinds) + } + + singleKind, err := mapper.KindFor(testCase.PartialResourceToRequest) + if err == nil && len(testCase.ExpectedKindErr) != 0 { + t.Errorf("%s: expected error: %v", tcName, testCase.ExpectedKindErr) + continue + } + if err != nil { + if len(testCase.ExpectedKindErr) == 0 { + t.Errorf("%s: unexpected error: %v", tcName, err) + continue + } else { + if !strings.Contains(err.Error(), testCase.ExpectedKindErr) { + t.Errorf("%s: expected %v, got %v", tcName, testCase.ExpectedKindErr, err) + continue + } + } + + } else { + if testCase.ExpectedKinds[0] != singleKind { + t.Errorf("%s: expected %v, got %v", tcName, testCase.ExpectedKinds[0], singleKind) + } + + } + } +} + +func TestRESTMapperResourcesFor(t *testing.T) { + testCases := []struct { + Name string + PreferredOrder []schema.GroupVersion + KindsToRegister []schema.GroupVersionKind + PluralPartialResourceToRequest schema.GroupVersionResource + SingularPartialResourceToRequest schema.GroupVersionResource + + ExpectedResources []schema.GroupVersionResource + ExpectedResourceErr string + }{ + { + // exact matches are preferred + Name: "groups, with group exact", + PreferredOrder: []schema.GroupVersion{ + {Group: "first-group-1", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group-1", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + PluralPartialResourceToRequest: schema.GroupVersionResource{Group: "first-group", Resource: "my-kinds"}, + SingularPartialResourceToRequest: schema.GroupVersionResource{Group: "first-group", Resource: "my-kind"}, + + ExpectedResources: []schema.GroupVersionResource{ + {Group: "first-group", Version: "first-version", Resource: "my-kinds"}, + }, + }, + + { + // group prefixes work + Name: "groups, with group prefix", + PreferredOrder: []schema.GroupVersion{ + {Group: "second-group", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + }, + PluralPartialResourceToRequest: schema.GroupVersionResource{Group: "first", Resource: "my-kinds"}, + SingularPartialResourceToRequest: schema.GroupVersionResource{Group: "first", Resource: "my-kind"}, + + ExpectedResources: []schema.GroupVersionResource{ + {Group: "first-group", Version: "first-version", Resource: "my-kinds"}, + }, + }, + + { + // group prefixes can be ambiguous + Name: "groups, with ambiguous group prefix", + PreferredOrder: []schema.GroupVersion{ + {Group: "first-group-1", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group-1", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + }, + PluralPartialResourceToRequest: schema.GroupVersionResource{Group: "first", Resource: "my-kinds"}, + SingularPartialResourceToRequest: schema.GroupVersionResource{Group: "first", Resource: "my-kind"}, + + ExpectedResources: []schema.GroupVersionResource{ + {Group: "first-group-1", Version: "first-version", Resource: "my-kinds"}, + {Group: "first-group", Version: "first-version", Resource: "my-kinds"}, + }, + ExpectedResourceErr: " matches multiple resources ", + }, + + { + Name: "ambiguous groups, with preference order", + PreferredOrder: []schema.GroupVersion{ + {Group: "second-group", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "your-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "your-kind"}, + }, + PluralPartialResourceToRequest: schema.GroupVersionResource{Resource: "my-kinds"}, + SingularPartialResourceToRequest: schema.GroupVersionResource{Resource: "my-kind"}, + + ExpectedResources: []schema.GroupVersionResource{ + {Group: "second-group", Version: "first-version", Resource: "my-kinds"}, + {Group: "first-group", Version: "first-version", Resource: "my-kinds"}, + }, + ExpectedResourceErr: " matches multiple resources ", + }, + + { + Name: "ambiguous groups, with explicit group match", + PreferredOrder: []schema.GroupVersion{ + {Group: "second-group", Version: "first-version"}, + {Group: "first-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "your-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "your-kind"}, + }, + PluralPartialResourceToRequest: schema.GroupVersionResource{Group: "first-group", Resource: "my-kinds"}, + SingularPartialResourceToRequest: schema.GroupVersionResource{Group: "first-group", Resource: "my-kind"}, + + ExpectedResources: []schema.GroupVersionResource{ + {Group: "first-group", Version: "first-version", Resource: "my-kinds"}, + }, + }, + + { + Name: "ambiguous groups, with ambiguous version match", + PreferredOrder: []schema.GroupVersion{ + {Group: "first-group", Version: "first-version"}, + {Group: "second-group", Version: "first-version"}, + }, + KindsToRegister: []schema.GroupVersionKind{ + {Group: "first-group", Version: "first-version", Kind: "my-kind"}, + {Group: "first-group", Version: "first-version", Kind: "your-kind"}, + {Group: "second-group", Version: "first-version", Kind: "my-kind"}, + {Group: "second-group", Version: "first-version", Kind: "your-kind"}, + }, + PluralPartialResourceToRequest: schema.GroupVersionResource{Version: "first-version", Resource: "my-kinds"}, + SingularPartialResourceToRequest: schema.GroupVersionResource{Version: "first-version", Resource: "my-kind"}, + + ExpectedResources: []schema.GroupVersionResource{ + {Group: "first-group", Version: "first-version", Resource: "my-kinds"}, + {Group: "second-group", Version: "first-version", Resource: "my-kinds"}, + }, + ExpectedResourceErr: " matches multiple resources ", + }, + } + for _, testCase := range testCases { + tcName := testCase.Name + + for _, partialResource := range []schema.GroupVersionResource{testCase.PluralPartialResourceToRequest, testCase.SingularPartialResourceToRequest} { + mapper := NewDefaultRESTMapper(testCase.PreferredOrder, fakeInterfaces) + for _, kind := range testCase.KindsToRegister { + mapper.Add(kind, RESTScopeNamespace) + } + + actualResources, err := mapper.ResourcesFor(partialResource) + if err != nil { + t.Errorf("%s: unexpected error: %v", tcName, err) + continue + } + if !reflect.DeepEqual(testCase.ExpectedResources, actualResources) { + t.Errorf("%s: expected %v, got %v", tcName, testCase.ExpectedResources, actualResources) + } + + singleResource, err := mapper.ResourceFor(partialResource) + if err == nil && len(testCase.ExpectedResourceErr) != 0 { + t.Errorf("%s: expected error: %v", tcName, testCase.ExpectedResourceErr) + continue + } + if err != nil { + if len(testCase.ExpectedResourceErr) == 0 { + t.Errorf("%s: unexpected error: %v", tcName, err) + continue + } else { + if !strings.Contains(err.Error(), testCase.ExpectedResourceErr) { + t.Errorf("%s: expected %v, got %v", tcName, testCase.ExpectedResourceErr, err) + continue + } + } + + } else { + if testCase.ExpectedResources[0] != singleResource { + t.Errorf("%s: expected %v, got %v", tcName, testCase.ExpectedResources[0], singleResource) + } + + } + } + } +} + +func TestKindToResource(t *testing.T) { + testCases := []struct { + Kind string + Plural, Singular string + }{ + {Kind: "Pod", Plural: "pods", Singular: "pod"}, + + {Kind: "ReplicationController", Plural: "replicationcontrollers", Singular: "replicationcontroller"}, + + // Add "ies" when ending with "y" + {Kind: "ImageRepository", Plural: "imagerepositories", Singular: "imagerepository"}, + // Add "es" when ending with "s" + {Kind: "miss", Plural: "misses", Singular: "miss"}, + // Add "s" otherwise + {Kind: "lowercase", Plural: "lowercases", Singular: "lowercase"}, + } + for i, testCase := range testCases { + version := schema.GroupVersion{} + + plural, singular := UnsafeGuessKindToResource(version.WithKind(testCase.Kind)) + if singular != version.WithResource(testCase.Singular) || plural != version.WithResource(testCase.Plural) { + t.Errorf("%d: unexpected plural and singular: %v %v", i, plural, singular) + } + } +} + +func TestRESTMapperResourceSingularizer(t *testing.T) { + testGroupVersion := schema.GroupVersion{Group: "tgroup", Version: "test"} + + testCases := []struct { + Kind string + Plural string + Singular string + }{ + {Kind: "Pod", Plural: "pods", Singular: "pod"}, + {Kind: "ReplicationController", Plural: "replicationcontrollers", Singular: "replicationcontroller"}, + {Kind: "ImageRepository", Plural: "imagerepositories", Singular: "imagerepository"}, + {Kind: "Status", Plural: "statuses", Singular: "status"}, + + {Kind: "lowercase", Plural: "lowercases", Singular: "lowercase"}, + // TODO this test is broken. This updates to reflect actual behavior. Kinds are expected to be singular + // old (incorrect), coment: Don't add extra s if the original object is already plural + {Kind: "lowercases", Plural: "lowercaseses", Singular: "lowercases"}, + } + for i, testCase := range testCases { + mapper := NewDefaultRESTMapper([]schema.GroupVersion{testGroupVersion}, fakeInterfaces) + // create singular/plural mapping + mapper.Add(testGroupVersion.WithKind(testCase.Kind), RESTScopeNamespace) + + singular, err := mapper.ResourceSingularizer(testCase.Plural) + if err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + } + if singular != testCase.Singular { + t.Errorf("%d: mismatched singular: got %v, expected %v", i, singular, testCase.Singular) + } + } +} + +func TestRESTMapperRESTMapping(t *testing.T) { + testGroup := "tgroup" + testGroupVersion := schema.GroupVersion{Group: testGroup, Version: "test"} + internalGroupVersion := schema.GroupVersion{Group: testGroup, Version: "test"} + + testCases := []struct { + Kind string + APIGroupVersions []schema.GroupVersion + DefaultVersions []schema.GroupVersion + + Resource string + ExpectedGroupVersion *schema.GroupVersion + Err bool + }{ + {Kind: "Unknown", Err: true}, + {Kind: "InternalObject", Err: true}, + + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "Unknown", Err: true}, + + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"}, + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"}, + + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"}, + + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []schema.GroupVersion{}, Resource: "internalobjects", ExpectedGroupVersion: &schema.GroupVersion{Group: testGroup, Version: "test"}}, + + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"}, + + // TODO: add test for a resource that exists in one version but not another + } + for i, testCase := range testCases { + mapper := NewDefaultRESTMapper(testCase.DefaultVersions, fakeInterfaces) + mapper.Add(internalGroupVersion.WithKind("InternalObject"), RESTScopeNamespace) + + preferredVersions := []string{} + for _, gv := range testCase.APIGroupVersions { + preferredVersions = append(preferredVersions, gv.Version) + } + gk := schema.GroupKind{Group: testGroup, Kind: testCase.Kind} + + mapping, err := mapper.RESTMapping(gk, preferredVersions...) + hasErr := err != nil + if hasErr != testCase.Err { + t.Errorf("%d: unexpected error behavior %t: %v", i, testCase.Err, err) + } + if hasErr { + continue + } + if mapping.Resource != testCase.Resource { + t.Errorf("%d: unexpected resource: %#v", i, mapping) + } + + if mapping.MetadataAccessor == nil || mapping.ObjectConvertor == nil { + t.Errorf("%d: missing codec and accessor: %#v", i, mapping) + } + + groupVersion := testCase.ExpectedGroupVersion + if groupVersion == nil { + groupVersion = &testCase.APIGroupVersions[0] + } + if mapping.GroupVersionKind.GroupVersion() != *groupVersion { + t.Errorf("%d: unexpected version: %#v", i, mapping) + } + + } +} + +func TestRESTMapperRESTMappingSelectsVersion(t *testing.T) { + expectedGroupVersion1 := schema.GroupVersion{Group: "tgroup", Version: "test1"} + expectedGroupVersion2 := schema.GroupVersion{Group: "tgroup", Version: "test2"} + expectedGroupVersion3 := schema.GroupVersion{Group: "tgroup", Version: "test3"} + internalObjectGK := schema.GroupKind{Group: "tgroup", Kind: "InternalObject"} + otherObjectGK := schema.GroupKind{Group: "tgroup", Kind: "OtherObject"} + + mapper := NewDefaultRESTMapper([]schema.GroupVersion{expectedGroupVersion1, expectedGroupVersion2}, fakeInterfaces) + mapper.Add(expectedGroupVersion1.WithKind("InternalObject"), RESTScopeNamespace) + mapper.Add(expectedGroupVersion2.WithKind("OtherObject"), RESTScopeNamespace) + + // pick default matching object kind based on search order + mapping, err := mapper.RESTMapping(otherObjectGK) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if mapping.Resource != "otherobjects" || mapping.GroupVersionKind.GroupVersion() != expectedGroupVersion2 { + t.Errorf("unexpected mapping: %#v", mapping) + } + + mapping, err = mapper.RESTMapping(internalObjectGK) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if mapping.Resource != "internalobjects" || mapping.GroupVersionKind.GroupVersion() != expectedGroupVersion1 { + t.Errorf("unexpected mapping: %#v", mapping) + } + + // mismatch of version + mapping, err = mapper.RESTMapping(internalObjectGK, expectedGroupVersion2.Version) + if err == nil { + t.Errorf("unexpected non-error") + } + mapping, err = mapper.RESTMapping(otherObjectGK, expectedGroupVersion1.Version) + if err == nil { + t.Errorf("unexpected non-error") + } + + // not in the search versions + mapping, err = mapper.RESTMapping(otherObjectGK, expectedGroupVersion3.Version) + if err == nil { + t.Errorf("unexpected non-error") + } + + // explicit search order + mapping, err = mapper.RESTMapping(otherObjectGK, expectedGroupVersion3.Version, expectedGroupVersion1.Version) + if err == nil { + t.Errorf("unexpected non-error") + } + + mapping, err = mapper.RESTMapping(otherObjectGK, expectedGroupVersion3.Version, expectedGroupVersion2.Version) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if mapping.Resource != "otherobjects" || mapping.GroupVersionKind.GroupVersion() != expectedGroupVersion2 { + t.Errorf("unexpected mapping: %#v", mapping) + } +} + +func TestRESTMapperRESTMappings(t *testing.T) { + testGroup := "tgroup" + testGroupVersion := schema.GroupVersion{Group: testGroup, Version: "v1"} + + testCases := []struct { + Kind string + APIGroupVersions []schema.GroupVersion + DefaultVersions []schema.GroupVersion + AddGroupVersionKind []schema.GroupVersionKind + + ExpectedRESTMappings []*RESTMapping + Err bool + }{ + {Kind: "Unknown", Err: true}, + {Kind: "InternalObject", Err: true}, + + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "Unknown", Err: true}, + + // ask for specific version - not available - thus error + {DefaultVersions: []schema.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "v2"}}, Err: true}, + + // ask for specific version - available - check ExpectedRESTMappings + { + DefaultVersions: []schema.GroupVersion{testGroupVersion}, + Kind: "InternalObject", + APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "v2"}}, + AddGroupVersionKind: []schema.GroupVersionKind{schema.GroupVersion{Group: testGroup, Version: "v2"}.WithKind("InternalObject")}, + ExpectedRESTMappings: []*RESTMapping{{Resource: "internalobjects", GroupVersionKind: schema.GroupVersionKind{Group: testGroup, Version: "v2", Kind: "InternalObject"}}}, + }, + + // ask for specific versions - only one available - check ExpectedRESTMappings + { + DefaultVersions: []schema.GroupVersion{testGroupVersion}, + Kind: "InternalObject", + APIGroupVersions: []schema.GroupVersion{{Group: testGroup, Version: "v3"}, {Group: testGroup, Version: "v2"}}, + AddGroupVersionKind: []schema.GroupVersionKind{schema.GroupVersion{Group: testGroup, Version: "v2"}.WithKind("InternalObject")}, + ExpectedRESTMappings: []*RESTMapping{{Resource: "internalobjects", GroupVersionKind: schema.GroupVersionKind{Group: testGroup, Version: "v2", Kind: "InternalObject"}}}, + }, + + // do not ask for specific version - search through default versions - check ExpectedRESTMappings + { + DefaultVersions: []schema.GroupVersion{testGroupVersion, {Group: testGroup, Version: "v2"}}, + Kind: "InternalObject", + AddGroupVersionKind: []schema.GroupVersionKind{schema.GroupVersion{Group: testGroup, Version: "v1"}.WithKind("InternalObject"), schema.GroupVersion{Group: testGroup, Version: "v2"}.WithKind("InternalObject")}, + ExpectedRESTMappings: []*RESTMapping{{Resource: "internalobjects", GroupVersionKind: schema.GroupVersionKind{Group: testGroup, Version: "v1", Kind: "InternalObject"}}, {Resource: "internalobjects", GroupVersionKind: schema.GroupVersionKind{Group: testGroup, Version: "v2", Kind: "InternalObject"}}}, + }, + } + + for i, testCase := range testCases { + mapper := NewDefaultRESTMapper(testCase.DefaultVersions, fakeInterfaces) + for _, gvk := range testCase.AddGroupVersionKind { + mapper.Add(gvk, RESTScopeNamespace) + } + + preferredVersions := []string{} + for _, gv := range testCase.APIGroupVersions { + preferredVersions = append(preferredVersions, gv.Version) + } + gk := schema.GroupKind{Group: testGroup, Kind: testCase.Kind} + + mappings, err := mapper.RESTMappings(gk, preferredVersions...) + hasErr := err != nil + if hasErr != testCase.Err { + t.Errorf("%d: unexpected error behavior %t: %v", i, testCase.Err, err) + } + if hasErr { + continue + } + if len(mappings) != len(testCase.ExpectedRESTMappings) { + t.Errorf("%d: unexpected number = %d of rest mappings was returned, expected = %d", i, len(mappings), len(testCase.ExpectedRESTMappings)) + } + for j, mapping := range mappings { + exp := testCase.ExpectedRESTMappings[j] + if mapping.Resource != exp.Resource { + t.Errorf("%d - %d: unexpected resource: %#v", i, j, mapping) + } + if mapping.MetadataAccessor == nil || mapping.ObjectConvertor == nil { + t.Errorf("%d - %d: missing codec and accessor: %#v", i, j, mapping) + } + if mapping.GroupVersionKind != exp.GroupVersionKind { + t.Errorf("%d - %d: unexpected GroupVersionKind: %#v", i, j, mapping) + } + } + } +} + +func TestRESTMapperReportsErrorOnBadVersion(t *testing.T) { + expectedGroupVersion1 := schema.GroupVersion{Group: "tgroup", Version: "test1"} + expectedGroupVersion2 := schema.GroupVersion{Group: "tgroup", Version: "test2"} + internalObjectGK := schema.GroupKind{Group: "tgroup", Kind: "InternalObject"} + + mapper := NewDefaultRESTMapper([]schema.GroupVersion{expectedGroupVersion1, expectedGroupVersion2}, unmatchedVersionInterfaces) + mapper.Add(expectedGroupVersion1.WithKind("InternalObject"), RESTScopeNamespace) + _, err := mapper.RESTMapping(internalObjectGK, expectedGroupVersion1.Version) + if err == nil { + t.Errorf("unexpected non-error") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/meta/unstructured.go b/vendor/k8s.io/apimachinery/pkg/api/meta/unstructured.go new file mode 100644 index 000000000..3ebf24815 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/meta/unstructured.go @@ -0,0 +1,31 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// InterfacesForUnstructured returns VersionInterfaces suitable for +// dealing with unstructured.Unstructured objects. +func InterfacesForUnstructured(schema.GroupVersion) (*VersionInterfaces, error) { + return &VersionInterfaces{ + ObjectConvertor: &unstructured.UnstructuredObjectConverter{}, + MetadataAccessor: NewAccessor(), + }, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD b/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD new file mode 100644 index 000000000..571a6b1e9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/BUILD @@ -0,0 +1,55 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "amount_test.go", + "math_test.go", + "quantity_proto_test.go", + "quantity_test.go", + "scale_int_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/gopkg.in/inf.v0:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "amount.go", + "generated.pb.go", + "math.go", + "quantity.go", + "quantity_proto.go", + "scale_int.go", + "suffix.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/gopkg.in/inf.v0:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/openapi:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = ["quantity_example_test.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS new file mode 100755 index 000000000..b905e57f0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS @@ -0,0 +1,17 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- derekwaynecarr +- mikedanese +- saad-ali +- janetkuo +- timstclair +- eparis +- timothysc +- jbeda +- xiang90 +- mbohlool +- david-mcmahon +- goltermann diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go b/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go new file mode 100644 index 000000000..a8866a43e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go @@ -0,0 +1,299 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math/big" + "strconv" + + inf "gopkg.in/inf.v0" +) + +// Scale is used for getting and setting the base-10 scaled value. +// Base-2 scales are omitted for mathematical simplicity. +// See Quantity.ScaledValue for more details. +type Scale int32 + +// infScale adapts a Scale value to an inf.Scale value. +func (s Scale) infScale() inf.Scale { + return inf.Scale(-s) // inf.Scale is upside-down +} + +const ( + Nano Scale = -9 + Micro Scale = -6 + Milli Scale = -3 + Kilo Scale = 3 + Mega Scale = 6 + Giga Scale = 9 + Tera Scale = 12 + Peta Scale = 15 + Exa Scale = 18 +) + +var ( + Zero = int64Amount{} + + // Used by quantity strings - treat as read only + zeroBytes = []byte("0") +) + +// int64Amount represents a fixed precision numerator and arbitrary scale exponent. It is faster +// than operations on inf.Dec for values that can be represented as int64. +// +k8s:openapi-gen=true +type int64Amount struct { + value int64 + scale Scale +} + +// Sign returns 0 if the value is zero, -1 if it is less than 0, or 1 if it is greater than 0. +func (a int64Amount) Sign() int { + switch { + case a.value == 0: + return 0 + case a.value > 0: + return 1 + default: + return -1 + } +} + +// AsInt64 returns the current amount as an int64 at scale 0, or false if the value cannot be +// represented in an int64 OR would result in a loss of precision. This method is intended as +// an optimization to avoid calling AsDec. +func (a int64Amount) AsInt64() (int64, bool) { + if a.scale == 0 { + return a.value, true + } + if a.scale < 0 { + // TODO: attempt to reduce factors, although it is assumed that factors are reduced prior + // to the int64Amount being created. + return 0, false + } + return positiveScaleInt64(a.value, a.scale) +} + +// AsScaledInt64 returns an int64 representing the value of this amount at the specified scale, +// rounding up, or false if that would result in overflow. (1e20).AsScaledInt64(1) would result +// in overflow because 1e19 is not representable as an int64. Note that setting a scale larger +// than the current value may result in loss of precision - i.e. (1e-6).AsScaledInt64(0) would +// return 1, because 0.000001 is rounded up to 1. +func (a int64Amount) AsScaledInt64(scale Scale) (result int64, ok bool) { + if a.scale < scale { + result, _ = negativeScaleInt64(a.value, scale-a.scale) + return result, true + } + return positiveScaleInt64(a.value, a.scale-scale) +} + +// AsDec returns an inf.Dec representation of this value. +func (a int64Amount) AsDec() *inf.Dec { + var base inf.Dec + base.SetUnscaled(a.value) + base.SetScale(inf.Scale(-a.scale)) + return &base +} + +// Cmp returns 0 if a and b are equal, 1 if a is greater than b, or -1 if a is less than b. +func (a int64Amount) Cmp(b int64Amount) int { + switch { + case a.scale == b.scale: + // compare only the unscaled portion + case a.scale > b.scale: + result, remainder, exact := divideByScaleInt64(b.value, a.scale-b.scale) + if !exact { + return a.AsDec().Cmp(b.AsDec()) + } + if result == a.value { + switch { + case remainder == 0: + return 0 + case remainder > 0: + return -1 + default: + return 1 + } + } + b.value = result + default: + result, remainder, exact := divideByScaleInt64(a.value, b.scale-a.scale) + if !exact { + return a.AsDec().Cmp(b.AsDec()) + } + if result == b.value { + switch { + case remainder == 0: + return 0 + case remainder > 0: + return 1 + default: + return -1 + } + } + a.value = result + } + + switch { + case a.value == b.value: + return 0 + case a.value < b.value: + return -1 + default: + return 1 + } +} + +// Add adds two int64Amounts together, matching scales. It will return false and not mutate +// a if overflow or underflow would result. +func (a *int64Amount) Add(b int64Amount) bool { + switch { + case b.value == 0: + return true + case a.value == 0: + a.value = b.value + a.scale = b.scale + return true + case a.scale == b.scale: + c, ok := int64Add(a.value, b.value) + if !ok { + return false + } + a.value = c + case a.scale > b.scale: + c, ok := positiveScaleInt64(a.value, a.scale-b.scale) + if !ok { + return false + } + c, ok = int64Add(c, b.value) + if !ok { + return false + } + a.scale = b.scale + a.value = c + default: + c, ok := positiveScaleInt64(b.value, b.scale-a.scale) + if !ok { + return false + } + c, ok = int64Add(a.value, c) + if !ok { + return false + } + a.value = c + } + return true +} + +// Sub removes the value of b from the current amount, or returns false if underflow would result. +func (a *int64Amount) Sub(b int64Amount) bool { + return a.Add(int64Amount{value: -b.value, scale: b.scale}) +} + +// AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision +// was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6. +func (a int64Amount) AsScale(scale Scale) (int64Amount, bool) { + if a.scale >= scale { + return a, true + } + result, exact := negativeScaleInt64(a.value, scale-a.scale) + return int64Amount{value: result, scale: scale}, exact +} + +// AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. The value is adjusted +// until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3. +func (a int64Amount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { + mantissa := a.value + exponent = int32(a.scale) + + amount, times := removeInt64Factors(mantissa, 10) + exponent += int32(times) + + // make sure exponent is a multiple of 3 + var ok bool + switch exponent % 3 { + case 1, -2: + amount, ok = int64MultiplyScale10(amount) + if !ok { + return infDecAmount{a.AsDec()}.AsCanonicalBytes(out) + } + exponent = exponent - 1 + case 2, -1: + amount, ok = int64MultiplyScale100(amount) + if !ok { + return infDecAmount{a.AsDec()}.AsCanonicalBytes(out) + } + exponent = exponent - 2 + } + return strconv.AppendInt(out, amount, 10), exponent +} + +// AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would +// return []byte("2048"), 1. +func (a int64Amount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) { + value, ok := a.AsScaledInt64(0) + if !ok { + return infDecAmount{a.AsDec()}.AsCanonicalBase1024Bytes(out) + } + amount, exponent := removeInt64Factors(value, 1024) + return strconv.AppendInt(out, amount, 10), exponent +} + +// infDecAmount implements common operations over an inf.Dec that are specific to the quantity +// representation. +type infDecAmount struct { + *inf.Dec +} + +// AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision +// was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6. +func (a infDecAmount) AsScale(scale Scale) (infDecAmount, bool) { + tmp := &inf.Dec{} + tmp.Round(a.Dec, scale.infScale(), inf.RoundUp) + return infDecAmount{tmp}, tmp.Cmp(a.Dec) == 0 +} + +// AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. The value is adjusted +// until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3. +func (a infDecAmount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { + mantissa := a.Dec.UnscaledBig() + exponent = int32(-a.Dec.Scale()) + amount := big.NewInt(0).Set(mantissa) + // move all factors of 10 into the exponent for easy reasoning + amount, times := removeBigIntFactors(amount, bigTen) + exponent += times + + // make sure exponent is a multiple of 3 + for exponent%3 != 0 { + amount.Mul(amount, bigTen) + exponent-- + } + + return append(out, amount.String()...), exponent +} + +// AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would +// return []byte("2048"), 1. +func (a infDecAmount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) { + tmp := &inf.Dec{} + tmp.Round(a.Dec, 0, inf.RoundUp) + amount, exponent := removeBigIntFactors(tmp.UnscaledBig(), big1024) + return append(out, amount.String()...), exponent +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/amount_test.go b/vendor/k8s.io/apimachinery/pkg/api/resource/amount_test.go new file mode 100644 index 000000000..dd070bad3 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/amount_test.go @@ -0,0 +1,133 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "testing" +) + +func TestInt64AmountAsInt64(t *testing.T) { + for _, test := range []struct { + value int64 + scale Scale + result int64 + ok bool + }{ + {100, 0, 100, true}, + {100, 1, 1000, true}, + {100, -5, 0, false}, + {100, 100, 0, false}, + } { + r, ok := int64Amount{value: test.value, scale: test.scale}.AsInt64() + if r != test.result { + t.Errorf("%v: unexpected result: %d", test, r) + } + if ok != test.ok { + t.Errorf("%v: unexpected ok: %t", test, ok) + } + } +} + +func TestInt64AmountAdd(t *testing.T) { + for _, test := range []struct { + a, b, c int64Amount + ok bool + }{ + {int64Amount{value: 100, scale: 1}, int64Amount{value: 10, scale: 2}, int64Amount{value: 200, scale: 1}, true}, + {int64Amount{value: 100, scale: 1}, int64Amount{value: 1, scale: 2}, int64Amount{value: 110, scale: 1}, true}, + {int64Amount{value: 100, scale: 1}, int64Amount{value: 1, scale: 100}, int64Amount{value: 1, scale: 100}, false}, + {int64Amount{value: -5, scale: 2}, int64Amount{value: 50, scale: 1}, int64Amount{value: 0, scale: 1}, true}, + {int64Amount{value: -5, scale: 2}, int64Amount{value: 5, scale: 2}, int64Amount{value: 0, scale: 2}, true}, + + {int64Amount{value: mostPositive, scale: -1}, int64Amount{value: 1, scale: -1}, int64Amount{value: 0, scale: -1}, false}, + {int64Amount{value: mostPositive, scale: -1}, int64Amount{value: 0, scale: -1}, int64Amount{value: mostPositive, scale: -1}, true}, + {int64Amount{value: mostPositive / 10, scale: 1}, int64Amount{value: 10, scale: 0}, int64Amount{value: mostPositive, scale: -1}, false}, + } { + c := test.a + ok := c.Add(test.b) + if ok != test.ok { + t.Errorf("%v: unexpected ok: %t", test, ok) + } + if ok { + if c != test.c { + t.Errorf("%v: unexpected result: %d", test, c) + } + } else { + if c != test.a { + t.Errorf("%v: overflow addition mutated source: %d", test, c) + } + } + + // addition is commutative + c = test.b + if ok := c.Add(test.a); ok != test.ok { + t.Errorf("%v: unexpected ok: %t", test, ok) + } + if ok { + if c != test.c { + t.Errorf("%v: unexpected result: %d", test, c) + } + } else { + if c != test.b { + t.Errorf("%v: overflow addition mutated source: %d", test, c) + } + } + } +} +func TestInt64AsCanonicalString(t *testing.T) { + for _, test := range []struct { + value int64 + scale Scale + result string + exponent int32 + }{ + {100, 0, "100", 0}, + {100, 1, "1", 3}, + {100, -1, "10", 0}, + {10800, -10, "1080", -9}, + } { + r, exp := int64Amount{value: test.value, scale: test.scale}.AsCanonicalBytes(nil) + if string(r) != test.result { + t.Errorf("%v: unexpected result: %s", test, r) + } + if exp != test.exponent { + t.Errorf("%v: unexpected exponent: %d", test, exp) + } + } +} + +func TestAmountSign(t *testing.T) { + table := []struct { + i int64Amount + expect int + }{ + {int64Amount{value: -50, scale: 1}, -1}, + {int64Amount{value: 0, scale: 1}, 0}, + {int64Amount{value: 300, scale: 1}, 1}, + {int64Amount{value: -50, scale: -8}, -1}, + {int64Amount{value: 50, scale: -8}, 1}, + {int64Amount{value: 0, scale: -8}, 0}, + {int64Amount{value: -50, scale: 0}, -1}, + {int64Amount{value: 50, scale: 0}, 1}, + {int64Amount{value: 0, scale: 0}, 0}, + } + for _, testCase := range table { + if result := testCase.i.Sign(); result != testCase.expect { + t.Errorf("i: %v, Expected: %v, Actual: %v", testCase.i, testCase.expect, result) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go new file mode 100644 index 000000000..8b2e338a7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go @@ -0,0 +1,77 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto +// DO NOT EDIT! + +/* + Package resource is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto + + It has these top-level messages: + Quantity +*/ +package resource + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *Quantity) Reset() { *m = Quantity{} } +func (*Quantity) ProtoMessage() {} +func (*Quantity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func init() { + proto.RegisterType((*Quantity)(nil), "k8s.io.apimachinery.pkg.api.resource.Quantity") +} + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 255 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x8f, 0xa1, 0x4e, 0x03, 0x41, + 0x10, 0x86, 0x77, 0x0d, 0x29, 0x95, 0x0d, 0x21, 0xa4, 0x62, 0xaf, 0x21, 0x08, 0x0c, 0x3b, 0x02, + 0xd3, 0x20, 0xf1, 0x08, 0x90, 0xb8, 0xbb, 0xeb, 0xb0, 0xdd, 0x1c, 0xdd, 0xbd, 0xcc, 0xce, 0x92, + 0xd4, 0x55, 0x22, 0x2b, 0x91, 0xbd, 0xb7, 0xa9, 0xac, 0xac, 0x40, 0x70, 0xcb, 0x8b, 0x90, 0x5e, + 0xdb, 0x84, 0x90, 0xe0, 0xe6, 0xfb, 0x27, 0xdf, 0xe4, 0x9f, 0xfe, 0x43, 0x35, 0x0e, 0xda, 0x7a, + 0xa8, 0x62, 0x81, 0xe4, 0x90, 0x31, 0xc0, 0x1b, 0xba, 0x89, 0x27, 0x38, 0x2c, 0xf2, 0xda, 0xce, + 0xf2, 0x72, 0x6a, 0x1d, 0xd2, 0x1c, 0xea, 0xca, 0xec, 0x02, 0x20, 0x0c, 0x3e, 0x52, 0x89, 0x60, + 0xd0, 0x21, 0xe5, 0x8c, 0x13, 0x5d, 0x93, 0x67, 0x3f, 0xb8, 0xda, 0x5b, 0xfa, 0xb7, 0xa5, 0xeb, + 0xca, 0xec, 0x02, 0x7d, 0xb4, 0x86, 0x37, 0xc6, 0xf2, 0x34, 0x16, 0xba, 0xf4, 0x33, 0x30, 0xde, + 0x78, 0xe8, 0xe4, 0x22, 0xbe, 0x74, 0xd4, 0x41, 0x37, 0xed, 0x8f, 0x0e, 0x6f, 0xff, 0xab, 0x12, + 0xd9, 0xbe, 0x82, 0x75, 0x1c, 0x98, 0xfe, 0x36, 0xb9, 0x1c, 0xf7, 0x7b, 0x8f, 0x31, 0x77, 0x6c, + 0x79, 0x3e, 0x38, 0xef, 0x9f, 0x04, 0x26, 0xeb, 0xcc, 0x85, 0x1c, 0xc9, 0xeb, 0xd3, 0xa7, 0x03, + 0xdd, 0x9d, 0x7d, 0xac, 0x32, 0xf1, 0xde, 0x64, 0x62, 0xd9, 0x64, 0x62, 0xd5, 0x64, 0x62, 0xf1, + 0x39, 0x12, 0xf7, 0x7a, 0xdd, 0x2a, 0xb1, 0x69, 0x95, 0xd8, 0xb6, 0x4a, 0x2c, 0x92, 0x92, 0xeb, + 0xa4, 0xe4, 0x26, 0x29, 0xb9, 0x4d, 0x4a, 0x7e, 0x25, 0x25, 0x97, 0xdf, 0x4a, 0x3c, 0xf7, 0x8e, + 0xdf, 0xfc, 0x04, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x5e, 0xda, 0xf9, 0x43, 0x01, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto new file mode 100644 index 000000000..608299da4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.apimachinery.pkg.api.resource; + +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "resource"; + +// Quantity is a fixed-point representation of a number. +// It provides convenient marshaling/unmarshaling in JSON and YAML, +// in addition to String() and Int64() accessors. +// +// The serialization format is: +// +// ::= +// (Note that may be empty, from the "" case in .) +// ::= 0 | 1 | ... | 9 +// ::= | +// ::= | . | . | . +// ::= "+" | "-" +// ::= | +// ::= | | +// ::= Ki | Mi | Gi | Ti | Pi | Ei +// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// ::= m | "" | k | M | G | T | P | E +// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// ::= "e" | "E" +// +// No matter which of the three exponent forms is used, no quantity may represent +// a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal +// places. Numbers larger or more precise will be capped or rounded up. +// (E.g.: 0.1m will rounded up to 1m.) +// This may be extended in the future if we require larger or smaller quantities. +// +// When a Quantity is parsed from a string, it will remember the type of suffix +// it had, and will use the same type again when it is serialized. +// +// Before serializing, Quantity will be put in "canonical form". +// This means that Exponent/suffix will be adjusted up or down (with a +// corresponding increase or decrease in Mantissa) such that: +// a. No precision is lost +// b. No fractional digits will be emitted +// c. The exponent (or suffix) is as large as possible. +// The sign will be omitted unless the number is negative. +// +// Examples: +// 1.5 will be serialized as "1500m" +// 1.5Gi will be serialized as "1536Mi" +// +// NOTE: We reserve the right to amend this canonical format, perhaps to +// allow 1.5 to be canonical. +// TODO: Remove above disclaimer after all bikeshedding about format is over, +// or after March 2015. +// +// Note that the quantity will NEVER be internally represented by a +// floating point number. That is the whole point of this exercise. +// +// Non-canonical values will still parse as long as they are well formed, +// but will be re-emitted in their canonical form. (So always use canonical +// form, or don't diff.) +// +// This format is intended to make it difficult to use these numbers without +// writing some sort of special handling code in the hopes that that will +// cause implementors to also use a fixed point implementation. +// +// +protobuf=true +// +protobuf.embed=string +// +protobuf.options.marshal=false +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +message Quantity { + optional string string = 1; +} + diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/math.go b/vendor/k8s.io/apimachinery/pkg/api/resource/math.go new file mode 100644 index 000000000..72d3880c0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/math.go @@ -0,0 +1,314 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math/big" + + inf "gopkg.in/inf.v0" +) + +const ( + // maxInt64Factors is the highest value that will be checked when removing factors of 10 from an int64. + // It is also the maximum decimal digits that can be represented with an int64. + maxInt64Factors = 18 +) + +var ( + // Commonly needed big.Int values-- treat as read only! + bigTen = big.NewInt(10) + bigZero = big.NewInt(0) + bigOne = big.NewInt(1) + bigThousand = big.NewInt(1000) + big1024 = big.NewInt(1024) + + // Commonly needed inf.Dec values-- treat as read only! + decZero = inf.NewDec(0, 0) + decOne = inf.NewDec(1, 0) + decMinusOne = inf.NewDec(-1, 0) + decThousand = inf.NewDec(1000, 0) + dec1024 = inf.NewDec(1024, 0) + decMinus1024 = inf.NewDec(-1024, 0) + + // Largest (in magnitude) number allowed. + maxAllowed = infDecAmount{inf.NewDec((1<<63)-1, 0)} // == max int64 + + // The maximum value we can represent milli-units for. + // Compare with the return value of Quantity.Value() to + // see if it's safe to use Quantity.MilliValue(). + MaxMilliValue = int64(((1 << 63) - 1) / 1000) +) + +const mostNegative = -(mostPositive + 1) +const mostPositive = 1<<63 - 1 + +// int64Add returns a+b, or false if that would overflow int64. +func int64Add(a, b int64) (int64, bool) { + c := a + b + switch { + case a > 0 && b > 0: + if c < 0 { + return 0, false + } + case a < 0 && b < 0: + if c > 0 { + return 0, false + } + if a == mostNegative && b == mostNegative { + return 0, false + } + } + return c, true +} + +// int64Multiply returns a*b, or false if that would overflow or underflow int64. +func int64Multiply(a, b int64) (int64, bool) { + if a == 0 || b == 0 || a == 1 || b == 1 { + return a * b, true + } + if a == mostNegative || b == mostNegative { + return 0, false + } + c := a * b + return c, c/b == a +} + +// int64MultiplyScale returns a*b, assuming b is greater than one, or false if that would overflow or underflow int64. +// Use when b is known to be greater than one. +func int64MultiplyScale(a int64, b int64) (int64, bool) { + if a == 0 || a == 1 { + return a * b, true + } + if a == mostNegative && b != 1 { + return 0, false + } + c := a * b + return c, c/b == a +} + +// int64MultiplyScale10 multiplies a by 10, or returns false if that would overflow. This method is faster than +// int64Multiply(a, 10) because the compiler can optimize constant factor multiplication. +func int64MultiplyScale10(a int64) (int64, bool) { + if a == 0 || a == 1 { + return a * 10, true + } + if a == mostNegative { + return 0, false + } + c := a * 10 + return c, c/10 == a +} + +// int64MultiplyScale100 multiplies a by 100, or returns false if that would overflow. This method is faster than +// int64Multiply(a, 100) because the compiler can optimize constant factor multiplication. +func int64MultiplyScale100(a int64) (int64, bool) { + if a == 0 || a == 1 { + return a * 100, true + } + if a == mostNegative { + return 0, false + } + c := a * 100 + return c, c/100 == a +} + +// int64MultiplyScale1000 multiplies a by 1000, or returns false if that would overflow. This method is faster than +// int64Multiply(a, 1000) because the compiler can optimize constant factor multiplication. +func int64MultiplyScale1000(a int64) (int64, bool) { + if a == 0 || a == 1 { + return a * 1000, true + } + if a == mostNegative { + return 0, false + } + c := a * 1000 + return c, c/1000 == a +} + +// positiveScaleInt64 multiplies base by 10^scale, returning false if the +// value overflows. Passing a negative scale is undefined. +func positiveScaleInt64(base int64, scale Scale) (int64, bool) { + switch scale { + case 0: + return base, true + case 1: + return int64MultiplyScale10(base) + case 2: + return int64MultiplyScale100(base) + case 3: + return int64MultiplyScale1000(base) + case 6: + return int64MultiplyScale(base, 1000000) + case 9: + return int64MultiplyScale(base, 1000000000) + default: + value := base + var ok bool + for i := Scale(0); i < scale; i++ { + if value, ok = int64MultiplyScale(value, 10); !ok { + return 0, false + } + } + return value, true + } +} + +// negativeScaleInt64 reduces base by the provided scale, rounding up, until the +// value is zero or the scale is reached. Passing a negative scale is undefined. +// The value returned, if not exact, is rounded away from zero. +func negativeScaleInt64(base int64, scale Scale) (result int64, exact bool) { + if scale == 0 { + return base, true + } + + value := base + var fraction bool + for i := Scale(0); i < scale; i++ { + if !fraction && value%10 != 0 { + fraction = true + } + value = value / 10 + if value == 0 { + if fraction { + if base > 0 { + return 1, false + } + return -1, false + } + return 0, true + } + } + if fraction { + if base > 0 { + value += 1 + } else { + value += -1 + } + } + return value, !fraction +} + +func pow10Int64(b int64) int64 { + switch b { + case 0: + return 1 + case 1: + return 10 + case 2: + return 100 + case 3: + return 1000 + case 4: + return 10000 + case 5: + return 100000 + case 6: + return 1000000 + case 7: + return 10000000 + case 8: + return 100000000 + case 9: + return 1000000000 + case 10: + return 10000000000 + case 11: + return 100000000000 + case 12: + return 1000000000000 + case 13: + return 10000000000000 + case 14: + return 100000000000000 + case 15: + return 1000000000000000 + case 16: + return 10000000000000000 + case 17: + return 100000000000000000 + case 18: + return 1000000000000000000 + default: + return 0 + } +} + +// negativeScaleInt64 returns the result of dividing base by scale * 10 and the remainder, or +// false if no such division is possible. Dividing by negative scales is undefined. +func divideByScaleInt64(base int64, scale Scale) (result, remainder int64, exact bool) { + if scale == 0 { + return base, 0, true + } + // the max scale representable in base 10 in an int64 is 18 decimal places + if scale >= 18 { + return 0, base, false + } + divisor := pow10Int64(int64(scale)) + return base / divisor, base % divisor, true +} + +// removeInt64Factors divides in a loop; the return values have the property that +// value == result * base ^ scale +func removeInt64Factors(value int64, base int64) (result int64, times int32) { + times = 0 + result = value + negative := result < 0 + if negative { + result = -result + } + switch base { + // allow the compiler to optimize the common cases + case 10: + for result >= 10 && result%10 == 0 { + times++ + result = result / 10 + } + // allow the compiler to optimize the common cases + case 1024: + for result >= 1024 && result%1024 == 0 { + times++ + result = result / 1024 + } + default: + for result >= base && result%base == 0 { + times++ + result = result / base + } + } + if negative { + result = -result + } + return result, times +} + +// removeBigIntFactors divides in a loop; the return values have the property that +// d == result * factor ^ times +// d may be modified in place. +// If d == 0, then the return values will be (0, 0) +func removeBigIntFactors(d, factor *big.Int) (result *big.Int, times int32) { + q := big.NewInt(0) + m := big.NewInt(0) + for d.Cmp(bigZero) != 0 { + q.DivMod(d, factor, m) + if m.Cmp(bigZero) != 0 { + break + } + times++ + d, q = q, d + } + return d, times +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/math_test.go b/vendor/k8s.io/apimachinery/pkg/api/resource/math_test.go new file mode 100644 index 000000000..070a0c237 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/math_test.go @@ -0,0 +1,211 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "testing" +) + +func TestDetectOverflowAdd(t *testing.T) { + for _, test := range []struct { + a, b int64 + c int64 + ok bool + }{ + {0, 0, 0, true}, + {-1, 1, 0, true}, + {0, 1, 1, true}, + {2, 2, 4, true}, + {2, -2, 0, true}, + {-2, -2, -4, true}, + + {mostNegative, -1, 0, false}, + {mostNegative, 1, mostNegative + 1, true}, + {mostPositive, -1, mostPositive - 1, true}, + {mostPositive, 1, 0, false}, + + {mostNegative, mostPositive, -1, true}, + {mostPositive, mostNegative, -1, true}, + {mostPositive, mostPositive, 0, false}, + {mostNegative, mostNegative, 0, false}, + + {-mostPositive, mostNegative, 0, false}, + {mostNegative, -mostPositive, 0, false}, + {-mostPositive, -mostPositive, 0, false}, + } { + c, ok := int64Add(test.a, test.b) + if c != test.c { + t.Errorf("%v: unexpected result: %d", test, c) + } + if ok != test.ok { + t.Errorf("%v: unexpected overflow: %t", test, ok) + } + // addition is commutative + d, ok2 := int64Add(test.b, test.a) + if c != d || ok != ok2 { + t.Errorf("%v: not commutative: %d %t", test, d, ok2) + } + } +} + +func TestDetectOverflowMultiply(t *testing.T) { + for _, test := range []struct { + a, b int64 + c int64 + ok bool + }{ + {0, 0, 0, true}, + {-1, 1, -1, true}, + {-1, -1, 1, true}, + {1, 1, 1, true}, + {0, 1, 0, true}, + {1, 0, 0, true}, + {2, 2, 4, true}, + {2, -2, -4, true}, + {-2, -2, 4, true}, + + {mostNegative, -1, 0, false}, + {mostNegative, 1, mostNegative, true}, + {mostPositive, -1, -mostPositive, true}, + {mostPositive, 1, mostPositive, true}, + + {mostNegative, mostPositive, 0, false}, + {mostPositive, mostNegative, 0, false}, + {mostPositive, mostPositive, 1, false}, + {mostNegative, mostNegative, 0, false}, + + {-mostPositive, mostNegative, 0, false}, + {mostNegative, -mostPositive, 0, false}, + {-mostPositive, -mostPositive, 1, false}, + } { + c, ok := int64Multiply(test.a, test.b) + if c != test.c { + t.Errorf("%v: unexpected result: %d", test, c) + } + if ok != test.ok { + t.Errorf("%v: unexpected overflow: %t", test, ok) + } + // multiplication is commutative + d, ok2 := int64Multiply(test.b, test.a) + if c != d || ok != ok2 { + t.Errorf("%v: not commutative: %d %t", test, d, ok2) + } + } +} + +func TestDetectOverflowScale(t *testing.T) { + for _, a := range []int64{0, -1, 1, 10, -10, mostPositive, mostNegative, -mostPositive} { + for _, b := range []int64{1, 2, 10, 100, 1000, mostPositive} { + expect, expectOk := int64Multiply(a, b) + + c, ok := int64MultiplyScale(a, b) + if c != expect { + t.Errorf("%d*%d: unexpected result: %d", a, b, c) + } + if ok != expectOk { + t.Errorf("%d*%d: unexpected overflow: %t", a, b, ok) + } + } + for _, test := range []struct { + base int64 + fn func(a int64) (int64, bool) + }{ + {10, int64MultiplyScale10}, + {100, int64MultiplyScale100}, + {1000, int64MultiplyScale1000}, + } { + expect, expectOk := int64Multiply(a, test.base) + c, ok := test.fn(a) + if c != expect { + t.Errorf("%d*%d: unexpected result: %d", a, test.base, c) + } + if ok != expectOk { + t.Errorf("%d*%d: unexpected overflow: %t", a, test.base, ok) + } + } + } +} + +func TestRemoveInt64Factors(t *testing.T) { + for _, test := range []struct { + value int64 + max int64 + result int64 + scale int32 + }{ + {100, 10, 1, 2}, + {100, 10, 1, 2}, + {100, 100, 1, 1}, + {1, 10, 1, 0}, + } { + r, s := removeInt64Factors(test.value, test.max) + if r != test.result { + t.Errorf("%v: unexpected result: %d", test, r) + } + if s != test.scale { + t.Errorf("%v: unexpected scale: %d", test, s) + } + } +} + +func TestNegativeScaleInt64(t *testing.T) { + for _, test := range []struct { + base int64 + scale Scale + result int64 + exact bool + }{ + {1234567, 0, 1234567, true}, + {1234567, 1, 123457, false}, + {1234567, 2, 12346, false}, + {1234567, 3, 1235, false}, + {1234567, 4, 124, false}, + + {-1234567, 0, -1234567, true}, + {-1234567, 1, -123457, false}, + {-1234567, 2, -12346, false}, + {-1234567, 3, -1235, false}, + {-1234567, 4, -124, false}, + + {1000, 0, 1000, true}, + {1000, 1, 100, true}, + {1000, 2, 10, true}, + {1000, 3, 1, true}, + {1000, 4, 1, false}, + + {-1000, 0, -1000, true}, + {-1000, 1, -100, true}, + {-1000, 2, -10, true}, + {-1000, 3, -1, true}, + {-1000, 4, -1, false}, + + {0, 0, 0, true}, + {0, 1, 0, true}, + {0, 2, 0, true}, + + // negative scale is undefined behavior + {1000, -1, 1000, true}, + } { + result, exact := negativeScaleInt64(test.base, test.scale) + if result != test.result { + t.Errorf("%v: unexpected result: %d", test, result) + } + if exact != test.exact { + t.Errorf("%v: unexpected exact: %t", test, exact) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go new file mode 100644 index 000000000..3a9560882 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go @@ -0,0 +1,792 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "bytes" + "errors" + "fmt" + "math/big" + "regexp" + "strconv" + "strings" + + flag "github.com/spf13/pflag" + + "github.com/go-openapi/spec" + inf "gopkg.in/inf.v0" + "k8s.io/apimachinery/pkg/openapi" +) + +// Quantity is a fixed-point representation of a number. +// It provides convenient marshaling/unmarshaling in JSON and YAML, +// in addition to String() and Int64() accessors. +// +// The serialization format is: +// +// ::= +// (Note that may be empty, from the "" case in .) +// ::= 0 | 1 | ... | 9 +// ::= | +// ::= | . | . | . +// ::= "+" | "-" +// ::= | +// ::= | | +// ::= Ki | Mi | Gi | Ti | Pi | Ei +// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// ::= m | "" | k | M | G | T | P | E +// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// ::= "e" | "E" +// +// No matter which of the three exponent forms is used, no quantity may represent +// a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal +// places. Numbers larger or more precise will be capped or rounded up. +// (E.g.: 0.1m will rounded up to 1m.) +// This may be extended in the future if we require larger or smaller quantities. +// +// When a Quantity is parsed from a string, it will remember the type of suffix +// it had, and will use the same type again when it is serialized. +// +// Before serializing, Quantity will be put in "canonical form". +// This means that Exponent/suffix will be adjusted up or down (with a +// corresponding increase or decrease in Mantissa) such that: +// a. No precision is lost +// b. No fractional digits will be emitted +// c. The exponent (or suffix) is as large as possible. +// The sign will be omitted unless the number is negative. +// +// Examples: +// 1.5 will be serialized as "1500m" +// 1.5Gi will be serialized as "1536Mi" +// +// NOTE: We reserve the right to amend this canonical format, perhaps to +// allow 1.5 to be canonical. +// TODO: Remove above disclaimer after all bikeshedding about format is over, +// or after March 2015. +// +// Note that the quantity will NEVER be internally represented by a +// floating point number. That is the whole point of this exercise. +// +// Non-canonical values will still parse as long as they are well formed, +// but will be re-emitted in their canonical form. (So always use canonical +// form, or don't diff.) +// +// This format is intended to make it difficult to use these numbers without +// writing some sort of special handling code in the hopes that that will +// cause implementors to also use a fixed point implementation. +// +// +protobuf=true +// +protobuf.embed=string +// +protobuf.options.marshal=false +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +type Quantity struct { + // i is the quantity in int64 scaled form, if d.Dec == nil + i int64Amount + // d is the quantity in inf.Dec form if d.Dec != nil + d infDecAmount + // s is the generated value of this quantity to avoid recalculation + s string + + // Change Format at will. See the comment for Canonicalize for + // more details. + Format +} + +// CanonicalValue allows a quantity amount to be converted to a string. +type CanonicalValue interface { + // AsCanonicalBytes returns a byte array representing the string representation + // of the value mantissa and an int32 representing its exponent in base-10. Callers may + // pass a byte slice to the method to avoid allocations. + AsCanonicalBytes(out []byte) ([]byte, int32) + // AsCanonicalBase1024Bytes returns a byte array representing the string representation + // of the value mantissa and an int32 representing its exponent in base-1024. Callers + // may pass a byte slice to the method to avoid allocations. + AsCanonicalBase1024Bytes(out []byte) ([]byte, int32) +} + +// Format lists the three possible formattings of a quantity. +type Format string + +const ( + DecimalExponent = Format("DecimalExponent") // e.g., 12e6 + BinarySI = Format("BinarySI") // e.g., 12Mi (12 * 2^20) + DecimalSI = Format("DecimalSI") // e.g., 12M (12 * 10^6) +) + +// MustParse turns the given string into a quantity or panics; for tests +// or others cases where you know the string is valid. +func MustParse(str string) Quantity { + q, err := ParseQuantity(str) + if err != nil { + panic(fmt.Errorf("cannot parse '%v': %v", str, err)) + } + return q +} + +const ( + // splitREString is used to separate a number from its suffix; as such, + // this is overly permissive, but that's OK-- it will be checked later. + splitREString = "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" +) + +var ( + // splitRE is used to get the various parts of a number. + splitRE = regexp.MustCompile(splitREString) + + // Errors that could happen while parsing a string. + ErrFormatWrong = errors.New("quantities must match the regular expression '" + splitREString + "'") + ErrNumeric = errors.New("unable to parse numeric part of quantity") + ErrSuffix = errors.New("unable to parse quantity's suffix") +) + +// parseQuantityString is a fast scanner for quantity values. +func parseQuantityString(str string) (positive bool, value, num, denom, suffix string, err error) { + positive = true + pos := 0 + end := len(str) + + // handle leading sign + if pos < end { + switch str[0] { + case '-': + positive = false + pos++ + case '+': + pos++ + } + } + + // strip leading zeros +Zeroes: + for i := pos; ; i++ { + if i >= end { + num = "0" + value = num + return + } + switch str[i] { + case '0': + pos++ + default: + break Zeroes + } + } + + // extract the numerator +Num: + for i := pos; ; i++ { + if i >= end { + num = str[pos:end] + value = str[0:end] + return + } + switch str[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + num = str[pos:i] + pos = i + break Num + } + } + + // if we stripped all numerator positions, always return 0 + if len(num) == 0 { + num = "0" + } + + // handle a denominator + if pos < end && str[pos] == '.' { + pos++ + Denom: + for i := pos; ; i++ { + if i >= end { + denom = str[pos:end] + value = str[0:end] + return + } + switch str[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + denom = str[pos:i] + pos = i + break Denom + } + } + // TODO: we currently allow 1.G, but we may not want to in the future. + // if len(denom) == 0 { + // err = ErrFormatWrong + // return + // } + } + value = str[0:pos] + + // grab the elements of the suffix + suffixStart := pos + for i := pos; ; i++ { + if i >= end { + suffix = str[suffixStart:end] + return + } + if !strings.ContainsAny(str[i:i+1], "eEinumkKMGTP") { + pos = i + break + } + } + if pos < end { + switch str[pos] { + case '-', '+': + pos++ + } + } +Suffix: + for i := pos; ; i++ { + if i >= end { + suffix = str[suffixStart:end] + return + } + switch str[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + break Suffix + } + } + // we encountered a non decimal in the Suffix loop, but the last character + // was not a valid exponent + err = ErrFormatWrong + return +} + +// ParseQuantity turns str into a Quantity, or returns an error. +func ParseQuantity(str string) (Quantity, error) { + if len(str) == 0 { + return Quantity{}, ErrFormatWrong + } + if str == "0" { + return Quantity{Format: DecimalSI, s: str}, nil + } + + positive, value, num, denom, suf, err := parseQuantityString(str) + if err != nil { + return Quantity{}, err + } + + base, exponent, format, ok := quantitySuffixer.interpret(suffix(suf)) + if !ok { + return Quantity{}, ErrSuffix + } + + precision := int32(0) + scale := int32(0) + mantissa := int64(1) + switch format { + case DecimalExponent, DecimalSI: + scale = exponent + precision = maxInt64Factors - int32(len(num)+len(denom)) + case BinarySI: + scale = 0 + switch { + case exponent >= 0 && len(denom) == 0: + // only handle positive binary numbers with the fast path + mantissa = int64(int64(mantissa) << uint64(exponent)) + // 1Mi (2^20) has ~6 digits of decimal precision, so exponent*3/10 -1 is roughly the precision + precision = 15 - int32(len(num)) - int32(float32(exponent)*3/10) - 1 + default: + precision = -1 + } + } + + if precision >= 0 { + // if we have a denominator, shift the entire value to the left by the number of places in the + // denominator + scale -= int32(len(denom)) + if scale >= int32(Nano) { + shifted := num + denom + + var value int64 + value, err := strconv.ParseInt(shifted, 10, 64) + if err != nil { + return Quantity{}, ErrNumeric + } + if result, ok := int64Multiply(value, int64(mantissa)); ok { + if !positive { + result = -result + } + // if the number is in canonical form, reuse the string + switch format { + case BinarySI: + if exponent%10 == 0 && (value&0x07 != 0) { + return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format, s: str}, nil + } + default: + if scale%3 == 0 && !strings.HasSuffix(shifted, "000") && shifted[0] != '0' { + return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format, s: str}, nil + } + } + return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format}, nil + } + } + } + + amount := new(inf.Dec) + if _, ok := amount.SetString(value); !ok { + return Quantity{}, ErrNumeric + } + + // So that no one but us has to think about suffixes, remove it. + if base == 10 { + amount.SetScale(amount.Scale() + Scale(exponent).infScale()) + } else if base == 2 { + // numericSuffix = 2 ** exponent + numericSuffix := big.NewInt(1).Lsh(bigOne, uint(exponent)) + ub := amount.UnscaledBig() + amount.SetUnscaledBig(ub.Mul(ub, numericSuffix)) + } + + // Cap at min/max bounds. + sign := amount.Sign() + if sign == -1 { + amount.Neg(amount) + } + + // This rounds non-zero values up to the minimum representable value, under the theory that + // if you want some resources, you should get some resources, even if you asked for way too small + // of an amount. Arguably, this should be inf.RoundHalfUp (normal rounding), but that would have + // the side effect of rounding values < .5n to zero. + if v, ok := amount.Unscaled(); v != int64(0) || !ok { + amount.Round(amount, Nano.infScale(), inf.RoundUp) + } + + // The max is just a simple cap. + // TODO: this prevents accumulating quantities greater than int64, for instance quota across a cluster + if format == BinarySI && amount.Cmp(maxAllowed.Dec) > 0 { + amount.Set(maxAllowed.Dec) + } + + if format == BinarySI && amount.Cmp(decOne) < 0 && amount.Cmp(decZero) > 0 { + // This avoids rounding and hopefully confusion, too. + format = DecimalSI + } + if sign == -1 { + amount.Neg(amount) + } + + return Quantity{d: infDecAmount{amount}, Format: format}, nil +} + +// DeepCopy returns a deep-copy of the Quantity value. Note that the method +// receiver is a value, so we can mutate it in-place and return it. +func (q Quantity) DeepCopy() Quantity { + if q.d.Dec != nil { + tmp := &inf.Dec{} + q.d.Dec = tmp.Set(q.d.Dec) + } + return q +} + +// OpenAPIDefinition returns openAPI definition for this type. +func (_ Quantity) OpenAPIDefinition() openapi.OpenAPIDefinition { + return openapi.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + } +} + +// CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity). +// +// Note about BinarySI: +// * If q.Format is set to BinarySI and q.Amount represents a non-zero value between +// -1 and +1, it will be emitted as if q.Format were DecimalSI. +// * Otherwise, if q.Format is set to BinarySI, frational parts of q.Amount will be +// rounded up. (1.1i becomes 2i.) +func (q *Quantity) CanonicalizeBytes(out []byte) (result, suffix []byte) { + if q.IsZero() { + return zeroBytes, nil + } + + var rounded CanonicalValue + format := q.Format + switch format { + case DecimalExponent, DecimalSI: + case BinarySI: + if q.CmpInt64(-1024) > 0 && q.CmpInt64(1024) < 0 { + // This avoids rounding and hopefully confusion, too. + format = DecimalSI + } else { + var exact bool + if rounded, exact = q.AsScale(0); !exact { + // Don't lose precision-- show as DecimalSI + format = DecimalSI + } + } + default: + format = DecimalExponent + } + + // TODO: If BinarySI formatting is requested but would cause rounding, upgrade to + // one of the other formats. + switch format { + case DecimalExponent, DecimalSI: + number, exponent := q.AsCanonicalBytes(out) + suffix, _ := quantitySuffixer.constructBytes(10, exponent, format) + return number, suffix + default: + // format must be BinarySI + number, exponent := rounded.AsCanonicalBase1024Bytes(out) + suffix, _ := quantitySuffixer.constructBytes(2, exponent*10, format) + return number, suffix + } +} + +// AsInt64 returns a representation of the current value as an int64 if a fast conversion +// is possible. If false is returned, callers must use the inf.Dec form of this quantity. +func (q *Quantity) AsInt64() (int64, bool) { + if q.d.Dec != nil { + return 0, false + } + return q.i.AsInt64() +} + +// ToDec promotes the quantity in place to use an inf.Dec representation and returns itself. +func (q *Quantity) ToDec() *Quantity { + if q.d.Dec == nil { + q.d.Dec = q.i.AsDec() + q.i = int64Amount{} + } + return q +} + +// AsDec returns the quantity as represented by a scaled inf.Dec. +func (q *Quantity) AsDec() *inf.Dec { + if q.d.Dec != nil { + return q.d.Dec + } + q.d.Dec = q.i.AsDec() + q.i = int64Amount{} + return q.d.Dec +} + +// AsCanonicalBytes returns the canonical byte representation of this quantity as a mantissa +// and base 10 exponent. The out byte slice may be passed to the method to avoid an extra +// allocation. +func (q *Quantity) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { + if q.d.Dec != nil { + return q.d.AsCanonicalBytes(out) + } + return q.i.AsCanonicalBytes(out) +} + +// IsZero returns true if the quantity is equal to zero. +func (q *Quantity) IsZero() bool { + if q.d.Dec != nil { + return q.d.Dec.Sign() == 0 + } + return q.i.value == 0 +} + +// Sign returns 0 if the quantity is zero, -1 if the quantity is less than zero, or 1 if the +// quantity is greater than zero. +func (q *Quantity) Sign() int { + if q.d.Dec != nil { + return q.d.Dec.Sign() + } + return q.i.Sign() +} + +// AsScaled returns the current value, rounded up to the provided scale, and returns +// false if the scale resulted in a loss of precision. +func (q *Quantity) AsScale(scale Scale) (CanonicalValue, bool) { + if q.d.Dec != nil { + return q.d.AsScale(scale) + } + return q.i.AsScale(scale) +} + +// RoundUp updates the quantity to the provided scale, ensuring that the value is at +// least 1. False is returned if the rounding operation resulted in a loss of precision. +// Negative numbers are rounded away from zero (-9 scale 1 rounds to -10). +func (q *Quantity) RoundUp(scale Scale) bool { + if q.d.Dec != nil { + q.s = "" + d, exact := q.d.AsScale(scale) + q.d = d + return exact + } + // avoid clearing the string value if we have already calculated it + if q.i.scale >= scale { + return true + } + q.s = "" + i, exact := q.i.AsScale(scale) + q.i = i + return exact +} + +// Add adds the provide y quantity to the current value. If the current value is zero, +// the format of the quantity will be updated to the format of y. +func (q *Quantity) Add(y Quantity) { + q.s = "" + if q.d.Dec == nil && y.d.Dec == nil { + if q.i.value == 0 { + q.Format = y.Format + } + if q.i.Add(y.i) { + return + } + } else if q.IsZero() { + q.Format = y.Format + } + q.ToDec().d.Dec.Add(q.d.Dec, y.AsDec()) +} + +// Sub subtracts the provided quantity from the current value in place. If the current +// value is zero, the format of the quantity will be updated to the format of y. +func (q *Quantity) Sub(y Quantity) { + q.s = "" + if q.IsZero() { + q.Format = y.Format + } + if q.d.Dec == nil && y.d.Dec == nil && q.i.Sub(y.i) { + return + } + q.ToDec().d.Dec.Sub(q.d.Dec, y.AsDec()) +} + +// Cmp returns 0 if the quantity is equal to y, -1 if the quantity is less than y, or 1 if the +// quantity is greater than y. +func (q *Quantity) Cmp(y Quantity) int { + if q.d.Dec == nil && y.d.Dec == nil { + return q.i.Cmp(y.i) + } + return q.AsDec().Cmp(y.AsDec()) +} + +// CmpInt64 returns 0 if the quantity is equal to y, -1 if the quantity is less than y, or 1 if the +// quantity is greater than y. +func (q *Quantity) CmpInt64(y int64) int { + if q.d.Dec != nil { + return q.d.Dec.Cmp(inf.NewDec(y, inf.Scale(0))) + } + return q.i.Cmp(int64Amount{value: y}) +} + +// Neg sets quantity to be the negative value of itself. +func (q *Quantity) Neg() { + q.s = "" + if q.d.Dec == nil { + q.i.value = -q.i.value + return + } + q.d.Dec.Neg(q.d.Dec) +} + +// int64QuantityExpectedBytes is the expected width in bytes of the canonical string representation +// of most Quantity values. +const int64QuantityExpectedBytes = 18 + +// String formats the Quantity as a string, caching the result if not calculated. +// String is an expensive operation and caching this result significantly reduces the cost of +// normal parse / marshal operations on Quantity. +func (q *Quantity) String() string { + if len(q.s) == 0 { + result := make([]byte, 0, int64QuantityExpectedBytes) + number, suffix := q.CanonicalizeBytes(result) + number = append(number, suffix...) + q.s = string(number) + } + return q.s +} + +// MarshalJSON implements the json.Marshaller interface. +func (q Quantity) MarshalJSON() ([]byte, error) { + if len(q.s) > 0 { + out := make([]byte, len(q.s)+2) + out[0], out[len(out)-1] = '"', '"' + copy(out[1:], q.s) + return out, nil + } + result := make([]byte, int64QuantityExpectedBytes, int64QuantityExpectedBytes) + result[0] = '"' + number, suffix := q.CanonicalizeBytes(result[1:1]) + // if the same slice was returned to us that we passed in, avoid another allocation by copying number into + // the source slice and returning that + if len(number) > 0 && &number[0] == &result[1] && (len(number)+len(suffix)+2) <= int64QuantityExpectedBytes { + number = append(number, suffix...) + number = append(number, '"') + return result[:1+len(number)], nil + } + // if CanonicalizeBytes needed more space than our slice provided, we may need to allocate again so use + // append + result = result[:1] + result = append(result, number...) + result = append(result, suffix...) + result = append(result, '"') + return result, nil +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +// TODO: Remove support for leading/trailing whitespace +func (q *Quantity) UnmarshalJSON(value []byte) error { + l := len(value) + if l == 4 && bytes.Equal(value, []byte("null")) { + q.d.Dec = nil + q.i = int64Amount{} + return nil + } + if l >= 2 && value[0] == '"' && value[l-1] == '"' { + value = value[1 : l-1] + } + + parsed, err := ParseQuantity(strings.TrimSpace(string(value))) + if err != nil { + return err + } + + // This copy is safe because parsed will not be referred to again. + *q = parsed + return nil +} + +// NewQuantity returns a new Quantity representing the given +// value in the given format. +func NewQuantity(value int64, format Format) *Quantity { + return &Quantity{ + i: int64Amount{value: value}, + Format: format, + } +} + +// NewMilliQuantity returns a new Quantity representing the given +// value * 1/1000 in the given format. Note that BinarySI formatting +// will round fractional values, and will be changed to DecimalSI for +// values x where (-1 < x < 1) && (x != 0). +func NewMilliQuantity(value int64, format Format) *Quantity { + return &Quantity{ + i: int64Amount{value: value, scale: -3}, + Format: format, + } +} + +// NewScaledQuantity returns a new Quantity representing the given +// value * 10^scale in DecimalSI format. +func NewScaledQuantity(value int64, scale Scale) *Quantity { + return &Quantity{ + i: int64Amount{value: value, scale: scale}, + Format: DecimalSI, + } +} + +// Value returns the value of q; any fractional part will be lost. +func (q *Quantity) Value() int64 { + return q.ScaledValue(0) +} + +// MilliValue returns the value of ceil(q * 1000); this could overflow an int64; +// if that's a concern, call Value() first to verify the number is small enough. +func (q *Quantity) MilliValue() int64 { + return q.ScaledValue(Milli) +} + +// ScaledValue returns the value of ceil(q * 10^scale); this could overflow an int64. +// To detect overflow, call Value() first and verify the expected magnitude. +func (q *Quantity) ScaledValue(scale Scale) int64 { + if q.d.Dec == nil { + i, _ := q.i.AsScaledInt64(scale) + return i + } + dec := q.d.Dec + return scaledValue(dec.UnscaledBig(), int(dec.Scale()), int(scale.infScale())) +} + +// Set sets q's value to be value. +func (q *Quantity) Set(value int64) { + q.SetScaled(value, 0) +} + +// SetMilli sets q's value to be value * 1/1000. +func (q *Quantity) SetMilli(value int64) { + q.SetScaled(value, Milli) +} + +// SetScaled sets q's value to be value * 10^scale +func (q *Quantity) SetScaled(value int64, scale Scale) { + q.s = "" + q.d.Dec = nil + q.i = int64Amount{value: value, scale: scale} +} + +// Copy is a convenience function that makes a deep copy for you. Non-deep +// copies of quantities share pointers and you will regret that. +func (q *Quantity) Copy() *Quantity { + if q.d.Dec == nil { + return &Quantity{ + s: q.s, + i: q.i, + Format: q.Format, + } + } + tmp := &inf.Dec{} + return &Quantity{ + s: q.s, + d: infDecAmount{tmp.Set(q.d.Dec)}, + Format: q.Format, + } +} + +// qFlag is a helper type for the Flag function +type qFlag struct { + dest *Quantity +} + +// Sets the value of the internal Quantity. (used by flag & pflag) +func (qf qFlag) Set(val string) error { + q, err := ParseQuantity(val) + if err != nil { + return err + } + // This copy is OK because q will not be referenced again. + *qf.dest = q + return nil +} + +// Converts the value of the internal Quantity to a string. (used by flag & pflag) +func (qf qFlag) String() string { + return qf.dest.String() +} + +// States the type of flag this is (Quantity). (used by pflag) +func (qf qFlag) Type() string { + return "quantity" +} + +// QuantityFlag is a helper that makes a quantity flag (using standard flag package). +// Will panic if defaultValue is not a valid quantity. +func QuantityFlag(flagName, defaultValue, description string) *Quantity { + q := MustParse(defaultValue) + flag.Var(NewQuantityFlagValue(&q), flagName, description) + return &q +} + +// NewQuantityFlagValue returns an object that can be used to back a flag, +// pointing at the given Quantity variable. +func NewQuantityFlagValue(q *Quantity) flag.Value { + return qFlag{q} +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_example_test.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_example_test.go new file mode 100644 index 000000000..56a7dbe0e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_example_test.go @@ -0,0 +1,59 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource_test + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/api/resource" +) + +func ExampleFormat() { + memorySize := resource.NewQuantity(5*1024*1024*1024, resource.BinarySI) + fmt.Printf("memorySize = %v\n", memorySize) + + diskSize := resource.NewQuantity(5*1000*1000*1000, resource.DecimalSI) + fmt.Printf("diskSize = %v\n", diskSize) + + cores := resource.NewMilliQuantity(5300, resource.DecimalSI) + fmt.Printf("cores = %v\n", cores) + + // Output: + // memorySize = 5Gi + // diskSize = 5G + // cores = 5300m +} + +func ExampleMustParse() { + memorySize := resource.MustParse("5Gi") + fmt.Printf("memorySize = %v (%v)\n", memorySize.Value(), memorySize.Format) + + diskSize := resource.MustParse("5G") + fmt.Printf("diskSize = %v (%v)\n", diskSize.Value(), diskSize.Format) + + cores := resource.MustParse("5300m") + fmt.Printf("milliCores = %v (%v)\n", cores.MilliValue(), cores.Format) + + cores2 := resource.MustParse("5.4") + fmt.Printf("milliCores = %v (%v)\n", cores2.MilliValue(), cores2.Format) + + // Output: + // memorySize = 5368709120 (BinarySI) + // diskSize = 5000000000 (DecimalSI) + // milliCores = 5300 (DecimalSI) + // milliCores = 5400 (DecimalSI) +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go new file mode 100644 index 000000000..74dfb4e4b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go @@ -0,0 +1,284 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "fmt" + "io" + + "github.com/gogo/protobuf/proto" +) + +var _ proto.Sizer = &Quantity{} + +func (m *Quantity) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +// MarshalTo is a customized version of the generated Protobuf unmarshaler for a struct +// with a single string field. +func (m *Quantity) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + + data[i] = 0xa + i++ + // BEGIN CUSTOM MARSHAL + out := m.String() + i = encodeVarintGenerated(data, i, uint64(len(out))) + i += copy(data[i:], out) + // END CUSTOM MARSHAL + + return i, nil +} + +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} + +func (m *Quantity) Size() (n int) { + var l int + _ = l + + // BEGIN CUSTOM SIZE + l = len(m.String()) + // END CUSTOM SIZE + + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} + +// Unmarshal is a customized version of the generated Protobuf unmarshaler for a struct +// with a single string field. +func (m *Quantity) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Quantity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Quantity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field String_", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(data[iNdEx:postIndex]) + + // BEGIN CUSTOM DECODE + p, err := ParseQuantity(s) + if err != nil { + return err + } + *m = p + // END CUSTOM DECODE + + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto_test.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto_test.go new file mode 100644 index 000000000..574a3cf5d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto_test.go @@ -0,0 +1,103 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "testing" + + inf "gopkg.in/inf.v0" +) + +func TestQuantityProtoMarshal(t *testing.T) { + // Test when d is nil + table := []struct { + quantity string + expect Quantity + }{ + {"0", Quantity{i: int64Amount{value: 0, scale: 0}, s: "0", Format: DecimalSI}}, + {"100m", Quantity{i: int64Amount{value: 100, scale: -3}, s: "100m", Format: DecimalSI}}, + {"50m", Quantity{i: int64Amount{value: 50, scale: -3}, s: "50m", Format: DecimalSI}}, + {"10000T", Quantity{i: int64Amount{value: 10000, scale: 12}, s: "10000T", Format: DecimalSI}}, + } + for _, testCase := range table { + q := MustParse(testCase.quantity) + // Won't currently get an error as MarshalTo can't return one + result, _ := q.Marshal() + q.MarshalTo(result) + if q.Cmp(testCase.expect) != 0 { + t.Errorf("Expected: %v, Actual: %v", testCase.expect, q) + } + } + // Test when i is {0,0} + table2 := []struct { + dec *inf.Dec + expect Quantity + }{ + {dec(0, 0).Dec, Quantity{i: int64Amount{value: 0, scale: 0}, d: infDecAmount{dec(0, 0).Dec}, s: "0", Format: DecimalSI}}, + {dec(10, 0).Dec, Quantity{i: int64Amount{value: 0, scale: 0}, d: infDecAmount{dec(10, 0).Dec}, s: "10", Format: DecimalSI}}, + {dec(-10, 0).Dec, Quantity{i: int64Amount{value: 0, scale: 0}, d: infDecAmount{dec(-10, 0).Dec}, s: "-10", Format: DecimalSI}}, + } + for _, testCase := range table2 { + q := Quantity{d: infDecAmount{testCase.dec}, Format: DecimalSI} + // Won't currently get an error as MarshalTo can't return one + result, _ := q.Marshal() + q.Unmarshal(result) + if q.Cmp(testCase.expect) != 0 { + t.Errorf("Expected: %v, Actual: %v", testCase.expect, q) + } + } +} + +func TestQuantityProtoUnmarshal(t *testing.T) { + // Test when d is nil + table := []struct { + input Quantity + expect string + }{ + {Quantity{i: int64Amount{value: 0, scale: 0}, s: "0", Format: DecimalSI}, "0"}, + {Quantity{i: int64Amount{value: 100, scale: -3}, s: "100m", Format: DecimalSI}, "100m"}, + {Quantity{i: int64Amount{value: 50, scale: -3}, s: "50m", Format: DecimalSI}, "50m"}, + {Quantity{i: int64Amount{value: 10000, scale: 12}, s: "10000T", Format: DecimalSI}, "10000T"}, + } + for _, testCase := range table { + var inputQ Quantity + expectQ := MustParse(testCase.expect) + inputByteArray, _ := testCase.input.Marshal() + inputQ.Unmarshal(inputByteArray) + if inputQ.Cmp(expectQ) != 0 { + t.Errorf("Expected: %v, Actual: %v", inputQ, expectQ) + } + } + // Test when i is {0,0} + table2 := []struct { + input Quantity + expect *inf.Dec + }{ + {Quantity{i: int64Amount{value: 0, scale: 0}, d: infDecAmount{dec(0, 0).Dec}, s: "0", Format: DecimalSI}, dec(0, 0).Dec}, + {Quantity{i: int64Amount{value: 0, scale: 0}, d: infDecAmount{dec(10, 0).Dec}, s: "10", Format: DecimalSI}, dec(10, 0).Dec}, + {Quantity{i: int64Amount{value: 0, scale: 0}, d: infDecAmount{dec(-10, 0).Dec}, s: "-10", Format: DecimalSI}, dec(-10, 0).Dec}, + } + for _, testCase := range table2 { + var inputQ Quantity + expectQ := Quantity{d: infDecAmount{testCase.expect}, Format: DecimalSI} + inputByteArray, _ := testCase.input.Marshal() + inputQ.Unmarshal(inputByteArray) + if inputQ.Cmp(expectQ) != 0 { + t.Errorf("Expected: %v, Actual: %v", inputQ, expectQ) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_test.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_test.go new file mode 100644 index 000000000..e61a2547d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_test.go @@ -0,0 +1,1370 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "encoding/json" + "math/rand" + "strings" + "testing" + "unicode" + + fuzz "github.com/google/gofuzz" + "github.com/spf13/pflag" + + inf "gopkg.in/inf.v0" +) + +var useInfDec bool + +func amount(i int64, exponent int) infDecAmount { + // See the below test-- scale is the negative of an exponent. + return infDecAmount{inf.NewDec(i, inf.Scale(-exponent))} +} + +func dec(i int64, exponent int) infDecAmount { + // See the below test-- scale is the negative of an exponent. + return infDecAmount{inf.NewDec(i, inf.Scale(-exponent))} +} + +func decQuantity(i int64, exponent int, format Format) Quantity { + return Quantity{d: dec(i, exponent), Format: format} +} + +func intQuantity(i int64, exponent Scale, format Format) Quantity { + return Quantity{i: int64Amount{value: i, scale: exponent}, Format: format} +} + +func TestDec(t *testing.T) { + table := []struct { + got infDecAmount + expect string + }{ + {dec(1, 0), "1"}, + {dec(1, 1), "10"}, + {dec(5, 2), "500"}, + {dec(8, 3), "8000"}, + {dec(2, 0), "2"}, + {dec(1, -1), "0.1"}, + {dec(3, -2), "0.03"}, + {dec(4, -3), "0.004"}, + } + + for _, item := range table { + if e, a := item.expect, item.got.Dec.String(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + } +} + +// TestQuantityParseZero ensures that when a 0 quantity is passed, its string value is 0 +func TestQuantityParseZero(t *testing.T) { + zero := MustParse("0") + if expected, actual := "0", zero.String(); expected != actual { + t.Errorf("Expected %v, actual %v", expected, actual) + } +} + +// TestQuantityParseNonNumericError ensures that when a non-numeric string is parsed +// it panics +func TestQuantityParseNonNumericPanic(t *testing.T) { + defer func() { + if r := recover(); r == nil { + t.Errorf("MustParse did not panic") + } + }() + _ = MustParse("Non-Numeric") +} + +// TestQuantityAddZeroPreservesSuffix verifies that a suffix is preserved +// independent of the order of operations when adding a zero and non-zero val +func TestQuantityAddZeroPreservesSuffix(t *testing.T) { + testValues := []string{"100m", "1Gi"} + zero := MustParse("0") + for _, testValue := range testValues { + value := MustParse(testValue) + v1 := *value.Copy() + // ensure non-zero + zero = non-zero (suffix preserved) + v1.Add(zero) + // ensure zero + non-zero = non-zero (suffix preserved) + v2 := *zero.Copy() + v2.Add(value) + + if v1.String() != testValue { + t.Errorf("Expected %v, actual %v", testValue, v1.String()) + continue + } + if v2.String() != testValue { + t.Errorf("Expected %v, actual %v", testValue, v2.String()) + } + } +} + +// TestQuantitySubZeroPreservesSuffix verifies that a suffix is preserved +// independent of the order of operations when subtracting a zero and non-zero val +func TestQuantitySubZeroPreservesSuffix(t *testing.T) { + testValues := []string{"100m", "1Gi"} + zero := MustParse("0") + for _, testValue := range testValues { + value := MustParse(testValue) + v1 := *value.Copy() + // ensure non-zero - zero = non-zero (suffix preserved) + v1.Sub(zero) + // ensure we preserved the input value + if v1.String() != testValue { + t.Errorf("Expected %v, actual %v", testValue, v1.String()) + } + + // ensure zero - non-zero = -non-zero (suffix preserved) + v2 := *zero.Copy() + v2.Sub(value) + negVal := *value.Copy() + negVal.Neg() + if v2.String() != negVal.String() { + t.Errorf("Expected %v, actual %v", negVal.String(), v2.String()) + } + } +} + +// Verifies that you get 0 as canonical value if internal value is 0, and not 0 +func TestQuantityCanocicalizeZero(t *testing.T) { + val := MustParse("1000m") + val.i.Sub(int64Amount{value: 1}) + zero := Quantity{i: val.i, Format: DecimalSI} + if expected, actual := "0", zero.String(); expected != actual { + t.Errorf("Expected %v, actual %v", expected, actual) + } +} + +func TestQuantityCmp(t *testing.T) { + // Test when d is nil + table := []struct { + x string + y string + expect int + }{ + {"0", "0", 0}, + {"100m", "50m", 1}, + {"50m", "100m", -1}, + {"10000T", "100Gi", 1}, + } + for _, testCase := range table { + q1 := MustParse(testCase.x) + q2 := MustParse(testCase.y) + if result := q1.Cmp(q2); result != testCase.expect { + t.Errorf("X: %v, Y: %v, Expected: %v, Actual: %v", testCase.x, testCase.y, testCase.expect, result) + } + } + // Test when i is {0,0} + table2 := []struct { + x *inf.Dec + y *inf.Dec + expect int + }{ + {dec(0, 0).Dec, dec(0, 0).Dec, 0}, + {nil, dec(0, 0).Dec, 0}, + {dec(0, 0).Dec, nil, 0}, + {nil, nil, 0}, + {nil, dec(10, 0).Dec, -1}, + {nil, dec(-10, 0).Dec, 1}, + {dec(10, 0).Dec, nil, 1}, + {dec(-10, 0).Dec, nil, -1}, + } + for _, testCase := range table2 { + q1 := Quantity{d: infDecAmount{testCase.x}, Format: DecimalSI} + q2 := Quantity{d: infDecAmount{testCase.y}, Format: DecimalSI} + if result := q1.Cmp(q2); result != testCase.expect { + t.Errorf("X: %v, Y: %v, Expected: %v, Actual: %v", testCase.x, testCase.y, testCase.expect, result) + } + } +} + +func TestParseQuantityString(t *testing.T) { + table := []struct { + input string + positive bool + value string + num, denom, suffix string + }{ + {"0.025Ti", true, "0.025", "0", "025", "Ti"}, + {"1.025Ti", true, "1.025", "1", "025", "Ti"}, + {"-1.025Ti", false, "-1.025", "1", "025", "Ti"}, + {".", true, ".", "0", "", ""}, + {"-.", false, "-.", "0", "", ""}, + {"1E-3", true, "1", "1", "", "E-3"}, + } + for _, test := range table { + positive, value, num, denom, suffix, err := parseQuantityString(test.input) + if err != nil { + t.Errorf("%s: error: %v", test.input, err) + continue + } + if positive != test.positive || value != test.value || num != test.num || denom != test.denom || suffix != test.suffix { + t.Errorf("%s: unmatched: %t %q %q %q %q", test.input, positive, value, num, denom, suffix) + } + } +} + +func TestQuantityParse(t *testing.T) { + if _, err := ParseQuantity(""); err == nil { + t.Errorf("expected empty string to return error") + } + + table := []struct { + input string + expect Quantity + }{ + {"0", decQuantity(0, 0, DecimalSI)}, + {"0n", decQuantity(0, 0, DecimalSI)}, + {"0u", decQuantity(0, 0, DecimalSI)}, + {"0m", decQuantity(0, 0, DecimalSI)}, + {"0Ki", decQuantity(0, 0, BinarySI)}, + {"0k", decQuantity(0, 0, DecimalSI)}, + {"0Mi", decQuantity(0, 0, BinarySI)}, + {"0M", decQuantity(0, 0, DecimalSI)}, + {"0Gi", decQuantity(0, 0, BinarySI)}, + {"0G", decQuantity(0, 0, DecimalSI)}, + {"0Ti", decQuantity(0, 0, BinarySI)}, + {"0T", decQuantity(0, 0, DecimalSI)}, + + // Quantity less numbers are allowed + {"1", decQuantity(1, 0, DecimalSI)}, + + // Binary suffixes + {"1Ki", decQuantity(1024, 0, BinarySI)}, + {"8Ki", decQuantity(8*1024, 0, BinarySI)}, + {"7Mi", decQuantity(7*1024*1024, 0, BinarySI)}, + {"6Gi", decQuantity(6*1024*1024*1024, 0, BinarySI)}, + {"5Ti", decQuantity(5*1024*1024*1024*1024, 0, BinarySI)}, + {"4Pi", decQuantity(4*1024*1024*1024*1024*1024, 0, BinarySI)}, + {"3Ei", decQuantity(3*1024*1024*1024*1024*1024*1024, 0, BinarySI)}, + + {"10Ti", decQuantity(10*1024*1024*1024*1024, 0, BinarySI)}, + {"100Ti", decQuantity(100*1024*1024*1024*1024, 0, BinarySI)}, + + // Decimal suffixes + {"5n", decQuantity(5, -9, DecimalSI)}, + {"4u", decQuantity(4, -6, DecimalSI)}, + {"3m", decQuantity(3, -3, DecimalSI)}, + {"9", decQuantity(9, 0, DecimalSI)}, + {"8k", decQuantity(8, 3, DecimalSI)}, + {"50k", decQuantity(5, 4, DecimalSI)}, + {"7M", decQuantity(7, 6, DecimalSI)}, + {"6G", decQuantity(6, 9, DecimalSI)}, + {"5T", decQuantity(5, 12, DecimalSI)}, + {"40T", decQuantity(4, 13, DecimalSI)}, + {"300T", decQuantity(3, 14, DecimalSI)}, + {"2P", decQuantity(2, 15, DecimalSI)}, + {"1E", decQuantity(1, 18, DecimalSI)}, + + // Decimal exponents + {"1E-3", decQuantity(1, -3, DecimalExponent)}, + {"1e3", decQuantity(1, 3, DecimalExponent)}, + {"1E6", decQuantity(1, 6, DecimalExponent)}, + {"1e9", decQuantity(1, 9, DecimalExponent)}, + {"1E12", decQuantity(1, 12, DecimalExponent)}, + {"1e15", decQuantity(1, 15, DecimalExponent)}, + {"1E18", decQuantity(1, 18, DecimalExponent)}, + + // Nonstandard but still parsable + {"1e14", decQuantity(1, 14, DecimalExponent)}, + {"1e13", decQuantity(1, 13, DecimalExponent)}, + {"1e3", decQuantity(1, 3, DecimalExponent)}, + {"100.035k", decQuantity(100035, 0, DecimalSI)}, + + // Things that look like floating point + {"0.001", decQuantity(1, -3, DecimalSI)}, + {"0.0005k", decQuantity(5, -1, DecimalSI)}, + {"0.005", decQuantity(5, -3, DecimalSI)}, + {"0.05", decQuantity(5, -2, DecimalSI)}, + {"0.5", decQuantity(5, -1, DecimalSI)}, + {"0.00050k", decQuantity(5, -1, DecimalSI)}, + {"0.00500", decQuantity(5, -3, DecimalSI)}, + {"0.05000", decQuantity(5, -2, DecimalSI)}, + {"0.50000", decQuantity(5, -1, DecimalSI)}, + {"0.5e0", decQuantity(5, -1, DecimalExponent)}, + {"0.5e-1", decQuantity(5, -2, DecimalExponent)}, + {"0.5e-2", decQuantity(5, -3, DecimalExponent)}, + {"0.5e0", decQuantity(5, -1, DecimalExponent)}, + {"10.035M", decQuantity(10035, 3, DecimalSI)}, + + {"1.2e3", decQuantity(12, 2, DecimalExponent)}, + {"1.3E+6", decQuantity(13, 5, DecimalExponent)}, + {"1.40e9", decQuantity(14, 8, DecimalExponent)}, + {"1.53E12", decQuantity(153, 10, DecimalExponent)}, + {"1.6e15", decQuantity(16, 14, DecimalExponent)}, + {"1.7E18", decQuantity(17, 17, DecimalExponent)}, + + {"9.01", decQuantity(901, -2, DecimalSI)}, + {"8.1k", decQuantity(81, 2, DecimalSI)}, + {"7.123456M", decQuantity(7123456, 0, DecimalSI)}, + {"6.987654321G", decQuantity(6987654321, 0, DecimalSI)}, + {"5.444T", decQuantity(5444, 9, DecimalSI)}, + {"40.1T", decQuantity(401, 11, DecimalSI)}, + {"300.2T", decQuantity(3002, 11, DecimalSI)}, + {"2.5P", decQuantity(25, 14, DecimalSI)}, + {"1.01E", decQuantity(101, 16, DecimalSI)}, + + // Things that saturate/round + {"3.001n", decQuantity(4, -9, DecimalSI)}, + {"1.1E-9", decQuantity(2, -9, DecimalExponent)}, + {"0.0000000001", decQuantity(1, -9, DecimalSI)}, + {"0.0000000005", decQuantity(1, -9, DecimalSI)}, + {"0.00000000050", decQuantity(1, -9, DecimalSI)}, + {"0.5e-9", decQuantity(1, -9, DecimalExponent)}, + {"0.9n", decQuantity(1, -9, DecimalSI)}, + {"0.00000012345", decQuantity(124, -9, DecimalSI)}, + {"0.00000012354", decQuantity(124, -9, DecimalSI)}, + {"9Ei", Quantity{d: maxAllowed, Format: BinarySI}}, + {"9223372036854775807Ki", Quantity{d: maxAllowed, Format: BinarySI}}, + {"12E", decQuantity(12, 18, DecimalSI)}, + + // We'll accept fractional binary stuff, too. + {"100.035Ki", decQuantity(10243584, -2, BinarySI)}, + {"0.5Mi", decQuantity(.5*1024*1024, 0, BinarySI)}, + {"0.05Gi", decQuantity(536870912, -1, BinarySI)}, + {"0.025Ti", decQuantity(274877906944, -1, BinarySI)}, + + // Things written by trolls + {"0.000000000001Ki", decQuantity(2, -9, DecimalSI)}, // rounds up, changes format + {".001", decQuantity(1, -3, DecimalSI)}, + {".0001k", decQuantity(100, -3, DecimalSI)}, + {"1.", decQuantity(1, 0, DecimalSI)}, + {"1.G", decQuantity(1, 9, DecimalSI)}, + } + + for _, asDec := range []bool{false, true} { + for _, item := range table { + got, err := ParseQuantity(item.input) + if err != nil { + t.Errorf("%v: unexpected error: %v", item.input, err) + continue + } + if asDec { + got.AsDec() + } + + if e, a := item.expect, got; e.Cmp(a) != 0 { + t.Errorf("%v: expected %v, got %v", item.input, e.String(), a.String()) + } + if e, a := item.expect.Format, got.Format; e != a { + t.Errorf("%v: expected %#v, got %#v", item.input, e, a) + } + + if asDec { + if i, ok := got.AsInt64(); i != 0 || ok { + t.Errorf("%v: expected inf.Dec to return false for AsInt64: %d", item.input, i) + } + continue + } + i, ok := item.expect.AsInt64() + if !ok { + continue + } + j, ok := got.AsInt64() + if !ok { + if got.d.Dec == nil && got.i.scale >= 0 { + t.Errorf("%v: is an int64Amount, but can't return AsInt64: %v", item.input, got) + } + continue + } + if i != j { + t.Errorf("%v: expected equivalent representation as int64: %d %d", item.input, i, j) + } + } + + for _, item := range table { + got, err := ParseQuantity(item.input) + if err != nil { + t.Errorf("%v: unexpected error: %v", item.input, err) + continue + } + + if asDec { + got.AsDec() + } + + // verify that we can decompose the input and get the same result by building up from the base. + positive, _, num, denom, suffix, err := parseQuantityString(item.input) + if err != nil { + t.Errorf("%v: unexpected error: %v", item.input, err) + continue + } + if got.Sign() >= 0 && !positive || got.Sign() < 0 && positive { + t.Errorf("%v: positive was incorrect: %t", item.input, positive) + continue + } + var value string + if !positive { + value = "-" + } + value += num + if len(denom) > 0 { + value += "." + denom + } + value += suffix + if len(value) == 0 { + t.Errorf("%v: did not parse correctly, %q %q %q", item.input, num, denom, suffix) + } + expected, err := ParseQuantity(value) + if err != nil { + t.Errorf("%v: unexpected error for %s: %v", item.input, value, err) + continue + } + if expected.Cmp(got) != 0 { + t.Errorf("%v: not the same as %s", item.input, value) + continue + } + } + + // Try the negative version of everything + desired := &inf.Dec{} + expect := Quantity{d: infDecAmount{Dec: desired}} + for _, item := range table { + got, err := ParseQuantity("-" + strings.TrimLeftFunc(item.input, unicode.IsSpace)) + if err != nil { + t.Errorf("-%v: unexpected error: %v", item.input, err) + continue + } + if asDec { + got.AsDec() + } + + expected := item.expect + desired.Neg(expected.AsDec()) + + if e, a := expect, got; e.Cmp(a) != 0 { + t.Errorf("%v: expected %s, got %s", item.input, e.String(), a.String()) + } + if e, a := expected.Format, got.Format; e != a { + t.Errorf("%v: expected %#v, got %#v", item.input, e, a) + } + } + + // Try everything with an explicit + + for _, item := range table { + got, err := ParseQuantity("+" + strings.TrimLeftFunc(item.input, unicode.IsSpace)) + if err != nil { + t.Errorf("-%v: unexpected error: %v", item.input, err) + continue + } + if asDec { + got.AsDec() + } + + if e, a := item.expect, got; e.Cmp(a) != 0 { + t.Errorf("%v(%t): expected %s, got %s", item.input, asDec, e.String(), a.String()) + } + if e, a := item.expect.Format, got.Format; e != a { + t.Errorf("%v: expected %#v, got %#v", item.input, e, a) + } + } + } + + invalid := []string{ + "1.1.M", + "1+1.0M", + "0.1mi", + "0.1am", + "aoeu", + ".5i", + "1i", + "-3.01i", + "-3.01e-", + + // trailing whitespace is forbidden + " 1", + "1 ", + } + for _, item := range invalid { + _, err := ParseQuantity(item) + if err == nil { + t.Errorf("%v parsed unexpectedly", item) + } + } +} + +func TestQuantityRoundUp(t *testing.T) { + table := []struct { + in string + scale Scale + expect Quantity + ok bool + }{ + {"9.01", -3, decQuantity(901, -2, DecimalSI), true}, + {"9.01", -2, decQuantity(901, -2, DecimalSI), true}, + {"9.01", -1, decQuantity(91, -1, DecimalSI), false}, + {"9.01", 0, decQuantity(10, 0, DecimalSI), false}, + {"9.01", 1, decQuantity(10, 0, DecimalSI), false}, + {"9.01", 2, decQuantity(100, 0, DecimalSI), false}, + + {"-9.01", -3, decQuantity(-901, -2, DecimalSI), true}, + {"-9.01", -2, decQuantity(-901, -2, DecimalSI), true}, + {"-9.01", -1, decQuantity(-91, -1, DecimalSI), false}, + {"-9.01", 0, decQuantity(-10, 0, DecimalSI), false}, + {"-9.01", 1, decQuantity(-10, 0, DecimalSI), false}, + {"-9.01", 2, decQuantity(-100, 0, DecimalSI), false}, + } + + for _, asDec := range []bool{false, true} { + for _, item := range table { + got, err := ParseQuantity(item.in) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + expect := *item.expect.Copy() + if asDec { + got.AsDec() + } + if ok := got.RoundUp(item.scale); ok != item.ok { + t.Errorf("%s(%d,%t): unexpected ok: %t", item.in, item.scale, asDec, ok) + } + if got.Cmp(expect) != 0 { + t.Errorf("%s(%d,%t): unexpected round: %s vs %s", item.in, item.scale, asDec, got.String(), expect.String()) + } + } + } +} + +func TestQuantityCmpInt64AndDec(t *testing.T) { + table := []struct { + a, b Quantity + cmp int + }{ + {intQuantity(901, -2, DecimalSI), intQuantity(901, -2, DecimalSI), 0}, + {intQuantity(90, -1, DecimalSI), intQuantity(901, -2, DecimalSI), -1}, + {intQuantity(901, -2, DecimalSI), intQuantity(900, -2, DecimalSI), 1}, + {intQuantity(0, 0, DecimalSI), intQuantity(0, 0, DecimalSI), 0}, + {intQuantity(0, 1, DecimalSI), intQuantity(0, -1, DecimalSI), 0}, + {intQuantity(0, -1, DecimalSI), intQuantity(0, 1, DecimalSI), 0}, + {intQuantity(800, -3, DecimalSI), intQuantity(1, 0, DecimalSI), -1}, + {intQuantity(800, -3, DecimalSI), intQuantity(79, -2, DecimalSI), 1}, + + {intQuantity(mostPositive, 0, DecimalSI), intQuantity(1, -1, DecimalSI), 1}, + {intQuantity(mostPositive, 1, DecimalSI), intQuantity(1, 0, DecimalSI), 1}, + {intQuantity(mostPositive, 1, DecimalSI), intQuantity(1, 1, DecimalSI), 1}, + {intQuantity(mostPositive, 1, DecimalSI), intQuantity(0, 1, DecimalSI), 1}, + {intQuantity(mostPositive, -16, DecimalSI), intQuantity(1, 3, DecimalSI), -1}, + + {intQuantity(mostNegative, 0, DecimalSI), intQuantity(0, 0, DecimalSI), -1}, + {intQuantity(mostNegative, -18, DecimalSI), intQuantity(-1, 0, DecimalSI), -1}, + {intQuantity(mostNegative, -19, DecimalSI), intQuantity(-1, 0, DecimalSI), 1}, + + {intQuantity(1*1000000*1000000*1000000, -17, DecimalSI), intQuantity(1, 1, DecimalSI), 0}, + {intQuantity(1*1000000*1000000*1000000, -17, DecimalSI), intQuantity(-10, 0, DecimalSI), 1}, + {intQuantity(-1*1000000*1000000*1000000, -17, DecimalSI), intQuantity(-10, 0, DecimalSI), 0}, + {intQuantity(1*1000000*1000000*1000000, -17, DecimalSI), intQuantity(1, 0, DecimalSI), 1}, + + {intQuantity(1*1000000*1000000*1000000+1, -17, DecimalSI), intQuantity(1, 1, DecimalSI), 1}, + {intQuantity(1*1000000*1000000*1000000-1, -17, DecimalSI), intQuantity(1, 1, DecimalSI), -1}, + } + + for _, item := range table { + if cmp := item.a.Cmp(item.b); cmp != item.cmp { + t.Errorf("%#v: unexpected Cmp: %d", item, cmp) + } + if cmp := item.b.Cmp(item.a); cmp != -item.cmp { + t.Errorf("%#v: unexpected inverted Cmp: %d", item, cmp) + } + } + + for _, item := range table { + a, b := *item.a.Copy(), *item.b.Copy() + a.AsDec() + if cmp := a.Cmp(b); cmp != item.cmp { + t.Errorf("%#v: unexpected Cmp: %d", item, cmp) + } + if cmp := b.Cmp(a); cmp != -item.cmp { + t.Errorf("%#v: unexpected inverted Cmp: %d", item, cmp) + } + } + + for _, item := range table { + a, b := *item.a.Copy(), *item.b.Copy() + b.AsDec() + if cmp := a.Cmp(b); cmp != item.cmp { + t.Errorf("%#v: unexpected Cmp: %d", item, cmp) + } + if cmp := b.Cmp(a); cmp != -item.cmp { + t.Errorf("%#v: unexpected inverted Cmp: %d", item, cmp) + } + } + + for _, item := range table { + a, b := *item.a.Copy(), *item.b.Copy() + a.AsDec() + b.AsDec() + if cmp := a.Cmp(b); cmp != item.cmp { + t.Errorf("%#v: unexpected Cmp: %d", item, cmp) + } + if cmp := b.Cmp(a); cmp != -item.cmp { + t.Errorf("%#v: unexpected inverted Cmp: %d", item, cmp) + } + } +} + +func TestQuantityNeg(t *testing.T) { + table := []struct { + a Quantity + out string + }{ + {intQuantity(901, -2, DecimalSI), "-9010m"}, + {decQuantity(901, -2, DecimalSI), "-9010m"}, + } + + for i, item := range table { + out := *item.a.Copy() + out.Neg() + if out.Cmp(item.a) == 0 { + t.Errorf("%d: negating an item should not mutate the source: %s", i, out.String()) + } + if out.String() != item.out { + t.Errorf("%d: negating did not equal exact value: %s", i, out.String()) + } + } +} + +func TestQuantityString(t *testing.T) { + table := []struct { + in Quantity + expect string + alternate string + }{ + {decQuantity(1024*1024*1024, 0, BinarySI), "1Gi", "1024Mi"}, + {decQuantity(300*1024*1024, 0, BinarySI), "300Mi", "307200Ki"}, + {decQuantity(6*1024, 0, BinarySI), "6Ki", ""}, + {decQuantity(1001*1024*1024*1024, 0, BinarySI), "1001Gi", "1025024Mi"}, + {decQuantity(1024*1024*1024*1024, 0, BinarySI), "1Ti", "1024Gi"}, + {decQuantity(5, 0, BinarySI), "5", "5000m"}, + {decQuantity(500, -3, BinarySI), "500m", "0.5"}, + {decQuantity(1, 9, DecimalSI), "1G", "1000M"}, + {decQuantity(1000, 6, DecimalSI), "1G", "0.001T"}, + {decQuantity(1000000, 3, DecimalSI), "1G", ""}, + {decQuantity(1000000000, 0, DecimalSI), "1G", ""}, + {decQuantity(1, -3, DecimalSI), "1m", "1000u"}, + {decQuantity(80, -3, DecimalSI), "80m", ""}, + {decQuantity(1080, -3, DecimalSI), "1080m", "1.08"}, + {decQuantity(108, -2, DecimalSI), "1080m", "1080000000n"}, + {decQuantity(10800, -4, DecimalSI), "1080m", ""}, + {decQuantity(300, 6, DecimalSI), "300M", ""}, + {decQuantity(1, 12, DecimalSI), "1T", ""}, + {decQuantity(1234567, 6, DecimalSI), "1234567M", ""}, + {decQuantity(1234567, -3, BinarySI), "1234567m", ""}, + {decQuantity(3, 3, DecimalSI), "3k", ""}, + {decQuantity(1025, 0, BinarySI), "1025", ""}, + {decQuantity(0, 0, DecimalSI), "0", ""}, + {decQuantity(0, 0, BinarySI), "0", ""}, + {decQuantity(1, 9, DecimalExponent), "1e9", ".001e12"}, + {decQuantity(1, -3, DecimalExponent), "1e-3", "0.001e0"}, + {decQuantity(1, -9, DecimalExponent), "1e-9", "1000e-12"}, + {decQuantity(80, -3, DecimalExponent), "80e-3", ""}, + {decQuantity(300, 6, DecimalExponent), "300e6", ""}, + {decQuantity(1, 12, DecimalExponent), "1e12", ""}, + {decQuantity(1, 3, DecimalExponent), "1e3", ""}, + {decQuantity(3, 3, DecimalExponent), "3e3", ""}, + {decQuantity(3, 3, DecimalSI), "3k", ""}, + {decQuantity(0, 0, DecimalExponent), "0", "00"}, + {decQuantity(1, -9, DecimalSI), "1n", ""}, + {decQuantity(80, -9, DecimalSI), "80n", ""}, + {decQuantity(1080, -9, DecimalSI), "1080n", ""}, + {decQuantity(108, -8, DecimalSI), "1080n", ""}, + {decQuantity(10800, -10, DecimalSI), "1080n", ""}, + {decQuantity(1, -6, DecimalSI), "1u", ""}, + {decQuantity(80, -6, DecimalSI), "80u", ""}, + {decQuantity(1080, -6, DecimalSI), "1080u", ""}, + } + for _, item := range table { + got := item.in.String() + if e, a := item.expect, got; e != a { + t.Errorf("%#v: expected %v, got %v", item.in, e, a) + } + q, err := ParseQuantity(item.expect) + if err != nil { + t.Errorf("%#v: unexpected error: %v", item.expect, err) + } + if len(q.s) == 0 || q.s != item.expect { + t.Errorf("%#v: did not copy canonical string on parse: %s", item.expect, q.s) + } + if len(item.alternate) == 0 { + continue + } + q, err = ParseQuantity(item.alternate) + if err != nil { + t.Errorf("%#v: unexpected error: %v", item.expect, err) + continue + } + if len(q.s) != 0 { + t.Errorf("%#v: unexpected nested string: %v", item.expect, q.s) + } + if q.String() != item.expect { + t.Errorf("%#v: unexpected alternate canonical: %v", item.expect, q.String()) + } + if len(q.s) == 0 || q.s != item.expect { + t.Errorf("%#v: did not set canonical string on ToString: %s", item.expect, q.s) + } + } + desired := &inf.Dec{} // Avoid modifying the values in the table. + for _, item := range table { + if item.in.Cmp(Quantity{}) == 0 { + // Don't expect it to print "-0" ever + continue + } + q := item.in + q.d = infDecAmount{desired.Neg(q.AsDec())} + if e, a := "-"+item.expect, q.String(); e != a { + t.Errorf("%#v: expected %v, got %v", item.in, e, a) + } + } +} + +func TestQuantityParseEmit(t *testing.T) { + table := []struct { + in string + expect string + }{ + {"1Ki", "1Ki"}, + {"1Mi", "1Mi"}, + {"1Gi", "1Gi"}, + {"1024Mi", "1Gi"}, + {"1000M", "1G"}, + {".001Ki", "1024m"}, + {".000001Ki", "1024u"}, + {".000000001Ki", "1024n"}, + {".000000000001Ki", "2n"}, + } + + for _, item := range table { + q, err := ParseQuantity(item.in) + if err != nil { + t.Errorf("Couldn't parse %v", item.in) + continue + } + if e, a := item.expect, q.String(); e != a { + t.Errorf("%#v: expected %v, got %v", item.in, e, a) + } + } + for _, item := range table { + q, err := ParseQuantity("-" + item.in) + if err != nil { + t.Errorf("Couldn't parse %v", item.in) + continue + } + if q.Cmp(Quantity{}) == 0 { + continue + } + if e, a := "-"+item.expect, q.String(); e != a { + t.Errorf("%#v: expected %v, got %v (%#v)", item.in, e, a, q.i) + } + } +} + +var fuzzer = fuzz.New().Funcs( + func(q *Quantity, c fuzz.Continue) { + q.i = Zero + if c.RandBool() { + q.Format = BinarySI + if c.RandBool() { + dec := &inf.Dec{} + q.d = infDecAmount{Dec: dec} + dec.SetScale(0) + dec.SetUnscaled(c.Int63()) + return + } + // Be sure to test cases like 1Mi + dec := &inf.Dec{} + q.d = infDecAmount{Dec: dec} + dec.SetScale(0) + dec.SetUnscaled(c.Int63n(1024) << uint(10*c.Intn(5))) + return + } + if c.RandBool() { + q.Format = DecimalSI + } else { + q.Format = DecimalExponent + } + if c.RandBool() { + dec := &inf.Dec{} + q.d = infDecAmount{Dec: dec} + dec.SetScale(inf.Scale(c.Intn(4))) + dec.SetUnscaled(c.Int63()) + return + } + // Be sure to test cases like 1M + dec := &inf.Dec{} + q.d = infDecAmount{Dec: dec} + dec.SetScale(inf.Scale(3 - c.Intn(15))) + dec.SetUnscaled(c.Int63n(1000)) + }, +) + +func TestQuantityDeepCopy(t *testing.T) { + // Test when d is nil + slice := []string{"0", "100m", "50m", "10000T"} + for _, testCase := range slice { + q := MustParse(testCase) + if result := q.DeepCopy(); result != q { + t.Errorf("Expected: %v, Actual: %v", q, result) + } + } + table := []*inf.Dec{ + dec(0, 0).Dec, + dec(10, 0).Dec, + dec(-10, 0).Dec, + } + // Test when i is {0,0} + for _, testCase := range table { + q := Quantity{d: infDecAmount{testCase}, Format: DecimalSI} + result := q.DeepCopy() + if q.d.Cmp(result.AsDec()) != 0 { + t.Errorf("Expected: %v, Actual: %v", q.String(), result.String()) + } + result = Quantity{d: infDecAmount{dec(2, 0).Dec}, Format: DecimalSI} + if q.d.Cmp(result.AsDec()) == 0 { + t.Errorf("Modifying result has affected q") + } + } +} + +func TestJSON(t *testing.T) { + for i := 0; i < 500; i++ { + q := &Quantity{} + fuzzer.Fuzz(q) + b, err := json.Marshal(q) + if err != nil { + t.Errorf("error encoding %v: %v", q, err) + continue + } + q2 := &Quantity{} + err = json.Unmarshal(b, q2) + if err != nil { + t.Logf("%d: %s", i, string(b)) + t.Errorf("%v: error decoding %v: %v", q, string(b), err) + } + if q2.Cmp(*q) != 0 { + t.Errorf("Expected equal: %v, %v (json was '%v')", q, q2, string(b)) + } + } +} + +func TestJSONWhitespace(t *testing.T) { + q := Quantity{} + testCases := []struct { + in string + expect string + }{ + {`" 1"`, "1"}, + {`"1 "`, "1"}, + {`1`, "1"}, + {` 1`, "1"}, + {`1 `, "1"}, + {`10`, "10"}, + {`-1`, "-1"}, + {` -1`, "-1"}, + } + for _, test := range testCases { + if err := json.Unmarshal([]byte(test.in), &q); err != nil { + t.Errorf("%q: %v", test.in, err) + } + if q.String() != test.expect { + t.Errorf("unexpected string: %q", q.String()) + } + } +} + +func TestMilliNewSet(t *testing.T) { + table := []struct { + value int64 + format Format + expect string + exact bool + }{ + {1, DecimalSI, "1m", true}, + {1000, DecimalSI, "1", true}, + {1234000, DecimalSI, "1234", true}, + {1024, BinarySI, "1024m", false}, // Format changes + {1000000, "invalidFormatDefaultsToExponent", "1e3", true}, + {1024 * 1024, BinarySI, "1048576m", false}, // Format changes + } + + for _, item := range table { + q := NewMilliQuantity(item.value, item.format) + if e, a := item.expect, q.String(); e != a { + t.Errorf("Expected %v, got %v; %#v", e, a, q) + } + if !item.exact { + continue + } + q2, err := ParseQuantity(q.String()) + if err != nil { + t.Errorf("Round trip failed on %v", q) + } + if e, a := item.value, q2.MilliValue(); e != a { + t.Errorf("Expected %v, got %v", e, a) + } + } + + for _, item := range table { + q := NewQuantity(0, item.format) + q.SetMilli(item.value) + if e, a := item.expect, q.String(); e != a { + t.Errorf("Set: Expected %v, got %v; %#v", e, a, q) + } + } +} + +func TestNewSet(t *testing.T) { + table := []struct { + value int64 + format Format + expect string + }{ + {1, DecimalSI, "1"}, + {1000, DecimalSI, "1k"}, + {1234000, DecimalSI, "1234k"}, + {1024, BinarySI, "1Ki"}, + {1000000, "invalidFormatDefaultsToExponent", "1e6"}, + {1024 * 1024, BinarySI, "1Mi"}, + } + + for _, asDec := range []bool{false, true} { + for _, item := range table { + q := NewQuantity(item.value, item.format) + if asDec { + q.ToDec() + } + if e, a := item.expect, q.String(); e != a { + t.Errorf("Expected %v, got %v; %#v", e, a, q) + } + q2, err := ParseQuantity(q.String()) + if err != nil { + t.Errorf("Round trip failed on %v", q) + } + if e, a := item.value, q2.Value(); e != a { + t.Errorf("Expected %v, got %v", e, a) + } + } + + for _, item := range table { + q := NewQuantity(0, item.format) + q.Set(item.value) + if asDec { + q.ToDec() + } + if e, a := item.expect, q.String(); e != a { + t.Errorf("Set: Expected %v, got %v; %#v", e, a, q) + } + } + } +} + +func TestNewScaledSet(t *testing.T) { + table := []struct { + value int64 + scale Scale + expect string + }{ + {1, Nano, "1n"}, + {1000, Nano, "1u"}, + {1, Micro, "1u"}, + {1000, Micro, "1m"}, + {1, Milli, "1m"}, + {1000, Milli, "1"}, + {1, 0, "1"}, + {0, Nano, "0"}, + {0, Micro, "0"}, + {0, Milli, "0"}, + {0, 0, "0"}, + } + + for _, item := range table { + q := NewScaledQuantity(item.value, item.scale) + if e, a := item.expect, q.String(); e != a { + t.Errorf("Expected %v, got %v; %#v", e, a, q) + } + q2, err := ParseQuantity(q.String()) + if err != nil { + t.Errorf("Round trip failed on %v", q) + } + if e, a := item.value, q2.ScaledValue(item.scale); e != a { + t.Errorf("Expected %v, got %v", e, a) + } + q3 := NewQuantity(0, DecimalSI) + q3.SetScaled(item.value, item.scale) + if q.Cmp(*q3) != 0 { + t.Errorf("Expected %v and %v to be equal", q, q3) + } + } +} + +func TestScaledValue(t *testing.T) { + table := []struct { + fromScale Scale + toScale Scale + expected int64 + }{ + {Nano, Nano, 1}, + {Nano, Micro, 1}, + {Nano, Milli, 1}, + {Nano, 0, 1}, + {Micro, Nano, 1000}, + {Micro, Micro, 1}, + {Micro, Milli, 1}, + {Micro, 0, 1}, + {Milli, Nano, 1000 * 1000}, + {Milli, Micro, 1000}, + {Milli, Milli, 1}, + {Milli, 0, 1}, + {0, Nano, 1000 * 1000 * 1000}, + {0, Micro, 1000 * 1000}, + {0, Milli, 1000}, + {0, 0, 1}, + } + + for _, item := range table { + q := NewScaledQuantity(1, item.fromScale) + if e, a := item.expected, q.ScaledValue(item.toScale); e != a { + t.Errorf("%v to %v: Expected %v, got %v", item.fromScale, item.toScale, e, a) + } + } +} + +func TestUninitializedNoCrash(t *testing.T) { + var q Quantity + + q.Value() + q.MilliValue() + q.Copy() + _ = q.String() + q.MarshalJSON() +} + +func TestCopy(t *testing.T) { + q := NewQuantity(5, DecimalSI) + c := q.Copy() + c.Set(6) + if q.Value() == 6 { + t.Errorf("Copy didn't") + } +} + +func TestQFlagSet(t *testing.T) { + qf := qFlag{&Quantity{}} + qf.Set("1Ki") + if e, a := "1Ki", qf.String(); e != a { + t.Errorf("Unexpected result %v != %v", e, a) + } +} + +func TestQFlagIsPFlag(t *testing.T) { + var pfv pflag.Value = qFlag{} + if e, a := "quantity", pfv.Type(); e != a { + t.Errorf("Unexpected result %v != %v", e, a) + } +} + +func TestSub(t *testing.T) { + tests := []struct { + a Quantity + b Quantity + expected Quantity + }{ + {decQuantity(10, 0, DecimalSI), decQuantity(1, 1, DecimalSI), decQuantity(0, 0, DecimalSI)}, + {decQuantity(10, 0, DecimalSI), decQuantity(1, 0, BinarySI), decQuantity(9, 0, DecimalSI)}, + {decQuantity(10, 0, BinarySI), decQuantity(1, 0, DecimalSI), decQuantity(9, 0, BinarySI)}, + {Quantity{Format: DecimalSI}, decQuantity(50, 0, DecimalSI), decQuantity(-50, 0, DecimalSI)}, + {decQuantity(50, 0, DecimalSI), Quantity{Format: DecimalSI}, decQuantity(50, 0, DecimalSI)}, + {Quantity{Format: DecimalSI}, Quantity{Format: DecimalSI}, decQuantity(0, 0, DecimalSI)}, + } + + for i, test := range tests { + test.a.Sub(test.b) + if test.a.Cmp(test.expected) != 0 { + t.Errorf("[%d] Expected %q, got %q", i, test.expected.String(), test.a.String()) + } + } +} + +func TestNeg(t *testing.T) { + tests := []struct { + a Quantity + b Quantity + expected Quantity + }{ + {a: intQuantity(0, 0, DecimalSI), expected: intQuantity(0, 0, DecimalSI)}, + {a: Quantity{}, expected: Quantity{}}, + {a: intQuantity(10, 0, BinarySI), expected: intQuantity(-10, 0, BinarySI)}, + {a: intQuantity(-10, 0, BinarySI), expected: intQuantity(10, 0, BinarySI)}, + {a: decQuantity(0, 0, DecimalSI), expected: intQuantity(0, 0, DecimalSI)}, + {a: decQuantity(10, 0, BinarySI), expected: intQuantity(-10, 0, BinarySI)}, + {a: decQuantity(-10, 0, BinarySI), expected: intQuantity(10, 0, BinarySI)}, + } + + for i, test := range tests { + a := test.a.Copy() + a.Neg() + // ensure value is same + if a.Cmp(test.expected) != 0 { + t.Errorf("[%d] Expected %q, got %q", i, test.expected.String(), a.String()) + } + } +} + +func TestAdd(t *testing.T) { + tests := []struct { + a Quantity + b Quantity + expected Quantity + }{ + {decQuantity(10, 0, DecimalSI), decQuantity(1, 1, DecimalSI), decQuantity(20, 0, DecimalSI)}, + {decQuantity(10, 0, DecimalSI), decQuantity(1, 0, BinarySI), decQuantity(11, 0, DecimalSI)}, + {decQuantity(10, 0, BinarySI), decQuantity(1, 0, DecimalSI), decQuantity(11, 0, BinarySI)}, + {Quantity{Format: DecimalSI}, decQuantity(50, 0, DecimalSI), decQuantity(50, 0, DecimalSI)}, + {decQuantity(50, 0, DecimalSI), Quantity{Format: DecimalSI}, decQuantity(50, 0, DecimalSI)}, + {Quantity{Format: DecimalSI}, Quantity{Format: DecimalSI}, decQuantity(0, 0, DecimalSI)}, + } + + for i, test := range tests { + test.a.Add(test.b) + if test.a.Cmp(test.expected) != 0 { + t.Errorf("[%d] Expected %q, got %q", i, test.expected.String(), test.a.String()) + } + } +} + +func TestAddSubRoundTrip(t *testing.T) { + for k := -10; k <= 10; k++ { + q := Quantity{Format: DecimalSI} + var order []int64 + for i := 0; i < 100; i++ { + j := rand.Int63() + order = append(order, j) + q.Add(*NewScaledQuantity(j, Scale(k))) + } + for _, j := range order { + q.Sub(*NewScaledQuantity(j, Scale(k))) + } + if !q.IsZero() { + t.Errorf("addition and subtraction did not cancel: %s", &q) + } + } +} + +func TestAddSubRoundTripAcrossScales(t *testing.T) { + q := Quantity{Format: DecimalSI} + var order []int64 + for i := 0; i < 100; i++ { + j := rand.Int63() + order = append(order, j) + q.Add(*NewScaledQuantity(j, Scale(j%20-10))) + } + for _, j := range order { + q.Sub(*NewScaledQuantity(j, Scale(j%20-10))) + } + if !q.IsZero() { + t.Errorf("addition and subtraction did not cancel: %s", &q) + } +} + +func TestNegateRoundTrip(t *testing.T) { + for _, asDec := range []bool{false, true} { + for k := -10; k <= 10; k++ { + for i := 0; i < 100; i++ { + j := rand.Int63() + q := *NewScaledQuantity(j, Scale(k)) + if asDec { + q.AsDec() + } + + b := q.Copy() + b.Neg() + b.Neg() + if b.Cmp(q) != 0 { + t.Errorf("double negation did not cancel: %s", &q) + } + } + } + } +} +func benchmarkQuantities() []Quantity { + return []Quantity{ + intQuantity(1024*1024*1024, 0, BinarySI), + intQuantity(1024*1024*1024*1024, 0, BinarySI), + intQuantity(1000000, 3, DecimalSI), + intQuantity(1000000000, 0, DecimalSI), + intQuantity(1, -3, DecimalSI), + intQuantity(80, -3, DecimalSI), + intQuantity(1080, -3, DecimalSI), + intQuantity(0, 0, BinarySI), + intQuantity(1, 9, DecimalExponent), + intQuantity(1, -9, DecimalSI), + intQuantity(1000000, 10, DecimalSI), + } +} + +func BenchmarkQuantityString(b *testing.B) { + values := benchmarkQuantities() + b.ResetTimer() + var s string + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + q.s = "" + s = q.String() + } + b.StopTimer() + if len(s) == 0 { + b.Fatal(s) + } +} + +func BenchmarkQuantityStringPrecalc(b *testing.B) { + values := benchmarkQuantities() + for i := range values { + _ = values[i].String() + } + b.ResetTimer() + var s string + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + s = q.String() + } + b.StopTimer() + if len(s) == 0 { + b.Fatal(s) + } +} + +func BenchmarkQuantityStringBinarySI(b *testing.B) { + values := benchmarkQuantities() + for i := range values { + values[i].Format = BinarySI + } + b.ResetTimer() + var s string + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + q.s = "" + s = q.String() + } + b.StopTimer() + if len(s) == 0 { + b.Fatal(s) + } +} + +func BenchmarkQuantityMarshalJSON(b *testing.B) { + values := benchmarkQuantities() + b.ResetTimer() + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + q.s = "" + if _, err := q.MarshalJSON(); err != nil { + b.Fatal(err) + } + } + b.StopTimer() +} + +func BenchmarkQuantityUnmarshalJSON(b *testing.B) { + values := benchmarkQuantities() + var json [][]byte + for _, v := range values { + data, _ := v.MarshalJSON() + json = append(json, data) + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + var q Quantity + if err := q.UnmarshalJSON(json[i%len(values)]); err != nil { + b.Fatal(err) + } + } + b.StopTimer() +} + +func BenchmarkParseQuantity(b *testing.B) { + values := benchmarkQuantities() + var strings []string + for _, v := range values { + strings = append(strings, v.String()) + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + if _, err := ParseQuantity(strings[i%len(values)]); err != nil { + b.Fatal(err) + } + } + b.StopTimer() +} + +func BenchmarkCanonicalize(b *testing.B) { + values := benchmarkQuantities() + b.ResetTimer() + buffer := make([]byte, 0, 100) + for i := 0; i < b.N; i++ { + s, _ := values[i%len(values)].CanonicalizeBytes(buffer) + if len(s) == 0 { + b.Fatal(s) + } + } + b.StopTimer() +} + +func BenchmarkQuantityRoundUp(b *testing.B) { + values := benchmarkQuantities() + b.ResetTimer() + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + copied := q + copied.RoundUp(-3) + } + b.StopTimer() +} + +func BenchmarkQuantityCopy(b *testing.B) { + values := benchmarkQuantities() + b.ResetTimer() + for i := 0; i < b.N; i++ { + values[i%len(values)].Copy() + } + b.StopTimer() +} + +func BenchmarkQuantityAdd(b *testing.B) { + values := benchmarkQuantities() + base := &Quantity{} + b.ResetTimer() + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + base.d.Dec = nil + base.i = int64Amount{value: 100} + base.Add(q) + } + b.StopTimer() +} + +func BenchmarkQuantityCmp(b *testing.B) { + values := benchmarkQuantities() + b.ResetTimer() + for i := 0; i < b.N; i++ { + q := values[i%len(values)] + if q.Cmp(q) != 0 { + b.Fatal(q) + } + } + b.StopTimer() +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go b/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go new file mode 100644 index 000000000..55e177b0e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go @@ -0,0 +1,95 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math" + "math/big" + "sync" +) + +var ( + // A sync pool to reduce allocation. + intPool sync.Pool + maxInt64 = big.NewInt(math.MaxInt64) +) + +func init() { + intPool.New = func() interface{} { + return &big.Int{} + } +} + +// scaledValue scales given unscaled value from scale to new Scale and returns +// an int64. It ALWAYS rounds up the result when scale down. The final result might +// overflow. +// +// scale, newScale represents the scale of the unscaled decimal. +// The mathematical value of the decimal is unscaled * 10**(-scale). +func scaledValue(unscaled *big.Int, scale, newScale int) int64 { + dif := scale - newScale + if dif == 0 { + return unscaled.Int64() + } + + // Handle scale up + // This is an easy case, we do not need to care about rounding and overflow. + // If any intermediate operation causes overflow, the result will overflow. + if dif < 0 { + return unscaled.Int64() * int64(math.Pow10(-dif)) + } + + // Handle scale down + // We have to be careful about the intermediate operations. + + // fast path when unscaled < max.Int64 and exp(10,dif) < max.Int64 + const log10MaxInt64 = 19 + if unscaled.Cmp(maxInt64) < 0 && dif < log10MaxInt64 { + divide := int64(math.Pow10(dif)) + result := unscaled.Int64() / divide + mod := unscaled.Int64() % divide + if mod != 0 { + return result + 1 + } + return result + } + + // We should only convert back to int64 when getting the result. + divisor := intPool.Get().(*big.Int) + exp := intPool.Get().(*big.Int) + result := intPool.Get().(*big.Int) + defer func() { + intPool.Put(divisor) + intPool.Put(exp) + intPool.Put(result) + }() + + // divisor = 10^(dif) + // TODO: create loop up table if exp costs too much. + divisor.Exp(bigTen, exp.SetInt64(int64(dif)), nil) + // reuse exp + remainder := exp + + // result = unscaled / divisor + // remainder = unscaled % divisor + result.DivMod(unscaled, divisor, remainder) + if remainder.Sign() != 0 { + return result.Int64() + 1 + } + + return result.Int64() +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int_test.go b/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int_test.go new file mode 100644 index 000000000..50d91060a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int_test.go @@ -0,0 +1,85 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math" + "math/big" + "testing" +) + +func TestScaledValueInternal(t *testing.T) { + tests := []struct { + unscaled *big.Int + scale int + newScale int + + want int64 + }{ + // remain scale + {big.NewInt(1000), 0, 0, 1000}, + + // scale down + {big.NewInt(1000), 0, -3, 1}, + {big.NewInt(1000), 3, 0, 1}, + {big.NewInt(0), 3, 0, 0}, + + // always round up + {big.NewInt(999), 3, 0, 1}, + {big.NewInt(500), 3, 0, 1}, + {big.NewInt(499), 3, 0, 1}, + {big.NewInt(1), 3, 0, 1}, + // large scaled value does not lose precision + {big.NewInt(0).Sub(maxInt64, bigOne), 1, 0, (math.MaxInt64-1)/10 + 1}, + // large intermidiate result. + {big.NewInt(1).Exp(big.NewInt(10), big.NewInt(100), nil), 100, 0, 1}, + + // scale up + {big.NewInt(0), 0, 3, 0}, + {big.NewInt(1), 0, 3, 1000}, + {big.NewInt(1), -3, 0, 1000}, + {big.NewInt(1000), -3, 2, 100000000}, + {big.NewInt(0).Div(big.NewInt(math.MaxInt64), bigThousand), 0, 3, + (math.MaxInt64 / 1000) * 1000}, + } + + for i, tt := range tests { + old := (&big.Int{}).Set(tt.unscaled) + got := scaledValue(tt.unscaled, tt.scale, tt.newScale) + if got != tt.want { + t.Errorf("#%d: got = %v, want %v", i, got, tt.want) + } + if tt.unscaled.Cmp(old) != 0 { + t.Errorf("#%d: unscaled = %v, want %v", i, tt.unscaled, old) + } + } +} + +func BenchmarkScaledValueSmall(b *testing.B) { + s := big.NewInt(1000) + for i := 0; i < b.N; i++ { + scaledValue(s, 3, 0) + } +} + +func BenchmarkScaledValueLarge(b *testing.B) { + s := big.NewInt(math.MaxInt64) + s.Mul(s, big.NewInt(1000)) + for i := 0; i < b.N; i++ { + scaledValue(s, 10, 0) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go b/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go new file mode 100644 index 000000000..5ed7abe66 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go @@ -0,0 +1,198 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "strconv" +) + +type suffix string + +// suffixer can interpret and construct suffixes. +type suffixer interface { + interpret(suffix) (base, exponent int32, fmt Format, ok bool) + construct(base, exponent int32, fmt Format) (s suffix, ok bool) + constructBytes(base, exponent int32, fmt Format) (s []byte, ok bool) +} + +// quantitySuffixer handles suffixes for all three formats that quantity +// can handle. +var quantitySuffixer = newSuffixer() + +type bePair struct { + base, exponent int32 +} + +type listSuffixer struct { + suffixToBE map[suffix]bePair + beToSuffix map[bePair]suffix + beToSuffixBytes map[bePair][]byte +} + +func (ls *listSuffixer) addSuffix(s suffix, pair bePair) { + if ls.suffixToBE == nil { + ls.suffixToBE = map[suffix]bePair{} + } + if ls.beToSuffix == nil { + ls.beToSuffix = map[bePair]suffix{} + } + if ls.beToSuffixBytes == nil { + ls.beToSuffixBytes = map[bePair][]byte{} + } + ls.suffixToBE[s] = pair + ls.beToSuffix[pair] = s + ls.beToSuffixBytes[pair] = []byte(s) +} + +func (ls *listSuffixer) lookup(s suffix) (base, exponent int32, ok bool) { + pair, ok := ls.suffixToBE[s] + if !ok { + return 0, 0, false + } + return pair.base, pair.exponent, true +} + +func (ls *listSuffixer) construct(base, exponent int32) (s suffix, ok bool) { + s, ok = ls.beToSuffix[bePair{base, exponent}] + return +} + +func (ls *listSuffixer) constructBytes(base, exponent int32) (s []byte, ok bool) { + s, ok = ls.beToSuffixBytes[bePair{base, exponent}] + return +} + +type suffixHandler struct { + decSuffixes listSuffixer + binSuffixes listSuffixer +} + +type fastLookup struct { + *suffixHandler +} + +func (l fastLookup) interpret(s suffix) (base, exponent int32, format Format, ok bool) { + switch s { + case "": + return 10, 0, DecimalSI, true + case "n": + return 10, -9, DecimalSI, true + case "u": + return 10, -6, DecimalSI, true + case "m": + return 10, -3, DecimalSI, true + case "k": + return 10, 3, DecimalSI, true + case "M": + return 10, 6, DecimalSI, true + case "G": + return 10, 9, DecimalSI, true + } + return l.suffixHandler.interpret(s) +} + +func newSuffixer() suffixer { + sh := &suffixHandler{} + + // IMPORTANT: if you change this section you must change fastLookup + + sh.binSuffixes.addSuffix("Ki", bePair{2, 10}) + sh.binSuffixes.addSuffix("Mi", bePair{2, 20}) + sh.binSuffixes.addSuffix("Gi", bePair{2, 30}) + sh.binSuffixes.addSuffix("Ti", bePair{2, 40}) + sh.binSuffixes.addSuffix("Pi", bePair{2, 50}) + sh.binSuffixes.addSuffix("Ei", bePair{2, 60}) + // Don't emit an error when trying to produce + // a suffix for 2^0. + sh.decSuffixes.addSuffix("", bePair{2, 0}) + + sh.decSuffixes.addSuffix("n", bePair{10, -9}) + sh.decSuffixes.addSuffix("u", bePair{10, -6}) + sh.decSuffixes.addSuffix("m", bePair{10, -3}) + sh.decSuffixes.addSuffix("", bePair{10, 0}) + sh.decSuffixes.addSuffix("k", bePair{10, 3}) + sh.decSuffixes.addSuffix("M", bePair{10, 6}) + sh.decSuffixes.addSuffix("G", bePair{10, 9}) + sh.decSuffixes.addSuffix("T", bePair{10, 12}) + sh.decSuffixes.addSuffix("P", bePair{10, 15}) + sh.decSuffixes.addSuffix("E", bePair{10, 18}) + + return fastLookup{sh} +} + +func (sh *suffixHandler) construct(base, exponent int32, fmt Format) (s suffix, ok bool) { + switch fmt { + case DecimalSI: + return sh.decSuffixes.construct(base, exponent) + case BinarySI: + return sh.binSuffixes.construct(base, exponent) + case DecimalExponent: + if base != 10 { + return "", false + } + if exponent == 0 { + return "", true + } + return suffix("e" + strconv.FormatInt(int64(exponent), 10)), true + } + return "", false +} + +func (sh *suffixHandler) constructBytes(base, exponent int32, format Format) (s []byte, ok bool) { + switch format { + case DecimalSI: + return sh.decSuffixes.constructBytes(base, exponent) + case BinarySI: + return sh.binSuffixes.constructBytes(base, exponent) + case DecimalExponent: + if base != 10 { + return nil, false + } + if exponent == 0 { + return nil, true + } + result := make([]byte, 8, 8) + result[0] = 'e' + number := strconv.AppendInt(result[1:1], int64(exponent), 10) + if &result[1] == &number[0] { + return result[:1+len(number)], true + } + result = append(result[:1], number...) + return result, true + } + return nil, false +} + +func (sh *suffixHandler) interpret(suffix suffix) (base, exponent int32, fmt Format, ok bool) { + // Try lookup tables first + if b, e, ok := sh.decSuffixes.lookup(suffix); ok { + return b, e, DecimalSI, true + } + if b, e, ok := sh.binSuffixes.lookup(suffix); ok { + return b, e, BinarySI, true + } + + if len(suffix) > 1 && (suffix[0] == 'E' || suffix[0] == 'e') { + parsed, err := strconv.ParseInt(string(suffix[1:]), 10, 64) + if err != nil { + return 0, 0, DecimalExponent, false + } + return 10, int32(parsed), DecimalExponent, true + } + + return 0, 0, DecimalExponent, false +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD new file mode 100644 index 000000000..657cc57a9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/BUILD @@ -0,0 +1,48 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["valuefuzz_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "codec.go", + "fuzzer.go", + "roundtrip.go", + "valuefuzz.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/davecgh/go-spew/spew:go_default_library", + "//vendor/github.com/golang/protobuf/proto:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/codec.go b/vendor/k8s.io/apimachinery/pkg/api/testing/codec.go new file mode 100644 index 000000000..8a13d1ff4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/codec.go @@ -0,0 +1,86 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "fmt" + "mime" + "os" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/runtime/serializer/recognizer" +) + +var ( + testCodecMediaType string + testStorageCodecMediaType string +) + +// TestCodec returns the codec for the API version to test against, as set by the +// KUBE_TEST_API_TYPE env var. +func TestCodec(codecs runtimeserializer.CodecFactory, gvs ...schema.GroupVersion) runtime.Codec { + if len(testCodecMediaType) != 0 { + serializerInfo, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), testCodecMediaType) + if !ok { + panic(fmt.Sprintf("no serializer for %s", testCodecMediaType)) + } + return codecs.CodecForVersions(serializerInfo.Serializer, codecs.UniversalDeserializer(), schema.GroupVersions(gvs), nil) + } + return codecs.LegacyCodec(gvs...) +} + +// TestStorageCodec returns the codec for the API version to test against used in storage, as set by the +// KUBE_TEST_API_STORAGE_TYPE env var. +func TestStorageCodec(codecs runtimeserializer.CodecFactory, gvs ...schema.GroupVersion) runtime.Codec { + if len(testStorageCodecMediaType) != 0 { + serializerInfo, ok := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), testStorageCodecMediaType) + if !ok { + panic(fmt.Sprintf("no serializer for %s", testStorageCodecMediaType)) + } + + // etcd2 only supports string data - we must wrap any result before returning + // TODO: remove for etcd3 / make parameterizable + serializer := serializerInfo.Serializer + if !serializerInfo.EncodesAsText { + serializer = runtime.NewBase64Serializer(serializer, serializer) + } + + decoder := recognizer.NewDecoder(serializer, codecs.UniversalDeserializer()) + return codecs.CodecForVersions(serializer, decoder, schema.GroupVersions(gvs), nil) + + } + return codecs.LegacyCodec(gvs...) +} + +func init() { + var err error + if apiMediaType := os.Getenv("KUBE_TEST_API_TYPE"); len(apiMediaType) > 0 { + testCodecMediaType, _, err = mime.ParseMediaType(apiMediaType) + if err != nil { + panic(err) + } + } + + if storageMediaType := os.Getenv("KUBE_TEST_API_STORAGE_TYPE"); len(storageMediaType) > 0 { + testStorageCodecMediaType, _, err = mime.ParseMediaType(storageMediaType) + if err != nil { + panic(err) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go new file mode 100644 index 000000000..7655908d8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/fuzzer.go @@ -0,0 +1,174 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "math/rand" + "reflect" + "strconv" + "testing" + + "github.com/google/gofuzz" + + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/types" +) + +func GenericFuzzerFuncs(t TestingCommon, codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(q *resource.Quantity, c fuzz.Continue) { + *q = *resource.NewQuantity(c.Int63n(1000), resource.DecimalExponent) + }, + func(j *int, c fuzz.Continue) { + *j = int(c.Int31()) + }, + func(j **int, c fuzz.Continue) { + if c.RandBool() { + i := int(c.Int31()) + *j = &i + } else { + *j = nil + } + }, + func(j *runtime.TypeMeta, c fuzz.Continue) { + // We have to customize the randomization of TypeMetas because their + // APIVersion and Kind must remain blank in memory. + j.APIVersion = "" + j.Kind = "" + }, + func(j *metav1.TypeMeta, c fuzz.Continue) { + // We have to customize the randomization of TypeMetas because their + // APIVersion and Kind must remain blank in memory. + j.APIVersion = "" + j.Kind = "" + }, + func(j *metav1.ObjectMeta, c fuzz.Continue) { + j.Name = c.RandString() + j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10) + j.SelfLink = c.RandString() + j.UID = types.UID(c.RandString()) + j.GenerateName = c.RandString() + + var sec, nsec int64 + c.Fuzz(&sec) + c.Fuzz(&nsec) + j.CreationTimestamp = metav1.Unix(sec, nsec).Rfc3339Copy() + }, + func(j *metav1.ListMeta, c fuzz.Continue) { + j.ResourceVersion = strconv.FormatUint(c.RandUint64(), 10) + j.SelfLink = c.RandString() + }, + func(j *runtime.Object, c fuzz.Continue) { + // TODO: uncomment when round trip starts from a versioned object + if true { //c.RandBool() { + *j = &runtime.Unknown{ + // We do not set TypeMeta here because it is not carried through a round trip + Raw: []byte(`{"apiVersion":"unknown.group/unknown","kind":"Something","someKey":"someValue"}`), + ContentType: runtime.ContentTypeJSON, + } + } else { + types := []runtime.Object{&metav1.Status{}, &metav1.APIGroup{}} + t := types[c.Rand.Intn(len(types))] + c.Fuzz(t) + *j = t + } + }, + func(r *runtime.RawExtension, c fuzz.Continue) { + // Pick an arbitrary type and fuzz it + types := []runtime.Object{&metav1.Status{}, &metav1.APIGroup{}} + obj := types[c.Rand.Intn(len(types))] + c.Fuzz(obj) + + // Find a codec for converting the object to raw bytes. This is necessary for the + // api version and kind to be correctly set be serialization. + var codec = TestCodec(codecs, metav1.SchemeGroupVersion) + + // Convert the object to raw bytes + bytes, err := runtime.Encode(codec, obj) + if err != nil { + t.Errorf("Failed to encode object: %v", err) + return + } + + // Set the bytes field on the RawExtension + r.Raw = bytes + }, + } +} + +// TestingCommon abstracts testing.T and testing.B +type TestingCommon interface { + Log(args ...interface{}) + Logf(format string, args ...interface{}) + Error(args ...interface{}) + Errorf(format string, args ...interface{}) + Fatal(args ...interface{}) + Fatalf(format string, args ...interface{}) +} + +var ( + _ TestingCommon = &testing.T{} + _ TestingCommon = &testing.B{} +) + +// FuzzerFor can randomly populate api objects that are destined for version. +func FuzzerFor(funcs []interface{}, src rand.Source) *fuzz.Fuzzer { + f := fuzz.New().NilChance(.5).NumElements(0, 1) + if src != nil { + f.RandSource(src) + } + f.Funcs(funcs...) + return f +} + +// MergeFuzzerFuncs will merge the given funcLists, overriding early funcs with later ones if there first +// argument has the same type. +func MergeFuzzerFuncs(t TestingCommon, funcLists ...[]interface{}) []interface{} { + funcMap := map[string]interface{}{} + for _, list := range funcLists { + for _, f := range list { + fT := reflect.TypeOf(f) + if fT.Kind() != reflect.Func || fT.NumIn() != 2 { + t.Errorf("Fuzzer func with invalid type: %v", fT) + continue + } + funcMap[fT.In(0).String()] = f + } + } + + result := []interface{}{} + for _, f := range funcMap { + result = append(result, f) + } + return result +} + +func DefaultFuzzers(t TestingCommon, codecFactory runtimeserializer.CodecFactory, fuzzerFuncs []interface{}) *fuzz.Fuzzer { + seed := rand.Int63() + + return FuzzerFor( + MergeFuzzerFuncs(t, + GenericFuzzerFuncs(t, codecFactory), + fuzzerFuncs, + ), + rand.NewSource(seed), + ) + +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go b/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go new file mode 100644 index 000000000..b30705991 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/roundtrip.go @@ -0,0 +1,351 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "bytes" + "encoding/hex" + "fmt" + "reflect" + "strings" + "testing" + + "github.com/davecgh/go-spew/spew" + "github.com/golang/protobuf/proto" + "github.com/google/gofuzz" + flag "github.com/spf13/pflag" + "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/apimachinery/pkg/util/sets" +) + +type InstallFunc func(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) + +// RoundTripTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides +// enough information to round trip +func RoundTripTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs []interface{}) { + groupFactoryRegistry := make(announced.APIGroupFactoryRegistry) + registry := registered.NewOrDie("") + scheme := runtime.NewScheme() + installFn(groupFactoryRegistry, registry, scheme) + + RoundTripTestForScheme(t, scheme, fuzzingFuncs) +} + +// RoundTripTestForScheme is convenient to call if you already have a scheme and want to make sure that its well-formed +func RoundTripTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs []interface{}) { + codecFactory := runtimeserializer.NewCodecFactory(scheme) + fuzzer := DefaultFuzzers(t, codecFactory, fuzzingFuncs) + RoundTripTypesWithoutProtobuf(t, scheme, codecFactory, fuzzer, nil) +} + +// RoundTripProtobufTestForAPIGroup is convenient to call from your install package to make sure that a "bare" install of your group provides +// enough information to round trip +func RoundTripProtobufTestForAPIGroup(t *testing.T, installFn InstallFunc, fuzzingFuncs []interface{}) { + groupFactoryRegistry := make(announced.APIGroupFactoryRegistry) + registry := registered.NewOrDie("") + scheme := runtime.NewScheme() + installFn(groupFactoryRegistry, registry, scheme) + + RoundTripProtobufTestForScheme(t, scheme, fuzzingFuncs) +} + +// RoundTripProtobufTestForScheme is convenient to call if you already have a scheme and want to make sure that its well-formed +func RoundTripProtobufTestForScheme(t *testing.T, scheme *runtime.Scheme, fuzzingFuncs []interface{}) { + codecFactory := runtimeserializer.NewCodecFactory(scheme) + fuzzer := DefaultFuzzers(t, codecFactory, fuzzingFuncs) + RoundTripTypes(t, scheme, codecFactory, fuzzer, nil) +} + +var FuzzIters = flag.Int("fuzz-iters", 20, "How many fuzzing iterations to do.") + +// globalNonRoundTrippableTypes are kinds that are effectively reserved across all GroupVersions +// They don't roundtrip +var globalNonRoundTrippableTypes = sets.NewString( + "ExportOptions", + "GetOptions", + // WatchEvent does not include kind and version and can only be deserialized + // implicitly (if the caller expects the specific object). The watch call defines + // the schema by content type, rather than via kind/version included in each + // object. + "WatchEvent", + // ListOptions is now part of the meta group + "ListOptions", + // Delete options is only read in metav1 + "DeleteOptions", +) + +// RoundTripTypesWithoutProtobuf applies the round-trip test to all round-trippable Kinds +// in the scheme. It will skip all the GroupVersionKinds in the skip list. +func RoundTripTypesWithoutProtobuf(t *testing.T, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, nonRoundTrippableTypes map[schema.GroupVersionKind]bool) { + roundTripTypes(t, scheme, codecFactory, fuzzer, nonRoundTrippableTypes, true) +} + +func RoundTripTypes(t *testing.T, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, nonRoundTrippableTypes map[schema.GroupVersionKind]bool) { + roundTripTypes(t, scheme, codecFactory, fuzzer, nonRoundTrippableTypes, false) +} + +func roundTripTypes(t *testing.T, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, nonRoundTrippableTypes map[schema.GroupVersionKind]bool, skipProtobuf bool) { + for _, group := range groupsFromScheme(scheme) { + t.Logf("starting group %q", group) + internalVersion := schema.GroupVersion{Group: group, Version: runtime.APIVersionInternal} + internalKindToGoType := scheme.KnownTypes(internalVersion) + + for kind := range internalKindToGoType { + if globalNonRoundTrippableTypes.Has(kind) { + continue + } + + internalGVK := internalVersion.WithKind(kind) + roundTripSpecificKind(t, internalGVK, scheme, codecFactory, fuzzer, nonRoundTrippableTypes, skipProtobuf) + } + + t.Logf("finished group %q", group) + } +} + +func RoundTripSpecificKindWithoutProtobuf(t *testing.T, gvk schema.GroupVersionKind, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, nonRoundTrippableTypes map[schema.GroupVersionKind]bool) { + roundTripSpecificKind(t, gvk, scheme, codecFactory, fuzzer, nonRoundTrippableTypes, true) +} + +func RoundTripSpecificKind(t *testing.T, gvk schema.GroupVersionKind, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, nonRoundTrippableTypes map[schema.GroupVersionKind]bool) { + roundTripSpecificKind(t, gvk, scheme, codecFactory, fuzzer, nonRoundTrippableTypes, false) +} + +func roundTripSpecificKind(t *testing.T, gvk schema.GroupVersionKind, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, nonRoundTrippableTypes map[schema.GroupVersionKind]bool, skipProtobuf bool) { + if nonRoundTrippableTypes[gvk] { + t.Logf("skipping %v", gvk) + return + } + t.Logf("round tripping %v", gvk) + + // Try a few times, since runTest uses random values. + for i := 0; i < *FuzzIters; i++ { + if gvk.Version == runtime.APIVersionInternal { + roundTripToAllExternalVersions(t, scheme, codecFactory, fuzzer, gvk, nonRoundTrippableTypes, skipProtobuf) + } else { + roundTripOfExternalType(t, scheme, codecFactory, fuzzer, gvk, skipProtobuf) + } + if t.Failed() { + break + } + } +} + +// fuzzInternalObject fuzzes an arbitrary runtime object using the appropriate +// fuzzer registered with the apitesting package. +func fuzzInternalObject(t *testing.T, fuzzer *fuzz.Fuzzer, object runtime.Object) runtime.Object { + fuzzer.Fuzz(object) + + j, err := meta.TypeAccessor(object) + if err != nil { + t.Fatalf("Unexpected error %v for %#v", err, object) + } + j.SetKind("") + j.SetAPIVersion("") + + return object +} + +func groupsFromScheme(scheme *runtime.Scheme) []string { + ret := sets.String{} + for gvk := range scheme.AllKnownTypes() { + ret.Insert(gvk.Group) + } + return ret.List() +} + +func roundTripToAllExternalVersions(t *testing.T, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, internalGVK schema.GroupVersionKind, nonRoundTrippableTypes map[schema.GroupVersionKind]bool, skipProtobuf bool) { + object, err := scheme.New(internalGVK) + if err != nil { + t.Fatalf("Couldn't make a %v? %v", internalGVK, err) + } + if _, err := meta.TypeAccessor(object); err != nil { + t.Fatalf("%q is not a TypeMeta and cannot be tested - add it to nonRoundTrippableInternalTypes: %v", internalGVK, err) + } + + fuzzInternalObject(t, fuzzer, object) + + // find all potential serializations in the scheme. + // TODO fix this up to handle kinds that cross registered with different names. + for externalGVK, externalGoType := range scheme.AllKnownTypes() { + if externalGVK.Version == runtime.APIVersionInternal { + continue + } + if externalGVK.GroupKind() != internalGVK.GroupKind() { + continue + } + if nonRoundTrippableTypes[externalGVK] { + t.Logf("\tskipping %v %v", externalGVK, externalGoType) + continue + } + t.Logf("\tround tripping to %v %v", externalGVK, externalGoType) + + roundTrip(t, scheme, TestCodec(codecFactory, externalGVK.GroupVersion()), object) + + // TODO remove this hack after we're past the intermediate steps + if !skipProtobuf && externalGVK.Group != "kubeadm.k8s.io" { + s := protobuf.NewSerializer(scheme, scheme, "application/arbitrary.content.type") + protobufCodec := codecFactory.CodecForVersions(s, s, externalGVK.GroupVersion(), nil) + roundTrip(t, scheme, protobufCodec, object) + } + } +} + +func roundTripOfExternalType(t *testing.T, scheme *runtime.Scheme, codecFactory runtimeserializer.CodecFactory, fuzzer *fuzz.Fuzzer, externalGVK schema.GroupVersionKind, skipProtobuf bool) { + object, err := scheme.New(externalGVK) + if err != nil { + t.Fatalf("Couldn't make a %v? %v", externalGVK, err) + } + typeAcc, err := meta.TypeAccessor(object) + if err != nil { + t.Fatalf("%q is not a TypeMeta and cannot be tested - add it to nonRoundTrippableInternalTypes: %v", externalGVK, err) + } + + fuzzInternalObject(t, fuzzer, object) + + externalGoType := reflect.TypeOf(object).PkgPath() + t.Logf("\tround tripping external type %v %v", externalGVK, externalGoType) + + typeAcc.SetKind(externalGVK.Kind) + typeAcc.SetAPIVersion(externalGVK.GroupVersion().String()) + + roundTrip(t, scheme, json.NewSerializer(json.DefaultMetaFactory, scheme, scheme, false), object) + + // TODO remove this hack after we're past the intermediate steps + if !skipProtobuf { + roundTrip(t, scheme, protobuf.NewSerializer(scheme, scheme, "application/protobuf"), object) + } +} + +// roundTrip applies a single round-trip test to the given runtime object +// using the given codec. The round-trip test ensures that an object can be +// deep-copied, converted, marshaled and back without loss of data. +// +// For internal types this means +// +// internal -> external -> json/protobuf -> external -> internal. +// +// For external types this means +// +// external -> json/protobuf -> external. +func roundTrip(t *testing.T, scheme *runtime.Scheme, codec runtime.Codec, object runtime.Object) { + printer := spew.ConfigState{DisableMethods: true} + original := object + + // deep copy the original object + copied, err := scheme.DeepCopy(object) + if err != nil { + panic(fmt.Sprintf("unable to copy: %v", err)) + } + object = copied.(runtime.Object) + name := reflect.TypeOf(object).Elem().Name() + + // encode (serialize) the deep copy using the provided codec + data, err := runtime.Encode(codec, object) + if err != nil { + if runtime.IsNotRegisteredError(err) { + t.Logf("%v: not registered: %v (%s)", name, err, printer.Sprintf("%#v", object)) + } else { + t.Errorf("%v: %v (%s)", name, err, printer.Sprintf("%#v", object)) + } + return + } + + // ensure that the deep copy is equal to the original; neither the deep + // copy or conversion should alter the object + // TODO eliminate this global + if !apiequality.Semantic.DeepEqual(original, object) { + t.Errorf("0: %v: encode altered the object, diff: %v", name, diff.ObjectReflectDiff(original, object)) + return + } + + // encode (serialize) a second time to verify that it was not varying + secondData, err := runtime.Encode(codec, object) + if err != nil { + if runtime.IsNotRegisteredError(err) { + t.Logf("%v: not registered: %v (%s)", name, err, printer.Sprintf("%#v", object)) + } else { + t.Errorf("%v: %v (%s)", name, err, printer.Sprintf("%#v", object)) + } + return + } + + // serialization to the wire must be stable to ensure that we don't write twice to the DB + // when the object hasn't changed. + if !bytes.Equal(data, secondData) { + t.Errorf("%v: serialization is not stable: %s", name, printer.Sprintf("%#v", object)) + } + + // decode (deserialize) the encoded data back into an object + obj2, err := runtime.Decode(codec, data) + if err != nil { + t.Errorf("0: %v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", object)) + panic("failed") + } + + // ensure that the object produced from decoding the encoded data is equal + // to the original object + if !apiequality.Semantic.DeepEqual(original, obj2) { + t.Errorf("1: %v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectReflectDiff(object, obj2), codec, printer.Sprintf("%#v", object), dataAsString(data), printer.Sprintf("%#v", obj2)) + return + } + + // decode the encoded data into a new object (instead of letting the codec + // create a new object) + obj3 := reflect.New(reflect.TypeOf(object).Elem()).Interface().(runtime.Object) + if err := runtime.DecodeInto(codec, data, obj3); err != nil { + t.Errorf("2: %v: %v", name, err) + return + } + + // ensure that the new runtime object is equal to the original after being + // decoded into + if !apiequality.Semantic.DeepEqual(object, obj3) { + t.Errorf("3: %v: diff: %v\nCodec: %#v", name, diff.ObjectReflectDiff(object, obj3), codec) + return + } + + // do structure-preserving fuzzing of the deep-copied object. If it shares anything with the original, + // the deep-copy was actually only a shallow copy. Then original and obj3 will be different after fuzzing. + // NOTE: we use the encoding+decoding here as an alternative, guaranteed deep-copy to compare against. + ValueFuzz(object) + if !apiequality.Semantic.DeepEqual(original, obj3) { + t.Errorf("0: %v: fuzzing a copy altered the original, diff: %v", name, diff.ObjectReflectDiff(original, object)) + return + } +} + +// dataAsString returns the given byte array as a string; handles detecting +// protocol buffers. +func dataAsString(data []byte) string { + dataString := string(data) + if !strings.HasPrefix(dataString, "{") { + dataString = "\n" + hex.Dump(data) + proto.NewBuffer(make([]byte, 0, 1024)).DebugPrint("decoded object", data) + } + return dataString +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go b/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go new file mode 100644 index 000000000..4cb03b7b0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz.go @@ -0,0 +1,86 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "reflect" +) + +// ValueFuzz recursively changes all basic type values in an object. Any kind of references will not +// be touch, i.e. the addresses of slices, maps, pointers will stay unchanged. +func ValueFuzz(obj interface{}) { + valueFuzz(reflect.ValueOf(obj)) +} + +func valueFuzz(obj reflect.Value) { + switch obj.Kind() { + case reflect.Array: + for i := 0; i < obj.Len(); i++ { + valueFuzz(obj.Index(i)) + } + case reflect.Slice: + if obj.IsNil() { + // TODO: set non-nil value + } else { + for i := 0; i < obj.Len(); i++ { + valueFuzz(obj.Index(i)) + } + } + case reflect.Interface, reflect.Ptr: + if obj.IsNil() { + // TODO: set non-nil value + } else { + valueFuzz(obj.Elem()) + } + case reflect.Struct: + for i, n := 0, obj.NumField(); i < n; i++ { + valueFuzz(obj.Field(i)) + } + case reflect.Map: + if obj.IsNil() { + // TODO: set non-nil value + } else { + for _, k := range obj.MapKeys() { + // map values are not addressable. We need a copy. + v := obj.MapIndex(k) + copy := reflect.New(v.Type()) + copy.Elem().Set(v) + valueFuzz(copy.Elem()) + obj.SetMapIndex(k, copy.Elem()) + } + // TODO: set some new value + } + case reflect.Func: // ignore, we don't have function types in our API + default: + if !obj.CanSet() { + return + } + switch obj.Kind() { + case reflect.String: + obj.SetString(obj.String() + "x") + case reflect.Bool: + obj.SetBool(!obj.Bool()) + case reflect.Float32, reflect.Float64: + obj.SetFloat(obj.Float()*2.0 + 1.0) + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + obj.SetInt(obj.Int() + 1) + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + obj.SetUint(obj.Uint() + 1) + default: + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go b/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go new file mode 100644 index 000000000..07dca8022 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/testing/valuefuzz_test.go @@ -0,0 +1,73 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import "testing" + +func TestValueFuzz(t *testing.T) { + type ( + Y struct { + I int + B bool + F float32 + U uint + } + X struct { + Ptr *X + Y Y + Map map[string]int + Slice []int + } + ) + + x := X{ + Ptr: &X{}, + Map: map[string]int{"foo": 42}, + Slice: []int{1, 2, 3}, + } + + p := x.Ptr + m := x.Map + s := x.Slice + + ValueFuzz(x) + + if x.Ptr.Y.I == 0 { + t.Errorf("x.Ptr.Y.I should have changed") + } + + if x.Map["foo"] == 42 { + t.Errorf("x.Map[foo] should have changed") + } + + if x.Slice[0] == 1 { + t.Errorf("x.Slice[0] should have changed") + } + + if x.Ptr != p { + t.Errorf("x.Ptr changed") + } + + m["foo"] = 7 + if x.Map["foo"] != m["foo"] { + t.Errorf("x.Map changed") + } + s[0] = 7 + if x.Slice[0] != s[0] { + t.Errorf("x.Slice changed") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD b/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD new file mode 100644 index 000000000..f5ab4b008 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/BUILD @@ -0,0 +1,40 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["objectmeta_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generic.go", + "objectmeta.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/doc.go b/vendor/k8s.io/apimachinery/pkg/api/validation/doc.go new file mode 100644 index 000000000..9f20152e4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package validation contains generic api type validation functions. +package validation // import "k8s.io/apimachinery/pkg/api/validation" diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/generic.go b/vendor/k8s.io/apimachinery/pkg/api/validation/generic.go new file mode 100644 index 000000000..348cdc087 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/generic.go @@ -0,0 +1,85 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "strings" + + "k8s.io/apimachinery/pkg/util/validation" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +const IsNegativeErrorMsg string = `must be greater than or equal to 0` + +// ValidateNameFunc validates that the provided name is valid for a given resource type. +// Not all resources have the same validation rules for names. Prefix is true +// if the name will have a value appended to it. If the name is not valid, +// this returns a list of descriptions of individual characteristics of the +// value that were not valid. Otherwise this returns an empty list or nil. +type ValidateNameFunc func(name string, prefix bool) []string + +// NameIsDNSSubdomain is a ValidateNameFunc for names that must be a DNS subdomain. +func NameIsDNSSubdomain(name string, prefix bool) []string { + if prefix { + name = maskTrailingDash(name) + } + return validation.IsDNS1123Subdomain(name) +} + +// NameIsDNSLabel is a ValidateNameFunc for names that must be a DNS 1123 label. +func NameIsDNSLabel(name string, prefix bool) []string { + if prefix { + name = maskTrailingDash(name) + } + return validation.IsDNS1123Label(name) +} + +// NameIsDNS1035Label is a ValidateNameFunc for names that must be a DNS 952 label. +func NameIsDNS1035Label(name string, prefix bool) []string { + if prefix { + name = maskTrailingDash(name) + } + return validation.IsDNS1035Label(name) +} + +// ValidateNamespaceName can be used to check whether the given namespace name is valid. +// Prefix indicates this name will be used as part of generation, in which case +// trailing dashes are allowed. +var ValidateNamespaceName = NameIsDNSLabel + +// ValidateServiceAccountName can be used to check whether the given service account name is valid. +// Prefix indicates this name will be used as part of generation, in which case +// trailing dashes are allowed. +var ValidateServiceAccountName = NameIsDNSSubdomain + +// maskTrailingDash replaces the final character of a string with a subdomain safe +// value if is a dash. +func maskTrailingDash(name string) string { + if strings.HasSuffix(name, "-") { + return name[:len(name)-2] + "a" + } + return name +} + +// Validates that given value is not negative. +func ValidateNonnegativeField(value int64, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if value < 0 { + allErrs = append(allErrs, field.Invalid(fldPath, value, IsNegativeErrorMsg)) + } + return allErrs +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go new file mode 100644 index 000000000..84bd9cded --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta.go @@ -0,0 +1,348 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "fmt" + "strings" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + v1validation "k8s.io/apimachinery/pkg/apis/meta/v1/validation" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/validation" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +// TODO: delete this global variable when we enable the validation of common +// fields by default. +var RepairMalformedUpdates bool = true + +const FieldImmutableErrorMsg string = `field is immutable` + +const totalAnnotationSizeLimitB int = 256 * (1 << 10) // 256 kB + +// BannedOwners is a black list of object that are not allowed to be owners. +var BannedOwners = map[schema.GroupVersionKind]struct{}{ + {Group: "", Version: "v1", Kind: "Event"}: {}, +} + +// ValidateClusterName can be used to check whether the given cluster name is valid. +var ValidateClusterName = NameIsDNS1035Label + +// ValidateAnnotations validates that a set of annotations are correctly defined. +func ValidateAnnotations(annotations map[string]string, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + var totalSize int64 + for k, v := range annotations { + for _, msg := range validation.IsQualifiedName(strings.ToLower(k)) { + allErrs = append(allErrs, field.Invalid(fldPath, k, msg)) + } + totalSize += (int64)(len(k)) + (int64)(len(v)) + } + if totalSize > (int64)(totalAnnotationSizeLimitB) { + allErrs = append(allErrs, field.TooLong(fldPath, "", totalAnnotationSizeLimitB)) + } + return allErrs +} + +func validateOwnerReference(ownerReference metav1.OwnerReference, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + gvk := schema.FromAPIVersionAndKind(ownerReference.APIVersion, ownerReference.Kind) + // gvk.Group is empty for the legacy group. + if len(gvk.Version) == 0 { + allErrs = append(allErrs, field.Invalid(fldPath.Child("apiVersion"), ownerReference.APIVersion, "version must not be empty")) + } + if len(gvk.Kind) == 0 { + allErrs = append(allErrs, field.Invalid(fldPath.Child("kind"), ownerReference.Kind, "kind must not be empty")) + } + if len(ownerReference.Name) == 0 { + allErrs = append(allErrs, field.Invalid(fldPath.Child("name"), ownerReference.Name, "name must not be empty")) + } + if len(ownerReference.UID) == 0 { + allErrs = append(allErrs, field.Invalid(fldPath.Child("uid"), ownerReference.UID, "uid must not be empty")) + } + if _, ok := BannedOwners[gvk]; ok { + allErrs = append(allErrs, field.Invalid(fldPath, ownerReference, fmt.Sprintf("%s is disallowed from being an owner", gvk))) + } + return allErrs +} + +func ValidateOwnerReferences(ownerReferences []metav1.OwnerReference, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + controllerName := "" + for _, ref := range ownerReferences { + allErrs = append(allErrs, validateOwnerReference(ref, fldPath)...) + if ref.Controller != nil && *ref.Controller { + if controllerName != "" { + allErrs = append(allErrs, field.Invalid(fldPath, ownerReferences, + fmt.Sprintf("Only one reference can have Controller set to true. Found \"true\" in references for %v and %v", controllerName, ref.Name))) + } else { + controllerName = ref.Name + } + } + } + return allErrs +} + +// Validate finalizer names +func ValidateFinalizerName(stringValue string, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + for _, msg := range validation.IsQualifiedName(stringValue) { + allErrs = append(allErrs, field.Invalid(fldPath, stringValue, msg)) + } + + return allErrs +} + +func ValidateNoNewFinalizers(newFinalizers []string, oldFinalizers []string, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + extra := sets.NewString(newFinalizers...).Difference(sets.NewString(oldFinalizers...)) + if len(extra) != 0 { + allErrs = append(allErrs, field.Forbidden(fldPath, fmt.Sprintf("no new finalizers can be added if the object is being deleted, found new finalizers %#v", extra.List()))) + } + return allErrs +} + +func ValidateImmutableField(newVal, oldVal interface{}, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if !apiequality.Semantic.DeepEqual(oldVal, newVal) { + allErrs = append(allErrs, field.Invalid(fldPath, newVal, FieldImmutableErrorMsg)) + } + return allErrs +} + +// ValidateObjectMeta validates an object's metadata on creation. It expects that name generation has already +// been performed. +// It doesn't return an error for rootscoped resources with namespace, because namespace should already be cleared before. +func ValidateObjectMeta(objMeta *metav1.ObjectMeta, requiresNamespace bool, nameFn ValidateNameFunc, fldPath *field.Path) field.ErrorList { + metadata, err := meta.Accessor(objMeta) + if err != nil { + allErrs := field.ErrorList{} + allErrs = append(allErrs, field.Invalid(fldPath, objMeta, err.Error())) + return allErrs + } + return ValidateObjectMetaAccessor(metadata, requiresNamespace, nameFn, fldPath) +} + +// ValidateObjectMeta validates an object's metadata on creation. It expects that name generation has already +// been performed. +// It doesn't return an error for rootscoped resources with namespace, because namespace should already be cleared before. +func ValidateObjectMetaAccessor(meta metav1.Object, requiresNamespace bool, nameFn ValidateNameFunc, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + + if len(meta.GetGenerateName()) != 0 { + for _, msg := range nameFn(meta.GetGenerateName(), true) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("generateName"), meta.GetGenerateName(), msg)) + } + } + // If the generated name validates, but the calculated value does not, it's a problem with generation, and we + // report it here. This may confuse users, but indicates a programming bug and still must be validated. + // If there are multiple fields out of which one is required then add an or as a separator + if len(meta.GetName()) == 0 { + allErrs = append(allErrs, field.Required(fldPath.Child("name"), "name or generateName is required")) + } else { + for _, msg := range nameFn(meta.GetName(), false) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("name"), meta.GetName(), msg)) + } + } + if requiresNamespace { + if len(meta.GetNamespace()) == 0 { + allErrs = append(allErrs, field.Required(fldPath.Child("namespace"), "")) + } else { + for _, msg := range ValidateNamespaceName(meta.GetNamespace(), false) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("namespace"), meta.GetNamespace(), msg)) + } + } + } else { + if len(meta.GetNamespace()) != 0 { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("namespace"), "not allowed on this type")) + } + } + if len(meta.GetClusterName()) != 0 { + for _, msg := range ValidateClusterName(meta.GetClusterName(), false) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("clusterName"), meta.GetClusterName(), msg)) + } + } + allErrs = append(allErrs, ValidateNonnegativeField(meta.GetGeneration(), fldPath.Child("generation"))...) + allErrs = append(allErrs, v1validation.ValidateLabels(meta.GetLabels(), fldPath.Child("labels"))...) + allErrs = append(allErrs, ValidateAnnotations(meta.GetAnnotations(), fldPath.Child("annotations"))...) + allErrs = append(allErrs, ValidateOwnerReferences(meta.GetOwnerReferences(), fldPath.Child("ownerReferences"))...) + allErrs = append(allErrs, ValidateInitializers(meta.GetInitializers(), fldPath.Child("initializers"))...) + allErrs = append(allErrs, ValidateFinalizers(meta.GetFinalizers(), fldPath.Child("finalizers"))...) + return allErrs +} + +func ValidateInitializers(initializers *metav1.Initializers, fldPath *field.Path) field.ErrorList { + var allErrs field.ErrorList + if initializers == nil { + return allErrs + } + for i, initializer := range initializers.Pending { + for _, msg := range validation.IsQualifiedName(initializer.Name) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("pending").Index(i), initializer.Name, msg)) + } + } + allErrs = append(allErrs, validateInitializersResult(initializers.Result, fldPath.Child("result"))...) + if len(initializers.Pending) == 0 && initializers.Result == nil { + allErrs = append(allErrs, field.Invalid(fldPath.Child("pending"), nil, "must be non-empty when result is not set")) + } + return allErrs +} + +func validateInitializersResult(result *metav1.Status, fldPath *field.Path) field.ErrorList { + var allErrs field.ErrorList + if result == nil { + return allErrs + } + switch result.Status { + case metav1.StatusFailure: + default: + allErrs = append(allErrs, field.Invalid(fldPath.Child("status"), result.Status, "must be 'Failure'")) + } + return allErrs +} + +// ValidateFinalizers tests if the finalizers name are valid, and if there are conflicting finalizers. +func ValidateFinalizers(finalizers []string, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + hasFinalizerOrphanDependents := false + hasFinalizerDeleteDependents := false + for _, finalizer := range finalizers { + allErrs = append(allErrs, ValidateFinalizerName(finalizer, fldPath)...) + if finalizer == metav1.FinalizerOrphanDependents { + hasFinalizerOrphanDependents = true + } + if finalizer == metav1.FinalizerDeleteDependents { + hasFinalizerDeleteDependents = true + } + } + if hasFinalizerDeleteDependents && hasFinalizerOrphanDependents { + allErrs = append(allErrs, field.Invalid(fldPath, finalizers, fmt.Sprintf("finalizer %s and %s cannot be both set", metav1.FinalizerOrphanDependents, metav1.FinalizerDeleteDependents))) + } + return allErrs +} + +// ValidateObjectMetaUpdate validates an object's metadata when updated +func ValidateObjectMetaUpdate(newMeta, oldMeta *metav1.ObjectMeta, fldPath *field.Path) field.ErrorList { + newMetadata, err := meta.Accessor(newMeta) + if err != nil { + allErrs := field.ErrorList{} + allErrs = append(allErrs, field.Invalid(fldPath, newMeta, err.Error())) + return allErrs + } + oldMetadata, err := meta.Accessor(oldMeta) + if err != nil { + allErrs := field.ErrorList{} + allErrs = append(allErrs, field.Invalid(fldPath, oldMeta, err.Error())) + return allErrs + } + return ValidateObjectMetaAccessorUpdate(newMetadata, oldMetadata, fldPath) +} + +func ValidateObjectMetaAccessorUpdate(newMeta, oldMeta metav1.Object, fldPath *field.Path) field.ErrorList { + var allErrs field.ErrorList + + if !RepairMalformedUpdates && newMeta.GetUID() != oldMeta.GetUID() { + allErrs = append(allErrs, field.Invalid(fldPath.Child("uid"), newMeta.GetUID(), "field is immutable")) + } + // in the event it is left empty, set it, to allow clients more flexibility + // TODO: remove the following code that repairs the update request when we retire the clients that modify the immutable fields. + // Please do not copy this pattern elsewhere; validation functions should not be modifying the objects they are passed! + if RepairMalformedUpdates { + if len(newMeta.GetUID()) == 0 { + newMeta.SetUID(oldMeta.GetUID()) + } + // ignore changes to timestamp + if oldCreationTime := oldMeta.GetCreationTimestamp(); oldCreationTime.IsZero() { + oldMeta.SetCreationTimestamp(newMeta.GetCreationTimestamp()) + } else { + newMeta.SetCreationTimestamp(oldMeta.GetCreationTimestamp()) + } + // an object can never remove a deletion timestamp or clear/change grace period seconds + if !oldMeta.GetDeletionTimestamp().IsZero() { + newMeta.SetDeletionTimestamp(oldMeta.GetDeletionTimestamp()) + } + if oldMeta.GetDeletionGracePeriodSeconds() != nil && newMeta.GetDeletionGracePeriodSeconds() == nil { + newMeta.SetDeletionGracePeriodSeconds(oldMeta.GetDeletionGracePeriodSeconds()) + } + } + + // TODO: needs to check if newMeta==nil && oldMeta !=nil after the repair logic is removed. + if newMeta.GetDeletionGracePeriodSeconds() != nil && (oldMeta.GetDeletionGracePeriodSeconds() == nil || *newMeta.GetDeletionGracePeriodSeconds() != *oldMeta.GetDeletionGracePeriodSeconds()) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("deletionGracePeriodSeconds"), newMeta.GetDeletionGracePeriodSeconds(), "field is immutable; may only be changed via deletion")) + } + if newMeta.GetDeletionTimestamp() != nil && (oldMeta.GetDeletionTimestamp() == nil || !newMeta.GetDeletionTimestamp().Equal(*oldMeta.GetDeletionTimestamp())) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("deletionTimestamp"), newMeta.GetDeletionTimestamp(), "field is immutable; may only be changed via deletion")) + } + + // Finalizers cannot be added if the object is already being deleted. + if oldMeta.GetDeletionTimestamp() != nil { + allErrs = append(allErrs, ValidateNoNewFinalizers(newMeta.GetFinalizers(), oldMeta.GetFinalizers(), fldPath.Child("finalizers"))...) + } + + // Reject updates that don't specify a resource version + if len(newMeta.GetResourceVersion()) == 0 { + allErrs = append(allErrs, field.Invalid(fldPath.Child("resourceVersion"), newMeta.GetResourceVersion(), "must be specified for an update")) + } + + // Generation shouldn't be decremented + if newMeta.GetGeneration() < oldMeta.GetGeneration() { + allErrs = append(allErrs, field.Invalid(fldPath.Child("generation"), newMeta.GetGeneration(), "must not be decremented")) + } + + allErrs = append(allErrs, ValidateInitializersUpdate(newMeta.GetInitializers(), oldMeta.GetInitializers(), fldPath.Child("initializers"))...) + + allErrs = append(allErrs, ValidateImmutableField(newMeta.GetName(), oldMeta.GetName(), fldPath.Child("name"))...) + allErrs = append(allErrs, ValidateImmutableField(newMeta.GetNamespace(), oldMeta.GetNamespace(), fldPath.Child("namespace"))...) + allErrs = append(allErrs, ValidateImmutableField(newMeta.GetUID(), oldMeta.GetUID(), fldPath.Child("uid"))...) + allErrs = append(allErrs, ValidateImmutableField(newMeta.GetCreationTimestamp(), oldMeta.GetCreationTimestamp(), fldPath.Child("creationTimestamp"))...) + allErrs = append(allErrs, ValidateImmutableField(newMeta.GetClusterName(), oldMeta.GetClusterName(), fldPath.Child("clusterName"))...) + + allErrs = append(allErrs, v1validation.ValidateLabels(newMeta.GetLabels(), fldPath.Child("labels"))...) + allErrs = append(allErrs, ValidateAnnotations(newMeta.GetAnnotations(), fldPath.Child("annotations"))...) + allErrs = append(allErrs, ValidateOwnerReferences(newMeta.GetOwnerReferences(), fldPath.Child("ownerReferences"))...) + + return allErrs +} + +// ValidateInitializersUpdate checks the update of the metadata initializers field +func ValidateInitializersUpdate(newInit, oldInit *metav1.Initializers, fldPath *field.Path) field.ErrorList { + var allErrs field.ErrorList + switch { + case oldInit == nil && newInit != nil: + // Initializers may not be set on new objects + allErrs = append(allErrs, field.Invalid(fldPath, nil, "field is immutable once initialization has completed")) + case oldInit != nil && newInit == nil: + // this is a valid transition and means initialization was successful + case oldInit != nil && newInit != nil: + // validate changes to initializers + switch { + case oldInit.Result == nil && newInit.Result != nil: + // setting a result is allowed + allErrs = append(allErrs, validateInitializersResult(newInit.Result, fldPath.Child("result"))...) + case oldInit.Result != nil: + // setting Result implies permanent failure, and all future updates will be prevented + allErrs = append(allErrs, ValidateImmutableField(newInit.Result, oldInit.Result, fldPath.Child("result"))...) + default: + // leaving the result nil is allowed + } + } + return allErrs +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go new file mode 100644 index 000000000..a8041d7fe --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/objectmeta_test.go @@ -0,0 +1,500 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "math/rand" + "reflect" + "strings" + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +const ( + maxLengthErrMsg = "must be no more than" + namePartErrMsg = "name part must consist of" + nameErrMsg = "a qualified name must consist of" +) + +// Ensure custom name functions are allowed +func TestValidateObjectMetaCustomName(t *testing.T) { + errs := ValidateObjectMeta( + &metav1.ObjectMeta{Name: "test", GenerateName: "foo"}, + false, + func(s string, prefix bool) []string { + if s == "test" { + return nil + } + return []string{"name-gen"} + }, + field.NewPath("field")) + if len(errs) != 1 { + t.Fatalf("unexpected errors: %v", errs) + } + if !strings.Contains(errs[0].Error(), "name-gen") { + t.Errorf("unexpected error message: %v", errs) + } +} + +// Ensure namespace names follow dns label format +func TestValidateObjectMetaNamespaces(t *testing.T) { + errs := ValidateObjectMeta( + &metav1.ObjectMeta{Name: "test", Namespace: "foo.bar"}, + true, + func(s string, prefix bool) []string { + return nil + }, + field.NewPath("field")) + if len(errs) != 1 { + t.Fatalf("unexpected errors: %v", errs) + } + if !strings.Contains(errs[0].Error(), `Invalid value: "foo.bar"`) { + t.Errorf("unexpected error message: %v", errs) + } + maxLength := 63 + letters := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") + b := make([]rune, maxLength+1) + for i := range b { + b[i] = letters[rand.Intn(len(letters))] + } + errs = ValidateObjectMeta( + &metav1.ObjectMeta{Name: "test", Namespace: string(b)}, + true, + func(s string, prefix bool) []string { + return nil + }, + field.NewPath("field")) + if len(errs) != 2 { + t.Fatalf("unexpected errors: %v", errs) + } + if !strings.Contains(errs[0].Error(), "Invalid value") || !strings.Contains(errs[1].Error(), "Invalid value") { + t.Errorf("unexpected error message: %v", errs) + } +} + +func TestValidateObjectMetaOwnerReferences(t *testing.T) { + trueVar := true + falseVar := false + testCases := []struct { + description string + ownerReferences []metav1.OwnerReference + expectError bool + expectedErrorMessage string + }{ + { + description: "simple success - third party extension.", + ownerReferences: []metav1.OwnerReference{ + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "1", + }, + }, + expectError: false, + expectedErrorMessage: "", + }, + { + description: "simple failures - event shouldn't be set as an owner", + ownerReferences: []metav1.OwnerReference{ + { + APIVersion: "v1", + Kind: "Event", + Name: "name", + UID: "1", + }, + }, + expectError: true, + expectedErrorMessage: "is disallowed from being an owner", + }, + { + description: "simple controller ref success - one reference with Controller set", + ownerReferences: []metav1.OwnerReference{ + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "1", + Controller: &falseVar, + }, + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "2", + Controller: &trueVar, + }, + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "3", + Controller: &falseVar, + }, + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "4", + }, + }, + expectError: false, + expectedErrorMessage: "", + }, + { + description: "simple controller ref failure - two references with Controller set", + ownerReferences: []metav1.OwnerReference{ + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "1", + Controller: &falseVar, + }, + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "2", + Controller: &trueVar, + }, + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "3", + Controller: &trueVar, + }, + { + APIVersion: "thirdpartyVersion", + Kind: "thirdpartyKind", + Name: "name", + UID: "4", + }, + }, + expectError: true, + expectedErrorMessage: "Only one reference can have Controller set to true", + }, + } + + for _, tc := range testCases { + errs := ValidateObjectMeta( + &metav1.ObjectMeta{Name: "test", Namespace: "test", OwnerReferences: tc.ownerReferences}, + true, + func(s string, prefix bool) []string { + return nil + }, + field.NewPath("field")) + if len(errs) != 0 && !tc.expectError { + t.Errorf("unexpected error: %v in test case %v", errs, tc.description) + } + if len(errs) == 0 && tc.expectError { + t.Errorf("expect error in test case %v", tc.description) + } + if len(errs) != 0 && !strings.Contains(errs[0].Error(), tc.expectedErrorMessage) { + t.Errorf("unexpected error message: %v in test case %v", errs, tc.description) + } + } +} + +func TestValidateObjectMetaUpdateIgnoresCreationTimestamp(t *testing.T) { + if errs := ValidateObjectMetaUpdate( + &metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + &metav1.ObjectMeta{Name: "test", ResourceVersion: "1", CreationTimestamp: metav1.NewTime(time.Unix(10, 0))}, + field.NewPath("field"), + ); len(errs) != 0 { + t.Fatalf("unexpected errors: %v", errs) + } + if errs := ValidateObjectMetaUpdate( + &metav1.ObjectMeta{Name: "test", ResourceVersion: "1", CreationTimestamp: metav1.NewTime(time.Unix(10, 0))}, + &metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + field.NewPath("field"), + ); len(errs) != 0 { + t.Fatalf("unexpected errors: %v", errs) + } + if errs := ValidateObjectMetaUpdate( + &metav1.ObjectMeta{Name: "test", ResourceVersion: "1", CreationTimestamp: metav1.NewTime(time.Unix(10, 0))}, + &metav1.ObjectMeta{Name: "test", ResourceVersion: "1", CreationTimestamp: metav1.NewTime(time.Unix(11, 0))}, + field.NewPath("field"), + ); len(errs) != 0 { + t.Fatalf("unexpected errors: %v", errs) + } +} + +func TestValidateFinalizersUpdate(t *testing.T) { + testcases := map[string]struct { + Old metav1.ObjectMeta + New metav1.ObjectMeta + ExpectedErr string + }{ + "invalid adding finalizers": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &metav1.Time{}, Finalizers: []string{"x/a"}}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &metav1.Time{}, Finalizers: []string{"x/a", "y/b"}}, + ExpectedErr: "y/b", + }, + "invalid changing finalizers": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &metav1.Time{}, Finalizers: []string{"x/a"}}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &metav1.Time{}, Finalizers: []string{"x/b"}}, + ExpectedErr: "x/b", + }, + "valid removing finalizers": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &metav1.Time{}, Finalizers: []string{"x/a", "y/b"}}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &metav1.Time{}, Finalizers: []string{"x/a"}}, + ExpectedErr: "", + }, + "valid adding finalizers for objects not being deleted": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Finalizers: []string{"x/a"}}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Finalizers: []string{"x/a", "y/b"}}, + ExpectedErr: "", + }, + } + for name, tc := range testcases { + errs := ValidateObjectMetaUpdate(&tc.New, &tc.Old, field.NewPath("field")) + if len(errs) == 0 { + if len(tc.ExpectedErr) != 0 { + t.Errorf("case: %q, expected error to contain %q", name, tc.ExpectedErr) + } + } else if e, a := tc.ExpectedErr, errs.ToAggregate().Error(); !strings.Contains(a, e) { + t.Errorf("case: %q, expected error to contain %q, got error %q", name, e, a) + } + } +} + +func TestValidateFinalizersPreventConflictingFinalizers(t *testing.T) { + testcases := map[string]struct { + ObjectMeta metav1.ObjectMeta + ExpectedErr string + }{ + "conflicting finalizers": { + ObjectMeta: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Finalizers: []string{metav1.FinalizerOrphanDependents, metav1.FinalizerDeleteDependents}}, + ExpectedErr: "cannot be both set", + }, + } + for name, tc := range testcases { + errs := ValidateObjectMeta(&tc.ObjectMeta, false, NameIsDNSSubdomain, field.NewPath("field")) + if len(errs) == 0 { + if len(tc.ExpectedErr) != 0 { + t.Errorf("case: %q, expected error to contain %q", name, tc.ExpectedErr) + } + } else if e, a := tc.ExpectedErr, errs.ToAggregate().Error(); !strings.Contains(a, e) { + t.Errorf("case: %q, expected error to contain %q, got error %q", name, e, a) + } + } +} + +func TestValidateObjectMetaUpdatePreventsDeletionFieldMutation(t *testing.T) { + now := metav1.NewTime(time.Unix(1000, 0).UTC()) + later := metav1.NewTime(time.Unix(2000, 0).UTC()) + gracePeriodShort := int64(30) + gracePeriodLong := int64(40) + + testcases := map[string]struct { + Old metav1.ObjectMeta + New metav1.ObjectMeta + ExpectedNew metav1.ObjectMeta + ExpectedErrs []string + }{ + "valid without deletion fields": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + ExpectedErrs: []string{}, + }, + "valid with deletion fields": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &gracePeriodShort}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &gracePeriodShort}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &gracePeriodShort}, + ExpectedErrs: []string{}, + }, + + "invalid set deletionTimestamp": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now}, + ExpectedErrs: []string{"field.deletionTimestamp: Invalid value: 1970-01-01 00:16:40 +0000 UTC: field is immutable; may only be changed via deletion"}, + }, + "invalid clear deletionTimestamp": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now}, + ExpectedErrs: []string{}, // no errors, validation copies the old value + }, + "invalid change deletionTimestamp": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &later}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionTimestamp: &now}, + ExpectedErrs: []string{}, // no errors, validation copies the old value + }, + + "invalid set deletionGracePeriodSeconds": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodShort}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodShort}, + ExpectedErrs: []string{"field.deletionGracePeriodSeconds: Invalid value: 30: field is immutable; may only be changed via deletion"}, + }, + "invalid clear deletionGracePeriodSeconds": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodShort}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1"}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodShort}, + ExpectedErrs: []string{}, // no errors, validation copies the old value + }, + "invalid change deletionGracePeriodSeconds": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodShort}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodLong}, + ExpectedNew: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", DeletionGracePeriodSeconds: &gracePeriodLong}, + ExpectedErrs: []string{"field.deletionGracePeriodSeconds: Invalid value: 40: field is immutable; may only be changed via deletion"}, + }, + } + + for k, tc := range testcases { + errs := ValidateObjectMetaUpdate(&tc.New, &tc.Old, field.NewPath("field")) + if len(errs) != len(tc.ExpectedErrs) { + t.Logf("%s: Expected: %#v", k, tc.ExpectedErrs) + t.Logf("%s: Got: %#v", k, errs) + t.Errorf("%s: expected %d errors, got %d", k, len(tc.ExpectedErrs), len(errs)) + continue + } + for i := range errs { + if errs[i].Error() != tc.ExpectedErrs[i] { + t.Errorf("%s: error #%d: expected %q, got %q", k, i, tc.ExpectedErrs[i], errs[i].Error()) + } + } + if !reflect.DeepEqual(tc.New, tc.ExpectedNew) { + t.Errorf("%s: Expected after validation:\n%#v\ngot\n%#v", k, tc.ExpectedNew, tc.New) + } + } +} + +func TestObjectMetaGenerationUpdate(t *testing.T) { + testcases := map[string]struct { + Old metav1.ObjectMeta + New metav1.ObjectMeta + ExpectedErrs []string + }{ + "invalid generation change - decremented": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Generation: 5}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Generation: 4}, + ExpectedErrs: []string{"field.generation: Invalid value: 4: must not be decremented"}, + }, + "valid generation change - incremented by one": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Generation: 1}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Generation: 2}, + ExpectedErrs: []string{}, + }, + "valid generation field - not updated": { + Old: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Generation: 5}, + New: metav1.ObjectMeta{Name: "test", ResourceVersion: "1", Generation: 5}, + ExpectedErrs: []string{}, + }, + } + + for k, tc := range testcases { + errList := []string{} + errs := ValidateObjectMetaUpdate(&tc.New, &tc.Old, field.NewPath("field")) + if len(errs) != len(tc.ExpectedErrs) { + t.Logf("%s: Expected: %#v", k, tc.ExpectedErrs) + for _, err := range errs { + errList = append(errList, err.Error()) + } + t.Logf("%s: Got: %#v", k, errList) + t.Errorf("%s: expected %d errors, got %d", k, len(tc.ExpectedErrs), len(errs)) + continue + } + for i := range errList { + if errList[i] != tc.ExpectedErrs[i] { + t.Errorf("%s: error #%d: expected %q, got %q", k, i, tc.ExpectedErrs[i], errList[i]) + } + } + } +} + +// Ensure trailing slash is allowed in generate name +func TestValidateObjectMetaTrimsTrailingSlash(t *testing.T) { + errs := ValidateObjectMeta( + &metav1.ObjectMeta{Name: "test", GenerateName: "foo-"}, + false, + NameIsDNSSubdomain, + field.NewPath("field")) + if len(errs) != 0 { + t.Fatalf("unexpected errors: %v", errs) + } +} + +func TestValidateAnnotations(t *testing.T) { + successCases := []map[string]string{ + {"simple": "bar"}, + {"now-with-dashes": "bar"}, + {"1-starts-with-num": "bar"}, + {"1234": "bar"}, + {"simple/simple": "bar"}, + {"now-with-dashes/simple": "bar"}, + {"now-with-dashes/now-with-dashes": "bar"}, + {"now.with.dots/simple": "bar"}, + {"now-with.dashes-and.dots/simple": "bar"}, + {"1-num.2-num/3-num": "bar"}, + {"1234/5678": "bar"}, + {"1.2.3.4/5678": "bar"}, + {"UpperCase123": "bar"}, + {"a": strings.Repeat("b", totalAnnotationSizeLimitB-1)}, + { + "a": strings.Repeat("b", totalAnnotationSizeLimitB/2-1), + "c": strings.Repeat("d", totalAnnotationSizeLimitB/2-1), + }, + } + for i := range successCases { + errs := ValidateAnnotations(successCases[i], field.NewPath("field")) + if len(errs) != 0 { + t.Errorf("case[%d] expected success, got %#v", i, errs) + } + } + + nameErrorCases := []struct { + annotations map[string]string + expect string + }{ + {map[string]string{"nospecialchars^=@": "bar"}, namePartErrMsg}, + {map[string]string{"cantendwithadash-": "bar"}, namePartErrMsg}, + {map[string]string{"only/one/slash": "bar"}, nameErrMsg}, + {map[string]string{strings.Repeat("a", 254): "bar"}, maxLengthErrMsg}, + } + for i := range nameErrorCases { + errs := ValidateAnnotations(nameErrorCases[i].annotations, field.NewPath("field")) + if len(errs) != 1 { + t.Errorf("case[%d]: expected failure", i) + } else { + if !strings.Contains(errs[0].Detail, nameErrorCases[i].expect) { + t.Errorf("case[%d]: error details do not include %q: %q", i, nameErrorCases[i].expect, errs[0].Detail) + } + } + } + totalSizeErrorCases := []map[string]string{ + {"a": strings.Repeat("b", totalAnnotationSizeLimitB)}, + { + "a": strings.Repeat("b", totalAnnotationSizeLimitB/2), + "c": strings.Repeat("d", totalAnnotationSizeLimitB/2), + }, + } + for i := range totalSizeErrorCases { + errs := ValidateAnnotations(totalSizeErrorCases[i], field.NewPath("field")) + if len(errs) != 1 { + t.Errorf("case[%d] expected failure", i) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD b/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD new file mode 100644 index 000000000..3e98b2737 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/path/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["name_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["name.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/path/name.go b/vendor/k8s.io/apimachinery/pkg/api/validation/path/name.go new file mode 100644 index 000000000..a50cd089d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/path/name.go @@ -0,0 +1,68 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package path + +import ( + "fmt" + "strings" +) + +// NameMayNotBe specifies strings that cannot be used as names specified as path segments (like the REST API or etcd store) +var NameMayNotBe = []string{".", ".."} + +// NameMayNotContain specifies substrings that cannot be used in names specified as path segments (like the REST API or etcd store) +var NameMayNotContain = []string{"/", "%"} + +// IsValidPathSegmentName validates the name can be safely encoded as a path segment +func IsValidPathSegmentName(name string) []string { + for _, illegalName := range NameMayNotBe { + if name == illegalName { + return []string{fmt.Sprintf(`may not be '%s'`, illegalName)} + } + } + + var errors []string + for _, illegalContent := range NameMayNotContain { + if strings.Contains(name, illegalContent) { + errors = append(errors, fmt.Sprintf(`may not contain '%s'`, illegalContent)) + } + } + + return errors +} + +// IsValidPathSegmentPrefix validates the name can be used as a prefix for a name which will be encoded as a path segment +// It does not check for exact matches with disallowed names, since an arbitrary suffix might make the name valid +func IsValidPathSegmentPrefix(name string) []string { + var errors []string + for _, illegalContent := range NameMayNotContain { + if strings.Contains(name, illegalContent) { + errors = append(errors, fmt.Sprintf(`may not contain '%s'`, illegalContent)) + } + } + + return errors +} + +// ValidatePathSegmentName validates the name can be safely encoded as a path segment +func ValidatePathSegmentName(name string, prefix bool) []string { + if prefix { + return IsValidPathSegmentPrefix(name) + } else { + return IsValidPathSegmentName(name) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/api/validation/path/name_test.go b/vendor/k8s.io/apimachinery/pkg/api/validation/path/name_test.go new file mode 100644 index 000000000..428905273 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/api/validation/path/name_test.go @@ -0,0 +1,168 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package path + +import ( + "strings" + "testing" +) + +func TestValidatePathSegmentName(t *testing.T) { + testcases := map[string]struct { + Name string + Prefix bool + ExpectedMsg string + }{ + "empty": { + Name: "", + Prefix: false, + ExpectedMsg: "", + }, + "empty,prefix": { + Name: "", + Prefix: true, + ExpectedMsg: "", + }, + + "valid": { + Name: "foo.bar.baz", + Prefix: false, + ExpectedMsg: "", + }, + "valid,prefix": { + Name: "foo.bar.baz", + Prefix: true, + ExpectedMsg: "", + }, + + // Make sure mixed case, non DNS subdomain characters are tolerated + "valid complex": { + Name: "sha256:ABCDEF012345@ABCDEF012345", + Prefix: false, + ExpectedMsg: "", + }, + // Make sure non-ascii characters are tolerated + "valid extended charset": { + Name: "Iñtërnâtiônàlizætiøn", + Prefix: false, + ExpectedMsg: "", + }, + + "dot": { + Name: ".", + Prefix: false, + ExpectedMsg: ".", + }, + "dot leading": { + Name: ".test", + Prefix: false, + ExpectedMsg: "", + }, + "dot,prefix": { + Name: ".", + Prefix: true, + ExpectedMsg: "", + }, + + "dot dot": { + Name: "..", + Prefix: false, + ExpectedMsg: "..", + }, + "dot dot leading": { + Name: "..test", + Prefix: false, + ExpectedMsg: "", + }, + "dot dot,prefix": { + Name: "..", + Prefix: true, + ExpectedMsg: "", + }, + + "slash": { + Name: "foo/bar", + Prefix: false, + ExpectedMsg: "/", + }, + "slash,prefix": { + Name: "foo/bar", + Prefix: true, + ExpectedMsg: "/", + }, + + "percent": { + Name: "foo%bar", + Prefix: false, + ExpectedMsg: "%", + }, + "percent,prefix": { + Name: "foo%bar", + Prefix: true, + ExpectedMsg: "%", + }, + } + + for k, tc := range testcases { + msgs := ValidatePathSegmentName(tc.Name, tc.Prefix) + if len(tc.ExpectedMsg) == 0 && len(msgs) > 0 { + t.Errorf("%s: expected no message, got %v", k, msgs) + } + if len(tc.ExpectedMsg) > 0 && len(msgs) == 0 { + t.Errorf("%s: expected error message, got none", k) + } + if len(tc.ExpectedMsg) > 0 && !strings.Contains(msgs[0], tc.ExpectedMsg) { + t.Errorf("%s: expected message containing %q, got %v", k, tc.ExpectedMsg, msgs[0]) + } + } +} + +func TestValidateWithMultiErrors(t *testing.T) { + testcases := map[string]struct { + Name string + Prefix bool + ExpectedMsg []string + }{ + "slash,percent": { + Name: "foo//bar%", + Prefix: false, + ExpectedMsg: []string{"may not contain '/'", "may not contain '%'"}, + }, + "slash,percent,prefix": { + Name: "foo//bar%", + Prefix: true, + ExpectedMsg: []string{"may not contain '/'", "may not contain '%'"}, + }, + } + + for k, tc := range testcases { + msgs := ValidatePathSegmentName(tc.Name, tc.Prefix) + if len(tc.ExpectedMsg) == 0 && len(msgs) > 0 { + t.Errorf("%s: expected no message, got %v", k, msgs) + } + if len(tc.ExpectedMsg) > 0 && len(msgs) == 0 { + t.Errorf("%s: expected error message, got none", k) + } + if len(tc.ExpectedMsg) > 0 { + for i := 0; i < len(tc.ExpectedMsg); i++ { + if msgs[i] != tc.ExpectedMsg[i] { + t.Errorf("%s: expected message containing %q, got %v", k, tc.ExpectedMsg[i], msgs[i]) + } + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD b/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD new file mode 100644 index 000000000..d31194517 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["types_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "types.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD new file mode 100644 index 000000000..9c55915a5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/BUILD @@ -0,0 +1,35 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["announced_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "announced.go", + "group_factory.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced.go new file mode 100644 index 000000000..2c8568c1f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced.go @@ -0,0 +1,99 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package announced contains tools for announcing API group factories. This is +// distinct from registration (in the 'registered' package) in that it's safe +// to announce every possible group linked in, but only groups requested at +// runtime should be registered. This package contains both a registry, and +// factory code (which was formerly copy-pasta in every install package). +package announced + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" +) + +// APIGroupFactoryRegistry allows for groups and versions to announce themselves, +// which simply makes them available and doesn't take other actions. Later, +// users of the registry can select which groups and versions they'd actually +// like to register with an APIRegistrationManager. +// +// (Right now APIRegistrationManager has separate 'registration' and 'enabled' +// concepts-- APIGroupFactory is going to take over the former function; +// they will overlap untill the refactoring is finished.) +// +// The key is the group name. After initialization, this should be treated as +// read-only. It is implemented as a map from group name to group factory, and +// it is safe to use this knowledge to manually pick out groups to register +// (e.g., for testing). +type APIGroupFactoryRegistry map[string]*GroupMetaFactory + +func (gar APIGroupFactoryRegistry) group(groupName string) *GroupMetaFactory { + gmf, ok := gar[groupName] + if !ok { + gmf = &GroupMetaFactory{VersionArgs: map[string]*GroupVersionFactoryArgs{}} + gar[groupName] = gmf + } + return gmf +} + +// AnnounceGroupVersion adds the particular arguments for this group version to the group factory. +func (gar APIGroupFactoryRegistry) AnnounceGroupVersion(gvf *GroupVersionFactoryArgs) error { + gmf := gar.group(gvf.GroupName) + if _, ok := gmf.VersionArgs[gvf.VersionName]; ok { + return fmt.Errorf("version %q in group %q has already been announced", gvf.VersionName, gvf.GroupName) + } + gmf.VersionArgs[gvf.VersionName] = gvf + return nil +} + +// AnnounceGroup adds the group-wide arguments to the group factory. +func (gar APIGroupFactoryRegistry) AnnounceGroup(args *GroupMetaFactoryArgs) error { + gmf := gar.group(args.GroupName) + if gmf.GroupArgs != nil { + return fmt.Errorf("group %q has already been announced", args.GroupName) + } + gmf.GroupArgs = args + return nil +} + +// RegisterAndEnableAll throws every factory at the specified API registration +// manager, and lets it decide which to register. (If you want to do this a la +// cart, you may look through gar itself-- it's just a map.) +func (gar APIGroupFactoryRegistry) RegisterAndEnableAll(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error { + for groupName, gmf := range gar { + if err := gmf.Register(m); err != nil { + return fmt.Errorf("error registering %v: %v", groupName, err) + } + if err := gmf.Enable(m, scheme); err != nil { + return fmt.Errorf("error enabling %v: %v", groupName, err) + } + } + return nil +} + +// AnnouncePreconstructedFactory announces a factory which you've manually assembled. +// You may call this instead of calling AnnounceGroup and AnnounceGroupVersion. +func (gar APIGroupFactoryRegistry) AnnouncePreconstructedFactory(gmf *GroupMetaFactory) error { + name := gmf.GroupArgs.GroupName + if _, exists := gar[name]; exists { + return fmt.Errorf("the group %q has already been announced.", name) + } + gar[name] = gmf + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go new file mode 100644 index 000000000..9c2765bdb --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/announced_test.go @@ -0,0 +1,66 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package announced + +import ( + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/util/sets" +) + +func TestFactoryRegistry(t *testing.T) { + regA := make(APIGroupFactoryRegistry) + regB := make(APIGroupFactoryRegistry) + + if err := regA.AnnounceGroup(&GroupMetaFactoryArgs{ + GroupName: "foo", + VersionPreferenceOrder: []string{"v2", "v1"}, + ImportPrefix: "pkg/apis/foo", + RootScopedKinds: sets.NewString("namespaces"), + }); err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if err := regA.AnnounceGroupVersion(&GroupVersionFactoryArgs{ + GroupName: "foo", + VersionName: "v1", + }); err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if err := regA.AnnounceGroupVersion(&GroupVersionFactoryArgs{ + GroupName: "foo", + VersionName: "v2", + }); err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + if err := regB.AnnouncePreconstructedFactory(NewGroupMetaFactory( + &GroupMetaFactoryArgs{ + GroupName: "foo", + VersionPreferenceOrder: []string{"v2", "v1"}, + ImportPrefix: "pkg/apis/foo", + RootScopedKinds: sets.NewString("namespaces"), + }, + VersionToSchemeFunc{"v1": nil, "v2": nil}, + )); err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + if !reflect.DeepEqual(regA, regB) { + t.Errorf("Expected both ways of registering to be equivalent, but they were not.\n\n%#v\n\n%#v\n", regA, regB) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go new file mode 100644 index 000000000..c469eebcd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/announced/group_factory.go @@ -0,0 +1,252 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package announced + +import ( + "fmt" + + "github.com/golang/glog" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/apimachinery" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" +) + +type SchemeFunc func(*runtime.Scheme) error +type VersionToSchemeFunc map[string]SchemeFunc + +// GroupVersionFactoryArgs contains all the per-version parts of a GroupMetaFactory. +type GroupVersionFactoryArgs struct { + GroupName string + VersionName string + + AddToScheme SchemeFunc +} + +// GroupMetaFactoryArgs contains the group-level args of a GroupMetaFactory. +type GroupMetaFactoryArgs struct { + // GroupName is the name of the API-Group + // + // example: 'servicecatalog.k8s.io' + GroupName string + VersionPreferenceOrder []string + // ImportPrefix is the base go package of the API-Group + // + // example: 'k8s.io/kubernetes/pkg/apis/autoscaling' + ImportPrefix string + // RootScopedKinds are resources that are not namespaced. + RootScopedKinds sets.String // nil is allowed + IgnoredKinds sets.String // nil is allowed + + // May be nil if there are no internal objects. + AddInternalObjectsToScheme SchemeFunc +} + +// NewGroupMetaFactory builds the args for you. This is for if you're +// constructing a factory all at once and not using the registry. +func NewGroupMetaFactory(groupArgs *GroupMetaFactoryArgs, versions VersionToSchemeFunc) *GroupMetaFactory { + gmf := &GroupMetaFactory{ + GroupArgs: groupArgs, + VersionArgs: map[string]*GroupVersionFactoryArgs{}, + } + for v, f := range versions { + gmf.VersionArgs[v] = &GroupVersionFactoryArgs{ + GroupName: groupArgs.GroupName, + VersionName: v, + AddToScheme: f, + } + } + return gmf +} + +// Announce adds this Group factory to the global factory registry. It should +// only be called if you constructed the GroupMetaFactory yourself via +// NewGroupMetaFactory. +// Note that this will panic on an error, since it's expected that you'll be +// calling this at initialization time and any error is a result of a +// programmer importing the wrong set of packages. If this assumption doesn't +// work for you, just call DefaultGroupFactoryRegistry.AnnouncePreconstructedFactory +// yourself. +func (gmf *GroupMetaFactory) Announce(groupFactoryRegistry APIGroupFactoryRegistry) *GroupMetaFactory { + if err := groupFactoryRegistry.AnnouncePreconstructedFactory(gmf); err != nil { + panic(err) + } + return gmf +} + +// GroupMetaFactory has the logic for actually assembling and registering a group. +// +// There are two ways of obtaining one of these. +// 1. You can announce your group and versions separately, and then let the +// GroupFactoryRegistry assemble this object for you. (This allows group and +// versions to be imported separately, without referencing each other, to +// keep import trees small.) +// 2. You can call NewGroupMetaFactory(), which is mostly a drop-in replacement +// for the old, bad way of doing things. You can then call .Announce() to +// announce your constructed factory to any code that would like to do +// things the new, better way. +// +// Note that GroupMetaFactory actually does construct GroupMeta objects, but +// currently it does so in a way that's very entangled with an +// APIRegistrationManager. It's a TODO item to cleanly separate that interface. +type GroupMetaFactory struct { + GroupArgs *GroupMetaFactoryArgs + // map of version name to version factory + VersionArgs map[string]*GroupVersionFactoryArgs + + // assembled by Register() + prioritizedVersionList []schema.GroupVersion +} + +// Register constructs the finalized prioritized version list and sanity checks +// the announced group & versions. Then it calls register. +func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) error { + if gmf.GroupArgs == nil { + return fmt.Errorf("partially announced groups are not allowed, only got versions: %#v", gmf.VersionArgs) + } + if len(gmf.VersionArgs) == 0 { + return fmt.Errorf("group %v announced but no versions announced", gmf.GroupArgs.GroupName) + } + + pvSet := sets.NewString(gmf.GroupArgs.VersionPreferenceOrder...) + if pvSet.Len() != len(gmf.GroupArgs.VersionPreferenceOrder) { + return fmt.Errorf("preference order for group %v has duplicates: %v", gmf.GroupArgs.GroupName, gmf.GroupArgs.VersionPreferenceOrder) + } + prioritizedVersions := []schema.GroupVersion{} + for _, v := range gmf.GroupArgs.VersionPreferenceOrder { + prioritizedVersions = append( + prioritizedVersions, + schema.GroupVersion{ + Group: gmf.GroupArgs.GroupName, + Version: v, + }, + ) + } + + // Go through versions that weren't explicitly prioritized. + unprioritizedVersions := []schema.GroupVersion{} + for _, v := range gmf.VersionArgs { + if v.GroupName != gmf.GroupArgs.GroupName { + return fmt.Errorf("found %v/%v in group %v?", v.GroupName, v.VersionName, gmf.GroupArgs.GroupName) + } + if pvSet.Has(v.VersionName) { + pvSet.Delete(v.VersionName) + continue + } + unprioritizedVersions = append(unprioritizedVersions, schema.GroupVersion{Group: v.GroupName, Version: v.VersionName}) + } + if len(unprioritizedVersions) > 1 { + glog.Warningf("group %v has multiple unprioritized versions: %#v. They will have an arbitrary preference order!", gmf.GroupArgs.GroupName, unprioritizedVersions) + } + if pvSet.Len() != 0 { + return fmt.Errorf("group %v has versions in the priority list that were never announced: %s", gmf.GroupArgs.GroupName, pvSet) + } + prioritizedVersions = append(prioritizedVersions, unprioritizedVersions...) + m.RegisterVersions(prioritizedVersions) + gmf.prioritizedVersionList = prioritizedVersions + return nil +} + +func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersions []schema.GroupVersion, groupMeta *apimachinery.GroupMeta) meta.RESTMapper { + // the list of kinds that are scoped at the root of the api hierarchy + // if a kind is not enumerated here, it is assumed to have a namespace scope + rootScoped := sets.NewString() + if gmf.GroupArgs.RootScopedKinds != nil { + rootScoped = gmf.GroupArgs.RootScopedKinds + } + ignoredKinds := sets.NewString() + if gmf.GroupArgs.IgnoredKinds != nil { + ignoredKinds = gmf.GroupArgs.IgnoredKinds + } + + return meta.NewDefaultRESTMapperFromScheme( + externalVersions, + groupMeta.InterfacesFor, + gmf.GroupArgs.ImportPrefix, + ignoredKinds, + rootScoped, + scheme, + ) +} + +// Enable enables group versions that are allowed, adds methods to the scheme, etc. +func (gmf *GroupMetaFactory) Enable(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error { + externalVersions := []schema.GroupVersion{} + for _, v := range gmf.prioritizedVersionList { + if !m.IsAllowedVersion(v) { + continue + } + externalVersions = append(externalVersions, v) + if err := m.EnableVersions(v); err != nil { + return err + } + gmf.VersionArgs[v.Version].AddToScheme(scheme) + } + if len(externalVersions) == 0 { + glog.V(4).Infof("No version is registered for group %v", gmf.GroupArgs.GroupName) + return nil + } + + if gmf.GroupArgs.AddInternalObjectsToScheme != nil { + gmf.GroupArgs.AddInternalObjectsToScheme(scheme) + } + + preferredExternalVersion := externalVersions[0] + accessor := meta.NewAccessor() + + groupMeta := &apimachinery.GroupMeta{ + GroupVersion: preferredExternalVersion, + GroupVersions: externalVersions, + SelfLinker: runtime.SelfLinker(accessor), + } + for _, v := range externalVersions { + gvf := gmf.VersionArgs[v.Version] + if err := groupMeta.AddVersionInterfaces( + schema.GroupVersion{Group: gvf.GroupName, Version: gvf.VersionName}, + &meta.VersionInterfaces{ + ObjectConvertor: scheme, + MetadataAccessor: accessor, + }, + ); err != nil { + return err + } + } + groupMeta.InterfacesFor = groupMeta.DefaultInterfacesFor + groupMeta.RESTMapper = gmf.newRESTMapper(scheme, externalVersions, groupMeta) + + if err := m.RegisterGroup(*groupMeta); err != nil { + return err + } + return nil +} + +// RegisterAndEnable is provided only to allow this code to get added in multiple steps. +// It's really bad that this is called in init() methods, but supporting this +// temporarily lets us do the change incrementally. +func (gmf *GroupMetaFactory) RegisterAndEnable(registry *registered.APIRegistrationManager, scheme *runtime.Scheme) error { + if err := gmf.Register(registry); err != nil { + return err + } + if err := gmf.Enable(registry, scheme); err != nil { + return err + } + + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/doc.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/doc.go new file mode 100644 index 000000000..b238454b2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package apimachinery contains the generic API machinery code that +// is common to both server and clients. +// This package should never import specific API objects. +package apimachinery // import "k8s.io/apimachinery/pkg/apimachinery" diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD new file mode 100644 index 000000000..25dcd3222 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["registered_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["registered.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go new file mode 100644 index 000000000..f2e32c88c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered.go @@ -0,0 +1,376 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package to keep track of API Versions that can be registered and are enabled in api.Scheme. +package registered + +import ( + "fmt" + "sort" + "strings" + + "github.com/golang/glog" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/apimachinery" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" +) + +// APIRegistrationManager provides the concept of what API groups are enabled. +// +// TODO: currently, it also provides a "registered" concept. But it's wrong to +// have both concepts in the same object. Therefore the "announced" package is +// going to take over the registered concept. After all the install packages +// are switched to using the announce package instead of this package, then we +// can combine the registered/enabled concepts in this object. Simplifying this +// isn't easy right now because there are so many callers of this package. +type APIRegistrationManager struct { + // registeredGroupVersions stores all API group versions for which RegisterGroup is called. + registeredVersions map[schema.GroupVersion]struct{} + + // thirdPartyGroupVersions are API versions which are dynamically + // registered (and unregistered) via API calls to the apiserver + thirdPartyGroupVersions []schema.GroupVersion + + // enabledVersions represents all enabled API versions. It should be a + // subset of registeredVersions. Please call EnableVersions() to add + // enabled versions. + enabledVersions map[schema.GroupVersion]struct{} + + // map of group meta for all groups. + groupMetaMap map[string]*apimachinery.GroupMeta + + // envRequestedVersions represents the versions requested via the + // KUBE_API_VERSIONS environment variable. The install package of each group + // checks this list before add their versions to the latest package and + // Scheme. This list is small and order matters, so represent as a slice + envRequestedVersions []schema.GroupVersion +} + +// NewAPIRegistrationManager constructs a new manager. The argument ought to be +// the value of the KUBE_API_VERSIONS env var, or a value of this which you +// wish to test. +func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) { + m := &APIRegistrationManager{ + registeredVersions: map[schema.GroupVersion]struct{}{}, + thirdPartyGroupVersions: []schema.GroupVersion{}, + enabledVersions: map[schema.GroupVersion]struct{}{}, + groupMetaMap: map[string]*apimachinery.GroupMeta{}, + envRequestedVersions: []schema.GroupVersion{}, + } + + if len(kubeAPIVersions) != 0 { + for _, version := range strings.Split(kubeAPIVersions, ",") { + gv, err := schema.ParseGroupVersion(version) + if err != nil { + return nil, fmt.Errorf("invalid api version: %s in KUBE_API_VERSIONS: %s.", + version, kubeAPIVersions) + } + m.envRequestedVersions = append(m.envRequestedVersions, gv) + } + } + return m, nil +} + +func NewOrDie(kubeAPIVersions string) *APIRegistrationManager { + m, err := NewAPIRegistrationManager(kubeAPIVersions) + if err != nil { + glog.Fatalf("Could not construct version manager: %v (KUBE_API_VERSIONS=%q)", err, kubeAPIVersions) + } + return m +} + +// RegisterVersions adds the given group versions to the list of registered group versions. +func (m *APIRegistrationManager) RegisterVersions(availableVersions []schema.GroupVersion) { + for _, v := range availableVersions { + m.registeredVersions[v] = struct{}{} + } +} + +// RegisterGroup adds the given group to the list of registered groups. +func (m *APIRegistrationManager) RegisterGroup(groupMeta apimachinery.GroupMeta) error { + groupName := groupMeta.GroupVersion.Group + if _, found := m.groupMetaMap[groupName]; found { + return fmt.Errorf("group %q is already registered in groupsMap: %v", groupName, m.groupMetaMap) + } + m.groupMetaMap[groupName] = &groupMeta + return nil +} + +// EnableVersions adds the versions for the given group to the list of enabled versions. +// Note that the caller should call RegisterGroup before calling this method. +// The caller of this function is responsible to add the versions to scheme and RESTMapper. +func (m *APIRegistrationManager) EnableVersions(versions ...schema.GroupVersion) error { + var unregisteredVersions []schema.GroupVersion + for _, v := range versions { + if _, found := m.registeredVersions[v]; !found { + unregisteredVersions = append(unregisteredVersions, v) + } + m.enabledVersions[v] = struct{}{} + } + if len(unregisteredVersions) != 0 { + return fmt.Errorf("Please register versions before enabling them: %v", unregisteredVersions) + } + return nil +} + +// IsAllowedVersion returns if the version is allowed by the KUBE_API_VERSIONS +// environment variable. If the environment variable is empty, then it always +// returns true. +func (m *APIRegistrationManager) IsAllowedVersion(v schema.GroupVersion) bool { + if len(m.envRequestedVersions) == 0 { + return true + } + for _, envGV := range m.envRequestedVersions { + if v == envGV { + return true + } + } + return false +} + +// IsEnabledVersion returns if a version is enabled. +func (m *APIRegistrationManager) IsEnabledVersion(v schema.GroupVersion) bool { + _, found := m.enabledVersions[v] + return found +} + +// EnabledVersions returns all enabled versions. Groups are randomly ordered, but versions within groups +// are priority order from best to worst +func (m *APIRegistrationManager) EnabledVersions() []schema.GroupVersion { + ret := []schema.GroupVersion{} + for _, groupMeta := range m.groupMetaMap { + for _, version := range groupMeta.GroupVersions { + if m.IsEnabledVersion(version) { + ret = append(ret, version) + } + } + } + return ret +} + +// EnabledVersionsForGroup returns all enabled versions for a group in order of best to worst +func (m *APIRegistrationManager) EnabledVersionsForGroup(group string) []schema.GroupVersion { + groupMeta, ok := m.groupMetaMap[group] + if !ok { + return []schema.GroupVersion{} + } + + ret := []schema.GroupVersion{} + for _, version := range groupMeta.GroupVersions { + if m.IsEnabledVersion(version) { + ret = append(ret, version) + } + } + return ret +} + +// Group returns the metadata of a group if the group is registered, otherwise +// an error is returned. +func (m *APIRegistrationManager) Group(group string) (*apimachinery.GroupMeta, error) { + groupMeta, found := m.groupMetaMap[group] + if !found { + return nil, fmt.Errorf("group %v has not been registered", group) + } + groupMetaCopy := *groupMeta + return &groupMetaCopy, nil +} + +// IsRegistered takes a string and determines if it's one of the registered groups +func (m *APIRegistrationManager) IsRegistered(group string) bool { + _, found := m.groupMetaMap[group] + return found +} + +// IsRegisteredVersion returns if a version is registered. +func (m *APIRegistrationManager) IsRegisteredVersion(v schema.GroupVersion) bool { + _, found := m.registeredVersions[v] + return found +} + +// RegisteredGroupVersions returns all registered group versions. +func (m *APIRegistrationManager) RegisteredGroupVersions() []schema.GroupVersion { + ret := []schema.GroupVersion{} + for groupVersion := range m.registeredVersions { + ret = append(ret, groupVersion) + } + return ret +} + +// IsThirdPartyAPIGroupVersion returns true if the api version is a user-registered group/version. +func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv schema.GroupVersion) bool { + for ix := range m.thirdPartyGroupVersions { + if m.thirdPartyGroupVersions[ix] == gv { + return true + } + } + return false +} + +// AddThirdPartyAPIGroupVersions sets the list of third party versions, +// registers them in the API machinery and enables them. +// Skips GroupVersions that are already registered. +// Returns the list of GroupVersions that were skipped. +func (m *APIRegistrationManager) AddThirdPartyAPIGroupVersions(gvs ...schema.GroupVersion) []schema.GroupVersion { + filteredGVs := []schema.GroupVersion{} + skippedGVs := []schema.GroupVersion{} + for ix := range gvs { + if !m.IsRegisteredVersion(gvs[ix]) { + filteredGVs = append(filteredGVs, gvs[ix]) + } else { + glog.V(3).Infof("Skipping %s, because its already registered", gvs[ix].String()) + skippedGVs = append(skippedGVs, gvs[ix]) + } + } + if len(filteredGVs) == 0 { + return skippedGVs + } + m.RegisterVersions(filteredGVs) + m.EnableVersions(filteredGVs...) + m.thirdPartyGroupVersions = append(m.thirdPartyGroupVersions, filteredGVs...) + + return skippedGVs +} + +// InterfacesFor is a union meta.VersionInterfacesFunc func for all registered types +func (m *APIRegistrationManager) InterfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { + groupMeta, err := m.Group(version.Group) + if err != nil { + return nil, err + } + return groupMeta.InterfacesFor(version) +} + +// TODO: This is an expedient function, because we don't check if a Group is +// supported throughout the code base. We will abandon this function and +// checking the error returned by the Group() function. +func (m *APIRegistrationManager) GroupOrDie(group string) *apimachinery.GroupMeta { + groupMeta, found := m.groupMetaMap[group] + if !found { + if group == "" { + panic("The legacy v1 API is not registered.") + } else { + panic(fmt.Sprintf("Group %s is not registered.", group)) + } + } + groupMetaCopy := *groupMeta + return &groupMetaCopy +} + +// RESTMapper returns a union RESTMapper of all known types with priorities chosen in the following order: +// 1. if KUBE_API_VERSIONS is specified, then KUBE_API_VERSIONS in order, OR +// 1. legacy kube group preferred version, extensions preferred version, metrics perferred version, legacy +// kube any version, extensions any version, metrics any version, all other groups alphabetical preferred version, +// all other groups alphabetical. +func (m *APIRegistrationManager) RESTMapper(versionPatterns ...schema.GroupVersion) meta.RESTMapper { + unionMapper := meta.MultiRESTMapper{} + unionedGroups := sets.NewString() + for enabledVersion := range m.enabledVersions { + if !unionedGroups.Has(enabledVersion.Group) { + unionedGroups.Insert(enabledVersion.Group) + groupMeta := m.groupMetaMap[enabledVersion.Group] + unionMapper = append(unionMapper, groupMeta.RESTMapper) + } + } + + if len(versionPatterns) != 0 { + resourcePriority := []schema.GroupVersionResource{} + kindPriority := []schema.GroupVersionKind{} + for _, versionPriority := range versionPatterns { + resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource)) + kindPriority = append(kindPriority, versionPriority.WithKind(meta.AnyKind)) + } + + return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority} + } + + if len(m.envRequestedVersions) != 0 { + resourcePriority := []schema.GroupVersionResource{} + kindPriority := []schema.GroupVersionKind{} + + for _, versionPriority := range m.envRequestedVersions { + resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource)) + kindPriority = append(kindPriority, versionPriority.WithKind(meta.AnyKind)) + } + + return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority} + } + + prioritizedGroups := []string{"", "extensions", "metrics"} + resourcePriority, kindPriority := m.prioritiesForGroups(prioritizedGroups...) + + prioritizedGroupsSet := sets.NewString(prioritizedGroups...) + remainingGroups := sets.String{} + for enabledVersion := range m.enabledVersions { + if !prioritizedGroupsSet.Has(enabledVersion.Group) { + remainingGroups.Insert(enabledVersion.Group) + } + } + + remainingResourcePriority, remainingKindPriority := m.prioritiesForGroups(remainingGroups.List()...) + resourcePriority = append(resourcePriority, remainingResourcePriority...) + kindPriority = append(kindPriority, remainingKindPriority...) + + return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority} +} + +// prioritiesForGroups returns the resource and kind priorities for a PriorityRESTMapper, preferring the preferred version of each group first, +// then any non-preferred version of the group second. +func (m *APIRegistrationManager) prioritiesForGroups(groups ...string) ([]schema.GroupVersionResource, []schema.GroupVersionKind) { + resourcePriority := []schema.GroupVersionResource{} + kindPriority := []schema.GroupVersionKind{} + + for _, group := range groups { + availableVersions := m.EnabledVersionsForGroup(group) + if len(availableVersions) > 0 { + resourcePriority = append(resourcePriority, availableVersions[0].WithResource(meta.AnyResource)) + kindPriority = append(kindPriority, availableVersions[0].WithKind(meta.AnyKind)) + } + } + for _, group := range groups { + resourcePriority = append(resourcePriority, schema.GroupVersionResource{Group: group, Version: meta.AnyVersion, Resource: meta.AnyResource}) + kindPriority = append(kindPriority, schema.GroupVersionKind{Group: group, Version: meta.AnyVersion, Kind: meta.AnyKind}) + } + + return resourcePriority, kindPriority +} + +// AllPreferredGroupVersions returns the preferred versions of all registered +// groups in the form of "group1/version1,group2/version2,..." +func (m *APIRegistrationManager) AllPreferredGroupVersions() string { + if len(m.groupMetaMap) == 0 { + return "" + } + var defaults []string + for _, groupMeta := range m.groupMetaMap { + defaults = append(defaults, groupMeta.GroupVersion.String()) + } + sort.Strings(defaults) + return strings.Join(defaults, ",") +} + +// ValidateEnvRequestedVersions returns a list of versions that are requested in +// the KUBE_API_VERSIONS environment variable, but not enabled. +func (m *APIRegistrationManager) ValidateEnvRequestedVersions() []schema.GroupVersion { + var missingVersions []schema.GroupVersion + for _, v := range m.envRequestedVersions { + if _, found := m.enabledVersions[v]; !found { + missingVersions = append(missingVersions, v) + } + } + return missingVersions +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go new file mode 100644 index 000000000..37d54d27f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/registered/registered_test.go @@ -0,0 +1,148 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package registered + +import ( + "testing" + + "k8s.io/apimachinery/pkg/apimachinery" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestAddThirdPartyVersionsBasic(t *testing.T) { + m, err := NewAPIRegistrationManager("") + if err != nil { + t.Fatalf("Unexpected failure to make a manager: %v", err) + } + + registered := []schema.GroupVersion{ + { + Group: "", + Version: "v1", + }, + } + skipped := registered + thirdParty := []schema.GroupVersion{ + { + Group: "company.com", + Version: "v1", + }, + { + Group: "company.com", + Version: "v2", + }, + } + gvs := append(registered, thirdParty...) + + m.RegisterVersions(registered) + wasSkipped := m.AddThirdPartyAPIGroupVersions(gvs...) + if len(wasSkipped) != len(skipped) { + t.Errorf("Expected %v, found %v", skipped, wasSkipped) + } + for ix := range wasSkipped { + found := false + for _, gv := range skipped { + if gv.String() == wasSkipped[ix].String() { + found = true + break + } + } + if !found { + t.Errorf("Couldn't find %v in %v", wasSkipped[ix], skipped) + } + } + for _, gv := range thirdParty { + if !m.IsThirdPartyAPIGroupVersion(gv) { + t.Errorf("Expected %v to be third party.", gv) + } + } +} + +func TestAddThirdPartyVersionsMultiple(t *testing.T) { + thirdParty := []schema.GroupVersion{ + { + Group: "company.com", + Version: "v1", + }, + { + Group: "company.com", + Version: "v2", + }, + } + m, err := NewAPIRegistrationManager("") + if err != nil { + t.Fatalf("Unexpected failure to make a manager: %v", err) + } + for _, gv := range thirdParty { + wasSkipped := m.AddThirdPartyAPIGroupVersions(gv) + if len(wasSkipped) != 0 { + t.Errorf("Expected length 0, found %v", wasSkipped) + } + } + for _, gv := range thirdParty { + if !m.IsThirdPartyAPIGroupVersion(gv) { + t.Errorf("Expected %v to be third party.", gv) + } + } +} + +func TestAllPreferredGroupVersions(t *testing.T) { + testCases := []struct { + groupMetas []apimachinery.GroupMeta + expect string + }{ + { + groupMetas: []apimachinery.GroupMeta{ + { + GroupVersion: schema.GroupVersion{Group: "group1", Version: "v1"}, + }, + { + GroupVersion: schema.GroupVersion{Group: "group2", Version: "v2"}, + }, + { + GroupVersion: schema.GroupVersion{Group: "", Version: "v1"}, + }, + }, + expect: "group1/v1,group2/v2,v1", + }, + { + groupMetas: []apimachinery.GroupMeta{ + { + GroupVersion: schema.GroupVersion{Group: "", Version: "v1"}, + }, + }, + expect: "v1", + }, + { + groupMetas: []apimachinery.GroupMeta{}, + expect: "", + }, + } + for _, testCase := range testCases { + m, err := NewAPIRegistrationManager("") + if err != nil { + t.Fatalf("Unexpected failure to make a manager: %v", err) + } + for _, groupMeta := range testCase.groupMetas { + m.RegisterGroup(groupMeta) + } + output := m.AllPreferredGroupVersions() + if testCase.expect != output { + t.Errorf("Error. expect: %s, got: %s", testCase.expect, output) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/types.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/types.go new file mode 100644 index 000000000..213e34bc0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/types.go @@ -0,0 +1,87 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apimachinery + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupMeta stores the metadata of a group. +type GroupMeta struct { + // GroupVersion represents the preferred version of the group. + GroupVersion schema.GroupVersion + + // GroupVersions is Group + all versions in that group. + GroupVersions []schema.GroupVersion + + // SelfLinker can set or get the SelfLink field of all API types. + // TODO: when versioning changes, make this part of each API definition. + // TODO(lavalamp): Combine SelfLinker & ResourceVersioner interfaces, force all uses + // to go through the InterfacesFor method below. + SelfLinker runtime.SelfLinker + + // RESTMapper provides the default mapping between REST paths and the objects declared in api.Scheme and all known + // versions. + RESTMapper meta.RESTMapper + + // InterfacesFor returns the default Codec and ResourceVersioner for a given version + // string, or an error if the version is not known. + // TODO: make this stop being a func pointer and always use the default + // function provided below once every place that populates this field has been changed. + InterfacesFor func(version schema.GroupVersion) (*meta.VersionInterfaces, error) + + // InterfacesByVersion stores the per-version interfaces. + InterfacesByVersion map[schema.GroupVersion]*meta.VersionInterfaces +} + +// DefaultInterfacesFor returns the default Codec and ResourceVersioner for a given version +// string, or an error if the version is not known. +// TODO: Remove the "Default" prefix. +func (gm *GroupMeta) DefaultInterfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { + if v, ok := gm.InterfacesByVersion[version]; ok { + return v, nil + } + return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, gm.GroupVersions) +} + +// AddVersionInterfaces adds the given version to the group. Only call during +// init, after that GroupMeta objects should be immutable. Not thread safe. +// (If you use this, be sure to set .InterfacesFor = .DefaultInterfacesFor) +// TODO: remove the "Interfaces" suffix and make this also maintain the +// .GroupVersions member. +func (gm *GroupMeta) AddVersionInterfaces(version schema.GroupVersion, interfaces *meta.VersionInterfaces) error { + if e, a := gm.GroupVersion.Group, version.Group; a != e { + return fmt.Errorf("got a version in group %v, but am in group %v", a, e) + } + if gm.InterfacesByVersion == nil { + gm.InterfacesByVersion = make(map[schema.GroupVersion]*meta.VersionInterfaces) + } + gm.InterfacesByVersion[version] = interfaces + + // TODO: refactor to make the below error not possible, this function + // should *set* GroupVersions rather than depend on it. + for _, v := range gm.GroupVersions { + if v == version { + return nil + } + } + return fmt.Errorf("added a version interface without the corresponding version %v being in the list %#v", version, gm.GroupVersions) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apimachinery/types_test.go b/vendor/k8s.io/apimachinery/pkg/apimachinery/types_test.go new file mode 100644 index 000000000..ca858788e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apimachinery/types_test.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apimachinery + +import ( + "testing" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestAdd(t *testing.T) { + gm := GroupMeta{ + GroupVersion: schema.GroupVersion{ + Group: "test", + Version: "v1", + }, + GroupVersions: []schema.GroupVersion{{Group: "test", Version: "v1"}}, + } + + gm.AddVersionInterfaces(schema.GroupVersion{Group: "test", Version: "v1"}, nil) + if e, a := 1, len(gm.InterfacesByVersion); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + // GroupVersions is unchanged + if e, a := 1, len(gm.GroupVersions); e != a { + t.Errorf("expected %v, got %v", e, a) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD new file mode 100644 index 000000000..adbc06f11 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD @@ -0,0 +1,41 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["register_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "register.go", + "types.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go new file mode 100644 index 000000000..eff9a7e12 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/conversion.go @@ -0,0 +1,73 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internalversion + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +func Convert_internalversion_ListOptions_To_v1_ListOptions(in *ListOptions, out *metav1.ListOptions, s conversion.Scope) error { + if err := metav1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + if err := metav1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + out.IncludeUninitialized = in.IncludeUninitialized + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = in.TimeoutSeconds + out.Watch = in.Watch + return nil +} + +func Convert_v1_ListOptions_To_internalversion_ListOptions(in *metav1.ListOptions, out *ListOptions, s conversion.Scope) error { + if err := metav1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + if err := metav1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + out.IncludeUninitialized = in.IncludeUninitialized + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = in.TimeoutSeconds + out.Watch = in.Watch + return nil +} + +func Convert_map_to_v1_LabelSelector(in *map[string]string, out *metav1.LabelSelector, s conversion.Scope) error { + if in == nil { + return nil + } + out = new(metav1.LabelSelector) + for labelKey, labelValue := range *in { + metav1.AddLabelToSelector(out, labelKey, labelValue) + } + return nil +} + +func Convert_v1_LabelSelector_to_map(in *metav1.LabelSelector, out *map[string]string, s conversion.Scope) error { + var err error + *out, err = metav1.LabelSelectorAsMap(in) + if err != nil { + err = field.Invalid(field.NewPath("labelSelector"), *in, fmt.Sprintf("cannot convert to old selector: %v", err)) + } + return err +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go new file mode 100644 index 000000000..38ddc80df --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register.go @@ -0,0 +1,100 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internalversion + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1alpha1 "k8s.io/apimachinery/pkg/apis/meta/v1alpha1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// GroupName is the group name for this API. +const GroupName = "meta.k8s.io" + +// Scheme is the registry for any type that adheres to the meta API spec. +var scheme = runtime.NewScheme() + +// Copier exposes copying on this scheme. +var Copier runtime.ObjectCopier = scheme + +// Codecs provides access to encoding and decoding for the scheme. +var Codecs = serializer.NewCodecFactory(scheme) + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// ParameterCodec handles versioning of objects that are converted to query parameters. +var ParameterCodec = runtime.NewParameterCodec(scheme) + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// addToGroupVersion registers common meta types into schemas. +func addToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) error { + if err := scheme.AddIgnoredConversionType(&metav1.TypeMeta{}, &metav1.TypeMeta{}); err != nil { + return err + } + scheme.AddConversionFuncs( + metav1.Convert_string_To_labels_Selector, + metav1.Convert_labels_Selector_To_string, + + metav1.Convert_string_To_fields_Selector, + metav1.Convert_fields_Selector_To_string, + + Convert_map_to_v1_LabelSelector, + Convert_v1_LabelSelector_to_map, + + Convert_internalversion_ListOptions_To_v1_ListOptions, + Convert_v1_ListOptions_To_internalversion_ListOptions, + ) + // ListOptions is the only options struct which needs conversion (it exposes labels and fields + // as selectors for convenience). The other types have only a single representation today. + scheme.AddKnownTypes(SchemeGroupVersion, + &ListOptions{}, + &metav1.GetOptions{}, + &metav1.ExportOptions{}, + &metav1.DeleteOptions{}, + ) + scheme.AddKnownTypes(SchemeGroupVersion, + &metav1alpha1.Table{}, + &metav1alpha1.TableOptions{}, + &metav1alpha1.PartialObjectMetadata{}, + &metav1alpha1.PartialObjectMetadataList{}, + ) + scheme.AddKnownTypes(metav1alpha1.SchemeGroupVersion, + &metav1alpha1.Table{}, + &metav1alpha1.TableOptions{}, + &metav1alpha1.PartialObjectMetadata{}, + &metav1alpha1.PartialObjectMetadataList{}, + ) + // Allow delete options to be decoded across all version in this scheme (we may want to be more clever than this) + scheme.AddUnversionedTypes(SchemeGroupVersion, &metav1.DeleteOptions{}) + metav1.AddToGroupVersion(scheme, metav1.SchemeGroupVersion) + return nil +} + +// Unlike other API groups, meta internal knows about all meta external versions, but keeps +// the logic for conversion private. +func init() { + if err := addToGroupVersion(scheme, SchemeGroupVersion); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register_test.go new file mode 100644 index 000000000..8a6fefa41 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/register_test.go @@ -0,0 +1,89 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internalversion + +import ( + "net/url" + "reflect" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/diff" +) + +func TestListOptions(t *testing.T) { + // verify round trip conversion + ten := int64(10) + in := &metav1.ListOptions{ + LabelSelector: "a=1", + FieldSelector: "b=1", + ResourceVersion: "10", + TimeoutSeconds: &ten, + Watch: true, + } + out := &ListOptions{} + if err := scheme.Convert(in, out, nil); err != nil { + t.Fatal(err) + } + actual := &metav1.ListOptions{} + if err := scheme.Convert(out, actual, nil); err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(in, actual) { + t.Errorf("unexpected: %s", diff.ObjectReflectDiff(in, actual)) + } + + // verify failing conversion + for i, failingObject := range []*metav1.ListOptions{ + {LabelSelector: "a!!!"}, + {FieldSelector: "a!!!"}, + } { + out = &ListOptions{} + if err := scheme.Convert(failingObject, out, nil); err == nil { + t.Errorf("%d: unexpected conversion: %#v", i, out) + } + } + + // verify kind registration + if gvk, unversioned, err := scheme.ObjectKind(in); err != nil || unversioned || gvk != metav1.SchemeGroupVersion.WithKind("ListOptions") { + t.Errorf("unexpected: %v %v %v", gvk, unversioned, err) + } + if gvk, unversioned, err := scheme.ObjectKind(out); err != nil || unversioned || gvk != SchemeGroupVersion.WithKind("ListOptions") { + t.Errorf("unexpected: %v %v %v", gvk, unversioned, err) + } + + actual = &metav1.ListOptions{} + if err := ParameterCodec.DecodeParameters(url.Values{"watch": []string{"1"}}, metav1.SchemeGroupVersion, actual); err != nil { + t.Fatal(err) + } + if !actual.Watch { + t.Errorf("unexpected watch decode: %#v", actual) + } + + // check ParameterCodec + query, err := ParameterCodec.EncodeParameters(in, metav1.SchemeGroupVersion) + if err != nil { + t.Fatal(err) + } + actual = &metav1.ListOptions{} + if err := ParameterCodec.DecodeParameters(query, metav1.SchemeGroupVersion, actual); err != nil { + t.Fatal(err) + } + if !reflect.DeepEqual(in, actual) { + t.Errorf("unexpected: %s", diff.ObjectReflectDiff(in, actual)) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go new file mode 100644 index 000000000..0aa4188df --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/types.go @@ -0,0 +1,48 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internalversion + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" +) + +// ListOptions is the query options to a standard REST list call, and has future support for +// watch calls. +type ListOptions struct { + metav1.TypeMeta + + // A selector based on labels + LabelSelector labels.Selector + // A selector based on fields + FieldSelector fields.Selector + // If true, partially initialized resources are included in the response. + // +optional + IncludeUninitialized bool + // If true, watch for changes to this list + Watch bool + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + // When specified for list: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + ResourceVersion string + // Timeout for the list/watch call. + TimeoutSeconds *int64 +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD new file mode 100644 index 000000000..2ce980fa7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD @@ -0,0 +1,71 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "duration_test.go", + "group_version_test.go", + "helpers_test.go", + "labels_test.go", + "micro_time_test.go", + "time_test.go", + "types_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "doc.go", + "duration.go", + "generated.pb.go", + "group_version.go", + "helpers.go", + "labels.go", + "meta.go", + "micro_time.go", + "micro_time_proto.go", + "register.go", + "time.go", + "time_proto.go", + "types.go", + "types_swagger_doc_generated.go", + "watch.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/openapi:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS new file mode 100755 index 000000000..381a52509 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS @@ -0,0 +1,33 @@ +reviewers: +- thockin +- smarterclayton +- wojtek-t +- deads2k +- brendandburns +- caesarxuchao +- liggitt +- nikhiljindal +- gmarek +- erictune +- davidopp +- sttts +- quinton-hoole +- kargakis +- luxas +- janetkuo +- justinsb +- ncdc +- timothysc +- soltysh +- dims +- madhusudancs +- hongchaodeng +- krousey +- mml +- mbohlool +- david-mcmahon +- therc +- mqliang +- kevin-wangzefeng +- jianhuiz +- feihujiang diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go new file mode 100644 index 000000000..b9a8fd02d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go @@ -0,0 +1,264 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + "strconv" + "strings" + + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" +) + +func AddConversionFuncs(scheme *runtime.Scheme) error { + return scheme.AddConversionFuncs( + Convert_v1_TypeMeta_To_v1_TypeMeta, + + Convert_unversioned_ListMeta_To_unversioned_ListMeta, + + Convert_intstr_IntOrString_To_intstr_IntOrString, + + Convert_unversioned_Time_To_unversioned_Time, + + Convert_Slice_string_To_unversioned_Time, + + Convert_resource_Quantity_To_resource_Quantity, + + Convert_string_To_labels_Selector, + Convert_labels_Selector_To_string, + + Convert_string_To_fields_Selector, + Convert_fields_Selector_To_string, + + Convert_Pointer_bool_To_bool, + Convert_bool_To_Pointer_bool, + + Convert_Pointer_string_To_string, + Convert_string_To_Pointer_string, + + Convert_Pointer_int64_To_int, + Convert_int_To_Pointer_int64, + + Convert_Pointer_int32_To_int32, + Convert_int32_To_Pointer_int32, + + Convert_Pointer_float64_To_float64, + Convert_float64_To_Pointer_float64, + + Convert_map_to_unversioned_LabelSelector, + Convert_unversioned_LabelSelector_to_map, + + Convert_Slice_string_To_Slice_int32, + ) +} + +func Convert_Pointer_float64_To_float64(in **float64, out *float64, s conversion.Scope) error { + if *in == nil { + *out = 0 + return nil + } + *out = float64(**in) + return nil +} + +func Convert_float64_To_Pointer_float64(in *float64, out **float64, s conversion.Scope) error { + temp := float64(*in) + *out = &temp + return nil +} + +func Convert_Pointer_int32_To_int32(in **int32, out *int32, s conversion.Scope) error { + if *in == nil { + *out = 0 + return nil + } + *out = int32(**in) + return nil +} + +func Convert_int32_To_Pointer_int32(in *int32, out **int32, s conversion.Scope) error { + temp := int32(*in) + *out = &temp + return nil +} + +func Convert_Pointer_int64_To_int(in **int64, out *int, s conversion.Scope) error { + if *in == nil { + *out = 0 + return nil + } + *out = int(**in) + return nil +} + +func Convert_int_To_Pointer_int64(in *int, out **int64, s conversion.Scope) error { + temp := int64(*in) + *out = &temp + return nil +} + +func Convert_Pointer_string_To_string(in **string, out *string, s conversion.Scope) error { + if *in == nil { + *out = "" + return nil + } + *out = **in + return nil +} + +func Convert_string_To_Pointer_string(in *string, out **string, s conversion.Scope) error { + if in == nil { + stringVar := "" + *out = &stringVar + return nil + } + *out = in + return nil +} + +func Convert_Pointer_bool_To_bool(in **bool, out *bool, s conversion.Scope) error { + if *in == nil { + *out = false + return nil + } + *out = **in + return nil +} + +func Convert_bool_To_Pointer_bool(in *bool, out **bool, s conversion.Scope) error { + if in == nil { + boolVar := false + *out = &boolVar + return nil + } + *out = in + return nil +} + +// +k8s:conversion-fn=drop +func Convert_v1_TypeMeta_To_v1_TypeMeta(in, out *TypeMeta, s conversion.Scope) error { + // These values are explicitly not copied + //out.APIVersion = in.APIVersion + //out.Kind = in.Kind + return nil +} + +// +k8s:conversion-fn=copy-only +func Convert_unversioned_ListMeta_To_unversioned_ListMeta(in, out *ListMeta, s conversion.Scope) error { + *out = *in + return nil +} + +// +k8s:conversion-fn=copy-only +func Convert_intstr_IntOrString_To_intstr_IntOrString(in, out *intstr.IntOrString, s conversion.Scope) error { + *out = *in + return nil +} + +// +k8s:conversion-fn=copy-only +func Convert_unversioned_Time_To_unversioned_Time(in *Time, out *Time, s conversion.Scope) error { + // Cannot deep copy these, because time.Time has unexported fields. + *out = *in + return nil +} + +// Convert_Slice_string_To_unversioned_Time allows converting a URL query parameter value +func Convert_Slice_string_To_unversioned_Time(input *[]string, out *Time, s conversion.Scope) error { + str := "" + if len(*input) > 0 { + str = (*input)[0] + } + return out.UnmarshalQueryParameter(str) +} + +func Convert_string_To_labels_Selector(in *string, out *labels.Selector, s conversion.Scope) error { + selector, err := labels.Parse(*in) + if err != nil { + return err + } + *out = selector + return nil +} + +func Convert_string_To_fields_Selector(in *string, out *fields.Selector, s conversion.Scope) error { + selector, err := fields.ParseSelector(*in) + if err != nil { + return err + } + *out = selector + return nil +} + +func Convert_labels_Selector_To_string(in *labels.Selector, out *string, s conversion.Scope) error { + if *in == nil { + return nil + } + *out = (*in).String() + return nil +} + +func Convert_fields_Selector_To_string(in *fields.Selector, out *string, s conversion.Scope) error { + if *in == nil { + return nil + } + *out = (*in).String() + return nil +} + +// +k8s:conversion-fn=copy-only +func Convert_resource_Quantity_To_resource_Quantity(in *resource.Quantity, out *resource.Quantity, s conversion.Scope) error { + *out = *in + return nil +} + +func Convert_map_to_unversioned_LabelSelector(in *map[string]string, out *LabelSelector, s conversion.Scope) error { + if in == nil { + return nil + } + out = new(LabelSelector) + for labelKey, labelValue := range *in { + AddLabelToSelector(out, labelKey, labelValue) + } + return nil +} + +func Convert_unversioned_LabelSelector_to_map(in *LabelSelector, out *map[string]string, s conversion.Scope) error { + var err error + *out, err = LabelSelectorAsMap(in) + return err +} + +// Convert_Slice_string_To_Slice_int32 converts multiple query parameters or +// a single query parameter with a comma delimited value to multiple int32. +// This is used for port forwarding which needs the ports as int32. +func Convert_Slice_string_To_Slice_int32(in *[]string, out *[]int32, s conversion.Scope) error { + for _, s := range *in { + for _, v := range strings.Split(s, ",") { + x, err := strconv.ParseUint(v, 10, 16) + if err != nil { + return fmt.Errorf("cannot convert to []int32: %v", err) + } + *out = append(*out, int32(x)) + } + } + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go new file mode 100644 index 000000000..52273240f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:openapi-gen=true +// +k8s:defaulter-gen=TypeMeta + +// +groupName=meta.k8s.io +package v1 diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go new file mode 100644 index 000000000..fea458dfb --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration.go @@ -0,0 +1,47 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "time" +) + +// Duration is a wrapper around time.Duration which supports correct +// marshaling to YAML and JSON. In particular, it marshals into strings, which +// can be used as map keys in json. +type Duration struct { + time.Duration `protobuf:"varint,1,opt,name=duration,casttype=time.Duration"` +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (d *Duration) UnmarshalJSON(b []byte) error { + var str string + json.Unmarshal(b, &str) + + pd, err := time.ParseDuration(str) + if err != nil { + return err + } + d.Duration = pd + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (d Duration) MarshalJSON() ([]byte, error) { + return json.Marshal(d.Duration.String()) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration_test.go new file mode 100644 index 000000000..7230cb28a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/duration_test.go @@ -0,0 +1,153 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "testing" + "time" + + "github.com/ghodss/yaml" +) + +type DurationHolder struct { + D Duration `json:"d"` +} + +func TestDurationMarshalYAML(t *testing.T) { + cases := []struct { + input Duration + result string + }{ + {Duration{5 * time.Second}, "d: 5s\n"}, + {Duration{2 * time.Minute}, "d: 2m0s\n"}, + {Duration{time.Hour + 3*time.Millisecond}, "d: 1h0m0.003s\n"}, + } + + for _, c := range cases { + input := DurationHolder{c.input} + result, err := yaml.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input: %q: %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input: %q: expected %q, got %q", input, c.result, string(result)) + } + } +} + +func TestDurationUnmarshalYAML(t *testing.T) { + cases := []struct { + input string + result Duration + }{ + {"d: 0s\n", Duration{}}, + {"d: 5s\n", Duration{5 * time.Second}}, + {"d: 2m0s\n", Duration{2 * time.Minute}}, + {"d: 1h0m0.003s\n", Duration{time.Hour + 3*time.Millisecond}}, + + // Units with zero values can optionally be dropped + {"d: 2m\n", Duration{2 * time.Minute}}, + {"d: 1h0.003s\n", Duration{time.Hour + 3*time.Millisecond}}, + } + + for _, c := range cases { + var result DurationHolder + if err := yaml.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input %q: %v", c.input, err) + } + if result.D != c.result { + t.Errorf("Failed to unmarshal input %q: expected %q, got %q", c.input, c.result, result) + } + } +} + +func TestDurationMarshalJSON(t *testing.T) { + cases := []struct { + input Duration + result string + }{ + {Duration{5 * time.Second}, `{"d":"5s"}`}, + {Duration{2 * time.Minute}, `{"d":"2m0s"}`}, + {Duration{time.Hour + 3*time.Millisecond}, `{"d":"1h0m0.003s"}`}, + } + + for _, c := range cases { + input := DurationHolder{c.input} + result, err := json.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input: %q: %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input: %q: expected %q, got %q", input, c.result, string(result)) + } + } +} + +func TestDurationUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result Duration + }{ + {`{"d":"0s"}`, Duration{}}, + {`{"d":"5s"}`, Duration{5 * time.Second}}, + {`{"d":"2m0s"}`, Duration{2 * time.Minute}}, + {`{"d":"1h0m0.003s"}`, Duration{time.Hour + 3*time.Millisecond}}, + + // Units with zero values can optionally be dropped + {`{"d":"2m"}`, Duration{2 * time.Minute}}, + {`{"d":"1h0.003s"}`, Duration{time.Hour + 3*time.Millisecond}}, + } + + for _, c := range cases { + var result DurationHolder + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input %q: %v", c.input, err) + } + if result.D != c.result { + t.Errorf("Failed to unmarshal input %q: expected %q, got %q", c.input, c.result, result) + } + } +} + +func TestDurationMarshalJSONUnmarshalYAML(t *testing.T) { + cases := []struct { + input Duration + }{ + {Duration{}}, + {Duration{5 * time.Second}}, + {Duration{2 * time.Minute}}, + {Duration{time.Hour + 3*time.Millisecond}}, + } + + for i, c := range cases { + input := DurationHolder{c.input} + jsonMarshalled, err := json.Marshal(&input) + if err != nil { + t.Errorf("%d-1: Failed to marshal input: '%v': %v", i, input, err) + } + + var result DurationHolder + if err := yaml.Unmarshal(jsonMarshalled, &result); err != nil { + t.Errorf("%d-2: Failed to unmarshal '%+v': %v", i, string(jsonMarshalled), err) + } + + if input.D != result.D { + t.Errorf("%d-4: Failed to marshal input '%#v': got %#v", i, input, result) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go new file mode 100644 index 000000000..9e2b289da --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go @@ -0,0 +1,7516 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto + + It has these top-level messages: + APIGroup + APIGroupList + APIResource + APIResourceList + APIVersions + DeleteOptions + Duration + ExportOptions + GetOptions + GroupKind + GroupResource + GroupVersion + GroupVersionForDiscovery + GroupVersionKind + GroupVersionResource + Initializer + Initializers + LabelSelector + LabelSelectorRequirement + ListMeta + ListOptions + MicroTime + ObjectMeta + OwnerReference + Preconditions + RootPaths + ServerAddressByClientCIDR + Status + StatusCause + StatusDetails + Time + Timestamp + TypeMeta + Verbs + WatchEvent +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import time "time" +import k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *APIGroup) Reset() { *m = APIGroup{} } +func (*APIGroup) ProtoMessage() {} +func (*APIGroup) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *APIGroupList) Reset() { *m = APIGroupList{} } +func (*APIGroupList) ProtoMessage() {} +func (*APIGroupList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *APIResource) Reset() { *m = APIResource{} } +func (*APIResource) ProtoMessage() {} +func (*APIResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *APIResourceList) Reset() { *m = APIResourceList{} } +func (*APIResourceList) ProtoMessage() {} +func (*APIResourceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *APIVersions) Reset() { *m = APIVersions{} } +func (*APIVersions) ProtoMessage() {} +func (*APIVersions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *DeleteOptions) Reset() { *m = DeleteOptions{} } +func (*DeleteOptions) ProtoMessage() {} +func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *Duration) Reset() { *m = Duration{} } +func (*Duration) ProtoMessage() {} +func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *ExportOptions) Reset() { *m = ExportOptions{} } +func (*ExportOptions) ProtoMessage() {} +func (*ExportOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *GetOptions) Reset() { *m = GetOptions{} } +func (*GetOptions) ProtoMessage() {} +func (*GetOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *GroupKind) Reset() { *m = GroupKind{} } +func (*GroupKind) ProtoMessage() {} +func (*GroupKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *GroupResource) Reset() { *m = GroupResource{} } +func (*GroupResource) ProtoMessage() {} +func (*GroupResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *GroupVersion) Reset() { *m = GroupVersion{} } +func (*GroupVersion) ProtoMessage() {} +func (*GroupVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *GroupVersionForDiscovery) Reset() { *m = GroupVersionForDiscovery{} } +func (*GroupVersionForDiscovery) ProtoMessage() {} +func (*GroupVersionForDiscovery) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{12} +} + +func (m *GroupVersionKind) Reset() { *m = GroupVersionKind{} } +func (*GroupVersionKind) ProtoMessage() {} +func (*GroupVersionKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *GroupVersionResource) Reset() { *m = GroupVersionResource{} } +func (*GroupVersionResource) ProtoMessage() {} +func (*GroupVersionResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *Initializer) Reset() { *m = Initializer{} } +func (*Initializer) ProtoMessage() {} +func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *Initializers) Reset() { *m = Initializers{} } +func (*Initializers) ProtoMessage() {} +func (*Initializers) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *LabelSelector) Reset() { *m = LabelSelector{} } +func (*LabelSelector) ProtoMessage() {} +func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } +func (*LabelSelectorRequirement) ProtoMessage() {} +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{18} +} + +func (m *ListMeta) Reset() { *m = ListMeta{} } +func (*ListMeta) ProtoMessage() {} +func (*ListMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *ListOptions) Reset() { *m = ListOptions{} } +func (*ListOptions) ProtoMessage() {} +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *MicroTime) Reset() { *m = MicroTime{} } +func (*MicroTime) ProtoMessage() {} +func (*MicroTime) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } +func (*ObjectMeta) ProtoMessage() {} +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *OwnerReference) Reset() { *m = OwnerReference{} } +func (*OwnerReference) ProtoMessage() {} +func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *Preconditions) Reset() { *m = Preconditions{} } +func (*Preconditions) ProtoMessage() {} +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *RootPaths) Reset() { *m = RootPaths{} } +func (*RootPaths) ProtoMessage() {} +func (*RootPaths) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *ServerAddressByClientCIDR) Reset() { *m = ServerAddressByClientCIDR{} } +func (*ServerAddressByClientCIDR) ProtoMessage() {} +func (*ServerAddressByClientCIDR) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{26} +} + +func (m *Status) Reset() { *m = Status{} } +func (*Status) ProtoMessage() {} +func (*Status) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *StatusCause) Reset() { *m = StatusCause{} } +func (*StatusCause) ProtoMessage() {} +func (*StatusCause) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } + +func (m *StatusDetails) Reset() { *m = StatusDetails{} } +func (*StatusDetails) ProtoMessage() {} +func (*StatusDetails) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *Time) Reset() { *m = Time{} } +func (*Time) ProtoMessage() {} +func (*Time) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *Timestamp) Reset() { *m = Timestamp{} } +func (*Timestamp) ProtoMessage() {} +func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } + +func (m *TypeMeta) Reset() { *m = TypeMeta{} } +func (*TypeMeta) ProtoMessage() {} +func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *Verbs) Reset() { *m = Verbs{} } +func (*Verbs) ProtoMessage() {} +func (*Verbs) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } + +func (m *WatchEvent) Reset() { *m = WatchEvent{} } +func (*WatchEvent) ProtoMessage() {} +func (*WatchEvent) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } + +func init() { + proto.RegisterType((*APIGroup)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIGroup") + proto.RegisterType((*APIGroupList)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIGroupList") + proto.RegisterType((*APIResource)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIResource") + proto.RegisterType((*APIResourceList)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIResourceList") + proto.RegisterType((*APIVersions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.APIVersions") + proto.RegisterType((*DeleteOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions") + proto.RegisterType((*Duration)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Duration") + proto.RegisterType((*ExportOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ExportOptions") + proto.RegisterType((*GetOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GetOptions") + proto.RegisterType((*GroupKind)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind") + proto.RegisterType((*GroupResource)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupResource") + proto.RegisterType((*GroupVersion)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersion") + proto.RegisterType((*GroupVersionForDiscovery)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery") + proto.RegisterType((*GroupVersionKind)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionKind") + proto.RegisterType((*GroupVersionResource)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupVersionResource") + proto.RegisterType((*Initializer)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Initializer") + proto.RegisterType((*Initializers)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Initializers") + proto.RegisterType((*LabelSelector)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector") + proto.RegisterType((*LabelSelectorRequirement)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement") + proto.RegisterType((*ListMeta)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta") + proto.RegisterType((*ListOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ListOptions") + proto.RegisterType((*MicroTime)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime") + proto.RegisterType((*ObjectMeta)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta") + proto.RegisterType((*OwnerReference)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference") + proto.RegisterType((*Preconditions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Preconditions") + proto.RegisterType((*RootPaths)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.RootPaths") + proto.RegisterType((*ServerAddressByClientCIDR)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR") + proto.RegisterType((*Status)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Status") + proto.RegisterType((*StatusCause)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.StatusCause") + proto.RegisterType((*StatusDetails)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.StatusDetails") + proto.RegisterType((*Time)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Time") + proto.RegisterType((*Timestamp)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Timestamp") + proto.RegisterType((*TypeMeta)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.TypeMeta") + proto.RegisterType((*Verbs)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Verbs") + proto.RegisterType((*WatchEvent)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.WatchEvent") +} +func (m *APIGroup) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *APIGroup) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if len(m.Versions) > 0 { + for _, msg := range m.Versions { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PreferredVersion.Size())) + n1, err := m.PreferredVersion.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, msg := range m.ServerAddressByClientCIDRs { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *APIGroupList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *APIGroupList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Groups) > 0 { + for _, msg := range m.Groups { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *APIResource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *APIResource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x10 + i++ + if m.Namespaced { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + if m.Verbs != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Verbs.Size())) + n2, err := m.Verbs.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + } + if len(m.ShortNames) > 0 { + for _, s := range m.ShortNames { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SingularName))) + i += copy(dAtA[i:], m.SingularName) + if len(m.Categories) > 0 { + for _, s := range m.Categories { + dAtA[i] = 0x3a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *APIResourceList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *APIResourceList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.GroupVersion))) + i += copy(dAtA[i:], m.GroupVersion) + if len(m.APIResources) > 0 { + for _, msg := range m.APIResources { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *APIVersions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *APIVersions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Versions) > 0 { + for _, s := range m.Versions { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, msg := range m.ServerAddressByClientCIDRs { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DeleteOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeleteOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.GracePeriodSeconds != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.GracePeriodSeconds)) + } + if m.Preconditions != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Preconditions.Size())) + n3, err := m.Preconditions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + } + if m.OrphanDependents != nil { + dAtA[i] = 0x18 + i++ + if *m.OrphanDependents { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.PropagationPolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.PropagationPolicy))) + i += copy(dAtA[i:], *m.PropagationPolicy) + } + return i, nil +} + +func (m *Duration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Duration) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Duration)) + return i, nil +} + +func (m *ExportOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExportOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Export { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x10 + i++ + if m.Exact { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *GetOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + dAtA[i] = 0x10 + i++ + if m.IncludeUninitialized { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *GroupKind) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GroupKind) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + return i, nil +} + +func (m *GroupResource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GroupResource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource))) + i += copy(dAtA[i:], m.Resource) + return i, nil +} + +func (m *GroupVersion) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GroupVersion) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) + return i, nil +} + +func (m *GroupVersionForDiscovery) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GroupVersionForDiscovery) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.GroupVersion))) + i += copy(dAtA[i:], m.GroupVersion) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) + return i, nil +} + +func (m *GroupVersionKind) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GroupVersionKind) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + return i, nil +} + +func (m *GroupVersionResource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GroupVersionResource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource))) + i += copy(dAtA[i:], m.Resource) + return i, nil +} + +func (m *Initializer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Initializer) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *Initializers) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Initializers) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Pending) > 0 { + for _, msg := range m.Pending { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Result != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Result.Size())) + n4, err := m.Result.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + return i, nil +} + +func (m *LabelSelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LabelSelector) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchLabels) > 0 { + keysForMatchLabels := make([]string, 0, len(m.MatchLabels)) + for k := range m.MatchLabels { + keysForMatchLabels = append(keysForMatchLabels, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMatchLabels) + for _, k := range keysForMatchLabels { + dAtA[i] = 0xa + i++ + v := m.MatchLabels[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LabelSelectorRequirement) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LabelSelectorRequirement) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator))) + i += copy(dAtA[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *ListMeta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListMeta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SelfLink))) + i += copy(dAtA[i:], m.SelfLink) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + return i, nil +} + +func (m *ListOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.LabelSelector))) + i += copy(dAtA[i:], m.LabelSelector) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FieldSelector))) + i += copy(dAtA[i:], m.FieldSelector) + dAtA[i] = 0x18 + i++ + if m.Watch { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + if m.TimeoutSeconds != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds)) + } + dAtA[i] = 0x30 + i++ + if m.IncludeUninitialized { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *ObjectMeta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMeta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.GenerateName))) + i += copy(dAtA[i:], m.GenerateName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SelfLink))) + i += copy(dAtA[i:], m.SelfLink) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Generation)) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CreationTimestamp.Size())) + n5, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if m.DeletionTimestamp != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DeletionTimestamp.Size())) + n6, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + if m.DeletionGracePeriodSeconds != nil { + dAtA[i] = 0x50 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + keysForLabels := make([]string, 0, len(m.Labels)) + for k := range m.Labels { + keysForLabels = append(keysForLabels, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + for _, k := range keysForLabels { + dAtA[i] = 0x5a + i++ + v := m.Labels[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.Annotations) > 0 { + keysForAnnotations := make([]string, 0, len(m.Annotations)) + for k := range m.Annotations { + keysForAnnotations = append(keysForAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + for _, k := range keysForAnnotations { + dAtA[i] = 0x62 + i++ + v := m.Annotations[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.OwnerReferences) > 0 { + for _, msg := range m.OwnerReferences { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + dAtA[i] = 0x72 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClusterName))) + i += copy(dAtA[i:], m.ClusterName) + if m.Initializers != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Initializers.Size())) + n7, err := m.Initializers.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + return i, nil +} + +func (m *OwnerReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *OwnerReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + if m.Controller != nil { + dAtA[i] = 0x30 + i++ + if *m.Controller { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.BlockOwnerDeletion != nil { + dAtA[i] = 0x38 + i++ + if *m.BlockOwnerDeletion { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *Preconditions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Preconditions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.UID != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.UID))) + i += copy(dAtA[i:], *m.UID) + } + return i, nil +} + +func (m *RootPaths) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RootPaths) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Paths) > 0 { + for _, s := range m.Paths { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *ServerAddressByClientCIDR) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServerAddressByClientCIDR) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClientCIDR))) + i += copy(dAtA[i:], m.ClientCIDR) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServerAddress))) + i += copy(dAtA[i:], m.ServerAddress) + return i, nil +} + +func (m *Status) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Status) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n8, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + if m.Details != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Details.Size())) + n9, err := m.Details.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Code)) + return i, nil +} + +func (m *StatusCause) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatusCause) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Field))) + i += copy(dAtA[i:], m.Field) + return i, nil +} + +func (m *StatusDetails) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatusDetails) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + if len(m.Causes) > 0 { + for _, msg := range m.Causes { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RetryAfterSeconds)) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + return i, nil +} + +func (m *Timestamp) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Timestamp) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Seconds)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Nanos)) + return i, nil +} + +func (m *TypeMeta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TypeMeta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + return i, nil +} + +func (m Verbs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m Verbs) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *WatchEvent) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *WatchEvent) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n10, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *APIGroup) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Versions) > 0 { + for _, e := range m.Versions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.PreferredVersion.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, e := range m.ServerAddressByClientCIDRs { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIGroupList) Size() (n int) { + var l int + _ = l + if len(m.Groups) > 0 { + for _, e := range m.Groups { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIResource) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + if m.Verbs != nil { + l = m.Verbs.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.ShortNames) > 0 { + for _, s := range m.ShortNames { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.SingularName) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Categories) > 0 { + for _, s := range m.Categories { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIResourceList) Size() (n int) { + var l int + _ = l + l = len(m.GroupVersion) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.APIResources) > 0 { + for _, e := range m.APIResources { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIVersions) Size() (n int) { + var l int + _ = l + if len(m.Versions) > 0 { + for _, s := range m.Versions { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, e := range m.ServerAddressByClientCIDRs { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DeleteOptions) Size() (n int) { + var l int + _ = l + if m.GracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.GracePeriodSeconds)) + } + if m.Preconditions != nil { + l = m.Preconditions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.OrphanDependents != nil { + n += 2 + } + if m.PropagationPolicy != nil { + l = len(*m.PropagationPolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Duration) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Duration)) + return n +} + +func (m *ExportOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + return n +} + +func (m *GetOptions) Size() (n int) { + var l int + _ = l + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *GroupKind) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupResource) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersion) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersionForDiscovery) Size() (n int) { + var l int + _ = l + l = len(m.GroupVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersionKind) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersionResource) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Initializer) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Initializers) Size() (n int) { + var l int + _ = l + if len(m.Pending) > 0 { + for _, e := range m.Pending { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Result != nil { + l = m.Result.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *LabelSelector) Size() (n int) { + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k, v := range m.MatchLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LabelSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ListMeta) Size() (n int) { + var l int + _ = l + l = len(m.SelfLink) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ListOptions) Size() (n int) { + var l int + _ = l + l = len(m.LabelSelector) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldSelector) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + if m.TimeoutSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) + } + n += 2 + return n +} + +func (m *ObjectMeta) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.GenerateName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SelfLink) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Generation)) + l = m.CreationTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.DeletionTimestamp != nil { + l = m.DeletionTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DeletionGracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Annotations) > 0 { + for k, v := range m.Annotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.OwnerReferences) > 0 { + for _, e := range m.OwnerReferences { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ClusterName) + n += 1 + l + sovGenerated(uint64(l)) + if m.Initializers != nil { + l = m.Initializers.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *OwnerReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + if m.Controller != nil { + n += 2 + } + if m.BlockOwnerDeletion != nil { + n += 2 + } + return n +} + +func (m *Preconditions) Size() (n int) { + var l int + _ = l + if m.UID != nil { + l = len(*m.UID) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *RootPaths) Size() (n int) { + var l int + _ = l + if len(m.Paths) > 0 { + for _, s := range m.Paths { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServerAddressByClientCIDR) Size() (n int) { + var l int + _ = l + l = len(m.ClientCIDR) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ServerAddress) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Status) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + if m.Details != nil { + l = m.Details.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.Code)) + return n +} + +func (m *StatusCause) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Field) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *StatusDetails) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Causes) > 0 { + for _, e := range m.Causes { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.RetryAfterSeconds)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Timestamp) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Seconds)) + n += 1 + sovGenerated(uint64(m.Nanos)) + return n +} + +func (m *TypeMeta) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m Verbs) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *WatchEvent) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *APIGroup) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIGroup{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Versions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Versions), "GroupVersionForDiscovery", "GroupVersionForDiscovery", 1), `&`, ``, 1) + `,`, + `PreferredVersion:` + strings.Replace(strings.Replace(this.PreferredVersion.String(), "GroupVersionForDiscovery", "GroupVersionForDiscovery", 1), `&`, ``, 1) + `,`, + `ServerAddressByClientCIDRs:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServerAddressByClientCIDRs), "ServerAddressByClientCIDR", "ServerAddressByClientCIDR", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *APIGroupList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIGroupList{`, + `Groups:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Groups), "APIGroup", "APIGroup", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *APIResource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIResource{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespaced:` + fmt.Sprintf("%v", this.Namespaced) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Verbs:` + strings.Replace(fmt.Sprintf("%v", this.Verbs), "Verbs", "Verbs", 1) + `,`, + `ShortNames:` + fmt.Sprintf("%v", this.ShortNames) + `,`, + `SingularName:` + fmt.Sprintf("%v", this.SingularName) + `,`, + `Categories:` + fmt.Sprintf("%v", this.Categories) + `,`, + `}`, + }, "") + return s +} +func (this *APIResourceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIResourceList{`, + `GroupVersion:` + fmt.Sprintf("%v", this.GroupVersion) + `,`, + `APIResources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.APIResources), "APIResource", "APIResource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeleteOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeleteOptions{`, + `GracePeriodSeconds:` + valueToStringGenerated(this.GracePeriodSeconds) + `,`, + `Preconditions:` + strings.Replace(fmt.Sprintf("%v", this.Preconditions), "Preconditions", "Preconditions", 1) + `,`, + `OrphanDependents:` + valueToStringGenerated(this.OrphanDependents) + `,`, + `PropagationPolicy:` + valueToStringGenerated(this.PropagationPolicy) + `,`, + `}`, + }, "") + return s +} +func (this *Duration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Duration{`, + `Duration:` + fmt.Sprintf("%v", this.Duration) + `,`, + `}`, + }, "") + return s +} +func (this *ExportOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExportOptions{`, + `Export:` + fmt.Sprintf("%v", this.Export) + `,`, + `Exact:` + fmt.Sprintf("%v", this.Exact) + `,`, + `}`, + }, "") + return s +} +func (this *GetOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GetOptions{`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `IncludeUninitialized:` + fmt.Sprintf("%v", this.IncludeUninitialized) + `,`, + `}`, + }, "") + return s +} +func (this *GroupVersionForDiscovery) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GroupVersionForDiscovery{`, + `GroupVersion:` + fmt.Sprintf("%v", this.GroupVersion) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `}`, + }, "") + return s +} +func (this *Initializer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Initializer{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *Initializers) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Initializers{`, + `Pending:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Pending), "Initializer", "Initializer", 1), `&`, ``, 1) + `,`, + `Result:` + strings.Replace(fmt.Sprintf("%v", this.Result), "Status", "Status", 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelector) String() string { + if this == nil { + return "nil" + } + keysForMatchLabels := make([]string, 0, len(this.MatchLabels)) + for k := range this.MatchLabels { + keysForMatchLabels = append(keysForMatchLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMatchLabels) + mapStringForMatchLabels := "map[string]string{" + for _, k := range keysForMatchLabels { + mapStringForMatchLabels += fmt.Sprintf("%v: %v,", k, this.MatchLabels[k]) + } + mapStringForMatchLabels += "}" + s := strings.Join([]string{`&LabelSelector{`, + `MatchLabels:` + mapStringForMatchLabels + `,`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "LabelSelectorRequirement", "LabelSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LabelSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *ListMeta) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListMeta{`, + `SelfLink:` + fmt.Sprintf("%v", this.SelfLink) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `}`, + }, "") + return s +} +func (this *ListOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListOptions{`, + `LabelSelector:` + fmt.Sprintf("%v", this.LabelSelector) + `,`, + `FieldSelector:` + fmt.Sprintf("%v", this.FieldSelector) + `,`, + `Watch:` + fmt.Sprintf("%v", this.Watch) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, + `IncludeUninitialized:` + fmt.Sprintf("%v", this.IncludeUninitialized) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMeta) String() string { + if this == nil { + return "nil" + } + keysForLabels := make([]string, 0, len(this.Labels)) + for k := range this.Labels { + keysForLabels = append(keysForLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + mapStringForLabels := "map[string]string{" + for _, k := range keysForLabels { + mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) + } + mapStringForLabels += "}" + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" + s := strings.Join([]string{`&ObjectMeta{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `GenerateName:` + fmt.Sprintf("%v", this.GenerateName) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `SelfLink:` + fmt.Sprintf("%v", this.SelfLink) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `Generation:` + fmt.Sprintf("%v", this.Generation) + `,`, + `CreationTimestamp:` + strings.Replace(strings.Replace(this.CreationTimestamp.String(), "Time", "Time", 1), `&`, ``, 1) + `,`, + `DeletionTimestamp:` + strings.Replace(fmt.Sprintf("%v", this.DeletionTimestamp), "Time", "Time", 1) + `,`, + `DeletionGracePeriodSeconds:` + valueToStringGenerated(this.DeletionGracePeriodSeconds) + `,`, + `Labels:` + mapStringForLabels + `,`, + `Annotations:` + mapStringForAnnotations + `,`, + `OwnerReferences:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.OwnerReferences), "OwnerReference", "OwnerReference", 1), `&`, ``, 1) + `,`, + `Finalizers:` + fmt.Sprintf("%v", this.Finalizers) + `,`, + `ClusterName:` + fmt.Sprintf("%v", this.ClusterName) + `,`, + `Initializers:` + strings.Replace(fmt.Sprintf("%v", this.Initializers), "Initializers", "Initializers", 1) + `,`, + `}`, + }, "") + return s +} +func (this *OwnerReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&OwnerReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Controller:` + valueToStringGenerated(this.Controller) + `,`, + `BlockOwnerDeletion:` + valueToStringGenerated(this.BlockOwnerDeletion) + `,`, + `}`, + }, "") + return s +} +func (this *Preconditions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Preconditions{`, + `UID:` + valueToStringGenerated(this.UID) + `,`, + `}`, + }, "") + return s +} +func (this *RootPaths) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RootPaths{`, + `Paths:` + fmt.Sprintf("%v", this.Paths) + `,`, + `}`, + }, "") + return s +} +func (this *ServerAddressByClientCIDR) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServerAddressByClientCIDR{`, + `ClientCIDR:` + fmt.Sprintf("%v", this.ClientCIDR) + `,`, + `ServerAddress:` + fmt.Sprintf("%v", this.ServerAddress) + `,`, + `}`, + }, "") + return s +} +func (this *Status) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Status{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "ListMeta", 1), `&`, ``, 1) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Details:` + strings.Replace(fmt.Sprintf("%v", this.Details), "StatusDetails", "StatusDetails", 1) + `,`, + `Code:` + fmt.Sprintf("%v", this.Code) + `,`, + `}`, + }, "") + return s +} +func (this *StatusCause) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatusCause{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Field:` + fmt.Sprintf("%v", this.Field) + `,`, + `}`, + }, "") + return s +} +func (this *StatusDetails) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatusDetails{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Causes:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Causes), "StatusCause", "StatusCause", 1), `&`, ``, 1) + `,`, + `RetryAfterSeconds:` + fmt.Sprintf("%v", this.RetryAfterSeconds) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `}`, + }, "") + return s +} +func (this *Timestamp) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Timestamp{`, + `Seconds:` + fmt.Sprintf("%v", this.Seconds) + `,`, + `Nanos:` + fmt.Sprintf("%v", this.Nanos) + `,`, + `}`, + }, "") + return s +} +func (this *TypeMeta) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TypeMeta{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `}`, + }, "") + return s +} +func (this *WatchEvent) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WatchEvent{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(strings.Replace(this.Object.String(), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *APIGroup) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIGroup: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIGroup: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Versions = append(m.Versions, GroupVersionForDiscovery{}) + if err := m.Versions[len(m.Versions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredVersion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PreferredVersion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddressByClientCIDRs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddressByClientCIDRs = append(m.ServerAddressByClientCIDRs, ServerAddressByClientCIDR{}) + if err := m.ServerAddressByClientCIDRs[len(m.ServerAddressByClientCIDRs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIGroupList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIGroupList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIGroupList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, APIGroup{}) + if err := m.Groups[len(m.Groups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIResource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaced", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Namespaced = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Verbs == nil { + m.Verbs = Verbs{} + } + if err := m.Verbs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ShortNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ShortNames = append(m.ShortNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SingularName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SingularName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Categories", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Categories = append(m.Categories, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIResourceList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIResourceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIResourceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GroupVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GroupVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIResources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIResources = append(m.APIResources, APIResource{}) + if err := m.APIResources[len(m.APIResources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIVersions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIVersions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIVersions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Versions = append(m.Versions, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddressByClientCIDRs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddressByClientCIDRs = append(m.ServerAddressByClientCIDRs, ServerAddressByClientCIDR{}) + if err := m.ServerAddressByClientCIDRs[len(m.ServerAddressByClientCIDRs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeleteOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.GracePeriodSeconds = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preconditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Preconditions == nil { + m.Preconditions = &Preconditions{} + } + if err := m.Preconditions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OrphanDependents", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.OrphanDependents = &b + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PropagationPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := DeletionPropagation(dAtA[iNdEx:postIndex]) + m.PropagationPolicy = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Duration) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Duration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Duration: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType) + } + m.Duration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Duration |= (time.Duration(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExportOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExportOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExportOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Export", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Export = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Exact", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Exact = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeUninitialized", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IncludeUninitialized = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupKind) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupKind: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupKind: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupResource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersion) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersionForDiscovery) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersionForDiscovery: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersionForDiscovery: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GroupVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GroupVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersionKind) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersionKind: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersionKind: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersionResource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersionResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersionResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Initializer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Initializer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Initializer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Initializers) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Initializers: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Initializers: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pending", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pending = append(m.Pending, Initializer{}) + if err := m.Pending[len(m.Pending)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Result == nil { + m.Result = &Status{} + } + if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.MatchLabels == nil { + m.MatchLabels = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.MatchLabels[mapkey] = mapvalue + } else { + var mapvalue string + m.MatchLabels[mapkey] = mapvalue + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, LabelSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelectorRequirement) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = LabelSelectorOperator(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListMeta) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SelfLink", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SelfLink = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LabelSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Watch", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Watch = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TimeoutSeconds = &v + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeUninitialized", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IncludeUninitialized = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMeta) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GenerateName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GenerateName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SelfLink", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SelfLink = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Generation", wireType) + } + m.Generation = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Generation |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreationTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CreationTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeletionTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DeletionTimestamp == nil { + m.DeletionTimestamp = &Time{} + } + if err := m.DeletionTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeletionGracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DeletionGracePeriodSeconds = &v + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Labels == nil { + m.Labels = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Labels[mapkey] = mapvalue + } else { + var mapvalue string + m.Labels[mapkey] = mapvalue + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Annotations[mapkey] = mapvalue + } else { + var mapvalue string + m.Annotations[mapkey] = mapvalue + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerReferences", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnerReferences = append(m.OwnerReferences, OwnerReference{}) + if err := m.OwnerReferences[len(m.OwnerReferences)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalizers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Finalizers = append(m.Finalizers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClusterName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Initializers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Initializers == nil { + m.Initializers = &Initializers{} + } + if err := m.Initializers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OwnerReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OwnerReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OwnerReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Controller = &b + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockOwnerDeletion", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.BlockOwnerDeletion = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Preconditions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Preconditions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Preconditions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + m.UID = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RootPaths) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RootPaths: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RootPaths: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Paths = append(m.Paths, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServerAddressByClientCIDR) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServerAddressByClientCIDR: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServerAddressByClientCIDR: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientCIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientCIDR = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Status) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Status: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Status: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = StatusReason(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Details == nil { + m.Details = &StatusDetails{} + } + if err := m.Details.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatusCause) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatusCause: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatusCause: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = CauseType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Field", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Field = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatusDetails) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatusDetails: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatusDetails: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Causes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Causes = append(m.Causes, StatusCause{}) + if err := m.Causes[len(m.Causes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RetryAfterSeconds", wireType) + } + m.RetryAfterSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RetryAfterSeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Timestamp) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Timestamp: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Timestamp: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Seconds", wireType) + } + m.Seconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Seconds |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Nanos", wireType) + } + m.Nanos = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Nanos |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TypeMeta) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TypeMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TypeMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Verbs) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Verbs: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Verbs: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *WatchEvent) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: WatchEvent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WatchEvent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 2351 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0x1b, 0xc7, + 0x15, 0xd7, 0x52, 0x22, 0x45, 0x3e, 0x8a, 0xfa, 0x98, 0xc8, 0x2d, 0x23, 0xb4, 0xa4, 0xb2, 0x29, + 0x02, 0xa5, 0x75, 0xc8, 0x4a, 0x69, 0x03, 0xd7, 0x6d, 0xdd, 0x6a, 0x45, 0xd9, 0x10, 0x62, 0xd9, + 0xc4, 0x28, 0x76, 0x51, 0xd7, 0x28, 0xba, 0x5a, 0x8e, 0xa8, 0xad, 0x96, 0xbb, 0x9b, 0x99, 0xa1, + 0x6c, 0x35, 0x87, 0xe6, 0xd0, 0x02, 0x3d, 0x14, 0x85, 0x8f, 0x3d, 0x15, 0x31, 0xda, 0xbf, 0xa0, + 0x7f, 0x40, 0x4f, 0x05, 0xea, 0x63, 0x80, 0x5e, 0x72, 0x28, 0x88, 0x98, 0x39, 0xf4, 0x14, 0xf4, + 0x2e, 0xa0, 0x40, 0x31, 0xb3, 0xb3, 0x5f, 0xa4, 0x18, 0x2d, 0xe3, 0xa0, 0xc8, 0x49, 0xdc, 0xf7, + 0xf1, 0x7b, 0x6f, 0x66, 0xde, 0xbc, 0xf7, 0xe6, 0x09, 0xf6, 0x4f, 0xae, 0xb1, 0x86, 0xed, 0x35, + 0x4f, 0xfa, 0x87, 0x84, 0xba, 0x84, 0x13, 0xd6, 0x3c, 0x25, 0x6e, 0xc7, 0xa3, 0x4d, 0xc5, 0x30, + 0x7d, 0xbb, 0x67, 0x5a, 0xc7, 0xb6, 0x4b, 0xe8, 0x59, 0xd3, 0x3f, 0xe9, 0x0a, 0x02, 0x6b, 0xf6, + 0x08, 0x37, 0x9b, 0xa7, 0x9b, 0xcd, 0x2e, 0x71, 0x09, 0x35, 0x39, 0xe9, 0x34, 0x7c, 0xea, 0x71, + 0x0f, 0x7d, 0x23, 0xd0, 0x6a, 0x24, 0xb5, 0x1a, 0xfe, 0x49, 0x57, 0x10, 0x58, 0x43, 0x68, 0x35, + 0x4e, 0x37, 0xd7, 0xde, 0xe8, 0xda, 0xfc, 0xb8, 0x7f, 0xd8, 0xb0, 0xbc, 0x5e, 0xb3, 0xeb, 0x75, + 0xbd, 0xa6, 0x54, 0x3e, 0xec, 0x1f, 0xc9, 0x2f, 0xf9, 0x21, 0x7f, 0x05, 0xa0, 0x6b, 0x13, 0x5d, + 0xa1, 0x7d, 0x97, 0xdb, 0x3d, 0x32, 0xea, 0xc5, 0xda, 0x5b, 0x97, 0x29, 0x30, 0xeb, 0x98, 0xf4, + 0xcc, 0x31, 0xbd, 0x37, 0x27, 0xe9, 0xf5, 0xb9, 0xed, 0x34, 0x6d, 0x97, 0x33, 0x4e, 0x47, 0x95, + 0xf4, 0x7f, 0xcc, 0x42, 0x71, 0xbb, 0xbd, 0x77, 0x8b, 0x7a, 0x7d, 0x1f, 0xad, 0xc3, 0x9c, 0x6b, + 0xf6, 0x48, 0x55, 0x5b, 0xd7, 0x36, 0x4a, 0xc6, 0xc2, 0xb3, 0x41, 0x7d, 0x66, 0x38, 0xa8, 0xcf, + 0xdd, 0x31, 0x7b, 0x04, 0x4b, 0x0e, 0x72, 0xa0, 0x78, 0x4a, 0x28, 0xb3, 0x3d, 0x97, 0x55, 0x73, + 0xeb, 0xb3, 0x1b, 0xe5, 0xad, 0x1b, 0x8d, 0x2c, 0x9b, 0xd6, 0x90, 0x06, 0xee, 0x07, 0xaa, 0x37, + 0x3d, 0xda, 0xb2, 0x99, 0xe5, 0x9d, 0x12, 0x7a, 0x66, 0x2c, 0x2b, 0x2b, 0x45, 0xc5, 0x64, 0x38, + 0xb2, 0x80, 0x7e, 0xa3, 0xc1, 0xb2, 0x4f, 0xc9, 0x11, 0xa1, 0x94, 0x74, 0x14, 0xbf, 0x3a, 0xbb, + 0xae, 0x7d, 0x01, 0x66, 0xab, 0xca, 0xec, 0x72, 0x7b, 0x04, 0x1f, 0x8f, 0x59, 0x44, 0x7f, 0xd6, + 0x60, 0x8d, 0x11, 0x7a, 0x4a, 0xe8, 0x76, 0xa7, 0x43, 0x09, 0x63, 0xc6, 0xd9, 0x8e, 0x63, 0x13, + 0x97, 0xef, 0xec, 0xb5, 0x30, 0xab, 0xce, 0xc9, 0x7d, 0xf8, 0x51, 0x36, 0x87, 0x0e, 0x26, 0xe1, + 0x18, 0xba, 0xf2, 0x68, 0x6d, 0xa2, 0x08, 0xc3, 0x9f, 0xe1, 0x86, 0x7e, 0x04, 0x0b, 0xe1, 0x41, + 0xde, 0xb6, 0x19, 0x47, 0xf7, 0xa1, 0xd0, 0x15, 0x1f, 0xac, 0xaa, 0x49, 0x07, 0x1b, 0xd9, 0x1c, + 0x0c, 0x31, 0x8c, 0x45, 0xe5, 0x4f, 0x41, 0x7e, 0x32, 0xac, 0xd0, 0xf4, 0x4f, 0x73, 0x50, 0xde, + 0x6e, 0xef, 0x61, 0xc2, 0xbc, 0x3e, 0xb5, 0x48, 0x86, 0xa0, 0xd9, 0x02, 0x10, 0x7f, 0x99, 0x6f, + 0x5a, 0xa4, 0x53, 0xcd, 0xad, 0x6b, 0x1b, 0x45, 0x03, 0x29, 0x39, 0xb8, 0x13, 0x71, 0x70, 0x42, + 0x4a, 0xa0, 0x9e, 0xd8, 0x6e, 0x47, 0x9e, 0x76, 0x02, 0xf5, 0x6d, 0xdb, 0xed, 0x60, 0xc9, 0x41, + 0xb7, 0x21, 0x7f, 0x4a, 0xe8, 0xa1, 0xd8, 0x7f, 0x11, 0x10, 0xdf, 0xca, 0xb6, 0xbc, 0xfb, 0x42, + 0xc5, 0x28, 0x0d, 0x07, 0xf5, 0xbc, 0xfc, 0x89, 0x03, 0x10, 0xd4, 0x00, 0x60, 0xc7, 0x1e, 0xe5, + 0xd2, 0x9d, 0x6a, 0x7e, 0x7d, 0x76, 0xa3, 0x64, 0x2c, 0x0a, 0xff, 0x0e, 0x22, 0x2a, 0x4e, 0x48, + 0xa0, 0x6b, 0xb0, 0xc0, 0x6c, 0xb7, 0xdb, 0x77, 0x4c, 0x2a, 0x08, 0xd5, 0x82, 0xf4, 0x73, 0x55, + 0xf9, 0xb9, 0x70, 0x90, 0xe0, 0xe1, 0x94, 0xa4, 0xb0, 0x64, 0x99, 0x9c, 0x74, 0x3d, 0x6a, 0x13, + 0x56, 0x9d, 0x8f, 0x2d, 0xed, 0x44, 0x54, 0x9c, 0x90, 0xd0, 0xff, 0xaa, 0xc1, 0x52, 0x62, 0xbf, + 0xe5, 0xd9, 0x5e, 0x83, 0x85, 0x6e, 0x22, 0xb2, 0xd5, 0xde, 0x47, 0xd6, 0x93, 0x51, 0x8f, 0x53, + 0x92, 0x88, 0x40, 0x89, 0x2a, 0xa4, 0xf0, 0x06, 0x6f, 0x66, 0x0e, 0x8c, 0xd0, 0x87, 0xd8, 0x52, + 0x82, 0xc8, 0x70, 0x8c, 0xac, 0xff, 0x5b, 0x93, 0x41, 0x12, 0xde, 0x69, 0xb4, 0x91, 0xc8, 0x1b, + 0x9a, 0x5c, 0xf2, 0xc2, 0x84, 0x3b, 0x7f, 0xc9, 0x65, 0xcb, 0x7d, 0x29, 0x2e, 0xdb, 0xf5, 0xe2, + 0x1f, 0x3f, 0xa8, 0xcf, 0xbc, 0xff, 0xaf, 0xf5, 0x19, 0xfd, 0x93, 0x1c, 0x54, 0x5a, 0xc4, 0x21, + 0x9c, 0xdc, 0xf5, 0xb9, 0x5c, 0xc1, 0x4d, 0x40, 0x5d, 0x6a, 0x5a, 0xa4, 0x4d, 0xa8, 0xed, 0x75, + 0x0e, 0x88, 0xe5, 0xb9, 0x1d, 0x26, 0x8f, 0x68, 0xd6, 0xf8, 0xca, 0x70, 0x50, 0x47, 0xb7, 0xc6, + 0xb8, 0xf8, 0x02, 0x0d, 0xe4, 0x40, 0xc5, 0xa7, 0xf2, 0xb7, 0xcd, 0x55, 0xc2, 0x15, 0x81, 0xfe, + 0x66, 0xb6, 0xb5, 0xb7, 0x93, 0xaa, 0xc6, 0xca, 0x70, 0x50, 0xaf, 0xa4, 0x48, 0x38, 0x0d, 0x8e, + 0x7e, 0x0c, 0xcb, 0x1e, 0xf5, 0x8f, 0x4d, 0xb7, 0x45, 0x7c, 0xe2, 0x76, 0x88, 0xcb, 0x99, 0xbc, + 0x7c, 0x45, 0x63, 0x55, 0xa4, 0xc9, 0xbb, 0x23, 0x3c, 0x3c, 0x26, 0x8d, 0x1e, 0xc0, 0x8a, 0x4f, + 0x3d, 0xdf, 0xec, 0x9a, 0x02, 0xb1, 0xed, 0x39, 0xb6, 0x75, 0x26, 0x2f, 0x67, 0xc9, 0xb8, 0x3a, + 0x1c, 0xd4, 0x57, 0xda, 0xa3, 0xcc, 0xf3, 0x41, 0xfd, 0x25, 0xb9, 0x75, 0x82, 0x12, 0x33, 0xf1, + 0x38, 0x8c, 0xbe, 0x07, 0xc5, 0x56, 0x9f, 0x4a, 0x0a, 0xfa, 0x21, 0x14, 0x3b, 0xea, 0xb7, 0xda, + 0xd5, 0x57, 0xc2, 0x1a, 0x12, 0xca, 0x9c, 0x0f, 0xea, 0x15, 0x51, 0x2a, 0x1b, 0x21, 0x01, 0x47, + 0x2a, 0xfa, 0x43, 0xa8, 0xec, 0x3e, 0xf6, 0x3d, 0xca, 0xc3, 0xf3, 0x7a, 0x0d, 0x0a, 0x44, 0x12, + 0x24, 0x5a, 0x31, 0x4e, 0x7c, 0x81, 0x18, 0x56, 0x5c, 0xf4, 0x2a, 0xe4, 0xc9, 0x63, 0xd3, 0xe2, + 0x2a, 0x83, 0x55, 0x94, 0x58, 0x7e, 0x57, 0x10, 0x71, 0xc0, 0xd3, 0x9f, 0x6a, 0x00, 0xb7, 0x48, + 0x84, 0xbd, 0x0d, 0x4b, 0xe1, 0xa5, 0x48, 0xdf, 0xd5, 0xaf, 0x2a, 0xed, 0x25, 0x9c, 0x66, 0xe3, + 0x51, 0x79, 0xd4, 0x86, 0x55, 0xdb, 0xb5, 0x9c, 0x7e, 0x87, 0xdc, 0x73, 0x6d, 0xd7, 0xe6, 0xb6, + 0xe9, 0xd8, 0xbf, 0x8a, 0xf2, 0xe8, 0xd7, 0x14, 0xce, 0xea, 0xde, 0x05, 0x32, 0xf8, 0x42, 0x4d, + 0xfd, 0x21, 0x94, 0x64, 0x86, 0x10, 0xc9, 0x54, 0xac, 0x4a, 0x26, 0x08, 0xe5, 0x57, 0xb4, 0x2a, + 0x29, 0x81, 0x03, 0x5e, 0x94, 0x8d, 0x73, 0x93, 0xb2, 0x71, 0xe2, 0x42, 0x38, 0x50, 0x09, 0x74, + 0xc3, 0x02, 0x91, 0xc9, 0xc2, 0x55, 0x28, 0x86, 0x0b, 0x57, 0x56, 0xa2, 0xc6, 0x20, 0x04, 0xc2, + 0x91, 0x44, 0xc2, 0xda, 0x31, 0xa4, 0xb2, 0x5d, 0x36, 0x63, 0xaf, 0xc3, 0xbc, 0xca, 0x37, 0xca, + 0xd6, 0x92, 0x12, 0x9b, 0x0f, 0x4f, 0x21, 0xe4, 0x27, 0x2c, 0xfd, 0x1a, 0xaa, 0x93, 0xba, 0x89, + 0x17, 0xc8, 0xc7, 0xd9, 0x5d, 0xd1, 0xff, 0xa0, 0xc1, 0x72, 0x12, 0x29, 0xfb, 0xf1, 0x65, 0x37, + 0x72, 0x79, 0xdd, 0x4d, 0xec, 0xc8, 0x9f, 0x34, 0x58, 0x4d, 0x2d, 0x6d, 0xaa, 0x13, 0x9f, 0xc2, + 0xa9, 0x64, 0x70, 0xcc, 0x4e, 0x11, 0x1c, 0x4d, 0x28, 0xef, 0x45, 0x71, 0x4f, 0x2f, 0xef, 0x54, + 0xf4, 0xbf, 0x69, 0xb0, 0x90, 0xd0, 0x60, 0xe8, 0x21, 0xcc, 0x8b, 0xfc, 0x66, 0xbb, 0x5d, 0xd5, + 0x45, 0x65, 0x2c, 0x96, 0x09, 0x90, 0x78, 0x5d, 0xed, 0x00, 0x09, 0x87, 0x90, 0xa8, 0x0d, 0x05, + 0x4a, 0x58, 0xdf, 0xe1, 0x2a, 0xb5, 0x5f, 0xcd, 0x58, 0xd6, 0xb8, 0xc9, 0xfb, 0xcc, 0x00, 0x91, + 0xa3, 0xb0, 0xd4, 0xc7, 0x0a, 0x47, 0xff, 0x67, 0x0e, 0x2a, 0xb7, 0xcd, 0x43, 0xe2, 0x1c, 0x10, + 0x87, 0x58, 0xdc, 0xa3, 0xe8, 0x3d, 0x28, 0xf7, 0x4c, 0x6e, 0x1d, 0x4b, 0x6a, 0xd8, 0x0b, 0xb6, + 0xb2, 0x19, 0x4a, 0x21, 0x35, 0xf6, 0x63, 0x98, 0x5d, 0x97, 0xd3, 0x33, 0xe3, 0x25, 0xb5, 0xb0, + 0x72, 0x82, 0x83, 0x93, 0xd6, 0x64, 0x03, 0x2f, 0xbf, 0x77, 0x1f, 0xfb, 0xa2, 0x88, 0x4e, 0xff, + 0x6e, 0x48, 0xb9, 0x80, 0xc9, 0xbb, 0x7d, 0x9b, 0x92, 0x1e, 0x71, 0x79, 0xdc, 0xc0, 0xef, 0x8f, + 0xe0, 0xe3, 0x31, 0x8b, 0x6b, 0x37, 0x60, 0x79, 0xd4, 0x79, 0xb4, 0x0c, 0xb3, 0x27, 0xe4, 0x2c, + 0x88, 0x05, 0x2c, 0x7e, 0xa2, 0x55, 0xc8, 0x9f, 0x9a, 0x4e, 0x5f, 0xe5, 0x1f, 0x1c, 0x7c, 0x5c, + 0xcf, 0x5d, 0xd3, 0xf4, 0xbf, 0x68, 0x50, 0x9d, 0xe4, 0x08, 0xfa, 0x7a, 0x02, 0xc8, 0x28, 0x2b, + 0xaf, 0x66, 0xdf, 0x26, 0x67, 0x01, 0xea, 0x2e, 0x14, 0x3d, 0x5f, 0x3c, 0xb9, 0x3c, 0xaa, 0xe2, + 0xfc, 0xf5, 0x30, 0x76, 0xef, 0x2a, 0xfa, 0xf9, 0xa0, 0x7e, 0x25, 0x05, 0x1f, 0x32, 0x70, 0xa4, + 0x8a, 0x74, 0x28, 0x48, 0x7f, 0x44, 0x51, 0x16, 0xed, 0x93, 0x3c, 0xfc, 0xfb, 0x92, 0x82, 0x15, + 0x47, 0x7f, 0x0f, 0x8a, 0xa2, 0x3b, 0xdc, 0x27, 0xdc, 0x14, 0x57, 0x86, 0x11, 0xe7, 0xe8, 0xb6, + 0xed, 0x9e, 0x28, 0xd7, 0xa2, 0x2b, 0x73, 0xa0, 0xe8, 0x38, 0x92, 0xb8, 0xa8, 0x4c, 0xe5, 0xa6, + 0x2b, 0x53, 0xfa, 0x7f, 0x73, 0x50, 0x16, 0xd6, 0xc3, 0xca, 0xf7, 0x7d, 0xa8, 0x38, 0xc9, 0x35, + 0x29, 0x2f, 0xae, 0x28, 0xc0, 0x74, 0x94, 0xe2, 0xb4, 0xac, 0x50, 0x3e, 0xb2, 0x89, 0xd3, 0x89, + 0x94, 0x73, 0x69, 0xe5, 0x9b, 0x49, 0x26, 0x4e, 0xcb, 0x8a, 0xec, 0xf3, 0x48, 0x9c, 0xb6, 0x6a, + 0x5f, 0xa2, 0xec, 0xf3, 0x13, 0x41, 0xc4, 0x01, 0xef, 0xa2, 0x15, 0xcf, 0x4d, 0x59, 0x98, 0xaf, + 0xc3, 0xa2, 0xe8, 0x31, 0xbc, 0x3e, 0x0f, 0x7b, 0xbc, 0xbc, 0xec, 0x46, 0xd0, 0x70, 0x50, 0x5f, + 0x7c, 0x27, 0xc5, 0xc1, 0x23, 0x92, 0x13, 0x8b, 0x7a, 0xe1, 0x73, 0x17, 0xf5, 0x77, 0xa1, 0xb4, + 0x6f, 0x5b, 0xd4, 0x13, 0x86, 0x45, 0x6e, 0x65, 0xa9, 0xbe, 0x33, 0xca, 0x41, 0xa1, 0x43, 0x21, + 0x5f, 0xec, 0x96, 0x6b, 0xba, 0x5e, 0xd0, 0x5d, 0xe6, 0xe3, 0xdd, 0xba, 0x23, 0x88, 0x38, 0xe0, + 0x5d, 0x5f, 0x15, 0x29, 0xf5, 0x77, 0x4f, 0xeb, 0x33, 0x4f, 0x9e, 0xd6, 0x67, 0x3e, 0x78, 0xaa, + 0xd2, 0xeb, 0xa7, 0x00, 0x70, 0xf7, 0xf0, 0x97, 0xc4, 0x0a, 0x42, 0xee, 0xf2, 0x87, 0xa0, 0x28, + 0x93, 0x6a, 0xfe, 0x20, 0x1f, 0x4d, 0xb9, 0x91, 0x32, 0x99, 0xe0, 0xe1, 0x94, 0x24, 0x6a, 0x42, + 0x29, 0x7a, 0x1c, 0xaa, 0x12, 0xb0, 0xa2, 0xd4, 0x4a, 0xd1, 0x0b, 0x12, 0xc7, 0x32, 0xa9, 0xf8, + 0x9f, 0xbb, 0x34, 0xfe, 0x0d, 0x98, 0xed, 0xdb, 0x1d, 0x79, 0x7e, 0x25, 0xe3, 0xdb, 0xe1, 0x1d, + 0xbe, 0xb7, 0xd7, 0x3a, 0x1f, 0xd4, 0x5f, 0x99, 0x34, 0x56, 0xe1, 0x67, 0x3e, 0x61, 0x8d, 0x7b, + 0x7b, 0x2d, 0x2c, 0x94, 0x2f, 0x8a, 0xa8, 0xc2, 0x94, 0x11, 0xb5, 0x05, 0xa0, 0x56, 0x2d, 0xb4, + 0xe7, 0x83, 0x68, 0x0a, 0x1f, 0xca, 0xb7, 0x22, 0x0e, 0x4e, 0x48, 0x21, 0x06, 0x2b, 0x16, 0x25, + 0xf2, 0xb7, 0x38, 0x7a, 0xc6, 0xcd, 0x9e, 0x5f, 0x2d, 0xca, 0x72, 0xf2, 0xcd, 0x6c, 0x29, 0x56, + 0xa8, 0x19, 0x2f, 0x2b, 0x33, 0x2b, 0x3b, 0xa3, 0x60, 0x78, 0x1c, 0x1f, 0x79, 0xb0, 0xd2, 0x51, + 0x8d, 0x7b, 0x6c, 0xb4, 0x34, 0xb5, 0xd1, 0x2b, 0xc2, 0x60, 0x6b, 0x14, 0x08, 0x8f, 0x63, 0xa3, + 0x9f, 0xc3, 0x5a, 0x48, 0x1c, 0x7f, 0x3d, 0x55, 0x41, 0xee, 0x54, 0x4d, 0xbc, 0xe7, 0x5a, 0x13, + 0xa5, 0xf0, 0x67, 0x20, 0xa0, 0x0e, 0x14, 0x9c, 0xa0, 0x40, 0x96, 0x65, 0x75, 0xfa, 0x41, 0xb6, + 0x55, 0xc4, 0xd1, 0xdf, 0x48, 0x16, 0xc6, 0xe8, 0x05, 0xa1, 0x6a, 0xa2, 0xc2, 0x46, 0x8f, 0xa1, + 0x6c, 0xba, 0xae, 0xc7, 0xcd, 0xe0, 0x3d, 0xb7, 0x20, 0x4d, 0x6d, 0x4f, 0x6d, 0x6a, 0x3b, 0xc6, + 0x18, 0x29, 0xc4, 0x09, 0x0e, 0x4e, 0x9a, 0x42, 0x8f, 0x60, 0xc9, 0x7b, 0xe4, 0x12, 0x8a, 0xc9, + 0x11, 0xa1, 0xc4, 0x15, 0x8f, 0xff, 0x8a, 0xb4, 0xfe, 0x9d, 0x8c, 0xd6, 0x53, 0xca, 0x71, 0x48, + 0xa7, 0xe9, 0x0c, 0x8f, 0x5a, 0x41, 0x0d, 0x80, 0x23, 0xdb, 0x55, 0xed, 0x54, 0x75, 0x31, 0x9e, + 0x76, 0xdc, 0x8c, 0xa8, 0x38, 0x21, 0x81, 0xbe, 0x0b, 0x65, 0xcb, 0xe9, 0x33, 0x4e, 0x82, 0xb1, + 0xca, 0x92, 0xbc, 0x41, 0xd1, 0xfa, 0x76, 0x62, 0x16, 0x4e, 0xca, 0xa1, 0x63, 0x58, 0xb0, 0x13, + 0x7d, 0x5b, 0x75, 0x59, 0xc6, 0xe2, 0xd6, 0xd4, 0xcd, 0x1a, 0x33, 0x96, 0x45, 0x26, 0x4a, 0x52, + 0x70, 0x0a, 0x79, 0xed, 0x7b, 0x50, 0xfe, 0x9c, 0x6d, 0x84, 0x68, 0x43, 0x46, 0x8f, 0x6e, 0xaa, + 0x36, 0xe4, 0xef, 0x39, 0x58, 0x4c, 0x6f, 0x78, 0xd4, 0xae, 0x6b, 0x13, 0xc7, 0x64, 0x61, 0x56, + 0x9e, 0x9d, 0x98, 0x95, 0x55, 0xf2, 0x9b, 0x7b, 0x91, 0xe4, 0xb7, 0x05, 0x60, 0xfa, 0x76, 0x98, + 0xf7, 0x82, 0x3c, 0x1a, 0x65, 0xae, 0x78, 0x10, 0x84, 0x13, 0x52, 0x72, 0x10, 0xe6, 0xb9, 0x9c, + 0x7a, 0x8e, 0x43, 0xa8, 0xaa, 0x7c, 0xc1, 0x20, 0x2c, 0xa2, 0xe2, 0x84, 0x04, 0xba, 0x09, 0xe8, + 0xd0, 0xf1, 0xac, 0x13, 0xb9, 0x05, 0xe1, 0x3d, 0x97, 0x59, 0xb2, 0x18, 0xcc, 0x55, 0x8c, 0x31, + 0x2e, 0xbe, 0x40, 0x43, 0xbf, 0x0b, 0xe9, 0x49, 0x08, 0xba, 0x11, 0x6c, 0x80, 0x16, 0x8d, 0x2a, + 0xa6, 0x5b, 0xbc, 0x7e, 0x15, 0x4a, 0xd8, 0xf3, 0x78, 0xdb, 0xe4, 0xc7, 0x0c, 0xd5, 0x21, 0xef, + 0x8b, 0x1f, 0x6a, 0xcc, 0x25, 0x27, 0x8d, 0x92, 0x83, 0x03, 0xba, 0xfe, 0x7b, 0x0d, 0x5e, 0x9e, + 0x38, 0x75, 0x12, 0x1b, 0x69, 0x45, 0x5f, 0xca, 0xa5, 0x68, 0x23, 0x63, 0x39, 0x9c, 0x90, 0x12, + 0xdd, 0x52, 0x6a, 0x54, 0x35, 0xda, 0x2d, 0xa5, 0xac, 0xe1, 0xb4, 0xac, 0xfe, 0x9f, 0x1c, 0x14, + 0x82, 0x07, 0x05, 0x7a, 0x08, 0x45, 0x71, 0x25, 0x3a, 0x26, 0x37, 0xa5, 0xe5, 0xcc, 0x33, 0xe3, + 0xb0, 0xeb, 0x8c, 0x6b, 0x6c, 0x48, 0xc1, 0x11, 0x22, 0x7a, 0x0d, 0x0a, 0x4c, 0xda, 0x51, 0xee, + 0x45, 0x49, 0x32, 0xb0, 0x8e, 0x15, 0x57, 0xf4, 0x2e, 0x3d, 0xc2, 0x98, 0xd9, 0x0d, 0x63, 0x36, + 0xea, 0x5d, 0xf6, 0x03, 0x32, 0x0e, 0xf9, 0xe8, 0x2d, 0xf1, 0x7e, 0x32, 0x59, 0xd4, 0xbb, 0xd5, + 0x42, 0x48, 0x2c, 0xa9, 0xe7, 0x83, 0xfa, 0x82, 0x02, 0x97, 0xdf, 0x58, 0x49, 0xa3, 0x07, 0x30, + 0xdf, 0x21, 0xdc, 0xb4, 0x9d, 0xa0, 0x65, 0xcb, 0x3c, 0x53, 0x0b, 0xc0, 0x5a, 0x81, 0xaa, 0x51, + 0x16, 0x3e, 0xa9, 0x0f, 0x1c, 0x02, 0x8a, 0xfb, 0x66, 0x79, 0x9d, 0x60, 0x20, 0x9c, 0x8f, 0xef, + 0xdb, 0x8e, 0xd7, 0x21, 0x58, 0x72, 0xf4, 0x27, 0x1a, 0x94, 0x03, 0xa4, 0x1d, 0xb3, 0xcf, 0x08, + 0xda, 0x8c, 0x56, 0x11, 0x1c, 0x77, 0x58, 0x8a, 0xe7, 0xde, 0x39, 0xf3, 0xc9, 0xf9, 0xa0, 0x5e, + 0x92, 0x62, 0xe2, 0x23, 0x5a, 0x40, 0x62, 0x8f, 0x72, 0x97, 0xec, 0xd1, 0xab, 0x90, 0x97, 0xed, + 0xb1, 0xda, 0xcc, 0xa8, 0xbf, 0x93, 0x2d, 0x34, 0x0e, 0x78, 0xfa, 0xc7, 0x39, 0xa8, 0xa4, 0x16, + 0x97, 0xa1, 0x99, 0x8b, 0x1e, 0xf9, 0xb9, 0x0c, 0x83, 0xa3, 0xc9, 0x63, 0xfc, 0x9f, 0x42, 0xc1, + 0x12, 0xeb, 0x0b, 0xff, 0x8f, 0xb2, 0x39, 0xcd, 0x51, 0xc8, 0x9d, 0x89, 0x23, 0x49, 0x7e, 0x32, + 0xac, 0x00, 0xd1, 0x2d, 0x58, 0xa1, 0x84, 0xd3, 0xb3, 0xed, 0x23, 0x4e, 0x68, 0xb2, 0x47, 0xcf, + 0xc7, 0xed, 0x0e, 0x1e, 0x15, 0xc0, 0xe3, 0x3a, 0x61, 0x86, 0x2c, 0xbc, 0x40, 0x86, 0xd4, 0x1d, + 0x98, 0xfb, 0x3f, 0xb6, 0xe6, 0x3f, 0x83, 0x52, 0xdc, 0x3c, 0x7d, 0xc1, 0x26, 0xf5, 0x5f, 0x40, + 0x51, 0x44, 0x63, 0xd8, 0xf4, 0x5f, 0x52, 0x80, 0xd2, 0xa5, 0x21, 0x97, 0xa5, 0x34, 0xe8, 0x5b, + 0x10, 0xfc, 0x77, 0x46, 0x64, 0x53, 0x9b, 0x93, 0x5e, 0x2a, 0x9b, 0xee, 0x09, 0x02, 0x0e, 0xe8, + 0x89, 0x61, 0xcf, 0x6f, 0x35, 0x00, 0xf9, 0xc4, 0xdb, 0x3d, 0x15, 0xcf, 0xf2, 0x75, 0x98, 0x13, + 0x27, 0x30, 0xea, 0x98, 0xbc, 0x46, 0x92, 0x83, 0xee, 0x41, 0xc1, 0x93, 0x4d, 0x95, 0x9a, 0xbe, + 0xbc, 0x31, 0x31, 0xf2, 0xd4, 0x3f, 0x5e, 0x1b, 0xd8, 0x7c, 0xb4, 0xfb, 0x98, 0x13, 0x57, 0xf8, + 0x18, 0x47, 0x5d, 0xd0, 0x99, 0x61, 0x05, 0x66, 0x6c, 0x3c, 0x7b, 0x5e, 0x9b, 0xf9, 0xf0, 0x79, + 0x6d, 0xe6, 0xa3, 0xe7, 0xb5, 0x99, 0xf7, 0x87, 0x35, 0xed, 0xd9, 0xb0, 0xa6, 0x7d, 0x38, 0xac, + 0x69, 0x1f, 0x0d, 0x6b, 0xda, 0xc7, 0xc3, 0x9a, 0xf6, 0xe4, 0x93, 0xda, 0xcc, 0x83, 0xdc, 0xe9, + 0xe6, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x80, 0x43, 0x11, 0x41, 0xbe, 0x1e, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto new file mode 100644 index 000000000..a6be57a87 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto @@ -0,0 +1,764 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.apimachinery.pkg.apis.meta.v1; + +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// APIGroup contains the name, the supported versions, and the preferred version +// of a group. +message APIGroup { + // name is the name of the group. + optional string name = 1; + + // versions are the versions supported in this group. + repeated GroupVersionForDiscovery versions = 2; + + // preferredVersion is the version preferred by the API server, which + // probably is the storage version. + // +optional + optional GroupVersionForDiscovery preferredVersion = 3; + + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 4; +} + +// APIGroupList is a list of APIGroup, to allow clients to discover the API at +// /apis. +message APIGroupList { + // groups is a list of APIGroup. + repeated APIGroup groups = 1; +} + +// APIResource specifies the name of a resource and whether it is namespaced. +message APIResource { + // name is the plural name of the resource. + optional string name = 1; + + // singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. + // The singularName is more correct for reporting status on a single item and both singular and plural are allowed + // from the kubectl CLI interface. + optional string singularName = 6; + + // namespaced indicates if a resource is namespaced or not. + optional bool namespaced = 2; + + // kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') + optional string kind = 3; + + // verbs is a list of supported kube verbs (this includes get, list, watch, create, + // update, patch, delete, deletecollection, and proxy) + optional Verbs verbs = 4; + + // shortNames is a list of suggested short names of the resource. + repeated string shortNames = 5; + + // categories is a list of the grouped resources this resource belongs to (e.g. 'all') + repeated string categories = 7; +} + +// APIResourceList is a list of APIResource, it is used to expose the name of the +// resources supported in a specific group and version, and if the resource +// is namespaced. +message APIResourceList { + // groupVersion is the group and version this APIResourceList is for. + optional string groupVersion = 1; + + // resources contains the name of the resources and if they are namespaced. + repeated APIResource resources = 2; +} + +// APIVersions lists the versions that are available, to allow clients to +// discover the API at /api, which is the root path of the legacy v1 API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message APIVersions { + // versions are the api versions that are available. + repeated string versions = 1; + + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 2; +} + +// DeleteOptions may be provided when deleting an API object. +message DeleteOptions { + // The duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // Defaults to a per object value if not specified. zero means delete immediately. + // +optional + optional int64 gracePeriodSeconds = 1; + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + // +optional + optional Preconditions preconditions = 2; + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + optional bool orphanDependents = 3; + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + optional string propagationPolicy = 4; +} + +// Duration is a wrapper around time.Duration which supports correct +// marshaling to YAML and JSON. In particular, it marshals into strings, which +// can be used as map keys in json. +message Duration { + optional int64 duration = 1; +} + +// ExportOptions is the query options to the standard REST get call. +message ExportOptions { + // Should this value be exported. Export strips fields that a user can not specify. + optional bool export = 1; + + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. + optional bool exact = 2; +} + +// GetOptions is the standard query options to the standard REST get call. +message GetOptions { + // When specified: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + optional string resourceVersion = 1; + + // If true, partially initialized resources are included in the response. + // +optional + optional bool includeUninitialized = 2; +} + +// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupKind { + optional string group = 1; + + optional string kind = 2; +} + +// GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupResource { + optional string group = 1; + + optional string resource = 2; +} + +// GroupVersion contains the "group" and the "version", which uniquely identifies the API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupVersion { + optional string group = 1; + + optional string version = 2; +} + +// GroupVersion contains the "group/version" and "version" string of a version. +// It is made a struct to keep extensibility. +message GroupVersionForDiscovery { + // groupVersion specifies the API group and version in the form "group/version" + optional string groupVersion = 1; + + // version specifies the version in the form of "version". This is to save + // the clients the trouble of splitting the GroupVersion. + optional string version = 2; +} + +// GroupVersionKind unambiguously identifies a kind. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupVersionKind { + optional string group = 1; + + optional string version = 2; + + optional string kind = 3; +} + +// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupVersionResource { + optional string group = 1; + + optional string version = 2; + + optional string resource = 3; +} + +// Initializer is information about an initializer that has not yet completed. +message Initializer { + // name of the process that is responsible for initializing this object. + optional string name = 1; +} + +// Initializers tracks the progress of initialization. +message Initializers { + // Pending is a list of initializers that must execute in order before this object is visible. + // When the last pending initializer is removed, and no failing result is set, the initializers + // struct will be set to nil and the object is considered as initialized and visible to all + // clients. + repeated Initializer pending = 1; + + // If result is set with the Failure field, the object will be persisted to storage and then deleted, + // ensuring that other clients can observe the deletion. + optional Status result = 2; +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +message LabelSelector { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + // +optional + map matchLabels = 1; + + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + // +optional + repeated LabelSelectorRequirement matchExpressions = 2; +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +message LabelSelectorRequirement { + // key is the label key that the selector applies to. + // +patchMergeKey=key + // +patchStrategy=merge + optional string key = 1; + + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + optional string operator = 2; + + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + // +optional + repeated string values = 3; +} + +// ListMeta describes metadata that synthetic resources must have, including lists and +// various status objects. A resource may have only one of {ObjectMeta, ListMeta}. +message ListMeta { + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + optional string selfLink = 1; + + // String that identifies the server's internal version of this object that + // can be used by clients to determine when objects have changed. + // Value must be treated as opaque by clients and passed unmodified back to the server. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + optional string resourceVersion = 2; +} + +// ListOptions is the query options to a standard REST list call. +message ListOptions { + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + // +optional + optional string labelSelector = 1; + + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + // +optional + optional string fieldSelector = 2; + + // If true, partially initialized resources are included in the response. + // +optional + optional bool includeUninitialized = 6; + + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + // +optional + optional bool watch = 3; + + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + // When specified for list: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + // +optional + optional string resourceVersion = 4; + + // Timeout for the list/watch call. + // +optional + optional int64 timeoutSeconds = 5; +} + +// MicroTime is version of Time with microsecond level precision. +// +// +protobuf.options.marshal=false +// +protobuf.as=Timestamp +// +protobuf.options.(gogoproto.goproto_stringer)=false +message MicroTime { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + optional int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + optional int32 nanos = 2; +} + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +message ObjectMeta { + // Name must be unique within a namespace. Is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // Cannot be updated. + // More info: http://kubernetes.io/docs/user-guide/identifiers#names + // +optional + optional string name = 1; + + // GenerateName is an optional prefix, used by the server, to generate a unique + // name ONLY IF the Name field has not been provided. + // If this field is used, the name returned to the client will be different + // than the name passed. This value will also be combined with a unique suffix. + // The provided value has the same validation rules as the Name field, + // and may be truncated by the length of the suffix required to make the value + // unique on the server. + // + // If this field is specified and the generated name exists, the server will + // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // + // Applied only if Name is not specified. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency + // +optional + optional string generateName = 2; + + // Namespace defines the space within each name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // + // Must be a DNS_LABEL. + // Cannot be updated. + // More info: http://kubernetes.io/docs/user-guide/namespaces + // +optional + optional string namespace = 3; + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + optional string selfLink = 4; + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // + // Populated by the system. + // Read-only. + // More info: http://kubernetes.io/docs/user-guide/identifiers#uids + // +optional + optional string uid = 5; + + // An opaque value that represents the internal version of this object that can + // be used by clients to determine when objects have changed. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and passed unmodified back to the server. + // They may only be valid for a particular resource or set of resources. + // + // Populated by the system. + // Read-only. + // Value must be treated as opaque by clients and . + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + optional string resourceVersion = 6; + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + // +optional + optional int64 generation = 7; + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. + // Read-only. + // Null for lists. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional Time creationTimestamp = 8; + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource is expected to be deleted (no longer visible + // from resource lists, and not reachable by name) after the time in this field. Once set, + // this value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional Time deletionTimestamp = 9; + + // Number of seconds allowed for this object to gracefully terminate before + // it will be removed from the system. Only set when deletionTimestamp is also set. + // May only be shortened. + // Read-only. + // +optional + optional int64 deletionGracePeriodSeconds = 10; + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // More info: http://kubernetes.io/docs/user-guide/labels + // +optional + map labels = 11; + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // More info: http://kubernetes.io/docs/user-guide/annotations + // +optional + map annotations = 12; + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + // +optional + // +patchMergeKey=uid + // +patchStrategy=merge + repeated OwnerReference ownerReferences = 13; + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + optional Initializers initializers = 16; + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + // +optional + // +patchStrategy=merge + repeated string finalizers = 14; + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + // +optional + optional string clusterName = 15; +} + +// OwnerReference contains enough information to let you identify an owning +// object. Currently, an owning object must be in the same namespace, so there +// is no namespace field. +message OwnerReference { + // API version of the referent. + optional string apiVersion = 5; + + // Kind of the referent. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + optional string kind = 1; + + // Name of the referent. + // More info: http://kubernetes.io/docs/user-guide/identifiers#names + optional string name = 3; + + // UID of the referent. + // More info: http://kubernetes.io/docs/user-guide/identifiers#uids + optional string uid = 4; + + // If true, this reference points to the managing controller. + // +optional + optional bool controller = 6; + + // If true, AND if the owner has the "foregroundDeletion" finalizer, then + // the owner cannot be deleted from the key-value store until this + // reference is removed. + // Defaults to false. + // To set this field, a user needs "delete" permission of the owner, + // otherwise 422 (Unprocessable Entity) will be returned. + // +optional + optional bool blockOwnerDeletion = 7; +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +message Preconditions { + // Specifies the target UID. + // +optional + optional string uid = 1; +} + +// RootPaths lists the paths available at root. +// For example: "/healthz", "/apis". +message RootPaths { + // paths are the paths available at root. + repeated string paths = 1; +} + +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +message ServerAddressByClientCIDR { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + optional string clientCIDR = 1; + + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + optional string serverAddress = 2; +} + +// Status is a return value for calls that don't return other objects. +message Status { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional ListMeta metadata = 1; + + // Status of the operation. + // One of: "Success" or "Failure". + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional string status = 2; + + // A human-readable description of the status of this operation. + // +optional + optional string message = 3; + + // A machine-readable description of why this operation is in the + // "Failure" status. If this value is empty there + // is no information available. A Reason clarifies an HTTP status + // code but does not override it. + // +optional + optional string reason = 4; + + // Extended data associated with the reason. Each reason may define its + // own extended details. This field is optional and the data returned + // is not guaranteed to conform to any schema except that defined by + // the reason type. + // +optional + optional StatusDetails details = 5; + + // Suggested HTTP return code for this status, 0 if not set. + // +optional + optional int32 code = 6; +} + +// StatusCause provides more information about an api.Status failure, including +// cases when multiple errors are encountered. +message StatusCause { + // A machine-readable description of the cause of the error. If this value is + // empty there is no information available. + // +optional + optional string reason = 1; + + // A human-readable description of the cause of the error. This field may be + // presented as-is to a reader. + // +optional + optional string message = 2; + + // The field of the resource that has caused this error, as named by its JSON + // serialization. May include dot and postfix notation for nested attributes. + // Arrays are zero-indexed. Fields may appear more than once in an array of + // causes due to fields having multiple errors. + // Optional. + // + // Examples: + // "name" - the field "name" on the current resource + // "items[0].name" - the field "name" on the first array entry in "items" + // +optional + optional string field = 3; +} + +// StatusDetails is a set of additional properties that MAY be set by the +// server to provide additional information about a response. The Reason +// field of a Status object defines what attributes will be set. Clients +// must ignore fields that do not match the defined type of each attribute, +// and should assume that any attribute may be empty, invalid, or under +// defined. +message StatusDetails { + // The name attribute of the resource associated with the status StatusReason + // (when there is a single name which can be described). + // +optional + optional string name = 1; + + // The group attribute of the resource associated with the status StatusReason. + // +optional + optional string group = 2; + + // The kind attribute of the resource associated with the status StatusReason. + // On some operations may differ from the requested resource Kind. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional string kind = 3; + + // UID of the resource. + // (when there is a single resource which can be described). + // More info: http://kubernetes.io/docs/user-guide/identifiers#uids + // +optional + optional string uid = 6; + + // The Causes array includes more details associated with the StatusReason + // failure. Not all StatusReasons may provide detailed causes. + // +optional + repeated StatusCause causes = 4; + + // If specified, the time in seconds before the operation should be retried. + // +optional + optional int32 retryAfterSeconds = 5; +} + +// Time is a wrapper around time.Time which supports correct +// marshaling to YAML and JSON. Wrappers are provided for many +// of the factory methods that the time package offers. +// +// +protobuf.options.marshal=false +// +protobuf.as=Timestamp +// +protobuf.options.(gogoproto.goproto_stringer)=false +message Time { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + optional int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + optional int32 nanos = 2; +} + +// Timestamp is a struct that is equivalent to Time, but intended for +// protobuf marshalling/unmarshalling. It is generated into a serialization +// that matches Time. Do not use in Go structs. +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + optional int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + optional int32 nanos = 2; +} + +// TypeMeta describes an individual object in an API response or request +// with strings representing the type of the object and its API schema version. +// Structures that are versioned or persisted should inline TypeMeta. +message TypeMeta { + // Kind is a string value representing the REST resource this object represents. + // Servers may infer this from the endpoint the client submits requests to. + // Cannot be updated. + // In CamelCase. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional string kind = 1; + + // APIVersion defines the versioned schema of this representation of an object. + // Servers should convert recognized schemas to the latest internal value, and + // may reject unrecognized values. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources + // +optional + optional string apiVersion = 2; +} + +// Verbs masks the value so protobuf can generate +// +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message Verbs { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// Event represents a single event to a watched resource. +// +// +protobuf=true +message WatchEvent { + optional string type = 1; + + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *Status is recommended; other types may make sense + // depending on context. + optional k8s.io.apimachinery.pkg.runtime.RawExtension object = 2; +} + diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go new file mode 100644 index 000000000..bd4c6d9b5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version.go @@ -0,0 +1,148 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "fmt" + "strings" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupResource struct { + Group string `json:"group" protobuf:"bytes,1,opt,name=group"` + Resource string `json:"resource" protobuf:"bytes,2,opt,name=resource"` +} + +func (gr *GroupResource) String() string { + if len(gr.Group) == 0 { + return gr.Resource + } + return gr.Resource + "." + gr.Group +} + +// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupVersionResource struct { + Group string `json:"group" protobuf:"bytes,1,opt,name=group"` + Version string `json:"version" protobuf:"bytes,2,opt,name=version"` + Resource string `json:"resource" protobuf:"bytes,3,opt,name=resource"` +} + +func (gvr *GroupVersionResource) String() string { + return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "") +} + +// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupKind struct { + Group string `json:"group" protobuf:"bytes,1,opt,name=group"` + Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` +} + +func (gk *GroupKind) String() string { + if len(gk.Group) == 0 { + return gk.Kind + } + return gk.Kind + "." + gk.Group +} + +// GroupVersionKind unambiguously identifies a kind. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupVersionKind struct { + Group string `json:"group" protobuf:"bytes,1,opt,name=group"` + Version string `json:"version" protobuf:"bytes,2,opt,name=version"` + Kind string `json:"kind" protobuf:"bytes,3,opt,name=kind"` +} + +func (gvk GroupVersionKind) String() string { + return gvk.Group + "/" + gvk.Version + ", Kind=" + gvk.Kind +} + +// GroupVersion contains the "group" and the "version", which uniquely identifies the API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupVersion struct { + Group string `json:"group" protobuf:"bytes,1,opt,name=group"` + Version string `json:"version" protobuf:"bytes,2,opt,name=version"` +} + +// Empty returns true if group and version are empty +func (gv GroupVersion) Empty() bool { + return len(gv.Group) == 0 && len(gv.Version) == 0 +} + +// String puts "group" and "version" into a single "group/version" string. For the legacy v1 +// it returns "v1". +func (gv GroupVersion) String() string { + // special case the internal apiVersion for the legacy kube types + if gv.Empty() { + return "" + } + + // special case of "v1" for backward compatibility + if len(gv.Group) == 0 && gv.Version == "v1" { + return gv.Version + } + if len(gv.Group) > 0 { + return gv.Group + "/" + gv.Version + } + return gv.Version +} + +// MarshalJSON implements the json.Marshaller interface. +func (gv GroupVersion) MarshalJSON() ([]byte, error) { + s := gv.String() + if strings.Count(s, "/") > 1 { + return []byte{}, fmt.Errorf("illegal GroupVersion %v: contains more than one /", s) + } + return json.Marshal(s) +} + +func (gv *GroupVersion) unmarshal(value []byte) error { + var s string + if err := json.Unmarshal(value, &s); err != nil { + return err + } + parsed, err := schema.ParseGroupVersion(s) + if err != nil { + return err + } + gv.Group, gv.Version = parsed.Group, parsed.Version + return nil +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (gv *GroupVersion) UnmarshalJSON(value []byte) error { + return gv.unmarshal(value) +} + +// UnmarshalTEXT implements the Ugorji's encoding.TextUnmarshaler interface. +func (gv *GroupVersion) UnmarshalText(value []byte) error { + return gv.unmarshal(value) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go new file mode 100644 index 000000000..5daf9010f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/group_version_test.go @@ -0,0 +1,78 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/ugorji/go/codec" +) + +type GroupVersionHolder struct { + GV GroupVersion `json:"val"` +} + +func TestGroupVersionUnmarshalJSON(t *testing.T) { + cases := []struct { + input []byte + expect GroupVersion + }{ + {[]byte(`{"val": "v1"}`), GroupVersion{"", "v1"}}, + {[]byte(`{"val": "extensions/v1beta1"}`), GroupVersion{"extensions", "v1beta1"}}, + } + + for _, c := range cases { + var result GroupVersionHolder + // test golang lib's JSON codec + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("JSON codec failed to unmarshal input '%v': %v", c.input, err) + } + if !reflect.DeepEqual(result.GV, c.expect) { + t.Errorf("JSON codec failed to unmarshal input '%s': expected %+v, got %+v", c.input, c.expect, result.GV) + } + // test the Ugorji codec + if err := codec.NewDecoderBytes(c.input, new(codec.JsonHandle)).Decode(&result); err != nil { + t.Errorf("Ugorji codec failed to unmarshal input '%v': %v", c.input, err) + } + if !reflect.DeepEqual(result.GV, c.expect) { + t.Errorf("Ugorji codec failed to unmarshal input '%s': expected %+v, got %+v", c.input, c.expect, result.GV) + } + } +} + +func TestGroupVersionMarshalJSON(t *testing.T) { + cases := []struct { + input GroupVersion + expect []byte + }{ + {GroupVersion{"", "v1"}, []byte(`{"val":"v1"}`)}, + {GroupVersion{"extensions", "v1beta1"}, []byte(`{"val":"extensions/v1beta1"}`)}, + } + + for _, c := range cases { + input := GroupVersionHolder{c.input} + result, err := json.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input '%v': %v", input, err) + } + if !reflect.DeepEqual(result, c.expect) { + t.Errorf("Failed to marshal input '%+v': expected: %s, got: %s", input, c.expect, result) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go new file mode 100644 index 000000000..d845d7b0f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers.go @@ -0,0 +1,234 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" + "k8s.io/apimachinery/pkg/types" +) + +// LabelSelectorAsSelector converts the LabelSelector api type into a struct that implements +// labels.Selector +// Note: This function should be kept in sync with the selector methods in pkg/labels/selector.go +func LabelSelectorAsSelector(ps *LabelSelector) (labels.Selector, error) { + if ps == nil { + return labels.Nothing(), nil + } + if len(ps.MatchLabels)+len(ps.MatchExpressions) == 0 { + return labels.Everything(), nil + } + selector := labels.NewSelector() + for k, v := range ps.MatchLabels { + r, err := labels.NewRequirement(k, selection.Equals, []string{v}) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + for _, expr := range ps.MatchExpressions { + var op selection.Operator + switch expr.Operator { + case LabelSelectorOpIn: + op = selection.In + case LabelSelectorOpNotIn: + op = selection.NotIn + case LabelSelectorOpExists: + op = selection.Exists + case LabelSelectorOpDoesNotExist: + op = selection.DoesNotExist + default: + return nil, fmt.Errorf("%q is not a valid pod selector operator", expr.Operator) + } + r, err := labels.NewRequirement(expr.Key, op, append([]string(nil), expr.Values...)) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + return selector, nil +} + +// LabelSelectorAsMap converts the LabelSelector api type into a map of strings, ie. the +// original structure of a label selector. Operators that cannot be converted into plain +// labels (Exists, DoesNotExist, NotIn, and In with more than one value) will result in +// an error. +func LabelSelectorAsMap(ps *LabelSelector) (map[string]string, error) { + if ps == nil { + return nil, nil + } + selector := map[string]string{} + for k, v := range ps.MatchLabels { + selector[k] = v + } + for _, expr := range ps.MatchExpressions { + switch expr.Operator { + case LabelSelectorOpIn: + if len(expr.Values) != 1 { + return selector, fmt.Errorf("operator %q without a single value cannot be converted into the old label selector format", expr.Operator) + } + // Should we do anything in case this will override a previous key-value pair? + selector[expr.Key] = expr.Values[0] + case LabelSelectorOpNotIn, LabelSelectorOpExists, LabelSelectorOpDoesNotExist: + return selector, fmt.Errorf("operator %q cannot be converted into the old label selector format", expr.Operator) + default: + return selector, fmt.Errorf("%q is not a valid selector operator", expr.Operator) + } + } + return selector, nil +} + +// ParseToLabelSelector parses a string representing a selector into a LabelSelector object. +// Note: This function should be kept in sync with the parser in pkg/labels/selector.go +func ParseToLabelSelector(selector string) (*LabelSelector, error) { + reqs, err := labels.ParseToRequirements(selector) + if err != nil { + return nil, fmt.Errorf("couldn't parse the selector string \"%s\": %v", selector, err) + } + + labelSelector := &LabelSelector{ + MatchLabels: map[string]string{}, + MatchExpressions: []LabelSelectorRequirement{}, + } + for _, req := range reqs { + var op LabelSelectorOperator + switch req.Operator() { + case selection.Equals, selection.DoubleEquals: + vals := req.Values() + if vals.Len() != 1 { + return nil, fmt.Errorf("equals operator must have exactly one value") + } + val, ok := vals.PopAny() + if !ok { + return nil, fmt.Errorf("equals operator has exactly one value but it cannot be retrieved") + } + labelSelector.MatchLabels[req.Key()] = val + continue + case selection.In: + op = LabelSelectorOpIn + case selection.NotIn: + op = LabelSelectorOpNotIn + case selection.Exists: + op = LabelSelectorOpExists + case selection.DoesNotExist: + op = LabelSelectorOpDoesNotExist + case selection.GreaterThan, selection.LessThan: + // Adding a separate case for these operators to indicate that this is deliberate + return nil, fmt.Errorf("%q isn't supported in label selectors", req.Operator()) + default: + return nil, fmt.Errorf("%q is not a valid label selector operator", req.Operator()) + } + labelSelector.MatchExpressions = append(labelSelector.MatchExpressions, LabelSelectorRequirement{ + Key: req.Key(), + Operator: op, + Values: req.Values().List(), + }) + } + return labelSelector, nil +} + +// SetAsLabelSelector converts the labels.Set object into a LabelSelector api object. +func SetAsLabelSelector(ls labels.Set) *LabelSelector { + if ls == nil { + return nil + } + + selector := &LabelSelector{ + MatchLabels: make(map[string]string), + } + for label, value := range ls { + selector.MatchLabels[label] = value + } + + return selector +} + +// FormatLabelSelector convert labelSelector into plain string +func FormatLabelSelector(labelSelector *LabelSelector) string { + selector, err := LabelSelectorAsSelector(labelSelector) + if err != nil { + return "" + } + + l := selector.String() + if len(l) == 0 { + l = "" + } + return l +} + +func ExtractGroupVersions(l *APIGroupList) []string { + var groupVersions []string + for _, g := range l.Groups { + for _, gv := range g.Versions { + groupVersions = append(groupVersions, gv.GroupVersion) + } + } + return groupVersions +} + +// HasAnnotation returns a bool if passed in annotation exists +func HasAnnotation(obj ObjectMeta, ann string) bool { + _, found := obj.Annotations[ann] + return found +} + +// SetMetaDataAnnotation sets the annotation and value +func SetMetaDataAnnotation(obj *ObjectMeta, ann string, value string) { + if obj.Annotations == nil { + obj.Annotations = make(map[string]string) + } + obj.Annotations[ann] = value +} + +// SingleObject returns a ListOptions for watching a single object. +func SingleObject(meta ObjectMeta) ListOptions { + return ListOptions{ + FieldSelector: fields.OneTermEqualSelector("metadata.name", meta.Name).String(), + ResourceVersion: meta.ResourceVersion, + } +} + +// NewDeleteOptions returns a DeleteOptions indicating the resource should +// be deleted within the specified grace period. Use zero to indicate +// immediate deletion. If you would prefer to use the default grace period, +// use &metav1.DeleteOptions{} directly. +func NewDeleteOptions(grace int64) *DeleteOptions { + return &DeleteOptions{GracePeriodSeconds: &grace} +} + +// NewPreconditionDeleteOptions returns a DeleteOptions with a UID precondition set. +func NewPreconditionDeleteOptions(uid string) *DeleteOptions { + u := types.UID(uid) + p := Preconditions{UID: &u} + return &DeleteOptions{Preconditions: &p} +} + +// NewUIDPreconditions returns a Preconditions with UID set. +func NewUIDPreconditions(uid string) *Preconditions { + u := types.UID(uid) + return &Preconditions{UID: &u} +} + +// HasObjectMetaSystemFieldValues returns true if fields that are managed by the system on ObjectMeta have values. +func HasObjectMetaSystemFieldValues(meta Object) bool { + return !meta.GetCreationTimestamp().Time.IsZero() || + len(meta.GetUID()) != 0 +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers_test.go new file mode 100644 index 000000000..fba6b158e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/helpers_test.go @@ -0,0 +1,154 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/labels" +) + +func TestLabelSelectorAsSelector(t *testing.T) { + matchLabels := map[string]string{"foo": "bar"} + matchExpressions := []LabelSelectorRequirement{{ + Key: "baz", + Operator: LabelSelectorOpIn, + Values: []string{"qux", "norf"}, + }} + mustParse := func(s string) labels.Selector { + out, e := labels.Parse(s) + if e != nil { + panic(e) + } + return out + } + tc := []struct { + in *LabelSelector + out labels.Selector + expectErr bool + }{ + {in: nil, out: labels.Nothing()}, + {in: &LabelSelector{}, out: labels.Everything()}, + { + in: &LabelSelector{MatchLabels: matchLabels}, + out: mustParse("foo=bar"), + }, + { + in: &LabelSelector{MatchExpressions: matchExpressions}, + out: mustParse("baz in (norf,qux)"), + }, + { + in: &LabelSelector{MatchLabels: matchLabels, MatchExpressions: matchExpressions}, + out: mustParse("baz in (norf,qux),foo=bar"), + }, + { + in: &LabelSelector{ + MatchExpressions: []LabelSelectorRequirement{{ + Key: "baz", + Operator: LabelSelectorOpExists, + Values: []string{"qux", "norf"}, + }}, + }, + expectErr: true, + }, + } + + for i, tc := range tc { + out, err := LabelSelectorAsSelector(tc.in) + if err == nil && tc.expectErr { + t.Errorf("[%v]expected error but got none.", i) + } + if err != nil && !tc.expectErr { + t.Errorf("[%v]did not expect error but got: %v", i, err) + } + if !reflect.DeepEqual(out, tc.out) { + t.Errorf("[%v]expected:\n\t%+v\nbut got:\n\t%+v", i, tc.out, out) + } + } +} + +func TestLabelSelectorAsMap(t *testing.T) { + matchLabels := map[string]string{"foo": "bar"} + matchExpressions := func(operator LabelSelectorOperator, values []string) []LabelSelectorRequirement { + return []LabelSelectorRequirement{{ + Key: "baz", + Operator: operator, + Values: values, + }} + } + + tests := []struct { + in *LabelSelector + out map[string]string + errString string + }{ + {in: nil, out: nil}, + { + in: &LabelSelector{MatchLabels: matchLabels}, + out: map[string]string{"foo": "bar"}, + }, + { + in: &LabelSelector{MatchLabels: matchLabels, MatchExpressions: matchExpressions(LabelSelectorOpIn, []string{"norf"})}, + out: map[string]string{"foo": "bar", "baz": "norf"}, + }, + { + in: &LabelSelector{MatchExpressions: matchExpressions(LabelSelectorOpIn, []string{"norf"})}, + out: map[string]string{"baz": "norf"}, + }, + { + in: &LabelSelector{MatchLabels: matchLabels, MatchExpressions: matchExpressions(LabelSelectorOpIn, []string{"norf", "qux"})}, + out: map[string]string{"foo": "bar"}, + errString: "without a single value cannot be converted", + }, + { + in: &LabelSelector{MatchExpressions: matchExpressions(LabelSelectorOpNotIn, []string{"norf", "qux"})}, + out: map[string]string{}, + errString: "cannot be converted", + }, + { + in: &LabelSelector{MatchLabels: matchLabels, MatchExpressions: matchExpressions(LabelSelectorOpExists, []string{})}, + out: map[string]string{"foo": "bar"}, + errString: "cannot be converted", + }, + { + in: &LabelSelector{MatchExpressions: matchExpressions(LabelSelectorOpDoesNotExist, []string{})}, + out: map[string]string{}, + errString: "cannot be converted", + }, + } + + for i, tc := range tests { + out, err := LabelSelectorAsMap(tc.in) + if err == nil && len(tc.errString) > 0 { + t.Errorf("[%v]expected error but got none.", i) + continue + } + if err != nil && len(tc.errString) == 0 { + t.Errorf("[%v]did not expect error but got: %v", i, err) + continue + } + if err != nil && len(tc.errString) > 0 && !strings.Contains(err.Error(), tc.errString) { + t.Errorf("[%v]expected error with %q but got: %v", i, tc.errString, err) + continue + } + if !reflect.DeepEqual(out, tc.out) { + t.Errorf("[%v]expected:\n\t%+v\nbut got:\n\t%+v", i, tc.out, out) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go new file mode 100644 index 000000000..8b4c0423e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go @@ -0,0 +1,75 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// Clones the given selector and returns a new selector with the given key and value added. +// Returns the given selector, if labelKey is empty. +func CloneSelectorAndAddLabel(selector *LabelSelector, labelKey, labelValue string) *LabelSelector { + if labelKey == "" { + // Don't need to add a label. + return selector + } + + // Clone. + newSelector := new(LabelSelector) + + // TODO(madhusudancs): Check if you can use deepCopy_extensions_LabelSelector here. + newSelector.MatchLabels = make(map[string]string) + if selector.MatchLabels != nil { + for key, val := range selector.MatchLabels { + newSelector.MatchLabels[key] = val + } + } + newSelector.MatchLabels[labelKey] = labelValue + + if selector.MatchExpressions != nil { + newMExps := make([]LabelSelectorRequirement, len(selector.MatchExpressions)) + for i, me := range selector.MatchExpressions { + newMExps[i].Key = me.Key + newMExps[i].Operator = me.Operator + if me.Values != nil { + newMExps[i].Values = make([]string, len(me.Values)) + copy(newMExps[i].Values, me.Values) + } else { + newMExps[i].Values = nil + } + } + newSelector.MatchExpressions = newMExps + } else { + newSelector.MatchExpressions = nil + } + + return newSelector +} + +// AddLabelToSelector returns a selector with the given key and value added to the given selector's MatchLabels. +func AddLabelToSelector(selector *LabelSelector, labelKey, labelValue string) *LabelSelector { + if labelKey == "" { + // Don't need to add a label. + return selector + } + if selector.MatchLabels == nil { + selector.MatchLabels = make(map[string]string) + } + selector.MatchLabels[labelKey] = labelValue + return selector +} + +// SelectorHasLabel checks if the given selector contains the given label key in its MatchLabels +func SelectorHasLabel(selector *LabelSelector, labelKey string) bool { + return len(selector.MatchLabels[labelKey]) > 0 +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go new file mode 100644 index 000000000..b1bccad40 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go @@ -0,0 +1,120 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "reflect" + "testing" +) + +func TestCloneSelectorAndAddLabel(t *testing.T) { + labels := map[string]string{ + "foo1": "bar1", + "foo2": "bar2", + "foo3": "bar3", + } + + cases := []struct { + labels map[string]string + labelKey string + labelValue string + want map[string]string + }{ + { + labels: labels, + want: labels, + }, + { + labels: labels, + labelKey: "foo4", + labelValue: "89", + want: map[string]string{ + "foo1": "bar1", + "foo2": "bar2", + "foo3": "bar3", + "foo4": "89", + }, + }, + { + labels: nil, + labelKey: "foo4", + labelValue: "12", + want: map[string]string{ + "foo4": "12", + }, + }, + } + + for _, tc := range cases { + ls_in := LabelSelector{MatchLabels: tc.labels} + ls_out := LabelSelector{MatchLabels: tc.want} + + got := CloneSelectorAndAddLabel(&ls_in, tc.labelKey, tc.labelValue) + if !reflect.DeepEqual(got, &ls_out) { + t.Errorf("got %v, want %v", got, tc.want) + } + } +} + +func TestAddLabelToSelector(t *testing.T) { + labels := map[string]string{ + "foo1": "bar1", + "foo2": "bar2", + "foo3": "bar3", + } + + cases := []struct { + labels map[string]string + labelKey string + labelValue string + want map[string]string + }{ + { + labels: labels, + want: labels, + }, + { + labels: labels, + labelKey: "foo4", + labelValue: "89", + want: map[string]string{ + "foo1": "bar1", + "foo2": "bar2", + "foo3": "bar3", + "foo4": "89", + }, + }, + { + labels: nil, + labelKey: "foo4", + labelValue: "12", + want: map[string]string{ + "foo4": "12", + }, + }, + } + + for _, tc := range cases { + ls_in := LabelSelector{MatchLabels: tc.labels} + ls_out := LabelSelector{MatchLabels: tc.want} + + got := AddLabelToSelector(&ls_in, tc.labelKey, tc.labelValue) + if !reflect.DeepEqual(got, &ls_out) { + t.Errorf("got %v, want %v", got, tc.want) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go new file mode 100644 index 000000000..0ee7d99ca --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/meta.go @@ -0,0 +1,201 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" +) + +// TODO: move this, Object, List, and Type to a different package +type ObjectMetaAccessor interface { + GetObjectMeta() Object +} + +// Object lets you work with object metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field (Name, UID, Namespace on lists) will be a no-op and return +// a default value. +type Object interface { + GetNamespace() string + SetNamespace(namespace string) + GetName() string + SetName(name string) + GetGenerateName() string + SetGenerateName(name string) + GetUID() types.UID + SetUID(uid types.UID) + GetResourceVersion() string + SetResourceVersion(version string) + GetGeneration() int64 + SetGeneration(generation int64) + GetSelfLink() string + SetSelfLink(selfLink string) + GetCreationTimestamp() Time + SetCreationTimestamp(timestamp Time) + GetDeletionTimestamp() *Time + SetDeletionTimestamp(timestamp *Time) + GetDeletionGracePeriodSeconds() *int64 + SetDeletionGracePeriodSeconds(*int64) + GetLabels() map[string]string + SetLabels(labels map[string]string) + GetAnnotations() map[string]string + SetAnnotations(annotations map[string]string) + GetInitializers() *Initializers + SetInitializers(initializers *Initializers) + GetFinalizers() []string + SetFinalizers(finalizers []string) + GetOwnerReferences() []OwnerReference + SetOwnerReferences([]OwnerReference) + GetClusterName() string + SetClusterName(clusterName string) +} + +// ListMetaAccessor retrieves the list interface from an object +type ListMetaAccessor interface { + GetListMeta() List +} + +// List lets you work with list metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field will be a no-op and return a default value. +// TODO: move this, and TypeMeta and ListMeta, to a different package +type List interface { + GetResourceVersion() string + SetResourceVersion(version string) + GetSelfLink() string + SetSelfLink(selfLink string) +} + +// Type exposes the type and APIVersion of versioned or internal API objects. +// TODO: move this, and TypeMeta and ListMeta, to a different package +type Type interface { + GetAPIVersion() string + SetAPIVersion(version string) + GetKind() string + SetKind(kind string) +} + +func (meta *ListMeta) GetResourceVersion() string { return meta.ResourceVersion } +func (meta *ListMeta) SetResourceVersion(version string) { meta.ResourceVersion = version } +func (meta *ListMeta) GetSelfLink() string { return meta.SelfLink } +func (meta *ListMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } + +func (obj *TypeMeta) GetObjectKind() schema.ObjectKind { return obj } + +// SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} + +// GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *ListMeta) GetListMeta() List { return obj } + +func (obj *ObjectMeta) GetObjectMeta() Object { return obj } + +// Namespace implements metav1.Object for any object with an ObjectMeta typed field. Allows +// fast, direct access to metadata fields for API objects. +func (meta *ObjectMeta) GetNamespace() string { return meta.Namespace } +func (meta *ObjectMeta) SetNamespace(namespace string) { meta.Namespace = namespace } +func (meta *ObjectMeta) GetName() string { return meta.Name } +func (meta *ObjectMeta) SetName(name string) { meta.Name = name } +func (meta *ObjectMeta) GetGenerateName() string { return meta.GenerateName } +func (meta *ObjectMeta) SetGenerateName(generateName string) { meta.GenerateName = generateName } +func (meta *ObjectMeta) GetUID() types.UID { return meta.UID } +func (meta *ObjectMeta) SetUID(uid types.UID) { meta.UID = uid } +func (meta *ObjectMeta) GetResourceVersion() string { return meta.ResourceVersion } +func (meta *ObjectMeta) SetResourceVersion(version string) { meta.ResourceVersion = version } +func (meta *ObjectMeta) GetGeneration() int64 { return meta.Generation } +func (meta *ObjectMeta) SetGeneration(generation int64) { meta.Generation = generation } +func (meta *ObjectMeta) GetSelfLink() string { return meta.SelfLink } +func (meta *ObjectMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } +func (meta *ObjectMeta) GetCreationTimestamp() Time { return meta.CreationTimestamp } +func (meta *ObjectMeta) SetCreationTimestamp(creationTimestamp Time) { + meta.CreationTimestamp = creationTimestamp +} +func (meta *ObjectMeta) GetDeletionTimestamp() *Time { return meta.DeletionTimestamp } +func (meta *ObjectMeta) SetDeletionTimestamp(deletionTimestamp *Time) { + meta.DeletionTimestamp = deletionTimestamp +} +func (meta *ObjectMeta) GetDeletionGracePeriodSeconds() *int64 { return meta.DeletionGracePeriodSeconds } +func (meta *ObjectMeta) SetDeletionGracePeriodSeconds(deletionGracePeriodSeconds *int64) { + meta.DeletionGracePeriodSeconds = deletionGracePeriodSeconds +} +func (meta *ObjectMeta) GetLabels() map[string]string { return meta.Labels } +func (meta *ObjectMeta) SetLabels(labels map[string]string) { meta.Labels = labels } +func (meta *ObjectMeta) GetAnnotations() map[string]string { return meta.Annotations } +func (meta *ObjectMeta) SetAnnotations(annotations map[string]string) { meta.Annotations = annotations } +func (meta *ObjectMeta) GetInitializers() *Initializers { return meta.Initializers } +func (meta *ObjectMeta) SetInitializers(initializers *Initializers) { meta.Initializers = initializers } +func (meta *ObjectMeta) GetFinalizers() []string { return meta.Finalizers } +func (meta *ObjectMeta) SetFinalizers(finalizers []string) { meta.Finalizers = finalizers } + +func (meta *ObjectMeta) GetOwnerReferences() []OwnerReference { + if meta.OwnerReferences == nil { + return nil + } + ret := make([]OwnerReference, len(meta.OwnerReferences)) + for i := 0; i < len(meta.OwnerReferences); i++ { + ret[i].Kind = meta.OwnerReferences[i].Kind + ret[i].Name = meta.OwnerReferences[i].Name + ret[i].UID = meta.OwnerReferences[i].UID + ret[i].APIVersion = meta.OwnerReferences[i].APIVersion + if meta.OwnerReferences[i].Controller != nil { + value := *meta.OwnerReferences[i].Controller + ret[i].Controller = &value + } + if meta.OwnerReferences[i].BlockOwnerDeletion != nil { + value := *meta.OwnerReferences[i].BlockOwnerDeletion + ret[i].BlockOwnerDeletion = &value + } + } + return ret +} + +func (meta *ObjectMeta) SetOwnerReferences(references []OwnerReference) { + if references == nil { + meta.OwnerReferences = nil + return + } + newReferences := make([]OwnerReference, len(references)) + for i := 0; i < len(references); i++ { + newReferences[i].Kind = references[i].Kind + newReferences[i].Name = references[i].Name + newReferences[i].UID = references[i].UID + newReferences[i].APIVersion = references[i].APIVersion + if references[i].Controller != nil { + value := *references[i].Controller + newReferences[i].Controller = &value + } + if references[i].BlockOwnerDeletion != nil { + value := *references[i].BlockOwnerDeletion + newReferences[i].BlockOwnerDeletion = &value + } + } + meta.OwnerReferences = newReferences +} + +func (meta *ObjectMeta) GetClusterName() string { + return meta.ClusterName +} +func (meta *ObjectMeta) SetClusterName(clusterName string) { + meta.ClusterName = clusterName +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go new file mode 100644 index 000000000..d55f446b0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time.go @@ -0,0 +1,184 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "time" + + "k8s.io/apimachinery/pkg/openapi" + + "github.com/go-openapi/spec" + "github.com/google/gofuzz" +) + +const RFC3339Micro = "2006-01-02T15:04:05.000000Z07:00" + +// MicroTime is version of Time with microsecond level precision. +// +// +protobuf.options.marshal=false +// +protobuf.as=Timestamp +// +protobuf.options.(gogoproto.goproto_stringer)=false +type MicroTime struct { + time.Time `protobuf:"-"` +} + +// DeepCopy returns a deep-copy of the MicroTime value. The underlying time.Time +// type is effectively immutable in the time API, so it is safe to +// copy-by-assign, despite the presence of (unexported) Pointer fields. +func (t MicroTime) DeepCopy() MicroTime { + return t +} + +// String returns the representation of the time. +func (t MicroTime) String() string { + return t.Time.String() +} + +// NewMicroTime returns a wrapped instance of the provided time +func NewMicroTime(time time.Time) MicroTime { + return MicroTime{time} +} + +// DateMicro returns the MicroTime corresponding to the supplied parameters +// by wrapping time.Date. +func DateMicro(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) MicroTime { + return MicroTime{time.Date(year, month, day, hour, min, sec, nsec, loc)} +} + +// NowMicro returns the current local time. +func NowMicro() MicroTime { + return MicroTime{time.Now()} +} + +// IsZero returns true if the value is nil or time is zero. +func (t *MicroTime) IsZero() bool { + if t == nil { + return true + } + return t.Time.IsZero() +} + +// Before reports whether the time instant t is before u. +func (t MicroTime) Before(u MicroTime) bool { + return t.Time.Before(u.Time) +} + +// Equal reports whether the time instant t is equal to u. +func (t MicroTime) Equal(u MicroTime) bool { + return t.Time.Equal(u.Time) +} + +// BeforeTime reports whether the time instant t is before second-lever precision u. +func (t MicroTime) BeforeTime(u Time) bool { + return t.Time.Before(u.Time) +} + +// EqualTime reports whether the time instant t is equal to second-lever precision u. +func (t MicroTime) EqualTime(u Time) bool { + return t.Time.Equal(u.Time) +} + +// UnixMicro returns the local time corresponding to the given Unix time +// by wrapping time.Unix. +func UnixMicro(sec int64, nsec int64) MicroTime { + return MicroTime{time.Unix(sec, nsec)} +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (t *MicroTime) UnmarshalJSON(b []byte) error { + if len(b) == 4 && string(b) == "null" { + t.Time = time.Time{} + return nil + } + + var str string + json.Unmarshal(b, &str) + + pt, err := time.Parse(RFC3339Micro, str) + if err != nil { + return err + } + + t.Time = pt.Local() + return nil +} + +// UnmarshalQueryParameter converts from a URL query parameter value to an object +func (t *MicroTime) UnmarshalQueryParameter(str string) error { + if len(str) == 0 { + t.Time = time.Time{} + return nil + } + // Tolerate requests from older clients that used JSON serialization to build query params + if len(str) == 4 && str == "null" { + t.Time = time.Time{} + return nil + } + + pt, err := time.Parse(RFC3339Micro, str) + if err != nil { + return err + } + + t.Time = pt.Local() + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (t MicroTime) MarshalJSON() ([]byte, error) { + if t.IsZero() { + // Encode unset/nil objects as JSON's "null". + return []byte("null"), nil + } + + return json.Marshal(t.UTC().Format(RFC3339Micro)) +} + +func (_ MicroTime) OpenAPIDefinition() openapi.OpenAPIDefinition { + return openapi.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "date-time", + }, + }, + } +} + +// MarshalQueryParameter converts to a URL query parameter value +func (t MicroTime) MarshalQueryParameter() (string, error) { + if t.IsZero() { + // Encode unset/nil objects as an empty string + return "", nil + } + + return t.UTC().Format(RFC3339Micro), nil +} + +// Fuzz satisfies fuzz.Interface. +func (t *MicroTime) Fuzz(c fuzz.Continue) { + if t == nil { + return + } + // Allow for about 1000 years of randomness. Leave off nanoseconds + // because JSON doesn't represent them so they can't round-trip + // properly. + t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60*1000*1000), 0) +} + +var _ fuzz.Interface = &MicroTime{} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go new file mode 100644 index 000000000..14841be51 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_proto.go @@ -0,0 +1,72 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "time" +) + +// Timestamp is declared in time_proto.go + +// Timestamp returns the Time as a new Timestamp value. +func (m *MicroTime) ProtoMicroTime() *Timestamp { + if m == nil { + return &Timestamp{} + } + return &Timestamp{ + Seconds: m.Time.Unix(), + Nanos: int32(m.Time.Nanosecond()), + } +} + +// Size implements the protobuf marshalling interface. +func (m *MicroTime) Size() (n int) { + if m == nil || m.Time.IsZero() { + return 0 + } + return m.ProtoMicroTime().Size() +} + +// Reset implements the protobuf marshalling interface. +func (m *MicroTime) Unmarshal(data []byte) error { + if len(data) == 0 { + m.Time = time.Time{} + return nil + } + p := Timestamp{} + if err := p.Unmarshal(data); err != nil { + return err + } + m.Time = time.Unix(p.Seconds, int64(p.Nanos)).Local() + return nil +} + +// Marshal implements the protobuf marshalling interface. +func (m *MicroTime) Marshal() (data []byte, err error) { + if m == nil || m.Time.IsZero() { + return nil, nil + } + return m.ProtoMicroTime().Marshal() +} + +// MarshalTo implements the protobuf marshalling interface. +func (m *MicroTime) MarshalTo(data []byte) (int, error) { + if m == nil || m.Time.IsZero() { + return 0, nil + } + return m.ProtoMicroTime().MarshalTo(data) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_test.go new file mode 100644 index 000000000..339610aeb --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_test.go @@ -0,0 +1,139 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "reflect" + "testing" + "time" + + "github.com/ghodss/yaml" +) + +type MicroTimeHolder struct { + T MicroTime `json:"t"` +} + +func TestMicroTimeMarshalYAML(t *testing.T) { + cases := []struct { + input MicroTime + result string + }{ + {MicroTime{}, "t: null\n"}, + {DateMicro(1998, time.May, 5, 1, 5, 5, 50, time.FixedZone("test", -4*60*60)), "t: 1998-05-05T05:05:05.000000Z\n"}, + {DateMicro(1998, time.May, 5, 5, 5, 5, 0, time.UTC), "t: 1998-05-05T05:05:05.000000Z\n"}, + } + + for _, c := range cases { + input := MicroTimeHolder{c.input} + result, err := yaml.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input: '%v': %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input: '%v': expected %+v, got %q", input, c.result, string(result)) + } + } +} + +func TestMicroTimeUnmarshalYAML(t *testing.T) { + cases := []struct { + input string + result MicroTime + }{ + {"t: null\n", MicroTime{}}, + {"t: 1998-05-05T05:05:05.000000Z\n", MicroTime{Date(1998, time.May, 5, 5, 5, 5, 0, time.UTC).Local()}}, + } + + for _, c := range cases { + var result MicroTimeHolder + if err := yaml.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if result.T != c.result { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestMicroTimeMarshalJSON(t *testing.T) { + cases := []struct { + input MicroTime + result string + }{ + {MicroTime{}, "{\"t\":null}"}, + {DateMicro(1998, time.May, 5, 5, 5, 5, 50, time.UTC), "{\"t\":\"1998-05-05T05:05:05.000000Z\"}"}, + {DateMicro(1998, time.May, 5, 5, 5, 5, 0, time.UTC), "{\"t\":\"1998-05-05T05:05:05.000000Z\"}"}, + } + + for _, c := range cases { + input := MicroTimeHolder{c.input} + result, err := json.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input: '%v': %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input: '%v': expected %+v, got %q", input, c.result, string(result)) + } + } +} + +func TestMicroTimeUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result MicroTime + }{ + {"{\"t\":null}", MicroTime{}}, + {"{\"t\":\"1998-05-05T05:05:05.000000Z\"}", MicroTime{Date(1998, time.May, 5, 5, 5, 5, 0, time.UTC).Local()}}, + } + + for _, c := range cases { + var result MicroTimeHolder + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if result.T != c.result { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestMicroTimeProto(t *testing.T) { + cases := []struct { + input MicroTime + }{ + {MicroTime{}}, + {DateMicro(1998, time.May, 5, 1, 5, 5, 50, time.Local)}, + {DateMicro(1998, time.May, 5, 5, 5, 5, 0, time.Local)}, + } + + for _, c := range cases { + input := c.input + data, err := input.Marshal() + if err != nil { + t.Fatalf("Failed to marshal input: '%v': %v", input, err) + } + time := MicroTime{} + if err := time.Unmarshal(data); err != nil { + t.Fatalf("Failed to unmarshal output: '%v': %v", input, err) + } + if !reflect.DeepEqual(input, time) { + t.Errorf("Marshal->Unmarshal is not idempotent: '%v' vs '%v'", input, time) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go new file mode 100644 index 000000000..6e449a436 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/register.go @@ -0,0 +1,95 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name for this API. +const GroupName = "meta.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Unversioned is group version for unversioned API objects +// TODO: this should be v1 probably +var Unversioned = schema.GroupVersion{Group: "", Version: "v1"} + +// WatchEventKind is name reserved for serializing watch events. +const WatchEventKind = "WatchEvent" + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// AddToGroupVersion registers common meta types into schemas. +func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) { + scheme.AddKnownTypeWithName(groupVersion.WithKind(WatchEventKind), &WatchEvent{}) + scheme.AddKnownTypeWithName( + schema.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}.WithKind(WatchEventKind), + &InternalEvent{}, + ) + // Supports legacy code paths, most callers should use metav1.ParameterCodec for now + scheme.AddKnownTypes(groupVersion, + &ListOptions{}, + &ExportOptions{}, + &GetOptions{}, + &DeleteOptions{}, + ) + scheme.AddConversionFuncs( + Convert_versioned_Event_to_watch_Event, + Convert_versioned_InternalEvent_to_versioned_Event, + Convert_watch_Event_to_versioned_Event, + Convert_versioned_Event_to_versioned_InternalEvent, + ) + + // Register Unversioned types under their own special group + scheme.AddUnversionedTypes(Unversioned, + &Status{}, + &APIVersions{}, + &APIGroupList{}, + &APIGroup{}, + &APIResourceList{}, + ) + + // register manually. This usually goes through the SchemeBuilder, which we cannot use here. + scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...) + AddConversionFuncs(scheme) + RegisterDefaults(scheme) +} + +// scheme is the registry for the common types that adhere to the meta v1 API spec. +var scheme = runtime.NewScheme() + +// ParameterCodec knows about query parameters used with the meta v1 API spec. +var ParameterCodec = runtime.NewParameterCodec(scheme) + +func init() { + scheme.AddUnversionedTypes(SchemeGroupVersion, + &ListOptions{}, + &ExportOptions{}, + &GetOptions{}, + &DeleteOptions{}, + ) + + // register manually. This usually goes through the SchemeBuilder, which we cannot use here. + scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...) + RegisterDefaults(scheme) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go new file mode 100644 index 000000000..a1e01f344 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time.go @@ -0,0 +1,180 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "time" + + "k8s.io/apimachinery/pkg/openapi" + + "github.com/go-openapi/spec" + "github.com/google/gofuzz" +) + +// Time is a wrapper around time.Time which supports correct +// marshaling to YAML and JSON. Wrappers are provided for many +// of the factory methods that the time package offers. +// +// +protobuf.options.marshal=false +// +protobuf.as=Timestamp +// +protobuf.options.(gogoproto.goproto_stringer)=false +type Time struct { + time.Time `protobuf:"-"` +} + +// DeepCopy returns a deep-copy of the Time value. The underlying time.Time +// type is effectively immutable in the time API, so it is safe to +// copy-by-assign, despite the presence of (unexported) Pointer fields. +func (t Time) DeepCopy() Time { + return t +} + +// String returns the representation of the time. +func (t Time) String() string { + return t.Time.String() +} + +// NewTime returns a wrapped instance of the provided time +func NewTime(time time.Time) Time { + return Time{time} +} + +// Date returns the Time corresponding to the supplied parameters +// by wrapping time.Date. +func Date(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) Time { + return Time{time.Date(year, month, day, hour, min, sec, nsec, loc)} +} + +// Now returns the current local time. +func Now() Time { + return Time{time.Now()} +} + +// IsZero returns true if the value is nil or time is zero. +func (t *Time) IsZero() bool { + if t == nil { + return true + } + return t.Time.IsZero() +} + +// Before reports whether the time instant t is before u. +func (t Time) Before(u Time) bool { + return t.Time.Before(u.Time) +} + +// Equal reports whether the time instant t is equal to u. +func (t Time) Equal(u Time) bool { + return t.Time.Equal(u.Time) +} + +// Unix returns the local time corresponding to the given Unix time +// by wrapping time.Unix. +func Unix(sec int64, nsec int64) Time { + return Time{time.Unix(sec, nsec)} +} + +// Rfc3339Copy returns a copy of the Time at second-level precision. +func (t Time) Rfc3339Copy() Time { + copied, _ := time.Parse(time.RFC3339, t.Format(time.RFC3339)) + return Time{copied} +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (t *Time) UnmarshalJSON(b []byte) error { + if len(b) == 4 && string(b) == "null" { + t.Time = time.Time{} + return nil + } + + var str string + json.Unmarshal(b, &str) + + pt, err := time.Parse(time.RFC3339, str) + if err != nil { + return err + } + + t.Time = pt.Local() + return nil +} + +// UnmarshalQueryParameter converts from a URL query parameter value to an object +func (t *Time) UnmarshalQueryParameter(str string) error { + if len(str) == 0 { + t.Time = time.Time{} + return nil + } + // Tolerate requests from older clients that used JSON serialization to build query params + if len(str) == 4 && str == "null" { + t.Time = time.Time{} + return nil + } + + pt, err := time.Parse(time.RFC3339, str) + if err != nil { + return err + } + + t.Time = pt.Local() + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (t Time) MarshalJSON() ([]byte, error) { + if t.IsZero() { + // Encode unset/nil objects as JSON's "null". + return []byte("null"), nil + } + + return json.Marshal(t.UTC().Format(time.RFC3339)) +} + +func (_ Time) OpenAPIDefinition() openapi.OpenAPIDefinition { + return openapi.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "date-time", + }, + }, + } +} + +// MarshalQueryParameter converts to a URL query parameter value +func (t Time) MarshalQueryParameter() (string, error) { + if t.IsZero() { + // Encode unset/nil objects as an empty string + return "", nil + } + + return t.UTC().Format(time.RFC3339), nil +} + +// Fuzz satisfies fuzz.Interface. +func (t *Time) Fuzz(c fuzz.Continue) { + if t == nil { + return + } + // Allow for about 1000 years of randomness. Leave off nanoseconds + // because JSON doesn't represent them so they can't round-trip + // properly. + t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60), 0) +} + +var _ fuzz.Interface = &Time{} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go new file mode 100644 index 000000000..5520529dd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto.go @@ -0,0 +1,85 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "time" +) + +// Timestamp is a struct that is equivalent to Time, but intended for +// protobuf marshalling/unmarshalling. It is generated into a serialization +// that matches Time. Do not use in Go structs. +type Timestamp struct { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + Seconds int64 `json:"seconds" protobuf:"varint,1,opt,name=seconds"` + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + Nanos int32 `json:"nanos" protobuf:"varint,2,opt,name=nanos"` +} + +// Timestamp returns the Time as a new Timestamp value. +func (m *Time) ProtoTime() *Timestamp { + if m == nil { + return &Timestamp{} + } + return &Timestamp{ + Seconds: m.Time.Unix(), + Nanos: int32(m.Time.Nanosecond()), + } +} + +// Size implements the protobuf marshalling interface. +func (m *Time) Size() (n int) { + if m == nil || m.Time.IsZero() { + return 0 + } + return m.ProtoTime().Size() +} + +// Reset implements the protobuf marshalling interface. +func (m *Time) Unmarshal(data []byte) error { + if len(data) == 0 { + m.Time = time.Time{} + return nil + } + p := Timestamp{} + if err := p.Unmarshal(data); err != nil { + return err + } + m.Time = time.Unix(p.Seconds, int64(p.Nanos)).Local() + return nil +} + +// Marshal implements the protobuf marshalling interface. +func (m *Time) Marshal() (data []byte, err error) { + if m == nil || m.Time.IsZero() { + return nil, nil + } + return m.ProtoTime().Marshal() +} + +// MarshalTo implements the protobuf marshalling interface. +func (m *Time) MarshalTo(data []byte) (int, error) { + if m == nil || m.Time.IsZero() { + return 0, nil + } + return m.ProtoTime().MarshalTo(data) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go new file mode 100644 index 000000000..3ab1d5fd1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/time_test.go @@ -0,0 +1,173 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "reflect" + "testing" + "time" + + "github.com/ghodss/yaml" +) + +type TimeHolder struct { + T Time `json:"t"` +} + +func TestTimeMarshalYAML(t *testing.T) { + cases := []struct { + input Time + result string + }{ + {Time{}, "t: null\n"}, + {Date(1998, time.May, 5, 1, 5, 5, 50, time.FixedZone("test", -4*60*60)), "t: 1998-05-05T05:05:05Z\n"}, + {Date(1998, time.May, 5, 5, 5, 5, 0, time.UTC), "t: 1998-05-05T05:05:05Z\n"}, + } + + for _, c := range cases { + input := TimeHolder{c.input} + result, err := yaml.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input: '%v': %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input: '%v': expected %+v, got %q", input, c.result, string(result)) + } + } +} + +func TestTimeUnmarshalYAML(t *testing.T) { + cases := []struct { + input string + result Time + }{ + {"t: null\n", Time{}}, + {"t: 1998-05-05T05:05:05Z\n", Time{Date(1998, time.May, 5, 5, 5, 5, 0, time.UTC).Local()}}, + } + + for _, c := range cases { + var result TimeHolder + if err := yaml.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if result.T != c.result { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestTimeMarshalJSON(t *testing.T) { + cases := []struct { + input Time + result string + }{ + {Time{}, "{\"t\":null}"}, + {Date(1998, time.May, 5, 5, 5, 5, 50, time.UTC), "{\"t\":\"1998-05-05T05:05:05Z\"}"}, + {Date(1998, time.May, 5, 5, 5, 5, 0, time.UTC), "{\"t\":\"1998-05-05T05:05:05Z\"}"}, + } + + for _, c := range cases { + input := TimeHolder{c.input} + result, err := json.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input: '%v': %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input: '%v': expected %+v, got %q", input, c.result, string(result)) + } + } +} + +func TestTimeUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result Time + }{ + {"{\"t\":null}", Time{}}, + {"{\"t\":\"1998-05-05T05:05:05Z\"}", Time{Date(1998, time.May, 5, 5, 5, 5, 0, time.UTC).Local()}}, + } + + for _, c := range cases { + var result TimeHolder + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if result.T != c.result { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestTimeMarshalJSONUnmarshalYAML(t *testing.T) { + cases := []struct { + input Time + }{ + {Time{}}, + {Date(1998, time.May, 5, 5, 5, 5, 50, time.Local).Rfc3339Copy()}, + {Date(1998, time.May, 5, 5, 5, 5, 0, time.Local).Rfc3339Copy()}, + } + + for i, c := range cases { + input := TimeHolder{c.input} + jsonMarshalled, err := json.Marshal(&input) + if err != nil { + t.Errorf("%d-1: Failed to marshal input: '%v': %v", i, input, err) + } + + var result TimeHolder + err = yaml.Unmarshal(jsonMarshalled, &result) + if err != nil { + t.Errorf("%d-2: Failed to unmarshal '%+v': %v", i, string(jsonMarshalled), err) + } + + iN, iO := input.T.Zone() + oN, oO := result.T.Zone() + if iN != oN || iO != oO { + t.Errorf("%d-3: Time zones differ before and after serialization %s:%d %s:%d", i, iN, iO, oN, oO) + } + + if input.T.UnixNano() != result.T.UnixNano() { + t.Errorf("%d-4: Failed to marshal input '%#v': got %#v", i, input, result) + } + } +} + +func TestTimeProto(t *testing.T) { + cases := []struct { + input Time + }{ + {Time{}}, + {Date(1998, time.May, 5, 1, 5, 5, 50, time.Local)}, + {Date(1998, time.May, 5, 5, 5, 5, 0, time.Local)}, + } + + for _, c := range cases { + input := c.input + data, err := input.Marshal() + if err != nil { + t.Fatalf("Failed to marshal input: '%v': %v", input, err) + } + time := Time{} + if err := time.Unmarshal(data); err != nil { + t.Fatalf("Failed to unmarshal output: '%v': %v", input, err) + } + if !reflect.DeepEqual(input, time) { + t.Errorf("Marshal->Unmarshal is not idempotent: '%v' vs '%v'", input, time) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go new file mode 100644 index 000000000..c5ac31f79 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go @@ -0,0 +1,843 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package unversioned contains API types that are common to all versions. +// +// The package contains two categories of types: +// - external (serialized) types that lack their own version (e.g TypeMeta) +// - internal (never-serialized) types that are needed by several different +// api groups, and so live here, to avoid duplication and/or import loops +// (e.g. LabelSelector). +// In the future, we will probably move these categories of objects into +// separate packages. +package v1 + +import ( + "fmt" + "strings" + + "k8s.io/apimachinery/pkg/types" +) + +// TypeMeta describes an individual object in an API response or request +// with strings representing the type of the object and its API schema version. +// Structures that are versioned or persisted should inline TypeMeta. +type TypeMeta struct { + // Kind is a string value representing the REST resource this object represents. + // Servers may infer this from the endpoint the client submits requests to. + // Cannot be updated. + // In CamelCase. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + + // APIVersion defines the versioned schema of this representation of an object. + // Servers should convert recognized schemas to the latest internal value, and + // may reject unrecognized values. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt,name=apiVersion"` +} + +// ListMeta describes metadata that synthetic resources must have, including lists and +// various status objects. A resource may have only one of {ObjectMeta, ListMeta}. +type ListMeta struct { + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,1,opt,name=selfLink"` + + // String that identifies the server's internal version of this object that + // can be used by clients to determine when objects have changed. + // Value must be treated as opaque by clients and passed unmodified back to the server. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"` +} + +// These are internal finalizer values for Kubernetes-like APIs, must be qualified name unless defined here +const ( + FinalizerOrphanDependents string = "orphan" + FinalizerDeleteDependents string = "foregroundDeletion" +) + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +type ObjectMeta struct { + // Name must be unique within a namespace. Is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // Cannot be updated. + // More info: http://kubernetes.io/docs/user-guide/identifiers#names + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // GenerateName is an optional prefix, used by the server, to generate a unique + // name ONLY IF the Name field has not been provided. + // If this field is used, the name returned to the client will be different + // than the name passed. This value will also be combined with a unique suffix. + // The provided value has the same validation rules as the Name field, + // and may be truncated by the length of the suffix required to make the value + // unique on the server. + // + // If this field is specified and the generated name exists, the server will + // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // + // Applied only if Name is not specified. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency + // +optional + GenerateName string `json:"generateName,omitempty" protobuf:"bytes,2,opt,name=generateName"` + + // Namespace defines the space within each name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // + // Must be a DNS_LABEL. + // Cannot be updated. + // More info: http://kubernetes.io/docs/user-guide/namespaces + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"` + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,4,opt,name=selfLink"` + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // + // Populated by the system. + // Read-only. + // More info: http://kubernetes.io/docs/user-guide/identifiers#uids + // +optional + UID types.UID `json:"uid,omitempty" protobuf:"bytes,5,opt,name=uid,casttype=k8s.io/kubernetes/pkg/types.UID"` + + // An opaque value that represents the internal version of this object that can + // be used by clients to determine when objects have changed. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and passed unmodified back to the server. + // They may only be valid for a particular resource or set of resources. + // + // Populated by the system. + // Read-only. + // Value must be treated as opaque by clients and . + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,6,opt,name=resourceVersion"` + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + // +optional + Generation int64 `json:"generation,omitempty" protobuf:"varint,7,opt,name=generation"` + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. + // Read-only. + // Null for lists. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + CreationTimestamp Time `json:"creationTimestamp,omitempty" protobuf:"bytes,8,opt,name=creationTimestamp"` + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource is expected to be deleted (no longer visible + // from resource lists, and not reachable by name) after the time in this field. Once set, + // this value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + DeletionTimestamp *Time `json:"deletionTimestamp,omitempty" protobuf:"bytes,9,opt,name=deletionTimestamp"` + + // Number of seconds allowed for this object to gracefully terminate before + // it will be removed from the system. Only set when deletionTimestamp is also set. + // May only be shortened. + // Read-only. + // +optional + DeletionGracePeriodSeconds *int64 `json:"deletionGracePeriodSeconds,omitempty" protobuf:"varint,10,opt,name=deletionGracePeriodSeconds"` + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // More info: http://kubernetes.io/docs/user-guide/labels + // +optional + Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"` + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // More info: http://kubernetes.io/docs/user-guide/annotations + // +optional + Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,12,rep,name=annotations"` + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + // +optional + // +patchMergeKey=uid + // +patchStrategy=merge + OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" patchStrategy:"merge" patchMergeKey:"uid" protobuf:"bytes,13,rep,name=ownerReferences"` + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + Initializers *Initializers `json:"initializers,omitempty" protobuf:"bytes,16,opt,name=initializers"` + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + // +optional + // +patchStrategy=merge + Finalizers []string `json:"finalizers,omitempty" patchStrategy:"merge" protobuf:"bytes,14,rep,name=finalizers"` + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + // +optional + ClusterName string `json:"clusterName,omitempty" protobuf:"bytes,15,opt,name=clusterName"` +} + +// Initializers tracks the progress of initialization. +type Initializers struct { + // Pending is a list of initializers that must execute in order before this object is visible. + // When the last pending initializer is removed, and no failing result is set, the initializers + // struct will be set to nil and the object is considered as initialized and visible to all + // clients. + Pending []Initializer `json:"pending" protobuf:"bytes,1,rep,name=pending"` + // If result is set with the Failure field, the object will be persisted to storage and then deleted, + // ensuring that other clients can observe the deletion. + Result *Status `json:"result,omitempty" protobuf:"bytes,2,opt,name=result"` +} + +// Initializer is information about an initializer that has not yet completed. +type Initializer struct { + // name of the process that is responsible for initializing this object. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` +} + +const ( + // NamespaceDefault means the object is in the default namespace which is applied when not specified by clients + NamespaceDefault string = "default" + // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces + NamespaceAll string = "" + // NamespaceNone is the argument for a context when there is no namespace. + NamespaceNone string = "" + // NamespaceSystem is the system namespace where we place system components. + NamespaceSystem string = "kube-system" + // NamespacePublic is the namespace where we place public info (ConfigMaps) + NamespacePublic string = "kube-public" +) + +// OwnerReference contains enough information to let you identify an owning +// object. Currently, an owning object must be in the same namespace, so there +// is no namespace field. +type OwnerReference struct { + // API version of the referent. + APIVersion string `json:"apiVersion" protobuf:"bytes,5,opt,name=apiVersion"` + // Kind of the referent. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent. + // More info: http://kubernetes.io/docs/user-guide/identifiers#names + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` + // UID of the referent. + // More info: http://kubernetes.io/docs/user-guide/identifiers#uids + UID types.UID `json:"uid" protobuf:"bytes,4,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` + // If true, this reference points to the managing controller. + // +optional + Controller *bool `json:"controller,omitempty" protobuf:"varint,6,opt,name=controller"` + // If true, AND if the owner has the "foregroundDeletion" finalizer, then + // the owner cannot be deleted from the key-value store until this + // reference is removed. + // Defaults to false. + // To set this field, a user needs "delete" permission of the owner, + // otherwise 422 (Unprocessable Entity) will be returned. + // +optional + BlockOwnerDeletion *bool `json:"blockOwnerDeletion,omitempty" protobuf:"varint,7,opt,name=blockOwnerDeletion"` +} + +// ListOptions is the query options to a standard REST list call. +type ListOptions struct { + TypeMeta `json:",inline"` + + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + // +optional + LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + // +optional + FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"` + // If true, partially initialized resources are included in the response. + // +optional + IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,6,opt,name=includeUninitialized"` + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + // +optional + Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"` + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + // When specified for list: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"` + // Timeout for the list/watch call. + // +optional + TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` +} + +// ExportOptions is the query options to the standard REST get call. +type ExportOptions struct { + TypeMeta `json:",inline"` + // Should this value be exported. Export strips fields that a user can not specify. + Export bool `json:"export" protobuf:"varint,1,opt,name=export"` + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. + Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` +} + +// GetOptions is the standard query options to the standard REST get call. +type GetOptions struct { + TypeMeta `json:",inline"` + // When specified: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,1,opt,name=resourceVersion"` + // If true, partially initialized resources are included in the response. + // +optional + IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,2,opt,name=includeUninitialized"` +} + +// DeletionPropagation decides if a deletion will propagate to the dependents of +// the object, and how the garbage collector will handle the propagation. +type DeletionPropagation string + +const ( + // Orphans the dependents. + DeletePropagationOrphan DeletionPropagation = "Orphan" + // Deletes the object from the key-value store, the garbage collector will + // delete the dependents in the background. + DeletePropagationBackground DeletionPropagation = "Background" + // The object exists in the key-value store until the garbage collector + // deletes all the dependents whose ownerReference.blockOwnerDeletion=true + // from the key-value store. API sever will put the "foregroundDeletion" + // finalizer on the object, and sets its deletionTimestamp. This policy is + // cascading, i.e., the dependents will be deleted with Foreground. + DeletePropagationForeground DeletionPropagation = "Foreground" +) + +// DeleteOptions may be provided when deleting an API object. +type DeleteOptions struct { + TypeMeta `json:",inline"` + + // The duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // Defaults to a per object value if not specified. zero means delete immediately. + // +optional + GracePeriodSeconds *int64 `json:"gracePeriodSeconds,omitempty" protobuf:"varint,1,opt,name=gracePeriodSeconds"` + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + // +optional + Preconditions *Preconditions `json:"preconditions,omitempty" protobuf:"bytes,2,opt,name=preconditions"` + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + OrphanDependents *bool `json:"orphanDependents,omitempty" protobuf:"varint,3,opt,name=orphanDependents"` + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + PropagationPolicy *DeletionPropagation `json:"propagationPolicy,omitempty" protobuf:"varint,4,opt,name=propagationPolicy"` +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +type Preconditions struct { + // Specifies the target UID. + // +optional + UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` +} + +// Status is a return value for calls that don't return other objects. +type Status struct { + TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Status of the operation. + // One of: "Success" or "Failure". + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status string `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` + // A human-readable description of the status of this operation. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // A machine-readable description of why this operation is in the + // "Failure" status. If this value is empty there + // is no information available. A Reason clarifies an HTTP status + // code but does not override it. + // +optional + Reason StatusReason `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason,casttype=StatusReason"` + // Extended data associated with the reason. Each reason may define its + // own extended details. This field is optional and the data returned + // is not guaranteed to conform to any schema except that defined by + // the reason type. + // +optional + Details *StatusDetails `json:"details,omitempty" protobuf:"bytes,5,opt,name=details"` + // Suggested HTTP return code for this status, 0 if not set. + // +optional + Code int32 `json:"code,omitempty" protobuf:"varint,6,opt,name=code"` +} + +// StatusDetails is a set of additional properties that MAY be set by the +// server to provide additional information about a response. The Reason +// field of a Status object defines what attributes will be set. Clients +// must ignore fields that do not match the defined type of each attribute, +// and should assume that any attribute may be empty, invalid, or under +// defined. +type StatusDetails struct { + // The name attribute of the resource associated with the status StatusReason + // (when there is a single name which can be described). + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // The group attribute of the resource associated with the status StatusReason. + // +optional + Group string `json:"group,omitempty" protobuf:"bytes,2,opt,name=group"` + // The kind attribute of the resource associated with the status StatusReason. + // On some operations may differ from the requested resource Kind. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + Kind string `json:"kind,omitempty" protobuf:"bytes,3,opt,name=kind"` + // UID of the resource. + // (when there is a single resource which can be described). + // More info: http://kubernetes.io/docs/user-guide/identifiers#uids + // +optional + UID types.UID `json:"uid,omitempty" protobuf:"bytes,6,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` + // The Causes array includes more details associated with the StatusReason + // failure. Not all StatusReasons may provide detailed causes. + // +optional + Causes []StatusCause `json:"causes,omitempty" protobuf:"bytes,4,rep,name=causes"` + // If specified, the time in seconds before the operation should be retried. + // +optional + RetryAfterSeconds int32 `json:"retryAfterSeconds,omitempty" protobuf:"varint,5,opt,name=retryAfterSeconds"` +} + +// Values of Status.Status +const ( + StatusSuccess = "Success" + StatusFailure = "Failure" +) + +// StatusReason is an enumeration of possible failure causes. Each StatusReason +// must map to a single HTTP status code, but multiple reasons may map +// to the same HTTP status code. +// TODO: move to apiserver +type StatusReason string + +const ( + // StatusReasonUnknown means the server has declined to indicate a specific reason. + // The details field may contain other information about this error. + // Status code 500. + StatusReasonUnknown StatusReason = "" + + // StatusReasonUnauthorized means the server can be reached and understood the request, but requires + // the user to present appropriate authorization credentials (identified by the WWW-Authenticate header) + // in order for the action to be completed. If the user has specified credentials on the request, the + // server considers them insufficient. + // Status code 401 + StatusReasonUnauthorized StatusReason = "Unauthorized" + + // StatusReasonForbidden means the server can be reached and understood the request, but refuses + // to take any further action. It is the result of the server being configured to deny access for some reason + // to the requested resource by the client. + // Details (optional): + // "kind" string - the kind attribute of the forbidden resource + // on some operations may differ from the requested + // resource. + // "id" string - the identifier of the forbidden resource + // Status code 403 + StatusReasonForbidden StatusReason = "Forbidden" + + // StatusReasonNotFound means one or more resources required for this operation + // could not be found. + // Details (optional): + // "kind" string - the kind attribute of the missing resource + // on some operations may differ from the requested + // resource. + // "id" string - the identifier of the missing resource + // Status code 404 + StatusReasonNotFound StatusReason = "NotFound" + + // StatusReasonAlreadyExists means the resource you are creating already exists. + // Details (optional): + // "kind" string - the kind attribute of the conflicting resource + // "id" string - the identifier of the conflicting resource + // Status code 409 + StatusReasonAlreadyExists StatusReason = "AlreadyExists" + + // StatusReasonConflict means the requested operation cannot be completed + // due to a conflict in the operation. The client may need to alter the + // request. Each resource may define custom details that indicate the + // nature of the conflict. + // Status code 409 + StatusReasonConflict StatusReason = "Conflict" + + // StatusReasonGone means the item is no longer available at the server and no + // forwarding address is known. + // Status code 410 + StatusReasonGone StatusReason = "Gone" + + // StatusReasonInvalid means the requested create or update operation cannot be + // completed due to invalid data provided as part of the request. The client may + // need to alter the request. When set, the client may use the StatusDetails + // message field as a summary of the issues encountered. + // Details (optional): + // "kind" string - the kind attribute of the invalid resource + // "id" string - the identifier of the invalid resource + // "causes" - one or more StatusCause entries indicating the data in the + // provided resource that was invalid. The code, message, and + // field attributes will be set. + // Status code 422 + StatusReasonInvalid StatusReason = "Invalid" + + // StatusReasonServerTimeout means the server can be reached and understood the request, + // but cannot complete the action in a reasonable time. The client should retry the request. + // This is may be due to temporary server load or a transient communication issue with + // another server. Status code 500 is used because the HTTP spec provides no suitable + // server-requested client retry and the 5xx class represents actionable errors. + // Details (optional): + // "kind" string - the kind attribute of the resource being acted on. + // "id" string - the operation that is being attempted. + // "retryAfterSeconds" int32 - the number of seconds before the operation should be retried + // Status code 500 + StatusReasonServerTimeout StatusReason = "ServerTimeout" + + // StatusReasonTimeout means that the request could not be completed within the given time. + // Clients can get this response only when they specified a timeout param in the request, + // or if the server cannot complete the operation within a reasonable amount of time. + // The request might succeed with an increased value of timeout param. The client *should* + // wait at least the number of seconds specified by the retryAfterSeconds field. + // Details (optional): + // "retryAfterSeconds" int32 - the number of seconds before the operation should be retried + // Status code 504 + StatusReasonTimeout StatusReason = "Timeout" + + // StatusReasonBadRequest means that the request itself was invalid, because the request + // doesn't make any sense, for example deleting a read-only object. This is different than + // StatusReasonInvalid above which indicates that the API call could possibly succeed, but the + // data was invalid. API calls that return BadRequest can never succeed. + StatusReasonBadRequest StatusReason = "BadRequest" + + // StatusReasonMethodNotAllowed means that the action the client attempted to perform on the + // resource was not supported by the code - for instance, attempting to delete a resource that + // can only be created. API calls that return MethodNotAllowed can never succeed. + StatusReasonMethodNotAllowed StatusReason = "MethodNotAllowed" + + // StatusReasonInternalError indicates that an internal error occurred, it is unexpected + // and the outcome of the call is unknown. + // Details (optional): + // "causes" - The original error + // Status code 500 + StatusReasonInternalError StatusReason = "InternalError" + + // StatusReasonExpired indicates that the request is invalid because the content you are requesting + // has expired and is no longer available. It is typically associated with watches that can't be + // serviced. + // Status code 410 (gone) + StatusReasonExpired StatusReason = "Expired" + + // StatusReasonServiceUnavailable means that the request itself was valid, + // but the requested service is unavailable at this time. + // Retrying the request after some time might succeed. + // Status code 503 + StatusReasonServiceUnavailable StatusReason = "ServiceUnavailable" +) + +// StatusCause provides more information about an api.Status failure, including +// cases when multiple errors are encountered. +type StatusCause struct { + // A machine-readable description of the cause of the error. If this value is + // empty there is no information available. + // +optional + Type CauseType `json:"reason,omitempty" protobuf:"bytes,1,opt,name=reason,casttype=CauseType"` + // A human-readable description of the cause of the error. This field may be + // presented as-is to a reader. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` + // The field of the resource that has caused this error, as named by its JSON + // serialization. May include dot and postfix notation for nested attributes. + // Arrays are zero-indexed. Fields may appear more than once in an array of + // causes due to fields having multiple errors. + // Optional. + // + // Examples: + // "name" - the field "name" on the current resource + // "items[0].name" - the field "name" on the first array entry in "items" + // +optional + Field string `json:"field,omitempty" protobuf:"bytes,3,opt,name=field"` +} + +// CauseType is a machine readable value providing more detail about what +// occurred in a status response. An operation may have multiple causes for a +// status (whether Failure or Success). +type CauseType string + +const ( + // CauseTypeFieldValueNotFound is used to report failure to find a requested value + // (e.g. looking up an ID). + CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" + // CauseTypeFieldValueRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). + CauseTypeFieldValueRequired CauseType = "FieldValueRequired" + // CauseTypeFieldValueDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). + CauseTypeFieldValueDuplicate CauseType = "FieldValueDuplicate" + // CauseTypeFieldValueInvalid is used to report malformed values (e.g. failed regex + // match). + CauseTypeFieldValueInvalid CauseType = "FieldValueInvalid" + // CauseTypeFieldValueNotSupported is used to report valid (as per formatting rules) + // values that can not be handled (e.g. an enumerated string). + CauseTypeFieldValueNotSupported CauseType = "FieldValueNotSupported" + // CauseTypeUnexpectedServerResponse is used to report when the server responded to the client + // without the expected return type. The presence of this cause indicates the error may be + // due to an intervening proxy or the server software malfunctioning. + CauseTypeUnexpectedServerResponse CauseType = "UnexpectedServerResponse" +) + +// APIVersions lists the versions that are available, to allow clients to +// discover the API at /api, which is the root path of the legacy v1 API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type APIVersions struct { + TypeMeta `json:",inline"` + // versions are the api versions that are available. + Versions []string `json:"versions" protobuf:"bytes,1,rep,name=versions"` + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"` +} + +// APIGroupList is a list of APIGroup, to allow clients to discover the API at +// /apis. +type APIGroupList struct { + TypeMeta `json:",inline"` + // groups is a list of APIGroup. + Groups []APIGroup `json:"groups" protobuf:"bytes,1,rep,name=groups"` +} + +// APIGroup contains the name, the supported versions, and the preferred version +// of a group. +type APIGroup struct { + TypeMeta `json:",inline"` + // name is the name of the group. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // versions are the versions supported in this group. + Versions []GroupVersionForDiscovery `json:"versions" protobuf:"bytes,2,rep,name=versions"` + // preferredVersion is the version preferred by the API server, which + // probably is the storage version. + // +optional + PreferredVersion GroupVersionForDiscovery `json:"preferredVersion,omitempty" protobuf:"bytes,3,opt,name=preferredVersion"` + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,4,rep,name=serverAddressByClientCIDRs"` +} + +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +type ServerAddressByClientCIDR struct { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + ClientCIDR string `json:"clientCIDR" protobuf:"bytes,1,opt,name=clientCIDR"` + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + ServerAddress string `json:"serverAddress" protobuf:"bytes,2,opt,name=serverAddress"` +} + +// GroupVersion contains the "group/version" and "version" string of a version. +// It is made a struct to keep extensibility. +type GroupVersionForDiscovery struct { + // groupVersion specifies the API group and version in the form "group/version" + GroupVersion string `json:"groupVersion" protobuf:"bytes,1,opt,name=groupVersion"` + // version specifies the version in the form of "version". This is to save + // the clients the trouble of splitting the GroupVersion. + Version string `json:"version" protobuf:"bytes,2,opt,name=version"` +} + +// APIResource specifies the name of a resource and whether it is namespaced. +type APIResource struct { + // name is the plural name of the resource. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. + // The singularName is more correct for reporting status on a single item and both singular and plural are allowed + // from the kubectl CLI interface. + SingularName string `json:"singularName" protobuf:"bytes,6,opt,name=singularName"` + // namespaced indicates if a resource is namespaced or not. + Namespaced bool `json:"namespaced" protobuf:"varint,2,opt,name=namespaced"` + // kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') + Kind string `json:"kind" protobuf:"bytes,3,opt,name=kind"` + // verbs is a list of supported kube verbs (this includes get, list, watch, create, + // update, patch, delete, deletecollection, and proxy) + Verbs Verbs `json:"verbs" protobuf:"bytes,4,opt,name=verbs"` + // shortNames is a list of suggested short names of the resource. + ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,5,rep,name=shortNames"` + // categories is a list of the grouped resources this resource belongs to (e.g. 'all') + Categories []string `json:"categories,omitempty" protobuf:"bytes,7,rep,name=categories"` +} + +// Verbs masks the value so protobuf can generate +// +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type Verbs []string + +func (vs Verbs) String() string { + return fmt.Sprintf("%v", []string(vs)) +} + +// APIResourceList is a list of APIResource, it is used to expose the name of the +// resources supported in a specific group and version, and if the resource +// is namespaced. +type APIResourceList struct { + TypeMeta `json:",inline"` + // groupVersion is the group and version this APIResourceList is for. + GroupVersion string `json:"groupVersion" protobuf:"bytes,1,opt,name=groupVersion"` + // resources contains the name of the resources and if they are namespaced. + APIResources []APIResource `json:"resources" protobuf:"bytes,2,rep,name=resources"` +} + +// RootPaths lists the paths available at root. +// For example: "/healthz", "/apis". +type RootPaths struct { + // paths are the paths available at root. + Paths []string `json:"paths" protobuf:"bytes,1,rep,name=paths"` +} + +// TODO: remove me when watch is refactored +func LabelSelectorQueryParam(version string) string { + return "labelSelector" +} + +// TODO: remove me when watch is refactored +func FieldSelectorQueryParam(version string) string { + return "fieldSelector" +} + +// String returns available api versions as a human-friendly version string. +func (apiVersions APIVersions) String() string { + return strings.Join(apiVersions.Versions, ",") +} + +func (apiVersions APIVersions) GoString() string { + return apiVersions.String() +} + +// Patch is provided to give a concrete name and type to the Kubernetes PATCH request body. +type Patch struct{} + +// Note: +// There are two different styles of label selectors used in versioned types: +// an older style which is represented as just a string in versioned types, and a +// newer style that is structured. LabelSelector is an internal representation for the +// latter style. + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +type LabelSelector struct { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + // +optional + MatchLabels map[string]string `json:"matchLabels,omitempty" protobuf:"bytes,1,rep,name=matchLabels"` + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + // +optional + MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,2,rep,name=matchExpressions"` +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +type LabelSelectorRequirement struct { + // key is the label key that the selector applies to. + // +patchMergeKey=key + // +patchStrategy=merge + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + Operator LabelSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=LabelSelectorOperator"` + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + // +optional + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A label selector operator is the set of operators that can be used in a selector requirement. +type LabelSelectorOperator string + +const ( + LabelSelectorOpIn LabelSelectorOperator = "In" + LabelSelectorOpNotIn LabelSelectorOperator = "NotIn" + LabelSelectorOpExists LabelSelectorOperator = "Exists" + LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist" +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..159164d7c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_swagger_doc_generated.go @@ -0,0 +1,315 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_APIGroup = map[string]string{ + "": "APIGroup contains the name, the supported versions, and the preferred version of a group.", + "name": "name is the name of the group.", + "versions": "versions are the versions supported in this group.", + "preferredVersion": "preferredVersion is the version preferred by the API server, which probably is the storage version.", + "serverAddressByClientCIDRs": "a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.", +} + +func (APIGroup) SwaggerDoc() map[string]string { + return map_APIGroup +} + +var map_APIGroupList = map[string]string{ + "": "APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.", + "groups": "groups is a list of APIGroup.", +} + +func (APIGroupList) SwaggerDoc() map[string]string { + return map_APIGroupList +} + +var map_APIResource = map[string]string{ + "": "APIResource specifies the name of a resource and whether it is namespaced.", + "name": "name is the plural name of the resource.", + "singularName": "singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.", + "namespaced": "namespaced indicates if a resource is namespaced or not.", + "kind": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", + "verbs": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", + "shortNames": "shortNames is a list of suggested short names of the resource.", + "categories": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", +} + +func (APIResource) SwaggerDoc() map[string]string { + return map_APIResource +} + +var map_APIResourceList = map[string]string{ + "": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", + "groupVersion": "groupVersion is the group and version this APIResourceList is for.", + "resources": "resources contains the name of the resources and if they are namespaced.", +} + +func (APIResourceList) SwaggerDoc() map[string]string { + return map_APIResourceList +} + +var map_APIVersions = map[string]string{ + "": "APIVersions lists the versions that are available, to allow clients to discover the API at /api, which is the root path of the legacy v1 API.", + "versions": "versions are the api versions that are available.", + "serverAddressByClientCIDRs": "a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.", +} + +func (APIVersions) SwaggerDoc() map[string]string { + return map_APIVersions +} + +var map_DeleteOptions = map[string]string{ + "": "DeleteOptions may be provided when deleting an API object.", + "gracePeriodSeconds": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "preconditions": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", + "orphanDependents": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "propagationPolicy": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", +} + +func (DeleteOptions) SwaggerDoc() map[string]string { + return map_DeleteOptions +} + +var map_ExportOptions = map[string]string{ + "": "ExportOptions is the query options to the standard REST get call.", + "export": "Should this value be exported. Export strips fields that a user can not specify.", + "exact": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", +} + +func (ExportOptions) SwaggerDoc() map[string]string { + return map_ExportOptions +} + +var map_GetOptions = map[string]string{ + "": "GetOptions is the standard query options to the standard REST get call.", + "resourceVersion": "When specified: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "includeUninitialized": "If true, partially initialized resources are included in the response.", +} + +func (GetOptions) SwaggerDoc() map[string]string { + return map_GetOptions +} + +var map_GroupVersionForDiscovery = map[string]string{ + "": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", + "groupVersion": "groupVersion specifies the API group and version in the form \"group/version\"", + "version": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", +} + +func (GroupVersionForDiscovery) SwaggerDoc() map[string]string { + return map_GroupVersionForDiscovery +} + +var map_Initializer = map[string]string{ + "": "Initializer is information about an initializer that has not yet completed.", + "name": "name of the process that is responsible for initializing this object.", +} + +func (Initializer) SwaggerDoc() map[string]string { + return map_Initializer +} + +var map_Initializers = map[string]string{ + "": "Initializers tracks the progress of initialization.", + "pending": "Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.", + "result": "If result is set with the Failure field, the object will be persisted to storage and then deleted, ensuring that other clients can observe the deletion.", +} + +func (Initializers) SwaggerDoc() map[string]string { + return map_Initializers +} + +var map_LabelSelector = map[string]string{ + "": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "matchLabels": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "matchExpressions": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", +} + +func (LabelSelector) SwaggerDoc() map[string]string { + return map_LabelSelector +} + +var map_LabelSelectorRequirement = map[string]string{ + "": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "key is the label key that the selector applies to.", + "operator": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", + "values": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", +} + +func (LabelSelectorRequirement) SwaggerDoc() map[string]string { + return map_LabelSelectorRequirement +} + +var map_ListMeta = map[string]string{ + "": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "selfLink": "SelfLink is a URL representing this object. Populated by the system. Read-only.", + "resourceVersion": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", +} + +func (ListMeta) SwaggerDoc() map[string]string { + return map_ListMeta +} + +var map_ListOptions = map[string]string{ + "": "ListOptions is the query options to a standard REST list call.", + "labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "includeUninitialized": "If true, partially initialized resources are included in the response.", + "watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "timeoutSeconds": "Timeout for the list/watch call.", +} + +func (ListOptions) SwaggerDoc() map[string]string { + return map_ListOptions +} + +var map_ObjectMeta = map[string]string{ + "": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "name": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "generateName": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency", + "namespace": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces", + "selfLink": "SelfLink is a URL representing this object. Populated by the system. Read-only.", + "uid": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "resourceVersion": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", + "generation": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", + "creationTimestamp": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "deletionTimestamp": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "deletionGracePeriodSeconds": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", + "labels": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", + "annotations": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", + "ownerReferences": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", + "initializers": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.", + "finalizers": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.", + "clusterName": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", +} + +func (ObjectMeta) SwaggerDoc() map[string]string { + return map_ObjectMeta +} + +var map_OwnerReference = map[string]string{ + "": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", + "apiVersion": "API version of the referent.", + "kind": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "name": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "uid": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "controller": "If true, this reference points to the managing controller.", + "blockOwnerDeletion": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", +} + +func (OwnerReference) SwaggerDoc() map[string]string { + return map_OwnerReference +} + +var map_Patch = map[string]string{ + "": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", +} + +func (Patch) SwaggerDoc() map[string]string { + return map_Patch +} + +var map_Preconditions = map[string]string{ + "": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", + "uid": "Specifies the target UID.", +} + +func (Preconditions) SwaggerDoc() map[string]string { + return map_Preconditions +} + +var map_RootPaths = map[string]string{ + "": "RootPaths lists the paths available at root. For example: \"/healthz\", \"/apis\".", + "paths": "paths are the paths available at root.", +} + +func (RootPaths) SwaggerDoc() map[string]string { + return map_RootPaths +} + +var map_ServerAddressByClientCIDR = map[string]string{ + "": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", + "clientCIDR": "The CIDR with which clients can match their IP to figure out the server address that they should use.", + "serverAddress": "Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.", +} + +func (ServerAddressByClientCIDR) SwaggerDoc() map[string]string { + return map_ServerAddressByClientCIDR +} + +var map_Status = map[string]string{ + "": "Status is a return value for calls that don't return other objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "status": "Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "message": "A human-readable description of the status of this operation.", + "reason": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.", + "details": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.", + "code": "Suggested HTTP return code for this status, 0 if not set.", +} + +func (Status) SwaggerDoc() map[string]string { + return map_Status +} + +var map_StatusCause = map[string]string{ + "": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", + "reason": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", + "message": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", + "field": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"", +} + +func (StatusCause) SwaggerDoc() map[string]string { + return map_StatusCause +} + +var map_StatusDetails = map[string]string{ + "": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", + "name": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", + "group": "The group attribute of the resource associated with the status StatusReason.", + "kind": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "uid": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "causes": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", + "retryAfterSeconds": "If specified, the time in seconds before the operation should be retried.", +} + +func (StatusDetails) SwaggerDoc() map[string]string { + return map_StatusDetails +} + +var map_TypeMeta = map[string]string{ + "": "TypeMeta describes an individual object in an API response or request with strings representing the type of the object and its API schema version. Structures that are versioned or persisted should inline TypeMeta.", + "kind": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "apiVersion": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources", +} + +func (TypeMeta) SwaggerDoc() map[string]string { + return map_TypeMeta +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go new file mode 100644 index 000000000..b12134501 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types_test.go @@ -0,0 +1,134 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/ugorji/go/codec" +) + +func TestVerbsUgorjiMarshalJSON(t *testing.T) { + cases := []struct { + input APIResource + result string + }{ + {APIResource{}, `{"name":"","singularName":"","namespaced":false,"kind":"","verbs":null}`}, + {APIResource{Verbs: Verbs([]string{})}, `{"name":"","singularName":"","namespaced":false,"kind":"","verbs":[]}`}, + {APIResource{Verbs: Verbs([]string{"delete"})}, `{"name":"","singularName":"","namespaced":false,"kind":"","verbs":["delete"]}`}, + } + + for i, c := range cases { + result, err := json.Marshal(&c.input) + if err != nil { + t.Errorf("[%d] Failed to marshal input: '%v': %v", i, c.input, err) + } + if string(result) != c.result { + t.Errorf("[%d] Failed to marshal input: '%v': expected '%v', got '%v'", i, c.input, c.result, string(result)) + } + } +} + +func TestVerbsUgorjiUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result APIResource + }{ + {`{}`, APIResource{}}, + {`{"verbs":null}`, APIResource{}}, + {`{"verbs":[]}`, APIResource{Verbs: Verbs([]string{})}}, + {`{"verbs":["delete"]}`, APIResource{Verbs: Verbs([]string{"delete"})}}, + } + + for i, c := range cases { + var result APIResource + if err := codec.NewDecoderBytes([]byte(c.input), new(codec.JsonHandle)).Decode(&result); err != nil { + t.Errorf("[%d] Failed to unmarshal input '%v': %v", i, c.input, err) + } + if !reflect.DeepEqual(result, c.result) { + t.Errorf("[%d] Failed to unmarshal input '%v': expected %+v, got %+v", i, c.input, c.result, result) + } + } +} + +// TestUgorjiMarshalJSONWithOmit tests that we don't have regressions regarding nil and empty slices with "omit" +func TestUgorjiMarshalJSONWithOmit(t *testing.T) { + cases := []struct { + input LabelSelector + result string + }{ + {LabelSelector{}, `{}`}, + {LabelSelector{MatchExpressions: []LabelSelectorRequirement{}}, `{}`}, + {LabelSelector{MatchExpressions: []LabelSelectorRequirement{{}}}, `{"matchExpressions":[{"key":"","operator":""}]}`}, + } + + for i, c := range cases { + result, err := json.Marshal(&c.input) + if err != nil { + t.Errorf("[%d] Failed to marshal input: '%v': %v", i, c.input, err) + } + if string(result) != c.result { + t.Errorf("[%d] Failed to marshal input: '%v': expected '%v', got '%v'", i, c.input, c.result, string(result)) + } + } +} + +func TestVerbsUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result APIResource + }{ + {`{}`, APIResource{}}, + {`{"verbs":null}`, APIResource{}}, + {`{"verbs":[]}`, APIResource{Verbs: Verbs([]string{})}}, + {`{"verbs":["delete"]}`, APIResource{Verbs: Verbs([]string{"delete"})}}, + } + + for i, c := range cases { + var result APIResource + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("[%d] Failed to unmarshal input '%v': %v", i, c.input, err) + } + if !reflect.DeepEqual(result, c.result) { + t.Errorf("[%d] Failed to unmarshal input '%v': expected %+v, got %+v", i, c.input, c.result, result) + } + } +} + +func TestVerbsProto(t *testing.T) { + cases := []APIResource{ + {}, + {Verbs: Verbs([]string{})}, + {Verbs: Verbs([]string{"delete"})}, + } + + for _, input := range cases { + data, err := input.Marshal() + if err != nil { + t.Fatalf("Failed to marshal input: '%v': %v", input, err) + } + resource := APIResource{} + if err := resource.Unmarshal(data); err != nil { + t.Fatalf("Failed to unmarshal output: '%v': %v", input, err) + } + if !reflect.DeepEqual(input, resource) { + t.Errorf("Marshal->Unmarshal is not idempotent: '%v' vs '%v'", input, resource) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD new file mode 100644 index 000000000..b6b0d2bb5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["unstructured_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["unstructured.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go new file mode 100644 index 000000000..fed687e9b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured.go @@ -0,0 +1,752 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unstructured + +import ( + "bytes" + gojson "encoding/json" + "errors" + "fmt" + "io" + "strings" + + "github.com/golang/glog" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/json" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +// Unstructured allows objects that do not have Golang structs registered to be manipulated +// generically. This can be used to deal with the API objects from a plug-in. Unstructured +// objects still have functioning TypeMeta features-- kind, version, etc. +// +// WARNING: This object has accessors for the v1 standard metadata. You *MUST NOT* use this +// type if you are dealing with objects that are not in the server meta v1 schema. +// +// TODO: make the serialization part of this type distinct from the field accessors. +type Unstructured struct { + // Object is a JSON compatible map with string, float, int, bool, []interface{}, or + // map[string]interface{} + // children. + Object map[string]interface{} +} + +var _ metav1.Object = &Unstructured{} +var _ runtime.Unstructured = &Unstructured{} +var _ runtime.Unstructured = &UnstructuredList{} + +func (obj *Unstructured) GetObjectKind() schema.ObjectKind { return obj } +func (obj *UnstructuredList) GetObjectKind() schema.ObjectKind { return obj } + +func (obj *Unstructured) IsUnstructuredObject() {} +func (obj *UnstructuredList) IsUnstructuredObject() {} + +func (obj *Unstructured) IsList() bool { + if obj.Object != nil { + _, ok := obj.Object["items"] + return ok + } + return false +} +func (obj *UnstructuredList) IsList() bool { return true } + +func (obj *Unstructured) UnstructuredContent() map[string]interface{} { + if obj.Object == nil { + obj.Object = make(map[string]interface{}) + } + return obj.Object +} + +// UnstructuredContent returns a map contain an overlay of the Items field onto +// the Object field. Items always overwrites overlay. Changing "items" in the +// returned object will affect items in the underlying Items field, but changing +// the "items" slice itself will have no effect. +// TODO: expose SetUnstructuredContent on runtime.Unstructured that allows +// items to be changed. +func (obj *UnstructuredList) UnstructuredContent() map[string]interface{} { + out := obj.Object + if out == nil { + out = make(map[string]interface{}) + } + items := make([]interface{}, len(obj.Items)) + for i, item := range obj.Items { + items[i] = item.Object + } + out["items"] = items + return out +} + +// MarshalJSON ensures that the unstructured object produces proper +// JSON when passed to Go's standard JSON library. +func (u *Unstructured) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + err := UnstructuredJSONScheme.Encode(u, &buf) + return buf.Bytes(), err +} + +// UnmarshalJSON ensures that the unstructured object properly decodes +// JSON when passed to Go's standard JSON library. +func (u *Unstructured) UnmarshalJSON(b []byte) error { + _, _, err := UnstructuredJSONScheme.Decode(b, nil, u) + return err +} + +func getNestedField(obj map[string]interface{}, fields ...string) interface{} { + var val interface{} = obj + for _, field := range fields { + if _, ok := val.(map[string]interface{}); !ok { + return nil + } + val = val.(map[string]interface{})[field] + } + return val +} + +func getNestedString(obj map[string]interface{}, fields ...string) string { + if str, ok := getNestedField(obj, fields...).(string); ok { + return str + } + return "" +} + +func getNestedInt64(obj map[string]interface{}, fields ...string) int64 { + if str, ok := getNestedField(obj, fields...).(int64); ok { + return str + } + return 0 +} + +func getNestedInt64Pointer(obj map[string]interface{}, fields ...string) *int64 { + if str, ok := getNestedField(obj, fields...).(*int64); ok { + return str + } + return nil +} + +func getNestedSlice(obj map[string]interface{}, fields ...string) []string { + if m, ok := getNestedField(obj, fields...).([]interface{}); ok { + strSlice := make([]string, 0, len(m)) + for _, v := range m { + if str, ok := v.(string); ok { + strSlice = append(strSlice, str) + } + } + return strSlice + } + return nil +} + +func getNestedMap(obj map[string]interface{}, fields ...string) map[string]string { + if m, ok := getNestedField(obj, fields...).(map[string]interface{}); ok { + strMap := make(map[string]string, len(m)) + for k, v := range m { + if str, ok := v.(string); ok { + strMap[k] = str + } + } + return strMap + } + return nil +} + +func setNestedField(obj map[string]interface{}, value interface{}, fields ...string) { + m := obj + if len(fields) > 1 { + for _, field := range fields[0 : len(fields)-1] { + if _, ok := m[field].(map[string]interface{}); !ok { + m[field] = make(map[string]interface{}) + } + m = m[field].(map[string]interface{}) + } + } + m[fields[len(fields)-1]] = value +} + +func setNestedSlice(obj map[string]interface{}, value []string, fields ...string) { + m := make([]interface{}, 0, len(value)) + for _, v := range value { + m = append(m, v) + } + setNestedField(obj, m, fields...) +} + +func setNestedMap(obj map[string]interface{}, value map[string]string, fields ...string) { + m := make(map[string]interface{}, len(value)) + for k, v := range value { + m[k] = v + } + setNestedField(obj, m, fields...) +} + +func (u *Unstructured) setNestedField(value interface{}, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedField(u.Object, value, fields...) +} + +func (u *Unstructured) setNestedSlice(value []string, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedSlice(u.Object, value, fields...) +} + +func (u *Unstructured) setNestedMap(value map[string]string, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedMap(u.Object, value, fields...) +} + +func extractOwnerReference(src interface{}) metav1.OwnerReference { + v := src.(map[string]interface{}) + // though this field is a *bool, but when decoded from JSON, it's + // unmarshalled as bool. + var controllerPtr *bool + controller, ok := (getNestedField(v, "controller")).(bool) + if !ok { + controllerPtr = nil + } else { + controllerCopy := controller + controllerPtr = &controllerCopy + } + var blockOwnerDeletionPtr *bool + blockOwnerDeletion, ok := (getNestedField(v, "blockOwnerDeletion")).(bool) + if !ok { + blockOwnerDeletionPtr = nil + } else { + blockOwnerDeletionCopy := blockOwnerDeletion + blockOwnerDeletionPtr = &blockOwnerDeletionCopy + } + return metav1.OwnerReference{ + Kind: getNestedString(v, "kind"), + Name: getNestedString(v, "name"), + APIVersion: getNestedString(v, "apiVersion"), + UID: (types.UID)(getNestedString(v, "uid")), + Controller: controllerPtr, + BlockOwnerDeletion: blockOwnerDeletionPtr, + } +} + +func setOwnerReference(src metav1.OwnerReference) map[string]interface{} { + ret := make(map[string]interface{}) + setNestedField(ret, src.Kind, "kind") + setNestedField(ret, src.Name, "name") + setNestedField(ret, src.APIVersion, "apiVersion") + setNestedField(ret, string(src.UID), "uid") + // json.Unmarshal() extracts boolean json fields as bool, not as *bool and hence extractOwnerReference() + // expects bool or a missing field, not *bool. So if pointer is nil, fields are omitted from the ret object. + // If pointer is non-nil, they are set to the referenced value. + if src.Controller != nil { + setNestedField(ret, *src.Controller, "controller") + } + if src.BlockOwnerDeletion != nil { + setNestedField(ret, *src.BlockOwnerDeletion, "blockOwnerDeletion") + } + return ret +} + +func getOwnerReferences(object map[string]interface{}) ([]map[string]interface{}, error) { + field := getNestedField(object, "metadata", "ownerReferences") + if field == nil { + return nil, fmt.Errorf("cannot find field metadata.ownerReferences in %v", object) + } + ownerReferences, ok := field.([]map[string]interface{}) + if ok { + return ownerReferences, nil + } + // TODO: This is hacky... + interfaces, ok := field.([]interface{}) + if !ok { + return nil, fmt.Errorf("expect metadata.ownerReferences to be a slice in %#v", object) + } + ownerReferences = make([]map[string]interface{}, 0, len(interfaces)) + for i := 0; i < len(interfaces); i++ { + r, ok := interfaces[i].(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("expect element metadata.ownerReferences to be a map[string]interface{} in %#v", object) + } + ownerReferences = append(ownerReferences, r) + } + return ownerReferences, nil +} + +func (u *Unstructured) GetOwnerReferences() []metav1.OwnerReference { + original, err := getOwnerReferences(u.Object) + if err != nil { + glog.V(6).Info(err) + return nil + } + ret := make([]metav1.OwnerReference, 0, len(original)) + for i := 0; i < len(original); i++ { + ret = append(ret, extractOwnerReference(original[i])) + } + return ret +} + +func (u *Unstructured) SetOwnerReferences(references []metav1.OwnerReference) { + var newReferences = make([]map[string]interface{}, 0, len(references)) + for i := 0; i < len(references); i++ { + newReferences = append(newReferences, setOwnerReference(references[i])) + } + u.setNestedField(newReferences, "metadata", "ownerReferences") +} + +func (u *Unstructured) GetAPIVersion() string { + return getNestedString(u.Object, "apiVersion") +} + +func (u *Unstructured) SetAPIVersion(version string) { + u.setNestedField(version, "apiVersion") +} + +func (u *Unstructured) GetKind() string { + return getNestedString(u.Object, "kind") +} + +func (u *Unstructured) SetKind(kind string) { + u.setNestedField(kind, "kind") +} + +func (u *Unstructured) GetNamespace() string { + return getNestedString(u.Object, "metadata", "namespace") +} + +func (u *Unstructured) SetNamespace(namespace string) { + u.setNestedField(namespace, "metadata", "namespace") +} + +func (u *Unstructured) GetName() string { + return getNestedString(u.Object, "metadata", "name") +} + +func (u *Unstructured) SetName(name string) { + u.setNestedField(name, "metadata", "name") +} + +func (u *Unstructured) GetGenerateName() string { + return getNestedString(u.Object, "metadata", "generateName") +} + +func (u *Unstructured) SetGenerateName(name string) { + u.setNestedField(name, "metadata", "generateName") +} + +func (u *Unstructured) GetUID() types.UID { + return types.UID(getNestedString(u.Object, "metadata", "uid")) +} + +func (u *Unstructured) SetUID(uid types.UID) { + u.setNestedField(string(uid), "metadata", "uid") +} + +func (u *Unstructured) GetResourceVersion() string { + return getNestedString(u.Object, "metadata", "resourceVersion") +} + +func (u *Unstructured) SetResourceVersion(version string) { + u.setNestedField(version, "metadata", "resourceVersion") +} + +func (u *Unstructured) GetGeneration() int64 { + return getNestedInt64(u.Object, "metadata", "generation") +} + +func (u *Unstructured) SetGeneration(generation int64) { + u.setNestedField(generation, "metadata", "generation") +} + +func (u *Unstructured) GetSelfLink() string { + return getNestedString(u.Object, "metadata", "selfLink") +} + +func (u *Unstructured) SetSelfLink(selfLink string) { + u.setNestedField(selfLink, "metadata", "selfLink") +} + +func (u *Unstructured) GetCreationTimestamp() metav1.Time { + var timestamp metav1.Time + timestamp.UnmarshalQueryParameter(getNestedString(u.Object, "metadata", "creationTimestamp")) + return timestamp +} + +func (u *Unstructured) SetCreationTimestamp(timestamp metav1.Time) { + ts, _ := timestamp.MarshalQueryParameter() + u.setNestedField(ts, "metadata", "creationTimestamp") +} + +func (u *Unstructured) GetDeletionTimestamp() *metav1.Time { + var timestamp metav1.Time + timestamp.UnmarshalQueryParameter(getNestedString(u.Object, "metadata", "deletionTimestamp")) + if timestamp.IsZero() { + return nil + } + return ×tamp +} + +func (u *Unstructured) SetDeletionTimestamp(timestamp *metav1.Time) { + if timestamp == nil { + u.setNestedField(nil, "metadata", "deletionTimestamp") + return + } + ts, _ := timestamp.MarshalQueryParameter() + u.setNestedField(ts, "metadata", "deletionTimestamp") +} + +func (u *Unstructured) GetDeletionGracePeriodSeconds() *int64 { + return getNestedInt64Pointer(u.Object, "metadata", "deletionGracePeriodSeconds") +} + +func (u *Unstructured) SetDeletionGracePeriodSeconds(deletionGracePeriodSeconds *int64) { + u.setNestedField(deletionGracePeriodSeconds, "metadata", "deletionGracePeriodSeconds") +} + +func (u *Unstructured) GetLabels() map[string]string { + return getNestedMap(u.Object, "metadata", "labels") +} + +func (u *Unstructured) SetLabels(labels map[string]string) { + u.setNestedMap(labels, "metadata", "labels") +} + +func (u *Unstructured) GetAnnotations() map[string]string { + return getNestedMap(u.Object, "metadata", "annotations") +} + +func (u *Unstructured) SetAnnotations(annotations map[string]string) { + u.setNestedMap(annotations, "metadata", "annotations") +} + +func (u *Unstructured) SetGroupVersionKind(gvk schema.GroupVersionKind) { + u.SetAPIVersion(gvk.GroupVersion().String()) + u.SetKind(gvk.Kind) +} + +func (u *Unstructured) GroupVersionKind() schema.GroupVersionKind { + gv, err := schema.ParseGroupVersion(u.GetAPIVersion()) + if err != nil { + return schema.GroupVersionKind{} + } + gvk := gv.WithKind(u.GetKind()) + return gvk +} + +var converter = unstructured.NewConverter(false) + +func (u *Unstructured) GetInitializers() *metav1.Initializers { + field := getNestedField(u.Object, "metadata", "initializers") + if field == nil { + return nil + } + obj, ok := field.(map[string]interface{}) + if !ok { + return nil + } + out := &metav1.Initializers{} + if err := converter.FromUnstructured(obj, out); err != nil { + utilruntime.HandleError(fmt.Errorf("unable to retrieve initializers for object: %v", err)) + } + return out +} + +func (u *Unstructured) SetInitializers(initializers *metav1.Initializers) { + if initializers == nil { + setNestedField(u.Object, nil, "metadata", "initializers") + return + } + out := make(map[string]interface{}) + if err := converter.ToUnstructured(initializers, &out); err != nil { + utilruntime.HandleError(fmt.Errorf("unable to retrieve initializers for object: %v", err)) + } + setNestedField(u.Object, out, "metadata", "initializers") +} + +func (u *Unstructured) GetFinalizers() []string { + return getNestedSlice(u.Object, "metadata", "finalizers") +} + +func (u *Unstructured) SetFinalizers(finalizers []string) { + u.setNestedSlice(finalizers, "metadata", "finalizers") +} + +func (u *Unstructured) GetClusterName() string { + return getNestedString(u.Object, "metadata", "clusterName") +} + +func (u *Unstructured) SetClusterName(clusterName string) { + u.setNestedField(clusterName, "metadata", "clusterName") +} + +// UnstructuredList allows lists that do not have Golang structs +// registered to be manipulated generically. This can be used to deal +// with the API lists from a plug-in. +type UnstructuredList struct { + Object map[string]interface{} + + // Items is a list of unstructured objects. + Items []Unstructured `json:"items"` +} + +// MarshalJSON ensures that the unstructured list object produces proper +// JSON when passed to Go's standard JSON library. +func (u *UnstructuredList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + err := UnstructuredJSONScheme.Encode(u, &buf) + return buf.Bytes(), err +} + +// UnmarshalJSON ensures that the unstructured list object properly +// decodes JSON when passed to Go's standard JSON library. +func (u *UnstructuredList) UnmarshalJSON(b []byte) error { + _, _, err := UnstructuredJSONScheme.Decode(b, nil, u) + return err +} + +func (u *UnstructuredList) setNestedField(value interface{}, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedField(u.Object, value, fields...) +} + +func (u *UnstructuredList) GetAPIVersion() string { + return getNestedString(u.Object, "apiVersion") +} + +func (u *UnstructuredList) SetAPIVersion(version string) { + u.setNestedField(version, "apiVersion") +} + +func (u *UnstructuredList) GetKind() string { + return getNestedString(u.Object, "kind") +} + +func (u *UnstructuredList) SetKind(kind string) { + u.setNestedField(kind, "kind") +} + +func (u *UnstructuredList) GetResourceVersion() string { + return getNestedString(u.Object, "metadata", "resourceVersion") +} + +func (u *UnstructuredList) SetResourceVersion(version string) { + u.setNestedField(version, "metadata", "resourceVersion") +} + +func (u *UnstructuredList) GetSelfLink() string { + return getNestedString(u.Object, "metadata", "selfLink") +} + +func (u *UnstructuredList) SetSelfLink(selfLink string) { + u.setNestedField(selfLink, "metadata", "selfLink") +} + +func (u *UnstructuredList) SetGroupVersionKind(gvk schema.GroupVersionKind) { + u.SetAPIVersion(gvk.GroupVersion().String()) + u.SetKind(gvk.Kind) +} + +func (u *UnstructuredList) GroupVersionKind() schema.GroupVersionKind { + gv, err := schema.ParseGroupVersion(u.GetAPIVersion()) + if err != nil { + return schema.GroupVersionKind{} + } + gvk := gv.WithKind(u.GetKind()) + return gvk +} + +// UnstructuredJSONScheme is capable of converting JSON data into the Unstructured +// type, which can be used for generic access to objects without a predefined scheme. +// TODO: move into serializer/json. +var UnstructuredJSONScheme runtime.Codec = unstructuredJSONScheme{} + +type unstructuredJSONScheme struct{} + +func (s unstructuredJSONScheme) Decode(data []byte, _ *schema.GroupVersionKind, obj runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + var err error + if obj != nil { + err = s.decodeInto(data, obj) + } else { + obj, err = s.decode(data) + } + + if err != nil { + return nil, nil, err + } + + gvk := obj.GetObjectKind().GroupVersionKind() + if len(gvk.Kind) == 0 { + return nil, &gvk, runtime.NewMissingKindErr(string(data)) + } + + return obj, &gvk, nil +} + +func (unstructuredJSONScheme) Encode(obj runtime.Object, w io.Writer) error { + switch t := obj.(type) { + case *Unstructured: + return json.NewEncoder(w).Encode(t.Object) + case *UnstructuredList: + items := make([]map[string]interface{}, 0, len(t.Items)) + for _, i := range t.Items { + items = append(items, i.Object) + } + t.Object["items"] = items + defer func() { delete(t.Object, "items") }() + return json.NewEncoder(w).Encode(t.Object) + case *runtime.Unknown: + // TODO: Unstructured needs to deal with ContentType. + _, err := w.Write(t.Raw) + return err + default: + return json.NewEncoder(w).Encode(t) + } +} + +func (s unstructuredJSONScheme) decode(data []byte) (runtime.Object, error) { + type detector struct { + Items gojson.RawMessage + } + var det detector + if err := json.Unmarshal(data, &det); err != nil { + return nil, err + } + + if det.Items != nil { + list := &UnstructuredList{} + err := s.decodeToList(data, list) + return list, err + } + + // No Items field, so it wasn't a list. + unstruct := &Unstructured{} + err := s.decodeToUnstructured(data, unstruct) + return unstruct, err +} + +func (s unstructuredJSONScheme) decodeInto(data []byte, obj runtime.Object) error { + switch x := obj.(type) { + case *Unstructured: + return s.decodeToUnstructured(data, x) + case *UnstructuredList: + return s.decodeToList(data, x) + case *runtime.VersionedObjects: + o, err := s.decode(data) + if err == nil { + x.Objects = []runtime.Object{o} + } + return err + default: + return json.Unmarshal(data, x) + } +} + +func (unstructuredJSONScheme) decodeToUnstructured(data []byte, unstruct *Unstructured) error { + m := make(map[string]interface{}) + if err := json.Unmarshal(data, &m); err != nil { + return err + } + + unstruct.Object = m + + return nil +} + +func (s unstructuredJSONScheme) decodeToList(data []byte, list *UnstructuredList) error { + type decodeList struct { + Items []gojson.RawMessage + } + + var dList decodeList + if err := json.Unmarshal(data, &dList); err != nil { + return err + } + + if err := json.Unmarshal(data, &list.Object); err != nil { + return err + } + + // For typed lists, e.g., a PodList, API server doesn't set each item's + // APIVersion and Kind. We need to set it. + listAPIVersion := list.GetAPIVersion() + listKind := list.GetKind() + itemKind := strings.TrimSuffix(listKind, "List") + + delete(list.Object, "items") + list.Items = nil + for _, i := range dList.Items { + unstruct := &Unstructured{} + if err := s.decodeToUnstructured([]byte(i), unstruct); err != nil { + return err + } + // This is hacky. Set the item's Kind and APIVersion to those inferred + // from the List. + if len(unstruct.GetKind()) == 0 && len(unstruct.GetAPIVersion()) == 0 { + unstruct.SetKind(itemKind) + unstruct.SetAPIVersion(listAPIVersion) + } + list.Items = append(list.Items, *unstruct) + } + return nil +} + +// UnstructuredObjectConverter is an ObjectConverter for use with +// Unstructured objects. Since it has no schema or type information, +// it will only succeed for no-op conversions. This is provided as a +// sane implementation for APIs that require an object converter. +type UnstructuredObjectConverter struct{} + +func (UnstructuredObjectConverter) Convert(in, out, context interface{}) error { + unstructIn, ok := in.(*Unstructured) + if !ok { + return fmt.Errorf("input type %T in not valid for unstructured conversion", in) + } + + unstructOut, ok := out.(*Unstructured) + if !ok { + return fmt.Errorf("output type %T in not valid for unstructured conversion", out) + } + + // maybe deep copy the map? It is documented in the + // ObjectConverter interface that this function is not + // guaranteeed to not mutate the input. Or maybe set the input + // object to nil. + unstructOut.Object = unstructIn.Object + return nil +} + +func (UnstructuredObjectConverter) ConvertToVersion(in runtime.Object, target runtime.GroupVersioner) (runtime.Object, error) { + if kind := in.GetObjectKind().GroupVersionKind(); !kind.Empty() { + gvk, ok := target.KindForGroupVersionKinds([]schema.GroupVersionKind{kind}) + if !ok { + // TODO: should this be a typed error? + return nil, fmt.Errorf("%v is unstructured and is not suitable for converting to %q", kind, target) + } + in.GetObjectKind().SetGroupVersionKind(gvk) + } + return in, nil +} + +func (UnstructuredObjectConverter) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { + return "", "", errors.New("unstructured cannot convert field labels") +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go new file mode 100644 index 000000000..4869e7c0c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructured_test.go @@ -0,0 +1,36 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unstructured + +import "testing" + +func TestUnstructuredList(t *testing.T) { + list := &UnstructuredList{ + Object: map[string]interface{}{"kind": "List", "apiVersion": "v1"}, + Items: []Unstructured{ + {Object: map[string]interface{}{"kind": "Pod", "apiVersion": "v1", "metadata": map[string]interface{}{"name": "test"}}}, + }, + } + content := list.UnstructuredContent() + items := content["items"].([]interface{}) + if len(items) != 1 { + t.Fatalf("unexpected items: %#v", items) + } + if getNestedField(items[0].(map[string]interface{}), "metadata", "name") != "test" { + t.Fatalf("unexpected fields: %#v", items[0]) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD new file mode 100644 index 000000000..64b5d1b14 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["validation_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = ["validation.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go new file mode 100644 index 000000000..f06f075bf --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation.go @@ -0,0 +1,90 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/validation" + "k8s.io/apimachinery/pkg/util/validation/field" +) + +func ValidateLabelSelector(ps *metav1.LabelSelector, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if ps == nil { + return allErrs + } + allErrs = append(allErrs, ValidateLabels(ps.MatchLabels, fldPath.Child("matchLabels"))...) + for i, expr := range ps.MatchExpressions { + allErrs = append(allErrs, ValidateLabelSelectorRequirement(expr, fldPath.Child("matchExpressions").Index(i))...) + } + return allErrs +} + +func ValidateLabelSelectorRequirement(sr metav1.LabelSelectorRequirement, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + switch sr.Operator { + case metav1.LabelSelectorOpIn, metav1.LabelSelectorOpNotIn: + if len(sr.Values) == 0 { + allErrs = append(allErrs, field.Required(fldPath.Child("values"), "must be specified when `operator` is 'In' or 'NotIn'")) + } + case metav1.LabelSelectorOpExists, metav1.LabelSelectorOpDoesNotExist: + if len(sr.Values) > 0 { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("values"), "may not be specified when `operator` is 'Exists' or 'DoesNotExist'")) + } + default: + allErrs = append(allErrs, field.Invalid(fldPath.Child("operator"), sr.Operator, "not a valid selector operator")) + } + allErrs = append(allErrs, ValidateLabelName(sr.Key, fldPath.Child("key"))...) + return allErrs +} + +// ValidateLabelName validates that the label name is correctly defined. +func ValidateLabelName(labelName string, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + for _, msg := range validation.IsQualifiedName(labelName) { + allErrs = append(allErrs, field.Invalid(fldPath, labelName, msg)) + } + return allErrs +} + +// ValidateLabels validates that a set of labels are correctly defined. +func ValidateLabels(labels map[string]string, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + for k, v := range labels { + allErrs = append(allErrs, ValidateLabelName(k, fldPath)...) + for _, msg := range validation.IsValidLabelValue(v) { + allErrs = append(allErrs, field.Invalid(fldPath, v, msg)) + } + } + return allErrs +} + +func ValidateDeleteOptions(options *metav1.DeleteOptions) field.ErrorList { + allErrs := field.ErrorList{} + if options.OrphanDependents != nil && options.PropagationPolicy != nil { + allErrs = append(allErrs, field.Invalid(field.NewPath(""), options, "OrphanDependents and DeletionPropagation cannot be both set")) + } + if options.PropagationPolicy != nil && + *options.PropagationPolicy != metav1.DeletePropagationForeground && + *options.PropagationPolicy != metav1.DeletePropagationBackground && + *options.PropagationPolicy != metav1.DeletePropagationOrphan { + allErrs = append(allErrs, field.Invalid(field.NewPath(""), options, fmt.Sprintf("DeletionPropagation need to be one of %q, %q, %q or nil", metav1.DeletePropagationForeground, metav1.DeletePropagationBackground, metav1.DeletePropagationOrphan))) + } + return allErrs +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation_test.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation_test.go new file mode 100644 index 000000000..9766fa7e7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/validation/validation_test.go @@ -0,0 +1,94 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "strings" + "testing" + + "k8s.io/apimachinery/pkg/util/validation/field" +) + +func TestValidateLabels(t *testing.T) { + successCases := []map[string]string{ + {"simple": "bar"}, + {"now-with-dashes": "bar"}, + {"1-starts-with-num": "bar"}, + {"1234": "bar"}, + {"simple/simple": "bar"}, + {"now-with-dashes/simple": "bar"}, + {"now-with-dashes/now-with-dashes": "bar"}, + {"now.with.dots/simple": "bar"}, + {"now-with.dashes-and.dots/simple": "bar"}, + {"1-num.2-num/3-num": "bar"}, + {"1234/5678": "bar"}, + {"1.2.3.4/5678": "bar"}, + {"UpperCaseAreOK123": "bar"}, + {"goodvalue": "123_-.BaR"}, + } + for i := range successCases { + errs := ValidateLabels(successCases[i], field.NewPath("field")) + if len(errs) != 0 { + t.Errorf("case[%d] expected success, got %#v", i, errs) + } + } + + namePartErrMsg := "name part must consist of" + nameErrMsg := "a qualified name must consist of" + labelErrMsg := "a valid label must be an empty string or consist of" + maxLengthErrMsg := "must be no more than" + + labelNameErrorCases := []struct { + labels map[string]string + expect string + }{ + {map[string]string{"nospecialchars^=@": "bar"}, namePartErrMsg}, + {map[string]string{"cantendwithadash-": "bar"}, namePartErrMsg}, + {map[string]string{"only/one/slash": "bar"}, nameErrMsg}, + {map[string]string{strings.Repeat("a", 254): "bar"}, maxLengthErrMsg}, + } + for i := range labelNameErrorCases { + errs := ValidateLabels(labelNameErrorCases[i].labels, field.NewPath("field")) + if len(errs) != 1 { + t.Errorf("case[%d]: expected failure", i) + } else { + if !strings.Contains(errs[0].Detail, labelNameErrorCases[i].expect) { + t.Errorf("case[%d]: error details do not include %q: %q", i, labelNameErrorCases[i].expect, errs[0].Detail) + } + } + } + + labelValueErrorCases := []struct { + labels map[string]string + expect string + }{ + {map[string]string{"toolongvalue": strings.Repeat("a", 64)}, maxLengthErrMsg}, + {map[string]string{"backslashesinvalue": "some\\bad\\value"}, labelErrMsg}, + {map[string]string{"nocommasallowed": "bad,value"}, labelErrMsg}, + {map[string]string{"strangecharsinvalue": "?#$notsogood"}, labelErrMsg}, + } + for i := range labelValueErrorCases { + errs := ValidateLabels(labelValueErrorCases[i].labels, field.NewPath("field")) + if len(errs) != 1 { + t.Errorf("case[%d]: expected failure", i) + } else { + if !strings.Contains(errs[0].Detail, labelValueErrorCases[i].expect) { + t.Errorf("case[%d]: error details do not include %q: %q", i, labelValueErrorCases[i].expect, errs[0].Detail) + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go new file mode 100644 index 000000000..a645501a1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/watch.go @@ -0,0 +1,80 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/watch" +) + +// Event represents a single event to a watched resource. +// +// +protobuf=true +type WatchEvent struct { + Type string `json:"type" protobuf:"bytes,1,opt,name=type"` + + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *Status is recommended; other types may make sense + // depending on context. + Object runtime.RawExtension `json:"object" protobuf:"bytes,2,opt,name=object"` +} + +func Convert_watch_Event_to_versioned_Event(in *watch.Event, out *WatchEvent, s conversion.Scope) error { + out.Type = string(in.Type) + switch t := in.Object.(type) { + case *runtime.Unknown: + // TODO: handle other fields on Unknown and detect type + out.Object.Raw = t.Raw + case nil: + default: + out.Object.Object = in.Object + } + return nil +} + +func Convert_versioned_InternalEvent_to_versioned_Event(in *InternalEvent, out *WatchEvent, s conversion.Scope) error { + return Convert_watch_Event_to_versioned_Event((*watch.Event)(in), out, s) +} + +func Convert_versioned_Event_to_watch_Event(in *WatchEvent, out *watch.Event, s conversion.Scope) error { + out.Type = watch.EventType(in.Type) + if in.Object.Object != nil { + out.Object = in.Object.Object + } else if in.Object.Raw != nil { + // TODO: handle other fields on Unknown and detect type + out.Object = &runtime.Unknown{ + Raw: in.Object.Raw, + ContentType: runtime.ContentTypeJSON, + } + } + return nil +} + +func Convert_versioned_Event_to_versioned_InternalEvent(in *WatchEvent, out *InternalEvent, s conversion.Scope) error { + return Convert_versioned_Event_to_watch_Event(in, (*watch.Event)(out), s) +} + +// InternalEvent makes watch.Event versioned +// +protobuf=false +type InternalEvent watch.Event + +func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (e *WatchEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..6fac96be4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.deepcopy.go @@ -0,0 +1,646 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + types "k8s.io/apimachinery/pkg/types" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: DeepCopy_v1_APIGroup, InType: reflect.TypeOf(&APIGroup{})}, + {Fn: DeepCopy_v1_APIGroupList, InType: reflect.TypeOf(&APIGroupList{})}, + {Fn: DeepCopy_v1_APIResource, InType: reflect.TypeOf(&APIResource{})}, + {Fn: DeepCopy_v1_APIResourceList, InType: reflect.TypeOf(&APIResourceList{})}, + {Fn: DeepCopy_v1_APIVersions, InType: reflect.TypeOf(&APIVersions{})}, + {Fn: DeepCopy_v1_DeleteOptions, InType: reflect.TypeOf(&DeleteOptions{})}, + {Fn: DeepCopy_v1_Duration, InType: reflect.TypeOf(&Duration{})}, + {Fn: DeepCopy_v1_ExportOptions, InType: reflect.TypeOf(&ExportOptions{})}, + {Fn: DeepCopy_v1_GetOptions, InType: reflect.TypeOf(&GetOptions{})}, + {Fn: DeepCopy_v1_GroupKind, InType: reflect.TypeOf(&GroupKind{})}, + {Fn: DeepCopy_v1_GroupResource, InType: reflect.TypeOf(&GroupResource{})}, + {Fn: DeepCopy_v1_GroupVersion, InType: reflect.TypeOf(&GroupVersion{})}, + {Fn: DeepCopy_v1_GroupVersionForDiscovery, InType: reflect.TypeOf(&GroupVersionForDiscovery{})}, + {Fn: DeepCopy_v1_GroupVersionKind, InType: reflect.TypeOf(&GroupVersionKind{})}, + {Fn: DeepCopy_v1_GroupVersionResource, InType: reflect.TypeOf(&GroupVersionResource{})}, + {Fn: DeepCopy_v1_Initializer, InType: reflect.TypeOf(&Initializer{})}, + {Fn: DeepCopy_v1_Initializers, InType: reflect.TypeOf(&Initializers{})}, + {Fn: DeepCopy_v1_InternalEvent, InType: reflect.TypeOf(&InternalEvent{})}, + {Fn: DeepCopy_v1_LabelSelector, InType: reflect.TypeOf(&LabelSelector{})}, + {Fn: DeepCopy_v1_LabelSelectorRequirement, InType: reflect.TypeOf(&LabelSelectorRequirement{})}, + {Fn: DeepCopy_v1_ListMeta, InType: reflect.TypeOf(&ListMeta{})}, + {Fn: DeepCopy_v1_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, + {Fn: DeepCopy_v1_MicroTime, InType: reflect.TypeOf(&MicroTime{})}, + {Fn: DeepCopy_v1_ObjectMeta, InType: reflect.TypeOf(&ObjectMeta{})}, + {Fn: DeepCopy_v1_OwnerReference, InType: reflect.TypeOf(&OwnerReference{})}, + {Fn: DeepCopy_v1_Patch, InType: reflect.TypeOf(&Patch{})}, + {Fn: DeepCopy_v1_Preconditions, InType: reflect.TypeOf(&Preconditions{})}, + {Fn: DeepCopy_v1_RootPaths, InType: reflect.TypeOf(&RootPaths{})}, + {Fn: DeepCopy_v1_ServerAddressByClientCIDR, InType: reflect.TypeOf(&ServerAddressByClientCIDR{})}, + {Fn: DeepCopy_v1_Status, InType: reflect.TypeOf(&Status{})}, + {Fn: DeepCopy_v1_StatusCause, InType: reflect.TypeOf(&StatusCause{})}, + {Fn: DeepCopy_v1_StatusDetails, InType: reflect.TypeOf(&StatusDetails{})}, + {Fn: DeepCopy_v1_Time, InType: reflect.TypeOf(&Time{})}, + {Fn: DeepCopy_v1_Timestamp, InType: reflect.TypeOf(&Timestamp{})}, + {Fn: DeepCopy_v1_TypeMeta, InType: reflect.TypeOf(&TypeMeta{})}, + {Fn: DeepCopy_v1_WatchEvent, InType: reflect.TypeOf(&WatchEvent{})}, + } +} + +// DeepCopy_v1_APIGroup is an autogenerated deepcopy function. +func DeepCopy_v1_APIGroup(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIGroup) + out := out.(*APIGroup) + *out = *in + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]GroupVersionForDiscovery, len(*in)) + copy(*out, *in) + } + if in.ServerAddressByClientCIDRs != nil { + in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs + *out = make([]ServerAddressByClientCIDR, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_APIGroupList is an autogenerated deepcopy function. +func DeepCopy_v1_APIGroupList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIGroupList) + out := out.(*APIGroupList) + *out = *in + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]APIGroup, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*APIGroup) + } + } + } + return nil + } +} + +// DeepCopy_v1_APIResource is an autogenerated deepcopy function. +func DeepCopy_v1_APIResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIResource) + out := out.(*APIResource) + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make(Verbs, len(*in)) + copy(*out, *in) + } + if in.ShortNames != nil { + in, out := &in.ShortNames, &out.ShortNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_APIResourceList is an autogenerated deepcopy function. +func DeepCopy_v1_APIResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIResourceList) + out := out.(*APIResourceList) + *out = *in + if in.APIResources != nil { + in, out := &in.APIResources, &out.APIResources + *out = make([]APIResource, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*APIResource) + } + } + } + return nil + } +} + +// DeepCopy_v1_APIVersions is an autogenerated deepcopy function. +func DeepCopy_v1_APIVersions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIVersions) + out := out.(*APIVersions) + *out = *in + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ServerAddressByClientCIDRs != nil { + in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs + *out = make([]ServerAddressByClientCIDR, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_DeleteOptions is an autogenerated deepcopy function. +func DeepCopy_v1_DeleteOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeleteOptions) + out := out.(*DeleteOptions) + *out = *in + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*Preconditions) + } + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + *out = new(bool) + **out = **in + } + if in.PropagationPolicy != nil { + in, out := &in.PropagationPolicy, &out.PropagationPolicy + *out = new(DeletionPropagation) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Duration is an autogenerated deepcopy function. +func DeepCopy_v1_Duration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Duration) + out := out.(*Duration) + *out = *in + return nil + } +} + +// DeepCopy_v1_ExportOptions is an autogenerated deepcopy function. +func DeepCopy_v1_ExportOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExportOptions) + out := out.(*ExportOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_GetOptions is an autogenerated deepcopy function. +func DeepCopy_v1_GetOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GetOptions) + out := out.(*GetOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_GroupKind is an autogenerated deepcopy function. +func DeepCopy_v1_GroupKind(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupKind) + out := out.(*GroupKind) + *out = *in + return nil + } +} + +// DeepCopy_v1_GroupResource is an autogenerated deepcopy function. +func DeepCopy_v1_GroupResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupResource) + out := out.(*GroupResource) + *out = *in + return nil + } +} + +// DeepCopy_v1_GroupVersion is an autogenerated deepcopy function. +func DeepCopy_v1_GroupVersion(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersion) + out := out.(*GroupVersion) + *out = *in + return nil + } +} + +// DeepCopy_v1_GroupVersionForDiscovery is an autogenerated deepcopy function. +func DeepCopy_v1_GroupVersionForDiscovery(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersionForDiscovery) + out := out.(*GroupVersionForDiscovery) + *out = *in + return nil + } +} + +// DeepCopy_v1_GroupVersionKind is an autogenerated deepcopy function. +func DeepCopy_v1_GroupVersionKind(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersionKind) + out := out.(*GroupVersionKind) + *out = *in + return nil + } +} + +// DeepCopy_v1_GroupVersionResource is an autogenerated deepcopy function. +func DeepCopy_v1_GroupVersionResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersionResource) + out := out.(*GroupVersionResource) + *out = *in + return nil + } +} + +// DeepCopy_v1_Initializer is an autogenerated deepcopy function. +func DeepCopy_v1_Initializer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Initializer) + out := out.(*Initializer) + *out = *in + return nil + } +} + +// DeepCopy_v1_Initializers is an autogenerated deepcopy function. +func DeepCopy_v1_Initializers(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Initializers) + out := out.(*Initializers) + *out = *in + if in.Pending != nil { + in, out := &in.Pending, &out.Pending + *out = make([]Initializer, len(*in)) + copy(*out, *in) + } + if in.Result != nil { + in, out := &in.Result, &out.Result + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*Status) + } + } + return nil + } +} + +// DeepCopy_v1_InternalEvent is an autogenerated deepcopy function. +func DeepCopy_v1_InternalEvent(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*InternalEvent) + out := out.(*InternalEvent) + *out = *in + // in.Object is kind 'Interface' + if in.Object != nil { + if newVal, err := c.DeepCopy(&in.Object); err != nil { + return err + } else { + out.Object = *newVal.(*runtime.Object) + } + } + return nil + } +} + +// DeepCopy_v1_LabelSelector is an autogenerated deepcopy function. +func DeepCopy_v1_LabelSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelector) + out := out.(*LabelSelector) + *out = *in + if in.MatchLabels != nil { + in, out := &in.MatchLabels, &out.MatchLabels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*LabelSelectorRequirement) + } + } + } + return nil + } +} + +// DeepCopy_v1_LabelSelectorRequirement is an autogenerated deepcopy function. +func DeepCopy_v1_LabelSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelectorRequirement) + out := out.(*LabelSelectorRequirement) + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ListMeta is an autogenerated deepcopy function. +func DeepCopy_v1_ListMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListMeta) + out := out.(*ListMeta) + *out = *in + return nil + } +} + +// DeepCopy_v1_ListOptions is an autogenerated deepcopy function. +func DeepCopy_v1_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListOptions) + out := out.(*ListOptions) + *out = *in + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_MicroTime is an autogenerated deepcopy function. +func DeepCopy_v1_MicroTime(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MicroTime) + out := out.(*MicroTime) + *out = in.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ObjectMeta is an autogenerated deepcopy function. +func DeepCopy_v1_ObjectMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMeta) + out := out.(*ObjectMeta) + *out = *in + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + *out = new(Time) + **out = (*in).DeepCopy() + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]OwnerReference, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*OwnerReference) + } + } + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*Initializers) + } + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_OwnerReference is an autogenerated deepcopy function. +func DeepCopy_v1_OwnerReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*OwnerReference) + out := out.(*OwnerReference) + *out = *in + if in.Controller != nil { + in, out := &in.Controller, &out.Controller + *out = new(bool) + **out = **in + } + if in.BlockOwnerDeletion != nil { + in, out := &in.BlockOwnerDeletion, &out.BlockOwnerDeletion + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Patch is an autogenerated deepcopy function. +func DeepCopy_v1_Patch(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Patch) + out := out.(*Patch) + *out = *in + return nil + } +} + +// DeepCopy_v1_Preconditions is an autogenerated deepcopy function. +func DeepCopy_v1_Preconditions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Preconditions) + out := out.(*Preconditions) + *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(types.UID) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_RootPaths is an autogenerated deepcopy function. +func DeepCopy_v1_RootPaths(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RootPaths) + out := out.(*RootPaths) + *out = *in + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ServerAddressByClientCIDR is an autogenerated deepcopy function. +func DeepCopy_v1_ServerAddressByClientCIDR(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServerAddressByClientCIDR) + out := out.(*ServerAddressByClientCIDR) + *out = *in + return nil + } +} + +// DeepCopy_v1_Status is an autogenerated deepcopy function. +func DeepCopy_v1_Status(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Status) + out := out.(*Status) + *out = *in + if in.Details != nil { + in, out := &in.Details, &out.Details + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*StatusDetails) + } + } + return nil + } +} + +// DeepCopy_v1_StatusCause is an autogenerated deepcopy function. +func DeepCopy_v1_StatusCause(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatusCause) + out := out.(*StatusCause) + *out = *in + return nil + } +} + +// DeepCopy_v1_StatusDetails is an autogenerated deepcopy function. +func DeepCopy_v1_StatusDetails(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatusDetails) + out := out.(*StatusDetails) + *out = *in + if in.Causes != nil { + in, out := &in.Causes, &out.Causes + *out = make([]StatusCause, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_Time is an autogenerated deepcopy function. +func DeepCopy_v1_Time(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Time) + out := out.(*Time) + *out = in.DeepCopy() + return nil + } +} + +// DeepCopy_v1_Timestamp is an autogenerated deepcopy function. +func DeepCopy_v1_Timestamp(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Timestamp) + out := out.(*Timestamp) + *out = *in + return nil + } +} + +// DeepCopy_v1_TypeMeta is an autogenerated deepcopy function. +func DeepCopy_v1_TypeMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TypeMeta) + out := out.(*TypeMeta) + *out = *in + return nil + } +} + +// DeepCopy_v1_WatchEvent is an autogenerated deepcopy function. +func DeepCopy_v1_WatchEvent(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*WatchEvent) + out := out.(*WatchEvent) + *out = *in + if newVal, err := c.DeepCopy(&in.Object); err != nil { + return err + } else { + out.Object = *newVal.(*runtime.RawExtension) + } + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go new file mode 100644 index 000000000..6df448eb9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD new file mode 100644 index 000000000..e60fab887 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/doc.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/doc.go new file mode 100644 index 000000000..eea67c5c8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:openapi-gen=true +// +k8s:defaulter-gen=TypeMeta + +// +groupName=meta.k8s.io +package v1alpha1 diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.pb.go new file mode 100644 index 000000000..2d43bf94f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.pb.go @@ -0,0 +1,633 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto + + It has these top-level messages: + PartialObjectMetadata + PartialObjectMetadataList + TableOptions +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *PartialObjectMetadata) Reset() { *m = PartialObjectMetadata{} } +func (*PartialObjectMetadata) ProtoMessage() {} +func (*PartialObjectMetadata) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PartialObjectMetadataList) Reset() { *m = PartialObjectMetadataList{} } +func (*PartialObjectMetadataList) ProtoMessage() {} +func (*PartialObjectMetadataList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *TableOptions) Reset() { *m = TableOptions{} } +func (*TableOptions) ProtoMessage() {} +func (*TableOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*PartialObjectMetadata)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1alpha1.PartialObjectMetadata") + proto.RegisterType((*PartialObjectMetadataList)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1alpha1.PartialObjectMetadataList") + proto.RegisterType((*TableOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1alpha1.TableOptions") +} +func (m *PartialObjectMetadata) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PartialObjectMetadata) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + return i, nil +} + +func (m *PartialObjectMetadataList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PartialObjectMetadataList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *TableOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TableOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IncludeObject))) + i += copy(dAtA[i:], m.IncludeObject) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *PartialObjectMetadata) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PartialObjectMetadataList) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *TableOptions) Size() (n int) { + var l int + _ = l + l = len(m.IncludeObject) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *PartialObjectMetadata) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PartialObjectMetadata{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PartialObjectMetadataList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PartialObjectMetadataList{`, + `Items:` + strings.Replace(fmt.Sprintf("%v", this.Items), "PartialObjectMetadata", "PartialObjectMetadata", 1) + `,`, + `}`, + }, "") + return s +} +func (this *TableOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TableOptions{`, + `IncludeObject:` + fmt.Sprintf("%v", this.IncludeObject) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *PartialObjectMetadata) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PartialObjectMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PartialObjectMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PartialObjectMetadataList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PartialObjectMetadataList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PartialObjectMetadataList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, &PartialObjectMetadata{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TableOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TableOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TableOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeObject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IncludeObject = IncludeObjectPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 392 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xbf, 0x6e, 0xd4, 0x40, + 0x10, 0x87, 0xbd, 0x42, 0x91, 0x92, 0x0d, 0x69, 0x8c, 0x90, 0xc2, 0x15, 0xeb, 0xe8, 0xaa, 0x08, + 0xc1, 0x2e, 0x09, 0x08, 0xd1, 0xe2, 0x2e, 0x12, 0x28, 0x91, 0xa1, 0xa2, 0x62, 0x6d, 0x0f, 0xf6, + 0x62, 0x7b, 0xd7, 0xda, 0x1d, 0x47, 0xba, 0x0a, 0x1e, 0x81, 0xc7, 0xba, 0x32, 0x65, 0x2a, 0x8b, + 0x33, 0x6f, 0x41, 0x85, 0x6c, 0x5f, 0xc8, 0xbf, 0x3b, 0xe5, 0xba, 0x99, 0xdf, 0xe8, 0xfb, 0x3c, + 0xe3, 0xa5, 0x9f, 0x8a, 0x77, 0x8e, 0x2b, 0x23, 0x8a, 0x26, 0x06, 0xab, 0x01, 0xc1, 0x89, 0x73, + 0xd0, 0xa9, 0xb1, 0x62, 0x39, 0x90, 0xb5, 0xaa, 0x64, 0x92, 0x2b, 0x0d, 0x76, 0x26, 0xea, 0x22, + 0xeb, 0x03, 0x27, 0x2a, 0x40, 0x29, 0xce, 0x8f, 0x64, 0x59, 0xe7, 0xf2, 0x48, 0x64, 0xa0, 0xc1, + 0x4a, 0x84, 0x94, 0xd7, 0xd6, 0xa0, 0xf1, 0x9f, 0x8f, 0x2c, 0xbf, 0xc9, 0xf2, 0xba, 0xc8, 0xfa, + 0xc0, 0xf1, 0x9e, 0xe5, 0x57, 0xec, 0xe4, 0x65, 0xa6, 0x30, 0x6f, 0x62, 0x9e, 0x98, 0x4a, 0x64, + 0x26, 0x33, 0x62, 0x50, 0xc4, 0xcd, 0xb7, 0xa1, 0x1b, 0x9a, 0xa1, 0x1a, 0xd5, 0x93, 0x37, 0x9b, + 0xac, 0x75, 0x77, 0xa1, 0xc9, 0xda, 0x63, 0x6c, 0xa3, 0x51, 0x55, 0x70, 0x0f, 0x78, 0xfb, 0x10, + 0xe0, 0x92, 0x1c, 0x2a, 0x79, 0x8f, 0x7b, 0xbd, 0x8e, 0x6b, 0x50, 0x95, 0x42, 0x69, 0x74, 0x68, + 0xef, 0x42, 0xd3, 0x19, 0x7d, 0x7a, 0x26, 0x2d, 0x2a, 0x59, 0x9e, 0xc6, 0xdf, 0x21, 0xc1, 0x8f, + 0x80, 0x32, 0x95, 0x28, 0xfd, 0xaf, 0x74, 0xbb, 0x5a, 0xd6, 0xfb, 0xe4, 0x80, 0x1c, 0xee, 0x1e, + 0xbf, 0xe2, 0x9b, 0xfc, 0x5a, 0x7e, 0xed, 0x09, 0xfd, 0x79, 0x1b, 0x78, 0x5d, 0x1b, 0xd0, 0xeb, + 0x2c, 0xfa, 0x6f, 0x9d, 0xfe, 0xa0, 0xcf, 0x56, 0x7e, 0xfa, 0x83, 0x72, 0xe8, 0xc7, 0x74, 0x4b, + 0x21, 0x54, 0x6e, 0x9f, 0x1c, 0x3c, 0x3a, 0xdc, 0x3d, 0x7e, 0xcf, 0x37, 0x7f, 0x56, 0xbe, 0xd2, + 0x1a, 0xee, 0x74, 0x6d, 0xb0, 0x75, 0xd2, 0x3b, 0xa3, 0x51, 0x3d, 0x8d, 0xe9, 0xe3, 0xcf, 0x32, + 0x2e, 0xe1, 0xb4, 0x46, 0x65, 0xb4, 0xf3, 0x23, 0xba, 0xa7, 0x74, 0x52, 0x36, 0x29, 0x8c, 0xe8, + 0x70, 0xf7, 0x4e, 0xf8, 0x62, 0x79, 0xc5, 0xde, 0xc9, 0xcd, 0xe1, 0xdf, 0x36, 0x78, 0x72, 0x2b, + 0x38, 0x33, 0xa5, 0x4a, 0x66, 0xd1, 0x6d, 0x45, 0xc8, 0xe7, 0x0b, 0xe6, 0x5d, 0x2c, 0x98, 0x77, + 0xb9, 0x60, 0xde, 0xcf, 0x8e, 0x91, 0x79, 0xc7, 0xc8, 0x45, 0xc7, 0xc8, 0x65, 0xc7, 0xc8, 0xef, + 0x8e, 0x91, 0x5f, 0x7f, 0x98, 0xf7, 0x65, 0xfb, 0x6a, 0xf7, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, + 0x97, 0x95, 0xbb, 0xf9, 0x14, 0x03, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto new file mode 100644 index 000000000..06833dbd9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/generated.proto @@ -0,0 +1,55 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.apimachinery.pkg.apis.meta.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients +// to get access to a particular ObjectMeta schema without knowing the details of the version. +message PartialObjectMetadata { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; +} + +// PartialObjectMetadataList contains a list of objects containing only their metadata +message PartialObjectMetadataList { + // items contains each of the included items. + repeated PartialObjectMetadata items = 1; +} + +// TableOptions are used when a Table is requested by the caller. +message TableOptions { + // includeObject decides whether to include each object along with its columnar information. + // Specifying "None" will return no object, specifying "Object" will return the full object contents, and + // specifying "Metadata" (the default) will return the object's metadata in the PartialObjectMetadata kind + // in version v1alpha1 of the meta.k8s.io API group. + optional string includeObject = 1; +} + diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go new file mode 100644 index 000000000..89f08f383 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/register.go @@ -0,0 +1,51 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name for this API. +const GroupName = "meta.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// scheme is the registry for the common types that adhere to the meta v1alpha1 API spec. +var scheme = runtime.NewScheme() + +// ParameterCodec knows about query parameters used with the meta v1alpha1 API spec. +var ParameterCodec = runtime.NewParameterCodec(scheme) + +func init() { + scheme.AddKnownTypes(SchemeGroupVersion, + &Table{}, + &TableOptions{}, + &PartialObjectMetadata{}, + &PartialObjectMetadataList{}, + ) + + // register manually. This usually goes through the SchemeBuilder, which we cannot use here. + //scheme.AddGeneratedDeepCopyFuncs(GetGeneratedDeepCopyFuncs()...) +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go new file mode 100644 index 000000000..ef9921806 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types.go @@ -0,0 +1,157 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// package v1alpha1 is alpha objects from meta that will be introduced. +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// TODO: Table does not generate to protobuf because of the interface{} - fix protobuf +// generation to support a meta type that can accept any valid JSON. + +// Table is a tabular representation of a set of API resources. The server transforms the +// object into a set of preferred columns for quickly reviewing the objects. +// +protobuf=false +type Table struct { + v1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + v1.ListMeta `json:"metadata,omitempty"` + + // columnDefinitions describes each column in the returned items array. The number of cells per row + // will always match the number of column definitions. + ColumnDefinitions []TableColumnDefinition `json:"columnDefinitions"` + // rows is the list of items in the table. + Rows []TableRow `json:"rows"` +} + +// TableColumnDefinition contains information about a column returned in the Table. +// +protobuf=false +type TableColumnDefinition struct { + // name is a human readable name for the column. + Name string `json:"name"` + // type is an OpenAPI type definition for this column. + // See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more. + Type string `json:"type"` + // format is an optional OpenAPI type definition for this column. The 'name' format is applied + // to the primary identifier column to assist in clients identifying column is the resource name. + // See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more. + Format string `json:"format"` + // description is a human readable description of this column. + Description string `json:"description"` + // priority is an integer defining the relative importance of this column compared to others. Lower + // numbers are considered higher priority. Columns that may be omitted in limited space scenarios + // should be given a higher priority. + Priority int32 `json:"priority"` +} + +// TableRow is an individual row in a table. +// +protobuf=false +type TableRow struct { + // cells will be as wide as headers and may contain strings, numbers, booleans, simple maps, or lists, or + // null. See the type field of the column definition for a more detailed description. + Cells []interface{} `json:"cells"` + // conditions describe additional status of a row that are relevant for a human user. + // +optional + Conditions []TableRowCondition `json:"conditions,omitempty"` + // This field contains the requested additional information about each object based on the includeObject + // policy when requesting the Table. If "None", this field is empty, if "Object" this will be the + // default serialization of the object for the current API version, and if "Metadata" (the default) will + // contain the object metadata. Check the returned kind and apiVersion of the object before parsing. + // +optional + Object runtime.RawExtension `json:"object,omitempty"` +} + +// TableRowCondition allows a row to be marked with additional information. +// +protobuf=false +type TableRowCondition struct { + // Type of row condition. + Type RowConditionType `json:"type"` + // Status of the condition, one of True, False, Unknown. + Status ConditionStatus `json:"status"` + // (brief) machine readable reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty"` + // Human readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty"` +} + +type RowConditionType string + +// These are valid conditions of a row. This list is not exhaustive and new conditions may be +// inculded by other resources. +const ( + // RowCompleted means the underlying resource has reached completion and may be given less + // visual priority than other resources. + RowCompleted RowConditionType = "Completed" +) + +type ConditionStatus string + +// These are valid condition statuses. "ConditionTrue" means a resource is in the condition. +// "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes +// can't decide if a resource is in the condition or not. In the future, we could add other +// intermediate conditions, e.g. ConditionDegraded. +const ( + ConditionTrue ConditionStatus = "True" + ConditionFalse ConditionStatus = "False" + ConditionUnknown ConditionStatus = "Unknown" +) + +// IncludeObjectPolicy controls which portion of the object is returned with a Table. +type IncludeObjectPolicy string + +const ( + // IncludeNone returns no object. + IncludeNone IncludeObjectPolicy = "None" + // IncludeMetadata serializes the object containing only its metadata field. + IncludeMetadata IncludeObjectPolicy = "Metadata" + // IncludeObject contains the full object. + IncludeObject IncludeObjectPolicy = "Object" +) + +// TableOptions are used when a Table is requested by the caller. +type TableOptions struct { + v1.TypeMeta `json:",inline"` + // includeObject decides whether to include each object along with its columnar information. + // Specifying "None" will return no object, specifying "Object" will return the full object contents, and + // specifying "Metadata" (the default) will return the object's metadata in the PartialObjectMetadata kind + // in version v1alpha1 of the meta.k8s.io API group. + IncludeObject IncludeObjectPolicy `json:"includeObject,omitempty" protobuf:"bytes,1,opt,name=includeObject,casttype=IncludeObjectPolicy"` +} + +// PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients +// to get access to a particular ObjectMeta schema without knowing the details of the version. +type PartialObjectMetadata struct { + v1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` +} + +// PartialObjectMetadataList contains a list of objects containing only their metadata +type PartialObjectMetadataList struct { + v1.TypeMeta `json:",inline"` + + // items contains each of the included items. + Items []*PartialObjectMetadata `json:"items" protobuf:"bytes,1,rep,name=items"` +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 000000000..e8bb62602 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,104 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_PartialObjectMetadata = map[string]string{ + "": "PartialObjectMetadata is a generic representation of any object with ObjectMeta. It allows clients to get access to a particular ObjectMeta schema without knowing the details of the version.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", +} + +func (PartialObjectMetadata) SwaggerDoc() map[string]string { + return map_PartialObjectMetadata +} + +var map_PartialObjectMetadataList = map[string]string{ + "": "PartialObjectMetadataList contains a list of objects containing only their metadata", + "items": "items contains each of the included items.", +} + +func (PartialObjectMetadataList) SwaggerDoc() map[string]string { + return map_PartialObjectMetadataList +} + +var map_Table = map[string]string{ + "": "Table is a tabular representation of a set of API resources. The server transforms the object into a set of preferred columns for quickly reviewing the objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "columnDefinitions": "columnDefinitions describes each column in the returned items array. The number of cells per row will always match the number of column definitions.", + "rows": "rows is the list of items in the table.", +} + +func (Table) SwaggerDoc() map[string]string { + return map_Table +} + +var map_TableColumnDefinition = map[string]string{ + "": "TableColumnDefinition contains information about a column returned in the Table.", + "name": "name is a human readable name for the column.", + "type": "type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.", + "format": "format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.", + "description": "description is a human readable description of this column.", + "priority": "priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a higher priority.", +} + +func (TableColumnDefinition) SwaggerDoc() map[string]string { + return map_TableColumnDefinition +} + +var map_TableOptions = map[string]string{ + "": "TableOptions are used when a Table is requested by the caller.", + "includeObject": "includeObject decides whether to include each object along with its columnar information. Specifying \"None\" will return no object, specifying \"Object\" will return the full object contents, and specifying \"Metadata\" (the default) will return the object's metadata in the PartialObjectMetadata kind in version v1alpha1 of the meta.k8s.io API group.", +} + +func (TableOptions) SwaggerDoc() map[string]string { + return map_TableOptions +} + +var map_TableRow = map[string]string{ + "": "TableRow is an individual row in a table.", + "cells": "cells will be as wide as headers and may contain strings, numbers, booleans, simple maps, or lists, or null. See the type field of the column definition for a more detailed description.", + "conditions": "conditions describe additional status of a row that are relevant for a human user.", + "object": "This field contains the requested additional information about each object based on the includeObject policy when requesting the Table. If \"None\", this field is empty, if \"Object\" this will be the default serialization of the object for the current API version, and if \"Metadata\" (the default) will contain the object metadata. Check the returned kind and apiVersion of the object before parsing.", +} + +func (TableRow) SwaggerDoc() map[string]string { + return map_TableRow +} + +var map_TableRowCondition = map[string]string{ + "": "TableRowCondition allows a row to be marked with additional information.", + "type": "Type of row condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "reason": "(brief) machine readable reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (TableRowCondition) SwaggerDoc() map[string]string { + return map_TableRowCondition +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..ef8a117df --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,164 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: DeepCopy_v1alpha1_PartialObjectMetadata, InType: reflect.TypeOf(&PartialObjectMetadata{})}, + {Fn: DeepCopy_v1alpha1_PartialObjectMetadataList, InType: reflect.TypeOf(&PartialObjectMetadataList{})}, + {Fn: DeepCopy_v1alpha1_Table, InType: reflect.TypeOf(&Table{})}, + {Fn: DeepCopy_v1alpha1_TableColumnDefinition, InType: reflect.TypeOf(&TableColumnDefinition{})}, + {Fn: DeepCopy_v1alpha1_TableOptions, InType: reflect.TypeOf(&TableOptions{})}, + {Fn: DeepCopy_v1alpha1_TableRow, InType: reflect.TypeOf(&TableRow{})}, + {Fn: DeepCopy_v1alpha1_TableRowCondition, InType: reflect.TypeOf(&TableRowCondition{})}, + } +} + +// DeepCopy_v1alpha1_PartialObjectMetadata is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_PartialObjectMetadata(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PartialObjectMetadata) + out := out.(*PartialObjectMetadata) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + return nil + } +} + +// DeepCopy_v1alpha1_PartialObjectMetadataList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_PartialObjectMetadataList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PartialObjectMetadataList) + out := out.(*PartialObjectMetadataList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]*PartialObjectMetadata, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(**PartialObjectMetadata) + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_Table is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_Table(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Table) + out := out.(*Table) + *out = *in + if in.ColumnDefinitions != nil { + in, out := &in.ColumnDefinitions, &out.ColumnDefinitions + *out = make([]TableColumnDefinition, len(*in)) + copy(*out, *in) + } + if in.Rows != nil { + in, out := &in.Rows, &out.Rows + *out = make([]TableRow, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*TableRow) + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_TableColumnDefinition is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_TableColumnDefinition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TableColumnDefinition) + out := out.(*TableColumnDefinition) + *out = *in + return nil + } +} + +// DeepCopy_v1alpha1_TableOptions is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_TableOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TableOptions) + out := out.(*TableOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1alpha1_TableRow is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_TableRow(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TableRow) + out := out.(*TableRow) + *out = *in + if in.Cells != nil { + in, out := &in.Cells, &out.Cells + *out = make([]interface{}, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*interface{}) + } + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]TableRowCondition, len(*in)) + copy(*out, *in) + } + if newVal, err := c.DeepCopy(&in.Object); err != nil { + return err + } else { + out.Object = *newVal.(*runtime.RawExtension) + } + return nil + } +} + +// DeepCopy_v1alpha1_TableRowCondition is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_TableRowCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TableRowCondition) + out := out.(*TableRowCondition) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.defaults.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..7e6df29d4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/BUILD new file mode 100644 index 000000000..643614ee4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/BUILD @@ -0,0 +1,38 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "converter_test.go", + "deep_copy_test.go", + "helper_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "cloner.go", + "converter.go", + "deep_equal.go", + "doc.go", + "helper.go", + ], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/third_party/forked/golang/reflect:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/cloner.go b/vendor/k8s.io/apimachinery/pkg/conversion/cloner.go new file mode 100644 index 000000000..c5dec1f31 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/cloner.go @@ -0,0 +1,249 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" +) + +// Cloner knows how to copy one type to another. +type Cloner struct { + // Map from the type to a function which can do the deep copy. + deepCopyFuncs map[reflect.Type]reflect.Value + generatedDeepCopyFuncs map[reflect.Type]func(in interface{}, out interface{}, c *Cloner) error +} + +// NewCloner creates a new Cloner object. +func NewCloner() *Cloner { + c := &Cloner{ + deepCopyFuncs: map[reflect.Type]reflect.Value{}, + generatedDeepCopyFuncs: map[reflect.Type]func(in interface{}, out interface{}, c *Cloner) error{}, + } + if err := c.RegisterDeepCopyFunc(byteSliceDeepCopy); err != nil { + // If one of the deep-copy functions is malformed, detect it immediately. + panic(err) + } + return c +} + +// Prevent recursing into every byte... +func byteSliceDeepCopy(in *[]byte, out *[]byte, c *Cloner) error { + if *in != nil { + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + *out = nil + } + return nil +} + +// Verifies whether a deep-copy function has a correct signature. +func verifyDeepCopyFunctionSignature(ft reflect.Type) error { + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 3 { + return fmt.Errorf("expected three 'in' params, got %v", ft) + } + if ft.NumOut() != 1 { + return fmt.Errorf("expected one 'out' param, got %v", ft) + } + if ft.In(0).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft) + } + if ft.In(1) != ft.In(0) { + return fmt.Errorf("expected 'in' param 0 the same as param 1, got: %v", ft) + } + var forClonerType Cloner + if expected := reflect.TypeOf(&forClonerType); ft.In(2) != expected { + return fmt.Errorf("expected '%v' arg for 'in' param 2, got: '%v'", expected, ft.In(2)) + } + var forErrorType error + // This convolution is necessary, otherwise TypeOf picks up on the fact + // that forErrorType is nil + errorType := reflect.TypeOf(&forErrorType).Elem() + if ft.Out(0) != errorType { + return fmt.Errorf("expected error return, got: %v", ft) + } + return nil +} + +// RegisterGeneratedDeepCopyFunc registers a copying func with the Cloner. +// deepCopyFunc must take three parameters: a type input, a pointer to a +// type output, and a pointer to Cloner. It should return an error. +// +// Example: +// c.RegisterGeneratedDeepCopyFunc( +// func(in Pod, out *Pod, c *Cloner) error { +// // deep copy logic... +// return nil +// }) +func (c *Cloner) RegisterDeepCopyFunc(deepCopyFunc interface{}) error { + fv := reflect.ValueOf(deepCopyFunc) + ft := fv.Type() + if err := verifyDeepCopyFunctionSignature(ft); err != nil { + return err + } + c.deepCopyFuncs[ft.In(0)] = fv + return nil +} + +// GeneratedDeepCopyFunc bundles an untyped generated deep-copy function of a type +// with a reflection type object used as a key to lookup the deep-copy function. +type GeneratedDeepCopyFunc struct { + Fn func(in interface{}, out interface{}, c *Cloner) error + InType reflect.Type +} + +// Similar to RegisterDeepCopyFunc, but registers deep copy function that were +// automatically generated. +func (c *Cloner) RegisterGeneratedDeepCopyFunc(fn GeneratedDeepCopyFunc) error { + c.generatedDeepCopyFuncs[fn.InType] = fn.Fn + return nil +} + +// DeepCopy will perform a deep copy of a given object. +func (c *Cloner) DeepCopy(in interface{}) (interface{}, error) { + // Can be invalid if we run DeepCopy(X) where X is a nil interface type. + // For example, we get an invalid value when someone tries to deep-copy + // a nil labels.Selector. + // This does not occur if X is nil and is a pointer to a concrete type. + if in == nil { + return nil, nil + } + inValue := reflect.ValueOf(in) + outValue, err := c.deepCopy(inValue) + if err != nil { + return nil, err + } + return outValue.Interface(), nil +} + +func (c *Cloner) deepCopy(src reflect.Value) (reflect.Value, error) { + inType := src.Type() + + switch src.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + if src.IsNil() { + return src, nil + } + } + + if fv, ok := c.deepCopyFuncs[inType]; ok { + return c.customDeepCopy(src, fv) + } + if fv, ok := c.generatedDeepCopyFuncs[inType]; ok { + var outValue reflect.Value + outValue = reflect.New(inType.Elem()) + err := fv(src.Interface(), outValue.Interface(), c) + return outValue, err + } + return c.defaultDeepCopy(src) +} + +func (c *Cloner) customDeepCopy(src, fv reflect.Value) (reflect.Value, error) { + outValue := reflect.New(src.Type().Elem()) + args := []reflect.Value{src, outValue, reflect.ValueOf(c)} + result := fv.Call(args)[0].Interface() + // This convolution is necessary because nil interfaces won't convert + // to error. + if result == nil { + return outValue, nil + } + return outValue, result.(error) +} + +func (c *Cloner) defaultDeepCopy(src reflect.Value) (reflect.Value, error) { + switch src.Kind() { + case reflect.Chan, reflect.Func, reflect.UnsafePointer, reflect.Uintptr: + return src, fmt.Errorf("cannot deep copy kind: %s", src.Kind()) + case reflect.Array: + dst := reflect.New(src.Type()) + for i := 0; i < src.Len(); i++ { + copyVal, err := c.deepCopy(src.Index(i)) + if err != nil { + return src, err + } + dst.Elem().Index(i).Set(copyVal) + } + return dst.Elem(), nil + case reflect.Interface: + if src.IsNil() { + return src, nil + } + return c.deepCopy(src.Elem()) + case reflect.Map: + if src.IsNil() { + return src, nil + } + dst := reflect.MakeMap(src.Type()) + for _, k := range src.MapKeys() { + copyVal, err := c.deepCopy(src.MapIndex(k)) + if err != nil { + return src, err + } + dst.SetMapIndex(k, copyVal) + } + return dst, nil + case reflect.Ptr: + if src.IsNil() { + return src, nil + } + dst := reflect.New(src.Type().Elem()) + copyVal, err := c.deepCopy(src.Elem()) + if err != nil { + return src, err + } + dst.Elem().Set(copyVal) + return dst, nil + case reflect.Slice: + if src.IsNil() { + return src, nil + } + dst := reflect.MakeSlice(src.Type(), 0, src.Len()) + for i := 0; i < src.Len(); i++ { + copyVal, err := c.deepCopy(src.Index(i)) + if err != nil { + return src, err + } + dst = reflect.Append(dst, copyVal) + } + return dst, nil + case reflect.Struct: + dst := reflect.New(src.Type()) + for i := 0; i < src.NumField(); i++ { + if !dst.Elem().Field(i).CanSet() { + // Can't set private fields. At this point, the + // best we can do is a shallow copy. For + // example, time.Time is a value type with + // private members that can be shallow copied. + return src, nil + } + copyVal, err := c.deepCopy(src.Field(i)) + if err != nil { + return src, err + } + dst.Elem().Field(i).Set(copyVal) + } + return dst.Elem(), nil + + default: + // Value types like numbers, booleans, and strings. + return src, nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/converter.go b/vendor/k8s.io/apimachinery/pkg/conversion/converter.go new file mode 100644 index 000000000..7854c207c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/converter.go @@ -0,0 +1,898 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" +) + +type typePair struct { + source reflect.Type + dest reflect.Type +} + +type typeNamePair struct { + fieldType reflect.Type + fieldName string +} + +// DebugLogger allows you to get debugging messages if necessary. +type DebugLogger interface { + Logf(format string, args ...interface{}) +} + +type NameFunc func(t reflect.Type) string + +var DefaultNameFunc = func(t reflect.Type) string { return t.Name() } + +type GenericConversionFunc func(a, b interface{}, scope Scope) (bool, error) + +// Converter knows how to convert one type to another. +type Converter struct { + // Map from the conversion pair to a function which can + // do the conversion. + conversionFuncs ConversionFuncs + generatedConversionFuncs ConversionFuncs + + // genericConversions are called during normal conversion to offer a "fast-path" + // that avoids all reflection. These methods are not called outside of the .Convert() + // method. + genericConversions []GenericConversionFunc + + // Set of conversions that should be treated as a no-op + ignoredConversions map[typePair]struct{} + + // This is a map from a source field type and name, to a list of destination + // field type and name. + structFieldDests map[typeNamePair][]typeNamePair + + // Allows for the opposite lookup of structFieldDests. So that SourceFromDest + // copy flag also works. So this is a map of destination field name, to potential + // source field name and type to look for. + structFieldSources map[typeNamePair][]typeNamePair + + // Map from an input type to a function which can apply a key name mapping + inputFieldMappingFuncs map[reflect.Type]FieldMappingFunc + + // Map from an input type to a set of default conversion flags. + inputDefaultFlags map[reflect.Type]FieldMatchingFlags + + // If non-nil, will be called to print helpful debugging info. Quite verbose. + Debug DebugLogger + + // nameFunc is called to retrieve the name of a type; this name is used for the + // purpose of deciding whether two types match or not (i.e., will we attempt to + // do a conversion). The default returns the go type name. + nameFunc func(t reflect.Type) string +} + +// NewConverter creates a new Converter object. +func NewConverter(nameFn NameFunc) *Converter { + c := &Converter{ + conversionFuncs: NewConversionFuncs(), + generatedConversionFuncs: NewConversionFuncs(), + ignoredConversions: make(map[typePair]struct{}), + nameFunc: nameFn, + structFieldDests: make(map[typeNamePair][]typeNamePair), + structFieldSources: make(map[typeNamePair][]typeNamePair), + + inputFieldMappingFuncs: make(map[reflect.Type]FieldMappingFunc), + inputDefaultFlags: make(map[reflect.Type]FieldMatchingFlags), + } + c.RegisterConversionFunc(Convert_Slice_byte_To_Slice_byte) + return c +} + +// AddGenericConversionFunc adds a function that accepts the ConversionFunc call pattern +// (for two conversion types) to the converter. These functions are checked first during +// a normal conversion, but are otherwise not called. Use AddConversionFuncs when registering +// typed conversions. +func (c *Converter) AddGenericConversionFunc(fn GenericConversionFunc) { + c.genericConversions = append(c.genericConversions, fn) +} + +// WithConversions returns a Converter that is a copy of c but with the additional +// fns merged on top. +func (c *Converter) WithConversions(fns ConversionFuncs) *Converter { + copied := *c + copied.conversionFuncs = c.conversionFuncs.Merge(fns) + return &copied +} + +// DefaultMeta returns the conversion FieldMappingFunc and meta for a given type. +func (c *Converter) DefaultMeta(t reflect.Type) (FieldMatchingFlags, *Meta) { + return c.inputDefaultFlags[t], &Meta{ + KeyNameMapping: c.inputFieldMappingFuncs[t], + } +} + +// Convert_Slice_byte_To_Slice_byte prevents recursing into every byte +func Convert_Slice_byte_To_Slice_byte(in *[]byte, out *[]byte, s Scope) error { + if *in == nil { + *out = nil + return nil + } + *out = make([]byte, len(*in)) + copy(*out, *in) + return nil +} + +// Scope is passed to conversion funcs to allow them to continue an ongoing conversion. +// If multiple converters exist in the system, Scope will allow you to use the correct one +// from a conversion function--that is, the one your conversion function was called by. +type Scope interface { + // Call Convert to convert sub-objects. Note that if you call it with your own exact + // parameters, you'll run out of stack space before anything useful happens. + Convert(src, dest interface{}, flags FieldMatchingFlags) error + + // DefaultConvert performs the default conversion, without calling a conversion func + // on the current stack frame. This makes it safe to call from a conversion func. + DefaultConvert(src, dest interface{}, flags FieldMatchingFlags) error + + // SrcTags and DestTags contain the struct tags that src and dest had, respectively. + // If the enclosing object was not a struct, then these will contain no tags, of course. + SrcTag() reflect.StructTag + DestTag() reflect.StructTag + + // Flags returns the flags with which the conversion was started. + Flags() FieldMatchingFlags + + // Meta returns any information originally passed to Convert. + Meta() *Meta +} + +// FieldMappingFunc can convert an input field value into different values, depending on +// the value of the source or destination struct tags. +type FieldMappingFunc func(key string, sourceTag, destTag reflect.StructTag) (source string, dest string) + +func NewConversionFuncs() ConversionFuncs { + return ConversionFuncs{fns: make(map[typePair]reflect.Value)} +} + +type ConversionFuncs struct { + fns map[typePair]reflect.Value +} + +// Add adds the provided conversion functions to the lookup table - they must have the signature +// `func(type1, type2, Scope) error`. Functions are added in the order passed and will override +// previously registered pairs. +func (c ConversionFuncs) Add(fns ...interface{}) error { + for _, fn := range fns { + fv := reflect.ValueOf(fn) + ft := fv.Type() + if err := verifyConversionFunctionSignature(ft); err != nil { + return err + } + c.fns[typePair{ft.In(0).Elem(), ft.In(1).Elem()}] = fv + } + return nil +} + +// Merge returns a new ConversionFuncs that contains all conversions from +// both other and c, with other conversions taking precedence. +func (c ConversionFuncs) Merge(other ConversionFuncs) ConversionFuncs { + merged := NewConversionFuncs() + for k, v := range c.fns { + merged.fns[k] = v + } + for k, v := range other.fns { + merged.fns[k] = v + } + return merged +} + +// Meta is supplied by Scheme, when it calls Convert. +type Meta struct { + // KeyNameMapping is an optional function which may map the listed key (field name) + // into a source and destination value. + KeyNameMapping FieldMappingFunc + // Context is an optional field that callers may use to pass info to conversion functions. + Context interface{} +} + +// scope contains information about an ongoing conversion. +type scope struct { + converter *Converter + meta *Meta + flags FieldMatchingFlags + + // srcStack & destStack are separate because they may not have a 1:1 + // relationship. + srcStack scopeStack + destStack scopeStack +} + +type scopeStackElem struct { + tag reflect.StructTag + value reflect.Value + key string +} + +type scopeStack []scopeStackElem + +func (s *scopeStack) pop() { + n := len(*s) + *s = (*s)[:n-1] +} + +func (s *scopeStack) push(e scopeStackElem) { + *s = append(*s, e) +} + +func (s *scopeStack) top() *scopeStackElem { + return &(*s)[len(*s)-1] +} + +func (s scopeStack) describe() string { + desc := "" + if len(s) > 1 { + desc = "(" + s[1].value.Type().String() + ")" + } + for i, v := range s { + if i < 2 { + // First layer on stack is not real; second is handled specially above. + continue + } + if v.key == "" { + desc += fmt.Sprintf(".%v", v.value.Type()) + } else { + desc += fmt.Sprintf(".%v", v.key) + } + } + return desc +} + +// Formats src & dest as indices for printing. +func (s *scope) setIndices(src, dest int) { + s.srcStack.top().key = fmt.Sprintf("[%v]", src) + s.destStack.top().key = fmt.Sprintf("[%v]", dest) +} + +// Formats src & dest as map keys for printing. +func (s *scope) setKeys(src, dest interface{}) { + s.srcStack.top().key = fmt.Sprintf(`["%v"]`, src) + s.destStack.top().key = fmt.Sprintf(`["%v"]`, dest) +} + +// Convert continues a conversion. +func (s *scope) Convert(src, dest interface{}, flags FieldMatchingFlags) error { + return s.converter.Convert(src, dest, flags, s.meta) +} + +// DefaultConvert continues a conversion, performing a default conversion (no conversion func) +// for the current stack frame. +func (s *scope) DefaultConvert(src, dest interface{}, flags FieldMatchingFlags) error { + return s.converter.DefaultConvert(src, dest, flags, s.meta) +} + +// SrcTag returns the tag of the struct containing the current source item, if any. +func (s *scope) SrcTag() reflect.StructTag { + return s.srcStack.top().tag +} + +// DestTag returns the tag of the struct containing the current dest item, if any. +func (s *scope) DestTag() reflect.StructTag { + return s.destStack.top().tag +} + +// Flags returns the flags with which the current conversion was started. +func (s *scope) Flags() FieldMatchingFlags { + return s.flags +} + +// Meta returns the meta object that was originally passed to Convert. +func (s *scope) Meta() *Meta { + return s.meta +} + +// describe prints the path to get to the current (source, dest) values. +func (s *scope) describe() (src, dest string) { + return s.srcStack.describe(), s.destStack.describe() +} + +// error makes an error that includes information about where we were in the objects +// we were asked to convert. +func (s *scope) errorf(message string, args ...interface{}) error { + srcPath, destPath := s.describe() + where := fmt.Sprintf("converting %v to %v: ", srcPath, destPath) + return fmt.Errorf(where+message, args...) +} + +// Verifies whether a conversion function has a correct signature. +func verifyConversionFunctionSignature(ft reflect.Type) error { + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 3 { + return fmt.Errorf("expected three 'in' params, got: %v", ft) + } + if ft.NumOut() != 1 { + return fmt.Errorf("expected one 'out' param, got: %v", ft) + } + if ft.In(0).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft) + } + if ft.In(1).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 1, got: %v", ft) + } + scopeType := Scope(nil) + if e, a := reflect.TypeOf(&scopeType).Elem(), ft.In(2); e != a { + return fmt.Errorf("expected '%v' arg for 'in' param 2, got '%v' (%v)", e, a, ft) + } + var forErrorType error + // This convolution is necessary, otherwise TypeOf picks up on the fact + // that forErrorType is nil. + errorType := reflect.TypeOf(&forErrorType).Elem() + if ft.Out(0) != errorType { + return fmt.Errorf("expected error return, got: %v", ft) + } + return nil +} + +// RegisterConversionFunc registers a conversion func with the +// Converter. conversionFunc must take three parameters: a pointer to the input +// type, a pointer to the output type, and a conversion.Scope (which should be +// used if recursive conversion calls are desired). It must return an error. +// +// Example: +// c.RegisterConversionFunc( +// func(in *Pod, out *v1.Pod, s Scope) error { +// // conversion logic... +// return nil +// }) +func (c *Converter) RegisterConversionFunc(conversionFunc interface{}) error { + return c.conversionFuncs.Add(conversionFunc) +} + +// Similar to RegisterConversionFunc, but registers conversion function that were +// automatically generated. +func (c *Converter) RegisterGeneratedConversionFunc(conversionFunc interface{}) error { + return c.generatedConversionFuncs.Add(conversionFunc) +} + +// RegisterIgnoredConversion registers a "no-op" for conversion, where any requested +// conversion between from and to is ignored. +func (c *Converter) RegisterIgnoredConversion(from, to interface{}) error { + typeFrom := reflect.TypeOf(from) + typeTo := reflect.TypeOf(to) + if reflect.TypeOf(from).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'from' param 0, got: %v", typeFrom) + } + if typeTo.Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'to' param 1, got: %v", typeTo) + } + c.ignoredConversions[typePair{typeFrom.Elem(), typeTo.Elem()}] = struct{}{} + return nil +} + +// IsConversionIgnored returns true if the specified objects should be dropped during +// conversion. +func (c *Converter) IsConversionIgnored(inType, outType reflect.Type) bool { + _, found := c.ignoredConversions[typePair{inType, outType}] + return found +} + +func (c *Converter) HasConversionFunc(inType, outType reflect.Type) bool { + _, found := c.conversionFuncs.fns[typePair{inType, outType}] + return found +} + +func (c *Converter) ConversionFuncValue(inType, outType reflect.Type) (reflect.Value, bool) { + value, found := c.conversionFuncs.fns[typePair{inType, outType}] + return value, found +} + +// SetStructFieldCopy registers a correspondence. Whenever a struct field is encountered +// which has a type and name matching srcFieldType and srcFieldName, it wil be copied +// into the field in the destination struct matching destFieldType & Name, if such a +// field exists. +// May be called multiple times, even for the same source field & type--all applicable +// copies will be performed. +func (c *Converter) SetStructFieldCopy(srcFieldType interface{}, srcFieldName string, destFieldType interface{}, destFieldName string) error { + st := reflect.TypeOf(srcFieldType) + dt := reflect.TypeOf(destFieldType) + srcKey := typeNamePair{st, srcFieldName} + destKey := typeNamePair{dt, destFieldName} + c.structFieldDests[srcKey] = append(c.structFieldDests[srcKey], destKey) + c.structFieldSources[destKey] = append(c.structFieldSources[destKey], srcKey) + return nil +} + +// RegisterInputDefaults registers a field name mapping function, used when converting +// from maps to structs. Inputs to the conversion methods are checked for this type and a mapping +// applied automatically if the input matches in. A set of default flags for the input conversion +// may also be provided, which will be used when no explicit flags are requested. +func (c *Converter) RegisterInputDefaults(in interface{}, fn FieldMappingFunc, defaultFlags FieldMatchingFlags) error { + fv := reflect.ValueOf(in) + ft := fv.Type() + if ft.Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer 'in' argument, got: %v", ft) + } + c.inputFieldMappingFuncs[ft] = fn + c.inputDefaultFlags[ft] = defaultFlags + return nil +} + +// FieldMatchingFlags contains a list of ways in which struct fields could be +// copied. These constants may be | combined. +type FieldMatchingFlags int + +const ( + // Loop through destination fields, search for matching source + // field to copy it from. Source fields with no corresponding + // destination field will be ignored. If SourceToDest is + // specified, this flag is ignored. If neither is specified, + // or no flags are passed, this flag is the default. + DestFromSource FieldMatchingFlags = 0 + // Loop through source fields, search for matching dest field + // to copy it into. Destination fields with no corresponding + // source field will be ignored. + SourceToDest FieldMatchingFlags = 1 << iota + // Don't treat it as an error if the corresponding source or + // dest field can't be found. + IgnoreMissingFields + // Don't require type names to match. + AllowDifferentFieldTypeNames +) + +// IsSet returns true if the given flag or combination of flags is set. +func (f FieldMatchingFlags) IsSet(flag FieldMatchingFlags) bool { + if flag == DestFromSource { + // The bit logic doesn't work on the default value. + return f&SourceToDest != SourceToDest + } + return f&flag == flag +} + +// Convert will translate src to dest if it knows how. Both must be pointers. +// If no conversion func is registered and the default copying mechanism +// doesn't work on this type pair, an error will be returned. +// Read the comments on the various FieldMatchingFlags constants to understand +// what the 'flags' parameter does. +// 'meta' is given to allow you to pass information to conversion functions, +// it is not used by Convert() other than storing it in the scope. +// Not safe for objects with cyclic references! +func (c *Converter) Convert(src, dest interface{}, flags FieldMatchingFlags, meta *Meta) error { + if len(c.genericConversions) > 0 { + // TODO: avoid scope allocation + s := &scope{converter: c, flags: flags, meta: meta} + for _, fn := range c.genericConversions { + if ok, err := fn(src, dest, s); ok { + return err + } + } + } + return c.doConversion(src, dest, flags, meta, c.convert) +} + +// DefaultConvert will translate src to dest if it knows how. Both must be pointers. +// No conversion func is used. If the default copying mechanism +// doesn't work on this type pair, an error will be returned. +// Read the comments on the various FieldMatchingFlags constants to understand +// what the 'flags' parameter does. +// 'meta' is given to allow you to pass information to conversion functions, +// it is not used by DefaultConvert() other than storing it in the scope. +// Not safe for objects with cyclic references! +func (c *Converter) DefaultConvert(src, dest interface{}, flags FieldMatchingFlags, meta *Meta) error { + return c.doConversion(src, dest, flags, meta, c.defaultConvert) +} + +type conversionFunc func(sv, dv reflect.Value, scope *scope) error + +func (c *Converter) doConversion(src, dest interface{}, flags FieldMatchingFlags, meta *Meta, f conversionFunc) error { + dv, err := EnforcePtr(dest) + if err != nil { + return err + } + if !dv.CanAddr() && !dv.CanSet() { + return fmt.Errorf("can't write to dest") + } + sv, err := EnforcePtr(src) + if err != nil { + return err + } + s := &scope{ + converter: c, + flags: flags, + meta: meta, + } + // Leave something on the stack, so that calls to struct tag getters never fail. + s.srcStack.push(scopeStackElem{}) + s.destStack.push(scopeStackElem{}) + return f(sv, dv, s) +} + +// callCustom calls 'custom' with sv & dv. custom must be a conversion function. +func (c *Converter) callCustom(sv, dv, custom reflect.Value, scope *scope) error { + if !sv.CanAddr() { + sv2 := reflect.New(sv.Type()) + sv2.Elem().Set(sv) + sv = sv2 + } else { + sv = sv.Addr() + } + if !dv.CanAddr() { + if !dv.CanSet() { + return scope.errorf("can't addr or set dest.") + } + dvOrig := dv + dv := reflect.New(dvOrig.Type()) + defer func() { dvOrig.Set(dv) }() + } else { + dv = dv.Addr() + } + args := []reflect.Value{sv, dv, reflect.ValueOf(scope)} + ret := custom.Call(args)[0].Interface() + // This convolution is necessary because nil interfaces won't convert + // to errors. + if ret == nil { + return nil + } + return ret.(error) +} + +// convert recursively copies sv into dv, calling an appropriate conversion function if +// one is registered. +func (c *Converter) convert(sv, dv reflect.Value, scope *scope) error { + dt, st := dv.Type(), sv.Type() + pair := typePair{st, dt} + + // ignore conversions of this type + if _, ok := c.ignoredConversions[pair]; ok { + if c.Debug != nil { + c.Debug.Logf("Ignoring conversion of '%v' to '%v'", st, dt) + } + return nil + } + + // Convert sv to dv. + if fv, ok := c.conversionFuncs.fns[pair]; ok { + if c.Debug != nil { + c.Debug.Logf("Calling custom conversion of '%v' to '%v'", st, dt) + } + return c.callCustom(sv, dv, fv, scope) + } + if fv, ok := c.generatedConversionFuncs.fns[pair]; ok { + if c.Debug != nil { + c.Debug.Logf("Calling generated conversion of '%v' to '%v'", st, dt) + } + return c.callCustom(sv, dv, fv, scope) + } + + return c.defaultConvert(sv, dv, scope) +} + +// defaultConvert recursively copies sv into dv. no conversion function is called +// for the current stack frame (but conversion functions may be called for nested objects) +func (c *Converter) defaultConvert(sv, dv reflect.Value, scope *scope) error { + dt, st := dv.Type(), sv.Type() + + if !dv.CanSet() { + return scope.errorf("Cannot set dest. (Tried to deep copy something with unexported fields?)") + } + + if !scope.flags.IsSet(AllowDifferentFieldTypeNames) && c.nameFunc(dt) != c.nameFunc(st) { + return scope.errorf( + "type names don't match (%v, %v), and no conversion 'func (%v, %v) error' registered.", + c.nameFunc(st), c.nameFunc(dt), st, dt) + } + + switch st.Kind() { + case reflect.Map, reflect.Ptr, reflect.Slice, reflect.Interface, reflect.Struct: + // Don't copy these via assignment/conversion! + default: + // This should handle all simple types. + if st.AssignableTo(dt) { + dv.Set(sv) + return nil + } + if st.ConvertibleTo(dt) { + dv.Set(sv.Convert(dt)) + return nil + } + } + + if c.Debug != nil { + c.Debug.Logf("Trying to convert '%v' to '%v'", st, dt) + } + + scope.srcStack.push(scopeStackElem{value: sv}) + scope.destStack.push(scopeStackElem{value: dv}) + defer scope.srcStack.pop() + defer scope.destStack.pop() + + switch dv.Kind() { + case reflect.Struct: + return c.convertKV(toKVValue(sv), toKVValue(dv), scope) + case reflect.Slice: + if sv.IsNil() { + // Don't make a zero-length slice. + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.MakeSlice(dt, sv.Len(), sv.Cap())) + for i := 0; i < sv.Len(); i++ { + scope.setIndices(i, i) + if err := c.convert(sv.Index(i), dv.Index(i), scope); err != nil { + return err + } + } + case reflect.Ptr: + if sv.IsNil() { + // Don't copy a nil ptr! + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.New(dt.Elem())) + switch st.Kind() { + case reflect.Ptr, reflect.Interface: + return c.convert(sv.Elem(), dv.Elem(), scope) + default: + return c.convert(sv, dv.Elem(), scope) + } + case reflect.Map: + if sv.IsNil() { + // Don't copy a nil ptr! + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.MakeMap(dt)) + for _, sk := range sv.MapKeys() { + dk := reflect.New(dt.Key()).Elem() + if err := c.convert(sk, dk, scope); err != nil { + return err + } + dkv := reflect.New(dt.Elem()).Elem() + scope.setKeys(sk.Interface(), dk.Interface()) + // TODO: sv.MapIndex(sk) may return a value with CanAddr() == false, + // because a map[string]struct{} does not allow a pointer reference. + // Calling a custom conversion function defined for the map value + // will panic. Example is PodInfo map[string]ContainerStatus. + if err := c.convert(sv.MapIndex(sk), dkv, scope); err != nil { + return err + } + dv.SetMapIndex(dk, dkv) + } + case reflect.Interface: + if sv.IsNil() { + // Don't copy a nil interface! + dv.Set(reflect.Zero(dt)) + return nil + } + tmpdv := reflect.New(sv.Elem().Type()).Elem() + if err := c.convert(sv.Elem(), tmpdv, scope); err != nil { + return err + } + dv.Set(reflect.ValueOf(tmpdv.Interface())) + return nil + default: + return scope.errorf("couldn't copy '%v' into '%v'; didn't understand types", st, dt) + } + return nil +} + +var stringType = reflect.TypeOf("") + +func toKVValue(v reflect.Value) kvValue { + switch v.Kind() { + case reflect.Struct: + return structAdaptor(v) + case reflect.Map: + if v.Type().Key().AssignableTo(stringType) { + return stringMapAdaptor(v) + } + } + + return nil +} + +// kvValue lets us write the same conversion logic to work with both maps +// and structs. Only maps with string keys make sense for this. +type kvValue interface { + // returns all keys, as a []string. + keys() []string + // Will just return "" for maps. + tagOf(key string) reflect.StructTag + // Will return the zero Value if the key doesn't exist. + value(key string) reflect.Value + // Maps require explicit setting-- will do nothing for structs. + // Returns false on failure. + confirmSet(key string, v reflect.Value) bool +} + +type stringMapAdaptor reflect.Value + +func (a stringMapAdaptor) len() int { + return reflect.Value(a).Len() +} + +func (a stringMapAdaptor) keys() []string { + v := reflect.Value(a) + keys := make([]string, v.Len()) + for i, v := range v.MapKeys() { + if v.IsNil() { + continue + } + switch t := v.Interface().(type) { + case string: + keys[i] = t + } + } + return keys +} + +func (a stringMapAdaptor) tagOf(key string) reflect.StructTag { + return "" +} + +func (a stringMapAdaptor) value(key string) reflect.Value { + return reflect.Value(a).MapIndex(reflect.ValueOf(key)) +} + +func (a stringMapAdaptor) confirmSet(key string, v reflect.Value) bool { + return true +} + +type structAdaptor reflect.Value + +func (a structAdaptor) len() int { + v := reflect.Value(a) + return v.Type().NumField() +} + +func (a structAdaptor) keys() []string { + v := reflect.Value(a) + t := v.Type() + keys := make([]string, t.NumField()) + for i := range keys { + keys[i] = t.Field(i).Name + } + return keys +} + +func (a structAdaptor) tagOf(key string) reflect.StructTag { + v := reflect.Value(a) + field, ok := v.Type().FieldByName(key) + if ok { + return field.Tag + } + return "" +} + +func (a structAdaptor) value(key string) reflect.Value { + v := reflect.Value(a) + return v.FieldByName(key) +} + +func (a structAdaptor) confirmSet(key string, v reflect.Value) bool { + return true +} + +// convertKV can convert things that consist of key/value pairs, like structs +// and some maps. +func (c *Converter) convertKV(skv, dkv kvValue, scope *scope) error { + if skv == nil || dkv == nil { + // TODO: add keys to stack to support really understandable error messages. + return fmt.Errorf("Unable to convert %#v to %#v", skv, dkv) + } + + lister := dkv + if scope.flags.IsSet(SourceToDest) { + lister = skv + } + + var mapping FieldMappingFunc + if scope.meta != nil && scope.meta.KeyNameMapping != nil { + mapping = scope.meta.KeyNameMapping + } + + for _, key := range lister.keys() { + if found, err := c.checkField(key, skv, dkv, scope); found { + if err != nil { + return err + } + continue + } + stag := skv.tagOf(key) + dtag := dkv.tagOf(key) + skey := key + dkey := key + if mapping != nil { + skey, dkey = scope.meta.KeyNameMapping(key, stag, dtag) + } + + df := dkv.value(dkey) + sf := skv.value(skey) + if !df.IsValid() || !sf.IsValid() { + switch { + case scope.flags.IsSet(IgnoreMissingFields): + // No error. + case scope.flags.IsSet(SourceToDest): + return scope.errorf("%v not present in dest", dkey) + default: + return scope.errorf("%v not present in src", skey) + } + continue + } + scope.srcStack.top().key = skey + scope.srcStack.top().tag = stag + scope.destStack.top().key = dkey + scope.destStack.top().tag = dtag + if err := c.convert(sf, df, scope); err != nil { + return err + } + } + return nil +} + +// checkField returns true if the field name matches any of the struct +// field copying rules. The error should be ignored if it returns false. +func (c *Converter) checkField(fieldName string, skv, dkv kvValue, scope *scope) (bool, error) { + replacementMade := false + if scope.flags.IsSet(DestFromSource) { + df := dkv.value(fieldName) + if !df.IsValid() { + return false, nil + } + destKey := typeNamePair{df.Type(), fieldName} + // Check each of the potential source (type, name) pairs to see if they're + // present in sv. + for _, potentialSourceKey := range c.structFieldSources[destKey] { + sf := skv.value(potentialSourceKey.fieldName) + if !sf.IsValid() { + continue + } + if sf.Type() == potentialSourceKey.fieldType { + // Both the source's name and type matched, so copy. + scope.srcStack.top().key = potentialSourceKey.fieldName + scope.destStack.top().key = fieldName + if err := c.convert(sf, df, scope); err != nil { + return true, err + } + dkv.confirmSet(fieldName, df) + replacementMade = true + } + } + return replacementMade, nil + } + + sf := skv.value(fieldName) + if !sf.IsValid() { + return false, nil + } + srcKey := typeNamePair{sf.Type(), fieldName} + // Check each of the potential dest (type, name) pairs to see if they're + // present in dv. + for _, potentialDestKey := range c.structFieldDests[srcKey] { + df := dkv.value(potentialDestKey.fieldName) + if !df.IsValid() { + continue + } + if df.Type() == potentialDestKey.fieldType { + // Both the dest's name and type matched, so copy. + scope.srcStack.top().key = fieldName + scope.destStack.top().key = potentialDestKey.fieldName + if err := c.convert(sf, df, scope); err != nil { + return true, err + } + dkv.confirmSet(potentialDestKey.fieldName, df) + replacementMade = true + } + } + return replacementMade, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/converter_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/converter_test.go new file mode 100644 index 000000000..57f51c253 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/converter_test.go @@ -0,0 +1,826 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "testing" + + "github.com/google/gofuzz" + flag "github.com/spf13/pflag" + + "k8s.io/apimachinery/pkg/util/diff" +) + +var fuzzIters = flag.Int("fuzz-iters", 50, "How many fuzzing iterations to do.") + +// Test a weird version/kind embedding format. +type MyWeirdCustomEmbeddedVersionKindField struct { + ID string `json:"ID,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + Z string `json:"Z,omitempty"` + Y uint64 `json:"Y,omitempty"` +} + +type TestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]TestType2 `json:"N,omitempty"` + O *TestType2 `json:"O,omitempty"` + P []TestType2 `json:"Q,omitempty"` +} + +type TestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +type ExternalTestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} +type ExternalTestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]ExternalTestType2 `json:"N,omitempty"` + O *ExternalTestType2 `json:"O,omitempty"` + P []ExternalTestType2 `json:"Q,omitempty"` +} + +func testLogger(t *testing.T) DebugLogger { + // We don't set logger to eliminate rubbish logs in tests. + // If you want to switch it, simply switch it to: "return t" + return nil +} + +func TestConverter_byteSlice(t *testing.T) { + c := NewConverter(DefaultNameFunc) + src := []byte{1, 2, 3} + dest := []byte{} + err := c.Convert(&src, &dest, 0, nil) + if err != nil { + t.Fatalf("expected no error") + } + if e, a := src, dest; !reflect.DeepEqual(e, a) { + t.Errorf("expected %#v, got %#v", e, a) + } +} + +func TestConverter_MismatchedTypes(t *testing.T) { + c := NewConverter(DefaultNameFunc) + + err := c.RegisterConversionFunc( + func(in *[]string, out *int, s Scope) error { + if str, err := strconv.Atoi((*in)[0]); err != nil { + return err + } else { + *out = str + return nil + } + }, + ) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + src := []string{"5"} + var dest *int + err = c.Convert(&src, &dest, 0, nil) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if e, a := 5, *dest; e != a { + t.Errorf("expected %#v, got %#v", e, a) + } +} + +func TestConverter_DefaultConvert(t *testing.T) { + type A struct { + Foo string + Baz int + } + type B struct { + Bar string + Baz int + } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + c.nameFunc = func(t reflect.Type) string { return "MyType" } + + // Ensure conversion funcs can call DefaultConvert to get default behavior, + // then fixup remaining fields manually + err := c.RegisterConversionFunc(func(in *A, out *B, s Scope) error { + if err := s.DefaultConvert(in, out, IgnoreMissingFields); err != nil { + return err + } + out.Bar = in.Foo + return nil + }) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + + x := A{"hello, intrepid test reader!", 3} + y := B{} + + err = c.Convert(&x, &y, 0, nil) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + if e, a := x.Foo, y.Bar; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := x.Baz, y.Baz; e != a { + t.Errorf("expected %v, got %v", e, a) + } +} + +func TestConverter_DeepCopy(t *testing.T) { + type A struct { + Foo *string + Bar []string + Baz interface{} + Qux map[string]string + } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + + foo, baz := "foo", "baz" + x := A{ + Foo: &foo, + Bar: []string{"bar"}, + Baz: &baz, + Qux: map[string]string{"qux": "qux"}, + } + y := A{} + + if err := c.Convert(&x, &y, 0, nil); err != nil { + t.Fatalf("unexpected error %v", err) + } + *x.Foo = "foo2" + x.Bar[0] = "bar2" + *x.Baz.(*string) = "baz2" + x.Qux["qux"] = "qux2" + if e, a := *x.Foo, *y.Foo; e == a { + t.Errorf("expected difference between %v and %v", e, a) + } + if e, a := x.Bar, y.Bar; reflect.DeepEqual(e, a) { + t.Errorf("expected difference between %v and %v", e, a) + } + if e, a := *x.Baz.(*string), *y.Baz.(*string); e == a { + t.Errorf("expected difference between %v and %v", e, a) + } + if e, a := x.Qux, y.Qux; reflect.DeepEqual(e, a) { + t.Errorf("expected difference between %v and %v", e, a) + } +} + +func TestConverter_CallsRegisteredFunctions(t *testing.T) { + type A struct { + Foo string + Baz int + } + type B struct { + Bar string + Baz int + } + type C struct{} + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + err := c.RegisterConversionFunc(func(in *A, out *B, s Scope) error { + out.Bar = in.Foo + return s.Convert(&in.Baz, &out.Baz, 0) + }) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + err = c.RegisterConversionFunc(func(in *B, out *A, s Scope) error { + out.Foo = in.Bar + return s.Convert(&in.Baz, &out.Baz, 0) + }) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + + x := A{"hello, intrepid test reader!", 3} + y := B{} + + err = c.Convert(&x, &y, 0, nil) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + if e, a := x.Foo, y.Bar; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := x.Baz, y.Baz; e != a { + t.Errorf("expected %v, got %v", e, a) + } + + z := B{"all your test are belong to us", 42} + w := A{} + + err = c.Convert(&z, &w, 0, nil) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + if e, a := z.Bar, w.Foo; e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := z.Baz, w.Baz; e != a { + t.Errorf("expected %v, got %v", e, a) + } + + err = c.RegisterConversionFunc(func(in *A, out *C, s Scope) error { + return fmt.Errorf("C can't store an A, silly") + }) + if err != nil { + t.Fatalf("unexpected error %v", err) + } + err = c.Convert(&A{}, &C{}, 0, nil) + if err == nil { + t.Errorf("unexpected non-error") + } +} + +func TestConverter_IgnoredConversion(t *testing.T) { + type A struct{} + type B struct{} + + count := 0 + c := NewConverter(DefaultNameFunc) + if err := c.RegisterConversionFunc(func(in *A, out *B, s Scope) error { + count++ + return nil + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + if err := c.RegisterIgnoredConversion(&A{}, &B{}); err != nil { + t.Fatal(err) + } + a := A{} + b := B{} + if err := c.Convert(&a, &b, 0, nil); err != nil { + t.Errorf("%v", err) + } + if count != 0 { + t.Errorf("unexpected number of conversion invocations") + } +} + +func TestConverter_IgnoredConversionNested(t *testing.T) { + type C string + type A struct { + C C + } + type B struct { + C C + } + + c := NewConverter(DefaultNameFunc) + typed := C("") + if err := c.RegisterIgnoredConversion(&typed, &typed); err != nil { + t.Fatal(err) + } + a := A{C: C("test")} + b := B{C: C("other")} + if err := c.Convert(&a, &b, AllowDifferentFieldTypeNames, nil); err != nil { + t.Errorf("%v", err) + } + if b.C != C("other") { + t.Errorf("expected no conversion of field C: %#v", b) + } +} + +func TestConverter_GeneratedConversionOverriden(t *testing.T) { + type A struct{} + type B struct{} + c := NewConverter(DefaultNameFunc) + if err := c.RegisterConversionFunc(func(in *A, out *B, s Scope) error { + return nil + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + if err := c.RegisterGeneratedConversionFunc(func(in *A, out *B, s Scope) error { + return fmt.Errorf("generated function should be overriden") + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + + a := A{} + b := B{} + if err := c.Convert(&a, &b, 0, nil); err != nil { + t.Errorf("%v", err) + } +} + +func TestConverter_WithConversionOverriden(t *testing.T) { + type A struct{} + type B struct{} + c := NewConverter(DefaultNameFunc) + if err := c.RegisterConversionFunc(func(in *A, out *B, s Scope) error { + return fmt.Errorf("conversion function should be overriden") + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + if err := c.RegisterGeneratedConversionFunc(func(in *A, out *B, s Scope) error { + return fmt.Errorf("generated function should be overriden") + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + + ext := NewConversionFuncs() + ext.Add(func(in *A, out *B, s Scope) error { + return nil + }) + newc := c.WithConversions(ext) + + a := A{} + b := B{} + if err := c.Convert(&a, &b, 0, nil); err == nil || err.Error() != "conversion function should be overriden" { + t.Errorf("unexpected error: %v", err) + } + if err := newc.Convert(&a, &b, 0, nil); err != nil { + t.Errorf("%v", err) + } +} + +func TestConverter_MapsStringArrays(t *testing.T) { + type A struct { + Foo string + Baz int + Other string + } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + if err := c.RegisterConversionFunc(func(input *[]string, out *string, s Scope) error { + if len(*input) == 0 { + *out = "" + } + *out = (*input)[0] + return nil + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + + x := map[string][]string{ + "Foo": {"bar"}, + "Baz": {"1"}, + "Other": {"", "test"}, + "other": {"wrong"}, + } + y := A{"test", 2, "something"} + + if err := c.Convert(&x, &y, AllowDifferentFieldTypeNames, nil); err == nil { + t.Error("unexpected non-error") + } + + if err := c.RegisterConversionFunc(func(input *[]string, out *int, s Scope) error { + if len(*input) == 0 { + *out = 0 + } + str := (*input)[0] + i, err := strconv.Atoi(str) + if err != nil { + return err + } + *out = i + return nil + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + + if err := c.Convert(&x, &y, AllowDifferentFieldTypeNames, nil); err != nil { + t.Fatalf("unexpected error %v", err) + } + if !reflect.DeepEqual(y, A{"bar", 1, ""}) { + t.Errorf("unexpected result: %#v", y) + } +} + +func TestConverter_MapsStringArraysWithMappingKey(t *testing.T) { + type A struct { + Foo string `json:"test"` + Baz int + Other string + } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + if err := c.RegisterConversionFunc(func(input *[]string, out *string, s Scope) error { + if len(*input) == 0 { + *out = "" + } + *out = (*input)[0] + return nil + }); err != nil { + t.Fatalf("unexpected error %v", err) + } + + x := map[string][]string{ + "Foo": {"bar"}, + "test": {"baz"}, + } + y := A{"", 0, ""} + + if err := c.Convert(&x, &y, AllowDifferentFieldTypeNames|IgnoreMissingFields, &Meta{}); err != nil { + t.Fatalf("unexpected error %v", err) + } + if !reflect.DeepEqual(y, A{"bar", 0, ""}) { + t.Errorf("unexpected result: %#v", y) + } + + mapping := func(key string, sourceTag, destTag reflect.StructTag) (source string, dest string) { + if s := destTag.Get("json"); len(s) > 0 { + return strings.SplitN(s, ",", 2)[0], key + } + return key, key + } + + if err := c.Convert(&x, &y, AllowDifferentFieldTypeNames|IgnoreMissingFields, &Meta{KeyNameMapping: mapping}); err != nil { + t.Fatalf("unexpected error %v", err) + } + if !reflect.DeepEqual(y, A{"baz", 0, ""}) { + t.Errorf("unexpected result: %#v", y) + } +} + +func TestConverter_fuzz(t *testing.T) { + // Use the same types from the scheme test. + table := []struct { + from, to, check interface{} + }{ + {&TestType1{}, &ExternalTestType1{}, &TestType1{}}, + {&ExternalTestType1{}, &TestType1{}, &ExternalTestType1{}}, + } + + f := fuzz.New().NilChance(.5).NumElements(0, 100) + c := NewConverter(DefaultNameFunc) + c.nameFunc = func(t reflect.Type) string { + // Hide the fact that we don't have separate packages for these things. + return map[reflect.Type]string{ + reflect.TypeOf(TestType1{}): "TestType1", + reflect.TypeOf(ExternalTestType1{}): "TestType1", + reflect.TypeOf(TestType2{}): "TestType2", + reflect.TypeOf(ExternalTestType2{}): "TestType2", + }[t] + } + c.Debug = testLogger(t) + + for i, item := range table { + for j := 0; j < *fuzzIters; j++ { + f.Fuzz(item.from) + err := c.Convert(item.from, item.to, 0, nil) + if err != nil { + t.Errorf("(%v, %v): unexpected error: %v", i, j, err) + continue + } + err = c.Convert(item.to, item.check, 0, nil) + if err != nil { + t.Errorf("(%v, %v): unexpected error: %v", i, j, err) + continue + } + if e, a := item.from, item.check; !reflect.DeepEqual(e, a) { + t.Errorf("(%v, %v): unexpected diff: %v", i, j, diff.ObjectDiff(e, a)) + } + } + } +} + +func TestConverter_MapElemAddr(t *testing.T) { + type Foo struct { + A map[int]int + } + type Bar struct { + A map[string]string + } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + err := c.RegisterConversionFunc( + func(in *int, out *string, s Scope) error { + *out = fmt.Sprintf("%v", *in) + return nil + }, + ) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + err = c.RegisterConversionFunc( + func(in *string, out *int, s Scope) error { + if str, err := strconv.Atoi(*in); err != nil { + return err + } else { + *out = str + return nil + } + }, + ) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + f := fuzz.New().NilChance(0).NumElements(3, 3) + first := Foo{} + second := Bar{} + f.Fuzz(&first) + err = c.Convert(&first, &second, AllowDifferentFieldTypeNames, nil) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + third := Foo{} + err = c.Convert(&second, &third, AllowDifferentFieldTypeNames, nil) + if e, a := first, third; !reflect.DeepEqual(e, a) { + t.Errorf("Unexpected diff: %v", diff.ObjectDiff(e, a)) + } +} + +func TestConverter_tags(t *testing.T) { + type Foo struct { + A string `test:"foo"` + } + type Bar struct { + A string `test:"bar"` + } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + err := c.RegisterConversionFunc( + func(in *string, out *string, s Scope) error { + if e, a := "foo", s.SrcTag().Get("test"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := "bar", s.DestTag().Get("test"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + return nil + }, + ) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + err = c.Convert(&Foo{}, &Bar{}, AllowDifferentFieldTypeNames, nil) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } +} + +func TestConverter_meta(t *testing.T) { + type Foo struct{ A string } + type Bar struct{ A string } + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + checks := 0 + err := c.RegisterConversionFunc( + func(in *Foo, out *Bar, s Scope) error { + if s.Meta() == nil { + t.Errorf("Meta did not get passed!") + } + checks++ + s.Convert(&in.A, &out.A, 0) + return nil + }, + ) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + err = c.RegisterConversionFunc( + func(in *string, out *string, s Scope) error { + if s.Meta() == nil { + t.Errorf("Meta did not get passed a second time!") + } + checks++ + return nil + }, + ) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + err = c.Convert(&Foo{}, &Bar{}, 0, &Meta{}) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if checks != 2 { + t.Errorf("Registered functions did not get called.") + } +} + +func TestConverter_flags(t *testing.T) { + type Foo struct{ A string } + type Bar struct{ A string } + table := []struct { + from, to interface{} + flags FieldMatchingFlags + shouldSucceed bool + }{ + // Check that DestFromSource allows extra fields only in source. + { + from: &struct{ A string }{}, + to: &struct{ A, B string }{}, + flags: DestFromSource, + shouldSucceed: false, + }, { + from: &struct{ A, B string }{}, + to: &struct{ A string }{}, + flags: DestFromSource, + shouldSucceed: true, + }, + + // Check that SourceToDest allows for extra fields only in dest. + { + from: &struct{ A string }{}, + to: &struct{ A, B string }{}, + flags: SourceToDest, + shouldSucceed: true, + }, { + from: &struct{ A, B string }{}, + to: &struct{ A string }{}, + flags: SourceToDest, + shouldSucceed: false, + }, + + // Check that IgnoreMissingFields makes the above failure cases pass. + { + from: &struct{ A string }{}, + to: &struct{ A, B string }{}, + flags: DestFromSource | IgnoreMissingFields, + shouldSucceed: true, + }, { + from: &struct{ A, B string }{}, + to: &struct{ A string }{}, + flags: SourceToDest | IgnoreMissingFields, + shouldSucceed: true, + }, + + // Check that the field type name must match unless + // AllowDifferentFieldTypeNames is specified. + { + from: &struct{ A, B Foo }{}, + to: &struct{ A Bar }{}, + flags: DestFromSource, + shouldSucceed: false, + }, { + from: &struct{ A Foo }{}, + to: &struct{ A, B Bar }{}, + flags: SourceToDest, + shouldSucceed: false, + }, { + from: &struct{ A, B Foo }{}, + to: &struct{ A Bar }{}, + flags: DestFromSource | AllowDifferentFieldTypeNames, + shouldSucceed: true, + }, { + from: &struct{ A Foo }{}, + to: &struct{ A, B Bar }{}, + flags: SourceToDest | AllowDifferentFieldTypeNames, + shouldSucceed: true, + }, + } + f := fuzz.New().NilChance(.5).NumElements(0, 100) + c := NewConverter(DefaultNameFunc) + c.Debug = testLogger(t) + + for i, item := range table { + for j := 0; j < *fuzzIters; j++ { + f.Fuzz(item.from) + err := c.Convert(item.from, item.to, item.flags, nil) + if item.shouldSucceed && err != nil { + t.Errorf("(%v, %v): unexpected error: %v", i, j, err) + continue + } + if !item.shouldSucceed && err == nil { + t.Errorf("(%v, %v): unexpected non-error", i, j) + continue + } + } + } +} + +func TestConverter_FieldRename(t *testing.T) { + type WeirdMeta struct { + Name string + Type string + } + type NameMeta struct { + Name string + } + type TypeMeta struct { + Type string + } + type A struct { + WeirdMeta + } + type B struct { + TypeMeta + NameMeta + } + + c := NewConverter(DefaultNameFunc) + err := c.SetStructFieldCopy(WeirdMeta{}, "WeirdMeta", TypeMeta{}, "TypeMeta") + if err != nil { + t.Fatalf("unexpected error %v", err) + } + err = c.SetStructFieldCopy(WeirdMeta{}, "WeirdMeta", NameMeta{}, "NameMeta") + if err != nil { + t.Fatalf("unexpected error %v", err) + } + err = c.SetStructFieldCopy(TypeMeta{}, "TypeMeta", WeirdMeta{}, "WeirdMeta") + if err != nil { + t.Fatalf("unexpected error %v", err) + } + err = c.SetStructFieldCopy(NameMeta{}, "NameMeta", WeirdMeta{}, "WeirdMeta") + if err != nil { + t.Fatalf("unexpected error %v", err) + } + c.Debug = testLogger(t) + + aVal := &A{ + WeirdMeta: WeirdMeta{ + Name: "Foo", + Type: "Bar", + }, + } + + bVal := &B{ + TypeMeta: TypeMeta{"Bar"}, + NameMeta: NameMeta{"Foo"}, + } + + table := map[string]struct { + from, to, expect interface{} + flags FieldMatchingFlags + }{ + "to": { + aVal, + &B{}, + bVal, + AllowDifferentFieldTypeNames | SourceToDest | IgnoreMissingFields, + }, + "from": { + bVal, + &A{}, + aVal, + AllowDifferentFieldTypeNames | SourceToDest, + }, + "toDestFirst": { + aVal, + &B{}, + bVal, + AllowDifferentFieldTypeNames, + }, + "fromDestFirst": { + bVal, + &A{}, + aVal, + AllowDifferentFieldTypeNames | IgnoreMissingFields, + }, + } + + for name, item := range table { + err := c.Convert(item.from, item.to, item.flags, nil) + if err != nil { + t.Errorf("%v: unexpected error: %v", name, err) + continue + } + if e, a := item.expect, item.to; !reflect.DeepEqual(e, a) { + t.Errorf("%v: unexpected diff: %v", name, diff.ObjectDiff(e, a)) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go new file mode 100644 index 000000000..fdef856f2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/deep_copy_test.go @@ -0,0 +1,161 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "math/rand" + "reflect" + "testing" + + "github.com/google/gofuzz" +) + +func TestDeepCopy(t *testing.T) { + semantic := EqualitiesOrDie() + f := fuzz.New().NilChance(.5).NumElements(0, 100) + table := []interface{}{ + map[string]string{}, + int(5), + "hello world", + struct { + A, B, C struct { + D map[string]int + } + X []int + Y []byte + }{}, + } + for _, obj := range table { + obj2, err := NewCloner().DeepCopy(obj) + if err != nil { + t.Errorf("Error: couldn't copy %#v", obj) + continue + } + if e, a := obj, obj2; !semantic.DeepEqual(e, a) { + t.Errorf("expected %#v\ngot %#v", e, a) + } + + obj3 := reflect.New(reflect.TypeOf(obj)).Interface() + f.Fuzz(obj3) + obj4, err := NewCloner().DeepCopy(obj3) + if err != nil { + t.Errorf("Error: couldn't copy %#v", obj) + continue + } + if e, a := obj3, obj4; !semantic.DeepEqual(e, a) { + t.Errorf("expected %#v\ngot %#v", e, a) + } + f.Fuzz(obj3) + } +} + +func copyOrDie(t *testing.T, in interface{}) interface{} { + out, err := NewCloner().DeepCopy(in) + if err != nil { + t.Fatalf("DeepCopy failed: %#q: %v", in, err) + } + return out +} + +func TestDeepCopySliceSeparate(t *testing.T) { + x := []int{5} + y := copyOrDie(t, x).([]int) + x[0] = 3 + if y[0] == 3 { + t.Errorf("deep copy wasn't deep: %#q %#q", x, y) + } +} + +func TestDeepCopyArraySeparate(t *testing.T) { + x := [1]int{5} + y := copyOrDie(t, x).([1]int) + x[0] = 3 + if y[0] == 3 { + t.Errorf("deep copy wasn't deep: %#q %#q", x, y) + } +} + +func TestDeepCopyMapSeparate(t *testing.T) { + x := map[string]int{"foo": 5} + y := copyOrDie(t, x).(map[string]int) + x["foo"] = 3 + if y["foo"] == 3 { + t.Errorf("deep copy wasn't deep: %#q %#q", x, y) + } +} + +func TestDeepCopyPointerSeparate(t *testing.T) { + z := 5 + x := &z + y := copyOrDie(t, x).(*int) + *x = 3 + if *y == 3 { + t.Errorf("deep copy wasn't deep: %#q %#q", x, y) + } +} + +func TestDeepCopyStruct(t *testing.T) { + type Foo struct { + A int + } + type Bar struct { + Foo + F *Foo + } + a := &Bar{Foo{1}, &Foo{2}} + b := copyOrDie(t, a).(*Bar) + a.A = 3 + a.F.A = 4 + + if b.A != 1 || b.F.A != 2 { + t.Errorf("deep copy wasn't deep: %#v, %#v", a, b) + } +} + +var result interface{} + +func BenchmarkDeepCopy(b *testing.B) { + table := []interface{}{ + map[string]string{}, + int(5), + "hello world", + struct { + A, B, C struct { + D map[string]int + } + X []int + Y []byte + }{}, + } + + f := fuzz.New().RandSource(rand.NewSource(1)).NilChance(.5).NumElements(0, 100) + for i := range table { + out := table[i] + obj := reflect.New(reflect.TypeOf(out)).Interface() + f.Fuzz(obj) + table[i] = obj + } + + b.ResetTimer() + var r interface{} + for i := 0; i < b.N; i++ { + for j := range table { + r, _ = NewCloner().DeepCopy(table[j]) + } + } + result = r +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go b/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go new file mode 100644 index 000000000..f21abe1e5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go @@ -0,0 +1,36 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "k8s.io/apimachinery/third_party/forked/golang/reflect" +) + +// The code for this type must be located in third_party, since it forks from +// go std lib. But for convenience, we expose the type here, too. +type Equalities struct { + reflect.Equalities +} + +// For convenience, panics on errors +func EqualitiesOrDie(funcs ...interface{}) Equalities { + e := Equalities{reflect.Equalities{}} + if err := e.AddFuncs(funcs...); err != nil { + panic(err) + } + return e +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/doc.go b/vendor/k8s.io/apimachinery/pkg/conversion/doc.go new file mode 100644 index 000000000..7415d8164 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package conversion provides go object versioning. +// +// Specifically, conversion provides a way for you to define multiple versions +// of the same object. You may write functions which implement conversion logic, +// but for the fields which did not change, copying is automated. This makes it +// easy to modify the structures you use in memory without affecting the format +// you store on disk or respond to in your external API calls. +package conversion // import "k8s.io/apimachinery/pkg/conversion" diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/helper.go b/vendor/k8s.io/apimachinery/pkg/conversion/helper.go new file mode 100644 index 000000000..4ebc1ebc5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/helper.go @@ -0,0 +1,39 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" +) + +// EnforcePtr ensures that obj is a pointer of some sort. Returns a reflect.Value +// of the dereferenced pointer, ensuring that it is settable/addressable. +// Returns an error if this is not possible. +func EnforcePtr(obj interface{}) (reflect.Value, error) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + if v.Kind() == reflect.Invalid { + return reflect.Value{}, fmt.Errorf("expected pointer, but got invalid kind") + } + return reflect.Value{}, fmt.Errorf("expected pointer, but got %v type", v.Type()) + } + if v.IsNil() { + return reflect.Value{}, fmt.Errorf("expected pointer, but got nil") + } + return v.Elem(), nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/helper_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/helper_test.go new file mode 100644 index 000000000..8c61a30a8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/helper_test.go @@ -0,0 +1,38 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import "testing" + +func TestInvalidPtrValueKind(t *testing.T) { + var simple interface{} + switch obj := simple.(type) { + default: + _, err := EnforcePtr(obj) + if err == nil { + t.Errorf("Expected error on invalid kind") + } + } +} + +func TestEnforceNilPtr(t *testing.T) { + var nilPtr *struct{} + _, err := EnforcePtr(nilPtr) + if err == nil { + t.Errorf("Expected error on nil pointer") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD new file mode 100644 index 000000000..8eeabc5f1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = [ + "convert.go", + "doc.go", + ], + tags = ["automanaged"], +) + +go_test( + name = "go_default_xtest", + srcs = ["convert_test.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go new file mode 100644 index 000000000..30f717b2c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert.go @@ -0,0 +1,188 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package queryparams + +import ( + "fmt" + "net/url" + "reflect" + "strings" +) + +// Marshaler converts an object to a query parameter string representation +type Marshaler interface { + MarshalQueryParameter() (string, error) +} + +// Unmarshaler converts a string representation to an object +type Unmarshaler interface { + UnmarshalQueryParameter(string) error +} + +func jsonTag(field reflect.StructField) (string, bool) { + structTag := field.Tag.Get("json") + if len(structTag) == 0 { + return "", false + } + parts := strings.Split(structTag, ",") + tag := parts[0] + if tag == "-" { + tag = "" + } + omitempty := false + parts = parts[1:] + for _, part := range parts { + if part == "omitempty" { + omitempty = true + break + } + } + return tag, omitempty +} + +func formatValue(value interface{}) string { + return fmt.Sprintf("%v", value) +} + +func isPointerKind(kind reflect.Kind) bool { + return kind == reflect.Ptr +} + +func isStructKind(kind reflect.Kind) bool { + return kind == reflect.Struct +} + +func isValueKind(kind reflect.Kind) bool { + switch kind { + case reflect.String, reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, + reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, + reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, + reflect.Float64, reflect.Complex64, reflect.Complex128: + return true + default: + return false + } +} + +func zeroValue(value reflect.Value) bool { + return reflect.DeepEqual(reflect.Zero(value.Type()).Interface(), value.Interface()) +} + +func customMarshalValue(value reflect.Value) (reflect.Value, bool) { + // Return unless we implement a custom query marshaler + if !value.CanInterface() { + return reflect.Value{}, false + } + + marshaler, ok := value.Interface().(Marshaler) + if !ok { + return reflect.Value{}, false + } + + // Don't invoke functions on nil pointers + // If the type implements MarshalQueryParameter, AND the tag is not omitempty, AND the value is a nil pointer, "" seems like a reasonable response + if isPointerKind(value.Kind()) && zeroValue(value) { + return reflect.ValueOf(""), true + } + + // Get the custom marshalled value + v, err := marshaler.MarshalQueryParameter() + if err != nil { + return reflect.Value{}, false + } + return reflect.ValueOf(v), true +} + +func addParam(values url.Values, tag string, omitempty bool, value reflect.Value) { + if omitempty && zeroValue(value) { + return + } + val := "" + iValue := fmt.Sprintf("%v", value.Interface()) + + if iValue != "" { + val = iValue + } + values.Add(tag, val) +} + +func addListOfParams(values url.Values, tag string, omitempty bool, list reflect.Value) { + for i := 0; i < list.Len(); i++ { + addParam(values, tag, omitempty, list.Index(i)) + } +} + +// Convert takes an object and converts it to a url.Values object using JSON tags as +// parameter names. Only top-level simple values, arrays, and slices are serialized. +// Embedded structs, maps, etc. will not be serialized. +func Convert(obj interface{}) (url.Values, error) { + result := url.Values{} + if obj == nil { + return result, nil + } + var sv reflect.Value + switch reflect.TypeOf(obj).Kind() { + case reflect.Ptr, reflect.Interface: + sv = reflect.ValueOf(obj).Elem() + default: + return nil, fmt.Errorf("expecting a pointer or interface") + } + st := sv.Type() + if !isStructKind(st.Kind()) { + return nil, fmt.Errorf("expecting a pointer to a struct") + } + + // Check all object fields + convertStruct(result, st, sv) + + return result, nil +} + +func convertStruct(result url.Values, st reflect.Type, sv reflect.Value) { + for i := 0; i < st.NumField(); i++ { + field := sv.Field(i) + tag, omitempty := jsonTag(st.Field(i)) + if len(tag) == 0 { + continue + } + ft := field.Type() + + kind := ft.Kind() + if isPointerKind(kind) { + ft = ft.Elem() + kind = ft.Kind() + if !field.IsNil() { + field = reflect.Indirect(field) + } + } + + switch { + case isValueKind(kind): + addParam(result, tag, omitempty, field) + case kind == reflect.Array || kind == reflect.Slice: + if isValueKind(ft.Elem().Kind()) { + addListOfParams(result, tag, omitempty, field) + } + case isStructKind(kind) && !(zeroValue(field) && omitempty): + if marshalValue, ok := customMarshalValue(field); ok { + addParam(result, tag, omitempty, marshalValue) + } else { + convertStruct(result, ft, field) + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert_test.go new file mode 100644 index 000000000..21dc0000e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/convert_test.go @@ -0,0 +1,212 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package queryparams_test + +import ( + "net/url" + "reflect" + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion/queryparams" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type namedString string +type namedBool bool + +type bar struct { + Float1 float32 `json:"float1"` + Float2 float64 `json:"float2"` + Int1 int64 `json:"int1,omitempty"` + Int2 int32 `json:"int2,omitempty"` + Int3 int16 `json:"int3,omitempty"` + Str1 string `json:"str1,omitempty"` + Ignored int + Ignored2 string +} + +func (obj *bar) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +type foo struct { + Str string `json:"str"` + Integer int `json:"integer,omitempty"` + Slice []string `json:"slice,omitempty"` + Boolean bool `json:"boolean,omitempty"` + NamedStr namedString `json:"namedStr,omitempty"` + NamedBool namedBool `json:"namedBool,omitempty"` + Foobar bar `json:"foobar,omitempty"` + Testmap map[string]string `json:"testmap,omitempty"` +} + +func (obj *foo) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +type baz struct { + Ptr *int `json:"ptr"` + Bptr *bool `json:"bptr,omitempty"` +} + +func (obj *baz) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +// childStructs tests some of the types we serialize to query params for log API calls +// notably, the nested time struct +type childStructs struct { + Container string `json:"container,omitempty"` + Follow bool `json:"follow,omitempty"` + Previous bool `json:"previous,omitempty"` + SinceSeconds *int64 `json:"sinceSeconds,omitempty"` + SinceTime *metav1.Time `json:"sinceTime,omitempty"` + EmptyTime *metav1.Time `json:"emptyTime"` +} + +func (obj *childStructs) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +func validateResult(t *testing.T, input interface{}, actual, expected url.Values) { + local := url.Values{} + for k, v := range expected { + local[k] = v + } + for k, v := range actual { + if ev, ok := local[k]; !ok || !reflect.DeepEqual(ev, v) { + if !ok { + t.Errorf("%#v: actual value key %s not found in expected map", input, k) + } else { + t.Errorf("%#v: values don't match: actual: %#v, expected: %#v", input, v, ev) + } + } + delete(local, k) + } + if len(local) > 0 { + t.Errorf("%#v: expected map has keys that were not found in actual map: %#v", input, local) + } +} + +func TestConvert(t *testing.T) { + sinceSeconds := int64(123) + sinceTime := metav1.Date(2000, 1, 1, 12, 34, 56, 0, time.UTC) + + tests := []struct { + input interface{} + expected url.Values + }{ + { + input: &foo{ + Str: "hello", + }, + expected: url.Values{"str": {"hello"}}, + }, + { + input: &foo{ + Str: "test string", + Slice: []string{"one", "two", "three"}, + Integer: 234, + Boolean: true, + }, + expected: url.Values{"str": {"test string"}, "slice": {"one", "two", "three"}, "integer": {"234"}, "boolean": {"true"}}, + }, + { + input: &foo{ + Str: "named types", + NamedStr: "value1", + NamedBool: true, + }, + expected: url.Values{"str": {"named types"}, "namedStr": {"value1"}, "namedBool": {"true"}}, + }, + { + input: &foo{ + Str: "don't ignore embedded struct", + Foobar: bar{ + Float1: 5.0, + }, + }, + expected: url.Values{"str": {"don't ignore embedded struct"}, "float1": {"5"}, "float2": {"0"}}, + }, + { + // Ignore untagged fields + input: &bar{ + Float1: 23.5, + Float2: 100.7, + Int1: 1, + Int2: 2, + Int3: 3, + Ignored: 1, + Ignored2: "ignored", + }, + expected: url.Values{"float1": {"23.5"}, "float2": {"100.7"}, "int1": {"1"}, "int2": {"2"}, "int3": {"3"}}, + }, + { + // include fields that are not tagged omitempty + input: &foo{ + NamedStr: "named str", + }, + expected: url.Values{"str": {""}, "namedStr": {"named str"}}, + }, + { + input: &baz{ + Ptr: intp(5), + Bptr: boolp(true), + }, + expected: url.Values{"ptr": {"5"}, "bptr": {"true"}}, + }, + { + input: &baz{ + Bptr: boolp(true), + }, + expected: url.Values{"ptr": {""}, "bptr": {"true"}}, + }, + { + input: &baz{ + Ptr: intp(5), + }, + expected: url.Values{"ptr": {"5"}}, + }, + { + input: &childStructs{ + Container: "mycontainer", + Follow: true, + Previous: true, + SinceSeconds: &sinceSeconds, + SinceTime: &sinceTime, // test a custom marshaller + EmptyTime: nil, // test a nil custom marshaller without omitempty + }, + expected: url.Values{"container": {"mycontainer"}, "follow": {"true"}, "previous": {"true"}, "sinceSeconds": {"123"}, "sinceTime": {"2000-01-01T12:34:56Z"}, "emptyTime": {""}}, + }, + { + input: &childStructs{ + Container: "mycontainer", + Follow: true, + Previous: true, + SinceSeconds: &sinceSeconds, + SinceTime: nil, // test a nil custom marshaller with omitempty + }, + expected: url.Values{"container": {"mycontainer"}, "follow": {"true"}, "previous": {"true"}, "sinceSeconds": {"123"}, "emptyTime": {""}}, + }, + } + + for _, test := range tests { + result, err := queryparams.Convert(test.input) + if err != nil { + t.Errorf("Unexpected error while converting %#v: %v", test.input, err) + } + validateResult(t, test.input, result, test.expected) + } +} + +func intp(n int) *int { return &n } + +func boolp(b bool) *bool { return &b } diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go new file mode 100644 index 000000000..7b763de6f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/queryparams/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package queryparams provides conversion from versioned +// runtime objects to URL query values +package queryparams // import "k8s.io/apimachinery/pkg/conversion/queryparams" diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD new file mode 100644 index 000000000..0804afc33 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/BUILD @@ -0,0 +1,38 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["converter_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "converter.go", + "doc.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go new file mode 100644 index 000000000..cf84a6198 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter.go @@ -0,0 +1,690 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unstructured + +import ( + "bytes" + encodingjson "encoding/json" + "fmt" + "math" + "os" + "reflect" + "strconv" + "strings" + "sync" + "sync/atomic" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/apimachinery/pkg/util/json" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + + "github.com/golang/glog" +) + +// Converter is an interface for converting between interface{} +// and map[string]interface representation. +type Converter interface { + ToUnstructured(obj interface{}, u *map[string]interface{}) error + FromUnstructured(u map[string]interface{}, obj interface{}) error +} + +type structField struct { + structType reflect.Type + field int +} + +type fieldInfo struct { + name string + nameValue reflect.Value + omitempty bool +} + +type fieldsCacheMap map[structField]*fieldInfo + +type fieldsCache struct { + sync.Mutex + value atomic.Value +} + +func newFieldsCache() *fieldsCache { + cache := &fieldsCache{} + cache.value.Store(make(fieldsCacheMap)) + return cache +} + +var ( + marshalerType = reflect.TypeOf(new(encodingjson.Marshaler)).Elem() + unmarshalerType = reflect.TypeOf(new(encodingjson.Unmarshaler)).Elem() + mapStringInterfaceType = reflect.TypeOf(map[string]interface{}{}) + stringType = reflect.TypeOf(string("")) + int64Type = reflect.TypeOf(int64(0)) + uint64Type = reflect.TypeOf(uint64(0)) + float64Type = reflect.TypeOf(float64(0)) + boolType = reflect.TypeOf(bool(false)) + fieldCache = newFieldsCache() + DefaultConverter = NewConverter(parseBool(os.Getenv("KUBE_PATCH_CONVERSION_DETECTOR"))) +) + +func parseBool(key string) bool { + if len(key) == 0 { + return false + } + value, err := strconv.ParseBool(key) + if err != nil { + utilruntime.HandleError(fmt.Errorf("Couldn't parse '%s' as bool for unstructured mismatch detection", key)) + } + return value +} + +// ConverterImpl knows how to convert between interface{} and +// Unstructured in both ways. +type converterImpl struct { + // If true, we will be additionally running conversion via json + // to ensure that the result is true. + // This is supposed to be set only in tests. + mismatchDetection bool +} + +func NewConverter(mismatchDetection bool) Converter { + return &converterImpl{ + mismatchDetection: mismatchDetection, + } +} + +func (c *converterImpl) FromUnstructured(u map[string]interface{}, obj interface{}) error { + t := reflect.TypeOf(obj) + value := reflect.ValueOf(obj) + if t.Kind() != reflect.Ptr || value.IsNil() { + return fmt.Errorf("FromUnstructured requires a non-nil pointer to an object, got %v", t) + } + err := fromUnstructured(reflect.ValueOf(u), value.Elem()) + if c.mismatchDetection { + newObj := reflect.New(t.Elem()).Interface() + newErr := fromUnstructuredViaJSON(u, newObj) + if (err != nil) != (newErr != nil) { + glog.Fatalf("FromUnstructured unexpected error for %v: error: %v", u, err) + } + if err == nil && !apiequality.Semantic.DeepEqual(obj, newObj) { + glog.Fatalf("FromUnstructured mismatch for %#v, diff: %v", obj, diff.ObjectReflectDiff(obj, newObj)) + } + } + return err +} + +func fromUnstructuredViaJSON(u map[string]interface{}, obj interface{}) error { + data, err := json.Marshal(u) + if err != nil { + return err + } + return json.Unmarshal(data, obj) +} + +func fromUnstructured(sv, dv reflect.Value) error { + sv = unwrapInterface(sv) + if !sv.IsValid() { + dv.Set(reflect.Zero(dv.Type())) + return nil + } + st, dt := sv.Type(), dv.Type() + + switch dt.Kind() { + case reflect.Map, reflect.Slice, reflect.Ptr, reflect.Struct, reflect.Interface: + // Those require non-trivial conversion. + default: + // This should handle all simple types. + if st.AssignableTo(dt) { + dv.Set(sv) + return nil + } + // We cannot simply use "ConvertibleTo", as JSON doesn't support conversions + // between those four groups: bools, integers, floats and string. We need to + // do the same. + if st.ConvertibleTo(dt) { + switch st.Kind() { + case reflect.String: + switch dt.Kind() { + case reflect.String: + dv.Set(sv.Convert(dt)) + return nil + } + case reflect.Bool: + switch dt.Kind() { + case reflect.Bool: + dv.Set(sv.Convert(dt)) + return nil + } + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + switch dt.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + dv.Set(sv.Convert(dt)) + return nil + } + case reflect.Float32, reflect.Float64: + switch dt.Kind() { + case reflect.Float32, reflect.Float64: + dv.Set(sv.Convert(dt)) + return nil + } + if sv.Float() == math.Trunc(sv.Float()) { + dv.Set(sv.Convert(dt)) + return nil + } + } + return fmt.Errorf("cannot convert %s to %s", st.String(), dt.String()) + } + } + + // Check if the object has a custom JSON marshaller/unmarshaller. + if reflect.PtrTo(dt).Implements(unmarshalerType) { + data, err := json.Marshal(sv.Interface()) + if err != nil { + return fmt.Errorf("error encoding %s to json: %v", st.String(), err) + } + unmarshaler := dv.Addr().Interface().(encodingjson.Unmarshaler) + return unmarshaler.UnmarshalJSON(data) + } + + switch dt.Kind() { + case reflect.Map: + return mapFromUnstructured(sv, dv) + case reflect.Slice: + return sliceFromUnstructured(sv, dv) + case reflect.Ptr: + return pointerFromUnstructured(sv, dv) + case reflect.Struct: + return structFromUnstructured(sv, dv) + case reflect.Interface: + return interfaceFromUnstructured(sv, dv) + default: + return fmt.Errorf("unrecognized type: %v", dt.Kind()) + } +} + +func fieldInfoFromField(structType reflect.Type, field int) *fieldInfo { + fieldCacheMap := fieldCache.value.Load().(fieldsCacheMap) + if info, ok := fieldCacheMap[structField{structType, field}]; ok { + return info + } + + // Cache miss - we need to compute the field name. + info := &fieldInfo{} + typeField := structType.Field(field) + jsonTag := typeField.Tag.Get("json") + if len(jsonTag) == 0 { + // Make the first character lowercase. + if typeField.Name == "" { + info.name = typeField.Name + } else { + info.name = strings.ToLower(typeField.Name[:1]) + typeField.Name[1:] + } + } else { + items := strings.Split(jsonTag, ",") + info.name = items[0] + for i := range items { + if items[i] == "omitempty" { + info.omitempty = true + } + } + } + info.nameValue = reflect.ValueOf(info.name) + + fieldCache.Lock() + defer fieldCache.Unlock() + fieldCacheMap = fieldCache.value.Load().(fieldsCacheMap) + newFieldCacheMap := make(fieldsCacheMap) + for k, v := range fieldCacheMap { + newFieldCacheMap[k] = v + } + newFieldCacheMap[structField{structType, field}] = info + fieldCache.value.Store(newFieldCacheMap) + return info +} + +func unwrapInterface(v reflect.Value) reflect.Value { + for v.Kind() == reflect.Interface { + v = v.Elem() + } + return v +} + +func mapFromUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + if st.Kind() != reflect.Map { + return fmt.Errorf("cannot restore map from %v", st.Kind()) + } + + if !st.Key().AssignableTo(dt.Key()) && !st.Key().ConvertibleTo(dt.Key()) { + return fmt.Errorf("cannot copy map with non-assignable keys: %v %v", st.Key(), dt.Key()) + } + + if sv.IsNil() { + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.MakeMap(dt)) + for _, key := range sv.MapKeys() { + value := reflect.New(dt.Elem()).Elem() + if val := unwrapInterface(sv.MapIndex(key)); val.IsValid() { + if err := fromUnstructured(val, value); err != nil { + return err + } + } else { + value.Set(reflect.Zero(dt.Elem())) + } + if st.Key().AssignableTo(dt.Key()) { + dv.SetMapIndex(key, value) + } else { + dv.SetMapIndex(key.Convert(dt.Key()), value) + } + } + return nil +} + +func sliceFromUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + if st.Kind() == reflect.String && dt.Elem().Kind() == reflect.Uint8 { + // We store original []byte representation as string. + // This conversion is allowed, but we need to be careful about + // marshaling data appropriately. + if len(sv.Interface().(string)) > 0 { + marshalled, err := json.Marshal(sv.Interface()) + if err != nil { + return fmt.Errorf("error encoding %s to json: %v", st, err) + } + // TODO: Is this Unmarshal needed? + var data []byte + err = json.Unmarshal(marshalled, &data) + if err != nil { + return fmt.Errorf("error decoding from json: %v", err) + } + dv.SetBytes(data) + } else { + dv.Set(reflect.Zero(dt)) + } + return nil + } + if st.Kind() != reflect.Slice { + return fmt.Errorf("cannot restore slice from %v", st.Kind()) + } + + if sv.IsNil() { + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.MakeSlice(dt, sv.Len(), sv.Cap())) + for i := 0; i < sv.Len(); i++ { + if err := fromUnstructured(sv.Index(i), dv.Index(i)); err != nil { + return err + } + } + return nil +} + +func pointerFromUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + + if st.Kind() == reflect.Ptr && sv.IsNil() { + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.New(dt.Elem())) + switch st.Kind() { + case reflect.Ptr, reflect.Interface: + return fromUnstructured(sv.Elem(), dv.Elem()) + default: + return fromUnstructured(sv, dv.Elem()) + } +} + +func structFromUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + if st.Kind() != reflect.Map { + return fmt.Errorf("cannot restore struct from: %v", st.Kind()) + } + + for i := 0; i < dt.NumField(); i++ { + fieldInfo := fieldInfoFromField(dt, i) + fv := dv.Field(i) + + if len(fieldInfo.name) == 0 { + // This field is inlined. + if err := fromUnstructured(sv, fv); err != nil { + return err + } + } else { + value := unwrapInterface(sv.MapIndex(fieldInfo.nameValue)) + if value.IsValid() { + if err := fromUnstructured(value, fv); err != nil { + return err + } + } else { + fv.Set(reflect.Zero(fv.Type())) + } + } + } + return nil +} + +func interfaceFromUnstructured(sv, dv reflect.Value) error { + // TODO: Is this conversion safe? + dv.Set(sv) + return nil +} + +func (c *converterImpl) ToUnstructured(obj interface{}, u *map[string]interface{}) error { + t := reflect.TypeOf(obj) + value := reflect.ValueOf(obj) + if t.Kind() != reflect.Ptr || value.IsNil() { + return fmt.Errorf("ToUnstructured requires a non-nil pointer to an object, got %v", t) + } + err := toUnstructured(value.Elem(), reflect.ValueOf(u).Elem()) + if c.mismatchDetection { + newUnstr := &map[string]interface{}{} + newErr := toUnstructuredViaJSON(obj, newUnstr) + if (err != nil) != (newErr != nil) { + glog.Fatalf("ToUnstructured unexpected error for %v: error: %v", obj, err) + } + if err == nil && !apiequality.Semantic.DeepEqual(u, newUnstr) { + glog.Fatalf("ToUnstructured mismatch for %#v, diff: %v", u, diff.ObjectReflectDiff(u, newUnstr)) + } + } + return err +} + +func toUnstructuredViaJSON(obj interface{}, u *map[string]interface{}) error { + data, err := json.Marshal(obj) + if err != nil { + return err + } + return json.Unmarshal(data, u) +} + +func toUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + + // Check if the object has a custom JSON marshaller/unmarshaller. + if st.Implements(marshalerType) { + if sv.Kind() == reflect.Ptr && sv.IsNil() { + // We're done - we don't need to store anything. + return nil + } + + marshaler := sv.Interface().(encodingjson.Marshaler) + data, err := marshaler.MarshalJSON() + if err != nil { + return err + } + if bytes.Equal(data, []byte("null")) { + // We're done - we don't need to store anything. + } else { + switch { + case len(data) > 0 && data[0] == '"': + var result string + err := json.Unmarshal(data, &result) + if err != nil { + return fmt.Errorf("error decoding from json: %v", err) + } + dv.Set(reflect.ValueOf(result)) + case len(data) > 0 && data[0] == '{': + result := make(map[string]interface{}) + err := json.Unmarshal(data, &result) + if err != nil { + return fmt.Errorf("error decoding from json: %v", err) + } + dv.Set(reflect.ValueOf(result)) + default: + var result int64 + err := json.Unmarshal(data, &result) + if err != nil { + return fmt.Errorf("error decoding from json: %v", err) + } + dv.Set(reflect.ValueOf(result)) + } + } + return nil + } + + switch st.Kind() { + case reflect.String: + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + dv.Set(reflect.New(stringType)) + } + dv.Set(reflect.ValueOf(sv.String())) + return nil + case reflect.Bool: + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + dv.Set(reflect.New(boolType)) + } + dv.Set(reflect.ValueOf(sv.Bool())) + return nil + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + dv.Set(reflect.New(int64Type)) + } + dv.Set(reflect.ValueOf(sv.Int())) + return nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + dv.Set(reflect.New(uint64Type)) + } + dv.Set(reflect.ValueOf(sv.Uint())) + return nil + case reflect.Float32, reflect.Float64: + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + dv.Set(reflect.New(float64Type)) + } + dv.Set(reflect.ValueOf(sv.Float())) + return nil + case reflect.Map: + return mapToUnstructured(sv, dv) + case reflect.Slice: + return sliceToUnstructured(sv, dv) + case reflect.Ptr: + return pointerToUnstructured(sv, dv) + case reflect.Struct: + return structToUnstructured(sv, dv) + case reflect.Interface: + return interfaceToUnstructured(sv, dv) + default: + return fmt.Errorf("unrecognized type: %v", st.Kind()) + } +} + +func mapToUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + if sv.IsNil() { + dv.Set(reflect.Zero(dt)) + return nil + } + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + if st.Key().Kind() == reflect.String { + switch st.Elem().Kind() { + // TODO It should be possible to reuse the slice for primitive types. + // However, it is panicing in the following form. + // case reflect.String, reflect.Bool, + // reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + // reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + // sv.Set(sv) + // return nil + default: + // We need to do a proper conversion. + } + } + dv.Set(reflect.MakeMap(mapStringInterfaceType)) + dv = dv.Elem() + dt = dv.Type() + } + if dt.Kind() != reflect.Map { + return fmt.Errorf("cannot convert struct to: %v", dt.Kind()) + } + + if !st.Key().AssignableTo(dt.Key()) && !st.Key().ConvertibleTo(dt.Key()) { + return fmt.Errorf("cannot copy map with non-assignable keys: %v %v", st.Key(), dt.Key()) + } + + for _, key := range sv.MapKeys() { + value := reflect.New(dt.Elem()).Elem() + if err := toUnstructured(sv.MapIndex(key), value); err != nil { + return err + } + if st.Key().AssignableTo(dt.Key()) { + dv.SetMapIndex(key, value) + } else { + dv.SetMapIndex(key.Convert(dt.Key()), value) + } + } + return nil +} + +func sliceToUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + if sv.IsNil() { + dv.Set(reflect.Zero(dt)) + return nil + } + if st.Elem().Kind() == reflect.Uint8 { + dv.Set(reflect.New(stringType)) + data, err := json.Marshal(sv.Bytes()) + if err != nil { + return err + } + var result string + if err = json.Unmarshal(data, &result); err != nil { + return err + } + dv.Set(reflect.ValueOf(result)) + return nil + } + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + switch st.Elem().Kind() { + // TODO It should be possible to reuse the slice for primitive types. + // However, it is panicing in the following form. + // case reflect.String, reflect.Bool, + // reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + // reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + // sv.Set(sv) + // return nil + default: + // We need to do a proper conversion. + dv.Set(reflect.MakeSlice(reflect.SliceOf(dt), sv.Len(), sv.Cap())) + dv = dv.Elem() + dt = dv.Type() + } + } + if dt.Kind() != reflect.Slice { + return fmt.Errorf("cannot convert slice to: %v", dt.Kind()) + } + for i := 0; i < sv.Len(); i++ { + if err := toUnstructured(sv.Index(i), dv.Index(i)); err != nil { + return err + } + } + return nil +} + +func pointerToUnstructured(sv, dv reflect.Value) error { + if sv.IsNil() { + // We're done - we don't need to store anything. + return nil + } + return toUnstructured(sv.Elem(), dv) +} + +func isZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Array, reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Map, reflect.Slice: + // TODO: It seems that 0-len maps are ignored in it. + return v.IsNil() || v.Len() == 0 + case reflect.Ptr, reflect.Interface: + return v.IsNil() + } + return false +} + +func structToUnstructured(sv, dv reflect.Value) error { + st, dt := sv.Type(), dv.Type() + if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { + dv.Set(reflect.MakeMap(mapStringInterfaceType)) + dv = dv.Elem() + dt = dv.Type() + } + if dt.Kind() != reflect.Map { + return fmt.Errorf("cannot convert struct to: %v", dt.Kind()) + } + realMap := dv.Interface().(map[string]interface{}) + + for i := 0; i < st.NumField(); i++ { + fieldInfo := fieldInfoFromField(st, i) + fv := sv.Field(i) + + if fieldInfo.name == "-" { + // This field should be skipped. + continue + } + if fieldInfo.omitempty && isZero(fv) { + // omitempty fields should be ignored. + continue + } + if len(fieldInfo.name) == 0 { + // This field is inlined. + if err := toUnstructured(fv, dv); err != nil { + return err + } + continue + } + switch fv.Type().Kind() { + case reflect.String: + realMap[fieldInfo.name] = fv.String() + case reflect.Bool: + realMap[fieldInfo.name] = fv.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + realMap[fieldInfo.name] = fv.Int() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + realMap[fieldInfo.name] = fv.Uint() + case reflect.Float32, reflect.Float64: + realMap[fieldInfo.name] = fv.Float() + default: + subv := reflect.New(dt.Elem()).Elem() + if err := toUnstructured(fv, subv); err != nil { + return err + } + dv.SetMapIndex(fieldInfo.nameValue, subv) + } + } + return nil +} + +func interfaceToUnstructured(sv, dv reflect.Value) error { + if !sv.IsValid() || sv.IsNil() { + dv.Set(reflect.Zero(dv.Type())) + return nil + } + return toUnstructured(sv.Elem(), dv) +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go new file mode 100644 index 000000000..cbab0d1da --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/converter_test.go @@ -0,0 +1,462 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unstructured + +import ( + "fmt" + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/apimachinery/pkg/util/json" +) + +// Definte a number of test types. +type A struct { + A int `json:"aa,omitempty"` + B string `json:"ab,omitempty"` + C bool `json:"ac,omitempty"` +} + +type B struct { + A A `json:"ba"` + B string `json:"bb"` + C map[string]string `json:"bc"` + D []string `json:"bd"` +} + +type C struct { + A []A `json:"ca"` + B `json:",inline"` + C string `json:"cc"` + D *int64 `json:"cd"` + E map[string]int `json:"ce"` + F []bool `json:"cf"` + G []int `json:"cg"` + H float32 `json:"ch"` + I []interface{} `json:"ci"` +} + +type D struct { + A []interface{} `json:"da"` +} + +type E struct { + A interface{} `json:"ea"` +} + +type F struct { + A string `json:"fa"` + B map[string]string `json:"fb"` + C []A `json:"fc"` + D int `json:"fd"` + E float32 `json:"fe"` + F []string `json:"ff"` + G []int `json:"fg"` + H []bool `json:"fh"` + I []float32 `json:"fi"` +} + +// Implement runtime.Object to make types usable for tests. + +func (c *C) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +func (d *D) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +func (e *E) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +func (f *F) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +func doRoundTrip(t *testing.T, item runtime.Object) { + data, err := json.Marshal(item) + if err != nil { + t.Errorf("Error when marshaling object: %v", err) + return + } + + unstr := make(map[string]interface{}) + err = json.Unmarshal(data, &unstr) + if err != nil { + t.Errorf("Error when unmarshaling to unstructured: %v", err) + return + } + + data, err = json.Marshal(unstr) + if err != nil { + t.Errorf("Error when marshaling unstructured: %v", err) + return + } + unmarshalledObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() + err = json.Unmarshal(data, &unmarshalledObj) + if err != nil { + t.Errorf("Error when unmarshaling to object: %v", err) + return + } + if !reflect.DeepEqual(item, unmarshalledObj) { + t.Errorf("Object changed during JSON operations, diff: %v", diff.ObjectReflectDiff(item, unmarshalledObj)) + return + } + + newUnstr := make(map[string]interface{}) + err = DefaultConverter.ToUnstructured(item, &newUnstr) + if err != nil { + t.Errorf("ToUnstructured failed: %v", err) + return + } + + newObj := reflect.New(reflect.TypeOf(item).Elem()).Interface().(runtime.Object) + err = DefaultConverter.FromUnstructured(newUnstr, newObj) + if err != nil { + t.Errorf("FromUnstructured failed: %v", err) + return + } + + if !reflect.DeepEqual(item, newObj) { + t.Errorf("Object changed, diff: %v", diff.ObjectReflectDiff(item, newObj)) + } +} + +func TestRoundTrip(t *testing.T) { + intVal := int64(42) + testCases := []struct { + obj runtime.Object + }{ + { + // This (among others) tests nil map, slice and pointer. + obj: &C{ + C: "ccc", + }, + }, + { + // This (among others) tests empty map and slice. + obj: &C{ + A: []A{}, + C: "ccc", + E: map[string]int{}, + I: []interface{}{}, + }, + }, + { + obj: &C{ + A: []A{ + { + A: 1, + B: "11", + C: true, + }, + { + A: 2, + B: "22", + C: false, + }, + }, + B: B{ + A: A{ + A: 3, + B: "33", + }, + B: "bbb", + C: map[string]string{ + "k1": "v1", + "k2": "v2", + }, + D: []string{"s1", "s2"}, + }, + C: "ccc", + D: &intVal, + E: map[string]int{ + "k1": 1, + "k2": 2, + }, + F: []bool{true, false, false}, + G: []int{1, 2, 5}, + H: 3.3, + I: []interface{}{nil, nil, nil}, + }, + }, + { + // Test slice of interface{} with empty slices. + obj: &D{ + A: []interface{}{[]interface{}{}, []interface{}{}}, + }, + }, + { + // Test slice of interface{} with different values. + obj: &D{ + A: []interface{}{3.0, "3.0", nil}, + }, + }, + } + + for i := range testCases { + doRoundTrip(t, testCases[i].obj) + if t.Failed() { + break + } + } +} + +// Verifies that: +// 1) serialized json -> object +// 2) serialized json -> map[string]interface{} -> object +// produces the same object. +func doUnrecognized(t *testing.T, jsonData string, item runtime.Object, expectedErr error) { + unmarshalledObj := reflect.New(reflect.TypeOf(item).Elem()).Interface() + err := json.Unmarshal([]byte(jsonData), &unmarshalledObj) + if (err != nil) != (expectedErr != nil) { + t.Errorf("Unexpected error when unmarshaling to object: %v, expected: %v", err, expectedErr) + return + } + + unstr := make(map[string]interface{}) + err = json.Unmarshal([]byte(jsonData), &unstr) + if err != nil { + t.Errorf("Error when unmarshaling to unstructured: %v", err) + return + } + newObj := reflect.New(reflect.TypeOf(item).Elem()).Interface().(runtime.Object) + err = DefaultConverter.FromUnstructured(unstr, newObj) + if (err != nil) != (expectedErr != nil) { + t.Errorf("Unexpected error in FromUnstructured: %v, expected: %v", err, expectedErr) + } + + if expectedErr == nil && !reflect.DeepEqual(unmarshalledObj, newObj) { + t.Errorf("Object changed, diff: %v", diff.ObjectReflectDiff(unmarshalledObj, newObj)) + } +} + +func TestUnrecognized(t *testing.T) { + testCases := []struct { + data string + obj runtime.Object + err error + }{ + { + data: "{\"da\":[3.0,\"3.0\",null]}", + obj: &D{}, + }, + { + data: "{\"ea\":[3.0,\"3.0\",null]}", + obj: &E{}, + }, + { + data: "{\"ea\":[null,null,null]}", + obj: &E{}, + }, + { + data: "{\"ea\":[[],[null]]}", + obj: &E{}, + }, + { + data: "{\"ea\":{\"a\":[],\"b\":null}}", + obj: &E{}, + }, + { + data: "{\"fa\":\"fa\",\"fb\":{\"a\":\"a\"}}", + obj: &F{}, + }, + { + data: "{\"fa\":\"fa\",\"fb\":{\"a\":null}}", + obj: &F{}, + }, + { + data: "{\"fc\":[null]}", + obj: &F{}, + }, + { + data: "{\"fc\":[{\"aa\":123,\"ab\":\"bbb\"}]}", + obj: &F{}, + }, + { + // Only unknown fields + data: "{\"fx\":[{\"aa\":123,\"ab\":\"bbb\"}],\"fz\":123}", + obj: &F{}, + }, + { + data: "{\"fc\":[{\"aa\":\"aaa\",\"ab\":\"bbb\"}]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type int"), + }, + { + data: "{\"fd\":123,\"fe\":3.5}", + obj: &F{}, + }, + { + data: "{\"ff\":[\"abc\"],\"fg\":[123],\"fh\":[true,false]}", + obj: &F{}, + }, + { + // Invalid string data + data: "{\"fa\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), + }, + { + // Invalid string data + data: "{\"fa\":13.5}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), + }, + { + // Invalid string data + data: "{\"fa\":true}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal bool into Go value of type string"), + }, + { + // Invalid []string data + data: "{\"ff\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []string"), + }, + { + // Invalid []string data + data: "{\"ff\":3.5}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []string"), + }, + { + // Invalid []string data + data: "{\"ff\":[123,345]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type string"), + }, + { + // Invalid []int data + data: "{\"fg\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []int"), + }, + { + // Invalid []int data + data: "{\"fg\":\"abc\"}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type []int"), + }, + { + // Invalid []int data + data: "{\"fg\":[\"abc\"]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type int"), + }, + { + // Invalid []int data + data: "{\"fg\":[3.5]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number 3.5 into Go value of type int"), + }, + { + // Invalid []int data + data: "{\"fg\":[true,false]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number 3.5 into Go value of type int"), + }, + { + // Invalid []bool data + data: "{\"fh\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":\"abc\"}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type []bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":[\"abc\"]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":[3.5]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type bool"), + }, + { + // Invalid []bool data + data: "{\"fh\":[123]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type bool"), + }, + { + // Invalid []float data + data: "{\"fi\":123}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal number into Go value of type []float32"), + }, + { + // Invalid []float data + data: "{\"fi\":\"abc\"}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type []float32"), + }, + { + // Invalid []float data + data: "{\"fi\":[\"abc\"]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal string into Go value of type float32"), + }, + { + // Invalid []float data + data: "{\"fi\":[true]}", + obj: &F{}, + err: fmt.Errorf("json: cannot unmarshal bool into Go value of type float32"), + }, + } + + for i := range testCases { + doUnrecognized(t, testCases[i].data, testCases[i].obj, testCases[i].err) + if t.Failed() { + break + } + } +} + +func TestFloatIntConversion(t *testing.T) { + unstr := map[string]interface{}{"fd": float64(3)} + + var obj F + if err := DefaultConverter.FromUnstructured(unstr, &obj); err != nil { + t.Errorf("Unexpected error in FromUnstructured: %v", err) + } + + data, err := json.Marshal(unstr) + if err != nil { + t.Fatalf("Error when marshaling unstructured: %v", err) + } + var unmarshalled F + if err := json.Unmarshal(data, &unmarshalled); err != nil { + t.Fatalf("Error when unmarshaling to object: %v", err) + } + + if !reflect.DeepEqual(obj, unmarshalled) { + t.Errorf("Incorrect conversion, diff: %v", diff.ObjectReflectDiff(obj, unmarshalled)) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/doc.go b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/doc.go new file mode 100644 index 000000000..cd40e74be --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/conversion/unstructured/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package unstructured provides conversion from runtime objects +// to map[string]interface{} representation. +package unstructured // import "k8s.io/apimachinery/pkg/conversion/unstructured" diff --git a/vendor/k8s.io/apimachinery/pkg/fields/BUILD b/vendor/k8s.io/apimachinery/pkg/fields/BUILD new file mode 100644 index 000000000..7c44f5fd8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "fields_test.go", + "selector_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fields.go", + "requirements.go", + "selector.go", + ], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/selection:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/fields/doc.go b/vendor/k8s.io/apimachinery/pkg/fields/doc.go new file mode 100644 index 000000000..c39b8039a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package fields implements a simple field system, parsing and matching +// selectors with sets of fields. +package fields // import "k8s.io/apimachinery/pkg/fields" diff --git a/vendor/k8s.io/apimachinery/pkg/fields/fields.go b/vendor/k8s.io/apimachinery/pkg/fields/fields.go new file mode 100644 index 000000000..623b27e95 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/fields.go @@ -0,0 +1,62 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import ( + "sort" + "strings" +) + +// Fields allows you to present fields independently from their storage. +type Fields interface { + // Has returns whether the provided field exists. + Has(field string) (exists bool) + + // Get returns the value for the provided field. + Get(field string) (value string) +} + +// Set is a map of field:value. It implements Fields. +type Set map[string]string + +// String returns all fields listed as a human readable string. +// Conveniently, exactly the format that ParseSelector takes. +func (ls Set) String() string { + selector := make([]string, 0, len(ls)) + for key, value := range ls { + selector = append(selector, key+"="+value) + } + // Sort for determinism. + sort.StringSlice(selector).Sort() + return strings.Join(selector, ",") +} + +// Has returns whether the provided field exists in the map. +func (ls Set) Has(field string) bool { + _, exists := ls[field] + return exists +} + +// Get returns the value in the map for the provided field. +func (ls Set) Get(field string) string { + return ls[field] +} + +// AsSelector converts fields into a selectors. +func (ls Set) AsSelector() Selector { + return SelectorFromSet(ls) +} diff --git a/vendor/k8s.io/apimachinery/pkg/fields/fields_test.go b/vendor/k8s.io/apimachinery/pkg/fields/fields_test.go new file mode 100644 index 000000000..6965be687 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/fields_test.go @@ -0,0 +1,57 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import ( + "testing" +) + +func matches(t *testing.T, ls Set, want string) { + if ls.String() != want { + t.Errorf("Expected '%s', but got '%s'", want, ls.String()) + } +} + +func TestSetString(t *testing.T) { + matches(t, Set{"x": "y"}, "x=y") + matches(t, Set{"foo": "bar"}, "foo=bar") + matches(t, Set{"foo": "bar", "baz": "qup"}, "baz=qup,foo=bar") +} + +func TestFieldHas(t *testing.T) { + fieldHasTests := []struct { + Ls Fields + Key string + Has bool + }{ + {Set{"x": "y"}, "x", true}, + {Set{"x": ""}, "x", true}, + {Set{"x": "y"}, "foo", false}, + } + for _, lh := range fieldHasTests { + if has := lh.Ls.Has(lh.Key); has != lh.Has { + t.Errorf("%#v.Has(%#v) => %v, expected %v", lh.Ls, lh.Key, has, lh.Has) + } + } +} + +func TestFieldGet(t *testing.T) { + ls := Set{"x": "y"} + if ls.Get("x") != "y" { + t.Errorf("Set.Get is broken") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/fields/requirements.go b/vendor/k8s.io/apimachinery/pkg/fields/requirements.go new file mode 100644 index 000000000..70d94ded8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/requirements.go @@ -0,0 +1,30 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import "k8s.io/apimachinery/pkg/selection" + +// Requirements is AND of all requirements. +type Requirements []Requirement + +// Requirement contains a field, a value, and an operator that relates the field and value. +// This is currently for reading internal selection information of field selector. +type Requirement struct { + Operator selection.Operator + Field string + Value string +} diff --git a/vendor/k8s.io/apimachinery/pkg/fields/selector.go b/vendor/k8s.io/apimachinery/pkg/fields/selector.go new file mode 100644 index 000000000..1305dde08 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/selector.go @@ -0,0 +1,423 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import ( + "bytes" + "fmt" + "sort" + "strings" + + "k8s.io/apimachinery/pkg/selection" +) + +// Selector represents a field selector. +type Selector interface { + // Matches returns true if this selector matches the given set of fields. + Matches(Fields) bool + + // Empty returns true if this selector does not restrict the selection space. + Empty() bool + + // RequiresExactMatch allows a caller to introspect whether a given selector + // requires a single specific field to be set, and if so returns the value it + // requires. + RequiresExactMatch(field string) (value string, found bool) + + // Transform returns a new copy of the selector after TransformFunc has been + // applied to the entire selector, or an error if fn returns an error. + // If for a given requirement both field and value are transformed to empty + // string, the requirement is skipped. + Transform(fn TransformFunc) (Selector, error) + + // Requirements converts this interface to Requirements to expose + // more detailed selection information. + Requirements() Requirements + + // String returns a human readable string that represents this selector. + String() string +} + +// Everything returns a selector that matches all fields. +func Everything() Selector { + return andTerm{} +} + +type hasTerm struct { + field, value string +} + +func (t *hasTerm) Matches(ls Fields) bool { + return ls.Get(t.field) == t.value +} + +func (t *hasTerm) Empty() bool { + return false +} + +func (t *hasTerm) RequiresExactMatch(field string) (value string, found bool) { + if t.field == field { + return t.value, true + } + return "", false +} + +func (t *hasTerm) Transform(fn TransformFunc) (Selector, error) { + field, value, err := fn(t.field, t.value) + if err != nil { + return nil, err + } + if len(field) == 0 && len(value) == 0 { + return Everything(), nil + } + return &hasTerm{field, value}, nil +} + +func (t *hasTerm) Requirements() Requirements { + return []Requirement{{ + Field: t.field, + Operator: selection.Equals, + Value: t.value, + }} +} + +func (t *hasTerm) String() string { + return fmt.Sprintf("%v=%v", t.field, EscapeValue(t.value)) +} + +type notHasTerm struct { + field, value string +} + +func (t *notHasTerm) Matches(ls Fields) bool { + return ls.Get(t.field) != t.value +} + +func (t *notHasTerm) Empty() bool { + return false +} + +func (t *notHasTerm) RequiresExactMatch(field string) (value string, found bool) { + return "", false +} + +func (t *notHasTerm) Transform(fn TransformFunc) (Selector, error) { + field, value, err := fn(t.field, t.value) + if err != nil { + return nil, err + } + if len(field) == 0 && len(value) == 0 { + return Everything(), nil + } + return ¬HasTerm{field, value}, nil +} + +func (t *notHasTerm) Requirements() Requirements { + return []Requirement{{ + Field: t.field, + Operator: selection.NotEquals, + Value: t.value, + }} +} + +func (t *notHasTerm) String() string { + return fmt.Sprintf("%v!=%v", t.field, EscapeValue(t.value)) +} + +type andTerm []Selector + +func (t andTerm) Matches(ls Fields) bool { + for _, q := range t { + if !q.Matches(ls) { + return false + } + } + return true +} + +func (t andTerm) Empty() bool { + if t == nil { + return true + } + if len([]Selector(t)) == 0 { + return true + } + for i := range t { + if !t[i].Empty() { + return false + } + } + return true +} + +func (t andTerm) RequiresExactMatch(field string) (string, bool) { + if t == nil || len([]Selector(t)) == 0 { + return "", false + } + for i := range t { + if value, found := t[i].RequiresExactMatch(field); found { + return value, found + } + } + return "", false +} + +func (t andTerm) Transform(fn TransformFunc) (Selector, error) { + next := make([]Selector, 0, len([]Selector(t))) + for _, s := range []Selector(t) { + n, err := s.Transform(fn) + if err != nil { + return nil, err + } + if !n.Empty() { + next = append(next, n) + } + } + return andTerm(next), nil +} + +func (t andTerm) Requirements() Requirements { + reqs := make([]Requirement, 0, len(t)) + for _, s := range []Selector(t) { + rs := s.Requirements() + reqs = append(reqs, rs...) + } + return reqs +} + +func (t andTerm) String() string { + var terms []string + for _, q := range t { + terms = append(terms, q.String()) + } + return strings.Join(terms, ",") +} + +// SelectorFromSet returns a Selector which will match exactly the given Set. A +// nil Set is considered equivalent to Everything(). +func SelectorFromSet(ls Set) Selector { + if ls == nil { + return Everything() + } + items := make([]Selector, 0, len(ls)) + for field, value := range ls { + items = append(items, &hasTerm{field: field, value: value}) + } + if len(items) == 1 { + return items[0] + } + return andTerm(items) +} + +// valueEscaper prefixes \,= characters with a backslash +var valueEscaper = strings.NewReplacer( + // escape \ characters + `\`, `\\`, + // then escape , and = characters to allow unambiguous parsing of the value in a fieldSelector + `,`, `\,`, + `=`, `\=`, +) + +// EscapeValue escapes an arbitrary literal string for use as a fieldSelector value +func EscapeValue(s string) string { + return valueEscaper.Replace(s) +} + +// InvalidEscapeSequence indicates an error occurred unescaping a field selector +type InvalidEscapeSequence struct { + sequence string +} + +func (i InvalidEscapeSequence) Error() string { + return fmt.Sprintf("invalid field selector: invalid escape sequence: %s", i.sequence) +} + +// UnescapedRune indicates an error occurred unescaping a field selector +type UnescapedRune struct { + r rune +} + +func (i UnescapedRune) Error() string { + return fmt.Sprintf("invalid field selector: unescaped character in value: %v", i.r) +} + +// UnescapeValue unescapes a fieldSelector value and returns the original literal value. +// May return the original string if it contains no escaped or special characters. +func UnescapeValue(s string) (string, error) { + // if there's no escaping or special characters, just return to avoid allocation + if !strings.ContainsAny(s, `\,=`) { + return s, nil + } + + v := bytes.NewBuffer(make([]byte, 0, len(s))) + inSlash := false + for _, c := range s { + if inSlash { + switch c { + case '\\', ',', '=': + // omit the \ for recognized escape sequences + v.WriteRune(c) + default: + // error on unrecognized escape sequences + return "", InvalidEscapeSequence{sequence: string([]rune{'\\', c})} + } + inSlash = false + continue + } + + switch c { + case '\\': + inSlash = true + case ',', '=': + // unescaped , and = characters are not allowed in field selector values + return "", UnescapedRune{r: c} + default: + v.WriteRune(c) + } + } + + // Ending with a single backslash is an invalid sequence + if inSlash { + return "", InvalidEscapeSequence{sequence: "\\"} + } + + return v.String(), nil +} + +// ParseSelectorOrDie takes a string representing a selector and returns an +// object suitable for matching, or panic when an error occur. +func ParseSelectorOrDie(s string) Selector { + selector, err := ParseSelector(s) + if err != nil { + panic(err) + } + return selector +} + +// ParseSelector takes a string representing a selector and returns an +// object suitable for matching, or an error. +func ParseSelector(selector string) (Selector, error) { + return parseSelector(selector, + func(lhs, rhs string) (newLhs, newRhs string, err error) { + return lhs, rhs, nil + }) +} + +// ParseAndTransformSelector parses the selector and runs them through the given TransformFunc. +func ParseAndTransformSelector(selector string, fn TransformFunc) (Selector, error) { + return parseSelector(selector, fn) +} + +// TransformFunc transforms selectors. +type TransformFunc func(field, value string) (newField, newValue string, err error) + +// splitTerms returns the comma-separated terms contained in the given fieldSelector. +// Backslash-escaped commas are treated as data instead of delimiters, and are included in the returned terms, with the leading backslash preserved. +func splitTerms(fieldSelector string) []string { + if len(fieldSelector) == 0 { + return nil + } + + terms := make([]string, 0, 1) + startIndex := 0 + inSlash := false + for i, c := range fieldSelector { + switch { + case inSlash: + inSlash = false + case c == '\\': + inSlash = true + case c == ',': + terms = append(terms, fieldSelector[startIndex:i]) + startIndex = i + 1 + } + } + + terms = append(terms, fieldSelector[startIndex:]) + + return terms +} + +const ( + notEqualOperator = "!=" + doubleEqualOperator = "==" + equalOperator = "=" +) + +// termOperators holds the recognized operators supported in fieldSelectors. +// doubleEqualOperator and equal are equivalent, but doubleEqualOperator is checked first +// to avoid leaving a leading = character on the rhs value. +var termOperators = []string{notEqualOperator, doubleEqualOperator, equalOperator} + +// splitTerm returns the lhs, operator, and rhs parsed from the given term, along with an indicator of whether the parse was successful. +// no escaping of special characters is supported in the lhs value, so the first occurance of a recognized operator is used as the split point. +// the literal rhs is returned, and the caller is responsible for applying any desired unescaping. +func splitTerm(term string) (lhs, op, rhs string, ok bool) { + for i := range term { + remaining := term[i:] + for _, op := range termOperators { + if strings.HasPrefix(remaining, op) { + return term[0:i], op, term[i+len(op):], true + } + } + } + return "", "", "", false +} + +func parseSelector(selector string, fn TransformFunc) (Selector, error) { + parts := splitTerms(selector) + sort.StringSlice(parts).Sort() + var items []Selector + for _, part := range parts { + if part == "" { + continue + } + lhs, op, rhs, ok := splitTerm(part) + if !ok { + return nil, fmt.Errorf("invalid selector: '%s'; can't understand '%s'", selector, part) + } + unescapedRHS, err := UnescapeValue(rhs) + if err != nil { + return nil, err + } + switch op { + case notEqualOperator: + items = append(items, ¬HasTerm{field: lhs, value: unescapedRHS}) + case doubleEqualOperator: + items = append(items, &hasTerm{field: lhs, value: unescapedRHS}) + case equalOperator: + items = append(items, &hasTerm{field: lhs, value: unescapedRHS}) + default: + return nil, fmt.Errorf("invalid selector: '%s'; can't understand '%s'", selector, part) + } + } + if len(items) == 1 { + return items[0].Transform(fn) + } + return andTerm(items).Transform(fn) +} + +// OneTermEqualSelector returns an object that matches objects where one field/field equals one value. +// Cannot return an error. +func OneTermEqualSelector(k, v string) Selector { + return &hasTerm{field: k, value: v} +} + +// AndSelectors creates a selector that is the logical AND of all the given selectors +func AndSelectors(selectors ...Selector) Selector { + return andTerm(selectors) +} diff --git a/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go b/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go new file mode 100644 index 000000000..ff6245ca9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/fields/selector_test.go @@ -0,0 +1,397 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import ( + "reflect" + "testing" +) + +func TestSplitTerms(t *testing.T) { + testcases := map[string][]string{ + // Simple selectors + `a`: {`a`}, + `a=avalue`: {`a=avalue`}, + `a=avalue,b=bvalue`: {`a=avalue`, `b=bvalue`}, + `a=avalue,b==bvalue,c!=cvalue`: {`a=avalue`, `b==bvalue`, `c!=cvalue`}, + + // Empty terms + ``: nil, + `a=a,`: {`a=a`, ``}, + `,a=a`: {``, `a=a`}, + + // Escaped values + `k=\,,k2=v2`: {`k=\,`, `k2=v2`}, // escaped comma in value + `k=\\,k2=v2`: {`k=\\`, `k2=v2`}, // escaped backslash, unescaped comma + `k=\\\,,k2=v2`: {`k=\\\,`, `k2=v2`}, // escaped backslash and comma + `k=\a\b\`: {`k=\a\b\`}, // non-escape sequences + `k=\`: {`k=\`}, // orphan backslash + + // Multi-byte + `함=수,목=록`: {`함=수`, `목=록`}, + } + + for selector, expectedTerms := range testcases { + if terms := splitTerms(selector); !reflect.DeepEqual(terms, expectedTerms) { + t.Errorf("splitSelectors(`%s`): Expected\n%#v\ngot\n%#v", selector, expectedTerms, terms) + } + } +} + +func TestSplitTerm(t *testing.T) { + testcases := map[string]struct { + lhs string + op string + rhs string + ok bool + }{ + // Simple terms + `a=value`: {lhs: `a`, op: `=`, rhs: `value`, ok: true}, + `b==value`: {lhs: `b`, op: `==`, rhs: `value`, ok: true}, + `c!=value`: {lhs: `c`, op: `!=`, rhs: `value`, ok: true}, + + // Empty or invalid terms + ``: {lhs: ``, op: ``, rhs: ``, ok: false}, + `a`: {lhs: ``, op: ``, rhs: ``, ok: false}, + + // Escaped values + `k=\,`: {lhs: `k`, op: `=`, rhs: `\,`, ok: true}, + `k=\=`: {lhs: `k`, op: `=`, rhs: `\=`, ok: true}, + `k=\\\a\b\=\,\`: {lhs: `k`, op: `=`, rhs: `\\\a\b\=\,\`, ok: true}, + + // Multi-byte + `함=수`: {lhs: `함`, op: `=`, rhs: `수`, ok: true}, + } + + for term, expected := range testcases { + lhs, op, rhs, ok := splitTerm(term) + if lhs != expected.lhs || op != expected.op || rhs != expected.rhs || ok != expected.ok { + t.Errorf( + "splitTerm(`%s`): Expected\n%s,%s,%s,%v\nGot\n%s,%s,%s,%v", + term, + expected.lhs, expected.op, expected.rhs, expected.ok, + lhs, op, rhs, ok, + ) + } + } +} + +func TestEscapeValue(t *testing.T) { + // map values to their normalized escaped values + testcases := map[string]string{ + ``: ``, + `a`: `a`, + `=`: `\=`, + `,`: `\,`, + `\`: `\\`, + `\=\,\`: `\\\=\\\,\\`, + } + + for unescapedValue, escapedValue := range testcases { + actualEscaped := EscapeValue(unescapedValue) + if actualEscaped != escapedValue { + t.Errorf("EscapeValue(%s): expected %s, got %s", unescapedValue, escapedValue, actualEscaped) + } + + actualUnescaped, err := UnescapeValue(escapedValue) + if err != nil { + t.Errorf("UnescapeValue(%s): unexpected error %v", escapedValue, err) + } + if actualUnescaped != unescapedValue { + t.Errorf("UnescapeValue(%s): expected %s, got %s", escapedValue, unescapedValue, actualUnescaped) + } + } + + // test invalid escape sequences + invalidTestcases := []string{ + `\`, // orphan slash is invalid + `\\\`, // orphan slash is invalid + `\a`, // unrecognized escape sequence is invalid + } + for _, invalidValue := range invalidTestcases { + _, err := UnescapeValue(invalidValue) + if _, ok := err.(InvalidEscapeSequence); !ok || err == nil { + t.Errorf("UnescapeValue(%s): expected invalid escape sequence error, got %#v", invalidValue, err) + } + } +} + +func TestSelectorParse(t *testing.T) { + testGoodStrings := []string{ + "x=a,y=b,z=c", + "", + "x!=a,y=b", + `x=a||y\=b`, + `x=a\=\=b`, + } + testBadStrings := []string{ + "x=a||y=b", + "x==a==b", + "x=a,b", + "x in (a)", + "x in (a,b,c)", + "x", + } + for _, test := range testGoodStrings { + lq, err := ParseSelector(test) + if err != nil { + t.Errorf("%v: error %v (%#v)\n", test, err, err) + } + if test != lq.String() { + t.Errorf("%v restring gave: %v\n", test, lq.String()) + } + } + for _, test := range testBadStrings { + _, err := ParseSelector(test) + if err == nil { + t.Errorf("%v: did not get expected error\n", test) + } + } +} + +func TestDeterministicParse(t *testing.T) { + s1, err := ParseSelector("x=a,a=x") + s2, err2 := ParseSelector("a=x,x=a") + if err != nil || err2 != nil { + t.Errorf("Unexpected parse error") + } + if s1.String() != s2.String() { + t.Errorf("Non-deterministic parse") + } +} + +func expectMatch(t *testing.T, selector string, ls Set) { + lq, err := ParseSelector(selector) + if err != nil { + t.Errorf("Unable to parse %v as a selector\n", selector) + return + } + if !lq.Matches(ls) { + t.Errorf("Wanted %s to match '%s', but it did not.\n", selector, ls) + } +} + +func expectNoMatch(t *testing.T, selector string, ls Set) { + lq, err := ParseSelector(selector) + if err != nil { + t.Errorf("Unable to parse %v as a selector\n", selector) + return + } + if lq.Matches(ls) { + t.Errorf("Wanted '%s' to not match '%s', but it did.", selector, ls) + } +} + +func TestEverything(t *testing.T) { + if !Everything().Matches(Set{"x": "y"}) { + t.Errorf("Nil selector didn't match") + } + if !Everything().Empty() { + t.Errorf("Everything was not empty") + } +} + +func TestSelectorMatches(t *testing.T) { + expectMatch(t, "", Set{"x": "y"}) + expectMatch(t, "x=y", Set{"x": "y"}) + expectMatch(t, "x=y,z=w", Set{"x": "y", "z": "w"}) + expectMatch(t, "x!=y,z!=w", Set{"x": "z", "z": "a"}) + expectMatch(t, "notin=in", Set{"notin": "in"}) // in and notin in exactMatch + expectNoMatch(t, "x=y", Set{"x": "z"}) + expectNoMatch(t, "x=y,z=w", Set{"x": "w", "z": "w"}) + expectNoMatch(t, "x!=y,z!=w", Set{"x": "z", "z": "w"}) + + fieldset := Set{ + "foo": "bar", + "baz": "blah", + "complex": `=value\,\`, + } + expectMatch(t, "foo=bar", fieldset) + expectMatch(t, "baz=blah", fieldset) + expectMatch(t, "foo=bar,baz=blah", fieldset) + expectMatch(t, `foo=bar,baz=blah,complex=\=value\\\,\\`, fieldset) + expectNoMatch(t, "foo=blah", fieldset) + expectNoMatch(t, "baz=bar", fieldset) + expectNoMatch(t, "foo=bar,foobar=bar,baz=blah", fieldset) +} + +func TestOneTermEqualSelector(t *testing.T) { + if !OneTermEqualSelector("x", "y").Matches(Set{"x": "y"}) { + t.Errorf("No match when match expected.") + } + if OneTermEqualSelector("x", "y").Matches(Set{"x": "z"}) { + t.Errorf("Match when none expected.") + } +} + +func expectMatchDirect(t *testing.T, selector, ls Set) { + if !SelectorFromSet(selector).Matches(ls) { + t.Errorf("Wanted %s to match '%s', but it did not.\n", selector, ls) + } +} + +func expectNoMatchDirect(t *testing.T, selector, ls Set) { + if SelectorFromSet(selector).Matches(ls) { + t.Errorf("Wanted '%s' to not match '%s', but it did.", selector, ls) + } +} + +func TestSetMatches(t *testing.T) { + labelset := Set{ + "foo": "bar", + "baz": "blah", + } + expectMatchDirect(t, Set{}, labelset) + expectMatchDirect(t, Set{"foo": "bar"}, labelset) + expectMatchDirect(t, Set{"baz": "blah"}, labelset) + expectMatchDirect(t, Set{"foo": "bar", "baz": "blah"}, labelset) + expectNoMatchDirect(t, Set{"foo": "=blah"}, labelset) + expectNoMatchDirect(t, Set{"baz": "=bar"}, labelset) + expectNoMatchDirect(t, Set{"foo": "=bar", "foobar": "bar", "baz": "blah"}, labelset) +} + +func TestNilMapIsValid(t *testing.T) { + selector := Set(nil).AsSelector() + if selector == nil { + t.Errorf("Selector for nil set should be Everything") + } + if !selector.Empty() { + t.Errorf("Selector for nil set should be Empty") + } +} + +func TestSetIsEmpty(t *testing.T) { + if !(Set{}).AsSelector().Empty() { + t.Errorf("Empty set should be empty") + } + if !(andTerm(nil)).Empty() { + t.Errorf("Nil andTerm should be empty") + } + if (&hasTerm{}).Empty() { + t.Errorf("hasTerm should not be empty") + } + if (¬HasTerm{}).Empty() { + t.Errorf("notHasTerm should not be empty") + } + if !(andTerm{andTerm{}}).Empty() { + t.Errorf("Nested andTerm should be empty") + } + if (andTerm{&hasTerm{"a", "b"}}).Empty() { + t.Errorf("Nested andTerm should not be empty") + } +} + +func TestRequiresExactMatch(t *testing.T) { + testCases := map[string]struct { + S Selector + Label string + Value string + Found bool + }{ + "empty set": {Set{}.AsSelector(), "test", "", false}, + "empty hasTerm": {&hasTerm{}, "test", "", false}, + "skipped hasTerm": {&hasTerm{"a", "b"}, "test", "", false}, + "valid hasTerm": {&hasTerm{"test", "b"}, "test", "b", true}, + "valid hasTerm no value": {&hasTerm{"test", ""}, "test", "", true}, + "valid notHasTerm": {¬HasTerm{"test", "b"}, "test", "", false}, + "valid notHasTerm no value": {¬HasTerm{"test", ""}, "test", "", false}, + "nil andTerm": {andTerm(nil), "test", "", false}, + "empty andTerm": {andTerm{}, "test", "", false}, + "nested andTerm": {andTerm{andTerm{}}, "test", "", false}, + "nested andTerm matches": {andTerm{&hasTerm{"test", "b"}}, "test", "b", true}, + "andTerm with non-match": {andTerm{&hasTerm{}, &hasTerm{"test", "b"}}, "test", "b", true}, + } + for k, v := range testCases { + value, found := v.S.RequiresExactMatch(v.Label) + if value != v.Value { + t.Errorf("%s: expected value %s, got %s", k, v.Value, value) + } + if found != v.Found { + t.Errorf("%s: expected found %t, got %t", k, v.Found, found) + } + } +} + +func TestTransform(t *testing.T) { + testCases := []struct { + name string + selector string + transform func(field, value string) (string, string, error) + result string + isEmpty bool + }{ + { + name: "empty selector", + selector: "", + transform: func(field, value string) (string, string, error) { return field, value, nil }, + result: "", + isEmpty: true, + }, + { + name: "no-op transform", + selector: "a=b,c=d", + transform: func(field, value string) (string, string, error) { return field, value, nil }, + result: "a=b,c=d", + isEmpty: false, + }, + { + name: "transform one field", + selector: "a=b,c=d", + transform: func(field, value string) (string, string, error) { + if field == "a" { + return "e", "f", nil + } + return field, value, nil + }, + result: "e=f,c=d", + isEmpty: false, + }, + { + name: "remove field to make empty", + selector: "a=b", + transform: func(field, value string) (string, string, error) { return "", "", nil }, + result: "", + isEmpty: true, + }, + { + name: "remove only one field", + selector: "a=b,c=d,e=f", + transform: func(field, value string) (string, string, error) { + if field == "c" { + return "", "", nil + } + return field, value, nil + }, + result: "a=b,e=f", + isEmpty: false, + }, + } + + for i, tc := range testCases { + result, err := ParseAndTransformSelector(tc.selector, tc.transform) + if err != nil { + t.Errorf("[%d] unexpected error during Transform: %v", i, err) + } + if result.Empty() != tc.isEmpty { + t.Errorf("[%d] expected empty: %t, got: %t", i, tc.isEmpty, result.Empty) + } + if result.String() != tc.result { + t.Errorf("[%d] unexpected result: %s", i, result.String()) + } + } + +} diff --git a/vendor/k8s.io/apimachinery/pkg/labels/BUILD b/vendor/k8s.io/apimachinery/pkg/labels/BUILD new file mode 100644 index 000000000..5e4d9143b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/BUILD @@ -0,0 +1,39 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "labels_test.go", + "selector_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "labels.go", + "selector.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/labels/doc.go b/vendor/k8s.io/apimachinery/pkg/labels/doc.go new file mode 100644 index 000000000..82de0051b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package labels implements a simple label system, parsing and matching +// selectors with sets of labels. +package labels // import "k8s.io/apimachinery/pkg/labels" diff --git a/vendor/k8s.io/apimachinery/pkg/labels/labels.go b/vendor/k8s.io/apimachinery/pkg/labels/labels.go new file mode 100644 index 000000000..32db4d96f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/labels.go @@ -0,0 +1,181 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "fmt" + "sort" + "strings" +) + +// Labels allows you to present labels independently from their storage. +type Labels interface { + // Has returns whether the provided label exists. + Has(label string) (exists bool) + + // Get returns the value for the provided label. + Get(label string) (value string) +} + +// Set is a map of label:value. It implements Labels. +type Set map[string]string + +// String returns all labels listed as a human readable string. +// Conveniently, exactly the format that ParseSelector takes. +func (ls Set) String() string { + selector := make([]string, 0, len(ls)) + for key, value := range ls { + selector = append(selector, key+"="+value) + } + // Sort for determinism. + sort.StringSlice(selector).Sort() + return strings.Join(selector, ",") +} + +// Has returns whether the provided label exists in the map. +func (ls Set) Has(label string) bool { + _, exists := ls[label] + return exists +} + +// Get returns the value in the map for the provided label. +func (ls Set) Get(label string) string { + return ls[label] +} + +// AsSelector converts labels into a selectors. +func (ls Set) AsSelector() Selector { + return SelectorFromSet(ls) +} + +// AsSelectorPreValidated converts labels into a selector, but +// assumes that labels are already validated and thus don't +// preform any validation. +// According to our measurements this is significantly faster +// in codepaths that matter at high scale. +func (ls Set) AsSelectorPreValidated() Selector { + return SelectorFromValidatedSet(ls) +} + +// FormatLabels convert label map into plain string +func FormatLabels(labelMap map[string]string) string { + l := Set(labelMap).String() + if l == "" { + l = "" + } + return l +} + +// Conflicts takes 2 maps and returns true if there a key match between +// the maps but the value doesn't match, and returns false in other cases +func Conflicts(labels1, labels2 Set) bool { + small := labels1 + big := labels2 + if len(labels2) < len(labels1) { + small = labels2 + big = labels1 + } + + for k, v := range small { + if val, match := big[k]; match { + if val != v { + return true + } + } + } + + return false +} + +// Merge combines given maps, and does not check for any conflicts +// between the maps. In case of conflicts, second map (labels2) wins +func Merge(labels1, labels2 Set) Set { + mergedMap := Set{} + + for k, v := range labels1 { + mergedMap[k] = v + } + for k, v := range labels2 { + mergedMap[k] = v + } + return mergedMap +} + +// Equals returns true if the given maps are equal +func Equals(labels1, labels2 Set) bool { + if len(labels1) != len(labels2) { + return false + } + + for k, v := range labels1 { + value, ok := labels2[k] + if !ok { + return false + } + if value != v { + return false + } + } + return true +} + +// AreLabelsInWhiteList verifies if the provided label list +// is in the provided whitelist and returns true, otherwise false. +func AreLabelsInWhiteList(labels, whitelist Set) bool { + if len(whitelist) == 0 { + return true + } + + for k, v := range labels { + value, ok := whitelist[k] + if !ok { + return false + } + if value != v { + return false + } + } + return true +} + +// ConvertSelectorToLabelsMap converts selector string to labels map +// and validates keys and values +func ConvertSelectorToLabelsMap(selector string) (Set, error) { + labelsMap := Set{} + + if len(selector) == 0 { + return labelsMap, nil + } + + labels := strings.Split(selector, ",") + for _, label := range labels { + l := strings.Split(label, "=") + if len(l) != 2 { + return labelsMap, fmt.Errorf("invalid selector: %s", l) + } + key := strings.TrimSpace(l[0]) + if err := validateLabelKey(key); err != nil { + return labelsMap, err + } + value := strings.TrimSpace(l[1]) + if err := validateLabelValue(value); err != nil { + return labelsMap, err + } + labelsMap[key] = value + } + return labelsMap, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/labels/labels_test.go b/vendor/k8s.io/apimachinery/pkg/labels/labels_test.go new file mode 100644 index 000000000..2d4d761bc --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/labels_test.go @@ -0,0 +1,231 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "testing" +) + +func matches(t *testing.T, ls Set, want string) { + if ls.String() != want { + t.Errorf("Expected '%s', but got '%s'", want, ls.String()) + } +} + +func TestSetString(t *testing.T) { + matches(t, Set{"x": "y"}, "x=y") + matches(t, Set{"foo": "bar"}, "foo=bar") + matches(t, Set{"foo": "bar", "baz": "qup"}, "baz=qup,foo=bar") + + // TODO: Make our label representation robust enough to handle labels + // with ",=!" characters in their names. +} + +func TestLabelHas(t *testing.T) { + labelHasTests := []struct { + Ls Labels + Key string + Has bool + }{ + {Set{"x": "y"}, "x", true}, + {Set{"x": ""}, "x", true}, + {Set{"x": "y"}, "foo", false}, + } + for _, lh := range labelHasTests { + if has := lh.Ls.Has(lh.Key); has != lh.Has { + t.Errorf("%#v.Has(%#v) => %v, expected %v", lh.Ls, lh.Key, has, lh.Has) + } + } +} + +func TestLabelGet(t *testing.T) { + ls := Set{"x": "y"} + if ls.Get("x") != "y" { + t.Errorf("Set.Get is broken") + } +} + +func TestLabelConflict(t *testing.T) { + tests := []struct { + labels1 map[string]string + labels2 map[string]string + conflict bool + }{ + { + labels1: map[string]string{}, + labels2: map[string]string{}, + conflict: false, + }, + { + labels1: map[string]string{"env": "test"}, + labels2: map[string]string{"infra": "true"}, + conflict: false, + }, + { + labels1: map[string]string{"env": "test"}, + labels2: map[string]string{"infra": "true", "env": "test"}, + conflict: false, + }, + { + labels1: map[string]string{"env": "test"}, + labels2: map[string]string{"env": "dev"}, + conflict: true, + }, + { + labels1: map[string]string{"env": "test", "infra": "false"}, + labels2: map[string]string{"infra": "true", "color": "blue"}, + conflict: true, + }, + } + for _, test := range tests { + conflict := Conflicts(Set(test.labels1), Set(test.labels2)) + if conflict != test.conflict { + t.Errorf("expected: %v but got: %v", test.conflict, conflict) + } + } +} + +func TestLabelMerge(t *testing.T) { + tests := []struct { + labels1 map[string]string + labels2 map[string]string + mergedLabels map[string]string + }{ + { + labels1: map[string]string{}, + labels2: map[string]string{}, + mergedLabels: map[string]string{}, + }, + { + labels1: map[string]string{"infra": "true"}, + labels2: map[string]string{}, + mergedLabels: map[string]string{"infra": "true"}, + }, + { + labels1: map[string]string{"infra": "true"}, + labels2: map[string]string{"env": "test", "color": "blue"}, + mergedLabels: map[string]string{"infra": "true", "env": "test", "color": "blue"}, + }, + } + for _, test := range tests { + mergedLabels := Merge(Set(test.labels1), Set(test.labels2)) + if !Equals(mergedLabels, test.mergedLabels) { + t.Errorf("expected: %v but got: %v", test.mergedLabels, mergedLabels) + } + } +} + +func TestLabelSelectorParse(t *testing.T) { + tests := []struct { + selector string + labels map[string]string + valid bool + }{ + { + selector: "", + labels: map[string]string{}, + valid: true, + }, + { + selector: "x=a", + labels: map[string]string{"x": "a"}, + valid: true, + }, + { + selector: "x=a,y=b,z=c", + labels: map[string]string{"x": "a", "y": "b", "z": "c"}, + valid: true, + }, + { + selector: " x = a , y = b , z = c ", + labels: map[string]string{"x": "a", "y": "b", "z": "c"}, + valid: true, + }, + { + selector: "color=green,env=test,service=front", + labels: map[string]string{"color": "green", "env": "test", "service": "front"}, + valid: true, + }, + { + selector: "color=green, env=test, service=front", + labels: map[string]string{"color": "green", "env": "test", "service": "front"}, + valid: true, + }, + { + selector: ",", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x,y", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x=$y", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x!=y", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x==y", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x=a||y=b", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x in (y)", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x notin (y)", + labels: map[string]string{}, + valid: false, + }, + { + selector: "x y", + labels: map[string]string{}, + valid: false, + }, + } + for _, test := range tests { + labels, err := ConvertSelectorToLabelsMap(test.selector) + if test.valid && err != nil { + t.Errorf("selector: %s, expected no error but got: %s", test.selector, err) + } else if !test.valid && err == nil { + t.Errorf("selector: %s, expected an error", test.selector) + } + + if !Equals(Set(labels), test.labels) { + t.Errorf("expected: %s but got: %s", test.labels, labels) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/labels/selector.go b/vendor/k8s.io/apimachinery/pkg/labels/selector.go new file mode 100644 index 000000000..50b41f99d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/selector.go @@ -0,0 +1,859 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "bytes" + "fmt" + "sort" + "strconv" + "strings" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/selection" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/validation" +) + +// Requirements is AND of all requirements. +type Requirements []Requirement + +// Selector represents a label selector. +type Selector interface { + // Matches returns true if this selector matches the given set of labels. + Matches(Labels) bool + + // Empty returns true if this selector does not restrict the selection space. + Empty() bool + + // String returns a human readable string that represents this selector. + String() string + + // Add adds requirements to the Selector + Add(r ...Requirement) Selector + + // Requirements converts this interface into Requirements to expose + // more detailed selection information. + // If there are querying parameters, it will return converted requirements and selectable=true. + // If this selector doesn't want to select anything, it will return selectable=false. + Requirements() (requirements Requirements, selectable bool) +} + +// Everything returns a selector that matches all labels. +func Everything() Selector { + return internalSelector{} +} + +type nothingSelector struct{} + +func (n nothingSelector) Matches(_ Labels) bool { return false } +func (n nothingSelector) Empty() bool { return false } +func (n nothingSelector) String() string { return "" } +func (n nothingSelector) Add(_ ...Requirement) Selector { return n } +func (n nothingSelector) Requirements() (Requirements, bool) { return nil, false } + +// Nothing returns a selector that matches no labels +func Nothing() Selector { + return nothingSelector{} +} + +// NewSelector returns a nil selector +func NewSelector() Selector { + return internalSelector(nil) +} + +type internalSelector []Requirement + +// ByKey sorts requirements by key to obtain deterministic parser +type ByKey []Requirement + +func (a ByKey) Len() int { return len(a) } + +func (a ByKey) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +func (a ByKey) Less(i, j int) bool { return a[i].key < a[j].key } + +// Requirement contains values, a key, and an operator that relates the key and values. +// The zero value of Requirement is invalid. +// Requirement implements both set based match and exact match +// Requirement should be initialized via NewRequirement constructor for creating a valid Requirement. +type Requirement struct { + key string + operator selection.Operator + // In huge majority of cases we have at most one value here. + // It is generally faster to operate on a single-element slice + // than on a single-element map, so we have a slice here. + strValues []string +} + +// NewRequirement is the constructor for a Requirement. +// If any of these rules is violated, an error is returned: +// (1) The operator can only be In, NotIn, Equals, DoubleEquals, NotEquals, Exists, or DoesNotExist. +// (2) If the operator is In or NotIn, the values set must be non-empty. +// (3) If the operator is Equals, DoubleEquals, or NotEquals, the values set must contain one value. +// (4) If the operator is Exists or DoesNotExist, the value set must be empty. +// (5) If the operator is Gt or Lt, the values set must contain only one value, which will be interpreted as an integer. +// (6) The key is invalid due to its length, or sequence +// of characters. See validateLabelKey for more details. +// +// The empty string is a valid value in the input values set. +func NewRequirement(key string, op selection.Operator, vals []string) (*Requirement, error) { + if err := validateLabelKey(key); err != nil { + return nil, err + } + switch op { + case selection.In, selection.NotIn: + if len(vals) == 0 { + return nil, fmt.Errorf("for 'in', 'notin' operators, values set can't be empty") + } + case selection.Equals, selection.DoubleEquals, selection.NotEquals: + if len(vals) != 1 { + return nil, fmt.Errorf("exact-match compatibility requires one single value") + } + case selection.Exists, selection.DoesNotExist: + if len(vals) != 0 { + return nil, fmt.Errorf("values set must be empty for exists and does not exist") + } + case selection.GreaterThan, selection.LessThan: + if len(vals) != 1 { + return nil, fmt.Errorf("for 'Gt', 'Lt' operators, exactly one value is required") + } + for i := range vals { + if _, err := strconv.ParseInt(vals[i], 10, 64); err != nil { + return nil, fmt.Errorf("for 'Gt', 'Lt' operators, the value must be an integer") + } + } + default: + return nil, fmt.Errorf("operator '%v' is not recognized", op) + } + + for i := range vals { + if err := validateLabelValue(vals[i]); err != nil { + return nil, err + } + } + sort.Strings(vals) + return &Requirement{key: key, operator: op, strValues: vals}, nil +} + +func (r *Requirement) hasValue(value string) bool { + for i := range r.strValues { + if r.strValues[i] == value { + return true + } + } + return false +} + +// Matches returns true if the Requirement matches the input Labels. +// There is a match in the following cases: +// (1) The operator is Exists and Labels has the Requirement's key. +// (2) The operator is In, Labels has the Requirement's key and Labels' +// value for that key is in Requirement's value set. +// (3) The operator is NotIn, Labels has the Requirement's key and +// Labels' value for that key is not in Requirement's value set. +// (4) The operator is DoesNotExist or NotIn and Labels does not have the +// Requirement's key. +// (5) The operator is GreaterThanOperator or LessThanOperator, and Labels has +// the Requirement's key and the corresponding value satisfies mathematical inequality. +func (r *Requirement) Matches(ls Labels) bool { + switch r.operator { + case selection.In, selection.Equals, selection.DoubleEquals: + if !ls.Has(r.key) { + return false + } + return r.hasValue(ls.Get(r.key)) + case selection.NotIn, selection.NotEquals: + if !ls.Has(r.key) { + return true + } + return !r.hasValue(ls.Get(r.key)) + case selection.Exists: + return ls.Has(r.key) + case selection.DoesNotExist: + return !ls.Has(r.key) + case selection.GreaterThan, selection.LessThan: + if !ls.Has(r.key) { + return false + } + lsValue, err := strconv.ParseInt(ls.Get(r.key), 10, 64) + if err != nil { + glog.V(10).Infof("ParseInt failed for value %+v in label %+v, %+v", ls.Get(r.key), ls, err) + return false + } + + // There should be only one strValue in r.strValues, and can be converted to a integer. + if len(r.strValues) != 1 { + glog.V(10).Infof("Invalid values count %+v of requirement %#v, for 'Gt', 'Lt' operators, exactly one value is required", len(r.strValues), r) + return false + } + + var rValue int64 + for i := range r.strValues { + rValue, err = strconv.ParseInt(r.strValues[i], 10, 64) + if err != nil { + glog.V(10).Infof("ParseInt failed for value %+v in requirement %#v, for 'Gt', 'Lt' operators, the value must be an integer", r.strValues[i], r) + return false + } + } + return (r.operator == selection.GreaterThan && lsValue > rValue) || (r.operator == selection.LessThan && lsValue < rValue) + default: + return false + } +} + +// Key returns requirement key +func (r *Requirement) Key() string { + return r.key +} + +// Operator returns requirement operator +func (r *Requirement) Operator() selection.Operator { + return r.operator +} + +// Values returns requirement values +func (r *Requirement) Values() sets.String { + ret := sets.String{} + for i := range r.strValues { + ret.Insert(r.strValues[i]) + } + return ret +} + +// Empty returns true if the internalSelector doesn't restrict selection space +func (lsel internalSelector) Empty() bool { + if lsel == nil { + return true + } + return len(lsel) == 0 +} + +// String returns a human-readable string that represents this +// Requirement. If called on an invalid Requirement, an error is +// returned. See NewRequirement for creating a valid Requirement. +func (r *Requirement) String() string { + var buffer bytes.Buffer + if r.operator == selection.DoesNotExist { + buffer.WriteString("!") + } + buffer.WriteString(r.key) + + switch r.operator { + case selection.Equals: + buffer.WriteString("=") + case selection.DoubleEquals: + buffer.WriteString("==") + case selection.NotEquals: + buffer.WriteString("!=") + case selection.In: + buffer.WriteString(" in ") + case selection.NotIn: + buffer.WriteString(" notin ") + case selection.GreaterThan: + buffer.WriteString(">") + case selection.LessThan: + buffer.WriteString("<") + case selection.Exists, selection.DoesNotExist: + return buffer.String() + } + + switch r.operator { + case selection.In, selection.NotIn: + buffer.WriteString("(") + } + if len(r.strValues) == 1 { + buffer.WriteString(r.strValues[0]) + } else { // only > 1 since == 0 prohibited by NewRequirement + buffer.WriteString(strings.Join(r.strValues, ",")) + } + + switch r.operator { + case selection.In, selection.NotIn: + buffer.WriteString(")") + } + return buffer.String() +} + +// Add adds requirements to the selector. It copies the current selector returning a new one +func (lsel internalSelector) Add(reqs ...Requirement) Selector { + var sel internalSelector + for ix := range lsel { + sel = append(sel, lsel[ix]) + } + for _, r := range reqs { + sel = append(sel, r) + } + sort.Sort(ByKey(sel)) + return sel +} + +// Matches for a internalSelector returns true if all +// its Requirements match the input Labels. If any +// Requirement does not match, false is returned. +func (lsel internalSelector) Matches(l Labels) bool { + for ix := range lsel { + if matches := lsel[ix].Matches(l); !matches { + return false + } + } + return true +} + +func (lsel internalSelector) Requirements() (Requirements, bool) { return Requirements(lsel), true } + +// String returns a comma-separated string of all +// the internalSelector Requirements' human-readable strings. +func (lsel internalSelector) String() string { + var reqs []string + for ix := range lsel { + reqs = append(reqs, lsel[ix].String()) + } + return strings.Join(reqs, ",") +} + +// Token represents constant definition for lexer token +type Token int + +const ( + // ErrorToken represents scan error + ErrorToken Token = iota + // EndOfStringToken represents end of string + EndOfStringToken + // ClosedParToken represents close parenthesis + ClosedParToken + // CommaToken represents the comma + CommaToken + // DoesNotExistToken represents logic not + DoesNotExistToken + // DoubleEqualsToken represents double equals + DoubleEqualsToken + // EqualsToken represents equal + EqualsToken + // GreaterThanToken represents greater than + GreaterThanToken + // IdentifierToken represents identifier, e.g. keys and values + IdentifierToken + // InToken represents in + InToken + // LessThanToken represents less than + LessThanToken + // NotEqualsToken represents not equal + NotEqualsToken + // NotInToken represents not in + NotInToken + // OpenParToken represents open parenthesis + OpenParToken +) + +// string2token contains the mapping between lexer Token and token literal +// (except IdentifierToken, EndOfStringToken and ErrorToken since it makes no sense) +var string2token = map[string]Token{ + ")": ClosedParToken, + ",": CommaToken, + "!": DoesNotExistToken, + "==": DoubleEqualsToken, + "=": EqualsToken, + ">": GreaterThanToken, + "in": InToken, + "<": LessThanToken, + "!=": NotEqualsToken, + "notin": NotInToken, + "(": OpenParToken, +} + +// ScannedItem contains the Token and the literal produced by the lexer. +type ScannedItem struct { + tok Token + literal string +} + +// isWhitespace returns true if the rune is a space, tab, or newline. +func isWhitespace(ch byte) bool { + return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' +} + +// isSpecialSymbol detect if the character ch can be an operator +func isSpecialSymbol(ch byte) bool { + switch ch { + case '=', '!', '(', ')', ',', '>', '<': + return true + } + return false +} + +// Lexer represents the Lexer struct for label selector. +// It contains necessary informationt to tokenize the input string +type Lexer struct { + // s stores the string to be tokenized + s string + // pos is the position currently tokenized + pos int +} + +// read return the character currently lexed +// increment the position and check the buffer overflow +func (l *Lexer) read() (b byte) { + b = 0 + if l.pos < len(l.s) { + b = l.s[l.pos] + l.pos++ + } + return b +} + +// unread 'undoes' the last read character +func (l *Lexer) unread() { + l.pos-- +} + +// scanIDOrKeyword scans string to recognize literal token (for example 'in') or an identifier. +func (l *Lexer) scanIDOrKeyword() (tok Token, lit string) { + var buffer []byte +IdentifierLoop: + for { + switch ch := l.read(); { + case ch == 0: + break IdentifierLoop + case isSpecialSymbol(ch) || isWhitespace(ch): + l.unread() + break IdentifierLoop + default: + buffer = append(buffer, ch) + } + } + s := string(buffer) + if val, ok := string2token[s]; ok { // is a literal token? + return val, s + } + return IdentifierToken, s // otherwise is an identifier +} + +// scanSpecialSymbol scans string starting with special symbol. +// special symbol identify non literal operators. "!=", "==", "=" +func (l *Lexer) scanSpecialSymbol() (Token, string) { + lastScannedItem := ScannedItem{} + var buffer []byte +SpecialSymbolLoop: + for { + switch ch := l.read(); { + case ch == 0: + break SpecialSymbolLoop + case isSpecialSymbol(ch): + buffer = append(buffer, ch) + if token, ok := string2token[string(buffer)]; ok { + lastScannedItem = ScannedItem{tok: token, literal: string(buffer)} + } else if lastScannedItem.tok != 0 { + l.unread() + break SpecialSymbolLoop + } + default: + l.unread() + break SpecialSymbolLoop + } + } + if lastScannedItem.tok == 0 { + return ErrorToken, fmt.Sprintf("error expected: keyword found '%s'", buffer) + } + return lastScannedItem.tok, lastScannedItem.literal +} + +// skipWhiteSpaces consumes all blank characters +// returning the first non blank character +func (l *Lexer) skipWhiteSpaces(ch byte) byte { + for { + if !isWhitespace(ch) { + return ch + } + ch = l.read() + } +} + +// Lex returns a pair of Token and the literal +// literal is meaningfull only for IdentifierToken token +func (l *Lexer) Lex() (tok Token, lit string) { + switch ch := l.skipWhiteSpaces(l.read()); { + case ch == 0: + return EndOfStringToken, "" + case isSpecialSymbol(ch): + l.unread() + return l.scanSpecialSymbol() + default: + l.unread() + return l.scanIDOrKeyword() + } +} + +// Parser data structure contains the label selector parser data structure +type Parser struct { + l *Lexer + scannedItems []ScannedItem + position int +} + +// ParserContext represents context during parsing: +// some literal for example 'in' and 'notin' can be +// recognized as operator for example 'x in (a)' but +// it can be recognized as value for example 'value in (in)' +type ParserContext int + +const ( + // KeyAndOperator represents key and operator + KeyAndOperator ParserContext = iota + // Values represents values + Values +) + +// lookahead func returns the current token and string. No increment of current position +func (p *Parser) lookahead(context ParserContext) (Token, string) { + tok, lit := p.scannedItems[p.position].tok, p.scannedItems[p.position].literal + if context == Values { + switch tok { + case InToken, NotInToken: + tok = IdentifierToken + } + } + return tok, lit +} + +// consume returns current token and string. Increments the the position +func (p *Parser) consume(context ParserContext) (Token, string) { + p.position++ + tok, lit := p.scannedItems[p.position-1].tok, p.scannedItems[p.position-1].literal + if context == Values { + switch tok { + case InToken, NotInToken: + tok = IdentifierToken + } + } + return tok, lit +} + +// scan runs through the input string and stores the ScannedItem in an array +// Parser can now lookahead and consume the tokens +func (p *Parser) scan() { + for { + token, literal := p.l.Lex() + p.scannedItems = append(p.scannedItems, ScannedItem{token, literal}) + if token == EndOfStringToken { + break + } + } +} + +// parse runs the left recursive descending algorithm +// on input string. It returns a list of Requirement objects. +func (p *Parser) parse() (internalSelector, error) { + p.scan() // init scannedItems + + var requirements internalSelector + for { + tok, lit := p.lookahead(Values) + switch tok { + case IdentifierToken, DoesNotExistToken: + r, err := p.parseRequirement() + if err != nil { + return nil, fmt.Errorf("unable to parse requirement: %v", err) + } + requirements = append(requirements, *r) + t, l := p.consume(Values) + switch t { + case EndOfStringToken: + return requirements, nil + case CommaToken: + t2, l2 := p.lookahead(Values) + if t2 != IdentifierToken && t2 != DoesNotExistToken { + return nil, fmt.Errorf("found '%s', expected: identifier after ','", l2) + } + default: + return nil, fmt.Errorf("found '%s', expected: ',' or 'end of string'", l) + } + case EndOfStringToken: + return requirements, nil + default: + return nil, fmt.Errorf("found '%s', expected: !, identifier, or 'end of string'", lit) + } + } +} + +func (p *Parser) parseRequirement() (*Requirement, error) { + key, operator, err := p.parseKeyAndInferOperator() + if err != nil { + return nil, err + } + if operator == selection.Exists || operator == selection.DoesNotExist { // operator found lookahead set checked + return NewRequirement(key, operator, []string{}) + } + operator, err = p.parseOperator() + if err != nil { + return nil, err + } + var values sets.String + switch operator { + case selection.In, selection.NotIn: + values, err = p.parseValues() + case selection.Equals, selection.DoubleEquals, selection.NotEquals, selection.GreaterThan, selection.LessThan: + values, err = p.parseExactValue() + } + if err != nil { + return nil, err + } + return NewRequirement(key, operator, values.List()) + +} + +// parseKeyAndInferOperator parse literals. +// in case of no operator '!, in, notin, ==, =, !=' are found +// the 'exists' operator is inferred +func (p *Parser) parseKeyAndInferOperator() (string, selection.Operator, error) { + var operator selection.Operator + tok, literal := p.consume(Values) + if tok == DoesNotExistToken { + operator = selection.DoesNotExist + tok, literal = p.consume(Values) + } + if tok != IdentifierToken { + err := fmt.Errorf("found '%s', expected: identifier", literal) + return "", "", err + } + if err := validateLabelKey(literal); err != nil { + return "", "", err + } + if t, _ := p.lookahead(Values); t == EndOfStringToken || t == CommaToken { + if operator != selection.DoesNotExist { + operator = selection.Exists + } + } + return literal, operator, nil +} + +// parseOperator return operator and eventually matchType +// matchType can be exact +func (p *Parser) parseOperator() (op selection.Operator, err error) { + tok, lit := p.consume(KeyAndOperator) + switch tok { + // DoesNotExistToken shouldn't be here because it's a unary operator, not a binary operator + case InToken: + op = selection.In + case EqualsToken: + op = selection.Equals + case DoubleEqualsToken: + op = selection.DoubleEquals + case GreaterThanToken: + op = selection.GreaterThan + case LessThanToken: + op = selection.LessThan + case NotInToken: + op = selection.NotIn + case NotEqualsToken: + op = selection.NotEquals + default: + return "", fmt.Errorf("found '%s', expected: '=', '!=', '==', 'in', notin'", lit) + } + return op, nil +} + +// parseValues parses the values for set based matching (x,y,z) +func (p *Parser) parseValues() (sets.String, error) { + tok, lit := p.consume(Values) + if tok != OpenParToken { + return nil, fmt.Errorf("found '%s' expected: '('", lit) + } + tok, lit = p.lookahead(Values) + switch tok { + case IdentifierToken, CommaToken: + s, err := p.parseIdentifiersList() // handles general cases + if err != nil { + return s, err + } + if tok, _ = p.consume(Values); tok != ClosedParToken { + return nil, fmt.Errorf("found '%s', expected: ')'", lit) + } + return s, nil + case ClosedParToken: // handles "()" + p.consume(Values) + return sets.NewString(""), nil + default: + return nil, fmt.Errorf("found '%s', expected: ',', ')' or identifier", lit) + } +} + +// parseIdentifiersList parses a (possibly empty) list of +// of comma separated (possibly empty) identifiers +func (p *Parser) parseIdentifiersList() (sets.String, error) { + s := sets.NewString() + for { + tok, lit := p.consume(Values) + switch tok { + case IdentifierToken: + s.Insert(lit) + tok2, lit2 := p.lookahead(Values) + switch tok2 { + case CommaToken: + continue + case ClosedParToken: + return s, nil + default: + return nil, fmt.Errorf("found '%s', expected: ',' or ')'", lit2) + } + case CommaToken: // handled here since we can have "(," + if s.Len() == 0 { + s.Insert("") // to handle (, + } + tok2, _ := p.lookahead(Values) + if tok2 == ClosedParToken { + s.Insert("") // to handle ,) Double "" removed by StringSet + return s, nil + } + if tok2 == CommaToken { + p.consume(Values) + s.Insert("") // to handle ,, Double "" removed by StringSet + } + default: // it can be operator + return s, fmt.Errorf("found '%s', expected: ',', or identifier", lit) + } + } +} + +// parseExactValue parses the only value for exact match style +func (p *Parser) parseExactValue() (sets.String, error) { + s := sets.NewString() + tok, lit := p.lookahead(Values) + if tok == EndOfStringToken || tok == CommaToken { + s.Insert("") + return s, nil + } + tok, lit = p.consume(Values) + if tok == IdentifierToken { + s.Insert(lit) + return s, nil + } + return nil, fmt.Errorf("found '%s', expected: identifier", lit) +} + +// Parse takes a string representing a selector and returns a selector +// object, or an error. This parsing function differs from ParseSelector +// as they parse different selectors with different syntaxes. +// The input will cause an error if it does not follow this form: +// +// ::= | "," +// ::= [!] KEY [ | ] +// ::= "" | +// ::= | +// ::= "notin" +// ::= "in" +// ::= "(" ")" +// ::= VALUE | VALUE "," +// ::= ["="|"=="|"!="] VALUE +// +// KEY is a sequence of one or more characters following [ DNS_SUBDOMAIN "/" ] DNS_LABEL. Max length is 63 characters. +// VALUE is a sequence of zero or more characters "([A-Za-z0-9_-\.])". Max length is 63 characters. +// Delimiter is white space: (' ', '\t') +// Example of valid syntax: +// "x in (foo,,baz),y,z notin ()" +// +// Note: +// (1) Inclusion - " in " - denotes that the KEY exists and is equal to any of the +// VALUEs in its requirement +// (2) Exclusion - " notin " - denotes that the KEY is not equal to any +// of the VALUEs in its requirement or does not exist +// (3) The empty string is a valid VALUE +// (4) A requirement with just a KEY - as in "y" above - denotes that +// the KEY exists and can be any VALUE. +// (5) A requirement with just !KEY requires that the KEY not exist. +// +func Parse(selector string) (Selector, error) { + parsedSelector, err := parse(selector) + if err == nil { + return parsedSelector, nil + } + return nil, err +} + +// parse parses the string representation of the selector and returns the internalSelector struct. +// The callers of this method can then decide how to return the internalSelector struct to their +// callers. This function has two callers now, one returns a Selector interface and the other +// returns a list of requirements. +func parse(selector string) (internalSelector, error) { + p := &Parser{l: &Lexer{s: selector, pos: 0}} + items, err := p.parse() + if err != nil { + return nil, err + } + sort.Sort(ByKey(items)) // sort to grant determistic parsing + return internalSelector(items), err +} + +func validateLabelKey(k string) error { + if errs := validation.IsQualifiedName(k); len(errs) != 0 { + return fmt.Errorf("invalid label key %q: %s", k, strings.Join(errs, "; ")) + } + return nil +} + +func validateLabelValue(v string) error { + if errs := validation.IsValidLabelValue(v); len(errs) != 0 { + return fmt.Errorf("invalid label value: %q: %s", v, strings.Join(errs, "; ")) + } + return nil +} + +// SelectorFromSet returns a Selector which will match exactly the given Set. A +// nil and empty Sets are considered equivalent to Everything(). +func SelectorFromSet(ls Set) Selector { + if ls == nil || len(ls) == 0 { + return internalSelector{} + } + var requirements internalSelector + for label, value := range ls { + r, err := NewRequirement(label, selection.Equals, []string{value}) + if err == nil { + requirements = append(requirements, *r) + } else { + //TODO: double check errors when input comes from serialization? + return internalSelector{} + } + } + // sort to have deterministic string representation + sort.Sort(ByKey(requirements)) + return requirements +} + +// SelectorFromValidatedSet returns a Selector which will match exactly the given Set. +// A nil and empty Sets are considered equivalent to Everything(). +// It assumes that Set is already validated and doesn't do any validation. +func SelectorFromValidatedSet(ls Set) Selector { + if ls == nil || len(ls) == 0 { + return internalSelector{} + } + var requirements internalSelector + for label, value := range ls { + requirements = append(requirements, Requirement{key: label, operator: selection.Equals, strValues: []string{value}}) + } + // sort to have deterministic string representation + sort.Sort(ByKey(requirements)) + return requirements +} + +// ParseToRequirements takes a string representing a selector and returns a list of +// requirements. This function is suitable for those callers that perform additional +// processing on selector requirements. +// See the documentation for Parse() function for more details. +// TODO: Consider exporting the internalSelector type instead. +func ParseToRequirements(selector string) ([]Requirement, error) { + return parse(selector) +} diff --git a/vendor/k8s.io/apimachinery/pkg/labels/selector_test.go b/vendor/k8s.io/apimachinery/pkg/labels/selector_test.go new file mode 100644 index 000000000..995317bd1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/labels/selector_test.go @@ -0,0 +1,575 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/selection" + "k8s.io/apimachinery/pkg/util/sets" +) + +func TestSelectorParse(t *testing.T) { + testGoodStrings := []string{ + "x=a,y=b,z=c", + "", + "x!=a,y=b", + "x=", + "x= ", + "x=,z= ", + "x= ,z= ", + "!x", + "x>1", + "x>1,z<5", + } + testBadStrings := []string{ + "x=a||y=b", + "x==a==b", + "!x=a", + "x1", Set{"x": "2"}) + expectMatch(t, "x<1", Set{"x": "0"}) + expectNoMatch(t, "x=z", Set{}) + expectNoMatch(t, "x=y", Set{"x": "z"}) + expectNoMatch(t, "x=y,z=w", Set{"x": "w", "z": "w"}) + expectNoMatch(t, "x!=y,z!=w", Set{"x": "z", "z": "w"}) + expectNoMatch(t, "x", Set{"y": "z"}) + expectNoMatch(t, "!x", Set{"x": "z"}) + expectNoMatch(t, "x>1", Set{"x": "0"}) + expectNoMatch(t, "x<1", Set{"x": "2"}) + + labelset := Set{ + "foo": "bar", + "baz": "blah", + } + expectMatch(t, "foo=bar", labelset) + expectMatch(t, "baz=blah", labelset) + expectMatch(t, "foo=bar,baz=blah", labelset) + expectNoMatch(t, "foo=blah", labelset) + expectNoMatch(t, "baz=bar", labelset) + expectNoMatch(t, "foo=bar,foobar=bar,baz=blah", labelset) +} + +func expectMatchDirect(t *testing.T, selector, ls Set) { + if !SelectorFromSet(selector).Matches(ls) { + t.Errorf("Wanted %s to match '%s', but it did not.\n", selector, ls) + } +} + +func expectNoMatchDirect(t *testing.T, selector, ls Set) { + if SelectorFromSet(selector).Matches(ls) { + t.Errorf("Wanted '%s' to not match '%s', but it did.", selector, ls) + } +} + +func TestSetMatches(t *testing.T) { + labelset := Set{ + "foo": "bar", + "baz": "blah", + } + expectMatchDirect(t, Set{}, labelset) + expectMatchDirect(t, Set{"foo": "bar"}, labelset) + expectMatchDirect(t, Set{"baz": "blah"}, labelset) + expectMatchDirect(t, Set{"foo": "bar", "baz": "blah"}, labelset) + + //TODO: bad values not handled for the moment in SelectorFromSet + //expectNoMatchDirect(t, Set{"foo": "=blah"}, labelset) + //expectNoMatchDirect(t, Set{"baz": "=bar"}, labelset) + //expectNoMatchDirect(t, Set{"foo": "=bar", "foobar": "bar", "baz": "blah"}, labelset) +} + +func TestNilMapIsValid(t *testing.T) { + selector := Set(nil).AsSelector() + if selector == nil { + t.Errorf("Selector for nil set should be Everything") + } + if !selector.Empty() { + t.Errorf("Selector for nil set should be Empty") + } +} + +func TestSetIsEmpty(t *testing.T) { + if !(Set{}).AsSelector().Empty() { + t.Errorf("Empty set should be empty") + } + if !(NewSelector()).Empty() { + t.Errorf("Nil Selector should be empty") + } +} + +func TestLexer(t *testing.T) { + testcases := []struct { + s string + t Token + }{ + {"", EndOfStringToken}, + {",", CommaToken}, + {"notin", NotInToken}, + {"in", InToken}, + {"=", EqualsToken}, + {"==", DoubleEqualsToken}, + {">", GreaterThanToken}, + {"<", LessThanToken}, + //Note that Lex returns the longest valid token found + {"!", DoesNotExistToken}, + {"!=", NotEqualsToken}, + {"(", OpenParToken}, + {")", ClosedParToken}, + //Non-"special" characters are considered part of an identifier + {"~", IdentifierToken}, + {"||", IdentifierToken}, + } + for _, v := range testcases { + l := &Lexer{s: v.s, pos: 0} + token, lit := l.Lex() + if token != v.t { + t.Errorf("Got %d it should be %d for '%s'", token, v.t, v.s) + } + if v.t != ErrorToken && lit != v.s { + t.Errorf("Got '%s' it should be '%s'", lit, v.s) + } + } +} + +func min(l, r int) (m int) { + m = r + if l < r { + m = l + } + return m +} + +func TestLexerSequence(t *testing.T) { + testcases := []struct { + s string + t []Token + }{ + {"key in ( value )", []Token{IdentifierToken, InToken, OpenParToken, IdentifierToken, ClosedParToken}}, + {"key notin ( value )", []Token{IdentifierToken, NotInToken, OpenParToken, IdentifierToken, ClosedParToken}}, + {"key in ( value1, value2 )", []Token{IdentifierToken, InToken, OpenParToken, IdentifierToken, CommaToken, IdentifierToken, ClosedParToken}}, + {"key", []Token{IdentifierToken}}, + {"!key", []Token{DoesNotExistToken, IdentifierToken}}, + {"()", []Token{OpenParToken, ClosedParToken}}, + {"x in (),y", []Token{IdentifierToken, InToken, OpenParToken, ClosedParToken, CommaToken, IdentifierToken}}, + {"== != (), = notin", []Token{DoubleEqualsToken, NotEqualsToken, OpenParToken, ClosedParToken, CommaToken, EqualsToken, NotInToken}}, + {"key>2", []Token{IdentifierToken, GreaterThanToken, IdentifierToken}}, + {"key<1", []Token{IdentifierToken, LessThanToken, IdentifierToken}}, + } + for _, v := range testcases { + var literals []string + var tokens []Token + l := &Lexer{s: v.s, pos: 0} + for { + token, lit := l.Lex() + if token == EndOfStringToken { + break + } + tokens = append(tokens, token) + literals = append(literals, lit) + } + if len(tokens) != len(v.t) { + t.Errorf("Bad number of tokens for '%s %d, %d", v.s, len(tokens), len(v.t)) + } + for i := 0; i < min(len(tokens), len(v.t)); i++ { + if tokens[i] != v.t[i] { + t.Errorf("Test '%s': Mismatching in token type found '%v' it should be '%v'", v.s, tokens[i], v.t[i]) + } + } + } +} +func TestParserLookahead(t *testing.T) { + testcases := []struct { + s string + t []Token + }{ + {"key in ( value )", []Token{IdentifierToken, InToken, OpenParToken, IdentifierToken, ClosedParToken, EndOfStringToken}}, + {"key notin ( value )", []Token{IdentifierToken, NotInToken, OpenParToken, IdentifierToken, ClosedParToken, EndOfStringToken}}, + {"key in ( value1, value2 )", []Token{IdentifierToken, InToken, OpenParToken, IdentifierToken, CommaToken, IdentifierToken, ClosedParToken, EndOfStringToken}}, + {"key", []Token{IdentifierToken, EndOfStringToken}}, + {"!key", []Token{DoesNotExistToken, IdentifierToken, EndOfStringToken}}, + {"()", []Token{OpenParToken, ClosedParToken, EndOfStringToken}}, + {"", []Token{EndOfStringToken}}, + {"x in (),y", []Token{IdentifierToken, InToken, OpenParToken, ClosedParToken, CommaToken, IdentifierToken, EndOfStringToken}}, + {"== != (), = notin", []Token{DoubleEqualsToken, NotEqualsToken, OpenParToken, ClosedParToken, CommaToken, EqualsToken, NotInToken, EndOfStringToken}}, + {"key>2", []Token{IdentifierToken, GreaterThanToken, IdentifierToken, EndOfStringToken}}, + {"key<1", []Token{IdentifierToken, LessThanToken, IdentifierToken, EndOfStringToken}}, + } + for _, v := range testcases { + p := &Parser{l: &Lexer{s: v.s, pos: 0}, position: 0} + p.scan() + if len(p.scannedItems) != len(v.t) { + t.Errorf("Expected %d items found %d", len(v.t), len(p.scannedItems)) + } + for { + token, lit := p.lookahead(KeyAndOperator) + + token2, lit2 := p.consume(KeyAndOperator) + if token == EndOfStringToken { + break + } + if token != token2 || lit != lit2 { + t.Errorf("Bad values") + } + } + } +} + +func TestRequirementConstructor(t *testing.T) { + requirementConstructorTests := []struct { + Key string + Op selection.Operator + Vals sets.String + Success bool + }{ + {"x", selection.In, nil, false}, + {"x", selection.NotIn, sets.NewString(), false}, + {"x", selection.In, sets.NewString("foo"), true}, + {"x", selection.NotIn, sets.NewString("foo"), true}, + {"x", selection.Exists, nil, true}, + {"x", selection.DoesNotExist, nil, true}, + {"1foo", selection.In, sets.NewString("bar"), true}, + {"1234", selection.In, sets.NewString("bar"), true}, + {"y", selection.GreaterThan, sets.NewString("1"), true}, + {"z", selection.LessThan, sets.NewString("6"), true}, + {"foo", selection.GreaterThan, sets.NewString("bar"), false}, + {"barz", selection.LessThan, sets.NewString("blah"), false}, + {strings.Repeat("a", 254), selection.Exists, nil, false}, //breaks DNS rule that len(key) <= 253 + } + for _, rc := range requirementConstructorTests { + if _, err := NewRequirement(rc.Key, rc.Op, rc.Vals.List()); err == nil && !rc.Success { + t.Errorf("expected error with key:%#v op:%v vals:%v, got no error", rc.Key, rc.Op, rc.Vals) + } else if err != nil && rc.Success { + t.Errorf("expected no error with key:%#v op:%v vals:%v, got:%v", rc.Key, rc.Op, rc.Vals, err) + } + } +} + +func TestToString(t *testing.T) { + var req Requirement + toStringTests := []struct { + In *internalSelector + Out string + Valid bool + }{ + + {&internalSelector{ + getRequirement("x", selection.In, sets.NewString("abc", "def"), t), + getRequirement("y", selection.NotIn, sets.NewString("jkl"), t), + getRequirement("z", selection.Exists, nil, t)}, + "x in (abc,def),y notin (jkl),z", true}, + {&internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString("abc", "def"), t), + getRequirement("y", selection.NotEquals, sets.NewString("jkl"), t), + getRequirement("z", selection.DoesNotExist, nil, t)}, + "x notin (abc,def),y!=jkl,!z", true}, + {&internalSelector{ + getRequirement("x", selection.In, sets.NewString("abc", "def"), t), + req}, // adding empty req for the trailing ',' + "x in (abc,def),", false}, + {&internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString("abc"), t), + getRequirement("y", selection.In, sets.NewString("jkl", "mno"), t), + getRequirement("z", selection.NotIn, sets.NewString(""), t)}, + "x notin (abc),y in (jkl,mno),z notin ()", true}, + {&internalSelector{ + getRequirement("x", selection.Equals, sets.NewString("abc"), t), + getRequirement("y", selection.DoubleEquals, sets.NewString("jkl"), t), + getRequirement("z", selection.NotEquals, sets.NewString("a"), t), + getRequirement("z", selection.Exists, nil, t)}, + "x=abc,y==jkl,z!=a,z", true}, + {&internalSelector{ + getRequirement("x", selection.GreaterThan, sets.NewString("2"), t), + getRequirement("y", selection.LessThan, sets.NewString("8"), t), + getRequirement("z", selection.Exists, nil, t)}, + "x>2,y<8,z", true}, + } + for _, ts := range toStringTests { + if out := ts.In.String(); out == "" && ts.Valid { + t.Errorf("%#v.String() => '%v' expected no error", ts.In, out) + } else if out != ts.Out { + t.Errorf("%#v.String() => '%v' want '%v'", ts.In, out, ts.Out) + } + } +} + +func TestRequirementSelectorMatching(t *testing.T) { + var req Requirement + labelSelectorMatchingTests := []struct { + Set Set + Sel Selector + Match bool + }{ + {Set{"x": "foo", "y": "baz"}, &internalSelector{ + req, + }, false}, + {Set{"x": "foo", "y": "baz"}, &internalSelector{ + getRequirement("x", selection.In, sets.NewString("foo"), t), + getRequirement("y", selection.NotIn, sets.NewString("alpha"), t), + }, true}, + {Set{"x": "foo", "y": "baz"}, &internalSelector{ + getRequirement("x", selection.In, sets.NewString("foo"), t), + getRequirement("y", selection.In, sets.NewString("alpha"), t), + }, false}, + {Set{"y": ""}, &internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString(""), t), + getRequirement("y", selection.Exists, nil, t), + }, true}, + {Set{"y": ""}, &internalSelector{ + getRequirement("x", selection.DoesNotExist, nil, t), + getRequirement("y", selection.Exists, nil, t), + }, true}, + {Set{"y": ""}, &internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString(""), t), + getRequirement("y", selection.DoesNotExist, nil, t), + }, false}, + {Set{"y": "baz"}, &internalSelector{ + getRequirement("x", selection.In, sets.NewString(""), t), + }, false}, + {Set{"z": "2"}, &internalSelector{ + getRequirement("z", selection.GreaterThan, sets.NewString("1"), t), + }, true}, + {Set{"z": "v2"}, &internalSelector{ + getRequirement("z", selection.GreaterThan, sets.NewString("1"), t), + }, false}, + } + for _, lsm := range labelSelectorMatchingTests { + if match := lsm.Sel.Matches(lsm.Set); match != lsm.Match { + t.Errorf("%+v.Matches(%#v) => %v, want %v", lsm.Sel, lsm.Set, match, lsm.Match) + } + } +} + +func TestSetSelectorParser(t *testing.T) { + setSelectorParserTests := []struct { + In string + Out Selector + Match bool + Valid bool + }{ + {"", NewSelector(), true, true}, + {"\rx", internalSelector{ + getRequirement("x", selection.Exists, nil, t), + }, true, true}, + {"this-is-a-dns.domain.com/key-with-dash", internalSelector{ + getRequirement("this-is-a-dns.domain.com/key-with-dash", selection.Exists, nil, t), + }, true, true}, + {"this-is-another-dns.domain.com/key-with-dash in (so,what)", internalSelector{ + getRequirement("this-is-another-dns.domain.com/key-with-dash", selection.In, sets.NewString("so", "what"), t), + }, true, true}, + {"0.1.2.domain/99 notin (10.10.100.1, tick.tack.clock)", internalSelector{ + getRequirement("0.1.2.domain/99", selection.NotIn, sets.NewString("10.10.100.1", "tick.tack.clock"), t), + }, true, true}, + {"foo in (abc)", internalSelector{ + getRequirement("foo", selection.In, sets.NewString("abc"), t), + }, true, true}, + {"x notin\n (abc)", internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString("abc"), t), + }, true, true}, + {"x notin \t (abc,def)", internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString("abc", "def"), t), + }, true, true}, + {"x in (abc,def)", internalSelector{ + getRequirement("x", selection.In, sets.NewString("abc", "def"), t), + }, true, true}, + {"x in (abc,)", internalSelector{ + getRequirement("x", selection.In, sets.NewString("abc", ""), t), + }, true, true}, + {"x in ()", internalSelector{ + getRequirement("x", selection.In, sets.NewString(""), t), + }, true, true}, + {"x notin (abc,,def),bar,z in (),w", internalSelector{ + getRequirement("bar", selection.Exists, nil, t), + getRequirement("w", selection.Exists, nil, t), + getRequirement("x", selection.NotIn, sets.NewString("abc", "", "def"), t), + getRequirement("z", selection.In, sets.NewString(""), t), + }, true, true}, + {"x,y in (a)", internalSelector{ + getRequirement("y", selection.In, sets.NewString("a"), t), + getRequirement("x", selection.Exists, nil, t), + }, false, true}, + {"x=a", internalSelector{ + getRequirement("x", selection.Equals, sets.NewString("a"), t), + }, true, true}, + {"x>1", internalSelector{ + getRequirement("x", selection.GreaterThan, sets.NewString("1"), t), + }, true, true}, + {"x<7", internalSelector{ + getRequirement("x", selection.LessThan, sets.NewString("7"), t), + }, true, true}, + {"x=a,y!=b", internalSelector{ + getRequirement("x", selection.Equals, sets.NewString("a"), t), + getRequirement("y", selection.NotEquals, sets.NewString("b"), t), + }, true, true}, + {"x=a,y!=b,z in (h,i,j)", internalSelector{ + getRequirement("x", selection.Equals, sets.NewString("a"), t), + getRequirement("y", selection.NotEquals, sets.NewString("b"), t), + getRequirement("z", selection.In, sets.NewString("h", "i", "j"), t), + }, true, true}, + {"x=a||y=b", internalSelector{}, false, false}, + {"x,,y", nil, true, false}, + {",x,y", nil, true, false}, + {"x nott in (y)", nil, true, false}, + {"x notin ( )", internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString(""), t), + }, true, true}, + {"x notin (, a)", internalSelector{ + getRequirement("x", selection.NotIn, sets.NewString("", "a"), t), + }, true, true}, + {"a in (xyz),", nil, true, false}, + {"a in (xyz)b notin ()", nil, true, false}, + {"a ", internalSelector{ + getRequirement("a", selection.Exists, nil, t), + }, true, true}, + {"a in (x,y,notin, z,in)", internalSelector{ + getRequirement("a", selection.In, sets.NewString("in", "notin", "x", "y", "z"), t), + }, true, true}, // operator 'in' inside list of identifiers + {"a in (xyz abc)", nil, false, false}, // no comma + {"a notin(", nil, true, false}, // bad formed + {"a (", nil, false, false}, // cpar + {"(", nil, false, false}, // opar + } + + for _, ssp := range setSelectorParserTests { + if sel, err := Parse(ssp.In); err != nil && ssp.Valid { + t.Errorf("Parse(%s) => %v expected no error", ssp.In, err) + } else if err == nil && !ssp.Valid { + t.Errorf("Parse(%s) => %+v expected error", ssp.In, sel) + } else if ssp.Match && !reflect.DeepEqual(sel, ssp.Out) { + t.Errorf("Parse(%s) => parse output '%#v' doesn't match '%#v' expected match", ssp.In, sel, ssp.Out) + } + } +} + +func getRequirement(key string, op selection.Operator, vals sets.String, t *testing.T) Requirement { + req, err := NewRequirement(key, op, vals.List()) + if err != nil { + t.Errorf("NewRequirement(%v, %v, %v) resulted in error:%v", key, op, vals, err) + return Requirement{} + } + return *req +} + +func TestAdd(t *testing.T) { + testCases := []struct { + name string + sel Selector + key string + operator selection.Operator + values []string + refSelector Selector + }{ + { + "keyInOperator", + internalSelector{}, + "key", + selection.In, + []string{"value"}, + internalSelector{Requirement{"key", selection.In, []string{"value"}}}, + }, + { + "keyEqualsOperator", + internalSelector{Requirement{"key", selection.In, []string{"value"}}}, + "key2", + selection.Equals, + []string{"value2"}, + internalSelector{ + Requirement{"key", selection.In, []string{"value"}}, + Requirement{"key2", selection.Equals, []string{"value2"}}, + }, + }, + } + for _, ts := range testCases { + req, err := NewRequirement(ts.key, ts.operator, ts.values) + if err != nil { + t.Errorf("%s - Unable to create labels.Requirement", ts.name) + } + ts.sel = ts.sel.Add(*req) + if !reflect.DeepEqual(ts.sel, ts.refSelector) { + t.Errorf("%s - Expected %v found %v", ts.name, ts.refSelector, ts.sel) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/openapi/BUILD b/vendor/k8s.io/apimachinery/pkg/openapi/BUILD new file mode 100644 index 000000000..4b3dfd4a0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/openapi/BUILD @@ -0,0 +1,21 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "common.go", + "doc.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/emicklei/go-restful:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/openapi/common.go b/vendor/k8s.io/apimachinery/pkg/openapi/common.go new file mode 100644 index 000000000..bfab64a1c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/openapi/common.go @@ -0,0 +1,161 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package openapi + +import ( + "github.com/emicklei/go-restful" + "github.com/go-openapi/spec" + "strings" +) + +// OpenAPIDefinition describes single type. Normally these definitions are auto-generated using gen-openapi. +type OpenAPIDefinition struct { + Schema spec.Schema + Dependencies []string +} + +type ReferenceCallback func(path string) spec.Ref + +// OpenAPIDefinitions is collection of all definitions. +type GetOpenAPIDefinitions func(ReferenceCallback) map[string]OpenAPIDefinition + +// OpenAPIDefinitionGetter gets openAPI definitions for a given type. If a type implements this interface, +// the definition returned by it will be used, otherwise the auto-generated definitions will be used. See +// GetOpenAPITypeFormat for more information about trade-offs of using this interface or GetOpenAPITypeFormat method when +// possible. +type OpenAPIDefinitionGetter interface { + OpenAPIDefinition() *OpenAPIDefinition +} + +// Config is set of configuration for openAPI spec generation. +type Config struct { + // List of supported protocols such as https, http, etc. + ProtocolList []string + + // Info is general information about the API. + Info *spec.Info + + // DefaultResponse will be used if an operation does not have any responses listed. It + // will show up as ... "responses" : {"default" : $DefaultResponse} in the spec. + DefaultResponse *spec.Response + + // CommonResponses will be added as a response to all operation specs. This is a good place to add common + // responses such as authorization failed. + CommonResponses map[int]spec.Response + + // List of webservice's path prefixes to ignore + IgnorePrefixes []string + + // OpenAPIDefinitions should provide definition for all models used by routes. Failure to provide this map + // or any of the models will result in spec generation failure. + GetDefinitions GetOpenAPIDefinitions + + // GetOperationIDAndTags returns operation id and tags for a restful route. It is an optional function to customize operation IDs. + GetOperationIDAndTags func(r *restful.Route) (string, []string, error) + + // GetDefinitionName returns a friendly name for a definition base on the serving path. parameter `name` is the full name of the definition. + // It is an optional function to customize model names. + GetDefinitionName func(name string) (string, spec.Extensions) + + // PostProcessSpec runs after the spec is ready to serve. It allows a final modification to the spec before serving. + PostProcessSpec func(*spec.Swagger) (*spec.Swagger, error) + + // SecurityDefinitions is list of all security definitions for OpenAPI service. If this is not nil, the user of config + // is responsible to provide DefaultSecurity and (maybe) add unauthorized response to CommonResponses. + SecurityDefinitions *spec.SecurityDefinitions + + // DefaultSecurity for all operations. This will pass as spec.SwaggerProps.Security to OpenAPI. + // For most cases, this will be list of acceptable definitions in SecurityDefinitions. + DefaultSecurity []map[string][]string +} + +// This function is a reference for converting go (or any custom type) to a simple open API type,format pair. There are +// two ways to customize spec for a type. If you add it here, a type will be converted to a simple type and the type +// comment (the comment that is added before type definition) will be lost. The spec will still have the property +// comment. The second way is to implement OpenAPIDefinitionGetter interface. That function can customize the spec (so +// the spec does not need to be simple type,format) or can even return a simple type,format (e.g. IntOrString). For simple +// type formats, the benefit of adding OpenAPIDefinitionGetter interface is to keep both type and property documentation. +// Example: +// type Sample struct { +// ... +// // port of the server +// port IntOrString +// ... +// } +// // IntOrString documentation... +// type IntOrString { ... } +// +// Adding IntOrString to this function: +// "port" : { +// format: "string", +// type: "int-or-string", +// Description: "port of the server" +// } +// +// Implement OpenAPIDefinitionGetter for IntOrString: +// +// "port" : { +// $Ref: "#/definitions/IntOrString" +// Description: "port of the server" +// } +// ... +// definitions: +// { +// "IntOrString": { +// format: "string", +// type: "int-or-string", +// Description: "IntOrString documentation..." // new +// } +// } +// +func GetOpenAPITypeFormat(typeName string) (string, string) { + schemaTypeFormatMap := map[string][]string{ + "uint": {"integer", "int32"}, + "uint8": {"integer", "byte"}, + "uint16": {"integer", "int32"}, + "uint32": {"integer", "int64"}, + "uint64": {"integer", "int64"}, + "int": {"integer", "int32"}, + "int8": {"integer", "byte"}, + "int16": {"integer", "int32"}, + "int32": {"integer", "int32"}, + "int64": {"integer", "int64"}, + "byte": {"integer", "byte"}, + "float64": {"number", "double"}, + "float32": {"number", "float"}, + "bool": {"boolean", ""}, + "time.Time": {"string", "date-time"}, + "string": {"string", ""}, + "integer": {"integer", ""}, + "number": {"number", ""}, + "boolean": {"boolean", ""}, + "[]byte": {"string", "byte"}, // base64 encoded characters + "interface{}": {"object", ""}, + } + mapped, ok := schemaTypeFormatMap[typeName] + if !ok { + return "", "" + } + return mapped[0], mapped[1] +} + +func EscapeJsonPointer(p string) string { + // Escaping reference name using rfc6901 + p = strings.Replace(p, "~", "~0", -1) + p = strings.Replace(p, "/", "~1", -1) + return p +} diff --git a/vendor/k8s.io/apimachinery/pkg/openapi/doc.go b/vendor/k8s.io/apimachinery/pkg/openapi/doc.go new file mode 100644 index 000000000..5ed572cc1 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/openapi/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// package openapi holds shared codes and types between open API code generator and spec generator. +package openapi diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/BUILD new file mode 100644 index 000000000..4fd7d5a7e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/BUILD @@ -0,0 +1,68 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["swagger_doc_generator_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "codec.go", + "codec_check.go", + "conversion.go", + "doc.go", + "embedded.go", + "error.go", + "extension.go", + "generated.pb.go", + "helper.go", + "interfaces.go", + "register.go", + "scheme.go", + "scheme_builder.go", + "swagger_doc_generator.go", + "types.go", + "types_proto.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = [ + "conversion_test.go", + "embedded_test.go", + "extension_test.go", + "scheme_test.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/codec.go b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go new file mode 100644 index 000000000..d9748f066 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/codec.go @@ -0,0 +1,316 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "bytes" + "encoding/base64" + "fmt" + "io" + "net/url" + "reflect" + + "k8s.io/apimachinery/pkg/conversion/queryparams" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// codec binds an encoder and decoder. +type codec struct { + Encoder + Decoder +} + +// NewCodec creates a Codec from an Encoder and Decoder. +func NewCodec(e Encoder, d Decoder) Codec { + return codec{e, d} +} + +// Encode is a convenience wrapper for encoding to a []byte from an Encoder +func Encode(e Encoder, obj Object) ([]byte, error) { + // TODO: reuse buffer + buf := &bytes.Buffer{} + if err := e.Encode(obj, buf); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// Decode is a convenience wrapper for decoding data into an Object. +func Decode(d Decoder, data []byte) (Object, error) { + obj, _, err := d.Decode(data, nil, nil) + return obj, err +} + +// DecodeInto performs a Decode into the provided object. +func DecodeInto(d Decoder, data []byte, into Object) error { + out, gvk, err := d.Decode(data, nil, into) + if err != nil { + return err + } + if out != into { + return fmt.Errorf("unable to decode %s into %v", gvk, reflect.TypeOf(into)) + } + return nil +} + +// EncodeOrDie is a version of Encode which will panic instead of returning an error. For tests. +func EncodeOrDie(e Encoder, obj Object) string { + bytes, err := Encode(e, obj) + if err != nil { + panic(err) + } + return string(bytes) +} + +// DefaultingSerializer invokes defaulting after decoding. +type DefaultingSerializer struct { + Defaulter ObjectDefaulter + Decoder Decoder + // Encoder is optional to allow this type to be used as both a Decoder and an Encoder + Encoder +} + +// Decode performs a decode and then allows the defaulter to act on the provided object. +func (d DefaultingSerializer) Decode(data []byte, defaultGVK *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { + obj, gvk, err := d.Decoder.Decode(data, defaultGVK, into) + if err != nil { + return obj, gvk, err + } + d.Defaulter.Default(obj) + return obj, gvk, nil +} + +// UseOrCreateObject returns obj if the canonical ObjectKind returned by the provided typer matches gvk, or +// invokes the ObjectCreator to instantiate a new gvk. Returns an error if the typer cannot find the object. +func UseOrCreateObject(t ObjectTyper, c ObjectCreater, gvk schema.GroupVersionKind, obj Object) (Object, error) { + if obj != nil { + kinds, _, err := t.ObjectKinds(obj) + if err != nil { + return nil, err + } + for _, kind := range kinds { + if gvk == kind { + return obj, nil + } + } + } + return c.New(gvk) +} + +// NoopEncoder converts an Decoder to a Serializer or Codec for code that expects them but only uses decoding. +type NoopEncoder struct { + Decoder +} + +var _ Serializer = NoopEncoder{} + +func (n NoopEncoder) Encode(obj Object, w io.Writer) error { + return fmt.Errorf("encoding is not allowed for this codec: %v", reflect.TypeOf(n.Decoder)) +} + +// NoopDecoder converts an Encoder to a Serializer or Codec for code that expects them but only uses encoding. +type NoopDecoder struct { + Encoder +} + +var _ Serializer = NoopDecoder{} + +func (n NoopDecoder) Decode(data []byte, gvk *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { + return nil, nil, fmt.Errorf("decoding is not allowed for this codec: %v", reflect.TypeOf(n.Encoder)) +} + +// NewParameterCodec creates a ParameterCodec capable of transforming url values into versioned objects and back. +func NewParameterCodec(scheme *Scheme) ParameterCodec { + return ¶meterCodec{ + typer: scheme, + convertor: scheme, + creator: scheme, + } +} + +// parameterCodec implements conversion to and from query parameters and objects. +type parameterCodec struct { + typer ObjectTyper + convertor ObjectConvertor + creator ObjectCreater +} + +var _ ParameterCodec = ¶meterCodec{} + +// DecodeParameters converts the provided url.Values into an object of type From with the kind of into, and then +// converts that object to into (if necessary). Returns an error if the operation cannot be completed. +func (c *parameterCodec) DecodeParameters(parameters url.Values, from schema.GroupVersion, into Object) error { + if len(parameters) == 0 { + return nil + } + targetGVKs, _, err := c.typer.ObjectKinds(into) + if err != nil { + return err + } + for i := range targetGVKs { + if targetGVKs[i].GroupVersion() == from { + return c.convertor.Convert(¶meters, into, nil) + } + } + input, err := c.creator.New(from.WithKind(targetGVKs[0].Kind)) + if err != nil { + return err + } + if err := c.convertor.Convert(¶meters, input, nil); err != nil { + return err + } + return c.convertor.Convert(input, into, nil) +} + +// EncodeParameters converts the provided object into the to version, then converts that object to url.Values. +// Returns an error if conversion is not possible. +func (c *parameterCodec) EncodeParameters(obj Object, to schema.GroupVersion) (url.Values, error) { + gvks, _, err := c.typer.ObjectKinds(obj) + if err != nil { + return nil, err + } + gvk := gvks[0] + if to != gvk.GroupVersion() { + out, err := c.convertor.ConvertToVersion(obj, to) + if err != nil { + return nil, err + } + obj = out + } + return queryparams.Convert(obj) +} + +type base64Serializer struct { + Encoder + Decoder +} + +func NewBase64Serializer(e Encoder, d Decoder) Serializer { + return &base64Serializer{e, d} +} + +func (s base64Serializer) Encode(obj Object, stream io.Writer) error { + e := base64.NewEncoder(base64.StdEncoding, stream) + err := s.Encoder.Encode(obj, e) + e.Close() + return err +} + +func (s base64Serializer) Decode(data []byte, defaults *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { + out := make([]byte, base64.StdEncoding.DecodedLen(len(data))) + n, err := base64.StdEncoding.Decode(out, data) + if err != nil { + return nil, nil, err + } + return s.Decoder.Decode(out[:n], defaults, into) +} + +// SerializerInfoForMediaType returns the first info in types that has a matching media type (which cannot +// include media-type parameters), or the first info with an empty media type, or false if no type matches. +func SerializerInfoForMediaType(types []SerializerInfo, mediaType string) (SerializerInfo, bool) { + for _, info := range types { + if info.MediaType == mediaType { + return info, true + } + } + for _, info := range types { + if len(info.MediaType) == 0 { + return info, true + } + } + return SerializerInfo{}, false +} + +var ( + // InternalGroupVersioner will always prefer the internal version for a given group version kind. + InternalGroupVersioner GroupVersioner = internalGroupVersioner{} + // DisabledGroupVersioner will reject all kinds passed to it. + DisabledGroupVersioner GroupVersioner = disabledGroupVersioner{} +) + +type internalGroupVersioner struct{} + +// KindForGroupVersionKinds returns an internal Kind if one is found, or converts the first provided kind to the internal version. +func (internalGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { + for _, kind := range kinds { + if kind.Version == APIVersionInternal { + return kind, true + } + } + for _, kind := range kinds { + return schema.GroupVersionKind{Group: kind.Group, Version: APIVersionInternal, Kind: kind.Kind}, true + } + return schema.GroupVersionKind{}, false +} + +type disabledGroupVersioner struct{} + +// KindForGroupVersionKinds returns false for any input. +func (disabledGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { + return schema.GroupVersionKind{}, false +} + +// GroupVersioners implements GroupVersioner and resolves to the first exact match for any kind. +type GroupVersioners []GroupVersioner + +// KindForGroupVersionKinds returns the first match of any of the group versioners, or false if no match occured. +func (gvs GroupVersioners) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { + for _, gv := range gvs { + target, ok := gv.KindForGroupVersionKinds(kinds) + if !ok { + continue + } + return target, true + } + return schema.GroupVersionKind{}, false +} + +// Assert that schema.GroupVersion and GroupVersions implement GroupVersioner +var _ GroupVersioner = schema.GroupVersion{} +var _ GroupVersioner = schema.GroupVersions{} +var _ GroupVersioner = multiGroupVersioner{} + +type multiGroupVersioner struct { + target schema.GroupVersion + acceptedGroupKinds []schema.GroupKind +} + +// NewMultiGroupVersioner returns the provided group version for any kind that matches one of the provided group kinds. +// Kind may be empty in the provided group kind, in which case any kind will match. +func NewMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKind) GroupVersioner { + if len(groupKinds) == 0 || (len(groupKinds) == 1 && groupKinds[0].Group == gv.Group) { + return gv + } + return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds} +} + +// KindForGroupVersionKinds returns the target group version if any kind matches any of the original group kinds. It will +// use the originating kind where possible. +func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { + for _, src := range kinds { + for _, kind := range v.acceptedGroupKinds { + if kind.Group != src.Group { + continue + } + if len(kind.Kind) > 0 && kind.Kind != src.Kind { + continue + } + return v.target.WithKind(src.Kind), true + } + } + return schema.GroupVersionKind{}, false +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go b/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go new file mode 100644 index 000000000..510444a4d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go @@ -0,0 +1,48 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "reflect" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// CheckCodec makes sure that the codec can encode objects like internalType, +// decode all of the external types listed, and also decode them into the given +// object. (Will modify internalObject.) (Assumes JSON serialization.) +// TODO: verify that the correct external version is chosen on encode... +func CheckCodec(c Codec, internalType Object, externalTypes ...schema.GroupVersionKind) error { + if _, err := Encode(c, internalType); err != nil { + return fmt.Errorf("Internal type not encodable: %v", err) + } + for _, et := range externalTypes { + exBytes := []byte(fmt.Sprintf(`{"kind":"%v","apiVersion":"%v"}`, et.Kind, et.GroupVersion().String())) + obj, err := Decode(c, exBytes) + if err != nil { + return fmt.Errorf("external type %s not interpretable: %v", et, err) + } + if reflect.TypeOf(obj) != reflect.TypeOf(internalType) { + return fmt.Errorf("decode of external type %s produced: %#v", et, obj) + } + if err = DecodeInto(c, exBytes, internalType); err != nil { + return fmt.Errorf("external type %s not convertible to internal type: %v", et, err) + } + } + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go b/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go new file mode 100644 index 000000000..8eedffc9c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/conversion.go @@ -0,0 +1,98 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Defines conversions between generic types and structs to map query strings +// to struct objects. +package runtime + +import ( + "reflect" + "strconv" + "strings" + + "k8s.io/apimachinery/pkg/conversion" +) + +// JSONKeyMapper uses the struct tags on a conversion to determine the key value for +// the other side. Use when mapping from a map[string]* to a struct or vice versa. +func JSONKeyMapper(key string, sourceTag, destTag reflect.StructTag) (string, string) { + if s := destTag.Get("json"); len(s) > 0 { + return strings.SplitN(s, ",", 2)[0], key + } + if s := sourceTag.Get("json"); len(s) > 0 { + return key, strings.SplitN(s, ",", 2)[0] + } + return key, key +} + +// DefaultStringConversions are helpers for converting []string and string to real values. +var DefaultStringConversions = []interface{}{ + Convert_Slice_string_To_string, + Convert_Slice_string_To_int, + Convert_Slice_string_To_bool, + Convert_Slice_string_To_int64, +} + +func Convert_Slice_string_To_string(input *[]string, out *string, s conversion.Scope) error { + if len(*input) == 0 { + *out = "" + } + *out = (*input)[0] + return nil +} + +func Convert_Slice_string_To_int(input *[]string, out *int, s conversion.Scope) error { + if len(*input) == 0 { + *out = 0 + } + str := (*input)[0] + i, err := strconv.Atoi(str) + if err != nil { + return err + } + *out = i + return nil +} + +// Conver_Slice_string_To_bool will convert a string parameter to boolean. +// Only the absence of a value, a value of "false", or a value of "0" resolve to false. +// Any other value (including empty string) resolves to true. +func Convert_Slice_string_To_bool(input *[]string, out *bool, s conversion.Scope) error { + if len(*input) == 0 { + *out = false + return nil + } + switch strings.ToLower((*input)[0]) { + case "false", "0": + *out = false + default: + *out = true + } + return nil +} + +func Convert_Slice_string_To_int64(input *[]string, out *int64, s conversion.Scope) error { + if len(*input) == 0 { + *out = 0 + } + str := (*input)[0] + i, err := strconv.ParseInt(str, 10, 64) + if err != nil { + return err + } + *out = i + return nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go new file mode 100644 index 000000000..692a5bfbb --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/conversion_test.go @@ -0,0 +1,135 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime_test + +import ( + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type InternalComplex struct { + runtime.TypeMeta + String string + Integer int + Integer64 int64 + Int64 int64 + Bool bool +} + +type ExternalComplex struct { + runtime.TypeMeta `json:",inline"` + String string `json:"string" description:"testing"` + Integer int `json:"int"` + Integer64 int64 `json:",omitempty"` + Int64 int64 + Bool bool `json:"bool"` +} + +func (obj *InternalComplex) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ExternalComplex) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } + +func TestStringMapConversion(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "external"} + + scheme := runtime.NewScheme() + scheme.Log(t) + scheme.AddKnownTypeWithName(internalGV.WithKind("Complex"), &InternalComplex{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Complex"), &ExternalComplex{}) + + testCases := map[string]struct { + input map[string][]string + errFn func(error) bool + expected runtime.Object + }{ + "ignores omitempty": { + input: map[string][]string{ + "String": {"not_used"}, + "string": {"value"}, + "int": {"1"}, + "Integer64": {"2"}, + }, + expected: &ExternalComplex{String: "value", Integer: 1}, + }, + "returns error on bad int": { + input: map[string][]string{ + "int": {"a"}, + }, + errFn: func(err error) bool { return err != nil }, + expected: &ExternalComplex{}, + }, + "parses int64": { + input: map[string][]string{ + "Int64": {"-1"}, + }, + expected: &ExternalComplex{Int64: -1}, + }, + "returns error on bad int64": { + input: map[string][]string{ + "Int64": {"a"}, + }, + errFn: func(err error) bool { return err != nil }, + expected: &ExternalComplex{}, + }, + "parses boolean true": { + input: map[string][]string{ + "bool": {"true"}, + }, + expected: &ExternalComplex{Bool: true}, + }, + "parses boolean any value": { + input: map[string][]string{ + "bool": {"foo"}, + }, + expected: &ExternalComplex{Bool: true}, + }, + "parses boolean false": { + input: map[string][]string{ + "bool": {"false"}, + }, + expected: &ExternalComplex{Bool: false}, + }, + "parses boolean empty value": { + input: map[string][]string{ + "bool": {""}, + }, + expected: &ExternalComplex{Bool: true}, + }, + "parses boolean no value": { + input: map[string][]string{ + "bool": {}, + }, + expected: &ExternalComplex{Bool: false}, + }, + } + + for k, tc := range testCases { + out := &ExternalComplex{} + if err := scheme.Convert(&tc.input, out, nil); (tc.errFn == nil && err != nil) || (tc.errFn != nil && !tc.errFn(err)) { + t.Errorf("%s: unexpected error: %v", k, err) + continue + } else if err != nil { + continue + } + if !reflect.DeepEqual(out, tc.expected) { + t.Errorf("%s: unexpected output: %#v", k, out) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/doc.go b/vendor/k8s.io/apimachinery/pkg/runtime/doc.go new file mode 100644 index 000000000..06b45df66 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/doc.go @@ -0,0 +1,45 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package runtime includes helper functions for working with API objects +// that follow the kubernetes API object conventions, which are: +// +// 0. Your API objects have a common metadata struct member, TypeMeta. +// 1. Your code refers to an internal set of API objects. +// 2. In a separate package, you have an external set of API objects. +// 3. The external set is considered to be versioned, and no breaking +// changes are ever made to it (fields may be added but not changed +// or removed). +// 4. As your api evolves, you'll make an additional versioned package +// with every major change. +// 5. Versioned packages have conversion functions which convert to +// and from the internal version. +// 6. You'll continue to support older versions according to your +// deprecation policy, and you can easily provide a program/library +// to update old versions into new versions because of 5. +// 7. All of your serializations and deserializations are handled in a +// centralized place. +// +// Package runtime provides a conversion helper to make 5 easy, and the +// Encode/Decode/DecodeInto trio to accomplish 7. You can also register +// additional "codecs" which use a version of your choice. It's +// recommended that you register your types with runtime in your +// package's init function. +// +// As a bonus, a few common types useful from all api objects and versions +// are provided in types.go. + +package runtime // import "k8s.io/apimachinery/pkg/runtime" diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go b/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go new file mode 100644 index 000000000..e8825a787 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/embedded.go @@ -0,0 +1,136 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "errors" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type encodable struct { + E Encoder `json:"-"` + obj Object + versions []schema.GroupVersion +} + +func (e encodable) GetObjectKind() schema.ObjectKind { return e.obj.GetObjectKind() } + +// NewEncodable creates an object that will be encoded with the provided codec on demand. +// Provided as a convenience for test cases dealing with internal objects. +func NewEncodable(e Encoder, obj Object, versions ...schema.GroupVersion) Object { + if _, ok := obj.(*Unknown); ok { + return obj + } + return encodable{e, obj, versions} +} + +func (re encodable) UnmarshalJSON(in []byte) error { + return errors.New("runtime.encodable cannot be unmarshalled from JSON") +} + +// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go +func (re encodable) MarshalJSON() ([]byte, error) { + return Encode(re.E, re.obj) +} + +// NewEncodableList creates an object that will be encoded with the provided codec on demand. +// Provided as a convenience for test cases dealing with internal objects. +func NewEncodableList(e Encoder, objects []Object, versions ...schema.GroupVersion) []Object { + out := make([]Object, len(objects)) + for i := range objects { + if _, ok := objects[i].(*Unknown); ok { + out[i] = objects[i] + continue + } + out[i] = NewEncodable(e, objects[i], versions...) + } + return out +} + +func (re *Unknown) UnmarshalJSON(in []byte) error { + if re == nil { + return errors.New("runtime.Unknown: UnmarshalJSON on nil pointer") + } + re.TypeMeta = TypeMeta{} + re.Raw = append(re.Raw[0:0], in...) + re.ContentEncoding = "" + re.ContentType = ContentTypeJSON + return nil +} + +// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go +func (re Unknown) MarshalJSON() ([]byte, error) { + // If ContentType is unset, we assume this is JSON. + if re.ContentType != "" && re.ContentType != ContentTypeJSON { + return nil, errors.New("runtime.Unknown: MarshalJSON on non-json data") + } + if re.Raw == nil { + return []byte("null"), nil + } + return re.Raw, nil +} + +func Convert_runtime_Object_To_runtime_RawExtension(in *Object, out *RawExtension, s conversion.Scope) error { + if in == nil { + out.Raw = []byte("null") + return nil + } + obj := *in + if unk, ok := obj.(*Unknown); ok { + if unk.Raw != nil { + out.Raw = unk.Raw + return nil + } + obj = out.Object + } + if obj == nil { + out.Raw = nil + return nil + } + out.Object = obj + return nil +} + +func Convert_runtime_RawExtension_To_runtime_Object(in *RawExtension, out *Object, s conversion.Scope) error { + if in.Object != nil { + *out = in.Object + return nil + } + data := in.Raw + if len(data) == 0 || (len(data) == 4 && string(data) == "null") { + *out = nil + return nil + } + *out = &Unknown{ + Raw: data, + // TODO: Set ContentEncoding and ContentType appropriately. + // Currently we set ContentTypeJSON to make tests passing. + ContentType: ContentTypeJSON, + } + return nil +} + +func DefaultEmbeddedConversions() []interface{} { + return []interface{}{ + Convert_runtime_Object_To_runtime_RawExtension, + Convert_runtime_RawExtension_To_runtime_Object, + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go new file mode 100644 index 000000000..a70b7f9b6 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/embedded_test.go @@ -0,0 +1,292 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime_test + +import ( + "encoding/json" + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/util/diff" +) + +type EmbeddedTest struct { + runtime.TypeMeta + ID string + Object runtime.Object + EmptyObject runtime.Object +} + +type EmbeddedTestExternal struct { + runtime.TypeMeta `json:",inline"` + ID string `json:"id,omitempty"` + Object runtime.RawExtension `json:"object,omitempty"` + EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"` +} + +type ObjectTest struct { + runtime.TypeMeta + + ID string + Items []runtime.Object +} + +type ObjectTestExternal struct { + runtime.TypeMeta `yaml:",inline" json:",inline"` + + ID string `json:"id,omitempty"` + Items []runtime.RawExtension `json:"items,omitempty"` +} + +func (obj *ObjectTest) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ObjectTestExternal) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *EmbeddedTest) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *EmbeddedTestExternal) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } + +func TestDecodeEmptyRawExtensionAsObject(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "v1test"} + externalGVK := externalGV.WithKind("ObjectTest") + + s := runtime.NewScheme() + s.AddKnownTypes(internalGV, &ObjectTest{}) + s.AddKnownTypeWithName(externalGVK, &ObjectTestExternal{}) + + codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) + + obj, gvk, err := codec.Decode([]byte(`{"kind":"`+externalGVK.Kind+`","apiVersion":"`+externalGV.String()+`","items":[{}]}`), nil, nil) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + test := obj.(*ObjectTest) + if unk, ok := test.Items[0].(*runtime.Unknown); !ok || unk.Kind != "" || unk.APIVersion != "" || string(unk.Raw) != "{}" || unk.ContentType != runtime.ContentTypeJSON { + t.Fatalf("unexpected object: %#v", test.Items[0]) + } + if *gvk != externalGVK { + t.Fatalf("unexpected kind: %#v", gvk) + } + + obj, gvk, err = codec.Decode([]byte(`{"kind":"`+externalGVK.Kind+`","apiVersion":"`+externalGV.String()+`","items":[{"kind":"Other","apiVersion":"v1"}]}`), nil, nil) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + test = obj.(*ObjectTest) + if unk, ok := test.Items[0].(*runtime.Unknown); !ok || unk.Kind != "" || unk.APIVersion != "" || string(unk.Raw) != `{"kind":"Other","apiVersion":"v1"}` || unk.ContentType != runtime.ContentTypeJSON { + t.Fatalf("unexpected object: %#v", test.Items[0]) + } + if *gvk != externalGVK { + t.Fatalf("unexpected kind: %#v", gvk) + } +} + +func TestArrayOfRuntimeObject(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "v1test"} + + s := runtime.NewScheme() + s.AddKnownTypes(internalGV, &EmbeddedTest{}) + s.AddKnownTypeWithName(externalGV.WithKind("EmbeddedTest"), &EmbeddedTestExternal{}) + s.AddKnownTypes(internalGV, &ObjectTest{}) + s.AddKnownTypeWithName(externalGV.WithKind("ObjectTest"), &ObjectTestExternal{}) + + codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) + + innerItems := []runtime.Object{ + &EmbeddedTest{ID: "baz"}, + } + items := []runtime.Object{ + &EmbeddedTest{ID: "foo"}, + &EmbeddedTest{ID: "bar"}, + // TODO: until YAML is removed, this JSON must be in ascending key order to ensure consistent roundtrip serialization + &runtime.Unknown{ + Raw: []byte(`{"apiVersion":"unknown.group/unknown","foo":"bar","kind":"OtherTest"}`), + ContentType: runtime.ContentTypeJSON, + }, + &ObjectTest{ + Items: runtime.NewEncodableList(codec, innerItems), + }, + } + internal := &ObjectTest{ + Items: runtime.NewEncodableList(codec, items), + } + wire, err := runtime.Encode(codec, internal) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + t.Logf("Wire format is:\n%s\n", string(wire)) + + obj := &ObjectTestExternal{} + if err := json.Unmarshal(wire, obj); err != nil { + t.Fatalf("unexpected error: %v", err) + } + t.Logf("exact wire is: %s", string(obj.Items[0].Raw)) + + items[3] = &ObjectTest{Items: innerItems} + internal.Items = items + + decoded, err := runtime.Decode(codec, wire) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + list, err := meta.ExtractList(decoded) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if errs := runtime.DecodeList(list, codec); len(errs) > 0 { + t.Fatalf("unexpected error: %v", errs) + } + + list2, err := meta.ExtractList(list[3]) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if errs := runtime.DecodeList(list2, codec); len(errs) > 0 { + t.Fatalf("unexpected error: %v", errs) + } + if err := meta.SetList(list[3], list2); err != nil { + t.Fatalf("unexpected error: %v", err) + } + + // we want DecodeList to set type meta if possible, even on runtime.Unknown objects + internal.Items[2].(*runtime.Unknown).TypeMeta = runtime.TypeMeta{Kind: "OtherTest", APIVersion: "unknown.group/unknown"} + if e, a := internal.Items, list; !reflect.DeepEqual(e, a) { + t.Errorf("mismatched decoded: %s", diff.ObjectGoPrintSideBySide(e, a)) + } +} + +func TestNestedObject(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "v1test"} + embeddedTestExternalGVK := externalGV.WithKind("EmbeddedTest") + + s := runtime.NewScheme() + s.AddKnownTypes(internalGV, &EmbeddedTest{}) + s.AddKnownTypeWithName(embeddedTestExternalGVK, &EmbeddedTestExternal{}) + + codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) + + inner := &EmbeddedTest{ + ID: "inner", + } + outer := &EmbeddedTest{ + ID: "outer", + Object: runtime.NewEncodable(codec, inner), + } + + wire, err := runtime.Encode(codec, outer) + if err != nil { + t.Fatalf("Unexpected encode error '%v'", err) + } + + t.Logf("Wire format is:\n%v\n", string(wire)) + + decoded, err := runtime.Decode(codec, wire) + if err != nil { + t.Fatalf("Unexpected decode error %v", err) + } + + // for later tests + outer.Object = inner + + if e, a := outer, decoded; reflect.DeepEqual(e, a) { + t.Errorf("Expected unequal %#v %#v", e, a) + } + + obj, err := runtime.Decode(codec, decoded.(*EmbeddedTest).Object.(*runtime.Unknown).Raw) + if err != nil { + t.Fatal(err) + } + decoded.(*EmbeddedTest).Object = obj + if e, a := outer, decoded; !reflect.DeepEqual(e, a) { + t.Errorf("Expected equal %#v %#v", e, a) + } + + // test JSON decoding of the external object, which should preserve + // raw bytes + var externalViaJSON EmbeddedTestExternal + err = json.Unmarshal(wire, &externalViaJSON) + if err != nil { + t.Fatalf("Unexpected decode error %v", err) + } + if externalViaJSON.Kind == "" || externalViaJSON.APIVersion == "" || externalViaJSON.ID != "outer" { + t.Errorf("Expected objects to have type info set, got %#v", externalViaJSON) + } + if !reflect.DeepEqual(externalViaJSON.EmptyObject.Raw, []byte("null")) || len(externalViaJSON.Object.Raw) == 0 { + t.Errorf("Expected deserialization of nested objects into bytes, got %#v", externalViaJSON) + } + + // test JSON decoding, too, since Decode uses yaml unmarshalling. + // Generic Unmarshalling of JSON cannot load the nested objects because there is + // no default schema set. Consumers wishing to get direct JSON decoding must use + // the external representation + var decodedViaJSON EmbeddedTest + err = json.Unmarshal(wire, &decodedViaJSON) + if err == nil { + t.Fatal("Expeceted decode error") + } + if _, ok := err.(*json.UnmarshalTypeError); !ok { + t.Fatalf("Unexpected decode error: %v", err) + } + if a := decodedViaJSON; a.Object != nil || a.EmptyObject != nil { + t.Errorf("Expected embedded objects to be nil: %#v", a) + } +} + +// TestDeepCopyOfRuntimeObject checks to make sure that runtime.Objects's can be passed through DeepCopy with fidelity +func TestDeepCopyOfRuntimeObject(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "v1test"} + embeddedTestExternalGVK := externalGV.WithKind("EmbeddedTest") + + s := runtime.NewScheme() + s.AddKnownTypes(internalGV, &EmbeddedTest{}) + s.AddKnownTypeWithName(embeddedTestExternalGVK, &EmbeddedTestExternal{}) + + original := &EmbeddedTest{ + ID: "outer", + Object: &EmbeddedTest{ + ID: "inner", + }, + } + + codec := serializer.NewCodecFactory(s).LegacyCodec(externalGV) + + originalData, err := runtime.Encode(codec, original) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + t.Logf("originalRole = %v\n", string(originalData)) + + copyOfOriginal, err := s.DeepCopy(original) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + copiedData, err := runtime.Encode(codec, copyOfOriginal.(runtime.Object)) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + t.Logf("copyOfRole = %v\n", string(copiedData)) + + if !reflect.DeepEqual(original, copyOfOriginal) { + t.Errorf("expected \n%v\n, got \n%v", string(originalData), string(copiedData)) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/error.go b/vendor/k8s.io/apimachinery/pkg/runtime/error.go new file mode 100644 index 000000000..21a355707 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/error.go @@ -0,0 +1,113 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "reflect" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type notRegisteredErr struct { + gvk schema.GroupVersionKind + target GroupVersioner + t reflect.Type +} + +func NewNotRegisteredErrForKind(gvk schema.GroupVersionKind) error { + return ¬RegisteredErr{gvk: gvk} +} + +func NewNotRegisteredErrForType(t reflect.Type) error { + return ¬RegisteredErr{t: t} +} + +func NewNotRegisteredErrForTarget(t reflect.Type, target GroupVersioner) error { + return ¬RegisteredErr{t: t, target: target} +} + +func (k *notRegisteredErr) Error() string { + if k.t != nil && k.target != nil { + return fmt.Sprintf("%v is not suitable for converting to %q", k.t, k.target) + } + if k.t != nil { + return fmt.Sprintf("no kind is registered for the type %v", k.t) + } + if len(k.gvk.Kind) == 0 { + return fmt.Sprintf("no version %q has been registered", k.gvk.GroupVersion()) + } + if k.gvk.Version == APIVersionInternal { + return fmt.Sprintf("no kind %q is registered for the internal version of group %q", k.gvk.Kind, k.gvk.Group) + } + + return fmt.Sprintf("no kind %q is registered for version %q", k.gvk.Kind, k.gvk.GroupVersion()) +} + +// IsNotRegisteredError returns true if the error indicates the provided +// object or input data is not registered. +func IsNotRegisteredError(err error) bool { + if err == nil { + return false + } + _, ok := err.(*notRegisteredErr) + return ok +} + +type missingKindErr struct { + data string +} + +func NewMissingKindErr(data string) error { + return &missingKindErr{data} +} + +func (k *missingKindErr) Error() string { + return fmt.Sprintf("Object 'Kind' is missing in '%s'", k.data) +} + +// IsMissingKind returns true if the error indicates that the provided object +// is missing a 'Kind' field. +func IsMissingKind(err error) bool { + if err == nil { + return false + } + _, ok := err.(*missingKindErr) + return ok +} + +type missingVersionErr struct { + data string +} + +// IsMissingVersion returns true if the error indicates that the provided object +// is missing a 'Version' field. +func NewMissingVersionErr(data string) error { + return &missingVersionErr{data} +} + +func (k *missingVersionErr) Error() string { + return fmt.Sprintf("Object 'apiVersion' is missing in '%s'", k.data) +} + +func IsMissingVersion(err error) bool { + if err == nil { + return false + } + _, ok := err.(*missingVersionErr) + return ok +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/extension.go b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go new file mode 100644 index 000000000..4d23ee9ee --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/extension.go @@ -0,0 +1,48 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "encoding/json" + "errors" +) + +func (re *RawExtension) UnmarshalJSON(in []byte) error { + if re == nil { + return errors.New("runtime.RawExtension: UnmarshalJSON on nil pointer") + } + re.Raw = append(re.Raw[0:0], in...) + return nil +} + +// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go +func (re RawExtension) MarshalJSON() ([]byte, error) { + if re.Raw == nil { + // TODO: this is to support legacy behavior of JSONPrinter and YAMLPrinter, which + // expect to call json.Marshal on arbitrary versioned objects (even those not in + // the scheme). pkg/kubectl/resource#AsVersionedObjects and its interaction with + // kubectl get on objects not in the scheme needs to be updated to ensure that the + // objects that are not part of the scheme are correctly put into the right form. + if re.Object != nil { + return json.Marshal(re.Object) + } + return []byte("null"), nil + } + // TODO: Check whether ContentType is actually JSON before returning it. + return re.Raw, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go new file mode 100644 index 000000000..9523f3144 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/extension_test.go @@ -0,0 +1,39 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime_test + +import ( + "encoding/json" + "testing" + + "k8s.io/apimachinery/pkg/runtime" +) + +func TestEmbeddedRawExtensionMarshal(t *testing.T) { + type test struct { + Ext runtime.RawExtension + } + + extension := test{Ext: runtime.RawExtension{Raw: []byte(`{"foo":"bar"}`)}} + data, err := json.Marshal(extension) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if string(data) != `{"Ext":{"foo":"bar"}}` { + t.Errorf("unexpected data: %s", string(data)) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go new file mode 100644 index 000000000..bce8336a8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go @@ -0,0 +1,773 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto +// DO NOT EDIT! + +/* + Package runtime is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto + + It has these top-level messages: + RawExtension + TypeMeta + Unknown +*/ +package runtime + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *RawExtension) Reset() { *m = RawExtension{} } +func (*RawExtension) ProtoMessage() {} +func (*RawExtension) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *TypeMeta) Reset() { *m = TypeMeta{} } +func (*TypeMeta) ProtoMessage() {} +func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *Unknown) Reset() { *m = Unknown{} } +func (*Unknown) ProtoMessage() {} +func (*Unknown) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*RawExtension)(nil), "k8s.io.apimachinery.pkg.runtime.RawExtension") + proto.RegisterType((*TypeMeta)(nil), "k8s.io.apimachinery.pkg.runtime.TypeMeta") + proto.RegisterType((*Unknown)(nil), "k8s.io.apimachinery.pkg.runtime.Unknown") +} +func (m *RawExtension) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RawExtension) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Raw != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Raw))) + i += copy(dAtA[i:], m.Raw) + } + return i, nil +} + +func (m *TypeMeta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TypeMeta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + return i, nil +} + +func (m *Unknown) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Unknown) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TypeMeta.Size())) + n1, err := m.TypeMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.Raw != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Raw))) + i += copy(dAtA[i:], m.Raw) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContentEncoding))) + i += copy(dAtA[i:], m.ContentEncoding) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContentType))) + i += copy(dAtA[i:], m.ContentType) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *RawExtension) Size() (n int) { + var l int + _ = l + if m.Raw != nil { + l = len(m.Raw) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *TypeMeta) Size() (n int) { + var l int + _ = l + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Unknown) Size() (n int) { + var l int + _ = l + l = m.TypeMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Raw != nil { + l = len(m.Raw) + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.ContentEncoding) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContentType) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *RawExtension) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RawExtension{`, + `Raw:` + valueToStringGenerated(this.Raw) + `,`, + `}`, + }, "") + return s +} +func (this *TypeMeta) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TypeMeta{`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `}`, + }, "") + return s +} +func (this *Unknown) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Unknown{`, + `TypeMeta:` + strings.Replace(strings.Replace(this.TypeMeta.String(), "TypeMeta", "TypeMeta", 1), `&`, ``, 1) + `,`, + `Raw:` + valueToStringGenerated(this.Raw) + `,`, + `ContentEncoding:` + fmt.Sprintf("%v", this.ContentEncoding) + `,`, + `ContentType:` + fmt.Sprintf("%v", this.ContentType) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *RawExtension) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RawExtension: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RawExtension: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Raw = append(m.Raw[:0], dAtA[iNdEx:postIndex]...) + if m.Raw == nil { + m.Raw = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TypeMeta) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TypeMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TypeMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Unknown) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Unknown: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Unknown: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TypeMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TypeMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Raw = append(m.Raw[:0], dAtA[iNdEx:postIndex]...) + if m.Raw == nil { + m.Raw = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContentEncoding", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContentEncoding = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContentType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContentType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 395 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x4f, 0x6f, 0xd3, 0x30, + 0x18, 0xc6, 0xe3, 0xb5, 0x52, 0x87, 0x5b, 0x69, 0xc8, 0x1c, 0x08, 0x3b, 0x38, 0x53, 0x4f, 0xec, + 0x30, 0x5b, 0x1a, 0x42, 0xe2, 0xba, 0x4c, 0x93, 0x40, 0x08, 0x09, 0x59, 0xfc, 0x91, 0x38, 0xe1, + 0x26, 0x26, 0xb3, 0x42, 0x5f, 0x47, 0x8e, 0x43, 0xd8, 0x8d, 0x8f, 0xc0, 0xc7, 0xea, 0x71, 0xc7, + 0x9e, 0x2a, 0x1a, 0x3e, 0x04, 0x57, 0x54, 0xd7, 0x2d, 0xa5, 0x08, 0xed, 0x16, 0xbf, 0xcf, 0xf3, + 0x7b, 0xde, 0xe7, 0x0d, 0x7e, 0x5e, 0x3e, 0xab, 0x99, 0x36, 0xbc, 0x6c, 0x26, 0xca, 0x82, 0x72, + 0xaa, 0xe6, 0x5f, 0x14, 0xe4, 0xc6, 0xf2, 0x20, 0xc8, 0x4a, 0x4f, 0x65, 0x76, 0xad, 0x41, 0xd9, + 0x1b, 0x5e, 0x95, 0x05, 0xb7, 0x0d, 0x38, 0x3d, 0x55, 0xbc, 0x50, 0xa0, 0xac, 0x74, 0x2a, 0x67, + 0x95, 0x35, 0xce, 0x90, 0x64, 0x0d, 0xb0, 0x5d, 0x80, 0x55, 0x65, 0xc1, 0x02, 0x70, 0x7c, 0x56, + 0x68, 0x77, 0xdd, 0x4c, 0x58, 0x66, 0xa6, 0xbc, 0x30, 0x85, 0xe1, 0x9e, 0x9b, 0x34, 0x9f, 0xfc, + 0xcb, 0x3f, 0xfc, 0xd7, 0x3a, 0xef, 0xf8, 0xc9, 0xff, 0x0a, 0x34, 0x4e, 0x7f, 0xe6, 0x1a, 0x5c, + 0xed, 0xec, 0x7e, 0x89, 0xf1, 0x29, 0x1e, 0x09, 0xd9, 0x5e, 0x7d, 0x75, 0x0a, 0x6a, 0x6d, 0x80, + 0x3c, 0xc2, 0x3d, 0x2b, 0xdb, 0x18, 0x9d, 0xa0, 0xc7, 0xa3, 0x74, 0xd0, 0x2d, 0x92, 0x9e, 0x90, + 0xad, 0x58, 0xcd, 0xc6, 0x1f, 0xf1, 0xe1, 0x9b, 0x9b, 0x4a, 0xbd, 0x52, 0x4e, 0x92, 0x73, 0x8c, + 0x65, 0xa5, 0xdf, 0x29, 0xbb, 0x82, 0xbc, 0xfb, 0x5e, 0x4a, 0x66, 0x8b, 0x24, 0xea, 0x16, 0x09, + 0xbe, 0x78, 0xfd, 0x22, 0x28, 0x62, 0xc7, 0x45, 0x4e, 0x70, 0xbf, 0xd4, 0x90, 0xc7, 0x07, 0xde, + 0x3d, 0x0a, 0xee, 0xfe, 0x4b, 0x0d, 0xb9, 0xf0, 0xca, 0xf8, 0x17, 0xc2, 0x83, 0xb7, 0x50, 0x82, + 0x69, 0x81, 0xbc, 0xc7, 0x87, 0x2e, 0x6c, 0xf3, 0xf9, 0xc3, 0xf3, 0x53, 0x76, 0xc7, 0x0f, 0x63, + 0x9b, 0x7a, 0xe9, 0xfd, 0x10, 0xbe, 0x2d, 0x2c, 0xb6, 0x61, 0x9b, 0x0b, 0x0f, 0xfe, 0xbd, 0x90, + 0x5c, 0xe0, 0xa3, 0xcc, 0x80, 0x53, 0xe0, 0xae, 0x20, 0x33, 0xb9, 0x86, 0x22, 0xee, 0xf9, 0xb2, + 0x0f, 0x43, 0xde, 0xd1, 0xe5, 0xdf, 0xb2, 0xd8, 0xf7, 0x93, 0xa7, 0x78, 0x18, 0x46, 0xab, 0xd5, + 0x71, 0xdf, 0xe3, 0x0f, 0x02, 0x3e, 0xbc, 0xfc, 0x23, 0x89, 0x5d, 0x5f, 0x7a, 0x36, 0x5b, 0xd2, + 0xe8, 0x76, 0x49, 0xa3, 0xf9, 0x92, 0x46, 0xdf, 0x3a, 0x8a, 0x66, 0x1d, 0x45, 0xb7, 0x1d, 0x45, + 0xf3, 0x8e, 0xa2, 0x1f, 0x1d, 0x45, 0xdf, 0x7f, 0xd2, 0xe8, 0xc3, 0x20, 0x1c, 0xfa, 0x3b, 0x00, + 0x00, 0xff, 0xff, 0x3f, 0x1e, 0x24, 0x09, 0x85, 0x02, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto new file mode 100644 index 000000000..57fc84078 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto @@ -0,0 +1,128 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.apimachinery.pkg.runtime; + +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "runtime"; + +// RawExtension is used to hold extensions in external versions. +// +// To use this, make a field which has RawExtension as its type in your external, versioned +// struct, and Object in your internal struct. You also need to register your +// various plugin types. +// +// // Internal package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.Object `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // External package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // On the wire, the JSON will look something like this: +// { +// "kind":"MyAPIObject", +// "apiVersion":"v1", +// "myPlugin": { +// "kind":"PluginA", +// "aOption":"foo", +// }, +// } +// +// So what happens? Decode first uses json or yaml to unmarshal the serialized data into +// your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. +// The next step is to copy (using pkg/conversion) into the internal struct. The runtime +// package's DefaultScheme has conversion functions installed which will unpack the +// JSON stored in RawExtension, turning it into the correct object type, and storing it +// in the Object. (TODO: In the case where the object is of an unknown type, a +// runtime.Unknown object will be created and stored.) +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +message RawExtension { + // Raw is the underlying serialization of this object. + // + // TODO: Determine how to detect ContentType and ContentEncoding of 'Raw' data. + optional bytes raw = 1; +} + +// TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, +// like this: +// type MyAwesomeAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// ... // other fields +// } +// func (obj *MyAwesomeAPIObject) SetGroupVersionKind(gvk *metav1.GroupVersionKind) { metav1.UpdateTypeMeta(obj,gvk) }; GroupVersionKind() *GroupVersionKind +// +// TypeMeta is provided here for convenience. You may use it directly from this package or define +// your own with the same fields. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +message TypeMeta { + // +optional + optional string apiVersion = 1; + + // +optional + optional string kind = 2; +} + +// Unknown allows api objects with unknown types to be passed-through. This can be used +// to deal with the API objects from a plug-in. Unknown objects still have functioning +// TypeMeta features-- kind, version, etc. +// TODO: Make this object have easy access to field based accessors and settors for +// metadata and field mutatation. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +message Unknown { + optional TypeMeta typeMeta = 1; + + // Raw will hold the complete serialized object which couldn't be matched + // with a registered type. Most likely, nothing should be done with this + // except for passing it through the system. + optional bytes raw = 2; + + // ContentEncoding is encoding used to encode 'Raw' data. + // Unspecified means no encoding. + optional string contentEncoding = 3; + + // ContentType is serialization method used to serialize 'Raw'. + // Unspecified means ContentTypeJSON. + optional string contentType = 4; +} + diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/helper.go b/vendor/k8s.io/apimachinery/pkg/runtime/helper.go new file mode 100644 index 000000000..a6c1a8d34 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/helper.go @@ -0,0 +1,212 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "io" + "reflect" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/errors" +) + +// unsafeObjectConvertor implements ObjectConvertor using the unsafe conversion path. +type unsafeObjectConvertor struct { + *Scheme +} + +var _ ObjectConvertor = unsafeObjectConvertor{} + +// ConvertToVersion converts in to the provided outVersion without copying the input first, which +// is only safe if the output object is not mutated or reused. +func (c unsafeObjectConvertor) ConvertToVersion(in Object, outVersion GroupVersioner) (Object, error) { + return c.Scheme.UnsafeConvertToVersion(in, outVersion) +} + +// UnsafeObjectConvertor performs object conversion without copying the object structure, +// for use when the converted object will not be reused or mutated. Primarily for use within +// versioned codecs, which use the external object for serialization but do not return it. +func UnsafeObjectConvertor(scheme *Scheme) ObjectConvertor { + return unsafeObjectConvertor{scheme} +} + +// SetField puts the value of src, into fieldName, which must be a member of v. +// The value of src must be assignable to the field. +func SetField(src interface{}, v reflect.Value, fieldName string) error { + field := v.FieldByName(fieldName) + if !field.IsValid() { + return fmt.Errorf("couldn't find %v field in %#v", fieldName, v.Interface()) + } + srcValue := reflect.ValueOf(src) + if srcValue.Type().AssignableTo(field.Type()) { + field.Set(srcValue) + return nil + } + if srcValue.Type().ConvertibleTo(field.Type()) { + field.Set(srcValue.Convert(field.Type())) + return nil + } + return fmt.Errorf("couldn't assign/convert %v to %v", srcValue.Type(), field.Type()) +} + +// Field puts the value of fieldName, which must be a member of v, into dest, +// which must be a variable to which this field's value can be assigned. +func Field(v reflect.Value, fieldName string, dest interface{}) error { + field := v.FieldByName(fieldName) + if !field.IsValid() { + return fmt.Errorf("couldn't find %v field in %#v", fieldName, v.Interface()) + } + destValue, err := conversion.EnforcePtr(dest) + if err != nil { + return err + } + if field.Type().AssignableTo(destValue.Type()) { + destValue.Set(field) + return nil + } + if field.Type().ConvertibleTo(destValue.Type()) { + destValue.Set(field.Convert(destValue.Type())) + return nil + } + return fmt.Errorf("couldn't assign/convert %v to %v", field.Type(), destValue.Type()) +} + +// fieldPtr puts the address of fieldName, which must be a member of v, +// into dest, which must be an address of a variable to which this field's +// address can be assigned. +func FieldPtr(v reflect.Value, fieldName string, dest interface{}) error { + field := v.FieldByName(fieldName) + if !field.IsValid() { + return fmt.Errorf("couldn't find %v field in %#v", fieldName, v.Interface()) + } + v, err := conversion.EnforcePtr(dest) + if err != nil { + return err + } + field = field.Addr() + if field.Type().AssignableTo(v.Type()) { + v.Set(field) + return nil + } + if field.Type().ConvertibleTo(v.Type()) { + v.Set(field.Convert(v.Type())) + return nil + } + return fmt.Errorf("couldn't assign/convert %v to %v", field.Type(), v.Type()) +} + +// EncodeList ensures that each object in an array is converted to a Unknown{} in serialized form. +// TODO: accept a content type. +func EncodeList(e Encoder, objects []Object) error { + var errs []error + for i := range objects { + data, err := Encode(e, objects[i]) + if err != nil { + errs = append(errs, err) + continue + } + // TODO: Set ContentEncoding and ContentType. + objects[i] = &Unknown{Raw: data} + } + return errors.NewAggregate(errs) +} + +func decodeListItem(obj *Unknown, decoders []Decoder) (Object, error) { + for _, decoder := range decoders { + // TODO: Decode based on ContentType. + obj, err := Decode(decoder, obj.Raw) + if err != nil { + if IsNotRegisteredError(err) { + continue + } + return nil, err + } + return obj, nil + } + // could not decode, so leave the object as Unknown, but give the decoders the + // chance to set Unknown.TypeMeta if it is available. + for _, decoder := range decoders { + if err := DecodeInto(decoder, obj.Raw, obj); err == nil { + return obj, nil + } + } + return obj, nil +} + +// DecodeList alters the list in place, attempting to decode any objects found in +// the list that have the Unknown type. Any errors that occur are returned +// after the entire list is processed. Decoders are tried in order. +func DecodeList(objects []Object, decoders ...Decoder) []error { + errs := []error(nil) + for i, obj := range objects { + switch t := obj.(type) { + case *Unknown: + decoded, err := decodeListItem(t, decoders) + if err != nil { + errs = append(errs, err) + break + } + objects[i] = decoded + } + } + return errs +} + +// MultiObjectTyper returns the types of objects across multiple schemes in order. +type MultiObjectTyper []ObjectTyper + +var _ ObjectTyper = MultiObjectTyper{} + +func (m MultiObjectTyper) ObjectKinds(obj Object) (gvks []schema.GroupVersionKind, unversionedType bool, err error) { + for _, t := range m { + gvks, unversionedType, err = t.ObjectKinds(obj) + if err == nil { + return + } + } + return +} + +func (m MultiObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { + for _, t := range m { + if t.Recognizes(gvk) { + return true + } + } + return false +} + +// SetZeroValue would set the object of objPtr to zero value of its type. +func SetZeroValue(objPtr Object) error { + v, err := conversion.EnforcePtr(objPtr) + if err != nil { + return err + } + v.Set(reflect.Zero(v.Type())) + return nil +} + +// DefaultFramer is valid for any stream that can read objects serially without +// any separation in the stream. +var DefaultFramer = defaultFramer{} + +type defaultFramer struct{} + +func (defaultFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { return r } +func (defaultFramer) NewFrameWriter(w io.Writer) io.Writer { return w } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go new file mode 100644 index 000000000..fcb18ba11 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/interfaces.go @@ -0,0 +1,251 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "io" + "net/url" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const ( + // APIVersionInternal may be used if you are registering a type that should not + // be considered stable or serialized - it is a convention only and has no + // special behavior in this package. + APIVersionInternal = "__internal" +) + +// GroupVersioner refines a set of possible conversion targets into a single option. +type GroupVersioner interface { + // KindForGroupVersionKinds returns a desired target group version kind for the given input, or returns ok false if no + // target is known. In general, if the return target is not in the input list, the caller is expected to invoke + // Scheme.New(target) and then perform a conversion between the current Go type and the destination Go type. + // Sophisticated implementations may use additional information about the input kinds to pick a destination kind. + KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (target schema.GroupVersionKind, ok bool) +} + +// Encoders write objects to a serialized form +type Encoder interface { + // Encode writes an object to a stream. Implementations may return errors if the versions are + // incompatible, or if no conversion is defined. + Encode(obj Object, w io.Writer) error +} + +// Decoders attempt to load an object from data. +type Decoder interface { + // Decode attempts to deserialize the provided data using either the innate typing of the scheme or the + // default kind, group, and version provided. It returns a decoded object as well as the kind, group, and + // version from the serialized data, or an error. If into is non-nil, it will be used as the target type + // and implementations may choose to use it rather than reallocating an object. However, the object is not + // guaranteed to be populated. The returned object is not guaranteed to match into. If defaults are + // provided, they are applied to the data by default. If no defaults or partial defaults are provided, the + // type of the into may be used to guide conversion decisions. + Decode(data []byte, defaults *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) +} + +// Serializer is the core interface for transforming objects into a serialized format and back. +// Implementations may choose to perform conversion of the object, but no assumptions should be made. +type Serializer interface { + Encoder + Decoder +} + +// Codec is a Serializer that deals with the details of versioning objects. It offers the same +// interface as Serializer, so this is a marker to consumers that care about the version of the objects +// they receive. +type Codec Serializer + +// ParameterCodec defines methods for serializing and deserializing API objects to url.Values and +// performing any necessary conversion. Unlike the normal Codec, query parameters are not self describing +// and the desired version must be specified. +type ParameterCodec interface { + // DecodeParameters takes the given url.Values in the specified group version and decodes them + // into the provided object, or returns an error. + DecodeParameters(parameters url.Values, from schema.GroupVersion, into Object) error + // EncodeParameters encodes the provided object as query parameters or returns an error. + EncodeParameters(obj Object, to schema.GroupVersion) (url.Values, error) +} + +// Framer is a factory for creating readers and writers that obey a particular framing pattern. +type Framer interface { + NewFrameReader(r io.ReadCloser) io.ReadCloser + NewFrameWriter(w io.Writer) io.Writer +} + +// SerializerInfo contains information about a specific serialization format +type SerializerInfo struct { + // MediaType is the value that represents this serializer over the wire. + MediaType string + // EncodesAsText indicates this serializer can be encoded to UTF-8 safely. + EncodesAsText bool + // Serializer is the individual object serializer for this media type. + Serializer Serializer + // PrettySerializer, if set, can serialize this object in a form biased towards + // readability. + PrettySerializer Serializer + // StreamSerializer, if set, describes the streaming serialization format + // for this media type. + StreamSerializer *StreamSerializerInfo +} + +// StreamSerializerInfo contains information about a specific stream serialization format +type StreamSerializerInfo struct { + // EncodesAsText indicates this serializer can be encoded to UTF-8 safely. + EncodesAsText bool + // Serializer is the top level object serializer for this type when streaming + Serializer + // Framer is the factory for retrieving streams that separate objects on the wire + Framer +} + +// NegotiatedSerializer is an interface used for obtaining encoders, decoders, and serializers +// for multiple supported media types. This would commonly be accepted by a server component +// that performs HTTP content negotiation to accept multiple formats. +type NegotiatedSerializer interface { + // SupportedMediaTypes is the media types supported for reading and writing single objects. + SupportedMediaTypes() []SerializerInfo + + // EncoderForVersion returns an encoder that ensures objects being written to the provided + // serializer are in the provided group version. + EncoderForVersion(serializer Encoder, gv GroupVersioner) Encoder + // DecoderForVersion returns a decoder that ensures objects being read by the provided + // serializer are in the provided group version by default. + DecoderToVersion(serializer Decoder, gv GroupVersioner) Decoder +} + +// StorageSerializer is an interface used for obtaining encoders, decoders, and serializers +// that can read and write data at rest. This would commonly be used by client tools that must +// read files, or server side storage interfaces that persist restful objects. +type StorageSerializer interface { + // SupportedMediaTypes are the media types supported for reading and writing objects. + SupportedMediaTypes() []SerializerInfo + + // UniversalDeserializer returns a Serializer that can read objects in multiple supported formats + // by introspecting the data at rest. + UniversalDeserializer() Decoder + + // EncoderForVersion returns an encoder that ensures objects being written to the provided + // serializer are in the provided group version. + EncoderForVersion(serializer Encoder, gv GroupVersioner) Encoder + // DecoderForVersion returns a decoder that ensures objects being read by the provided + // serializer are in the provided group version by default. + DecoderToVersion(serializer Decoder, gv GroupVersioner) Decoder +} + +// NestedObjectEncoder is an optional interface that objects may implement to be given +// an opportunity to encode any nested Objects / RawExtensions during serialization. +type NestedObjectEncoder interface { + EncodeNestedObjects(e Encoder) error +} + +// NestedObjectDecoder is an optional interface that objects may implement to be given +// an opportunity to decode any nested Objects / RawExtensions during serialization. +type NestedObjectDecoder interface { + DecodeNestedObjects(d Decoder) error +} + +/////////////////////////////////////////////////////////////////////////////// +// Non-codec interfaces + +type ObjectDefaulter interface { + // Default takes an object (must be a pointer) and applies any default values. + // Defaulters may not error. + Default(in Object) +} + +type ObjectVersioner interface { + ConvertToVersion(in Object, gv GroupVersioner) (out Object, err error) +} + +// ObjectConvertor converts an object to a different version. +type ObjectConvertor interface { + // Convert attempts to convert one object into another, or returns an error. This method does + // not guarantee the in object is not mutated. The context argument will be passed to + // all nested conversions. + Convert(in, out, context interface{}) error + // ConvertToVersion takes the provided object and converts it the provided version. This + // method does not guarantee that the in object is not mutated. This method is similar to + // Convert() but handles specific details of choosing the correct output version. + ConvertToVersion(in Object, gv GroupVersioner) (out Object, err error) + ConvertFieldLabel(version, kind, label, value string) (string, string, error) +} + +// ObjectTyper contains methods for extracting the APIVersion and Kind +// of objects. +type ObjectTyper interface { + // ObjectKinds returns the all possible group,version,kind of the provided object, true if + // the object is unversioned, or an error if the object is not recognized + // (IsNotRegisteredError will return true). + ObjectKinds(Object) ([]schema.GroupVersionKind, bool, error) + // Recognizes returns true if the scheme is able to handle the provided version and kind, + // or more precisely that the provided version is a possible conversion or decoding + // target. + Recognizes(gvk schema.GroupVersionKind) bool +} + +// ObjectCreater contains methods for instantiating an object by kind and version. +type ObjectCreater interface { + New(kind schema.GroupVersionKind) (out Object, err error) +} + +// ObjectCopier duplicates an object. +type ObjectCopier interface { + // Copy returns an exact copy of the provided Object, or an error if the + // copy could not be completed. + Copy(Object) (Object, error) +} + +// ResourceVersioner provides methods for setting and retrieving +// the resource version from an API object. +type ResourceVersioner interface { + SetResourceVersion(obj Object, version string) error + ResourceVersion(obj Object) (string, error) +} + +// SelfLinker provides methods for setting and retrieving the SelfLink field of an API object. +type SelfLinker interface { + SetSelfLink(obj Object, selfLink string) error + SelfLink(obj Object) (string, error) + + // Knowing Name is sometimes necessary to use a SelfLinker. + Name(obj Object) (string, error) + // Knowing Namespace is sometimes necessary to use a SelfLinker + Namespace(obj Object) (string, error) +} + +// All API types registered with Scheme must support the Object interface. Since objects in a scheme are +// expected to be serialized to the wire, the interface an Object must provide to the Scheme allows +// serializers to set the kind, version, and group the object is represented as. An Object may choose +// to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized. +type Object interface { + GetObjectKind() schema.ObjectKind +} + +// Unstructured objects store values as map[string]interface{}, with only values that can be serialized +// to JSON allowed. +type Unstructured interface { + // IsUnstructuredObject is a marker interface to allow objects that can be serialized but not introspected + // to bypass conversion. + IsUnstructuredObject() + // IsList returns true if this type is a list or matches the list convention - has an array called "items". + IsList() bool + // UnstructuredContent returns a non-nil, mutable map of the contents of this object. Values may be + // []interface{}, map[string]interface{}, or any primitive type. Contents are typically serialized to + // and from JSON. + UnstructuredContent() map[string]interface{} +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/register.go b/vendor/k8s.io/apimachinery/pkg/runtime/register.go new file mode 100644 index 000000000..2ec6db820 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/register.go @@ -0,0 +1,61 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import "k8s.io/apimachinery/pkg/runtime/schema" + +// SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} + +// GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *Unknown) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } + +// GetObjectKind implements Object for VersionedObjects, returning an empty ObjectKind +// interface if no objects are provided, or the ObjectKind interface of the object in the +// highest array position. +func (obj *VersionedObjects) GetObjectKind() schema.ObjectKind { + last := obj.Last() + if last == nil { + return schema.EmptyObjectKind + } + return last.GetObjectKind() +} + +// First returns the leftmost object in the VersionedObjects array, which is usually the +// object as serialized on the wire. +func (obj *VersionedObjects) First() Object { + if len(obj.Objects) == 0 { + return nil + } + return obj.Objects[0] +} + +// Last is the rightmost object in the VersionedObjects array, which is the object after +// all transformations have been applied. This is the same object that would be returned +// by Decode in a normal invocation (without VersionedObjects in the into argument). +func (obj *VersionedObjects) Last() Object { + if len(obj.Objects) == 0 { + return nil + } + return obj.Objects[len(obj.Objects)-1] +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD new file mode 100644 index 000000000..660497064 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["group_version_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "generated.pb.go", + "group_version.go", + "interfaces.go", + ], + tags = ["automanaged"], + deps = ["//vendor/github.com/gogo/protobuf/proto:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go new file mode 100644 index 000000000..e2cc12166 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go @@ -0,0 +1,65 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto +// DO NOT EDIT! + +/* + Package schema is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto + + It has these top-level messages: +*/ +package schema + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 202 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0xce, 0xaf, 0x4e, 0x04, 0x31, + 0x10, 0xc7, 0xf1, 0xd6, 0x20, 0x90, 0xc8, 0x13, 0x23, 0x51, 0xd0, 0x11, 0x18, 0x34, 0x2f, 0x80, + 0xc7, 0x75, 0xf7, 0x86, 0x6e, 0x53, 0xfa, 0x27, 0xed, 0x94, 0x04, 0xc7, 0x23, 0xf0, 0x58, 0x27, + 0x4f, 0xae, 0x64, 0xcb, 0x8b, 0x90, 0xb4, 0x2b, 0x08, 0xc9, 0xb9, 0xfe, 0xd2, 0x7c, 0x26, 0xdf, + 0xeb, 0x67, 0xf7, 0x58, 0x94, 0x8d, 0xe8, 0xea, 0x44, 0x39, 0x10, 0x53, 0xc1, 0x77, 0x0a, 0xc7, + 0x98, 0x71, 0xff, 0xd0, 0xc9, 0x7a, 0x3d, 0x2f, 0x36, 0x50, 0xfe, 0xc0, 0xe4, 0x0c, 0xe6, 0x1a, + 0xd8, 0x7a, 0xc2, 0x32, 0x2f, 0xe4, 0x35, 0x1a, 0x0a, 0x94, 0x35, 0xd3, 0x51, 0xa5, 0x1c, 0x39, + 0xde, 0xdc, 0x0e, 0xa7, 0xfe, 0x3a, 0x95, 0x9c, 0x51, 0xbb, 0x53, 0xc3, 0x1d, 0xee, 0x8d, 0xe5, + 0xa5, 0x4e, 0x6a, 0x8e, 0x1e, 0x4d, 0x34, 0x11, 0x3b, 0x9f, 0xea, 0x6b, 0x5f, 0x7d, 0xf4, 0xd7, + 0x38, 0x7b, 0x78, 0xb8, 0x94, 0x53, 0xd9, 0xbe, 0xa1, 0x0d, 0x5c, 0x38, 0xff, 0x6f, 0x79, 0xba, + 0x3b, 0x6d, 0x20, 0xce, 0x1b, 0x88, 0x75, 0x03, 0xf1, 0xd9, 0x40, 0x9e, 0x1a, 0xc8, 0x73, 0x03, + 0xb9, 0x36, 0x90, 0xdf, 0x0d, 0xe4, 0xd7, 0x0f, 0x88, 0x97, 0xab, 0x51, 0xf4, 0x1b, 0x00, 0x00, + 0xff, 0xff, 0xfd, 0x59, 0x57, 0x93, 0x0b, 0x01, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto new file mode 100644 index 000000000..ebc1a263d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto @@ -0,0 +1,28 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.apimachinery.pkg.runtime.schema; + +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "schema"; + diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go new file mode 100644 index 000000000..1a9bba106 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go @@ -0,0 +1,277 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schema + +import ( + "fmt" + "strings" +) + +// ParseResourceArg takes the common style of string which may be either `resource.group.com` or `resource.version.group.com` +// and parses it out into both possibilities. This code takes no responsibility for knowing which representation was intended +// but with a knowledge of all GroupVersions, calling code can take a very good guess. If there are only two segments, then +// `*GroupVersionResource` is nil. +// `resource.group.com` -> `group=com, version=group, resource=resource` and `group=group.com, resource=resource` +func ParseResourceArg(arg string) (*GroupVersionResource, GroupResource) { + var gvr *GroupVersionResource + if strings.Count(arg, ".") >= 2 { + s := strings.SplitN(arg, ".", 3) + gvr = &GroupVersionResource{Group: s[2], Version: s[1], Resource: s[0]} + } + + return gvr, ParseGroupResource(arg) +} + +// GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +type GroupResource struct { + Group string + Resource string +} + +func (gr GroupResource) WithVersion(version string) GroupVersionResource { + return GroupVersionResource{Group: gr.Group, Version: version, Resource: gr.Resource} +} + +func (gr GroupResource) Empty() bool { + return len(gr.Group) == 0 && len(gr.Resource) == 0 +} + +func (gr *GroupResource) String() string { + if len(gr.Group) == 0 { + return gr.Resource + } + return gr.Resource + "." + gr.Group +} + +// ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed +// for each field. +func ParseGroupResource(gr string) GroupResource { + if i := strings.Index(gr, "."); i == -1 { + return GroupResource{Resource: gr} + } else { + return GroupResource{Group: gr[i+1:], Resource: gr[:i]} + } +} + +// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion +// to avoid automatic coercion. It doesn't use a GroupVersion to avoid custom marshalling +type GroupVersionResource struct { + Group string + Version string + Resource string +} + +func (gvr GroupVersionResource) Empty() bool { + return len(gvr.Group) == 0 && len(gvr.Version) == 0 && len(gvr.Resource) == 0 +} + +func (gvr GroupVersionResource) GroupResource() GroupResource { + return GroupResource{Group: gvr.Group, Resource: gvr.Resource} +} + +func (gvr GroupVersionResource) GroupVersion() GroupVersion { + return GroupVersion{Group: gvr.Group, Version: gvr.Version} +} + +func (gvr *GroupVersionResource) String() string { + return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "") +} + +// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +type GroupKind struct { + Group string + Kind string +} + +func (gk GroupKind) Empty() bool { + return len(gk.Group) == 0 && len(gk.Kind) == 0 +} + +func (gk GroupKind) WithVersion(version string) GroupVersionKind { + return GroupVersionKind{Group: gk.Group, Version: version, Kind: gk.Kind} +} + +func (gk *GroupKind) String() string { + if len(gk.Group) == 0 { + return gk.Kind + } + return gk.Kind + "." + gk.Group +} + +// GroupVersionKind unambiguously identifies a kind. It doesn't anonymously include GroupVersion +// to avoid automatic coercion. It doesn't use a GroupVersion to avoid custom marshalling +type GroupVersionKind struct { + Group string + Version string + Kind string +} + +// Empty returns true if group, version, and kind are empty +func (gvk GroupVersionKind) Empty() bool { + return len(gvk.Group) == 0 && len(gvk.Version) == 0 && len(gvk.Kind) == 0 +} + +func (gvk GroupVersionKind) GroupKind() GroupKind { + return GroupKind{Group: gvk.Group, Kind: gvk.Kind} +} + +func (gvk GroupVersionKind) GroupVersion() GroupVersion { + return GroupVersion{Group: gvk.Group, Version: gvk.Version} +} + +func (gvk GroupVersionKind) String() string { + return gvk.Group + "/" + gvk.Version + ", Kind=" + gvk.Kind +} + +// GroupVersion contains the "group" and the "version", which uniquely identifies the API. +type GroupVersion struct { + Group string + Version string +} + +// Empty returns true if group and version are empty +func (gv GroupVersion) Empty() bool { + return len(gv.Group) == 0 && len(gv.Version) == 0 +} + +// String puts "group" and "version" into a single "group/version" string. For the legacy v1 +// it returns "v1". +func (gv GroupVersion) String() string { + // special case the internal apiVersion for the legacy kube types + if gv.Empty() { + return "" + } + + // special case of "v1" for backward compatibility + if len(gv.Group) == 0 && gv.Version == "v1" { + return gv.Version + } + if len(gv.Group) > 0 { + return gv.Group + "/" + gv.Version + } + return gv.Version +} + +// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false +// if none of the options match the group. It prefers a match to group and version over just group. +// TODO: Move GroupVersion to a package under pkg/runtime, since it's used by scheme. +// TODO: Introduce an adapter type between GroupVersion and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) +// in fewer places. +func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) { + for _, gvk := range kinds { + if gvk.Group == gv.Group && gvk.Version == gv.Version { + return gvk, true + } + } + for _, gvk := range kinds { + if gvk.Group == gv.Group { + return gv.WithKind(gvk.Kind), true + } + } + return GroupVersionKind{}, false +} + +// ParseGroupVersion turns "group/version" string into a GroupVersion struct. It reports error +// if it cannot parse the string. +func ParseGroupVersion(gv string) (GroupVersion, error) { + // this can be the internal version for the legacy kube types + // TODO once we've cleared the last uses as strings, this special case should be removed. + if (len(gv) == 0) || (gv == "/") { + return GroupVersion{}, nil + } + + switch strings.Count(gv, "/") { + case 0: + return GroupVersion{"", gv}, nil + case 1: + i := strings.Index(gv, "/") + return GroupVersion{gv[:i], gv[i+1:]}, nil + default: + return GroupVersion{}, fmt.Errorf("unexpected GroupVersion string: %v", gv) + } +} + +// WithKind creates a GroupVersionKind based on the method receiver's GroupVersion and the passed Kind. +func (gv GroupVersion) WithKind(kind string) GroupVersionKind { + return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} +} + +// WithResource creates a GroupVersionResource based on the method receiver's GroupVersion and the passed Resource. +func (gv GroupVersion) WithResource(resource string) GroupVersionResource { + return GroupVersionResource{Group: gv.Group, Version: gv.Version, Resource: resource} +} + +// GroupVersions can be used to represent a set of desired group versions. +// TODO: Move GroupVersions to a package under pkg/runtime, since it's used by scheme. +// TODO: Introduce an adapter type between GroupVersions and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) +// in fewer places. +type GroupVersions []GroupVersion + +// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false +// if none of the options match the group. +func (gvs GroupVersions) KindForGroupVersionKinds(kinds []GroupVersionKind) (GroupVersionKind, bool) { + var targets []GroupVersionKind + for _, gv := range gvs { + target, ok := gv.KindForGroupVersionKinds(kinds) + if !ok { + continue + } + targets = append(targets, target) + } + if len(targets) == 1 { + return targets[0], true + } + if len(targets) > 1 { + return bestMatch(kinds, targets), true + } + return GroupVersionKind{}, false +} + +// bestMatch tries to pick best matching GroupVersionKind and falls back to the first +// found if no exact match exists. +func bestMatch(kinds []GroupVersionKind, targets []GroupVersionKind) GroupVersionKind { + for _, gvk := range targets { + for _, k := range kinds { + if k == gvk { + return k + } + } + } + return targets[0] +} + +// ToAPIVersionAndKind is a convenience method for satisfying runtime.Object on types that +// do not use TypeMeta. +func (gvk *GroupVersionKind) ToAPIVersionAndKind() (string, string) { + if gvk == nil { + return "", "" + } + return gvk.GroupVersion().String(), gvk.Kind +} + +// FromAPIVersionAndKind returns a GVK representing the provided fields for types that +// do not use TypeMeta. This method exists to support test types and legacy serializations +// that have a distinct group and kind. +// TODO: further reduce usage of this method. +func FromAPIVersionAndKind(apiVersion, kind string) GroupVersionKind { + if gv, err := ParseGroupVersion(apiVersion); err == nil { + return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} + } + return GroupVersionKind{Kind: kind} +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version_test.go new file mode 100644 index 000000000..51f26df7f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version_test.go @@ -0,0 +1,136 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schema + +import ( + "testing" +) + +func TestGroupVersionParse(t *testing.T) { + tests := []struct { + input string + out GroupVersion + err func(error) bool + }{ + {input: "v1", out: GroupVersion{Version: "v1"}}, + {input: "v2", out: GroupVersion{Version: "v2"}}, + {input: "/v1", out: GroupVersion{Version: "v1"}}, + {input: "v1/", out: GroupVersion{Group: "v1"}}, + {input: "/v1/", err: func(err error) bool { return err.Error() == "unexpected GroupVersion string: /v1/" }}, + {input: "v1/a", out: GroupVersion{Group: "v1", Version: "a"}}, + } + for i, test := range tests { + out, err := ParseGroupVersion(test.input) + if test.err == nil && err != nil || err == nil && test.err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + if test.err != nil && !test.err(err) { + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + if out != test.out { + t.Errorf("%d: unexpected output: %#v", i, out) + } + } +} + +func TestGroupResourceParse(t *testing.T) { + tests := []struct { + input string + out GroupResource + }{ + {input: "v1", out: GroupResource{Resource: "v1"}}, + {input: ".v1", out: GroupResource{Group: "v1"}}, + {input: "v1.", out: GroupResource{Resource: "v1"}}, + {input: "v1.a", out: GroupResource{Group: "a", Resource: "v1"}}, + {input: "b.v1.a", out: GroupResource{Group: "v1.a", Resource: "b"}}, + } + for i, test := range tests { + out := ParseGroupResource(test.input) + if out != test.out { + t.Errorf("%d: unexpected output: %#v", i, out) + } + } +} + +func TestParseResourceArg(t *testing.T) { + tests := []struct { + input string + gvr *GroupVersionResource + gr GroupResource + }{ + {input: "v1", gr: GroupResource{Resource: "v1"}}, + {input: ".v1", gr: GroupResource{Group: "v1"}}, + {input: "v1.", gr: GroupResource{Resource: "v1"}}, + {input: "v1.a", gr: GroupResource{Group: "a", Resource: "v1"}}, + {input: "b.v1.a", gvr: &GroupVersionResource{Group: "a", Version: "v1", Resource: "b"}, gr: GroupResource{Group: "v1.a", Resource: "b"}}, + } + for i, test := range tests { + gvr, gr := ParseResourceArg(test.input) + if (gvr != nil && test.gvr == nil) || (gvr == nil && test.gvr != nil) || (test.gvr != nil && *gvr != *test.gvr) { + t.Errorf("%d: unexpected output: %#v", i, gvr) + } + if gr != test.gr { + t.Errorf("%d: unexpected output: %#v", i, gr) + } + } +} + +func TestKindForGroupVersionKinds(t *testing.T) { + gvks := GroupVersions{ + GroupVersion{Group: "batch", Version: "v1"}, + GroupVersion{Group: "batch", Version: "v2alpha1"}, + GroupVersion{Group: "policy", Version: "v1beta1"}, + } + cases := []struct { + input []GroupVersionKind + target GroupVersionKind + ok bool + }{ + { + input: []GroupVersionKind{{Group: "batch", Version: "v2alpha1", Kind: "ScheduledJob"}}, + target: GroupVersionKind{Group: "batch", Version: "v2alpha1", Kind: "ScheduledJob"}, + ok: true, + }, + { + input: []GroupVersionKind{{Group: "batch", Version: "v3alpha1", Kind: "CronJob"}}, + target: GroupVersionKind{Group: "batch", Version: "v1", Kind: "CronJob"}, + ok: true, + }, + { + input: []GroupVersionKind{{Group: "policy", Version: "v1beta1", Kind: "PodDisruptionBudget"}}, + target: GroupVersionKind{Group: "policy", Version: "v1beta1", Kind: "PodDisruptionBudget"}, + ok: true, + }, + { + input: []GroupVersionKind{{Group: "apps", Version: "v1alpha1", Kind: "StatefulSet"}}, + target: GroupVersionKind{}, + ok: false, + }, + } + + for i, c := range cases { + target, ok := gvks.KindForGroupVersionKinds(c.input) + if c.target != target { + t.Errorf("%d: unexpected target: %v, expected %v", i, target, c.target) + } + if c.ok != ok { + t.Errorf("%d: unexpected ok: %v, expected %v", i, ok, c.ok) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go new file mode 100644 index 000000000..b57066845 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/interfaces.go @@ -0,0 +1,40 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schema + +// All objects that are serialized from a Scheme encode their type information. This interface is used +// by serialization to set type information from the Scheme onto the serialized version of an object. +// For objects that cannot be serialized or have unique requirements, this interface may be a no-op. +type ObjectKind interface { + // SetGroupVersionKind sets or clears the intended serialized kind of an object. Passing kind nil + // should clear the current setting. + SetGroupVersionKind(kind GroupVersionKind) + // GroupVersionKind returns the stored group, version, and kind of an object, or nil if the object does + // not expose or provide these fields. + GroupVersionKind() GroupVersionKind +} + +// EmptyObjectKind implements the ObjectKind interface as a noop +var EmptyObjectKind = emptyObjectKind{} + +type emptyObjectKind struct{} + +// SetGroupVersionKind implements the ObjectKind interface +func (emptyObjectKind) SetGroupVersionKind(gvk GroupVersionKind) {} + +// GroupVersionKind implements the ObjectKind interface +func (emptyObjectKind) GroupVersionKind() GroupVersionKind { return GroupVersionKind{} } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go new file mode 100644 index 000000000..6c9475fa0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go @@ -0,0 +1,577 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "net/url" + "reflect" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// Scheme defines methods for serializing and deserializing API objects, a type +// registry for converting group, version, and kind information to and from Go +// schemas, and mappings between Go schemas of different versions. A scheme is the +// foundation for a versioned API and versioned configuration over time. +// +// In a Scheme, a Type is a particular Go struct, a Version is a point-in-time +// identifier for a particular representation of that Type (typically backwards +// compatible), a Kind is the unique name for that Type within the Version, and a +// Group identifies a set of Versions, Kinds, and Types that evolve over time. An +// Unversioned Type is one that is not yet formally bound to a type and is promised +// to be backwards compatible (effectively a "v1" of a Type that does not expect +// to break in the future). +// +// Schemes are not expected to change at runtime and are only threadsafe after +// registration is complete. +type Scheme struct { + // versionMap allows one to figure out the go type of an object with + // the given version and name. + gvkToType map[schema.GroupVersionKind]reflect.Type + + // typeToGroupVersion allows one to find metadata for a given go object. + // The reflect.Type we index by should *not* be a pointer. + typeToGVK map[reflect.Type][]schema.GroupVersionKind + + // unversionedTypes are transformed without conversion in ConvertToVersion. + unversionedTypes map[reflect.Type]schema.GroupVersionKind + + // unversionedKinds are the names of kinds that can be created in the context of any group + // or version + // TODO: resolve the status of unversioned types. + unversionedKinds map[string]reflect.Type + + // Map from version and resource to the corresponding func to convert + // resource field labels in that version to internal version. + fieldLabelConversionFuncs map[string]map[string]FieldLabelConversionFunc + + // defaulterFuncs is an array of interfaces to be called with an object to provide defaulting + // the provided object must be a pointer. + defaulterFuncs map[reflect.Type]func(interface{}) + + // converter stores all registered conversion functions. It also has + // default coverting behavior. + converter *conversion.Converter + + // cloner stores all registered copy functions. It also has default + // deep copy behavior. + cloner *conversion.Cloner +} + +// Function to convert a field selector to internal representation. +type FieldLabelConversionFunc func(label, value string) (internalLabel, internalValue string, err error) + +// NewScheme creates a new Scheme. This scheme is pluggable by default. +func NewScheme() *Scheme { + s := &Scheme{ + gvkToType: map[schema.GroupVersionKind]reflect.Type{}, + typeToGVK: map[reflect.Type][]schema.GroupVersionKind{}, + unversionedTypes: map[reflect.Type]schema.GroupVersionKind{}, + unversionedKinds: map[string]reflect.Type{}, + cloner: conversion.NewCloner(), + fieldLabelConversionFuncs: map[string]map[string]FieldLabelConversionFunc{}, + defaulterFuncs: map[reflect.Type]func(interface{}){}, + } + s.converter = conversion.NewConverter(s.nameFunc) + + s.AddConversionFuncs(DefaultEmbeddedConversions()...) + + // Enable map[string][]string conversions by default + if err := s.AddConversionFuncs(DefaultStringConversions...); err != nil { + panic(err) + } + if err := s.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil { + panic(err) + } + if err := s.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil { + panic(err) + } + return s +} + +// nameFunc returns the name of the type that we wish to use to determine when two types attempt +// a conversion. Defaults to the go name of the type if the type is not registered. +func (s *Scheme) nameFunc(t reflect.Type) string { + // find the preferred names for this type + gvks, ok := s.typeToGVK[t] + if !ok { + return t.Name() + } + + for _, gvk := range gvks { + internalGV := gvk.GroupVersion() + internalGV.Version = "__internal" // this is hacky and maybe should be passed in + internalGVK := internalGV.WithKind(gvk.Kind) + + if internalType, exists := s.gvkToType[internalGVK]; exists { + return s.typeToGVK[internalType][0].Kind + } + } + + return gvks[0].Kind +} + +// fromScope gets the input version, desired output version, and desired Scheme +// from a conversion.Scope. +func (s *Scheme) fromScope(scope conversion.Scope) *Scheme { + return s +} + +// Converter allows access to the converter for the scheme +func (s *Scheme) Converter() *conversion.Converter { + return s.converter +} + +// AddUnversionedTypes registers the provided types as "unversioned", which means that they follow special rules. +// Whenever an object of this type is serialized, it is serialized with the provided group version and is not +// converted. Thus unversioned objects are expected to remain backwards compatible forever, as if they were in an +// API group and version that would never be updated. +// +// TODO: there is discussion about removing unversioned and replacing it with objects that are manifest into +// every version with particular schemas. Resolve this method at that point. +func (s *Scheme) AddUnversionedTypes(version schema.GroupVersion, types ...Object) { + s.AddKnownTypes(version, types...) + for _, obj := range types { + t := reflect.TypeOf(obj).Elem() + gvk := version.WithKind(t.Name()) + s.unversionedTypes[t] = gvk + if old, ok := s.unversionedKinds[gvk.Kind]; ok && t != old { + panic(fmt.Sprintf("%v.%v has already been registered as unversioned kind %q - kind name must be unique", old.PkgPath(), old.Name(), gvk)) + } + s.unversionedKinds[gvk.Kind] = t + } +} + +// AddKnownTypes registers all types passed in 'types' as being members of version 'version'. +// All objects passed to types should be pointers to structs. The name that go reports for +// the struct becomes the "kind" field when encoding. Version may not be empty - use the +// APIVersionInternal constant if you have a type that does not have a formal version. +func (s *Scheme) AddKnownTypes(gv schema.GroupVersion, types ...Object) { + for _, obj := range types { + t := reflect.TypeOf(obj) + if t.Kind() != reflect.Ptr { + panic("All types must be pointers to structs.") + } + t = t.Elem() + s.AddKnownTypeWithName(gv.WithKind(t.Name()), obj) + } +} + +// AddKnownTypeWithName is like AddKnownTypes, but it lets you specify what this type should +// be encoded as. Useful for testing when you don't want to make multiple packages to define +// your structs. Version may not be empty - use the APIVersionInternal constant if you have a +// type that does not have a formal version. +func (s *Scheme) AddKnownTypeWithName(gvk schema.GroupVersionKind, obj Object) { + t := reflect.TypeOf(obj) + if len(gvk.Version) == 0 { + panic(fmt.Sprintf("version is required on all types: %s %v", gvk, t)) + } + if t.Kind() != reflect.Ptr { + panic("All types must be pointers to structs.") + } + t = t.Elem() + if t.Kind() != reflect.Struct { + panic("All types must be pointers to structs.") + } + + if oldT, found := s.gvkToType[gvk]; found && oldT != t { + panic(fmt.Sprintf("Double registration of different types for %v: old=%v.%v, new=%v.%v", gvk, oldT.PkgPath(), oldT.Name(), t.PkgPath(), t.Name())) + } + + s.gvkToType[gvk] = t + + for _, existingGvk := range s.typeToGVK[t] { + if existingGvk == gvk { + return + } + } + s.typeToGVK[t] = append(s.typeToGVK[t], gvk) +} + +// KnownTypes returns the types known for the given version. +func (s *Scheme) KnownTypes(gv schema.GroupVersion) map[string]reflect.Type { + types := make(map[string]reflect.Type) + for gvk, t := range s.gvkToType { + if gv != gvk.GroupVersion() { + continue + } + + types[gvk.Kind] = t + } + return types +} + +// AllKnownTypes returns the all known types. +func (s *Scheme) AllKnownTypes() map[schema.GroupVersionKind]reflect.Type { + return s.gvkToType +} + +// ObjectKind returns the group,version,kind of the go object and true if this object +// is considered unversioned, or an error if it's not a pointer or is unregistered. +func (s *Scheme) ObjectKind(obj Object) (schema.GroupVersionKind, bool, error) { + gvks, unversionedType, err := s.ObjectKinds(obj) + if err != nil { + return schema.GroupVersionKind{}, false, err + } + return gvks[0], unversionedType, nil +} + +// ObjectKinds returns all possible group,version,kind of the go object, true if the +// object is considered unversioned, or an error if it's not a pointer or is unregistered. +func (s *Scheme) ObjectKinds(obj Object) ([]schema.GroupVersionKind, bool, error) { + v, err := conversion.EnforcePtr(obj) + if err != nil { + return nil, false, err + } + t := v.Type() + + gvks, ok := s.typeToGVK[t] + if !ok { + return nil, false, NewNotRegisteredErrForType(t) + } + _, unversionedType := s.unversionedTypes[t] + + return gvks, unversionedType, nil +} + +// Recognizes returns true if the scheme is able to handle the provided group,version,kind +// of an object. +func (s *Scheme) Recognizes(gvk schema.GroupVersionKind) bool { + _, exists := s.gvkToType[gvk] + return exists +} + +func (s *Scheme) IsUnversioned(obj Object) (bool, bool) { + v, err := conversion.EnforcePtr(obj) + if err != nil { + return false, false + } + t := v.Type() + + if _, ok := s.typeToGVK[t]; !ok { + return false, false + } + _, ok := s.unversionedTypes[t] + return ok, true +} + +// New returns a new API object of the given version and name, or an error if it hasn't +// been registered. The version and kind fields must be specified. +func (s *Scheme) New(kind schema.GroupVersionKind) (Object, error) { + if t, exists := s.gvkToType[kind]; exists { + return reflect.New(t).Interface().(Object), nil + } + + if t, exists := s.unversionedKinds[kind.Kind]; exists { + return reflect.New(t).Interface().(Object), nil + } + return nil, NewNotRegisteredErrForKind(kind) +} + +// AddGenericConversionFunc adds a function that accepts the ConversionFunc call pattern +// (for two conversion types) to the converter. These functions are checked first during +// a normal conversion, but are otherwise not called. Use AddConversionFuncs when registering +// typed conversions. +func (s *Scheme) AddGenericConversionFunc(fn conversion.GenericConversionFunc) { + s.converter.AddGenericConversionFunc(fn) +} + +// Log sets a logger on the scheme. For test purposes only +func (s *Scheme) Log(l conversion.DebugLogger) { + s.converter.Debug = l +} + +// AddIgnoredConversionType identifies a pair of types that should be skipped by +// conversion (because the data inside them is explicitly dropped during +// conversion). +func (s *Scheme) AddIgnoredConversionType(from, to interface{}) error { + return s.converter.RegisterIgnoredConversion(from, to) +} + +// AddConversionFuncs adds functions to the list of conversion functions. The given +// functions should know how to convert between two of your API objects, or their +// sub-objects. We deduce how to call these functions from the types of their two +// parameters; see the comment for Converter.Register. +// +// Note that, if you need to copy sub-objects that didn't change, you can use the +// conversion.Scope object that will be passed to your conversion function. +// Additionally, all conversions started by Scheme will set the SrcVersion and +// DestVersion fields on the Meta object. Example: +// +// s.AddConversionFuncs( +// func(in *InternalObject, out *ExternalObject, scope conversion.Scope) error { +// // You can depend on Meta() being non-nil, and this being set to +// // the source version, e.g., "" +// s.Meta().SrcVersion +// // You can depend on this being set to the destination version, +// // e.g., "v1". +// s.Meta().DestVersion +// // Call scope.Convert to copy sub-fields. +// s.Convert(&in.SubFieldThatMoved, &out.NewLocation.NewName, 0) +// return nil +// }, +// ) +// +// (For more detail about conversion functions, see Converter.Register's comment.) +// +// Also note that the default behavior, if you don't add a conversion function, is to +// sanely copy fields that have the same names and same type names. It's OK if the +// destination type has extra fields, but it must not remove any. So you only need to +// add conversion functions for things with changed/removed fields. +func (s *Scheme) AddConversionFuncs(conversionFuncs ...interface{}) error { + for _, f := range conversionFuncs { + if err := s.converter.RegisterConversionFunc(f); err != nil { + return err + } + } + return nil +} + +// Similar to AddConversionFuncs, but registers conversion functions that were +// automatically generated. +func (s *Scheme) AddGeneratedConversionFuncs(conversionFuncs ...interface{}) error { + for _, f := range conversionFuncs { + if err := s.converter.RegisterGeneratedConversionFunc(f); err != nil { + return err + } + } + return nil +} + +// AddDeepCopyFuncs adds a function to the list of deep-copy functions. +// For the expected format of deep-copy function, see the comment for +// Copier.RegisterDeepCopyFunction. +func (s *Scheme) AddDeepCopyFuncs(deepCopyFuncs ...interface{}) error { + for _, f := range deepCopyFuncs { + if err := s.cloner.RegisterDeepCopyFunc(f); err != nil { + return err + } + } + return nil +} + +// Similar to AddDeepCopyFuncs, but registers deep-copy functions that were +// automatically generated. +func (s *Scheme) AddGeneratedDeepCopyFuncs(deepCopyFuncs ...conversion.GeneratedDeepCopyFunc) error { + for _, fn := range deepCopyFuncs { + if err := s.cloner.RegisterGeneratedDeepCopyFunc(fn); err != nil { + return err + } + } + return nil +} + +// AddFieldLabelConversionFunc adds a conversion function to convert field selectors +// of the given kind from the given version to internal version representation. +func (s *Scheme) AddFieldLabelConversionFunc(version, kind string, conversionFunc FieldLabelConversionFunc) error { + if s.fieldLabelConversionFuncs[version] == nil { + s.fieldLabelConversionFuncs[version] = map[string]FieldLabelConversionFunc{} + } + + s.fieldLabelConversionFuncs[version][kind] = conversionFunc + return nil +} + +// AddStructFieldConversion allows you to specify a mechanical copy for a moved +// or renamed struct field without writing an entire conversion function. See +// the comment in conversion.Converter.SetStructFieldCopy for parameter details. +// Call as many times as needed, even on the same fields. +func (s *Scheme) AddStructFieldConversion(srcFieldType interface{}, srcFieldName string, destFieldType interface{}, destFieldName string) error { + return s.converter.SetStructFieldCopy(srcFieldType, srcFieldName, destFieldType, destFieldName) +} + +// RegisterInputDefaults sets the provided field mapping function and field matching +// as the defaults for the provided input type. The fn may be nil, in which case no +// mapping will happen by default. Use this method to register a mechanism for handling +// a specific input type in conversion, such as a map[string]string to structs. +func (s *Scheme) RegisterInputDefaults(in interface{}, fn conversion.FieldMappingFunc, defaultFlags conversion.FieldMatchingFlags) error { + return s.converter.RegisterInputDefaults(in, fn, defaultFlags) +} + +// AddTypeDefaultingFuncs registers a function that is passed a pointer to an +// object and can default fields on the object. These functions will be invoked +// when Default() is called. The function will never be called unless the +// defaulted object matches srcType. If this function is invoked twice with the +// same srcType, the fn passed to the later call will be used instead. +func (s *Scheme) AddTypeDefaultingFunc(srcType Object, fn func(interface{})) { + s.defaulterFuncs[reflect.TypeOf(srcType)] = fn +} + +// Default sets defaults on the provided Object. +func (s *Scheme) Default(src Object) { + if fn, ok := s.defaulterFuncs[reflect.TypeOf(src)]; ok { + fn(src) + } +} + +// Copy does a deep copy of an API object. +func (s *Scheme) Copy(src Object) (Object, error) { + dst, err := s.DeepCopy(src) + if err != nil { + return nil, err + } + return dst.(Object), nil +} + +// Performs a deep copy of the given object. +func (s *Scheme) DeepCopy(src interface{}) (interface{}, error) { + return s.cloner.DeepCopy(src) +} + +// Convert will attempt to convert in into out. Both must be pointers. For easy +// testing of conversion functions. Returns an error if the conversion isn't +// possible. You can call this with types that haven't been registered (for example, +// a to test conversion of types that are nested within registered types). The +// context interface is passed to the convertor. +// TODO: identify whether context should be hidden, or behind a formal context/scope +// interface +func (s *Scheme) Convert(in, out interface{}, context interface{}) error { + flags, meta := s.generateConvertMeta(in) + meta.Context = context + if flags == 0 { + flags = conversion.AllowDifferentFieldTypeNames + } + return s.converter.Convert(in, out, flags, meta) +} + +// Converts the given field label and value for an kind field selector from +// versioned representation to an unversioned one. +func (s *Scheme) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { + if s.fieldLabelConversionFuncs[version] == nil { + return "", "", fmt.Errorf("No field label conversion function found for version: %s", version) + } + conversionFunc, ok := s.fieldLabelConversionFuncs[version][kind] + if !ok { + return "", "", fmt.Errorf("No field label conversion function found for version %s and kind %s", version, kind) + } + return conversionFunc(label, value) +} + +// ConvertToVersion attempts to convert an input object to its matching Kind in another +// version within this scheme. Will return an error if the provided version does not +// contain the inKind (or a mapping by name defined with AddKnownTypeWithName). Will also +// return an error if the conversion does not result in a valid Object being +// returned. Passes target down to the conversion methods as the Context on the scope. +func (s *Scheme) ConvertToVersion(in Object, target GroupVersioner) (Object, error) { + return s.convertToVersion(true, in, target) +} + +// UnsafeConvertToVersion will convert in to the provided target if such a conversion is possible, +// but does not guarantee the output object does not share fields with the input object. It attempts to be as +// efficient as possible when doing conversion. +func (s *Scheme) UnsafeConvertToVersion(in Object, target GroupVersioner) (Object, error) { + return s.convertToVersion(false, in, target) +} + +// convertToVersion handles conversion with an optional copy. +func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) (Object, error) { + // determine the incoming kinds with as few allocations as possible. + t := reflect.TypeOf(in) + if t.Kind() != reflect.Ptr { + return nil, fmt.Errorf("only pointer types may be converted: %v", t) + } + t = t.Elem() + if t.Kind() != reflect.Struct { + return nil, fmt.Errorf("only pointers to struct types may be converted: %v", t) + } + kinds, ok := s.typeToGVK[t] + if !ok || len(kinds) == 0 { + return nil, NewNotRegisteredErrForType(t) + } + + gvk, ok := target.KindForGroupVersionKinds(kinds) + if !ok { + // try to see if this type is listed as unversioned (for legacy support) + // TODO: when we move to server API versions, we should completely remove the unversioned concept + if unversionedKind, ok := s.unversionedTypes[t]; ok { + if gvk, ok := target.KindForGroupVersionKinds([]schema.GroupVersionKind{unversionedKind}); ok { + return copyAndSetTargetKind(copy, s, in, gvk) + } + return copyAndSetTargetKind(copy, s, in, unversionedKind) + } + + return nil, NewNotRegisteredErrForTarget(t, target) + } + + // target wants to use the existing type, set kind and return (no conversion necessary) + for _, kind := range kinds { + if gvk == kind { + return copyAndSetTargetKind(copy, s, in, gvk) + } + } + + // type is unversioned, no conversion necessary + if unversionedKind, ok := s.unversionedTypes[t]; ok { + if gvk, ok := target.KindForGroupVersionKinds([]schema.GroupVersionKind{unversionedKind}); ok { + return copyAndSetTargetKind(copy, s, in, gvk) + } + return copyAndSetTargetKind(copy, s, in, unversionedKind) + } + + out, err := s.New(gvk) + if err != nil { + return nil, err + } + + if copy { + copied, err := s.Copy(in) + if err != nil { + return nil, err + } + in = copied + } + + flags, meta := s.generateConvertMeta(in) + meta.Context = target + if err := s.converter.Convert(in, out, flags, meta); err != nil { + return nil, err + } + + setTargetKind(out, gvk) + return out, nil +} + +// generateConvertMeta constructs the meta value we pass to Convert. +func (s *Scheme) generateConvertMeta(in interface{}) (conversion.FieldMatchingFlags, *conversion.Meta) { + return s.converter.DefaultMeta(reflect.TypeOf(in)) +} + +// copyAndSetTargetKind performs a conditional copy before returning the object, or an error if copy was not successful. +func copyAndSetTargetKind(copy bool, copier ObjectCopier, obj Object, kind schema.GroupVersionKind) (Object, error) { + if copy { + copied, err := copier.Copy(obj) + if err != nil { + return nil, err + } + obj = copied + } + setTargetKind(obj, kind) + return obj, nil +} + +// setTargetKind sets the kind on an object, taking into account whether the target kind is the internal version. +func setTargetKind(obj Object, kind schema.GroupVersionKind) { + if kind.Version == APIVersionInternal { + // internal is a special case + // TODO: look at removing the need to special case this + obj.GetObjectKind().SetGroupVersionKind(schema.GroupVersionKind{}) + return + } + obj.GetObjectKind().SetGroupVersionKind(kind) +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go new file mode 100644 index 000000000..944db4818 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_builder.go @@ -0,0 +1,48 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +// SchemeBuilder collects functions that add things to a scheme. It's to allow +// code to compile without explicitly referencing generated types. You should +// declare one in each package that will have generated deep copy or conversion +// functions. +type SchemeBuilder []func(*Scheme) error + +// AddToScheme applies all the stored functions to the scheme. A non-nil error +// indicates that one function failed and the attempt was abandoned. +func (sb *SchemeBuilder) AddToScheme(s *Scheme) error { + for _, f := range *sb { + if err := f(s); err != nil { + return err + } + } + return nil +} + +// Register adds a scheme setup function to the list. +func (sb *SchemeBuilder) Register(funcs ...func(*Scheme) error) { + for _, f := range funcs { + *sb = append(*sb, f) + } +} + +// NewSchemeBuilder calls Register for you. +func NewSchemeBuilder(funcs ...func(*Scheme) error) SchemeBuilder { + var sb SchemeBuilder + sb.Register(funcs...) + return sb +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go new file mode 100644 index 000000000..8b56ece22 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/scheme_test.go @@ -0,0 +1,1011 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime_test + +import ( + "reflect" + "strings" + "testing" + + "github.com/google/gofuzz" + flag "github.com/spf13/pflag" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/util/diff" +) + +var fuzzIters = flag.Int("fuzz-iters", 50, "How many fuzzing iterations to do.") + +type InternalSimple struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +type ExternalSimple struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +func (obj *InternalSimple) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ExternalSimple) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } + +func TestScheme(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} + + scheme := runtime.NewScheme() + scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + + // If set, would clear TypeMeta during conversion. + //scheme.AddIgnoredConversionType(&TypeMeta{}, &TypeMeta{}) + + // test that scheme is an ObjectTyper + var _ runtime.ObjectTyper = scheme + + internalToExternalCalls := 0 + externalToInternalCalls := 0 + + // Register functions to verify that scope.Meta() gets set correctly. + err := scheme.AddConversionFuncs( + func(in *InternalSimple, out *ExternalSimple, scope conversion.Scope) error { + scope.Convert(&in.TypeMeta, &out.TypeMeta, 0) + scope.Convert(&in.TestString, &out.TestString, 0) + internalToExternalCalls++ + return nil + }, + func(in *ExternalSimple, out *InternalSimple, scope conversion.Scope) error { + scope.Convert(&in.TypeMeta, &out.TypeMeta, 0) + scope.Convert(&in.TestString, &out.TestString, 0) + externalToInternalCalls++ + return nil + }, + ) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + codecs := serializer.NewCodecFactory(scheme) + codec := codecs.LegacyCodec(externalGV) + info, _ := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), runtime.ContentTypeJSON) + jsonserializer := info.Serializer + + simple := &InternalSimple{ + TestString: "foo", + } + + // Test Encode, Decode, DecodeInto, and DecodeToVersion + obj := runtime.Object(simple) + data, err := runtime.Encode(codec, obj) + if err != nil { + t.Fatal(err) + } + + obj2, err := runtime.Decode(codec, data) + if err != nil { + t.Fatal(err) + } + if _, ok := obj2.(*InternalSimple); !ok { + t.Fatalf("Got wrong type") + } + if e, a := simple, obj2; !reflect.DeepEqual(e, a) { + t.Errorf("Expected:\n %#v,\n Got:\n %#v", e, a) + } + + obj3 := &InternalSimple{} + if err := runtime.DecodeInto(codec, data, obj3); err != nil { + t.Fatal(err) + } + // clearing TypeMeta is a function of the scheme, which we do not test here (ConvertToVersion + // does not automatically clear TypeMeta anymore). + simple.TypeMeta = runtime.TypeMeta{Kind: "Simple", APIVersion: externalGV.String()} + if e, a := simple, obj3; !reflect.DeepEqual(e, a) { + t.Errorf("Expected:\n %#v,\n Got:\n %#v", e, a) + } + + obj4, err := runtime.Decode(jsonserializer, data) + if err != nil { + t.Fatal(err) + } + if _, ok := obj4.(*ExternalSimple); !ok { + t.Fatalf("Got wrong type") + } + + // Test Convert + external := &ExternalSimple{} + err = scheme.Convert(simple, external, nil) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if e, a := simple.TestString, external.TestString; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + + // Encode and Convert should each have caused an increment. + if e, a := 2, internalToExternalCalls; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + // DecodeInto and Decode should each have caused an increment because of a conversion + if e, a := 2, externalToInternalCalls; e != a { + t.Errorf("Expected %v, got %v", e, a) + } +} + +func TestBadJSONRejection(t *testing.T) { + scheme := runtime.NewScheme() + codecs := serializer.NewCodecFactory(scheme) + info, _ := runtime.SerializerInfoForMediaType(codecs.SupportedMediaTypes(), runtime.ContentTypeJSON) + jsonserializer := info.Serializer + + badJSONMissingKind := []byte(`{ }`) + if _, err := runtime.Decode(jsonserializer, badJSONMissingKind); err == nil { + t.Errorf("Did not reject despite lack of kind field: %s", badJSONMissingKind) + } + badJSONUnknownType := []byte(`{"kind": "bar"}`) + if _, err1 := runtime.Decode(jsonserializer, badJSONUnknownType); err1 == nil { + t.Errorf("Did not reject despite use of unknown type: %s", badJSONUnknownType) + } + /*badJSONKindMismatch := []byte(`{"kind": "Pod"}`) + if err2 := DecodeInto(badJSONKindMismatch, &Node{}); err2 == nil { + t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch) + }*/ +} + +type ExtensionA struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +type ExtensionB struct { + runtime.TypeMeta `json:",inline"` + TestString string `json:"testString"` +} + +type ExternalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.RawExtension `json:"extension"` +} + +type InternalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.Object `json:"extension"` +} + +type ExternalOptionalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.RawExtension `json:"extension,omitempty"` +} + +type InternalOptionalExtensionType struct { + runtime.TypeMeta `json:",inline"` + Extension runtime.Object `json:"extension,omitempty"` +} + +func (obj *ExtensionA) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ExtensionB) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ExternalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *InternalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ExternalOptionalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *InternalOptionalExtensionType) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } + +func TestExternalToInternalMapping(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} + + scheme := runtime.NewScheme() + scheme.AddKnownTypeWithName(internalGV.WithKind("OptionalExtensionType"), &InternalOptionalExtensionType{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("OptionalExtensionType"), &ExternalOptionalExtensionType{}) + + codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) + + table := []struct { + obj runtime.Object + encoded string + }{ + { + &InternalOptionalExtensionType{Extension: nil}, + `{"kind":"OptionalExtensionType","apiVersion":"` + externalGV.String() + `"}`, + }, + } + + for i, item := range table { + gotDecoded, err := runtime.Decode(codec, []byte(item.encoded)) + if err != nil { + t.Errorf("unexpected error '%v' (%v)", err, item.encoded) + } else if e, a := item.obj, gotDecoded; !reflect.DeepEqual(e, a) { + t.Errorf("%d: unexpected objects:\n%s", i, diff.ObjectGoPrintSideBySide(e, a)) + } + } +} + +func TestExtensionMapping(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} + + scheme := runtime.NewScheme() + scheme.AddKnownTypeWithName(internalGV.WithKind("ExtensionType"), &InternalExtensionType{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("OptionalExtensionType"), &InternalOptionalExtensionType{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("ExtensionType"), &ExternalExtensionType{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("OptionalExtensionType"), &ExternalOptionalExtensionType{}) + + // register external first when the object is the same in both schemes, so ObjectVersionAndKind reports the + // external version. + scheme.AddKnownTypeWithName(externalGV.WithKind("A"), &ExtensionA{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("B"), &ExtensionB{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("A"), &ExtensionA{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("B"), &ExtensionB{}) + + codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) + + table := []struct { + obj runtime.Object + expected runtime.Object + encoded string + }{ + { + &InternalExtensionType{ + Extension: runtime.NewEncodable(codec, &ExtensionA{TestString: "foo"}), + }, + &InternalExtensionType{ + Extension: &runtime.Unknown{ + Raw: []byte(`{"apiVersion":"test.group/testExternal","kind":"A","testString":"foo"}`), + ContentType: runtime.ContentTypeJSON, + }, + }, + // apiVersion is set in the serialized object for easier consumption by clients + `{"apiVersion":"` + externalGV.String() + `","kind":"ExtensionType","extension":{"apiVersion":"test.group/testExternal","kind":"A","testString":"foo"}} +`, + }, { + &InternalExtensionType{Extension: runtime.NewEncodable(codec, &ExtensionB{TestString: "bar"})}, + &InternalExtensionType{ + Extension: &runtime.Unknown{ + Raw: []byte(`{"apiVersion":"test.group/testExternal","kind":"B","testString":"bar"}`), + ContentType: runtime.ContentTypeJSON, + }, + }, + // apiVersion is set in the serialized object for easier consumption by clients + `{"apiVersion":"` + externalGV.String() + `","kind":"ExtensionType","extension":{"apiVersion":"test.group/testExternal","kind":"B","testString":"bar"}} +`, + }, { + &InternalExtensionType{Extension: nil}, + &InternalExtensionType{ + Extension: nil, + }, + `{"apiVersion":"` + externalGV.String() + `","kind":"ExtensionType","extension":null} +`, + }, + } + + for i, item := range table { + gotEncoded, err := runtime.Encode(codec, item.obj) + if err != nil { + t.Errorf("unexpected error '%v' (%#v)", err, item.obj) + } else if e, a := item.encoded, string(gotEncoded); e != a { + t.Errorf("expected\n%#v\ngot\n%#v\n", e, a) + } + + gotDecoded, err := runtime.Decode(codec, []byte(item.encoded)) + if err != nil { + t.Errorf("unexpected error '%v' (%v)", err, item.encoded) + } else if e, a := item.expected, gotDecoded; !reflect.DeepEqual(e, a) { + t.Errorf("%d: unexpected objects:\n%s", i, diff.ObjectGoPrintSideBySide(e, a)) + } + } +} + +func TestEncode(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} + + scheme := runtime.NewScheme() + scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + + codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) + + test := &InternalSimple{ + TestString: "I'm the same", + } + obj := runtime.Object(test) + data, err := runtime.Encode(codec, obj) + obj2, gvk, err2 := codec.Decode(data, nil, nil) + if err != nil || err2 != nil { + t.Fatalf("Failure: '%v' '%v'", err, err2) + } + if _, ok := obj2.(*InternalSimple); !ok { + t.Fatalf("Got wrong type") + } + if !reflect.DeepEqual(obj2, test) { + t.Errorf("Expected:\n %#v,\n Got:\n %#v", test, obj2) + } + if !reflect.DeepEqual(gvk, &schema.GroupVersionKind{Group: "test.group", Version: "testExternal", Kind: "Simple"}) { + t.Errorf("unexpected gvk returned by decode: %#v", gvk) + } +} + +func TestUnversionedTypes(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Group: "test.group", Version: "testExternal"} + otherGV := schema.GroupVersion{Group: "group", Version: "other"} + + scheme := runtime.NewScheme() + scheme.AddUnversionedTypes(externalGV, &InternalSimple{}) + scheme.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) + scheme.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + scheme.AddKnownTypeWithName(otherGV.WithKind("Simple"), &ExternalSimple{}) + + codec := serializer.NewCodecFactory(scheme).LegacyCodec(externalGV) + + if unv, ok := scheme.IsUnversioned(&InternalSimple{}); !unv || !ok { + t.Fatalf("type not unversioned and in scheme: %t %t", unv, ok) + } + + kinds, _, err := scheme.ObjectKinds(&InternalSimple{}) + if err != nil { + t.Fatal(err) + } + kind := kinds[0] + if kind != externalGV.WithKind("InternalSimple") { + t.Fatalf("unexpected: %#v", kind) + } + + test := &InternalSimple{ + TestString: "I'm the same", + } + obj := runtime.Object(test) + data, err := runtime.Encode(codec, obj) + if err != nil { + t.Fatal(err) + } + obj2, gvk, err := codec.Decode(data, nil, nil) + if err != nil { + t.Fatal(err) + } + if _, ok := obj2.(*InternalSimple); !ok { + t.Fatalf("Got wrong type") + } + if !reflect.DeepEqual(obj2, test) { + t.Errorf("Expected:\n %#v,\n Got:\n %#v", test, obj2) + } + // object is serialized as an unversioned object (in the group and version it was defined in) + if !reflect.DeepEqual(gvk, &schema.GroupVersionKind{Group: "test.group", Version: "testExternal", Kind: "InternalSimple"}) { + t.Errorf("unexpected gvk returned by decode: %#v", gvk) + } + + // when serialized to a different group, the object is kept in its preferred name + codec = serializer.NewCodecFactory(scheme).LegacyCodec(otherGV) + data, err = runtime.Encode(codec, obj) + if err != nil { + t.Fatal(err) + } + if string(data) != `{"apiVersion":"test.group/testExternal","kind":"InternalSimple","testString":"I'm the same"}`+"\n" { + t.Errorf("unexpected data: %s", data) + } +} + +// Test a weird version/kind embedding format. +type MyWeirdCustomEmbeddedVersionKindField struct { + ID string `json:"ID,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + Z string `json:"Z,omitempty"` + Y uint64 `json:"Y,omitempty"` +} + +type TestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]TestType2 `json:"N,omitempty"` + O *TestType2 `json:"O,omitempty"` + P []TestType2 `json:"Q,omitempty"` +} + +type TestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +type ExternalTestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} +type ExternalTestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]ExternalTestType2 `json:"N,omitempty"` + O *ExternalTestType2 `json:"O,omitempty"` + P []ExternalTestType2 `json:"Q,omitempty"` +} + +type ExternalInternalSame struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A TestType2 `json:"A,omitempty"` +} + +type UnversionedType struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` +} + +type UnknownType struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` +} + +func (obj *MyWeirdCustomEmbeddedVersionKindField) GetObjectKind() schema.ObjectKind { return obj } +func (obj *MyWeirdCustomEmbeddedVersionKindField) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.ObjectKind = gvk.ToAPIVersionAndKind() +} +func (obj *MyWeirdCustomEmbeddedVersionKindField) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.ObjectKind) +} + +func (obj *ExternalInternalSame) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *TestType1) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *ExternalTestType1) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *TestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (obj *ExternalTestType2) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +// TestObjectFuzzer can randomly populate all the above objects. +var TestObjectFuzzer = fuzz.New().NilChance(.5).NumElements(1, 100).Funcs( + func(j *MyWeirdCustomEmbeddedVersionKindField, c fuzz.Continue) { + // We have to customize the randomization of MyWeirdCustomEmbeddedVersionKindFields because their + // APIVersion and Kind must remain blank in memory. + j.APIVersion = "" + j.ObjectKind = "" + j.ID = c.RandString() + }, +) + +// Returns a new Scheme set up with the test objects. +func GetTestScheme() *runtime.Scheme { + internalGV := schema.GroupVersion{Version: "__internal"} + externalGV := schema.GroupVersion{Version: "v1"} + alternateExternalGV := schema.GroupVersion{Group: "custom", Version: "v1"} + differentExternalGV := schema.GroupVersion{Group: "other", Version: "v2"} + + s := runtime.NewScheme() + // Ordinarily, we wouldn't add TestType2, but because this is a test and + // both types are from the same package, we need to get it into the system + // so that converter will match it with ExternalType2. + s.AddKnownTypes(internalGV, &TestType1{}, &TestType2{}, &ExternalInternalSame{}) + s.AddKnownTypes(externalGV, &ExternalInternalSame{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &ExternalTestType2{}) + s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &TestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType4"), &ExternalTestType1{}) + s.AddKnownTypeWithName(alternateExternalGV.WithKind("TestType3"), &ExternalTestType1{}) + s.AddKnownTypeWithName(alternateExternalGV.WithKind("TestType5"), &ExternalTestType1{}) + s.AddKnownTypeWithName(differentExternalGV.WithKind("TestType1"), &ExternalTestType1{}) + s.AddUnversionedTypes(externalGV, &UnversionedType{}) + return s +} + +func TestKnownTypes(t *testing.T) { + s := GetTestScheme() + if len(s.KnownTypes(schema.GroupVersion{Group: "group", Version: "v2"})) != 0 { + t.Errorf("should have no known types for v2") + } + + types := s.KnownTypes(schema.GroupVersion{Version: "v1"}) + for _, s := range []string{"TestType1", "TestType2", "TestType3", "ExternalInternalSame"} { + if _, ok := types[s]; !ok { + t.Errorf("missing type %q", s) + } + } +} + +func TestAddKnownTypesIdemPotent(t *testing.T) { + s := runtime.NewScheme() + + gv := schema.GroupVersion{Group: "foo", Version: "v1"} + s.AddKnownTypes(gv, &InternalSimple{}) + s.AddKnownTypes(gv, &InternalSimple{}) + if len(s.KnownTypes(gv)) != 1 { + t.Errorf("expected only one %v type after double registration", gv) + } + if len(s.AllKnownTypes()) != 1 { + t.Errorf("expected only one type after double registration") + } + + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &InternalSimple{}) + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &InternalSimple{}) + if len(s.KnownTypes(gv)) != 1 { + t.Errorf("expected only one %v type after double registration with custom name", gv) + } + if len(s.AllKnownTypes()) != 1 { + t.Errorf("expected only one type after double registration with custom name") + } + + s.AddUnversionedTypes(gv, &InternalSimple{}) + s.AddUnversionedTypes(gv, &InternalSimple{}) + if len(s.KnownTypes(gv)) != 1 { + t.Errorf("expected only one %v type after double registration with custom name", gv) + } + if len(s.AllKnownTypes()) != 1 { + t.Errorf("expected only one type after double registration with custom name") + } + + kinds, _, err := s.ObjectKinds(&InternalSimple{}) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if len(kinds) != 1 { + t.Errorf("expected only one kind for InternalSimple after double registration") + } +} + +// EmbeddableTypeMeta passes GetObjectKind to the type which embeds it. +type EmbeddableTypeMeta runtime.TypeMeta + +func (tm *EmbeddableTypeMeta) GetObjectKind() schema.ObjectKind { return (*runtime.TypeMeta)(tm) } + +func TestConflictingAddKnownTypes(t *testing.T) { + s := runtime.NewScheme() + gv := schema.GroupVersion{Group: "foo", Version: "v1"} + + panicked := make(chan bool) + go func() { + defer func() { + if recover() != nil { + panicked <- true + } + }() + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &InternalSimple{}) + s.AddKnownTypeWithName(gv.WithKind("InternalSimple"), &ExternalSimple{}) + panicked <- false + }() + if !<-panicked { + t.Errorf("Expected AddKnownTypesWithName to panic with conflicting type registrations") + } + + go func() { + defer func() { + if recover() != nil { + panicked <- true + } + }() + + s.AddUnversionedTypes(gv, &InternalSimple{}) + + // redefine InternalSimple with the same name, but obviously as a different type + type InternalSimple struct { + EmbeddableTypeMeta `json:",inline"` + TestString string `json:"testString"` + } + s.AddUnversionedTypes(gv, &InternalSimple{}) + panicked <- false + }() + if !<-panicked { + t.Errorf("Expected AddUnversionedTypes to panic with conflicting type registrations") + } +} + +func TestConvertToVersionBasic(t *testing.T) { + s := GetTestScheme() + tt := &TestType1{A: "I'm not a pointer object"} + other, err := s.ConvertToVersion(tt, schema.GroupVersion{Version: "v1"}) + if err != nil { + t.Fatalf("Failure: %v", err) + } + converted, ok := other.(*ExternalTestType1) + if !ok { + t.Fatalf("Got wrong type: %T", other) + } + if tt.A != converted.A { + t.Fatalf("Failed to convert object correctly: %#v", converted) + } +} + +type testGroupVersioner struct { + target schema.GroupVersionKind + ok bool +} + +func (m testGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { + return m.target, m.ok +} + +func TestConvertToVersion(t *testing.T) { + testCases := []struct { + scheme *runtime.Scheme + in runtime.Object + gv runtime.GroupVersioner + same bool + out runtime.Object + errFn func(error) bool + }{ + // errors if the type is not registered in the scheme + { + scheme: GetTestScheme(), + in: &UnknownType{}, + errFn: func(err error) bool { return err != nil && runtime.IsNotRegisteredError(err) }, + }, + // errors if the group versioner returns no target + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: testGroupVersioner{}, + errFn: func(err error) bool { + return err != nil && strings.Contains(err.Error(), "is not suitable for converting") + }, + }, + // converts to internal + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: schema.GroupVersion{Version: "__internal"}, + out: &TestType1{A: "test"}, + }, + // prefers the best match + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: schema.GroupVersions{{Version: "__internal"}, {Version: "v1"}}, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // unversioned type returned as-is + { + scheme: GetTestScheme(), + in: &UnversionedType{A: "test"}, + gv: schema.GroupVersions{{Version: "v1"}}, + same: true, + out: &UnversionedType{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "UnversionedType"}, + A: "test", + }, + }, + // unversioned type returned when not included in the target types + { + scheme: GetTestScheme(), + in: &UnversionedType{A: "test"}, + gv: schema.GroupVersions{{Group: "other", Version: "v2"}}, + same: true, + out: &UnversionedType{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "UnversionedType"}, + A: "test", + }, + }, + // detected as already being in the target version + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: schema.GroupVersions{{Version: "v1"}}, + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // detected as already being in the first target version + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: schema.GroupVersions{{Version: "v1"}, {Version: "__internal"}}, + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // detected as already being in the first target version + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: schema.GroupVersions{{Version: "v1"}, {Version: "__internal"}}, + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // the external type is registered in multiple groups, versions, and kinds, and can be targeted to all of them (1/3): different kind + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Kind: "TestType3", Version: "v1"}}, + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType3"}, + A: "test", + }, + }, + // the external type is registered in multiple groups, versions, and kinds, and can be targeted to all of them (2/3): different gv + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Kind: "TestType3", Group: "custom", Version: "v1"}}, + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType3"}, + A: "test", + }, + }, + // the external type is registered in multiple groups, versions, and kinds, and can be targeted to all of them (3/3): different gvk + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Group: "custom", Version: "v1", Kind: "TestType5"}}, + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType5"}, + A: "test", + }, + }, + // multi group versioner recognizes multiple groups and forces the output to a particular version, copies because version differs + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "other", Version: "v2"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}, schema.GroupKind{Kind: "TestType1"}), + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "other/v2", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // multi group versioner recognizes multiple groups and forces the output to a particular version, copies because version differs + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "other", Version: "v2"}, schema.GroupKind{Kind: "TestType1"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}), + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "other/v2", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // multi group versioner is unable to find a match when kind AND group don't match (there is no TestType1 kind in group "other", and no kind "TestType5" in the default group) + { + scheme: GetTestScheme(), + in: &TestType1{A: "test"}, + gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "custom", Version: "v1"}, schema.GroupKind{Group: "other"}, schema.GroupKind{Kind: "TestType5"}), + errFn: func(err error) bool { + return err != nil && strings.Contains(err.Error(), "is not suitable for converting") + }, + }, + // multi group versioner recognizes multiple groups and forces the output to a particular version, performs no copy + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "", Version: "v1"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}, schema.GroupKind{Kind: "TestType1"}), + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // multi group versioner recognizes multiple groups and forces the output to a particular version, performs no copy + { + scheme: GetTestScheme(), + in: &ExternalTestType1{A: "test"}, + gv: runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: "", Version: "v1"}, schema.GroupKind{Kind: "TestType1"}, schema.GroupKind{Group: "custom", Kind: "TestType3"}), + same: true, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType1"}, + A: "test", + }, + }, + // group versioner can choose a particular target kind for a given input when kind is the same across group versions + { + scheme: GetTestScheme(), + in: &TestType1{A: "test"}, + gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Version: "v1", Kind: "TestType3"}}, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "v1", ObjectKind: "TestType3"}, + A: "test", + }, + }, + // group versioner can choose a different kind + { + scheme: GetTestScheme(), + in: &TestType1{A: "test"}, + gv: testGroupVersioner{ok: true, target: schema.GroupVersionKind{Kind: "TestType5", Group: "custom", Version: "v1"}}, + out: &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{APIVersion: "custom/v1", ObjectKind: "TestType5"}, + A: "test", + }, + }, + } + for i, test := range testCases { + original, _ := test.scheme.DeepCopy(test.in) + out, err := test.scheme.ConvertToVersion(test.in, test.gv) + switch { + case test.errFn != nil: + if !test.errFn(err) { + t.Errorf("%d: unexpected error: %v", i, err) + } + continue + case err != nil: + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + if out == test.in { + t.Errorf("%d: ConvertToVersion should always copy out: %#v", i, out) + continue + } + + if test.same { + if !reflect.DeepEqual(original, test.in) { + t.Errorf("%d: unexpected mutation of input: %s", i, diff.ObjectReflectDiff(original, test.in)) + continue + } + if !reflect.DeepEqual(out, test.out) { + t.Errorf("%d: unexpected out: %s", i, diff.ObjectReflectDiff(out, test.out)) + continue + } + unsafe, err := test.scheme.UnsafeConvertToVersion(test.in, test.gv) + if err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + if !reflect.DeepEqual(unsafe, test.out) { + t.Errorf("%d: unexpected unsafe: %s", i, diff.ObjectReflectDiff(unsafe, test.out)) + continue + } + if unsafe != test.in { + t.Errorf("%d: UnsafeConvertToVersion should return same object: %#v", i, unsafe) + continue + } + continue + } + if !reflect.DeepEqual(out, test.out) { + t.Errorf("%d: unexpected out: %s", i, diff.ObjectReflectDiff(out, test.out)) + continue + } + } +} + +func TestMetaValues(t *testing.T) { + internalGV := schema.GroupVersion{Group: "test.group", Version: "__internal"} + externalGV := schema.GroupVersion{Group: "test.group", Version: "externalVersion"} + + s := runtime.NewScheme() + s.AddKnownTypeWithName(internalGV.WithKind("Simple"), &InternalSimple{}) + s.AddKnownTypeWithName(externalGV.WithKind("Simple"), &ExternalSimple{}) + + internalToExternalCalls := 0 + externalToInternalCalls := 0 + + // Register functions to verify that scope.Meta() gets set correctly. + err := s.AddConversionFuncs( + func(in *InternalSimple, out *ExternalSimple, scope conversion.Scope) error { + t.Logf("internal -> external") + scope.Convert(&in.TestString, &out.TestString, 0) + internalToExternalCalls++ + return nil + }, + func(in *ExternalSimple, out *InternalSimple, scope conversion.Scope) error { + t.Logf("external -> internal") + scope.Convert(&in.TestString, &out.TestString, 0) + externalToInternalCalls++ + return nil + }, + ) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + simple := &InternalSimple{ + TestString: "foo", + } + + s.Log(t) + + out, err := s.ConvertToVersion(simple, externalGV) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + internal, err := s.ConvertToVersion(out, internalGV) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + if e, a := simple, internal; !reflect.DeepEqual(e, a) { + t.Errorf("Expected:\n %#v,\n Got:\n %#v", e, a) + } + + if e, a := 1, internalToExternalCalls; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + if e, a := 1, externalToInternalCalls; e != a { + t.Errorf("Expected %v, got %v", e, a) + } +} + +func TestMetaValuesUnregisteredConvert(t *testing.T) { + type InternalSimple struct { + Version string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + TestString string `json:"testString"` + } + type ExternalSimple struct { + Version string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + TestString string `json:"testString"` + } + s := runtime.NewScheme() + // We deliberately don't register the types. + + internalToExternalCalls := 0 + + // Register functions to verify that scope.Meta() gets set correctly. + err := s.AddConversionFuncs( + func(in *InternalSimple, out *ExternalSimple, scope conversion.Scope) error { + scope.Convert(&in.TestString, &out.TestString, 0) + internalToExternalCalls++ + return nil + }, + ) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + simple := &InternalSimple{TestString: "foo"} + external := &ExternalSimple{} + err = s.Convert(simple, external, nil) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if e, a := simple.TestString, external.TestString; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + + // Verify that our conversion handler got called. + if e, a := 1, internalToExternalCalls; e != a { + t.Errorf("Expected %v, got %v", e, a) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD new file mode 100644 index 000000000..d27fbabb8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD @@ -0,0 +1,44 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["codec_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "codec_factory.go", + "negotiated_codec.go", + "protobuf_extension.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go new file mode 100644 index 000000000..65f451124 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go @@ -0,0 +1,237 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/runtime/serializer/recognizer" + "k8s.io/apimachinery/pkg/runtime/serializer/versioning" +) + +// serializerExtensions are for serializers that are conditionally compiled in +var serializerExtensions = []func(*runtime.Scheme) (serializerType, bool){} + +type serializerType struct { + AcceptContentTypes []string + ContentType string + FileExtensions []string + // EncodesAsText should be true if this content type can be represented safely in UTF-8 + EncodesAsText bool + + Serializer runtime.Serializer + PrettySerializer runtime.Serializer + + AcceptStreamContentTypes []string + StreamContentType string + + Framer runtime.Framer + StreamSerializer runtime.Serializer +} + +func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory) []serializerType { + jsonSerializer := json.NewSerializer(mf, scheme, scheme, false) + jsonPrettySerializer := json.NewSerializer(mf, scheme, scheme, true) + yamlSerializer := json.NewYAMLSerializer(mf, scheme, scheme) + + serializers := []serializerType{ + { + AcceptContentTypes: []string{"application/json"}, + ContentType: "application/json", + FileExtensions: []string{"json"}, + EncodesAsText: true, + Serializer: jsonSerializer, + PrettySerializer: jsonPrettySerializer, + + Framer: json.Framer, + StreamSerializer: jsonSerializer, + }, + { + AcceptContentTypes: []string{"application/yaml"}, + ContentType: "application/yaml", + FileExtensions: []string{"yaml"}, + EncodesAsText: true, + Serializer: yamlSerializer, + }, + } + + for _, fn := range serializerExtensions { + if serializer, ok := fn(scheme); ok { + serializers = append(serializers, serializer) + } + } + return serializers +} + +// CodecFactory provides methods for retrieving codecs and serializers for specific +// versions and content types. +type CodecFactory struct { + scheme *runtime.Scheme + serializers []serializerType + universal runtime.Decoder + accepts []runtime.SerializerInfo + + legacySerializer runtime.Serializer +} + +// NewCodecFactory provides methods for retrieving serializers for the supported wire formats +// and conversion wrappers to define preferred internal and external versions. In the future, +// as the internal version is used less, callers may instead use a defaulting serializer and +// only convert objects which are shared internally (Status, common API machinery). +// TODO: allow other codecs to be compiled in? +// TODO: accept a scheme interface +func NewCodecFactory(scheme *runtime.Scheme) CodecFactory { + serializers := newSerializersForScheme(scheme, json.DefaultMetaFactory) + return newCodecFactory(scheme, serializers) +} + +// newCodecFactory is a helper for testing that allows a different metafactory to be specified. +func newCodecFactory(scheme *runtime.Scheme, serializers []serializerType) CodecFactory { + decoders := make([]runtime.Decoder, 0, len(serializers)) + var accepts []runtime.SerializerInfo + alreadyAccepted := make(map[string]struct{}) + + var legacySerializer runtime.Serializer + for _, d := range serializers { + decoders = append(decoders, d.Serializer) + for _, mediaType := range d.AcceptContentTypes { + if _, ok := alreadyAccepted[mediaType]; ok { + continue + } + alreadyAccepted[mediaType] = struct{}{} + info := runtime.SerializerInfo{ + MediaType: d.ContentType, + EncodesAsText: d.EncodesAsText, + Serializer: d.Serializer, + PrettySerializer: d.PrettySerializer, + } + if d.StreamSerializer != nil { + info.StreamSerializer = &runtime.StreamSerializerInfo{ + Serializer: d.StreamSerializer, + EncodesAsText: d.EncodesAsText, + Framer: d.Framer, + } + } + accepts = append(accepts, info) + if mediaType == runtime.ContentTypeJSON { + legacySerializer = d.Serializer + } + } + } + if legacySerializer == nil { + legacySerializer = serializers[0].Serializer + } + + return CodecFactory{ + scheme: scheme, + serializers: serializers, + universal: recognizer.NewDecoder(decoders...), + + accepts: accepts, + + legacySerializer: legacySerializer, + } +} + +// SupportedMediaTypes returns the RFC2046 media types that this factory has serializers for. +func (f CodecFactory) SupportedMediaTypes() []runtime.SerializerInfo { + return f.accepts +} + +// LegacyCodec encodes output to a given API versions, and decodes output into the internal form from +// any recognized source. The returned codec will always encode output to JSON. If a type is not +// found in the list of versions an error will be returned. +// +// This method is deprecated - clients and servers should negotiate a serializer by mime-type and +// invoke CodecForVersions. Callers that need only to read data should use UniversalDecoder(). +// +// TODO: make this call exist only in pkg/api, and initialize it with the set of default versions. +// All other callers will be forced to request a Codec directly. +func (f CodecFactory) LegacyCodec(version ...schema.GroupVersion) runtime.Codec { + return versioning.NewDefaultingCodecForScheme(f.scheme, f.legacySerializer, f.universal, schema.GroupVersions(version), runtime.InternalGroupVersioner) +} + +// UniversalDeserializer can convert any stored data recognized by this factory into a Go object that satisfies +// runtime.Object. It does not perform conversion. It does not perform defaulting. +func (f CodecFactory) UniversalDeserializer() runtime.Decoder { + return f.universal +} + +// UniversalDecoder returns a runtime.Decoder capable of decoding all known API objects in all known formats. Used +// by clients that do not need to encode objects but want to deserialize API objects stored on disk. Only decodes +// objects in groups registered with the scheme. The GroupVersions passed may be used to select alternate +// versions of objects to return - by default, runtime.APIVersionInternal is used. If any versions are specified, +// unrecognized groups will be returned in the version they are encoded as (no conversion). This decoder performs +// defaulting. +// +// TODO: the decoder will eventually be removed in favor of dealing with objects in their versioned form +// TODO: only accept a group versioner +func (f CodecFactory) UniversalDecoder(versions ...schema.GroupVersion) runtime.Decoder { + var versioner runtime.GroupVersioner + if len(versions) == 0 { + versioner = runtime.InternalGroupVersioner + } else { + versioner = schema.GroupVersions(versions) + } + return f.CodecForVersions(nil, f.universal, nil, versioner) +} + +// CodecForVersions creates a codec with the provided serializer. If an object is decoded and its group is not in the list, +// it will default to runtime.APIVersionInternal. If encode is not specified for an object's group, the object is not +// converted. If encode or decode are nil, no conversion is performed. +func (f CodecFactory) CodecForVersions(encoder runtime.Encoder, decoder runtime.Decoder, encode runtime.GroupVersioner, decode runtime.GroupVersioner) runtime.Codec { + // TODO: these are for backcompat, remove them in the future + if encode == nil { + encode = runtime.DisabledGroupVersioner + } + if decode == nil { + decode = runtime.InternalGroupVersioner + } + return versioning.NewDefaultingCodecForScheme(f.scheme, encoder, decoder, encode, decode) +} + +// DecoderToVersion returns a decoder that targets the provided group version. +func (f CodecFactory) DecoderToVersion(decoder runtime.Decoder, gv runtime.GroupVersioner) runtime.Decoder { + return f.CodecForVersions(nil, decoder, nil, gv) +} + +// EncoderForVersion returns an encoder that targets the provided group version. +func (f CodecFactory) EncoderForVersion(encoder runtime.Encoder, gv runtime.GroupVersioner) runtime.Encoder { + return f.CodecForVersions(encoder, nil, gv, nil) +} + +// DirectCodecFactory provides methods for retrieving "DirectCodec"s, which do not do conversion. +type DirectCodecFactory struct { + CodecFactory +} + +// EncoderForVersion returns an encoder that does not do conversion. +func (f DirectCodecFactory) EncoderForVersion(serializer runtime.Encoder, version runtime.GroupVersioner) runtime.Encoder { + return versioning.DirectEncoder{ + Version: version, + Encoder: serializer, + ObjectTyper: f.CodecFactory.scheme, + } +} + +// DecoderToVersion returns an decoder that does not do conversion. gv is ignored. +func (f DirectCodecFactory) DecoderToVersion(serializer runtime.Decoder, _ runtime.GroupVersioner) runtime.Decoder { + return versioning.DirectDecoder{ + Decoder: serializer, + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go new file mode 100644 index 000000000..d3b87f49d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_test.go @@ -0,0 +1,426 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "encoding/json" + "fmt" + "log" + "os" + "reflect" + "strings" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/diff" + + "github.com/ghodss/yaml" + "github.com/google/gofuzz" + flag "github.com/spf13/pflag" +) + +var fuzzIters = flag.Int("fuzz-iters", 50, "How many fuzzing iterations to do.") + +type testMetaFactory struct{} + +func (testMetaFactory) Interpret(data []byte) (*schema.GroupVersionKind, error) { + findKind := struct { + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + }{} + // yaml is a superset of json, so we use it to decode here. That way, + // we understand both. + if err := yaml.Unmarshal(data, &findKind); err != nil { + return nil, fmt.Errorf("couldn't get version/kind: %v", err) + } + gv, err := schema.ParseGroupVersion(findKind.APIVersion) + if err != nil { + return nil, err + } + return &schema.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.ObjectKind}, nil +} + +// Test a weird version/kind embedding format. +type MyWeirdCustomEmbeddedVersionKindField struct { + ID string `json:"ID,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + Z string `json:"Z,omitempty"` + Y uint64 `json:"Y,omitempty"` +} + +type TestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]TestType2 `json:"N,omitempty"` + O *TestType2 `json:"O,omitempty"` + P []TestType2 `json:"Q,omitempty"` +} + +type TestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} + +type ExternalTestType2 struct { + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` +} +type ExternalTestType1 struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]ExternalTestType2 `json:"N,omitempty"` + O *ExternalTestType2 `json:"O,omitempty"` + P []ExternalTestType2 `json:"Q,omitempty"` +} + +type ExternalInternalSame struct { + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A TestType2 `json:"A,omitempty"` +} + +// TestObjectFuzzer can randomly populate all the above objects. +var TestObjectFuzzer = fuzz.New().NilChance(.5).NumElements(1, 100).Funcs( + func(j *MyWeirdCustomEmbeddedVersionKindField, c fuzz.Continue) { + c.FuzzNoCustom(j) + j.APIVersion = "" + j.ObjectKind = "" + }, +) + +func (obj *MyWeirdCustomEmbeddedVersionKindField) GetObjectKind() schema.ObjectKind { return obj } +func (obj *MyWeirdCustomEmbeddedVersionKindField) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.ObjectKind = gvk.ToAPIVersionAndKind() +} +func (obj *MyWeirdCustomEmbeddedVersionKindField) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.ObjectKind) +} + +func (obj *ExternalInternalSame) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *TestType1) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *ExternalTestType1) GetObjectKind() schema.ObjectKind { + return &obj.MyWeirdCustomEmbeddedVersionKindField +} + +func (obj *TestType2) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (obj *ExternalTestType2) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +// Returns a new Scheme set up with the test objects. +func GetTestScheme() (*runtime.Scheme, runtime.Codec) { + internalGV := schema.GroupVersion{Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Version: "v1"} + externalGV2 := schema.GroupVersion{Version: "v2"} + + s := runtime.NewScheme() + // Ordinarily, we wouldn't add TestType2, but because this is a test and + // both types are from the same package, we need to get it into the system + // so that converter will match it with ExternalType2. + s.AddKnownTypes(internalGV, &TestType1{}, &TestType2{}, &ExternalInternalSame{}) + s.AddKnownTypes(externalGV, &ExternalInternalSame{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &ExternalTestType2{}) + s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &TestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV2.WithKind("TestType1"), &ExternalTestType1{}) + + s.AddUnversionedTypes(externalGV, &metav1.Status{}) + + cf := newCodecFactory(s, newSerializersForScheme(s, testMetaFactory{})) + codec := cf.LegacyCodec(schema.GroupVersion{Version: "v1"}) + return s, codec +} + +var semantic = conversion.EqualitiesOrDie( + func(a, b MyWeirdCustomEmbeddedVersionKindField) bool { + a.APIVersion, a.ObjectKind = "", "" + b.APIVersion, b.ObjectKind = "", "" + return a == b + }, +) + +func runTest(t *testing.T, source interface{}) { + name := reflect.TypeOf(source).Elem().Name() + TestObjectFuzzer.Fuzz(source) + + _, codec := GetTestScheme() + data, err := runtime.Encode(codec, source.(runtime.Object)) + if err != nil { + t.Errorf("%v: %v (%#v)", name, err, source) + return + } + obj2, err := runtime.Decode(codec, data) + if err != nil { + t.Errorf("%v: %v (%v)", name, err, string(data)) + return + } + if !semantic.DeepEqual(source, obj2) { + t.Errorf("1: %v: diff: %v", name, diff.ObjectGoPrintSideBySide(source, obj2)) + return + } + obj3 := reflect.New(reflect.TypeOf(source).Elem()).Interface() + if err := runtime.DecodeInto(codec, data, obj3.(runtime.Object)); err != nil { + t.Errorf("2: %v: %v", name, err) + return + } + if !semantic.DeepEqual(source, obj3) { + t.Errorf("3: %v: diff: %v", name, diff.ObjectDiff(source, obj3)) + return + } +} + +func TestTypes(t *testing.T) { + table := []interface{}{ + &TestType1{}, + &ExternalInternalSame{}, + } + for _, item := range table { + // Try a few times, since runTest uses random values. + for i := 0; i < *fuzzIters; i++ { + runTest(t, item) + } + } +} + +func TestVersionedEncoding(t *testing.T) { + s, _ := GetTestScheme() + cf := newCodecFactory(s, newSerializersForScheme(s, testMetaFactory{})) + info, _ := runtime.SerializerInfoForMediaType(cf.SupportedMediaTypes(), runtime.ContentTypeJSON) + encoder := info.Serializer + + codec := cf.CodecForVersions(encoder, nil, schema.GroupVersion{Version: "v2"}, nil) + out, err := runtime.Encode(codec, &TestType1{}) + if err != nil { + t.Fatal(err) + } + if string(out) != `{"myVersionKey":"v2","myKindKey":"TestType1"}`+"\n" { + t.Fatal(string(out)) + } + + codec = cf.CodecForVersions(encoder, nil, schema.GroupVersion{Version: "v3"}, nil) + _, err = runtime.Encode(codec, &TestType1{}) + if err == nil { + t.Fatal(err) + } + + // unversioned encode with no versions is written directly to wire + codec = cf.CodecForVersions(encoder, nil, runtime.InternalGroupVersioner, nil) + out, err = runtime.Encode(codec, &TestType1{}) + if err != nil { + t.Fatal(err) + } + if string(out) != `{}`+"\n" { + t.Fatal(string(out)) + } +} + +func TestMultipleNames(t *testing.T) { + _, codec := GetTestScheme() + + obj, _, err := codec.Decode([]byte(`{"myKindKey":"TestType3","myVersionKey":"v1","A":"value"}`), nil, nil) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + internal := obj.(*TestType1) + if internal.A != "value" { + t.Fatalf("unexpected decoded object: %#v", internal) + } + + out, err := runtime.Encode(codec, internal) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if !strings.Contains(string(out), `"myKindKey":"TestType1"`) { + t.Errorf("unexpected encoded output: %s", string(out)) + } +} + +func TestConvertTypesWhenDefaultNamesMatch(t *testing.T) { + internalGV := schema.GroupVersion{Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Version: "v1"} + + s := runtime.NewScheme() + // create two names internally, with TestType1 being preferred + s.AddKnownTypeWithName(internalGV.WithKind("TestType1"), &TestType1{}) + s.AddKnownTypeWithName(internalGV.WithKind("OtherType1"), &TestType1{}) + // create two names externally, with TestType1 being preferred + s.AddKnownTypeWithName(externalGV.WithKind("TestType1"), &ExternalTestType1{}) + s.AddKnownTypeWithName(externalGV.WithKind("OtherType1"), &ExternalTestType1{}) + + ext := &ExternalTestType1{} + ext.APIVersion = "v1" + ext.ObjectKind = "OtherType1" + ext.A = "test" + data, err := json.Marshal(ext) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + expect := &TestType1{A: "test"} + + codec := newCodecFactory(s, newSerializersForScheme(s, testMetaFactory{})).LegacyCodec(schema.GroupVersion{Version: "v1"}) + + obj, err := runtime.Decode(codec, data) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if !semantic.DeepEqual(expect, obj) { + t.Errorf("unexpected object: %#v", obj) + } + + into := &TestType1{} + if err := runtime.DecodeInto(codec, data, into); err != nil { + t.Fatalf("unexpected error: %v", err) + } + if !semantic.DeepEqual(expect, into) { + t.Errorf("unexpected object: %#v", obj) + } +} + +func TestEncode_Ptr(t *testing.T) { + _, codec := GetTestScheme() + tt := &TestType1{A: "I am a pointer object"} + data, err := runtime.Encode(codec, tt) + obj2, err2 := runtime.Decode(codec, data) + if err != nil || err2 != nil { + t.Fatalf("Failure: '%v' '%v'\n%s", err, err2, data) + } + if _, ok := obj2.(*TestType1); !ok { + t.Fatalf("Got wrong type") + } + if !semantic.DeepEqual(obj2, tt) { + t.Errorf("Expected:\n %#v,\n Got:\n %#v", tt, obj2) + } +} + +func TestBadJSONRejection(t *testing.T) { + log.SetOutput(os.Stderr) + _, codec := GetTestScheme() + badJSONs := [][]byte{ + []byte(`{"myVersionKey":"v1"}`), // Missing kind + []byte(`{"myVersionKey":"v1","myKindKey":"bar"}`), // Unknown kind + []byte(`{"myVersionKey":"bar","myKindKey":"TestType1"}`), // Unknown version + []byte(`{"myKindKey":"TestType1"}`), // Missing version + } + for _, b := range badJSONs { + if _, err := runtime.Decode(codec, b); err == nil { + t.Errorf("Did not reject bad json: %s", string(b)) + } + } + badJSONKindMismatch := []byte(`{"myVersionKey":"v1","myKindKey":"ExternalInternalSame"}`) + if err := runtime.DecodeInto(codec, badJSONKindMismatch, &TestType1{}); err == nil { + t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch) + } + if err := runtime.DecodeInto(codec, []byte(``), &TestType1{}); err != nil { + t.Errorf("Should allow empty decode: %v", err) + } + if _, _, err := codec.Decode([]byte(``), &schema.GroupVersionKind{Kind: "ExternalInternalSame"}, nil); err == nil { + t.Errorf("Did not give error for empty data with only kind default") + } + if _, _, err := codec.Decode([]byte(`{"myVersionKey":"v1"}`), &schema.GroupVersionKind{Kind: "ExternalInternalSame"}, nil); err != nil { + t.Errorf("Gave error for version and kind default") + } + if _, _, err := codec.Decode([]byte(`{"myKindKey":"ExternalInternalSame"}`), &schema.GroupVersionKind{Version: "v1"}, nil); err != nil { + t.Errorf("Gave error for version and kind default") + } + if _, _, err := codec.Decode([]byte(``), &schema.GroupVersionKind{Kind: "ExternalInternalSame", Version: "v1"}, nil); err != nil { + t.Errorf("Gave error for version and kind defaulted: %v", err) + } + if _, err := runtime.Decode(codec, []byte(``)); err == nil { + t.Errorf("Did not give error for empty data") + } +} + +// Returns a new Scheme set up with the test objects needed by TestDirectCodec. +func GetDirectCodecTestScheme() *runtime.Scheme { + internalGV := schema.GroupVersion{Version: runtime.APIVersionInternal} + externalGV := schema.GroupVersion{Version: "v1"} + + s := runtime.NewScheme() + // Ordinarily, we wouldn't add TestType2, but because this is a test and + // both types are from the same package, we need to get it into the system + // so that converter will match it with ExternalType2. + s.AddKnownTypes(internalGV, &TestType1{}) + s.AddKnownTypes(externalGV, &ExternalTestType1{}) + + s.AddUnversionedTypes(externalGV, &metav1.Status{}) + return s +} + +func TestDirectCodec(t *testing.T) { + s := GetDirectCodecTestScheme() + cf := newCodecFactory(s, newSerializersForScheme(s, testMetaFactory{})) + info, _ := runtime.SerializerInfoForMediaType(cf.SupportedMediaTypes(), runtime.ContentTypeJSON) + serializer := info.Serializer + df := DirectCodecFactory{cf} + ignoredGV, err := schema.ParseGroupVersion("ignored group/ignored version") + if err != nil { + t.Fatal(err) + } + directEncoder := df.EncoderForVersion(serializer, ignoredGV) + directDecoder := df.DecoderToVersion(serializer, ignoredGV) + out, err := runtime.Encode(directEncoder, &ExternalTestType1{}) + if err != nil { + t.Fatal(err) + } + if string(out) != `{"myVersionKey":"v1","myKindKey":"ExternalTestType1"}`+"\n" { + t.Fatal(string(out)) + } + a, _, err := directDecoder.Decode(out, nil, nil) + e := &ExternalTestType1{ + MyWeirdCustomEmbeddedVersionKindField: MyWeirdCustomEmbeddedVersionKindField{ + APIVersion: "v1", + ObjectKind: "ExternalTestType1", + }, + } + if !semantic.DeepEqual(e, a) { + t.Fatalf("expect %v, got %v", e, a) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD new file mode 100644 index 000000000..6ee9e72b2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["meta_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "json.go", + "meta.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = ["json_test.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go new file mode 100644 index 000000000..28bb91b53 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json.go @@ -0,0 +1,245 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "encoding/json" + "io" + + "github.com/ghodss/yaml" + "github.com/ugorji/go/codec" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/recognizer" + "k8s.io/apimachinery/pkg/util/framer" + utilyaml "k8s.io/apimachinery/pkg/util/yaml" +) + +// NewSerializer creates a JSON serializer that handles encoding versioned objects into the proper JSON form. If typer +// is not nil, the object has the group, version, and kind fields set. +func NewSerializer(meta MetaFactory, creater runtime.ObjectCreater, typer runtime.ObjectTyper, pretty bool) *Serializer { + return &Serializer{ + meta: meta, + creater: creater, + typer: typer, + yaml: false, + pretty: pretty, + } +} + +// NewYAMLSerializer creates a YAML serializer that handles encoding versioned objects into the proper YAML form. If typer +// is not nil, the object has the group, version, and kind fields set. This serializer supports only the subset of YAML that +// matches JSON, and will error if constructs are used that do not serialize to JSON. +func NewYAMLSerializer(meta MetaFactory, creater runtime.ObjectCreater, typer runtime.ObjectTyper) *Serializer { + return &Serializer{ + meta: meta, + creater: creater, + typer: typer, + yaml: true, + } +} + +type Serializer struct { + meta MetaFactory + creater runtime.ObjectCreater + typer runtime.ObjectTyper + yaml bool + pretty bool +} + +// Serializer implements Serializer +var _ runtime.Serializer = &Serializer{} +var _ recognizer.RecognizingDecoder = &Serializer{} + +// Decode attempts to convert the provided data into YAML or JSON, extract the stored schema kind, apply the provided default gvk, and then +// load that data into an object matching the desired schema kind or the provided into. If into is *runtime.Unknown, the raw data will be +// extracted and no decoding will be performed. If into is not registered with the typer, then the object will be straight decoded using +// normal JSON/YAML unmarshalling. If into is provided and the original data is not fully qualified with kind/version/group, the type of +// the into will be used to alter the returned gvk. On success or most errors, the method will return the calculated schema kind. +func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + if versioned, ok := into.(*runtime.VersionedObjects); ok { + into = versioned.Last() + obj, actual, err := s.Decode(originalData, gvk, into) + if err != nil { + return nil, actual, err + } + versioned.Objects = []runtime.Object{obj} + return versioned, actual, nil + } + + data := originalData + if s.yaml { + altered, err := yaml.YAMLToJSON(data) + if err != nil { + return nil, nil, err + } + data = altered + } + + actual, err := s.meta.Interpret(data) + if err != nil { + return nil, nil, err + } + + if gvk != nil { + // apply kind and version defaulting from provided default + if len(actual.Kind) == 0 { + actual.Kind = gvk.Kind + } + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = gvk.Group + actual.Version = gvk.Version + } + if len(actual.Version) == 0 && actual.Group == gvk.Group { + actual.Version = gvk.Version + } + } + + if unk, ok := into.(*runtime.Unknown); ok && unk != nil { + unk.Raw = originalData + unk.ContentType = runtime.ContentTypeJSON + unk.GetObjectKind().SetGroupVersionKind(*actual) + return unk, actual, nil + } + + if into != nil { + types, _, err := s.typer.ObjectKinds(into) + switch { + case runtime.IsNotRegisteredError(err): + if err := codec.NewDecoderBytes(data, new(codec.JsonHandle)).Decode(into); err != nil { + return nil, actual, err + } + return into, actual, nil + case err != nil: + return nil, actual, err + default: + typed := types[0] + if len(actual.Kind) == 0 { + actual.Kind = typed.Kind + } + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = typed.Group + actual.Version = typed.Version + } + if len(actual.Version) == 0 && actual.Group == typed.Group { + actual.Version = typed.Version + } + } + } + + if len(actual.Kind) == 0 { + return nil, actual, runtime.NewMissingKindErr(string(originalData)) + } + if len(actual.Version) == 0 { + return nil, actual, runtime.NewMissingVersionErr(string(originalData)) + } + + // use the target if necessary + obj, err := runtime.UseOrCreateObject(s.typer, s.creater, *actual, into) + if err != nil { + return nil, actual, err + } + + if err := codec.NewDecoderBytes(data, new(codec.JsonHandle)).Decode(obj); err != nil { + return nil, actual, err + } + return obj, actual, nil +} + +// Encode serializes the provided object to the given writer. +func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { + if s.yaml { + json, err := json.Marshal(obj) + if err != nil { + return err + } + data, err := yaml.JSONToYAML(json) + if err != nil { + return err + } + _, err = w.Write(data) + return err + } + + if s.pretty { + data, err := json.MarshalIndent(obj, "", " ") + if err != nil { + return err + } + _, err = w.Write(data) + return err + } + encoder := json.NewEncoder(w) + return encoder.Encode(obj) +} + +// RecognizesData implements the RecognizingDecoder interface. +func (s *Serializer) RecognizesData(peek io.Reader) (ok, unknown bool, err error) { + if s.yaml { + // we could potentially look for '---' + return false, true, nil + } + _, _, ok = utilyaml.GuessJSONStream(peek, 2048) + return ok, false, nil +} + +// Framer is the default JSON framing behavior, with newlines delimiting individual objects. +var Framer = jsonFramer{} + +type jsonFramer struct{} + +// NewFrameWriter implements stream framing for this serializer +func (jsonFramer) NewFrameWriter(w io.Writer) io.Writer { + // we can write JSON objects directly to the writer, because they are self-framing + return w +} + +// NewFrameReader implements stream framing for this serializer +func (jsonFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { + // we need to extract the JSON chunks of data to pass to Decode() + return framer.NewJSONFramedReader(r) +} + +// Framer is the default JSON framing behavior, with newlines delimiting individual objects. +var YAMLFramer = yamlFramer{} + +type yamlFramer struct{} + +// NewFrameWriter implements stream framing for this serializer +func (yamlFramer) NewFrameWriter(w io.Writer) io.Writer { + return yamlFrameWriter{w} +} + +// NewFrameReader implements stream framing for this serializer +func (yamlFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { + // extract the YAML document chunks directly + return utilyaml.NewDocumentDecoder(r) +} + +type yamlFrameWriter struct { + w io.Writer +} + +// Write separates each document with the YAML document separator (`---` followed by line +// break). Writers must write well formed YAML documents (include a final line break). +func (w yamlFrameWriter) Write(data []byte) (n int, err error) { + if _, err := w.w.Write([]byte("---\n")); err != nil { + return 0, err + } + return w.w.Write(data) +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go new file mode 100644 index 000000000..01df7a46b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/json_test.go @@ -0,0 +1,264 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json_test + +import ( + "fmt" + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/util/diff" +) + +type testDecodable struct { + Other string + Value int `json:"value"` + gvk schema.GroupVersionKind +} + +func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d } +func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } +func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } + +func TestDecode(t *testing.T) { + testCases := []struct { + creater runtime.ObjectCreater + typer runtime.ObjectTyper + yaml bool + pretty bool + + data []byte + defaultGVK *schema.GroupVersionKind + into runtime.Object + + errFn func(error) bool + expectedObject runtime.Object + expectedGVK *schema.GroupVersionKind + }{ + { + data: []byte("{}"), + + expectedGVK: &schema.GroupVersionKind{}, + errFn: func(err error) bool { return strings.Contains(err.Error(), "Object 'Kind' is missing in") }, + }, + { + data: []byte("{}"), + defaultGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + creater: &mockCreater{err: fmt.Errorf("fake error")}, + + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + errFn: func(err error) bool { return err.Error() == "fake error" }, + }, + { + data: []byte("{}"), + defaultGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + creater: &mockCreater{obj: &testDecodable{}}, + expectedObject: &testDecodable{}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + }, + + // version without group is not defaulted + { + data: []byte(`{"apiVersion":"blah"}`), + defaultGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + creater: &mockCreater{obj: &testDecodable{}}, + expectedObject: &testDecodable{}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "", Version: "blah"}, + }, + // group without version is defaulted + { + data: []byte(`{"apiVersion":"other/"}`), + defaultGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + creater: &mockCreater{obj: &testDecodable{}}, + expectedObject: &testDecodable{}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + }, + + // accept runtime.Unknown as into and bypass creator + { + data: []byte(`{}`), + into: &runtime.Unknown{}, + + expectedGVK: &schema.GroupVersionKind{}, + expectedObject: &runtime.Unknown{ + Raw: []byte(`{}`), + ContentType: runtime.ContentTypeJSON, + }, + }, + { + data: []byte(`{"test":"object"}`), + into: &runtime.Unknown{}, + + expectedGVK: &schema.GroupVersionKind{}, + expectedObject: &runtime.Unknown{ + Raw: []byte(`{"test":"object"}`), + ContentType: runtime.ContentTypeJSON, + }, + }, + { + data: []byte(`{"test":"object"}`), + into: &runtime.Unknown{}, + defaultGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedObject: &runtime.Unknown{ + TypeMeta: runtime.TypeMeta{APIVersion: "other/blah", Kind: "Test"}, + Raw: []byte(`{"test":"object"}`), + ContentType: runtime.ContentTypeJSON, + }, + }, + + // unregistered objects can be decoded into directly + { + data: []byte(`{"kind":"Test","apiVersion":"other/blah","value":1,"Other":"test"}`), + into: &testDecodable{}, + typer: &mockTyper{err: runtime.NewNotRegisteredErrForKind(schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"})}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedObject: &testDecodable{ + Other: "test", + Value: 1, + }, + }, + // registered types get defaulted by the into object kind + { + data: []byte(`{"value":1,"Other":"test"}`), + into: &testDecodable{}, + typer: &mockTyper{gvk: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedObject: &testDecodable{ + Other: "test", + Value: 1, + }, + }, + // registered types get defaulted by the into object kind even without version, but return an error + { + data: []byte(`{"value":1,"Other":"test"}`), + into: &testDecodable{}, + typer: &mockTyper{gvk: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: ""}}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: ""}, + errFn: func(err error) bool { return strings.Contains(err.Error(), "Object 'apiVersion' is missing in") }, + expectedObject: &testDecodable{ + Other: "test", + Value: 1, + }, + }, + + // runtime.VersionedObjects are decoded + { + data: []byte(`{"value":1,"Other":"test"}`), + into: &runtime.VersionedObjects{Objects: []runtime.Object{}}, + creater: &mockCreater{obj: &testDecodable{}}, + typer: &mockTyper{gvk: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}}, + defaultGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedObject: &runtime.VersionedObjects{ + Objects: []runtime.Object{ + &testDecodable{ + Other: "test", + Value: 1, + }, + }, + }, + }, + // runtime.VersionedObjects with an object are decoded into + { + data: []byte(`{"Other":"test"}`), + into: &runtime.VersionedObjects{Objects: []runtime.Object{&testDecodable{Value: 2}}}, + typer: &mockTyper{gvk: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}}, + expectedGVK: &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"}, + expectedObject: &runtime.VersionedObjects{ + Objects: []runtime.Object{ + &testDecodable{ + Other: "test", + Value: 2, + }, + }, + }, + }, + } + + for i, test := range testCases { + var s runtime.Serializer + if test.yaml { + s = json.NewYAMLSerializer(json.DefaultMetaFactory, test.creater, test.typer) + } else { + s = json.NewSerializer(json.DefaultMetaFactory, test.creater, test.typer, test.pretty) + } + obj, gvk, err := s.Decode([]byte(test.data), test.defaultGVK, test.into) + + if !reflect.DeepEqual(test.expectedGVK, gvk) { + t.Errorf("%d: unexpected GVK: %v", i, gvk) + } + + switch { + case err == nil && test.errFn != nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil && test.errFn == nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil: + if !test.errFn(err) { + t.Errorf("%d: failed: %v", i, err) + } + if obj != nil { + t.Errorf("%d: should have returned nil object", i) + } + continue + } + + if test.into != nil && test.into != obj { + t.Errorf("%d: expected into to be returned: %v", i, obj) + continue + } + + if !reflect.DeepEqual(test.expectedObject, obj) { + t.Errorf("%d: unexpected object:\n%s", i, diff.ObjectGoPrintSideBySide(test.expectedObject, obj)) + } + } +} + +type mockCreater struct { + apiVersion string + kind string + err error + obj runtime.Object +} + +func (c *mockCreater) New(kind schema.GroupVersionKind) (runtime.Object, error) { + c.apiVersion, c.kind = kind.GroupVersion().String(), kind.Kind + return c.obj, c.err +} + +type mockTyper struct { + gvk *schema.GroupVersionKind + err error +} + +func (t *mockTyper) ObjectKinds(obj runtime.Object) ([]schema.GroupVersionKind, bool, error) { + if t.gvk == nil { + return nil, false, t.err + } + return []schema.GroupVersionKind{*t.gvk}, false, t.err +} + +func (t *mockTyper) Recognizes(_ schema.GroupVersionKind) bool { + return false +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go new file mode 100644 index 000000000..df3f5f989 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta.go @@ -0,0 +1,63 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "encoding/json" + "fmt" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// MetaFactory is used to store and retrieve the version and kind +// information for JSON objects in a serializer. +type MetaFactory interface { + // Interpret should return the version and kind of the wire-format of + // the object. + Interpret(data []byte) (*schema.GroupVersionKind, error) +} + +// DefaultMetaFactory is a default factory for versioning objects in JSON. The object +// in memory and in the default JSON serialization will use the "kind" and "apiVersion" +// fields. +var DefaultMetaFactory = SimpleMetaFactory{} + +// SimpleMetaFactory provides default methods for retrieving the type and version of objects +// that are identified with an "apiVersion" and "kind" fields in their JSON +// serialization. It may be parameterized with the names of the fields in memory, or an +// optional list of base structs to search for those fields in memory. +type SimpleMetaFactory struct { +} + +// Interpret will return the APIVersion and Kind of the JSON wire-format +// encoding of an object, or an error. +func (SimpleMetaFactory) Interpret(data []byte) (*schema.GroupVersionKind, error) { + findKind := struct { + // +optional + APIVersion string `json:"apiVersion,omitempty"` + // +optional + Kind string `json:"kind,omitempty"` + }{} + if err := json.Unmarshal(data, &findKind); err != nil { + return nil, fmt.Errorf("couldn't get version/kind; json parse error: %v", err) + } + gv, err := schema.ParseGroupVersion(findKind.APIVersion) + if err != nil { + return nil, err + } + return &schema.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.Kind}, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta_test.go new file mode 100644 index 000000000..f4e34a22d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/meta_test.go @@ -0,0 +1,45 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import "testing" + +func TestSimpleMetaFactoryInterpret(t *testing.T) { + factory := SimpleMetaFactory{} + gvk, err := factory.Interpret([]byte(`{"apiVersion":"1","kind":"object"}`)) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if gvk.Version != "1" || gvk.Kind != "object" { + t.Errorf("unexpected interpret: %#v", gvk) + } + + // no kind or version + gvk, err = factory.Interpret([]byte(`{}`)) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if gvk.Version != "" || gvk.Kind != "" { + t.Errorf("unexpected interpret: %#v", gvk) + } + + // unparsable + gvk, err = factory.Interpret([]byte(`{`)) + if err == nil { + t.Errorf("unexpected non-error") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go new file mode 100644 index 000000000..a42b4a41a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/negotiated_codec.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +// TODO: We should split negotiated serializers that we can change versions on from those we can change +// serialization formats on +type negotiatedSerializerWrapper struct { + info runtime.SerializerInfo +} + +func NegotiatedSerializerWrapper(info runtime.SerializerInfo) runtime.NegotiatedSerializer { + return &negotiatedSerializerWrapper{info} +} + +func (n *negotiatedSerializerWrapper) SupportedMediaTypes() []runtime.SerializerInfo { + return []runtime.SerializerInfo{n.info} +} + +func (n *negotiatedSerializerWrapper) EncoderForVersion(e runtime.Encoder, _ runtime.GroupVersioner) runtime.Encoder { + return e +} + +func (n *negotiatedSerializerWrapper) DecoderToVersion(d runtime.Decoder, _gv runtime.GroupVersioner) runtime.Decoder { + return d +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD new file mode 100644 index 000000000..dcb895f87 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "protobuf.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go new file mode 100644 index 000000000..72d0ac79b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package protobuf provides a Kubernetes serializer for the protobuf format. +package protobuf // import "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go new file mode 100644 index 000000000..8d4ea7118 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/protobuf.go @@ -0,0 +1,448 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package protobuf + +import ( + "bytes" + "fmt" + "io" + "reflect" + + "github.com/gogo/protobuf/proto" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/recognizer" + "k8s.io/apimachinery/pkg/util/framer" +) + +var ( + // protoEncodingPrefix serves as a magic number for an encoded protobuf message on this serializer. All + // proto messages serialized by this schema will be preceded by the bytes 0x6b 0x38 0x73, with the fourth + // byte being reserved for the encoding style. The only encoding style defined is 0x00, which means that + // the rest of the byte stream is a message of type k8s.io.kubernetes.pkg.runtime.Unknown (proto2). + // + // See k8s.io/apimachinery/pkg/runtime/generated.proto for details of the runtime.Unknown message. + // + // This encoding scheme is experimental, and is subject to change at any time. + protoEncodingPrefix = []byte{0x6b, 0x38, 0x73, 0x00} +) + +type errNotMarshalable struct { + t reflect.Type +} + +func (e errNotMarshalable) Error() string { + return fmt.Sprintf("object %v does not implement the protobuf marshalling interface and cannot be encoded to a protobuf message", e.t) +} + +func IsNotMarshalable(err error) bool { + _, ok := err.(errNotMarshalable) + return err != nil && ok +} + +// NewSerializer creates a Protobuf serializer that handles encoding versioned objects into the proper wire form. If a typer +// is passed, the encoded object will have group, version, and kind fields set. If typer is nil, the objects will be written +// as-is (any type info passed with the object will be used). +// +// This encoding scheme is experimental, and is subject to change at any time. +func NewSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, defaultContentType string) *Serializer { + return &Serializer{ + prefix: protoEncodingPrefix, + creater: creater, + typer: typer, + contentType: defaultContentType, + } +} + +type Serializer struct { + prefix []byte + creater runtime.ObjectCreater + typer runtime.ObjectTyper + contentType string +} + +var _ runtime.Serializer = &Serializer{} +var _ recognizer.RecognizingDecoder = &Serializer{} + +// Decode attempts to convert the provided data into a protobuf message, extract the stored schema kind, apply the provided default +// gvk, and then load that data into an object matching the desired schema kind or the provided into. If into is *runtime.Unknown, +// the raw data will be extracted and no decoding will be performed. If into is not registered with the typer, then the object will +// be straight decoded using normal protobuf unmarshalling (the MarshalTo interface). If into is provided and the original data is +// not fully qualified with kind/version/group, the type of the into will be used to alter the returned gvk. On success or most +// errors, the method will return the calculated schema kind. +func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + if versioned, ok := into.(*runtime.VersionedObjects); ok { + into = versioned.Last() + obj, actual, err := s.Decode(originalData, gvk, into) + if err != nil { + return nil, actual, err + } + // the last item in versioned becomes into, so if versioned was not originally empty we reset the object + // array so the first position is the decoded object and the second position is the outermost object. + // if there were no objects in the versioned list passed to us, only add ourselves. + if into != nil && into != obj { + versioned.Objects = []runtime.Object{obj, into} + } else { + versioned.Objects = []runtime.Object{obj} + } + return versioned, actual, err + } + + prefixLen := len(s.prefix) + switch { + case len(originalData) == 0: + // TODO: treat like decoding {} from JSON with defaulting + return nil, nil, fmt.Errorf("empty data") + case len(originalData) < prefixLen || !bytes.Equal(s.prefix, originalData[:prefixLen]): + return nil, nil, fmt.Errorf("provided data does not appear to be a protobuf message, expected prefix %v", s.prefix) + case len(originalData) == prefixLen: + // TODO: treat like decoding {} from JSON with defaulting + return nil, nil, fmt.Errorf("empty body") + } + + data := originalData[prefixLen:] + unk := runtime.Unknown{} + if err := unk.Unmarshal(data); err != nil { + return nil, nil, err + } + + actual := unk.GroupVersionKind() + copyKindDefaults(&actual, gvk) + + if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil { + *intoUnknown = unk + if ok, _, _ := s.RecognizesData(bytes.NewBuffer(unk.Raw)); ok { + intoUnknown.ContentType = s.contentType + } + return intoUnknown, &actual, nil + } + + if into != nil { + types, _, err := s.typer.ObjectKinds(into) + switch { + case runtime.IsNotRegisteredError(err): + pb, ok := into.(proto.Message) + if !ok { + return nil, &actual, errNotMarshalable{reflect.TypeOf(into)} + } + if err := proto.Unmarshal(unk.Raw, pb); err != nil { + return nil, &actual, err + } + return into, &actual, nil + case err != nil: + return nil, &actual, err + default: + copyKindDefaults(&actual, &types[0]) + // if the result of defaulting did not set a version or group, ensure that at least group is set + // (copyKindDefaults will not assign Group if version is already set). This guarantees that the group + // of into is set if there is no better information from the caller or object. + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = types[0].Group + } + } + } + + if len(actual.Kind) == 0 { + return nil, &actual, runtime.NewMissingKindErr(fmt.Sprintf("%#v", unk.TypeMeta)) + } + if len(actual.Version) == 0 { + return nil, &actual, runtime.NewMissingVersionErr(fmt.Sprintf("%#v", unk.TypeMeta)) + } + + return unmarshalToObject(s.typer, s.creater, &actual, into, unk.Raw) +} + +// Encode serializes the provided object to the given writer. +func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { + prefixSize := uint64(len(s.prefix)) + + var unk runtime.Unknown + switch t := obj.(type) { + case *runtime.Unknown: + estimatedSize := prefixSize + uint64(t.Size()) + data := make([]byte, estimatedSize) + i, err := t.MarshalTo(data[prefixSize:]) + if err != nil { + return err + } + copy(data, s.prefix) + _, err = w.Write(data[:prefixSize+uint64(i)]) + return err + default: + kind := obj.GetObjectKind().GroupVersionKind() + unk = runtime.Unknown{ + TypeMeta: runtime.TypeMeta{ + Kind: kind.Kind, + APIVersion: kind.GroupVersion().String(), + }, + } + } + + switch t := obj.(type) { + case bufferedMarshaller: + // this path performs a single allocation during write but requires the caller to implement + // the more efficient Size and MarshalTo methods + encodedSize := uint64(t.Size()) + estimatedSize := prefixSize + estimateUnknownSize(&unk, encodedSize) + data := make([]byte, estimatedSize) + + i, err := unk.NestedMarshalTo(data[prefixSize:], t, encodedSize) + if err != nil { + return err + } + + copy(data, s.prefix) + + _, err = w.Write(data[:prefixSize+uint64(i)]) + return err + + case proto.Marshaler: + // this path performs extra allocations + data, err := t.Marshal() + if err != nil { + return err + } + unk.Raw = data + + estimatedSize := prefixSize + uint64(unk.Size()) + data = make([]byte, estimatedSize) + + i, err := unk.MarshalTo(data[prefixSize:]) + if err != nil { + return err + } + + copy(data, s.prefix) + + _, err = w.Write(data[:prefixSize+uint64(i)]) + return err + + default: + // TODO: marshal with a different content type and serializer (JSON for third party objects) + return errNotMarshalable{reflect.TypeOf(obj)} + } +} + +// RecognizesData implements the RecognizingDecoder interface. +func (s *Serializer) RecognizesData(peek io.Reader) (bool, bool, error) { + prefix := make([]byte, 4) + n, err := peek.Read(prefix) + if err != nil { + if err == io.EOF { + return false, false, nil + } + return false, false, err + } + if n != 4 { + return false, false, nil + } + return bytes.Equal(s.prefix, prefix), false, nil +} + +// copyKindDefaults defaults dst to the value in src if dst does not have a value set. +func copyKindDefaults(dst, src *schema.GroupVersionKind) { + if src == nil { + return + } + // apply kind and version defaulting from provided default + if len(dst.Kind) == 0 { + dst.Kind = src.Kind + } + if len(dst.Version) == 0 && len(src.Version) > 0 { + dst.Group = src.Group + dst.Version = src.Version + } +} + +// bufferedMarshaller describes a more efficient marshalling interface that can avoid allocating multiple +// byte buffers by pre-calculating the size of the final buffer needed. +type bufferedMarshaller interface { + proto.Sizer + runtime.ProtobufMarshaller +} + +// estimateUnknownSize returns the expected bytes consumed by a given runtime.Unknown +// object with a nil RawJSON struct and the expected size of the provided buffer. The +// returned size will not be correct if RawJSOn is set on unk. +func estimateUnknownSize(unk *runtime.Unknown, byteSize uint64) uint64 { + size := uint64(unk.Size()) + // protobuf uses 1 byte for the tag, a varint for the length of the array (at most 8 bytes - uint64 - here), + // and the size of the array. + size += 1 + 8 + byteSize + return size +} + +// NewRawSerializer creates a Protobuf serializer that handles encoding versioned objects into the proper wire form. If typer +// is not nil, the object has the group, version, and kind fields set. This serializer does not provide type information for the +// encoded object, and thus is not self describing (callers must know what type is being described in order to decode). +// +// This encoding scheme is experimental, and is subject to change at any time. +func NewRawSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, defaultContentType string) *RawSerializer { + return &RawSerializer{ + creater: creater, + typer: typer, + contentType: defaultContentType, + } +} + +// RawSerializer encodes and decodes objects without adding a runtime.Unknown wrapper (objects are encoded without identifying +// type). +type RawSerializer struct { + creater runtime.ObjectCreater + typer runtime.ObjectTyper + contentType string +} + +var _ runtime.Serializer = &RawSerializer{} + +// Decode attempts to convert the provided data into a protobuf message, extract the stored schema kind, apply the provided default +// gvk, and then load that data into an object matching the desired schema kind or the provided into. If into is *runtime.Unknown, +// the raw data will be extracted and no decoding will be performed. If into is not registered with the typer, then the object will +// be straight decoded using normal protobuf unmarshalling (the MarshalTo interface). If into is provided and the original data is +// not fully qualified with kind/version/group, the type of the into will be used to alter the returned gvk. On success or most +// errors, the method will return the calculated schema kind. +func (s *RawSerializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + if into == nil { + return nil, nil, fmt.Errorf("this serializer requires an object to decode into: %#v", s) + } + + if versioned, ok := into.(*runtime.VersionedObjects); ok { + into = versioned.Last() + obj, actual, err := s.Decode(originalData, gvk, into) + if err != nil { + return nil, actual, err + } + if into != nil && into != obj { + versioned.Objects = []runtime.Object{obj, into} + } else { + versioned.Objects = []runtime.Object{obj} + } + return versioned, actual, err + } + + if len(originalData) == 0 { + // TODO: treat like decoding {} from JSON with defaulting + return nil, nil, fmt.Errorf("empty data") + } + data := originalData + + actual := &schema.GroupVersionKind{} + copyKindDefaults(actual, gvk) + + if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil { + intoUnknown.Raw = data + intoUnknown.ContentEncoding = "" + intoUnknown.ContentType = s.contentType + intoUnknown.SetGroupVersionKind(*actual) + return intoUnknown, actual, nil + } + + types, _, err := s.typer.ObjectKinds(into) + switch { + case runtime.IsNotRegisteredError(err): + pb, ok := into.(proto.Message) + if !ok { + return nil, actual, errNotMarshalable{reflect.TypeOf(into)} + } + if err := proto.Unmarshal(data, pb); err != nil { + return nil, actual, err + } + return into, actual, nil + case err != nil: + return nil, actual, err + default: + copyKindDefaults(actual, &types[0]) + // if the result of defaulting did not set a version or group, ensure that at least group is set + // (copyKindDefaults will not assign Group if version is already set). This guarantees that the group + // of into is set if there is no better information from the caller or object. + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = types[0].Group + } + } + + if len(actual.Kind) == 0 { + return nil, actual, runtime.NewMissingKindErr("") + } + if len(actual.Version) == 0 { + return nil, actual, runtime.NewMissingVersionErr("") + } + + return unmarshalToObject(s.typer, s.creater, actual, into, data) +} + +// unmarshalToObject is the common code between decode in the raw and normal serializer. +func unmarshalToObject(typer runtime.ObjectTyper, creater runtime.ObjectCreater, actual *schema.GroupVersionKind, into runtime.Object, data []byte) (runtime.Object, *schema.GroupVersionKind, error) { + // use the target if necessary + obj, err := runtime.UseOrCreateObject(typer, creater, *actual, into) + if err != nil { + return nil, actual, err + } + + pb, ok := obj.(proto.Message) + if !ok { + return nil, actual, errNotMarshalable{reflect.TypeOf(obj)} + } + if err := proto.Unmarshal(data, pb); err != nil { + return nil, actual, err + } + return obj, actual, nil +} + +// Encode serializes the provided object to the given writer. Overrides is ignored. +func (s *RawSerializer) Encode(obj runtime.Object, w io.Writer) error { + switch t := obj.(type) { + case bufferedMarshaller: + // this path performs a single allocation during write but requires the caller to implement + // the more efficient Size and MarshalTo methods + encodedSize := uint64(t.Size()) + data := make([]byte, encodedSize) + + n, err := t.MarshalTo(data) + if err != nil { + return err + } + _, err = w.Write(data[:n]) + return err + + case proto.Marshaler: + // this path performs extra allocations + data, err := t.Marshal() + if err != nil { + return err + } + _, err = w.Write(data) + return err + + default: + return errNotMarshalable{reflect.TypeOf(obj)} + } +} + +var LengthDelimitedFramer = lengthDelimitedFramer{} + +type lengthDelimitedFramer struct{} + +// NewFrameWriter implements stream framing for this serializer +func (lengthDelimitedFramer) NewFrameWriter(w io.Writer) io.Writer { + return framer.NewLengthDelimitedFrameWriter(w) +} + +// NewFrameReader implements stream framing for this serializer +func (lengthDelimitedFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { + return framer.NewLengthDelimitedFrameReader(r) +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf_extension.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf_extension.go new file mode 100644 index 000000000..545cf78df --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf_extension.go @@ -0,0 +1,48 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" +) + +const ( + // contentTypeProtobuf is the protobuf type exposed for Kubernetes. It is private to prevent others from + // depending on it unintentionally. + // TODO: potentially move to pkg/api (since it's part of the Kube public API) and pass it in to the + // CodecFactory on initialization. + contentTypeProtobuf = "application/vnd.kubernetes.protobuf" +) + +func protobufSerializer(scheme *runtime.Scheme) (serializerType, bool) { + serializer := protobuf.NewSerializer(scheme, scheme, contentTypeProtobuf) + raw := protobuf.NewRawSerializer(scheme, scheme, contentTypeProtobuf) + return serializerType{ + AcceptContentTypes: []string{contentTypeProtobuf}, + ContentType: contentTypeProtobuf, + FileExtensions: []string{"pb"}, + Serializer: serializer, + + Framer: protobuf.LengthDelimitedFramer, + StreamSerializer: raw, + }, true +} + +func init() { + serializerExtensions = append(serializerExtensions, protobufSerializer) +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD new file mode 100644 index 000000000..9cf147c8c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["recognizer.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go new file mode 100644 index 000000000..38497ab53 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/recognizer.go @@ -0,0 +1,127 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package recognizer + +import ( + "bufio" + "bytes" + "fmt" + "io" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +type RecognizingDecoder interface { + runtime.Decoder + // RecognizesData should return true if the input provided in the provided reader + // belongs to this decoder, or an error if the data could not be read or is ambiguous. + // Unknown is true if the data could not be determined to match the decoder type. + // Decoders should assume that they can read as much of peek as they need (as the caller + // provides) and may return unknown if the data provided is not sufficient to make a + // a determination. When peek returns EOF that may mean the end of the input or the + // end of buffered input - recognizers should return the best guess at that time. + RecognizesData(peek io.Reader) (ok, unknown bool, err error) +} + +// NewDecoder creates a decoder that will attempt multiple decoders in an order defined +// by: +// +// 1. The decoder implements RecognizingDecoder and identifies the data +// 2. All other decoders, and any decoder that returned true for unknown. +// +// The order passed to the constructor is preserved within those priorities. +func NewDecoder(decoders ...runtime.Decoder) runtime.Decoder { + return &decoder{ + decoders: decoders, + } +} + +type decoder struct { + decoders []runtime.Decoder +} + +var _ RecognizingDecoder = &decoder{} + +func (d *decoder) RecognizesData(peek io.Reader) (bool, bool, error) { + var ( + lastErr error + anyUnknown bool + ) + data, _ := bufio.NewReaderSize(peek, 1024).Peek(1024) + for _, r := range d.decoders { + switch t := r.(type) { + case RecognizingDecoder: + ok, unknown, err := t.RecognizesData(bytes.NewBuffer(data)) + if err != nil { + lastErr = err + continue + } + anyUnknown = anyUnknown || unknown + if !ok { + continue + } + return true, false, nil + } + } + return false, anyUnknown, lastErr +} + +func (d *decoder) Decode(data []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + var ( + lastErr error + skipped []runtime.Decoder + ) + + // try recognizers, record any decoders we need to give a chance later + for _, r := range d.decoders { + switch t := r.(type) { + case RecognizingDecoder: + buf := bytes.NewBuffer(data) + ok, unknown, err := t.RecognizesData(buf) + if err != nil { + lastErr = err + continue + } + if unknown { + skipped = append(skipped, t) + continue + } + if !ok { + continue + } + return r.Decode(data, gvk, into) + default: + skipped = append(skipped, t) + } + } + + // try recognizers that returned unknown or didn't recognize their data + for _, r := range skipped { + out, actual, err := r.Decode(data, gvk, into) + if err != nil { + lastErr = err + continue + } + return out, actual, nil + } + + if lastErr == nil { + lastErr = fmt.Errorf("no serialization format matched the provided data") + } + return nil, nil, lastErr +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD new file mode 100644 index 000000000..25308c88f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/BUILD @@ -0,0 +1,20 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["recognizer_test.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go new file mode 100644 index 000000000..79329f3df --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/testing/recognizer_test.go @@ -0,0 +1,58 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/runtime/serializer/recognizer" +) + +type A struct{} + +func (A) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +func TestRecognizer(t *testing.T) { + s := runtime.NewScheme() + s.AddKnownTypes(schema.GroupVersion{Version: "v1"}, &A{}) + d := recognizer.NewDecoder( + json.NewSerializer(json.DefaultMetaFactory, s, s, false), + json.NewYAMLSerializer(json.DefaultMetaFactory, s, s), + ) + out, _, err := d.Decode([]byte(` +kind: A +apiVersion: v1 +`), nil, nil) + if err != nil { + t.Fatal(err) + } + t.Logf("%#v", out) + + out, _, err = d.Decode([]byte(` +{ + "kind":"A", + "apiVersion":"v1" +} +`), nil, nil) + if err != nil { + t.Fatal(err) + } + t.Logf("%#v", out) +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD new file mode 100644 index 000000000..069f66301 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["streaming_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/framer:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["streaming.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go new file mode 100644 index 000000000..91fd4ed4f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming.go @@ -0,0 +1,137 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package streaming implements encoder and decoder for streams +// of runtime.Objects over io.Writer/Readers. +package streaming + +import ( + "bytes" + "fmt" + "io" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// Encoder is a runtime.Encoder on a stream. +type Encoder interface { + // Encode will write the provided object to the stream or return an error. It obeys the same + // contract as runtime.VersionedEncoder. + Encode(obj runtime.Object) error +} + +// Decoder is a runtime.Decoder from a stream. +type Decoder interface { + // Decode will return io.EOF when no more objects are available. + Decode(defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) + // Close closes the underlying stream. + Close() error +} + +// Serializer is a factory for creating encoders and decoders that work over streams. +type Serializer interface { + NewEncoder(w io.Writer) Encoder + NewDecoder(r io.ReadCloser) Decoder +} + +type decoder struct { + reader io.ReadCloser + decoder runtime.Decoder + buf []byte + maxBytes int + resetRead bool +} + +// NewDecoder creates a streaming decoder that reads object chunks from r and decodes them with d. +// The reader is expected to return ErrShortRead if the provided buffer is not large enough to read +// an entire object. +func NewDecoder(r io.ReadCloser, d runtime.Decoder) Decoder { + return &decoder{ + reader: r, + decoder: d, + buf: make([]byte, 1024), + maxBytes: 1024 * 1024, + } +} + +var ErrObjectTooLarge = fmt.Errorf("object to decode was longer than maximum allowed size") + +// Decode reads the next object from the stream and decodes it. +func (d *decoder) Decode(defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + base := 0 + for { + n, err := d.reader.Read(d.buf[base:]) + if err == io.ErrShortBuffer { + if n == 0 { + return nil, nil, fmt.Errorf("got short buffer with n=0, base=%d, cap=%d", base, cap(d.buf)) + } + if d.resetRead { + continue + } + // double the buffer size up to maxBytes + if len(d.buf) < d.maxBytes { + base += n + d.buf = append(d.buf, make([]byte, len(d.buf))...) + continue + } + // must read the rest of the frame (until we stop getting ErrShortBuffer) + d.resetRead = true + base = 0 + return nil, nil, ErrObjectTooLarge + } + if err != nil { + return nil, nil, err + } + if d.resetRead { + // now that we have drained the large read, continue + d.resetRead = false + continue + } + base += n + break + } + return d.decoder.Decode(d.buf[:base], defaults, into) +} + +func (d *decoder) Close() error { + return d.reader.Close() +} + +type encoder struct { + writer io.Writer + encoder runtime.Encoder + buf *bytes.Buffer +} + +// NewEncoder returns a new streaming encoder. +func NewEncoder(w io.Writer, e runtime.Encoder) Encoder { + return &encoder{ + writer: w, + encoder: e, + buf: &bytes.Buffer{}, + } +} + +// Encode writes the provided object to the nested writer. +func (e *encoder) Encode(obj runtime.Object) error { + if err := e.encoder.Encode(obj, e.buf); err != nil { + return err + } + _, err := e.writer.Write(e.buf.Bytes()) + e.buf.Reset() + return err +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming_test.go new file mode 100644 index 000000000..9cae6a32c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/streaming_test.go @@ -0,0 +1,84 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package streaming + +import ( + "bytes" + "io" + "io/ioutil" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/framer" +) + +type fakeDecoder struct { + got []byte + obj runtime.Object + err error +} + +func (d *fakeDecoder) Decode(data []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + d.got = data + return d.obj, nil, d.err +} + +func TestEmptyDecoder(t *testing.T) { + buf := bytes.NewBuffer([]byte{}) + d := &fakeDecoder{} + _, _, err := NewDecoder(ioutil.NopCloser(buf), d).Decode(nil, nil) + if err != io.EOF { + t.Fatal(err) + } +} + +func TestDecoder(t *testing.T) { + frames := [][]byte{ + make([]byte, 1025), + make([]byte, 1024*5), + make([]byte, 1024*1024*5), + make([]byte, 1025), + } + pr, pw := io.Pipe() + fw := framer.NewLengthDelimitedFrameWriter(pw) + go func() { + for i := range frames { + fw.Write(frames[i]) + } + pw.Close() + }() + + r := framer.NewLengthDelimitedFrameReader(pr) + d := &fakeDecoder{} + dec := NewDecoder(r, d) + if _, _, err := dec.Decode(nil, nil); err != nil || !bytes.Equal(d.got, frames[0]) { + t.Fatalf("unexpected %v %v", err, len(d.got)) + } + if _, _, err := dec.Decode(nil, nil); err != nil || !bytes.Equal(d.got, frames[1]) { + t.Fatalf("unexpected %v %v", err, len(d.got)) + } + if _, _, err := dec.Decode(nil, nil); err != ErrObjectTooLarge || !bytes.Equal(d.got, frames[1]) { + t.Fatalf("unexpected %v %v", err, len(d.got)) + } + if _, _, err := dec.Decode(nil, nil); err != nil || !bytes.Equal(d.got, frames[3]) { + t.Fatalf("unexpected %v %v", err, len(d.got)) + } + if _, _, err := dec.Decode(nil, nil); err != io.EOF { + t.Fatalf("unexpected %v %v", err, len(d.got)) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD new file mode 100644 index 000000000..393000bc5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["versioning_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["versioning.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go new file mode 100644 index 000000000..829d4fa89 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning.go @@ -0,0 +1,273 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioning + +import ( + "io" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +// NewCodecForScheme is a convenience method for callers that are using a scheme. +func NewCodecForScheme( + // TODO: I should be a scheme interface? + scheme *runtime.Scheme, + encoder runtime.Encoder, + decoder runtime.Decoder, + encodeVersion runtime.GroupVersioner, + decodeVersion runtime.GroupVersioner, +) runtime.Codec { + return NewCodec(encoder, decoder, runtime.UnsafeObjectConvertor(scheme), scheme, scheme, scheme, nil, encodeVersion, decodeVersion) +} + +// NewDefaultingCodecForScheme is a convenience method for callers that are using a scheme. +func NewDefaultingCodecForScheme( + // TODO: I should be a scheme interface? + scheme *runtime.Scheme, + encoder runtime.Encoder, + decoder runtime.Decoder, + encodeVersion runtime.GroupVersioner, + decodeVersion runtime.GroupVersioner, +) runtime.Codec { + return NewCodec(encoder, decoder, runtime.UnsafeObjectConvertor(scheme), scheme, scheme, scheme, scheme, encodeVersion, decodeVersion) +} + +// NewCodec takes objects in their internal versions and converts them to external versions before +// serializing them. It assumes the serializer provided to it only deals with external versions. +// This class is also a serializer, but is generally used with a specific version. +func NewCodec( + encoder runtime.Encoder, + decoder runtime.Decoder, + convertor runtime.ObjectConvertor, + creater runtime.ObjectCreater, + copier runtime.ObjectCopier, + typer runtime.ObjectTyper, + defaulter runtime.ObjectDefaulter, + encodeVersion runtime.GroupVersioner, + decodeVersion runtime.GroupVersioner, +) runtime.Codec { + internal := &codec{ + encoder: encoder, + decoder: decoder, + convertor: convertor, + creater: creater, + copier: copier, + typer: typer, + defaulter: defaulter, + + encodeVersion: encodeVersion, + decodeVersion: decodeVersion, + } + return internal +} + +type codec struct { + encoder runtime.Encoder + decoder runtime.Decoder + convertor runtime.ObjectConvertor + creater runtime.ObjectCreater + copier runtime.ObjectCopier + typer runtime.ObjectTyper + defaulter runtime.ObjectDefaulter + + encodeVersion runtime.GroupVersioner + decodeVersion runtime.GroupVersioner +} + +// Decode attempts a decode of the object, then tries to convert it to the internal version. If into is provided and the decoding is +// successful, the returned runtime.Object will be the value passed as into. Note that this may bypass conversion if you pass an +// into that matches the serialized version. +func (c *codec) Decode(data []byte, defaultGVK *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + versioned, isVersioned := into.(*runtime.VersionedObjects) + if isVersioned { + into = versioned.Last() + } + + obj, gvk, err := c.decoder.Decode(data, defaultGVK, into) + if err != nil { + return nil, gvk, err + } + + if d, ok := obj.(runtime.NestedObjectDecoder); ok { + if err := d.DecodeNestedObjects(DirectDecoder{c.decoder}); err != nil { + return nil, gvk, err + } + } + + // if we specify a target, use generic conversion. + if into != nil { + if into == obj { + if isVersioned { + return versioned, gvk, nil + } + return into, gvk, nil + } + + // perform defaulting if requested + if c.defaulter != nil { + // create a copy to ensure defaulting is not applied to the original versioned objects + if isVersioned { + copied, err := c.copier.Copy(obj) + if err != nil { + utilruntime.HandleError(err) + copied = obj + } + versioned.Objects = []runtime.Object{copied} + } + c.defaulter.Default(obj) + } else { + if isVersioned { + versioned.Objects = []runtime.Object{obj} + } + } + + if err := c.convertor.Convert(obj, into, c.decodeVersion); err != nil { + return nil, gvk, err + } + + if isVersioned { + versioned.Objects = append(versioned.Objects, into) + return versioned, gvk, nil + } + return into, gvk, nil + } + + // Convert if needed. + if isVersioned { + // create a copy, because ConvertToVersion does not guarantee non-mutation of objects + copied, err := c.copier.Copy(obj) + if err != nil { + utilruntime.HandleError(err) + copied = obj + } + versioned.Objects = []runtime.Object{copied} + } + + // perform defaulting if requested + if c.defaulter != nil { + c.defaulter.Default(obj) + } + + out, err := c.convertor.ConvertToVersion(obj, c.decodeVersion) + if err != nil { + return nil, gvk, err + } + if isVersioned { + if versioned.Last() != out { + versioned.Objects = append(versioned.Objects, out) + } + return versioned, gvk, nil + } + return out, gvk, nil +} + +// Encode ensures the provided object is output in the appropriate group and version, invoking +// conversion if necessary. Unversioned objects (according to the ObjectTyper) are output as is. +func (c *codec) Encode(obj runtime.Object, w io.Writer) error { + switch obj.(type) { + case *runtime.Unknown, runtime.Unstructured: + return c.encoder.Encode(obj, w) + } + + gvks, isUnversioned, err := c.typer.ObjectKinds(obj) + if err != nil { + return err + } + + if c.encodeVersion == nil || isUnversioned { + if e, ok := obj.(runtime.NestedObjectEncoder); ok { + if err := e.EncodeNestedObjects(DirectEncoder{Encoder: c.encoder, ObjectTyper: c.typer}); err != nil { + return err + } + } + objectKind := obj.GetObjectKind() + old := objectKind.GroupVersionKind() + objectKind.SetGroupVersionKind(gvks[0]) + err = c.encoder.Encode(obj, w) + objectKind.SetGroupVersionKind(old) + return err + } + + // Perform a conversion if necessary + objectKind := obj.GetObjectKind() + old := objectKind.GroupVersionKind() + out, err := c.convertor.ConvertToVersion(obj, c.encodeVersion) + if err != nil { + return err + } + + if e, ok := out.(runtime.NestedObjectEncoder); ok { + if err := e.EncodeNestedObjects(DirectEncoder{Encoder: c.encoder, ObjectTyper: c.typer}); err != nil { + return err + } + } + + // Conversion is responsible for setting the proper group, version, and kind onto the outgoing object + err = c.encoder.Encode(out, w) + // restore the old GVK, in case conversion returned the same object + objectKind.SetGroupVersionKind(old) + return err +} + +// DirectEncoder serializes an object and ensures the GVK is set. +type DirectEncoder struct { + Version runtime.GroupVersioner + runtime.Encoder + runtime.ObjectTyper +} + +// Encode does not do conversion. It sets the gvk during serialization. +func (e DirectEncoder) Encode(obj runtime.Object, stream io.Writer) error { + gvks, _, err := e.ObjectTyper.ObjectKinds(obj) + if err != nil { + if runtime.IsNotRegisteredError(err) { + return e.Encoder.Encode(obj, stream) + } + return err + } + kind := obj.GetObjectKind() + oldGVK := kind.GroupVersionKind() + gvk := gvks[0] + if e.Version != nil { + preferredGVK, ok := e.Version.KindForGroupVersionKinds(gvks) + if ok { + gvk = preferredGVK + } + } + kind.SetGroupVersionKind(gvk) + err = e.Encoder.Encode(obj, stream) + kind.SetGroupVersionKind(oldGVK) + return err +} + +// DirectDecoder clears the group version kind of a deserialized object. +type DirectDecoder struct { + runtime.Decoder +} + +// Decode does not do conversion. It removes the gvk during deserialization. +func (d DirectDecoder) Decode(data []byte, defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + obj, gvk, err := d.Decoder.Decode(data, defaults, into) + if obj != nil { + kind := obj.GetObjectKind() + // clearing the gvk is just a convention of a codec + kind.SetGroupVersionKind(schema.GroupVersionKind{}) + } + return obj, gvk, err +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go new file mode 100644 index 000000000..19b4f6d4f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/versioning_test.go @@ -0,0 +1,399 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioning + +import ( + "fmt" + "io" + "io/ioutil" + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/diff" +) + +type testDecodable struct { + Other string + Value int `json:"value"` + gvk schema.GroupVersionKind +} + +func (d *testDecodable) GetObjectKind() schema.ObjectKind { return d } +func (d *testDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } +func (d *testDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } + +type testNestedDecodable struct { + Other string + Value int `json:"value"` + + gvk schema.GroupVersionKind + nestedCalled bool + nestedErr error +} + +func (d *testNestedDecodable) GetObjectKind() schema.ObjectKind { return d } +func (d *testNestedDecodable) SetGroupVersionKind(gvk schema.GroupVersionKind) { d.gvk = gvk } +func (d *testNestedDecodable) GroupVersionKind() schema.GroupVersionKind { return d.gvk } + +func (d *testNestedDecodable) EncodeNestedObjects(e runtime.Encoder) error { + d.nestedCalled = true + return d.nestedErr +} + +func (d *testNestedDecodable) DecodeNestedObjects(_ runtime.Decoder) error { + d.nestedCalled = true + return d.nestedErr +} + +func TestNestedDecode(t *testing.T) { + n := &testNestedDecodable{nestedErr: fmt.Errorf("unable to decode")} + decoder := &mockSerializer{obj: n} + codec := NewCodec(nil, decoder, nil, nil, nil, nil, nil, nil, nil) + if _, _, err := codec.Decode([]byte(`{}`), nil, n); err != n.nestedErr { + t.Errorf("unexpected error: %v", err) + } + if !n.nestedCalled { + t.Errorf("did not invoke nested decoder") + } +} + +func TestNestedEncode(t *testing.T) { + n := &testNestedDecodable{nestedErr: fmt.Errorf("unable to decode")} + n2 := &testNestedDecodable{nestedErr: fmt.Errorf("unable to decode 2")} + encoder := &mockSerializer{obj: n} + codec := NewCodec( + encoder, nil, + &checkConvertor{obj: n2, groupVersion: schema.GroupVersion{Group: "other"}}, + nil, nil, + &mockTyper{gvks: []schema.GroupVersionKind{{Kind: "test"}}}, + nil, + schema.GroupVersion{Group: "other"}, nil, + ) + if err := codec.Encode(n, ioutil.Discard); err != n2.nestedErr { + t.Errorf("unexpected error: %v", err) + } + if n.nestedCalled || !n2.nestedCalled { + t.Errorf("did not invoke correct nested decoder") + } +} + +func TestDecode(t *testing.T) { + gvk1 := &schema.GroupVersionKind{Kind: "Test", Group: "other", Version: "blah"} + decodable1 := &testDecodable{} + decodable2 := &testDecodable{} + decodable3 := &testDecodable{} + versionedDecodable1 := &runtime.VersionedObjects{Objects: []runtime.Object{decodable1}} + + testCases := []struct { + serializer runtime.Serializer + convertor runtime.ObjectConvertor + creater runtime.ObjectCreater + copier runtime.ObjectCopier + typer runtime.ObjectTyper + defaulter runtime.ObjectDefaulter + yaml bool + pretty bool + + encodes, decodes runtime.GroupVersioner + + defaultGVK *schema.GroupVersionKind + into runtime.Object + + errFn func(error) bool + expectedObject runtime.Object + sameObject runtime.Object + expectedGVK *schema.GroupVersionKind + }{ + { + serializer: &mockSerializer{actual: gvk1}, + convertor: &checkConvertor{groupVersion: schema.GroupVersion{Group: "other", Version: "__internal"}}, + expectedGVK: gvk1, + decodes: schema.GroupVersion{Group: "other", Version: "__internal"}, + }, + { + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: schema.GroupVersion{Group: "other", Version: "__internal"}}, + expectedGVK: gvk1, + sameObject: decodable2, + decodes: schema.GroupVersion{Group: "other", Version: "__internal"}, + }, + // defaultGVK.Group is allowed to force a conversion to the destination group + { + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + defaultGVK: &schema.GroupVersionKind{Group: "force"}, + convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: schema.GroupVersion{Group: "force", Version: "__internal"}}, + expectedGVK: gvk1, + sameObject: decodable2, + decodes: schema.GroupVersion{Group: "force", Version: "__internal"}, + }, + // uses direct conversion for into when objects differ + { + into: decodable3, + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable3, directConvert: true}, + expectedGVK: gvk1, + sameObject: decodable3, + }, + { + into: versionedDecodable1, + serializer: &mockSerializer{actual: gvk1, obj: decodable3}, + convertor: &checkConvertor{in: decodable3, obj: decodable1, directConvert: true}, + expectedGVK: gvk1, + sameObject: versionedDecodable1, + }, + // returns directly when serializer returns into + { + into: decodable3, + serializer: &mockSerializer{actual: gvk1, obj: decodable3}, + expectedGVK: gvk1, + sameObject: decodable3, + }, + // returns directly when serializer returns into + { + into: versionedDecodable1, + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + expectedGVK: gvk1, + sameObject: versionedDecodable1, + }, + + // runtime.VersionedObjects are decoded + { + into: &runtime.VersionedObjects{Objects: []runtime.Object{}}, + + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + copier: &checkCopy{in: decodable1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: schema.GroupVersion{Group: "other", Version: "__internal"}}, + expectedGVK: gvk1, + expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}}, + decodes: schema.GroupVersion{Group: "other", Version: "__internal"}, + }, + { + into: &runtime.VersionedObjects{Objects: []runtime.Object{}}, + + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + copier: &checkCopy{in: decodable1, obj: nil, err: fmt.Errorf("error on copy")}, + convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: schema.GroupVersion{Group: "other", Version: "__internal"}}, + expectedGVK: gvk1, + expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}}, + decodes: schema.GroupVersion{Group: "other", Version: "__internal"}, + }, + + // decode into the same version as the serialized object + { + decodes: schema.GroupVersions{gvk1.GroupVersion()}, + + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable1, groupVersion: schema.GroupVersions{{Group: "other", Version: "blah"}}}, + expectedGVK: gvk1, + expectedObject: decodable1, + }, + { + into: &runtime.VersionedObjects{Objects: []runtime.Object{}}, + decodes: schema.GroupVersions{gvk1.GroupVersion()}, + + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable1, groupVersion: schema.GroupVersions{{Group: "other", Version: "blah"}}}, + copier: &checkCopy{in: decodable1, obj: decodable1, err: nil}, + expectedGVK: gvk1, + expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1}}, + }, + + // codec with non matching version skips conversion altogether + { + decodes: schema.GroupVersions{{Group: "something", Version: "else"}}, + + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable1, groupVersion: schema.GroupVersions{{Group: "something", Version: "else"}}}, + expectedGVK: gvk1, + expectedObject: decodable1, + }, + { + into: &runtime.VersionedObjects{Objects: []runtime.Object{}}, + decodes: schema.GroupVersions{{Group: "something", Version: "else"}}, + + serializer: &mockSerializer{actual: gvk1, obj: decodable1}, + convertor: &checkConvertor{in: decodable1, obj: decodable1, groupVersion: schema.GroupVersions{{Group: "something", Version: "else"}}}, + copier: &checkCopy{in: decodable1, obj: decodable1, err: nil}, + expectedGVK: gvk1, + expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1}}, + }, + } + + for i, test := range testCases { + t.Logf("%d", i) + s := NewCodec(test.serializer, test.serializer, test.convertor, test.creater, test.copier, test.typer, test.defaulter, test.encodes, test.decodes) + obj, gvk, err := s.Decode([]byte(`{}`), test.defaultGVK, test.into) + + if !reflect.DeepEqual(test.expectedGVK, gvk) { + t.Errorf("%d: unexpected GVK: %v", i, gvk) + } + + switch { + case err == nil && test.errFn != nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil && test.errFn == nil: + t.Errorf("%d: failed: %v", i, err) + continue + case err != nil: + if !test.errFn(err) { + t.Errorf("%d: failed: %v", i, err) + } + if obj != nil { + t.Errorf("%d: should have returned nil object", i) + } + continue + } + + if test.into != nil && test.into != obj { + t.Errorf("%d: expected into to be returned: %v", i, obj) + continue + } + + switch { + case test.expectedObject != nil: + if !reflect.DeepEqual(test.expectedObject, obj) { + t.Errorf("%d: unexpected object:\n%s", i, diff.ObjectGoPrintSideBySide(test.expectedObject, obj)) + } + case test.sameObject != nil: + if test.sameObject != obj { + t.Errorf("%d: unexpected object:\n%s", i, diff.ObjectGoPrintSideBySide(test.sameObject, obj)) + } + case obj != nil: + t.Errorf("%d: unexpected object: %#v", i, obj) + } + } +} + +type checkCopy struct { + in, obj runtime.Object + err error +} + +func (c *checkCopy) Copy(obj runtime.Object) (runtime.Object, error) { + if c.in != nil && c.in != obj { + return nil, fmt.Errorf("unexpected input to copy: %#v", obj) + } + return c.obj, c.err +} + +type checkConvertor struct { + err error + in, obj runtime.Object + groupVersion runtime.GroupVersioner + directConvert bool +} + +func (c *checkConvertor) Convert(in, out, context interface{}) error { + if !c.directConvert { + return fmt.Errorf("unexpected call to Convert") + } + if c.in != nil && c.in != in { + return fmt.Errorf("unexpected in: %s", in) + } + if c.obj != nil && c.obj != out { + return fmt.Errorf("unexpected out: %s", out) + } + return c.err +} +func (c *checkConvertor) ConvertToVersion(in runtime.Object, outVersion runtime.GroupVersioner) (out runtime.Object, err error) { + if c.directConvert { + return nil, fmt.Errorf("unexpected call to ConvertToVersion") + } + if c.in != nil && c.in != in { + return nil, fmt.Errorf("unexpected in: %s", in) + } + if !reflect.DeepEqual(c.groupVersion, outVersion) { + return nil, fmt.Errorf("unexpected outversion: %s (%s)", outVersion, c.groupVersion) + } + return c.obj, c.err +} +func (c *checkConvertor) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { + return "", "", fmt.Errorf("unexpected call to ConvertFieldLabel") +} + +type mockSerializer struct { + err error + obj runtime.Object + encodingObjGVK schema.GroupVersionKind + + defaults, actual *schema.GroupVersionKind + into runtime.Object +} + +func (s *mockSerializer) Decode(data []byte, defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + s.defaults = defaults + s.into = into + return s.obj, s.actual, s.err +} + +func (s *mockSerializer) Encode(obj runtime.Object, w io.Writer) error { + s.obj = obj + s.encodingObjGVK = obj.GetObjectKind().GroupVersionKind() + return s.err +} + +type mockCreater struct { + err error + obj runtime.Object +} + +func (c *mockCreater) New(kind schema.GroupVersionKind) (runtime.Object, error) { + return c.obj, c.err +} + +type mockTyper struct { + gvks []schema.GroupVersionKind + unversioned bool + err error +} + +func (t *mockTyper) ObjectKinds(obj runtime.Object) ([]schema.GroupVersionKind, bool, error) { + return t.gvks, t.unversioned, t.err +} + +func (t *mockTyper) Recognizes(_ schema.GroupVersionKind) bool { + return true +} + +func TestDirectCodecEncode(t *testing.T) { + serializer := mockSerializer{} + typer := mockTyper{ + gvks: []schema.GroupVersionKind{ + { + Group: "wrong_group", + Kind: "some_kind", + }, + { + Group: "expected_group", + Kind: "some_kind", + }, + }, + } + + c := DirectEncoder{ + Version: schema.GroupVersion{Group: "expected_group"}, + Encoder: &serializer, + ObjectTyper: &typer, + } + c.Encode(&testDecodable{}, ioutil.Discard) + if e, a := "expected_group", serializer.encodingObjGVK.Group; e != a { + t.Errorf("expected group to be %v, got %v", e, a) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD new file mode 100644 index 000000000..a21a33e86 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["yaml.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/yaml.go b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/yaml.go new file mode 100644 index 000000000..2fdd1d43d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/serializer/yaml/yaml.go @@ -0,0 +1,46 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/yaml" +) + +// yamlSerializer converts YAML passed to the Decoder methods to JSON. +type yamlSerializer struct { + // the nested serializer + runtime.Serializer +} + +// yamlSerializer implements Serializer +var _ runtime.Serializer = yamlSerializer{} + +// NewDecodingSerializer adds YAML decoding support to a serializer that supports JSON. +func NewDecodingSerializer(jsonSerializer runtime.Serializer) runtime.Serializer { + return &yamlSerializer{jsonSerializer} +} + +func (c yamlSerializer) Decode(data []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + out, err := yaml.ToJSON(data) + if err != nil { + return nil, nil, err + } + data = out + return c.Serializer.Decode(data, gvk, into) +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go new file mode 100644 index 000000000..29722d52e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator.go @@ -0,0 +1,262 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "bytes" + "fmt" + "go/ast" + "go/doc" + "go/parser" + "go/token" + "io" + "reflect" + "strings" +) + +// Pair of strings. We keed the name of fields and the doc +type Pair struct { + Name, Doc string +} + +// KubeTypes is an array to represent all available types in a parsed file. [0] is for the type itself +type KubeTypes []Pair + +func astFrom(filePath string) *doc.Package { + fset := token.NewFileSet() + m := make(map[string]*ast.File) + + f, err := parser.ParseFile(fset, filePath, nil, parser.ParseComments) + if err != nil { + fmt.Println(err) + return nil + } + + m[filePath] = f + apkg, _ := ast.NewPackage(fset, m, nil, nil) + + return doc.New(apkg, "", 0) +} + +func fmtRawDoc(rawDoc string) string { + var buffer bytes.Buffer + delPrevChar := func() { + if buffer.Len() > 0 { + buffer.Truncate(buffer.Len() - 1) // Delete the last " " or "\n" + } + } + + // Ignore all lines after --- + rawDoc = strings.Split(rawDoc, "---")[0] + + for _, line := range strings.Split(rawDoc, "\n") { + line = strings.TrimRight(line, " ") + leading := strings.TrimLeft(line, " ") + switch { + case len(line) == 0: // Keep paragraphs + delPrevChar() + buffer.WriteString("\n\n") + case strings.HasPrefix(leading, "TODO"): // Ignore one line TODOs + case strings.HasPrefix(leading, "+"): // Ignore instructions to go2idl + default: + if strings.HasPrefix(line, " ") || strings.HasPrefix(line, "\t") { + delPrevChar() + line = "\n" + line + "\n" // Replace it with newline. This is useful when we have a line with: "Example:\n\tJSON-someting..." + } else { + line += " " + } + buffer.WriteString(line) + } + } + + postDoc := strings.TrimRight(buffer.String(), "\n") + postDoc = strings.Replace(postDoc, "\\\"", "\"", -1) // replace user's \" to " + postDoc = strings.Replace(postDoc, "\"", "\\\"", -1) // Escape " + postDoc = strings.Replace(postDoc, "\n", "\\n", -1) + postDoc = strings.Replace(postDoc, "\t", "\\t", -1) + + return postDoc +} + +// fieldName returns the name of the field as it should appear in JSON format +// "-" indicates that this field is not part of the JSON representation +func fieldName(field *ast.Field) string { + jsonTag := "" + if field.Tag != nil { + jsonTag = reflect.StructTag(field.Tag.Value[1 : len(field.Tag.Value)-1]).Get("json") // Delete first and last quotation + if strings.Contains(jsonTag, "inline") { + return "-" + } + } + + jsonTag = strings.Split(jsonTag, ",")[0] // This can return "-" + if jsonTag == "" { + if field.Names != nil { + return field.Names[0].Name + } + return field.Type.(*ast.Ident).Name + } + return jsonTag +} + +// A buffer of lines that will be written. +type bufferedLine struct { + line string + indentation int +} + +type buffer struct { + lines []bufferedLine +} + +func newBuffer() *buffer { + return &buffer{ + lines: make([]bufferedLine, 0), + } +} + +func (b *buffer) addLine(line string, indent int) { + b.lines = append(b.lines, bufferedLine{line, indent}) +} + +func (b *buffer) flushLines(w io.Writer) error { + for _, line := range b.lines { + indentation := strings.Repeat("\t", line.indentation) + fullLine := fmt.Sprintf("%s%s", indentation, line.line) + if _, err := io.WriteString(w, fullLine); err != nil { + return err + } + } + return nil +} + +func writeFuncHeader(b *buffer, structName string, indent int) { + s := fmt.Sprintf("var map_%s = map[string]string {\n", structName) + b.addLine(s, indent) +} + +func writeFuncFooter(b *buffer, structName string, indent int) { + b.addLine("}\n", indent) // Closes the map definition + + s := fmt.Sprintf("func (%s) SwaggerDoc() map[string]string {\n", structName) + b.addLine(s, indent) + s = fmt.Sprintf("return map_%s\n", structName) + b.addLine(s, indent+1) + b.addLine("}\n", indent) // Closes the function definition +} + +func writeMapBody(b *buffer, kubeType []Pair, indent int) { + format := "\"%s\": \"%s\",\n" + for _, pair := range kubeType { + s := fmt.Sprintf(format, pair.Name, pair.Doc) + b.addLine(s, indent+2) + } +} + +// ParseDocumentationFrom gets all types' documentation and returns them as an +// array. Each type is again represented as an array (we have to use arrays as we +// need to be sure for the order of the fields). This function returns fields and +// struct definitions that have no documentation as {name, ""}. +func ParseDocumentationFrom(src string) []KubeTypes { + var docForTypes []KubeTypes + + pkg := astFrom(src) + + for _, kubType := range pkg.Types { + if structType, ok := kubType.Decl.Specs[0].(*ast.TypeSpec).Type.(*ast.StructType); ok { + var ks KubeTypes + ks = append(ks, Pair{kubType.Name, fmtRawDoc(kubType.Doc)}) + + for _, field := range structType.Fields.List { + if n := fieldName(field); n != "-" { + fieldDoc := fmtRawDoc(field.Doc.Text()) + ks = append(ks, Pair{n, fieldDoc}) + } + } + docForTypes = append(docForTypes, ks) + } + } + + return docForTypes +} + +// WriteSwaggerDocFunc writes a declaration of a function as a string. This function is used in +// Swagger as a documentation source for structs and theirs fields +func WriteSwaggerDocFunc(kubeTypes []KubeTypes, w io.Writer) error { + for _, kubeType := range kubeTypes { + structName := kubeType[0].Name + kubeType[0].Name = "" + + // Ignore empty documentation + docfulTypes := make(KubeTypes, 0, len(kubeType)) + for _, pair := range kubeType { + if pair.Doc != "" { + docfulTypes = append(docfulTypes, pair) + } + } + + if len(docfulTypes) == 0 { + continue // If no fields and the struct have documentation, skip the function definition + } + + indent := 0 + buffer := newBuffer() + + writeFuncHeader(buffer, structName, indent) + writeMapBody(buffer, docfulTypes, indent) + writeFuncFooter(buffer, structName, indent) + buffer.addLine("\n", 0) + + if err := buffer.flushLines(w); err != nil { + return err + } + } + + return nil +} + +// VerifySwaggerDocsExist writes in a io.Writer a list of structs and fields that +// are missing of documentation. +func VerifySwaggerDocsExist(kubeTypes []KubeTypes, w io.Writer) (int, error) { + missingDocs := 0 + buffer := newBuffer() + + for _, kubeType := range kubeTypes { + structName := kubeType[0].Name + if kubeType[0].Doc == "" { + format := "Missing documentation for the struct itself: %s\n" + s := fmt.Sprintf(format, structName) + buffer.addLine(s, 0) + missingDocs++ + } + kubeType = kubeType[1:] // Skip struct definition + + for _, pair := range kubeType { // Iterate only the fields + if pair.Doc == "" { + format := "In struct: %s, field documentation is missing: %s\n" + s := fmt.Sprintf(format, structName, pair.Name) + buffer.addLine(s, 0) + missingDocs++ + } + } + } + + if err := buffer.flushLines(w); err != nil { + return -1, err + } + return missingDocs, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_test.go b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_test.go new file mode 100644 index 000000000..a6f338d31 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_test.go @@ -0,0 +1,43 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "testing" +) + +func TestFmtRawDoc(t *testing.T) { + tests := []struct { + t, expected string + }{ + {"aaa\n --- asd\n TODO: tooooodo\n toooodoooooo\n", "aaa"}, + {"aaa\nasd\n TODO: tooooodo\nbbbb\n --- toooodoooooo\n", "aaa asd bbbb"}, + {" TODO: tooooodo\n", ""}, + {"Par1\n\nPar2\n\n", "Par1\\n\\nPar2"}, + {"", ""}, + {" ", ""}, + {" \n", ""}, + {" \n\n ", ""}, + {"Example:\n\tl1\n\t\tl2\n", "Example:\\n\\tl1\\n\\t\\tl2"}, + } + + for _, test := range tests { + if o := fmtRawDoc(test.t); o != test.expected { + t.Fatalf("Expected: %q, got %q", test.expected, o) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/types.go b/vendor/k8s.io/apimachinery/pkg/runtime/types.go new file mode 100644 index 000000000..f972c5e69 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/types.go @@ -0,0 +1,133 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +// Note that the types provided in this file are not versioned and are intended to be +// safe to use from within all versions of every API object. + +// TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, +// like this: +// type MyAwesomeAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// ... // other fields +// } +// func (obj *MyAwesomeAPIObject) SetGroupVersionKind(gvk *metav1.GroupVersionKind) { metav1.UpdateTypeMeta(obj,gvk) }; GroupVersionKind() *GroupVersionKind +// +// TypeMeta is provided here for convenience. You may use it directly from this package or define +// your own with the same fields. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +type TypeMeta struct { + // +optional + APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` + // +optional + Kind string `json:"kind,omitempty" yaml:"kind,omitempty" protobuf:"bytes,2,opt,name=kind"` +} + +const ( + ContentTypeJSON string = "application/json" +) + +// RawExtension is used to hold extensions in external versions. +// +// To use this, make a field which has RawExtension as its type in your external, versioned +// struct, and Object in your internal struct. You also need to register your +// various plugin types. +// +// // Internal package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.Object `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // External package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // On the wire, the JSON will look something like this: +// { +// "kind":"MyAPIObject", +// "apiVersion":"v1", +// "myPlugin": { +// "kind":"PluginA", +// "aOption":"foo", +// }, +// } +// +// So what happens? Decode first uses json or yaml to unmarshal the serialized data into +// your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. +// The next step is to copy (using pkg/conversion) into the internal struct. The runtime +// package's DefaultScheme has conversion functions installed which will unpack the +// JSON stored in RawExtension, turning it into the correct object type, and storing it +// in the Object. (TODO: In the case where the object is of an unknown type, a +// runtime.Unknown object will be created and stored.) +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +type RawExtension struct { + // Raw is the underlying serialization of this object. + // + // TODO: Determine how to detect ContentType and ContentEncoding of 'Raw' data. + Raw []byte `protobuf:"bytes,1,opt,name=raw"` + // Object can hold a representation of this extension - useful for working with versioned + // structs. + Object Object `json:"-"` +} + +// Unknown allows api objects with unknown types to be passed-through. This can be used +// to deal with the API objects from a plug-in. Unknown objects still have functioning +// TypeMeta features-- kind, version, etc. +// TODO: Make this object have easy access to field based accessors and settors for +// metadata and field mutatation. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +type Unknown struct { + TypeMeta `json:",inline" protobuf:"bytes,1,opt,name=typeMeta"` + // Raw will hold the complete serialized object which couldn't be matched + // with a registered type. Most likely, nothing should be done with this + // except for passing it through the system. + Raw []byte `protobuf:"bytes,2,opt,name=raw"` + // ContentEncoding is encoding used to encode 'Raw' data. + // Unspecified means no encoding. + ContentEncoding string `protobuf:"bytes,3,opt,name=contentEncoding"` + // ContentType is serialization method used to serialize 'Raw'. + // Unspecified means ContentTypeJSON. + ContentType string `protobuf:"bytes,4,opt,name=contentType"` +} + +// VersionedObjects is used by Decoders to give callers a way to access all versions +// of an object during the decoding process. +type VersionedObjects struct { + // Objects is the set of objects retrieved during decoding, in order of conversion. + // The 0 index is the object as serialized on the wire. If conversion has occurred, + // other objects may be present. The right most object is the same as would be returned + // by a normal Decode call. + Objects []Object +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go b/vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go new file mode 100644 index 000000000..ead96ee05 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/types_proto.go @@ -0,0 +1,69 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" +) + +type ProtobufMarshaller interface { + MarshalTo(data []byte) (int, error) +} + +// NestedMarshalTo allows a caller to avoid extra allocations during serialization of an Unknown +// that will contain an object that implements ProtobufMarshaller. +func (m *Unknown) NestedMarshalTo(data []byte, b ProtobufMarshaller, size uint64) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.TypeMeta.Size())) + n1, err := m.TypeMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + + if b != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, size) + n2, err := b.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + if uint64(n2) != size { + // programmer error: the Size() method for protobuf does not match the results of MarshalTo, which means the proto + // struct returned would be wrong. + return 0, fmt.Errorf("the Size() value of %T was %d, but NestedMarshalTo wrote %d bytes to data", b, size, n2) + } + i += n2 + } + + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContentEncoding))) + i += copy(data[i:], m.ContentEncoding) + + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContentType))) + i += copy(data[i:], m.ContentType) + return i, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go new file mode 100644 index 000000000..54ce6ad59 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/runtime/zz_generated.deepcopy.go @@ -0,0 +1,83 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package runtime + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + reflect "reflect" +) + +// GetGeneratedDeepCopyFuncs returns the generated funcs, since we aren't registering them. +func GetGeneratedDeepCopyFuncs() []conversion.GeneratedDeepCopyFunc { + return []conversion.GeneratedDeepCopyFunc{ + {Fn: DeepCopy_runtime_RawExtension, InType: reflect.TypeOf(&RawExtension{})}, + {Fn: DeepCopy_runtime_TypeMeta, InType: reflect.TypeOf(&TypeMeta{})}, + {Fn: DeepCopy_runtime_Unknown, InType: reflect.TypeOf(&Unknown{})}, + } +} + +// DeepCopy_runtime_RawExtension is an autogenerated deepcopy function. +func DeepCopy_runtime_RawExtension(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RawExtension) + out := out.(*RawExtension) + *out = *in + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } + // in.Object is kind 'Interface' + if in.Object != nil { + if newVal, err := c.DeepCopy(&in.Object); err != nil { + return err + } else { + out.Object = *newVal.(*Object) + } + } + return nil + } +} + +// DeepCopy_runtime_TypeMeta is an autogenerated deepcopy function. +func DeepCopy_runtime_TypeMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TypeMeta) + out := out.(*TypeMeta) + *out = *in + return nil + } +} + +// DeepCopy_runtime_Unknown is an autogenerated deepcopy function. +func DeepCopy_runtime_Unknown(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Unknown) + out := out.(*Unknown) + *out = *in + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/selection/BUILD b/vendor/k8s.io/apimachinery/pkg/selection/BUILD new file mode 100644 index 000000000..55859fef6 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/selection/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["operator.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/selection/operator.go b/vendor/k8s.io/apimachinery/pkg/selection/operator.go new file mode 100644 index 000000000..298f798c4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/selection/operator.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selection + +// Operator represents a key/field's relationship to value(s). +// See labels.Requirement and fields.Requirement for more details. +type Operator string + +const ( + DoesNotExist Operator = "!" + Equals Operator = "=" + DoubleEquals Operator = "==" + In Operator = "in" + NotEquals Operator = "!=" + NotIn Operator = "notin" + Exists Operator = "exists" + GreaterThan Operator = "gt" + LessThan Operator = "lt" +) diff --git a/vendor/k8s.io/apimachinery/pkg/types/BUILD b/vendor/k8s.io/apimachinery/pkg/types/BUILD new file mode 100644 index 000000000..f6dadfcca --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/types/BUILD @@ -0,0 +1,20 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "namespacedname.go", + "nodename.go", + "patch.go", + "uid.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/types/doc.go b/vendor/k8s.io/apimachinery/pkg/types/doc.go new file mode 100644 index 000000000..5667fa992 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/types/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package types implements various generic types used throughout kubernetes. +package types // import "k8s.io/apimachinery/pkg/types" diff --git a/vendor/k8s.io/apimachinery/pkg/types/namespacedname.go b/vendor/k8s.io/apimachinery/pkg/types/namespacedname.go new file mode 100644 index 000000000..1e2130da0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/types/namespacedname.go @@ -0,0 +1,60 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import ( + "fmt" + "strings" +) + +// NamespacedName comprises a resource name, with a mandatory namespace, +// rendered as "/". Being a type captures intent and +// helps make sure that UIDs, namespaced names and non-namespaced names +// do not get conflated in code. For most use cases, namespace and name +// will already have been format validated at the API entry point, so we +// don't do that here. Where that's not the case (e.g. in testing), +// consider using NamespacedNameOrDie() in testing.go in this package. + +type NamespacedName struct { + Namespace string + Name string +} + +const ( + Separator = '/' +) + +// String returns the general purpose string representation +func (n NamespacedName) String() string { + return fmt.Sprintf("%s%c%s", n.Namespace, Separator, n.Name) +} + +// NewNamespacedNameFromString parses the provided string and returns a NamespacedName. +// The expected format is as per String() above. +// If the input string is invalid, the returned NamespacedName has all empty string field values. +// This allows a single-value return from this function, while still allowing error checks in the caller. +// Note that an input string which does not include exactly one Separator is not a valid input (as it could never +// have neem returned by String() ) +func NewNamespacedNameFromString(s string) NamespacedName { + nn := NamespacedName{} + result := strings.Split(s, string(Separator)) + if len(result) == 2 { + nn.Namespace = result[0] + nn.Name = result[1] + } + return nn +} diff --git a/vendor/k8s.io/apimachinery/pkg/types/nodename.go b/vendor/k8s.io/apimachinery/pkg/types/nodename.go new file mode 100644 index 000000000..fee348d7e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/types/nodename.go @@ -0,0 +1,43 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +// NodeName is a type that holds a api.Node's Name identifier. +// Being a type captures intent and helps make sure that the node name +// is not confused with similar concepts (the hostname, the cloud provider id, +// the cloud provider name etc) +// +// To clarify the various types: +// +// * Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. +// Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. +// +// * Hostname is the hostname of the local machine (from uname -n). +// However, some components allow the user to pass in a --hostname-override flag, +// which will override this in most places. In the absence of anything more meaningful, +// kubelet will use Hostname as the Node.Name when it creates the Node. +// +// * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId. +// +// For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the +// Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up +// to the cloudprovider how to do this mapping. +// +// For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the +// PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if +// we are using a custom DHCP domain it won't be. +type NodeName string diff --git a/vendor/k8s.io/apimachinery/pkg/types/patch.go b/vendor/k8s.io/apimachinery/pkg/types/patch.go new file mode 100644 index 000000000..d522d1dbd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/types/patch.go @@ -0,0 +1,28 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +// Similarly to above, these are constants to support HTTP PATCH utilized by +// both the client and server that didn't make sense for a whole package to be +// dedicated to. +type PatchType string + +const ( + JSONPatchType PatchType = "application/json-patch+json" + MergePatchType PatchType = "application/merge-patch+json" + StrategicMergePatchType PatchType = "application/strategic-merge-patch+json" +) diff --git a/vendor/k8s.io/apimachinery/pkg/types/uid.go b/vendor/k8s.io/apimachinery/pkg/types/uid.go new file mode 100644 index 000000000..869339222 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/types/uid.go @@ -0,0 +1,22 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +// UID is a type that holds unique ID values, including UUIDs. Because we +// don't ONLY use UUIDs, this is an alias to string. Being a type captures +// intent and helps make sure that UIDs and names do not get conflated. +type UID string diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD b/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD new file mode 100644 index 000000000..46e0c6dfb --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/cache/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "cache_test.go", + "lruexpirecache_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/groupcache/lru:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "cache.go", + "lruexpirecache.go", + ], + tags = ["automanaged"], + deps = ["//vendor/github.com/hashicorp/golang-lru:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/cache.go b/vendor/k8s.io/apimachinery/pkg/util/cache/cache.go new file mode 100644 index 000000000..9a09fe54d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/cache/cache.go @@ -0,0 +1,83 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" +) + +const ( + shardsCount int = 32 +) + +type Cache []*cacheShard + +func NewCache(maxSize int) Cache { + if maxSize < shardsCount { + maxSize = shardsCount + } + cache := make(Cache, shardsCount) + for i := 0; i < shardsCount; i++ { + cache[i] = &cacheShard{ + items: make(map[uint64]interface{}), + maxSize: maxSize / shardsCount, + } + } + return cache +} + +func (c Cache) getShard(index uint64) *cacheShard { + return c[index%uint64(shardsCount)] +} + +// Returns true if object already existed, false otherwise. +func (c *Cache) Add(index uint64, obj interface{}) bool { + return c.getShard(index).add(index, obj) +} + +func (c *Cache) Get(index uint64) (obj interface{}, found bool) { + return c.getShard(index).get(index) +} + +type cacheShard struct { + items map[uint64]interface{} + sync.RWMutex + maxSize int +} + +// Returns true if object already existed, false otherwise. +func (s *cacheShard) add(index uint64, obj interface{}) bool { + s.Lock() + defer s.Unlock() + _, isOverwrite := s.items[index] + if !isOverwrite && len(s.items) >= s.maxSize { + var randomKey uint64 + for randomKey = range s.items { + break + } + delete(s.items, randomKey) + } + s.items[index] = obj + return isOverwrite +} + +func (s *cacheShard) get(index uint64) (obj interface{}, found bool) { + s.RLock() + defer s.RUnlock() + obj, found = s.items[index] + return +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/cache_test.go b/vendor/k8s.io/apimachinery/pkg/util/cache/cache_test.go new file mode 100644 index 000000000..42a58a93d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/cache/cache_test.go @@ -0,0 +1,90 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "testing" +) + +const ( + maxTestCacheSize int = shardsCount * 2 +) + +func ExpectEntry(t *testing.T, cache Cache, index uint64, expectedValue interface{}) bool { + elem, found := cache.Get(index) + if !found { + t.Errorf("Expected to find entry with key %d", index) + return false + } else if elem != expectedValue { + t.Errorf("Expected to find %v, got %v", expectedValue, elem) + return false + } + return true +} + +func TestBasic(t *testing.T) { + cache := NewCache(maxTestCacheSize) + cache.Add(1, "xxx") + ExpectEntry(t, cache, 1, "xxx") +} + +func TestOverflow(t *testing.T) { + cache := NewCache(maxTestCacheSize) + for i := 0; i < maxTestCacheSize+1; i++ { + cache.Add(uint64(i), "xxx") + } + foundIndexes := make([]uint64, 0) + for i := 0; i < maxTestCacheSize+1; i++ { + _, found := cache.Get(uint64(i)) + if found { + foundIndexes = append(foundIndexes, uint64(i)) + } + } + if len(foundIndexes) != maxTestCacheSize { + t.Errorf("Expect to find %d elements, got %d %v", maxTestCacheSize, len(foundIndexes), foundIndexes) + } +} + +func TestOverwrite(t *testing.T) { + cache := NewCache(maxTestCacheSize) + cache.Add(1, "xxx") + ExpectEntry(t, cache, 1, "xxx") + cache.Add(1, "yyy") + ExpectEntry(t, cache, 1, "yyy") +} + +// TestEvict this test will fail sporatically depending on what add() +// selects for the randomKey to be evicted. Ensure that randomKey +// is never the key we most recently added. Since the chance of failure +// on each evict is 50%, if we do it 7 times, it should catch the problem +// if it exists >99% of the time. +func TestEvict(t *testing.T) { + cache := NewCache(shardsCount) + var found bool + for retry := 0; retry < 7; retry++ { + cache.Add(uint64(shardsCount), "xxx") + found = ExpectEntry(t, cache, uint64(shardsCount), "xxx") + if !found { + break + } + cache.Add(0, "xxx") + found = ExpectEntry(t, cache, 0, "xxx") + if !found { + break + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go b/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go new file mode 100644 index 000000000..f6b307aa6 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache.go @@ -0,0 +1,102 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" + "time" + + "github.com/hashicorp/golang-lru" +) + +// Clock defines an interface for obtaining the current time +type Clock interface { + Now() time.Time +} + +// realClock implements the Clock interface by calling time.Now() +type realClock struct{} + +func (realClock) Now() time.Time { return time.Now() } + +// LRUExpireCache is a cache that ensures the mostly recently accessed keys are returned with +// a ttl beyond which keys are forcibly expired. +type LRUExpireCache struct { + // clock is used to obtain the current time + clock Clock + + cache *lru.Cache + lock sync.Mutex +} + +// NewLRUExpireCache creates an expiring cache with the given size +func NewLRUExpireCache(maxSize int) *LRUExpireCache { + return NewLRUExpireCacheWithClock(maxSize, realClock{}) +} + +// NewLRUExpireCacheWithClock creates an expiring cache with the given size, using the specified clock to obtain the current time. +func NewLRUExpireCacheWithClock(maxSize int, clock Clock) *LRUExpireCache { + cache, err := lru.New(maxSize) + if err != nil { + // if called with an invalid size + panic(err) + } + return &LRUExpireCache{clock: clock, cache: cache} +} + +type cacheEntry struct { + value interface{} + expireTime time.Time +} + +// Add adds the value to the cache at key with the specified maximum duration. +func (c *LRUExpireCache) Add(key interface{}, value interface{}, ttl time.Duration) { + c.lock.Lock() + defer c.lock.Unlock() + c.cache.Add(key, &cacheEntry{value, c.clock.Now().Add(ttl)}) +} + +// Get returns the value at the specified key from the cache if it exists and is not +// expired, or returns false. +func (c *LRUExpireCache) Get(key interface{}) (interface{}, bool) { + c.lock.Lock() + defer c.lock.Unlock() + e, ok := c.cache.Get(key) + if !ok { + return nil, false + } + if c.clock.Now().After(e.(*cacheEntry).expireTime) { + c.cache.Remove(key) + return nil, false + } + return e.(*cacheEntry).value, true +} + +// Remove removes the specified key from the cache if it exists +func (c *LRUExpireCache) Remove(key interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + c.cache.Remove(key) +} + +// Keys returns all the keys in the cache, even if they are expired. Subsequent calls to +// get may return not found. It returns all keys from oldest to newest. +func (c *LRUExpireCache) Keys() []interface{} { + c.lock.Lock() + defer c.lock.Unlock() + return c.cache.Keys() +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache_test.go b/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache_test.go new file mode 100644 index 000000000..bd44f60d4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/cache/lruexpirecache_test.go @@ -0,0 +1,68 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/clock" + + "github.com/golang/groupcache/lru" +) + +func expectEntry(t *testing.T, c *LRUExpireCache, key lru.Key, value interface{}) { + result, ok := c.Get(key) + if !ok || result != value { + t.Errorf("Expected cache[%v]: %v, got %v", key, value, result) + } +} + +func expectNotEntry(t *testing.T, c *LRUExpireCache, key lru.Key) { + if result, ok := c.Get(key); ok { + t.Errorf("Expected cache[%v] to be empty, got %v", key, result) + } +} + +func TestSimpleGet(t *testing.T) { + c := NewLRUExpireCache(10) + c.Add("long-lived", "12345", 10*time.Hour) + expectEntry(t, c, "long-lived", "12345") +} + +func TestExpiredGet(t *testing.T) { + fakeClock := clock.NewFakeClock(time.Now()) + c := NewLRUExpireCacheWithClock(10, fakeClock) + c.Add("short-lived", "12345", 1*time.Millisecond) + // ensure the entry expired + fakeClock.Step(2 * time.Millisecond) + expectNotEntry(t, c, "short-lived") +} + +func TestLRUOverflow(t *testing.T) { + c := NewLRUExpireCache(4) + c.Add("elem1", "1", 10*time.Hour) + c.Add("elem2", "2", 10*time.Hour) + c.Add("elem3", "3", 10*time.Hour) + c.Add("elem4", "4", 10*time.Hour) + c.Add("elem5", "5", 10*time.Hour) + expectNotEntry(t, c, "elem1") + expectEntry(t, c, "elem2", "2") + expectEntry(t, c, "elem3", "3") + expectEntry(t, c, "elem4", "4") + expectEntry(t, c, "elem5", "5") +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD b/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD new file mode 100644 index 000000000..108ddee31 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/clock/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["clock_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["clock.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go b/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go new file mode 100644 index 000000000..c303a212a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go @@ -0,0 +1,327 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clock + +import ( + "sync" + "time" +) + +// Clock allows for injecting fake or real clocks into code that +// needs to do arbitrary things based on time. +type Clock interface { + Now() time.Time + Since(time.Time) time.Duration + After(d time.Duration) <-chan time.Time + NewTimer(d time.Duration) Timer + Sleep(d time.Duration) + Tick(d time.Duration) <-chan time.Time +} + +var ( + _ = Clock(RealClock{}) + _ = Clock(&FakeClock{}) + _ = Clock(&IntervalClock{}) +) + +// RealClock really calls time.Now() +type RealClock struct{} + +// Now returns the current time. +func (RealClock) Now() time.Time { + return time.Now() +} + +// Since returns time since the specified timestamp. +func (RealClock) Since(ts time.Time) time.Duration { + return time.Since(ts) +} + +// Same as time.After(d). +func (RealClock) After(d time.Duration) <-chan time.Time { + return time.After(d) +} + +func (RealClock) NewTimer(d time.Duration) Timer { + return &realTimer{ + timer: time.NewTimer(d), + } +} + +func (RealClock) Tick(d time.Duration) <-chan time.Time { + return time.Tick(d) +} + +func (RealClock) Sleep(d time.Duration) { + time.Sleep(d) +} + +// FakeClock implements Clock, but returns an arbitrary time. +type FakeClock struct { + lock sync.RWMutex + time time.Time + + // waiters are waiting for the fake time to pass their specified time + waiters []fakeClockWaiter +} + +type fakeClockWaiter struct { + targetTime time.Time + stepInterval time.Duration + skipIfBlocked bool + destChan chan time.Time + fired bool +} + +func NewFakeClock(t time.Time) *FakeClock { + return &FakeClock{ + time: t, + } +} + +// Now returns f's time. +func (f *FakeClock) Now() time.Time { + f.lock.RLock() + defer f.lock.RUnlock() + return f.time +} + +// Since returns time since the time in f. +func (f *FakeClock) Since(ts time.Time) time.Duration { + f.lock.RLock() + defer f.lock.RUnlock() + return f.time.Sub(ts) +} + +// Fake version of time.After(d). +func (f *FakeClock) After(d time.Duration) <-chan time.Time { + f.lock.Lock() + defer f.lock.Unlock() + stopTime := f.time.Add(d) + ch := make(chan time.Time, 1) // Don't block! + f.waiters = append(f.waiters, fakeClockWaiter{ + targetTime: stopTime, + destChan: ch, + }) + return ch +} + +// Fake version of time.NewTimer(d). +func (f *FakeClock) NewTimer(d time.Duration) Timer { + f.lock.Lock() + defer f.lock.Unlock() + stopTime := f.time.Add(d) + ch := make(chan time.Time, 1) // Don't block! + timer := &fakeTimer{ + fakeClock: f, + waiter: fakeClockWaiter{ + targetTime: stopTime, + destChan: ch, + }, + } + f.waiters = append(f.waiters, timer.waiter) + return timer +} + +func (f *FakeClock) Tick(d time.Duration) <-chan time.Time { + f.lock.Lock() + defer f.lock.Unlock() + tickTime := f.time.Add(d) + ch := make(chan time.Time, 1) // hold one tick + f.waiters = append(f.waiters, fakeClockWaiter{ + targetTime: tickTime, + stepInterval: d, + skipIfBlocked: true, + destChan: ch, + }) + + return ch +} + +// Move clock by Duration, notify anyone that's called After, Tick, or NewTimer +func (f *FakeClock) Step(d time.Duration) { + f.lock.Lock() + defer f.lock.Unlock() + f.setTimeLocked(f.time.Add(d)) +} + +// Sets the time. +func (f *FakeClock) SetTime(t time.Time) { + f.lock.Lock() + defer f.lock.Unlock() + f.setTimeLocked(t) +} + +// Actually changes the time and checks any waiters. f must be write-locked. +func (f *FakeClock) setTimeLocked(t time.Time) { + f.time = t + newWaiters := make([]fakeClockWaiter, 0, len(f.waiters)) + for i := range f.waiters { + w := &f.waiters[i] + if !w.targetTime.After(t) { + + if w.skipIfBlocked { + select { + case w.destChan <- t: + w.fired = true + default: + } + } else { + w.destChan <- t + w.fired = true + } + + if w.stepInterval > 0 { + for !w.targetTime.After(t) { + w.targetTime = w.targetTime.Add(w.stepInterval) + } + newWaiters = append(newWaiters, *w) + } + + } else { + newWaiters = append(newWaiters, f.waiters[i]) + } + } + f.waiters = newWaiters +} + +// Returns true if After has been called on f but not yet satisfied (so you can +// write race-free tests). +func (f *FakeClock) HasWaiters() bool { + f.lock.RLock() + defer f.lock.RUnlock() + return len(f.waiters) > 0 +} + +func (f *FakeClock) Sleep(d time.Duration) { + f.Step(d) +} + +// IntervalClock implements Clock, but each invocation of Now steps the clock forward the specified duration +type IntervalClock struct { + Time time.Time + Duration time.Duration +} + +// Now returns i's time. +func (i *IntervalClock) Now() time.Time { + i.Time = i.Time.Add(i.Duration) + return i.Time +} + +// Since returns time since the time in i. +func (i *IntervalClock) Since(ts time.Time) time.Duration { + return i.Time.Sub(ts) +} + +// Unimplemented, will panic. +// TODO: make interval clock use FakeClock so this can be implemented. +func (*IntervalClock) After(d time.Duration) <-chan time.Time { + panic("IntervalClock doesn't implement After") +} + +// Unimplemented, will panic. +// TODO: make interval clock use FakeClock so this can be implemented. +func (*IntervalClock) NewTimer(d time.Duration) Timer { + panic("IntervalClock doesn't implement NewTimer") +} + +// Unimplemented, will panic. +// TODO: make interval clock use FakeClock so this can be implemented. +func (*IntervalClock) Tick(d time.Duration) <-chan time.Time { + panic("IntervalClock doesn't implement Tick") +} + +func (*IntervalClock) Sleep(d time.Duration) { + panic("IntervalClock doesn't implement Sleep") +} + +// Timer allows for injecting fake or real timers into code that +// needs to do arbitrary things based on time. +type Timer interface { + C() <-chan time.Time + Stop() bool + Reset(d time.Duration) bool +} + +var ( + _ = Timer(&realTimer{}) + _ = Timer(&fakeTimer{}) +) + +// realTimer is backed by an actual time.Timer. +type realTimer struct { + timer *time.Timer +} + +// C returns the underlying timer's channel. +func (r *realTimer) C() <-chan time.Time { + return r.timer.C +} + +// Stop calls Stop() on the underlying timer. +func (r *realTimer) Stop() bool { + return r.timer.Stop() +} + +// Reset calls Reset() on the underlying timer. +func (r *realTimer) Reset(d time.Duration) bool { + return r.timer.Reset(d) +} + +// fakeTimer implements Timer based on a FakeClock. +type fakeTimer struct { + fakeClock *FakeClock + waiter fakeClockWaiter +} + +// C returns the channel that notifies when this timer has fired. +func (f *fakeTimer) C() <-chan time.Time { + return f.waiter.destChan +} + +// Stop stops the timer and returns true if the timer has not yet fired, or false otherwise. +func (f *fakeTimer) Stop() bool { + f.fakeClock.lock.Lock() + defer f.fakeClock.lock.Unlock() + + newWaiters := make([]fakeClockWaiter, 0, len(f.fakeClock.waiters)) + for i := range f.fakeClock.waiters { + w := &f.fakeClock.waiters[i] + if w != &f.waiter { + newWaiters = append(newWaiters, *w) + } + } + + f.fakeClock.waiters = newWaiters + + return !f.waiter.fired +} + +// Reset resets the timer to the fake clock's "now" + d. It returns true if the timer has not yet +// fired, or false otherwise. +func (f *fakeTimer) Reset(d time.Duration) bool { + f.fakeClock.lock.Lock() + defer f.fakeClock.lock.Unlock() + + active := !f.waiter.fired + + f.waiter.fired = false + f.waiter.targetTime = f.fakeClock.time.Add(d) + + return active +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/clock/clock_test.go b/vendor/k8s.io/apimachinery/pkg/util/clock/clock_test.go new file mode 100644 index 000000000..27d34605f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/clock/clock_test.go @@ -0,0 +1,184 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clock + +import ( + "testing" + "time" +) + +func TestFakeClock(t *testing.T) { + startTime := time.Now() + tc := NewFakeClock(startTime) + tc.Step(time.Second) + now := tc.Now() + if now.Sub(startTime) != time.Second { + t.Errorf("input: %s now=%s gap=%s expected=%s", startTime, now, now.Sub(startTime), time.Second) + } + + tt := tc.Now() + tc.SetTime(tt.Add(time.Hour)) + if tc.Now().Sub(tt) != time.Hour { + t.Errorf("input: %s now=%s gap=%s expected=%s", tt, tc.Now(), tc.Now().Sub(tt), time.Hour) + } +} + +func TestFakeClockSleep(t *testing.T) { + startTime := time.Now() + tc := NewFakeClock(startTime) + tc.Sleep(time.Duration(1) * time.Hour) + now := tc.Now() + if now.Sub(startTime) != time.Hour { + t.Errorf("Fake sleep failed, expected time to advance by one hour, instead, its %v", now.Sub(startTime)) + } +} + +func TestFakeAfter(t *testing.T) { + tc := NewFakeClock(time.Now()) + if tc.HasWaiters() { + t.Errorf("unexpected waiter?") + } + oneSec := tc.After(time.Second) + if !tc.HasWaiters() { + t.Errorf("unexpected lack of waiter?") + } + + oneOhOneSec := tc.After(time.Second + time.Millisecond) + twoSec := tc.After(2 * time.Second) + select { + case <-oneSec: + t.Errorf("unexpected channel read") + case <-oneOhOneSec: + t.Errorf("unexpected channel read") + case <-twoSec: + t.Errorf("unexpected channel read") + default: + } + + tc.Step(999 * time.Millisecond) + select { + case <-oneSec: + t.Errorf("unexpected channel read") + case <-oneOhOneSec: + t.Errorf("unexpected channel read") + case <-twoSec: + t.Errorf("unexpected channel read") + default: + } + + tc.Step(time.Millisecond) + select { + case <-oneSec: + // Expected! + case <-oneOhOneSec: + t.Errorf("unexpected channel read") + case <-twoSec: + t.Errorf("unexpected channel read") + default: + t.Errorf("unexpected non-channel read") + } + tc.Step(time.Millisecond) + select { + case <-oneSec: + // should not double-trigger! + t.Errorf("unexpected channel read") + case <-oneOhOneSec: + // Expected! + case <-twoSec: + t.Errorf("unexpected channel read") + default: + t.Errorf("unexpected non-channel read") + } +} + +func TestFakeTick(t *testing.T) { + tc := NewFakeClock(time.Now()) + if tc.HasWaiters() { + t.Errorf("unexpected waiter?") + } + oneSec := tc.Tick(time.Second) + if !tc.HasWaiters() { + t.Errorf("unexpected lack of waiter?") + } + + oneOhOneSec := tc.Tick(time.Second + time.Millisecond) + twoSec := tc.Tick(2 * time.Second) + select { + case <-oneSec: + t.Errorf("unexpected channel read") + case <-oneOhOneSec: + t.Errorf("unexpected channel read") + case <-twoSec: + t.Errorf("unexpected channel read") + default: + } + + tc.Step(999 * time.Millisecond) // t=.999 + select { + case <-oneSec: + t.Errorf("unexpected channel read") + case <-oneOhOneSec: + t.Errorf("unexpected channel read") + case <-twoSec: + t.Errorf("unexpected channel read") + default: + } + + tc.Step(time.Millisecond) // t=1.000 + select { + case <-oneSec: + // Expected! + case <-oneOhOneSec: + t.Errorf("unexpected channel read") + case <-twoSec: + t.Errorf("unexpected channel read") + default: + t.Errorf("unexpected non-channel read") + } + tc.Step(time.Millisecond) // t=1.001 + select { + case <-oneSec: + // should not double-trigger! + t.Errorf("unexpected channel read") + case <-oneOhOneSec: + // Expected! + case <-twoSec: + t.Errorf("unexpected channel read") + default: + t.Errorf("unexpected non-channel read") + } + + tc.Step(time.Second) // t=2.001 + tc.Step(time.Second) // t=3.001 + tc.Step(time.Second) // t=4.001 + tc.Step(time.Second) // t=5.001 + + // The one second ticker should not accumulate ticks + accumulatedTicks := 0 + drained := false + for !drained { + select { + case <-oneSec: + accumulatedTicks++ + default: + drained = true + } + } + if accumulatedTicks != 1 { + t.Errorf("unexpected number of accumulated ticks: %d", accumulatedTicks) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD b/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD new file mode 100644 index 000000000..ae36f426c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/diff/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["diff_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["diff.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/davecgh/go-spew/spew:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go b/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go new file mode 100644 index 000000000..0f730875e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go @@ -0,0 +1,280 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package diff + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "sort" + "strings" + "text/tabwriter" + + "github.com/davecgh/go-spew/spew" + + "k8s.io/apimachinery/pkg/util/validation/field" +) + +// StringDiff diffs a and b and returns a human readable diff. +func StringDiff(a, b string) string { + ba := []byte(a) + bb := []byte(b) + out := []byte{} + i := 0 + for ; i < len(ba) && i < len(bb); i++ { + if ba[i] != bb[i] { + break + } + out = append(out, ba[i]) + } + out = append(out, []byte("\n\nA: ")...) + out = append(out, ba[i:]...) + out = append(out, []byte("\n\nB: ")...) + out = append(out, bb[i:]...) + out = append(out, []byte("\n\n")...) + return string(out) +} + +// ObjectDiff writes the two objects out as JSON and prints out the identical part of +// the objects followed by the remaining part of 'a' and finally the remaining part of 'b'. +// For debugging tests. +func ObjectDiff(a, b interface{}) string { + ab, err := json.Marshal(a) + if err != nil { + panic(fmt.Sprintf("a: %v", err)) + } + bb, err := json.Marshal(b) + if err != nil { + panic(fmt.Sprintf("b: %v", err)) + } + return StringDiff(string(ab), string(bb)) +} + +// ObjectGoPrintDiff is like ObjectDiff, but uses go-spew to print the objects, +// which shows absolutely everything by recursing into every single pointer +// (go's %#v formatters OTOH stop at a certain point). This is needed when you +// can't figure out why reflect.DeepEqual is returning false and nothing is +// showing you differences. This will. +func ObjectGoPrintDiff(a, b interface{}) string { + s := spew.ConfigState{DisableMethods: true} + return StringDiff( + s.Sprintf("%#v", a), + s.Sprintf("%#v", b), + ) +} + +func ObjectReflectDiff(a, b interface{}) string { + vA, vB := reflect.ValueOf(a), reflect.ValueOf(b) + if vA.Type() != vB.Type() { + return fmt.Sprintf("type A %T and type B %T do not match", a, b) + } + diffs := objectReflectDiff(field.NewPath("object"), vA, vB) + if len(diffs) == 0 { + return "" + } + out := []string{""} + for _, d := range diffs { + out = append(out, + fmt.Sprintf("%s:", d.path), + limit(fmt.Sprintf(" a: %#v", d.a), 80), + limit(fmt.Sprintf(" b: %#v", d.b), 80), + ) + } + return strings.Join(out, "\n") +} + +func limit(s string, max int) string { + if len(s) > max { + return s[:max] + } + return s +} + +func public(s string) bool { + if len(s) == 0 { + return false + } + return s[:1] == strings.ToUpper(s[:1]) +} + +type diff struct { + path *field.Path + a, b interface{} +} + +type orderedDiffs []diff + +func (d orderedDiffs) Len() int { return len(d) } +func (d orderedDiffs) Swap(i, j int) { d[i], d[j] = d[j], d[i] } +func (d orderedDiffs) Less(i, j int) bool { + a, b := d[i].path.String(), d[j].path.String() + if a < b { + return true + } + return false +} + +func objectReflectDiff(path *field.Path, a, b reflect.Value) []diff { + switch a.Type().Kind() { + case reflect.Struct: + var changes []diff + for i := 0; i < a.Type().NumField(); i++ { + if !public(a.Type().Field(i).Name) { + if reflect.DeepEqual(a.Interface(), b.Interface()) { + continue + } + return []diff{{path: path, a: fmt.Sprintf("%#v", a), b: fmt.Sprintf("%#v", b)}} + } + if sub := objectReflectDiff(path.Child(a.Type().Field(i).Name), a.Field(i), b.Field(i)); len(sub) > 0 { + changes = append(changes, sub...) + } else { + if !reflect.DeepEqual(a.Field(i).Interface(), b.Field(i).Interface()) { + changes = append(changes, diff{path: path, a: a.Field(i).Interface(), b: b.Field(i).Interface()}) + } + } + } + return changes + case reflect.Ptr, reflect.Interface: + if a.IsNil() || b.IsNil() { + switch { + case a.IsNil() && b.IsNil(): + return nil + case a.IsNil(): + return []diff{{path: path, a: nil, b: b.Interface()}} + default: + return []diff{{path: path, a: a.Interface(), b: nil}} + } + } + return objectReflectDiff(path, a.Elem(), b.Elem()) + case reflect.Chan: + if !reflect.DeepEqual(a.Interface(), b.Interface()) { + return []diff{{path: path, a: a.Interface(), b: b.Interface()}} + } + return nil + case reflect.Slice: + lA, lB := a.Len(), b.Len() + l := lA + if lB < lA { + l = lB + } + if lA == lB && lA == 0 { + if a.IsNil() != b.IsNil() { + return []diff{{path: path, a: a.Interface(), b: b.Interface()}} + } + return nil + } + for i := 0; i < l; i++ { + if !reflect.DeepEqual(a.Index(i), b.Index(i)) { + return objectReflectDiff(path.Index(i), a.Index(i), b.Index(i)) + } + } + var diffs []diff + for i := l; i < lA; i++ { + diffs = append(diffs, diff{path: path.Index(i), a: a.Index(i), b: nil}) + } + for i := l; i < lB; i++ { + diffs = append(diffs, diff{path: path.Index(i), a: nil, b: b.Index(i)}) + } + if len(diffs) == 0 { + diffs = append(diffs, diff{path: path, a: a, b: b}) + } + return diffs + case reflect.Map: + if reflect.DeepEqual(a.Interface(), b.Interface()) { + return nil + } + aKeys := make(map[interface{}]interface{}) + for _, key := range a.MapKeys() { + aKeys[key.Interface()] = a.MapIndex(key).Interface() + } + var missing []diff + for _, key := range b.MapKeys() { + if _, ok := aKeys[key.Interface()]; ok { + delete(aKeys, key.Interface()) + if reflect.DeepEqual(a.MapIndex(key).Interface(), b.MapIndex(key).Interface()) { + continue + } + missing = append(missing, objectReflectDiff(path.Key(fmt.Sprintf("%s", key.Interface())), a.MapIndex(key), b.MapIndex(key))...) + continue + } + missing = append(missing, diff{path: path.Key(fmt.Sprintf("%s", key.Interface())), a: nil, b: b.MapIndex(key).Interface()}) + } + for key, value := range aKeys { + missing = append(missing, diff{path: path.Key(fmt.Sprintf("%s", key)), a: value, b: nil}) + } + if len(missing) == 0 { + missing = append(missing, diff{path: path, a: a.Interface(), b: b.Interface()}) + } + sort.Sort(orderedDiffs(missing)) + return missing + default: + if reflect.DeepEqual(a.Interface(), b.Interface()) { + return nil + } + if !a.CanInterface() { + return []diff{{path: path, a: fmt.Sprintf("%#v", a), b: fmt.Sprintf("%#v", b)}} + } + return []diff{{path: path, a: a.Interface(), b: b.Interface()}} + } +} + +// ObjectGoPrintSideBySide prints a and b as textual dumps side by side, +// enabling easy visual scanning for mismatches. +func ObjectGoPrintSideBySide(a, b interface{}) string { + s := spew.ConfigState{ + Indent: " ", + // Extra deep spew. + DisableMethods: true, + } + sA := s.Sdump(a) + sB := s.Sdump(b) + + linesA := strings.Split(sA, "\n") + linesB := strings.Split(sB, "\n") + width := 0 + for _, s := range linesA { + l := len(s) + if l > width { + width = l + } + } + for _, s := range linesB { + l := len(s) + if l > width { + width = l + } + } + buf := &bytes.Buffer{} + w := tabwriter.NewWriter(buf, width, 0, 1, ' ', 0) + max := len(linesA) + if len(linesB) > max { + max = len(linesB) + } + for i := 0; i < max; i++ { + var a, b string + if i < len(linesA) { + a = linesA[i] + } + if i < len(linesB) { + b = linesB[i] + } + fmt.Fprintf(w, "%s\t%s\n", a, b) + } + w.Flush() + return buf.String() +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go b/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go new file mode 100644 index 000000000..1f3fcb34b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/diff/diff_test.go @@ -0,0 +1,88 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package diff + +import ( + "testing" +) + +func TestObjectReflectDiff(t *testing.T) { + type struct1 struct{ A []int } + + testCases := map[string]struct { + a, b interface{} + out string + }{ + "map": { + a: map[string]int{}, + b: map[string]int{}, + }, + "detect nil map": { + a: map[string]int(nil), + b: map[string]int{}, + out: ` +object: + a: map[string]int(nil) + b: map[string]int{}`, + }, + "detect map changes": { + a: map[string]int{"test": 1, "other": 2}, + b: map[string]int{"test": 2, "third": 3}, + out: ` +object[other]: + a: 2 + b: +object[test]: + a: 1 + b: 2 +object[third]: + a: + b: 3`, + }, + "nil slice": {a: struct1{A: nil}, b: struct1{A: nil}}, + "empty slice": {a: struct1{A: []int{}}, b: struct1{A: []int{}}}, + "detect slice changes 1": {a: struct1{A: []int{1}}, b: struct1{A: []int{2}}, out: ` +object.A[0]: + a: 1 + b: 2`, + }, + "detect slice changes 2": {a: struct1{A: []int{}}, b: struct1{A: []int{2}}, out: ` +object.A[0]: + a: + b: 2`, + }, + "detect slice changes 3": {a: struct1{A: []int{1}}, b: struct1{A: []int{}}, out: ` +object.A[0]: + a: 1 + b: `, + }, + "detect nil vs empty slices": {a: struct1{A: nil}, b: struct1{A: []int{}}, out: ` +object.A: + a: []int(nil) + b: []int{}`, + }, + } + for name, test := range testCases { + expect := test.out + if len(expect) == 0 { + expect = "" + } + if actual := ObjectReflectDiff(test.a, test.b); actual != expect { + t.Errorf("%s: unexpected output: %s", name, actual) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD b/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD new file mode 100644 index 000000000..196de9f62 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["errors_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "errors.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/doc.go b/vendor/k8s.io/apimachinery/pkg/util/errors/doc.go new file mode 100644 index 000000000..5d4d6250a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package errors implements various utility functions and types around errors. +package errors // import "k8s.io/apimachinery/pkg/util/errors" diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go new file mode 100644 index 000000000..bdea0e16c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/errors.go @@ -0,0 +1,201 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package errors + +import ( + "errors" + "fmt" +) + +// MessagesgCountMap contains occurance for each error message. +type MessageCountMap map[string]int + +// Aggregate represents an object that contains multiple errors, but does not +// necessarily have singular semantic meaning. +type Aggregate interface { + error + Errors() []error +} + +// NewAggregate converts a slice of errors into an Aggregate interface, which +// is itself an implementation of the error interface. If the slice is empty, +// this returns nil. +// It will check if any of the element of input error list is nil, to avoid +// nil pointer panic when call Error(). +func NewAggregate(errlist []error) Aggregate { + if len(errlist) == 0 { + return nil + } + // In case of input error list contains nil + var errs []error + for _, e := range errlist { + if e != nil { + errs = append(errs, e) + } + } + if len(errs) == 0 { + return nil + } + return aggregate(errs) +} + +// This helper implements the error and Errors interfaces. Keeping it private +// prevents people from making an aggregate of 0 errors, which is not +// an error, but does satisfy the error interface. +type aggregate []error + +// Error is part of the error interface. +func (agg aggregate) Error() string { + if len(agg) == 0 { + // This should never happen, really. + return "" + } + if len(agg) == 1 { + return agg[0].Error() + } + result := fmt.Sprintf("[%s", agg[0].Error()) + for i := 1; i < len(agg); i++ { + result += fmt.Sprintf(", %s", agg[i].Error()) + } + result += "]" + return result +} + +// Errors is part of the Aggregate interface. +func (agg aggregate) Errors() []error { + return []error(agg) +} + +// Matcher is used to match errors. Returns true if the error matches. +type Matcher func(error) bool + +// FilterOut removes all errors that match any of the matchers from the input +// error. If the input is a singular error, only that error is tested. If the +// input implements the Aggregate interface, the list of errors will be +// processed recursively. +// +// This can be used, for example, to remove known-OK errors (such as io.EOF or +// os.PathNotFound) from a list of errors. +func FilterOut(err error, fns ...Matcher) error { + if err == nil { + return nil + } + if agg, ok := err.(Aggregate); ok { + return NewAggregate(filterErrors(agg.Errors(), fns...)) + } + if !matchesError(err, fns...) { + return err + } + return nil +} + +// matchesError returns true if any Matcher returns true +func matchesError(err error, fns ...Matcher) bool { + for _, fn := range fns { + if fn(err) { + return true + } + } + return false +} + +// filterErrors returns any errors (or nested errors, if the list contains +// nested Errors) for which all fns return false. If no errors +// remain a nil list is returned. The resulting silec will have all +// nested slices flattened as a side effect. +func filterErrors(list []error, fns ...Matcher) []error { + result := []error{} + for _, err := range list { + r := FilterOut(err, fns...) + if r != nil { + result = append(result, r) + } + } + return result +} + +// Flatten takes an Aggregate, which may hold other Aggregates in arbitrary +// nesting, and flattens them all into a single Aggregate, recursively. +func Flatten(agg Aggregate) Aggregate { + result := []error{} + if agg == nil { + return nil + } + for _, err := range agg.Errors() { + if a, ok := err.(Aggregate); ok { + r := Flatten(a) + if r != nil { + result = append(result, r.Errors()...) + } + } else { + if err != nil { + result = append(result, err) + } + } + } + return NewAggregate(result) +} + +// CreateAggregateFromMessageCountMap converts MessageCountMap Aggregate +func CreateAggregateFromMessageCountMap(m MessageCountMap) Aggregate { + if m == nil { + return nil + } + result := make([]error, 0, len(m)) + for errStr, count := range m { + var countStr string + if count > 1 { + countStr = fmt.Sprintf(" (repeated %v times)", count) + } + result = append(result, fmt.Errorf("%v%v", errStr, countStr)) + } + return NewAggregate(result) +} + +// Reduce will return err or, if err is an Aggregate and only has one item, +// the first item in the aggregate. +func Reduce(err error) error { + if agg, ok := err.(Aggregate); ok && err != nil { + switch len(agg.Errors()) { + case 1: + return agg.Errors()[0] + case 0: + return nil + } + } + return err +} + +// AggregateGoroutines runs the provided functions in parallel, stuffing all +// non-nil errors into the returned Aggregate. +// Returns nil if all the functions complete successfully. +func AggregateGoroutines(funcs ...func() error) Aggregate { + errChan := make(chan error, len(funcs)) + for _, f := range funcs { + go func(f func() error) { errChan <- f() }(f) + } + errs := make([]error, 0) + for i := 0; i < cap(errChan); i++ { + if err := <-errChan; err != nil { + errs = append(errs, err) + } + } + return NewAggregate(errs) +} + +// ErrPreconditionViolated is returned when the precondition is violated +var ErrPreconditionViolated = errors.New("precondition is violated") diff --git a/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go b/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go new file mode 100644 index 000000000..3335326ca --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/errors/errors_test.go @@ -0,0 +1,363 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package errors + +import ( + "fmt" + "reflect" + "sort" + "testing" +) + +func TestEmptyAggregate(t *testing.T) { + var slice []error + var agg Aggregate + var err error + + agg = NewAggregate(slice) + if agg != nil { + t.Errorf("expected nil, got %#v", agg) + } + err = NewAggregate(slice) + if err != nil { + t.Errorf("expected nil, got %#v", err) + } + + // This is not normally possible, but pedantry demands I test it. + agg = aggregate(slice) // empty aggregate + if s := agg.Error(); s != "" { + t.Errorf("expected empty string, got %q", s) + } + if s := agg.Errors(); len(s) != 0 { + t.Errorf("expected empty slice, got %#v", s) + } + err = agg.(error) + if s := err.Error(); s != "" { + t.Errorf("expected empty string, got %q", s) + } +} + +func TestAggregateWithNil(t *testing.T) { + var slice []error + slice = []error{nil} + var agg Aggregate + var err error + + agg = NewAggregate(slice) + if agg != nil { + t.Errorf("expected nil, got %#v", agg) + } + err = NewAggregate(slice) + if err != nil { + t.Errorf("expected nil, got %#v", err) + } + + // Append a non-nil error + slice = append(slice, fmt.Errorf("err")) + agg = NewAggregate(slice) + if agg == nil { + t.Errorf("expected non-nil") + } + if s := agg.Error(); s != "err" { + t.Errorf("expected 'err', got %q", s) + } + if s := agg.Errors(); len(s) != 1 { + t.Errorf("expected one-element slice, got %#v", s) + } + if s := agg.Errors()[0].Error(); s != "err" { + t.Errorf("expected 'err', got %q", s) + } + + err = agg.(error) + if err == nil { + t.Errorf("expected non-nil") + } + if s := err.Error(); s != "err" { + t.Errorf("expected 'err', got %q", s) + } +} + +func TestSingularAggregate(t *testing.T) { + var slice []error = []error{fmt.Errorf("err")} + var agg Aggregate + var err error + + agg = NewAggregate(slice) + if agg == nil { + t.Errorf("expected non-nil") + } + if s := agg.Error(); s != "err" { + t.Errorf("expected 'err', got %q", s) + } + if s := agg.Errors(); len(s) != 1 { + t.Errorf("expected one-element slice, got %#v", s) + } + if s := agg.Errors()[0].Error(); s != "err" { + t.Errorf("expected 'err', got %q", s) + } + + err = agg.(error) + if err == nil { + t.Errorf("expected non-nil") + } + if s := err.Error(); s != "err" { + t.Errorf("expected 'err', got %q", s) + } +} + +func TestPluralAggregate(t *testing.T) { + var slice []error = []error{fmt.Errorf("abc"), fmt.Errorf("123")} + var agg Aggregate + var err error + + agg = NewAggregate(slice) + if agg == nil { + t.Errorf("expected non-nil") + } + if s := agg.Error(); s != "[abc, 123]" { + t.Errorf("expected '[abc, 123]', got %q", s) + } + if s := agg.Errors(); len(s) != 2 { + t.Errorf("expected two-elements slice, got %#v", s) + } + if s := agg.Errors()[0].Error(); s != "abc" { + t.Errorf("expected '[abc, 123]', got %q", s) + } + + err = agg.(error) + if err == nil { + t.Errorf("expected non-nil") + } + if s := err.Error(); s != "[abc, 123]" { + t.Errorf("expected '[abc, 123]', got %q", s) + } +} + +func TestFilterOut(t *testing.T) { + testCases := []struct { + err error + filter []Matcher + expected error + }{ + { + nil, + []Matcher{}, + nil, + }, + { + aggregate{}, + []Matcher{}, + nil, + }, + { + aggregate{fmt.Errorf("abc")}, + []Matcher{}, + aggregate{fmt.Errorf("abc")}, + }, + { + aggregate{fmt.Errorf("abc")}, + []Matcher{func(err error) bool { return false }}, + aggregate{fmt.Errorf("abc")}, + }, + { + aggregate{fmt.Errorf("abc")}, + []Matcher{func(err error) bool { return true }}, + nil, + }, + { + aggregate{fmt.Errorf("abc")}, + []Matcher{func(err error) bool { return false }, func(err error) bool { return false }}, + aggregate{fmt.Errorf("abc")}, + }, + { + aggregate{fmt.Errorf("abc")}, + []Matcher{func(err error) bool { return false }, func(err error) bool { return true }}, + nil, + }, + { + aggregate{fmt.Errorf("abc"), fmt.Errorf("def"), fmt.Errorf("ghi")}, + []Matcher{func(err error) bool { return err.Error() == "def" }}, + aggregate{fmt.Errorf("abc"), fmt.Errorf("ghi")}, + }, + { + aggregate{aggregate{fmt.Errorf("abc")}}, + []Matcher{}, + aggregate{aggregate{fmt.Errorf("abc")}}, + }, + { + aggregate{aggregate{fmt.Errorf("abc"), aggregate{fmt.Errorf("def")}}}, + []Matcher{}, + aggregate{aggregate{fmt.Errorf("abc"), aggregate{fmt.Errorf("def")}}}, + }, + { + aggregate{aggregate{fmt.Errorf("abc"), aggregate{fmt.Errorf("def")}}}, + []Matcher{func(err error) bool { return err.Error() == "def" }}, + aggregate{aggregate{fmt.Errorf("abc")}}, + }, + } + for i, testCase := range testCases { + err := FilterOut(testCase.err, testCase.filter...) + if !reflect.DeepEqual(testCase.expected, err) { + t.Errorf("%d: expected %v, got %v", i, testCase.expected, err) + } + } +} + +func TestFlatten(t *testing.T) { + testCases := []struct { + agg Aggregate + expected Aggregate + }{ + { + nil, + nil, + }, + { + aggregate{}, + nil, + }, + { + aggregate{fmt.Errorf("abc")}, + aggregate{fmt.Errorf("abc")}, + }, + { + aggregate{fmt.Errorf("abc"), fmt.Errorf("def"), fmt.Errorf("ghi")}, + aggregate{fmt.Errorf("abc"), fmt.Errorf("def"), fmt.Errorf("ghi")}, + }, + { + aggregate{aggregate{fmt.Errorf("abc")}}, + aggregate{fmt.Errorf("abc")}, + }, + { + aggregate{aggregate{aggregate{fmt.Errorf("abc")}}}, + aggregate{fmt.Errorf("abc")}, + }, + { + aggregate{aggregate{fmt.Errorf("abc"), aggregate{fmt.Errorf("def")}}}, + aggregate{fmt.Errorf("abc"), fmt.Errorf("def")}, + }, + { + aggregate{aggregate{aggregate{fmt.Errorf("abc")}, fmt.Errorf("def"), aggregate{fmt.Errorf("ghi")}}}, + aggregate{fmt.Errorf("abc"), fmt.Errorf("def"), fmt.Errorf("ghi")}, + }, + } + for i, testCase := range testCases { + agg := Flatten(testCase.agg) + if !reflect.DeepEqual(testCase.expected, agg) { + t.Errorf("%d: expected %v, got %v", i, testCase.expected, agg) + } + } +} + +func TestCreateAggregateFromMessageCountMap(t *testing.T) { + testCases := []struct { + name string + mcp MessageCountMap + expected Aggregate + }{ + { + "input has single instance of one message", + MessageCountMap{"abc": 1}, + aggregate{fmt.Errorf("abc")}, + }, + { + "input has multiple messages", + MessageCountMap{"abc": 2, "ghi": 1}, + aggregate{fmt.Errorf("abc (repeated 2 times)"), fmt.Errorf("ghi")}, + }, + } + + var expected, agg []error + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + if testCase.expected != nil { + expected = testCase.expected.Errors() + sort.Slice(expected, func(i, j int) bool { return expected[i].Error() < expected[j].Error() }) + } + if testCase.mcp != nil { + agg = CreateAggregateFromMessageCountMap(testCase.mcp).Errors() + sort.Slice(agg, func(i, j int) bool { return agg[i].Error() < agg[j].Error() }) + } + if !reflect.DeepEqual(expected, agg) { + t.Errorf("expected %v, got %v", expected, agg) + } + }) + } +} + +func TestAggregateGoroutines(t *testing.T) { + testCases := []struct { + errs []error + expected map[string]bool // can't compare directly to Aggregate due to non-deterministic ordering + }{ + { + []error{}, + nil, + }, + { + []error{nil}, + nil, + }, + { + []error{nil, nil}, + nil, + }, + { + []error{fmt.Errorf("1")}, + map[string]bool{"1": true}, + }, + { + []error{fmt.Errorf("1"), nil}, + map[string]bool{"1": true}, + }, + { + []error{fmt.Errorf("1"), fmt.Errorf("267")}, + map[string]bool{"1": true, "267": true}, + }, + { + []error{fmt.Errorf("1"), nil, fmt.Errorf("1234")}, + map[string]bool{"1": true, "1234": true}, + }, + { + []error{nil, fmt.Errorf("1"), nil, fmt.Errorf("1234"), fmt.Errorf("22")}, + map[string]bool{"1": true, "1234": true, "22": true}, + }, + } + for i, testCase := range testCases { + funcs := make([]func() error, len(testCase.errs)) + for i := range testCase.errs { + err := testCase.errs[i] + funcs[i] = func() error { return err } + } + agg := AggregateGoroutines(funcs...) + if agg == nil { + if len(testCase.expected) > 0 { + t.Errorf("%d: expected %v, got nil", i, testCase.expected) + } + continue + } + if len(agg.Errors()) != len(testCase.expected) { + t.Errorf("%d: expected %d errors in aggregate, got %v", i, len(testCase.expected), agg) + continue + } + for _, err := range agg.Errors() { + if !testCase.expected[err.Error()] { + t.Errorf("%d: expected %v, got aggregate containing %v", i, testCase.expected, err) + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD b/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD new file mode 100644 index 000000000..fc6d4bff5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/framer/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["framer_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["framer.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go b/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go new file mode 100644 index 000000000..066680f44 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go @@ -0,0 +1,167 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package framer implements simple frame decoding techniques for an io.ReadCloser +package framer + +import ( + "encoding/binary" + "encoding/json" + "io" +) + +type lengthDelimitedFrameWriter struct { + w io.Writer + h [4]byte +} + +func NewLengthDelimitedFrameWriter(w io.Writer) io.Writer { + return &lengthDelimitedFrameWriter{w: w} +} + +// Write writes a single frame to the nested writer, prepending it with the length in +// in bytes of data (as a 4 byte, bigendian uint32). +func (w *lengthDelimitedFrameWriter) Write(data []byte) (int, error) { + binary.BigEndian.PutUint32(w.h[:], uint32(len(data))) + n, err := w.w.Write(w.h[:]) + if err != nil { + return 0, err + } + if n != len(w.h) { + return 0, io.ErrShortWrite + } + return w.w.Write(data) +} + +type lengthDelimitedFrameReader struct { + r io.ReadCloser + remaining int +} + +// NewLengthDelimitedFrameReader returns an io.Reader that will decode length-prefixed +// frames off of a stream. +// +// The protocol is: +// +// stream: message ... +// message: prefix body +// prefix: 4 byte uint32 in BigEndian order, denotes length of body +// body: bytes (0..prefix) +// +// If the buffer passed to Read is not long enough to contain an entire frame, io.ErrShortRead +// will be returned along with the number of bytes read. +func NewLengthDelimitedFrameReader(r io.ReadCloser) io.ReadCloser { + return &lengthDelimitedFrameReader{r: r} +} + +// Read attempts to read an entire frame into data. If that is not possible, io.ErrShortBuffer +// is returned and subsequent calls will attempt to read the last frame. A frame is complete when +// err is nil. +func (r *lengthDelimitedFrameReader) Read(data []byte) (int, error) { + if r.remaining <= 0 { + header := [4]byte{} + n, err := io.ReadAtLeast(r.r, header[:4], 4) + if err != nil { + return 0, err + } + if n != 4 { + return 0, io.ErrUnexpectedEOF + } + frameLength := int(binary.BigEndian.Uint32(header[:])) + r.remaining = frameLength + } + + expect := r.remaining + max := expect + if max > len(data) { + max = len(data) + } + n, err := io.ReadAtLeast(r.r, data[:max], int(max)) + r.remaining -= n + if err == io.ErrShortBuffer || r.remaining > 0 { + return n, io.ErrShortBuffer + } + if err != nil { + return n, err + } + if n != expect { + return n, io.ErrUnexpectedEOF + } + + return n, nil +} + +func (r *lengthDelimitedFrameReader) Close() error { + return r.r.Close() +} + +type jsonFrameReader struct { + r io.ReadCloser + decoder *json.Decoder + remaining []byte +} + +// NewJSONFramedReader returns an io.Reader that will decode individual JSON objects off +// of a wire. +// +// The boundaries between each frame are valid JSON objects. A JSON parsing error will terminate +// the read. +func NewJSONFramedReader(r io.ReadCloser) io.ReadCloser { + return &jsonFrameReader{ + r: r, + decoder: json.NewDecoder(r), + } +} + +// ReadFrame decodes the next JSON object in the stream, or returns an error. The returned +// byte slice will be modified the next time ReadFrame is invoked and should not be altered. +func (r *jsonFrameReader) Read(data []byte) (int, error) { + // Return whatever remaining data exists from an in progress frame + if n := len(r.remaining); n > 0 { + if n <= len(data) { + data = append(data[0:0], r.remaining...) + r.remaining = nil + return n, nil + } + + n = len(data) + data = append(data[0:0], r.remaining[:n]...) + r.remaining = r.remaining[n:] + return n, io.ErrShortBuffer + } + + // RawMessage#Unmarshal appends to data - we reset the slice down to 0 and will either see + // data written to data, or be larger than data and a different array. + n := len(data) + m := json.RawMessage(data[:0]) + if err := r.decoder.Decode(&m); err != nil { + return 0, err + } + + // If capacity of data is less than length of the message, decoder will allocate a new slice + // and set m to it, which means we need to copy the partial result back into data and preserve + // the remaining result for subsequent reads. + if len(m) > n { + data = append(data[0:0], m[:n]...) + r.remaining = m[n:] + return n, io.ErrShortBuffer + } + return len(m), nil +} + +func (r *jsonFrameReader) Close() error { + return r.r.Close() +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/framer/framer_test.go b/vendor/k8s.io/apimachinery/pkg/util/framer/framer_test.go new file mode 100644 index 000000000..b7ed00f53 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/framer/framer_test.go @@ -0,0 +1,176 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package framer + +import ( + "bytes" + "io" + "io/ioutil" + "testing" +) + +func TestRead(t *testing.T) { + data := []byte{ + 0x00, 0x00, 0x00, 0x04, + 0x01, 0x02, 0x03, 0x04, + 0x00, 0x00, 0x00, 0x03, + 0x05, 0x06, 0x07, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, + 0x08, + } + b := bytes.NewBuffer(data) + r := NewLengthDelimitedFrameReader(ioutil.NopCloser(b)) + buf := make([]byte, 1) + if n, err := r.Read(buf); err != io.ErrShortBuffer && n != 1 && bytes.Equal(buf, []byte{0x01}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + if n, err := r.Read(buf); err != io.ErrShortBuffer && n != 1 && bytes.Equal(buf, []byte{0x02}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read the remaining frame + buf = make([]byte, 2) + if n, err := r.Read(buf); err != nil && n != 2 && bytes.Equal(buf, []byte{0x03, 0x04}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read with buffer equal to frame + buf = make([]byte, 3) + if n, err := r.Read(buf); err != nil && n != 3 && bytes.Equal(buf, []byte{0x05, 0x06, 0x07}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read empty frame + buf = make([]byte, 3) + if n, err := r.Read(buf); err != nil && n != 0 && bytes.Equal(buf, []byte{}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read with larger buffer than frame + buf = make([]byte, 3) + if n, err := r.Read(buf); err != nil && n != 1 && bytes.Equal(buf, []byte{0x08}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read EOF + if n, err := r.Read(buf); err != io.EOF && n != 0 { + t.Fatalf("unexpected: %v %d", err, n) + } +} + +func TestReadLarge(t *testing.T) { + data := []byte{ + 0x00, 0x00, 0x00, 0x04, + 0x01, 0x02, 0x03, 0x04, + 0x00, 0x00, 0x00, 0x03, + 0x05, 0x06, 0x07, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, + 0x08, + } + b := bytes.NewBuffer(data) + r := NewLengthDelimitedFrameReader(ioutil.NopCloser(b)) + buf := make([]byte, 40) + if n, err := r.Read(buf); err != nil && n != 4 && bytes.Equal(buf, []byte{0x01, 0x02, 0x03, 0x04}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + if n, err := r.Read(buf); err != nil && n != 3 && bytes.Equal(buf, []byte{0x05, 0x06, 0x7}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + if n, err := r.Read(buf); err != nil && n != 0 && bytes.Equal(buf, []byte{}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + if n, err := r.Read(buf); err != nil && n != 1 && bytes.Equal(buf, []byte{0x08}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read EOF + if n, err := r.Read(buf); err != io.EOF && n != 0 { + t.Fatalf("unexpected: %v %d", err, n) + } +} +func TestReadInvalidFrame(t *testing.T) { + data := []byte{ + 0x00, 0x00, 0x00, 0x04, + 0x01, 0x02, + } + b := bytes.NewBuffer(data) + r := NewLengthDelimitedFrameReader(ioutil.NopCloser(b)) + buf := make([]byte, 1) + if n, err := r.Read(buf); err != io.ErrShortBuffer && n != 1 && bytes.Equal(buf, []byte{0x01}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read the remaining frame + buf = make([]byte, 3) + if n, err := r.Read(buf); err != io.ErrUnexpectedEOF && n != 1 && bytes.Equal(buf, []byte{0x02}) { + t.Fatalf("unexpected: %v %d %v", err, n, buf) + } + // read EOF + if n, err := r.Read(buf); err != io.EOF && n != 0 { + t.Fatalf("unexpected: %v %d", err, n) + } +} + +func TestJSONFrameReader(t *testing.T) { + b := bytes.NewBufferString("{\"test\":true}\n1\n[\"a\"]") + r := NewJSONFramedReader(ioutil.NopCloser(b)) + buf := make([]byte, 20) + if n, err := r.Read(buf); err != nil || n != 13 || string(buf[:n]) != `{"test":true}` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != nil || n != 1 || string(buf[:n]) != `1` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != nil || n != 5 || string(buf[:n]) != `["a"]` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != io.EOF || n != 0 { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } +} + +func TestJSONFrameReaderShortBuffer(t *testing.T) { + b := bytes.NewBufferString("{\"test\":true}\n1\n[\"a\"]") + r := NewJSONFramedReader(ioutil.NopCloser(b)) + buf := make([]byte, 3) + + if n, err := r.Read(buf); err != io.ErrShortBuffer || n != 3 || string(buf[:n]) != `{"t` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != io.ErrShortBuffer || n != 3 || string(buf[:n]) != `est` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != io.ErrShortBuffer || n != 3 || string(buf[:n]) != `":t` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != io.ErrShortBuffer || n != 3 || string(buf[:n]) != `rue` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != nil || n != 1 || string(buf[:n]) != `}` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + + if n, err := r.Read(buf); err != nil || n != 1 || string(buf[:n]) != `1` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + + if n, err := r.Read(buf); err != io.ErrShortBuffer || n != 3 || string(buf[:n]) != `["a` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + if n, err := r.Read(buf); err != nil || n != 2 || string(buf[:n]) != `"]` { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } + + if n, err := r.Read(buf); err != io.EOF || n != 0 { + t.Fatalf("unexpected: %v %d %q", err, n, buf) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD b/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD new file mode 100644 index 000000000..c1a26ee03 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["httpstream_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "httpstream.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/doc.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/doc.go new file mode 100644 index 000000000..5893df5bd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package httpstream adds multiplexed streaming support to HTTP requests and +// responses via connection upgrades. +package httpstream // import "k8s.io/apimachinery/pkg/util/httpstream" diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream.go new file mode 100644 index 000000000..7c9b791d4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream.go @@ -0,0 +1,149 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package httpstream + +import ( + "fmt" + "io" + "net/http" + "strings" + "time" +) + +const ( + HeaderConnection = "Connection" + HeaderUpgrade = "Upgrade" + HeaderProtocolVersion = "X-Stream-Protocol-Version" + HeaderAcceptedProtocolVersions = "X-Accepted-Stream-Protocol-Versions" +) + +// NewStreamHandler defines a function that is called when a new Stream is +// received. If no error is returned, the Stream is accepted; otherwise, +// the stream is rejected. After the reply frame has been sent, replySent is closed. +type NewStreamHandler func(stream Stream, replySent <-chan struct{}) error + +// NoOpNewStreamHandler is a stream handler that accepts a new stream and +// performs no other logic. +func NoOpNewStreamHandler(stream Stream, replySent <-chan struct{}) error { return nil } + +// Dialer knows how to open a streaming connection to a server. +type Dialer interface { + + // Dial opens a streaming connection to a server using one of the protocols + // specified (in order of most preferred to least preferred). + Dial(protocols ...string) (Connection, string, error) +} + +// UpgradeRoundTripper is a type of http.RoundTripper that is able to upgrade +// HTTP requests to support multiplexed bidirectional streams. After RoundTrip() +// is invoked, if the upgrade is successful, clients may retrieve the upgraded +// connection by calling UpgradeRoundTripper.Connection(). +type UpgradeRoundTripper interface { + http.RoundTripper + // NewConnection validates the response and creates a new Connection. + NewConnection(resp *http.Response) (Connection, error) +} + +// ResponseUpgrader knows how to upgrade HTTP requests and responses to +// add streaming support to them. +type ResponseUpgrader interface { + // UpgradeResponse upgrades an HTTP response to one that supports multiplexed + // streams. newStreamHandler will be called asynchronously whenever the + // other end of the upgraded connection creates a new stream. + UpgradeResponse(w http.ResponseWriter, req *http.Request, newStreamHandler NewStreamHandler) Connection +} + +// Connection represents an upgraded HTTP connection. +type Connection interface { + // CreateStream creates a new Stream with the supplied headers. + CreateStream(headers http.Header) (Stream, error) + // Close resets all streams and closes the connection. + Close() error + // CloseChan returns a channel that is closed when the underlying connection is closed. + CloseChan() <-chan bool + // SetIdleTimeout sets the amount of time the connection may remain idle before + // it is automatically closed. + SetIdleTimeout(timeout time.Duration) +} + +// Stream represents a bidirectional communications channel that is part of an +// upgraded connection. +type Stream interface { + io.ReadWriteCloser + // Reset closes both directions of the stream, indicating that neither client + // or server can use it any more. + Reset() error + // Headers returns the headers used to create the stream. + Headers() http.Header + // Identifier returns the stream's ID. + Identifier() uint32 +} + +// IsUpgradeRequest returns true if the given request is a connection upgrade request +func IsUpgradeRequest(req *http.Request) bool { + for _, h := range req.Header[http.CanonicalHeaderKey(HeaderConnection)] { + if strings.Contains(strings.ToLower(h), strings.ToLower(HeaderUpgrade)) { + return true + } + } + return false +} + +func negotiateProtocol(clientProtocols, serverProtocols []string) string { + for i := range clientProtocols { + for j := range serverProtocols { + if clientProtocols[i] == serverProtocols[j] { + return clientProtocols[i] + } + } + } + return "" +} + +// Handshake performs a subprotocol negotiation. If the client did request a +// subprotocol, Handshake will select the first common value found in +// serverProtocols. If a match is found, Handshake adds a response header +// indicating the chosen subprotocol. If no match is found, HTTP forbidden is +// returned, along with a response header containing the list of protocols the +// server can accept. +func Handshake(req *http.Request, w http.ResponseWriter, serverProtocols []string) (string, error) { + clientProtocols := req.Header[http.CanonicalHeaderKey(HeaderProtocolVersion)] + if len(clientProtocols) == 0 { + // Kube 1.0 clients didn't support subprotocol negotiation. + // TODO require clientProtocols once Kube 1.0 is no longer supported + return "", nil + } + + if len(serverProtocols) == 0 { + // Kube 1.0 servers didn't support subprotocol negotiation. This is mainly for testing. + // TODO require serverProtocols once Kube 1.0 is no longer supported + return "", nil + } + + negotiatedProtocol := negotiateProtocol(clientProtocols, serverProtocols) + if len(negotiatedProtocol) == 0 { + w.WriteHeader(http.StatusForbidden) + for i := range serverProtocols { + w.Header().Add(HeaderAcceptedProtocolVersions, serverProtocols[i]) + } + fmt.Fprintf(w, "unable to upgrade: unable to negotiate protocol: client supports %v, server accepts %v", clientProtocols, serverProtocols) + return "", fmt.Errorf("unable to upgrade: unable to negotiate protocol: client supports %v, server supports %v", clientProtocols, serverProtocols) + } + + w.Header().Add(HeaderProtocolVersion, negotiatedProtocol) + return negotiatedProtocol, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream_test.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream_test.go new file mode 100644 index 000000000..f7f9a3ebf --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/httpstream_test.go @@ -0,0 +1,125 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package httpstream + +import ( + "net/http" + "reflect" + "testing" +) + +type responseWriter struct { + header http.Header + statusCode *int +} + +func newResponseWriter() *responseWriter { + return &responseWriter{ + header: make(http.Header), + } +} + +func (r *responseWriter) Header() http.Header { + return r.header +} + +func (r *responseWriter) WriteHeader(code int) { + r.statusCode = &code +} + +func (r *responseWriter) Write([]byte) (int, error) { + return 0, nil +} + +func TestHandshake(t *testing.T) { + tests := map[string]struct { + clientProtocols []string + serverProtocols []string + expectedProtocol string + expectError bool + }{ + "no client protocols": { + clientProtocols: []string{}, + serverProtocols: []string{"a", "b"}, + expectedProtocol: "", + }, + "no common protocol": { + clientProtocols: []string{"c"}, + serverProtocols: []string{"a", "b"}, + expectedProtocol: "", + expectError: true, + }, + "common protocol": { + clientProtocols: []string{"b"}, + serverProtocols: []string{"a", "b"}, + expectedProtocol: "b", + }, + } + + for name, test := range tests { + req, err := http.NewRequest("GET", "http://www.example.com/", nil) + if err != nil { + t.Fatalf("%s: error creating request: %v", name, err) + } + + for _, p := range test.clientProtocols { + req.Header.Add(HeaderProtocolVersion, p) + } + + w := newResponseWriter() + negotiated, err := Handshake(req, w, test.serverProtocols) + + // verify negotiated protocol + if e, a := test.expectedProtocol, negotiated; e != a { + t.Errorf("%s: protocol: expected %q, got %q", name, e, a) + } + + if test.expectError { + if err == nil { + t.Errorf("%s: expected error but did not get one", name) + } + if w.statusCode == nil { + t.Errorf("%s: expected w.statusCode to be set", name) + } else if e, a := http.StatusForbidden, *w.statusCode; e != a { + t.Errorf("%s: w.statusCode: expected %d, got %d", name, e, a) + } + if e, a := test.serverProtocols, w.Header()[HeaderAcceptedProtocolVersions]; !reflect.DeepEqual(e, a) { + t.Errorf("%s: accepted server protocols: expected %v, got %v", name, e, a) + } + continue + } + if !test.expectError && err != nil { + t.Errorf("%s: unexpected error: %v", name, err) + continue + } + if w.statusCode != nil { + t.Errorf("%s: unexpected non-nil w.statusCode: %d", name, w.statusCode) + } + + if len(test.expectedProtocol) == 0 { + if len(w.Header()[HeaderProtocolVersion]) > 0 { + t.Errorf("%s: unexpected protocol version response header: %s", name, w.Header()[HeaderProtocolVersion]) + } + continue + } + + // verify response headers + if e, a := []string{test.expectedProtocol}, w.Header()[HeaderProtocolVersion]; !reflect.DeepEqual(e, a) { + t.Errorf("%s: protocol response header: expected %v, got %v", name, e, a) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD new file mode 100644 index 000000000..aae7bb2cd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "connection_test.go", + "roundtripper_test.go", + "upgrade_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/elazarl/goproxy:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "connection.go", + "roundtripper.go", + "upgrade.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/docker/spdystream:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/third_party/forked/golang/netutil:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection.go new file mode 100644 index 000000000..3dc8e23ae --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection.go @@ -0,0 +1,145 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package spdy + +import ( + "net" + "net/http" + "sync" + "time" + + "github.com/docker/spdystream" + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/util/httpstream" +) + +// connection maintains state about a spdystream.Connection and its associated +// streams. +type connection struct { + conn *spdystream.Connection + streams []httpstream.Stream + streamLock sync.Mutex + newStreamHandler httpstream.NewStreamHandler +} + +// NewClientConnection creates a new SPDY client connection. +func NewClientConnection(conn net.Conn) (httpstream.Connection, error) { + spdyConn, err := spdystream.NewConnection(conn, false) + if err != nil { + defer conn.Close() + return nil, err + } + + return newConnection(spdyConn, httpstream.NoOpNewStreamHandler), nil +} + +// NewServerConnection creates a new SPDY server connection. newStreamHandler +// will be invoked when the server receives a newly created stream from the +// client. +func NewServerConnection(conn net.Conn, newStreamHandler httpstream.NewStreamHandler) (httpstream.Connection, error) { + spdyConn, err := spdystream.NewConnection(conn, true) + if err != nil { + defer conn.Close() + return nil, err + } + + return newConnection(spdyConn, newStreamHandler), nil +} + +// newConnection returns a new connection wrapping conn. newStreamHandler +// will be invoked when the server receives a newly created stream from the +// client. +func newConnection(conn *spdystream.Connection, newStreamHandler httpstream.NewStreamHandler) httpstream.Connection { + c := &connection{conn: conn, newStreamHandler: newStreamHandler} + go conn.Serve(c.newSpdyStream) + return c +} + +// createStreamResponseTimeout indicates how long to wait for the other side to +// acknowledge the new stream before timing out. +const createStreamResponseTimeout = 30 * time.Second + +// Close first sends a reset for all of the connection's streams, and then +// closes the underlying spdystream.Connection. +func (c *connection) Close() error { + c.streamLock.Lock() + for _, s := range c.streams { + // calling Reset instead of Close ensures that all streams are fully torn down + s.Reset() + } + c.streams = make([]httpstream.Stream, 0) + c.streamLock.Unlock() + + // now that all streams are fully torn down, it's safe to call close on the underlying connection, + // which should be able to terminate immediately at this point, instead of waiting for any + // remaining graceful stream termination. + return c.conn.Close() +} + +// CreateStream creates a new stream with the specified headers and registers +// it with the connection. +func (c *connection) CreateStream(headers http.Header) (httpstream.Stream, error) { + stream, err := c.conn.CreateStream(headers, nil, false) + if err != nil { + return nil, err + } + if err = stream.WaitTimeout(createStreamResponseTimeout); err != nil { + return nil, err + } + + c.registerStream(stream) + return stream, nil +} + +// registerStream adds the stream s to the connection's list of streams that +// it owns. +func (c *connection) registerStream(s httpstream.Stream) { + c.streamLock.Lock() + c.streams = append(c.streams, s) + c.streamLock.Unlock() +} + +// CloseChan returns a channel that, when closed, indicates that the underlying +// spdystream.Connection has been closed. +func (c *connection) CloseChan() <-chan bool { + return c.conn.CloseChan() +} + +// newSpdyStream is the internal new stream handler used by spdystream.Connection.Serve. +// It calls connection's newStreamHandler, giving it the opportunity to accept or reject +// the stream. If newStreamHandler returns an error, the stream is rejected. If not, the +// stream is accepted and registered with the connection. +func (c *connection) newSpdyStream(stream *spdystream.Stream) { + replySent := make(chan struct{}) + err := c.newStreamHandler(stream, replySent) + rejectStream := (err != nil) + if rejectStream { + glog.Warningf("Stream rejected: %v", err) + stream.Reset() + return + } + + c.registerStream(stream) + stream.SendReply(http.Header{}, rejectStream) + close(replySent) +} + +// SetIdleTimeout sets the amount of time the connection may remain idle before +// it is automatically closed. +func (c *connection) SetIdleTimeout(timeout time.Duration) { + c.conn.SetIdleTimeout(timeout) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection_test.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection_test.go new file mode 100644 index 000000000..f94e2b3ba --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/connection_test.go @@ -0,0 +1,164 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package spdy + +import ( + "io" + "net" + "net/http" + "sync" + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/httpstream" +) + +func runProxy(t *testing.T, backendUrl string, proxyUrl chan<- string, proxyDone chan<- struct{}) { + listener, err := net.Listen("tcp4", "localhost:0") + if err != nil { + t.Fatalf("error listening: %v", err) + } + defer listener.Close() + + proxyUrl <- listener.Addr().String() + + clientConn, err := listener.Accept() + if err != nil { + t.Errorf("proxy: error accepting client connection: %v", err) + return + } + + backendConn, err := net.Dial("tcp4", backendUrl) + if err != nil { + t.Errorf("proxy: error dialing backend: %v", err) + return + } + defer backendConn.Close() + + var wg sync.WaitGroup + wg.Add(2) + + go func() { + defer wg.Done() + io.Copy(backendConn, clientConn) + }() + + go func() { + defer wg.Done() + io.Copy(clientConn, backendConn) + }() + + wg.Wait() + + proxyDone <- struct{}{} +} + +func runServer(t *testing.T, backendUrl chan<- string, serverDone chan<- struct{}) { + listener, err := net.Listen("tcp4", "localhost:0") + if err != nil { + t.Fatalf("server: error listening: %v", err) + } + defer listener.Close() + + backendUrl <- listener.Addr().String() + + conn, err := listener.Accept() + if err != nil { + t.Errorf("server: error accepting connection: %v", err) + return + } + + streamChan := make(chan httpstream.Stream) + replySentChan := make(chan (<-chan struct{})) + spdyConn, err := NewServerConnection(conn, func(stream httpstream.Stream, replySent <-chan struct{}) error { + streamChan <- stream + replySentChan <- replySent + return nil + }) + if err != nil { + t.Errorf("server: error creating spdy connection: %v", err) + return + } + + stream := <-streamChan + replySent := <-replySentChan + <-replySent + + buf := make([]byte, 1) + _, err = stream.Read(buf) + if err != io.EOF { + t.Errorf("server: unexpected read error: %v", err) + return + } + + <-spdyConn.CloseChan() + raw := spdyConn.(*connection).conn + if err := raw.Wait(15 * time.Second); err != nil { + t.Errorf("server: timed out waiting for connection closure: %v", err) + } + + serverDone <- struct{}{} +} + +func TestConnectionCloseIsImmediateThroughAProxy(t *testing.T) { + serverDone := make(chan struct{}) + backendUrlChan := make(chan string) + go runServer(t, backendUrlChan, serverDone) + backendUrl := <-backendUrlChan + + proxyDone := make(chan struct{}) + proxyUrlChan := make(chan string) + go runProxy(t, backendUrl, proxyUrlChan, proxyDone) + proxyUrl := <-proxyUrlChan + + conn, err := net.Dial("tcp4", proxyUrl) + if err != nil { + t.Fatalf("client: error connecting to proxy: %v", err) + } + + spdyConn, err := NewClientConnection(conn) + if err != nil { + t.Fatalf("client: error creating spdy connection: %v", err) + } + + if _, err := spdyConn.CreateStream(http.Header{}); err != nil { + t.Fatalf("client: error creating stream: %v", err) + } + + spdyConn.Close() + raw := spdyConn.(*connection).conn + if err := raw.Wait(15 * time.Second); err != nil { + t.Fatalf("client: timed out waiting for connection closure: %v", err) + } + + expired := time.NewTimer(15 * time.Second) + defer expired.Stop() + i := 0 + for { + select { + case <-expired.C: + t.Fatalf("timed out waiting for proxy and/or server closure") + case <-serverDone: + i++ + case <-proxyDone: + i++ + } + if i == 2 { + break + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go new file mode 100644 index 000000000..12bef075d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper.go @@ -0,0 +1,326 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package spdy + +import ( + "bufio" + "bytes" + "crypto/tls" + "encoding/base64" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "net/http/httputil" + "net/url" + "strings" + + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/util/httpstream" + utilnet "k8s.io/apimachinery/pkg/util/net" + "k8s.io/apimachinery/third_party/forked/golang/netutil" +) + +// SpdyRoundTripper knows how to upgrade an HTTP request to one that supports +// multiplexed streams. After RoundTrip() is invoked, Conn will be set +// and usable. SpdyRoundTripper implements the UpgradeRoundTripper interface. +type SpdyRoundTripper struct { + //tlsConfig holds the TLS configuration settings to use when connecting + //to the remote server. + tlsConfig *tls.Config + + /* TODO according to http://golang.org/pkg/net/http/#RoundTripper, a RoundTripper + must be safe for use by multiple concurrent goroutines. If this is absolutely + necessary, we could keep a map from http.Request to net.Conn. In practice, + a client will create an http.Client, set the transport to a new insteace of + SpdyRoundTripper, and use it a single time, so this hopefully won't be an issue. + */ + // conn is the underlying network connection to the remote server. + conn net.Conn + + // Dialer is the dialer used to connect. Used if non-nil. + Dialer *net.Dialer + + // proxier knows which proxy to use given a request, defaults to http.ProxyFromEnvironment + // Used primarily for mocking the proxy discovery in tests. + proxier func(req *http.Request) (*url.URL, error) + + // followRedirects indicates if the round tripper should examine responses for redirects and + // follow them. + followRedirects bool +} + +var _ utilnet.TLSClientConfigHolder = &SpdyRoundTripper{} +var _ httpstream.UpgradeRoundTripper = &SpdyRoundTripper{} +var _ utilnet.Dialer = &SpdyRoundTripper{} + +// NewRoundTripper creates a new SpdyRoundTripper that will use +// the specified tlsConfig. +func NewRoundTripper(tlsConfig *tls.Config, followRedirects bool) httpstream.UpgradeRoundTripper { + return NewSpdyRoundTripper(tlsConfig, followRedirects) +} + +// NewSpdyRoundTripper creates a new SpdyRoundTripper that will use +// the specified tlsConfig. This function is mostly meant for unit tests. +func NewSpdyRoundTripper(tlsConfig *tls.Config, followRedirects bool) *SpdyRoundTripper { + return &SpdyRoundTripper{tlsConfig: tlsConfig, followRedirects: followRedirects} +} + +// TLSClientConfig implements pkg/util/net.TLSClientConfigHolder for proper TLS checking during +// proxying with a spdy roundtripper. +func (s *SpdyRoundTripper) TLSClientConfig() *tls.Config { + return s.tlsConfig +} + +// Dial implements k8s.io/apimachinery/pkg/util/net.Dialer. +func (s *SpdyRoundTripper) Dial(req *http.Request) (net.Conn, error) { + conn, err := s.dial(req) + if err != nil { + return nil, err + } + + if err := req.Write(conn); err != nil { + conn.Close() + return nil, err + } + + return conn, nil +} + +// dial dials the host specified by req, using TLS if appropriate, optionally +// using a proxy server if one is configured via environment variables. +func (s *SpdyRoundTripper) dial(req *http.Request) (net.Conn, error) { + proxier := s.proxier + if proxier == nil { + proxier = http.ProxyFromEnvironment + } + proxyURL, err := proxier(req) + if err != nil { + return nil, err + } + + if proxyURL == nil { + return s.dialWithoutProxy(req.URL) + } + + // ensure we use a canonical host with proxyReq + targetHost := netutil.CanonicalAddr(req.URL) + + // proxying logic adapted from http://blog.h6t.eu/post/74098062923/golang-websocket-with-http-proxy-support + proxyReq := http.Request{ + Method: "CONNECT", + URL: &url.URL{}, + Host: targetHost, + } + + if pa := s.proxyAuth(proxyURL); pa != "" { + proxyReq.Header = http.Header{} + proxyReq.Header.Set("Proxy-Authorization", pa) + } + + proxyDialConn, err := s.dialWithoutProxy(proxyURL) + if err != nil { + return nil, err + } + + proxyClientConn := httputil.NewProxyClientConn(proxyDialConn, nil) + _, err = proxyClientConn.Do(&proxyReq) + if err != nil && err != httputil.ErrPersistEOF { + return nil, err + } + + rwc, _ := proxyClientConn.Hijack() + + if req.URL.Scheme != "https" { + return rwc, nil + } + + host, _, err := net.SplitHostPort(targetHost) + if err != nil { + return nil, err + } + + tlsConfig := s.tlsConfig + switch { + case tlsConfig == nil: + tlsConfig = &tls.Config{ServerName: host} + case len(tlsConfig.ServerName) == 0: + tlsConfig = tlsConfig.Clone() + tlsConfig.ServerName = host + } + + tlsConn := tls.Client(rwc, tlsConfig) + + // need to manually call Handshake() so we can call VerifyHostname() below + if err := tlsConn.Handshake(); err != nil { + return nil, err + } + + // Return if we were configured to skip validation + if tlsConfig.InsecureSkipVerify { + return tlsConn, nil + } + + if err := tlsConn.VerifyHostname(tlsConfig.ServerName); err != nil { + return nil, err + } + + return tlsConn, nil +} + +// dialWithoutProxy dials the host specified by url, using TLS if appropriate. +func (s *SpdyRoundTripper) dialWithoutProxy(url *url.URL) (net.Conn, error) { + dialAddr := netutil.CanonicalAddr(url) + + if url.Scheme == "http" { + if s.Dialer == nil { + return net.Dial("tcp", dialAddr) + } else { + return s.Dialer.Dial("tcp", dialAddr) + } + } + + // TODO validate the TLSClientConfig is set up? + var conn *tls.Conn + var err error + if s.Dialer == nil { + conn, err = tls.Dial("tcp", dialAddr, s.tlsConfig) + } else { + conn, err = tls.DialWithDialer(s.Dialer, "tcp", dialAddr, s.tlsConfig) + } + if err != nil { + return nil, err + } + + // Return if we were configured to skip validation + if s.tlsConfig != nil && s.tlsConfig.InsecureSkipVerify { + return conn, nil + } + + host, _, err := net.SplitHostPort(dialAddr) + if err != nil { + return nil, err + } + if s.tlsConfig != nil && len(s.tlsConfig.ServerName) > 0 { + host = s.tlsConfig.ServerName + } + err = conn.VerifyHostname(host) + if err != nil { + return nil, err + } + + return conn, nil +} + +// proxyAuth returns, for a given proxy URL, the value to be used for the Proxy-Authorization header +func (s *SpdyRoundTripper) proxyAuth(proxyURL *url.URL) string { + if proxyURL == nil || proxyURL.User == nil { + return "" + } + credentials := proxyURL.User.String() + encodedAuth := base64.StdEncoding.EncodeToString([]byte(credentials)) + return fmt.Sprintf("Basic %s", encodedAuth) +} + +// RoundTrip executes the Request and upgrades it. After a successful upgrade, +// clients may call SpdyRoundTripper.Connection() to retrieve the upgraded +// connection. +func (s *SpdyRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + header := utilnet.CloneHeader(req.Header) + header.Add(httpstream.HeaderConnection, httpstream.HeaderUpgrade) + header.Add(httpstream.HeaderUpgrade, HeaderSpdy31) + + var ( + conn net.Conn + rawResponse []byte + err error + ) + + if s.followRedirects { + conn, rawResponse, err = utilnet.ConnectWithRedirects(req.Method, req.URL, header, req.Body, s) + } else { + clone := utilnet.CloneRequest(req) + clone.Header = header + conn, err = s.Dial(clone) + } + if err != nil { + return nil, err + } + + responseReader := bufio.NewReader( + io.MultiReader( + bytes.NewBuffer(rawResponse), + conn, + ), + ) + + resp, err := http.ReadResponse(responseReader, nil) + if err != nil { + if conn != nil { + conn.Close() + } + return nil, err + } + + s.conn = conn + + return resp, nil +} + +// NewConnection validates the upgrade response, creating and returning a new +// httpstream.Connection if there were no errors. +func (s *SpdyRoundTripper) NewConnection(resp *http.Response) (httpstream.Connection, error) { + connectionHeader := strings.ToLower(resp.Header.Get(httpstream.HeaderConnection)) + upgradeHeader := strings.ToLower(resp.Header.Get(httpstream.HeaderUpgrade)) + if (resp.StatusCode != http.StatusSwitchingProtocols) || !strings.Contains(connectionHeader, strings.ToLower(httpstream.HeaderUpgrade)) || !strings.Contains(upgradeHeader, strings.ToLower(HeaderSpdy31)) { + defer resp.Body.Close() + responseError := "" + responseErrorBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + responseError = "unable to read error from server response" + } else { + // TODO: I don't belong here, I should be abstracted from this class + if obj, _, err := statusCodecs.UniversalDecoder().Decode(responseErrorBytes, nil, &metav1.Status{}); err == nil { + if status, ok := obj.(*metav1.Status); ok { + return nil, &apierrors.StatusError{ErrStatus: *status} + } + } + responseError = string(responseErrorBytes) + responseError = strings.TrimSpace(responseError) + } + + return nil, fmt.Errorf("unable to upgrade connection: %s", responseError) + } + + return NewClientConnection(s.conn) +} + +// statusScheme is private scheme for the decoding here until someone fixes the TODO in NewConnection +var statusScheme = runtime.NewScheme() + +// ParameterCodec knows about query parameters used with the meta v1 API spec. +var statusCodecs = serializer.NewCodecFactory(statusScheme) + +func init() { + statusScheme.AddUnversionedTypes(metav1.SchemeGroupVersion, + &metav1.Status{}, + ) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper_test.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper_test.go new file mode 100644 index 000000000..887adbe8f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/roundtripper_test.go @@ -0,0 +1,529 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package spdy + +import ( + "crypto/tls" + "crypto/x509" + "encoding/base64" + "fmt" + "io" + "net/http" + "net/http/httptest" + "net/url" + "strings" + "sync/atomic" + "testing" + + "github.com/elazarl/goproxy" + + "k8s.io/apimachinery/pkg/util/httpstream" +) + +// be sure to unset environment variable https_proxy (if exported) before testing, otherwise the testing will fail unexpectedly. +func TestRoundTripAndNewConnection(t *testing.T) { + for _, redirect := range []bool{false, true} { + t.Run(fmt.Sprintf("redirect = %t", redirect), func(t *testing.T) { + localhostPool := x509.NewCertPool() + if !localhostPool.AppendCertsFromPEM(localhostCert) { + t.Errorf("error setting up localhostCert pool") + } + + httpsServerInvalidHostname := func(h http.Handler) *httptest.Server { + cert, err := tls.X509KeyPair(exampleCert, exampleKey) + if err != nil { + t.Errorf("https (invalid hostname): proxy_test: %v", err) + } + ts := httptest.NewUnstartedServer(h) + ts.TLS = &tls.Config{ + Certificates: []tls.Certificate{cert}, + } + ts.StartTLS() + return ts + } + + httpsServerValidHostname := func(h http.Handler) *httptest.Server { + cert, err := tls.X509KeyPair(localhostCert, localhostKey) + if err != nil { + t.Errorf("https (valid hostname): proxy_test: %v", err) + } + ts := httptest.NewUnstartedServer(h) + ts.TLS = &tls.Config{ + Certificates: []tls.Certificate{cert}, + } + ts.StartTLS() + return ts + } + + testCases := map[string]struct { + serverFunc func(http.Handler) *httptest.Server + proxyServerFunc func(http.Handler) *httptest.Server + proxyAuth *url.Userinfo + clientTLS *tls.Config + serverConnectionHeader string + serverUpgradeHeader string + serverStatusCode int + shouldError bool + }{ + "no headers": { + serverFunc: httptest.NewServer, + serverConnectionHeader: "", + serverUpgradeHeader: "", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: true, + }, + "no upgrade header": { + serverFunc: httptest.NewServer, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: true, + }, + "no connection header": { + serverFunc: httptest.NewServer, + serverConnectionHeader: "", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: true, + }, + "no switching protocol status code": { + serverFunc: httptest.NewServer, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusForbidden, + shouldError: true, + }, + "http": { + serverFunc: httptest.NewServer, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "https (invalid hostname + InsecureSkipVerify)": { + serverFunc: httpsServerInvalidHostname, + clientTLS: &tls.Config{InsecureSkipVerify: true}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "https (invalid hostname + hostname verification)": { + serverFunc: httpsServerInvalidHostname, + clientTLS: &tls.Config{InsecureSkipVerify: false}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: true, + }, + "https (valid hostname + RootCAs)": { + serverFunc: httpsServerValidHostname, + clientTLS: &tls.Config{RootCAs: localhostPool}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied http->http": { + serverFunc: httptest.NewServer, + proxyServerFunc: httptest.NewServer, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied https (invalid hostname + InsecureSkipVerify) -> http": { + serverFunc: httptest.NewServer, + proxyServerFunc: httpsServerInvalidHostname, + clientTLS: &tls.Config{InsecureSkipVerify: true}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied https with auth (invalid hostname + InsecureSkipVerify) -> http": { + serverFunc: httptest.NewServer, + proxyServerFunc: httpsServerInvalidHostname, + proxyAuth: url.UserPassword("proxyuser", "proxypasswd"), + clientTLS: &tls.Config{InsecureSkipVerify: true}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied https (invalid hostname + hostname verification) -> http": { + serverFunc: httptest.NewServer, + proxyServerFunc: httpsServerInvalidHostname, + clientTLS: &tls.Config{InsecureSkipVerify: false}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: true, // fails because the client doesn't trust the proxy + }, + "proxied https (valid hostname + RootCAs) -> http": { + serverFunc: httptest.NewServer, + proxyServerFunc: httpsServerValidHostname, + clientTLS: &tls.Config{RootCAs: localhostPool}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied https with auth (valid hostname + RootCAs) -> http": { + serverFunc: httptest.NewServer, + proxyServerFunc: httpsServerValidHostname, + proxyAuth: url.UserPassword("proxyuser", "proxypasswd"), + clientTLS: &tls.Config{RootCAs: localhostPool}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied https (invalid hostname + InsecureSkipVerify) -> https (invalid hostname)": { + serverFunc: httpsServerInvalidHostname, + proxyServerFunc: httpsServerInvalidHostname, + clientTLS: &tls.Config{InsecureSkipVerify: true}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, // works because the test proxy ignores TLS errors + }, + "proxied https with auth (invalid hostname + InsecureSkipVerify) -> https (invalid hostname)": { + serverFunc: httpsServerInvalidHostname, + proxyServerFunc: httpsServerInvalidHostname, + proxyAuth: url.UserPassword("proxyuser", "proxypasswd"), + clientTLS: &tls.Config{InsecureSkipVerify: true}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, // works because the test proxy ignores TLS errors + }, + "proxied https (invalid hostname + hostname verification) -> https (invalid hostname)": { + serverFunc: httpsServerInvalidHostname, + proxyServerFunc: httpsServerInvalidHostname, + clientTLS: &tls.Config{InsecureSkipVerify: false}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: true, // fails because the client doesn't trust the proxy + }, + "proxied https (valid hostname + RootCAs) -> https (valid hostname + RootCAs)": { + serverFunc: httpsServerValidHostname, + proxyServerFunc: httpsServerValidHostname, + clientTLS: &tls.Config{RootCAs: localhostPool}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + "proxied https with auth (valid hostname + RootCAs) -> https (valid hostname + RootCAs)": { + serverFunc: httpsServerValidHostname, + proxyServerFunc: httpsServerValidHostname, + proxyAuth: url.UserPassword("proxyuser", "proxypasswd"), + clientTLS: &tls.Config{RootCAs: localhostPool}, + serverConnectionHeader: "Upgrade", + serverUpgradeHeader: "SPDY/3.1", + serverStatusCode: http.StatusSwitchingProtocols, + shouldError: false, + }, + } + + for k, testCase := range testCases { + server := testCase.serverFunc(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + if testCase.shouldError { + if e, a := httpstream.HeaderUpgrade, req.Header.Get(httpstream.HeaderConnection); e != a { + t.Fatalf("%s: Expected connection=upgrade header, got '%s", k, a) + } + + w.Header().Set(httpstream.HeaderConnection, testCase.serverConnectionHeader) + w.Header().Set(httpstream.HeaderUpgrade, testCase.serverUpgradeHeader) + w.WriteHeader(testCase.serverStatusCode) + + return + } + + streamCh := make(chan httpstream.Stream) + + responseUpgrader := NewResponseUpgrader() + spdyConn := responseUpgrader.UpgradeResponse(w, req, func(s httpstream.Stream, replySent <-chan struct{}) error { + streamCh <- s + return nil + }) + if spdyConn == nil { + t.Fatalf("%s: unexpected nil spdyConn", k) + } + defer spdyConn.Close() + + stream := <-streamCh + io.Copy(stream, stream) + })) + defer server.Close() + + serverURL, err := url.Parse(server.URL) + if err != nil { + t.Fatalf("%s: Error creating request: %s", k, err) + } + req, err := http.NewRequest("GET", server.URL, nil) + if err != nil { + t.Fatalf("%s: Error creating request: %s", k, err) + } + + spdyTransport := NewSpdyRoundTripper(testCase.clientTLS, redirect) + + var proxierCalled bool + var proxyCalledWithHost string + var proxyCalledWithAuth bool + var proxyCalledWithAuthHeader string + if testCase.proxyServerFunc != nil { + proxyHandler := goproxy.NewProxyHttpServer() + + proxyHandler.OnRequest().HandleConnectFunc(func(host string, ctx *goproxy.ProxyCtx) (*goproxy.ConnectAction, string) { + proxyCalledWithHost = host + + proxyAuthHeaderName := "Proxy-Authorization" + _, proxyCalledWithAuth = ctx.Req.Header[proxyAuthHeaderName] + proxyCalledWithAuthHeader = ctx.Req.Header.Get(proxyAuthHeaderName) + return goproxy.OkConnect, host + }) + + proxy := testCase.proxyServerFunc(proxyHandler) + + spdyTransport.proxier = func(proxierReq *http.Request) (*url.URL, error) { + proxierCalled = true + proxyURL, err := url.Parse(proxy.URL) + if err != nil { + return nil, err + } + proxyURL.User = testCase.proxyAuth + return proxyURL, nil + } + defer proxy.Close() + } + + client := &http.Client{Transport: spdyTransport} + + resp, err := client.Do(req) + var conn httpstream.Connection + if err == nil { + conn, err = spdyTransport.NewConnection(resp) + } + haveErr := err != nil + if e, a := testCase.shouldError, haveErr; e != a { + t.Fatalf("%s: shouldError=%t, got %t: %v", k, e, a, err) + } + if testCase.shouldError { + continue + } + defer conn.Close() + + if resp.StatusCode != http.StatusSwitchingProtocols { + t.Fatalf("%s: expected http 101 switching protocols, got %d", k, resp.StatusCode) + } + + stream, err := conn.CreateStream(http.Header{}) + if err != nil { + t.Fatalf("%s: error creating client stream: %s", k, err) + } + + n, err := stream.Write([]byte("hello")) + if err != nil { + t.Fatalf("%s: error writing to stream: %s", k, err) + } + if n != 5 { + t.Fatalf("%s: Expected to write 5 bytes, but actually wrote %d", k, n) + } + + b := make([]byte, 5) + n, err = stream.Read(b) + if err != nil { + t.Fatalf("%s: error reading from stream: %s", k, err) + } + if n != 5 { + t.Fatalf("%s: Expected to read 5 bytes, but actually read %d", k, n) + } + if e, a := "hello", string(b[0:n]); e != a { + t.Fatalf("%s: expected '%s', got '%s'", k, e, a) + } + + if testCase.proxyServerFunc != nil { + if !proxierCalled { + t.Fatalf("%s: Expected to use a proxy but proxier in SpdyRoundTripper wasn't called", k) + } + if proxyCalledWithHost != serverURL.Host { + t.Fatalf("%s: Expected to see a call to the proxy for backend %q, got %q", k, serverURL.Host, proxyCalledWithHost) + } + } + + var expectedProxyAuth string + if testCase.proxyAuth != nil { + encodedCredentials := base64.StdEncoding.EncodeToString([]byte(testCase.proxyAuth.String())) + expectedProxyAuth = "Basic " + encodedCredentials + } + if len(expectedProxyAuth) == 0 && proxyCalledWithAuth { + t.Fatalf("%s: Proxy authorization unexpected, got %q", k, proxyCalledWithAuthHeader) + } + if proxyCalledWithAuthHeader != expectedProxyAuth { + t.Fatalf("%s: Expected to see a call to the proxy with credentials %q, got %q", k, testCase.proxyAuth, proxyCalledWithAuthHeader) + } + } + }) + } +} + +func TestRoundTripRedirects(t *testing.T) { + tests := []struct { + redirects int32 + expectSuccess bool + }{ + {0, true}, + {1, true}, + {10, true}, + {11, false}, + } + for _, test := range tests { + t.Run(fmt.Sprintf("with %d redirects", test.redirects), func(t *testing.T) { + var redirects int32 = 0 + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + if redirects < test.redirects { + redirects = atomic.AddInt32(&redirects, 1) + http.Redirect(w, req, "redirect", http.StatusFound) + return + } + streamCh := make(chan httpstream.Stream) + + responseUpgrader := NewResponseUpgrader() + spdyConn := responseUpgrader.UpgradeResponse(w, req, func(s httpstream.Stream, replySent <-chan struct{}) error { + streamCh <- s + return nil + }) + if spdyConn == nil { + t.Fatalf("unexpected nil spdyConn") + } + defer spdyConn.Close() + + stream := <-streamCh + io.Copy(stream, stream) + })) + defer server.Close() + + req, err := http.NewRequest("GET", server.URL, nil) + if err != nil { + t.Fatalf("Error creating request: %s", err) + } + + spdyTransport := NewSpdyRoundTripper(nil, true) + client := &http.Client{Transport: spdyTransport} + + resp, err := client.Do(req) + if test.expectSuccess { + if err != nil { + t.Fatalf("error calling Do: %v", err) + } + } else { + if err == nil { + t.Fatalf("expecting an error") + } else if !strings.Contains(err.Error(), "too many redirects") { + t.Fatalf("expecting too many redirects, got %v", err) + } + return + } + + conn, err := spdyTransport.NewConnection(resp) + if err != nil { + t.Fatalf("error calling NewConnection: %v", err) + } + defer conn.Close() + + if resp.StatusCode != http.StatusSwitchingProtocols { + t.Fatalf("expected http 101 switching protocols, got %d", resp.StatusCode) + } + + stream, err := conn.CreateStream(http.Header{}) + if err != nil { + t.Fatalf("error creating client stream: %s", err) + } + + n, err := stream.Write([]byte("hello")) + if err != nil { + t.Fatalf("error writing to stream: %s", err) + } + if n != 5 { + t.Fatalf("Expected to write 5 bytes, but actually wrote %d", n) + } + + b := make([]byte, 5) + n, err = stream.Read(b) + if err != nil { + t.Fatalf("error reading from stream: %s", err) + } + if n != 5 { + t.Fatalf("Expected to read 5 bytes, but actually read %d", n) + } + if e, a := "hello", string(b[0:n]); e != a { + t.Fatalf("expected '%s', got '%s'", e, a) + } + }) + } +} + +// exampleCert was generated from crypto/tls/generate_cert.go with the following command: +// go run generate_cert.go --rsa-bits 512 --host example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h +var exampleCert = []byte(`-----BEGIN CERTIFICATE----- +MIIBdzCCASGgAwIBAgIRAOVTAdPnfbS5V85mfS90TfIwDQYJKoZIhvcNAQELBQAw +EjEQMA4GA1UEChMHQWNtZSBDbzAgFw03MDAxMDEwMDAwMDBaGA8yMDg0MDEyOTE2 +MDAwMFowEjEQMA4GA1UEChMHQWNtZSBDbzBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC +QQCoVSqeu8TBvF+70T7Jm4340YQNhds6IxjRoifenYodAO1dnKGrcbF266DJGunh +nIjQH7B12tduhl0fLK4Ezf7/AgMBAAGjUDBOMA4GA1UdDwEB/wQEAwICpDATBgNV +HSUEDDAKBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MBYGA1UdEQQPMA2CC2V4 +YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA0EAk1kVa5uZ/AzwYDVcS9bpM/czwjjV +xq3VeSCfmNa2uNjbFvodmCRwZOHUvipAMGCUCV6j5vMrJ8eMj8tCQ36W9A== +-----END CERTIFICATE-----`) + +var exampleKey = []byte(`-----BEGIN RSA PRIVATE KEY----- +MIIBOgIBAAJBAKhVKp67xMG8X7vRPsmbjfjRhA2F2zojGNGiJ96dih0A7V2coatx +sXbroMka6eGciNAfsHXa126GXR8srgTN/v8CAwEAAQJASdzdD7vKsUwMIejGCUb1 +fAnLTPfAY3lFCa+CmR89nE22dAoRDv+5RbnBsZ58BazPNJHrsVPRlfXB3OQmSQr0 +SQIhANoJhs+xOJE/i8nJv0uAbzKyiD1YkvRkta0GpUOULyAVAiEAxaQus3E/SuqD +P7y5NeJnE7X6XkyC35zrsJRkz7orE8MCIHdDjsI8pjyNDeGqwUCDWE/a6DrmIDwe +emHSqMN2YvChAiEAnxLCM9NWaenOsaIoP+J1rDuvw+4499nJKVqGuVrSCRkCIEqK +4KSchPMc3x8M/uhw9oWTtKFmjA/PPh0FsWCdKrEy +-----END RSA PRIVATE KEY-----`) + +// localhostCert was generated from crypto/tls/generate_cert.go with the following command: +// go run generate_cert.go --rsa-bits 512 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h +var localhostCert = []byte(`-----BEGIN CERTIFICATE----- +MIIBjzCCATmgAwIBAgIRAKpi2WmTcFrVjxrl5n5YDUEwDQYJKoZIhvcNAQELBQAw +EjEQMA4GA1UEChMHQWNtZSBDbzAgFw03MDAxMDEwMDAwMDBaGA8yMDg0MDEyOTE2 +MDAwMFowEjEQMA4GA1UEChMHQWNtZSBDbzBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC +QQC9fEbRszP3t14Gr4oahV7zFObBI4TfA5i7YnlMXeLinb7MnvT4bkfOJzE6zktn +59zP7UiHs3l4YOuqrjiwM413AgMBAAGjaDBmMA4GA1UdDwEB/wQEAwICpDATBgNV +HSUEDDAKBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MC4GA1UdEQQnMCWCC2V4 +YW1wbGUuY29thwR/AAABhxAAAAAAAAAAAAAAAAAAAAABMA0GCSqGSIb3DQEBCwUA +A0EAUsVE6KMnza/ZbodLlyeMzdo7EM/5nb5ywyOxgIOCf0OOLHsPS9ueGLQX9HEG +//yjTXuhNcUugExIjM/AIwAZPQ== +-----END CERTIFICATE-----`) + +// localhostKey is the private key for localhostCert. +var localhostKey = []byte(`-----BEGIN RSA PRIVATE KEY----- +MIIBOwIBAAJBAL18RtGzM/e3XgavihqFXvMU5sEjhN8DmLtieUxd4uKdvsye9Phu +R84nMTrOS2fn3M/tSIezeXhg66quOLAzjXcCAwEAAQJBAKcRxH9wuglYLBdI/0OT +BLzfWPZCEw1vZmMR2FF1Fm8nkNOVDPleeVGTWoOEcYYlQbpTmkGSxJ6ya+hqRi6x +goECIQDx3+X49fwpL6B5qpJIJMyZBSCuMhH4B7JevhGGFENi3wIhAMiNJN5Q3UkL +IuSvv03kaPR5XVQ99/UeEetUgGvBcABpAiBJSBzVITIVCGkGc7d+RCf49KTCIklv +bGWObufAR8Ni4QIgWpILjW8dkGg8GOUZ0zaNA6Nvt6TIv2UWGJ4v5PoV98kCIQDx +rIiZs5QbKdycsv9gQJzwQAogC8o04X3Zz3dsoX+h4A== +-----END RSA PRIVATE KEY-----`) diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go new file mode 100644 index 000000000..13353988f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go @@ -0,0 +1,107 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package spdy + +import ( + "bufio" + "fmt" + "io" + "net" + "net/http" + "strings" + "sync/atomic" + + "k8s.io/apimachinery/pkg/util/httpstream" + "k8s.io/apimachinery/pkg/util/runtime" +) + +const HeaderSpdy31 = "SPDY/3.1" + +// responseUpgrader knows how to upgrade HTTP responses. It +// implements the httpstream.ResponseUpgrader interface. +type responseUpgrader struct { +} + +// connWrapper is used to wrap a hijacked connection and its bufio.Reader. All +// calls will be handled directly by the underlying net.Conn with the exception +// of Read and Close calls, which will consider data in the bufio.Reader. This +// ensures that data already inside the used bufio.Reader instance is also +// read. +type connWrapper struct { + net.Conn + closed int32 + bufReader *bufio.Reader +} + +func (w *connWrapper) Read(b []byte) (n int, err error) { + if atomic.LoadInt32(&w.closed) == 1 { + return 0, io.EOF + } + return w.bufReader.Read(b) +} + +func (w *connWrapper) Close() error { + err := w.Conn.Close() + atomic.StoreInt32(&w.closed, 1) + return err +} + +// NewResponseUpgrader returns a new httpstream.ResponseUpgrader that is +// capable of upgrading HTTP responses using SPDY/3.1 via the +// spdystream package. +func NewResponseUpgrader() httpstream.ResponseUpgrader { + return responseUpgrader{} +} + +// UpgradeResponse upgrades an HTTP response to one that supports multiplexed +// streams. newStreamHandler will be called synchronously whenever the +// other end of the upgraded connection creates a new stream. +func (u responseUpgrader) UpgradeResponse(w http.ResponseWriter, req *http.Request, newStreamHandler httpstream.NewStreamHandler) httpstream.Connection { + connectionHeader := strings.ToLower(req.Header.Get(httpstream.HeaderConnection)) + upgradeHeader := strings.ToLower(req.Header.Get(httpstream.HeaderUpgrade)) + if !strings.Contains(connectionHeader, strings.ToLower(httpstream.HeaderUpgrade)) || !strings.Contains(upgradeHeader, strings.ToLower(HeaderSpdy31)) { + w.WriteHeader(http.StatusBadRequest) + fmt.Fprintf(w, "unable to upgrade: missing upgrade headers in request: %#v", req.Header) + return nil + } + + hijacker, ok := w.(http.Hijacker) + if !ok { + w.WriteHeader(http.StatusInternalServerError) + fmt.Fprintf(w, "unable to upgrade: unable to hijack response") + return nil + } + + w.Header().Add(httpstream.HeaderConnection, httpstream.HeaderUpgrade) + w.Header().Add(httpstream.HeaderUpgrade, HeaderSpdy31) + w.WriteHeader(http.StatusSwitchingProtocols) + + conn, bufrw, err := hijacker.Hijack() + if err != nil { + runtime.HandleError(fmt.Errorf("unable to upgrade: error hijacking response: %v", err)) + return nil + } + + connWithBuf := &connWrapper{Conn: conn, bufReader: bufrw.Reader} + spdyConn, err := NewServerConnection(connWithBuf, newStreamHandler) + if err != nil { + runtime.HandleError(fmt.Errorf("unable to upgrade: error creating SPDY server connection: %v", err)) + return nil + } + + return spdyConn +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade_test.go b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade_test.go new file mode 100644 index 000000000..5a514dd5b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade_test.go @@ -0,0 +1,93 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package spdy + +import ( + "net/http" + "net/http/httptest" + "testing" +) + +func TestUpgradeResponse(t *testing.T) { + testCases := []struct { + connectionHeader string + upgradeHeader string + shouldError bool + }{ + { + connectionHeader: "", + upgradeHeader: "", + shouldError: true, + }, + { + connectionHeader: "Upgrade", + upgradeHeader: "", + shouldError: true, + }, + { + connectionHeader: "", + upgradeHeader: "SPDY/3.1", + shouldError: true, + }, + { + connectionHeader: "Upgrade", + upgradeHeader: "SPDY/3.1", + shouldError: false, + }, + } + + for i, testCase := range testCases { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + upgrader := NewResponseUpgrader() + conn := upgrader.UpgradeResponse(w, req, nil) + haveErr := conn == nil + if e, a := testCase.shouldError, haveErr; e != a { + t.Fatalf("%d: expected shouldErr=%t, got %t", i, testCase.shouldError, haveErr) + } + if haveErr { + return + } + if conn == nil { + t.Fatalf("%d: unexpected nil conn", i) + } + defer conn.Close() + })) + defer server.Close() + + req, err := http.NewRequest("GET", server.URL, nil) + if err != nil { + t.Fatalf("%d: error creating request: %s", i, err) + } + + req.Header.Set("Connection", testCase.connectionHeader) + req.Header.Set("Upgrade", testCase.upgradeHeader) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + t.Fatalf("%d: unexpected non-nil err from client.Do: %s", i, err) + } + + if testCase.shouldError { + continue + } + + if resp.StatusCode != http.StatusSwitchingProtocols { + t.Fatalf("%d: expected status 101 switching protocols, got %d", i, resp.StatusCode) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD b/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD new file mode 100644 index 000000000..92968e2c8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["intstr_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/github.com/ghodss/yaml:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "generated.pb.go", + "intstr.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/openapi:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go new file mode 100644 index 000000000..433dfa5cd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.pb.go @@ -0,0 +1,381 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto +// DO NOT EDIT! + +/* + Package intstr is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto + + It has these top-level messages: + IntOrString +*/ +package intstr + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *IntOrString) Reset() { *m = IntOrString{} } +func (*IntOrString) ProtoMessage() {} +func (*IntOrString) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func init() { + proto.RegisterType((*IntOrString)(nil), "k8s.io.apimachinery.pkg.util.intstr.IntOrString") +} +func (m *IntOrString) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IntOrString) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Type)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.IntVal)) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StrVal))) + i += copy(dAtA[i:], m.StrVal) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *IntOrString) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Type)) + n += 1 + sovGenerated(uint64(m.IntVal)) + l = len(m.StrVal) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *IntOrString) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IntOrString: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IntOrString: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= (Type(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IntVal", wireType) + } + m.IntVal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.IntVal |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StrVal", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StrVal = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 292 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8f, 0x31, 0x4b, 0x33, 0x31, + 0x1c, 0xc6, 0x93, 0xb7, 0x7d, 0x8b, 0x9e, 0xe0, 0x50, 0x1c, 0x8a, 0x43, 0x7a, 0x28, 0xc8, 0x0d, + 0x9a, 0xac, 0xe2, 0xd8, 0xad, 0x20, 0x08, 0x57, 0x71, 0x70, 0xbb, 0x6b, 0x63, 0x1a, 0xae, 0x4d, + 0x42, 0xee, 0x7f, 0xc2, 0x6d, 0xfd, 0x08, 0xba, 0x39, 0xfa, 0x71, 0x6e, 0xec, 0xd8, 0x41, 0x8a, + 0x17, 0xbf, 0x85, 0x93, 0x5c, 0xee, 0x40, 0xa7, 0xe4, 0x79, 0x9e, 0xdf, 0x2f, 0x90, 0xe0, 0x36, + 0xbb, 0xce, 0xa9, 0xd4, 0x2c, 0x2b, 0x52, 0x6e, 0x15, 0x07, 0x9e, 0xb3, 0x67, 0xae, 0x16, 0xda, + 0xb2, 0x6e, 0x48, 0x8c, 0x5c, 0x27, 0xf3, 0xa5, 0x54, 0xdc, 0x96, 0xcc, 0x64, 0x82, 0x15, 0x20, + 0x57, 0x4c, 0x2a, 0xc8, 0xc1, 0x32, 0xc1, 0x15, 0xb7, 0x09, 0xf0, 0x05, 0x35, 0x56, 0x83, 0x1e, + 0x9e, 0xb7, 0x12, 0xfd, 0x2b, 0x51, 0x93, 0x09, 0xda, 0x48, 0xb4, 0x95, 0x4e, 0xaf, 0x84, 0x84, + 0x65, 0x91, 0xd2, 0xb9, 0x5e, 0x33, 0xa1, 0x85, 0x66, 0xde, 0x4d, 0x8b, 0x27, 0x9f, 0x7c, 0xf0, + 0xb7, 0xf6, 0xcd, 0xb3, 0x57, 0x1c, 0x1c, 0x4d, 0x15, 0xdc, 0xd9, 0x19, 0x58, 0xa9, 0xc4, 0x30, + 0x0a, 0xfa, 0x50, 0x1a, 0x3e, 0xc2, 0x21, 0x8e, 0x7a, 0x93, 0x93, 0x6a, 0x3f, 0x46, 0x6e, 0x3f, + 0xee, 0xdf, 0x97, 0x86, 0x7f, 0x77, 0x67, 0xec, 0x89, 0xe1, 0x45, 0x30, 0x90, 0x0a, 0x1e, 0x92, + 0xd5, 0xe8, 0x5f, 0x88, 0xa3, 0xff, 0x93, 0xe3, 0x8e, 0x1d, 0x4c, 0x7d, 0x1b, 0x77, 0x6b, 0xc3, + 0xe5, 0x60, 0x1b, 0xae, 0x17, 0xe2, 0xe8, 0xf0, 0x97, 0x9b, 0xf9, 0x36, 0xee, 0xd6, 0x9b, 0x83, + 0xb7, 0xf7, 0x31, 0xda, 0x7c, 0x84, 0x68, 0x72, 0x59, 0xd5, 0x04, 0x6d, 0x6b, 0x82, 0x76, 0x35, + 0x41, 0x1b, 0x47, 0x70, 0xe5, 0x08, 0xde, 0x3a, 0x82, 0x77, 0x8e, 0xe0, 0x4f, 0x47, 0xf0, 0xcb, + 0x17, 0x41, 0x8f, 0x83, 0xf6, 0xc3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x52, 0xa0, 0xb5, 0xc9, + 0x64, 0x01, 0x00, 0x00, +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto new file mode 100644 index 000000000..cccaf6f68 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.apimachinery.pkg.util.intstr; + +// Package-wide variables from generator "generated". +option go_package = "intstr"; + +// IntOrString is a type that can hold an int32 or a string. When used in +// JSON or YAML marshalling and unmarshalling, it produces or consumes the +// inner type. This allows you to have, for example, a JSON field that can +// accept a name or number. +// TODO: Rename to Int32OrString +// +// +protobuf=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +message IntOrString { + optional int64 type = 1; + + optional int32 intVal = 2; + + optional string strVal = 3; +} + diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go new file mode 100644 index 000000000..02586b348 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go @@ -0,0 +1,177 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package intstr + +import ( + "encoding/json" + "fmt" + "math" + "runtime/debug" + "strconv" + "strings" + + "k8s.io/apimachinery/pkg/openapi" + + "github.com/go-openapi/spec" + "github.com/golang/glog" + "github.com/google/gofuzz" +) + +// IntOrString is a type that can hold an int32 or a string. When used in +// JSON or YAML marshalling and unmarshalling, it produces or consumes the +// inner type. This allows you to have, for example, a JSON field that can +// accept a name or number. +// TODO: Rename to Int32OrString +// +// +protobuf=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +type IntOrString struct { + Type Type `protobuf:"varint,1,opt,name=type,casttype=Type"` + IntVal int32 `protobuf:"varint,2,opt,name=intVal"` + StrVal string `protobuf:"bytes,3,opt,name=strVal"` +} + +// Type represents the stored type of IntOrString. +type Type int + +const ( + Int Type = iota // The IntOrString holds an int. + String // The IntOrString holds a string. +) + +// FromInt creates an IntOrString object with an int32 value. It is +// your responsibility not to call this method with a value greater +// than int32. +// TODO: convert to (val int32) +func FromInt(val int) IntOrString { + if val > math.MaxInt32 || val < math.MinInt32 { + glog.Errorf("value: %d overflows int32\n%s\n", val, debug.Stack()) + } + return IntOrString{Type: Int, IntVal: int32(val)} +} + +// FromString creates an IntOrString object with a string value. +func FromString(val string) IntOrString { + return IntOrString{Type: String, StrVal: val} +} + +// Parse the given string and try to convert it to an integer before +// setting it as a string value. +func Parse(val string) IntOrString { + i, err := strconv.Atoi(val) + if err != nil { + return FromString(val) + } + return FromInt(i) +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (intstr *IntOrString) UnmarshalJSON(value []byte) error { + if value[0] == '"' { + intstr.Type = String + return json.Unmarshal(value, &intstr.StrVal) + } + intstr.Type = Int + return json.Unmarshal(value, &intstr.IntVal) +} + +// String returns the string value, or the Itoa of the int value. +func (intstr *IntOrString) String() string { + if intstr.Type == String { + return intstr.StrVal + } + return strconv.Itoa(intstr.IntValue()) +} + +// IntValue returns the IntVal if type Int, or if +// it is a String, will attempt a conversion to int. +func (intstr *IntOrString) IntValue() int { + if intstr.Type == String { + i, _ := strconv.Atoi(intstr.StrVal) + return i + } + return int(intstr.IntVal) +} + +// MarshalJSON implements the json.Marshaller interface. +func (intstr IntOrString) MarshalJSON() ([]byte, error) { + switch intstr.Type { + case Int: + return json.Marshal(intstr.IntVal) + case String: + return json.Marshal(intstr.StrVal) + default: + return []byte{}, fmt.Errorf("impossible IntOrString.Type") + } +} + +func (_ IntOrString) OpenAPIDefinition() openapi.OpenAPIDefinition { + return openapi.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "int-or-string", + }, + }, + } +} + +func (intstr *IntOrString) Fuzz(c fuzz.Continue) { + if intstr == nil { + return + } + if c.RandBool() { + intstr.Type = Int + c.Fuzz(&intstr.IntVal) + intstr.StrVal = "" + } else { + intstr.Type = String + intstr.IntVal = 0 + c.Fuzz(&intstr.StrVal) + } +} + +func GetValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) { + value, isPercent, err := getIntOrPercentValue(intOrPercent) + if err != nil { + return 0, fmt.Errorf("invalid value for IntOrString: %v", err) + } + if isPercent { + if roundUp { + value = int(math.Ceil(float64(value) * (float64(total)) / 100)) + } else { + value = int(math.Floor(float64(value) * (float64(total)) / 100)) + } + } + return value, nil +} + +func getIntOrPercentValue(intOrStr *IntOrString) (int, bool, error) { + switch intOrStr.Type { + case Int: + return intOrStr.IntValue(), false, nil + case String: + s := strings.Replace(intOrStr.StrVal, "%", "", -1) + v, err := strconv.Atoi(s) + if err != nil { + return 0, false, fmt.Errorf("invalid value %q: %v", intOrStr.StrVal, err) + } + return int(v), true, nil + } + return 0, false, fmt.Errorf("invalid type: neither int nor percentage") +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr_test.go b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr_test.go new file mode 100644 index 000000000..4faba46f8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr_test.go @@ -0,0 +1,176 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package intstr + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/ghodss/yaml" +) + +func TestFromInt(t *testing.T) { + i := FromInt(93) + if i.Type != Int || i.IntVal != 93 { + t.Errorf("Expected IntVal=93, got %+v", i) + } +} + +func TestFromString(t *testing.T) { + i := FromString("76") + if i.Type != String || i.StrVal != "76" { + t.Errorf("Expected StrVal=\"76\", got %+v", i) + } +} + +type IntOrStringHolder struct { + IOrS IntOrString `json:"val"` +} + +func TestIntOrStringUnmarshalJSON(t *testing.T) { + cases := []struct { + input string + result IntOrString + }{ + {"{\"val\": 123}", FromInt(123)}, + {"{\"val\": \"123\"}", FromString("123")}, + } + + for _, c := range cases { + var result IntOrStringHolder + if err := json.Unmarshal([]byte(c.input), &result); err != nil { + t.Errorf("Failed to unmarshal input '%v': %v", c.input, err) + } + if result.IOrS != c.result { + t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result) + } + } +} + +func TestIntOrStringMarshalJSON(t *testing.T) { + cases := []struct { + input IntOrString + result string + }{ + {FromInt(123), "{\"val\":123}"}, + {FromString("123"), "{\"val\":\"123\"}"}, + } + + for _, c := range cases { + input := IntOrStringHolder{c.input} + result, err := json.Marshal(&input) + if err != nil { + t.Errorf("Failed to marshal input '%v': %v", input, err) + } + if string(result) != c.result { + t.Errorf("Failed to marshal input '%v': expected: %+v, got %q", input, c.result, string(result)) + } + } +} + +func TestIntOrStringMarshalJSONUnmarshalYAML(t *testing.T) { + cases := []struct { + input IntOrString + }{ + {FromInt(123)}, + {FromString("123")}, + } + + for _, c := range cases { + input := IntOrStringHolder{c.input} + jsonMarshalled, err := json.Marshal(&input) + if err != nil { + t.Errorf("1: Failed to marshal input: '%v': %v", input, err) + } + + var result IntOrStringHolder + err = yaml.Unmarshal(jsonMarshalled, &result) + if err != nil { + t.Errorf("2: Failed to unmarshal '%+v': %v", string(jsonMarshalled), err) + } + + if !reflect.DeepEqual(input, result) { + t.Errorf("3: Failed to marshal input '%+v': got %+v", input, result) + } + } +} + +func TestGetValueFromIntOrPercent(t *testing.T) { + tests := []struct { + input IntOrString + total int + roundUp bool + expectErr bool + expectVal int + }{ + { + input: FromInt(123), + expectErr: false, + expectVal: 123, + }, + { + input: FromString("90%"), + total: 100, + roundUp: true, + expectErr: false, + expectVal: 90, + }, + { + input: FromString("90%"), + total: 95, + roundUp: true, + expectErr: false, + expectVal: 86, + }, + { + input: FromString("90%"), + total: 95, + roundUp: false, + expectErr: false, + expectVal: 85, + }, + { + input: FromString("%"), + expectErr: true, + }, + { + input: FromString("90#"), + expectErr: true, + }, + { + input: FromString("#%"), + expectErr: true, + }, + } + + for i, test := range tests { + t.Logf("test case %d", i) + value, err := GetValueFromIntOrPercent(&test.input, test.total, test.roundUp) + if test.expectErr && err == nil { + t.Errorf("expected error, but got none") + continue + } + if !test.expectErr && err != nil { + t.Errorf("unexpected err: %v", err) + continue + } + if test.expectVal != value { + t.Errorf("expected %v, but got %v", test.expectVal, value) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/json/BUILD b/vendor/k8s.io/apimachinery/pkg/util/json/BUILD new file mode 100644 index 000000000..68ca23339 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/json/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["json_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["json.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/json/json.go b/vendor/k8s.io/apimachinery/pkg/util/json/json.go new file mode 100644 index 000000000..e8054a12e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/json/json.go @@ -0,0 +1,107 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "bytes" + "encoding/json" + "io" +) + +// NewEncoder delegates to json.NewEncoder +// It is only here so this package can be a drop-in for common encoding/json uses +func NewEncoder(w io.Writer) *json.Encoder { + return json.NewEncoder(w) +} + +// Marshal delegates to json.Marshal +// It is only here so this package can be a drop-in for common encoding/json uses +func Marshal(v interface{}) ([]byte, error) { + return json.Marshal(v) +} + +// Unmarshal unmarshals the given data +// If v is a *map[string]interface{}, numbers are converted to int64 or float64 +func Unmarshal(data []byte, v interface{}) error { + switch v := v.(type) { + case *map[string]interface{}: + // Build a decoder from the given data + decoder := json.NewDecoder(bytes.NewBuffer(data)) + // Preserve numbers, rather than casting to float64 automatically + decoder.UseNumber() + // Run the decode + if err := decoder.Decode(v); err != nil { + return err + } + // If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64 + return convertMapNumbers(*v) + + default: + return json.Unmarshal(data, v) + } +} + +// convertMapNumbers traverses the map, converting any json.Number values to int64 or float64. +// values which are map[string]interface{} or []interface{} are recursively visited +func convertMapNumbers(m map[string]interface{}) error { + var err error + for k, v := range m { + switch v := v.(type) { + case json.Number: + m[k], err = convertNumber(v) + case map[string]interface{}: + err = convertMapNumbers(v) + case []interface{}: + err = convertSliceNumbers(v) + } + if err != nil { + return err + } + } + return nil +} + +// convertSliceNumbers traverses the slice, converting any json.Number values to int64 or float64. +// values which are map[string]interface{} or []interface{} are recursively visited +func convertSliceNumbers(s []interface{}) error { + var err error + for i, v := range s { + switch v := v.(type) { + case json.Number: + s[i], err = convertNumber(v) + case map[string]interface{}: + err = convertMapNumbers(v) + case []interface{}: + err = convertSliceNumbers(v) + } + if err != nil { + return err + } + } + return nil +} + +// convertNumber converts a json.Number to an int64 or float64, or returns an error +func convertNumber(n json.Number) (interface{}, error) { + // Attempt to convert to an int64 first + if i, err := n.Int64(); err == nil { + return i, nil + } + // Return a float64 (default json.Decode() behavior) + // An overflow will return an error + return n.Float64() +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/json/json_test.go b/vendor/k8s.io/apimachinery/pkg/util/json/json_test.go new file mode 100644 index 000000000..cd0c18bb2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/json/json_test.go @@ -0,0 +1,319 @@ +// +build go1.8 + +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "fmt" + "math" + "reflect" + "strconv" + "strings" + "testing" +) + +func TestEvaluateTypes(t *testing.T) { + testCases := []struct { + In string + Data interface{} + Out string + Err bool + }{ + // Invalid syntaxes + { + In: `x`, + Err: true, + }, + { + In: ``, + Err: true, + }, + + // Null + { + In: `null`, + Data: nil, + Out: `null`, + }, + // Booleans + { + In: `true`, + Data: true, + Out: `true`, + }, + { + In: `false`, + Data: false, + Out: `false`, + }, + + // Integers + { + In: `0`, + Data: int64(0), + Out: `0`, + }, + { + In: `-0`, + Data: int64(-0), + Out: `0`, + }, + { + In: `1`, + Data: int64(1), + Out: `1`, + }, + { + In: `2147483647`, + Data: int64(math.MaxInt32), + Out: `2147483647`, + }, + { + In: `-2147483648`, + Data: int64(math.MinInt32), + Out: `-2147483648`, + }, + { + In: `9223372036854775807`, + Data: int64(math.MaxInt64), + Out: `9223372036854775807`, + }, + { + In: `-9223372036854775808`, + Data: int64(math.MinInt64), + Out: `-9223372036854775808`, + }, + + // Int overflow + { + In: `9223372036854775808`, // MaxInt64 + 1 + Data: float64(9223372036854775808), + Out: `9223372036854776000`, + }, + { + In: `-9223372036854775809`, // MinInt64 - 1 + Data: float64(math.MinInt64), + Out: `-9223372036854776000`, + }, + + // Floats + { + In: `0.0`, + Data: float64(0), + Out: `0`, + }, + { + In: `-0.0`, + Data: float64(-0.0), + Out: `-0`, + }, + { + In: `0.5`, + Data: float64(0.5), + Out: `0.5`, + }, + { + In: `1e3`, + Data: float64(1e3), + Out: `1000`, + }, + { + In: `1.5`, + Data: float64(1.5), + Out: `1.5`, + }, + { + In: `-0.3`, + Data: float64(-.3), + Out: `-0.3`, + }, + { + // Largest representable float32 + In: `3.40282346638528859811704183484516925440e+38`, + Data: float64(math.MaxFloat32), + Out: strconv.FormatFloat(math.MaxFloat32, 'g', -1, 64), + }, + { + // Smallest float32 without losing precision + In: `1.175494351e-38`, + Data: float64(1.175494351e-38), + Out: `1.175494351e-38`, + }, + { + // float32 closest to zero + In: `1.401298464324817070923729583289916131280e-45`, + Data: float64(math.SmallestNonzeroFloat32), + Out: strconv.FormatFloat(math.SmallestNonzeroFloat32, 'g', -1, 64), + }, + { + // Largest representable float64 + In: `1.797693134862315708145274237317043567981e+308`, + Data: float64(math.MaxFloat64), + Out: strconv.FormatFloat(math.MaxFloat64, 'g', -1, 64), + }, + { + // Closest to zero without losing precision + In: `2.2250738585072014e-308`, + Data: float64(2.2250738585072014e-308), + Out: `2.2250738585072014e-308`, + }, + + { + // float64 closest to zero + In: `4.940656458412465441765687928682213723651e-324`, + Data: float64(math.SmallestNonzeroFloat64), + Out: strconv.FormatFloat(math.SmallestNonzeroFloat64, 'g', -1, 64), + }, + + { + // math.MaxFloat64 + 2 overflow + In: `1.7976931348623159e+308`, + Err: true, + }, + + // Strings + { + In: `""`, + Data: string(""), + Out: `""`, + }, + { + In: `"0"`, + Data: string("0"), + Out: `"0"`, + }, + { + In: `"A"`, + Data: string("A"), + Out: `"A"`, + }, + { + In: `"Iñtërnâtiônàlizætiøn"`, + Data: string("Iñtërnâtiônàlizætiøn"), + Out: `"Iñtërnâtiônàlizætiøn"`, + }, + + // Arrays + { + In: `[]`, + Data: []interface{}{}, + Out: `[]`, + }, + { + In: `[` + strings.Join([]string{ + `null`, + `true`, + `false`, + `0`, + `9223372036854775807`, + `0.0`, + `0.5`, + `1.0`, + `1.797693134862315708145274237317043567981e+308`, + `"0"`, + `"A"`, + `"Iñtërnâtiônàlizætiøn"`, + `[null,true,1,1.0,1.5]`, + `{"boolkey":true,"floatkey":1.0,"intkey":1,"nullkey":null}`, + }, ",") + `]`, + Data: []interface{}{ + nil, + true, + false, + int64(0), + int64(math.MaxInt64), + float64(0.0), + float64(0.5), + float64(1.0), + float64(math.MaxFloat64), + string("0"), + string("A"), + string("Iñtërnâtiônàlizætiøn"), + []interface{}{nil, true, int64(1), float64(1.0), float64(1.5)}, + map[string]interface{}{"nullkey": nil, "boolkey": true, "intkey": int64(1), "floatkey": float64(1.0)}, + }, + Out: `[` + strings.Join([]string{ + `null`, + `true`, + `false`, + `0`, + `9223372036854775807`, + `0`, + `0.5`, + `1`, + strconv.FormatFloat(math.MaxFloat64, 'g', -1, 64), + `"0"`, + `"A"`, + `"Iñtërnâtiônàlizætiøn"`, + `[null,true,1,1,1.5]`, + `{"boolkey":true,"floatkey":1,"intkey":1,"nullkey":null}`, // gets alphabetized by Marshal + }, ",") + `]`, + }, + + // Maps + { + In: `{}`, + Data: map[string]interface{}{}, + Out: `{}`, + }, + { + In: `{"boolkey":true,"floatkey":1.0,"intkey":1,"nullkey":null}`, + Data: map[string]interface{}{"nullkey": nil, "boolkey": true, "intkey": int64(1), "floatkey": float64(1.0)}, + Out: `{"boolkey":true,"floatkey":1,"intkey":1,"nullkey":null}`, // gets alphabetized by Marshal + }, + } + + for _, tc := range testCases { + inputJSON := fmt.Sprintf(`{"data":%s}`, tc.In) + expectedJSON := fmt.Sprintf(`{"data":%s}`, tc.Out) + m := map[string]interface{}{} + err := Unmarshal([]byte(inputJSON), &m) + if tc.Err && err != nil { + // Expected error + continue + } + if err != nil { + t.Errorf("%s: error decoding: %v", tc.In, err) + continue + } + if tc.Err { + t.Errorf("%s: expected error, got none", tc.In) + continue + } + data, ok := m["data"] + if !ok { + t.Errorf("%s: decoded object missing data key: %#v", tc.In, m) + continue + } + if !reflect.DeepEqual(tc.Data, data) { + t.Errorf("%s: expected\n\t%#v (%v), got\n\t%#v (%v)", tc.In, tc.Data, reflect.TypeOf(tc.Data), data, reflect.TypeOf(data)) + continue + } + + outputJSON, err := Marshal(m) + if err != nil { + t.Errorf("%s: error encoding: %v", tc.In, err) + continue + } + + if expectedJSON != string(outputJSON) { + t.Errorf("%s: expected\n\t%s, got\n\t%s", tc.In, expectedJSON, string(outputJSON)) + continue + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD new file mode 100644 index 000000000..5f13a1efd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["patch_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/davecgh/go-spew/spew:go_default_library", + "//vendor/github.com/evanphx/json-patch:go_default_library", + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["patch.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/evanphx/json-patch:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go new file mode 100644 index 000000000..e81e4f23a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go @@ -0,0 +1,144 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonmergepatch + +import ( + "fmt" + "reflect" + + "github.com/evanphx/json-patch" + "k8s.io/apimachinery/pkg/util/json" + "k8s.io/apimachinery/pkg/util/mergepatch" +) + +// Create a 3-way merge patch based-on JSON merge patch. +// Calculate addition-and-change patch between current and modified. +// Calculate deletion patch between original and modified. +func CreateThreeWayJSONMergePatch(original, modified, current []byte, fns ...mergepatch.PreconditionFunc) ([]byte, error) { + if len(original) == 0 { + original = []byte(`{}`) + } + if len(modified) == 0 { + modified = []byte(`{}`) + } + if len(current) == 0 { + current = []byte(`{}`) + } + + addAndChangePatch, err := jsonpatch.CreateMergePatch(current, modified) + if err != nil { + return nil, err + } + // Only keep addition and changes + addAndChangePatch, addAndChangePatchObj, err := keepOrDeleteNullInJsonPatch(addAndChangePatch, false) + if err != nil { + return nil, err + } + + deletePatch, err := jsonpatch.CreateMergePatch(original, modified) + if err != nil { + return nil, err + } + // Only keep deletion + deletePatch, deletePatchObj, err := keepOrDeleteNullInJsonPatch(deletePatch, true) + if err != nil { + return nil, err + } + + hasConflicts, err := mergepatch.HasConflicts(addAndChangePatchObj, deletePatchObj) + if err != nil { + return nil, err + } + if hasConflicts { + return nil, mergepatch.NewErrConflict(mergepatch.ToYAMLOrError(addAndChangePatchObj), mergepatch.ToYAMLOrError(deletePatchObj)) + } + patch, err := jsonpatch.MergePatch(deletePatch, addAndChangePatch) + if err != nil { + return nil, err + } + + var patchMap map[string]interface{} + err = json.Unmarshal(patch, &patchMap) + if err != nil { + return nil, fmt.Errorf("Failed to unmarshal patch for precondition check: %s", patch) + } + meetPreconditions, err := meetPreconditions(patchMap, fns...) + if err != nil { + return nil, err + } + if !meetPreconditions { + return nil, mergepatch.NewErrPreconditionFailed(patchMap) + } + + return patch, nil +} + +// keepOrDeleteNullInJsonPatch takes a json-encoded byte array and a boolean. +// It returns a filtered object and its corresponding json-encoded byte array. +// It is a wrapper of func keepOrDeleteNullInObj +func keepOrDeleteNullInJsonPatch(patch []byte, keepNull bool) ([]byte, map[string]interface{}, error) { + var patchMap map[string]interface{} + err := json.Unmarshal(patch, &patchMap) + if err != nil { + return nil, nil, err + } + filteredMap, err := keepOrDeleteNullInObj(patchMap, keepNull) + if err != nil { + return nil, nil, err + } + o, err := json.Marshal(filteredMap) + return o, filteredMap, err +} + +// keepOrDeleteNullInObj will keep only the null value and delete all the others, +// if keepNull is true. Otherwise, it will delete all the null value and keep the others. +func keepOrDeleteNullInObj(m map[string]interface{}, keepNull bool) (map[string]interface{}, error) { + filteredMap := make(map[string]interface{}) + var err error + for key, val := range m { + switch { + case keepNull && val == nil: + filteredMap[key] = nil + case val != nil: + switch typedVal := val.(type) { + case map[string]interface{}: + filteredMap[key], err = keepOrDeleteNullInObj(typedVal, keepNull) + if err != nil { + return nil, err + } + case []interface{}, string, float64, bool, int, int64, nil: + // Lists are always replaced in Json, no need to check each entry in the list. + if !keepNull { + filteredMap[key] = val + } + default: + return nil, fmt.Errorf("unknown type: %v", reflect.TypeOf(typedVal)) + } + } + } + return filteredMap, nil +} + +func meetPreconditions(patchObj map[string]interface{}, fns ...mergepatch.PreconditionFunc) (bool, error) { + // Apply the preconditions to the patch, and return an error if any of them fail. + for _, fn := range fns { + if !fn(patchObj) { + return false, fmt.Errorf("precondition failed for: %v", patchObj) + } + } + return true, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch_test.go b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch_test.go new file mode 100644 index 000000000..f462bf915 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch_test.go @@ -0,0 +1,663 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonmergepatch + +import ( + "fmt" + "reflect" + "testing" + + "github.com/davecgh/go-spew/spew" + "github.com/evanphx/json-patch" + "github.com/ghodss/yaml" + "k8s.io/apimachinery/pkg/util/json" +) + +type FilterNullTestCases struct { + TestCases []FilterNullTestCase +} + +type FilterNullTestCase struct { + Description string + OriginalObj map[string]interface{} + ExpectedWithNull map[string]interface{} + ExpectedWithoutNull map[string]interface{} +} + +var filterNullTestCaseData = []byte(` +testCases: + - description: nil original + originalObj: {} + expectedWithNull: {} + expectedWithoutNull: {} + - description: simple map + originalObj: + nilKey: null + nonNilKey: foo + expectedWithNull: + nilKey: null + expectedWithoutNull: + nonNilKey: foo + - description: simple map with all nil values + originalObj: + nilKey1: null + nilKey2: null + expectedWithNull: + nilKey1: null + nilKey2: null + expectedWithoutNull: {} + - description: simple map with all non-nil values + originalObj: + nonNilKey: foo + nonNilKey: bar + expectedWithNull: {} + expectedWithoutNull: + nonNilKey: foo + nonNilKey: bar + - description: nested map + originalObj: + mapKey: + nilKey: null + nonNilKey: foo + expectedWithNull: + mapKey: + nilKey: null + expectedWithoutNull: + mapKey: + nonNilKey: foo + - description: nested map that all subkeys are nil + originalObj: + mapKey: + nilKey1: null + nilKey2: null + expectedWithNull: + mapKey: + nilKey1: null + nilKey2: null + expectedWithoutNull: + mapKey: {} + - description: nested map that all subkeys are non-nil + originalObj: + mapKey: + nonNilKey: foo + nonNilKey: bar + expectedWithNull: + mapKey: {} + expectedWithoutNull: + mapKey: + nonNilKey: foo + nonNilKey: bar + - description: empty list + originalObj: + listKey: [] + expectedWithNull: {} + expectedWithoutNull: + listKey: [] + - description: list of primitives + originalObj: + listKey: + - 1 + - 2 + expectedWithNull: {} + expectedWithoutNull: + listKey: + - 1 + - 2 + - description: list of maps + originalObj: + listKey: + - k1: v1 + - k2: null + - k3: v3 + k4: null + expectedWithNull: {} + expectedWithoutNull: + listKey: + - k1: v1 + - k2: null + - k3: v3 + k4: null + - description: list of different types + originalObj: + listKey: + - k1: v1 + - k2: null + - v3 + expectedWithNull: {} + expectedWithoutNull: + listKey: + - k1: v1 + - k2: null + - v3 +`) + +func TestKeepOrDeleteNullInObj(t *testing.T) { + tc := FilterNullTestCases{} + err := yaml.Unmarshal(filterNullTestCaseData, &tc) + if err != nil { + t.Fatalf("can't unmarshal test cases: %s\n", err) + } + + for _, test := range tc.TestCases { + resultWithNull, err := keepOrDeleteNullInObj(test.OriginalObj, true) + if err != nil { + t.Errorf("Failed in test case %q when trying to keep null values: %s", test.Description, err) + } + if !reflect.DeepEqual(test.ExpectedWithNull, resultWithNull) { + t.Errorf("Failed in test case %q when trying to keep null values:\nexpected expectedWithNull:\n%+v\nbut got:\n%+v\n", test.Description, test.ExpectedWithNull, resultWithNull) + } + + resultWithoutNull, err := keepOrDeleteNullInObj(test.OriginalObj, false) + if err != nil { + t.Errorf("Failed in test case %q when trying to keep non-null values: %s", test.Description, err) + } + if !reflect.DeepEqual(test.ExpectedWithoutNull, resultWithoutNull) { + t.Errorf("Failed in test case %q when trying to keep non-null values:\n expected expectedWithoutNull:\n%+v\nbut got:\n%+v\n", test.Description, test.ExpectedWithoutNull, resultWithoutNull) + } + } +} + +type JSONMergePatchTestCases struct { + TestCases []JSONMergePatchTestCase +} + +type JSONMergePatchTestCase struct { + Description string + JSONMergePatchTestCaseData +} + +type JSONMergePatchTestCaseData struct { + // Original is the original object (last-applied config in annotation) + Original map[string]interface{} + // Modified is the modified object (new config we want) + Modified map[string]interface{} + // Current is the current object (live config in the server) + Current map[string]interface{} + // ThreeWay is the expected three-way merge patch + ThreeWay map[string]interface{} + // Result is the expected object after applying the three-way patch on current object. + Result map[string]interface{} +} + +var createJSONMergePatchTestCaseData = []byte(` +testCases: + - description: nil original + modified: + name: 1 + value: 1 + current: + name: 1 + other: a + threeWay: + value: 1 + result: + name: 1 + value: 1 + other: a + - description: nil patch + original: + name: 1 + modified: + name: 1 + current: + name: 1 + threeWay: + {} + result: + name: 1 + - description: add field to map + original: + name: 1 + modified: + name: 1 + value: 1 + current: + name: 1 + other: a + threeWay: + value: 1 + result: + name: 1 + value: 1 + other: a + - description: add field to map with conflict + original: + name: 1 + modified: + name: 1 + value: 1 + current: + name: a + other: a + threeWay: + name: 1 + value: 1 + result: + name: 1 + value: 1 + other: a + - description: add field and delete field from map + original: + name: 1 + modified: + value: 1 + current: + name: 1 + other: a + threeWay: + name: null + value: 1 + result: + value: 1 + other: a + - description: add field and delete field from map with conflict + original: + name: 1 + modified: + value: 1 + current: + name: a + other: a + threeWay: + name: null + value: 1 + result: + value: 1 + other: a + - description: delete field from nested map + original: + simpleMap: + key1: 1 + key2: 1 + modified: + simpleMap: + key1: 1 + current: + simpleMap: + key1: 1 + key2: 1 + other: a + threeWay: + simpleMap: + key2: null + result: + simpleMap: + key1: 1 + other: a + - description: delete field from nested map with conflict + original: + simpleMap: + key1: 1 + key2: 1 + modified: + simpleMap: + key1: 1 + current: + simpleMap: + key1: a + key2: 1 + other: a + threeWay: + simpleMap: + key1: 1 + key2: null + result: + simpleMap: + key1: 1 + other: a + - description: delete all fields from map + original: + name: 1 + value: 1 + modified: {} + current: + name: 1 + value: 1 + other: a + threeWay: + name: null + value: null + result: + other: a + - description: delete all fields from map with conflict + original: + name: 1 + value: 1 + modified: {} + current: + name: 1 + value: a + other: a + threeWay: + name: null + value: null + result: + other: a + - description: add field and delete all fields from map + original: + name: 1 + value: 1 + modified: + other: a + current: + name: 1 + value: 1 + other: a + threeWay: + name: null + value: null + result: + other: a + - description: add field and delete all fields from map with conflict + original: + name: 1 + value: 1 + modified: + other: a + current: + name: 1 + value: 1 + other: b + threeWay: + name: null + value: null + other: a + result: + other: a + - description: replace list of scalars + original: + intList: + - 1 + - 2 + modified: + intList: + - 2 + - 3 + current: + intList: + - 1 + - 2 + threeWay: + intList: + - 2 + - 3 + result: + intList: + - 2 + - 3 + - description: replace list of scalars with conflict + original: + intList: + - 1 + - 2 + modified: + intList: + - 2 + - 3 + current: + intList: + - 1 + - 4 + threeWay: + intList: + - 2 + - 3 + result: + intList: + - 2 + - 3 + - description: patch with different scalar type + original: + foo: 1 + modified: + foo: true + current: + foo: 1 + bar: 2 + threeWay: + foo: true + result: + foo: true + bar: 2 + - description: patch from scalar to list + original: + foo: 0 + modified: + foo: + - 1 + - 2 + current: + foo: 0 + bar: 2 + threeWay: + foo: + - 1 + - 2 + result: + foo: + - 1 + - 2 + bar: 2 + - description: patch from list to scalar + original: + foo: + - 1 + - 2 + modified: + foo: 0 + current: + foo: + - 1 + - 2 + bar: 2 + threeWay: + foo: 0 + result: + foo: 0 + bar: 2 + - description: patch from scalar to map + original: + foo: 0 + modified: + foo: + baz: 1 + current: + foo: 0 + bar: 2 + threeWay: + foo: + baz: 1 + result: + foo: + baz: 1 + bar: 2 + - description: patch from map to scalar + original: + foo: + baz: 1 + modified: + foo: 0 + current: + foo: + baz: 1 + bar: 2 + threeWay: + foo: 0 + result: + foo: 0 + bar: 2 + - description: patch from map to list + original: + foo: + baz: 1 + modified: + foo: + - 1 + - 2 + current: + foo: + baz: 1 + bar: 2 + threeWay: + foo: + - 1 + - 2 + result: + foo: + - 1 + - 2 + bar: 2 + - description: patch from list to map + original: + foo: + - 1 + - 2 + modified: + foo: + baz: 0 + current: + foo: + - 1 + - 2 + bar: 2 + threeWay: + foo: + baz: 0 + result: + foo: + baz: 0 + bar: 2 + - description: patch with different nested types + original: + foo: + - a: true + - 2 + - false + modified: + foo: + - 1 + - false + - b: 1 + current: + foo: + - a: true + - 2 + - false + bar: 0 + threeWay: + foo: + - 1 + - false + - b: 1 + result: + foo: + - 1 + - false + - b: 1 + bar: 0 +`) + +func TestCreateThreeWayJSONMergePatch(t *testing.T) { + tc := JSONMergePatchTestCases{} + err := yaml.Unmarshal(createJSONMergePatchTestCaseData, &tc) + if err != nil { + t.Errorf("can't unmarshal test cases: %s\n", err) + return + } + + for _, c := range tc.TestCases { + testThreeWayPatch(t, c) + } +} + +func testThreeWayPatch(t *testing.T, c JSONMergePatchTestCase) { + original, modified, current, expected, result := threeWayTestCaseToJSONOrFail(t, c) + actual, err := CreateThreeWayJSONMergePatch(original, modified, current) + if err != nil { + t.Fatalf("error: %s", err) + } + testPatchCreation(t, expected, actual, c.Description) + testPatchApplication(t, current, actual, result, c.Description) +} + +func testPatchCreation(t *testing.T, expected, actual []byte, description string) { + if !reflect.DeepEqual(actual, expected) { + t.Errorf("error in test case: %s\nexpected patch:\n%s\ngot:\n%s\n", + description, jsonToYAMLOrError(expected), jsonToYAMLOrError(actual)) + return + } +} + +func testPatchApplication(t *testing.T, original, patch, expected []byte, description string) { + result, err := jsonpatch.MergePatch(original, patch) + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot apply patch:\n%s\nto original:\n%s\n", + err, description, jsonToYAMLOrError(patch), jsonToYAMLOrError(original)) + return + } + + if !reflect.DeepEqual(result, expected) { + format := "error in test case: %s\npatch application failed:\noriginal:\n%s\npatch:\n%s\nexpected:\n%s\ngot:\n%s\n" + t.Errorf(format, description, + jsonToYAMLOrError(original), jsonToYAMLOrError(patch), + jsonToYAMLOrError(expected), jsonToYAMLOrError(result)) + return + } +} + +func threeWayTestCaseToJSONOrFail(t *testing.T, c JSONMergePatchTestCase) ([]byte, []byte, []byte, []byte, []byte) { + return testObjectToJSONOrFail(t, c.Original), + testObjectToJSONOrFail(t, c.Modified), + testObjectToJSONOrFail(t, c.Current), + testObjectToJSONOrFail(t, c.ThreeWay), + testObjectToJSONOrFail(t, c.Result) +} + +func testObjectToJSONOrFail(t *testing.T, o map[string]interface{}) []byte { + if o == nil { + return nil + } + j, err := toJSON(o) + if err != nil { + t.Error(err) + } + return j +} + +func jsonToYAMLOrError(j []byte) string { + y, err := jsonToYAML(j) + if err != nil { + return err.Error() + } + return string(y) +} + +func toJSON(v interface{}) ([]byte, error) { + j, err := json.Marshal(v) + if err != nil { + return nil, fmt.Errorf("json marshal failed: %v\n%v\n", err, spew.Sdump(v)) + } + return j, nil +} + +func jsonToYAML(j []byte) ([]byte, error) { + y, err := yaml.JSONToYAML(j) + if err != nil { + return nil, fmt.Errorf("json to yaml failed: %v\n%v\n", err, j) + } + return y, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD new file mode 100644 index 000000000..630314fe4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["util_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "errors.go", + "util.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/davecgh/go-spew/spew:go_default_library", + "//vendor/github.com/ghodss/yaml:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/OWNERS b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/OWNERS new file mode 100644 index 000000000..8e8d9fce8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/OWNERS @@ -0,0 +1,5 @@ +approvers: +- pwittrock +reviewers: +- mengqiy +- apelisse diff --git a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/errors.go b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/errors.go new file mode 100644 index 000000000..ac3c1e8cf --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/errors.go @@ -0,0 +1,101 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mergepatch + +import ( + "errors" + "fmt" + "reflect" +) + +var ( + ErrBadJSONDoc = errors.New("invalid JSON document") + ErrNoListOfLists = errors.New("lists of lists are not supported") + ErrBadPatchFormatForPrimitiveList = errors.New("invalid patch format of primitive list") + ErrBadPatchFormatForRetainKeys = errors.New("invalid patch format of retainKeys") + ErrBadPatchFormatForSetElementOrderList = errors.New("invalid patch format of setElementOrder list") + ErrPatchContentNotMatchRetainKeys = errors.New("patch content doesn't match retainKeys list") +) + +func ErrNoMergeKey(m map[string]interface{}, k string) error { + return fmt.Errorf("map: %v does not contain declared merge key: %s", m, k) +} + +func ErrBadArgType(expected, actual interface{}) error { + return fmt.Errorf("expected a %s, but received a %s", + reflect.TypeOf(expected), + reflect.TypeOf(actual)) +} + +func ErrBadArgKind(expected, actual interface{}) error { + var expectedKindString, actualKindString string + if expected == nil { + expectedKindString = "nil" + } else { + expectedKindString = reflect.TypeOf(expected).Kind().String() + } + if actual == nil { + actualKindString = "nil" + } else { + actualKindString = reflect.TypeOf(actual).Kind().String() + } + return fmt.Errorf("expected a %s, but received a %s", expectedKindString, actualKindString) +} + +func ErrBadPatchType(t interface{}, m map[string]interface{}) error { + return fmt.Errorf("unknown patch type: %s in map: %v", t, m) +} + +// IsPreconditionFailed returns true if the provided error indicates +// a precondition failed. +func IsPreconditionFailed(err error) bool { + _, ok := err.(ErrPreconditionFailed) + return ok +} + +type ErrPreconditionFailed struct { + message string +} + +func NewErrPreconditionFailed(target map[string]interface{}) ErrPreconditionFailed { + s := fmt.Sprintf("precondition failed for: %v", target) + return ErrPreconditionFailed{s} +} + +func (err ErrPreconditionFailed) Error() string { + return err.message +} + +type ErrConflict struct { + message string +} + +func NewErrConflict(patch, current string) ErrConflict { + s := fmt.Sprintf("patch:\n%s\nconflicts with changes made from original to current:\n%s\n", patch, current) + return ErrConflict{s} +} + +func (err ErrConflict) Error() string { + return err.message +} + +// IsConflict returns true if the provided error indicates +// a conflict between the patch and the current configuration. +func IsConflict(err error) bool { + _, ok := err.(ErrConflict) + return ok +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go new file mode 100644 index 000000000..9261290a7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go @@ -0,0 +1,133 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mergepatch + +import ( + "fmt" + "reflect" + + "github.com/davecgh/go-spew/spew" + "github.com/ghodss/yaml" +) + +// PreconditionFunc asserts that an incompatible change is not present within a patch. +type PreconditionFunc func(interface{}) bool + +// RequireKeyUnchanged returns a precondition function that fails if the provided key +// is present in the patch (indicating that its value has changed). +func RequireKeyUnchanged(key string) PreconditionFunc { + return func(patch interface{}) bool { + patchMap, ok := patch.(map[string]interface{}) + if !ok { + return true + } + + // The presence of key means that its value has been changed, so the test fails. + _, ok = patchMap[key] + return !ok + } +} + +// RequireMetadataKeyUnchanged creates a precondition function that fails +// if the metadata.key is present in the patch (indicating its value +// has changed). +func RequireMetadataKeyUnchanged(key string) PreconditionFunc { + return func(patch interface{}) bool { + patchMap, ok := patch.(map[string]interface{}) + if !ok { + return true + } + patchMap1, ok := patchMap["metadata"] + if !ok { + return true + } + patchMap2, ok := patchMap1.(map[string]interface{}) + if !ok { + return true + } + _, ok = patchMap2[key] + return !ok + } +} + +func ToYAMLOrError(v interface{}) string { + y, err := toYAML(v) + if err != nil { + return err.Error() + } + + return y +} + +func toYAML(v interface{}) (string, error) { + y, err := yaml.Marshal(v) + if err != nil { + return "", fmt.Errorf("yaml marshal failed:%v\n%v\n", err, spew.Sdump(v)) + } + + return string(y), nil +} + +// HasConflicts returns true if the left and right JSON interface objects overlap with +// different values in any key. All keys are required to be strings. Since patches of the +// same Type have congruent keys, this is valid for multiple patch types. This method +// supports JSON merge patch semantics. +// +// NOTE: Numbers with different types (e.g. int(0) vs int64(0)) will be detected as conflicts. +// Make sure the unmarshaling of left and right are consistent (e.g. use the same library). +func HasConflicts(left, right interface{}) (bool, error) { + switch typedLeft := left.(type) { + case map[string]interface{}: + switch typedRight := right.(type) { + case map[string]interface{}: + for key, leftValue := range typedLeft { + rightValue, ok := typedRight[key] + if !ok { + continue + } + if conflict, err := HasConflicts(leftValue, rightValue); err != nil || conflict { + return conflict, err + } + } + + return false, nil + default: + return true, nil + } + case []interface{}: + switch typedRight := right.(type) { + case []interface{}: + if len(typedLeft) != len(typedRight) { + return true, nil + } + + for i := range typedLeft { + if conflict, err := HasConflicts(typedLeft[i], typedRight[i]); err != nil || conflict { + return conflict, err + } + } + + return false, nil + default: + return true, nil + } + case string, float64, bool, int, int64, nil: + return !reflect.DeepEqual(left, right), nil + default: + return true, fmt.Errorf("unknown type: %v", reflect.TypeOf(left)) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util_test.go b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util_test.go new file mode 100644 index 000000000..1b37e3ef5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util_test.go @@ -0,0 +1,138 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package mergepatch + +import ( + "fmt" + "testing" +) + +func TestHasConflicts(t *testing.T) { + testCases := []struct { + A interface{} + B interface{} + Ret bool + }{ + {A: "hello", B: "hello", Ret: false}, + {A: "hello", B: "hell", Ret: true}, + {A: "hello", B: nil, Ret: true}, + {A: "hello", B: 1, Ret: true}, + {A: "hello", B: float64(1.0), Ret: true}, + {A: "hello", B: false, Ret: true}, + {A: 1, B: 1, Ret: false}, + {A: nil, B: nil, Ret: false}, + {A: false, B: false, Ret: false}, + {A: float64(3), B: float64(3), Ret: false}, + + {A: "hello", B: []interface{}{}, Ret: true}, + {A: []interface{}{1}, B: []interface{}{}, Ret: true}, + {A: []interface{}{}, B: []interface{}{}, Ret: false}, + {A: []interface{}{1}, B: []interface{}{1}, Ret: false}, + {A: map[string]interface{}{}, B: []interface{}{1}, Ret: true}, + + {A: map[string]interface{}{}, B: map[string]interface{}{"a": 1}, Ret: false}, + {A: map[string]interface{}{"a": 1}, B: map[string]interface{}{"a": 1}, Ret: false}, + {A: map[string]interface{}{"a": 1}, B: map[string]interface{}{"a": 2}, Ret: true}, + {A: map[string]interface{}{"a": 1}, B: map[string]interface{}{"b": 2}, Ret: false}, + + { + A: map[string]interface{}{"a": []interface{}{1}}, + B: map[string]interface{}{"a": []interface{}{1}}, + Ret: false, + }, + { + A: map[string]interface{}{"a": []interface{}{1}}, + B: map[string]interface{}{"a": []interface{}{}}, + Ret: true, + }, + { + A: map[string]interface{}{"a": []interface{}{1}}, + B: map[string]interface{}{"a": 1}, + Ret: true, + }, + + // Maps and lists with multiple entries. + { + A: map[string]interface{}{"a": 1, "b": 2}, + B: map[string]interface{}{"a": 1, "b": 0}, + Ret: true, + }, + { + A: map[string]interface{}{"a": 1, "b": 2}, + B: map[string]interface{}{"a": 1, "b": 2}, + Ret: false, + }, + { + A: map[string]interface{}{"a": 1, "b": 2}, + B: map[string]interface{}{"a": 1, "b": 0, "c": 3}, + Ret: true, + }, + { + A: map[string]interface{}{"a": 1, "b": 2}, + B: map[string]interface{}{"a": 1, "b": 2, "c": 3}, + Ret: false, + }, + { + A: map[string]interface{}{"a": []interface{}{1, 2}}, + B: map[string]interface{}{"a": []interface{}{1, 0}}, + Ret: true, + }, + { + A: map[string]interface{}{"a": []interface{}{1, 2}}, + B: map[string]interface{}{"a": []interface{}{1, 2}}, + Ret: false, + }, + + // Numeric types are not interchangeable. + // Callers are expected to ensure numeric types are consistent in 'left' and 'right'. + {A: int(0), B: int64(0), Ret: true}, + {A: int(0), B: float64(0), Ret: true}, + {A: int64(0), B: float64(0), Ret: true}, + // Other types are not interchangeable. + {A: int(0), B: "0", Ret: true}, + {A: int(0), B: nil, Ret: true}, + {A: int(0), B: false, Ret: true}, + {A: "true", B: true, Ret: true}, + {A: "null", B: nil, Ret: true}, + } + + for _, testCase := range testCases { + testStr := fmt.Sprintf("A = %#v, B = %#v", testCase.A, testCase.B) + // Run each test case multiple times if it passes because HasConflicts() + // uses map iteration, which returns keys in nondeterministic order. + for try := 0; try < 10; try++ { + out, err := HasConflicts(testCase.A, testCase.B) + if err != nil { + t.Errorf("%v: unexpected error: %v", testStr, err) + break + } + if out != testCase.Ret { + t.Errorf("%v: expected %t got %t", testStr, testCase.Ret, out) + break + } + out, err = HasConflicts(testCase.B, testCase.A) + if err != nil { + t.Errorf("%v: unexpected error: %v", testStr, err) + break + } + if out != testCase.Ret { + t.Errorf("%v: expected reversed %t got %t", testStr, testCase.Ret, out) + break + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/BUILD b/vendor/k8s.io/apimachinery/pkg/util/net/BUILD new file mode 100644 index 000000000..09a89c117 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/BUILD @@ -0,0 +1,40 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "http_test.go", + "interface_test.go", + "port_range_test.go", + "port_split_test.go", + "util_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/github.com/spf13/pflag:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "http.go", + "interface.go", + "port_range.go", + "port_split.go", + "util.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/golang.org/x/net/http2:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http.go b/vendor/k8s.io/apimachinery/pkg/util/net/http.go new file mode 100644 index 000000000..adb80813b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/http.go @@ -0,0 +1,401 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "bufio" + "bytes" + "crypto/tls" + "fmt" + "io" + "net" + "net/http" + "net/url" + "os" + "strconv" + "strings" + + "github.com/golang/glog" + "golang.org/x/net/http2" +) + +// IsProbableEOF returns true if the given error resembles a connection termination +// scenario that would justify assuming that the watch is empty. +// These errors are what the Go http stack returns back to us which are general +// connection closure errors (strongly correlated) and callers that need to +// differentiate probable errors in connection behavior between normal "this is +// disconnected" should use the method. +func IsProbableEOF(err error) bool { + if uerr, ok := err.(*url.Error); ok { + err = uerr.Err + } + switch { + case err == io.EOF: + return true + case err.Error() == "http: can't write HTTP request on broken connection": + return true + case strings.Contains(err.Error(), "connection reset by peer"): + return true + case strings.Contains(strings.ToLower(err.Error()), "use of closed network connection"): + return true + } + return false +} + +var defaultTransport = http.DefaultTransport.(*http.Transport) + +// SetOldTransportDefaults applies the defaults from http.DefaultTransport +// for the Proxy, Dial, and TLSHandshakeTimeout fields if unset +func SetOldTransportDefaults(t *http.Transport) *http.Transport { + if t.Proxy == nil || isDefault(t.Proxy) { + // http.ProxyFromEnvironment doesn't respect CIDRs and that makes it impossible to exclude things like pod and service IPs from proxy settings + // ProxierWithNoProxyCIDR allows CIDR rules in NO_PROXY + t.Proxy = NewProxierWithNoProxyCIDR(http.ProxyFromEnvironment) + } + if t.Dial == nil { + t.Dial = defaultTransport.Dial + } + if t.TLSHandshakeTimeout == 0 { + t.TLSHandshakeTimeout = defaultTransport.TLSHandshakeTimeout + } + return t +} + +// SetTransportDefaults applies the defaults from http.DefaultTransport +// for the Proxy, Dial, and TLSHandshakeTimeout fields if unset +func SetTransportDefaults(t *http.Transport) *http.Transport { + t = SetOldTransportDefaults(t) + // Allow clients to disable http2 if needed. + if s := os.Getenv("DISABLE_HTTP2"); len(s) > 0 { + glog.Infof("HTTP2 has been explicitly disabled") + } else { + if err := http2.ConfigureTransport(t); err != nil { + glog.Warningf("Transport failed http2 configuration: %v", err) + } + } + return t +} + +type RoundTripperWrapper interface { + http.RoundTripper + WrappedRoundTripper() http.RoundTripper +} + +type DialFunc func(net, addr string) (net.Conn, error) + +func DialerFor(transport http.RoundTripper) (DialFunc, error) { + if transport == nil { + return nil, nil + } + + switch transport := transport.(type) { + case *http.Transport: + return transport.Dial, nil + case RoundTripperWrapper: + return DialerFor(transport.WrappedRoundTripper()) + default: + return nil, fmt.Errorf("unknown transport type: %v", transport) + } +} + +type TLSClientConfigHolder interface { + TLSClientConfig() *tls.Config +} + +func TLSClientConfig(transport http.RoundTripper) (*tls.Config, error) { + if transport == nil { + return nil, nil + } + + switch transport := transport.(type) { + case *http.Transport: + return transport.TLSClientConfig, nil + case TLSClientConfigHolder: + return transport.TLSClientConfig(), nil + case RoundTripperWrapper: + return TLSClientConfig(transport.WrappedRoundTripper()) + default: + return nil, fmt.Errorf("unknown transport type: %v", transport) + } +} + +func FormatURL(scheme string, host string, port int, path string) *url.URL { + return &url.URL{ + Scheme: scheme, + Host: net.JoinHostPort(host, strconv.Itoa(port)), + Path: path, + } +} + +func GetHTTPClient(req *http.Request) string { + if userAgent, ok := req.Header["User-Agent"]; ok { + if len(userAgent) > 0 { + return userAgent[0] + } + } + return "unknown" +} + +// SourceIPs splits the comma separated X-Forwarded-For header or returns the X-Real-Ip header or req.RemoteAddr, +// in that order, ignoring invalid IPs. It returns nil if all of these are empty or invalid. +func SourceIPs(req *http.Request) []net.IP { + hdr := req.Header + // First check the X-Forwarded-For header for requests via proxy. + hdrForwardedFor := hdr.Get("X-Forwarded-For") + forwardedForIPs := []net.IP{} + if hdrForwardedFor != "" { + // X-Forwarded-For can be a csv of IPs in case of multiple proxies. + // Use the first valid one. + parts := strings.Split(hdrForwardedFor, ",") + for _, part := range parts { + ip := net.ParseIP(strings.TrimSpace(part)) + if ip != nil { + forwardedForIPs = append(forwardedForIPs, ip) + } + } + } + if len(forwardedForIPs) > 0 { + return forwardedForIPs + } + + // Try the X-Real-Ip header. + hdrRealIp := hdr.Get("X-Real-Ip") + if hdrRealIp != "" { + ip := net.ParseIP(hdrRealIp) + if ip != nil { + return []net.IP{ip} + } + } + + // Fallback to Remote Address in request, which will give the correct client IP when there is no proxy. + // Remote Address in Go's HTTP server is in the form host:port so we need to split that first. + host, _, err := net.SplitHostPort(req.RemoteAddr) + if err == nil { + if remoteIP := net.ParseIP(host); remoteIP != nil { + return []net.IP{remoteIP} + } + } + + // Fallback if Remote Address was just IP. + if remoteIP := net.ParseIP(req.RemoteAddr); remoteIP != nil { + return []net.IP{remoteIP} + } + + return nil +} + +// Extracts and returns the clients IP from the given request. +// Looks at X-Forwarded-For header, X-Real-Ip header and request.RemoteAddr in that order. +// Returns nil if none of them are set or is set to an invalid value. +func GetClientIP(req *http.Request) net.IP { + ips := SourceIPs(req) + if len(ips) == 0 { + return nil + } + return ips[0] +} + +// Prepares the X-Forwarded-For header for another forwarding hop by appending the previous sender's +// IP address to the X-Forwarded-For chain. +func AppendForwardedForHeader(req *http.Request) { + // Copied from net/http/httputil/reverseproxy.go: + if clientIP, _, err := net.SplitHostPort(req.RemoteAddr); err == nil { + // If we aren't the first proxy retain prior + // X-Forwarded-For information as a comma+space + // separated list and fold multiple headers into one. + if prior, ok := req.Header["X-Forwarded-For"]; ok { + clientIP = strings.Join(prior, ", ") + ", " + clientIP + } + req.Header.Set("X-Forwarded-For", clientIP) + } +} + +var defaultProxyFuncPointer = fmt.Sprintf("%p", http.ProxyFromEnvironment) + +// isDefault checks to see if the transportProxierFunc is pointing to the default one +func isDefault(transportProxier func(*http.Request) (*url.URL, error)) bool { + transportProxierPointer := fmt.Sprintf("%p", transportProxier) + return transportProxierPointer == defaultProxyFuncPointer +} + +// NewProxierWithNoProxyCIDR constructs a Proxier function that respects CIDRs in NO_PROXY and delegates if +// no matching CIDRs are found +func NewProxierWithNoProxyCIDR(delegate func(req *http.Request) (*url.URL, error)) func(req *http.Request) (*url.URL, error) { + // we wrap the default method, so we only need to perform our check if the NO_PROXY envvar has a CIDR in it + noProxyEnv := os.Getenv("NO_PROXY") + noProxyRules := strings.Split(noProxyEnv, ",") + + cidrs := []*net.IPNet{} + for _, noProxyRule := range noProxyRules { + _, cidr, _ := net.ParseCIDR(noProxyRule) + if cidr != nil { + cidrs = append(cidrs, cidr) + } + } + + if len(cidrs) == 0 { + return delegate + } + + return func(req *http.Request) (*url.URL, error) { + host := req.URL.Host + // for some urls, the Host is already the host, not the host:port + if net.ParseIP(host) == nil { + var err error + host, _, err = net.SplitHostPort(req.URL.Host) + if err != nil { + return delegate(req) + } + } + + ip := net.ParseIP(host) + if ip == nil { + return delegate(req) + } + + for _, cidr := range cidrs { + if cidr.Contains(ip) { + return nil, nil + } + } + + return delegate(req) + } +} + +// Dialer dials a host and writes a request to it. +type Dialer interface { + // Dial connects to the host specified by req's URL, writes the request to the connection, and + // returns the opened net.Conn. + Dial(req *http.Request) (net.Conn, error) +} + +// ConnectWithRedirects uses dialer to send req, following up to 10 redirects (relative to +// originalLocation). It returns the opened net.Conn and the raw response bytes. +func ConnectWithRedirects(originalMethod string, originalLocation *url.URL, header http.Header, originalBody io.Reader, dialer Dialer) (net.Conn, []byte, error) { + const ( + maxRedirects = 10 + maxResponseSize = 16384 // play it safe to allow the potential for lots of / large headers + ) + + var ( + location = originalLocation + method = originalMethod + intermediateConn net.Conn + rawResponse = bytes.NewBuffer(make([]byte, 0, 256)) + body = originalBody + ) + + defer func() { + if intermediateConn != nil { + intermediateConn.Close() + } + }() + +redirectLoop: + for redirects := 0; ; redirects++ { + if redirects > maxRedirects { + return nil, nil, fmt.Errorf("too many redirects (%d)", redirects) + } + + req, err := http.NewRequest(method, location.String(), body) + if err != nil { + return nil, nil, err + } + + req.Header = header + + intermediateConn, err = dialer.Dial(req) + if err != nil { + return nil, nil, err + } + + // Peek at the backend response. + rawResponse.Reset() + respReader := bufio.NewReader(io.TeeReader( + io.LimitReader(intermediateConn, maxResponseSize), // Don't read more than maxResponseSize bytes. + rawResponse)) // Save the raw response. + resp, err := http.ReadResponse(respReader, nil) + if err != nil { + // Unable to read the backend response; let the client handle it. + glog.Warningf("Error reading backend response: %v", err) + break redirectLoop + } + + switch resp.StatusCode { + case http.StatusFound: + // Redirect, continue. + default: + // Don't redirect. + break redirectLoop + } + + // Redirected requests switch to "GET" according to the HTTP spec: + // https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3 + method = "GET" + // don't send a body when following redirects + body = nil + + resp.Body.Close() // not used + + // Reset the connection. + intermediateConn.Close() + intermediateConn = nil + + // Prepare to follow the redirect. + redirectStr := resp.Header.Get("Location") + if redirectStr == "" { + return nil, nil, fmt.Errorf("%d response missing Location header", resp.StatusCode) + } + // We have to parse relative to the current location, NOT originalLocation. For example, + // if we request http://foo.com/a and get back "http://bar.com/b", the result should be + // http://bar.com/b. If we then make that request and get back a redirect to "/c", the result + // should be http://bar.com/c, not http://foo.com/c. + location, err = location.Parse(redirectStr) + if err != nil { + return nil, nil, fmt.Errorf("malformed Location header: %v", err) + } + } + + connToReturn := intermediateConn + intermediateConn = nil // Don't close the connection when we return it. + return connToReturn, rawResponse.Bytes(), nil +} + +// CloneRequest creates a shallow copy of the request along with a deep copy of the Headers. +func CloneRequest(req *http.Request) *http.Request { + r := new(http.Request) + + // shallow clone + *r = *req + + // deep copy headers + r.Header = CloneHeader(req.Header) + + return r +} + +// CloneHeader creates a deep copy of an http.Header. +func CloneHeader(in http.Header) http.Header { + out := make(http.Header, len(in)) + for key, values := range in { + newValues := make([]string, len(values)) + copy(newValues, values) + out[key] = newValues + } + return out +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go new file mode 100644 index 000000000..2d41eda49 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/http_test.go @@ -0,0 +1,220 @@ +// +build go1.8 + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "crypto/tls" + "net" + "net/http" + "net/url" + "os" + "reflect" + "testing" +) + +func TestGetClientIP(t *testing.T) { + ipString := "10.0.0.1" + ip := net.ParseIP(ipString) + invalidIPString := "invalidIPString" + testCases := []struct { + Request http.Request + ExpectedIP net.IP + }{ + { + Request: http.Request{}, + }, + { + Request: http.Request{ + Header: map[string][]string{ + "X-Real-Ip": {ipString}, + }, + }, + ExpectedIP: ip, + }, + { + Request: http.Request{ + Header: map[string][]string{ + "X-Real-Ip": {invalidIPString}, + }, + }, + }, + { + Request: http.Request{ + Header: map[string][]string{ + "X-Forwarded-For": {ipString}, + }, + }, + ExpectedIP: ip, + }, + { + Request: http.Request{ + Header: map[string][]string{ + "X-Forwarded-For": {invalidIPString}, + }, + }, + }, + { + Request: http.Request{ + Header: map[string][]string{ + "X-Forwarded-For": {invalidIPString + "," + ipString}, + }, + }, + ExpectedIP: ip, + }, + { + Request: http.Request{ + // RemoteAddr is in the form host:port + RemoteAddr: ipString + ":1234", + }, + ExpectedIP: ip, + }, + { + Request: http.Request{ + RemoteAddr: invalidIPString, + }, + }, + { + Request: http.Request{ + Header: map[string][]string{ + "X-Forwarded-For": {invalidIPString}, + }, + // RemoteAddr is in the form host:port + RemoteAddr: ipString, + }, + ExpectedIP: ip, + }, + } + + for i, test := range testCases { + if a, e := GetClientIP(&test.Request), test.ExpectedIP; reflect.DeepEqual(e, a) != true { + t.Fatalf("test case %d failed. expected: %v, actual: %v", i, e, a) + } + } +} + +func TestAppendForwardedForHeader(t *testing.T) { + testCases := []struct { + addr, forwarded, expected string + }{ + {"1.2.3.4:8000", "", "1.2.3.4"}, + {"1.2.3.4:8000", "8.8.8.8", "8.8.8.8, 1.2.3.4"}, + {"1.2.3.4:8000", "8.8.8.8, 1.2.3.4", "8.8.8.8, 1.2.3.4, 1.2.3.4"}, + {"1.2.3.4:8000", "foo,bar", "foo,bar, 1.2.3.4"}, + } + for i, test := range testCases { + req := &http.Request{ + RemoteAddr: test.addr, + Header: make(http.Header), + } + if test.forwarded != "" { + req.Header.Set("X-Forwarded-For", test.forwarded) + } + + AppendForwardedForHeader(req) + actual := req.Header.Get("X-Forwarded-For") + if actual != test.expected { + t.Errorf("[%d] Expected %q, Got %q", i, test.expected, actual) + } + } +} + +func TestProxierWithNoProxyCIDR(t *testing.T) { + testCases := []struct { + name string + noProxy string + url string + + expectedDelegated bool + }{ + { + name: "no env", + url: "https://192.168.143.1/api", + expectedDelegated: true, + }, + { + name: "no cidr", + noProxy: "192.168.63.1", + url: "https://192.168.143.1/api", + expectedDelegated: true, + }, + { + name: "hostname", + noProxy: "192.168.63.0/24,192.168.143.0/24", + url: "https://my-hostname/api", + expectedDelegated: true, + }, + { + name: "match second cidr", + noProxy: "192.168.63.0/24,192.168.143.0/24", + url: "https://192.168.143.1/api", + expectedDelegated: false, + }, + { + name: "match second cidr with host:port", + noProxy: "192.168.63.0/24,192.168.143.0/24", + url: "https://192.168.143.1:8443/api", + expectedDelegated: false, + }, + } + + for _, test := range testCases { + os.Setenv("NO_PROXY", test.noProxy) + actualDelegated := false + proxyFunc := NewProxierWithNoProxyCIDR(func(req *http.Request) (*url.URL, error) { + actualDelegated = true + return nil, nil + }) + + req, err := http.NewRequest("GET", test.url, nil) + if err != nil { + t.Errorf("%s: unexpected err: %v", test.name, err) + continue + } + if _, err := proxyFunc(req); err != nil { + t.Errorf("%s: unexpected err: %v", test.name, err) + continue + } + + if test.expectedDelegated != actualDelegated { + t.Errorf("%s: expected %v, got %v", test.name, test.expectedDelegated, actualDelegated) + continue + } + } +} + +type fakeTLSClientConfigHolder struct { + called bool +} + +func (f *fakeTLSClientConfigHolder) TLSClientConfig() *tls.Config { + f.called = true + return nil +} +func (f *fakeTLSClientConfigHolder) RoundTrip(*http.Request) (*http.Response, error) { + return nil, nil +} + +func TestTLSClientConfigHolder(t *testing.T) { + rt := &fakeTLSClientConfigHolder{} + TLSClientConfig(rt) + + if !rt.called { + t.Errorf("didn't find tls config") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/interface.go b/vendor/k8s.io/apimachinery/pkg/util/net/interface.go new file mode 100644 index 000000000..a1e53d2e4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/interface.go @@ -0,0 +1,278 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "bufio" + "encoding/hex" + "fmt" + "io" + "net" + "os" + + "strings" + + "github.com/golang/glog" +) + +type Route struct { + Interface string + Destination net.IP + Gateway net.IP + // TODO: add more fields here if needed +} + +func getRoutes(input io.Reader) ([]Route, error) { + routes := []Route{} + if input == nil { + return nil, fmt.Errorf("input is nil") + } + scanner := bufio.NewReader(input) + for { + line, err := scanner.ReadString('\n') + if err == io.EOF { + break + } + //ignore the headers in the route info + if strings.HasPrefix(line, "Iface") { + continue + } + fields := strings.Fields(line) + routes = append(routes, Route{}) + route := &routes[len(routes)-1] + route.Interface = fields[0] + ip, err := parseIP(fields[1]) + if err != nil { + return nil, err + } + route.Destination = ip + ip, err = parseIP(fields[2]) + if err != nil { + return nil, err + } + route.Gateway = ip + } + return routes, nil +} + +func parseIP(str string) (net.IP, error) { + if str == "" { + return nil, fmt.Errorf("input is nil") + } + bytes, err := hex.DecodeString(str) + if err != nil { + return nil, err + } + //TODO add ipv6 support + if len(bytes) != net.IPv4len { + return nil, fmt.Errorf("only IPv4 is supported") + } + bytes[0], bytes[1], bytes[2], bytes[3] = bytes[3], bytes[2], bytes[1], bytes[0] + return net.IP(bytes), nil +} + +func isInterfaceUp(intf *net.Interface) bool { + if intf == nil { + return false + } + if intf.Flags&net.FlagUp != 0 { + glog.V(4).Infof("Interface %v is up", intf.Name) + return true + } + return false +} + +//getFinalIP method receives all the IP addrs of a Interface +//and returns a nil if the address is Loopback, Ipv6, link-local or nil. +//It returns a valid IPv4 if an Ipv4 address is found in the array. +func getFinalIP(addrs []net.Addr) (net.IP, error) { + if len(addrs) > 0 { + for i := range addrs { + glog.V(4).Infof("Checking addr %s.", addrs[i].String()) + ip, _, err := net.ParseCIDR(addrs[i].String()) + if err != nil { + return nil, err + } + //Only IPv4 + //TODO : add IPv6 support + if ip.To4() != nil { + if !ip.IsLoopback() && !ip.IsLinkLocalMulticast() && !ip.IsLinkLocalUnicast() { + glog.V(4).Infof("IP found %v", ip) + return ip, nil + } else { + glog.V(4).Infof("Loopback/link-local found %v", ip) + } + } else { + glog.V(4).Infof("%v is not a valid IPv4 address", ip) + } + + } + } + return nil, nil +} + +func getIPFromInterface(intfName string, nw networkInterfacer) (net.IP, error) { + intf, err := nw.InterfaceByName(intfName) + if err != nil { + return nil, err + } + if isInterfaceUp(intf) { + addrs, err := nw.Addrs(intf) + if err != nil { + return nil, err + } + glog.V(4).Infof("Interface %q has %d addresses :%v.", intfName, len(addrs), addrs) + finalIP, err := getFinalIP(addrs) + if err != nil { + return nil, err + } + if finalIP != nil { + glog.V(4).Infof("valid IPv4 address for interface %q found as %v.", intfName, finalIP) + return finalIP, nil + } + } + + return nil, nil +} + +func flagsSet(flags net.Flags, test net.Flags) bool { + return flags&test != 0 +} + +func flagsClear(flags net.Flags, test net.Flags) bool { + return flags&test == 0 +} + +func chooseHostInterfaceNativeGo() (net.IP, error) { + intfs, err := net.Interfaces() + if err != nil { + return nil, err + } + i := 0 + var ip net.IP + for i = range intfs { + if flagsSet(intfs[i].Flags, net.FlagUp) && flagsClear(intfs[i].Flags, net.FlagLoopback|net.FlagPointToPoint) { + addrs, err := intfs[i].Addrs() + if err != nil { + return nil, err + } + if len(addrs) > 0 { + for _, addr := range addrs { + if addrIP, _, err := net.ParseCIDR(addr.String()); err == nil { + if addrIP.To4() != nil { + ip = addrIP.To4() + if !ip.IsLinkLocalMulticast() && !ip.IsLinkLocalUnicast() { + break + } + } + } + } + if ip != nil { + // This interface should suffice. + break + } + } + } + } + if ip == nil { + return nil, fmt.Errorf("no acceptable interface from host") + } + glog.V(4).Infof("Choosing interface %s (IP %v) as default", intfs[i].Name, ip) + return ip, nil +} + +//ChooseHostInterface is a method used fetch an IP for a daemon. +//It uses data from /proc/net/route file. +//For a node with no internet connection ,it returns error +//For a multi n/w interface node it returns the IP of the interface with gateway on it. +func ChooseHostInterface() (net.IP, error) { + inFile, err := os.Open("/proc/net/route") + if err != nil { + if os.IsNotExist(err) { + return chooseHostInterfaceNativeGo() + } + return nil, err + } + defer inFile.Close() + var nw networkInterfacer = networkInterface{} + return chooseHostInterfaceFromRoute(inFile, nw) +} + +type networkInterfacer interface { + InterfaceByName(intfName string) (*net.Interface, error) + Addrs(intf *net.Interface) ([]net.Addr, error) +} + +type networkInterface struct{} + +func (_ networkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + intf, err := net.InterfaceByName(intfName) + if err != nil { + return nil, err + } + return intf, nil +} + +func (_ networkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + addrs, err := intf.Addrs() + if err != nil { + return nil, err + } + return addrs, nil +} + +func chooseHostInterfaceFromRoute(inFile io.Reader, nw networkInterfacer) (net.IP, error) { + routes, err := getRoutes(inFile) + if err != nil { + return nil, err + } + zero := net.IP{0, 0, 0, 0} + var finalIP net.IP + for i := range routes { + //find interface with gateway + if routes[i].Destination.Equal(zero) { + glog.V(4).Infof("Default route transits interface %q", routes[i].Interface) + finalIP, err := getIPFromInterface(routes[i].Interface, nw) + if err != nil { + return nil, err + } + if finalIP != nil { + glog.V(4).Infof("Choosing IP %v ", finalIP) + return finalIP, nil + } + } + } + glog.V(4).Infof("No valid IP found") + if finalIP == nil { + return nil, fmt.Errorf("Unable to select an IP.") + } + return nil, nil +} + +// If bind-address is usable, return it directly +// If bind-address is not usable (unset, 0.0.0.0, or loopback), we will use the host's default +// interface. +func ChooseBindAddress(bindAddress net.IP) (net.IP, error) { + if bindAddress == nil || bindAddress.IsUnspecified() || bindAddress.IsLoopback() { + hostIP, err := ChooseHostInterface() + if err != nil { + return nil, err + } + bindAddress = hostIP + } + return bindAddress, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go new file mode 100644 index 000000000..fc66904c5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/interface_test.go @@ -0,0 +1,300 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "fmt" + "io" + "net" + "strings" + "testing" +) + +const gatewayfirst = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +eth3 00000000 0100FE0A 0003 0 0 1024 00000000 0 0 0 +eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +` +const gatewaylast = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 +eth3 00000000 0100FE0A 0003 0 0 1024 00000000 0 0 0 +` +const gatewaymiddle = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +eth3 00000000 0100FE0A 0003 0 0 1024 00000000 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +` +const noInternetConnection = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +` +const nothing = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +` +const gatewayfirstIpv6_1 = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +eth3 00000000 0100FE0A 0003 0 0 1024 00000000 0 0 0 +eth3 0000FE0AA1 00000000 0001 0 0 0 0080FFFF 0 0 0 +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +` +const gatewayfirstIpv6_2 = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +eth3 00000000 0100FE0AA1 0003 0 0 1024 00000000 0 0 0 +eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +` +const route_Invalidhex = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +eth3 00000000 0100FE0AA 0003 0 0 1024 00000000 0 0 0 +eth3 0000FE0A 00000000 0001 0 0 0 0080FFFF 0 0 0 +docker0 000011AC 00000000 0001 0 0 0 0000FFFF 0 0 0 +virbr0 007AA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0 +` + +// Based on DigitalOcean COREOS +const gatewayfirstLinkLocal = `Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT +eth0 00000000 0120372D 0001 0 0 0 00000000 0 0 0 +eth0 00000000 00000000 0001 0 0 2048 00000000 0 0 0 +` + +func TestGetRoutes(t *testing.T) { + testCases := []struct { + tcase string + route string + expected int + }{ + {"gatewayfirst", gatewayfirst, 4}, + {"gatewaymiddle", gatewaymiddle, 4}, + {"gatewaylast", gatewaylast, 4}, + {"nothing", nothing, 0}, + {"gatewayfirstIpv6_1", gatewayfirstIpv6_1, 0}, + {"gatewayfirstIpv6_2", gatewayfirstIpv6_2, 0}, + {"route_Invalidhex", route_Invalidhex, 0}, + } + for _, tc := range testCases { + r := strings.NewReader(tc.route) + routes, err := getRoutes(r) + if len(routes) != tc.expected { + t.Errorf("case[%v]: expected %v, got %v .err : %v", tc.tcase, tc.expected, len(routes), err) + } + } +} + +func TestParseIP(t *testing.T) { + testCases := []struct { + tcase string + ip string + success bool + expected net.IP + }{ + {"empty", "", false, nil}, + {"too short", "AA", false, nil}, + {"too long", "0011223344", false, nil}, + {"invalid", "invalid!", false, nil}, + {"zero", "00000000", true, net.IP{0, 0, 0, 0}}, + {"ffff", "FFFFFFFF", true, net.IP{0xff, 0xff, 0xff, 0xff}}, + {"valid", "12345678", true, net.IP{120, 86, 52, 18}}, + } + for _, tc := range testCases { + ip, err := parseIP(tc.ip) + if !ip.Equal(tc.expected) { + t.Errorf("case[%v]: expected %q, got %q . err : %v", tc.tcase, tc.expected, ip, err) + } + } +} + +func TestIsInterfaceUp(t *testing.T) { + testCases := []struct { + tcase string + intf net.Interface + expected bool + }{ + {"up", net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp}, true}, + {"down", net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: 0}, false}, + {"nothing", net.Interface{}, false}, + } + for _, tc := range testCases { + it := isInterfaceUp(&tc.intf) + if it != tc.expected { + t.Errorf("case[%v]: expected %v, got %v .", tc.tcase, tc.expected, it) + } + } +} + +type addrStruct struct{ val string } + +func (a addrStruct) Network() string { + return a.val +} +func (a addrStruct) String() string { + return a.val +} + +func TestFinalIP(t *testing.T) { + testCases := []struct { + tcase string + addr []net.Addr + expected net.IP + }{ + {"ipv6", []net.Addr{addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}}, nil}, + {"invalidCIDR", []net.Addr{addrStruct{val: "fe80::2f7:67fff:fe6e:2956/64"}}, nil}, + {"loopback", []net.Addr{addrStruct{val: "127.0.0.1/24"}}, nil}, + {"ip4", []net.Addr{addrStruct{val: "10.254.12.132/17"}}, net.ParseIP("10.254.12.132")}, + + {"nothing", []net.Addr{}, nil}, + } + for _, tc := range testCases { + ip, err := getFinalIP(tc.addr) + if !ip.Equal(tc.expected) { + t.Errorf("case[%v]: expected %v, got %v .err : %v", tc.tcase, tc.expected, ip, err) + } + } +} + +func TestAddrs(t *testing.T) { + var nw networkInterfacer = validNetworkInterface{} + intf := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: 0} + addrs, err := nw.Addrs(&intf) + if err != nil { + t.Errorf("expected no error got : %v", err) + } + if len(addrs) != 2 { + t.Errorf("expected addrs: 2 got null") + } +} + +type validNetworkInterface struct { +} + +func (_ validNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} + return &c, nil +} +func (_ validNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{ + addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}, addrStruct{val: "10.254.71.145/17"}} + return ifat, nil +} + +type validNetworkInterfaceWithLinkLocal struct { +} + +func (_ validNetworkInterfaceWithLinkLocal) InterfaceByName(intfName string) (*net.Interface, error) { + c := net.Interface{Index: 0, MTU: 0, Name: "eth0", HardwareAddr: nil, Flags: net.FlagUp} + return &c, nil +} +func (_ validNetworkInterfaceWithLinkLocal) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{addrStruct{val: "169.254.162.166/16"}, addrStruct{val: "45.55.47.146/19"}} + return ifat, nil +} + +type validNetworkInterfacewithIpv6Only struct { +} + +func (_ validNetworkInterfacewithIpv6Only) InterfaceByName(intfName string) (*net.Interface, error) { + c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} + return &c, nil +} +func (_ validNetworkInterfacewithIpv6Only) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{addrStruct{val: "fe80::2f7:6fff:fe6e:2956/64"}} + return ifat, nil +} + +type noNetworkInterface struct { +} + +func (_ noNetworkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + return nil, fmt.Errorf("unable get Interface") +} +func (_ noNetworkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + return nil, nil +} + +type networkInterfacewithNoAddrs struct { +} + +func (_ networkInterfacewithNoAddrs) InterfaceByName(intfName string) (*net.Interface, error) { + c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} + return &c, nil +} +func (_ networkInterfacewithNoAddrs) Addrs(intf *net.Interface) ([]net.Addr, error) { + return nil, fmt.Errorf("unable get Addrs") +} + +type networkInterfacewithIpv6addrs struct { +} + +func (_ networkInterfacewithIpv6addrs) InterfaceByName(intfName string) (*net.Interface, error) { + c := net.Interface{Index: 0, MTU: 0, Name: "eth3", HardwareAddr: nil, Flags: net.FlagUp} + return &c, nil +} +func (_ networkInterfacewithIpv6addrs) Addrs(intf *net.Interface) ([]net.Addr, error) { + var ifat []net.Addr + ifat = []net.Addr{addrStruct{val: "fe80::2f7:6ffff:fe6e:2956/64"}} + return ifat, nil +} + +func TestGetIPFromInterface(t *testing.T) { + testCases := []struct { + tcase string + nwname string + nw networkInterfacer + expected net.IP + }{ + {"valid", "eth3", validNetworkInterface{}, net.ParseIP("10.254.71.145")}, + {"ipv6", "eth3", validNetworkInterfacewithIpv6Only{}, nil}, + {"nothing", "eth3", noNetworkInterface{}, nil}, + } + for _, tc := range testCases { + ip, err := getIPFromInterface(tc.nwname, tc.nw) + if !ip.Equal(tc.expected) { + t.Errorf("case[%v]: expected %v, got %+v .err : %v", tc.tcase, tc.expected, ip, err) + } + } +} + +func TestChooseHostInterfaceFromRoute(t *testing.T) { + testCases := []struct { + tcase string + inFile io.Reader + nw networkInterfacer + expected net.IP + }{ + {"valid_routefirst", strings.NewReader(gatewayfirst), validNetworkInterface{}, net.ParseIP("10.254.71.145")}, + {"valid_routelast", strings.NewReader(gatewaylast), validNetworkInterface{}, net.ParseIP("10.254.71.145")}, + {"valid_routemiddle", strings.NewReader(gatewaymiddle), validNetworkInterface{}, net.ParseIP("10.254.71.145")}, + {"valid_routemiddle_ipv6", strings.NewReader(gatewaymiddle), validNetworkInterfacewithIpv6Only{}, nil}, + {"no internet connection", strings.NewReader(noInternetConnection), validNetworkInterface{}, nil}, + {"no non-link-local ip", strings.NewReader(gatewayfirstLinkLocal), validNetworkInterfaceWithLinkLocal{}, net.ParseIP("45.55.47.146")}, + {"no route", strings.NewReader(nothing), validNetworkInterface{}, nil}, + {"no route file", nil, validNetworkInterface{}, nil}, + {"no interfaces", nil, noNetworkInterface{}, nil}, + {"no interface Addrs", strings.NewReader(gatewaymiddle), networkInterfacewithNoAddrs{}, nil}, + {"Invalid Addrs", strings.NewReader(gatewaymiddle), networkInterfacewithIpv6addrs{}, nil}, + } + for _, tc := range testCases { + ip, err := chooseHostInterfaceFromRoute(tc.inFile, tc.nw) + if !ip.Equal(tc.expected) { + t.Errorf("case[%v]: expected %v, got %+v .err : %v", tc.tcase, tc.expected, ip, err) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go new file mode 100644 index 000000000..6a50e6186 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/port_range.go @@ -0,0 +1,113 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "fmt" + "strconv" + "strings" +) + +// PortRange represents a range of TCP/UDP ports. To represent a single port, +// set Size to 1. +type PortRange struct { + Base int + Size int +} + +// Contains tests whether a given port falls within the PortRange. +func (pr *PortRange) Contains(p int) bool { + return (p >= pr.Base) && ((p - pr.Base) < pr.Size) +} + +// String converts the PortRange to a string representation, which can be +// parsed by PortRange.Set or ParsePortRange. +func (pr PortRange) String() string { + if pr.Size == 0 { + return "" + } + return fmt.Sprintf("%d-%d", pr.Base, pr.Base+pr.Size-1) +} + +// Set parses a string of the form "min-max", inclusive at both ends, and +// sets the PortRange from it. This is part of the flag.Value and pflag.Value +// interfaces. +func (pr *PortRange) Set(value string) error { + value = strings.TrimSpace(value) + + // TODO: Accept "80" syntax + // TODO: Accept "80+8" syntax + + if value == "" { + pr.Base = 0 + pr.Size = 0 + return nil + } + + hyphenIndex := strings.Index(value, "-") + if hyphenIndex == -1 { + return fmt.Errorf("expected hyphen in port range") + } + + var err error + var low int + var high int + low, err = strconv.Atoi(value[:hyphenIndex]) + if err == nil { + high, err = strconv.Atoi(value[hyphenIndex+1:]) + } + if err != nil { + return fmt.Errorf("unable to parse port range: %s: %v", value, err) + } + + if low > 65535 || high > 65535 { + return fmt.Errorf("the port range cannot be greater than 65535: %s", value) + } + + if high < low { + return fmt.Errorf("end port cannot be less than start port: %s", value) + } + + pr.Base = low + pr.Size = 1 + high - low + return nil +} + +// Type returns a descriptive string about this type. This is part of the +// pflag.Value interface. +func (*PortRange) Type() string { + return "portRange" +} + +// ParsePortRange parses a string of the form "min-max", inclusive at both +// ends, and initializs a new PortRange from it. +func ParsePortRange(value string) (*PortRange, error) { + pr := &PortRange{} + err := pr.Set(value) + if err != nil { + return nil, err + } + return pr, nil +} + +func ParsePortRangeOrDie(value string) *PortRange { + pr, err := ParsePortRange(value) + if err != nil { + panic(fmt.Sprintf("couldn't parse port range %q: %v", value, err)) + } + return pr +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_range_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_range_test.go new file mode 100644 index 000000000..897b8df61 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/port_range_test.go @@ -0,0 +1,69 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "testing" + + flag "github.com/spf13/pflag" +) + +func TestPortRange(t *testing.T) { + testCases := []struct { + input string + success bool + expected string + included int + excluded int + }{ + {"100-200", true, "100-200", 200, 201}, + {" 100-200 ", true, "100-200", 200, 201}, + {"0-0", true, "0-0", 0, 1}, + {"", true, "", -1, 0}, + {"100", false, "", -1, -1}, + {"100 - 200", false, "", -1, -1}, + {"-100", false, "", -1, -1}, + {"100-", false, "", -1, -1}, + {"200-100", false, "", -1, -1}, + {"60000-70000", false, "", -1, -1}, + {"70000-80000", false, "", -1, -1}, + } + + for i := range testCases { + tc := &testCases[i] + pr := &PortRange{} + var f flag.Value = pr + err := f.Set(tc.input) + if err != nil && tc.success == true { + t.Errorf("expected success, got %q", err) + continue + } else if err == nil && tc.success == false { + t.Errorf("expected failure") + continue + } else if tc.success { + if f.String() != tc.expected { + t.Errorf("expected %q, got %q", tc.expected, f.String()) + } + if tc.included >= 0 && !pr.Contains(tc.included) { + t.Errorf("expected %q to include %d", f.String(), tc.included) + } + if tc.excluded >= 0 && pr.Contains(tc.excluded) { + t.Errorf("expected %q to exclude %d", f.String(), tc.excluded) + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go new file mode 100644 index 000000000..c0fd4e20f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go @@ -0,0 +1,77 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "strings" + + "k8s.io/apimachinery/pkg/util/sets" +) + +var validSchemes = sets.NewString("http", "https", "") + +// SplitSchemeNamePort takes a string of the following forms: +// * "", returns "", "","", true +// * ":", returns "", "","",true +// * "::", returns "","","",true +// +// Name must be non-empty or valid will be returned false. +// Scheme must be "http" or "https" if specified +// Port is returned as a string, and it is not required to be numeric (could be +// used for a named port, for example). +func SplitSchemeNamePort(id string) (scheme, name, port string, valid bool) { + parts := strings.Split(id, ":") + switch len(parts) { + case 1: + name = parts[0] + case 2: + name = parts[0] + port = parts[1] + case 3: + scheme = parts[0] + name = parts[1] + port = parts[2] + default: + return "", "", "", false + } + + if len(name) > 0 && validSchemes.Has(scheme) { + return scheme, name, port, true + } else { + return "", "", "", false + } +} + +// JoinSchemeNamePort returns a string that specifies the scheme, name, and port: +// * "" +// * ":" +// * "::" +// None of the parameters may contain a ':' character +// Name is required +// Scheme must be "", "http", or "https" +func JoinSchemeNamePort(scheme, name, port string) string { + if len(scheme) > 0 { + // Must include three segments to specify scheme + return scheme + ":" + name + ":" + port + } + if len(port) > 0 { + // Must include two segments to specify port + return name + ":" + port + } + // Return name alone + return name +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/port_split_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/port_split_test.go new file mode 100644 index 000000000..e801bdbea --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/port_split_test.go @@ -0,0 +1,121 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "testing" +) + +func TestSplitSchemeNamePort(t *testing.T) { + table := []struct { + in string + name, port, scheme string + valid bool + normalized bool + }{ + { + in: "aoeu:asdf", + name: "aoeu", + port: "asdf", + valid: true, + normalized: true, + }, { + in: "http:aoeu:asdf", + scheme: "http", + name: "aoeu", + port: "asdf", + valid: true, + normalized: true, + }, { + in: "https:aoeu:", + scheme: "https", + name: "aoeu", + port: "", + valid: true, + normalized: false, + }, { + in: "https:aoeu:asdf", + scheme: "https", + name: "aoeu", + port: "asdf", + valid: true, + normalized: true, + }, { + in: "aoeu:", + name: "aoeu", + valid: true, + normalized: false, + }, { + in: "aoeu", + name: "aoeu", + valid: true, + normalized: true, + }, { + in: ":asdf", + valid: false, + }, { + in: "aoeu:asdf:htns", + valid: false, + }, { + in: "http::asdf", + valid: false, + }, { + in: "http::", + valid: false, + }, { + in: "", + valid: false, + }, + } + + for _, item := range table { + scheme, name, port, valid := SplitSchemeNamePort(item.in) + if e, a := item.scheme, scheme; e != a { + t.Errorf("%q: Wanted %q, got %q", item.in, e, a) + } + if e, a := item.name, name; e != a { + t.Errorf("%q: Wanted %q, got %q", item.in, e, a) + } + if e, a := item.port, port; e != a { + t.Errorf("%q: Wanted %q, got %q", item.in, e, a) + } + if e, a := item.valid, valid; e != a { + t.Errorf("%q: Wanted %t, got %t", item.in, e, a) + } + + // Make sure valid items round trip through JoinSchemeNamePort + if item.valid { + out := JoinSchemeNamePort(scheme, name, port) + if item.normalized && out != item.in { + t.Errorf("%q: Wanted %s, got %s", item.in, item.in, out) + } + scheme, name, port, valid := SplitSchemeNamePort(out) + if e, a := item.scheme, scheme; e != a { + t.Errorf("%q: Wanted %q, got %q", item.in, e, a) + } + if e, a := item.name, name; e != a { + t.Errorf("%q: Wanted %q, got %q", item.in, e, a) + } + if e, a := item.port, port; e != a { + t.Errorf("%q: Wanted %q, got %q", item.in, e, a) + } + if e, a := item.valid, valid; e != a { + t.Errorf("%q: Wanted %t, got %t", item.in, e, a) + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/util.go b/vendor/k8s.io/apimachinery/pkg/util/net/util.go new file mode 100644 index 000000000..461144f0b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/util.go @@ -0,0 +1,46 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "net" + "reflect" + "syscall" +) + +// IPNetEqual checks if the two input IPNets are representing the same subnet. +// For example, +// 10.0.0.1/24 and 10.0.0.0/24 are the same subnet. +// 10.0.0.1/24 and 10.0.0.0/25 are not the same subnet. +func IPNetEqual(ipnet1, ipnet2 *net.IPNet) bool { + if ipnet1 == nil || ipnet2 == nil { + return false + } + if reflect.DeepEqual(ipnet1.Mask, ipnet2.Mask) && ipnet1.Contains(ipnet2.IP) && ipnet2.Contains(ipnet1.IP) { + return true + } + return false +} + +// Returns if the given err is "connection reset by peer" error. +func IsConnectionReset(err error) bool { + opErr, ok := err.(*net.OpError) + if ok && opErr.Err.Error() == syscall.ECONNRESET.Error() { + return true + } + return false +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/util_test.go b/vendor/k8s.io/apimachinery/pkg/util/net/util_test.go new file mode 100644 index 000000000..bcbef753b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/net/util_test.go @@ -0,0 +1,68 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "net" + "testing" +) + +func getIPNet(cidr string) *net.IPNet { + _, ipnet, _ := net.ParseCIDR(cidr) + return ipnet +} + +func TestIPNetEqual(t *testing.T) { + testCases := []struct { + ipnet1 *net.IPNet + ipnet2 *net.IPNet + expect bool + }{ + //null case + { + getIPNet("10.0.0.1/24"), + getIPNet(""), + false, + }, + { + getIPNet("10.0.0.0/24"), + getIPNet("10.0.0.0/24"), + true, + }, + { + getIPNet("10.0.0.0/24"), + getIPNet("10.0.0.1/24"), + true, + }, + { + getIPNet("10.0.0.0/25"), + getIPNet("10.0.0.0/24"), + false, + }, + { + getIPNet("10.0.1.0/24"), + getIPNet("10.0.0.0/24"), + false, + }, + } + + for _, tc := range testCases { + if tc.expect != IPNetEqual(tc.ipnet1, tc.ipnet2) { + t.Errorf("Expect equality of %s and %s be to %v", tc.ipnet1.String(), tc.ipnet2.String(), tc.expect) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD b/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD new file mode 100644 index 000000000..c4880b6e7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/rand/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["rand_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["rand.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/rand/rand.go b/vendor/k8s.io/apimachinery/pkg/util/rand/rand.go new file mode 100644 index 000000000..db109c2cd --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/rand/rand.go @@ -0,0 +1,85 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package rand provides utilities related to randomization. +package rand + +import ( + "math/rand" + "sync" + "time" +) + +var rng = struct { + sync.Mutex + rand *rand.Rand +}{ + rand: rand.New(rand.NewSource(time.Now().UTC().UnixNano())), +} + +// Intn generates an integer in range [0,max). +// By design this should panic if input is invalid, <= 0. +func Intn(max int) int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Intn(max) +} + +// IntnRange generates an integer in range [min,max). +// By design this should panic if input is invalid, <= 0. +func IntnRange(min, max int) int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Intn(max-min) + min +} + +// IntnRange generates an int64 integer in range [min,max). +// By design this should panic if input is invalid, <= 0. +func Int63nRange(min, max int64) int64 { + rng.Lock() + defer rng.Unlock() + return rng.rand.Int63n(max-min) + min +} + +// Seed seeds the rng with the provided seed. +func Seed(seed int64) { + rng.Lock() + defer rng.Unlock() + + rng.rand = rand.New(rand.NewSource(seed)) +} + +// Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n) +// from the default Source. +func Perm(n int) []int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Perm(n) +} + +// We omit vowels from the set of available characters to reduce the chances +// of "bad words" being formed. +var alphanums = []rune("bcdfghjklmnpqrstvwxz0123456789") + +// String generates a random alphanumeric string, without vowels, which is n +// characters long. This will panic if n is less than zero. +func String(length int) string { + b := make([]rune, length) + for i := range b { + b[i] = alphanums[Intn(len(alphanums))] + } + return string(b) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/rand/rand_test.go b/vendor/k8s.io/apimachinery/pkg/util/rand/rand_test.go new file mode 100644 index 000000000..40fdb7d68 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/rand/rand_test.go @@ -0,0 +1,101 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rand + +import ( + "math/rand" + "strings" + "testing" +) + +const ( + maxRangeTestCount = 500 +) + +func TestString(t *testing.T) { + valid := "0123456789abcdefghijklmnopqrstuvwxyz" + for _, l := range []int{0, 1, 2, 10, 123} { + s := String(l) + if len(s) != l { + t.Errorf("expected string of size %d, got %q", l, s) + } + for _, c := range s { + if !strings.ContainsRune(valid, c) { + t.Errorf("expected valid charaters, got %v", c) + } + } + } +} + +// Confirm that panic occurs on invalid input. +func TestRangePanic(t *testing.T) { + defer func() { + if err := recover(); err == nil { + t.Errorf("Panic didn't occur!") + } + }() + // Should result in an error... + Intn(0) +} + +func TestIntn(t *testing.T) { + // 0 is invalid. + for _, max := range []int{1, 2, 10, 123} { + inrange := Intn(max) + if inrange < 0 || inrange > max { + t.Errorf("%v out of range (0,%v)", inrange, max) + } + } +} + +func TestPerm(t *testing.T) { + Seed(5) + rand.Seed(5) + for i := 1; i < 20; i++ { + actual := Perm(i) + expected := rand.Perm(i) + for j := 0; j < i; j++ { + if actual[j] != expected[j] { + t.Errorf("Perm call result is unexpected") + } + } + } +} + +func TestIntnRange(t *testing.T) { + // 0 is invalid. + for min, max := range map[int]int{1: 2, 10: 123, 100: 500} { + for i := 0; i < maxRangeTestCount; i++ { + inrange := IntnRange(min, max) + if inrange < min || inrange >= max { + t.Errorf("%v out of range (%v,%v)", inrange, min, max) + } + } + } +} + +func TestInt63nRange(t *testing.T) { + // 0 is invalid. + for min, max := range map[int64]int64{1: 2, 10: 123, 100: 500} { + for i := 0; i < maxRangeTestCount; i++ { + inrange := Int63nRange(min, max) + if inrange < min || inrange >= max { + t.Errorf("%v out of range (%v,%v)", inrange, min, max) + } + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD b/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD new file mode 100644 index 000000000..0ba3c61c9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/remotecommand/BUILD @@ -0,0 +1,15 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["constants.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/remotecommand/constants.go b/vendor/k8s.io/apimachinery/pkg/util/remotecommand/constants.go new file mode 100644 index 000000000..acfeb827c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/remotecommand/constants.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + DefaultStreamCreationTimeout = 30 * time.Second + + // The SPDY subprotocol "channel.k8s.io" is used for remote command + // attachment/execution. This represents the initial unversioned subprotocol, + // which has the known bugs http://issues.k8s.io/13394 and + // http://issues.k8s.io/13395. + StreamProtocolV1Name = "channel.k8s.io" + + // The SPDY subprotocol "v2.channel.k8s.io" is used for remote command + // attachment/execution. It is the second version of the subprotocol and + // resolves the issues present in the first version. + StreamProtocolV2Name = "v2.channel.k8s.io" + + // The SPDY subprotocol "v3.channel.k8s.io" is used for remote command + // attachment/execution. It is the third version of the subprotocol and + // adds support for resizing container terminals. + StreamProtocolV3Name = "v3.channel.k8s.io" + + // The SPDY subprotocol "v4.channel.k8s.io" is used for remote command + // attachment/execution. It is the 4th version of the subprotocol and + // adds support for exit codes. + StreamProtocolV4Name = "v4.channel.k8s.io" + + NonZeroExitCodeReason = metav1.StatusReason("NonZeroExitCode") + ExitCodeCauseType = metav1.CauseType("ExitCode") +) + +var SupportedStreamingProtocols = []string{StreamProtocolV4Name, StreamProtocolV3Name, StreamProtocolV2Name, StreamProtocolV1Name} diff --git a/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD b/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD new file mode 100644 index 000000000..d6063ee6d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["runtime_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["runtime.go"], + tags = ["automanaged"], + deps = ["//vendor/github.com/golang/glog:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go new file mode 100644 index 000000000..748174e19 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go @@ -0,0 +1,161 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "runtime" + "sync" + "time" + + "github.com/golang/glog" +) + +var ( + // ReallyCrash controls the behavior of HandleCrash and now defaults + // true. It's still exposed so components can optionally set to false + // to restore prior behavior. + ReallyCrash = true +) + +// PanicHandlers is a list of functions which will be invoked when a panic happens. +var PanicHandlers = []func(interface{}){logPanic} + +// HandleCrash simply catches a crash and logs an error. Meant to be called via +// defer. Additional context-specific handlers can be provided, and will be +// called in case of panic. HandleCrash actually crashes, after calling the +// handlers and logging the panic message. +// +// TODO: remove this function. We are switching to a world where it's safe for +// apiserver to panic, since it will be restarted by kubelet. At the beginning +// of the Kubernetes project, nothing was going to restart apiserver and so +// catching panics was important. But it's actually much simpler for montoring +// software if we just exit when an unexpected panic happens. +func HandleCrash(additionalHandlers ...func(interface{})) { + if r := recover(); r != nil { + for _, fn := range PanicHandlers { + fn(r) + } + for _, fn := range additionalHandlers { + fn(r) + } + if ReallyCrash { + // Actually proceed to panic. + panic(r) + } + } +} + +// logPanic logs the caller tree when a panic occurs. +func logPanic(r interface{}) { + callers := getCallers(r) + glog.Errorf("Observed a panic: %#v (%v)\n%v", r, r, callers) +} + +func getCallers(r interface{}) string { + callers := "" + for i := 0; true; i++ { + _, file, line, ok := runtime.Caller(i) + if !ok { + break + } + callers = callers + fmt.Sprintf("%v:%v\n", file, line) + } + + return callers +} + +// ErrorHandlers is a list of functions which will be invoked when an unreturnable +// error occurs. +// TODO(lavalamp): for testability, this and the below HandleError function +// should be packaged up into a testable and reusable object. +var ErrorHandlers = []func(error){ + logError, + (&rudimentaryErrorBackoff{ + lastErrorTime: time.Now(), + // 1ms was the number folks were able to stomach as a global rate limit. + // If you need to log errors more than 1000 times a second you + // should probably consider fixing your code instead. :) + minPeriod: time.Millisecond, + }).OnError, +} + +// HandlerError is a method to invoke when a non-user facing piece of code cannot +// return an error and needs to indicate it has been ignored. Invoking this method +// is preferable to logging the error - the default behavior is to log but the +// errors may be sent to a remote server for analysis. +func HandleError(err error) { + // this is sometimes called with a nil error. We probably shouldn't fail and should do nothing instead + if err == nil { + return + } + + for _, fn := range ErrorHandlers { + fn(err) + } +} + +// logError prints an error with the call stack of the location it was reported +func logError(err error) { + glog.ErrorDepth(2, err) +} + +type rudimentaryErrorBackoff struct { + minPeriod time.Duration // immutable + // TODO(lavalamp): use the clock for testability. Need to move that + // package for that to be accessible here. + lastErrorTimeLock sync.Mutex + lastErrorTime time.Time +} + +// OnError will block if it is called more often than the embedded period time. +// This will prevent overly tight hot error loops. +func (r *rudimentaryErrorBackoff) OnError(error) { + r.lastErrorTimeLock.Lock() + defer r.lastErrorTimeLock.Unlock() + d := time.Since(r.lastErrorTime) + if d < r.minPeriod { + time.Sleep(r.minPeriod - d) + } + r.lastErrorTime = time.Now() +} + +// GetCaller returns the caller of the function that calls it. +func GetCaller() string { + var pc [1]uintptr + runtime.Callers(3, pc[:]) + f := runtime.FuncForPC(pc[0]) + if f == nil { + return fmt.Sprintf("Unable to find caller") + } + return f.Name() +} + +// RecoverFromPanic replaces the specified error with an error containing the +// original error, and the call tree when a panic occurs. This enables error +// handlers to handle errors and panics the same way. +func RecoverFromPanic(err *error) { + if r := recover(); r != nil { + callers := getCallers(r) + + *err = fmt.Errorf( + "recovered from panic %q. (err=%v) Call stack:\n%v", + r, + *err, + callers) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime_test.go b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime_test.go new file mode 100644 index 000000000..9dff17ea5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime_test.go @@ -0,0 +1,71 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "testing" +) + +func TestHandleCrash(t *testing.T) { + defer func() { + if x := recover(); x == nil { + t.Errorf("Expected a panic to recover from") + } + }() + defer HandleCrash() + panic("Test Panic") +} + +func TestCustomHandleCrash(t *testing.T) { + old := PanicHandlers + defer func() { PanicHandlers = old }() + var result interface{} + PanicHandlers = []func(interface{}){ + func(r interface{}) { + result = r + }, + } + func() { + defer func() { + if x := recover(); x == nil { + t.Errorf("Expected a panic to recover from") + } + }() + defer HandleCrash() + panic("test") + }() + if result != "test" { + t.Errorf("did not receive custom handler") + } +} + +func TestCustomHandleError(t *testing.T) { + old := ErrorHandlers + defer func() { ErrorHandlers = old }() + var result error + ErrorHandlers = []func(error){ + func(err error) { + result = err + }, + } + err := fmt.Errorf("test") + HandleError(err) + if result != err { + t.Errorf("did not receive custom handler") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD b/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD new file mode 100644 index 000000000..97b4bb908 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/BUILD @@ -0,0 +1,58 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load("@io_kubernetes_build//defs:go.bzl", "go_genrule") +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = [ + "byte.go", + "doc.go", + "empty.go", + "int.go", + "int64.go", + "string.go", + ], + tags = ["automanaged"], +) + +go_genrule( + name = "set-gen", + srcs = [ + "//hack/boilerplate:boilerplate.go.txt", + ], + outs = [ + "byte.go", + "doc.go", + "empty.go", + "int.go", + "int64.go", + "string.go", + ], + cmd = """ +$(location //cmd/libs/go2idl/set-gen) \ + --input-dirs ./vendor/k8s.io/apimachinery/pkg/util/sets/types \ + --output-base $(GENDIR)/vendor/k8s.io/apimachinery/pkg/util \ + --go-header-file $(location //hack/boilerplate:boilerplate.go.txt) \ + --output-package sets + """, + go_deps = [ + "//vendor/k8s.io/apimachinery/pkg/util/sets/types:go_default_library", + ], + tools = [ + "//cmd/libs/go2idl/set-gen", + ], +) + +go_test( + name = "go_default_test", + srcs = ["set_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go b/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go new file mode 100644 index 000000000..a460e4b1f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go @@ -0,0 +1,203 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.Byte is a set of bytes, implemented via map[byte]struct{} for minimal memory consumption. +type Byte map[byte]Empty + +// New creates a Byte from a list of values. +func NewByte(items ...byte) Byte { + ss := Byte{} + ss.Insert(items...) + return ss +} + +// ByteKeySet creates a Byte from a keys of a map[byte](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func ByteKeySet(theMap interface{}) Byte { + v := reflect.ValueOf(theMap) + ret := Byte{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(byte)) + } + return ret +} + +// Insert adds items to the set. +func (s Byte) Insert(items ...byte) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s Byte) Delete(items ...byte) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s Byte) Has(item byte) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s Byte) HasAll(items ...byte) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s Byte) HasAny(items ...byte) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s Byte) Difference(s2 Byte) Byte { + result := NewByte() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 Byte) Union(s2 Byte) Byte { + result := NewByte() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 Byte) Intersection(s2 Byte) Byte { + var walk, other Byte + result := NewByte() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 Byte) IsSuperset(s2 Byte) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 Byte) Equal(s2 Byte) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfByte []byte + +func (s sortableSliceOfByte) Len() int { return len(s) } +func (s sortableSliceOfByte) Less(i, j int) bool { return lessByte(s[i], s[j]) } +func (s sortableSliceOfByte) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted byte slice. +func (s Byte) List() []byte { + res := make(sortableSliceOfByte, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []byte(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s Byte) UnsortedList() []byte { + res := make([]byte, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s Byte) PopAny() (byte, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue byte + return zeroValue, false +} + +// Len returns the size of the set. +func (s Byte) Len() int { + return len(s) +} + +func lessByte(lhs, rhs byte) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go new file mode 100644 index 000000000..28a6a7d5c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +// Package sets has auto-generated set types. +package sets diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go b/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go new file mode 100644 index 000000000..cd22b953a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +// Empty is public since it is used by some internal API objects for conversions between external +// string arrays and internal sets, and conversion logic requires public types today. +type Empty struct{} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int.go new file mode 100644 index 000000000..0614e9fb0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/int.go @@ -0,0 +1,203 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.Int is a set of ints, implemented via map[int]struct{} for minimal memory consumption. +type Int map[int]Empty + +// New creates a Int from a list of values. +func NewInt(items ...int) Int { + ss := Int{} + ss.Insert(items...) + return ss +} + +// IntKeySet creates a Int from a keys of a map[int](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func IntKeySet(theMap interface{}) Int { + v := reflect.ValueOf(theMap) + ret := Int{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(int)) + } + return ret +} + +// Insert adds items to the set. +func (s Int) Insert(items ...int) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s Int) Delete(items ...int) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s Int) Has(item int) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s Int) HasAll(items ...int) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s Int) HasAny(items ...int) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s Int) Difference(s2 Int) Int { + result := NewInt() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 Int) Union(s2 Int) Int { + result := NewInt() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 Int) Intersection(s2 Int) Int { + var walk, other Int + result := NewInt() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 Int) IsSuperset(s2 Int) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 Int) Equal(s2 Int) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfInt []int + +func (s sortableSliceOfInt) Len() int { return len(s) } +func (s sortableSliceOfInt) Less(i, j int) bool { return lessInt(s[i], s[j]) } +func (s sortableSliceOfInt) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted int slice. +func (s Int) List() []int { + res := make(sortableSliceOfInt, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []int(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s Int) UnsortedList() []int { + res := make([]int, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s Int) PopAny() (int, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue int + return zeroValue, false +} + +// Len returns the size of the set. +func (s Int) Len() int { + return len(s) +} + +func lessInt(lhs, rhs int) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go b/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go new file mode 100644 index 000000000..82e1ba782 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go @@ -0,0 +1,203 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.Int64 is a set of int64s, implemented via map[int64]struct{} for minimal memory consumption. +type Int64 map[int64]Empty + +// New creates a Int64 from a list of values. +func NewInt64(items ...int64) Int64 { + ss := Int64{} + ss.Insert(items...) + return ss +} + +// Int64KeySet creates a Int64 from a keys of a map[int64](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func Int64KeySet(theMap interface{}) Int64 { + v := reflect.ValueOf(theMap) + ret := Int64{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(int64)) + } + return ret +} + +// Insert adds items to the set. +func (s Int64) Insert(items ...int64) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s Int64) Delete(items ...int64) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s Int64) Has(item int64) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s Int64) HasAll(items ...int64) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s Int64) HasAny(items ...int64) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s Int64) Difference(s2 Int64) Int64 { + result := NewInt64() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 Int64) Union(s2 Int64) Int64 { + result := NewInt64() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 Int64) Intersection(s2 Int64) Int64 { + var walk, other Int64 + result := NewInt64() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 Int64) IsSuperset(s2 Int64) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 Int64) Equal(s2 Int64) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfInt64 []int64 + +func (s sortableSliceOfInt64) Len() int { return len(s) } +func (s sortableSliceOfInt64) Less(i, j int) bool { return lessInt64(s[i], s[j]) } +func (s sortableSliceOfInt64) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted int64 slice. +func (s Int64) List() []int64 { + res := make(sortableSliceOfInt64, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []int64(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s Int64) UnsortedList() []int64 { + res := make([]int64, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s Int64) PopAny() (int64, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue int64 + return zeroValue, false +} + +// Len returns the size of the set. +func (s Int64) Len() int { + return len(s) +} + +func lessInt64(lhs, rhs int64) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/set_test.go b/vendor/k8s.io/apimachinery/pkg/util/sets/set_test.go new file mode 100644 index 000000000..df722ec27 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/set_test.go @@ -0,0 +1,270 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package sets + +import ( + "reflect" + "testing" +) + +func TestStringSet(t *testing.T) { + s := String{} + s2 := String{} + if len(s) != 0 { + t.Errorf("Expected len=0: %d", len(s)) + } + s.Insert("a", "b") + if len(s) != 2 { + t.Errorf("Expected len=2: %d", len(s)) + } + s.Insert("c") + if s.Has("d") { + t.Errorf("Unexpected contents: %#v", s) + } + if !s.Has("a") { + t.Errorf("Missing contents: %#v", s) + } + s.Delete("a") + if s.Has("a") { + t.Errorf("Unexpected contents: %#v", s) + } + s.Insert("a") + if s.HasAll("a", "b", "d") { + t.Errorf("Unexpected contents: %#v", s) + } + if !s.HasAll("a", "b") { + t.Errorf("Missing contents: %#v", s) + } + s2.Insert("a", "b", "d") + if s.IsSuperset(s2) { + t.Errorf("Unexpected contents: %#v", s) + } + s2.Delete("d") + if !s.IsSuperset(s2) { + t.Errorf("Missing contents: %#v", s) + } +} + +func TestStringSetDeleteMultiples(t *testing.T) { + s := String{} + s.Insert("a", "b", "c") + if len(s) != 3 { + t.Errorf("Expected len=3: %d", len(s)) + } + + s.Delete("a", "c") + if len(s) != 1 { + t.Errorf("Expected len=1: %d", len(s)) + } + if s.Has("a") { + t.Errorf("Unexpected contents: %#v", s) + } + if s.Has("c") { + t.Errorf("Unexpected contents: %#v", s) + } + if !s.Has("b") { + t.Errorf("Missing contents: %#v", s) + } + +} + +func TestNewStringSet(t *testing.T) { + s := NewString("a", "b", "c") + if len(s) != 3 { + t.Errorf("Expected len=3: %d", len(s)) + } + if !s.Has("a") || !s.Has("b") || !s.Has("c") { + t.Errorf("Unexpected contents: %#v", s) + } +} + +func TestStringSetList(t *testing.T) { + s := NewString("z", "y", "x", "a") + if !reflect.DeepEqual(s.List(), []string{"a", "x", "y", "z"}) { + t.Errorf("List gave unexpected result: %#v", s.List()) + } +} + +func TestStringSetDifference(t *testing.T) { + a := NewString("1", "2", "3") + b := NewString("1", "2", "4", "5") + c := a.Difference(b) + d := b.Difference(a) + if len(c) != 1 { + t.Errorf("Expected len=1: %d", len(c)) + } + if !c.Has("3") { + t.Errorf("Unexpected contents: %#v", c.List()) + } + if len(d) != 2 { + t.Errorf("Expected len=2: %d", len(d)) + } + if !d.Has("4") || !d.Has("5") { + t.Errorf("Unexpected contents: %#v", d.List()) + } +} + +func TestStringSetHasAny(t *testing.T) { + a := NewString("1", "2", "3") + + if !a.HasAny("1", "4") { + t.Errorf("expected true, got false") + } + + if a.HasAny("0", "4") { + t.Errorf("expected false, got true") + } +} + +func TestStringSetEquals(t *testing.T) { + // Simple case (order doesn't matter) + a := NewString("1", "2") + b := NewString("2", "1") + if !a.Equal(b) { + t.Errorf("Expected to be equal: %v vs %v", a, b) + } + + // It is a set; duplicates are ignored + b = NewString("2", "2", "1") + if !a.Equal(b) { + t.Errorf("Expected to be equal: %v vs %v", a, b) + } + + // Edge cases around empty sets / empty strings + a = NewString() + b = NewString() + if !a.Equal(b) { + t.Errorf("Expected to be equal: %v vs %v", a, b) + } + + b = NewString("1", "2", "3") + if a.Equal(b) { + t.Errorf("Expected to be not-equal: %v vs %v", a, b) + } + + b = NewString("1", "2", "") + if a.Equal(b) { + t.Errorf("Expected to be not-equal: %v vs %v", a, b) + } + + // Check for equality after mutation + a = NewString() + a.Insert("1") + if a.Equal(b) { + t.Errorf("Expected to be not-equal: %v vs %v", a, b) + } + + a.Insert("2") + if a.Equal(b) { + t.Errorf("Expected to be not-equal: %v vs %v", a, b) + } + + a.Insert("") + if !a.Equal(b) { + t.Errorf("Expected to be equal: %v vs %v", a, b) + } + + a.Delete("") + if a.Equal(b) { + t.Errorf("Expected to be not-equal: %v vs %v", a, b) + } +} + +func TestStringUnion(t *testing.T) { + tests := []struct { + s1 String + s2 String + expected String + }{ + { + NewString("1", "2", "3", "4"), + NewString("3", "4", "5", "6"), + NewString("1", "2", "3", "4", "5", "6"), + }, + { + NewString("1", "2", "3", "4"), + NewString(), + NewString("1", "2", "3", "4"), + }, + { + NewString(), + NewString("1", "2", "3", "4"), + NewString("1", "2", "3", "4"), + }, + { + NewString(), + NewString(), + NewString(), + }, + } + + for _, test := range tests { + union := test.s1.Union(test.s2) + if union.Len() != test.expected.Len() { + t.Errorf("Expected union.Len()=%d but got %d", test.expected.Len(), union.Len()) + } + + if !union.Equal(test.expected) { + t.Errorf("Expected union.Equal(expected) but not true. union:%v expected:%v", union.List(), test.expected.List()) + } + } +} + +func TestStringIntersection(t *testing.T) { + tests := []struct { + s1 String + s2 String + expected String + }{ + { + NewString("1", "2", "3", "4"), + NewString("3", "4", "5", "6"), + NewString("3", "4"), + }, + { + NewString("1", "2", "3", "4"), + NewString("1", "2", "3", "4"), + NewString("1", "2", "3", "4"), + }, + { + NewString("1", "2", "3", "4"), + NewString(), + NewString(), + }, + { + NewString(), + NewString("1", "2", "3", "4"), + NewString(), + }, + { + NewString(), + NewString(), + NewString(), + }, + } + + for _, test := range tests { + intersection := test.s1.Intersection(test.s2) + if intersection.Len() != test.expected.Len() { + t.Errorf("Expected intersection.Len()=%d but got %d", test.expected.Len(), intersection.Len()) + } + + if !intersection.Equal(test.expected) { + t.Errorf("Expected intersection.Equal(expected) but not true. intersection:%v expected:%v", intersection.List(), test.expected.List()) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/string.go b/vendor/k8s.io/apimachinery/pkg/util/sets/string.go new file mode 100644 index 000000000..baef7a6a2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/string.go @@ -0,0 +1,203 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption. +type String map[string]Empty + +// New creates a String from a list of values. +func NewString(items ...string) String { + ss := String{} + ss.Insert(items...) + return ss +} + +// StringKeySet creates a String from a keys of a map[string](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func StringKeySet(theMap interface{}) String { + v := reflect.ValueOf(theMap) + ret := String{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(string)) + } + return ret +} + +// Insert adds items to the set. +func (s String) Insert(items ...string) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s String) Delete(items ...string) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s String) Has(item string) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s String) HasAll(items ...string) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s String) HasAny(items ...string) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s String) Difference(s2 String) String { + result := NewString() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 String) Union(s2 String) String { + result := NewString() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 String) Intersection(s2 String) String { + var walk, other String + result := NewString() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 String) IsSuperset(s2 String) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 String) Equal(s2 String) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfString []string + +func (s sortableSliceOfString) Len() int { return len(s) } +func (s sortableSliceOfString) Less(i, j int) bool { return lessString(s[i], s[j]) } +func (s sortableSliceOfString) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted string slice. +func (s String) List() []string { + res := make(sortableSliceOfString, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []string(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s String) UnsortedList() []string { + res := make([]string, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s String) PopAny() (string, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue string + return zeroValue, false +} + +// Len returns the size of the set. +func (s String) Len() int { + return len(s) +} + +func lessString(lhs, rhs string) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/types/BUILD b/vendor/k8s.io/apimachinery/pkg/util/sets/types/BUILD new file mode 100644 index 000000000..7afc7f5cc --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/types/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["types.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/sets/types/types.go b/vendor/k8s.io/apimachinery/pkg/util/sets/types/types.go new file mode 100644 index 000000000..2599851c9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/sets/types/types.go @@ -0,0 +1,32 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package types just provides input types to the set generator. It also +// contains a "go generate" block. +// (You must first `go install k8s.io/kubernetes/cmd/libs/go2idl/set-gen`) +package types + +//go:generate set-gen -i k8s.io/kubernetes/pkg/util/sets/types + +type ReferenceSetTypes struct { + // These types all cause files to be generated. + // These types should be reflected in the ouput of + // the "//pkg/util/sets:set-gen" genrule. + a int64 + b int + c byte + d string +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD new file mode 100644 index 000000000..43705662d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD @@ -0,0 +1,34 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["patch_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/davecgh/go-spew/spew:go_default_library", + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["patch.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/util/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/mergepatch:go_default_library", + "//vendor/k8s.io/apimachinery/third_party/forked/golang/json:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS new file mode 100644 index 000000000..8e8d9fce8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS @@ -0,0 +1,5 @@ +approvers: +- pwittrock +reviewers: +- mengqiy +- apelisse diff --git a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go new file mode 100644 index 000000000..828df4435 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go @@ -0,0 +1,2115 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package strategicpatch + +import ( + "fmt" + "reflect" + "sort" + "strings" + + "k8s.io/apimachinery/pkg/util/json" + "k8s.io/apimachinery/pkg/util/mergepatch" + forkedjson "k8s.io/apimachinery/third_party/forked/golang/json" +) + +// An alternate implementation of JSON Merge Patch +// (https://tools.ietf.org/html/rfc7386) which supports the ability to annotate +// certain fields with metadata that indicates whether the elements of JSON +// lists should be merged or replaced. +// +// For more information, see the PATCH section of docs/devel/api-conventions.md. +// +// Some of the content of this package was borrowed with minor adaptations from +// evanphx/json-patch and openshift/origin. + +const ( + directiveMarker = "$patch" + deleteDirective = "delete" + replaceDirective = "replace" + mergeDirective = "merge" + + retainKeysStrategy = "retainKeys" + + deleteFromPrimitiveListDirectivePrefix = "$deleteFromPrimitiveList" + retainKeysDirective = "$" + retainKeysStrategy + setElementOrderDirectivePrefix = "$setElementOrder" +) + +// JSONMap is a representations of JSON object encoded as map[string]interface{} +// where the children can be either map[string]interface{}, []interface{} or +// primitive type). +// Operating on JSONMap representation is much faster as it doesn't require any +// json marshaling and/or unmarshaling operations. +type JSONMap map[string]interface{} + +type DiffOptions struct { + // SetElementOrder determines whether we generate the $setElementOrder parallel list. + SetElementOrder bool + // IgnoreChangesAndAdditions indicates if we keep the changes and additions in the patch. + IgnoreChangesAndAdditions bool + // IgnoreDeletions indicates if we keep the deletions in the patch. + IgnoreDeletions bool + // We introduce a new value retainKeys for patchStrategy. + // It indicates that all fields needing to be preserved must be + // present in the `retainKeys` list. + // And the fields that are present will be merged with live object. + // All the missing fields will be cleared when patching. + BuildRetainKeysDirective bool +} + +type MergeOptions struct { + // MergeParallelList indicates if we are merging the parallel list. + // We don't merge parallel list when calling mergeMap() in CreateThreeWayMergePatch() + // which is called client-side. + // We merge parallel list iff when calling mergeMap() in StrategicMergeMapPatch() + // which is called server-side + MergeParallelList bool + // IgnoreUnmatchedNulls indicates if we should process the unmatched nulls. + IgnoreUnmatchedNulls bool +} + +// The following code is adapted from github.com/openshift/origin/pkg/util/jsonmerge. +// Instead of defining a Delta that holds an original, a patch and a set of preconditions, +// the reconcile method accepts a set of preconditions as an argument. + +// CreateTwoWayMergePatch creates a patch that can be passed to StrategicMergePatch from an original +// document and a modified document, which are passed to the method as json encoded content. It will +// return a patch that yields the modified document when applied to the original document, or an error +// if either of the two documents is invalid. +func CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}, fns ...mergepatch.PreconditionFunc) ([]byte, error) { + originalMap := map[string]interface{}{} + if len(original) > 0 { + if err := json.Unmarshal(original, &originalMap); err != nil { + return nil, mergepatch.ErrBadJSONDoc + } + } + + modifiedMap := map[string]interface{}{} + if len(modified) > 0 { + if err := json.Unmarshal(modified, &modifiedMap); err != nil { + return nil, mergepatch.ErrBadJSONDoc + } + } + + patchMap, err := CreateTwoWayMergeMapPatch(originalMap, modifiedMap, dataStruct, fns...) + if err != nil { + return nil, err + } + + return json.Marshal(patchMap) +} + +// CreateTwoWayMergeMapPatch creates a patch from an original and modified JSON objects, +// encoded JSONMap. +// The serialized version of the map can then be passed to StrategicMergeMapPatch. +func CreateTwoWayMergeMapPatch(original, modified JSONMap, dataStruct interface{}, fns ...mergepatch.PreconditionFunc) (JSONMap, error) { + t, err := getTagStructType(dataStruct) + if err != nil { + return nil, err + } + + diffOptions := DiffOptions{ + SetElementOrder: true, + } + patchMap, err := diffMaps(original, modified, t, diffOptions) + if err != nil { + return nil, err + } + + // Apply the preconditions to the patch, and return an error if any of them fail. + for _, fn := range fns { + if !fn(patchMap) { + return nil, mergepatch.NewErrPreconditionFailed(patchMap) + } + } + + return patchMap, nil +} + +// Returns a (recursive) strategic merge patch that yields modified when applied to original. +// Including: +// - Adding fields to the patch present in modified, missing from original +// - Setting fields to the patch present in modified and original with different values +// - Delete fields present in original, missing from modified through +// - IFF map field - set to nil in patch +// - IFF list of maps && merge strategy - use deleteDirective for the elements +// - IFF list of primitives && merge strategy - use parallel deletion list +// - IFF list of maps or primitives with replace strategy (default) - set patch value to the value in modified +// - Build $retainKeys directive for fields with retainKeys patch strategy +func diffMaps(original, modified map[string]interface{}, t reflect.Type, diffOptions DiffOptions) (map[string]interface{}, error) { + patch := map[string]interface{}{} + // Get the underlying type for pointers + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + // This will be used to build the $retainKeys directive sent in the patch + retainKeysList := make([]interface{}, 0, len(modified)) + + // Compare each value in the modified map against the value in the original map + for key, modifiedValue := range modified { + // Get the underlying type for pointers + if diffOptions.BuildRetainKeysDirective && modifiedValue != nil { + retainKeysList = append(retainKeysList, key) + } + + originalValue, ok := original[key] + if !ok { + // Key was added, so add to patch + if !diffOptions.IgnoreChangesAndAdditions { + patch[key] = modifiedValue + } + continue + } + + // The patch may have a patch directive + // TODO: figure out if we need this. This shouldn't be needed by apply. When would the original map have patch directives in it? + foundDirectiveMarker, err := handleDirectiveMarker(key, originalValue, modifiedValue, patch) + if err != nil { + return nil, err + } + if foundDirectiveMarker { + continue + } + + if reflect.TypeOf(originalValue) != reflect.TypeOf(modifiedValue) { + // Types have changed, so add to patch + if !diffOptions.IgnoreChangesAndAdditions { + patch[key] = modifiedValue + } + continue + } + + // Types are the same, so compare values + switch originalValueTyped := originalValue.(type) { + case map[string]interface{}: + modifiedValueTyped := modifiedValue.(map[string]interface{}) + err = handleMapDiff(key, originalValueTyped, modifiedValueTyped, patch, t, diffOptions) + case []interface{}: + modifiedValueTyped := modifiedValue.([]interface{}) + err = handleSliceDiff(key, originalValueTyped, modifiedValueTyped, patch, t, diffOptions) + default: + replacePatchFieldIfNotEqual(key, originalValue, modifiedValue, patch, diffOptions) + } + if err != nil { + return nil, err + } + } + + updatePatchIfMissing(original, modified, patch, diffOptions) + // Insert the retainKeysList iff there are values present in the retainKeysList and + // either of the following is true: + // - the patch is not empty + // - there are additional field in original that need to be cleared + if len(retainKeysList) > 0 && + (len(patch) > 0 || hasAdditionalNewField(original, modified)) { + patch[retainKeysDirective] = sortScalars(retainKeysList) + } + return patch, nil +} + +// handleDirectiveMarker handles how to diff directive marker between 2 objects +func handleDirectiveMarker(key string, originalValue, modifiedValue interface{}, patch map[string]interface{}) (bool, error) { + if key == directiveMarker { + originalString, ok := originalValue.(string) + if !ok { + return false, fmt.Errorf("invalid value for special key: %s", directiveMarker) + } + modifiedString, ok := modifiedValue.(string) + if !ok { + return false, fmt.Errorf("invalid value for special key: %s", directiveMarker) + } + if modifiedString != originalString { + patch[directiveMarker] = modifiedValue + } + return true, nil + } + return false, nil +} + +// handleMapDiff diff between 2 maps `originalValueTyped` and `modifiedValue`, +// puts the diff in the `patch` associated with `key` +// key is the key associated with originalValue and modifiedValue. +// originalValue, modifiedValue are the old and new value respectively.They are both maps +// patch is the patch map that contains key and the updated value, and it is the parent of originalValue, modifiedValue +// diffOptions contains multiple options to control how we do the diff. +func handleMapDiff(key string, originalValue, modifiedValue, patch map[string]interface{}, + t reflect.Type, diffOptions DiffOptions) error { + fieldType, fieldPatchStrategies, _, err := forkedjson.LookupPatchMetadata(t, key) + if err != nil { + // We couldn't look up metadata for the field + // If the values are identical, this doesn't matter, no patch is needed + if reflect.DeepEqual(originalValue, modifiedValue) { + return nil + } + // Otherwise, return the error + return err + } + retainKeys, patchStrategy, err := extractRetainKeysPatchStrategy(fieldPatchStrategies) + if err != nil { + return err + } + diffOptions.BuildRetainKeysDirective = retainKeys + switch patchStrategy { + // The patch strategic from metadata tells us to replace the entire object instead of diffing it + case replaceDirective: + if !diffOptions.IgnoreChangesAndAdditions { + patch[key] = modifiedValue + } + default: + patchValue, err := diffMaps(originalValue, modifiedValue, fieldType, diffOptions) + if err != nil { + return err + } + // Maps were not identical, use provided patch value + if len(patchValue) > 0 { + patch[key] = patchValue + } + } + return nil +} + +// handleSliceDiff diff between 2 slices `originalValueTyped` and `modifiedValue`, +// puts the diff in the `patch` associated with `key` +// key is the key associated with originalValue and modifiedValue. +// originalValue, modifiedValue are the old and new value respectively.They are both slices +// patch is the patch map that contains key and the updated value, and it is the parent of originalValue, modifiedValue +// diffOptions contains multiple options to control how we do the diff. +func handleSliceDiff(key string, originalValue, modifiedValue []interface{}, patch map[string]interface{}, + t reflect.Type, diffOptions DiffOptions) error { + fieldType, fieldPatchStrategies, fieldPatchMergeKey, err := forkedjson.LookupPatchMetadata(t, key) + if err != nil { + // We couldn't look up metadata for the field + // If the values are identical, this doesn't matter, no patch is needed + if reflect.DeepEqual(originalValue, modifiedValue) { + return nil + } + // Otherwise, return the error + return err + } + retainKeys, patchStrategy, err := extractRetainKeysPatchStrategy(fieldPatchStrategies) + if err != nil { + return err + } + switch patchStrategy { + // Merge the 2 slices using mergePatchKey + case mergeDirective: + diffOptions.BuildRetainKeysDirective = retainKeys + addList, deletionList, setOrderList, err := diffLists(originalValue, modifiedValue, fieldType.Elem(), fieldPatchMergeKey, diffOptions) + if err != nil { + return err + } + if len(addList) > 0 { + patch[key] = addList + } + // generate a parallel list for deletion + if len(deletionList) > 0 { + parallelDeletionListKey := fmt.Sprintf("%s/%s", deleteFromPrimitiveListDirectivePrefix, key) + patch[parallelDeletionListKey] = deletionList + } + if len(setOrderList) > 0 { + parallelSetOrderListKey := fmt.Sprintf("%s/%s", setElementOrderDirectivePrefix, key) + patch[parallelSetOrderListKey] = setOrderList + } + default: + replacePatchFieldIfNotEqual(key, originalValue, modifiedValue, patch, diffOptions) + } + return nil +} + +// replacePatchFieldIfNotEqual updates the patch if original and modified are not deep equal +// if diffOptions.IgnoreChangesAndAdditions is false. +// original is the old value, maybe either the live cluster object or the last applied configuration +// modified is the new value, is always the users new config +func replacePatchFieldIfNotEqual(key string, original, modified interface{}, + patch map[string]interface{}, diffOptions DiffOptions) { + if diffOptions.IgnoreChangesAndAdditions { + // Ignoring changes - do nothing + return + } + if reflect.DeepEqual(original, modified) { + // Contents are identical - do nothing + return + } + // Create a patch to replace the old value with the new one + patch[key] = modified +} + +// updatePatchIfMissing iterates over `original` when ignoreDeletions is false. +// Clear the field whose key is not present in `modified`. +// original is the old value, maybe either the live cluster object or the last applied configuration +// modified is the new value, is always the users new config +func updatePatchIfMissing(original, modified, patch map[string]interface{}, diffOptions DiffOptions) { + if diffOptions.IgnoreDeletions { + // Ignoring deletion - do nothing + return + } + // Add nils for deleted values + for key := range original { + if _, found := modified[key]; !found { + patch[key] = nil + } + } +} + +// validateMergeKeyInLists checks if each map in the list has the mentryerge key. +func validateMergeKeyInLists(mergeKey string, lists ...[]interface{}) error { + for _, list := range lists { + for _, item := range list { + m, ok := item.(map[string]interface{}) + if !ok { + return mergepatch.ErrBadArgType(m, item) + } + if _, ok = m[mergeKey]; !ok { + return mergepatch.ErrNoMergeKey(m, mergeKey) + } + } + } + return nil +} + +// normalizeElementOrder sort `patch` list by `patchOrder` and sort `serverOnly` list by `serverOrder`. +// Then it merges the 2 sorted lists. +// It guarantee the relative order in the patch list and in the serverOnly list is kept. +// `patch` is a list of items in the patch, and `serverOnly` is a list of items in the live object. +// `patchOrder` is the order we want `patch` list to have and +// `serverOrder` is the order we want `serverOnly` list to have. +// kind is the kind of each item in the lists `patch` and `serverOnly`. +func normalizeElementOrder(patch, serverOnly, patchOrder, serverOrder []interface{}, mergeKey string, kind reflect.Kind) ([]interface{}, error) { + patch, err := normalizeSliceOrder(patch, patchOrder, mergeKey, kind) + if err != nil { + return nil, err + } + serverOnly, err = normalizeSliceOrder(serverOnly, serverOrder, mergeKey, kind) + if err != nil { + return nil, err + } + all := mergeSortedSlice(serverOnly, patch, serverOrder, mergeKey, kind) + + return all, nil +} + +// mergeSortedSlice merges the 2 sorted lists by serverOrder with best effort. +// It will insert each item in `left` list to `right` list. In most cases, the 2 lists will be interleaved. +// The relative order of left and right are guaranteed to be kept. +// They have higher precedence than the order in the live list. +// The place for a item in `left` is found by: +// scan from the place of last insertion in `right` to the end of `right`, +// the place is before the first item that is greater than the item we want to insert. +// example usage: using server-only items as left and patch items as right. We insert server-only items +// to patch list. We use the order of live object as record for comparision. +func mergeSortedSlice(left, right, serverOrder []interface{}, mergeKey string, kind reflect.Kind) []interface{} { + // Returns if l is less than r, and if both have been found. + // If l and r both present and l is in front of r, l is less than r. + less := func(l, r interface{}) (bool, bool) { + li := index(serverOrder, l, mergeKey, kind) + ri := index(serverOrder, r, mergeKey, kind) + if li >= 0 && ri >= 0 { + return li < ri, true + } else { + return false, false + } + } + + // left and right should be non-overlapping. + size := len(left) + len(right) + i, j := 0, 0 + s := make([]interface{}, size, size) + + for k := 0; k < size; k++ { + if i >= len(left) && j < len(right) { + // have items left in `right` list + s[k] = right[j] + j++ + } else if j >= len(right) && i < len(left) { + // have items left in `left` list + s[k] = left[i] + i++ + } else { + // compare them if i and j are both in bound + less, foundBoth := less(left[i], right[j]) + if foundBoth && less { + s[k] = left[i] + i++ + } else { + s[k] = right[j] + j++ + } + } + } + return s +} + +// index returns the index of the item in the given items, or -1 if it doesn't exist +// l must NOT be a slice of slices, this should be checked before calling. +func index(l []interface{}, valToLookUp interface{}, mergeKey string, kind reflect.Kind) int { + var getValFn func(interface{}) interface{} + // Get the correct `getValFn` based on item `kind`. + // It should return the value of merge key for maps and + // return the item for other kinds. + switch kind { + case reflect.Map: + getValFn = func(item interface{}) interface{} { + typedItem, ok := item.(map[string]interface{}) + if !ok { + return nil + } + val := typedItem[mergeKey] + return val + } + default: + getValFn = func(item interface{}) interface{} { + return item + } + } + + for i, v := range l { + if getValFn(valToLookUp) == getValFn(v) { + return i + } + } + return -1 +} + +// extractToDeleteItems takes a list and +// returns 2 lists: one contains items that should be kept and the other contains items to be deleted. +func extractToDeleteItems(l []interface{}) ([]interface{}, []interface{}, error) { + var nonDelete, toDelete []interface{} + for _, v := range l { + m, ok := v.(map[string]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(m, v) + } + + directive, foundDirective := m[directiveMarker] + if foundDirective && directive == deleteDirective { + toDelete = append(toDelete, v) + } else { + nonDelete = append(nonDelete, v) + } + } + return nonDelete, toDelete, nil +} + +// normalizeSliceOrder sort `toSort` list by `order` +func normalizeSliceOrder(toSort, order []interface{}, mergeKey string, kind reflect.Kind) ([]interface{}, error) { + var toDelete []interface{} + if kind == reflect.Map { + // make sure each item in toSort, order has merge key + err := validateMergeKeyInLists(mergeKey, toSort, order) + if err != nil { + return nil, err + } + toSort, toDelete, err = extractToDeleteItems(toSort) + } + + sort.SliceStable(toSort, func(i, j int) bool { + if ii := index(order, toSort[i], mergeKey, kind); ii >= 0 { + if ij := index(order, toSort[j], mergeKey, kind); ij >= 0 { + return ii < ij + } + } + return true + }) + toSort = append(toSort, toDelete...) + return toSort, nil +} + +// Returns a (recursive) strategic merge patch, a parallel deletion list if necessary and +// another list to set the order of the list +// Only list of primitives with merge strategy will generate a parallel deletion list. +// These two lists should yield modified when applied to original, for lists with merge semantics. +func diffLists(original, modified []interface{}, t reflect.Type, mergeKey string, diffOptions DiffOptions) ([]interface{}, []interface{}, []interface{}, error) { + if len(original) == 0 { + // Both slices are empty - do nothing + if len(modified) == 0 || diffOptions.IgnoreChangesAndAdditions { + return nil, nil, nil, nil + } + + // Old slice was empty - add all elements from the new slice + return modified, nil, nil, nil + } + + elementType, err := sliceElementType(original, modified) + if err != nil { + return nil, nil, nil, err + } + + var patchList, deleteList, setOrderList []interface{} + kind := elementType.Kind() + switch kind { + case reflect.Map: + patchList, deleteList, err = diffListsOfMaps(original, modified, t, mergeKey, diffOptions) + patchList, err = normalizeSliceOrder(patchList, modified, mergeKey, kind) + orderSame, err := isOrderSame(original, modified, mergeKey) + if err != nil { + return nil, nil, nil, err + } + // append the deletions to the end of the patch list. + patchList = append(patchList, deleteList...) + deleteList = nil + // generate the setElementOrder list when there are content changes or order changes + if diffOptions.SetElementOrder && + ((!diffOptions.IgnoreChangesAndAdditions && (len(patchList) > 0 || !orderSame)) || + (!diffOptions.IgnoreDeletions && len(patchList) > 0)) { + // Generate a list of maps that each item contains only the merge key. + setOrderList = make([]interface{}, len(modified)) + for i, v := range modified { + typedV := v.(map[string]interface{}) + setOrderList[i] = map[string]interface{}{ + mergeKey: typedV[mergeKey], + } + } + } + case reflect.Slice: + // Lists of Lists are not permitted by the api + return nil, nil, nil, mergepatch.ErrNoListOfLists + default: + patchList, deleteList, err = diffListsOfScalars(original, modified, diffOptions) + patchList, err = normalizeSliceOrder(patchList, modified, mergeKey, kind) + // generate the setElementOrder list when there are content changes or order changes + if diffOptions.SetElementOrder && ((!diffOptions.IgnoreDeletions && len(deleteList) > 0) || + (!diffOptions.IgnoreChangesAndAdditions && !reflect.DeepEqual(original, modified))) { + setOrderList = modified + } + } + return patchList, deleteList, setOrderList, err +} + +// isOrderSame checks if the order in a list has changed +func isOrderSame(original, modified []interface{}, mergeKey string) (bool, error) { + if len(original) != len(modified) { + return false, nil + } + for i, modifiedItem := range modified { + equal, err := mergeKeyValueEqual(original[i], modifiedItem, mergeKey) + if err != nil || !equal { + return equal, err + } + } + return true, nil +} + +// diffListsOfScalars returns 2 lists, the first one is addList and the second one is deletionList. +// Argument diffOptions.IgnoreChangesAndAdditions controls if calculate addList. true means not calculate. +// Argument diffOptions.IgnoreDeletions controls if calculate deletionList. true means not calculate. +// original may be changed, but modified is guaranteed to not be changed +func diffListsOfScalars(original, modified []interface{}, diffOptions DiffOptions) ([]interface{}, []interface{}, error) { + modifiedCopy := make([]interface{}, len(modified)) + copy(modifiedCopy, modified) + // Sort the scalars for easier calculating the diff + originalScalars := sortScalars(original) + modifiedScalars := sortScalars(modifiedCopy) + + originalIndex, modifiedIndex := 0, 0 + addList := []interface{}{} + deletionList := []interface{}{} + + for { + originalInBounds := originalIndex < len(originalScalars) + modifiedInBounds := modifiedIndex < len(modifiedScalars) + if !originalInBounds && !modifiedInBounds { + break + } + // we need to compare the string representation of the scalar, + // because the scalar is an interface which doesn't support either < or > + // And that's how func sortScalars compare scalars. + var originalString, modifiedString string + var originalValue, modifiedValue interface{} + if originalInBounds { + originalValue = originalScalars[originalIndex] + originalString = fmt.Sprintf("%v", originalValue) + } + if modifiedInBounds { + modifiedValue = modifiedScalars[modifiedIndex] + modifiedString = fmt.Sprintf("%v", modifiedValue) + } + + originalV, modifiedV := compareListValuesAtIndex(originalInBounds, modifiedInBounds, originalString, modifiedString) + switch { + case originalV == nil && modifiedV == nil: + originalIndex++ + modifiedIndex++ + case originalV != nil && modifiedV == nil: + if !diffOptions.IgnoreDeletions { + deletionList = append(deletionList, originalValue) + } + originalIndex++ + case originalV == nil && modifiedV != nil: + if !diffOptions.IgnoreChangesAndAdditions { + addList = append(addList, modifiedValue) + } + modifiedIndex++ + default: + return nil, nil, fmt.Errorf("Unexpected returned value from compareListValuesAtIndex: %v and %v", originalV, modifiedV) + } + } + + return addList, deduplicateScalars(deletionList), nil +} + +// If first return value is non-nil, list1 contains an element not present in list2 +// If second return value is non-nil, list2 contains an element not present in list1 +func compareListValuesAtIndex(list1Inbounds, list2Inbounds bool, list1Value, list2Value string) (interface{}, interface{}) { + bothInBounds := list1Inbounds && list2Inbounds + switch { + // scalars are identical + case bothInBounds && list1Value == list2Value: + return nil, nil + // only list2 is in bound + case !list1Inbounds: + fallthrough + // list2 has additional scalar + case bothInBounds && list1Value > list2Value: + return nil, list2Value + // only original is in bound + case !list2Inbounds: + fallthrough + // original has additional scalar + case bothInBounds && list1Value < list2Value: + return list1Value, nil + default: + return nil, nil + } +} + +// diffListsOfMaps takes a pair of lists and +// returns a (recursive) strategic merge patch list contains additions and changes and +// a deletion list contains deletions +func diffListsOfMaps(original, modified []interface{}, t reflect.Type, mergeKey string, diffOptions DiffOptions) ([]interface{}, []interface{}, error) { + patch := make([]interface{}, 0, len(modified)) + deletionList := make([]interface{}, 0, len(original)) + + originalSorted, err := sortMergeListsByNameArray(original, t, mergeKey, false) + if err != nil { + return nil, nil, err + } + modifiedSorted, err := sortMergeListsByNameArray(modified, t, mergeKey, false) + if err != nil { + return nil, nil, err + } + + originalIndex, modifiedIndex := 0, 0 + for { + originalInBounds := originalIndex < len(originalSorted) + modifiedInBounds := modifiedIndex < len(modifiedSorted) + bothInBounds := originalInBounds && modifiedInBounds + if !originalInBounds && !modifiedInBounds { + break + } + + var originalElementMergeKeyValueString, modifiedElementMergeKeyValueString string + var originalElementMergeKeyValue, modifiedElementMergeKeyValue interface{} + var originalElement, modifiedElement map[string]interface{} + if originalInBounds { + originalElement, originalElementMergeKeyValue, err = getMapAndMergeKeyValueByIndex(originalIndex, mergeKey, originalSorted) + if err != nil { + return nil, nil, err + } + originalElementMergeKeyValueString = fmt.Sprintf("%v", originalElementMergeKeyValue) + } + if modifiedInBounds { + modifiedElement, modifiedElementMergeKeyValue, err = getMapAndMergeKeyValueByIndex(modifiedIndex, mergeKey, modifiedSorted) + if err != nil { + return nil, nil, err + } + modifiedElementMergeKeyValueString = fmt.Sprintf("%v", modifiedElementMergeKeyValue) + } + + switch { + case bothInBounds && ItemMatchesOriginalAndModifiedSlice(originalElementMergeKeyValueString, modifiedElementMergeKeyValueString): + // Merge key values are equal, so recurse + patchValue, err := diffMaps(originalElement, modifiedElement, t, diffOptions) + if err != nil { + return nil, nil, err + } + if len(patchValue) > 0 { + patchValue[mergeKey] = modifiedElementMergeKeyValue + patch = append(patch, patchValue) + } + originalIndex++ + modifiedIndex++ + // only modified is in bound + case !originalInBounds: + fallthrough + // modified has additional map + case bothInBounds && ItemAddedToModifiedSlice(originalElementMergeKeyValueString, modifiedElementMergeKeyValueString): + if !diffOptions.IgnoreChangesAndAdditions { + patch = append(patch, modifiedElement) + } + modifiedIndex++ + // only original is in bound + case !modifiedInBounds: + fallthrough + // original has additional map + case bothInBounds && ItemRemovedFromModifiedSlice(originalElementMergeKeyValueString, modifiedElementMergeKeyValueString): + if !diffOptions.IgnoreDeletions { + // Item was deleted, so add delete directive + deletionList = append(deletionList, CreateDeleteDirective(mergeKey, originalElementMergeKeyValue)) + } + originalIndex++ + } + } + + return patch, deletionList, nil +} + +// getMapAndMergeKeyValueByIndex return a map in the list and its merge key value given the index of the map. +func getMapAndMergeKeyValueByIndex(index int, mergeKey string, listOfMaps []interface{}) (map[string]interface{}, interface{}, error) { + m, ok := listOfMaps[index].(map[string]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(m, listOfMaps[index]) + } + + val, ok := m[mergeKey] + if !ok { + return nil, nil, mergepatch.ErrNoMergeKey(m, mergeKey) + } + return m, val, nil +} + +// StrategicMergePatch applies a strategic merge patch. The patch and the original document +// must be json encoded content. A patch can be created from an original and a modified document +// by calling CreateStrategicMergePatch. +func StrategicMergePatch(original, patch []byte, dataStruct interface{}) ([]byte, error) { + originalMap, err := handleUnmarshal(original) + if err != nil { + return nil, err + } + patchMap, err := handleUnmarshal(patch) + if err != nil { + return nil, err + } + + result, err := StrategicMergeMapPatch(originalMap, patchMap, dataStruct) + if err != nil { + return nil, err + } + + return json.Marshal(result) +} + +func handleUnmarshal(j []byte) (map[string]interface{}, error) { + if j == nil { + j = []byte("{}") + } + + m := map[string]interface{}{} + err := json.Unmarshal(j, &m) + if err != nil { + return nil, mergepatch.ErrBadJSONDoc + } + return m, nil +} + +// StrategicMergePatch applies a strategic merge patch. The original and patch documents +// must be JSONMap. A patch can be created from an original and modified document by +// calling CreateTwoWayMergeMapPatch. +// Warning: the original and patch JSONMap objects are mutated by this function and should not be reused. +func StrategicMergeMapPatch(original, patch JSONMap, dataStruct interface{}) (JSONMap, error) { + t, err := getTagStructType(dataStruct) + if err != nil { + return nil, err + } + mergeOptions := MergeOptions{ + MergeParallelList: true, + IgnoreUnmatchedNulls: true, + } + return mergeMap(original, patch, t, mergeOptions) +} + +func getTagStructType(dataStruct interface{}) (reflect.Type, error) { + if dataStruct == nil { + return nil, mergepatch.ErrBadArgKind(struct{}{}, nil) + } + + t := reflect.TypeOf(dataStruct) + // Get the underlying type for pointers + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + + if t.Kind() != reflect.Struct { + return nil, mergepatch.ErrBadArgKind(struct{}{}, dataStruct) + } + + return t, nil +} + +// handleDirectiveInMergeMap handles the patch directive when merging 2 maps. +func handleDirectiveInMergeMap(directive interface{}, patch map[string]interface{}) (map[string]interface{}, error) { + if directive == replaceDirective { + // If the patch contains "$patch: replace", don't merge it, just use the + // patch directly. Later on, we can add a single level replace that only + // affects the map that the $patch is in. + delete(patch, directiveMarker) + return patch, nil + } + + if directive == deleteDirective { + // If the patch contains "$patch: delete", don't merge it, just return + // an empty map. + return map[string]interface{}{}, nil + } + + return nil, mergepatch.ErrBadPatchType(directive, patch) +} + +func containsDirectiveMarker(item interface{}) bool { + m, ok := item.(map[string]interface{}) + if ok { + if _, foundDirectiveMarker := m[directiveMarker]; foundDirectiveMarker { + return true + } + } + return false +} + +func mergeKeyValueEqual(left, right interface{}, mergeKey string) (bool, error) { + if len(mergeKey) == 0 { + return left == right, nil + } + typedLeft, ok := left.(map[string]interface{}) + if !ok { + return false, mergepatch.ErrBadArgType(typedLeft, left) + } + typedRight, ok := right.(map[string]interface{}) + if !ok { + return false, mergepatch.ErrBadArgType(typedRight, right) + } + mergeKeyLeft, ok := typedLeft[mergeKey] + if !ok { + return false, mergepatch.ErrNoMergeKey(typedLeft, mergeKey) + } + mergeKeyRight, ok := typedRight[mergeKey] + if !ok { + return false, mergepatch.ErrNoMergeKey(typedRight, mergeKey) + } + return mergeKeyLeft == mergeKeyRight, nil +} + +// extractKey trims the prefix and return the original key +func extractKey(s, prefix string) (string, error) { + substrings := strings.SplitN(s, "/", 2) + if len(substrings) <= 1 || substrings[0] != prefix { + switch prefix { + case deleteFromPrimitiveListDirectivePrefix: + return "", mergepatch.ErrBadPatchFormatForPrimitiveList + case setElementOrderDirectivePrefix: + return "", mergepatch.ErrBadPatchFormatForSetElementOrderList + default: + return "", fmt.Errorf("fail to find unknown prefix %q in %s\n", prefix, s) + } + } + return substrings[1], nil +} + +// validatePatchUsingSetOrderList verifies: +// the relative order of any two items in the setOrderList list matches that in the patch list. +// the items in the patch list must be a subset or the same as the $setElementOrder list (deletions are ignored). +func validatePatchWithSetOrderList(patchList, setOrderList interface{}, mergeKey string) error { + typedSetOrderList, ok := setOrderList.([]interface{}) + if !ok { + return mergepatch.ErrBadPatchFormatForSetElementOrderList + } + typedPatchList, ok := patchList.([]interface{}) + if !ok { + return mergepatch.ErrBadPatchFormatForSetElementOrderList + } + if len(typedSetOrderList) == 0 || len(typedPatchList) == 0 { + return nil + } + + var nonDeleteList, toDeleteList []interface{} + var err error + if len(mergeKey) > 0 { + nonDeleteList, toDeleteList, err = extractToDeleteItems(typedPatchList) + if err != nil { + return err + } + } else { + nonDeleteList = typedPatchList + } + + patchIndex, setOrderIndex := 0, 0 + for patchIndex < len(nonDeleteList) && setOrderIndex < len(typedSetOrderList) { + if containsDirectiveMarker(nonDeleteList[patchIndex]) { + patchIndex++ + continue + } + mergeKeyEqual, err := mergeKeyValueEqual(nonDeleteList[patchIndex], typedSetOrderList[setOrderIndex], mergeKey) + if err != nil { + return err + } + if mergeKeyEqual { + patchIndex++ + } + setOrderIndex++ + } + // If patchIndex is inbound but setOrderIndex if out of bound mean there are items mismatching between the patch list and setElementOrder list. + // the second check is is a sanity check, and should always be true if the first is true. + if patchIndex < len(nonDeleteList) && setOrderIndex >= len(typedSetOrderList) { + return fmt.Errorf("The order in patch list:\n%v\n doesn't match %s list:\n%v\n", typedPatchList, setElementOrderDirectivePrefix, setOrderList) + } + typedPatchList = append(nonDeleteList, toDeleteList...) + return nil +} + +// preprocessDeletionListForMerging preprocesses the deletion list. +// it returns shouldContinue, isDeletionList, noPrefixKey +func preprocessDeletionListForMerging(key string, original map[string]interface{}, + patchVal interface{}, mergeDeletionList bool) (bool, bool, string, error) { + // If found a parallel list for deletion and we are going to merge the list, + // overwrite the key to the original key and set flag isDeleteList + foundParallelListPrefix := strings.HasPrefix(key, deleteFromPrimitiveListDirectivePrefix) + if foundParallelListPrefix { + if !mergeDeletionList { + original[key] = patchVal + return true, false, "", nil + } + originalKey, err := extractKey(key, deleteFromPrimitiveListDirectivePrefix) + return false, true, originalKey, err + } + return false, false, "", nil +} + +// applyRetainKeysDirective looks for a retainKeys directive and applies to original +// - if no directive exists do nothing +// - if directive is found, clear keys in original missing from the directive list +// - validate that all keys present in the patch are present in the retainKeys directive +// note: original may be another patch request, e.g. applying the add+modified patch to the deletions patch. In this case it may have directives +func applyRetainKeysDirective(original, patch map[string]interface{}, options MergeOptions) error { + retainKeysInPatch, foundInPatch := patch[retainKeysDirective] + if !foundInPatch { + return nil + } + // cleanup the directive + delete(patch, retainKeysDirective) + + if !options.MergeParallelList { + // If original is actually a patch, make sure the retainKeys directives are the same in both patches if present in both. + // If not present in the original patch, copy from the modified patch. + retainKeysInOriginal, foundInOriginal := original[retainKeysDirective] + if foundInOriginal { + if !reflect.DeepEqual(retainKeysInOriginal, retainKeysInPatch) { + // This error actually should never happen. + return fmt.Errorf("%v and %v are not deep equal: this may happen when calculating the 3-way diff patch", retainKeysInOriginal, retainKeysInPatch) + } + } else { + original[retainKeysDirective] = retainKeysInPatch + } + return nil + } + + retainKeysList, ok := retainKeysInPatch.([]interface{}) + if !ok { + return mergepatch.ErrBadPatchFormatForRetainKeys + } + + // validate patch to make sure all fields in the patch are present in the retainKeysList. + // The map is used only as a set, the value is never referenced + m := map[interface{}]struct{}{} + for _, v := range retainKeysList { + m[v] = struct{}{} + } + for k, v := range patch { + if v == nil || strings.HasPrefix(k, deleteFromPrimitiveListDirectivePrefix) || + strings.HasPrefix(k, setElementOrderDirectivePrefix) { + continue + } + // If there is an item present in the patch but not in the retainKeys list, + // the patch is invalid. + if _, found := m[k]; !found { + return mergepatch.ErrBadPatchFormatForRetainKeys + } + } + + // clear not present fields + for k := range original { + if _, found := m[k]; !found { + delete(original, k) + } + } + return nil +} + +// mergePatchIntoOriginal processes $setElementOrder list. +// When not merging the directive, it will make sure $setElementOrder list exist only in original. +// When merging the directive, it will try to find the $setElementOrder list and +// its corresponding patch list, validate it and merge it. +// Then, sort them by the relative order in setElementOrder, patch list and live list. +// The precedence is $setElementOrder > order in patch list > order in live list. +// This function will delete the item after merging it to prevent process it again in the future. +// Ref: https://git.k8s.io/community/contributors/design-proposals/preserve-order-in-strategic-merge-patch.md +func mergePatchIntoOriginal(original, patch map[string]interface{}, t reflect.Type, mergeOptions MergeOptions) error { + for key, patchV := range patch { + // Do nothing if there is no ordering directive + if !strings.HasPrefix(key, setElementOrderDirectivePrefix) { + continue + } + + setElementOrderInPatch := patchV + // Copies directive from the second patch (`patch`) to the first patch (`original`) + // and checks they are equal and delete the directive in the second patch + if !mergeOptions.MergeParallelList { + setElementOrderListInOriginal, ok := original[key] + if ok { + // check if the setElementOrder list in original and the one in patch matches + if !reflect.DeepEqual(setElementOrderListInOriginal, setElementOrderInPatch) { + return mergepatch.ErrBadPatchFormatForSetElementOrderList + } + } else { + // move the setElementOrder list from patch to original + original[key] = setElementOrderInPatch + } + } + delete(patch, key) + + var ( + ok bool + originalFieldValue, patchFieldValue, merged []interface{} + patchStrategy, mergeKey string + patchStrategies []string + fieldType reflect.Type + ) + typedSetElementOrderList, ok := setElementOrderInPatch.([]interface{}) + if !ok { + return mergepatch.ErrBadArgType(typedSetElementOrderList, setElementOrderInPatch) + } + // Trim the setElementOrderDirectivePrefix to get the key of the list field in original. + originalKey, err := extractKey(key, setElementOrderDirectivePrefix) + if err != nil { + return err + } + // try to find the list with `originalKey` in `original` and `modified` and merge them. + originalList, foundOriginal := original[originalKey] + patchList, foundPatch := patch[originalKey] + if foundOriginal { + originalFieldValue, ok = originalList.([]interface{}) + if !ok { + return mergepatch.ErrBadArgType(originalFieldValue, originalList) + } + } + if foundPatch { + patchFieldValue, ok = patchList.([]interface{}) + if !ok { + return mergepatch.ErrBadArgType(patchFieldValue, patchList) + } + } + fieldType, patchStrategies, mergeKey, err = forkedjson.LookupPatchMetadata(t, originalKey) + if err != nil { + return err + } + _, patchStrategy, err = extractRetainKeysPatchStrategy(patchStrategies) + if err != nil { + return err + } + // Check for consistency between the element order list and the field it applies to + err = validatePatchWithSetOrderList(patchFieldValue, typedSetElementOrderList, mergeKey) + if err != nil { + return err + } + + switch { + case foundOriginal && !foundPatch: + // no change to list contents + merged = originalFieldValue + case !foundOriginal && foundPatch: + // list was added + merged = patchFieldValue + case foundOriginal && foundPatch: + merged, err = mergeSliceHandler(originalList, patchList, fieldType, + patchStrategy, mergeKey, false, mergeOptions) + if err != nil { + return err + } + case !foundOriginal && !foundPatch: + return nil + } + + // Split all items into patch items and server-only items and then enforce the order. + var patchItems, serverOnlyItems []interface{} + if len(mergeKey) == 0 { + // Primitives doesn't need merge key to do partitioning. + patchItems, serverOnlyItems = partitionPrimitivesByPresentInList(merged, typedSetElementOrderList) + + } else { + // Maps need merge key to do partitioning. + patchItems, serverOnlyItems, err = partitionMapsByPresentInList(merged, typedSetElementOrderList, mergeKey) + if err != nil { + return err + } + } + + elementType, err := sliceElementType(originalFieldValue, patchFieldValue) + if err != nil { + return err + } + kind := elementType.Kind() + // normalize merged list + // typedSetElementOrderList contains all the relative order in typedPatchList, + // so don't need to use typedPatchList + both, err := normalizeElementOrder(patchItems, serverOnlyItems, typedSetElementOrderList, originalFieldValue, mergeKey, kind) + if err != nil { + return err + } + original[originalKey] = both + // delete patch list from patch to prevent process again in the future + delete(patch, originalKey) + } + return nil +} + +// partitionPrimitivesByPresentInList partitions elements into 2 slices, the first containing items present in partitionBy, the other not. +func partitionPrimitivesByPresentInList(original, partitionBy []interface{}) ([]interface{}, []interface{}) { + patch := make([]interface{}, 0, len(original)) + serverOnly := make([]interface{}, 0, len(original)) + inPatch := map[interface{}]bool{} + for _, v := range partitionBy { + inPatch[v] = true + } + for _, v := range original { + if !inPatch[v] { + serverOnly = append(serverOnly, v) + } else { + patch = append(patch, v) + } + } + return patch, serverOnly +} + +// partitionMapsByPresentInList partitions elements into 2 slices, the first containing items present in partitionBy, the other not. +func partitionMapsByPresentInList(original, partitionBy []interface{}, mergeKey string) ([]interface{}, []interface{}, error) { + patch := make([]interface{}, 0, len(original)) + serverOnly := make([]interface{}, 0, len(original)) + for _, v := range original { + typedV, ok := v.(map[string]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(typedV, v) + } + mergeKeyValue, foundMergeKey := typedV[mergeKey] + if !foundMergeKey { + return nil, nil, mergepatch.ErrNoMergeKey(typedV, mergeKey) + } + _, _, found, err := findMapInSliceBasedOnKeyValue(partitionBy, mergeKey, mergeKeyValue) + if err != nil { + return nil, nil, err + } + if !found { + serverOnly = append(serverOnly, v) + } else { + patch = append(patch, v) + } + } + return patch, serverOnly, nil +} + +// Merge fields from a patch map into the original map. Note: This may modify +// both the original map and the patch because getting a deep copy of a map in +// golang is highly non-trivial. +// flag mergeOptions.MergeParallelList controls if using the parallel list to delete or keeping the list. +// If patch contains any null field (e.g. field_1: null) that is not +// present in original, then to propagate it to the end result use +// mergeOptions.IgnoreUnmatchedNulls == false. +func mergeMap(original, patch map[string]interface{}, t reflect.Type, mergeOptions MergeOptions) (map[string]interface{}, error) { + if v, ok := patch[directiveMarker]; ok { + return handleDirectiveInMergeMap(v, patch) + } + + // nil is an accepted value for original to simplify logic in other places. + // If original is nil, replace it with an empty map and then apply the patch. + if original == nil { + original = map[string]interface{}{} + } + + err := applyRetainKeysDirective(original, patch, mergeOptions) + if err != nil { + return nil, err + } + + // Process $setElementOrder list and other lists sharing the same key. + // When not merging the directive, it will make sure $setElementOrder list exist only in original. + // When merging the directive, it will process $setElementOrder and its patch list together. + // This function will delete the merged elements from patch so they will not be reprocessed + err = mergePatchIntoOriginal(original, patch, t, mergeOptions) + if err != nil { + return nil, err + } + + // Start merging the patch into the original. + for k, patchV := range patch { + skipProcessing, isDeleteList, noPrefixKey, err := preprocessDeletionListForMerging(k, original, patchV, mergeOptions.MergeParallelList) + if err != nil { + return nil, err + } + if skipProcessing { + continue + } + if len(noPrefixKey) > 0 { + k = noPrefixKey + } + + // If the value of this key is null, delete the key if it exists in the + // original. Otherwise, check if we want to preserve it or skip it. + // Preserving the null value is useful when we want to send an explicit + // delete to the API server. + if patchV == nil { + if _, ok := original[k]; ok { + delete(original, k) + } + if mergeOptions.IgnoreUnmatchedNulls { + continue + } + } + + _, ok := original[k] + if !ok { + // If it's not in the original document, just take the patch value. + original[k] = patchV + continue + } + + // If the data type is a pointer, resolve the element. + if t.Kind() == reflect.Ptr { + t = t.Elem() + } + + originalType := reflect.TypeOf(original[k]) + patchType := reflect.TypeOf(patchV) + if originalType != patchType { + original[k] = patchV + continue + } + // If they're both maps or lists, recurse into the value. + // First find the fieldPatchStrategy and fieldPatchMergeKey. + fieldType, fieldPatchStrategies, fieldPatchMergeKey, err := forkedjson.LookupPatchMetadata(t, k) + if err != nil { + return nil, err + } + _, patchStrategy, err := extractRetainKeysPatchStrategy(fieldPatchStrategies) + if err != nil { + return nil, err + } + + switch originalType.Kind() { + case reflect.Map: + + original[k], err = mergeMapHandler(original[k], patchV, fieldType, patchStrategy, mergeOptions) + case reflect.Slice: + original[k], err = mergeSliceHandler(original[k], patchV, fieldType, patchStrategy, fieldPatchMergeKey, isDeleteList, mergeOptions) + default: + original[k] = patchV + } + if err != nil { + return nil, err + } + } + return original, nil +} + +// mergeMapHandler handles how to merge `patchV` whose key is `key` with `original` respecting +// fieldPatchStrategy and mergeOptions. +func mergeMapHandler(original, patch interface{}, fieldType reflect.Type, + fieldPatchStrategy string, mergeOptions MergeOptions) (map[string]interface{}, error) { + typedOriginal, typedPatch, err := mapTypeAssertion(original, patch) + if err != nil { + return nil, err + } + + if fieldPatchStrategy != replaceDirective { + return mergeMap(typedOriginal, typedPatch, fieldType, mergeOptions) + } else { + return typedPatch, nil + } +} + +// mergeSliceHandler handles how to merge `patchV` whose key is `key` with `original` respecting +// fieldPatchStrategy, fieldPatchMergeKey, isDeleteList and mergeOptions. +func mergeSliceHandler(original, patch interface{}, fieldType reflect.Type, + fieldPatchStrategy, fieldPatchMergeKey string, isDeleteList bool, mergeOptions MergeOptions) ([]interface{}, error) { + typedOriginal, typedPatch, err := sliceTypeAssertion(original, patch) + if err != nil { + return nil, err + } + + if fieldPatchStrategy == mergeDirective { + elemType := fieldType.Elem() + return mergeSlice(typedOriginal, typedPatch, elemType, fieldPatchMergeKey, mergeOptions, isDeleteList) + } else { + return typedPatch, nil + } +} + +// Merge two slices together. Note: This may modify both the original slice and +// the patch because getting a deep copy of a slice in golang is highly +// non-trivial. +func mergeSlice(original, patch []interface{}, elemType reflect.Type, mergeKey string, mergeOptions MergeOptions, isDeleteList bool) ([]interface{}, error) { + if len(original) == 0 && len(patch) == 0 { + return original, nil + } + + // All the values must be of the same type, but not a list. + t, err := sliceElementType(original, patch) + if err != nil { + return nil, err + } + + var merged []interface{} + kind := t.Kind() + // If the elements are not maps, merge the slices of scalars. + if kind != reflect.Map { + if mergeOptions.MergeParallelList && isDeleteList { + return deleteFromSlice(original, patch), nil + } + // Maybe in the future add a "concat" mode that doesn't + // deduplicate. + both := append(original, patch...) + merged = deduplicateScalars(both) + + } else { + if mergeKey == "" { + return nil, fmt.Errorf("cannot merge lists without merge key for type %s", elemType.Kind().String()) + } + + original, patch, err = mergeSliceWithSpecialElements(original, patch, mergeKey) + if err != nil { + return nil, err + } + + merged, err = mergeSliceWithoutSpecialElements(original, patch, mergeKey, elemType, mergeOptions) + if err != nil { + return nil, err + } + } + + // enforce the order + var patchItems, serverOnlyItems []interface{} + if len(mergeKey) == 0 { + patchItems, serverOnlyItems = partitionPrimitivesByPresentInList(merged, patch) + } else { + patchItems, serverOnlyItems, err = partitionMapsByPresentInList(merged, patch, mergeKey) + if err != nil { + return nil, err + } + } + return normalizeElementOrder(patchItems, serverOnlyItems, patch, original, mergeKey, kind) +} + +// mergeSliceWithSpecialElements handles special elements with directiveMarker +// before merging the slices. It returns a updated `original` and a patch without special elements. +// original and patch must be slices of maps, they should be checked before calling this function. +func mergeSliceWithSpecialElements(original, patch []interface{}, mergeKey string) ([]interface{}, []interface{}, error) { + patchWithoutSpecialElements := []interface{}{} + replace := false + for _, v := range patch { + typedV := v.(map[string]interface{}) + patchType, ok := typedV[directiveMarker] + if !ok { + patchWithoutSpecialElements = append(patchWithoutSpecialElements, v) + } else { + switch patchType { + case deleteDirective: + mergeValue, ok := typedV[mergeKey] + if ok { + var err error + original, err = deleteMatchingEntries(original, mergeKey, mergeValue) + if err != nil { + return nil, nil, err + } + } else { + return nil, nil, mergepatch.ErrNoMergeKey(typedV, mergeKey) + } + case replaceDirective: + replace = true + // Continue iterating through the array to prune any other $patch elements. + case mergeDirective: + return nil, nil, fmt.Errorf("merging lists cannot yet be specified in the patch") + default: + return nil, nil, mergepatch.ErrBadPatchType(patchType, typedV) + } + } + } + if replace { + return patchWithoutSpecialElements, nil, nil + } + return original, patchWithoutSpecialElements, nil +} + +// delete all matching entries (based on merge key) from a merging list +func deleteMatchingEntries(original []interface{}, mergeKey string, mergeValue interface{}) ([]interface{}, error) { + for { + _, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue) + if err != nil { + return nil, err + } + + if !found { + break + } + // Delete the element at originalKey. + original = append(original[:originalKey], original[originalKey+1:]...) + } + return original, nil +} + +// mergeSliceWithoutSpecialElements merges slices with non-special elements. +// original and patch must be slices of maps, they should be checked before calling this function. +func mergeSliceWithoutSpecialElements(original, patch []interface{}, mergeKey string, elemType reflect.Type, mergeOptions MergeOptions) ([]interface{}, error) { + for _, v := range patch { + typedV := v.(map[string]interface{}) + mergeValue, ok := typedV[mergeKey] + if !ok { + return nil, mergepatch.ErrNoMergeKey(typedV, mergeKey) + } + + // If we find a value with this merge key value in original, merge the + // maps. Otherwise append onto original. + originalMap, originalKey, found, err := findMapInSliceBasedOnKeyValue(original, mergeKey, mergeValue) + if err != nil { + return nil, err + } + + if found { + var mergedMaps interface{} + var err error + // Merge into original. + mergedMaps, err = mergeMap(originalMap, typedV, elemType, mergeOptions) + if err != nil { + return nil, err + } + + original[originalKey] = mergedMaps + } else { + original = append(original, v) + } + } + return original, nil +} + +// deleteFromSlice uses the parallel list to delete the items in a list of scalars +func deleteFromSlice(current, toDelete []interface{}) []interface{} { + toDeleteMap := map[interface{}]interface{}{} + processed := make([]interface{}, 0, len(current)) + for _, v := range toDelete { + toDeleteMap[v] = true + } + for _, v := range current { + if _, found := toDeleteMap[v]; !found { + processed = append(processed, v) + } + } + return processed +} + +// This method no longer panics if any element of the slice is not a map. +func findMapInSliceBasedOnKeyValue(m []interface{}, key string, value interface{}) (map[string]interface{}, int, bool, error) { + for k, v := range m { + typedV, ok := v.(map[string]interface{}) + if !ok { + return nil, 0, false, fmt.Errorf("value for key %v is not a map.", k) + } + + valueToMatch, ok := typedV[key] + if ok && valueToMatch == value { + return typedV, k, true, nil + } + } + + return nil, 0, false, nil +} + +// This function takes a JSON map and sorts all the lists that should be merged +// by key. This is needed by tests because in JSON, list order is significant, +// but in Strategic Merge Patch, merge lists do not have significant order. +// Sorting the lists allows for order-insensitive comparison of patched maps. +func sortMergeListsByName(mapJSON []byte, dataStruct interface{}) ([]byte, error) { + var m map[string]interface{} + err := json.Unmarshal(mapJSON, &m) + if err != nil { + return nil, err + } + + newM, err := sortMergeListsByNameMap(m, reflect.TypeOf(dataStruct)) + if err != nil { + return nil, err + } + + return json.Marshal(newM) +} + +// Function sortMergeListsByNameMap recursively sorts the merge lists by its mergeKey in a map. +func sortMergeListsByNameMap(s map[string]interface{}, t reflect.Type) (map[string]interface{}, error) { + newS := map[string]interface{}{} + for k, v := range s { + if k == retainKeysDirective { + typedV, ok := v.([]interface{}) + if !ok { + return nil, mergepatch.ErrBadPatchFormatForRetainKeys + } + v = sortScalars(typedV) + } else if strings.HasPrefix(k, deleteFromPrimitiveListDirectivePrefix) { + typedV, ok := v.([]interface{}) + if !ok { + return nil, mergepatch.ErrBadPatchFormatForPrimitiveList + } + v = sortScalars(typedV) + } else if strings.HasPrefix(k, setElementOrderDirectivePrefix) { + _, ok := v.([]interface{}) + if !ok { + return nil, mergepatch.ErrBadPatchFormatForSetElementOrderList + } + } else if k != directiveMarker { + fieldType, fieldPatchStrategies, fieldPatchMergeKey, err := forkedjson.LookupPatchMetadata(t, k) + if err != nil { + return nil, err + } + _, patchStrategy, err := extractRetainKeysPatchStrategy(fieldPatchStrategies) + if err != nil { + return nil, err + } + + // If v is a map or a merge slice, recurse. + if typedV, ok := v.(map[string]interface{}); ok { + var err error + v, err = sortMergeListsByNameMap(typedV, fieldType) + if err != nil { + return nil, err + } + } else if typedV, ok := v.([]interface{}); ok { + if patchStrategy == mergeDirective { + var err error + v, err = sortMergeListsByNameArray(typedV, fieldType.Elem(), fieldPatchMergeKey, true) + if err != nil { + return nil, err + } + } + } + } + + newS[k] = v + } + + return newS, nil +} + +// Function sortMergeListsByNameMap recursively sorts the merge lists by its mergeKey in an array. +func sortMergeListsByNameArray(s []interface{}, elemType reflect.Type, mergeKey string, recurse bool) ([]interface{}, error) { + if len(s) == 0 { + return s, nil + } + + // We don't support lists of lists yet. + t, err := sliceElementType(s) + if err != nil { + return nil, err + } + + // If the elements are not maps... + if t.Kind() != reflect.Map { + // Sort the elements, because they may have been merged out of order. + return deduplicateAndSortScalars(s), nil + } + + // Elements are maps - if one of the keys of the map is a map or a + // list, we may need to recurse into it. + newS := []interface{}{} + for _, elem := range s { + if recurse { + typedElem := elem.(map[string]interface{}) + newElem, err := sortMergeListsByNameMap(typedElem, elemType) + if err != nil { + return nil, err + } + + newS = append(newS, newElem) + } else { + newS = append(newS, elem) + } + } + + // Sort the maps. + newS = sortMapsBasedOnField(newS, mergeKey) + return newS, nil +} + +func sortMapsBasedOnField(m []interface{}, fieldName string) []interface{} { + mapM := mapSliceFromSlice(m) + ss := SortableSliceOfMaps{mapM, fieldName} + sort.Sort(ss) + newS := sliceFromMapSlice(ss.s) + return newS +} + +func mapSliceFromSlice(m []interface{}) []map[string]interface{} { + newM := []map[string]interface{}{} + for _, v := range m { + vt := v.(map[string]interface{}) + newM = append(newM, vt) + } + + return newM +} + +func sliceFromMapSlice(s []map[string]interface{}) []interface{} { + newS := []interface{}{} + for _, v := range s { + newS = append(newS, v) + } + + return newS +} + +type SortableSliceOfMaps struct { + s []map[string]interface{} + k string // key to sort on +} + +func (ss SortableSliceOfMaps) Len() int { + return len(ss.s) +} + +func (ss SortableSliceOfMaps) Less(i, j int) bool { + iStr := fmt.Sprintf("%v", ss.s[i][ss.k]) + jStr := fmt.Sprintf("%v", ss.s[j][ss.k]) + return sort.StringsAreSorted([]string{iStr, jStr}) +} + +func (ss SortableSliceOfMaps) Swap(i, j int) { + tmp := ss.s[i] + ss.s[i] = ss.s[j] + ss.s[j] = tmp +} + +func deduplicateAndSortScalars(s []interface{}) []interface{} { + s = deduplicateScalars(s) + return sortScalars(s) +} + +func sortScalars(s []interface{}) []interface{} { + ss := SortableSliceOfScalars{s} + sort.Sort(ss) + return ss.s +} + +func deduplicateScalars(s []interface{}) []interface{} { + // Clever algorithm to deduplicate. + length := len(s) - 1 + for i := 0; i < length; i++ { + for j := i + 1; j <= length; j++ { + if s[i] == s[j] { + s[j] = s[length] + s = s[0:length] + length-- + j-- + } + } + } + + return s +} + +type SortableSliceOfScalars struct { + s []interface{} +} + +func (ss SortableSliceOfScalars) Len() int { + return len(ss.s) +} + +func (ss SortableSliceOfScalars) Less(i, j int) bool { + iStr := fmt.Sprintf("%v", ss.s[i]) + jStr := fmt.Sprintf("%v", ss.s[j]) + return sort.StringsAreSorted([]string{iStr, jStr}) +} + +func (ss SortableSliceOfScalars) Swap(i, j int) { + tmp := ss.s[i] + ss.s[i] = ss.s[j] + ss.s[j] = tmp +} + +// Returns the type of the elements of N slice(s). If the type is different, +// another slice or undefined, returns an error. +func sliceElementType(slices ...[]interface{}) (reflect.Type, error) { + var prevType reflect.Type + for _, s := range slices { + // Go through elements of all given slices and make sure they are all the same type. + for _, v := range s { + currentType := reflect.TypeOf(v) + if prevType == nil { + prevType = currentType + // We don't support lists of lists yet. + if prevType.Kind() == reflect.Slice { + return nil, mergepatch.ErrNoListOfLists + } + } else { + if prevType != currentType { + return nil, fmt.Errorf("list element types are not identical: %v", fmt.Sprint(slices)) + } + prevType = currentType + } + } + } + + if prevType == nil { + return nil, fmt.Errorf("no elements in any of the given slices") + } + + return prevType, nil +} + +// MergingMapsHaveConflicts returns true if the left and right JSON interface +// objects overlap with different values in any key. All keys are required to be +// strings. Since patches of the same Type have congruent keys, this is valid +// for multiple patch types. This method supports strategic merge patch semantics. +func MergingMapsHaveConflicts(left, right map[string]interface{}, dataStruct interface{}) (bool, error) { + t, err := getTagStructType(dataStruct) + if err != nil { + return true, err + } + + return mergingMapFieldsHaveConflicts(left, right, t, "", "") +} + +func mergingMapFieldsHaveConflicts( + left, right interface{}, + fieldType reflect.Type, + fieldPatchStrategy, fieldPatchMergeKey string, +) (bool, error) { + switch leftType := left.(type) { + case map[string]interface{}: + rightType, ok := right.(map[string]interface{}) + if !ok { + return true, nil + } + leftMarker, okLeft := leftType[directiveMarker] + rightMarker, okRight := rightType[directiveMarker] + // if one or the other has a directive marker, + // then we need to consider that before looking at the individual keys, + // since a directive operates on the whole map. + if okLeft || okRight { + // if one has a directive marker and the other doesn't, + // then we have a conflict, since one is deleting or replacing the whole map, + // and the other is doing things to individual keys. + if okLeft != okRight { + return true, nil + } + // if they both have markers, but they are not the same directive, + // then we have a conflict because they're doing different things to the map. + if leftMarker != rightMarker { + return true, nil + } + } + if fieldPatchStrategy == replaceDirective { + return false, nil + } + // Check the individual keys. + return mapsHaveConflicts(leftType, rightType, fieldType) + + case []interface{}: + rightType, ok := right.([]interface{}) + if !ok { + return true, nil + } + return slicesHaveConflicts(leftType, rightType, fieldType, fieldPatchStrategy, fieldPatchMergeKey) + + case string, float64, bool, int, int64, nil: + return !reflect.DeepEqual(left, right), nil + default: + return true, fmt.Errorf("unknown type: %v", reflect.TypeOf(left)) + } +} + +func mapsHaveConflicts(typedLeft, typedRight map[string]interface{}, structType reflect.Type) (bool, error) { + for key, leftValue := range typedLeft { + if key != directiveMarker && key != retainKeysDirective { + if rightValue, ok := typedRight[key]; ok { + fieldType, fieldPatchStrategies, fieldPatchMergeKey, err := forkedjson.LookupPatchMetadata(structType, key) + if err != nil { + return true, err + } + _, patchStrategy, err := extractRetainKeysPatchStrategy(fieldPatchStrategies) + if err != nil { + return true, err + } + + if hasConflicts, err := mergingMapFieldsHaveConflicts(leftValue, rightValue, + fieldType, patchStrategy, fieldPatchMergeKey); hasConflicts { + return true, err + } + } + } + } + + return false, nil +} + +func slicesHaveConflicts( + typedLeft, typedRight []interface{}, + fieldType reflect.Type, + fieldPatchStrategy, fieldPatchMergeKey string, +) (bool, error) { + elementType, err := sliceElementType(typedLeft, typedRight) + if err != nil { + return true, err + } + + valueType := fieldType.Elem() + if fieldPatchStrategy == mergeDirective { + // Merging lists of scalars have no conflicts by definition + // So we only need to check further if the elements are maps + if elementType.Kind() != reflect.Map { + return false, nil + } + + // Build a map for each slice and then compare the two maps + leftMap, err := sliceOfMapsToMapOfMaps(typedLeft, fieldPatchMergeKey) + if err != nil { + return true, err + } + + rightMap, err := sliceOfMapsToMapOfMaps(typedRight, fieldPatchMergeKey) + if err != nil { + return true, err + } + + return mapsOfMapsHaveConflicts(leftMap, rightMap, valueType) + } + + // Either we don't have type information, or these are non-merging lists + if len(typedLeft) != len(typedRight) { + return true, nil + } + + // Sort scalar slices to prevent ordering issues + // We have no way to sort non-merging lists of maps + if elementType.Kind() != reflect.Map { + typedLeft = deduplicateAndSortScalars(typedLeft) + typedRight = deduplicateAndSortScalars(typedRight) + } + + // Compare the slices element by element in order + // This test will fail if the slices are not sorted + for i := range typedLeft { + if hasConflicts, err := mergingMapFieldsHaveConflicts(typedLeft[i], typedRight[i], valueType, "", ""); hasConflicts { + return true, err + } + } + + return false, nil +} + +func sliceOfMapsToMapOfMaps(slice []interface{}, mergeKey string) (map[string]interface{}, error) { + result := make(map[string]interface{}, len(slice)) + for _, value := range slice { + typedValue, ok := value.(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("invalid element type in merging list:%v", slice) + } + + mergeValue, ok := typedValue[mergeKey] + if !ok { + return nil, fmt.Errorf("cannot find merge key `%s` in merging list element:%v", mergeKey, typedValue) + } + + result[fmt.Sprintf("%s", mergeValue)] = typedValue + } + + return result, nil +} + +func mapsOfMapsHaveConflicts(typedLeft, typedRight map[string]interface{}, structType reflect.Type) (bool, error) { + for key, leftValue := range typedLeft { + if rightValue, ok := typedRight[key]; ok { + if hasConflicts, err := mergingMapFieldsHaveConflicts(leftValue, rightValue, structType, "", ""); hasConflicts { + return true, err + } + } + } + + return false, nil +} + +// CreateThreeWayMergePatch reconciles a modified configuration with an original configuration, +// while preserving any changes or deletions made to the original configuration in the interim, +// and not overridden by the current configuration. All three documents must be passed to the +// method as json encoded content. It will return a strategic merge patch, or an error if any +// of the documents is invalid, or if there are any preconditions that fail against the modified +// configuration, or, if overwrite is false and there are conflicts between the modified and current +// configurations. Conflicts are defined as keys changed differently from original to modified +// than from original to current. In other words, a conflict occurs if modified changes any key +// in a way that is different from how it is changed in current (e.g., deleting it, changing its +// value). We also propagate values fields that do not exist in original but are explicitly +// defined in modified. +func CreateThreeWayMergePatch(original, modified, current []byte, dataStruct interface{}, overwrite bool, fns ...mergepatch.PreconditionFunc) ([]byte, error) { + originalMap := map[string]interface{}{} + if len(original) > 0 { + if err := json.Unmarshal(original, &originalMap); err != nil { + return nil, mergepatch.ErrBadJSONDoc + } + } + + modifiedMap := map[string]interface{}{} + if len(modified) > 0 { + if err := json.Unmarshal(modified, &modifiedMap); err != nil { + return nil, mergepatch.ErrBadJSONDoc + } + } + + currentMap := map[string]interface{}{} + if len(current) > 0 { + if err := json.Unmarshal(current, ¤tMap); err != nil { + return nil, mergepatch.ErrBadJSONDoc + } + } + + t, err := getTagStructType(dataStruct) + if err != nil { + return nil, err + } + + // The patch is the difference from current to modified without deletions, plus deletions + // from original to modified. To find it, we compute deletions, which are the deletions from + // original to modified, and delta, which is the difference from current to modified without + // deletions, and then apply delta to deletions as a patch, which should be strictly additive. + deltaMapDiffOptions := DiffOptions{ + IgnoreDeletions: true, + SetElementOrder: true, + } + deltaMap, err := diffMaps(currentMap, modifiedMap, t, deltaMapDiffOptions) + if err != nil { + return nil, err + } + deletionsMapDiffOptions := DiffOptions{ + SetElementOrder: true, + IgnoreChangesAndAdditions: true, + } + deletionsMap, err := diffMaps(originalMap, modifiedMap, t, deletionsMapDiffOptions) + if err != nil { + return nil, err + } + + mergeOptions := MergeOptions{} + patchMap, err := mergeMap(deletionsMap, deltaMap, t, mergeOptions) + if err != nil { + return nil, err + } + + // Apply the preconditions to the patch, and return an error if any of them fail. + for _, fn := range fns { + if !fn(patchMap) { + return nil, mergepatch.NewErrPreconditionFailed(patchMap) + } + } + + // If overwrite is false, and the patch contains any keys that were changed differently, + // then return a conflict error. + if !overwrite { + changeMapDiffOptions := DiffOptions{} + changedMap, err := diffMaps(originalMap, currentMap, t, changeMapDiffOptions) + if err != nil { + return nil, err + } + + hasConflicts, err := MergingMapsHaveConflicts(patchMap, changedMap, dataStruct) + if err != nil { + return nil, err + } + + if hasConflicts { + return nil, mergepatch.NewErrConflict(mergepatch.ToYAMLOrError(patchMap), mergepatch.ToYAMLOrError(changedMap)) + } + } + + return json.Marshal(patchMap) +} + +func ItemAddedToModifiedSlice(original, modified string) bool { return original > modified } + +func ItemRemovedFromModifiedSlice(original, modified string) bool { return original < modified } + +func ItemMatchesOriginalAndModifiedSlice(original, modified string) bool { return original == modified } + +func CreateDeleteDirective(mergeKey string, mergeKeyValue interface{}) map[string]interface{} { + return map[string]interface{}{mergeKey: mergeKeyValue, directiveMarker: deleteDirective} +} + +func mapTypeAssertion(original, patch interface{}) (map[string]interface{}, map[string]interface{}, error) { + typedOriginal, ok := original.(map[string]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(typedOriginal, original) + } + typedPatch, ok := patch.(map[string]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(typedPatch, patch) + } + return typedOriginal, typedPatch, nil +} + +func sliceTypeAssertion(original, patch interface{}) ([]interface{}, []interface{}, error) { + typedOriginal, ok := original.([]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(typedOriginal, original) + } + typedPatch, ok := patch.([]interface{}) + if !ok { + return nil, nil, mergepatch.ErrBadArgType(typedPatch, patch) + } + return typedOriginal, typedPatch, nil +} + +// extractRetainKeysPatchStrategy process patch strategy, which is a string may contains multiple +// patch strategies seperated by ",". It returns a boolean var indicating if it has +// retainKeys strategies and a string for the other strategy. +func extractRetainKeysPatchStrategy(strategies []string) (bool, string, error) { + switch len(strategies) { + case 0: + return false, "", nil + case 1: + singleStrategy := strategies[0] + switch singleStrategy { + case retainKeysStrategy: + return true, "", nil + default: + return false, singleStrategy, nil + } + case 2: + switch { + case strategies[0] == retainKeysStrategy: + return true, strategies[1], nil + case strategies[1] == retainKeysStrategy: + return true, strategies[0], nil + default: + return false, "", fmt.Errorf("unexpected patch strategy: %v", strategies) + } + default: + return false, "", fmt.Errorf("unexpected patch strategy: %v", strategies) + } +} + +// hasAdditionalNewField returns if original map has additional key with non-nil value than modified. +func hasAdditionalNewField(original, modified map[string]interface{}) bool { + for k, v := range original { + if v == nil { + continue + } + if _, found := modified[k]; !found { + return true + } + } + return false +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch_test.go b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch_test.go new file mode 100644 index 000000000..507c8cffa --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/strategicpatch/patch_test.go @@ -0,0 +1,6645 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package strategicpatch + +import ( + "encoding/json" + "fmt" + "reflect" + "strings" + "testing" + + "github.com/davecgh/go-spew/spew" + "github.com/ghodss/yaml" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/mergepatch" + "k8s.io/apimachinery/pkg/util/sets" +) + +type SortMergeListTestCases struct { + TestCases []SortMergeListTestCase +} + +type SortMergeListTestCase struct { + Description string + Original map[string]interface{} + Sorted map[string]interface{} +} + +type StrategicMergePatchTestCases struct { + TestCases []StrategicMergePatchTestCase +} + +type StrategicMergePatchTestCase struct { + Description string + StrategicMergePatchTestCaseData +} + +type StrategicMergePatchRawTestCase struct { + Description string + StrategicMergePatchRawTestCaseData +} + +type StrategicMergePatchTestCaseData struct { + // Original is the original object (last-applied config in annotation) + Original map[string]interface{} + // Modified is the modified object (new config we want) + Modified map[string]interface{} + // Current is the current object (live config in the server) + Current map[string]interface{} + // TwoWay is the expected two-way merge patch diff between original and modified + TwoWay map[string]interface{} + // ThreeWay is the expected three-way merge patch + ThreeWay map[string]interface{} + // Result is the expected object after applying the three-way patch on current object. + Result map[string]interface{} + // TwoWayResult is the expected object after applying the two-way patch on current object. + // If nil, Modified is used. + TwoWayResult map[string]interface{} +} + +// The meaning of each field is the same as StrategicMergePatchTestCaseData's. +// The difference is that all the fields in StrategicMergePatchRawTestCaseData are json-encoded data. +type StrategicMergePatchRawTestCaseData struct { + Original []byte + Modified []byte + Current []byte + TwoWay []byte + ThreeWay []byte + Result []byte + TwoWayResult []byte + ExpectedError string +} + +type MergeItem struct { + Name string + Value string + Other string + MergingList []MergeItem `patchStrategy:"merge" patchMergeKey:"name"` + NonMergingList []MergeItem + MergingIntList []int `patchStrategy:"merge"` + NonMergingIntList []int + MergeItemPtr *MergeItem `patchStrategy:"merge" patchMergeKey:"name"` + SimpleMap map[string]string + ReplacingItem runtime.RawExtension `patchStrategy:"replace"` + RetainKeysMap RetainKeysMergeItem `patchStrategy:"retainKeys"` + RetainKeysMergingList []MergeItem `patchStrategy:"merge,retainKeys" patchMergeKey:"name"` +} + +type RetainKeysMergeItem struct { + Name string + Value string + Other string + SimpleMap map[string]string + MergingIntList []int `patchStrategy:"merge"` + MergingList []MergeItem `patchStrategy:"merge" patchMergeKey:"name"` + NonMergingList []MergeItem +} + +var mergeItem MergeItem + +// These are test cases for SortMergeList, used to assert that it (recursively) +// sorts both merging and non merging lists correctly. +var sortMergeListTestCaseData = []byte(` +testCases: + - description: sort one list of maps + original: + mergingList: + - name: 1 + - name: 3 + - name: 2 + sorted: + mergingList: + - name: 1 + - name: 2 + - name: 3 + - description: sort lists of maps but not nested lists of maps + original: + mergingList: + - name: 2 + nonMergingList: + - name: 1 + - name: 3 + - name: 2 + - name: 1 + nonMergingList: + - name: 2 + - name: 1 + sorted: + mergingList: + - name: 1 + nonMergingList: + - name: 2 + - name: 1 + - name: 2 + nonMergingList: + - name: 1 + - name: 3 + - name: 2 + - description: sort lists of maps and nested lists of maps + fieldTypes: + original: + mergingList: + - name: 2 + mergingList: + - name: 1 + - name: 3 + - name: 2 + - name: 1 + mergingList: + - name: 2 + - name: 1 + sorted: + mergingList: + - name: 1 + mergingList: + - name: 1 + - name: 2 + - name: 2 + mergingList: + - name: 1 + - name: 2 + - name: 3 + - description: merging list should NOT sort when nested in non merging list + original: + nonMergingList: + - name: 2 + mergingList: + - name: 1 + - name: 3 + - name: 2 + - name: 1 + mergingList: + - name: 2 + - name: 1 + sorted: + nonMergingList: + - name: 2 + mergingList: + - name: 1 + - name: 3 + - name: 2 + - name: 1 + mergingList: + - name: 2 + - name: 1 + - description: sort very nested list of maps + fieldTypes: + original: + mergingList: + - mergingList: + - mergingList: + - name: 2 + - name: 1 + sorted: + mergingList: + - mergingList: + - mergingList: + - name: 1 + - name: 2 + - description: sort nested lists of ints + original: + mergingList: + - name: 2 + mergingIntList: + - 1 + - 3 + - 2 + - name: 1 + mergingIntList: + - 2 + - 1 + sorted: + mergingList: + - name: 1 + mergingIntList: + - 1 + - 2 + - name: 2 + mergingIntList: + - 1 + - 2 + - 3 + - description: sort nested pointers of ints + original: + mergeItemPtr: + - name: 2 + mergingIntList: + - 1 + - 3 + - 2 + - name: 1 + mergingIntList: + - 2 + - 1 + sorted: + mergeItemPtr: + - name: 1 + mergingIntList: + - 1 + - 2 + - name: 2 + mergingIntList: + - 1 + - 2 + - 3 + - description: sort merging list by pointer + original: + mergeItemPtr: + - name: 1 + - name: 3 + - name: 2 + sorted: + mergeItemPtr: + - name: 1 + - name: 2 + - name: 3 +`) + +func TestSortMergeLists(t *testing.T) { + tc := SortMergeListTestCases{} + err := yaml.Unmarshal(sortMergeListTestCaseData, &tc) + if err != nil { + t.Errorf("can't unmarshal test cases: %s\n", err) + return + } + + for _, c := range tc.TestCases { + got := sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Original), c.Description) + expected := testObjectToJSONOrFail(t, c.Sorted) + if !reflect.DeepEqual(got, expected) { + t.Errorf("error in test case: %s\ncannot sort object:\n%s\nexpected:\n%s\ngot:\n%s\n", + c.Description, mergepatch.ToYAMLOrError(c.Original), mergepatch.ToYAMLOrError(c.Sorted), jsonToYAMLOrError(got)) + } + } +} + +// These are test cases for StrategicMergePatch that cannot be generated using +// CreateTwoWayMergePatch because it may be one of the following cases: +// - not use the replace directive. +// - generate duplicate integers for a merging list patch. +// - generate empty merging lists. +// - use patch format from an old client. +var customStrategicMergePatchTestCaseData = []byte(` +testCases: + - description: unique scalars when merging lists + original: + mergingIntList: + - 1 + - 2 + twoWay: + mergingIntList: + - 2 + - 3 + modified: + mergingIntList: + - 1 + - 2 + - 3 + - description: delete map from nested map + original: + simpleMap: + key1: 1 + key2: 1 + twoWay: + simpleMap: + $patch: delete + modified: + simpleMap: + {} + - description: delete all items from merging list + original: + mergingList: + - name: 1 + - name: 2 + twoWay: + mergingList: + - $patch: replace + modified: + mergingList: [] + - description: merge empty merging lists + original: + mergingList: [] + twoWay: + mergingList: [] + modified: + mergingList: [] + - description: delete all keys from map + original: + name: 1 + value: 1 + twoWay: + $patch: replace + modified: {} + - description: add key and delete all keys from map + original: + name: 1 + value: 1 + twoWay: + other: a + $patch: replace + modified: + other: a + - description: delete all duplicate entries in a merging list + original: + mergingList: + - name: 1 + - name: 1 + - name: 2 + value: a + - name: 3 + - name: 3 + twoWay: + mergingList: + - name: 1 + $patch: delete + - name: 3 + $patch: delete + modified: + mergingList: + - name: 2 + value: a + - description: retainKeys map can add a field when no retainKeys directive present + original: + retainKeysMap: + name: foo + twoWay: + retainKeysMap: + value: bar + modified: + retainKeysMap: + name: foo + value: bar + - description: retainKeys map can change a field when no retainKeys directive present + original: + retainKeysMap: + name: foo + value: a + twoWay: + retainKeysMap: + value: b + modified: + retainKeysMap: + name: foo + value: b + - description: retainKeys map can delete a field when no retainKeys directive present + original: + retainKeysMap: + name: foo + value: a + twoWay: + retainKeysMap: + value: null + modified: + retainKeysMap: + name: foo + - description: retainKeys map merge an empty map + original: + retainKeysMap: + name: foo + value: a + twoWay: + retainKeysMap: {} + modified: + retainKeysMap: + name: foo + value: a + - description: retainKeys list can add a field when no retainKeys directive present + original: + retainKeysMergingList: + - name: bar + - name: foo + twoWay: + retainKeysMergingList: + - name: foo + value: a + modified: + retainKeysMergingList: + - name: bar + - name: foo + value: a + - description: retainKeys list can change a field when no retainKeys directive present + original: + retainKeysMergingList: + - name: bar + - name: foo + value: a + twoWay: + retainKeysMergingList: + - name: foo + value: b + modified: + retainKeysMergingList: + - name: bar + - name: foo + value: b + - description: retainKeys list can delete a field when no retainKeys directive present + original: + retainKeysMergingList: + - name: bar + - name: foo + value: a + twoWay: + retainKeysMergingList: + - name: foo + value: null + modified: + retainKeysMergingList: + - name: bar + - name: foo + - description: preserve the order from the patch in a merging list + original: + mergingList: + - name: 1 + - name: 2 + value: b + - name: 3 + twoWay: + mergingList: + - name: 3 + value: c + - name: 1 + value: a + - name: 2 + other: x + modified: + mergingList: + - name: 3 + value: c + - name: 1 + value: a + - name: 2 + value: b + other: x + - description: preserve the order from the patch in a merging list 2 + original: + mergingList: + - name: 1 + - name: 2 + value: b + - name: 3 + twoWay: + mergingList: + - name: 3 + value: c + - name: 1 + value: a + modified: + mergingList: + - name: 2 + value: b + - name: 3 + value: c + - name: 1 + value: a + - description: preserve the order from the patch in a merging int list + original: + mergingIntList: + - 1 + - 2 + - 3 + twoWay: + mergingIntList: + - 3 + - 1 + - 2 + modified: + mergingIntList: + - 3 + - 1 + - 2 + - description: preserve the order from the patch in a merging int list + original: + mergingIntList: + - 1 + - 2 + - 3 + twoWay: + mergingIntList: + - 3 + - 1 + modified: + mergingIntList: + - 2 + - 3 + - 1 +`) + +var customStrategicMergePatchRawTestCases = []StrategicMergePatchRawTestCase{ + { + Description: "$setElementOrder contains item that is not present in the list to be merged", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 3 + - name: 2 + - name: 1 +mergingList: + - name: 3 + value: 3 + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 3 + value: 3 + - name: 1 + value: 1 +`), + }, + }, + { + Description: "$setElementOrder contains item that is not present in the int list to be merged", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 3 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 3 + - 2 + - 1 +`), + Modified: []byte(` +mergingIntList: + - 3 + - 1 +`), + }, + }, + { + Description: "should check if order in $setElementOrder and patch list match", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 + - name: 3 +mergingList: + - name: 3 + value: 3 + - name: 1 + value: 1 +`), + ExpectedError: "doesn't match", + }, + }, + { + Description: "$setElementOrder contains item that is not present in the int list to be merged", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 3 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 + - 3 +mergingIntList: + - 3 + - 1 +`), + ExpectedError: "doesn't match", + }, + }, +} + +func TestCustomStrategicMergePatch(t *testing.T) { + tc := StrategicMergePatchTestCases{} + err := yaml.Unmarshal(customStrategicMergePatchTestCaseData, &tc) + if err != nil { + t.Errorf("can't unmarshal test cases: %v\n", err) + return + } + + for _, c := range tc.TestCases { + original, expectedTwoWayPatch, _, expectedResult := twoWayTestCaseToJSONOrFail(t, c) + testPatchApplication(t, original, expectedTwoWayPatch, expectedResult, c.Description, "") + } + + for _, c := range customStrategicMergePatchRawTestCases { + original, expectedTwoWayPatch, _, expectedResult := twoWayRawTestCaseToJSONOrFail(t, c) + testPatchApplication(t, original, expectedTwoWayPatch, expectedResult, c.Description, c.ExpectedError) + } +} + +// These are test cases for StrategicMergePatch, to assert that applying a patch +// yields the correct outcome. They are also test cases for CreateTwoWayMergePatch +// and CreateThreeWayMergePatch, to assert that they both generate the correct patch +// for the given set of input documents. +// +var createStrategicMergePatchTestCaseData = []byte(` +testCases: + - description: nil original + twoWay: + name: 1 + value: 1 + modified: + name: 1 + value: 1 + current: + name: 1 + other: a + threeWay: + value: 1 + result: + name: 1 + value: 1 + other: a + - description: nil patch + original: + name: 1 + twoWay: + {} + modified: + name: 1 + current: + name: 1 + threeWay: + {} + result: + name: 1 + - description: add field to map + original: + name: 1 + twoWay: + value: 1 + modified: + name: 1 + value: 1 + current: + name: 1 + other: a + threeWay: + value: 1 + result: + name: 1 + value: 1 + other: a + - description: add field to map with conflict + original: + name: 1 + twoWay: + value: 1 + modified: + name: 1 + value: 1 + current: + name: a + other: a + threeWay: + name: 1 + value: 1 + result: + name: 1 + value: 1 + other: a + - description: add field and delete field from map + original: + name: 1 + twoWay: + name: null + value: 1 + modified: + value: 1 + current: + name: 1 + other: a + threeWay: + name: null + value: 1 + result: + value: 1 + other: a + - description: add field and delete field from map with conflict + original: + name: 1 + twoWay: + name: null + value: 1 + modified: + value: 1 + current: + name: a + other: a + threeWay: + name: null + value: 1 + result: + value: 1 + other: a + - description: delete field from nested map + original: + simpleMap: + key1: 1 + key2: 1 + twoWay: + simpleMap: + key2: null + modified: + simpleMap: + key1: 1 + current: + simpleMap: + key1: 1 + key2: 1 + other: a + threeWay: + simpleMap: + key2: null + result: + simpleMap: + key1: 1 + other: a + - description: delete field from nested map with conflict + original: + simpleMap: + key1: 1 + key2: 1 + twoWay: + simpleMap: + key2: null + modified: + simpleMap: + key1: 1 + current: + simpleMap: + key1: a + key2: 1 + other: a + threeWay: + simpleMap: + key1: 1 + key2: null + result: + simpleMap: + key1: 1 + other: a + - description: delete all fields from map + original: + name: 1 + value: 1 + twoWay: + name: null + value: null + modified: {} + current: + name: 1 + value: 1 + other: a + threeWay: + name: null + value: null + result: + other: a + - description: delete all fields from map with conflict + original: + name: 1 + value: 1 + twoWay: + name: null + value: null + modified: {} + current: + name: 1 + value: a + other: a + threeWay: + name: null + value: null + result: + other: a + - description: add field and delete all fields from map + original: + name: 1 + value: 1 + twoWay: + name: null + value: null + other: a + modified: + other: a + current: + name: 1 + value: 1 + other: a + threeWay: + name: null + value: null + result: + other: a + - description: add field and delete all fields from map with conflict + original: + name: 1 + value: 1 + twoWay: + name: null + value: null + other: a + modified: + other: a + current: + name: 1 + value: 1 + other: b + threeWay: + name: null + value: null + other: a + result: + other: a + - description: replace list of scalars + original: + nonMergingIntList: + - 1 + - 2 + twoWay: + nonMergingIntList: + - 2 + - 3 + modified: + nonMergingIntList: + - 2 + - 3 + current: + nonMergingIntList: + - 1 + - 2 + threeWay: + nonMergingIntList: + - 2 + - 3 + result: + nonMergingIntList: + - 2 + - 3 + - description: replace list of scalars with conflict + original: + nonMergingIntList: + - 1 + - 2 + twoWay: + nonMergingIntList: + - 2 + - 3 + modified: + nonMergingIntList: + - 2 + - 3 + current: + nonMergingIntList: + - 1 + - 4 + threeWay: + nonMergingIntList: + - 2 + - 3 + result: + nonMergingIntList: + - 2 + - 3 + - description: delete all maps from merging list + original: + mergingList: + - name: 1 + - name: 2 + twoWay: + mergingList: + - name: 1 + $patch: delete + - name: 2 + $patch: delete + modified: + mergingList: [] + current: + mergingList: + - name: 1 + - name: 2 + threeWay: + mergingList: + - name: 1 + $patch: delete + - name: 2 + $patch: delete + result: + mergingList: [] + - description: delete all maps from merging list with conflict + original: + mergingList: + - name: 1 + - name: 2 + twoWay: + mergingList: + - name: 1 + $patch: delete + - name: 2 + $patch: delete + modified: + mergingList: [] + current: + mergingList: + - name: 1 + other: a + - name: 2 + other: b + threeWay: + mergingList: + - name: 1 + $patch: delete + - name: 2 + $patch: delete + result: + mergingList: [] + - description: delete all maps from empty merging list + original: + mergingList: + - name: 1 + - name: 2 + twoWay: + mergingList: + - name: 1 + $patch: delete + - name: 2 + $patch: delete + modified: + mergingList: [] + current: + mergingList: [] + threeWay: + mergingList: + - name: 1 + $patch: delete + - name: 2 + $patch: delete + result: + mergingList: [] + - description: merge empty merging lists + original: + mergingList: [] + twoWay: + {} + modified: + mergingList: [] + current: + mergingList: [] + threeWay: + {} + result: + mergingList: [] + - description: defined null values should propagate overwrite current fields (with conflict) + original: + name: 2 + twoWay: + name: 1 + value: 1 + other: null + twoWayResult: + name: 1 + value: 1 + modified: + name: 1 + value: 1 + other: null + current: + name: a + other: a + threeWay: + name: 1 + value: 1 + other: null + result: + name: 1 + value: 1 + - description: defined null values should propagate removing original fields + original: + name: original-name + value: original-value + current: + name: original-name + value: original-value + other: current-other + modified: + name: modified-name + value: null + twoWay: + name: modified-name + value: null + twoWayResult: + name: modified-name + threeWay: + name: modified-name + value: null + result: + name: modified-name + other: current-other + - description: nil patch with retainKeys map + original: + name: a + retainKeysMap: + name: foo + current: + name: a + value: b + retainKeysMap: + name: foo + modified: + name: a + retainKeysMap: + name: foo + twoWay: {} + threeWay: {} + result: + name: a + value: b + retainKeysMap: + name: foo + - description: retainKeys map with no change should not be present + original: + name: a + retainKeysMap: + name: foo + current: + name: a + other: c + retainKeysMap: + name: foo + modified: + name: a + value: b + retainKeysMap: + name: foo + twoWay: + value: b + threeWay: + value: b + result: + name: a + value: b + other: c + retainKeysMap: + name: foo +`) + +var strategicMergePatchRawTestCases = []StrategicMergePatchRawTestCase{ + { + Description: "delete items in lists of scalars", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Modified: []byte(` +mergingIntList: + - 1 + - 2 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 3 + - 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Result: []byte(` +mergingIntList: + - 1 + - 2 + - 4 +`), + }, + }, + { + Description: "delete all duplicate items in lists of scalars", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 + - 3 + - 3 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Modified: []byte(` +mergingIntList: + - 1 + - 2 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 3 + - 3 + - 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Result: []byte(` +mergingIntList: + - 1 + - 2 + - 4 +`), + }, + }, + { + Description: "add and delete items in lists of scalars", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 + - 4 +$deleteFromPrimitiveList/mergingIntList: + - 3 +mergingIntList: + - 4 +`), + Modified: []byte(` +mergingIntList: + - 1 + - 2 + - 4 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 3 + - 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 + - 4 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Result: []byte(` +mergingIntList: + - 1 + - 2 + - 4 +`), + }, + }, + { + Description: "merge lists of maps", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 1 + - name: 2 + - name: 3 +mergingList: + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + Modified: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 1 + - name: 2 + value: 2 + - name: 3 + value: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 1 + - name: 2 + - name: 3 +mergingList: + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + Result: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 3 + value: 3 +`), + }, + }, + { + Description: "merge lists of maps with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 + - name: 3 +mergingList: + - name: 3 + value: 3 +`), + Modified: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 3 + value: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 3 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 + - name: 3 +mergingList: + - name: 2 + value: 2 + - name: 3 + value: 3 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 3 + value: 3 +`), + }, + }, + { + Description: "add field to map in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "add field to map in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "add field to map in merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 3 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Result: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + - name: 3 + value: 2 + other: b +`), + }, + }, + { + Description: "add duplicate field to map in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(`{}`), + Result: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "add an item that already exists in current object in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: a + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 + - name: 3 +mergingList: + - name: 3 +`), + Modified: []byte(` +mergingList: + - name: 1 + value: a + - name: 2 + - name: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + value: a + other: x + - name: 2 + - name: 3 +`), + ThreeWay: []byte(`{}`), + Result: []byte(` +mergingList: + - name: 1 + value: a + other: x + - name: 2 + - name: 3 +`), + }, + }, + { + Description: "add duplicate field to map in merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 3 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 2 + value: 2 +`), + Result: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "replace map field value in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: a +`), + Modified: []byte(` +mergingList: + - name: 1 + value: a + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: a +`), + Result: []byte(` +mergingList: + - name: 1 + value: a + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "replace map field value in merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: a +`), + Modified: []byte(` +mergingList: + - name: 1 + value: a + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + value: 3 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: a +`), + Result: []byte(` +mergingList: + - name: 1 + value: a + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "delete map from merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 2 + other: b +`), + }, + }, + { + Description: "delete map from merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 2 + other: b +`), + }, + }, + { + Description: "delete missing map from merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 2 + other: b +`), + }, + }, + { + Description: "delete missing map from merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 1 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 3 + other: a +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 +mergingList: + - name: 2 + - name: 1 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 2 + - name: 3 + other: a +`), + }, + }, + { + Description: "add map and delete map from merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 3 +mergingList: + - name: 3 + - name: 1 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 + - name: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + - name: 2 + other: b + - name: 4 + other: c +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 3 +mergingList: + - name: 3 + - name: 1 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 2 + other: b + - name: 4 + other: c + - name: 3 +`), + }, + }, + { + Description: "add map and delete map from merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 3 +mergingList: + - name: 3 + - name: 1 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 + - name: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 4 + other: c +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 3 +mergingList: + - name: 2 + - name: 3 + - name: 1 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 4 + other: c + - name: 2 + - name: 3 +`), + }, + }, + { + Description: "delete field from map in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Modified: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "delete field from map in merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Modified: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + value: a + other: a + - name: 2 + value: 2 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 +`), + }, + }, + { + Description: "delete missing field from map in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Modified: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "delete missing field from map in merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null +`), + Modified: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + value: null + - name: 2 + value: 2 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "replace non merging list nested in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + value: 1 + - name: 2 + other: b +`), + }, + }, + { + Description: "replace non merging list nested in merging list with value conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + value: c + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + value: 1 + - name: 2 + other: b +`), + }, + }, + { + Description: "replace non merging list nested in merging list with value conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + value: c + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + value: 1 + - name: 2 + other: b +`), + }, + }, + { + Description: "replace non merging list nested in merging list with deletion conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 2 + value: 2 + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - name: 1 + nonMergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + nonMergingList: + - name: 1 + value: 1 + - name: 2 + other: b +`), + }, + }, + { + Description: "add field to map in merging list nested in merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 1 + - name: 2 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 1 + - name: 2 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 + - name: 2 + other: b +`), + }, + }, + { + Description: "add field to map in merging list nested in merging list with value conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 1 + - name: 2 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 1 + value: a + other: c + - name: 2 + value: b + other: d + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 1 + - name: 2 + name: 1 + mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 1 + value: 1 + other: c + - name: 2 + value: 2 + other: d + - name: 2 + other: b +`), + }, + }, + { + Description: "add field to map in merging list nested in merging list with deletion conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 1 + - name: 2 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 2 + value: 2 + other: d + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 1 + - name: 2 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 1 + value: 1 + - name: 2 + value: 2 + other: d + - name: 2 + other: b +`), + }, + }, + + { + Description: "add field to map in merging list nested in merging list with deletion conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 2 + - name: 1 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergingList: + - name: 1 + mergingList: + - name: 2 + value: 2 + - name: 1 + value: 1 + - name: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 2 + value: 2 + other: d + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 2 +mergingList: + - $setElementOrder/mergingList: + - name: 2 + - name: 1 + name: 1 + mergingList: + - name: 1 + value: 1 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + mergingList: + - name: 2 + value: 2 + other: d + - name: 1 + value: 1 + - name: 2 + other: b +`), + }, + }, + { + Description: "add map to merging list by pointer", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergeItemPtr: + - name: 1 +`), + TwoWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - name: 2 +`), + Modified: []byte(` +mergeItemPtr: + - name: 1 + - name: 2 +`), + Current: []byte(` +mergeItemPtr: + - name: 1 + other: a + - name: 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - name: 2 +`), + Result: []byte(` +mergeItemPtr: + - name: 1 + other: a + - name: 2 + - name: 3 +`), + }, + }, + { + Description: "add map to merging list by pointer with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergeItemPtr: + - name: 1 +`), + TwoWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - name: 2 +`), + Modified: []byte(` +mergeItemPtr: + - name: 1 + - name: 2 +`), + Current: []byte(` +mergeItemPtr: + - name: 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - name: 1 + - name: 2 +`), + Result: []byte(` +mergeItemPtr: + - name: 1 + - name: 2 + - name: 3 +`), + }, + }, + { + Description: "add field to map in merging list by pointer", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergeItemPtr: + - name: 1 + mergeItemPtr: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - $setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 + name: 1 + mergeItemPtr: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergeItemPtr: + - name: 1 + mergeItemPtr: + - name: 1 + value: 1 + - name: 2 + value: 2 + - name: 2 +`), + Current: []byte(` +mergeItemPtr: + - name: 1 + other: a + mergeItemPtr: + - name: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - $setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 + name: 1 + mergeItemPtr: + - name: 1 + value: 1 +`), + Result: []byte(` +mergeItemPtr: + - name: 1 + other: a + mergeItemPtr: + - name: 1 + value: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 2 + other: b +`), + }, + }, + { + Description: "add field to map in merging list by pointer with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergeItemPtr: + - name: 1 + mergeItemPtr: + - name: 1 + - name: 2 + value: 2 + - name: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - $setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 + name: 1 + mergeItemPtr: + - name: 1 + value: 1 +`), + Modified: []byte(` +mergeItemPtr: + - name: 1 + mergeItemPtr: + - name: 1 + value: 1 + - name: 2 + value: 2 + - name: 2 +`), + Current: []byte(` +mergeItemPtr: + - name: 1 + other: a + mergeItemPtr: + - name: 1 + value: a + - name: 2 + value: 2 + other: b + - name: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 +mergeItemPtr: + - $setElementOrder/mergeItemPtr: + - name: 1 + - name: 2 + name: 1 + mergeItemPtr: + - name: 1 + value: 1 +`), + Result: []byte(` +mergeItemPtr: + - name: 1 + other: a + mergeItemPtr: + - name: 1 + value: 1 + - name: 2 + value: 2 + other: b + - name: 2 + other: b +`), + }, + }, + { + Description: "merge lists of scalars", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: +- 1 +- 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: +- 1 +- 2 +- 3 +mergingIntList: +- 3 +`), + Modified: []byte(` +mergingIntList: +- 1 +- 2 +- 3 +`), + Current: []byte(` +mergingIntList: +- 1 +- 2 +- 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: +- 1 +- 2 +- 3 +mergingIntList: +- 3 +`), + Result: []byte(` +mergingIntList: +- 1 +- 2 +- 3 +- 4 +`), + }, + }, + { + Description: "add duplicate field to map in merging int list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 2 + - 3 +mergingIntList: + - 3 +`), + Modified: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + ThreeWay: []byte(`{}`), + Result: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + }, + }, + // test case for setElementOrder + { + Description: "add an item in a list of primitives and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: +- 1 +- 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: +- 3 +- 1 +- 2 +mergingIntList: +- 3 +`), + Modified: []byte(` +mergingIntList: +- 3 +- 1 +- 2 +`), + Current: []byte(` +mergingIntList: +- 1 +- 4 +- 2 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: +- 3 +- 1 +- 2 +mergingIntList: +- 3 +`), + Result: []byte(` +mergingIntList: +- 3 +- 1 +- 4 +- 2 +`), + }, + }, + { + Description: "delete an item in a list of primitives and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: +- 1 +- 2 +- 3 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: +- 2 +- 1 +$deleteFromPrimitiveList/mergingIntList: +- 3 +`), + Modified: []byte(` +mergingIntList: +- 2 +- 1 +`), + Current: []byte(` +mergingIntList: +- 1 +- 2 +- 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: +- 2 +- 1 +$deleteFromPrimitiveList/mergingIntList: +- 3 +`), + Result: []byte(` +mergingIntList: +- 2 +- 1 +`), + }, + }, + { + Description: "add an item in a list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 3 + - name: 1 + - name: 2 +mergingList: + - name: 3 + value: 3 +`), + Modified: []byte(` +mergingList: + - name: 3 + value: 3 + - name: 1 + - name: 2 + value: 2 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 3 + - name: 1 + - name: 2 +mergingList: + - name: 3 + value: 3 +`), + Result: []byte(` +mergingList: + - name: 3 + value: 3 + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + }, + }, + { + Description: "add multiple items in a list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 4 + - name: 2 + - name: 3 +mergingList: + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + Modified: []byte(` +mergingList: + - name: 1 + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 3 + value: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 1 + - name: 4 + - name: 2 + - name: 3 +mergingList: + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + Result: []byte(` +mergingList: + - name: 1 + other: a + - name: 4 + value: 4 + - name: 2 + value: 2 + other: b + - name: 3 + value: 3 +`), + }, + }, + { + Description: "delete an item in a list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 + value: 3 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 1 +mergingList: + - name: 3 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 2 + value: 2 + - name: 1 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 3 + value: 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 1 +mergingList: + - name: 3 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 2 + value: 2 + other: b + - name: 1 + other: a +`), + }, + }, + { + Description: "change an item in a list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 + value: 3 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 3 + - name: 1 +mergingList: + - name: 3 + value: x +`), + Modified: []byte(` +mergingList: + - name: 2 + value: 2 + - name: 3 + value: x + - name: 1 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 3 + value: 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 3 + - name: 1 +mergingList: + - name: 3 + value: x +`), + Result: []byte(` +mergingList: + - name: 2 + value: 2 + other: b + - name: 3 + value: x + - name: 1 + other: a +`), + }, + }, + { + Description: "add and delete an item in a list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 + value: 3 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 2 + - name: 1 +mergingList: + - name: 4 + value: 4 + - name: 3 + $patch: delete +`), + Modified: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 1 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + other: b + - name: 3 + value: 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 2 + - name: 1 +mergingList: + - name: 4 + value: 4 + - name: 3 + $patch: delete +`), + Result: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 2 + value: 2 + other: b + - name: 1 + other: a +`), + }, + }, + { + Description: "set elements order in a list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 + value: 3 + - name: 4 + value: 4 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 2 + - name: 3 + - name: 1 +`), + Modified: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 3 + value: 3 + - name: 1 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 3 + value: 3 + - name: 4 + value: 4 + - name: 2 + value: 2 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 2 + - name: 3 + - name: 1 +`), + Result: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 3 + value: 3 + - name: 1 + other: a +`), + }, + }, + { + Description: "set elements order in a list with server-only items", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 3 + value: 3 + - name: 4 + value: 4 + - name: 2 + value: 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 2 + - name: 3 + - name: 1 +`), + Modified: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 3 + value: 3 + - name: 1 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 3 + value: 3 + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 9 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 4 + - name: 2 + - name: 3 + - name: 1 +`), + Result: []byte(` +mergingList: + - name: 4 + value: 4 + - name: 2 + value: 2 + - name: 3 + value: 3 + - name: 1 + other: a + - name: 9 +`), + }, + }, + { + Description: "set elements order in a list with server-only items 2", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 3 + value: 3 + - name: 4 + value: 4 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 1 + - name: 4 + - name: 3 +`), + Modified: []byte(` +mergingList: + - name: 2 + value: 2 + - name: 1 + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + - name: 9 + - name: 3 + value: 3 + - name: 4 + value: 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 1 + - name: 4 + - name: 3 +`), + Result: []byte(` +mergingList: + - name: 2 + value: 2 + - name: 1 + other: a + - name: 9 + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + }, + }, + { + Description: "set elements order in a list with server-only items 3", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: + - name: 1 + - name: 2 + value: 2 + - name: 3 + value: 3 + - name: 4 + value: 4 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 1 + - name: 4 + - name: 3 +`), + Modified: []byte(` +mergingList: + - name: 2 + value: 2 + - name: 1 + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + Current: []byte(` +mergingList: + - name: 1 + other: a + - name: 2 + value: 2 + - name: 7 + - name: 9 + - name: 8 + - name: 3 + value: 3 + - name: 4 + value: 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: + - name: 2 + - name: 1 + - name: 4 + - name: 3 +`), + Result: []byte(` +mergingList: + - name: 2 + value: 2 + - name: 1 + other: a + - name: 7 + - name: 9 + - name: 8 + - name: 4 + value: 4 + - name: 3 + value: 3 +`), + }, + }, + { + Description: "add an item in a int list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 3 + - 1 + - 2 +mergingIntList: + - 3 +`), + Modified: []byte(` +mergingIntList: + - 3 + - 1 + - 2 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 3 + - 1 + - 2 +mergingIntList: + - 3 +`), + Result: []byte(` +mergingIntList: + - 3 + - 1 + - 2 +`), + }, + }, + { + Description: "add multiple items in a int list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 4 + - 2 + - 3 +mergingIntList: + - 4 + - 3 +`), + Modified: []byte(` +mergingIntList: + - 1 + - 4 + - 2 + - 3 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 1 + - 4 + - 2 + - 3 +mergingIntList: + - 4 + - 3 +`), + Result: []byte(` +mergingIntList: + - 1 + - 4 + - 2 + - 3 +`), + }, + }, + { + Description: "delete an item in a int list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 3 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 2 + - 1 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Modified: []byte(` +mergingIntList: + - 2 + - 1 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 2 + - 1 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Result: []byte(` +mergingIntList: + - 2 + - 1 +`), + }, + }, + { + Description: "add and delete an item in a int list and preserve order", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 3 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 4 + - 2 + - 1 +mergingIntList: + - 4 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Modified: []byte(` +mergingIntList: + - 4 + - 2 + - 1 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 4 + - 2 + - 1 +mergingIntList: + - 4 +$deleteFromPrimitiveList/mergingIntList: + - 3 +`), + Result: []byte(` +mergingIntList: + - 4 + - 2 + - 1 +`), + }, + }, + { + Description: "set elements order in a int list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 3 + - 4 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + Modified: []byte(` +mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + Current: []byte(` +mergingIntList: + - 1 + - 3 + - 4 + - 2 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + Result: []byte(` +mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + }, + }, + { + Description: "set elements order in a int list with server-only items", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 3 + - 4 + - 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + Modified: []byte(` +mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + Current: []byte(` +mergingIntList: + - 1 + - 3 + - 4 + - 2 + - 9 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 4 + - 2 + - 3 + - 1 +`), + Result: []byte(` +mergingIntList: + - 4 + - 2 + - 3 + - 1 + - 9 +`), + }, + }, + { + Description: "set elements order in a int list with server-only items 2", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 + - 3 + - 4 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 2 + - 1 + - 4 + - 3 +`), + Modified: []byte(` +mergingIntList: + - 2 + - 1 + - 4 + - 3 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 9 + - 3 + - 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 2 + - 1 + - 4 + - 3 +`), + Result: []byte(` +mergingIntList: + - 2 + - 1 + - 9 + - 4 + - 3 +`), + }, + }, + { + Description: "set elements order in a int list with server-only items 3", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: + - 1 + - 2 + - 3 + - 4 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: + - 2 + - 1 + - 4 + - 3 +`), + Modified: []byte(` +mergingIntList: + - 2 + - 1 + - 4 + - 3 +`), + Current: []byte(` +mergingIntList: + - 1 + - 2 + - 7 + - 9 + - 8 + - 3 + - 4 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: + - 2 + - 1 + - 4 + - 3 +`), + Result: []byte(` +mergingIntList: + - 2 + - 1 + - 7 + - 9 + - 8 + - 4 + - 3 +`), + }, + }, + { + // This test case is used just to demonstrate the behavior when dealing with a list with duplicate + Description: "behavior of set element order for a merging list with duplicate", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingList: +- name: 1 +- name: 2 + value: dup1 +- name: 3 +- name: 2 + value: dup2 +- name: 4 +`), + Current: []byte(` +mergingList: +- name: 1 +- name: 2 + value: dup1 +- name: 3 +- name: 2 + value: dup2 +- name: 4 +`), + Modified: []byte(` +mergingList: +- name: 2 + value: dup1 +- name: 1 +- name: 4 +- name: 3 +- name: 2 + value: dup2 +`), + TwoWay: []byte(` +$setElementOrder/mergingList: +- name: 2 +- name: 1 +- name: 4 +- name: 3 +- name: 2 +`), + TwoWayResult: []byte(` +mergingList: +- name: 2 + value: dup1 +- name: 2 + value: dup2 +- name: 1 +- name: 4 +- name: 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingList: +- name: 2 +- name: 1 +- name: 4 +- name: 3 +- name: 2 +`), + Result: []byte(` +mergingList: +- name: 2 + value: dup1 +- name: 2 + value: dup2 +- name: 1 +- name: 4 +- name: 3 +`), + }, + }, + { + // This test case is used just to demonstrate the behavior when dealing with a list with duplicate + Description: "behavior of set element order for a merging int list with duplicate", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +mergingIntList: +- 1 +- 2 +- 3 +- 2 +- 4 +`), + Current: []byte(` +mergingIntList: +- 1 +- 2 +- 3 +- 2 +- 4 +`), + Modified: []byte(` +mergingIntList: +- 2 +- 1 +- 4 +- 3 +- 2 +`), + TwoWay: []byte(` +$setElementOrder/mergingIntList: +- 2 +- 1 +- 4 +- 3 +- 2 +`), + TwoWayResult: []byte(` +mergingIntList: +- 2 +- 2 +- 1 +- 4 +- 3 +`), + ThreeWay: []byte(` +$setElementOrder/mergingIntList: +- 2 +- 1 +- 4 +- 3 +- 2 +`), + Result: []byte(` +mergingIntList: +- 2 +- 2 +- 1 +- 4 +- 3 +`), + }, + }, + { + Description: "retainKeys map should clear defaulted field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(`{}`), + Current: []byte(` +retainKeysMap: + value: foo +`), + Modified: []byte(` +retainKeysMap: + other: bar +`), + TwoWay: []byte(` +retainKeysMap: + other: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - other + other: bar +`), + Result: []byte(` +retainKeysMap: + other: bar +`), + }, + }, + { + Description: "retainKeys map should clear defaulted field with conflict (discriminated union)", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(`{}`), + Current: []byte(` +retainKeysMap: + name: type1 + value: foo +`), + Modified: []byte(` +retainKeysMap: + name: type2 + other: bar +`), + TwoWay: []byte(` +retainKeysMap: + name: type2 + other: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - other + name: type2 + other: bar +`), + Result: []byte(` +retainKeysMap: + name: type2 + other: bar +`), + }, + }, + { + Description: "retainKeys map adds a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo +`), + Current: []byte(` +retainKeysMap: + name: foo +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar +`), + }, + }, + { + Description: "retainKeys map adds a field and clear a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo +`), + Current: []byte(` +retainKeysMap: + name: foo + other: a +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar +`), + }, + }, + { + Description: "retainKeys map deletes a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar +`), + Modified: []byte(` +retainKeysMap: + name: foo +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + value: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + value: null +`), + Result: []byte(` +retainKeysMap: + name: foo +`), + }, + }, + { + Description: "retainKeys map deletes a field and clears a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + other: a +`), + Modified: []byte(` +retainKeysMap: + name: foo +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + value: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + value: null +`), + Result: []byte(` +retainKeysMap: + name: foo +`), + }, + }, + { + Description: "retainKeys map clears a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + other: a +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar +`), + TwoWay: []byte(`{}`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar +`), + }, + }, + { + Description: "retainKeys map nested map with no change", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + simpleMap: + key1: a +`), + Current: []byte(` +retainKeysMap: + name: foo + simpleMap: + key1: a +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a +`), + }, + }, + { + Description: "retainKeys map adds a field in a nested map", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key3: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key2: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key2: b +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key2: b +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key2: b + key3: c +`), + }, + }, + { + Description: "retainKeys map deletes a field in a nested map", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key2: b +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key2: b + key3: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key2: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key2: null +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key3: c +`), + }, + }, + { + Description: "retainKeys map changes a field in a nested map", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key2: b +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: a + key2: b + key3: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: x + key2: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key1: x +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key1: x +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: x + key2: b + key3: c +`), + }, + }, + { + Description: "retainKeys map changes a field in a nested map with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: old + key2: b +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: new + key2: b + key3: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: modified + key2: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key1: modified +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - simpleMap + - value + simpleMap: + key1: modified +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + simpleMap: + key1: modified + key2: b + key3: c +`), + }, + }, + { + Description: "retainKeys map replaces non-merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: b +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: c + - name: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - nonMergingList + - value + nonMergingList: + - name: a + - name: c + - name: b +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - nonMergingList + - value + nonMergingList: + - name: a + - name: c + - name: b +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: c + - name: b +`), + }, + }, + { + Description: "retainKeys map nested non-merging list with no change", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - nonMergingList + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - nonMergingList + - value + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: b +`), + }, + }, + { + Description: "retainKeys map nested non-merging list with no change with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b + - name: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - nonMergingList + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - nonMergingList + - value + value: bar + nonMergingList: + - name: a + - name: b +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + nonMergingList: + - name: a + - name: b +`), + }, + }, + { + Description: "retainKeys map deletes nested non-merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar + nonMergingList: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar + nonMergingList: null +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar +`), + }, + }, + { + Description: "retainKeys map delete nested non-merging list with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + nonMergingList: + - name: a + - name: b + - name: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar + nonMergingList: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar + nonMergingList: null +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar +`), + }, + }, + { + Description: "retainKeys map nested merging int list with no change", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + mergingIntList: + - 1 + - 2 +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingIntList + - name + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingIntList + - name + - value + $setElementOrder/mergingIntList: + - 1 + - 2 + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + mergingIntList: + - 1 + - 2 + - 3 +`), + }, + }, + { + Description: "retainKeys map adds an item in nested merging int list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 +`), + Modified: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 4 +`), + TwoWay: []byte(` +retainKeysMap: + $setElementOrder/mergingIntList: + - 1 + - 2 + - 4 + $retainKeys: + - mergingIntList + - name + mergingIntList: + - 4 +`), + ThreeWay: []byte(` +retainKeysMap: + $setElementOrder/mergingIntList: + - 1 + - 2 + - 4 + $retainKeys: + - mergingIntList + - name + mergingIntList: + - 4 +`), + Result: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 4 + - 3 +`), + }, + }, + { + Description: "retainKeys map deletes an item in nested merging int list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 + - 4 +`), + Modified: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 3 +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingIntList + - name + $deleteFromPrimitiveList/mergingIntList: + - 2 + $setElementOrder/mergingIntList: + - 1 + - 3 +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingIntList + - name + $deleteFromPrimitiveList/mergingIntList: + - 2 + $setElementOrder/mergingIntList: + - 1 + - 3 +`), + Result: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 3 + - 4 +`), + }, + }, + { + Description: "retainKeys map adds an item and deletes an item in nested merging int list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 + - 4 +`), + Modified: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 3 + - 5 +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingIntList + - name + mergingIntList: + - 5 + $deleteFromPrimitiveList/mergingIntList: + - 2 + $setElementOrder/mergingIntList: + - 1 + - 3 + - 5 +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingIntList + - name + mergingIntList: + - 5 + $deleteFromPrimitiveList/mergingIntList: + - 2 + $setElementOrder/mergingIntList: + - 1 + - 3 + - 5 +`), + Result: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 3 + - 5 + - 4 +`), + }, + }, + { + Description: "retainKeys map deletes nested merging int list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingIntList: + - 1 + - 2 + - 3 +`), + Modified: []byte(` +retainKeysMap: + name: foo +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + mergingIntList: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + mergingIntList: null +`), + Result: []byte(` +retainKeysMap: + name: foo +`), + }, + }, + { + Description: "retainKeys map nested merging list with no change", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + - name: c +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar + mergingList: + - name: a + - name: b +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + - value + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + - value + $setElementOrder/mergingList: + - name: a + - name: b + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar + mergingList: + - name: a + - name: b + - name: c +`), + }, + }, + { + Description: "retainKeys map adds an item in nested merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + - name: x +`), + Modified: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + - name: c +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + $setElementOrder/mergingList: + - name: a + - name: b + - name: c + mergingList: + - name: c +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + $setElementOrder/mergingList: + - name: a + - name: b + - name: c + mergingList: + - name: c +`), + Result: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + - name: c + - name: x +`), + }, + }, + { + Description: "retainKeys map changes an item in nested merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + value: foo +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + value: foo + - name: x +`), + Modified: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + value: bar +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + $setElementOrder/mergingList: + - name: a + - name: b + mergingList: + - name: b + value: bar +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + $setElementOrder/mergingList: + - name: a + - name: b + mergingList: + - name: b + value: bar +`), + Result: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + value: bar + - name: x +`), + }, + }, + { + Description: "retainKeys map deletes nested merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b +`), + Modified: []byte(` +retainKeysMap: + name: foo + value: bar +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar + mergingList: null +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - name + - value + value: bar + mergingList: null +`), + Result: []byte(` +retainKeysMap: + name: foo + value: bar +`), + }, + }, + { + Description: "retainKeys map deletes an item in nested merging list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b +`), + Current: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: b + - name: x +`), + Modified: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a +`), + TwoWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + $setElementOrder/mergingList: + - name: a + mergingList: + - name: b + $patch: delete +`), + ThreeWay: []byte(` +retainKeysMap: + $retainKeys: + - mergingList + - name + $setElementOrder/mergingList: + - name: a + mergingList: + - name: b + $patch: delete +`), + Result: []byte(` +retainKeysMap: + name: foo + mergingList: + - name: a + - name: x +`), + }, + }, + { + Description: "retainKeys list of maps clears a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a + other: x +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + TwoWay: []byte(`{}`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + }, + }, + { + Description: "retainKeys list of maps clears a field with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: old +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: new + other: x +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: modified +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: modified +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: modified +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: modified +`), + }, + }, + { + Description: "retainKeys list of maps changes a field and clear a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: old +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: old + other: x +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: new +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: new +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: new +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: new +`), + }, + }, + { + Description: "retainKeys list of maps changes a field and clear a field with conflict", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: old +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: modified + other: x +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: new +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: new +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: new +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: new +`), + }, + }, + { + Description: "retainKeys list of maps adds a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: a +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: a +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + }, + }, + { + Description: "retainKeys list of maps adds a field and clear a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + other: x +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: a +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + - value + name: foo + value: a +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + }, + }, + { + Description: "retainKeys list of maps deletes a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + name: foo + value: null +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + name: foo + value: null +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + }, + }, + { + Description: "retainKeys list of maps deletes a field and clear a field", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a +`), + Current: []byte(` +retainKeysMergingList: +- name: bar +- name: foo + value: a + other: x +`), + Modified: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + TwoWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + name: foo + value: null +`), + ThreeWay: []byte(` +$setElementOrder/retainKeysMergingList: + - name: bar + - name: foo +retainKeysMergingList: +- $retainKeys: + - name + name: foo + value: null +`), + Result: []byte(` +retainKeysMergingList: +- name: bar +- name: foo +`), + }, + }, +} + +func TestStrategicMergePatch(t *testing.T) { + testStrategicMergePatchWithCustomArguments(t, "bad original", + "", "{}", mergeItem, mergepatch.ErrBadJSONDoc) + testStrategicMergePatchWithCustomArguments(t, "bad patch", + "{}", "", mergeItem, mergepatch.ErrBadJSONDoc) + testStrategicMergePatchWithCustomArguments(t, "bad struct", + "{}", "{}", []byte(""), mergepatch.ErrBadArgKind(struct{}{}, []byte{})) + testStrategicMergePatchWithCustomArguments(t, "nil struct", + "{}", "{}", nil, mergepatch.ErrBadArgKind(struct{}{}, nil)) + + tc := StrategicMergePatchTestCases{} + err := yaml.Unmarshal(createStrategicMergePatchTestCaseData, &tc) + if err != nil { + t.Errorf("can't unmarshal test cases: %s\n", err) + return + } + + for _, c := range tc.TestCases { + testTwoWayPatch(t, c) + testThreeWayPatch(t, c) + } + + for _, c := range strategicMergePatchRawTestCases { + testTwoWayPatchForRawTestCase(t, c) + testThreeWayPatchForRawTestCase(t, c) + } +} + +func testStrategicMergePatchWithCustomArguments(t *testing.T, description, original, patch string, dataStruct interface{}, err error) { + _, err2 := StrategicMergePatch([]byte(original), []byte(patch), dataStruct) + if err2 != err { + if err2 == nil { + t.Errorf("expected error: %s\ndid not occur in test case: %s", err, description) + return + } + + if err == nil || err2.Error() != err.Error() { + t.Errorf("unexpected error: %s\noccurred in test case: %s", err2, description) + return + } + } +} + +func testTwoWayPatch(t *testing.T, c StrategicMergePatchTestCase) { + original, expectedPatch, modified, expectedResult := twoWayTestCaseToJSONOrFail(t, c) + + actualPatch, err := CreateTwoWayMergePatch(original, modified, mergeItem) + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot create two way patch: %s:\n%s\n", + err, c.Description, original, mergepatch.ToYAMLOrError(c.StrategicMergePatchTestCaseData)) + return + } + + testPatchCreation(t, expectedPatch, actualPatch, c.Description) + testPatchApplication(t, original, actualPatch, expectedResult, c.Description, "") +} + +func testTwoWayPatchForRawTestCase(t *testing.T, c StrategicMergePatchRawTestCase) { + original, expectedPatch, modified, expectedResult := twoWayRawTestCaseToJSONOrFail(t, c) + + actualPatch, err := CreateTwoWayMergePatch(original, modified, mergeItem) + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot create two way patch:\noriginal:%s\ntwoWay:%s\nmodified:%s\ncurrent:%s\nthreeWay:%s\nresult:%s\n", + err, c.Description, c.Original, c.TwoWay, c.Modified, c.Current, c.ThreeWay, c.Result) + return + } + + testPatchCreation(t, expectedPatch, actualPatch, c.Description) + testPatchApplication(t, original, actualPatch, expectedResult, c.Description, c.ExpectedError) +} + +func twoWayTestCaseToJSONOrFail(t *testing.T, c StrategicMergePatchTestCase) ([]byte, []byte, []byte, []byte) { + expectedResult := c.TwoWayResult + if expectedResult == nil { + expectedResult = c.Modified + } + return sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Original), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, c.TwoWay), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Modified), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, expectedResult), c.Description) +} + +func twoWayRawTestCaseToJSONOrFail(t *testing.T, c StrategicMergePatchRawTestCase) ([]byte, []byte, []byte, []byte) { + expectedResult := c.TwoWayResult + if expectedResult == nil { + expectedResult = c.Modified + } + return yamlToJSONOrError(t, c.Original), + yamlToJSONOrError(t, c.TwoWay), + yamlToJSONOrError(t, c.Modified), + yamlToJSONOrError(t, expectedResult) +} + +func testThreeWayPatch(t *testing.T, c StrategicMergePatchTestCase) { + original, modified, current, expected, result := threeWayTestCaseToJSONOrFail(t, c) + actual, err := CreateThreeWayMergePatch(original, modified, current, mergeItem, false) + if err != nil { + if !mergepatch.IsConflict(err) { + t.Errorf("error: %s\nin test case: %s\ncannot create three way patch:\n%s\n", + err, c.Description, mergepatch.ToYAMLOrError(c.StrategicMergePatchTestCaseData)) + return + } + + if !strings.Contains(c.Description, "conflict") { + t.Errorf("unexpected conflict: %s\nin test case: %s\ncannot create three way patch:\n%s\n", + err, c.Description, mergepatch.ToYAMLOrError(c.StrategicMergePatchTestCaseData)) + return + } + + if len(c.Result) > 0 { + actual, err := CreateThreeWayMergePatch(original, modified, current, mergeItem, true) + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot force three way patch application:\n%s\n", + err, c.Description, mergepatch.ToYAMLOrError(c.StrategicMergePatchTestCaseData)) + return + } + + testPatchCreation(t, expected, actual, c.Description) + testPatchApplication(t, current, actual, result, c.Description, "") + } + + return + } + + if strings.Contains(c.Description, "conflict") || len(c.Result) < 1 { + t.Errorf("error in test case: %s\nexpected conflict did not occur:\n%s\n", + c.Description, mergepatch.ToYAMLOrError(c.StrategicMergePatchTestCaseData)) + return + } + + testPatchCreation(t, expected, actual, c.Description) + testPatchApplication(t, current, actual, result, c.Description, "") +} + +func testThreeWayPatchForRawTestCase(t *testing.T, c StrategicMergePatchRawTestCase) { + original, modified, current, expected, result := threeWayRawTestCaseToJSONOrFail(t, c) + actual, err := CreateThreeWayMergePatch(original, modified, current, mergeItem, false) + if err != nil { + if !mergepatch.IsConflict(err) { + t.Errorf("error: %s\nin test case: %s\ncannot create three way patch:\noriginal:%s\ntwoWay:%s\nmodified:%s\ncurrent:%s\nthreeWay:%s\nresult:%s\n", + err, c.Description, c.Original, c.TwoWay, c.Modified, c.Current, c.ThreeWay, c.Result) + return + } + + if !strings.Contains(c.Description, "conflict") { + t.Errorf("unexpected conflict: %s\nin test case: %s\ncannot create three way patch:\noriginal:%s\ntwoWay:%s\nmodified:%s\ncurrent:%s\nthreeWay:%s\nresult:%s\n", + err, c.Description, c.Original, c.TwoWay, c.Modified, c.Current, c.ThreeWay, c.Result) + return + } + + if len(c.Result) > 0 { + actual, err := CreateThreeWayMergePatch(original, modified, current, mergeItem, true) + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot force three way patch application:\noriginal:%s\ntwoWay:%s\nmodified:%s\ncurrent:%s\nthreeWay:%s\nresult:%s\n", + err, c.Description, c.Original, c.TwoWay, c.Modified, c.Current, c.ThreeWay, c.Result) + return + } + + testPatchCreation(t, expected, actual, c.Description) + testPatchApplication(t, current, actual, result, c.Description, c.ExpectedError) + } + + return + } + + if strings.Contains(c.Description, "conflict") || len(c.Result) < 1 { + t.Errorf("error: %s\nin test case: %s\nexpected conflict did not occur:\noriginal:%s\ntwoWay:%s\nmodified:%s\ncurrent:%s\nthreeWay:%s\nresult:%s\n", + err, c.Description, c.Original, c.TwoWay, c.Modified, c.Current, c.ThreeWay, c.Result) + return + } + + testPatchCreation(t, expected, actual, c.Description) + testPatchApplication(t, current, actual, result, c.Description, c.ExpectedError) +} + +func threeWayTestCaseToJSONOrFail(t *testing.T, c StrategicMergePatchTestCase) ([]byte, []byte, []byte, []byte, []byte) { + return sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Original), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Modified), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Current), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, c.ThreeWay), c.Description), + sortJsonOrFail(t, testObjectToJSONOrFail(t, c.Result), c.Description) +} + +func threeWayRawTestCaseToJSONOrFail(t *testing.T, c StrategicMergePatchRawTestCase) ([]byte, []byte, []byte, []byte, []byte) { + return yamlToJSONOrError(t, c.Original), + yamlToJSONOrError(t, c.Modified), + yamlToJSONOrError(t, c.Current), + yamlToJSONOrError(t, c.ThreeWay), + yamlToJSONOrError(t, c.Result) +} + +func testPatchCreation(t *testing.T, expected, actual []byte, description string) { + if !reflect.DeepEqual(actual, expected) { + t.Errorf("error in test case: %s\nexpected patch:\n%s\ngot:\n%s\n", + description, jsonToYAMLOrError(expected), jsonToYAMLOrError(actual)) + return + } +} + +func testPatchApplication(t *testing.T, original, patch, expected []byte, description, expectedError string) { + result, err := StrategicMergePatch(original, patch, mergeItem) + if len(expectedError) != 0 { + if err != nil && strings.Contains(err.Error(), expectedError) { + return + } + t.Errorf("expected error should contain:\n%s\nin test case: %s\nbut got:\n%s\n", expectedError, description, err) + } + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot apply patch:\n%s\nto original:\n%s\n", + err, description, jsonToYAMLOrError(patch), jsonToYAMLOrError(original)) + return + } + + if !reflect.DeepEqual(result, expected) { + format := "error in test case: %s\npatch application failed:\noriginal:\n%s\npatch:\n%s\nexpected:\n%s\ngot:\n%s\n" + t.Errorf(format, description, + jsonToYAMLOrError(original), jsonToYAMLOrError(patch), + jsonToYAMLOrError(expected), jsonToYAMLOrError(result)) + return + } +} + +func testObjectToJSONOrFail(t *testing.T, o map[string]interface{}) []byte { + if o == nil { + return nil + } + + j, err := toJSON(o) + if err != nil { + t.Error(err) + } + return j +} + +func sortJsonOrFail(t *testing.T, j []byte, description string) []byte { + if j == nil { + return nil + } + r, err := sortMergeListsByName(j, mergeItem) + if err != nil { + t.Errorf("error: %s\nin test case: %s\ncannot sort object:\n%s\n", err, description, j) + return nil + } + + return r +} + +func jsonToYAMLOrError(j []byte) string { + y, err := jsonToYAML(j) + if err != nil { + return err.Error() + } + + return string(y) +} + +func toJSON(v interface{}) ([]byte, error) { + j, err := json.Marshal(v) + if err != nil { + return nil, fmt.Errorf("json marshal failed: %v\n%v\n", err, spew.Sdump(v)) + } + + return j, nil +} + +func jsonToYAML(j []byte) ([]byte, error) { + y, err := yaml.JSONToYAML(j) + if err != nil { + return nil, fmt.Errorf("json to yaml failed: %v\n%v\n", err, j) + } + + return y, nil +} + +func yamlToJSON(y []byte) ([]byte, error) { + j, err := yaml.YAMLToJSON(y) + if err != nil { + return nil, fmt.Errorf("yaml to json failed: %v\n%v\n", err, y) + } + + return j, nil +} + +func yamlToJSONOrError(t *testing.T, y []byte) []byte { + j, err := yamlToJSON(y) + if err != nil { + t.Errorf("%v", err) + } + + return j +} + +type PrecisionItem struct { + Name string + Int32 int32 + Int64 int64 + Float32 float32 + Float64 float64 +} + +var precisionItem PrecisionItem + +func TestNumberConversion(t *testing.T) { + testcases := map[string]struct { + Old string + New string + ExpectedPatch string + ExpectedResult string + }{ + "empty": { + Old: `{}`, + New: `{}`, + ExpectedPatch: `{}`, + ExpectedResult: `{}`, + }, + "int32 medium": { + Old: `{"int32":1000000}`, + New: `{"int32":1000000,"name":"newname"}`, + ExpectedPatch: `{"name":"newname"}`, + ExpectedResult: `{"int32":1000000,"name":"newname"}`, + }, + "int32 max": { + Old: `{"int32":2147483647}`, + New: `{"int32":2147483647,"name":"newname"}`, + ExpectedPatch: `{"name":"newname"}`, + ExpectedResult: `{"int32":2147483647,"name":"newname"}`, + }, + "int64 medium": { + Old: `{"int64":1000000}`, + New: `{"int64":1000000,"name":"newname"}`, + ExpectedPatch: `{"name":"newname"}`, + ExpectedResult: `{"int64":1000000,"name":"newname"}`, + }, + "int64 max": { + Old: `{"int64":9223372036854775807}`, + New: `{"int64":9223372036854775807,"name":"newname"}`, + ExpectedPatch: `{"name":"newname"}`, + ExpectedResult: `{"int64":9223372036854775807,"name":"newname"}`, + }, + "float32 max": { + Old: `{"float32":3.4028234663852886e+38}`, + New: `{"float32":3.4028234663852886e+38,"name":"newname"}`, + ExpectedPatch: `{"name":"newname"}`, + ExpectedResult: `{"float32":3.4028234663852886e+38,"name":"newname"}`, + }, + "float64 max": { + Old: `{"float64":1.7976931348623157e+308}`, + New: `{"float64":1.7976931348623157e+308,"name":"newname"}`, + ExpectedPatch: `{"name":"newname"}`, + ExpectedResult: `{"float64":1.7976931348623157e+308,"name":"newname"}`, + }, + } + + for k, tc := range testcases { + patch, err := CreateTwoWayMergePatch([]byte(tc.Old), []byte(tc.New), precisionItem) + if err != nil { + t.Errorf("%s: unexpected error %v", k, err) + continue + } + if tc.ExpectedPatch != string(patch) { + t.Errorf("%s: expected %s, got %s", k, tc.ExpectedPatch, string(patch)) + continue + } + + result, err := StrategicMergePatch([]byte(tc.Old), patch, precisionItem) + if err != nil { + t.Errorf("%s: unexpected error %v", k, err) + continue + } + if tc.ExpectedResult != string(result) { + t.Errorf("%s: expected %s, got %s", k, tc.ExpectedResult, string(result)) + continue + } + } +} + +var replaceRawExtensionPatchTestCases = []StrategicMergePatchRawTestCase{ + { + Description: "replace RawExtension field, rest unchanched", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +name: my-object +value: some-value +other: current-other +replacingItem: + Some: Generic + Yaml: Inside + The: RawExtension + Field: Period +`), + Current: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 + - name: 3 +replacingItem: + Some: Generic + Yaml: Inside + The: RawExtension + Field: Period +`), + Modified: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 + - name: 3 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + TwoWay: []byte(` +merginglist: + - name: 1 + - name: 2 + - name: 3 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + TwoWayResult: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 + - name: 3 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + ThreeWay: []byte(` +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + Result: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 + - name: 3 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + }, + }, + { + Description: "replace RawExtension field and merge list", + StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{ + Original: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 +replacingItem: + Some: Generic + Yaml: Inside + The: RawExtension + Field: Period +`), + Current: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 3 +replacingItem: + Some: Generic + Yaml: Inside + The: RawExtension + Field: Period +`), + Modified: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + TwoWay: []byte(` +$setElementOrder/merginglist: + - name: 1 + - name: 2 +merginglist: + - name: 2 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + TwoWayResult: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + ThreeWay: []byte(` +$setElementOrder/merginglist: + - name: 1 + - name: 2 +merginglist: + - name: 2 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + Result: []byte(` +name: my-object +value: some-value +other: current-other +merginglist: + - name: 1 + - name: 2 + - name: 3 +replacingItem: + Newly: Modified + Yaml: Inside + The: RawExtension +`), + }, + }, +} + +func TestReplaceWithRawExtension(t *testing.T) { + for _, c := range replaceRawExtensionPatchTestCases { + testTwoWayPatchForRawTestCase(t, c) + testThreeWayPatchForRawTestCase(t, c) + } +} + +func TestUnknownField(t *testing.T) { + testcases := map[string]struct { + Original string + Current string + Modified string + + ExpectedTwoWay string + ExpectedTwoWayErr string + ExpectedTwoWayResult string + ExpectedThreeWay string + ExpectedThreeWayErr string + ExpectedThreeWayResult string + }{ + // cases we can successfully strategically merge + "no diff": { + Original: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + Current: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + Modified: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + + ExpectedTwoWay: `{}`, + ExpectedTwoWayResult: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + ExpectedThreeWay: `{}`, + ExpectedThreeWayResult: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + }, + "added only": { + Original: `{"name":"foo"}`, + Current: `{"name":"foo"}`, + Modified: `{"name":"foo","scalar":true,"complex":{"nested":true},"array":[1,2,3]}`, + + ExpectedTwoWay: `{"array":[1,2,3],"complex":{"nested":true},"scalar":true}`, + ExpectedTwoWayResult: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + ExpectedThreeWay: `{"array":[1,2,3],"complex":{"nested":true},"scalar":true}`, + ExpectedThreeWayResult: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + }, + "removed only": { + Original: `{"name":"foo","scalar":true,"complex":{"nested":true}}`, + Current: `{"name":"foo","scalar":true,"complex":{"nested":true},"array":[1,2,3]}`, + Modified: `{"name":"foo"}`, + + ExpectedTwoWay: `{"complex":null,"scalar":null}`, + ExpectedTwoWayResult: `{"name":"foo"}`, + ExpectedThreeWay: `{"complex":null,"scalar":null}`, + ExpectedThreeWayResult: `{"array":[1,2,3],"name":"foo"}`, + }, + + // cases we cannot successfully strategically merge (expect errors) + "diff": { + Original: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + Current: `{"array":[1,2,3],"complex":{"nested":true},"name":"foo","scalar":true}`, + Modified: `{"array":[1,2,3],"complex":{"nested":false},"name":"foo","scalar":true}`, + + ExpectedTwoWayErr: `unable to find api field`, + ExpectedThreeWayErr: `unable to find api field`, + }, + } + + for _, k := range sets.StringKeySet(testcases).List() { + tc := testcases[k] + func() { + twoWay, err := CreateTwoWayMergePatch([]byte(tc.Original), []byte(tc.Modified), &MergeItem{}) + if err != nil { + if len(tc.ExpectedTwoWayErr) == 0 { + t.Errorf("%s: error making two-way patch: %v", k, err) + } + if !strings.Contains(err.Error(), tc.ExpectedTwoWayErr) { + t.Errorf("%s: expected error making two-way patch to contain '%s', got %s", k, tc.ExpectedTwoWayErr, err) + } + return + } + + if string(twoWay) != tc.ExpectedTwoWay { + t.Errorf("%s: expected two-way patch:\n\t%s\ngot\n\t%s", k, string(tc.ExpectedTwoWay), string(twoWay)) + return + } + + twoWayResult, err := StrategicMergePatch([]byte(tc.Original), twoWay, MergeItem{}) + if err != nil { + t.Errorf("%s: error applying two-way patch: %v", k, err) + return + } + if string(twoWayResult) != tc.ExpectedTwoWayResult { + t.Errorf("%s: expected two-way result:\n\t%s\ngot\n\t%s", k, string(tc.ExpectedTwoWayResult), string(twoWayResult)) + return + } + }() + + func() { + threeWay, err := CreateThreeWayMergePatch([]byte(tc.Original), []byte(tc.Modified), []byte(tc.Current), &MergeItem{}, false) + if err != nil { + if len(tc.ExpectedThreeWayErr) == 0 { + t.Errorf("%s: error making three-way patch: %v", k, err) + } else if !strings.Contains(err.Error(), tc.ExpectedThreeWayErr) { + t.Errorf("%s: expected error making three-way patch to contain '%s', got %s", k, tc.ExpectedThreeWayErr, err) + } + return + } + + if string(threeWay) != tc.ExpectedThreeWay { + t.Errorf("%s: expected three-way patch:\n\t%s\ngot\n\t%s", k, string(tc.ExpectedThreeWay), string(threeWay)) + return + } + + threeWayResult, err := StrategicMergePatch([]byte(tc.Current), threeWay, MergeItem{}) + if err != nil { + t.Errorf("%s: error applying three-way patch: %v", k, err) + return + } else if string(threeWayResult) != tc.ExpectedThreeWayResult { + t.Errorf("%s: expected three-way result:\n\t%s\ngot\n\t%s", k, string(tc.ExpectedThreeWayResult), string(threeWayResult)) + return + } + }() + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD b/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD new file mode 100644 index 000000000..cc80c1d72 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["uuid.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/pborman/uuid:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/uuid/uuid.go b/vendor/k8s.io/apimachinery/pkg/util/uuid/uuid.go new file mode 100644 index 000000000..bf478223d --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/uuid/uuid.go @@ -0,0 +1,43 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package uuid + +import ( + "sync" + + "github.com/pborman/uuid" + + "k8s.io/apimachinery/pkg/types" +) + +var uuidLock sync.Mutex +var lastUUID uuid.UUID + +func NewUUID() types.UID { + uuidLock.Lock() + defer uuidLock.Unlock() + result := uuid.NewUUID() + // The UUID package is naive and can generate identical UUIDs if the + // time interval is quick enough. + // The UUID uses 100 ns increments so it's short enough to actively + // wait for a new value. + for uuid.Equal(lastUUID, result) == true { + result = uuid.NewUUID() + } + lastUUID = result + return types.UID(result.String()) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD b/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD new file mode 100644 index 000000000..5b5d461e9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["validation_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["validation.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD b/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD new file mode 100644 index 000000000..7a777062a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "errors_test.go", + "path_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "errors.go", + "path.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go new file mode 100644 index 000000000..43c779a11 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go @@ -0,0 +1,254 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package field + +import ( + "fmt" + "reflect" + "strings" + + utilerrors "k8s.io/apimachinery/pkg/util/errors" + "k8s.io/apimachinery/pkg/util/sets" +) + +// Error is an implementation of the 'error' interface, which represents a +// field-level validation error. +type Error struct { + Type ErrorType + Field string + BadValue interface{} + Detail string +} + +var _ error = &Error{} + +// Error implements the error interface. +func (v *Error) Error() string { + return fmt.Sprintf("%s: %s", v.Field, v.ErrorBody()) +} + +// ErrorBody returns the error message without the field name. This is useful +// for building nice-looking higher-level error reporting. +func (v *Error) ErrorBody() string { + var s string + switch v.Type { + case ErrorTypeRequired, ErrorTypeForbidden, ErrorTypeTooLong, ErrorTypeInternal: + s = fmt.Sprintf("%s", v.Type) + default: + value := v.BadValue + valueType := reflect.TypeOf(value) + if value == nil || valueType == nil { + value = "null" + } else if valueType.Kind() == reflect.Ptr { + if reflectValue := reflect.ValueOf(value); reflectValue.IsNil() { + value = "null" + } else { + value = reflectValue.Elem().Interface() + } + } + switch t := value.(type) { + case int64, int32, float64, float32, bool: + // use simple printer for simple types + s = fmt.Sprintf("%s: %v", v.Type, value) + case string: + s = fmt.Sprintf("%s: %q", v.Type, t) + case fmt.Stringer: + // anything that defines String() is better than raw struct + s = fmt.Sprintf("%s: %s", v.Type, t.String()) + default: + // fallback to raw struct + // TODO: internal types have panic guards against json.Marshalling to prevent + // accidental use of internal types in external serialized form. For now, use + // %#v, although it would be better to show a more expressive output in the future + s = fmt.Sprintf("%s: %#v", v.Type, value) + } + } + if len(v.Detail) != 0 { + s += fmt.Sprintf(": %s", v.Detail) + } + return s +} + +// ErrorType is a machine readable value providing more detail about why +// a field is invalid. These values are expected to match 1-1 with +// CauseType in api/types.go. +type ErrorType string + +// TODO: These values are duplicated in api/types.go, but there's a circular dep. Fix it. +const ( + // ErrorTypeNotFound is used to report failure to find a requested value + // (e.g. looking up an ID). See NotFound(). + ErrorTypeNotFound ErrorType = "FieldValueNotFound" + // ErrorTypeRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). See + // Required(). + ErrorTypeRequired ErrorType = "FieldValueRequired" + // ErrorTypeDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). See Duplicate(). + ErrorTypeDuplicate ErrorType = "FieldValueDuplicate" + // ErrorTypeInvalid is used to report malformed values (e.g. failed regex + // match, too long, out of bounds). See Invalid(). + ErrorTypeInvalid ErrorType = "FieldValueInvalid" + // ErrorTypeNotSupported is used to report unknown values for enumerated + // fields (e.g. a list of valid values). See NotSupported(). + ErrorTypeNotSupported ErrorType = "FieldValueNotSupported" + // ErrorTypeForbidden is used to report valid (as per formatting rules) + // values which would be accepted under some conditions, but which are not + // permitted by the current conditions (such as security policy). See + // Forbidden(). + ErrorTypeForbidden ErrorType = "FieldValueForbidden" + // ErrorTypeTooLong is used to report that the given value is too long. + // This is similar to ErrorTypeInvalid, but the error will not include the + // too-long value. See TooLong(). + ErrorTypeTooLong ErrorType = "FieldValueTooLong" + // ErrorTypeInternal is used to report other errors that are not related + // to user input. See InternalError(). + ErrorTypeInternal ErrorType = "InternalError" +) + +// String converts a ErrorType into its corresponding canonical error message. +func (t ErrorType) String() string { + switch t { + case ErrorTypeNotFound: + return "Not found" + case ErrorTypeRequired: + return "Required value" + case ErrorTypeDuplicate: + return "Duplicate value" + case ErrorTypeInvalid: + return "Invalid value" + case ErrorTypeNotSupported: + return "Unsupported value" + case ErrorTypeForbidden: + return "Forbidden" + case ErrorTypeTooLong: + return "Too long" + case ErrorTypeInternal: + return "Internal error" + default: + panic(fmt.Sprintf("unrecognized validation error: %q", string(t))) + } +} + +// NotFound returns a *Error indicating "value not found". This is +// used to report failure to find a requested value (e.g. looking up an ID). +func NotFound(field *Path, value interface{}) *Error { + return &Error{ErrorTypeNotFound, field.String(), value, ""} +} + +// Required returns a *Error indicating "value required". This is used +// to report required values that are not provided (e.g. empty strings, null +// values, or empty arrays). +func Required(field *Path, detail string) *Error { + return &Error{ErrorTypeRequired, field.String(), "", detail} +} + +// Duplicate returns a *Error indicating "duplicate value". This is +// used to report collisions of values that must be unique (e.g. names or IDs). +func Duplicate(field *Path, value interface{}) *Error { + return &Error{ErrorTypeDuplicate, field.String(), value, ""} +} + +// Invalid returns a *Error indicating "invalid value". This is used +// to report malformed values (e.g. failed regex match, too long, out of bounds). +func Invalid(field *Path, value interface{}, detail string) *Error { + return &Error{ErrorTypeInvalid, field.String(), value, detail} +} + +// NotSupported returns a *Error indicating "unsupported value". +// This is used to report unknown values for enumerated fields (e.g. a list of +// valid values). +func NotSupported(field *Path, value interface{}, validValues []string) *Error { + detail := "" + if validValues != nil && len(validValues) > 0 { + detail = "supported values: " + strings.Join(validValues, ", ") + } + return &Error{ErrorTypeNotSupported, field.String(), value, detail} +} + +// Forbidden returns a *Error indicating "forbidden". This is used to +// report valid (as per formatting rules) values which would be accepted under +// some conditions, but which are not permitted by current conditions (e.g. +// security policy). +func Forbidden(field *Path, detail string) *Error { + return &Error{ErrorTypeForbidden, field.String(), "", detail} +} + +// TooLong returns a *Error indicating "too long". This is used to +// report that the given value is too long. This is similar to +// Invalid, but the returned error will not include the too-long +// value. +func TooLong(field *Path, value interface{}, maxLength int) *Error { + return &Error{ErrorTypeTooLong, field.String(), value, fmt.Sprintf("must have at most %d characters", maxLength)} +} + +// InternalError returns a *Error indicating "internal error". This is used +// to signal that an error was found that was not directly related to user +// input. The err argument must be non-nil. +func InternalError(field *Path, err error) *Error { + return &Error{ErrorTypeInternal, field.String(), nil, err.Error()} +} + +// ErrorList holds a set of Errors. It is plausible that we might one day have +// non-field errors in this same umbrella package, but for now we don't, so +// we can keep it simple and leave ErrorList here. +type ErrorList []*Error + +// NewErrorTypeMatcher returns an errors.Matcher that returns true +// if the provided error is a Error and has the provided ErrorType. +func NewErrorTypeMatcher(t ErrorType) utilerrors.Matcher { + return func(err error) bool { + if e, ok := err.(*Error); ok { + return e.Type == t + } + return false + } +} + +// ToAggregate converts the ErrorList into an errors.Aggregate. +func (list ErrorList) ToAggregate() utilerrors.Aggregate { + errs := make([]error, 0, len(list)) + errorMsgs := sets.NewString() + for _, err := range list { + msg := fmt.Sprintf("%v", err) + if errorMsgs.Has(msg) { + continue + } + errorMsgs.Insert(msg) + errs = append(errs, err) + } + return utilerrors.NewAggregate(errs) +} + +func fromAggregate(agg utilerrors.Aggregate) ErrorList { + errs := agg.Errors() + list := make(ErrorList, len(errs)) + for i := range errs { + list[i] = errs[i].(*Error) + } + return list +} + +// Filter removes items from the ErrorList that match the provided fns. +func (list ErrorList) Filter(fns ...utilerrors.Matcher) ErrorList { + err := utilerrors.FilterOut(list.ToAggregate(), fns...) + if err == nil { + return nil + } + // FilterOut takes an Aggregate and returns an Aggregate + return fromAggregate(err.(utilerrors.Aggregate)) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go new file mode 100644 index 000000000..26612017f --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors_test.go @@ -0,0 +1,167 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package field + +import ( + "fmt" + "strings" + "testing" +) + +func TestMakeFuncs(t *testing.T) { + testCases := []struct { + fn func() *Error + expected ErrorType + }{ + { + func() *Error { return Invalid(NewPath("f"), "v", "d") }, + ErrorTypeInvalid, + }, + { + func() *Error { return NotSupported(NewPath("f"), "v", nil) }, + ErrorTypeNotSupported, + }, + { + func() *Error { return Duplicate(NewPath("f"), "v") }, + ErrorTypeDuplicate, + }, + { + func() *Error { return NotFound(NewPath("f"), "v") }, + ErrorTypeNotFound, + }, + { + func() *Error { return Required(NewPath("f"), "d") }, + ErrorTypeRequired, + }, + { + func() *Error { return InternalError(NewPath("f"), fmt.Errorf("e")) }, + ErrorTypeInternal, + }, + } + + for _, testCase := range testCases { + err := testCase.fn() + if err.Type != testCase.expected { + t.Errorf("expected Type %q, got %q", testCase.expected, err.Type) + } + } +} + +func TestErrorUsefulMessage(t *testing.T) { + { + s := Invalid(nil, nil, "").Error() + t.Logf("message: %v", s) + if !strings.Contains(s, "null") { + t.Errorf("error message did not contain 'null': %s", s) + } + } + + s := Invalid(NewPath("foo"), "bar", "deet").Error() + t.Logf("message: %v", s) + for _, part := range []string{"foo", "bar", "deet", ErrorTypeInvalid.String()} { + if !strings.Contains(s, part) { + t.Errorf("error message did not contain expected part '%v'", part) + } + } + + type complicated struct { + Baz int + Qux string + Inner interface{} + KV map[string]int + } + s = Invalid( + NewPath("foo"), + &complicated{ + Baz: 1, + Qux: "aoeu", + Inner: &complicated{Qux: "asdf"}, + KV: map[string]int{"Billy": 2}, + }, + "detail", + ).Error() + t.Logf("message: %v", s) + for _, part := range []string{ + "foo", ErrorTypeInvalid.String(), + "Baz", "Qux", "Inner", "KV", "detail", + "1", "aoeu", "Billy", "2", + // "asdf", TODO: reenable once we have a better nested printer + } { + if !strings.Contains(s, part) { + t.Errorf("error message did not contain expected part '%v'", part) + } + } +} + +func TestToAggregate(t *testing.T) { + testCases := struct { + ErrList []ErrorList + NumExpectedErrs []int + }{ + []ErrorList{ + nil, + {}, + {Invalid(NewPath("f"), "v", "d")}, + {Invalid(NewPath("f"), "v", "d"), Invalid(NewPath("f"), "v", "d")}, + {Invalid(NewPath("f"), "v", "d"), InternalError(NewPath(""), fmt.Errorf("e"))}, + }, + []int{ + 0, + 0, + 1, + 1, + 2, + }, + } + + if len(testCases.ErrList) != len(testCases.NumExpectedErrs) { + t.Errorf("Mismatch: length of NumExpectedErrs does not match length of ErrList") + } + for i, tc := range testCases.ErrList { + agg := tc.ToAggregate() + numErrs := 0 + + if agg != nil { + numErrs = len(agg.Errors()) + } + if numErrs != testCases.NumExpectedErrs[i] { + t.Errorf("[%d] Expected %d, got %d", i, testCases.NumExpectedErrs[i], numErrs) + } + + if len(tc) == 0 { + if agg != nil { + t.Errorf("[%d] Expected nil, got %#v", i, agg) + } + } else if agg == nil { + t.Errorf("[%d] Expected non-nil", i) + } + } +} + +func TestErrListFilter(t *testing.T) { + list := ErrorList{ + Invalid(NewPath("test.field"), "", ""), + Invalid(NewPath("field.test"), "", ""), + Duplicate(NewPath("test"), "value"), + } + if len(list.Filter(NewErrorTypeMatcher(ErrorTypeDuplicate))) != 2 { + t.Errorf("should not filter") + } + if len(list.Filter(NewErrorTypeMatcher(ErrorTypeInvalid))) != 1 { + t.Errorf("should filter") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go new file mode 100644 index 000000000..2efc8eec7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/field/path.go @@ -0,0 +1,91 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package field + +import ( + "bytes" + "fmt" + "strconv" +) + +// Path represents the path from some root to a particular field. +type Path struct { + name string // the name of this field or "" if this is an index + index string // if name == "", this is a subscript (index or map key) of the previous element + parent *Path // nil if this is the root element +} + +// NewPath creates a root Path object. +func NewPath(name string, moreNames ...string) *Path { + r := &Path{name: name, parent: nil} + for _, anotherName := range moreNames { + r = &Path{name: anotherName, parent: r} + } + return r +} + +// Root returns the root element of this Path. +func (p *Path) Root() *Path { + for ; p.parent != nil; p = p.parent { + // Do nothing. + } + return p +} + +// Child creates a new Path that is a child of the method receiver. +func (p *Path) Child(name string, moreNames ...string) *Path { + r := NewPath(name, moreNames...) + r.Root().parent = p + return r +} + +// Index indicates that the previous Path is to be subscripted by an int. +// This sets the same underlying value as Key. +func (p *Path) Index(index int) *Path { + return &Path{index: strconv.Itoa(index), parent: p} +} + +// Key indicates that the previous Path is to be subscripted by a string. +// This sets the same underlying value as Index. +func (p *Path) Key(key string) *Path { + return &Path{index: key, parent: p} +} + +// String produces a string representation of the Path. +func (p *Path) String() string { + // make a slice to iterate + elems := []*Path{} + for ; p != nil; p = p.parent { + elems = append(elems, p) + } + + // iterate, but it has to be backwards + buf := bytes.NewBuffer(nil) + for i := range elems { + p := elems[len(elems)-1-i] + if p.parent != nil && len(p.name) > 0 { + // This is either the root or it is a subscript. + buf.WriteString(".") + } + if len(p.name) > 0 { + buf.WriteString(p.name) + } else { + fmt.Fprintf(buf, "[%s]", p.index) + } + } + return buf.String() +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/field/path_test.go b/vendor/k8s.io/apimachinery/pkg/util/validation/field/path_test.go new file mode 100644 index 000000000..d2f568c36 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/field/path_test.go @@ -0,0 +1,123 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package field + +import "testing" + +func TestPath(t *testing.T) { + testCases := []struct { + op func(*Path) *Path + expected string + }{ + { + func(p *Path) *Path { return p }, + "root", + }, + { + func(p *Path) *Path { return p.Child("first") }, + "root.first", + }, + { + func(p *Path) *Path { return p.Child("second") }, + "root.first.second", + }, + { + func(p *Path) *Path { return p.Index(0) }, + "root.first.second[0]", + }, + { + func(p *Path) *Path { return p.Child("third") }, + "root.first.second[0].third", + }, + { + func(p *Path) *Path { return p.Index(93) }, + "root.first.second[0].third[93]", + }, + { + func(p *Path) *Path { return p.parent }, + "root.first.second[0].third", + }, + { + func(p *Path) *Path { return p.parent }, + "root.first.second[0]", + }, + { + func(p *Path) *Path { return p.Key("key") }, + "root.first.second[0][key]", + }, + } + + root := NewPath("root") + p := root + for i, tc := range testCases { + p = tc.op(p) + if p.String() != tc.expected { + t.Errorf("[%d] Expected %q, got %q", i, tc.expected, p.String()) + } + if p.Root() != root { + t.Errorf("[%d] Wrong root: %#v", i, p.Root()) + } + } +} + +func TestPathMultiArg(t *testing.T) { + testCases := []struct { + op func(*Path) *Path + expected string + }{ + { + func(p *Path) *Path { return p }, + "root.first", + }, + { + func(p *Path) *Path { return p.Child("second", "third") }, + "root.first.second.third", + }, + { + func(p *Path) *Path { return p.Index(0) }, + "root.first.second.third[0]", + }, + { + func(p *Path) *Path { return p.parent }, + "root.first.second.third", + }, + { + func(p *Path) *Path { return p.parent }, + "root.first.second", + }, + { + func(p *Path) *Path { return p.parent }, + "root.first", + }, + { + func(p *Path) *Path { return p.parent }, + "root", + }, + } + + root := NewPath("root", "first") + p := root + for i, tc := range testCases { + p = tc.op(p) + if p.String() != tc.expected { + t.Errorf("[%d] Expected %q, got %q", i, tc.expected, p.String()) + } + if p.Root() != root.Root() { + t.Errorf("[%d] Wrong root: %#v", i, p.Root()) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go b/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go new file mode 100644 index 000000000..b1fcc5708 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/validation.go @@ -0,0 +1,343 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "fmt" + "math" + "net" + "regexp" + "strings" +) + +const qnameCharFmt string = "[A-Za-z0-9]" +const qnameExtCharFmt string = "[-A-Za-z0-9_.]" +const qualifiedNameFmt string = "(" + qnameCharFmt + qnameExtCharFmt + "*)?" + qnameCharFmt +const qualifiedNameErrMsg string = "must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character" +const qualifiedNameMaxLength int = 63 + +var qualifiedNameRegexp = regexp.MustCompile("^" + qualifiedNameFmt + "$") + +// IsQualifiedName tests whether the value passed is what Kubernetes calls a +// "qualified name". This is a format used in various places throughout the +// system. If the value is not valid, a list of error strings is returned. +// Otherwise an empty list (or nil) is returned. +func IsQualifiedName(value string) []string { + var errs []string + parts := strings.Split(value, "/") + var name string + switch len(parts) { + case 1: + name = parts[0] + case 2: + var prefix string + prefix, name = parts[0], parts[1] + if len(prefix) == 0 { + errs = append(errs, "prefix part "+EmptyError()) + } else if msgs := IsDNS1123Subdomain(prefix); len(msgs) != 0 { + errs = append(errs, prefixEach(msgs, "prefix part ")...) + } + default: + return append(errs, "a qualified name "+RegexError(qualifiedNameErrMsg, qualifiedNameFmt, "MyName", "my.name", "123-abc")+ + " with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')") + } + + if len(name) == 0 { + errs = append(errs, "name part "+EmptyError()) + } else if len(name) > qualifiedNameMaxLength { + errs = append(errs, "name part "+MaxLenError(qualifiedNameMaxLength)) + } + if !qualifiedNameRegexp.MatchString(name) { + errs = append(errs, "name part "+RegexError(qualifiedNameErrMsg, qualifiedNameFmt, "MyName", "my.name", "123-abc")) + } + return errs +} + +const labelValueFmt string = "(" + qualifiedNameFmt + ")?" +const labelValueErrMsg string = "a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character" +const LabelValueMaxLength int = 63 + +var labelValueRegexp = regexp.MustCompile("^" + labelValueFmt + "$") + +// IsValidLabelValue tests whether the value passed is a valid label value. If +// the value is not valid, a list of error strings is returned. Otherwise an +// empty list (or nil) is returned. +func IsValidLabelValue(value string) []string { + var errs []string + if len(value) > LabelValueMaxLength { + errs = append(errs, MaxLenError(LabelValueMaxLength)) + } + if !labelValueRegexp.MatchString(value) { + errs = append(errs, RegexError(labelValueErrMsg, labelValueFmt, "MyValue", "my_value", "12345")) + } + return errs +} + +const dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?" +const dns1123LabelErrMsg string = "a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character" +const DNS1123LabelMaxLength int = 63 + +var dns1123LabelRegexp = regexp.MustCompile("^" + dns1123LabelFmt + "$") + +// IsDNS1123Label tests for a string that conforms to the definition of a label in +// DNS (RFC 1123). +func IsDNS1123Label(value string) []string { + var errs []string + if len(value) > DNS1123LabelMaxLength { + errs = append(errs, MaxLenError(DNS1123LabelMaxLength)) + } + if !dns1123LabelRegexp.MatchString(value) { + errs = append(errs, RegexError(dns1123LabelErrMsg, dns1123LabelFmt, "my-name", "123-abc")) + } + return errs +} + +const dns1123SubdomainFmt string = dns1123LabelFmt + "(\\." + dns1123LabelFmt + ")*" +const dns1123SubdomainErrorMsg string = "a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character" +const DNS1123SubdomainMaxLength int = 253 + +var dns1123SubdomainRegexp = regexp.MustCompile("^" + dns1123SubdomainFmt + "$") + +// IsDNS1123Subdomain tests for a string that conforms to the definition of a +// subdomain in DNS (RFC 1123). +func IsDNS1123Subdomain(value string) []string { + var errs []string + if len(value) > DNS1123SubdomainMaxLength { + errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength)) + } + if !dns1123SubdomainRegexp.MatchString(value) { + errs = append(errs, RegexError(dns1123SubdomainErrorMsg, dns1123SubdomainFmt, "example.com")) + } + return errs +} + +const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?" +const dns1035LabelErrMsg string = "a DNS-1035 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character" +const DNS1035LabelMaxLength int = 63 + +var dns1035LabelRegexp = regexp.MustCompile("^" + dns1035LabelFmt + "$") + +// IsDNS1035Label tests for a string that conforms to the definition of a label in +// DNS (RFC 1035). +func IsDNS1035Label(value string) []string { + var errs []string + if len(value) > DNS1035LabelMaxLength { + errs = append(errs, MaxLenError(DNS1035LabelMaxLength)) + } + if !dns1035LabelRegexp.MatchString(value) { + errs = append(errs, RegexError(dns1035LabelErrMsg, dns1035LabelFmt, "my-name", "abc-123")) + } + return errs +} + +// wildcard definition - RFC 1034 section 4.3.3. +// examples: +// - valid: *.bar.com, *.foo.bar.com +// - invalid: *.*.bar.com, *.foo.*.com, *bar.com, f*.bar.com, * +const wildcardDNS1123SubdomainFmt = "\\*\\." + dns1123SubdomainFmt +const wildcardDNS1123SubdomainErrMsg = "a wildcard DNS-1123 subdomain must start with '*.', followed by a valid DNS subdomain, which must consist of lower case alphanumeric characters, '-' or '.' and end with an alphanumeric character" + +// IsWildcardDNS1123Subdomain tests for a string that conforms to the definition of a +// wildcard subdomain in DNS (RFC 1034 section 4.3.3). +func IsWildcardDNS1123Subdomain(value string) []string { + wildcardDNS1123SubdomainRegexp := regexp.MustCompile("^" + wildcardDNS1123SubdomainFmt + "$") + + var errs []string + if len(value) > DNS1123SubdomainMaxLength { + errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength)) + } + if !wildcardDNS1123SubdomainRegexp.MatchString(value) { + errs = append(errs, RegexError(wildcardDNS1123SubdomainErrMsg, wildcardDNS1123SubdomainFmt, "*.example.com")) + } + return errs +} + +const cIdentifierFmt string = "[A-Za-z_][A-Za-z0-9_]*" +const identifierErrMsg string = "a valid C identifier must start with alphabetic character or '_', followed by a string of alphanumeric characters or '_'" + +var cIdentifierRegexp = regexp.MustCompile("^" + cIdentifierFmt + "$") + +// IsCIdentifier tests for a string that conforms the definition of an identifier +// in C. This checks the format, but not the length. +func IsCIdentifier(value string) []string { + if !cIdentifierRegexp.MatchString(value) { + return []string{RegexError(identifierErrMsg, cIdentifierFmt, "my_name", "MY_NAME", "MyName")} + } + return nil +} + +// IsValidPortNum tests that the argument is a valid, non-zero port number. +func IsValidPortNum(port int) []string { + if 1 <= port && port <= 65535 { + return nil + } + return []string{InclusiveRangeError(1, 65535)} +} + +// Now in libcontainer UID/GID limits is 0 ~ 1<<31 - 1 +// TODO: once we have a type for UID/GID we should make these that type. +const ( + minUserID = 0 + maxUserID = math.MaxInt32 + minGroupID = 0 + maxGroupID = math.MaxInt32 +) + +// IsValidGroupID tests that the argument is a valid Unix GID. +func IsValidGroupID(gid int64) []string { + if minGroupID <= gid && gid <= maxGroupID { + return nil + } + return []string{InclusiveRangeError(minGroupID, maxGroupID)} +} + +// IsValidUserID tests that the argument is a valid Unix UID. +func IsValidUserID(uid int64) []string { + if minUserID <= uid && uid <= maxUserID { + return nil + } + return []string{InclusiveRangeError(minUserID, maxUserID)} +} + +var portNameCharsetRegex = regexp.MustCompile("^[-a-z0-9]+$") +var portNameOneLetterRegexp = regexp.MustCompile("[a-z]") + +// IsValidPortName check that the argument is valid syntax. It must be +// non-empty and no more than 15 characters long. It may contain only [-a-z0-9] +// and must contain at least one letter [a-z]. It must not start or end with a +// hyphen, nor contain adjacent hyphens. +// +// Note: We only allow lower-case characters, even though RFC 6335 is case +// insensitive. +func IsValidPortName(port string) []string { + var errs []string + if len(port) > 15 { + errs = append(errs, MaxLenError(15)) + } + if !portNameCharsetRegex.MatchString(port) { + errs = append(errs, "must contain only alpha-numeric characters (a-z, 0-9), and hyphens (-)") + } + if !portNameOneLetterRegexp.MatchString(port) { + errs = append(errs, "must contain at least one letter or number (a-z, 0-9)") + } + if strings.Contains(port, "--") { + errs = append(errs, "must not contain consecutive hyphens") + } + if len(port) > 0 && (port[0] == '-' || port[len(port)-1] == '-') { + errs = append(errs, "must not begin or end with a hyphen") + } + return errs +} + +// IsValidIP tests that the argument is a valid IP address. +func IsValidIP(value string) []string { + if net.ParseIP(value) == nil { + return []string{"must be a valid IP address, (e.g. 10.9.8.7)"} + } + return nil +} + +const percentFmt string = "[0-9]+%" +const percentErrMsg string = "a valid percent string must be a numeric string followed by an ending '%'" + +var percentRegexp = regexp.MustCompile("^" + percentFmt + "$") + +func IsValidPercent(percent string) []string { + if !percentRegexp.MatchString(percent) { + return []string{RegexError(percentErrMsg, percentFmt, "1%", "93%")} + } + return nil +} + +const httpHeaderNameFmt string = "[-A-Za-z0-9]+" +const httpHeaderNameErrMsg string = "a valid HTTP header must consist of alphanumeric characters or '-'" + +var httpHeaderNameRegexp = regexp.MustCompile("^" + httpHeaderNameFmt + "$") + +// IsHTTPHeaderName checks that a string conforms to the Go HTTP library's +// definition of a valid header field name (a stricter subset than RFC7230). +func IsHTTPHeaderName(value string) []string { + if !httpHeaderNameRegexp.MatchString(value) { + return []string{RegexError(httpHeaderNameErrMsg, httpHeaderNameFmt, "X-Header-Name")} + } + return nil +} + +const configMapKeyFmt = `[-._a-zA-Z0-9]+` +const configMapKeyErrMsg string = "a valid config key must consist of alphanumeric characters, '-', '_' or '.'" + +var configMapKeyRegexp = regexp.MustCompile("^" + configMapKeyFmt + "$") + +// IsConfigMapKey tests for a string that is a valid key for a ConfigMap or Secret +func IsConfigMapKey(value string) []string { + var errs []string + if len(value) > DNS1123SubdomainMaxLength { + errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength)) + } + if !configMapKeyRegexp.MatchString(value) { + errs = append(errs, RegexError(configMapKeyErrMsg, configMapKeyFmt, "key.name", "KEY_NAME", "key-name")) + } + if value == "." { + errs = append(errs, `must not be '.'`) + } else if value == ".." { + errs = append(errs, `must not be '..'`) + } else if strings.HasPrefix(value, "..") { + errs = append(errs, `must not start with '..'`) + } + return errs +} + +// MaxLenError returns a string explanation of a "string too long" validation +// failure. +func MaxLenError(length int) string { + return fmt.Sprintf("must be no more than %d characters", length) +} + +// RegexError returns a string explanation of a regex validation failure. +func RegexError(msg string, fmt string, examples ...string) string { + if len(examples) == 0 { + return msg + " (regex used for validation is '" + fmt + "')" + } + msg += " (e.g. " + for i := range examples { + if i > 0 { + msg += " or " + } + msg += "'" + examples[i] + "', " + } + msg += "regex used for validation is '" + fmt + "')" + return msg +} + +// EmptyError returns a string explanation of a "must not be empty" validation +// failure. +func EmptyError() string { + return "must be non-empty" +} + +func prefixEach(msgs []string, prefix string) []string { + for i := range msgs { + msgs[i] = prefix + msgs[i] + } + return msgs +} + +// InclusiveRangeError returns a string explanation of a numeric "must be +// between" validation failure. +func InclusiveRangeError(lo, hi int) string { + return fmt.Sprintf(`must be between %d and %d, inclusive`, lo, hi) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/validation/validation_test.go b/vendor/k8s.io/apimachinery/pkg/util/validation/validation_test.go new file mode 100644 index 000000000..061be1a6e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/validation/validation_test.go @@ -0,0 +1,452 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "strings" + "testing" +) + +func TestIsDNS1123Label(t *testing.T) { + goodValues := []string{ + "a", "ab", "abc", "a1", "a-1", "a--1--2--b", + "0", "01", "012", "1a", "1-a", "1--a--b--2", + strings.Repeat("a", 63), + } + for _, val := range goodValues { + if msgs := IsDNS1123Label(val); len(msgs) != 0 { + t.Errorf("expected true for '%s': %v", val, msgs) + } + } + + badValues := []string{ + "", "A", "ABC", "aBc", "A1", "A-1", "1-A", + "-", "a-", "-a", "1-", "-1", + "_", "a_", "_a", "a_b", "1_", "_1", "1_2", + ".", "a.", ".a", "a.b", "1.", ".1", "1.2", + " ", "a ", " a", "a b", "1 ", " 1", "1 2", + strings.Repeat("a", 64), + } + for _, val := range badValues { + if msgs := IsDNS1123Label(val); len(msgs) == 0 { + t.Errorf("expected false for '%s'", val) + } + } +} + +func TestIsDNS1123Subdomain(t *testing.T) { + goodValues := []string{ + "a", "ab", "abc", "a1", "a-1", "a--1--2--b", + "0", "01", "012", "1a", "1-a", "1--a--b--2", + "a.a", "ab.a", "abc.a", "a1.a", "a-1.a", "a--1--2--b.a", + "a.1", "ab.1", "abc.1", "a1.1", "a-1.1", "a--1--2--b.1", + "0.a", "01.a", "012.a", "1a.a", "1-a.a", "1--a--b--2", + "0.1", "01.1", "012.1", "1a.1", "1-a.1", "1--a--b--2.1", + "a.b.c.d.e", "aa.bb.cc.dd.ee", "1.2.3.4.5", "11.22.33.44.55", + strings.Repeat("a", 253), + } + for _, val := range goodValues { + if msgs := IsDNS1123Subdomain(val); len(msgs) != 0 { + t.Errorf("expected true for '%s': %v", val, msgs) + } + } + + badValues := []string{ + "", "A", "ABC", "aBc", "A1", "A-1", "1-A", + "-", "a-", "-a", "1-", "-1", + "_", "a_", "_a", "a_b", "1_", "_1", "1_2", + ".", "a.", ".a", "a..b", "1.", ".1", "1..2", + " ", "a ", " a", "a b", "1 ", " 1", "1 2", + "A.a", "aB.a", "ab.A", "A1.a", "a1.A", + "A.1", "aB.1", "A1.1", "1A.1", + "0.A", "01.A", "012.A", "1A.a", "1a.A", + "A.B.C.D.E", "AA.BB.CC.DD.EE", "a.B.c.d.e", "aa.bB.cc.dd.ee", + "a@b", "a,b", "a_b", "a;b", + "a:b", "a%b", "a?b", "a$b", + strings.Repeat("a", 254), + } + for _, val := range badValues { + if msgs := IsDNS1123Subdomain(val); len(msgs) == 0 { + t.Errorf("expected false for '%s'", val) + } + } +} + +func TestIsDNS1035Label(t *testing.T) { + goodValues := []string{ + "a", "ab", "abc", "a1", "a-1", "a--1--2--b", + strings.Repeat("a", 63), + } + for _, val := range goodValues { + if msgs := IsDNS1035Label(val); len(msgs) != 0 { + t.Errorf("expected true for '%s': %v", val, msgs) + } + } + + badValues := []string{ + "0", "01", "012", "1a", "1-a", "1--a--b--2", + "", "A", "ABC", "aBc", "A1", "A-1", "1-A", + "-", "a-", "-a", "1-", "-1", + "_", "a_", "_a", "a_b", "1_", "_1", "1_2", + ".", "a.", ".a", "a.b", "1.", ".1", "1.2", + " ", "a ", " a", "a b", "1 ", " 1", "1 2", + strings.Repeat("a", 64), + } + for _, val := range badValues { + if msgs := IsDNS1035Label(val); len(msgs) == 0 { + t.Errorf("expected false for '%s'", val) + } + } +} + +func TestIsCIdentifier(t *testing.T) { + goodValues := []string{ + "a", "ab", "abc", "a1", "_a", "a_", "a_b", "a_1", "a__1__2__b", "__abc_123", + "A", "AB", "AbC", "A1", "_A", "A_", "A_B", "A_1", "A__1__2__B", "__123_ABC", + } + for _, val := range goodValues { + if msgs := IsCIdentifier(val); len(msgs) != 0 { + t.Errorf("expected true for '%s': %v", val, msgs) + } + } + + badValues := []string{ + "", "1", "123", "1a", + "-", "a-", "-a", "1-", "-1", "1_", "1_2", + ".", "a.", ".a", "a.b", "1.", ".1", "1.2", + " ", "a ", " a", "a b", "1 ", " 1", "1 2", + "#a#", + } + for _, val := range badValues { + if msgs := IsCIdentifier(val); len(msgs) == 0 { + t.Errorf("expected false for '%s'", val) + } + } +} + +func TestIsValidPortNum(t *testing.T) { + goodValues := []int{1, 2, 1000, 16384, 32768, 65535} + for _, val := range goodValues { + if msgs := IsValidPortNum(val); len(msgs) != 0 { + t.Errorf("expected true for %d, got %v", val, msgs) + } + } + + badValues := []int{0, -1, 65536, 100000} + for _, val := range badValues { + if msgs := IsValidPortNum(val); len(msgs) == 0 { + t.Errorf("expected false for %d", val) + } + } +} + +func createGroupIDs(ids ...int64) []int64 { + var output []int64 + for _, id := range ids { + output = append(output, int64(id)) + } + return output +} + +func createUserIDs(ids ...int64) []int64 { + var output []int64 + for _, id := range ids { + output = append(output, int64(id)) + } + return output +} + +func TestIsValidGroupID(t *testing.T) { + goodValues := createGroupIDs(0, 1, 1000, 65535, 2147483647) + for _, val := range goodValues { + if msgs := IsValidGroupID(val); len(msgs) != 0 { + t.Errorf("expected true for '%d': %v", val, msgs) + } + } + + badValues := createGroupIDs(-1, -1003, 2147483648, 4147483647) + for _, val := range badValues { + if msgs := IsValidGroupID(val); len(msgs) == 0 { + t.Errorf("expected false for '%d'", val) + } + } +} + +func TestIsValidUserID(t *testing.T) { + goodValues := createUserIDs(0, 1, 1000, 65535, 2147483647) + for _, val := range goodValues { + if msgs := IsValidUserID(val); len(msgs) != 0 { + t.Errorf("expected true for '%d': %v", val, msgs) + } + } + + badValues := createUserIDs(-1, -1003, 2147483648, 4147483647) + for _, val := range badValues { + if msgs := IsValidUserID(val); len(msgs) == 0 { + t.Errorf("expected false for '%d'", val) + } + } +} + +func TestIsValidPortName(t *testing.T) { + goodValues := []string{"telnet", "re-mail-ck", "pop3", "a", "a-1", "1-a", "a-1-b-2-c", "1-a-2-b-3"} + for _, val := range goodValues { + if msgs := IsValidPortName(val); len(msgs) != 0 { + t.Errorf("expected true for %q: %v", val, msgs) + } + } + + badValues := []string{"longerthan15characters", "", strings.Repeat("a", 16), "12345", "1-2-3-4", "-begin", "end-", "two--hyphens", "whois++"} + for _, val := range badValues { + if msgs := IsValidPortName(val); len(msgs) == 0 { + t.Errorf("expected false for %q", val) + } + } +} + +func TestIsQualifiedName(t *testing.T) { + successCases := []string{ + "simple", + "now-with-dashes", + "1-starts-with-num", + "1234", + "simple/simple", + "now-with-dashes/simple", + "now-with-dashes/now-with-dashes", + "now.with.dots/simple", + "now-with.dashes-and.dots/simple", + "1-num.2-num/3-num", + "1234/5678", + "1.2.3.4/5678", + "Uppercase_Is_OK_123", + "example.com/Uppercase_Is_OK_123", + "requests.storage-foo", + strings.Repeat("a", 63), + strings.Repeat("a", 253) + "/" + strings.Repeat("b", 63), + } + for i := range successCases { + if errs := IsQualifiedName(successCases[i]); len(errs) != 0 { + t.Errorf("case[%d]: %q: expected success: %v", i, successCases[i], errs) + } + } + + errorCases := []string{ + "nospecialchars%^=@", + "cantendwithadash-", + "-cantstartwithadash-", + "only/one/slash", + "Example.com/abc", + "example_com/abc", + "example.com/", + "/simple", + strings.Repeat("a", 64), + strings.Repeat("a", 254) + "/abc", + } + for i := range errorCases { + if errs := IsQualifiedName(errorCases[i]); len(errs) == 0 { + t.Errorf("case[%d]: %q: expected failure", i, errorCases[i]) + } + } +} + +func TestIsValidLabelValue(t *testing.T) { + successCases := []string{ + "simple", + "now-with-dashes", + "1-starts-with-num", + "end-with-num-1", + "1234", // only num + strings.Repeat("a", 63), // to the limit + "", // empty value + } + for i := range successCases { + if errs := IsValidLabelValue(successCases[i]); len(errs) != 0 { + t.Errorf("case %s expected success: %v", successCases[i], errs) + } + } + + errorCases := []string{ + "nospecialchars%^=@", + "Tama-nui-te-rā.is.Māori.sun", + "\\backslashes\\are\\bad", + "-starts-with-dash", + "ends-with-dash-", + ".starts.with.dot", + "ends.with.dot.", + strings.Repeat("a", 64), // over the limit + } + for i := range errorCases { + if errs := IsValidLabelValue(errorCases[i]); len(errs) == 0 { + t.Errorf("case[%d] expected failure", i) + } + } +} + +func TestIsValidIP(t *testing.T) { + goodValues := []string{ + "::1", + "2a00:79e0:2:0:f1c3:e797:93c1:df80", + "::", + "2001:4860:4860::8888", + "::fff:1.1.1.1", + "1.1.1.1", + "1.1.1.01", + "255.0.0.1", + "1.0.0.0", + "0.0.0.0", + } + for _, val := range goodValues { + if msgs := IsValidIP(val); len(msgs) != 0 { + t.Errorf("expected true for %q: %v", val, msgs) + } + } + + badValues := []string{ + "[2001:db8:0:1]:80", + "myhost.mydomain", + "-1.0.0.0", + "[2001:db8:0:1]", + "a", + } + for _, val := range badValues { + if msgs := IsValidIP(val); len(msgs) == 0 { + t.Errorf("expected false for %q", val) + } + } +} + +func TestIsHTTPHeaderName(t *testing.T) { + goodValues := []string{ + // Common ones + "Accept-Encoding", "Host", "If-Modified-Since", "X-Forwarded-For", + // Weirdo, but still conforming names + "a", "ab", "abc", "a1", "-a", "a-", "a-b", "a-1", "a--1--2--b", "--abc-123", + "A", "AB", "AbC", "A1", "-A", "A-", "A-B", "A-1", "A--1--2--B", "--123-ABC", + } + for _, val := range goodValues { + if msgs := IsHTTPHeaderName(val); len(msgs) != 0 { + t.Errorf("expected true for '%s': %v", val, msgs) + } + } + + badValues := []string{ + "Host:", "X-Forwarded-For:", "X-@Home", + "", "_", "a_", "_a", "1_", "1_2", ".", "a.", ".a", "a.b", "1.", ".1", "1.2", + " ", "a ", " a", "a b", "1 ", " 1", "1 2", "#a#", "^", ",", ";", "=", "<", + "?", "@", "{", + } + for _, val := range badValues { + if msgs := IsHTTPHeaderName(val); len(msgs) == 0 { + t.Errorf("expected false for '%s'", val) + } + } +} + +func TestIsValidPercent(t *testing.T) { + goodValues := []string{ + "0%", + "00000%", + "1%", + "01%", + "99%", + "100%", + "101%", + } + for _, val := range goodValues { + if msgs := IsValidPercent(val); len(msgs) != 0 { + t.Errorf("expected true for %q: %v", val, msgs) + } + } + + badValues := []string{ + "", + "0", + "100", + "0.0%", + "99.9%", + "hundred", + " 1%", + "1% ", + "-0%", + "-1%", + "+1%", + } + for _, val := range badValues { + if msgs := IsValidPercent(val); len(msgs) == 0 { + t.Errorf("expected false for %q", val) + } + } +} + +func TestIsConfigMapKey(t *testing.T) { + successCases := []string{ + "a", + "good", + "good-good", + "still.good", + "this.is.also.good", + ".so.is.this", + "THIS_IS_GOOD", + "so_is_this_17", + } + + for i := range successCases { + if errs := IsConfigMapKey(successCases[i]); len(errs) != 0 { + t.Errorf("[%d] expected success: %v", i, errs) + } + } + + failureCases := []string{ + ".", + "..", + "..bad", + "b*d", + "bad!&bad", + } + + for i := range failureCases { + if errs := IsConfigMapKey(failureCases[i]); len(errs) == 0 { + t.Errorf("[%d] expected failure", i) + } + } +} + +func TestIsWildcardDNS1123Subdomain(t *testing.T) { + goodValues := []string{ + "*.example.com", + "*.bar.com", + "*.foo.bar.com", + } + for _, val := range goodValues { + if errs := IsWildcardDNS1123Subdomain(val); len(errs) != 0 { + t.Errorf("expected no errors for %q: %v", val, errs) + } + } + + badValues := []string{ + "*.*.bar.com", + "*.foo.*.com", + "*bar.com", + "f*.bar.com", + "*", + } + for _, val := range badValues { + if errs := IsWildcardDNS1123Subdomain(val); len(errs) == 0 { + t.Errorf("expected errors for %q", val) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD b/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD new file mode 100644 index 000000000..3a98b65b9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/wait/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["wait_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "wait.go", + ], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/wait/doc.go b/vendor/k8s.io/apimachinery/pkg/util/wait/doc.go new file mode 100644 index 000000000..3f0c968ec --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/wait/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package wait provides tools for polling or listening for changes +// to a condition. +package wait // import "k8s.io/apimachinery/pkg/util/wait" diff --git a/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go b/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go new file mode 100644 index 000000000..badaa2159 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go @@ -0,0 +1,349 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package wait + +import ( + "errors" + "math/rand" + "time" + + "k8s.io/apimachinery/pkg/util/runtime" +) + +// For any test of the style: +// ... +// <- time.After(timeout): +// t.Errorf("Timed out") +// The value for timeout should effectively be "forever." Obviously we don't want our tests to truly lock up forever, but 30s +// is long enough that it is effectively forever for the things that can slow down a run on a heavily contended machine +// (GC, seeks, etc), but not so long as to make a developer ctrl-c a test run if they do happen to break that test. +var ForeverTestTimeout = time.Second * 30 + +// NeverStop may be passed to Until to make it never stop. +var NeverStop <-chan struct{} = make(chan struct{}) + +// Forever calls f every period for ever. +// +// Forever is syntactic sugar on top of Until. +func Forever(f func(), period time.Duration) { + Until(f, period, NeverStop) +} + +// Until loops until stop channel is closed, running f every period. +// +// Until is syntactic sugar on top of JitterUntil with zero jitter factor and +// with sliding = true (which means the timer for period starts after the f +// completes). +func Until(f func(), period time.Duration, stopCh <-chan struct{}) { + JitterUntil(f, period, 0.0, true, stopCh) +} + +// NonSlidingUntil loops until stop channel is closed, running f every +// period. +// +// NonSlidingUntil is syntactic sugar on top of JitterUntil with zero jitter +// factor, with sliding = false (meaning the timer for period starts at the same +// time as the function starts). +func NonSlidingUntil(f func(), period time.Duration, stopCh <-chan struct{}) { + JitterUntil(f, period, 0.0, false, stopCh) +} + +// JitterUntil loops until stop channel is closed, running f every period. +// +// If jitterFactor is positive, the period is jittered before every run of f. +// If jitterFactor is not positive, the period is unchanged and not jittered. +// +// If sliding is true, the period is computed after f runs. If it is false then +// period includes the runtime for f. +// +// Close stopCh to stop. f may not be invoked if stop channel is already +// closed. Pass NeverStop to if you don't want it stop. +func JitterUntil(f func(), period time.Duration, jitterFactor float64, sliding bool, stopCh <-chan struct{}) { + var t *time.Timer + var sawTimeout bool + + for { + select { + case <-stopCh: + return + default: + } + + jitteredPeriod := period + if jitterFactor > 0.0 { + jitteredPeriod = Jitter(period, jitterFactor) + } + + if !sliding { + t = resetOrReuseTimer(t, jitteredPeriod, sawTimeout) + } + + func() { + defer runtime.HandleCrash() + f() + }() + + if sliding { + t = resetOrReuseTimer(t, jitteredPeriod, sawTimeout) + } + + // NOTE: b/c there is no priority selection in golang + // it is possible for this to race, meaning we could + // trigger t.C and stopCh, and t.C select falls through. + // In order to mitigate we re-check stopCh at the beginning + // of every loop to prevent extra executions of f(). + select { + case <-stopCh: + return + case <-t.C: + sawTimeout = true + } + } +} + +// Jitter returns a time.Duration between duration and duration + maxFactor * +// duration. +// +// This allows clients to avoid converging on periodic behavior. If maxFactor +// is 0.0, a suggested default value will be chosen. +func Jitter(duration time.Duration, maxFactor float64) time.Duration { + if maxFactor <= 0.0 { + maxFactor = 1.0 + } + wait := duration + time.Duration(rand.Float64()*maxFactor*float64(duration)) + return wait +} + +// ErrWaitTimeout is returned when the condition exited without success. +var ErrWaitTimeout = errors.New("timed out waiting for the condition") + +// ConditionFunc returns true if the condition is satisfied, or an error +// if the loop should be aborted. +type ConditionFunc func() (done bool, err error) + +// Backoff holds parameters applied to a Backoff function. +type Backoff struct { + Duration time.Duration // the base duration + Factor float64 // Duration is multiplied by factor each iteration + Jitter float64 // The amount of jitter applied each iteration + Steps int // Exit with error after this many steps +} + +// ExponentialBackoff repeats a condition check with exponential backoff. +// +// It checks the condition up to Steps times, increasing the wait by multiplying +// the previous duration by Factor. +// +// If Jitter is greater than zero, a random amount of each duration is added +// (between duration and duration*(1+jitter)). +// +// If the condition never returns true, ErrWaitTimeout is returned. All other +// errors terminate immediately. +func ExponentialBackoff(backoff Backoff, condition ConditionFunc) error { + duration := backoff.Duration + for i := 0; i < backoff.Steps; i++ { + if i != 0 { + adjusted := duration + if backoff.Jitter > 0.0 { + adjusted = Jitter(duration, backoff.Jitter) + } + time.Sleep(adjusted) + duration = time.Duration(float64(duration) * backoff.Factor) + } + if ok, err := condition(); err != nil || ok { + return err + } + } + return ErrWaitTimeout +} + +// Poll tries a condition func until it returns true, an error, or the timeout +// is reached. +// +// Poll always waits the interval before the run of 'condition'. +// 'condition' will always be invoked at least once. +// +// Some intervals may be missed if the condition takes too long or the time +// window is too short. +// +// If you want to Poll something forever, see PollInfinite. +func Poll(interval, timeout time.Duration, condition ConditionFunc) error { + return pollInternal(poller(interval, timeout), condition) +} + +func pollInternal(wait WaitFunc, condition ConditionFunc) error { + done := make(chan struct{}) + defer close(done) + return WaitFor(wait, condition, done) +} + +// PollImmediate tries a condition func until it returns true, an error, or the timeout +// is reached. +// +// Poll always checks 'condition' before waiting for the interval. 'condition' +// will always be invoked at least once. +// +// Some intervals may be missed if the condition takes too long or the time +// window is too short. +// +// If you want to Poll something forever, see PollInfinite. +func PollImmediate(interval, timeout time.Duration, condition ConditionFunc) error { + return pollImmediateInternal(poller(interval, timeout), condition) +} + +func pollImmediateInternal(wait WaitFunc, condition ConditionFunc) error { + done, err := condition() + if err != nil { + return err + } + if done { + return nil + } + return pollInternal(wait, condition) +} + +// PollInfinite tries a condition func until it returns true or an error +// +// PollInfinite always waits the interval before the run of 'condition'. +// +// Some intervals may be missed if the condition takes too long or the time +// window is too short. +func PollInfinite(interval time.Duration, condition ConditionFunc) error { + done := make(chan struct{}) + defer close(done) + return PollUntil(interval, condition, done) +} + +// PollImmediateInfinite tries a condition func until it returns true or an error +// +// PollImmediateInfinite runs the 'condition' before waiting for the interval. +// +// Some intervals may be missed if the condition takes too long or the time +// window is too short. +func PollImmediateInfinite(interval time.Duration, condition ConditionFunc) error { + done, err := condition() + if err != nil { + return err + } + if done { + return nil + } + return PollInfinite(interval, condition) +} + +// PollUntil tries a condition func until it returns true, an error or stopCh is +// closed. +// +// PolUntil always waits interval before the first run of 'condition'. +// 'condition' will always be invoked at least once. +func PollUntil(interval time.Duration, condition ConditionFunc, stopCh <-chan struct{}) error { + return WaitFor(poller(interval, 0), condition, stopCh) +} + +// WaitFunc creates a channel that receives an item every time a test +// should be executed and is closed when the last test should be invoked. +type WaitFunc func(done <-chan struct{}) <-chan struct{} + +// WaitFor continually checks 'fn' as driven by 'wait'. +// +// WaitFor gets a channel from 'wait()'', and then invokes 'fn' once for every value +// placed on the channel and once more when the channel is closed. +// +// If 'fn' returns an error the loop ends and that error is returned, and if +// 'fn' returns true the loop ends and nil is returned. +// +// ErrWaitTimeout will be returned if the channel is closed without fn ever +// returning true. +func WaitFor(wait WaitFunc, fn ConditionFunc, done <-chan struct{}) error { + c := wait(done) + for { + _, open := <-c + ok, err := fn() + if err != nil { + return err + } + if ok { + return nil + } + if !open { + break + } + } + return ErrWaitTimeout +} + +// poller returns a WaitFunc that will send to the channel every interval until +// timeout has elapsed and then closes the channel. +// +// Over very short intervals you may receive no ticks before the channel is +// closed. A timeout of 0 is interpreted as an infinity. +// +// Output ticks are not buffered. If the channel is not ready to receive an +// item, the tick is skipped. +func poller(interval, timeout time.Duration) WaitFunc { + return WaitFunc(func(done <-chan struct{}) <-chan struct{} { + ch := make(chan struct{}) + + go func() { + defer close(ch) + + tick := time.NewTicker(interval) + defer tick.Stop() + + var after <-chan time.Time + if timeout != 0 { + // time.After is more convenient, but it + // potentially leaves timers around much longer + // than necessary if we exit early. + timer := time.NewTimer(timeout) + after = timer.C + defer timer.Stop() + } + + for { + select { + case <-tick.C: + // If the consumer isn't ready for this signal drop it and + // check the other channels. + select { + case ch <- struct{}{}: + default: + } + case <-after: + return + case <-done: + return + } + } + }() + + return ch + }) +} + +// resetOrReuseTimer avoids allocating a new timer if one is already in use. +// Not safe for multiple threads. +func resetOrReuseTimer(t *time.Timer, d time.Duration, sawTimeout bool) *time.Timer { + if t == nil { + return time.NewTimer(d) + } + if !t.Stop() && !sawTimeout { + <-t.C + } + t.Reset(d) + return t +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/wait/wait_test.go b/vendor/k8s.io/apimachinery/pkg/util/wait/wait_test.go new file mode 100644 index 000000000..2dfd28777 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/wait/wait_test.go @@ -0,0 +1,501 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package wait + +import ( + "errors" + "fmt" + "sync" + "sync/atomic" + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/runtime" +) + +func TestUntil(t *testing.T) { + ch := make(chan struct{}) + close(ch) + Until(func() { + t.Fatal("should not have been invoked") + }, 0, ch) + + ch = make(chan struct{}) + called := make(chan struct{}) + go func() { + Until(func() { + called <- struct{}{} + }, 0, ch) + close(called) + }() + <-called + close(ch) + <-called +} + +func TestNonSlidingUntil(t *testing.T) { + ch := make(chan struct{}) + close(ch) + NonSlidingUntil(func() { + t.Fatal("should not have been invoked") + }, 0, ch) + + ch = make(chan struct{}) + called := make(chan struct{}) + go func() { + NonSlidingUntil(func() { + called <- struct{}{} + }, 0, ch) + close(called) + }() + <-called + close(ch) + <-called +} + +func TestUntilReturnsImmediately(t *testing.T) { + now := time.Now() + ch := make(chan struct{}) + Until(func() { + close(ch) + }, 30*time.Second, ch) + if now.Add(25 * time.Second).Before(time.Now()) { + t.Errorf("Until did not return immediately when the stop chan was closed inside the func") + } +} + +func TestJitterUntil(t *testing.T) { + ch := make(chan struct{}) + // if a channel is closed JitterUntil never calls function f + // and returns immediately + close(ch) + JitterUntil(func() { + t.Fatal("should not have been invoked") + }, 0, 1.0, true, ch) + + ch = make(chan struct{}) + called := make(chan struct{}) + go func() { + JitterUntil(func() { + called <- struct{}{} + }, 0, 1.0, true, ch) + close(called) + }() + <-called + close(ch) + <-called +} + +func TestJitterUntilReturnsImmediately(t *testing.T) { + now := time.Now() + ch := make(chan struct{}) + JitterUntil(func() { + close(ch) + }, 30*time.Second, 1.0, true, ch) + if now.Add(25 * time.Second).Before(time.Now()) { + t.Errorf("JitterUntil did not return immediately when the stop chan was closed inside the func") + } +} + +func TestJitterUntilRecoversPanic(t *testing.T) { + // Save and restore crash handlers + originalReallyCrash := runtime.ReallyCrash + originalHandlers := runtime.PanicHandlers + defer func() { + runtime.ReallyCrash = originalReallyCrash + runtime.PanicHandlers = originalHandlers + }() + + called := 0 + handled := 0 + + // Hook up a custom crash handler to ensure it is called when a jitter function panics + runtime.ReallyCrash = false + runtime.PanicHandlers = []func(interface{}){ + func(p interface{}) { + handled++ + }, + } + + ch := make(chan struct{}) + JitterUntil(func() { + called++ + if called > 2 { + close(ch) + return + } + panic("TestJitterUntilRecoversPanic") + }, time.Millisecond, 1.0, true, ch) + + if called != 3 { + t.Errorf("Expected panic recovers") + } +} + +func TestJitterUntilNegativeFactor(t *testing.T) { + now := time.Now() + ch := make(chan struct{}) + called := make(chan struct{}) + received := make(chan struct{}) + go func() { + JitterUntil(func() { + called <- struct{}{} + <-received + }, time.Second, -30.0, true, ch) + }() + // first loop + <-called + received <- struct{}{} + // second loop + <-called + close(ch) + received <- struct{}{} + + // it should take at most 2 seconds + some overhead, not 3 + if now.Add(3 * time.Second).Before(time.Now()) { + t.Errorf("JitterUntil did not returned after predefined period with negative jitter factor when the stop chan was closed inside the func") + } + +} + +func TestExponentialBackoff(t *testing.T) { + opts := Backoff{Factor: 1.0, Steps: 3} + + // waits up to steps + i := 0 + err := ExponentialBackoff(opts, func() (bool, error) { + i++ + return false, nil + }) + if err != ErrWaitTimeout || i != opts.Steps { + t.Errorf("unexpected error: %v", err) + } + + // returns immediately + i = 0 + err = ExponentialBackoff(opts, func() (bool, error) { + i++ + return true, nil + }) + if err != nil || i != 1 { + t.Errorf("unexpected error: %v", err) + } + + // returns immediately on error + testErr := fmt.Errorf("some other error") + err = ExponentialBackoff(opts, func() (bool, error) { + return false, testErr + }) + if err != testErr { + t.Errorf("unexpected error: %v", err) + } + + // invoked multiple times + i = 1 + err = ExponentialBackoff(opts, func() (bool, error) { + if i < opts.Steps { + i++ + return false, nil + } + return true, nil + }) + if err != nil || i != opts.Steps { + t.Errorf("unexpected error: %v", err) + } +} + +func TestPoller(t *testing.T) { + done := make(chan struct{}) + defer close(done) + w := poller(time.Millisecond, 2*time.Millisecond) + ch := w(done) + count := 0 +DRAIN: + for { + select { + case _, open := <-ch: + if !open { + break DRAIN + } + count++ + case <-time.After(ForeverTestTimeout): + t.Errorf("unexpected timeout after poll") + } + } + if count > 3 { + t.Errorf("expected up to three values, got %d", count) + } +} + +type fakePoller struct { + max int + used int32 // accessed with atomics + wg sync.WaitGroup +} + +func fakeTicker(max int, used *int32, doneFunc func()) WaitFunc { + return func(done <-chan struct{}) <-chan struct{} { + ch := make(chan struct{}) + go func() { + defer doneFunc() + defer close(ch) + for i := 0; i < max; i++ { + select { + case ch <- struct{}{}: + case <-done: + return + } + if used != nil { + atomic.AddInt32(used, 1) + } + } + }() + return ch + } +} + +func (fp *fakePoller) GetWaitFunc() WaitFunc { + fp.wg.Add(1) + return fakeTicker(fp.max, &fp.used, fp.wg.Done) +} + +func TestPoll(t *testing.T) { + invocations := 0 + f := ConditionFunc(func() (bool, error) { + invocations++ + return true, nil + }) + fp := fakePoller{max: 1} + if err := pollInternal(fp.GetWaitFunc(), f); err != nil { + t.Fatalf("unexpected error %v", err) + } + fp.wg.Wait() + if invocations != 1 { + t.Errorf("Expected exactly one invocation, got %d", invocations) + } + used := atomic.LoadInt32(&fp.used) + if used != 1 { + t.Errorf("Expected exactly one tick, got %d", used) + } +} + +func TestPollError(t *testing.T) { + expectedError := errors.New("Expected error") + f := ConditionFunc(func() (bool, error) { + return false, expectedError + }) + fp := fakePoller{max: 1} + if err := pollInternal(fp.GetWaitFunc(), f); err == nil || err != expectedError { + t.Fatalf("Expected error %v, got none %v", expectedError, err) + } + fp.wg.Wait() + used := atomic.LoadInt32(&fp.used) + if used != 1 { + t.Errorf("Expected exactly one tick, got %d", used) + } +} + +func TestPollImmediate(t *testing.T) { + invocations := 0 + f := ConditionFunc(func() (bool, error) { + invocations++ + return true, nil + }) + fp := fakePoller{max: 0} + if err := pollImmediateInternal(fp.GetWaitFunc(), f); err != nil { + t.Fatalf("unexpected error %v", err) + } + // We don't need to wait for fp.wg, as pollImmediate shouldn't call WaitFunc at all. + if invocations != 1 { + t.Errorf("Expected exactly one invocation, got %d", invocations) + } + used := atomic.LoadInt32(&fp.used) + if used != 0 { + t.Errorf("Expected exactly zero ticks, got %d", used) + } +} + +func TestPollImmediateError(t *testing.T) { + expectedError := errors.New("Expected error") + f := ConditionFunc(func() (bool, error) { + return false, expectedError + }) + fp := fakePoller{max: 0} + if err := pollImmediateInternal(fp.GetWaitFunc(), f); err == nil || err != expectedError { + t.Fatalf("Expected error %v, got none %v", expectedError, err) + } + // We don't need to wait for fp.wg, as pollImmediate shouldn't call WaitFunc at all. + used := atomic.LoadInt32(&fp.used) + if used != 0 { + t.Errorf("Expected exactly zero ticks, got %d", used) + } +} + +func TestPollForever(t *testing.T) { + ch := make(chan struct{}) + done := make(chan struct{}, 1) + complete := make(chan struct{}) + go func() { + f := ConditionFunc(func() (bool, error) { + ch <- struct{}{} + select { + case <-done: + return true, nil + default: + } + return false, nil + }) + + if err := PollInfinite(time.Microsecond, f); err != nil { + t.Fatalf("unexpected error %v", err) + } + + close(ch) + complete <- struct{}{} + }() + + // ensure the condition is opened + <-ch + + // ensure channel sends events + for i := 0; i < 10; i++ { + select { + case _, open := <-ch: + if !open { + t.Fatalf("did not expect channel to be closed") + } + case <-time.After(ForeverTestTimeout): + t.Fatalf("channel did not return at least once within the poll interval") + } + } + + // at most one poll notification should be sent once we return from the condition + done <- struct{}{} + go func() { + for i := 0; i < 2; i++ { + _, open := <-ch + if !open { + return + } + } + t.Fatalf("expected closed channel after two iterations") + }() + <-complete +} + +func TestWaitFor(t *testing.T) { + var invocations int + testCases := map[string]struct { + F ConditionFunc + Ticks int + Invoked int + Err bool + }{ + "invoked once": { + ConditionFunc(func() (bool, error) { + invocations++ + return true, nil + }), + 2, + 1, + false, + }, + "invoked and returns a timeout": { + ConditionFunc(func() (bool, error) { + invocations++ + return false, nil + }), + 2, + 3, // the contract of WaitFor() says the func is called once more at the end of the wait + true, + }, + "returns immediately on error": { + ConditionFunc(func() (bool, error) { + invocations++ + return false, errors.New("test") + }), + 2, + 1, + true, + }, + } + for k, c := range testCases { + invocations = 0 + ticker := fakeTicker(c.Ticks, nil, func() {}) + err := func() error { + done := make(chan struct{}) + defer close(done) + return WaitFor(ticker, c.F, done) + }() + switch { + case c.Err && err == nil: + t.Errorf("%s: Expected error, got nil", k) + continue + case !c.Err && err != nil: + t.Errorf("%s: Expected no error, got: %#v", k, err) + continue + } + if invocations != c.Invoked { + t.Errorf("%s: Expected %d invocations, got %d", k, c.Invoked, invocations) + } + } +} + +func TestWaitForWithDelay(t *testing.T) { + done := make(chan struct{}) + defer close(done) + WaitFor(poller(time.Millisecond, ForeverTestTimeout), func() (bool, error) { + time.Sleep(10 * time.Millisecond) + return true, nil + }, done) + // If polling goroutine doesn't see the done signal it will leak timers. + select { + case done <- struct{}{}: + case <-time.After(ForeverTestTimeout): + t.Errorf("expected an ack of the done signal.") + } +} + +func TestPollUntil(t *testing.T) { + stopCh := make(chan struct{}) + called := make(chan bool) + pollDone := make(chan struct{}) + + go func() { + PollUntil(time.Microsecond, ConditionFunc(func() (bool, error) { + called <- true + return false, nil + }), stopCh) + + close(pollDone) + }() + + // make sure we're called once + <-called + // this should trigger a "done" + close(stopCh) + + go func() { + // release the condition func if needed + for { + <-called + } + }() + + // make sure we finished the poll + <-pollDone +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD b/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD new file mode 100644 index 000000000..645295f7c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["decoder_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["decoder.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go b/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go new file mode 100644 index 000000000..6ebfaea70 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder.go @@ -0,0 +1,346 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "bufio" + "bytes" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "strings" + "unicode" + + "github.com/ghodss/yaml" + "github.com/golang/glog" +) + +// ToJSON converts a single YAML document into a JSON document +// or returns an error. If the document appears to be JSON the +// YAML decoding path is not used (so that error messages are +// JSON specific). +func ToJSON(data []byte) ([]byte, error) { + if hasJSONPrefix(data) { + return data, nil + } + return yaml.YAMLToJSON(data) +} + +// YAMLToJSONDecoder decodes YAML documents from an io.Reader by +// separating individual documents. It first converts the YAML +// body to JSON, then unmarshals the JSON. +type YAMLToJSONDecoder struct { + reader Reader +} + +// NewYAMLToJSONDecoder decodes YAML documents from the provided +// stream in chunks by converting each document (as defined by +// the YAML spec) into its own chunk, converting it to JSON via +// yaml.YAMLToJSON, and then passing it to json.Decoder. +func NewYAMLToJSONDecoder(r io.Reader) *YAMLToJSONDecoder { + reader := bufio.NewReader(r) + return &YAMLToJSONDecoder{ + reader: NewYAMLReader(reader), + } +} + +// Decode reads a YAML document as JSON from the stream or returns +// an error. The decoding rules match json.Unmarshal, not +// yaml.Unmarshal. +func (d *YAMLToJSONDecoder) Decode(into interface{}) error { + bytes, err := d.reader.Read() + if err != nil && err != io.EOF { + return err + } + + if len(bytes) != 0 { + err := yaml.Unmarshal(bytes, into) + if err != nil { + return YAMLSyntaxError{err} + } + } + return err +} + +// YAMLDecoder reads chunks of objects and returns ErrShortBuffer if +// the data is not sufficient. +type YAMLDecoder struct { + r io.ReadCloser + scanner *bufio.Scanner + remaining []byte +} + +// NewDocumentDecoder decodes YAML documents from the provided +// stream in chunks by converting each document (as defined by +// the YAML spec) into its own chunk. io.ErrShortBuffer will be +// returned if the entire buffer could not be read to assist +// the caller in framing the chunk. +func NewDocumentDecoder(r io.ReadCloser) io.ReadCloser { + scanner := bufio.NewScanner(r) + scanner.Split(splitYAMLDocument) + return &YAMLDecoder{ + r: r, + scanner: scanner, + } +} + +// Read reads the previous slice into the buffer, or attempts to read +// the next chunk. +// TODO: switch to readline approach. +func (d *YAMLDecoder) Read(data []byte) (n int, err error) { + left := len(d.remaining) + if left == 0 { + // return the next chunk from the stream + if !d.scanner.Scan() { + err := d.scanner.Err() + if err == nil { + err = io.EOF + } + return 0, err + } + out := d.scanner.Bytes() + d.remaining = out + left = len(out) + } + + // fits within data + if left <= len(data) { + copy(data, d.remaining) + d.remaining = nil + return len(d.remaining), nil + } + + // caller will need to reread + copy(data, d.remaining[:left]) + d.remaining = d.remaining[left:] + return len(data), io.ErrShortBuffer +} + +func (d *YAMLDecoder) Close() error { + return d.r.Close() +} + +const yamlSeparator = "\n---" +const separator = "---" + +// splitYAMLDocument is a bufio.SplitFunc for splitting YAML streams into individual documents. +func splitYAMLDocument(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + sep := len([]byte(yamlSeparator)) + if i := bytes.Index(data, []byte(yamlSeparator)); i >= 0 { + // We have a potential document terminator + i += sep + after := data[i:] + if len(after) == 0 { + // we can't read any more characters + if atEOF { + return len(data), data[:len(data)-sep], nil + } + return 0, nil, nil + } + if j := bytes.IndexByte(after, '\n'); j >= 0 { + return i + j + 1, data[0 : i-sep], nil + } + return 0, nil, nil + } + // If we're at EOF, we have a final, non-terminated line. Return it. + if atEOF { + return len(data), data, nil + } + // Request more data. + return 0, nil, nil +} + +// decoder is a convenience interface for Decode. +type decoder interface { + Decode(into interface{}) error +} + +// YAMLOrJSONDecoder attempts to decode a stream of JSON documents or +// YAML documents by sniffing for a leading { character. +type YAMLOrJSONDecoder struct { + r io.Reader + bufferSize int + + decoder decoder + rawData []byte +} + +type JSONSyntaxError struct { + Line int + Err error +} + +func (e JSONSyntaxError) Error() string { + return fmt.Sprintf("json: line %d: %s", e.Line, e.Err.Error()) +} + +type YAMLSyntaxError struct { + err error +} + +func (e YAMLSyntaxError) Error() string { + return e.err.Error() +} + +// NewYAMLOrJSONDecoder returns a decoder that will process YAML documents +// or JSON documents from the given reader as a stream. bufferSize determines +// how far into the stream the decoder will look to figure out whether this +// is a JSON stream (has whitespace followed by an open brace). +func NewYAMLOrJSONDecoder(r io.Reader, bufferSize int) *YAMLOrJSONDecoder { + return &YAMLOrJSONDecoder{ + r: r, + bufferSize: bufferSize, + } +} + +// Decode unmarshals the next object from the underlying stream into the +// provide object, or returns an error. +func (d *YAMLOrJSONDecoder) Decode(into interface{}) error { + if d.decoder == nil { + buffer, origData, isJSON := GuessJSONStream(d.r, d.bufferSize) + if isJSON { + glog.V(4).Infof("decoding stream as JSON") + d.decoder = json.NewDecoder(buffer) + d.rawData = origData + } else { + glog.V(4).Infof("decoding stream as YAML") + d.decoder = NewYAMLToJSONDecoder(buffer) + } + } + err := d.decoder.Decode(into) + if jsonDecoder, ok := d.decoder.(*json.Decoder); ok { + if syntax, ok := err.(*json.SyntaxError); ok { + data, readErr := ioutil.ReadAll(jsonDecoder.Buffered()) + if readErr != nil { + glog.V(4).Infof("reading stream failed: %v", readErr) + } + js := string(data) + + // if contents from io.Reader are not complete, + // use the original raw data to prevent panic + if int64(len(js)) <= syntax.Offset { + js = string(d.rawData) + } + + start := strings.LastIndex(js[:syntax.Offset], "\n") + 1 + line := strings.Count(js[:start], "\n") + return JSONSyntaxError{ + Line: line, + Err: fmt.Errorf(syntax.Error()), + } + } + } + return err +} + +type Reader interface { + Read() ([]byte, error) +} + +type YAMLReader struct { + reader Reader +} + +func NewYAMLReader(r *bufio.Reader) *YAMLReader { + return &YAMLReader{ + reader: &LineReader{reader: r}, + } +} + +// Read returns a full YAML document. +func (r *YAMLReader) Read() ([]byte, error) { + var buffer bytes.Buffer + for { + line, err := r.reader.Read() + if err != nil && err != io.EOF { + return nil, err + } + + sep := len([]byte(separator)) + if i := bytes.Index(line, []byte(separator)); i == 0 { + // We have a potential document terminator + i += sep + after := line[i:] + if len(strings.TrimRightFunc(string(after), unicode.IsSpace)) == 0 { + if buffer.Len() != 0 { + return buffer.Bytes(), nil + } + if err == io.EOF { + return nil, err + } + } + } + if err == io.EOF { + if buffer.Len() != 0 { + // If we're at EOF, we have a final, non-terminated line. Return it. + return buffer.Bytes(), nil + } + return nil, err + } + buffer.Write(line) + } +} + +type LineReader struct { + reader *bufio.Reader +} + +// Read returns a single line (with '\n' ended) from the underlying reader. +// An error is returned iff there is an error with the underlying reader. +func (r *LineReader) Read() ([]byte, error) { + var ( + isPrefix bool = true + err error = nil + line []byte + buffer bytes.Buffer + ) + + for isPrefix && err == nil { + line, isPrefix, err = r.reader.ReadLine() + buffer.Write(line) + } + buffer.WriteByte('\n') + return buffer.Bytes(), err +} + +// GuessJSONStream scans the provided reader up to size, looking +// for an open brace indicating this is JSON. It will return the +// bufio.Reader it creates for the consumer. +func GuessJSONStream(r io.Reader, size int) (io.Reader, []byte, bool) { + buffer := bufio.NewReaderSize(r, size) + b, _ := buffer.Peek(size) + return buffer, b, hasJSONPrefix(b) +} + +var jsonPrefix = []byte("{") + +// hasJSONPrefix returns true if the provided buffer appears to start with +// a JSON open brace. +func hasJSONPrefix(buf []byte) bool { + return hasPrefix(buf, jsonPrefix) +} + +// Return true if the first non-whitespace bytes in buf is +// prefix. +func hasPrefix(buf []byte, prefix []byte) bool { + trim := bytes.TrimLeftFunc(buf, unicode.IsSpace) + return bytes.HasPrefix(trim, prefix) +} diff --git a/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder_test.go b/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder_test.go new file mode 100644 index 000000000..bd4403648 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/util/yaml/decoder_test.go @@ -0,0 +1,349 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "bufio" + "bytes" + "encoding/json" + "fmt" + "io" + "math/rand" + "reflect" + "strings" + "testing" +) + +func TestSplitYAMLDocument(t *testing.T) { + testCases := []struct { + input string + atEOF bool + expect string + adv int + }{ + {"foo", true, "foo", 3}, + {"fo", false, "", 0}, + + {"---", true, "---", 3}, + {"---\n", true, "---\n", 4}, + {"---\n", false, "", 0}, + + {"\n---\n", false, "", 5}, + {"\n---\n", true, "", 5}, + + {"abc\n---\ndef", true, "abc", 8}, + {"def", true, "def", 3}, + {"", true, "", 0}, + } + for i, testCase := range testCases { + adv, token, err := splitYAMLDocument([]byte(testCase.input), testCase.atEOF) + if err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + if adv != testCase.adv { + t.Errorf("%d: advance did not match: %d %d", i, testCase.adv, adv) + } + if testCase.expect != string(token) { + t.Errorf("%d: token did not match: %q %q", i, testCase.expect, string(token)) + } + } +} + +func TestGuessJSON(t *testing.T) { + if r, _, isJSON := GuessJSONStream(bytes.NewReader([]byte(" \n{}")), 100); !isJSON { + t.Fatalf("expected stream to be JSON") + } else { + b := make([]byte, 30) + n, err := r.Read(b) + if err != nil || n != 4 { + t.Fatalf("unexpected body: %d / %v", n, err) + } + if string(b[:n]) != " \n{}" { + t.Fatalf("unexpected body: %q", string(b[:n])) + } + } +} + +func TestScanYAML(t *testing.T) { + s := bufio.NewScanner(bytes.NewReader([]byte(`--- +stuff: 1 + +--- + `))) + s.Split(splitYAMLDocument) + if !s.Scan() { + t.Fatalf("should have been able to scan") + } + t.Logf("scan: %s", s.Text()) + if !s.Scan() { + t.Fatalf("should have been able to scan") + } + t.Logf("scan: %s", s.Text()) + if s.Scan() { + t.Fatalf("scan should have been done") + } + if s.Err() != nil { + t.Fatalf("err should have been nil: %v", s.Err()) + } +} + +func TestDecodeYAML(t *testing.T) { + s := NewYAMLToJSONDecoder(bytes.NewReader([]byte(`--- +stuff: 1 + +--- + `))) + obj := generic{} + if err := s.Decode(&obj); err != nil { + t.Fatalf("unexpected error: %v", err) + } + if fmt.Sprintf("%#v", obj) != `yaml.generic{"stuff":1}` { + t.Errorf("unexpected object: %#v", obj) + } + obj = generic{} + if err := s.Decode(&obj); err != nil { + t.Fatalf("unexpected error: %v", err) + } + if len(obj) != 0 { + t.Fatalf("unexpected object: %#v", obj) + } + obj = generic{} + if err := s.Decode(&obj); err != io.EOF { + t.Fatalf("unexpected error: %v", err) + } +} + +func TestDecodeBrokenYAML(t *testing.T) { + s := NewYAMLOrJSONDecoder(bytes.NewReader([]byte(`--- +stuff: 1 + test-foo: 1 + +--- + `)), 100) + obj := generic{} + err := s.Decode(&obj) + if err == nil { + t.Fatal("expected error with yaml: violate, got no error") + } + fmt.Printf("err: %s\n", err.Error()) + if !strings.Contains(err.Error(), "yaml: line 2:") { + t.Fatalf("expected %q to have 'yaml: line 2:' found a tab character", err.Error()) + } +} + +func TestDecodeBrokenJSON(t *testing.T) { + s := NewYAMLOrJSONDecoder(bytes.NewReader([]byte(`{ + "foo": { + "stuff": 1 + "otherStuff": 2 + } +} + `)), 100) + obj := generic{} + err := s.Decode(&obj) + if err == nil { + t.Fatal("expected error with json: prefix, got no error") + } + if !strings.HasPrefix(err.Error(), "json: line 3:") { + t.Fatalf("expected %q to have 'json: line 3:' prefix", err.Error()) + } +} + +type generic map[string]interface{} + +func TestYAMLOrJSONDecoder(t *testing.T) { + testCases := []struct { + input string + buffer int + isJSON bool + err bool + out []generic + }{ + {` {"1":2}{"3":4}`, 2, true, false, []generic{ + {"1": 2}, + {"3": 4}, + }}, + {" \n{}", 3, true, false, []generic{ + {}, + }}, + {" \na: b", 2, false, false, []generic{ + {"a": "b"}, + }}, + {" \n{\"a\": \"b\"}", 2, false, true, []generic{ + {"a": "b"}, + }}, + {" \n{\"a\": \"b\"}", 3, true, false, []generic{ + {"a": "b"}, + }}, + {` {"a":"b"}`, 100, true, false, []generic{ + {"a": "b"}, + }}, + {"", 1, false, false, []generic{}}, + {"foo: bar\n---\nbaz: biz", 100, false, false, []generic{ + {"foo": "bar"}, + {"baz": "biz"}, + }}, + {"foo: bar\n---\n", 100, false, false, []generic{ + {"foo": "bar"}, + }}, + {"foo: bar\n---", 100, false, false, []generic{ + {"foo": "bar"}, + }}, + {"foo: bar\n--", 100, false, true, []generic{ + {"foo": "bar"}, + }}, + {"foo: bar\n-", 100, false, true, []generic{ + {"foo": "bar"}, + }}, + {"foo: bar\n", 100, false, false, []generic{ + {"foo": "bar"}, + }}, + } + for i, testCase := range testCases { + decoder := NewYAMLOrJSONDecoder(bytes.NewReader([]byte(testCase.input)), testCase.buffer) + objs := []generic{} + + var err error + for { + out := make(generic) + err = decoder.Decode(&out) + if err != nil { + break + } + objs = append(objs, out) + } + if err != io.EOF { + switch { + case testCase.err && err == nil: + t.Errorf("%d: unexpected non-error", i) + continue + case !testCase.err && err != nil: + t.Errorf("%d: unexpected error: %v", i, err) + continue + case err != nil: + continue + } + } + switch decoder.decoder.(type) { + case *YAMLToJSONDecoder: + if testCase.isJSON { + t.Errorf("%d: expected JSON decoder, got YAML", i) + } + case *json.Decoder: + if !testCase.isJSON { + t.Errorf("%d: expected YAML decoder, got JSON", i) + } + } + if fmt.Sprintf("%#v", testCase.out) != fmt.Sprintf("%#v", objs) { + t.Errorf("%d: objects were not equal: \n%#v\n%#v", i, testCase.out, objs) + } + } +} + +func TestReadSingleLongLine(t *testing.T) { + testReadLines(t, []int{128 * 1024}) +} + +func TestReadRandomLineLengths(t *testing.T) { + minLength := 100 + maxLength := 96 * 1024 + maxLines := 100 + + lineLengths := make([]int, maxLines) + for i := 0; i < maxLines; i++ { + lineLengths[i] = rand.Intn(maxLength-minLength) + minLength + } + + testReadLines(t, lineLengths) +} + +func testReadLines(t *testing.T, lineLengths []int) { + var ( + lines [][]byte + inputStream []byte + ) + for _, lineLength := range lineLengths { + inputLine := make([]byte, lineLength+1) + for i := 0; i < lineLength; i++ { + char := rand.Intn('z'-'A') + 'A' + inputLine[i] = byte(char) + } + inputLine[len(inputLine)-1] = '\n' + lines = append(lines, inputLine) + } + for _, line := range lines { + inputStream = append(inputStream, line...) + } + + // init Reader + reader := bufio.NewReader(bytes.NewReader(inputStream)) + lineReader := &LineReader{reader: reader} + + // read lines + var readLines [][]byte + for range lines { + bytes, err := lineReader.Read() + if err != nil && err != io.EOF { + t.Fatalf("failed to read lines: %v", err) + } + readLines = append(readLines, bytes) + } + + // validate + for i := range lines { + if len(lines[i]) != len(readLines[i]) { + t.Fatalf("expected line length: %d, but got %d", len(lines[i]), len(readLines[i])) + } + if !reflect.DeepEqual(lines[i], readLines[i]) { + t.Fatalf("expected line: %v, but got %v", lines[i], readLines[i]) + } + } +} + +func TestTypedJSONOrYamlErrors(t *testing.T) { + s := NewYAMLOrJSONDecoder(bytes.NewReader([]byte(`{ + "foo": { + "stuff": 1 + "otherStuff": 2 + } +} + `)), 100) + obj := generic{} + err := s.Decode(&obj) + if err == nil { + t.Fatal("expected error with json: prefix, got no error") + } + if _, ok := err.(JSONSyntaxError); !ok { + t.Fatalf("expected %q to be of type JSONSyntaxError", err.Error()) + } + + s = NewYAMLOrJSONDecoder(bytes.NewReader([]byte(`--- +stuff: 1 + test-foo: 1 + +--- + `)), 100) + obj = generic{} + err = s.Decode(&obj) + if err == nil { + t.Fatal("expected error with yaml: prefix, got no error") + } + if _, ok := err.(YAMLSyntaxError); !ok { + t.Fatalf("expected %q to be of type YAMLSyntaxError", err.Error()) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/version/BUILD b/vendor/k8s.io/apimachinery/pkg/version/BUILD new file mode 100644 index 000000000..c0ca2cff0 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/version/BUILD @@ -0,0 +1,17 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "types.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/pkg/version/doc.go b/vendor/k8s.io/apimachinery/pkg/version/doc.go new file mode 100644 index 000000000..5e77af7ea --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/version/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package version supplies the type for version information collected at build time. +// +k8s:openapi-gen=true +package version // import "k8s.io/apimachinery/pkg/version" diff --git a/vendor/k8s.io/apimachinery/pkg/version/types.go b/vendor/k8s.io/apimachinery/pkg/version/types.go new file mode 100644 index 000000000..72727b503 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/version/types.go @@ -0,0 +1,37 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +// Info contains versioning information. +// TODO: Add []string of api versions supported? It's still unclear +// how we'll want to distribute that information. +type Info struct { + Major string `json:"major"` + Minor string `json:"minor"` + GitVersion string `json:"gitVersion"` + GitCommit string `json:"gitCommit"` + GitTreeState string `json:"gitTreeState"` + BuildDate string `json:"buildDate"` + GoVersion string `json:"goVersion"` + Compiler string `json:"compiler"` + Platform string `json:"platform"` +} + +// String returns info as a human-friendly version string. +func (info Info) String() string { + return info.GitVersion +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/BUILD b/vendor/k8s.io/apimachinery/pkg/watch/BUILD new file mode 100644 index 000000000..29ca5c810 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/BUILD @@ -0,0 +1,47 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "filter.go", + "mux.go", + "streamwatcher.go", + "until.go", + "watch.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = [ + "filter_test.go", + "mux_test.go", + "streamwatcher_test.go", + "watch_test.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + ], +) diff --git a/vendor/k8s.io/apimachinery/pkg/watch/doc.go b/vendor/k8s.io/apimachinery/pkg/watch/doc.go new file mode 100644 index 000000000..7e6bf3fb9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package watch contains a generic watchable interface, and a fake for +// testing code that uses the watch interface. +package watch // import "k8s.io/apimachinery/pkg/watch" diff --git a/vendor/k8s.io/apimachinery/pkg/watch/filter.go b/vendor/k8s.io/apimachinery/pkg/watch/filter.go new file mode 100644 index 000000000..3ca27f22c --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/filter.go @@ -0,0 +1,109 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "sync" +) + +// FilterFunc should take an event, possibly modify it in some way, and return +// the modified event. If the event should be ignored, then return keep=false. +type FilterFunc func(in Event) (out Event, keep bool) + +// Filter passes all events through f before allowing them to pass on. +// Putting a filter on a watch, as an unavoidable side-effect due to the way +// go channels work, effectively causes the watch's event channel to have its +// queue length increased by one. +// +// WARNING: filter has a fatal flaw, in that it can't properly update the +// Type field (Add/Modified/Deleted) to reflect items beginning to pass the +// filter when they previously didn't. +// +func Filter(w Interface, f FilterFunc) Interface { + fw := &filteredWatch{ + incoming: w, + result: make(chan Event), + f: f, + } + go fw.loop() + return fw +} + +type filteredWatch struct { + incoming Interface + result chan Event + f FilterFunc +} + +// ResultChan returns a channel which will receive filtered events. +func (fw *filteredWatch) ResultChan() <-chan Event { + return fw.result +} + +// Stop stops the upstream watch, which will eventually stop this watch. +func (fw *filteredWatch) Stop() { + fw.incoming.Stop() +} + +// loop waits for new values, filters them, and resends them. +func (fw *filteredWatch) loop() { + defer close(fw.result) + for { + event, ok := <-fw.incoming.ResultChan() + if !ok { + break + } + filtered, keep := fw.f(event) + if keep { + fw.result <- filtered + } + } +} + +// Recorder records all events that are sent from the watch until it is closed. +type Recorder struct { + Interface + + lock sync.Mutex + events []Event +} + +var _ Interface = &Recorder{} + +// NewRecorder wraps an Interface and records any changes sent across it. +func NewRecorder(w Interface) *Recorder { + r := &Recorder{} + r.Interface = Filter(w, r.record) + return r +} + +// record is a FilterFunc and tracks each received event. +func (r *Recorder) record(in Event) (Event, bool) { + r.lock.Lock() + defer r.lock.Unlock() + r.events = append(r.events, in) + return in, true +} + +// Events returns a copy of the events sent across this recorder. +func (r *Recorder) Events() []Event { + r.lock.Lock() + defer r.lock.Unlock() + copied := make([]Event, len(r.events)) + copy(copied, r.events) + return copied +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/filter_test.go b/vendor/k8s.io/apimachinery/pkg/watch/filter_test.go new file mode 100644 index 000000000..4b5ae898a --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/filter_test.go @@ -0,0 +1,84 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch_test + +import ( + "reflect" + "testing" + + . "k8s.io/apimachinery/pkg/watch" +) + +func TestFilter(t *testing.T) { + table := []Event{ + {Type: Added, Object: testType("foo")}, + {Type: Added, Object: testType("bar")}, + {Type: Added, Object: testType("baz")}, + {Type: Added, Object: testType("qux")}, + {Type: Added, Object: testType("zoo")}, + } + + source := NewFake() + filtered := Filter(source, func(e Event) (Event, bool) { + return e, e.Object.(testType)[0] != 'b' + }) + + go func() { + for _, item := range table { + source.Action(item.Type, item.Object) + } + source.Stop() + }() + + var got []string + for { + event, ok := <-filtered.ResultChan() + if !ok { + break + } + got = append(got, string(event.Object.(testType))) + } + + if e, a := []string{"foo", "qux", "zoo"}, got; !reflect.DeepEqual(e, a) { + t.Errorf("got %v, wanted %v", e, a) + } +} + +func TestFilterStop(t *testing.T) { + source := NewFake() + filtered := Filter(source, func(e Event) (Event, bool) { + return e, e.Object.(testType)[0] != 'b' + }) + + go func() { + source.Add(testType("foo")) + filtered.Stop() + }() + + var got []string + for { + event, ok := <-filtered.ResultChan() + if !ok { + break + } + got = append(got, string(event.Object.(testType))) + } + + if e, a := []string{"foo"}, got; !reflect.DeepEqual(e, a) { + t.Errorf("got %v, wanted %v", e, a) + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/mux.go b/vendor/k8s.io/apimachinery/pkg/watch/mux.go new file mode 100644 index 000000000..fafccd78e --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/mux.go @@ -0,0 +1,257 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "sync" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// FullChannelBehavior controls how the Broadcaster reacts if a watcher's watch +// channel is full. +type FullChannelBehavior int + +const ( + WaitIfChannelFull FullChannelBehavior = iota + DropIfChannelFull +) + +// Buffer the incoming queue a little bit even though it should rarely ever accumulate +// anything, just in case a few events are received in such a short window that +// Broadcaster can't move them onto the watchers' queues fast enough. +const incomingQueueLength = 25 + +// Broadcaster distributes event notifications among any number of watchers. Every event +// is delivered to every watcher. +type Broadcaster struct { + // TODO: see if this lock is needed now that new watchers go through + // the incoming channel. + lock sync.Mutex + + watchers map[int64]*broadcasterWatcher + nextWatcher int64 + distributing sync.WaitGroup + + incoming chan Event + + // How large to make watcher's channel. + watchQueueLength int + // If one of the watch channels is full, don't wait for it to become empty. + // Instead just deliver it to the watchers that do have space in their + // channels and move on to the next event. + // It's more fair to do this on a per-watcher basis than to do it on the + // "incoming" channel, which would allow one slow watcher to prevent all + // other watchers from getting new events. + fullChannelBehavior FullChannelBehavior +} + +// NewBroadcaster creates a new Broadcaster. queueLength is the maximum number of events to queue per watcher. +// It is guaranteed that events will be distributed in the order in which they occur, +// but the order in which a single event is distributed among all of the watchers is unspecified. +func NewBroadcaster(queueLength int, fullChannelBehavior FullChannelBehavior) *Broadcaster { + m := &Broadcaster{ + watchers: map[int64]*broadcasterWatcher{}, + incoming: make(chan Event, incomingQueueLength), + watchQueueLength: queueLength, + fullChannelBehavior: fullChannelBehavior, + } + m.distributing.Add(1) + go m.loop() + return m +} + +const internalRunFunctionMarker = "internal-do-function" + +// a function type we can shoehorn into the queue. +type functionFakeRuntimeObject func() + +func (obj functionFakeRuntimeObject) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind +} + +// Execute f, blocking the incoming queue (and waiting for it to drain first). +// The purpose of this terrible hack is so that watchers added after an event +// won't ever see that event, and will always see any event after they are +// added. +func (b *Broadcaster) blockQueue(f func()) { + var wg sync.WaitGroup + wg.Add(1) + b.incoming <- Event{ + Type: internalRunFunctionMarker, + Object: functionFakeRuntimeObject(func() { + defer wg.Done() + f() + }), + } + wg.Wait() +} + +// Watch adds a new watcher to the list and returns an Interface for it. +// Note: new watchers will only receive new events. They won't get an entire history +// of previous events. +func (m *Broadcaster) Watch() Interface { + var w *broadcasterWatcher + m.blockQueue(func() { + m.lock.Lock() + defer m.lock.Unlock() + id := m.nextWatcher + m.nextWatcher++ + w = &broadcasterWatcher{ + result: make(chan Event, m.watchQueueLength), + stopped: make(chan struct{}), + id: id, + m: m, + } + m.watchers[id] = w + }) + return w +} + +// WatchWithPrefix adds a new watcher to the list and returns an Interface for it. It sends +// queuedEvents down the new watch before beginning to send ordinary events from Broadcaster. +// The returned watch will have a queue length that is at least large enough to accommodate +// all of the items in queuedEvents. +func (m *Broadcaster) WatchWithPrefix(queuedEvents []Event) Interface { + var w *broadcasterWatcher + m.blockQueue(func() { + m.lock.Lock() + defer m.lock.Unlock() + id := m.nextWatcher + m.nextWatcher++ + length := m.watchQueueLength + if n := len(queuedEvents) + 1; n > length { + length = n + } + w = &broadcasterWatcher{ + result: make(chan Event, length), + stopped: make(chan struct{}), + id: id, + m: m, + } + m.watchers[id] = w + for _, e := range queuedEvents { + w.result <- e + } + }) + return w +} + +// stopWatching stops the given watcher and removes it from the list. +func (m *Broadcaster) stopWatching(id int64) { + m.lock.Lock() + defer m.lock.Unlock() + w, ok := m.watchers[id] + if !ok { + // No need to do anything, it's already been removed from the list. + return + } + delete(m.watchers, id) + close(w.result) +} + +// closeAll disconnects all watchers (presumably in response to a Shutdown call). +func (m *Broadcaster) closeAll() { + m.lock.Lock() + defer m.lock.Unlock() + for _, w := range m.watchers { + close(w.result) + } + // Delete everything from the map, since presence/absence in the map is used + // by stopWatching to avoid double-closing the channel. + m.watchers = map[int64]*broadcasterWatcher{} +} + +// Action distributes the given event among all watchers. +func (m *Broadcaster) Action(action EventType, obj runtime.Object) { + m.incoming <- Event{action, obj} +} + +// Shutdown disconnects all watchers (but any queued events will still be distributed). +// You must not call Action or Watch* after calling Shutdown. This call blocks +// until all events have been distributed through the outbound channels. Note +// that since they can be buffered, this means that the watchers might not +// have received the data yet as it can remain sitting in the buffered +// channel. +func (m *Broadcaster) Shutdown() { + close(m.incoming) + m.distributing.Wait() +} + +// loop receives from m.incoming and distributes to all watchers. +func (m *Broadcaster) loop() { + // Deliberately not catching crashes here. Yes, bring down the process if there's a + // bug in watch.Broadcaster. + for { + event, ok := <-m.incoming + if !ok { + break + } + if event.Type == internalRunFunctionMarker { + event.Object.(functionFakeRuntimeObject)() + continue + } + m.distribute(event) + } + m.closeAll() + m.distributing.Done() +} + +// distribute sends event to all watchers. Blocking. +func (m *Broadcaster) distribute(event Event) { + m.lock.Lock() + defer m.lock.Unlock() + if m.fullChannelBehavior == DropIfChannelFull { + for _, w := range m.watchers { + select { + case w.result <- event: + case <-w.stopped: + default: // Don't block if the event can't be queued. + } + } + } else { + for _, w := range m.watchers { + select { + case w.result <- event: + case <-w.stopped: + } + } + } +} + +// broadcasterWatcher handles a single watcher of a broadcaster +type broadcasterWatcher struct { + result chan Event + stopped chan struct{} + stop sync.Once + id int64 + m *Broadcaster +} + +// ResultChan returns a channel to use for waiting on events. +func (mw *broadcasterWatcher) ResultChan() <-chan Event { + return mw.result +} + +// Stop stops watching and removes mw from its list. +func (mw *broadcasterWatcher) Stop() { + mw.stop.Do(func() { + close(mw.stopped) + mw.m.stopWatching(mw.id) + }) +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/mux_test.go b/vendor/k8s.io/apimachinery/pkg/watch/mux_test.go new file mode 100644 index 000000000..d2b17fad4 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/mux_test.go @@ -0,0 +1,168 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch_test + +import ( + "reflect" + "sync" + "testing" + "time" + + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/wait" + . "k8s.io/apimachinery/pkg/watch" +) + +type myType struct { + ID string + Value string +} + +func (obj *myType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +func TestBroadcaster(t *testing.T) { + table := []Event{ + {Type: Added, Object: &myType{"foo", "hello world 1"}}, + {Type: Added, Object: &myType{"bar", "hello world 2"}}, + {Type: Modified, Object: &myType{"foo", "goodbye world 3"}}, + {Type: Deleted, Object: &myType{"bar", "hello world 4"}}, + } + + // The broadcaster we're testing + m := NewBroadcaster(0, WaitIfChannelFull) + + // Add a bunch of watchers + const testWatchers = 2 + wg := sync.WaitGroup{} + wg.Add(testWatchers) + for i := 0; i < testWatchers; i++ { + // Verify that each watcher gets the events in the correct order + go func(watcher int, w Interface) { + tableLine := 0 + for { + event, ok := <-w.ResultChan() + if !ok { + break + } + if e, a := table[tableLine], event; !reflect.DeepEqual(e, a) { + t.Errorf("Watcher %v, line %v: Expected (%v, %#v), got (%v, %#v)", + watcher, tableLine, e.Type, e.Object, a.Type, a.Object) + } else { + t.Logf("Got (%v, %#v)", event.Type, event.Object) + } + tableLine++ + } + wg.Done() + }(i, m.Watch()) + } + + for i, item := range table { + t.Logf("Sending %v", i) + m.Action(item.Type, item.Object) + } + + m.Shutdown() + + wg.Wait() +} + +func TestBroadcasterWatcherClose(t *testing.T) { + m := NewBroadcaster(0, WaitIfChannelFull) + w := m.Watch() + w2 := m.Watch() + w.Stop() + m.Shutdown() + if _, open := <-w.ResultChan(); open { + t.Errorf("Stop didn't work?") + } + if _, open := <-w2.ResultChan(); open { + t.Errorf("Shutdown didn't work?") + } + // Extra stops don't hurt things + w.Stop() + w2.Stop() +} + +func TestBroadcasterWatcherStopDeadlock(t *testing.T) { + done := make(chan bool) + m := NewBroadcaster(0, WaitIfChannelFull) + go func(w0, w1 Interface) { + // We know Broadcaster is in the distribute loop once one watcher receives + // an event. Stop the other watcher while distribute is trying to + // send to it. + select { + case <-w0.ResultChan(): + w1.Stop() + case <-w1.ResultChan(): + w0.Stop() + } + close(done) + }(m.Watch(), m.Watch()) + m.Action(Added, &myType{}) + select { + case <-time.After(wait.ForeverTestTimeout): + t.Error("timeout: deadlocked") + case <-done: + } + m.Shutdown() +} + +func TestBroadcasterDropIfChannelFull(t *testing.T) { + m := NewBroadcaster(1, DropIfChannelFull) + + event1 := Event{Type: Added, Object: &myType{"foo", "hello world 1"}} + event2 := Event{Type: Added, Object: &myType{"bar", "hello world 2"}} + + // Add a couple watchers + watches := make([]Interface, 2) + for i := range watches { + watches[i] = m.Watch() + } + + // Send a couple events before closing the broadcast channel. + t.Log("Sending event 1") + m.Action(event1.Type, event1.Object) + t.Log("Sending event 2") + m.Action(event2.Type, event2.Object) + m.Shutdown() + + // Pull events from the queue. + wg := sync.WaitGroup{} + wg.Add(len(watches)) + for i := range watches { + // Verify that each watcher only gets the first event because its watch + // queue of length one was full from the first one. + go func(watcher int, w Interface) { + defer wg.Done() + e1, ok := <-w.ResultChan() + if !ok { + t.Errorf("Watcher %v failed to retrieve first event.", watcher) + } + if e, a := event1, e1; !reflect.DeepEqual(e, a) { + t.Errorf("Watcher %v: Expected (%v, %#v), got (%v, %#v)", + watcher, e.Type, e.Object, a.Type, a.Object) + } + t.Logf("Got (%v, %#v)", e1.Type, e1.Object) + e2, ok := <-w.ResultChan() + if ok { + t.Errorf("Watcher %v received second event (%v, %#v) even though it shouldn't have.", + watcher, e2.Type, e2.Object) + } + }(i, watches[i]) + } + wg.Wait() +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go new file mode 100644 index 000000000..93bb1cdf7 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go @@ -0,0 +1,119 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "io" + "sync" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/net" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +// Decoder allows StreamWatcher to watch any stream for which a Decoder can be written. +type Decoder interface { + // Decode should return the type of event, the decoded object, or an error. + // An error will cause StreamWatcher to call Close(). Decode should block until + // it has data or an error occurs. + Decode() (action EventType, object runtime.Object, err error) + + // Close should close the underlying io.Reader, signalling to the source of + // the stream that it is no longer being watched. Close() must cause any + // outstanding call to Decode() to return with an error of some sort. + Close() +} + +// StreamWatcher turns any stream for which you can write a Decoder interface +// into a watch.Interface. +type StreamWatcher struct { + sync.Mutex + source Decoder + result chan Event + stopped bool +} + +// NewStreamWatcher creates a StreamWatcher from the given decoder. +func NewStreamWatcher(d Decoder) *StreamWatcher { + sw := &StreamWatcher{ + source: d, + // It's easy for a consumer to add buffering via an extra + // goroutine/channel, but impossible for them to remove it, + // so nonbuffered is better. + result: make(chan Event), + } + go sw.receive() + return sw +} + +// ResultChan implements Interface. +func (sw *StreamWatcher) ResultChan() <-chan Event { + return sw.result +} + +// Stop implements Interface. +func (sw *StreamWatcher) Stop() { + // Call Close() exactly once by locking and setting a flag. + sw.Lock() + defer sw.Unlock() + if !sw.stopped { + sw.stopped = true + sw.source.Close() + } +} + +// stopping returns true if Stop() was called previously. +func (sw *StreamWatcher) stopping() bool { + sw.Lock() + defer sw.Unlock() + return sw.stopped +} + +// receive reads result from the decoder in a loop and sends down the result channel. +func (sw *StreamWatcher) receive() { + defer close(sw.result) + defer sw.Stop() + defer utilruntime.HandleCrash() + for { + action, obj, err := sw.source.Decode() + if err != nil { + // Ignore expected error. + if sw.stopping() { + return + } + switch err { + case io.EOF: + // watch closed normally + case io.ErrUnexpectedEOF: + glog.V(1).Infof("Unexpected EOF during watch stream event decoding: %v", err) + default: + msg := "Unable to decode an event from the watch stream: %v" + if net.IsProbableEOF(err) { + glog.V(5).Infof(msg, err) + } else { + glog.Errorf(msg, err) + } + } + return + } + sw.result <- Event{ + Type: action, + Object: obj, + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher_test.go b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher_test.go new file mode 100644 index 000000000..1e3029115 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher_test.go @@ -0,0 +1,68 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch_test + +import ( + "io" + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/runtime" + . "k8s.io/apimachinery/pkg/watch" +) + +type fakeDecoder struct { + items chan Event +} + +func (f fakeDecoder) Decode() (action EventType, object runtime.Object, err error) { + item, open := <-f.items + if !open { + return action, nil, io.EOF + } + return item.Type, item.Object, nil +} + +func (f fakeDecoder) Close() { + close(f.items) +} + +func TestStreamWatcher(t *testing.T) { + table := []Event{ + {Type: Added, Object: testType("foo")}, + } + + fd := fakeDecoder{make(chan Event, 5)} + sw := NewStreamWatcher(fd) + + for _, item := range table { + fd.items <- item + got, open := <-sw.ResultChan() + if !open { + t.Errorf("unexpected early close") + } + if e, a := item, got; !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } + } + + sw.Stop() + _, open := <-sw.ResultChan() + if open { + t.Errorf("Unexpected failure to close") + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/until.go b/vendor/k8s.io/apimachinery/pkg/watch/until.go new file mode 100644 index 000000000..c2772ddb5 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/until.go @@ -0,0 +1,87 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "errors" + "time" + + "k8s.io/apimachinery/pkg/util/wait" +) + +// ConditionFunc returns true if the condition has been reached, false if it has not been reached yet, +// or an error if the condition cannot be checked and should terminate. In general, it is better to define +// level driven conditions over edge driven conditions (pod has ready=true, vs pod modified and ready changed +// from false to true). +type ConditionFunc func(event Event) (bool, error) + +// ErrWatchClosed is returned when the watch channel is closed before timeout in Until. +var ErrWatchClosed = errors.New("watch closed before Until timeout") + +// Until reads items from the watch until each provided condition succeeds, and then returns the last watch +// encountered. The first condition that returns an error terminates the watch (and the event is also returned). +// If no event has been received, the returned event will be nil. +// Conditions are satisfied sequentially so as to provide a useful primitive for higher level composition. +// A zero timeout means to wait forever. +func Until(timeout time.Duration, watcher Interface, conditions ...ConditionFunc) (*Event, error) { + ch := watcher.ResultChan() + defer watcher.Stop() + var after <-chan time.Time + if timeout > 0 { + after = time.After(timeout) + } else { + ch := make(chan time.Time) + defer close(ch) + after = ch + } + var lastEvent *Event + for _, condition := range conditions { + // check the next condition against the previous event and short circuit waiting for the next watch + if lastEvent != nil { + done, err := condition(*lastEvent) + if err != nil { + return lastEvent, err + } + if done { + continue + } + } + ConditionSucceeded: + for { + select { + case event, ok := <-ch: + if !ok { + return lastEvent, ErrWatchClosed + } + lastEvent = &event + + // TODO: check for watch expired error and retry watch from latest point? + done, err := condition(event) + if err != nil { + return lastEvent, err + } + if done { + break ConditionSucceeded + } + + case <-after: + return lastEvent, wait.ErrWaitTimeout + } + } + } + return lastEvent, nil +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/watch.go b/vendor/k8s.io/apimachinery/pkg/watch/watch.go new file mode 100644 index 000000000..dd49c41f9 --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/watch.go @@ -0,0 +1,269 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "fmt" + "sync" + + "k8s.io/apimachinery/pkg/runtime" + + "github.com/golang/glog" +) + +// Interface can be implemented by anything that knows how to watch and report changes. +type Interface interface { + // Stops watching. Will close the channel returned by ResultChan(). Releases + // any resources used by the watch. + Stop() + + // Returns a chan which will receive all the events. If an error occurs + // or Stop() is called, this channel will be closed, in which case the + // watch should be completely cleaned up. + ResultChan() <-chan Event +} + +// EventType defines the possible types of events. +type EventType string + +const ( + Added EventType = "ADDED" + Modified EventType = "MODIFIED" + Deleted EventType = "DELETED" + Error EventType = "ERROR" + + DefaultChanSize int32 = 100 +) + +// Event represents a single event to a watched resource. +type Event struct { + Type EventType + + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context. + Object runtime.Object +} + +type emptyWatch chan Event + +// NewEmptyWatch returns a watch interface that returns no results and is closed. +// May be used in certain error conditions where no information is available but +// an error is not warranted. +func NewEmptyWatch() Interface { + ch := make(chan Event) + close(ch) + return emptyWatch(ch) +} + +// Stop implements Interface +func (w emptyWatch) Stop() { +} + +// ResultChan implements Interface +func (w emptyWatch) ResultChan() <-chan Event { + return chan Event(w) +} + +// FakeWatcher lets you test anything that consumes a watch.Interface; threadsafe. +type FakeWatcher struct { + result chan Event + Stopped bool + sync.Mutex +} + +func NewFake() *FakeWatcher { + return &FakeWatcher{ + result: make(chan Event), + } +} + +func NewFakeWithChanSize(size int, blocking bool) *FakeWatcher { + return &FakeWatcher{ + result: make(chan Event, size), + } +} + +// Stop implements Interface.Stop(). +func (f *FakeWatcher) Stop() { + f.Lock() + defer f.Unlock() + if !f.Stopped { + glog.V(4).Infof("Stopping fake watcher.") + close(f.result) + f.Stopped = true + } +} + +func (f *FakeWatcher) IsStopped() bool { + f.Lock() + defer f.Unlock() + return f.Stopped +} + +// Reset prepares the watcher to be reused. +func (f *FakeWatcher) Reset() { + f.Lock() + defer f.Unlock() + f.Stopped = false + f.result = make(chan Event) +} + +func (f *FakeWatcher) ResultChan() <-chan Event { + return f.result +} + +// Add sends an add event. +func (f *FakeWatcher) Add(obj runtime.Object) { + f.result <- Event{Added, obj} +} + +// Modify sends a modify event. +func (f *FakeWatcher) Modify(obj runtime.Object) { + f.result <- Event{Modified, obj} +} + +// Delete sends a delete event. +func (f *FakeWatcher) Delete(lastValue runtime.Object) { + f.result <- Event{Deleted, lastValue} +} + +// Error sends an Error event. +func (f *FakeWatcher) Error(errValue runtime.Object) { + f.result <- Event{Error, errValue} +} + +// Action sends an event of the requested type, for table-based testing. +func (f *FakeWatcher) Action(action EventType, obj runtime.Object) { + f.result <- Event{action, obj} +} + +// RaceFreeFakeWatcher lets you test anything that consumes a watch.Interface; threadsafe. +type RaceFreeFakeWatcher struct { + result chan Event + Stopped bool + sync.Mutex +} + +func NewRaceFreeFake() *RaceFreeFakeWatcher { + return &RaceFreeFakeWatcher{ + result: make(chan Event, DefaultChanSize), + } +} + +// Stop implements Interface.Stop(). +func (f *RaceFreeFakeWatcher) Stop() { + f.Lock() + defer f.Unlock() + if !f.Stopped { + glog.V(4).Infof("Stopping fake watcher.") + close(f.result) + f.Stopped = true + } +} + +func (f *RaceFreeFakeWatcher) IsStopped() bool { + f.Lock() + defer f.Unlock() + return f.Stopped +} + +// Reset prepares the watcher to be reused. +func (f *RaceFreeFakeWatcher) Reset() { + f.Lock() + defer f.Unlock() + f.Stopped = false + f.result = make(chan Event, DefaultChanSize) +} + +func (f *RaceFreeFakeWatcher) ResultChan() <-chan Event { + f.Lock() + defer f.Unlock() + return f.result +} + +// Add sends an add event. +func (f *RaceFreeFakeWatcher) Add(obj runtime.Object) { + f.Lock() + defer f.Unlock() + if !f.Stopped { + select { + case f.result <- Event{Added, obj}: + return + default: + panic(fmt.Errorf("channel full")) + } + } +} + +// Modify sends a modify event. +func (f *RaceFreeFakeWatcher) Modify(obj runtime.Object) { + f.Lock() + defer f.Unlock() + if !f.Stopped { + select { + case f.result <- Event{Modified, obj}: + return + default: + panic(fmt.Errorf("channel full")) + } + } +} + +// Delete sends a delete event. +func (f *RaceFreeFakeWatcher) Delete(lastValue runtime.Object) { + f.Lock() + defer f.Unlock() + if !f.Stopped { + select { + case f.result <- Event{Deleted, lastValue}: + return + default: + panic(fmt.Errorf("channel full")) + } + } +} + +// Error sends an Error event. +func (f *RaceFreeFakeWatcher) Error(errValue runtime.Object) { + f.Lock() + defer f.Unlock() + if !f.Stopped { + select { + case f.result <- Event{Error, errValue}: + return + default: + panic(fmt.Errorf("channel full")) + } + } +} + +// Action sends an event of the requested type, for table-based testing. +func (f *RaceFreeFakeWatcher) Action(action EventType, obj runtime.Object) { + f.Lock() + defer f.Unlock() + if !f.Stopped { + select { + case f.result <- Event{action, obj}: + return + default: + panic(fmt.Errorf("channel full")) + } + } +} diff --git a/vendor/k8s.io/apimachinery/pkg/watch/watch_test.go b/vendor/k8s.io/apimachinery/pkg/watch/watch_test.go new file mode 100644 index 000000000..42d39704b --- /dev/null +++ b/vendor/k8s.io/apimachinery/pkg/watch/watch_test.go @@ -0,0 +1,135 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch_test + +import ( + "testing" + + "k8s.io/apimachinery/pkg/runtime/schema" + . "k8s.io/apimachinery/pkg/watch" +) + +type testType string + +func (obj testType) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } + +func TestFake(t *testing.T) { + f := NewFake() + + table := []struct { + t EventType + s testType + }{ + {Added, testType("foo")}, + {Modified, testType("qux")}, + {Modified, testType("bar")}, + {Deleted, testType("bar")}, + {Error, testType("error: blah")}, + } + + // Prove that f implements Interface by phrasing this as a function. + consumer := func(w Interface) { + for _, expect := range table { + got, ok := <-w.ResultChan() + if !ok { + t.Fatalf("closed early") + } + if e, a := expect.t, got.Type; e != a { + t.Fatalf("Expected %v, got %v", e, a) + } + if a, ok := got.Object.(testType); !ok || a != expect.s { + t.Fatalf("Expected %v, got %v", expect.s, a) + } + } + _, stillOpen := <-w.ResultChan() + if stillOpen { + t.Fatal("Never stopped") + } + } + + sender := func() { + f.Add(testType("foo")) + f.Action(Modified, testType("qux")) + f.Modify(testType("bar")) + f.Delete(testType("bar")) + f.Error(testType("error: blah")) + f.Stop() + } + + go sender() + consumer(f) +} + +func TestRaceFreeFake(t *testing.T) { + f := NewRaceFreeFake() + + table := []struct { + t EventType + s testType + }{ + {Added, testType("foo")}, + {Modified, testType("qux")}, + {Modified, testType("bar")}, + {Deleted, testType("bar")}, + {Error, testType("error: blah")}, + } + + // Prove that f implements Interface by phrasing this as a function. + consumer := func(w Interface) { + for _, expect := range table { + got, ok := <-w.ResultChan() + if !ok { + t.Fatalf("closed early") + } + if e, a := expect.t, got.Type; e != a { + t.Fatalf("Expected %v, got %v", e, a) + } + if a, ok := got.Object.(testType); !ok || a != expect.s { + t.Fatalf("Expected %v, got %v", expect.s, a) + } + } + _, stillOpen := <-w.ResultChan() + if stillOpen { + t.Fatal("Never stopped") + } + } + + sender := func() { + f.Add(testType("foo")) + f.Action(Modified, testType("qux")) + f.Modify(testType("bar")) + f.Delete(testType("bar")) + f.Error(testType("error: blah")) + f.Stop() + } + + go sender() + consumer(f) +} + +func TestEmpty(t *testing.T) { + w := NewEmptyWatch() + _, ok := <-w.ResultChan() + if ok { + t.Errorf("unexpected result channel result") + } + w.Stop() + _, ok = <-w.ResultChan() + if ok { + t.Errorf("unexpected result channel result") + } +} diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD b/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD new file mode 100644 index 000000000..3350b4996 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["fields.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/json/OWNERS b/vendor/k8s.io/apimachinery/third_party/forked/golang/json/OWNERS new file mode 100644 index 000000000..8e8d9fce8 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/json/OWNERS @@ -0,0 +1,5 @@ +approvers: +- pwittrock +reviewers: +- mengqiy +- apelisse diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/json/fields.go b/vendor/k8s.io/apimachinery/third_party/forked/golang/json/fields.go new file mode 100644 index 000000000..ac6d9cb96 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/json/fields.go @@ -0,0 +1,513 @@ +// Copyright 2013 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 json is forked from the Go standard library to enable us to find the +// field of a struct that a given JSON key maps to. +package json + +import ( + "bytes" + "fmt" + "reflect" + "sort" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +const ( + patchStrategyTagKey = "patchStrategy" + patchMergeKeyTagKey = "patchMergeKey" +) + +// Finds the patchStrategy and patchMergeKey struct tag fields on a given +// struct field given the struct type and the JSON name of the field. +// It returns field type, a slice of patch strategies, merge key and error. +// TODO: fix the returned errors to be introspectable. +func LookupPatchMetadata(t reflect.Type, jsonField string) ( + elemType reflect.Type, patchStrategies []string, patchMergeKey string, e error) { + if t.Kind() == reflect.Map { + elemType = t.Elem() + return + } + if t.Kind() != reflect.Struct { + e = fmt.Errorf("merging an object in json but data type is not map or struct, instead is: %s", + t.Kind().String()) + return + } + jf := []byte(jsonField) + // Find the field that the JSON library would use. + var f *field + fields := cachedTypeFields(t) + for i := range fields { + ff := &fields[i] + if bytes.Equal(ff.nameBytes, jf) { + f = ff + break + } + // Do case-insensitive comparison. + if f == nil && ff.equalFold(ff.nameBytes, jf) { + f = ff + } + } + if f != nil { + // Find the reflect.Value of the most preferential struct field. + tjf := t.Field(f.index[0]) + // we must navigate down all the anonymously included structs in the chain + for i := 1; i < len(f.index); i++ { + tjf = tjf.Type.Field(f.index[i]) + } + patchStrategy := tjf.Tag.Get(patchStrategyTagKey) + patchMergeKey = tjf.Tag.Get(patchMergeKeyTagKey) + patchStrategies = strings.Split(patchStrategy, ",") + elemType = tjf.Type + return + } + e = fmt.Errorf("unable to find api field in struct %s for the json field %q", t.Name(), jsonField) + return +} + +// A field represents a single field found in a struct. +type field struct { + name string + nameBytes []byte // []byte(name) + equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent + + tag bool + // index is the sequence of indexes from the containing type fields to this field. + // it is a slice because anonymous structs will need multiple navigation steps to correctly + // resolve the proper fields + index []int + typ reflect.Type + omitEmpty bool + quoted bool +} + +func (f field) String() string { + return fmt.Sprintf("{name: %s, type: %v, tag: %v, index: %v, omitEmpty: %v, quoted: %v}", f.name, f.typ, f.tag, f.index, f.omitEmpty, f.quoted) +} + +func fillField(f field) field { + f.nameBytes = []byte(f.name) + f.equalFold = foldFunc(f.nameBytes) + return f +} + +// byName sorts field by name, breaking ties with depth, +// then breaking ties with "name came from json tag", then +// breaking ties with index sequence. +type byName []field + +func (x byName) Len() int { return len(x) } + +func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byName) Less(i, j int) bool { + if x[i].name != x[j].name { + return x[i].name < x[j].name + } + if len(x[i].index) != len(x[j].index) { + return len(x[i].index) < len(x[j].index) + } + if x[i].tag != x[j].tag { + return x[i].tag + } + return byIndex(x).Less(i, j) +} + +// byIndex sorts field by index sequence. +type byIndex []field + +func (x byIndex) Len() int { return len(x) } + +func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byIndex) Less(i, j int) bool { + for k, xik := range x[i].index { + if k >= len(x[j].index) { + return false + } + if xik != x[j].index[k] { + return xik < x[j].index[k] + } + } + return len(x[i].index) < len(x[j].index) +} + +// typeFields returns a list of fields that JSON should recognize for the given type. +// The algorithm is breadth-first search over the set of structs to include - the top struct +// and then any reachable anonymous structs. +func typeFields(t reflect.Type) []field { + // Anonymous fields to explore at the current level and the next. + current := []field{} + next := []field{{typ: t}} + + // Count of queued names for current level and the next. + count := map[reflect.Type]int{} + nextCount := map[reflect.Type]int{} + + // Types already visited at an earlier level. + visited := map[reflect.Type]bool{} + + // Fields found. + var fields []field + + for len(next) > 0 { + current, next = next, current[:0] + count, nextCount = nextCount, map[reflect.Type]int{} + + for _, f := range current { + if visited[f.typ] { + continue + } + visited[f.typ] = true + + // Scan f.typ for fields to include. + for i := 0; i < f.typ.NumField(); i++ { + sf := f.typ.Field(i) + if sf.PkgPath != "" { // unexported + continue + } + tag := sf.Tag.Get("json") + if tag == "-" { + continue + } + name, opts := parseTag(tag) + if !isValidTag(name) { + name = "" + } + index := make([]int, len(f.index)+1) + copy(index, f.index) + index[len(f.index)] = i + + ft := sf.Type + if ft.Name() == "" && ft.Kind() == reflect.Ptr { + // Follow pointer. + ft = ft.Elem() + } + + // Record found field and index sequence. + if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { + tagged := name != "" + if name == "" { + name = sf.Name + } + fields = append(fields, fillField(field{ + name: name, + tag: tagged, + index: index, + typ: ft, + omitEmpty: opts.Contains("omitempty"), + quoted: opts.Contains("string"), + })) + if count[f.typ] > 1 { + // If there were multiple instances, add a second, + // so that the annihilation code will see a duplicate. + // It only cares about the distinction between 1 or 2, + // so don't bother generating any more copies. + fields = append(fields, fields[len(fields)-1]) + } + continue + } + + // Record new anonymous struct to explore in next round. + nextCount[ft]++ + if nextCount[ft] == 1 { + next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft})) + } + } + } + } + + sort.Sort(byName(fields)) + + // Delete all fields that are hidden by the Go rules for embedded fields, + // except that fields with JSON tags are promoted. + + // The fields are sorted in primary order of name, secondary order + // of field index length. Loop over names; for each name, delete + // hidden fields by choosing the one dominant field that survives. + out := fields[:0] + for advance, i := 0, 0; i < len(fields); i += advance { + // One iteration per name. + // Find the sequence of fields with the name of this first field. + fi := fields[i] + name := fi.name + for advance = 1; i+advance < len(fields); advance++ { + fj := fields[i+advance] + if fj.name != name { + break + } + } + if advance == 1 { // Only one field with this name + out = append(out, fi) + continue + } + dominant, ok := dominantField(fields[i : i+advance]) + if ok { + out = append(out, dominant) + } + } + + fields = out + sort.Sort(byIndex(fields)) + + return fields +} + +// dominantField looks through the fields, all of which are known to +// have the same name, to find the single field that dominates the +// others using Go's embedding rules, modified by the presence of +// JSON tags. If there are multiple top-level fields, the boolean +// will be false: This condition is an error in Go and we skip all +// the fields. +func dominantField(fields []field) (field, bool) { + // The fields are sorted in increasing index-length order. The winner + // must therefore be one with the shortest index length. Drop all + // longer entries, which is easy: just truncate the slice. + length := len(fields[0].index) + tagged := -1 // Index of first tagged field. + for i, f := range fields { + if len(f.index) > length { + fields = fields[:i] + break + } + if f.tag { + if tagged >= 0 { + // Multiple tagged fields at the same level: conflict. + // Return no field. + return field{}, false + } + tagged = i + } + } + if tagged >= 0 { + return fields[tagged], true + } + // All remaining fields have the same length. If there's more than one, + // we have a conflict (two fields named "X" at the same level) and we + // return no field. + if len(fields) > 1 { + return field{}, false + } + return fields[0], true +} + +var fieldCache struct { + sync.RWMutex + m map[reflect.Type][]field +} + +// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. +func cachedTypeFields(t reflect.Type) []field { + fieldCache.RLock() + f := fieldCache.m[t] + fieldCache.RUnlock() + if f != nil { + return f + } + + // Compute fields without lock. + // Might duplicate effort but won't hold other computations back. + f = typeFields(t) + if f == nil { + f = []field{} + } + + fieldCache.Lock() + if fieldCache.m == nil { + fieldCache.m = map[reflect.Type][]field{} + } + fieldCache.m[t] = f + fieldCache.Unlock() + return f +} + +func isValidTag(s string) bool { + if s == "" { + return false + } + for _, c := range s { + switch { + case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c): + // Backslash and quote chars are reserved, but + // otherwise any punctuation chars are allowed + // in a tag name. + default: + if !unicode.IsLetter(c) && !unicode.IsDigit(c) { + return false + } + } + } + return true +} + +const ( + caseMask = ^byte(0x20) // Mask to ignore case in ASCII. + kelvin = '\u212a' + smallLongEss = '\u017f' +) + +// foldFunc returns one of four different case folding equivalence +// functions, from most general (and slow) to fastest: +// +// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8 +// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S') +// 3) asciiEqualFold, no special, but includes non-letters (including _) +// 4) simpleLetterEqualFold, no specials, no non-letters. +// +// The letters S and K are special because they map to 3 runes, not just 2: +// * S maps to s and to U+017F 'ſ' Latin small letter long s +// * k maps to K and to U+212A 'K' Kelvin sign +// See http://play.golang.org/p/tTxjOc0OGo +// +// The returned function is specialized for matching against s and +// should only be given s. It's not curried for performance reasons. +func foldFunc(s []byte) func(s, t []byte) bool { + nonLetter := false + special := false // special letter + for _, b := range s { + if b >= utf8.RuneSelf { + return bytes.EqualFold + } + upper := b & caseMask + if upper < 'A' || upper > 'Z' { + nonLetter = true + } else if upper == 'K' || upper == 'S' { + // See above for why these letters are special. + special = true + } + } + if special { + return equalFoldRight + } + if nonLetter { + return asciiEqualFold + } + return simpleLetterEqualFold +} + +// equalFoldRight is a specialization of bytes.EqualFold when s is +// known to be all ASCII (including punctuation), but contains an 's', +// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t. +// See comments on foldFunc. +func equalFoldRight(s, t []byte) bool { + for _, sb := range s { + if len(t) == 0 { + return false + } + tb := t[0] + if tb < utf8.RuneSelf { + if sb != tb { + sbUpper := sb & caseMask + if 'A' <= sbUpper && sbUpper <= 'Z' { + if sbUpper != tb&caseMask { + return false + } + } else { + return false + } + } + t = t[1:] + continue + } + // sb is ASCII and t is not. t must be either kelvin + // sign or long s; sb must be s, S, k, or K. + tr, size := utf8.DecodeRune(t) + switch sb { + case 's', 'S': + if tr != smallLongEss { + return false + } + case 'k', 'K': + if tr != kelvin { + return false + } + default: + return false + } + t = t[size:] + + } + if len(t) > 0 { + return false + } + return true +} + +// asciiEqualFold is a specialization of bytes.EqualFold for use when +// s is all ASCII (but may contain non-letters) and contains no +// special-folding letters. +// See comments on foldFunc. +func asciiEqualFold(s, t []byte) bool { + if len(s) != len(t) { + return false + } + for i, sb := range s { + tb := t[i] + if sb == tb { + continue + } + if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') { + if sb&caseMask != tb&caseMask { + return false + } + } else { + return false + } + } + return true +} + +// simpleLetterEqualFold is a specialization of bytes.EqualFold for +// use when s is all ASCII letters (no underscores, etc) and also +// doesn't contain 'k', 'K', 's', or 'S'. +// See comments on foldFunc. +func simpleLetterEqualFold(s, t []byte) bool { + if len(s) != len(t) { + return false + } + for i, b := range s { + if b&caseMask != t[i]&caseMask { + return false + } + } + return true +} + +// tagOptions is the string following a comma in a struct field's "json" +// tag, or the empty string. It does not include the leading comma. +type tagOptions string + +// parseTag splits a struct field's json tag into its name and +// comma-separated options. +func parseTag(tag string) (string, tagOptions) { + if idx := strings.Index(tag, ","); idx != -1 { + return tag[:idx], tagOptions(tag[idx+1:]) + } + return tag, tagOptions("") +} + +// Contains reports whether a comma-separated list of options +// contains a particular substr flag. substr must be surrounded by a +// string boundary or commas. +func (o tagOptions) Contains(optionName string) bool { + if len(o) == 0 { + return false + } + s := string(o) + for s != "" { + var next string + i := strings.Index(s, ",") + if i >= 0 { + s, next = s[:i], s[i+1:] + } + if s == optionName { + return true + } + s = next + } + return false +} diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD b/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD new file mode 100644 index 000000000..b749c9cfb --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["addr.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/addr.go b/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/addr.go new file mode 100644 index 000000000..c70f431c2 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/netutil/addr.go @@ -0,0 +1,27 @@ +package netutil + +import ( + "net/url" + "strings" +) + +// FROM: http://golang.org/src/net/http/client.go +// Given a string of the form "host", "host:port", or "[ipv6::address]:port", +// return true if the string includes a port. +func hasPort(s string) bool { return strings.LastIndex(s, ":") > strings.LastIndex(s, "]") } + +// FROM: http://golang.org/src/net/http/transport.go +var portMap = map[string]string{ + "http": "80", + "https": "443", +} + +// FROM: http://golang.org/src/net/http/transport.go +// canonicalAddr returns url.Host but always with a ":port" suffix +func CanonicalAddr(url *url.URL) string { + addr := url.Host + if !hasPort(addr) { + return addr + ":" + portMap[url.Scheme] + } + return addr +} diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD new file mode 100644 index 000000000..985afc384 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["deep_equal_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "deep_equal.go", + "type.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go new file mode 100644 index 000000000..9e45dbe1d --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go @@ -0,0 +1,388 @@ +// Copyright 2009 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 reflect is a fork of go's standard library reflection package, which +// allows for deep equal with equality functions defined. +package reflect + +import ( + "fmt" + "reflect" + "strings" +) + +// Equalities is a map from type to a function comparing two values of +// that type. +type Equalities map[reflect.Type]reflect.Value + +// For convenience, panics on errrors +func EqualitiesOrDie(funcs ...interface{}) Equalities { + e := Equalities{} + if err := e.AddFuncs(funcs...); err != nil { + panic(err) + } + return e +} + +// AddFuncs is a shortcut for multiple calls to AddFunc. +func (e Equalities) AddFuncs(funcs ...interface{}) error { + for _, f := range funcs { + if err := e.AddFunc(f); err != nil { + return err + } + } + return nil +} + +// AddFunc uses func as an equality function: it must take +// two parameters of the same type, and return a boolean. +func (e Equalities) AddFunc(eqFunc interface{}) error { + fv := reflect.ValueOf(eqFunc) + ft := fv.Type() + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 2 { + return fmt.Errorf("expected three 'in' params, got: %v", ft) + } + if ft.NumOut() != 1 { + return fmt.Errorf("expected one 'out' param, got: %v", ft) + } + if ft.In(0) != ft.In(1) { + return fmt.Errorf("expected arg 1 and 2 to have same type, but got %v", ft) + } + var forReturnType bool + boolType := reflect.TypeOf(forReturnType) + if ft.Out(0) != boolType { + return fmt.Errorf("expected bool return, got: %v", ft) + } + e[ft.In(0)] = fv + return nil +} + +// Below here is forked from go's reflect/deepequal.go + +// During deepValueEqual, must keep track of checks that are +// in progress. The comparison algorithm assumes that all +// checks in progress are true when it reencounters them. +// Visited comparisons are stored in a map indexed by visit. +type visit struct { + a1 uintptr + a2 uintptr + typ reflect.Type +} + +// unexportedTypePanic is thrown when you use this DeepEqual on something that has an +// unexported type. It indicates a programmer error, so should not occur at runtime, +// which is why it's not public and thus impossible to catch. +type unexportedTypePanic []reflect.Type + +func (u unexportedTypePanic) Error() string { return u.String() } +func (u unexportedTypePanic) String() string { + strs := make([]string, len(u)) + for i, t := range u { + strs[i] = fmt.Sprintf("%v", t) + } + return "an unexported field was encountered, nested like this: " + strings.Join(strs, " -> ") +} + +func makeUsefulPanic(v reflect.Value) { + if x := recover(); x != nil { + if u, ok := x.(unexportedTypePanic); ok { + u = append(unexportedTypePanic{v.Type()}, u...) + x = u + } + panic(x) + } +} + +// Tests for deep equality using reflected types. The map argument tracks +// comparisons that have already been seen, which allows short circuiting on +// recursive types. +func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool { + defer makeUsefulPanic(v1) + + if !v1.IsValid() || !v2.IsValid() { + return v1.IsValid() == v2.IsValid() + } + if v1.Type() != v2.Type() { + return false + } + if fv, ok := e[v1.Type()]; ok { + return fv.Call([]reflect.Value{v1, v2})[0].Bool() + } + + hard := func(k reflect.Kind) bool { + switch k { + case reflect.Array, reflect.Map, reflect.Slice, reflect.Struct: + return true + } + return false + } + + if v1.CanAddr() && v2.CanAddr() && hard(v1.Kind()) { + addr1 := v1.UnsafeAddr() + addr2 := v2.UnsafeAddr() + if addr1 > addr2 { + // Canonicalize order to reduce number of entries in visited. + addr1, addr2 = addr2, addr1 + } + + // Short circuit if references are identical ... + if addr1 == addr2 { + return true + } + + // ... or already seen + typ := v1.Type() + v := visit{addr1, addr2, typ} + if visited[v] { + return true + } + + // Remember for later. + visited[v] = true + } + + switch v1.Kind() { + case reflect.Array: + // We don't need to check length here because length is part of + // an array's type, which has already been filtered for. + for i := 0; i < v1.Len(); i++ { + if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.Slice: + if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { + return false + } + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() != v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for i := 0; i < v1.Len(); i++ { + if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.Interface: + if v1.IsNil() || v2.IsNil() { + return v1.IsNil() == v2.IsNil() + } + return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Ptr: + return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Struct: + for i, n := 0, v1.NumField(); i < n; i++ { + if !e.deepValueEqual(v1.Field(i), v2.Field(i), visited, depth+1) { + return false + } + } + return true + case reflect.Map: + if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { + return false + } + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() != v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for _, k := range v1.MapKeys() { + if !e.deepValueEqual(v1.MapIndex(k), v2.MapIndex(k), visited, depth+1) { + return false + } + } + return true + case reflect.Func: + if v1.IsNil() && v2.IsNil() { + return true + } + // Can't do better than this: + return false + default: + // Normal equality suffices + if !v1.CanInterface() || !v2.CanInterface() { + panic(unexportedTypePanic{}) + } + return v1.Interface() == v2.Interface() + } +} + +// DeepEqual is like reflect.DeepEqual, but focused on semantic equality +// instead of memory equality. +// +// It will use e's equality functions if it finds types that match. +// +// An empty slice *is* equal to a nil slice for our purposes; same for maps. +// +// Unexported field members cannot be compared and will cause an imformative panic; you must add an Equality +// function for these types. +func (e Equalities) DeepEqual(a1, a2 interface{}) bool { + if a1 == nil || a2 == nil { + return a1 == a2 + } + v1 := reflect.ValueOf(a1) + v2 := reflect.ValueOf(a2) + if v1.Type() != v2.Type() { + return false + } + return e.deepValueEqual(v1, v2, make(map[visit]bool), 0) +} + +func (e Equalities) deepValueDerive(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool { + defer makeUsefulPanic(v1) + + if !v1.IsValid() || !v2.IsValid() { + return v1.IsValid() == v2.IsValid() + } + if v1.Type() != v2.Type() { + return false + } + if fv, ok := e[v1.Type()]; ok { + return fv.Call([]reflect.Value{v1, v2})[0].Bool() + } + + hard := func(k reflect.Kind) bool { + switch k { + case reflect.Array, reflect.Map, reflect.Slice, reflect.Struct: + return true + } + return false + } + + if v1.CanAddr() && v2.CanAddr() && hard(v1.Kind()) { + addr1 := v1.UnsafeAddr() + addr2 := v2.UnsafeAddr() + if addr1 > addr2 { + // Canonicalize order to reduce number of entries in visited. + addr1, addr2 = addr2, addr1 + } + + // Short circuit if references are identical ... + if addr1 == addr2 { + return true + } + + // ... or already seen + typ := v1.Type() + v := visit{addr1, addr2, typ} + if visited[v] { + return true + } + + // Remember for later. + visited[v] = true + } + + switch v1.Kind() { + case reflect.Array: + // We don't need to check length here because length is part of + // an array's type, which has already been filtered for. + for i := 0; i < v1.Len(); i++ { + if !e.deepValueDerive(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.Slice: + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() > v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for i := 0; i < v1.Len(); i++ { + if !e.deepValueDerive(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.String: + if v1.Len() == 0 { + return true + } + if v1.Len() > v2.Len() { + return false + } + return v1.String() == v2.String() + case reflect.Interface: + if v1.IsNil() { + return true + } + return e.deepValueDerive(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Ptr: + if v1.IsNil() { + return true + } + return e.deepValueDerive(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Struct: + for i, n := 0, v1.NumField(); i < n; i++ { + if !e.deepValueDerive(v1.Field(i), v2.Field(i), visited, depth+1) { + return false + } + } + return true + case reflect.Map: + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() > v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for _, k := range v1.MapKeys() { + if !e.deepValueDerive(v1.MapIndex(k), v2.MapIndex(k), visited, depth+1) { + return false + } + } + return true + case reflect.Func: + if v1.IsNil() && v2.IsNil() { + return true + } + // Can't do better than this: + return false + default: + // Normal equality suffices + if !v1.CanInterface() || !v2.CanInterface() { + panic(unexportedTypePanic{}) + } + return v1.Interface() == v2.Interface() + } +} + +// DeepDerivative is similar to DeepEqual except that unset fields in a1 are +// ignored (not compared). This allows us to focus on the fields that matter to +// the semantic comparison. +// +// The unset fields include a nil pointer and an empty string. +func (e Equalities) DeepDerivative(a1, a2 interface{}) bool { + if a1 == nil { + return true + } + v1 := reflect.ValueOf(a1) + v2 := reflect.ValueOf(a2) + if v1.Type() != v2.Type() { + return false + } + return e.deepValueDerive(v1, v2, make(map[visit]bool), 0) +} diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal_test.go b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal_test.go new file mode 100644 index 000000000..4a0629930 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal_test.go @@ -0,0 +1,137 @@ +// Copyright 2009 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 reflect + +import ( + "testing" +) + +func TestEqualities(t *testing.T) { + e := Equalities{} + type Bar struct { + X int + } + type Baz struct { + Y Bar + } + err := e.AddFuncs( + func(a, b int) bool { + return a+1 == b + }, + func(a, b Bar) bool { + return a.X*10 == b.X + }, + ) + if err != nil { + t.Fatalf("Unexpected: %v", err) + } + + type Foo struct { + X int + } + + table := []struct { + a, b interface{} + equal bool + }{ + {1, 2, true}, + {2, 1, false}, + {"foo", "fo", false}, + {"foo", "foo", true}, + {"foo", "foobar", false}, + {Foo{1}, Foo{2}, true}, + {Foo{2}, Foo{1}, false}, + {Bar{1}, Bar{10}, true}, + {&Bar{1}, &Bar{10}, true}, + {Baz{Bar{1}}, Baz{Bar{10}}, true}, + {[...]string{}, [...]string{"1", "2", "3"}, false}, + {[...]string{"1"}, [...]string{"1", "2", "3"}, false}, + {[...]string{"1", "2", "3"}, [...]string{}, false}, + {[...]string{"1", "2", "3"}, [...]string{"1", "2", "3"}, true}, + {map[string]int{"foo": 1}, map[string]int{}, false}, + {map[string]int{"foo": 1}, map[string]int{"foo": 2}, true}, + {map[string]int{"foo": 2}, map[string]int{"foo": 1}, false}, + {map[string]int{"foo": 1}, map[string]int{"foo": 2, "bar": 6}, false}, + {map[string]int{"foo": 1, "bar": 6}, map[string]int{"foo": 2}, false}, + {map[string]int{}, map[string]int(nil), true}, + {[]string(nil), []string(nil), true}, + {[]string{}, []string(nil), true}, + {[]string(nil), []string{}, true}, + {[]string{"1"}, []string(nil), false}, + {[]string{}, []string{"1", "2", "3"}, false}, + {[]string{"1"}, []string{"1", "2", "3"}, false}, + {[]string{"1", "2", "3"}, []string{}, false}, + } + + for _, item := range table { + if e, a := item.equal, e.DeepEqual(item.a, item.b); e != a { + t.Errorf("Expected (%+v == %+v) == %v, but got %v", item.a, item.b, e, a) + } + } +} + +func TestDerivates(t *testing.T) { + e := Equalities{} + type Bar struct { + X int + } + type Baz struct { + Y Bar + } + err := e.AddFuncs( + func(a, b int) bool { + return a+1 == b + }, + func(a, b Bar) bool { + return a.X*10 == b.X + }, + ) + if err != nil { + t.Fatalf("Unexpected: %v", err) + } + + type Foo struct { + X int + } + + table := []struct { + a, b interface{} + equal bool + }{ + {1, 2, true}, + {2, 1, false}, + {"foo", "fo", false}, + {"foo", "foo", true}, + {"foo", "foobar", false}, + {Foo{1}, Foo{2}, true}, + {Foo{2}, Foo{1}, false}, + {Bar{1}, Bar{10}, true}, + {&Bar{1}, &Bar{10}, true}, + {Baz{Bar{1}}, Baz{Bar{10}}, true}, + {[...]string{}, [...]string{"1", "2", "3"}, false}, + {[...]string{"1"}, [...]string{"1", "2", "3"}, false}, + {[...]string{"1", "2", "3"}, [...]string{}, false}, + {[...]string{"1", "2", "3"}, [...]string{"1", "2", "3"}, true}, + {map[string]int{"foo": 1}, map[string]int{}, false}, + {map[string]int{"foo": 1}, map[string]int{"foo": 2}, true}, + {map[string]int{"foo": 2}, map[string]int{"foo": 1}, false}, + {map[string]int{"foo": 1}, map[string]int{"foo": 2, "bar": 6}, true}, + {map[string]int{"foo": 1, "bar": 6}, map[string]int{"foo": 2}, false}, + {map[string]int{}, map[string]int(nil), true}, + {[]string(nil), []string(nil), true}, + {[]string{}, []string(nil), true}, + {[]string(nil), []string{}, true}, + {[]string{"1"}, []string(nil), false}, + {[]string{}, []string{"1", "2", "3"}, true}, + {[]string{"1"}, []string{"1", "2", "3"}, true}, + {[]string{"1", "2", "3"}, []string{}, false}, + } + + for _, item := range table { + if e, a := item.equal, e.DeepDerivative(item.a, item.b); e != a { + t.Errorf("Expected (%+v ~ %+v) == %v, but got %v", item.a, item.b, e, a) + } + } +} diff --git a/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/type.go b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/type.go new file mode 100644 index 000000000..67957ee33 --- /dev/null +++ b/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/type.go @@ -0,0 +1,91 @@ +//This package is copied from Go library reflect/type.go. +//The struct tag library provides no way to extract the list of struct tags, only +//a specific tag +package reflect + +import ( + "fmt" + + "strconv" + "strings" +) + +type StructTag struct { + Name string + Value string +} + +func (t StructTag) String() string { + return fmt.Sprintf("%s:%q", t.Name, t.Value) +} + +type StructTags []StructTag + +func (tags StructTags) String() string { + s := make([]string, 0, len(tags)) + for _, tag := range tags { + s = append(s, tag.String()) + } + return "`" + strings.Join(s, " ") + "`" +} + +func (tags StructTags) Has(name string) bool { + for i := range tags { + if tags[i].Name == name { + return true + } + } + return false +} + +// ParseStructTags returns the full set of fields in a struct tag in the order they appear in +// the struct tag. +func ParseStructTags(tag string) (StructTags, error) { + tags := StructTags{} + for tag != "" { + // Skip leading space. + i := 0 + for i < len(tag) && tag[i] == ' ' { + i++ + } + tag = tag[i:] + if tag == "" { + break + } + + // Scan to colon. A space, a quote or a control character is a syntax error. + // Strictly speaking, control chars include the range [0x7f, 0x9f], not just + // [0x00, 0x1f], but in practice, we ignore the multi-byte control characters + // as it is simpler to inspect the tag's bytes than the tag's runes. + i = 0 + for i < len(tag) && tag[i] > ' ' && tag[i] != ':' && tag[i] != '"' && tag[i] != 0x7f { + i++ + } + if i == 0 || i+1 >= len(tag) || tag[i] != ':' || tag[i+1] != '"' { + break + } + name := string(tag[:i]) + tag = tag[i+1:] + + // Scan quoted string to find value. + i = 1 + for i < len(tag) && tag[i] != '"' { + if tag[i] == '\\' { + i++ + } + i++ + } + if i >= len(tag) { + break + } + qvalue := string(tag[:i+1]) + tag = tag[i+1:] + + value, err := strconv.Unquote(qvalue) + if err != nil { + return nil, err + } + tags = append(tags, StructTag{Name: name, Value: value}) + } + return tags, nil +} diff --git a/vendor/k8s.io/client-go/.github/PULL_REQUEST_TEMPLATE.md b/vendor/k8s.io/client-go/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..ad11b57a8 --- /dev/null +++ b/vendor/k8s.io/client-go/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,4 @@ +Sorry, client-go does not accept changes via pull requests at this time. Please +submit your pull request to the main repository: +https://github.com/kubernetes/kubernetes. See the guidance here: +https://github.com/kubernetes/client-go#contributing-code. diff --git a/vendor/k8s.io/client-go/.travis.yml b/vendor/k8s.io/client-go/.travis.yml new file mode 100644 index 000000000..557658ed4 --- /dev/null +++ b/vendor/k8s.io/client-go/.travis.yml @@ -0,0 +1,8 @@ +language: go + +go_import_path: k8s.io/client-go + +go: + - 1.8.1 + +script: go build ./... diff --git a/vendor/k8s.io/client-go/CHANGELOG.md b/vendor/k8s.io/client-go/CHANGELOG.md new file mode 100644 index 000000000..443d1f4e9 --- /dev/null +++ b/vendor/k8s.io/client-go/CHANGELOG.md @@ -0,0 +1,45 @@ + +TODO: This document was neglected and is currently not complete. Working on +fixing this. + +# HEAD (changes that will go into the next release) + +# v3.0.0-beta.0 + +* Added dependency on k8s.io/apimachinery. The impacts include changing import path of API objects like `ListOptions` from `k8s.io/client-go/pkg/api/v1` to `k8s.io/apimachinery/pkg/apis/meta/v1`. +* Added generated listers (listers/) and informers (informers/) +* Kubernetes API changes: + * Added client support for: + * authentication/v1 + * authorization/v1 + * autoscaling/v2alpha1 + * rbac/v1beta1 + * settings/v1alpha1 + * storage/v1 + * Changed client support for: + * certificates from v1alpha1 to v1beta1 + * policy from v1alpha1 to v1beta1 +* CHANGED: pass typed options to dynamic client (https://github.com/kubernetes/kubernetes/pull/41887) + +# v2.0.0 + +* Included bug fixes in k8s.io/kuberentes release-1.5 branch, up to commit + bde8578d9675129b7a2aa08f1b825ec6cc0f3420 + +# v2.0.0-alpha.1 + +* Removed top-level version folder (e.g., 1.4 and 1.5), switching to maintaining separate versions + in separate branches. +* Clientset supported multiple versions per API group +* Added ThirdPartyResources example +* Kubernetes API changes + * Apps API group graduated to v1beta1 + * Policy API group graduated to v1beta1 + * Added support for batch/v2alpha1/cronjob + * Renamed PetSet to StatefulSet + + +# v1.5.0 + +* Included the auth plugin (https://github.com/kubernetes/kubernetes/pull/33334) +* Added timeout field to RESTClient config (https://github.com/kubernetes/kubernetes/pull/33958) diff --git a/vendor/k8s.io/client-go/Godeps/Godeps.json b/vendor/k8s.io/client-go/Godeps/Godeps.json new file mode 100644 index 000000000..d5b77076b --- /dev/null +++ b/vendor/k8s.io/client-go/Godeps/Godeps.json @@ -0,0 +1,543 @@ +{ + "ImportPath": "k8s.io/client-go", + "GoVersion": "go1.8", + "GodepVersion": "v79", + "Packages": [ + "./..." + ], + "Deps": [ + { + "ImportPath": "cloud.google.com/go/compute/metadata", + "Comment": "v0.1.0-115-g3b1ae45", + "Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821" + }, + { + "ImportPath": "cloud.google.com/go/internal", + "Comment": "v0.1.0-115-g3b1ae45", + "Rev": "3b1ae45394a234c385be014e9a488f2bb6eef821" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest", + "Comment": "v8.0.0", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/adal", + "Comment": "v8.0.0", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/azure", + "Comment": "v8.0.0", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/Azure/go-autorest/autorest/date", + "Comment": "v8.0.0", + "Rev": "58f6f26e200fa5dfb40c9cd1c83f3e2c860d779d" + }, + { + "ImportPath": "github.com/PuerkitoBio/purell", + "Comment": "v1.0.0", + "Rev": "8a290539e2e8629dbc4e6bad948158f790ec31f4" + }, + { + "ImportPath": "github.com/PuerkitoBio/urlesc", + "Rev": "5bd2802263f21d8788851d5305584c82a5c75d7e" + }, + { + "ImportPath": "github.com/coreos/go-oidc/http", + "Rev": "be73733bb8cc830d0205609b95d125215f8e9c70" + }, + { + "ImportPath": "github.com/coreos/go-oidc/jose", + "Rev": "be73733bb8cc830d0205609b95d125215f8e9c70" + }, + { + "ImportPath": "github.com/coreos/go-oidc/key", + "Rev": "be73733bb8cc830d0205609b95d125215f8e9c70" + }, + { + "ImportPath": "github.com/coreos/go-oidc/oauth2", + "Rev": "be73733bb8cc830d0205609b95d125215f8e9c70" + }, + { + "ImportPath": "github.com/coreos/go-oidc/oidc", + "Rev": "be73733bb8cc830d0205609b95d125215f8e9c70" + }, + { + "ImportPath": "github.com/coreos/pkg/health", + "Comment": "v2-8-gfa29b1d", + "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" + }, + { + "ImportPath": "github.com/coreos/pkg/httputil", + "Comment": "v2-8-gfa29b1d", + "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" + }, + { + "ImportPath": "github.com/coreos/pkg/timeutil", + "Comment": "v2-8-gfa29b1d", + "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8" + }, + { + "ImportPath": "github.com/davecgh/go-spew/spew", + "Rev": "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d" + }, + { + "ImportPath": "github.com/dgrijalva/jwt-go", + "Comment": "v3.0.0-4-g01aeca5", + "Rev": "01aeca54ebda6e0fbfafd0a524d234159c05ec20" + }, + { + "ImportPath": "github.com/docker/distribution/digest", + "Comment": "v2.4.0-rc.1-38-gcd27f17", + "Rev": "cd27f179f2c10c5d300e6d09025b538c475b0d51" + }, + { + "ImportPath": "github.com/docker/distribution/reference", + "Comment": "v2.4.0-rc.1-38-gcd27f17", + "Rev": "cd27f179f2c10c5d300e6d09025b538c475b0d51" + }, + { + "ImportPath": "github.com/docker/spdystream", + "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" + }, + { + "ImportPath": "github.com/docker/spdystream/spdy", + "Rev": "449fdfce4d962303d702fec724ef0ad181c92528" + }, + { + "ImportPath": "github.com/emicklei/go-restful", + "Comment": "2.2.0-4-gff4f55a", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/emicklei/go-restful-swagger12", + "Comment": "1.0.1", + "Rev": "dcef7f55730566d41eae5db10e7d6981829720f6" + }, + { + "ImportPath": "github.com/emicklei/go-restful/log", + "Comment": "2.2.0-4-gff4f55a", + "Rev": "ff4f55a206334ef123e4f79bbf348980da81ca46" + }, + { + "ImportPath": "github.com/ghodss/yaml", + "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" + }, + { + "ImportPath": "github.com/go-openapi/analysis", + "Rev": "b44dc874b601d9e4e2f6e19140e794ba24bead3b" + }, + { + "ImportPath": "github.com/go-openapi/jsonpointer", + "Rev": "46af16f9f7b149af66e5d1bd010e3574dc06de98" + }, + { + "ImportPath": "github.com/go-openapi/jsonreference", + "Rev": "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" + }, + { + "ImportPath": "github.com/go-openapi/loads", + "Rev": "18441dfa706d924a39a030ee2c3b1d8d81917b38" + }, + { + "ImportPath": "github.com/go-openapi/spec", + "Rev": "6aced65f8501fe1217321abf0749d354824ba2ff" + }, + { + "ImportPath": "github.com/go-openapi/swag", + "Rev": "1d0bd113de87027671077d3c71eb3ac5d7dbba72" + }, + { + "ImportPath": "github.com/gogo/protobuf/proto", + "Comment": "v0.4-3-gc0656ed", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/gogo/protobuf/sortkeys", + "Comment": "v0.4-3-gc0656ed", + "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + }, + { + "ImportPath": "github.com/golang/glog", + "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" + }, + { + "ImportPath": "github.com/golang/groupcache/lru", + "Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" + }, + { + "ImportPath": "github.com/golang/protobuf/proto", + "Rev": "4bd1920723d7b7c925de087aa32e2187708897f7" + }, + { + "ImportPath": "github.com/google/gofuzz", + "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru", + "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + }, + { + "ImportPath": "github.com/hashicorp/golang-lru/simplelru", + "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + }, + { + "ImportPath": "github.com/howeyc/gopass", + "Rev": "bf9dde6d0d2c004a008c27aaee91170c786f6db8" + }, + { + "ImportPath": "github.com/imdario/mergo", + "Comment": "0.1.3-8-g6633656", + "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" + }, + { + "ImportPath": "github.com/jonboulle/clockwork", + "Rev": "72f9bd7c4e0c2a40055ab3d0f09654f730cce982" + }, + { + "ImportPath": "github.com/juju/ratelimit", + "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342" + }, + { + "ImportPath": "github.com/mailru/easyjson/buffer", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/mailru/easyjson/jlexer", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/mailru/easyjson/jwriter", + "Rev": "d5b7844b561a7bc640052f1b935f7b800330d7e0" + }, + { + "ImportPath": "github.com/pmezard/go-difflib/difflib", + "Rev": "d8ed2627bdf02c080bf22230dbb337003b7aba2d" + }, + { + "ImportPath": "github.com/spf13/pflag", + "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7" + }, + { + "ImportPath": "github.com/stretchr/testify/assert", + "Comment": "v1.0-88-ge3a8ff8", + "Rev": "e3a8ff8ce36581f87a15341206f205b1da467059" + }, + { + "ImportPath": "github.com/ugorji/go/codec", + "Rev": "ded73eae5db7e7a0ef6f55aace87a2873c5d2b74" + }, + { + "ImportPath": "golang.org/x/crypto/ssh/terminal", + "Rev": "d172538b2cfce0c13cee31e647d0367aa8cd2486" + }, + { + "ImportPath": "golang.org/x/net/context", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/context/ctxhttp", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/http2", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/http2/hpack", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/idna", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/net/lex/httplex", + "Rev": "f2499483f923065a842d38eb4c7f1927e6fc6e6d" + }, + { + "ImportPath": "golang.org/x/oauth2", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/google", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/internal", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/jws", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/jwt", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/sys/unix", + "Rev": "8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9" + }, + { + "ImportPath": "golang.org/x/text/cases", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/internal/tag", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/language", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/runes", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/secure/bidirule", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/secure/precis", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/transform", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/unicode/bidi", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/unicode/norm", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "golang.org/x/text/width", + "Rev": "2910a502d2bf9e43193af9d68ca516529614eed3" + }, + { + "ImportPath": "gopkg.in/inf.v0", + "Comment": "v0.9.0", + "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + }, + { + "ImportPath": "gopkg.in/yaml.v2", + "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/equality", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/errors", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/meta", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/resource", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/api/testing", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/fields", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/labels", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/openapi", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/selection", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/types", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/cache", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/clock", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/diff", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/errors", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/framer", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/json", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/net", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/rand", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/sets", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/wait", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/version", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/pkg/watch", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + }, + { + "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", + "Rev": "1fd2e63a9a370677308a42f24fd40c86438afddf" + } + ] +} diff --git a/vendor/k8s.io/client-go/Godeps/Readme b/vendor/k8s.io/client-go/Godeps/Readme new file mode 100644 index 000000000..4cdaa53d5 --- /dev/null +++ b/vendor/k8s.io/client-go/Godeps/Readme @@ -0,0 +1,5 @@ +This directory tree is generated automatically by godep. + +Please do not edit. + +See https://github.com/tools/godep for more information. diff --git a/vendor/k8s.io/client-go/INSTALL.md b/vendor/k8s.io/client-go/INSTALL.md new file mode 100644 index 000000000..c4e4d99b2 --- /dev/null +++ b/vendor/k8s.io/client-go/INSTALL.md @@ -0,0 +1,180 @@ +# Installing client-go + +## For the casual user + +If you want to write a simple script, don't care about a reproducible client +library install, don't mind getting head (which may be less stable than a +particular release), then simply: + +```sh +$ go get k8s.io/client-go/... +``` + +This will install `k8s.io/client-go` in your `$GOPATH`. `k8s.io/client-go` +includes most of its own dependencies in its `k8s.io/client-go/vendor` path, +except for `k8s.io/apimachinery` and `glog`. `go get` will recursively download +these excluded repos to your `$GOPATH`, if they don't already exist. If +`k8s.io/apimachinery` preexisted in `$GOPATH`, you also need to: + +```sh +$ go get -u k8s.io/apimachinery/... +``` + +because the head of client-go is only guaranteed to work with the head of +apimachinery. + +We excluded `k8s.io/apimachinery` and `glog` from `k8s.io/client-go/vendor` to +prevent `go get` users from hitting issues like +[#19](https://github.com/kubernetes/client-go/issues/19) and +[#83](https://github.com/kubernetes/client-go/issues/83). If your project share +other dependencies with client-go, and you hit issues similar to #19 or #83, +then you'll need to look down at the next section. + +Note: the official go policy is that libraries should not vendor their +dependencies. This is unworkable for us, since our dependencies change and HEAD +on every dependency has not necessarily been tested with client-go. In fact, +HEAD from all dependencies may not even compile with client-go! + +## Dependency management for the serious (or reluctant) user + +Reasons why you might need to use a dependency management system: +* You use a dependency that client-go also uses, and don't want two copies of + the dependency compiled into your application. For some dependencies with + singletons or global inits (e.g. `glog`) this wouldn't even compile... +* You want to lock in a particular version (so you don't have to change your + code every time we change a public interface). +* You want your install to be reproducible. For example, for your CI system or + for new team members. + +There are three tools you could in theory use for this. Instructions +for each follows. + +### Godep + +[godep](https://github.com/tools/godep) is an older dependency management tool, which is +used by the main Kubernetes repo and `client-go` to manage dependencies. + +Before proceeding with the below instructions, you should ensure that your +$GOPATH is empty except for containing your own package and its dependencies, +and you have a copy of godep somewhere in your $PATH. + +To install `client-go` and place its dependencies in your `$GOPATH`: + +```sh +go get k8s.io/client-go/... +cd $GOPATH/src/k8s.io/client-go +git checkout v2.0.0 +# cd 1.5 # only necessary with 1.5 and 1.4 clients. +godep restore ./... +``` + +At this point, `client-go`'s dependencies have been placed in your $GOPATH, but +if you were to build, `client-go` would still see its own copy of its +dependencies in its `vendor` directory. You have two options at this point. + +If you would like to keep dependencies in your own project's vendor directory, +then you can continue like this: + +```sh +cd $GOPATH/src/ +godep save ./... +``` + +Alternatively, if you want to build using the dependencies in your `$GOPATH`, +then `rm -rf vendor/` to remove `client-go`'s copy of its dependencies. + +### Glide + +[Glide](https://github.com/Masterminds/glide) is another popular dependency +management tool for Go. Glide will manage your /vendor directory, but unlike +godep, will not use or modify your $GOPATH (there's no equivalent of +`godep restore` or `godep save`). + +Generally, it's best to avoid Glide's many subcommands, favoring modifying +Glide's manifest file (`glide.yaml`) directly, then running +`glide update --strip-vendor`. First create a `glide.yaml` file at the root of +your project: + +```yaml +package: ( your project's import path ) # e.g. github.com/foo/bar +import: +- package: k8s.io/client-go + version: v2.0.0 +``` + +Second, add a Go file that imports `client-go` somewhere in your project, +otherwise `client-go`'s dependencies will not be added to your project's +vendor/. Then run the following command in the same directory as `glide.yaml`: + +```sh +glide update --strip-vendor +``` + +This can also be abbreviated as: + +```sh +glide up -v +``` + +At this point, `k8s.io/client-go` should be added to your project's vendor/. +`client-go`'s dependencies should be flattened and be added to your project's +vendor/ as well. + +Glide will detect the versions of dependencies `client-go` specified in +`client-go`'s Godep.json file, and automatically set the versions of these +imports in your /vendor directory. It will also record the detected version of +all dependencies in the `glide.lock` file. + +Projects that require a different version of a dependency than `client-go` +requests can override the version manually in `glide.yaml`. For example: + +```yaml +package: ( your project's import path ) # e.g. github.com/foo/bar +import: +- package: k8s.io/client-go + version: v2.0.0 +# Use a newer version of go-spew even though client-go wants an old one. +- package: github.com/davecgh/go-spew + version: v1.1.0 +``` + +After modifying, run `glide up -v` again to re-populate your /vendor directory. + +Optionally, Glide users can also use [`glide-vc`](https://github.com/sgotti/glide-vc) +after running `glide up -v` to remove unused files from /vendor. + +### Dep + +[dep](https://github.com/golang/dep) is an up-and-coming dependency management tool, +which has the goal of being accepted as part of the standard go toolchain. Its +status is currently alpha. However, it comes the closest to working easily out +of the box. + +```sh +$ go get github.com/golang/dep +$ go install github.com/golang/dep/cmd/dep + +# Make sure you have a go file in your directory which imports a package of +# k8s.io/client-go first--I suggest copying one of the examples. +$ dep init +$ dep ensure k8s.io/client-go@^2.0.0 +``` + +Then you can try one of the +[examples](https://github.com/kubernetes/client-go/tree/v2.0.0/examples/) from +the 2.0.0 release. + +This will set up a `vendor` directory in your current directory, add `k8s.io/client-go` +to it, and flatten all of `k8s.io/client-go`'s dependencies into that vendor directory, +so that your code and `client-go` will both get the same copy of each +dependency. + +After installing like this, you could either use dep for your other +dependencies, or copy everything in the `vendor` directory into your +`$GOPATH/src` directory and proceed as if you had done a fancy `go get` that +flattened dependencies sanely. + +One thing to note about dep is that it will omit dependencies that aren't +actually used, and some dependencies of `client-go` are used only if you import +one of the plugins (for example, the auth plugins). So you may need to run `dep +ensure` again if you start importing a plugin that you weren't using before. diff --git a/vendor/k8s.io/client-go/LICENSE b/vendor/k8s.io/client-go/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/k8s.io/client-go/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/k8s.io/client-go/OWNERS b/vendor/k8s.io/client-go/OWNERS new file mode 100644 index 000000000..41898017b --- /dev/null +++ b/vendor/k8s.io/client-go/OWNERS @@ -0,0 +1,45 @@ +approvers: +- caesarxuchao +- deads2k +- krousey +- lavalamp +- smarterclayton +- sttts +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- yujuhong +- derekwaynecarr +- caesarxuchao +- vishh +- mikedanese +- liggitt +- nikhiljindal +- bprashanth +- gmarek +- erictune +- davidopp +- pmorie +- sttts +- kargakis +- dchen1107 +- saad-ali +- zmerlynn +- luxas +- janetkuo +- justinsb +- roberthbailey +- ncdc +- timstclair +- yifan-gu +- eparis +- mwielgus +- timothysc +- feiskyer +- jlowdermilk +- soltysh +- piosz +- jsafrane diff --git a/vendor/k8s.io/client-go/README.md b/vendor/k8s.io/client-go/README.md new file mode 100644 index 000000000..48fe02fa8 --- /dev/null +++ b/vendor/k8s.io/client-go/README.md @@ -0,0 +1,149 @@ +# client-go + +Go clients for talking to a [kubernetes](http://kubernetes.io/) cluster. + +We currently recommend using the v2.0.0 tag. See [INSTALL.md](/INSTALL.md) for +detailed installation instructions. `go get k8s.io/client-go/...` works, but +will give you head and doesn't handle the dependencies well. + +[![Build Status](https://travis-ci.org/kubernetes/client-go.svg?branch=master)](https://travis-ci.org/kubernetes/client-go) +[![GoDoc](https://godoc.org/k8s.io/client-go?status.svg)](https://godoc.org/k8s.io/client-go) + +## Table of Contents + +- [What's included](#whats-included) +- [Versioning](#versioning) + - [Compatibility: your code <-> client-go](#compatibility-your-code---client-go) + - [Compatibility: client-go <-> Kubernetes clusters](#compatibility-client-go---kubernetes-clusters) + - [Compatibility matrix](#compatibility-matrix) + - [Why do the 1.4 and 1.5 branch contain top-level folder named after the version?](#why-do-the-14-and-15-branch-contain-top-level-folder-named-after-the-version) +- [How to get it](#how-to-get-it) +- [How to use it](#how-to-use-it) +- [Dependency management](#dependency-management) +- [Contributing code](#contributing-code) + +### What's included + +* The `kubernetes` package contains the clientset to access Kubernetes API. +* The `discovery` package is used to discover APIs supported by a Kubernetes API server. +* The `dynamic` package contains a dynamic client that can perform generic operations on arbitrary Kubernetes API objects. +* The `transport` package is used to set up auth and start a connection. +* The `tools/cache` package is useful for writing controllers. + +### Versioning + +`client-go` follows [semver](http://semver.org/). We will not make +backwards-incompatible changes without incrementing the major version number. A +change is backwards-incompatible either if it *i)* changes the public interfaces +of `client-go`, or *ii)* makes `client-go` incompatible with otherwise supported +versions of Kubernetes clusters. + +Changes that add features in a backwards-compatible way will result in bumping +the minor version (second digit) number. + +Bugfixes will result in the patch version (third digit) changing. PRs that are +cherry-picked into an older Kubernetes release branch will result in an update +to the corresponding branch in `client-go`, with a corresponding new tag +changing the patch version. + +A consequence of this is that `client-go` version numbers will be unrelated to +Kubernetes version numbers. + +#### Branches and tags. + +We will create a new branch and tag for each increment in the major version number or +minor version number. We will create only a new tag for each increment in the patch +version number. See [semver](http://semver.org/) for definitions of major, +minor, and patch. + +The master branch will track HEAD in the main Kubernetes repo and +accumulate changes. Consider HEAD to have the version `x.(y+1).0-alpha` or +`(x+1).0.0-alpha` (depending on whether it has accumulated a breaking change or +not), where `x` and `y` are the current major and minor versions. + +#### Compatibility: your code <-> client-go + +`client-go` follows [semver](http://semver.org/), so until the major version of +client-go gets increased, your code will compile and will continue to work with +explicitly supported versions of Kubernetes clusters. You must use a dependency +management system and pin a specific major version of `client-go` to get this +benefit, as HEAD follows the upstream Kubernetes repo. + +#### Compatibility: client-go <-> Kubernetes clusters + +Since Kubernetes is backwards compatible with clients, older `client-go` +versions will work with many different Kubernetes cluster versions. + +We will backport bugfixes--but not new features--into older versions of +`client-go`. + + +#### Compatibility matrix + +| | Kubernetes 1.3 | Kubernetes 1.4 | Kubernetes 1.5 | Kubernetes 1.6 | +|---------------------|----------------|----------------|----------------|----------------| +| client-go 1.4 | + | ✓ | - | - | +| client-go 1.5 | + | + | - | - | +| client-go 2.0 | + | + | ✓ | - | +| client-go 3.0 beta | + | + | + | ✓ | +| client-go HEAD | + | + | + | + | + +Key: + +* `✓` Exactly the same features / API objects in both client-go and the Kubernetes + version. +* `+` client-go has features or api objects that may not be present in the + Kubernetes cluster, but everything they have in common will work. +* `-` The Kubernetes cluster has features the client-go library can't use + (additional API objects, etc). + +See the [CHANGELOG](./CHANGELOG.md) for a detailed description of changes +between client-go versions. + +| Branch | Canonical source code location | Maintenance status | +|----------------|--------------------------------------|-------------------------------| +| client-go 1.4 | Kubernetes main repo, 1.4 branch | = - | +| client-go 1.5 | Kubernetes main repo, 1.5 branch | = - | +| client-go 2.0 | Kubernetes main repo, 1.5 branch | ✓ | +| client-go 3.0 | Kubernetes main repo, 1.6 branch | ✓ | +| client-go HEAD | Kubernetes main repo, master branch | ✓ | + +Key: + +* `✓` Changes in main Kubernetes repo are actively published to client-go by a bot +* `=` Maintenance is manual, only severe security bugs will be patched. +* `-` Deprecated; please upgrade. + +#### Deprecation policy + +We will maintain branches for at least six months after their first stable tag +is cut. (E.g., the clock for the release-2.0 branch started ticking when we +tagged v2.0.0, not when we made the first alpha.) This policy applies to +every version greater than or equal to 2.0. + +#### Why do the 1.4 and 1.5 branch contain top-level folder named after the version? + +For the initial release of client-go, we thought it would be easiest to keep +separate directories for each minor version. That soon proved to be a mistake. +We are keeping the top-level folders in the 1.4 and 1.5 branches so that +existing users won't be broken. + +### How to get it + +You can use `go get k8s.io/client-go/...` to get client-go, but **you will get +the unstable master branch** and `client-go`'s vendored dependencies will not be +added to your `$GOPATH`. So we think most users will want to use a dependency +management system. See [INSTALL.md](/INSTALL.md) for detailed instructions. + +### How to use it + +If your application runs in a Pod in the cluster, please refer to the in-cluster [example](examples/in-cluster/main.go), otherwise please refer to the out-of-cluster [example](examples/out-of-cluster/main.go). + +### Dependency management + +If your application depends on a package that client-go depends on, and you let the Go compiler find the dependency in `GOPATH`, you will end up with duplicated dependencies: one copy from the `GOPATH`, and one from the vendor folder of client-go. This will cause unexpected runtime error like flag redefinition, since the go compiler ends up importing both packages separately, even if they are exactly the same thing. If this happens, you can either +* run `godep restore` ([godep](https://github.com/tools/godep)) in the client-go/ folder, then remove the vendor folder of client-go. Then the packages in your GOPATH will be the only copy +* or run `godep save` in your application folder to flatten all dependencies. + +### Contributing code +Please send pull requests against the client packages in the Kubernetes main [repository](https://github.com/kubernetes/kubernetes), and run the `/staging/copy.sh` script to update the staging area in the main repository. Changes in the staging area will be published to this repository every day. diff --git a/vendor/k8s.io/client-go/discovery/BUILD b/vendor/k8s.io/client-go/discovery/BUILD new file mode 100644 index 000000000..987e41f87 --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/BUILD @@ -0,0 +1,63 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = [ + "discovery_client.go", + "helper.go", + "restmapper.go", + "unstructured.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/emicklei/go-restful-swagger12:go_default_library", + "//vendor/github.com/go-openapi/loads:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = [ + "discovery_client_test.go", + "helper_blackbox_test.go", + "restmapper_test.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/emicklei/go-restful-swagger12:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/discovery:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/rest/fake:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/discovery/discovery_client.go b/vendor/k8s.io/client-go/discovery/discovery_client.go new file mode 100644 index 000000000..0ee46b863 --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/discovery_client.go @@ -0,0 +1,464 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "encoding/json" + "fmt" + "net/url" + "sort" + "strings" + + "github.com/emicklei/go-restful-swagger12" + + "github.com/go-openapi/loads" + "github.com/go-openapi/spec" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/version" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + restclient "k8s.io/client-go/rest" +) + +// defaultRetries is the number of times a resource discovery is repeated if an api group disappears on the fly (e.g. ThirdPartyResources). +const defaultRetries = 2 + +// DiscoveryInterface holds the methods that discover server-supported API groups, +// versions and resources. +type DiscoveryInterface interface { + RESTClient() restclient.Interface + ServerGroupsInterface + ServerResourcesInterface + ServerVersionInterface + SwaggerSchemaInterface + OpenAPISchemaInterface +} + +// CachedDiscoveryInterface is a DiscoveryInterface with cache invalidation and freshness. +type CachedDiscoveryInterface interface { + DiscoveryInterface + // Fresh returns true if no cached data was used that had been retrieved before the instantiation. + Fresh() bool + // Invalidate enforces that no cached data is used in the future that is older than the current time. + Invalidate() +} + +// ServerGroupsInterface has methods for obtaining supported groups on the API server +type ServerGroupsInterface interface { + // ServerGroups returns the supported groups, with information like supported versions and the + // preferred version. + ServerGroups() (*metav1.APIGroupList, error) +} + +// ServerResourcesInterface has methods for obtaining supported resources on the API server +type ServerResourcesInterface interface { + // ServerResourcesForGroupVersion returns the supported resources for a group and version. + ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) + // ServerResources returns the supported resources for all groups and versions. + ServerResources() ([]*metav1.APIResourceList, error) + // ServerPreferredResources returns the supported resources with the version preferred by the + // server. + ServerPreferredResources() ([]*metav1.APIResourceList, error) + // ServerPreferredNamespacedResources returns the supported namespaced resources with the + // version preferred by the server. + ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) +} + +// ServerVersionInterface has a method for retrieving the server's version. +type ServerVersionInterface interface { + // ServerVersion retrieves and parses the server's version (git version). + ServerVersion() (*version.Info, error) +} + +// SwaggerSchemaInterface has a method to retrieve the swagger schema. +type SwaggerSchemaInterface interface { + // SwaggerSchema retrieves and parses the swagger API schema the server supports. + SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) +} + +// OpenAPISchemaInterface has a method to retrieve the open API schema. +type OpenAPISchemaInterface interface { + // OpenAPISchema retrieves and parses the swagger API schema the server supports. + OpenAPISchema() (*spec.Swagger, error) +} + +// DiscoveryClient implements the functions that discover server-supported API groups, +// versions and resources. +type DiscoveryClient struct { + restClient restclient.Interface + + LegacyPrefix string +} + +// Convert metav1.APIVersions to metav1.APIGroup. APIVersions is used by legacy v1, so +// group would be "". +func apiVersionsToAPIGroup(apiVersions *metav1.APIVersions) (apiGroup metav1.APIGroup) { + groupVersions := []metav1.GroupVersionForDiscovery{} + for _, version := range apiVersions.Versions { + groupVersion := metav1.GroupVersionForDiscovery{ + GroupVersion: version, + Version: version, + } + groupVersions = append(groupVersions, groupVersion) + } + apiGroup.Versions = groupVersions + // There should be only one groupVersion returned at /api + apiGroup.PreferredVersion = groupVersions[0] + return +} + +// ServerGroups returns the supported groups, with information like supported versions and the +// preferred version. +func (d *DiscoveryClient) ServerGroups() (apiGroupList *metav1.APIGroupList, err error) { + // Get the groupVersions exposed at /api + v := &metav1.APIVersions{} + err = d.restClient.Get().AbsPath(d.LegacyPrefix).Do().Into(v) + apiGroup := metav1.APIGroup{} + if err == nil && len(v.Versions) != 0 { + apiGroup = apiVersionsToAPIGroup(v) + } + if err != nil && !errors.IsNotFound(err) && !errors.IsForbidden(err) { + return nil, err + } + + // Get the groupVersions exposed at /apis + apiGroupList = &metav1.APIGroupList{} + err = d.restClient.Get().AbsPath("/apis").Do().Into(apiGroupList) + if err != nil && !errors.IsNotFound(err) && !errors.IsForbidden(err) { + return nil, err + } + // to be compatible with a v1.0 server, if it's a 403 or 404, ignore and return whatever we got from /api + if err != nil && (errors.IsNotFound(err) || errors.IsForbidden(err)) { + apiGroupList = &metav1.APIGroupList{} + } + + // append the group retrieved from /api to the list if not empty + if len(v.Versions) != 0 { + apiGroupList.Groups = append(apiGroupList.Groups, apiGroup) + } + return apiGroupList, nil +} + +// ServerResourcesForGroupVersion returns the supported resources for a group and version. +func (d *DiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (resources *metav1.APIResourceList, err error) { + url := url.URL{} + if len(groupVersion) == 0 { + return nil, fmt.Errorf("groupVersion shouldn't be empty") + } + if len(d.LegacyPrefix) > 0 && groupVersion == "v1" { + url.Path = d.LegacyPrefix + "/" + groupVersion + } else { + url.Path = "/apis/" + groupVersion + } + resources = &metav1.APIResourceList{ + GroupVersion: groupVersion, + } + err = d.restClient.Get().AbsPath(url.String()).Do().Into(resources) + if err != nil { + // ignore 403 or 404 error to be compatible with an v1.0 server. + if groupVersion == "v1" && (errors.IsNotFound(err) || errors.IsForbidden(err)) { + return resources, nil + } + return nil, err + } + return resources, nil +} + +// serverResources returns the supported resources for all groups and versions. +func (d *DiscoveryClient) serverResources(failEarly bool) ([]*metav1.APIResourceList, error) { + apiGroups, err := d.ServerGroups() + if err != nil { + return nil, err + } + + result := []*metav1.APIResourceList{} + failedGroups := make(map[schema.GroupVersion]error) + + for _, apiGroup := range apiGroups.Groups { + for _, version := range apiGroup.Versions { + gv := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version} + resources, err := d.ServerResourcesForGroupVersion(version.GroupVersion) + if err != nil { + // TODO: maybe restrict this to NotFound errors + failedGroups[gv] = err + if failEarly { + return nil, &ErrGroupDiscoveryFailed{Groups: failedGroups} + } + continue + } + + result = append(result, resources) + } + } + + if len(failedGroups) == 0 { + return result, nil + } + + return result, &ErrGroupDiscoveryFailed{Groups: failedGroups} +} + +// ServerResources returns the supported resources for all groups and versions. +func (d *DiscoveryClient) ServerResources() ([]*metav1.APIResourceList, error) { + return withRetries(defaultRetries, d.serverResources) +} + +// ErrGroupDiscoveryFailed is returned if one or more API groups fail to load. +type ErrGroupDiscoveryFailed struct { + // Groups is a list of the groups that failed to load and the error cause + Groups map[schema.GroupVersion]error +} + +// Error implements the error interface +func (e *ErrGroupDiscoveryFailed) Error() string { + var groups []string + for k, v := range e.Groups { + groups = append(groups, fmt.Sprintf("%s: %v", k, v)) + } + sort.Strings(groups) + return fmt.Sprintf("unable to retrieve the complete list of server APIs: %s", strings.Join(groups, ", ")) +} + +// IsGroupDiscoveryFailedError returns true if the provided error indicates the server was unable to discover +// a complete list of APIs for the client to use. +func IsGroupDiscoveryFailedError(err error) bool { + _, ok := err.(*ErrGroupDiscoveryFailed) + return err != nil && ok +} + +// serverPreferredResources returns the supported resources with the version preferred by the server. +func (d *DiscoveryClient) serverPreferredResources(failEarly bool) ([]*metav1.APIResourceList, error) { + serverGroupList, err := d.ServerGroups() + if err != nil { + return nil, err + } + + result := []*metav1.APIResourceList{} + failedGroups := make(map[schema.GroupVersion]error) + + grVersions := map[schema.GroupResource]string{} // selected version of a GroupResource + grApiResources := map[schema.GroupResource]*metav1.APIResource{} // selected APIResource for a GroupResource + gvApiResourceLists := map[schema.GroupVersion]*metav1.APIResourceList{} // blueprint for a APIResourceList for later grouping + + for _, apiGroup := range serverGroupList.Groups { + for _, version := range apiGroup.Versions { + groupVersion := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version} + apiResourceList, err := d.ServerResourcesForGroupVersion(version.GroupVersion) + if err != nil { + // TODO: maybe restrict this to NotFound errors + failedGroups[groupVersion] = err + if failEarly { + return nil, &ErrGroupDiscoveryFailed{Groups: failedGroups} + } + continue + } + + // create empty list which is filled later in another loop + emptyApiResourceList := metav1.APIResourceList{ + GroupVersion: version.GroupVersion, + } + gvApiResourceLists[groupVersion] = &emptyApiResourceList + result = append(result, &emptyApiResourceList) + + for i := range apiResourceList.APIResources { + apiResource := &apiResourceList.APIResources[i] + if strings.Contains(apiResource.Name, "/") { + continue + } + gv := schema.GroupResource{Group: apiGroup.Name, Resource: apiResource.Name} + if _, ok := grApiResources[gv]; ok && version.Version != apiGroup.PreferredVersion.Version { + // only override with preferred version + continue + } + grVersions[gv] = version.Version + grApiResources[gv] = apiResource + } + } + } + + // group selected APIResources according to GroupVersion into APIResourceLists + for groupResource, apiResource := range grApiResources { + version := grVersions[groupResource] + groupVersion := schema.GroupVersion{Group: groupResource.Group, Version: version} + apiResourceList := gvApiResourceLists[groupVersion] + apiResourceList.APIResources = append(apiResourceList.APIResources, *apiResource) + } + + if len(failedGroups) == 0 { + return result, nil + } + + return result, &ErrGroupDiscoveryFailed{Groups: failedGroups} +} + +// ServerPreferredResources returns the supported resources with the version preferred by the +// server. +func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error) { + return withRetries(defaultRetries, func(retryEarly bool) ([]*metav1.APIResourceList, error) { + return d.serverPreferredResources(retryEarly) + }) +} + +// ServerPreferredNamespacedResources returns the supported namespaced resources with the +// version preferred by the server. +func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) { + all, err := d.ServerPreferredResources() + return FilteredBy(ResourcePredicateFunc(func(groupVersion string, r *metav1.APIResource) bool { + return r.Namespaced + }), all), err +} + +// ServerVersion retrieves and parses the server's version (git version). +func (d *DiscoveryClient) ServerVersion() (*version.Info, error) { + body, err := d.restClient.Get().AbsPath("/version").Do().Raw() + if err != nil { + return nil, err + } + var info version.Info + err = json.Unmarshal(body, &info) + if err != nil { + return nil, fmt.Errorf("got '%s': %v", string(body), err) + } + return &info, nil +} + +// SwaggerSchema retrieves and parses the swagger API schema the server supports. +// TODO: Replace usages with Open API. Tracked in https://github.com/kubernetes/kubernetes/issues/44589 +func (d *DiscoveryClient) SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) { + if version.Empty() { + return nil, fmt.Errorf("groupVersion cannot be empty") + } + + groupList, err := d.ServerGroups() + if err != nil { + return nil, err + } + groupVersions := metav1.ExtractGroupVersions(groupList) + // This check also takes care the case that kubectl is newer than the running endpoint + if stringDoesntExistIn(version.String(), groupVersions) { + return nil, fmt.Errorf("API version: %v is not supported by the server. Use one of: %v", version, groupVersions) + } + var path string + if len(d.LegacyPrefix) > 0 && version == v1.SchemeGroupVersion { + path = "/swaggerapi" + d.LegacyPrefix + "/" + version.Version + } else { + path = "/swaggerapi/apis/" + version.Group + "/" + version.Version + } + + body, err := d.restClient.Get().AbsPath(path).Do().Raw() + if err != nil { + return nil, err + } + var schema swagger.ApiDeclaration + err = json.Unmarshal(body, &schema) + if err != nil { + return nil, fmt.Errorf("got '%s': %v", string(body), err) + } + return &schema, nil +} + +// OpenAPISchema fetches the open api schema using a rest client and parses the json. +// Warning: this is very expensive (~1.2s) +func (d *DiscoveryClient) OpenAPISchema() (*spec.Swagger, error) { + data, err := d.restClient.Get().AbsPath("/swagger.json").Do().Raw() + if err != nil { + return nil, err + } + msg := json.RawMessage(data) + doc, err := loads.Analyzed(msg, "") + if err != nil { + return nil, err + } + return doc.Spec(), err +} + +// withRetries retries the given recovery function in case the groups supported by the server change after ServerGroup() returns. +func withRetries(maxRetries int, f func(failEarly bool) ([]*metav1.APIResourceList, error)) ([]*metav1.APIResourceList, error) { + var result []*metav1.APIResourceList + var err error + for i := 0; i < maxRetries; i++ { + failEarly := i < maxRetries-1 + result, err = f(failEarly) + if err == nil { + return result, nil + } + if _, ok := err.(*ErrGroupDiscoveryFailed); !ok { + return nil, err + } + } + return result, err +} + +func setDiscoveryDefaults(config *restclient.Config) error { + config.APIPath = "" + config.GroupVersion = nil + codec := runtime.NoopEncoder{Decoder: scheme.Codecs.UniversalDecoder()} + config.NegotiatedSerializer = serializer.NegotiatedSerializerWrapper(runtime.SerializerInfo{Serializer: codec}) + if len(config.UserAgent) == 0 { + config.UserAgent = restclient.DefaultKubernetesUserAgent() + } + return nil +} + +// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. This client +// can be used to discover supported resources in the API server. +func NewDiscoveryClientForConfig(c *restclient.Config) (*DiscoveryClient, error) { + config := *c + if err := setDiscoveryDefaults(&config); err != nil { + return nil, err + } + client, err := restclient.UnversionedRESTClientFor(&config) + return &DiscoveryClient{restClient: client, LegacyPrefix: "/api"}, err +} + +// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. If +// there is an error, it panics. +func NewDiscoveryClientForConfigOrDie(c *restclient.Config) *DiscoveryClient { + client, err := NewDiscoveryClientForConfig(c) + if err != nil { + panic(err) + } + return client + +} + +// New creates a new DiscoveryClient for the given RESTClient. +func NewDiscoveryClient(c restclient.Interface) *DiscoveryClient { + return &DiscoveryClient{restClient: c, LegacyPrefix: "/api"} +} + +func stringDoesntExistIn(str string, slice []string) bool { + for _, s := range slice { + if s == str { + return false + } + } + return true +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *DiscoveryClient) RESTClient() restclient.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/discovery/discovery_client_test.go b/vendor/k8s.io/client-go/discovery/discovery_client_test.go new file mode 100644 index 000000000..f4058991c --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/discovery_client_test.go @@ -0,0 +1,817 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery_test + +import ( + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "reflect" + "testing" + + "github.com/emicklei/go-restful-swagger12" + + "github.com/go-openapi/spec" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/version" + . "k8s.io/client-go/discovery" + "k8s.io/client-go/pkg/api/v1" + restclient "k8s.io/client-go/rest" +) + +func TestGetServerVersion(t *testing.T) { + expect := version.Info{ + Major: "foo", + Minor: "bar", + GitCommit: "baz", + } + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + output, err := json.Marshal(expect) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + })) + defer server.Close() + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + + got, err := client.ServerVersion() + if err != nil { + t.Fatalf("unexpected encoding error: %v", err) + } + if e, a := expect, *got; !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } +} + +func TestGetServerGroupsWithV1Server(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + var obj interface{} + switch req.URL.Path { + case "/api": + obj = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + default: + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(obj) + if err != nil { + t.Fatalf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + })) + defer server.Close() + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + // ServerGroups should not return an error even if server returns error at /api and /apis + apiGroupList, err := client.ServerGroups() + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + groupVersions := metav1.ExtractGroupVersions(apiGroupList) + if !reflect.DeepEqual(groupVersions, []string{"v1"}) { + t.Errorf("expected: %q, got: %q", []string{"v1"}, groupVersions) + } +} + +func TestGetServerGroupsWithBrokenServer(t *testing.T) { + for _, statusCode := range []int{http.StatusNotFound, http.StatusForbidden} { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + w.WriteHeader(statusCode) + })) + defer server.Close() + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + // ServerGroups should not return an error even if server returns Not Found or Forbidden error at all end points + apiGroupList, err := client.ServerGroups() + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + groupVersions := metav1.ExtractGroupVersions(apiGroupList) + if len(groupVersions) != 0 { + t.Errorf("expected empty list, got: %q", groupVersions) + } + } +} + +func TestGetServerResourcesWithV1Server(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + var obj interface{} + switch req.URL.Path { + case "/api": + obj = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + default: + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(obj) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + })) + defer server.Close() + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + // ServerResources should not return an error even if server returns error at /api/v1. + serverResources, err := client.ServerResources() + if err != nil { + t.Errorf("unexpected error: %v", err) + } + gvs := groupVersions(serverResources) + if !sets.NewString(gvs...).Has("v1") { + t.Errorf("missing v1 in resource list: %v", serverResources) + } +} + +func TestGetServerResources(t *testing.T) { + stable := metav1.APIResourceList{ + GroupVersion: "v1", + APIResources: []metav1.APIResource{ + {Name: "pods", Namespaced: true, Kind: "Pod"}, + {Name: "services", Namespaced: true, Kind: "Service"}, + {Name: "namespaces", Namespaced: false, Kind: "Namespace"}, + }, + } + beta := metav1.APIResourceList{ + GroupVersion: "extensions/v1beta1", + APIResources: []metav1.APIResource{ + {Name: "deployments", Namespaced: true, Kind: "Deployment"}, + {Name: "ingresses", Namespaced: true, Kind: "Ingress"}, + {Name: "jobs", Namespaced: true, Kind: "Job"}, + }, + } + tests := []struct { + resourcesList *metav1.APIResourceList + path string + request string + expectErr bool + }{ + { + resourcesList: &stable, + path: "/api/v1", + request: "v1", + expectErr: false, + }, + { + resourcesList: &beta, + path: "/apis/extensions/v1beta1", + request: "extensions/v1beta1", + expectErr: false, + }, + { + resourcesList: &stable, + path: "/api/v1", + request: "foobar", + expectErr: true, + }, + } + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/api/v1": + list = &stable + case "/apis/extensions/v1beta1": + list = &beta + case "/api": + list = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + case "/apis": + list = &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Versions: []metav1.GroupVersionForDiscovery{ + {GroupVersion: "extensions/v1beta1"}, + }, + }, + }, + } + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + })) + defer server.Close() + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + for _, test := range tests { + got, err := client.ServerResourcesForGroupVersion(test.request) + if test.expectErr { + if err == nil { + t.Error("unexpected non-error") + } + continue + } + if err != nil { + t.Errorf("unexpected error: %v", err) + continue + } + if !reflect.DeepEqual(got, test.resourcesList) { + t.Errorf("expected:\n%v\ngot:\n%v\n", test.resourcesList, got) + } + } + + serverResources, err := client.ServerResources() + if err != nil { + t.Errorf("unexpected error: %v", err) + } + serverGroupVersions := sets.NewString(groupVersions(serverResources)...) + for _, api := range []string{"v1", "extensions/v1beta1"} { + if !serverGroupVersions.Has(api) { + t.Errorf("missing expected api %q in %v", api, serverResources) + } + } +} + +func swaggerSchemaFakeServer() (*httptest.Server, error) { + request := 1 + var sErr error + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + var resp interface{} + if request == 1 { + resp = metav1.APIVersions{Versions: []string{"v1", "v2", "v3"}} + request++ + } else { + resp = swagger.ApiDeclaration{} + } + output, err := json.Marshal(resp) + if err != nil { + sErr = err + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + })) + return server, sErr +} + +func TestGetSwaggerSchema(t *testing.T) { + expect := swagger.ApiDeclaration{} + + server, err := swaggerSchemaFakeServer() + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + } + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + got, err := client.SwaggerSchema(v1.SchemeGroupVersion) + if err != nil { + t.Fatalf("unexpected encoding error: %v", err) + } + if e, a := expect, *got; !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } +} + +func TestGetSwaggerSchemaFail(t *testing.T) { + expErr := "API version: api.group/v4 is not supported by the server. Use one of: [v1 v2 v3]" + + server, err := swaggerSchemaFakeServer() + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + } + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + got, err := client.SwaggerSchema(schema.GroupVersion{Group: "api.group", Version: "v4"}) + if got != nil { + t.Fatalf("unexpected response: %v", got) + } + if err.Error() != expErr { + t.Errorf("expected an error, got %v", err) + } +} + +var returnedOpenAPI = spec.Swagger{ + SwaggerProps: spec.SwaggerProps{ + Definitions: spec.Definitions{ + "fake.type.1": spec.Schema{ + SchemaProps: spec.SchemaProps{ + Properties: map[string]spec.Schema{ + "count": { + SchemaProps: spec.SchemaProps{ + Type: []string{"integer"}, + }, + }, + }, + }, + }, + "fake.type.2": spec.Schema{ + SchemaProps: spec.SchemaProps{ + Properties: map[string]spec.Schema{ + "count": { + SchemaProps: spec.SchemaProps{ + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, +} + +func openapiSchemaFakeServer() (*httptest.Server, error) { + var sErr error + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + if req.URL.Path != "/swagger.json" { + sErr = fmt.Errorf("Unexpected url %v", req.URL) + } + if req.Method != "GET" { + sErr = fmt.Errorf("Unexpected method %v", req.Method) + } + + output, err := json.Marshal(returnedOpenAPI) + if err != nil { + sErr = err + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + })) + return server, sErr +} + +func TestGetOpenAPISchema(t *testing.T) { + server, err := openapiSchemaFakeServer() + if err != nil { + t.Errorf("unexpected error starting fake server: %v", err) + } + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + got, err := client.OpenAPISchema() + if err != nil { + t.Fatalf("unexpected error getting openapi: %v", err) + } + if e, a := returnedOpenAPI, *got; !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } +} + +func TestServerPreferredResources(t *testing.T) { + stable := metav1.APIResourceList{ + GroupVersion: "v1", + APIResources: []metav1.APIResource{ + {Name: "pods", Namespaced: true, Kind: "Pod"}, + {Name: "services", Namespaced: true, Kind: "Service"}, + {Name: "namespaces", Namespaced: false, Kind: "Namespace"}, + }, + } + tests := []struct { + resourcesList []*metav1.APIResourceList + response func(w http.ResponseWriter, req *http.Request) + expectErr func(err error) bool + }{ + { + resourcesList: []*metav1.APIResourceList{&stable}, + expectErr: IsGroupDiscoveryFailedError, + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis/extensions/v1beta1": + w.WriteHeader(http.StatusInternalServerError) + return + case "/api/v1": + list = &stable + case "/api": + list = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + case "/apis": + list = &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Versions: []metav1.GroupVersionForDiscovery{ + {GroupVersion: "extensions/v1beta1"}, + }, + }, + }, + } + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + }, + { + resourcesList: nil, + expectErr: IsGroupDiscoveryFailedError, + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis/extensions/v1beta1": + w.WriteHeader(http.StatusInternalServerError) + return + case "/api/v1": + w.WriteHeader(http.StatusInternalServerError) + case "/api": + list = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + case "/apis": + list = &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Versions: []metav1.GroupVersionForDiscovery{ + {GroupVersion: "extensions/v1beta1"}, + }, + }, + }, + } + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + }, + } + for _, test := range tests { + server := httptest.NewServer(http.HandlerFunc(test.response)) + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + resources, err := client.ServerPreferredResources() + if test.expectErr != nil { + if err == nil { + t.Error("unexpected non-error") + } + + continue + } + if err != nil { + t.Errorf("unexpected error: %v", err) + continue + } + got, err := GroupVersionResources(resources) + if err != nil { + t.Errorf("unexpected error: %v", err) + continue + } + expected, _ := GroupVersionResources(test.resourcesList) + if !reflect.DeepEqual(got, expected) { + t.Errorf("expected:\n%v\ngot:\n%v\n", test.resourcesList, got) + } + server.Close() + } +} + +func TestServerPreferredResourcesRetries(t *testing.T) { + stable := metav1.APIResourceList{ + GroupVersion: "v1", + APIResources: []metav1.APIResource{ + {Name: "pods", Namespaced: true, Kind: "Pod"}, + }, + } + beta := metav1.APIResourceList{ + GroupVersion: "extensions/v1", + APIResources: []metav1.APIResource{ + {Name: "deployments", Namespaced: true, Kind: "Deployment"}, + }, + } + + response := func(numErrors int) http.HandlerFunc { + var i = 0 + return func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis/extensions/v1beta1": + if i < numErrors { + i++ + w.WriteHeader(http.StatusInternalServerError) + return + } + list = &beta + case "/api/v1": + list = &stable + case "/api": + list = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + case "/apis": + list = &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Name: "extensions", + Versions: []metav1.GroupVersionForDiscovery{ + {GroupVersion: "extensions/v1beta1"}, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{ + GroupVersion: "extensions/v1beta1", + Version: "v1beta1", + }, + }, + }, + } + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + } + } + tests := []struct { + responseErrors int + expectResources int + expectedError func(err error) bool + }{ + { + responseErrors: 1, + expectResources: 2, + expectedError: func(err error) bool { + return err == nil + }, + }, + { + responseErrors: 2, + expectResources: 1, + expectedError: IsGroupDiscoveryFailedError, + }, + } + + for i, tc := range tests { + server := httptest.NewServer(http.HandlerFunc(response(tc.responseErrors))) + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + resources, err := client.ServerPreferredResources() + if !tc.expectedError(err) { + t.Errorf("case %d: unexpected error: %v", i, err) + } + got, err := GroupVersionResources(resources) + if err != nil { + t.Errorf("case %d: unexpected error: %v", i, err) + } + if len(got) != tc.expectResources { + t.Errorf("case %d: expect %d resources, got %#v", i, tc.expectResources, got) + } + server.Close() + } +} + +func TestServerPreferredNamespacedResources(t *testing.T) { + stable := metav1.APIResourceList{ + GroupVersion: "v1", + APIResources: []metav1.APIResource{ + {Name: "pods", Namespaced: true, Kind: "Pod"}, + {Name: "services", Namespaced: true, Kind: "Service"}, + {Name: "namespaces", Namespaced: false, Kind: "Namespace"}, + }, + } + batchv1 := metav1.APIResourceList{ + GroupVersion: "batch/v1", + APIResources: []metav1.APIResource{ + {Name: "jobs", Namespaced: true, Kind: "Job"}, + }, + } + batchv2alpha1 := metav1.APIResourceList{ + GroupVersion: "batch/v2alpha1", + APIResources: []metav1.APIResource{ + {Name: "jobs", Namespaced: true, Kind: "Job"}, + {Name: "cronjobs", Namespaced: true, Kind: "CronJob"}, + }, + } + batchv3alpha1 := metav1.APIResourceList{ + GroupVersion: "batch/v3alpha1", + APIResources: []metav1.APIResource{ + {Name: "jobs", Namespaced: true, Kind: "Job"}, + {Name: "cronjobs", Namespaced: true, Kind: "CronJob"}, + }, + } + tests := []struct { + response func(w http.ResponseWriter, req *http.Request) + expected map[schema.GroupVersionResource]struct{} + }{ + { + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/api/v1": + list = &stable + case "/api": + list = &metav1.APIVersions{ + Versions: []string{ + "v1", + }, + } + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + expected: map[schema.GroupVersionResource]struct{}{ + {Group: "", Version: "v1", Resource: "pods"}: {}, + {Group: "", Version: "v1", Resource: "services"}: {}, + }, + }, + { + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis": + list = &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Name: "batch", + Versions: []metav1.GroupVersionForDiscovery{ + {GroupVersion: "batch/v1", Version: "v1"}, + {GroupVersion: "batch/v2alpha1", Version: "v2alpha1"}, + {GroupVersion: "batch/v3alpha1", Version: "v3alpha1"}, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{GroupVersion: "batch/v1", Version: "v1"}, + }, + }, + } + case "/apis/batch/v1": + list = &batchv1 + case "/apis/batch/v2alpha1": + list = &batchv2alpha1 + case "/apis/batch/v3alpha1": + list = &batchv3alpha1 + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + expected: map[schema.GroupVersionResource]struct{}{ + {Group: "batch", Version: "v1", Resource: "jobs"}: {}, + {Group: "batch", Version: "v2alpha1", Resource: "cronjobs"}: {}, + }, + }, + { + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis": + list = &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Name: "batch", + Versions: []metav1.GroupVersionForDiscovery{ + {GroupVersion: "batch/v1", Version: "v1"}, + {GroupVersion: "batch/v2alpha1", Version: "v2alpha1"}, + {GroupVersion: "batch/v3alpha1", Version: "v3alpha1"}, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{GroupVersion: "batch/v2alpha", Version: "v2alpha1"}, + }, + }, + } + case "/apis/batch/v1": + list = &batchv1 + case "/apis/batch/v2alpha1": + list = &batchv2alpha1 + case "/apis/batch/v3alpha1": + list = &batchv3alpha1 + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + expected: map[schema.GroupVersionResource]struct{}{ + {Group: "batch", Version: "v2alpha1", Resource: "jobs"}: {}, + {Group: "batch", Version: "v2alpha1", Resource: "cronjobs"}: {}, + }, + }, + } + for i, test := range tests { + server := httptest.NewServer(http.HandlerFunc(test.response)) + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + resources, err := client.ServerPreferredNamespacedResources() + if err != nil { + t.Errorf("[%d] unexpected error: %v", i, err) + continue + } + got, err := GroupVersionResources(resources) + if err != nil { + t.Errorf("[%d] unexpected error: %v", i, err) + continue + } + + if !reflect.DeepEqual(got, test.expected) { + t.Errorf("[%d] expected:\n%v\ngot:\n%v\n", i, test.expected, got) + } + server.Close() + } +} + +func groupVersions(resources []*metav1.APIResourceList) []string { + result := []string{} + for _, resourceList := range resources { + result = append(result, resourceList.GroupVersion) + } + return result +} diff --git a/vendor/k8s.io/client-go/discovery/fake/BUILD b/vendor/k8s.io/client-go/discovery/fake/BUILD new file mode 100644 index 000000000..6f894e366 --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/fake/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["discovery.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/emicklei/go-restful-swagger12:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/discovery/fake/discovery.go b/vendor/k8s.io/client-go/discovery/fake/discovery.go new file mode 100644 index 000000000..eb2be2540 --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/fake/discovery.go @@ -0,0 +1,100 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "fmt" + + "github.com/emicklei/go-restful-swagger12" + + "github.com/go-openapi/spec" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/version" + "k8s.io/client-go/pkg/api/v1" + kubeversion "k8s.io/client-go/pkg/version" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/testing" +) + +type FakeDiscovery struct { + *testing.Fake +} + +func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) { + action := testing.ActionImpl{ + Verb: "get", + Resource: schema.GroupVersionResource{Resource: "resource"}, + } + c.Invokes(action, nil) + for _, resourceList := range c.Resources { + if resourceList.GroupVersion == groupVersion { + return resourceList, nil + } + } + return nil, fmt.Errorf("GroupVersion %q not found", groupVersion) +} + +func (c *FakeDiscovery) ServerResources() ([]*metav1.APIResourceList, error) { + action := testing.ActionImpl{ + Verb: "get", + Resource: schema.GroupVersionResource{Resource: "resource"}, + } + c.Invokes(action, nil) + return c.Resources, nil +} + +func (c *FakeDiscovery) ServerPreferredResources() ([]*metav1.APIResourceList, error) { + return nil, nil +} + +func (c *FakeDiscovery) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) { + return nil, nil +} + +func (c *FakeDiscovery) ServerGroups() (*metav1.APIGroupList, error) { + return nil, nil +} + +func (c *FakeDiscovery) ServerVersion() (*version.Info, error) { + action := testing.ActionImpl{} + action.Verb = "get" + action.Resource = schema.GroupVersionResource{Resource: "version"} + + c.Invokes(action, nil) + versionInfo := kubeversion.Get() + return &versionInfo, nil +} + +func (c *FakeDiscovery) SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) { + action := testing.ActionImpl{} + action.Verb = "get" + if version == v1.SchemeGroupVersion { + action.Resource = schema.GroupVersionResource{Resource: "/swaggerapi/api/" + version.Version} + } else { + action.Resource = schema.GroupVersionResource{Resource: "/swaggerapi/apis/" + version.Group + "/" + version.Version} + } + + c.Invokes(action, nil) + return &swagger.ApiDeclaration{}, nil +} + +func (c *FakeDiscovery) OpenAPISchema() (*spec.Swagger, error) { return &spec.Swagger{}, nil } + +func (c *FakeDiscovery) RESTClient() restclient.Interface { + return nil +} diff --git a/vendor/k8s.io/client-go/discovery/helper.go b/vendor/k8s.io/client-go/discovery/helper.go new file mode 100644 index 000000000..353d34b3c --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/helper.go @@ -0,0 +1,121 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" + apimachineryversion "k8s.io/apimachinery/pkg/version" +) + +// MatchesServerVersion queries the server to compares the build version +// (git hash) of the client with the server's build version. It returns an error +// if it failed to contact the server or if the versions are not an exact match. +func MatchesServerVersion(clientVersion apimachineryversion.Info, client DiscoveryInterface) error { + sVer, err := client.ServerVersion() + if err != nil { + return fmt.Errorf("couldn't read version from server: %v\n", err) + } + // GitVersion includes GitCommit and GitTreeState, but best to be safe? + if clientVersion.GitVersion != sVer.GitVersion || clientVersion.GitCommit != sVer.GitCommit || clientVersion.GitTreeState != sVer.GitTreeState { + return fmt.Errorf("server version (%#v) differs from client version (%#v)!\n", sVer, clientVersion) + } + + return nil +} + +// ServerSupportsVersion returns an error if the server doesn't have the required version +func ServerSupportsVersion(client DiscoveryInterface, requiredGV schema.GroupVersion) error { + groups, err := client.ServerGroups() + if err != nil { + // This is almost always a connection error, and higher level code should treat this as a generic error, + // not a negotiation specific error. + return err + } + versions := metav1.ExtractGroupVersions(groups) + serverVersions := sets.String{} + for _, v := range versions { + serverVersions.Insert(v) + } + + if serverVersions.Has(requiredGV.String()) { + return nil + } + + // If the server supports no versions, then we should pretend it has the version because of old servers. + // This can happen because discovery fails due to 403 Forbidden errors + if len(serverVersions) == 0 { + return nil + } + + return fmt.Errorf("server does not support API version %q", requiredGV) +} + +// GroupVersionResources converts APIResourceLists to the GroupVersionResources. +func GroupVersionResources(rls []*metav1.APIResourceList) (map[schema.GroupVersionResource]struct{}, error) { + gvrs := map[schema.GroupVersionResource]struct{}{} + for _, rl := range rls { + gv, err := schema.ParseGroupVersion(rl.GroupVersion) + if err != nil { + return nil, err + } + for i := range rl.APIResources { + gvrs[schema.GroupVersionResource{Group: gv.Group, Version: gv.Version, Resource: rl.APIResources[i].Name}] = struct{}{} + } + } + return gvrs, nil +} + +// FilteredBy filters by the given predicate. Empty APIResourceLists are dropped. +func FilteredBy(pred ResourcePredicate, rls []*metav1.APIResourceList) []*metav1.APIResourceList { + result := []*metav1.APIResourceList{} + for _, rl := range rls { + filtered := *rl + filtered.APIResources = nil + for i := range rl.APIResources { + if pred.Match(rl.GroupVersion, &rl.APIResources[i]) { + filtered.APIResources = append(filtered.APIResources, rl.APIResources[i]) + } + } + if filtered.APIResources != nil { + result = append(result, &filtered) + } + } + return result +} + +type ResourcePredicate interface { + Match(groupVersion string, r *metav1.APIResource) bool +} + +type ResourcePredicateFunc func(groupVersion string, r *metav1.APIResource) bool + +func (fn ResourcePredicateFunc) Match(groupVersion string, r *metav1.APIResource) bool { + return fn(groupVersion, r) +} + +// SupportsAllVerbs is a predicate matching a resource iff all given verbs are supported. +type SupportsAllVerbs struct { + Verbs []string +} + +func (p SupportsAllVerbs) Match(groupVersion string, r *metav1.APIResource) bool { + return sets.NewString([]string(r.Verbs)...).HasAll(p.Verbs...) +} diff --git a/vendor/k8s.io/client-go/discovery/helper_blackbox_test.go b/vendor/k8s.io/client-go/discovery/helper_blackbox_test.go new file mode 100644 index 000000000..7b7236bc4 --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/helper_blackbox_test.go @@ -0,0 +1,185 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery_test + +import ( + "bytes" + "encoding/json" + "errors" + "io" + "io/ioutil" + "net/http" + "strings" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + uapi "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/discovery" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/rest/fake" +) + +func objBody(object interface{}) io.ReadCloser { + output, err := json.MarshalIndent(object, "", "") + if err != nil { + panic(err) + } + return ioutil.NopCloser(bytes.NewReader([]byte(output))) +} + +func TestServerSupportsVersion(t *testing.T) { + tests := []struct { + name string + requiredVersion schema.GroupVersion + serverVersions []string + expectErr func(err error) bool + sendErr error + statusCode int + }{ + { + name: "explicit version supported", + requiredVersion: schema.GroupVersion{Version: "v1"}, + serverVersions: []string{"/version1", v1.SchemeGroupVersion.String()}, + statusCode: http.StatusOK, + }, + { + name: "explicit version not supported on server", + requiredVersion: schema.GroupVersion{Version: "v1"}, + serverVersions: []string{"version1"}, + expectErr: func(err error) bool { return strings.Contains(err.Error(), `server does not support API version "v1"`) }, + statusCode: http.StatusOK, + }, + { + name: "connection refused error", + serverVersions: []string{"version1"}, + sendErr: errors.New("connection refused"), + expectErr: func(err error) bool { return strings.Contains(err.Error(), "connection refused") }, + statusCode: http.StatusOK, + }, + { + name: "discovery fails due to 404 Not Found errors and thus serverVersions is empty, use requested GroupVersion", + requiredVersion: schema.GroupVersion{Version: "version1"}, + statusCode: http.StatusNotFound, + }, + } + + for _, test := range tests { + fakeClient := &fake.RESTClient{ + NegotiatedSerializer: scheme.Codecs, + Resp: &http.Response{ + StatusCode: test.statusCode, + Body: objBody(&uapi.APIVersions{Versions: test.serverVersions}), + }, + Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { + if test.sendErr != nil { + return nil, test.sendErr + } + header := http.Header{} + header.Set("Content-Type", runtime.ContentTypeJSON) + return &http.Response{StatusCode: test.statusCode, Header: header, Body: objBody(&uapi.APIVersions{Versions: test.serverVersions})}, nil + }), + } + c := discovery.NewDiscoveryClientForConfigOrDie(&restclient.Config{}) + c.RESTClient().(*restclient.RESTClient).Client = fakeClient.Client + err := discovery.ServerSupportsVersion(c, test.requiredVersion) + if err == nil && test.expectErr != nil { + t.Errorf("expected error, got nil for [%s].", test.name) + } + if err != nil { + if test.expectErr == nil || !test.expectErr(err) { + t.Errorf("unexpected error for [%s]: %v.", test.name, err) + } + continue + } + } +} + +func TestFilteredBy(t *testing.T) { + all := discovery.ResourcePredicateFunc(func(gv string, r *metav1.APIResource) bool { + return true + }) + none := discovery.ResourcePredicateFunc(func(gv string, r *metav1.APIResource) bool { + return false + }) + onlyV2 := discovery.ResourcePredicateFunc(func(gv string, r *metav1.APIResource) bool { + return strings.HasSuffix(gv, "/v2") || gv == "v2" + }) + onlyBar := discovery.ResourcePredicateFunc(func(gv string, r *metav1.APIResource) bool { + return r.Kind == "Bar" + }) + + foo := []*metav1.APIResourceList{ + { + GroupVersion: "foo/v1", + APIResources: []metav1.APIResource{ + {Name: "bar", Kind: "Bar"}, + {Name: "test", Kind: "Test"}, + }, + }, + { + GroupVersion: "foo/v2", + APIResources: []metav1.APIResource{ + {Name: "bar", Kind: "Bar"}, + {Name: "test", Kind: "Test"}, + }, + }, + { + GroupVersion: "foo/v3", + APIResources: []metav1.APIResource{}, + }, + } + + tests := []struct { + input []*metav1.APIResourceList + pred discovery.ResourcePredicate + expectedResources []string + }{ + {nil, all, []string{}}, + {[]*metav1.APIResourceList{ + {GroupVersion: "foo/v1"}, + }, all, []string{}}, + {foo, all, []string{"foo/v1.bar", "foo/v1.test", "foo/v2.bar", "foo/v2.test"}}, + {foo, onlyV2, []string{"foo/v2.bar", "foo/v2.test"}}, + {foo, onlyBar, []string{"foo/v1.bar", "foo/v2.bar"}}, + {foo, none, []string{}}, + } + for i, test := range tests { + filtered := discovery.FilteredBy(test.pred, test.input) + + if expected, got := sets.NewString(test.expectedResources...), sets.NewString(stringify(filtered)...); !expected.Equal(got) { + t.Errorf("[%d] unexpected group versions: expected=%v, got=%v", i, test.expectedResources, stringify(filtered)) + } + } +} + +func stringify(rls []*metav1.APIResourceList) []string { + result := []string{} + for _, rl := range rls { + for _, r := range rl.APIResources { + result = append(result, rl.GroupVersion+"."+r.Name) + } + if len(rl.APIResources) == 0 { + result = append(result, rl.GroupVersion) + } + } + return result +} diff --git a/vendor/k8s.io/client-go/discovery/restmapper.go b/vendor/k8s.io/client-go/discovery/restmapper.go new file mode 100644 index 000000000..756669001 --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/restmapper.go @@ -0,0 +1,304 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "fmt" + "sync" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + + "github.com/golang/glog" +) + +// APIGroupResources is an API group with a mapping of versions to +// resources. +type APIGroupResources struct { + Group metav1.APIGroup + // A mapping of version string to a slice of APIResources for + // that version. + VersionedResources map[string][]metav1.APIResource +} + +// NewRESTMapper returns a PriorityRESTMapper based on the discovered +// groups and resources passed in. +func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.VersionInterfacesFunc) meta.RESTMapper { + unionMapper := meta.MultiRESTMapper{} + + var groupPriority []string + // /v1 is special. It should always come first + resourcePriority := []schema.GroupVersionResource{{Group: "", Version: "v1", Resource: meta.AnyResource}} + kindPriority := []schema.GroupVersionKind{{Group: "", Version: "v1", Kind: meta.AnyKind}} + + for _, group := range groupResources { + groupPriority = append(groupPriority, group.Group.Name) + + if len(group.Group.PreferredVersion.Version) != 0 { + preferred := group.Group.PreferredVersion.Version + if _, ok := group.VersionedResources[preferred]; ok { + resourcePriority = append(resourcePriority, schema.GroupVersionResource{ + Group: group.Group.Name, + Version: group.Group.PreferredVersion.Version, + Resource: meta.AnyResource, + }) + + kindPriority = append(kindPriority, schema.GroupVersionKind{ + Group: group.Group.Name, + Version: group.Group.PreferredVersion.Version, + Kind: meta.AnyKind, + }) + } + } + + for _, discoveryVersion := range group.Group.Versions { + resources, ok := group.VersionedResources[discoveryVersion.Version] + if !ok { + continue + } + + gv := schema.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} + versionMapper := meta.NewDefaultRESTMapper([]schema.GroupVersion{gv}, versionInterfaces) + + for _, resource := range resources { + scope := meta.RESTScopeNamespace + if !resource.Namespaced { + scope = meta.RESTScopeRoot + } + versionMapper.Add(gv.WithKind(resource.Kind), scope) + // TODO only do this if it supports listing + versionMapper.Add(gv.WithKind(resource.Kind+"List"), scope) + } + // TODO why is this type not in discovery (at least for "v1") + versionMapper.Add(gv.WithKind("List"), meta.RESTScopeRoot) + unionMapper = append(unionMapper, versionMapper) + } + } + + for _, group := range groupPriority { + resourcePriority = append(resourcePriority, schema.GroupVersionResource{ + Group: group, + Version: meta.AnyVersion, + Resource: meta.AnyResource, + }) + kindPriority = append(kindPriority, schema.GroupVersionKind{ + Group: group, + Version: meta.AnyVersion, + Kind: meta.AnyKind, + }) + } + + return meta.PriorityRESTMapper{ + Delegate: unionMapper, + ResourcePriority: resourcePriority, + KindPriority: kindPriority, + } +} + +// GetAPIGroupResources uses the provided discovery client to gather +// discovery information and populate a slice of APIGroupResources. +func GetAPIGroupResources(cl DiscoveryInterface) ([]*APIGroupResources, error) { + apiGroups, err := cl.ServerGroups() + if err != nil { + return nil, err + } + var result []*APIGroupResources + for _, group := range apiGroups.Groups { + groupResources := &APIGroupResources{ + Group: group, + VersionedResources: make(map[string][]metav1.APIResource), + } + for _, version := range group.Versions { + resources, err := cl.ServerResourcesForGroupVersion(version.GroupVersion) + if err != nil { + // continue as best we can + // TODO track the errors and update callers to handle partial errors. + continue + } + groupResources.VersionedResources[version.Version] = resources.APIResources + } + result = append(result, groupResources) + } + return result, nil +} + +// DeferredDiscoveryRESTMapper is a RESTMapper that will defer +// initialization of the RESTMapper until the first mapping is +// requested. +type DeferredDiscoveryRESTMapper struct { + initMu sync.Mutex + delegate meta.RESTMapper + cl CachedDiscoveryInterface + versionInterface meta.VersionInterfacesFunc +} + +// NewDeferredDiscoveryRESTMapper returns a +// DeferredDiscoveryRESTMapper that will lazily query the provided +// client for discovery information to do REST mappings. +func NewDeferredDiscoveryRESTMapper(cl CachedDiscoveryInterface, versionInterface meta.VersionInterfacesFunc) *DeferredDiscoveryRESTMapper { + return &DeferredDiscoveryRESTMapper{ + cl: cl, + versionInterface: versionInterface, + } +} + +func (d *DeferredDiscoveryRESTMapper) getDelegate() (meta.RESTMapper, error) { + d.initMu.Lock() + defer d.initMu.Unlock() + + if d.delegate != nil { + return d.delegate, nil + } + + groupResources, err := GetAPIGroupResources(d.cl) + if err != nil { + return nil, err + } + + d.delegate = NewRESTMapper(groupResources, d.versionInterface) + return d.delegate, err +} + +// Reset resets the internally cached Discovery information and will +// cause the next mapping request to re-discover. +func (d *DeferredDiscoveryRESTMapper) Reset() { + glog.V(5).Info("Invalidating discovery information") + + d.initMu.Lock() + defer d.initMu.Unlock() + + d.cl.Invalidate() + d.delegate = nil +} + +// KindFor takes a partial resource and returns back the single match. +// It returns an error if there are multiple matches. +func (d *DeferredDiscoveryRESTMapper) KindFor(resource schema.GroupVersionResource) (gvk schema.GroupVersionKind, err error) { + del, err := d.getDelegate() + if err != nil { + return schema.GroupVersionKind{}, err + } + gvk, err = del.KindFor(resource) + if err != nil && !d.cl.Fresh() { + d.Reset() + gvk, err = d.KindFor(resource) + } + return +} + +// KindsFor takes a partial resource and returns back the list of +// potential kinds in priority order. +func (d *DeferredDiscoveryRESTMapper) KindsFor(resource schema.GroupVersionResource) (gvks []schema.GroupVersionKind, err error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + gvks, err = del.KindsFor(resource) + if len(gvks) == 0 && !d.cl.Fresh() { + d.Reset() + gvks, err = d.KindsFor(resource) + } + return +} + +// ResourceFor takes a partial resource and returns back the single +// match. It returns an error if there are multiple matches. +func (d *DeferredDiscoveryRESTMapper) ResourceFor(input schema.GroupVersionResource) (gvr schema.GroupVersionResource, err error) { + del, err := d.getDelegate() + if err != nil { + return schema.GroupVersionResource{}, err + } + gvr, err = del.ResourceFor(input) + if err != nil && !d.cl.Fresh() { + d.Reset() + gvr, err = d.ResourceFor(input) + } + return +} + +// ResourcesFor takes a partial resource and returns back the list of +// potential resource in priority order. +func (d *DeferredDiscoveryRESTMapper) ResourcesFor(input schema.GroupVersionResource) (gvrs []schema.GroupVersionResource, err error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + gvrs, err = del.ResourcesFor(input) + if len(gvrs) == 0 && !d.cl.Fresh() { + d.Reset() + gvrs, err = d.ResourcesFor(input) + } + return +} + +// RESTMapping identifies a preferred resource mapping for the +// provided group kind. +func (d *DeferredDiscoveryRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (m *meta.RESTMapping, err error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + m, err = del.RESTMapping(gk, versions...) + if err != nil && !d.cl.Fresh() { + d.Reset() + m, err = d.RESTMapping(gk, versions...) + } + return +} + +// RESTMappings returns the RESTMappings for the provided group kind +// in a rough internal preferred order. If no kind is found, it will +// return a NoResourceMatchError. +func (d *DeferredDiscoveryRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) (ms []*meta.RESTMapping, err error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + ms, err = del.RESTMappings(gk, versions...) + if len(ms) == 0 && !d.cl.Fresh() { + d.Reset() + ms, err = d.RESTMappings(gk, versions...) + } + return +} + +// ResourceSingularizer converts a resource name from plural to +// singular (e.g., from pods to pod). +func (d *DeferredDiscoveryRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + del, err := d.getDelegate() + if err != nil { + return resource, err + } + singular, err = del.ResourceSingularizer(resource) + if err != nil && !d.cl.Fresh() { + d.Reset() + singular, err = d.ResourceSingularizer(resource) + } + return +} + +func (d *DeferredDiscoveryRESTMapper) String() string { + del, err := d.getDelegate() + if err != nil { + return fmt.Sprintf("DeferredDiscoveryRESTMapper{%v}", err) + } + return fmt.Sprintf("DeferredDiscoveryRESTMapper{\n\t%v\n}", del) +} + +// Make sure it satisfies the interface +var _ meta.RESTMapper = &DeferredDiscoveryRESTMapper{} diff --git a/vendor/k8s.io/client-go/discovery/restmapper_test.go b/vendor/k8s.io/client-go/discovery/restmapper_test.go new file mode 100644 index 000000000..6bc16ccbf --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/restmapper_test.go @@ -0,0 +1,353 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery_test + +import ( + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/version" + . "k8s.io/client-go/discovery" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/rest/fake" + + "github.com/emicklei/go-restful-swagger12" + "github.com/go-openapi/spec" + "github.com/stretchr/testify/assert" +) + +func TestRESTMapper(t *testing.T) { + resources := []*APIGroupResources{ + { + Group: metav1.APIGroup{ + Name: "extensions", + Versions: []metav1.GroupVersionForDiscovery{ + {Version: "v1beta"}, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{Version: "v1beta"}, + }, + VersionedResources: map[string][]metav1.APIResource{ + "v1beta": { + {Name: "jobs", Namespaced: true, Kind: "Job"}, + {Name: "pods", Namespaced: true, Kind: "Pod"}, + }, + }, + }, + { + Group: metav1.APIGroup{ + Versions: []metav1.GroupVersionForDiscovery{ + {Version: "v1"}, + {Version: "v2"}, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{Version: "v1"}, + }, + VersionedResources: map[string][]metav1.APIResource{ + "v1": { + {Name: "pods", Namespaced: true, Kind: "Pod"}, + }, + "v2": { + {Name: "pods", Namespaced: true, Kind: "Pod"}, + }, + }, + }, + } + + restMapper := NewRESTMapper(resources, nil) + + kindTCs := []struct { + input schema.GroupVersionResource + want schema.GroupVersionKind + }{ + { + input: schema.GroupVersionResource{ + Resource: "pods", + }, + want: schema.GroupVersionKind{ + Version: "v1", + Kind: "Pod", + }, + }, + { + input: schema.GroupVersionResource{ + Version: "v1", + Resource: "pods", + }, + want: schema.GroupVersionKind{ + Version: "v1", + Kind: "Pod", + }, + }, + { + input: schema.GroupVersionResource{ + Version: "v2", + Resource: "pods", + }, + want: schema.GroupVersionKind{ + Version: "v2", + Kind: "Pod", + }, + }, + { + input: schema.GroupVersionResource{ + Resource: "pods", + }, + want: schema.GroupVersionKind{ + Version: "v1", + Kind: "Pod", + }, + }, + { + input: schema.GroupVersionResource{ + Resource: "jobs", + }, + want: schema.GroupVersionKind{ + Group: "extensions", + Version: "v1beta", + Kind: "Job", + }, + }, + } + + for _, tc := range kindTCs { + got, err := restMapper.KindFor(tc.input) + if err != nil { + t.Errorf("KindFor(%#v) unexpected error: %v", tc.input, err) + continue + } + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("KindFor(%#v) = %#v, want %#v", tc.input, got, tc.want) + } + } + + resourceTCs := []struct { + input schema.GroupVersionResource + want schema.GroupVersionResource + }{ + { + input: schema.GroupVersionResource{ + Resource: "pods", + }, + want: schema.GroupVersionResource{ + Version: "v1", + Resource: "pods", + }, + }, + { + input: schema.GroupVersionResource{ + Version: "v1", + Resource: "pods", + }, + want: schema.GroupVersionResource{ + Version: "v1", + Resource: "pods", + }, + }, + { + input: schema.GroupVersionResource{ + Version: "v2", + Resource: "pods", + }, + want: schema.GroupVersionResource{ + Version: "v2", + Resource: "pods", + }, + }, + { + input: schema.GroupVersionResource{ + Resource: "pods", + }, + want: schema.GroupVersionResource{ + Version: "v1", + Resource: "pods", + }, + }, + { + input: schema.GroupVersionResource{ + Resource: "jobs", + }, + want: schema.GroupVersionResource{ + Group: "extensions", + Version: "v1beta", + Resource: "jobs", + }, + }, + } + + for _, tc := range resourceTCs { + got, err := restMapper.ResourceFor(tc.input) + if err != nil { + t.Errorf("ResourceFor(%#v) unexpected error: %v", tc.input, err) + continue + } + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("ResourceFor(%#v) = %#v, want %#v", tc.input, got, tc.want) + } + } +} + +func TestDeferredDiscoveryRESTMapper_CacheMiss(t *testing.T) { + assert := assert.New(t) + + cdc := fakeCachedDiscoveryInterface{fresh: false} + m := NewDeferredDiscoveryRESTMapper(&cdc, nil) + assert.False(cdc.fresh, "should NOT be fresh after instantiation") + assert.Zero(cdc.invalidateCalls, "should not have called Invalidate()") + + gvk, err := m.KindFor(schema.GroupVersionResource{ + Group: "a", + Version: "v1", + Resource: "foo", + }) + assert.NoError(err) + assert.True(cdc.fresh, "should be fresh after a cache-miss") + assert.Equal(cdc.invalidateCalls, 1, "should have called Invalidate() once") + assert.Equal(gvk.Kind, "Foo") + + gvk, err = m.KindFor(schema.GroupVersionResource{ + Group: "a", + Version: "v1", + Resource: "foo", + }) + assert.NoError(err) + assert.Equal(cdc.invalidateCalls, 1, "should NOT have called Invalidate() again") + + gvk, err = m.KindFor(schema.GroupVersionResource{ + Group: "a", + Version: "v1", + Resource: "bar", + }) + assert.Error(err) + assert.Equal(cdc.invalidateCalls, 1, "should NOT have called Invalidate() again after another cache-miss, but with fresh==true") + + cdc.fresh = false + gvk, err = m.KindFor(schema.GroupVersionResource{ + Group: "a", + Version: "v1", + Resource: "bar", + }) + assert.Error(err) + assert.Equal(cdc.invalidateCalls, 2, "should HAVE called Invalidate() again after another cache-miss, but with fresh==false") +} + +type fakeCachedDiscoveryInterface struct { + invalidateCalls int + fresh bool + enabledA bool +} + +var _ CachedDiscoveryInterface = &fakeCachedDiscoveryInterface{} + +func (c *fakeCachedDiscoveryInterface) Fresh() bool { + return c.fresh +} + +func (c *fakeCachedDiscoveryInterface) Invalidate() { + c.invalidateCalls = c.invalidateCalls + 1 + c.fresh = true + c.enabledA = true +} + +func (c *fakeCachedDiscoveryInterface) RESTClient() restclient.Interface { + return &fake.RESTClient{} +} + +func (c *fakeCachedDiscoveryInterface) ServerGroups() (*metav1.APIGroupList, error) { + if c.enabledA { + return &metav1.APIGroupList{ + Groups: []metav1.APIGroup{ + { + Name: "a", + Versions: []metav1.GroupVersionForDiscovery{ + { + GroupVersion: "a/v1", + Version: "v1", + }, + }, + PreferredVersion: metav1.GroupVersionForDiscovery{ + GroupVersion: "a/v1", + Version: "v1", + }, + }, + }, + }, nil + } + return &metav1.APIGroupList{}, nil +} + +func (c *fakeCachedDiscoveryInterface) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) { + if c.enabledA && groupVersion == "a/v1" { + return &metav1.APIResourceList{ + GroupVersion: "a/v1", + APIResources: []metav1.APIResource{ + { + Name: "foo", + Kind: "Foo", + Namespaced: false, + }, + }, + }, nil + } + + return nil, errors.NewNotFound(schema.GroupResource{}, "") +} + +func (c *fakeCachedDiscoveryInterface) ServerResources() ([]*metav1.APIResourceList, error) { + if c.enabledA { + av1, _ := c.ServerResourcesForGroupVersion("a/v1") + return []*metav1.APIResourceList{av1}, nil + } + return []*metav1.APIResourceList{}, nil +} + +func (c *fakeCachedDiscoveryInterface) ServerPreferredResources() ([]*metav1.APIResourceList, error) { + if c.enabledA { + return []*metav1.APIResourceList{ + { + GroupVersion: "a/v1", + APIResources: []metav1.APIResource{ + { + Name: "foo", + Kind: "Foo", + Verbs: []string{}, + }, + }, + }, + }, nil + } + return nil, nil +} + +func (c *fakeCachedDiscoveryInterface) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) { + return nil, nil +} + +func (c *fakeCachedDiscoveryInterface) ServerVersion() (*version.Info, error) { + return &version.Info{}, nil +} + +func (c *fakeCachedDiscoveryInterface) SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) { + return &swagger.ApiDeclaration{}, nil +} + +func (c *fakeCachedDiscoveryInterface) OpenAPISchema() (*spec.Swagger, error) { + return &spec.Swagger{}, nil +} diff --git a/vendor/k8s.io/client-go/discovery/unstructured.go b/vendor/k8s.io/client-go/discovery/unstructured.go new file mode 100644 index 000000000..ee72d668b --- /dev/null +++ b/vendor/k8s.io/client-go/discovery/unstructured.go @@ -0,0 +1,95 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// UnstructuredObjectTyper provides a runtime.ObjectTyper implmentation for +// runtime.Unstructured object based on discovery information. +type UnstructuredObjectTyper struct { + registered map[schema.GroupVersionKind]bool +} + +// NewUnstructuredObjectTyper returns a runtime.ObjectTyper for +// unstructred objects based on discovery information. +func NewUnstructuredObjectTyper(groupResources []*APIGroupResources) *UnstructuredObjectTyper { + dot := &UnstructuredObjectTyper{registered: make(map[schema.GroupVersionKind]bool)} + for _, group := range groupResources { + for _, discoveryVersion := range group.Group.Versions { + resources, ok := group.VersionedResources[discoveryVersion.Version] + if !ok { + continue + } + + gv := schema.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} + for _, resource := range resources { + dot.registered[gv.WithKind(resource.Kind)] = true + } + } + } + return dot +} + +// ObjectKind returns the group,version,kind of the provided object, or an error +// if the object in not runtime.Unstructured or has no group,version,kind +// information. +func (d *UnstructuredObjectTyper) ObjectKind(obj runtime.Object) (schema.GroupVersionKind, error) { + if _, ok := obj.(runtime.Unstructured); !ok { + return schema.GroupVersionKind{}, fmt.Errorf("type %T is invalid for dynamic object typer", obj) + } + + return obj.GetObjectKind().GroupVersionKind(), nil +} + +// ObjectKinds returns a slice of one element with the group,version,kind of the +// provided object, or an error if the object is not runtime.Unstructured or +// has no group,version,kind information. unversionedType will always be false +// because runtime.Unstructured object should always have group,version,kind +// information set. +func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []schema.GroupVersionKind, unversionedType bool, err error) { + gvk, err := d.ObjectKind(obj) + if err != nil { + return nil, false, err + } + + return []schema.GroupVersionKind{gvk}, false, nil +} + +// Recognizes returns true if the provided group,version,kind was in the +// discovery information. +func (d *UnstructuredObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { + return d.registered[gvk] +} + +// IsUnversioned returns false always because runtime.Unstructured objects +// should always have group,version,kind information set. ok will be true if the +// object's group,version,kind is api.Registry. +func (d *UnstructuredObjectTyper) IsUnversioned(obj runtime.Object) (unversioned bool, ok bool) { + gvk, err := d.ObjectKind(obj) + if err != nil { + return false, false + } + + return false, d.registered[gvk] +} + +var _ runtime.ObjectTyper = &UnstructuredObjectTyper{} diff --git a/vendor/k8s.io/client-go/dynamic/BUILD b/vendor/k8s.io/client-go/dynamic/BUILD new file mode 100644 index 000000000..e0320e266 --- /dev/null +++ b/vendor/k8s.io/client-go/dynamic/BUILD @@ -0,0 +1,55 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "client_test.go", + "dynamic_util_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/rest/watch:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "client.go", + "client_pool.go", + "dynamic_util.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion/queryparams:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/dynamic/client.go b/vendor/k8s.io/client-go/dynamic/client.go new file mode 100644 index 000000000..a0c182094 --- /dev/null +++ b/vendor/k8s.io/client-go/dynamic/client.go @@ -0,0 +1,306 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package dynamic provides a client interface to arbitrary Kubernetes +// APIs that exposes common high level operations and exposes common +// metadata. +package dynamic + +import ( + "encoding/json" + "errors" + "io" + "net/url" + "strings" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/conversion/queryparams" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/util/flowcontrol" +) + +// Client is a Kubernetes client that allows you to access metadata +// and manipulate metadata of a Kubernetes API group. +type Client struct { + cl *restclient.RESTClient + parameterCodec runtime.ParameterCodec +} + +// NewClient returns a new client based on the passed in config. The +// codec is ignored, as the dynamic client uses it's own codec. +func NewClient(conf *restclient.Config) (*Client, error) { + // avoid changing the original config + confCopy := *conf + conf = &confCopy + + contentConfig := ContentConfig() + contentConfig.GroupVersion = conf.GroupVersion + if conf.NegotiatedSerializer != nil { + contentConfig.NegotiatedSerializer = conf.NegotiatedSerializer + } + conf.ContentConfig = contentConfig + + if conf.APIPath == "" { + conf.APIPath = "/api" + } + + if len(conf.UserAgent) == 0 { + conf.UserAgent = restclient.DefaultKubernetesUserAgent() + } + + cl, err := restclient.RESTClientFor(conf) + if err != nil { + return nil, err + } + + return &Client{cl: cl}, nil +} + +// GetRateLimiter returns rate limier. +func (c *Client) GetRateLimiter() flowcontrol.RateLimiter { + return c.cl.GetRateLimiter() +} + +// Resource returns an API interface to the specified resource for this client's +// group and version. If resource is not a namespaced resource, then namespace +// is ignored. The ResourceClient inherits the parameter codec of c. +func (c *Client) Resource(resource *metav1.APIResource, namespace string) *ResourceClient { + return &ResourceClient{ + cl: c.cl, + resource: resource, + ns: namespace, + parameterCodec: c.parameterCodec, + } +} + +// ParameterCodec returns a client with the provided parameter codec. +func (c *Client) ParameterCodec(parameterCodec runtime.ParameterCodec) *Client { + return &Client{ + cl: c.cl, + parameterCodec: parameterCodec, + } +} + +// ResourceClient is an API interface to a specific resource under a +// dynamic client. +type ResourceClient struct { + cl *restclient.RESTClient + resource *metav1.APIResource + ns string + parameterCodec runtime.ParameterCodec +} + +// List returns a list of objects for this resource. +func (rc *ResourceClient) List(opts metav1.ListOptions) (runtime.Object, error) { + parameterEncoder := rc.parameterCodec + if parameterEncoder == nil { + parameterEncoder = defaultParameterEncoder + } + return rc.cl.Get(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + VersionedParams(&opts, parameterEncoder). + Do(). + Get() +} + +// Get gets the resource with the specified name. +func (rc *ResourceClient) Get(name string, opts metav1.GetOptions) (*unstructured.Unstructured, error) { + parameterEncoder := rc.parameterCodec + if parameterEncoder == nil { + parameterEncoder = defaultParameterEncoder + } + result := new(unstructured.Unstructured) + err := rc.cl.Get(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + VersionedParams(&opts, parameterEncoder). + Name(name). + Do(). + Into(result) + return result, err +} + +// Delete deletes the resource with the specified name. +func (rc *ResourceClient) Delete(name string, opts *metav1.DeleteOptions) error { + return rc.cl.Delete(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + Name(name). + Body(opts). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (rc *ResourceClient) DeleteCollection(deleteOptions *metav1.DeleteOptions, listOptions metav1.ListOptions) error { + parameterEncoder := rc.parameterCodec + if parameterEncoder == nil { + parameterEncoder = defaultParameterEncoder + } + return rc.cl.Delete(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + VersionedParams(&listOptions, parameterEncoder). + Body(deleteOptions). + Do(). + Error() +} + +// Create creates the provided resource. +func (rc *ResourceClient) Create(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) { + result := new(unstructured.Unstructured) + err := rc.cl.Post(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + Body(obj). + Do(). + Into(result) + return result, err +} + +// Update updates the provided resource. +func (rc *ResourceClient) Update(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) { + result := new(unstructured.Unstructured) + if len(obj.GetName()) == 0 { + return result, errors.New("object missing name") + } + err := rc.cl.Put(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + Name(obj.GetName()). + Body(obj). + Do(). + Into(result) + return result, err +} + +// Watch returns a watch.Interface that watches the resource. +func (rc *ResourceClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { + parameterEncoder := rc.parameterCodec + if parameterEncoder == nil { + parameterEncoder = defaultParameterEncoder + } + opts.Watch = true + return rc.cl.Get(). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + VersionedParams(&opts, parameterEncoder). + Watch() +} + +func (rc *ResourceClient) Patch(name string, pt types.PatchType, data []byte) (*unstructured.Unstructured, error) { + result := new(unstructured.Unstructured) + err := rc.cl.Patch(pt). + NamespaceIfScoped(rc.ns, rc.resource.Namespaced). + Resource(rc.resource.Name). + Name(name). + Body(data). + Do(). + Into(result) + return result, err +} + +// dynamicCodec is a codec that wraps the standard unstructured codec +// with special handling for Status objects. +type dynamicCodec struct{} + +func (dynamicCodec) Decode(data []byte, gvk *schema.GroupVersionKind, obj runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + obj, gvk, err := unstructured.UnstructuredJSONScheme.Decode(data, gvk, obj) + if err != nil { + return nil, nil, err + } + + if _, ok := obj.(*metav1.Status); !ok && strings.ToLower(gvk.Kind) == "status" { + obj = &metav1.Status{} + err := json.Unmarshal(data, obj) + if err != nil { + return nil, nil, err + } + } + + return obj, gvk, nil +} + +func (dynamicCodec) Encode(obj runtime.Object, w io.Writer) error { + return unstructured.UnstructuredJSONScheme.Encode(obj, w) +} + +// ContentConfig returns a restclient.ContentConfig for dynamic types. +func ContentConfig() restclient.ContentConfig { + var jsonInfo runtime.SerializerInfo + // TODO: scheme.Codecs here should become "pkg/apis/server/scheme" which is the minimal core you need + // to talk to a kubernetes server + for _, info := range scheme.Codecs.SupportedMediaTypes() { + if info.MediaType == runtime.ContentTypeJSON { + jsonInfo = info + break + } + } + + jsonInfo.Serializer = dynamicCodec{} + jsonInfo.PrettySerializer = nil + return restclient.ContentConfig{ + AcceptContentTypes: runtime.ContentTypeJSON, + ContentType: runtime.ContentTypeJSON, + NegotiatedSerializer: serializer.NegotiatedSerializerWrapper(jsonInfo), + } +} + +// paramaterCodec is a codec converts an API object to query +// parameters without trying to convert to the target version. +type parameterCodec struct{} + +func (parameterCodec) EncodeParameters(obj runtime.Object, to schema.GroupVersion) (url.Values, error) { + return queryparams.Convert(obj) +} + +func (parameterCodec) DecodeParameters(parameters url.Values, from schema.GroupVersion, into runtime.Object) error { + return errors.New("DecodeParameters not implemented on dynamic parameterCodec") +} + +var defaultParameterEncoder runtime.ParameterCodec = parameterCodec{} + +type versionedParameterEncoderWithV1Fallback struct{} + +func (versionedParameterEncoderWithV1Fallback) EncodeParameters(obj runtime.Object, to schema.GroupVersion) (url.Values, error) { + ret, err := scheme.ParameterCodec.EncodeParameters(obj, to) + if err != nil && runtime.IsNotRegisteredError(err) { + // fallback to v1 + return scheme.ParameterCodec.EncodeParameters(obj, v1.SchemeGroupVersion) + } + return ret, err +} + +func (versionedParameterEncoderWithV1Fallback) DecodeParameters(parameters url.Values, from schema.GroupVersion, into runtime.Object) error { + return errors.New("DecodeParameters not implemented on versionedParameterEncoderWithV1Fallback") +} + +// VersionedParameterEncoderWithV1Fallback is useful for encoding query +// parameters for thirdparty resources. It tries to convert object to the +// specified version before converting it to query parameters, and falls back to +// converting to v1 if the object is not registered in the specified version. +// For the record, currently API server always treats query parameters sent to a +// thirdparty resource endpoint as v1. +var VersionedParameterEncoderWithV1Fallback runtime.ParameterCodec = versionedParameterEncoderWithV1Fallback{} diff --git a/vendor/k8s.io/client-go/dynamic/client_pool.go b/vendor/k8s.io/client-go/dynamic/client_pool.go new file mode 100644 index 000000000..f4f2596a4 --- /dev/null +++ b/vendor/k8s.io/client-go/dynamic/client_pool.go @@ -0,0 +1,122 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package dynamic + +import ( + "sync" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime/schema" + restclient "k8s.io/client-go/rest" +) + +// ClientPool manages a pool of dynamic clients. +type ClientPool interface { + // ClientForGroupVersionKind returns a client configured for the specified groupVersionResource. + // Resource may be empty. + ClientForGroupVersionResource(resource schema.GroupVersionResource) (*Client, error) + // ClientForGroupVersionKind returns a client configured for the specified groupVersionKind. + // Kind may be empty. + ClientForGroupVersionKind(kind schema.GroupVersionKind) (*Client, error) +} + +// APIPathResolverFunc knows how to convert a groupVersion to its API path. The Kind field is +// optional. +type APIPathResolverFunc func(kind schema.GroupVersionKind) string + +// LegacyAPIPathResolverFunc can resolve paths properly with the legacy API. +func LegacyAPIPathResolverFunc(kind schema.GroupVersionKind) string { + if len(kind.Group) == 0 { + return "/api" + } + return "/apis" +} + +// clientPoolImpl implements ClientPool and caches clients for the resource group versions +// is asked to retrieve. This type is thread safe. +type clientPoolImpl struct { + lock sync.RWMutex + config *restclient.Config + clients map[schema.GroupVersion]*Client + apiPathResolverFunc APIPathResolverFunc + mapper meta.RESTMapper +} + +// NewClientPool returns a ClientPool from the specified config. It reuses clients for the the same +// group version. It is expected this type may be wrapped by specific logic that special cases certain +// resources or groups. +func NewClientPool(config *restclient.Config, mapper meta.RESTMapper, apiPathResolverFunc APIPathResolverFunc) ClientPool { + confCopy := *config + + return &clientPoolImpl{ + config: &confCopy, + clients: map[schema.GroupVersion]*Client{}, + apiPathResolverFunc: apiPathResolverFunc, + mapper: mapper, + } +} + +// Instantiates a new dynamic client pool with the given config. +func NewDynamicClientPool(cfg *restclient.Config) ClientPool { + // restMapper is not needed when using LegacyAPIPathResolverFunc + emptyMapper := meta.MultiRESTMapper{} + return NewClientPool(cfg, emptyMapper, LegacyAPIPathResolverFunc) +} + +// ClientForGroupVersionResource uses the provided RESTMapper to identify the appropriate resource. Resource may +// be empty. If no matching kind is found the underlying client for that group is still returned. +func (c *clientPoolImpl) ClientForGroupVersionResource(resource schema.GroupVersionResource) (*Client, error) { + kinds, err := c.mapper.KindsFor(resource) + if err != nil { + if meta.IsNoMatchError(err) { + return c.ClientForGroupVersionKind(schema.GroupVersionKind{Group: resource.Group, Version: resource.Version}) + } + return nil, err + } + return c.ClientForGroupVersionKind(kinds[0]) +} + +// ClientForGroupVersion returns a client for the specified groupVersion, creates one if none exists. Kind +// in the GroupVersionKind may be empty. +func (c *clientPoolImpl) ClientForGroupVersionKind(kind schema.GroupVersionKind) (*Client, error) { + c.lock.Lock() + defer c.lock.Unlock() + + gv := kind.GroupVersion() + + // do we have a client already configured? + if existingClient, found := c.clients[gv]; found { + return existingClient, nil + } + + // avoid changing the original config + confCopy := *c.config + conf := &confCopy + + // we need to set the api path based on group version, if no group, default to legacy path + conf.APIPath = c.apiPathResolverFunc(kind) + + // we need to make a client + conf.GroupVersion = &gv + + dynamicClient, err := NewClient(conf) + if err != nil { + return nil, err + } + c.clients[gv] = dynamicClient + return dynamicClient, nil +} diff --git a/vendor/k8s.io/client-go/dynamic/client_test.go b/vendor/k8s.io/client-go/dynamic/client_test.go new file mode 100644 index 000000000..67cdcef2e --- /dev/null +++ b/vendor/k8s.io/client-go/dynamic/client_test.go @@ -0,0 +1,566 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package dynamic + +import ( + "bytes" + "fmt" + "io/ioutil" + "net/http" + "net/http/httptest" + "reflect" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/watch" + restclient "k8s.io/client-go/rest" + restclientwatch "k8s.io/client-go/rest/watch" +) + +func getJSON(version, kind, name string) []byte { + return []byte(fmt.Sprintf(`{"apiVersion": %q, "kind": %q, "metadata": {"name": %q}}`, version, kind, name)) +} + +func getListJSON(version, kind string, items ...[]byte) []byte { + json := fmt.Sprintf(`{"apiVersion": %q, "kind": %q, "items": [%s]}`, + version, kind, bytes.Join(items, []byte(","))) + return []byte(json) +} + +func getObject(version, kind, name string) *unstructured.Unstructured { + return &unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": version, + "kind": kind, + "metadata": map[string]interface{}{ + "name": name, + }, + }, + } +} + +func getClientServer(gv *schema.GroupVersion, h func(http.ResponseWriter, *http.Request)) (*Client, *httptest.Server, error) { + srv := httptest.NewServer(http.HandlerFunc(h)) + cl, err := NewClient(&restclient.Config{ + Host: srv.URL, + ContentConfig: restclient.ContentConfig{GroupVersion: gv}, + }) + if err != nil { + srv.Close() + return nil, nil, err + } + return cl, srv, nil +} + +func TestList(t *testing.T) { + tcs := []struct { + name string + namespace string + path string + resp []byte + want *unstructured.UnstructuredList + }{ + { + name: "normal_list", + path: "/api/gtest/vtest/rtest", + resp: getListJSON("vTest", "rTestList", + getJSON("vTest", "rTest", "item1"), + getJSON("vTest", "rTest", "item2")), + want: &unstructured.UnstructuredList{ + Object: map[string]interface{}{ + "apiVersion": "vTest", + "kind": "rTestList", + }, + Items: []unstructured.Unstructured{ + *getObject("vTest", "rTest", "item1"), + *getObject("vTest", "rTest", "item2"), + }, + }, + }, + { + name: "namespaced_list", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest", + resp: getListJSON("vTest", "rTestList", + getJSON("vTest", "rTest", "item1"), + getJSON("vTest", "rTest", "item2")), + want: &unstructured.UnstructuredList{ + Object: map[string]interface{}{ + "apiVersion": "vTest", + "kind": "rTestList", + }, + Items: []unstructured.Unstructured{ + *getObject("vTest", "rTest", "item1"), + *getObject("vTest", "rTest", "item2"), + }, + }, + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "GET" { + t.Errorf("List(%q) got HTTP method %s. wanted GET", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("List(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + w.Header().Set("Content-Type", runtime.ContentTypeJSON) + w.Write(tc.resp) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + got, err := cl.Resource(resource, tc.namespace).List(metav1.ListOptions{}) + if err != nil { + t.Errorf("unexpected error when listing %q: %v", tc.name, err) + continue + } + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("List(%q) want: %v\ngot: %v", tc.name, tc.want, got) + } + } +} + +func TestGet(t *testing.T) { + tcs := []struct { + namespace string + name string + path string + resp []byte + want *unstructured.Unstructured + }{ + { + name: "normal_get", + path: "/api/gtest/vtest/rtest/normal_get", + resp: getJSON("vTest", "rTest", "normal_get"), + want: getObject("vTest", "rTest", "normal_get"), + }, + { + namespace: "nstest", + name: "namespaced_get", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_get", + resp: getJSON("vTest", "rTest", "namespaced_get"), + want: getObject("vTest", "rTest", "namespaced_get"), + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "GET" { + t.Errorf("Get(%q) got HTTP method %s. wanted GET", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("Get(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + w.Header().Set("Content-Type", runtime.ContentTypeJSON) + w.Write(tc.resp) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + got, err := cl.Resource(resource, tc.namespace).Get(tc.name, metav1.GetOptions{}) + if err != nil { + t.Errorf("unexpected error when getting %q: %v", tc.name, err) + continue + } + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("Get(%q) want: %v\ngot: %v", tc.name, tc.want, got) + } + } +} + +func TestDelete(t *testing.T) { + statusOK := &metav1.Status{ + TypeMeta: metav1.TypeMeta{Kind: "Status"}, + Status: metav1.StatusSuccess, + } + tcs := []struct { + namespace string + name string + path string + }{ + { + name: "normal_delete", + path: "/api/gtest/vtest/rtest/normal_delete", + }, + { + namespace: "nstest", + name: "namespaced_delete", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_delete", + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "DELETE" { + t.Errorf("Delete(%q) got HTTP method %s. wanted DELETE", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("Delete(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + w.Header().Set("Content-Type", runtime.ContentTypeJSON) + unstructured.UnstructuredJSONScheme.Encode(statusOK, w) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + err = cl.Resource(resource, tc.namespace).Delete(tc.name, nil) + if err != nil { + t.Errorf("unexpected error when deleting %q: %v", tc.name, err) + continue + } + } +} + +func TestDeleteCollection(t *testing.T) { + statusOK := &metav1.Status{ + TypeMeta: metav1.TypeMeta{Kind: "Status"}, + Status: metav1.StatusSuccess, + } + tcs := []struct { + namespace string + name string + path string + }{ + { + name: "normal_delete_collection", + path: "/api/gtest/vtest/rtest", + }, + { + namespace: "nstest", + name: "namespaced_delete_collection", + path: "/api/gtest/vtest/namespaces/nstest/rtest", + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "DELETE" { + t.Errorf("DeleteCollection(%q) got HTTP method %s. wanted DELETE", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("DeleteCollection(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + w.Header().Set("Content-Type", runtime.ContentTypeJSON) + unstructured.UnstructuredJSONScheme.Encode(statusOK, w) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + err = cl.Resource(resource, tc.namespace).DeleteCollection(nil, metav1.ListOptions{}) + if err != nil { + t.Errorf("unexpected error when deleting collection %q: %v", tc.name, err) + continue + } + } +} + +func TestCreate(t *testing.T) { + tcs := []struct { + name string + namespace string + obj *unstructured.Unstructured + path string + }{ + { + name: "normal_create", + path: "/api/gtest/vtest/rtest", + obj: getObject("vTest", "rTest", "normal_create"), + }, + { + name: "namespaced_create", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest", + obj: getObject("vTest", "rTest", "namespaced_create"), + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "POST" { + t.Errorf("Create(%q) got HTTP method %s. wanted POST", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("Create(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + w.Header().Set("Content-Type", runtime.ContentTypeJSON) + data, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Create(%q) unexpected error reading body: %v", tc.name, err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Write(data) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + got, err := cl.Resource(resource, tc.namespace).Create(tc.obj) + if err != nil { + t.Errorf("unexpected error when creating %q: %v", tc.name, err) + continue + } + + if !reflect.DeepEqual(got, tc.obj) { + t.Errorf("Create(%q) want: %v\ngot: %v", tc.name, tc.obj, got) + } + } +} + +func TestUpdate(t *testing.T) { + tcs := []struct { + name string + namespace string + obj *unstructured.Unstructured + path string + }{ + { + name: "normal_update", + path: "/api/gtest/vtest/rtest/normal_update", + obj: getObject("vTest", "rTest", "normal_update"), + }, + { + name: "namespaced_update", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_update", + obj: getObject("vTest", "rTest", "namespaced_update"), + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "PUT" { + t.Errorf("Update(%q) got HTTP method %s. wanted PUT", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("Update(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + w.Header().Set("Content-Type", runtime.ContentTypeJSON) + data, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Update(%q) unexpected error reading body: %v", tc.name, err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Write(data) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + got, err := cl.Resource(resource, tc.namespace).Update(tc.obj) + if err != nil { + t.Errorf("unexpected error when updating %q: %v", tc.name, err) + continue + } + + if !reflect.DeepEqual(got, tc.obj) { + t.Errorf("Update(%q) want: %v\ngot: %v", tc.name, tc.obj, got) + } + } +} + +func TestWatch(t *testing.T) { + tcs := []struct { + name string + namespace string + events []watch.Event + path string + query string + }{ + { + name: "normal_watch", + path: "/api/gtest/vtest/rtest", + query: "watch=true", + events: []watch.Event{ + {Type: watch.Added, Object: getObject("vTest", "rTest", "normal_watch")}, + {Type: watch.Modified, Object: getObject("vTest", "rTest", "normal_watch")}, + {Type: watch.Deleted, Object: getObject("vTest", "rTest", "normal_watch")}, + }, + }, + { + name: "namespaced_watch", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest", + query: "watch=true", + events: []watch.Event{ + {Type: watch.Added, Object: getObject("vTest", "rTest", "namespaced_watch")}, + {Type: watch.Modified, Object: getObject("vTest", "rTest", "namespaced_watch")}, + {Type: watch.Deleted, Object: getObject("vTest", "rTest", "namespaced_watch")}, + }, + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "GET" { + t.Errorf("Watch(%q) got HTTP method %s. wanted GET", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("Watch(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + if r.URL.RawQuery != tc.query { + t.Errorf("Watch(%q) got query %s. wanted %s", tc.name, r.URL.RawQuery, tc.query) + } + + enc := restclientwatch.NewEncoder(streaming.NewEncoder(w, dynamicCodec{}), dynamicCodec{}) + for _, e := range tc.events { + enc.Encode(&e) + } + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + watcher, err := cl.Resource(resource, tc.namespace).Watch(metav1.ListOptions{}) + if err != nil { + t.Errorf("unexpected error when watching %q: %v", tc.name, err) + continue + } + + for _, want := range tc.events { + got := <-watcher.ResultChan() + if !reflect.DeepEqual(got, want) { + t.Errorf("Watch(%q) want: %v\ngot: %v", tc.name, want, got) + } + } + } +} + +func TestPatch(t *testing.T) { + tcs := []struct { + name string + namespace string + patch []byte + want *unstructured.Unstructured + path string + }{ + { + name: "normal_patch", + path: "/api/gtest/vtest/rtest/normal_patch", + patch: getJSON("vTest", "rTest", "normal_patch"), + want: getObject("vTest", "rTest", "normal_patch"), + }, + { + name: "namespaced_patch", + namespace: "nstest", + path: "/api/gtest/vtest/namespaces/nstest/rtest/namespaced_patch", + patch: getJSON("vTest", "rTest", "namespaced_patch"), + want: getObject("vTest", "rTest", "namespaced_patch"), + }, + } + for _, tc := range tcs { + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} + resource := &metav1.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} + cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { + if r.Method != "PATCH" { + t.Errorf("Patch(%q) got HTTP method %s. wanted PATCH", tc.name, r.Method) + } + + if r.URL.Path != tc.path { + t.Errorf("Patch(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path) + } + + content := r.Header.Get("Content-Type") + if content != string(types.StrategicMergePatchType) { + t.Errorf("Patch(%q) got Content-Type %s. wanted %s", tc.name, content, types.StrategicMergePatchType) + } + + data, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Patch(%q) unexpected error reading body: %v", tc.name, err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + w.Write(data) + }) + if err != nil { + t.Errorf("unexpected error when creating client: %v", err) + continue + } + defer srv.Close() + + got, err := cl.Resource(resource, tc.namespace).Patch(tc.name, types.StrategicMergePatchType, tc.patch) + if err != nil { + t.Errorf("unexpected error when patching %q: %v", tc.name, err) + continue + } + + if !reflect.DeepEqual(got, tc.want) { + t.Errorf("Patch(%q) want: %v\ngot: %v", tc.name, tc.want, got) + } + } +} + +func TestVersionedParameterEncoderWithV1Fallback(t *testing.T) { + enc := VersionedParameterEncoderWithV1Fallback + _, err := enc.EncodeParameters(&metav1.ListOptions{}, schema.GroupVersion{Group: "foo.bar.com", Version: "v4"}) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } +} diff --git a/vendor/k8s.io/client-go/dynamic/dynamic_util.go b/vendor/k8s.io/client-go/dynamic/dynamic_util.go new file mode 100644 index 000000000..c834dbb0d --- /dev/null +++ b/vendor/k8s.io/client-go/dynamic/dynamic_util.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package dynamic + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// VersionInterfaces provides an object converter and metadata +// accessor appropriate for use with unstructured objects. +func VersionInterfaces(schema.GroupVersion) (*meta.VersionInterfaces, error) { + return &meta.VersionInterfaces{ + ObjectConvertor: &unstructured.UnstructuredObjectConverter{}, + MetadataAccessor: meta.NewAccessor(), + }, nil +} + +// NewDiscoveryRESTMapper returns a RESTMapper based on discovery information. +func NewDiscoveryRESTMapper(resources []*metav1.APIResourceList, versionFunc meta.VersionInterfacesFunc) (*meta.DefaultRESTMapper, error) { + rm := meta.NewDefaultRESTMapper(nil, versionFunc) + for _, resourceList := range resources { + gv, err := schema.ParseGroupVersion(resourceList.GroupVersion) + if err != nil { + return nil, err + } + + for _, resource := range resourceList.APIResources { + gvk := gv.WithKind(resource.Kind) + scope := meta.RESTScopeRoot + if resource.Namespaced { + scope = meta.RESTScopeNamespace + } + rm.Add(gvk, scope) + } + } + return rm, nil +} + +// ObjectTyper provides an ObjectTyper implementation for +// unstructured.Unstructured object based on discovery information. +type ObjectTyper struct { + registered map[schema.GroupVersionKind]bool +} + +// NewObjectTyper constructs an ObjectTyper from discovery information. +func NewObjectTyper(resources []*metav1.APIResourceList) (runtime.ObjectTyper, error) { + ot := &ObjectTyper{registered: make(map[schema.GroupVersionKind]bool)} + for _, resourceList := range resources { + gv, err := schema.ParseGroupVersion(resourceList.GroupVersion) + if err != nil { + return nil, err + } + + for _, resource := range resourceList.APIResources { + ot.registered[gv.WithKind(resource.Kind)] = true + } + } + return ot, nil +} + +// ObjectKinds returns a slice of one element with the +// group,version,kind of the provided object, or an error if the +// object is not *unstructured.Unstructured or has no group,version,kind +// information. +func (ot *ObjectTyper) ObjectKinds(obj runtime.Object) ([]schema.GroupVersionKind, bool, error) { + if _, ok := obj.(*unstructured.Unstructured); !ok { + return nil, false, fmt.Errorf("type %T is invalid for dynamic object typer", obj) + } + return []schema.GroupVersionKind{obj.GetObjectKind().GroupVersionKind()}, false, nil +} + +// Recognizes returns true if the provided group,version,kind was in +// the discovery information. +func (ot *ObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { + return ot.registered[gvk] +} diff --git a/vendor/k8s.io/client-go/dynamic/dynamic_util_test.go b/vendor/k8s.io/client-go/dynamic/dynamic_util_test.go new file mode 100644 index 000000000..cdc68e018 --- /dev/null +++ b/vendor/k8s.io/client-go/dynamic/dynamic_util_test.go @@ -0,0 +1,79 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package dynamic + +import ( + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestDiscoveryRESTMapper(t *testing.T) { + resources := []*metav1.APIResourceList{ + { + GroupVersion: "test/beta1", + APIResources: []metav1.APIResource{ + { + Name: "test_kinds", + Namespaced: true, + Kind: "test_kind", + }, + }, + }, + } + + gvk := schema.GroupVersionKind{ + Group: "test", + Version: "beta1", + Kind: "test_kind", + } + + mapper, err := NewDiscoveryRESTMapper(resources, VersionInterfaces) + if err != nil { + t.Fatalf("unexpected error creating mapper: %s", err) + } + + for _, res := range []schema.GroupVersionResource{ + { + Group: "test", + Version: "beta1", + Resource: "test_kinds", + }, + { + Version: "beta1", + Resource: "test_kinds", + }, + { + Group: "test", + Resource: "test_kinds", + }, + { + Resource: "test_kinds", + }, + } { + got, err := mapper.KindFor(res) + if err != nil { + t.Errorf("KindFor(%#v) unexpected error: %s", res, err) + continue + } + + if got != gvk { + t.Errorf("KindFor(%#v) = %#v; want %#v", res, got, gvk) + } + } +} diff --git a/vendor/k8s.io/client-go/examples/README.md b/vendor/k8s.io/client-go/examples/README.md new file mode 100644 index 000000000..2912bb885 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/README.md @@ -0,0 +1,31 @@ +# client-go Examples + +This directory contains examples that cover various use cases and functionality +for client-go. + +### Configuration + +- [**Authenticate in cluster**](./in-cluster-client-configuration): Configure a + client while running inside the Kubernetes cluster. +- [**Authenticate out of cluster**](./out-of-cluster-client-configuration): + Configure a client to access a Kubernetes cluster from outside. + +### Basics + +- [**Managing resources with API**](./create-update-delete-deployment): Create, + get, update, delete a Deployment resource. + +### Advanced Concepts + +- [**Work queues**](./workqueue): Create a hotloop-free controller with the + rate-limited workqueue and the [informer framework][informer]. +- [**Third-party resources (deprecated)**](./third-party-resources-deprecated): + Register a third-party resource type with the API, create/update/query this third-party + type, and write a controller that drives the cluster state based on the changes to + the third-party resources. +- [**Custom Resource Definition (successor of TPR)**](https://git.k8s.io/apiextensions-apiserver/examples/client-go): + Register a custom resource type with the API, create/update/query this custom + type, and write a controller that drives the cluster state based on the changes to + the custom resources. + +[informer]: https://godoc.org/k8s.io/client-go/tools/cache#NewInformer diff --git a/vendor/k8s.io/client-go/examples/create-update-delete-deployment/BUILD b/vendor/k8s.io/client-go/examples/create-update-delete-deployment/BUILD new file mode 100644 index 000000000..8179d0cf1 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/create-update-delete-deployment/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_binary", + "go_library", +) + +go_binary( + name = "create-update-delete-deployment", + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["main.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/create-update-delete-deployment/README.md b/vendor/k8s.io/client-go/examples/create-update-delete-deployment/README.md new file mode 100644 index 000000000..6b7ed4eac --- /dev/null +++ b/vendor/k8s.io/client-go/examples/create-update-delete-deployment/README.md @@ -0,0 +1,81 @@ +# Create, Update & Delete Deployment + +This example program demonstrates the fundamental operations for managing on +[Deployment][1] resources, such as `Create`, `List`, `Update` and `Delete`. + +You can adopt the source code from this example to write programs that manage +other types of resources through the Kubernetes API. + +## Running this example + +Make sure you have a Kubernetes cluster and `kubectl` is configured: + + kubectl get nodes + +Compile this example on your workstation: + +``` +cd create-update-delete-deployment +go build -o ./app +``` + +Now, run this application on your workstation with your local kubeconfig file: + +``` +./app -kubeconfig=$HOME/.kube/config +``` + +Running this command will execute the following operations on your cluster: + +1. **Create Deployment:** This will create a 2 replica Deployment. Verify with + `kubectl get pods`. +2. **Update Deployment:** This will update the Deployment resource created in + previous step to set the replica count to 1 and add annotations. You are + encouraged to inspect the retry loop that handles conflicts. Verify the new + replica count and `foo=bar` annotation with `kubectl describe deployment + demo`. +3. **List Deployments:** This will retrieve Deployments in the `default` + namespace and print their names and replica counts. +4. **Delete Deployment:** This will delete the Deployment object and its + dependent ReplicaSet resource. Verify with `kubectl get deployments`. + +Each step is separated by an interactive prompt. You must hit the +Return key to proceeed to the next step. You can use these prompts as +a break to take time to run `kubectl` and inspect the result of the operations +executed. + +You should see an output like the following: + +``` +Creating deployment... +Created deployment "demo-deployment". +-> Press Return key to continue. + +Updating deployment... +Updated deployment... +-> Press Return key to continue. + +Listing deployments in namespace "default": + * demo-deployment (1 replicas) +-> Press Return key to continue. + +Deleting deployment... +Deleted deployment. +``` + +## Cleanup + +Successfully running this program will clean the created artifacts. If you +terminate the program without completing, you can clean up the created +deployment with: + + kubectl delete deploy demo-deployment + +## Troubleshooting + +If you are getting the following error, make sure Kubernetes version of your +cluster is v1.6 or above in `kubectl version`: + + panic: the server could not find the requested resource + +[1]: https://kubernetes.io/docs/user-guide/deployments/ diff --git a/vendor/k8s.io/client-go/examples/create-update-delete-deployment/main.go b/vendor/k8s.io/client-go/examples/create-update-delete-deployment/main.go new file mode 100644 index 000000000..2913510f2 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/create-update-delete-deployment/main.go @@ -0,0 +1,165 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Note: the example only works with the code within the same release/branch. +package main + +import ( + "bufio" + "flag" + "fmt" + "os" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + apiv1 "k8s.io/client-go/pkg/api/v1" + appsv1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + "k8s.io/client-go/tools/clientcmd" + // Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters). + // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" +) + +func main() { + kubeconfig := flag.String("kubeconfig", "", "absolute path to the kubeconfig file") + flag.Parse() + if *kubeconfig == "" { + panic("-kubeconfig not specified") + } + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) + if err != nil { + panic(err) + } + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err) + } + + deploymentsClient := clientset.AppsV1beta1().Deployments(apiv1.NamespaceDefault) + + deployment := &appsv1beta1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: "demo-deployment", + }, + Spec: appsv1beta1.DeploymentSpec{ + Replicas: int32Ptr(2), + Template: apiv1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{ + "app": "demo", + }, + }, + Spec: apiv1.PodSpec{ + Containers: []apiv1.Container{ + { + Name: "web", + Image: "nginx:1.13", + Ports: []apiv1.ContainerPort{ + { + Name: "http", + Protocol: apiv1.ProtocolTCP, + ContainerPort: 80, + }, + }, + }, + }, + }, + }, + }, + } + + // Create Deployment + fmt.Println("Creating deployment...") + result, err := deploymentsClient.Create(deployment) + if err != nil { + panic(err) + } + fmt.Printf("Created deployment %q.\n", result.GetObjectMeta().GetName()) + + // Update Deployment + prompt() + fmt.Println("Updating deployment...") + // You have two options to Update() this Deployment: + // + // 1. Modify the "deployment" variable and call: Update(deployment). + // This works like the "kubectl replace" command and it overwrites/loses changes + // made by other clients between you Create() and Update() the object. + // 2. Modify the "result" returned by Create()/Get() and retry Update(result) until + // you no longer get a conflict error. This way, you can preserve changes made + // by other clients between Create() and Update(). This is implemented below: + + for { + result.Spec.Replicas = int32Ptr(1) // reduce replica count + result.Spec.Template.Annotations = map[string]string{ // add annotations + "foo": "bar", + } + + if _, err := deploymentsClient.Update(result); errors.IsConflict(err) { + // Deployment is modified in the meanwhile, query the latest version + // and modify the retrieved object. + fmt.Println("encountered conflict, retrying") + result, err = deploymentsClient.Get("demo-deployment", metav1.GetOptions{}) + if err != nil { + panic(fmt.Errorf("Get failed: %+v", err)) + } + } else if err != nil { + panic(err) + } else { + break + } + + // TODO: You should sleep here with an exponential backoff to avoid + // exhausting the apiserver, and add a limit/timeout on the retries to + // avoid getting stuck in this loop indefintiely. + } + fmt.Println("Updated deployment...") + + // List Deployments + prompt() + fmt.Printf("Listing deployments in namespace %q:\n", apiv1.NamespaceDefault) + list, err := deploymentsClient.List(metav1.ListOptions{}) + if err != nil { + panic(err) + } + for _, d := range list.Items { + fmt.Printf(" * %s (%d replicas)\n", d.Name, *d.Spec.Replicas) + } + + // Delete Deployment + prompt() + fmt.Println("Deleting deployment...") + deletePolicy := metav1.DeletePropagationForeground + if err := deploymentsClient.Delete("demo-deployment", &metav1.DeleteOptions{ + PropagationPolicy: &deletePolicy, + }); err != nil { + panic(err) + } + fmt.Println("Deleted deployment.") +} + +func prompt() { + fmt.Printf("-> Press Return key to continue.") + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + break + } + if err := scanner.Err(); err != nil { + panic(err) + } + fmt.Println() +} + +func int32Ptr(i int32) *int32 { return &i } diff --git a/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/BUILD b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/BUILD new file mode 100644 index 000000000..c6a83a872 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_binary", + "go_library", +) + +go_binary( + name = "in-cluster-client-configuration", + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["main.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/Dockerfile b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/Dockerfile new file mode 100644 index 000000000..d0cc281a7 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/Dockerfile @@ -0,0 +1,17 @@ +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM debian +COPY ./app /app +ENTRYPOINT /app diff --git a/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/README.md b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/README.md new file mode 100644 index 000000000..811b750c9 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/README.md @@ -0,0 +1,50 @@ +# Authenticating inside the cluster + +This example shows you how to configure a client with client-go to authenticate +to the Kubernetes API from an application running inside the Kubernetes cluster. + +client-go uses the [Service Account token][sa] mounted inside the Pod at the +`/var/run/secrets/kubernetes.io/serviceaccount` path when the +`rest.InClusterConfig()` is used. + +## Running this example + +First compile the application for Linux: + + cd in-cluster-client-configuration + GOOS=linux go build -o ./app . + +Then package it to a docker image using the provided Dockerfile to run it on +Kubernetes. + +If you are running a [Minikube][mk] cluster, you can build this image directly +on the Docker engine of the Minikube node without pushing it to a registry. To +build the image on Minikube: + + eval $(minikube docker-env) + docker build -t in-cluster . + +If you are not using Minikube, you should build this image and push it to a registry +that your Kubernetes cluster can pull from. + +Then, run the image in a Pod with a single instance Deployment: + + $ kubectl run --rm -i demo --image=in-cluster --image-pull-policy=Never + + There are 4 pods in the cluster + There are 4 pods in the cluster + There are 4 pods in the cluster + ... + +The example now runs on Kubernetes API and successfully queries the number of +pods in the cluster every 10 seconds. + +### Clean up + +To stop this example and clean up the pod, press Ctrl+C on +the `kubectl run` command and then run: + + kubectl delete deployment demo + +[sa]: https://kubernetes.io/docs/admin/authentication/#service-account-tokens +[mk]: https://kubernetes.io/docs/getting-started-guides/minikube/ diff --git a/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/main.go b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/main.go new file mode 100644 index 000000000..f71506817 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/in-cluster-client-configuration/main.go @@ -0,0 +1,64 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Note: the example only works with the code within the same release/branch. +package main + +import ( + "fmt" + "time" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/rest" +) + +func main() { + // creates the in-cluster config + config, err := rest.InClusterConfig() + if err != nil { + panic(err.Error()) + } + // creates the clientset + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err.Error()) + } + for { + pods, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{}) + if err != nil { + panic(err.Error()) + } + fmt.Printf("There are %d pods in the cluster\n", len(pods.Items)) + + // Examples for error handling: + // - Use helper functions like e.g. errors.IsNotFound() + // - And/or cast to StatusError and use its properties like e.g. ErrStatus.Message + _, err = clientset.CoreV1().Pods("default").Get("example-xxxxx", metav1.GetOptions{}) + if errors.IsNotFound(err) { + fmt.Printf("Pod not found\n") + } else if statusError, isStatus := err.(*errors.StatusError); isStatus { + fmt.Printf("Error getting pod %v\n", statusError.ErrStatus.Message) + } else if err != nil { + panic(err.Error()) + } else { + fmt.Printf("Found pod\n") + } + + time.Sleep(10 * time.Second) + } +} diff --git a/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/BUILD b/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/BUILD new file mode 100644 index 000000000..b38ada6f5 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_binary", + "go_library", +) + +go_binary( + name = "out-of-cluster-client-configuration", + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["main.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/README.md b/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/README.md new file mode 100644 index 000000000..80da4a168 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/README.md @@ -0,0 +1,35 @@ +# Authenticating outside the cluster + +This example shows you how to configure a client with client-go to authenticate +to the Kubernetes API from an application running outside the Kubernetes +cluster. + +You can use your kubeconfig file that contains the context information +of your cluster to initialize a client. The kubeconfig file is also used +by the `kubectl` command to authenticate to the clusters. + +## Running this example + +Make sure your `kubectl` is configured and pointed to a cluster. Run +`kubectl get nodes` to confirm. + +Run this application with: + + cd out-of-cluster-client-configuration + go build -o app . + ./app + +Running this application will use the kubeconfig file and then authenticate to the +cluster, and print the number of nodes in the cluster every 10 seconds: + + $ ./app + There are 3 pods in the cluster + There are 3 pods in the cluster + There are 3 pods in the cluster + ... + +Press Ctrl+C to quit this application. + +> **Note:** You can use the `-kubeconfig` option to use a different config file. By default +this program picks up the default file used by kubectl (when `KUBECONFIG` +environment variable is not set). diff --git a/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/main.go b/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/main.go new file mode 100644 index 000000000..252307b18 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/out-of-cluster-client-configuration/main.go @@ -0,0 +1,85 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Note: the example only works with the code within the same release/branch. +package main + +import ( + "flag" + "fmt" + "os" + "path/filepath" + "time" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/clientcmd" + // Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters). + // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" +) + +func main() { + var kubeconfig *string + if home := homeDir(); home != "" { + kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") + } else { + kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file") + } + flag.Parse() + + // use the current context in kubeconfig + config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) + if err != nil { + panic(err.Error()) + } + + // create the clientset + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err.Error()) + } + for { + pods, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{}) + if err != nil { + panic(err.Error()) + } + fmt.Printf("There are %d pods in the cluster\n", len(pods.Items)) + + // Examples for error handling: + // - Use helper functions like e.g. errors.IsNotFound() + // - And/or cast to StatusError and use its properties like e.g. ErrStatus.Message + _, err = clientset.CoreV1().Pods("default").Get("example-xxxxx", metav1.GetOptions{}) + if errors.IsNotFound(err) { + fmt.Printf("Pod not found\n") + } else if statusError, isStatus := err.(*errors.StatusError); isStatus { + fmt.Printf("Error getting pod %v\n", statusError.ErrStatus.Message) + } else if err != nil { + panic(err.Error()) + } else { + fmt.Printf("Found pod\n") + } + + time.Sleep(10 * time.Second) + } +} + +func homeDir() string { + if h := os.Getenv("HOME"); h != "" { + return h + } + return os.Getenv("USERPROFILE") // windows +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/BUILD b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/BUILD new file mode 100644 index 000000000..e031404e8 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_binary", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["main.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1:go_default_library", + "//vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client:go_default_library", + "//vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + ], +) + +go_binary( + name = "third-party-resources-deprecated", + library = ":go_default_library", + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/README.md b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/README.md new file mode 100644 index 000000000..a461e63d7 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/README.md @@ -0,0 +1,46 @@ +# Third Party Resources Example – Deprecated + +**Note:** ThirdPartyResources are deprecated since 1.7. The successor is CustomResourceDefinition in the apiextensions.k8s.io API group. + +This particular example demonstrates how to perform basic operations such as: + +* How to register a new ThirdPartyResource (custom Resource type) +* How to create/get/list instances of your new Resource type (update/delete/etc work as well but are not demonstrated) +* How to setup a controller on Resource handling create/update/delete events + +## Running + +``` +# assumes you have a working kubeconfig, not required if operating in-cluster +go run *.go -kubeconfig=$HOME/.kube/config +``` + +## Use Cases + +ThirdPartyResources can be used to implement custom Resource types for your Kubernetes cluster. +These act like most other Resources in Kubernetes, and may be `kubectl apply`'d, etc. + +Some example use cases: + +* Provisioning/Management of external datastores/databases (eg. CloudSQL/RDS instances) +* Higher level abstractions around Kubernetes primitives (eg. a single Resource to define an etcd cluster, backed by a Service and a ReplicationController) + +## Defining types + +Each instance of your ThirdPartyResource has an attached Spec, which should be defined via a `struct{}` to provide data format validation. +In practice, this Spec is arbitrary key-value data that specifies the configuration/behavior of your Resource. + +For example, if you were implementing a ThirdPartyResource for a Database, you might provide a DatabaseSpec like the following: + +``` go +type DatabaseSpec struct { + Databases []string `json:"databases"` + Users []User `json:"users"` + Version string `json:"version"` +} + +type User struct { + Name string `json:"name"` + Password string `json:"password"` +} +``` \ No newline at end of file diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/BUILD b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/BUILD new file mode 100644 index 000000000..f00e0752f --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["types_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "register.go", + "types.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/register.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/register.go new file mode 100644 index 000000000..201310fef --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/register.go @@ -0,0 +1,49 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package. +const GroupName = "tpr.client-go.k8s.io" + +// SchemeGroupVersion is the group version used to register these objects. +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group-qualified GroupResource. +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// addKnownTypes adds the set of types defined in this package to the supplied scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Example{}, + &ExampleList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types.go new file mode 100644 index 000000000..32fea5a53 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types.go @@ -0,0 +1,53 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ExampleResourcePlural = "examples" + +type Example struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata"` + Spec ExampleSpec `json:"spec"` + Status ExampleStatus `json:"status,omitempty"` +} + +type ExampleSpec struct { + Foo string `json:"foo"` + Bar bool `json:"bar"` +} + +type ExampleStatus struct { + State ExampleState `json:"state,omitempty"` + Message string `json:"message,omitempty"` +} + +type ExampleState string + +const ( + ExampleStateCreated ExampleState = "Created" + ExampleStateProcessed ExampleState = "Processed" +) + +type ExampleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata"` + Items []Example `json:"items"` +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types_test.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types_test.go new file mode 100644 index 000000000..38f612d89 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1/types_test.go @@ -0,0 +1,63 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "math/rand" + "testing" + + "github.com/google/gofuzz" + + apitesting "k8s.io/apimachinery/pkg/api/testing" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" +) + +var _ runtime.Object = &Example{} +var _ metav1.ObjectMetaAccessor = &Example{} + +var _ runtime.Object = &ExampleList{} +var _ metav1.ListMetaAccessor = &ExampleList{} + +func exampleFuzzerFuncs(t apitesting.TestingCommon) []interface{} { + return []interface{}{ + func(obj *ExampleList, c fuzz.Continue) { + c.FuzzNoCustom(obj) + obj.Items = make([]Example, c.Intn(10)) + for i := range obj.Items { + c.Fuzz(&obj.Items[i]) + } + }, + } +} + +// TestRoundTrip tests that the third-party kinds can be marshaled and unmarshaled correctly to/from JSON +// without the loss of information. Moreover, deep copy is tested. +func TestRoundTrip(t *testing.T) { + scheme := runtime.NewScheme() + codecs := serializer.NewCodecFactory(scheme) + + AddToScheme(scheme) + + seed := rand.Int63() + fuzzerFuncs := apitesting.MergeFuzzerFuncs(t, apitesting.GenericFuzzerFuncs(t, codecs), exampleFuzzerFuncs(t)) + fuzzer := apitesting.FuzzerFor(fuzzerFuncs, rand.NewSource(seed)) + + apitesting.RoundTripSpecificKindWithoutProtobuf(t, SchemeGroupVersion.WithKind("Example"), scheme, codecs, fuzzer, nil) + apitesting.RoundTripSpecificKindWithoutProtobuf(t, SchemeGroupVersion.WithKind("ExampleList"), scheme, codecs, fuzzer, nil) +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/BUILD b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/BUILD new file mode 100644 index 000000000..81d93954f --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "client.go", + "tpr.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/client.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/client.go new file mode 100644 index 000000000..9c777d1a4 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/client.go @@ -0,0 +1,45 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package client + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/rest" + + tprv1 "k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1" +) + +func NewClient(cfg *rest.Config) (*rest.RESTClient, *runtime.Scheme, error) { + scheme := runtime.NewScheme() + if err := tprv1.AddToScheme(scheme); err != nil { + return nil, nil, err + } + + config := *cfg + config.GroupVersion = &tprv1.SchemeGroupVersion + config.APIPath = "/apis" + config.ContentType = runtime.ContentTypeJSON + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: serializer.NewCodecFactory(scheme)} + + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, nil, err + } + + return client, scheme, nil +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/tpr.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/tpr.go new file mode 100644 index 000000000..9f69e1f3d --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/client/tpr.go @@ -0,0 +1,76 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package client + +import ( + "time" + + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/wait" + tprv1 "k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1" + "k8s.io/client-go/kubernetes" + apiv1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/rest" + // Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters). + // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" +) + +func CreateTPR(clientset kubernetes.Interface) error { + tpr := &v1beta1.ThirdPartyResource{ + ObjectMeta: metav1.ObjectMeta{ + Name: "example." + tprv1.GroupName, + }, + Versions: []v1beta1.APIVersion{ + {Name: tprv1.SchemeGroupVersion.Version}, + }, + Description: "An Example ThirdPartyResource", + } + _, err := clientset.ExtensionsV1beta1().ThirdPartyResources().Create(tpr) + return err +} + +func WaitForExampleResource(exampleClient *rest.RESTClient) error { + return wait.Poll(100*time.Millisecond, 60*time.Second, func() (bool, error) { + _, err := exampleClient.Get().Namespace(apiv1.NamespaceDefault).Resource(tprv1.ExampleResourcePlural).DoRaw() + if err == nil { + return true, nil + } + if apierrors.IsNotFound(err) { + return false, nil + } + return false, err + }) +} + +func WaitForExampleInstanceProcessed(exampleClient *rest.RESTClient, name string) error { + return wait.Poll(100*time.Millisecond, 10*time.Second, func() (bool, error) { + var example tprv1.Example + err := exampleClient.Get(). + Resource(tprv1.ExampleResourcePlural). + Namespace(apiv1.NamespaceDefault). + Name(name). + Do().Into(&example) + + if err == nil && example.Status.State == tprv1.ExampleStateProcessed { + return true, nil + } + + return false, err + }) +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/BUILD b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/BUILD new file mode 100644 index 000000000..40a14ee33 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["controller.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/controller.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/controller.go new file mode 100644 index 000000000..15355296a --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/controller/controller.go @@ -0,0 +1,126 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package controller + +import ( + "context" + "fmt" + + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/runtime" + apiv1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/cache" + + tprv1 "k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1" +) + +// Watcher is an example of watching on resource create/update/delete events +type ExampleController struct { + ExampleClient *rest.RESTClient + ExampleScheme *runtime.Scheme +} + +// Run starts an Example resource controller +func (c *ExampleController) Run(ctx context.Context) error { + fmt.Print("Watch Example objects\n") + + // Watch Example objects + _, err := c.watchExamples(ctx) + if err != nil { + fmt.Printf("Failed to register watch for Example resource: %v\n", err) + return err + } + + <-ctx.Done() + return ctx.Err() +} + +func (c *ExampleController) watchExamples(ctx context.Context) (cache.Controller, error) { + source := cache.NewListWatchFromClient( + c.ExampleClient, + tprv1.ExampleResourcePlural, + apiv1.NamespaceAll, + fields.Everything()) + + _, controller := cache.NewInformer( + source, + + // The object type. + &tprv1.Example{}, + + // resyncPeriod + // Every resyncPeriod, all resources in the cache will retrigger events. + // Set to 0 to disable the resync. + 0, + + // Your custom resource event handlers. + cache.ResourceEventHandlerFuncs{ + AddFunc: c.onAdd, + UpdateFunc: c.onUpdate, + DeleteFunc: c.onDelete, + }) + + go controller.Run(ctx.Done()) + return controller, nil +} + +func (c *ExampleController) onAdd(obj interface{}) { + example := obj.(*tprv1.Example) + fmt.Printf("[CONTROLLER] OnAdd %s\n", example.ObjectMeta.SelfLink) + + // NEVER modify objects from the store. It's a read-only, local cache. + // You can use exampleScheme.Copy() to make a deep copy of original object and modify this copy + // Or create a copy manually for better performance + copyObj, err := c.ExampleScheme.Copy(example) + if err != nil { + fmt.Printf("ERROR creating a deep copy of example object: %v\n", err) + return + } + + exampleCopy := copyObj.(*tprv1.Example) + exampleCopy.Status = tprv1.ExampleStatus{ + State: tprv1.ExampleStateProcessed, + Message: "Successfully processed by controller", + } + + err = c.ExampleClient.Put(). + Name(example.ObjectMeta.Name). + Namespace(example.ObjectMeta.Namespace). + Resource(tprv1.ExampleResourcePlural). + Body(exampleCopy). + Do(). + Error() + + if err != nil { + fmt.Printf("ERROR updating status: %v\n", err) + } else { + fmt.Printf("UPDATED status: %#v\n", exampleCopy) + } +} + +func (c *ExampleController) onUpdate(oldObj, newObj interface{}) { + oldExample := oldObj.(*tprv1.Example) + newExample := newObj.(*tprv1.Example) + fmt.Printf("[CONTROLLER] OnUpdate oldObj: %s\n", oldExample.ObjectMeta.SelfLink) + fmt.Printf("[CONTROLLER] OnUpdate newObj: %s\n", newExample.ObjectMeta.SelfLink) +} + +func (c *ExampleController) onDelete(obj interface{}) { + example := obj.(*tprv1.Example) + fmt.Printf("[CONTROLLER] OnDelete %s\n", example.ObjectMeta.SelfLink) +} diff --git a/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/main.go b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/main.go new file mode 100644 index 000000000..877706830 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/third-party-resources-deprecated/main.go @@ -0,0 +1,132 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Note: the example only works with the code within the same release/branch. +package main + +import ( + "context" + "flag" + "fmt" + + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + apiv1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" + + // Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters). + // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" + + tprv1 "k8s.io/client-go/examples/third-party-resources-deprecated/apis/tpr/v1" + exampleclient "k8s.io/client-go/examples/third-party-resources-deprecated/client" + examplecontroller "k8s.io/client-go/examples/third-party-resources-deprecated/controller" +) + +func main() { + kubeconfig := flag.String("kubeconfig", "", "Path to a kube config. Only required if out-of-cluster.") + flag.Parse() + + // Create the client config. Use kubeconfig if given, otherwise assume in-cluster. + config, err := buildConfig(*kubeconfig) + if err != nil { + panic(err) + } + + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + panic(err) + } + + // initialize third party resource if it does not exist + err = exampleclient.CreateTPR(clientset) + if err != nil && !apierrors.IsAlreadyExists(err) { + panic(err) + } + + // make a new config for our extension's API group, using the first config as a baseline + exampleClient, exampleScheme, err := exampleclient.NewClient(config) + if err != nil { + panic(err) + } + + // wait until TPR gets processed + err = exampleclient.WaitForExampleResource(exampleClient) + if err != nil { + panic(err) + } + + // start a controller on instances of our TPR + controller := examplecontroller.ExampleController{ + ExampleClient: exampleClient, + ExampleScheme: exampleScheme, + } + + ctx, cancelFunc := context.WithCancel(context.Background()) + defer cancelFunc() + go controller.Run(ctx) + + // Create an instance of our TPR + example := &tprv1.Example{ + ObjectMeta: metav1.ObjectMeta{ + Name: "example1", + }, + Spec: tprv1.ExampleSpec{ + Foo: "hello", + Bar: true, + }, + Status: tprv1.ExampleStatus{ + State: tprv1.ExampleStateCreated, + Message: "Created, not processed yet", + }, + } + var result tprv1.Example + err = exampleClient.Post(). + Resource(tprv1.ExampleResourcePlural). + Namespace(apiv1.NamespaceDefault). + Body(example). + Do().Into(&result) + if err == nil { + fmt.Printf("CREATED: %#v\n", result) + } else if apierrors.IsAlreadyExists(err) { + fmt.Printf("ALREADY EXISTS: %#v\n", result) + } else { + panic(err) + } + + // Poll until Example object is handled by controller and gets status updated to "Processed" + err = exampleclient.WaitForExampleInstanceProcessed(exampleClient, "example1") + if err != nil { + panic(err) + } + fmt.Print("PROCESSED\n") + + // Fetch a list of our TPRs + exampleList := tprv1.ExampleList{} + err = exampleClient.Get().Resource(tprv1.ExampleResourcePlural).Do().Into(&exampleList) + if err != nil { + panic(err) + } + fmt.Printf("LIST: %#v\n", exampleList) +} + +func buildConfig(kubeconfig string) (*rest.Config, error) { + if kubeconfig != "" { + return clientcmd.BuildConfigFromFlags("", kubeconfig) + } + return rest.InClusterConfig() +} diff --git a/vendor/k8s.io/client-go/examples/workqueue/BUILD b/vendor/k8s.io/client-go/examples/workqueue/BUILD new file mode 100644 index 000000000..397159d15 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/workqueue/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_binary", + "go_library", +) + +go_binary( + name = "workqueue", + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["main.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", + "//vendor/k8s.io/client-go/util/workqueue:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/examples/workqueue/README.md b/vendor/k8s.io/client-go/examples/workqueue/README.md new file mode 100644 index 000000000..2ac97049f --- /dev/null +++ b/vendor/k8s.io/client-go/examples/workqueue/README.md @@ -0,0 +1,17 @@ +# Workqueue Example + +This example demonstrates how to write a controller which follows the states +of watched resources. + +It demonstrates how to: + * combine the workqueue with a cache to a full controller + * synchronize the controller on startup + +The example is based on https://git.k8s.io/community/contributors/devel/controllers.md. + +## Running + +``` +# if outside of the cluster +go run *.go -kubeconfig=/my/config -logtostderr=true +``` diff --git a/vendor/k8s.io/client-go/examples/workqueue/main.go b/vendor/k8s.io/client-go/examples/workqueue/main.go new file mode 100644 index 000000000..c255ed764 --- /dev/null +++ b/vendor/k8s.io/client-go/examples/workqueue/main.go @@ -0,0 +1,217 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "flag" + "fmt" + "time" + + "github.com/golang/glog" + + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/kubernetes" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" + "k8s.io/client-go/tools/clientcmd" + "k8s.io/client-go/util/workqueue" +) + +type Controller struct { + indexer cache.Indexer + queue workqueue.RateLimitingInterface + informer cache.Controller +} + +func NewController(queue workqueue.RateLimitingInterface, indexer cache.Indexer, informer cache.Controller) *Controller { + return &Controller{ + informer: informer, + indexer: indexer, + queue: queue, + } +} + +func (c *Controller) processNextItem() bool { + // Wait until there is a new item in the working queue + key, quit := c.queue.Get() + if quit { + return false + } + // Tell the queue that we are done with processing this key. This unblocks the key for other workers + // This allows safe parallel processing because two pods with the same key are never processed in + // parallel. + defer c.queue.Done(key) + + // Invoke the method containing the business logic + err := c.syncToStdout(key.(string)) + // Handle the error if something went wrong during the execution of the business logic + c.handleErr(err, key) + return true +} + +// syncToStdout is the business logic of the controller. In this controller it simply prints +// information about the pod to stdout. In case an error happened, it has to simply return the error. +// The retry logic should not be part of the business logic. +func (c *Controller) syncToStdout(key string) error { + obj, exists, err := c.indexer.GetByKey(key) + if err != nil { + glog.Errorf("Fetching object with key %s from store failed with %v", key, err) + return err + } + + if !exists { + // Below we will warm up our cache with a Pod, so that we will see a delete for one pod + fmt.Printf("Pod %s does not exist anymore\n", key) + } else { + // Note that you also have to check the uid if you have a local controlled resource, which + // is dependent on the actual instance, to detect that a Pod was recreated with the same name + fmt.Printf("Sync/Add/Update for Pod %s\n", obj.(*v1.Pod).GetName()) + } + return nil +} + +// handleErr checks if an error happened and makes sure we will retry later. +func (c *Controller) handleErr(err error, key interface{}) { + if err == nil { + // Forget about the #AddRateLimited history of the key on every successful synchronization. + // This ensures that future processing of updates for this key is not delayed because of + // an outdated error history. + c.queue.Forget(key) + return + } + + // This controller retries 5 times if something goes wrong. After that, it stops trying. + if c.queue.NumRequeues(key) < 5 { + glog.Infof("Error syncing pod %v: %v", key, err) + + // Re-enqueue the key rate limited. Based on the rate limiter on the + // queue and the re-enqueue history, the key will be processed later again. + c.queue.AddRateLimited(key) + return + } + + c.queue.Forget(key) + // Report to an external entity that, even after several retries, we could not successfully process this key + runtime.HandleError(err) + glog.Infof("Dropping pod %q out of the queue: %v", key, err) +} + +func (c *Controller) Run(threadiness int, stopCh chan struct{}) { + defer runtime.HandleCrash() + + // Let the workers stop when we are done + defer c.queue.ShutDown() + glog.Info("Starting Pod controller") + + go c.informer.Run(stopCh) + + // Wait for all involved caches to be synced, before processing items from the queue is started + if !cache.WaitForCacheSync(stopCh, c.informer.HasSynced) { + runtime.HandleError(fmt.Errorf("Timed out waiting for caches to sync")) + return + } + + for i := 0; i < threadiness; i++ { + go wait.Until(c.runWorker, time.Second, stopCh) + } + + <-stopCh + glog.Info("Stopping Pod controller") +} + +func (c *Controller) runWorker() { + for c.processNextItem() { + } +} + +func main() { + var kubeconfig string + var master string + + flag.StringVar(&kubeconfig, "kubeconfig", "", "absolute path to the kubeconfig file") + flag.StringVar(&master, "master", "", "master url") + flag.Parse() + + // creates the connection + config, err := clientcmd.BuildConfigFromFlags(master, kubeconfig) + if err != nil { + glog.Fatal(err) + } + + // creates the clientset + clientset, err := kubernetes.NewForConfig(config) + if err != nil { + glog.Fatal(err) + } + + // create the pod watcher + podListWatcher := cache.NewListWatchFromClient(clientset.Core().RESTClient(), "pods", v1.NamespaceDefault, fields.Everything()) + + // create the workqueue + queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()) + + // Bind the workqueue to a cache with the help of an informer. This way we make sure that + // whenever the cache is updated, the pod key is added to the workqueue. + // Note that when we finally process the item from the workqueue, we might see a newer version + // of the Pod than the version which was responsible for triggering the update. + indexer, informer := cache.NewIndexerInformer(podListWatcher, &v1.Pod{}, 0, cache.ResourceEventHandlerFuncs{ + AddFunc: func(obj interface{}) { + key, err := cache.MetaNamespaceKeyFunc(obj) + if err == nil { + queue.Add(key) + } + }, + UpdateFunc: func(old interface{}, new interface{}) { + key, err := cache.MetaNamespaceKeyFunc(new) + if err == nil { + queue.Add(key) + } + }, + DeleteFunc: func(obj interface{}) { + // IndexerInformer uses a delta queue, therefore for deletes we have to use this + // key function. + key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj) + if err == nil { + queue.Add(key) + } + }, + }, cache.Indexers{}) + + controller := NewController(queue, indexer, informer) + + // We can now warm up the cache for initial synchronization. + // Let's suppose that we knew about a pod "mypod" on our last run, therefore add it to the cache. + // If this pod is not there anymore, the controller will be notified about the removal after the + // cache has synchronized. + indexer.Add(&v1.Pod{ + ObjectMeta: meta_v1.ObjectMeta{ + Name: "mypod", + Namespace: v1.NamespaceDefault, + }, + }) + + // Now let's start the controller + stop := make(chan struct{}) + defer close(stop) + go controller.Run(1, stop) + + // Wait forever + select {} +} diff --git a/vendor/k8s.io/client-go/informers/BUILD b/vendor/k8s.io/client-go/informers/BUILD new file mode 100644 index 000000000..f1d8113b0 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/BUILD @@ -0,0 +1,52 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "factory.go", + "generic.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/informers/admissionregistration:go_default_library", + "//vendor/k8s.io/client-go/informers/apps:go_default_library", + "//vendor/k8s.io/client-go/informers/autoscaling:go_default_library", + "//vendor/k8s.io/client-go/informers/batch:go_default_library", + "//vendor/k8s.io/client-go/informers/certificates:go_default_library", + "//vendor/k8s.io/client-go/informers/core:go_default_library", + "//vendor/k8s.io/client-go/informers/extensions:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/informers/networking:go_default_library", + "//vendor/k8s.io/client-go/informers/policy:go_default_library", + "//vendor/k8s.io/client-go/informers/rbac:go_default_library", + "//vendor/k8s.io/client-go/informers/settings:go_default_library", + "//vendor/k8s.io/client-go/informers/storage:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/BUILD b/vendor/k8s.io/client-go/informers/admissionregistration/BUILD new file mode 100644 index 000000000..ca0f9dd22 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/admissionregistration/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/interface.go new file mode 100644 index 000000000..19099ba02 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/admissionregistration/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package admissionregistration + +import ( + v1alpha1 "k8s.io/client-go/informers/admissionregistration/v1alpha1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1alpha1 provides access to shared informers for resources in V1alpha1. + V1alpha1() v1alpha1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1alpha1 returns a new v1alpha1.Interface. +func (g *group) V1alpha1() v1alpha1.Interface { + return v1alpha1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD new file mode 100644 index 000000000..05fc570b1 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "externaladmissionhookconfiguration.go", + "initializerconfiguration.go", + "interface.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go new file mode 100644 index 000000000..868c16f2a --- /dev/null +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1" + admissionregistration_v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ExternalAdmissionHookConfigurationInformer provides access to a shared informer and lister for +// ExternalAdmissionHookConfigurations. +type ExternalAdmissionHookConfigurationInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.ExternalAdmissionHookConfigurationLister +} + +type externalAdmissionHookConfigurationInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newExternalAdmissionHookConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.AdmissionregistrationV1alpha1().ExternalAdmissionHookConfigurations().Watch(options) + }, + }, + &admissionregistration_v1alpha1.ExternalAdmissionHookConfiguration{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *externalAdmissionHookConfigurationInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&admissionregistration_v1alpha1.ExternalAdmissionHookConfiguration{}, newExternalAdmissionHookConfigurationInformer) +} + +func (f *externalAdmissionHookConfigurationInformer) Lister() v1alpha1.ExternalAdmissionHookConfigurationLister { + return v1alpha1.NewExternalAdmissionHookConfigurationLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go new file mode 100644 index 000000000..78d49f473 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/initializerconfiguration.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/admissionregistration/v1alpha1" + admissionregistration_v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// InitializerConfigurationInformer provides access to a shared informer and lister for +// InitializerConfigurations. +type InitializerConfigurationInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.InitializerConfigurationLister +} + +type initializerConfigurationInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newInitializerConfigurationInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.AdmissionregistrationV1alpha1().InitializerConfigurations().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.AdmissionregistrationV1alpha1().InitializerConfigurations().Watch(options) + }, + }, + &admissionregistration_v1alpha1.InitializerConfiguration{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *initializerConfigurationInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&admissionregistration_v1alpha1.InitializerConfiguration{}, newInitializerConfigurationInformer) +} + +func (f *initializerConfigurationInformer) Lister() v1alpha1.InitializerConfigurationLister { + return v1alpha1.NewInitializerConfigurationLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go new file mode 100644 index 000000000..33ff70766 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1/interface.go @@ -0,0 +1,50 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurationInformer. + ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInformer + // InitializerConfigurations returns a InitializerConfigurationInformer. + InitializerConfigurations() InitializerConfigurationInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// ExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurationInformer. +func (v *version) ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInformer { + return &externalAdmissionHookConfigurationInformer{factory: v.SharedInformerFactory} +} + +// InitializerConfigurations returns a InitializerConfigurationInformer. +func (v *version) InitializerConfigurations() InitializerConfigurationInformer { + return &initializerConfigurationInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/apps/BUILD b/vendor/k8s.io/client-go/informers/apps/BUILD new file mode 100644 index 000000000..6461f2366 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/apps/interface.go b/vendor/k8s.io/client-go/informers/apps/interface.go new file mode 100644 index 000000000..e9957666a --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package apps + +import ( + v1beta1 "k8s.io/client-go/informers/apps/v1beta1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD b/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD new file mode 100644 index 000000000..927903f6b --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "controllerrevision.go", + "deployment.go", + "interface.go", + "statefulset.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go new file mode 100644 index 000000000..ef4dfce6b --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/controllerrevision.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/apps/v1beta1" + apps_v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ControllerRevisionInformer provides access to a shared informer and lister for +// ControllerRevisions. +type ControllerRevisionInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.ControllerRevisionLister +} + +type controllerRevisionInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newControllerRevisionInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.AppsV1beta1().ControllerRevisions(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.AppsV1beta1().ControllerRevisions(v1.NamespaceAll).Watch(options) + }, + }, + &apps_v1beta1.ControllerRevision{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *controllerRevisionInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&apps_v1beta1.ControllerRevision{}, newControllerRevisionInformer) +} + +func (f *controllerRevisionInformer) Lister() v1beta1.ControllerRevisionLister { + return v1beta1.NewControllerRevisionLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go new file mode 100644 index 000000000..41ed724f3 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/deployment.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/apps/v1beta1" + apps_v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// DeploymentInformer provides access to a shared informer and lister for +// Deployments. +type DeploymentInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.DeploymentLister +} + +type deploymentInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newDeploymentInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.AppsV1beta1().Deployments(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.AppsV1beta1().Deployments(v1.NamespaceAll).Watch(options) + }, + }, + &apps_v1beta1.Deployment{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *deploymentInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&apps_v1beta1.Deployment{}, newDeploymentInformer) +} + +func (f *deploymentInformer) Lister() v1beta1.DeploymentLister { + return v1beta1.NewDeploymentLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go new file mode 100644 index 000000000..11f55faad --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/interface.go @@ -0,0 +1,57 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ControllerRevisions returns a ControllerRevisionInformer. + ControllerRevisions() ControllerRevisionInformer + // Deployments returns a DeploymentInformer. + Deployments() DeploymentInformer + // StatefulSets returns a StatefulSetInformer. + StatefulSets() StatefulSetInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// ControllerRevisions returns a ControllerRevisionInformer. +func (v *version) ControllerRevisions() ControllerRevisionInformer { + return &controllerRevisionInformer{factory: v.SharedInformerFactory} +} + +// Deployments returns a DeploymentInformer. +func (v *version) Deployments() DeploymentInformer { + return &deploymentInformer{factory: v.SharedInformerFactory} +} + +// StatefulSets returns a StatefulSetInformer. +func (v *version) StatefulSets() StatefulSetInformer { + return &statefulSetInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go new file mode 100644 index 000000000..4ee88dd61 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/apps/v1beta1/statefulset.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/apps/v1beta1" + apps_v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// StatefulSetInformer provides access to a shared informer and lister for +// StatefulSets. +type StatefulSetInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.StatefulSetLister +} + +type statefulSetInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newStatefulSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.AppsV1beta1().StatefulSets(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.AppsV1beta1().StatefulSets(v1.NamespaceAll).Watch(options) + }, + }, + &apps_v1beta1.StatefulSet{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *statefulSetInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&apps_v1beta1.StatefulSet{}, newStatefulSetInformer) +} + +func (f *statefulSetInformer) Lister() v1beta1.StatefulSetLister { + return v1beta1.NewStatefulSetLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/autoscaling/BUILD b/vendor/k8s.io/client-go/informers/autoscaling/BUILD new file mode 100644 index 000000000..b2627639e --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/informers/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/autoscaling/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/interface.go new file mode 100644 index 000000000..02a73232b --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/interface.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package autoscaling + +import ( + v1 "k8s.io/client-go/informers/autoscaling/v1" + v2alpha1 "k8s.io/client-go/informers/autoscaling/v2alpha1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1 provides access to shared informers for resources in V1. + V1() v1.Interface + // V2alpha1 provides access to shared informers for resources in V2alpha1. + V2alpha1() v2alpha1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1 returns a new v1.Interface. +func (g *group) V1() v1.Interface { + return v1.New(g.SharedInformerFactory) +} + +// V2alpha1 returns a new v2alpha1.Interface. +func (g *group) V2alpha1() v2alpha1.Interface { + return v2alpha1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD b/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD new file mode 100644 index 000000000..a315fe9d3 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/v1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "horizontalpodautoscaler.go", + "interface.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go new file mode 100644 index 000000000..7469a6b10 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/v1/horizontalpodautoscaler.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/autoscaling/v1" + autoscaling_v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// HorizontalPodAutoscalerInformer provides access to a shared informer and lister for +// HorizontalPodAutoscalers. +type HorizontalPodAutoscalerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.HorizontalPodAutoscalerLister +} + +type horizontalPodAutoscalerInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newHorizontalPodAutoscalerInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.AutoscalingV1().HorizontalPodAutoscalers(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.AutoscalingV1().HorizontalPodAutoscalers(meta_v1.NamespaceAll).Watch(options) + }, + }, + &autoscaling_v1.HorizontalPodAutoscaler{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&autoscaling_v1.HorizontalPodAutoscaler{}, newHorizontalPodAutoscalerInformer) +} + +func (f *horizontalPodAutoscalerInformer) Lister() v1.HorizontalPodAutoscalerLister { + return v1.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go new file mode 100644 index 000000000..45f4bb35a --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/v1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer. + HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer. +func (v *version) HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer { + return &horizontalPodAutoscalerInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/BUILD b/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/BUILD new file mode 100644 index 000000000..887f20a8f --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "horizontalpodautoscaler.go", + "interface.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/horizontalpodautoscaler.go new file mode 100644 index 000000000..81cd5eeb1 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/horizontalpodautoscaler.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v2alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v2alpha1 "k8s.io/client-go/listers/autoscaling/v2alpha1" + autoscaling_v2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// HorizontalPodAutoscalerInformer provides access to a shared informer and lister for +// HorizontalPodAutoscalers. +type HorizontalPodAutoscalerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v2alpha1.HorizontalPodAutoscalerLister +} + +type horizontalPodAutoscalerInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newHorizontalPodAutoscalerInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.AutoscalingV2alpha1().HorizontalPodAutoscalers(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.AutoscalingV2alpha1().HorizontalPodAutoscalers(v1.NamespaceAll).Watch(options) + }, + }, + &autoscaling_v2alpha1.HorizontalPodAutoscaler{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *horizontalPodAutoscalerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&autoscaling_v2alpha1.HorizontalPodAutoscaler{}, newHorizontalPodAutoscalerInformer) +} + +func (f *horizontalPodAutoscalerInformer) Lister() v2alpha1.HorizontalPodAutoscalerLister { + return v2alpha1.NewHorizontalPodAutoscalerLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/interface.go b/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/interface.go new file mode 100644 index 000000000..f334a3f52 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/autoscaling/v2alpha1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v2alpha1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer. + HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// HorizontalPodAutoscalers returns a HorizontalPodAutoscalerInformer. +func (v *version) HorizontalPodAutoscalers() HorizontalPodAutoscalerInformer { + return &horizontalPodAutoscalerInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/batch/BUILD b/vendor/k8s.io/client-go/informers/batch/BUILD new file mode 100644 index 000000000..c17abd46d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/informers/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/batch/interface.go b/vendor/k8s.io/client-go/informers/batch/interface.go new file mode 100644 index 000000000..4a7547804 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/interface.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package batch + +import ( + v1 "k8s.io/client-go/informers/batch/v1" + v2alpha1 "k8s.io/client-go/informers/batch/v2alpha1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1 provides access to shared informers for resources in V1. + V1() v1.Interface + // V2alpha1 provides access to shared informers for resources in V2alpha1. + V2alpha1() v2alpha1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1 returns a new v1.Interface. +func (g *group) V1() v1.Interface { + return v1.New(g.SharedInformerFactory) +} + +// V2alpha1 returns a new v2alpha1.Interface. +func (g *group) V2alpha1() v2alpha1.Interface { + return v2alpha1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/batch/v1/BUILD b/vendor/k8s.io/client-go/informers/batch/v1/BUILD new file mode 100644 index 000000000..1d9696d04 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/v1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "job.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/batch/v1/interface.go b/vendor/k8s.io/client-go/informers/batch/v1/interface.go new file mode 100644 index 000000000..d4d7d56f6 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/v1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // Jobs returns a JobInformer. + Jobs() JobInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// Jobs returns a JobInformer. +func (v *version) Jobs() JobInformer { + return &jobInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/batch/v1/job.go b/vendor/k8s.io/client-go/informers/batch/v1/job.go new file mode 100644 index 000000000..c0e48c353 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/v1/job.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/batch/v1" + batch_v1 "k8s.io/client-go/pkg/apis/batch/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// JobInformer provides access to a shared informer and lister for +// Jobs. +type JobInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.JobLister +} + +type jobInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newJobInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.BatchV1().Jobs(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.BatchV1().Jobs(meta_v1.NamespaceAll).Watch(options) + }, + }, + &batch_v1.Job{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *jobInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&batch_v1.Job{}, newJobInformer) +} + +func (f *jobInformer) Lister() v1.JobLister { + return v1.NewJobLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD b/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD new file mode 100644 index 000000000..aa4339f62 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/v2alpha1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "cronjob.go", + "interface.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go b/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go new file mode 100644 index 000000000..db36dbdc0 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/v2alpha1/cronjob.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v2alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v2alpha1 "k8s.io/client-go/listers/batch/v2alpha1" + batch_v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// CronJobInformer provides access to a shared informer and lister for +// CronJobs. +type CronJobInformer interface { + Informer() cache.SharedIndexInformer + Lister() v2alpha1.CronJobLister +} + +type cronJobInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newCronJobInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.BatchV2alpha1().CronJobs(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.BatchV2alpha1().CronJobs(v1.NamespaceAll).Watch(options) + }, + }, + &batch_v2alpha1.CronJob{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *cronJobInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&batch_v2alpha1.CronJob{}, newCronJobInformer) +} + +func (f *cronJobInformer) Lister() v2alpha1.CronJobLister { + return v2alpha1.NewCronJobLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go b/vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go new file mode 100644 index 000000000..261330bf0 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/batch/v2alpha1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v2alpha1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // CronJobs returns a CronJobInformer. + CronJobs() CronJobInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// CronJobs returns a CronJobInformer. +func (v *version) CronJobs() CronJobInformer { + return &cronJobInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/certificates/BUILD b/vendor/k8s.io/client-go/informers/certificates/BUILD new file mode 100644 index 000000000..bf84fc144 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/certificates/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/certificates/interface.go b/vendor/k8s.io/client-go/informers/certificates/interface.go new file mode 100644 index 000000000..4d9f8ea50 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/certificates/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package certificates + +import ( + v1beta1 "k8s.io/client-go/informers/certificates/v1beta1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD b/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD new file mode 100644 index 000000000..a80a2f4f0 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/certificates/v1beta1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "certificatesigningrequest.go", + "interface.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go new file mode 100644 index 000000000..d4a139b63 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/certificates/v1beta1/certificatesigningrequest.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/certificates/v1beta1" + certificates_v1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// CertificateSigningRequestInformer provides access to a shared informer and lister for +// CertificateSigningRequests. +type CertificateSigningRequestInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.CertificateSigningRequestLister +} + +type certificateSigningRequestInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newCertificateSigningRequestInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.CertificatesV1beta1().CertificateSigningRequests().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.CertificatesV1beta1().CertificateSigningRequests().Watch(options) + }, + }, + &certificates_v1beta1.CertificateSigningRequest{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *certificateSigningRequestInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&certificates_v1beta1.CertificateSigningRequest{}, newCertificateSigningRequestInformer) +} + +func (f *certificateSigningRequestInformer) Lister() v1beta1.CertificateSigningRequestLister { + return v1beta1.NewCertificateSigningRequestLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go new file mode 100644 index 000000000..8facec127 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/certificates/v1beta1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // CertificateSigningRequests returns a CertificateSigningRequestInformer. + CertificateSigningRequests() CertificateSigningRequestInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// CertificateSigningRequests returns a CertificateSigningRequestInformer. +func (v *version) CertificateSigningRequests() CertificateSigningRequestInformer { + return &certificateSigningRequestInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/core/BUILD b/vendor/k8s.io/client-go/informers/core/BUILD new file mode 100644 index 000000000..2a55d3c96 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/core/interface.go b/vendor/k8s.io/client-go/informers/core/interface.go new file mode 100644 index 000000000..f90c24851 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package core + +import ( + v1 "k8s.io/client-go/informers/core/v1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1 provides access to shared informers for resources in V1. + V1() v1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1 returns a new v1.Interface. +func (g *group) V1() v1.Interface { + return v1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/BUILD b/vendor/k8s.io/client-go/informers/core/v1/BUILD new file mode 100644 index 000000000..23703ff6d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/BUILD @@ -0,0 +1,42 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "componentstatus.go", + "configmap.go", + "endpoints.go", + "event.go", + "interface.go", + "limitrange.go", + "namespace.go", + "node.go", + "persistentvolume.go", + "persistentvolumeclaim.go", + "pod.go", + "podtemplate.go", + "replicationcontroller.go", + "resourcequota.go", + "secret.go", + "service.go", + "serviceaccount.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go b/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go new file mode 100644 index 000000000..62a67d0d8 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/componentstatus.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ComponentStatusInformer provides access to a shared informer and lister for +// ComponentStatuses. +type ComponentStatusInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ComponentStatusLister +} + +type componentStatusInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newComponentStatusInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().ComponentStatuses().List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().ComponentStatuses().Watch(options) + }, + }, + &api_v1.ComponentStatus{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *componentStatusInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.ComponentStatus{}, newComponentStatusInformer) +} + +func (f *componentStatusInformer) Lister() v1.ComponentStatusLister { + return v1.NewComponentStatusLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/configmap.go b/vendor/k8s.io/client-go/informers/core/v1/configmap.go new file mode 100644 index 000000000..2dc10f3a9 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/configmap.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ConfigMapInformer provides access to a shared informer and lister for +// ConfigMaps. +type ConfigMapInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ConfigMapLister +} + +type configMapInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newConfigMapInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().ConfigMaps(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().ConfigMaps(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.ConfigMap{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *configMapInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.ConfigMap{}, newConfigMapInformer) +} + +func (f *configMapInformer) Lister() v1.ConfigMapLister { + return v1.NewConfigMapLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/endpoints.go b/vendor/k8s.io/client-go/informers/core/v1/endpoints.go new file mode 100644 index 000000000..b0ea2bcb6 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/endpoints.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// EndpointsInformer provides access to a shared informer and lister for +// Endpoints. +type EndpointsInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.EndpointsLister +} + +type endpointsInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newEndpointsInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Endpoints(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Endpoints(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.Endpoints{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *endpointsInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Endpoints{}, newEndpointsInformer) +} + +func (f *endpointsInformer) Lister() v1.EndpointsLister { + return v1.NewEndpointsLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/event.go b/vendor/k8s.io/client-go/informers/core/v1/event.go new file mode 100644 index 000000000..bc314c425 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/event.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// EventInformer provides access to a shared informer and lister for +// Events. +type EventInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.EventLister +} + +type eventInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newEventInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Events(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Events(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.Event{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *eventInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Event{}, newEventInformer) +} + +func (f *eventInformer) Lister() v1.EventLister { + return v1.NewEventLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/interface.go b/vendor/k8s.io/client-go/informers/core/v1/interface.go new file mode 100644 index 000000000..5f2ff96b2 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/interface.go @@ -0,0 +1,148 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ComponentStatuses returns a ComponentStatusInformer. + ComponentStatuses() ComponentStatusInformer + // ConfigMaps returns a ConfigMapInformer. + ConfigMaps() ConfigMapInformer + // Endpoints returns a EndpointsInformer. + Endpoints() EndpointsInformer + // Events returns a EventInformer. + Events() EventInformer + // LimitRanges returns a LimitRangeInformer. + LimitRanges() LimitRangeInformer + // Namespaces returns a NamespaceInformer. + Namespaces() NamespaceInformer + // Nodes returns a NodeInformer. + Nodes() NodeInformer + // PersistentVolumes returns a PersistentVolumeInformer. + PersistentVolumes() PersistentVolumeInformer + // PersistentVolumeClaims returns a PersistentVolumeClaimInformer. + PersistentVolumeClaims() PersistentVolumeClaimInformer + // Pods returns a PodInformer. + Pods() PodInformer + // PodTemplates returns a PodTemplateInformer. + PodTemplates() PodTemplateInformer + // ReplicationControllers returns a ReplicationControllerInformer. + ReplicationControllers() ReplicationControllerInformer + // ResourceQuotas returns a ResourceQuotaInformer. + ResourceQuotas() ResourceQuotaInformer + // Secrets returns a SecretInformer. + Secrets() SecretInformer + // Services returns a ServiceInformer. + Services() ServiceInformer + // ServiceAccounts returns a ServiceAccountInformer. + ServiceAccounts() ServiceAccountInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// ComponentStatuses returns a ComponentStatusInformer. +func (v *version) ComponentStatuses() ComponentStatusInformer { + return &componentStatusInformer{factory: v.SharedInformerFactory} +} + +// ConfigMaps returns a ConfigMapInformer. +func (v *version) ConfigMaps() ConfigMapInformer { + return &configMapInformer{factory: v.SharedInformerFactory} +} + +// Endpoints returns a EndpointsInformer. +func (v *version) Endpoints() EndpointsInformer { + return &endpointsInformer{factory: v.SharedInformerFactory} +} + +// Events returns a EventInformer. +func (v *version) Events() EventInformer { + return &eventInformer{factory: v.SharedInformerFactory} +} + +// LimitRanges returns a LimitRangeInformer. +func (v *version) LimitRanges() LimitRangeInformer { + return &limitRangeInformer{factory: v.SharedInformerFactory} +} + +// Namespaces returns a NamespaceInformer. +func (v *version) Namespaces() NamespaceInformer { + return &namespaceInformer{factory: v.SharedInformerFactory} +} + +// Nodes returns a NodeInformer. +func (v *version) Nodes() NodeInformer { + return &nodeInformer{factory: v.SharedInformerFactory} +} + +// PersistentVolumes returns a PersistentVolumeInformer. +func (v *version) PersistentVolumes() PersistentVolumeInformer { + return &persistentVolumeInformer{factory: v.SharedInformerFactory} +} + +// PersistentVolumeClaims returns a PersistentVolumeClaimInformer. +func (v *version) PersistentVolumeClaims() PersistentVolumeClaimInformer { + return &persistentVolumeClaimInformer{factory: v.SharedInformerFactory} +} + +// Pods returns a PodInformer. +func (v *version) Pods() PodInformer { + return &podInformer{factory: v.SharedInformerFactory} +} + +// PodTemplates returns a PodTemplateInformer. +func (v *version) PodTemplates() PodTemplateInformer { + return &podTemplateInformer{factory: v.SharedInformerFactory} +} + +// ReplicationControllers returns a ReplicationControllerInformer. +func (v *version) ReplicationControllers() ReplicationControllerInformer { + return &replicationControllerInformer{factory: v.SharedInformerFactory} +} + +// ResourceQuotas returns a ResourceQuotaInformer. +func (v *version) ResourceQuotas() ResourceQuotaInformer { + return &resourceQuotaInformer{factory: v.SharedInformerFactory} +} + +// Secrets returns a SecretInformer. +func (v *version) Secrets() SecretInformer { + return &secretInformer{factory: v.SharedInformerFactory} +} + +// Services returns a ServiceInformer. +func (v *version) Services() ServiceInformer { + return &serviceInformer{factory: v.SharedInformerFactory} +} + +// ServiceAccounts returns a ServiceAccountInformer. +func (v *version) ServiceAccounts() ServiceAccountInformer { + return &serviceAccountInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/limitrange.go b/vendor/k8s.io/client-go/informers/core/v1/limitrange.go new file mode 100644 index 000000000..65edd8208 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/limitrange.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// LimitRangeInformer provides access to a shared informer and lister for +// LimitRanges. +type LimitRangeInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.LimitRangeLister +} + +type limitRangeInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newLimitRangeInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().LimitRanges(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().LimitRanges(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.LimitRange{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *limitRangeInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.LimitRange{}, newLimitRangeInformer) +} + +func (f *limitRangeInformer) Lister() v1.LimitRangeLister { + return v1.NewLimitRangeLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/namespace.go b/vendor/k8s.io/client-go/informers/core/v1/namespace.go new file mode 100644 index 000000000..281fd416c --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/namespace.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// NamespaceInformer provides access to a shared informer and lister for +// Namespaces. +type NamespaceInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.NamespaceLister +} + +type namespaceInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newNamespaceInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Namespaces().List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Namespaces().Watch(options) + }, + }, + &api_v1.Namespace{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *namespaceInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Namespace{}, newNamespaceInformer) +} + +func (f *namespaceInformer) Lister() v1.NamespaceLister { + return v1.NewNamespaceLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/node.go b/vendor/k8s.io/client-go/informers/core/v1/node.go new file mode 100644 index 000000000..f66010eda --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/node.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// NodeInformer provides access to a shared informer and lister for +// Nodes. +type NodeInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.NodeLister +} + +type nodeInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newNodeInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Nodes().List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Nodes().Watch(options) + }, + }, + &api_v1.Node{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *nodeInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Node{}, newNodeInformer) +} + +func (f *nodeInformer) Lister() v1.NodeLister { + return v1.NewNodeLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go new file mode 100644 index 000000000..3a552583f --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/persistentvolume.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PersistentVolumeInformer provides access to a shared informer and lister for +// PersistentVolumes. +type PersistentVolumeInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.PersistentVolumeLister +} + +type persistentVolumeInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPersistentVolumeInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().PersistentVolumes().List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().PersistentVolumes().Watch(options) + }, + }, + &api_v1.PersistentVolume{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *persistentVolumeInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.PersistentVolume{}, newPersistentVolumeInformer) +} + +func (f *persistentVolumeInformer) Lister() v1.PersistentVolumeLister { + return v1.NewPersistentVolumeLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go new file mode 100644 index 000000000..5a79590da --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/persistentvolumeclaim.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PersistentVolumeClaimInformer provides access to a shared informer and lister for +// PersistentVolumeClaims. +type PersistentVolumeClaimInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.PersistentVolumeClaimLister +} + +type persistentVolumeClaimInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPersistentVolumeClaimInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().PersistentVolumeClaims(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().PersistentVolumeClaims(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.PersistentVolumeClaim{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *persistentVolumeClaimInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.PersistentVolumeClaim{}, newPersistentVolumeClaimInformer) +} + +func (f *persistentVolumeClaimInformer) Lister() v1.PersistentVolumeClaimLister { + return v1.NewPersistentVolumeClaimLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/pod.go b/vendor/k8s.io/client-go/informers/core/v1/pod.go new file mode 100644 index 000000000..8c58aee6d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/pod.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PodInformer provides access to a shared informer and lister for +// Pods. +type PodInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.PodLister +} + +type podInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPodInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Pods(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Pods(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.Pod{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *podInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Pod{}, newPodInformer) +} + +func (f *podInformer) Lister() v1.PodLister { + return v1.NewPodLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go b/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go new file mode 100644 index 000000000..429906425 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/podtemplate.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PodTemplateInformer provides access to a shared informer and lister for +// PodTemplates. +type PodTemplateInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.PodTemplateLister +} + +type podTemplateInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPodTemplateInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().PodTemplates(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().PodTemplates(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.PodTemplate{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *podTemplateInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.PodTemplate{}, newPodTemplateInformer) +} + +func (f *podTemplateInformer) Lister() v1.PodTemplateLister { + return v1.NewPodTemplateLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go new file mode 100644 index 000000000..e39b46de7 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/replicationcontroller.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ReplicationControllerInformer provides access to a shared informer and lister for +// ReplicationControllers. +type ReplicationControllerInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ReplicationControllerLister +} + +type replicationControllerInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newReplicationControllerInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().ReplicationControllers(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().ReplicationControllers(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.ReplicationController{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *replicationControllerInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.ReplicationController{}, newReplicationControllerInformer) +} + +func (f *replicationControllerInformer) Lister() v1.ReplicationControllerLister { + return v1.NewReplicationControllerLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go b/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go new file mode 100644 index 000000000..afa1f6522 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/resourcequota.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ResourceQuotaInformer provides access to a shared informer and lister for +// ResourceQuotas. +type ResourceQuotaInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ResourceQuotaLister +} + +type resourceQuotaInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newResourceQuotaInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().ResourceQuotas(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().ResourceQuotas(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.ResourceQuota{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *resourceQuotaInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.ResourceQuota{}, newResourceQuotaInformer) +} + +func (f *resourceQuotaInformer) Lister() v1.ResourceQuotaLister { + return v1.NewResourceQuotaLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/secret.go b/vendor/k8s.io/client-go/informers/core/v1/secret.go new file mode 100644 index 000000000..7b8f58c9f --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/secret.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// SecretInformer provides access to a shared informer and lister for +// Secrets. +type SecretInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.SecretLister +} + +type secretInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newSecretInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Secrets(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Secrets(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.Secret{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *secretInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Secret{}, newSecretInformer) +} + +func (f *secretInformer) Lister() v1.SecretLister { + return v1.NewSecretLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/service.go b/vendor/k8s.io/client-go/informers/core/v1/service.go new file mode 100644 index 000000000..b20a43b47 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/service.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ServiceInformer provides access to a shared informer and lister for +// Services. +type ServiceInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ServiceLister +} + +type serviceInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newServiceInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().Services(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().Services(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.Service{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *serviceInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.Service{}, newServiceInformer) +} + +func (f *serviceInformer) Lister() v1.ServiceLister { + return v1.NewServiceLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go new file mode 100644 index 000000000..911078ea2 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/core/v1/serviceaccount.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/core/v1" + api_v1 "k8s.io/client-go/pkg/api/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ServiceAccountInformer provides access to a shared informer and lister for +// ServiceAccounts. +type ServiceAccountInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.ServiceAccountLister +} + +type serviceAccountInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newServiceAccountInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.CoreV1().ServiceAccounts(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.CoreV1().ServiceAccounts(meta_v1.NamespaceAll).Watch(options) + }, + }, + &api_v1.ServiceAccount{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *serviceAccountInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&api_v1.ServiceAccount{}, newServiceAccountInformer) +} + +func (f *serviceAccountInformer) Lister() v1.ServiceAccountLister { + return v1.NewServiceAccountLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/BUILD b/vendor/k8s.io/client-go/informers/extensions/BUILD new file mode 100644 index 000000000..3779a3b0c --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/extensions/interface.go b/vendor/k8s.io/client-go/informers/extensions/interface.go new file mode 100644 index 000000000..009a89b94 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package extensions + +import ( + v1beta1 "k8s.io/client-go/informers/extensions/v1beta1" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD b/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD new file mode 100644 index 000000000..a917ec094 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "daemonset.go", + "deployment.go", + "ingress.go", + "interface.go", + "podsecuritypolicy.go", + "replicaset.go", + "thirdpartyresource.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go new file mode 100644 index 000000000..77f870e0f --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/daemonset.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/extensions/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// DaemonSetInformer provides access to a shared informer and lister for +// DaemonSets. +type DaemonSetInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.DaemonSetLister +} + +type daemonSetInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newDaemonSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.ExtensionsV1beta1().DaemonSets(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.ExtensionsV1beta1().DaemonSets(v1.NamespaceAll).Watch(options) + }, + }, + &extensions_v1beta1.DaemonSet{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *daemonSetInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&extensions_v1beta1.DaemonSet{}, newDaemonSetInformer) +} + +func (f *daemonSetInformer) Lister() v1beta1.DaemonSetLister { + return v1beta1.NewDaemonSetLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go new file mode 100644 index 000000000..f74b35e02 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/deployment.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/extensions/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// DeploymentInformer provides access to a shared informer and lister for +// Deployments. +type DeploymentInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.DeploymentLister +} + +type deploymentInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newDeploymentInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.ExtensionsV1beta1().Deployments(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.ExtensionsV1beta1().Deployments(v1.NamespaceAll).Watch(options) + }, + }, + &extensions_v1beta1.Deployment{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *deploymentInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&extensions_v1beta1.Deployment{}, newDeploymentInformer) +} + +func (f *deploymentInformer) Lister() v1beta1.DeploymentLister { + return v1beta1.NewDeploymentLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go new file mode 100644 index 000000000..e07f6fb2d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/ingress.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/extensions/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// IngressInformer provides access to a shared informer and lister for +// Ingresses. +type IngressInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.IngressLister +} + +type ingressInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newIngressInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.ExtensionsV1beta1().Ingresses(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.ExtensionsV1beta1().Ingresses(v1.NamespaceAll).Watch(options) + }, + }, + &extensions_v1beta1.Ingress{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *ingressInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&extensions_v1beta1.Ingress{}, newIngressInformer) +} + +func (f *ingressInformer) Lister() v1beta1.IngressLister { + return v1beta1.NewIngressLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go new file mode 100644 index 000000000..ef226bae0 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/interface.go @@ -0,0 +1,78 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // DaemonSets returns a DaemonSetInformer. + DaemonSets() DaemonSetInformer + // Deployments returns a DeploymentInformer. + Deployments() DeploymentInformer + // Ingresses returns a IngressInformer. + Ingresses() IngressInformer + // PodSecurityPolicies returns a PodSecurityPolicyInformer. + PodSecurityPolicies() PodSecurityPolicyInformer + // ReplicaSets returns a ReplicaSetInformer. + ReplicaSets() ReplicaSetInformer + // ThirdPartyResources returns a ThirdPartyResourceInformer. + ThirdPartyResources() ThirdPartyResourceInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// DaemonSets returns a DaemonSetInformer. +func (v *version) DaemonSets() DaemonSetInformer { + return &daemonSetInformer{factory: v.SharedInformerFactory} +} + +// Deployments returns a DeploymentInformer. +func (v *version) Deployments() DeploymentInformer { + return &deploymentInformer{factory: v.SharedInformerFactory} +} + +// Ingresses returns a IngressInformer. +func (v *version) Ingresses() IngressInformer { + return &ingressInformer{factory: v.SharedInformerFactory} +} + +// PodSecurityPolicies returns a PodSecurityPolicyInformer. +func (v *version) PodSecurityPolicies() PodSecurityPolicyInformer { + return &podSecurityPolicyInformer{factory: v.SharedInformerFactory} +} + +// ReplicaSets returns a ReplicaSetInformer. +func (v *version) ReplicaSets() ReplicaSetInformer { + return &replicaSetInformer{factory: v.SharedInformerFactory} +} + +// ThirdPartyResources returns a ThirdPartyResourceInformer. +func (v *version) ThirdPartyResources() ThirdPartyResourceInformer { + return &thirdPartyResourceInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go new file mode 100644 index 000000000..12fec02db --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/podsecuritypolicy.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/extensions/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PodSecurityPolicyInformer provides access to a shared informer and lister for +// PodSecurityPolicies. +type PodSecurityPolicyInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.PodSecurityPolicyLister +} + +type podSecurityPolicyInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPodSecurityPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.ExtensionsV1beta1().PodSecurityPolicies().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.ExtensionsV1beta1().PodSecurityPolicies().Watch(options) + }, + }, + &extensions_v1beta1.PodSecurityPolicy{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *podSecurityPolicyInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&extensions_v1beta1.PodSecurityPolicy{}, newPodSecurityPolicyInformer) +} + +func (f *podSecurityPolicyInformer) Lister() v1beta1.PodSecurityPolicyLister { + return v1beta1.NewPodSecurityPolicyLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go new file mode 100644 index 000000000..8fa8a4291 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/replicaset.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/extensions/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ReplicaSetInformer provides access to a shared informer and lister for +// ReplicaSets. +type ReplicaSetInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.ReplicaSetLister +} + +type replicaSetInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newReplicaSetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.ExtensionsV1beta1().ReplicaSets(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.ExtensionsV1beta1().ReplicaSets(v1.NamespaceAll).Watch(options) + }, + }, + &extensions_v1beta1.ReplicaSet{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *replicaSetInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&extensions_v1beta1.ReplicaSet{}, newReplicaSetInformer) +} + +func (f *replicaSetInformer) Lister() v1beta1.ReplicaSetLister { + return v1beta1.NewReplicaSetLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/extensions/v1beta1/thirdpartyresource.go b/vendor/k8s.io/client-go/informers/extensions/v1beta1/thirdpartyresource.go new file mode 100644 index 000000000..8a5804060 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/extensions/v1beta1/thirdpartyresource.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/extensions/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ThirdPartyResourceInformer provides access to a shared informer and lister for +// ThirdPartyResources. +type ThirdPartyResourceInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.ThirdPartyResourceLister +} + +type thirdPartyResourceInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newThirdPartyResourceInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.ExtensionsV1beta1().ThirdPartyResources().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.ExtensionsV1beta1().ThirdPartyResources().Watch(options) + }, + }, + &extensions_v1beta1.ThirdPartyResource{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *thirdPartyResourceInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&extensions_v1beta1.ThirdPartyResource{}, newThirdPartyResourceInformer) +} + +func (f *thirdPartyResourceInformer) Lister() v1beta1.ThirdPartyResourceLister { + return v1beta1.NewThirdPartyResourceLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/factory.go b/vendor/k8s.io/client-go/informers/factory.go new file mode 100644 index 000000000..546158afd --- /dev/null +++ b/vendor/k8s.io/client-go/informers/factory.go @@ -0,0 +1,184 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package informers + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + admissionregistration "k8s.io/client-go/informers/admissionregistration" + apps "k8s.io/client-go/informers/apps" + autoscaling "k8s.io/client-go/informers/autoscaling" + batch "k8s.io/client-go/informers/batch" + certificates "k8s.io/client-go/informers/certificates" + core "k8s.io/client-go/informers/core" + extensions "k8s.io/client-go/informers/extensions" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + networking "k8s.io/client-go/informers/networking" + policy "k8s.io/client-go/informers/policy" + rbac "k8s.io/client-go/informers/rbac" + settings "k8s.io/client-go/informers/settings" + storage "k8s.io/client-go/informers/storage" + kubernetes "k8s.io/client-go/kubernetes" + cache "k8s.io/client-go/tools/cache" + reflect "reflect" + sync "sync" + time "time" +) + +type sharedInformerFactory struct { + client kubernetes.Interface + lock sync.Mutex + defaultResync time.Duration + + informers map[reflect.Type]cache.SharedIndexInformer + // startedInformers is used for tracking which informers have been started. + // This allows Start() to be called multiple times safely. + startedInformers map[reflect.Type]bool +} + +// NewSharedInformerFactory constructs a new instance of sharedInformerFactory +func NewSharedInformerFactory(client kubernetes.Interface, defaultResync time.Duration) SharedInformerFactory { + return &sharedInformerFactory{ + client: client, + defaultResync: defaultResync, + informers: make(map[reflect.Type]cache.SharedIndexInformer), + startedInformers: make(map[reflect.Type]bool), + } +} + +// Start initializes all requested informers. +func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { + f.lock.Lock() + defer f.lock.Unlock() + + for informerType, informer := range f.informers { + if !f.startedInformers[informerType] { + go informer.Run(stopCh) + f.startedInformers[informerType] = true + } + } +} + +// WaitForCacheSync waits for all started informers' cache were synced. +func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { + informers := func() map[reflect.Type]cache.SharedIndexInformer { + f.lock.Lock() + defer f.lock.Unlock() + + informers := map[reflect.Type]cache.SharedIndexInformer{} + for informerType, informer := range f.informers { + if f.startedInformers[informerType] { + informers[informerType] = informer + } + } + return informers + }() + + res := map[reflect.Type]bool{} + for informType, informer := range informers { + res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced) + } + return res +} + +// InternalInformerFor returns the SharedIndexInformer for obj using an internal +// client. +func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { + f.lock.Lock() + defer f.lock.Unlock() + + informerType := reflect.TypeOf(obj) + informer, exists := f.informers[informerType] + if exists { + return informer + } + informer = newFunc(f.client, f.defaultResync) + f.informers[informerType] = informer + + return informer +} + +// SharedInformerFactory provides shared informers for resources in all known +// API group versions. +type SharedInformerFactory interface { + internalinterfaces.SharedInformerFactory + ForResource(resource schema.GroupVersionResource) (GenericInformer, error) + WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool + + Admissionregistration() admissionregistration.Interface + Apps() apps.Interface + Autoscaling() autoscaling.Interface + Batch() batch.Interface + Certificates() certificates.Interface + Core() core.Interface + Extensions() extensions.Interface + Networking() networking.Interface + Policy() policy.Interface + Rbac() rbac.Interface + Settings() settings.Interface + Storage() storage.Interface +} + +func (f *sharedInformerFactory) Admissionregistration() admissionregistration.Interface { + return admissionregistration.New(f) +} + +func (f *sharedInformerFactory) Apps() apps.Interface { + return apps.New(f) +} + +func (f *sharedInformerFactory) Autoscaling() autoscaling.Interface { + return autoscaling.New(f) +} + +func (f *sharedInformerFactory) Batch() batch.Interface { + return batch.New(f) +} + +func (f *sharedInformerFactory) Certificates() certificates.Interface { + return certificates.New(f) +} + +func (f *sharedInformerFactory) Core() core.Interface { + return core.New(f) +} + +func (f *sharedInformerFactory) Extensions() extensions.Interface { + return extensions.New(f) +} + +func (f *sharedInformerFactory) Networking() networking.Interface { + return networking.New(f) +} + +func (f *sharedInformerFactory) Policy() policy.Interface { + return policy.New(f) +} + +func (f *sharedInformerFactory) Rbac() rbac.Interface { + return rbac.New(f) +} + +func (f *sharedInformerFactory) Settings() settings.Interface { + return settings.New(f) +} + +func (f *sharedInformerFactory) Storage() storage.Interface { + return storage.New(f) +} diff --git a/vendor/k8s.io/client-go/informers/generic.go b/vendor/k8s.io/client-go/informers/generic.go new file mode 100644 index 000000000..19b66a52b --- /dev/null +++ b/vendor/k8s.io/client-go/informers/generic.go @@ -0,0 +1,194 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package informers + +import ( + "fmt" + schema "k8s.io/apimachinery/pkg/runtime/schema" + api_v1 "k8s.io/client-go/pkg/api/v1" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + v2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + batch_v1 "k8s.io/client-go/pkg/apis/batch/v1" + batch_v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + certificates_v1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + extensions_v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + networking_v1 "k8s.io/client-go/pkg/apis/networking/v1" + policy_v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + rbac_v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rbac_v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + settings_v1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + storage_v1 "k8s.io/client-go/pkg/apis/storage/v1" + storage_v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" + cache "k8s.io/client-go/tools/cache" +) + +// GenericInformer is type of SharedIndexInformer which will locate and delegate to other +// sharedInformers based on type +type GenericInformer interface { + Informer() cache.SharedIndexInformer + Lister() cache.GenericLister +} + +type genericInformer struct { + informer cache.SharedIndexInformer + resource schema.GroupResource +} + +// Informer returns the SharedIndexInformer. +func (f *genericInformer) Informer() cache.SharedIndexInformer { + return f.informer +} + +// Lister returns the GenericLister. +func (f *genericInformer) Lister() cache.GenericLister { + return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource) +} + +// ForResource gives generic access to a shared informer of the matching type +// TODO extend this to unknown resources with a client pool +func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { + switch resource { + // Group=Admissionregistration, Version=V1alpha1 + case v1alpha1.SchemeGroupVersion.WithResource("externaladmissionhookconfigurations"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().ExternalAdmissionHookConfigurations().Informer()}, nil + case v1alpha1.SchemeGroupVersion.WithResource("initializerconfigurations"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Admissionregistration().V1alpha1().InitializerConfigurations().Informer()}, nil + + // Group=Apps, Version=V1beta1 + case v1beta1.SchemeGroupVersion.WithResource("controllerrevisions"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta1().ControllerRevisions().Informer()}, nil + case v1beta1.SchemeGroupVersion.WithResource("deployments"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta1().Deployments().Informer()}, nil + case v1beta1.SchemeGroupVersion.WithResource("statefulsets"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Apps().V1beta1().StatefulSets().Informer()}, nil + + // Group=Autoscaling, Version=V1 + case v1.SchemeGroupVersion.WithResource("horizontalpodautoscalers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Autoscaling().V1().HorizontalPodAutoscalers().Informer()}, nil + + // Group=Autoscaling, Version=V2alpha1 + case v2alpha1.SchemeGroupVersion.WithResource("horizontalpodautoscalers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Autoscaling().V2alpha1().HorizontalPodAutoscalers().Informer()}, nil + + // Group=Batch, Version=V1 + case batch_v1.SchemeGroupVersion.WithResource("jobs"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Batch().V1().Jobs().Informer()}, nil + + // Group=Batch, Version=V2alpha1 + case batch_v2alpha1.SchemeGroupVersion.WithResource("cronjobs"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Batch().V2alpha1().CronJobs().Informer()}, nil + + // Group=Certificates, Version=V1beta1 + case certificates_v1beta1.SchemeGroupVersion.WithResource("certificatesigningrequests"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Certificates().V1beta1().CertificateSigningRequests().Informer()}, nil + + // Group=Core, Version=V1 + case api_v1.SchemeGroupVersion.WithResource("componentstatuses"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ComponentStatuses().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("configmaps"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ConfigMaps().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("endpoints"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Endpoints().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("events"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Events().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("limitranges"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().LimitRanges().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("namespaces"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Namespaces().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("nodes"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Nodes().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("persistentvolumes"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().PersistentVolumes().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("persistentvolumeclaims"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().PersistentVolumeClaims().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("pods"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Pods().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("podtemplates"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().PodTemplates().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("replicationcontrollers"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ReplicationControllers().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("resourcequotas"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ResourceQuotas().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("secrets"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Secrets().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("services"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().Services().Informer()}, nil + case api_v1.SchemeGroupVersion.WithResource("serviceaccounts"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Core().V1().ServiceAccounts().Informer()}, nil + + // Group=Extensions, Version=V1beta1 + case extensions_v1beta1.SchemeGroupVersion.WithResource("daemonsets"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().DaemonSets().Informer()}, nil + case extensions_v1beta1.SchemeGroupVersion.WithResource("deployments"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().Deployments().Informer()}, nil + case extensions_v1beta1.SchemeGroupVersion.WithResource("ingresses"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().Ingresses().Informer()}, nil + case extensions_v1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().PodSecurityPolicies().Informer()}, nil + case extensions_v1beta1.SchemeGroupVersion.WithResource("replicasets"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().ReplicaSets().Informer()}, nil + case extensions_v1beta1.SchemeGroupVersion.WithResource("thirdpartyresources"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Extensions().V1beta1().ThirdPartyResources().Informer()}, nil + + // Group=Networking, Version=V1 + case networking_v1.SchemeGroupVersion.WithResource("networkpolicies"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1().NetworkPolicies().Informer()}, nil + + // Group=Policy, Version=V1beta1 + case policy_v1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Policy().V1beta1().PodDisruptionBudgets().Informer()}, nil + + // Group=Rbac, Version=V1alpha1 + case rbac_v1alpha1.SchemeGroupVersion.WithResource("clusterroles"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().ClusterRoles().Informer()}, nil + case rbac_v1alpha1.SchemeGroupVersion.WithResource("clusterrolebindings"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().ClusterRoleBindings().Informer()}, nil + case rbac_v1alpha1.SchemeGroupVersion.WithResource("roles"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().Roles().Informer()}, nil + case rbac_v1alpha1.SchemeGroupVersion.WithResource("rolebindings"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1alpha1().RoleBindings().Informer()}, nil + + // Group=Rbac, Version=V1beta1 + case rbac_v1beta1.SchemeGroupVersion.WithResource("clusterroles"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().ClusterRoles().Informer()}, nil + case rbac_v1beta1.SchemeGroupVersion.WithResource("clusterrolebindings"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().ClusterRoleBindings().Informer()}, nil + case rbac_v1beta1.SchemeGroupVersion.WithResource("roles"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().Roles().Informer()}, nil + case rbac_v1beta1.SchemeGroupVersion.WithResource("rolebindings"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Rbac().V1beta1().RoleBindings().Informer()}, nil + + // Group=Settings, Version=V1alpha1 + case settings_v1alpha1.SchemeGroupVersion.WithResource("podpresets"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Settings().V1alpha1().PodPresets().Informer()}, nil + + // Group=Storage, Version=V1 + case storage_v1.SchemeGroupVersion.WithResource("storageclasses"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1().StorageClasses().Informer()}, nil + + // Group=Storage, Version=V1beta1 + case storage_v1beta1.SchemeGroupVersion.WithResource("storageclasses"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Storage().V1beta1().StorageClasses().Informer()}, nil + + } + + return nil, fmt.Errorf("no informer found for %v", resource) +} diff --git a/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD b/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD new file mode 100644 index 000000000..e834c6bfd --- /dev/null +++ b/vendor/k8s.io/client-go/informers/internalinterfaces/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["factory_interfaces.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go b/vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go new file mode 100644 index 000000000..bfe354a59 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/internalinterfaces/factory_interfaces.go @@ -0,0 +1,34 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package internalinterfaces + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + kubernetes "k8s.io/client-go/kubernetes" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +type NewInformerFunc func(kubernetes.Interface, time.Duration) cache.SharedIndexInformer + +// SharedInformerFactory a small interface to allow for adding an informer without an import cycle +type SharedInformerFactory interface { + Start(stopCh <-chan struct{}) + InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer +} diff --git a/vendor/k8s.io/client-go/informers/networking/BUILD b/vendor/k8s.io/client-go/informers/networking/BUILD new file mode 100644 index 000000000..829a72288 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/networking/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/informers/networking/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/networking/interface.go b/vendor/k8s.io/client-go/informers/networking/interface.go new file mode 100644 index 000000000..a5df58b04 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/networking/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package networking + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + v1 "k8s.io/client-go/informers/networking/v1" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1 provides access to shared informers for resources in V1. + V1() v1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1 returns a new v1.Interface. +func (g *group) V1() v1.Interface { + return v1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/networking/v1/BUILD b/vendor/k8s.io/client-go/informers/networking/v1/BUILD new file mode 100644 index 000000000..43b6553e5 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/networking/v1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "networkpolicy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/networking/v1/interface.go b/vendor/k8s.io/client-go/informers/networking/v1/interface.go new file mode 100644 index 000000000..2ae314a5a --- /dev/null +++ b/vendor/k8s.io/client-go/informers/networking/v1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // NetworkPolicies returns a NetworkPolicyInformer. + NetworkPolicies() NetworkPolicyInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// NetworkPolicies returns a NetworkPolicyInformer. +func (v *version) NetworkPolicies() NetworkPolicyInformer { + return &networkPolicyInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go new file mode 100644 index 000000000..46475df8b --- /dev/null +++ b/vendor/k8s.io/client-go/informers/networking/v1/networkpolicy.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/networking/v1" + networking_v1 "k8s.io/client-go/pkg/apis/networking/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// NetworkPolicyInformer provides access to a shared informer and lister for +// NetworkPolicies. +type NetworkPolicyInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.NetworkPolicyLister +} + +type networkPolicyInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newNetworkPolicyInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.NetworkingV1().NetworkPolicies(meta_v1.NamespaceAll).List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.NetworkingV1().NetworkPolicies(meta_v1.NamespaceAll).Watch(options) + }, + }, + &networking_v1.NetworkPolicy{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *networkPolicyInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&networking_v1.NetworkPolicy{}, newNetworkPolicyInformer) +} + +func (f *networkPolicyInformer) Lister() v1.NetworkPolicyLister { + return v1.NewNetworkPolicyLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/policy/BUILD b/vendor/k8s.io/client-go/informers/policy/BUILD new file mode 100644 index 000000000..1c5bf64c9 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/policy/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/informers/policy/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/policy/interface.go b/vendor/k8s.io/client-go/informers/policy/interface.go new file mode 100644 index 000000000..c03b9bfd7 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/policy/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package policy + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + v1beta1 "k8s.io/client-go/informers/policy/v1beta1" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD b/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD new file mode 100644 index 000000000..f0b34b0c0 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/policy/v1beta1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "poddisruptionbudget.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go new file mode 100644 index 000000000..39b1abbed --- /dev/null +++ b/vendor/k8s.io/client-go/informers/policy/v1beta1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // PodDisruptionBudgets returns a PodDisruptionBudgetInformer. + PodDisruptionBudgets() PodDisruptionBudgetInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// PodDisruptionBudgets returns a PodDisruptionBudgetInformer. +func (v *version) PodDisruptionBudgets() PodDisruptionBudgetInformer { + return &podDisruptionBudgetInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go new file mode 100644 index 000000000..a8258eaf8 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/policy/v1beta1/poddisruptionbudget.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/policy/v1beta1" + policy_v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PodDisruptionBudgetInformer provides access to a shared informer and lister for +// PodDisruptionBudgets. +type PodDisruptionBudgetInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.PodDisruptionBudgetLister +} + +type podDisruptionBudgetInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPodDisruptionBudgetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.PolicyV1beta1().PodDisruptionBudgets(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.PolicyV1beta1().PodDisruptionBudgets(v1.NamespaceAll).Watch(options) + }, + }, + &policy_v1beta1.PodDisruptionBudget{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *podDisruptionBudgetInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&policy_v1beta1.PodDisruptionBudget{}, newPodDisruptionBudgetInformer) +} + +func (f *podDisruptionBudgetInformer) Lister() v1beta1.PodDisruptionBudgetLister { + return v1beta1.NewPodDisruptionBudgetLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/BUILD b/vendor/k8s.io/client-go/informers/rbac/BUILD new file mode 100644 index 000000000..b00082da3 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/informers/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/informers/rbac/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/rbac/interface.go b/vendor/k8s.io/client-go/informers/rbac/interface.go new file mode 100644 index 000000000..5bd1f29d9 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/interface.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package rbac + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + v1alpha1 "k8s.io/client-go/informers/rbac/v1alpha1" + v1beta1 "k8s.io/client-go/informers/rbac/v1beta1" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1alpha1 provides access to shared informers for resources in V1alpha1. + V1alpha1() v1alpha1.Interface + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1alpha1 returns a new v1alpha1.Interface. +func (g *group) V1alpha1() v1alpha1.Interface { + return v1alpha1.New(g.SharedInformerFactory) +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD new file mode 100644 index 000000000..731e9d556 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clusterrole.go", + "clusterrolebinding.go", + "interface.go", + "role.go", + "rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go new file mode 100644 index 000000000..c378311be --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrole.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1" + rbac_v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ClusterRoleInformer provides access to a shared informer and lister for +// ClusterRoles. +type ClusterRoleInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.ClusterRoleLister +} + +type clusterRoleInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1alpha1().ClusterRoles().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1alpha1().ClusterRoles().Watch(options) + }, + }, + &rbac_v1alpha1.ClusterRole{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1alpha1.ClusterRole{}, newClusterRoleInformer) +} + +func (f *clusterRoleInformer) Lister() v1alpha1.ClusterRoleLister { + return v1alpha1.NewClusterRoleLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go new file mode 100644 index 000000000..bf101187a --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/clusterrolebinding.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1" + rbac_v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ClusterRoleBindingInformer provides access to a shared informer and lister for +// ClusterRoleBindings. +type ClusterRoleBindingInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.ClusterRoleBindingLister +} + +type clusterRoleBindingInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1alpha1().ClusterRoleBindings().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1alpha1().ClusterRoleBindings().Watch(options) + }, + }, + &rbac_v1alpha1.ClusterRoleBinding{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1alpha1.ClusterRoleBinding{}, newClusterRoleBindingInformer) +} + +func (f *clusterRoleBindingInformer) Lister() v1alpha1.ClusterRoleBindingLister { + return v1alpha1.NewClusterRoleBindingLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go new file mode 100644 index 000000000..4c84b9a54 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/interface.go @@ -0,0 +1,64 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ClusterRoles returns a ClusterRoleInformer. + ClusterRoles() ClusterRoleInformer + // ClusterRoleBindings returns a ClusterRoleBindingInformer. + ClusterRoleBindings() ClusterRoleBindingInformer + // Roles returns a RoleInformer. + Roles() RoleInformer + // RoleBindings returns a RoleBindingInformer. + RoleBindings() RoleBindingInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// ClusterRoles returns a ClusterRoleInformer. +func (v *version) ClusterRoles() ClusterRoleInformer { + return &clusterRoleInformer{factory: v.SharedInformerFactory} +} + +// ClusterRoleBindings returns a ClusterRoleBindingInformer. +func (v *version) ClusterRoleBindings() ClusterRoleBindingInformer { + return &clusterRoleBindingInformer{factory: v.SharedInformerFactory} +} + +// Roles returns a RoleInformer. +func (v *version) Roles() RoleInformer { + return &roleInformer{factory: v.SharedInformerFactory} +} + +// RoleBindings returns a RoleBindingInformer. +func (v *version) RoleBindings() RoleBindingInformer { + return &roleBindingInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go new file mode 100644 index 000000000..efaf45a73 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/role.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1" + rbac_v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// RoleInformer provides access to a shared informer and lister for +// Roles. +type RoleInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.RoleLister +} + +type roleInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1alpha1().Roles(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1alpha1().Roles(v1.NamespaceAll).Watch(options) + }, + }, + &rbac_v1alpha1.Role{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *roleInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1alpha1.Role{}, newRoleInformer) +} + +func (f *roleInformer) Lister() v1alpha1.RoleLister { + return v1alpha1.NewRoleLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go new file mode 100644 index 000000000..c7b515b61 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1alpha1/rolebinding.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/rbac/v1alpha1" + rbac_v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// RoleBindingInformer provides access to a shared informer and lister for +// RoleBindings. +type RoleBindingInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.RoleBindingLister +} + +type roleBindingInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1alpha1().RoleBindings(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1alpha1().RoleBindings(v1.NamespaceAll).Watch(options) + }, + }, + &rbac_v1alpha1.RoleBinding{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *roleBindingInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1alpha1.RoleBinding{}, newRoleBindingInformer) +} + +func (f *roleBindingInformer) Lister() v1alpha1.RoleBindingLister { + return v1alpha1.NewRoleBindingLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD b/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD new file mode 100644 index 000000000..b03fa26ac --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clusterrole.go", + "clusterrolebinding.go", + "interface.go", + "role.go", + "rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go new file mode 100644 index 000000000..852804b5c --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrole.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/rbac/v1beta1" + rbac_v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ClusterRoleInformer provides access to a shared informer and lister for +// ClusterRoles. +type ClusterRoleInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.ClusterRoleLister +} + +type clusterRoleInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newClusterRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1beta1().ClusterRoles().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1beta1().ClusterRoles().Watch(options) + }, + }, + &rbac_v1beta1.ClusterRole{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *clusterRoleInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1beta1.ClusterRole{}, newClusterRoleInformer) +} + +func (f *clusterRoleInformer) Lister() v1beta1.ClusterRoleLister { + return v1beta1.NewClusterRoleLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go new file mode 100644 index 000000000..1597da390 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/clusterrolebinding.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/rbac/v1beta1" + rbac_v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// ClusterRoleBindingInformer provides access to a shared informer and lister for +// ClusterRoleBindings. +type ClusterRoleBindingInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.ClusterRoleBindingLister +} + +type clusterRoleBindingInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newClusterRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1beta1().ClusterRoleBindings().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1beta1().ClusterRoleBindings().Watch(options) + }, + }, + &rbac_v1beta1.ClusterRoleBinding{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *clusterRoleBindingInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1beta1.ClusterRoleBinding{}, newClusterRoleBindingInformer) +} + +func (f *clusterRoleBindingInformer) Lister() v1beta1.ClusterRoleBindingLister { + return v1beta1.NewClusterRoleBindingLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go new file mode 100644 index 000000000..f8d082a3f --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/interface.go @@ -0,0 +1,64 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ClusterRoles returns a ClusterRoleInformer. + ClusterRoles() ClusterRoleInformer + // ClusterRoleBindings returns a ClusterRoleBindingInformer. + ClusterRoleBindings() ClusterRoleBindingInformer + // Roles returns a RoleInformer. + Roles() RoleInformer + // RoleBindings returns a RoleBindingInformer. + RoleBindings() RoleBindingInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// ClusterRoles returns a ClusterRoleInformer. +func (v *version) ClusterRoles() ClusterRoleInformer { + return &clusterRoleInformer{factory: v.SharedInformerFactory} +} + +// ClusterRoleBindings returns a ClusterRoleBindingInformer. +func (v *version) ClusterRoleBindings() ClusterRoleBindingInformer { + return &clusterRoleBindingInformer{factory: v.SharedInformerFactory} +} + +// Roles returns a RoleInformer. +func (v *version) Roles() RoleInformer { + return &roleInformer{factory: v.SharedInformerFactory} +} + +// RoleBindings returns a RoleBindingInformer. +func (v *version) RoleBindings() RoleBindingInformer { + return &roleBindingInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go new file mode 100644 index 000000000..27a595ab9 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/role.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/rbac/v1beta1" + rbac_v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// RoleInformer provides access to a shared informer and lister for +// Roles. +type RoleInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.RoleLister +} + +type roleInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newRoleInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1beta1().Roles(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1beta1().Roles(v1.NamespaceAll).Watch(options) + }, + }, + &rbac_v1beta1.Role{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *roleInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1beta1.Role{}, newRoleInformer) +} + +func (f *roleInformer) Lister() v1beta1.RoleLister { + return v1beta1.NewRoleLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go new file mode 100644 index 000000000..508f7ec85 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/rbac/v1beta1/rolebinding.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/rbac/v1beta1" + rbac_v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// RoleBindingInformer provides access to a shared informer and lister for +// RoleBindings. +type RoleBindingInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.RoleBindingLister +} + +type roleBindingInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newRoleBindingInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.RbacV1beta1().RoleBindings(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.RbacV1beta1().RoleBindings(v1.NamespaceAll).Watch(options) + }, + }, + &rbac_v1beta1.RoleBinding{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *roleBindingInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&rbac_v1beta1.RoleBinding{}, newRoleBindingInformer) +} + +func (f *roleBindingInformer) Lister() v1beta1.RoleBindingLister { + return v1beta1.NewRoleBindingLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/settings/BUILD b/vendor/k8s.io/client-go/informers/settings/BUILD new file mode 100644 index 000000000..f399ebded --- /dev/null +++ b/vendor/k8s.io/client-go/informers/settings/BUILD @@ -0,0 +1,18 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/informers/settings/v1alpha1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/settings/interface.go b/vendor/k8s.io/client-go/informers/settings/interface.go new file mode 100644 index 000000000..00d051eac --- /dev/null +++ b/vendor/k8s.io/client-go/informers/settings/interface.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package settings + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + v1alpha1 "k8s.io/client-go/informers/settings/v1alpha1" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1alpha1 provides access to shared informers for resources in V1alpha1. + V1alpha1() v1alpha1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1alpha1 returns a new v1alpha1.Interface. +func (g *group) V1alpha1() v1alpha1.Interface { + return v1alpha1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD b/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD new file mode 100644 index 000000000..ef7bbe27d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/settings/v1alpha1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "podpreset.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/settings/v1alpha1/interface.go b/vendor/k8s.io/client-go/informers/settings/v1alpha1/interface.go new file mode 100644 index 000000000..58114f6e2 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/settings/v1alpha1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // PodPresets returns a PodPresetInformer. + PodPresets() PodPresetInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// PodPresets returns a PodPresetInformer. +func (v *version) PodPresets() PodPresetInformer { + return &podPresetInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go b/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go new file mode 100644 index 000000000..6f89088ff --- /dev/null +++ b/vendor/k8s.io/client-go/informers/settings/v1alpha1/podpreset.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/settings/v1alpha1" + settings_v1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// PodPresetInformer provides access to a shared informer and lister for +// PodPresets. +type PodPresetInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.PodPresetLister +} + +type podPresetInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newPodPresetInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.SettingsV1alpha1().PodPresets(v1.NamespaceAll).List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.SettingsV1alpha1().PodPresets(v1.NamespaceAll).Watch(options) + }, + }, + &settings_v1alpha1.PodPreset{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *podPresetInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&settings_v1alpha1.PodPreset{}, newPodPresetInformer) +} + +func (f *podPresetInformer) Lister() v1alpha1.PodPresetLister { + return v1alpha1.NewPodPresetLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/storage/BUILD b/vendor/k8s.io/client-go/informers/storage/BUILD new file mode 100644 index 000000000..0fdea1147 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["interface.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/informers/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/informers/storage/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/storage/interface.go b/vendor/k8s.io/client-go/informers/storage/interface.go new file mode 100644 index 000000000..7f3a69eb2 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/interface.go @@ -0,0 +1,52 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package storage + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + v1 "k8s.io/client-go/informers/storage/v1" + v1beta1 "k8s.io/client-go/informers/storage/v1beta1" +) + +// Interface provides access to each of this group's versions. +type Interface interface { + // V1 provides access to shared informers for resources in V1. + V1() v1.Interface + // V1beta1 provides access to shared informers for resources in V1beta1. + V1beta1() v1beta1.Interface +} + +type group struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &group{f} +} + +// V1 returns a new v1.Interface. +func (g *group) V1() v1.Interface { + return v1.New(g.SharedInformerFactory) +} + +// V1beta1 returns a new v1beta1.Interface. +func (g *group) V1beta1() v1beta1.Interface { + return v1beta1.New(g.SharedInformerFactory) +} diff --git a/vendor/k8s.io/client-go/informers/storage/v1/BUILD b/vendor/k8s.io/client-go/informers/storage/v1/BUILD new file mode 100644 index 000000000..4a4e1687c --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/v1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/storage/v1/interface.go b/vendor/k8s.io/client-go/informers/storage/v1/interface.go new file mode 100644 index 000000000..642d4c494 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/v1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // StorageClasses returns a StorageClassInformer. + StorageClasses() StorageClassInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// StorageClasses returns a StorageClassInformer. +func (v *version) StorageClasses() StorageClassInformer { + return &storageClassInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go b/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go new file mode 100644 index 000000000..13030532d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/v1/storageclass.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1 "k8s.io/client-go/listers/storage/v1" + storage_v1 "k8s.io/client-go/pkg/apis/storage/v1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// StorageClassInformer provides access to a shared informer and lister for +// StorageClasses. +type StorageClassInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1.StorageClassLister +} + +type storageClassInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options meta_v1.ListOptions) (runtime.Object, error) { + return client.StorageV1().StorageClasses().List(options) + }, + WatchFunc: func(options meta_v1.ListOptions) (watch.Interface, error) { + return client.StorageV1().StorageClasses().Watch(options) + }, + }, + &storage_v1.StorageClass{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *storageClassInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&storage_v1.StorageClass{}, newStorageClassInformer) +} + +func (f *storageClassInformer) Lister() v1.StorageClassLister { + return v1.NewStorageClassLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD b/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD new file mode 100644 index 000000000..775f9f32b --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "interface.go", + "storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/informers/internalinterfaces:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/listers/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go new file mode 100644 index 000000000..49e139f63 --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/interface.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // StorageClasses returns a StorageClassInformer. + StorageClasses() StorageClassInformer +} + +type version struct { + internalinterfaces.SharedInformerFactory +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory) Interface { + return &version{f} +} + +// StorageClasses returns a StorageClassInformer. +func (v *version) StorageClasses() StorageClassInformer { + return &storageClassInformer{factory: v.SharedInformerFactory} +} diff --git a/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go new file mode 100644 index 000000000..e34548e0d --- /dev/null +++ b/vendor/k8s.io/client-go/informers/storage/v1beta1/storageclass.go @@ -0,0 +1,68 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by informer-gen + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/listers/storage/v1beta1" + storage_v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" + cache "k8s.io/client-go/tools/cache" + time "time" +) + +// StorageClassInformer provides access to a shared informer and lister for +// StorageClasses. +type StorageClassInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1beta1.StorageClassLister +} + +type storageClassInformer struct { + factory internalinterfaces.SharedInformerFactory +} + +func newStorageClassInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + sharedIndexInformer := cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return client.StorageV1beta1().StorageClasses().List(options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + return client.StorageV1beta1().StorageClasses().Watch(options) + }, + }, + &storage_v1beta1.StorageClass{}, + resyncPeriod, + cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, + ) + + return sharedIndexInformer +} + +func (f *storageClassInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&storage_v1beta1.StorageClass{}, newStorageClassInformer) +} + +func (f *storageClassInformer) Lister() v1beta1.StorageClassLister { + return v1beta1.NewStorageClassLister(f.Informer().GetIndexer()) +} diff --git a/vendor/k8s.io/client-go/kubernetes-sha b/vendor/k8s.io/client-go/kubernetes-sha new file mode 100644 index 000000000..cfe3965ea --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes-sha @@ -0,0 +1 @@ +84dfa6a4e3c655bb3cf63756d1674dff1976fe06 diff --git a/vendor/k8s.io/client-go/kubernetes/BUILD b/vendor/k8s.io/client-go/kubernetes/BUILD new file mode 100644 index 000000000..089edd660 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/BUILD @@ -0,0 +1,43 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clientset.go", + "doc.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/client-go/discovery:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/clientset.go b/vendor/k8s.io/client-go/kubernetes/clientset.go new file mode 100644 index 000000000..8a05da50d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/clientset.go @@ -0,0 +1,570 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubernetes + +import ( + glog "github.com/golang/glog" + discovery "k8s.io/client-go/discovery" + admissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1" + appsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" + authenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1" + authenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1" + authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1" + authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1" + autoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1" + autoscalingv2alpha1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1" + batchv1 "k8s.io/client-go/kubernetes/typed/batch/v1" + batchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1" + certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" + corev1 "k8s.io/client-go/kubernetes/typed/core/v1" + extensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" + networkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1" + policyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1" + rbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1" + rbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1" + settingsv1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1" + storagev1 "k8s.io/client-go/kubernetes/typed/storage/v1" + storagev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1" + rest "k8s.io/client-go/rest" + flowcontrol "k8s.io/client-go/util/flowcontrol" +) + +type Interface interface { + Discovery() discovery.DiscoveryInterface + AdmissionregistrationV1alpha1() admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Interface + // Deprecated: please explicitly pick a version if possible. + Admissionregistration() admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Interface + CoreV1() corev1.CoreV1Interface + // Deprecated: please explicitly pick a version if possible. + Core() corev1.CoreV1Interface + AppsV1beta1() appsv1beta1.AppsV1beta1Interface + // Deprecated: please explicitly pick a version if possible. + Apps() appsv1beta1.AppsV1beta1Interface + AuthenticationV1() authenticationv1.AuthenticationV1Interface + // Deprecated: please explicitly pick a version if possible. + Authentication() authenticationv1.AuthenticationV1Interface + AuthenticationV1beta1() authenticationv1beta1.AuthenticationV1beta1Interface + AuthorizationV1() authorizationv1.AuthorizationV1Interface + // Deprecated: please explicitly pick a version if possible. + Authorization() authorizationv1.AuthorizationV1Interface + AuthorizationV1beta1() authorizationv1beta1.AuthorizationV1beta1Interface + AutoscalingV1() autoscalingv1.AutoscalingV1Interface + // Deprecated: please explicitly pick a version if possible. + Autoscaling() autoscalingv1.AutoscalingV1Interface + AutoscalingV2alpha1() autoscalingv2alpha1.AutoscalingV2alpha1Interface + BatchV1() batchv1.BatchV1Interface + // Deprecated: please explicitly pick a version if possible. + Batch() batchv1.BatchV1Interface + BatchV2alpha1() batchv2alpha1.BatchV2alpha1Interface + CertificatesV1beta1() certificatesv1beta1.CertificatesV1beta1Interface + // Deprecated: please explicitly pick a version if possible. + Certificates() certificatesv1beta1.CertificatesV1beta1Interface + ExtensionsV1beta1() extensionsv1beta1.ExtensionsV1beta1Interface + // Deprecated: please explicitly pick a version if possible. + Extensions() extensionsv1beta1.ExtensionsV1beta1Interface + NetworkingV1() networkingv1.NetworkingV1Interface + // Deprecated: please explicitly pick a version if possible. + Networking() networkingv1.NetworkingV1Interface + PolicyV1beta1() policyv1beta1.PolicyV1beta1Interface + // Deprecated: please explicitly pick a version if possible. + Policy() policyv1beta1.PolicyV1beta1Interface + RbacV1beta1() rbacv1beta1.RbacV1beta1Interface + // Deprecated: please explicitly pick a version if possible. + Rbac() rbacv1beta1.RbacV1beta1Interface + RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface + SettingsV1alpha1() settingsv1alpha1.SettingsV1alpha1Interface + // Deprecated: please explicitly pick a version if possible. + Settings() settingsv1alpha1.SettingsV1alpha1Interface + StorageV1beta1() storagev1beta1.StorageV1beta1Interface + StorageV1() storagev1.StorageV1Interface + // Deprecated: please explicitly pick a version if possible. + Storage() storagev1.StorageV1Interface +} + +// Clientset contains the clients for groups. Each group has exactly one +// version included in a Clientset. +type Clientset struct { + *discovery.DiscoveryClient + *admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Client + *corev1.CoreV1Client + *appsv1beta1.AppsV1beta1Client + *authenticationv1.AuthenticationV1Client + *authenticationv1beta1.AuthenticationV1beta1Client + *authorizationv1.AuthorizationV1Client + *authorizationv1beta1.AuthorizationV1beta1Client + *autoscalingv1.AutoscalingV1Client + *autoscalingv2alpha1.AutoscalingV2alpha1Client + *batchv1.BatchV1Client + *batchv2alpha1.BatchV2alpha1Client + *certificatesv1beta1.CertificatesV1beta1Client + *extensionsv1beta1.ExtensionsV1beta1Client + *networkingv1.NetworkingV1Client + *policyv1beta1.PolicyV1beta1Client + *rbacv1beta1.RbacV1beta1Client + *rbacv1alpha1.RbacV1alpha1Client + *settingsv1alpha1.SettingsV1alpha1Client + *storagev1beta1.StorageV1beta1Client + *storagev1.StorageV1Client +} + +// AdmissionregistrationV1alpha1 retrieves the AdmissionregistrationV1alpha1Client +func (c *Clientset) AdmissionregistrationV1alpha1() admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Interface { + if c == nil { + return nil + } + return c.AdmissionregistrationV1alpha1Client +} + +// Deprecated: Admissionregistration retrieves the default version of AdmissionregistrationClient. +// Please explicitly pick a version. +func (c *Clientset) Admissionregistration() admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Interface { + if c == nil { + return nil + } + return c.AdmissionregistrationV1alpha1Client +} + +// CoreV1 retrieves the CoreV1Client +func (c *Clientset) CoreV1() corev1.CoreV1Interface { + if c == nil { + return nil + } + return c.CoreV1Client +} + +// Deprecated: Core retrieves the default version of CoreClient. +// Please explicitly pick a version. +func (c *Clientset) Core() corev1.CoreV1Interface { + if c == nil { + return nil + } + return c.CoreV1Client +} + +// AppsV1beta1 retrieves the AppsV1beta1Client +func (c *Clientset) AppsV1beta1() appsv1beta1.AppsV1beta1Interface { + if c == nil { + return nil + } + return c.AppsV1beta1Client +} + +// Deprecated: Apps retrieves the default version of AppsClient. +// Please explicitly pick a version. +func (c *Clientset) Apps() appsv1beta1.AppsV1beta1Interface { + if c == nil { + return nil + } + return c.AppsV1beta1Client +} + +// AuthenticationV1 retrieves the AuthenticationV1Client +func (c *Clientset) AuthenticationV1() authenticationv1.AuthenticationV1Interface { + if c == nil { + return nil + } + return c.AuthenticationV1Client +} + +// Deprecated: Authentication retrieves the default version of AuthenticationClient. +// Please explicitly pick a version. +func (c *Clientset) Authentication() authenticationv1.AuthenticationV1Interface { + if c == nil { + return nil + } + return c.AuthenticationV1Client +} + +// AuthenticationV1beta1 retrieves the AuthenticationV1beta1Client +func (c *Clientset) AuthenticationV1beta1() authenticationv1beta1.AuthenticationV1beta1Interface { + if c == nil { + return nil + } + return c.AuthenticationV1beta1Client +} + +// AuthorizationV1 retrieves the AuthorizationV1Client +func (c *Clientset) AuthorizationV1() authorizationv1.AuthorizationV1Interface { + if c == nil { + return nil + } + return c.AuthorizationV1Client +} + +// Deprecated: Authorization retrieves the default version of AuthorizationClient. +// Please explicitly pick a version. +func (c *Clientset) Authorization() authorizationv1.AuthorizationV1Interface { + if c == nil { + return nil + } + return c.AuthorizationV1Client +} + +// AuthorizationV1beta1 retrieves the AuthorizationV1beta1Client +func (c *Clientset) AuthorizationV1beta1() authorizationv1beta1.AuthorizationV1beta1Interface { + if c == nil { + return nil + } + return c.AuthorizationV1beta1Client +} + +// AutoscalingV1 retrieves the AutoscalingV1Client +func (c *Clientset) AutoscalingV1() autoscalingv1.AutoscalingV1Interface { + if c == nil { + return nil + } + return c.AutoscalingV1Client +} + +// Deprecated: Autoscaling retrieves the default version of AutoscalingClient. +// Please explicitly pick a version. +func (c *Clientset) Autoscaling() autoscalingv1.AutoscalingV1Interface { + if c == nil { + return nil + } + return c.AutoscalingV1Client +} + +// AutoscalingV2alpha1 retrieves the AutoscalingV2alpha1Client +func (c *Clientset) AutoscalingV2alpha1() autoscalingv2alpha1.AutoscalingV2alpha1Interface { + if c == nil { + return nil + } + return c.AutoscalingV2alpha1Client +} + +// BatchV1 retrieves the BatchV1Client +func (c *Clientset) BatchV1() batchv1.BatchV1Interface { + if c == nil { + return nil + } + return c.BatchV1Client +} + +// Deprecated: Batch retrieves the default version of BatchClient. +// Please explicitly pick a version. +func (c *Clientset) Batch() batchv1.BatchV1Interface { + if c == nil { + return nil + } + return c.BatchV1Client +} + +// BatchV2alpha1 retrieves the BatchV2alpha1Client +func (c *Clientset) BatchV2alpha1() batchv2alpha1.BatchV2alpha1Interface { + if c == nil { + return nil + } + return c.BatchV2alpha1Client +} + +// CertificatesV1beta1 retrieves the CertificatesV1beta1Client +func (c *Clientset) CertificatesV1beta1() certificatesv1beta1.CertificatesV1beta1Interface { + if c == nil { + return nil + } + return c.CertificatesV1beta1Client +} + +// Deprecated: Certificates retrieves the default version of CertificatesClient. +// Please explicitly pick a version. +func (c *Clientset) Certificates() certificatesv1beta1.CertificatesV1beta1Interface { + if c == nil { + return nil + } + return c.CertificatesV1beta1Client +} + +// ExtensionsV1beta1 retrieves the ExtensionsV1beta1Client +func (c *Clientset) ExtensionsV1beta1() extensionsv1beta1.ExtensionsV1beta1Interface { + if c == nil { + return nil + } + return c.ExtensionsV1beta1Client +} + +// Deprecated: Extensions retrieves the default version of ExtensionsClient. +// Please explicitly pick a version. +func (c *Clientset) Extensions() extensionsv1beta1.ExtensionsV1beta1Interface { + if c == nil { + return nil + } + return c.ExtensionsV1beta1Client +} + +// NetworkingV1 retrieves the NetworkingV1Client +func (c *Clientset) NetworkingV1() networkingv1.NetworkingV1Interface { + if c == nil { + return nil + } + return c.NetworkingV1Client +} + +// Deprecated: Networking retrieves the default version of NetworkingClient. +// Please explicitly pick a version. +func (c *Clientset) Networking() networkingv1.NetworkingV1Interface { + if c == nil { + return nil + } + return c.NetworkingV1Client +} + +// PolicyV1beta1 retrieves the PolicyV1beta1Client +func (c *Clientset) PolicyV1beta1() policyv1beta1.PolicyV1beta1Interface { + if c == nil { + return nil + } + return c.PolicyV1beta1Client +} + +// Deprecated: Policy retrieves the default version of PolicyClient. +// Please explicitly pick a version. +func (c *Clientset) Policy() policyv1beta1.PolicyV1beta1Interface { + if c == nil { + return nil + } + return c.PolicyV1beta1Client +} + +// RbacV1beta1 retrieves the RbacV1beta1Client +func (c *Clientset) RbacV1beta1() rbacv1beta1.RbacV1beta1Interface { + if c == nil { + return nil + } + return c.RbacV1beta1Client +} + +// Deprecated: Rbac retrieves the default version of RbacClient. +// Please explicitly pick a version. +func (c *Clientset) Rbac() rbacv1beta1.RbacV1beta1Interface { + if c == nil { + return nil + } + return c.RbacV1beta1Client +} + +// RbacV1alpha1 retrieves the RbacV1alpha1Client +func (c *Clientset) RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface { + if c == nil { + return nil + } + return c.RbacV1alpha1Client +} + +// SettingsV1alpha1 retrieves the SettingsV1alpha1Client +func (c *Clientset) SettingsV1alpha1() settingsv1alpha1.SettingsV1alpha1Interface { + if c == nil { + return nil + } + return c.SettingsV1alpha1Client +} + +// Deprecated: Settings retrieves the default version of SettingsClient. +// Please explicitly pick a version. +func (c *Clientset) Settings() settingsv1alpha1.SettingsV1alpha1Interface { + if c == nil { + return nil + } + return c.SettingsV1alpha1Client +} + +// StorageV1beta1 retrieves the StorageV1beta1Client +func (c *Clientset) StorageV1beta1() storagev1beta1.StorageV1beta1Interface { + if c == nil { + return nil + } + return c.StorageV1beta1Client +} + +// StorageV1 retrieves the StorageV1Client +func (c *Clientset) StorageV1() storagev1.StorageV1Interface { + if c == nil { + return nil + } + return c.StorageV1Client +} + +// Deprecated: Storage retrieves the default version of StorageClient. +// Please explicitly pick a version. +func (c *Clientset) Storage() storagev1.StorageV1Interface { + if c == nil { + return nil + } + return c.StorageV1Client +} + +// Discovery retrieves the DiscoveryClient +func (c *Clientset) Discovery() discovery.DiscoveryInterface { + if c == nil { + return nil + } + return c.DiscoveryClient +} + +// NewForConfig creates a new Clientset for the given config. +func NewForConfig(c *rest.Config) (*Clientset, error) { + configShallowCopy := *c + if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { + configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) + } + var cs Clientset + var err error + cs.AdmissionregistrationV1alpha1Client, err = admissionregistrationv1alpha1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.CoreV1Client, err = corev1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AppsV1beta1Client, err = appsv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AuthenticationV1Client, err = authenticationv1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AuthenticationV1beta1Client, err = authenticationv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AuthorizationV1Client, err = authorizationv1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AuthorizationV1beta1Client, err = authorizationv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AutoscalingV1Client, err = autoscalingv1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.AutoscalingV2alpha1Client, err = autoscalingv2alpha1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.BatchV1Client, err = batchv1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.BatchV2alpha1Client, err = batchv2alpha1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.CertificatesV1beta1Client, err = certificatesv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.ExtensionsV1beta1Client, err = extensionsv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.NetworkingV1Client, err = networkingv1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.PolicyV1beta1Client, err = policyv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.RbacV1beta1Client, err = rbacv1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.RbacV1alpha1Client, err = rbacv1alpha1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.SettingsV1alpha1Client, err = settingsv1alpha1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.StorageV1beta1Client, err = storagev1beta1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + cs.StorageV1Client, err = storagev1.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + + cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) + if err != nil { + glog.Errorf("failed to create the DiscoveryClient: %v", err) + return nil, err + } + return &cs, nil +} + +// NewForConfigOrDie creates a new Clientset for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *Clientset { + var cs Clientset + cs.AdmissionregistrationV1alpha1Client = admissionregistrationv1alpha1.NewForConfigOrDie(c) + cs.CoreV1Client = corev1.NewForConfigOrDie(c) + cs.AppsV1beta1Client = appsv1beta1.NewForConfigOrDie(c) + cs.AuthenticationV1Client = authenticationv1.NewForConfigOrDie(c) + cs.AuthenticationV1beta1Client = authenticationv1beta1.NewForConfigOrDie(c) + cs.AuthorizationV1Client = authorizationv1.NewForConfigOrDie(c) + cs.AuthorizationV1beta1Client = authorizationv1beta1.NewForConfigOrDie(c) + cs.AutoscalingV1Client = autoscalingv1.NewForConfigOrDie(c) + cs.AutoscalingV2alpha1Client = autoscalingv2alpha1.NewForConfigOrDie(c) + cs.BatchV1Client = batchv1.NewForConfigOrDie(c) + cs.BatchV2alpha1Client = batchv2alpha1.NewForConfigOrDie(c) + cs.CertificatesV1beta1Client = certificatesv1beta1.NewForConfigOrDie(c) + cs.ExtensionsV1beta1Client = extensionsv1beta1.NewForConfigOrDie(c) + cs.NetworkingV1Client = networkingv1.NewForConfigOrDie(c) + cs.PolicyV1beta1Client = policyv1beta1.NewForConfigOrDie(c) + cs.RbacV1beta1Client = rbacv1beta1.NewForConfigOrDie(c) + cs.RbacV1alpha1Client = rbacv1alpha1.NewForConfigOrDie(c) + cs.SettingsV1alpha1Client = settingsv1alpha1.NewForConfigOrDie(c) + cs.StorageV1beta1Client = storagev1beta1.NewForConfigOrDie(c) + cs.StorageV1Client = storagev1.NewForConfigOrDie(c) + + cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) + return &cs +} + +// New creates a new Clientset for the given RESTClient. +func New(c rest.Interface) *Clientset { + var cs Clientset + cs.AdmissionregistrationV1alpha1Client = admissionregistrationv1alpha1.New(c) + cs.CoreV1Client = corev1.New(c) + cs.AppsV1beta1Client = appsv1beta1.New(c) + cs.AuthenticationV1Client = authenticationv1.New(c) + cs.AuthenticationV1beta1Client = authenticationv1beta1.New(c) + cs.AuthorizationV1Client = authorizationv1.New(c) + cs.AuthorizationV1beta1Client = authorizationv1beta1.New(c) + cs.AutoscalingV1Client = autoscalingv1.New(c) + cs.AutoscalingV2alpha1Client = autoscalingv2alpha1.New(c) + cs.BatchV1Client = batchv1.New(c) + cs.BatchV2alpha1Client = batchv2alpha1.New(c) + cs.CertificatesV1beta1Client = certificatesv1beta1.New(c) + cs.ExtensionsV1beta1Client = extensionsv1beta1.New(c) + cs.NetworkingV1Client = networkingv1.New(c) + cs.PolicyV1beta1Client = policyv1beta1.New(c) + cs.RbacV1beta1Client = rbacv1beta1.New(c) + cs.RbacV1alpha1Client = rbacv1alpha1.New(c) + cs.SettingsV1alpha1Client = settingsv1alpha1.New(c) + cs.StorageV1beta1Client = storagev1beta1.New(c) + cs.StorageV1Client = storagev1.New(c) + + cs.DiscoveryClient = discovery.NewDiscoveryClient(c) + return &cs +} diff --git a/vendor/k8s.io/client-go/kubernetes/doc.go b/vendor/k8s.io/client-go/kubernetes/doc.go new file mode 100644 index 000000000..2af84c669 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated clientset. +package kubernetes diff --git a/vendor/k8s.io/client-go/kubernetes/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/fake/BUILD new file mode 100644 index 000000000..9954286f7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/fake/BUILD @@ -0,0 +1,89 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clientset_generated.go", + "doc.go", + "register.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/discovery:go_default_library", + "//vendor/k8s.io/client-go/discovery/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go b/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go new file mode 100644 index 000000000..38303e3ed --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go @@ -0,0 +1,269 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/discovery" + fakediscovery "k8s.io/client-go/discovery/fake" + kubernetes "k8s.io/client-go/kubernetes" + admissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1" + fakeadmissionregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake" + appsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" + fakeappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake" + authenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1" + fakeauthenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1/fake" + authenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1" + fakeauthenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake" + authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1" + fakeauthorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1/fake" + authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1" + fakeauthorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake" + autoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1" + fakeautoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake" + autoscalingv2alpha1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1" + fakeautoscalingv2alpha1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake" + batchv1 "k8s.io/client-go/kubernetes/typed/batch/v1" + fakebatchv1 "k8s.io/client-go/kubernetes/typed/batch/v1/fake" + batchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1" + fakebatchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake" + certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" + fakecertificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake" + corev1 "k8s.io/client-go/kubernetes/typed/core/v1" + fakecorev1 "k8s.io/client-go/kubernetes/typed/core/v1/fake" + extensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" + fakeextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake" + networkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1" + fakenetworkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1/fake" + policyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1" + fakepolicyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake" + rbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1" + fakerbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake" + rbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1" + fakerbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake" + settingsv1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1" + fakesettingsv1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake" + storagev1 "k8s.io/client-go/kubernetes/typed/storage/v1" + fakestoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1/fake" + storagev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1" + fakestoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake" + "k8s.io/client-go/testing" +) + +// NewSimpleClientset returns a clientset that will respond with the provided objects. +// It's backed by a very simple object tracker that processes creates, updates and deletions as-is, +// without applying any validations and/or defaults. It shouldn't be considered a replacement +// for a real clientset and is mostly useful in simple unit tests. +func NewSimpleClientset(objects ...runtime.Object) *Clientset { + o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) + for _, obj := range objects { + if err := o.Add(obj); err != nil { + panic(err) + } + } + + fakePtr := testing.Fake{} + fakePtr.AddReactor("*", "*", testing.ObjectReaction(o)) + + fakePtr.AddWatchReactor("*", testing.DefaultWatchReactor(watch.NewFake(), nil)) + + return &Clientset{fakePtr} +} + +// Clientset implements kubernetes.Interface. Meant to be embedded into a +// struct to get a default implementation. This makes faking out just the method +// you want to test easier. +type Clientset struct { + testing.Fake +} + +func (c *Clientset) Discovery() discovery.DiscoveryInterface { + return &fakediscovery.FakeDiscovery{Fake: &c.Fake} +} + +var _ kubernetes.Interface = &Clientset{} + +// AdmissionregistrationV1alpha1 retrieves the AdmissionregistrationV1alpha1Client +func (c *Clientset) AdmissionregistrationV1alpha1() admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Interface { + return &fakeadmissionregistrationv1alpha1.FakeAdmissionregistrationV1alpha1{Fake: &c.Fake} +} + +// Admissionregistration retrieves the AdmissionregistrationV1alpha1Client +func (c *Clientset) Admissionregistration() admissionregistrationv1alpha1.AdmissionregistrationV1alpha1Interface { + return &fakeadmissionregistrationv1alpha1.FakeAdmissionregistrationV1alpha1{Fake: &c.Fake} +} + +// CoreV1 retrieves the CoreV1Client +func (c *Clientset) CoreV1() corev1.CoreV1Interface { + return &fakecorev1.FakeCoreV1{Fake: &c.Fake} +} + +// Core retrieves the CoreV1Client +func (c *Clientset) Core() corev1.CoreV1Interface { + return &fakecorev1.FakeCoreV1{Fake: &c.Fake} +} + +// AppsV1beta1 retrieves the AppsV1beta1Client +func (c *Clientset) AppsV1beta1() appsv1beta1.AppsV1beta1Interface { + return &fakeappsv1beta1.FakeAppsV1beta1{Fake: &c.Fake} +} + +// Apps retrieves the AppsV1beta1Client +func (c *Clientset) Apps() appsv1beta1.AppsV1beta1Interface { + return &fakeappsv1beta1.FakeAppsV1beta1{Fake: &c.Fake} +} + +// AuthenticationV1 retrieves the AuthenticationV1Client +func (c *Clientset) AuthenticationV1() authenticationv1.AuthenticationV1Interface { + return &fakeauthenticationv1.FakeAuthenticationV1{Fake: &c.Fake} +} + +// Authentication retrieves the AuthenticationV1Client +func (c *Clientset) Authentication() authenticationv1.AuthenticationV1Interface { + return &fakeauthenticationv1.FakeAuthenticationV1{Fake: &c.Fake} +} + +// AuthenticationV1beta1 retrieves the AuthenticationV1beta1Client +func (c *Clientset) AuthenticationV1beta1() authenticationv1beta1.AuthenticationV1beta1Interface { + return &fakeauthenticationv1beta1.FakeAuthenticationV1beta1{Fake: &c.Fake} +} + +// AuthorizationV1 retrieves the AuthorizationV1Client +func (c *Clientset) AuthorizationV1() authorizationv1.AuthorizationV1Interface { + return &fakeauthorizationv1.FakeAuthorizationV1{Fake: &c.Fake} +} + +// Authorization retrieves the AuthorizationV1Client +func (c *Clientset) Authorization() authorizationv1.AuthorizationV1Interface { + return &fakeauthorizationv1.FakeAuthorizationV1{Fake: &c.Fake} +} + +// AuthorizationV1beta1 retrieves the AuthorizationV1beta1Client +func (c *Clientset) AuthorizationV1beta1() authorizationv1beta1.AuthorizationV1beta1Interface { + return &fakeauthorizationv1beta1.FakeAuthorizationV1beta1{Fake: &c.Fake} +} + +// AutoscalingV1 retrieves the AutoscalingV1Client +func (c *Clientset) AutoscalingV1() autoscalingv1.AutoscalingV1Interface { + return &fakeautoscalingv1.FakeAutoscalingV1{Fake: &c.Fake} +} + +// Autoscaling retrieves the AutoscalingV1Client +func (c *Clientset) Autoscaling() autoscalingv1.AutoscalingV1Interface { + return &fakeautoscalingv1.FakeAutoscalingV1{Fake: &c.Fake} +} + +// AutoscalingV2alpha1 retrieves the AutoscalingV2alpha1Client +func (c *Clientset) AutoscalingV2alpha1() autoscalingv2alpha1.AutoscalingV2alpha1Interface { + return &fakeautoscalingv2alpha1.FakeAutoscalingV2alpha1{Fake: &c.Fake} +} + +// BatchV1 retrieves the BatchV1Client +func (c *Clientset) BatchV1() batchv1.BatchV1Interface { + return &fakebatchv1.FakeBatchV1{Fake: &c.Fake} +} + +// Batch retrieves the BatchV1Client +func (c *Clientset) Batch() batchv1.BatchV1Interface { + return &fakebatchv1.FakeBatchV1{Fake: &c.Fake} +} + +// BatchV2alpha1 retrieves the BatchV2alpha1Client +func (c *Clientset) BatchV2alpha1() batchv2alpha1.BatchV2alpha1Interface { + return &fakebatchv2alpha1.FakeBatchV2alpha1{Fake: &c.Fake} +} + +// CertificatesV1beta1 retrieves the CertificatesV1beta1Client +func (c *Clientset) CertificatesV1beta1() certificatesv1beta1.CertificatesV1beta1Interface { + return &fakecertificatesv1beta1.FakeCertificatesV1beta1{Fake: &c.Fake} +} + +// Certificates retrieves the CertificatesV1beta1Client +func (c *Clientset) Certificates() certificatesv1beta1.CertificatesV1beta1Interface { + return &fakecertificatesv1beta1.FakeCertificatesV1beta1{Fake: &c.Fake} +} + +// ExtensionsV1beta1 retrieves the ExtensionsV1beta1Client +func (c *Clientset) ExtensionsV1beta1() extensionsv1beta1.ExtensionsV1beta1Interface { + return &fakeextensionsv1beta1.FakeExtensionsV1beta1{Fake: &c.Fake} +} + +// Extensions retrieves the ExtensionsV1beta1Client +func (c *Clientset) Extensions() extensionsv1beta1.ExtensionsV1beta1Interface { + return &fakeextensionsv1beta1.FakeExtensionsV1beta1{Fake: &c.Fake} +} + +// NetworkingV1 retrieves the NetworkingV1Client +func (c *Clientset) NetworkingV1() networkingv1.NetworkingV1Interface { + return &fakenetworkingv1.FakeNetworkingV1{Fake: &c.Fake} +} + +// Networking retrieves the NetworkingV1Client +func (c *Clientset) Networking() networkingv1.NetworkingV1Interface { + return &fakenetworkingv1.FakeNetworkingV1{Fake: &c.Fake} +} + +// PolicyV1beta1 retrieves the PolicyV1beta1Client +func (c *Clientset) PolicyV1beta1() policyv1beta1.PolicyV1beta1Interface { + return &fakepolicyv1beta1.FakePolicyV1beta1{Fake: &c.Fake} +} + +// Policy retrieves the PolicyV1beta1Client +func (c *Clientset) Policy() policyv1beta1.PolicyV1beta1Interface { + return &fakepolicyv1beta1.FakePolicyV1beta1{Fake: &c.Fake} +} + +// RbacV1beta1 retrieves the RbacV1beta1Client +func (c *Clientset) RbacV1beta1() rbacv1beta1.RbacV1beta1Interface { + return &fakerbacv1beta1.FakeRbacV1beta1{Fake: &c.Fake} +} + +// Rbac retrieves the RbacV1beta1Client +func (c *Clientset) Rbac() rbacv1beta1.RbacV1beta1Interface { + return &fakerbacv1beta1.FakeRbacV1beta1{Fake: &c.Fake} +} + +// RbacV1alpha1 retrieves the RbacV1alpha1Client +func (c *Clientset) RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface { + return &fakerbacv1alpha1.FakeRbacV1alpha1{Fake: &c.Fake} +} + +// SettingsV1alpha1 retrieves the SettingsV1alpha1Client +func (c *Clientset) SettingsV1alpha1() settingsv1alpha1.SettingsV1alpha1Interface { + return &fakesettingsv1alpha1.FakeSettingsV1alpha1{Fake: &c.Fake} +} + +// Settings retrieves the SettingsV1alpha1Client +func (c *Clientset) Settings() settingsv1alpha1.SettingsV1alpha1Interface { + return &fakesettingsv1alpha1.FakeSettingsV1alpha1{Fake: &c.Fake} +} + +// StorageV1beta1 retrieves the StorageV1beta1Client +func (c *Clientset) StorageV1beta1() storagev1beta1.StorageV1beta1Interface { + return &fakestoragev1beta1.FakeStorageV1beta1{Fake: &c.Fake} +} + +// StorageV1 retrieves the StorageV1Client +func (c *Clientset) StorageV1() storagev1.StorageV1Interface { + return &fakestoragev1.FakeStorageV1{Fake: &c.Fake} +} + +// Storage retrieves the StorageV1Client +func (c *Clientset) Storage() storagev1.StorageV1Interface { + return &fakestoragev1.FakeStorageV1{Fake: &c.Fake} +} diff --git a/vendor/k8s.io/client-go/kubernetes/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/fake/doc.go new file mode 100644 index 000000000..5f565b3c8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated fake clientset. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/fake/register.go b/vendor/k8s.io/client-go/kubernetes/fake/register.go new file mode 100644 index 000000000..2b3e1667e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/fake/register.go @@ -0,0 +1,91 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + corev1 "k8s.io/client-go/pkg/api/v1" + admissionregistrationv1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + appsv1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + authenticationv1 "k8s.io/client-go/pkg/apis/authentication/v1" + authenticationv1beta1 "k8s.io/client-go/pkg/apis/authentication/v1beta1" + authorizationv1 "k8s.io/client-go/pkg/apis/authorization/v1" + authorizationv1beta1 "k8s.io/client-go/pkg/apis/authorization/v1beta1" + autoscalingv1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + autoscalingv2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + batchv1 "k8s.io/client-go/pkg/apis/batch/v1" + batchv2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + certificatesv1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + extensionsv1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + networkingv1 "k8s.io/client-go/pkg/apis/networking/v1" + policyv1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + rbacv1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rbacv1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + settingsv1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + storagev1 "k8s.io/client-go/pkg/apis/storage/v1" + storagev1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" +) + +var scheme = runtime.NewScheme() +var codecs = serializer.NewCodecFactory(scheme) +var parameterCodec = runtime.NewParameterCodec(scheme) + +func init() { + v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) + AddToScheme(scheme) +} + +// AddToScheme adds all types of this clientset into the given scheme. This allows composition +// of clientsets, like in: +// +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kuberentes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) +// +// kclientset, _ := kubernetes.NewForConfig(c) +// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// +// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types +// correctly. +func AddToScheme(scheme *runtime.Scheme) { + admissionregistrationv1alpha1.AddToScheme(scheme) + corev1.AddToScheme(scheme) + appsv1beta1.AddToScheme(scheme) + authenticationv1.AddToScheme(scheme) + authenticationv1beta1.AddToScheme(scheme) + authorizationv1.AddToScheme(scheme) + authorizationv1beta1.AddToScheme(scheme) + autoscalingv1.AddToScheme(scheme) + autoscalingv2alpha1.AddToScheme(scheme) + batchv1.AddToScheme(scheme) + batchv2alpha1.AddToScheme(scheme) + certificatesv1beta1.AddToScheme(scheme) + extensionsv1beta1.AddToScheme(scheme) + networkingv1.AddToScheme(scheme) + policyv1beta1.AddToScheme(scheme) + rbacv1beta1.AddToScheme(scheme) + rbacv1alpha1.AddToScheme(scheme) + settingsv1alpha1.AddToScheme(scheme) + storagev1beta1.AddToScheme(scheme) + storagev1.AddToScheme(scheme) + +} diff --git a/vendor/k8s.io/client-go/kubernetes/scheme/BUILD b/vendor/k8s.io/client-go/kubernetes/scheme/BUILD new file mode 100644 index 000000000..93447ef07 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/scheme/BUILD @@ -0,0 +1,43 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/scheme/doc.go b/vendor/k8s.io/client-go/kubernetes/scheme/doc.go new file mode 100644 index 000000000..5d8ec824f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/scheme/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package contains the scheme of the automatically generated clientset. +package scheme diff --git a/vendor/k8s.io/client-go/kubernetes/scheme/register.go b/vendor/k8s.io/client-go/kubernetes/scheme/register.go new file mode 100644 index 000000000..c4af63a46 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/scheme/register.go @@ -0,0 +1,91 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package scheme + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + schema "k8s.io/apimachinery/pkg/runtime/schema" + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + corev1 "k8s.io/client-go/pkg/api/v1" + admissionregistrationv1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + appsv1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + authenticationv1 "k8s.io/client-go/pkg/apis/authentication/v1" + authenticationv1beta1 "k8s.io/client-go/pkg/apis/authentication/v1beta1" + authorizationv1 "k8s.io/client-go/pkg/apis/authorization/v1" + authorizationv1beta1 "k8s.io/client-go/pkg/apis/authorization/v1beta1" + autoscalingv1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + autoscalingv2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + batchv1 "k8s.io/client-go/pkg/apis/batch/v1" + batchv2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + certificatesv1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + extensionsv1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + networkingv1 "k8s.io/client-go/pkg/apis/networking/v1" + policyv1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + rbacv1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rbacv1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + settingsv1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + storagev1 "k8s.io/client-go/pkg/apis/storage/v1" + storagev1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" +) + +var Scheme = runtime.NewScheme() +var Codecs = serializer.NewCodecFactory(Scheme) +var ParameterCodec = runtime.NewParameterCodec(Scheme) + +func init() { + v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) + AddToScheme(Scheme) +} + +// AddToScheme adds all types of this clientset into the given scheme. This allows composition +// of clientsets, like in: +// +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kuberentes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) +// +// kclientset, _ := kubernetes.NewForConfig(c) +// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// +// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types +// correctly. +func AddToScheme(scheme *runtime.Scheme) { + admissionregistrationv1alpha1.AddToScheme(scheme) + corev1.AddToScheme(scheme) + appsv1beta1.AddToScheme(scheme) + authenticationv1.AddToScheme(scheme) + authenticationv1beta1.AddToScheme(scheme) + authorizationv1.AddToScheme(scheme) + authorizationv1beta1.AddToScheme(scheme) + autoscalingv1.AddToScheme(scheme) + autoscalingv2alpha1.AddToScheme(scheme) + batchv1.AddToScheme(scheme) + batchv2alpha1.AddToScheme(scheme) + certificatesv1beta1.AddToScheme(scheme) + extensionsv1beta1.AddToScheme(scheme) + networkingv1.AddToScheme(scheme) + policyv1beta1.AddToScheme(scheme) + rbacv1beta1.AddToScheme(scheme) + rbacv1alpha1.AddToScheme(scheme) + settingsv1alpha1.AddToScheme(scheme) + storagev1beta1.AddToScheme(scheme) + storagev1.AddToScheme(scheme) + +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD new file mode 100644 index 000000000..e51dda3df --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "admissionregistration_client.go", + "doc.go", + "externaladmissionhookconfiguration.go", + "generated_expansion.go", + "initializerconfiguration.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go new file mode 100644 index 000000000..1ac48c8f3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/admissionregistration_client.go @@ -0,0 +1,93 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + rest "k8s.io/client-go/rest" +) + +type AdmissionregistrationV1alpha1Interface interface { + RESTClient() rest.Interface + ExternalAdmissionHookConfigurationsGetter + InitializerConfigurationsGetter +} + +// AdmissionregistrationV1alpha1Client is used to interact with features provided by the admissionregistration.k8s.io group. +type AdmissionregistrationV1alpha1Client struct { + restClient rest.Interface +} + +func (c *AdmissionregistrationV1alpha1Client) ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInterface { + return newExternalAdmissionHookConfigurations(c) +} + +func (c *AdmissionregistrationV1alpha1Client) InitializerConfigurations() InitializerConfigurationInterface { + return newInitializerConfigurations(c) +} + +// NewForConfig creates a new AdmissionregistrationV1alpha1Client for the given config. +func NewForConfig(c *rest.Config) (*AdmissionregistrationV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AdmissionregistrationV1alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new AdmissionregistrationV1alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AdmissionregistrationV1alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AdmissionregistrationV1alpha1Client for the given RESTClient. +func New(c rest.Interface) *AdmissionregistrationV1alpha1Client { + return &AdmissionregistrationV1alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AdmissionregistrationV1alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/doc.go new file mode 100644 index 000000000..ba8d10d3b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go new file mode 100644 index 000000000..08d68dd0d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// ExternalAdmissionHookConfigurationsGetter has a method to return a ExternalAdmissionHookConfigurationInterface. +// A group's client should implement this interface. +type ExternalAdmissionHookConfigurationsGetter interface { + ExternalAdmissionHookConfigurations() ExternalAdmissionHookConfigurationInterface +} + +// ExternalAdmissionHookConfigurationInterface has methods to work with ExternalAdmissionHookConfiguration resources. +type ExternalAdmissionHookConfigurationInterface interface { + Create(*v1alpha1.ExternalAdmissionHookConfiguration) (*v1alpha1.ExternalAdmissionHookConfiguration, error) + Update(*v1alpha1.ExternalAdmissionHookConfiguration) (*v1alpha1.ExternalAdmissionHookConfiguration, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.ExternalAdmissionHookConfiguration, error) + List(opts v1.ListOptions) (*v1alpha1.ExternalAdmissionHookConfigurationList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) + ExternalAdmissionHookConfigurationExpansion +} + +// externalAdmissionHookConfigurations implements ExternalAdmissionHookConfigurationInterface +type externalAdmissionHookConfigurations struct { + client rest.Interface +} + +// newExternalAdmissionHookConfigurations returns a ExternalAdmissionHookConfigurations +func newExternalAdmissionHookConfigurations(c *AdmissionregistrationV1alpha1Client) *externalAdmissionHookConfigurations { + return &externalAdmissionHookConfigurations{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a externalAdmissionHookConfiguration and creates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any. +func (c *externalAdmissionHookConfigurations) Create(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + result = &v1alpha1.ExternalAdmissionHookConfiguration{} + err = c.client.Post(). + Resource("externaladmissionhookconfigurations"). + Body(externalAdmissionHookConfiguration). + Do(). + Into(result) + return +} + +// Update takes the representation of a externalAdmissionHookConfiguration and updates it. Returns the server's representation of the externalAdmissionHookConfiguration, and an error, if there is any. +func (c *externalAdmissionHookConfigurations) Update(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + result = &v1alpha1.ExternalAdmissionHookConfiguration{} + err = c.client.Put(). + Resource("externaladmissionhookconfigurations"). + Name(externalAdmissionHookConfiguration.Name). + Body(externalAdmissionHookConfiguration). + Do(). + Into(result) + return +} + +// Delete takes name of the externalAdmissionHookConfiguration and deletes it. Returns an error if one occurs. +func (c *externalAdmissionHookConfigurations) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("externaladmissionhookconfigurations"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *externalAdmissionHookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("externaladmissionhookconfigurations"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the externalAdmissionHookConfiguration, and returns the corresponding externalAdmissionHookConfiguration object, and an error if there is any. +func (c *externalAdmissionHookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + result = &v1alpha1.ExternalAdmissionHookConfiguration{} + err = c.client.Get(). + Resource("externaladmissionhookconfigurations"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ExternalAdmissionHookConfigurations that match those selectors. +func (c *externalAdmissionHookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.ExternalAdmissionHookConfigurationList, err error) { + result = &v1alpha1.ExternalAdmissionHookConfigurationList{} + err = c.client.Get(). + Resource("externaladmissionhookconfigurations"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested externalAdmissionHookConfigurations. +func (c *externalAdmissionHookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("externaladmissionhookconfigurations"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched externalAdmissionHookConfiguration. +func (c *externalAdmissionHookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + result = &v1alpha1.ExternalAdmissionHookConfiguration{} + err = c.client.Patch(pt). + Resource("externaladmissionhookconfigurations"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD new file mode 100644 index 000000000..5bb4d724b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_admissionregistration_client.go", + "fake_externaladmissionhookconfiguration.go", + "fake_initializerconfiguration.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go new file mode 100644 index 000000000..8c370a9f7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_admissionregistration_client.go @@ -0,0 +1,42 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1alpha1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAdmissionregistrationV1alpha1 struct { + *testing.Fake +} + +func (c *FakeAdmissionregistrationV1alpha1) ExternalAdmissionHookConfigurations() v1alpha1.ExternalAdmissionHookConfigurationInterface { + return &FakeExternalAdmissionHookConfigurations{c} +} + +func (c *FakeAdmissionregistrationV1alpha1) InitializerConfigurations() v1alpha1.InitializerConfigurationInterface { + return &FakeInitializerConfigurations{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAdmissionregistrationV1alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go new file mode 100644 index 000000000..0f5d2293c --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_externaladmissionhookconfiguration.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeExternalAdmissionHookConfigurations implements ExternalAdmissionHookConfigurationInterface +type FakeExternalAdmissionHookConfigurations struct { + Fake *FakeAdmissionregistrationV1alpha1 +} + +var externaladmissionhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Resource: "externaladmissionhookconfigurations"} + +var externaladmissionhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "ExternalAdmissionHookConfiguration"} + +func (c *FakeExternalAdmissionHookConfigurations) Create(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(externaladmissionhookconfigurationsResource, externalAdmissionHookConfiguration), &v1alpha1.ExternalAdmissionHookConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err +} + +func (c *FakeExternalAdmissionHookConfigurations) Update(externalAdmissionHookConfiguration *v1alpha1.ExternalAdmissionHookConfiguration) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(externaladmissionhookconfigurationsResource, externalAdmissionHookConfiguration), &v1alpha1.ExternalAdmissionHookConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err +} + +func (c *FakeExternalAdmissionHookConfigurations) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(externaladmissionhookconfigurationsResource, name), &v1alpha1.ExternalAdmissionHookConfiguration{}) + return err +} + +func (c *FakeExternalAdmissionHookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(externaladmissionhookconfigurationsResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.ExternalAdmissionHookConfigurationList{}) + return err +} + +func (c *FakeExternalAdmissionHookConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(externaladmissionhookconfigurationsResource, name), &v1alpha1.ExternalAdmissionHookConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err +} + +func (c *FakeExternalAdmissionHookConfigurations) List(opts v1.ListOptions) (result *v1alpha1.ExternalAdmissionHookConfigurationList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(externaladmissionhookconfigurationsResource, externaladmissionhookconfigurationsKind, opts), &v1alpha1.ExternalAdmissionHookConfigurationList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ExternalAdmissionHookConfigurationList{} + for _, item := range obj.(*v1alpha1.ExternalAdmissionHookConfigurationList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested externalAdmissionHookConfigurations. +func (c *FakeExternalAdmissionHookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(externaladmissionhookconfigurationsResource, opts)) +} + +// Patch applies the patch and returns the patched externalAdmissionHookConfiguration. +func (c *FakeExternalAdmissionHookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ExternalAdmissionHookConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(externaladmissionhookconfigurationsResource, name, data, subresources...), &v1alpha1.ExternalAdmissionHookConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_initializerconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_initializerconfiguration.go new file mode 100644 index 000000000..d57f9044f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake/fake_initializerconfiguration.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeInitializerConfigurations implements InitializerConfigurationInterface +type FakeInitializerConfigurations struct { + Fake *FakeAdmissionregistrationV1alpha1 +} + +var initializerconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Resource: "initializerconfigurations"} + +var initializerconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1alpha1", Kind: "InitializerConfiguration"} + +func (c *FakeInitializerConfigurations) Create(initializerConfiguration *v1alpha1.InitializerConfiguration) (result *v1alpha1.InitializerConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(initializerconfigurationsResource, initializerConfiguration), &v1alpha1.InitializerConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.InitializerConfiguration), err +} + +func (c *FakeInitializerConfigurations) Update(initializerConfiguration *v1alpha1.InitializerConfiguration) (result *v1alpha1.InitializerConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(initializerconfigurationsResource, initializerConfiguration), &v1alpha1.InitializerConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.InitializerConfiguration), err +} + +func (c *FakeInitializerConfigurations) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(initializerconfigurationsResource, name), &v1alpha1.InitializerConfiguration{}) + return err +} + +func (c *FakeInitializerConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(initializerconfigurationsResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.InitializerConfigurationList{}) + return err +} + +func (c *FakeInitializerConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.InitializerConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(initializerconfigurationsResource, name), &v1alpha1.InitializerConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.InitializerConfiguration), err +} + +func (c *FakeInitializerConfigurations) List(opts v1.ListOptions) (result *v1alpha1.InitializerConfigurationList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(initializerconfigurationsResource, initializerconfigurationsKind, opts), &v1alpha1.InitializerConfigurationList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.InitializerConfigurationList{} + for _, item := range obj.(*v1alpha1.InitializerConfigurationList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested initializerConfigurations. +func (c *FakeInitializerConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(initializerconfigurationsResource, opts)) +} + +// Patch applies the patch and returns the patched initializerConfiguration. +func (c *FakeInitializerConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.InitializerConfiguration, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(initializerconfigurationsResource, name, data, subresources...), &v1alpha1.InitializerConfiguration{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.InitializerConfiguration), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go new file mode 100644 index 000000000..eef439ab4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/generated_expansion.go @@ -0,0 +1,21 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type ExternalAdmissionHookConfigurationExpansion interface{} + +type InitializerConfigurationExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/initializerconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/initializerconfiguration.go new file mode 100644 index 000000000..25fee8502 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/initializerconfiguration.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// InitializerConfigurationsGetter has a method to return a InitializerConfigurationInterface. +// A group's client should implement this interface. +type InitializerConfigurationsGetter interface { + InitializerConfigurations() InitializerConfigurationInterface +} + +// InitializerConfigurationInterface has methods to work with InitializerConfiguration resources. +type InitializerConfigurationInterface interface { + Create(*v1alpha1.InitializerConfiguration) (*v1alpha1.InitializerConfiguration, error) + Update(*v1alpha1.InitializerConfiguration) (*v1alpha1.InitializerConfiguration, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.InitializerConfiguration, error) + List(opts v1.ListOptions) (*v1alpha1.InitializerConfigurationList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.InitializerConfiguration, err error) + InitializerConfigurationExpansion +} + +// initializerConfigurations implements InitializerConfigurationInterface +type initializerConfigurations struct { + client rest.Interface +} + +// newInitializerConfigurations returns a InitializerConfigurations +func newInitializerConfigurations(c *AdmissionregistrationV1alpha1Client) *initializerConfigurations { + return &initializerConfigurations{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a initializerConfiguration and creates it. Returns the server's representation of the initializerConfiguration, and an error, if there is any. +func (c *initializerConfigurations) Create(initializerConfiguration *v1alpha1.InitializerConfiguration) (result *v1alpha1.InitializerConfiguration, err error) { + result = &v1alpha1.InitializerConfiguration{} + err = c.client.Post(). + Resource("initializerconfigurations"). + Body(initializerConfiguration). + Do(). + Into(result) + return +} + +// Update takes the representation of a initializerConfiguration and updates it. Returns the server's representation of the initializerConfiguration, and an error, if there is any. +func (c *initializerConfigurations) Update(initializerConfiguration *v1alpha1.InitializerConfiguration) (result *v1alpha1.InitializerConfiguration, err error) { + result = &v1alpha1.InitializerConfiguration{} + err = c.client.Put(). + Resource("initializerconfigurations"). + Name(initializerConfiguration.Name). + Body(initializerConfiguration). + Do(). + Into(result) + return +} + +// Delete takes name of the initializerConfiguration and deletes it. Returns an error if one occurs. +func (c *initializerConfigurations) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("initializerconfigurations"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *initializerConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("initializerconfigurations"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the initializerConfiguration, and returns the corresponding initializerConfiguration object, and an error if there is any. +func (c *initializerConfigurations) Get(name string, options v1.GetOptions) (result *v1alpha1.InitializerConfiguration, err error) { + result = &v1alpha1.InitializerConfiguration{} + err = c.client.Get(). + Resource("initializerconfigurations"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of InitializerConfigurations that match those selectors. +func (c *initializerConfigurations) List(opts v1.ListOptions) (result *v1alpha1.InitializerConfigurationList, err error) { + result = &v1alpha1.InitializerConfigurationList{} + err = c.client.Get(). + Resource("initializerconfigurations"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested initializerConfigurations. +func (c *initializerConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("initializerconfigurations"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched initializerConfiguration. +func (c *initializerConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.InitializerConfiguration, err error) { + result = &v1alpha1.InitializerConfiguration{} + err = c.client.Patch(pt). + Resource("initializerconfigurations"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD new file mode 100644 index 000000000..ba6ffd421 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "apps_client.go", + "controllerrevision.go", + "deployment.go", + "doc.go", + "generated_expansion.go", + "scale.go", + "statefulset.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go new file mode 100644 index 000000000..c18da39f6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/apps_client.go @@ -0,0 +1,103 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + rest "k8s.io/client-go/rest" +) + +type AppsV1beta1Interface interface { + RESTClient() rest.Interface + ControllerRevisionsGetter + DeploymentsGetter + ScalesGetter + StatefulSetsGetter +} + +// AppsV1beta1Client is used to interact with features provided by the apps group. +type AppsV1beta1Client struct { + restClient rest.Interface +} + +func (c *AppsV1beta1Client) ControllerRevisions(namespace string) ControllerRevisionInterface { + return newControllerRevisions(c, namespace) +} + +func (c *AppsV1beta1Client) Deployments(namespace string) DeploymentInterface { + return newDeployments(c, namespace) +} + +func (c *AppsV1beta1Client) Scales(namespace string) ScaleInterface { + return newScales(c, namespace) +} + +func (c *AppsV1beta1Client) StatefulSets(namespace string) StatefulSetInterface { + return newStatefulSets(c, namespace) +} + +// NewForConfig creates a new AppsV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*AppsV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AppsV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new AppsV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AppsV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AppsV1beta1Client for the given RESTClient. +func New(c rest.Interface) *AppsV1beta1Client { + return &AppsV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AppsV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go new file mode 100644 index 000000000..de24bbb58 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/controllerrevision.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + rest "k8s.io/client-go/rest" +) + +// ControllerRevisionsGetter has a method to return a ControllerRevisionInterface. +// A group's client should implement this interface. +type ControllerRevisionsGetter interface { + ControllerRevisions(namespace string) ControllerRevisionInterface +} + +// ControllerRevisionInterface has methods to work with ControllerRevision resources. +type ControllerRevisionInterface interface { + Create(*v1beta1.ControllerRevision) (*v1beta1.ControllerRevision, error) + Update(*v1beta1.ControllerRevision) (*v1beta1.ControllerRevision, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.ControllerRevision, error) + List(opts v1.ListOptions) (*v1beta1.ControllerRevisionList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ControllerRevision, err error) + ControllerRevisionExpansion +} + +// controllerRevisions implements ControllerRevisionInterface +type controllerRevisions struct { + client rest.Interface + ns string +} + +// newControllerRevisions returns a ControllerRevisions +func newControllerRevisions(c *AppsV1beta1Client, namespace string) *controllerRevisions { + return &controllerRevisions{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a controllerRevision and creates it. Returns the server's representation of the controllerRevision, and an error, if there is any. +func (c *controllerRevisions) Create(controllerRevision *v1beta1.ControllerRevision) (result *v1beta1.ControllerRevision, err error) { + result = &v1beta1.ControllerRevision{} + err = c.client.Post(). + Namespace(c.ns). + Resource("controllerrevisions"). + Body(controllerRevision). + Do(). + Into(result) + return +} + +// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any. +func (c *controllerRevisions) Update(controllerRevision *v1beta1.ControllerRevision) (result *v1beta1.ControllerRevision, err error) { + result = &v1beta1.ControllerRevision{} + err = c.client.Put(). + Namespace(c.ns). + Resource("controllerrevisions"). + Name(controllerRevision.Name). + Body(controllerRevision). + Do(). + Into(result) + return +} + +// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs. +func (c *controllerRevisions) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("controllerrevisions"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *controllerRevisions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("controllerrevisions"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any. +func (c *controllerRevisions) Get(name string, options v1.GetOptions) (result *v1beta1.ControllerRevision, err error) { + result = &v1beta1.ControllerRevision{} + err = c.client.Get(). + Namespace(c.ns). + Resource("controllerrevisions"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors. +func (c *controllerRevisions) List(opts v1.ListOptions) (result *v1beta1.ControllerRevisionList, err error) { + result = &v1beta1.ControllerRevisionList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("controllerrevisions"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested controllerRevisions. +func (c *controllerRevisions) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("controllerrevisions"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched controllerRevision. +func (c *controllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ControllerRevision, err error) { + result = &v1beta1.ControllerRevision{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("controllerrevisions"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go new file mode 100644 index 000000000..b30965ee7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/deployment.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + rest "k8s.io/client-go/rest" +) + +// DeploymentsGetter has a method to return a DeploymentInterface. +// A group's client should implement this interface. +type DeploymentsGetter interface { + Deployments(namespace string) DeploymentInterface +} + +// DeploymentInterface has methods to work with Deployment resources. +type DeploymentInterface interface { + Create(*v1beta1.Deployment) (*v1beta1.Deployment, error) + Update(*v1beta1.Deployment) (*v1beta1.Deployment, error) + UpdateStatus(*v1beta1.Deployment) (*v1beta1.Deployment, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.Deployment, error) + List(opts v1.ListOptions) (*v1beta1.DeploymentList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) + DeploymentExpansion +} + +// deployments implements DeploymentInterface +type deployments struct { + client rest.Interface + ns string +} + +// newDeployments returns a Deployments +func newDeployments(c *AppsV1beta1Client, namespace string) *deployments { + return &deployments{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. +func (c *deployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Post(). + Namespace(c.ns). + Resource("deployments"). + Body(deployment). + Do(). + Into(result) + return +} + +// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. +func (c *deployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("deployments"). + Name(deployment.Name). + Body(deployment). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *deployments) UpdateStatus(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("deployments"). + Name(deployment.Name). + SubResource("status"). + Body(deployment). + Do(). + Into(result) + return +} + +// Delete takes name of the deployment and deletes it. Returns an error if one occurs. +func (c *deployments) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("deployments"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *deployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. +func (c *deployments) Get(name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Deployments that match those selectors. +func (c *deployments) List(opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) { + result = &v1beta1.DeploymentList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested deployments. +func (c *deployments) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched deployment. +func (c *deployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("deployments"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD new file mode 100644 index 000000000..0fcf337bc --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_apps_client.go", + "fake_controllerrevision.go", + "fake_deployment.go", + "fake_scale.go", + "fake_statefulset.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go new file mode 100644 index 000000000..f1280bc3f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go @@ -0,0 +1,50 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAppsV1beta1 struct { + *testing.Fake +} + +func (c *FakeAppsV1beta1) ControllerRevisions(namespace string) v1beta1.ControllerRevisionInterface { + return &FakeControllerRevisions{c, namespace} +} + +func (c *FakeAppsV1beta1) Deployments(namespace string) v1beta1.DeploymentInterface { + return &FakeDeployments{c, namespace} +} + +func (c *FakeAppsV1beta1) Scales(namespace string) v1beta1.ScaleInterface { + return &FakeScales{c, namespace} +} + +func (c *FakeAppsV1beta1) StatefulSets(namespace string) v1beta1.StatefulSetInterface { + return &FakeStatefulSets{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAppsV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go new file mode 100644 index 000000000..cdf9a27c5 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeControllerRevisions implements ControllerRevisionInterface +type FakeControllerRevisions struct { + Fake *FakeAppsV1beta1 + ns string +} + +var controllerrevisionsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "controllerrevisions"} + +var controllerrevisionsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta1", Kind: "ControllerRevision"} + +func (c *FakeControllerRevisions) Create(controllerRevision *v1beta1.ControllerRevision) (result *v1beta1.ControllerRevision, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta1.ControllerRevision{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ControllerRevision), err +} + +func (c *FakeControllerRevisions) Update(controllerRevision *v1beta1.ControllerRevision) (result *v1beta1.ControllerRevision, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta1.ControllerRevision{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ControllerRevision), err +} + +func (c *FakeControllerRevisions) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(controllerrevisionsResource, c.ns, name), &v1beta1.ControllerRevision{}) + + return err +} + +func (c *FakeControllerRevisions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.ControllerRevisionList{}) + return err +} + +func (c *FakeControllerRevisions) Get(name string, options v1.GetOptions) (result *v1beta1.ControllerRevision, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &v1beta1.ControllerRevision{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ControllerRevision), err +} + +func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *v1beta1.ControllerRevisionList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &v1beta1.ControllerRevisionList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.ControllerRevisionList{} + for _, item := range obj.(*v1beta1.ControllerRevisionList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested controllerRevisions. +func (c *FakeControllerRevisions) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched controllerRevision. +func (c *FakeControllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ControllerRevision, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, data, subresources...), &v1beta1.ControllerRevision{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ControllerRevision), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go new file mode 100644 index 000000000..1323ed59e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeDeployments implements DeploymentInterface +type FakeDeployments struct { + Fake *FakeAppsV1beta1 + ns string +} + +var deploymentsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "deployments"} + +var deploymentsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta1", Kind: "Deployment"} + +func (c *FakeDeployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) UpdateStatus(deployment *v1beta1.Deployment) (*v1beta1.Deployment, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) + + return err +} + +func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.DeploymentList{}) + return err +} + +func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) List(opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta1.DeploymentList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.DeploymentList{} + for _, item := range obj.(*v1beta1.DeploymentList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested deployments. +func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched deployment. +func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, data, subresources...), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_scale.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_scale.go new file mode 100644 index 000000000..8abb429ac --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_scale.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeScales implements ScaleInterface +type FakeScales struct { + Fake *FakeAppsV1beta1 + ns string +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go new file mode 100644 index 000000000..c85e470ea --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeStatefulSets implements StatefulSetInterface +type FakeStatefulSets struct { + Fake *FakeAppsV1beta1 + ns string +} + +var statefulsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "statefulsets"} + +var statefulsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta1", Kind: "StatefulSet"} + +func (c *FakeStatefulSets) Create(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &v1beta1.StatefulSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StatefulSet), err +} + +func (c *FakeStatefulSets) Update(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &v1beta1.StatefulSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StatefulSet), err +} + +func (c *FakeStatefulSets) UpdateStatus(statefulSet *v1beta1.StatefulSet) (*v1beta1.StatefulSet, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &v1beta1.StatefulSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StatefulSet), err +} + +func (c *FakeStatefulSets) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(statefulsetsResource, c.ns, name), &v1beta1.StatefulSet{}) + + return err +} + +func (c *FakeStatefulSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.StatefulSetList{}) + return err +} + +func (c *FakeStatefulSets) Get(name string, options v1.GetOptions) (result *v1beta1.StatefulSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &v1beta1.StatefulSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StatefulSet), err +} + +func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *v1beta1.StatefulSetList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &v1beta1.StatefulSetList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.StatefulSetList{} + for _, item := range obj.(*v1beta1.StatefulSetList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested statefulSets. +func (c *FakeStatefulSets) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched statefulSet. +func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StatefulSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, data, subresources...), &v1beta1.StatefulSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StatefulSet), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go new file mode 100644 index 000000000..a091b902a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/generated_expansion.go @@ -0,0 +1,25 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type ControllerRevisionExpansion interface{} + +type DeploymentExpansion interface{} + +type ScaleExpansion interface{} + +type StatefulSetExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/scale.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/scale.go new file mode 100644 index 000000000..d3bf9e103 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/scale.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// ScalesGetter has a method to return a ScaleInterface. +// A group's client should implement this interface. +type ScalesGetter interface { + Scales(namespace string) ScaleInterface +} + +// ScaleInterface has methods to work with Scale resources. +type ScaleInterface interface { + ScaleExpansion +} + +// scales implements ScaleInterface +type scales struct { + client rest.Interface + ns string +} + +// newScales returns a Scales +func newScales(c *AppsV1beta1Client, namespace string) *scales { + return &scales{ + client: c.RESTClient(), + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go new file mode 100644 index 000000000..8b5a7822f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/statefulset.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + rest "k8s.io/client-go/rest" +) + +// StatefulSetsGetter has a method to return a StatefulSetInterface. +// A group's client should implement this interface. +type StatefulSetsGetter interface { + StatefulSets(namespace string) StatefulSetInterface +} + +// StatefulSetInterface has methods to work with StatefulSet resources. +type StatefulSetInterface interface { + Create(*v1beta1.StatefulSet) (*v1beta1.StatefulSet, error) + Update(*v1beta1.StatefulSet) (*v1beta1.StatefulSet, error) + UpdateStatus(*v1beta1.StatefulSet) (*v1beta1.StatefulSet, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.StatefulSet, error) + List(opts v1.ListOptions) (*v1beta1.StatefulSetList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StatefulSet, err error) + StatefulSetExpansion +} + +// statefulSets implements StatefulSetInterface +type statefulSets struct { + client rest.Interface + ns string +} + +// newStatefulSets returns a StatefulSets +func newStatefulSets(c *AppsV1beta1Client, namespace string) *statefulSets { + return &statefulSets{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a statefulSet and creates it. Returns the server's representation of the statefulSet, and an error, if there is any. +func (c *statefulSets) Create(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { + result = &v1beta1.StatefulSet{} + err = c.client.Post(). + Namespace(c.ns). + Resource("statefulsets"). + Body(statefulSet). + Do(). + Into(result) + return +} + +// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any. +func (c *statefulSets) Update(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { + result = &v1beta1.StatefulSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("statefulsets"). + Name(statefulSet.Name). + Body(statefulSet). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *statefulSets) UpdateStatus(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { + result = &v1beta1.StatefulSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("statefulsets"). + Name(statefulSet.Name). + SubResource("status"). + Body(statefulSet). + Do(). + Into(result) + return +} + +// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs. +func (c *statefulSets) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("statefulsets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *statefulSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("statefulsets"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any. +func (c *statefulSets) Get(name string, options v1.GetOptions) (result *v1beta1.StatefulSet, err error) { + result = &v1beta1.StatefulSet{} + err = c.client.Get(). + Namespace(c.ns). + Resource("statefulsets"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of StatefulSets that match those selectors. +func (c *statefulSets) List(opts v1.ListOptions) (result *v1beta1.StatefulSetList, err error) { + result = &v1beta1.StatefulSetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("statefulsets"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested statefulSets. +func (c *statefulSets) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("statefulsets"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched statefulSet. +func (c *statefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StatefulSet, err error) { + result = &v1beta1.StatefulSet{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("statefulsets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD new file mode 100644 index 000000000..ece030fc3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "authentication_client.go", + "doc.go", + "generated_expansion.go", + "tokenreview.go", + "tokenreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go new file mode 100644 index 000000000..bd53fc249 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/authentication_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/authentication/v1" + rest "k8s.io/client-go/rest" +) + +type AuthenticationV1Interface interface { + RESTClient() rest.Interface + TokenReviewsGetter +} + +// AuthenticationV1Client is used to interact with features provided by the authentication.k8s.io group. +type AuthenticationV1Client struct { + restClient rest.Interface +} + +func (c *AuthenticationV1Client) TokenReviews() TokenReviewInterface { + return newTokenReviews(c) +} + +// NewForConfig creates a new AuthenticationV1Client for the given config. +func NewForConfig(c *rest.Config) (*AuthenticationV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AuthenticationV1Client{client}, nil +} + +// NewForConfigOrDie creates a new AuthenticationV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AuthenticationV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AuthenticationV1Client for the given RESTClient. +func New(c rest.Interface) *AuthenticationV1Client { + return &AuthenticationV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AuthenticationV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD new file mode 100644 index 000000000..04f40b263 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_authentication_client.go", + "fake_tokenreview.go", + "fake_tokenreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go new file mode 100644 index 000000000..85eb00ddf --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/authentication/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAuthenticationV1 struct { + *testing.Fake +} + +func (c *FakeAuthenticationV1) TokenReviews() v1.TokenReviewInterface { + return &FakeTokenReviews{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAuthenticationV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go new file mode 100644 index 000000000..b1c527a71 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeTokenReviews implements TokenReviewInterface +type FakeTokenReviews struct { + Fake *FakeAuthenticationV1 +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go new file mode 100644 index 000000000..7bd524598 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authenticationapi "k8s.io/client-go/pkg/apis/authentication/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeTokenReviews) Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) { + obj, err := c.Fake.Invokes(core.NewRootCreateAction(authenticationapi.SchemeGroupVersion.WithResource("tokenreviews"), tokenReview), &authenticationapi.TokenReview{}) + return obj.(*authenticationapi.TokenReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go new file mode 100644 index 000000000..42e76d5e4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/generated_expansion.go @@ -0,0 +1,17 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go new file mode 100644 index 000000000..9cfef4e6a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + rest "k8s.io/client-go/rest" +) + +// TokenReviewsGetter has a method to return a TokenReviewInterface. +// A group's client should implement this interface. +type TokenReviewsGetter interface { + TokenReviews() TokenReviewInterface +} + +// TokenReviewInterface has methods to work with TokenReview resources. +type TokenReviewInterface interface { + TokenReviewExpansion +} + +// tokenReviews implements TokenReviewInterface +type tokenReviews struct { + client rest.Interface +} + +// newTokenReviews returns a TokenReviews +func newTokenReviews(c *AuthenticationV1Client) *tokenReviews { + return &tokenReviews{ + client: c.RESTClient(), + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview_expansion.go new file mode 100644 index 000000000..fb41782fe --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/tokenreview_expansion.go @@ -0,0 +1,35 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + authenticationapi "k8s.io/client-go/pkg/apis/authentication/v1" +) + +type TokenReviewExpansion interface { + Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) +} + +func (c *tokenReviews) Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) { + result = &authenticationapi.TokenReview{} + err = c.client.Post(). + Resource("tokenreviews"). + Body(tokenReview). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD new file mode 100644 index 000000000..1fde7ba8e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "authentication_client.go", + "doc.go", + "generated_expansion.go", + "tokenreview.go", + "tokenreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go new file mode 100644 index 000000000..419dc2cb6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/authentication_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/authentication/v1beta1" + rest "k8s.io/client-go/rest" +) + +type AuthenticationV1beta1Interface interface { + RESTClient() rest.Interface + TokenReviewsGetter +} + +// AuthenticationV1beta1Client is used to interact with features provided by the authentication.k8s.io group. +type AuthenticationV1beta1Client struct { + restClient rest.Interface +} + +func (c *AuthenticationV1beta1Client) TokenReviews() TokenReviewInterface { + return newTokenReviews(c) +} + +// NewForConfig creates a new AuthenticationV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*AuthenticationV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AuthenticationV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new AuthenticationV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AuthenticationV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AuthenticationV1beta1Client for the given RESTClient. +func New(c rest.Interface) *AuthenticationV1beta1Client { + return &AuthenticationV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AuthenticationV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD new file mode 100644 index 000000000..952a29e6a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_authentication_client.go", + "fake_tokenreview.go", + "fake_tokenreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go new file mode 100644 index 000000000..8f66d8c5b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAuthenticationV1beta1 struct { + *testing.Fake +} + +func (c *FakeAuthenticationV1beta1) TokenReviews() v1beta1.TokenReviewInterface { + return &FakeTokenReviews{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAuthenticationV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go new file mode 100644 index 000000000..e8c57210b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeTokenReviews implements TokenReviewInterface +type FakeTokenReviews struct { + Fake *FakeAuthenticationV1beta1 +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go new file mode 100644 index 000000000..e27e09290 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authenticationapi "k8s.io/client-go/pkg/apis/authentication/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeTokenReviews) Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) { + obj, err := c.Fake.Invokes(core.NewRootCreateAction(authenticationapi.SchemeGroupVersion.WithResource("tokenreviews"), tokenReview), &authenticationapi.TokenReview{}) + return obj.(*authenticationapi.TokenReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go new file mode 100644 index 000000000..2b7e8ca0b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/generated_expansion.go @@ -0,0 +1,17 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go new file mode 100644 index 000000000..7f9f1e9fa --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// TokenReviewsGetter has a method to return a TokenReviewInterface. +// A group's client should implement this interface. +type TokenReviewsGetter interface { + TokenReviews() TokenReviewInterface +} + +// TokenReviewInterface has methods to work with TokenReview resources. +type TokenReviewInterface interface { + TokenReviewExpansion +} + +// tokenReviews implements TokenReviewInterface +type tokenReviews struct { + client rest.Interface +} + +// newTokenReviews returns a TokenReviews +func newTokenReviews(c *AuthenticationV1beta1Client) *tokenReviews { + return &tokenReviews{ + client: c.RESTClient(), + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview_expansion.go new file mode 100644 index 000000000..375b6f637 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/tokenreview_expansion.go @@ -0,0 +1,35 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + authenticationapi "k8s.io/client-go/pkg/apis/authentication/v1beta1" +) + +type TokenReviewExpansion interface { + Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) +} + +func (c *tokenReviews) Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) { + result = &authenticationapi.TokenReview{} + err = c.client.Post(). + Resource("tokenreviews"). + Body(tokenReview). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD new file mode 100644 index 000000000..f7f79fceb --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "authorization_client.go", + "doc.go", + "generated_expansion.go", + "localsubjectaccessreview.go", + "localsubjectaccessreview_expansion.go", + "selfsubjectaccessreview.go", + "selfsubjectaccessreview_expansion.go", + "subjectaccessreview.go", + "subjectaccessreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go new file mode 100644 index 000000000..af2924a30 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/authorization_client.go @@ -0,0 +1,98 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/authorization/v1" + rest "k8s.io/client-go/rest" +) + +type AuthorizationV1Interface interface { + RESTClient() rest.Interface + LocalSubjectAccessReviewsGetter + SelfSubjectAccessReviewsGetter + SubjectAccessReviewsGetter +} + +// AuthorizationV1Client is used to interact with features provided by the authorization.k8s.io group. +type AuthorizationV1Client struct { + restClient rest.Interface +} + +func (c *AuthorizationV1Client) LocalSubjectAccessReviews(namespace string) LocalSubjectAccessReviewInterface { + return newLocalSubjectAccessReviews(c, namespace) +} + +func (c *AuthorizationV1Client) SelfSubjectAccessReviews() SelfSubjectAccessReviewInterface { + return newSelfSubjectAccessReviews(c) +} + +func (c *AuthorizationV1Client) SubjectAccessReviews() SubjectAccessReviewInterface { + return newSubjectAccessReviews(c) +} + +// NewForConfig creates a new AuthorizationV1Client for the given config. +func NewForConfig(c *rest.Config) (*AuthorizationV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AuthorizationV1Client{client}, nil +} + +// NewForConfigOrDie creates a new AuthorizationV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AuthorizationV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AuthorizationV1Client for the given RESTClient. +func New(c rest.Interface) *AuthorizationV1Client { + return &AuthorizationV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AuthorizationV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD new file mode 100644 index 000000000..bc5aad3c6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_authorization_client.go", + "fake_localsubjectaccessreview.go", + "fake_localsubjectaccessreview_expansion.go", + "fake_selfsubjectaccessreview.go", + "fake_selfsubjectaccessreview_expansion.go", + "fake_subjectaccessreview.go", + "fake_subjectaccessreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go new file mode 100644 index 000000000..5107d5fc8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/authorization/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAuthorizationV1 struct { + *testing.Fake +} + +func (c *FakeAuthorizationV1) LocalSubjectAccessReviews(namespace string) v1.LocalSubjectAccessReviewInterface { + return &FakeLocalSubjectAccessReviews{c, namespace} +} + +func (c *FakeAuthorizationV1) SelfSubjectAccessReviews() v1.SelfSubjectAccessReviewInterface { + return &FakeSelfSubjectAccessReviews{c} +} + +func (c *FakeAuthorizationV1) SubjectAccessReviews() v1.SubjectAccessReviewInterface { + return &FakeSubjectAccessReviews{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAuthorizationV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go new file mode 100644 index 000000000..a49fc9b72 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface +type FakeLocalSubjectAccessReviews struct { + Fake *FakeAuthorizationV1 + ns string +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go new file mode 100644 index 000000000..e587d2032 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeLocalSubjectAccessReviews) Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) { + obj, err := c.Fake.Invokes(core.NewCreateAction(authorizationapi.SchemeGroupVersion.WithResource("localsubjectaccessreviews"), c.ns, sar), &authorizationapi.SubjectAccessReview{}) + return obj.(*authorizationapi.LocalSubjectAccessReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go new file mode 100644 index 000000000..26d9011b4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface +type FakeSelfSubjectAccessReviews struct { + Fake *FakeAuthorizationV1 +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go new file mode 100644 index 000000000..e0bbcb1ef --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeSelfSubjectAccessReviews) Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) { + obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("selfsubjectaccessreviews"), sar), &authorizationapi.SelfSubjectAccessReview{}) + return obj.(*authorizationapi.SelfSubjectAccessReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go new file mode 100644 index 000000000..778d06e59 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeSubjectAccessReviews implements SubjectAccessReviewInterface +type FakeSubjectAccessReviews struct { + Fake *FakeAuthorizationV1 +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go new file mode 100644 index 000000000..823d1542c --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeSubjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { + obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("subjectaccessreviews"), sar), &authorizationapi.SubjectAccessReview{}) + return obj.(*authorizationapi.SubjectAccessReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go new file mode 100644 index 000000000..42e76d5e4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/generated_expansion.go @@ -0,0 +1,17 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go new file mode 100644 index 000000000..b2085bceb --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + rest "k8s.io/client-go/rest" +) + +// LocalSubjectAccessReviewsGetter has a method to return a LocalSubjectAccessReviewInterface. +// A group's client should implement this interface. +type LocalSubjectAccessReviewsGetter interface { + LocalSubjectAccessReviews(namespace string) LocalSubjectAccessReviewInterface +} + +// LocalSubjectAccessReviewInterface has methods to work with LocalSubjectAccessReview resources. +type LocalSubjectAccessReviewInterface interface { + LocalSubjectAccessReviewExpansion +} + +// localSubjectAccessReviews implements LocalSubjectAccessReviewInterface +type localSubjectAccessReviews struct { + client rest.Interface + ns string +} + +// newLocalSubjectAccessReviews returns a LocalSubjectAccessReviews +func newLocalSubjectAccessReviews(c *AuthorizationV1Client, namespace string) *localSubjectAccessReviews { + return &localSubjectAccessReviews{ + client: c.RESTClient(), + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview_expansion.go new file mode 100644 index 000000000..c3b487c72 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/localsubjectaccessreview_expansion.go @@ -0,0 +1,36 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1" +) + +type LocalSubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) +} + +func (c *localSubjectAccessReviews) Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) { + result = &authorizationapi.LocalSubjectAccessReview{} + err = c.client.Post(). + Namespace(c.ns). + Resource("localsubjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go new file mode 100644 index 000000000..cfb019eaa --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + rest "k8s.io/client-go/rest" +) + +// SelfSubjectAccessReviewsGetter has a method to return a SelfSubjectAccessReviewInterface. +// A group's client should implement this interface. +type SelfSubjectAccessReviewsGetter interface { + SelfSubjectAccessReviews() SelfSubjectAccessReviewInterface +} + +// SelfSubjectAccessReviewInterface has methods to work with SelfSubjectAccessReview resources. +type SelfSubjectAccessReviewInterface interface { + SelfSubjectAccessReviewExpansion +} + +// selfSubjectAccessReviews implements SelfSubjectAccessReviewInterface +type selfSubjectAccessReviews struct { + client rest.Interface +} + +// newSelfSubjectAccessReviews returns a SelfSubjectAccessReviews +func newSelfSubjectAccessReviews(c *AuthorizationV1Client) *selfSubjectAccessReviews { + return &selfSubjectAccessReviews{ + client: c.RESTClient(), + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview_expansion.go new file mode 100644 index 000000000..107615080 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/selfsubjectaccessreview_expansion.go @@ -0,0 +1,35 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1" +) + +type SelfSubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) +} + +func (c *selfSubjectAccessReviews) Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) { + result = &authorizationapi.SelfSubjectAccessReview{} + err = c.client.Post(). + Resource("selfsubjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go new file mode 100644 index 000000000..08f6d6095 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + rest "k8s.io/client-go/rest" +) + +// SubjectAccessReviewsGetter has a method to return a SubjectAccessReviewInterface. +// A group's client should implement this interface. +type SubjectAccessReviewsGetter interface { + SubjectAccessReviews() SubjectAccessReviewInterface +} + +// SubjectAccessReviewInterface has methods to work with SubjectAccessReview resources. +type SubjectAccessReviewInterface interface { + SubjectAccessReviewExpansion +} + +// subjectAccessReviews implements SubjectAccessReviewInterface +type subjectAccessReviews struct { + client rest.Interface +} + +// newSubjectAccessReviews returns a SubjectAccessReviews +func newSubjectAccessReviews(c *AuthorizationV1Client) *subjectAccessReviews { + return &subjectAccessReviews{ + client: c.RESTClient(), + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview_expansion.go new file mode 100644 index 000000000..dfdf6521a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/subjectaccessreview_expansion.go @@ -0,0 +1,36 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1" +) + +// The SubjectAccessReviewExpansion interface allows manually adding extra methods to the AuthorizationInterface. +type SubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) +} + +func (c *subjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { + result = &authorizationapi.SubjectAccessReview{} + err = c.client.Post(). + Resource("subjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD new file mode 100644 index 000000000..31c2eaa5a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "authorization_client.go", + "doc.go", + "generated_expansion.go", + "localsubjectaccessreview.go", + "localsubjectaccessreview_expansion.go", + "selfsubjectaccessreview.go", + "selfsubjectaccessreview_expansion.go", + "subjectaccessreview.go", + "subjectaccessreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go new file mode 100644 index 000000000..b49b3b30b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/authorization_client.go @@ -0,0 +1,98 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/authorization/v1beta1" + rest "k8s.io/client-go/rest" +) + +type AuthorizationV1beta1Interface interface { + RESTClient() rest.Interface + LocalSubjectAccessReviewsGetter + SelfSubjectAccessReviewsGetter + SubjectAccessReviewsGetter +} + +// AuthorizationV1beta1Client is used to interact with features provided by the authorization.k8s.io group. +type AuthorizationV1beta1Client struct { + restClient rest.Interface +} + +func (c *AuthorizationV1beta1Client) LocalSubjectAccessReviews(namespace string) LocalSubjectAccessReviewInterface { + return newLocalSubjectAccessReviews(c, namespace) +} + +func (c *AuthorizationV1beta1Client) SelfSubjectAccessReviews() SelfSubjectAccessReviewInterface { + return newSelfSubjectAccessReviews(c) +} + +func (c *AuthorizationV1beta1Client) SubjectAccessReviews() SubjectAccessReviewInterface { + return newSubjectAccessReviews(c) +} + +// NewForConfig creates a new AuthorizationV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*AuthorizationV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AuthorizationV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new AuthorizationV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AuthorizationV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AuthorizationV1beta1Client for the given RESTClient. +func New(c rest.Interface) *AuthorizationV1beta1Client { + return &AuthorizationV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AuthorizationV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD new file mode 100644 index 000000000..42269c235 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_authorization_client.go", + "fake_generated_expansion.go", + "fake_localsubjectaccessreview.go", + "fake_localsubjectaccessreview_expansion.go", + "fake_selfsubjectaccessreview.go", + "fake_selfsubjectaccessreview_expansion.go", + "fake_subjectaccessreview.go", + "fake_subjectaccessreview_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go new file mode 100644 index 000000000..89b0b2d78 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAuthorizationV1beta1 struct { + *testing.Fake +} + +func (c *FakeAuthorizationV1beta1) LocalSubjectAccessReviews(namespace string) v1beta1.LocalSubjectAccessReviewInterface { + return &FakeLocalSubjectAccessReviews{c, namespace} +} + +func (c *FakeAuthorizationV1beta1) SelfSubjectAccessReviews() v1beta1.SelfSubjectAccessReviewInterface { + return &FakeSelfSubjectAccessReviews{c} +} + +func (c *FakeAuthorizationV1beta1) SubjectAccessReviews() v1beta1.SubjectAccessReviewInterface { + return &FakeSubjectAccessReviews{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAuthorizationV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go new file mode 100644 index 000000000..8754e39d8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go new file mode 100644 index 000000000..11987f125 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface +type FakeLocalSubjectAccessReviews struct { + Fake *FakeAuthorizationV1beta1 + ns string +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go new file mode 100644 index 000000000..0db666db0 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeLocalSubjectAccessReviews) Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) { + obj, err := c.Fake.Invokes(core.NewCreateAction(authorizationapi.SchemeGroupVersion.WithResource("localsubjectaccessreviews"), c.ns, sar), &authorizationapi.SubjectAccessReview{}) + return obj.(*authorizationapi.LocalSubjectAccessReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go new file mode 100644 index 000000000..aeba43895 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface +type FakeSelfSubjectAccessReviews struct { + Fake *FakeAuthorizationV1beta1 +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go new file mode 100644 index 000000000..d1f775638 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeSelfSubjectAccessReviews) Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) { + obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("selfsubjectaccessreviews"), sar), &authorizationapi.SelfSubjectAccessReview{}) + return obj.(*authorizationapi.SelfSubjectAccessReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go new file mode 100644 index 000000000..4413c6d34 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeSubjectAccessReviews implements SubjectAccessReviewInterface +type FakeSubjectAccessReviews struct { + Fake *FakeAuthorizationV1beta1 +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go new file mode 100644 index 000000000..58ced8eca --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeSubjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { + obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("subjectaccessreviews"), sar), &authorizationapi.SubjectAccessReview{}) + return obj.(*authorizationapi.SubjectAccessReview), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go new file mode 100644 index 000000000..2b7e8ca0b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/generated_expansion.go @@ -0,0 +1,17 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go new file mode 100644 index 000000000..9b8e10341 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// LocalSubjectAccessReviewsGetter has a method to return a LocalSubjectAccessReviewInterface. +// A group's client should implement this interface. +type LocalSubjectAccessReviewsGetter interface { + LocalSubjectAccessReviews(namespace string) LocalSubjectAccessReviewInterface +} + +// LocalSubjectAccessReviewInterface has methods to work with LocalSubjectAccessReview resources. +type LocalSubjectAccessReviewInterface interface { + LocalSubjectAccessReviewExpansion +} + +// localSubjectAccessReviews implements LocalSubjectAccessReviewInterface +type localSubjectAccessReviews struct { + client rest.Interface + ns string +} + +// newLocalSubjectAccessReviews returns a LocalSubjectAccessReviews +func newLocalSubjectAccessReviews(c *AuthorizationV1beta1Client, namespace string) *localSubjectAccessReviews { + return &localSubjectAccessReviews{ + client: c.RESTClient(), + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview_expansion.go new file mode 100644 index 000000000..d2ce4f0d7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview_expansion.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1beta1" +) + +type LocalSubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) +} + +func (c *localSubjectAccessReviews) Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) { + result = &authorizationapi.LocalSubjectAccessReview{} + err = c.client.Post(). + Namespace(c.ns). + Resource("localsubjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go new file mode 100644 index 000000000..1ef3e49af --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// SelfSubjectAccessReviewsGetter has a method to return a SelfSubjectAccessReviewInterface. +// A group's client should implement this interface. +type SelfSubjectAccessReviewsGetter interface { + SelfSubjectAccessReviews() SelfSubjectAccessReviewInterface +} + +// SelfSubjectAccessReviewInterface has methods to work with SelfSubjectAccessReview resources. +type SelfSubjectAccessReviewInterface interface { + SelfSubjectAccessReviewExpansion +} + +// selfSubjectAccessReviews implements SelfSubjectAccessReviewInterface +type selfSubjectAccessReviews struct { + client rest.Interface +} + +// newSelfSubjectAccessReviews returns a SelfSubjectAccessReviews +func newSelfSubjectAccessReviews(c *AuthorizationV1beta1Client) *selfSubjectAccessReviews { + return &selfSubjectAccessReviews{ + client: c.RESTClient(), + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview_expansion.go new file mode 100644 index 000000000..d341eb14a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview_expansion.go @@ -0,0 +1,35 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1beta1" +) + +type SelfSubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) +} + +func (c *selfSubjectAccessReviews) Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) { + result = &authorizationapi.SelfSubjectAccessReview{} + err = c.client.Post(). + Resource("selfsubjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go new file mode 100644 index 000000000..cd60e9df6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go @@ -0,0 +1,44 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// SubjectAccessReviewsGetter has a method to return a SubjectAccessReviewInterface. +// A group's client should implement this interface. +type SubjectAccessReviewsGetter interface { + SubjectAccessReviews() SubjectAccessReviewInterface +} + +// SubjectAccessReviewInterface has methods to work with SubjectAccessReview resources. +type SubjectAccessReviewInterface interface { + SubjectAccessReviewExpansion +} + +// subjectAccessReviews implements SubjectAccessReviewInterface +type subjectAccessReviews struct { + client rest.Interface +} + +// newSubjectAccessReviews returns a SubjectAccessReviews +func newSubjectAccessReviews(c *AuthorizationV1beta1Client) *subjectAccessReviews { + return &subjectAccessReviews{ + client: c.RESTClient(), + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go new file mode 100644 index 000000000..8d03b0811 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + authorizationapi "k8s.io/client-go/pkg/apis/authorization/v1beta1" +) + +// The SubjectAccessReviewExpansion interface allows manually adding extra methods to the AuthorizationInterface. +type SubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) +} + +func (c *subjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { + result = &authorizationapi.SubjectAccessReview{} + err = c.client.Post(). + Resource("subjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD new file mode 100644 index 000000000..d2de5c6c4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "autoscaling_client.go", + "doc.go", + "generated_expansion.go", + "horizontalpodautoscaler.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go new file mode 100644 index 000000000..b235891c9 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/autoscaling_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + rest "k8s.io/client-go/rest" +) + +type AutoscalingV1Interface interface { + RESTClient() rest.Interface + HorizontalPodAutoscalersGetter +} + +// AutoscalingV1Client is used to interact with features provided by the autoscaling group. +type AutoscalingV1Client struct { + restClient rest.Interface +} + +func (c *AutoscalingV1Client) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface { + return newHorizontalPodAutoscalers(c, namespace) +} + +// NewForConfig creates a new AutoscalingV1Client for the given config. +func NewForConfig(c *rest.Config) (*AutoscalingV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AutoscalingV1Client{client}, nil +} + +// NewForConfigOrDie creates a new AutoscalingV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AutoscalingV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AutoscalingV1Client for the given RESTClient. +func New(c rest.Interface) *AutoscalingV1Client { + return &AutoscalingV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AutoscalingV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD new file mode 100644 index 000000000..434160af6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_autoscaling_client.go", + "fake_horizontalpodautoscaler.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go new file mode 100644 index 000000000..c3e0d3734 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAutoscalingV1 struct { + *testing.Fake +} + +func (c *FakeAutoscalingV1) HorizontalPodAutoscalers(namespace string) v1.HorizontalPodAutoscalerInterface { + return &FakeHorizontalPodAutoscalers{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAutoscalingV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go new file mode 100644 index 000000000..210b06b82 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + testing "k8s.io/client-go/testing" +) + +// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface +type FakeHorizontalPodAutoscalers struct { + Fake *FakeAutoscalingV1 + ns string +} + +var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autoscaling", Version: "v1", Resource: "horizontalpodautoscalers"} + +var horizontalpodautoscalersKind = schema.GroupVersionKind{Group: "autoscaling", Version: "v1", Kind: "HorizontalPodAutoscaler"} + +func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) Update(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &v1.HorizontalPodAutoscaler{}) + + return err +} + +func (c *FakeHorizontalPodAutoscalers) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.HorizontalPodAutoscalerList{}) + return err +} + +func (c *FakeHorizontalPodAutoscalers) Get(name string, options meta_v1.GetOptions) (result *v1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) List(opts meta_v1.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v1.HorizontalPodAutoscalerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.HorizontalPodAutoscalerList{} + for _, item := range obj.(*v1.HorizontalPodAutoscalerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. +func (c *FakeHorizontalPodAutoscalers) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched horizontalPodAutoscaler. +func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, data, subresources...), &v1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.HorizontalPodAutoscaler), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go new file mode 100644 index 000000000..effefbd50 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type HorizontalPodAutoscalerExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go new file mode 100644 index 000000000..f9c790af2 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + rest "k8s.io/client-go/rest" +) + +// HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface. +// A group's client should implement this interface. +type HorizontalPodAutoscalersGetter interface { + HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface +} + +// HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources. +type HorizontalPodAutoscalerInterface interface { + Create(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) + Update(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) + UpdateStatus(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.HorizontalPodAutoscaler, error) + List(opts meta_v1.ListOptions) (*v1.HorizontalPodAutoscalerList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) + HorizontalPodAutoscalerExpansion +} + +// horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface +type horizontalPodAutoscalers struct { + client rest.Interface + ns string +} + +// newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers +func newHorizontalPodAutoscalers(c *AutoscalingV1Client, namespace string) *horizontalPodAutoscalers { + return &horizontalPodAutoscalers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a horizontalPodAutoscaler and creates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. +func (c *horizontalPodAutoscalers) Create(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Post(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. +func (c *horizontalPodAutoscalers) Update(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Put(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(horizontalPodAutoscaler.Name). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *horizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Put(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(horizontalPodAutoscaler.Name). + SubResource("status"). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. +func (c *horizontalPodAutoscalers) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *horizontalPodAutoscalers) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. +func (c *horizontalPodAutoscalers) Get(name string, options meta_v1.GetOptions) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. +func (c *horizontalPodAutoscalers) List(opts meta_v1.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) { + result = &v1.HorizontalPodAutoscalerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. +func (c *horizontalPodAutoscalers) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched horizontalPodAutoscaler. +func (c *horizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/BUILD new file mode 100644 index 000000000..a9a9cc562 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "autoscaling_client.go", + "doc.go", + "generated_expansion.go", + "horizontalpodautoscaler.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/autoscaling_client.go new file mode 100644 index 000000000..0d16aa3e9 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/autoscaling_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + rest "k8s.io/client-go/rest" +) + +type AutoscalingV2alpha1Interface interface { + RESTClient() rest.Interface + HorizontalPodAutoscalersGetter +} + +// AutoscalingV2alpha1Client is used to interact with features provided by the autoscaling group. +type AutoscalingV2alpha1Client struct { + restClient rest.Interface +} + +func (c *AutoscalingV2alpha1Client) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface { + return newHorizontalPodAutoscalers(c, namespace) +} + +// NewForConfig creates a new AutoscalingV2alpha1Client for the given config. +func NewForConfig(c *rest.Config) (*AutoscalingV2alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AutoscalingV2alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new AutoscalingV2alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AutoscalingV2alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AutoscalingV2alpha1Client for the given RESTClient. +func New(c rest.Interface) *AutoscalingV2alpha1Client { + return &AutoscalingV2alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v2alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AutoscalingV2alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/doc.go new file mode 100644 index 000000000..d29bd3f4e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v2alpha1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/BUILD new file mode 100644 index 000000000..c5729050b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_autoscaling_client.go", + "fake_horizontalpodautoscaler.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_autoscaling_client.go new file mode 100644 index 000000000..d9518a718 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_autoscaling_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v2alpha1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeAutoscalingV2alpha1 struct { + *testing.Fake +} + +func (c *FakeAutoscalingV2alpha1) HorizontalPodAutoscalers(namespace string) v2alpha1.HorizontalPodAutoscalerInterface { + return &FakeHorizontalPodAutoscalers{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeAutoscalingV2alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_horizontalpodautoscaler.go new file mode 100644 index 000000000..1f0389df3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake/fake_horizontalpodautoscaler.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface +type FakeHorizontalPodAutoscalers struct { + Fake *FakeAutoscalingV2alpha1 + ns string +} + +var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autoscaling", Version: "v2alpha1", Resource: "horizontalpodautoscalers"} + +var horizontalpodautoscalersKind = schema.GroupVersionKind{Group: "autoscaling", Version: "v2alpha1", Kind: "HorizontalPodAutoscaler"} + +func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *v2alpha1.HorizontalPodAutoscaler) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2alpha1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) Update(horizontalPodAutoscaler *v2alpha1.HorizontalPodAutoscaler) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2alpha1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v2alpha1.HorizontalPodAutoscaler) (*v2alpha1.HorizontalPodAutoscaler, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v2alpha1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &v2alpha1.HorizontalPodAutoscaler{}) + + return err +} + +func (c *FakeHorizontalPodAutoscalers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v2alpha1.HorizontalPodAutoscalerList{}) + return err +} + +func (c *FakeHorizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v2alpha1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.HorizontalPodAutoscaler), err +} + +func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *v2alpha1.HorizontalPodAutoscalerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v2alpha1.HorizontalPodAutoscalerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v2alpha1.HorizontalPodAutoscalerList{} + for _, item := range obj.(*v2alpha1.HorizontalPodAutoscalerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. +func (c *FakeHorizontalPodAutoscalers) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched horizontalPodAutoscaler. +func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, data, subresources...), &v2alpha1.HorizontalPodAutoscaler{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.HorizontalPodAutoscaler), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/generated_expansion.go new file mode 100644 index 000000000..e40f2c5a1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +type HorizontalPodAutoscalerExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/horizontalpodautoscaler.go new file mode 100644 index 000000000..c85bfd9f3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/horizontalpodautoscaler.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + rest "k8s.io/client-go/rest" +) + +// HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface. +// A group's client should implement this interface. +type HorizontalPodAutoscalersGetter interface { + HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface +} + +// HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources. +type HorizontalPodAutoscalerInterface interface { + Create(*v2alpha1.HorizontalPodAutoscaler) (*v2alpha1.HorizontalPodAutoscaler, error) + Update(*v2alpha1.HorizontalPodAutoscaler) (*v2alpha1.HorizontalPodAutoscaler, error) + UpdateStatus(*v2alpha1.HorizontalPodAutoscaler) (*v2alpha1.HorizontalPodAutoscaler, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v2alpha1.HorizontalPodAutoscaler, error) + List(opts v1.ListOptions) (*v2alpha1.HorizontalPodAutoscalerList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.HorizontalPodAutoscaler, err error) + HorizontalPodAutoscalerExpansion +} + +// horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface +type horizontalPodAutoscalers struct { + client rest.Interface + ns string +} + +// newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers +func newHorizontalPodAutoscalers(c *AutoscalingV2alpha1Client, namespace string) *horizontalPodAutoscalers { + return &horizontalPodAutoscalers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a horizontalPodAutoscaler and creates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. +func (c *horizontalPodAutoscalers) Create(horizontalPodAutoscaler *v2alpha1.HorizontalPodAutoscaler) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + result = &v2alpha1.HorizontalPodAutoscaler{} + err = c.client.Post(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. +func (c *horizontalPodAutoscalers) Update(horizontalPodAutoscaler *v2alpha1.HorizontalPodAutoscaler) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + result = &v2alpha1.HorizontalPodAutoscaler{} + err = c.client.Put(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(horizontalPodAutoscaler.Name). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *horizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v2alpha1.HorizontalPodAutoscaler) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + result = &v2alpha1.HorizontalPodAutoscaler{} + err = c.client.Put(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(horizontalPodAutoscaler.Name). + SubResource("status"). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. +func (c *horizontalPodAutoscalers) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *horizontalPodAutoscalers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. +func (c *horizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + result = &v2alpha1.HorizontalPodAutoscaler{} + err = c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. +func (c *horizontalPodAutoscalers) List(opts v1.ListOptions) (result *v2alpha1.HorizontalPodAutoscalerList, err error) { + result = &v2alpha1.HorizontalPodAutoscalerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. +func (c *horizontalPodAutoscalers) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched horizontalPodAutoscaler. +func (c *horizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.HorizontalPodAutoscaler, err error) { + result = &v2alpha1.HorizontalPodAutoscaler{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD new file mode 100644 index 000000000..96b346b16 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "batch_client.go", + "doc.go", + "generated_expansion.go", + "job.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go new file mode 100644 index 000000000..c8766f5b6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/batch_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/batch/v1" + rest "k8s.io/client-go/rest" +) + +type BatchV1Interface interface { + RESTClient() rest.Interface + JobsGetter +} + +// BatchV1Client is used to interact with features provided by the batch group. +type BatchV1Client struct { + restClient rest.Interface +} + +func (c *BatchV1Client) Jobs(namespace string) JobInterface { + return newJobs(c, namespace) +} + +// NewForConfig creates a new BatchV1Client for the given config. +func NewForConfig(c *rest.Config) (*BatchV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &BatchV1Client{client}, nil +} + +// NewForConfigOrDie creates a new BatchV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *BatchV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new BatchV1Client for the given RESTClient. +func New(c rest.Interface) *BatchV1Client { + return &BatchV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *BatchV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD new file mode 100644 index 000000000..2422e3186 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_batch_client.go", + "fake_job.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go new file mode 100644 index 000000000..4e2d361e8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/batch/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeBatchV1 struct { + *testing.Fake +} + +func (c *FakeBatchV1) Jobs(namespace string) v1.JobInterface { + return &FakeJobs{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeBatchV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go new file mode 100644 index 000000000..e13059319 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/apis/batch/v1" + testing "k8s.io/client-go/testing" +) + +// FakeJobs implements JobInterface +type FakeJobs struct { + Fake *FakeBatchV1 + ns string +} + +var jobsResource = schema.GroupVersionResource{Group: "batch", Version: "v1", Resource: "jobs"} + +var jobsKind = schema.GroupVersionKind{Group: "batch", Version: "v1", Kind: "Job"} + +func (c *FakeJobs) Create(job *v1.Job) (result *v1.Job, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(jobsResource, c.ns, job), &v1.Job{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Job), err +} + +func (c *FakeJobs) Update(job *v1.Job) (result *v1.Job, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(jobsResource, c.ns, job), &v1.Job{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Job), err +} + +func (c *FakeJobs) UpdateStatus(job *v1.Job) (*v1.Job, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(jobsResource, "status", c.ns, job), &v1.Job{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Job), err +} + +func (c *FakeJobs) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(jobsResource, c.ns, name), &v1.Job{}) + + return err +} + +func (c *FakeJobs) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(jobsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.JobList{}) + return err +} + +func (c *FakeJobs) Get(name string, options meta_v1.GetOptions) (result *v1.Job, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(jobsResource, c.ns, name), &v1.Job{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Job), err +} + +func (c *FakeJobs) List(opts meta_v1.ListOptions) (result *v1.JobList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(jobsResource, jobsKind, c.ns, opts), &v1.JobList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.JobList{} + for _, item := range obj.(*v1.JobList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested jobs. +func (c *FakeJobs) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(jobsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched job. +func (c *FakeJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, name, data, subresources...), &v1.Job{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Job), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go new file mode 100644 index 000000000..68d7741fa --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type JobExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go new file mode 100644 index 000000000..c8120f6d8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/job.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/batch/v1" + rest "k8s.io/client-go/rest" +) + +// JobsGetter has a method to return a JobInterface. +// A group's client should implement this interface. +type JobsGetter interface { + Jobs(namespace string) JobInterface +} + +// JobInterface has methods to work with Job resources. +type JobInterface interface { + Create(*v1.Job) (*v1.Job, error) + Update(*v1.Job) (*v1.Job, error) + UpdateStatus(*v1.Job) (*v1.Job, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Job, error) + List(opts meta_v1.ListOptions) (*v1.JobList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) + JobExpansion +} + +// jobs implements JobInterface +type jobs struct { + client rest.Interface + ns string +} + +// newJobs returns a Jobs +func newJobs(c *BatchV1Client, namespace string) *jobs { + return &jobs{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a job and creates it. Returns the server's representation of the job, and an error, if there is any. +func (c *jobs) Create(job *v1.Job) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Post(). + Namespace(c.ns). + Resource("jobs"). + Body(job). + Do(). + Into(result) + return +} + +// Update takes the representation of a job and updates it. Returns the server's representation of the job, and an error, if there is any. +func (c *jobs) Update(job *v1.Job) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Put(). + Namespace(c.ns). + Resource("jobs"). + Name(job.Name). + Body(job). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *jobs) UpdateStatus(job *v1.Job) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Put(). + Namespace(c.ns). + Resource("jobs"). + Name(job.Name). + SubResource("status"). + Body(job). + Do(). + Into(result) + return +} + +// Delete takes name of the job and deletes it. Returns an error if one occurs. +func (c *jobs) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("jobs"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *jobs) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the job, and returns the corresponding job object, and an error if there is any. +func (c *jobs) Get(name string, options meta_v1.GetOptions) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Jobs that match those selectors. +func (c *jobs) List(opts meta_v1.ListOptions) (result *v1.JobList, err error) { + result = &v1.JobList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested jobs. +func (c *jobs) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched job. +func (c *jobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("jobs"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD new file mode 100644 index 000000000..853dda84d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "batch_client.go", + "cronjob.go", + "doc.go", + "generated_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go new file mode 100644 index 000000000..e2b2dd5cd --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/batch_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + rest "k8s.io/client-go/rest" +) + +type BatchV2alpha1Interface interface { + RESTClient() rest.Interface + CronJobsGetter +} + +// BatchV2alpha1Client is used to interact with features provided by the batch group. +type BatchV2alpha1Client struct { + restClient rest.Interface +} + +func (c *BatchV2alpha1Client) CronJobs(namespace string) CronJobInterface { + return newCronJobs(c, namespace) +} + +// NewForConfig creates a new BatchV2alpha1Client for the given config. +func NewForConfig(c *rest.Config) (*BatchV2alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &BatchV2alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new BatchV2alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *BatchV2alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new BatchV2alpha1Client for the given RESTClient. +func New(c rest.Interface) *BatchV2alpha1Client { + return &BatchV2alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v2alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *BatchV2alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go new file mode 100644 index 000000000..2447f2add --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/cronjob.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + rest "k8s.io/client-go/rest" +) + +// CronJobsGetter has a method to return a CronJobInterface. +// A group's client should implement this interface. +type CronJobsGetter interface { + CronJobs(namespace string) CronJobInterface +} + +// CronJobInterface has methods to work with CronJob resources. +type CronJobInterface interface { + Create(*v2alpha1.CronJob) (*v2alpha1.CronJob, error) + Update(*v2alpha1.CronJob) (*v2alpha1.CronJob, error) + UpdateStatus(*v2alpha1.CronJob) (*v2alpha1.CronJob, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v2alpha1.CronJob, error) + List(opts v1.ListOptions) (*v2alpha1.CronJobList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.CronJob, err error) + CronJobExpansion +} + +// cronJobs implements CronJobInterface +type cronJobs struct { + client rest.Interface + ns string +} + +// newCronJobs returns a CronJobs +func newCronJobs(c *BatchV2alpha1Client, namespace string) *cronJobs { + return &cronJobs{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a cronJob and creates it. Returns the server's representation of the cronJob, and an error, if there is any. +func (c *cronJobs) Create(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { + result = &v2alpha1.CronJob{} + err = c.client.Post(). + Namespace(c.ns). + Resource("cronjobs"). + Body(cronJob). + Do(). + Into(result) + return +} + +// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any. +func (c *cronJobs) Update(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { + result = &v2alpha1.CronJob{} + err = c.client.Put(). + Namespace(c.ns). + Resource("cronjobs"). + Name(cronJob.Name). + Body(cronJob). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *cronJobs) UpdateStatus(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { + result = &v2alpha1.CronJob{} + err = c.client.Put(). + Namespace(c.ns). + Resource("cronjobs"). + Name(cronJob.Name). + SubResource("status"). + Body(cronJob). + Do(). + Into(result) + return +} + +// Delete takes name of the cronJob and deletes it. Returns an error if one occurs. +func (c *cronJobs) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("cronjobs"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *cronJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("cronjobs"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any. +func (c *cronJobs) Get(name string, options v1.GetOptions) (result *v2alpha1.CronJob, err error) { + result = &v2alpha1.CronJob{} + err = c.client.Get(). + Namespace(c.ns). + Resource("cronjobs"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of CronJobs that match those selectors. +func (c *cronJobs) List(opts v1.ListOptions) (result *v2alpha1.CronJobList, err error) { + result = &v2alpha1.CronJobList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("cronjobs"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested cronJobs. +func (c *cronJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("cronjobs"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched cronJob. +func (c *cronJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.CronJob, err error) { + result = &v2alpha1.CronJob{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("cronjobs"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go new file mode 100644 index 000000000..d29bd3f4e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v2alpha1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD new file mode 100644 index 000000000..ae4a9827a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_batch_client.go", + "fake_cronjob.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go new file mode 100644 index 000000000..c8f5a40de --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeBatchV2alpha1 struct { + *testing.Fake +} + +func (c *FakeBatchV2alpha1) CronJobs(namespace string) v2alpha1.CronJobInterface { + return &FakeCronJobs{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeBatchV2alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go new file mode 100644 index 000000000..17f50d635 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeCronJobs implements CronJobInterface +type FakeCronJobs struct { + Fake *FakeBatchV2alpha1 + ns string +} + +var cronjobsResource = schema.GroupVersionResource{Group: "batch", Version: "v2alpha1", Resource: "cronjobs"} + +var cronjobsKind = schema.GroupVersionKind{Group: "batch", Version: "v2alpha1", Kind: "CronJob"} + +func (c *FakeCronJobs) Create(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(cronjobsResource, c.ns, cronJob), &v2alpha1.CronJob{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.CronJob), err +} + +func (c *FakeCronJobs) Update(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(cronjobsResource, c.ns, cronJob), &v2alpha1.CronJob{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.CronJob), err +} + +func (c *FakeCronJobs) UpdateStatus(cronJob *v2alpha1.CronJob) (*v2alpha1.CronJob, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(cronjobsResource, "status", c.ns, cronJob), &v2alpha1.CronJob{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.CronJob), err +} + +func (c *FakeCronJobs) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(cronjobsResource, c.ns, name), &v2alpha1.CronJob{}) + + return err +} + +func (c *FakeCronJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(cronjobsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v2alpha1.CronJobList{}) + return err +} + +func (c *FakeCronJobs) Get(name string, options v1.GetOptions) (result *v2alpha1.CronJob, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(cronjobsResource, c.ns, name), &v2alpha1.CronJob{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.CronJob), err +} + +func (c *FakeCronJobs) List(opts v1.ListOptions) (result *v2alpha1.CronJobList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(cronjobsResource, cronjobsKind, c.ns, opts), &v2alpha1.CronJobList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v2alpha1.CronJobList{} + for _, item := range obj.(*v2alpha1.CronJobList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested cronJobs. +func (c *FakeCronJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(cronjobsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched cronJob. +func (c *FakeCronJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.CronJob, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, name, data, subresources...), &v2alpha1.CronJob{}) + + if obj == nil { + return nil, err + } + return obj.(*v2alpha1.CronJob), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go new file mode 100644 index 000000000..078027ef4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +type CronJobExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD new file mode 100644 index 000000000..1ccad8ef3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "certificates_client.go", + "certificatesigningrequest.go", + "certificatesigningrequest_expansion.go", + "doc.go", + "generated_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go new file mode 100644 index 000000000..c9c39acb2 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificates_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + rest "k8s.io/client-go/rest" +) + +type CertificatesV1beta1Interface interface { + RESTClient() rest.Interface + CertificateSigningRequestsGetter +} + +// CertificatesV1beta1Client is used to interact with features provided by the certificates.k8s.io group. +type CertificatesV1beta1Client struct { + restClient rest.Interface +} + +func (c *CertificatesV1beta1Client) CertificateSigningRequests() CertificateSigningRequestInterface { + return newCertificateSigningRequests(c) +} + +// NewForConfig creates a new CertificatesV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*CertificatesV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &CertificatesV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new CertificatesV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *CertificatesV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new CertificatesV1beta1Client for the given RESTClient. +func New(c rest.Interface) *CertificatesV1beta1Client { + return &CertificatesV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *CertificatesV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go new file mode 100644 index 000000000..7407ef068 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest.go @@ -0,0 +1,161 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + rest "k8s.io/client-go/rest" +) + +// CertificateSigningRequestsGetter has a method to return a CertificateSigningRequestInterface. +// A group's client should implement this interface. +type CertificateSigningRequestsGetter interface { + CertificateSigningRequests() CertificateSigningRequestInterface +} + +// CertificateSigningRequestInterface has methods to work with CertificateSigningRequest resources. +type CertificateSigningRequestInterface interface { + Create(*v1beta1.CertificateSigningRequest) (*v1beta1.CertificateSigningRequest, error) + Update(*v1beta1.CertificateSigningRequest) (*v1beta1.CertificateSigningRequest, error) + UpdateStatus(*v1beta1.CertificateSigningRequest) (*v1beta1.CertificateSigningRequest, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.CertificateSigningRequest, error) + List(opts v1.ListOptions) (*v1beta1.CertificateSigningRequestList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error) + CertificateSigningRequestExpansion +} + +// certificateSigningRequests implements CertificateSigningRequestInterface +type certificateSigningRequests struct { + client rest.Interface +} + +// newCertificateSigningRequests returns a CertificateSigningRequests +func newCertificateSigningRequests(c *CertificatesV1beta1Client) *certificateSigningRequests { + return &certificateSigningRequests{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a certificateSigningRequest and creates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any. +func (c *certificateSigningRequests) Create(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { + result = &v1beta1.CertificateSigningRequest{} + err = c.client.Post(). + Resource("certificatesigningrequests"). + Body(certificateSigningRequest). + Do(). + Into(result) + return +} + +// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any. +func (c *certificateSigningRequests) Update(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { + result = &v1beta1.CertificateSigningRequest{} + err = c.client.Put(). + Resource("certificatesigningrequests"). + Name(certificateSigningRequest.Name). + Body(certificateSigningRequest). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *certificateSigningRequests) UpdateStatus(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { + result = &v1beta1.CertificateSigningRequest{} + err = c.client.Put(). + Resource("certificatesigningrequests"). + Name(certificateSigningRequest.Name). + SubResource("status"). + Body(certificateSigningRequest). + Do(). + Into(result) + return +} + +// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs. +func (c *certificateSigningRequests) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("certificatesigningrequests"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *certificateSigningRequests) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("certificatesigningrequests"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any. +func (c *certificateSigningRequests) Get(name string, options v1.GetOptions) (result *v1beta1.CertificateSigningRequest, err error) { + result = &v1beta1.CertificateSigningRequest{} + err = c.client.Get(). + Resource("certificatesigningrequests"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors. +func (c *certificateSigningRequests) List(opts v1.ListOptions) (result *v1beta1.CertificateSigningRequestList, err error) { + result = &v1beta1.CertificateSigningRequestList{} + err = c.client.Get(). + Resource("certificatesigningrequests"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested certificateSigningRequests. +func (c *certificateSigningRequests) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("certificatesigningrequests"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched certificateSigningRequest. +func (c *certificateSigningRequests) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error) { + result = &v1beta1.CertificateSigningRequest{} + err = c.client.Patch(pt). + Resource("certificatesigningrequests"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go new file mode 100644 index 000000000..4765bba8a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/certificatesigningrequest_expansion.go @@ -0,0 +1,37 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + certificates "k8s.io/client-go/pkg/apis/certificates/v1beta1" +) + +type CertificateSigningRequestExpansion interface { + UpdateApproval(certificateSigningRequest *certificates.CertificateSigningRequest) (result *certificates.CertificateSigningRequest, err error) +} + +func (c *certificateSigningRequests) UpdateApproval(certificateSigningRequest *certificates.CertificateSigningRequest) (result *certificates.CertificateSigningRequest, err error) { + result = &certificates.CertificateSigningRequest{} + err = c.client.Put(). + Resource("certificatesigningrequests"). + Name(certificateSigningRequest.Name). + Body(certificateSigningRequest). + SubResource("approval"). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD new file mode 100644 index 000000000..f25c6bed1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_certificates_client.go", + "fake_certificatesigningrequest.go", + "fake_certificatesigningrequest_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go new file mode 100644 index 000000000..550c5bba1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeCertificatesV1beta1 struct { + *testing.Fake +} + +func (c *FakeCertificatesV1beta1) CertificateSigningRequests() v1beta1.CertificateSigningRequestInterface { + return &FakeCertificateSigningRequests{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeCertificatesV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go new file mode 100644 index 000000000..9c7c3435c --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go @@ -0,0 +1,121 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeCertificateSigningRequests implements CertificateSigningRequestInterface +type FakeCertificateSigningRequests struct { + Fake *FakeCertificatesV1beta1 +} + +var certificatesigningrequestsResource = schema.GroupVersionResource{Group: "certificates.k8s.io", Version: "v1beta1", Resource: "certificatesigningrequests"} + +var certificatesigningrequestsKind = schema.GroupVersionKind{Group: "certificates.k8s.io", Version: "v1beta1", Kind: "CertificateSigningRequest"} + +func (c *FakeCertificateSigningRequests) Create(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1beta1.CertificateSigningRequest{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.CertificateSigningRequest), err +} + +func (c *FakeCertificateSigningRequests) Update(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1beta1.CertificateSigningRequest{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.CertificateSigningRequest), err +} + +func (c *FakeCertificateSigningRequests) UpdateStatus(certificateSigningRequest *v1beta1.CertificateSigningRequest) (*v1beta1.CertificateSigningRequest, error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "status", certificateSigningRequest), &v1beta1.CertificateSigningRequest{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.CertificateSigningRequest), err +} + +func (c *FakeCertificateSigningRequests) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(certificatesigningrequestsResource, name), &v1beta1.CertificateSigningRequest{}) + return err +} + +func (c *FakeCertificateSigningRequests) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(certificatesigningrequestsResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.CertificateSigningRequestList{}) + return err +} + +func (c *FakeCertificateSigningRequests) Get(name string, options v1.GetOptions) (result *v1beta1.CertificateSigningRequest, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(certificatesigningrequestsResource, name), &v1beta1.CertificateSigningRequest{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.CertificateSigningRequest), err +} + +func (c *FakeCertificateSigningRequests) List(opts v1.ListOptions) (result *v1beta1.CertificateSigningRequestList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(certificatesigningrequestsResource, certificatesigningrequestsKind, opts), &v1beta1.CertificateSigningRequestList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.CertificateSigningRequestList{} + for _, item := range obj.(*v1beta1.CertificateSigningRequestList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested certificateSigningRequests. +func (c *FakeCertificateSigningRequests) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(certificatesigningrequestsResource, opts)) +} + +// Patch applies the patch and returns the patched certificateSigningRequest. +func (c *FakeCertificateSigningRequests) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, name, data, subresources...), &v1beta1.CertificateSigningRequest{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.CertificateSigningRequest), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go new file mode 100644 index 000000000..2333c0f3e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go @@ -0,0 +1,31 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + certificates "k8s.io/client-go/pkg/apis/certificates/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeCertificateSigningRequests) UpdateApproval(certificateSigningRequest *certificates.CertificateSigningRequest) (result *certificates.CertificateSigningRequest, err error) { + obj, err := c.Fake. + Invokes(core.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "approval", certificateSigningRequest), &certificates.CertificateSigningRequest{}) + if obj == nil { + return nil, err + } + return obj.(*certificates.CertificateSigningRequest), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go new file mode 100644 index 000000000..2b7e8ca0b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/generated_expansion.go @@ -0,0 +1,17 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD new file mode 100644 index 000000000..c77524e89 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD @@ -0,0 +1,53 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "componentstatus.go", + "configmap.go", + "core_client.go", + "doc.go", + "endpoints.go", + "event.go", + "event_expansion.go", + "generated_expansion.go", + "limitrange.go", + "namespace.go", + "namespace_expansion.go", + "node.go", + "node_expansion.go", + "persistentvolume.go", + "persistentvolumeclaim.go", + "pod.go", + "pod_expansion.go", + "podtemplate.go", + "replicationcontroller.go", + "resourcequota.go", + "secret.go", + "service.go", + "service_expansion.go", + "serviceaccount.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1/ref:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go new file mode 100644 index 000000000..50671976a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/componentstatus.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// ComponentStatusesGetter has a method to return a ComponentStatusInterface. +// A group's client should implement this interface. +type ComponentStatusesGetter interface { + ComponentStatuses() ComponentStatusInterface +} + +// ComponentStatusInterface has methods to work with ComponentStatus resources. +type ComponentStatusInterface interface { + Create(*v1.ComponentStatus) (*v1.ComponentStatus, error) + Update(*v1.ComponentStatus) (*v1.ComponentStatus, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.ComponentStatus, error) + List(opts meta_v1.ListOptions) (*v1.ComponentStatusList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ComponentStatus, err error) + ComponentStatusExpansion +} + +// componentStatuses implements ComponentStatusInterface +type componentStatuses struct { + client rest.Interface +} + +// newComponentStatuses returns a ComponentStatuses +func newComponentStatuses(c *CoreV1Client) *componentStatuses { + return &componentStatuses{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a componentStatus and creates it. Returns the server's representation of the componentStatus, and an error, if there is any. +func (c *componentStatuses) Create(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Post(). + Resource("componentstatuses"). + Body(componentStatus). + Do(). + Into(result) + return +} + +// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any. +func (c *componentStatuses) Update(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Put(). + Resource("componentstatuses"). + Name(componentStatus.Name). + Body(componentStatus). + Do(). + Into(result) + return +} + +// Delete takes name of the componentStatus and deletes it. Returns an error if one occurs. +func (c *componentStatuses) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Resource("componentstatuses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *componentStatuses) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Resource("componentstatuses"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any. +func (c *componentStatuses) Get(name string, options meta_v1.GetOptions) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Get(). + Resource("componentstatuses"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors. +func (c *componentStatuses) List(opts meta_v1.ListOptions) (result *v1.ComponentStatusList, err error) { + result = &v1.ComponentStatusList{} + err = c.client.Get(). + Resource("componentstatuses"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested componentStatuses. +func (c *componentStatuses) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("componentstatuses"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched componentStatus. +func (c *componentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Patch(pt). + Resource("componentstatuses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go new file mode 100644 index 000000000..bb21636e2 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/configmap.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// ConfigMapsGetter has a method to return a ConfigMapInterface. +// A group's client should implement this interface. +type ConfigMapsGetter interface { + ConfigMaps(namespace string) ConfigMapInterface +} + +// ConfigMapInterface has methods to work with ConfigMap resources. +type ConfigMapInterface interface { + Create(*v1.ConfigMap) (*v1.ConfigMap, error) + Update(*v1.ConfigMap) (*v1.ConfigMap, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.ConfigMap, error) + List(opts meta_v1.ListOptions) (*v1.ConfigMapList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) + ConfigMapExpansion +} + +// configMaps implements ConfigMapInterface +type configMaps struct { + client rest.Interface + ns string +} + +// newConfigMaps returns a ConfigMaps +func newConfigMaps(c *CoreV1Client, namespace string) *configMaps { + return &configMaps{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a configMap and creates it. Returns the server's representation of the configMap, and an error, if there is any. +func (c *configMaps) Create(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Post(). + Namespace(c.ns). + Resource("configmaps"). + Body(configMap). + Do(). + Into(result) + return +} + +// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any. +func (c *configMaps) Update(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Put(). + Namespace(c.ns). + Resource("configmaps"). + Name(configMap.Name). + Body(configMap). + Do(). + Into(result) + return +} + +// Delete takes name of the configMap and deletes it. Returns an error if one occurs. +func (c *configMaps) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("configmaps"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *configMaps) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("configmaps"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any. +func (c *configMaps) Get(name string, options meta_v1.GetOptions) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Get(). + Namespace(c.ns). + Resource("configmaps"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors. +func (c *configMaps) List(opts meta_v1.ListOptions) (result *v1.ConfigMapList, err error) { + result = &v1.ConfigMapList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("configmaps"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested configMaps. +func (c *configMaps) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("configmaps"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched configMap. +func (c *configMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("configmaps"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go new file mode 100644 index 000000000..0972960d1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/core_client.go @@ -0,0 +1,163 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +type CoreV1Interface interface { + RESTClient() rest.Interface + ComponentStatusesGetter + ConfigMapsGetter + EndpointsGetter + EventsGetter + LimitRangesGetter + NamespacesGetter + NodesGetter + PersistentVolumesGetter + PersistentVolumeClaimsGetter + PodsGetter + PodTemplatesGetter + ReplicationControllersGetter + ResourceQuotasGetter + SecretsGetter + ServicesGetter + ServiceAccountsGetter +} + +// CoreV1Client is used to interact with features provided by the group. +type CoreV1Client struct { + restClient rest.Interface +} + +func (c *CoreV1Client) ComponentStatuses() ComponentStatusInterface { + return newComponentStatuses(c) +} + +func (c *CoreV1Client) ConfigMaps(namespace string) ConfigMapInterface { + return newConfigMaps(c, namespace) +} + +func (c *CoreV1Client) Endpoints(namespace string) EndpointsInterface { + return newEndpoints(c, namespace) +} + +func (c *CoreV1Client) Events(namespace string) EventInterface { + return newEvents(c, namespace) +} + +func (c *CoreV1Client) LimitRanges(namespace string) LimitRangeInterface { + return newLimitRanges(c, namespace) +} + +func (c *CoreV1Client) Namespaces() NamespaceInterface { + return newNamespaces(c) +} + +func (c *CoreV1Client) Nodes() NodeInterface { + return newNodes(c) +} + +func (c *CoreV1Client) PersistentVolumes() PersistentVolumeInterface { + return newPersistentVolumes(c) +} + +func (c *CoreV1Client) PersistentVolumeClaims(namespace string) PersistentVolumeClaimInterface { + return newPersistentVolumeClaims(c, namespace) +} + +func (c *CoreV1Client) Pods(namespace string) PodInterface { + return newPods(c, namespace) +} + +func (c *CoreV1Client) PodTemplates(namespace string) PodTemplateInterface { + return newPodTemplates(c, namespace) +} + +func (c *CoreV1Client) ReplicationControllers(namespace string) ReplicationControllerInterface { + return newReplicationControllers(c, namespace) +} + +func (c *CoreV1Client) ResourceQuotas(namespace string) ResourceQuotaInterface { + return newResourceQuotas(c, namespace) +} + +func (c *CoreV1Client) Secrets(namespace string) SecretInterface { + return newSecrets(c, namespace) +} + +func (c *CoreV1Client) Services(namespace string) ServiceInterface { + return newServices(c, namespace) +} + +func (c *CoreV1Client) ServiceAccounts(namespace string) ServiceAccountInterface { + return newServiceAccounts(c, namespace) +} + +// NewForConfig creates a new CoreV1Client for the given config. +func NewForConfig(c *rest.Config) (*CoreV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &CoreV1Client{client}, nil +} + +// NewForConfigOrDie creates a new CoreV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *CoreV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new CoreV1Client for the given RESTClient. +func New(c rest.Interface) *CoreV1Client { + return &CoreV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/api" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *CoreV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go new file mode 100644 index 000000000..3580742a8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/endpoints.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// EndpointsGetter has a method to return a EndpointsInterface. +// A group's client should implement this interface. +type EndpointsGetter interface { + Endpoints(namespace string) EndpointsInterface +} + +// EndpointsInterface has methods to work with Endpoints resources. +type EndpointsInterface interface { + Create(*v1.Endpoints) (*v1.Endpoints, error) + Update(*v1.Endpoints) (*v1.Endpoints, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Endpoints, error) + List(opts meta_v1.ListOptions) (*v1.EndpointsList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) + EndpointsExpansion +} + +// endpoints implements EndpointsInterface +type endpoints struct { + client rest.Interface + ns string +} + +// newEndpoints returns a Endpoints +func newEndpoints(c *CoreV1Client, namespace string) *endpoints { + return &endpoints{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a endpoints and creates it. Returns the server's representation of the endpoints, and an error, if there is any. +func (c *endpoints) Create(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Post(). + Namespace(c.ns). + Resource("endpoints"). + Body(endpoints). + Do(). + Into(result) + return +} + +// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any. +func (c *endpoints) Update(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Put(). + Namespace(c.ns). + Resource("endpoints"). + Name(endpoints.Name). + Body(endpoints). + Do(). + Into(result) + return +} + +// Delete takes name of the endpoints and deletes it. Returns an error if one occurs. +func (c *endpoints) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("endpoints"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *endpoints) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("endpoints"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any. +func (c *endpoints) Get(name string, options meta_v1.GetOptions) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Get(). + Namespace(c.ns). + Resource("endpoints"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Endpoints that match those selectors. +func (c *endpoints) List(opts meta_v1.ListOptions) (result *v1.EndpointsList, err error) { + result = &v1.EndpointsList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("endpoints"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested endpoints. +func (c *endpoints) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("endpoints"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched endpoints. +func (c *endpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("endpoints"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go new file mode 100644 index 000000000..c4ac11006 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// EventsGetter has a method to return a EventInterface. +// A group's client should implement this interface. +type EventsGetter interface { + Events(namespace string) EventInterface +} + +// EventInterface has methods to work with Event resources. +type EventInterface interface { + Create(*v1.Event) (*v1.Event, error) + Update(*v1.Event) (*v1.Event, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Event, error) + List(opts meta_v1.ListOptions) (*v1.EventList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) + EventExpansion +} + +// events implements EventInterface +type events struct { + client rest.Interface + ns string +} + +// newEvents returns a Events +func newEvents(c *CoreV1Client, namespace string) *events { + return &events{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a event and creates it. Returns the server's representation of the event, and an error, if there is any. +func (c *events) Create(event *v1.Event) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Post(). + Namespace(c.ns). + Resource("events"). + Body(event). + Do(). + Into(result) + return +} + +// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any. +func (c *events) Update(event *v1.Event) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Put(). + Namespace(c.ns). + Resource("events"). + Name(event.Name). + Body(event). + Do(). + Into(result) + return +} + +// Delete takes name of the event and deletes it. Returns an error if one occurs. +func (c *events) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("events"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *events) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("events"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the event, and returns the corresponding event object, and an error if there is any. +func (c *events) Get(name string, options meta_v1.GetOptions) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Get(). + Namespace(c.ns). + Resource("events"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Events that match those selectors. +func (c *events) List(opts meta_v1.ListOptions) (result *v1.EventList, err error) { + result = &v1.EventList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("events"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested events. +func (c *events) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("events"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched event. +func (c *events) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("events"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go new file mode 100644 index 000000000..0ad170b3d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/event_expansion.go @@ -0,0 +1,164 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/api/v1/ref" +) + +// The EventExpansion interface allows manually adding extra methods to the EventInterface. +type EventExpansion interface { + // CreateWithEventNamespace is the same as a Create, except that it sends the request to the event.Namespace. + CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) + // UpdateWithEventNamespace is the same as a Update, except that it sends the request to the event.Namespace. + UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) + PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) + // Search finds events about the specified object + Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) + // Returns the appropriate field selector based on the API version being used to communicate with the server. + // The returned field selector can be used with List and Watch to filter desired events. + GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector +} + +// CreateWithEventNamespace makes a new event. Returns the copy of the event the server returns, +// or an error. The namespace to create the event within is deduced from the +// event; it must either match this event client's namespace, or this event +// client must have been created with the "" namespace. +func (e *events) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) { + if e.ns != "" && event.Namespace != e.ns { + return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns) + } + result := &v1.Event{} + err := e.client.Post(). + NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0). + Resource("events"). + Body(event). + Do(). + Into(result) + return result, err +} + +// UpdateWithEventNamespace modifies an existing event. It returns the copy of the event that the server returns, +// or an error. The namespace and key to update the event within is deduced from the event. The +// namespace must either match this event client's namespace, or this event client must have been +// created with the "" namespace. Update also requires the ResourceVersion to be set in the event +// object. +func (e *events) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) { + result := &v1.Event{} + err := e.client.Put(). + NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0). + Resource("events"). + Name(event.Name). + Body(event). + Do(). + Into(result) + return result, err +} + +// PatchWithEventNamespace modifies an existing event. It returns the copy of +// the event that the server returns, or an error. The namespace and name of the +// target event is deduced from the incompleteEvent. The namespace must either +// match this event client's namespace, or this event client must have been +// created with the "" namespace. +func (e *events) PatchWithEventNamespace(incompleteEvent *v1.Event, data []byte) (*v1.Event, error) { + if e.ns != "" && incompleteEvent.Namespace != e.ns { + return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", incompleteEvent.Namespace, e.ns) + } + result := &v1.Event{} + err := e.client.Patch(types.StrategicMergePatchType). + NamespaceIfScoped(incompleteEvent.Namespace, len(incompleteEvent.Namespace) > 0). + Resource("events"). + Name(incompleteEvent.Name). + Body(data). + Do(). + Into(result) + return result, err +} + +// Search finds events about the specified object. The namespace of the +// object must match this event's client namespace unless the event client +// was made with the "" namespace. +func (e *events) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) { + ref, err := ref.GetReference(scheme, objOrRef) + if err != nil { + return nil, err + } + if e.ns != "" && ref.Namespace != e.ns { + return nil, fmt.Errorf("won't be able to find any events of namespace '%v' in namespace '%v'", ref.Namespace, e.ns) + } + stringRefKind := string(ref.Kind) + var refKind *string + if stringRefKind != "" { + refKind = &stringRefKind + } + stringRefUID := string(ref.UID) + var refUID *string + if stringRefUID != "" { + refUID = &stringRefUID + } + fieldSelector := e.GetFieldSelector(&ref.Name, &ref.Namespace, refKind, refUID) + return e.List(metav1.ListOptions{FieldSelector: fieldSelector.String()}) +} + +// Returns the appropriate field selector based on the API version being used to communicate with the server. +// The returned field selector can be used with List and Watch to filter desired events. +func (e *events) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector { + apiVersion := e.client.APIVersion().String() + field := fields.Set{} + if involvedObjectName != nil { + field[GetInvolvedObjectNameFieldLabel(apiVersion)] = *involvedObjectName + } + if involvedObjectNamespace != nil { + field["involvedObject.namespace"] = *involvedObjectNamespace + } + if involvedObjectKind != nil { + field["involvedObject.kind"] = *involvedObjectKind + } + if involvedObjectUID != nil { + field["involvedObject.uid"] = *involvedObjectUID + } + return field.AsSelector() +} + +// Returns the appropriate field label to use for name of the involved object as per the given API version. +func GetInvolvedObjectNameFieldLabel(version string) string { + return "involvedObject.name" +} + +// TODO: This is a temporary arrangement and will be removed once all clients are moved to use the clientset. +type EventSinkImpl struct { + Interface EventInterface +} + +func (e *EventSinkImpl) Create(event *v1.Event) (*v1.Event, error) { + return e.Interface.CreateWithEventNamespace(event) +} + +func (e *EventSinkImpl) Update(event *v1.Event) (*v1.Event, error) { + return e.Interface.UpdateWithEventNamespace(event) +} + +func (e *EventSinkImpl) Patch(event *v1.Event, data []byte) (*v1.Event, error) { + return e.Interface.PatchWithEventNamespace(event, data) +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD new file mode 100644 index 000000000..bc199cd1b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD @@ -0,0 +1,52 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_componentstatus.go", + "fake_configmap.go", + "fake_core_client.go", + "fake_endpoints.go", + "fake_event.go", + "fake_event_expansion.go", + "fake_limitrange.go", + "fake_namespace.go", + "fake_namespace_expansion.go", + "fake_node.go", + "fake_node_expansion.go", + "fake_persistentvolume.go", + "fake_persistentvolumeclaim.go", + "fake_pod.go", + "fake_pod_expansion.go", + "fake_podtemplate.go", + "fake_replicationcontroller.go", + "fake_resourcequota.go", + "fake_secret.go", + "fake_service.go", + "fake_service_expansion.go", + "fake_serviceaccount.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go new file mode 100644 index 000000000..a1e670de9 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeComponentStatuses implements ComponentStatusInterface +type FakeComponentStatuses struct { + Fake *FakeCoreV1 +} + +var componentstatusesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "componentstatuses"} + +var componentstatusesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ComponentStatus"} + +func (c *FakeComponentStatuses) Create(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &v1.ComponentStatus{}) + if obj == nil { + return nil, err + } + return obj.(*v1.ComponentStatus), err +} + +func (c *FakeComponentStatuses) Update(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &v1.ComponentStatus{}) + if obj == nil { + return nil, err + } + return obj.(*v1.ComponentStatus), err +} + +func (c *FakeComponentStatuses) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(componentstatusesResource, name), &v1.ComponentStatus{}) + return err +} + +func (c *FakeComponentStatuses) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(componentstatusesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1.ComponentStatusList{}) + return err +} + +func (c *FakeComponentStatuses) Get(name string, options meta_v1.GetOptions) (result *v1.ComponentStatus, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(componentstatusesResource, name), &v1.ComponentStatus{}) + if obj == nil { + return nil, err + } + return obj.(*v1.ComponentStatus), err +} + +func (c *FakeComponentStatuses) List(opts meta_v1.ListOptions) (result *v1.ComponentStatusList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &v1.ComponentStatusList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.ComponentStatusList{} + for _, item := range obj.(*v1.ComponentStatusList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested componentStatuses. +func (c *FakeComponentStatuses) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(componentstatusesResource, opts)) +} + +// Patch applies the patch and returns the patched componentStatus. +func (c *FakeComponentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ComponentStatus, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, data, subresources...), &v1.ComponentStatus{}) + if obj == nil { + return nil, err + } + return obj.(*v1.ComponentStatus), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go new file mode 100644 index 000000000..801c44128 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeConfigMaps implements ConfigMapInterface +type FakeConfigMaps struct { + Fake *FakeCoreV1 + ns string +} + +var configmapsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"} + +var configmapsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ConfigMap"} + +func (c *FakeConfigMaps) Create(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &v1.ConfigMap{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ConfigMap), err +} + +func (c *FakeConfigMaps) Update(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &v1.ConfigMap{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ConfigMap), err +} + +func (c *FakeConfigMaps) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(configmapsResource, c.ns, name), &v1.ConfigMap{}) + + return err +} + +func (c *FakeConfigMaps) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(configmapsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.ConfigMapList{}) + return err +} + +func (c *FakeConfigMaps) Get(name string, options meta_v1.GetOptions) (result *v1.ConfigMap, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &v1.ConfigMap{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ConfigMap), err +} + +func (c *FakeConfigMaps) List(opts meta_v1.ListOptions) (result *v1.ConfigMapList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &v1.ConfigMapList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.ConfigMapList{} + for _, item := range obj.(*v1.ConfigMapList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested configMaps. +func (c *FakeConfigMaps) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(configmapsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched configMap. +func (c *FakeConfigMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, data, subresources...), &v1.ConfigMap{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ConfigMap), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go new file mode 100644 index 000000000..0956b4c63 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go @@ -0,0 +1,98 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/core/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeCoreV1 struct { + *testing.Fake +} + +func (c *FakeCoreV1) ComponentStatuses() v1.ComponentStatusInterface { + return &FakeComponentStatuses{c} +} + +func (c *FakeCoreV1) ConfigMaps(namespace string) v1.ConfigMapInterface { + return &FakeConfigMaps{c, namespace} +} + +func (c *FakeCoreV1) Endpoints(namespace string) v1.EndpointsInterface { + return &FakeEndpoints{c, namespace} +} + +func (c *FakeCoreV1) Events(namespace string) v1.EventInterface { + return &FakeEvents{c, namespace} +} + +func (c *FakeCoreV1) LimitRanges(namespace string) v1.LimitRangeInterface { + return &FakeLimitRanges{c, namespace} +} + +func (c *FakeCoreV1) Namespaces() v1.NamespaceInterface { + return &FakeNamespaces{c} +} + +func (c *FakeCoreV1) Nodes() v1.NodeInterface { + return &FakeNodes{c} +} + +func (c *FakeCoreV1) PersistentVolumes() v1.PersistentVolumeInterface { + return &FakePersistentVolumes{c} +} + +func (c *FakeCoreV1) PersistentVolumeClaims(namespace string) v1.PersistentVolumeClaimInterface { + return &FakePersistentVolumeClaims{c, namespace} +} + +func (c *FakeCoreV1) Pods(namespace string) v1.PodInterface { + return &FakePods{c, namespace} +} + +func (c *FakeCoreV1) PodTemplates(namespace string) v1.PodTemplateInterface { + return &FakePodTemplates{c, namespace} +} + +func (c *FakeCoreV1) ReplicationControllers(namespace string) v1.ReplicationControllerInterface { + return &FakeReplicationControllers{c, namespace} +} + +func (c *FakeCoreV1) ResourceQuotas(namespace string) v1.ResourceQuotaInterface { + return &FakeResourceQuotas{c, namespace} +} + +func (c *FakeCoreV1) Secrets(namespace string) v1.SecretInterface { + return &FakeSecrets{c, namespace} +} + +func (c *FakeCoreV1) Services(namespace string) v1.ServiceInterface { + return &FakeServices{c, namespace} +} + +func (c *FakeCoreV1) ServiceAccounts(namespace string) v1.ServiceAccountInterface { + return &FakeServiceAccounts{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeCoreV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go new file mode 100644 index 000000000..f87d2a6e7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeEndpoints implements EndpointsInterface +type FakeEndpoints struct { + Fake *FakeCoreV1 + ns string +} + +var endpointsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "endpoints"} + +var endpointsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Endpoints"} + +func (c *FakeEndpoints) Create(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &v1.Endpoints{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Endpoints), err +} + +func (c *FakeEndpoints) Update(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &v1.Endpoints{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Endpoints), err +} + +func (c *FakeEndpoints) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(endpointsResource, c.ns, name), &v1.Endpoints{}) + + return err +} + +func (c *FakeEndpoints) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(endpointsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.EndpointsList{}) + return err +} + +func (c *FakeEndpoints) Get(name string, options meta_v1.GetOptions) (result *v1.Endpoints, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &v1.Endpoints{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Endpoints), err +} + +func (c *FakeEndpoints) List(opts meta_v1.ListOptions) (result *v1.EndpointsList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &v1.EndpointsList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.EndpointsList{} + for _, item := range obj.(*v1.EndpointsList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested endpoints. +func (c *FakeEndpoints) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(endpointsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched endpoints. +func (c *FakeEndpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, data, subresources...), &v1.Endpoints{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Endpoints), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go new file mode 100644 index 000000000..dba60cd2a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeEvents implements EventInterface +type FakeEvents struct { + Fake *FakeCoreV1 + ns string +} + +var eventsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "events"} + +var eventsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Event"} + +func (c *FakeEvents) Create(event *v1.Event) (result *v1.Event, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &v1.Event{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Event), err +} + +func (c *FakeEvents) Update(event *v1.Event) (result *v1.Event, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &v1.Event{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Event), err +} + +func (c *FakeEvents) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &v1.Event{}) + + return err +} + +func (c *FakeEvents) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.EventList{}) + return err +} + +func (c *FakeEvents) Get(name string, options meta_v1.GetOptions) (result *v1.Event, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(eventsResource, c.ns, name), &v1.Event{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Event), err +} + +func (c *FakeEvents) List(opts meta_v1.ListOptions) (result *v1.EventList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &v1.EventList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.EventList{} + for _, item := range obj.(*v1.EventList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested events. +func (c *FakeEvents) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(eventsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched event. +func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, data, subresources...), &v1.Event{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Event), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go new file mode 100644 index 000000000..c52919746 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go @@ -0,0 +1,89 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) { + action := core.NewRootCreateAction(eventsResource, event) + if c.ns != "" { + action = core.NewCreateAction(eventsResource, c.ns, event) + } + obj, err := c.Fake.Invokes(action, event) + if obj == nil { + return nil, err + } + + return obj.(*v1.Event), err +} + +// Update replaces an existing event. Returns the copy of the event the server returns, or an error. +func (c *FakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) { + action := core.NewRootUpdateAction(eventsResource, event) + if c.ns != "" { + action = core.NewUpdateAction(eventsResource, c.ns, event) + } + obj, err := c.Fake.Invokes(action, event) + if obj == nil { + return nil, err + } + + return obj.(*v1.Event), err +} + +// PatchWithEventNamespace patches an existing event. Returns the copy of the event the server returns, or an error. +func (c *FakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) { + action := core.NewRootPatchAction(eventsResource, event.Name, data) + if c.ns != "" { + action = core.NewPatchAction(eventsResource, c.ns, event.Name, data) + } + obj, err := c.Fake.Invokes(action, event) + if obj == nil { + return nil, err + } + + return obj.(*v1.Event), err +} + +// Search returns a list of events matching the specified object. +func (c *FakeEvents) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) { + action := core.NewRootListAction(eventsResource, eventsKind, metav1.ListOptions{}) + if c.ns != "" { + action = core.NewListAction(eventsResource, eventsKind, c.ns, metav1.ListOptions{}) + } + obj, err := c.Fake.Invokes(action, &v1.EventList{}) + if obj == nil { + return nil, err + } + + return obj.(*v1.EventList), err +} + +func (c *FakeEvents) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector { + action := core.GenericActionImpl{} + action.Verb = "get-field-selector" + action.Resource = eventsResource + + c.Fake.Invokes(action, nil) + return fields.Everything() +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go new file mode 100644 index 000000000..91de20741 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeLimitRanges implements LimitRangeInterface +type FakeLimitRanges struct { + Fake *FakeCoreV1 + ns string +} + +var limitrangesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "limitranges"} + +var limitrangesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "LimitRange"} + +func (c *FakeLimitRanges) Create(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &v1.LimitRange{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.LimitRange), err +} + +func (c *FakeLimitRanges) Update(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &v1.LimitRange{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.LimitRange), err +} + +func (c *FakeLimitRanges) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(limitrangesResource, c.ns, name), &v1.LimitRange{}) + + return err +} + +func (c *FakeLimitRanges) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(limitrangesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.LimitRangeList{}) + return err +} + +func (c *FakeLimitRanges) Get(name string, options meta_v1.GetOptions) (result *v1.LimitRange, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &v1.LimitRange{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.LimitRange), err +} + +func (c *FakeLimitRanges) List(opts meta_v1.ListOptions) (result *v1.LimitRangeList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &v1.LimitRangeList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.LimitRangeList{} + for _, item := range obj.(*v1.LimitRangeList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested limitRanges. +func (c *FakeLimitRanges) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(limitrangesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched limitRange. +func (c *FakeLimitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.LimitRange, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, data, subresources...), &v1.LimitRange{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.LimitRange), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go new file mode 100644 index 000000000..23f62cb54 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go @@ -0,0 +1,121 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeNamespaces implements NamespaceInterface +type FakeNamespaces struct { + Fake *FakeCoreV1 +} + +var namespacesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "namespaces"} + +var namespacesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Namespace"} + +func (c *FakeNamespaces) Create(namespace *v1.Namespace) (result *v1.Namespace, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &v1.Namespace{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Namespace), err +} + +func (c *FakeNamespaces) Update(namespace *v1.Namespace) (result *v1.Namespace, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &v1.Namespace{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Namespace), err +} + +func (c *FakeNamespaces) UpdateStatus(namespace *v1.Namespace) (*v1.Namespace, error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &v1.Namespace{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Namespace), err +} + +func (c *FakeNamespaces) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(namespacesResource, name), &v1.Namespace{}) + return err +} + +func (c *FakeNamespaces) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(namespacesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1.NamespaceList{}) + return err +} + +func (c *FakeNamespaces) Get(name string, options meta_v1.GetOptions) (result *v1.Namespace, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(namespacesResource, name), &v1.Namespace{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Namespace), err +} + +func (c *FakeNamespaces) List(opts meta_v1.ListOptions) (result *v1.NamespaceList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &v1.NamespaceList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.NamespaceList{} + for _, item := range obj.(*v1.NamespaceList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested namespaces. +func (c *FakeNamespaces) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(namespacesResource, opts)) +} + +// Patch applies the patch and returns the patched namespace. +func (c *FakeNamespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, data, subresources...), &v1.Namespace{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Namespace), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go new file mode 100644 index 000000000..1ac7e75d7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go @@ -0,0 +1,37 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/client-go/pkg/api/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeNamespaces) Finalize(namespace *v1.Namespace) (*v1.Namespace, error) { + action := core.CreateActionImpl{} + action.Verb = "create" + action.Resource = namespacesResource + action.Subresource = "finalize" + action.Object = namespace + + obj, err := c.Fake.Invokes(action, namespace) + if obj == nil { + return nil, err + } + + return obj.(*v1.Namespace), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go new file mode 100644 index 000000000..f44776489 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go @@ -0,0 +1,121 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeNodes implements NodeInterface +type FakeNodes struct { + Fake *FakeCoreV1 +} + +var nodesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "nodes"} + +var nodesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Node"} + +func (c *FakeNodes) Create(node *v1.Node) (result *v1.Node, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(nodesResource, node), &v1.Node{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Node), err +} + +func (c *FakeNodes) Update(node *v1.Node) (result *v1.Node, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(nodesResource, node), &v1.Node{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Node), err +} + +func (c *FakeNodes) UpdateStatus(node *v1.Node) (*v1.Node, error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &v1.Node{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Node), err +} + +func (c *FakeNodes) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(nodesResource, name), &v1.Node{}) + return err +} + +func (c *FakeNodes) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(nodesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1.NodeList{}) + return err +} + +func (c *FakeNodes) Get(name string, options meta_v1.GetOptions) (result *v1.Node, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(nodesResource, name), &v1.Node{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Node), err +} + +func (c *FakeNodes) List(opts meta_v1.ListOptions) (result *v1.NodeList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &v1.NodeList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.NodeList{} + for _, item := range obj.(*v1.NodeList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested nodes. +func (c *FakeNodes) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(nodesResource, opts)) +} + +// Patch applies the patch and returns the patched node. +func (c *FakeNodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, data, subresources...), &v1.Node{}) + if obj == nil { + return nil, err + } + return obj.(*v1.Node), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go new file mode 100644 index 000000000..597334582 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go @@ -0,0 +1,32 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/client-go/pkg/api/v1" + core "k8s.io/client-go/testing" +) + +func (c *FakeNodes) PatchStatus(nodeName string, data []byte) (*v1.Node, error) { + obj, err := c.Fake.Invokes( + core.NewRootPatchSubresourceAction(nodesResource, nodeName, data, "status"), &v1.Node{}) + if obj == nil { + return nil, err + } + + return obj.(*v1.Node), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go new file mode 100644 index 000000000..c4af9f095 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go @@ -0,0 +1,121 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakePersistentVolumes implements PersistentVolumeInterface +type FakePersistentVolumes struct { + Fake *FakeCoreV1 +} + +var persistentvolumesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumes"} + +var persistentvolumesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolume"} + +func (c *FakePersistentVolumes) Create(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &v1.PersistentVolume{}) + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolume), err +} + +func (c *FakePersistentVolumes) Update(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &v1.PersistentVolume{}) + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolume), err +} + +func (c *FakePersistentVolumes) UpdateStatus(persistentVolume *v1.PersistentVolume) (*v1.PersistentVolume, error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &v1.PersistentVolume{}) + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolume), err +} + +func (c *FakePersistentVolumes) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(persistentvolumesResource, name), &v1.PersistentVolume{}) + return err +} + +func (c *FakePersistentVolumes) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(persistentvolumesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1.PersistentVolumeList{}) + return err +} + +func (c *FakePersistentVolumes) Get(name string, options meta_v1.GetOptions) (result *v1.PersistentVolume, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &v1.PersistentVolume{}) + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolume), err +} + +func (c *FakePersistentVolumes) List(opts meta_v1.ListOptions) (result *v1.PersistentVolumeList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &v1.PersistentVolumeList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.PersistentVolumeList{} + for _, item := range obj.(*v1.PersistentVolumeList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested persistentVolumes. +func (c *FakePersistentVolumes) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(persistentvolumesResource, opts)) +} + +// Patch applies the patch and returns the patched persistentVolume. +func (c *FakePersistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolume, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, data, subresources...), &v1.PersistentVolume{}) + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolume), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go new file mode 100644 index 000000000..cb6280877 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakePersistentVolumeClaims implements PersistentVolumeClaimInterface +type FakePersistentVolumeClaims struct { + Fake *FakeCoreV1 + ns string +} + +var persistentvolumeclaimsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumeclaims"} + +var persistentvolumeclaimsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolumeClaim"} + +func (c *FakePersistentVolumeClaims) Create(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &v1.PersistentVolumeClaim{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolumeClaim), err +} + +func (c *FakePersistentVolumeClaims) Update(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &v1.PersistentVolumeClaim{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolumeClaim), err +} + +func (c *FakePersistentVolumeClaims) UpdateStatus(persistentVolumeClaim *v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &v1.PersistentVolumeClaim{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolumeClaim), err +} + +func (c *FakePersistentVolumeClaims) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(persistentvolumeclaimsResource, c.ns, name), &v1.PersistentVolumeClaim{}) + + return err +} + +func (c *FakePersistentVolumeClaims) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(persistentvolumeclaimsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.PersistentVolumeClaimList{}) + return err +} + +func (c *FakePersistentVolumeClaims) Get(name string, options meta_v1.GetOptions) (result *v1.PersistentVolumeClaim, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &v1.PersistentVolumeClaim{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolumeClaim), err +} + +func (c *FakePersistentVolumeClaims) List(opts meta_v1.ListOptions) (result *v1.PersistentVolumeClaimList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &v1.PersistentVolumeClaimList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.PersistentVolumeClaimList{} + for _, item := range obj.(*v1.PersistentVolumeClaimList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested persistentVolumeClaims. +func (c *FakePersistentVolumeClaims) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(persistentvolumeclaimsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched persistentVolumeClaim. +func (c *FakePersistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, data, subresources...), &v1.PersistentVolumeClaim{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PersistentVolumeClaim), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go new file mode 100644 index 000000000..864e8137d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakePods implements PodInterface +type FakePods struct { + Fake *FakeCoreV1 + ns string +} + +var podsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"} + +var podsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Pod"} + +func (c *FakePods) Create(pod *v1.Pod) (result *v1.Pod, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &v1.Pod{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Pod), err +} + +func (c *FakePods) Update(pod *v1.Pod) (result *v1.Pod, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &v1.Pod{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Pod), err +} + +func (c *FakePods) UpdateStatus(pod *v1.Pod) (*v1.Pod, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &v1.Pod{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Pod), err +} + +func (c *FakePods) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(podsResource, c.ns, name), &v1.Pod{}) + + return err +} + +func (c *FakePods) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(podsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.PodList{}) + return err +} + +func (c *FakePods) Get(name string, options meta_v1.GetOptions) (result *v1.Pod, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(podsResource, c.ns, name), &v1.Pod{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Pod), err +} + +func (c *FakePods) List(opts meta_v1.ListOptions) (result *v1.PodList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &v1.PodList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.PodList{} + for _, item := range obj.(*v1.PodList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested pods. +func (c *FakePods) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(podsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched pod. +func (c *FakePods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, data, subresources...), &v1.Pod{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Pod), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go new file mode 100644 index 000000000..c9d404e16 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go @@ -0,0 +1,58 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/client-go/pkg/api/v1" + policy "k8s.io/client-go/pkg/apis/policy/v1beta1" + restclient "k8s.io/client-go/rest" + core "k8s.io/client-go/testing" +) + +func (c *FakePods) Bind(binding *v1.Binding) error { + action := core.CreateActionImpl{} + action.Verb = "create" + action.Resource = podsResource + action.Subresource = "bindings" + action.Object = binding + + _, err := c.Fake.Invokes(action, binding) + return err +} + +func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request { + action := core.GenericActionImpl{} + action.Verb = "get" + action.Namespace = c.ns + action.Resource = podsResource + action.Subresource = "logs" + action.Value = opts + + _, _ = c.Fake.Invokes(action, &v1.Pod{}) + return &restclient.Request{} +} + +func (c *FakePods) Evict(eviction *policy.Eviction) error { + action := core.CreateActionImpl{} + action.Verb = "create" + action.Resource = podsResource + action.Subresource = "eviction" + action.Object = eviction + + _, err := c.Fake.Invokes(action, eviction) + return err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go new file mode 100644 index 000000000..e6ac59c45 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakePodTemplates implements PodTemplateInterface +type FakePodTemplates struct { + Fake *FakeCoreV1 + ns string +} + +var podtemplatesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "podtemplates"} + +var podtemplatesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PodTemplate"} + +func (c *FakePodTemplates) Create(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &v1.PodTemplate{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PodTemplate), err +} + +func (c *FakePodTemplates) Update(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &v1.PodTemplate{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PodTemplate), err +} + +func (c *FakePodTemplates) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(podtemplatesResource, c.ns, name), &v1.PodTemplate{}) + + return err +} + +func (c *FakePodTemplates) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(podtemplatesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.PodTemplateList{}) + return err +} + +func (c *FakePodTemplates) Get(name string, options meta_v1.GetOptions) (result *v1.PodTemplate, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &v1.PodTemplate{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PodTemplate), err +} + +func (c *FakePodTemplates) List(opts meta_v1.ListOptions) (result *v1.PodTemplateList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &v1.PodTemplateList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.PodTemplateList{} + for _, item := range obj.(*v1.PodTemplateList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested podTemplates. +func (c *FakePodTemplates) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(podtemplatesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched podTemplate. +func (c *FakePodTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PodTemplate, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, data, subresources...), &v1.PodTemplate{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.PodTemplate), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go new file mode 100644 index 000000000..005a28bb3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeReplicationControllers implements ReplicationControllerInterface +type FakeReplicationControllers struct { + Fake *FakeCoreV1 + ns string +} + +var replicationcontrollersResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "replicationcontrollers"} + +var replicationcontrollersKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ReplicationController"} + +func (c *FakeReplicationControllers) Create(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &v1.ReplicationController{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ReplicationController), err +} + +func (c *FakeReplicationControllers) Update(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &v1.ReplicationController{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ReplicationController), err +} + +func (c *FakeReplicationControllers) UpdateStatus(replicationController *v1.ReplicationController) (*v1.ReplicationController, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &v1.ReplicationController{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ReplicationController), err +} + +func (c *FakeReplicationControllers) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(replicationcontrollersResource, c.ns, name), &v1.ReplicationController{}) + + return err +} + +func (c *FakeReplicationControllers) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(replicationcontrollersResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.ReplicationControllerList{}) + return err +} + +func (c *FakeReplicationControllers) Get(name string, options meta_v1.GetOptions) (result *v1.ReplicationController, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &v1.ReplicationController{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ReplicationController), err +} + +func (c *FakeReplicationControllers) List(opts meta_v1.ListOptions) (result *v1.ReplicationControllerList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &v1.ReplicationControllerList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.ReplicationControllerList{} + for _, item := range obj.(*v1.ReplicationControllerList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested replicationControllers. +func (c *FakeReplicationControllers) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(replicationcontrollersResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched replicationController. +func (c *FakeReplicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ReplicationController, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, data, subresources...), &v1.ReplicationController{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ReplicationController), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go new file mode 100644 index 000000000..00d633020 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeResourceQuotas implements ResourceQuotaInterface +type FakeResourceQuotas struct { + Fake *FakeCoreV1 + ns string +} + +var resourcequotasResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "resourcequotas"} + +var resourcequotasKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ResourceQuota"} + +func (c *FakeResourceQuotas) Create(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &v1.ResourceQuota{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ResourceQuota), err +} + +func (c *FakeResourceQuotas) Update(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &v1.ResourceQuota{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ResourceQuota), err +} + +func (c *FakeResourceQuotas) UpdateStatus(resourceQuota *v1.ResourceQuota) (*v1.ResourceQuota, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &v1.ResourceQuota{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ResourceQuota), err +} + +func (c *FakeResourceQuotas) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(resourcequotasResource, c.ns, name), &v1.ResourceQuota{}) + + return err +} + +func (c *FakeResourceQuotas) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(resourcequotasResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.ResourceQuotaList{}) + return err +} + +func (c *FakeResourceQuotas) Get(name string, options meta_v1.GetOptions) (result *v1.ResourceQuota, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &v1.ResourceQuota{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ResourceQuota), err +} + +func (c *FakeResourceQuotas) List(opts meta_v1.ListOptions) (result *v1.ResourceQuotaList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &v1.ResourceQuotaList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.ResourceQuotaList{} + for _, item := range obj.(*v1.ResourceQuotaList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested resourceQuotas. +func (c *FakeResourceQuotas) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(resourcequotasResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched resourceQuota. +func (c *FakeResourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ResourceQuota, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, data, subresources...), &v1.ResourceQuota{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ResourceQuota), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go new file mode 100644 index 000000000..375ed0330 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeSecrets implements SecretInterface +type FakeSecrets struct { + Fake *FakeCoreV1 + ns string +} + +var secretsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"} + +var secretsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Secret"} + +func (c *FakeSecrets) Create(secret *v1.Secret) (result *v1.Secret, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &v1.Secret{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Secret), err +} + +func (c *FakeSecrets) Update(secret *v1.Secret) (result *v1.Secret, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &v1.Secret{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Secret), err +} + +func (c *FakeSecrets) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(secretsResource, c.ns, name), &v1.Secret{}) + + return err +} + +func (c *FakeSecrets) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(secretsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.SecretList{}) + return err +} + +func (c *FakeSecrets) Get(name string, options meta_v1.GetOptions) (result *v1.Secret, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(secretsResource, c.ns, name), &v1.Secret{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Secret), err +} + +func (c *FakeSecrets) List(opts meta_v1.ListOptions) (result *v1.SecretList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &v1.SecretList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.SecretList{} + for _, item := range obj.(*v1.SecretList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested secrets. +func (c *FakeSecrets) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(secretsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched secret. +func (c *FakeSecrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, data, subresources...), &v1.Secret{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Secret), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go new file mode 100644 index 000000000..a755ffdf9 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeServices implements ServiceInterface +type FakeServices struct { + Fake *FakeCoreV1 + ns string +} + +var servicesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "services"} + +var servicesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Service"} + +func (c *FakeServices) Create(service *v1.Service) (result *v1.Service, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &v1.Service{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Service), err +} + +func (c *FakeServices) Update(service *v1.Service) (result *v1.Service, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &v1.Service{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Service), err +} + +func (c *FakeServices) UpdateStatus(service *v1.Service) (*v1.Service, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &v1.Service{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Service), err +} + +func (c *FakeServices) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(servicesResource, c.ns, name), &v1.Service{}) + + return err +} + +func (c *FakeServices) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(servicesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.ServiceList{}) + return err +} + +func (c *FakeServices) Get(name string, options meta_v1.GetOptions) (result *v1.Service, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(servicesResource, c.ns, name), &v1.Service{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Service), err +} + +func (c *FakeServices) List(opts meta_v1.ListOptions) (result *v1.ServiceList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &v1.ServiceList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.ServiceList{} + for _, item := range obj.(*v1.ServiceList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested services. +func (c *FakeServices) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(servicesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched service. +func (c *FakeServices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, data, subresources...), &v1.Service{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.Service), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go new file mode 100644 index 000000000..92e4930d7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go @@ -0,0 +1,26 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + restclient "k8s.io/client-go/rest" + core "k8s.io/client-go/testing" +) + +func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper { + return c.Fake.InvokesProxy(core.NewProxyGetAction(servicesResource, c.ns, scheme, name, port, path, params)) +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go new file mode 100644 index 000000000..a3837cbb5 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/api/v1" + testing "k8s.io/client-go/testing" +) + +// FakeServiceAccounts implements ServiceAccountInterface +type FakeServiceAccounts struct { + Fake *FakeCoreV1 + ns string +} + +var serviceaccountsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"} + +var serviceaccountsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ServiceAccount"} + +func (c *FakeServiceAccounts) Create(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &v1.ServiceAccount{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ServiceAccount), err +} + +func (c *FakeServiceAccounts) Update(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &v1.ServiceAccount{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ServiceAccount), err +} + +func (c *FakeServiceAccounts) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(serviceaccountsResource, c.ns, name), &v1.ServiceAccount{}) + + return err +} + +func (c *FakeServiceAccounts) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(serviceaccountsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.ServiceAccountList{}) + return err +} + +func (c *FakeServiceAccounts) Get(name string, options meta_v1.GetOptions) (result *v1.ServiceAccount, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &v1.ServiceAccount{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ServiceAccount), err +} + +func (c *FakeServiceAccounts) List(opts meta_v1.ListOptions) (result *v1.ServiceAccountList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &v1.ServiceAccountList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.ServiceAccountList{} + for _, item := range obj.(*v1.ServiceAccountList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested serviceAccounts. +func (c *FakeServiceAccounts) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(serviceaccountsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched serviceAccount. +func (c *FakeServiceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, data, subresources...), &v1.ServiceAccount{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.ServiceAccount), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go new file mode 100644 index 000000000..5fe0585b4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/generated_expansion.go @@ -0,0 +1,39 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type ComponentStatusExpansion interface{} + +type ConfigMapExpansion interface{} + +type EndpointsExpansion interface{} + +type LimitRangeExpansion interface{} + +type PersistentVolumeExpansion interface{} + +type PersistentVolumeClaimExpansion interface{} + +type PodTemplateExpansion interface{} + +type ReplicationControllerExpansion interface{} + +type ResourceQuotaExpansion interface{} + +type SecretExpansion interface{} + +type ServiceAccountExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go new file mode 100644 index 000000000..998f03452 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/limitrange.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// LimitRangesGetter has a method to return a LimitRangeInterface. +// A group's client should implement this interface. +type LimitRangesGetter interface { + LimitRanges(namespace string) LimitRangeInterface +} + +// LimitRangeInterface has methods to work with LimitRange resources. +type LimitRangeInterface interface { + Create(*v1.LimitRange) (*v1.LimitRange, error) + Update(*v1.LimitRange) (*v1.LimitRange, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.LimitRange, error) + List(opts meta_v1.ListOptions) (*v1.LimitRangeList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.LimitRange, err error) + LimitRangeExpansion +} + +// limitRanges implements LimitRangeInterface +type limitRanges struct { + client rest.Interface + ns string +} + +// newLimitRanges returns a LimitRanges +func newLimitRanges(c *CoreV1Client, namespace string) *limitRanges { + return &limitRanges{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a limitRange and creates it. Returns the server's representation of the limitRange, and an error, if there is any. +func (c *limitRanges) Create(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Post(). + Namespace(c.ns). + Resource("limitranges"). + Body(limitRange). + Do(). + Into(result) + return +} + +// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any. +func (c *limitRanges) Update(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Put(). + Namespace(c.ns). + Resource("limitranges"). + Name(limitRange.Name). + Body(limitRange). + Do(). + Into(result) + return +} + +// Delete takes name of the limitRange and deletes it. Returns an error if one occurs. +func (c *limitRanges) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("limitranges"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *limitRanges) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("limitranges"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any. +func (c *limitRanges) Get(name string, options meta_v1.GetOptions) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Get(). + Namespace(c.ns). + Resource("limitranges"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of LimitRanges that match those selectors. +func (c *limitRanges) List(opts meta_v1.ListOptions) (result *v1.LimitRangeList, err error) { + result = &v1.LimitRangeList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("limitranges"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested limitRanges. +func (c *limitRanges) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("limitranges"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched limitRange. +func (c *limitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("limitranges"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go new file mode 100644 index 000000000..3092bd8e1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace.go @@ -0,0 +1,161 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// NamespacesGetter has a method to return a NamespaceInterface. +// A group's client should implement this interface. +type NamespacesGetter interface { + Namespaces() NamespaceInterface +} + +// NamespaceInterface has methods to work with Namespace resources. +type NamespaceInterface interface { + Create(*v1.Namespace) (*v1.Namespace, error) + Update(*v1.Namespace) (*v1.Namespace, error) + UpdateStatus(*v1.Namespace) (*v1.Namespace, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Namespace, error) + List(opts meta_v1.ListOptions) (*v1.NamespaceList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) + NamespaceExpansion +} + +// namespaces implements NamespaceInterface +type namespaces struct { + client rest.Interface +} + +// newNamespaces returns a Namespaces +func newNamespaces(c *CoreV1Client) *namespaces { + return &namespaces{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a namespace and creates it. Returns the server's representation of the namespace, and an error, if there is any. +func (c *namespaces) Create(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Post(). + Resource("namespaces"). + Body(namespace). + Do(). + Into(result) + return +} + +// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any. +func (c *namespaces) Update(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Put(). + Resource("namespaces"). + Name(namespace.Name). + Body(namespace). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *namespaces) UpdateStatus(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Put(). + Resource("namespaces"). + Name(namespace.Name). + SubResource("status"). + Body(namespace). + Do(). + Into(result) + return +} + +// Delete takes name of the namespace and deletes it. Returns an error if one occurs. +func (c *namespaces) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Resource("namespaces"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *namespaces) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Resource("namespaces"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any. +func (c *namespaces) Get(name string, options meta_v1.GetOptions) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Get(). + Resource("namespaces"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Namespaces that match those selectors. +func (c *namespaces) List(opts meta_v1.ListOptions) (result *v1.NamespaceList, err error) { + result = &v1.NamespaceList{} + err = c.client.Get(). + Resource("namespaces"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested namespaces. +func (c *namespaces) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("namespaces"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched namespace. +func (c *namespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Patch(pt). + Resource("namespaces"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go new file mode 100644 index 000000000..203430000 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/namespace_expansion.go @@ -0,0 +1,31 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import "k8s.io/client-go/pkg/api/v1" + +// The NamespaceExpansion interface allows manually adding extra methods to the NamespaceInterface. +type NamespaceExpansion interface { + Finalize(item *v1.Namespace) (*v1.Namespace, error) +} + +// Finalize takes the representation of a namespace to update. Returns the server's representation of the namespace, and an error, if it occurs. +func (c *namespaces) Finalize(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Put().Resource("namespaces").Name(namespace.Name).SubResource("finalize").Body(namespace).Do().Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go new file mode 100644 index 000000000..6b82d4fab --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node.go @@ -0,0 +1,161 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// NodesGetter has a method to return a NodeInterface. +// A group's client should implement this interface. +type NodesGetter interface { + Nodes() NodeInterface +} + +// NodeInterface has methods to work with Node resources. +type NodeInterface interface { + Create(*v1.Node) (*v1.Node, error) + Update(*v1.Node) (*v1.Node, error) + UpdateStatus(*v1.Node) (*v1.Node, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Node, error) + List(opts meta_v1.ListOptions) (*v1.NodeList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) + NodeExpansion +} + +// nodes implements NodeInterface +type nodes struct { + client rest.Interface +} + +// newNodes returns a Nodes +func newNodes(c *CoreV1Client) *nodes { + return &nodes{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a node and creates it. Returns the server's representation of the node, and an error, if there is any. +func (c *nodes) Create(node *v1.Node) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Post(). + Resource("nodes"). + Body(node). + Do(). + Into(result) + return +} + +// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any. +func (c *nodes) Update(node *v1.Node) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Put(). + Resource("nodes"). + Name(node.Name). + Body(node). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *nodes) UpdateStatus(node *v1.Node) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Put(). + Resource("nodes"). + Name(node.Name). + SubResource("status"). + Body(node). + Do(). + Into(result) + return +} + +// Delete takes name of the node and deletes it. Returns an error if one occurs. +func (c *nodes) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Resource("nodes"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *nodes) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Resource("nodes"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the node, and returns the corresponding node object, and an error if there is any. +func (c *nodes) Get(name string, options meta_v1.GetOptions) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Get(). + Resource("nodes"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Nodes that match those selectors. +func (c *nodes) List(opts meta_v1.ListOptions) (result *v1.NodeList, err error) { + result = &v1.NodeList{} + err = c.client.Get(). + Resource("nodes"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested nodes. +func (c *nodes) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("nodes"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched node. +func (c *nodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Patch(pt). + Resource("nodes"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go new file mode 100644 index 000000000..29c12aabc --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/node_expansion.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/pkg/api/v1" +) + +// The NodeExpansion interface allows manually adding extra methods to the NodeInterface. +type NodeExpansion interface { + // PatchStatus modifies the status of an existing node. It returns the copy + // of the node that the server returns, or an error. + PatchStatus(nodeName string, data []byte) (*v1.Node, error) +} + +// PatchStatus modifies the status of an existing node. It returns the copy of +// the node that the server returns, or an error. +func (c *nodes) PatchStatus(nodeName string, data []byte) (*v1.Node, error) { + result := &v1.Node{} + err := c.client.Patch(types.StrategicMergePatchType). + Resource("nodes"). + Name(nodeName). + SubResource("status"). + Body(data). + Do(). + Into(result) + return result, err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go new file mode 100644 index 000000000..16a4b7316 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolume.go @@ -0,0 +1,161 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// PersistentVolumesGetter has a method to return a PersistentVolumeInterface. +// A group's client should implement this interface. +type PersistentVolumesGetter interface { + PersistentVolumes() PersistentVolumeInterface +} + +// PersistentVolumeInterface has methods to work with PersistentVolume resources. +type PersistentVolumeInterface interface { + Create(*v1.PersistentVolume) (*v1.PersistentVolume, error) + Update(*v1.PersistentVolume) (*v1.PersistentVolume, error) + UpdateStatus(*v1.PersistentVolume) (*v1.PersistentVolume, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.PersistentVolume, error) + List(opts meta_v1.ListOptions) (*v1.PersistentVolumeList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolume, err error) + PersistentVolumeExpansion +} + +// persistentVolumes implements PersistentVolumeInterface +type persistentVolumes struct { + client rest.Interface +} + +// newPersistentVolumes returns a PersistentVolumes +func newPersistentVolumes(c *CoreV1Client) *persistentVolumes { + return &persistentVolumes{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a persistentVolume and creates it. Returns the server's representation of the persistentVolume, and an error, if there is any. +func (c *persistentVolumes) Create(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Post(). + Resource("persistentvolumes"). + Body(persistentVolume). + Do(). + Into(result) + return +} + +// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any. +func (c *persistentVolumes) Update(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Put(). + Resource("persistentvolumes"). + Name(persistentVolume.Name). + Body(persistentVolume). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *persistentVolumes) UpdateStatus(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Put(). + Resource("persistentvolumes"). + Name(persistentVolume.Name). + SubResource("status"). + Body(persistentVolume). + Do(). + Into(result) + return +} + +// Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs. +func (c *persistentVolumes) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Resource("persistentvolumes"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *persistentVolumes) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Resource("persistentvolumes"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any. +func (c *persistentVolumes) Get(name string, options meta_v1.GetOptions) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Get(). + Resource("persistentvolumes"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors. +func (c *persistentVolumes) List(opts meta_v1.ListOptions) (result *v1.PersistentVolumeList, err error) { + result = &v1.PersistentVolumeList{} + err = c.client.Get(). + Resource("persistentvolumes"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested persistentVolumes. +func (c *persistentVolumes) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("persistentvolumes"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched persistentVolume. +func (c *persistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Patch(pt). + Resource("persistentvolumes"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go new file mode 100644 index 000000000..ae7cc4a4f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/persistentvolumeclaim.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// PersistentVolumeClaimsGetter has a method to return a PersistentVolumeClaimInterface. +// A group's client should implement this interface. +type PersistentVolumeClaimsGetter interface { + PersistentVolumeClaims(namespace string) PersistentVolumeClaimInterface +} + +// PersistentVolumeClaimInterface has methods to work with PersistentVolumeClaim resources. +type PersistentVolumeClaimInterface interface { + Create(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) + Update(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) + UpdateStatus(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.PersistentVolumeClaim, error) + List(opts meta_v1.ListOptions) (*v1.PersistentVolumeClaimList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) + PersistentVolumeClaimExpansion +} + +// persistentVolumeClaims implements PersistentVolumeClaimInterface +type persistentVolumeClaims struct { + client rest.Interface + ns string +} + +// newPersistentVolumeClaims returns a PersistentVolumeClaims +func newPersistentVolumeClaims(c *CoreV1Client, namespace string) *persistentVolumeClaims { + return &persistentVolumeClaims{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a persistentVolumeClaim and creates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any. +func (c *persistentVolumeClaims) Create(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Post(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Body(persistentVolumeClaim). + Do(). + Into(result) + return +} + +// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any. +func (c *persistentVolumeClaims) Update(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Put(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(persistentVolumeClaim.Name). + Body(persistentVolumeClaim). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *persistentVolumeClaims) UpdateStatus(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Put(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(persistentVolumeClaim.Name). + SubResource("status"). + Body(persistentVolumeClaim). + Do(). + Into(result) + return +} + +// Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs. +func (c *persistentVolumeClaims) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *persistentVolumeClaims) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any. +func (c *persistentVolumeClaims) Get(name string, options meta_v1.GetOptions) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Get(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors. +func (c *persistentVolumeClaims) List(opts meta_v1.ListOptions) (result *v1.PersistentVolumeClaimList, err error) { + result = &v1.PersistentVolumeClaimList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested persistentVolumeClaims. +func (c *persistentVolumeClaims) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched persistentVolumeClaim. +func (c *persistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go new file mode 100644 index 000000000..5648750ea --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// PodsGetter has a method to return a PodInterface. +// A group's client should implement this interface. +type PodsGetter interface { + Pods(namespace string) PodInterface +} + +// PodInterface has methods to work with Pod resources. +type PodInterface interface { + Create(*v1.Pod) (*v1.Pod, error) + Update(*v1.Pod) (*v1.Pod, error) + UpdateStatus(*v1.Pod) (*v1.Pod, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Pod, error) + List(opts meta_v1.ListOptions) (*v1.PodList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) + PodExpansion +} + +// pods implements PodInterface +type pods struct { + client rest.Interface + ns string +} + +// newPods returns a Pods +func newPods(c *CoreV1Client, namespace string) *pods { + return &pods{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a pod and creates it. Returns the server's representation of the pod, and an error, if there is any. +func (c *pods) Create(pod *v1.Pod) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Post(). + Namespace(c.ns). + Resource("pods"). + Body(pod). + Do(). + Into(result) + return +} + +// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any. +func (c *pods) Update(pod *v1.Pod) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Put(). + Namespace(c.ns). + Resource("pods"). + Name(pod.Name). + Body(pod). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *pods) UpdateStatus(pod *v1.Pod) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Put(). + Namespace(c.ns). + Resource("pods"). + Name(pod.Name). + SubResource("status"). + Body(pod). + Do(). + Into(result) + return +} + +// Delete takes name of the pod and deletes it. Returns an error if one occurs. +func (c *pods) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("pods"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *pods) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any. +func (c *pods) Get(name string, options meta_v1.GetOptions) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Get(). + Namespace(c.ns). + Resource("pods"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Pods that match those selectors. +func (c *pods) List(opts meta_v1.ListOptions) (result *v1.PodList, err error) { + result = &v1.PodList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested pods. +func (c *pods) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched pod. +func (c *pods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("pods"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go new file mode 100644 index 000000000..3919289e5 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/pod_expansion.go @@ -0,0 +1,45 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + policy "k8s.io/client-go/pkg/apis/policy/v1beta1" + restclient "k8s.io/client-go/rest" +) + +// The PodExpansion interface allows manually adding extra methods to the PodInterface. +type PodExpansion interface { + Bind(binding *v1.Binding) error + Evict(eviction *policy.Eviction) error + GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request +} + +// Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored). +func (c *pods) Bind(binding *v1.Binding) error { + return c.client.Post().Namespace(c.ns).Resource("pods").Name(binding.Name).SubResource("binding").Body(binding).Do().Error() +} + +func (c *pods) Evict(eviction *policy.Eviction) error { + return c.client.Post().Namespace(c.ns).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do().Error() +} + +// Get constructs a request for getting the logs for a pod +func (c *pods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request { + return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, scheme.ParameterCodec) +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go new file mode 100644 index 000000000..19c82f17b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/podtemplate.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// PodTemplatesGetter has a method to return a PodTemplateInterface. +// A group's client should implement this interface. +type PodTemplatesGetter interface { + PodTemplates(namespace string) PodTemplateInterface +} + +// PodTemplateInterface has methods to work with PodTemplate resources. +type PodTemplateInterface interface { + Create(*v1.PodTemplate) (*v1.PodTemplate, error) + Update(*v1.PodTemplate) (*v1.PodTemplate, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.PodTemplate, error) + List(opts meta_v1.ListOptions) (*v1.PodTemplateList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PodTemplate, err error) + PodTemplateExpansion +} + +// podTemplates implements PodTemplateInterface +type podTemplates struct { + client rest.Interface + ns string +} + +// newPodTemplates returns a PodTemplates +func newPodTemplates(c *CoreV1Client, namespace string) *podTemplates { + return &podTemplates{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a podTemplate and creates it. Returns the server's representation of the podTemplate, and an error, if there is any. +func (c *podTemplates) Create(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Post(). + Namespace(c.ns). + Resource("podtemplates"). + Body(podTemplate). + Do(). + Into(result) + return +} + +// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any. +func (c *podTemplates) Update(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Put(). + Namespace(c.ns). + Resource("podtemplates"). + Name(podTemplate.Name). + Body(podTemplate). + Do(). + Into(result) + return +} + +// Delete takes name of the podTemplate and deletes it. Returns an error if one occurs. +func (c *podTemplates) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("podtemplates"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podTemplates) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("podtemplates"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any. +func (c *podTemplates) Get(name string, options meta_v1.GetOptions) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Get(). + Namespace(c.ns). + Resource("podtemplates"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodTemplates that match those selectors. +func (c *podTemplates) List(opts meta_v1.ListOptions) (result *v1.PodTemplateList, err error) { + result = &v1.PodTemplateList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("podtemplates"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podTemplates. +func (c *podTemplates) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("podtemplates"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podTemplate. +func (c *podTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("podtemplates"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go new file mode 100644 index 000000000..2f4f4fa9e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/replicationcontroller.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// ReplicationControllersGetter has a method to return a ReplicationControllerInterface. +// A group's client should implement this interface. +type ReplicationControllersGetter interface { + ReplicationControllers(namespace string) ReplicationControllerInterface +} + +// ReplicationControllerInterface has methods to work with ReplicationController resources. +type ReplicationControllerInterface interface { + Create(*v1.ReplicationController) (*v1.ReplicationController, error) + Update(*v1.ReplicationController) (*v1.ReplicationController, error) + UpdateStatus(*v1.ReplicationController) (*v1.ReplicationController, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.ReplicationController, error) + List(opts meta_v1.ListOptions) (*v1.ReplicationControllerList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ReplicationController, err error) + ReplicationControllerExpansion +} + +// replicationControllers implements ReplicationControllerInterface +type replicationControllers struct { + client rest.Interface + ns string +} + +// newReplicationControllers returns a ReplicationControllers +func newReplicationControllers(c *CoreV1Client, namespace string) *replicationControllers { + return &replicationControllers{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a replicationController and creates it. Returns the server's representation of the replicationController, and an error, if there is any. +func (c *replicationControllers) Create(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Post(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Body(replicationController). + Do(). + Into(result) + return +} + +// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any. +func (c *replicationControllers) Update(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(replicationController.Name). + Body(replicationController). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *replicationControllers) UpdateStatus(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(replicationController.Name). + SubResource("status"). + Body(replicationController). + Do(). + Into(result) + return +} + +// Delete takes name of the replicationController and deletes it. Returns an error if one occurs. +func (c *replicationControllers) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *replicationControllers) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicationcontrollers"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any. +func (c *replicationControllers) Get(name string, options meta_v1.GetOptions) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors. +func (c *replicationControllers) List(opts meta_v1.ListOptions) (result *v1.ReplicationControllerList, err error) { + result = &v1.ReplicationControllerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicationcontrollers"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested replicationControllers. +func (c *replicationControllers) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("replicationcontrollers"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched replicationController. +func (c *replicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("replicationcontrollers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go new file mode 100644 index 000000000..565fe1e6d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/resourcequota.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// ResourceQuotasGetter has a method to return a ResourceQuotaInterface. +// A group's client should implement this interface. +type ResourceQuotasGetter interface { + ResourceQuotas(namespace string) ResourceQuotaInterface +} + +// ResourceQuotaInterface has methods to work with ResourceQuota resources. +type ResourceQuotaInterface interface { + Create(*v1.ResourceQuota) (*v1.ResourceQuota, error) + Update(*v1.ResourceQuota) (*v1.ResourceQuota, error) + UpdateStatus(*v1.ResourceQuota) (*v1.ResourceQuota, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.ResourceQuota, error) + List(opts meta_v1.ListOptions) (*v1.ResourceQuotaList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ResourceQuota, err error) + ResourceQuotaExpansion +} + +// resourceQuotas implements ResourceQuotaInterface +type resourceQuotas struct { + client rest.Interface + ns string +} + +// newResourceQuotas returns a ResourceQuotas +func newResourceQuotas(c *CoreV1Client, namespace string) *resourceQuotas { + return &resourceQuotas{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a resourceQuota and creates it. Returns the server's representation of the resourceQuota, and an error, if there is any. +func (c *resourceQuotas) Create(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Post(). + Namespace(c.ns). + Resource("resourcequotas"). + Body(resourceQuota). + Do(). + Into(result) + return +} + +// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any. +func (c *resourceQuotas) Update(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Put(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(resourceQuota.Name). + Body(resourceQuota). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *resourceQuotas) UpdateStatus(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Put(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(resourceQuota.Name). + SubResource("status"). + Body(resourceQuota). + Do(). + Into(result) + return +} + +// Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs. +func (c *resourceQuotas) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *resourceQuotas) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("resourcequotas"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any. +func (c *resourceQuotas) Get(name string, options meta_v1.GetOptions) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Get(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors. +func (c *resourceQuotas) List(opts meta_v1.ListOptions) (result *v1.ResourceQuotaList, err error) { + result = &v1.ResourceQuotaList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("resourcequotas"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested resourceQuotas. +func (c *resourceQuotas) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("resourcequotas"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched resourceQuota. +func (c *resourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("resourcequotas"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go new file mode 100644 index 000000000..fbcede818 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/secret.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// SecretsGetter has a method to return a SecretInterface. +// A group's client should implement this interface. +type SecretsGetter interface { + Secrets(namespace string) SecretInterface +} + +// SecretInterface has methods to work with Secret resources. +type SecretInterface interface { + Create(*v1.Secret) (*v1.Secret, error) + Update(*v1.Secret) (*v1.Secret, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Secret, error) + List(opts meta_v1.ListOptions) (*v1.SecretList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) + SecretExpansion +} + +// secrets implements SecretInterface +type secrets struct { + client rest.Interface + ns string +} + +// newSecrets returns a Secrets +func newSecrets(c *CoreV1Client, namespace string) *secrets { + return &secrets{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a secret and creates it. Returns the server's representation of the secret, and an error, if there is any. +func (c *secrets) Create(secret *v1.Secret) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Post(). + Namespace(c.ns). + Resource("secrets"). + Body(secret). + Do(). + Into(result) + return +} + +// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any. +func (c *secrets) Update(secret *v1.Secret) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Put(). + Namespace(c.ns). + Resource("secrets"). + Name(secret.Name). + Body(secret). + Do(). + Into(result) + return +} + +// Delete takes name of the secret and deletes it. Returns an error if one occurs. +func (c *secrets) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("secrets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *secrets) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("secrets"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any. +func (c *secrets) Get(name string, options meta_v1.GetOptions) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Get(). + Namespace(c.ns). + Resource("secrets"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Secrets that match those selectors. +func (c *secrets) List(opts meta_v1.ListOptions) (result *v1.SecretList, err error) { + result = &v1.SecretList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("secrets"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested secrets. +func (c *secrets) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("secrets"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched secret. +func (c *secrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("secrets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go new file mode 100644 index 000000000..0eccf79a8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// ServicesGetter has a method to return a ServiceInterface. +// A group's client should implement this interface. +type ServicesGetter interface { + Services(namespace string) ServiceInterface +} + +// ServiceInterface has methods to work with Service resources. +type ServiceInterface interface { + Create(*v1.Service) (*v1.Service, error) + Update(*v1.Service) (*v1.Service, error) + UpdateStatus(*v1.Service) (*v1.Service, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.Service, error) + List(opts meta_v1.ListOptions) (*v1.ServiceList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) + ServiceExpansion +} + +// services implements ServiceInterface +type services struct { + client rest.Interface + ns string +} + +// newServices returns a Services +func newServices(c *CoreV1Client, namespace string) *services { + return &services{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a service and creates it. Returns the server's representation of the service, and an error, if there is any. +func (c *services) Create(service *v1.Service) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Post(). + Namespace(c.ns). + Resource("services"). + Body(service). + Do(). + Into(result) + return +} + +// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any. +func (c *services) Update(service *v1.Service) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Put(). + Namespace(c.ns). + Resource("services"). + Name(service.Name). + Body(service). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *services) UpdateStatus(service *v1.Service) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Put(). + Namespace(c.ns). + Resource("services"). + Name(service.Name). + SubResource("status"). + Body(service). + Do(). + Into(result) + return +} + +// Delete takes name of the service and deletes it. Returns an error if one occurs. +func (c *services) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("services"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *services) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("services"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the service, and returns the corresponding service object, and an error if there is any. +func (c *services) Get(name string, options meta_v1.GetOptions) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Get(). + Namespace(c.ns). + Resource("services"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Services that match those selectors. +func (c *services) List(opts meta_v1.ListOptions) (result *v1.ServiceList, err error) { + result = &v1.ServiceList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("services"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested services. +func (c *services) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("services"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched service. +func (c *services) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("services"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go new file mode 100644 index 000000000..4937fd1a3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/service_expansion.go @@ -0,0 +1,41 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/util/net" + restclient "k8s.io/client-go/rest" +) + +// The ServiceExpansion interface allows manually adding extra methods to the ServiceInterface. +type ServiceExpansion interface { + ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper +} + +// ProxyGet returns a response of the service by calling it through the proxy. +func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper { + request := c.client.Get(). + Namespace(c.ns). + Resource("services"). + SubResource("proxy"). + Name(net.JoinSchemeNamePort(scheme, name, port)). + Suffix(path) + for k, v := range params { + request = request.Param(k, v) + } + return request +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go new file mode 100644 index 000000000..f71789f6a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/serviceaccount.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/api/v1" + rest "k8s.io/client-go/rest" +) + +// ServiceAccountsGetter has a method to return a ServiceAccountInterface. +// A group's client should implement this interface. +type ServiceAccountsGetter interface { + ServiceAccounts(namespace string) ServiceAccountInterface +} + +// ServiceAccountInterface has methods to work with ServiceAccount resources. +type ServiceAccountInterface interface { + Create(*v1.ServiceAccount) (*v1.ServiceAccount, error) + Update(*v1.ServiceAccount) (*v1.ServiceAccount, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.ServiceAccount, error) + List(opts meta_v1.ListOptions) (*v1.ServiceAccountList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) + ServiceAccountExpansion +} + +// serviceAccounts implements ServiceAccountInterface +type serviceAccounts struct { + client rest.Interface + ns string +} + +// newServiceAccounts returns a ServiceAccounts +func newServiceAccounts(c *CoreV1Client, namespace string) *serviceAccounts { + return &serviceAccounts{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a serviceAccount and creates it. Returns the server's representation of the serviceAccount, and an error, if there is any. +func (c *serviceAccounts) Create(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Post(). + Namespace(c.ns). + Resource("serviceaccounts"). + Body(serviceAccount). + Do(). + Into(result) + return +} + +// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any. +func (c *serviceAccounts) Update(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Put(). + Namespace(c.ns). + Resource("serviceaccounts"). + Name(serviceAccount.Name). + Body(serviceAccount). + Do(). + Into(result) + return +} + +// Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs. +func (c *serviceAccounts) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("serviceaccounts"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *serviceAccounts) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("serviceaccounts"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any. +func (c *serviceAccounts) Get(name string, options meta_v1.GetOptions) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Get(). + Namespace(c.ns). + Resource("serviceaccounts"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors. +func (c *serviceAccounts) List(opts meta_v1.ListOptions) (result *v1.ServiceAccountList, err error) { + result = &v1.ServiceAccountList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("serviceaccounts"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested serviceAccounts. +func (c *serviceAccounts) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("serviceaccounts"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched serviceAccount. +func (c *serviceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("serviceaccounts"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD new file mode 100644 index 000000000..53fd8f28d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD @@ -0,0 +1,38 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "daemonset.go", + "deployment.go", + "deployment_expansion.go", + "doc.go", + "extensions_client.go", + "generated_expansion.go", + "ingress.go", + "podsecuritypolicy.go", + "replicaset.go", + "scale.go", + "scale_expansion.go", + "thirdpartyresource.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go new file mode 100644 index 000000000..8c132db9b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/daemonset.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +// DaemonSetsGetter has a method to return a DaemonSetInterface. +// A group's client should implement this interface. +type DaemonSetsGetter interface { + DaemonSets(namespace string) DaemonSetInterface +} + +// DaemonSetInterface has methods to work with DaemonSet resources. +type DaemonSetInterface interface { + Create(*v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) + Update(*v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) + UpdateStatus(*v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.DaemonSet, error) + List(opts v1.ListOptions) (*v1beta1.DaemonSetList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.DaemonSet, err error) + DaemonSetExpansion +} + +// daemonSets implements DaemonSetInterface +type daemonSets struct { + client rest.Interface + ns string +} + +// newDaemonSets returns a DaemonSets +func newDaemonSets(c *ExtensionsV1beta1Client, namespace string) *daemonSets { + return &daemonSets{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a daemonSet and creates it. Returns the server's representation of the daemonSet, and an error, if there is any. +func (c *daemonSets) Create(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Post(). + Namespace(c.ns). + Resource("daemonsets"). + Body(daemonSet). + Do(). + Into(result) + return +} + +// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any. +func (c *daemonSets) Update(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("daemonsets"). + Name(daemonSet.Name). + Body(daemonSet). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *daemonSets) UpdateStatus(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("daemonsets"). + Name(daemonSet.Name). + SubResource("status"). + Body(daemonSet). + Do(). + Into(result) + return +} + +// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. +func (c *daemonSets) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("daemonsets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *daemonSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("daemonsets"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. +func (c *daemonSets) Get(name string, options v1.GetOptions) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Get(). + Namespace(c.ns). + Resource("daemonsets"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of DaemonSets that match those selectors. +func (c *daemonSets) List(opts v1.ListOptions) (result *v1beta1.DaemonSetList, err error) { + result = &v1beta1.DaemonSetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("daemonsets"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested daemonSets. +func (c *daemonSets) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("daemonsets"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched daemonSet. +func (c *daemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("daemonsets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go new file mode 100644 index 000000000..7d0122c2a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +// DeploymentsGetter has a method to return a DeploymentInterface. +// A group's client should implement this interface. +type DeploymentsGetter interface { + Deployments(namespace string) DeploymentInterface +} + +// DeploymentInterface has methods to work with Deployment resources. +type DeploymentInterface interface { + Create(*v1beta1.Deployment) (*v1beta1.Deployment, error) + Update(*v1beta1.Deployment) (*v1beta1.Deployment, error) + UpdateStatus(*v1beta1.Deployment) (*v1beta1.Deployment, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.Deployment, error) + List(opts v1.ListOptions) (*v1beta1.DeploymentList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) + DeploymentExpansion +} + +// deployments implements DeploymentInterface +type deployments struct { + client rest.Interface + ns string +} + +// newDeployments returns a Deployments +func newDeployments(c *ExtensionsV1beta1Client, namespace string) *deployments { + return &deployments{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. +func (c *deployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Post(). + Namespace(c.ns). + Resource("deployments"). + Body(deployment). + Do(). + Into(result) + return +} + +// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. +func (c *deployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("deployments"). + Name(deployment.Name). + Body(deployment). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *deployments) UpdateStatus(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("deployments"). + Name(deployment.Name). + SubResource("status"). + Body(deployment). + Do(). + Into(result) + return +} + +// Delete takes name of the deployment and deletes it. Returns an error if one occurs. +func (c *deployments) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("deployments"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *deployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. +func (c *deployments) Get(name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Deployments that match those selectors. +func (c *deployments) List(opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) { + result = &v1beta1.DeploymentList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested deployments. +func (c *deployments) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched deployment. +func (c *deployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("deployments"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go new file mode 100644 index 000000000..e737f09ae --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/deployment_expansion.go @@ -0,0 +1,29 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import "k8s.io/client-go/pkg/apis/extensions/v1beta1" + +// The DeploymentExpansion interface allows manually adding extra methods to the DeploymentInterface. +type DeploymentExpansion interface { + Rollback(*v1beta1.DeploymentRollback) error +} + +// Rollback applied the provided DeploymentRollback to the named deployment in the current namespace. +func (c *deployments) Rollback(deploymentRollback *v1beta1.DeploymentRollback) error { + return c.client.Post().Namespace(c.ns).Resource("deployments").Name(deploymentRollback.Name).SubResource("rollback").Body(deploymentRollback).Do().Error() +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go new file mode 100644 index 000000000..5284346e1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/extensions_client.go @@ -0,0 +1,118 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +type ExtensionsV1beta1Interface interface { + RESTClient() rest.Interface + DaemonSetsGetter + DeploymentsGetter + IngressesGetter + PodSecurityPoliciesGetter + ReplicaSetsGetter + ScalesGetter + ThirdPartyResourcesGetter +} + +// ExtensionsV1beta1Client is used to interact with features provided by the extensions group. +type ExtensionsV1beta1Client struct { + restClient rest.Interface +} + +func (c *ExtensionsV1beta1Client) DaemonSets(namespace string) DaemonSetInterface { + return newDaemonSets(c, namespace) +} + +func (c *ExtensionsV1beta1Client) Deployments(namespace string) DeploymentInterface { + return newDeployments(c, namespace) +} + +func (c *ExtensionsV1beta1Client) Ingresses(namespace string) IngressInterface { + return newIngresses(c, namespace) +} + +func (c *ExtensionsV1beta1Client) PodSecurityPolicies() PodSecurityPolicyInterface { + return newPodSecurityPolicies(c) +} + +func (c *ExtensionsV1beta1Client) ReplicaSets(namespace string) ReplicaSetInterface { + return newReplicaSets(c, namespace) +} + +func (c *ExtensionsV1beta1Client) Scales(namespace string) ScaleInterface { + return newScales(c, namespace) +} + +func (c *ExtensionsV1beta1Client) ThirdPartyResources() ThirdPartyResourceInterface { + return newThirdPartyResources(c) +} + +// NewForConfig creates a new ExtensionsV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*ExtensionsV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &ExtensionsV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new ExtensionsV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *ExtensionsV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new ExtensionsV1beta1Client for the given RESTClient. +func New(c rest.Interface) *ExtensionsV1beta1Client { + return &ExtensionsV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *ExtensionsV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD new file mode 100644 index 000000000..062d573c2 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_daemonset.go", + "fake_deployment.go", + "fake_deployment_expansion.go", + "fake_extensions_client.go", + "fake_ingress.go", + "fake_podsecuritypolicy.go", + "fake_replicaset.go", + "fake_scale.go", + "fake_scale_expansion.go", + "fake_thirdpartyresource.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go new file mode 100644 index 000000000..c5d14fe4c --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeDaemonSets implements DaemonSetInterface +type FakeDaemonSets struct { + Fake *FakeExtensionsV1beta1 + ns string +} + +var daemonsetsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "daemonsets"} + +var daemonsetsKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "DaemonSet"} + +func (c *FakeDaemonSets) Create(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &v1beta1.DaemonSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.DaemonSet), err +} + +func (c *FakeDaemonSets) Update(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &v1beta1.DaemonSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.DaemonSet), err +} + +func (c *FakeDaemonSets) UpdateStatus(daemonSet *v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &v1beta1.DaemonSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.DaemonSet), err +} + +func (c *FakeDaemonSets) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(daemonsetsResource, c.ns, name), &v1beta1.DaemonSet{}) + + return err +} + +func (c *FakeDaemonSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.DaemonSetList{}) + return err +} + +func (c *FakeDaemonSets) Get(name string, options v1.GetOptions) (result *v1beta1.DaemonSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &v1beta1.DaemonSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.DaemonSet), err +} + +func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *v1beta1.DaemonSetList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &v1beta1.DaemonSetList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.DaemonSetList{} + for _, item := range obj.(*v1beta1.DaemonSetList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested daemonSets. +func (c *FakeDaemonSets) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched daemonSet. +func (c *FakeDaemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.DaemonSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, data, subresources...), &v1beta1.DaemonSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.DaemonSet), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go new file mode 100644 index 000000000..8be25eeea --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeDeployments implements DeploymentInterface +type FakeDeployments struct { + Fake *FakeExtensionsV1beta1 + ns string +} + +var deploymentsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"} + +var deploymentsKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Deployment"} + +func (c *FakeDeployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) UpdateStatus(deployment *v1beta1.Deployment) (*v1beta1.Deployment, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) + + return err +} + +func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.DeploymentList{}) + return err +} + +func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} + +func (c *FakeDeployments) List(opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta1.DeploymentList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.DeploymentList{} + for _, item := range obj.(*v1beta1.DeploymentList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested deployments. +func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched deployment. +func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, data, subresources...), &v1beta1.Deployment{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Deployment), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go new file mode 100644 index 000000000..f49c33666 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go @@ -0,0 +1,33 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/client-go/pkg/apis/extensions/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeDeployments) Rollback(deploymentRollback *v1beta1.DeploymentRollback) error { + action := core.CreateActionImpl{} + action.Verb = "create" + action.Resource = deploymentsResource + action.Subresource = "rollback" + action.Object = deploymentRollback + + _, err := c.Fake.Invokes(action, deploymentRollback) + return err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go new file mode 100644 index 000000000..c0489371a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go @@ -0,0 +1,62 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeExtensionsV1beta1 struct { + *testing.Fake +} + +func (c *FakeExtensionsV1beta1) DaemonSets(namespace string) v1beta1.DaemonSetInterface { + return &FakeDaemonSets{c, namespace} +} + +func (c *FakeExtensionsV1beta1) Deployments(namespace string) v1beta1.DeploymentInterface { + return &FakeDeployments{c, namespace} +} + +func (c *FakeExtensionsV1beta1) Ingresses(namespace string) v1beta1.IngressInterface { + return &FakeIngresses{c, namespace} +} + +func (c *FakeExtensionsV1beta1) PodSecurityPolicies() v1beta1.PodSecurityPolicyInterface { + return &FakePodSecurityPolicies{c} +} + +func (c *FakeExtensionsV1beta1) ReplicaSets(namespace string) v1beta1.ReplicaSetInterface { + return &FakeReplicaSets{c, namespace} +} + +func (c *FakeExtensionsV1beta1) Scales(namespace string) v1beta1.ScaleInterface { + return &FakeScales{c, namespace} +} + +func (c *FakeExtensionsV1beta1) ThirdPartyResources() v1beta1.ThirdPartyResourceInterface { + return &FakeThirdPartyResources{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeExtensionsV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go new file mode 100644 index 000000000..d947a3764 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeIngresses implements IngressInterface +type FakeIngresses struct { + Fake *FakeExtensionsV1beta1 + ns string +} + +var ingressesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "ingresses"} + +var ingressesKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Ingress"} + +func (c *FakeIngresses) Create(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Ingress), err +} + +func (c *FakeIngresses) Update(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Ingress), err +} + +func (c *FakeIngresses) UpdateStatus(ingress *v1beta1.Ingress) (*v1beta1.Ingress, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(ingressesResource, "status", c.ns, ingress), &v1beta1.Ingress{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Ingress), err +} + +func (c *FakeIngresses) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(ingressesResource, c.ns, name), &v1beta1.Ingress{}) + + return err +} + +func (c *FakeIngresses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(ingressesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.IngressList{}) + return err +} + +func (c *FakeIngresses) Get(name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(ingressesResource, c.ns, name), &v1beta1.Ingress{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Ingress), err +} + +func (c *FakeIngresses) List(opts v1.ListOptions) (result *v1beta1.IngressList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(ingressesResource, ingressesKind, c.ns, opts), &v1beta1.IngressList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.IngressList{} + for _, item := range obj.(*v1beta1.IngressList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested ingresses. +func (c *FakeIngresses) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(ingressesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched ingress. +func (c *FakeIngresses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, name, data, subresources...), &v1beta1.Ingress{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Ingress), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go new file mode 100644 index 000000000..f8b704d2f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakePodSecurityPolicies implements PodSecurityPolicyInterface +type FakePodSecurityPolicies struct { + Fake *FakeExtensionsV1beta1 +} + +var podsecuritypoliciesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "podsecuritypolicies"} + +var podsecuritypoliciesKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"} + +func (c *FakePodSecurityPolicies) Create(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(podsecuritypoliciesResource, podSecurityPolicy), &v1beta1.PodSecurityPolicy{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodSecurityPolicy), err +} + +func (c *FakePodSecurityPolicies) Update(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(podsecuritypoliciesResource, podSecurityPolicy), &v1beta1.PodSecurityPolicy{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodSecurityPolicy), err +} + +func (c *FakePodSecurityPolicies) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(podsecuritypoliciesResource, name), &v1beta1.PodSecurityPolicy{}) + return err +} + +func (c *FakePodSecurityPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(podsecuritypoliciesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.PodSecurityPolicyList{}) + return err +} + +func (c *FakePodSecurityPolicies) Get(name string, options v1.GetOptions) (result *v1beta1.PodSecurityPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(podsecuritypoliciesResource, name), &v1beta1.PodSecurityPolicy{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodSecurityPolicy), err +} + +func (c *FakePodSecurityPolicies) List(opts v1.ListOptions) (result *v1beta1.PodSecurityPolicyList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(podsecuritypoliciesResource, podsecuritypoliciesKind, opts), &v1beta1.PodSecurityPolicyList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.PodSecurityPolicyList{} + for _, item := range obj.(*v1beta1.PodSecurityPolicyList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested podSecurityPolicies. +func (c *FakePodSecurityPolicies) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(podsecuritypoliciesResource, opts)) +} + +// Patch applies the patch and returns the patched podSecurityPolicy. +func (c *FakePodSecurityPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(podsecuritypoliciesResource, name, data, subresources...), &v1beta1.PodSecurityPolicy{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodSecurityPolicy), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go new file mode 100644 index 000000000..3becce4c3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeReplicaSets implements ReplicaSetInterface +type FakeReplicaSets struct { + Fake *FakeExtensionsV1beta1 + ns string +} + +var replicasetsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "replicasets"} + +var replicasetsKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "ReplicaSet"} + +func (c *FakeReplicaSets) Create(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &v1beta1.ReplicaSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ReplicaSet), err +} + +func (c *FakeReplicaSets) Update(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &v1beta1.ReplicaSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ReplicaSet), err +} + +func (c *FakeReplicaSets) UpdateStatus(replicaSet *v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &v1beta1.ReplicaSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ReplicaSet), err +} + +func (c *FakeReplicaSets) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(replicasetsResource, c.ns, name), &v1beta1.ReplicaSet{}) + + return err +} + +func (c *FakeReplicaSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.ReplicaSetList{}) + return err +} + +func (c *FakeReplicaSets) Get(name string, options v1.GetOptions) (result *v1beta1.ReplicaSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &v1beta1.ReplicaSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ReplicaSet), err +} + +func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *v1beta1.ReplicaSetList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &v1beta1.ReplicaSetList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.ReplicaSetList{} + for _, item := range obj.(*v1beta1.ReplicaSetList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested replicaSets. +func (c *FakeReplicaSets) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched replicaSet. +func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ReplicaSet, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, data, subresources...), &v1beta1.ReplicaSet{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ReplicaSet), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale.go new file mode 100644 index 000000000..77f8c61a7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeScales implements ScaleInterface +type FakeScales struct { + Fake *FakeExtensionsV1beta1 + ns string +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go new file mode 100644 index 000000000..db13b4c37 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go @@ -0,0 +1,47 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/pkg/apis/extensions/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeScales) Get(kind string, name string) (result *v1beta1.Scale, err error) { + action := core.GetActionImpl{} + action.Verb = "get" + action.Namespace = c.ns + action.Resource = schema.GroupVersionResource{Resource: kind} + action.Subresource = "scale" + action.Name = name + obj, err := c.Fake.Invokes(action, &v1beta1.Scale{}) + result = obj.(*v1beta1.Scale) + return +} + +func (c *FakeScales) Update(kind string, scale *v1beta1.Scale) (result *v1beta1.Scale, err error) { + action := core.UpdateActionImpl{} + action.Verb = "update" + action.Namespace = c.ns + action.Resource = schema.GroupVersionResource{Resource: kind} + action.Subresource = "scale" + action.Object = scale + obj, err := c.Fake.Invokes(action, scale) + result = obj.(*v1beta1.Scale) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go new file mode 100644 index 000000000..60093cc77 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeThirdPartyResources implements ThirdPartyResourceInterface +type FakeThirdPartyResources struct { + Fake *FakeExtensionsV1beta1 +} + +var thirdpartyresourcesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "thirdpartyresources"} + +var thirdpartyresourcesKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "ThirdPartyResource"} + +func (c *FakeThirdPartyResources) Create(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(thirdpartyresourcesResource, thirdPartyResource), &v1beta1.ThirdPartyResource{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ThirdPartyResource), err +} + +func (c *FakeThirdPartyResources) Update(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(thirdpartyresourcesResource, thirdPartyResource), &v1beta1.ThirdPartyResource{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ThirdPartyResource), err +} + +func (c *FakeThirdPartyResources) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(thirdpartyresourcesResource, name), &v1beta1.ThirdPartyResource{}) + return err +} + +func (c *FakeThirdPartyResources) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(thirdpartyresourcesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.ThirdPartyResourceList{}) + return err +} + +func (c *FakeThirdPartyResources) Get(name string, options v1.GetOptions) (result *v1beta1.ThirdPartyResource, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(thirdpartyresourcesResource, name), &v1beta1.ThirdPartyResource{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ThirdPartyResource), err +} + +func (c *FakeThirdPartyResources) List(opts v1.ListOptions) (result *v1beta1.ThirdPartyResourceList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(thirdpartyresourcesResource, thirdpartyresourcesKind, opts), &v1beta1.ThirdPartyResourceList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.ThirdPartyResourceList{} + for _, item := range obj.(*v1beta1.ThirdPartyResourceList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested thirdPartyResources. +func (c *FakeThirdPartyResources) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(thirdpartyresourcesResource, opts)) +} + +// Patch applies the patch and returns the patched thirdPartyResource. +func (c *FakeThirdPartyResources) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ThirdPartyResource, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(thirdpartyresourcesResource, name, data, subresources...), &v1beta1.ThirdPartyResource{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ThirdPartyResource), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go new file mode 100644 index 000000000..d0a3d64bc --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/generated_expansion.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type DaemonSetExpansion interface{} + +type IngressExpansion interface{} + +type PodSecurityPolicyExpansion interface{} + +type ReplicaSetExpansion interface{} + +type ThirdPartyResourceExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go new file mode 100644 index 000000000..86bf65b8f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/ingress.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +// IngressesGetter has a method to return a IngressInterface. +// A group's client should implement this interface. +type IngressesGetter interface { + Ingresses(namespace string) IngressInterface +} + +// IngressInterface has methods to work with Ingress resources. +type IngressInterface interface { + Create(*v1beta1.Ingress) (*v1beta1.Ingress, error) + Update(*v1beta1.Ingress) (*v1beta1.Ingress, error) + UpdateStatus(*v1beta1.Ingress) (*v1beta1.Ingress, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.Ingress, error) + List(opts v1.ListOptions) (*v1beta1.IngressList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) + IngressExpansion +} + +// ingresses implements IngressInterface +type ingresses struct { + client rest.Interface + ns string +} + +// newIngresses returns a Ingresses +func newIngresses(c *ExtensionsV1beta1Client, namespace string) *ingresses { + return &ingresses{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a ingress and creates it. Returns the server's representation of the ingress, and an error, if there is any. +func (c *ingresses) Create(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Post(). + Namespace(c.ns). + Resource("ingresses"). + Body(ingress). + Do(). + Into(result) + return +} + +// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any. +func (c *ingresses) Update(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Put(). + Namespace(c.ns). + Resource("ingresses"). + Name(ingress.Name). + Body(ingress). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *ingresses) UpdateStatus(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Put(). + Namespace(c.ns). + Resource("ingresses"). + Name(ingress.Name). + SubResource("status"). + Body(ingress). + Do(). + Into(result) + return +} + +// Delete takes name of the ingress and deletes it. Returns an error if one occurs. +func (c *ingresses) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("ingresses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *ingresses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("ingresses"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any. +func (c *ingresses) Get(name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Get(). + Namespace(c.ns). + Resource("ingresses"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Ingresses that match those selectors. +func (c *ingresses) List(opts v1.ListOptions) (result *v1beta1.IngressList, err error) { + result = &v1beta1.IngressList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("ingresses"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested ingresses. +func (c *ingresses) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("ingresses"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched ingress. +func (c *ingresses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("ingresses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go new file mode 100644 index 000000000..ad57a6cab --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +// PodSecurityPoliciesGetter has a method to return a PodSecurityPolicyInterface. +// A group's client should implement this interface. +type PodSecurityPoliciesGetter interface { + PodSecurityPolicies() PodSecurityPolicyInterface +} + +// PodSecurityPolicyInterface has methods to work with PodSecurityPolicy resources. +type PodSecurityPolicyInterface interface { + Create(*v1beta1.PodSecurityPolicy) (*v1beta1.PodSecurityPolicy, error) + Update(*v1beta1.PodSecurityPolicy) (*v1beta1.PodSecurityPolicy, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.PodSecurityPolicy, error) + List(opts v1.ListOptions) (*v1beta1.PodSecurityPolicyList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) + PodSecurityPolicyExpansion +} + +// podSecurityPolicies implements PodSecurityPolicyInterface +type podSecurityPolicies struct { + client rest.Interface +} + +// newPodSecurityPolicies returns a PodSecurityPolicies +func newPodSecurityPolicies(c *ExtensionsV1beta1Client) *podSecurityPolicies { + return &podSecurityPolicies{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a podSecurityPolicy and creates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. +func (c *podSecurityPolicies) Create(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Post(). + Resource("podsecuritypolicies"). + Body(podSecurityPolicy). + Do(). + Into(result) + return +} + +// Update takes the representation of a podSecurityPolicy and updates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. +func (c *podSecurityPolicies) Update(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Put(). + Resource("podsecuritypolicies"). + Name(podSecurityPolicy.Name). + Body(podSecurityPolicy). + Do(). + Into(result) + return +} + +// Delete takes name of the podSecurityPolicy and deletes it. Returns an error if one occurs. +func (c *podSecurityPolicies) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("podsecuritypolicies"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podSecurityPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("podsecuritypolicies"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podSecurityPolicy, and returns the corresponding podSecurityPolicy object, and an error if there is any. +func (c *podSecurityPolicies) Get(name string, options v1.GetOptions) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Get(). + Resource("podsecuritypolicies"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodSecurityPolicies that match those selectors. +func (c *podSecurityPolicies) List(opts v1.ListOptions) (result *v1beta1.PodSecurityPolicyList, err error) { + result = &v1beta1.PodSecurityPolicyList{} + err = c.client.Get(). + Resource("podsecuritypolicies"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podSecurityPolicies. +func (c *podSecurityPolicies) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("podsecuritypolicies"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podSecurityPolicy. +func (c *podSecurityPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Patch(pt). + Resource("podsecuritypolicies"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go new file mode 100644 index 000000000..aa6f505a2 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/replicaset.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +// ReplicaSetsGetter has a method to return a ReplicaSetInterface. +// A group's client should implement this interface. +type ReplicaSetsGetter interface { + ReplicaSets(namespace string) ReplicaSetInterface +} + +// ReplicaSetInterface has methods to work with ReplicaSet resources. +type ReplicaSetInterface interface { + Create(*v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) + Update(*v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) + UpdateStatus(*v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.ReplicaSet, error) + List(opts v1.ListOptions) (*v1beta1.ReplicaSetList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ReplicaSet, err error) + ReplicaSetExpansion +} + +// replicaSets implements ReplicaSetInterface +type replicaSets struct { + client rest.Interface + ns string +} + +// newReplicaSets returns a ReplicaSets +func newReplicaSets(c *ExtensionsV1beta1Client, namespace string) *replicaSets { + return &replicaSets{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a replicaSet and creates it. Returns the server's representation of the replicaSet, and an error, if there is any. +func (c *replicaSets) Create(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Post(). + Namespace(c.ns). + Resource("replicasets"). + Body(replicaSet). + Do(). + Into(result) + return +} + +// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any. +func (c *replicaSets) Update(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicasets"). + Name(replicaSet.Name). + Body(replicaSet). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *replicaSets) UpdateStatus(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicasets"). + Name(replicaSet.Name). + SubResource("status"). + Body(replicaSet). + Do(). + Into(result) + return +} + +// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. +func (c *replicaSets) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicasets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *replicaSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicasets"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. +func (c *replicaSets) Get(name string, options v1.GetOptions) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicasets"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. +func (c *replicaSets) List(opts v1.ListOptions) (result *v1beta1.ReplicaSetList, err error) { + result = &v1beta1.ReplicaSetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicasets"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested replicaSets. +func (c *replicaSets) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("replicasets"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched replicaSet. +func (c *replicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("replicasets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale.go new file mode 100644 index 000000000..733012ade --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// ScalesGetter has a method to return a ScaleInterface. +// A group's client should implement this interface. +type ScalesGetter interface { + Scales(namespace string) ScaleInterface +} + +// ScaleInterface has methods to work with Scale resources. +type ScaleInterface interface { + ScaleExpansion +} + +// scales implements ScaleInterface +type scales struct { + client rest.Interface + ns string +} + +// newScales returns a Scales +func newScales(c *ExtensionsV1beta1Client, namespace string) *scales { + return &scales{ + client: c.RESTClient(), + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale_expansion.go new file mode 100644 index 000000000..85d7c40a8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/scale_expansion.go @@ -0,0 +1,65 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/pkg/apis/extensions/v1beta1" +) + +// The ScaleExpansion interface allows manually adding extra methods to the ScaleInterface. +type ScaleExpansion interface { + Get(kind string, name string) (*v1beta1.Scale, error) + Update(kind string, scale *v1beta1.Scale) (*v1beta1.Scale, error) +} + +// Get takes the reference to scale subresource and returns the subresource or error, if one occurs. +func (c *scales) Get(kind string, name string) (result *v1beta1.Scale, err error) { + result = &v1beta1.Scale{} + + // TODO this method needs to take a proper unambiguous kind + fullyQualifiedKind := schema.GroupVersionKind{Kind: kind} + resource, _ := meta.UnsafeGuessKindToResource(fullyQualifiedKind) + + err = c.client.Get(). + Namespace(c.ns). + Resource(resource.Resource). + Name(name). + SubResource("scale"). + Do(). + Into(result) + return +} + +func (c *scales) Update(kind string, scale *v1beta1.Scale) (result *v1beta1.Scale, err error) { + result = &v1beta1.Scale{} + + // TODO this method needs to take a proper unambiguous kind + fullyQualifiedKind := schema.GroupVersionKind{Kind: kind} + resource, _ := meta.UnsafeGuessKindToResource(fullyQualifiedKind) + + err = c.client.Put(). + Namespace(scale.Namespace). + Resource(resource.Resource). + Name(scale.Name). + SubResource("scale"). + Body(scale). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go new file mode 100644 index 000000000..617c2069b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + rest "k8s.io/client-go/rest" +) + +// ThirdPartyResourcesGetter has a method to return a ThirdPartyResourceInterface. +// A group's client should implement this interface. +type ThirdPartyResourcesGetter interface { + ThirdPartyResources() ThirdPartyResourceInterface +} + +// ThirdPartyResourceInterface has methods to work with ThirdPartyResource resources. +type ThirdPartyResourceInterface interface { + Create(*v1beta1.ThirdPartyResource) (*v1beta1.ThirdPartyResource, error) + Update(*v1beta1.ThirdPartyResource) (*v1beta1.ThirdPartyResource, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.ThirdPartyResource, error) + List(opts v1.ListOptions) (*v1beta1.ThirdPartyResourceList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ThirdPartyResource, err error) + ThirdPartyResourceExpansion +} + +// thirdPartyResources implements ThirdPartyResourceInterface +type thirdPartyResources struct { + client rest.Interface +} + +// newThirdPartyResources returns a ThirdPartyResources +func newThirdPartyResources(c *ExtensionsV1beta1Client) *thirdPartyResources { + return &thirdPartyResources{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a thirdPartyResource and creates it. Returns the server's representation of the thirdPartyResource, and an error, if there is any. +func (c *thirdPartyResources) Create(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Post(). + Resource("thirdpartyresources"). + Body(thirdPartyResource). + Do(). + Into(result) + return +} + +// Update takes the representation of a thirdPartyResource and updates it. Returns the server's representation of the thirdPartyResource, and an error, if there is any. +func (c *thirdPartyResources) Update(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Put(). + Resource("thirdpartyresources"). + Name(thirdPartyResource.Name). + Body(thirdPartyResource). + Do(). + Into(result) + return +} + +// Delete takes name of the thirdPartyResource and deletes it. Returns an error if one occurs. +func (c *thirdPartyResources) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("thirdpartyresources"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *thirdPartyResources) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("thirdpartyresources"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the thirdPartyResource, and returns the corresponding thirdPartyResource object, and an error if there is any. +func (c *thirdPartyResources) Get(name string, options v1.GetOptions) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Get(). + Resource("thirdpartyresources"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ThirdPartyResources that match those selectors. +func (c *thirdPartyResources) List(opts v1.ListOptions) (result *v1beta1.ThirdPartyResourceList, err error) { + result = &v1beta1.ThirdPartyResourceList{} + err = c.client.Get(). + Resource("thirdpartyresources"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested thirdPartyResources. +func (c *thirdPartyResources) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("thirdpartyresources"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched thirdPartyResource. +func (c *thirdPartyResources) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Patch(pt). + Resource("thirdpartyresources"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD new file mode 100644 index 000000000..49ce9f31b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated_expansion.go", + "networking_client.go", + "networkpolicy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD new file mode 100644 index 000000000..39ed54289 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_networking_client.go", + "fake_networkpolicy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go new file mode 100644 index 000000000..d9733a0bf --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/networking/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeNetworkingV1 struct { + *testing.Fake +} + +func (c *FakeNetworkingV1) NetworkPolicies(namespace string) v1.NetworkPolicyInterface { + return &FakeNetworkPolicies{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeNetworkingV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go new file mode 100644 index 000000000..a15f8673e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/apis/networking/v1" + testing "k8s.io/client-go/testing" +) + +// FakeNetworkPolicies implements NetworkPolicyInterface +type FakeNetworkPolicies struct { + Fake *FakeNetworkingV1 + ns string +} + +var networkpoliciesResource = schema.GroupVersionResource{Group: "networking.k8s.io", Version: "v1", Resource: "networkpolicies"} + +var networkpoliciesKind = schema.GroupVersionKind{Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicy"} + +func (c *FakeNetworkPolicies) Create(networkPolicy *v1.NetworkPolicy) (result *v1.NetworkPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &v1.NetworkPolicy{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.NetworkPolicy), err +} + +func (c *FakeNetworkPolicies) Update(networkPolicy *v1.NetworkPolicy) (result *v1.NetworkPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &v1.NetworkPolicy{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.NetworkPolicy), err +} + +func (c *FakeNetworkPolicies) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(networkpoliciesResource, c.ns, name), &v1.NetworkPolicy{}) + + return err +} + +func (c *FakeNetworkPolicies) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(networkpoliciesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1.NetworkPolicyList{}) + return err +} + +func (c *FakeNetworkPolicies) Get(name string, options meta_v1.GetOptions) (result *v1.NetworkPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &v1.NetworkPolicy{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.NetworkPolicy), err +} + +func (c *FakeNetworkPolicies) List(opts meta_v1.ListOptions) (result *v1.NetworkPolicyList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &v1.NetworkPolicyList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.NetworkPolicyList{} + for _, item := range obj.(*v1.NetworkPolicyList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested networkPolicies. +func (c *FakeNetworkPolicies) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(networkpoliciesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched networkPolicy. +func (c *FakeNetworkPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.NetworkPolicy, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, data, subresources...), &v1.NetworkPolicy{}) + + if obj == nil { + return nil, err + } + return obj.(*v1.NetworkPolicy), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go new file mode 100644 index 000000000..cdd70ae35 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type NetworkPolicyExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go new file mode 100644 index 000000000..20429dd5d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networking_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/networking/v1" + rest "k8s.io/client-go/rest" +) + +type NetworkingV1Interface interface { + RESTClient() rest.Interface + NetworkPoliciesGetter +} + +// NetworkingV1Client is used to interact with features provided by the networking.k8s.io group. +type NetworkingV1Client struct { + restClient rest.Interface +} + +func (c *NetworkingV1Client) NetworkPolicies(namespace string) NetworkPolicyInterface { + return newNetworkPolicies(c, namespace) +} + +// NewForConfig creates a new NetworkingV1Client for the given config. +func NewForConfig(c *rest.Config) (*NetworkingV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &NetworkingV1Client{client}, nil +} + +// NewForConfigOrDie creates a new NetworkingV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *NetworkingV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new NetworkingV1Client for the given RESTClient. +func New(c rest.Interface) *NetworkingV1Client { + return &NetworkingV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *NetworkingV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go new file mode 100644 index 000000000..14d1e669b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/networkpolicy.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/networking/v1" + rest "k8s.io/client-go/rest" +) + +// NetworkPoliciesGetter has a method to return a NetworkPolicyInterface. +// A group's client should implement this interface. +type NetworkPoliciesGetter interface { + NetworkPolicies(namespace string) NetworkPolicyInterface +} + +// NetworkPolicyInterface has methods to work with NetworkPolicy resources. +type NetworkPolicyInterface interface { + Create(*v1.NetworkPolicy) (*v1.NetworkPolicy, error) + Update(*v1.NetworkPolicy) (*v1.NetworkPolicy, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.NetworkPolicy, error) + List(opts meta_v1.ListOptions) (*v1.NetworkPolicyList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.NetworkPolicy, err error) + NetworkPolicyExpansion +} + +// networkPolicies implements NetworkPolicyInterface +type networkPolicies struct { + client rest.Interface + ns string +} + +// newNetworkPolicies returns a NetworkPolicies +func newNetworkPolicies(c *NetworkingV1Client, namespace string) *networkPolicies { + return &networkPolicies{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a networkPolicy and creates it. Returns the server's representation of the networkPolicy, and an error, if there is any. +func (c *networkPolicies) Create(networkPolicy *v1.NetworkPolicy) (result *v1.NetworkPolicy, err error) { + result = &v1.NetworkPolicy{} + err = c.client.Post(). + Namespace(c.ns). + Resource("networkpolicies"). + Body(networkPolicy). + Do(). + Into(result) + return +} + +// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any. +func (c *networkPolicies) Update(networkPolicy *v1.NetworkPolicy) (result *v1.NetworkPolicy, err error) { + result = &v1.NetworkPolicy{} + err = c.client.Put(). + Namespace(c.ns). + Resource("networkpolicies"). + Name(networkPolicy.Name). + Body(networkPolicy). + Do(). + Into(result) + return +} + +// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs. +func (c *networkPolicies) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("networkpolicies"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *networkPolicies) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("networkpolicies"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any. +func (c *networkPolicies) Get(name string, options meta_v1.GetOptions) (result *v1.NetworkPolicy, err error) { + result = &v1.NetworkPolicy{} + err = c.client.Get(). + Namespace(c.ns). + Resource("networkpolicies"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors. +func (c *networkPolicies) List(opts meta_v1.ListOptions) (result *v1.NetworkPolicyList, err error) { + result = &v1.NetworkPolicyList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("networkpolicies"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested networkPolicies. +func (c *networkPolicies) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("networkpolicies"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched networkPolicy. +func (c *networkPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.NetworkPolicy, err error) { + result = &v1.NetworkPolicy{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("networkpolicies"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD new file mode 100644 index 000000000..ed70f8c88 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "eviction.go", + "eviction_expansion.go", + "generated_expansion.go", + "poddisruptionbudget.go", + "policy_client.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go new file mode 100644 index 000000000..9c4133e36 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + rest "k8s.io/client-go/rest" +) + +// EvictionsGetter has a method to return a EvictionInterface. +// A group's client should implement this interface. +type EvictionsGetter interface { + Evictions(namespace string) EvictionInterface +} + +// EvictionInterface has methods to work with Eviction resources. +type EvictionInterface interface { + EvictionExpansion +} + +// evictions implements EvictionInterface +type evictions struct { + client rest.Interface + ns string +} + +// newEvictions returns a Evictions +func newEvictions(c *PolicyV1beta1Client, namespace string) *evictions { + return &evictions{ + client: c.RESTClient(), + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go new file mode 100644 index 000000000..bde1baca6 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/eviction_expansion.go @@ -0,0 +1,38 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + policy "k8s.io/client-go/pkg/apis/policy/v1beta1" +) + +// The EvictionExpansion interface allows manually adding extra methods to the ScaleInterface. +type EvictionExpansion interface { + Evict(eviction *policy.Eviction) error +} + +func (c *evictions) Evict(eviction *policy.Eviction) error { + return c.client.Post(). + AbsPath("/api/v1"). + Namespace(eviction.Namespace). + Resource("pods"). + Name(eviction.Name). + SubResource("eviction"). + Body(eviction). + Do(). + Error() +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD new file mode 100644 index 000000000..cf20a395a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_eviction.go", + "fake_eviction_expansion.go", + "fake_poddisruptionbudget.go", + "fake_policy_client.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go new file mode 100644 index 000000000..a091d8de3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +// FakeEvictions implements EvictionInterface +type FakeEvictions struct { + Fake *FakePolicyV1beta1 + ns string +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go new file mode 100644 index 000000000..35c40713c --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + policy "k8s.io/client-go/pkg/apis/policy/v1beta1" + core "k8s.io/client-go/testing" +) + +func (c *FakeEvictions) Evict(eviction *policy.Eviction) error { + action := core.GetActionImpl{} + action.Verb = "post" + action.Namespace = c.ns + action.Resource = schema.GroupVersionResource{Group: "", Version: "", Resource: "pods"} + action.Subresource = "eviction" + _, err := c.Fake.Invokes(action, eviction) + return err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go new file mode 100644 index 000000000..0b14cd88c --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go @@ -0,0 +1,130 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakePodDisruptionBudgets implements PodDisruptionBudgetInterface +type FakePodDisruptionBudgets struct { + Fake *FakePolicyV1beta1 + ns string +} + +var poddisruptionbudgetsResource = schema.GroupVersionResource{Group: "policy", Version: "v1beta1", Resource: "poddisruptionbudgets"} + +var poddisruptionbudgetsKind = schema.GroupVersionKind{Group: "policy", Version: "v1beta1", Kind: "PodDisruptionBudget"} + +func (c *FakePodDisruptionBudgets) Create(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodDisruptionBudget), err +} + +func (c *FakePodDisruptionBudgets) Update(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodDisruptionBudget), err +} + +func (c *FakePodDisruptionBudgets) UpdateStatus(podDisruptionBudget *v1beta1.PodDisruptionBudget) (*v1beta1.PodDisruptionBudget, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(poddisruptionbudgetsResource, "status", c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodDisruptionBudget), err +} + +func (c *FakePodDisruptionBudgets) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(poddisruptionbudgetsResource, c.ns, name), &v1beta1.PodDisruptionBudget{}) + + return err +} + +func (c *FakePodDisruptionBudgets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(poddisruptionbudgetsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.PodDisruptionBudgetList{}) + return err +} + +func (c *FakePodDisruptionBudgets) Get(name string, options v1.GetOptions) (result *v1beta1.PodDisruptionBudget, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(poddisruptionbudgetsResource, c.ns, name), &v1beta1.PodDisruptionBudget{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodDisruptionBudget), err +} + +func (c *FakePodDisruptionBudgets) List(opts v1.ListOptions) (result *v1beta1.PodDisruptionBudgetList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(poddisruptionbudgetsResource, poddisruptionbudgetsKind, c.ns, opts), &v1beta1.PodDisruptionBudgetList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.PodDisruptionBudgetList{} + for _, item := range obj.(*v1beta1.PodDisruptionBudgetList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested podDisruptionBudgets. +func (c *FakePodDisruptionBudgets) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(poddisruptionbudgetsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched podDisruptionBudget. +func (c *FakePodDisruptionBudgets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, name, data, subresources...), &v1beta1.PodDisruptionBudget{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.PodDisruptionBudget), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go new file mode 100644 index 000000000..c9039b519 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go @@ -0,0 +1,42 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakePolicyV1beta1 struct { + *testing.Fake +} + +func (c *FakePolicyV1beta1) Evictions(namespace string) v1beta1.EvictionInterface { + return &FakeEvictions{c, namespace} +} + +func (c *FakePolicyV1beta1) PodDisruptionBudgets(namespace string) v1beta1.PodDisruptionBudgetInterface { + return &FakePodDisruptionBudgets{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakePolicyV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go new file mode 100644 index 000000000..511adc6ef --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type PodDisruptionBudgetExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go new file mode 100644 index 000000000..8088dd019 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/poddisruptionbudget.go @@ -0,0 +1,172 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + rest "k8s.io/client-go/rest" +) + +// PodDisruptionBudgetsGetter has a method to return a PodDisruptionBudgetInterface. +// A group's client should implement this interface. +type PodDisruptionBudgetsGetter interface { + PodDisruptionBudgets(namespace string) PodDisruptionBudgetInterface +} + +// PodDisruptionBudgetInterface has methods to work with PodDisruptionBudget resources. +type PodDisruptionBudgetInterface interface { + Create(*v1beta1.PodDisruptionBudget) (*v1beta1.PodDisruptionBudget, error) + Update(*v1beta1.PodDisruptionBudget) (*v1beta1.PodDisruptionBudget, error) + UpdateStatus(*v1beta1.PodDisruptionBudget) (*v1beta1.PodDisruptionBudget, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.PodDisruptionBudget, error) + List(opts v1.ListOptions) (*v1beta1.PodDisruptionBudgetList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error) + PodDisruptionBudgetExpansion +} + +// podDisruptionBudgets implements PodDisruptionBudgetInterface +type podDisruptionBudgets struct { + client rest.Interface + ns string +} + +// newPodDisruptionBudgets returns a PodDisruptionBudgets +func newPodDisruptionBudgets(c *PolicyV1beta1Client, namespace string) *podDisruptionBudgets { + return &podDisruptionBudgets{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a podDisruptionBudget and creates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any. +func (c *podDisruptionBudgets) Create(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { + result = &v1beta1.PodDisruptionBudget{} + err = c.client.Post(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Body(podDisruptionBudget). + Do(). + Into(result) + return +} + +// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any. +func (c *podDisruptionBudgets) Update(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { + result = &v1beta1.PodDisruptionBudget{} + err = c.client.Put(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(podDisruptionBudget.Name). + Body(podDisruptionBudget). + Do(). + Into(result) + return +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclientstatus=false comment above the type to avoid generating UpdateStatus(). + +func (c *podDisruptionBudgets) UpdateStatus(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { + result = &v1beta1.PodDisruptionBudget{} + err = c.client.Put(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(podDisruptionBudget.Name). + SubResource("status"). + Body(podDisruptionBudget). + Do(). + Into(result) + return +} + +// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs. +func (c *podDisruptionBudgets) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podDisruptionBudgets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any. +func (c *podDisruptionBudgets) Get(name string, options v1.GetOptions) (result *v1beta1.PodDisruptionBudget, err error) { + result = &v1beta1.PodDisruptionBudget{} + err = c.client.Get(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors. +func (c *podDisruptionBudgets) List(opts v1.ListOptions) (result *v1beta1.PodDisruptionBudgetList, err error) { + result = &v1beta1.PodDisruptionBudgetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podDisruptionBudgets. +func (c *podDisruptionBudgets) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podDisruptionBudget. +func (c *podDisruptionBudgets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error) { + result = &v1beta1.PodDisruptionBudget{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go new file mode 100644 index 000000000..9d62aad04 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/policy_client.go @@ -0,0 +1,93 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + rest "k8s.io/client-go/rest" +) + +type PolicyV1beta1Interface interface { + RESTClient() rest.Interface + EvictionsGetter + PodDisruptionBudgetsGetter +} + +// PolicyV1beta1Client is used to interact with features provided by the policy group. +type PolicyV1beta1Client struct { + restClient rest.Interface +} + +func (c *PolicyV1beta1Client) Evictions(namespace string) EvictionInterface { + return newEvictions(c, namespace) +} + +func (c *PolicyV1beta1Client) PodDisruptionBudgets(namespace string) PodDisruptionBudgetInterface { + return newPodDisruptionBudgets(c, namespace) +} + +// NewForConfig creates a new PolicyV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*PolicyV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &PolicyV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new PolicyV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *PolicyV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new PolicyV1beta1Client for the given RESTClient. +func New(c rest.Interface) *PolicyV1beta1Client { + return &PolicyV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *PolicyV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD new file mode 100644 index 000000000..9c1b62716 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clusterrole.go", + "clusterrolebinding.go", + "doc.go", + "generated_expansion.go", + "rbac_client.go", + "role.go", + "rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go new file mode 100644 index 000000000..241061025 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrole.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// ClusterRolesGetter has a method to return a ClusterRoleInterface. +// A group's client should implement this interface. +type ClusterRolesGetter interface { + ClusterRoles() ClusterRoleInterface +} + +// ClusterRoleInterface has methods to work with ClusterRole resources. +type ClusterRoleInterface interface { + Create(*v1alpha1.ClusterRole) (*v1alpha1.ClusterRole, error) + Update(*v1alpha1.ClusterRole) (*v1alpha1.ClusterRole, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.ClusterRole, error) + List(opts v1.ListOptions) (*v1alpha1.ClusterRoleList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRole, err error) + ClusterRoleExpansion +} + +// clusterRoles implements ClusterRoleInterface +type clusterRoles struct { + client rest.Interface +} + +// newClusterRoles returns a ClusterRoles +func newClusterRoles(c *RbacV1alpha1Client) *clusterRoles { + return &clusterRoles{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a clusterRole and creates it. Returns the server's representation of the clusterRole, and an error, if there is any. +func (c *clusterRoles) Create(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Post(). + Resource("clusterroles"). + Body(clusterRole). + Do(). + Into(result) + return +} + +// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any. +func (c *clusterRoles) Update(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Put(). + Resource("clusterroles"). + Name(clusterRole.Name). + Body(clusterRole). + Do(). + Into(result) + return +} + +// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. +func (c *clusterRoles) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterroles"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("clusterroles"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. +func (c *clusterRoles) Get(name string, options v1.GetOptions) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Get(). + Resource("clusterroles"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. +func (c *clusterRoles) List(opts v1.ListOptions) (result *v1alpha1.ClusterRoleList, err error) { + result = &v1alpha1.ClusterRoleList{} + err = c.client.Get(). + Resource("clusterroles"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterRoles. +func (c *clusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("clusterroles"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched clusterRole. +func (c *clusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Patch(pt). + Resource("clusterroles"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go new file mode 100644 index 000000000..bc48873a5 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// ClusterRoleBindingsGetter has a method to return a ClusterRoleBindingInterface. +// A group's client should implement this interface. +type ClusterRoleBindingsGetter interface { + ClusterRoleBindings() ClusterRoleBindingInterface +} + +// ClusterRoleBindingInterface has methods to work with ClusterRoleBinding resources. +type ClusterRoleBindingInterface interface { + Create(*v1alpha1.ClusterRoleBinding) (*v1alpha1.ClusterRoleBinding, error) + Update(*v1alpha1.ClusterRoleBinding) (*v1alpha1.ClusterRoleBinding, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.ClusterRoleBinding, error) + List(opts v1.ListOptions) (*v1alpha1.ClusterRoleBindingList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) + ClusterRoleBindingExpansion +} + +// clusterRoleBindings implements ClusterRoleBindingInterface +type clusterRoleBindings struct { + client rest.Interface +} + +// newClusterRoleBindings returns a ClusterRoleBindings +func newClusterRoleBindings(c *RbacV1alpha1Client) *clusterRoleBindings { + return &clusterRoleBindings{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a clusterRoleBinding and creates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. +func (c *clusterRoleBindings) Create(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Post(). + Resource("clusterrolebindings"). + Body(clusterRoleBinding). + Do(). + Into(result) + return +} + +// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. +func (c *clusterRoleBindings) Update(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Put(). + Resource("clusterrolebindings"). + Name(clusterRoleBinding.Name). + Body(clusterRoleBinding). + Do(). + Into(result) + return +} + +// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. +func (c *clusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterrolebindings"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("clusterrolebindings"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. +func (c *clusterRoleBindings) Get(name string, options v1.GetOptions) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Get(). + Resource("clusterrolebindings"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. +func (c *clusterRoleBindings) List(opts v1.ListOptions) (result *v1alpha1.ClusterRoleBindingList, err error) { + result = &v1alpha1.ClusterRoleBindingList{} + err = c.client.Get(). + Resource("clusterrolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterRoleBindings. +func (c *clusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("clusterrolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched clusterRoleBinding. +func (c *clusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Patch(pt). + Resource("clusterrolebindings"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go new file mode 100644 index 000000000..ba8d10d3b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD new file mode 100644 index 000000000..0f43e26f8 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_clusterrole.go", + "fake_clusterrolebinding.go", + "fake_rbac_client.go", + "fake_role.go", + "fake_rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go new file mode 100644 index 000000000..47b704b4e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeClusterRoles implements ClusterRoleInterface +type FakeClusterRoles struct { + Fake *FakeRbacV1alpha1 +} + +var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterroles"} + +var clusterrolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRole"} + +func (c *FakeClusterRoles) Create(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1alpha1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRole), err +} + +func (c *FakeClusterRoles) Update(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1alpha1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRole), err +} + +func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &v1alpha1.ClusterRole{}) + return err +} + +func (c *FakeClusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.ClusterRoleList{}) + return err +} + +func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *v1alpha1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1alpha1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRole), err +} + +func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *v1alpha1.ClusterRoleList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1alpha1.ClusterRoleList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ClusterRoleList{} + for _, item := range obj.(*v1alpha1.ClusterRoleList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested clusterRoles. +func (c *FakeClusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts)) +} + +// Patch applies the patch and returns the patched clusterRole. +func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, data, subresources...), &v1alpha1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRole), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go new file mode 100644 index 000000000..c17a18652 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeClusterRoleBindings implements ClusterRoleBindingInterface +type FakeClusterRoleBindings struct { + Fake *FakeRbacV1alpha1 +} + +var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterrolebindings"} + +var clusterrolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRoleBinding"} + +func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1alpha1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRoleBinding), err +} + +func (c *FakeClusterRoleBindings) Update(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1alpha1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRoleBinding), err +} + +func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &v1alpha1.ClusterRoleBinding{}) + return err +} + +func (c *FakeClusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.ClusterRoleBindingList{}) + return err +} + +func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *v1alpha1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1alpha1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRoleBinding), err +} + +func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *v1alpha1.ClusterRoleBindingList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1alpha1.ClusterRoleBindingList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ClusterRoleBindingList{} + for _, item := range obj.(*v1alpha1.ClusterRoleBindingList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested clusterRoleBindings. +func (c *FakeClusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts)) +} + +// Patch applies the patch and returns the patched clusterRoleBinding. +func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, data, subresources...), &v1alpha1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterRoleBinding), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go new file mode 100644 index 000000000..11470696d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go @@ -0,0 +1,50 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeRbacV1alpha1 struct { + *testing.Fake +} + +func (c *FakeRbacV1alpha1) ClusterRoles() v1alpha1.ClusterRoleInterface { + return &FakeClusterRoles{c} +} + +func (c *FakeRbacV1alpha1) ClusterRoleBindings() v1alpha1.ClusterRoleBindingInterface { + return &FakeClusterRoleBindings{c} +} + +func (c *FakeRbacV1alpha1) Roles(namespace string) v1alpha1.RoleInterface { + return &FakeRoles{c, namespace} +} + +func (c *FakeRbacV1alpha1) RoleBindings(namespace string) v1alpha1.RoleBindingInterface { + return &FakeRoleBindings{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeRbacV1alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go new file mode 100644 index 000000000..c70b213a3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeRoles implements RoleInterface +type FakeRoles struct { + Fake *FakeRbacV1alpha1 + ns string +} + +var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "roles"} + +var rolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "Role"} + +func (c *FakeRoles) Create(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1alpha1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.Role), err +} + +func (c *FakeRoles) Update(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1alpha1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.Role), err +} + +func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &v1alpha1.Role{}) + + return err +} + +func (c *FakeRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.RoleList{}) + return err +} + +func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *v1alpha1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1alpha1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.Role), err +} + +func (c *FakeRoles) List(opts v1.ListOptions) (result *v1alpha1.RoleList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1alpha1.RoleList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.RoleList{} + for _, item := range obj.(*v1alpha1.RoleList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested roles. +func (c *FakeRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched role. +func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, data, subresources...), &v1alpha1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.Role), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go new file mode 100644 index 000000000..f4768985e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeRoleBindings implements RoleBindingInterface +type FakeRoleBindings struct { + Fake *FakeRbacV1alpha1 + ns string +} + +var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "rolebindings"} + +var rolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "RoleBinding"} + +func (c *FakeRoleBindings) Create(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1alpha1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.RoleBinding), err +} + +func (c *FakeRoleBindings) Update(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1alpha1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.RoleBinding), err +} + +func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &v1alpha1.RoleBinding{}) + + return err +} + +func (c *FakeRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.RoleBindingList{}) + return err +} + +func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *v1alpha1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1alpha1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.RoleBinding), err +} + +func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *v1alpha1.RoleBindingList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1alpha1.RoleBindingList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.RoleBindingList{} + for _, item := range obj.(*v1alpha1.RoleBindingList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested roleBindings. +func (c *FakeRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched roleBinding. +func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, data, subresources...), &v1alpha1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.RoleBinding), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go new file mode 100644 index 000000000..f506fc346 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/generated_expansion.go @@ -0,0 +1,25 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type ClusterRoleExpansion interface{} + +type ClusterRoleBindingExpansion interface{} + +type RoleExpansion interface{} + +type RoleBindingExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go new file mode 100644 index 000000000..67256d50f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rbac_client.go @@ -0,0 +1,103 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rest "k8s.io/client-go/rest" +) + +type RbacV1alpha1Interface interface { + RESTClient() rest.Interface + ClusterRolesGetter + ClusterRoleBindingsGetter + RolesGetter + RoleBindingsGetter +} + +// RbacV1alpha1Client is used to interact with features provided by the rbac.authorization.k8s.io group. +type RbacV1alpha1Client struct { + restClient rest.Interface +} + +func (c *RbacV1alpha1Client) ClusterRoles() ClusterRoleInterface { + return newClusterRoles(c) +} + +func (c *RbacV1alpha1Client) ClusterRoleBindings() ClusterRoleBindingInterface { + return newClusterRoleBindings(c) +} + +func (c *RbacV1alpha1Client) Roles(namespace string) RoleInterface { + return newRoles(c, namespace) +} + +func (c *RbacV1alpha1Client) RoleBindings(namespace string) RoleBindingInterface { + return newRoleBindings(c, namespace) +} + +// NewForConfig creates a new RbacV1alpha1Client for the given config. +func NewForConfig(c *rest.Config) (*RbacV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &RbacV1alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new RbacV1alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *RbacV1alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new RbacV1alpha1Client for the given RESTClient. +func New(c rest.Interface) *RbacV1alpha1Client { + return &RbacV1alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *RbacV1alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go new file mode 100644 index 000000000..9c4fa915e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/role.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// RolesGetter has a method to return a RoleInterface. +// A group's client should implement this interface. +type RolesGetter interface { + Roles(namespace string) RoleInterface +} + +// RoleInterface has methods to work with Role resources. +type RoleInterface interface { + Create(*v1alpha1.Role) (*v1alpha1.Role, error) + Update(*v1alpha1.Role) (*v1alpha1.Role, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.Role, error) + List(opts v1.ListOptions) (*v1alpha1.RoleList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Role, err error) + RoleExpansion +} + +// roles implements RoleInterface +type roles struct { + client rest.Interface + ns string +} + +// newRoles returns a Roles +func newRoles(c *RbacV1alpha1Client, namespace string) *roles { + return &roles{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a role and creates it. Returns the server's representation of the role, and an error, if there is any. +func (c *roles) Create(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Post(). + Namespace(c.ns). + Resource("roles"). + Body(role). + Do(). + Into(result) + return +} + +// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any. +func (c *roles) Update(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Put(). + Namespace(c.ns). + Resource("roles"). + Name(role.Name). + Body(role). + Do(). + Into(result) + return +} + +// Delete takes name of the role and deletes it. Returns an error if one occurs. +func (c *roles) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("roles"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *roles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the role, and returns the corresponding role object, and an error if there is any. +func (c *roles) Get(name string, options v1.GetOptions) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Get(). + Namespace(c.ns). + Resource("roles"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Roles that match those selectors. +func (c *roles) List(opts v1.ListOptions) (result *v1alpha1.RoleList, err error) { + result = &v1alpha1.RoleList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested roles. +func (c *roles) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched role. +func (c *roles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("roles"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go new file mode 100644 index 000000000..5e81967f1 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/rolebinding.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// RoleBindingsGetter has a method to return a RoleBindingInterface. +// A group's client should implement this interface. +type RoleBindingsGetter interface { + RoleBindings(namespace string) RoleBindingInterface +} + +// RoleBindingInterface has methods to work with RoleBinding resources. +type RoleBindingInterface interface { + Create(*v1alpha1.RoleBinding) (*v1alpha1.RoleBinding, error) + Update(*v1alpha1.RoleBinding) (*v1alpha1.RoleBinding, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.RoleBinding, error) + List(opts v1.ListOptions) (*v1alpha1.RoleBindingList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.RoleBinding, err error) + RoleBindingExpansion +} + +// roleBindings implements RoleBindingInterface +type roleBindings struct { + client rest.Interface + ns string +} + +// newRoleBindings returns a RoleBindings +func newRoleBindings(c *RbacV1alpha1Client, namespace string) *roleBindings { + return &roleBindings{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a roleBinding and creates it. Returns the server's representation of the roleBinding, and an error, if there is any. +func (c *roleBindings) Create(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Post(). + Namespace(c.ns). + Resource("rolebindings"). + Body(roleBinding). + Do(). + Into(result) + return +} + +// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any. +func (c *roleBindings) Update(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Put(). + Namespace(c.ns). + Resource("rolebindings"). + Name(roleBinding.Name). + Body(roleBinding). + Do(). + Into(result) + return +} + +// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. +func (c *roleBindings) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("rolebindings"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *roleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. +func (c *roleBindings) Get(name string, options v1.GetOptions) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of RoleBindings that match those selectors. +func (c *roleBindings) List(opts v1.ListOptions) (result *v1alpha1.RoleBindingList, err error) { + result = &v1alpha1.RoleBindingList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested roleBindings. +func (c *roleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched roleBinding. +func (c *roleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("rolebindings"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD new file mode 100644 index 000000000..efbfaa177 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clusterrole.go", + "clusterrolebinding.go", + "doc.go", + "generated_expansion.go", + "rbac_client.go", + "role.go", + "rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go new file mode 100644 index 000000000..6a63571f3 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrole.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + rest "k8s.io/client-go/rest" +) + +// ClusterRolesGetter has a method to return a ClusterRoleInterface. +// A group's client should implement this interface. +type ClusterRolesGetter interface { + ClusterRoles() ClusterRoleInterface +} + +// ClusterRoleInterface has methods to work with ClusterRole resources. +type ClusterRoleInterface interface { + Create(*v1beta1.ClusterRole) (*v1beta1.ClusterRole, error) + Update(*v1beta1.ClusterRole) (*v1beta1.ClusterRole, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.ClusterRole, error) + List(opts v1.ListOptions) (*v1beta1.ClusterRoleList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRole, err error) + ClusterRoleExpansion +} + +// clusterRoles implements ClusterRoleInterface +type clusterRoles struct { + client rest.Interface +} + +// newClusterRoles returns a ClusterRoles +func newClusterRoles(c *RbacV1beta1Client) *clusterRoles { + return &clusterRoles{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a clusterRole and creates it. Returns the server's representation of the clusterRole, and an error, if there is any. +func (c *clusterRoles) Create(clusterRole *v1beta1.ClusterRole) (result *v1beta1.ClusterRole, err error) { + result = &v1beta1.ClusterRole{} + err = c.client.Post(). + Resource("clusterroles"). + Body(clusterRole). + Do(). + Into(result) + return +} + +// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any. +func (c *clusterRoles) Update(clusterRole *v1beta1.ClusterRole) (result *v1beta1.ClusterRole, err error) { + result = &v1beta1.ClusterRole{} + err = c.client.Put(). + Resource("clusterroles"). + Name(clusterRole.Name). + Body(clusterRole). + Do(). + Into(result) + return +} + +// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. +func (c *clusterRoles) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterroles"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("clusterroles"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. +func (c *clusterRoles) Get(name string, options v1.GetOptions) (result *v1beta1.ClusterRole, err error) { + result = &v1beta1.ClusterRole{} + err = c.client.Get(). + Resource("clusterroles"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. +func (c *clusterRoles) List(opts v1.ListOptions) (result *v1beta1.ClusterRoleList, err error) { + result = &v1beta1.ClusterRoleList{} + err = c.client.Get(). + Resource("clusterroles"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterRoles. +func (c *clusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("clusterroles"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched clusterRole. +func (c *clusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRole, err error) { + result = &v1beta1.ClusterRole{} + err = c.client.Patch(pt). + Resource("clusterroles"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go new file mode 100644 index 000000000..a2f387509 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/clusterrolebinding.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + rest "k8s.io/client-go/rest" +) + +// ClusterRoleBindingsGetter has a method to return a ClusterRoleBindingInterface. +// A group's client should implement this interface. +type ClusterRoleBindingsGetter interface { + ClusterRoleBindings() ClusterRoleBindingInterface +} + +// ClusterRoleBindingInterface has methods to work with ClusterRoleBinding resources. +type ClusterRoleBindingInterface interface { + Create(*v1beta1.ClusterRoleBinding) (*v1beta1.ClusterRoleBinding, error) + Update(*v1beta1.ClusterRoleBinding) (*v1beta1.ClusterRoleBinding, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.ClusterRoleBinding, error) + List(opts v1.ListOptions) (*v1beta1.ClusterRoleBindingList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error) + ClusterRoleBindingExpansion +} + +// clusterRoleBindings implements ClusterRoleBindingInterface +type clusterRoleBindings struct { + client rest.Interface +} + +// newClusterRoleBindings returns a ClusterRoleBindings +func newClusterRoleBindings(c *RbacV1beta1Client) *clusterRoleBindings { + return &clusterRoleBindings{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a clusterRoleBinding and creates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. +func (c *clusterRoleBindings) Create(clusterRoleBinding *v1beta1.ClusterRoleBinding) (result *v1beta1.ClusterRoleBinding, err error) { + result = &v1beta1.ClusterRoleBinding{} + err = c.client.Post(). + Resource("clusterrolebindings"). + Body(clusterRoleBinding). + Do(). + Into(result) + return +} + +// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. +func (c *clusterRoleBindings) Update(clusterRoleBinding *v1beta1.ClusterRoleBinding) (result *v1beta1.ClusterRoleBinding, err error) { + result = &v1beta1.ClusterRoleBinding{} + err = c.client.Put(). + Resource("clusterrolebindings"). + Name(clusterRoleBinding.Name). + Body(clusterRoleBinding). + Do(). + Into(result) + return +} + +// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. +func (c *clusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterrolebindings"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("clusterrolebindings"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. +func (c *clusterRoleBindings) Get(name string, options v1.GetOptions) (result *v1beta1.ClusterRoleBinding, err error) { + result = &v1beta1.ClusterRoleBinding{} + err = c.client.Get(). + Resource("clusterrolebindings"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. +func (c *clusterRoleBindings) List(opts v1.ListOptions) (result *v1beta1.ClusterRoleBindingList, err error) { + result = &v1beta1.ClusterRoleBindingList{} + err = c.client.Get(). + Resource("clusterrolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterRoleBindings. +func (c *clusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("clusterrolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched clusterRoleBinding. +func (c *clusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error) { + result = &v1beta1.ClusterRoleBinding{} + err = c.client.Patch(pt). + Resource("clusterrolebindings"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD new file mode 100644 index 000000000..cbcbded48 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_clusterrole.go", + "fake_clusterrolebinding.go", + "fake_rbac_client.go", + "fake_role.go", + "fake_rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go new file mode 100644 index 000000000..43fbd921f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeClusterRoles implements ClusterRoleInterface +type FakeClusterRoles struct { + Fake *FakeRbacV1beta1 +} + +var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "clusterroles"} + +var clusterrolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRole"} + +func (c *FakeClusterRoles) Create(clusterRole *v1beta1.ClusterRole) (result *v1beta1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1beta1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRole), err +} + +func (c *FakeClusterRoles) Update(clusterRole *v1beta1.ClusterRole) (result *v1beta1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1beta1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRole), err +} + +func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &v1beta1.ClusterRole{}) + return err +} + +func (c *FakeClusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.ClusterRoleList{}) + return err +} + +func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *v1beta1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1beta1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRole), err +} + +func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *v1beta1.ClusterRoleList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1beta1.ClusterRoleList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.ClusterRoleList{} + for _, item := range obj.(*v1beta1.ClusterRoleList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested clusterRoles. +func (c *FakeClusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts)) +} + +// Patch applies the patch and returns the patched clusterRole. +func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRole, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, data, subresources...), &v1beta1.ClusterRole{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRole), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go new file mode 100644 index 000000000..e223cc2fb --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeClusterRoleBindings implements ClusterRoleBindingInterface +type FakeClusterRoleBindings struct { + Fake *FakeRbacV1beta1 +} + +var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "clusterrolebindings"} + +var clusterrolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRoleBinding"} + +func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *v1beta1.ClusterRoleBinding) (result *v1beta1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1beta1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRoleBinding), err +} + +func (c *FakeClusterRoleBindings) Update(clusterRoleBinding *v1beta1.ClusterRoleBinding) (result *v1beta1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1beta1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRoleBinding), err +} + +func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &v1beta1.ClusterRoleBinding{}) + return err +} + +func (c *FakeClusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.ClusterRoleBindingList{}) + return err +} + +func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *v1beta1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1beta1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRoleBinding), err +} + +func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *v1beta1.ClusterRoleBindingList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1beta1.ClusterRoleBindingList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.ClusterRoleBindingList{} + for _, item := range obj.(*v1beta1.ClusterRoleBindingList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested clusterRoleBindings. +func (c *FakeClusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts)) +} + +// Patch applies the patch and returns the patched clusterRoleBinding. +func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, data, subresources...), &v1beta1.ClusterRoleBinding{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.ClusterRoleBinding), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go new file mode 100644 index 000000000..929d03529 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go @@ -0,0 +1,50 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeRbacV1beta1 struct { + *testing.Fake +} + +func (c *FakeRbacV1beta1) ClusterRoles() v1beta1.ClusterRoleInterface { + return &FakeClusterRoles{c} +} + +func (c *FakeRbacV1beta1) ClusterRoleBindings() v1beta1.ClusterRoleBindingInterface { + return &FakeClusterRoleBindings{c} +} + +func (c *FakeRbacV1beta1) Roles(namespace string) v1beta1.RoleInterface { + return &FakeRoles{c, namespace} +} + +func (c *FakeRbacV1beta1) RoleBindings(namespace string) v1beta1.RoleBindingInterface { + return &FakeRoleBindings{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeRbacV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go new file mode 100644 index 000000000..334a70451 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeRoles implements RoleInterface +type FakeRoles struct { + Fake *FakeRbacV1beta1 + ns string +} + +var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "roles"} + +var rolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "Role"} + +func (c *FakeRoles) Create(role *v1beta1.Role) (result *v1beta1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1beta1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Role), err +} + +func (c *FakeRoles) Update(role *v1beta1.Role) (result *v1beta1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1beta1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Role), err +} + +func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &v1beta1.Role{}) + + return err +} + +func (c *FakeRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.RoleList{}) + return err +} + +func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *v1beta1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1beta1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Role), err +} + +func (c *FakeRoles) List(opts v1.ListOptions) (result *v1beta1.RoleList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1beta1.RoleList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.RoleList{} + for _, item := range obj.(*v1beta1.RoleList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested roles. +func (c *FakeRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched role. +func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Role, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, data, subresources...), &v1beta1.Role{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.Role), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go new file mode 100644 index 000000000..5a4729b91 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeRoleBindings implements RoleBindingInterface +type FakeRoleBindings struct { + Fake *FakeRbacV1beta1 + ns string +} + +var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "rolebindings"} + +var rolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "RoleBinding"} + +func (c *FakeRoleBindings) Create(roleBinding *v1beta1.RoleBinding) (result *v1beta1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1beta1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.RoleBinding), err +} + +func (c *FakeRoleBindings) Update(roleBinding *v1beta1.RoleBinding) (result *v1beta1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1beta1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.RoleBinding), err +} + +func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &v1beta1.RoleBinding{}) + + return err +} + +func (c *FakeRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.RoleBindingList{}) + return err +} + +func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *v1beta1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1beta1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.RoleBinding), err +} + +func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *v1beta1.RoleBindingList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1beta1.RoleBindingList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.RoleBindingList{} + for _, item := range obj.(*v1beta1.RoleBindingList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested roleBindings. +func (c *FakeRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched roleBinding. +func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.RoleBinding, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, data, subresources...), &v1beta1.RoleBinding{}) + + if obj == nil { + return nil, err + } + return obj.(*v1beta1.RoleBinding), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go new file mode 100644 index 000000000..d7f80c004 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/generated_expansion.go @@ -0,0 +1,25 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type ClusterRoleExpansion interface{} + +type ClusterRoleBindingExpansion interface{} + +type RoleExpansion interface{} + +type RoleBindingExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go new file mode 100644 index 000000000..a24ef4f9a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rbac_client.go @@ -0,0 +1,103 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + rest "k8s.io/client-go/rest" +) + +type RbacV1beta1Interface interface { + RESTClient() rest.Interface + ClusterRolesGetter + ClusterRoleBindingsGetter + RolesGetter + RoleBindingsGetter +} + +// RbacV1beta1Client is used to interact with features provided by the rbac.authorization.k8s.io group. +type RbacV1beta1Client struct { + restClient rest.Interface +} + +func (c *RbacV1beta1Client) ClusterRoles() ClusterRoleInterface { + return newClusterRoles(c) +} + +func (c *RbacV1beta1Client) ClusterRoleBindings() ClusterRoleBindingInterface { + return newClusterRoleBindings(c) +} + +func (c *RbacV1beta1Client) Roles(namespace string) RoleInterface { + return newRoles(c, namespace) +} + +func (c *RbacV1beta1Client) RoleBindings(namespace string) RoleBindingInterface { + return newRoleBindings(c, namespace) +} + +// NewForConfig creates a new RbacV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*RbacV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &RbacV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new RbacV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *RbacV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new RbacV1beta1Client for the given RESTClient. +func New(c rest.Interface) *RbacV1beta1Client { + return &RbacV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *RbacV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go new file mode 100644 index 000000000..aa57ac319 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/role.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + rest "k8s.io/client-go/rest" +) + +// RolesGetter has a method to return a RoleInterface. +// A group's client should implement this interface. +type RolesGetter interface { + Roles(namespace string) RoleInterface +} + +// RoleInterface has methods to work with Role resources. +type RoleInterface interface { + Create(*v1beta1.Role) (*v1beta1.Role, error) + Update(*v1beta1.Role) (*v1beta1.Role, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.Role, error) + List(opts v1.ListOptions) (*v1beta1.RoleList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Role, err error) + RoleExpansion +} + +// roles implements RoleInterface +type roles struct { + client rest.Interface + ns string +} + +// newRoles returns a Roles +func newRoles(c *RbacV1beta1Client, namespace string) *roles { + return &roles{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a role and creates it. Returns the server's representation of the role, and an error, if there is any. +func (c *roles) Create(role *v1beta1.Role) (result *v1beta1.Role, err error) { + result = &v1beta1.Role{} + err = c.client.Post(). + Namespace(c.ns). + Resource("roles"). + Body(role). + Do(). + Into(result) + return +} + +// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any. +func (c *roles) Update(role *v1beta1.Role) (result *v1beta1.Role, err error) { + result = &v1beta1.Role{} + err = c.client.Put(). + Namespace(c.ns). + Resource("roles"). + Name(role.Name). + Body(role). + Do(). + Into(result) + return +} + +// Delete takes name of the role and deletes it. Returns an error if one occurs. +func (c *roles) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("roles"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *roles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the role, and returns the corresponding role object, and an error if there is any. +func (c *roles) Get(name string, options v1.GetOptions) (result *v1beta1.Role, err error) { + result = &v1beta1.Role{} + err = c.client.Get(). + Namespace(c.ns). + Resource("roles"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Roles that match those selectors. +func (c *roles) List(opts v1.ListOptions) (result *v1beta1.RoleList, err error) { + result = &v1beta1.RoleList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested roles. +func (c *roles) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched role. +func (c *roles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Role, err error) { + result = &v1beta1.Role{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("roles"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go new file mode 100644 index 000000000..3dee9107e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/rolebinding.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + rest "k8s.io/client-go/rest" +) + +// RoleBindingsGetter has a method to return a RoleBindingInterface. +// A group's client should implement this interface. +type RoleBindingsGetter interface { + RoleBindings(namespace string) RoleBindingInterface +} + +// RoleBindingInterface has methods to work with RoleBinding resources. +type RoleBindingInterface interface { + Create(*v1beta1.RoleBinding) (*v1beta1.RoleBinding, error) + Update(*v1beta1.RoleBinding) (*v1beta1.RoleBinding, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.RoleBinding, error) + List(opts v1.ListOptions) (*v1beta1.RoleBindingList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.RoleBinding, err error) + RoleBindingExpansion +} + +// roleBindings implements RoleBindingInterface +type roleBindings struct { + client rest.Interface + ns string +} + +// newRoleBindings returns a RoleBindings +func newRoleBindings(c *RbacV1beta1Client, namespace string) *roleBindings { + return &roleBindings{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a roleBinding and creates it. Returns the server's representation of the roleBinding, and an error, if there is any. +func (c *roleBindings) Create(roleBinding *v1beta1.RoleBinding) (result *v1beta1.RoleBinding, err error) { + result = &v1beta1.RoleBinding{} + err = c.client.Post(). + Namespace(c.ns). + Resource("rolebindings"). + Body(roleBinding). + Do(). + Into(result) + return +} + +// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any. +func (c *roleBindings) Update(roleBinding *v1beta1.RoleBinding) (result *v1beta1.RoleBinding, err error) { + result = &v1beta1.RoleBinding{} + err = c.client.Put(). + Namespace(c.ns). + Resource("rolebindings"). + Name(roleBinding.Name). + Body(roleBinding). + Do(). + Into(result) + return +} + +// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. +func (c *roleBindings) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("rolebindings"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *roleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. +func (c *roleBindings) Get(name string, options v1.GetOptions) (result *v1beta1.RoleBinding, err error) { + result = &v1beta1.RoleBinding{} + err = c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of RoleBindings that match those selectors. +func (c *roleBindings) List(opts v1.ListOptions) (result *v1beta1.RoleBindingList, err error) { + result = &v1beta1.RoleBindingList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested roleBindings. +func (c *roleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched roleBinding. +func (c *roleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.RoleBinding, err error) { + result = &v1beta1.RoleBinding{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("rolebindings"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD new file mode 100644 index 000000000..181d6dfd4 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated_expansion.go", + "podpreset.go", + "settings_client.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/doc.go new file mode 100644 index 000000000..ba8d10d3b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD new file mode 100644 index 000000000..a1bf1351a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_podpreset.go", + "fake_settings_client.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go new file mode 100644 index 000000000..8c576cab9 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakePodPresets implements PodPresetInterface +type FakePodPresets struct { + Fake *FakeSettingsV1alpha1 + ns string +} + +var podpresetsResource = schema.GroupVersionResource{Group: "settings.k8s.io", Version: "v1alpha1", Resource: "podpresets"} + +var podpresetsKind = schema.GroupVersionKind{Group: "settings.k8s.io", Version: "v1alpha1", Kind: "PodPreset"} + +func (c *FakePodPresets) Create(podPreset *v1alpha1.PodPreset) (result *v1alpha1.PodPreset, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(podpresetsResource, c.ns, podPreset), &v1alpha1.PodPreset{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.PodPreset), err +} + +func (c *FakePodPresets) Update(podPreset *v1alpha1.PodPreset) (result *v1alpha1.PodPreset, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(podpresetsResource, c.ns, podPreset), &v1alpha1.PodPreset{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.PodPreset), err +} + +func (c *FakePodPresets) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(podpresetsResource, c.ns, name), &v1alpha1.PodPreset{}) + + return err +} + +func (c *FakePodPresets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(podpresetsResource, c.ns, listOptions) + + _, err := c.Fake.Invokes(action, &v1alpha1.PodPresetList{}) + return err +} + +func (c *FakePodPresets) Get(name string, options v1.GetOptions) (result *v1alpha1.PodPreset, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(podpresetsResource, c.ns, name), &v1alpha1.PodPreset{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.PodPreset), err +} + +func (c *FakePodPresets) List(opts v1.ListOptions) (result *v1alpha1.PodPresetList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(podpresetsResource, podpresetsKind, c.ns, opts), &v1alpha1.PodPresetList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.PodPresetList{} + for _, item := range obj.(*v1alpha1.PodPresetList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested podPresets. +func (c *FakePodPresets) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(podpresetsResource, c.ns, opts)) + +} + +// Patch applies the patch and returns the patched podPreset. +func (c *FakePodPresets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.PodPreset, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(podpresetsResource, c.ns, name, data, subresources...), &v1alpha1.PodPreset{}) + + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.PodPreset), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go new file mode 100644 index 000000000..6feb9b218 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeSettingsV1alpha1 struct { + *testing.Fake +} + +func (c *FakeSettingsV1alpha1) PodPresets(namespace string) v1alpha1.PodPresetInterface { + return &FakePodPresets{c, namespace} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeSettingsV1alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/generated_expansion.go new file mode 100644 index 000000000..d599b2935 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type PodPresetExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/podpreset.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/podpreset.go new file mode 100644 index 000000000..b8fc0a022 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/podpreset.go @@ -0,0 +1,155 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + rest "k8s.io/client-go/rest" +) + +// PodPresetsGetter has a method to return a PodPresetInterface. +// A group's client should implement this interface. +type PodPresetsGetter interface { + PodPresets(namespace string) PodPresetInterface +} + +// PodPresetInterface has methods to work with PodPreset resources. +type PodPresetInterface interface { + Create(*v1alpha1.PodPreset) (*v1alpha1.PodPreset, error) + Update(*v1alpha1.PodPreset) (*v1alpha1.PodPreset, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1alpha1.PodPreset, error) + List(opts v1.ListOptions) (*v1alpha1.PodPresetList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.PodPreset, err error) + PodPresetExpansion +} + +// podPresets implements PodPresetInterface +type podPresets struct { + client rest.Interface + ns string +} + +// newPodPresets returns a PodPresets +func newPodPresets(c *SettingsV1alpha1Client, namespace string) *podPresets { + return &podPresets{ + client: c.RESTClient(), + ns: namespace, + } +} + +// Create takes the representation of a podPreset and creates it. Returns the server's representation of the podPreset, and an error, if there is any. +func (c *podPresets) Create(podPreset *v1alpha1.PodPreset) (result *v1alpha1.PodPreset, err error) { + result = &v1alpha1.PodPreset{} + err = c.client.Post(). + Namespace(c.ns). + Resource("podpresets"). + Body(podPreset). + Do(). + Into(result) + return +} + +// Update takes the representation of a podPreset and updates it. Returns the server's representation of the podPreset, and an error, if there is any. +func (c *podPresets) Update(podPreset *v1alpha1.PodPreset) (result *v1alpha1.PodPreset, err error) { + result = &v1alpha1.PodPreset{} + err = c.client.Put(). + Namespace(c.ns). + Resource("podpresets"). + Name(podPreset.Name). + Body(podPreset). + Do(). + Into(result) + return +} + +// Delete takes name of the podPreset and deletes it. Returns an error if one occurs. +func (c *podPresets) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("podpresets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podPresets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("podpresets"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podPreset, and returns the corresponding podPreset object, and an error if there is any. +func (c *podPresets) Get(name string, options v1.GetOptions) (result *v1alpha1.PodPreset, err error) { + result = &v1alpha1.PodPreset{} + err = c.client.Get(). + Namespace(c.ns). + Resource("podpresets"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodPresets that match those selectors. +func (c *podPresets) List(opts v1.ListOptions) (result *v1alpha1.PodPresetList, err error) { + result = &v1alpha1.PodPresetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("podpresets"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podPresets. +func (c *podPresets) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Namespace(c.ns). + Resource("podpresets"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podPreset. +func (c *podPresets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.PodPreset, err error) { + result = &v1alpha1.PodPreset{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("podpresets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/settings_client.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/settings_client.go new file mode 100644 index 000000000..1a90034bc --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/settings_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + rest "k8s.io/client-go/rest" +) + +type SettingsV1alpha1Interface interface { + RESTClient() rest.Interface + PodPresetsGetter +} + +// SettingsV1alpha1Client is used to interact with features provided by the settings.k8s.io group. +type SettingsV1alpha1Client struct { + restClient rest.Interface +} + +func (c *SettingsV1alpha1Client) PodPresets(namespace string) PodPresetInterface { + return newPodPresets(c, namespace) +} + +// NewForConfig creates a new SettingsV1alpha1Client for the given config. +func NewForConfig(c *rest.Config) (*SettingsV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &SettingsV1alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new SettingsV1alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *SettingsV1alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new SettingsV1alpha1Client for the given RESTClient. +func New(c rest.Interface) *SettingsV1alpha1Client { + return &SettingsV1alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *SettingsV1alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD new file mode 100644 index 000000000..18100507d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated_expansion.go", + "storage_client.go", + "storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go new file mode 100644 index 000000000..54673bfa7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD new file mode 100644 index 000000000..5ce88bd43 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_storage_client.go", + "fake_storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go new file mode 100644 index 000000000..97972f0f7 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/client-go/kubernetes/typed/storage/v1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeStorageV1 struct { + *testing.Fake +} + +func (c *FakeStorageV1) StorageClasses() v1.StorageClassInterface { + return &FakeStorageClasses{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeStorageV1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go new file mode 100644 index 000000000..51ae990c0 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1 "k8s.io/client-go/pkg/apis/storage/v1" + testing "k8s.io/client-go/testing" +) + +// FakeStorageClasses implements StorageClassInterface +type FakeStorageClasses struct { + Fake *FakeStorageV1 +} + +var storageclassesResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1", Resource: "storageclasses"} + +var storageclassesKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"} + +func (c *FakeStorageClasses) Create(storageClass *v1.StorageClass) (result *v1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &v1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1.StorageClass), err +} + +func (c *FakeStorageClasses) Update(storageClass *v1.StorageClass) (result *v1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &v1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1.StorageClass), err +} + +func (c *FakeStorageClasses) Delete(name string, options *meta_v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(storageclassesResource, name), &v1.StorageClass{}) + return err +} + +func (c *FakeStorageClasses) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1.StorageClassList{}) + return err +} + +func (c *FakeStorageClasses) Get(name string, options meta_v1.GetOptions) (result *v1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(storageclassesResource, name), &v1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1.StorageClass), err +} + +func (c *FakeStorageClasses) List(opts meta_v1.ListOptions) (result *v1.StorageClassList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &v1.StorageClassList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1.StorageClassList{} + for _, item := range obj.(*v1.StorageClassList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested storageClasses. +func (c *FakeStorageClasses) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(storageclassesResource, opts)) +} + +// Patch applies the patch and returns the patched storageClass. +func (c *FakeStorageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, data, subresources...), &v1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1.StorageClass), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go new file mode 100644 index 000000000..39df9fb87 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type StorageClassExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go new file mode 100644 index 000000000..a95d30b2d --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storage_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/storage/v1" + rest "k8s.io/client-go/rest" +) + +type StorageV1Interface interface { + RESTClient() rest.Interface + StorageClassesGetter +} + +// StorageV1Client is used to interact with features provided by the storage.k8s.io group. +type StorageV1Client struct { + restClient rest.Interface +} + +func (c *StorageV1Client) StorageClasses() StorageClassInterface { + return newStorageClasses(c) +} + +// NewForConfig creates a new StorageV1Client for the given config. +func NewForConfig(c *rest.Config) (*StorageV1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &StorageV1Client{client}, nil +} + +// NewForConfigOrDie creates a new StorageV1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *StorageV1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new StorageV1Client for the given RESTClient. +func New(c rest.Interface) *StorageV1Client { + return &StorageV1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *StorageV1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go new file mode 100644 index 000000000..0283c9970 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/storageclass.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1 "k8s.io/client-go/pkg/apis/storage/v1" + rest "k8s.io/client-go/rest" +) + +// StorageClassesGetter has a method to return a StorageClassInterface. +// A group's client should implement this interface. +type StorageClassesGetter interface { + StorageClasses() StorageClassInterface +} + +// StorageClassInterface has methods to work with StorageClass resources. +type StorageClassInterface interface { + Create(*v1.StorageClass) (*v1.StorageClass, error) + Update(*v1.StorageClass) (*v1.StorageClass, error) + Delete(name string, options *meta_v1.DeleteOptions) error + DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error + Get(name string, options meta_v1.GetOptions) (*v1.StorageClass, error) + List(opts meta_v1.ListOptions) (*v1.StorageClassList, error) + Watch(opts meta_v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.StorageClass, err error) + StorageClassExpansion +} + +// storageClasses implements StorageClassInterface +type storageClasses struct { + client rest.Interface +} + +// newStorageClasses returns a StorageClasses +func newStorageClasses(c *StorageV1Client) *storageClasses { + return &storageClasses{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any. +func (c *storageClasses) Create(storageClass *v1.StorageClass) (result *v1.StorageClass, err error) { + result = &v1.StorageClass{} + err = c.client.Post(). + Resource("storageclasses"). + Body(storageClass). + Do(). + Into(result) + return +} + +// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any. +func (c *storageClasses) Update(storageClass *v1.StorageClass) (result *v1.StorageClass, err error) { + result = &v1.StorageClass{} + err = c.client.Put(). + Resource("storageclasses"). + Name(storageClass.Name). + Body(storageClass). + Do(). + Into(result) + return +} + +// Delete takes name of the storageClass and deletes it. Returns an error if one occurs. +func (c *storageClasses) Delete(name string, options *meta_v1.DeleteOptions) error { + return c.client.Delete(). + Resource("storageclasses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *storageClasses) DeleteCollection(options *meta_v1.DeleteOptions, listOptions meta_v1.ListOptions) error { + return c.client.Delete(). + Resource("storageclasses"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. +func (c *storageClasses) Get(name string, options meta_v1.GetOptions) (result *v1.StorageClass, err error) { + result = &v1.StorageClass{} + err = c.client.Get(). + Resource("storageclasses"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of StorageClasses that match those selectors. +func (c *storageClasses) List(opts meta_v1.ListOptions) (result *v1.StorageClassList, err error) { + result = &v1.StorageClassList{} + err = c.client.Get(). + Resource("storageclasses"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested storageClasses. +func (c *storageClasses) Watch(opts meta_v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("storageclasses"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched storageClass. +func (c *storageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.StorageClass, err error) { + result = &v1.StorageClass{} + err = c.client.Patch(pt). + Resource("storageclasses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD new file mode 100644 index 000000000..120f0a781 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated_expansion.go", + "storage_client.go", + "storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go new file mode 100644 index 000000000..11b523897 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD new file mode 100644 index 000000000..173a7edc5 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "fake_storage_client.go", + "fake_storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/testing:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go new file mode 100644 index 000000000..c6548330a --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with custom arguments. + +// Package fake has the automatically generated clients. +package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go new file mode 100644 index 000000000..a178091d9 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go @@ -0,0 +1,38 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeStorageV1beta1 struct { + *testing.Fake +} + +func (c *FakeStorageV1beta1) StorageClasses() v1beta1.StorageClassInterface { + return &FakeStorageClasses{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeStorageV1beta1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go new file mode 100644 index 000000000..895abe56f --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go @@ -0,0 +1,112 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" + testing "k8s.io/client-go/testing" +) + +// FakeStorageClasses implements StorageClassInterface +type FakeStorageClasses struct { + Fake *FakeStorageV1beta1 +} + +var storageclassesResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "storageclasses"} + +var storageclassesKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClass"} + +func (c *FakeStorageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StorageClass), err +} + +func (c *FakeStorageClasses) Update(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StorageClass), err +} + +func (c *FakeStorageClasses) Delete(name string, options *v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteAction(storageclassesResource, name), &v1beta1.StorageClass{}) + return err +} + +func (c *FakeStorageClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOptions) + + _, err := c.Fake.Invokes(action, &v1beta1.StorageClassList{}) + return err +} + +func (c *FakeStorageClasses) Get(name string, options v1.GetOptions) (result *v1beta1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(storageclassesResource, name), &v1beta1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StorageClass), err +} + +func (c *FakeStorageClasses) List(opts v1.ListOptions) (result *v1beta1.StorageClassList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &v1beta1.StorageClassList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1beta1.StorageClassList{} + for _, item := range obj.(*v1beta1.StorageClassList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested storageClasses. +func (c *FakeStorageClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(storageclassesResource, opts)) +} + +// Patch applies the patch and returns the patched storageClass. +func (c *FakeStorageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, data, subresources...), &v1beta1.StorageClass{}) + if obj == nil { + return nil, err + } + return obj.(*v1beta1.StorageClass), err +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go new file mode 100644 index 000000000..6f3f0c55e --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type StorageClassExpansion interface{} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go new file mode 100644 index 000000000..7abb99e57 --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storage_client.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + serializer "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" + rest "k8s.io/client-go/rest" +) + +type StorageV1beta1Interface interface { + RESTClient() rest.Interface + StorageClassesGetter +} + +// StorageV1beta1Client is used to interact with features provided by the storage.k8s.io group. +type StorageV1beta1Client struct { + restClient rest.Interface +} + +func (c *StorageV1beta1Client) StorageClasses() StorageClassInterface { + return newStorageClasses(c) +} + +// NewForConfig creates a new StorageV1beta1Client for the given config. +func NewForConfig(c *rest.Config) (*StorageV1beta1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &StorageV1beta1Client{client}, nil +} + +// NewForConfigOrDie creates a new StorageV1beta1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *StorageV1beta1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new StorageV1beta1Client for the given RESTClient. +func New(c rest.Interface) *StorageV1beta1Client { + return &StorageV1beta1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1beta1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *StorageV1beta1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go new file mode 100644 index 000000000..6980fc78b --- /dev/null +++ b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/storageclass.go @@ -0,0 +1,145 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + scheme "k8s.io/client-go/kubernetes/scheme" + v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" + rest "k8s.io/client-go/rest" +) + +// StorageClassesGetter has a method to return a StorageClassInterface. +// A group's client should implement this interface. +type StorageClassesGetter interface { + StorageClasses() StorageClassInterface +} + +// StorageClassInterface has methods to work with StorageClass resources. +type StorageClassInterface interface { + Create(*v1beta1.StorageClass) (*v1beta1.StorageClass, error) + Update(*v1beta1.StorageClass) (*v1beta1.StorageClass, error) + Delete(name string, options *v1.DeleteOptions) error + DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error + Get(name string, options v1.GetOptions) (*v1beta1.StorageClass, error) + List(opts v1.ListOptions) (*v1beta1.StorageClassList, error) + Watch(opts v1.ListOptions) (watch.Interface, error) + Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) + StorageClassExpansion +} + +// storageClasses implements StorageClassInterface +type storageClasses struct { + client rest.Interface +} + +// newStorageClasses returns a StorageClasses +func newStorageClasses(c *StorageV1beta1Client) *storageClasses { + return &storageClasses{ + client: c.RESTClient(), + } +} + +// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any. +func (c *storageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Post(). + Resource("storageclasses"). + Body(storageClass). + Do(). + Into(result) + return +} + +// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any. +func (c *storageClasses) Update(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Put(). + Resource("storageclasses"). + Name(storageClass.Name). + Body(storageClass). + Do(). + Into(result) + return +} + +// Delete takes name of the storageClass and deletes it. Returns an error if one occurs. +func (c *storageClasses) Delete(name string, options *v1.DeleteOptions) error { + return c.client.Delete(). + Resource("storageclasses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *storageClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { + return c.client.Delete(). + Resource("storageclasses"). + VersionedParams(&listOptions, scheme.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. +func (c *storageClasses) Get(name string, options v1.GetOptions) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Get(). + Resource("storageclasses"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of StorageClasses that match those selectors. +func (c *storageClasses) List(opts v1.ListOptions) (result *v1beta1.StorageClassList, err error) { + result = &v1beta1.StorageClassList{} + err = c.client.Get(). + Resource("storageclasses"). + VersionedParams(&opts, scheme.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested storageClasses. +func (c *storageClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { + opts.Watch = true + return c.client.Get(). + Resource("storageclasses"). + VersionedParams(&opts, scheme.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched storageClass. +func (c *storageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Patch(pt). + Resource("storageclasses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD new file mode 100644 index 000000000..b46f8b057 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "externaladmissionhookconfiguration.go", + "initializerconfiguration.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go new file mode 100644 index 000000000..5d9f14708 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +// ExternalAdmissionHookConfigurationListerExpansion allows custom methods to be added to +// ExternalAdmissionHookConfigurationLister. +type ExternalAdmissionHookConfigurationListerExpansion interface{} + +// InitializerConfigurationListerExpansion allows custom methods to be added to +// InitializerConfigurationLister. +type InitializerConfigurationListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go new file mode 100644 index 000000000..c84b35e5d --- /dev/null +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/externaladmissionhookconfiguration.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// ExternalAdmissionHookConfigurationLister helps list ExternalAdmissionHookConfigurations. +type ExternalAdmissionHookConfigurationLister interface { + // List lists all ExternalAdmissionHookConfigurations in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.ExternalAdmissionHookConfiguration, err error) + // Get retrieves the ExternalAdmissionHookConfiguration from the index for a given name. + Get(name string) (*v1alpha1.ExternalAdmissionHookConfiguration, error) + ExternalAdmissionHookConfigurationListerExpansion +} + +// externalAdmissionHookConfigurationLister implements the ExternalAdmissionHookConfigurationLister interface. +type externalAdmissionHookConfigurationLister struct { + indexer cache.Indexer +} + +// NewExternalAdmissionHookConfigurationLister returns a new ExternalAdmissionHookConfigurationLister. +func NewExternalAdmissionHookConfigurationLister(indexer cache.Indexer) ExternalAdmissionHookConfigurationLister { + return &externalAdmissionHookConfigurationLister{indexer: indexer} +} + +// List lists all ExternalAdmissionHookConfigurations in the indexer. +func (s *externalAdmissionHookConfigurationLister) List(selector labels.Selector) (ret []*v1alpha1.ExternalAdmissionHookConfiguration, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.ExternalAdmissionHookConfiguration)) + }) + return ret, err +} + +// Get retrieves the ExternalAdmissionHookConfiguration from the index for a given name. +func (s *externalAdmissionHookConfigurationLister) Get(name string) (*v1alpha1.ExternalAdmissionHookConfiguration, error) { + key := &v1alpha1.ExternalAdmissionHookConfiguration{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("externaladmissionhookconfiguration"), name) + } + return obj.(*v1alpha1.ExternalAdmissionHookConfiguration), nil +} diff --git a/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/initializerconfiguration.go b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/initializerconfiguration.go new file mode 100644 index 000000000..bfe5d4675 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1/initializerconfiguration.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// InitializerConfigurationLister helps list InitializerConfigurations. +type InitializerConfigurationLister interface { + // List lists all InitializerConfigurations in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.InitializerConfiguration, err error) + // Get retrieves the InitializerConfiguration from the index for a given name. + Get(name string) (*v1alpha1.InitializerConfiguration, error) + InitializerConfigurationListerExpansion +} + +// initializerConfigurationLister implements the InitializerConfigurationLister interface. +type initializerConfigurationLister struct { + indexer cache.Indexer +} + +// NewInitializerConfigurationLister returns a new InitializerConfigurationLister. +func NewInitializerConfigurationLister(indexer cache.Indexer) InitializerConfigurationLister { + return &initializerConfigurationLister{indexer: indexer} +} + +// List lists all InitializerConfigurations in the indexer. +func (s *initializerConfigurationLister) List(selector labels.Selector) (ret []*v1alpha1.InitializerConfiguration, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.InitializerConfiguration)) + }) + return ret, err +} + +// Get retrieves the InitializerConfiguration from the index for a given name. +func (s *initializerConfigurationLister) Get(name string) (*v1alpha1.InitializerConfiguration, error) { + key := &v1alpha1.InitializerConfiguration{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("initializerconfiguration"), name) + } + return obj.(*v1alpha1.InitializerConfiguration), nil +} diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD b/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD new file mode 100644 index 000000000..a2f327f85 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "controllerrevision.go", + "deployment.go", + "expansion_generated.go", + "scale.go", + "statefulset.go", + "statefulset_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go new file mode 100644 index 000000000..f94ed93eb --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/controllerrevision.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ControllerRevisionLister helps list ControllerRevisions. +type ControllerRevisionLister interface { + // List lists all ControllerRevisions in the indexer. + List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error) + // ControllerRevisions returns an object that can list and get ControllerRevisions. + ControllerRevisions(namespace string) ControllerRevisionNamespaceLister + ControllerRevisionListerExpansion +} + +// controllerRevisionLister implements the ControllerRevisionLister interface. +type controllerRevisionLister struct { + indexer cache.Indexer +} + +// NewControllerRevisionLister returns a new ControllerRevisionLister. +func NewControllerRevisionLister(indexer cache.Indexer) ControllerRevisionLister { + return &controllerRevisionLister{indexer: indexer} +} + +// List lists all ControllerRevisions in the indexer. +func (s *controllerRevisionLister) List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ControllerRevision)) + }) + return ret, err +} + +// ControllerRevisions returns an object that can list and get ControllerRevisions. +func (s *controllerRevisionLister) ControllerRevisions(namespace string) ControllerRevisionNamespaceLister { + return controllerRevisionNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ControllerRevisionNamespaceLister helps list and get ControllerRevisions. +type ControllerRevisionNamespaceLister interface { + // List lists all ControllerRevisions in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error) + // Get retrieves the ControllerRevision from the indexer for a given namespace and name. + Get(name string) (*v1beta1.ControllerRevision, error) + ControllerRevisionNamespaceListerExpansion +} + +// controllerRevisionNamespaceLister implements the ControllerRevisionNamespaceLister +// interface. +type controllerRevisionNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ControllerRevisions in the indexer for a given namespace. +func (s controllerRevisionNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ControllerRevision, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ControllerRevision)) + }) + return ret, err +} + +// Get retrieves the ControllerRevision from the indexer for a given namespace and name. +func (s controllerRevisionNamespaceLister) Get(name string) (*v1beta1.ControllerRevision, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("controllerrevision"), name) + } + return obj.(*v1beta1.ControllerRevision), nil +} diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go new file mode 100644 index 000000000..210f76170 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/deployment.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// DeploymentLister helps list Deployments. +type DeploymentLister interface { + // List lists all Deployments in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) + // Deployments returns an object that can list and get Deployments. + Deployments(namespace string) DeploymentNamespaceLister + DeploymentListerExpansion +} + +// deploymentLister implements the DeploymentLister interface. +type deploymentLister struct { + indexer cache.Indexer +} + +// NewDeploymentLister returns a new DeploymentLister. +func NewDeploymentLister(indexer cache.Indexer) DeploymentLister { + return &deploymentLister{indexer: indexer} +} + +// List lists all Deployments in the indexer. +func (s *deploymentLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Deployment)) + }) + return ret, err +} + +// Deployments returns an object that can list and get Deployments. +func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceLister { + return deploymentNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// DeploymentNamespaceLister helps list and get Deployments. +type DeploymentNamespaceLister interface { + // List lists all Deployments in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) + // Get retrieves the Deployment from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Deployment, error) + DeploymentNamespaceListerExpansion +} + +// deploymentNamespaceLister implements the DeploymentNamespaceLister +// interface. +type deploymentNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Deployments in the indexer for a given namespace. +func (s deploymentNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Deployment)) + }) + return ret, err +} + +// Get retrieves the Deployment from the indexer for a given namespace and name. +func (s deploymentNamespaceLister) Get(name string) (*v1beta1.Deployment, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("deployment"), name) + } + return obj.(*v1beta1.Deployment), nil +} diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go new file mode 100644 index 000000000..441ceecdd --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/expansion_generated.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +// ControllerRevisionListerExpansion allows custom methods to be added to +// ControllerRevisionLister. +type ControllerRevisionListerExpansion interface{} + +// ControllerRevisionNamespaceListerExpansion allows custom methods to be added to +// ControllerRevisionNamespaceLister. +type ControllerRevisionNamespaceListerExpansion interface{} + +// DeploymentListerExpansion allows custom methods to be added to +// DeploymentLister. +type DeploymentListerExpansion interface{} + +// DeploymentNamespaceListerExpansion allows custom methods to be added to +// DeploymentNamespaceLister. +type DeploymentNamespaceListerExpansion interface{} + +// ScaleListerExpansion allows custom methods to be added to +// ScaleLister. +type ScaleListerExpansion interface{} + +// ScaleNamespaceListerExpansion allows custom methods to be added to +// ScaleNamespaceLister. +type ScaleNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/scale.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/scale.go new file mode 100644 index 000000000..293a3f663 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/scale.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ScaleLister helps list Scales. +type ScaleLister interface { + // List lists all Scales in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Scale, err error) + // Scales returns an object that can list and get Scales. + Scales(namespace string) ScaleNamespaceLister + ScaleListerExpansion +} + +// scaleLister implements the ScaleLister interface. +type scaleLister struct { + indexer cache.Indexer +} + +// NewScaleLister returns a new ScaleLister. +func NewScaleLister(indexer cache.Indexer) ScaleLister { + return &scaleLister{indexer: indexer} +} + +// List lists all Scales in the indexer. +func (s *scaleLister) List(selector labels.Selector) (ret []*v1beta1.Scale, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Scale)) + }) + return ret, err +} + +// Scales returns an object that can list and get Scales. +func (s *scaleLister) Scales(namespace string) ScaleNamespaceLister { + return scaleNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ScaleNamespaceLister helps list and get Scales. +type ScaleNamespaceLister interface { + // List lists all Scales in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Scale, err error) + // Get retrieves the Scale from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Scale, error) + ScaleNamespaceListerExpansion +} + +// scaleNamespaceLister implements the ScaleNamespaceLister +// interface. +type scaleNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Scales in the indexer for a given namespace. +func (s scaleNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Scale, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Scale)) + }) + return ret, err +} + +// Get retrieves the Scale from the indexer for a given namespace and name. +func (s scaleNamespaceLister) Get(name string) (*v1beta1.Scale, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("scale"), name) + } + return obj.(*v1beta1.Scale), nil +} diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go new file mode 100644 index 000000000..e987dbb12 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// StatefulSetLister helps list StatefulSets. +type StatefulSetLister interface { + // List lists all StatefulSets in the indexer. + List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error) + // StatefulSets returns an object that can list and get StatefulSets. + StatefulSets(namespace string) StatefulSetNamespaceLister + StatefulSetListerExpansion +} + +// statefulSetLister implements the StatefulSetLister interface. +type statefulSetLister struct { + indexer cache.Indexer +} + +// NewStatefulSetLister returns a new StatefulSetLister. +func NewStatefulSetLister(indexer cache.Indexer) StatefulSetLister { + return &statefulSetLister{indexer: indexer} +} + +// List lists all StatefulSets in the indexer. +func (s *statefulSetLister) List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.StatefulSet)) + }) + return ret, err +} + +// StatefulSets returns an object that can list and get StatefulSets. +func (s *statefulSetLister) StatefulSets(namespace string) StatefulSetNamespaceLister { + return statefulSetNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// StatefulSetNamespaceLister helps list and get StatefulSets. +type StatefulSetNamespaceLister interface { + // List lists all StatefulSets in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error) + // Get retrieves the StatefulSet from the indexer for a given namespace and name. + Get(name string) (*v1beta1.StatefulSet, error) + StatefulSetNamespaceListerExpansion +} + +// statefulSetNamespaceLister implements the StatefulSetNamespaceLister +// interface. +type statefulSetNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all StatefulSets in the indexer for a given namespace. +func (s statefulSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.StatefulSet, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.StatefulSet)) + }) + return ret, err +} + +// Get retrieves the StatefulSet from the indexer for a given namespace and name. +func (s statefulSetNamespaceLister) Get(name string) (*v1beta1.StatefulSet, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("statefulset"), name) + } + return obj.(*v1beta1.StatefulSet), nil +} diff --git a/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go new file mode 100644 index 000000000..b71c13cf8 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/apps/v1beta1/statefulset_expansion.go @@ -0,0 +1,77 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" + apps "k8s.io/client-go/pkg/apis/apps/v1beta1" +) + +// StatefulSetListerExpansion allows custom methods to be added to +// StatefulSetLister. +type StatefulSetListerExpansion interface { + GetPodStatefulSets(pod *v1.Pod) ([]*apps.StatefulSet, error) +} + +// StatefulSetNamespaceListerExpansion allows custom methods to be added to +// StatefulSetNamespaceLister. +type StatefulSetNamespaceListerExpansion interface{} + +// GetPodStatefulSets returns a list of StatefulSets that potentially match a pod. +// Only the one specified in the Pod's ControllerRef will actually manage it. +// Returns an error only if no matching StatefulSets are found. +func (s *statefulSetLister) GetPodStatefulSets(pod *v1.Pod) ([]*apps.StatefulSet, error) { + var selector labels.Selector + var ps *apps.StatefulSet + + if len(pod.Labels) == 0 { + return nil, fmt.Errorf("no StatefulSets found for pod %v because it has no labels", pod.Name) + } + + list, err := s.StatefulSets(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var psList []*apps.StatefulSet + for i := range list { + ps = list[i] + if ps.Namespace != pod.Namespace { + continue + } + selector, err = metav1.LabelSelectorAsSelector(ps.Spec.Selector) + if err != nil { + return nil, fmt.Errorf("invalid selector: %v", err) + } + + // If a StatefulSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + psList = append(psList, ps) + } + + if len(psList) == 0 { + return nil, fmt.Errorf("could not find StatefulSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + + return psList, nil +} diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD b/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD new file mode 100644 index 000000000..c98c3a1f3 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/autoscaling/v1/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "horizontalpodautoscaler.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go new file mode 100644 index 000000000..f7b00603f --- /dev/null +++ b/vendor/k8s.io/client-go/listers/autoscaling/v1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +// HorizontalPodAutoscalerListerExpansion allows custom methods to be added to +// HorizontalPodAutoscalerLister. +type HorizontalPodAutoscalerListerExpansion interface{} + +// HorizontalPodAutoscalerNamespaceListerExpansion allows custom methods to be added to +// HorizontalPodAutoscalerNamespaceLister. +type HorizontalPodAutoscalerNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go new file mode 100644 index 000000000..ff340fe29 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/autoscaling/v1/horizontalpodautoscaler.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" + "k8s.io/client-go/tools/cache" +) + +// HorizontalPodAutoscalerLister helps list HorizontalPodAutoscalers. +type HorizontalPodAutoscalerLister interface { + // List lists all HorizontalPodAutoscalers in the indexer. + List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error) + // HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers. + HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister + HorizontalPodAutoscalerListerExpansion +} + +// horizontalPodAutoscalerLister implements the HorizontalPodAutoscalerLister interface. +type horizontalPodAutoscalerLister struct { + indexer cache.Indexer +} + +// NewHorizontalPodAutoscalerLister returns a new HorizontalPodAutoscalerLister. +func NewHorizontalPodAutoscalerLister(indexer cache.Indexer) HorizontalPodAutoscalerLister { + return &horizontalPodAutoscalerLister{indexer: indexer} +} + +// List lists all HorizontalPodAutoscalers in the indexer. +func (s *horizontalPodAutoscalerLister) List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.HorizontalPodAutoscaler)) + }) + return ret, err +} + +// HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers. +func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister { + return horizontalPodAutoscalerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// HorizontalPodAutoscalerNamespaceLister helps list and get HorizontalPodAutoscalers. +type HorizontalPodAutoscalerNamespaceLister interface { + // List lists all HorizontalPodAutoscalers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error) + // Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name. + Get(name string) (*v1.HorizontalPodAutoscaler, error) + HorizontalPodAutoscalerNamespaceListerExpansion +} + +// horizontalPodAutoscalerNamespaceLister implements the HorizontalPodAutoscalerNamespaceLister +// interface. +type horizontalPodAutoscalerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all HorizontalPodAutoscalers in the indexer for a given namespace. +func (s horizontalPodAutoscalerNamespaceLister) List(selector labels.Selector) (ret []*v1.HorizontalPodAutoscaler, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.HorizontalPodAutoscaler)) + }) + return ret, err +} + +// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name. +func (s horizontalPodAutoscalerNamespaceLister) Get(name string) (*v1.HorizontalPodAutoscaler, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("horizontalpodautoscaler"), name) + } + return obj.(*v1.HorizontalPodAutoscaler), nil +} diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/BUILD b/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/BUILD new file mode 100644 index 000000000..6812c9e63 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "horizontalpodautoscaler.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/expansion_generated.go new file mode 100644 index 000000000..fd02e2b27 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v2alpha1 + +// HorizontalPodAutoscalerListerExpansion allows custom methods to be added to +// HorizontalPodAutoscalerLister. +type HorizontalPodAutoscalerListerExpansion interface{} + +// HorizontalPodAutoscalerNamespaceListerExpansion allows custom methods to be added to +// HorizontalPodAutoscalerNamespaceLister. +type HorizontalPodAutoscalerNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/horizontalpodautoscaler.go new file mode 100644 index 000000000..77c5203ec --- /dev/null +++ b/vendor/k8s.io/client-go/listers/autoscaling/v2alpha1/horizontalpodautoscaler.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v2alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v2alpha1 "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" + "k8s.io/client-go/tools/cache" +) + +// HorizontalPodAutoscalerLister helps list HorizontalPodAutoscalers. +type HorizontalPodAutoscalerLister interface { + // List lists all HorizontalPodAutoscalers in the indexer. + List(selector labels.Selector) (ret []*v2alpha1.HorizontalPodAutoscaler, err error) + // HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers. + HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister + HorizontalPodAutoscalerListerExpansion +} + +// horizontalPodAutoscalerLister implements the HorizontalPodAutoscalerLister interface. +type horizontalPodAutoscalerLister struct { + indexer cache.Indexer +} + +// NewHorizontalPodAutoscalerLister returns a new HorizontalPodAutoscalerLister. +func NewHorizontalPodAutoscalerLister(indexer cache.Indexer) HorizontalPodAutoscalerLister { + return &horizontalPodAutoscalerLister{indexer: indexer} +} + +// List lists all HorizontalPodAutoscalers in the indexer. +func (s *horizontalPodAutoscalerLister) List(selector labels.Selector) (ret []*v2alpha1.HorizontalPodAutoscaler, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v2alpha1.HorizontalPodAutoscaler)) + }) + return ret, err +} + +// HorizontalPodAutoscalers returns an object that can list and get HorizontalPodAutoscalers. +func (s *horizontalPodAutoscalerLister) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerNamespaceLister { + return horizontalPodAutoscalerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// HorizontalPodAutoscalerNamespaceLister helps list and get HorizontalPodAutoscalers. +type HorizontalPodAutoscalerNamespaceLister interface { + // List lists all HorizontalPodAutoscalers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v2alpha1.HorizontalPodAutoscaler, err error) + // Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name. + Get(name string) (*v2alpha1.HorizontalPodAutoscaler, error) + HorizontalPodAutoscalerNamespaceListerExpansion +} + +// horizontalPodAutoscalerNamespaceLister implements the HorizontalPodAutoscalerNamespaceLister +// interface. +type horizontalPodAutoscalerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all HorizontalPodAutoscalers in the indexer for a given namespace. +func (s horizontalPodAutoscalerNamespaceLister) List(selector labels.Selector) (ret []*v2alpha1.HorizontalPodAutoscaler, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v2alpha1.HorizontalPodAutoscaler)) + }) + return ret, err +} + +// Get retrieves the HorizontalPodAutoscaler from the indexer for a given namespace and name. +func (s horizontalPodAutoscalerNamespaceLister) Get(name string) (*v2alpha1.HorizontalPodAutoscaler, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v2alpha1.Resource("horizontalpodautoscaler"), name) + } + return obj.(*v2alpha1.HorizontalPodAutoscaler), nil +} diff --git a/vendor/k8s.io/client-go/listers/batch/v1/BUILD b/vendor/k8s.io/client-go/listers/batch/v1/BUILD new file mode 100644 index 000000000..d2146fcc9 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v1/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "job.go", + "job_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go new file mode 100644 index 000000000..38b7e2720 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v1/expansion_generated.go @@ -0,0 +1,19 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 diff --git a/vendor/k8s.io/client-go/listers/batch/v1/job.go b/vendor/k8s.io/client-go/listers/batch/v1/job.go new file mode 100644 index 000000000..442c3a9ed --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v1/job.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/apis/batch/v1" + "k8s.io/client-go/tools/cache" +) + +// JobLister helps list Jobs. +type JobLister interface { + // List lists all Jobs in the indexer. + List(selector labels.Selector) (ret []*v1.Job, err error) + // Jobs returns an object that can list and get Jobs. + Jobs(namespace string) JobNamespaceLister + JobListerExpansion +} + +// jobLister implements the JobLister interface. +type jobLister struct { + indexer cache.Indexer +} + +// NewJobLister returns a new JobLister. +func NewJobLister(indexer cache.Indexer) JobLister { + return &jobLister{indexer: indexer} +} + +// List lists all Jobs in the indexer. +func (s *jobLister) List(selector labels.Selector) (ret []*v1.Job, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Job)) + }) + return ret, err +} + +// Jobs returns an object that can list and get Jobs. +func (s *jobLister) Jobs(namespace string) JobNamespaceLister { + return jobNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// JobNamespaceLister helps list and get Jobs. +type JobNamespaceLister interface { + // List lists all Jobs in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Job, err error) + // Get retrieves the Job from the indexer for a given namespace and name. + Get(name string) (*v1.Job, error) + JobNamespaceListerExpansion +} + +// jobNamespaceLister implements the JobNamespaceLister +// interface. +type jobNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Jobs in the indexer for a given namespace. +func (s jobNamespaceLister) List(selector labels.Selector) (ret []*v1.Job, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Job)) + }) + return ret, err +} + +// Get retrieves the Job from the indexer for a given namespace and name. +func (s jobNamespaceLister) Get(name string) (*v1.Job, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("job"), name) + } + return obj.(*v1.Job), nil +} diff --git a/vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go b/vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go new file mode 100644 index 000000000..8c285e8da --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v1/job_expansion.go @@ -0,0 +1,68 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" + batch "k8s.io/client-go/pkg/apis/batch/v1" +) + +// JobListerExpansion allows custom methods to be added to +// JobLister. +type JobListerExpansion interface { + // GetPodJobs returns a list of Jobs that potentially + // match a Pod. Only the one specified in the Pod's ControllerRef + // will actually manage it. + // Returns an error only if no matching Jobs are found. + GetPodJobs(pod *v1.Pod) (jobs []batch.Job, err error) +} + +// GetPodJobs returns a list of Jobs that potentially +// match a Pod. Only the one specified in the Pod's ControllerRef +// will actually manage it. +// Returns an error only if no matching Jobs are found. +func (l *jobLister) GetPodJobs(pod *v1.Pod) (jobs []batch.Job, err error) { + if len(pod.Labels) == 0 { + err = fmt.Errorf("no jobs found for pod %v because it has no labels", pod.Name) + return + } + + var list []*batch.Job + list, err = l.Jobs(pod.Namespace).List(labels.Everything()) + if err != nil { + return + } + for _, job := range list { + selector, _ := metav1.LabelSelectorAsSelector(job.Spec.Selector) + if !selector.Matches(labels.Set(pod.Labels)) { + continue + } + jobs = append(jobs, *job) + } + if len(jobs) == 0 { + err = fmt.Errorf("could not find jobs for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// JobNamespaceListerExpansion allows custom methods to be added to +// JobNamespaceLister. +type JobNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD b/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD new file mode 100644 index 000000000..84ff16d88 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v2alpha1/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "cronjob.go", + "expansion_generated.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go b/vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go new file mode 100644 index 000000000..d45b6139e --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v2alpha1/cronjob.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v2alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" + "k8s.io/client-go/tools/cache" +) + +// CronJobLister helps list CronJobs. +type CronJobLister interface { + // List lists all CronJobs in the indexer. + List(selector labels.Selector) (ret []*v2alpha1.CronJob, err error) + // CronJobs returns an object that can list and get CronJobs. + CronJobs(namespace string) CronJobNamespaceLister + CronJobListerExpansion +} + +// cronJobLister implements the CronJobLister interface. +type cronJobLister struct { + indexer cache.Indexer +} + +// NewCronJobLister returns a new CronJobLister. +func NewCronJobLister(indexer cache.Indexer) CronJobLister { + return &cronJobLister{indexer: indexer} +} + +// List lists all CronJobs in the indexer. +func (s *cronJobLister) List(selector labels.Selector) (ret []*v2alpha1.CronJob, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v2alpha1.CronJob)) + }) + return ret, err +} + +// CronJobs returns an object that can list and get CronJobs. +func (s *cronJobLister) CronJobs(namespace string) CronJobNamespaceLister { + return cronJobNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// CronJobNamespaceLister helps list and get CronJobs. +type CronJobNamespaceLister interface { + // List lists all CronJobs in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v2alpha1.CronJob, err error) + // Get retrieves the CronJob from the indexer for a given namespace and name. + Get(name string) (*v2alpha1.CronJob, error) + CronJobNamespaceListerExpansion +} + +// cronJobNamespaceLister implements the CronJobNamespaceLister +// interface. +type cronJobNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all CronJobs in the indexer for a given namespace. +func (s cronJobNamespaceLister) List(selector labels.Selector) (ret []*v2alpha1.CronJob, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v2alpha1.CronJob)) + }) + return ret, err +} + +// Get retrieves the CronJob from the indexer for a given namespace and name. +func (s cronJobNamespaceLister) Get(name string) (*v2alpha1.CronJob, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v2alpha1.Resource("cronjob"), name) + } + return obj.(*v2alpha1.CronJob), nil +} diff --git a/vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go new file mode 100644 index 000000000..38ac70cdf --- /dev/null +++ b/vendor/k8s.io/client-go/listers/batch/v2alpha1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v2alpha1 + +// CronJobListerExpansion allows custom methods to be added to +// CronJobLister. +type CronJobListerExpansion interface{} + +// CronJobNamespaceListerExpansion allows custom methods to be added to +// CronJobNamespaceLister. +type CronJobNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD b/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD new file mode 100644 index 000000000..0bafbfbc7 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/certificates/v1beta1/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "certificatesigningrequest.go", + "expansion_generated.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go b/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go new file mode 100644 index 000000000..d4d39939d --- /dev/null +++ b/vendor/k8s.io/client-go/listers/certificates/v1beta1/certificatesigningrequest.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/certificates/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// CertificateSigningRequestLister helps list CertificateSigningRequests. +type CertificateSigningRequestLister interface { + // List lists all CertificateSigningRequests in the indexer. + List(selector labels.Selector) (ret []*v1beta1.CertificateSigningRequest, err error) + // Get retrieves the CertificateSigningRequest from the index for a given name. + Get(name string) (*v1beta1.CertificateSigningRequest, error) + CertificateSigningRequestListerExpansion +} + +// certificateSigningRequestLister implements the CertificateSigningRequestLister interface. +type certificateSigningRequestLister struct { + indexer cache.Indexer +} + +// NewCertificateSigningRequestLister returns a new CertificateSigningRequestLister. +func NewCertificateSigningRequestLister(indexer cache.Indexer) CertificateSigningRequestLister { + return &certificateSigningRequestLister{indexer: indexer} +} + +// List lists all CertificateSigningRequests in the indexer. +func (s *certificateSigningRequestLister) List(selector labels.Selector) (ret []*v1beta1.CertificateSigningRequest, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.CertificateSigningRequest)) + }) + return ret, err +} + +// Get retrieves the CertificateSigningRequest from the index for a given name. +func (s *certificateSigningRequestLister) Get(name string) (*v1beta1.CertificateSigningRequest, error) { + key := &v1beta1.CertificateSigningRequest{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("certificatesigningrequest"), name) + } + return obj.(*v1beta1.CertificateSigningRequest), nil +} diff --git a/vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go new file mode 100644 index 000000000..c240be44f --- /dev/null +++ b/vendor/k8s.io/client-go/listers/certificates/v1beta1/expansion_generated.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +// CertificateSigningRequestListerExpansion allows custom methods to be added to +// CertificateSigningRequestLister. +type CertificateSigningRequestListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/core/v1/BUILD b/vendor/k8s.io/client-go/listers/core/v1/BUILD new file mode 100644 index 000000000..73de3065a --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/BUILD @@ -0,0 +1,42 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "componentstatus.go", + "configmap.go", + "endpoints.go", + "event.go", + "expansion_generated.go", + "limitrange.go", + "namespace.go", + "node.go", + "node_expansion.go", + "persistentvolume.go", + "persistentvolumeclaim.go", + "pod.go", + "podtemplate.go", + "replicationcontroller.go", + "replicationcontroller_expansion.go", + "resourcequota.go", + "secret.go", + "service.go", + "service_expansion.go", + "serviceaccount.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go b/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go new file mode 100644 index 000000000..1069130c0 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/componentstatus.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// ComponentStatusLister helps list ComponentStatuses. +type ComponentStatusLister interface { + // List lists all ComponentStatuses in the indexer. + List(selector labels.Selector) (ret []*v1.ComponentStatus, err error) + // Get retrieves the ComponentStatus from the index for a given name. + Get(name string) (*v1.ComponentStatus, error) + ComponentStatusListerExpansion +} + +// componentStatusLister implements the ComponentStatusLister interface. +type componentStatusLister struct { + indexer cache.Indexer +} + +// NewComponentStatusLister returns a new ComponentStatusLister. +func NewComponentStatusLister(indexer cache.Indexer) ComponentStatusLister { + return &componentStatusLister{indexer: indexer} +} + +// List lists all ComponentStatuses in the indexer. +func (s *componentStatusLister) List(selector labels.Selector) (ret []*v1.ComponentStatus, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ComponentStatus)) + }) + return ret, err +} + +// Get retrieves the ComponentStatus from the index for a given name. +func (s *componentStatusLister) Get(name string) (*v1.ComponentStatus, error) { + key := &v1.ComponentStatus{ObjectMeta: meta_v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("componentstatus"), name) + } + return obj.(*v1.ComponentStatus), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/configmap.go b/vendor/k8s.io/client-go/listers/core/v1/configmap.go new file mode 100644 index 000000000..ff36729ea --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/configmap.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// ConfigMapLister helps list ConfigMaps. +type ConfigMapLister interface { + // List lists all ConfigMaps in the indexer. + List(selector labels.Selector) (ret []*v1.ConfigMap, err error) + // ConfigMaps returns an object that can list and get ConfigMaps. + ConfigMaps(namespace string) ConfigMapNamespaceLister + ConfigMapListerExpansion +} + +// configMapLister implements the ConfigMapLister interface. +type configMapLister struct { + indexer cache.Indexer +} + +// NewConfigMapLister returns a new ConfigMapLister. +func NewConfigMapLister(indexer cache.Indexer) ConfigMapLister { + return &configMapLister{indexer: indexer} +} + +// List lists all ConfigMaps in the indexer. +func (s *configMapLister) List(selector labels.Selector) (ret []*v1.ConfigMap, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ConfigMap)) + }) + return ret, err +} + +// ConfigMaps returns an object that can list and get ConfigMaps. +func (s *configMapLister) ConfigMaps(namespace string) ConfigMapNamespaceLister { + return configMapNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ConfigMapNamespaceLister helps list and get ConfigMaps. +type ConfigMapNamespaceLister interface { + // List lists all ConfigMaps in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.ConfigMap, err error) + // Get retrieves the ConfigMap from the indexer for a given namespace and name. + Get(name string) (*v1.ConfigMap, error) + ConfigMapNamespaceListerExpansion +} + +// configMapNamespaceLister implements the ConfigMapNamespaceLister +// interface. +type configMapNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ConfigMaps in the indexer for a given namespace. +func (s configMapNamespaceLister) List(selector labels.Selector) (ret []*v1.ConfigMap, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ConfigMap)) + }) + return ret, err +} + +// Get retrieves the ConfigMap from the indexer for a given namespace and name. +func (s configMapNamespaceLister) Get(name string) (*v1.ConfigMap, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("configmap"), name) + } + return obj.(*v1.ConfigMap), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/endpoints.go b/vendor/k8s.io/client-go/listers/core/v1/endpoints.go new file mode 100644 index 000000000..483de04b2 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/endpoints.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// EndpointsLister helps list Endpoints. +type EndpointsLister interface { + // List lists all Endpoints in the indexer. + List(selector labels.Selector) (ret []*v1.Endpoints, err error) + // Endpoints returns an object that can list and get Endpoints. + Endpoints(namespace string) EndpointsNamespaceLister + EndpointsListerExpansion +} + +// endpointsLister implements the EndpointsLister interface. +type endpointsLister struct { + indexer cache.Indexer +} + +// NewEndpointsLister returns a new EndpointsLister. +func NewEndpointsLister(indexer cache.Indexer) EndpointsLister { + return &endpointsLister{indexer: indexer} +} + +// List lists all Endpoints in the indexer. +func (s *endpointsLister) List(selector labels.Selector) (ret []*v1.Endpoints, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Endpoints)) + }) + return ret, err +} + +// Endpoints returns an object that can list and get Endpoints. +func (s *endpointsLister) Endpoints(namespace string) EndpointsNamespaceLister { + return endpointsNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// EndpointsNamespaceLister helps list and get Endpoints. +type EndpointsNamespaceLister interface { + // List lists all Endpoints in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Endpoints, err error) + // Get retrieves the Endpoints from the indexer for a given namespace and name. + Get(name string) (*v1.Endpoints, error) + EndpointsNamespaceListerExpansion +} + +// endpointsNamespaceLister implements the EndpointsNamespaceLister +// interface. +type endpointsNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Endpoints in the indexer for a given namespace. +func (s endpointsNamespaceLister) List(selector labels.Selector) (ret []*v1.Endpoints, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Endpoints)) + }) + return ret, err +} + +// Get retrieves the Endpoints from the indexer for a given namespace and name. +func (s endpointsNamespaceLister) Get(name string) (*v1.Endpoints, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("endpoints"), name) + } + return obj.(*v1.Endpoints), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/event.go b/vendor/k8s.io/client-go/listers/core/v1/event.go new file mode 100644 index 000000000..952fb93a0 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/event.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// EventLister helps list Events. +type EventLister interface { + // List lists all Events in the indexer. + List(selector labels.Selector) (ret []*v1.Event, err error) + // Events returns an object that can list and get Events. + Events(namespace string) EventNamespaceLister + EventListerExpansion +} + +// eventLister implements the EventLister interface. +type eventLister struct { + indexer cache.Indexer +} + +// NewEventLister returns a new EventLister. +func NewEventLister(indexer cache.Indexer) EventLister { + return &eventLister{indexer: indexer} +} + +// List lists all Events in the indexer. +func (s *eventLister) List(selector labels.Selector) (ret []*v1.Event, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Event)) + }) + return ret, err +} + +// Events returns an object that can list and get Events. +func (s *eventLister) Events(namespace string) EventNamespaceLister { + return eventNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// EventNamespaceLister helps list and get Events. +type EventNamespaceLister interface { + // List lists all Events in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Event, err error) + // Get retrieves the Event from the indexer for a given namespace and name. + Get(name string) (*v1.Event, error) + EventNamespaceListerExpansion +} + +// eventNamespaceLister implements the EventNamespaceLister +// interface. +type eventNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Events in the indexer for a given namespace. +func (s eventNamespaceLister) List(selector labels.Selector) (ret []*v1.Event, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Event)) + }) + return ret, err +} + +// Get retrieves the Event from the indexer for a given namespace and name. +func (s eventNamespaceLister) Get(name string) (*v1.Event, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("event"), name) + } + return obj.(*v1.Event), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go new file mode 100644 index 000000000..a96db8dc9 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/expansion_generated.go @@ -0,0 +1,111 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +// ComponentStatusListerExpansion allows custom methods to be added to +// ComponentStatusLister. +type ComponentStatusListerExpansion interface{} + +// ConfigMapListerExpansion allows custom methods to be added to +// ConfigMapLister. +type ConfigMapListerExpansion interface{} + +// ConfigMapNamespaceListerExpansion allows custom methods to be added to +// ConfigMapNamespaceLister. +type ConfigMapNamespaceListerExpansion interface{} + +// EndpointsListerExpansion allows custom methods to be added to +// EndpointsLister. +type EndpointsListerExpansion interface{} + +// EndpointsNamespaceListerExpansion allows custom methods to be added to +// EndpointsNamespaceLister. +type EndpointsNamespaceListerExpansion interface{} + +// EventListerExpansion allows custom methods to be added to +// EventLister. +type EventListerExpansion interface{} + +// EventNamespaceListerExpansion allows custom methods to be added to +// EventNamespaceLister. +type EventNamespaceListerExpansion interface{} + +// LimitRangeListerExpansion allows custom methods to be added to +// LimitRangeLister. +type LimitRangeListerExpansion interface{} + +// LimitRangeNamespaceListerExpansion allows custom methods to be added to +// LimitRangeNamespaceLister. +type LimitRangeNamespaceListerExpansion interface{} + +// NamespaceListerExpansion allows custom methods to be added to +// NamespaceLister. +type NamespaceListerExpansion interface{} + +// PersistentVolumeListerExpansion allows custom methods to be added to +// PersistentVolumeLister. +type PersistentVolumeListerExpansion interface{} + +// PersistentVolumeClaimListerExpansion allows custom methods to be added to +// PersistentVolumeClaimLister. +type PersistentVolumeClaimListerExpansion interface{} + +// PersistentVolumeClaimNamespaceListerExpansion allows custom methods to be added to +// PersistentVolumeClaimNamespaceLister. +type PersistentVolumeClaimNamespaceListerExpansion interface{} + +// PodListerExpansion allows custom methods to be added to +// PodLister. +type PodListerExpansion interface{} + +// PodNamespaceListerExpansion allows custom methods to be added to +// PodNamespaceLister. +type PodNamespaceListerExpansion interface{} + +// PodTemplateListerExpansion allows custom methods to be added to +// PodTemplateLister. +type PodTemplateListerExpansion interface{} + +// PodTemplateNamespaceListerExpansion allows custom methods to be added to +// PodTemplateNamespaceLister. +type PodTemplateNamespaceListerExpansion interface{} + +// ResourceQuotaListerExpansion allows custom methods to be added to +// ResourceQuotaLister. +type ResourceQuotaListerExpansion interface{} + +// ResourceQuotaNamespaceListerExpansion allows custom methods to be added to +// ResourceQuotaNamespaceLister. +type ResourceQuotaNamespaceListerExpansion interface{} + +// SecretListerExpansion allows custom methods to be added to +// SecretLister. +type SecretListerExpansion interface{} + +// SecretNamespaceListerExpansion allows custom methods to be added to +// SecretNamespaceLister. +type SecretNamespaceListerExpansion interface{} + +// ServiceAccountListerExpansion allows custom methods to be added to +// ServiceAccountLister. +type ServiceAccountListerExpansion interface{} + +// ServiceAccountNamespaceListerExpansion allows custom methods to be added to +// ServiceAccountNamespaceLister. +type ServiceAccountNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/core/v1/limitrange.go b/vendor/k8s.io/client-go/listers/core/v1/limitrange.go new file mode 100644 index 000000000..05d2c756e --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/limitrange.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// LimitRangeLister helps list LimitRanges. +type LimitRangeLister interface { + // List lists all LimitRanges in the indexer. + List(selector labels.Selector) (ret []*v1.LimitRange, err error) + // LimitRanges returns an object that can list and get LimitRanges. + LimitRanges(namespace string) LimitRangeNamespaceLister + LimitRangeListerExpansion +} + +// limitRangeLister implements the LimitRangeLister interface. +type limitRangeLister struct { + indexer cache.Indexer +} + +// NewLimitRangeLister returns a new LimitRangeLister. +func NewLimitRangeLister(indexer cache.Indexer) LimitRangeLister { + return &limitRangeLister{indexer: indexer} +} + +// List lists all LimitRanges in the indexer. +func (s *limitRangeLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.LimitRange)) + }) + return ret, err +} + +// LimitRanges returns an object that can list and get LimitRanges. +func (s *limitRangeLister) LimitRanges(namespace string) LimitRangeNamespaceLister { + return limitRangeNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// LimitRangeNamespaceLister helps list and get LimitRanges. +type LimitRangeNamespaceLister interface { + // List lists all LimitRanges in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.LimitRange, err error) + // Get retrieves the LimitRange from the indexer for a given namespace and name. + Get(name string) (*v1.LimitRange, error) + LimitRangeNamespaceListerExpansion +} + +// limitRangeNamespaceLister implements the LimitRangeNamespaceLister +// interface. +type limitRangeNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all LimitRanges in the indexer for a given namespace. +func (s limitRangeNamespaceLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.LimitRange)) + }) + return ret, err +} + +// Get retrieves the LimitRange from the indexer for a given namespace and name. +func (s limitRangeNamespaceLister) Get(name string) (*v1.LimitRange, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("limitrange"), name) + } + return obj.(*v1.LimitRange), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/namespace.go b/vendor/k8s.io/client-go/listers/core/v1/namespace.go new file mode 100644 index 000000000..c5328cf16 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/namespace.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// NamespaceLister helps list Namespaces. +type NamespaceLister interface { + // List lists all Namespaces in the indexer. + List(selector labels.Selector) (ret []*v1.Namespace, err error) + // Get retrieves the Namespace from the index for a given name. + Get(name string) (*v1.Namespace, error) + NamespaceListerExpansion +} + +// namespaceLister implements the NamespaceLister interface. +type namespaceLister struct { + indexer cache.Indexer +} + +// NewNamespaceLister returns a new NamespaceLister. +func NewNamespaceLister(indexer cache.Indexer) NamespaceLister { + return &namespaceLister{indexer: indexer} +} + +// List lists all Namespaces in the indexer. +func (s *namespaceLister) List(selector labels.Selector) (ret []*v1.Namespace, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Namespace)) + }) + return ret, err +} + +// Get retrieves the Namespace from the index for a given name. +func (s *namespaceLister) Get(name string) (*v1.Namespace, error) { + key := &v1.Namespace{ObjectMeta: meta_v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("namespace"), name) + } + return obj.(*v1.Namespace), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/node.go b/vendor/k8s.io/client-go/listers/core/v1/node.go new file mode 100644 index 000000000..7bbc4e58e --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/node.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// NodeLister helps list Nodes. +type NodeLister interface { + // List lists all Nodes in the indexer. + List(selector labels.Selector) (ret []*v1.Node, err error) + // Get retrieves the Node from the index for a given name. + Get(name string) (*v1.Node, error) + NodeListerExpansion +} + +// nodeLister implements the NodeLister interface. +type nodeLister struct { + indexer cache.Indexer +} + +// NewNodeLister returns a new NodeLister. +func NewNodeLister(indexer cache.Indexer) NodeLister { + return &nodeLister{indexer: indexer} +} + +// List lists all Nodes in the indexer. +func (s *nodeLister) List(selector labels.Selector) (ret []*v1.Node, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Node)) + }) + return ret, err +} + +// Get retrieves the Node from the index for a given name. +func (s *nodeLister) Get(name string) (*v1.Node, error) { + key := &v1.Node{ObjectMeta: meta_v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("node"), name) + } + return obj.(*v1.Node), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/node_expansion.go b/vendor/k8s.io/client-go/listers/core/v1/node_expansion.go new file mode 100644 index 000000000..8d446b0dc --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/node_expansion.go @@ -0,0 +1,48 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" +) + +// NodeConditionPredicate is a function that indicates whether the given node's conditions meet +// some set of criteria defined by the function. +type NodeConditionPredicate func(node *v1.Node) bool + +// NodeListerExpansion allows custom methods to be added to +// NodeLister. +type NodeListerExpansion interface { + ListWithPredicate(predicate NodeConditionPredicate) ([]*v1.Node, error) +} + +func (l *nodeLister) ListWithPredicate(predicate NodeConditionPredicate) ([]*v1.Node, error) { + nodes, err := l.List(labels.Everything()) + if err != nil { + return nil, err + } + + var filtered []*v1.Node + for i := range nodes { + if predicate(nodes[i]) { + filtered = append(filtered, nodes[i]) + } + } + + return filtered, nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go new file mode 100644 index 000000000..e60b1bc26 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/persistentvolume.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// PersistentVolumeLister helps list PersistentVolumes. +type PersistentVolumeLister interface { + // List lists all PersistentVolumes in the indexer. + List(selector labels.Selector) (ret []*v1.PersistentVolume, err error) + // Get retrieves the PersistentVolume from the index for a given name. + Get(name string) (*v1.PersistentVolume, error) + PersistentVolumeListerExpansion +} + +// persistentVolumeLister implements the PersistentVolumeLister interface. +type persistentVolumeLister struct { + indexer cache.Indexer +} + +// NewPersistentVolumeLister returns a new PersistentVolumeLister. +func NewPersistentVolumeLister(indexer cache.Indexer) PersistentVolumeLister { + return &persistentVolumeLister{indexer: indexer} +} + +// List lists all PersistentVolumes in the indexer. +func (s *persistentVolumeLister) List(selector labels.Selector) (ret []*v1.PersistentVolume, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.PersistentVolume)) + }) + return ret, err +} + +// Get retrieves the PersistentVolume from the index for a given name. +func (s *persistentVolumeLister) Get(name string) (*v1.PersistentVolume, error) { + key := &v1.PersistentVolume{ObjectMeta: meta_v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("persistentvolume"), name) + } + return obj.(*v1.PersistentVolume), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go new file mode 100644 index 000000000..b4a774297 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/persistentvolumeclaim.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// PersistentVolumeClaimLister helps list PersistentVolumeClaims. +type PersistentVolumeClaimLister interface { + // List lists all PersistentVolumeClaims in the indexer. + List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) + // PersistentVolumeClaims returns an object that can list and get PersistentVolumeClaims. + PersistentVolumeClaims(namespace string) PersistentVolumeClaimNamespaceLister + PersistentVolumeClaimListerExpansion +} + +// persistentVolumeClaimLister implements the PersistentVolumeClaimLister interface. +type persistentVolumeClaimLister struct { + indexer cache.Indexer +} + +// NewPersistentVolumeClaimLister returns a new PersistentVolumeClaimLister. +func NewPersistentVolumeClaimLister(indexer cache.Indexer) PersistentVolumeClaimLister { + return &persistentVolumeClaimLister{indexer: indexer} +} + +// List lists all PersistentVolumeClaims in the indexer. +func (s *persistentVolumeClaimLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.PersistentVolumeClaim)) + }) + return ret, err +} + +// PersistentVolumeClaims returns an object that can list and get PersistentVolumeClaims. +func (s *persistentVolumeClaimLister) PersistentVolumeClaims(namespace string) PersistentVolumeClaimNamespaceLister { + return persistentVolumeClaimNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// PersistentVolumeClaimNamespaceLister helps list and get PersistentVolumeClaims. +type PersistentVolumeClaimNamespaceLister interface { + // List lists all PersistentVolumeClaims in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) + // Get retrieves the PersistentVolumeClaim from the indexer for a given namespace and name. + Get(name string) (*v1.PersistentVolumeClaim, error) + PersistentVolumeClaimNamespaceListerExpansion +} + +// persistentVolumeClaimNamespaceLister implements the PersistentVolumeClaimNamespaceLister +// interface. +type persistentVolumeClaimNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all PersistentVolumeClaims in the indexer for a given namespace. +func (s persistentVolumeClaimNamespaceLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.PersistentVolumeClaim)) + }) + return ret, err +} + +// Get retrieves the PersistentVolumeClaim from the indexer for a given namespace and name. +func (s persistentVolumeClaimNamespaceLister) Get(name string) (*v1.PersistentVolumeClaim, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("persistentvolumeclaim"), name) + } + return obj.(*v1.PersistentVolumeClaim), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/pod.go b/vendor/k8s.io/client-go/listers/core/v1/pod.go new file mode 100644 index 000000000..83fe35358 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/pod.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// PodLister helps list Pods. +type PodLister interface { + // List lists all Pods in the indexer. + List(selector labels.Selector) (ret []*v1.Pod, err error) + // Pods returns an object that can list and get Pods. + Pods(namespace string) PodNamespaceLister + PodListerExpansion +} + +// podLister implements the PodLister interface. +type podLister struct { + indexer cache.Indexer +} + +// NewPodLister returns a new PodLister. +func NewPodLister(indexer cache.Indexer) PodLister { + return &podLister{indexer: indexer} +} + +// List lists all Pods in the indexer. +func (s *podLister) List(selector labels.Selector) (ret []*v1.Pod, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Pod)) + }) + return ret, err +} + +// Pods returns an object that can list and get Pods. +func (s *podLister) Pods(namespace string) PodNamespaceLister { + return podNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// PodNamespaceLister helps list and get Pods. +type PodNamespaceLister interface { + // List lists all Pods in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Pod, err error) + // Get retrieves the Pod from the indexer for a given namespace and name. + Get(name string) (*v1.Pod, error) + PodNamespaceListerExpansion +} + +// podNamespaceLister implements the PodNamespaceLister +// interface. +type podNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Pods in the indexer for a given namespace. +func (s podNamespaceLister) List(selector labels.Selector) (ret []*v1.Pod, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Pod)) + }) + return ret, err +} + +// Get retrieves the Pod from the indexer for a given namespace and name. +func (s podNamespaceLister) Get(name string) (*v1.Pod, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("pod"), name) + } + return obj.(*v1.Pod), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go b/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go new file mode 100644 index 000000000..c5a595f35 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/podtemplate.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// PodTemplateLister helps list PodTemplates. +type PodTemplateLister interface { + // List lists all PodTemplates in the indexer. + List(selector labels.Selector) (ret []*v1.PodTemplate, err error) + // PodTemplates returns an object that can list and get PodTemplates. + PodTemplates(namespace string) PodTemplateNamespaceLister + PodTemplateListerExpansion +} + +// podTemplateLister implements the PodTemplateLister interface. +type podTemplateLister struct { + indexer cache.Indexer +} + +// NewPodTemplateLister returns a new PodTemplateLister. +func NewPodTemplateLister(indexer cache.Indexer) PodTemplateLister { + return &podTemplateLister{indexer: indexer} +} + +// List lists all PodTemplates in the indexer. +func (s *podTemplateLister) List(selector labels.Selector) (ret []*v1.PodTemplate, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.PodTemplate)) + }) + return ret, err +} + +// PodTemplates returns an object that can list and get PodTemplates. +func (s *podTemplateLister) PodTemplates(namespace string) PodTemplateNamespaceLister { + return podTemplateNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// PodTemplateNamespaceLister helps list and get PodTemplates. +type PodTemplateNamespaceLister interface { + // List lists all PodTemplates in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.PodTemplate, err error) + // Get retrieves the PodTemplate from the indexer for a given namespace and name. + Get(name string) (*v1.PodTemplate, error) + PodTemplateNamespaceListerExpansion +} + +// podTemplateNamespaceLister implements the PodTemplateNamespaceLister +// interface. +type podTemplateNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all PodTemplates in the indexer for a given namespace. +func (s podTemplateNamespaceLister) List(selector labels.Selector) (ret []*v1.PodTemplate, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.PodTemplate)) + }) + return ret, err +} + +// Get retrieves the PodTemplate from the indexer for a given namespace and name. +func (s podTemplateNamespaceLister) Get(name string) (*v1.PodTemplate, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("podtemplate"), name) + } + return obj.(*v1.PodTemplate), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go new file mode 100644 index 000000000..b25b1dc9b --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// ReplicationControllerLister helps list ReplicationControllers. +type ReplicationControllerLister interface { + // List lists all ReplicationControllers in the indexer. + List(selector labels.Selector) (ret []*v1.ReplicationController, err error) + // ReplicationControllers returns an object that can list and get ReplicationControllers. + ReplicationControllers(namespace string) ReplicationControllerNamespaceLister + ReplicationControllerListerExpansion +} + +// replicationControllerLister implements the ReplicationControllerLister interface. +type replicationControllerLister struct { + indexer cache.Indexer +} + +// NewReplicationControllerLister returns a new ReplicationControllerLister. +func NewReplicationControllerLister(indexer cache.Indexer) ReplicationControllerLister { + return &replicationControllerLister{indexer: indexer} +} + +// List lists all ReplicationControllers in the indexer. +func (s *replicationControllerLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ReplicationController)) + }) + return ret, err +} + +// ReplicationControllers returns an object that can list and get ReplicationControllers. +func (s *replicationControllerLister) ReplicationControllers(namespace string) ReplicationControllerNamespaceLister { + return replicationControllerNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ReplicationControllerNamespaceLister helps list and get ReplicationControllers. +type ReplicationControllerNamespaceLister interface { + // List lists all ReplicationControllers in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.ReplicationController, err error) + // Get retrieves the ReplicationController from the indexer for a given namespace and name. + Get(name string) (*v1.ReplicationController, error) + ReplicationControllerNamespaceListerExpansion +} + +// replicationControllerNamespaceLister implements the ReplicationControllerNamespaceLister +// interface. +type replicationControllerNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ReplicationControllers in the indexer for a given namespace. +func (s replicationControllerNamespaceLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ReplicationController)) + }) + return ret, err +} + +// Get retrieves the ReplicationController from the indexer for a given namespace and name. +func (s replicationControllerNamespaceLister) Get(name string) (*v1.ReplicationController, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("replicationcontroller"), name) + } + return obj.(*v1.ReplicationController), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go new file mode 100644 index 000000000..33f653b8a --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/replicationcontroller_expansion.go @@ -0,0 +1,66 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" +) + +// ReplicationControllerListerExpansion allows custom methods to be added to +// ReplicationControllerLister. +type ReplicationControllerListerExpansion interface { + GetPodControllers(pod *v1.Pod) ([]*v1.ReplicationController, error) +} + +// ReplicationControllerNamespaceListerExpansion allows custom methods to be added to +// ReplicationControllerNamespaceLister. +type ReplicationControllerNamespaceListerExpansion interface{} + +// GetPodControllers returns a list of ReplicationControllers that potentially match a pod. +// Only the one specified in the Pod's ControllerRef will actually manage it. +// Returns an error only if no matching ReplicationControllers are found. +func (s *replicationControllerLister) GetPodControllers(pod *v1.Pod) ([]*v1.ReplicationController, error) { + if len(pod.Labels) == 0 { + return nil, fmt.Errorf("no controllers found for pod %v because it has no labels", pod.Name) + } + + items, err := s.ReplicationControllers(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var controllers []*v1.ReplicationController + for i := range items { + rc := items[i] + selector := labels.Set(rc.Spec.Selector).AsSelectorPreValidated() + + // If an rc with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + controllers = append(controllers, rc) + } + + if len(controllers) == 0 { + return nil, fmt.Errorf("could not find controller for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + + return controllers, nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go b/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go new file mode 100644 index 000000000..f09a5b8cb --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/resourcequota.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// ResourceQuotaLister helps list ResourceQuotas. +type ResourceQuotaLister interface { + // List lists all ResourceQuotas in the indexer. + List(selector labels.Selector) (ret []*v1.ResourceQuota, err error) + // ResourceQuotas returns an object that can list and get ResourceQuotas. + ResourceQuotas(namespace string) ResourceQuotaNamespaceLister + ResourceQuotaListerExpansion +} + +// resourceQuotaLister implements the ResourceQuotaLister interface. +type resourceQuotaLister struct { + indexer cache.Indexer +} + +// NewResourceQuotaLister returns a new ResourceQuotaLister. +func NewResourceQuotaLister(indexer cache.Indexer) ResourceQuotaLister { + return &resourceQuotaLister{indexer: indexer} +} + +// List lists all ResourceQuotas in the indexer. +func (s *resourceQuotaLister) List(selector labels.Selector) (ret []*v1.ResourceQuota, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ResourceQuota)) + }) + return ret, err +} + +// ResourceQuotas returns an object that can list and get ResourceQuotas. +func (s *resourceQuotaLister) ResourceQuotas(namespace string) ResourceQuotaNamespaceLister { + return resourceQuotaNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ResourceQuotaNamespaceLister helps list and get ResourceQuotas. +type ResourceQuotaNamespaceLister interface { + // List lists all ResourceQuotas in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.ResourceQuota, err error) + // Get retrieves the ResourceQuota from the indexer for a given namespace and name. + Get(name string) (*v1.ResourceQuota, error) + ResourceQuotaNamespaceListerExpansion +} + +// resourceQuotaNamespaceLister implements the ResourceQuotaNamespaceLister +// interface. +type resourceQuotaNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ResourceQuotas in the indexer for a given namespace. +func (s resourceQuotaNamespaceLister) List(selector labels.Selector) (ret []*v1.ResourceQuota, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ResourceQuota)) + }) + return ret, err +} + +// Get retrieves the ResourceQuota from the indexer for a given namespace and name. +func (s resourceQuotaNamespaceLister) Get(name string) (*v1.ResourceQuota, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("resourcequota"), name) + } + return obj.(*v1.ResourceQuota), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/secret.go b/vendor/k8s.io/client-go/listers/core/v1/secret.go new file mode 100644 index 000000000..598f700cc --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/secret.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// SecretLister helps list Secrets. +type SecretLister interface { + // List lists all Secrets in the indexer. + List(selector labels.Selector) (ret []*v1.Secret, err error) + // Secrets returns an object that can list and get Secrets. + Secrets(namespace string) SecretNamespaceLister + SecretListerExpansion +} + +// secretLister implements the SecretLister interface. +type secretLister struct { + indexer cache.Indexer +} + +// NewSecretLister returns a new SecretLister. +func NewSecretLister(indexer cache.Indexer) SecretLister { + return &secretLister{indexer: indexer} +} + +// List lists all Secrets in the indexer. +func (s *secretLister) List(selector labels.Selector) (ret []*v1.Secret, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Secret)) + }) + return ret, err +} + +// Secrets returns an object that can list and get Secrets. +func (s *secretLister) Secrets(namespace string) SecretNamespaceLister { + return secretNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// SecretNamespaceLister helps list and get Secrets. +type SecretNamespaceLister interface { + // List lists all Secrets in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Secret, err error) + // Get retrieves the Secret from the indexer for a given namespace and name. + Get(name string) (*v1.Secret, error) + SecretNamespaceListerExpansion +} + +// secretNamespaceLister implements the SecretNamespaceLister +// interface. +type secretNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Secrets in the indexer for a given namespace. +func (s secretNamespaceLister) List(selector labels.Selector) (ret []*v1.Secret, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Secret)) + }) + return ret, err +} + +// Get retrieves the Secret from the indexer for a given namespace and name. +func (s secretNamespaceLister) Get(name string) (*v1.Secret, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("secret"), name) + } + return obj.(*v1.Secret), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/service.go b/vendor/k8s.io/client-go/listers/core/v1/service.go new file mode 100644 index 000000000..e4048faa8 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/service.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// ServiceLister helps list Services. +type ServiceLister interface { + // List lists all Services in the indexer. + List(selector labels.Selector) (ret []*v1.Service, err error) + // Services returns an object that can list and get Services. + Services(namespace string) ServiceNamespaceLister + ServiceListerExpansion +} + +// serviceLister implements the ServiceLister interface. +type serviceLister struct { + indexer cache.Indexer +} + +// NewServiceLister returns a new ServiceLister. +func NewServiceLister(indexer cache.Indexer) ServiceLister { + return &serviceLister{indexer: indexer} +} + +// List lists all Services in the indexer. +func (s *serviceLister) List(selector labels.Selector) (ret []*v1.Service, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Service)) + }) + return ret, err +} + +// Services returns an object that can list and get Services. +func (s *serviceLister) Services(namespace string) ServiceNamespaceLister { + return serviceNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ServiceNamespaceLister helps list and get Services. +type ServiceNamespaceLister interface { + // List lists all Services in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.Service, err error) + // Get retrieves the Service from the indexer for a given namespace and name. + Get(name string) (*v1.Service, error) + ServiceNamespaceListerExpansion +} + +// serviceNamespaceLister implements the ServiceNamespaceLister +// interface. +type serviceNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Services in the indexer for a given namespace. +func (s serviceNamespaceLister) List(selector labels.Selector) (ret []*v1.Service, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Service)) + }) + return ret, err +} + +// Get retrieves the Service from the indexer for a given namespace and name. +func (s serviceNamespaceLister) Get(name string) (*v1.Service, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("service"), name) + } + return obj.(*v1.Service), nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/service_expansion.go b/vendor/k8s.io/client-go/listers/core/v1/service_expansion.go new file mode 100644 index 000000000..86b7e0c08 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/service_expansion.go @@ -0,0 +1,56 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" +) + +// ServiceListerExpansion allows custom methods to be added to +// ServiceLister. +type ServiceListerExpansion interface { + GetPodServices(pod *v1.Pod) ([]*v1.Service, error) +} + +// ServiceNamespaceListerExpansion allows custom methods to be added to +// ServiceNamespaceLister. +type ServiceNamespaceListerExpansion interface{} + +// TODO: Move this back to scheduler as a helper function that takes a Store, +// rather than a method of ServiceLister. +func (s *serviceLister) GetPodServices(pod *v1.Pod) ([]*v1.Service, error) { + allServices, err := s.Services(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var services []*v1.Service + for i := range allServices { + service := allServices[i] + if service.Spec.Selector == nil { + // services with nil selectors match nothing, not everything. + continue + } + selector := labels.Set(service.Spec.Selector).AsSelectorPreValidated() + if selector.Matches(labels.Set(pod.Labels)) { + services = append(services, service) + } + } + + return services, nil +} diff --git a/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go new file mode 100644 index 000000000..0250051b0 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/core/v1/serviceaccount.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/tools/cache" +) + +// ServiceAccountLister helps list ServiceAccounts. +type ServiceAccountLister interface { + // List lists all ServiceAccounts in the indexer. + List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) + // ServiceAccounts returns an object that can list and get ServiceAccounts. + ServiceAccounts(namespace string) ServiceAccountNamespaceLister + ServiceAccountListerExpansion +} + +// serviceAccountLister implements the ServiceAccountLister interface. +type serviceAccountLister struct { + indexer cache.Indexer +} + +// NewServiceAccountLister returns a new ServiceAccountLister. +func NewServiceAccountLister(indexer cache.Indexer) ServiceAccountLister { + return &serviceAccountLister{indexer: indexer} +} + +// List lists all ServiceAccounts in the indexer. +func (s *serviceAccountLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ServiceAccount)) + }) + return ret, err +} + +// ServiceAccounts returns an object that can list and get ServiceAccounts. +func (s *serviceAccountLister) ServiceAccounts(namespace string) ServiceAccountNamespaceLister { + return serviceAccountNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ServiceAccountNamespaceLister helps list and get ServiceAccounts. +type ServiceAccountNamespaceLister interface { + // List lists all ServiceAccounts in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) + // Get retrieves the ServiceAccount from the indexer for a given namespace and name. + Get(name string) (*v1.ServiceAccount, error) + ServiceAccountNamespaceListerExpansion +} + +// serviceAccountNamespaceLister implements the ServiceAccountNamespaceLister +// interface. +type serviceAccountNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ServiceAccounts in the indexer for a given namespace. +func (s serviceAccountNamespaceLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ServiceAccount)) + }) + return ret, err +} + +// Get retrieves the ServiceAccount from the indexer for a given namespace and name. +func (s serviceAccountNamespaceLister) Get(name string) (*v1.ServiceAccount, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("serviceaccount"), name) + } + return obj.(*v1.ServiceAccount), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD b/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD new file mode 100644 index 000000000..b68b5bc6b --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/BUILD @@ -0,0 +1,35 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "daemonset.go", + "daemonset_expansion.go", + "deployment.go", + "deployment_expansion.go", + "expansion_generated.go", + "ingress.go", + "podsecuritypolicy.go", + "replicaset.go", + "replicaset_expansion.go", + "scale.go", + "thirdpartyresource.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go new file mode 100644 index 000000000..aa763d459 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// DaemonSetLister helps list DaemonSets. +type DaemonSetLister interface { + // List lists all DaemonSets in the indexer. + List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error) + // DaemonSets returns an object that can list and get DaemonSets. + DaemonSets(namespace string) DaemonSetNamespaceLister + DaemonSetListerExpansion +} + +// daemonSetLister implements the DaemonSetLister interface. +type daemonSetLister struct { + indexer cache.Indexer +} + +// NewDaemonSetLister returns a new DaemonSetLister. +func NewDaemonSetLister(indexer cache.Indexer) DaemonSetLister { + return &daemonSetLister{indexer: indexer} +} + +// List lists all DaemonSets in the indexer. +func (s *daemonSetLister) List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.DaemonSet)) + }) + return ret, err +} + +// DaemonSets returns an object that can list and get DaemonSets. +func (s *daemonSetLister) DaemonSets(namespace string) DaemonSetNamespaceLister { + return daemonSetNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// DaemonSetNamespaceLister helps list and get DaemonSets. +type DaemonSetNamespaceLister interface { + // List lists all DaemonSets in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error) + // Get retrieves the DaemonSet from the indexer for a given namespace and name. + Get(name string) (*v1beta1.DaemonSet, error) + DaemonSetNamespaceListerExpansion +} + +// daemonSetNamespaceLister implements the DaemonSetNamespaceLister +// interface. +type daemonSetNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all DaemonSets in the indexer for a given namespace. +func (s daemonSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.DaemonSet, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.DaemonSet)) + }) + return ret, err +} + +// Get retrieves the DaemonSet from the indexer for a given namespace and name. +func (s daemonSetNamespaceLister) Get(name string) (*v1beta1.DaemonSet, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("daemonset"), name) + } + return obj.(*v1beta1.DaemonSet), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go new file mode 100644 index 000000000..d2788907b --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/daemonset_expansion.go @@ -0,0 +1,114 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" + apps "k8s.io/client-go/pkg/apis/apps/v1beta1" + "k8s.io/client-go/pkg/apis/extensions/v1beta1" +) + +// DaemonSetListerExpansion allows custom methods to be added to +// DaemonSetLister. +type DaemonSetListerExpansion interface { + GetPodDaemonSets(pod *v1.Pod) ([]*v1beta1.DaemonSet, error) + GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*v1beta1.DaemonSet, error) +} + +// DaemonSetNamespaceListerExpansion allows custom methods to be added to +// DaemonSetNamespaceLister. +type DaemonSetNamespaceListerExpansion interface{} + +// GetPodDaemonSets returns a list of DaemonSets that potentially match a pod. +// Only the one specified in the Pod's ControllerRef will actually manage it. +// Returns an error only if no matching DaemonSets are found. +func (s *daemonSetLister) GetPodDaemonSets(pod *v1.Pod) ([]*v1beta1.DaemonSet, error) { + var selector labels.Selector + var daemonSet *v1beta1.DaemonSet + + if len(pod.Labels) == 0 { + return nil, fmt.Errorf("no daemon sets found for pod %v because it has no labels", pod.Name) + } + + list, err := s.DaemonSets(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var daemonSets []*v1beta1.DaemonSet + for i := range list { + daemonSet = list[i] + if daemonSet.Namespace != pod.Namespace { + continue + } + selector, err = metav1.LabelSelectorAsSelector(daemonSet.Spec.Selector) + if err != nil { + // this should not happen if the DaemonSet passed validation + return nil, err + } + + // If a daemonSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + daemonSets = append(daemonSets, daemonSet) + } + + if len(daemonSets) == 0 { + return nil, fmt.Errorf("could not find daemon set for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + + return daemonSets, nil +} + +// GetHistoryDaemonSets returns a list of DaemonSets that potentially +// match a ControllerRevision. Only the one specified in the ControllerRevision's ControllerRef +// will actually manage it. +// Returns an error only if no matching DaemonSets are found. +func (s *daemonSetLister) GetHistoryDaemonSets(history *apps.ControllerRevision) ([]*v1beta1.DaemonSet, error) { + if len(history.Labels) == 0 { + return nil, fmt.Errorf("no DaemonSet found for ControllerRevision %s because it has no labels", history.Name) + } + + list, err := s.DaemonSets(history.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var daemonSets []*v1beta1.DaemonSet + for _, ds := range list { + selector, err := metav1.LabelSelectorAsSelector(ds.Spec.Selector) + if err != nil { + return nil, fmt.Errorf("invalid label selector: %v", err) + } + // If a DaemonSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(history.Labels)) { + continue + } + daemonSets = append(daemonSets, ds) + } + + if len(daemonSets) == 0 { + return nil, fmt.Errorf("could not find DaemonSets for ControllerRevision %s in namespace %s with labels: %v", history.Name, history.Namespace, history.Labels) + } + + return daemonSets, nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go new file mode 100644 index 000000000..4c9a31f86 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// DeploymentLister helps list Deployments. +type DeploymentLister interface { + // List lists all Deployments in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) + // Deployments returns an object that can list and get Deployments. + Deployments(namespace string) DeploymentNamespaceLister + DeploymentListerExpansion +} + +// deploymentLister implements the DeploymentLister interface. +type deploymentLister struct { + indexer cache.Indexer +} + +// NewDeploymentLister returns a new DeploymentLister. +func NewDeploymentLister(indexer cache.Indexer) DeploymentLister { + return &deploymentLister{indexer: indexer} +} + +// List lists all Deployments in the indexer. +func (s *deploymentLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Deployment)) + }) + return ret, err +} + +// Deployments returns an object that can list and get Deployments. +func (s *deploymentLister) Deployments(namespace string) DeploymentNamespaceLister { + return deploymentNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// DeploymentNamespaceLister helps list and get Deployments. +type DeploymentNamespaceLister interface { + // List lists all Deployments in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) + // Get retrieves the Deployment from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Deployment, error) + DeploymentNamespaceListerExpansion +} + +// deploymentNamespaceLister implements the DeploymentNamespaceLister +// interface. +type deploymentNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Deployments in the indexer for a given namespace. +func (s deploymentNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Deployment, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Deployment)) + }) + return ret, err +} + +// Get retrieves the Deployment from the indexer for a given namespace and name. +func (s deploymentNamespaceLister) Get(name string) (*v1beta1.Deployment, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("deployment"), name) + } + return obj.(*v1beta1.Deployment), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment_expansion.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment_expansion.go new file mode 100644 index 000000000..039c714bb --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/deployment_expansion.go @@ -0,0 +1,70 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + extensions "k8s.io/client-go/pkg/apis/extensions/v1beta1" +) + +// DeploymentListerExpansion allows custom methods to be added to +// DeploymentLister. +type DeploymentListerExpansion interface { + GetDeploymentsForReplicaSet(rs *extensions.ReplicaSet) ([]*extensions.Deployment, error) +} + +// DeploymentNamespaceListerExpansion allows custom methods to be added to +// DeploymentNamespaceLister. +type DeploymentNamespaceListerExpansion interface{} + +// GetDeploymentsForReplicaSet returns a list of Deployments that potentially +// match a ReplicaSet. Only the one specified in the ReplicaSet's ControllerRef +// will actually manage it. +// Returns an error only if no matching Deployments are found. +func (s *deploymentLister) GetDeploymentsForReplicaSet(rs *extensions.ReplicaSet) ([]*extensions.Deployment, error) { + if len(rs.Labels) == 0 { + return nil, fmt.Errorf("no deployments found for ReplicaSet %v because it has no labels", rs.Name) + } + + // TODO: MODIFY THIS METHOD so that it checks for the podTemplateSpecHash label + dList, err := s.Deployments(rs.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var deployments []*extensions.Deployment + for _, d := range dList { + selector, err := metav1.LabelSelectorAsSelector(d.Spec.Selector) + if err != nil { + return nil, fmt.Errorf("invalid label selector: %v", err) + } + // If a deployment with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(rs.Labels)) { + continue + } + deployments = append(deployments, d) + } + + if len(deployments) == 0 { + return nil, fmt.Errorf("could not find deployments set for ReplicaSet %s in namespace %s with labels: %v", rs.Name, rs.Namespace, rs.Labels) + } + + return deployments, nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go new file mode 100644 index 000000000..b3c29269b --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/expansion_generated.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +// IngressListerExpansion allows custom methods to be added to +// IngressLister. +type IngressListerExpansion interface{} + +// IngressNamespaceListerExpansion allows custom methods to be added to +// IngressNamespaceLister. +type IngressNamespaceListerExpansion interface{} + +// PodSecurityPolicyListerExpansion allows custom methods to be added to +// PodSecurityPolicyLister. +type PodSecurityPolicyListerExpansion interface{} + +// ScaleListerExpansion allows custom methods to be added to +// ScaleLister. +type ScaleListerExpansion interface{} + +// ScaleNamespaceListerExpansion allows custom methods to be added to +// ScaleNamespaceLister. +type ScaleNamespaceListerExpansion interface{} + +// ThirdPartyResourceListerExpansion allows custom methods to be added to +// ThirdPartyResourceLister. +type ThirdPartyResourceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go new file mode 100644 index 000000000..9232635e9 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/ingress.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// IngressLister helps list Ingresses. +type IngressLister interface { + // List lists all Ingresses in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) + // Ingresses returns an object that can list and get Ingresses. + Ingresses(namespace string) IngressNamespaceLister + IngressListerExpansion +} + +// ingressLister implements the IngressLister interface. +type ingressLister struct { + indexer cache.Indexer +} + +// NewIngressLister returns a new IngressLister. +func NewIngressLister(indexer cache.Indexer) IngressLister { + return &ingressLister{indexer: indexer} +} + +// List lists all Ingresses in the indexer. +func (s *ingressLister) List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Ingress)) + }) + return ret, err +} + +// Ingresses returns an object that can list and get Ingresses. +func (s *ingressLister) Ingresses(namespace string) IngressNamespaceLister { + return ingressNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// IngressNamespaceLister helps list and get Ingresses. +type IngressNamespaceLister interface { + // List lists all Ingresses in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) + // Get retrieves the Ingress from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Ingress, error) + IngressNamespaceListerExpansion +} + +// ingressNamespaceLister implements the IngressNamespaceLister +// interface. +type ingressNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Ingresses in the indexer for a given namespace. +func (s ingressNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Ingress, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Ingress)) + }) + return ret, err +} + +// Get retrieves the Ingress from the indexer for a given namespace and name. +func (s ingressNamespaceLister) Get(name string) (*v1beta1.Ingress, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("ingress"), name) + } + return obj.(*v1beta1.Ingress), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go new file mode 100644 index 000000000..ed1364264 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/podsecuritypolicy.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// PodSecurityPolicyLister helps list PodSecurityPolicies. +type PodSecurityPolicyLister interface { + // List lists all PodSecurityPolicies in the indexer. + List(selector labels.Selector) (ret []*v1beta1.PodSecurityPolicy, err error) + // Get retrieves the PodSecurityPolicy from the index for a given name. + Get(name string) (*v1beta1.PodSecurityPolicy, error) + PodSecurityPolicyListerExpansion +} + +// podSecurityPolicyLister implements the PodSecurityPolicyLister interface. +type podSecurityPolicyLister struct { + indexer cache.Indexer +} + +// NewPodSecurityPolicyLister returns a new PodSecurityPolicyLister. +func NewPodSecurityPolicyLister(indexer cache.Indexer) PodSecurityPolicyLister { + return &podSecurityPolicyLister{indexer: indexer} +} + +// List lists all PodSecurityPolicies in the indexer. +func (s *podSecurityPolicyLister) List(selector labels.Selector) (ret []*v1beta1.PodSecurityPolicy, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.PodSecurityPolicy)) + }) + return ret, err +} + +// Get retrieves the PodSecurityPolicy from the index for a given name. +func (s *podSecurityPolicyLister) Get(name string) (*v1beta1.PodSecurityPolicy, error) { + key := &v1beta1.PodSecurityPolicy{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("podsecuritypolicy"), name) + } + return obj.(*v1beta1.PodSecurityPolicy), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go new file mode 100644 index 000000000..f07c5e659 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ReplicaSetLister helps list ReplicaSets. +type ReplicaSetLister interface { + // List lists all ReplicaSets in the indexer. + List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error) + // ReplicaSets returns an object that can list and get ReplicaSets. + ReplicaSets(namespace string) ReplicaSetNamespaceLister + ReplicaSetListerExpansion +} + +// replicaSetLister implements the ReplicaSetLister interface. +type replicaSetLister struct { + indexer cache.Indexer +} + +// NewReplicaSetLister returns a new ReplicaSetLister. +func NewReplicaSetLister(indexer cache.Indexer) ReplicaSetLister { + return &replicaSetLister{indexer: indexer} +} + +// List lists all ReplicaSets in the indexer. +func (s *replicaSetLister) List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ReplicaSet)) + }) + return ret, err +} + +// ReplicaSets returns an object that can list and get ReplicaSets. +func (s *replicaSetLister) ReplicaSets(namespace string) ReplicaSetNamespaceLister { + return replicaSetNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ReplicaSetNamespaceLister helps list and get ReplicaSets. +type ReplicaSetNamespaceLister interface { + // List lists all ReplicaSets in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error) + // Get retrieves the ReplicaSet from the indexer for a given namespace and name. + Get(name string) (*v1beta1.ReplicaSet, error) + ReplicaSetNamespaceListerExpansion +} + +// replicaSetNamespaceLister implements the ReplicaSetNamespaceLister +// interface. +type replicaSetNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all ReplicaSets in the indexer for a given namespace. +func (s replicaSetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ReplicaSet, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ReplicaSet)) + }) + return ret, err +} + +// Get retrieves the ReplicaSet from the indexer for a given namespace and name. +func (s replicaSetNamespaceLister) Get(name string) (*v1beta1.ReplicaSet, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("replicaset"), name) + } + return obj.(*v1beta1.ReplicaSet), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go new file mode 100644 index 000000000..c2e570414 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/replicaset_expansion.go @@ -0,0 +1,73 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" + extensions "k8s.io/client-go/pkg/apis/extensions/v1beta1" +) + +// ReplicaSetListerExpansion allows custom methods to be added to +// ReplicaSetLister. +type ReplicaSetListerExpansion interface { + GetPodReplicaSets(pod *v1.Pod) ([]*extensions.ReplicaSet, error) +} + +// ReplicaSetNamespaceListerExpansion allows custom methods to be added to +// ReplicaSetNamespaceLister. +type ReplicaSetNamespaceListerExpansion interface{} + +// GetPodReplicaSets returns a list of ReplicaSets that potentially match a pod. +// Only the one specified in the Pod's ControllerRef will actually manage it. +// Returns an error only if no matching ReplicaSets are found. +func (s *replicaSetLister) GetPodReplicaSets(pod *v1.Pod) ([]*extensions.ReplicaSet, error) { + if len(pod.Labels) == 0 { + return nil, fmt.Errorf("no ReplicaSets found for pod %v because it has no labels", pod.Name) + } + + list, err := s.ReplicaSets(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var rss []*extensions.ReplicaSet + for _, rs := range list { + if rs.Namespace != pod.Namespace { + continue + } + selector, err := metav1.LabelSelectorAsSelector(rs.Spec.Selector) + if err != nil { + return nil, fmt.Errorf("invalid selector: %v", err) + } + + // If a ReplicaSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + rss = append(rss, rs) + } + + if len(rss) == 0 { + return nil, fmt.Errorf("could not find ReplicaSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + + return rss, nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/scale.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/scale.go new file mode 100644 index 000000000..bfcb23829 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/scale.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ScaleLister helps list Scales. +type ScaleLister interface { + // List lists all Scales in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Scale, err error) + // Scales returns an object that can list and get Scales. + Scales(namespace string) ScaleNamespaceLister + ScaleListerExpansion +} + +// scaleLister implements the ScaleLister interface. +type scaleLister struct { + indexer cache.Indexer +} + +// NewScaleLister returns a new ScaleLister. +func NewScaleLister(indexer cache.Indexer) ScaleLister { + return &scaleLister{indexer: indexer} +} + +// List lists all Scales in the indexer. +func (s *scaleLister) List(selector labels.Selector) (ret []*v1beta1.Scale, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Scale)) + }) + return ret, err +} + +// Scales returns an object that can list and get Scales. +func (s *scaleLister) Scales(namespace string) ScaleNamespaceLister { + return scaleNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// ScaleNamespaceLister helps list and get Scales. +type ScaleNamespaceLister interface { + // List lists all Scales in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Scale, err error) + // Get retrieves the Scale from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Scale, error) + ScaleNamespaceListerExpansion +} + +// scaleNamespaceLister implements the ScaleNamespaceLister +// interface. +type scaleNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Scales in the indexer for a given namespace. +func (s scaleNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Scale, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Scale)) + }) + return ret, err +} + +// Get retrieves the Scale from the indexer for a given namespace and name. +func (s scaleNamespaceLister) Get(name string) (*v1beta1.Scale, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("scale"), name) + } + return obj.(*v1beta1.Scale), nil +} diff --git a/vendor/k8s.io/client-go/listers/extensions/v1beta1/thirdpartyresource.go b/vendor/k8s.io/client-go/listers/extensions/v1beta1/thirdpartyresource.go new file mode 100644 index 000000000..e1b91fc07 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/extensions/v1beta1/thirdpartyresource.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ThirdPartyResourceLister helps list ThirdPartyResources. +type ThirdPartyResourceLister interface { + // List lists all ThirdPartyResources in the indexer. + List(selector labels.Selector) (ret []*v1beta1.ThirdPartyResource, err error) + // Get retrieves the ThirdPartyResource from the index for a given name. + Get(name string) (*v1beta1.ThirdPartyResource, error) + ThirdPartyResourceListerExpansion +} + +// thirdPartyResourceLister implements the ThirdPartyResourceLister interface. +type thirdPartyResourceLister struct { + indexer cache.Indexer +} + +// NewThirdPartyResourceLister returns a new ThirdPartyResourceLister. +func NewThirdPartyResourceLister(indexer cache.Indexer) ThirdPartyResourceLister { + return &thirdPartyResourceLister{indexer: indexer} +} + +// List lists all ThirdPartyResources in the indexer. +func (s *thirdPartyResourceLister) List(selector labels.Selector) (ret []*v1beta1.ThirdPartyResource, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ThirdPartyResource)) + }) + return ret, err +} + +// Get retrieves the ThirdPartyResource from the index for a given name. +func (s *thirdPartyResourceLister) Get(name string) (*v1beta1.ThirdPartyResource, error) { + key := &v1beta1.ThirdPartyResource{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("thirdpartyresource"), name) + } + return obj.(*v1beta1.ThirdPartyResource), nil +} diff --git a/vendor/k8s.io/client-go/listers/networking/v1/BUILD b/vendor/k8s.io/client-go/listers/networking/v1/BUILD new file mode 100644 index 000000000..0e72411f2 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/networking/v1/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "networkpolicy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go new file mode 100644 index 000000000..91fe5e772 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/networking/v1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +// NetworkPolicyListerExpansion allows custom methods to be added to +// NetworkPolicyLister. +type NetworkPolicyListerExpansion interface{} + +// NetworkPolicyNamespaceListerExpansion allows custom methods to be added to +// NetworkPolicyNamespaceLister. +type NetworkPolicyNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go b/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go new file mode 100644 index 000000000..315b34f2f --- /dev/null +++ b/vendor/k8s.io/client-go/listers/networking/v1/networkpolicy.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/apis/networking/v1" + "k8s.io/client-go/tools/cache" +) + +// NetworkPolicyLister helps list NetworkPolicies. +type NetworkPolicyLister interface { + // List lists all NetworkPolicies in the indexer. + List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error) + // NetworkPolicies returns an object that can list and get NetworkPolicies. + NetworkPolicies(namespace string) NetworkPolicyNamespaceLister + NetworkPolicyListerExpansion +} + +// networkPolicyLister implements the NetworkPolicyLister interface. +type networkPolicyLister struct { + indexer cache.Indexer +} + +// NewNetworkPolicyLister returns a new NetworkPolicyLister. +func NewNetworkPolicyLister(indexer cache.Indexer) NetworkPolicyLister { + return &networkPolicyLister{indexer: indexer} +} + +// List lists all NetworkPolicies in the indexer. +func (s *networkPolicyLister) List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.NetworkPolicy)) + }) + return ret, err +} + +// NetworkPolicies returns an object that can list and get NetworkPolicies. +func (s *networkPolicyLister) NetworkPolicies(namespace string) NetworkPolicyNamespaceLister { + return networkPolicyNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// NetworkPolicyNamespaceLister helps list and get NetworkPolicies. +type NetworkPolicyNamespaceLister interface { + // List lists all NetworkPolicies in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error) + // Get retrieves the NetworkPolicy from the indexer for a given namespace and name. + Get(name string) (*v1.NetworkPolicy, error) + NetworkPolicyNamespaceListerExpansion +} + +// networkPolicyNamespaceLister implements the NetworkPolicyNamespaceLister +// interface. +type networkPolicyNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all NetworkPolicies in the indexer for a given namespace. +func (s networkPolicyNamespaceLister) List(selector labels.Selector) (ret []*v1.NetworkPolicy, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.NetworkPolicy)) + }) + return ret, err +} + +// Get retrieves the NetworkPolicy from the indexer for a given namespace and name. +func (s networkPolicyNamespaceLister) Get(name string) (*v1.NetworkPolicy, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("networkpolicy"), name) + } + return obj.(*v1.NetworkPolicy), nil +} diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD b/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD new file mode 100644 index 000000000..dcae183c9 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "eviction.go", + "expansion_generated.go", + "poddisruptionbudget.go", + "poddisruptionbudget_expansion.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go new file mode 100644 index 000000000..dc9ea3c7f --- /dev/null +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/eviction.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// EvictionLister helps list Evictions. +type EvictionLister interface { + // List lists all Evictions in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Eviction, err error) + // Evictions returns an object that can list and get Evictions. + Evictions(namespace string) EvictionNamespaceLister + EvictionListerExpansion +} + +// evictionLister implements the EvictionLister interface. +type evictionLister struct { + indexer cache.Indexer +} + +// NewEvictionLister returns a new EvictionLister. +func NewEvictionLister(indexer cache.Indexer) EvictionLister { + return &evictionLister{indexer: indexer} +} + +// List lists all Evictions in the indexer. +func (s *evictionLister) List(selector labels.Selector) (ret []*v1beta1.Eviction, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Eviction)) + }) + return ret, err +} + +// Evictions returns an object that can list and get Evictions. +func (s *evictionLister) Evictions(namespace string) EvictionNamespaceLister { + return evictionNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// EvictionNamespaceLister helps list and get Evictions. +type EvictionNamespaceLister interface { + // List lists all Evictions in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Eviction, err error) + // Get retrieves the Eviction from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Eviction, error) + EvictionNamespaceListerExpansion +} + +// evictionNamespaceLister implements the EvictionNamespaceLister +// interface. +type evictionNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Evictions in the indexer for a given namespace. +func (s evictionNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Eviction, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Eviction)) + }) + return ret, err +} + +// Get retrieves the Eviction from the indexer for a given namespace and name. +func (s evictionNamespaceLister) Get(name string) (*v1beta1.Eviction, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("eviction"), name) + } + return obj.(*v1beta1.Eviction), nil +} diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go new file mode 100644 index 000000000..4785fbc06 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +// EvictionListerExpansion allows custom methods to be added to +// EvictionLister. +type EvictionListerExpansion interface{} + +// EvictionNamespaceListerExpansion allows custom methods to be added to +// EvictionNamespaceLister. +type EvictionNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go new file mode 100644 index 000000000..f3a5677d5 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// PodDisruptionBudgetLister helps list PodDisruptionBudgets. +type PodDisruptionBudgetLister interface { + // List lists all PodDisruptionBudgets in the indexer. + List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error) + // PodDisruptionBudgets returns an object that can list and get PodDisruptionBudgets. + PodDisruptionBudgets(namespace string) PodDisruptionBudgetNamespaceLister + PodDisruptionBudgetListerExpansion +} + +// podDisruptionBudgetLister implements the PodDisruptionBudgetLister interface. +type podDisruptionBudgetLister struct { + indexer cache.Indexer +} + +// NewPodDisruptionBudgetLister returns a new PodDisruptionBudgetLister. +func NewPodDisruptionBudgetLister(indexer cache.Indexer) PodDisruptionBudgetLister { + return &podDisruptionBudgetLister{indexer: indexer} +} + +// List lists all PodDisruptionBudgets in the indexer. +func (s *podDisruptionBudgetLister) List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.PodDisruptionBudget)) + }) + return ret, err +} + +// PodDisruptionBudgets returns an object that can list and get PodDisruptionBudgets. +func (s *podDisruptionBudgetLister) PodDisruptionBudgets(namespace string) PodDisruptionBudgetNamespaceLister { + return podDisruptionBudgetNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// PodDisruptionBudgetNamespaceLister helps list and get PodDisruptionBudgets. +type PodDisruptionBudgetNamespaceLister interface { + // List lists all PodDisruptionBudgets in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error) + // Get retrieves the PodDisruptionBudget from the indexer for a given namespace and name. + Get(name string) (*v1beta1.PodDisruptionBudget, error) + PodDisruptionBudgetNamespaceListerExpansion +} + +// podDisruptionBudgetNamespaceLister implements the PodDisruptionBudgetNamespaceLister +// interface. +type podDisruptionBudgetNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all PodDisruptionBudgets in the indexer for a given namespace. +func (s podDisruptionBudgetNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.PodDisruptionBudget, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.PodDisruptionBudget)) + }) + return ret, err +} + +// Get retrieves the PodDisruptionBudget from the indexer for a given namespace and name. +func (s podDisruptionBudgetNamespaceLister) Get(name string) (*v1beta1.PodDisruptionBudget, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("poddisruptionbudget"), name) + } + return obj.(*v1beta1.PodDisruptionBudget), nil +} diff --git a/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go new file mode 100644 index 000000000..47f388483 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/policy/v1beta1/poddisruptionbudget_expansion.go @@ -0,0 +1,74 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + "github.com/golang/glog" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api/v1" + policy "k8s.io/client-go/pkg/apis/policy/v1beta1" +) + +// PodDisruptionBudgetListerExpansion allows custom methods to be added to +// PodDisruptionBudgetLister. +type PodDisruptionBudgetListerExpansion interface { + GetPodPodDisruptionBudgets(pod *v1.Pod) ([]*policy.PodDisruptionBudget, error) +} + +// PodDisruptionBudgetNamespaceListerExpansion allows custom methods to be added to +// PodDisruptionBudgetNamespaceLister. +type PodDisruptionBudgetNamespaceListerExpansion interface{} + +// GetPodPodDisruptionBudgets returns a list of PodDisruptionBudgets matching a pod. Returns an error only if no matching PodDisruptionBudgets are found. +func (s *podDisruptionBudgetLister) GetPodPodDisruptionBudgets(pod *v1.Pod) ([]*policy.PodDisruptionBudget, error) { + var selector labels.Selector + + if len(pod.Labels) == 0 { + return nil, fmt.Errorf("no PodDisruptionBudgets found for pod %v because it has no labels", pod.Name) + } + + list, err := s.PodDisruptionBudgets(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + var pdbList []*policy.PodDisruptionBudget + for i := range list { + pdb := list[i] + selector, err = metav1.LabelSelectorAsSelector(pdb.Spec.Selector) + if err != nil { + glog.Warningf("invalid selector: %v", err) + // TODO(mml): add an event to the PDB + continue + } + + // If a PDB with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + pdbList = append(pdbList, pdb) + } + + if len(pdbList) == 0 { + return nil, fmt.Errorf("could not find PodDisruptionBudget for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + + return pdbList, nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD new file mode 100644 index 000000000..f97046b75 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clusterrole.go", + "clusterrolebinding.go", + "expansion_generated.go", + "role.go", + "rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go new file mode 100644 index 000000000..98c7b9bd5 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrole.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// ClusterRoleLister helps list ClusterRoles. +type ClusterRoleLister interface { + // List lists all ClusterRoles in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.ClusterRole, err error) + // Get retrieves the ClusterRole from the index for a given name. + Get(name string) (*v1alpha1.ClusterRole, error) + ClusterRoleListerExpansion +} + +// clusterRoleLister implements the ClusterRoleLister interface. +type clusterRoleLister struct { + indexer cache.Indexer +} + +// NewClusterRoleLister returns a new ClusterRoleLister. +func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister { + return &clusterRoleLister{indexer: indexer} +} + +// List lists all ClusterRoles in the indexer. +func (s *clusterRoleLister) List(selector labels.Selector) (ret []*v1alpha1.ClusterRole, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.ClusterRole)) + }) + return ret, err +} + +// Get retrieves the ClusterRole from the index for a given name. +func (s *clusterRoleLister) Get(name string) (*v1alpha1.ClusterRole, error) { + key := &v1alpha1.ClusterRole{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("clusterrole"), name) + } + return obj.(*v1alpha1.ClusterRole), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go new file mode 100644 index 000000000..3016525c0 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/clusterrolebinding.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// ClusterRoleBindingLister helps list ClusterRoleBindings. +type ClusterRoleBindingLister interface { + // List lists all ClusterRoleBindings in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.ClusterRoleBinding, err error) + // Get retrieves the ClusterRoleBinding from the index for a given name. + Get(name string) (*v1alpha1.ClusterRoleBinding, error) + ClusterRoleBindingListerExpansion +} + +// clusterRoleBindingLister implements the ClusterRoleBindingLister interface. +type clusterRoleBindingLister struct { + indexer cache.Indexer +} + +// NewClusterRoleBindingLister returns a new ClusterRoleBindingLister. +func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister { + return &clusterRoleBindingLister{indexer: indexer} +} + +// List lists all ClusterRoleBindings in the indexer. +func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*v1alpha1.ClusterRoleBinding, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.ClusterRoleBinding)) + }) + return ret, err +} + +// Get retrieves the ClusterRoleBinding from the index for a given name. +func (s *clusterRoleBindingLister) Get(name string) (*v1alpha1.ClusterRoleBinding, error) { + key := &v1alpha1.ClusterRoleBinding{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("clusterrolebinding"), name) + } + return obj.(*v1alpha1.ClusterRoleBinding), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go new file mode 100644 index 000000000..0ab4fb991 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/expansion_generated.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +// ClusterRoleListerExpansion allows custom methods to be added to +// ClusterRoleLister. +type ClusterRoleListerExpansion interface{} + +// ClusterRoleBindingListerExpansion allows custom methods to be added to +// ClusterRoleBindingLister. +type ClusterRoleBindingListerExpansion interface{} + +// RoleListerExpansion allows custom methods to be added to +// RoleLister. +type RoleListerExpansion interface{} + +// RoleNamespaceListerExpansion allows custom methods to be added to +// RoleNamespaceLister. +type RoleNamespaceListerExpansion interface{} + +// RoleBindingListerExpansion allows custom methods to be added to +// RoleBindingLister. +type RoleBindingListerExpansion interface{} + +// RoleBindingNamespaceListerExpansion allows custom methods to be added to +// RoleBindingNamespaceLister. +type RoleBindingNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go new file mode 100644 index 000000000..18478e2ab --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/role.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// RoleLister helps list Roles. +type RoleLister interface { + // List lists all Roles in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.Role, err error) + // Roles returns an object that can list and get Roles. + Roles(namespace string) RoleNamespaceLister + RoleListerExpansion +} + +// roleLister implements the RoleLister interface. +type roleLister struct { + indexer cache.Indexer +} + +// NewRoleLister returns a new RoleLister. +func NewRoleLister(indexer cache.Indexer) RoleLister { + return &roleLister{indexer: indexer} +} + +// List lists all Roles in the indexer. +func (s *roleLister) List(selector labels.Selector) (ret []*v1alpha1.Role, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.Role)) + }) + return ret, err +} + +// Roles returns an object that can list and get Roles. +func (s *roleLister) Roles(namespace string) RoleNamespaceLister { + return roleNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// RoleNamespaceLister helps list and get Roles. +type RoleNamespaceLister interface { + // List lists all Roles in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1alpha1.Role, err error) + // Get retrieves the Role from the indexer for a given namespace and name. + Get(name string) (*v1alpha1.Role, error) + RoleNamespaceListerExpansion +} + +// roleNamespaceLister implements the RoleNamespaceLister +// interface. +type roleNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Roles in the indexer for a given namespace. +func (s roleNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.Role, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.Role)) + }) + return ret, err +} + +// Get retrieves the Role from the indexer for a given namespace and name. +func (s roleNamespaceLister) Get(name string) (*v1alpha1.Role, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("role"), name) + } + return obj.(*v1alpha1.Role), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go new file mode 100644 index 000000000..b9b395dfa --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1alpha1/rolebinding.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// RoleBindingLister helps list RoleBindings. +type RoleBindingLister interface { + // List lists all RoleBindings in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error) + // RoleBindings returns an object that can list and get RoleBindings. + RoleBindings(namespace string) RoleBindingNamespaceLister + RoleBindingListerExpansion +} + +// roleBindingLister implements the RoleBindingLister interface. +type roleBindingLister struct { + indexer cache.Indexer +} + +// NewRoleBindingLister returns a new RoleBindingLister. +func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister { + return &roleBindingLister{indexer: indexer} +} + +// List lists all RoleBindings in the indexer. +func (s *roleBindingLister) List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.RoleBinding)) + }) + return ret, err +} + +// RoleBindings returns an object that can list and get RoleBindings. +func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceLister { + return roleBindingNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// RoleBindingNamespaceLister helps list and get RoleBindings. +type RoleBindingNamespaceLister interface { + // List lists all RoleBindings in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error) + // Get retrieves the RoleBinding from the indexer for a given namespace and name. + Get(name string) (*v1alpha1.RoleBinding, error) + RoleBindingNamespaceListerExpansion +} + +// roleBindingNamespaceLister implements the RoleBindingNamespaceLister +// interface. +type roleBindingNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all RoleBindings in the indexer for a given namespace. +func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.RoleBinding, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.RoleBinding)) + }) + return ret, err +} + +// Get retrieves the RoleBinding from the indexer for a given namespace and name. +func (s roleBindingNamespaceLister) Get(name string) (*v1alpha1.RoleBinding, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("rolebinding"), name) + } + return obj.(*v1alpha1.RoleBinding), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD b/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD new file mode 100644 index 000000000..c8a44a9b5 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "clusterrole.go", + "clusterrolebinding.go", + "expansion_generated.go", + "role.go", + "rolebinding.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go new file mode 100644 index 000000000..f963c7406 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrole.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ClusterRoleLister helps list ClusterRoles. +type ClusterRoleLister interface { + // List lists all ClusterRoles in the indexer. + List(selector labels.Selector) (ret []*v1beta1.ClusterRole, err error) + // Get retrieves the ClusterRole from the index for a given name. + Get(name string) (*v1beta1.ClusterRole, error) + ClusterRoleListerExpansion +} + +// clusterRoleLister implements the ClusterRoleLister interface. +type clusterRoleLister struct { + indexer cache.Indexer +} + +// NewClusterRoleLister returns a new ClusterRoleLister. +func NewClusterRoleLister(indexer cache.Indexer) ClusterRoleLister { + return &clusterRoleLister{indexer: indexer} +} + +// List lists all ClusterRoles in the indexer. +func (s *clusterRoleLister) List(selector labels.Selector) (ret []*v1beta1.ClusterRole, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ClusterRole)) + }) + return ret, err +} + +// Get retrieves the ClusterRole from the index for a given name. +func (s *clusterRoleLister) Get(name string) (*v1beta1.ClusterRole, error) { + key := &v1beta1.ClusterRole{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("clusterrole"), name) + } + return obj.(*v1beta1.ClusterRole), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go new file mode 100644 index 000000000..2826023c5 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/clusterrolebinding.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// ClusterRoleBindingLister helps list ClusterRoleBindings. +type ClusterRoleBindingLister interface { + // List lists all ClusterRoleBindings in the indexer. + List(selector labels.Selector) (ret []*v1beta1.ClusterRoleBinding, err error) + // Get retrieves the ClusterRoleBinding from the index for a given name. + Get(name string) (*v1beta1.ClusterRoleBinding, error) + ClusterRoleBindingListerExpansion +} + +// clusterRoleBindingLister implements the ClusterRoleBindingLister interface. +type clusterRoleBindingLister struct { + indexer cache.Indexer +} + +// NewClusterRoleBindingLister returns a new ClusterRoleBindingLister. +func NewClusterRoleBindingLister(indexer cache.Indexer) ClusterRoleBindingLister { + return &clusterRoleBindingLister{indexer: indexer} +} + +// List lists all ClusterRoleBindings in the indexer. +func (s *clusterRoleBindingLister) List(selector labels.Selector) (ret []*v1beta1.ClusterRoleBinding, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.ClusterRoleBinding)) + }) + return ret, err +} + +// Get retrieves the ClusterRoleBinding from the index for a given name. +func (s *clusterRoleBindingLister) Get(name string) (*v1beta1.ClusterRoleBinding, error) { + key := &v1beta1.ClusterRoleBinding{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("clusterrolebinding"), name) + } + return obj.(*v1beta1.ClusterRoleBinding), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go new file mode 100644 index 000000000..b6eeae833 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/expansion_generated.go @@ -0,0 +1,43 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +// ClusterRoleListerExpansion allows custom methods to be added to +// ClusterRoleLister. +type ClusterRoleListerExpansion interface{} + +// ClusterRoleBindingListerExpansion allows custom methods to be added to +// ClusterRoleBindingLister. +type ClusterRoleBindingListerExpansion interface{} + +// RoleListerExpansion allows custom methods to be added to +// RoleLister. +type RoleListerExpansion interface{} + +// RoleNamespaceListerExpansion allows custom methods to be added to +// RoleNamespaceLister. +type RoleNamespaceListerExpansion interface{} + +// RoleBindingListerExpansion allows custom methods to be added to +// RoleBindingLister. +type RoleBindingListerExpansion interface{} + +// RoleBindingNamespaceListerExpansion allows custom methods to be added to +// RoleBindingNamespaceLister. +type RoleBindingNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go new file mode 100644 index 000000000..b1f37a75e --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/role.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// RoleLister helps list Roles. +type RoleLister interface { + // List lists all Roles in the indexer. + List(selector labels.Selector) (ret []*v1beta1.Role, err error) + // Roles returns an object that can list and get Roles. + Roles(namespace string) RoleNamespaceLister + RoleListerExpansion +} + +// roleLister implements the RoleLister interface. +type roleLister struct { + indexer cache.Indexer +} + +// NewRoleLister returns a new RoleLister. +func NewRoleLister(indexer cache.Indexer) RoleLister { + return &roleLister{indexer: indexer} +} + +// List lists all Roles in the indexer. +func (s *roleLister) List(selector labels.Selector) (ret []*v1beta1.Role, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Role)) + }) + return ret, err +} + +// Roles returns an object that can list and get Roles. +func (s *roleLister) Roles(namespace string) RoleNamespaceLister { + return roleNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// RoleNamespaceLister helps list and get Roles. +type RoleNamespaceLister interface { + // List lists all Roles in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.Role, err error) + // Get retrieves the Role from the indexer for a given namespace and name. + Get(name string) (*v1beta1.Role, error) + RoleNamespaceListerExpansion +} + +// roleNamespaceLister implements the RoleNamespaceLister +// interface. +type roleNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all Roles in the indexer for a given namespace. +func (s roleNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.Role, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.Role)) + }) + return ret, err +} + +// Get retrieves the Role from the indexer for a given namespace and name. +func (s roleNamespaceLister) Get(name string) (*v1beta1.Role, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("role"), name) + } + return obj.(*v1beta1.Role), nil +} diff --git a/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go b/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go new file mode 100644 index 000000000..9f75e0974 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/rbac/v1beta1/rolebinding.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/rbac/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// RoleBindingLister helps list RoleBindings. +type RoleBindingLister interface { + // List lists all RoleBindings in the indexer. + List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error) + // RoleBindings returns an object that can list and get RoleBindings. + RoleBindings(namespace string) RoleBindingNamespaceLister + RoleBindingListerExpansion +} + +// roleBindingLister implements the RoleBindingLister interface. +type roleBindingLister struct { + indexer cache.Indexer +} + +// NewRoleBindingLister returns a new RoleBindingLister. +func NewRoleBindingLister(indexer cache.Indexer) RoleBindingLister { + return &roleBindingLister{indexer: indexer} +} + +// List lists all RoleBindings in the indexer. +func (s *roleBindingLister) List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.RoleBinding)) + }) + return ret, err +} + +// RoleBindings returns an object that can list and get RoleBindings. +func (s *roleBindingLister) RoleBindings(namespace string) RoleBindingNamespaceLister { + return roleBindingNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// RoleBindingNamespaceLister helps list and get RoleBindings. +type RoleBindingNamespaceLister interface { + // List lists all RoleBindings in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error) + // Get retrieves the RoleBinding from the indexer for a given namespace and name. + Get(name string) (*v1beta1.RoleBinding, error) + RoleBindingNamespaceListerExpansion +} + +// roleBindingNamespaceLister implements the RoleBindingNamespaceLister +// interface. +type roleBindingNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all RoleBindings in the indexer for a given namespace. +func (s roleBindingNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.RoleBinding, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.RoleBinding)) + }) + return ret, err +} + +// Get retrieves the RoleBinding from the indexer for a given namespace and name. +func (s roleBindingNamespaceLister) Get(name string) (*v1beta1.RoleBinding, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("rolebinding"), name) + } + return obj.(*v1beta1.RoleBinding), nil +} diff --git a/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD b/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD new file mode 100644 index 000000000..b073927bb --- /dev/null +++ b/vendor/k8s.io/client-go/listers/settings/v1alpha1/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "podpreset.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/settings/v1alpha1/expansion_generated.go b/vendor/k8s.io/client-go/listers/settings/v1alpha1/expansion_generated.go new file mode 100644 index 000000000..7a5ce38e9 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/settings/v1alpha1/expansion_generated.go @@ -0,0 +1,27 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +// PodPresetListerExpansion allows custom methods to be added to +// PodPresetLister. +type PodPresetListerExpansion interface{} + +// PodPresetNamespaceListerExpansion allows custom methods to be added to +// PodPresetNamespaceLister. +type PodPresetNamespaceListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/settings/v1alpha1/podpreset.go b/vendor/k8s.io/client-go/listers/settings/v1alpha1/podpreset.go new file mode 100644 index 000000000..68c894136 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/settings/v1alpha1/podpreset.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + v1alpha1 "k8s.io/client-go/pkg/apis/settings/v1alpha1" + "k8s.io/client-go/tools/cache" +) + +// PodPresetLister helps list PodPresets. +type PodPresetLister interface { + // List lists all PodPresets in the indexer. + List(selector labels.Selector) (ret []*v1alpha1.PodPreset, err error) + // PodPresets returns an object that can list and get PodPresets. + PodPresets(namespace string) PodPresetNamespaceLister + PodPresetListerExpansion +} + +// podPresetLister implements the PodPresetLister interface. +type podPresetLister struct { + indexer cache.Indexer +} + +// NewPodPresetLister returns a new PodPresetLister. +func NewPodPresetLister(indexer cache.Indexer) PodPresetLister { + return &podPresetLister{indexer: indexer} +} + +// List lists all PodPresets in the indexer. +func (s *podPresetLister) List(selector labels.Selector) (ret []*v1alpha1.PodPreset, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.PodPreset)) + }) + return ret, err +} + +// PodPresets returns an object that can list and get PodPresets. +func (s *podPresetLister) PodPresets(namespace string) PodPresetNamespaceLister { + return podPresetNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// PodPresetNamespaceLister helps list and get PodPresets. +type PodPresetNamespaceLister interface { + // List lists all PodPresets in the indexer for a given namespace. + List(selector labels.Selector) (ret []*v1alpha1.PodPreset, err error) + // Get retrieves the PodPreset from the indexer for a given namespace and name. + Get(name string) (*v1alpha1.PodPreset, error) + PodPresetNamespaceListerExpansion +} + +// podPresetNamespaceLister implements the PodPresetNamespaceLister +// interface. +type podPresetNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all PodPresets in the indexer for a given namespace. +func (s podPresetNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.PodPreset, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.PodPreset)) + }) + return ret, err +} + +// Get retrieves the PodPreset from the indexer for a given namespace and name. +func (s podPresetNamespaceLister) Get(name string) (*v1alpha1.PodPreset, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("podpreset"), name) + } + return obj.(*v1alpha1.PodPreset), nil +} diff --git a/vendor/k8s.io/client-go/listers/storage/v1/BUILD b/vendor/k8s.io/client-go/listers/storage/v1/BUILD new file mode 100644 index 000000000..2dfee2eaa --- /dev/null +++ b/vendor/k8s.io/client-go/listers/storage/v1/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go new file mode 100644 index 000000000..2353b59d3 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/storage/v1/expansion_generated.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +// StorageClassListerExpansion allows custom methods to be added to +// StorageClassLister. +type StorageClassListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go b/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go new file mode 100644 index 000000000..29dc6f5f7 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/storage/v1/storageclass.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1 "k8s.io/client-go/pkg/apis/storage/v1" + "k8s.io/client-go/tools/cache" +) + +// StorageClassLister helps list StorageClasses. +type StorageClassLister interface { + // List lists all StorageClasses in the indexer. + List(selector labels.Selector) (ret []*v1.StorageClass, err error) + // Get retrieves the StorageClass from the index for a given name. + Get(name string) (*v1.StorageClass, error) + StorageClassListerExpansion +} + +// storageClassLister implements the StorageClassLister interface. +type storageClassLister struct { + indexer cache.Indexer +} + +// NewStorageClassLister returns a new StorageClassLister. +func NewStorageClassLister(indexer cache.Indexer) StorageClassLister { + return &storageClassLister{indexer: indexer} +} + +// List lists all StorageClasses in the indexer. +func (s *storageClassLister) List(selector labels.Selector) (ret []*v1.StorageClass, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.StorageClass)) + }) + return ret, err +} + +// Get retrieves the StorageClass from the index for a given name. +func (s *storageClassLister) Get(name string) (*v1.StorageClass, error) { + key := &v1.StorageClass{ObjectMeta: meta_v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("storageclass"), name) + } + return obj.(*v1.StorageClass), nil +} diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD b/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD new file mode 100644 index 000000000..e2b74c885 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "expansion_generated.go", + "storageclass.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go new file mode 100644 index 000000000..84e0f9c44 --- /dev/null +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/expansion_generated.go @@ -0,0 +1,23 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +// StorageClassListerExpansion allows custom methods to be added to +// StorageClassLister. +type StorageClassListerExpansion interface{} diff --git a/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go new file mode 100644 index 000000000..9d876c4ab --- /dev/null +++ b/vendor/k8s.io/client-go/listers/storage/v1beta1/storageclass.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was automatically generated by lister-gen + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" + "k8s.io/client-go/tools/cache" +) + +// StorageClassLister helps list StorageClasses. +type StorageClassLister interface { + // List lists all StorageClasses in the indexer. + List(selector labels.Selector) (ret []*v1beta1.StorageClass, err error) + // Get retrieves the StorageClass from the index for a given name. + Get(name string) (*v1beta1.StorageClass, error) + StorageClassListerExpansion +} + +// storageClassLister implements the StorageClassLister interface. +type storageClassLister struct { + indexer cache.Indexer +} + +// NewStorageClassLister returns a new StorageClassLister. +func NewStorageClassLister(indexer cache.Indexer) StorageClassLister { + return &storageClassLister{indexer: indexer} +} + +// List lists all StorageClasses in the indexer. +func (s *storageClassLister) List(selector labels.Selector) (ret []*v1beta1.StorageClass, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1beta1.StorageClass)) + }) + return ret, err +} + +// Get retrieves the StorageClass from the index for a given name. +func (s *storageClassLister) Get(name string) (*v1beta1.StorageClass, error) { + key := &v1beta1.StorageClass{ObjectMeta: v1.ObjectMeta{Name: name}} + obj, exists, err := s.indexer.Get(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1beta1.Resource("storageclass"), name) + } + return obj.(*v1beta1.StorageClass), nil +} diff --git a/vendor/k8s.io/client-go/pkg/api/BUILD b/vendor/k8s.io/client-go/pkg/api/BUILD new file mode 100644 index 000000000..8f4154d53 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/BUILD @@ -0,0 +1,40 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "annotation_key_constants.go", + "doc.go", + "field_constants.go", + "json.go", + "objectreference.go", + "register.go", + "resource.go", + "taint.go", + "toleration.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/OWNERS b/vendor/k8s.io/client-go/pkg/api/OWNERS new file mode 100644 index 000000000..3a9b0c6d1 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/OWNERS @@ -0,0 +1,44 @@ +approvers: +- erictune +- lavalamp +- smarterclayton +- thockin +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- yujuhong +- brendandburns +- derekwaynecarr +- caesarxuchao +- vishh +- mikedanese +- liggitt +- nikhiljindal +- bprashanth +- gmarek +- erictune +- davidopp +- pmorie +- sttts +- kargakis +- dchen1107 +- saad-ali +- zmerlynn +- luxas +- janetkuo +- justinsb +- pwittrock +- roberthbailey +- ncdc +- timstclair +- yifan-gu +- eparis +- mwielgus +- timothysc +- soltysh +- piosz +- jsafrane +- jbeda diff --git a/vendor/k8s.io/client-go/pkg/api/annotation_key_constants.go b/vendor/k8s.io/client-go/pkg/api/annotation_key_constants.go new file mode 100644 index 000000000..e1080a34a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/annotation_key_constants.go @@ -0,0 +1,113 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file should be consistent with pkg/api/v1/annotation_key_constants.go. + +package api + +const ( + // ImagePolicyFailedOpenKey is added to pods created by failing open when the image policy + // webhook backend fails. + ImagePolicyFailedOpenKey string = "alpha.image-policy.k8s.io/failed-open" + + // PodPresetOptOutAnnotationKey represents the annotation key for a pod to exempt itself from pod preset manipulation + PodPresetOptOutAnnotationKey string = "podpreset.admission.kubernetes.io/exclude" + + // MirrorAnnotationKey represents the annotation key set by kubelets when creating mirror pods + MirrorPodAnnotationKey string = "kubernetes.io/config.mirror" + + // TolerationsAnnotationKey represents the key of tolerations data (json serialized) + // in the Annotations of a Pod. + TolerationsAnnotationKey string = "scheduler.alpha.kubernetes.io/tolerations" + + // TaintsAnnotationKey represents the key of taints data (json serialized) + // in the Annotations of a Node. + TaintsAnnotationKey string = "scheduler.alpha.kubernetes.io/taints" + + // SeccompPodAnnotationKey represents the key of a seccomp profile applied + // to all containers of a pod. + SeccompPodAnnotationKey string = "seccomp.security.alpha.kubernetes.io/pod" + + // SeccompContainerAnnotationKeyPrefix represents the key of a seccomp profile applied + // to one container of a pod. + SeccompContainerAnnotationKeyPrefix string = "container.seccomp.security.alpha.kubernetes.io/" + + // CreatedByAnnotation represents the key used to store the spec(json) + // used to create the resource. + CreatedByAnnotation = "kubernetes.io/created-by" + + // PreferAvoidPodsAnnotationKey represents the key of preferAvoidPods data (json serialized) + // in the Annotations of a Node. + PreferAvoidPodsAnnotationKey string = "scheduler.alpha.kubernetes.io/preferAvoidPods" + + // SysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Only a limited set of whitelisted and isolated sysctls is supported by + // the kubelet. Pods with other sysctls will fail to launch. + SysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/sysctls" + + // UnsafeSysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Unsafe sysctls must be explicitly enabled for a kubelet. They are properly + // namespaced to a pod or a container, but their isolation is usually unclear or weak. Their use + // is at-your-own-risk. Pods that attempt to set an unsafe sysctl that is not enabled for a kubelet + // will fail to launch. + UnsafeSysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/unsafe-sysctls" + + // ObjectTTLAnnotations represents a suggestion for kubelet for how long it can cache + // an object (e.g. secret, config map) before fetching it again from apiserver. + // This annotation can be attached to node. + ObjectTTLAnnotationKey string = "node.alpha.kubernetes.io/ttl" + + // AffinityAnnotationKey represents the key of affinity data (json serialized) + // in the Annotations of a Pod. + // TODO: remove when alpha support for affinity is removed + AffinityAnnotationKey string = "scheduler.alpha.kubernetes.io/affinity" + + // annotation key prefix used to identify non-convertible json paths. + NonConvertibleAnnotationPrefix = "non-convertible.kubernetes.io" + + kubectlPrefix = "kubectl.kubernetes.io/" + + // LastAppliedConfigAnnotation is the annotation used to store the previous + // configuration of a resource for use in a three way diff by UpdateApplyAnnotation. + LastAppliedConfigAnnotation = kubectlPrefix + "last-applied-configuration" + + // AnnotationLoadBalancerSourceRangesKey is the key of the annotation on a service to set allowed ingress ranges on their LoadBalancers + // + // It should be a comma-separated list of CIDRs, e.g. `0.0.0.0/0` to + // allow full access (the default) or `18.0.0.0/8,56.0.0.0/8` to allow + // access only from the CIDRs currently allocated to MIT & the USPS. + // + // Not all cloud providers support this annotation, though AWS & GCE do. + AnnotationLoadBalancerSourceRangesKey = "service.beta.kubernetes.io/load-balancer-source-ranges" + + // AnnotationValueExternalTrafficLocal Value of annotation to specify local endpoints behavior. + AnnotationValueExternalTrafficLocal = "OnlyLocal" + // AnnotationValueExternalTrafficGlobal Value of annotation to specify global (legacy) behavior. + AnnotationValueExternalTrafficGlobal = "Global" + + // TODO: The beta annotations have been deprecated, remove them when we release k8s 1.8. + + // BetaAnnotationHealthCheckNodePort Annotation specifying the healthcheck nodePort for the service. + // If not specified, annotation is created by the service api backend with the allocated nodePort. + // Will use user-specified nodePort value if specified by the client. + BetaAnnotationHealthCheckNodePort = "service.beta.kubernetes.io/healthcheck-nodeport" + + // BetaAnnotationExternalTraffic An annotation that denotes if this Service desires to route + // external traffic to local endpoints only. This preserves Source IP and avoids a second hop. + BetaAnnotationExternalTraffic = "service.beta.kubernetes.io/external-traffic" +) diff --git a/vendor/k8s.io/client-go/pkg/api/doc.go b/vendor/k8s.io/client-go/pkg/api/doc.go new file mode 100644 index 000000000..a4262ab36 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package api contains the latest (or "internal") version of the +// Kubernetes API objects. This is the API objects as represented in memory. +// The contract presented to clients is located in the versioned packages, +// which are sub-directories. The first one is "v1". Those packages +// describe how a particular version is serialized to storage/network. +package api diff --git a/vendor/k8s.io/client-go/pkg/api/field_constants.go b/vendor/k8s.io/client-go/pkg/api/field_constants.go new file mode 100644 index 000000000..5ead0f13f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/field_constants.go @@ -0,0 +1,38 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +// Field path constants that are specific to the internal API +// representation. +const ( + NodeUnschedulableField = "spec.unschedulable" + ObjectNameField = "metadata.name" + PodHostField = "spec.nodeName" + PodStatusField = "status.phase" + SecretTypeField = "type" + + EventReasonField = "reason" + EventSourceField = "source" + EventTypeField = "type" + EventInvolvedKindField = "involvedObject.kind" + EventInvolvedNamespaceField = "involvedObject.namespace" + EventInvolvedNameField = "involvedObject.name" + EventInvolvedUIDField = "involvedObject.uid" + EventInvolvedAPIVersionField = "involvedObject.apiVersion" + EventInvolvedResourceVersionField = "involvedObject.resourceVersion" + EventInvolvedFieldPathField = "involvedObject.fieldPath" +) diff --git a/vendor/k8s.io/client-go/pkg/api/helper/BUILD b/vendor/k8s.io/client-go/pkg/api/helper/BUILD new file mode 100644 index 000000000..a80762015 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/helper/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["helpers_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["helpers.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/selection:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/helper/helpers.go b/vendor/k8s.io/client-go/pkg/api/helper/helpers.go new file mode 100644 index 000000000..6890a705c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/helper/helpers.go @@ -0,0 +1,604 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package helper + +import ( + "encoding/json" + "fmt" + "strings" + + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/selection" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" +) + +// NonConvertibleFields iterates over the provided map and filters out all but +// any keys with the "non-convertible.kubernetes.io" prefix. +func NonConvertibleFields(annotations map[string]string) map[string]string { + nonConvertibleKeys := map[string]string{} + for key, value := range annotations { + if strings.HasPrefix(key, api.NonConvertibleAnnotationPrefix) { + nonConvertibleKeys[key] = value + } + } + return nonConvertibleKeys +} + +// Semantic can do semantic deep equality checks for api objects. +// Example: apiequality.Semantic.DeepEqual(aPod, aPodWithNonNilButEmptyMaps) == true +var Semantic = conversion.EqualitiesOrDie( + func(a, b resource.Quantity) bool { + // Ignore formatting, only care that numeric value stayed the same. + // TODO: if we decide it's important, it should be safe to start comparing the format. + // + // Uninitialized quantities are equivalent to 0 quantities. + return a.Cmp(b) == 0 + }, + func(a, b metav1.Time) bool { + return a.UTC() == b.UTC() + }, + func(a, b labels.Selector) bool { + return a.String() == b.String() + }, + func(a, b fields.Selector) bool { + return a.String() == b.String() + }, +) + +var standardResourceQuotaScopes = sets.NewString( + string(api.ResourceQuotaScopeTerminating), + string(api.ResourceQuotaScopeNotTerminating), + string(api.ResourceQuotaScopeBestEffort), + string(api.ResourceQuotaScopeNotBestEffort), +) + +// IsStandardResourceQuotaScope returns true if the scope is a standard value +func IsStandardResourceQuotaScope(str string) bool { + return standardResourceQuotaScopes.Has(str) +} + +var podObjectCountQuotaResources = sets.NewString( + string(api.ResourcePods), +) + +var podComputeQuotaResources = sets.NewString( + string(api.ResourceCPU), + string(api.ResourceMemory), + string(api.ResourceLimitsCPU), + string(api.ResourceLimitsMemory), + string(api.ResourceRequestsCPU), + string(api.ResourceRequestsMemory), +) + +// IsResourceQuotaScopeValidForResource returns true if the resource applies to the specified scope +func IsResourceQuotaScopeValidForResource(scope api.ResourceQuotaScope, resource string) bool { + switch scope { + case api.ResourceQuotaScopeTerminating, api.ResourceQuotaScopeNotTerminating, api.ResourceQuotaScopeNotBestEffort: + return podObjectCountQuotaResources.Has(resource) || podComputeQuotaResources.Has(resource) + case api.ResourceQuotaScopeBestEffort: + return podObjectCountQuotaResources.Has(resource) + default: + return true + } +} + +var standardContainerResources = sets.NewString( + string(api.ResourceCPU), + string(api.ResourceMemory), +) + +// IsStandardContainerResourceName returns true if the container can make a resource request +// for the specified resource +func IsStandardContainerResourceName(str string) bool { + return standardContainerResources.Has(str) +} + +// IsOpaqueIntResourceName returns true if the resource name has the opaque +// integer resource prefix. +func IsOpaqueIntResourceName(name api.ResourceName) bool { + return strings.HasPrefix(string(name), api.ResourceOpaqueIntPrefix) +} + +// OpaqueIntResourceName returns a ResourceName with the canonical opaque +// integer prefix prepended. If the argument already has the prefix, it is +// returned unmodified. +func OpaqueIntResourceName(name string) api.ResourceName { + if IsOpaqueIntResourceName(api.ResourceName(name)) { + return api.ResourceName(name) + } + return api.ResourceName(fmt.Sprintf("%s%s", api.ResourceOpaqueIntPrefix, name)) +} + +var standardLimitRangeTypes = sets.NewString( + string(api.LimitTypePod), + string(api.LimitTypeContainer), + string(api.LimitTypePersistentVolumeClaim), +) + +// IsStandardLimitRangeType returns true if the type is Pod or Container +func IsStandardLimitRangeType(str string) bool { + return standardLimitRangeTypes.Has(str) +} + +var standardQuotaResources = sets.NewString( + string(api.ResourceCPU), + string(api.ResourceMemory), + string(api.ResourceRequestsCPU), + string(api.ResourceRequestsMemory), + string(api.ResourceRequestsStorage), + string(api.ResourceLimitsCPU), + string(api.ResourceLimitsMemory), + string(api.ResourcePods), + string(api.ResourceQuotas), + string(api.ResourceServices), + string(api.ResourceReplicationControllers), + string(api.ResourceSecrets), + string(api.ResourcePersistentVolumeClaims), + string(api.ResourceConfigMaps), + string(api.ResourceServicesNodePorts), + string(api.ResourceServicesLoadBalancers), +) + +// IsStandardQuotaResourceName returns true if the resource is known to +// the quota tracking system +func IsStandardQuotaResourceName(str string) bool { + return standardQuotaResources.Has(str) +} + +var standardResources = sets.NewString( + string(api.ResourceCPU), + string(api.ResourceMemory), + string(api.ResourceRequestsCPU), + string(api.ResourceRequestsMemory), + string(api.ResourceLimitsCPU), + string(api.ResourceLimitsMemory), + string(api.ResourcePods), + string(api.ResourceQuotas), + string(api.ResourceServices), + string(api.ResourceReplicationControllers), + string(api.ResourceSecrets), + string(api.ResourceConfigMaps), + string(api.ResourcePersistentVolumeClaims), + string(api.ResourceStorage), + string(api.ResourceRequestsStorage), +) + +// IsStandardResourceName returns true if the resource is known to the system +func IsStandardResourceName(str string) bool { + return standardResources.Has(str) +} + +var integerResources = sets.NewString( + string(api.ResourcePods), + string(api.ResourceQuotas), + string(api.ResourceServices), + string(api.ResourceReplicationControllers), + string(api.ResourceSecrets), + string(api.ResourceConfigMaps), + string(api.ResourcePersistentVolumeClaims), + string(api.ResourceServicesNodePorts), + string(api.ResourceServicesLoadBalancers), +) + +// IsIntegerResourceName returns true if the resource is measured in integer values +func IsIntegerResourceName(str string) bool { + return integerResources.Has(str) || IsOpaqueIntResourceName(api.ResourceName(str)) +} + +// this function aims to check if the service's ClusterIP is set or not +// the objective is not to perform validation here +func IsServiceIPSet(service *api.Service) bool { + return service.Spec.ClusterIP != api.ClusterIPNone && service.Spec.ClusterIP != "" +} + +// this function aims to check if the service's cluster IP is requested or not +func IsServiceIPRequested(service *api.Service) bool { + // ExternalName services are CNAME aliases to external ones. Ignore the IP. + if service.Spec.Type == api.ServiceTypeExternalName { + return false + } + return service.Spec.ClusterIP == "" +} + +var standardFinalizers = sets.NewString( + string(api.FinalizerKubernetes), + metav1.FinalizerOrphanDependents, + metav1.FinalizerDeleteDependents, +) + +// HasAnnotation returns a bool if passed in annotation exists +func HasAnnotation(obj api.ObjectMeta, ann string) bool { + _, found := obj.Annotations[ann] + return found +} + +// SetMetaDataAnnotation sets the annotation and value +func SetMetaDataAnnotation(obj *api.ObjectMeta, ann string, value string) { + if obj.Annotations == nil { + obj.Annotations = make(map[string]string) + } + obj.Annotations[ann] = value +} + +func IsStandardFinalizerName(str string) bool { + return standardFinalizers.Has(str) +} + +// AddToNodeAddresses appends the NodeAddresses to the passed-by-pointer slice, +// only if they do not already exist +func AddToNodeAddresses(addresses *[]api.NodeAddress, addAddresses ...api.NodeAddress) { + for _, add := range addAddresses { + exists := false + for _, existing := range *addresses { + if existing.Address == add.Address && existing.Type == add.Type { + exists = true + break + } + } + if !exists { + *addresses = append(*addresses, add) + } + } +} + +// TODO: make method on LoadBalancerStatus? +func LoadBalancerStatusEqual(l, r *api.LoadBalancerStatus) bool { + return ingressSliceEqual(l.Ingress, r.Ingress) +} + +func ingressSliceEqual(lhs, rhs []api.LoadBalancerIngress) bool { + if len(lhs) != len(rhs) { + return false + } + for i := range lhs { + if !ingressEqual(&lhs[i], &rhs[i]) { + return false + } + } + return true +} + +func ingressEqual(lhs, rhs *api.LoadBalancerIngress) bool { + if lhs.IP != rhs.IP { + return false + } + if lhs.Hostname != rhs.Hostname { + return false + } + return true +} + +// TODO: make method on LoadBalancerStatus? +func LoadBalancerStatusDeepCopy(lb *api.LoadBalancerStatus) *api.LoadBalancerStatus { + c := &api.LoadBalancerStatus{} + c.Ingress = make([]api.LoadBalancerIngress, len(lb.Ingress)) + for i := range lb.Ingress { + c.Ingress[i] = lb.Ingress[i] + } + return c +} + +// GetAccessModesAsString returns a string representation of an array of access modes. +// modes, when present, are always in the same order: RWO,ROX,RWX. +func GetAccessModesAsString(modes []api.PersistentVolumeAccessMode) string { + modes = removeDuplicateAccessModes(modes) + modesStr := []string{} + if containsAccessMode(modes, api.ReadWriteOnce) { + modesStr = append(modesStr, "RWO") + } + if containsAccessMode(modes, api.ReadOnlyMany) { + modesStr = append(modesStr, "ROX") + } + if containsAccessMode(modes, api.ReadWriteMany) { + modesStr = append(modesStr, "RWX") + } + return strings.Join(modesStr, ",") +} + +// GetAccessModesAsString returns an array of AccessModes from a string created by GetAccessModesAsString +func GetAccessModesFromString(modes string) []api.PersistentVolumeAccessMode { + strmodes := strings.Split(modes, ",") + accessModes := []api.PersistentVolumeAccessMode{} + for _, s := range strmodes { + s = strings.Trim(s, " ") + switch { + case s == "RWO": + accessModes = append(accessModes, api.ReadWriteOnce) + case s == "ROX": + accessModes = append(accessModes, api.ReadOnlyMany) + case s == "RWX": + accessModes = append(accessModes, api.ReadWriteMany) + } + } + return accessModes +} + +// removeDuplicateAccessModes returns an array of access modes without any duplicates +func removeDuplicateAccessModes(modes []api.PersistentVolumeAccessMode) []api.PersistentVolumeAccessMode { + accessModes := []api.PersistentVolumeAccessMode{} + for _, m := range modes { + if !containsAccessMode(accessModes, m) { + accessModes = append(accessModes, m) + } + } + return accessModes +} + +func containsAccessMode(modes []api.PersistentVolumeAccessMode, mode api.PersistentVolumeAccessMode) bool { + for _, m := range modes { + if m == mode { + return true + } + } + return false +} + +// NodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement api type into a struct that implements +// labels.Selector. +func NodeSelectorRequirementsAsSelector(nsm []api.NodeSelectorRequirement) (labels.Selector, error) { + if len(nsm) == 0 { + return labels.Nothing(), nil + } + selector := labels.NewSelector() + for _, expr := range nsm { + var op selection.Operator + switch expr.Operator { + case api.NodeSelectorOpIn: + op = selection.In + case api.NodeSelectorOpNotIn: + op = selection.NotIn + case api.NodeSelectorOpExists: + op = selection.Exists + case api.NodeSelectorOpDoesNotExist: + op = selection.DoesNotExist + case api.NodeSelectorOpGt: + op = selection.GreaterThan + case api.NodeSelectorOpLt: + op = selection.LessThan + default: + return nil, fmt.Errorf("%q is not a valid node selector operator", expr.Operator) + } + r, err := labels.NewRequirement(expr.Key, op, expr.Values) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + return selector, nil +} + +// GetTolerationsFromPodAnnotations gets the json serialized tolerations data from Pod.Annotations +// and converts it to the []Toleration type in api. +func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]api.Toleration, error) { + var tolerations []api.Toleration + if len(annotations) > 0 && annotations[api.TolerationsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[api.TolerationsAnnotationKey]), &tolerations) + if err != nil { + return tolerations, err + } + } + return tolerations, nil +} + +// AddOrUpdateTolerationInPod tries to add a toleration to the pod's toleration list. +// Returns true if something was updated, false otherwise. +func AddOrUpdateTolerationInPod(pod *api.Pod, toleration *api.Toleration) bool { + podTolerations := pod.Spec.Tolerations + + var newTolerations []api.Toleration + updated := false + for i := range podTolerations { + if toleration.MatchToleration(&podTolerations[i]) { + if Semantic.DeepEqual(toleration, podTolerations[i]) { + return false + } + newTolerations = append(newTolerations, *toleration) + updated = true + continue + } + + newTolerations = append(newTolerations, podTolerations[i]) + } + + if !updated { + newTolerations = append(newTolerations, *toleration) + } + + pod.Spec.Tolerations = newTolerations + return true +} + +// TolerationToleratesTaint checks if the toleration tolerates the taint. +func TolerationToleratesTaint(toleration *api.Toleration, taint *api.Taint) bool { + if len(toleration.Effect) != 0 && toleration.Effect != taint.Effect { + return false + } + + if toleration.Key != taint.Key { + return false + } + // TODO: Use proper defaulting when Toleration becomes a field of PodSpec + if (len(toleration.Operator) == 0 || toleration.Operator == api.TolerationOpEqual) && toleration.Value == taint.Value { + return true + } + if toleration.Operator == api.TolerationOpExists { + return true + } + return false +} + +// TaintToleratedByTolerations checks if taint is tolerated by any of the tolerations. +func TaintToleratedByTolerations(taint *api.Taint, tolerations []api.Toleration) bool { + tolerated := false + for i := range tolerations { + if TolerationToleratesTaint(&tolerations[i], taint) { + tolerated = true + break + } + } + return tolerated +} + +// GetTaintsFromNodeAnnotations gets the json serialized taints data from Pod.Annotations +// and converts it to the []Taint type in api. +func GetTaintsFromNodeAnnotations(annotations map[string]string) ([]api.Taint, error) { + var taints []api.Taint + if len(annotations) > 0 && annotations[api.TaintsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[api.TaintsAnnotationKey]), &taints) + if err != nil { + return []api.Taint{}, err + } + } + return taints, nil +} + +// SysctlsFromPodAnnotations parses the sysctl annotations into a slice of safe Sysctls +// and a slice of unsafe Sysctls. This is only a convenience wrapper around +// SysctlsFromPodAnnotation. +func SysctlsFromPodAnnotations(a map[string]string) ([]api.Sysctl, []api.Sysctl, error) { + safe, err := SysctlsFromPodAnnotation(a[api.SysctlsPodAnnotationKey]) + if err != nil { + return nil, nil, err + } + unsafe, err := SysctlsFromPodAnnotation(a[api.UnsafeSysctlsPodAnnotationKey]) + if err != nil { + return nil, nil, err + } + + return safe, unsafe, nil +} + +// SysctlsFromPodAnnotation parses an annotation value into a slice of Sysctls. +func SysctlsFromPodAnnotation(annotation string) ([]api.Sysctl, error) { + if len(annotation) == 0 { + return nil, nil + } + + kvs := strings.Split(annotation, ",") + sysctls := make([]api.Sysctl, len(kvs)) + for i, kv := range kvs { + cs := strings.Split(kv, "=") + if len(cs) != 2 || len(cs[0]) == 0 { + return nil, fmt.Errorf("sysctl %q not of the format sysctl_name=value", kv) + } + sysctls[i].Name = cs[0] + sysctls[i].Value = cs[1] + } + return sysctls, nil +} + +// PodAnnotationsFromSysctls creates an annotation value for a slice of Sysctls. +func PodAnnotationsFromSysctls(sysctls []api.Sysctl) string { + if len(sysctls) == 0 { + return "" + } + + kvs := make([]string, len(sysctls)) + for i := range sysctls { + kvs[i] = fmt.Sprintf("%s=%s", sysctls[i].Name, sysctls[i].Value) + } + return strings.Join(kvs, ",") +} + +// GetAffinityFromPodAnnotations gets the json serialized affinity data from Pod.Annotations +// and converts it to the Affinity type in api. +// TODO: remove when alpha support for affinity is removed +func GetAffinityFromPodAnnotations(annotations map[string]string) (*api.Affinity, error) { + if len(annotations) > 0 && annotations[api.AffinityAnnotationKey] != "" { + var affinity api.Affinity + err := json.Unmarshal([]byte(annotations[api.AffinityAnnotationKey]), &affinity) + if err != nil { + return nil, err + } + return &affinity, nil + } + return nil, nil +} + +// GetPersistentVolumeClass returns StorageClassName. +func GetPersistentVolumeClass(volume *api.PersistentVolume) string { + // Use beta annotation first + if class, found := volume.Annotations[api.BetaStorageClassAnnotation]; found { + return class + } + + return volume.Spec.StorageClassName +} + +// GetPersistentVolumeClaimClass returns StorageClassName. If no storage class was +// requested, it returns "". +func GetPersistentVolumeClaimClass(claim *api.PersistentVolumeClaim) string { + // Use beta annotation first + if class, found := claim.Annotations[api.BetaStorageClassAnnotation]; found { + return class + } + + if claim.Spec.StorageClassName != nil { + return *claim.Spec.StorageClassName + } + + return "" +} + +// PersistentVolumeClaimHasClass returns true if given claim has set StorageClassName field. +func PersistentVolumeClaimHasClass(claim *api.PersistentVolumeClaim) bool { + // Use beta annotation first + if _, found := claim.Annotations[api.BetaStorageClassAnnotation]; found { + return true + } + + if claim.Spec.StorageClassName != nil { + return true + } + + return false +} + +// GetStorageNodeAffinityFromAnnotation gets the json serialized data from PersistentVolume.Annotations +// and converts it to the NodeAffinity type in api. +// TODO: update when storage node affinity graduates to beta +func GetStorageNodeAffinityFromAnnotation(annotations map[string]string) (*api.NodeAffinity, error) { + if len(annotations) > 0 && annotations[api.AlphaStorageNodeAffinityAnnotation] != "" { + var affinity api.NodeAffinity + err := json.Unmarshal([]byte(annotations[api.AlphaStorageNodeAffinityAnnotation]), &affinity) + if err != nil { + return nil, err + } + return &affinity, nil + } + return nil, nil +} + +// Converts NodeAffinity type to Alpha annotation for use in PersistentVolumes +// TODO: update when storage node affinity graduates to beta +func StorageNodeAffinityToAlphaAnnotation(annotations map[string]string, affinity *api.NodeAffinity) error { + if affinity == nil { + return nil + } + + json, err := json.Marshal(*affinity) + if err != nil { + return err + } + annotations[api.AlphaStorageNodeAffinityAnnotation] = string(json) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/api/helper/helpers_test.go b/vendor/k8s.io/client-go/pkg/api/helper/helpers_test.go new file mode 100644 index 000000000..15bec6585 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/helper/helpers_test.go @@ -0,0 +1,355 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package helper + +import ( + "reflect" + "testing" + + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/pkg/api" +) + +func TestSemantic(t *testing.T) { + table := []struct { + a, b interface{} + shouldEqual bool + }{ + {resource.MustParse("0"), resource.Quantity{}, true}, + {resource.Quantity{}, resource.MustParse("0"), true}, + {resource.Quantity{}, resource.MustParse("1m"), false}, + { + resource.NewQuantity(5, resource.BinarySI), + resource.NewQuantity(5, resource.DecimalSI), + true, + }, + {resource.MustParse("2m"), resource.MustParse("1m"), false}, + } + + for index, item := range table { + if e, a := item.shouldEqual, Semantic.DeepEqual(item.a, item.b); e != a { + t.Errorf("case[%d], expected %v, got %v.", index, e, a) + } + } +} + +func TestIsStandardResource(t *testing.T) { + testCases := []struct { + input string + output bool + }{ + {"cpu", true}, + {"memory", true}, + {"disk", false}, + {"blah", false}, + {"x.y.z", false}, + } + for i, tc := range testCases { + if IsStandardResourceName(tc.input) != tc.output { + t.Errorf("case[%d], expected: %t, got: %t", i, tc.output, !tc.output) + } + } +} + +func TestAddToNodeAddresses(t *testing.T) { + testCases := []struct { + existing []api.NodeAddress + toAdd []api.NodeAddress + expected []api.NodeAddress + }{ + { + existing: []api.NodeAddress{}, + toAdd: []api.NodeAddress{}, + expected: []api.NodeAddress{}, + }, + { + existing: []api.NodeAddress{}, + toAdd: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + {Type: api.NodeHostName, Address: "localhost"}, + }, + expected: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + {Type: api.NodeHostName, Address: "localhost"}, + }, + }, + { + existing: []api.NodeAddress{}, + toAdd: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + }, + expected: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + }, + }, + { + existing: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + {Type: api.NodeInternalIP, Address: "10.1.1.1"}, + }, + toAdd: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + {Type: api.NodeHostName, Address: "localhost"}, + }, + expected: []api.NodeAddress{ + {Type: api.NodeExternalIP, Address: "1.1.1.1"}, + {Type: api.NodeInternalIP, Address: "10.1.1.1"}, + {Type: api.NodeHostName, Address: "localhost"}, + }, + }, + } + + for i, tc := range testCases { + AddToNodeAddresses(&tc.existing, tc.toAdd...) + if !Semantic.DeepEqual(tc.expected, tc.existing) { + t.Errorf("case[%d], expected: %v, got: %v", i, tc.expected, tc.existing) + } + } +} + +func TestGetAccessModesFromString(t *testing.T) { + modes := GetAccessModesFromString("ROX") + if !containsAccessMode(modes, api.ReadOnlyMany) { + t.Errorf("Expected mode %s, but got %+v", api.ReadOnlyMany, modes) + } + + modes = GetAccessModesFromString("ROX,RWX") + if !containsAccessMode(modes, api.ReadOnlyMany) { + t.Errorf("Expected mode %s, but got %+v", api.ReadOnlyMany, modes) + } + if !containsAccessMode(modes, api.ReadWriteMany) { + t.Errorf("Expected mode %s, but got %+v", api.ReadWriteMany, modes) + } + + modes = GetAccessModesFromString("RWO,ROX,RWX") + if !containsAccessMode(modes, api.ReadOnlyMany) { + t.Errorf("Expected mode %s, but got %+v", api.ReadOnlyMany, modes) + } + if !containsAccessMode(modes, api.ReadWriteMany) { + t.Errorf("Expected mode %s, but got %+v", api.ReadWriteMany, modes) + } +} + +func TestRemoveDuplicateAccessModes(t *testing.T) { + modes := []api.PersistentVolumeAccessMode{ + api.ReadWriteOnce, api.ReadOnlyMany, api.ReadOnlyMany, api.ReadOnlyMany, + } + modes = removeDuplicateAccessModes(modes) + if len(modes) != 2 { + t.Errorf("Expected 2 distinct modes in set but found %v", len(modes)) + } +} + +func TestNodeSelectorRequirementsAsSelector(t *testing.T) { + matchExpressions := []api.NodeSelectorRequirement{{ + Key: "foo", + Operator: api.NodeSelectorOpIn, + Values: []string{"bar", "baz"}, + }} + mustParse := func(s string) labels.Selector { + out, e := labels.Parse(s) + if e != nil { + panic(e) + } + return out + } + tc := []struct { + in []api.NodeSelectorRequirement + out labels.Selector + expectErr bool + }{ + {in: nil, out: labels.Nothing()}, + {in: []api.NodeSelectorRequirement{}, out: labels.Nothing()}, + { + in: matchExpressions, + out: mustParse("foo in (baz,bar)"), + }, + { + in: []api.NodeSelectorRequirement{{ + Key: "foo", + Operator: api.NodeSelectorOpExists, + Values: []string{"bar", "baz"}, + }}, + expectErr: true, + }, + { + in: []api.NodeSelectorRequirement{{ + Key: "foo", + Operator: api.NodeSelectorOpGt, + Values: []string{"1"}, + }}, + out: mustParse("foo>1"), + }, + { + in: []api.NodeSelectorRequirement{{ + Key: "bar", + Operator: api.NodeSelectorOpLt, + Values: []string{"7"}, + }}, + out: mustParse("bar<7"), + }, + } + + for i, tc := range tc { + out, err := NodeSelectorRequirementsAsSelector(tc.in) + if err == nil && tc.expectErr { + t.Errorf("[%v]expected error but got none.", i) + } + if err != nil && !tc.expectErr { + t.Errorf("[%v]did not expect error but got: %v", i, err) + } + if !reflect.DeepEqual(out, tc.out) { + t.Errorf("[%v]expected:\n\t%+v\nbut got:\n\t%+v", i, tc.out, out) + } + } +} + +func TestSysctlsFromPodAnnotation(t *testing.T) { + type Test struct { + annotation string + expectValue []api.Sysctl + expectErr bool + } + for i, test := range []Test{ + { + annotation: "", + expectValue: nil, + }, + { + annotation: "foo.bar", + expectErr: true, + }, + { + annotation: "=123", + expectErr: true, + }, + { + annotation: "foo.bar=", + expectValue: []api.Sysctl{{Name: "foo.bar", Value: ""}}, + }, + { + annotation: "foo.bar=42", + expectValue: []api.Sysctl{{Name: "foo.bar", Value: "42"}}, + }, + { + annotation: "foo.bar=42,", + expectErr: true, + }, + { + annotation: "foo.bar=42,abc.def=1", + expectValue: []api.Sysctl{{Name: "foo.bar", Value: "42"}, {Name: "abc.def", Value: "1"}}, + }, + } { + sysctls, err := SysctlsFromPodAnnotation(test.annotation) + if test.expectErr && err == nil { + t.Errorf("[%v]expected error but got none", i) + } else if !test.expectErr && err != nil { + t.Errorf("[%v]did not expect error but got: %v", i, err) + } else if !reflect.DeepEqual(sysctls, test.expectValue) { + t.Errorf("[%v]expect value %v but got %v", i, test.expectValue, sysctls) + } + } +} + +// TODO: remove when alpha support for topology constraints is removed +func TestGetNodeAffinityFromAnnotations(t *testing.T) { + testCases := []struct { + annotations map[string]string + expectErr bool + }{ + { + annotations: nil, + expectErr: false, + }, + { + annotations: map[string]string{}, + expectErr: false, + }, + { + annotations: map[string]string{ + api.AlphaStorageNodeAffinityAnnotation: `{ + "requiredDuringSchedulingIgnoredDuringExecution": { + "nodeSelectorTerms": [ + { "matchExpressions": [ + { "key": "test-key1", + "operator": "In", + "values": ["test-value1", "test-value2"] + }, + { "key": "test-key2", + "operator": "In", + "values": ["test-value1", "test-value2"] + } + ]} + ]} + }`, + }, + expectErr: false, + }, + { + annotations: map[string]string{ + api.AlphaStorageNodeAffinityAnnotation: `[{ + "requiredDuringSchedulingIgnoredDuringExecution": { + "nodeSelectorTerms": [ + { "matchExpressions": [ + { "key": "test-key1", + "operator": "In", + "values": ["test-value1", "test-value2"] + }, + { "key": "test-key2", + "operator": "In", + "values": ["test-value1", "test-value2"] + } + ]} + ]} + }]`, + }, + expectErr: true, + }, + { + annotations: map[string]string{ + api.AlphaStorageNodeAffinityAnnotation: `{ + "requiredDuringSchedulingIgnoredDuringExecution": { + "nodeSelectorTerms": + "matchExpressions": [ + { "key": "test-key1", + "operator": "In", + "values": ["test-value1", "test-value2"] + }, + { "key": "test-key2", + "operator": "In", + "values": ["test-value1", "test-value2"] + } + ]} + } + }`, + }, + expectErr: true, + }, + } + + for i, tc := range testCases { + _, err := GetStorageNodeAffinityFromAnnotation(tc.annotations) + if err == nil && tc.expectErr { + t.Errorf("[%v]expected error but got none.", i) + } + if err != nil && !tc.expectErr { + t.Errorf("[%v]did not expect error but got: %v", i, err) + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/helper/qos/BUILD b/vendor/k8s.io/client-go/pkg/api/helper/qos/BUILD new file mode 100644 index 000000000..2fe3b66df --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/helper/qos/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["qos.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/helper/qos/qos.go b/vendor/k8s.io/client-go/pkg/api/helper/qos/qos.go new file mode 100644 index 000000000..adc19c68b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/helper/qos/qos.go @@ -0,0 +1,94 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// NOTE: DO NOT use those helper functions through client-go, the +// package path will be changed in the future. +package qos + +import ( + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" +) + +// supportedComputeResources is the list of compute resources for with QoS is supported. +var supportedQoSComputeResources = sets.NewString(string(api.ResourceCPU), string(api.ResourceMemory)) + +// GetPodQOS returns the QoS class of a pod. +// A pod is besteffort if none of its containers have specified any requests or limits. +// A pod is guaranteed only when requests and limits are specified for all the containers and they are equal. +// A pod is burstable if limits and requests do not match across all containers. +func GetPodQOS(pod *api.Pod) api.PodQOSClass { + requests := api.ResourceList{} + limits := api.ResourceList{} + zeroQuantity := resource.MustParse("0") + isGuaranteed := true + for _, container := range pod.Spec.Containers { + // process requests + for name, quantity := range container.Resources.Requests { + if !supportedQoSComputeResources.Has(string(name)) { + continue + } + if quantity.Cmp(zeroQuantity) == 1 { + delta := quantity.Copy() + if _, exists := requests[name]; !exists { + requests[name] = *delta + } else { + delta.Add(requests[name]) + requests[name] = *delta + } + } + } + // process limits + qosLimitsFound := sets.NewString() + for name, quantity := range container.Resources.Limits { + if !supportedQoSComputeResources.Has(string(name)) { + continue + } + if quantity.Cmp(zeroQuantity) == 1 { + qosLimitsFound.Insert(string(name)) + delta := quantity.Copy() + if _, exists := limits[name]; !exists { + limits[name] = *delta + } else { + delta.Add(limits[name]) + limits[name] = *delta + } + } + } + + if len(qosLimitsFound) != len(supportedQoSComputeResources) { + isGuaranteed = false + } + } + if len(requests) == 0 && len(limits) == 0 { + return api.PodQOSBestEffort + } + // Check is requests match limits for all resources. + if isGuaranteed { + for name, req := range requests { + if lim, exists := limits[name]; !exists || lim.Cmp(req) != 0 { + isGuaranteed = false + break + } + } + } + if isGuaranteed && + len(requests) == len(limits) { + return api.PodQOSGuaranteed + } + return api.PodQOSBurstable +} diff --git a/vendor/k8s.io/client-go/pkg/api/install/BUILD b/vendor/k8s.io/client-go/pkg/api/install/BUILD new file mode 100644 index 000000000..8580df6f5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/install/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/install/OWNERS b/vendor/k8s.io/client-go/pkg/api/install/OWNERS new file mode 100755 index 000000000..46b9cbbd3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/install/OWNERS @@ -0,0 +1,10 @@ +reviewers: +- lavalamp +- smarterclayton +- deads2k +- caesarxuchao +- liggitt +- nikhiljindal +- dims +- david-mcmahon +- feihujiang diff --git a/vendor/k8s.io/client-go/pkg/api/install/install.go b/vendor/k8s.io/client-go/pkg/api/install/install.go new file mode 100644 index 000000000..1b9553b70 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/install/install.go @@ -0,0 +1,70 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the v1 monolithic api, making it available as an +// option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: api.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/api", + AddInternalObjectsToScheme: api.AddToScheme, + RootScopedKinds: sets.NewString( + "Node", + "Namespace", + "PersistentVolume", + "ComponentStatus", + ), + IgnoredKinds: sets.NewString( + "ListOptions", + "DeleteOptions", + "Status", + "PodLogOptions", + "PodExecOptions", + "PodAttachOptions", + "PodPortForwardOptions", + "PodProxyOptions", + "NodeProxyOptions", + "ServiceProxyOptions", + "ThirdPartyResource", + "ThirdPartyResourceData", + "ThirdPartyResourceList", + ), + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/json.go b/vendor/k8s.io/client-go/pkg/api/json.go new file mode 100644 index 000000000..3a6e04c18 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/json.go @@ -0,0 +1,28 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import "encoding/json" + +// This file implements json marshaling/unmarshaling interfaces on objects that are currently marshaled into annotations +// to prevent anyone from marshaling these internal structs. + +var _ = json.Marshaler(&AvoidPods{}) +var _ = json.Unmarshaler(&AvoidPods{}) + +func (AvoidPods) MarshalJSON() ([]byte, error) { panic("do not marshal internal struct") } +func (*AvoidPods) UnmarshalJSON([]byte) error { panic("do not unmarshal to internal struct") } diff --git a/vendor/k8s.io/client-go/pkg/api/objectreference.go b/vendor/k8s.io/client-go/pkg/api/objectreference.go new file mode 100644 index 000000000..b36ecab27 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/objectreference.go @@ -0,0 +1,34 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +//TODO: consider making these methods functions, because we don't want helper +//functions in the k8s.io/api repo. + +package api + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func (obj *ObjectReference) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} + +func (obj *ObjectReference) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *ObjectReference) GetObjectKind() schema.ObjectKind { return obj } diff --git a/vendor/k8s.io/client-go/pkg/api/register.go b/vendor/k8s.io/client-go/pkg/api/register.go new file mode 100644 index 000000000..5f261bdfb --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/register.go @@ -0,0 +1,123 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "os" + + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" +) + +// GroupFactoryRegistry is the APIGroupFactoryRegistry (overlaps a bit with Registry, see comments in package for details) +var GroupFactoryRegistry = make(announced.APIGroupFactoryRegistry) + +// Registry is an instance of an API registry. This is an interim step to start removing the idea of a global +// API registry. +var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS")) + +// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. +// NOTE: If you are copying this file to start a new api group, STOP! Copy the +// extensions group instead. This Scheme is special and should appear ONLY in +// the api group, unless you really know what you're doing. +// TODO(lavalamp): make the above error impossible. +var Scheme = runtime.NewScheme() + +// Codecs provides access to encoding and decoding for the scheme +var Codecs = serializer.NewCodecFactory(Scheme) + +// GroupName is the group name use in this package +const GroupName = "" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// ParameterCodec handles versioning of objects that are converted to query parameters. +var ParameterCodec = runtime.NewParameterCodec(Scheme) + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + if err := scheme.AddIgnoredConversionType(&metav1.TypeMeta{}, &metav1.TypeMeta{}); err != nil { + return err + } + scheme.AddKnownTypes(SchemeGroupVersion, + &Pod{}, + &PodList{}, + &PodStatusResult{}, + &PodTemplate{}, + &PodTemplateList{}, + &ReplicationControllerList{}, + &ReplicationController{}, + &ServiceList{}, + &Service{}, + &ServiceProxyOptions{}, + &NodeList{}, + &Node{}, + &NodeProxyOptions{}, + &Endpoints{}, + &EndpointsList{}, + &Binding{}, + &Event{}, + &EventList{}, + &List{}, + &LimitRange{}, + &LimitRangeList{}, + &ResourceQuota{}, + &ResourceQuotaList{}, + &Namespace{}, + &NamespaceList{}, + &ServiceAccount{}, + &ServiceAccountList{}, + &Secret{}, + &SecretList{}, + &PersistentVolume{}, + &PersistentVolumeList{}, + &PersistentVolumeClaim{}, + &PersistentVolumeClaimList{}, + &PodAttachOptions{}, + &PodLogOptions{}, + &PodExecOptions{}, + &PodPortForwardOptions{}, + &PodProxyOptions{}, + &ComponentStatus{}, + &ComponentStatusList{}, + &SerializedReference{}, + &RangeAllocation{}, + &ConfigMap{}, + &ConfigMapList{}, + ) + + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/api/resource.go b/vendor/k8s.io/client-go/pkg/api/resource.go new file mode 100644 index 000000000..27b7fd665 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/resource.go @@ -0,0 +1,62 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/apimachinery/pkg/api/resource" +) + +func (self ResourceName) String() string { + return string(self) +} + +// Returns the CPU limit if specified. +func (self *ResourceList) Cpu() *resource.Quantity { + if val, ok := (*self)[ResourceCPU]; ok { + return &val + } + return &resource.Quantity{Format: resource.DecimalSI} +} + +// Returns the Memory limit if specified. +func (self *ResourceList) Memory() *resource.Quantity { + if val, ok := (*self)[ResourceMemory]; ok { + return &val + } + return &resource.Quantity{Format: resource.BinarySI} +} + +func (self *ResourceList) Pods() *resource.Quantity { + if val, ok := (*self)[ResourcePods]; ok { + return &val + } + return &resource.Quantity{} +} + +func (self *ResourceList) NvidiaGPU() *resource.Quantity { + if val, ok := (*self)[ResourceNvidiaGPU]; ok { + return &val + } + return &resource.Quantity{} +} + +func (self *ResourceList) StorageOverlay() *resource.Quantity { + if val, ok := (*self)[ResourceStorageOverlay]; ok { + return &val + } + return &resource.Quantity{} +} diff --git a/vendor/k8s.io/client-go/pkg/api/taint.go b/vendor/k8s.io/client-go/pkg/api/taint.go new file mode 100644 index 000000000..173e4e601 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/taint.go @@ -0,0 +1,36 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +//TODO: consider making these methods functions, because we don't want helper +//functions in the k8s.io/api repo. + +package api + +import "fmt" + +// MatchTaint checks if the taint matches taintToMatch. Taints are unique by key:effect, +// if the two taints have same key:effect, regard as they match. +func (t *Taint) MatchTaint(taintToMatch Taint) bool { + return t.Key == taintToMatch.Key && t.Effect == taintToMatch.Effect +} + +// taint.ToString() converts taint struct to string in format key=value:effect or key:effect. +func (t *Taint) ToString() string { + if len(t.Value) == 0 { + return fmt.Sprintf("%v:%v", t.Key, t.Effect) + } + return fmt.Sprintf("%v=%v:%v", t.Key, t.Value, t.Effect) +} diff --git a/vendor/k8s.io/client-go/pkg/api/toleration.go b/vendor/k8s.io/client-go/pkg/api/toleration.go new file mode 100644 index 000000000..edb73b74e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/toleration.go @@ -0,0 +1,30 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +//TODO: consider making these methods functions, because we don't want helper +//functions in the k8s.io/api repo. + +package api + +// MatchToleration checks if the toleration matches tolerationToMatch. Tolerations are unique by , +// if the two tolerations have same combination, regard as they match. +// TODO: uniqueness check for tolerations in api validations. +func (t *Toleration) MatchToleration(tolerationToMatch *Toleration) bool { + return t.Key == tolerationToMatch.Key && + t.Effect == tolerationToMatch.Effect && + t.Operator == tolerationToMatch.Operator && + t.Value == tolerationToMatch.Value +} diff --git a/vendor/k8s.io/client-go/pkg/api/types.go b/vendor/k8s.io/client-go/pkg/api/types.go new file mode 100644 index 000000000..b59f7202e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/types.go @@ -0,0 +1,3989 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// Common string formats +// --------------------- +// Many fields in this API have formatting requirements. The commonly used +// formats are defined here. +// +// C_IDENTIFIER: This is a string that conforms to the definition of an "identifier" +// in the C language. This is captured by the following regex: +// [A-Za-z_][A-Za-z0-9_]* +// This defines the format, but not the length restriction, which should be +// specified at the definition of any field of this type. +// +// DNS_LABEL: This is a string, no more than 63 characters long, that conforms +// to the definition of a "label" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])? +// +// DNS_SUBDOMAIN: This is a string, no more than 253 characters long, that conforms +// to the definition of a "subdomain" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)* +// or more simply: +// DNS_LABEL(\.DNS_LABEL)* +// +// IANA_SVC_NAME: This is a string, no more than 15 characters long, that +// conforms to the definition of IANA service name in RFC 6335. +// It must contains at least one letter [a-z] and it must contains only [a-z0-9-]. +// Hypens ('-') cannot be leading or trailing character of the string +// and cannot be adjacent to other hyphens. + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +// DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon. +type ObjectMeta struct { + // Name is unique within a namespace. Name is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // +optional + Name string + + // GenerateName indicates that the name should be made unique by the server prior to persisting + // it. A non-empty value for the field indicates the name will be made unique (and the name + // returned to the client will be different than the name passed). The value of this field will + // be combined with a unique suffix on the server if the Name field has not been provided. + // The provided value must be valid within the rules for Name, and may be truncated by the length + // of the suffix required to make the value unique on the server. + // + // If this field is specified, and Name is not present, the server will NOT return a 409 if the + // generated name exists - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // +optional + GenerateName string + + // Namespace defines the space within which name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // +optional + Namespace string + + // SelfLink is a URL representing this object. + // +optional + SelfLink string + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // +optional + UID types.UID + + // An opaque value that represents the version of this resource. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and values may only be valid for a particular + // resource or set of resources. Only servers will generate resource versions. + // +optional + ResourceVersion string + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + // +optional + Generation int64 + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // +optional + CreationTimestamp metav1.Time + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource is expected to be deleted (no longer visible + // from resource lists, and not reachable by name) after the time in this field. Once set, + // this value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + DeletionTimestamp *metav1.Time + + // DeletionGracePeriodSeconds records the graceful deletion value set when graceful deletion + // was requested. Represents the most recent grace period, and may only be shortened once set. + // +optional + DeletionGracePeriodSeconds *int64 + + // Labels are key value pairs that may be used to scope and select individual resources. + // Label keys are of the form: + // label-key ::= prefixed-name | name + // prefixed-name ::= prefix '/' name + // prefix ::= DNS_SUBDOMAIN + // name ::= DNS_LABEL + // The prefix is optional. If the prefix is not specified, the key is assumed to be private + // to the user. Other system components that wish to use labels must specify a prefix. The + // "kubernetes.io/" prefix is reserved for use by kubernetes components. + // +optional + Labels map[string]string + + // Annotations are unstructured key value data stored with a resource that may be set by + // external tooling. They are not queryable and should be preserved when modifying + // objects. Annotation keys have the same formatting restrictions as Label keys. See the + // comments on Labels for details. + // +optional + Annotations map[string]string + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + // +optional + OwnerReferences []metav1.OwnerReference + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + Initializers *metav1.Initializers + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + // +optional + Finalizers []string + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + // +optional + ClusterName string +} + +const ( + // NamespaceDefault means the object is in the default namespace which is applied when not specified by clients + NamespaceDefault string = "default" + // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces + NamespaceAll string = "" + // NamespaceNone is the argument for a context when there is no namespace. + NamespaceNone string = "" + // NamespaceSystem is the system namespace where we place system components. + NamespaceSystem string = "kube-system" + // NamespacePublic is the namespace where we place public info (ConfigMaps) + NamespacePublic string = "kube-public" + // TerminationMessagePathDefault means the default path to capture the application termination message running in a container + TerminationMessagePathDefault string = "/dev/termination-log" +) + +// Volume represents a named volume in a pod that may be accessed by any containers in the pod. +type Volume struct { + // Required: This must be a DNS_LABEL. Each volume in a pod must have + // a unique name. + Name string + // The VolumeSource represents the location and type of a volume to mount. + // This is optional for now. If not specified, the Volume is implied to be an EmptyDir. + // This implied behavior is deprecated and will be removed in a future version. + // +optional + VolumeSource +} + +// VolumeSource represents the source location of a volume to mount. +// Only one of its members may be specified. +type VolumeSource struct { + // HostPath represents file or directory on the host machine that is + // directly exposed to the container. This is generally used for system + // agents or other privileged things that are allowed to see the host + // machine. Most containers will NOT need this. + // --- + // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not + // mount host directories as read/write. + // +optional + HostPath *HostPathVolumeSource + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // +optional + EmptyDir *EmptyDirVolumeSource + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // +optional + GCEPersistentDisk *GCEPersistentDiskVolumeSource + // AWSElasticBlockStore represents an AWS EBS disk that is attached to a + // kubelet's host machine and then exposed to the pod. + // +optional + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource + // GitRepo represents a git repository at a particular revision. + // +optional + GitRepo *GitRepoVolumeSource + // Secret represents a secret that should populate this volume. + // +optional + Secret *SecretVolumeSource + // NFS represents an NFS mount on the host that shares a pod's lifetime + // +optional + NFS *NFSVolumeSource + // ISCSIVolumeSource represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // +optional + ISCSI *ISCSIVolumeSource + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime + // +optional + Glusterfs *GlusterfsVolumeSource + // PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace + // +optional + PersistentVolumeClaim *PersistentVolumeClaimVolumeSource + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime + // +optional + RBD *RBDVolumeSource + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + Quobyte *QuobyteVolumeSource + + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. + // +optional + FlexVolume *FlexVolumeSource + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // +optional + Cinder *CinderVolumeSource + + // CephFS represents a Cephfs mount on the host that shares a pod's lifetime + // +optional + CephFS *CephFSVolumeSource + + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + // +optional + Flocker *FlockerVolumeSource + + // DownwardAPI represents metadata about the pod that should populate this volume + // +optional + DownwardAPI *DownwardAPIVolumeSource + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + FC *FCVolumeSource + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + AzureFile *AzureFileVolumeSource + // ConfigMap represents a configMap that should populate this volume + // +optional + ConfigMap *ConfigMapVolumeSource + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + VsphereVolume *VsphereVirtualDiskVolumeSource + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + AzureDisk *AzureDiskVolumeSource + // PhotonPersistentDisk represents a Photon Controller persistent disk attached and mounted on kubelets host machine + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource + // Items for all in one resources secrets, configmaps, and downward API + Projected *ProjectedVolumeSource + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + PortworxVolume *PortworxVolumeSource + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + ScaleIO *ScaleIOVolumeSource + // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod + // +optional + StorageOS *StorageOSVolumeSource +} + +// Similar to VolumeSource but meant for the administrator who creates PVs. +// Exactly one of its members must be set. +type PersistentVolumeSource struct { + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // +optional + GCEPersistentDisk *GCEPersistentDiskVolumeSource + // AWSElasticBlockStore represents an AWS EBS disk that is attached to a + // kubelet's host machine and then exposed to the pod. + // +optional + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource + // HostPath represents a directory on the host. + // Provisioned by a developer or tester. + // This is useful for single-node development and testing only! + // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. + // +optional + HostPath *HostPathVolumeSource + // Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod + // +optional + Glusterfs *GlusterfsVolumeSource + // NFS represents an NFS mount on the host that shares a pod's lifetime + // +optional + NFS *NFSVolumeSource + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime + // +optional + RBD *RBDVolumeSource + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + Quobyte *QuobyteVolumeSource + // ISCSIVolumeSource represents an ISCSI resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // +optional + ISCSI *ISCSIVolumeSource + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. + // +optional + FlexVolume *FlexVolumeSource + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // +optional + Cinder *CinderVolumeSource + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + CephFS *CephFSVolumeSource + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + FC *FCVolumeSource + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + // +optional + Flocker *FlockerVolumeSource + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + AzureFile *AzureFileVolumeSource + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + VsphereVolume *VsphereVirtualDiskVolumeSource + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + AzureDisk *AzureDiskVolumeSource + // PhotonPersistentDisk represents a Photon Controller persistent disk attached and mounted on kubelets host machine + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + PortworxVolume *PortworxVolumeSource + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + ScaleIO *ScaleIOVolumeSource + // Local represents directly-attached storage with node affinity + // +optional + Local *LocalVolumeSource + // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod + // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md + // +optional + StorageOS *StorageOSPersistentVolumeSource +} + +type PersistentVolumeClaimVolumeSource struct { + // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume + ClaimName string + // Optional: Defaults to false (read/write). ReadOnly here + // will force the ReadOnly setting in VolumeMounts + // +optional + ReadOnly bool +} + +const ( + // BetaStorageClassAnnotation represents the beta/previous StorageClass annotation. + // It's currently still used and will be held for backwards compatibility + BetaStorageClassAnnotation = "volume.beta.kubernetes.io/storage-class" + + // MountOptionAnnotation defines mount option annotation used in PVs + MountOptionAnnotation = "volume.beta.kubernetes.io/mount-options" + + // AlphaStorageNodeAffinityAnnotation defines node affinity policies for a PersistentVolume. + // Value is a string of the json representation of type NodeAffinity + AlphaStorageNodeAffinityAnnotation = "volume.alpha.kubernetes.io/node-affinity" +) + +// +genclient=true +// +nonNamespaced=true + +type PersistentVolume struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + //Spec defines a persistent volume owned by the cluster + // +optional + Spec PersistentVolumeSpec + + // Status represents the current information about persistent volume. + // +optional + Status PersistentVolumeStatus +} + +type PersistentVolumeSpec struct { + // Resources represents the actual resources of the volume + Capacity ResourceList + // Source represents the location and type of a volume to mount. + PersistentVolumeSource + // AccessModes contains all ways the volume can be mounted + // +optional + AccessModes []PersistentVolumeAccessMode + // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // ClaimRef is expected to be non-nil when bound. + // claim.VolumeName is the authoritative bind between PV and PVC. + // When set to non-nil value, PVC.Spec.Selector of the referenced PVC is + // ignored, i.e. labels of this PV do not need to match PVC selector. + // +optional + ClaimRef *ObjectReference + // Optional: what happens to a persistent volume when released from its claim. + // +optional + PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy + // Name of StorageClass to which this persistent volume belongs. Empty value + // means that this volume does not belong to any StorageClass. + // +optional + StorageClassName string +} + +// PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes +type PersistentVolumeReclaimPolicy string + +const ( + // PersistentVolumeReclaimRecycle means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. + // The volume plugin must support Recycling. + PersistentVolumeReclaimRecycle PersistentVolumeReclaimPolicy = "Recycle" + // PersistentVolumeReclaimDelete means the volume will be deleted from Kubernetes on release from its claim. + // The volume plugin must support Deletion. + PersistentVolumeReclaimDelete PersistentVolumeReclaimPolicy = "Delete" + // PersistentVolumeReclaimRetain means the volume will be left in its current phase (Released) for manual reclamation by the administrator. + // The default policy is Retain. + PersistentVolumeReclaimRetain PersistentVolumeReclaimPolicy = "Retain" +) + +type PersistentVolumeStatus struct { + // Phase indicates if a volume is available, bound to a claim, or released by a claim + // +optional + Phase PersistentVolumePhase + // A human-readable message indicating details about why the volume is in this state. + // +optional + Message string + // Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI + // +optional + Reason string +} + +type PersistentVolumeList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + Items []PersistentVolume +} + +// +genclient=true + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +type PersistentVolumeClaim struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the volume requested by a pod author + // +optional + Spec PersistentVolumeClaimSpec + + // Status represents the current information about a claim + // +optional + Status PersistentVolumeClaimStatus +} + +type PersistentVolumeClaimList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + Items []PersistentVolumeClaim +} + +// PersistentVolumeClaimSpec describes the common attributes of storage devices +// and allows a Source for provider-specific attributes +type PersistentVolumeClaimSpec struct { + // Contains the types of access modes required + // +optional + AccessModes []PersistentVolumeAccessMode + // A label query over volumes to consider for binding. This selector is + // ignored when VolumeName is set + // +optional + Selector *metav1.LabelSelector + // Resources represents the minimum resources required + // +optional + Resources ResourceRequirements + // VolumeName is the binding reference to the PersistentVolume backing this + // claim. When set to non-empty value Selector is not evaluated + // +optional + VolumeName string + // Name of the StorageClass required by the claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 + // +optional + StorageClassName *string +} + +type PersistentVolumeClaimStatus struct { + // Phase represents the current phase of PersistentVolumeClaim + // +optional + Phase PersistentVolumeClaimPhase + // AccessModes contains all ways the volume backing the PVC can be mounted + // +optional + AccessModes []PersistentVolumeAccessMode + // Represents the actual resources of the underlying volume + // +optional + Capacity ResourceList +} + +type PersistentVolumeAccessMode string + +const ( + // can be mounted read/write mode to exactly 1 host + ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce" + // can be mounted in read-only mode to many hosts + ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany" + // can be mounted in read/write mode to many hosts + ReadWriteMany PersistentVolumeAccessMode = "ReadWriteMany" +) + +type PersistentVolumePhase string + +const ( + // used for PersistentVolumes that are not available + VolumePending PersistentVolumePhase = "Pending" + // used for PersistentVolumes that are not yet bound + // Available volumes are held by the binder and matched to PersistentVolumeClaims + VolumeAvailable PersistentVolumePhase = "Available" + // used for PersistentVolumes that are bound + VolumeBound PersistentVolumePhase = "Bound" + // used for PersistentVolumes where the bound PersistentVolumeClaim was deleted + // released volumes must be recycled before becoming available again + // this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource + VolumeReleased PersistentVolumePhase = "Released" + // used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim + VolumeFailed PersistentVolumePhase = "Failed" +) + +type PersistentVolumeClaimPhase string + +const ( + // used for PersistentVolumeClaims that are not yet bound + ClaimPending PersistentVolumeClaimPhase = "Pending" + // used for PersistentVolumeClaims that are bound + ClaimBound PersistentVolumeClaimPhase = "Bound" + // used for PersistentVolumeClaims that lost their underlying + // PersistentVolume. The claim was bound to a PersistentVolume and this + // volume does not exist any longer and all data on it was lost. + ClaimLost PersistentVolumeClaimPhase = "Lost" +) + +// Represents a host path mapped into a pod. +// Host path volumes do not support ownership management or SELinux relabeling. +type HostPathVolumeSource struct { + Path string +} + +// Represents an empty directory for a pod. +// Empty directory volumes support ownership management and SELinux relabeling. +type EmptyDirVolumeSource struct { + // TODO: Longer term we want to represent the selection of underlying + // media more like a scheduling problem - user says what traits they + // need, we give them a backing store that satisfies that. For now + // this will cover the most common needs. + // Optional: what type of storage medium should back this directory. + // The default is "" which means to use the node's default medium. + // +optional + Medium StorageMedium + // Total amount of local storage required for this EmptyDir volume. + // The size limit is also applicable for memory medium. + // The maximum usage on memory medium EmptyDir would be the minimum value between + // the SizeLimit specified here and the sum of memory limits of all containers in a pod. + // The default is nil which means that the limit is undefined. + // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir + // +optional + SizeLimit resource.Quantity +} + +// StorageMedium defines ways that storage can be allocated to a volume. +type StorageMedium string + +const ( + StorageMediumDefault StorageMedium = "" // use whatever the default is for the node + StorageMediumMemory StorageMedium = "Memory" // use memory (tmpfs) +) + +// Protocol defines network protocols supported for things like container ports. +type Protocol string + +const ( + // ProtocolTCP is the TCP protocol. + ProtocolTCP Protocol = "TCP" + // ProtocolUDP is the UDP protocol. + ProtocolUDP Protocol = "UDP" +) + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must +// also be in the same GCE project and zone as the kubelet. A GCE PD +// can only be mounted as read/write once or read-only many times. GCE +// PDs support ownership management and SELinux relabeling. +type GCEPersistentDiskVolumeSource struct { + // Unique name of the PD resource. Used to identify the disk in GCE + PDName string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string + // Optional: Partition on the disk to mount. + // If omitted, kubelet will attempt to mount the device name. + // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty. + // +optional + Partition int32 + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents an ISCSI disk. +// ISCSI volumes can only be mounted as read/write once. +// ISCSI volumes support ownership management and SELinux relabeling. +type ISCSIVolumeSource struct { + // Required: iSCSI target portal + // the portal is either an IP or ip_addr:port if port is other than default (typically TCP ports 860 and 3260) + // +optional + TargetPortal string + // Required: target iSCSI Qualified Name + // +optional + IQN string + // Required: iSCSI target lun number + // +optional + Lun int32 + // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. + // +optional + ISCSIInterface string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool + // Optional: list of iSCSI target portal ips for high availability. + // the portal is either an IP or ip_addr:port if port is other than default (typically TCP ports 860 and 3260) + // +optional + Portals []string + // Optional: whether support iSCSI Discovery CHAP authentication + // +optional + DiscoveryCHAPAuth bool + // Optional: whether support iSCSI Session CHAP authentication + // +optional + SessionCHAPAuth bool + // Optional: CHAP secret for iSCSI target and initiator authentication. + // The secret is used if either DiscoveryCHAPAuth or SessionCHAPAuth is true + // +optional + SecretRef *LocalObjectReference +} + +// Represents a Fibre Channel volume. +// Fibre Channel volumes can only be mounted as read/write once. +// Fibre Channel volumes support ownership management and SELinux relabeling. +type FCVolumeSource struct { + // Required: FC target worldwide names (WWNs) + TargetWWNs []string + // Required: FC target lun number + Lun *int32 + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// FlexVolume represents a generic volume resource that is +// provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. +type FlexVolumeSource struct { + // Driver is the name of the driver to use for this volume. + Driver string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + // +optional + FSType string + // Optional: SecretRef is reference to the secret object containing + // sensitive information to pass to the plugin scripts. This may be + // empty if no secret object is specified. If the secret object + // contains more than one secret, all secrets are passed to the plugin + // scripts. + // +optional + SecretRef *LocalObjectReference + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool + // Optional: Extra driver options if any. + // +optional + Options map[string]string +} + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk +// must also be in the same AWS zone as the kubelet. An AWS EBS disk +// can only be mounted as read/write once. AWS EBS volumes support +// ownership management and SELinux relabeling. +type AWSElasticBlockStoreVolumeSource struct { + // Unique id of the persistent disk resource. Used to identify the disk in AWS + VolumeID string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string + // Optional: Partition on the disk to mount. + // If omitted, kubelet will attempt to mount the device name. + // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty. + // +optional + Partition int32 + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents a volume that is populated with the contents of a git repository. +// Git repo volumes do not support ownership management. +// Git repo volumes support SELinux relabeling. +type GitRepoVolumeSource struct { + // Repository URL + Repository string + // Commit hash, this is optional + // +optional + Revision string + // Clone target, this is optional + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + // git repository. Otherwise, if specified, the volume will contain the git repository in + // the subdirectory with the given name. + // +optional + Directory string + // TODO: Consider credentials here. +} + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume +// as files using the keys in the Data field as the file names. +// Secret volumes support ownership management and SELinux relabeling. +type SecretVolumeSource struct { + // Name of the secret in the pod's namespace to use. + // +optional + SecretName string + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 + // Specify whether the Secret or its key must be defined + // +optional + Optional *bool +} + +// Adapts a secret into a projected volume. +// +// The contents of the target Secret's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names. +// Note that this is identical to a secret volume source without the default +// mode. +type SecretProjection struct { + LocalObjectReference + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath + // Specify whether the Secret or its key must be defined + // +optional + Optional *bool +} + +// Represents an NFS mount that lasts the lifetime of a pod. +// NFS volumes do not support ownership management or SELinux relabeling. +type NFSVolumeSource struct { + // Server is the hostname or IP address of the NFS server + Server string + + // Path is the exported NFS share + Path string + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the NFS export to be mounted with read-only permissions + // +optional + ReadOnly bool +} + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// Quobyte volumes do not support ownership management or SELinux relabeling. +type QuobyteVolumeSource struct { + // Registry represents a single or multiple Quobyte Registry services + // specified as a string as host:port pair (multiple entries are separated with commas) + // which acts as the central registry for volumes + Registry string + + // Volume is a string that references an already created Quobyte volume by name. + Volume string + + // Defaults to false (read/write). ReadOnly here will force + // the Quobyte to be mounted with read-only permissions + // +optional + ReadOnly bool + + // User to map volume access to + // Defaults to the root user + // +optional + User string + + // Group to map volume access to + // Default is no group + // +optional + Group string +} + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// Glusterfs volumes do not support ownership management or SELinux relabeling. +type GlusterfsVolumeSource struct { + // Required: EndpointsName is the endpoint name that details Glusterfs topology + EndpointsName string + + // Required: Path is the Glusterfs volume path + Path string + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the Glusterfs to be mounted with read-only permissions + // +optional + ReadOnly bool +} + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// RBD volumes support ownership management and SELinux relabeling. +type RBDVolumeSource struct { + // Required: CephMonitors is a collection of Ceph monitors + CephMonitors []string + // Required: RBDImage is the rados image name + RBDImage string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string + // Optional: RadosPool is the rados pool name,default is rbd + // +optional + RBDPool string + // Optional: RBDUser is the rados user name, default is admin + // +optional + RadosUser string + // Optional: Keyring is the path to key ring for RBDUser, default is /etc/ceph/keyring + // +optional + Keyring string + // Optional: SecretRef is name of the authentication secret for RBDUser, default is nil. + // +optional + SecretRef *LocalObjectReference + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents a cinder volume resource in Openstack. A Cinder volume +// must exist before mounting to a container. The volume must also be +// in the same region as the kubelet. Cinder volumes support ownership +// management and SELinux relabeling. +type CinderVolumeSource struct { + // Unique id of the volume used to identify the cinder volume + VolumeID string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFSVolumeSource struct { + // Required: Monitors is a collection of Ceph monitors + Monitors []string + // Optional: Used as the mounted root, rather than the full Ceph tree, default is / + // +optional + Path string + // Optional: User is the rados user name, default is admin + // +optional + User string + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // +optional + SecretFile string + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // +optional + SecretRef *LocalObjectReference + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents a Flocker volume mounted by the Flocker agent. +// One and only one of datasetName and datasetUUID should be set. +// Flocker volumes do not support ownership management or SELinux relabeling. +type FlockerVolumeSource struct { + // Name of the dataset stored as metadata -> name on the dataset for Flocker + // should be considered as deprecated + // +optional + DatasetName string + // UUID of the dataset. This is unique identifier of a Flocker dataset + // +optional + DatasetUUID string +} + +// Represents a volume containing downward API info. +// Downward API volumes support ownership management and SELinux relabeling. +type DownwardAPIVolumeSource struct { + // Items is a list of DownwardAPIVolume file + // +optional + Items []DownwardAPIVolumeFile + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 +} + +// Represents a single file containing information from the downward API +type DownwardAPIVolumeFile struct { + // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + Path string + // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + // +optional + FieldRef *ObjectFieldSelector + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + // +optional + ResourceFieldRef *ResourceFieldSelector + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + Mode *int32 +} + +// Represents downward API info for projecting into a projected volume. +// Note that this is identical to a downwardAPI volume source without the default +// mode. +type DownwardAPIProjection struct { + // Items is a list of DownwardAPIVolume file + // +optional + Items []DownwardAPIVolumeFile +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFileVolumeSource struct { + // the name of secret that contains Azure Storage Account Name and Key + SecretName string + // Share Name + ShareName string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents a vSphere volume resource. +type VsphereVirtualDiskVolumeSource struct { + // Path that identifies vSphere volume vmdk + VolumePath string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Storage Policy Based Management (SPBM) profile name. + // +optional + StoragePolicyName string + // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + // +optional + StoragePolicyID string +} + +// Represents a Photon Controller persistent disk resource. +type PhotonPersistentDiskVolumeSource struct { + // ID that identifies Photon Controller persistent disk + PdID string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType string +} + +// PortworxVolumeSource represents a Portworx volume resource. +type PortworxVolumeSource struct { + // VolumeID uniquely identifies a Portworx volume + VolumeID string + // FSType represents the filesystem type to mount + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +type AzureDataDiskCachingMode string +type AzureDataDiskKind string + +const ( + AzureDataDiskCachingNone AzureDataDiskCachingMode = "None" + AzureDataDiskCachingReadOnly AzureDataDiskCachingMode = "ReadOnly" + AzureDataDiskCachingReadWrite AzureDataDiskCachingMode = "ReadWrite" + + AzureSharedBlobDisk AzureDataDiskKind = "Shared" + AzureDedicatedBlobDisk AzureDataDiskKind = "Dedicated" + AzureManagedDisk AzureDataDiskKind = "Managed" +) + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +type AzureDiskVolumeSource struct { + // The Name of the data disk in the blob storage + DiskName string + // The URI of the data disk in the blob storage + DataDiskURI string + // Host Caching mode: None, Read Only, Read Write. + // +optional + CachingMode *AzureDataDiskCachingMode + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType *string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly *bool + // Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + Kind *AzureDataDiskKind +} + +// ScaleIOVolumeSource represents a persistent ScaleIO volume +type ScaleIOVolumeSource struct { + // The host address of the ScaleIO API Gateway. + Gateway string + // The name of the storage system as configured in ScaleIO. + System string + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + SecretRef *LocalObjectReference + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + SSLEnabled bool + // The name of the Protection Domain for the configured storage (defaults to "default"). + // +optional + ProtectionDomain string + // The Storage Pool associated with the protection domain (defaults to "default"). + // +optional + StoragePool string + // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // +optional + StorageMode string + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + VolumeName string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + +// Represents a StorageOS persistent volume resource. +type StorageOSVolumeSource struct { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + VolumeName string + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + VolumeNamespace string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + SecretRef *LocalObjectReference +} + +// Represents a StorageOS persistent volume resource. +type StorageOSPersistentVolumeSource struct { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + VolumeName string + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + VolumeNamespace string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + SecretRef *ObjectReference +} + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// volume as files using the keys in the Data field as the file names, unless +// the items element is populated with specific mappings of keys to paths. +// ConfigMap volumes support ownership management and SELinux relabeling. +type ConfigMapVolumeSource struct { + LocalObjectReference + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 + // Specify whether the ConfigMap or it's keys must be defined + // +optional + Optional *bool +} + +// Adapts a ConfigMap into a projected volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names, +// unless the items element is populated with specific mappings of keys to paths. +// Note that this is identical to a configmap volume source without the default +// mode. +type ConfigMapProjection struct { + LocalObjectReference + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath + // Specify whether the ConfigMap or it's keys must be defined + // +optional + Optional *bool +} + +// Represents a projected volume source +type ProjectedVolumeSource struct { + // list of volume projections + Sources []VolumeProjection + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 +} + +// Projection that may be projected along with other supported volume types +type VolumeProjection struct { + // all types below are the supported types for projection into the same volume + + // information about the secret data to project + Secret *SecretProjection + // information about the downwardAPI data to project + DownwardAPI *DownwardAPIProjection + // information about the configMap data to project + ConfigMap *ConfigMapProjection +} + +// Maps a string key to a path within a volume. +type KeyToPath struct { + // The key to project. + Key string + + // The relative path of the file to map the key to. + // May not be an absolute path. + // May not contain the path element '..'. + // May not start with the string '..'. + Path string + // Optional: mode bits to use on this file, should be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + Mode *int32 +} + +// Local represents directly-attached storage with node affinity +type LocalVolumeSource struct { + // The full path to the volume on the node + // For alpha, this path must be a directory + // Once block as a source is supported, then this path can point to a block device + Path string +} + +// ContainerPort represents a network port in a single container +type ContainerPort struct { + // Optional: If specified, this must be an IANA_SVC_NAME Each named port + // in a pod must have a unique name. + // +optional + Name string + // Optional: If specified, this must be a valid port number, 0 < x < 65536. + // If HostNetwork is specified, this must match ContainerPort. + // +optional + HostPort int32 + // Required: This must be a valid port number, 0 < x < 65536. + ContainerPort int32 + // Required: Supports "TCP" and "UDP". + // +optional + Protocol Protocol + // Optional: What host IP to bind the external port to. + // +optional + HostIP string +} + +// VolumeMount describes a mounting of a Volume within a container. +type VolumeMount struct { + // Required: This must match the Name of a Volume [above]. + Name string + // Optional: Defaults to false (read-write). + // +optional + ReadOnly bool + // Required. Must not contain ':'. + MountPath string + // Path within the volume from which the container's volume should be mounted. + // Defaults to "" (volume's root). + // +optional + SubPath string +} + +// EnvVar represents an environment variable present in a Container. +type EnvVar struct { + // Required: This must be a C_IDENTIFIER. + Name string + // Optional: no more than one of the following may be specified. + // Optional: Defaults to ""; variable references $(VAR_NAME) are expanded + // using the previous defined environment variables in the container and + // any service environment variables. If a variable cannot be resolved, + // the reference in the input string will be unchanged. The $(VAR_NAME) + // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + // references will never be expanded, regardless of whether the variable + // exists or not. + // +optional + Value string + // Optional: Specifies a source the value of this var should come from. + // +optional + ValueFrom *EnvVarSource +} + +// EnvVarSource represents a source for the value of an EnvVar. +// Only one of its fields may be set. +type EnvVarSource struct { + // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, + // spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP. + // +optional + FieldRef *ObjectFieldSelector + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + // +optional + ResourceFieldRef *ResourceFieldSelector + // Selects a key of a ConfigMap. + // +optional + ConfigMapKeyRef *ConfigMapKeySelector + // Selects a key of a secret in the pod's namespace. + // +optional + SecretKeyRef *SecretKeySelector +} + +// ObjectFieldSelector selects an APIVersioned field of an object. +type ObjectFieldSelector struct { + // Required: Version of the schema the FieldPath is written in terms of. + // If no value is specified, it will be defaulted to the APIVersion of the + // enclosing object. + APIVersion string + // Required: Path of the field to select in the specified API version + FieldPath string +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +type ResourceFieldSelector struct { + // Container name: required for volumes, optional for env vars + // +optional + ContainerName string + // Required: resource to select + Resource string + // Specifies the output format of the exposed resources, defaults to "1" + // +optional + Divisor resource.Quantity +} + +// Selects a key from a ConfigMap. +type ConfigMapKeySelector struct { + // The ConfigMap to select from. + LocalObjectReference + // The key to select. + Key string + // Specify whether the ConfigMap or it's key must be defined + // +optional + Optional *bool +} + +// SecretKeySelector selects a key of a Secret. +type SecretKeySelector struct { + // The name of the secret in the pod's namespace to select from. + LocalObjectReference + // The key of the secret to select from. Must be a valid secret key. + Key string + // Specify whether the Secret or it's key must be defined + // +optional + Optional *bool +} + +// EnvFromSource represents the source of a set of ConfigMaps +type EnvFromSource struct { + // An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // +optional + Prefix string + // The ConfigMap to select from. + //+optional + ConfigMapRef *ConfigMapEnvSource + // The Secret to select from. + //+optional + SecretRef *SecretEnvSource +} + +// ConfigMapEnvSource selects a ConfigMap to populate the environment +// variables with. +// +// The contents of the target ConfigMap's Data field will represent the +// key-value pairs as environment variables. +type ConfigMapEnvSource struct { + // The ConfigMap to select from. + LocalObjectReference + // Specify whether the ConfigMap must be defined + // +optional + Optional *bool +} + +// SecretEnvSource selects a Secret to populate the environment +// variables with. +// +// The contents of the target Secret's Data field will represent the +// key-value pairs as environment variables. +type SecretEnvSource struct { + // The Secret to select from. + LocalObjectReference + // Specify whether the Secret must be defined + // +optional + Optional *bool +} + +// HTTPHeader describes a custom header to be used in HTTP probes +type HTTPHeader struct { + // The header field name + Name string + // The header field value + Value string +} + +// HTTPGetAction describes an action based on HTTP Get requests. +type HTTPGetAction struct { + // Optional: Path to access on the HTTP server. + // +optional + Path string + // Required: Name or number of the port to access on the container. + // +optional + Port intstr.IntOrString + // Optional: Host name to connect to, defaults to the pod IP. You + // probably want to set "Host" in httpHeaders instead. + // +optional + Host string + // Optional: Scheme to use for connecting to the host, defaults to HTTP. + // +optional + Scheme URIScheme + // Optional: Custom headers to set in the request. HTTP allows repeated headers. + // +optional + HTTPHeaders []HTTPHeader +} + +// URIScheme identifies the scheme used for connection to a host for Get actions +type URIScheme string + +const ( + // URISchemeHTTP means that the scheme used will be http:// + URISchemeHTTP URIScheme = "HTTP" + // URISchemeHTTPS means that the scheme used will be https:// + URISchemeHTTPS URIScheme = "HTTPS" +) + +// TCPSocketAction describes an action based on opening a socket +type TCPSocketAction struct { + // Required: Port to connect to. + // +optional + Port intstr.IntOrString + // Optional: Host name to connect to, defaults to the pod IP. + // +optional + Host string +} + +// ExecAction describes a "run in container" action. +type ExecAction struct { + // Command is the command line to execute inside the container, the working directory for the + // command is root ('/') in the container's filesystem. The command is simply exec'd, it is + // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + // a shell, you need to explicitly call out to that shell. + // +optional + Command []string +} + +// Probe describes a health check to be performed against a container to determine whether it is +// alive or ready to receive traffic. +type Probe struct { + // The action taken to determine the health of a container + Handler + // Length of time before health checking is activated. In seconds. + // +optional + InitialDelaySeconds int32 + // Length of time before health checking times out. In seconds. + // +optional + TimeoutSeconds int32 + // How often (in seconds) to perform the probe. + // +optional + PeriodSeconds int32 + // Minimum consecutive successes for the probe to be considered successful after having failed. + // Must be 1 for liveness. + // +optional + SuccessThreshold int32 + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + // +optional + FailureThreshold int32 +} + +// PullPolicy describes a policy for if/when to pull a container image +type PullPolicy string + +const ( + // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails. + PullAlways PullPolicy = "Always" + // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present + PullNever PullPolicy = "Never" + // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. + PullIfNotPresent PullPolicy = "IfNotPresent" +) + +// TerminationMessagePolicy describes how termination messages are retrieved from a container. +type TerminationMessagePolicy string + +const ( + // TerminationMessageReadFile is the default behavior and will set the container status message to + // the contents of the container's terminationMessagePath when the container exits. + TerminationMessageReadFile TerminationMessagePolicy = "File" + // TerminationMessageFallbackToLogsOnError will read the most recent contents of the container logs + // for the container status message when the container exits with an error and the + // terminationMessagePath has no contents. + TerminationMessageFallbackToLogsOnError TerminationMessagePolicy = "FallbackToLogsOnError" +) + +// Capability represent POSIX capabilities type +type Capability string + +// Capabilities represent POSIX capabilities that can be added or removed to a running container. +type Capabilities struct { + // Added capabilities + // +optional + Add []Capability + // Removed capabilities + // +optional + Drop []Capability +} + +// ResourceRequirements describes the compute resource requirements. +type ResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // +optional + Limits ResourceList + // Requests describes the minimum amount of compute resources required. + // If Request is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value + // +optional + Requests ResourceList +} + +// Container represents a single container that is expected to be run on the host. +type Container struct { + // Required: This must be a DNS_LABEL. Each container in a pod must + // have a unique name. + Name string + // Required. + Image string + // Optional: The docker image's entrypoint is used if this is not provided; cannot be updated. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // +optional + Command []string + // Optional: The docker image's cmd is used if this is not provided; cannot be updated. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // +optional + Args []string + // Optional: Defaults to Docker's default. + // +optional + WorkingDir string + // +optional + Ports []ContainerPort + // List of sources to populate environment variables in the container. + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys + // will be reported as an event when the container is starting. When a key exists in multiple + // sources, the value associated with the last source will take precedence. + // Values defined by an Env with a duplicate key will take precedence. + // Cannot be updated. + // +optional + EnvFrom []EnvFromSource + // +optional + Env []EnvVar + // Compute resource requirements. + // +optional + Resources ResourceRequirements + // +optional + VolumeMounts []VolumeMount + // +optional + LivenessProbe *Probe + // +optional + ReadinessProbe *Probe + // +optional + Lifecycle *Lifecycle + // Required. + // +optional + TerminationMessagePath string + // +optional + TerminationMessagePolicy TerminationMessagePolicy + // Required: Policy for pulling images for this container + ImagePullPolicy PullPolicy + // Optional: SecurityContext defines the security options the container should be run with. + // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. + // +optional + SecurityContext *SecurityContext + + // Variables for interactive containers, these have very specialized use-cases (e.g. debugging) + // and shouldn't be used for general purpose containers. + // +optional + Stdin bool + // +optional + StdinOnce bool + // +optional + TTY bool +} + +// Handler defines a specific action that should be taken +// TODO: pass structured data to these actions, and document that data here. +type Handler struct { + // One and only one of the following should be specified. + // Exec specifies the action to take. + // +optional + Exec *ExecAction + // HTTPGet specifies the http request to perform. + // +optional + HTTPGet *HTTPGetAction + // TCPSocket specifies an action involving a TCP port. + // TODO: implement a realistic TCP lifecycle hook + // +optional + TCPSocket *TCPSocketAction +} + +// Lifecycle describes actions that the management system should take in response to container lifecycle +// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks +// until the action is complete, unless the container process fails, in which case the handler is aborted. +type Lifecycle struct { + // PostStart is called immediately after a container is created. If the handler fails, the container + // is terminated and restarted. + // +optional + PostStart *Handler + // PreStop is called immediately before a container is terminated. The reason for termination is + // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. + // +optional + PreStop *Handler +} + +// The below types are used by kube_client and api_server. + +type ConditionStatus string + +// These are valid condition statuses. "ConditionTrue" means a resource is in the condition; +// "ConditionFalse" means a resource is not in the condition; "ConditionUnknown" means kubernetes +// can't decide if a resource is in the condition or not. In the future, we could add other +// intermediate conditions, e.g. ConditionDegraded. +const ( + ConditionTrue ConditionStatus = "True" + ConditionFalse ConditionStatus = "False" + ConditionUnknown ConditionStatus = "Unknown" +) + +type ContainerStateWaiting struct { + // A brief CamelCase string indicating details about why the container is in waiting state. + // +optional + Reason string + // A human-readable message indicating details about why the container is in waiting state. + // +optional + Message string +} + +type ContainerStateRunning struct { + // +optional + StartedAt metav1.Time +} + +type ContainerStateTerminated struct { + ExitCode int32 + // +optional + Signal int32 + // +optional + Reason string + // +optional + Message string + // +optional + StartedAt metav1.Time + // +optional + FinishedAt metav1.Time + // +optional + ContainerID string +} + +// ContainerState holds a possible state of container. +// Only one of its members may be specified. +// If none of them is specified, the default one is ContainerStateWaiting. +type ContainerState struct { + // +optional + Waiting *ContainerStateWaiting + // +optional + Running *ContainerStateRunning + // +optional + Terminated *ContainerStateTerminated +} + +type ContainerStatus struct { + // Each container in a pod must have a unique name. + Name string + // +optional + State ContainerState + // +optional + LastTerminationState ContainerState + // Ready specifies whether the container has passed its readiness check. + Ready bool + // Note that this is calculated from dead containers. But those containers are subject to + // garbage collection. This value will get capped at 5 by GC. + RestartCount int32 + Image string + ImageID string + // +optional + ContainerID string +} + +// PodPhase is a label for the condition of a pod at the current time. +type PodPhase string + +// These are the valid statuses of pods. +const ( + // PodPending means the pod has been accepted by the system, but one or more of the containers + // has not been started. This includes time before being bound to a node, as well as time spent + // pulling images onto the host. + PodPending PodPhase = "Pending" + // PodRunning means the pod has been bound to a node and all of the containers have been started. + // At least one container is still running or is in the process of being restarted. + PodRunning PodPhase = "Running" + // PodSucceeded means that all containers in the pod have voluntarily terminated + // with a container exit code of 0, and the system is not going to restart any of these containers. + PodSucceeded PodPhase = "Succeeded" + // PodFailed means that all containers in the pod have terminated, and at least one container has + // terminated in a failure (exited with a non-zero exit code or was stopped by the system). + PodFailed PodPhase = "Failed" + // PodUnknown means that for some reason the state of the pod could not be obtained, typically due + // to an error in communicating with the host of the pod. + PodUnknown PodPhase = "Unknown" +) + +type PodConditionType string + +// These are valid conditions of pod. +const ( + // PodScheduled represents status of the scheduling process for this pod. + PodScheduled PodConditionType = "PodScheduled" + // PodReady means the pod is able to service requests and should be added to the + // load balancing pools of all matching services. + PodReady PodConditionType = "Ready" + // PodInitialized means that all init containers in the pod have started successfully. + PodInitialized PodConditionType = "Initialized" + // PodReasonUnschedulable reason in PodScheduled PodCondition means that the scheduler + // can't schedule the pod right now, for example due to insufficient resources in the cluster. + PodReasonUnschedulable = "Unschedulable" +) + +type PodCondition struct { + Type PodConditionType + Status ConditionStatus + // +optional + LastProbeTime metav1.Time + // +optional + LastTransitionTime metav1.Time + // +optional + Reason string + // +optional + Message string +} + +// RestartPolicy describes how the container should be restarted. +// Only one of the following restart policies may be specified. +// If none of the following policies is specified, the default one +// is RestartPolicyAlways. +type RestartPolicy string + +const ( + RestartPolicyAlways RestartPolicy = "Always" + RestartPolicyOnFailure RestartPolicy = "OnFailure" + RestartPolicyNever RestartPolicy = "Never" +) + +// PodList is a list of Pods. +type PodList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Pod +} + +// DNSPolicy defines how a pod's DNS will be configured. +type DNSPolicy string + +const ( + // DNSClusterFirstWithHostNet indicates that the pod should use cluster DNS + // first, if it is available, then fall back on the default + // (as determined by kubelet) DNS settings. + DNSClusterFirstWithHostNet DNSPolicy = "ClusterFirstWithHostNet" + + // DNSClusterFirst indicates that the pod should use cluster DNS + // first unless hostNetwork is true, if it is available, then + // fall back on the default (as determined by kubelet) DNS settings. + DNSClusterFirst DNSPolicy = "ClusterFirst" + + // DNSDefault indicates that the pod should use the default (as + // determined by kubelet) DNS settings. + DNSDefault DNSPolicy = "Default" +) + +// A node selector represents the union of the results of one or more label queries +// over a set of nodes; that is, it represents the OR of the selectors represented +// by the node selector terms. +type NodeSelector struct { + //Required. A list of node selector terms. The terms are ORed. + NodeSelectorTerms []NodeSelectorTerm +} + +// A null or empty node selector term matches no objects. +type NodeSelectorTerm struct { + //Required. A list of node selector requirements. The requirements are ANDed. + MatchExpressions []NodeSelectorRequirement +} + +// A node selector requirement is a selector that contains values, a key, and an operator +// that relates the key and values. +type NodeSelectorRequirement struct { + // The label key that the selector applies to. + Key string + // Represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + Operator NodeSelectorOperator + // An array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. If the operator is Gt or Lt, the values + // array must have a single element, which will be interpreted as an integer. + // This array is replaced during a strategic merge patch. + // +optional + Values []string +} + +// A node selector operator is the set of operators that can be used in +// a node selector requirement. +type NodeSelectorOperator string + +const ( + NodeSelectorOpIn NodeSelectorOperator = "In" + NodeSelectorOpNotIn NodeSelectorOperator = "NotIn" + NodeSelectorOpExists NodeSelectorOperator = "Exists" + NodeSelectorOpDoesNotExist NodeSelectorOperator = "DoesNotExist" + NodeSelectorOpGt NodeSelectorOperator = "Gt" + NodeSelectorOpLt NodeSelectorOperator = "Lt" +) + +// Affinity is a group of affinity scheduling rules. +type Affinity struct { + // Describes node affinity scheduling rules for the pod. + // +optional + NodeAffinity *NodeAffinity + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + // +optional + PodAffinity *PodAffinity + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + // +optional + PodAntiAffinity *PodAntiAffinity +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +type PodAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + // +optional + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +type PodAntiAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm + // The scheduler will prefer to schedule pods to nodes that satisfy + // the anti-affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling anti-affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + // +optional + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm +} + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) +type WeightedPodAffinityTerm struct { + // weight associated with matching the corresponding podAffinityTerm, + // in the range 1-100. + Weight int32 + // Required. A pod affinity term, associated with the corresponding weight. + PodAffinityTerm PodAffinityTerm +} + +// Defines a set of pods (namely those matching the labelSelector +// relative to the given namespace(s)) that this pod should be +// co-located (affinity) or not co-located (anti-affinity) with, +// where co-located is defined as running on a node whose value of +// the label with key matches that of any node on which +// a pod of the set of pods is running. +type PodAffinityTerm struct { + // A label query over a set of resources, in this case pods. + // +optional + LabelSelector *metav1.LabelSelector + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // null or empty list means "this pod's namespace" + Namespaces []string + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + // the labelSelector in the specified namespaces, where co-located is defined as running on a node + // whose value of the label with key topologyKey matches that of any node on which any of the + // selected pods is running. + // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" + // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); + // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. + // +optional + TopologyKey string +} + +// Node affinity is a group of node affinity scheduling rules. +type NodeAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // will try to eventually evict the pod from its node. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution *NodeSelector + + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // may or may not try to eventually evict the pod from its node. + // +optional + RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node matches the corresponding matchExpressions; the + // node(s) with the highest sum are the most preferred. + // +optional + PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm +} + +// An empty preferred scheduling term matches all objects with implicit weight 0 +// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +type PreferredSchedulingTerm struct { + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + Weight int32 + // A node selector term, associated with the corresponding weight. + Preference NodeSelectorTerm +} + +// The node this Taint is attached to has the effect "effect" on +// any pod that that does not tolerate the Taint. +type Taint struct { + // Required. The taint key to be applied to a node. + Key string + // Required. The taint value corresponding to the taint key. + // +optional + Value string + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule, PreferNoSchedule and NoExecute. + Effect TaintEffect + // TimeAdded represents the time at which the taint was added. + // It is only written for NoExecute taints. + // +optional + TimeAdded metav1.Time +} + +type TaintEffect string + +const ( + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // but allow all pods submitted to Kubelet without going through the scheduler + // to start, and allow all already-running pods to continue running. + // Enforced by the scheduler. + TaintEffectNoSchedule TaintEffect = "NoSchedule" + // Like TaintEffectNoSchedule, but the scheduler tries not to schedule + // new pods onto the node, rather than prohibiting new pods from scheduling + // onto the node entirely. Enforced by the scheduler. + TaintEffectPreferNoSchedule TaintEffect = "PreferNoSchedule" + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // Like TaintEffectNoSchedule, but additionally do not allow pods submitted to + // Kubelet without going through the scheduler to start. + // Enforced by Kubelet and the scheduler. + // TaintEffectNoScheduleNoAdmit TaintEffect = "NoScheduleNoAdmit" + // Evict any already-running pods that do not tolerate the taint. + // Currently enforced by NodeController. + TaintEffectNoExecute TaintEffect = "NoExecute" +) + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple using the matching operator . +type Toleration struct { + // Key is the taint key that the toleration applies to. Empty means match all taint keys. + // If the key is empty, operator must be Exists; this combination means to match all values and all keys. + // +optional + Key string + // Operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a pod can + // tolerate all taints of a particular category. + // +optional + Operator TolerationOperator + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value should be empty, otherwise just a regular string. + // +optional + Value string + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + // +optional + Effect TaintEffect + // TolerationSeconds represents the period of time the toleration (which must be + // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + // it is not set, which means tolerate the taint forever (do not evict). Zero and + // negative values will be treated as 0 (evict immediately) by the system. + // +optional + TolerationSeconds *int64 +} + +// A toleration operator is the set of operators that can be used in a toleration. +type TolerationOperator string + +const ( + TolerationOpExists TolerationOperator = "Exists" + TolerationOpEqual TolerationOperator = "Equal" +) + +// PodSpec is a description of a pod +type PodSpec struct { + Volumes []Volume + // List of initialization containers belonging to the pod. + InitContainers []Container + // List of containers belonging to the pod. + Containers []Container + // +optional + RestartPolicy RestartPolicy + // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. + // Value must be non-negative integer. The value zero indicates delete immediately. + // If this value is nil, the default grace period will be used instead. + // The grace period is the duration in seconds after the processes running in the pod are sent + // a termination signal and the time when the processes are forcibly halted with a kill signal. + // Set this value longer than the expected cleanup time for your process. + // +optional + TerminationGracePeriodSeconds *int64 + // Optional duration in seconds relative to the StartTime that the pod may be active on a node + // before the system actively tries to terminate the pod; value must be positive integer + // +optional + ActiveDeadlineSeconds *int64 + // Required: Set DNS policy. + // +optional + DNSPolicy DNSPolicy + // NodeSelector is a selector which must be true for the pod to fit on a node + // +optional + NodeSelector map[string]string + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod + // The pod will be allowed to use secrets referenced by the ServiceAccount + ServiceAccountName string + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + // +optional + AutomountServiceAccountToken *bool + + // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, + // the scheduler simply schedules this pod onto that node, assuming that it fits resource + // requirements. + // +optional + NodeName string + // SecurityContext holds pod-level security attributes and common container settings. + // Optional: Defaults to empty. See type description for default values of each field. + // +optional + SecurityContext *PodSecurityContext + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // If specified, these secrets will be passed to individual puller implementations for them to use. For example, + // in the case of docker, only DockerConfig type secrets are honored. + // +optional + ImagePullSecrets []LocalObjectReference + // Specifies the hostname of the Pod. + // If not specified, the pod's hostname will be set to a system-defined value. + // +optional + Hostname string + // If specified, the fully qualified Pod hostname will be "...svc.". + // If not specified, the pod will not have a domainname at all. + // +optional + Subdomain string + // If specified, the pod's scheduling constraints + // +optional + Affinity *Affinity + // If specified, the pod will be dispatched by specified scheduler. + // If not specified, the pod will be dispatched by default scheduler. + // +optional + SchedulerName string + // If specified, the pod's tolerations. + // +optional + Tolerations []Toleration + // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts + // file if specified. This is only valid for non-hostNetwork pods. + // +optional + HostAliases []HostAlias +} + +// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the +// pod's hosts file. +type HostAlias struct { + IP string + Hostnames []string +} + +// Sysctl defines a kernel parameter to be set +type Sysctl struct { + // Name of a property to set + Name string + // Value of a property to set + Value string +} + +// PodSecurityContext holds pod-level security attributes and common container settings. +// Some fields are also present in container.securityContext. Field values of +// container.securityContext take precedence over field values of PodSecurityContext. +type PodSecurityContext struct { + // Use the host's network namespace. If this option is set, the ports that will be + // used must be specified. + // Optional: Default to false + // +k8s:conversion-gen=false + // +optional + HostNetwork bool + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + HostPID bool + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + HostIPC bool + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + // +optional + SELinuxOptions *SELinuxOptions + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // +optional + RunAsUser *int64 + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsNonRoot *bool + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID. If unspecified, no groups will be added to + // any container. + // +optional + SupplementalGroups []int64 + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // +optional + FSGroup *int64 +} + +// PodQOSClass defines the supported qos classes of Pods. +type PodQOSClass string + +const ( + // PodQOSGuaranteed is the Guaranteed qos class. + PodQOSGuaranteed PodQOSClass = "Guaranteed" + // PodQOSBurstable is the Burstable qos class. + PodQOSBurstable PodQOSClass = "Burstable" + // PodQOSBestEffort is the BestEffort qos class. + PodQOSBestEffort PodQOSClass = "BestEffort" +) + +// PodStatus represents information about the status of a pod. Status may trail the actual +// state of a system. +type PodStatus struct { + // +optional + Phase PodPhase + // +optional + Conditions []PodCondition + // A human readable message indicating details about why the pod is in this state. + // +optional + Message string + // A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk' + // +optional + Reason string + + // +optional + HostIP string + // +optional + PodIP string + + // Date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the pod. + // +optional + StartTime *metav1.Time + // +optional + QOSClass PodQOSClass + + // The list has one entry per init container in the manifest. The most recent successful + // init container will have ready = true, the most recently started container will have + // startTime set. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status + InitContainerStatuses []ContainerStatus + // The list has one entry per container in the manifest. Each entry is + // currently the output of `docker inspect`. This output format is *not* + // final and should not be relied upon. + // TODO: Make real decisions about what our info should look like. Re-enable fuzz test + // when we have done this. + // +optional + ContainerStatuses []ContainerStatus +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +type PodStatusResult struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + // Status represents the current information about a pod. This data may not be up + // to date. + // +optional + Status PodStatus +} + +// +genclient=true + +// Pod is a collection of containers, used as either input (create, update) or as output (list, get). +type Pod struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the behavior of a pod. + // +optional + Spec PodSpec + + // Status represents the current information about a pod. This data may not be up + // to date. + // +optional + Status PodStatus +} + +// PodTemplateSpec describes the data a pod should have when created from a template +type PodTemplateSpec struct { + // Metadata of the pods created from this template. + // +optional + metav1.ObjectMeta + + // Spec defines the behavior of a pod. + // +optional + Spec PodSpec +} + +// +genclient=true + +// PodTemplate describes a template for creating copies of a predefined pod. +type PodTemplate struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Template defines the pods that will be created from this pod template + // +optional + Template PodTemplateSpec +} + +// PodTemplateList is a list of PodTemplates. +type PodTemplateList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []PodTemplate +} + +// ReplicationControllerSpec is the specification of a replication controller. +// As the internal representation of a replication controller, it may have either +// a TemplateRef or a Template set. +type ReplicationControllerSpec struct { + // Replicas is the number of desired replicas. + Replicas int32 + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 + + // Selector is a label query over pods that should match the Replicas count. + Selector map[string]string + + // TemplateRef is a reference to an object that describes the pod that will be created if + // insufficient replicas are detected. This reference is ignored if a Template is set. + // Must be set before converting to a versioned API object + // +optional + //TemplateRef *ObjectReference + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. Internally, this takes precedence over a + // TemplateRef. + // +optional + Template *PodTemplateSpec +} + +// ReplicationControllerStatus represents the current status of a replication +// controller. +type ReplicationControllerStatus struct { + // Replicas is the number of actual replicas. + Replicas int32 + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + // +optional + FullyLabeledReplicas int32 + + // The number of ready replicas for this replication controller. + // +optional + ReadyReplicas int32 + + // The number of available replicas (ready for at least minReadySeconds) for this replication controller. + // +optional + AvailableReplicas int32 + + // ObservedGeneration is the most recent generation observed by the controller. + // +optional + ObservedGeneration int64 + + // Represents the latest available observations of a replication controller's current state. + // +optional + Conditions []ReplicationControllerCondition +} + +type ReplicationControllerConditionType string + +// These are valid conditions of a replication controller. +const ( + // ReplicationControllerReplicaFailure is added in a replication controller when one of its pods + // fails to be created due to insufficient quota, limit ranges, pod security policy, node selectors, + // etc. or deleted due to kubelet being down or finalizers are failing. + ReplicationControllerReplicaFailure ReplicationControllerConditionType = "ReplicaFailure" +) + +// ReplicationControllerCondition describes the state of a replication controller at a certain point. +type ReplicationControllerCondition struct { + // Type of replication controller condition. + Type ReplicationControllerConditionType + // Status of the condition, one of True, False, Unknown. + Status ConditionStatus + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time + // The reason for the condition's last transition. + // +optional + Reason string + // A human readable message indicating details about the transition. + // +optional + Message string +} + +// +genclient=true + +// ReplicationController represents the configuration of a replication controller. +type ReplicationController struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the desired behavior of this replication controller. + // +optional + Spec ReplicationControllerSpec + + // Status is the current status of this replication controller. This data may be + // out of date by some window of time. + // +optional + Status ReplicationControllerStatus +} + +// ReplicationControllerList is a collection of replication controllers. +type ReplicationControllerList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []ReplicationController +} + +const ( + // ClusterIPNone - do not assign a cluster IP + // no proxying required and no environment variables should be created for pods + ClusterIPNone = "None" +) + +// ServiceList holds a list of services. +type ServiceList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Service +} + +// Session Affinity Type string +type ServiceAffinity string + +const ( + // ServiceAffinityClientIP is the Client IP based. + ServiceAffinityClientIP ServiceAffinity = "ClientIP" + + // ServiceAffinityNone - no session affinity. + ServiceAffinityNone ServiceAffinity = "None" +) + +// Service Type string describes ingress methods for a service +type ServiceType string + +const ( + // ServiceTypeClusterIP means a service will only be accessible inside the + // cluster, via the ClusterIP. + ServiceTypeClusterIP ServiceType = "ClusterIP" + + // ServiceTypeNodePort means a service will be exposed on one port of + // every node, in addition to 'ClusterIP' type. + ServiceTypeNodePort ServiceType = "NodePort" + + // ServiceTypeLoadBalancer means a service will be exposed via an + // external load balancer (if the cloud provider supports it), in addition + // to 'NodePort' type. + ServiceTypeLoadBalancer ServiceType = "LoadBalancer" + + // ServiceTypeExternalName means a service consists of only a reference to + // an external name that kubedns or equivalent will return as a CNAME + // record, with no exposing or proxying of any pods involved. + ServiceTypeExternalName ServiceType = "ExternalName" +) + +// Service External Traffic Policy Type string +type ServiceExternalTrafficPolicyType string + +const ( + // ServiceExternalTrafficPolicyTypeLocal specifies node-local endpoints behavior. + ServiceExternalTrafficPolicyTypeLocal ServiceExternalTrafficPolicyType = "Local" + // ServiceExternalTrafficPolicyTypeCluster specifies cluster-wide (legacy) behavior. + ServiceExternalTrafficPolicyTypeCluster ServiceExternalTrafficPolicyType = "Cluster" +) + +// ServiceStatus represents the current status of a service +type ServiceStatus struct { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + // +optional + LoadBalancer LoadBalancerStatus +} + +// LoadBalancerStatus represents the status of a load-balancer +type LoadBalancerStatus struct { + // Ingress is a list containing ingress points for the load-balancer; + // traffic intended for the service should be sent to these ingress points. + // +optional + Ingress []LoadBalancerIngress +} + +// LoadBalancerIngress represents the status of a load-balancer ingress point: +// traffic intended for the service should be sent to an ingress point. +type LoadBalancerIngress struct { + // IP is set for load-balancer ingress points that are IP based + // (typically GCE or OpenStack load-balancers) + // +optional + IP string + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + // +optional + Hostname string +} + +// ServiceSpec describes the attributes that a user creates on a service +type ServiceSpec struct { + // Type determines how the Service is exposed. Defaults to ClusterIP. Valid + // options are ExternalName, ClusterIP, NodePort, and LoadBalancer. + // "ExternalName" maps to the specified externalName. + // "ClusterIP" allocates a cluster-internal IP address for load-balancing to + // endpoints. Endpoints are determined by the selector or if that is not + // specified, by manual construction of an Endpoints object. If clusterIP is + // "None", no virtual IP is allocated and the endpoints are published as a + // set of endpoints rather than a stable IP. + // "NodePort" builds on ClusterIP and allocates a port on every node which + // routes to the clusterIP. + // "LoadBalancer" builds on NodePort and creates an + // external load-balancer (if supported in the current cloud) which routes + // to the clusterIP. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/ + // +optional + Type ServiceType + + // Required: The list of ports that are exposed by this service. + Ports []ServicePort + + // Route service traffic to pods with label keys and values matching this + // selector. If empty or not present, the service is assumed to have an + // external process managing its endpoints, which Kubernetes will not + // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. + // Ignored if type is ExternalName. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/ + Selector map[string]string + + // ClusterIP is the IP address of the service and is usually assigned + // randomly by the master. If an address is specified manually and is not in + // use by others, it will be allocated to the service; otherwise, creation + // of the service will fail. This field can not be changed through updates. + // Valid values are "None", empty string (""), or a valid IP address. "None" + // can be specified for headless services when proxying is not required. + // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if + // type is ExternalName. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + ClusterIP string + + // ExternalName is the external reference that kubedns or equivalent will + // return as a CNAME record for this service. No proxying will be involved. + // Must be a valid DNS name and requires Type to be ExternalName. + ExternalName string + + // ExternalIPs are used by external load balancers, or can be set by + // users to handle external traffic that arrives at a node. + // +optional + ExternalIPs []string + + // Only applies to Service Type: LoadBalancer + // LoadBalancer will get created with the IP specified in this field. + // This feature depends on whether the underlying cloud-provider supports specifying + // the loadBalancerIP when a load balancer is created. + // This field will be ignored if the cloud-provider does not support the feature. + // +optional + LoadBalancerIP string + + // Optional: Supports "ClientIP" and "None". Used to maintain session affinity. + // +optional + SessionAffinity ServiceAffinity + + // Optional: If specified and supported by the platform, this will restrict traffic through the cloud-provider + // load-balancer will be restricted to the specified client IPs. This field will be ignored if the + // cloud-provider does not support the feature." + // +optional + LoadBalancerSourceRanges []string + + // externalTrafficPolicy denotes if this Service desires to route external + // traffic to node-local or cluster-wide endpoints. "Local" preserves the + // client source IP and avoids a second hop for LoadBalancer and Nodeport + // type services, but risks potentially imbalanced traffic spreading. + // "Cluster" obscures the client source IP and may cause a second hop to + // another node, but should have good overall load-spreading. + // +optional + ExternalTrafficPolicy ServiceExternalTrafficPolicyType + + // healthCheckNodePort specifies the healthcheck nodePort for the service. + // If not specified, HealthCheckNodePort is created by the service api + // backend with the allocated nodePort. Will use user-specified nodePort value + // if specified by the client. Only effects when Type is set to LoadBalancer + // and ExternalTrafficPolicy is set to Local. + // +optional + HealthCheckNodePort int32 +} + +type ServicePort struct { + // Optional if only one ServicePort is defined on this service: The + // name of this port within the service. This must be a DNS_LABEL. + // All ports within a ServiceSpec must have unique names. This maps to + // the 'Name' field in EndpointPort objects. + Name string + + // The IP protocol for this port. Supports "TCP" and "UDP". + Protocol Protocol + + // The port that will be exposed on the service. + Port int32 + + // Optional: The target port on pods selected by this service. If this + // is a string, it will be looked up as a named port in the target + // Pod's container ports. If this is not specified, the value + // of the 'port' field is used (an identity map). + // This field is ignored for services with clusterIP=None, and should be + // omitted or set equal to the 'port' field. + TargetPort intstr.IntOrString + + // The port on each node on which this service is exposed. + // Default is to auto-allocate a port if the ServiceType of this Service requires one. + NodePort int32 +} + +// +genclient=true + +// Service is a named abstraction of software service (for example, mysql) consisting of local port +// (for example 3306) that the proxy listens on, and the selector that determines which pods +// will answer requests sent through the proxy. +type Service struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the behavior of a service. + // +optional + Spec ServiceSpec + + // Status represents the current status of a service. + // +optional + Status ServiceStatus +} + +// +genclient=true + +// ServiceAccount binds together: +// * a name, understood by users, and perhaps by peripheral systems, for an identity +// * a principal that can be authenticated and authorized +// * a set of secrets +type ServiceAccount struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount + Secrets []ObjectReference + + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images + // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets + // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. + // +optional + ImagePullSecrets []LocalObjectReference + + // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. + // Can be overridden at the pod level. + // +optional + AutomountServiceAccountToken *bool +} + +// ServiceAccountList is a list of ServiceAccount objects +type ServiceAccountList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []ServiceAccount +} + +// +genclient=true + +// Endpoints is a collection of endpoints that implement the actual service. Example: +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] +type Endpoints struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // The set of all endpoints is the union of all subsets. + Subsets []EndpointSubset +} + +// EndpointSubset is a group of addresses with a common set of ports. The +// expanded set of endpoints is the Cartesian product of Addresses x Ports. +// For example, given: +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// The resulting set of endpoints can be viewed as: +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +type EndpointSubset struct { + Addresses []EndpointAddress + NotReadyAddresses []EndpointAddress + Ports []EndpointPort +} + +// EndpointAddress is a tuple that describes single IP address. +type EndpointAddress struct { + // The IP of this endpoint. + // IPv6 is also accepted but not fully supported on all platforms. Also, certain + // kubernetes components, like kube-proxy, are not IPv6 ready. + // TODO: This should allow hostname or IP, see #4447. + IP string + // Optional: Hostname of this endpoint + // Meant to be used by DNS servers etc. + // +optional + Hostname string + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + // +optional + NodeName *string + // Optional: The kubernetes object related to the entry point. + TargetRef *ObjectReference +} + +// EndpointPort is a tuple that describes a single port. +type EndpointPort struct { + // The name of this port (corresponds to ServicePort.Name). Optional + // if only one port is defined. Must be a DNS_LABEL. + Name string + + // The port number. + Port int32 + + // The IP protocol for this port. + Protocol Protocol +} + +// EndpointsList is a list of endpoints. +type EndpointsList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Endpoints +} + +// NodeSpec describes the attributes that a node is created with. +type NodeSpec struct { + // PodCIDR represents the pod IP range assigned to the node + // Note: assigning IP ranges to nodes might need to be revisited when we support migratable IPs. + // +optional + PodCIDR string + + // External ID of the node assigned by some machine database (e.g. a cloud provider) + // +optional + ExternalID string + + // ID of the node assigned by the cloud provider + // Note: format is "://" + // +optional + ProviderID string + + // Unschedulable controls node schedulability of new pods. By default node is schedulable. + // +optional + Unschedulable bool + + // If specified, the node's taints. + // +optional + Taints []Taint +} + +// DaemonEndpoint contains information about a single Daemon endpoint. +type DaemonEndpoint struct { + /* + The port tag was not properly in quotes in earlier releases, so it must be + uppercased for backwards compat (since it was falling back to var name of + 'Port'). + */ + + // Port number of the given endpoint. + Port int32 +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +type NodeDaemonEndpoints struct { + // Endpoint on which Kubelet is listening. + // +optional + KubeletEndpoint DaemonEndpoint +} + +// NodeSystemInfo is a set of ids/uuids to uniquely identify the node. +type NodeSystemInfo struct { + // MachineID reported by the node. For unique machine identification + // in the cluster this field is preferred. Learn more from man(5) + // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html + MachineID string + // SystemUUID reported by the node. For unique machine identification + // MachineID is preferred. This field is specific to Red Hat hosts + // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html + SystemUUID string + // Boot ID reported by the node. + BootID string + // Kernel Version reported by the node. + KernelVersion string + // OS Image reported by the node. + OSImage string + // ContainerRuntime Version reported by the node. + ContainerRuntimeVersion string + // Kubelet Version reported by the node. + KubeletVersion string + // KubeProxy Version reported by the node. + KubeProxyVersion string + // The Operating System reported by the node + OperatingSystem string + // The Architecture reported by the node + Architecture string +} + +// NodeStatus is information about the current status of a node. +type NodeStatus struct { + // Capacity represents the total resources of a node. + // +optional + Capacity ResourceList + // Allocatable represents the resources of a node that are available for scheduling. + // +optional + Allocatable ResourceList + // NodePhase is the current lifecycle phase of the node. + // +optional + Phase NodePhase + // Conditions is an array of current node conditions. + // +optional + Conditions []NodeCondition + // Queried from cloud provider, if available. + // +optional + Addresses []NodeAddress + // Endpoints of daemons running on the Node. + // +optional + DaemonEndpoints NodeDaemonEndpoints + // Set of ids/uuids to uniquely identify the node. + // +optional + NodeInfo NodeSystemInfo + // List of container images on this node + // +optional + Images []ContainerImage + // List of attachable volumes in use (mounted) by the node. + // +optional + VolumesInUse []UniqueVolumeName + // List of volumes that are attached to the node. + // +optional + VolumesAttached []AttachedVolume +} + +type UniqueVolumeName string + +// AttachedVolume describes a volume attached to a node +type AttachedVolume struct { + // Name of the attached volume + Name UniqueVolumeName + + // DevicePath represents the device path where the volume should be available + DevicePath string +} + +// AvoidPods describes pods that should avoid this node. This is the value for a +// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and +// will eventually become a field of NodeStatus. +type AvoidPods struct { + // Bounded-sized list of signatures of pods that should avoid this node, sorted + // in timestamp order from oldest to newest. Size of the slice is unspecified. + // +optional + PreferAvoidPods []PreferAvoidPodsEntry +} + +// Describes a class of pods that should avoid this node. +type PreferAvoidPodsEntry struct { + // The class of pods. + PodSignature PodSignature + // Time at which this entry was added to the list. + // +optional + EvictionTime metav1.Time + // (brief) reason why this entry was added to the list. + // +optional + Reason string + // Human readable message indicating why this entry was added to the list. + // +optional + Message string +} + +// Describes the class of pods that should avoid this node. +// Exactly one field should be set. +type PodSignature struct { + // Reference to controller whose pods should avoid this node. + // +optional + PodController *metav1.OwnerReference +} + +// Describe a container image +type ContainerImage struct { + // Names by which this image is known. + Names []string + // The size of the image in bytes. + // +optional + SizeBytes int64 +} + +type NodePhase string + +// These are the valid phases of node. +const ( + // NodePending means the node has been created/added by the system, but not configured. + NodePending NodePhase = "Pending" + // NodeRunning means the node has been configured and has Kubernetes components running. + NodeRunning NodePhase = "Running" + // NodeTerminated means the node has been removed from the cluster. + NodeTerminated NodePhase = "Terminated" +) + +type NodeConditionType string + +// These are valid conditions of node. Currently, we don't have enough information to decide +// node condition. In the future, we will add more. The proposed set of conditions are: +// NodeReady, NodeReachable +const ( + // NodeReady means kubelet is healthy and ready to accept pods. + NodeReady NodeConditionType = "Ready" + // NodeOutOfDisk means the kubelet will not accept new pods due to insufficient free disk + // space on the node. + NodeOutOfDisk NodeConditionType = "OutOfDisk" + // NodeMemoryPressure means the kubelet is under pressure due to insufficient available memory. + NodeMemoryPressure NodeConditionType = "MemoryPressure" + // NodeDiskPressure means the kubelet is under pressure due to insufficient available disk. + NodeDiskPressure NodeConditionType = "DiskPressure" + // NodeNetworkUnavailable means that network for the node is not correctly configured. + NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" +) + +type NodeCondition struct { + Type NodeConditionType + Status ConditionStatus + // +optional + LastHeartbeatTime metav1.Time + // +optional + LastTransitionTime metav1.Time + // +optional + Reason string + // +optional + Message string +} + +type NodeAddressType string + +const ( + NodeHostName NodeAddressType = "Hostname" + NodeExternalIP NodeAddressType = "ExternalIP" + NodeInternalIP NodeAddressType = "InternalIP" + NodeExternalDNS NodeAddressType = "ExternalDNS" + NodeInternalDNS NodeAddressType = "InternalDNS" +) + +type NodeAddress struct { + Type NodeAddressType + Address string +} + +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +type NodeResources struct { + // Capacity represents the available resources of a node + // +optional + Capacity ResourceList +} + +// ResourceName is the name identifying various resources in a ResourceList. +type ResourceName string + +// Resource names must be not more than 63 characters, consisting of upper- or lower-case alphanumeric characters, +// with the -, _, and . characters allowed anywhere, except the first or last character. +// The default convention, matching that for annotations, is to use lower-case names, with dashes, rather than +// camel case, separating compound words. +// Fully-qualified resource typenames are constructed from a DNS-style subdomain, followed by a slash `/` and a name. +const ( + // CPU, in cores. (500m = .5 cores) + ResourceCPU ResourceName = "cpu" + // Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceMemory ResourceName = "memory" + // Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024) + ResourceStorage ResourceName = "storage" + // Local Storage for overlay filesystem, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + // The resource name for ResourceStorageOverlay is alpha and it can change across releases. + ResourceStorageOverlay ResourceName = "storage.kubernetes.io/overlay" + // Local Storage for scratch space, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + // The resource name for ResourceStorageScratch is alpha and it can change across releases. + ResourceStorageScratch ResourceName = "storage.kubernetes.io/scratch" + // NVIDIA GPU, in devices. Alpha, might change: although fractional and allowing values >1, only one whole device per node is assigned. + ResourceNvidiaGPU ResourceName = "alpha.kubernetes.io/nvidia-gpu" + // Number of Pods that may be running on this Node: see ResourcePods +) + +const ( + // Namespace prefix for opaque counted resources (alpha). + ResourceOpaqueIntPrefix = "pod.alpha.kubernetes.io/opaque-int-resource-" +) + +// ResourceList is a set of (resource name, quantity) pairs. +type ResourceList map[ResourceName]resource.Quantity + +// +genclient=true +// +nonNamespaced=true + +// Node is a worker node in Kubernetes +// The name of the node according to etcd is in ObjectMeta.Name. +type Node struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the behavior of a node. + // +optional + Spec NodeSpec + + // Status describes the current status of a Node + // +optional + Status NodeStatus +} + +// NodeList is a list of nodes. +type NodeList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Node +} + +// NamespaceSpec describes the attributes on a Namespace +type NamespaceSpec struct { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage + Finalizers []FinalizerName +} + +// FinalizerName is the name identifying a finalizer during namespace lifecycle. +type FinalizerName string + +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here or +// in metav1. +const ( + FinalizerKubernetes FinalizerName = "kubernetes" +) + +// NamespaceStatus is information about the current status of a Namespace. +type NamespaceStatus struct { + // Phase is the current lifecycle phase of the namespace. + // +optional + Phase NamespacePhase +} + +type NamespacePhase string + +// These are the valid phases of a namespace. +const ( + // NamespaceActive means the namespace is available for use in the system + NamespaceActive NamespacePhase = "Active" + // NamespaceTerminating means the namespace is undergoing graceful termination + NamespaceTerminating NamespacePhase = "Terminating" +) + +// +genclient=true +// +nonNamespaced=true + +// A namespace provides a scope for Names. +// Use of multiple namespaces is optional +type Namespace struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the behavior of the Namespace. + // +optional + Spec NamespaceSpec + + // Status describes the current status of a Namespace + // +optional + Status NamespaceStatus +} + +// NamespaceList is a list of Namespaces. +type NamespaceList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Namespace +} + +// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. +// Deprecated in 1.7, please use the bindings subresource of pods instead. +type Binding struct { + metav1.TypeMeta + // ObjectMeta describes the object that is being bound. + // +optional + metav1.ObjectMeta + + // Target is the object to bind to. + Target ObjectReference +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +type Preconditions struct { + // Specifies the target UID. + // +optional + UID *types.UID +} + +// DeletionPropagation decides whether and how garbage collection will be performed. +type DeletionPropagation string + +const ( + // Orphans the dependents. + DeletePropagationOrphan DeletionPropagation = "Orphan" + // Deletes the object from the key-value store, the garbage collector will delete the dependents in the background. + DeletePropagationBackground DeletionPropagation = "Background" + // The object exists in the key-value store until the garbage collector deletes all the dependents whose ownerReference.blockOwnerDeletion=true from the key-value store. + // API sever will put the "DeletingDependents" finalizer on the object, and sets its deletionTimestamp. + // This policy is cascading, i.e., the dependents will be deleted with Foreground. + DeletePropagationForeground DeletionPropagation = "Foreground" +) + +// DeleteOptions may be provided when deleting an API object +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +type DeleteOptions struct { + metav1.TypeMeta + + // Optional duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // +optional + GracePeriodSeconds *int64 + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + // +optional + Preconditions *Preconditions + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + OrphanDependents *bool + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + PropagationPolicy *DeletionPropagation +} + +// ListOptions is the query options to a standard REST list call, and has future support for +// watch calls. +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +type ListOptions struct { + metav1.TypeMeta + + // A selector based on labels + LabelSelector labels.Selector + // A selector based on fields + FieldSelector fields.Selector + + // If true, partially initialized resources are included in the response. + IncludeUninitialized bool + + // If true, watch for changes to this list + Watch bool + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + // When specified for list: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + ResourceVersion string + // Timeout for the list/watch call. + TimeoutSeconds *int64 +} + +// PodLogOptions is the query options for a Pod's logs REST call +type PodLogOptions struct { + metav1.TypeMeta + + // Container for which to return logs + Container string + // If true, follow the logs for the pod + Follow bool + // If true, return previous terminated container logs + Previous bool + // A relative time in seconds before the current time from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + SinceSeconds *int64 + // An RFC3339 timestamp from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + SinceTime *metav1.Time + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. + Timestamps bool + // If set, the number of lines from the end of the logs to show. If not specified, + // logs are shown from the creation of the container or sinceSeconds or sinceTime + TailLines *int64 + // If set, the number of bytes to read from the server before terminating the + // log output. This may not display a complete final line of logging, and may return + // slightly more or slightly less than the specified limit. + LimitBytes *int64 +} + +// PodAttachOptions is the query options to a Pod's remote attach call +// TODO: merge w/ PodExecOptions below for stdin, stdout, etc +type PodAttachOptions struct { + metav1.TypeMeta + + // Stdin if true indicates that stdin is to be redirected for the attach call + // +optional + Stdin bool + + // Stdout if true indicates that stdout is to be redirected for the attach call + // +optional + Stdout bool + + // Stderr if true indicates that stderr is to be redirected for the attach call + // +optional + Stderr bool + + // TTY if true indicates that a tty will be allocated for the attach call + // +optional + TTY bool + + // Container to attach to. + // +optional + Container string +} + +// PodExecOptions is the query options to a Pod's remote exec call +type PodExecOptions struct { + metav1.TypeMeta + + // Stdin if true indicates that stdin is to be redirected for the exec call + Stdin bool + + // Stdout if true indicates that stdout is to be redirected for the exec call + Stdout bool + + // Stderr if true indicates that stderr is to be redirected for the exec call + Stderr bool + + // TTY if true indicates that a tty will be allocated for the exec call + TTY bool + + // Container in which to execute the command. + Container string + + // Command is the remote command to execute; argv array; not executed within a shell. + Command []string +} + +// PodPortForwardOptions is the query options to a Pod's port forward call +type PodPortForwardOptions struct { + metav1.TypeMeta + + // The list of ports to forward + // +optional + Ports []int32 +} + +// PodProxyOptions is the query options to a Pod's proxy call +type PodProxyOptions struct { + metav1.TypeMeta + + // Path is the URL path to use for the current proxy request + Path string +} + +// NodeProxyOptions is the query options to a Node's proxy call +type NodeProxyOptions struct { + metav1.TypeMeta + + // Path is the URL path to use for the current proxy request + Path string +} + +// ServiceProxyOptions is the query options to a Service's proxy call. +type ServiceProxyOptions struct { + metav1.TypeMeta + + // Path is the part of URLs that include service endpoints, suffixes, + // and parameters to use for the current proxy request to service. + // For example, the whole request URL is + // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. + // Path is _search?q=user:kimchy. + Path string +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +type ObjectReference struct { + // +optional + Kind string + // +optional + Namespace string + // +optional + Name string + // +optional + UID types.UID + // +optional + APIVersion string + // +optional + ResourceVersion string + + // Optional. If referring to a piece of an object instead of an entire object, this string + // should contain information to identify the sub-object. For example, if the object + // reference is to a container within a pod, this would take on a value like: + // "spec.containers{name}" (where "name" refers to the name of the container that triggered + // the event) or if no container name is specified "spec.containers[2]" (container with + // index 2 in this pod). This syntax is chosen only to have some well-defined way of + // referencing a part of an object. + // TODO: this design is not final and this field is subject to change in the future. + // +optional + FieldPath string +} + +// LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +type LocalObjectReference struct { + //TODO: Add other useful fields. apiVersion, kind, uid? + Name string +} + +type SerializedReference struct { + metav1.TypeMeta + // +optional + Reference ObjectReference +} + +type EventSource struct { + // Component from which the event is generated. + // +optional + Component string + // Node name on which the event is generated. + // +optional + Host string +} + +// Valid values for event types (new types could be added in future) +const ( + // Information only and will not cause any problems + EventTypeNormal string = "Normal" + // These events are to warn that something might go wrong + EventTypeWarning string = "Warning" +) + +// +genclient=true + +// Event is a report of an event somewhere in the cluster. +// TODO: Decide whether to store these separately or with the object they apply to. +type Event struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Required. The object that this event is about. + // +optional + InvolvedObject ObjectReference + + // Optional; this should be a short, machine understandable string that gives the reason + // for this event being generated. For example, if the event is reporting that a container + // can't start, the Reason might be "ImageNotFound". + // TODO: provide exact specification for format. + // +optional + Reason string + + // Optional. A human-readable description of the status of this operation. + // TODO: decide on maximum length. + // +optional + Message string + + // Optional. The component reporting this event. Should be a short machine understandable string. + // +optional + Source EventSource + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + // +optional + FirstTimestamp metav1.Time + + // The time at which the most recent occurrence of this event was recorded. + // +optional + LastTimestamp metav1.Time + + // The number of times this event has occurred. + // +optional + Count int32 + + // Type of this event (Normal, Warning), new types could be added in the future. + // +optional + Type string +} + +// EventList is a list of events. +type EventList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Event +} + +// List holds a list of objects, which may not be known by the server. +type List struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []runtime.Object +} + +// A type of object that is limited +type LimitType string + +const ( + // Limit that applies to all pods in a namespace + LimitTypePod LimitType = "Pod" + // Limit that applies to all containers in a namespace + LimitTypeContainer LimitType = "Container" + // Limit that applies to all persistent volume claims in a namespace + LimitTypePersistentVolumeClaim LimitType = "PersistentVolumeClaim" +) + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind +type LimitRangeItem struct { + // Type of resource that this limit applies to + // +optional + Type LimitType + // Max usage constraints on this kind by resource name + // +optional + Max ResourceList + // Min usage constraints on this kind by resource name + // +optional + Min ResourceList + // Default resource requirement limit value by resource name. + // +optional + Default ResourceList + // DefaultRequest resource requirement request value by resource name. + // +optional + DefaultRequest ResourceList + // MaxLimitRequestRatio represents the max burst value for the named resource + // +optional + MaxLimitRequestRatio ResourceList +} + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind +type LimitRangeSpec struct { + // Limits is the list of LimitRangeItem objects that are enforced + Limits []LimitRangeItem +} + +// +genclient=true + +// LimitRange sets resource usage limits for each kind of resource in a Namespace +type LimitRange struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the limits enforced + // +optional + Spec LimitRangeSpec +} + +// LimitRangeList is a list of LimitRange items. +type LimitRangeList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // Items is a list of LimitRange objects + Items []LimitRange +} + +// The following identify resource constants for Kubernetes object types +const ( + // Pods, number + ResourcePods ResourceName = "pods" + // Services, number + ResourceServices ResourceName = "services" + // ReplicationControllers, number + ResourceReplicationControllers ResourceName = "replicationcontrollers" + // ResourceQuotas, number + ResourceQuotas ResourceName = "resourcequotas" + // ResourceSecrets, number + ResourceSecrets ResourceName = "secrets" + // ResourceConfigMaps, number + ResourceConfigMaps ResourceName = "configmaps" + // ResourcePersistentVolumeClaims, number + ResourcePersistentVolumeClaims ResourceName = "persistentvolumeclaims" + // ResourceServicesNodePorts, number + ResourceServicesNodePorts ResourceName = "services.nodeports" + // ResourceServicesLoadBalancers, number + ResourceServicesLoadBalancers ResourceName = "services.loadbalancers" + // CPU request, in cores. (500m = .5 cores) + ResourceRequestsCPU ResourceName = "requests.cpu" + // Memory request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceRequestsMemory ResourceName = "requests.memory" + // Storage request, in bytes + ResourceRequestsStorage ResourceName = "requests.storage" + // CPU limit, in cores. (500m = .5 cores) + ResourceLimitsCPU ResourceName = "limits.cpu" + // Memory limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceLimitsMemory ResourceName = "limits.memory" +) + +// A ResourceQuotaScope defines a filter that must match each object tracked by a quota +type ResourceQuotaScope string + +const ( + // Match all pod objects where spec.activeDeadlineSeconds + ResourceQuotaScopeTerminating ResourceQuotaScope = "Terminating" + // Match all pod objects where !spec.activeDeadlineSeconds + ResourceQuotaScopeNotTerminating ResourceQuotaScope = "NotTerminating" + // Match all pod objects that have best effort quality of service + ResourceQuotaScopeBestEffort ResourceQuotaScope = "BestEffort" + // Match all pod objects that do not have best effort quality of service + ResourceQuotaScopeNotBestEffort ResourceQuotaScope = "NotBestEffort" +) + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota +type ResourceQuotaSpec struct { + // Hard is the set of desired hard limits for each named resource + // +optional + Hard ResourceList + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + // +optional + Scopes []ResourceQuotaScope +} + +// ResourceQuotaStatus defines the enforced hard limits and observed use +type ResourceQuotaStatus struct { + // Hard is the set of enforced hard limits for each named resource + // +optional + Hard ResourceList + // Used is the current observed total usage of the resource in the namespace + // +optional + Used ResourceList +} + +// +genclient=true + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +type ResourceQuota struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the desired quota + // +optional + Spec ResourceQuotaSpec + + // Status defines the actual enforced quota and its current usage + // +optional + Status ResourceQuotaStatus +} + +// ResourceQuotaList is a list of ResourceQuota items +type ResourceQuotaList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // Items is a list of ResourceQuota objects + Items []ResourceQuota +} + +// +genclient=true + +// Secret holds secret data of a certain type. The total bytes of the values in +// the Data field must be less than MaxSecretSize bytes. +type Secret struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Data contains the secret data. Each key must consist of alphanumeric + // characters, '-', '_' or '.'. The serialized form of the secret data is a + // base64 encoded string, representing the arbitrary (possibly non-string) + // data value here. + // +optional + Data map[string][]byte + + // Used to facilitate programmatic handling of secret data. + // +optional + Type SecretType +} + +const MaxSecretSize = 1 * 1024 * 1024 + +type SecretType string + +const ( + // SecretTypeOpaque is the default; arbitrary user-defined data + SecretTypeOpaque SecretType = "Opaque" + + // SecretTypeServiceAccountToken contains a token that identifies a service account to the API + // + // Required fields: + // - Secret.Annotations["kubernetes.io/service-account.name"] - the name of the ServiceAccount the token identifies + // - Secret.Annotations["kubernetes.io/service-account.uid"] - the UID of the ServiceAccount the token identifies + // - Secret.Data["token"] - a token that identifies the service account to the API + SecretTypeServiceAccountToken SecretType = "kubernetes.io/service-account-token" + + // ServiceAccountNameKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountNameKey = "kubernetes.io/service-account.name" + // ServiceAccountUIDKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountUIDKey = "kubernetes.io/service-account.uid" + // ServiceAccountTokenKey is the key of the required data for SecretTypeServiceAccountToken secrets + ServiceAccountTokenKey = "token" + // ServiceAccountKubeconfigKey is the key of the optional kubeconfig data for SecretTypeServiceAccountToken secrets + ServiceAccountKubeconfigKey = "kubernetes.kubeconfig" + // ServiceAccountRootCAKey is the key of the optional root certificate authority for SecretTypeServiceAccountToken secrets + ServiceAccountRootCAKey = "ca.crt" + // ServiceAccountNamespaceKey is the key of the optional namespace to use as the default for namespaced API calls + ServiceAccountNamespaceKey = "namespace" + + // SecretTypeDockercfg contains a dockercfg file that follows the same format rules as ~/.dockercfg + // + // Required fields: + // - Secret.Data[".dockercfg"] - a serialized ~/.dockercfg file + SecretTypeDockercfg SecretType = "kubernetes.io/dockercfg" + + // DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets + DockerConfigKey = ".dockercfg" + + // SecretTypeDockerConfigJson contains a dockercfg file that follows the same format rules as ~/.docker/config.json + // + // Required fields: + // - Secret.Data[".dockerconfigjson"] - a serialized ~/.docker/config.json file + SecretTypeDockerConfigJson SecretType = "kubernetes.io/dockerconfigjson" + + // DockerConfigJsonKey is the key of the required data for SecretTypeDockerConfigJson secrets + DockerConfigJsonKey = ".dockerconfigjson" + + // SecretTypeBasicAuth contains data needed for basic authentication. + // + // Required at least one of fields: + // - Secret.Data["username"] - username used for authentication + // - Secret.Data["password"] - password or token needed for authentication + SecretTypeBasicAuth SecretType = "kubernetes.io/basic-auth" + + // BasicAuthUsernameKey is the key of the username for SecretTypeBasicAuth secrets + BasicAuthUsernameKey = "username" + // BasicAuthPasswordKey is the key of the password or token for SecretTypeBasicAuth secrets + BasicAuthPasswordKey = "password" + + // SecretTypeSSHAuth contains data needed for SSH authetication. + // + // Required field: + // - Secret.Data["ssh-privatekey"] - private SSH key needed for authentication + SecretTypeSSHAuth SecretType = "kubernetes.io/ssh-auth" + + // SSHAuthPrivateKey is the key of the required SSH private key for SecretTypeSSHAuth secrets + SSHAuthPrivateKey = "ssh-privatekey" + + // SecretTypeTLS contains information about a TLS client or server secret. It + // is primarily used with TLS termination of the Ingress resource, but may be + // used in other types. + // + // Required fields: + // - Secret.Data["tls.key"] - TLS private key. + // Secret.Data["tls.crt"] - TLS certificate. + // TODO: Consider supporting different formats, specifying CA/destinationCA. + SecretTypeTLS SecretType = "kubernetes.io/tls" + + // TLSCertKey is the key for tls certificates in a TLS secret. + TLSCertKey = "tls.crt" + // TLSPrivateKeyKey is the key for the private key field in a TLS secret. + TLSPrivateKeyKey = "tls.key" +) + +type SecretList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []Secret +} + +// +genclient=true + +// ConfigMap holds configuration data for components or applications to consume. +type ConfigMap struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Data contains the configuration data. + // Each key must consist of alphanumeric characters, '-', '_' or '.'. + // +optional + Data map[string]string +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type ConfigMapList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // Items is the list of ConfigMaps. + Items []ConfigMap +} + +// These constants are for remote command execution and port forwarding and are +// used by both the client side and server side components. +// +// This is probably not the ideal place for them, but it didn't seem worth it +// to create pkg/exec and pkg/portforward just to contain a single file with +// constants in it. Suggestions for more appropriate alternatives are +// definitely welcome! +const ( + // Enable stdin for remote command execution + ExecStdinParam = "input" + // Enable stdout for remote command execution + ExecStdoutParam = "output" + // Enable stderr for remote command execution + ExecStderrParam = "error" + // Enable TTY for remote command execution + ExecTTYParam = "tty" + // Command to run for remote command execution + ExecCommandParamm = "command" + + // Name of header that specifies stream type + StreamType = "streamType" + // Value for streamType header for stdin stream + StreamTypeStdin = "stdin" + // Value for streamType header for stdout stream + StreamTypeStdout = "stdout" + // Value for streamType header for stderr stream + StreamTypeStderr = "stderr" + // Value for streamType header for data stream + StreamTypeData = "data" + // Value for streamType header for error stream + StreamTypeError = "error" + // Value for streamType header for terminal resize stream + StreamTypeResize = "resize" + + // Name of header that specifies the port being forwarded + PortHeader = "port" + // Name of header that specifies a request ID used to associate the error + // and data streams for a single forwarded connection + PortForwardRequestIDHeader = "requestID" +) + +// Type and constants for component health validation. +type ComponentConditionType string + +// These are the valid conditions for the component. +const ( + ComponentHealthy ComponentConditionType = "Healthy" +) + +type ComponentCondition struct { + Type ComponentConditionType + Status ConditionStatus + // +optional + Message string + // +optional + Error string +} + +// +genclient=true +// +nonNamespaced=true + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +type ComponentStatus struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // +optional + Conditions []ComponentCondition +} + +type ComponentStatusList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []ComponentStatus +} + +// SecurityContext holds security configuration that will be applied to a container. +// Some fields are present in both SecurityContext and PodSecurityContext. When both +// are set, the values in SecurityContext take precedence. +type SecurityContext struct { + // The capabilities to add/drop when running containers. + // Defaults to the default set of capabilities granted by the container runtime. + // +optional + Capabilities *Capabilities + // Run container in privileged mode. + // Processes in privileged containers are essentially equivalent to root on the host. + // Defaults to false. + // +optional + Privileged *bool + // The SELinux context to be applied to the container. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + SELinuxOptions *SELinuxOptions + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsUser *int64 + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsNonRoot *bool + // The read-only root filesystem allows you to restrict the locations that an application can write + // files to, ensuring the persistent data can only be written to mounts. + // +optional + ReadOnlyRootFilesystem *bool +} + +// SELinuxOptions are the labels to be applied to the container. +type SELinuxOptions struct { + // SELinux user label + // +optional + User string + // SELinux role label + // +optional + Role string + // SELinux type label + // +optional + Type string + // SELinux level label. + // +optional + Level string +} + +// RangeAllocation is an opaque API object (not exposed to end users) that can be persisted to record +// the global allocation state of the cluster. The schema of Range and Data generic, in that Range +// should be a string representation of the inputs to a range (for instance, for IP allocation it +// might be a CIDR) and Data is an opaque blob understood by an allocator which is typically a +// binary range. Consumers should use annotations to record additional information (schema version, +// data encoding hints). A range allocation should *ALWAYS* be recreatable at any time by observation +// of the cluster, thus the object is less strongly typed than most. +type RangeAllocation struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + // A string representing a unique label for a range of resources, such as a CIDR "10.0.0.0/8" or + // port range "10000-30000". Range is not strongly schema'd here. The Range is expected to define + // a start and end unless there is an implicit end. + Range string + // A byte array representing the serialized state of a range allocation. Additional clarifiers on + // the type or format of data should be represented with annotations. For IP allocations, this is + // represented as a bit array starting at the base IP of the CIDR in Range, with each bit representing + // a single allocated address (the fifth bit on CIDR 10.0.0.0/8 is 10.0.0.4). + Data []byte +} + +const ( + // "default-scheduler" is the name of default scheduler. + DefaultSchedulerName = "default-scheduler" + + // RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule + // corresponding to every RequiredDuringScheduling affinity rule. + // When the --hard-pod-affinity-weight scheduler flag is not specified, + // DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule. + DefaultHardPodAffinitySymmetricWeight int = 1 +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/BUILD b/vendor/k8s.io/client-go/pkg/api/v1/BUILD new file mode 100644 index 000000000..46e8c54bc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/BUILD @@ -0,0 +1,51 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "annotation_key_constants.go", + "conversion.go", + "defaults.go", + "doc.go", + "generate.go", + "generated.pb.go", + "meta.go", + "objectreference.go", + "register.go", + "resource.go", + "taint.go", + "toleration.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions:go_default_library", + "//vendor/k8s.io/client-go/pkg/util:go_default_library", + "//vendor/k8s.io/client-go/pkg/util/parsers:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/OWNERS b/vendor/k8s.io/client-go/pkg/api/v1/OWNERS new file mode 100755 index 000000000..fdb84b24a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/OWNERS @@ -0,0 +1,41 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- yujuhong +- brendandburns +- derekwaynecarr +- caesarxuchao +- vishh +- mikedanese +- liggitt +- nikhiljindal +- bprashanth +- gmarek +- erictune +- davidopp +- pmorie +- sttts +- kargakis +- dchen1107 +- saad-ali +- zmerlynn +- luxas +- janetkuo +- justinsb +- roberthbailey +- ncdc +- timstclair +- eparis +- timothysc +- piosz +- jsafrane +- dims +- errordeveloper +- madhusudancs +- krousey +- jayunit100 +- rootfs +- markturansky diff --git a/vendor/k8s.io/client-go/pkg/api/v1/annotation_key_constants.go b/vendor/k8s.io/client-go/pkg/api/v1/annotation_key_constants.go new file mode 100644 index 000000000..bb4588554 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/annotation_key_constants.go @@ -0,0 +1,113 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file should be consistent with pkg/api/annotation_key_constants.go. + +package v1 + +const ( + // ImagePolicyFailedOpenKey is added to pods created by failing open when the image policy + // webhook backend fails. + ImagePolicyFailedOpenKey string = "alpha.image-policy.k8s.io/failed-open" + + // PodPresetOptOutAnnotationKey represents the annotation key for a pod to exempt itself from pod preset manipulation + PodPresetOptOutAnnotationKey string = "podpreset.admission.kubernetes.io/exclude" + + // MirrorAnnotationKey represents the annotation key set by kubelets when creating mirror pods + MirrorPodAnnotationKey string = "kubernetes.io/config.mirror" + + // TolerationsAnnotationKey represents the key of tolerations data (json serialized) + // in the Annotations of a Pod. + TolerationsAnnotationKey string = "scheduler.alpha.kubernetes.io/tolerations" + + // TaintsAnnotationKey represents the key of taints data (json serialized) + // in the Annotations of a Node. + TaintsAnnotationKey string = "scheduler.alpha.kubernetes.io/taints" + + // SeccompPodAnnotationKey represents the key of a seccomp profile applied + // to all containers of a pod. + SeccompPodAnnotationKey string = "seccomp.security.alpha.kubernetes.io/pod" + + // SeccompContainerAnnotationKeyPrefix represents the key of a seccomp profile applied + // to one container of a pod. + SeccompContainerAnnotationKeyPrefix string = "container.seccomp.security.alpha.kubernetes.io/" + + // CreatedByAnnotation represents the key used to store the spec(json) + // used to create the resource. + CreatedByAnnotation = "kubernetes.io/created-by" + + // PreferAvoidPodsAnnotationKey represents the key of preferAvoidPods data (json serialized) + // in the Annotations of a Node. + PreferAvoidPodsAnnotationKey string = "scheduler.alpha.kubernetes.io/preferAvoidPods" + + // SysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Only a limited set of whitelisted and isolated sysctls is supported by + // the kubelet. Pods with other sysctls will fail to launch. + SysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/sysctls" + + // UnsafeSysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Unsafe sysctls must be explicitly enabled for a kubelet. They are properly + // namespaced to a pod or a container, but their isolation is usually unclear or weak. Their use + // is at-your-own-risk. Pods that attempt to set an unsafe sysctl that is not enabled for a kubelet + // will fail to launch. + UnsafeSysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/unsafe-sysctls" + + // ObjectTTLAnnotations represents a suggestion for kubelet for how long it can cache + // an object (e.g. secret, config map) before fetching it again from apiserver. + // This annotation can be attached to node. + ObjectTTLAnnotationKey string = "node.alpha.kubernetes.io/ttl" + + // AffinityAnnotationKey represents the key of affinity data (json serialized) + // in the Annotations of a Pod. + // TODO: remove when alpha support for affinity is removed + AffinityAnnotationKey string = "scheduler.alpha.kubernetes.io/affinity" + + // annotation key prefix used to identify non-convertible json paths. + NonConvertibleAnnotationPrefix = "non-convertible.kubernetes.io" + + kubectlPrefix = "kubectl.kubernetes.io/" + + // LastAppliedConfigAnnotation is the annotation used to store the previous + // configuration of a resource for use in a three way diff by UpdateApplyAnnotation. + LastAppliedConfigAnnotation = kubectlPrefix + "last-applied-configuration" + + // AnnotationLoadBalancerSourceRangesKey is the key of the annotation on a service to set allowed ingress ranges on their LoadBalancers + // + // It should be a comma-separated list of CIDRs, e.g. `0.0.0.0/0` to + // allow full access (the default) or `18.0.0.0/8,56.0.0.0/8` to allow + // access only from the CIDRs currently allocated to MIT & the USPS. + // + // Not all cloud providers support this annotation, though AWS & GCE do. + AnnotationLoadBalancerSourceRangesKey = "service.beta.kubernetes.io/load-balancer-source-ranges" + + // AnnotationValueExternalTrafficLocal Value of annotation to specify local endpoints behavior. + AnnotationValueExternalTrafficLocal = "OnlyLocal" + // AnnotationValueExternalTrafficGlobal Value of annotation to specify global (legacy) behavior. + AnnotationValueExternalTrafficGlobal = "Global" + + // TODO: The beta annotations have been deprecated, remove them when we release k8s 1.8. + + // BetaAnnotationHealthCheckNodePort Annotation specifying the healthcheck nodePort for the service. + // If not specified, annotation is created by the service api backend with the allocated nodePort. + // Will use user-specified nodePort value if specified by the client. + BetaAnnotationHealthCheckNodePort = "service.beta.kubernetes.io/healthcheck-nodeport" + + // BetaAnnotationExternalTraffic An annotation that denotes if this Service desires to route + // external traffic to local endpoints only. This preserves Source IP and avoids a second hop. + BetaAnnotationExternalTraffic = "service.beta.kubernetes.io/external-traffic" +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/conversion.go b/vendor/k8s.io/client-go/pkg/api/v1/conversion.go new file mode 100644 index 000000000..4ded76091 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/conversion.go @@ -0,0 +1,776 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "fmt" + "reflect" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/validation/field" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/extensions" +) + +// This is a "fast-path" that avoids reflection for common types. It focuses on the objects that are +// converted the most in the cluster. +// TODO: generate one of these for every external API group - this is to prove the impact +func addFastPathConversionFuncs(scheme *runtime.Scheme) error { + scheme.AddGenericConversionFunc(func(objA, objB interface{}, s conversion.Scope) (bool, error) { + switch a := objA.(type) { + case *Pod: + switch b := objB.(type) { + case *api.Pod: + return true, Convert_v1_Pod_To_api_Pod(a, b, s) + } + case *api.Pod: + switch b := objB.(type) { + case *Pod: + return true, Convert_api_Pod_To_v1_Pod(a, b, s) + } + + case *Event: + switch b := objB.(type) { + case *api.Event: + return true, Convert_v1_Event_To_api_Event(a, b, s) + } + case *api.Event: + switch b := objB.(type) { + case *Event: + return true, Convert_api_Event_To_v1_Event(a, b, s) + } + + case *ReplicationController: + switch b := objB.(type) { + case *api.ReplicationController: + return true, Convert_v1_ReplicationController_To_api_ReplicationController(a, b, s) + } + case *api.ReplicationController: + switch b := objB.(type) { + case *ReplicationController: + return true, Convert_api_ReplicationController_To_v1_ReplicationController(a, b, s) + } + + case *Node: + switch b := objB.(type) { + case *api.Node: + return true, Convert_v1_Node_To_api_Node(a, b, s) + } + case *api.Node: + switch b := objB.(type) { + case *Node: + return true, Convert_api_Node_To_v1_Node(a, b, s) + } + + case *Namespace: + switch b := objB.(type) { + case *api.Namespace: + return true, Convert_v1_Namespace_To_api_Namespace(a, b, s) + } + case *api.Namespace: + switch b := objB.(type) { + case *Namespace: + return true, Convert_api_Namespace_To_v1_Namespace(a, b, s) + } + + case *Service: + switch b := objB.(type) { + case *api.Service: + return true, Convert_v1_Service_To_api_Service(a, b, s) + } + case *api.Service: + switch b := objB.(type) { + case *Service: + return true, Convert_api_Service_To_v1_Service(a, b, s) + } + + case *Endpoints: + switch b := objB.(type) { + case *api.Endpoints: + return true, Convert_v1_Endpoints_To_api_Endpoints(a, b, s) + } + case *api.Endpoints: + switch b := objB.(type) { + case *Endpoints: + return true, Convert_api_Endpoints_To_v1_Endpoints(a, b, s) + } + + case *metav1.WatchEvent: + switch b := objB.(type) { + case *metav1.InternalEvent: + return true, metav1.Convert_versioned_Event_to_versioned_InternalEvent(a, b, s) + } + case *metav1.InternalEvent: + switch b := objB.(type) { + case *metav1.WatchEvent: + return true, metav1.Convert_versioned_InternalEvent_to_versioned_Event(a, b, s) + } + } + return false, nil + }) + return nil +} + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_api_Pod_To_v1_Pod, + Convert_api_PodSpec_To_v1_PodSpec, + Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec, + Convert_api_ServiceSpec_To_v1_ServiceSpec, + Convert_v1_Pod_To_api_Pod, + Convert_v1_PodSpec_To_api_PodSpec, + Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec, + Convert_v1_Secret_To_api_Secret, + Convert_v1_ServiceSpec_To_api_ServiceSpec, + Convert_v1_ResourceList_To_api_ResourceList, + Convert_v1_ReplicationController_to_extensions_ReplicaSet, + Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec, + Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus, + Convert_extensions_ReplicaSet_to_v1_ReplicationController, + Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec, + Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus, + ) + if err != nil { + return err + } + + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + for _, k := range []string{ + "Endpoints", + "ResourceQuota", + "PersistentVolumeClaim", + "Service", + "ServiceAccount", + "ConfigMap", + } { + kind := k // don't close over range variables + err = scheme.AddFieldLabelConversionFunc("v1", kind, + func(label, value string) (string, string, error) { + switch label { + case "metadata.namespace", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for %q", label, kind) + } + }, + ) + if err != nil { + return err + } + } + + // Add field conversion funcs. + err = scheme.AddFieldLabelConversionFunc("v1", "Pod", + func(label, value string) (string, string, error) { + switch label { + case "metadata.annotations", + "metadata.labels", + "metadata.name", + "metadata.namespace", + "spec.nodeName", + "spec.restartPolicy", + "spec.serviceAccountName", + "status.phase", + "status.hostIP", + "status.podIP": + return label, value, nil + // This is for backwards compatibility with old v1 clients which send spec.host + case "spec.host": + return "spec.nodeName", value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("v1", "Node", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + case "spec.unschedulable": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("v1", "ReplicationController", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", + "metadata.namespace", + "status.replicas": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("v1", "PersistentVolume", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) + if err != nil { + return err + } + if err := AddFieldLabelConversionsForEvent(scheme); err != nil { + return err + } + if err := AddFieldLabelConversionsForNamespace(scheme); err != nil { + return err + } + if err := AddFieldLabelConversionsForSecret(scheme); err != nil { + return err + } + return nil +} + +func Convert_v1_ReplicationController_to_extensions_ReplicaSet(in *ReplicationController, out *extensions.ReplicaSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec(in *ReplicationControllerSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { + out.Replicas = *in.Replicas + if in.Selector != nil { + metav1.Convert_map_to_unversioned_LabelSelector(&in.Selector, out.Selector, s) + } + if in.Template != nil { + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, &out.Template, s); err != nil { + return err + } + } + return nil +} + +func Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus(in *ReplicationControllerStatus, out *extensions.ReplicaSetStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_extensions_ReplicaSet_to_v1_ReplicationController(in *extensions.ReplicaSet, out *ReplicationController, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil { + fieldErr, ok := err.(*field.Error) + if !ok { + return err + } + if out.Annotations == nil { + out.Annotations = make(map[string]string) + } + out.Annotations[NonConvertibleAnnotationPrefix+"/"+fieldErr.Field] = reflect.ValueOf(fieldErr.BadValue).String() + } + if err := Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec(in *extensions.ReplicaSetSpec, out *ReplicationControllerSpec, s conversion.Scope) error { + out.Replicas = new(int32) + *out.Replicas = in.Replicas + out.MinReadySeconds = in.MinReadySeconds + var invalidErr error + if in.Selector != nil { + invalidErr = metav1.Convert_unversioned_LabelSelector_to_map(in.Selector, &out.Selector, s) + } + out.Template = new(PodTemplateSpec) + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, out.Template, s); err != nil { + return err + } + return invalidErr +} + +func Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus(in *extensions.ReplicaSetStatus, out *ReplicationControllerStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error { + out.Replicas = &in.Replicas + out.MinReadySeconds = in.MinReadySeconds + out.Selector = in.Selector + if in.Template != nil { + out.Template = new(PodTemplateSpec) + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + out.MinReadySeconds = in.MinReadySeconds + out.Selector = in.Selector + if in.Template != nil { + out.Template = new(api.PodTemplateSpec) + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, out.Template, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func Convert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult, out *PodStatusResult, s conversion.Scope) error { + if err := autoConvert_api_PodStatusResult_To_v1_PodStatusResult(in, out, s); err != nil { + return err + } + + if old := out.Annotations; old != nil { + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + } + if len(out.Status.InitContainerStatuses) > 0 { + if out.Annotations == nil { + out.Annotations = make(map[string]string) + } + value, err := json.Marshal(out.Status.InitContainerStatuses) + if err != nil { + return err + } + out.Annotations[PodInitContainerStatusesAnnotationKey] = string(value) + out.Annotations[PodInitContainerStatusesBetaAnnotationKey] = string(value) + } else { + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + return nil +} + +func Convert_v1_PodStatusResult_To_api_PodStatusResult(in *PodStatusResult, out *api.PodStatusResult, s conversion.Scope) error { + // TODO: sometime after we move init container to stable, remove these conversions + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainerStatusesBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainerStatusesAnnotationKey] = valueBeta + } + // Move the annotation to the internal repr. field + if value, ok := in.Annotations[PodInitContainerStatusesAnnotationKey]; ok { + var values []ContainerStatus + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Status.InitContainerStatuses = values + } + + if err := autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in, out, s); err != nil { + return err + } + if len(out.Annotations) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + return nil +} + +func Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec, out *PodTemplateSpec, s conversion.Scope) error { + if err := autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in, out, s); err != nil { + return err + } + + // TODO: sometime after we move init container to stable, remove these conversions. + if old := out.Annotations; old != nil { + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + } + if len(out.Spec.InitContainers) > 0 { + if out.Annotations == nil { + out.Annotations = make(map[string]string) + } + value, err := json.Marshal(out.Spec.InitContainers) + if err != nil { + return err + } + out.Annotations[PodInitContainersAnnotationKey] = string(value) + out.Annotations[PodInitContainersBetaAnnotationKey] = string(value) + } else { + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + } + return nil +} + +func Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *PodTemplateSpec, out *api.PodTemplateSpec, s conversion.Scope) error { + // TODO: sometime after we move init container to stable, remove these conversions + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainersBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainersAnnotationKey] = valueBeta + } + // Move the annotation to the internal repr. field + if value, ok := in.Annotations[PodInitContainersAnnotationKey]; ok { + var values []Container + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Spec.InitContainers = values + + // Call defaulters explicitly until annotations are removed + tmpPodTemp := &PodTemplate{ + Template: PodTemplateSpec{ + Spec: PodSpec{ + HostNetwork: in.Spec.HostNetwork, + InitContainers: values, + }, + }, + } + SetObjectDefaults_PodTemplate(tmpPodTemp) + in.Spec.InitContainers = tmpPodTemp.Template.Spec.InitContainers + } + + if err := autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in, out, s); err != nil { + return err + } + if len(out.Annotations) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + } + return nil +} + +// The following two PodSpec conversions are done here to support ServiceAccount +// as an alias for ServiceAccountName. +func Convert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conversion.Scope) error { + if err := autoConvert_api_PodSpec_To_v1_PodSpec(in, out, s); err != nil { + return err + } + + // DeprecatedServiceAccount is an alias for ServiceAccountName. + out.DeprecatedServiceAccount = in.ServiceAccountName + + if in.SecurityContext != nil { + // the host namespace fields have to be handled here for backward compatibility + // with v1.0.0 + out.HostPID = in.SecurityContext.HostPID + out.HostNetwork = in.SecurityContext.HostNetwork + out.HostIPC = in.SecurityContext.HostIPC + } + + return nil +} + +func Convert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conversion.Scope) error { + if err := autoConvert_v1_PodSpec_To_api_PodSpec(in, out, s); err != nil { + return err + } + + // We support DeprecatedServiceAccount as an alias for ServiceAccountName. + // If both are specified, ServiceAccountName (the new field) wins. + if in.ServiceAccountName == "" { + out.ServiceAccountName = in.DeprecatedServiceAccount + } + + // the host namespace fields have to be handled specially for backward compatibility + // with v1.0.0 + if out.SecurityContext == nil { + out.SecurityContext = new(api.PodSecurityContext) + } + out.SecurityContext.HostNetwork = in.HostNetwork + out.SecurityContext.HostPID = in.HostPID + out.SecurityContext.HostIPC = in.HostIPC + + return nil +} + +func Convert_api_Pod_To_v1_Pod(in *api.Pod, out *Pod, s conversion.Scope) error { + if err := autoConvert_api_Pod_To_v1_Pod(in, out, s); err != nil { + return err + } + + // TODO: sometime after we move init container to stable, remove these conversions + if len(out.Spec.InitContainers) > 0 || len(out.Status.InitContainerStatuses) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + if len(out.Spec.InitContainers) > 0 { + value, err := json.Marshal(out.Spec.InitContainers) + if err != nil { + return err + } + out.Annotations[PodInitContainersAnnotationKey] = string(value) + out.Annotations[PodInitContainersBetaAnnotationKey] = string(value) + } + if len(out.Status.InitContainerStatuses) > 0 { + value, err := json.Marshal(out.Status.InitContainerStatuses) + if err != nil { + return err + } + out.Annotations[PodInitContainerStatusesAnnotationKey] = string(value) + out.Annotations[PodInitContainerStatusesBetaAnnotationKey] = string(value) + } + + return nil +} + +func Convert_v1_Pod_To_api_Pod(in *Pod, out *api.Pod, s conversion.Scope) error { + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainersBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainersAnnotationKey] = valueBeta + } + // TODO: sometime after we move init container to stable, remove these conversions + // Move the annotation to the internal repr. field + if value, ok := in.Annotations[PodInitContainersAnnotationKey]; ok { + var values []Container + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Spec.InitContainers = values + // Call defaulters explicitly until annotations are removed + tmpPod := &Pod{ + Spec: PodSpec{ + HostNetwork: in.Spec.HostNetwork, + InitContainers: values, + }, + } + SetObjectDefaults_Pod(tmpPod) + in.Spec.InitContainers = tmpPod.Spec.InitContainers + } + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainerStatusesBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainerStatusesAnnotationKey] = valueBeta + } + if value, ok := in.Annotations[PodInitContainerStatusesAnnotationKey]; ok { + var values []ContainerStatus + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Status.InitContainerStatuses = values + } + + if err := autoConvert_v1_Pod_To_api_Pod(in, out, s); err != nil { + return err + } + if len(out.Annotations) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + return nil +} + +func Convert_v1_Secret_To_api_Secret(in *Secret, out *api.Secret, s conversion.Scope) error { + if err := autoConvert_v1_Secret_To_api_Secret(in, out, s); err != nil { + return err + } + + // StringData overwrites Data + if len(in.StringData) > 0 { + if out.Data == nil { + out.Data = map[string][]byte{} + } + for k, v := range in.StringData { + out.Data[k] = []byte(v) + } + } + + return nil +} + +func Convert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *PodSecurityContext, s conversion.Scope) error { + out.SupplementalGroups = in.SupplementalGroups + if in.SELinuxOptions != nil { + out.SELinuxOptions = new(SELinuxOptions) + if err := Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.FSGroup = in.FSGroup + return nil +} + +func Convert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurityContext, out *api.PodSecurityContext, s conversion.Scope) error { + out.SupplementalGroups = in.SupplementalGroups + if in.SELinuxOptions != nil { + out.SELinuxOptions = new(api.SELinuxOptions) + if err := Convert_v1_SELinuxOptions_To_api_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.FSGroup = in.FSGroup + return nil +} + +// +k8s:conversion-fn=copy-only +func Convert_v1_ResourceList_To_api_ResourceList(in *ResourceList, out *api.ResourceList, s conversion.Scope) error { + if *in == nil { + return nil + } + if *out == nil { + *out = make(api.ResourceList, len(*in)) + } + for key, val := range *in { + // Moved to defaults + // TODO(#18538): We round up resource values to milli scale to maintain API compatibility. + // In the future, we should instead reject values that need rounding. + // const milliScale = -3 + // val.RoundUp(milliScale) + + (*out)[api.ResourceName(key)] = val + } + return nil +} + +func AddFieldLabelConversionsForEvent(scheme *runtime.Scheme) error { + return scheme.AddFieldLabelConversionFunc("v1", "Event", + func(label, value string) (string, string, error) { + switch label { + case "involvedObject.kind", + "involvedObject.namespace", + "involvedObject.name", + "involvedObject.uid", + "involvedObject.apiVersion", + "involvedObject.resourceVersion", + "involvedObject.fieldPath", + "reason", + "source", + "type", + "metadata.namespace", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) +} + +func AddFieldLabelConversionsForNamespace(scheme *runtime.Scheme) error { + return scheme.AddFieldLabelConversionFunc("v1", "Namespace", + func(label, value string) (string, string, error) { + switch label { + case "status.phase", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) +} + +func AddFieldLabelConversionsForSecret(scheme *runtime.Scheme) error { + return scheme.AddFieldLabelConversionFunc("v1", "Secret", + func(label, value string) (string, string, error) { + switch label { + case "type", + "metadata.namespace", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/defaults.go b/vendor/k8s.io/client-go/pkg/api/v1/defaults.go new file mode 100644 index 000000000..a791ba7b5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/defaults.go @@ -0,0 +1,373 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/util" + "k8s.io/client-go/pkg/util/parsers" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_ResourceList(obj *ResourceList) { + for key, val := range *obj { + // TODO(#18538): We round up resource values to milli scale to maintain API compatibility. + // In the future, we should instead reject values that need rounding. + const milliScale = -3 + val.RoundUp(milliScale) + + (*obj)[ResourceName(key)] = val + } +} + +func SetDefaults_PodExecOptions(obj *PodExecOptions) { + obj.Stdout = true + obj.Stderr = true +} +func SetDefaults_PodAttachOptions(obj *PodAttachOptions) { + obj.Stdout = true + obj.Stderr = true +} +func SetDefaults_ReplicationController(obj *ReplicationController) { + var labels map[string]string + if obj.Spec.Template != nil { + labels = obj.Spec.Template.Labels + } + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + if len(obj.Spec.Selector) == 0 { + obj.Spec.Selector = labels + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } +} +func SetDefaults_Volume(obj *Volume) { + if util.AllPtrFieldsNil(&obj.VolumeSource) { + obj.VolumeSource = VolumeSource{ + EmptyDir: &EmptyDirVolumeSource{}, + } + } +} +func SetDefaults_ContainerPort(obj *ContainerPort) { + if obj.Protocol == "" { + obj.Protocol = ProtocolTCP + } +} +func SetDefaults_Container(obj *Container) { + if obj.ImagePullPolicy == "" { + // Ignore error and assume it has been validated elsewhere + _, tag, _, _ := parsers.ParseImageName(obj.Image) + + // Check image tag + if tag == "latest" { + obj.ImagePullPolicy = PullAlways + } else { + obj.ImagePullPolicy = PullIfNotPresent + } + } + if obj.TerminationMessagePath == "" { + obj.TerminationMessagePath = TerminationMessagePathDefault + } + if obj.TerminationMessagePolicy == "" { + obj.TerminationMessagePolicy = TerminationMessageReadFile + } +} +func SetDefaults_Service(obj *Service) { + if obj.Spec.SessionAffinity == "" { + obj.Spec.SessionAffinity = ServiceAffinityNone + } + if obj.Spec.Type == "" { + obj.Spec.Type = ServiceTypeClusterIP + } + for i := range obj.Spec.Ports { + sp := &obj.Spec.Ports[i] + if sp.Protocol == "" { + sp.Protocol = ProtocolTCP + } + if sp.TargetPort == intstr.FromInt(0) || sp.TargetPort == intstr.FromString("") { + sp.TargetPort = intstr.FromInt(int(sp.Port)) + } + } + // Defaults ExternalTrafficPolicy field for NodePort / LoadBalancer service + // to Global for consistency. + if _, ok := obj.Annotations[BetaAnnotationExternalTraffic]; ok { + // Don't default this field if beta annotation exists. + return + } else if (obj.Spec.Type == ServiceTypeNodePort || + obj.Spec.Type == ServiceTypeLoadBalancer) && + obj.Spec.ExternalTrafficPolicy == "" { + obj.Spec.ExternalTrafficPolicy = ServiceExternalTrafficPolicyTypeCluster + } +} +func SetDefaults_Pod(obj *Pod) { + // If limits are specified, but requests are not, default requests to limits + // This is done here rather than a more specific defaulting pass on ResourceRequirements + // because we only want this defaulting semantic to take place on a Pod and not a PodTemplate + for i := range obj.Spec.Containers { + // set requests to limits if requests are not specified, but limits are + if obj.Spec.Containers[i].Resources.Limits != nil { + if obj.Spec.Containers[i].Resources.Requests == nil { + obj.Spec.Containers[i].Resources.Requests = make(ResourceList) + } + for key, value := range obj.Spec.Containers[i].Resources.Limits { + if _, exists := obj.Spec.Containers[i].Resources.Requests[key]; !exists { + obj.Spec.Containers[i].Resources.Requests[key] = *(value.Copy()) + } + } + } + } + for i := range obj.Spec.InitContainers { + if obj.Spec.InitContainers[i].Resources.Limits != nil { + if obj.Spec.InitContainers[i].Resources.Requests == nil { + obj.Spec.InitContainers[i].Resources.Requests = make(ResourceList) + } + for key, value := range obj.Spec.InitContainers[i].Resources.Limits { + if _, exists := obj.Spec.InitContainers[i].Resources.Requests[key]; !exists { + obj.Spec.InitContainers[i].Resources.Requests[key] = *(value.Copy()) + } + } + } + } +} +func SetDefaults_PodSpec(obj *PodSpec) { + if obj.DNSPolicy == "" { + obj.DNSPolicy = DNSClusterFirst + } + if obj.RestartPolicy == "" { + obj.RestartPolicy = RestartPolicyAlways + } + if obj.HostNetwork { + defaultHostNetworkPorts(&obj.Containers) + defaultHostNetworkPorts(&obj.InitContainers) + } + if obj.SecurityContext == nil { + obj.SecurityContext = &PodSecurityContext{} + } + if obj.TerminationGracePeriodSeconds == nil { + period := int64(DefaultTerminationGracePeriodSeconds) + obj.TerminationGracePeriodSeconds = &period + } + if obj.SchedulerName == "" { + obj.SchedulerName = DefaultSchedulerName + } +} +func SetDefaults_Probe(obj *Probe) { + if obj.TimeoutSeconds == 0 { + obj.TimeoutSeconds = 1 + } + if obj.PeriodSeconds == 0 { + obj.PeriodSeconds = 10 + } + if obj.SuccessThreshold == 0 { + obj.SuccessThreshold = 1 + } + if obj.FailureThreshold == 0 { + obj.FailureThreshold = 3 + } +} +func SetDefaults_SecretVolumeSource(obj *SecretVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(SecretVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_ConfigMapVolumeSource(obj *ConfigMapVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(ConfigMapVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_DownwardAPIVolumeSource(obj *DownwardAPIVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(DownwardAPIVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_Secret(obj *Secret) { + if obj.Type == "" { + obj.Type = SecretTypeOpaque + } +} +func SetDefaults_ProjectedVolumeSource(obj *ProjectedVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(ProjectedVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_PersistentVolume(obj *PersistentVolume) { + if obj.Status.Phase == "" { + obj.Status.Phase = VolumePending + } + if obj.Spec.PersistentVolumeReclaimPolicy == "" { + obj.Spec.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimRetain + } +} +func SetDefaults_PersistentVolumeClaim(obj *PersistentVolumeClaim) { + if obj.Status.Phase == "" { + obj.Status.Phase = ClaimPending + } +} +func SetDefaults_ISCSIVolumeSource(obj *ISCSIVolumeSource) { + if obj.ISCSIInterface == "" { + obj.ISCSIInterface = "default" + } +} +func SetDefaults_AzureDiskVolumeSource(obj *AzureDiskVolumeSource) { + if obj.CachingMode == nil { + obj.CachingMode = new(AzureDataDiskCachingMode) + *obj.CachingMode = AzureDataDiskCachingReadWrite + } + if obj.Kind == nil { + obj.Kind = new(AzureDataDiskKind) + *obj.Kind = AzureSharedBlobDisk + } + if obj.FSType == nil { + obj.FSType = new(string) + *obj.FSType = "ext4" + } + if obj.ReadOnly == nil { + obj.ReadOnly = new(bool) + *obj.ReadOnly = false + } +} +func SetDefaults_Endpoints(obj *Endpoints) { + for i := range obj.Subsets { + ss := &obj.Subsets[i] + for i := range ss.Ports { + ep := &ss.Ports[i] + if ep.Protocol == "" { + ep.Protocol = ProtocolTCP + } + } + } +} +func SetDefaults_HTTPGetAction(obj *HTTPGetAction) { + if obj.Path == "" { + obj.Path = "/" + } + if obj.Scheme == "" { + obj.Scheme = URISchemeHTTP + } +} +func SetDefaults_NamespaceStatus(obj *NamespaceStatus) { + if obj.Phase == "" { + obj.Phase = NamespaceActive + } +} +func SetDefaults_Node(obj *Node) { + if obj.Spec.ExternalID == "" { + obj.Spec.ExternalID = obj.Name + } +} +func SetDefaults_NodeStatus(obj *NodeStatus) { + if obj.Allocatable == nil && obj.Capacity != nil { + obj.Allocatable = make(ResourceList, len(obj.Capacity)) + for key, value := range obj.Capacity { + obj.Allocatable[key] = *(value.Copy()) + } + obj.Allocatable = obj.Capacity + } +} +func SetDefaults_ObjectFieldSelector(obj *ObjectFieldSelector) { + if obj.APIVersion == "" { + obj.APIVersion = "v1" + } +} +func SetDefaults_LimitRangeItem(obj *LimitRangeItem) { + // for container limits, we apply default values + if obj.Type == LimitTypeContainer { + + if obj.Default == nil { + obj.Default = make(ResourceList) + } + if obj.DefaultRequest == nil { + obj.DefaultRequest = make(ResourceList) + } + + // If a default limit is unspecified, but the max is specified, default the limit to the max + for key, value := range obj.Max { + if _, exists := obj.Default[key]; !exists { + obj.Default[key] = *(value.Copy()) + } + } + // If a default limit is specified, but the default request is not, default request to limit + for key, value := range obj.Default { + if _, exists := obj.DefaultRequest[key]; !exists { + obj.DefaultRequest[key] = *(value.Copy()) + } + } + // If a default request is not specified, but the min is provided, default request to the min + for key, value := range obj.Min { + if _, exists := obj.DefaultRequest[key]; !exists { + obj.DefaultRequest[key] = *(value.Copy()) + } + } + } +} +func SetDefaults_ConfigMap(obj *ConfigMap) { + if obj.Data == nil { + obj.Data = make(map[string]string) + } +} + +// With host networking default all container ports to host ports. +func defaultHostNetworkPorts(containers *[]Container) { + for i := range *containers { + for j := range (*containers)[i].Ports { + if (*containers)[i].Ports[j].HostPort == 0 { + (*containers)[i].Ports[j].HostPort = (*containers)[i].Ports[j].ContainerPort + } + } + } +} + +func SetDefaults_RBDVolumeSource(obj *RBDVolumeSource) { + if obj.RBDPool == "" { + obj.RBDPool = "rbd" + } + if obj.RadosUser == "" { + obj.RadosUser = "admin" + } + if obj.Keyring == "" { + obj.Keyring = "/etc/ceph/keyring" + } +} + +func SetDefaults_ScaleIOVolumeSource(obj *ScaleIOVolumeSource) { + if obj.ProtectionDomain == "" { + obj.ProtectionDomain = "default" + } + if obj.StoragePool == "" { + obj.StoragePool = "default" + } + if obj.StorageMode == "" { + obj.StorageMode = "ThinProvisioned" + } + if obj.FSType == "" { + obj.FSType = "xfs" + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/doc.go b/vendor/k8s.io/client-go/pkg/api/v1/doc.go new file mode 100644 index 000000000..0fdd87f75 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1 is the v1 version of the API. +package v1 diff --git a/vendor/k8s.io/client-go/pkg/api/v1/generate.go b/vendor/k8s.io/client-go/pkg/api/v1/generate.go new file mode 100644 index 000000000..b8c44e4c7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/generate.go @@ -0,0 +1,64 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + utilrand "k8s.io/apimachinery/pkg/util/rand" +) + +// NameGenerator generates names for objects. Some backends may have more information +// available to guide selection of new names and this interface hides those details. +type NameGenerator interface { + // GenerateName generates a valid name from the base name, adding a random suffix to the + // the base. If base is valid, the returned name must also be valid. The generator is + // responsible for knowing the maximum valid name length. + GenerateName(base string) string +} + +// GenerateName will resolve the object name of the provided ObjectMeta to a generated version if +// necessary. It expects that validation for ObjectMeta has already completed (that Base is a +// valid name) and that the NameGenerator generates a name that is also valid. +func GenerateName(u NameGenerator, meta *ObjectMeta) { + if len(meta.GenerateName) == 0 || len(meta.Name) != 0 { + return + } + meta.Name = u.GenerateName(meta.GenerateName) +} + +// simpleNameGenerator generates random names. +type simpleNameGenerator struct{} + +// SimpleNameGenerator is a generator that returns the name plus a random suffix of five alphanumerics +// when a name is requested. The string is guaranteed to not exceed the length of a standard Kubernetes +// name (63 characters) +var SimpleNameGenerator NameGenerator = simpleNameGenerator{} + +const ( + // TODO: make this flexible for non-core resources with alternate naming rules. + maxNameLength = 63 + randomLength = 5 + maxGeneratedNameLength = maxNameLength - randomLength +) + +func (simpleNameGenerator) GenerateName(base string) string { + if len(base) > maxGeneratedNameLength { + base = base[:maxGeneratedNameLength] + } + return fmt.Sprintf("%s%s", base, utilrand.String(randomLength)) +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/api/v1/generated.pb.go new file mode 100644 index 000000000..dcfc99ea0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/generated.pb.go @@ -0,0 +1,45110 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/api/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/api/v1/generated.proto + + It has these top-level messages: + AWSElasticBlockStoreVolumeSource + Affinity + AttachedVolume + AvoidPods + AzureDiskVolumeSource + AzureFileVolumeSource + Binding + Capabilities + CephFSVolumeSource + CinderVolumeSource + ComponentCondition + ComponentStatus + ComponentStatusList + ConfigMap + ConfigMapEnvSource + ConfigMapKeySelector + ConfigMapList + ConfigMapProjection + ConfigMapVolumeSource + Container + ContainerImage + ContainerPort + ContainerState + ContainerStateRunning + ContainerStateTerminated + ContainerStateWaiting + ContainerStatus + DaemonEndpoint + DeleteOptions + DownwardAPIProjection + DownwardAPIVolumeFile + DownwardAPIVolumeSource + EmptyDirVolumeSource + EndpointAddress + EndpointPort + EndpointSubset + Endpoints + EndpointsList + EnvFromSource + EnvVar + EnvVarSource + Event + EventList + EventSource + ExecAction + FCVolumeSource + FlexVolumeSource + FlockerVolumeSource + GCEPersistentDiskVolumeSource + GitRepoVolumeSource + GlusterfsVolumeSource + HTTPGetAction + HTTPHeader + Handler + HostAlias + HostPathVolumeSource + ISCSIVolumeSource + KeyToPath + Lifecycle + LimitRange + LimitRangeItem + LimitRangeList + LimitRangeSpec + List + ListOptions + LoadBalancerIngress + LoadBalancerStatus + LocalObjectReference + LocalVolumeSource + NFSVolumeSource + Namespace + NamespaceList + NamespaceSpec + NamespaceStatus + Node + NodeAddress + NodeAffinity + NodeCondition + NodeDaemonEndpoints + NodeList + NodeProxyOptions + NodeResources + NodeSelector + NodeSelectorRequirement + NodeSelectorTerm + NodeSpec + NodeStatus + NodeSystemInfo + ObjectFieldSelector + ObjectMeta + ObjectReference + PersistentVolume + PersistentVolumeClaim + PersistentVolumeClaimList + PersistentVolumeClaimSpec + PersistentVolumeClaimStatus + PersistentVolumeClaimVolumeSource + PersistentVolumeList + PersistentVolumeSource + PersistentVolumeSpec + PersistentVolumeStatus + PhotonPersistentDiskVolumeSource + Pod + PodAffinity + PodAffinityTerm + PodAntiAffinity + PodAttachOptions + PodCondition + PodExecOptions + PodList + PodLogOptions + PodPortForwardOptions + PodProxyOptions + PodSecurityContext + PodSignature + PodSpec + PodStatus + PodStatusResult + PodTemplate + PodTemplateList + PodTemplateSpec + PortworxVolumeSource + Preconditions + PreferAvoidPodsEntry + PreferredSchedulingTerm + Probe + ProjectedVolumeSource + QuobyteVolumeSource + RBDVolumeSource + RangeAllocation + ReplicationController + ReplicationControllerCondition + ReplicationControllerList + ReplicationControllerSpec + ReplicationControllerStatus + ResourceFieldSelector + ResourceQuota + ResourceQuotaList + ResourceQuotaSpec + ResourceQuotaStatus + ResourceRequirements + SELinuxOptions + ScaleIOVolumeSource + Secret + SecretEnvSource + SecretKeySelector + SecretList + SecretProjection + SecretVolumeSource + SecurityContext + SerializedReference + Service + ServiceAccount + ServiceAccountList + ServiceList + ServicePort + ServiceProxyOptions + ServiceSpec + ServiceStatus + StorageOSPersistentVolumeSource + StorageOSVolumeSource + Sysctl + TCPSocketAction + Taint + Toleration + Volume + VolumeMount + VolumeProjection + VolumeSource + VsphereVirtualDiskVolumeSource + WeightedPodAffinityTerm +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_api_resource "k8s.io/apimachinery/pkg/api/resource" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" +import k8s_io_apimachinery_pkg_runtime "k8s.io/apimachinery/pkg/runtime" + +import k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *AWSElasticBlockStoreVolumeSource) Reset() { *m = AWSElasticBlockStoreVolumeSource{} } +func (*AWSElasticBlockStoreVolumeSource) ProtoMessage() {} +func (*AWSElasticBlockStoreVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *Affinity) Reset() { *m = Affinity{} } +func (*Affinity) ProtoMessage() {} +func (*Affinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *AttachedVolume) Reset() { *m = AttachedVolume{} } +func (*AttachedVolume) ProtoMessage() {} +func (*AttachedVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *AvoidPods) Reset() { *m = AvoidPods{} } +func (*AvoidPods) ProtoMessage() {} +func (*AvoidPods) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *AzureDiskVolumeSource) Reset() { *m = AzureDiskVolumeSource{} } +func (*AzureDiskVolumeSource) ProtoMessage() {} +func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *AzureFileVolumeSource) Reset() { *m = AzureFileVolumeSource{} } +func (*AzureFileVolumeSource) ProtoMessage() {} +func (*AzureFileVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *Binding) Reset() { *m = Binding{} } +func (*Binding) ProtoMessage() {} +func (*Binding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *Capabilities) Reset() { *m = Capabilities{} } +func (*Capabilities) ProtoMessage() {} +func (*Capabilities) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *CephFSVolumeSource) Reset() { *m = CephFSVolumeSource{} } +func (*CephFSVolumeSource) ProtoMessage() {} +func (*CephFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *CinderVolumeSource) Reset() { *m = CinderVolumeSource{} } +func (*CinderVolumeSource) ProtoMessage() {} +func (*CinderVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *ComponentCondition) Reset() { *m = ComponentCondition{} } +func (*ComponentCondition) ProtoMessage() {} +func (*ComponentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *ComponentStatus) Reset() { *m = ComponentStatus{} } +func (*ComponentStatus) ProtoMessage() {} +func (*ComponentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ComponentStatusList) Reset() { *m = ComponentStatusList{} } +func (*ComponentStatusList) ProtoMessage() {} +func (*ComponentStatusList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ConfigMap) Reset() { *m = ConfigMap{} } +func (*ConfigMap) ProtoMessage() {} +func (*ConfigMap) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *ConfigMapEnvSource) Reset() { *m = ConfigMapEnvSource{} } +func (*ConfigMapEnvSource) ProtoMessage() {} +func (*ConfigMapEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *ConfigMapKeySelector) Reset() { *m = ConfigMapKeySelector{} } +func (*ConfigMapKeySelector) ProtoMessage() {} +func (*ConfigMapKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ConfigMapList) Reset() { *m = ConfigMapList{} } +func (*ConfigMapList) ProtoMessage() {} +func (*ConfigMapList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *ConfigMapProjection) Reset() { *m = ConfigMapProjection{} } +func (*ConfigMapProjection) ProtoMessage() {} +func (*ConfigMapProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *ConfigMapVolumeSource) Reset() { *m = ConfigMapVolumeSource{} } +func (*ConfigMapVolumeSource) ProtoMessage() {} +func (*ConfigMapVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *Container) Reset() { *m = Container{} } +func (*Container) ProtoMessage() {} +func (*Container) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *ContainerImage) Reset() { *m = ContainerImage{} } +func (*ContainerImage) ProtoMessage() {} +func (*ContainerImage) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *ContainerPort) Reset() { *m = ContainerPort{} } +func (*ContainerPort) ProtoMessage() {} +func (*ContainerPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *ContainerState) Reset() { *m = ContainerState{} } +func (*ContainerState) ProtoMessage() {} +func (*ContainerState) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *ContainerStateRunning) Reset() { *m = ContainerStateRunning{} } +func (*ContainerStateRunning) ProtoMessage() {} +func (*ContainerStateRunning) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *ContainerStateTerminated) Reset() { *m = ContainerStateTerminated{} } +func (*ContainerStateTerminated) ProtoMessage() {} +func (*ContainerStateTerminated) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{24} +} + +func (m *ContainerStateWaiting) Reset() { *m = ContainerStateWaiting{} } +func (*ContainerStateWaiting) ProtoMessage() {} +func (*ContainerStateWaiting) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } +func (*ContainerStatus) ProtoMessage() {} +func (*ContainerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *DaemonEndpoint) Reset() { *m = DaemonEndpoint{} } +func (*DaemonEndpoint) ProtoMessage() {} +func (*DaemonEndpoint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *DeleteOptions) Reset() { *m = DeleteOptions{} } +func (*DeleteOptions) ProtoMessage() {} +func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } + +func (m *DownwardAPIProjection) Reset() { *m = DownwardAPIProjection{} } +func (*DownwardAPIProjection) ProtoMessage() {} +func (*DownwardAPIProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *DownwardAPIVolumeFile) Reset() { *m = DownwardAPIVolumeFile{} } +func (*DownwardAPIVolumeFile) ProtoMessage() {} +func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *DownwardAPIVolumeSource) Reset() { *m = DownwardAPIVolumeSource{} } +func (*DownwardAPIVolumeSource) ProtoMessage() {} +func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{31} +} + +func (m *EmptyDirVolumeSource) Reset() { *m = EmptyDirVolumeSource{} } +func (*EmptyDirVolumeSource) ProtoMessage() {} +func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *EndpointAddress) Reset() { *m = EndpointAddress{} } +func (*EndpointAddress) ProtoMessage() {} +func (*EndpointAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } + +func (m *EndpointPort) Reset() { *m = EndpointPort{} } +func (*EndpointPort) ProtoMessage() {} +func (*EndpointPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } + +func (m *EndpointSubset) Reset() { *m = EndpointSubset{} } +func (*EndpointSubset) ProtoMessage() {} +func (*EndpointSubset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *Endpoints) Reset() { *m = Endpoints{} } +func (*Endpoints) ProtoMessage() {} +func (*Endpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } + +func (m *EndpointsList) Reset() { *m = EndpointsList{} } +func (*EndpointsList) ProtoMessage() {} +func (*EndpointsList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } + +func (m *EnvFromSource) Reset() { *m = EnvFromSource{} } +func (*EnvFromSource) ProtoMessage() {} +func (*EnvFromSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } + +func (m *EnvVar) Reset() { *m = EnvVar{} } +func (*EnvVar) ProtoMessage() {} +func (*EnvVar) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } + +func (m *EnvVarSource) Reset() { *m = EnvVarSource{} } +func (*EnvVarSource) ProtoMessage() {} +func (*EnvVarSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } + +func (m *Event) Reset() { *m = Event{} } +func (*Event) ProtoMessage() {} +func (*Event) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } + +func (m *EventList) Reset() { *m = EventList{} } +func (*EventList) ProtoMessage() {} +func (*EventList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } + +func (m *EventSource) Reset() { *m = EventSource{} } +func (*EventSource) ProtoMessage() {} +func (*EventSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } + +func (m *ExecAction) Reset() { *m = ExecAction{} } +func (*ExecAction) ProtoMessage() {} +func (*ExecAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } + +func (m *FCVolumeSource) Reset() { *m = FCVolumeSource{} } +func (*FCVolumeSource) ProtoMessage() {} +func (*FCVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } + +func (m *FlexVolumeSource) Reset() { *m = FlexVolumeSource{} } +func (*FlexVolumeSource) ProtoMessage() {} +func (*FlexVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } + +func (m *FlockerVolumeSource) Reset() { *m = FlockerVolumeSource{} } +func (*FlockerVolumeSource) ProtoMessage() {} +func (*FlockerVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{47} } + +func (m *GCEPersistentDiskVolumeSource) Reset() { *m = GCEPersistentDiskVolumeSource{} } +func (*GCEPersistentDiskVolumeSource) ProtoMessage() {} +func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{48} +} + +func (m *GitRepoVolumeSource) Reset() { *m = GitRepoVolumeSource{} } +func (*GitRepoVolumeSource) ProtoMessage() {} +func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } + +func (m *GlusterfsVolumeSource) Reset() { *m = GlusterfsVolumeSource{} } +func (*GlusterfsVolumeSource) ProtoMessage() {} +func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{50} } + +func (m *HTTPGetAction) Reset() { *m = HTTPGetAction{} } +func (*HTTPGetAction) ProtoMessage() {} +func (*HTTPGetAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{51} } + +func (m *HTTPHeader) Reset() { *m = HTTPHeader{} } +func (*HTTPHeader) ProtoMessage() {} +func (*HTTPHeader) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } + +func (m *Handler) Reset() { *m = Handler{} } +func (*Handler) ProtoMessage() {} +func (*Handler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } + +func (m *HostAlias) Reset() { *m = HostAlias{} } +func (*HostAlias) ProtoMessage() {} +func (*HostAlias) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } + +func (m *HostPathVolumeSource) Reset() { *m = HostPathVolumeSource{} } +func (*HostPathVolumeSource) ProtoMessage() {} +func (*HostPathVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } + +func (m *ISCSIVolumeSource) Reset() { *m = ISCSIVolumeSource{} } +func (*ISCSIVolumeSource) ProtoMessage() {} +func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{56} } + +func (m *KeyToPath) Reset() { *m = KeyToPath{} } +func (*KeyToPath) ProtoMessage() {} +func (*KeyToPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } + +func (m *Lifecycle) Reset() { *m = Lifecycle{} } +func (*Lifecycle) ProtoMessage() {} +func (*Lifecycle) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{58} } + +func (m *LimitRange) Reset() { *m = LimitRange{} } +func (*LimitRange) ProtoMessage() {} +func (*LimitRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{59} } + +func (m *LimitRangeItem) Reset() { *m = LimitRangeItem{} } +func (*LimitRangeItem) ProtoMessage() {} +func (*LimitRangeItem) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } + +func (m *LimitRangeList) Reset() { *m = LimitRangeList{} } +func (*LimitRangeList) ProtoMessage() {} +func (*LimitRangeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{61} } + +func (m *LimitRangeSpec) Reset() { *m = LimitRangeSpec{} } +func (*LimitRangeSpec) ProtoMessage() {} +func (*LimitRangeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{62} } + +func (m *List) Reset() { *m = List{} } +func (*List) ProtoMessage() {} +func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{63} } + +func (m *ListOptions) Reset() { *m = ListOptions{} } +func (*ListOptions) ProtoMessage() {} +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{64} } + +func (m *LoadBalancerIngress) Reset() { *m = LoadBalancerIngress{} } +func (*LoadBalancerIngress) ProtoMessage() {} +func (*LoadBalancerIngress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{65} } + +func (m *LoadBalancerStatus) Reset() { *m = LoadBalancerStatus{} } +func (*LoadBalancerStatus) ProtoMessage() {} +func (*LoadBalancerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{66} } + +func (m *LocalObjectReference) Reset() { *m = LocalObjectReference{} } +func (*LocalObjectReference) ProtoMessage() {} +func (*LocalObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{67} } + +func (m *LocalVolumeSource) Reset() { *m = LocalVolumeSource{} } +func (*LocalVolumeSource) ProtoMessage() {} +func (*LocalVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{68} } + +func (m *NFSVolumeSource) Reset() { *m = NFSVolumeSource{} } +func (*NFSVolumeSource) ProtoMessage() {} +func (*NFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{69} } + +func (m *Namespace) Reset() { *m = Namespace{} } +func (*Namespace) ProtoMessage() {} +func (*Namespace) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{70} } + +func (m *NamespaceList) Reset() { *m = NamespaceList{} } +func (*NamespaceList) ProtoMessage() {} +func (*NamespaceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{71} } + +func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } +func (*NamespaceSpec) ProtoMessage() {} +func (*NamespaceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{72} } + +func (m *NamespaceStatus) Reset() { *m = NamespaceStatus{} } +func (*NamespaceStatus) ProtoMessage() {} +func (*NamespaceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{73} } + +func (m *Node) Reset() { *m = Node{} } +func (*Node) ProtoMessage() {} +func (*Node) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{74} } + +func (m *NodeAddress) Reset() { *m = NodeAddress{} } +func (*NodeAddress) ProtoMessage() {} +func (*NodeAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{75} } + +func (m *NodeAffinity) Reset() { *m = NodeAffinity{} } +func (*NodeAffinity) ProtoMessage() {} +func (*NodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } + +func (m *NodeCondition) Reset() { *m = NodeCondition{} } +func (*NodeCondition) ProtoMessage() {} +func (*NodeCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{77} } + +func (m *NodeDaemonEndpoints) Reset() { *m = NodeDaemonEndpoints{} } +func (*NodeDaemonEndpoints) ProtoMessage() {} +func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{78} } + +func (m *NodeList) Reset() { *m = NodeList{} } +func (*NodeList) ProtoMessage() {} +func (*NodeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } + +func (m *NodeProxyOptions) Reset() { *m = NodeProxyOptions{} } +func (*NodeProxyOptions) ProtoMessage() {} +func (*NodeProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } + +func (m *NodeResources) Reset() { *m = NodeResources{} } +func (*NodeResources) ProtoMessage() {} +func (*NodeResources) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } + +func (m *NodeSelector) Reset() { *m = NodeSelector{} } +func (*NodeSelector) ProtoMessage() {} +func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } + +func (m *NodeSelectorRequirement) Reset() { *m = NodeSelectorRequirement{} } +func (*NodeSelectorRequirement) ProtoMessage() {} +func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{83} +} + +func (m *NodeSelectorTerm) Reset() { *m = NodeSelectorTerm{} } +func (*NodeSelectorTerm) ProtoMessage() {} +func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } + +func (m *NodeSpec) Reset() { *m = NodeSpec{} } +func (*NodeSpec) ProtoMessage() {} +func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } + +func (m *NodeStatus) Reset() { *m = NodeStatus{} } +func (*NodeStatus) ProtoMessage() {} +func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{86} } + +func (m *NodeSystemInfo) Reset() { *m = NodeSystemInfo{} } +func (*NodeSystemInfo) ProtoMessage() {} +func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{87} } + +func (m *ObjectFieldSelector) Reset() { *m = ObjectFieldSelector{} } +func (*ObjectFieldSelector) ProtoMessage() {} +func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{88} } + +func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } +func (*ObjectMeta) ProtoMessage() {} +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{89} } + +func (m *ObjectReference) Reset() { *m = ObjectReference{} } +func (*ObjectReference) ProtoMessage() {} +func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{90} } + +func (m *PersistentVolume) Reset() { *m = PersistentVolume{} } +func (*PersistentVolume) ProtoMessage() {} +func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{91} } + +func (m *PersistentVolumeClaim) Reset() { *m = PersistentVolumeClaim{} } +func (*PersistentVolumeClaim) ProtoMessage() {} +func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{92} } + +func (m *PersistentVolumeClaimList) Reset() { *m = PersistentVolumeClaimList{} } +func (*PersistentVolumeClaimList) ProtoMessage() {} +func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{93} +} + +func (m *PersistentVolumeClaimSpec) Reset() { *m = PersistentVolumeClaimSpec{} } +func (*PersistentVolumeClaimSpec) ProtoMessage() {} +func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{94} +} + +func (m *PersistentVolumeClaimStatus) Reset() { *m = PersistentVolumeClaimStatus{} } +func (*PersistentVolumeClaimStatus) ProtoMessage() {} +func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{95} +} + +func (m *PersistentVolumeClaimVolumeSource) Reset() { *m = PersistentVolumeClaimVolumeSource{} } +func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {} +func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{96} +} + +func (m *PersistentVolumeList) Reset() { *m = PersistentVolumeList{} } +func (*PersistentVolumeList) ProtoMessage() {} +func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{97} } + +func (m *PersistentVolumeSource) Reset() { *m = PersistentVolumeSource{} } +func (*PersistentVolumeSource) ProtoMessage() {} +func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{98} } + +func (m *PersistentVolumeSpec) Reset() { *m = PersistentVolumeSpec{} } +func (*PersistentVolumeSpec) ProtoMessage() {} +func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{99} } + +func (m *PersistentVolumeStatus) Reset() { *m = PersistentVolumeStatus{} } +func (*PersistentVolumeStatus) ProtoMessage() {} +func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{100} +} + +func (m *PhotonPersistentDiskVolumeSource) Reset() { *m = PhotonPersistentDiskVolumeSource{} } +func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {} +func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{101} +} + +func (m *Pod) Reset() { *m = Pod{} } +func (*Pod) ProtoMessage() {} +func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{102} } + +func (m *PodAffinity) Reset() { *m = PodAffinity{} } +func (*PodAffinity) ProtoMessage() {} +func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{103} } + +func (m *PodAffinityTerm) Reset() { *m = PodAffinityTerm{} } +func (*PodAffinityTerm) ProtoMessage() {} +func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{104} } + +func (m *PodAntiAffinity) Reset() { *m = PodAntiAffinity{} } +func (*PodAntiAffinity) ProtoMessage() {} +func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{105} } + +func (m *PodAttachOptions) Reset() { *m = PodAttachOptions{} } +func (*PodAttachOptions) ProtoMessage() {} +func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{106} } + +func (m *PodCondition) Reset() { *m = PodCondition{} } +func (*PodCondition) ProtoMessage() {} +func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } + +func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } +func (*PodExecOptions) ProtoMessage() {} +func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } + +func (m *PodList) Reset() { *m = PodList{} } +func (*PodList) ProtoMessage() {} +func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } + +func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } +func (*PodLogOptions) ProtoMessage() {} +func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } + +func (m *PodPortForwardOptions) Reset() { *m = PodPortForwardOptions{} } +func (*PodPortForwardOptions) ProtoMessage() {} +func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } + +func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } +func (*PodProxyOptions) ProtoMessage() {} +func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } + +func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } +func (*PodSecurityContext) ProtoMessage() {} +func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } + +func (m *PodSignature) Reset() { *m = PodSignature{} } +func (*PodSignature) ProtoMessage() {} +func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } + +func (m *PodSpec) Reset() { *m = PodSpec{} } +func (*PodSpec) ProtoMessage() {} +func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } + +func (m *PodStatus) Reset() { *m = PodStatus{} } +func (*PodStatus) ProtoMessage() {} +func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } + +func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } +func (*PodStatusResult) ProtoMessage() {} +func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } + +func (m *PodTemplate) Reset() { *m = PodTemplate{} } +func (*PodTemplate) ProtoMessage() {} +func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } + +func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } +func (*PodTemplateList) ProtoMessage() {} +func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } + +func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } +func (*PodTemplateSpec) ProtoMessage() {} +func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } + +func (m *PortworxVolumeSource) Reset() { *m = PortworxVolumeSource{} } +func (*PortworxVolumeSource) ProtoMessage() {} +func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } + +func (m *Preconditions) Reset() { *m = Preconditions{} } +func (*Preconditions) ProtoMessage() {} +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } + +func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } +func (*PreferAvoidPodsEntry) ProtoMessage() {} +func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } + +func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } +func (*PreferredSchedulingTerm) ProtoMessage() {} +func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{124} +} + +func (m *Probe) Reset() { *m = Probe{} } +func (*Probe) ProtoMessage() {} +func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } + +func (m *ProjectedVolumeSource) Reset() { *m = ProjectedVolumeSource{} } +func (*ProjectedVolumeSource) ProtoMessage() {} +func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } + +func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } +func (*QuobyteVolumeSource) ProtoMessage() {} +func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } + +func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } +func (*RBDVolumeSource) ProtoMessage() {} +func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } + +func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } +func (*RangeAllocation) ProtoMessage() {} +func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } + +func (m *ReplicationController) Reset() { *m = ReplicationController{} } +func (*ReplicationController) ProtoMessage() {} +func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } + +func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } +func (*ReplicationControllerCondition) ProtoMessage() {} +func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{131} +} + +func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } +func (*ReplicationControllerList) ProtoMessage() {} +func (*ReplicationControllerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{132} +} + +func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } +func (*ReplicationControllerSpec) ProtoMessage() {} +func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{133} +} + +func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } +func (*ReplicationControllerStatus) ProtoMessage() {} +func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{134} +} + +func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } +func (*ResourceFieldSelector) ProtoMessage() {} +func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{135} } + +func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } +func (*ResourceQuota) ProtoMessage() {} +func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{136} } + +func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } +func (*ResourceQuotaList) ProtoMessage() {} +func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{137} } + +func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } +func (*ResourceQuotaSpec) ProtoMessage() {} +func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } + +func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } +func (*ResourceQuotaStatus) ProtoMessage() {} +func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } + +func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } +func (*ResourceRequirements) ProtoMessage() {} +func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } + +func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } +func (*SELinuxOptions) ProtoMessage() {} +func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } + +func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } +func (*ScaleIOVolumeSource) ProtoMessage() {} +func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } + +func (m *Secret) Reset() { *m = Secret{} } +func (*Secret) ProtoMessage() {} +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } + +func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } +func (*SecretEnvSource) ProtoMessage() {} +func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } + +func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } +func (*SecretKeySelector) ProtoMessage() {} +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } + +func (m *SecretList) Reset() { *m = SecretList{} } +func (*SecretList) ProtoMessage() {} +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } + +func (m *SecretProjection) Reset() { *m = SecretProjection{} } +func (*SecretProjection) ProtoMessage() {} +func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } + +func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } +func (*SecretVolumeSource) ProtoMessage() {} +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } + +func (m *SecurityContext) Reset() { *m = SecurityContext{} } +func (*SecurityContext) ProtoMessage() {} +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } + +func (m *SerializedReference) Reset() { *m = SerializedReference{} } +func (*SerializedReference) ProtoMessage() {} +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } + +func (m *Service) Reset() { *m = Service{} } +func (*Service) ProtoMessage() {} +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } + +func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } +func (*ServiceAccount) ProtoMessage() {} +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } + +func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } +func (*ServiceAccountList) ProtoMessage() {} +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } + +func (m *ServiceList) Reset() { *m = ServiceList{} } +func (*ServiceList) ProtoMessage() {} +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } + +func (m *ServicePort) Reset() { *m = ServicePort{} } +func (*ServicePort) ProtoMessage() {} +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } + +func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } +func (*ServiceProxyOptions) ProtoMessage() {} +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } + +func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } +func (*ServiceSpec) ProtoMessage() {} +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } + +func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } +func (*ServiceStatus) ProtoMessage() {} +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } + +func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } +func (*StorageOSPersistentVolumeSource) ProtoMessage() {} +func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{159} +} + +func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } +func (*StorageOSVolumeSource) ProtoMessage() {} +func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } + +func (m *Sysctl) Reset() { *m = Sysctl{} } +func (*Sysctl) ProtoMessage() {} +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } + +func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } +func (*TCPSocketAction) ProtoMessage() {} +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } + +func (m *Taint) Reset() { *m = Taint{} } +func (*Taint) ProtoMessage() {} +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } + +func (m *Toleration) Reset() { *m = Toleration{} } +func (*Toleration) ProtoMessage() {} +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } + +func (m *Volume) Reset() { *m = Volume{} } +func (*Volume) ProtoMessage() {} +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } + +func (m *VolumeMount) Reset() { *m = VolumeMount{} } +func (*VolumeMount) ProtoMessage() {} +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } + +func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } +func (*VolumeProjection) ProtoMessage() {} +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } + +func (m *VolumeSource) Reset() { *m = VolumeSource{} } +func (*VolumeSource) ProtoMessage() {} +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } + +func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } +func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} +func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{169} +} + +func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } +func (*WeightedPodAffinityTerm) ProtoMessage() {} +func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{170} +} + +func init() { + proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.AWSElasticBlockStoreVolumeSource") + proto.RegisterType((*Affinity)(nil), "k8s.io.client-go.pkg.api.v1.Affinity") + proto.RegisterType((*AttachedVolume)(nil), "k8s.io.client-go.pkg.api.v1.AttachedVolume") + proto.RegisterType((*AvoidPods)(nil), "k8s.io.client-go.pkg.api.v1.AvoidPods") + proto.RegisterType((*AzureDiskVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.AzureDiskVolumeSource") + proto.RegisterType((*AzureFileVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.AzureFileVolumeSource") + proto.RegisterType((*Binding)(nil), "k8s.io.client-go.pkg.api.v1.Binding") + proto.RegisterType((*Capabilities)(nil), "k8s.io.client-go.pkg.api.v1.Capabilities") + proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.CephFSVolumeSource") + proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.CinderVolumeSource") + proto.RegisterType((*ComponentCondition)(nil), "k8s.io.client-go.pkg.api.v1.ComponentCondition") + proto.RegisterType((*ComponentStatus)(nil), "k8s.io.client-go.pkg.api.v1.ComponentStatus") + proto.RegisterType((*ComponentStatusList)(nil), "k8s.io.client-go.pkg.api.v1.ComponentStatusList") + proto.RegisterType((*ConfigMap)(nil), "k8s.io.client-go.pkg.api.v1.ConfigMap") + proto.RegisterType((*ConfigMapEnvSource)(nil), "k8s.io.client-go.pkg.api.v1.ConfigMapEnvSource") + proto.RegisterType((*ConfigMapKeySelector)(nil), "k8s.io.client-go.pkg.api.v1.ConfigMapKeySelector") + proto.RegisterType((*ConfigMapList)(nil), "k8s.io.client-go.pkg.api.v1.ConfigMapList") + proto.RegisterType((*ConfigMapProjection)(nil), "k8s.io.client-go.pkg.api.v1.ConfigMapProjection") + proto.RegisterType((*ConfigMapVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.ConfigMapVolumeSource") + proto.RegisterType((*Container)(nil), "k8s.io.client-go.pkg.api.v1.Container") + proto.RegisterType((*ContainerImage)(nil), "k8s.io.client-go.pkg.api.v1.ContainerImage") + proto.RegisterType((*ContainerPort)(nil), "k8s.io.client-go.pkg.api.v1.ContainerPort") + proto.RegisterType((*ContainerState)(nil), "k8s.io.client-go.pkg.api.v1.ContainerState") + proto.RegisterType((*ContainerStateRunning)(nil), "k8s.io.client-go.pkg.api.v1.ContainerStateRunning") + proto.RegisterType((*ContainerStateTerminated)(nil), "k8s.io.client-go.pkg.api.v1.ContainerStateTerminated") + proto.RegisterType((*ContainerStateWaiting)(nil), "k8s.io.client-go.pkg.api.v1.ContainerStateWaiting") + proto.RegisterType((*ContainerStatus)(nil), "k8s.io.client-go.pkg.api.v1.ContainerStatus") + proto.RegisterType((*DaemonEndpoint)(nil), "k8s.io.client-go.pkg.api.v1.DaemonEndpoint") + proto.RegisterType((*DeleteOptions)(nil), "k8s.io.client-go.pkg.api.v1.DeleteOptions") + proto.RegisterType((*DownwardAPIProjection)(nil), "k8s.io.client-go.pkg.api.v1.DownwardAPIProjection") + proto.RegisterType((*DownwardAPIVolumeFile)(nil), "k8s.io.client-go.pkg.api.v1.DownwardAPIVolumeFile") + proto.RegisterType((*DownwardAPIVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.DownwardAPIVolumeSource") + proto.RegisterType((*EmptyDirVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.EmptyDirVolumeSource") + proto.RegisterType((*EndpointAddress)(nil), "k8s.io.client-go.pkg.api.v1.EndpointAddress") + proto.RegisterType((*EndpointPort)(nil), "k8s.io.client-go.pkg.api.v1.EndpointPort") + proto.RegisterType((*EndpointSubset)(nil), "k8s.io.client-go.pkg.api.v1.EndpointSubset") + proto.RegisterType((*Endpoints)(nil), "k8s.io.client-go.pkg.api.v1.Endpoints") + proto.RegisterType((*EndpointsList)(nil), "k8s.io.client-go.pkg.api.v1.EndpointsList") + proto.RegisterType((*EnvFromSource)(nil), "k8s.io.client-go.pkg.api.v1.EnvFromSource") + proto.RegisterType((*EnvVar)(nil), "k8s.io.client-go.pkg.api.v1.EnvVar") + proto.RegisterType((*EnvVarSource)(nil), "k8s.io.client-go.pkg.api.v1.EnvVarSource") + proto.RegisterType((*Event)(nil), "k8s.io.client-go.pkg.api.v1.Event") + proto.RegisterType((*EventList)(nil), "k8s.io.client-go.pkg.api.v1.EventList") + proto.RegisterType((*EventSource)(nil), "k8s.io.client-go.pkg.api.v1.EventSource") + proto.RegisterType((*ExecAction)(nil), "k8s.io.client-go.pkg.api.v1.ExecAction") + proto.RegisterType((*FCVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.FCVolumeSource") + proto.RegisterType((*FlexVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.FlexVolumeSource") + proto.RegisterType((*FlockerVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.FlockerVolumeSource") + proto.RegisterType((*GCEPersistentDiskVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.GCEPersistentDiskVolumeSource") + proto.RegisterType((*GitRepoVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.GitRepoVolumeSource") + proto.RegisterType((*GlusterfsVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.GlusterfsVolumeSource") + proto.RegisterType((*HTTPGetAction)(nil), "k8s.io.client-go.pkg.api.v1.HTTPGetAction") + proto.RegisterType((*HTTPHeader)(nil), "k8s.io.client-go.pkg.api.v1.HTTPHeader") + proto.RegisterType((*Handler)(nil), "k8s.io.client-go.pkg.api.v1.Handler") + proto.RegisterType((*HostAlias)(nil), "k8s.io.client-go.pkg.api.v1.HostAlias") + proto.RegisterType((*HostPathVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.HostPathVolumeSource") + proto.RegisterType((*ISCSIVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.ISCSIVolumeSource") + proto.RegisterType((*KeyToPath)(nil), "k8s.io.client-go.pkg.api.v1.KeyToPath") + proto.RegisterType((*Lifecycle)(nil), "k8s.io.client-go.pkg.api.v1.Lifecycle") + proto.RegisterType((*LimitRange)(nil), "k8s.io.client-go.pkg.api.v1.LimitRange") + proto.RegisterType((*LimitRangeItem)(nil), "k8s.io.client-go.pkg.api.v1.LimitRangeItem") + proto.RegisterType((*LimitRangeList)(nil), "k8s.io.client-go.pkg.api.v1.LimitRangeList") + proto.RegisterType((*LimitRangeSpec)(nil), "k8s.io.client-go.pkg.api.v1.LimitRangeSpec") + proto.RegisterType((*List)(nil), "k8s.io.client-go.pkg.api.v1.List") + proto.RegisterType((*ListOptions)(nil), "k8s.io.client-go.pkg.api.v1.ListOptions") + proto.RegisterType((*LoadBalancerIngress)(nil), "k8s.io.client-go.pkg.api.v1.LoadBalancerIngress") + proto.RegisterType((*LoadBalancerStatus)(nil), "k8s.io.client-go.pkg.api.v1.LoadBalancerStatus") + proto.RegisterType((*LocalObjectReference)(nil), "k8s.io.client-go.pkg.api.v1.LocalObjectReference") + proto.RegisterType((*LocalVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.LocalVolumeSource") + proto.RegisterType((*NFSVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.NFSVolumeSource") + proto.RegisterType((*Namespace)(nil), "k8s.io.client-go.pkg.api.v1.Namespace") + proto.RegisterType((*NamespaceList)(nil), "k8s.io.client-go.pkg.api.v1.NamespaceList") + proto.RegisterType((*NamespaceSpec)(nil), "k8s.io.client-go.pkg.api.v1.NamespaceSpec") + proto.RegisterType((*NamespaceStatus)(nil), "k8s.io.client-go.pkg.api.v1.NamespaceStatus") + proto.RegisterType((*Node)(nil), "k8s.io.client-go.pkg.api.v1.Node") + proto.RegisterType((*NodeAddress)(nil), "k8s.io.client-go.pkg.api.v1.NodeAddress") + proto.RegisterType((*NodeAffinity)(nil), "k8s.io.client-go.pkg.api.v1.NodeAffinity") + proto.RegisterType((*NodeCondition)(nil), "k8s.io.client-go.pkg.api.v1.NodeCondition") + proto.RegisterType((*NodeDaemonEndpoints)(nil), "k8s.io.client-go.pkg.api.v1.NodeDaemonEndpoints") + proto.RegisterType((*NodeList)(nil), "k8s.io.client-go.pkg.api.v1.NodeList") + proto.RegisterType((*NodeProxyOptions)(nil), "k8s.io.client-go.pkg.api.v1.NodeProxyOptions") + proto.RegisterType((*NodeResources)(nil), "k8s.io.client-go.pkg.api.v1.NodeResources") + proto.RegisterType((*NodeSelector)(nil), "k8s.io.client-go.pkg.api.v1.NodeSelector") + proto.RegisterType((*NodeSelectorRequirement)(nil), "k8s.io.client-go.pkg.api.v1.NodeSelectorRequirement") + proto.RegisterType((*NodeSelectorTerm)(nil), "k8s.io.client-go.pkg.api.v1.NodeSelectorTerm") + proto.RegisterType((*NodeSpec)(nil), "k8s.io.client-go.pkg.api.v1.NodeSpec") + proto.RegisterType((*NodeStatus)(nil), "k8s.io.client-go.pkg.api.v1.NodeStatus") + proto.RegisterType((*NodeSystemInfo)(nil), "k8s.io.client-go.pkg.api.v1.NodeSystemInfo") + proto.RegisterType((*ObjectFieldSelector)(nil), "k8s.io.client-go.pkg.api.v1.ObjectFieldSelector") + proto.RegisterType((*ObjectMeta)(nil), "k8s.io.client-go.pkg.api.v1.ObjectMeta") + proto.RegisterType((*ObjectReference)(nil), "k8s.io.client-go.pkg.api.v1.ObjectReference") + proto.RegisterType((*PersistentVolume)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolume") + proto.RegisterType((*PersistentVolumeClaim)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeClaim") + proto.RegisterType((*PersistentVolumeClaimList)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeClaimList") + proto.RegisterType((*PersistentVolumeClaimSpec)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeClaimSpec") + proto.RegisterType((*PersistentVolumeClaimStatus)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeClaimStatus") + proto.RegisterType((*PersistentVolumeClaimVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeClaimVolumeSource") + proto.RegisterType((*PersistentVolumeList)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeList") + proto.RegisterType((*PersistentVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeSource") + proto.RegisterType((*PersistentVolumeSpec)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeSpec") + proto.RegisterType((*PersistentVolumeStatus)(nil), "k8s.io.client-go.pkg.api.v1.PersistentVolumeStatus") + proto.RegisterType((*PhotonPersistentDiskVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.PhotonPersistentDiskVolumeSource") + proto.RegisterType((*Pod)(nil), "k8s.io.client-go.pkg.api.v1.Pod") + proto.RegisterType((*PodAffinity)(nil), "k8s.io.client-go.pkg.api.v1.PodAffinity") + proto.RegisterType((*PodAffinityTerm)(nil), "k8s.io.client-go.pkg.api.v1.PodAffinityTerm") + proto.RegisterType((*PodAntiAffinity)(nil), "k8s.io.client-go.pkg.api.v1.PodAntiAffinity") + proto.RegisterType((*PodAttachOptions)(nil), "k8s.io.client-go.pkg.api.v1.PodAttachOptions") + proto.RegisterType((*PodCondition)(nil), "k8s.io.client-go.pkg.api.v1.PodCondition") + proto.RegisterType((*PodExecOptions)(nil), "k8s.io.client-go.pkg.api.v1.PodExecOptions") + proto.RegisterType((*PodList)(nil), "k8s.io.client-go.pkg.api.v1.PodList") + proto.RegisterType((*PodLogOptions)(nil), "k8s.io.client-go.pkg.api.v1.PodLogOptions") + proto.RegisterType((*PodPortForwardOptions)(nil), "k8s.io.client-go.pkg.api.v1.PodPortForwardOptions") + proto.RegisterType((*PodProxyOptions)(nil), "k8s.io.client-go.pkg.api.v1.PodProxyOptions") + proto.RegisterType((*PodSecurityContext)(nil), "k8s.io.client-go.pkg.api.v1.PodSecurityContext") + proto.RegisterType((*PodSignature)(nil), "k8s.io.client-go.pkg.api.v1.PodSignature") + proto.RegisterType((*PodSpec)(nil), "k8s.io.client-go.pkg.api.v1.PodSpec") + proto.RegisterType((*PodStatus)(nil), "k8s.io.client-go.pkg.api.v1.PodStatus") + proto.RegisterType((*PodStatusResult)(nil), "k8s.io.client-go.pkg.api.v1.PodStatusResult") + proto.RegisterType((*PodTemplate)(nil), "k8s.io.client-go.pkg.api.v1.PodTemplate") + proto.RegisterType((*PodTemplateList)(nil), "k8s.io.client-go.pkg.api.v1.PodTemplateList") + proto.RegisterType((*PodTemplateSpec)(nil), "k8s.io.client-go.pkg.api.v1.PodTemplateSpec") + proto.RegisterType((*PortworxVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.PortworxVolumeSource") + proto.RegisterType((*Preconditions)(nil), "k8s.io.client-go.pkg.api.v1.Preconditions") + proto.RegisterType((*PreferAvoidPodsEntry)(nil), "k8s.io.client-go.pkg.api.v1.PreferAvoidPodsEntry") + proto.RegisterType((*PreferredSchedulingTerm)(nil), "k8s.io.client-go.pkg.api.v1.PreferredSchedulingTerm") + proto.RegisterType((*Probe)(nil), "k8s.io.client-go.pkg.api.v1.Probe") + proto.RegisterType((*ProjectedVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.ProjectedVolumeSource") + proto.RegisterType((*QuobyteVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.QuobyteVolumeSource") + proto.RegisterType((*RBDVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.RBDVolumeSource") + proto.RegisterType((*RangeAllocation)(nil), "k8s.io.client-go.pkg.api.v1.RangeAllocation") + proto.RegisterType((*ReplicationController)(nil), "k8s.io.client-go.pkg.api.v1.ReplicationController") + proto.RegisterType((*ReplicationControllerCondition)(nil), "k8s.io.client-go.pkg.api.v1.ReplicationControllerCondition") + proto.RegisterType((*ReplicationControllerList)(nil), "k8s.io.client-go.pkg.api.v1.ReplicationControllerList") + proto.RegisterType((*ReplicationControllerSpec)(nil), "k8s.io.client-go.pkg.api.v1.ReplicationControllerSpec") + proto.RegisterType((*ReplicationControllerStatus)(nil), "k8s.io.client-go.pkg.api.v1.ReplicationControllerStatus") + proto.RegisterType((*ResourceFieldSelector)(nil), "k8s.io.client-go.pkg.api.v1.ResourceFieldSelector") + proto.RegisterType((*ResourceQuota)(nil), "k8s.io.client-go.pkg.api.v1.ResourceQuota") + proto.RegisterType((*ResourceQuotaList)(nil), "k8s.io.client-go.pkg.api.v1.ResourceQuotaList") + proto.RegisterType((*ResourceQuotaSpec)(nil), "k8s.io.client-go.pkg.api.v1.ResourceQuotaSpec") + proto.RegisterType((*ResourceQuotaStatus)(nil), "k8s.io.client-go.pkg.api.v1.ResourceQuotaStatus") + proto.RegisterType((*ResourceRequirements)(nil), "k8s.io.client-go.pkg.api.v1.ResourceRequirements") + proto.RegisterType((*SELinuxOptions)(nil), "k8s.io.client-go.pkg.api.v1.SELinuxOptions") + proto.RegisterType((*ScaleIOVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.ScaleIOVolumeSource") + proto.RegisterType((*Secret)(nil), "k8s.io.client-go.pkg.api.v1.Secret") + proto.RegisterType((*SecretEnvSource)(nil), "k8s.io.client-go.pkg.api.v1.SecretEnvSource") + proto.RegisterType((*SecretKeySelector)(nil), "k8s.io.client-go.pkg.api.v1.SecretKeySelector") + proto.RegisterType((*SecretList)(nil), "k8s.io.client-go.pkg.api.v1.SecretList") + proto.RegisterType((*SecretProjection)(nil), "k8s.io.client-go.pkg.api.v1.SecretProjection") + proto.RegisterType((*SecretVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.SecretVolumeSource") + proto.RegisterType((*SecurityContext)(nil), "k8s.io.client-go.pkg.api.v1.SecurityContext") + proto.RegisterType((*SerializedReference)(nil), "k8s.io.client-go.pkg.api.v1.SerializedReference") + proto.RegisterType((*Service)(nil), "k8s.io.client-go.pkg.api.v1.Service") + proto.RegisterType((*ServiceAccount)(nil), "k8s.io.client-go.pkg.api.v1.ServiceAccount") + proto.RegisterType((*ServiceAccountList)(nil), "k8s.io.client-go.pkg.api.v1.ServiceAccountList") + proto.RegisterType((*ServiceList)(nil), "k8s.io.client-go.pkg.api.v1.ServiceList") + proto.RegisterType((*ServicePort)(nil), "k8s.io.client-go.pkg.api.v1.ServicePort") + proto.RegisterType((*ServiceProxyOptions)(nil), "k8s.io.client-go.pkg.api.v1.ServiceProxyOptions") + proto.RegisterType((*ServiceSpec)(nil), "k8s.io.client-go.pkg.api.v1.ServiceSpec") + proto.RegisterType((*ServiceStatus)(nil), "k8s.io.client-go.pkg.api.v1.ServiceStatus") + proto.RegisterType((*StorageOSPersistentVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.StorageOSPersistentVolumeSource") + proto.RegisterType((*StorageOSVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.StorageOSVolumeSource") + proto.RegisterType((*Sysctl)(nil), "k8s.io.client-go.pkg.api.v1.Sysctl") + proto.RegisterType((*TCPSocketAction)(nil), "k8s.io.client-go.pkg.api.v1.TCPSocketAction") + proto.RegisterType((*Taint)(nil), "k8s.io.client-go.pkg.api.v1.Taint") + proto.RegisterType((*Toleration)(nil), "k8s.io.client-go.pkg.api.v1.Toleration") + proto.RegisterType((*Volume)(nil), "k8s.io.client-go.pkg.api.v1.Volume") + proto.RegisterType((*VolumeMount)(nil), "k8s.io.client-go.pkg.api.v1.VolumeMount") + proto.RegisterType((*VolumeProjection)(nil), "k8s.io.client-go.pkg.api.v1.VolumeProjection") + proto.RegisterType((*VolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.VolumeSource") + proto.RegisterType((*VsphereVirtualDiskVolumeSource)(nil), "k8s.io.client-go.pkg.api.v1.VsphereVirtualDiskVolumeSource") + proto.RegisterType((*WeightedPodAffinityTerm)(nil), "k8s.io.client-go.pkg.api.v1.WeightedPodAffinityTerm") +} +func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AWSElasticBlockStoreVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeID))) + i += copy(dAtA[i:], m.VolumeID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Partition)) + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *Affinity) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Affinity) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.NodeAffinity != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodeAffinity.Size())) + n1, err := m.NodeAffinity.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + } + if m.PodAffinity != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinity.Size())) + n2, err := m.PodAffinity.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + } + if m.PodAntiAffinity != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodAntiAffinity.Size())) + n3, err := m.PodAntiAffinity.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + } + return i, nil +} + +func (m *AttachedVolume) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AttachedVolume) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DevicePath))) + i += copy(dAtA[i:], m.DevicePath) + return i, nil +} + +func (m *AvoidPods) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AvoidPods) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.PreferAvoidPods) > 0 { + for _, msg := range m.PreferAvoidPods { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *AzureDiskVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AzureDiskVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DiskName))) + i += copy(dAtA[i:], m.DiskName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DataDiskURI))) + i += copy(dAtA[i:], m.DataDiskURI) + if m.CachingMode != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.CachingMode))) + i += copy(dAtA[i:], *m.CachingMode) + } + if m.FSType != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FSType))) + i += copy(dAtA[i:], *m.FSType) + } + if m.ReadOnly != nil { + dAtA[i] = 0x28 + i++ + if *m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.Kind != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Kind))) + i += copy(dAtA[i:], *m.Kind) + } + return i, nil +} + +func (m *AzureFileVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AzureFileVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretName))) + i += copy(dAtA[i:], m.SecretName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ShareName))) + i += copy(dAtA[i:], m.ShareName) + dAtA[i] = 0x18 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *Binding) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Binding) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n4, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n5, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + return i, nil +} + +func (m *Capabilities) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Capabilities) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Add) > 0 { + for _, s := range m.Add { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Drop) > 0 { + for _, s := range m.Drop { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *CephFSVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CephFSVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Monitors) > 0 { + for _, s := range m.Monitors { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i += copy(dAtA[i:], m.User) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretFile))) + i += copy(dAtA[i:], m.SecretFile) + if m.SecretRef != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n6, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + dAtA[i] = 0x30 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *CinderVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CinderVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeID))) + i += copy(dAtA[i:], m.VolumeID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x18 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *ComponentCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ComponentCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error))) + i += copy(dAtA[i:], m.Error) + return i, nil +} + +func (m *ComponentStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ComponentStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n7, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ComponentStatusList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ComponentStatusList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n8, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ConfigMap) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMap) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + if len(m.Data) > 0 { + keysForData := make([]string, 0, len(m.Data)) + for k := range m.Data { + keysForData = append(keysForData, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + for _, k := range keysForData { + dAtA[i] = 0x12 + i++ + v := m.Data[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + return i, nil +} + +func (m *ConfigMapEnvSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapEnvSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n10, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + if m.Optional != nil { + dAtA[i] = 0x10 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *ConfigMapKeySelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapKeySelector) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n11, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + if m.Optional != nil { + dAtA[i] = 0x18 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *ConfigMapList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n12, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ConfigMapProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapProjection) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n13, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *ConfigMapVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n14, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultMode)) + } + if m.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *Container) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Container) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Image))) + i += copy(dAtA[i:], m.Image) + if len(m.Command) > 0 { + for _, s := range m.Command { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Args) > 0 { + for _, s := range m.Args { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.WorkingDir))) + i += copy(dAtA[i:], m.WorkingDir) + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Env) > 0 { + for _, msg := range m.Env { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resources.Size())) + n15, err := m.Resources.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + if len(m.VolumeMounts) > 0 { + for _, msg := range m.VolumeMounts { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.LivenessProbe != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LivenessProbe.Size())) + n16, err := m.LivenessProbe.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + if m.ReadinessProbe != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadinessProbe.Size())) + n17, err := m.ReadinessProbe.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + if m.Lifecycle != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Lifecycle.Size())) + n18, err := m.Lifecycle.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TerminationMessagePath))) + i += copy(dAtA[i:], m.TerminationMessagePath) + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ImagePullPolicy))) + i += copy(dAtA[i:], m.ImagePullPolicy) + if m.SecurityContext != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecurityContext.Size())) + n19, err := m.SecurityContext.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + } + dAtA[i] = 0x80 + i++ + dAtA[i] = 0x1 + i++ + if m.Stdin { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x88 + i++ + dAtA[i] = 0x1 + i++ + if m.StdinOnce { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x90 + i++ + dAtA[i] = 0x1 + i++ + if m.TTY { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.EnvFrom) > 0 { + for _, msg := range m.EnvFrom { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TerminationMessagePolicy))) + i += copy(dAtA[i:], m.TerminationMessagePolicy) + return i, nil +} + +func (m *ContainerImage) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerImage) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SizeBytes)) + return i, nil +} + +func (m *ContainerPort) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerPort) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HostPort)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ContainerPort)) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Protocol))) + i += copy(dAtA[i:], m.Protocol) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.HostIP))) + i += copy(dAtA[i:], m.HostIP) + return i, nil +} + +func (m *ContainerState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerState) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Waiting != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Waiting.Size())) + n20, err := m.Waiting.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + if m.Running != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Running.Size())) + n21, err := m.Running.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + if m.Terminated != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Terminated.Size())) + n22, err := m.Terminated.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } + return i, nil +} + +func (m *ContainerStateRunning) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerStateRunning) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StartedAt.Size())) + n23, err := m.StartedAt.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + return i, nil +} + +func (m *ContainerStateTerminated) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerStateTerminated) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ExitCode)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Signal)) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StartedAt.Size())) + n24, err := m.StartedAt.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FinishedAt.Size())) + n25, err := m.FinishedAt.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContainerID))) + i += copy(dAtA[i:], m.ContainerID) + return i, nil +} + +func (m *ContainerStateWaiting) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerStateWaiting) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *ContainerStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.State.Size())) + n26, err := m.State.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTerminationState.Size())) + n27, err := m.LastTerminationState.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + dAtA[i] = 0x20 + i++ + if m.Ready { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RestartCount)) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Image))) + i += copy(dAtA[i:], m.Image) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ImageID))) + i += copy(dAtA[i:], m.ImageID) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContainerID))) + i += copy(dAtA[i:], m.ContainerID) + return i, nil +} + +func (m *DaemonEndpoint) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonEndpoint) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port)) + return i, nil +} + +func (m *DeleteOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeleteOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.GracePeriodSeconds != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.GracePeriodSeconds)) + } + if m.Preconditions != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Preconditions.Size())) + n28, err := m.Preconditions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + } + if m.OrphanDependents != nil { + dAtA[i] = 0x18 + i++ + if *m.OrphanDependents { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.PropagationPolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.PropagationPolicy))) + i += copy(dAtA[i:], *m.PropagationPolicy) + } + return i, nil +} + +func (m *DownwardAPIProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DownwardAPIProjection) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DownwardAPIVolumeFile) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DownwardAPIVolumeFile) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + if m.FieldRef != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FieldRef.Size())) + n29, err := m.FieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n29 + } + if m.ResourceFieldRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceFieldRef.Size())) + n30, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n30 + } + if m.Mode != nil { + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Mode)) + } + return i, nil +} + +func (m *DownwardAPIVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DownwardAPIVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultMode)) + } + return i, nil +} + +func (m *EmptyDirVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EmptyDirVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Medium))) + i += copy(dAtA[i:], m.Medium) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SizeLimit.Size())) + n31, err := m.SizeLimit.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n31 + return i, nil +} + +func (m *EndpointAddress) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EndpointAddress) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IP))) + i += copy(dAtA[i:], m.IP) + if m.TargetRef != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetRef.Size())) + n32, err := m.TargetRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n32 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Hostname))) + i += copy(dAtA[i:], m.Hostname) + if m.NodeName != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.NodeName))) + i += copy(dAtA[i:], *m.NodeName) + } + return i, nil +} + +func (m *EndpointPort) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EndpointPort) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port)) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Protocol))) + i += copy(dAtA[i:], m.Protocol) + return i, nil +} + +func (m *EndpointSubset) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EndpointSubset) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Addresses) > 0 { + for _, msg := range m.Addresses { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.NotReadyAddresses) > 0 { + for _, msg := range m.NotReadyAddresses { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *Endpoints) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Endpoints) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n33, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n33 + if len(m.Subsets) > 0 { + for _, msg := range m.Subsets { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *EndpointsList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EndpointsList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n34, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n34 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *EnvFromSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EnvFromSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Prefix))) + i += copy(dAtA[i:], m.Prefix) + if m.ConfigMapRef != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapRef.Size())) + n35, err := m.ConfigMapRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n35 + } + if m.SecretRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n36, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n36 + } + return i, nil +} + +func (m *EnvVar) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EnvVar) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + if m.ValueFrom != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ValueFrom.Size())) + n37, err := m.ValueFrom.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n37 + } + return i, nil +} + +func (m *EnvVarSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EnvVarSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.FieldRef != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FieldRef.Size())) + n38, err := m.FieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n38 + } + if m.ResourceFieldRef != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceFieldRef.Size())) + n39, err := m.ResourceFieldRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n39 + } + if m.ConfigMapKeyRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMapKeyRef.Size())) + n40, err := m.ConfigMapKeyRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n40 + } + if m.SecretKeyRef != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretKeyRef.Size())) + n41, err := m.SecretKeyRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n41 + } + return i, nil +} + +func (m *Event) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Event) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n42, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n42 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.InvolvedObject.Size())) + n43, err := m.InvolvedObject.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n43 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Source.Size())) + n44, err := m.Source.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n44 + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FirstTimestamp.Size())) + n45, err := m.FirstTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n45 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTimestamp.Size())) + n46, err := m.LastTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n46 + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Count)) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + return i, nil +} + +func (m *EventList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n47, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n47 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *EventSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Component))) + i += copy(dAtA[i:], m.Component) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) + i += copy(dAtA[i:], m.Host) + return i, nil +} + +func (m *ExecAction) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExecAction) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Command) > 0 { + for _, s := range m.Command { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *FCVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FCVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.TargetWWNs) > 0 { + for _, s := range m.TargetWWNs { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if m.Lun != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Lun)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *FlexVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FlexVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver))) + i += copy(dAtA[i:], m.Driver) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + if m.SecretRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n48, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n48 + } + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.Options) > 0 { + keysForOptions := make([]string, 0, len(m.Options)) + for k := range m.Options { + keysForOptions = append(keysForOptions, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForOptions) + for _, k := range keysForOptions { + dAtA[i] = 0x2a + i++ + v := m.Options[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + return i, nil +} + +func (m *FlockerVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FlockerVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatasetName))) + i += copy(dAtA[i:], m.DatasetName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatasetUUID))) + i += copy(dAtA[i:], m.DatasetUUID) + return i, nil +} + +func (m *GCEPersistentDiskVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GCEPersistentDiskVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PDName))) + i += copy(dAtA[i:], m.PDName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Partition)) + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *GitRepoVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GitRepoVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Repository))) + i += copy(dAtA[i:], m.Repository) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Revision))) + i += copy(dAtA[i:], m.Revision) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Directory))) + i += copy(dAtA[i:], m.Directory) + return i, nil +} + +func (m *GlusterfsVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GlusterfsVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.EndpointsName))) + i += copy(dAtA[i:], m.EndpointsName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x18 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *HTTPGetAction) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HTTPGetAction) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) + n49, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n49 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) + i += copy(dAtA[i:], m.Host) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Scheme))) + i += copy(dAtA[i:], m.Scheme) + if len(m.HTTPHeaders) > 0 { + for _, msg := range m.HTTPHeaders { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HTTPHeader) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HTTPHeader) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + return i, nil +} + +func (m *Handler) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Handler) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Exec != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Exec.Size())) + n50, err := m.Exec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n50 + } + if m.HTTPGet != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HTTPGet.Size())) + n51, err := m.HTTPGet.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n51 + } + if m.TCPSocket != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TCPSocket.Size())) + n52, err := m.TCPSocket.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n52 + } + return i, nil +} + +func (m *HostAlias) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HostAlias) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IP))) + i += copy(dAtA[i:], m.IP) + if len(m.Hostnames) > 0 { + for _, s := range m.Hostnames { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *HostPathVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HostPathVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + return i, nil +} + +func (m *ISCSIVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ISCSIVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TargetPortal))) + i += copy(dAtA[i:], m.TargetPortal) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IQN))) + i += copy(dAtA[i:], m.IQN) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Lun)) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ISCSIInterface))) + i += copy(dAtA[i:], m.ISCSIInterface) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x30 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.Portals) > 0 { + for _, s := range m.Portals { + dAtA[i] = 0x3a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x40 + i++ + if m.DiscoveryCHAPAuth { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SecretRef != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n53, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n53 + } + dAtA[i] = 0x58 + i++ + if m.SessionCHAPAuth { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *KeyToPath) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *KeyToPath) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + if m.Mode != nil { + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Mode)) + } + return i, nil +} + +func (m *Lifecycle) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Lifecycle) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PostStart != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PostStart.Size())) + n54, err := m.PostStart.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n54 + } + if m.PreStop != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PreStop.Size())) + n55, err := m.PreStop.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n55 + } + return i, nil +} + +func (m *LimitRange) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimitRange) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n56, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n56 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n57, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n57 + return i, nil +} + +func (m *LimitRangeItem) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimitRangeItem) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if len(m.Max) > 0 { + keysForMax := make([]string, 0, len(m.Max)) + for k := range m.Max { + keysForMax = append(keysForMax, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMax) + for _, k := range keysForMax { + dAtA[i] = 0x12 + i++ + v := m.Max[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n58, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n58 + } + } + if len(m.Min) > 0 { + keysForMin := make([]string, 0, len(m.Min)) + for k := range m.Min { + keysForMin = append(keysForMin, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMin) + for _, k := range keysForMin { + dAtA[i] = 0x1a + i++ + v := m.Min[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n59, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n59 + } + } + if len(m.Default) > 0 { + keysForDefault := make([]string, 0, len(m.Default)) + for k := range m.Default { + keysForDefault = append(keysForDefault, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefault) + for _, k := range keysForDefault { + dAtA[i] = 0x22 + i++ + v := m.Default[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n60, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n60 + } + } + if len(m.DefaultRequest) > 0 { + keysForDefaultRequest := make([]string, 0, len(m.DefaultRequest)) + for k := range m.DefaultRequest { + keysForDefaultRequest = append(keysForDefaultRequest, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefaultRequest) + for _, k := range keysForDefaultRequest { + dAtA[i] = 0x2a + i++ + v := m.DefaultRequest[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n61, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n61 + } + } + if len(m.MaxLimitRequestRatio) > 0 { + keysForMaxLimitRequestRatio := make([]string, 0, len(m.MaxLimitRequestRatio)) + for k := range m.MaxLimitRequestRatio { + keysForMaxLimitRequestRatio = append(keysForMaxLimitRequestRatio, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMaxLimitRequestRatio) + for _, k := range keysForMaxLimitRequestRatio { + dAtA[i] = 0x32 + i++ + v := m.MaxLimitRequestRatio[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n62, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n62 + } + } + return i, nil +} + +func (m *LimitRangeList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimitRangeList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n63, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n63 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LimitRangeSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimitRangeSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Limits) > 0 { + for _, msg := range m.Limits { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *List) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *List) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n64, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n64 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ListOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.LabelSelector))) + i += copy(dAtA[i:], m.LabelSelector) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FieldSelector))) + i += copy(dAtA[i:], m.FieldSelector) + dAtA[i] = 0x18 + i++ + if m.Watch { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + if m.TimeoutSeconds != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds)) + } + dAtA[i] = 0x30 + i++ + if m.IncludeUninitialized { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *LoadBalancerIngress) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LoadBalancerIngress) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IP))) + i += copy(dAtA[i:], m.IP) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Hostname))) + i += copy(dAtA[i:], m.Hostname) + return i, nil +} + +func (m *LoadBalancerStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LoadBalancerStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ingress) > 0 { + for _, msg := range m.Ingress { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LocalObjectReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LocalObjectReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *LocalVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LocalVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + return i, nil +} + +func (m *NFSVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NFSVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Server))) + i += copy(dAtA[i:], m.Server) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x18 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *Namespace) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Namespace) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n65, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n65 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n66, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n66 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n67, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n67 + return i, nil +} + +func (m *NamespaceList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NamespaceList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n68, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n68 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NamespaceSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NamespaceSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *NamespaceStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NamespaceStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i += copy(dAtA[i:], m.Phase) + return i, nil +} + +func (m *Node) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Node) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n69, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n69 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n70, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n70 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n71, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n71 + return i, nil +} + +func (m *NodeAddress) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeAddress) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Address))) + i += copy(dAtA[i:], m.Address) + return i, nil +} + +func (m *NodeAffinity) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeAffinity) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.RequiredDuringSchedulingIgnoredDuringExecution != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RequiredDuringSchedulingIgnoredDuringExecution.Size())) + n72, err := m.RequiredDuringSchedulingIgnoredDuringExecution.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n72 + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastHeartbeatTime.Size())) + n73, err := m.LastHeartbeatTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n73 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n74, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n74 + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *NodeDaemonEndpoints) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeDaemonEndpoints) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.KubeletEndpoint.Size())) + n75, err := m.KubeletEndpoint.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n75 + return i, nil +} + +func (m *NodeList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n76, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n76 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeProxyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeProxyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + return i, nil +} + +func (m *NodeResources) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeResources) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0xa + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n77, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n77 + } + } + return i, nil +} + +func (m *NodeSelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeSelector) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.NodeSelectorTerms) > 0 { + for _, msg := range m.NodeSelectorTerms { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeSelectorRequirement) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeSelectorRequirement) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator))) + i += copy(dAtA[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *NodeSelectorTerm) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeSelectorTerm) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodCIDR))) + i += copy(dAtA[i:], m.PodCIDR) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ExternalID))) + i += copy(dAtA[i:], m.ExternalID) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ProviderID))) + i += copy(dAtA[i:], m.ProviderID) + dAtA[i] = 0x20 + i++ + if m.Unschedulable { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.Taints) > 0 { + for _, msg := range m.Taints { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0xa + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n78, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n78 + } + } + if len(m.Allocatable) > 0 { + keysForAllocatable := make([]string, 0, len(m.Allocatable)) + for k := range m.Allocatable { + keysForAllocatable = append(keysForAllocatable, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAllocatable) + for _, k := range keysForAllocatable { + dAtA[i] = 0x12 + i++ + v := m.Allocatable[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n79, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n79 + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i += copy(dAtA[i:], m.Phase) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Addresses) > 0 { + for _, msg := range m.Addresses { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DaemonEndpoints.Size())) + n80, err := m.DaemonEndpoints.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n80 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodeInfo.Size())) + n81, err := m.NodeInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n81 + if len(m.Images) > 0 { + for _, msg := range m.Images { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.VolumesInUse) > 0 { + for _, s := range m.VolumesInUse { + dAtA[i] = 0x4a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.VolumesAttached) > 0 { + for _, msg := range m.VolumesAttached { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeSystemInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NodeSystemInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MachineID))) + i += copy(dAtA[i:], m.MachineID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SystemUUID))) + i += copy(dAtA[i:], m.SystemUUID) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.BootID))) + i += copy(dAtA[i:], m.BootID) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.KernelVersion))) + i += copy(dAtA[i:], m.KernelVersion) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.OSImage))) + i += copy(dAtA[i:], m.OSImage) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContainerRuntimeVersion))) + i += copy(dAtA[i:], m.ContainerRuntimeVersion) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.KubeletVersion))) + i += copy(dAtA[i:], m.KubeletVersion) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.KubeProxyVersion))) + i += copy(dAtA[i:], m.KubeProxyVersion) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.OperatingSystem))) + i += copy(dAtA[i:], m.OperatingSystem) + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Architecture))) + i += copy(dAtA[i:], m.Architecture) + return i, nil +} + +func (m *ObjectFieldSelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectFieldSelector) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FieldPath))) + i += copy(dAtA[i:], m.FieldPath) + return i, nil +} + +func (m *ObjectMeta) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMeta) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.GenerateName))) + i += copy(dAtA[i:], m.GenerateName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SelfLink))) + i += copy(dAtA[i:], m.SelfLink) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Generation)) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CreationTimestamp.Size())) + n82, err := m.CreationTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n82 + if m.DeletionTimestamp != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DeletionTimestamp.Size())) + n83, err := m.DeletionTimestamp.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n83 + } + if m.DeletionGracePeriodSeconds != nil { + dAtA[i] = 0x50 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + keysForLabels := make([]string, 0, len(m.Labels)) + for k := range m.Labels { + keysForLabels = append(keysForLabels, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + for _, k := range keysForLabels { + dAtA[i] = 0x5a + i++ + v := m.Labels[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.Annotations) > 0 { + keysForAnnotations := make([]string, 0, len(m.Annotations)) + for k := range m.Annotations { + keysForAnnotations = append(keysForAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + for _, k := range keysForAnnotations { + dAtA[i] = 0x62 + i++ + v := m.Annotations[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if len(m.OwnerReferences) > 0 { + for _, msg := range m.OwnerReferences { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + dAtA[i] = 0x72 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClusterName))) + i += copy(dAtA[i:], m.ClusterName) + if m.Initializers != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Initializers.Size())) + n84, err := m.Initializers.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n84 + } + return i, nil +} + +func (m *ObjectReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceVersion))) + i += copy(dAtA[i:], m.ResourceVersion) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FieldPath))) + i += copy(dAtA[i:], m.FieldPath) + return i, nil +} + +func (m *PersistentVolume) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolume) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n85, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n85 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n86, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n86 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n87, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n87 + return i, nil +} + +func (m *PersistentVolumeClaim) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaim) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n88, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n88 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n89, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n89 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n90, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n90 + return i, nil +} + +func (m *PersistentVolumeClaimList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaimList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n91, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n91 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PersistentVolumeClaimSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaimSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resources.Size())) + n92, err := m.Resources.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n92 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + if m.Selector != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n93, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n93 + } + if m.StorageClassName != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StorageClassName))) + i += copy(dAtA[i:], *m.StorageClassName) + } + return i, nil +} + +func (m *PersistentVolumeClaimStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaimStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i += copy(dAtA[i:], m.Phase) + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Capacity) > 0 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0x1a + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n94, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n94 + } + } + return i, nil +} + +func (m *PersistentVolumeClaimVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeClaimVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClaimName))) + i += copy(dAtA[i:], m.ClaimName) + dAtA[i] = 0x10 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *PersistentVolumeList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n95, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n95 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PersistentVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.GCEPersistentDisk != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n96, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n96 + } + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n97, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n97 + } + if m.HostPath != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) + n98, err := m.HostPath.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n98 + } + if m.Glusterfs != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n99, err := m.Glusterfs.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n99 + } + if m.NFS != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n100, err := m.NFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n100 + } + if m.RBD != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n101, err := m.RBD.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n101 + } + if m.ISCSI != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n102, err := m.ISCSI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n102 + } + if m.Cinder != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n103, err := m.Cinder.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n103 + } + if m.CephFS != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n104, err := m.CephFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n104 + } + if m.FC != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) + n105, err := m.FC.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n105 + } + if m.Flocker != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n106, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n106 + } + if m.FlexVolume != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n107, err := m.FlexVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n107 + } + if m.AzureFile != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) + n108, err := m.AzureFile.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n108 + } + if m.VsphereVolume != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) + n109, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n109 + } + if m.Quobyte != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) + n110, err := m.Quobyte.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n110 + } + if m.AzureDisk != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) + n111, err := m.AzureDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n111 + } + if m.PhotonPersistentDisk != nil { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) + n112, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n112 + } + if m.PortworxVolume != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) + n113, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n113 + } + if m.ScaleIO != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) + n114, err := m.ScaleIO.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n114 + } + if m.Local != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Local.Size())) + n115, err := m.Local.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n115 + } + if m.StorageOS != nil { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) + n116, err := m.StorageOS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n116 + } + return i, nil +} + +func (m *PersistentVolumeSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + keysForCapacity := make([]string, 0, len(m.Capacity)) + for k := range m.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + for _, k := range keysForCapacity { + dAtA[i] = 0xa + i++ + v := m.Capacity[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n117, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n117 + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeSource.Size())) + n118, err := m.PersistentVolumeSource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n118 + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if m.ClaimRef != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ClaimRef.Size())) + n119, err := m.ClaimRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n119 + } + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PersistentVolumeReclaimPolicy))) + i += copy(dAtA[i:], m.PersistentVolumeReclaimPolicy) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StorageClassName))) + i += copy(dAtA[i:], m.StorageClassName) + return i, nil +} + +func (m *PersistentVolumeStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PersistentVolumeStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i += copy(dAtA[i:], m.Phase) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + return i, nil +} + +func (m *PhotonPersistentDiskVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PhotonPersistentDiskVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PdID))) + i += copy(dAtA[i:], m.PdID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + return i, nil +} + +func (m *Pod) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Pod) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n120, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n120 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n121, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n121 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n122, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n122 + return i, nil +} + +func (m *PodAffinity) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodAffinity) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.RequiredDuringSchedulingIgnoredDuringExecution { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodAffinityTerm) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.LabelSelector != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LabelSelector.Size())) + n123, err := m.LabelSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n123 + } + if len(m.Namespaces) > 0 { + for _, s := range m.Namespaces { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TopologyKey))) + i += copy(dAtA[i:], m.TopologyKey) + return i, nil +} + +func (m *PodAntiAffinity) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodAntiAffinity) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.RequiredDuringSchedulingIgnoredDuringExecution { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodAttachOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodAttachOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Stdin { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x10 + i++ + if m.Stdout { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x18 + i++ + if m.Stderr { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x20 + i++ + if m.TTY { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Container))) + i += copy(dAtA[i:], m.Container) + return i, nil +} + +func (m *PodCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastProbeTime.Size())) + n124, err := m.LastProbeTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n124 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n125, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n125 + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *PodExecOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodExecOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Stdin { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x10 + i++ + if m.Stdout { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x18 + i++ + if m.Stderr { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x20 + i++ + if m.TTY { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Container))) + i += copy(dAtA[i:], m.Container) + if len(m.Command) > 0 { + for _, s := range m.Command { + dAtA[i] = 0x32 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *PodList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n126, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n126 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodLogOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodLogOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Container))) + i += copy(dAtA[i:], m.Container) + dAtA[i] = 0x10 + i++ + if m.Follow { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x18 + i++ + if m.Previous { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SinceSeconds != nil { + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.SinceSeconds)) + } + if m.SinceTime != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SinceTime.Size())) + n127, err := m.SinceTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n127 + } + dAtA[i] = 0x30 + i++ + if m.Timestamps { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.TailLines != nil { + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TailLines)) + } + if m.LimitBytes != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.LimitBytes)) + } + return i, nil +} + +func (m *PodPortForwardOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPortForwardOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, num := range m.Ports { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(num)) + } + } + return i, nil +} + +func (m *PodProxyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodProxyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + return i, nil +} + +func (m *PodSecurityContext) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSecurityContext) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.SELinuxOptions != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) + n128, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n128 + } + if m.RunAsUser != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + dAtA[i] = 0x18 + i++ + if *m.RunAsNonRoot { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if len(m.SupplementalGroups) > 0 { + for _, num := range m.SupplementalGroups { + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(num)) + } + } + if m.FSGroup != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.FSGroup)) + } + return i, nil +} + +func (m *PodSignature) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSignature) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PodController != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodController.Size())) + n129, err := m.PodController.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n129 + } + return i, nil +} + +func (m *PodSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Volumes) > 0 { + for _, msg := range m.Volumes { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Containers) > 0 { + for _, msg := range m.Containers { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.RestartPolicy))) + i += copy(dAtA[i:], m.RestartPolicy) + if m.TerminationGracePeriodSeconds != nil { + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TerminationGracePeriodSeconds)) + } + if m.ActiveDeadlineSeconds != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ActiveDeadlineSeconds)) + } + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DNSPolicy))) + i += copy(dAtA[i:], m.DNSPolicy) + if len(m.NodeSelector) > 0 { + keysForNodeSelector := make([]string, 0, len(m.NodeSelector)) + for k := range m.NodeSelector { + keysForNodeSelector = append(keysForNodeSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForNodeSelector) + for _, k := range keysForNodeSelector { + dAtA[i] = 0x3a + i++ + v := m.NodeSelector[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServiceAccountName))) + i += copy(dAtA[i:], m.ServiceAccountName) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.DeprecatedServiceAccount))) + i += copy(dAtA[i:], m.DeprecatedServiceAccount) + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeName))) + i += copy(dAtA[i:], m.NodeName) + dAtA[i] = 0x58 + i++ + if m.HostNetwork { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x60 + i++ + if m.HostPID { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x68 + i++ + if m.HostIPC { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SecurityContext != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecurityContext.Size())) + n130, err := m.SecurityContext.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n130 + } + if len(m.ImagePullSecrets) > 0 { + for _, msg := range m.ImagePullSecrets { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Hostname))) + i += copy(dAtA[i:], m.Hostname) + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Subdomain))) + i += copy(dAtA[i:], m.Subdomain) + if m.Affinity != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Affinity.Size())) + n131, err := m.Affinity.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n131 + } + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SchedulerName))) + i += copy(dAtA[i:], m.SchedulerName) + if len(m.InitContainers) > 0 { + for _, msg := range m.InitContainers { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.AutomountServiceAccountToken != nil { + dAtA[i] = 0xa8 + i++ + dAtA[i] = 0x1 + i++ + if *m.AutomountServiceAccountToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if len(m.Tolerations) > 0 { + for _, msg := range m.Tolerations { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.HostAliases) > 0 { + for _, msg := range m.HostAliases { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) + i += copy(dAtA[i:], m.Phase) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.HostIP))) + i += copy(dAtA[i:], m.HostIP) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodIP))) + i += copy(dAtA[i:], m.PodIP) + if m.StartTime != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StartTime.Size())) + n132, err := m.StartTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n132 + } + if len(m.ContainerStatuses) > 0 { + for _, msg := range m.ContainerStatuses { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.QOSClass))) + i += copy(dAtA[i:], m.QOSClass) + if len(m.InitContainerStatuses) > 0 { + for _, msg := range m.InitContainerStatuses { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodStatusResult) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodStatusResult) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n133, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n133 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n134, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n134 + return i, nil +} + +func (m *PodTemplate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodTemplate) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n135, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n135 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n136, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n136 + return i, nil +} + +func (m *PodTemplateList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodTemplateList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n137, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n137 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodTemplateSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodTemplateSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n138, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n138 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n139, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n139 + return i, nil +} + +func (m *PortworxVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PortworxVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeID))) + i += copy(dAtA[i:], m.VolumeID) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x18 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *Preconditions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Preconditions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.UID != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.UID))) + i += copy(dAtA[i:], *m.UID) + } + return i, nil +} + +func (m *PreferAvoidPodsEntry) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PreferAvoidPodsEntry) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodSignature.Size())) + n140, err := m.PodSignature.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n140 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.EvictionTime.Size())) + n141, err := m.EvictionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n141 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *PreferredSchedulingTerm) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PreferredSchedulingTerm) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Weight)) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Preference.Size())) + n142, err := m.Preference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n142 + return i, nil +} + +func (m *Probe) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Probe) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Handler.Size())) + n143, err := m.Handler.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n143 + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.InitialDelaySeconds)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TimeoutSeconds)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PeriodSeconds)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SuccessThreshold)) + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FailureThreshold)) + return i, nil +} + +func (m *ProjectedVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ProjectedVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Sources) > 0 { + for _, msg := range m.Sources { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultMode)) + } + return i, nil +} + +func (m *QuobyteVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QuobyteVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Registry))) + i += copy(dAtA[i:], m.Registry) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Volume))) + i += copy(dAtA[i:], m.Volume) + dAtA[i] = 0x18 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i += copy(dAtA[i:], m.User) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + return i, nil +} + +func (m *RBDVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RBDVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.CephMonitors) > 0 { + for _, s := range m.CephMonitors { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.RBDImage))) + i += copy(dAtA[i:], m.RBDImage) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.RBDPool))) + i += copy(dAtA[i:], m.RBDPool) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.RadosUser))) + i += copy(dAtA[i:], m.RadosUser) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Keyring))) + i += copy(dAtA[i:], m.Keyring) + if m.SecretRef != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n144, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n144 + } + dAtA[i] = 0x40 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *RangeAllocation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RangeAllocation) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n145, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n145 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Range))) + i += copy(dAtA[i:], m.Range) + if m.Data != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Data))) + i += copy(dAtA[i:], m.Data) + } + return i, nil +} + +func (m *ReplicationController) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationController) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n146, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n146 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n147, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n147 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n148, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n148 + return i, nil +} + +func (m *ReplicationControllerCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationControllerCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n149, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n149 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *ReplicationControllerList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationControllerList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n150, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n150 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ReplicationControllerSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationControllerSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) + } + if len(m.Selector) > 0 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + if m.Template != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n151, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n151 + } + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + return i, nil +} + +func (m *ReplicationControllerStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationControllerStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FullyLabeledReplicas)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ResourceFieldSelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceFieldSelector) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContainerName))) + i += copy(dAtA[i:], m.ContainerName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource))) + i += copy(dAtA[i:], m.Resource) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Divisor.Size())) + n152, err := m.Divisor.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n152 + return i, nil +} + +func (m *ResourceQuota) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceQuota) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n153, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n153 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n154, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n154 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n155, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n155 + return i, nil +} + +func (m *ResourceQuotaList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceQuotaList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n156, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n156 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ResourceQuotaSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceQuotaSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Hard) > 0 { + keysForHard := make([]string, 0, len(m.Hard)) + for k := range m.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + for _, k := range keysForHard { + dAtA[i] = 0xa + i++ + v := m.Hard[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n157, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n157 + } + } + if len(m.Scopes) > 0 { + for _, s := range m.Scopes { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *ResourceQuotaStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceQuotaStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Hard) > 0 { + keysForHard := make([]string, 0, len(m.Hard)) + for k := range m.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + for _, k := range keysForHard { + dAtA[i] = 0xa + i++ + v := m.Hard[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n158, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n158 + } + } + if len(m.Used) > 0 { + keysForUsed := make([]string, 0, len(m.Used)) + for k := range m.Used { + keysForUsed = append(keysForUsed, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUsed) + for _, k := range keysForUsed { + dAtA[i] = 0x12 + i++ + v := m.Used[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n159, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n159 + } + } + return i, nil +} + +func (m *ResourceRequirements) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceRequirements) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Limits) > 0 { + keysForLimits := make([]string, 0, len(m.Limits)) + for k := range m.Limits { + keysForLimits = append(keysForLimits, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLimits) + for _, k := range keysForLimits { + dAtA[i] = 0xa + i++ + v := m.Limits[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n160, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n160 + } + } + if len(m.Requests) > 0 { + keysForRequests := make([]string, 0, len(m.Requests)) + for k := range m.Requests { + keysForRequests = append(keysForRequests, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForRequests) + for _, k := range keysForRequests { + dAtA[i] = 0x12 + i++ + v := m.Requests[ResourceName(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n161, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n161 + } + } + return i, nil +} + +func (m *SELinuxOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SELinuxOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i += copy(dAtA[i:], m.User) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Role))) + i += copy(dAtA[i:], m.Role) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Level))) + i += copy(dAtA[i:], m.Level) + return i, nil +} + +func (m *ScaleIOVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Gateway))) + i += copy(dAtA[i:], m.Gateway) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.System))) + i += copy(dAtA[i:], m.System) + if m.SecretRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n162, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n162 + } + dAtA[i] = 0x20 + i++ + if m.SSLEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ProtectionDomain))) + i += copy(dAtA[i:], m.ProtectionDomain) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePool))) + i += copy(dAtA[i:], m.StoragePool) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StorageMode))) + i += copy(dAtA[i:], m.StorageMode) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x50 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *Secret) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Secret) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n163, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n163 + if len(m.Data) > 0 { + keysForData := make([]string, 0, len(m.Data)) + for k := range m.Data { + keysForData = append(keysForData, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + for _, k := range keysForData { + dAtA[i] = 0x12 + i++ + v := m.Data[string(k)] + byteSize := 0 + if v != nil { + byteSize = 1 + len(v) + sovGenerated(uint64(len(v))) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + byteSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + if v != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if len(m.StringData) > 0 { + keysForStringData := make([]string, 0, len(m.StringData)) + for k := range m.StringData { + keysForStringData = append(keysForStringData, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForStringData) + for _, k := range keysForStringData { + dAtA[i] = 0x22 + i++ + v := m.StringData[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + return i, nil +} + +func (m *SecretEnvSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretEnvSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n164, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n164 + if m.Optional != nil { + dAtA[i] = 0x10 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SecretKeySelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretKeySelector) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n165, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n165 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + if m.Optional != nil { + dAtA[i] = 0x18 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SecretList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n166, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n166 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *SecretProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretProjection) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) + n167, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n167 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SecretVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecretVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretName))) + i += copy(dAtA[i:], m.SecretName) + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.DefaultMode)) + } + if m.Optional != nil { + dAtA[i] = 0x20 + i++ + if *m.Optional { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SecurityContext) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Capabilities != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Capabilities.Size())) + n168, err := m.Capabilities.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n168 + } + if m.Privileged != nil { + dAtA[i] = 0x10 + i++ + if *m.Privileged { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.SELinuxOptions != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) + n169, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n169 + } + if m.RunAsUser != nil { + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + dAtA[i] = 0x28 + i++ + if *m.RunAsNonRoot { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if m.ReadOnlyRootFilesystem != nil { + dAtA[i] = 0x30 + i++ + if *m.ReadOnlyRootFilesystem { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SerializedReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SerializedReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Reference.Size())) + n170, err := m.Reference.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n170 + return i, nil +} + +func (m *Service) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Service) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n171, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n171 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n172, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n172 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n173, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n173 + return i, nil +} + +func (m *ServiceAccount) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceAccount) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n174, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n174 + if len(m.Secrets) > 0 { + for _, msg := range m.Secrets { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.ImagePullSecrets) > 0 { + for _, msg := range m.ImagePullSecrets { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.AutomountServiceAccountToken != nil { + dAtA[i] = 0x20 + i++ + if *m.AutomountServiceAccountToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + return i, nil +} + +func (m *ServiceAccountList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceAccountList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n175, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n175 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ServiceList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n176, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n176 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ServicePort) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServicePort) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Protocol))) + i += copy(dAtA[i:], m.Protocol) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port)) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetPort.Size())) + n177, err := m.TargetPort.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n177 + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NodePort)) + return i, nil +} + +func (m *ServiceProxyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceProxyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + return i, nil +} + +func (m *ServiceSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Selector) > 0 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ClusterIP))) + i += copy(dAtA[i:], m.ClusterIP) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if len(m.ExternalIPs) > 0 { + for _, s := range m.ExternalIPs { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SessionAffinity))) + i += copy(dAtA[i:], m.SessionAffinity) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.LoadBalancerIP))) + i += copy(dAtA[i:], m.LoadBalancerIP) + if len(m.LoadBalancerSourceRanges) > 0 { + for _, s := range m.LoadBalancerSourceRanges { + dAtA[i] = 0x4a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ExternalName))) + i += copy(dAtA[i:], m.ExternalName) + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ExternalTrafficPolicy))) + i += copy(dAtA[i:], m.ExternalTrafficPolicy) + dAtA[i] = 0x60 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HealthCheckNodePort)) + return i, nil +} + +func (m *ServiceStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LoadBalancer.Size())) + n178, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n178 + return i, nil +} + +func (m *StorageOSPersistentVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageOSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeNamespace))) + i += copy(dAtA[i:], m.VolumeNamespace) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SecretRef != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n179, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n179 + } + return i, nil +} + +func (m *StorageOSVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageOSVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeNamespace))) + i += copy(dAtA[i:], m.VolumeNamespace) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x20 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.SecretRef != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n180, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n180 + } + return i, nil +} + +func (m *Sysctl) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Sysctl) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + return i, nil +} + +func (m *TCPSocketAction) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TCPSocketAction) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) + n181, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n181 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) + i += copy(dAtA[i:], m.Host) + return i, nil +} + +func (m *Taint) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Taint) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Effect))) + i += copy(dAtA[i:], m.Effect) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TimeAdded.Size())) + n182, err := m.TimeAdded.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n182 + return i, nil +} + +func (m *Toleration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Toleration) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator))) + i += copy(dAtA[i:], m.Operator) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Effect))) + i += copy(dAtA[i:], m.Effect) + if m.TolerationSeconds != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TolerationSeconds)) + } + return i, nil +} + +func (m *Volume) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Volume) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.VolumeSource.Size())) + n183, err := m.VolumeSource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n183 + return i, nil +} + +func (m *VolumeMount) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VolumeMount) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x10 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MountPath))) + i += copy(dAtA[i:], m.MountPath) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SubPath))) + i += copy(dAtA[i:], m.SubPath) + return i, nil +} + +func (m *VolumeProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Secret != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n184, err := m.Secret.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n184 + } + if m.DownwardAPI != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) + n185, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n185 + } + if m.ConfigMap != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) + n186, err := m.ConfigMap.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n186 + } + return i, nil +} + +func (m *VolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.HostPath != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) + n187, err := m.HostPath.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n187 + } + if m.EmptyDir != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) + n188, err := m.EmptyDir.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n188 + } + if m.GCEPersistentDisk != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n189, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n189 + } + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n190, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n190 + } + if m.GitRepo != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) + n191, err := m.GitRepo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n191 + } + if m.Secret != nil { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n192, err := m.Secret.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n192 + } + if m.NFS != nil { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n193, err := m.NFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n193 + } + if m.ISCSI != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n194, err := m.ISCSI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n194 + } + if m.Glusterfs != nil { + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n195, err := m.Glusterfs.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n195 + } + if m.PersistentVolumeClaim != nil { + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) + n196, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n196 + } + if m.RBD != nil { + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n197, err := m.RBD.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n197 + } + if m.FlexVolume != nil { + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n198, err := m.FlexVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n198 + } + if m.Cinder != nil { + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n199, err := m.Cinder.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n199 + } + if m.CephFS != nil { + dAtA[i] = 0x72 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n200, err := m.CephFS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n200 + } + if m.Flocker != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n201, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n201 + } + if m.DownwardAPI != nil { + dAtA[i] = 0x82 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) + n202, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n202 + } + if m.FC != nil { + dAtA[i] = 0x8a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) + n203, err := m.FC.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n203 + } + if m.AzureFile != nil { + dAtA[i] = 0x92 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) + n204, err := m.AzureFile.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n204 + } + if m.ConfigMap != nil { + dAtA[i] = 0x9a + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) + n205, err := m.ConfigMap.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n205 + } + if m.VsphereVolume != nil { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) + n206, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n206 + } + if m.Quobyte != nil { + dAtA[i] = 0xaa + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) + n207, err := m.Quobyte.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n207 + } + if m.AzureDisk != nil { + dAtA[i] = 0xb2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) + n208, err := m.AzureDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n208 + } + if m.PhotonPersistentDisk != nil { + dAtA[i] = 0xba + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) + n209, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n209 + } + if m.PortworxVolume != nil { + dAtA[i] = 0xc2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) + n210, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n210 + } + if m.ScaleIO != nil { + dAtA[i] = 0xca + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) + n211, err := m.ScaleIO.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n211 + } + if m.Projected != nil { + dAtA[i] = 0xd2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) + n212, err := m.Projected.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n212 + } + if m.StorageOS != nil { + dAtA[i] = 0xda + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) + n213, err := m.StorageOS.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n213 + } + return i, nil +} + +func (m *VsphereVirtualDiskVolumeSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VsphereVirtualDiskVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumePath))) + i += copy(dAtA[i:], m.VolumePath) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePolicyName))) + i += copy(dAtA[i:], m.StoragePolicyName) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePolicyID))) + i += copy(dAtA[i:], m.StoragePolicyID) + return i, nil +} + +func (m *WeightedPodAffinityTerm) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *WeightedPodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Weight)) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinityTerm.Size())) + n214, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n214 + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *AWSElasticBlockStoreVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Partition)) + n += 2 + return n +} + +func (m *Affinity) Size() (n int) { + var l int + _ = l + if m.NodeAffinity != nil { + l = m.NodeAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PodAffinity != nil { + l = m.PodAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PodAntiAffinity != nil { + l = m.PodAntiAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *AttachedVolume) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DevicePath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *AvoidPods) Size() (n int) { + var l int + _ = l + if len(m.PreferAvoidPods) > 0 { + for _, e := range m.PreferAvoidPods { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *AzureDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.DiskName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DataDiskURI) + n += 1 + l + sovGenerated(uint64(l)) + if m.CachingMode != nil { + l = len(*m.CachingMode) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FSType != nil { + l = len(*m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ReadOnly != nil { + n += 2 + } + if m.Kind != nil { + l = len(*m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *AzureFileVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.SecretName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ShareName) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *Binding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Capabilities) Size() (n int) { + var l int + _ = l + if len(m.Add) > 0 { + for _, s := range m.Add { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Drop) > 0 { + for _, s := range m.Drop { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CephFSVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.Monitors) > 0 { + for _, s := range m.Monitors { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SecretFile) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + return n +} + +func (m *CinderVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *ComponentCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Error) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ComponentStatus) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ComponentStatusList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ConfigMap) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Data) > 0 { + for k, v := range m.Data { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ConfigMapEnvSource) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *ConfigMapKeySelector) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *ConfigMapList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ConfigMapProjection) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *ConfigMapVolumeSource) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *Container) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Image) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Command) > 0 { + for _, s := range m.Command { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Args) > 0 { + for _, s := range m.Args { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.WorkingDir) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Env) > 0 { + for _, e := range m.Env { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.Resources.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.VolumeMounts) > 0 { + for _, e := range m.VolumeMounts { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.LivenessProbe != nil { + l = m.LivenessProbe.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ReadinessProbe != nil { + l = m.ReadinessProbe.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Lifecycle != nil { + l = m.Lifecycle.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.TerminationMessagePath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ImagePullPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecurityContext != nil { + l = m.SecurityContext.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 3 + n += 3 + n += 3 + if len(m.EnvFrom) > 0 { + for _, e := range m.EnvFrom { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + l = len(m.TerminationMessagePolicy) + n += 2 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerImage) Size() (n int) { + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.SizeBytes)) + return n +} + +func (m *ContainerPort) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.HostPort)) + n += 1 + sovGenerated(uint64(m.ContainerPort)) + l = len(m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.HostIP) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerState) Size() (n int) { + var l int + _ = l + if m.Waiting != nil { + l = m.Waiting.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Running != nil { + l = m.Running.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Terminated != nil { + l = m.Terminated.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ContainerStateRunning) Size() (n int) { + var l int + _ = l + l = m.StartedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerStateTerminated) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ExitCode)) + n += 1 + sovGenerated(uint64(m.Signal)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.StartedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.FinishedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContainerID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerStateWaiting) Size() (n int) { + var l int + _ = l + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.State.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTerminationState.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + n += 1 + sovGenerated(uint64(m.RestartCount)) + l = len(m.Image) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ImageID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContainerID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DaemonEndpoint) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Port)) + return n +} + +func (m *DeleteOptions) Size() (n int) { + var l int + _ = l + if m.GracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.GracePeriodSeconds)) + } + if m.Preconditions != nil { + l = m.Preconditions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.OrphanDependents != nil { + n += 2 + } + if m.PropagationPolicy != nil { + l = len(*m.PropagationPolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *DownwardAPIProjection) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DownwardAPIVolumeFile) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + if m.FieldRef != nil { + l = m.FieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ResourceFieldRef != nil { + l = m.ResourceFieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Mode != nil { + n += 1 + sovGenerated(uint64(*m.Mode)) + } + return n +} + +func (m *DownwardAPIVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + return n +} + +func (m *EmptyDirVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Medium) + n += 1 + l + sovGenerated(uint64(l)) + l = m.SizeLimit.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *EndpointAddress) Size() (n int) { + var l int + _ = l + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + if m.TargetRef != nil { + l = m.TargetRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Hostname) + n += 1 + l + sovGenerated(uint64(l)) + if m.NodeName != nil { + l = len(*m.NodeName) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *EndpointPort) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Port)) + l = len(m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *EndpointSubset) Size() (n int) { + var l int + _ = l + if len(m.Addresses) > 0 { + for _, e := range m.Addresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NotReadyAddresses) > 0 { + for _, e := range m.NotReadyAddresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Endpoints) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subsets) > 0 { + for _, e := range m.Subsets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *EndpointsList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *EnvFromSource) Size() (n int) { + var l int + _ = l + l = len(m.Prefix) + n += 1 + l + sovGenerated(uint64(l)) + if m.ConfigMapRef != nil { + l = m.ConfigMapRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *EnvVar) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + if m.ValueFrom != nil { + l = m.ValueFrom.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *EnvVarSource) Size() (n int) { + var l int + _ = l + if m.FieldRef != nil { + l = m.FieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ResourceFieldRef != nil { + l = m.ResourceFieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ConfigMapKeyRef != nil { + l = m.ConfigMapKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.SecretKeyRef != nil { + l = m.SecretKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Event) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.InvolvedObject.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Source.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.FirstTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Count)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *EventList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *EventSource) Size() (n int) { + var l int + _ = l + l = len(m.Component) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ExecAction) Size() (n int) { + var l int + _ = l + if len(m.Command) > 0 { + for _, s := range m.Command { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *FCVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.TargetWWNs) > 0 { + for _, s := range m.TargetWWNs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Lun != nil { + n += 1 + sovGenerated(uint64(*m.Lun)) + } + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *FlexVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Driver) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + if len(m.Options) > 0 { + for k, v := range m.Options { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *FlockerVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.DatasetName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DatasetUUID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GCEPersistentDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.PDName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Partition)) + n += 2 + return n +} + +func (m *GitRepoVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Repository) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Revision) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Directory) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GlusterfsVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.EndpointsName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *HTTPGetAction) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Scheme) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.HTTPHeaders) > 0 { + for _, e := range m.HTTPHeaders { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HTTPHeader) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Handler) Size() (n int) { + var l int + _ = l + if m.Exec != nil { + l = m.Exec.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.HTTPGet != nil { + l = m.HTTPGet.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.TCPSocket != nil { + l = m.TCPSocket.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *HostAlias) Size() (n int) { + var l int + _ = l + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Hostnames) > 0 { + for _, s := range m.Hostnames { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HostPathVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ISCSIVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.TargetPortal) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.IQN) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Lun)) + l = len(m.ISCSIInterface) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + if len(m.Portals) > 0 { + for _, s := range m.Portals { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + return n +} + +func (m *KeyToPath) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + if m.Mode != nil { + n += 1 + sovGenerated(uint64(*m.Mode)) + } + return n +} + +func (m *Lifecycle) Size() (n int) { + var l int + _ = l + if m.PostStart != nil { + l = m.PostStart.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PreStop != nil { + l = m.PreStop.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *LimitRange) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LimitRangeItem) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Max) > 0 { + for k, v := range m.Max { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Min) > 0 { + for k, v := range m.Min { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Default) > 0 { + for k, v := range m.Default { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.DefaultRequest) > 0 { + for k, v := range m.DefaultRequest { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MaxLimitRequestRatio) > 0 { + for k, v := range m.MaxLimitRequestRatio { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *LimitRangeList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LimitRangeSpec) Size() (n int) { + var l int + _ = l + if len(m.Limits) > 0 { + for _, e := range m.Limits { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *List) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ListOptions) Size() (n int) { + var l int + _ = l + l = len(m.LabelSelector) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldSelector) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + if m.TimeoutSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) + } + n += 2 + return n +} + +func (m *LoadBalancerIngress) Size() (n int) { + var l int + _ = l + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Hostname) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LoadBalancerStatus) Size() (n int) { + var l int + _ = l + if len(m.Ingress) > 0 { + for _, e := range m.Ingress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LocalObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LocalVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NFSVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Server) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *Namespace) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NamespaceList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NamespaceSpec) Size() (n int) { + var l int + _ = l + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NamespaceStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Node) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeAddress) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Address) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeAffinity) Size() (n int) { + var l int + _ = l + if m.RequiredDuringSchedulingIgnoredDuringExecution != nil { + l = m.RequiredDuringSchedulingIgnoredDuringExecution.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.PreferredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastHeartbeatTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeDaemonEndpoints) Size() (n int) { + var l int + _ = l + l = m.KubeletEndpoint.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeProxyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeResources) Size() (n int) { + var l int + _ = l + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *NodeSelector) Size() (n int) { + var l int + _ = l + if len(m.NodeSelectorTerms) > 0 { + for _, e := range m.NodeSelectorTerms { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSelectorTerm) Size() (n int) { + var l int + _ = l + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSpec) Size() (n int) { + var l int + _ = l + l = len(m.PodCIDR) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ExternalID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ProviderID) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + if len(m.Taints) > 0 { + for _, e := range m.Taints { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeStatus) Size() (n int) { + var l int + _ = l + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Allocatable) > 0 { + for k, v := range m.Allocatable { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Addresses) > 0 { + for _, e := range m.Addresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.DaemonEndpoints.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.NodeInfo.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Images) > 0 { + for _, e := range m.Images { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.VolumesInUse) > 0 { + for _, s := range m.VolumesInUse { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.VolumesAttached) > 0 { + for _, e := range m.VolumesAttached { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSystemInfo) Size() (n int) { + var l int + _ = l + l = len(m.MachineID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SystemUUID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.BootID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.KernelVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.OSImage) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContainerRuntimeVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.KubeletVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.KubeProxyVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.OperatingSystem) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Architecture) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectFieldSelector) Size() (n int) { + var l int + _ = l + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldPath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectMeta) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.GenerateName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SelfLink) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Generation)) + l = m.CreationTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.DeletionTimestamp != nil { + l = m.DeletionTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DeletionGracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Annotations) > 0 { + for k, v := range m.Annotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.OwnerReferences) > 0 { + for _, e := range m.OwnerReferences { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ClusterName) + n += 1 + l + sovGenerated(uint64(l)) + if m.Initializers != nil { + l = m.Initializers.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldPath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolume) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolumeClaim) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolumeClaimList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PersistentVolumeClaimSpec) Size() (n int) { + var l int + _ = l + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.Resources.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.StorageClassName != nil { + l = len(*m.StorageClassName) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PersistentVolumeClaimStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *PersistentVolumeClaimVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.ClaimName) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *PersistentVolumeList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PersistentVolumeSource) Size() (n int) { + var l int + _ = l + if m.GCEPersistentDisk != nil { + l = m.GCEPersistentDisk.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AWSElasticBlockStore != nil { + l = m.AWSElasticBlockStore.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.HostPath != nil { + l = m.HostPath.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Glusterfs != nil { + l = m.Glusterfs.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NFS != nil { + l = m.NFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RBD != nil { + l = m.RBD.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ISCSI != nil { + l = m.ISCSI.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Cinder != nil { + l = m.Cinder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CephFS != nil { + l = m.CephFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FC != nil { + l = m.FC.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Flocker != nil { + l = m.Flocker.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FlexVolume != nil { + l = m.FlexVolume.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AzureFile != nil { + l = m.AzureFile.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.VsphereVolume != nil { + l = m.VsphereVolume.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Quobyte != nil { + l = m.Quobyte.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AzureDisk != nil { + l = m.AzureDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.PhotonPersistentDisk != nil { + l = m.PhotonPersistentDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.PortworxVolume != nil { + l = m.PortworxVolume.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.ScaleIO != nil { + l = m.ScaleIO.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Local != nil { + l = m.Local.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.StorageOS != nil { + l = m.StorageOS.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PersistentVolumeSpec) Size() (n int) { + var l int + _ = l + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = m.PersistentVolumeSource.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.ClaimRef != nil { + l = m.ClaimRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.PersistentVolumeReclaimPolicy) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StorageClassName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolumeStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PhotonPersistentDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.PdID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Pod) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodAffinity) Size() (n int) { + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.RequiredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.PreferredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodAffinityTerm) Size() (n int) { + var l int + _ = l + if m.LabelSelector != nil { + l = m.LabelSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.Namespaces) > 0 { + for _, s := range m.Namespaces { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.TopologyKey) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodAntiAffinity) Size() (n int) { + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.RequiredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.PreferredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodAttachOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + n += 2 + n += 2 + l = len(m.Container) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastProbeTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodExecOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + n += 2 + n += 2 + l = len(m.Container) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Command) > 0 { + for _, s := range m.Command { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodLogOptions) Size() (n int) { + var l int + _ = l + l = len(m.Container) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + n += 2 + if m.SinceSeconds != nil { + n += 1 + sovGenerated(uint64(*m.SinceSeconds)) + } + if m.SinceTime != nil { + l = m.SinceTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + if m.TailLines != nil { + n += 1 + sovGenerated(uint64(*m.TailLines)) + } + if m.LimitBytes != nil { + n += 1 + sovGenerated(uint64(*m.LimitBytes)) + } + return n +} + +func (m *PodPortForwardOptions) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + n += 1 + sovGenerated(uint64(e)) + } + } + return n +} + +func (m *PodProxyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodSecurityContext) Size() (n int) { + var l int + _ = l + if m.SELinuxOptions != nil { + l = m.SELinuxOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RunAsUser != nil { + n += 1 + sovGenerated(uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + n += 2 + } + if len(m.SupplementalGroups) > 0 { + for _, e := range m.SupplementalGroups { + n += 1 + sovGenerated(uint64(e)) + } + } + if m.FSGroup != nil { + n += 1 + sovGenerated(uint64(*m.FSGroup)) + } + return n +} + +func (m *PodSignature) Size() (n int) { + var l int + _ = l + if m.PodController != nil { + l = m.PodController.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodSpec) Size() (n int) { + var l int + _ = l + if len(m.Volumes) > 0 { + for _, e := range m.Volumes { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Containers) > 0 { + for _, e := range m.Containers { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.RestartPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if m.TerminationGracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TerminationGracePeriodSeconds)) + } + if m.ActiveDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ActiveDeadlineSeconds)) + } + l = len(m.DNSPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.NodeSelector) > 0 { + for k, v := range m.NodeSelector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.ServiceAccountName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DeprecatedServiceAccount) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.NodeName) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + n += 2 + n += 2 + if m.SecurityContext != nil { + l = m.SecurityContext.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.ImagePullSecrets) > 0 { + for _, e := range m.ImagePullSecrets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Hostname) + n += 2 + l + sovGenerated(uint64(l)) + l = len(m.Subdomain) + n += 2 + l + sovGenerated(uint64(l)) + if m.Affinity != nil { + l = m.Affinity.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + l = len(m.SchedulerName) + n += 2 + l + sovGenerated(uint64(l)) + if len(m.InitContainers) > 0 { + for _, e := range m.InitContainers { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if m.AutomountServiceAccountToken != nil { + n += 3 + } + if len(m.Tolerations) > 0 { + for _, e := range m.Tolerations { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + if len(m.HostAliases) > 0 { + for _, e := range m.HostAliases { + l = e.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.HostIP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.PodIP) + n += 1 + l + sovGenerated(uint64(l)) + if m.StartTime != nil { + l = m.StartTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.ContainerStatuses) > 0 { + for _, e := range m.ContainerStatuses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.QOSClass) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.InitContainerStatuses) > 0 { + for _, e := range m.InitContainerStatuses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodStatusResult) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodTemplate) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodTemplateList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodTemplateSpec) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PortworxVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *Preconditions) Size() (n int) { + var l int + _ = l + if m.UID != nil { + l = len(*m.UID) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PreferAvoidPodsEntry) Size() (n int) { + var l int + _ = l + l = m.PodSignature.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.EvictionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PreferredSchedulingTerm) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Weight)) + l = m.Preference.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Probe) Size() (n int) { + var l int + _ = l + l = m.Handler.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.InitialDelaySeconds)) + n += 1 + sovGenerated(uint64(m.TimeoutSeconds)) + n += 1 + sovGenerated(uint64(m.PeriodSeconds)) + n += 1 + sovGenerated(uint64(m.SuccessThreshold)) + n += 1 + sovGenerated(uint64(m.FailureThreshold)) + return n +} + +func (m *ProjectedVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.Sources) > 0 { + for _, e := range m.Sources { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + return n +} + +func (m *QuobyteVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Registry) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Volume) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *RBDVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.CephMonitors) > 0 { + for _, s := range m.CephMonitors { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.RBDImage) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.RBDPool) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.RadosUser) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Keyring) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + return n +} + +func (m *RangeAllocation) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Range) + n += 1 + l + sovGenerated(uint64(l)) + if m.Data != nil { + l = len(m.Data) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ReplicationController) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicationControllerCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicationControllerList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ReplicationControllerSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if m.Template != nil { + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + return n +} + +func (m *ReplicationControllerStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.FullyLabeledReplicas)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ResourceFieldSelector) Size() (n int) { + var l int + _ = l + l = len(m.ContainerName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Divisor.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceQuota) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceQuotaList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ResourceQuotaSpec) Size() (n int) { + var l int + _ = l + if len(m.Hard) > 0 { + for k, v := range m.Hard { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Scopes) > 0 { + for _, s := range m.Scopes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ResourceQuotaStatus) Size() (n int) { + var l int + _ = l + if len(m.Hard) > 0 { + for k, v := range m.Hard { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Used) > 0 { + for k, v := range m.Used { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ResourceRequirements) Size() (n int) { + var l int + _ = l + if len(m.Limits) > 0 { + for k, v := range m.Limits { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Requests) > 0 { + for k, v := range m.Requests { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SELinuxOptions) Size() (n int) { + var l int + _ = l + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Role) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Level) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScaleIOVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Gateway) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.System) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + l = len(m.ProtectionDomain) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StoragePool) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StorageMode) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *Secret) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Data) > 0 { + for k, v := range m.Data { + _ = k + _ = v + l = 0 + if v != nil { + l = 1 + len(v) + sovGenerated(uint64(len(v))) + } + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + l + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.StringData) > 0 { + for k, v := range m.StringData { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SecretEnvSource) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *SecretKeySelector) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *SecretList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *SecretProjection) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *SecretVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.SecretName) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + if m.Optional != nil { + n += 2 + } + return n +} + +func (m *SecurityContext) Size() (n int) { + var l int + _ = l + if m.Capabilities != nil { + l = m.Capabilities.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Privileged != nil { + n += 2 + } + if m.SELinuxOptions != nil { + l = m.SELinuxOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RunAsUser != nil { + n += 1 + sovGenerated(uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + n += 2 + } + if m.ReadOnlyRootFilesystem != nil { + n += 2 + } + return n +} + +func (m *SerializedReference) Size() (n int) { + var l int + _ = l + l = m.Reference.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Service) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceAccount) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Secrets) > 0 { + for _, e := range m.Secrets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ImagePullSecrets) > 0 { + for _, e := range m.ImagePullSecrets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.AutomountServiceAccountToken != nil { + n += 2 + } + return n +} + +func (m *ServiceAccountList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServiceList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServicePort) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Port)) + l = m.TargetPort.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.NodePort)) + return n +} + +func (m *ServiceProxyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceSpec) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.ClusterIP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ExternalIPs) > 0 { + for _, s := range m.ExternalIPs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.SessionAffinity) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.LoadBalancerIP) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.LoadBalancerSourceRanges) > 0 { + for _, s := range m.LoadBalancerSourceRanges { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ExternalName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ExternalTrafficPolicy) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.HealthCheckNodePort)) + return n +} + +func (m *ServiceStatus) Size() (n int) { + var l int + _ = l + l = m.LoadBalancer.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *StorageOSPersistentVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeNamespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *StorageOSVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeNamespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Sysctl) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TCPSocketAction) Size() (n int) { + var l int + _ = l + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Taint) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Effect) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TimeAdded.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Toleration) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Effect) + n += 1 + l + sovGenerated(uint64(l)) + if m.TolerationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TolerationSeconds)) + } + return n +} + +func (m *Volume) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.VolumeSource.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *VolumeMount) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.MountPath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SubPath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *VolumeProjection) Size() (n int) { + var l int + _ = l + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DownwardAPI != nil { + l = m.DownwardAPI.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ConfigMap != nil { + l = m.ConfigMap.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *VolumeSource) Size() (n int) { + var l int + _ = l + if m.HostPath != nil { + l = m.HostPath.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.EmptyDir != nil { + l = m.EmptyDir.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.GCEPersistentDisk != nil { + l = m.GCEPersistentDisk.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AWSElasticBlockStore != nil { + l = m.AWSElasticBlockStore.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.GitRepo != nil { + l = m.GitRepo.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NFS != nil { + l = m.NFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ISCSI != nil { + l = m.ISCSI.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Glusterfs != nil { + l = m.Glusterfs.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PersistentVolumeClaim != nil { + l = m.PersistentVolumeClaim.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RBD != nil { + l = m.RBD.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FlexVolume != nil { + l = m.FlexVolume.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Cinder != nil { + l = m.Cinder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CephFS != nil { + l = m.CephFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Flocker != nil { + l = m.Flocker.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DownwardAPI != nil { + l = m.DownwardAPI.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.FC != nil { + l = m.FC.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.AzureFile != nil { + l = m.AzureFile.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.ConfigMap != nil { + l = m.ConfigMap.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.VsphereVolume != nil { + l = m.VsphereVolume.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Quobyte != nil { + l = m.Quobyte.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.AzureDisk != nil { + l = m.AzureDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.PhotonPersistentDisk != nil { + l = m.PhotonPersistentDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.PortworxVolume != nil { + l = m.PortworxVolume.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.ScaleIO != nil { + l = m.ScaleIO.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Projected != nil { + l = m.Projected.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.StorageOS != nil { + l = m.StorageOS.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *VsphereVirtualDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumePath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StoragePolicyName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StoragePolicyID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *WeightedPodAffinityTerm) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Weight)) + l = m.PodAffinityTerm.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *AWSElasticBlockStoreVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AWSElasticBlockStoreVolumeSource{`, + `VolumeID:` + fmt.Sprintf("%v", this.VolumeID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `Partition:` + fmt.Sprintf("%v", this.Partition) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Affinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Affinity{`, + `NodeAffinity:` + strings.Replace(fmt.Sprintf("%v", this.NodeAffinity), "NodeAffinity", "NodeAffinity", 1) + `,`, + `PodAffinity:` + strings.Replace(fmt.Sprintf("%v", this.PodAffinity), "PodAffinity", "PodAffinity", 1) + `,`, + `PodAntiAffinity:` + strings.Replace(fmt.Sprintf("%v", this.PodAntiAffinity), "PodAntiAffinity", "PodAntiAffinity", 1) + `,`, + `}`, + }, "") + return s +} +func (this *AttachedVolume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AttachedVolume{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `DevicePath:` + fmt.Sprintf("%v", this.DevicePath) + `,`, + `}`, + }, "") + return s +} +func (this *AvoidPods) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AvoidPods{`, + `PreferAvoidPods:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferAvoidPods), "PreferAvoidPodsEntry", "PreferAvoidPodsEntry", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *AzureDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AzureDiskVolumeSource{`, + `DiskName:` + fmt.Sprintf("%v", this.DiskName) + `,`, + `DataDiskURI:` + fmt.Sprintf("%v", this.DataDiskURI) + `,`, + `CachingMode:` + valueToStringGenerated(this.CachingMode) + `,`, + `FSType:` + valueToStringGenerated(this.FSType) + `,`, + `ReadOnly:` + valueToStringGenerated(this.ReadOnly) + `,`, + `Kind:` + valueToStringGenerated(this.Kind) + `,`, + `}`, + }, "") + return s +} +func (this *AzureFileVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AzureFileVolumeSource{`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `ShareName:` + fmt.Sprintf("%v", this.ShareName) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Binding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Binding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Capabilities) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Capabilities{`, + `Add:` + fmt.Sprintf("%v", this.Add) + `,`, + `Drop:` + fmt.Sprintf("%v", this.Drop) + `,`, + `}`, + }, "") + return s +} +func (this *CephFSVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CephFSVolumeSource{`, + `Monitors:` + fmt.Sprintf("%v", this.Monitors) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `SecretFile:` + fmt.Sprintf("%v", this.SecretFile) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *CinderVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CinderVolumeSource{`, + `VolumeID:` + fmt.Sprintf("%v", this.VolumeID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *ComponentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ComponentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Error:` + fmt.Sprintf("%v", this.Error) + `,`, + `}`, + }, "") + return s +} +func (this *ComponentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ComponentStatus{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ComponentCondition", "ComponentCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ComponentStatusList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ComponentStatusList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ComponentStatus", "ComponentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMap) String() string { + if this == nil { + return "nil" + } + keysForData := make([]string, 0, len(this.Data)) + for k := range this.Data { + keysForData = append(keysForData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + mapStringForData := "map[string]string{" + for _, k := range keysForData { + mapStringForData += fmt.Sprintf("%v: %v,", k, this.Data[k]) + } + mapStringForData += "}" + s := strings.Join([]string{`&ConfigMap{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + mapStringForData + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapEnvSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapEnvSource{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapKeySelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapKeySelector{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ConfigMap", "ConfigMap", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapProjection{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "KeyToPath", "KeyToPath", 1), `&`, ``, 1) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapVolumeSource{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "KeyToPath", "KeyToPath", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *Container) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Container{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Image:` + fmt.Sprintf("%v", this.Image) + `,`, + `Command:` + fmt.Sprintf("%v", this.Command) + `,`, + `Args:` + fmt.Sprintf("%v", this.Args) + `,`, + `WorkingDir:` + fmt.Sprintf("%v", this.WorkingDir) + `,`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "ContainerPort", "ContainerPort", 1), `&`, ``, 1) + `,`, + `Env:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Env), "EnvVar", "EnvVar", 1), `&`, ``, 1) + `,`, + `Resources:` + strings.Replace(strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1), `&`, ``, 1) + `,`, + `VolumeMounts:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeMounts), "VolumeMount", "VolumeMount", 1), `&`, ``, 1) + `,`, + `LivenessProbe:` + strings.Replace(fmt.Sprintf("%v", this.LivenessProbe), "Probe", "Probe", 1) + `,`, + `ReadinessProbe:` + strings.Replace(fmt.Sprintf("%v", this.ReadinessProbe), "Probe", "Probe", 1) + `,`, + `Lifecycle:` + strings.Replace(fmt.Sprintf("%v", this.Lifecycle), "Lifecycle", "Lifecycle", 1) + `,`, + `TerminationMessagePath:` + fmt.Sprintf("%v", this.TerminationMessagePath) + `,`, + `ImagePullPolicy:` + fmt.Sprintf("%v", this.ImagePullPolicy) + `,`, + `SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "SecurityContext", "SecurityContext", 1) + `,`, + `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, + `StdinOnce:` + fmt.Sprintf("%v", this.StdinOnce) + `,`, + `TTY:` + fmt.Sprintf("%v", this.TTY) + `,`, + `EnvFrom:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.EnvFrom), "EnvFromSource", "EnvFromSource", 1), `&`, ``, 1) + `,`, + `TerminationMessagePolicy:` + fmt.Sprintf("%v", this.TerminationMessagePolicy) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerImage) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerImage{`, + `Names:` + fmt.Sprintf("%v", this.Names) + `,`, + `SizeBytes:` + fmt.Sprintf("%v", this.SizeBytes) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerPort{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `HostPort:` + fmt.Sprintf("%v", this.HostPort) + `,`, + `ContainerPort:` + fmt.Sprintf("%v", this.ContainerPort) + `,`, + `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, + `HostIP:` + fmt.Sprintf("%v", this.HostIP) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerState) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerState{`, + `Waiting:` + strings.Replace(fmt.Sprintf("%v", this.Waiting), "ContainerStateWaiting", "ContainerStateWaiting", 1) + `,`, + `Running:` + strings.Replace(fmt.Sprintf("%v", this.Running), "ContainerStateRunning", "ContainerStateRunning", 1) + `,`, + `Terminated:` + strings.Replace(fmt.Sprintf("%v", this.Terminated), "ContainerStateTerminated", "ContainerStateTerminated", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStateRunning) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStateRunning{`, + `StartedAt:` + strings.Replace(strings.Replace(this.StartedAt.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStateTerminated) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStateTerminated{`, + `ExitCode:` + fmt.Sprintf("%v", this.ExitCode) + `,`, + `Signal:` + fmt.Sprintf("%v", this.Signal) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `StartedAt:` + strings.Replace(strings.Replace(this.StartedAt.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `FinishedAt:` + strings.Replace(strings.Replace(this.FinishedAt.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStateWaiting) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStateWaiting{`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `State:` + strings.Replace(strings.Replace(this.State.String(), "ContainerState", "ContainerState", 1), `&`, ``, 1) + `,`, + `LastTerminationState:` + strings.Replace(strings.Replace(this.LastTerminationState.String(), "ContainerState", "ContainerState", 1), `&`, ``, 1) + `,`, + `Ready:` + fmt.Sprintf("%v", this.Ready) + `,`, + `RestartCount:` + fmt.Sprintf("%v", this.RestartCount) + `,`, + `Image:` + fmt.Sprintf("%v", this.Image) + `,`, + `ImageID:` + fmt.Sprintf("%v", this.ImageID) + `,`, + `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonEndpoint) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonEndpoint{`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `}`, + }, "") + return s +} +func (this *DeleteOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeleteOptions{`, + `GracePeriodSeconds:` + valueToStringGenerated(this.GracePeriodSeconds) + `,`, + `Preconditions:` + strings.Replace(fmt.Sprintf("%v", this.Preconditions), "Preconditions", "Preconditions", 1) + `,`, + `OrphanDependents:` + valueToStringGenerated(this.OrphanDependents) + `,`, + `PropagationPolicy:` + valueToStringGenerated(this.PropagationPolicy) + `,`, + `}`, + }, "") + return s +} +func (this *DownwardAPIProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DownwardAPIProjection{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "DownwardAPIVolumeFile", "DownwardAPIVolumeFile", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DownwardAPIVolumeFile) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DownwardAPIVolumeFile{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `FieldRef:` + strings.Replace(fmt.Sprintf("%v", this.FieldRef), "ObjectFieldSelector", "ObjectFieldSelector", 1) + `,`, + `ResourceFieldRef:` + strings.Replace(fmt.Sprintf("%v", this.ResourceFieldRef), "ResourceFieldSelector", "ResourceFieldSelector", 1) + `,`, + `Mode:` + valueToStringGenerated(this.Mode) + `,`, + `}`, + }, "") + return s +} +func (this *DownwardAPIVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DownwardAPIVolumeSource{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "DownwardAPIVolumeFile", "DownwardAPIVolumeFile", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `}`, + }, "") + return s +} +func (this *EmptyDirVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EmptyDirVolumeSource{`, + `Medium:` + fmt.Sprintf("%v", this.Medium) + `,`, + `SizeLimit:` + strings.Replace(strings.Replace(this.SizeLimit.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointAddress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointAddress{`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `TargetRef:` + strings.Replace(fmt.Sprintf("%v", this.TargetRef), "ObjectReference", "ObjectReference", 1) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `NodeName:` + valueToStringGenerated(this.NodeName) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointPort{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointSubset) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointSubset{`, + `Addresses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Addresses), "EndpointAddress", "EndpointAddress", 1), `&`, ``, 1) + `,`, + `NotReadyAddresses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.NotReadyAddresses), "EndpointAddress", "EndpointAddress", 1), `&`, ``, 1) + `,`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "EndpointPort", "EndpointPort", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Endpoints) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Endpoints{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subsets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subsets), "EndpointSubset", "EndpointSubset", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointsList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointsList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Endpoints", "Endpoints", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EnvFromSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EnvFromSource{`, + `Prefix:` + fmt.Sprintf("%v", this.Prefix) + `,`, + `ConfigMapRef:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMapRef), "ConfigMapEnvSource", "ConfigMapEnvSource", 1) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretEnvSource", "SecretEnvSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *EnvVar) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EnvVar{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `ValueFrom:` + strings.Replace(fmt.Sprintf("%v", this.ValueFrom), "EnvVarSource", "EnvVarSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *EnvVarSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EnvVarSource{`, + `FieldRef:` + strings.Replace(fmt.Sprintf("%v", this.FieldRef), "ObjectFieldSelector", "ObjectFieldSelector", 1) + `,`, + `ResourceFieldRef:` + strings.Replace(fmt.Sprintf("%v", this.ResourceFieldRef), "ResourceFieldSelector", "ResourceFieldSelector", 1) + `,`, + `ConfigMapKeyRef:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMapKeyRef), "ConfigMapKeySelector", "ConfigMapKeySelector", 1) + `,`, + `SecretKeyRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretKeyRef), "SecretKeySelector", "SecretKeySelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Event) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Event{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `InvolvedObject:` + strings.Replace(strings.Replace(this.InvolvedObject.String(), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Source:` + strings.Replace(strings.Replace(this.Source.String(), "EventSource", "EventSource", 1), `&`, ``, 1) + `,`, + `FirstTimestamp:` + strings.Replace(strings.Replace(this.FirstTimestamp.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTimestamp:` + strings.Replace(strings.Replace(this.LastTimestamp.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Count:` + fmt.Sprintf("%v", this.Count) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `}`, + }, "") + return s +} +func (this *EventList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EventList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Event", "Event", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EventSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EventSource{`, + `Component:` + fmt.Sprintf("%v", this.Component) + `,`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `}`, + }, "") + return s +} +func (this *ExecAction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExecAction{`, + `Command:` + fmt.Sprintf("%v", this.Command) + `,`, + `}`, + }, "") + return s +} +func (this *FCVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&FCVolumeSource{`, + `TargetWWNs:` + fmt.Sprintf("%v", this.TargetWWNs) + `,`, + `Lun:` + valueToStringGenerated(this.Lun) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *FlexVolumeSource) String() string { + if this == nil { + return "nil" + } + keysForOptions := make([]string, 0, len(this.Options)) + for k := range this.Options { + keysForOptions = append(keysForOptions, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForOptions) + mapStringForOptions := "map[string]string{" + for _, k := range keysForOptions { + mapStringForOptions += fmt.Sprintf("%v: %v,", k, this.Options[k]) + } + mapStringForOptions += "}" + s := strings.Join([]string{`&FlexVolumeSource{`, + `Driver:` + fmt.Sprintf("%v", this.Driver) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `Options:` + mapStringForOptions + `,`, + `}`, + }, "") + return s +} +func (this *FlockerVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&FlockerVolumeSource{`, + `DatasetName:` + fmt.Sprintf("%v", this.DatasetName) + `,`, + `DatasetUUID:` + fmt.Sprintf("%v", this.DatasetUUID) + `,`, + `}`, + }, "") + return s +} +func (this *GCEPersistentDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GCEPersistentDiskVolumeSource{`, + `PDName:` + fmt.Sprintf("%v", this.PDName) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `Partition:` + fmt.Sprintf("%v", this.Partition) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *GitRepoVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GitRepoVolumeSource{`, + `Repository:` + fmt.Sprintf("%v", this.Repository) + `,`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `Directory:` + fmt.Sprintf("%v", this.Directory) + `,`, + `}`, + }, "") + return s +} +func (this *GlusterfsVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GlusterfsVolumeSource{`, + `EndpointsName:` + fmt.Sprintf("%v", this.EndpointsName) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPGetAction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPGetAction{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Port:` + strings.Replace(strings.Replace(this.Port.String(), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `Scheme:` + fmt.Sprintf("%v", this.Scheme) + `,`, + `HTTPHeaders:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HTTPHeaders), "HTTPHeader", "HTTPHeader", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPHeader) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPHeader{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + return s +} +func (this *Handler) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Handler{`, + `Exec:` + strings.Replace(fmt.Sprintf("%v", this.Exec), "ExecAction", "ExecAction", 1) + `,`, + `HTTPGet:` + strings.Replace(fmt.Sprintf("%v", this.HTTPGet), "HTTPGetAction", "HTTPGetAction", 1) + `,`, + `TCPSocket:` + strings.Replace(fmt.Sprintf("%v", this.TCPSocket), "TCPSocketAction", "TCPSocketAction", 1) + `,`, + `}`, + }, "") + return s +} +func (this *HostAlias) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostAlias{`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `Hostnames:` + fmt.Sprintf("%v", this.Hostnames) + `,`, + `}`, + }, "") + return s +} +func (this *HostPathVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostPathVolumeSource{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *ISCSIVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ISCSIVolumeSource{`, + `TargetPortal:` + fmt.Sprintf("%v", this.TargetPortal) + `,`, + `IQN:` + fmt.Sprintf("%v", this.IQN) + `,`, + `Lun:` + fmt.Sprintf("%v", this.Lun) + `,`, + `ISCSIInterface:` + fmt.Sprintf("%v", this.ISCSIInterface) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `Portals:` + fmt.Sprintf("%v", this.Portals) + `,`, + `DiscoveryCHAPAuth:` + fmt.Sprintf("%v", this.DiscoveryCHAPAuth) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `SessionCHAPAuth:` + fmt.Sprintf("%v", this.SessionCHAPAuth) + `,`, + `}`, + }, "") + return s +} +func (this *KeyToPath) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&KeyToPath{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Mode:` + valueToStringGenerated(this.Mode) + `,`, + `}`, + }, "") + return s +} +func (this *Lifecycle) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Lifecycle{`, + `PostStart:` + strings.Replace(fmt.Sprintf("%v", this.PostStart), "Handler", "Handler", 1) + `,`, + `PreStop:` + strings.Replace(fmt.Sprintf("%v", this.PreStop), "Handler", "Handler", 1) + `,`, + `}`, + }, "") + return s +} +func (this *LimitRange) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LimitRange{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "LimitRangeSpec", "LimitRangeSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LimitRangeItem) String() string { + if this == nil { + return "nil" + } + keysForMax := make([]string, 0, len(this.Max)) + for k := range this.Max { + keysForMax = append(keysForMax, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMax) + mapStringForMax := "ResourceList{" + for _, k := range keysForMax { + mapStringForMax += fmt.Sprintf("%v: %v,", k, this.Max[ResourceName(k)]) + } + mapStringForMax += "}" + keysForMin := make([]string, 0, len(this.Min)) + for k := range this.Min { + keysForMin = append(keysForMin, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMin) + mapStringForMin := "ResourceList{" + for _, k := range keysForMin { + mapStringForMin += fmt.Sprintf("%v: %v,", k, this.Min[ResourceName(k)]) + } + mapStringForMin += "}" + keysForDefault := make([]string, 0, len(this.Default)) + for k := range this.Default { + keysForDefault = append(keysForDefault, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefault) + mapStringForDefault := "ResourceList{" + for _, k := range keysForDefault { + mapStringForDefault += fmt.Sprintf("%v: %v,", k, this.Default[ResourceName(k)]) + } + mapStringForDefault += "}" + keysForDefaultRequest := make([]string, 0, len(this.DefaultRequest)) + for k := range this.DefaultRequest { + keysForDefaultRequest = append(keysForDefaultRequest, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefaultRequest) + mapStringForDefaultRequest := "ResourceList{" + for _, k := range keysForDefaultRequest { + mapStringForDefaultRequest += fmt.Sprintf("%v: %v,", k, this.DefaultRequest[ResourceName(k)]) + } + mapStringForDefaultRequest += "}" + keysForMaxLimitRequestRatio := make([]string, 0, len(this.MaxLimitRequestRatio)) + for k := range this.MaxLimitRequestRatio { + keysForMaxLimitRequestRatio = append(keysForMaxLimitRequestRatio, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMaxLimitRequestRatio) + mapStringForMaxLimitRequestRatio := "ResourceList{" + for _, k := range keysForMaxLimitRequestRatio { + mapStringForMaxLimitRequestRatio += fmt.Sprintf("%v: %v,", k, this.MaxLimitRequestRatio[ResourceName(k)]) + } + mapStringForMaxLimitRequestRatio += "}" + s := strings.Join([]string{`&LimitRangeItem{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Max:` + mapStringForMax + `,`, + `Min:` + mapStringForMin + `,`, + `Default:` + mapStringForDefault + `,`, + `DefaultRequest:` + mapStringForDefaultRequest + `,`, + `MaxLimitRequestRatio:` + mapStringForMaxLimitRequestRatio + `,`, + `}`, + }, "") + return s +} +func (this *LimitRangeList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LimitRangeList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "LimitRange", "LimitRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LimitRangeSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LimitRangeSpec{`, + `Limits:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Limits), "LimitRangeItem", "LimitRangeItem", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *List) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&List{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListOptions{`, + `LabelSelector:` + fmt.Sprintf("%v", this.LabelSelector) + `,`, + `FieldSelector:` + fmt.Sprintf("%v", this.FieldSelector) + `,`, + `Watch:` + fmt.Sprintf("%v", this.Watch) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, + `IncludeUninitialized:` + fmt.Sprintf("%v", this.IncludeUninitialized) + `,`, + `}`, + }, "") + return s +} +func (this *LoadBalancerIngress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LoadBalancerIngress{`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `}`, + }, "") + return s +} +func (this *LoadBalancerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LoadBalancerStatus{`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "LoadBalancerIngress", "LoadBalancerIngress", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LocalObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalObjectReference{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *LocalVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalVolumeSource{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *NFSVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NFSVolumeSource{`, + `Server:` + fmt.Sprintf("%v", this.Server) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Namespace) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Namespace{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NamespaceSpec", "NamespaceSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "NamespaceStatus", "NamespaceStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NamespaceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NamespaceList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Namespace", "Namespace", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NamespaceSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NamespaceSpec{`, + `Finalizers:` + fmt.Sprintf("%v", this.Finalizers) + `,`, + `}`, + }, "") + return s +} +func (this *NamespaceStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NamespaceStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `}`, + }, "") + return s +} +func (this *Node) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Node{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NodeSpec", "NodeSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "NodeStatus", "NodeStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeAddress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeAddress{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Address:` + fmt.Sprintf("%v", this.Address) + `,`, + `}`, + }, "") + return s +} +func (this *NodeAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeAffinity{`, + `RequiredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(fmt.Sprintf("%v", this.RequiredDuringSchedulingIgnoredDuringExecution), "NodeSelector", "NodeSelector", 1) + `,`, + `PreferredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferredDuringSchedulingIgnoredDuringExecution), "PreferredSchedulingTerm", "PreferredSchedulingTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastHeartbeatTime:` + strings.Replace(strings.Replace(this.LastHeartbeatTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *NodeDaemonEndpoints) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeDaemonEndpoints{`, + `KubeletEndpoint:` + strings.Replace(strings.Replace(this.KubeletEndpoint.String(), "DaemonEndpoint", "DaemonEndpoint", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Node", "Node", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeProxyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeProxyOptions{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *NodeResources) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + s := strings.Join([]string{`&NodeResources{`, + `Capacity:` + mapStringForCapacity + `,`, + `}`, + }, "") + return s +} +func (this *NodeSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSelector{`, + `NodeSelectorTerms:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.NodeSelectorTerms), "NodeSelectorTerm", "NodeSelectorTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSelectorTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSelectorTerm{`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "NodeSelectorRequirement", "NodeSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSpec{`, + `PodCIDR:` + fmt.Sprintf("%v", this.PodCIDR) + `,`, + `ExternalID:` + fmt.Sprintf("%v", this.ExternalID) + `,`, + `ProviderID:` + fmt.Sprintf("%v", this.ProviderID) + `,`, + `Unschedulable:` + fmt.Sprintf("%v", this.Unschedulable) + `,`, + `Taints:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Taints), "Taint", "Taint", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeStatus) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + keysForAllocatable := make([]string, 0, len(this.Allocatable)) + for k := range this.Allocatable { + keysForAllocatable = append(keysForAllocatable, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAllocatable) + mapStringForAllocatable := "ResourceList{" + for _, k := range keysForAllocatable { + mapStringForAllocatable += fmt.Sprintf("%v: %v,", k, this.Allocatable[ResourceName(k)]) + } + mapStringForAllocatable += "}" + s := strings.Join([]string{`&NodeStatus{`, + `Capacity:` + mapStringForCapacity + `,`, + `Allocatable:` + mapStringForAllocatable + `,`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "NodeCondition", "NodeCondition", 1), `&`, ``, 1) + `,`, + `Addresses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Addresses), "NodeAddress", "NodeAddress", 1), `&`, ``, 1) + `,`, + `DaemonEndpoints:` + strings.Replace(strings.Replace(this.DaemonEndpoints.String(), "NodeDaemonEndpoints", "NodeDaemonEndpoints", 1), `&`, ``, 1) + `,`, + `NodeInfo:` + strings.Replace(strings.Replace(this.NodeInfo.String(), "NodeSystemInfo", "NodeSystemInfo", 1), `&`, ``, 1) + `,`, + `Images:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Images), "ContainerImage", "ContainerImage", 1), `&`, ``, 1) + `,`, + `VolumesInUse:` + fmt.Sprintf("%v", this.VolumesInUse) + `,`, + `VolumesAttached:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumesAttached), "AttachedVolume", "AttachedVolume", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSystemInfo) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSystemInfo{`, + `MachineID:` + fmt.Sprintf("%v", this.MachineID) + `,`, + `SystemUUID:` + fmt.Sprintf("%v", this.SystemUUID) + `,`, + `BootID:` + fmt.Sprintf("%v", this.BootID) + `,`, + `KernelVersion:` + fmt.Sprintf("%v", this.KernelVersion) + `,`, + `OSImage:` + fmt.Sprintf("%v", this.OSImage) + `,`, + `ContainerRuntimeVersion:` + fmt.Sprintf("%v", this.ContainerRuntimeVersion) + `,`, + `KubeletVersion:` + fmt.Sprintf("%v", this.KubeletVersion) + `,`, + `KubeProxyVersion:` + fmt.Sprintf("%v", this.KubeProxyVersion) + `,`, + `OperatingSystem:` + fmt.Sprintf("%v", this.OperatingSystem) + `,`, + `Architecture:` + fmt.Sprintf("%v", this.Architecture) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectFieldSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectFieldSelector{`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `FieldPath:` + fmt.Sprintf("%v", this.FieldPath) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMeta) String() string { + if this == nil { + return "nil" + } + keysForLabels := make([]string, 0, len(this.Labels)) + for k := range this.Labels { + keysForLabels = append(keysForLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + mapStringForLabels := "map[string]string{" + for _, k := range keysForLabels { + mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) + } + mapStringForLabels += "}" + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" + s := strings.Join([]string{`&ObjectMeta{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `GenerateName:` + fmt.Sprintf("%v", this.GenerateName) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `SelfLink:` + fmt.Sprintf("%v", this.SelfLink) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `Generation:` + fmt.Sprintf("%v", this.Generation) + `,`, + `CreationTimestamp:` + strings.Replace(strings.Replace(this.CreationTimestamp.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `DeletionTimestamp:` + strings.Replace(fmt.Sprintf("%v", this.DeletionTimestamp), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `DeletionGracePeriodSeconds:` + valueToStringGenerated(this.DeletionGracePeriodSeconds) + `,`, + `Labels:` + mapStringForLabels + `,`, + `Annotations:` + mapStringForAnnotations + `,`, + `OwnerReferences:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.OwnerReferences), "OwnerReference", "k8s_io_apimachinery_pkg_apis_meta_v1.OwnerReference", 1), `&`, ``, 1) + `,`, + `Finalizers:` + fmt.Sprintf("%v", this.Finalizers) + `,`, + `ClusterName:` + fmt.Sprintf("%v", this.ClusterName) + `,`, + `Initializers:` + strings.Replace(fmt.Sprintf("%v", this.Initializers), "Initializers", "k8s_io_apimachinery_pkg_apis_meta_v1.Initializers", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `FieldPath:` + fmt.Sprintf("%v", this.FieldPath) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolume{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PersistentVolumeSpec", "PersistentVolumeSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PersistentVolumeStatus", "PersistentVolumeStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaim) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaim{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PersistentVolumeClaimSpec", "PersistentVolumeClaimSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PersistentVolumeClaimStatus", "PersistentVolumeClaimStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PersistentVolumeClaim", "PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimSpec{`, + `AccessModes:` + fmt.Sprintf("%v", this.AccessModes) + `,`, + `Resources:` + strings.Replace(strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1), `&`, ``, 1) + `,`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `StorageClassName:` + valueToStringGenerated(this.StorageClassName) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimStatus) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + s := strings.Join([]string{`&PersistentVolumeClaimStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `AccessModes:` + fmt.Sprintf("%v", this.AccessModes) + `,`, + `Capacity:` + mapStringForCapacity + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimVolumeSource{`, + `ClaimName:` + fmt.Sprintf("%v", this.ClaimName) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PersistentVolume", "PersistentVolume", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeSource{`, + `GCEPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.GCEPersistentDisk), "GCEPersistentDiskVolumeSource", "GCEPersistentDiskVolumeSource", 1) + `,`, + `AWSElasticBlockStore:` + strings.Replace(fmt.Sprintf("%v", this.AWSElasticBlockStore), "AWSElasticBlockStoreVolumeSource", "AWSElasticBlockStoreVolumeSource", 1) + `,`, + `HostPath:` + strings.Replace(fmt.Sprintf("%v", this.HostPath), "HostPathVolumeSource", "HostPathVolumeSource", 1) + `,`, + `Glusterfs:` + strings.Replace(fmt.Sprintf("%v", this.Glusterfs), "GlusterfsVolumeSource", "GlusterfsVolumeSource", 1) + `,`, + `NFS:` + strings.Replace(fmt.Sprintf("%v", this.NFS), "NFSVolumeSource", "NFSVolumeSource", 1) + `,`, + `RBD:` + strings.Replace(fmt.Sprintf("%v", this.RBD), "RBDVolumeSource", "RBDVolumeSource", 1) + `,`, + `ISCSI:` + strings.Replace(fmt.Sprintf("%v", this.ISCSI), "ISCSIVolumeSource", "ISCSIVolumeSource", 1) + `,`, + `Cinder:` + strings.Replace(fmt.Sprintf("%v", this.Cinder), "CinderVolumeSource", "CinderVolumeSource", 1) + `,`, + `CephFS:` + strings.Replace(fmt.Sprintf("%v", this.CephFS), "CephFSVolumeSource", "CephFSVolumeSource", 1) + `,`, + `FC:` + strings.Replace(fmt.Sprintf("%v", this.FC), "FCVolumeSource", "FCVolumeSource", 1) + `,`, + `Flocker:` + strings.Replace(fmt.Sprintf("%v", this.Flocker), "FlockerVolumeSource", "FlockerVolumeSource", 1) + `,`, + `FlexVolume:` + strings.Replace(fmt.Sprintf("%v", this.FlexVolume), "FlexVolumeSource", "FlexVolumeSource", 1) + `,`, + `AzureFile:` + strings.Replace(fmt.Sprintf("%v", this.AzureFile), "AzureFileVolumeSource", "AzureFileVolumeSource", 1) + `,`, + `VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`, + `Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`, + `AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`, + `PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`, + `PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`, + `ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`, + `Local:` + strings.Replace(fmt.Sprintf("%v", this.Local), "LocalVolumeSource", "LocalVolumeSource", 1) + `,`, + `StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSPersistentVolumeSource", "StorageOSPersistentVolumeSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeSpec) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + s := strings.Join([]string{`&PersistentVolumeSpec{`, + `Capacity:` + mapStringForCapacity + `,`, + `PersistentVolumeSource:` + strings.Replace(strings.Replace(this.PersistentVolumeSource.String(), "PersistentVolumeSource", "PersistentVolumeSource", 1), `&`, ``, 1) + `,`, + `AccessModes:` + fmt.Sprintf("%v", this.AccessModes) + `,`, + `ClaimRef:` + strings.Replace(fmt.Sprintf("%v", this.ClaimRef), "ObjectReference", "ObjectReference", 1) + `,`, + `PersistentVolumeReclaimPolicy:` + fmt.Sprintf("%v", this.PersistentVolumeReclaimPolicy) + `,`, + `StorageClassName:` + fmt.Sprintf("%v", this.StorageClassName) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `}`, + }, "") + return s +} +func (this *PhotonPersistentDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PhotonPersistentDiskVolumeSource{`, + `PdID:` + fmt.Sprintf("%v", this.PdID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `}`, + }, "") + return s +} +func (this *Pod) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Pod{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSpec", "PodSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodStatus", "PodStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAffinity{`, + `RequiredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RequiredDuringSchedulingIgnoredDuringExecution), "PodAffinityTerm", "PodAffinityTerm", 1), `&`, ``, 1) + `,`, + `PreferredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferredDuringSchedulingIgnoredDuringExecution), "WeightedPodAffinityTerm", "WeightedPodAffinityTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodAffinityTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAffinityTerm{`, + `LabelSelector:` + strings.Replace(fmt.Sprintf("%v", this.LabelSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Namespaces:` + fmt.Sprintf("%v", this.Namespaces) + `,`, + `TopologyKey:` + fmt.Sprintf("%v", this.TopologyKey) + `,`, + `}`, + }, "") + return s +} +func (this *PodAntiAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAntiAffinity{`, + `RequiredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RequiredDuringSchedulingIgnoredDuringExecution), "PodAffinityTerm", "PodAffinityTerm", 1), `&`, ``, 1) + `,`, + `PreferredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferredDuringSchedulingIgnoredDuringExecution), "WeightedPodAffinityTerm", "WeightedPodAffinityTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodAttachOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAttachOptions{`, + `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, + `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, + `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, + `TTY:` + fmt.Sprintf("%v", this.TTY) + `,`, + `Container:` + fmt.Sprintf("%v", this.Container) + `,`, + `}`, + }, "") + return s +} +func (this *PodCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *PodExecOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodExecOptions{`, + `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, + `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, + `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, + `TTY:` + fmt.Sprintf("%v", this.TTY) + `,`, + `Container:` + fmt.Sprintf("%v", this.Container) + `,`, + `Command:` + fmt.Sprintf("%v", this.Command) + `,`, + `}`, + }, "") + return s +} +func (this *PodList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Pod", "Pod", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodLogOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodLogOptions{`, + `Container:` + fmt.Sprintf("%v", this.Container) + `,`, + `Follow:` + fmt.Sprintf("%v", this.Follow) + `,`, + `Previous:` + fmt.Sprintf("%v", this.Previous) + `,`, + `SinceSeconds:` + valueToStringGenerated(this.SinceSeconds) + `,`, + `SinceTime:` + strings.Replace(fmt.Sprintf("%v", this.SinceTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `Timestamps:` + fmt.Sprintf("%v", this.Timestamps) + `,`, + `TailLines:` + valueToStringGenerated(this.TailLines) + `,`, + `LimitBytes:` + valueToStringGenerated(this.LimitBytes) + `,`, + `}`, + }, "") + return s +} +func (this *PodPortForwardOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPortForwardOptions{`, + `Ports:` + fmt.Sprintf("%v", this.Ports) + `,`, + `}`, + }, "") + return s +} +func (this *PodProxyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodProxyOptions{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityContext) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityContext{`, + `SELinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SELinuxOptions), "SELinuxOptions", "SELinuxOptions", 1) + `,`, + `RunAsUser:` + valueToStringGenerated(this.RunAsUser) + `,`, + `RunAsNonRoot:` + valueToStringGenerated(this.RunAsNonRoot) + `,`, + `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, + `FSGroup:` + valueToStringGenerated(this.FSGroup) + `,`, + `}`, + }, "") + return s +} +func (this *PodSignature) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSignature{`, + `PodController:` + strings.Replace(fmt.Sprintf("%v", this.PodController), "OwnerReference", "k8s_io_apimachinery_pkg_apis_meta_v1.OwnerReference", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSpec) String() string { + if this == nil { + return "nil" + } + keysForNodeSelector := make([]string, 0, len(this.NodeSelector)) + for k := range this.NodeSelector { + keysForNodeSelector = append(keysForNodeSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForNodeSelector) + mapStringForNodeSelector := "map[string]string{" + for _, k := range keysForNodeSelector { + mapStringForNodeSelector += fmt.Sprintf("%v: %v,", k, this.NodeSelector[k]) + } + mapStringForNodeSelector += "}" + s := strings.Join([]string{`&PodSpec{`, + `Volumes:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Volumes), "Volume", "Volume", 1), `&`, ``, 1) + `,`, + `Containers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Containers), "Container", "Container", 1), `&`, ``, 1) + `,`, + `RestartPolicy:` + fmt.Sprintf("%v", this.RestartPolicy) + `,`, + `TerminationGracePeriodSeconds:` + valueToStringGenerated(this.TerminationGracePeriodSeconds) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `DNSPolicy:` + fmt.Sprintf("%v", this.DNSPolicy) + `,`, + `NodeSelector:` + mapStringForNodeSelector + `,`, + `ServiceAccountName:` + fmt.Sprintf("%v", this.ServiceAccountName) + `,`, + `DeprecatedServiceAccount:` + fmt.Sprintf("%v", this.DeprecatedServiceAccount) + `,`, + `NodeName:` + fmt.Sprintf("%v", this.NodeName) + `,`, + `HostNetwork:` + fmt.Sprintf("%v", this.HostNetwork) + `,`, + `HostPID:` + fmt.Sprintf("%v", this.HostPID) + `,`, + `HostIPC:` + fmt.Sprintf("%v", this.HostIPC) + `,`, + `SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "PodSecurityContext", "PodSecurityContext", 1) + `,`, + `ImagePullSecrets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ImagePullSecrets), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `Subdomain:` + fmt.Sprintf("%v", this.Subdomain) + `,`, + `Affinity:` + strings.Replace(fmt.Sprintf("%v", this.Affinity), "Affinity", "Affinity", 1) + `,`, + `SchedulerName:` + fmt.Sprintf("%v", this.SchedulerName) + `,`, + `InitContainers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.InitContainers), "Container", "Container", 1), `&`, ``, 1) + `,`, + `AutomountServiceAccountToken:` + valueToStringGenerated(this.AutomountServiceAccountToken) + `,`, + `Tolerations:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Tolerations), "Toleration", "Toleration", 1), `&`, ``, 1) + `,`, + `HostAliases:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HostAliases), "HostAlias", "HostAlias", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "PodCondition", "PodCondition", 1), `&`, ``, 1) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `HostIP:` + fmt.Sprintf("%v", this.HostIP) + `,`, + `PodIP:` + fmt.Sprintf("%v", this.PodIP) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `ContainerStatuses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ContainerStatuses), "ContainerStatus", "ContainerStatus", 1), `&`, ``, 1) + `,`, + `QOSClass:` + fmt.Sprintf("%v", this.QOSClass) + `,`, + `InitContainerStatuses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.InitContainerStatuses), "ContainerStatus", "ContainerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodStatusResult) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodStatusResult{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodStatus", "PodStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodTemplate) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodTemplate{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodTemplateList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodTemplateList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodTemplate", "PodTemplate", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodTemplateSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodTemplateSpec{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSpec", "PodSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PortworxVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PortworxVolumeSource{`, + `VolumeID:` + fmt.Sprintf("%v", this.VolumeID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Preconditions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Preconditions{`, + `UID:` + valueToStringGenerated(this.UID) + `,`, + `}`, + }, "") + return s +} +func (this *PreferAvoidPodsEntry) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PreferAvoidPodsEntry{`, + `PodSignature:` + strings.Replace(strings.Replace(this.PodSignature.String(), "PodSignature", "PodSignature", 1), `&`, ``, 1) + `,`, + `EvictionTime:` + strings.Replace(strings.Replace(this.EvictionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *PreferredSchedulingTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PreferredSchedulingTerm{`, + `Weight:` + fmt.Sprintf("%v", this.Weight) + `,`, + `Preference:` + strings.Replace(strings.Replace(this.Preference.String(), "NodeSelectorTerm", "NodeSelectorTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Probe) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Probe{`, + `Handler:` + strings.Replace(strings.Replace(this.Handler.String(), "Handler", "Handler", 1), `&`, ``, 1) + `,`, + `InitialDelaySeconds:` + fmt.Sprintf("%v", this.InitialDelaySeconds) + `,`, + `TimeoutSeconds:` + fmt.Sprintf("%v", this.TimeoutSeconds) + `,`, + `PeriodSeconds:` + fmt.Sprintf("%v", this.PeriodSeconds) + `,`, + `SuccessThreshold:` + fmt.Sprintf("%v", this.SuccessThreshold) + `,`, + `FailureThreshold:` + fmt.Sprintf("%v", this.FailureThreshold) + `,`, + `}`, + }, "") + return s +} +func (this *ProjectedVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ProjectedVolumeSource{`, + `Sources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Sources), "VolumeProjection", "VolumeProjection", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `}`, + }, "") + return s +} +func (this *QuobyteVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&QuobyteVolumeSource{`, + `Registry:` + fmt.Sprintf("%v", this.Registry) + `,`, + `Volume:` + fmt.Sprintf("%v", this.Volume) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `}`, + }, "") + return s +} +func (this *RBDVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RBDVolumeSource{`, + `CephMonitors:` + fmt.Sprintf("%v", this.CephMonitors) + `,`, + `RBDImage:` + fmt.Sprintf("%v", this.RBDImage) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `RBDPool:` + fmt.Sprintf("%v", this.RBDPool) + `,`, + `RadosUser:` + fmt.Sprintf("%v", this.RadosUser) + `,`, + `Keyring:` + fmt.Sprintf("%v", this.Keyring) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *RangeAllocation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RangeAllocation{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Range:` + fmt.Sprintf("%v", this.Range) + `,`, + `Data:` + valueToStringGenerated(this.Data) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationController) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationController{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ReplicationControllerSpec", "ReplicationControllerSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ReplicationControllerStatus", "ReplicationControllerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ReplicationController", "ReplicationController", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerSpec) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ReplicationControllerSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + mapStringForSelector + `,`, + `Template:` + strings.Replace(fmt.Sprintf("%v", this.Template), "PodTemplateSpec", "PodTemplateSpec", 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `FullyLabeledReplicas:` + fmt.Sprintf("%v", this.FullyLabeledReplicas) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ReplicationControllerCondition", "ReplicationControllerCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceFieldSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceFieldSelector{`, + `ContainerName:` + fmt.Sprintf("%v", this.ContainerName) + `,`, + `Resource:` + fmt.Sprintf("%v", this.Resource) + `,`, + `Divisor:` + strings.Replace(strings.Replace(this.Divisor.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuota) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceQuota{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceQuotaSpec", "ResourceQuotaSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ResourceQuotaStatus", "ResourceQuotaStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuotaList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceQuotaList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ResourceQuota", "ResourceQuota", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuotaSpec) String() string { + if this == nil { + return "nil" + } + keysForHard := make([]string, 0, len(this.Hard)) + for k := range this.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + mapStringForHard := "ResourceList{" + for _, k := range keysForHard { + mapStringForHard += fmt.Sprintf("%v: %v,", k, this.Hard[ResourceName(k)]) + } + mapStringForHard += "}" + s := strings.Join([]string{`&ResourceQuotaSpec{`, + `Hard:` + mapStringForHard + `,`, + `Scopes:` + fmt.Sprintf("%v", this.Scopes) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuotaStatus) String() string { + if this == nil { + return "nil" + } + keysForHard := make([]string, 0, len(this.Hard)) + for k := range this.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + mapStringForHard := "ResourceList{" + for _, k := range keysForHard { + mapStringForHard += fmt.Sprintf("%v: %v,", k, this.Hard[ResourceName(k)]) + } + mapStringForHard += "}" + keysForUsed := make([]string, 0, len(this.Used)) + for k := range this.Used { + keysForUsed = append(keysForUsed, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUsed) + mapStringForUsed := "ResourceList{" + for _, k := range keysForUsed { + mapStringForUsed += fmt.Sprintf("%v: %v,", k, this.Used[ResourceName(k)]) + } + mapStringForUsed += "}" + s := strings.Join([]string{`&ResourceQuotaStatus{`, + `Hard:` + mapStringForHard + `,`, + `Used:` + mapStringForUsed + `,`, + `}`, + }, "") + return s +} +func (this *ResourceRequirements) String() string { + if this == nil { + return "nil" + } + keysForLimits := make([]string, 0, len(this.Limits)) + for k := range this.Limits { + keysForLimits = append(keysForLimits, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLimits) + mapStringForLimits := "ResourceList{" + for _, k := range keysForLimits { + mapStringForLimits += fmt.Sprintf("%v: %v,", k, this.Limits[ResourceName(k)]) + } + mapStringForLimits += "}" + keysForRequests := make([]string, 0, len(this.Requests)) + for k := range this.Requests { + keysForRequests = append(keysForRequests, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForRequests) + mapStringForRequests := "ResourceList{" + for _, k := range keysForRequests { + mapStringForRequests += fmt.Sprintf("%v: %v,", k, this.Requests[ResourceName(k)]) + } + mapStringForRequests += "}" + s := strings.Join([]string{`&ResourceRequirements{`, + `Limits:` + mapStringForLimits + `,`, + `Requests:` + mapStringForRequests + `,`, + `}`, + }, "") + return s +} +func (this *SELinuxOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SELinuxOptions{`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Role:` + fmt.Sprintf("%v", this.Role) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Level:` + fmt.Sprintf("%v", this.Level) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleIOVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleIOVolumeSource{`, + `Gateway:` + fmt.Sprintf("%v", this.Gateway) + `,`, + `System:` + fmt.Sprintf("%v", this.System) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `SSLEnabled:` + fmt.Sprintf("%v", this.SSLEnabled) + `,`, + `ProtectionDomain:` + fmt.Sprintf("%v", this.ProtectionDomain) + `,`, + `StoragePool:` + fmt.Sprintf("%v", this.StoragePool) + `,`, + `StorageMode:` + fmt.Sprintf("%v", this.StorageMode) + `,`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Secret) String() string { + if this == nil { + return "nil" + } + keysForData := make([]string, 0, len(this.Data)) + for k := range this.Data { + keysForData = append(keysForData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + mapStringForData := "map[string][]byte{" + for _, k := range keysForData { + mapStringForData += fmt.Sprintf("%v: %v,", k, this.Data[k]) + } + mapStringForData += "}" + keysForStringData := make([]string, 0, len(this.StringData)) + for k := range this.StringData { + keysForStringData = append(keysForStringData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForStringData) + mapStringForStringData := "map[string]string{" + for _, k := range keysForStringData { + mapStringForStringData += fmt.Sprintf("%v: %v,", k, this.StringData[k]) + } + mapStringForStringData += "}" + s := strings.Join([]string{`&Secret{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + mapStringForData + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `StringData:` + mapStringForStringData + `,`, + `}`, + }, "") + return s +} +func (this *SecretEnvSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretEnvSource{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *SecretKeySelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretKeySelector{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *SecretList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Secret", "Secret", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SecretProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretProjection{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "KeyToPath", "KeyToPath", 1), `&`, ``, 1) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *SecretVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretVolumeSource{`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "KeyToPath", "KeyToPath", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `Optional:` + valueToStringGenerated(this.Optional) + `,`, + `}`, + }, "") + return s +} +func (this *SecurityContext) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecurityContext{`, + `Capabilities:` + strings.Replace(fmt.Sprintf("%v", this.Capabilities), "Capabilities", "Capabilities", 1) + `,`, + `Privileged:` + valueToStringGenerated(this.Privileged) + `,`, + `SELinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SELinuxOptions), "SELinuxOptions", "SELinuxOptions", 1) + `,`, + `RunAsUser:` + valueToStringGenerated(this.RunAsUser) + `,`, + `RunAsNonRoot:` + valueToStringGenerated(this.RunAsNonRoot) + `,`, + `ReadOnlyRootFilesystem:` + valueToStringGenerated(this.ReadOnlyRootFilesystem) + `,`, + `}`, + }, "") + return s +} +func (this *SerializedReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SerializedReference{`, + `Reference:` + strings.Replace(strings.Replace(this.Reference.String(), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Service) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Service{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ServiceSpec", "ServiceSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ServiceStatus", "ServiceStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceAccount) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccount{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Secrets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Secrets), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `ImagePullSecrets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ImagePullSecrets), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `AutomountServiceAccountToken:` + valueToStringGenerated(this.AutomountServiceAccountToken) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceAccountList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ServiceAccount", "ServiceAccount", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Service", "Service", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServicePort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServicePort{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `TargetPort:` + strings.Replace(strings.Replace(this.TargetPort.String(), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `NodePort:` + fmt.Sprintf("%v", this.NodePort) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceProxyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceProxyOptions{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceSpec) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ServiceSpec{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "ServicePort", "ServicePort", 1), `&`, ``, 1) + `,`, + `Selector:` + mapStringForSelector + `,`, + `ClusterIP:` + fmt.Sprintf("%v", this.ClusterIP) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `ExternalIPs:` + fmt.Sprintf("%v", this.ExternalIPs) + `,`, + `SessionAffinity:` + fmt.Sprintf("%v", this.SessionAffinity) + `,`, + `LoadBalancerIP:` + fmt.Sprintf("%v", this.LoadBalancerIP) + `,`, + `LoadBalancerSourceRanges:` + fmt.Sprintf("%v", this.LoadBalancerSourceRanges) + `,`, + `ExternalName:` + fmt.Sprintf("%v", this.ExternalName) + `,`, + `ExternalTrafficPolicy:` + fmt.Sprintf("%v", this.ExternalTrafficPolicy) + `,`, + `HealthCheckNodePort:` + fmt.Sprintf("%v", this.HealthCheckNodePort) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceStatus{`, + `LoadBalancer:` + strings.Replace(strings.Replace(this.LoadBalancer.String(), "LoadBalancerStatus", "LoadBalancerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StorageOSPersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageOSPersistentVolumeSource{`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `VolumeNamespace:` + fmt.Sprintf("%v", this.VolumeNamespace) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "ObjectReference", "ObjectReference", 1) + `,`, + `}`, + }, "") + return s +} +func (this *StorageOSVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageOSVolumeSource{`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `VolumeNamespace:` + fmt.Sprintf("%v", this.VolumeNamespace) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Sysctl) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Sysctl{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + return s +} +func (this *TCPSocketAction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TCPSocketAction{`, + `Port:` + strings.Replace(strings.Replace(this.Port.String(), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `}`, + }, "") + return s +} +func (this *Taint) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Taint{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `Effect:` + fmt.Sprintf("%v", this.Effect) + `,`, + `TimeAdded:` + strings.Replace(strings.Replace(this.TimeAdded.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Toleration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Toleration{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `Effect:` + fmt.Sprintf("%v", this.Effect) + `,`, + `TolerationSeconds:` + valueToStringGenerated(this.TolerationSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *Volume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Volume{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `VolumeSource:` + strings.Replace(strings.Replace(this.VolumeSource.String(), "VolumeSource", "VolumeSource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *VolumeMount) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeMount{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `MountPath:` + fmt.Sprintf("%v", this.MountPath) + `,`, + `SubPath:` + fmt.Sprintf("%v", this.SubPath) + `,`, + `}`, + }, "") + return s +} +func (this *VolumeProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeProjection{`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "SecretProjection", "SecretProjection", 1) + `,`, + `DownwardAPI:` + strings.Replace(fmt.Sprintf("%v", this.DownwardAPI), "DownwardAPIProjection", "DownwardAPIProjection", 1) + `,`, + `ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapProjection", "ConfigMapProjection", 1) + `,`, + `}`, + }, "") + return s +} +func (this *VolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeSource{`, + `HostPath:` + strings.Replace(fmt.Sprintf("%v", this.HostPath), "HostPathVolumeSource", "HostPathVolumeSource", 1) + `,`, + `EmptyDir:` + strings.Replace(fmt.Sprintf("%v", this.EmptyDir), "EmptyDirVolumeSource", "EmptyDirVolumeSource", 1) + `,`, + `GCEPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.GCEPersistentDisk), "GCEPersistentDiskVolumeSource", "GCEPersistentDiskVolumeSource", 1) + `,`, + `AWSElasticBlockStore:` + strings.Replace(fmt.Sprintf("%v", this.AWSElasticBlockStore), "AWSElasticBlockStoreVolumeSource", "AWSElasticBlockStoreVolumeSource", 1) + `,`, + `GitRepo:` + strings.Replace(fmt.Sprintf("%v", this.GitRepo), "GitRepoVolumeSource", "GitRepoVolumeSource", 1) + `,`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "SecretVolumeSource", "SecretVolumeSource", 1) + `,`, + `NFS:` + strings.Replace(fmt.Sprintf("%v", this.NFS), "NFSVolumeSource", "NFSVolumeSource", 1) + `,`, + `ISCSI:` + strings.Replace(fmt.Sprintf("%v", this.ISCSI), "ISCSIVolumeSource", "ISCSIVolumeSource", 1) + `,`, + `Glusterfs:` + strings.Replace(fmt.Sprintf("%v", this.Glusterfs), "GlusterfsVolumeSource", "GlusterfsVolumeSource", 1) + `,`, + `PersistentVolumeClaim:` + strings.Replace(fmt.Sprintf("%v", this.PersistentVolumeClaim), "PersistentVolumeClaimVolumeSource", "PersistentVolumeClaimVolumeSource", 1) + `,`, + `RBD:` + strings.Replace(fmt.Sprintf("%v", this.RBD), "RBDVolumeSource", "RBDVolumeSource", 1) + `,`, + `FlexVolume:` + strings.Replace(fmt.Sprintf("%v", this.FlexVolume), "FlexVolumeSource", "FlexVolumeSource", 1) + `,`, + `Cinder:` + strings.Replace(fmt.Sprintf("%v", this.Cinder), "CinderVolumeSource", "CinderVolumeSource", 1) + `,`, + `CephFS:` + strings.Replace(fmt.Sprintf("%v", this.CephFS), "CephFSVolumeSource", "CephFSVolumeSource", 1) + `,`, + `Flocker:` + strings.Replace(fmt.Sprintf("%v", this.Flocker), "FlockerVolumeSource", "FlockerVolumeSource", 1) + `,`, + `DownwardAPI:` + strings.Replace(fmt.Sprintf("%v", this.DownwardAPI), "DownwardAPIVolumeSource", "DownwardAPIVolumeSource", 1) + `,`, + `FC:` + strings.Replace(fmt.Sprintf("%v", this.FC), "FCVolumeSource", "FCVolumeSource", 1) + `,`, + `AzureFile:` + strings.Replace(fmt.Sprintf("%v", this.AzureFile), "AzureFileVolumeSource", "AzureFileVolumeSource", 1) + `,`, + `ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapVolumeSource", "ConfigMapVolumeSource", 1) + `,`, + `VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`, + `Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`, + `AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`, + `PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`, + `PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`, + `ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`, + `Projected:` + strings.Replace(fmt.Sprintf("%v", this.Projected), "ProjectedVolumeSource", "ProjectedVolumeSource", 1) + `,`, + `StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSVolumeSource", "StorageOSVolumeSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *VsphereVirtualDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VsphereVirtualDiskVolumeSource{`, + `VolumePath:` + fmt.Sprintf("%v", this.VolumePath) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `StoragePolicyName:` + fmt.Sprintf("%v", this.StoragePolicyName) + `,`, + `StoragePolicyID:` + fmt.Sprintf("%v", this.StoragePolicyID) + `,`, + `}`, + }, "") + return s +} +func (this *WeightedPodAffinityTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WeightedPodAffinityTerm{`, + `Weight:` + fmt.Sprintf("%v", this.Weight) + `,`, + `PodAffinityTerm:` + strings.Replace(strings.Replace(this.PodAffinityTerm.String(), "PodAffinityTerm", "PodAffinityTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *AWSElasticBlockStoreVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AWSElasticBlockStoreVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AWSElasticBlockStoreVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", wireType) + } + m.Partition = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Partition |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Affinity) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Affinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Affinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeAffinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NodeAffinity == nil { + m.NodeAffinity = &NodeAffinity{} + } + if err := m.NodeAffinity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodAffinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodAffinity == nil { + m.PodAffinity = &PodAffinity{} + } + if err := m.PodAffinity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodAntiAffinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodAntiAffinity == nil { + m.PodAntiAffinity = &PodAntiAffinity{} + } + if err := m.PodAntiAffinity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AttachedVolume) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AttachedVolume: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AttachedVolume: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = UniqueVolumeName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DevicePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DevicePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AvoidPods) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AvoidPods: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AvoidPods: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferAvoidPods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferAvoidPods = append(m.PreferAvoidPods, PreferAvoidPodsEntry{}) + if err := m.PreferAvoidPods[len(m.PreferAvoidPods)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AzureDiskVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AzureDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AzureDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiskName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DiskName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataDiskURI", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataDiskURI = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CachingMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := AzureDataDiskCachingMode(dAtA[iNdEx:postIndex]) + m.CachingMode = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.FSType = &s + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ReadOnly = &b + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := AzureDataDiskKind(dAtA[iNdEx:postIndex]) + m.Kind = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AzureFileVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AzureFileVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AzureFileVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ShareName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ShareName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Binding) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Binding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Binding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Capabilities) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Capabilities: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Capabilities: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Add", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Add = append(m.Add, Capability(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Drop", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Drop = append(m.Drop, Capability(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CephFSVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CephFSVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CephFSVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Monitors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Monitors = append(m.Monitors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretFile", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretFile = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CinderVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CinderVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CinderVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ComponentCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ComponentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ComponentCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = ComponentConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ComponentStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ComponentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ComponentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, ComponentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ComponentStatusList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ComponentStatusList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ComponentStatusList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ComponentStatus{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMap) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMap: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMap: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Data == nil { + m.Data = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Data[mapkey] = mapvalue + } else { + var mapvalue string + m.Data[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapEnvSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapEnvSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapEnvSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapKeySelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapKeySelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapKeySelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ConfigMap{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapProjection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, KeyToPath{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, KeyToPath{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Container) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Container: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Container: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Image = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Command = append(m.Command, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Args = append(m.Args, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkingDir", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WorkingDir = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, ContainerPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Env", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Env = append(m.Env, EnvVar{}) + if err := m.Env[len(m.Env)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeMounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeMounts = append(m.VolumeMounts, VolumeMount{}) + if err := m.VolumeMounts[len(m.VolumeMounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LivenessProbe", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LivenessProbe == nil { + m.LivenessProbe = &Probe{} + } + if err := m.LivenessProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadinessProbe", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ReadinessProbe == nil { + m.ReadinessProbe = &Probe{} + } + if err := m.ReadinessProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Lifecycle", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Lifecycle == nil { + m.Lifecycle = &Lifecycle{} + } + if err := m.Lifecycle.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationMessagePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TerminationMessagePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePullPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImagePullPolicy = PullPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecurityContext == nil { + m.SecurityContext = &SecurityContext{} + } + if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdin = bool(v != 0) + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StdinOnce", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.StdinOnce = bool(v != 0) + case 18: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TTY = bool(v != 0) + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EnvFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EnvFrom = append(m.EnvFrom, EnvFromSource{}) + if err := m.EnvFrom[len(m.EnvFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationMessagePolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TerminationMessagePolicy = TerminationMessagePolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerImage) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerImage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerImage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Names = append(m.Names, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType) + } + m.SizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerPort) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPort", wireType) + } + m.HostPort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.HostPort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerPort", wireType) + } + m.ContainerPort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ContainerPort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = Protocol(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostIP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Waiting", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Waiting == nil { + m.Waiting = &ContainerStateWaiting{} + } + if err := m.Waiting.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Running", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Running == nil { + m.Running = &ContainerStateRunning{} + } + if err := m.Running.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Terminated", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Terminated == nil { + m.Terminated = &ContainerStateTerminated{} + } + if err := m.Terminated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStateRunning) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStateRunning: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStateRunning: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStateTerminated) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStateTerminated: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStateTerminated: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExitCode", wireType) + } + m.ExitCode = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExitCode |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Signal", wireType) + } + m.Signal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Signal |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FinishedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FinishedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStateWaiting) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStateWaiting: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStateWaiting: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.State.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTerminationState", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTerminationState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Ready = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RestartCount", wireType) + } + m.RestartCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RestartCount |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Image = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImageID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImageID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonEndpoint) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonEndpoint: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Port |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeleteOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.GracePeriodSeconds = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preconditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Preconditions == nil { + m.Preconditions = &Preconditions{} + } + if err := m.Preconditions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OrphanDependents", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.OrphanDependents = &b + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PropagationPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := DeletionPropagation(dAtA[iNdEx:postIndex]) + m.PropagationPolicy = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DownwardAPIProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DownwardAPIProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DownwardAPIProjection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, DownwardAPIVolumeFile{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DownwardAPIVolumeFile) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DownwardAPIVolumeFile: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DownwardAPIVolumeFile: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FieldRef == nil { + m.FieldRef = &ObjectFieldSelector{} + } + if err := m.FieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceFieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceFieldRef == nil { + m.ResourceFieldRef = &ResourceFieldSelector{} + } + if err := m.ResourceFieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Mode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DownwardAPIVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DownwardAPIVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DownwardAPIVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, DownwardAPIVolumeFile{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EmptyDirVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EmptyDirVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EmptyDirVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Medium", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Medium = StorageMedium(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SizeLimit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SizeLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointAddress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TargetRef == nil { + m.TargetRef = &ObjectReference{} + } + if err := m.TargetRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.NodeName = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointPort) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Port |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = Protocol(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointSubset) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointSubset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointSubset: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, EndpointAddress{}) + if err := m.Addresses[len(m.Addresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NotReadyAddresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NotReadyAddresses = append(m.NotReadyAddresses, EndpointAddress{}) + if err := m.NotReadyAddresses[len(m.NotReadyAddresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, EndpointPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Endpoints) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Endpoints: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Endpoints: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subsets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subsets = append(m.Subsets, EndpointSubset{}) + if err := m.Subsets[len(m.Subsets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointsList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointsList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointsList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Endpoints{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EnvFromSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EnvFromSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EnvFromSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Prefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigMapRef == nil { + m.ConfigMapRef = &ConfigMapEnvSource{} + } + if err := m.ConfigMapRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &SecretEnvSource{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EnvVar) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EnvVar: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EnvVar: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValueFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ValueFrom == nil { + m.ValueFrom = &EnvVarSource{} + } + if err := m.ValueFrom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EnvVarSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EnvVarSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EnvVarSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FieldRef == nil { + m.FieldRef = &ObjectFieldSelector{} + } + if err := m.FieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceFieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceFieldRef == nil { + m.ResourceFieldRef = &ResourceFieldSelector{} + } + if err := m.ResourceFieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigMapKeyRef == nil { + m.ConfigMapKeyRef = &ConfigMapKeySelector{} + } + if err := m.ConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretKeyRef == nil { + m.SecretKeyRef = &SecretKeySelector{} + } + if err := m.SecretKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Event) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Event: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InvolvedObject", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InvolvedObject.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Source.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FirstTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FirstTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType) + } + m.Count = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Count |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Event{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Component", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Component = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExecAction) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExecAction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExecAction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Command = append(m.Command, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FCVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FCVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FCVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetWWNs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetWWNs = append(m.TargetWWNs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Lun", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Lun = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FlexVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FlexVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlexVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Driver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Options == nil { + m.Options = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Options[mapkey] = mapvalue + } else { + var mapvalue string + m.Options[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FlockerVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FlockerVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlockerVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatasetName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatasetName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatasetUUID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatasetUUID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GCEPersistentDiskVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GCEPersistentDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GCEPersistentDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PDName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PDName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", wireType) + } + m.Partition = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Partition |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GitRepoVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GitRepoVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GitRepoVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Repository", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Repository = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Revision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Directory", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Directory = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GlusterfsVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GlusterfsVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GlusterfsVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EndpointsName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EndpointsName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPGetAction) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPGetAction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPGetAction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Port.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scheme", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scheme = URIScheme(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HTTPHeaders", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HTTPHeaders = append(m.HTTPHeaders, HTTPHeader{}) + if err := m.HTTPHeaders[len(m.HTTPHeaders)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPHeader) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPHeader: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPHeader: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Handler) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Handler: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Handler: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Exec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Exec == nil { + m.Exec = &ExecAction{} + } + if err := m.Exec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HTTPGet", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HTTPGet == nil { + m.HTTPGet = &HTTPGetAction{} + } + if err := m.HTTPGet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TCPSocket", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TCPSocket == nil { + m.TCPSocket = &TCPSocketAction{} + } + if err := m.TCPSocket.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HostAlias) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostAlias: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostAlias: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostnames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostnames = append(m.Hostnames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HostPathVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostPathVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostPathVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ISCSIVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ISCSIVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ISCSIVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetPortal", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetPortal = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IQN", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IQN = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Lun", wireType) + } + m.Lun = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Lun |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ISCSIInterface", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ISCSIInterface = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Portals", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Portals = append(m.Portals, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryCHAPAuth", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DiscoveryCHAPAuth = bool(v != 0) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionCHAPAuth", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SessionCHAPAuth = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *KeyToPath) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: KeyToPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: KeyToPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Mode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Lifecycle) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Lifecycle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Lifecycle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PostStart", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PostStart == nil { + m.PostStart = &Handler{} + } + if err := m.PostStart.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreStop", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PreStop == nil { + m.PreStop = &Handler{} + } + if err := m.PreStop.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRange) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRangeItem) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRangeItem: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRangeItem: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = LimitType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Max == nil { + m.Max = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Max[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Max[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Min == nil { + m.Min = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Min[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Min[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Default", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Default == nil { + m.Default = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Default[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Default[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultRequest", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.DefaultRequest == nil { + m.DefaultRequest = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.DefaultRequest[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.DefaultRequest[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxLimitRequestRatio", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.MaxLimitRequestRatio == nil { + m.MaxLimitRequestRatio = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.MaxLimitRequestRatio[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.MaxLimitRequestRatio[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRangeList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRangeList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRangeList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, LimitRange{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRangeSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRangeSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRangeSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Limits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Limits = append(m.Limits, LimitRangeItem{}) + if err := m.Limits[len(m.Limits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *List) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: List: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: List: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, k8s_io_apimachinery_pkg_runtime.RawExtension{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LabelSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Watch", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Watch = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TimeoutSeconds = &v + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IncludeUninitialized", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.IncludeUninitialized = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LoadBalancerIngress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LoadBalancerIngress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LoadBalancerIngress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LoadBalancerStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LoadBalancerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LoadBalancerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ingress = append(m.Ingress, LoadBalancerIngress{}) + if err := m.Ingress[len(m.Ingress)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LocalObjectReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LocalVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NFSVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NFSVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NFSVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Server", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Server = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Namespace) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Namespace: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamespaceList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NamespaceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamespaceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Namespace{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamespaceSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NamespaceSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamespaceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalizers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Finalizers = append(m.Finalizers, FinalizerName(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamespaceStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NamespaceStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamespaceStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = NamespacePhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Node) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Node: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Node: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeAddress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = NodeAddressType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeAffinity) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RequiredDuringSchedulingIgnoredDuringExecution == nil { + m.RequiredDuringSchedulingIgnoredDuringExecution = &NodeSelector{} + } + if err := m.RequiredDuringSchedulingIgnoredDuringExecution.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, PreferredSchedulingTerm{}) + if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = NodeConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastHeartbeatTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastHeartbeatTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeDaemonEndpoints) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeDaemonEndpoints: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeDaemonEndpoints: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeletEndpoint", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.KubeletEndpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Node{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeProxyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeProxyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeResources) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeResources: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeResources: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Capacity[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeSelectorTerms", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeSelectorTerms = append(m.NodeSelectorTerms, NodeSelectorTerm{}) + if err := m.NodeSelectorTerms[len(m.NodeSelectorTerms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSelectorRequirement) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = NodeSelectorOperator(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSelectorTerm) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSelectorTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSelectorTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, NodeSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodCIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodCIDR = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProviderID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProviderID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Unschedulable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Unschedulable = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Taints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Taints = append(m.Taints, Taint{}) + if err := m.Taints[len(m.Taints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Capacity[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Allocatable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Allocatable == nil { + m.Allocatable = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Allocatable[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Allocatable[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = NodePhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, NodeCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, NodeAddress{}) + if err := m.Addresses[len(m.Addresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DaemonEndpoints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DaemonEndpoints.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NodeInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Images", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Images = append(m.Images, ContainerImage{}) + if err := m.Images[len(m.Images)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumesInUse", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumesInUse = append(m.VolumesInUse, UniqueVolumeName(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumesAttached", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumesAttached = append(m.VolumesAttached, AttachedVolume{}) + if err := m.VolumesAttached[len(m.VolumesAttached)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSystemInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSystemInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSystemInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MachineID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MachineID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SystemUUID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SystemUUID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BootID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BootID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KernelVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KernelVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OSImage", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OSImage = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerRuntimeVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerRuntimeVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeletVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KubeletVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeProxyVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KubeProxyVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OperatingSystem", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OperatingSystem = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architecture", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Architecture = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectFieldSelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectFieldSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectFieldSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMeta) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GenerateName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GenerateName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SelfLink", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SelfLink = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Generation", wireType) + } + m.Generation = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Generation |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreationTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CreationTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeletionTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DeletionTimestamp == nil { + m.DeletionTimestamp = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.DeletionTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeletionGracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DeletionGracePeriodSeconds = &v + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Labels == nil { + m.Labels = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Labels[mapkey] = mapvalue + } else { + var mapvalue string + m.Labels[mapkey] = mapvalue + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Annotations[mapkey] = mapvalue + } else { + var mapvalue string + m.Annotations[mapkey] = mapvalue + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerReferences", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnerReferences = append(m.OwnerReferences, k8s_io_apimachinery_pkg_apis_meta_v1.OwnerReference{}) + if err := m.OwnerReferences[len(m.OwnerReferences)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalizers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Finalizers = append(m.Finalizers, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClusterName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Initializers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Initializers == nil { + m.Initializers = &k8s_io_apimachinery_pkg_apis_meta_v1.Initializers{} + } + if err := m.Initializers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolume) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolume: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolume: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaim) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaim: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaim: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PersistentVolumeClaim{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessModes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessModes = append(m.AccessModes, PersistentVolumeAccessMode(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageClassName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.StorageClassName = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = PersistentVolumeClaimPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessModes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessModes = append(m.AccessModes, PersistentVolumeAccessMode(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Capacity[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClaimName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PersistentVolume{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GCEPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GCEPersistentDisk == nil { + m.GCEPersistentDisk = &GCEPersistentDiskVolumeSource{} + } + if err := m.GCEPersistentDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AWSElasticBlockStore", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AWSElasticBlockStore == nil { + m.AWSElasticBlockStore = &AWSElasticBlockStoreVolumeSource{} + } + if err := m.AWSElasticBlockStore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HostPath == nil { + m.HostPath = &HostPathVolumeSource{} + } + if err := m.HostPath.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Glusterfs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Glusterfs == nil { + m.Glusterfs = &GlusterfsVolumeSource{} + } + if err := m.Glusterfs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NFS == nil { + m.NFS = &NFSVolumeSource{} + } + if err := m.NFS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBD", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RBD == nil { + m.RBD = &RBDVolumeSource{} + } + if err := m.RBD.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ISCSI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ISCSI == nil { + m.ISCSI = &ISCSIVolumeSource{} + } + if err := m.ISCSI.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cinder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Cinder == nil { + m.Cinder = &CinderVolumeSource{} + } + if err := m.Cinder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CephFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CephFS == nil { + m.CephFS = &CephFSVolumeSource{} + } + if err := m.CephFS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FC", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FC == nil { + m.FC = &FCVolumeSource{} + } + if err := m.FC.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flocker", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flocker == nil { + m.Flocker = &FlockerVolumeSource{} + } + if err := m.Flocker.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FlexVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FlexVolume == nil { + m.FlexVolume = &FlexVolumeSource{} + } + if err := m.FlexVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureFile", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureFile == nil { + m.AzureFile = &AzureFileVolumeSource{} + } + if err := m.AzureFile.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VsphereVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VsphereVolume == nil { + m.VsphereVolume = &VsphereVirtualDiskVolumeSource{} + } + if err := m.VsphereVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Quobyte", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Quobyte == nil { + m.Quobyte = &QuobyteVolumeSource{} + } + if err := m.Quobyte.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureDisk == nil { + m.AzureDisk = &AzureDiskVolumeSource{} + } + if err := m.AzureDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PhotonPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PhotonPersistentDisk == nil { + m.PhotonPersistentDisk = &PhotonPersistentDiskVolumeSource{} + } + if err := m.PhotonPersistentDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PortworxVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PortworxVolume == nil { + m.PortworxVolume = &PortworxVolumeSource{} + } + if err := m.PortworxVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleIO", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ScaleIO == nil { + m.ScaleIO = &ScaleIOVolumeSource{} + } + if err := m.ScaleIO.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Local", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Local == nil { + m.Local = &LocalVolumeSource{} + } + if err := m.Local.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageOS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StorageOS == nil { + m.StorageOS = &StorageOSPersistentVolumeSource{} + } + if err := m.StorageOS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Capacity[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Capacity[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PersistentVolumeSource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PersistentVolumeSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessModes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessModes = append(m.AccessModes, PersistentVolumeAccessMode(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ClaimRef == nil { + m.ClaimRef = &ObjectReference{} + } + if err := m.ClaimRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PersistentVolumeReclaimPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageClassName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StorageClassName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = PersistentVolumePhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PhotonPersistentDiskVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PhotonPersistentDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PhotonPersistentDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PdID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PdID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Pod) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Pod: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Pod: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAffinity) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequiredDuringSchedulingIgnoredDuringExecution = append(m.RequiredDuringSchedulingIgnoredDuringExecution, PodAffinityTerm{}) + if err := m.RequiredDuringSchedulingIgnoredDuringExecution[len(m.RequiredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, WeightedPodAffinityTerm{}) + if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAffinityTerm) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAffinityTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAffinityTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LabelSelector == nil { + m.LabelSelector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.LabelSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespaces = append(m.Namespaces, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopologyKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TopologyKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAntiAffinity) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAntiAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAntiAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequiredDuringSchedulingIgnoredDuringExecution = append(m.RequiredDuringSchedulingIgnoredDuringExecution, PodAffinityTerm{}) + if err := m.RequiredDuringSchedulingIgnoredDuringExecution[len(m.RequiredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, WeightedPodAffinityTerm{}) + if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAttachOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAttachOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAttachOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdin = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdout = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stderr = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TTY = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Container = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = PodConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastProbeTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastProbeTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodExecOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodExecOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodExecOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdin = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdout = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stderr = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TTY = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Container = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Command = append(m.Command, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Pod{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodLogOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodLogOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodLogOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Container = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Follow", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Follow = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Previous", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Previous = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SinceSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SinceSeconds = &v + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SinceTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SinceTime == nil { + m.SinceTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.SinceTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamps", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Timestamps = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TailLines", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TailLines = &v + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LimitBytes", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.LimitBytes = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodPortForwardOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPortForwardOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPortForwardOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType == 0 { + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Ports = append(m.Ports, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Ports = append(m.Ports, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodProxyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodProxyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityContext) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityContext: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SELinuxOptions == nil { + m.SELinuxOptions = &SELinuxOptions{} + } + if err := m.SELinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RunAsUser = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsNonRoot", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.RunAsNonRoot = &b + case 4: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + packedLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FSGroup", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.FSGroup = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSignature) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSignature: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSignature: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodController", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodController == nil { + m.PodController = &k8s_io_apimachinery_pkg_apis_meta_v1.OwnerReference{} + } + if err := m.PodController.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volumes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volumes = append(m.Volumes, Volume{}) + if err := m.Volumes[len(m.Volumes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Containers = append(m.Containers, Container{}) + if err := m.Containers[len(m.Containers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RestartPolicy = RestartPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationGracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TerminationGracePeriodSeconds = &v + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ActiveDeadlineSeconds = &v + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DNSPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DNSPolicy = DNSPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.NodeSelector == nil { + m.NodeSelector = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.NodeSelector[mapkey] = mapvalue + } else { + var mapvalue string + m.NodeSelector[mapkey] = mapvalue + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServiceAccountName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedServiceAccount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DeprecatedServiceAccount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostNetwork", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostNetwork = bool(v != 0) + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPID", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostPID = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIPC", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostIPC = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecurityContext == nil { + m.SecurityContext = &PodSecurityContext{} + } + if err := m.SecurityContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePullSecrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImagePullSecrets = append(m.ImagePullSecrets, LocalObjectReference{}) + if err := m.ImagePullSecrets[len(m.ImagePullSecrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subdomain", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subdomain = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Affinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Affinity == nil { + m.Affinity = &Affinity{} + } + if err := m.Affinity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SchedulerName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SchedulerName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitContainers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitContainers = append(m.InitContainers, Container{}) + if err := m.InitContainers[len(m.InitContainers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutomountServiceAccountToken", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.AutomountServiceAccountToken = &b + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Tolerations = append(m.Tolerations, Toleration{}) + if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostAliases", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostAliases = append(m.HostAliases, HostAlias{}) + if err := m.HostAliases[len(m.HostAliases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = PodPhase(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, PodCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostIP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodIP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartTime == nil { + m.StartTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.StartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerStatuses = append(m.ContainerStatuses, ContainerStatus{}) + if err := m.ContainerStatuses[len(m.ContainerStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QOSClass", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QOSClass = PodQOSClass(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitContainerStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitContainerStatuses = append(m.InitContainerStatuses, ContainerStatus{}) + if err := m.InitContainerStatuses[len(m.InitContainerStatuses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodStatusResult) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodStatusResult: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodStatusResult: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplateList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplateList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplateList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodTemplate{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplateSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplateSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PortworxVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PortworxVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PortworxVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Preconditions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Preconditions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Preconditions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex]) + m.UID = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PreferAvoidPodsEntry) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PreferAvoidPodsEntry: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PreferAvoidPodsEntry: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSignature", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodSignature.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvictionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.EvictionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PreferredSchedulingTerm) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PreferredSchedulingTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PreferredSchedulingTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + m.Weight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Weight |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Preference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Probe) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Probe: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Probe: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Handler", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Handler.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InitialDelaySeconds", wireType) + } + m.InitialDelaySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.InitialDelaySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + m.TimeoutSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TimeoutSeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PeriodSeconds", wireType) + } + m.PeriodSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PeriodSeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SuccessThreshold", wireType) + } + m.SuccessThreshold = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SuccessThreshold |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FailureThreshold", wireType) + } + m.FailureThreshold = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.FailureThreshold |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ProjectedVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ProjectedVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ProjectedVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sources = append(m.Sources, VolumeProjection{}) + if err := m.Sources[len(m.Sources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QuobyteVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QuobyteVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QuobyteVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Registry", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Registry = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volume", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volume = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RBDVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RBDVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RBDVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CephMonitors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CephMonitors = append(m.CephMonitors, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBDImage", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RBDImage = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBDPool", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RBDPool = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RadosUser", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RadosUser = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Keyring", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Keyring = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RangeAllocation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RangeAllocation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RangeAllocation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Range", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Range = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationController) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationController: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationController: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = ReplicationControllerConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ReplicationController{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Selector[mapkey] = mapvalue + } else { + var mapvalue string + m.Selector[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Template == nil { + m.Template = &PodTemplateSpec{} + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReadySeconds", wireType) + } + m.MinReadySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinReadySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FullyLabeledReplicas", wireType) + } + m.FullyLabeledReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.FullyLabeledReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableReplicas", wireType) + } + m.AvailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AvailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, ReplicationControllerCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceFieldSelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceFieldSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceFieldSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Divisor", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Divisor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuota) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuota: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuota: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuotaList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuotaList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuotaList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ResourceQuota{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuotaSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuotaSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuotaSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hard", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Hard == nil { + m.Hard = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Hard[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Hard[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scopes = append(m.Scopes, ResourceQuotaScope(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuotaStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuotaStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuotaStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hard", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Hard == nil { + m.Hard = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Hard[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Hard[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Used", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Used == nil { + m.Used = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Used[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Used[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceRequirements) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceRequirements: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceRequirements: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Limits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Limits == nil { + m.Limits = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Limits[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Limits[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Requests == nil { + m.Requests = make(ResourceList) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Requests[ResourceName(mapkey)] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_api_resource.Quantity + m.Requests[ResourceName(mapkey)] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SELinuxOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SELinuxOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SELinuxOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Role = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Level", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Level = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleIOVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleIOVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleIOVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Gateway", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Gateway = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field System", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.System = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SSLEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SSLEnabled = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProtectionDomain", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProtectionDomain = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePool", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoragePool = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StorageMode = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Secret) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Secret: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Secret: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Data == nil { + m.Data = make(map[string][]byte) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapbyteLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapbyteLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intMapbyteLen := int(mapbyteLen) + if intMapbyteLen < 0 { + return ErrInvalidLengthGenerated + } + postbytesIndex := iNdEx + intMapbyteLen + if postbytesIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := make([]byte, mapbyteLen) + copy(mapvalue, dAtA[iNdEx:postbytesIndex]) + iNdEx = postbytesIndex + m.Data[mapkey] = mapvalue + } else { + var mapvalue []byte + m.Data[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = SecretType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StringData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.StringData == nil { + m.StringData = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.StringData[mapkey] = mapvalue + } else { + var mapvalue string + m.StringData[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretEnvSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretEnvSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretEnvSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretKeySelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretKeySelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretKeySelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Secret{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretProjection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, KeyToPath{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, KeyToPath{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Optional = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecurityContext) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecurityContext: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capabilities", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Capabilities == nil { + m.Capabilities = &Capabilities{} + } + if err := m.Capabilities.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Privileged = &b + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SELinuxOptions == nil { + m.SELinuxOptions = &SELinuxOptions{} + } + if err := m.SELinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RunAsUser = &v + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsNonRoot", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.RunAsNonRoot = &b + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnlyRootFilesystem", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ReadOnlyRootFilesystem = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SerializedReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SerializedReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SerializedReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Reference.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Service) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Service: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceAccount) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceAccount: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccount: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Secrets = append(m.Secrets, ObjectReference{}) + if err := m.Secrets[len(m.Secrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePullSecrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImagePullSecrets = append(m.ImagePullSecrets, LocalObjectReference{}) + if err := m.ImagePullSecrets[len(m.ImagePullSecrets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutomountServiceAccountToken", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.AutomountServiceAccountToken = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceAccountList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceAccountList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccountList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ServiceAccount{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Service{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServicePort) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServicePort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServicePort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = Protocol(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Port |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetPort", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetPort.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NodePort", wireType) + } + m.NodePort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NodePort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceProxyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceProxyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, ServicePort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Selector[mapkey] = mapvalue + } else { + var mapvalue string + m.Selector[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClusterIP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = ServiceType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalIPs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalIPs = append(m.ExternalIPs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionAffinity", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SessionAffinity = ServiceAffinity(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LoadBalancerIP = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerSourceRanges", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LoadBalancerSourceRanges = append(m.LoadBalancerSourceRanges, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalTrafficPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalTrafficPolicy = ServiceExternalTrafficPolicyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HealthCheckNodePort", wireType) + } + m.HealthCheckNodePort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.HealthCheckNodePort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LoadBalancer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StorageOSPersistentVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageOSPersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageOSPersistentVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeNamespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeNamespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &ObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StorageOSVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageOSVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageOSVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeNamespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeNamespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Sysctl) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Sysctl: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Sysctl: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TCPSocketAction) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TCPSocketAction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TCPSocketAction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Port.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Taint) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Taint: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Taint: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Effect", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Effect = TaintEffect(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeAdded", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TimeAdded.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Toleration) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Toleration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Toleration: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = TolerationOperator(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Effect", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Effect = TaintEffect(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TolerationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TolerationSeconds = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Volume) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Volume: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Volume: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeSource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.VolumeSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VolumeMount) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeMount: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeMount: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MountPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SubPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SubPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VolumeProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeProjection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Secret == nil { + m.Secret = &SecretProjection{} + } + if err := m.Secret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DownwardAPI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DownwardAPI == nil { + m.DownwardAPI = &DownwardAPIProjection{} + } + if err := m.DownwardAPI.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMap", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigMap == nil { + m.ConfigMap = &ConfigMapProjection{} + } + if err := m.ConfigMap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HostPath == nil { + m.HostPath = &HostPathVolumeSource{} + } + if err := m.HostPath.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EmptyDir", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.EmptyDir == nil { + m.EmptyDir = &EmptyDirVolumeSource{} + } + if err := m.EmptyDir.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GCEPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GCEPersistentDisk == nil { + m.GCEPersistentDisk = &GCEPersistentDiskVolumeSource{} + } + if err := m.GCEPersistentDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AWSElasticBlockStore", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AWSElasticBlockStore == nil { + m.AWSElasticBlockStore = &AWSElasticBlockStoreVolumeSource{} + } + if err := m.AWSElasticBlockStore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitRepo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GitRepo == nil { + m.GitRepo = &GitRepoVolumeSource{} + } + if err := m.GitRepo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Secret == nil { + m.Secret = &SecretVolumeSource{} + } + if err := m.Secret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NFS == nil { + m.NFS = &NFSVolumeSource{} + } + if err := m.NFS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ISCSI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ISCSI == nil { + m.ISCSI = &ISCSIVolumeSource{} + } + if err := m.ISCSI.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Glusterfs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Glusterfs == nil { + m.Glusterfs = &GlusterfsVolumeSource{} + } + if err := m.Glusterfs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PersistentVolumeClaim", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PersistentVolumeClaim == nil { + m.PersistentVolumeClaim = &PersistentVolumeClaimVolumeSource{} + } + if err := m.PersistentVolumeClaim.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBD", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RBD == nil { + m.RBD = &RBDVolumeSource{} + } + if err := m.RBD.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FlexVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FlexVolume == nil { + m.FlexVolume = &FlexVolumeSource{} + } + if err := m.FlexVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cinder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Cinder == nil { + m.Cinder = &CinderVolumeSource{} + } + if err := m.Cinder.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CephFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CephFS == nil { + m.CephFS = &CephFSVolumeSource{} + } + if err := m.CephFS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flocker", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flocker == nil { + m.Flocker = &FlockerVolumeSource{} + } + if err := m.Flocker.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DownwardAPI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DownwardAPI == nil { + m.DownwardAPI = &DownwardAPIVolumeSource{} + } + if err := m.DownwardAPI.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FC", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FC == nil { + m.FC = &FCVolumeSource{} + } + if err := m.FC.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureFile", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureFile == nil { + m.AzureFile = &AzureFileVolumeSource{} + } + if err := m.AzureFile.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMap", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigMap == nil { + m.ConfigMap = &ConfigMapVolumeSource{} + } + if err := m.ConfigMap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VsphereVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VsphereVolume == nil { + m.VsphereVolume = &VsphereVirtualDiskVolumeSource{} + } + if err := m.VsphereVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Quobyte", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Quobyte == nil { + m.Quobyte = &QuobyteVolumeSource{} + } + if err := m.Quobyte.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureDisk == nil { + m.AzureDisk = &AzureDiskVolumeSource{} + } + if err := m.AzureDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PhotonPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PhotonPersistentDisk == nil { + m.PhotonPersistentDisk = &PhotonPersistentDiskVolumeSource{} + } + if err := m.PhotonPersistentDisk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PortworxVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PortworxVolume == nil { + m.PortworxVolume = &PortworxVolumeSource{} + } + if err := m.PortworxVolume.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleIO", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ScaleIO == nil { + m.ScaleIO = &ScaleIOVolumeSource{} + } + if err := m.ScaleIO.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Projected", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Projected == nil { + m.Projected = &ProjectedVolumeSource{} + } + if err := m.Projected.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 27: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageOS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StorageOS == nil { + m.StorageOS = &StorageOSVolumeSource{} + } + if err := m.StorageOS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VsphereVirtualDiskVolumeSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VsphereVirtualDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VsphereVirtualDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePolicyName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoragePolicyName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePolicyID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StoragePolicyID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *WeightedPodAffinityTerm) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: WeightedPodAffinityTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WeightedPodAffinityTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + m.Weight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Weight |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodAffinityTerm", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodAffinityTerm.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/api/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 11429 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x8c, 0x24, 0xc7, + 0x75, 0x98, 0x7a, 0x66, 0xf6, 0x63, 0xde, 0x7e, 0xd7, 0xed, 0x1d, 0x97, 0x2b, 0xf2, 0xf6, 0xd8, + 0x14, 0xe9, 0x23, 0x79, 0xdc, 0xd3, 0x1d, 0x49, 0x91, 0x12, 0x65, 0x5a, 0xbb, 0x3b, 0xbb, 0x77, + 0xeb, 0xfb, 0x1a, 0xd6, 0xec, 0xdd, 0x51, 0x14, 0x43, 0xb2, 0x6f, 0xba, 0x76, 0xb7, 0x79, 0xb3, + 0xdd, 0xc3, 0xee, 0x9e, 0xbd, 0x5b, 0x1a, 0x06, 0x6c, 0x45, 0xb0, 0x14, 0x40, 0x49, 0x64, 0x38, + 0x02, 0x02, 0x27, 0x80, 0x02, 0x03, 0x71, 0x94, 0x6f, 0x2b, 0x82, 0x3e, 0x0c, 0xcb, 0x09, 0xe2, + 0x48, 0x8e, 0x1c, 0x24, 0x8e, 0x00, 0x23, 0xb1, 0x02, 0xc3, 0x6b, 0x6b, 0x85, 0xf8, 0x4f, 0x80, + 0xfc, 0x48, 0xfe, 0x6d, 0x3e, 0x10, 0xd4, 0x67, 0x57, 0xf5, 0xf4, 0x6c, 0xf7, 0x2c, 0x6f, 0xd7, + 0x94, 0x90, 0x7f, 0x33, 0xf5, 0x5e, 0xbd, 0xaa, 0xae, 0x8f, 0x57, 0xef, 0xbd, 0x7a, 0xef, 0x15, + 0x9c, 0xbb, 0xfb, 0x52, 0x34, 0xef, 0x05, 0xe7, 0xef, 0x76, 0xee, 0x90, 0xd0, 0x27, 0x31, 0x89, + 0xce, 0xb7, 0xef, 0x6e, 0x9c, 0x77, 0xda, 0xde, 0xf9, 0xed, 0x0b, 0xe7, 0x37, 0x88, 0x4f, 0x42, + 0x27, 0x26, 0xee, 0x7c, 0x3b, 0x0c, 0xe2, 0x00, 0x3d, 0xc2, 0xb1, 0xe7, 0x13, 0xec, 0xf9, 0xf6, + 0xdd, 0x8d, 0x79, 0xa7, 0xed, 0xcd, 0x6f, 0x5f, 0x98, 0x7d, 0x76, 0xc3, 0x8b, 0x37, 0x3b, 0x77, + 0xe6, 0x9b, 0xc1, 0xd6, 0xf9, 0x8d, 0x60, 0x23, 0x38, 0xcf, 0x2a, 0xdd, 0xe9, 0xac, 0xb3, 0x7f, + 0xec, 0x0f, 0xfb, 0xc5, 0x89, 0xcd, 0x3e, 0x2f, 0x9a, 0x76, 0xda, 0xde, 0x96, 0xd3, 0xdc, 0xf4, + 0x7c, 0x12, 0xee, 0xa8, 0xc6, 0x43, 0x12, 0x05, 0x9d, 0xb0, 0x49, 0xd2, 0x5d, 0x38, 0xb0, 0x56, + 0x74, 0x7e, 0x8b, 0xc4, 0x4e, 0x46, 0xc7, 0x67, 0xcf, 0xf7, 0xaa, 0x15, 0x76, 0xfc, 0xd8, 0xdb, + 0xea, 0x6e, 0xe6, 0x63, 0x79, 0x15, 0xa2, 0xe6, 0x26, 0xd9, 0x72, 0xba, 0xea, 0x3d, 0xd7, 0xab, + 0x5e, 0x27, 0xf6, 0x5a, 0xe7, 0x3d, 0x3f, 0x8e, 0xe2, 0x30, 0x5d, 0xc9, 0xfe, 0x63, 0x0b, 0xce, + 0x2c, 0xdc, 0x6e, 0x2c, 0xb7, 0x9c, 0x28, 0xf6, 0x9a, 0x8b, 0xad, 0xa0, 0x79, 0xb7, 0x11, 0x07, + 0x21, 0xb9, 0x15, 0xb4, 0x3a, 0x5b, 0xa4, 0xc1, 0x06, 0x02, 0x9d, 0x83, 0xe1, 0x6d, 0xf6, 0x7f, + 0xb5, 0x36, 0x63, 0x9d, 0xb1, 0xce, 0x56, 0x17, 0x27, 0xbf, 0xbf, 0x3b, 0xf7, 0xa1, 0xbd, 0xdd, + 0xb9, 0xe1, 0x5b, 0xa2, 0x1c, 0x2b, 0x0c, 0xf4, 0x24, 0x0c, 0xae, 0x47, 0x6b, 0x3b, 0x6d, 0x32, + 0x53, 0x62, 0xb8, 0xe3, 0x02, 0x77, 0x70, 0xa5, 0x41, 0x4b, 0xb1, 0x80, 0xa2, 0xf3, 0x50, 0x6d, + 0x3b, 0x61, 0xec, 0xc5, 0x5e, 0xe0, 0xcf, 0x94, 0xcf, 0x58, 0x67, 0x07, 0x16, 0xa7, 0x04, 0x6a, + 0xb5, 0x2e, 0x01, 0x38, 0xc1, 0xa1, 0xdd, 0x08, 0x89, 0xe3, 0xde, 0xf0, 0x5b, 0x3b, 0x33, 0x95, + 0x33, 0xd6, 0xd9, 0xe1, 0xa4, 0x1b, 0x58, 0x94, 0x63, 0x85, 0x61, 0x7f, 0xbb, 0x04, 0xc3, 0x0b, + 0xeb, 0xeb, 0x9e, 0xef, 0xc5, 0x3b, 0xe8, 0x6d, 0x18, 0xf5, 0x03, 0x97, 0xc8, 0xff, 0xec, 0x2b, + 0x46, 0x2e, 0x3e, 0x3d, 0x7f, 0xd0, 0xa2, 0x9a, 0xbf, 0xae, 0xd5, 0x58, 0x9c, 0xdc, 0xdb, 0x9d, + 0x1b, 0xd5, 0x4b, 0xb0, 0x41, 0x11, 0xbd, 0x01, 0x23, 0xed, 0xc0, 0x55, 0x0d, 0x94, 0x58, 0x03, + 0x4f, 0x1d, 0xdc, 0x40, 0x3d, 0xa9, 0xb0, 0x38, 0xb1, 0xb7, 0x3b, 0x37, 0xa2, 0x15, 0x60, 0x9d, + 0x1c, 0x6a, 0xc1, 0x04, 0xfd, 0xeb, 0xc7, 0x9e, 0x6a, 0xa1, 0xcc, 0x5a, 0x78, 0x36, 0xbf, 0x05, + 0xad, 0xd2, 0xe2, 0x89, 0xbd, 0xdd, 0xb9, 0x89, 0x54, 0x21, 0x4e, 0x93, 0xb6, 0xdf, 0x83, 0xf1, + 0x85, 0x38, 0x76, 0x9a, 0x9b, 0xc4, 0xe5, 0xf3, 0x8b, 0x9e, 0x87, 0x8a, 0xef, 0x6c, 0x11, 0x31, + 0xfb, 0x67, 0xc4, 0xb0, 0x57, 0xae, 0x3b, 0x5b, 0x64, 0x7f, 0x77, 0x6e, 0xf2, 0xa6, 0xef, 0xbd, + 0xdb, 0x11, 0x6b, 0x86, 0x96, 0x61, 0x86, 0x8d, 0x2e, 0x02, 0xb8, 0x64, 0xdb, 0x6b, 0x92, 0xba, + 0x13, 0x6f, 0x8a, 0xd5, 0x80, 0x44, 0x5d, 0xa8, 0x29, 0x08, 0xd6, 0xb0, 0xec, 0xcf, 0x5a, 0x50, + 0x5d, 0xd8, 0x0e, 0x3c, 0xb7, 0x1e, 0xb8, 0x11, 0xea, 0xc0, 0x44, 0x3b, 0x24, 0xeb, 0x24, 0x54, + 0x45, 0x33, 0xd6, 0x99, 0xf2, 0xd9, 0x91, 0x8b, 0x17, 0x73, 0xbe, 0xdb, 0xac, 0xb4, 0xec, 0xc7, + 0xe1, 0xce, 0xe2, 0x43, 0xa2, 0xe9, 0x89, 0x14, 0x14, 0xa7, 0xdb, 0xb0, 0xbf, 0x5b, 0x82, 0x93, + 0x0b, 0xef, 0x75, 0x42, 0x52, 0xf3, 0xa2, 0xbb, 0xe9, 0xad, 0xe0, 0x7a, 0xd1, 0xdd, 0xeb, 0xc9, + 0x60, 0xa8, 0x35, 0x58, 0x13, 0xe5, 0x58, 0x61, 0xa0, 0x67, 0x61, 0x88, 0xfe, 0xbe, 0x89, 0x57, + 0xc5, 0xd7, 0x9f, 0x10, 0xc8, 0x23, 0x35, 0x27, 0x76, 0x6a, 0x1c, 0x84, 0x25, 0x0e, 0xba, 0x06, + 0x23, 0x4d, 0xb6, 0x73, 0x37, 0xae, 0x05, 0x2e, 0x61, 0x33, 0x5c, 0x5d, 0x7c, 0x86, 0xa2, 0x2f, + 0x25, 0xc5, 0xfb, 0xbb, 0x73, 0x33, 0xbc, 0x6f, 0x82, 0x84, 0x06, 0xc3, 0x7a, 0x7d, 0x64, 0xab, + 0x8d, 0x58, 0x61, 0x94, 0x20, 0x63, 0x13, 0x9e, 0xd5, 0xf6, 0xd4, 0x00, 0xdb, 0x53, 0xa3, 0xd9, + 0xfb, 0x09, 0x5d, 0x80, 0xca, 0x5d, 0xcf, 0x77, 0x67, 0x06, 0x19, 0xad, 0x47, 0xe9, 0xf4, 0x5f, + 0xf1, 0x7c, 0x77, 0x7f, 0x77, 0x6e, 0xca, 0xe8, 0x0e, 0x2d, 0xc4, 0x0c, 0xd5, 0xfe, 0x47, 0x96, + 0x18, 0xc6, 0x15, 0xaf, 0x65, 0x72, 0x94, 0x8b, 0x00, 0x11, 0x69, 0x86, 0x24, 0xd6, 0x06, 0x52, + 0xad, 0x8c, 0x86, 0x82, 0x60, 0x0d, 0x8b, 0xf2, 0x8b, 0x68, 0xd3, 0x09, 0xd9, 0x02, 0x13, 0xc3, + 0xa9, 0xf8, 0x45, 0x43, 0x02, 0x70, 0x82, 0x63, 0xf0, 0x8b, 0x72, 0x2e, 0xbf, 0xf8, 0x3d, 0x0b, + 0x86, 0x16, 0x3d, 0xdf, 0xf5, 0xfc, 0x0d, 0xf4, 0x36, 0x0c, 0x53, 0x76, 0xee, 0x3a, 0xb1, 0x23, + 0x58, 0xc5, 0x47, 0xe5, 0x7a, 0xd3, 0xb9, 0xab, 0x5c, 0x71, 0xd1, 0x3c, 0xc5, 0xa6, 0xeb, 0xee, + 0xc6, 0x9d, 0x77, 0x48, 0x33, 0xbe, 0x46, 0x62, 0x27, 0xf9, 0x9c, 0xa4, 0x0c, 0x2b, 0xaa, 0xe8, + 0x26, 0x0c, 0xc6, 0x4e, 0xb8, 0x41, 0x62, 0xc1, 0x29, 0x72, 0xf6, 0x31, 0xa7, 0x81, 0xe9, 0x2a, + 0x25, 0x7e, 0x93, 0x24, 0x3c, 0x75, 0x8d, 0x11, 0xc1, 0x82, 0x98, 0xdd, 0x84, 0xd1, 0x25, 0xa7, + 0xed, 0xdc, 0xf1, 0x5a, 0x5e, 0xec, 0x91, 0x08, 0xfd, 0x0c, 0x94, 0x1d, 0xd7, 0x65, 0x7b, 0xa6, + 0xba, 0x78, 0x72, 0x6f, 0x77, 0xae, 0xbc, 0xe0, 0xd2, 0x29, 0x03, 0x85, 0xb5, 0x83, 0x29, 0x06, + 0x7a, 0x1a, 0x2a, 0x6e, 0x18, 0xb4, 0x67, 0x4a, 0x0c, 0xf3, 0x14, 0x9d, 0xdd, 0x5a, 0x18, 0xb4, + 0x53, 0xa8, 0x0c, 0xc7, 0xfe, 0x5e, 0x09, 0xd0, 0x12, 0x69, 0x6f, 0xae, 0x34, 0x8c, 0x39, 0x3d, + 0x0b, 0xc3, 0x5b, 0x81, 0xef, 0xc5, 0x41, 0x18, 0x89, 0x06, 0xd9, 0x52, 0xba, 0x26, 0xca, 0xb0, + 0x82, 0xa2, 0x33, 0x50, 0x69, 0x27, 0x1c, 0x61, 0x54, 0x72, 0x13, 0xc6, 0x0b, 0x18, 0x84, 0x62, + 0x74, 0x22, 0x12, 0x8a, 0x2d, 0xa0, 0x30, 0x6e, 0x46, 0x24, 0xc4, 0x0c, 0x92, 0xac, 0x20, 0xba, + 0xb6, 0xc4, 0x02, 0x4f, 0xad, 0x20, 0x0a, 0xc1, 0x1a, 0x16, 0x7a, 0x0b, 0xaa, 0xfc, 0x1f, 0x26, + 0xeb, 0x6c, 0xb5, 0xe7, 0xf2, 0x91, 0xab, 0x41, 0xd3, 0x69, 0xa5, 0x07, 0x7f, 0x8c, 0xad, 0x38, + 0x49, 0x08, 0x27, 0x34, 0x8d, 0x15, 0x37, 0x98, 0xbb, 0xe2, 0xfe, 0xb6, 0x05, 0x68, 0xc9, 0xf3, + 0x5d, 0x12, 0x1e, 0xc3, 0x69, 0xdb, 0xdf, 0x66, 0xf8, 0x13, 0xda, 0xb5, 0x60, 0xab, 0x1d, 0xf8, + 0xc4, 0x8f, 0x97, 0x02, 0xdf, 0xe5, 0x27, 0xf0, 0x27, 0xa0, 0x12, 0xd3, 0xa6, 0x78, 0xb7, 0x9e, + 0x94, 0xd3, 0x42, 0x1b, 0xd8, 0xdf, 0x9d, 0x3b, 0xd5, 0x5d, 0x83, 0x75, 0x81, 0xd5, 0x41, 0x1f, + 0x87, 0xc1, 0x28, 0x76, 0xe2, 0x4e, 0x24, 0x3a, 0xfa, 0x98, 0xec, 0x68, 0x83, 0x95, 0xee, 0xef, + 0xce, 0x4d, 0xa8, 0x6a, 0xbc, 0x08, 0x8b, 0x0a, 0xe8, 0x29, 0x18, 0xda, 0x22, 0x51, 0xe4, 0x6c, + 0x48, 0x9e, 0x38, 0x21, 0xea, 0x0e, 0x5d, 0xe3, 0xc5, 0x58, 0xc2, 0xd1, 0xe3, 0x30, 0x40, 0xc2, + 0x30, 0x08, 0xc5, 0x8a, 0x18, 0x13, 0x88, 0x03, 0xcb, 0xb4, 0x10, 0x73, 0x98, 0xfd, 0x5f, 0x2c, + 0x98, 0x50, 0x7d, 0xe5, 0x6d, 0x1d, 0xc3, 0x96, 0x77, 0x01, 0x9a, 0xf2, 0x03, 0x23, 0xb6, 0xd1, + 0xb4, 0x36, 0xb2, 0x97, 0x5f, 0xf7, 0x80, 0x26, 0x6d, 0xa8, 0xa2, 0x08, 0x6b, 0x74, 0xed, 0x7f, + 0x6b, 0xc1, 0x89, 0xd4, 0xb7, 0x5d, 0xf5, 0xa2, 0x18, 0xbd, 0xd1, 0xf5, 0x7d, 0xf3, 0xc5, 0xbe, + 0x8f, 0xd6, 0x66, 0x5f, 0xa7, 0xd6, 0x8b, 0x2c, 0xd1, 0xbe, 0x0d, 0xc3, 0x80, 0x17, 0x93, 0x2d, + 0xf9, 0x59, 0xcf, 0x16, 0xfc, 0x2c, 0xde, 0xbf, 0x64, 0x96, 0x56, 0x29, 0x0d, 0xcc, 0x49, 0xd9, + 0xff, 0xcb, 0x82, 0xea, 0x52, 0xe0, 0xaf, 0x7b, 0x1b, 0xd7, 0x9c, 0xf6, 0x31, 0xcc, 0x4f, 0x03, + 0x2a, 0x8c, 0x3a, 0xff, 0x84, 0x0b, 0x79, 0x9f, 0x20, 0x3a, 0x36, 0x4f, 0xcf, 0x3d, 0x2e, 0x5f, + 0x28, 0x36, 0x45, 0x8b, 0x30, 0x23, 0x36, 0xfb, 0x22, 0x54, 0x15, 0x02, 0x9a, 0x84, 0xf2, 0x5d, + 0xc2, 0x85, 0xcf, 0x2a, 0xa6, 0x3f, 0xd1, 0x34, 0x0c, 0x6c, 0x3b, 0xad, 0x8e, 0xd8, 0xbc, 0x98, + 0xff, 0xf9, 0x44, 0xe9, 0x25, 0xcb, 0xfe, 0x1e, 0xdb, 0x81, 0xa2, 0x91, 0x65, 0x7f, 0x5b, 0x30, + 0x87, 0xcf, 0x59, 0x30, 0xdd, 0xca, 0x60, 0x4a, 0x62, 0x4c, 0x0e, 0xc3, 0xce, 0x1e, 0x11, 0xdd, + 0x9e, 0xce, 0x82, 0xe2, 0xcc, 0xd6, 0x28, 0xaf, 0x0f, 0xda, 0x74, 0xc1, 0x39, 0x2d, 0xd6, 0x75, + 0x21, 0x36, 0xdc, 0x10, 0x65, 0x58, 0x41, 0xed, 0xbf, 0xb0, 0x60, 0x5a, 0x7d, 0xc7, 0x15, 0xb2, + 0xd3, 0x20, 0x2d, 0xd2, 0x8c, 0x83, 0xf0, 0x83, 0xf2, 0x25, 0x8f, 0xf2, 0x39, 0xe1, 0x3c, 0x69, + 0x44, 0x10, 0x28, 0x5f, 0x21, 0x3b, 0x7c, 0x82, 0xf4, 0x0f, 0x2d, 0x1f, 0xf8, 0xa1, 0xbf, 0x63, + 0xc1, 0x98, 0xfa, 0xd0, 0x63, 0xd8, 0x72, 0x57, 0xcd, 0x2d, 0xf7, 0x33, 0x05, 0xd7, 0x6b, 0x8f, + 0xcd, 0xf6, 0xb7, 0x4a, 0x94, 0x6d, 0x08, 0x9c, 0x7a, 0x18, 0xd0, 0x41, 0xa2, 0x1c, 0xff, 0x03, + 0x32, 0x4b, 0xfd, 0x7d, 0xec, 0x15, 0xb2, 0xb3, 0x16, 0x50, 0x69, 0x22, 0xfb, 0x63, 0x8d, 0x49, + 0xad, 0x1c, 0x38, 0xa9, 0x7f, 0x50, 0x82, 0x93, 0x6a, 0x58, 0x8c, 0x53, 0xfa, 0xa7, 0x72, 0x60, + 0x2e, 0xc0, 0x88, 0x4b, 0xd6, 0x9d, 0x4e, 0x2b, 0x56, 0x0a, 0xc8, 0x00, 0xd7, 0x4c, 0x6b, 0x49, + 0x31, 0xd6, 0x71, 0xfa, 0x18, 0xcb, 0xaf, 0x8c, 0x30, 0x7e, 0x1e, 0x3b, 0x74, 0xd5, 0x53, 0x09, + 0x4f, 0xd3, 0x28, 0x47, 0x75, 0x8d, 0x52, 0x68, 0x8f, 0x8f, 0xc3, 0x80, 0xb7, 0x45, 0xcf, 0xfc, + 0x92, 0x79, 0x94, 0xaf, 0xd2, 0x42, 0xcc, 0x61, 0xe8, 0x09, 0x18, 0x6a, 0x06, 0x5b, 0x5b, 0x8e, + 0xef, 0xce, 0x94, 0x99, 0xcc, 0x39, 0x42, 0xc5, 0x82, 0x25, 0x5e, 0x84, 0x25, 0x0c, 0x3d, 0x02, + 0x15, 0x27, 0xdc, 0x88, 0x66, 0x2a, 0x0c, 0x67, 0x98, 0xb6, 0xb4, 0x10, 0x6e, 0x44, 0x98, 0x95, + 0x52, 0x59, 0xf2, 0x5e, 0x10, 0xde, 0xf5, 0xfc, 0x8d, 0x9a, 0x17, 0x32, 0xc1, 0x50, 0x93, 0x25, + 0x6f, 0x2b, 0x08, 0xd6, 0xb0, 0x50, 0x1d, 0x06, 0xda, 0x41, 0x18, 0x47, 0x33, 0x83, 0x6c, 0xe0, + 0x9f, 0xc9, 0xdd, 0x7e, 0xfc, 0xbb, 0xeb, 0x41, 0x18, 0x27, 0x9f, 0x42, 0xff, 0x45, 0x98, 0x13, + 0x42, 0x4b, 0x50, 0x26, 0xfe, 0xf6, 0xcc, 0x10, 0xa3, 0xf7, 0x91, 0x83, 0xe9, 0x2d, 0xfb, 0xdb, + 0xb7, 0x9c, 0x30, 0xe1, 0x57, 0xcb, 0xfe, 0x36, 0xa6, 0xb5, 0x51, 0x13, 0xaa, 0xd2, 0x7e, 0x15, + 0xcd, 0x0c, 0x17, 0x59, 0x8a, 0x58, 0xa0, 0x63, 0xf2, 0x6e, 0xc7, 0x0b, 0xc9, 0x16, 0xf1, 0xe3, + 0x28, 0x51, 0xac, 0x24, 0x34, 0xc2, 0x09, 0x5d, 0xd4, 0x84, 0x51, 0x2e, 0x7f, 0x5e, 0x0b, 0x3a, + 0x7e, 0x1c, 0xcd, 0x54, 0x59, 0x97, 0x73, 0x8c, 0x1d, 0xb7, 0x92, 0x1a, 0x8b, 0xd3, 0x82, 0xfc, + 0xa8, 0x56, 0x18, 0x61, 0x83, 0x28, 0x7a, 0x03, 0xc6, 0x5a, 0xde, 0x36, 0xf1, 0x49, 0x14, 0xd5, + 0xc3, 0xe0, 0x0e, 0x99, 0x01, 0xf6, 0x35, 0x8f, 0xe7, 0x29, 0xfe, 0xc1, 0x1d, 0xb2, 0x38, 0xb5, + 0xb7, 0x3b, 0x37, 0x76, 0x55, 0xaf, 0x8d, 0x4d, 0x62, 0xe8, 0x2d, 0x18, 0xa7, 0xc2, 0xae, 0x97, + 0x90, 0x1f, 0x29, 0x4e, 0x1e, 0xed, 0xed, 0xce, 0x8d, 0x63, 0xa3, 0x3a, 0x4e, 0x91, 0x43, 0x6b, + 0x50, 0x6d, 0x79, 0xeb, 0xa4, 0xb9, 0xd3, 0x6c, 0x91, 0x99, 0x51, 0x46, 0x3b, 0x67, 0x73, 0x5e, + 0x95, 0xe8, 0x5c, 0xc1, 0x50, 0x7f, 0x71, 0x42, 0x08, 0xdd, 0x82, 0x53, 0x31, 0x09, 0xb7, 0x3c, + 0xdf, 0xa1, 0x9b, 0x4a, 0x48, 0xbf, 0xcc, 0xba, 0x32, 0xc6, 0x56, 0xed, 0x69, 0x31, 0xb0, 0xa7, + 0xd6, 0x32, 0xb1, 0x70, 0x8f, 0xda, 0xe8, 0x06, 0x4c, 0xb0, 0xfd, 0x54, 0xef, 0xb4, 0x5a, 0xf5, + 0xa0, 0xe5, 0x35, 0x77, 0x66, 0xc6, 0x19, 0xc1, 0x27, 0xa4, 0xcd, 0x64, 0xd5, 0x04, 0x53, 0xc5, + 0x30, 0xf9, 0x87, 0xd3, 0xb5, 0x51, 0x0b, 0x26, 0x22, 0xd2, 0xec, 0x84, 0x5e, 0xbc, 0x43, 0xd7, + 0x3e, 0xb9, 0x1f, 0xcf, 0x4c, 0x14, 0x51, 0x74, 0x1b, 0x66, 0x25, 0x6e, 0xb0, 0x4a, 0x15, 0xe2, + 0x34, 0x69, 0xca, 0x2a, 0xa2, 0xd8, 0xf5, 0xfc, 0x99, 0x49, 0xc6, 0x81, 0xd4, 0xfe, 0x6a, 0xd0, + 0x42, 0xcc, 0x61, 0xcc, 0x7e, 0x40, 0x7f, 0xdc, 0xa0, 0x5c, 0x7a, 0x8a, 0x21, 0x26, 0xf6, 0x03, + 0x09, 0xc0, 0x09, 0x0e, 0x15, 0x0d, 0xe2, 0x78, 0x67, 0x06, 0x31, 0x54, 0xb5, 0xd5, 0xd6, 0xd6, + 0x3e, 0x8d, 0x69, 0x39, 0xba, 0x05, 0x43, 0xc4, 0xdf, 0x5e, 0x09, 0x83, 0xad, 0x99, 0x13, 0x45, + 0x78, 0xc0, 0x32, 0x47, 0xe6, 0xe7, 0x47, 0xa2, 0xc2, 0x88, 0x62, 0x2c, 0x89, 0xa1, 0xfb, 0x30, + 0x93, 0x31, 0x4b, 0x7c, 0x52, 0xa6, 0xd9, 0xa4, 0x7c, 0x52, 0xd4, 0x9d, 0x59, 0xeb, 0x81, 0xb7, + 0x7f, 0x00, 0x0c, 0xf7, 0xa4, 0x6e, 0xdf, 0x81, 0x71, 0xc5, 0xa8, 0xd8, 0x7c, 0xa3, 0x39, 0x18, + 0xa0, 0xbc, 0x58, 0x2a, 0xf4, 0x55, 0x3a, 0xa8, 0x94, 0x45, 0x47, 0x98, 0x97, 0xb3, 0x41, 0xf5, + 0xde, 0x23, 0x8b, 0x3b, 0x31, 0xe1, 0x8a, 0x5d, 0x59, 0x1b, 0x54, 0x09, 0xc0, 0x09, 0x8e, 0xfd, + 0x7f, 0xb9, 0x98, 0x94, 0x70, 0xc3, 0x02, 0x27, 0xc1, 0x39, 0x18, 0xde, 0x0c, 0xa2, 0x98, 0x62, + 0xb3, 0x36, 0x06, 0x12, 0xc1, 0xe8, 0xb2, 0x28, 0xc7, 0x0a, 0x03, 0xbd, 0x0c, 0x63, 0x4d, 0xbd, + 0x01, 0x71, 0x8c, 0x9d, 0x14, 0x55, 0xcc, 0xd6, 0xb1, 0x89, 0x8b, 0x5e, 0x82, 0x61, 0x66, 0x18, + 0x6f, 0x06, 0x2d, 0xa1, 0x42, 0xca, 0x53, 0x79, 0xb8, 0x2e, 0xca, 0xf7, 0xb5, 0xdf, 0x58, 0x61, + 0x53, 0x45, 0x9c, 0x76, 0x61, 0xb5, 0x2e, 0x0e, 0x10, 0xa5, 0x88, 0x5f, 0x66, 0xa5, 0x58, 0x40, + 0xed, 0xdf, 0x2a, 0x69, 0xa3, 0x4c, 0x15, 0x20, 0x82, 0x5e, 0x87, 0xa1, 0x7b, 0x8e, 0x17, 0x7b, + 0xfe, 0x86, 0x90, 0x1e, 0x9e, 0x2b, 0x78, 0x9a, 0xb0, 0xea, 0xb7, 0x79, 0x55, 0x7e, 0xf2, 0x89, + 0x3f, 0x58, 0x12, 0xa4, 0xb4, 0xc3, 0x8e, 0xef, 0x53, 0xda, 0xa5, 0xfe, 0x69, 0x63, 0x5e, 0x95, + 0xd3, 0x16, 0x7f, 0xb0, 0x24, 0x88, 0xd6, 0x01, 0xe4, 0x5a, 0x22, 0xae, 0x30, 0x48, 0x7f, 0xac, + 0x1f, 0xf2, 0x6b, 0xaa, 0xf6, 0xe2, 0x38, 0x3d, 0x6b, 0x93, 0xff, 0x58, 0xa3, 0x6c, 0xc7, 0x4c, + 0x08, 0xeb, 0xee, 0x16, 0xfa, 0x0c, 0xdd, 0xd2, 0x4e, 0x18, 0x13, 0x77, 0x21, 0x4e, 0xdb, 0xf4, + 0x0f, 0x16, 0xb1, 0xd7, 0xbc, 0x2d, 0xa2, 0x6f, 0x7f, 0x41, 0x04, 0x27, 0xf4, 0xec, 0x6f, 0x95, + 0x61, 0xa6, 0x57, 0x77, 0xe9, 0x92, 0x24, 0xf7, 0xbd, 0x78, 0x89, 0x8a, 0x49, 0x96, 0xb9, 0x24, + 0x97, 0x45, 0x39, 0x56, 0x18, 0x74, 0x6d, 0x44, 0xde, 0x86, 0x54, 0x96, 0x06, 0x92, 0xb5, 0xd1, + 0x60, 0xa5, 0x58, 0x40, 0x29, 0x5e, 0x48, 0x9c, 0x48, 0xdc, 0x87, 0x68, 0x6b, 0x08, 0xb3, 0x52, + 0x2c, 0xa0, 0xba, 0x41, 0xa4, 0x92, 0x63, 0x10, 0x31, 0x86, 0x68, 0xe0, 0xc1, 0x0e, 0x11, 0x7a, + 0x13, 0x60, 0xdd, 0xf3, 0xbd, 0x68, 0x93, 0x51, 0x1f, 0xec, 0x9b, 0xba, 0x12, 0xb2, 0x56, 0x14, + 0x15, 0xac, 0x51, 0x44, 0x2f, 0xc0, 0x88, 0xda, 0x9e, 0xab, 0xb5, 0x99, 0x21, 0xd3, 0x86, 0x9e, + 0xf0, 0xaa, 0x1a, 0xd6, 0xf1, 0xec, 0x77, 0xd2, 0xeb, 0x45, 0xec, 0x0a, 0x6d, 0x7c, 0xad, 0xa2, + 0xe3, 0x5b, 0x3a, 0x78, 0x7c, 0xed, 0xff, 0x5c, 0x86, 0x09, 0xa3, 0xb1, 0x4e, 0x54, 0x80, 0xa3, + 0xbd, 0x4a, 0x0f, 0x2c, 0x27, 0x26, 0x62, 0x4f, 0x9e, 0xeb, 0x67, 0xd3, 0xe8, 0xc7, 0x1b, 0xdd, + 0x0b, 0x9c, 0x12, 0xda, 0x84, 0x6a, 0xcb, 0x89, 0x98, 0x49, 0x85, 0x88, 0xbd, 0xd8, 0x1f, 0xd9, + 0x44, 0xfd, 0x70, 0xa2, 0x58, 0x3b, 0x3d, 0x78, 0x2b, 0x09, 0x71, 0x7a, 0xda, 0x52, 0x61, 0x47, + 0x5e, 0xc2, 0xa9, 0xee, 0x50, 0x89, 0x68, 0x07, 0x73, 0x18, 0x7a, 0x09, 0x46, 0x43, 0xc2, 0x56, + 0xca, 0x12, 0x95, 0xe7, 0xd8, 0xd2, 0x1b, 0x48, 0x04, 0x3f, 0xac, 0xc1, 0xb0, 0x81, 0x99, 0xc8, + 0xfd, 0x83, 0x07, 0xc8, 0xfd, 0x4f, 0xc1, 0x10, 0xfb, 0xa1, 0x56, 0x85, 0x9a, 0xa1, 0x55, 0x5e, + 0x8c, 0x25, 0x3c, 0xbd, 0x88, 0x86, 0x0b, 0x2e, 0xa2, 0xa7, 0x61, 0xbc, 0xe6, 0x90, 0xad, 0xc0, + 0x5f, 0xf6, 0xdd, 0x76, 0xe0, 0xf9, 0x31, 0x9a, 0x81, 0x0a, 0x3b, 0x4f, 0xf8, 0x7e, 0xaf, 0x50, + 0x0a, 0xb8, 0x42, 0x65, 0x77, 0xfb, 0x4f, 0x4a, 0x30, 0x56, 0x23, 0x2d, 0x12, 0x13, 0xae, 0xf7, + 0x44, 0x68, 0x05, 0xd0, 0x46, 0xe8, 0x34, 0x49, 0x9d, 0x84, 0x5e, 0xe0, 0x36, 0x48, 0x33, 0xf0, + 0xd9, 0xdd, 0x15, 0x3d, 0x20, 0x4f, 0xed, 0xed, 0xce, 0xa1, 0x4b, 0x5d, 0x50, 0x9c, 0x51, 0x03, + 0xb9, 0x30, 0xd6, 0x0e, 0x89, 0x61, 0x37, 0xb4, 0xf2, 0x45, 0x8d, 0xba, 0x5e, 0x85, 0x4b, 0xc3, + 0x46, 0x11, 0x36, 0x89, 0xa2, 0x4f, 0xc1, 0x64, 0x10, 0xb6, 0x37, 0x1d, 0xbf, 0x46, 0xda, 0xc4, + 0x77, 0xa9, 0x0a, 0x20, 0xac, 0x1d, 0xd3, 0x7b, 0xbb, 0x73, 0x93, 0x37, 0x52, 0x30, 0xdc, 0x85, + 0x8d, 0x5e, 0x87, 0xa9, 0x76, 0x18, 0xb4, 0x9d, 0x0d, 0xb6, 0x64, 0x84, 0xb4, 0xc2, 0x79, 0xd3, + 0xb9, 0xbd, 0xdd, 0xb9, 0xa9, 0x7a, 0x1a, 0xb8, 0xbf, 0x3b, 0x77, 0x82, 0x0d, 0x19, 0x2d, 0x49, + 0x80, 0xb8, 0x9b, 0x8c, 0xfd, 0x2e, 0x9c, 0xac, 0x05, 0xf7, 0xfc, 0x7b, 0x4e, 0xe8, 0x2e, 0xd4, + 0x57, 0x35, 0xe3, 0xc4, 0x6b, 0x52, 0xf9, 0xe5, 0x77, 0x82, 0x39, 0x27, 0x9b, 0x46, 0x83, 0xab, + 0x1d, 0x2b, 0x5e, 0x8b, 0xf4, 0x30, 0x87, 0xfc, 0xe3, 0x92, 0xd1, 0x66, 0x82, 0xaf, 0xee, 0x2e, + 0xac, 0x9e, 0x77, 0x17, 0x9f, 0x81, 0xe1, 0x75, 0x8f, 0xb4, 0x5c, 0x4c, 0xd6, 0xc5, 0x6c, 0x5d, + 0x28, 0x72, 0xb9, 0xb3, 0x42, 0xeb, 0x48, 0xeb, 0x18, 0x57, 0xa2, 0x57, 0x04, 0x19, 0xac, 0x08, + 0xa2, 0x0e, 0x4c, 0x4a, 0x3d, 0x4c, 0x42, 0xc5, 0x66, 0x7f, 0xae, 0x98, 0x9a, 0x67, 0x36, 0xc3, + 0xa6, 0x17, 0xa7, 0x08, 0xe2, 0xae, 0x26, 0xa8, 0xfe, 0xbc, 0x45, 0x8f, 0xba, 0x0a, 0x5b, 0xfa, + 0x4c, 0x7f, 0x66, 0xa6, 0x00, 0x56, 0x6a, 0xff, 0xa6, 0x05, 0x0f, 0x75, 0x8d, 0x96, 0xb0, 0x93, + 0x1c, 0xd9, 0x1c, 0xa5, 0x8d, 0x15, 0xa5, 0x7c, 0x63, 0x85, 0xfd, 0x5b, 0x16, 0x4c, 0x2f, 0x6f, + 0xb5, 0xe3, 0x9d, 0x9a, 0x67, 0xde, 0xb9, 0xbc, 0x08, 0x83, 0x5b, 0xc4, 0xf5, 0x3a, 0x5b, 0x62, + 0x5e, 0xe7, 0xe4, 0xc1, 0x70, 0x8d, 0x95, 0xee, 0xef, 0xce, 0x8d, 0x35, 0xe2, 0x20, 0x74, 0x36, + 0x08, 0x2f, 0xc0, 0x02, 0x9d, 0x5d, 0x29, 0x79, 0xef, 0x91, 0xab, 0xde, 0x96, 0x27, 0xaf, 0xf2, + 0x0e, 0x34, 0xf2, 0xcd, 0xcb, 0xa1, 0x9d, 0x7f, 0xb5, 0xe3, 0xf8, 0xb1, 0x17, 0xef, 0x98, 0xf2, + 0x32, 0x23, 0x84, 0x13, 0x9a, 0xf6, 0x8f, 0x2c, 0x98, 0x90, 0x1c, 0x68, 0xc1, 0x75, 0x43, 0x12, + 0x45, 0x68, 0x16, 0x4a, 0x5e, 0x5b, 0xf4, 0x14, 0x44, 0xed, 0xd2, 0x6a, 0x1d, 0x97, 0xbc, 0x36, + 0x7a, 0x1d, 0xaa, 0xfc, 0x2e, 0x30, 0x59, 0x7e, 0x7d, 0xde, 0x2d, 0x32, 0xed, 0x73, 0x4d, 0xd2, + 0xc0, 0x09, 0x39, 0x29, 0x87, 0xb3, 0xb3, 0xad, 0x6c, 0xde, 0x4c, 0x5d, 0x16, 0xe5, 0x58, 0x61, + 0xa0, 0xb3, 0x30, 0xec, 0x07, 0x2e, 0xbf, 0xae, 0xe5, 0x9c, 0x80, 0x2d, 0xea, 0xeb, 0xa2, 0x0c, + 0x2b, 0xa8, 0xfd, 0x45, 0x0b, 0x46, 0xe5, 0x37, 0x16, 0x54, 0x09, 0xe8, 0x36, 0x4c, 0xd4, 0x81, + 0x64, 0x1b, 0x52, 0x91, 0x9e, 0x41, 0x0c, 0x49, 0xbe, 0xdc, 0x8f, 0x24, 0x6f, 0xff, 0x76, 0x09, + 0xc6, 0x65, 0x77, 0x1a, 0x9d, 0x3b, 0x11, 0xa1, 0x82, 0x4e, 0xd5, 0xe1, 0x83, 0x4f, 0xe4, 0x4a, + 0x7e, 0x36, 0x4f, 0xdb, 0x33, 0xe6, 0x2c, 0x99, 0xe5, 0x05, 0x49, 0x07, 0x27, 0x24, 0xd1, 0x36, + 0x4c, 0xf9, 0x41, 0xcc, 0x0e, 0x50, 0x05, 0x2f, 0x76, 0x97, 0x92, 0x6e, 0xe7, 0x61, 0xd1, 0xce, + 0xd4, 0xf5, 0x34, 0x3d, 0xdc, 0xdd, 0x04, 0xba, 0x21, 0xad, 0x58, 0x65, 0xd6, 0xd6, 0xd3, 0xc5, + 0xda, 0xea, 0x6d, 0xc4, 0xb2, 0x7f, 0xdf, 0x82, 0xaa, 0x44, 0x3b, 0x8e, 0x4b, 0xb5, 0xdb, 0x30, + 0x14, 0xb1, 0x29, 0x92, 0xc3, 0x75, 0xae, 0xd8, 0x27, 0xf0, 0x79, 0x4d, 0xa4, 0x06, 0xfe, 0x3f, + 0xc2, 0x92, 0x1a, 0x33, 0xe7, 0xab, 0x0f, 0xf9, 0xc0, 0x99, 0xf3, 0x55, 0xcf, 0x7a, 0xdf, 0x9d, + 0x8d, 0x19, 0xf6, 0x06, 0x2a, 0xfa, 0xb6, 0x43, 0xb2, 0xee, 0xdd, 0x4f, 0x8b, 0xbe, 0x75, 0x56, + 0x8a, 0x05, 0x14, 0xad, 0xc3, 0x68, 0x53, 0x1a, 0xbc, 0x13, 0x16, 0xf2, 0xd1, 0x82, 0xb7, 0x0b, + 0xea, 0xa2, 0x8a, 0xfb, 0x4b, 0x2d, 0x69, 0x94, 0xb0, 0x41, 0x97, 0xf2, 0xa9, 0xe4, 0x2e, 0xbe, + 0x5c, 0xd0, 0x34, 0x14, 0x92, 0x38, 0x69, 0xa1, 0xe7, 0x35, 0xbc, 0xfd, 0x55, 0x0b, 0x06, 0xb9, + 0x85, 0xb4, 0x98, 0x99, 0x59, 0xbb, 0x82, 0x4b, 0xc6, 0xf3, 0x16, 0x2d, 0x14, 0x37, 0x72, 0xe8, + 0x36, 0x54, 0xd9, 0x0f, 0x66, 0xed, 0x29, 0x17, 0x71, 0x1e, 0xe3, 0xed, 0xeb, 0x5d, 0xbd, 0x25, + 0x09, 0xe0, 0x84, 0x96, 0xfd, 0x9d, 0x32, 0x65, 0x7d, 0x09, 0xaa, 0x21, 0x3d, 0x58, 0xc7, 0x21, + 0x3d, 0x94, 0x8e, 0x5e, 0x7a, 0x78, 0x17, 0x26, 0x9a, 0xda, 0x15, 0x60, 0x32, 0xe3, 0x17, 0x0b, + 0x2e, 0x2b, 0xed, 0xde, 0x90, 0x5b, 0x04, 0x97, 0x4c, 0x72, 0x38, 0x4d, 0x1f, 0x11, 0x18, 0xe5, + 0xeb, 0x41, 0xb4, 0x57, 0x61, 0xed, 0x9d, 0x2f, 0xb2, 0xc2, 0xf4, 0xc6, 0xd8, 0x2a, 0x6e, 0x68, + 0x84, 0xb0, 0x41, 0xd6, 0xfe, 0xf5, 0x01, 0x18, 0x58, 0xde, 0x26, 0x7e, 0x7c, 0x0c, 0xac, 0x6e, + 0x0b, 0xc6, 0x3d, 0x7f, 0x3b, 0x68, 0x6d, 0x13, 0x97, 0xc3, 0x0f, 0x77, 0xbc, 0x9f, 0x12, 0x8d, + 0x8c, 0xaf, 0x1a, 0xc4, 0x70, 0x8a, 0xf8, 0x51, 0xd8, 0x22, 0x5e, 0x85, 0x41, 0xbe, 0x32, 0x84, + 0x21, 0x22, 0xe7, 0xc6, 0x80, 0x0d, 0xac, 0xd8, 0x41, 0x89, 0xc5, 0x84, 0x5f, 0x56, 0x08, 0x42, + 0xe8, 0x1d, 0x18, 0x5f, 0xf7, 0xc2, 0x28, 0x5e, 0xf3, 0xb6, 0xa8, 0x0e, 0xb9, 0xd5, 0x3e, 0x84, + 0x15, 0x42, 0x8d, 0xc8, 0x8a, 0x41, 0x09, 0xa7, 0x28, 0xa3, 0x0d, 0x18, 0xa3, 0x4a, 0x70, 0xd2, + 0xd4, 0x50, 0xdf, 0x4d, 0x29, 0x23, 0xe4, 0x55, 0x9d, 0x10, 0x36, 0xe9, 0x52, 0x96, 0xd4, 0x64, + 0x4a, 0xf3, 0x30, 0x93, 0x6e, 0x14, 0x4b, 0xe2, 0xda, 0x32, 0x87, 0x51, 0xce, 0xc6, 0x7c, 0x71, + 0xaa, 0x26, 0x67, 0x4b, 0x3c, 0x6e, 0xec, 0xaf, 0xd3, 0xb3, 0x98, 0x8e, 0xe1, 0x31, 0x1c, 0x5f, + 0x97, 0xcd, 0xe3, 0xeb, 0xf1, 0x02, 0x33, 0xdb, 0xe3, 0xe8, 0x7a, 0x1b, 0x46, 0xb4, 0x89, 0x47, + 0xe7, 0xa1, 0xda, 0x94, 0xee, 0x22, 0x82, 0x8b, 0x2b, 0x51, 0x4a, 0xf9, 0x91, 0xe0, 0x04, 0x87, + 0x8e, 0x0b, 0x15, 0x41, 0xd3, 0xce, 0x65, 0x54, 0x40, 0xc5, 0x0c, 0x62, 0x3f, 0x07, 0xb0, 0x7c, + 0x9f, 0x34, 0x17, 0xb8, 0x12, 0xa9, 0xdd, 0x20, 0x5a, 0xbd, 0x6f, 0x10, 0xed, 0xaf, 0x59, 0x30, + 0xbe, 0xb2, 0x64, 0x28, 0x0d, 0xf3, 0x00, 0x5c, 0x36, 0xbe, 0x7d, 0xfb, 0xba, 0xb4, 0x90, 0x73, + 0x33, 0xa6, 0x2a, 0xc5, 0x1a, 0x06, 0x7a, 0x18, 0xca, 0xad, 0x8e, 0x2f, 0x44, 0xd6, 0xa1, 0xbd, + 0xdd, 0xb9, 0xf2, 0xd5, 0x8e, 0x8f, 0x69, 0x99, 0xe6, 0xc5, 0x55, 0x2e, 0xec, 0xc5, 0x95, 0xef, + 0x02, 0xfd, 0xe5, 0x32, 0x4c, 0xae, 0xb4, 0xc8, 0x7d, 0xa3, 0xd7, 0x4f, 0xc2, 0xa0, 0x1b, 0x7a, + 0xdb, 0x24, 0x4c, 0x0b, 0x02, 0x35, 0x56, 0x8a, 0x05, 0xb4, 0xb0, 0x63, 0xd9, 0x5b, 0xdd, 0x07, + 0xf9, 0xd1, 0x39, 0xd5, 0xe5, 0x7e, 0x33, 0x5a, 0x87, 0x21, 0x7e, 0xe3, 0x1c, 0xcd, 0x0c, 0xb0, + 0xa5, 0xf8, 0xf2, 0xc1, 0x9d, 0x49, 0x8f, 0xcf, 0xbc, 0xb0, 0xe0, 0x70, 0x97, 0x1e, 0xc5, 0xcb, + 0x44, 0x29, 0x96, 0xc4, 0x67, 0x3f, 0x01, 0xa3, 0x3a, 0x66, 0x5f, 0xbe, 0x3d, 0x7f, 0xd5, 0x82, + 0x13, 0x2b, 0xad, 0xa0, 0x79, 0x37, 0xe5, 0xf9, 0xf7, 0x02, 0x8c, 0xd0, 0xcd, 0x14, 0x19, 0x6e, + 0xb1, 0x86, 0xcb, 0xb0, 0x00, 0x61, 0x1d, 0x4f, 0xab, 0x76, 0xf3, 0xe6, 0x6a, 0x2d, 0xcb, 0xd3, + 0x58, 0x80, 0xb0, 0x8e, 0x67, 0xff, 0xa1, 0x05, 0x8f, 0x5e, 0x5a, 0x5a, 0xae, 0x93, 0x30, 0xf2, + 0xa2, 0x98, 0xf8, 0x71, 0x97, 0xb3, 0x33, 0x95, 0x19, 0x5d, 0xad, 0x2b, 0x89, 0xcc, 0x58, 0x63, + 0xbd, 0x10, 0xd0, 0x0f, 0x8a, 0xc7, 0xff, 0x57, 0x2d, 0x38, 0x71, 0xc9, 0x8b, 0x31, 0x69, 0x07, + 0x69, 0x67, 0xe3, 0x90, 0xb4, 0x83, 0xc8, 0x8b, 0x83, 0x70, 0x27, 0xed, 0x6c, 0x8c, 0x15, 0x04, + 0x6b, 0x58, 0xbc, 0xe5, 0x6d, 0x2f, 0xa2, 0x3d, 0x2d, 0x99, 0xaa, 0x2e, 0x16, 0xe5, 0x58, 0x61, + 0xd0, 0x0f, 0x73, 0xbd, 0x90, 0x89, 0x0c, 0x3b, 0x62, 0x07, 0xab, 0x0f, 0xab, 0x49, 0x00, 0x4e, + 0x70, 0xec, 0xbf, 0x6b, 0xc1, 0xc9, 0x4b, 0xad, 0x4e, 0x14, 0x93, 0x70, 0x3d, 0x32, 0x3a, 0xfb, + 0x1c, 0x54, 0x89, 0x14, 0xee, 0x45, 0x5f, 0xd5, 0xa1, 0xa1, 0xa4, 0x7e, 0xee, 0xe9, 0xac, 0xf0, + 0x0a, 0x38, 0xd4, 0xf6, 0xe7, 0xfe, 0xf9, 0xbb, 0x25, 0x18, 0xbb, 0xbc, 0xb6, 0x56, 0xbf, 0x44, + 0x62, 0xc1, 0x25, 0xf3, 0xcd, 0x5e, 0x58, 0xd3, 0xc8, 0x0f, 0x12, 0x7e, 0x3a, 0xb1, 0xd7, 0x9a, + 0xe7, 0xd1, 0x28, 0xf3, 0xab, 0x7e, 0x7c, 0x23, 0x6c, 0xc4, 0xa1, 0xe7, 0x6f, 0x64, 0xea, 0xf0, + 0x92, 0x97, 0x97, 0x7b, 0xf1, 0x72, 0xf4, 0x1c, 0x0c, 0xb2, 0x70, 0x18, 0x29, 0x7c, 0x7c, 0x58, + 0xc9, 0x09, 0xac, 0x74, 0x7f, 0x77, 0xae, 0x7a, 0x13, 0xaf, 0xf2, 0x3f, 0x58, 0xa0, 0xa2, 0xb7, + 0x60, 0x64, 0x33, 0x8e, 0xdb, 0x97, 0x89, 0xe3, 0x92, 0x50, 0xf2, 0x89, 0xb3, 0x07, 0xf3, 0x09, + 0x3a, 0x1c, 0xbc, 0x42, 0xb2, 0xb5, 0x92, 0xb2, 0x08, 0xeb, 0x14, 0xed, 0x06, 0x40, 0x02, 0x7b, + 0x40, 0x3a, 0x88, 0xfd, 0xcb, 0x25, 0x18, 0xba, 0xec, 0xf8, 0x6e, 0x8b, 0x84, 0x68, 0x05, 0x2a, + 0xe4, 0x3e, 0x69, 0x8a, 0x83, 0x3c, 0xa7, 0xeb, 0xc9, 0x61, 0xc7, 0x2d, 0x77, 0xf4, 0x3f, 0x66, + 0xf5, 0x11, 0x86, 0x21, 0xda, 0xef, 0x4b, 0xca, 0x0f, 0xfd, 0x99, 0xfc, 0x51, 0x50, 0x8b, 0x82, + 0x9f, 0x94, 0xa2, 0x08, 0x4b, 0x42, 0xcc, 0x02, 0xd5, 0x6c, 0x37, 0x28, 0x7b, 0x8b, 0x8b, 0x69, + 0x76, 0x6b, 0x4b, 0x75, 0x8e, 0x2e, 0xe8, 0x72, 0x0b, 0x94, 0x2c, 0xc4, 0x09, 0x39, 0x7b, 0x0d, + 0xaa, 0x74, 0xf2, 0x17, 0x5a, 0x9e, 0x73, 0xb0, 0x19, 0xec, 0x19, 0xa8, 0x4a, 0x43, 0x54, 0x24, + 0x9c, 0xda, 0x19, 0x55, 0x69, 0xa7, 0x8a, 0x70, 0x02, 0xb7, 0x5f, 0x82, 0x69, 0x76, 0x8f, 0xec, + 0xc4, 0x9b, 0xc6, 0x5e, 0xcc, 0x5d, 0xf4, 0xf6, 0x37, 0x2a, 0x30, 0xb5, 0xda, 0x58, 0x6a, 0x98, + 0x36, 0xcf, 0x97, 0x60, 0x94, 0x1f, 0xfb, 0x74, 0x29, 0x3b, 0x2d, 0x51, 0x5f, 0xdd, 0x7d, 0xac, + 0x69, 0x30, 0x6c, 0x60, 0xa2, 0x47, 0xa1, 0xec, 0xbd, 0xeb, 0xa7, 0xbd, 0x11, 0x57, 0x5f, 0xbd, + 0x8e, 0x69, 0x39, 0x05, 0x53, 0x09, 0x82, 0xb3, 0x4e, 0x05, 0x56, 0x52, 0xc4, 0x2b, 0x30, 0xee, + 0x45, 0xcd, 0xc8, 0x5b, 0xf5, 0x29, 0x5f, 0x71, 0x9a, 0x72, 0x53, 0x24, 0x22, 0x3f, 0xed, 0xaa, + 0x82, 0xe2, 0x14, 0xb6, 0xc6, 0xc7, 0x07, 0x0a, 0x4b, 0x21, 0xb9, 0x6e, 0xee, 0x54, 0xc0, 0x6a, + 0xb3, 0xaf, 0x8b, 0x98, 0x6f, 0x93, 0x10, 0xb0, 0xf8, 0x07, 0x47, 0x58, 0xc2, 0xd0, 0x25, 0x98, + 0x6a, 0x6e, 0x3a, 0xed, 0x85, 0x4e, 0xbc, 0x59, 0xf3, 0xa2, 0x66, 0xb0, 0x4d, 0xc2, 0x1d, 0x26, + 0x00, 0x0f, 0x27, 0x36, 0x2d, 0x05, 0x58, 0xba, 0xbc, 0x50, 0xa7, 0x98, 0xb8, 0xbb, 0x8e, 0x29, + 0x90, 0xc0, 0x11, 0x08, 0x24, 0x0b, 0x30, 0x21, 0x5b, 0x6d, 0x90, 0x88, 0x1d, 0x11, 0x23, 0xac, + 0x9f, 0x2a, 0xc0, 0x48, 0x14, 0xab, 0x5e, 0xa6, 0xf1, 0xed, 0x77, 0xa0, 0xaa, 0x7c, 0xf1, 0xa4, + 0x0b, 0xaa, 0xd5, 0xc3, 0x05, 0x35, 0x9f, 0xb9, 0x4b, 0xeb, 0x7c, 0x39, 0xd3, 0x3a, 0xff, 0x4f, + 0x2d, 0x48, 0x9c, 0x89, 0x10, 0x86, 0x6a, 0x3b, 0x60, 0x37, 0x79, 0xa1, 0xbc, 0x32, 0x7f, 0x22, + 0x67, 0xcf, 0x73, 0x9e, 0xc3, 0x07, 0xa4, 0x2e, 0xeb, 0xe2, 0x84, 0x0c, 0xba, 0x0a, 0x43, 0xed, + 0x90, 0x34, 0x62, 0x16, 0x3f, 0xd2, 0x07, 0x45, 0xbe, 0x10, 0x78, 0x4d, 0x2c, 0x49, 0xd8, 0xff, + 0xd2, 0x02, 0xe0, 0x66, 0x70, 0xc7, 0xdf, 0x20, 0xc7, 0xa0, 0x58, 0x5f, 0x87, 0x4a, 0xd4, 0x26, + 0xcd, 0x62, 0x77, 0xb1, 0x49, 0xcf, 0x1a, 0x6d, 0xd2, 0x4c, 0xa6, 0x83, 0xfe, 0xc3, 0x8c, 0x8e, + 0xfd, 0x6d, 0x80, 0xf1, 0x04, 0x8d, 0x2a, 0x37, 0xe8, 0x59, 0x23, 0x70, 0xe2, 0xe1, 0x54, 0xe0, + 0x44, 0x95, 0x61, 0x6b, 0xb1, 0x12, 0x31, 0x94, 0xb7, 0x9c, 0xfb, 0x42, 0x97, 0x7a, 0xa1, 0x68, + 0x87, 0x68, 0x4b, 0xf3, 0xd7, 0x9c, 0xfb, 0x5c, 0x74, 0x7d, 0x46, 0x2e, 0xa4, 0x6b, 0xce, 0xfd, + 0x7d, 0x7e, 0xe3, 0xca, 0xb8, 0x13, 0x55, 0xde, 0x3e, 0xfb, 0x67, 0xc9, 0x7f, 0x76, 0x0c, 0xd1, + 0xe6, 0x58, 0xab, 0x9e, 0x2f, 0x4c, 0xc1, 0x7d, 0xb6, 0xea, 0xf9, 0xe9, 0x56, 0x3d, 0xbf, 0x40, + 0xab, 0x1e, 0xf3, 0x30, 0x1e, 0x12, 0x77, 0x34, 0xcc, 0x3d, 0x73, 0xe4, 0xe2, 0xc7, 0xfb, 0x6a, + 0x5a, 0x5c, 0xf6, 0xf0, 0xe6, 0xcf, 0x4b, 0x79, 0x5d, 0x94, 0xe6, 0x76, 0x41, 0x36, 0x8d, 0xfe, + 0x9e, 0x05, 0xe3, 0xe2, 0x37, 0x26, 0xef, 0x76, 0x48, 0x14, 0x0b, 0xb9, 0xe0, 0x53, 0x87, 0xe9, + 0x8d, 0x20, 0xc1, 0x3b, 0xf5, 0x31, 0xc9, 0x7e, 0x4d, 0x60, 0x6e, 0xdf, 0x52, 0xfd, 0x41, 0xdf, + 0xb6, 0x60, 0x7a, 0xcb, 0xb9, 0xcf, 0x5b, 0xe4, 0x65, 0xd8, 0x89, 0xbd, 0x40, 0xb8, 0xa0, 0xae, + 0xf4, 0xbb, 0x4e, 0xba, 0x08, 0xf1, 0xee, 0x4a, 0xef, 0xb2, 0xe9, 0x2c, 0x94, 0xdc, 0x4e, 0x67, + 0xf6, 0x70, 0x76, 0x1d, 0x86, 0xe5, 0xc2, 0xcc, 0xd0, 0x94, 0x6a, 0xba, 0xf8, 0xd3, 0xf7, 0x05, + 0x9a, 0xa6, 0x59, 0xb1, 0x76, 0xc4, 0x52, 0x3c, 0xd2, 0x76, 0xde, 0x81, 0x51, 0x7d, 0xdd, 0x1d, + 0x69, 0x5b, 0xef, 0xc2, 0x89, 0x8c, 0x55, 0x75, 0xa4, 0x4d, 0xde, 0x83, 0x87, 0x7b, 0xae, 0x8f, + 0xa3, 0x6c, 0xd8, 0xfe, 0x5d, 0x4b, 0x67, 0x9d, 0xc7, 0x60, 0xb7, 0xba, 0x66, 0xda, 0xad, 0xce, + 0x16, 0xdd, 0x43, 0x3d, 0x8c, 0x57, 0xeb, 0x7a, 0xf7, 0xe9, 0x91, 0x80, 0xd6, 0x60, 0xb0, 0x45, + 0x4b, 0xe4, 0xb5, 0xe1, 0xb9, 0x7e, 0x76, 0x69, 0x22, 0x81, 0xb1, 0xf2, 0x08, 0x0b, 0x5a, 0xf6, + 0xb7, 0x2d, 0xa8, 0xfc, 0x25, 0x86, 0x75, 0x75, 0x91, 0x16, 0xa9, 0x09, 0xe6, 0xb1, 0x73, 0x6f, + 0xf9, 0x7e, 0x4c, 0xfc, 0x88, 0x89, 0xf1, 0x99, 0x43, 0xf4, 0x7f, 0x4a, 0x30, 0x42, 0x9b, 0x92, + 0x9e, 0x32, 0x2f, 0xc3, 0x58, 0xcb, 0xb9, 0x43, 0x5a, 0xd2, 0xe6, 0x9e, 0x56, 0x7a, 0xaf, 0xea, + 0x40, 0x6c, 0xe2, 0xd2, 0xca, 0xeb, 0xfa, 0x95, 0x84, 0x10, 0x92, 0x54, 0x65, 0xe3, 0xbe, 0x02, + 0x9b, 0xb8, 0x54, 0xeb, 0xba, 0xe7, 0xc4, 0xcd, 0x4d, 0xa1, 0x10, 0xab, 0xee, 0xde, 0xa6, 0x85, + 0x98, 0xc3, 0xa8, 0xb0, 0x27, 0x57, 0xec, 0x2d, 0x12, 0x32, 0x61, 0x8f, 0x0b, 0xd5, 0x4a, 0xd8, + 0xc3, 0x26, 0x18, 0xa7, 0xf1, 0xd1, 0x27, 0x60, 0x9c, 0x0e, 0x4e, 0xd0, 0x89, 0xa5, 0x1f, 0xd0, + 0x00, 0xf3, 0x03, 0x62, 0x6e, 0xe4, 0x6b, 0x06, 0x04, 0xa7, 0x30, 0x51, 0x1d, 0xa6, 0x3d, 0xbf, + 0xd9, 0xea, 0xb8, 0xe4, 0xa6, 0xef, 0xf9, 0x5e, 0xec, 0x39, 0x2d, 0xef, 0x3d, 0xe2, 0x0a, 0xb1, + 0x5b, 0xb9, 0x6c, 0xad, 0x66, 0xe0, 0xe0, 0xcc, 0x9a, 0xf6, 0x5b, 0x70, 0xe2, 0x6a, 0xe0, 0xb8, + 0x8b, 0x4e, 0xcb, 0xf1, 0x9b, 0x24, 0x5c, 0xf5, 0x37, 0x72, 0x7d, 0x0a, 0xf4, 0x7b, 0xff, 0x52, + 0xde, 0xbd, 0xbf, 0x1d, 0x02, 0xd2, 0x1b, 0x10, 0x3e, 0x71, 0x6f, 0xc0, 0x90, 0xc7, 0x9b, 0x12, + 0x1b, 0xe1, 0x42, 0x9e, 0x4c, 0xde, 0xd5, 0x47, 0xcd, 0xc7, 0x8b, 0x17, 0x60, 0x49, 0x92, 0x6a, + 0x70, 0x59, 0x42, 0x7c, 0xbe, 0xea, 0x6d, 0xbf, 0x00, 0x53, 0xac, 0x66, 0x9f, 0x8a, 0xdf, 0x5f, + 0xb3, 0x60, 0xe2, 0x7a, 0x2a, 0x00, 0xfa, 0x49, 0x18, 0x8c, 0x48, 0x98, 0x61, 0x59, 0x6d, 0xb0, + 0x52, 0x2c, 0xa0, 0x0f, 0xdc, 0x5a, 0xf3, 0x6b, 0x25, 0xa8, 0x32, 0xa7, 0xec, 0x36, 0x55, 0xe2, + 0x8e, 0x5e, 0x5e, 0xbe, 0x66, 0xc8, 0xcb, 0x39, 0x16, 0x03, 0xd5, 0xb1, 0x5e, 0xe2, 0x32, 0xba, + 0xa9, 0x02, 0x83, 0x0b, 0x19, 0x0b, 0x12, 0x82, 0x3c, 0x78, 0x74, 0xdc, 0x8c, 0x23, 0x96, 0x41, + 0xc3, 0xec, 0x02, 0x5f, 0xe1, 0x7e, 0xe0, 0x2e, 0xf0, 0x55, 0xcf, 0x7a, 0x70, 0xc9, 0xba, 0xd6, + 0x79, 0x76, 0x8e, 0xfc, 0x1c, 0x73, 0xb5, 0x65, 0x7b, 0x58, 0xc5, 0xd7, 0xcf, 0x09, 0xd7, 0x59, + 0x51, 0xba, 0xcf, 0x18, 0x9e, 0xf8, 0xc7, 0xd3, 0x27, 0x24, 0x55, 0xec, 0xcb, 0x30, 0x91, 0x1a, + 0x3a, 0xf4, 0x02, 0x0c, 0xb4, 0x37, 0x9d, 0x88, 0xa4, 0x9c, 0x9e, 0x06, 0xea, 0xb4, 0x70, 0x7f, + 0x77, 0x6e, 0x5c, 0x55, 0x60, 0x25, 0x98, 0x63, 0xdb, 0x9f, 0x2b, 0x41, 0xe5, 0x7a, 0xe0, 0x1e, + 0xc7, 0x52, 0xbb, 0x6c, 0x2c, 0xb5, 0x27, 0xf3, 0xf3, 0xb5, 0xf4, 0x5c, 0x65, 0xf5, 0xd4, 0x2a, + 0x3b, 0x5b, 0x80, 0xd6, 0xc1, 0x0b, 0x6c, 0x0b, 0x46, 0x58, 0x3e, 0x18, 0xe1, 0x94, 0xf5, 0x9c, + 0xa1, 0xe2, 0xcd, 0xa5, 0x54, 0xbc, 0x09, 0x0d, 0x55, 0x53, 0xf4, 0x9e, 0x82, 0x21, 0xe1, 0x04, + 0x94, 0x76, 0x34, 0x16, 0xb8, 0x58, 0xc2, 0xed, 0x7f, 0x51, 0x06, 0x23, 0xff, 0x0c, 0xfa, 0x7d, + 0x0b, 0xe6, 0x43, 0x1e, 0xb4, 0xe5, 0xd6, 0x3a, 0xa1, 0xe7, 0x6f, 0x34, 0x9a, 0x9b, 0xc4, 0xed, + 0xb4, 0x3c, 0x7f, 0x63, 0x75, 0xc3, 0x0f, 0x54, 0xf1, 0xf2, 0x7d, 0xd2, 0xec, 0x30, 0x9b, 0x7b, + 0xe1, 0xb4, 0x37, 0xea, 0x02, 0xfc, 0xe2, 0xde, 0xee, 0xdc, 0x3c, 0xee, 0xab, 0x15, 0xdc, 0x67, + 0xaf, 0xd0, 0x0f, 0x2d, 0x38, 0xcf, 0x33, 0xb0, 0x14, 0xff, 0x92, 0x42, 0xaa, 0x71, 0x5d, 0x12, + 0x4d, 0xc8, 0xad, 0x91, 0x70, 0x6b, 0xf1, 0x45, 0x31, 0xc8, 0xe7, 0xeb, 0xfd, 0xb5, 0x8a, 0xfb, + 0xed, 0xa6, 0xfd, 0xaf, 0xcb, 0x30, 0x46, 0xc7, 0x33, 0x49, 0xa1, 0xf0, 0x82, 0xb1, 0x4c, 0x1e, + 0x4b, 0x2d, 0x93, 0x29, 0x03, 0xf9, 0xc1, 0x64, 0x4f, 0x88, 0x60, 0xaa, 0xe5, 0x44, 0xf1, 0x65, + 0xe2, 0x84, 0xf1, 0x1d, 0xe2, 0xb0, 0x7b, 0xe6, 0xb4, 0x0f, 0x4b, 0x81, 0xab, 0x6b, 0x65, 0x84, + 0xbb, 0x9a, 0x26, 0x86, 0xbb, 0xe9, 0xa3, 0x6d, 0x40, 0xec, 0x4e, 0x3b, 0x74, 0xfc, 0x88, 0x7f, + 0x8b, 0x27, 0x6c, 0xf4, 0xfd, 0xb5, 0x3a, 0x2b, 0x5a, 0x45, 0x57, 0xbb, 0xa8, 0xe1, 0x8c, 0x16, + 0x34, 0xaf, 0x85, 0x81, 0xa2, 0x5e, 0x0b, 0x83, 0x39, 0x1e, 0xfe, 0xbf, 0x62, 0xc1, 0x09, 0x3a, + 0x2d, 0xa6, 0x37, 0x78, 0x84, 0x02, 0x98, 0xa0, 0xcb, 0xae, 0x45, 0x62, 0x59, 0x26, 0xf6, 0x57, + 0x8e, 0x88, 0x6f, 0xd2, 0x49, 0xe4, 0xc8, 0x2b, 0x26, 0x31, 0x9c, 0xa6, 0x6e, 0x7f, 0xcd, 0x02, + 0xe6, 0x3d, 0x79, 0x0c, 0x87, 0xd9, 0x25, 0xf3, 0x30, 0xb3, 0xf3, 0x39, 0x46, 0x8f, 0x73, 0xec, + 0x79, 0x98, 0xa4, 0xd0, 0x7a, 0x18, 0xdc, 0xdf, 0x91, 0x12, 0x7f, 0xbe, 0x74, 0xf5, 0x2b, 0x25, + 0xbe, 0x6d, 0x54, 0xf4, 0x29, 0xfa, 0xbc, 0x05, 0xc3, 0x4d, 0xa7, 0xed, 0x34, 0x79, 0xf6, 0xae, + 0x02, 0x66, 0x22, 0xa3, 0xfe, 0xfc, 0x92, 0xa8, 0xcb, 0x4d, 0x1c, 0x1f, 0x95, 0x9f, 0x2e, 0x8b, + 0x73, 0xcd, 0x1a, 0xaa, 0xf1, 0xd9, 0xbb, 0x30, 0x66, 0x10, 0x3b, 0x52, 0x7d, 0xf8, 0xf3, 0x16, + 0x67, 0xfa, 0x4a, 0x67, 0xb9, 0x07, 0x53, 0xbe, 0xf6, 0x9f, 0xb2, 0x33, 0x29, 0x50, 0xcf, 0x17, + 0x67, 0xeb, 0x8c, 0x0b, 0x6a, 0x9e, 0xa2, 0x29, 0x82, 0xb8, 0xbb, 0x0d, 0xfb, 0x37, 0x2c, 0x78, + 0x48, 0x47, 0xd4, 0xc2, 0x85, 0xf3, 0x0c, 0xd8, 0x35, 0x18, 0x0e, 0xda, 0x24, 0x74, 0x12, 0xfd, + 0xec, 0xac, 0x1c, 0xff, 0x1b, 0xa2, 0x7c, 0x7f, 0x77, 0x6e, 0x5a, 0xa7, 0x2e, 0xcb, 0xb1, 0xaa, + 0x89, 0x6c, 0x18, 0x64, 0xe3, 0x12, 0x89, 0x40, 0x6f, 0x96, 0xcd, 0x8a, 0x5d, 0x90, 0x45, 0x58, + 0x40, 0xec, 0xbf, 0x69, 0xf1, 0xe5, 0xa6, 0x77, 0x1d, 0xfd, 0x02, 0x4c, 0x6e, 0x51, 0x55, 0x6e, + 0xf9, 0x7e, 0x3b, 0xe4, 0xe6, 0x77, 0x39, 0x62, 0x2f, 0x14, 0x1f, 0x31, 0xed, 0x73, 0x17, 0x67, + 0x44, 0xef, 0x27, 0xaf, 0xa5, 0xc8, 0xe2, 0xae, 0x86, 0xec, 0x7f, 0x50, 0xe2, 0x7b, 0x96, 0xc9, + 0x70, 0x4f, 0xc1, 0x50, 0x3b, 0x70, 0x97, 0x56, 0x6b, 0x58, 0x8c, 0x95, 0x62, 0x3a, 0x75, 0x5e, + 0x8c, 0x25, 0x1c, 0x5d, 0x04, 0x20, 0xf7, 0x63, 0x12, 0xfa, 0x4e, 0x4b, 0x5d, 0xe9, 0x2b, 0x51, + 0x69, 0x59, 0x41, 0xb0, 0x86, 0x45, 0xeb, 0xb4, 0xc3, 0x60, 0xdb, 0x73, 0x59, 0x9c, 0x4b, 0xd9, + 0xac, 0x53, 0x57, 0x10, 0xac, 0x61, 0x51, 0x05, 0xba, 0xe3, 0x47, 0xfc, 0x18, 0x73, 0xee, 0x88, + 0x4c, 0x4a, 0xc3, 0x89, 0x02, 0x7d, 0x53, 0x07, 0x62, 0x13, 0x17, 0x5d, 0x81, 0xc1, 0xd8, 0x61, + 0x17, 0xd5, 0x03, 0x45, 0xbc, 0x7e, 0xd6, 0x28, 0xae, 0x9e, 0xba, 0x8a, 0x56, 0xc5, 0x82, 0x84, + 0xfd, 0x9f, 0xaa, 0x00, 0x89, 0xd4, 0x85, 0x3e, 0xd7, 0xbd, 0xe1, 0x3f, 0x56, 0x54, 0x64, 0x7b, + 0x70, 0xbb, 0x1d, 0x7d, 0xc9, 0x82, 0x11, 0xa7, 0xd5, 0x0a, 0x9a, 0x4e, 0xcc, 0x86, 0xa7, 0x54, + 0x94, 0xf5, 0x88, 0x9e, 0x2c, 0x24, 0x75, 0x79, 0x67, 0x9e, 0x93, 0x97, 0xc7, 0x1a, 0x24, 0xb7, + 0x3f, 0x7a, 0x17, 0xd0, 0x47, 0xa5, 0xd4, 0xce, 0x67, 0x78, 0x36, 0x2d, 0xb5, 0x57, 0x19, 0xc3, + 0xd5, 0x04, 0x76, 0xf4, 0x96, 0x91, 0x79, 0xa8, 0x52, 0x24, 0x58, 0xd9, 0x90, 0x43, 0xf2, 0x92, + 0x0e, 0xa1, 0xd7, 0x75, 0xf7, 0xf8, 0x81, 0x22, 0xd9, 0x00, 0x34, 0x71, 0x38, 0xc7, 0x35, 0x3e, + 0x86, 0x09, 0xd7, 0x3c, 0x79, 0x85, 0x8b, 0xdf, 0x85, 0xfc, 0x16, 0x52, 0x47, 0x76, 0x72, 0xd6, + 0xa6, 0x00, 0x38, 0xdd, 0x04, 0x7a, 0x9d, 0x07, 0x2f, 0xac, 0xfa, 0xeb, 0x81, 0x70, 0xf3, 0x3b, + 0x57, 0x60, 0xce, 0x77, 0xa2, 0x98, 0x6c, 0xd1, 0x3a, 0xc9, 0xe1, 0x7a, 0x5d, 0x50, 0xc1, 0x8a, + 0x1e, 0x5a, 0x83, 0x41, 0x16, 0x9b, 0x16, 0xcd, 0x0c, 0x17, 0x31, 0x09, 0x9a, 0x21, 0xd9, 0xc9, + 0xfe, 0x61, 0x7f, 0x23, 0x2c, 0x68, 0xa1, 0xcb, 0x32, 0x29, 0x43, 0xb4, 0xea, 0xdf, 0x8c, 0x08, + 0x4b, 0xca, 0x50, 0x5d, 0xfc, 0x48, 0x92, 0x65, 0x81, 0x97, 0x67, 0xa6, 0x6b, 0x34, 0x6a, 0x52, + 0xc1, 0x46, 0xfc, 0x97, 0x59, 0x20, 0x67, 0xa0, 0x48, 0x47, 0xcd, 0x9c, 0x91, 0xc9, 0x60, 0xdf, + 0x32, 0x89, 0xe1, 0x34, 0xf5, 0x63, 0x3d, 0x52, 0x67, 0x7d, 0x98, 0x4c, 0x6f, 0xca, 0x23, 0x3d, + 0xc2, 0x7f, 0x5c, 0x81, 0x71, 0x73, 0x71, 0xa0, 0xf3, 0x50, 0x15, 0x44, 0x54, 0x8a, 0x37, 0xb5, + 0x07, 0xae, 0x49, 0x00, 0x4e, 0x70, 0x58, 0xb2, 0x3b, 0x56, 0x5d, 0x73, 0xf0, 0x4a, 0x92, 0xdd, + 0x29, 0x08, 0xd6, 0xb0, 0xa8, 0x24, 0x7c, 0x27, 0x08, 0x62, 0x75, 0x12, 0xa8, 0x75, 0xb3, 0xc8, + 0x4a, 0xb1, 0x80, 0xd2, 0x13, 0xe0, 0x2e, 0x9d, 0xcc, 0x96, 0x69, 0xde, 0x54, 0x27, 0xc0, 0x15, + 0x1d, 0x88, 0x4d, 0x5c, 0x7a, 0xa2, 0x05, 0x11, 0x5b, 0x88, 0x42, 0xde, 0x4e, 0x1c, 0xe6, 0x1a, + 0x3c, 0x5e, 0x53, 0xc2, 0xd1, 0xa7, 0xe1, 0x21, 0x15, 0x5e, 0x89, 0xb9, 0xb9, 0x58, 0xb6, 0x38, + 0x68, 0xa8, 0xcc, 0x0f, 0x2d, 0x65, 0xa3, 0xe1, 0x5e, 0xf5, 0xd1, 0x2b, 0x30, 0x2e, 0x64, 0x65, + 0x49, 0x71, 0xc8, 0xf4, 0x7b, 0xb8, 0x62, 0x40, 0x71, 0x0a, 0x1b, 0xd5, 0x60, 0x92, 0x96, 0x30, + 0x21, 0x55, 0x52, 0xe0, 0x61, 0xa2, 0xea, 0xa8, 0xbf, 0x92, 0x82, 0xe3, 0xae, 0x1a, 0x68, 0x01, + 0x26, 0xb8, 0xb0, 0x42, 0x15, 0x43, 0x36, 0x0f, 0xc2, 0x37, 0x57, 0x6d, 0x84, 0x1b, 0x26, 0x18, + 0xa7, 0xf1, 0xd1, 0x4b, 0x30, 0xea, 0x84, 0xcd, 0x4d, 0x2f, 0x26, 0xcd, 0xb8, 0x13, 0xf2, 0x94, + 0x27, 0x9a, 0xe3, 0xc8, 0x82, 0x06, 0xc3, 0x06, 0xa6, 0xfd, 0x1e, 0x9c, 0xc8, 0x08, 0x04, 0xa0, + 0x0b, 0xc7, 0x69, 0x7b, 0xf2, 0x9b, 0x52, 0xae, 0x6f, 0x0b, 0xf5, 0x55, 0xf9, 0x35, 0x1a, 0x16, + 0x5d, 0x9d, 0xcc, 0x4e, 0xae, 0x25, 0x6d, 0x55, 0xab, 0x73, 0x45, 0x02, 0x70, 0x82, 0x63, 0xff, + 0x29, 0x80, 0x66, 0xbd, 0x29, 0xe0, 0xee, 0xf4, 0x12, 0x8c, 0xca, 0x3c, 0xc4, 0x5a, 0x32, 0x4f, + 0xf5, 0x99, 0x97, 0x34, 0x18, 0x36, 0x30, 0x69, 0xdf, 0x7c, 0x69, 0x93, 0x4a, 0x3b, 0xda, 0x29, + 0x63, 0x15, 0x4e, 0x70, 0xd0, 0x39, 0x18, 0x8e, 0x48, 0x6b, 0xfd, 0xaa, 0xe7, 0xdf, 0x15, 0x0b, + 0x5b, 0x71, 0xe6, 0x86, 0x28, 0xc7, 0x0a, 0x03, 0x2d, 0x42, 0xb9, 0xe3, 0xb9, 0x62, 0x29, 0x4b, + 0xb1, 0xa1, 0x7c, 0x73, 0xb5, 0xb6, 0xbf, 0x3b, 0xf7, 0x58, 0xaf, 0xf4, 0xca, 0x54, 0x3f, 0x8f, + 0xe6, 0xe9, 0xf6, 0xa3, 0x95, 0xb3, 0x2e, 0x0c, 0x06, 0xfb, 0xbc, 0x30, 0xb8, 0x08, 0x20, 0xbe, + 0x5a, 0xae, 0xe5, 0x72, 0x32, 0x6b, 0x97, 0x14, 0x04, 0x6b, 0x58, 0x54, 0xcb, 0x6f, 0x86, 0xc4, + 0x91, 0x8a, 0x30, 0x77, 0x50, 0x1f, 0x3e, 0xbc, 0x96, 0xbf, 0x94, 0x26, 0x86, 0xbb, 0xe9, 0xa3, + 0x00, 0xa6, 0x5c, 0x11, 0xc3, 0x9b, 0x34, 0x5a, 0xed, 0xdf, 0x2b, 0x9e, 0xf9, 0xf6, 0xa4, 0x09, + 0xe1, 0x6e, 0xda, 0xe8, 0x4d, 0x98, 0x95, 0x85, 0xdd, 0x01, 0xd4, 0x6c, 0xbb, 0x94, 0x17, 0x4f, + 0xef, 0xed, 0xce, 0xcd, 0xd6, 0x7a, 0x62, 0xe1, 0x03, 0x28, 0xa0, 0x37, 0x60, 0x90, 0x5d, 0x30, + 0x45, 0x33, 0x23, 0xec, 0xc4, 0x7b, 0xbe, 0x48, 0x6c, 0x05, 0x5d, 0xf5, 0xf3, 0xec, 0x9a, 0x4a, + 0x78, 0x0d, 0x27, 0xb7, 0x76, 0xac, 0x10, 0x0b, 0x9a, 0xa8, 0x0d, 0x23, 0x8e, 0xef, 0x07, 0xb1, + 0xc3, 0x05, 0xb1, 0xd1, 0x22, 0xb2, 0xa4, 0xd6, 0xc4, 0x42, 0x52, 0x97, 0xb7, 0xa3, 0x1c, 0x11, + 0x35, 0x08, 0xd6, 0x9b, 0x40, 0xf7, 0x60, 0x22, 0xb8, 0x47, 0x19, 0xa6, 0xbc, 0x11, 0x89, 0x66, + 0xc6, 0xcc, 0x0f, 0xcb, 0x31, 0xd4, 0x1a, 0x95, 0x35, 0x4e, 0x66, 0x12, 0xc5, 0xe9, 0x56, 0xd0, + 0xbc, 0x61, 0xae, 0x1e, 0x4f, 0x7c, 0xe3, 0x13, 0x73, 0xb5, 0x6e, 0x9d, 0x66, 0x41, 0xfa, 0xdc, + 0x1f, 0x96, 0x71, 0x84, 0x89, 0x54, 0x90, 0x7e, 0x02, 0xc2, 0x3a, 0x1e, 0xda, 0x84, 0xd1, 0xe4, + 0x6e, 0x2b, 0x8c, 0x58, 0xfe, 0x1f, 0xcd, 0xdd, 0xeb, 0xe0, 0x8f, 0x5b, 0xd5, 0x6a, 0xf2, 0x48, + 0x1f, 0xbd, 0x04, 0x1b, 0x94, 0x67, 0x3f, 0x0e, 0x23, 0xda, 0x14, 0xf7, 0xe3, 0xee, 0x3d, 0xfb, + 0x0a, 0x4c, 0xa6, 0xa7, 0xae, 0x2f, 0x77, 0xf1, 0xff, 0x51, 0x82, 0x89, 0x8c, 0x8b, 0x2d, 0x96, + 0x8d, 0x39, 0xc5, 0x64, 0x93, 0xe4, 0xcb, 0x26, 0xab, 0x2c, 0x15, 0x60, 0x95, 0x92, 0x6f, 0x97, + 0x7b, 0xf2, 0x6d, 0xc1, 0x1e, 0x2b, 0xef, 0x87, 0x3d, 0x9a, 0x27, 0xd2, 0x40, 0xa1, 0x13, 0xe9, + 0x01, 0xb0, 0x54, 0xe3, 0x50, 0x1b, 0x2a, 0x70, 0xa8, 0x7d, 0xb5, 0x04, 0x93, 0x89, 0x6b, 0xbc, + 0x48, 0x83, 0x7e, 0xf4, 0x17, 0x1e, 0x6b, 0xc6, 0x85, 0x47, 0x5e, 0x96, 0xf3, 0x54, 0xff, 0x7a, + 0x5e, 0x7e, 0xbc, 0x91, 0xba, 0xfc, 0x78, 0xbe, 0x4f, 0xba, 0x07, 0x5f, 0x84, 0x7c, 0xab, 0x04, + 0x27, 0xd3, 0x55, 0x96, 0x5a, 0x8e, 0xb7, 0x75, 0x0c, 0xe3, 0xf5, 0x69, 0x63, 0xbc, 0x5e, 0xec, + 0xef, 0xbb, 0x58, 0x27, 0x7b, 0x0e, 0x9a, 0x93, 0x1a, 0xb4, 0x8f, 0x1f, 0x86, 0xf8, 0xc1, 0x23, + 0xf7, 0x47, 0x16, 0x3c, 0x9c, 0x59, 0xef, 0x18, 0x4c, 0xbc, 0xaf, 0x99, 0x26, 0xde, 0xe7, 0x0e, + 0xf1, 0x75, 0x3d, 0x6c, 0xbe, 0xbf, 0x59, 0xee, 0xf1, 0x55, 0xcc, 0x08, 0x76, 0x03, 0x46, 0x9c, + 0x66, 0x93, 0x44, 0xd1, 0xb5, 0xc0, 0x55, 0x89, 0xc5, 0x9e, 0x65, 0xa7, 0x58, 0x52, 0xbc, 0xbf, + 0x3b, 0x37, 0x9b, 0x26, 0x91, 0x80, 0xb1, 0x4e, 0xc1, 0x4c, 0x79, 0x58, 0x3a, 0xa2, 0x94, 0x87, + 0x17, 0x01, 0xb6, 0x95, 0xbe, 0x9c, 0xb6, 0xad, 0x69, 0x9a, 0xb4, 0x86, 0x85, 0xfe, 0x0a, 0x93, + 0x3d, 0xb9, 0x5f, 0x4a, 0xc5, 0x8c, 0xb2, 0xcd, 0x99, 0x3f, 0xdd, 0xc7, 0x85, 0x07, 0xf3, 0x2a, + 0x3b, 0xa4, 0x22, 0x89, 0x3e, 0x05, 0x93, 0x11, 0xcf, 0x49, 0xb1, 0xd4, 0x72, 0x22, 0x16, 0x13, + 0x22, 0xf8, 0x29, 0x8b, 0xcb, 0x6d, 0xa4, 0x60, 0xb8, 0x0b, 0xdb, 0xfe, 0x66, 0x19, 0x3e, 0x7c, + 0xc0, 0xb2, 0x45, 0x0b, 0xe6, 0xfd, 0xf0, 0x33, 0x69, 0x4b, 0xd3, 0x6c, 0x66, 0x65, 0xc3, 0xf4, + 0x94, 0x9a, 0xed, 0xd2, 0xfb, 0x9e, 0xed, 0x2f, 0xeb, 0x76, 0x41, 0xee, 0xaa, 0x7a, 0xe9, 0xd0, + 0x1b, 0xf3, 0x27, 0xf5, 0x5a, 0xe0, 0xb3, 0x16, 0x3c, 0x96, 0xf9, 0x59, 0x86, 0x3f, 0xca, 0x79, + 0xa8, 0x36, 0x69, 0xa1, 0x16, 0xc1, 0x95, 0x84, 0x4e, 0x4a, 0x00, 0x4e, 0x70, 0x0c, 0xb7, 0x93, + 0x52, 0xae, 0xdb, 0xc9, 0x1f, 0x58, 0x30, 0x9d, 0xee, 0xc4, 0x31, 0xf0, 0xad, 0x86, 0xc9, 0xb7, + 0xe6, 0xfb, 0x9b, 0xfc, 0x1e, 0x2c, 0xeb, 0xab, 0x93, 0x70, 0xaa, 0xeb, 0xd4, 0xe3, 0xa3, 0xf8, + 0x4b, 0x16, 0x4c, 0x6d, 0x30, 0x3d, 0x41, 0x0b, 0x93, 0x13, 0xdf, 0x95, 0x13, 0x5b, 0x78, 0x60, + 0x74, 0x1d, 0xd7, 0x7a, 0xba, 0x50, 0x70, 0x77, 0x63, 0xe8, 0x8b, 0x16, 0x4c, 0x3b, 0xf7, 0xa2, + 0xae, 0x47, 0x7a, 0xc4, 0x42, 0x7a, 0x25, 0xc7, 0x2c, 0x97, 0xf3, 0xbc, 0xcf, 0xe2, 0xcc, 0xde, + 0xee, 0xdc, 0x74, 0x16, 0x16, 0xce, 0x6c, 0x95, 0xce, 0xef, 0xa6, 0x08, 0x97, 0x29, 0x16, 0xf0, + 0x99, 0x15, 0x5c, 0xc3, 0xd9, 0x9a, 0x84, 0x60, 0x45, 0x11, 0xbd, 0x0d, 0xd5, 0x0d, 0x19, 0x19, + 0x97, 0x66, 0x9b, 0x3d, 0x86, 0x39, 0x2b, 0x90, 0x8e, 0x87, 0x2b, 0x28, 0x10, 0x4e, 0x88, 0xa2, + 0xcb, 0x50, 0xf6, 0xd7, 0x23, 0x11, 0x83, 0x9e, 0xe7, 0x6d, 0x64, 0xfa, 0x78, 0xf1, 0xb0, 0xdd, + 0xeb, 0x2b, 0x0d, 0x4c, 0x49, 0x50, 0x4a, 0xe1, 0x1d, 0x57, 0xd8, 0xa3, 0x73, 0x28, 0xe1, 0xc5, + 0x5a, 0x37, 0x25, 0xbc, 0x58, 0xc3, 0x94, 0x04, 0xaa, 0xc3, 0x00, 0x0b, 0xc6, 0x11, 0xc6, 0xe6, + 0x9c, 0x44, 0x05, 0x5d, 0x21, 0x47, 0x3c, 0x33, 0x27, 0x2b, 0xc6, 0x9c, 0x10, 0x5a, 0x83, 0xc1, + 0x26, 0x7b, 0x5c, 0x42, 0x58, 0x01, 0xf2, 0x52, 0x78, 0x74, 0x3d, 0x44, 0xc1, 0x6f, 0xd8, 0x78, + 0x39, 0x16, 0xb4, 0x18, 0x55, 0xd2, 0xde, 0x5c, 0x8f, 0x84, 0x9a, 0x9f, 0x47, 0xb5, 0xeb, 0x99, + 0x10, 0x41, 0x95, 0x95, 0x63, 0x41, 0x0b, 0xd5, 0xa0, 0xb4, 0xde, 0x14, 0xb1, 0x3a, 0x39, 0x46, + 0x66, 0x33, 0x06, 0x7b, 0x71, 0x70, 0x6f, 0x77, 0xae, 0xb4, 0xb2, 0x84, 0x4b, 0xeb, 0x4d, 0xf4, + 0x1a, 0x0c, 0xad, 0xf3, 0xa8, 0x5a, 0x91, 0xcc, 0xf7, 0x42, 0x5e, 0xe8, 0x6f, 0x57, 0x08, 0x2e, + 0x0f, 0x49, 0x11, 0x00, 0x2c, 0xc9, 0xb1, 0x3c, 0x87, 0x2a, 0x4e, 0x58, 0x64, 0xf3, 0x9d, 0xef, + 0x2f, 0xae, 0x58, 0x68, 0xbf, 0xaa, 0x14, 0x6b, 0x14, 0xe9, 0x9a, 0x77, 0xe4, 0x3b, 0x39, 0x2c, + 0x93, 0x6f, 0xee, 0x9a, 0xcf, 0x7c, 0x56, 0x87, 0xaf, 0x79, 0x05, 0xc2, 0x09, 0x51, 0xd4, 0x81, + 0xb1, 0xed, 0xa8, 0xbd, 0x49, 0xe4, 0xd6, 0x67, 0xe9, 0x7d, 0x47, 0x2e, 0x7e, 0x32, 0x27, 0x67, + 0xb3, 0xa8, 0xe2, 0x85, 0x71, 0xc7, 0x69, 0x75, 0x71, 0x30, 0x96, 0x58, 0xee, 0x96, 0x4e, 0x16, + 0x9b, 0xad, 0xd0, 0x29, 0x79, 0xb7, 0x13, 0xdc, 0xd9, 0x89, 0x89, 0x48, 0xff, 0x9b, 0x33, 0x25, + 0xaf, 0x72, 0xe4, 0xee, 0x29, 0x11, 0x00, 0x2c, 0xc9, 0xa9, 0x21, 0x63, 0xdc, 0x78, 0xb2, 0xf0, + 0x90, 0x75, 0x7d, 0x43, 0x32, 0x64, 0x8c, 0xfb, 0x26, 0x44, 0x19, 0xd7, 0x6d, 0x6f, 0x06, 0x71, + 0xe0, 0xa7, 0x78, 0xff, 0x54, 0x11, 0xae, 0x5b, 0xcf, 0xa8, 0xd9, 0xcd, 0x75, 0xb3, 0xb0, 0x70, + 0x66, 0xab, 0xc8, 0x87, 0xf1, 0x76, 0x10, 0xc6, 0xf7, 0x82, 0x50, 0xae, 0x43, 0x54, 0x48, 0x47, + 0x34, 0xea, 0x88, 0xb6, 0x99, 0xe7, 0xb1, 0x09, 0xc1, 0x29, 0xea, 0x74, 0xea, 0xa2, 0xa6, 0xd3, + 0x22, 0xab, 0x37, 0x66, 0x4e, 0x14, 0x99, 0xba, 0x06, 0x47, 0xee, 0x9e, 0x3a, 0x01, 0xc0, 0x92, + 0x1c, 0xe5, 0x75, 0x2c, 0x97, 0x3d, 0xcb, 0x66, 0x9c, 0xcb, 0xeb, 0xba, 0xbc, 0x73, 0x39, 0xaf, + 0x63, 0xc5, 0x98, 0x13, 0x42, 0xef, 0x40, 0x55, 0x08, 0xb7, 0x41, 0x34, 0x73, 0x92, 0x51, 0xfd, + 0xd9, 0x9c, 0xde, 0x72, 0xf4, 0x1b, 0x8d, 0xec, 0x53, 0x5f, 0x44, 0xff, 0x49, 0x24, 0x9c, 0x90, + 0xb7, 0x7f, 0x63, 0xb0, 0x5b, 0xec, 0x61, 0x8a, 0xcd, 0xdf, 0xe8, 0xbe, 0xb1, 0xfe, 0x54, 0xff, + 0xfa, 0xfb, 0x03, 0xbc, 0xbb, 0xfe, 0xa2, 0x05, 0xa7, 0xda, 0x99, 0x9f, 0x27, 0x04, 0x87, 0x7e, + 0xcd, 0x00, 0x7c, 0x68, 0x54, 0x8e, 0xf1, 0x6c, 0x38, 0xee, 0xd1, 0x66, 0x5a, 0x15, 0x28, 0xbf, + 0x6f, 0x55, 0xe0, 0x36, 0x0c, 0x33, 0xd9, 0x35, 0xc9, 0xef, 0xd3, 0x67, 0x2a, 0x1c, 0x26, 0x82, + 0x2c, 0x09, 0x12, 0x58, 0x11, 0xa3, 0x03, 0xf7, 0x68, 0xfa, 0x23, 0x30, 0x61, 0x60, 0x91, 0xd9, + 0x92, 0xeb, 0x59, 0x2b, 0x62, 0x24, 0x1e, 0xad, 0x1f, 0x84, 0xbc, 0x9f, 0x87, 0x80, 0x0f, 0x6e, + 0x0c, 0xd5, 0x32, 0x14, 0xbd, 0x41, 0xf3, 0x7a, 0x2a, 0x5f, 0xd9, 0x3b, 0x5e, 0x05, 0xe5, 0x1f, + 0x5a, 0x19, 0xf2, 0x34, 0x57, 0x2a, 0x3f, 0x69, 0x2a, 0x95, 0x4f, 0xa6, 0x95, 0xca, 0x2e, 0x53, + 0x92, 0xa1, 0x4f, 0x16, 0xcf, 0xcc, 0x5b, 0x34, 0x81, 0x91, 0xdd, 0x82, 0x33, 0x79, 0xcc, 0x9a, + 0xb9, 0xac, 0xb9, 0xea, 0xb2, 0x36, 0x71, 0x59, 0x73, 0x57, 0x6b, 0x98, 0x41, 0x8a, 0xe6, 0xc0, + 0xb0, 0x7f, 0xb9, 0x04, 0xe5, 0x7a, 0xe0, 0x1e, 0x83, 0x69, 0xec, 0x92, 0x61, 0x1a, 0x7b, 0x22, + 0xf7, 0xa1, 0xc8, 0x9e, 0x86, 0xb0, 0x1b, 0x29, 0x43, 0xd8, 0xcf, 0xe4, 0x93, 0x3a, 0xd8, 0xec, + 0xf5, 0xed, 0x32, 0xe8, 0x4f, 0x5d, 0xa2, 0xff, 0x70, 0x18, 0x4f, 0xe6, 0x72, 0xb1, 0xd7, 0x2f, + 0x45, 0x1b, 0xcc, 0xe3, 0x4d, 0x06, 0x62, 0xfe, 0xc4, 0x3a, 0x34, 0xdf, 0x26, 0xde, 0xc6, 0x66, + 0x4c, 0xdc, 0xf4, 0x87, 0x1d, 0x9f, 0x43, 0xf3, 0x5f, 0x58, 0x30, 0x91, 0x6a, 0x1d, 0xb5, 0xb2, + 0x22, 0xb8, 0x0e, 0x69, 0xec, 0x9a, 0xca, 0x0d, 0xf9, 0x9a, 0x07, 0x50, 0x77, 0x16, 0xd2, 0xa0, + 0xc4, 0x64, 0x6b, 0x75, 0xa9, 0x11, 0x61, 0x0d, 0x03, 0xbd, 0x00, 0x23, 0x71, 0xd0, 0x0e, 0x5a, + 0xc1, 0xc6, 0xce, 0x15, 0x22, 0xb3, 0xb3, 0xa8, 0x9b, 0xa5, 0xb5, 0x04, 0x84, 0x75, 0x3c, 0xfb, + 0x3b, 0x65, 0x48, 0x3f, 0x94, 0xfa, 0xff, 0xd7, 0xe9, 0x4f, 0xce, 0x3a, 0xfd, 0x63, 0x0b, 0x26, + 0x69, 0xeb, 0xcc, 0xc5, 0x48, 0x3a, 0x1e, 0xab, 0x67, 0x42, 0xac, 0x03, 0x9e, 0x09, 0x79, 0x92, + 0x72, 0x3b, 0x37, 0xe8, 0xc4, 0xc2, 0x04, 0xa6, 0x31, 0x31, 0x5a, 0x8a, 0x05, 0x54, 0xe0, 0x91, + 0x30, 0x14, 0x11, 0x5a, 0x3a, 0x1e, 0x09, 0x43, 0x2c, 0xa0, 0xf2, 0x15, 0x91, 0x4a, 0x8f, 0x57, + 0x44, 0x58, 0x7e, 0x33, 0xe1, 0xd6, 0x22, 0xc4, 0x0a, 0x2d, 0xbf, 0x99, 0xf4, 0x77, 0x49, 0x70, + 0xec, 0xaf, 0x97, 0x61, 0xb4, 0x1e, 0xb8, 0x49, 0x44, 0xc1, 0xf3, 0x46, 0x44, 0xc1, 0x99, 0x54, + 0x44, 0xc1, 0xa4, 0x8e, 0xfb, 0x60, 0x02, 0x0a, 0x44, 0x1e, 0x3c, 0xf6, 0xce, 0xcd, 0x21, 0x83, + 0x09, 0x8c, 0x3c, 0x78, 0x8a, 0x10, 0x36, 0xe9, 0xfe, 0x34, 0x05, 0x11, 0xfc, 0x6f, 0x0b, 0xc6, + 0xeb, 0x81, 0x4b, 0x17, 0xe8, 0x4f, 0xd3, 0x6a, 0xd4, 0xb3, 0xe7, 0x0d, 0x1e, 0x90, 0x3d, 0xef, + 0x9f, 0x5b, 0x30, 0x54, 0x0f, 0xdc, 0x63, 0x30, 0x0f, 0xaf, 0x98, 0xe6, 0xe1, 0xc7, 0x72, 0x39, + 0x6f, 0x0f, 0x8b, 0xf0, 0x37, 0xcb, 0x30, 0x46, 0x7b, 0x1c, 0x6c, 0xc8, 0xf9, 0x32, 0xc6, 0xc6, + 0x2a, 0x30, 0x36, 0x54, 0x24, 0x0c, 0x5a, 0xad, 0xe0, 0x5e, 0x7a, 0xee, 0x56, 0x58, 0x29, 0x16, + 0x50, 0x74, 0x0e, 0x86, 0xdb, 0x21, 0xd9, 0xf6, 0x82, 0x4e, 0x94, 0x8e, 0xf6, 0xac, 0x8b, 0x72, + 0xac, 0x30, 0xd0, 0xf3, 0x30, 0x1a, 0x79, 0x7e, 0x93, 0x48, 0xa7, 0x97, 0x0a, 0x73, 0x7a, 0xe1, + 0x89, 0x4a, 0xb5, 0x72, 0x6c, 0x60, 0xa1, 0xdb, 0x50, 0x65, 0xff, 0xd9, 0x0e, 0xea, 0xff, 0x19, + 0x10, 0xae, 0x0e, 0x4b, 0x02, 0x38, 0xa1, 0x85, 0x2e, 0x02, 0xc4, 0xd2, 0x3d, 0x27, 0x12, 0x61, + 0xc9, 0x4a, 0x2e, 0x55, 0x8e, 0x3b, 0x11, 0xd6, 0xb0, 0xd0, 0x33, 0x50, 0x8d, 0x1d, 0xaf, 0x75, + 0xd5, 0xf3, 0x49, 0x24, 0xdc, 0x9b, 0x44, 0xd2, 0x71, 0x51, 0x88, 0x13, 0x38, 0x3d, 0xef, 0x59, + 0xd0, 0x3b, 0x7f, 0x62, 0x68, 0x98, 0x61, 0xb3, 0xf3, 0xfe, 0xaa, 0x2a, 0xc5, 0x1a, 0x86, 0xfd, + 0x12, 0x9c, 0xac, 0x07, 0x6e, 0x3d, 0x08, 0xe3, 0x95, 0x20, 0xbc, 0xe7, 0x84, 0xae, 0x9c, 0xbf, + 0x39, 0x99, 0xeb, 0x9a, 0x9e, 0xc9, 0x03, 0xdc, 0x8a, 0x60, 0xe4, 0xae, 0x7e, 0x8e, 0x9d, 0xf8, + 0x7d, 0x86, 0xaa, 0xfc, 0xa0, 0x04, 0xa8, 0xce, 0x1c, 0x88, 0x8c, 0x17, 0xa9, 0x36, 0x61, 0x3c, + 0x22, 0x57, 0x3d, 0xbf, 0x73, 0x5f, 0x90, 0x2a, 0x16, 0x1b, 0xd4, 0x58, 0xd6, 0xeb, 0x70, 0x3b, + 0x8d, 0x59, 0x86, 0x53, 0x74, 0xe9, 0x60, 0x86, 0x1d, 0x7f, 0x21, 0xba, 0x19, 0x91, 0x50, 0xbc, + 0xc0, 0xc4, 0x06, 0x13, 0xcb, 0x42, 0x9c, 0xc0, 0xe9, 0xe2, 0x61, 0x7f, 0xae, 0x07, 0x3e, 0x0e, + 0x82, 0x58, 0x2e, 0x37, 0xf6, 0x22, 0x87, 0x56, 0x8e, 0x0d, 0x2c, 0xb4, 0x02, 0x28, 0xea, 0xb4, + 0xdb, 0x2d, 0x76, 0x53, 0xea, 0xb4, 0x2e, 0x85, 0x41, 0xa7, 0xcd, 0xfd, 0xc8, 0xc5, 0x63, 0x16, + 0x8d, 0x2e, 0x28, 0xce, 0xa8, 0x41, 0x99, 0xc5, 0x7a, 0xc4, 0x7e, 0x8b, 0x08, 0x78, 0x6e, 0x6d, + 0x6d, 0xb0, 0x22, 0x2c, 0x61, 0xf6, 0x2f, 0xb2, 0x03, 0x8e, 0x3d, 0x8d, 0x13, 0x77, 0x42, 0x82, + 0xb6, 0x60, 0xac, 0xcd, 0x0e, 0xb1, 0x38, 0x0c, 0x5a, 0x2d, 0x22, 0xe5, 0xcb, 0xc3, 0xb9, 0x30, + 0xf1, 0xc7, 0x30, 0x74, 0x72, 0xd8, 0xa4, 0x6e, 0xff, 0xb7, 0x71, 0xc6, 0xab, 0xc4, 0x65, 0xf5, + 0x90, 0x70, 0x56, 0x16, 0x92, 0xdc, 0x47, 0x8a, 0x3c, 0x72, 0x97, 0x9c, 0x03, 0xc2, 0xf5, 0x19, + 0x4b, 0x2a, 0xe8, 0x33, 0xcc, 0x15, 0x9f, 0x33, 0x88, 0xe2, 0x4f, 0x77, 0x72, 0x7c, 0xc3, 0x0d, + 0x5f, 0x90, 0xc0, 0x1a, 0x39, 0x74, 0x15, 0xc6, 0xc4, 0x4b, 0x2a, 0xc2, 0x4c, 0x51, 0x36, 0x54, + 0xec, 0x31, 0xac, 0x03, 0xf7, 0xd3, 0x05, 0xd8, 0xac, 0x8c, 0x36, 0xe0, 0x51, 0xed, 0xa5, 0xb0, + 0x0c, 0x77, 0x3b, 0xce, 0x79, 0x1e, 0xdb, 0xdb, 0x9d, 0x7b, 0x74, 0xed, 0x20, 0x44, 0x7c, 0x30, + 0x1d, 0x74, 0x03, 0x4e, 0x3a, 0xcd, 0xd8, 0xdb, 0x26, 0x35, 0xe2, 0xb8, 0x2d, 0xcf, 0x27, 0x66, + 0x9a, 0x84, 0x87, 0xf7, 0x76, 0xe7, 0x4e, 0x2e, 0x64, 0x21, 0xe0, 0xec, 0x7a, 0xe8, 0x93, 0x50, + 0x75, 0xfd, 0x48, 0x8c, 0xc1, 0xa0, 0xf1, 0x30, 0x5e, 0xb5, 0x76, 0xbd, 0xa1, 0xbe, 0x3f, 0xf9, + 0x83, 0x93, 0x0a, 0xe8, 0x5d, 0x18, 0xd5, 0xc3, 0x9f, 0xc4, 0x83, 0x8c, 0x2f, 0x16, 0xd2, 0x9f, + 0x8d, 0x98, 0x21, 0x6e, 0xc1, 0x53, 0x6e, 0xad, 0x46, 0x38, 0x91, 0xd1, 0x04, 0xfa, 0x79, 0x40, + 0x11, 0x09, 0xb7, 0xbd, 0x26, 0x59, 0x68, 0xb2, 0xec, 0xbe, 0xcc, 0xc6, 0x33, 0x6c, 0xc4, 0x77, + 0xa0, 0x46, 0x17, 0x06, 0xce, 0xa8, 0x85, 0x2e, 0x53, 0xce, 0xa3, 0x97, 0x0a, 0x2f, 0x64, 0x29, + 0x18, 0xce, 0xd4, 0x48, 0x3b, 0x24, 0x4d, 0x27, 0x26, 0xae, 0x49, 0x11, 0xa7, 0xea, 0xd1, 0x73, + 0x49, 0x3d, 0xe0, 0x00, 0xa6, 0xef, 0x6c, 0xf7, 0x23, 0x0e, 0x54, 0xcf, 0xda, 0x0c, 0xa2, 0xf8, + 0x3a, 0x89, 0xef, 0x05, 0xe1, 0x5d, 0x91, 0x11, 0x2d, 0x49, 0x95, 0x98, 0x80, 0xb0, 0x8e, 0x47, + 0x65, 0x28, 0x76, 0xf5, 0xb7, 0x5a, 0x63, 0xf7, 0x2a, 0xc3, 0xc9, 0xde, 0xb9, 0xcc, 0x8b, 0xb1, + 0x84, 0x4b, 0xd4, 0xd5, 0xfa, 0x12, 0xbb, 0x23, 0x49, 0xa1, 0xae, 0xd6, 0x97, 0xb0, 0x84, 0xa3, + 0xa0, 0xfb, 0xf9, 0xc1, 0xf1, 0x22, 0xf7, 0x55, 0xdd, 0x9c, 0xbc, 0xe0, 0x0b, 0x84, 0xf7, 0x61, + 0x52, 0x3d, 0x81, 0xc8, 0x93, 0xc6, 0x45, 0x33, 0x13, 0x6c, 0xe1, 0x1c, 0x26, 0xf7, 0x9c, 0xb2, + 0xeb, 0xad, 0xa6, 0x68, 0xe2, 0xae, 0x56, 0x8c, 0xe4, 0x1c, 0x93, 0xb9, 0x8f, 0x72, 0x9c, 0x87, + 0x6a, 0xd4, 0xb9, 0xe3, 0x06, 0x5b, 0x8e, 0xe7, 0xb3, 0x8b, 0x0c, 0x4d, 0x88, 0x69, 0x48, 0x00, + 0x4e, 0x70, 0x50, 0x1d, 0x86, 0x1d, 0xa1, 0xc2, 0x89, 0x0b, 0x87, 0x9c, 0x28, 0x7c, 0xa9, 0xf0, + 0x71, 0xeb, 0xaa, 0xfc, 0x87, 0x15, 0x15, 0xf4, 0x32, 0x8c, 0x89, 0x20, 0x32, 0xe1, 0xec, 0x79, + 0xc2, 0x0c, 0x38, 0x68, 0xe8, 0x40, 0x6c, 0xe2, 0xa2, 0x0d, 0x18, 0xa7, 0x54, 0x12, 0x06, 0x38, + 0x33, 0xdd, 0x1f, 0x0f, 0xd5, 0xd2, 0x9f, 0xeb, 0x64, 0x70, 0x8a, 0x2c, 0x72, 0xe1, 0x11, 0xa7, + 0x13, 0x07, 0x5b, 0x74, 0x27, 0x98, 0xfb, 0x64, 0x2d, 0xb8, 0x4b, 0x7c, 0x76, 0xcb, 0x30, 0xbc, + 0x78, 0x66, 0x6f, 0x77, 0xee, 0x91, 0x85, 0x03, 0xf0, 0xf0, 0x81, 0x54, 0xd0, 0x5b, 0x30, 0x12, + 0x07, 0x2d, 0xe1, 0xc3, 0x1d, 0xcd, 0x9c, 0x2a, 0x92, 0x84, 0x68, 0x4d, 0x55, 0xd0, 0xcd, 0x18, + 0x8a, 0x08, 0xd6, 0x29, 0xa2, 0x37, 0xf9, 0xae, 0x64, 0x09, 0x33, 0x49, 0x34, 0xf3, 0x50, 0x91, + 0xc1, 0x52, 0x19, 0x36, 0xcd, 0xed, 0x2b, 0x68, 0x60, 0x9d, 0xe0, 0xec, 0xcf, 0xc1, 0x54, 0x17, + 0xcb, 0xeb, 0xcb, 0xb9, 0xf5, 0x3f, 0x0e, 0x40, 0x55, 0x59, 0x0c, 0xd1, 0x79, 0xd3, 0x38, 0xfc, + 0x70, 0xda, 0x38, 0x3c, 0x4c, 0x05, 0x34, 0xdd, 0x1e, 0xfc, 0x66, 0xc6, 0xa3, 0xfa, 0x4f, 0xe7, + 0xee, 0xf1, 0xe2, 0x91, 0x6d, 0x9a, 0x8a, 0x57, 0x2e, 0x6c, 0x6f, 0xae, 0x1c, 0xa8, 0x35, 0x16, + 0x7c, 0x28, 0x92, 0xea, 0x87, 0xed, 0xc0, 0x5d, 0xad, 0xa7, 0xdf, 0x41, 0xab, 0xd3, 0x42, 0xcc, + 0x61, 0x4c, 0xae, 0xa7, 0x67, 0x36, 0x93, 0xeb, 0x87, 0x0e, 0x29, 0xd7, 0x4b, 0x02, 0x38, 0xa1, + 0x85, 0xb6, 0x61, 0xaa, 0x69, 0x3e, 0x6b, 0xa7, 0xe2, 0xd5, 0x9e, 0xed, 0xe3, 0x59, 0xb9, 0x8e, + 0xf6, 0x22, 0xcd, 0x52, 0x9a, 0x1e, 0xee, 0x6e, 0x02, 0xbd, 0x0c, 0xc3, 0xef, 0x06, 0x11, 0xbb, + 0xb6, 0x10, 0x07, 0x97, 0x8c, 0x0b, 0x1a, 0x7e, 0xf5, 0x46, 0x83, 0x95, 0xef, 0xef, 0xce, 0x8d, + 0xd4, 0x03, 0x57, 0xfe, 0xc5, 0xaa, 0x02, 0xfa, 0xac, 0x05, 0x27, 0x8d, 0x7d, 0xac, 0x7a, 0x0e, + 0x87, 0xe9, 0xf9, 0xa3, 0xa2, 0xe5, 0x93, 0xab, 0x59, 0x34, 0x71, 0x76, 0x53, 0xf6, 0x77, 0xb9, + 0x89, 0x54, 0x18, 0x4d, 0x48, 0xd4, 0x69, 0x1d, 0xc7, 0xeb, 0x10, 0x37, 0x0c, 0x7b, 0xce, 0x03, + 0x30, 0xd2, 0xff, 0x7b, 0x8b, 0x19, 0xe9, 0xd7, 0xc8, 0x56, 0xbb, 0xe5, 0xc4, 0xc7, 0xe1, 0xfb, + 0xfc, 0x19, 0x18, 0x8e, 0x45, 0x6b, 0xc5, 0x9e, 0xb6, 0xd0, 0xba, 0xc7, 0x2e, 0x2f, 0xd4, 0xc1, + 0x27, 0x4b, 0xb1, 0x22, 0x68, 0xff, 0x2b, 0x3e, 0x2b, 0x12, 0x72, 0x0c, 0x96, 0x88, 0xeb, 0xa6, + 0x25, 0xe2, 0xa9, 0xc2, 0xdf, 0xd2, 0xc3, 0x22, 0xf1, 0x1d, 0xf3, 0x0b, 0x98, 0x7e, 0xf2, 0x93, + 0x73, 0x8b, 0x64, 0xff, 0xba, 0x05, 0xd3, 0x59, 0xce, 0x08, 0x54, 0x80, 0xe1, 0xda, 0x91, 0xba, + 0x5f, 0x53, 0xa3, 0x7a, 0x4b, 0x94, 0x63, 0x85, 0x51, 0x38, 0xd7, 0x7c, 0x7f, 0x29, 0xb4, 0x6e, + 0x80, 0xf9, 0x40, 0x22, 0x7a, 0x85, 0x87, 0x3a, 0x58, 0xea, 0x05, 0xc3, 0xfe, 0xc2, 0x1c, 0xec, + 0x6f, 0x94, 0x60, 0x9a, 0x1b, 0xb9, 0x17, 0xb6, 0x03, 0xcf, 0xad, 0x07, 0xae, 0x08, 0xfc, 0x70, + 0x61, 0xb4, 0xad, 0x29, 0xb7, 0xc5, 0x52, 0xf2, 0xe8, 0xea, 0x70, 0xa2, 0x50, 0xe8, 0xa5, 0xd8, + 0xa0, 0x4a, 0x5b, 0x21, 0xdb, 0x5e, 0x53, 0xd9, 0x4c, 0x4b, 0x7d, 0x9f, 0x0c, 0xaa, 0x95, 0x65, + 0x8d, 0x0e, 0x36, 0xa8, 0x1e, 0xc1, 0x13, 0x31, 0xf6, 0xdf, 0xb7, 0xe0, 0xa1, 0x1e, 0x69, 0x7b, + 0x68, 0x73, 0xf7, 0xd8, 0xc5, 0x82, 0x78, 0x81, 0x53, 0x35, 0xc7, 0xaf, 0x1b, 0xb0, 0x80, 0xa2, + 0x3b, 0x00, 0xfc, 0xba, 0x80, 0xca, 0xd2, 0xe9, 0xbb, 0xec, 0x82, 0xc9, 0x31, 0xb4, 0xbc, 0x09, + 0x92, 0x12, 0xd6, 0xa8, 0xda, 0x5f, 0x2b, 0xc3, 0x00, 0x7f, 0xe8, 0xbd, 0x0e, 0x43, 0x9b, 0x3c, + 0x9f, 0x71, 0x7f, 0xe9, 0x94, 0x13, 0xe5, 0x85, 0x17, 0x60, 0x49, 0x06, 0x5d, 0x83, 0x13, 0x22, + 0xf4, 0xa8, 0x46, 0x5a, 0xce, 0x8e, 0xd4, 0x86, 0xf9, 0xbb, 0x21, 0x32, 0xc1, 0xfd, 0x89, 0xd5, + 0x6e, 0x14, 0x9c, 0x55, 0x0f, 0xbd, 0xd2, 0x95, 0x7e, 0x90, 0xe7, 0x89, 0x56, 0x92, 0x70, 0x4e, + 0x0a, 0xc2, 0x97, 0x61, 0xac, 0xdd, 0xa5, 0xf7, 0x6b, 0xef, 0x69, 0x9b, 0xba, 0xbe, 0x89, 0xcb, + 0x7c, 0x17, 0x3a, 0xcc, 0x67, 0x63, 0x6d, 0x33, 0x24, 0xd1, 0x66, 0xd0, 0x72, 0xc5, 0x53, 0xb0, + 0x89, 0xef, 0x42, 0x0a, 0x8e, 0xbb, 0x6a, 0x50, 0x2a, 0xeb, 0x8e, 0xd7, 0xea, 0x84, 0x24, 0xa1, + 0x32, 0x68, 0x52, 0x59, 0x49, 0xc1, 0x71, 0x57, 0x0d, 0xba, 0xb6, 0x4e, 0x8a, 0xd7, 0x43, 0x65, + 0x90, 0xba, 0x60, 0x41, 0x9f, 0x86, 0x21, 0x19, 0x40, 0x50, 0x28, 0x97, 0x8a, 0x70, 0x4c, 0x50, + 0x2f, 0x91, 0x6a, 0xef, 0xc8, 0x89, 0xd0, 0x01, 0x49, 0xef, 0x30, 0xaf, 0x54, 0xfe, 0xb9, 0x05, + 0x27, 0x32, 0x1c, 0xe1, 0x38, 0x4b, 0xdb, 0xf0, 0xa2, 0x58, 0xbd, 0x62, 0xa1, 0xb1, 0x34, 0x5e, + 0x8e, 0x15, 0x06, 0xdd, 0x2d, 0x9c, 0x69, 0xa6, 0x19, 0xa5, 0x70, 0x31, 0x11, 0xd0, 0xfe, 0x18, + 0x25, 0x3a, 0x03, 0x95, 0x4e, 0x44, 0x42, 0xf9, 0xa0, 0xa3, 0xe4, 0xf3, 0xcc, 0xce, 0xc8, 0x20, + 0x54, 0x6c, 0xdd, 0x50, 0x26, 0x3e, 0x4d, 0x6c, 0xe5, 0x46, 0x3e, 0x0e, 0xb3, 0xbf, 0x5c, 0x86, + 0x89, 0x94, 0x43, 0x2c, 0xed, 0xc8, 0x56, 0xe0, 0x7b, 0x71, 0xa0, 0xf2, 0xdb, 0xf1, 0x37, 0xe4, + 0x48, 0x7b, 0xf3, 0x9a, 0x28, 0xc7, 0x0a, 0x03, 0x3d, 0x29, 0x5f, 0x09, 0x4e, 0xbf, 0xce, 0xb1, + 0x58, 0x33, 0x1e, 0x0a, 0x2e, 0xfa, 0xb2, 0xce, 0xe3, 0x50, 0x69, 0x07, 0xea, 0xd1, 0x77, 0x35, + 0x9f, 0x78, 0xb1, 0x56, 0x0f, 0x82, 0x16, 0x66, 0x40, 0xf4, 0x84, 0xf8, 0xfa, 0xd4, 0xcd, 0x08, + 0x76, 0xdc, 0x20, 0xd2, 0x86, 0xe0, 0x29, 0x18, 0xba, 0x4b, 0x76, 0x42, 0xcf, 0xdf, 0x48, 0xdf, + 0x0b, 0x5d, 0xe1, 0xc5, 0x58, 0xc2, 0xcd, 0x64, 0xf5, 0x43, 0x47, 0xfc, 0x7a, 0xce, 0x70, 0xee, + 0x39, 0xf8, 0x4d, 0x0b, 0x26, 0x58, 0xf6, 0x59, 0x91, 0x22, 0xc1, 0x0b, 0xfc, 0x63, 0x90, 0x31, + 0x1e, 0x87, 0x81, 0x90, 0x36, 0x9a, 0x7e, 0xfe, 0x82, 0xf5, 0x04, 0x73, 0x18, 0x7a, 0x04, 0x2a, + 0xac, 0x0b, 0x74, 0x1a, 0x47, 0x79, 0x92, 0xfb, 0x9a, 0x13, 0x3b, 0x98, 0x95, 0xb2, 0x18, 0x34, + 0x4c, 0xda, 0x2d, 0x8f, 0x77, 0x3a, 0x31, 0xe7, 0x7e, 0xd0, 0x62, 0xd0, 0x32, 0x3b, 0xf9, 0xa0, + 0x62, 0xd0, 0xb2, 0x89, 0x1f, 0x2c, 0xe7, 0xff, 0xf7, 0x12, 0x9c, 0xce, 0xac, 0x97, 0xdc, 0x30, + 0xaf, 0x18, 0x37, 0xcc, 0x17, 0x53, 0x37, 0xcc, 0xf6, 0xc1, 0xb5, 0x1f, 0xcc, 0x9d, 0x73, 0xf6, + 0x55, 0x70, 0xf9, 0x18, 0xaf, 0x82, 0x2b, 0x45, 0x45, 0x9c, 0x81, 0x1c, 0x11, 0xe7, 0x8f, 0x2c, + 0x78, 0x38, 0x73, 0xc8, 0x3e, 0x70, 0x41, 0x7f, 0x99, 0xbd, 0xec, 0xa1, 0x9d, 0xfc, 0x5a, 0xb9, + 0xc7, 0x57, 0x31, 0x3d, 0xe5, 0x2c, 0xe5, 0x42, 0x0c, 0x18, 0x09, 0xe1, 0x6d, 0x94, 0x73, 0x20, + 0x5e, 0x86, 0x15, 0x14, 0x45, 0x5a, 0xd0, 0x1c, 0xef, 0xe4, 0xf2, 0x21, 0x37, 0xd4, 0xbc, 0x69, + 0x87, 0xd7, 0xf3, 0x3e, 0xa4, 0x43, 0xe9, 0x6e, 0x6b, 0x9a, 0x67, 0xf9, 0x30, 0x9a, 0xe7, 0x68, + 0xb6, 0xd6, 0x89, 0x16, 0x60, 0x62, 0xcb, 0xf3, 0xd9, 0xa3, 0xbb, 0xa6, 0xf4, 0xa4, 0x22, 0x97, + 0xaf, 0x99, 0x60, 0x9c, 0xc6, 0x9f, 0x7d, 0x19, 0xc6, 0x0e, 0x6f, 0x5d, 0xfb, 0x51, 0x19, 0x3e, + 0x7c, 0x00, 0x53, 0xe0, 0xa7, 0x83, 0x31, 0x2f, 0xda, 0xe9, 0xd0, 0x35, 0x37, 0x75, 0x98, 0x5e, + 0xef, 0xb4, 0x5a, 0x3b, 0xcc, 0x3f, 0x8b, 0xb8, 0x12, 0x43, 0x08, 0x35, 0x2a, 0x19, 0xf5, 0x4a, + 0x06, 0x0e, 0xce, 0xac, 0x89, 0x7e, 0x1e, 0x50, 0x70, 0x87, 0xa5, 0x45, 0x76, 0x93, 0xbc, 0x16, + 0x6c, 0x0a, 0xca, 0xc9, 0x56, 0xbd, 0xd1, 0x85, 0x81, 0x33, 0x6a, 0x51, 0x39, 0x95, 0x9e, 0x63, + 0x3b, 0xaa, 0x5b, 0x29, 0x39, 0x15, 0xeb, 0x40, 0x6c, 0xe2, 0xa2, 0x4b, 0x30, 0xe5, 0x6c, 0x3b, + 0x1e, 0x4f, 0x73, 0x26, 0x09, 0x70, 0x41, 0x55, 0xd9, 0xaf, 0x16, 0xd2, 0x08, 0xb8, 0xbb, 0x0e, + 0x6a, 0x1b, 0x06, 0x49, 0xfe, 0x32, 0xc3, 0x27, 0x0f, 0xb1, 0x82, 0x0b, 0x9b, 0x28, 0xed, 0x3f, + 0xb5, 0xe8, 0xd1, 0x97, 0xf1, 0x3e, 0x2b, 0x1d, 0x11, 0x65, 0x60, 0xd3, 0x82, 0x00, 0xd5, 0x88, + 0x2c, 0xe9, 0x40, 0x6c, 0xe2, 0xf2, 0xa5, 0x11, 0x25, 0xee, 0xe2, 0x86, 0xb4, 0x29, 0xe2, 0x67, + 0x15, 0x06, 0x95, 0xa0, 0x5d, 0x6f, 0xdb, 0x8b, 0x82, 0x50, 0x6c, 0xa0, 0x7e, 0x5f, 0x41, 0x57, + 0xfc, 0xb2, 0xc6, 0xc9, 0x60, 0x49, 0xcf, 0xfe, 0x4a, 0x09, 0xc6, 0x64, 0x8b, 0xaf, 0x76, 0x82, + 0xd8, 0x39, 0x86, 0x23, 0xfd, 0x55, 0xe3, 0x48, 0x3f, 0x5f, 0x2c, 0x9c, 0x98, 0x75, 0xae, 0xe7, + 0x51, 0xfe, 0xe9, 0xd4, 0x51, 0x7e, 0xa1, 0x1f, 0xa2, 0x07, 0x1f, 0xe1, 0xff, 0xc6, 0x82, 0x29, + 0x03, 0xff, 0x18, 0x4e, 0x92, 0xba, 0x79, 0x92, 0x3c, 0xd3, 0xc7, 0xd7, 0xf4, 0x38, 0x41, 0xbe, + 0x5e, 0x4a, 0x7d, 0x05, 0x3b, 0x39, 0x7e, 0x01, 0x2a, 0x9b, 0x4e, 0xe8, 0x16, 0xcb, 0xf9, 0xd9, + 0x55, 0x7d, 0xfe, 0xb2, 0x13, 0xba, 0x9c, 0xff, 0x9f, 0x53, 0xaf, 0xc7, 0x39, 0xa1, 0x9b, 0x1b, + 0x45, 0xc1, 0x1a, 0x45, 0x2f, 0xc1, 0x60, 0xd4, 0x0c, 0xda, 0xca, 0xcf, 0xf4, 0x0c, 0x7f, 0x59, + 0x8e, 0x96, 0xec, 0xef, 0xce, 0x21, 0xb3, 0x39, 0x5a, 0x8c, 0x05, 0xfe, 0xec, 0x06, 0x54, 0x55, + 0xd3, 0x47, 0xea, 0x69, 0xff, 0x5f, 0xcb, 0x70, 0x22, 0x63, 0xad, 0xa0, 0x5f, 0x34, 0xc6, 0xed, + 0xe5, 0xbe, 0x17, 0xdb, 0xfb, 0x1c, 0xb9, 0x5f, 0x64, 0x9a, 0x92, 0x2b, 0x56, 0xc7, 0x21, 0x9a, + 0xbf, 0x19, 0x91, 0x74, 0xf3, 0xb4, 0x28, 0xbf, 0x79, 0xda, 0xec, 0xb1, 0x0d, 0x3f, 0x6d, 0x48, + 0xf5, 0xf4, 0x48, 0xe7, 0xf9, 0x0b, 0x15, 0x98, 0xce, 0xca, 0x5b, 0x80, 0x7e, 0xc5, 0x4a, 0xbd, + 0x30, 0xf2, 0x4a, 0xff, 0xc9, 0x0f, 0xf8, 0xb3, 0x23, 0x22, 0xab, 0xd0, 0xbc, 0xf9, 0xe6, 0x48, + 0xee, 0x88, 0x8b, 0xd6, 0x59, 0xfc, 0x53, 0xc8, 0x5f, 0x8b, 0x91, 0x5c, 0xe1, 0x53, 0x87, 0xe8, + 0x8a, 0x78, 0x70, 0x26, 0x4a, 0xc5, 0x3f, 0xc9, 0xe2, 0xfc, 0xf8, 0x27, 0xd9, 0x87, 0x59, 0x0f, + 0x46, 0xb4, 0xef, 0x3a, 0xd2, 0x65, 0x70, 0x97, 0x1e, 0x51, 0x5a, 0xbf, 0x8f, 0x74, 0x29, 0xfc, + 0x1d, 0x0b, 0x52, 0x4e, 0x61, 0xca, 0x2c, 0x63, 0xf5, 0x34, 0xcb, 0x9c, 0x81, 0x4a, 0x18, 0xb4, + 0x48, 0xfa, 0xd1, 0x09, 0x1c, 0xb4, 0x08, 0x66, 0x10, 0xf5, 0xa0, 0x74, 0xb9, 0xd7, 0x83, 0xd2, + 0x54, 0x4f, 0x6f, 0x91, 0x6d, 0x22, 0x8d, 0x24, 0x8a, 0x8d, 0x5f, 0xa5, 0x85, 0x98, 0xc3, 0xec, + 0xdf, 0xa9, 0xc0, 0x89, 0x8c, 0x58, 0x40, 0xaa, 0x21, 0x6d, 0x38, 0x31, 0xb9, 0xe7, 0xec, 0xa4, + 0x93, 0xdf, 0x5e, 0xe2, 0xc5, 0x58, 0xc2, 0x99, 0x33, 0x2b, 0x4f, 0xa0, 0x97, 0x32, 0x5d, 0x89, + 0xbc, 0x79, 0x02, 0x7a, 0xf4, 0x4f, 0x0f, 0x5f, 0x04, 0x88, 0xa2, 0xd6, 0xb2, 0x4f, 0x25, 0x3c, + 0x57, 0x38, 0xcd, 0x26, 0x79, 0x17, 0x1b, 0x57, 0x05, 0x04, 0x6b, 0x58, 0xa8, 0x06, 0x93, 0xed, + 0x30, 0x88, 0xb9, 0x61, 0xb0, 0xc6, 0x1d, 0x2d, 0x06, 0xcc, 0x68, 0xad, 0x7a, 0x0a, 0x8e, 0xbb, + 0x6a, 0xa0, 0x17, 0x60, 0x44, 0x44, 0x70, 0xd5, 0x83, 0xa0, 0x25, 0xcc, 0x48, 0xea, 0x3a, 0xbe, + 0x91, 0x80, 0xb0, 0x8e, 0xa7, 0x55, 0x63, 0xd6, 0xc6, 0xa1, 0xcc, 0x6a, 0xdc, 0xe2, 0xa8, 0xe1, + 0xa5, 0xb2, 0x9b, 0x0c, 0x17, 0xca, 0x6e, 0x92, 0x18, 0xd6, 0xaa, 0x85, 0x2f, 0x62, 0x20, 0xd7, + 0x00, 0xf5, 0x87, 0x65, 0x18, 0xe4, 0x53, 0x71, 0x0c, 0x52, 0x5e, 0x5d, 0x98, 0x94, 0x0a, 0x65, + 0x92, 0xe0, 0xbd, 0x9a, 0xaf, 0x39, 0xb1, 0xc3, 0x59, 0x93, 0xda, 0x21, 0x89, 0x19, 0x0a, 0xcd, + 0x1b, 0x7b, 0x68, 0x36, 0x65, 0x29, 0x01, 0x4e, 0x43, 0xdb, 0x51, 0x9b, 0x00, 0x11, 0x7b, 0xfe, + 0x96, 0xd2, 0x10, 0x99, 0x79, 0x9f, 0x2f, 0xd4, 0x8f, 0x86, 0xaa, 0xc6, 0x7b, 0x93, 0x2c, 0x4b, + 0x05, 0xc0, 0x1a, 0xed, 0xd9, 0x17, 0xa1, 0xaa, 0x90, 0xf3, 0x54, 0xc8, 0x51, 0x9d, 0xb5, 0xfd, + 0x2c, 0x4c, 0xa4, 0xda, 0xea, 0x4b, 0x03, 0xfd, 0x3d, 0x0b, 0x26, 0x78, 0x97, 0x97, 0xfd, 0x6d, + 0xc1, 0x0a, 0x3e, 0x67, 0xc1, 0x74, 0x2b, 0x63, 0x27, 0x8a, 0x69, 0x3e, 0xcc, 0x1e, 0x56, 0xca, + 0x67, 0x16, 0x14, 0x67, 0xb6, 0x86, 0xce, 0xc2, 0x30, 0x7f, 0xcd, 0xdb, 0x69, 0x09, 0x0f, 0xed, + 0x51, 0x9e, 0x93, 0x9c, 0x97, 0x61, 0x05, 0xb5, 0x7f, 0x6c, 0xc1, 0x14, 0xff, 0x88, 0x2b, 0x64, + 0x47, 0xa9, 0x57, 0x1f, 0x90, 0xcf, 0x10, 0xd9, 0xd7, 0x4b, 0x3d, 0xb2, 0xaf, 0xeb, 0x5f, 0x59, + 0x3e, 0xf0, 0x2b, 0xbf, 0x61, 0x81, 0x58, 0xa1, 0xc7, 0xa0, 0x3f, 0xac, 0x9a, 0xfa, 0xc3, 0x47, + 0x8a, 0x2c, 0xfa, 0x1e, 0x8a, 0xc3, 0xaf, 0x96, 0x60, 0x92, 0x23, 0x24, 0x37, 0x32, 0x1f, 0x94, + 0xc9, 0xe9, 0xef, 0x55, 0x20, 0xf5, 0x26, 0x6c, 0xf6, 0x97, 0x1a, 0x73, 0x59, 0x39, 0x70, 0x2e, + 0xff, 0xa7, 0x05, 0x88, 0x8f, 0x49, 0xfa, 0x29, 0x74, 0x7e, 0xba, 0x69, 0xe6, 0x80, 0x84, 0x73, + 0x28, 0x08, 0xd6, 0xb0, 0x1e, 0xf0, 0x27, 0xa4, 0xee, 0xc3, 0xca, 0xf9, 0xf7, 0x61, 0x7d, 0x7c, + 0xf5, 0x77, 0xcb, 0x90, 0x76, 0xd5, 0x44, 0x6f, 0xc3, 0x68, 0xd3, 0x69, 0x3b, 0x77, 0xbc, 0x96, + 0x17, 0x7b, 0x24, 0x2a, 0x76, 0xe1, 0xbe, 0xa4, 0xd5, 0x10, 0xd7, 0x50, 0x5a, 0x09, 0x36, 0x28, + 0xa2, 0x79, 0x80, 0x76, 0xe8, 0x6d, 0x7b, 0x2d, 0xb2, 0xc1, 0x34, 0x1e, 0x16, 0xeb, 0xc1, 0xef, + 0x8e, 0x65, 0x29, 0xd6, 0x30, 0x32, 0x62, 0x03, 0xca, 0xc7, 0x11, 0x1b, 0x50, 0xe9, 0x33, 0x36, + 0x60, 0xa0, 0x50, 0x6c, 0x00, 0x86, 0x53, 0xf2, 0xf0, 0xa6, 0xff, 0x57, 0xbc, 0x16, 0x11, 0xb2, + 0x1b, 0x8f, 0x05, 0x99, 0xdd, 0xdb, 0x9d, 0x3b, 0x85, 0x33, 0x31, 0x70, 0x8f, 0x9a, 0x76, 0x07, + 0x4e, 0x34, 0x48, 0x28, 0x9f, 0xb1, 0x53, 0x7b, 0xe9, 0x4d, 0xa8, 0x86, 0xa9, 0x6d, 0xdc, 0x67, + 0xc0, 0xbf, 0x96, 0xe3, 0x4d, 0x6e, 0xdb, 0x84, 0xa4, 0xfd, 0xd7, 0x4b, 0x30, 0x24, 0x9c, 0x34, + 0x8f, 0x41, 0xf8, 0xb8, 0x62, 0x98, 0x98, 0x9e, 0xca, 0xe3, 0x7f, 0xac, 0x5b, 0x3d, 0x8d, 0x4b, + 0x8d, 0x94, 0x71, 0xe9, 0x99, 0x62, 0xe4, 0x0e, 0x36, 0x2b, 0xfd, 0x93, 0x32, 0x8c, 0x9b, 0x4e, + 0xab, 0xc7, 0x30, 0x2c, 0xaf, 0xc1, 0x50, 0x24, 0xfc, 0xa7, 0x4b, 0x45, 0x7c, 0xf6, 0xd2, 0x53, + 0x9c, 0xdc, 0xc4, 0x0b, 0x8f, 0x69, 0x49, 0x2e, 0xd3, 0x45, 0xbb, 0x7c, 0x2c, 0x2e, 0xda, 0x79, + 0xbe, 0xc4, 0x95, 0x07, 0xe1, 0x4b, 0x6c, 0x7f, 0x8f, 0xb1, 0x7c, 0xbd, 0xfc, 0x18, 0x8e, 0xf1, + 0x57, 0xcd, 0xc3, 0xe1, 0x5c, 0xa1, 0x75, 0x27, 0xba, 0xd7, 0xe3, 0x38, 0xff, 0x96, 0x05, 0x23, + 0x02, 0xf1, 0x18, 0x3e, 0xe0, 0xe7, 0xcd, 0x0f, 0x78, 0xa2, 0xd0, 0x07, 0xf4, 0xe8, 0xf9, 0x57, + 0x4a, 0xaa, 0xe7, 0xf5, 0x20, 0x8c, 0x0b, 0x65, 0x42, 0x1f, 0xa6, 0xaa, 0x5f, 0xd0, 0x0c, 0x5a, + 0x42, 0x80, 0x7b, 0x24, 0x09, 0xfd, 0xe3, 0xe5, 0xfb, 0xda, 0x6f, 0xac, 0xb0, 0x59, 0x64, 0x5a, + 0x10, 0xc6, 0xe2, 0x00, 0x4d, 0x22, 0xd3, 0x82, 0x30, 0xc6, 0x0c, 0x82, 0x5c, 0x80, 0xd8, 0x09, + 0x37, 0x48, 0x4c, 0xcb, 0x44, 0xd4, 0x6c, 0xef, 0xdd, 0xda, 0x89, 0xbd, 0xd6, 0xbc, 0xe7, 0xc7, + 0x51, 0x1c, 0xce, 0xaf, 0xfa, 0xf1, 0x8d, 0x90, 0x0b, 0xfd, 0x5a, 0x2c, 0x9f, 0xa2, 0x85, 0x35, + 0xba, 0x32, 0x48, 0x84, 0xb5, 0x31, 0x60, 0xde, 0x20, 0x5d, 0x17, 0xe5, 0x58, 0x61, 0xd8, 0x2f, + 0x32, 0xce, 0xce, 0x06, 0xa8, 0xbf, 0x30, 0xbb, 0x2f, 0x0c, 0xa9, 0xa1, 0x65, 0x66, 0xe1, 0xeb, + 0x7a, 0x30, 0x5f, 0x51, 0xf6, 0x49, 0xbb, 0xa0, 0xfb, 0x51, 0x27, 0xb1, 0x7f, 0x88, 0x74, 0x5d, + 0x3b, 0xbe, 0x58, 0x98, 0x23, 0xf7, 0x71, 0xd1, 0xc8, 0x52, 0x32, 0xb2, 0x3c, 0x74, 0xab, 0xf5, + 0x74, 0xfe, 0xfa, 0x25, 0x09, 0xc0, 0x09, 0x0e, 0x3a, 0x2f, 0x14, 0x4a, 0x6e, 0x71, 0xf9, 0x70, + 0x4a, 0xa1, 0x94, 0x43, 0xa2, 0x69, 0x94, 0x17, 0x60, 0x44, 0x3d, 0x09, 0x54, 0xe7, 0x8f, 0xb1, + 0x54, 0xb9, 0x7c, 0xb5, 0x9c, 0x14, 0x63, 0x1d, 0x07, 0xad, 0xc1, 0x44, 0xc4, 0xdf, 0x2b, 0x92, + 0xd1, 0x1a, 0xc2, 0x70, 0xf0, 0xb4, 0xbc, 0xa4, 0x6c, 0x98, 0xe0, 0x7d, 0x56, 0xc4, 0xb7, 0xb2, + 0x8c, 0xef, 0x48, 0x93, 0x40, 0xaf, 0xc0, 0x78, 0x4b, 0x7f, 0xc3, 0xb5, 0x2e, 0xec, 0x0a, 0xca, + 0xed, 0xcc, 0x78, 0xe1, 0xb5, 0x8e, 0x53, 0xd8, 0xe8, 0x35, 0x98, 0xd1, 0x4b, 0x44, 0x72, 0x21, + 0xc7, 0xdf, 0x20, 0x91, 0x78, 0xdb, 0xe4, 0x91, 0xbd, 0xdd, 0xb9, 0x99, 0xab, 0x3d, 0x70, 0x70, + 0xcf, 0xda, 0xe8, 0x25, 0x18, 0x95, 0x9f, 0xaf, 0xc5, 0x36, 0x25, 0x0e, 0x8f, 0x1a, 0x0c, 0x1b, + 0x98, 0xe8, 0x1e, 0x9c, 0x94, 0xff, 0xd7, 0x42, 0x67, 0x7d, 0xdd, 0x6b, 0x8a, 0x20, 0xb3, 0x11, + 0x46, 0x62, 0x41, 0xfa, 0x8b, 0x2f, 0x67, 0x21, 0xed, 0xef, 0xce, 0x9d, 0x11, 0xa3, 0x96, 0x09, + 0x67, 0x93, 0x98, 0x4d, 0x1f, 0x5d, 0x83, 0x13, 0x9b, 0xc4, 0x69, 0xc5, 0x9b, 0x4b, 0x9b, 0xa4, + 0x79, 0x57, 0x6e, 0x2c, 0x16, 0x31, 0xa5, 0xb9, 0x04, 0x5e, 0xee, 0x46, 0xc1, 0x59, 0xf5, 0xde, + 0xdf, 0x9d, 0xf2, 0x2f, 0xd0, 0xca, 0x9a, 0xfc, 0x80, 0xde, 0x81, 0x51, 0x7d, 0xac, 0xd3, 0x82, + 0x41, 0xfe, 0xfb, 0xbe, 0x42, 0x0e, 0x51, 0x33, 0xa0, 0xc3, 0xb0, 0x41, 0xdb, 0xfe, 0x77, 0x25, + 0x98, 0xcb, 0xc9, 0xdd, 0x95, 0xb2, 0x66, 0x59, 0x85, 0xac, 0x59, 0x0b, 0xf2, 0xcd, 0x9b, 0xeb, + 0xa9, 0x9c, 0xe9, 0xa9, 0x57, 0x6c, 0x92, 0xcc, 0xe9, 0x69, 0xfc, 0xc2, 0x9e, 0x66, 0xba, 0x41, + 0xac, 0x92, 0xeb, 0x70, 0xf7, 0xba, 0x6e, 0xe3, 0x1c, 0x38, 0x8c, 0xd0, 0xdb, 0xd3, 0xbc, 0x69, + 0x7f, 0xaf, 0x04, 0x27, 0xd5, 0x60, 0xfe, 0xf4, 0x0e, 0xe1, 0x5b, 0xdd, 0x43, 0xf8, 0x40, 0xcd, + 0xc4, 0xf6, 0x0d, 0x18, 0x6c, 0xec, 0x44, 0xcd, 0xb8, 0x55, 0xe0, 0xc4, 0x7f, 0xdc, 0xd8, 0x57, + 0xc9, 0x69, 0xc4, 0x5e, 0xb2, 0x13, 0xdb, 0xcc, 0xfe, 0xbc, 0x05, 0x13, 0x6b, 0x4b, 0xf5, 0x46, + 0xd0, 0xbc, 0x4b, 0xe2, 0x05, 0x6e, 0xd0, 0xc0, 0xe2, 0xc0, 0xb7, 0x0e, 0x79, 0x90, 0x67, 0x89, + 0x08, 0x67, 0xa0, 0xb2, 0x19, 0x44, 0x71, 0xfa, 0x52, 0xe0, 0x72, 0x10, 0xc5, 0x98, 0x41, 0xec, + 0x3f, 0xb3, 0x60, 0x80, 0x3d, 0xd4, 0x96, 0xf7, 0xc8, 0x5f, 0x91, 0xef, 0x42, 0x2f, 0xc0, 0x20, + 0x59, 0x5f, 0x27, 0xcd, 0x58, 0xcc, 0xaf, 0x0c, 0xb0, 0x19, 0x5c, 0x66, 0xa5, 0xf4, 0x44, 0x63, + 0x8d, 0xf1, 0xbf, 0x58, 0x20, 0xa3, 0xcf, 0x40, 0x35, 0xf6, 0xb6, 0xc8, 0x82, 0xeb, 0x0a, 0x2b, + 0x7c, 0x7f, 0x3e, 0x5f, 0xea, 0x84, 0x5d, 0x93, 0x44, 0x70, 0x42, 0xcf, 0xfe, 0x52, 0x09, 0x20, + 0x09, 0x9f, 0xcb, 0xfb, 0xcc, 0xc5, 0xae, 0xb7, 0x0c, 0x9f, 0xcc, 0x78, 0xcb, 0x10, 0x25, 0x04, + 0x33, 0x5e, 0x32, 0x54, 0x43, 0x55, 0x2e, 0x34, 0x54, 0x95, 0x7e, 0x86, 0x6a, 0x09, 0xa6, 0x92, + 0xf0, 0x3f, 0x33, 0x8e, 0x9a, 0xe5, 0x1b, 0x5e, 0x4b, 0x03, 0x71, 0x37, 0xbe, 0xfd, 0x25, 0x0b, + 0x84, 0x97, 0x70, 0x81, 0x05, 0xed, 0xca, 0x77, 0xc7, 0x8c, 0xd4, 0x82, 0x4f, 0x17, 0x71, 0xa0, + 0x16, 0x09, 0x05, 0x15, 0xdf, 0x37, 0xd2, 0x08, 0x1a, 0x54, 0xed, 0xdf, 0xb6, 0x60, 0x84, 0x83, + 0xaf, 0x31, 0x45, 0x34, 0xbf, 0x5f, 0x7d, 0x25, 0xb3, 0x66, 0x4f, 0x72, 0x51, 0xc2, 0x2a, 0xa9, + 0xb1, 0xfe, 0x24, 0x97, 0x04, 0xe0, 0x04, 0x07, 0x3d, 0x05, 0x43, 0x51, 0xe7, 0x0e, 0x43, 0x4f, + 0xb9, 0x0c, 0x37, 0x78, 0x31, 0x96, 0x70, 0xfb, 0x9f, 0x95, 0x60, 0x32, 0xed, 0x31, 0x8e, 0x30, + 0x0c, 0x72, 0x06, 0x92, 0xd6, 0x69, 0x0e, 0x32, 0x80, 0x6a, 0x1e, 0xe7, 0xc0, 0x1f, 0x96, 0x67, + 0x2c, 0x48, 0x50, 0x42, 0xeb, 0x30, 0xe2, 0x06, 0xf7, 0xfc, 0x7b, 0x4e, 0xe8, 0x2e, 0xd4, 0x57, + 0xc5, 0x4c, 0xe4, 0xf8, 0xf8, 0xd5, 0x92, 0x0a, 0xba, 0x3f, 0x3b, 0x33, 0xc8, 0x25, 0x20, 0xac, + 0x13, 0x46, 0x6f, 0xb2, 0x4c, 0x28, 0xeb, 0xde, 0xc6, 0x35, 0xa7, 0x5d, 0xcc, 0x9b, 0x65, 0x49, + 0xa2, 0x6b, 0x6d, 0x8c, 0x89, 0xc4, 0x29, 0x1c, 0x80, 0x13, 0x92, 0xf6, 0xaf, 0x9e, 0x04, 0x63, + 0x2d, 0x18, 0x19, 0xa7, 0xad, 0x07, 0x9e, 0x71, 0xfa, 0x0d, 0x18, 0x26, 0x5b, 0xed, 0x78, 0xa7, + 0xe6, 0x85, 0xc5, 0xde, 0x0f, 0x58, 0x16, 0xd8, 0xdd, 0xd4, 0x25, 0x04, 0x2b, 0x8a, 0x3d, 0xf2, + 0x87, 0x97, 0x3f, 0x10, 0xf9, 0xc3, 0x2b, 0x7f, 0x29, 0xf9, 0xc3, 0x5f, 0x83, 0xa1, 0x0d, 0x2f, + 0xc6, 0xa4, 0x1d, 0x88, 0xd3, 0x38, 0x67, 0xf1, 0x5c, 0xe2, 0xc8, 0xdd, 0x99, 0x65, 0x05, 0x00, + 0x4b, 0x72, 0x68, 0x4d, 0x6d, 0xaa, 0xc1, 0x22, 0x32, 0x68, 0xb7, 0x81, 0x3c, 0x73, 0x5b, 0x89, + 0x7c, 0xe1, 0x43, 0xef, 0x3f, 0x5f, 0xb8, 0xca, 0xf2, 0x3d, 0xfc, 0xa0, 0xb2, 0x7c, 0x1b, 0xd9, + 0xd2, 0xab, 0x47, 0x91, 0x2d, 0xfd, 0x4b, 0x16, 0x9c, 0x6c, 0x67, 0xbd, 0x35, 0x20, 0xf2, 0x75, + 0xff, 0xdc, 0x21, 0x5e, 0x5f, 0x30, 0x9a, 0x66, 0xf9, 0x3d, 0x32, 0xd1, 0x70, 0x76, 0xc3, 0x32, + 0xed, 0xfa, 0xc8, 0xfb, 0x4f, 0xbb, 0x7e, 0xd4, 0x89, 0xbd, 0x93, 0x24, 0xec, 0x63, 0x47, 0x92, + 0x84, 0x7d, 0xfc, 0x01, 0x26, 0x61, 0xd7, 0xd2, 0xa7, 0x4f, 0x3c, 0xd8, 0xf4, 0xe9, 0x9b, 0xe6, + 0xb9, 0xc4, 0xb3, 0x75, 0xbf, 0x50, 0xf8, 0x5c, 0x32, 0x5a, 0x38, 0xf8, 0x64, 0xe2, 0x89, 0xe4, + 0xa7, 0xde, 0x67, 0x22, 0x79, 0x23, 0x1d, 0x3b, 0x3a, 0x8a, 0x74, 0xec, 0x6f, 0xeb, 0x27, 0xe8, + 0x89, 0x22, 0x2d, 0xa8, 0x83, 0xb2, 0xbb, 0x85, 0xac, 0x33, 0xb4, 0x3b, 0xe1, 0xfb, 0xf4, 0x71, + 0x27, 0x7c, 0x3f, 0x79, 0x84, 0x09, 0xdf, 0x4f, 0x1d, 0x6b, 0xc2, 0xf7, 0x87, 0x3e, 0x20, 0x09, + 0xdf, 0x67, 0x8e, 0x2b, 0xe1, 0xfb, 0xc3, 0x0f, 0x36, 0xe1, 0xfb, 0xdb, 0x50, 0x6d, 0xcb, 0xb8, + 0xcb, 0x99, 0xd9, 0x22, 0x53, 0x97, 0x19, 0xa6, 0xc9, 0xa7, 0x4e, 0x81, 0x70, 0x42, 0x94, 0xb6, + 0x90, 0x24, 0x80, 0xff, 0x70, 0x91, 0x16, 0x32, 0xed, 0x1e, 0x07, 0xa4, 0x7d, 0xff, 0x42, 0x09, + 0x4e, 0x1f, 0xbc, 0x3b, 0x12, 0xa3, 0x49, 0x3d, 0xb1, 0x65, 0xa7, 0x8c, 0x26, 0x4c, 0xf2, 0xd4, + 0xb0, 0x0a, 0x87, 0xb3, 0x5f, 0x82, 0x29, 0xe5, 0xe7, 0xd5, 0xf2, 0x9a, 0x3b, 0xda, 0x33, 0x54, + 0x2a, 0x3e, 0xa1, 0x91, 0x46, 0xc0, 0xdd, 0x75, 0xd0, 0x02, 0x4c, 0x18, 0x85, 0xab, 0x35, 0xa1, + 0xbf, 0x28, 0x2b, 0x4d, 0xc3, 0x04, 0xe3, 0x34, 0xbe, 0xfd, 0x75, 0x0b, 0x1e, 0xea, 0x91, 0xe1, + 0xb5, 0x70, 0x8c, 0x76, 0x1b, 0x26, 0xda, 0x66, 0xd5, 0xc2, 0x29, 0x1f, 0x8c, 0x8c, 0xb2, 0xaa, + 0xd7, 0x29, 0x00, 0x4e, 0x93, 0x5f, 0x3c, 0xfb, 0xfd, 0x1f, 0x9d, 0xfe, 0xd0, 0x0f, 0x7e, 0x74, + 0xfa, 0x43, 0x3f, 0xfc, 0xd1, 0xe9, 0x0f, 0xfd, 0xd2, 0xde, 0x69, 0xeb, 0xfb, 0x7b, 0xa7, 0xad, + 0x1f, 0xec, 0x9d, 0xb6, 0x7e, 0xb8, 0x77, 0xda, 0xfa, 0xf3, 0xbd, 0xd3, 0xd6, 0x97, 0x7e, 0x7c, + 0xfa, 0x43, 0xaf, 0x97, 0xb6, 0x2f, 0xfc, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0xe5, 0xd7, + 0x49, 0x99, 0xd0, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/generated.proto b/vendor/k8s.io/client-go/pkg/api/v1/generated.proto new file mode 100644 index 000000000..0874552d8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/generated.proto @@ -0,0 +1,4117 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.api.v1; + +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk +// must also be in the same AWS zone as the kubelet. An AWS EBS disk +// can only be mounted as read/write once. AWS EBS volumes support +// ownership management and SELinux relabeling. +message AWSElasticBlockStoreVolumeSource { + // Unique ID of the persistent disk resource in AWS (Amazon EBS volume). + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + optional string volumeID = 1; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 2; + + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + // +optional + optional int32 partition = 3; + + // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". + // If omitted, the default is "false". + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + optional bool readOnly = 4; +} + +// Affinity is a group of affinity scheduling rules. +message Affinity { + // Describes node affinity scheduling rules for the pod. + // +optional + optional NodeAffinity nodeAffinity = 1; + + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + // +optional + optional PodAffinity podAffinity = 2; + + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + // +optional + optional PodAntiAffinity podAntiAffinity = 3; +} + +// AttachedVolume describes a volume attached to a node +message AttachedVolume { + // Name of the attached volume + optional string name = 1; + + // DevicePath represents the device path where the volume should be available + optional string devicePath = 2; +} + +// AvoidPods describes pods that should avoid this node. This is the value for a +// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and +// will eventually become a field of NodeStatus. +message AvoidPods { + // Bounded-sized list of signatures of pods that should avoid this node, sorted + // in timestamp order from oldest to newest. Size of the slice is unspecified. + // +optional + repeated PreferAvoidPodsEntry preferAvoidPods = 1; +} + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +message AzureDiskVolumeSource { + // The Name of the data disk in the blob storage + optional string diskName = 1; + + // The URI the data disk in the blob storage + optional string diskURI = 2; + + // Host Caching mode: None, Read Only, Read Write. + // +optional + optional string cachingMode = 3; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + optional string fsType = 4; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 5; + + // Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + optional string kind = 6; +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +message AzureFileVolumeSource { + // the name of secret that contains Azure Storage Account Name and Key + optional string secretName = 1; + + // Share Name + optional string shareName = 2; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 3; +} + +// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. +// Deprecated in 1.7, please use the bindings subresource of pods instead. +message Binding { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The target object that you want to bind to the standard object. + optional ObjectReference target = 2; +} + +// Adds and removes POSIX capabilities from running containers. +message Capabilities { + // Added capabilities + // +optional + repeated string add = 1; + + // Removed capabilities + // +optional + repeated string drop = 2; +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +message CephFSVolumeSource { + // Required: Monitors is a collection of Ceph monitors + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + repeated string monitors = 1; + + // Optional: Used as the mounted root, rather than the full Ceph tree, default is / + // +optional + optional string path = 2; + + // Optional: User is the rados user name, default is admin + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional string user = 3; + + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional string secretFile = 4; + + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional LocalObjectReference secretRef = 5; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + optional bool readOnly = 6; +} + +// Represents a cinder volume resource in Openstack. +// A Cinder volume must exist before mounting to a container. +// The volume must also be in the same region as the kubelet. +// Cinder volumes support ownership management and SELinux relabeling. +message CinderVolumeSource { + // volume id used to identify the volume in cinder + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + optional string volumeID = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional string fsType = 2; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional bool readOnly = 3; +} + +// Information about the condition of a component. +message ComponentCondition { + // Type of condition for a component. + // Valid value: "Healthy" + optional string type = 1; + + // Status of the condition for a component. + // Valid values for "Healthy": "True", "False", or "Unknown". + optional string status = 2; + + // Message about the condition for a component. + // For example, information about a health check. + // +optional + optional string message = 3; + + // Condition error code for a component. + // For example, a health check error code. + // +optional + optional string error = 4; +} + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +message ComponentStatus { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // List of component conditions observed + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated ComponentCondition conditions = 2; +} + +// Status of all the conditions for the component as a list of ComponentStatus objects. +message ComponentStatusList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ComponentStatus objects. + repeated ComponentStatus items = 2; +} + +// ConfigMap holds configuration data for pods to consume. +message ConfigMap { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data contains the configuration data. + // Each key must consist of alphanumeric characters, '-', '_' or '.'. + // +optional + map data = 2; +} + +// ConfigMapEnvSource selects a ConfigMap to populate the environment +// variables with. +// +// The contents of the target ConfigMap's Data field will represent the +// key-value pairs as environment variables. +message ConfigMapEnvSource { + // The ConfigMap to select from. + optional LocalObjectReference localObjectReference = 1; + + // Specify whether the ConfigMap must be defined + // +optional + optional bool optional = 2; +} + +// Selects a key from a ConfigMap. +message ConfigMapKeySelector { + // The ConfigMap to select from. + optional LocalObjectReference localObjectReference = 1; + + // The key to select. + optional string key = 2; + + // Specify whether the ConfigMap or it's key must be defined + // +optional + optional bool optional = 3; +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +message ConfigMapList { + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ConfigMaps. + repeated ConfigMap items = 2; +} + +// Adapts a ConfigMap into a projected volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names, +// unless the items element is populated with specific mappings of keys to paths. +// Note that this is identical to a configmap volume source without the default +// mode. +message ConfigMapProjection { + optional LocalObjectReference localObjectReference = 1; + + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + repeated KeyToPath items = 2; + + // Specify whether the ConfigMap or it's keys must be defined + // +optional + optional bool optional = 4; +} + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// volume as files using the keys in the Data field as the file names, unless +// the items element is populated with specific mappings of keys to paths. +// ConfigMap volumes support ownership management and SELinux relabeling. +message ConfigMapVolumeSource { + optional LocalObjectReference localObjectReference = 1; + + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + repeated KeyToPath items = 2; + + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + optional int32 defaultMode = 3; + + // Specify whether the ConfigMap or it's keys must be defined + // +optional + optional bool optional = 4; +} + +// A single application container that you want to run within a pod. +message Container { + // Name of the container specified as a DNS_LABEL. + // Each container in a pod must have a unique name (DNS_LABEL). + // Cannot be updated. + optional string name = 1; + + // Docker image name. + // More info: https://kubernetes.io/docs/concepts/containers/images + optional string image = 2; + + // Entrypoint array. Not executed within a shell. + // The docker image's ENTRYPOINT is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + repeated string command = 3; + + // Arguments to the entrypoint. + // The docker image's CMD is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + repeated string args = 4; + + // Container's working directory. + // If not specified, the container runtime's default will be used, which + // might be configured in the container image. + // Cannot be updated. + // +optional + optional string workingDir = 5; + + // List of ports to expose from the container. Exposing a port here gives + // the system additional information about the network connections a + // container uses, but is primarily informational. Not specifying a port here + // DOES NOT prevent that port from being exposed. Any port which is + // listening on the default "0.0.0.0" address inside a container will be + // accessible from the network. + // Cannot be updated. + // +optional + // +patchMergeKey=containerPort + // +patchStrategy=merge + repeated ContainerPort ports = 6; + + // List of sources to populate environment variables in the container. + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys + // will be reported as an event when the container is starting. When a key exists in multiple + // sources, the value associated with the last source will take precedence. + // Values defined by an Env with a duplicate key will take precedence. + // Cannot be updated. + // +optional + repeated EnvFromSource envFrom = 19; + + // List of environment variables to set in the container. + // Cannot be updated. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated EnvVar env = 7; + + // Compute Resources required by this container. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + optional ResourceRequirements resources = 8; + + // Pod volumes to mount into the container's filesystem. + // Cannot be updated. + // +optional + // +patchMergeKey=mountPath + // +patchStrategy=merge + repeated VolumeMount volumeMounts = 9; + + // Periodic probe of container liveness. + // Container will be restarted if the probe fails. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional Probe livenessProbe = 10; + + // Periodic probe of container service readiness. + // Container will be removed from service endpoints if the probe fails. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional Probe readinessProbe = 11; + + // Actions that the management system should take in response to container lifecycle events. + // Cannot be updated. + // +optional + optional Lifecycle lifecycle = 12; + + // Optional: Path at which the file to which the container's termination message + // will be written is mounted into the container's filesystem. + // Message written is intended to be brief final status, such as an assertion failure message. + // Will be truncated by the node if greater than 4096 bytes. The total message length across + // all containers will be limited to 12kb. + // Defaults to /dev/termination-log. + // Cannot be updated. + // +optional + optional string terminationMessagePath = 13; + + // Indicate how the termination message should be populated. File will use the contents of + // terminationMessagePath to populate the container status message on both success and failure. + // FallbackToLogsOnError will use the last chunk of container log output if the termination + // message file is empty and the container exited with an error. + // The log output is limited to 2048 bytes or 80 lines, whichever is smaller. + // Defaults to File. + // Cannot be updated. + // +optional + optional string terminationMessagePolicy = 20; + + // Image pull policy. + // One of Always, Never, IfNotPresent. + // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // +optional + optional string imagePullPolicy = 14; + + // Security options the pod should run with. + // More info: https://kubernetes.io/docs/concepts/policy/security-context/ + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + optional SecurityContext securityContext = 15; + + // Whether this container should allocate a buffer for stdin in the container runtime. If this + // is not set, reads from stdin in the container will always result in EOF. + // Default is false. + // +optional + optional bool stdin = 16; + + // Whether the container runtime should close the stdin channel after it has been opened by + // a single attach. When stdin is true the stdin stream will remain open across multiple attach + // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + // first client attaches to stdin, and then remains open and accepts data until the client disconnects, + // at which time stdin is closed and remains closed until the container is restarted. If this + // flag is false, a container processes that reads from stdin will never receive an EOF. + // Default is false + // +optional + optional bool stdinOnce = 17; + + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // Default is false. + // +optional + optional bool tty = 18; +} + +// Describe a container image +message ContainerImage { + // Names by which this image is known. + // e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"] + repeated string names = 1; + + // The size of the image in bytes. + // +optional + optional int64 sizeBytes = 2; +} + +// ContainerPort represents a network port in a single container. +message ContainerPort { + // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + // named port in a pod must have a unique name. Name for the port that can be + // referred to by services. + // +optional + optional string name = 1; + + // Number of port to expose on the host. + // If specified, this must be a valid port number, 0 < x < 65536. + // If HostNetwork is specified, this must match ContainerPort. + // Most containers do not need this. + // +optional + optional int32 hostPort = 2; + + // Number of port to expose on the pod's IP address. + // This must be a valid port number, 0 < x < 65536. + optional int32 containerPort = 3; + + // Protocol for port. Must be UDP or TCP. + // Defaults to "TCP". + // +optional + optional string protocol = 4; + + // What host IP to bind the external port to. + // +optional + optional string hostIP = 5; +} + +// ContainerState holds a possible state of container. +// Only one of its members may be specified. +// If none of them is specified, the default one is ContainerStateWaiting. +message ContainerState { + // Details about a waiting container + // +optional + optional ContainerStateWaiting waiting = 1; + + // Details about a running container + // +optional + optional ContainerStateRunning running = 2; + + // Details about a terminated container + // +optional + optional ContainerStateTerminated terminated = 3; +} + +// ContainerStateRunning is a running state of a container. +message ContainerStateRunning { + // Time at which the container was last (re-)started + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1; +} + +// ContainerStateTerminated is a terminated state of a container. +message ContainerStateTerminated { + // Exit status from the last termination of the container + optional int32 exitCode = 1; + + // Signal from the last termination of the container + // +optional + optional int32 signal = 2; + + // (brief) reason from the last termination of the container + // +optional + optional string reason = 3; + + // Message regarding the last termination of the container + // +optional + optional string message = 4; + + // Time at which previous execution of the container started + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5; + + // Time at which the container last terminated + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6; + + // Container's ID in the format 'docker://' + // +optional + optional string containerID = 7; +} + +// ContainerStateWaiting is a waiting state of a container. +message ContainerStateWaiting { + // (brief) reason the container is not yet running. + // +optional + optional string reason = 1; + + // Message regarding why the container is not yet running. + // +optional + optional string message = 2; +} + +// ContainerStatus contains details for the current status of this container. +message ContainerStatus { + // This must be a DNS_LABEL. Each container in a pod must have a unique name. + // Cannot be updated. + optional string name = 1; + + // Details about the container's current condition. + // +optional + optional ContainerState state = 2; + + // Details about the container's last termination condition. + // +optional + optional ContainerState lastState = 3; + + // Specifies whether the container has passed its readiness probe. + optional bool ready = 4; + + // The number of times the container has been restarted, currently based on + // the number of dead containers that have not yet been removed. + // Note that this is calculated from dead containers. But those containers are subject to + // garbage collection. This value will get capped at 5 by GC. + optional int32 restartCount = 5; + + // The image the container is running. + // More info: https://kubernetes.io/docs/concepts/containers/images + // TODO(dchen1107): Which image the container is running with? + optional string image = 6; + + // ImageID of the container's image. + optional string imageID = 7; + + // Container's ID in the format 'docker://'. + // +optional + optional string containerID = 8; +} + +// DaemonEndpoint contains information about a single Daemon endpoint. +message DaemonEndpoint { + // Port number of the given endpoint. + optional int32 Port = 1; +} + +// DeleteOptions may be provided when deleting an API object +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +message DeleteOptions { + // The duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // Defaults to a per object value if not specified. zero means delete immediately. + // +optional + optional int64 gracePeriodSeconds = 1; + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + // +optional + optional Preconditions preconditions = 2; + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + optional bool orphanDependents = 3; + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + optional string propagationPolicy = 4; +} + +// Represents downward API info for projecting into a projected volume. +// Note that this is identical to a downwardAPI volume source without the default +// mode. +message DownwardAPIProjection { + // Items is a list of DownwardAPIVolume file + // +optional + repeated DownwardAPIVolumeFile items = 1; +} + +// DownwardAPIVolumeFile represents information to create the file containing the pod field +message DownwardAPIVolumeFile { + // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + optional string path = 1; + + // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + // +optional + optional ObjectFieldSelector fieldRef = 2; + + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + // +optional + optional ResourceFieldSelector resourceFieldRef = 3; + + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + optional int32 mode = 4; +} + +// DownwardAPIVolumeSource represents a volume containing downward API info. +// Downward API volumes support ownership management and SELinux relabeling. +message DownwardAPIVolumeSource { + // Items is a list of downward API volume file + // +optional + repeated DownwardAPIVolumeFile items = 1; + + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + optional int32 defaultMode = 2; +} + +// Represents an empty directory for a pod. +// Empty directory volumes support ownership management and SELinux relabeling. +message EmptyDirVolumeSource { + // What type of storage medium should back this directory. + // The default is "" which means to use the node's default medium. + // Must be an empty string (default) or Memory. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + optional string medium = 1; + + // Total amount of local storage required for this EmptyDir volume. + // The size limit is also applicable for memory medium. + // The maximum usage on memory medium EmptyDir would be the minimum value between + // the SizeLimit specified here and the sum of memory limits of all containers in a pod. + // The default is nil which means that the limit is undefined. + // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2; +} + +// EndpointAddress is a tuple that describes single IP address. +message EndpointAddress { + // The IP of this endpoint. + // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), + // or link-local multicast ((224.0.0.0/24). + // IPv6 is also accepted but not fully supported on all platforms. Also, certain + // kubernetes components, like kube-proxy, are not IPv6 ready. + // TODO: This should allow hostname or IP, See #4447. + optional string ip = 1; + + // The Hostname of this endpoint + // +optional + optional string hostname = 3; + + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + // +optional + optional string nodeName = 4; + + // Reference to object providing the endpoint. + // +optional + optional ObjectReference targetRef = 2; +} + +// EndpointPort is a tuple that describes a single port. +message EndpointPort { + // The name of this port (corresponds to ServicePort.Name). + // Must be a DNS_LABEL. + // Optional only if one port is defined. + // +optional + optional string name = 1; + + // The port number of the endpoint. + optional int32 port = 2; + + // The IP protocol for this port. + // Must be UDP or TCP. + // Default is TCP. + // +optional + optional string protocol = 3; +} + +// EndpointSubset is a group of addresses with a common set of ports. The +// expanded set of endpoints is the Cartesian product of Addresses x Ports. +// For example, given: +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// The resulting set of endpoints can be viewed as: +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +message EndpointSubset { + // IP addresses which offer the related ports that are marked as ready. These endpoints + // should be considered safe for load balancers and clients to utilize. + // +optional + repeated EndpointAddress addresses = 1; + + // IP addresses which offer the related ports but are not currently marked as ready + // because they have not yet finished starting, have recently failed a readiness check, + // or have recently failed a liveness check. + // +optional + repeated EndpointAddress notReadyAddresses = 2; + + // Port numbers available on the related IP addresses. + // +optional + repeated EndpointPort ports = 3; +} + +// Endpoints is a collection of endpoints that implement the actual service. Example: +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] +message Endpoints { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The set of all endpoints is the union of all subsets. Addresses are placed into + // subsets according to the IPs they share. A single address with multiple ports, + // some of which are ready and some of which are not (because they come from + // different containers) will result in the address being displayed in different + // subsets for the different ports. No address will appear in both Addresses and + // NotReadyAddresses in the same subset. + // Sets of addresses and ports that comprise a service. + repeated EndpointSubset subsets = 2; +} + +// EndpointsList is a list of endpoints. +message EndpointsList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of endpoints. + repeated Endpoints items = 2; +} + +// EnvFromSource represents the source of a set of ConfigMaps +message EnvFromSource { + // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // +optional + optional string prefix = 1; + + // The ConfigMap to select from + // +optional + optional ConfigMapEnvSource configMapRef = 2; + + // The Secret to select from + // +optional + optional SecretEnvSource secretRef = 3; +} + +// EnvVar represents an environment variable present in a Container. +message EnvVar { + // Name of the environment variable. Must be a C_IDENTIFIER. + optional string name = 1; + + // Variable references $(VAR_NAME) are expanded + // using the previous defined environment variables in the container and + // any service environment variables. If a variable cannot be resolved, + // the reference in the input string will be unchanged. The $(VAR_NAME) + // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + // references will never be expanded, regardless of whether the variable + // exists or not. + // Defaults to "". + // +optional + optional string value = 2; + + // Source for the environment variable's value. Cannot be used if value is not empty. + // +optional + optional EnvVarSource valueFrom = 3; +} + +// EnvVarSource represents a source for the value of an EnvVar. +message EnvVarSource { + // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, + // spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP. + // +optional + optional ObjectFieldSelector fieldRef = 1; + + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + // +optional + optional ResourceFieldSelector resourceFieldRef = 2; + + // Selects a key of a ConfigMap. + // +optional + optional ConfigMapKeySelector configMapKeyRef = 3; + + // Selects a key of a secret in the pod's namespace + // +optional + optional SecretKeySelector secretKeyRef = 4; +} + +// Event is a report of an event somewhere in the cluster. +// TODO: Decide whether to store these separately or with the object they apply to. +message Event { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The object that this event is about. + optional ObjectReference involvedObject = 2; + + // This should be a short, machine understandable string that gives the reason + // for the transition into the object's current status. + // TODO: provide exact specification for format. + // +optional + optional string reason = 3; + + // A human-readable description of the status of this operation. + // TODO: decide on maximum length. + // +optional + optional string message = 4; + + // The component reporting this event. Should be a short machine understandable string. + // +optional + optional EventSource source = 5; + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6; + + // The time at which the most recent occurrence of this event was recorded. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7; + + // The number of times this event has occurred. + // +optional + optional int32 count = 8; + + // Type of this event (Normal, Warning), new types could be added in the future + // +optional + optional string type = 9; +} + +// EventList is a list of events. +message EventList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of events + repeated Event items = 2; +} + +// EventSource contains information for an event. +message EventSource { + // Component from which the event is generated. + // +optional + optional string component = 1; + + // Node name on which the event is generated. + // +optional + optional string host = 2; +} + +// ExecAction describes a "run in container" action. +message ExecAction { + // Command is the command line to execute inside the container, the working directory for the + // command is root ('/') in the container's filesystem. The command is simply exec'd, it is + // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + // a shell, you need to explicitly call out to that shell. + // Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + // +optional + repeated string command = 1; +} + +// Represents a Fibre Channel volume. +// Fibre Channel volumes can only be mounted as read/write once. +// Fibre Channel volumes support ownership management and SELinux relabeling. +message FCVolumeSource { + // Required: FC target worldwide names (WWNs) + repeated string targetWWNs = 1; + + // Required: FC target lun number + optional int32 lun = 2; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 3; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; +} + +// FlexVolume represents a generic volume resource that is +// provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. +message FlexVolumeSource { + // Driver is the name of the driver to use for this volume. + optional string driver = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + // +optional + optional string fsType = 2; + + // Optional: SecretRef is reference to the secret object containing + // sensitive information to pass to the plugin scripts. This may be + // empty if no secret object is specified. If the secret object + // contains more than one secret, all secrets are passed to the plugin + // scripts. + // +optional + optional LocalObjectReference secretRef = 3; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // Optional: Extra command options if any. + // +optional + map options = 5; +} + +// Represents a Flocker volume mounted by the Flocker agent. +// One and only one of datasetName and datasetUUID should be set. +// Flocker volumes do not support ownership management or SELinux relabeling. +message FlockerVolumeSource { + // Name of the dataset stored as metadata -> name on the dataset for Flocker + // should be considered as deprecated + // +optional + optional string datasetName = 1; + + // UUID of the dataset. This is unique identifier of a Flocker dataset + // +optional + optional string datasetUUID = 2; +} + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must +// also be in the same GCE project and zone as the kubelet. A GCE PD +// can only be mounted as read/write once or read-only many times. GCE +// PDs support ownership management and SELinux relabeling. +message GCEPersistentDiskVolumeSource { + // Unique name of the PD resource in GCE. Used to identify the disk in GCE. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + optional string pdName = 1; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 2; + + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + optional int32 partition = 3; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + optional bool readOnly = 4; +} + +// Represents a volume that is populated with the contents of a git repository. +// Git repo volumes do not support ownership management. +// Git repo volumes support SELinux relabeling. +message GitRepoVolumeSource { + // Repository URL + optional string repository = 1; + + // Commit hash for the specified revision. + // +optional + optional string revision = 2; + + // Target directory name. + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + // git repository. Otherwise, if specified, the volume will contain the git repository in + // the subdirectory with the given name. + // +optional + optional string directory = 3; +} + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// Glusterfs volumes do not support ownership management or SELinux relabeling. +message GlusterfsVolumeSource { + // EndpointsName is the endpoint name that details Glusterfs topology. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + optional string endpoints = 1; + + // Path is the Glusterfs volume path. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + optional string path = 2; + + // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. + // Defaults to false. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + // +optional + optional bool readOnly = 3; +} + +// HTTPGetAction describes an action based on HTTP Get requests. +message HTTPGetAction { + // Path to access on the HTTP server. + // +optional + optional string path = 1; + + // Name or number of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2; + + // Host name to connect to, defaults to the pod IP. You probably want to set + // "Host" in httpHeaders instead. + // +optional + optional string host = 3; + + // Scheme to use for connecting to the host. + // Defaults to HTTP. + // +optional + optional string scheme = 4; + + // Custom headers to set in the request. HTTP allows repeated headers. + // +optional + repeated HTTPHeader httpHeaders = 5; +} + +// HTTPHeader describes a custom header to be used in HTTP probes +message HTTPHeader { + // The header field name + optional string name = 1; + + // The header field value + optional string value = 2; +} + +// Handler defines a specific action that should be taken +// TODO: pass structured data to these actions, and document that data here. +message Handler { + // One and only one of the following should be specified. + // Exec specifies the action to take. + // +optional + optional ExecAction exec = 1; + + // HTTPGet specifies the http request to perform. + // +optional + optional HTTPGetAction httpGet = 2; + + // TCPSocket specifies an action involving a TCP port. + // TCP hooks not yet supported + // TODO: implement a realistic TCP lifecycle hook + // +optional + optional TCPSocketAction tcpSocket = 3; +} + +// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the +// pod's hosts file. +message HostAlias { + // IP address of the host file entry. + optional string ip = 1; + + // Hostnames for the above IP address. + repeated string hostnames = 2; +} + +// Represents a host path mapped into a pod. +// Host path volumes do not support ownership management or SELinux relabeling. +message HostPathVolumeSource { + // Path of the directory on the host. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + optional string path = 1; +} + +// Represents an ISCSI disk. +// ISCSI volumes can only be mounted as read/write once. +// ISCSI volumes support ownership management and SELinux relabeling. +message ISCSIVolumeSource { + // iSCSI target portal. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + optional string targetPortal = 1; + + // Target iSCSI Qualified Name. + optional string iqn = 2; + + // iSCSI target lun number. + optional int32 lun = 3; + + // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. + // +optional + optional string iscsiInterface = 4; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 5; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // +optional + optional bool readOnly = 6; + + // iSCSI target portal List. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + // +optional + repeated string portals = 7; + + // whether support iSCSI Discovery CHAP authentication + // +optional + optional bool chapAuthDiscovery = 8; + + // whether support iSCSI Session CHAP authentication + // +optional + optional bool chapAuthSession = 11; + + // CHAP secret for iSCSI target and initiator authentication + // +optional + optional LocalObjectReference secretRef = 10; +} + +// Maps a string key to a path within a volume. +message KeyToPath { + // The key to project. + optional string key = 1; + + // The relative path of the file to map the key to. + // May not be an absolute path. + // May not contain the path element '..'. + // May not start with the string '..'. + optional string path = 2; + + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + optional int32 mode = 3; +} + +// Lifecycle describes actions that the management system should take in response to container lifecycle +// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks +// until the action is complete, unless the container process fails, in which case the handler is aborted. +message Lifecycle { + // PostStart is called immediately after a container is created. If the handler fails, + // the container is terminated and restarted according to its restart policy. + // Other management of the container blocks until the hook completes. + // More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + optional Handler postStart = 1; + + // PreStop is called immediately before a container is terminated. + // The container is terminated after the handler completes. + // The reason for termination is passed to the handler. + // Regardless of the outcome of the handler, the container is eventually terminated. + // Other management of the container blocks until the hook completes. + // More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + optional Handler preStop = 2; +} + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +message LimitRange { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the limits enforced. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional LimitRangeSpec spec = 2; +} + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind. +message LimitRangeItem { + // Type of resource that this limit applies to. + // +optional + optional string type = 1; + + // Max usage constraints on this kind by resource name. + // +optional + map max = 2; + + // Min usage constraints on this kind by resource name. + // +optional + map min = 3; + + // Default resource requirement limit value by resource name if resource limit is omitted. + // +optional + map default = 4; + + // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. + // +optional + map defaultRequest = 5; + + // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. + // +optional + map maxLimitRequestRatio = 6; +} + +// LimitRangeList is a list of LimitRange items. +message LimitRangeList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of LimitRange objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md + repeated LimitRange items = 2; +} + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind. +message LimitRangeSpec { + // Limits is the list of LimitRangeItem objects that are enforced. + repeated LimitRangeItem limits = 1; +} + +// List holds a list of objects, which may not be known by the server. +message List { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of objects + repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2; +} + +// ListOptions is the query options to a standard REST list call. +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +message ListOptions { + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + // +optional + optional string labelSelector = 1; + + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + // +optional + optional string fieldSelector = 2; + + // If true, partially initialized resources are included in the response. + // +optional + optional bool includeUninitialized = 6; + + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + // +optional + optional bool watch = 3; + + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + // When specified for list: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + // +optional + optional string resourceVersion = 4; + + // Timeout for the list/watch call. + // +optional + optional int64 timeoutSeconds = 5; +} + +// LoadBalancerIngress represents the status of a load-balancer ingress point: +// traffic intended for the service should be sent to an ingress point. +message LoadBalancerIngress { + // IP is set for load-balancer ingress points that are IP based + // (typically GCE or OpenStack load-balancers) + // +optional + optional string ip = 1; + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + // +optional + optional string hostname = 2; +} + +// LoadBalancerStatus represents the status of a load-balancer. +message LoadBalancerStatus { + // Ingress is a list containing ingress points for the load-balancer. + // Traffic intended for the service should be sent to these ingress points. + // +optional + repeated LoadBalancerIngress ingress = 1; +} + +// LocalObjectReference contains enough information to let you locate the +// referenced object inside the same namespace. +message LocalObjectReference { + // Name of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // TODO: Add other useful fields. apiVersion, kind, uid? + // +optional + optional string name = 1; +} + +// Local represents directly-attached storage with node affinity +message LocalVolumeSource { + // The full path to the volume on the node + // For alpha, this path must be a directory + // Once block as a source is supported, then this path can point to a block device + optional string path = 1; +} + +// Represents an NFS mount that lasts the lifetime of a pod. +// NFS volumes do not support ownership management or SELinux relabeling. +message NFSVolumeSource { + // Server is the hostname or IP address of the NFS server. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + optional string server = 1; + + // Path that is exported by the NFS server. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + optional string path = 2; + + // ReadOnly here will force + // the NFS export to be mounted with read-only permissions. + // Defaults to false. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + optional bool readOnly = 3; +} + +// Namespace provides a scope for Names. +// Use of multiple namespaces is optional. +message Namespace { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the behavior of the Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NamespaceSpec spec = 2; + + // Status describes the current status of a Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NamespaceStatus status = 3; +} + +// NamespaceList is a list of Namespaces. +message NamespaceList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Namespace objects in the list. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + repeated Namespace items = 2; +} + +// NamespaceSpec describes the attributes on a Namespace. +message NamespaceSpec { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. + // More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers + // +optional + repeated string finalizers = 1; +} + +// NamespaceStatus is information about the current status of a Namespace. +message NamespaceStatus { + // Phase is the current lifecycle phase of the namespace. + // More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases + // +optional + optional string phase = 1; +} + +// Node is a worker node in Kubernetes. +// Each node will have a unique identifier in the cache (i.e. in etcd). +message Node { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the behavior of a node. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NodeSpec spec = 2; + + // Most recently observed status of the node. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional NodeStatus status = 3; +} + +// NodeAddress contains information for the node's address. +message NodeAddress { + // Node address type, one of Hostname, ExternalIP or InternalIP. + optional string type = 1; + + // The node address. + optional string address = 2; +} + +// Node affinity is a group of node affinity scheduling rules. +message NodeAffinity { + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // may or may not try to eventually evict the pod from its node. + // +optional + optional NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1; + + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node matches the corresponding matchExpressions; the + // node(s) with the highest sum are the most preferred. + // +optional + repeated PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2; +} + +// NodeCondition contains condition information for a node. +message NodeCondition { + // Type of node condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // Last time we got an update on a given condition. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3; + + // Last time the condition transit from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +message NodeDaemonEndpoints { + // Endpoint on which Kubelet is listening. + // +optional + optional DaemonEndpoint kubeletEndpoint = 1; +} + +// NodeList is the whole list of all Nodes which have been registered with master. +message NodeList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of nodes + repeated Node items = 2; +} + +// NodeProxyOptions is the query options to a Node's proxy call. +message NodeProxyOptions { + // Path is the URL path to use for the current proxy request to node. + // +optional + optional string path = 1; +} + +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +message NodeResources { + // Capacity represents the available resources of a node + map capacity = 1; +} + +// A node selector represents the union of the results of one or more label queries +// over a set of nodes; that is, it represents the OR of the selectors represented +// by the node selector terms. +message NodeSelector { + // Required. A list of node selector terms. The terms are ORed. + repeated NodeSelectorTerm nodeSelectorTerms = 1; +} + +// A node selector requirement is a selector that contains values, a key, and an operator +// that relates the key and values. +message NodeSelectorRequirement { + // The label key that the selector applies to. + // +patchMergeKey=key + // +patchStrategy=merge + optional string key = 1; + + // Represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + optional string operator = 2; + + // An array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. If the operator is Gt or Lt, the values + // array must have a single element, which will be interpreted as an integer. + // This array is replaced during a strategic merge patch. + // +optional + repeated string values = 3; +} + +// A null or empty node selector term matches no objects. +message NodeSelectorTerm { + // Required. A list of node selector requirements. The requirements are ANDed. + repeated NodeSelectorRequirement matchExpressions = 1; +} + +// NodeSpec describes the attributes that a node is created with. +message NodeSpec { + // PodCIDR represents the pod IP range assigned to the node. + // +optional + optional string podCIDR = 1; + + // External ID of the node assigned by some machine database (e.g. a cloud provider). + // Deprecated. + // +optional + optional string externalID = 2; + + // ID of the node assigned by the cloud provider in the format: :// + // +optional + optional string providerID = 3; + + // Unschedulable controls node schedulability of new pods. By default, node is schedulable. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration + // +optional + optional bool unschedulable = 4; + + // If specified, the node's taints. + // +optional + repeated Taint taints = 5; +} + +// NodeStatus is information about the current status of a node. +message NodeStatus { + // Capacity represents the total resources of a node. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + map capacity = 1; + + // Allocatable represents the resources of a node that are available for scheduling. + // Defaults to Capacity. + // +optional + map allocatable = 2; + + // NodePhase is the recently observed lifecycle phase of the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#phase + // The field is never populated, and now is deprecated. + // +optional + optional string phase = 3; + + // Conditions is an array of current observed node conditions. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#condition + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated NodeCondition conditions = 4; + + // List of addresses reachable to the node. + // Queried from cloud provider, if available. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated NodeAddress addresses = 5; + + // Endpoints of daemons running on the Node. + // +optional + optional NodeDaemonEndpoints daemonEndpoints = 6; + + // Set of ids/uuids to uniquely identify the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#info + // +optional + optional NodeSystemInfo nodeInfo = 7; + + // List of container images on this node + // +optional + repeated ContainerImage images = 8; + + // List of attachable volumes in use (mounted) by the node. + // +optional + repeated string volumesInUse = 9; + + // List of volumes that are attached to the node. + // +optional + repeated AttachedVolume volumesAttached = 10; +} + +// NodeSystemInfo is a set of ids/uuids to uniquely identify the node. +message NodeSystemInfo { + // MachineID reported by the node. For unique machine identification + // in the cluster this field is preferred. Learn more from man(5) + // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html + optional string machineID = 1; + + // SystemUUID reported by the node. For unique machine identification + // MachineID is preferred. This field is specific to Red Hat hosts + // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html + optional string systemUUID = 2; + + // Boot ID reported by the node. + optional string bootID = 3; + + // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). + optional string kernelVersion = 4; + + // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). + optional string osImage = 5; + + // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0). + optional string containerRuntimeVersion = 6; + + // Kubelet Version reported by the node. + optional string kubeletVersion = 7; + + // KubeProxy Version reported by the node. + optional string kubeProxyVersion = 8; + + // The Operating System reported by the node + optional string operatingSystem = 9; + + // The Architecture reported by the node + optional string architecture = 10; +} + +// ObjectFieldSelector selects an APIVersioned field of an object. +message ObjectFieldSelector { + // Version of the schema the FieldPath is written in terms of, defaults to "v1". + // +optional + optional string apiVersion = 1; + + // Path of the field to select in the specified API version. + optional string fieldPath = 2; +} + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +// DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon. +// +k8s:openapi-gen=false +message ObjectMeta { + // Name must be unique within a namespace. Is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + optional string name = 1; + + // GenerateName is an optional prefix, used by the server, to generate a unique + // name ONLY IF the Name field has not been provided. + // If this field is used, the name returned to the client will be different + // than the name passed. This value will also be combined with a unique suffix. + // The provided value has the same validation rules as the Name field, + // and may be truncated by the length of the suffix required to make the value + // unique on the server. + // + // If this field is specified and the generated name exists, the server will + // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // + // Applied only if Name is not specified. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency + // +optional + optional string generateName = 2; + + // Namespace defines the space within each name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // + // Must be a DNS_LABEL. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + optional string namespace = 3; + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + optional string selfLink = 4; + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // + // Populated by the system. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + optional string uid = 5; + + // An opaque value that represents the internal version of this object that can + // be used by clients to determine when objects have changed. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and passed unmodified back to the server. + // They may only be valid for a particular resource or set of resources. + // + // Populated by the system. + // Read-only. + // Value must be treated as opaque by clients and . + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + optional string resourceVersion = 6; + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + // +optional + optional int64 generation = 7; + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. + // Read-only. + // Null for lists. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time creationTimestamp = 8; + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource is expected to be deleted (no longer visible + // from resource lists, and not reachable by name) after the time in this field. Once set, + // this value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time deletionTimestamp = 9; + + // Number of seconds allowed for this object to gracefully terminate before + // it will be removed from the system. Only set when deletionTimestamp is also set. + // May only be shortened. + // Read-only. + // +optional + optional int64 deletionGracePeriodSeconds = 10; + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + // +optional + map labels = 11; + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + // +optional + map annotations = 12; + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + // +optional + // +patchMergeKey=uid + // +patchStrategy=merge + repeated k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference ownerReferences = 13; + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Initializers initializers = 16; + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + // +optional + // +patchStrategy=merge + repeated string finalizers = 14; + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + // +optional + optional string clusterName = 15; +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +message ObjectReference { + // Kind of the referent. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional string kind = 1; + + // Namespace of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + optional string namespace = 2; + + // Name of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + optional string name = 3; + + // UID of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + optional string uid = 4; + + // API version of the referent. + // +optional + optional string apiVersion = 5; + + // Specific resourceVersion to which this reference is made, if any. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + optional string resourceVersion = 6; + + // If referring to a piece of an object instead of an entire object, this string + // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + // For example, if the object reference is to a container within a pod, this would take on a value like: + // "spec.containers{name}" (where "name" refers to the name of the container that triggered + // the event) or if no container name is specified "spec.containers[2]" (container with + // index 2 in this pod). This syntax is chosen only to have some well-defined way of + // referencing a part of an object. + // TODO: this design is not final and this field is subject to change in the future. + // +optional + optional string fieldPath = 7; +} + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// It is analogous to a node. +// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes +message PersistentVolume { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines a specification of a persistent volume owned by the cluster. + // Provisioned by an administrator. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + optional PersistentVolumeSpec spec = 2; + + // Status represents the current information/status for the persistent volume. + // Populated by the system. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + optional PersistentVolumeStatus status = 3; +} + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +message PersistentVolumeClaim { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired characteristics of a volume requested by a pod author. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + optional PersistentVolumeClaimSpec spec = 2; + + // Status represents the current information/status of a persistent volume claim. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + optional PersistentVolumeClaimStatus status = 3; +} + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +message PersistentVolumeClaimList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // A list of persistent volume claims. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + repeated PersistentVolumeClaim items = 2; +} + +// PersistentVolumeClaimSpec describes the common attributes of storage devices +// and allows a Source for provider-specific attributes +message PersistentVolumeClaimSpec { + // AccessModes contains the desired access modes the volume should have. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + repeated string accessModes = 1; + + // A label query over volumes to consider for binding. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4; + + // Resources represents the minimum resources the volume should have. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + optional ResourceRequirements resources = 2; + + // VolumeName is the binding reference to the PersistentVolume backing this claim. + // +optional + optional string volumeName = 3; + + // Name of the StorageClass required by the claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + // +optional + optional string storageClassName = 5; +} + +// PersistentVolumeClaimStatus is the current status of a persistent volume claim. +message PersistentVolumeClaimStatus { + // Phase represents the current phase of PersistentVolumeClaim. + // +optional + optional string phase = 1; + + // AccessModes contains the actual access modes the volume backing the PVC has. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + repeated string accessModes = 2; + + // Represents the actual resources of the underlying volume. + // +optional + map capacity = 3; +} + +// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. +// This volume finds the bound PV and mounts that volume for the pod. A +// PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another +// type of volume that is owned by someone else (the system). +message PersistentVolumeClaimVolumeSource { + // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + optional string claimName = 1; + + // Will force the ReadOnly setting in VolumeMounts. + // Default false. + // +optional + optional bool readOnly = 2; +} + +// PersistentVolumeList is a list of PersistentVolume items. +message PersistentVolumeList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of persistent volumes. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes + repeated PersistentVolume items = 2; +} + +// PersistentVolumeSource is similar to VolumeSource but meant for the +// administrator who creates PVs. Exactly one of its members must be set. +message PersistentVolumeSource { + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + optional GCEPersistentDiskVolumeSource gcePersistentDisk = 1; + + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2; + + // HostPath represents a directory on the host. + // Provisioned by a developer or tester. + // This is useful for single-node development and testing only! + // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // +optional + optional HostPathVolumeSource hostPath = 3; + + // Glusterfs represents a Glusterfs volume that is attached to a host and + // exposed to the pod. Provisioned by an admin. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + optional GlusterfsVolumeSource glusterfs = 4; + + // NFS represents an NFS mount on the host. Provisioned by an admin. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + optional NFSVolumeSource nfs = 5; + + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + optional RBDVolumeSource rbd = 6; + + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + // +optional + optional ISCSIVolumeSource iscsi = 7; + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional CinderVolumeSource cinder = 8; + + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + optional CephFSVolumeSource cephfs = 9; + + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + optional FCVolumeSource fc = 10; + + // Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running + // +optional + optional FlockerVolumeSource flocker = 11; + + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + // +optional + optional FlexVolumeSource flexVolume = 12; + + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + optional AzureFileVolumeSource azureFile = 13; + + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + optional VsphereVirtualDiskVolumeSource vsphereVolume = 14; + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + optional QuobyteVolumeSource quobyte = 15; + + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + optional AzureDiskVolumeSource azureDisk = 16; + + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 17; + + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + optional PortworxVolumeSource portworxVolume = 18; + + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + optional ScaleIOVolumeSource scaleIO = 19; + + // Local represents directly-attached storage with node affinity + // +optional + optional LocalVolumeSource local = 20; + + // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod + // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md + // +optional + optional StorageOSPersistentVolumeSource storageos = 21; +} + +// PersistentVolumeSpec is the specification of a persistent volume. +message PersistentVolumeSpec { + // A description of the persistent volume's resources and capacity. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + map capacity = 1; + + // The actual volume backing the persistent volume. + optional PersistentVolumeSource persistentVolumeSource = 2; + + // AccessModes contains all ways the volume can be mounted. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes + // +optional + repeated string accessModes = 3; + + // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // Expected to be non-nil when bound. + // claim.VolumeName is the authoritative bind between PV and PVC. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding + // +optional + optional ObjectReference claimRef = 4; + + // What happens to a persistent volume when released from its claim. + // Valid options are Retain (default) and Recycle. + // Recycling must be supported by the volume plugin underlying this persistent volume. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming + // +optional + optional string persistentVolumeReclaimPolicy = 5; + + // Name of StorageClass to which this persistent volume belongs. Empty value + // means that this volume does not belong to any StorageClass. + // +optional + optional string storageClassName = 6; +} + +// PersistentVolumeStatus is the current status of a persistent volume. +message PersistentVolumeStatus { + // Phase indicates if a volume is available, bound to a claim, or released by a claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase + // +optional + optional string phase = 1; + + // A human-readable message indicating details about why the volume is in this state. + // +optional + optional string message = 2; + + // Reason is a brief CamelCase string that describes any failure and is meant + // for machine parsing and tidy display in the CLI. + // +optional + optional string reason = 3; +} + +// Represents a Photon Controller persistent disk resource. +message PhotonPersistentDiskVolumeSource { + // ID that identifies Photon Controller persistent disk + optional string pdID = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + optional string fsType = 2; +} + +// Pod is a collection of containers that can run on a host. This resource is created +// by clients and scheduled onto hosts. +message Pod { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodSpec spec = 2; + + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodStatus status = 3; +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +message PodAffinity { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1; + + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + // +optional + repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2; +} + +// Defines a set of pods (namely those matching the labelSelector +// relative to the given namespace(s)) that this pod should be +// co-located (affinity) or not co-located (anti-affinity) with, +// where co-located is defined as running on a node whose value of +// the label with key tches that of any node on which +// a pod of the set of pods is running +message PodAffinityTerm { + // A label query over a set of resources, in this case pods. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1; + + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // null or empty list means "this pod's namespace" + repeated string namespaces = 2; + + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + // the labelSelector in the specified namespaces, where co-located is defined as running on a node + // whose value of the label with key topologyKey matches that of any node on which any of the + // selected pods is running. + // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" + // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); + // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. + // +optional + optional string topologyKey = 3; +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +message PodAntiAffinity { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1; + + // The scheduler will prefer to schedule pods to nodes that satisfy + // the anti-affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling anti-affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + // +optional + repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2; +} + +// PodAttachOptions is the query options to a Pod's remote attach call. +// --- +// TODO: merge w/ PodExecOptions below for stdin, stdout, etc +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +message PodAttachOptions { + // Stdin if true, redirects the standard input stream of the pod for this call. + // Defaults to false. + // +optional + optional bool stdin = 1; + + // Stdout if true indicates that stdout is to be redirected for the attach call. + // Defaults to true. + // +optional + optional bool stdout = 2; + + // Stderr if true indicates that stderr is to be redirected for the attach call. + // Defaults to true. + // +optional + optional bool stderr = 3; + + // TTY if true indicates that a tty will be allocated for the attach call. + // This is passed through the container runtime so the tty + // is allocated on the worker node by the container runtime. + // Defaults to false. + // +optional + optional bool tty = 4; + + // The container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + // +optional + optional string container = 5; +} + +// PodCondition contains details for the current condition of this pod. +message PodCondition { + // Type is the type of the condition. + // Currently only Ready. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + optional string type = 1; + + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + optional string status = 2; + + // Last time we probed the condition. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3; + + // Last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // Unique, one-word, CamelCase reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human-readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// PodExecOptions is the query options to a Pod's remote exec call. +// --- +// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +message PodExecOptions { + // Redirect the standard input stream of the pod for this call. + // Defaults to false. + // +optional + optional bool stdin = 1; + + // Redirect the standard output stream of the pod for this call. + // Defaults to true. + // +optional + optional bool stdout = 2; + + // Redirect the standard error stream of the pod for this call. + // Defaults to true. + // +optional + optional bool stderr = 3; + + // TTY if true indicates that a tty will be allocated for the exec call. + // Defaults to false. + // +optional + optional bool tty = 4; + + // Container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + // +optional + optional string container = 5; + + // Command is the remote command to execute. argv array. Not executed within a shell. + repeated string command = 6; +} + +// PodList is a list of Pods. +message PodList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of pods. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md + repeated Pod items = 2; +} + +// PodLogOptions is the query options for a Pod's logs REST call. +message PodLogOptions { + // The container for which to stream logs. Defaults to only container if there is one container in the pod. + // +optional + optional string container = 1; + + // Follow the log stream of the pod. Defaults to false. + // +optional + optional bool follow = 2; + + // Return previous terminated container logs. Defaults to false. + // +optional + optional bool previous = 3; + + // A relative time in seconds before the current time from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + // +optional + optional int64 sinceSeconds = 4; + + // An RFC3339 timestamp from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5; + + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. Defaults to false. + // +optional + optional bool timestamps = 6; + + // If set, the number of lines from the end of the logs to show. If not specified, + // logs are shown from the creation of the container or sinceSeconds or sinceTime + // +optional + optional int64 tailLines = 7; + + // If set, the number of bytes to read from the server before terminating the + // log output. This may not display a complete final line of logging, and may return + // slightly more or slightly less than the specified limit. + // +optional + optional int64 limitBytes = 8; +} + +// PodPortForwardOptions is the query options to a Pod's port forward call +// when using WebSockets. +// The `port` query parameter must specify the port or +// ports (comma separated) to forward over. +// Port forwarding over SPDY does not use these options. It requires the port +// to be passed in the `port` header as part of request. +message PodPortForwardOptions { + // List of ports to forward + // Required when using WebSockets + // +optional + repeated int32 ports = 1; +} + +// PodProxyOptions is the query options to a Pod's proxy call. +message PodProxyOptions { + // Path is the URL path to use for the current proxy request to pod. + // +optional + optional string path = 1; +} + +// PodSecurityContext holds pod-level security attributes and common container settings. +// Some fields are also present in container.securityContext. Field values of +// container.securityContext take precedence over field values of PodSecurityContext. +message PodSecurityContext { + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + // +optional + optional SELinuxOptions seLinuxOptions = 1; + + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // +optional + optional int64 runAsUser = 2; + + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + optional bool runAsNonRoot = 3; + + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID. If unspecified, no groups will be added to + // any container. + // +optional + repeated int64 supplementalGroups = 4; + + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // +optional + optional int64 fsGroup = 5; +} + +// Describes the class of pods that should avoid this node. +// Exactly one field should be set. +message PodSignature { + // Reference to controller whose pods should avoid this node. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1; +} + +// PodSpec is a description of a pod. +message PodSpec { + // List of volumes that can be mounted by containers belonging to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated Volume volumes = 1; + + // List of initialization containers belonging to the pod. + // Init containers are executed in order prior to containers being started. If any + // init container fails, the pod is considered to have failed and is handled according + // to its restartPolicy. The name for an init container or normal container must be + // unique among all containers. + // Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. + // The resourceRequirements of an init container are taken into account during scheduling + // by finding the highest request/limit for each resource type, and then using the max of + // of that value or the sum of the normal containers. Limits are applied to init containers + // in a similar fashion. + // Init containers cannot currently be added or removed. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + // +patchMergeKey=name + // +patchStrategy=merge + repeated Container initContainers = 20; + + // List of containers belonging to the pod. + // Containers cannot currently be added or removed. + // There must be at least one container in a Pod. + // Cannot be updated. + // +patchMergeKey=name + // +patchStrategy=merge + repeated Container containers = 2; + + // Restart policy for all containers within the pod. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + // +optional + optional string restartPolicy = 3; + + // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. + // Value must be non-negative integer. The value zero indicates delete immediately. + // If this value is nil, the default grace period will be used instead. + // The grace period is the duration in seconds after the processes running in the pod are sent + // a termination signal and the time when the processes are forcibly halted with a kill signal. + // Set this value longer than the expected cleanup time for your process. + // Defaults to 30 seconds. + // +optional + optional int64 terminationGracePeriodSeconds = 4; + + // Optional duration in seconds the pod may be active on the node relative to + // StartTime before the system will actively try to mark it failed and kill associated containers. + // Value must be a positive integer. + // +optional + optional int64 activeDeadlineSeconds = 5; + + // Set DNS policy for containers within the pod. + // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. + // Defaults to "ClusterFirst". + // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // +optional + optional string dnsPolicy = 6; + + // NodeSelector is a selector which must be true for the pod to fit on a node. + // Selector which must match a node's labels for the pod to be scheduled on that node. + // More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + // +optional + map nodeSelector = 7; + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + // +optional + optional string serviceAccountName = 8; + + // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + // Deprecated: Use serviceAccountName instead. + // +k8s:conversion-gen=false + // +optional + optional string serviceAccount = 9; + + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + // +optional + optional bool automountServiceAccountToken = 21; + + // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, + // the scheduler simply schedules this pod onto that node, assuming that it fits resource + // requirements. + // +optional + optional string nodeName = 10; + + // Host networking requested for this pod. Use the host's network namespace. + // If this option is set, the ports that will be used must be specified. + // Default to false. + // +k8s:conversion-gen=false + // +optional + optional bool hostNetwork = 11; + + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + optional bool hostPID = 12; + + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + optional bool hostIPC = 13; + + // SecurityContext holds pod-level security attributes and common container settings. + // Optional: Defaults to empty. See type description for default values of each field. + // +optional + optional PodSecurityContext securityContext = 14; + + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // If specified, these secrets will be passed to individual puller implementations for them to use. For example, + // in the case of docker, only DockerConfig type secrets are honored. + // More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated LocalObjectReference imagePullSecrets = 15; + + // Specifies the hostname of the Pod + // If not specified, the pod's hostname will be set to a system-defined value. + // +optional + optional string hostname = 16; + + // If specified, the fully qualified Pod hostname will be "...svc.". + // If not specified, the pod will not have a domainname at all. + // +optional + optional string subdomain = 17; + + // If specified, the pod's scheduling constraints + // +optional + optional Affinity affinity = 18; + + // If specified, the pod will be dispatched by specified scheduler. + // If not specified, the pod will be dispatched by default scheduler. + // +optional + optional string schedulerName = 19; + + // If specified, the pod's tolerations. + // +optional + repeated Toleration tolerations = 22; + + // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts + // file if specified. This is only valid for non-hostNetwork pods. + // +optional + // +patchMergeKey=ip + // +patchStrategy=merge + repeated HostAlias hostAliases = 23; +} + +// PodStatus represents information about the status of a pod. Status may trail the actual +// state of a system. +message PodStatus { + // Current condition of the pod. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase + // +optional + optional string phase = 1; + + // Current service state of pod. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated PodCondition conditions = 2; + + // A human readable message indicating details about why the pod is in this condition. + // +optional + optional string message = 3; + + // A brief CamelCase message indicating details about why the pod is in this state. + // e.g. 'OutOfDisk' + // +optional + optional string reason = 4; + + // IP address of the host to which the pod is assigned. Empty if not yet scheduled. + // +optional + optional string hostIP = 5; + + // IP address allocated to the pod. Routable at least within the cluster. + // Empty if not yet allocated. + // +optional + optional string podIP = 6; + + // RFC 3339 date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the pod. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7; + + // The list has one entry per init container in the manifest. The most recent successful + // init container will have ready = true, the most recently started container will have + // startTime set. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + repeated ContainerStatus initContainerStatuses = 10; + + // The list has one entry per container in the manifest. Each entry is currently the output + // of `docker inspect`. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + // +optional + repeated ContainerStatus containerStatuses = 8; + + // The Quality of Service (QOS) classification assigned to the pod based on resource requirements + // See PodQOSClass type for available QOS classes + // More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md + // +optional + optional string qosClass = 9; +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +message PodStatusResult { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodStatus status = 2; +} + +// PodTemplate describes a template for creating copies of a predefined pod. +message PodTemplate { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Template defines the pods that will be created from this pod template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodTemplateSpec template = 2; +} + +// PodTemplateList is a list of PodTemplates. +message PodTemplateList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of pod templates + repeated PodTemplate items = 2; +} + +// PodTemplateSpec describes the data a pod should have when created from a template +message PodTemplateSpec { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional PodSpec spec = 2; +} + +// PortworxVolumeSource represents a Portworx volume resource. +message PortworxVolumeSource { + // VolumeID uniquely identifies a Portworx volume + optional string volumeID = 1; + + // FSType represents the filesystem type to mount + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + optional string fsType = 2; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 3; +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +// +k8s:openapi-gen=false +message Preconditions { + // Specifies the target UID. + // +optional + optional string uid = 1; +} + +// Describes a class of pods that should avoid this node. +message PreferAvoidPodsEntry { + // The class of pods. + optional PodSignature podSignature = 1; + + // Time at which this entry was added to the list. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2; + + // (brief) reason why this entry was added to the list. + // +optional + optional string reason = 3; + + // Human readable message indicating why this entry was added to the list. + // +optional + optional string message = 4; +} + +// An empty preferred scheduling term matches all objects with implicit weight 0 +// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +message PreferredSchedulingTerm { + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + optional int32 weight = 1; + + // A node selector term, associated with the corresponding weight. + optional NodeSelectorTerm preference = 2; +} + +// Probe describes a health check to be performed against a container to determine whether it is +// alive or ready to receive traffic. +message Probe { + // The action taken to determine the health of a container + optional Handler handler = 1; + + // Number of seconds after the container has started before liveness probes are initiated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional int32 initialDelaySeconds = 2; + + // Number of seconds after which the probe times out. + // Defaults to 1 second. Minimum value is 1. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + optional int32 timeoutSeconds = 3; + + // How often (in seconds) to perform the probe. + // Default to 10 seconds. Minimum value is 1. + // +optional + optional int32 periodSeconds = 4; + + // Minimum consecutive successes for the probe to be considered successful after having failed. + // Defaults to 1. Must be 1 for liveness. Minimum value is 1. + // +optional + optional int32 successThreshold = 5; + + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + // Defaults to 3. Minimum value is 1. + // +optional + optional int32 failureThreshold = 6; +} + +// Represents a projected volume source +message ProjectedVolumeSource { + // list of volume projections + repeated VolumeProjection sources = 1; + + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + optional int32 defaultMode = 2; +} + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// Quobyte volumes do not support ownership management or SELinux relabeling. +message QuobyteVolumeSource { + // Registry represents a single or multiple Quobyte Registry services + // specified as a string as host:port pair (multiple entries are separated with commas) + // which acts as the central registry for volumes + optional string registry = 1; + + // Volume is a string that references an already created Quobyte volume by name. + optional string volume = 2; + + // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. + // Defaults to false. + // +optional + optional bool readOnly = 3; + + // User to map volume access to + // Defaults to serivceaccount user + // +optional + optional string user = 4; + + // Group to map volume access to + // Default is no group + // +optional + optional string group = 5; +} + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// RBD volumes support ownership management and SELinux relabeling. +message RBDVolumeSource { + // A collection of Ceph monitors. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + repeated string monitors = 1; + + // The rados image name. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + optional string image = 2; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + optional string fsType = 3; + + // The rados pool name. + // Default is rbd. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional string pool = 4; + + // The rados user name. + // Default is admin. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional string user = 5; + + // Keyring is the path to key ring for RBDUser. + // Default is /etc/ceph/keyring. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional string keyring = 6; + + // SecretRef is name of the authentication secret for RBDUser. If provided + // overrides keyring. + // Default is nil. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional LocalObjectReference secretRef = 7; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + optional bool readOnly = 8; +} + +// RangeAllocation is not a public type. +message RangeAllocation { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Range is string that identifies the range represented by 'data'. + optional string range = 2; + + // Data is a bit array containing all allocated addresses in the previous segment. + optional bytes data = 3; +} + +// ReplicationController represents the configuration of a replication controller. +message ReplicationController { + // If the Labels of a ReplicationController are empty, they are defaulted to + // be the same as the Pod(s) that the replication controller manages. + // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the replication controller. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicationControllerSpec spec = 2; + + // Status is the most recently observed status of the replication controller. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicationControllerStatus status = 3; +} + +// ReplicationControllerCondition describes the state of a replication controller at a certain point. +message ReplicationControllerCondition { + // Type of replication controller condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // The reason for the condition's last transition. + // +optional + optional string reason = 4; + + // A human readable message indicating details about the transition. + // +optional + optional string message = 5; +} + +// ReplicationControllerList is a collection of replication controllers. +message ReplicationControllerList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of replication controllers. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + repeated ReplicationController items = 2; +} + +// ReplicationControllerSpec is the specification of a replication controller. +message ReplicationControllerSpec { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + // +optional + optional int32 replicas = 1; + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + optional int32 minReadySeconds = 4; + + // Selector is a label query over pods that should match the Replicas count. + // If Selector is empty, it is defaulted to the labels present on the Pod template. + // Label keys and values that must match in order to be controlled by this replication + // controller, if empty defaulted to labels on Pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + map selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. This takes precedence over a TemplateRef. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + optional PodTemplateSpec template = 3; +} + +// ReplicationControllerStatus represents the current status of a replication +// controller. +message ReplicationControllerStatus { + // Replicas is the most recently oberved number of replicas. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + // +optional + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replication controller. + // +optional + optional int32 readyReplicas = 4; + + // The number of available replicas (ready for at least minReadySeconds) for this replication controller. + // +optional + optional int32 availableReplicas = 5; + + // ObservedGeneration reflects the generation of the most recently observed replication controller. + // +optional + optional int64 observedGeneration = 3; + + // Represents the latest available observations of a replication controller's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated ReplicationControllerCondition conditions = 6; +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +message ResourceFieldSelector { + // Container name: required for volumes, optional for env vars + // +optional + optional string containerName = 1; + + // Required: resource to select + optional string resource = 2; + + // Specifies the output format of the exposed resources, defaults to "1" + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3; +} + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +message ResourceQuota { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired quota. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ResourceQuotaSpec spec = 2; + + // Status defines the actual enforced quota and its current usage. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ResourceQuotaStatus status = 3; +} + +// ResourceQuotaList is a list of ResourceQuota items. +message ResourceQuotaList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of ResourceQuota objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + repeated ResourceQuota items = 2; +} + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota. +message ResourceQuotaSpec { + // Hard is the set of desired hard limits for each named resource. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + map hard = 1; + + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + // +optional + repeated string scopes = 2; +} + +// ResourceQuotaStatus defines the enforced hard limits and observed use. +message ResourceQuotaStatus { + // Hard is the set of enforced hard limits for each named resource. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + map hard = 1; + + // Used is the current observed total usage of the resource in the namespace. + // +optional + map used = 2; +} + +// ResourceRequirements describes the compute resource requirements. +message ResourceRequirements { + // Limits describes the maximum amount of compute resources allowed. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + map limits = 1; + + // Requests describes the minimum amount of compute resources required. + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + map requests = 2; +} + +// SELinuxOptions are the labels to be applied to the container +message SELinuxOptions { + // User is a SELinux user label that applies to the container. + // +optional + optional string user = 1; + + // Role is a SELinux role label that applies to the container. + // +optional + optional string role = 2; + + // Type is a SELinux type label that applies to the container. + // +optional + optional string type = 3; + + // Level is SELinux level label that applies to the container. + // +optional + optional string level = 4; +} + +// ScaleIOVolumeSource represents a persistent ScaleIO volume +message ScaleIOVolumeSource { + // The host address of the ScaleIO API Gateway. + optional string gateway = 1; + + // The name of the storage system as configured in ScaleIO. + optional string system = 2; + + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + optional LocalObjectReference secretRef = 3; + + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + optional bool sslEnabled = 4; + + // The name of the Protection Domain for the configured storage (defaults to "default"). + // +optional + optional string protectionDomain = 5; + + // The Storage Pool associated with the protection domain (defaults to "default"). + // +optional + optional string storagePool = 6; + + // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // +optional + optional string storageMode = 7; + + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + optional string volumeName = 8; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + optional string fsType = 9; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 10; +} + +// Secret holds secret data of a certain type. The total bytes of the values in +// the Data field must be less than MaxSecretSize bytes. +message Secret { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data contains the secret data. Each key must consist of alphanumeric + // characters, '-', '_' or '.'. The serialized form of the secret data is a + // base64 encoded string, representing the arbitrary (possibly non-string) + // data value here. Described in https://tools.ietf.org/html/rfc4648#section-4 + // +optional + map data = 2; + + // stringData allows specifying non-binary secret data in string form. + // It is provided as a write-only convenience method. + // All keys and values are merged into the data field on write, overwriting any existing values. + // It is never output when reading from the API. + // +k8s:conversion-gen=false + // +optional + map stringData = 4; + + // Used to facilitate programmatic handling of secret data. + // +optional + optional string type = 3; +} + +// SecretEnvSource selects a Secret to populate the environment +// variables with. +// +// The contents of the target Secret's Data field will represent the +// key-value pairs as environment variables. +message SecretEnvSource { + // The Secret to select from. + optional LocalObjectReference localObjectReference = 1; + + // Specify whether the Secret must be defined + // +optional + optional bool optional = 2; +} + +// SecretKeySelector selects a key of a Secret. +message SecretKeySelector { + // The name of the secret in the pod's namespace to select from. + optional LocalObjectReference localObjectReference = 1; + + // The key of the secret to select from. Must be a valid secret key. + optional string key = 2; + + // Specify whether the Secret or it's key must be defined + // +optional + optional bool optional = 3; +} + +// SecretList is a list of Secret. +message SecretList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of secret objects. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + repeated Secret items = 2; +} + +// Adapts a secret into a projected volume. +// +// The contents of the target Secret's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names. +// Note that this is identical to a secret volume source without the default +// mode. +message SecretProjection { + optional LocalObjectReference localObjectReference = 1; + + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + repeated KeyToPath items = 2; + + // Specify whether the Secret or its key must be defined + // +optional + optional bool optional = 4; +} + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume +// as files using the keys in the Data field as the file names. +// Secret volumes support ownership management and SELinux relabeling. +message SecretVolumeSource { + // Name of the secret in the pod's namespace to use. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + optional string secretName = 1; + + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + repeated KeyToPath items = 2; + + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + optional int32 defaultMode = 3; + + // Specify whether the Secret or it's keys must be defined + // +optional + optional bool optional = 4; +} + +// SecurityContext holds security configuration that will be applied to a container. +// Some fields are present in both SecurityContext and PodSecurityContext. When both +// are set, the values in SecurityContext take precedence. +message SecurityContext { + // The capabilities to add/drop when running containers. + // Defaults to the default set of capabilities granted by the container runtime. + // +optional + optional Capabilities capabilities = 1; + + // Run container in privileged mode. + // Processes in privileged containers are essentially equivalent to root on the host. + // Defaults to false. + // +optional + optional bool privileged = 2; + + // The SELinux context to be applied to the container. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + optional SELinuxOptions seLinuxOptions = 3; + + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + optional int64 runAsUser = 4; + + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + optional bool runAsNonRoot = 5; + + // Whether this container has a read-only root filesystem. + // Default is false. + // +optional + optional bool readOnlyRootFilesystem = 6; +} + +// SerializedReference is a reference to serialized object. +message SerializedReference { + // The reference to an object in the system. + // +optional + optional ObjectReference reference = 1; +} + +// Service is a named abstraction of software service (for example, mysql) consisting of local port +// (for example 3306) that the proxy listens on, and the selector that determines which pods +// will answer requests sent through the proxy. +message Service { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the behavior of a service. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ServiceSpec spec = 2; + + // Most recently observed status of the service. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ServiceStatus status = 3; +} + +// ServiceAccount binds together: +// * a name, understood by users, and perhaps by peripheral systems, for an identity +// * a principal that can be authenticated and authorized +// * a set of secrets +message ServiceAccount { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated ObjectReference secrets = 2; + + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images + // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets + // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. + // More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod + // +optional + repeated LocalObjectReference imagePullSecrets = 3; + + // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. + // Can be overridden at the pod level. + // +optional + optional bool automountServiceAccountToken = 4; +} + +// ServiceAccountList is a list of ServiceAccount objects +message ServiceAccountList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ServiceAccounts. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + repeated ServiceAccount items = 2; +} + +// ServiceList holds a list of services. +message ServiceList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of services + repeated Service items = 2; +} + +// ServicePort contains information on service's port. +message ServicePort { + // The name of this port within the service. This must be a DNS_LABEL. + // All ports within a ServiceSpec must have unique names. This maps to + // the 'Name' field in EndpointPort objects. + // Optional if only one ServicePort is defined on this service. + // +optional + optional string name = 1; + + // The IP protocol for this port. Supports "TCP" and "UDP". + // Default is TCP. + // +optional + optional string protocol = 2; + + // The port that will be exposed by this service. + optional int32 port = 3; + + // Number or name of the port to access on the pods targeted by the service. + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + // If this is a string, it will be looked up as a named port in the + // target Pod's container ports. If this is not specified, the value + // of the 'port' field is used (an identity map). + // This field is ignored for services with clusterIP=None, and should be + // omitted or set equal to the 'port' field. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4; + + // The port on each node on which this service is exposed when type=NodePort or LoadBalancer. + // Usually assigned by the system. If specified, it will be allocated to the service + // if unused or else creation of the service will fail. + // Default is to auto-allocate a port if the ServiceType of this Service requires one. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + // +optional + optional int32 nodePort = 5; +} + +// ServiceProxyOptions is the query options to a Service's proxy call. +message ServiceProxyOptions { + // Path is the part of URLs that include service endpoints, suffixes, + // and parameters to use for the current proxy request to service. + // For example, the whole request URL is + // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. + // Path is _search?q=user:kimchy. + // +optional + optional string path = 1; +} + +// ServiceSpec describes the attributes that a user creates on a service. +message ServiceSpec { + // The list of ports that are exposed by this service. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +patchMergeKey=port + // +patchStrategy=merge + repeated ServicePort ports = 1; + + // Route service traffic to pods with label keys and values matching this + // selector. If empty or not present, the service is assumed to have an + // external process managing its endpoints, which Kubernetes will not + // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. + // Ignored if type is ExternalName. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/ + // +optional + map selector = 2; + + // clusterIP is the IP address of the service and is usually assigned + // randomly by the master. If an address is specified manually and is not in + // use by others, it will be allocated to the service; otherwise, creation + // of the service will fail. This field can not be changed through updates. + // Valid values are "None", empty string (""), or a valid IP address. "None" + // can be specified for headless services when proxying is not required. + // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if + // type is ExternalName. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + optional string clusterIP = 3; + + // type determines how the Service is exposed. Defaults to ClusterIP. Valid + // options are ExternalName, ClusterIP, NodePort, and LoadBalancer. + // "ExternalName" maps to the specified externalName. + // "ClusterIP" allocates a cluster-internal IP address for load-balancing to + // endpoints. Endpoints are determined by the selector or if that is not + // specified, by manual construction of an Endpoints object. If clusterIP is + // "None", no virtual IP is allocated and the endpoints are published as a + // set of endpoints rather than a stable IP. + // "NodePort" builds on ClusterIP and allocates a port on every node which + // routes to the clusterIP. + // "LoadBalancer" builds on NodePort and creates an + // external load-balancer (if supported in the current cloud) which routes + // to the clusterIP. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types + // +optional + optional string type = 4; + + // externalIPs is a list of IP addresses for which nodes in the cluster + // will also accept traffic for this service. These IPs are not managed by + // Kubernetes. The user is responsible for ensuring that traffic arrives + // at a node with this IP. A common example is external load-balancers + // that are not part of the Kubernetes system. + // +optional + repeated string externalIPs = 5; + + // Supports "ClientIP" and "None". Used to maintain session affinity. + // Enable client IP based session affinity. + // Must be ClientIP or None. + // Defaults to None. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + optional string sessionAffinity = 7; + + // Only applies to Service Type: LoadBalancer + // LoadBalancer will get created with the IP specified in this field. + // This feature depends on whether the underlying cloud-provider supports specifying + // the loadBalancerIP when a load balancer is created. + // This field will be ignored if the cloud-provider does not support the feature. + // +optional + optional string loadBalancerIP = 8; + + // If specified and supported by the platform, this will restrict traffic through the cloud-provider + // load-balancer will be restricted to the specified client IPs. This field will be ignored if the + // cloud-provider does not support the feature." + // More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/ + // +optional + repeated string loadBalancerSourceRanges = 9; + + // externalName is the external reference that kubedns or equivalent will + // return as a CNAME record for this service. No proxying will be involved. + // Must be a valid DNS name and requires Type to be ExternalName. + // +optional + optional string externalName = 10; + + // externalTrafficPolicy denotes if this Service desires to route external + // traffic to node-local or cluster-wide endpoints. "Local" preserves the + // client source IP and avoids a second hop for LoadBalancer and Nodeport + // type services, but risks potentially imbalanced traffic spreading. + // "Cluster" obscures the client source IP and may cause a second hop to + // another node, but should have good overall load-spreading. + // +optional + optional string externalTrafficPolicy = 11; + + // healthCheckNodePort specifies the healthcheck nodePort for the service. + // If not specified, HealthCheckNodePort is created by the service api + // backend with the allocated nodePort. Will use user-specified nodePort value + // if specified by the client. Only effects when Type is set to LoadBalancer + // and ExternalTrafficPolicy is set to Local. + // +optional + optional int32 healthCheckNodePort = 12; +} + +// ServiceStatus represents the current status of a service. +message ServiceStatus { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + // +optional + optional LoadBalancerStatus loadBalancer = 1; +} + +// Represents a StorageOS persistent volume resource. +message StorageOSPersistentVolumeSource { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + optional string volumeName = 1; + + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + optional string volumeNamespace = 2; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + optional string fsType = 3; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + optional ObjectReference secretRef = 5; +} + +// Represents a StorageOS persistent volume resource. +message StorageOSVolumeSource { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + optional string volumeName = 1; + + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + optional string volumeNamespace = 2; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + optional string fsType = 3; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 4; + + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + optional LocalObjectReference secretRef = 5; +} + +// Sysctl defines a kernel parameter to be set +message Sysctl { + // Name of a property to set + optional string name = 1; + + // Value of a property to set + optional string value = 2; +} + +// TCPSocketAction describes an action based on opening a socket +message TCPSocketAction { + // Number or name of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1; + + // Optional: Host name to connect to, defaults to the pod IP. + // +optional + optional string host = 2; +} + +// The node this Taint is attached to has the effect "effect" on +// any pod that that does not tolerate the Taint. +message Taint { + // Required. The taint key to be applied to a node. + // +patchMergeKey=key + // +patchStrategy=merge + optional string key = 1; + + // Required. The taint value corresponding to the taint key. + // +optional + optional string value = 2; + + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule, PreferNoSchedule and NoExecute. + optional string effect = 3; + + // TimeAdded represents the time at which the taint was added. + // It is only written for NoExecute taints. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4; +} + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple using the matching operator . +message Toleration { + // Key is the taint key that the toleration applies to. Empty means match all taint keys. + // If the key is empty, operator must be Exists; this combination means to match all values and all keys. + // +optional + // +patchMergeKey=key + // +patchStrategy=merge + optional string key = 1; + + // Operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a pod can + // tolerate all taints of a particular category. + // +optional + optional string operator = 2; + + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value should be empty, otherwise just a regular string. + // +optional + optional string value = 3; + + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + // +optional + optional string effect = 4; + + // TolerationSeconds represents the period of time the toleration (which must be + // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + // it is not set, which means tolerate the taint forever (do not evict). Zero and + // negative values will be treated as 0 (evict immediately) by the system. + // +optional + optional int64 tolerationSeconds = 5; +} + +// Volume represents a named volume in a pod that may be accessed by any container in the pod. +message Volume { + // Volume's name. + // Must be a DNS_LABEL and unique within the pod. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + optional string name = 1; + + // VolumeSource represents the location and type of the mounted volume. + // If not specified, the Volume is implied to be an EmptyDir. + // This implied behavior is deprecated and will be removed in a future version. + optional VolumeSource volumeSource = 2; +} + +// VolumeMount describes a mounting of a Volume within a container. +message VolumeMount { + // This must match the Name of a Volume. + optional string name = 1; + + // Mounted read-only if true, read-write otherwise (false or unspecified). + // Defaults to false. + // +optional + optional bool readOnly = 2; + + // Path within the container at which the volume should be mounted. Must + // not contain ':'. + optional string mountPath = 3; + + // Path within the volume from which the container's volume should be mounted. + // Defaults to "" (volume's root). + // +optional + optional string subPath = 4; +} + +// Projection that may be projected along with other supported volume types +message VolumeProjection { + // information about the secret data to project + optional SecretProjection secret = 1; + + // information about the downwardAPI data to project + optional DownwardAPIProjection downwardAPI = 2; + + // information about the configMap data to project + optional ConfigMapProjection configMap = 3; +} + +// Represents the source of a volume to mount. +// Only one of its members may be specified. +message VolumeSource { + // HostPath represents a pre-existing file or directory on the host + // machine that is directly exposed to the container. This is generally + // used for system agents or other privileged things that are allowed + // to see the host machine. Most containers will NOT need this. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // --- + // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not + // mount host directories as read/write. + // +optional + optional HostPathVolumeSource hostPath = 1; + + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + optional EmptyDirVolumeSource emptyDir = 2; + + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3; + + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4; + + // GitRepo represents a git repository at a particular revision. + // +optional + optional GitRepoVolumeSource gitRepo = 5; + + // Secret represents a secret that should populate this volume. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + optional SecretVolumeSource secret = 6; + + // NFS represents an NFS mount on the host that shares a pod's lifetime + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + optional NFSVolumeSource nfs = 7; + + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md + // +optional + optional ISCSIVolumeSource iscsi = 8; + + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + optional GlusterfsVolumeSource glusterfs = 9; + + // PersistentVolumeClaimVolumeSource represents a reference to a + // PersistentVolumeClaim in the same namespace. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10; + + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + optional RBDVolumeSource rbd = 11; + + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + // +optional + optional FlexVolumeSource flexVolume = 12; + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + optional CinderVolumeSource cinder = 13; + + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + optional CephFSVolumeSource cephfs = 14; + + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + // +optional + optional FlockerVolumeSource flocker = 15; + + // DownwardAPI represents downward API about the pod that should populate this volume + // +optional + optional DownwardAPIVolumeSource downwardAPI = 16; + + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + optional FCVolumeSource fc = 17; + + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + optional AzureFileVolumeSource azureFile = 18; + + // ConfigMap represents a configMap that should populate this volume + // +optional + optional ConfigMapVolumeSource configMap = 19; + + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + optional VsphereVirtualDiskVolumeSource vsphereVolume = 20; + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + optional QuobyteVolumeSource quobyte = 21; + + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + optional AzureDiskVolumeSource azureDisk = 22; + + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 23; + + // Items for all in one resources secrets, configmaps, and downward API + optional ProjectedVolumeSource projected = 26; + + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + optional PortworxVolumeSource portworxVolume = 24; + + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + optional ScaleIOVolumeSource scaleIO = 25; + + // StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + // +optional + optional StorageOSVolumeSource storageos = 27; +} + +// Represents a vSphere volume resource. +message VsphereVirtualDiskVolumeSource { + // Path that identifies vSphere volume vmdk + optional string volumePath = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + optional string fsType = 2; + + // Storage Policy Based Management (SPBM) profile name. + // +optional + optional string storagePolicyName = 3; + + // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + // +optional + optional string storagePolicyID = 4; +} + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) +message WeightedPodAffinityTerm { + // weight associated with matching the corresponding podAffinityTerm, + // in the range 1-100. + optional int32 weight = 1; + + // Required. A pod affinity term, associated with the corresponding weight. + optional PodAffinityTerm podAffinityTerm = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/api/v1/meta.go b/vendor/k8s.io/client-go/pkg/api/v1/meta.go new file mode 100644 index 000000000..0e3f5d920 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/meta.go @@ -0,0 +1,108 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" +) + +func (obj *ObjectMeta) GetObjectMeta() metav1.Object { return obj } + +// Namespace implements metav1.Object for any object with an ObjectMeta typed field. Allows +// fast, direct access to metadata fields for API objects. +func (meta *ObjectMeta) GetNamespace() string { return meta.Namespace } +func (meta *ObjectMeta) SetNamespace(namespace string) { meta.Namespace = namespace } +func (meta *ObjectMeta) GetName() string { return meta.Name } +func (meta *ObjectMeta) SetName(name string) { meta.Name = name } +func (meta *ObjectMeta) GetGenerateName() string { return meta.GenerateName } +func (meta *ObjectMeta) SetGenerateName(generateName string) { meta.GenerateName = generateName } +func (meta *ObjectMeta) GetUID() types.UID { return meta.UID } +func (meta *ObjectMeta) SetUID(uid types.UID) { meta.UID = uid } +func (meta *ObjectMeta) GetResourceVersion() string { return meta.ResourceVersion } +func (meta *ObjectMeta) SetResourceVersion(version string) { meta.ResourceVersion = version } +func (meta *ObjectMeta) GetGeneration() int64 { return meta.Generation } +func (meta *ObjectMeta) SetGeneration(generation int64) { meta.Generation = generation } +func (meta *ObjectMeta) GetSelfLink() string { return meta.SelfLink } +func (meta *ObjectMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } +func (meta *ObjectMeta) GetCreationTimestamp() metav1.Time { return meta.CreationTimestamp } +func (meta *ObjectMeta) SetCreationTimestamp(creationTimestamp metav1.Time) { + meta.CreationTimestamp = creationTimestamp +} +func (meta *ObjectMeta) GetDeletionTimestamp() *metav1.Time { return meta.DeletionTimestamp } +func (meta *ObjectMeta) SetDeletionTimestamp(deletionTimestamp *metav1.Time) { + meta.DeletionTimestamp = deletionTimestamp +} +func (meta *ObjectMeta) GetDeletionGracePeriodSeconds() *int64 { return meta.DeletionGracePeriodSeconds } +func (meta *ObjectMeta) SetDeletionGracePeriodSeconds(deletionGracePeriodSeconds *int64) { + meta.DeletionGracePeriodSeconds = deletionGracePeriodSeconds +} +func (meta *ObjectMeta) GetLabels() map[string]string { return meta.Labels } +func (meta *ObjectMeta) SetLabels(labels map[string]string) { meta.Labels = labels } +func (meta *ObjectMeta) GetAnnotations() map[string]string { return meta.Annotations } +func (meta *ObjectMeta) SetAnnotations(annotations map[string]string) { meta.Annotations = annotations } +func (meta *ObjectMeta) GetInitializers() *metav1.Initializers { return meta.Initializers } +func (meta *ObjectMeta) SetInitializers(initializers *metav1.Initializers) { + meta.Initializers = initializers +} +func (meta *ObjectMeta) GetFinalizers() []string { return meta.Finalizers } +func (meta *ObjectMeta) SetFinalizers(finalizers []string) { meta.Finalizers = finalizers } + +func (meta *ObjectMeta) GetOwnerReferences() []metav1.OwnerReference { + ret := make([]metav1.OwnerReference, len(meta.OwnerReferences)) + for i := 0; i < len(meta.OwnerReferences); i++ { + ret[i].Kind = meta.OwnerReferences[i].Kind + ret[i].Name = meta.OwnerReferences[i].Name + ret[i].UID = meta.OwnerReferences[i].UID + ret[i].APIVersion = meta.OwnerReferences[i].APIVersion + if meta.OwnerReferences[i].Controller != nil { + value := *meta.OwnerReferences[i].Controller + ret[i].Controller = &value + } + if meta.OwnerReferences[i].BlockOwnerDeletion != nil { + value := *meta.OwnerReferences[i].BlockOwnerDeletion + ret[i].BlockOwnerDeletion = &value + } + } + return ret +} + +func (meta *ObjectMeta) SetOwnerReferences(references []metav1.OwnerReference) { + newReferences := make([]metav1.OwnerReference, len(references)) + for i := 0; i < len(references); i++ { + newReferences[i].Kind = references[i].Kind + newReferences[i].Name = references[i].Name + newReferences[i].UID = references[i].UID + newReferences[i].APIVersion = references[i].APIVersion + if references[i].Controller != nil { + value := *references[i].Controller + newReferences[i].Controller = &value + } + if references[i].BlockOwnerDeletion != nil { + value := *references[i].BlockOwnerDeletion + newReferences[i].BlockOwnerDeletion = &value + } + } + meta.OwnerReferences = newReferences +} + +func (meta *ObjectMeta) GetClusterName() string { + return meta.ClusterName +} +func (meta *ObjectMeta) SetClusterName(clusterName string) { + meta.ClusterName = clusterName +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/node/BUILD b/vendor/k8s.io/client-go/pkg/api/v1/node/BUILD new file mode 100644 index 000000000..793209ff3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/node/BUILD @@ -0,0 +1,15 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["util.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/client-go/pkg/api/v1:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/node/util.go b/vendor/k8s.io/client-go/pkg/api/v1/node/util.go new file mode 100644 index 000000000..7fd9d25d6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/node/util.go @@ -0,0 +1,47 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// TODO: merge with pkg/util/node + +package node + +import ( + "k8s.io/client-go/pkg/api/v1" +) + +// GetNodeCondition extracts the provided condition from the given status and returns that. +// Returns nil and -1 if the condition is not present, and the index of the located condition. +func GetNodeCondition(status *v1.NodeStatus, conditionType v1.NodeConditionType) (int, *v1.NodeCondition) { + if status == nil { + return -1, nil + } + for i := range status.Conditions { + if status.Conditions[i].Type == conditionType { + return i, &status.Conditions[i] + } + } + return -1, nil +} + +// IsNodeReady returns true if a node is ready; false otherwise. +func IsNodeReady(node *v1.Node) bool { + for _, c := range node.Status.Conditions { + if c.Type == v1.NodeReady { + return c.Status == v1.ConditionTrue + } + } + return false +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/objectreference.go b/vendor/k8s.io/client-go/pkg/api/v1/objectreference.go new file mode 100644 index 000000000..ee5335ee8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/objectreference.go @@ -0,0 +1,33 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that +// intend only to get a reference to that object. This simplifies the event recording interface. +func (obj *ObjectReference) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} + +func (obj *ObjectReference) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *ObjectReference) GetObjectKind() schema.ObjectKind { return obj } diff --git a/vendor/k8s.io/client-go/pkg/api/v1/ref/BUILD b/vendor/k8s.io/client-go/pkg/api/v1/ref/BUILD new file mode 100644 index 000000000..f9d8716b7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/ref/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["ref.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/ref/ref.go b/vendor/k8s.io/client-go/pkg/api/v1/ref/ref.go new file mode 100644 index 000000000..51f69555d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/ref/ref.go @@ -0,0 +1,121 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package ref + +import ( + "errors" + "fmt" + "net/url" + "strings" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api/v1" +) + +var ( + // Errors that could be returned by GetReference. + ErrNilObject = errors.New("can't reference a nil object") + ErrNoSelfLink = errors.New("selfLink was empty, can't make reference") +) + +// GetReference returns an ObjectReference which refers to the given +// object, or an error if the object doesn't follow the conventions +// that would allow this. +// TODO: should take a meta.Interface see http://issue.k8s.io/7127 +func GetReference(scheme *runtime.Scheme, obj runtime.Object) (*v1.ObjectReference, error) { + if obj == nil { + return nil, ErrNilObject + } + if ref, ok := obj.(*v1.ObjectReference); ok { + // Don't make a reference to a reference. + return ref, nil + } + + gvk := obj.GetObjectKind().GroupVersionKind() + + // if the object referenced is actually persisted, we can just get kind from meta + // if we are building an object reference to something not yet persisted, we should fallback to scheme + kind := gvk.Kind + if len(kind) == 0 { + // TODO: this is wrong + gvks, _, err := scheme.ObjectKinds(obj) + if err != nil { + return nil, err + } + kind = gvks[0].Kind + } + + // An object that implements only List has enough metadata to build a reference + var listMeta meta.List + objectMeta, err := meta.Accessor(obj) + if err != nil { + listMeta, err = meta.ListAccessor(obj) + if err != nil { + return nil, err + } + } else { + listMeta = objectMeta + } + + // if the object referenced is actually persisted, we can also get version from meta + version := gvk.GroupVersion().String() + if len(version) == 0 { + selfLink := listMeta.GetSelfLink() + if len(selfLink) == 0 { + return nil, ErrNoSelfLink + } + selfLinkUrl, err := url.Parse(selfLink) + if err != nil { + return nil, err + } + // example paths: ///* + parts := strings.Split(selfLinkUrl.Path, "/") + if len(parts) < 3 { + return nil, fmt.Errorf("unexpected self link format: '%v'; got version '%v'", selfLink, version) + } + version = parts[2] + } + + // only has list metadata + if objectMeta == nil { + return &v1.ObjectReference{ + Kind: kind, + APIVersion: version, + ResourceVersion: listMeta.GetResourceVersion(), + }, nil + } + + return &v1.ObjectReference{ + Kind: kind, + APIVersion: version, + Name: objectMeta.GetName(), + Namespace: objectMeta.GetNamespace(), + UID: objectMeta.GetUID(), + ResourceVersion: objectMeta.GetResourceVersion(), + }, nil +} + +// GetPartialReference is exactly like GetReference, but allows you to set the FieldPath. +func GetPartialReference(scheme *runtime.Scheme, obj runtime.Object, fieldPath string) (*v1.ObjectReference, error) { + ref, err := GetReference(scheme, obj) + if err != nil { + return nil, err + } + ref.FieldPath = fieldPath + return ref, nil +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/register.go b/vendor/k8s.io/client-go/pkg/api/v1/register.go new file mode 100644 index 000000000..c70d6ac56 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/register.go @@ -0,0 +1,106 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs, addFastPathConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Pod{}, + &PodList{}, + &PodStatusResult{}, + &PodTemplate{}, + &PodTemplateList{}, + &ReplicationController{}, + &ReplicationControllerList{}, + &Service{}, + &ServiceProxyOptions{}, + &ServiceList{}, + &Endpoints{}, + &EndpointsList{}, + &Node{}, + &NodeList{}, + &NodeProxyOptions{}, + &Binding{}, + &Event{}, + &EventList{}, + &List{}, + &LimitRange{}, + &LimitRangeList{}, + &ResourceQuota{}, + &ResourceQuotaList{}, + &Namespace{}, + &NamespaceList{}, + &Secret{}, + &SecretList{}, + &ServiceAccount{}, + &ServiceAccountList{}, + &PersistentVolume{}, + &PersistentVolumeList{}, + &PersistentVolumeClaim{}, + &PersistentVolumeClaimList{}, + &PodAttachOptions{}, + &PodLogOptions{}, + &PodExecOptions{}, + &PodPortForwardOptions{}, + &PodProxyOptions{}, + &ComponentStatus{}, + &ComponentStatusList{}, + &SerializedReference{}, + &RangeAllocation{}, + &ConfigMap{}, + &ConfigMapList{}, + ) + + // Add common types + scheme.AddKnownTypes(SchemeGroupVersion, &metav1.Status{}) + + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/resource.go b/vendor/k8s.io/client-go/pkg/api/v1/resource.go new file mode 100644 index 000000000..0d1c1dccd --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/resource.go @@ -0,0 +1,63 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/resource" +) + +// Returns string version of ResourceName. +func (self ResourceName) String() string { + return string(self) +} + +// Returns the CPU limit if specified. +func (self *ResourceList) Cpu() *resource.Quantity { + if val, ok := (*self)[ResourceCPU]; ok { + return &val + } + return &resource.Quantity{Format: resource.DecimalSI} +} + +// Returns the Memory limit if specified. +func (self *ResourceList) Memory() *resource.Quantity { + if val, ok := (*self)[ResourceMemory]; ok { + return &val + } + return &resource.Quantity{Format: resource.BinarySI} +} + +func (self *ResourceList) Pods() *resource.Quantity { + if val, ok := (*self)[ResourcePods]; ok { + return &val + } + return &resource.Quantity{} +} + +func (self *ResourceList) NvidiaGPU() *resource.Quantity { + if val, ok := (*self)[ResourceNvidiaGPU]; ok { + return &val + } + return &resource.Quantity{} +} + +func (self *ResourceList) StorageOverlay() *resource.Quantity { + if val, ok := (*self)[ResourceStorageOverlay]; ok { + return &val + } + return &resource.Quantity{} +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/resource/BUILD b/vendor/k8s.io/client-go/pkg/api/v1/resource/BUILD new file mode 100644 index 000000000..4a9265a77 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/resource/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["helpers_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["helpers.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/resource/helpers.go b/vendor/k8s.io/client-go/pkg/api/v1/resource/helpers.go new file mode 100644 index 000000000..41e02189b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/resource/helpers.go @@ -0,0 +1,203 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "fmt" + "math" + "strconv" + + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/client-go/pkg/api/v1" +) + +// PodRequestsAndLimits returns a dictionary of all defined resources summed up for all +// containers of the pod. +func PodRequestsAndLimits(pod *v1.Pod) (reqs map[v1.ResourceName]resource.Quantity, limits map[v1.ResourceName]resource.Quantity, err error) { + reqs, limits = map[v1.ResourceName]resource.Quantity{}, map[v1.ResourceName]resource.Quantity{} + for _, container := range pod.Spec.Containers { + for name, quantity := range container.Resources.Requests { + if value, ok := reqs[name]; !ok { + reqs[name] = *quantity.Copy() + } else { + value.Add(quantity) + reqs[name] = value + } + } + for name, quantity := range container.Resources.Limits { + if value, ok := limits[name]; !ok { + limits[name] = *quantity.Copy() + } else { + value.Add(quantity) + limits[name] = value + } + } + } + // init containers define the minimum of any resource + for _, container := range pod.Spec.InitContainers { + for name, quantity := range container.Resources.Requests { + value, ok := reqs[name] + if !ok { + reqs[name] = *quantity.Copy() + continue + } + if quantity.Cmp(value) > 0 { + reqs[name] = *quantity.Copy() + } + } + for name, quantity := range container.Resources.Limits { + value, ok := limits[name] + if !ok { + limits[name] = *quantity.Copy() + continue + } + if quantity.Cmp(value) > 0 { + limits[name] = *quantity.Copy() + } + } + } + return +} + +// finds and returns the request for a specific resource. +func GetResourceRequest(pod *v1.Pod, resource v1.ResourceName) int64 { + if resource == v1.ResourcePods { + return 1 + } + totalResources := int64(0) + for _, container := range pod.Spec.Containers { + if rQuantity, ok := container.Resources.Requests[resource]; ok { + if resource == v1.ResourceCPU { + totalResources += rQuantity.MilliValue() + } else { + totalResources += rQuantity.Value() + } + } + } + // take max_resource(sum_pod, any_init_container) + for _, container := range pod.Spec.InitContainers { + if rQuantity, ok := container.Resources.Requests[resource]; ok { + if resource == v1.ResourceCPU && rQuantity.MilliValue() > totalResources { + totalResources = rQuantity.MilliValue() + } else if rQuantity.Value() > totalResources { + totalResources = rQuantity.Value() + } + } + } + return totalResources +} + +// ExtractResourceValueByContainerName extracts the value of a resource +// by providing container name +func ExtractResourceValueByContainerName(fs *v1.ResourceFieldSelector, pod *v1.Pod, containerName string) (string, error) { + container, err := findContainerInPod(pod, containerName) + if err != nil { + return "", err + } + return ExtractContainerResourceValue(fs, container) +} + +type deepCopier interface { + DeepCopy(interface{}) (interface{}, error) +} + +// ExtractResourceValueByContainerNameAndNodeAllocatable extracts the value of a resource +// by providing container name and node allocatable +func ExtractResourceValueByContainerNameAndNodeAllocatable(copier deepCopier, fs *v1.ResourceFieldSelector, pod *v1.Pod, containerName string, nodeAllocatable v1.ResourceList) (string, error) { + realContainer, err := findContainerInPod(pod, containerName) + if err != nil { + return "", err + } + + containerCopy, err := copier.DeepCopy(realContainer) + if err != nil { + return "", fmt.Errorf("failed to perform a deep copy of container object: %v", err) + } + + container, ok := containerCopy.(*v1.Container) + if !ok { + return "", fmt.Errorf("unexpected type returned from deep copy of container object") + } + + MergeContainerResourceLimits(container, nodeAllocatable) + + return ExtractContainerResourceValue(fs, container) +} + +// ExtractContainerResourceValue extracts the value of a resource +// in an already known container +func ExtractContainerResourceValue(fs *v1.ResourceFieldSelector, container *v1.Container) (string, error) { + divisor := resource.Quantity{} + if divisor.Cmp(fs.Divisor) == 0 { + divisor = resource.MustParse("1") + } else { + divisor = fs.Divisor + } + + switch fs.Resource { + case "limits.cpu": + return convertResourceCPUToString(container.Resources.Limits.Cpu(), divisor) + case "limits.memory": + return convertResourceMemoryToString(container.Resources.Limits.Memory(), divisor) + case "requests.cpu": + return convertResourceCPUToString(container.Resources.Requests.Cpu(), divisor) + case "requests.memory": + return convertResourceMemoryToString(container.Resources.Requests.Memory(), divisor) + } + + return "", fmt.Errorf("Unsupported container resource : %v", fs.Resource) +} + +// convertResourceCPUToString converts cpu value to the format of divisor and returns +// ceiling of the value. +func convertResourceCPUToString(cpu *resource.Quantity, divisor resource.Quantity) (string, error) { + c := int64(math.Ceil(float64(cpu.MilliValue()) / float64(divisor.MilliValue()))) + return strconv.FormatInt(c, 10), nil +} + +// convertResourceMemoryToString converts memory value to the format of divisor and returns +// ceiling of the value. +func convertResourceMemoryToString(memory *resource.Quantity, divisor resource.Quantity) (string, error) { + m := int64(math.Ceil(float64(memory.Value()) / float64(divisor.Value()))) + return strconv.FormatInt(m, 10), nil +} + +// findContainerInPod finds a container by its name in the provided pod +func findContainerInPod(pod *v1.Pod, containerName string) (*v1.Container, error) { + for _, container := range pod.Spec.Containers { + if container.Name == containerName { + return &container, nil + } + } + return nil, fmt.Errorf("container %s not found", containerName) +} + +// MergeContainerResourceLimits checks if a limit is applied for +// the container, and if not, it sets the limit to the passed resource list. +func MergeContainerResourceLimits(container *v1.Container, + allocatable v1.ResourceList) { + if container.Resources.Limits == nil { + container.Resources.Limits = make(v1.ResourceList) + } + for _, resource := range []v1.ResourceName{v1.ResourceCPU, v1.ResourceMemory} { + if quantity, exists := container.Resources.Limits[resource]; !exists || quantity.IsZero() { + if cap, exists := allocatable[resource]; exists { + container.Resources.Limits[resource] = *cap.Copy() + } + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/resource/helpers_test.go b/vendor/k8s.io/client-go/pkg/api/v1/resource/helpers_test.go new file mode 100644 index 000000000..4866bf3c5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/resource/helpers_test.go @@ -0,0 +1,182 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/client-go/pkg/api/v1" +) + +func TestResourceHelpers(t *testing.T) { + cpuLimit := resource.MustParse("10") + memoryLimit := resource.MustParse("10G") + resourceSpec := v1.ResourceRequirements{ + Limits: v1.ResourceList{ + "cpu": cpuLimit, + "memory": memoryLimit, + "kube.io/storage": memoryLimit, + }, + } + if res := resourceSpec.Limits.Cpu(); res.Cmp(cpuLimit) != 0 { + t.Errorf("expected cpulimit %v, got %v", cpuLimit, res) + } + if res := resourceSpec.Limits.Memory(); res.Cmp(memoryLimit) != 0 { + t.Errorf("expected memorylimit %v, got %v", memoryLimit, res) + } + resourceSpec = v1.ResourceRequirements{ + Limits: v1.ResourceList{ + "memory": memoryLimit, + "kube.io/storage": memoryLimit, + }, + } + if res := resourceSpec.Limits.Cpu(); res.Value() != 0 { + t.Errorf("expected cpulimit %v, got %v", 0, res) + } + if res := resourceSpec.Limits.Memory(); res.Cmp(memoryLimit) != 0 { + t.Errorf("expected memorylimit %v, got %v", memoryLimit, res) + } +} + +func TestDefaultResourceHelpers(t *testing.T) { + resourceList := v1.ResourceList{} + if resourceList.Cpu().Format != resource.DecimalSI { + t.Errorf("expected %v, actual %v", resource.DecimalSI, resourceList.Cpu().Format) + } + if resourceList.Memory().Format != resource.BinarySI { + t.Errorf("expected %v, actual %v", resource.BinarySI, resourceList.Memory().Format) + } +} + +func TestExtractResourceValue(t *testing.T) { + cases := []struct { + fs *v1.ResourceFieldSelector + pod *v1.Pod + cName string + expectedValue string + expectedError error + }{ + { + fs: &v1.ResourceFieldSelector{ + Resource: "limits.cpu", + }, + cName: "foo", + pod: getPod("foo", "", "9", "", ""), + expectedValue: "9", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "requests.cpu", + }, + cName: "foo", + pod: getPod("foo", "", "", "", ""), + expectedValue: "0", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "requests.cpu", + }, + cName: "foo", + pod: getPod("foo", "8", "", "", ""), + expectedValue: "8", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "requests.cpu", + }, + cName: "foo", + pod: getPod("foo", "100m", "", "", ""), + expectedValue: "1", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "requests.cpu", + Divisor: resource.MustParse("100m"), + }, + cName: "foo", + pod: getPod("foo", "1200m", "", "", ""), + expectedValue: "12", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "requests.memory", + }, + cName: "foo", + pod: getPod("foo", "", "", "100Mi", ""), + expectedValue: "104857600", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "requests.memory", + Divisor: resource.MustParse("1Mi"), + }, + cName: "foo", + pod: getPod("foo", "", "", "100Mi", "1Gi"), + expectedValue: "100", + }, + { + fs: &v1.ResourceFieldSelector{ + Resource: "limits.memory", + }, + cName: "foo", + pod: getPod("foo", "", "", "10Mi", "100Mi"), + expectedValue: "104857600", + }, + } + as := assert.New(t) + for idx, tc := range cases { + actual, err := ExtractResourceValueByContainerName(tc.fs, tc.pod, tc.cName) + if tc.expectedError != nil { + as.Equal(tc.expectedError, err, "expected test case [%d] to fail with error %v; got %v", idx, tc.expectedError, err) + } else { + as.Nil(err, "expected test case [%d] to not return an error; got %v", idx, err) + as.Equal(tc.expectedValue, actual, "expected test case [%d] to return %q; got %q instead", idx, tc.expectedValue, actual) + } + } +} + +func getPod(cname, cpuRequest, cpuLimit, memoryRequest, memoryLimit string) *v1.Pod { + resources := v1.ResourceRequirements{ + Limits: make(v1.ResourceList), + Requests: make(v1.ResourceList), + } + if cpuLimit != "" { + resources.Limits[v1.ResourceCPU] = resource.MustParse(cpuLimit) + } + if memoryLimit != "" { + resources.Limits[v1.ResourceMemory] = resource.MustParse(memoryLimit) + } + if cpuRequest != "" { + resources.Requests[v1.ResourceCPU] = resource.MustParse(cpuRequest) + } + if memoryRequest != "" { + resources.Requests[v1.ResourceMemory] = resource.MustParse(memoryRequest) + } + return &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: cname, + Resources: resources, + }, + }, + }, + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/taint.go b/vendor/k8s.io/client-go/pkg/api/v1/taint.go new file mode 100644 index 000000000..7b606a309 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/taint.go @@ -0,0 +1,33 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import "fmt" + +// MatchTaint checks if the taint matches taintToMatch. Taints are unique by key:effect, +// if the two taints have same key:effect, regard as they match. +func (t *Taint) MatchTaint(taintToMatch *Taint) bool { + return t.Key == taintToMatch.Key && t.Effect == taintToMatch.Effect +} + +// taint.ToString() converts taint struct to string in format key=value:effect or key:effect. +func (t *Taint) ToString() string { + if len(t.Value) == 0 { + return fmt.Sprintf("%v:%v", t.Key, t.Effect) + } + return fmt.Sprintf("%v=%v:%v", t.Key, t.Value, t.Effect) +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/toleration.go b/vendor/k8s.io/client-go/pkg/api/v1/toleration.go new file mode 100644 index 000000000..b203d335b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/toleration.go @@ -0,0 +1,56 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// MatchToleration checks if the toleration matches tolerationToMatch. Tolerations are unique by , +// if the two tolerations have same combination, regard as they match. +// TODO: uniqueness check for tolerations in api validations. +func (t *Toleration) MatchToleration(tolerationToMatch *Toleration) bool { + return t.Key == tolerationToMatch.Key && + t.Effect == tolerationToMatch.Effect && + t.Operator == tolerationToMatch.Operator && + t.Value == tolerationToMatch.Value +} + +// ToleratesTaint checks if the toleration tolerates the taint. +// The matching follows the rules below: +// (1) Empty toleration.effect means to match all taint effects, +// otherwise taint effect must equal to toleration.effect. +// (2) If toleration.operator is 'Exists', it means to match all taint values. +// (3) Empty toleration.key means to match all taint keys. +// If toleration.key is empty, toleration.operator must be 'Exists'; +// this combination means to match all taint values and all taint keys. +func (t *Toleration) ToleratesTaint(taint *Taint) bool { + if len(t.Effect) > 0 && t.Effect != taint.Effect { + return false + } + + if len(t.Key) > 0 && t.Key != taint.Key { + return false + } + + // TODO: Use proper defaulting when Toleration becomes a field of PodSpec + switch t.Operator { + // empty operator means Equal + case "", TolerationOpEqual: + return t.Value == taint.Value + case TolerationOpExists: + return true + default: + return false + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/types.generated.go b/vendor/k8s.io/client-go/pkg/api/v1/types.generated.go new file mode 100644 index 000000000..9bd5aa845 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/types.generated.go @@ -0,0 +1,76734 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg3_resource "k8s.io/apimachinery/pkg/api/resource" + pkg2_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg5_runtime "k8s.io/apimachinery/pkg/runtime" + pkg1_types "k8s.io/apimachinery/pkg/types" + pkg4_intstr "k8s.io/apimachinery/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg3_resource.Quantity + var v1 pkg2_v1.Time + var v2 pkg5_runtime.RawExtension + var v3 pkg1_types.UID + var v4 pkg4_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *ObjectMeta) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [16]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.GenerateName != "" + yyq2[2] = x.Namespace != "" + yyq2[3] = x.SelfLink != "" + yyq2[4] = x.UID != "" + yyq2[5] = x.ResourceVersion != "" + yyq2[6] = x.Generation != 0 + yyq2[7] = true + yyq2[8] = x.DeletionTimestamp != nil + yyq2[9] = x.DeletionGracePeriodSeconds != nil + yyq2[10] = len(x.Labels) != 0 + yyq2[11] = len(x.Annotations) != 0 + yyq2[12] = len(x.OwnerReferences) != 0 + yyq2[13] = x.Initializers != nil + yyq2[14] = len(x.Finalizers) != 0 + yyq2[15] = x.ClusterName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(16) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yy25 := &x.CreationTimestamp + yym26 := z.EncBinary() + _ = yym26 + if false { + } else if z.HasExtensions() && z.EncExt(yy25) { + } else if yym26 { + z.EncBinaryMarshal(yy25) + } else if !yym26 && z.IsJSONHandle() { + z.EncJSONMarshal(yy25) + } else { + z.EncFallback(yy25) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy27 := &x.CreationTimestamp + yym28 := z.EncBinary() + _ = yym28 + if false { + } else if z.HasExtensions() && z.EncExt(yy27) { + } else if yym28 { + z.EncBinaryMarshal(yy27) + } else if !yym28 && z.IsJSONHandle() { + z.EncJSONMarshal(yy27) + } else { + z.EncFallback(yy27) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym30 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym30 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym31 := z.EncBinary() + _ = yym31 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym31 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym31 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy33 := *x.DeletionGracePeriodSeconds + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeInt(int64(yy33)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy35 := *x.DeletionGracePeriodSeconds + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(yy35)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + h.encSlicev1_OwnerReference(([]pkg2_v1.OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + h.encSlicev1_OwnerReference(([]pkg2_v1.OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.Initializers == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else if z.HasExtensions() && z.EncExt(x.Initializers) { + } else { + z.EncFallback(x.Initializers) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initializers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Initializers == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else if z.HasExtensions() && z.EncExt(x.Initializers) { + } else { + z.EncFallback(x.Initializers) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym51 := z.EncBinary() + _ = yym51 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym54 := z.EncBinary() + _ = yym54 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMeta) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMeta) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + yyv6 := &x.GenerateName + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv8 := &x.Namespace + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + yyv10 := &x.SelfLink + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv12 := &x.UID + yym13 := z.DecBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.DecExt(yyv12) { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + yyv14 := &x.ResourceVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + yyv16 := &x.Generation + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*int64)(yyv16)) = int64(r.DecodeInt(64)) + } + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg2_v1.Time{} + } else { + yyv18 := &x.CreationTimestamp + yym19 := z.DecBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.DecExt(yyv18) { + } else if yym19 { + z.DecBinaryUnmarshal(yyv18) + } else if !yym19 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv18) + } else { + z.DecFallback(yyv18, false) + } + } + case "deletionTimestamp": + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg2_v1.Time) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym21 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym21 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv24 := &x.Labels + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + z.F.DecMapStringStringX(yyv24, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv26 := &x.Annotations + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + z.F.DecMapStringStringX(yyv26, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv28 := &x.OwnerReferences + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + h.decSlicev1_OwnerReference((*[]pkg2_v1.OwnerReference)(yyv28), d) + } + } + case "initializers": + if r.TryDecodeAsNil() { + if x.Initializers != nil { + x.Initializers = nil + } + } else { + if x.Initializers == nil { + x.Initializers = new(pkg2_v1.Initializers) + } + yym31 := z.DecBinary() + _ = yym31 + if false { + } else if z.HasExtensions() && z.DecExt(x.Initializers) { + } else { + z.DecFallback(x.Initializers, false) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv32 := &x.Finalizers + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + z.F.DecSliceStringX(yyv32, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + yyv34 := &x.ClusterName + yym35 := z.DecBinary() + _ = yym35 + if false { + } else { + *((*string)(yyv34)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMeta) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj36 int + var yyb36 bool + var yyhl36 bool = l >= 0 + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv37 := &x.Name + yym38 := z.DecBinary() + _ = yym38 + if false { + } else { + *((*string)(yyv37)) = r.DecodeString() + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + yyv39 := &x.GenerateName + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + *((*string)(yyv39)) = r.DecodeString() + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv41 := &x.Namespace + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + *((*string)(yyv41)) = r.DecodeString() + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + yyv43 := &x.SelfLink + yym44 := z.DecBinary() + _ = yym44 + if false { + } else { + *((*string)(yyv43)) = r.DecodeString() + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv45 := &x.UID + yym46 := z.DecBinary() + _ = yym46 + if false { + } else if z.HasExtensions() && z.DecExt(yyv45) { + } else { + *((*string)(yyv45)) = r.DecodeString() + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + yyv47 := &x.ResourceVersion + yym48 := z.DecBinary() + _ = yym48 + if false { + } else { + *((*string)(yyv47)) = r.DecodeString() + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + yyv49 := &x.Generation + yym50 := z.DecBinary() + _ = yym50 + if false { + } else { + *((*int64)(yyv49)) = int64(r.DecodeInt(64)) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg2_v1.Time{} + } else { + yyv51 := &x.CreationTimestamp + yym52 := z.DecBinary() + _ = yym52 + if false { + } else if z.HasExtensions() && z.DecExt(yyv51) { + } else if yym52 { + z.DecBinaryUnmarshal(yyv51) + } else if !yym52 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv51) + } else { + z.DecFallback(yyv51, false) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg2_v1.Time) + } + yym54 := z.DecBinary() + _ = yym54 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym54 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym54 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym56 := z.DecBinary() + _ = yym56 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv57 := &x.Labels + yym58 := z.DecBinary() + _ = yym58 + if false { + } else { + z.F.DecMapStringStringX(yyv57, false, d) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv59 := &x.Annotations + yym60 := z.DecBinary() + _ = yym60 + if false { + } else { + z.F.DecMapStringStringX(yyv59, false, d) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv61 := &x.OwnerReferences + yym62 := z.DecBinary() + _ = yym62 + if false { + } else { + h.decSlicev1_OwnerReference((*[]pkg2_v1.OwnerReference)(yyv61), d) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Initializers != nil { + x.Initializers = nil + } + } else { + if x.Initializers == nil { + x.Initializers = new(pkg2_v1.Initializers) + } + yym64 := z.DecBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.DecExt(x.Initializers) { + } else { + z.DecFallback(x.Initializers, false) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv65 := &x.Finalizers + yym66 := z.DecBinary() + _ = yym66 + if false { + } else { + z.F.DecSliceStringX(yyv65, false, d) + } + } + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + yyv67 := &x.ClusterName + yym68 := z.DecBinary() + _ = yym68 + if false { + } else { + *((*string)(yyv67)) = r.DecodeString() + } + } + for { + yyj36++ + if yyhl36 { + yyb36 = yyj36 > l + } else { + yyb36 = r.CheckBreak() + } + if yyb36 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj36-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Volume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [28]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.VolumeSource.HostPath != nil && x.HostPath != nil + yyq2[2] = x.VolumeSource.EmptyDir != nil && x.EmptyDir != nil + yyq2[3] = x.VolumeSource.GCEPersistentDisk != nil && x.GCEPersistentDisk != nil + yyq2[4] = x.VolumeSource.AWSElasticBlockStore != nil && x.AWSElasticBlockStore != nil + yyq2[5] = x.VolumeSource.GitRepo != nil && x.GitRepo != nil + yyq2[6] = x.VolumeSource.Secret != nil && x.Secret != nil + yyq2[7] = x.VolumeSource.NFS != nil && x.NFS != nil + yyq2[8] = x.VolumeSource.ISCSI != nil && x.ISCSI != nil + yyq2[9] = x.VolumeSource.Glusterfs != nil && x.Glusterfs != nil + yyq2[10] = x.VolumeSource.PersistentVolumeClaim != nil && x.PersistentVolumeClaim != nil + yyq2[11] = x.VolumeSource.RBD != nil && x.RBD != nil + yyq2[12] = x.VolumeSource.FlexVolume != nil && x.FlexVolume != nil + yyq2[13] = x.VolumeSource.Cinder != nil && x.Cinder != nil + yyq2[14] = x.VolumeSource.CephFS != nil && x.CephFS != nil + yyq2[15] = x.VolumeSource.Flocker != nil && x.Flocker != nil + yyq2[16] = x.VolumeSource.DownwardAPI != nil && x.DownwardAPI != nil + yyq2[17] = x.VolumeSource.FC != nil && x.FC != nil + yyq2[18] = x.VolumeSource.AzureFile != nil && x.AzureFile != nil + yyq2[19] = x.VolumeSource.ConfigMap != nil && x.ConfigMap != nil + yyq2[20] = x.VolumeSource.VsphereVolume != nil && x.VsphereVolume != nil + yyq2[21] = x.VolumeSource.Quobyte != nil && x.Quobyte != nil + yyq2[22] = x.VolumeSource.AzureDisk != nil && x.AzureDisk != nil + yyq2[23] = x.VolumeSource.PhotonPersistentDisk != nil && x.PhotonPersistentDisk != nil + yyq2[24] = x.VolumeSource.Projected != nil && x.Projected != nil + yyq2[25] = x.VolumeSource.PortworxVolume != nil && x.PortworxVolume != nil + yyq2[26] = x.VolumeSource.ScaleIO != nil && x.ScaleIO != nil + yyq2[27] = x.VolumeSource.StorageOS != nil && x.StorageOS != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(28) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + var yyn6 bool + if x.VolumeSource.HostPath == nil { + yyn6 = true + goto LABEL6 + } + LABEL6: + if yyr2 || yy2arr2 { + if yyn6 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn6 { + r.EncodeNil() + } else { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + } + var yyn9 bool + if x.VolumeSource.EmptyDir == nil { + yyn9 = true + goto LABEL9 + } + LABEL9: + if yyr2 || yy2arr2 { + if yyn9 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("emptyDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn9 { + r.EncodeNil() + } else { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } + } + } + var yyn12 bool + if x.VolumeSource.GCEPersistentDisk == nil { + yyn12 = true + goto LABEL12 + } + LABEL12: + if yyr2 || yy2arr2 { + if yyn12 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn12 { + r.EncodeNil() + } else { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn15 bool + if x.VolumeSource.AWSElasticBlockStore == nil { + yyn15 = true + goto LABEL15 + } + LABEL15: + if yyr2 || yy2arr2 { + if yyn15 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn15 { + r.EncodeNil() + } else { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + } + var yyn18 bool + if x.VolumeSource.GitRepo == nil { + yyn18 = true + goto LABEL18 + } + LABEL18: + if yyr2 || yy2arr2 { + if yyn18 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gitRepo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn18 { + r.EncodeNil() + } else { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } + } + } + var yyn21 bool + if x.VolumeSource.Secret == nil { + yyn21 = true + goto LABEL21 + } + LABEL21: + if yyr2 || yy2arr2 { + if yyn21 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn21 { + r.EncodeNil() + } else { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + } + var yyn24 bool + if x.VolumeSource.NFS == nil { + yyn24 = true + goto LABEL24 + } + LABEL24: + if yyr2 || yy2arr2 { + if yyn24 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn24 { + r.EncodeNil() + } else { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + } + var yyn27 bool + if x.VolumeSource.ISCSI == nil { + yyn27 = true + goto LABEL27 + } + LABEL27: + if yyr2 || yy2arr2 { + if yyn27 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn27 { + r.EncodeNil() + } else { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + } + var yyn30 bool + if x.VolumeSource.Glusterfs == nil { + yyn30 = true + goto LABEL30 + } + LABEL30: + if yyr2 || yy2arr2 { + if yyn30 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn30 { + r.EncodeNil() + } else { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + } + var yyn33 bool + if x.VolumeSource.PersistentVolumeClaim == nil { + yyn33 = true + goto LABEL33 + } + LABEL33: + if yyr2 || yy2arr2 { + if yyn33 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeClaim")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn33 { + r.EncodeNil() + } else { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } + } + } + var yyn36 bool + if x.VolumeSource.RBD == nil { + yyn36 = true + goto LABEL36 + } + LABEL36: + if yyr2 || yy2arr2 { + if yyn36 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn36 { + r.EncodeNil() + } else { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + } + var yyn39 bool + if x.VolumeSource.FlexVolume == nil { + yyn39 = true + goto LABEL39 + } + LABEL39: + if yyr2 || yy2arr2 { + if yyn39 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn39 { + r.EncodeNil() + } else { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn42 bool + if x.VolumeSource.Cinder == nil { + yyn42 = true + goto LABEL42 + } + LABEL42: + if yyr2 || yy2arr2 { + if yyn42 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn42 { + r.EncodeNil() + } else { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + } + var yyn45 bool + if x.VolumeSource.CephFS == nil { + yyn45 = true + goto LABEL45 + } + LABEL45: + if yyr2 || yy2arr2 { + if yyn45 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn45 { + r.EncodeNil() + } else { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + } + var yyn48 bool + if x.VolumeSource.Flocker == nil { + yyn48 = true + goto LABEL48 + } + LABEL48: + if yyr2 || yy2arr2 { + if yyn48 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn48 { + r.EncodeNil() + } else { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + } + var yyn51 bool + if x.VolumeSource.DownwardAPI == nil { + yyn51 = true + goto LABEL51 + } + LABEL51: + if yyr2 || yy2arr2 { + if yyn51 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn51 { + r.EncodeNil() + } else { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + } + var yyn54 bool + if x.VolumeSource.FC == nil { + yyn54 = true + goto LABEL54 + } + LABEL54: + if yyr2 || yy2arr2 { + if yyn54 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[17] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn54 { + r.EncodeNil() + } else { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + } + var yyn57 bool + if x.VolumeSource.AzureFile == nil { + yyn57 = true + goto LABEL57 + } + LABEL57: + if yyr2 || yy2arr2 { + if yyn57 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[18] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn57 { + r.EncodeNil() + } else { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + } + var yyn60 bool + if x.VolumeSource.ConfigMap == nil { + yyn60 = true + goto LABEL60 + } + LABEL60: + if yyr2 || yy2arr2 { + if yyn60 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[19] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn60 { + r.EncodeNil() + } else { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + } + var yyn63 bool + if x.VolumeSource.VsphereVolume == nil { + yyn63 = true + goto LABEL63 + } + LABEL63: + if yyr2 || yy2arr2 { + if yyn63 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[20] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn63 { + r.EncodeNil() + } else { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn66 bool + if x.VolumeSource.Quobyte == nil { + yyn66 = true + goto LABEL66 + } + LABEL66: + if yyr2 || yy2arr2 { + if yyn66 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[21] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn66 { + r.EncodeNil() + } else { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + } + var yyn69 bool + if x.VolumeSource.AzureDisk == nil { + yyn69 = true + goto LABEL69 + } + LABEL69: + if yyr2 || yy2arr2 { + if yyn69 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[22] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[22] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn69 { + r.EncodeNil() + } else { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn72 bool + if x.VolumeSource.PhotonPersistentDisk == nil { + yyn72 = true + goto LABEL72 + } + LABEL72: + if yyr2 || yy2arr2 { + if yyn72 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[23] { + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[23] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("photonPersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn72 { + r.EncodeNil() + } else { + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn75 bool + if x.VolumeSource.Projected == nil { + yyn75 = true + goto LABEL75 + } + LABEL75: + if yyr2 || yy2arr2 { + if yyn75 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[24] { + if x.Projected == nil { + r.EncodeNil() + } else { + x.Projected.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[24] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("projected")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn75 { + r.EncodeNil() + } else { + if x.Projected == nil { + r.EncodeNil() + } else { + x.Projected.CodecEncodeSelf(e) + } + } + } + } + var yyn78 bool + if x.VolumeSource.PortworxVolume == nil { + yyn78 = true + goto LABEL78 + } + LABEL78: + if yyr2 || yy2arr2 { + if yyn78 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[25] { + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[25] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("portworxVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn78 { + r.EncodeNil() + } else { + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn81 bool + if x.VolumeSource.ScaleIO == nil { + yyn81 = true + goto LABEL81 + } + LABEL81: + if yyr2 || yy2arr2 { + if yyn81 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[26] { + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[26] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleIO")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn81 { + r.EncodeNil() + } else { + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } + } + } + var yyn84 bool + if x.VolumeSource.StorageOS == nil { + yyn84 = true + goto LABEL84 + } + LABEL84: + if yyr2 || yy2arr2 { + if yyn84 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[27] { + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[27] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageos")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn84 { + r.EncodeNil() + } else { + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Volume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Volume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "hostPath": + if x.VolumeSource.HostPath == nil { + x.VolumeSource.HostPath = new(HostPathVolumeSource) + } + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "emptyDir": + if x.VolumeSource.EmptyDir == nil { + x.VolumeSource.EmptyDir = new(EmptyDirVolumeSource) + } + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if x.VolumeSource.GCEPersistentDisk == nil { + x.VolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if x.VolumeSource.AWSElasticBlockStore == nil { + x.VolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "gitRepo": + if x.VolumeSource.GitRepo == nil { + x.VolumeSource.GitRepo = new(GitRepoVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + case "secret": + if x.VolumeSource.Secret == nil { + x.VolumeSource.Secret = new(SecretVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + case "nfs": + if x.VolumeSource.NFS == nil { + x.VolumeSource.NFS = new(NFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "iscsi": + if x.VolumeSource.ISCSI == nil { + x.VolumeSource.ISCSI = new(ISCSIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "glusterfs": + if x.VolumeSource.Glusterfs == nil { + x.VolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "persistentVolumeClaim": + if x.VolumeSource.PersistentVolumeClaim == nil { + x.VolumeSource.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + case "rbd": + if x.VolumeSource.RBD == nil { + x.VolumeSource.RBD = new(RBDVolumeSource) + } + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "flexVolume": + if x.VolumeSource.FlexVolume == nil { + x.VolumeSource.FlexVolume = new(FlexVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if x.VolumeSource.Cinder == nil { + x.VolumeSource.Cinder = new(CinderVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if x.VolumeSource.CephFS == nil { + x.VolumeSource.CephFS = new(CephFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "flocker": + if x.VolumeSource.Flocker == nil { + x.VolumeSource.Flocker = new(FlockerVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "downwardAPI": + if x.VolumeSource.DownwardAPI == nil { + x.VolumeSource.DownwardAPI = new(DownwardAPIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "fc": + if x.VolumeSource.FC == nil { + x.VolumeSource.FC = new(FCVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "azureFile": + if x.VolumeSource.AzureFile == nil { + x.VolumeSource.AzureFile = new(AzureFileVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "configMap": + if x.VolumeSource.ConfigMap == nil { + x.VolumeSource.ConfigMap = new(ConfigMapVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + case "vsphereVolume": + if x.VolumeSource.VsphereVolume == nil { + x.VolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if x.VolumeSource.Quobyte == nil { + x.VolumeSource.Quobyte = new(QuobyteVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if x.VolumeSource.AzureDisk == nil { + x.VolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + case "photonPersistentDisk": + if x.VolumeSource.PhotonPersistentDisk == nil { + x.VolumeSource.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + case "projected": + if x.VolumeSource.Projected == nil { + x.VolumeSource.Projected = new(ProjectedVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Projected != nil { + x.Projected = nil + } + } else { + if x.Projected == nil { + x.Projected = new(ProjectedVolumeSource) + } + x.Projected.CodecDecodeSelf(d) + } + case "portworxVolume": + if x.VolumeSource.PortworxVolume == nil { + x.VolumeSource.PortworxVolume = new(PortworxVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + case "scaleIO": + if x.VolumeSource.ScaleIO == nil { + x.VolumeSource.ScaleIO = new(ScaleIOVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + case "storageos": + if x.VolumeSource.StorageOS == nil { + x.VolumeSource.StorageOS = new(StorageOSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Volume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj33 int + var yyb33 bool + var yyhl33 bool = l >= 0 + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv34 := &x.Name + yym35 := z.DecBinary() + _ = yym35 + if false { + } else { + *((*string)(yyv34)) = r.DecodeString() + } + } + if x.VolumeSource.HostPath == nil { + x.VolumeSource.HostPath = new(HostPathVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + if x.VolumeSource.EmptyDir == nil { + x.VolumeSource.EmptyDir = new(EmptyDirVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + if x.VolumeSource.GCEPersistentDisk == nil { + x.VolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + if x.VolumeSource.AWSElasticBlockStore == nil { + x.VolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + if x.VolumeSource.GitRepo == nil { + x.VolumeSource.GitRepo = new(GitRepoVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + if x.VolumeSource.Secret == nil { + x.VolumeSource.Secret = new(SecretVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + if x.VolumeSource.NFS == nil { + x.VolumeSource.NFS = new(NFSVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + if x.VolumeSource.ISCSI == nil { + x.VolumeSource.ISCSI = new(ISCSIVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + if x.VolumeSource.Glusterfs == nil { + x.VolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + if x.VolumeSource.PersistentVolumeClaim == nil { + x.VolumeSource.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + if x.VolumeSource.RBD == nil { + x.VolumeSource.RBD = new(RBDVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + if x.VolumeSource.FlexVolume == nil { + x.VolumeSource.FlexVolume = new(FlexVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.Cinder == nil { + x.VolumeSource.Cinder = new(CinderVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + if x.VolumeSource.CephFS == nil { + x.VolumeSource.CephFS = new(CephFSVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + if x.VolumeSource.Flocker == nil { + x.VolumeSource.Flocker = new(FlockerVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + if x.VolumeSource.DownwardAPI == nil { + x.VolumeSource.DownwardAPI = new(DownwardAPIVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + if x.VolumeSource.FC == nil { + x.VolumeSource.FC = new(FCVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + if x.VolumeSource.AzureFile == nil { + x.VolumeSource.AzureFile = new(AzureFileVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + if x.VolumeSource.ConfigMap == nil { + x.VolumeSource.ConfigMap = new(ConfigMapVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + if x.VolumeSource.VsphereVolume == nil { + x.VolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.Quobyte == nil { + x.VolumeSource.Quobyte = new(QuobyteVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + if x.VolumeSource.AzureDisk == nil { + x.VolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + if x.VolumeSource.PhotonPersistentDisk == nil { + x.VolumeSource.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + if x.VolumeSource.Projected == nil { + x.VolumeSource.Projected = new(ProjectedVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Projected != nil { + x.Projected = nil + } + } else { + if x.Projected == nil { + x.Projected = new(ProjectedVolumeSource) + } + x.Projected.CodecDecodeSelf(d) + } + if x.VolumeSource.PortworxVolume == nil { + x.VolumeSource.PortworxVolume = new(PortworxVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.ScaleIO == nil { + x.VolumeSource.ScaleIO = new(ScaleIOVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + if x.VolumeSource.StorageOS == nil { + x.VolumeSource.StorageOS = new(StorageOSVolumeSource) + } + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + for { + yyj33++ + if yyhl33 { + yyb33 = yyj33 > l + } else { + yyb33 = r.CheckBreak() + } + if yyb33 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj33-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [27]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.HostPath != nil + yyq2[1] = x.EmptyDir != nil + yyq2[2] = x.GCEPersistentDisk != nil + yyq2[3] = x.AWSElasticBlockStore != nil + yyq2[4] = x.GitRepo != nil + yyq2[5] = x.Secret != nil + yyq2[6] = x.NFS != nil + yyq2[7] = x.ISCSI != nil + yyq2[8] = x.Glusterfs != nil + yyq2[9] = x.PersistentVolumeClaim != nil + yyq2[10] = x.RBD != nil + yyq2[11] = x.FlexVolume != nil + yyq2[12] = x.Cinder != nil + yyq2[13] = x.CephFS != nil + yyq2[14] = x.Flocker != nil + yyq2[15] = x.DownwardAPI != nil + yyq2[16] = x.FC != nil + yyq2[17] = x.AzureFile != nil + yyq2[18] = x.ConfigMap != nil + yyq2[19] = x.VsphereVolume != nil + yyq2[20] = x.Quobyte != nil + yyq2[21] = x.AzureDisk != nil + yyq2[22] = x.PhotonPersistentDisk != nil + yyq2[23] = x.Projected != nil + yyq2[24] = x.PortworxVolume != nil + yyq2[25] = x.ScaleIO != nil + yyq2[26] = x.StorageOS != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(27) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("emptyDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gitRepo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeClaim")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[17] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[18] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[19] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[20] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[21] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[22] { + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[22] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("photonPersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[23] { + if x.Projected == nil { + r.EncodeNil() + } else { + x.Projected.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[23] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("projected")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Projected == nil { + r.EncodeNil() + } else { + x.Projected.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[24] { + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[24] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("portworxVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[25] { + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[25] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleIO")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[26] { + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[26] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageos")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "hostPath": + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "emptyDir": + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "gitRepo": + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + case "secret": + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + case "nfs": + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "iscsi": + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "glusterfs": + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "persistentVolumeClaim": + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + case "rbd": + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "flexVolume": + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "flocker": + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "downwardAPI": + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "fc": + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "azureFile": + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "configMap": + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + case "vsphereVolume": + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + case "photonPersistentDisk": + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + case "projected": + if r.TryDecodeAsNil() { + if x.Projected != nil { + x.Projected = nil + } + } else { + if x.Projected == nil { + x.Projected = new(ProjectedVolumeSource) + } + x.Projected.CodecDecodeSelf(d) + } + case "portworxVolume": + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + case "scaleIO": + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + case "storageos": + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj31 int + var yyb31 bool + var yyhl31 bool = l >= 0 + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Projected != nil { + x.Projected = nil + } + } else { + if x.Projected == nil { + x.Projected = new(ProjectedVolumeSource) + } + x.Projected.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + for { + yyj31++ + if yyhl31 { + yyb31 = yyj31 > l + } else { + yyb31 = r.CheckBreak() + } + if yyb31 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj31-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClaimName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("claimName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClaimName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "claimName": + if r.TryDecodeAsNil() { + x.ClaimName = "" + } else { + yyv4 := &x.ClaimName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv6 := &x.ReadOnly + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*bool)(yyv6)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClaimName = "" + } else { + yyv9 := &x.ClaimName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv11 := &x.ReadOnly + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(yyv11)) = r.DecodeBool() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [21]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.GCEPersistentDisk != nil + yyq2[1] = x.AWSElasticBlockStore != nil + yyq2[2] = x.HostPath != nil + yyq2[3] = x.Glusterfs != nil + yyq2[4] = x.NFS != nil + yyq2[5] = x.RBD != nil + yyq2[6] = x.ISCSI != nil + yyq2[7] = x.Cinder != nil + yyq2[8] = x.CephFS != nil + yyq2[9] = x.FC != nil + yyq2[10] = x.Flocker != nil + yyq2[11] = x.FlexVolume != nil + yyq2[12] = x.AzureFile != nil + yyq2[13] = x.VsphereVolume != nil + yyq2[14] = x.Quobyte != nil + yyq2[15] = x.AzureDisk != nil + yyq2[16] = x.PhotonPersistentDisk != nil + yyq2[17] = x.PortworxVolume != nil + yyq2[18] = x.ScaleIO != nil + yyq2[19] = x.Local != nil + yyq2[20] = x.StorageOS != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(21) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("photonPersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[17] { + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("portworxVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[18] { + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleIO")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[19] { + if x.Local == nil { + r.EncodeNil() + } else { + x.Local.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("local")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Local == nil { + r.EncodeNil() + } else { + x.Local.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[20] { + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageos")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "gcePersistentDisk": + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "hostPath": + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "glusterfs": + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "nfs": + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "rbd": + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "iscsi": + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "cinder": + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "fc": + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "flocker": + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "flexVolume": + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "azureFile": + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "vsphereVolume": + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + case "photonPersistentDisk": + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + case "portworxVolume": + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + case "scaleIO": + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + case "local": + if r.TryDecodeAsNil() { + if x.Local != nil { + x.Local = nil + } + } else { + if x.Local == nil { + x.Local = new(LocalVolumeSource) + } + x.Local.CodecDecodeSelf(d) + } + case "storageos": + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSPersistentVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj25 int + var yyb25 bool + var yyhl25 bool = l >= 0 + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Local != nil { + x.Local = nil + } + } else { + if x.Local == nil { + x.Local = new(LocalVolumeSource) + } + x.Local.CodecDecodeSelf(d) + } + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSPersistentVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + for { + yyj25++ + if yyhl25 { + yyb25 = yyj25 > l + } else { + yyb25 = r.CheckBreak() + } + if yyb25 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj25-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [26]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Capacity) != 0 + yyq2[1] = x.PersistentVolumeSource.GCEPersistentDisk != nil && x.GCEPersistentDisk != nil + yyq2[2] = x.PersistentVolumeSource.AWSElasticBlockStore != nil && x.AWSElasticBlockStore != nil + yyq2[3] = x.PersistentVolumeSource.HostPath != nil && x.HostPath != nil + yyq2[4] = x.PersistentVolumeSource.Glusterfs != nil && x.Glusterfs != nil + yyq2[5] = x.PersistentVolumeSource.NFS != nil && x.NFS != nil + yyq2[6] = x.PersistentVolumeSource.RBD != nil && x.RBD != nil + yyq2[7] = x.PersistentVolumeSource.ISCSI != nil && x.ISCSI != nil + yyq2[8] = x.PersistentVolumeSource.Cinder != nil && x.Cinder != nil + yyq2[9] = x.PersistentVolumeSource.CephFS != nil && x.CephFS != nil + yyq2[10] = x.PersistentVolumeSource.FC != nil && x.FC != nil + yyq2[11] = x.PersistentVolumeSource.Flocker != nil && x.Flocker != nil + yyq2[12] = x.PersistentVolumeSource.FlexVolume != nil && x.FlexVolume != nil + yyq2[13] = x.PersistentVolumeSource.AzureFile != nil && x.AzureFile != nil + yyq2[14] = x.PersistentVolumeSource.VsphereVolume != nil && x.VsphereVolume != nil + yyq2[15] = x.PersistentVolumeSource.Quobyte != nil && x.Quobyte != nil + yyq2[16] = x.PersistentVolumeSource.AzureDisk != nil && x.AzureDisk != nil + yyq2[17] = x.PersistentVolumeSource.PhotonPersistentDisk != nil && x.PhotonPersistentDisk != nil + yyq2[18] = x.PersistentVolumeSource.PortworxVolume != nil && x.PortworxVolume != nil + yyq2[19] = x.PersistentVolumeSource.ScaleIO != nil && x.ScaleIO != nil + yyq2[20] = x.PersistentVolumeSource.Local != nil && x.Local != nil + yyq2[21] = x.PersistentVolumeSource.StorageOS != nil && x.StorageOS != nil + yyq2[22] = len(x.AccessModes) != 0 + yyq2[23] = x.ClaimRef != nil + yyq2[24] = x.PersistentVolumeReclaimPolicy != "" + yyq2[25] = x.StorageClassName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(26) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + var yyn6 bool + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + yyn6 = true + goto LABEL6 + } + LABEL6: + if yyr2 || yy2arr2 { + if yyn6 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn6 { + r.EncodeNil() + } else { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn9 bool + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + yyn9 = true + goto LABEL9 + } + LABEL9: + if yyr2 || yy2arr2 { + if yyn9 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn9 { + r.EncodeNil() + } else { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + } + var yyn12 bool + if x.PersistentVolumeSource.HostPath == nil { + yyn12 = true + goto LABEL12 + } + LABEL12: + if yyr2 || yy2arr2 { + if yyn12 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn12 { + r.EncodeNil() + } else { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + } + var yyn15 bool + if x.PersistentVolumeSource.Glusterfs == nil { + yyn15 = true + goto LABEL15 + } + LABEL15: + if yyr2 || yy2arr2 { + if yyn15 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn15 { + r.EncodeNil() + } else { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + } + var yyn18 bool + if x.PersistentVolumeSource.NFS == nil { + yyn18 = true + goto LABEL18 + } + LABEL18: + if yyr2 || yy2arr2 { + if yyn18 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn18 { + r.EncodeNil() + } else { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + } + var yyn21 bool + if x.PersistentVolumeSource.RBD == nil { + yyn21 = true + goto LABEL21 + } + LABEL21: + if yyr2 || yy2arr2 { + if yyn21 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn21 { + r.EncodeNil() + } else { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + } + var yyn24 bool + if x.PersistentVolumeSource.ISCSI == nil { + yyn24 = true + goto LABEL24 + } + LABEL24: + if yyr2 || yy2arr2 { + if yyn24 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn24 { + r.EncodeNil() + } else { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + } + var yyn27 bool + if x.PersistentVolumeSource.Cinder == nil { + yyn27 = true + goto LABEL27 + } + LABEL27: + if yyr2 || yy2arr2 { + if yyn27 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn27 { + r.EncodeNil() + } else { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + } + var yyn30 bool + if x.PersistentVolumeSource.CephFS == nil { + yyn30 = true + goto LABEL30 + } + LABEL30: + if yyr2 || yy2arr2 { + if yyn30 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn30 { + r.EncodeNil() + } else { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + } + var yyn33 bool + if x.PersistentVolumeSource.FC == nil { + yyn33 = true + goto LABEL33 + } + LABEL33: + if yyr2 || yy2arr2 { + if yyn33 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn33 { + r.EncodeNil() + } else { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + } + var yyn36 bool + if x.PersistentVolumeSource.Flocker == nil { + yyn36 = true + goto LABEL36 + } + LABEL36: + if yyr2 || yy2arr2 { + if yyn36 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn36 { + r.EncodeNil() + } else { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + } + var yyn39 bool + if x.PersistentVolumeSource.FlexVolume == nil { + yyn39 = true + goto LABEL39 + } + LABEL39: + if yyr2 || yy2arr2 { + if yyn39 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn39 { + r.EncodeNil() + } else { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn42 bool + if x.PersistentVolumeSource.AzureFile == nil { + yyn42 = true + goto LABEL42 + } + LABEL42: + if yyr2 || yy2arr2 { + if yyn42 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn42 { + r.EncodeNil() + } else { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + } + var yyn45 bool + if x.PersistentVolumeSource.VsphereVolume == nil { + yyn45 = true + goto LABEL45 + } + LABEL45: + if yyr2 || yy2arr2 { + if yyn45 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn45 { + r.EncodeNil() + } else { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn48 bool + if x.PersistentVolumeSource.Quobyte == nil { + yyn48 = true + goto LABEL48 + } + LABEL48: + if yyr2 || yy2arr2 { + if yyn48 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn48 { + r.EncodeNil() + } else { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + } + var yyn51 bool + if x.PersistentVolumeSource.AzureDisk == nil { + yyn51 = true + goto LABEL51 + } + LABEL51: + if yyr2 || yy2arr2 { + if yyn51 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn51 { + r.EncodeNil() + } else { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn54 bool + if x.PersistentVolumeSource.PhotonPersistentDisk == nil { + yyn54 = true + goto LABEL54 + } + LABEL54: + if yyr2 || yy2arr2 { + if yyn54 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[17] { + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("photonPersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn54 { + r.EncodeNil() + } else { + if x.PhotonPersistentDisk == nil { + r.EncodeNil() + } else { + x.PhotonPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn57 bool + if x.PersistentVolumeSource.PortworxVolume == nil { + yyn57 = true + goto LABEL57 + } + LABEL57: + if yyr2 || yy2arr2 { + if yyn57 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[18] { + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("portworxVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn57 { + r.EncodeNil() + } else { + if x.PortworxVolume == nil { + r.EncodeNil() + } else { + x.PortworxVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn60 bool + if x.PersistentVolumeSource.ScaleIO == nil { + yyn60 = true + goto LABEL60 + } + LABEL60: + if yyr2 || yy2arr2 { + if yyn60 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[19] { + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleIO")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn60 { + r.EncodeNil() + } else { + if x.ScaleIO == nil { + r.EncodeNil() + } else { + x.ScaleIO.CodecEncodeSelf(e) + } + } + } + } + var yyn63 bool + if x.PersistentVolumeSource.Local == nil { + yyn63 = true + goto LABEL63 + } + LABEL63: + if yyr2 || yy2arr2 { + if yyn63 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[20] { + if x.Local == nil { + r.EncodeNil() + } else { + x.Local.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("local")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn63 { + r.EncodeNil() + } else { + if x.Local == nil { + r.EncodeNil() + } else { + x.Local.CodecEncodeSelf(e) + } + } + } + } + var yyn66 bool + if x.PersistentVolumeSource.StorageOS == nil { + yyn66 = true + goto LABEL66 + } + LABEL66: + if yyr2 || yy2arr2 { + if yyn66 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[21] { + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageos")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn66 { + r.EncodeNil() + } else { + if x.StorageOS == nil { + r.EncodeNil() + } else { + x.StorageOS.CodecEncodeSelf(e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[22] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[22] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[23] { + if x.ClaimRef == nil { + r.EncodeNil() + } else { + x.ClaimRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[23] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("claimRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ClaimRef == nil { + r.EncodeNil() + } else { + x.ClaimRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[24] { + x.PersistentVolumeReclaimPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[24] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeReclaimPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.PersistentVolumeReclaimPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[25] { + yym79 := z.EncBinary() + _ = yym79 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StorageClassName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[25] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageClassName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym80 := z.EncBinary() + _ = yym80 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StorageClassName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv4 := &x.Capacity + yyv4.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + x.PersistentVolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + x.PersistentVolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "hostPath": + if x.PersistentVolumeSource.HostPath == nil { + x.PersistentVolumeSource.HostPath = new(HostPathVolumeSource) + } + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "glusterfs": + if x.PersistentVolumeSource.Glusterfs == nil { + x.PersistentVolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "nfs": + if x.PersistentVolumeSource.NFS == nil { + x.PersistentVolumeSource.NFS = new(NFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "rbd": + if x.PersistentVolumeSource.RBD == nil { + x.PersistentVolumeSource.RBD = new(RBDVolumeSource) + } + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "iscsi": + if x.PersistentVolumeSource.ISCSI == nil { + x.PersistentVolumeSource.ISCSI = new(ISCSIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "cinder": + if x.PersistentVolumeSource.Cinder == nil { + x.PersistentVolumeSource.Cinder = new(CinderVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if x.PersistentVolumeSource.CephFS == nil { + x.PersistentVolumeSource.CephFS = new(CephFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "fc": + if x.PersistentVolumeSource.FC == nil { + x.PersistentVolumeSource.FC = new(FCVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "flocker": + if x.PersistentVolumeSource.Flocker == nil { + x.PersistentVolumeSource.Flocker = new(FlockerVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "flexVolume": + if x.PersistentVolumeSource.FlexVolume == nil { + x.PersistentVolumeSource.FlexVolume = new(FlexVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "azureFile": + if x.PersistentVolumeSource.AzureFile == nil { + x.PersistentVolumeSource.AzureFile = new(AzureFileVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "vsphereVolume": + if x.PersistentVolumeSource.VsphereVolume == nil { + x.PersistentVolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if x.PersistentVolumeSource.Quobyte == nil { + x.PersistentVolumeSource.Quobyte = new(QuobyteVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if x.PersistentVolumeSource.AzureDisk == nil { + x.PersistentVolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + case "photonPersistentDisk": + if x.PersistentVolumeSource.PhotonPersistentDisk == nil { + x.PersistentVolumeSource.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + case "portworxVolume": + if x.PersistentVolumeSource.PortworxVolume == nil { + x.PersistentVolumeSource.PortworxVolume = new(PortworxVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + case "scaleIO": + if x.PersistentVolumeSource.ScaleIO == nil { + x.PersistentVolumeSource.ScaleIO = new(ScaleIOVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + case "local": + if x.PersistentVolumeSource.Local == nil { + x.PersistentVolumeSource.Local = new(LocalVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Local != nil { + x.Local = nil + } + } else { + if x.Local == nil { + x.Local = new(LocalVolumeSource) + } + x.Local.CodecDecodeSelf(d) + } + case "storageos": + if x.PersistentVolumeSource.StorageOS == nil { + x.PersistentVolumeSource.StorageOS = new(StorageOSPersistentVolumeSource) + } + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSPersistentVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv26 := &x.AccessModes + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv26), d) + } + } + case "claimRef": + if r.TryDecodeAsNil() { + if x.ClaimRef != nil { + x.ClaimRef = nil + } + } else { + if x.ClaimRef == nil { + x.ClaimRef = new(ObjectReference) + } + x.ClaimRef.CodecDecodeSelf(d) + } + case "persistentVolumeReclaimPolicy": + if r.TryDecodeAsNil() { + x.PersistentVolumeReclaimPolicy = "" + } else { + yyv29 := &x.PersistentVolumeReclaimPolicy + yyv29.CodecDecodeSelf(d) + } + case "storageClassName": + if r.TryDecodeAsNil() { + x.StorageClassName = "" + } else { + yyv30 := &x.StorageClassName + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*string)(yyv30)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj32 int + var yyb32 bool + var yyhl32 bool = l >= 0 + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv33 := &x.Capacity + yyv33.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + x.PersistentVolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + x.PersistentVolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.HostPath == nil { + x.PersistentVolumeSource.HostPath = new(HostPathVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Glusterfs == nil { + x.PersistentVolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.NFS == nil { + x.PersistentVolumeSource.NFS = new(NFSVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.RBD == nil { + x.PersistentVolumeSource.RBD = new(RBDVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.ISCSI == nil { + x.PersistentVolumeSource.ISCSI = new(ISCSIVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Cinder == nil { + x.PersistentVolumeSource.Cinder = new(CinderVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.CephFS == nil { + x.PersistentVolumeSource.CephFS = new(CephFSVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.FC == nil { + x.PersistentVolumeSource.FC = new(FCVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Flocker == nil { + x.PersistentVolumeSource.Flocker = new(FlockerVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.FlexVolume == nil { + x.PersistentVolumeSource.FlexVolume = new(FlexVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AzureFile == nil { + x.PersistentVolumeSource.AzureFile = new(AzureFileVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.VsphereVolume == nil { + x.PersistentVolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Quobyte == nil { + x.PersistentVolumeSource.Quobyte = new(QuobyteVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AzureDisk == nil { + x.PersistentVolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.PhotonPersistentDisk == nil { + x.PersistentVolumeSource.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PhotonPersistentDisk != nil { + x.PhotonPersistentDisk = nil + } + } else { + if x.PhotonPersistentDisk == nil { + x.PhotonPersistentDisk = new(PhotonPersistentDiskVolumeSource) + } + x.PhotonPersistentDisk.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.PortworxVolume == nil { + x.PersistentVolumeSource.PortworxVolume = new(PortworxVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PortworxVolume != nil { + x.PortworxVolume = nil + } + } else { + if x.PortworxVolume == nil { + x.PortworxVolume = new(PortworxVolumeSource) + } + x.PortworxVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.ScaleIO == nil { + x.PersistentVolumeSource.ScaleIO = new(ScaleIOVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ScaleIO != nil { + x.ScaleIO = nil + } + } else { + if x.ScaleIO == nil { + x.ScaleIO = new(ScaleIOVolumeSource) + } + x.ScaleIO.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Local == nil { + x.PersistentVolumeSource.Local = new(LocalVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Local != nil { + x.Local = nil + } + } else { + if x.Local == nil { + x.Local = new(LocalVolumeSource) + } + x.Local.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.StorageOS == nil { + x.PersistentVolumeSource.StorageOS = new(StorageOSPersistentVolumeSource) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StorageOS != nil { + x.StorageOS = nil + } + } else { + if x.StorageOS == nil { + x.StorageOS = new(StorageOSPersistentVolumeSource) + } + x.StorageOS.CodecDecodeSelf(d) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv55 := &x.AccessModes + yym56 := z.DecBinary() + _ = yym56 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv55), d) + } + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ClaimRef != nil { + x.ClaimRef = nil + } + } else { + if x.ClaimRef == nil { + x.ClaimRef = new(ObjectReference) + } + x.ClaimRef.CodecDecodeSelf(d) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PersistentVolumeReclaimPolicy = "" + } else { + yyv58 := &x.PersistentVolumeReclaimPolicy + yyv58.CodecDecodeSelf(d) + } + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StorageClassName = "" + } else { + yyv59 := &x.StorageClassName + yym60 := z.DecBinary() + _ = yym60 + if false { + } else { + *((*string)(yyv59)) = r.DecodeString() + } + } + for { + yyj32++ + if yyhl32 { + yyb32 = yyj32 > l + } else { + yyb32 = r.CheckBreak() + } + if yyb32 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj32-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PersistentVolumeReclaimPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeReclaimPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PersistentVolumeStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Phase != "" + yyq2[1] = x.Message != "" + yyq2[2] = x.Reason != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv4 := &x.Phase + yyv4.CodecDecodeSelf(d) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv5 := &x.Message + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv7 := &x.Reason + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv10 := &x.Phase + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv11 := &x.Message + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv13 := &x.Reason + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePersistentVolume(([]PersistentVolume)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePersistentVolume(([]PersistentVolume)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePersistentVolume((*[]PersistentVolume)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePersistentVolume((*[]PersistentVolume)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaim) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaim) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaim) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeClaimSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeClaimStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaim) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeClaimSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeClaimStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePersistentVolumeClaim(([]PersistentVolumeClaim)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePersistentVolumeClaim(([]PersistentVolumeClaim)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePersistentVolumeClaim((*[]PersistentVolumeClaim)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePersistentVolumeClaim((*[]PersistentVolumeClaim)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.AccessModes) != 0 + yyq2[1] = x.Selector != nil + yyq2[2] = true + yyq2[3] = x.VolumeName != "" + yyq2[4] = x.StorageClassName != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.Resources + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.Resources + yy12.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.StorageClassName == nil { + r.EncodeNil() + } else { + yy18 := *x.StorageClassName + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy18)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageClassName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StorageClassName == nil { + r.EncodeNil() + } else { + yy20 := *x.StorageClassName + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy20)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv4 := &x.AccessModes + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv4), d) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv8 := &x.Resources + yyv8.CodecDecodeSelf(d) + } + case "volumeName": + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv9 := &x.VolumeName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + case "storageClassName": + if r.TryDecodeAsNil() { + if x.StorageClassName != nil { + x.StorageClassName = nil + } + } else { + if x.StorageClassName == nil { + x.StorageClassName = new(string) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(x.StorageClassName)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv14 := &x.AccessModes + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv14), d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_v1.LabelSelector) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv18 := &x.Resources + yyv18.CodecDecodeSelf(d) + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv19 := &x.VolumeName + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StorageClassName != nil { + x.StorageClassName = nil + } + } else { + if x.StorageClassName == nil { + x.StorageClassName = new(string) + } + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(x.StorageClassName)) = r.DecodeString() + } + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Phase != "" + yyq2[1] = len(x.AccessModes) != 0 + yyq2[2] = len(x.Capacity) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv4 := &x.Phase + yyv4.CodecDecodeSelf(d) + } + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv5 := &x.AccessModes + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv5), d) + } + } + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv7 := &x.Capacity + yyv7.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv9 := &x.Phase + yyv9.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv10 := &x.AccessModes + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv10), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv12 := &x.Capacity + yyv12.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PersistentVolumeAccessMode) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeAccessMode) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PersistentVolumePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PersistentVolumeClaimPhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeClaimPhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HostPathVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostPathVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostPathVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostPathVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv7 := &x.Path + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EmptyDirVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Medium != "" + yyq2[1] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Medium.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("medium")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Medium.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy7 := &x.SizeLimit + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sizeLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.SizeLimit + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EmptyDirVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EmptyDirVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "medium": + if r.TryDecodeAsNil() { + x.Medium = "" + } else { + yyv4 := &x.Medium + yyv4.CodecDecodeSelf(d) + } + case "sizeLimit": + if r.TryDecodeAsNil() { + x.SizeLimit = pkg3_resource.Quantity{} + } else { + yyv5 := &x.SizeLimit + yym6 := z.DecBinary() + _ = yym6 + if false { + } else if z.HasExtensions() && z.DecExt(yyv5) { + } else if !yym6 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv5) + } else { + z.DecFallback(yyv5, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EmptyDirVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Medium = "" + } else { + yyv8 := &x.Medium + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SizeLimit = pkg3_resource.Quantity{} + } else { + yyv9 := &x.SizeLimit + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv9) + } else { + z.DecFallback(yyv9, false) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *GlusterfsVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EndpointsName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("endpoints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EndpointsName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GlusterfsVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GlusterfsVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "endpoints": + if r.TryDecodeAsNil() { + x.EndpointsName = "" + } else { + yyv4 := &x.EndpointsName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv6 := &x.Path + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv8 := &x.ReadOnly + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GlusterfsVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EndpointsName = "" + } else { + yyv11 := &x.EndpointsName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv13 := &x.Path + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv15 := &x.ReadOnly + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(yyv15)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RBDVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.FSType != "" + yyq2[3] = x.RBDPool != "" + yyq2[4] = x.RadosUser != "" + yyq2[5] = x.Keyring != "" + yyq2[6] = x.SecretRef != nil + yyq2[7] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.CephMonitors == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.CephMonitors, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("monitors")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephMonitors == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.CephMonitors, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDImage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDImage)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDPool)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pool")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDPool)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RadosUser)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RadosUser)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Keyring)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("keyring")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Keyring)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RBDVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RBDVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "monitors": + if r.TryDecodeAsNil() { + x.CephMonitors = nil + } else { + yyv4 := &x.CephMonitors + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "image": + if r.TryDecodeAsNil() { + x.RBDImage = "" + } else { + yyv6 := &x.RBDImage + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv8 := &x.FSType + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "pool": + if r.TryDecodeAsNil() { + x.RBDPool = "" + } else { + yyv10 := &x.RBDPool + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "user": + if r.TryDecodeAsNil() { + x.RadosUser = "" + } else { + yyv12 := &x.RadosUser + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "keyring": + if r.TryDecodeAsNil() { + x.Keyring = "" + } else { + yyv14 := &x.Keyring + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv17 := &x.ReadOnly + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*bool)(yyv17)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RBDVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj19 int + var yyb19 bool + var yyhl19 bool = l >= 0 + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CephMonitors = nil + } else { + yyv20 := &x.CephMonitors + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + z.F.DecSliceStringX(yyv20, false, d) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RBDImage = "" + } else { + yyv22 := &x.RBDImage + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*string)(yyv22)) = r.DecodeString() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv24 := &x.FSType + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + *((*string)(yyv24)) = r.DecodeString() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RBDPool = "" + } else { + yyv26 := &x.RBDPool + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*string)(yyv26)) = r.DecodeString() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RadosUser = "" + } else { + yyv28 := &x.RadosUser + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*string)(yyv28)) = r.DecodeString() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Keyring = "" + } else { + yyv30 := &x.Keyring + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*string)(yyv30)) = r.DecodeString() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv33 := &x.ReadOnly + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*bool)(yyv33)) = r.DecodeBool() + } + } + for { + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj19-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CinderVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + yyq2[2] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CinderVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CinderVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + yyv4 := &x.VolumeID + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv8 := &x.ReadOnly + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CinderVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + yyv11 := &x.VolumeID + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv13 := &x.FSType + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv15 := &x.ReadOnly + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(yyv15)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CephFSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Path != "" + yyq2[2] = x.User != "" + yyq2[3] = x.SecretFile != "" + yyq2[4] = x.SecretRef != nil + yyq2[5] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Monitors == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Monitors, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("monitors")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Monitors == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Monitors, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretFile)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretFile)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CephFSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CephFSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "monitors": + if r.TryDecodeAsNil() { + x.Monitors = nil + } else { + yyv4 := &x.Monitors + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv6 := &x.Path + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv8 := &x.User + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "secretFile": + if r.TryDecodeAsNil() { + x.SecretFile = "" + } else { + yyv10 := &x.SecretFile + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv13 := &x.ReadOnly + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*bool)(yyv13)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CephFSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj15 int + var yyb15 bool + var yyhl15 bool = l >= 0 + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Monitors = nil + } else { + yyv16 := &x.Monitors + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + z.F.DecSliceStringX(yyv16, false, d) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv18 := &x.Path + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv20 := &x.User + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*string)(yyv20)) = r.DecodeString() + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretFile = "" + } else { + yyv22 := &x.SecretFile + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*string)(yyv22)) = r.DecodeString() + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv25 := &x.ReadOnly + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*bool)(yyv25)) = r.DecodeBool() + } + } + for { + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj15-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FlockerVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.DatasetName != "" + yyq2[1] = x.DatasetUUID != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("datasetName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetUUID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("datasetUUID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetUUID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FlockerVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FlockerVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "datasetName": + if r.TryDecodeAsNil() { + x.DatasetName = "" + } else { + yyv4 := &x.DatasetName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "datasetUUID": + if r.TryDecodeAsNil() { + x.DatasetUUID = "" + } else { + yyv6 := &x.DatasetUUID + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FlockerVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DatasetName = "" + } else { + yyv9 := &x.DatasetName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DatasetUUID = "" + } else { + yyv11 := &x.DatasetUUID + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x StorageMedium) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *StorageMedium) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x Protocol) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *Protocol) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *GCEPersistentDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + yyq2[2] = x.Partition != 0 + yyq2[3] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PDName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pdName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PDName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GCEPersistentDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GCEPersistentDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "pdName": + if r.TryDecodeAsNil() { + x.PDName = "" + } else { + yyv4 := &x.PDName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "partition": + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + yyv8 := &x.Partition + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv10 := &x.ReadOnly + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GCEPersistentDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PDName = "" + } else { + yyv13 := &x.PDName + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv15 := &x.FSType + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + yyv17 := &x.Partition + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(yyv17)) = int32(r.DecodeInt(32)) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv19 := &x.ReadOnly + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(yyv19)) = r.DecodeBool() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *QuobyteVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.ReadOnly != false + yyq2[3] = x.User != "" + yyq2[4] = x.Group != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Registry)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("registry")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Registry)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Volume)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Volume)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *QuobyteVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *QuobyteVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "registry": + if r.TryDecodeAsNil() { + x.Registry = "" + } else { + yyv4 := &x.Registry + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "volume": + if r.TryDecodeAsNil() { + x.Volume = "" + } else { + yyv6 := &x.Volume + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv8 := &x.ReadOnly + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv10 := &x.User + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + yyv12 := &x.Group + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *QuobyteVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Registry = "" + } else { + yyv15 := &x.Registry + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volume = "" + } else { + yyv17 := &x.Volume + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv19 := &x.ReadOnly + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(yyv19)) = r.DecodeBool() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv21 := &x.User + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + yyv23 := &x.Group + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FlexVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + yyq2[2] = x.SecretRef != nil + yyq2[3] = x.ReadOnly != false + yyq2[4] = len(x.Options) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Driver)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("driver")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Driver)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Options == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncMapStringStringV(x.Options, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("options")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Options == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncMapStringStringV(x.Options, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FlexVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FlexVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "driver": + if r.TryDecodeAsNil() { + x.Driver = "" + } else { + yyv4 := &x.Driver + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv9 := &x.ReadOnly + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*bool)(yyv9)) = r.DecodeBool() + } + } + case "options": + if r.TryDecodeAsNil() { + x.Options = nil + } else { + yyv11 := &x.Options + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + z.F.DecMapStringStringX(yyv11, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FlexVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Driver = "" + } else { + yyv14 := &x.Driver + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv16 := &x.FSType + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv19 := &x.ReadOnly + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(yyv19)) = r.DecodeBool() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Options = nil + } else { + yyv21 := &x.Options + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + z.F.DecMapStringStringX(yyv21, false, d) + } + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AWSElasticBlockStoreVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + yyq2[2] = x.Partition != 0 + yyq2[3] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AWSElasticBlockStoreVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AWSElasticBlockStoreVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + yyv4 := &x.VolumeID + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "partition": + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + yyv8 := &x.Partition + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv10 := &x.ReadOnly + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AWSElasticBlockStoreVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + yyv13 := &x.VolumeID + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv15 := &x.FSType + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + yyv17 := &x.Partition + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(yyv17)) = int32(r.DecodeInt(32)) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv19 := &x.ReadOnly + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(yyv19)) = r.DecodeBool() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *GitRepoVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Revision != "" + yyq2[2] = x.Directory != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Repository)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("repository")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Repository)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Revision)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Revision)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Directory)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("directory")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Directory)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GitRepoVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GitRepoVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "repository": + if r.TryDecodeAsNil() { + x.Repository = "" + } else { + yyv4 := &x.Repository + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "revision": + if r.TryDecodeAsNil() { + x.Revision = "" + } else { + yyv6 := &x.Revision + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "directory": + if r.TryDecodeAsNil() { + x.Directory = "" + } else { + yyv8 := &x.Directory + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GitRepoVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Repository = "" + } else { + yyv11 := &x.Repository + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = "" + } else { + yyv13 := &x.Revision + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Directory = "" + } else { + yyv15 := &x.Directory + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.SecretName != "" + yyq2[1] = len(x.Items) != 0 + yyq2[2] = x.DefaultMode != nil + yyq2[3] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy10 := *x.DefaultMode + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy12 := *x.DefaultMode + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy15 := *x.Optional + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(yy15)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy17 := *x.Optional + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeBool(bool(yy17)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + yyv4 := &x.SecretName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv6 := &x.Items + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv6), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + yyv13 := &x.SecretName + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv15 := &x.Items + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv15), d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretProjection) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = len(x.Items) != 0 + yyq2[2] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy10 := *x.Optional + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy12 := *x.Optional + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretProjection) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretProjection) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv6 := &x.Items + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv6), d) + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretProjection) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv11 := &x.Name + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv13 := &x.Items + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv13), d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NFSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Server)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("server")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Server)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NFSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NFSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "server": + if r.TryDecodeAsNil() { + x.Server = "" + } else { + yyv4 := &x.Server + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv6 := &x.Path + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv8 := &x.ReadOnly + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NFSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Server = "" + } else { + yyv11 := &x.Server + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv13 := &x.Path + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv15 := &x.ReadOnly + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(yyv15)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ISCSIVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [10]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[3] = x.ISCSIInterface != "" + yyq2[4] = x.FSType != "" + yyq2[5] = x.ReadOnly != false + yyq2[6] = len(x.Portals) != 0 + yyq2[7] = x.DiscoveryCHAPAuth != false + yyq2[8] = x.SessionCHAPAuth != false + yyq2[9] = x.SecretRef != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(10) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetPortal)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPortal")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetPortal)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IQN)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iqn")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IQN)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.Lun)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lun")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.Lun)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ISCSIInterface)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsiInterface")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ISCSIInterface)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.Portals == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + z.F.EncSliceStringV(x.Portals, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("portals")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Portals == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + z.F.EncSliceStringV(x.Portals, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeBool(bool(x.DiscoveryCHAPAuth)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("chapAuthDiscovery")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeBool(bool(x.DiscoveryCHAPAuth)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeBool(bool(x.SessionCHAPAuth)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("chapAuthSession")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeBool(bool(x.SessionCHAPAuth)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ISCSIVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ISCSIVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "targetPortal": + if r.TryDecodeAsNil() { + x.TargetPortal = "" + } else { + yyv4 := &x.TargetPortal + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "iqn": + if r.TryDecodeAsNil() { + x.IQN = "" + } else { + yyv6 := &x.IQN + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "lun": + if r.TryDecodeAsNil() { + x.Lun = 0 + } else { + yyv8 := &x.Lun + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "iscsiInterface": + if r.TryDecodeAsNil() { + x.ISCSIInterface = "" + } else { + yyv10 := &x.ISCSIInterface + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv12 := &x.FSType + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv14 := &x.ReadOnly + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "portals": + if r.TryDecodeAsNil() { + x.Portals = nil + } else { + yyv16 := &x.Portals + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + z.F.DecSliceStringX(yyv16, false, d) + } + } + case "chapAuthDiscovery": + if r.TryDecodeAsNil() { + x.DiscoveryCHAPAuth = false + } else { + yyv18 := &x.DiscoveryCHAPAuth + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*bool)(yyv18)) = r.DecodeBool() + } + } + case "chapAuthSession": + if r.TryDecodeAsNil() { + x.SessionCHAPAuth = false + } else { + yyv20 := &x.SessionCHAPAuth + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*bool)(yyv20)) = r.DecodeBool() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ISCSIVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj23 int + var yyb23 bool + var yyhl23 bool = l >= 0 + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPortal = "" + } else { + yyv24 := &x.TargetPortal + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + *((*string)(yyv24)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IQN = "" + } else { + yyv26 := &x.IQN + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*string)(yyv26)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Lun = 0 + } else { + yyv28 := &x.Lun + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*int32)(yyv28)) = int32(r.DecodeInt(32)) + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ISCSIInterface = "" + } else { + yyv30 := &x.ISCSIInterface + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*string)(yyv30)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv32 := &x.FSType + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + *((*string)(yyv32)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv34 := &x.ReadOnly + yym35 := z.DecBinary() + _ = yym35 + if false { + } else { + *((*bool)(yyv34)) = r.DecodeBool() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Portals = nil + } else { + yyv36 := &x.Portals + yym37 := z.DecBinary() + _ = yym37 + if false { + } else { + z.F.DecSliceStringX(yyv36, false, d) + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DiscoveryCHAPAuth = false + } else { + yyv38 := &x.DiscoveryCHAPAuth + yym39 := z.DecBinary() + _ = yym39 + if false { + } else { + *((*bool)(yyv38)) = r.DecodeBool() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SessionCHAPAuth = false + } else { + yyv40 := &x.SessionCHAPAuth + yym41 := z.DecBinary() + _ = yym41 + if false { + } else { + *((*bool)(yyv40)) = r.DecodeBool() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + for { + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj23-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FCVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.FSType != "" + yyq2[3] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.TargetWWNs == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.TargetWWNs, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetWWNs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetWWNs == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.TargetWWNs, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Lun == nil { + r.EncodeNil() + } else { + yy7 := *x.Lun + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lun")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Lun == nil { + r.EncodeNil() + } else { + yy9 := *x.Lun + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FCVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FCVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "targetWWNs": + if r.TryDecodeAsNil() { + x.TargetWWNs = nil + } else { + yyv4 := &x.TargetWWNs + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "lun": + if r.TryDecodeAsNil() { + if x.Lun != nil { + x.Lun = nil + } + } else { + if x.Lun == nil { + x.Lun = new(int32) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(x.Lun)) = int32(r.DecodeInt(32)) + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv8 := &x.FSType + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv10 := &x.ReadOnly + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FCVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetWWNs = nil + } else { + yyv13 := &x.TargetWWNs + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + z.F.DecSliceStringX(yyv13, false, d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Lun != nil { + x.Lun = nil + } + } else { + if x.Lun == nil { + x.Lun = new(int32) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(x.Lun)) = int32(r.DecodeInt(32)) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv17 := &x.FSType + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv19 := &x.ReadOnly + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(yyv19)) = r.DecodeBool() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AzureFileVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ShareName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("shareName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ShareName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AzureFileVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AzureFileVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + yyv4 := &x.SecretName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "shareName": + if r.TryDecodeAsNil() { + x.ShareName = "" + } else { + yyv6 := &x.ShareName + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv8 := &x.ReadOnly + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AzureFileVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + yyv11 := &x.SecretName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ShareName = "" + } else { + yyv13 := &x.ShareName + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv15 := &x.ReadOnly + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(yyv15)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VsphereVirtualDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + yyq2[2] = x.StoragePolicyName != "" + yyq2[3] = x.StoragePolicyID != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumePath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumePath)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StoragePolicyName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storagePolicyName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StoragePolicyName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StoragePolicyID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storagePolicyID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StoragePolicyID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VsphereVirtualDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VsphereVirtualDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumePath": + if r.TryDecodeAsNil() { + x.VolumePath = "" + } else { + yyv4 := &x.VolumePath + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "storagePolicyName": + if r.TryDecodeAsNil() { + x.StoragePolicyName = "" + } else { + yyv8 := &x.StoragePolicyName + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "storagePolicyID": + if r.TryDecodeAsNil() { + x.StoragePolicyID = "" + } else { + yyv10 := &x.StoragePolicyID + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VsphereVirtualDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumePath = "" + } else { + yyv13 := &x.VolumePath + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv15 := &x.FSType + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StoragePolicyName = "" + } else { + yyv17 := &x.StoragePolicyName + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StoragePolicyID = "" + } else { + yyv19 := &x.StoragePolicyID + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PhotonPersistentDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PdID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pdID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PdID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PhotonPersistentDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PhotonPersistentDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "pdID": + if r.TryDecodeAsNil() { + x.PdID = "" + } else { + yyv4 := &x.PdID + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PhotonPersistentDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PdID = "" + } else { + yyv9 := &x.PdID + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv11 := &x.FSType + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x AzureDataDiskCachingMode) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *AzureDataDiskCachingMode) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x AzureDataDiskKind) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *AzureDataDiskKind) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AzureDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.CachingMode != nil + yyq2[3] = x.FSType != nil + yyq2[4] = x.ReadOnly != nil + yyq2[5] = x.Kind != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DiskName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("diskName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DiskName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DataDiskURI)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("diskURI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DataDiskURI)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.CachingMode == nil { + r.EncodeNil() + } else { + yy10 := *x.CachingMode + yy10.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cachingMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CachingMode == nil { + r.EncodeNil() + } else { + yy12 := *x.CachingMode + yy12.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.FSType == nil { + r.EncodeNil() + } else { + yy15 := *x.FSType + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy15)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FSType == nil { + r.EncodeNil() + } else { + yy17 := *x.FSType + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy17)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.ReadOnly == nil { + r.EncodeNil() + } else { + yy20 := *x.ReadOnly + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeBool(bool(yy20)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadOnly == nil { + r.EncodeNil() + } else { + yy22 := *x.ReadOnly + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeBool(bool(yy22)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.Kind == nil { + r.EncodeNil() + } else { + yy25 := *x.Kind + yy25.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Kind == nil { + r.EncodeNil() + } else { + yy27 := *x.Kind + yy27.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AzureDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AzureDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "diskName": + if r.TryDecodeAsNil() { + x.DiskName = "" + } else { + yyv4 := &x.DiskName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "diskURI": + if r.TryDecodeAsNil() { + x.DataDiskURI = "" + } else { + yyv6 := &x.DataDiskURI + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "cachingMode": + if r.TryDecodeAsNil() { + if x.CachingMode != nil { + x.CachingMode = nil + } + } else { + if x.CachingMode == nil { + x.CachingMode = new(AzureDataDiskCachingMode) + } + x.CachingMode.CodecDecodeSelf(d) + } + case "fsType": + if r.TryDecodeAsNil() { + if x.FSType != nil { + x.FSType = nil + } + } else { + if x.FSType == nil { + x.FSType = new(string) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(x.FSType)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + if x.ReadOnly != nil { + x.ReadOnly = nil + } + } else { + if x.ReadOnly == nil { + x.ReadOnly = new(bool) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(x.ReadOnly)) = r.DecodeBool() + } + } + case "kind": + if r.TryDecodeAsNil() { + if x.Kind != nil { + x.Kind = nil + } + } else { + if x.Kind == nil { + x.Kind = new(AzureDataDiskKind) + } + x.Kind.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AzureDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DiskName = "" + } else { + yyv15 := &x.DiskName + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DataDiskURI = "" + } else { + yyv17 := &x.DataDiskURI + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CachingMode != nil { + x.CachingMode = nil + } + } else { + if x.CachingMode == nil { + x.CachingMode = new(AzureDataDiskCachingMode) + } + x.CachingMode.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FSType != nil { + x.FSType = nil + } + } else { + if x.FSType == nil { + x.FSType = new(string) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*string)(x.FSType)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadOnly != nil { + x.ReadOnly = nil + } + } else { + if x.ReadOnly == nil { + x.ReadOnly = new(bool) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*bool)(x.ReadOnly)) = r.DecodeBool() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Kind != nil { + x.Kind = nil + } + } else { + if x.Kind == nil { + x.Kind = new(AzureDataDiskKind) + } + x.Kind.CodecDecodeSelf(d) + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PortworxVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FSType != "" + yyq2[2] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PortworxVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PortworxVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + yyv4 := &x.VolumeID + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv6 := &x.FSType + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv8 := &x.ReadOnly + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PortworxVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + yyv11 := &x.VolumeID + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv13 := &x.FSType + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv15 := &x.ReadOnly + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(yyv15)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleIOVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [10]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[3] = x.SSLEnabled != false + yyq2[4] = x.ProtectionDomain != "" + yyq2[5] = x.StoragePool != "" + yyq2[6] = x.StorageMode != "" + yyq2[7] = x.VolumeName != "" + yyq2[8] = x.FSType != "" + yyq2[9] = x.ReadOnly != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(10) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Gateway)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gateway")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Gateway)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.System)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("system")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.System)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.SSLEnabled)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sslEnabled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.SSLEnabled)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProtectionDomain)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protectionDomain")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProtectionDomain)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StoragePool)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storagePool")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StoragePool)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StorageMode)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("storageMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.StorageMode)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleIOVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleIOVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "gateway": + if r.TryDecodeAsNil() { + x.Gateway = "" + } else { + yyv4 := &x.Gateway + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "system": + if r.TryDecodeAsNil() { + x.System = "" + } else { + yyv6 := &x.System + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "sslEnabled": + if r.TryDecodeAsNil() { + x.SSLEnabled = false + } else { + yyv9 := &x.SSLEnabled + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*bool)(yyv9)) = r.DecodeBool() + } + } + case "protectionDomain": + if r.TryDecodeAsNil() { + x.ProtectionDomain = "" + } else { + yyv11 := &x.ProtectionDomain + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + case "storagePool": + if r.TryDecodeAsNil() { + x.StoragePool = "" + } else { + yyv13 := &x.StoragePool + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + case "storageMode": + if r.TryDecodeAsNil() { + x.StorageMode = "" + } else { + yyv15 := &x.StorageMode + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + case "volumeName": + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv17 := &x.VolumeName + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv19 := &x.FSType + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv21 := &x.ReadOnly + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*bool)(yyv21)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleIOVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj23 int + var yyb23 bool + var yyhl23 bool = l >= 0 + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Gateway = "" + } else { + yyv24 := &x.Gateway + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + *((*string)(yyv24)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.System = "" + } else { + yyv26 := &x.System + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*string)(yyv26)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SSLEnabled = false + } else { + yyv29 := &x.SSLEnabled + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*bool)(yyv29)) = r.DecodeBool() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ProtectionDomain = "" + } else { + yyv31 := &x.ProtectionDomain + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StoragePool = "" + } else { + yyv33 := &x.StoragePool + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*string)(yyv33)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StorageMode = "" + } else { + yyv35 := &x.StorageMode + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*string)(yyv35)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv37 := &x.VolumeName + yym38 := z.DecBinary() + _ = yym38 + if false { + } else { + *((*string)(yyv37)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv39 := &x.FSType + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + *((*string)(yyv39)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv41 := &x.ReadOnly + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + *((*bool)(yyv41)) = r.DecodeBool() + } + } + for { + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj23-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StorageOSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.VolumeName != "" + yyq2[1] = x.VolumeNamespace != "" + yyq2[2] = x.FSType != "" + yyq2[3] = x.ReadOnly != false + yyq2[4] = x.SecretRef != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeNamespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeNamespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeNamespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageOSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageOSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumeName": + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv4 := &x.VolumeName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "volumeNamespace": + if r.TryDecodeAsNil() { + x.VolumeNamespace = "" + } else { + yyv6 := &x.VolumeNamespace + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv8 := &x.FSType + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv10 := &x.ReadOnly + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageOSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv14 := &x.VolumeName + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeNamespace = "" + } else { + yyv16 := &x.VolumeNamespace + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv18 := &x.FSType + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv20 := &x.ReadOnly + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*bool)(yyv20)) = r.DecodeBool() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StorageOSPersistentVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.VolumeName != "" + yyq2[1] = x.VolumeNamespace != "" + yyq2[2] = x.FSType != "" + yyq2[3] = x.ReadOnly != false + yyq2[4] = x.SecretRef != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeNamespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeNamespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeNamespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageOSPersistentVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageOSPersistentVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumeName": + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv4 := &x.VolumeName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "volumeNamespace": + if r.TryDecodeAsNil() { + x.VolumeNamespace = "" + } else { + yyv6 := &x.VolumeNamespace + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv8 := &x.FSType + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv10 := &x.ReadOnly + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(ObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageOSPersistentVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + yyv14 := &x.VolumeName + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeNamespace = "" + } else { + yyv16 := &x.VolumeNamespace + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + yyv18 := &x.FSType + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv20 := &x.ReadOnly + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*bool)(yyv20)) = r.DecodeBool() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(ObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = len(x.Items) != 0 + yyq2[2] = x.DefaultMode != nil + yyq2[3] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy10 := *x.DefaultMode + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy12 := *x.DefaultMode + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy15 := *x.Optional + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(yy15)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy17 := *x.Optional + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeBool(bool(yy17)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv6 := &x.Items + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv6), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv13 := &x.Name + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv15 := &x.Items + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv15), d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapProjection) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = len(x.Items) != 0 + yyq2[2] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy10 := *x.Optional + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy12 := *x.Optional + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapProjection) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapProjection) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv6 := &x.Items + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv6), d) + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapProjection) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv11 := &x.Name + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv13 := &x.Items + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv13), d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ProjectedVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.DefaultMode != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Sources == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceVolumeProjection(([]VolumeProjection)(x.Sources), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Sources == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceVolumeProjection(([]VolumeProjection)(x.Sources), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy7 := *x.DefaultMode + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy9 := *x.DefaultMode + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ProjectedVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ProjectedVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "sources": + if r.TryDecodeAsNil() { + x.Sources = nil + } else { + yyv4 := &x.Sources + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceVolumeProjection((*[]VolumeProjection)(yyv4), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ProjectedVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Sources = nil + } else { + yyv9 := &x.Sources + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceVolumeProjection((*[]VolumeProjection)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeProjection) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Secret != nil + yyq2[1] = x.DownwardAPI != nil + yyq2[2] = x.ConfigMap != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeProjection) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeProjection) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "secret": + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretProjection) + } + x.Secret.CodecDecodeSelf(d) + } + case "downwardAPI": + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIProjection) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "configMap": + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapProjection) + } + x.ConfigMap.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeProjection) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretProjection) + } + x.Secret.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIProjection) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapProjection) + } + x.ConfigMap.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *KeyToPath) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.Mode != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Mode == nil { + r.EncodeNil() + } else { + yy10 := *x.Mode + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Mode == nil { + r.EncodeNil() + } else { + yy12 := *x.Mode + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *KeyToPath) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *KeyToPath) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv4 := &x.Key + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv6 := &x.Path + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "mode": + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *KeyToPath) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv11 := &x.Key + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv13 := &x.Path + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv7 := &x.Path + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.HostPort != 0 + yyq2[3] = x.Protocol != "" + yyq2[4] = x.HostIP != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.HostPort)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.HostPort)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.ContainerPort)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.ContainerPort)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "hostPort": + if r.TryDecodeAsNil() { + x.HostPort = 0 + } else { + yyv6 := &x.HostPort + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "containerPort": + if r.TryDecodeAsNil() { + x.ContainerPort = 0 + } else { + yyv8 := &x.ContainerPort + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + yyv10 := &x.Protocol + yyv10.CodecDecodeSelf(d) + } + case "hostIP": + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + yyv11 := &x.HostIP + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv14 := &x.Name + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPort = 0 + } else { + yyv16 := &x.HostPort + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*int32)(yyv16)) = int32(r.DecodeInt(32)) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerPort = 0 + } else { + yyv18 := &x.ContainerPort + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int32)(yyv18)) = int32(r.DecodeInt(32)) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + yyv20 := &x.Protocol + yyv20.CodecDecodeSelf(d) + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + yyv21 := &x.HostIP + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeMount) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.ReadOnly != false + yyq2[3] = x.SubPath != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MountPath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mountPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MountPath)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SubPath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SubPath)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeMount) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeMount) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv6 := &x.ReadOnly + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*bool)(yyv6)) = r.DecodeBool() + } + } + case "mountPath": + if r.TryDecodeAsNil() { + x.MountPath = "" + } else { + yyv8 := &x.MountPath + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "subPath": + if r.TryDecodeAsNil() { + x.SubPath = "" + } else { + yyv10 := &x.SubPath + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeMount) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv13 := &x.Name + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + yyv15 := &x.ReadOnly + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(yyv15)) = r.DecodeBool() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MountPath = "" + } else { + yyv17 := &x.MountPath + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SubPath = "" + } else { + yyv19 := &x.SubPath + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvVar) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Value != "" + yyq2[2] = x.ValueFrom != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.ValueFrom == nil { + r.EncodeNil() + } else { + x.ValueFrom.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("valueFrom")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ValueFrom == nil { + r.EncodeNil() + } else { + x.ValueFrom.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvVar) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvVar) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv6 := &x.Value + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "valueFrom": + if r.TryDecodeAsNil() { + if x.ValueFrom != nil { + x.ValueFrom = nil + } + } else { + if x.ValueFrom == nil { + x.ValueFrom = new(EnvVarSource) + } + x.ValueFrom.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvVar) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv12 := &x.Value + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ValueFrom != nil { + x.ValueFrom = nil + } + } else { + if x.ValueFrom == nil { + x.ValueFrom = new(EnvVarSource) + } + x.ValueFrom.CodecDecodeSelf(d) + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvVarSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.FieldRef != nil + yyq2[1] = x.ResourceFieldRef != nil + yyq2[2] = x.ConfigMapKeyRef != nil + yyq2[3] = x.SecretKeyRef != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceFieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.ConfigMapKeyRef == nil { + r.EncodeNil() + } else { + x.ConfigMapKeyRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMapKeyRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMapKeyRef == nil { + r.EncodeNil() + } else { + x.ConfigMapKeyRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.SecretKeyRef == nil { + r.EncodeNil() + } else { + x.SecretKeyRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretKeyRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretKeyRef == nil { + r.EncodeNil() + } else { + x.SecretKeyRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvVarSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvVarSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "fieldRef": + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + case "resourceFieldRef": + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + case "configMapKeyRef": + if r.TryDecodeAsNil() { + if x.ConfigMapKeyRef != nil { + x.ConfigMapKeyRef = nil + } + } else { + if x.ConfigMapKeyRef == nil { + x.ConfigMapKeyRef = new(ConfigMapKeySelector) + } + x.ConfigMapKeyRef.CodecDecodeSelf(d) + } + case "secretKeyRef": + if r.TryDecodeAsNil() { + if x.SecretKeyRef != nil { + x.SecretKeyRef = nil + } + } else { + if x.SecretKeyRef == nil { + x.SecretKeyRef = new(SecretKeySelector) + } + x.SecretKeyRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvVarSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMapKeyRef != nil { + x.ConfigMapKeyRef = nil + } + } else { + if x.ConfigMapKeyRef == nil { + x.ConfigMapKeyRef = new(ConfigMapKeySelector) + } + x.ConfigMapKeyRef.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretKeyRef != nil { + x.SecretKeyRef = nil + } + } else { + if x.SecretKeyRef == nil { + x.SecretKeyRef = new(SecretKeySelector) + } + x.SecretKeyRef.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectFieldSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.APIVersion != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectFieldSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectFieldSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv4 := &x.APIVersion + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fieldPath": + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + yyv6 := &x.FieldPath + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectFieldSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv9 := &x.APIVersion + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + yyv11 := &x.FieldPath + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceFieldSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ContainerName != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.Divisor + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("divisor")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.Divisor + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceFieldSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceFieldSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "containerName": + if r.TryDecodeAsNil() { + x.ContainerName = "" + } else { + yyv4 := &x.ContainerName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + yyv6 := &x.Resource + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "divisor": + if r.TryDecodeAsNil() { + x.Divisor = pkg3_resource.Quantity{} + } else { + yyv8 := &x.Divisor + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceFieldSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerName = "" + } else { + yyv11 := &x.ContainerName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + yyv13 := &x.Resource + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Divisor = pkg3_resource.Quantity{} + } else { + yyv15 := &x.Divisor + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(yyv15) { + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv15) + } else { + z.DecFallback(yyv15, false) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapKeySelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[2] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy10 := *x.Optional + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy12 := *x.Optional + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapKeySelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapKeySelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv6 := &x.Key + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapKeySelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv11 := &x.Name + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv13 := &x.Key + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretKeySelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[2] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy10 := *x.Optional + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy12 := *x.Optional + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretKeySelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretKeySelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv6 := &x.Key + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretKeySelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv11 := &x.Name + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv13 := &x.Key + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvFromSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Prefix != "" + yyq2[1] = x.ConfigMapRef != nil + yyq2[2] = x.SecretRef != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Prefix)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("prefix")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Prefix)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.ConfigMapRef == nil { + r.EncodeNil() + } else { + x.ConfigMapRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMapRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMapRef == nil { + r.EncodeNil() + } else { + x.ConfigMapRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvFromSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvFromSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "prefix": + if r.TryDecodeAsNil() { + x.Prefix = "" + } else { + yyv4 := &x.Prefix + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "configMapRef": + if r.TryDecodeAsNil() { + if x.ConfigMapRef != nil { + x.ConfigMapRef = nil + } + } else { + if x.ConfigMapRef == nil { + x.ConfigMapRef = new(ConfigMapEnvSource) + } + x.ConfigMapRef.CodecDecodeSelf(d) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(SecretEnvSource) + } + x.SecretRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvFromSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Prefix = "" + } else { + yyv9 := &x.Prefix + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMapRef != nil { + x.ConfigMapRef = nil + } + } else { + if x.ConfigMapRef == nil { + x.ConfigMapRef = new(ConfigMapEnvSource) + } + x.ConfigMapRef.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(SecretEnvSource) + } + x.SecretRef.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapEnvSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy7 := *x.Optional + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeBool(bool(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy9 := *x.Optional + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapEnvSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapEnvSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapEnvSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv9 := &x.Name + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretEnvSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.Optional != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Optional == nil { + r.EncodeNil() + } else { + yy7 := *x.Optional + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeBool(bool(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("optional")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Optional == nil { + r.EncodeNil() + } else { + yy9 := *x.Optional + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretEnvSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretEnvSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "optional": + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretEnvSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv9 := &x.Name + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Optional != nil { + x.Optional = nil + } + } else { + if x.Optional == nil { + x.Optional = new(bool) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(x.Optional)) = r.DecodeBool() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPHeader) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPHeader) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPHeader) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv6 := &x.Value + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPHeader) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv9 := &x.Name + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv11 := &x.Value + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPGetAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Path != "" + yyq2[2] = x.Host != "" + yyq2[3] = x.Scheme != "" + yyq2[4] = len(x.HTTPHeaders) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.Port + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.Port + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + x.Scheme.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scheme")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Scheme.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.HTTPHeaders == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + h.encSliceHTTPHeader(([]HTTPHeader)(x.HTTPHeaders), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpHeaders")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTPHeaders == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceHTTPHeader(([]HTTPHeader)(x.HTTPHeaders), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPGetAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPGetAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "port": + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv6 := &x.Port + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv8 := &x.Host + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "scheme": + if r.TryDecodeAsNil() { + x.Scheme = "" + } else { + yyv10 := &x.Scheme + yyv10.CodecDecodeSelf(d) + } + case "httpHeaders": + if r.TryDecodeAsNil() { + x.HTTPHeaders = nil + } else { + yyv11 := &x.HTTPHeaders + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceHTTPHeader((*[]HTTPHeader)(yyv11), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPGetAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv14 := &x.Path + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv16 := &x.Port + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else if !yym17 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv16) + } else { + z.DecFallback(yyv16, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv18 := &x.Host + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Scheme = "" + } else { + yyv20 := &x.Scheme + yyv20.CodecDecodeSelf(d) + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HTTPHeaders = nil + } else { + yyv21 := &x.HTTPHeaders + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + h.decSliceHTTPHeader((*[]HTTPHeader)(yyv21), d) + } + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x URIScheme) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *URIScheme) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *TCPSocketAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Host != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.Port + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4) + } else { + z.EncFallback(yy4) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.Port + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(yy6) + } else { + z.EncFallback(yy6) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TCPSocketAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TCPSocketAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "port": + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv4 := &x.Port + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4) + } else { + z.DecFallback(yyv4, false) + } + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv6 := &x.Host + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TCPSocketAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv9 := &x.Port + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv9) + } else { + z.DecFallback(yyv9, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv11 := &x.Host + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExecAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Command) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Command == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExecAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExecAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv4 := &x.Command + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExecAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv7 := &x.Command + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + z.F.DecSliceStringX(yyv7, false, d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Probe) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Handler.Exec != nil && x.Exec != nil + yyq2[1] = x.Handler.HTTPGet != nil && x.HTTPGet != nil + yyq2[2] = x.Handler.TCPSocket != nil && x.TCPSocket != nil + yyq2[3] = x.InitialDelaySeconds != 0 + yyq2[4] = x.TimeoutSeconds != 0 + yyq2[5] = x.PeriodSeconds != 0 + yyq2[6] = x.SuccessThreshold != 0 + yyq2[7] = x.FailureThreshold != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + var yyn3 bool + if x.Handler.Exec == nil { + yyn3 = true + goto LABEL3 + } + LABEL3: + if yyr2 || yy2arr2 { + if yyn3 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn3 { + r.EncodeNil() + } else { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } + } + } + var yyn6 bool + if x.Handler.HTTPGet == nil { + yyn6 = true + goto LABEL6 + } + LABEL6: + if yyr2 || yy2arr2 { + if yyn6 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpGet")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn6 { + r.EncodeNil() + } else { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } + } + } + var yyn9 bool + if x.Handler.TCPSocket == nil { + yyn9 = true + goto LABEL9 + } + LABEL9: + if yyr2 || yy2arr2 { + if yyn9 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tcpSocket")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn9 { + r.EncodeNil() + } else { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.InitialDelaySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initialDelaySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.InitialDelaySeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.TimeoutSeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.TimeoutSeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.PeriodSeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("periodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.PeriodSeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.SuccessThreshold)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("successThreshold")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.SuccessThreshold)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeInt(int64(x.FailureThreshold)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failureThreshold")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(x.FailureThreshold)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Probe) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Probe) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "exec": + if x.Handler.Exec == nil { + x.Handler.Exec = new(ExecAction) + } + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + case "httpGet": + if x.Handler.HTTPGet == nil { + x.Handler.HTTPGet = new(HTTPGetAction) + } + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + case "tcpSocket": + if x.Handler.TCPSocket == nil { + x.Handler.TCPSocket = new(TCPSocketAction) + } + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + case "initialDelaySeconds": + if r.TryDecodeAsNil() { + x.InitialDelaySeconds = 0 + } else { + yyv7 := &x.InitialDelaySeconds + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + case "timeoutSeconds": + if r.TryDecodeAsNil() { + x.TimeoutSeconds = 0 + } else { + yyv9 := &x.TimeoutSeconds + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*int32)(yyv9)) = int32(r.DecodeInt(32)) + } + } + case "periodSeconds": + if r.TryDecodeAsNil() { + x.PeriodSeconds = 0 + } else { + yyv11 := &x.PeriodSeconds + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(yyv11)) = int32(r.DecodeInt(32)) + } + } + case "successThreshold": + if r.TryDecodeAsNil() { + x.SuccessThreshold = 0 + } else { + yyv13 := &x.SuccessThreshold + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*int32)(yyv13)) = int32(r.DecodeInt(32)) + } + } + case "failureThreshold": + if r.TryDecodeAsNil() { + x.FailureThreshold = 0 + } else { + yyv15 := &x.FailureThreshold + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(yyv15)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Probe) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj17 int + var yyb17 bool + var yyhl17 bool = l >= 0 + if x.Handler.Exec == nil { + x.Handler.Exec = new(ExecAction) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + if x.Handler.HTTPGet == nil { + x.Handler.HTTPGet = new(HTTPGetAction) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + if x.Handler.TCPSocket == nil { + x.Handler.TCPSocket = new(TCPSocketAction) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InitialDelaySeconds = 0 + } else { + yyv21 := &x.InitialDelaySeconds + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TimeoutSeconds = 0 + } else { + yyv23 := &x.TimeoutSeconds + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PeriodSeconds = 0 + } else { + yyv25 := &x.PeriodSeconds + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SuccessThreshold = 0 + } else { + yyv27 := &x.SuccessThreshold + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FailureThreshold = 0 + } else { + yyv29 := &x.FailureThreshold + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*int32)(yyv29)) = int32(r.DecodeInt(32)) + } + } + for { + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj17-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PullPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PullPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x TerminationMessagePolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TerminationMessagePolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x Capability) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *Capability) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Capabilities) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Add) != 0 + yyq2[1] = len(x.Drop) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Add == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Add), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("add")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Add == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Add), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Drop == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Drop), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("drop")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Drop == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Drop), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Capabilities) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Capabilities) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "add": + if r.TryDecodeAsNil() { + x.Add = nil + } else { + yyv4 := &x.Add + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv4), d) + } + } + case "drop": + if r.TryDecodeAsNil() { + x.Drop = nil + } else { + yyv6 := &x.Drop + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Capabilities) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Add = nil + } else { + yyv9 := &x.Add + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Drop = nil + } else { + yyv11 := &x.Drop + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceRequirements) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Limits) != 0 + yyq2[1] = len(x.Requests) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Limits == nil { + r.EncodeNil() + } else { + x.Limits.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limits")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Limits == nil { + r.EncodeNil() + } else { + x.Limits.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Requests == nil { + r.EncodeNil() + } else { + x.Requests.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requests")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Requests == nil { + r.EncodeNil() + } else { + x.Requests.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceRequirements) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceRequirements) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "limits": + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv4 := &x.Limits + yyv4.CodecDecodeSelf(d) + } + case "requests": + if r.TryDecodeAsNil() { + x.Requests = nil + } else { + yyv5 := &x.Requests + yyv5.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceRequirements) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv7 := &x.Limits + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Requests = nil + } else { + yyv8 := &x.Requests + yyv8.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Container) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [20]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = len(x.Command) != 0 + yyq2[3] = len(x.Args) != 0 + yyq2[4] = x.WorkingDir != "" + yyq2[5] = len(x.Ports) != 0 + yyq2[6] = len(x.EnvFrom) != 0 + yyq2[7] = len(x.Env) != 0 + yyq2[8] = true + yyq2[9] = len(x.VolumeMounts) != 0 + yyq2[10] = x.LivenessProbe != nil + yyq2[11] = x.ReadinessProbe != nil + yyq2[12] = x.Lifecycle != nil + yyq2[13] = x.TerminationMessagePath != "" + yyq2[14] = x.TerminationMessagePolicy != "" + yyq2[15] = x.ImagePullPolicy != "" + yyq2[16] = x.SecurityContext != nil + yyq2[17] = x.Stdin != false + yyq2[18] = x.StdinOnce != false + yyq2[19] = x.TTY != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(20) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Command == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Args == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.Args, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("args")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Args == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncSliceStringV(x.Args, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.WorkingDir)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("workingDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.WorkingDir)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceContainerPort(([]ContainerPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + h.encSliceContainerPort(([]ContainerPort)(x.Ports), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.EnvFrom == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + h.encSliceEnvFromSource(([]EnvFromSource)(x.EnvFrom), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("envFrom")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.EnvFrom == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + h.encSliceEnvFromSource(([]EnvFromSource)(x.EnvFrom), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.Env == nil { + r.EncodeNil() + } else { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + h.encSliceEnvVar(([]EnvVar)(x.Env), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("env")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Env == nil { + r.EncodeNil() + } else { + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + h.encSliceEnvVar(([]EnvVar)(x.Env), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yy28 := &x.Resources + yy28.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy30 := &x.Resources + yy30.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.VolumeMounts == nil { + r.EncodeNil() + } else { + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + h.encSliceVolumeMount(([]VolumeMount)(x.VolumeMounts), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeMounts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumeMounts == nil { + r.EncodeNil() + } else { + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + h.encSliceVolumeMount(([]VolumeMount)(x.VolumeMounts), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.LivenessProbe == nil { + r.EncodeNil() + } else { + x.LivenessProbe.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("livenessProbe")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LivenessProbe == nil { + r.EncodeNil() + } else { + x.LivenessProbe.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.ReadinessProbe == nil { + r.EncodeNil() + } else { + x.ReadinessProbe.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readinessProbe")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadinessProbe == nil { + r.EncodeNil() + } else { + x.ReadinessProbe.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.Lifecycle == nil { + r.EncodeNil() + } else { + x.Lifecycle.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lifecycle")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Lifecycle == nil { + r.EncodeNil() + } else { + x.Lifecycle.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TerminationMessagePath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationMessagePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TerminationMessagePath)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + x.TerminationMessagePolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationMessagePolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.TerminationMessagePolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + x.ImagePullPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ImagePullPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("securityContext")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[17] { + yym57 := z.EncBinary() + _ = yym57 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym58 := z.EncBinary() + _ = yym58 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[18] { + yym60 := z.EncBinary() + _ = yym60 + if false { + } else { + r.EncodeBool(bool(x.StdinOnce)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdinOnce")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym61 := z.EncBinary() + _ = yym61 + if false { + } else { + r.EncodeBool(bool(x.StdinOnce)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[19] { + yym63 := z.EncBinary() + _ = yym63 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym64 := z.EncBinary() + _ = yym64 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Container) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Container) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "image": + if r.TryDecodeAsNil() { + x.Image = "" + } else { + yyv6 := &x.Image + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv8 := &x.Command + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "args": + if r.TryDecodeAsNil() { + x.Args = nil + } else { + yyv10 := &x.Args + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecSliceStringX(yyv10, false, d) + } + } + case "workingDir": + if r.TryDecodeAsNil() { + x.WorkingDir = "" + } else { + yyv12 := &x.WorkingDir + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv14 := &x.Ports + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decSliceContainerPort((*[]ContainerPort)(yyv14), d) + } + } + case "envFrom": + if r.TryDecodeAsNil() { + x.EnvFrom = nil + } else { + yyv16 := &x.EnvFrom + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + h.decSliceEnvFromSource((*[]EnvFromSource)(yyv16), d) + } + } + case "env": + if r.TryDecodeAsNil() { + x.Env = nil + } else { + yyv18 := &x.Env + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + h.decSliceEnvVar((*[]EnvVar)(yyv18), d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv20 := &x.Resources + yyv20.CodecDecodeSelf(d) + } + case "volumeMounts": + if r.TryDecodeAsNil() { + x.VolumeMounts = nil + } else { + yyv21 := &x.VolumeMounts + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + h.decSliceVolumeMount((*[]VolumeMount)(yyv21), d) + } + } + case "livenessProbe": + if r.TryDecodeAsNil() { + if x.LivenessProbe != nil { + x.LivenessProbe = nil + } + } else { + if x.LivenessProbe == nil { + x.LivenessProbe = new(Probe) + } + x.LivenessProbe.CodecDecodeSelf(d) + } + case "readinessProbe": + if r.TryDecodeAsNil() { + if x.ReadinessProbe != nil { + x.ReadinessProbe = nil + } + } else { + if x.ReadinessProbe == nil { + x.ReadinessProbe = new(Probe) + } + x.ReadinessProbe.CodecDecodeSelf(d) + } + case "lifecycle": + if r.TryDecodeAsNil() { + if x.Lifecycle != nil { + x.Lifecycle = nil + } + } else { + if x.Lifecycle == nil { + x.Lifecycle = new(Lifecycle) + } + x.Lifecycle.CodecDecodeSelf(d) + } + case "terminationMessagePath": + if r.TryDecodeAsNil() { + x.TerminationMessagePath = "" + } else { + yyv26 := &x.TerminationMessagePath + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*string)(yyv26)) = r.DecodeString() + } + } + case "terminationMessagePolicy": + if r.TryDecodeAsNil() { + x.TerminationMessagePolicy = "" + } else { + yyv28 := &x.TerminationMessagePolicy + yyv28.CodecDecodeSelf(d) + } + case "imagePullPolicy": + if r.TryDecodeAsNil() { + x.ImagePullPolicy = "" + } else { + yyv29 := &x.ImagePullPolicy + yyv29.CodecDecodeSelf(d) + } + case "securityContext": + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(SecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + yyv31 := &x.Stdin + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*bool)(yyv31)) = r.DecodeBool() + } + } + case "stdinOnce": + if r.TryDecodeAsNil() { + x.StdinOnce = false + } else { + yyv33 := &x.StdinOnce + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*bool)(yyv33)) = r.DecodeBool() + } + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + yyv35 := &x.TTY + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*bool)(yyv35)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Container) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj37 int + var yyb37 bool + var yyhl37 bool = l >= 0 + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv38 := &x.Name + yym39 := z.DecBinary() + _ = yym39 + if false { + } else { + *((*string)(yyv38)) = r.DecodeString() + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Image = "" + } else { + yyv40 := &x.Image + yym41 := z.DecBinary() + _ = yym41 + if false { + } else { + *((*string)(yyv40)) = r.DecodeString() + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv42 := &x.Command + yym43 := z.DecBinary() + _ = yym43 + if false { + } else { + z.F.DecSliceStringX(yyv42, false, d) + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Args = nil + } else { + yyv44 := &x.Args + yym45 := z.DecBinary() + _ = yym45 + if false { + } else { + z.F.DecSliceStringX(yyv44, false, d) + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.WorkingDir = "" + } else { + yyv46 := &x.WorkingDir + yym47 := z.DecBinary() + _ = yym47 + if false { + } else { + *((*string)(yyv46)) = r.DecodeString() + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv48 := &x.Ports + yym49 := z.DecBinary() + _ = yym49 + if false { + } else { + h.decSliceContainerPort((*[]ContainerPort)(yyv48), d) + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EnvFrom = nil + } else { + yyv50 := &x.EnvFrom + yym51 := z.DecBinary() + _ = yym51 + if false { + } else { + h.decSliceEnvFromSource((*[]EnvFromSource)(yyv50), d) + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Env = nil + } else { + yyv52 := &x.Env + yym53 := z.DecBinary() + _ = yym53 + if false { + } else { + h.decSliceEnvVar((*[]EnvVar)(yyv52), d) + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv54 := &x.Resources + yyv54.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeMounts = nil + } else { + yyv55 := &x.VolumeMounts + yym56 := z.DecBinary() + _ = yym56 + if false { + } else { + h.decSliceVolumeMount((*[]VolumeMount)(yyv55), d) + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LivenessProbe != nil { + x.LivenessProbe = nil + } + } else { + if x.LivenessProbe == nil { + x.LivenessProbe = new(Probe) + } + x.LivenessProbe.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadinessProbe != nil { + x.ReadinessProbe = nil + } + } else { + if x.ReadinessProbe == nil { + x.ReadinessProbe = new(Probe) + } + x.ReadinessProbe.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Lifecycle != nil { + x.Lifecycle = nil + } + } else { + if x.Lifecycle == nil { + x.Lifecycle = new(Lifecycle) + } + x.Lifecycle.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TerminationMessagePath = "" + } else { + yyv60 := &x.TerminationMessagePath + yym61 := z.DecBinary() + _ = yym61 + if false { + } else { + *((*string)(yyv60)) = r.DecodeString() + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TerminationMessagePolicy = "" + } else { + yyv62 := &x.TerminationMessagePolicy + yyv62.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullPolicy = "" + } else { + yyv63 := &x.ImagePullPolicy + yyv63.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(SecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + yyv65 := &x.Stdin + yym66 := z.DecBinary() + _ = yym66 + if false { + } else { + *((*bool)(yyv65)) = r.DecodeBool() + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StdinOnce = false + } else { + yyv67 := &x.StdinOnce + yym68 := z.DecBinary() + _ = yym68 + if false { + } else { + *((*bool)(yyv67)) = r.DecodeBool() + } + } + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + yyv69 := &x.TTY + yym70 := z.DecBinary() + _ = yym70 + if false { + } else { + *((*bool)(yyv69)) = r.DecodeBool() + } + } + for { + yyj37++ + if yyhl37 { + yyb37 = yyj37 > l + } else { + yyb37 = r.CheckBreak() + } + if yyb37 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj37-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Handler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Exec != nil + yyq2[1] = x.HTTPGet != nil + yyq2[2] = x.TCPSocket != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpGet")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tcpSocket")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Handler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Handler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "exec": + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + case "httpGet": + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + case "tcpSocket": + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Handler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Lifecycle) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.PostStart != nil + yyq2[1] = x.PreStop != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.PostStart == nil { + r.EncodeNil() + } else { + x.PostStart.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("postStart")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PostStart == nil { + r.EncodeNil() + } else { + x.PostStart.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.PreStop == nil { + r.EncodeNil() + } else { + x.PreStop.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preStop")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreStop == nil { + r.EncodeNil() + } else { + x.PreStop.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Lifecycle) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Lifecycle) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "postStart": + if r.TryDecodeAsNil() { + if x.PostStart != nil { + x.PostStart = nil + } + } else { + if x.PostStart == nil { + x.PostStart = new(Handler) + } + x.PostStart.CodecDecodeSelf(d) + } + case "preStop": + if r.TryDecodeAsNil() { + if x.PreStop != nil { + x.PreStop = nil + } + } else { + if x.PreStop == nil { + x.PreStop = new(Handler) + } + x.PreStop.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Lifecycle) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PostStart != nil { + x.PostStart = nil + } + } else { + if x.PostStart == nil { + x.PostStart = new(Handler) + } + x.PostStart.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PreStop != nil { + x.PreStop = nil + } + } else { + if x.PreStop == nil { + x.PreStop = new(Handler) + } + x.PreStop.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ConditionStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ConditionStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ContainerStateWaiting) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Reason != "" + yyq2[1] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateWaiting) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateWaiting) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv4 := &x.Reason + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv6 := &x.Message + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateWaiting) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv9 := &x.Reason + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv11 := &x.Message + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStateRunning) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.StartedAt + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else if yym5 { + z.EncBinaryMarshal(yy4) + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4) + } else { + z.EncFallback(yy4) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.StartedAt + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else if yym7 { + z.EncBinaryMarshal(yy6) + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(yy6) + } else { + z.EncFallback(yy6) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateRunning) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateRunning) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "startedAt": + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_v1.Time{} + } else { + yyv4 := &x.StartedAt + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else if yym5 { + z.DecBinaryUnmarshal(yyv4) + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4) + } else { + z.DecFallback(yyv4, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateRunning) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_v1.Time{} + } else { + yyv7 := &x.StartedAt + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if yym8 { + z.DecBinaryUnmarshal(yyv7) + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStateTerminated) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Signal != 0 + yyq2[2] = x.Reason != "" + yyq2[3] = x.Message != "" + yyq2[4] = true + yyq2[5] = true + yyq2[6] = x.ContainerID != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.ExitCode)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exitCode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.ExitCode)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.Signal)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("signal")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.Signal)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.StartedAt + yym17 := z.EncBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.EncExt(yy16) { + } else if yym17 { + z.EncBinaryMarshal(yy16) + } else if !yym17 && z.IsJSONHandle() { + z.EncJSONMarshal(yy16) + } else { + z.EncFallback(yy16) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy18 := &x.StartedAt + yym19 := z.EncBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.EncExt(yy18) { + } else if yym19 { + z.EncBinaryMarshal(yy18) + } else if !yym19 && z.IsJSONHandle() { + z.EncJSONMarshal(yy18) + } else { + z.EncFallback(yy18) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yy21 := &x.FinishedAt + yym22 := z.EncBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.EncExt(yy21) { + } else if yym22 { + z.EncBinaryMarshal(yy21) + } else if !yym22 && z.IsJSONHandle() { + z.EncJSONMarshal(yy21) + } else { + z.EncFallback(yy21) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finishedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy23 := &x.FinishedAt + yym24 := z.EncBinary() + _ = yym24 + if false { + } else if z.HasExtensions() && z.EncExt(yy23) { + } else if yym24 { + z.EncBinaryMarshal(yy23) + } else if !yym24 && z.IsJSONHandle() { + z.EncJSONMarshal(yy23) + } else { + z.EncFallback(yy23) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym27 := z.EncBinary() + _ = yym27 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateTerminated) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateTerminated) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "exitCode": + if r.TryDecodeAsNil() { + x.ExitCode = 0 + } else { + yyv4 := &x.ExitCode + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "signal": + if r.TryDecodeAsNil() { + x.Signal = 0 + } else { + yyv6 := &x.Signal + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv8 := &x.Reason + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv10 := &x.Message + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "startedAt": + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_v1.Time{} + } else { + yyv12 := &x.StartedAt + yym13 := z.DecBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.DecExt(yyv12) { + } else if yym13 { + z.DecBinaryUnmarshal(yyv12) + } else if !yym13 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv12) + } else { + z.DecFallback(yyv12, false) + } + } + case "finishedAt": + if r.TryDecodeAsNil() { + x.FinishedAt = pkg2_v1.Time{} + } else { + yyv14 := &x.FinishedAt + yym15 := z.DecBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.DecExt(yyv14) { + } else if yym15 { + z.DecBinaryUnmarshal(yyv14) + } else if !yym15 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv14) + } else { + z.DecFallback(yyv14, false) + } + } + case "containerID": + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + yyv16 := &x.ContainerID + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateTerminated) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExitCode = 0 + } else { + yyv19 := &x.ExitCode + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int32)(yyv19)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Signal = 0 + } else { + yyv21 := &x.Signal + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv23 := &x.Reason + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv25 := &x.Message + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_v1.Time{} + } else { + yyv27 := &x.StartedAt + yym28 := z.DecBinary() + _ = yym28 + if false { + } else if z.HasExtensions() && z.DecExt(yyv27) { + } else if yym28 { + z.DecBinaryUnmarshal(yyv27) + } else if !yym28 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv27) + } else { + z.DecFallback(yyv27, false) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FinishedAt = pkg2_v1.Time{} + } else { + yyv29 := &x.FinishedAt + yym30 := z.DecBinary() + _ = yym30 + if false { + } else if z.HasExtensions() && z.DecExt(yyv29) { + } else if yym30 { + z.DecBinaryUnmarshal(yyv29) + } else if !yym30 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv29) + } else { + z.DecFallback(yyv29, false) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + yyv31 := &x.ContainerID + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerState) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Waiting != nil + yyq2[1] = x.Running != nil + yyq2[2] = x.Terminated != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Waiting == nil { + r.EncodeNil() + } else { + x.Waiting.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("waiting")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Waiting == nil { + r.EncodeNil() + } else { + x.Waiting.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Running == nil { + r.EncodeNil() + } else { + x.Running.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("running")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Running == nil { + r.EncodeNil() + } else { + x.Running.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Terminated == nil { + r.EncodeNil() + } else { + x.Terminated.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminated")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Terminated == nil { + r.EncodeNil() + } else { + x.Terminated.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerState) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerState) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "waiting": + if r.TryDecodeAsNil() { + if x.Waiting != nil { + x.Waiting = nil + } + } else { + if x.Waiting == nil { + x.Waiting = new(ContainerStateWaiting) + } + x.Waiting.CodecDecodeSelf(d) + } + case "running": + if r.TryDecodeAsNil() { + if x.Running != nil { + x.Running = nil + } + } else { + if x.Running == nil { + x.Running = new(ContainerStateRunning) + } + x.Running.CodecDecodeSelf(d) + } + case "terminated": + if r.TryDecodeAsNil() { + if x.Terminated != nil { + x.Terminated = nil + } + } else { + if x.Terminated == nil { + x.Terminated = new(ContainerStateTerminated) + } + x.Terminated.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerState) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Waiting != nil { + x.Waiting = nil + } + } else { + if x.Waiting == nil { + x.Waiting = new(ContainerStateWaiting) + } + x.Waiting.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Running != nil { + x.Running = nil + } + } else { + if x.Running == nil { + x.Running = new(ContainerStateRunning) + } + x.Running.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Terminated != nil { + x.Terminated = nil + } + } else { + if x.Terminated == nil { + x.Terminated = new(ContainerStateTerminated) + } + x.Terminated.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = true + yyq2[2] = true + yyq2[7] = x.ContainerID != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 5 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy7 := &x.State + yy7.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("state")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.State + yy9.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy12 := &x.LastTerminationState + yy12.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastState")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.LastTerminationState + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeBool(bool(x.Ready)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ready")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeBool(bool(x.Ready)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.RestartCount)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("restartCount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeInt(int64(x.RestartCount)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ImageID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imageID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym27 := z.EncBinary() + _ = yym27 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ImageID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "state": + if r.TryDecodeAsNil() { + x.State = ContainerState{} + } else { + yyv6 := &x.State + yyv6.CodecDecodeSelf(d) + } + case "lastState": + if r.TryDecodeAsNil() { + x.LastTerminationState = ContainerState{} + } else { + yyv7 := &x.LastTerminationState + yyv7.CodecDecodeSelf(d) + } + case "ready": + if r.TryDecodeAsNil() { + x.Ready = false + } else { + yyv8 := &x.Ready + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + case "restartCount": + if r.TryDecodeAsNil() { + x.RestartCount = 0 + } else { + yyv10 := &x.RestartCount + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "image": + if r.TryDecodeAsNil() { + x.Image = "" + } else { + yyv12 := &x.Image + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "imageID": + if r.TryDecodeAsNil() { + x.ImageID = "" + } else { + yyv14 := &x.ImageID + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "containerID": + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + yyv16 := &x.ContainerID + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv19 := &x.Name + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.State = ContainerState{} + } else { + yyv21 := &x.State + yyv21.CodecDecodeSelf(d) + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTerminationState = ContainerState{} + } else { + yyv22 := &x.LastTerminationState + yyv22.CodecDecodeSelf(d) + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ready = false + } else { + yyv23 := &x.Ready + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*bool)(yyv23)) = r.DecodeBool() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RestartCount = 0 + } else { + yyv25 := &x.RestartCount + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Image = "" + } else { + yyv27 := &x.Image + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImageID = "" + } else { + yyv29 := &x.ImageID + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + yyv31 := &x.ContainerID + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PodPhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodPhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PodConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = true + yyq2[4] = x.Reason != "" + yyq2[5] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastProbeTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastProbeTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.LastTransitionTime + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.LastTransitionTime + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(yy17) { + } else if yym18 { + z.EncBinaryMarshal(yy17) + } else if !yym18 && z.IsJSONHandle() { + z.EncJSONMarshal(yy17) + } else { + z.EncFallback(yy17) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg2_v1.Time{} + } else { + yyv6 := &x.LastProbeTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_v1.Time{} + } else { + yyv8 := &x.LastTransitionTime + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if yym9 { + z.DecBinaryUnmarshal(yyv8) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv10 := &x.Reason + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv12 := &x.Message + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv15 := &x.Type + yyv15.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv16 := &x.Status + yyv16.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg2_v1.Time{} + } else { + yyv17 := &x.LastProbeTime + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_v1.Time{} + } else { + yyv19 := &x.LastTransitionTime + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if yym20 { + z.DecBinaryUnmarshal(yyv19) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv21 := &x.Reason + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv23 := &x.Message + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RestartPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RestartPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x DNSPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DNSPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.NodeSelectorTerms == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceNodeSelectorTerm(([]NodeSelectorTerm)(x.NodeSelectorTerms), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeSelectorTerms")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeSelectorTerms == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceNodeSelectorTerm(([]NodeSelectorTerm)(x.NodeSelectorTerms), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "nodeSelectorTerms": + if r.TryDecodeAsNil() { + x.NodeSelectorTerms = nil + } else { + yyv4 := &x.NodeSelectorTerms + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceNodeSelectorTerm((*[]NodeSelectorTerm)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeSelectorTerms = nil + } else { + yyv7 := &x.NodeSelectorTerms + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceNodeSelectorTerm((*[]NodeSelectorTerm)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSelectorTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceNodeSelectorRequirement(([]NodeSelectorRequirement)(x.MatchExpressions), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchExpressions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceNodeSelectorRequirement(([]NodeSelectorRequirement)(x.MatchExpressions), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelectorTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelectorTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "matchExpressions": + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv4 := &x.MatchExpressions + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceNodeSelectorRequirement((*[]NodeSelectorRequirement)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelectorTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv7 := &x.MatchExpressions + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceNodeSelectorRequirement((*[]NodeSelectorRequirement)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSelectorRequirement) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = len(x.Values) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Operator.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Values == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("values")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Values == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelectorRequirement) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelectorRequirement) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv4 := &x.Key + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + yyv6 := &x.Operator + yyv6.CodecDecodeSelf(d) + } + case "values": + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv7 := &x.Values + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + z.F.DecSliceStringX(yyv7, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelectorRequirement) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv10 := &x.Key + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + yyv12 := &x.Operator + yyv12.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv13 := &x.Values + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + z.F.DecSliceStringX(yyv13, false, d) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodeSelectorOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeSelectorOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Affinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.NodeAffinity != nil + yyq2[1] = x.PodAffinity != nil + yyq2[2] = x.PodAntiAffinity != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.NodeAffinity == nil { + r.EncodeNil() + } else { + x.NodeAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeAffinity == nil { + r.EncodeNil() + } else { + x.NodeAffinity.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.PodAffinity == nil { + r.EncodeNil() + } else { + x.PodAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodAffinity == nil { + r.EncodeNil() + } else { + x.PodAffinity.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.PodAntiAffinity == nil { + r.EncodeNil() + } else { + x.PodAntiAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAntiAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodAntiAffinity == nil { + r.EncodeNil() + } else { + x.PodAntiAffinity.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Affinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Affinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "nodeAffinity": + if r.TryDecodeAsNil() { + if x.NodeAffinity != nil { + x.NodeAffinity = nil + } + } else { + if x.NodeAffinity == nil { + x.NodeAffinity = new(NodeAffinity) + } + x.NodeAffinity.CodecDecodeSelf(d) + } + case "podAffinity": + if r.TryDecodeAsNil() { + if x.PodAffinity != nil { + x.PodAffinity = nil + } + } else { + if x.PodAffinity == nil { + x.PodAffinity = new(PodAffinity) + } + x.PodAffinity.CodecDecodeSelf(d) + } + case "podAntiAffinity": + if r.TryDecodeAsNil() { + if x.PodAntiAffinity != nil { + x.PodAntiAffinity = nil + } + } else { + if x.PodAntiAffinity == nil { + x.PodAntiAffinity = new(PodAntiAffinity) + } + x.PodAntiAffinity.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Affinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NodeAffinity != nil { + x.NodeAffinity = nil + } + } else { + if x.NodeAffinity == nil { + x.NodeAffinity = new(NodeAffinity) + } + x.NodeAffinity.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodAffinity != nil { + x.PodAffinity = nil + } + } else { + if x.PodAffinity == nil { + x.PodAffinity = new(PodAffinity) + } + x.PodAffinity.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodAntiAffinity != nil { + x.PodAntiAffinity = nil + } + } else { + if x.PodAntiAffinity == nil { + x.PodAntiAffinity = new(PodAntiAffinity) + } + x.PodAntiAffinity.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.RequiredDuringSchedulingIgnoredDuringExecution) != 0 + yyq2[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv4 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv4), d) + } + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv6 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv9 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv11 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAntiAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.RequiredDuringSchedulingIgnoredDuringExecution) != 0 + yyq2[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAntiAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAntiAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv4 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv4), d) + } + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv6 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAntiAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv9 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv11 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *WeightedPodAffinityTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("weight")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.PodAffinityTerm + yy7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAffinityTerm")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.PodAffinityTerm + yy9.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *WeightedPodAffinityTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *WeightedPodAffinityTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "weight": + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + yyv4 := &x.Weight + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "podAffinityTerm": + if r.TryDecodeAsNil() { + x.PodAffinityTerm = PodAffinityTerm{} + } else { + yyv6 := &x.PodAffinityTerm + yyv6.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *WeightedPodAffinityTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + yyv8 := &x.Weight + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodAffinityTerm = PodAffinityTerm{} + } else { + yyv10 := &x.PodAffinityTerm + yyv10.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAffinityTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.LabelSelector != nil + yyq2[1] = len(x.Namespaces) != 0 + yyq2[2] = x.TopologyKey != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Namespaces == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncSliceStringV(x.Namespaces, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaces")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Namespaces == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncSliceStringV(x.Namespaces, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TopologyKey)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("topologyKey")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TopologyKey)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAffinityTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAffinityTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "labelSelector": + if r.TryDecodeAsNil() { + if x.LabelSelector != nil { + x.LabelSelector = nil + } + } else { + if x.LabelSelector == nil { + x.LabelSelector = new(pkg2_v1.LabelSelector) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.LabelSelector) { + } else { + z.DecFallback(x.LabelSelector, false) + } + } + case "namespaces": + if r.TryDecodeAsNil() { + x.Namespaces = nil + } else { + yyv6 := &x.Namespaces + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecSliceStringX(yyv6, false, d) + } + } + case "topologyKey": + if r.TryDecodeAsNil() { + x.TopologyKey = "" + } else { + yyv8 := &x.TopologyKey + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAffinityTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LabelSelector != nil { + x.LabelSelector = nil + } + } else { + if x.LabelSelector == nil { + x.LabelSelector = new(pkg2_v1.LabelSelector) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.LabelSelector) { + } else { + z.DecFallback(x.LabelSelector, false) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespaces = nil + } else { + yyv13 := &x.Namespaces + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + z.F.DecSliceStringX(yyv13, false, d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TopologyKey = "" + } else { + yyv15 := &x.TopologyKey + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.RequiredDuringSchedulingIgnoredDuringExecution != nil + yyq2[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSlicePreferredSchedulingTerm(([]PreferredSchedulingTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSlicePreferredSchedulingTerm(([]PreferredSchedulingTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + if x.RequiredDuringSchedulingIgnoredDuringExecution != nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + } else { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = new(NodeSelector) + } + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecDecodeSelf(d) + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv5 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSlicePreferredSchedulingTerm((*[]PreferredSchedulingTerm)(yyv5), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RequiredDuringSchedulingIgnoredDuringExecution != nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + } else { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = new(NodeSelector) + } + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv9 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSlicePreferredSchedulingTerm((*[]PreferredSchedulingTerm)(yyv9), d) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PreferredSchedulingTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("weight")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.Preference + yy7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preference")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.Preference + yy9.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PreferredSchedulingTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PreferredSchedulingTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "weight": + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + yyv4 := &x.Weight + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "preference": + if r.TryDecodeAsNil() { + x.Preference = NodeSelectorTerm{} + } else { + yyv6 := &x.Preference + yyv6.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PreferredSchedulingTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + yyv8 := &x.Weight + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Preference = NodeSelectorTerm{} + } else { + yyv10 := &x.Preference + yyv10.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Taint) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Value != "" + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Effect.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("effect")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Effect.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.TimeAdded + yym14 := z.EncBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.EncExt(yy13) { + } else if yym14 { + z.EncBinaryMarshal(yy13) + } else if !yym14 && z.IsJSONHandle() { + z.EncJSONMarshal(yy13) + } else { + z.EncFallback(yy13) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeAdded")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy15 := &x.TimeAdded + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Taint) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Taint) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv4 := &x.Key + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv6 := &x.Value + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "effect": + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + yyv8 := &x.Effect + yyv8.CodecDecodeSelf(d) + } + case "timeAdded": + if r.TryDecodeAsNil() { + x.TimeAdded = pkg2_v1.Time{} + } else { + yyv9 := &x.TimeAdded + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else if yym10 { + z.DecBinaryUnmarshal(yyv9) + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv9) + } else { + z.DecFallback(yyv9, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Taint) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv12 := &x.Key + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv14 := &x.Value + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + yyv16 := &x.Effect + yyv16.CodecDecodeSelf(d) + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TimeAdded = pkg2_v1.Time{} + } else { + yyv17 := &x.TimeAdded + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x TaintEffect) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TaintEffect) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Toleration) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Key != "" + yyq2[1] = x.Operator != "" + yyq2[2] = x.Value != "" + yyq2[3] = x.Effect != "" + yyq2[4] = x.TolerationSeconds != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + x.Operator.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + x.Effect.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("effect")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Effect.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.TolerationSeconds == nil { + r.EncodeNil() + } else { + yy16 := *x.TolerationSeconds + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(yy16)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tolerationSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TolerationSeconds == nil { + r.EncodeNil() + } else { + yy18 := *x.TolerationSeconds + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(yy18)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Toleration) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Toleration) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv4 := &x.Key + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + yyv6 := &x.Operator + yyv6.CodecDecodeSelf(d) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv7 := &x.Value + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + case "effect": + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + yyv9 := &x.Effect + yyv9.CodecDecodeSelf(d) + } + case "tolerationSeconds": + if r.TryDecodeAsNil() { + if x.TolerationSeconds != nil { + x.TolerationSeconds = nil + } + } else { + if x.TolerationSeconds == nil { + x.TolerationSeconds = new(int64) + } + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int64)(x.TolerationSeconds)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Toleration) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + yyv13 := &x.Key + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + yyv15 := &x.Operator + yyv15.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv16 := &x.Value + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + yyv18 := &x.Effect + yyv18.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TolerationSeconds != nil { + x.TolerationSeconds = nil + } + } else { + if x.TolerationSeconds == nil { + x.TolerationSeconds = new(int64) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int64)(x.TolerationSeconds)) = int64(r.DecodeInt(64)) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x TolerationOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TolerationOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [23]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Volumes) != 0 + yyq2[1] = len(x.InitContainers) != 0 + yyq2[3] = x.RestartPolicy != "" + yyq2[4] = x.TerminationGracePeriodSeconds != nil + yyq2[5] = x.ActiveDeadlineSeconds != nil + yyq2[6] = x.DNSPolicy != "" + yyq2[7] = len(x.NodeSelector) != 0 + yyq2[8] = x.ServiceAccountName != "" + yyq2[9] = x.DeprecatedServiceAccount != "" + yyq2[10] = x.AutomountServiceAccountToken != nil + yyq2[11] = x.NodeName != "" + yyq2[12] = x.HostNetwork != false + yyq2[13] = x.HostPID != false + yyq2[14] = x.HostIPC != false + yyq2[15] = x.SecurityContext != nil + yyq2[16] = len(x.ImagePullSecrets) != 0 + yyq2[17] = x.Hostname != "" + yyq2[18] = x.Subdomain != "" + yyq2[19] = x.Affinity != nil + yyq2[20] = x.SchedulerName != "" + yyq2[21] = len(x.Tolerations) != 0 + yyq2[22] = len(x.HostAliases) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(23) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Volumes == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceVolume(([]Volume)(x.Volumes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceVolume(([]Volume)(x.Volumes), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.InitContainers == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceContainer(([]Container)(x.InitContainers), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initContainers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.InitContainers == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceContainer(([]Container)(x.InitContainers), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Containers == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + h.encSliceContainer(([]Container)(x.Containers), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Containers == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + h.encSliceContainer(([]Container)(x.Containers), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + x.RestartPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("restartPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.RestartPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.TerminationGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy16 := *x.TerminationGracePeriodSeconds + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(yy16)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TerminationGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy18 := *x.TerminationGracePeriodSeconds + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(yy18)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy21 := *x.ActiveDeadlineSeconds + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(yy21)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy23 := *x.ActiveDeadlineSeconds + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeInt(int64(yy23)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + x.DNSPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("dnsPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.DNSPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.NodeSelector == nil { + r.EncodeNil() + } else { + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + z.F.EncMapStringStringV(x.NodeSelector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeSelector == nil { + r.EncodeNil() + } else { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + z.F.EncMapStringStringV(x.NodeSelector, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceAccountName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceAccountName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceAccountName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DeprecatedServiceAccount)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceAccount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DeprecatedServiceAccount)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.AutomountServiceAccountToken == nil { + r.EncodeNil() + } else { + yy38 := *x.AutomountServiceAccountToken + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeBool(bool(yy38)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("automountServiceAccountToken")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AutomountServiceAccountToken == nil { + r.EncodeNil() + } else { + yy40 := *x.AutomountServiceAccountToken + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeBool(bool(yy40)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + yym43 := z.EncBinary() + _ = yym43 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.NodeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.NodeName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostNetwork")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + yym49 := z.EncBinary() + _ = yym49 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + yym52 := z.EncBinary() + _ = yym52 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIPC")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("securityContext")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym58 := z.EncBinary() + _ = yym58 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullSecrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym59 := z.EncBinary() + _ = yym59 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[17] { + yym61 := z.EncBinary() + _ = yym61 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym62 := z.EncBinary() + _ = yym62 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[18] { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subdomain)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subdomain")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym65 := z.EncBinary() + _ = yym65 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subdomain)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[19] { + if x.Affinity == nil { + r.EncodeNil() + } else { + x.Affinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("affinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Affinity == nil { + r.EncodeNil() + } else { + x.Affinity.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[20] { + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SchedulerName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("schedulerName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SchedulerName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[21] { + if x.Tolerations == nil { + r.EncodeNil() + } else { + yym73 := z.EncBinary() + _ = yym73 + if false { + } else { + h.encSliceToleration(([]Toleration)(x.Tolerations), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tolerations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Tolerations == nil { + r.EncodeNil() + } else { + yym74 := z.EncBinary() + _ = yym74 + if false { + } else { + h.encSliceToleration(([]Toleration)(x.Tolerations), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[22] { + if x.HostAliases == nil { + r.EncodeNil() + } else { + yym76 := z.EncBinary() + _ = yym76 + if false { + } else { + h.encSliceHostAlias(([]HostAlias)(x.HostAliases), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[22] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostAliases")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostAliases == nil { + r.EncodeNil() + } else { + yym77 := z.EncBinary() + _ = yym77 + if false { + } else { + h.encSliceHostAlias(([]HostAlias)(x.HostAliases), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "volumes": + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv4 := &x.Volumes + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceVolume((*[]Volume)(yyv4), d) + } + } + case "initContainers": + if r.TryDecodeAsNil() { + x.InitContainers = nil + } else { + yyv6 := &x.InitContainers + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv6), d) + } + } + case "containers": + if r.TryDecodeAsNil() { + x.Containers = nil + } else { + yyv8 := &x.Containers + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv8), d) + } + } + case "restartPolicy": + if r.TryDecodeAsNil() { + x.RestartPolicy = "" + } else { + yyv10 := &x.RestartPolicy + yyv10.CodecDecodeSelf(d) + } + case "terminationGracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.TerminationGracePeriodSeconds != nil { + x.TerminationGracePeriodSeconds = nil + } + } else { + if x.TerminationGracePeriodSeconds == nil { + x.TerminationGracePeriodSeconds = new(int64) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "dnsPolicy": + if r.TryDecodeAsNil() { + x.DNSPolicy = "" + } else { + yyv15 := &x.DNSPolicy + yyv15.CodecDecodeSelf(d) + } + case "nodeSelector": + if r.TryDecodeAsNil() { + x.NodeSelector = nil + } else { + yyv16 := &x.NodeSelector + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + z.F.DecMapStringStringX(yyv16, false, d) + } + } + case "serviceAccountName": + if r.TryDecodeAsNil() { + x.ServiceAccountName = "" + } else { + yyv18 := &x.ServiceAccountName + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + case "serviceAccount": + if r.TryDecodeAsNil() { + x.DeprecatedServiceAccount = "" + } else { + yyv20 := &x.DeprecatedServiceAccount + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*string)(yyv20)) = r.DecodeString() + } + } + case "automountServiceAccountToken": + if r.TryDecodeAsNil() { + if x.AutomountServiceAccountToken != nil { + x.AutomountServiceAccountToken = nil + } + } else { + if x.AutomountServiceAccountToken == nil { + x.AutomountServiceAccountToken = new(bool) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*bool)(x.AutomountServiceAccountToken)) = r.DecodeBool() + } + } + case "nodeName": + if r.TryDecodeAsNil() { + x.NodeName = "" + } else { + yyv24 := &x.NodeName + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + *((*string)(yyv24)) = r.DecodeString() + } + } + case "hostNetwork": + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + yyv26 := &x.HostNetwork + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*bool)(yyv26)) = r.DecodeBool() + } + } + case "hostPID": + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + yyv28 := &x.HostPID + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*bool)(yyv28)) = r.DecodeBool() + } + } + case "hostIPC": + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + yyv30 := &x.HostIPC + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*bool)(yyv30)) = r.DecodeBool() + } + } + case "securityContext": + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(PodSecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + case "imagePullSecrets": + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv33 := &x.ImagePullSecrets + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv33), d) + } + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + yyv35 := &x.Hostname + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*string)(yyv35)) = r.DecodeString() + } + } + case "subdomain": + if r.TryDecodeAsNil() { + x.Subdomain = "" + } else { + yyv37 := &x.Subdomain + yym38 := z.DecBinary() + _ = yym38 + if false { + } else { + *((*string)(yyv37)) = r.DecodeString() + } + } + case "affinity": + if r.TryDecodeAsNil() { + if x.Affinity != nil { + x.Affinity = nil + } + } else { + if x.Affinity == nil { + x.Affinity = new(Affinity) + } + x.Affinity.CodecDecodeSelf(d) + } + case "schedulerName": + if r.TryDecodeAsNil() { + x.SchedulerName = "" + } else { + yyv40 := &x.SchedulerName + yym41 := z.DecBinary() + _ = yym41 + if false { + } else { + *((*string)(yyv40)) = r.DecodeString() + } + } + case "tolerations": + if r.TryDecodeAsNil() { + x.Tolerations = nil + } else { + yyv42 := &x.Tolerations + yym43 := z.DecBinary() + _ = yym43 + if false { + } else { + h.decSliceToleration((*[]Toleration)(yyv42), d) + } + } + case "hostAliases": + if r.TryDecodeAsNil() { + x.HostAliases = nil + } else { + yyv44 := &x.HostAliases + yym45 := z.DecBinary() + _ = yym45 + if false { + } else { + h.decSliceHostAlias((*[]HostAlias)(yyv44), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj46 int + var yyb46 bool + var yyhl46 bool = l >= 0 + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv47 := &x.Volumes + yym48 := z.DecBinary() + _ = yym48 + if false { + } else { + h.decSliceVolume((*[]Volume)(yyv47), d) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InitContainers = nil + } else { + yyv49 := &x.InitContainers + yym50 := z.DecBinary() + _ = yym50 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv49), d) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Containers = nil + } else { + yyv51 := &x.Containers + yym52 := z.DecBinary() + _ = yym52 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv51), d) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RestartPolicy = "" + } else { + yyv53 := &x.RestartPolicy + yyv53.CodecDecodeSelf(d) + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TerminationGracePeriodSeconds != nil { + x.TerminationGracePeriodSeconds = nil + } + } else { + if x.TerminationGracePeriodSeconds == nil { + x.TerminationGracePeriodSeconds = new(int64) + } + yym55 := z.DecBinary() + _ = yym55 + if false { + } else { + *((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym57 := z.DecBinary() + _ = yym57 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DNSPolicy = "" + } else { + yyv58 := &x.DNSPolicy + yyv58.CodecDecodeSelf(d) + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeSelector = nil + } else { + yyv59 := &x.NodeSelector + yym60 := z.DecBinary() + _ = yym60 + if false { + } else { + z.F.DecMapStringStringX(yyv59, false, d) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceAccountName = "" + } else { + yyv61 := &x.ServiceAccountName + yym62 := z.DecBinary() + _ = yym62 + if false { + } else { + *((*string)(yyv61)) = r.DecodeString() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DeprecatedServiceAccount = "" + } else { + yyv63 := &x.DeprecatedServiceAccount + yym64 := z.DecBinary() + _ = yym64 + if false { + } else { + *((*string)(yyv63)) = r.DecodeString() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AutomountServiceAccountToken != nil { + x.AutomountServiceAccountToken = nil + } + } else { + if x.AutomountServiceAccountToken == nil { + x.AutomountServiceAccountToken = new(bool) + } + yym66 := z.DecBinary() + _ = yym66 + if false { + } else { + *((*bool)(x.AutomountServiceAccountToken)) = r.DecodeBool() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeName = "" + } else { + yyv67 := &x.NodeName + yym68 := z.DecBinary() + _ = yym68 + if false { + } else { + *((*string)(yyv67)) = r.DecodeString() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + yyv69 := &x.HostNetwork + yym70 := z.DecBinary() + _ = yym70 + if false { + } else { + *((*bool)(yyv69)) = r.DecodeBool() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + yyv71 := &x.HostPID + yym72 := z.DecBinary() + _ = yym72 + if false { + } else { + *((*bool)(yyv71)) = r.DecodeBool() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + yyv73 := &x.HostIPC + yym74 := z.DecBinary() + _ = yym74 + if false { + } else { + *((*bool)(yyv73)) = r.DecodeBool() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(PodSecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv76 := &x.ImagePullSecrets + yym77 := z.DecBinary() + _ = yym77 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv76), d) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + yyv78 := &x.Hostname + yym79 := z.DecBinary() + _ = yym79 + if false { + } else { + *((*string)(yyv78)) = r.DecodeString() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subdomain = "" + } else { + yyv80 := &x.Subdomain + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *((*string)(yyv80)) = r.DecodeString() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Affinity != nil { + x.Affinity = nil + } + } else { + if x.Affinity == nil { + x.Affinity = new(Affinity) + } + x.Affinity.CodecDecodeSelf(d) + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SchedulerName = "" + } else { + yyv83 := &x.SchedulerName + yym84 := z.DecBinary() + _ = yym84 + if false { + } else { + *((*string)(yyv83)) = r.DecodeString() + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Tolerations = nil + } else { + yyv85 := &x.Tolerations + yym86 := z.DecBinary() + _ = yym86 + if false { + } else { + h.decSliceToleration((*[]Toleration)(yyv85), d) + } + } + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostAliases = nil + } else { + yyv87 := &x.HostAliases + yym88 := z.DecBinary() + _ = yym88 + if false { + } else { + h.decSliceHostAlias((*[]HostAlias)(yyv87), d) + } + } + for { + yyj46++ + if yyhl46 { + yyb46 = yyj46 > l + } else { + yyb46 = r.CheckBreak() + } + if yyb46 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj46-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HostAlias) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.IP != "" + yyq2[1] = len(x.Hostnames) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ip")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Hostnames == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncSliceStringV(x.Hostnames, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostnames")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hostnames == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncSliceStringV(x.Hostnames, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostAlias) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostAlias) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ip": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + yyv4 := &x.IP + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "hostnames": + if r.TryDecodeAsNil() { + x.Hostnames = nil + } else { + yyv6 := &x.Hostnames + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecSliceStringX(yyv6, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostAlias) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + yyv9 := &x.IP + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostnames = nil + } else { + yyv11 := &x.Hostnames + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + z.F.DecSliceStringX(yyv11, false, d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityContext) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.SELinuxOptions != nil + yyq2[1] = x.RunAsUser != nil + yyq2[2] = x.RunAsNonRoot != nil + yyq2[3] = len(x.SupplementalGroups) != 0 + yyq2[4] = x.FSGroup != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy7 := *x.RunAsUser + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy9 := *x.RunAsUser + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy12 := *x.RunAsNonRoot + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(yy12)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsNonRoot")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy14 := *x.RunAsNonRoot + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeBool(bool(yy14)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.SupplementalGroups == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncSliceInt64V(x.SupplementalGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("supplementalGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SupplementalGroups == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + z.F.EncSliceInt64V(x.SupplementalGroups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.FSGroup == nil { + r.EncodeNil() + } else { + yy20 := *x.FSGroup + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeInt(int64(yy20)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FSGroup == nil { + r.EncodeNil() + } else { + yy22 := *x.FSGroup + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(yy22)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityContext) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityContext) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + case "runAsNonRoot": + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + case "supplementalGroups": + if r.TryDecodeAsNil() { + x.SupplementalGroups = nil + } else { + yyv9 := &x.SupplementalGroups + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + z.F.DecSliceInt64X(yyv9, false, d) + } + } + case "fsGroup": + if r.TryDecodeAsNil() { + if x.FSGroup != nil { + x.FSGroup = nil + } + } else { + if x.FSGroup == nil { + x.FSGroup = new(int64) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int64)(x.FSGroup)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityContext) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SupplementalGroups = nil + } else { + yyv19 := &x.SupplementalGroups + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + z.F.DecSliceInt64X(yyv19, false, d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FSGroup != nil { + x.FSGroup = nil + } + } else { + if x.FSGroup == nil { + x.FSGroup = new(int64) + } + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int64)(x.FSGroup)) = int64(r.DecodeInt(64)) + } + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PodQOSClass) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodQOSClass) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [10]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Phase != "" + yyq2[1] = len(x.Conditions) != 0 + yyq2[2] = x.Message != "" + yyq2[3] = x.Reason != "" + yyq2[4] = x.HostIP != "" + yyq2[5] = x.PodIP != "" + yyq2[6] = x.StartTime != nil + yyq2[7] = len(x.InitContainerStatuses) != 0 + yyq2[8] = len(x.ContainerStatuses) != 0 + yyq2[9] = x.QOSClass != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(10) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSlicePodCondition(([]PodCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSlicePodCondition(([]PodCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodIP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym22 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym22 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym23 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym23 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.InitContainerStatuses == nil { + r.EncodeNil() + } else { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.InitContainerStatuses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initContainerStatuses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.InitContainerStatuses == nil { + r.EncodeNil() + } else { + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.InitContainerStatuses), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.ContainerStatuses == nil { + r.EncodeNil() + } else { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.ContainerStatuses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerStatuses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ContainerStatuses == nil { + r.EncodeNil() + } else { + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.ContainerStatuses), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + x.QOSClass.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("qosClass")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.QOSClass.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv4 := &x.Phase + yyv4.CodecDecodeSelf(d) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv5 := &x.Conditions + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSlicePodCondition((*[]PodCondition)(yyv5), d) + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv7 := &x.Message + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv9 := &x.Reason + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + case "hostIP": + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + yyv11 := &x.HostIP + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + case "podIP": + if r.TryDecodeAsNil() { + x.PodIP = "" + } else { + yyv13 := &x.PodIP + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg2_v1.Time) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym16 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "initContainerStatuses": + if r.TryDecodeAsNil() { + x.InitContainerStatuses = nil + } else { + yyv17 := &x.InitContainerStatuses + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv17), d) + } + } + case "containerStatuses": + if r.TryDecodeAsNil() { + x.ContainerStatuses = nil + } else { + yyv19 := &x.ContainerStatuses + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv19), d) + } + } + case "qosClass": + if r.TryDecodeAsNil() { + x.QOSClass = "" + } else { + yyv21 := &x.QOSClass + yyv21.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj22 int + var yyb22 bool + var yyhl22 bool = l >= 0 + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv23 := &x.Phase + yyv23.CodecDecodeSelf(d) + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv24 := &x.Conditions + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + h.decSlicePodCondition((*[]PodCondition)(yyv24), d) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv26 := &x.Message + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*string)(yyv26)) = r.DecodeString() + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv28 := &x.Reason + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*string)(yyv28)) = r.DecodeString() + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + yyv30 := &x.HostIP + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*string)(yyv30)) = r.DecodeString() + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodIP = "" + } else { + yyv32 := &x.PodIP + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + *((*string)(yyv32)) = r.DecodeString() + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg2_v1.Time) + } + yym35 := z.DecBinary() + _ = yym35 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym35 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym35 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InitContainerStatuses = nil + } else { + yyv36 := &x.InitContainerStatuses + yym37 := z.DecBinary() + _ = yym37 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv36), d) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerStatuses = nil + } else { + yyv38 := &x.ContainerStatuses + yym39 := z.DecBinary() + _ = yym39 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv38), d) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.QOSClass = "" + } else { + yyv40 := &x.QOSClass + yyv40.CodecDecodeSelf(d) + } + for { + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj22-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodStatusResult) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Status + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodStatusResult) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodStatusResult) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv10 := &x.Status + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodStatusResult) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv18 := &x.Status + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Pod) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Pod) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Pod) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Pod) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePod(([]Pod)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePod(([]Pod)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePod((*[]Pod)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePod((*[]Pod)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplateSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + yyq2[1] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.ObjectMeta + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else { + z.EncFallback(yy4) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.ObjectMeta + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else { + z.EncFallback(yy6) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy9 := &x.Spec + yy9.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.Spec + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplateSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplateSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv4 := &x.ObjectMeta + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else { + z.DecFallback(yyv4, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv6 := &x.Spec + yyv6.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplateSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplate) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Template + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Template + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplate) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplate) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = PodTemplateSpec{} + } else { + yyv10 := &x.Template + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplate) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = PodTemplateSpec{} + } else { + yyv18 := &x.Template + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplateList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePodTemplate(([]PodTemplate)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePodTemplate(([]PodTemplate)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplateList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplateList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePodTemplate((*[]PodTemplate)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplateList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePodTemplate((*[]PodTemplate)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != nil + yyq2[1] = x.MinReadySeconds != 0 + yyq2[2] = len(x.Selector) != 0 + yyq2[3] = x.Template != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy4 := *x.Replicas + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy6 := *x.Replicas + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Template == nil { + r.EncodeNil() + } else { + x.Template.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Template == nil { + r.EncodeNil() + } else { + x.Template.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv6 := &x.MinReadySeconds + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv8 := &x.Selector + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecMapStringStringX(yyv8, false, d) + } + } + case "template": + if r.TryDecodeAsNil() { + if x.Template != nil { + x.Template = nil + } + } else { + if x.Template == nil { + x.Template = new(PodTemplateSpec) + } + x.Template.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv14 := &x.MinReadySeconds + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv16 := &x.Selector + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + z.F.DecMapStringStringX(yyv16, false, d) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Template != nil { + x.Template = nil + } + } else { + if x.Template == nil { + x.Template = new(PodTemplateSpec) + } + x.Template.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FullyLabeledReplicas != 0 + yyq2[2] = x.ReadyReplicas != 0 + yyq2[3] = x.AvailableReplicas != 0 + yyq2[4] = x.ObservedGeneration != 0 + yyq2[5] = len(x.Conditions) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fullyLabeledReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("availableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceReplicationControllerCondition(([]ReplicationControllerCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + h.encSliceReplicationControllerCondition(([]ReplicationControllerCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "fullyLabeledReplicas": + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + yyv6 := &x.FullyLabeledReplicas + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv8 := &x.ReadyReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "availableReplicas": + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv10 := &x.AvailableReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv12 := &x.ObservedGeneration + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int64)(yyv12)) = int64(r.DecodeInt(64)) + } + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv14 := &x.Conditions + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decSliceReplicationControllerCondition((*[]ReplicationControllerCondition)(yyv14), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv17 := &x.Replicas + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(yyv17)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + yyv19 := &x.FullyLabeledReplicas + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int32)(yyv19)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv21 := &x.ReadyReplicas + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv23 := &x.AvailableReplicas + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv25 := &x.ObservedGeneration + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int64)(yyv25)) = int64(r.DecodeInt(64)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv27 := &x.Conditions + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + h.decSliceReplicationControllerCondition((*[]ReplicationControllerCondition)(yyv27), d) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ReplicationControllerConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ReplicationControllerConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ReplicationControllerCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = x.Reason != "" + yyq2[4] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastTransitionTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastTransitionTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_v1.Time{} + } else { + yyv6 := &x.LastTransitionTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv8 := &x.Reason + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv10 := &x.Message + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv13 := &x.Type + yyv13.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv14 := &x.Status + yyv14.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_v1.Time{} + } else { + yyv15 := &x.LastTransitionTime + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(yyv15) { + } else if yym16 { + z.DecBinaryUnmarshal(yyv15) + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv15) + } else { + z.DecFallback(yyv15, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv17 := &x.Reason + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv19 := &x.Message + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationController) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationController) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationController) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ReplicationControllerSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ReplicationControllerStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationController) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ReplicationControllerSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ReplicationControllerStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceReplicationController(([]ReplicationController)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceReplicationController(([]ReplicationController)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceReplicationController((*[]ReplicationController)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceReplicationController((*[]ReplicationController)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ServiceAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ServiceType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ServiceExternalTrafficPolicyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceExternalTrafficPolicyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ServiceStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.LoadBalancer + yy4.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancer")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.LoadBalancer + yy6.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "loadBalancer": + if r.TryDecodeAsNil() { + x.LoadBalancer = LoadBalancerStatus{} + } else { + yyv4 := &x.LoadBalancer + yyv4.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancer = LoadBalancerStatus{} + } else { + yyv6 := &x.LoadBalancer + yyv6.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LoadBalancerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Ingress) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceLoadBalancerIngress(([]LoadBalancerIngress)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceLoadBalancerIngress(([]LoadBalancerIngress)(x.Ingress), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LoadBalancerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LoadBalancerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv4 := &x.Ingress + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceLoadBalancerIngress((*[]LoadBalancerIngress)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LoadBalancerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv7 := &x.Ingress + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceLoadBalancerIngress((*[]LoadBalancerIngress)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LoadBalancerIngress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.IP != "" + yyq2[1] = x.Hostname != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ip")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LoadBalancerIngress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LoadBalancerIngress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ip": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + yyv4 := &x.IP + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + yyv6 := &x.Hostname + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LoadBalancerIngress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + yyv9 := &x.IP + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + yyv11 := &x.Hostname + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [11]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Ports) != 0 + yyq2[1] = len(x.Selector) != 0 + yyq2[2] = x.ClusterIP != "" + yyq2[3] = x.Type != "" + yyq2[4] = len(x.ExternalIPs) != 0 + yyq2[5] = x.SessionAffinity != "" + yyq2[6] = x.LoadBalancerIP != "" + yyq2[7] = len(x.LoadBalancerSourceRanges) != 0 + yyq2[8] = x.ExternalName != "" + yyq2[9] = x.ExternalTrafficPolicy != "" + yyq2[10] = x.HealthCheckNodePort != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(11) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceServicePort(([]ServicePort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceServicePort(([]ServicePort)(x.Ports), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterIP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.ExternalIPs == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncSliceStringV(x.ExternalIPs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalIPs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ExternalIPs == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncSliceStringV(x.ExternalIPs, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + x.SessionAffinity.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sessionAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.SessionAffinity.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LoadBalancerIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancerIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LoadBalancerIP)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.LoadBalancerSourceRanges == nil { + r.EncodeNil() + } else { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + z.F.EncSliceStringV(x.LoadBalancerSourceRanges, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancerSourceRanges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LoadBalancerSourceRanges == nil { + r.EncodeNil() + } else { + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + z.F.EncSliceStringV(x.LoadBalancerSourceRanges, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + x.ExternalTrafficPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalTrafficPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ExternalTrafficPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeInt(int64(x.HealthCheckNodePort)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("healthCheckNodePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeInt(int64(x.HealthCheckNodePort)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv4 := &x.Ports + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceServicePort((*[]ServicePort)(yyv4), d) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv6 := &x.Selector + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecMapStringStringX(yyv6, false, d) + } + } + case "clusterIP": + if r.TryDecodeAsNil() { + x.ClusterIP = "" + } else { + yyv8 := &x.ClusterIP + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv10 := &x.Type + yyv10.CodecDecodeSelf(d) + } + case "externalIPs": + if r.TryDecodeAsNil() { + x.ExternalIPs = nil + } else { + yyv11 := &x.ExternalIPs + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + z.F.DecSliceStringX(yyv11, false, d) + } + } + case "sessionAffinity": + if r.TryDecodeAsNil() { + x.SessionAffinity = "" + } else { + yyv13 := &x.SessionAffinity + yyv13.CodecDecodeSelf(d) + } + case "loadBalancerIP": + if r.TryDecodeAsNil() { + x.LoadBalancerIP = "" + } else { + yyv14 := &x.LoadBalancerIP + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "loadBalancerSourceRanges": + if r.TryDecodeAsNil() { + x.LoadBalancerSourceRanges = nil + } else { + yyv16 := &x.LoadBalancerSourceRanges + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + z.F.DecSliceStringX(yyv16, false, d) + } + } + case "externalName": + if r.TryDecodeAsNil() { + x.ExternalName = "" + } else { + yyv18 := &x.ExternalName + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + case "externalTrafficPolicy": + if r.TryDecodeAsNil() { + x.ExternalTrafficPolicy = "" + } else { + yyv20 := &x.ExternalTrafficPolicy + yyv20.CodecDecodeSelf(d) + } + case "healthCheckNodePort": + if r.TryDecodeAsNil() { + x.HealthCheckNodePort = 0 + } else { + yyv21 := &x.HealthCheckNodePort + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj23 int + var yyb23 bool + var yyhl23 bool = l >= 0 + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv24 := &x.Ports + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + h.decSliceServicePort((*[]ServicePort)(yyv24), d) + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv26 := &x.Selector + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + z.F.DecMapStringStringX(yyv26, false, d) + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterIP = "" + } else { + yyv28 := &x.ClusterIP + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*string)(yyv28)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv30 := &x.Type + yyv30.CodecDecodeSelf(d) + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalIPs = nil + } else { + yyv31 := &x.ExternalIPs + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + z.F.DecSliceStringX(yyv31, false, d) + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SessionAffinity = "" + } else { + yyv33 := &x.SessionAffinity + yyv33.CodecDecodeSelf(d) + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancerIP = "" + } else { + yyv34 := &x.LoadBalancerIP + yym35 := z.DecBinary() + _ = yym35 + if false { + } else { + *((*string)(yyv34)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancerSourceRanges = nil + } else { + yyv36 := &x.LoadBalancerSourceRanges + yym37 := z.DecBinary() + _ = yym37 + if false { + } else { + z.F.DecSliceStringX(yyv36, false, d) + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalName = "" + } else { + yyv38 := &x.ExternalName + yym39 := z.DecBinary() + _ = yym39 + if false { + } else { + *((*string)(yyv38)) = r.DecodeString() + } + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalTrafficPolicy = "" + } else { + yyv40 := &x.ExternalTrafficPolicy + yyv40.CodecDecodeSelf(d) + } + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HealthCheckNodePort = 0 + } else { + yyv41 := &x.HealthCheckNodePort + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + *((*int32)(yyv41)) = int32(r.DecodeInt(32)) + } + } + for { + yyj23++ + if yyhl23 { + yyb23 = yyj23 > l + } else { + yyb23 = r.CheckBreak() + } + if yyb23 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj23-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServicePort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.Protocol != "" + yyq2[3] = true + yyq2[4] = x.NodePort != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.TargetPort + yym14 := z.EncBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.EncExt(yy13) { + } else if !yym14 && z.IsJSONHandle() { + z.EncJSONMarshal(yy13) + } else { + z.EncFallback(yy13) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy15 := &x.TargetPort + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeInt(int64(x.NodePort)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.NodePort)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServicePort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServicePort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + yyv6 := &x.Protocol + yyv6.CodecDecodeSelf(d) + } + case "port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + yyv7 := &x.Port + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + case "targetPort": + if r.TryDecodeAsNil() { + x.TargetPort = pkg4_intstr.IntOrString{} + } else { + yyv9 := &x.TargetPort + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv9) + } else { + z.DecFallback(yyv9, false) + } + } + case "nodePort": + if r.TryDecodeAsNil() { + x.NodePort = 0 + } else { + yyv11 := &x.NodePort + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(yyv11)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServicePort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv14 := &x.Name + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + yyv16 := &x.Protocol + yyv16.CodecDecodeSelf(d) + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + yyv17 := &x.Port + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(yyv17)) = int32(r.DecodeInt(32)) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPort = pkg4_intstr.IntOrString{} + } else { + yyv19 := &x.TargetPort + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodePort = 0 + } else { + yyv21 := &x.NodePort + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Service) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Service) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Service) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ServiceSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ServiceStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Service) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ServiceSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ServiceStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceService(([]Service)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceService(([]Service)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceService((*[]Service)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceService((*[]Service)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceAccount) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.Secrets) != 0 + yyq2[4] = len(x.ImagePullSecrets) != 0 + yyq2[5] = x.AutomountServiceAccountToken != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Secrets == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceObjectReference(([]ObjectReference)(x.Secrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secrets == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceObjectReference(([]ObjectReference)(x.Secrets), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullSecrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.AutomountServiceAccountToken == nil { + r.EncodeNil() + } else { + yy21 := *x.AutomountServiceAccountToken + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeBool(bool(yy21)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("automountServiceAccountToken")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AutomountServiceAccountToken == nil { + r.EncodeNil() + } else { + yy23 := *x.AutomountServiceAccountToken + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeBool(bool(yy23)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceAccount) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceAccount) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "secrets": + if r.TryDecodeAsNil() { + x.Secrets = nil + } else { + yyv10 := &x.Secrets + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceObjectReference((*[]ObjectReference)(yyv10), d) + } + } + case "imagePullSecrets": + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv12 := &x.ImagePullSecrets + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv12), d) + } + } + case "automountServiceAccountToken": + if r.TryDecodeAsNil() { + if x.AutomountServiceAccountToken != nil { + x.AutomountServiceAccountToken = nil + } + } else { + if x.AutomountServiceAccountToken == nil { + x.AutomountServiceAccountToken = new(bool) + } + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(x.AutomountServiceAccountToken)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceAccount) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv17 := &x.Kind + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv19 := &x.APIVersion + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv21 := &x.ObjectMeta + yym22 := z.DecBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.DecExt(yyv21) { + } else { + z.DecFallback(yyv21, false) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Secrets = nil + } else { + yyv23 := &x.Secrets + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + h.decSliceObjectReference((*[]ObjectReference)(yyv23), d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv25 := &x.ImagePullSecrets + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv25), d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AutomountServiceAccountToken != nil { + x.AutomountServiceAccountToken = nil + } + } else { + if x.AutomountServiceAccountToken == nil { + x.AutomountServiceAccountToken = new(bool) + } + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*bool)(x.AutomountServiceAccountToken)) = r.DecodeBool() + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceAccountList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceServiceAccount(([]ServiceAccount)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceServiceAccount(([]ServiceAccount)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceAccountList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceAccountList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceServiceAccount((*[]ServiceAccount)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceAccountList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceServiceAccount((*[]ServiceAccount)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Endpoints) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subsets == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceEndpointSubset(([]EndpointSubset)(x.Subsets), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subsets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subsets == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceEndpointSubset(([]EndpointSubset)(x.Subsets), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Endpoints) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Endpoints) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "subsets": + if r.TryDecodeAsNil() { + x.Subsets = nil + } else { + yyv10 := &x.Subsets + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceEndpointSubset((*[]EndpointSubset)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Endpoints) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subsets = nil + } else { + yyv19 := &x.Subsets + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceEndpointSubset((*[]EndpointSubset)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointSubset) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Addresses) != 0 + yyq2[1] = len(x.NotReadyAddresses) != 0 + yyq2[2] = len(x.Ports) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Addresses == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.Addresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("addresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.Addresses), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NotReadyAddresses == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.NotReadyAddresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("notReadyAddresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NotReadyAddresses == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.NotReadyAddresses), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + h.encSliceEndpointPort(([]EndpointPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + h.encSliceEndpointPort(([]EndpointPort)(x.Ports), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointSubset) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointSubset) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "addresses": + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv4 := &x.Addresses + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv4), d) + } + } + case "notReadyAddresses": + if r.TryDecodeAsNil() { + x.NotReadyAddresses = nil + } else { + yyv6 := &x.NotReadyAddresses + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv6), d) + } + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv8 := &x.Ports + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + h.decSliceEndpointPort((*[]EndpointPort)(yyv8), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointSubset) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv11 := &x.Addresses + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv11), d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NotReadyAddresses = nil + } else { + yyv13 := &x.NotReadyAddresses + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv13), d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv15 := &x.Ports + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + h.decSliceEndpointPort((*[]EndpointPort)(yyv15), d) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointAddress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Hostname != "" + yyq2[2] = x.NodeName != nil + yyq2[3] = x.TargetRef != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ip")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.NodeName == nil { + r.EncodeNil() + } else { + yy10 := *x.NodeName + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeName == nil { + r.EncodeNil() + } else { + yy12 := *x.NodeName + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.TargetRef == nil { + r.EncodeNil() + } else { + x.TargetRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetRef == nil { + r.EncodeNil() + } else { + x.TargetRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointAddress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointAddress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ip": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + yyv4 := &x.IP + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + yyv6 := &x.Hostname + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "nodeName": + if r.TryDecodeAsNil() { + if x.NodeName != nil { + x.NodeName = nil + } + } else { + if x.NodeName == nil { + x.NodeName = new(string) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(x.NodeName)) = r.DecodeString() + } + } + case "targetRef": + if r.TryDecodeAsNil() { + if x.TargetRef != nil { + x.TargetRef = nil + } + } else { + if x.TargetRef == nil { + x.TargetRef = new(ObjectReference) + } + x.TargetRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointAddress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + yyv12 := &x.IP + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + yyv14 := &x.Hostname + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NodeName != nil { + x.NodeName = nil + } + } else { + if x.NodeName == nil { + x.NodeName = new(string) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(x.NodeName)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetRef != nil { + x.TargetRef = nil + } + } else { + if x.TargetRef == nil { + x.TargetRef = new(ObjectReference) + } + x.TargetRef.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[2] = x.Protocol != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + yyv6 := &x.Port + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + yyv8 := &x.Protocol + yyv8.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + yyv12 := &x.Port + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(yyv12)) = int32(r.DecodeInt(32)) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + yyv14 := &x.Protocol + yyv14.CodecDecodeSelf(d) + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointsList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceEndpoints(([]Endpoints)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceEndpoints(([]Endpoints)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointsList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointsList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceEndpoints((*[]Endpoints)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointsList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceEndpoints((*[]Endpoints)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.PodCIDR != "" + yyq2[1] = x.ExternalID != "" + yyq2[2] = x.ProviderID != "" + yyq2[3] = x.Unschedulable != false + yyq2[4] = len(x.Taints) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodCIDR)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podCIDR")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodCIDR)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProviderID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("providerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProviderID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.Unschedulable)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unschedulable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.Unschedulable)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Taints == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceTaint(([]Taint)(x.Taints), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("taints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Taints == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encSliceTaint(([]Taint)(x.Taints), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podCIDR": + if r.TryDecodeAsNil() { + x.PodCIDR = "" + } else { + yyv4 := &x.PodCIDR + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "externalID": + if r.TryDecodeAsNil() { + x.ExternalID = "" + } else { + yyv6 := &x.ExternalID + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "providerID": + if r.TryDecodeAsNil() { + x.ProviderID = "" + } else { + yyv8 := &x.ProviderID + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "unschedulable": + if r.TryDecodeAsNil() { + x.Unschedulable = false + } else { + yyv10 := &x.Unschedulable + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + case "taints": + if r.TryDecodeAsNil() { + x.Taints = nil + } else { + yyv12 := &x.Taints + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + h.decSliceTaint((*[]Taint)(yyv12), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodCIDR = "" + } else { + yyv15 := &x.PodCIDR + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalID = "" + } else { + yyv17 := &x.ExternalID + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ProviderID = "" + } else { + yyv19 := &x.ProviderID + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Unschedulable = false + } else { + yyv21 := &x.Unschedulable + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*bool)(yyv21)) = r.DecodeBool() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Taints = nil + } else { + yyv23 := &x.Taints + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + h.decSliceTaint((*[]Taint)(yyv23), d) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonEndpoint) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonEndpoint) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonEndpoint) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "Port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + yyv4 := &x.Port + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonEndpoint) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + yyv7 := &x.Port + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeDaemonEndpoints) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.KubeletEndpoint + yy4.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeletEndpoint")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.KubeletEndpoint + yy6.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeDaemonEndpoints) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeDaemonEndpoints) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kubeletEndpoint": + if r.TryDecodeAsNil() { + x.KubeletEndpoint = DaemonEndpoint{} + } else { + yyv4 := &x.KubeletEndpoint + yyv4.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeDaemonEndpoints) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeletEndpoint = DaemonEndpoint{} + } else { + yyv6 := &x.KubeletEndpoint + yyv6.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSystemInfo) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [10]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(10) + } else { + yynn2 = 10 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MachineID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("machineID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MachineID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SystemUUID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("systemUUID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SystemUUID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.BootID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("bootID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.BootID)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KernelVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kernelVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KernelVersion)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OSImage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("osImage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OSImage)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerRuntimeVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerRuntimeVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerRuntimeVersion)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeletVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeletVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeletVersion)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeProxyVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeProxyVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeProxyVersion)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OperatingSystem)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operatingSystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OperatingSystem)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Architecture)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("architecture")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Architecture)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSystemInfo) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSystemInfo) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "machineID": + if r.TryDecodeAsNil() { + x.MachineID = "" + } else { + yyv4 := &x.MachineID + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "systemUUID": + if r.TryDecodeAsNil() { + x.SystemUUID = "" + } else { + yyv6 := &x.SystemUUID + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "bootID": + if r.TryDecodeAsNil() { + x.BootID = "" + } else { + yyv8 := &x.BootID + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "kernelVersion": + if r.TryDecodeAsNil() { + x.KernelVersion = "" + } else { + yyv10 := &x.KernelVersion + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "osImage": + if r.TryDecodeAsNil() { + x.OSImage = "" + } else { + yyv12 := &x.OSImage + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "containerRuntimeVersion": + if r.TryDecodeAsNil() { + x.ContainerRuntimeVersion = "" + } else { + yyv14 := &x.ContainerRuntimeVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "kubeletVersion": + if r.TryDecodeAsNil() { + x.KubeletVersion = "" + } else { + yyv16 := &x.KubeletVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + case "kubeProxyVersion": + if r.TryDecodeAsNil() { + x.KubeProxyVersion = "" + } else { + yyv18 := &x.KubeProxyVersion + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + case "operatingSystem": + if r.TryDecodeAsNil() { + x.OperatingSystem = "" + } else { + yyv20 := &x.OperatingSystem + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*string)(yyv20)) = r.DecodeString() + } + } + case "architecture": + if r.TryDecodeAsNil() { + x.Architecture = "" + } else { + yyv22 := &x.Architecture + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*string)(yyv22)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSystemInfo) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj24 int + var yyb24 bool + var yyhl24 bool = l >= 0 + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MachineID = "" + } else { + yyv25 := &x.MachineID + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SystemUUID = "" + } else { + yyv27 := &x.SystemUUID + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.BootID = "" + } else { + yyv29 := &x.BootID + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KernelVersion = "" + } else { + yyv31 := &x.KernelVersion + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OSImage = "" + } else { + yyv33 := &x.OSImage + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*string)(yyv33)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerRuntimeVersion = "" + } else { + yyv35 := &x.ContainerRuntimeVersion + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*string)(yyv35)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeletVersion = "" + } else { + yyv37 := &x.KubeletVersion + yym38 := z.DecBinary() + _ = yym38 + if false { + } else { + *((*string)(yyv37)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeProxyVersion = "" + } else { + yyv39 := &x.KubeProxyVersion + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + *((*string)(yyv39)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OperatingSystem = "" + } else { + yyv41 := &x.OperatingSystem + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + *((*string)(yyv41)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Architecture = "" + } else { + yyv43 := &x.Architecture + yym44 := z.DecBinary() + _ = yym44 + if false { + } else { + *((*string)(yyv43)) = r.DecodeString() + } + } + for { + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj24-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [10]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Capacity) != 0 + yyq2[1] = len(x.Allocatable) != 0 + yyq2[2] = x.Phase != "" + yyq2[3] = len(x.Conditions) != 0 + yyq2[4] = len(x.Addresses) != 0 + yyq2[5] = true + yyq2[6] = true + yyq2[7] = len(x.Images) != 0 + yyq2[8] = len(x.VolumesInUse) != 0 + yyq2[9] = len(x.VolumesAttached) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(10) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Allocatable == nil { + r.EncodeNil() + } else { + x.Allocatable.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allocatable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Allocatable == nil { + r.EncodeNil() + } else { + x.Allocatable.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + h.encSliceNodeCondition(([]NodeCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + h.encSliceNodeCondition(([]NodeCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Addresses == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceNodeAddress(([]NodeAddress)(x.Addresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("addresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encSliceNodeAddress(([]NodeAddress)(x.Addresses), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yy19 := &x.DaemonEndpoints + yy19.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("daemonEndpoints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy21 := &x.DaemonEndpoints + yy21.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yy24 := &x.NodeInfo + yy24.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeInfo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy26 := &x.NodeInfo + yy26.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.Images == nil { + r.EncodeNil() + } else { + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + h.encSliceContainerImage(([]ContainerImage)(x.Images), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("images")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Images == nil { + r.EncodeNil() + } else { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + h.encSliceContainerImage(([]ContainerImage)(x.Images), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.VolumesInUse == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + h.encSliceUniqueVolumeName(([]UniqueVolumeName)(x.VolumesInUse), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumesInUse")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumesInUse == nil { + r.EncodeNil() + } else { + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + h.encSliceUniqueVolumeName(([]UniqueVolumeName)(x.VolumesInUse), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.VolumesAttached == nil { + r.EncodeNil() + } else { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + h.encSliceAttachedVolume(([]AttachedVolume)(x.VolumesAttached), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumesAttached")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumesAttached == nil { + r.EncodeNil() + } else { + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + h.encSliceAttachedVolume(([]AttachedVolume)(x.VolumesAttached), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv4 := &x.Capacity + yyv4.CodecDecodeSelf(d) + } + case "allocatable": + if r.TryDecodeAsNil() { + x.Allocatable = nil + } else { + yyv5 := &x.Allocatable + yyv5.CodecDecodeSelf(d) + } + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv6 := &x.Phase + yyv6.CodecDecodeSelf(d) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv7 := &x.Conditions + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceNodeCondition((*[]NodeCondition)(yyv7), d) + } + } + case "addresses": + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv9 := &x.Addresses + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceNodeAddress((*[]NodeAddress)(yyv9), d) + } + } + case "daemonEndpoints": + if r.TryDecodeAsNil() { + x.DaemonEndpoints = NodeDaemonEndpoints{} + } else { + yyv11 := &x.DaemonEndpoints + yyv11.CodecDecodeSelf(d) + } + case "nodeInfo": + if r.TryDecodeAsNil() { + x.NodeInfo = NodeSystemInfo{} + } else { + yyv12 := &x.NodeInfo + yyv12.CodecDecodeSelf(d) + } + case "images": + if r.TryDecodeAsNil() { + x.Images = nil + } else { + yyv13 := &x.Images + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + h.decSliceContainerImage((*[]ContainerImage)(yyv13), d) + } + } + case "volumesInUse": + if r.TryDecodeAsNil() { + x.VolumesInUse = nil + } else { + yyv15 := &x.VolumesInUse + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + h.decSliceUniqueVolumeName((*[]UniqueVolumeName)(yyv15), d) + } + } + case "volumesAttached": + if r.TryDecodeAsNil() { + x.VolumesAttached = nil + } else { + yyv17 := &x.VolumesAttached + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + h.decSliceAttachedVolume((*[]AttachedVolume)(yyv17), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj19 int + var yyb19 bool + var yyhl19 bool = l >= 0 + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv20 := &x.Capacity + yyv20.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allocatable = nil + } else { + yyv21 := &x.Allocatable + yyv21.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv22 := &x.Phase + yyv22.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv23 := &x.Conditions + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + h.decSliceNodeCondition((*[]NodeCondition)(yyv23), d) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv25 := &x.Addresses + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + h.decSliceNodeAddress((*[]NodeAddress)(yyv25), d) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DaemonEndpoints = NodeDaemonEndpoints{} + } else { + yyv27 := &x.DaemonEndpoints + yyv27.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeInfo = NodeSystemInfo{} + } else { + yyv28 := &x.NodeInfo + yyv28.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Images = nil + } else { + yyv29 := &x.Images + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + h.decSliceContainerImage((*[]ContainerImage)(yyv29), d) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumesInUse = nil + } else { + yyv31 := &x.VolumesInUse + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + h.decSliceUniqueVolumeName((*[]UniqueVolumeName)(yyv31), d) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumesAttached = nil + } else { + yyv33 := &x.VolumesAttached + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + h.decSliceAttachedVolume((*[]AttachedVolume)(yyv33), d) + } + } + for { + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj19-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x UniqueVolumeName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *UniqueVolumeName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AttachedVolume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Name.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Name.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DevicePath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("devicePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DevicePath)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AttachedVolume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AttachedVolume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yyv4.CodecDecodeSelf(d) + } + case "devicePath": + if r.TryDecodeAsNil() { + x.DevicePath = "" + } else { + yyv5 := &x.DevicePath + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AttachedVolume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DevicePath = "" + } else { + yyv9 := &x.DevicePath + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AvoidPods) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.PreferAvoidPods) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.PreferAvoidPods == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSlicePreferAvoidPodsEntry(([]PreferAvoidPodsEntry)(x.PreferAvoidPods), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferAvoidPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferAvoidPods == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSlicePreferAvoidPodsEntry(([]PreferAvoidPodsEntry)(x.PreferAvoidPods), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AvoidPods) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AvoidPods) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "preferAvoidPods": + if r.TryDecodeAsNil() { + x.PreferAvoidPods = nil + } else { + yyv4 := &x.PreferAvoidPods + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSlicePreferAvoidPodsEntry((*[]PreferAvoidPodsEntry)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AvoidPods) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferAvoidPods = nil + } else { + yyv7 := &x.PreferAvoidPods + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSlicePreferAvoidPodsEntry((*[]PreferAvoidPodsEntry)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PreferAvoidPodsEntry) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = true + yyq2[2] = x.Reason != "" + yyq2[3] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.PodSignature + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSignature")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.PodSignature + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy9 := &x.EvictionTime + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if yym10 { + z.EncBinaryMarshal(yy9) + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("evictionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.EvictionTime + yym12 := z.EncBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.EncExt(yy11) { + } else if yym12 { + z.EncBinaryMarshal(yy11) + } else if !yym12 && z.IsJSONHandle() { + z.EncJSONMarshal(yy11) + } else { + z.EncFallback(yy11) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PreferAvoidPodsEntry) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PreferAvoidPodsEntry) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podSignature": + if r.TryDecodeAsNil() { + x.PodSignature = PodSignature{} + } else { + yyv4 := &x.PodSignature + yyv4.CodecDecodeSelf(d) + } + case "evictionTime": + if r.TryDecodeAsNil() { + x.EvictionTime = pkg2_v1.Time{} + } else { + yyv5 := &x.EvictionTime + yym6 := z.DecBinary() + _ = yym6 + if false { + } else if z.HasExtensions() && z.DecExt(yyv5) { + } else if yym6 { + z.DecBinaryUnmarshal(yyv5) + } else if !yym6 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv5) + } else { + z.DecFallback(yyv5, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv7 := &x.Reason + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv9 := &x.Message + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PreferAvoidPodsEntry) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSignature = PodSignature{} + } else { + yyv12 := &x.PodSignature + yyv12.CodecDecodeSelf(d) + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvictionTime = pkg2_v1.Time{} + } else { + yyv13 := &x.EvictionTime + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if yym14 { + z.DecBinaryUnmarshal(yyv13) + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv15 := &x.Reason + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv17 := &x.Message + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSignature) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.PodController != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.PodController == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodController) { + } else { + z.EncFallback(x.PodController) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podController")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodController == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodController) { + } else { + z.EncFallback(x.PodController) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSignature) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSignature) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podController": + if r.TryDecodeAsNil() { + if x.PodController != nil { + x.PodController = nil + } + } else { + if x.PodController == nil { + x.PodController = new(pkg2_v1.OwnerReference) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodController) { + } else { + z.DecFallback(x.PodController, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSignature) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodController != nil { + x.PodController = nil + } + } else { + if x.PodController == nil { + x.PodController = new(pkg2_v1.OwnerReference) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodController) { + } else { + z.DecFallback(x.PodController, false) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerImage) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.SizeBytes != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Names == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Names, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("names")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Names == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Names, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.SizeBytes)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sizeBytes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.SizeBytes)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerImage) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerImage) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "names": + if r.TryDecodeAsNil() { + x.Names = nil + } else { + yyv4 := &x.Names + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "sizeBytes": + if r.TryDecodeAsNil() { + x.SizeBytes = 0 + } else { + yyv6 := &x.SizeBytes + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int64)(yyv6)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerImage) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Names = nil + } else { + yyv9 := &x.Names + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + z.F.DecSliceStringX(yyv9, false, d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SizeBytes = 0 + } else { + yyv11 := &x.SizeBytes + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int64)(yyv11)) = int64(r.DecodeInt(64)) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x NodeConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = true + yyq2[4] = x.Reason != "" + yyq2[5] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastHeartbeatTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastHeartbeatTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastHeartbeatTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.LastTransitionTime + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.LastTransitionTime + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(yy17) { + } else if yym18 { + z.EncBinaryMarshal(yy17) + } else if !yym18 && z.IsJSONHandle() { + z.EncJSONMarshal(yy17) + } else { + z.EncFallback(yy17) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastHeartbeatTime": + if r.TryDecodeAsNil() { + x.LastHeartbeatTime = pkg2_v1.Time{} + } else { + yyv6 := &x.LastHeartbeatTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_v1.Time{} + } else { + yyv8 := &x.LastTransitionTime + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if yym9 { + z.DecBinaryUnmarshal(yyv8) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv10 := &x.Reason + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv12 := &x.Message + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv15 := &x.Type + yyv15.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv16 := &x.Status + yyv16.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastHeartbeatTime = pkg2_v1.Time{} + } else { + yyv17 := &x.LastHeartbeatTime + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_v1.Time{} + } else { + yyv19 := &x.LastTransitionTime + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if yym20 { + z.DecBinaryUnmarshal(yyv19) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv21 := &x.Reason + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv23 := &x.Message + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodeAddressType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeAddressType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeAddress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Address)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("address")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Address)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeAddress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeAddress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "address": + if r.TryDecodeAsNil() { + x.Address = "" + } else { + yyv5 := &x.Address + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeAddress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv8 := &x.Type + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Address = "" + } else { + yyv9 := &x.Address + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ResourceName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ResourceName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ResourceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encResourceList((ResourceList)(x), e) + } + } +} + +func (x *ResourceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decResourceList((*ResourceList)(x), d) + } +} + +func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Node) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Node) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NodeSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = NodeStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NodeSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = NodeStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceNode(([]Node)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceNode(([]Node)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceNode((*[]Node)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceNode((*[]Node)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FinalizerName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FinalizerName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NamespaceSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Finalizers) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceFinalizerName(([]FinalizerName)(x.Finalizers), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceFinalizerName(([]FinalizerName)(x.Finalizers), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv4 := &x.Finalizers + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceFinalizerName((*[]FinalizerName)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv7 := &x.Finalizers + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceFinalizerName((*[]FinalizerName)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NamespaceStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Phase != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv4 := &x.Phase + yyv4.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + yyv6 := &x.Phase + yyv6.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NamespacePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NamespacePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Namespace) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Namespace) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Namespace) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NamespaceSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = NamespaceStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Namespace) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NamespaceSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = NamespaceStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NamespaceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceNamespace(([]Namespace)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceNamespace(([]Namespace)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceNamespace((*[]Namespace)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceNamespace((*[]Namespace)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Binding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Target + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Target + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Binding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Binding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "target": + if r.TryDecodeAsNil() { + x.Target = ObjectReference{} + } else { + yyv10 := &x.Target + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Binding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = ObjectReference{} + } else { + yyv18 := &x.Target + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Preconditions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.UID != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.UID == nil { + r.EncodeNil() + } else { + yy4 := *x.UID + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UID == nil { + r.EncodeNil() + } else { + yy6 := *x.UID + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Preconditions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Preconditions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "uid": + if r.TryDecodeAsNil() { + if x.UID != nil { + x.UID = nil + } + } else { + if x.UID == nil { + x.UID = new(pkg1_types.UID) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.UID) { + } else { + *((*string)(x.UID)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Preconditions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.UID != nil { + x.UID = nil + } + } else { + if x.UID == nil { + x.UID = new(pkg1_types.UID) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(x.UID) { + } else { + *((*string)(x.UID)) = r.DecodeString() + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeletionPropagation) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeletionPropagation) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *DeleteOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.GracePeriodSeconds != nil + yyq2[3] = x.Preconditions != nil + yyq2[4] = x.OrphanDependents != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.GracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy10 := *x.GracePeriodSeconds + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(yy10)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy12 := *x.GracePeriodSeconds + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(yy12)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Preconditions == nil { + r.EncodeNil() + } else { + x.Preconditions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preconditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Preconditions == nil { + r.EncodeNil() + } else { + x.Preconditions.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.OrphanDependents == nil { + r.EncodeNil() + } else { + yy18 := *x.OrphanDependents + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(yy18)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("orphanDependents")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OrphanDependents == nil { + r.EncodeNil() + } else { + yy20 := *x.OrphanDependents + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeBool(bool(yy20)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.PropagationPolicy == nil { + r.EncodeNil() + } else { + yy23 := *x.PropagationPolicy + yy23.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("PropagationPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PropagationPolicy == nil { + r.EncodeNil() + } else { + yy25 := *x.PropagationPolicy + yy25.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeleteOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeleteOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "gracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.GracePeriodSeconds != nil { + x.GracePeriodSeconds = nil + } + } else { + if x.GracePeriodSeconds == nil { + x.GracePeriodSeconds = new(int64) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int64)(x.GracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "preconditions": + if r.TryDecodeAsNil() { + if x.Preconditions != nil { + x.Preconditions = nil + } + } else { + if x.Preconditions == nil { + x.Preconditions = new(Preconditions) + } + x.Preconditions.CodecDecodeSelf(d) + } + case "orphanDependents": + if r.TryDecodeAsNil() { + if x.OrphanDependents != nil { + x.OrphanDependents = nil + } + } else { + if x.OrphanDependents == nil { + x.OrphanDependents = new(bool) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(x.OrphanDependents)) = r.DecodeBool() + } + } + case "PropagationPolicy": + if r.TryDecodeAsNil() { + if x.PropagationPolicy != nil { + x.PropagationPolicy = nil + } + } else { + if x.PropagationPolicy == nil { + x.PropagationPolicy = new(DeletionPropagation) + } + x.PropagationPolicy.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeleteOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv15 := &x.Kind + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv17 := &x.APIVersion + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GracePeriodSeconds != nil { + x.GracePeriodSeconds = nil + } + } else { + if x.GracePeriodSeconds == nil { + x.GracePeriodSeconds = new(int64) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int64)(x.GracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Preconditions != nil { + x.Preconditions = nil + } + } else { + if x.Preconditions == nil { + x.Preconditions = new(Preconditions) + } + x.Preconditions.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.OrphanDependents != nil { + x.OrphanDependents = nil + } + } else { + if x.OrphanDependents == nil { + x.OrphanDependents = new(bool) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*bool)(x.OrphanDependents)) = r.DecodeBool() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PropagationPolicy != nil { + x.PropagationPolicy = nil + } + } else { + if x.PropagationPolicy == nil { + x.PropagationPolicy = new(DeletionPropagation) + } + x.PropagationPolicy.CodecDecodeSelf(d) + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ListOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.LabelSelector != "" + yyq2[3] = x.FieldSelector != "" + yyq2[4] = x.IncludeUninitialized != false + yyq2[5] = x.Watch != false + yyq2[6] = x.ResourceVersion != "" + yyq2[7] = x.TimeoutSeconds != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LabelSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LabelSelector)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldSelector)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(x.IncludeUninitialized)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("includeUninitialized")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeBool(bool(x.IncludeUninitialized)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("watch")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy25 := *x.TimeoutSeconds + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy27 := *x.TimeoutSeconds + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ListOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ListOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "labelSelector": + if r.TryDecodeAsNil() { + x.LabelSelector = "" + } else { + yyv8 := &x.LabelSelector + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "fieldSelector": + if r.TryDecodeAsNil() { + x.FieldSelector = "" + } else { + yyv10 := &x.FieldSelector + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "includeUninitialized": + if r.TryDecodeAsNil() { + x.IncludeUninitialized = false + } else { + yyv12 := &x.IncludeUninitialized + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*bool)(yyv12)) = r.DecodeBool() + } + } + case "watch": + if r.TryDecodeAsNil() { + x.Watch = false + } else { + yyv14 := &x.Watch + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + yyv16 := &x.ResourceVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + case "timeoutSeconds": + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ListOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj20 int + var yyb20 bool + var yyhl20 bool = l >= 0 + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv21 := &x.Kind + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv23 := &x.APIVersion + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LabelSelector = "" + } else { + yyv25 := &x.LabelSelector + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldSelector = "" + } else { + yyv27 := &x.FieldSelector + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IncludeUninitialized = false + } else { + yyv29 := &x.IncludeUninitialized + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*bool)(yyv29)) = r.DecodeBool() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Watch = false + } else { + yyv31 := &x.Watch + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*bool)(yyv31)) = r.DecodeBool() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + yyv33 := &x.ResourceVersion + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*string)(yyv33)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + for { + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj20-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodLogOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [10]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Container != "" + yyq2[3] = x.Follow != false + yyq2[4] = x.Previous != false + yyq2[5] = x.SinceSeconds != nil + yyq2[6] = x.SinceTime != nil + yyq2[7] = x.Timestamps != false + yyq2[8] = x.TailLines != nil + yyq2[9] = x.LimitBytes != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(10) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.Follow)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("follow")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.Follow)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(x.Previous)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("previous")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeBool(bool(x.Previous)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.SinceSeconds == nil { + r.EncodeNil() + } else { + yy19 := *x.SinceSeconds + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(yy19)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sinceSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SinceSeconds == nil { + r.EncodeNil() + } else { + yy21 := *x.SinceSeconds + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(yy21)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.SinceTime == nil { + r.EncodeNil() + } else { + yym24 := z.EncBinary() + _ = yym24 + if false { + } else if z.HasExtensions() && z.EncExt(x.SinceTime) { + } else if yym24 { + z.EncBinaryMarshal(x.SinceTime) + } else if !yym24 && z.IsJSONHandle() { + z.EncJSONMarshal(x.SinceTime) + } else { + z.EncFallback(x.SinceTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sinceTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SinceTime == nil { + r.EncodeNil() + } else { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else if z.HasExtensions() && z.EncExt(x.SinceTime) { + } else if yym25 { + z.EncBinaryMarshal(x.SinceTime) + } else if !yym25 && z.IsJSONHandle() { + z.EncJSONMarshal(x.SinceTime) + } else { + z.EncFallback(x.SinceTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym27 := z.EncBinary() + _ = yym27 + if false { + } else { + r.EncodeBool(bool(x.Timestamps)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timestamps")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeBool(bool(x.Timestamps)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.TailLines == nil { + r.EncodeNil() + } else { + yy30 := *x.TailLines + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeInt(int64(yy30)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tailLines")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TailLines == nil { + r.EncodeNil() + } else { + yy32 := *x.TailLines + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeInt(int64(yy32)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.LimitBytes == nil { + r.EncodeNil() + } else { + yy35 := *x.LimitBytes + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(yy35)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limitBytes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LimitBytes == nil { + r.EncodeNil() + } else { + yy37 := *x.LimitBytes + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeInt(int64(yy37)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodLogOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodLogOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + yyv8 := &x.Container + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "follow": + if r.TryDecodeAsNil() { + x.Follow = false + } else { + yyv10 := &x.Follow + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + case "previous": + if r.TryDecodeAsNil() { + x.Previous = false + } else { + yyv12 := &x.Previous + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*bool)(yyv12)) = r.DecodeBool() + } + } + case "sinceSeconds": + if r.TryDecodeAsNil() { + if x.SinceSeconds != nil { + x.SinceSeconds = nil + } + } else { + if x.SinceSeconds == nil { + x.SinceSeconds = new(int64) + } + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int64)(x.SinceSeconds)) = int64(r.DecodeInt(64)) + } + } + case "sinceTime": + if r.TryDecodeAsNil() { + if x.SinceTime != nil { + x.SinceTime = nil + } + } else { + if x.SinceTime == nil { + x.SinceTime = new(pkg2_v1.Time) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(x.SinceTime) { + } else if yym17 { + z.DecBinaryUnmarshal(x.SinceTime) + } else if !yym17 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.SinceTime) + } else { + z.DecFallback(x.SinceTime, false) + } + } + case "timestamps": + if r.TryDecodeAsNil() { + x.Timestamps = false + } else { + yyv18 := &x.Timestamps + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*bool)(yyv18)) = r.DecodeBool() + } + } + case "tailLines": + if r.TryDecodeAsNil() { + if x.TailLines != nil { + x.TailLines = nil + } + } else { + if x.TailLines == nil { + x.TailLines = new(int64) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*int64)(x.TailLines)) = int64(r.DecodeInt(64)) + } + } + case "limitBytes": + if r.TryDecodeAsNil() { + if x.LimitBytes != nil { + x.LimitBytes = nil + } + } else { + if x.LimitBytes == nil { + x.LimitBytes = new(int64) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*int64)(x.LimitBytes)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodLogOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj24 int + var yyb24 bool + var yyhl24 bool = l >= 0 + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv25 := &x.Kind + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv27 := &x.APIVersion + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + yyv29 := &x.Container + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Follow = false + } else { + yyv31 := &x.Follow + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*bool)(yyv31)) = r.DecodeBool() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Previous = false + } else { + yyv33 := &x.Previous + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*bool)(yyv33)) = r.DecodeBool() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SinceSeconds != nil { + x.SinceSeconds = nil + } + } else { + if x.SinceSeconds == nil { + x.SinceSeconds = new(int64) + } + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*int64)(x.SinceSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SinceTime != nil { + x.SinceTime = nil + } + } else { + if x.SinceTime == nil { + x.SinceTime = new(pkg2_v1.Time) + } + yym38 := z.DecBinary() + _ = yym38 + if false { + } else if z.HasExtensions() && z.DecExt(x.SinceTime) { + } else if yym38 { + z.DecBinaryUnmarshal(x.SinceTime) + } else if !yym38 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.SinceTime) + } else { + z.DecFallback(x.SinceTime, false) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Timestamps = false + } else { + yyv39 := &x.Timestamps + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + *((*bool)(yyv39)) = r.DecodeBool() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TailLines != nil { + x.TailLines = nil + } + } else { + if x.TailLines == nil { + x.TailLines = new(int64) + } + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + *((*int64)(x.TailLines)) = int64(r.DecodeInt(64)) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LimitBytes != nil { + x.LimitBytes = nil + } + } else { + if x.LimitBytes == nil { + x.LimitBytes = new(int64) + } + yym44 := z.DecBinary() + _ = yym44 + if false { + } else { + *((*int64)(x.LimitBytes)) = int64(r.DecodeInt(64)) + } + } + for { + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj24-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAttachOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Stdin != false + yyq2[3] = x.Stdout != false + yyq2[4] = x.Stderr != false + yyq2[5] = x.TTY != false + yyq2[6] = x.Container != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdout")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stderr")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAttachOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAttachOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + yyv8 := &x.Stdin + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + case "stdout": + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + yyv10 := &x.Stdout + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + case "stderr": + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + yyv12 := &x.Stderr + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*bool)(yyv12)) = r.DecodeBool() + } + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + yyv14 := &x.TTY + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + yyv16 := &x.Container + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAttachOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv19 := &x.Kind + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv21 := &x.APIVersion + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + yyv23 := &x.Stdin + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*bool)(yyv23)) = r.DecodeBool() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + yyv25 := &x.Stdout + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*bool)(yyv25)) = r.DecodeBool() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + yyv27 := &x.Stderr + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*bool)(yyv27)) = r.DecodeBool() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + yyv29 := &x.TTY + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*bool)(yyv29)) = r.DecodeBool() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + yyv31 := &x.Container + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodExecOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Stdin != false + yyq2[3] = x.Stdout != false + yyq2[4] = x.Stderr != false + yyq2[5] = x.TTY != false + yyq2[6] = x.Container != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdout")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stderr")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodExecOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodExecOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + yyv8 := &x.Stdin + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*bool)(yyv8)) = r.DecodeBool() + } + } + case "stdout": + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + yyv10 := &x.Stdout + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + case "stderr": + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + yyv12 := &x.Stderr + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*bool)(yyv12)) = r.DecodeBool() + } + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + yyv14 := &x.TTY + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + yyv16 := &x.Container + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv18 := &x.Command + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + z.F.DecSliceStringX(yyv18, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodExecOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj20 int + var yyb20 bool + var yyhl20 bool = l >= 0 + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv21 := &x.Kind + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv23 := &x.APIVersion + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + yyv25 := &x.Stdin + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*bool)(yyv25)) = r.DecodeBool() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + yyv27 := &x.Stdout + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*bool)(yyv27)) = r.DecodeBool() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + yyv29 := &x.Stderr + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*bool)(yyv29)) = r.DecodeBool() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + yyv31 := &x.TTY + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*bool)(yyv31)) = r.DecodeBool() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + yyv33 := &x.Container + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*string)(yyv33)) = r.DecodeString() + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv35 := &x.Command + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + z.F.DecSliceStringX(yyv35, false, d) + } + } + for { + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj20-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodPortForwardOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = len(x.Ports) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceInt32V(x.Ports, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceInt32V(x.Ports, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodPortForwardOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodPortForwardOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv8 := &x.Ports + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceInt32X(yyv8, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodPortForwardOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv11 := &x.Kind + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv13 := &x.APIVersion + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv15 := &x.Ports + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + z.F.DecSliceInt32X(yyv15, false, d) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Path != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv8 := &x.Path + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv11 := &x.Kind + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv13 := &x.APIVersion + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv15 := &x.Path + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Path != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv8 := &x.Path + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv11 := &x.Kind + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv13 := &x.APIVersion + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv15 := &x.Path + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Path != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv8 := &x.Path + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv11 := &x.Kind + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv13 := &x.APIVersion + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv15 := &x.Path + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.Namespace != "" + yyq2[2] = x.Name != "" + yyq2[3] = x.UID != "" + yyq2[4] = x.APIVersion != "" + yyq2[5] = x.ResourceVersion != "" + yyq2[6] = x.FieldPath != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv6 := &x.Namespace + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv10 := &x.UID + yym11 := z.DecBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.DecExt(yyv10) { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv12 := &x.APIVersion + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + yyv14 := &x.ResourceVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "fieldPath": + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + yyv16 := &x.FieldPath + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv19 := &x.Kind + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv21 := &x.Namespace + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv23 := &x.Name + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv25 := &x.UID + yym26 := z.DecBinary() + _ = yym26 + if false { + } else if z.HasExtensions() && z.DecExt(yyv25) { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv27 := &x.APIVersion + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + yyv29 := &x.ResourceVersion + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + yyv31 := &x.FieldPath + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv7 := &x.Name + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SerializedReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.Reference + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reference")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.Reference + yy12.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SerializedReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SerializedReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "reference": + if r.TryDecodeAsNil() { + x.Reference = ObjectReference{} + } else { + yyv8 := &x.Reference + yyv8.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SerializedReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv10 := &x.Kind + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv12 := &x.APIVersion + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reference = ObjectReference{} + } else { + yyv14 := &x.Reference + yyv14.CodecDecodeSelf(d) + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EventSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Component != "" + yyq2[1] = x.Host != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Component)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("component")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Component)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EventSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EventSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "component": + if r.TryDecodeAsNil() { + x.Component = "" + } else { + yyv4 := &x.Component + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv6 := &x.Host + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EventSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Component = "" + } else { + yyv9 := &x.Component + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv11 := &x.Host + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Event) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [11]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[4] = x.Reason != "" + yyq2[5] = x.Message != "" + yyq2[6] = true + yyq2[7] = true + yyq2[8] = true + yyq2[9] = x.Count != 0 + yyq2[10] = x.Type != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(11) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.InvolvedObject + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("involvedObject")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.InvolvedObject + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yy26 := &x.Source + yy26.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("source")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy28 := &x.Source + yy28.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yy31 := &x.FirstTimestamp + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(yy31) { + } else if yym32 { + z.EncBinaryMarshal(yy31) + } else if !yym32 && z.IsJSONHandle() { + z.EncJSONMarshal(yy31) + } else { + z.EncFallback(yy31) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("firstTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy33 := &x.FirstTimestamp + yym34 := z.EncBinary() + _ = yym34 + if false { + } else if z.HasExtensions() && z.EncExt(yy33) { + } else if yym34 { + z.EncBinaryMarshal(yy33) + } else if !yym34 && z.IsJSONHandle() { + z.EncJSONMarshal(yy33) + } else { + z.EncFallback(yy33) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yy36 := &x.LastTimestamp + yym37 := z.EncBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.EncExt(yy36) { + } else if yym37 { + z.EncBinaryMarshal(yy36) + } else if !yym37 && z.IsJSONHandle() { + z.EncJSONMarshal(yy36) + } else { + z.EncFallback(yy36) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy38 := &x.LastTimestamp + yym39 := z.EncBinary() + _ = yym39 + if false { + } else if z.HasExtensions() && z.EncExt(yy38) { + } else if yym39 { + z.EncBinaryMarshal(yy38) + } else if !yym39 && z.IsJSONHandle() { + z.EncJSONMarshal(yy38) + } else { + z.EncFallback(yy38) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeInt(int64(x.Count)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("count")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + r.EncodeInt(int64(x.Count)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Event) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Event) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "involvedObject": + if r.TryDecodeAsNil() { + x.InvolvedObject = ObjectReference{} + } else { + yyv10 := &x.InvolvedObject + yyv10.CodecDecodeSelf(d) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv11 := &x.Reason + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv13 := &x.Message + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + case "source": + if r.TryDecodeAsNil() { + x.Source = EventSource{} + } else { + yyv15 := &x.Source + yyv15.CodecDecodeSelf(d) + } + case "firstTimestamp": + if r.TryDecodeAsNil() { + x.FirstTimestamp = pkg2_v1.Time{} + } else { + yyv16 := &x.FirstTimestamp + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else if yym17 { + z.DecBinaryUnmarshal(yyv16) + } else if !yym17 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv16) + } else { + z.DecFallback(yyv16, false) + } + } + case "lastTimestamp": + if r.TryDecodeAsNil() { + x.LastTimestamp = pkg2_v1.Time{} + } else { + yyv18 := &x.LastTimestamp + yym19 := z.DecBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.DecExt(yyv18) { + } else if yym19 { + z.DecBinaryUnmarshal(yyv18) + } else if !yym19 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv18) + } else { + z.DecFallback(yyv18, false) + } + } + case "count": + if r.TryDecodeAsNil() { + x.Count = 0 + } else { + yyv20 := &x.Count + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*int32)(yyv20)) = int32(r.DecodeInt(32)) + } + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv22 := &x.Type + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*string)(yyv22)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Event) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj24 int + var yyb24 bool + var yyhl24 bool = l >= 0 + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv25 := &x.Kind + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv27 := &x.APIVersion + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yym30 := z.DecBinary() + _ = yym30 + if false { + } else if z.HasExtensions() && z.DecExt(yyv29) { + } else { + z.DecFallback(yyv29, false) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InvolvedObject = ObjectReference{} + } else { + yyv31 := &x.InvolvedObject + yyv31.CodecDecodeSelf(d) + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv32 := &x.Reason + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + *((*string)(yyv32)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv34 := &x.Message + yym35 := z.DecBinary() + _ = yym35 + if false { + } else { + *((*string)(yyv34)) = r.DecodeString() + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Source = EventSource{} + } else { + yyv36 := &x.Source + yyv36.CodecDecodeSelf(d) + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FirstTimestamp = pkg2_v1.Time{} + } else { + yyv37 := &x.FirstTimestamp + yym38 := z.DecBinary() + _ = yym38 + if false { + } else if z.HasExtensions() && z.DecExt(yyv37) { + } else if yym38 { + z.DecBinaryUnmarshal(yyv37) + } else if !yym38 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv37) + } else { + z.DecFallback(yyv37, false) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTimestamp = pkg2_v1.Time{} + } else { + yyv39 := &x.LastTimestamp + yym40 := z.DecBinary() + _ = yym40 + if false { + } else if z.HasExtensions() && z.DecExt(yyv39) { + } else if yym40 { + z.DecBinaryUnmarshal(yyv39) + } else if !yym40 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv39) + } else { + z.DecFallback(yyv39, false) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Count = 0 + } else { + yyv41 := &x.Count + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + *((*int32)(yyv41)) = int32(r.DecodeInt(32)) + } + } + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv43 := &x.Type + yym44 := z.DecBinary() + _ = yym44 + if false { + } else { + *((*string)(yyv43)) = r.DecodeString() + } + } + for { + yyj24++ + if yyhl24 { + yyb24 = yyj24 > l + } else { + yyb24 = r.CheckBreak() + } + if yyb24 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj24-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EventList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceEvent(([]Event)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceEvent(([]Event)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EventList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EventList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceEvent((*[]Event)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EventList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceEvent((*[]Event)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *List) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceruntime_RawExtension(([]pkg5_runtime.RawExtension)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceruntime_RawExtension(([]pkg5_runtime.RawExtension)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *List) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *List) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceruntime_RawExtension((*[]pkg5_runtime.RawExtension)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *List) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceruntime_RawExtension((*[]pkg5_runtime.RawExtension)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x LimitType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *LimitType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *LimitRangeItem) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Type != "" + yyq2[1] = len(x.Max) != 0 + yyq2[2] = len(x.Min) != 0 + yyq2[3] = len(x.Default) != 0 + yyq2[4] = len(x.DefaultRequest) != 0 + yyq2[5] = len(x.MaxLimitRequestRatio) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Max == nil { + r.EncodeNil() + } else { + x.Max.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Max == nil { + r.EncodeNil() + } else { + x.Max.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Min == nil { + r.EncodeNil() + } else { + x.Min.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Min == nil { + r.EncodeNil() + } else { + x.Min.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Default == nil { + r.EncodeNil() + } else { + x.Default.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("default")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Default == nil { + r.EncodeNil() + } else { + x.Default.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.DefaultRequest == nil { + r.EncodeNil() + } else { + x.DefaultRequest.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultRequest")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultRequest == nil { + r.EncodeNil() + } else { + x.DefaultRequest.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.MaxLimitRequestRatio == nil { + r.EncodeNil() + } else { + x.MaxLimitRequestRatio.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxLimitRequestRatio")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxLimitRequestRatio == nil { + r.EncodeNil() + } else { + x.MaxLimitRequestRatio.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeItem) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeItem) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = nil + } else { + yyv5 := &x.Max + yyv5.CodecDecodeSelf(d) + } + case "min": + if r.TryDecodeAsNil() { + x.Min = nil + } else { + yyv6 := &x.Min + yyv6.CodecDecodeSelf(d) + } + case "default": + if r.TryDecodeAsNil() { + x.Default = nil + } else { + yyv7 := &x.Default + yyv7.CodecDecodeSelf(d) + } + case "defaultRequest": + if r.TryDecodeAsNil() { + x.DefaultRequest = nil + } else { + yyv8 := &x.DefaultRequest + yyv8.CodecDecodeSelf(d) + } + case "maxLimitRequestRatio": + if r.TryDecodeAsNil() { + x.MaxLimitRequestRatio = nil + } else { + yyv9 := &x.MaxLimitRequestRatio + yyv9.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeItem) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv11 := &x.Type + yyv11.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = nil + } else { + yyv12 := &x.Max + yyv12.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = nil + } else { + yyv13 := &x.Min + yyv13.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Default = nil + } else { + yyv14 := &x.Default + yyv14.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DefaultRequest = nil + } else { + yyv15 := &x.DefaultRequest + yyv15.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxLimitRequestRatio = nil + } else { + yyv16 := &x.MaxLimitRequestRatio + yyv16.CodecDecodeSelf(d) + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRangeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Limits == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceLimitRangeItem(([]LimitRangeItem)(x.Limits), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limits")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Limits == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceLimitRangeItem(([]LimitRangeItem)(x.Limits), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "limits": + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv4 := &x.Limits + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceLimitRangeItem((*[]LimitRangeItem)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv7 := &x.Limits + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceLimitRangeItem((*[]LimitRangeItem)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = LimitRangeSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = LimitRangeSpec{} + } else { + yyv18 := &x.Spec + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRangeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceLimitRange(([]LimitRange)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceLimitRange(([]LimitRange)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceLimitRange((*[]LimitRange)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceLimitRange((*[]LimitRange)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ResourceQuotaScope) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ResourceQuotaScope) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ResourceQuotaSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Hard) != 0 + yyq2[1] = len(x.Scopes) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hard")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Scopes == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceResourceQuotaScope(([]ResourceQuotaScope)(x.Scopes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scopes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Scopes == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceResourceQuotaScope(([]ResourceQuotaScope)(x.Scopes), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "hard": + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4 := &x.Hard + yyv4.CodecDecodeSelf(d) + } + case "scopes": + if r.TryDecodeAsNil() { + x.Scopes = nil + } else { + yyv5 := &x.Scopes + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSliceResourceQuotaScope((*[]ResourceQuotaScope)(yyv5), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv8 := &x.Hard + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Scopes = nil + } else { + yyv9 := &x.Scopes + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceResourceQuotaScope((*[]ResourceQuotaScope)(yyv9), d) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuotaStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Hard) != 0 + yyq2[1] = len(x.Used) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hard")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Used == nil { + r.EncodeNil() + } else { + x.Used.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("used")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Used == nil { + r.EncodeNil() + } else { + x.Used.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "hard": + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4 := &x.Hard + yyv4.CodecDecodeSelf(d) + } + case "used": + if r.TryDecodeAsNil() { + x.Used = nil + } else { + yyv5 := &x.Used + yyv5.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv7 := &x.Hard + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Used = nil + } else { + yyv8 := &x.Used + yyv8.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuota) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuota) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuota) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ResourceQuotaSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ResourceQuotaStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuota) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ResourceQuotaSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ResourceQuotaStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuotaList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceResourceQuota(([]ResourceQuota)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceResourceQuota(([]ResourceQuota)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceResourceQuota((*[]ResourceQuota)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceResourceQuota((*[]ResourceQuota)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Secret) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.Data) != 0 + yyq2[4] = len(x.StringData) != 0 + yyq2[5] = x.Type != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encMapstringSliceuint8((map[string][]uint8)(x.Data), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encMapstringSliceuint8((map[string][]uint8)(x.Data), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.StringData == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + z.F.EncMapStringStringV(x.StringData, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stringData")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StringData == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + z.F.EncMapStringStringV(x.StringData, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Secret) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Secret) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv10 := &x.Data + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decMapstringSliceuint8((*map[string][]uint8)(yyv10), d) + } + } + case "stringData": + if r.TryDecodeAsNil() { + x.StringData = nil + } else { + yyv12 := &x.StringData + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + z.F.DecMapStringStringX(yyv12, false, d) + } + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv14 := &x.Type + yyv14.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Secret) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj15 int + var yyb15 bool + var yyhl15 bool = l >= 0 + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv16 := &x.Kind + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv18 := &x.APIVersion + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv20 := &x.ObjectMeta + yym21 := z.DecBinary() + _ = yym21 + if false { + } else if z.HasExtensions() && z.DecExt(yyv20) { + } else { + z.DecFallback(yyv20, false) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv22 := &x.Data + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + h.decMapstringSliceuint8((*map[string][]uint8)(yyv22), d) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StringData = nil + } else { + yyv24 := &x.StringData + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + z.F.DecMapStringStringX(yyv24, false, d) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv26 := &x.Type + yyv26.CodecDecodeSelf(d) + } + for { + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj15-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SecretType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SecretType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SecretList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceSecret(([]Secret)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceSecret(([]Secret)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceSecret((*[]Secret)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceSecret((*[]Secret)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMap) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.Data) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + z.F.EncMapStringStringV(x.Data, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncMapStringStringV(x.Data, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMap) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMap) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv10 := &x.Data + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecMapStringStringX(yyv10, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMap) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv19 := &x.Data + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + z.F.DecMapStringStringX(yyv19, false, d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceConfigMap(([]ConfigMap)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceConfigMap(([]ConfigMap)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceConfigMap((*[]ConfigMap)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceConfigMap((*[]ConfigMap)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ComponentConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ComponentConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ComponentCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.Message != "" + yyq2[3] = x.Error != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("error")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv6 := &x.Message + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "error": + if r.TryDecodeAsNil() { + x.Error = "" + } else { + yyv8 := &x.Error + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv11 := &x.Type + yyv11.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv12 := &x.Status + yyv12.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv13 := &x.Message + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Error = "" + } else { + yyv15 := &x.Error + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ComponentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.Conditions) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceComponentCondition(([]ComponentCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceComponentCondition(([]ComponentCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv10 := &x.Conditions + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceComponentCondition((*[]ComponentCondition)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv19 := &x.Conditions + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceComponentCondition((*[]ComponentCondition)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ComponentStatusList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceComponentStatus(([]ComponentStatus)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceComponentStatus(([]ComponentStatus)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentStatusList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentStatusList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceComponentStatus((*[]ComponentStatus)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentStatusList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceComponentStatus((*[]ComponentStatus)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Items) != 0 + yyq2[1] = x.DefaultMode != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Items == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy7 := *x.DefaultMode + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy9 := *x.DefaultMode + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4 := &x.Items + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv4), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv9 := &x.Items + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIVolumeFile) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FieldRef != nil + yyq2[2] = x.ResourceFieldRef != nil + yyq2[3] = x.Mode != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceFieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Mode == nil { + r.EncodeNil() + } else { + yy13 := *x.Mode + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(yy13)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Mode == nil { + r.EncodeNil() + } else { + yy15 := *x.Mode + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(yy15)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIVolumeFile) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIVolumeFile) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "fieldRef": + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + case "resourceFieldRef": + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + case "mode": + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIVolumeFile) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv11 := &x.Path + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIProjection) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Items) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Items == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIProjection) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIProjection) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4 := &x.Items + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIProjection) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv7 := &x.Items + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecurityContext) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Capabilities != nil + yyq2[1] = x.Privileged != nil + yyq2[2] = x.SELinuxOptions != nil + yyq2[3] = x.RunAsUser != nil + yyq2[4] = x.RunAsNonRoot != nil + yyq2[5] = x.ReadOnlyRootFilesystem != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Capabilities == nil { + r.EncodeNil() + } else { + x.Capabilities.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capabilities == nil { + r.EncodeNil() + } else { + x.Capabilities.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Privileged == nil { + r.EncodeNil() + } else { + yy7 := *x.Privileged + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeBool(bool(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("privileged")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Privileged == nil { + r.EncodeNil() + } else { + yy9 := *x.Privileged + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeBool(bool(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy15 := *x.RunAsUser + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(yy15)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy17 := *x.RunAsUser + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeInt(int64(yy17)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy20 := *x.RunAsNonRoot + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeBool(bool(yy20)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsNonRoot")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy22 := *x.RunAsNonRoot + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeBool(bool(yy22)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.ReadOnlyRootFilesystem == nil { + r.EncodeNil() + } else { + yy25 := *x.ReadOnlyRootFilesystem + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeBool(bool(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnlyRootFilesystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadOnlyRootFilesystem == nil { + r.EncodeNil() + } else { + yy27 := *x.ReadOnlyRootFilesystem + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeBool(bool(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecurityContext) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecurityContext) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "capabilities": + if r.TryDecodeAsNil() { + if x.Capabilities != nil { + x.Capabilities = nil + } + } else { + if x.Capabilities == nil { + x.Capabilities = new(Capabilities) + } + x.Capabilities.CodecDecodeSelf(d) + } + case "privileged": + if r.TryDecodeAsNil() { + if x.Privileged != nil { + x.Privileged = nil + } + } else { + if x.Privileged == nil { + x.Privileged = new(bool) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*bool)(x.Privileged)) = r.DecodeBool() + } + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + case "runAsNonRoot": + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + case "readOnlyRootFilesystem": + if r.TryDecodeAsNil() { + if x.ReadOnlyRootFilesystem != nil { + x.ReadOnlyRootFilesystem = nil + } + } else { + if x.ReadOnlyRootFilesystem == nil { + x.ReadOnlyRootFilesystem = new(bool) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*bool)(x.ReadOnlyRootFilesystem)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecurityContext) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Capabilities != nil { + x.Capabilities = nil + } + } else { + if x.Capabilities == nil { + x.Capabilities = new(Capabilities) + } + x.Capabilities.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Privileged != nil { + x.Privileged = nil + } + } else { + if x.Privileged == nil { + x.Privileged = new(bool) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*bool)(x.Privileged)) = r.DecodeBool() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadOnlyRootFilesystem != nil { + x.ReadOnlyRootFilesystem = nil + } + } else { + if x.ReadOnlyRootFilesystem == nil { + x.ReadOnlyRootFilesystem = new(bool) + } + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*bool)(x.ReadOnlyRootFilesystem)) = r.DecodeBool() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SELinuxOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.User != "" + yyq2[1] = x.Role != "" + yyq2[2] = x.Type != "" + yyq2[3] = x.Level != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Role)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("role")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Role)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Level)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("level")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Level)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SELinuxOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SELinuxOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv4 := &x.User + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "role": + if r.TryDecodeAsNil() { + x.Role = "" + } else { + yyv6 := &x.Role + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv8 := &x.Type + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "level": + if r.TryDecodeAsNil() { + x.Level = "" + } else { + yyv10 := &x.Level + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SELinuxOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv13 := &x.User + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Role = "" + } else { + yyv15 := &x.Role + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv17 := &x.Type + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Level = "" + } else { + yyv19 := &x.Level + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RangeAllocation) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Range)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("range")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Range)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RangeAllocation) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RangeAllocation) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "range": + if r.TryDecodeAsNil() { + x.Range = "" + } else { + yyv10 := &x.Range + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv12 := &x.Data + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *yyv12 = r.DecodeBytes(*(*[]byte)(yyv12), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RangeAllocation) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv15 := &x.Kind + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv17 := &x.APIVersion + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv19 := &x.ObjectMeta + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Range = "" + } else { + yyv21 := &x.Range + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv23 := &x.Data + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *yyv23 = r.DecodeBytes(*(*[]byte)(yyv23), false, false) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Sysctl) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Sysctl) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Sysctl) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "Value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv6 := &x.Value + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Sysctl) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv9 := &x.Name + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + yyv11 := &x.Value + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeResources) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeResources) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeResources) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "Capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv4 := &x.Capacity + yyv4.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeResources) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv6 := &x.Capacity + yyv6.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicev1_OwnerReference(v []pkg2_v1.OwnerReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yym3 := z.EncBinary() + _ = yym3 + if false { + } else if z.HasExtensions() && z.EncExt(yy2) { + } else { + z.EncFallback(yy2) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_OwnerReference(v *[]pkg2_v1.OwnerReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []pkg2_v1.OwnerReference{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 80) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]pkg2_v1.OwnerReference, yyrl1) + } + } else { + yyv1 = make([]pkg2_v1.OwnerReference, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg2_v1.OwnerReference{} + } else { + yyv2 := &yyv1[yyj1] + yym3 := z.DecBinary() + _ = yym3 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2) { + } else { + z.DecFallback(yyv2, false) + } + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, pkg2_v1.OwnerReference{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg2_v1.OwnerReference{} + } else { + yyv4 := &yyv1[yyj1] + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else { + z.DecFallback(yyv4, false) + } + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, pkg2_v1.OwnerReference{}) // var yyz1 pkg2_v1.OwnerReference + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg2_v1.OwnerReference{} + } else { + yyv6 := &yyv1[yyj1] + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else { + z.DecFallback(yyv6, false) + } + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []pkg2_v1.OwnerReference{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePersistentVolumeAccessMode(v []PersistentVolumeAccessMode, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolumeAccessMode(v *[]PersistentVolumeAccessMode, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PersistentVolumeAccessMode{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PersistentVolumeAccessMode, yyrl1) + } + } else { + yyv1 = make([]PersistentVolumeAccessMode, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 PersistentVolumeAccessMode + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PersistentVolumeAccessMode{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePersistentVolume(v []PersistentVolume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolume(v *[]PersistentVolume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PersistentVolume{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 552) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PersistentVolume, yyrl1) + } + } else { + yyv1 = make([]PersistentVolume, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PersistentVolume{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PersistentVolume{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PersistentVolume{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PersistentVolume{}) // var yyz1 PersistentVolume + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PersistentVolume{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PersistentVolume{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePersistentVolumeClaim(v []PersistentVolumeClaim, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolumeClaim(v *[]PersistentVolumeClaim, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PersistentVolumeClaim{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 384) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PersistentVolumeClaim, yyrl1) + } + } else { + yyv1 = make([]PersistentVolumeClaim, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PersistentVolumeClaim{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PersistentVolumeClaim{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PersistentVolumeClaim{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PersistentVolumeClaim{}) // var yyz1 PersistentVolumeClaim + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PersistentVolumeClaim{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PersistentVolumeClaim{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceKeyToPath(v []KeyToPath, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceKeyToPath(v *[]KeyToPath, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []KeyToPath{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]KeyToPath, yyrl1) + } + } else { + yyv1 = make([]KeyToPath, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = KeyToPath{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, KeyToPath{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = KeyToPath{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, KeyToPath{}) // var yyz1 KeyToPath + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = KeyToPath{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []KeyToPath{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceVolumeProjection(v []VolumeProjection, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolumeProjection(v *[]VolumeProjection, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []VolumeProjection{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 24) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]VolumeProjection, yyrl1) + } + } else { + yyv1 = make([]VolumeProjection, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = VolumeProjection{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, VolumeProjection{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = VolumeProjection{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, VolumeProjection{}) // var yyz1 VolumeProjection + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = VolumeProjection{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []VolumeProjection{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceHTTPHeader(v []HTTPHeader, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHTTPHeader(v *[]HTTPHeader, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HTTPHeader{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HTTPHeader, yyrl1) + } + } else { + yyv1 = make([]HTTPHeader, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HTTPHeader{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HTTPHeader{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HTTPHeader{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HTTPHeader{}) // var yyz1 HTTPHeader + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HTTPHeader{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HTTPHeader{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceCapability(v []Capability, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCapability(v *[]Capability, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Capability{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Capability, yyrl1) + } + } else { + yyv1 = make([]Capability, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 Capability + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Capability{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceContainerPort(v []ContainerPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerPort(v *[]ContainerPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ContainerPort{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 56) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ContainerPort, yyrl1) + } + } else { + yyv1 = make([]ContainerPort, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerPort{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ContainerPort{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerPort{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ContainerPort{}) // var yyz1 ContainerPort + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerPort{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ContainerPort{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEnvFromSource(v []EnvFromSource, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEnvFromSource(v *[]EnvFromSource, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []EnvFromSource{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]EnvFromSource, yyrl1) + } + } else { + yyv1 = make([]EnvFromSource, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EnvFromSource{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, EnvFromSource{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EnvFromSource{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, EnvFromSource{}) // var yyz1 EnvFromSource + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = EnvFromSource{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []EnvFromSource{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEnvVar(v []EnvVar, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEnvVar(v *[]EnvVar, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []EnvVar{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]EnvVar, yyrl1) + } + } else { + yyv1 = make([]EnvVar, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EnvVar{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, EnvVar{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EnvVar{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, EnvVar{}) // var yyz1 EnvVar + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = EnvVar{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []EnvVar{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceVolumeMount(v []VolumeMount, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolumeMount(v *[]VolumeMount, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []VolumeMount{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 56) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]VolumeMount, yyrl1) + } + } else { + yyv1 = make([]VolumeMount, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = VolumeMount{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, VolumeMount{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = VolumeMount{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, VolumeMount{}) // var yyz1 VolumeMount + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = VolumeMount{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []VolumeMount{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNodeSelectorTerm(v []NodeSelectorTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeSelectorTerm(v *[]NodeSelectorTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NodeSelectorTerm{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 24) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NodeSelectorTerm, yyrl1) + } + } else { + yyv1 = make([]NodeSelectorTerm, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeSelectorTerm{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NodeSelectorTerm{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeSelectorTerm{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NodeSelectorTerm{}) // var yyz1 NodeSelectorTerm + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeSelectorTerm{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NodeSelectorTerm{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNodeSelectorRequirement(v []NodeSelectorRequirement, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeSelectorRequirement(v *[]NodeSelectorRequirement, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NodeSelectorRequirement{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 56) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NodeSelectorRequirement, yyrl1) + } + } else { + yyv1 = make([]NodeSelectorRequirement, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeSelectorRequirement{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NodeSelectorRequirement{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeSelectorRequirement{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NodeSelectorRequirement{}) // var yyz1 NodeSelectorRequirement + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeSelectorRequirement{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NodeSelectorRequirement{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePodAffinityTerm(v []PodAffinityTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodAffinityTerm(v *[]PodAffinityTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PodAffinityTerm{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PodAffinityTerm, yyrl1) + } + } else { + yyv1 = make([]PodAffinityTerm, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodAffinityTerm{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PodAffinityTerm{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodAffinityTerm{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PodAffinityTerm{}) // var yyz1 PodAffinityTerm + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodAffinityTerm{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PodAffinityTerm{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceWeightedPodAffinityTerm(v []WeightedPodAffinityTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceWeightedPodAffinityTerm(v *[]WeightedPodAffinityTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []WeightedPodAffinityTerm{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 56) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]WeightedPodAffinityTerm, yyrl1) + } + } else { + yyv1 = make([]WeightedPodAffinityTerm, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = WeightedPodAffinityTerm{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, WeightedPodAffinityTerm{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = WeightedPodAffinityTerm{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, WeightedPodAffinityTerm{}) // var yyz1 WeightedPodAffinityTerm + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = WeightedPodAffinityTerm{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []WeightedPodAffinityTerm{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePreferredSchedulingTerm(v []PreferredSchedulingTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePreferredSchedulingTerm(v *[]PreferredSchedulingTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PreferredSchedulingTerm{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PreferredSchedulingTerm, yyrl1) + } + } else { + yyv1 = make([]PreferredSchedulingTerm, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PreferredSchedulingTerm{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PreferredSchedulingTerm{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PreferredSchedulingTerm{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PreferredSchedulingTerm{}) // var yyz1 PreferredSchedulingTerm + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PreferredSchedulingTerm{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PreferredSchedulingTerm{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceVolume(v []Volume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolume(v *[]Volume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Volume{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 232) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Volume, yyrl1) + } + } else { + yyv1 = make([]Volume, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Volume{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Volume{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Volume{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Volume{}) // var yyz1 Volume + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Volume{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Volume{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceContainer(v []Container, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainer(v *[]Container, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Container{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 296) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Container, yyrl1) + } + } else { + yyv1 = make([]Container, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Container{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Container{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Container{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Container{}) // var yyz1 Container + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Container{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Container{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceLocalObjectReference(v []LocalObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLocalObjectReference(v *[]LocalObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []LocalObjectReference{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]LocalObjectReference, yyrl1) + } + } else { + yyv1 = make([]LocalObjectReference, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LocalObjectReference{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, LocalObjectReference{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LocalObjectReference{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, LocalObjectReference{}) // var yyz1 LocalObjectReference + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = LocalObjectReference{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []LocalObjectReference{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceToleration(v []Toleration, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceToleration(v *[]Toleration, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Toleration{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Toleration, yyrl1) + } + } else { + yyv1 = make([]Toleration, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Toleration{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Toleration{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Toleration{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Toleration{}) // var yyz1 Toleration + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Toleration{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Toleration{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceHostAlias(v []HostAlias, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHostAlias(v *[]HostAlias, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HostAlias{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HostAlias, yyrl1) + } + } else { + yyv1 = make([]HostAlias, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HostAlias{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HostAlias{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HostAlias{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HostAlias{}) // var yyz1 HostAlias + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HostAlias{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HostAlias{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePodCondition(v []PodCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodCondition(v *[]PodCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PodCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PodCondition, yyrl1) + } + } else { + yyv1 = make([]PodCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PodCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PodCondition{}) // var yyz1 PodCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PodCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceContainerStatus(v []ContainerStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerStatus(v *[]ContainerStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ContainerStatus{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 120) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ContainerStatus, yyrl1) + } + } else { + yyv1 = make([]ContainerStatus, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerStatus{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ContainerStatus{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerStatus{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ContainerStatus{}) // var yyz1 ContainerStatus + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerStatus{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ContainerStatus{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePod(v []Pod, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePod(v *[]Pod, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Pod{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 768) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Pod, yyrl1) + } + } else { + yyv1 = make([]Pod, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Pod{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Pod{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Pod{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Pod{}) // var yyz1 Pod + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Pod{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Pod{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePodTemplate(v []PodTemplate, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodTemplate(v *[]PodTemplate, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PodTemplate{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 824) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PodTemplate, yyrl1) + } + } else { + yyv1 = make([]PodTemplate, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodTemplate{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PodTemplate{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodTemplate{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PodTemplate{}) // var yyz1 PodTemplate + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodTemplate{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PodTemplate{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceReplicationControllerCondition(v []ReplicationControllerCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicationControllerCondition(v *[]ReplicationControllerCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ReplicationControllerCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 88) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ReplicationControllerCondition, yyrl1) + } + } else { + yyv1 = make([]ReplicationControllerCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicationControllerCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ReplicationControllerCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicationControllerCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ReplicationControllerCondition{}) // var yyz1 ReplicationControllerCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicationControllerCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ReplicationControllerCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceReplicationController(v []ReplicationController, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicationController(v *[]ReplicationController, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ReplicationController{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 344) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ReplicationController, yyrl1) + } + } else { + yyv1 = make([]ReplicationController, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicationController{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ReplicationController{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicationController{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ReplicationController{}) // var yyz1 ReplicationController + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicationController{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ReplicationController{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceLoadBalancerIngress(v []LoadBalancerIngress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLoadBalancerIngress(v *[]LoadBalancerIngress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []LoadBalancerIngress{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]LoadBalancerIngress, yyrl1) + } + } else { + yyv1 = make([]LoadBalancerIngress, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LoadBalancerIngress{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, LoadBalancerIngress{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LoadBalancerIngress{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, LoadBalancerIngress{}) // var yyz1 LoadBalancerIngress + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = LoadBalancerIngress{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []LoadBalancerIngress{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceServicePort(v []ServicePort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceServicePort(v *[]ServicePort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ServicePort{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 80) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ServicePort, yyrl1) + } + } else { + yyv1 = make([]ServicePort, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ServicePort{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ServicePort{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ServicePort{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ServicePort{}) // var yyz1 ServicePort + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ServicePort{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ServicePort{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceService(v []Service, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceService(v *[]Service, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Service{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 472) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Service, yyrl1) + } + } else { + yyv1 = make([]Service, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Service{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Service{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Service{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Service{}) // var yyz1 Service + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Service{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Service{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceObjectReference(v []ObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceObjectReference(v *[]ObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ObjectReference{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ObjectReference, yyrl1) + } + } else { + yyv1 = make([]ObjectReference, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ObjectReference{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ObjectReference{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ObjectReference{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ObjectReference{}) // var yyz1 ObjectReference + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ObjectReference{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ObjectReference{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceServiceAccount(v []ServiceAccount, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceServiceAccount(v *[]ServiceAccount, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ServiceAccount{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 320) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ServiceAccount, yyrl1) + } + } else { + yyv1 = make([]ServiceAccount, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ServiceAccount{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ServiceAccount{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ServiceAccount{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ServiceAccount{}) // var yyz1 ServiceAccount + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ServiceAccount{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ServiceAccount{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEndpointSubset(v []EndpointSubset, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointSubset(v *[]EndpointSubset, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []EndpointSubset{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]EndpointSubset, yyrl1) + } + } else { + yyv1 = make([]EndpointSubset, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointSubset{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, EndpointSubset{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointSubset{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, EndpointSubset{}) // var yyz1 EndpointSubset + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointSubset{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []EndpointSubset{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEndpointAddress(v []EndpointAddress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointAddress(v *[]EndpointAddress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []EndpointAddress{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]EndpointAddress, yyrl1) + } + } else { + yyv1 = make([]EndpointAddress, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointAddress{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, EndpointAddress{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointAddress{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, EndpointAddress{}) // var yyz1 EndpointAddress + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointAddress{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []EndpointAddress{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEndpointPort(v []EndpointPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointPort(v *[]EndpointPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []EndpointPort{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]EndpointPort, yyrl1) + } + } else { + yyv1 = make([]EndpointPort, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointPort{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, EndpointPort{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointPort{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, EndpointPort{}) // var yyz1 EndpointPort + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = EndpointPort{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []EndpointPort{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEndpoints(v []Endpoints, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpoints(v *[]Endpoints, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Endpoints{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Endpoints, yyrl1) + } + } else { + yyv1 = make([]Endpoints, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Endpoints{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Endpoints{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Endpoints{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Endpoints{}) // var yyz1 Endpoints + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Endpoints{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Endpoints{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceTaint(v []Taint, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceTaint(v *[]Taint, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Taint{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Taint, yyrl1) + } + } else { + yyv1 = make([]Taint, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Taint{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Taint{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Taint{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Taint{}) // var yyz1 Taint + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Taint{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Taint{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNodeCondition(v []NodeCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeCondition(v *[]NodeCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NodeCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NodeCondition, yyrl1) + } + } else { + yyv1 = make([]NodeCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NodeCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NodeCondition{}) // var yyz1 NodeCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NodeCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNodeAddress(v []NodeAddress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeAddress(v *[]NodeAddress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NodeAddress{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NodeAddress, yyrl1) + } + } else { + yyv1 = make([]NodeAddress, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeAddress{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NodeAddress{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeAddress{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NodeAddress{}) // var yyz1 NodeAddress + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NodeAddress{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NodeAddress{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceContainerImage(v []ContainerImage, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerImage(v *[]ContainerImage, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ContainerImage{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ContainerImage, yyrl1) + } + } else { + yyv1 = make([]ContainerImage, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerImage{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ContainerImage{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerImage{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ContainerImage{}) // var yyz1 ContainerImage + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ContainerImage{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ContainerImage{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceUniqueVolumeName(v []UniqueVolumeName, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceUniqueVolumeName(v *[]UniqueVolumeName, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []UniqueVolumeName{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]UniqueVolumeName, yyrl1) + } + } else { + yyv1 = make([]UniqueVolumeName, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 UniqueVolumeName + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []UniqueVolumeName{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceAttachedVolume(v []AttachedVolume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceAttachedVolume(v *[]AttachedVolume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []AttachedVolume{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 32) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]AttachedVolume, yyrl1) + } + } else { + yyv1 = make([]AttachedVolume, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = AttachedVolume{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, AttachedVolume{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = AttachedVolume{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, AttachedVolume{}) // var yyz1 AttachedVolume + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = AttachedVolume{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []AttachedVolume{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePreferAvoidPodsEntry(v []PreferAvoidPodsEntry, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePreferAvoidPodsEntry(v *[]PreferAvoidPodsEntry, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PreferAvoidPodsEntry{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PreferAvoidPodsEntry, yyrl1) + } + } else { + yyv1 = make([]PreferAvoidPodsEntry, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PreferAvoidPodsEntry{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PreferAvoidPodsEntry{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PreferAvoidPodsEntry{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PreferAvoidPodsEntry{}) // var yyz1 PreferAvoidPodsEntry + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PreferAvoidPodsEntry{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PreferAvoidPodsEntry{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encResourceList(v ResourceList, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yyk1.CodecEncodeSelf(e) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3 := &yyv1 + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(yy3) { + } else if !yym4 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3) + } else { + z.EncFallback(yy3) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decResourceList(v *ResourceList, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 72) + yyv1 = make(map[ResourceName]pkg3_resource.Quantity, yyrl1) + *v = yyv1 + } + var yymk1 ResourceName + var yymv1 pkg3_resource.Quantity + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yyv2.CodecDecodeSelf(d) + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = pkg3_resource.Quantity{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = pkg3_resource.Quantity{} + } else { + yyv3 := &yymv1 + yym4 := z.DecBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3) { + } else if !yym4 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3) + } else { + z.DecFallback(yyv3, false) + } + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv5 := &yymk1 + yyv5.CodecDecodeSelf(d) + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = pkg3_resource.Quantity{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = pkg3_resource.Quantity{} + } else { + yyv6 := &yymv1 + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSliceNode(v []Node, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNode(v *[]Node, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Node{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 664) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Node, yyrl1) + } + } else { + yyv1 = make([]Node, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Node{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Node{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Node{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Node{}) // var yyz1 Node + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Node{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Node{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceFinalizerName(v []FinalizerName, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceFinalizerName(v *[]FinalizerName, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []FinalizerName{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]FinalizerName, yyrl1) + } + } else { + yyv1 = make([]FinalizerName, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 FinalizerName + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []FinalizerName{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNamespace(v []Namespace, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNamespace(v *[]Namespace, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Namespace{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 304) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Namespace, yyrl1) + } + } else { + yyv1 = make([]Namespace, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Namespace{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Namespace{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Namespace{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Namespace{}) // var yyz1 Namespace + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Namespace{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Namespace{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceEvent(v []Event, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEvent(v *[]Event, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Event{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 512) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Event, yyrl1) + } + } else { + yyv1 = make([]Event, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Event{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Event{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Event{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Event{}) // var yyz1 Event + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Event{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Event{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceruntime_RawExtension(v []pkg5_runtime.RawExtension, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yym3 := z.EncBinary() + _ = yym3 + if false { + } else if z.HasExtensions() && z.EncExt(yy2) { + } else if !yym3 && z.IsJSONHandle() { + z.EncJSONMarshal(yy2) + } else { + z.EncFallback(yy2) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceruntime_RawExtension(v *[]pkg5_runtime.RawExtension, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []pkg5_runtime.RawExtension{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]pkg5_runtime.RawExtension, yyrl1) + } + } else { + yyv1 = make([]pkg5_runtime.RawExtension, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg5_runtime.RawExtension{} + } else { + yyv2 := &yyv1[yyj1] + yym3 := z.DecBinary() + _ = yym3 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2) { + } else if !yym3 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv2) + } else { + z.DecFallback(yyv2, false) + } + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, pkg5_runtime.RawExtension{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg5_runtime.RawExtension{} + } else { + yyv4 := &yyv1[yyj1] + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4) + } else { + z.DecFallback(yyv4, false) + } + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, pkg5_runtime.RawExtension{}) // var yyz1 pkg5_runtime.RawExtension + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg5_runtime.RawExtension{} + } else { + yyv6 := &yyv1[yyj1] + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []pkg5_runtime.RawExtension{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceLimitRangeItem(v []LimitRangeItem, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLimitRangeItem(v *[]LimitRangeItem, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []LimitRangeItem{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 56) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]LimitRangeItem, yyrl1) + } + } else { + yyv1 = make([]LimitRangeItem, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LimitRangeItem{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, LimitRangeItem{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LimitRangeItem{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, LimitRangeItem{}) // var yyz1 LimitRangeItem + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = LimitRangeItem{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []LimitRangeItem{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceLimitRange(v []LimitRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLimitRange(v *[]LimitRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []LimitRange{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]LimitRange, yyrl1) + } + } else { + yyv1 = make([]LimitRange, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LimitRange{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, LimitRange{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = LimitRange{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, LimitRange{}) // var yyz1 LimitRange + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = LimitRange{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []LimitRange{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceResourceQuotaScope(v []ResourceQuotaScope, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceResourceQuotaScope(v *[]ResourceQuotaScope, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ResourceQuotaScope{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ResourceQuotaScope, yyrl1) + } + } else { + yyv1 = make([]ResourceQuotaScope, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 ResourceQuotaScope + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ResourceQuotaScope{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceResourceQuota(v []ResourceQuota, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceResourceQuota(v *[]ResourceQuota, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ResourceQuota{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 312) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ResourceQuota, yyrl1) + } + } else { + yyv1 = make([]ResourceQuota, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ResourceQuota{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ResourceQuota{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ResourceQuota{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ResourceQuota{}) // var yyz1 ResourceQuota + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ResourceQuota{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ResourceQuota{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encMapstringSliceuint8(v map[string][]uint8, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk1)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv1 == nil { + r.EncodeNil() + } else { + yym3 := z.EncBinary() + _ = yym3 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(yyv1)) + } + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringSliceuint8(v *map[string][]uint8, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 40) + yyv1 = make(map[string][]uint8, yyrl1) + *v = yyv1 + } + var yymk1 string + var yymv1 []uint8 + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv4 := &yymv1 + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *yyv4 = r.DecodeBytes(*(*[]byte)(yyv4), false, false) + } + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv6 := &yymk1 + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv8 := &yymv1 + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *yyv8 = r.DecodeBytes(*(*[]byte)(yyv8), false, false) + } + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSliceuint8(v []uint8, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(v)) +} + +func (x codecSelfer1234) decSliceuint8(v *[]uint8, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + *v = r.DecodeBytes(*((*[]byte)(v)), false, false) +} + +func (x codecSelfer1234) encSliceSecret(v []Secret, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceSecret(v *[]Secret, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Secret{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 296) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Secret, yyrl1) + } + } else { + yyv1 = make([]Secret, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Secret{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Secret{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Secret{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Secret{}) // var yyz1 Secret + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Secret{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Secret{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceConfigMap(v []ConfigMap, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceConfigMap(v *[]ConfigMap, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ConfigMap{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 272) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ConfigMap, yyrl1) + } + } else { + yyv1 = make([]ConfigMap, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ConfigMap{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ConfigMap{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ConfigMap{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ConfigMap{}) // var yyz1 ConfigMap + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ConfigMap{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ConfigMap{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceComponentCondition(v []ComponentCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceComponentCondition(v *[]ComponentCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ComponentCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ComponentCondition, yyrl1) + } + } else { + yyv1 = make([]ComponentCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ComponentCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ComponentCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ComponentCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ComponentCondition{}) // var yyz1 ComponentCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ComponentCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ComponentCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceComponentStatus(v []ComponentStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceComponentStatus(v *[]ComponentStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ComponentStatus{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ComponentStatus, yyrl1) + } + } else { + yyv1 = make([]ComponentStatus, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ComponentStatus{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ComponentStatus{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ComponentStatus{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ComponentStatus{}) // var yyz1 ComponentStatus + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ComponentStatus{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ComponentStatus{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceDownwardAPIVolumeFile(v []DownwardAPIVolumeFile, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDownwardAPIVolumeFile(v *[]DownwardAPIVolumeFile, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []DownwardAPIVolumeFile{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]DownwardAPIVolumeFile, yyrl1) + } + } else { + yyv1 = make([]DownwardAPIVolumeFile, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DownwardAPIVolumeFile{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, DownwardAPIVolumeFile{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DownwardAPIVolumeFile{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, DownwardAPIVolumeFile{}) // var yyz1 DownwardAPIVolumeFile + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = DownwardAPIVolumeFile{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []DownwardAPIVolumeFile{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/types.go b/vendor/k8s.io/client-go/pkg/api/v1/types.go new file mode 100644 index 000000000..cdb0088c4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/types.go @@ -0,0 +1,4617 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// The comments for the structs and fields can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored and not exported to the SwaggerAPI. +// +// The aforementioned methods can be generated by hack/update-generated-swagger-docs.sh + +// Common string formats +// --------------------- +// Many fields in this API have formatting requirements. The commonly used +// formats are defined here. +// +// C_IDENTIFIER: This is a string that conforms to the definition of an "identifier" +// in the C language. This is captured by the following regex: +// [A-Za-z_][A-Za-z0-9_]* +// This defines the format, but not the length restriction, which should be +// specified at the definition of any field of this type. +// +// DNS_LABEL: This is a string, no more than 63 characters long, that conforms +// to the definition of a "label" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])? +// +// DNS_SUBDOMAIN: This is a string, no more than 253 characters long, that conforms +// to the definition of a "subdomain" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)* +// or more simply: +// DNS_LABEL(\.DNS_LABEL)* +// +// IANA_SVC_NAME: This is a string, no more than 15 characters long, that +// conforms to the definition of IANA service name in RFC 6335. +// It must contains at least one letter [a-z] and it must contains only [a-z0-9-]. +// Hypens ('-') cannot be leading or trailing character of the string +// and cannot be adjacent to other hyphens. + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +// DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon. +// +k8s:openapi-gen=false +type ObjectMeta struct { + // Name must be unique within a namespace. Is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // GenerateName is an optional prefix, used by the server, to generate a unique + // name ONLY IF the Name field has not been provided. + // If this field is used, the name returned to the client will be different + // than the name passed. This value will also be combined with a unique suffix. + // The provided value has the same validation rules as the Name field, + // and may be truncated by the length of the suffix required to make the value + // unique on the server. + // + // If this field is specified and the generated name exists, the server will + // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // + // Applied only if Name is not specified. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency + // +optional + GenerateName string `json:"generateName,omitempty" protobuf:"bytes,2,opt,name=generateName"` + + // Namespace defines the space within each name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // + // Must be a DNS_LABEL. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"` + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + // +optional + SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,4,opt,name=selfLink"` + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // + // Populated by the system. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + UID types.UID `json:"uid,omitempty" protobuf:"bytes,5,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` + + // An opaque value that represents the internal version of this object that can + // be used by clients to determine when objects have changed. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and passed unmodified back to the server. + // They may only be valid for a particular resource or set of resources. + // + // Populated by the system. + // Read-only. + // Value must be treated as opaque by clients and . + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,6,opt,name=resourceVersion"` + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + // +optional + Generation int64 `json:"generation,omitempty" protobuf:"varint,7,opt,name=generation"` + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. + // Read-only. + // Null for lists. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + CreationTimestamp metav1.Time `json:"creationTimestamp,omitempty" protobuf:"bytes,8,opt,name=creationTimestamp"` + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource is expected to be deleted (no longer visible + // from resource lists, and not reachable by name) after the time in this field. Once set, + // this value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard + // termination signal (SIGKILL) to the container and after cleanup, remove the pod from the + // API. In the presence of network partitions, this object may still exist after this + // timestamp, until an administrator or automated process can determine the resource is + // fully terminated. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + DeletionTimestamp *metav1.Time `json:"deletionTimestamp,omitempty" protobuf:"bytes,9,opt,name=deletionTimestamp"` + + // Number of seconds allowed for this object to gracefully terminate before + // it will be removed from the system. Only set when deletionTimestamp is also set. + // May only be shortened. + // Read-only. + // +optional + DeletionGracePeriodSeconds *int64 `json:"deletionGracePeriodSeconds,omitempty" protobuf:"varint,10,opt,name=deletionGracePeriodSeconds"` + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + // +optional + Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"` + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + // +optional + Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,12,rep,name=annotations"` + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + // +optional + // +patchMergeKey=uid + // +patchStrategy=merge + OwnerReferences []metav1.OwnerReference `json:"ownerReferences,omitempty" patchStrategy:"merge" patchMergeKey:"uid" protobuf:"bytes,13,rep,name=ownerReferences"` + + // An initializer is a controller which enforces some system invariant at object creation time. + // This field is a list of initializers that have not yet acted on this object. If nil or empty, + // this object has been completely initialized. Otherwise, the object is considered uninitialized + // and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to + // observe uninitialized objects. + // + // When an object is created, the system will populate this list with the current set of initializers. + // Only privileged users may set or modify this list. Once it is empty, it may not be modified further + // by any user. + Initializers *metav1.Initializers `json:"initializers,omitempty" patchStrategy:"merge" protobuf:"bytes,16,rep,name=initializers"` + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + // +optional + // +patchStrategy=merge + Finalizers []string `json:"finalizers,omitempty" patchStrategy:"merge" protobuf:"bytes,14,rep,name=finalizers"` + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + // +optional + ClusterName string `json:"clusterName,omitempty" protobuf:"bytes,15,opt,name=clusterName"` +} + +const ( + // NamespaceDefault means the object is in the default namespace which is applied when not specified by clients + NamespaceDefault string = "default" + // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces + NamespaceAll string = "" +) + +// Volume represents a named volume in a pod that may be accessed by any container in the pod. +type Volume struct { + // Volume's name. + // Must be a DNS_LABEL and unique within the pod. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // VolumeSource represents the location and type of the mounted volume. + // If not specified, the Volume is implied to be an EmptyDir. + // This implied behavior is deprecated and will be removed in a future version. + VolumeSource `json:",inline" protobuf:"bytes,2,opt,name=volumeSource"` +} + +// Represents the source of a volume to mount. +// Only one of its members may be specified. +type VolumeSource struct { + // HostPath represents a pre-existing file or directory on the host + // machine that is directly exposed to the container. This is generally + // used for system agents or other privileged things that are allowed + // to see the host machine. Most containers will NOT need this. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // --- + // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not + // mount host directories as read/write. + // +optional + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,1,opt,name=hostPath"` + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"` + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,3,opt,name=gcePersistentDisk"` + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,4,opt,name=awsElasticBlockStore"` + // GitRepo represents a git repository at a particular revision. + // +optional + GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty" protobuf:"bytes,5,opt,name=gitRepo"` + // Secret represents a secret that should populate this volume. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + Secret *SecretVolumeSource `json:"secret,omitempty" protobuf:"bytes,6,opt,name=secret"` + // NFS represents an NFS mount on the host that shares a pod's lifetime + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,7,opt,name=nfs"` + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md + // +optional + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,8,opt,name=iscsi"` + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,9,opt,name=glusterfs"` + // PersistentVolumeClaimVolumeSource represents a reference to a + // PersistentVolumeClaim in the same namespace. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaim"` + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,11,opt,name=rbd"` + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + // +optional + FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"` + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + Cinder *CinderVolumeSource `json:"cinder,omitempty" protobuf:"bytes,13,opt,name=cinder"` + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + CephFS *CephFSVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,14,opt,name=cephfs"` + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + // +optional + Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,15,opt,name=flocker"` + // DownwardAPI represents downward API about the pod that should populate this volume + // +optional + DownwardAPI *DownwardAPIVolumeSource `json:"downwardAPI,omitempty" protobuf:"bytes,16,opt,name=downwardAPI"` + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,17,opt,name=fc"` + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,18,opt,name=azureFile"` + // ConfigMap represents a configMap that should populate this volume + // +optional + ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty" protobuf:"bytes,19,opt,name=configMap"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,20,opt,name=vsphereVolume"` + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,21,opt,name=quobyte"` + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,22,opt,name=azureDisk"` + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,23,opt,name=photonPersistentDisk"` + // Items for all in one resources secrets, configmaps, and downward API + Projected *ProjectedVolumeSource `json:"projected,omitempty" protobuf:"bytes,26,opt,name=projected"` + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,24,opt,name=portworxVolume"` + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,25,opt,name=scaleIO"` + // StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. + // +optional + StorageOS *StorageOSVolumeSource `json:"storageos,omitempty" protobuf:"bytes,27,opt,name=storageos"` +} + +// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. +// This volume finds the bound PV and mounts that volume for the pod. A +// PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another +// type of volume that is owned by someone else (the system). +type PersistentVolumeClaimVolumeSource struct { + // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + ClaimName string `json:"claimName" protobuf:"bytes,1,opt,name=claimName"` + // Will force the ReadOnly setting in VolumeMounts. + // Default false. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,2,opt,name=readOnly"` +} + +// PersistentVolumeSource is similar to VolumeSource but meant for the +// administrator who creates PVs. Exactly one of its members must be set. +type PersistentVolumeSource struct { + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,1,opt,name=gcePersistentDisk"` + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,2,opt,name=awsElasticBlockStore"` + // HostPath represents a directory on the host. + // Provisioned by a developer or tester. + // This is useful for single-node development and testing only! + // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + // +optional + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,3,opt,name=hostPath"` + // Glusterfs represents a Glusterfs volume that is attached to a host and + // exposed to the pod. Provisioned by an admin. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + // +optional + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,4,opt,name=glusterfs"` + // NFS represents an NFS mount on the host. Provisioned by an admin. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,5,opt,name=nfs"` + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + // +optional + RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,6,opt,name=rbd"` + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + // +optional + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,7,opt,name=iscsi"` + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + Cinder *CinderVolumeSource `json:"cinder,omitempty" protobuf:"bytes,8,opt,name=cinder"` + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + // +optional + CephFS *CephFSVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,9,opt,name=cephfs"` + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + // +optional + FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,10,opt,name=fc"` + // Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running + // +optional + Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,11,opt,name=flocker"` + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + // +optional + FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"` + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + // +optional + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,13,opt,name=azureFile"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + // +optional + VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,14,opt,name=vsphereVolume"` + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + // +optional + Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,15,opt,name=quobyte"` + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + // +optional + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,16,opt,name=azureDisk"` + // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine + PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,17,opt,name=photonPersistentDisk"` + // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine + // +optional + PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,18,opt,name=portworxVolume"` + // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. + // +optional + ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,19,opt,name=scaleIO"` + // Local represents directly-attached storage with node affinity + // +optional + Local *LocalVolumeSource `json:"local,omitempty" protobuf:"bytes,20,opt,name=local"` + // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod + // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md + // +optional + StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"` +} + +const ( + // BetaStorageClassAnnotation represents the beta/previous StorageClass annotation. + // It's currently still used and will be held for backwards compatibility + BetaStorageClassAnnotation = "volume.beta.kubernetes.io/storage-class" + + // MountOptionAnnotation defines mount option annotation used in PVs + MountOptionAnnotation = "volume.beta.kubernetes.io/mount-options" + + // AlphaStorageNodeAffinityAnnotation defines node affinity policies for a PersistentVolume. + // Value is a string of the json representation of type NodeAffinity + AlphaStorageNodeAffinityAnnotation = "volume.alpha.kubernetes.io/node-affinity" +) + +// +genclient=true +// +nonNamespaced=true + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// It is analogous to a node. +// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes +type PersistentVolume struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines a specification of a persistent volume owned by the cluster. + // Provisioned by an administrator. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + Spec PersistentVolumeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status represents the current information/status for the persistent volume. + // Populated by the system. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes + // +optional + Status PersistentVolumeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PersistentVolumeSpec is the specification of a persistent volume. +type PersistentVolumeSpec struct { + // A description of the persistent volume's resources and capacity. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` + // The actual volume backing the persistent volume. + PersistentVolumeSource `json:",inline" protobuf:"bytes,2,opt,name=persistentVolumeSource"` + // AccessModes contains all ways the volume can be mounted. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes + // +optional + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,3,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // Expected to be non-nil when bound. + // claim.VolumeName is the authoritative bind between PV and PVC. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding + // +optional + ClaimRef *ObjectReference `json:"claimRef,omitempty" protobuf:"bytes,4,opt,name=claimRef"` + // What happens to a persistent volume when released from its claim. + // Valid options are Retain (default) and Recycle. + // Recycling must be supported by the volume plugin underlying this persistent volume. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming + // +optional + PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty" protobuf:"bytes,5,opt,name=persistentVolumeReclaimPolicy,casttype=PersistentVolumeReclaimPolicy"` + // Name of StorageClass to which this persistent volume belongs. Empty value + // means that this volume does not belong to any StorageClass. + // +optional + StorageClassName string `json:"storageClassName,omitempty" protobuf:"bytes,6,opt,name=storageClassName"` +} + +// PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes. +type PersistentVolumeReclaimPolicy string + +const ( + // PersistentVolumeReclaimRecycle means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. + // The volume plugin must support Recycling. + PersistentVolumeReclaimRecycle PersistentVolumeReclaimPolicy = "Recycle" + // PersistentVolumeReclaimDelete means the volume will be deleted from Kubernetes on release from its claim. + // The volume plugin must support Deletion. + PersistentVolumeReclaimDelete PersistentVolumeReclaimPolicy = "Delete" + // PersistentVolumeReclaimRetain means the volume will be left in its current phase (Released) for manual reclamation by the administrator. + // The default policy is Retain. + PersistentVolumeReclaimRetain PersistentVolumeReclaimPolicy = "Retain" +) + +// PersistentVolumeStatus is the current status of a persistent volume. +type PersistentVolumeStatus struct { + // Phase indicates if a volume is available, bound to a claim, or released by a claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase + // +optional + Phase PersistentVolumePhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PersistentVolumePhase"` + // A human-readable message indicating details about why the volume is in this state. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` + // Reason is a brief CamelCase string that describes any failure and is meant + // for machine parsing and tidy display in the CLI. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` +} + +// PersistentVolumeList is a list of PersistentVolume items. +type PersistentVolumeList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // List of persistent volumes. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes + Items []PersistentVolume `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +type PersistentVolumeClaim struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired characteristics of a volume requested by a pod author. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + Spec PersistentVolumeClaimSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status represents the current information/status of a persistent volume claim. + // Read-only. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + // +optional + Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +type PersistentVolumeClaimList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // A list of persistent volume claims. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + Items []PersistentVolumeClaim `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// PersistentVolumeClaimSpec describes the common attributes of storage devices +// and allows a Source for provider-specific attributes +type PersistentVolumeClaimSpec struct { + // AccessModes contains the desired access modes the volume should have. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,1,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // A label query over volumes to consider for binding. + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + // Resources represents the minimum resources the volume should have. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,2,opt,name=resources"` + // VolumeName is the binding reference to the PersistentVolume backing this claim. + // +optional + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,3,opt,name=volumeName"` + // Name of the StorageClass required by the claim. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + // +optional + StorageClassName *string `json:"storageClassName,omitempty" protobuf:"bytes,5,opt,name=storageClassName"` +} + +// PersistentVolumeClaimStatus is the current status of a persistent volume claim. +type PersistentVolumeClaimStatus struct { + // Phase represents the current phase of PersistentVolumeClaim. + // +optional + Phase PersistentVolumeClaimPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PersistentVolumeClaimPhase"` + // AccessModes contains the actual access modes the volume backing the PVC has. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + // +optional + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,2,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // Represents the actual resources of the underlying volume. + // +optional + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,3,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` +} + +type PersistentVolumeAccessMode string + +const ( + // can be mounted read/write mode to exactly 1 host + ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce" + // can be mounted in read-only mode to many hosts + ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany" + // can be mounted in read/write mode to many hosts + ReadWriteMany PersistentVolumeAccessMode = "ReadWriteMany" +) + +type PersistentVolumePhase string + +const ( + // used for PersistentVolumes that are not available + VolumePending PersistentVolumePhase = "Pending" + // used for PersistentVolumes that are not yet bound + // Available volumes are held by the binder and matched to PersistentVolumeClaims + VolumeAvailable PersistentVolumePhase = "Available" + // used for PersistentVolumes that are bound + VolumeBound PersistentVolumePhase = "Bound" + // used for PersistentVolumes where the bound PersistentVolumeClaim was deleted + // released volumes must be recycled before becoming available again + // this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource + VolumeReleased PersistentVolumePhase = "Released" + // used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim + VolumeFailed PersistentVolumePhase = "Failed" +) + +type PersistentVolumeClaimPhase string + +const ( + // used for PersistentVolumeClaims that are not yet bound + ClaimPending PersistentVolumeClaimPhase = "Pending" + // used for PersistentVolumeClaims that are bound + ClaimBound PersistentVolumeClaimPhase = "Bound" + // used for PersistentVolumeClaims that lost their underlying + // PersistentVolume. The claim was bound to a PersistentVolume and this + // volume does not exist any longer and all data on it was lost. + ClaimLost PersistentVolumeClaimPhase = "Lost" +) + +// Represents a host path mapped into a pod. +// Host path volumes do not support ownership management or SELinux relabeling. +type HostPathVolumeSource struct { + // Path of the directory on the host. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` +} + +// Represents an empty directory for a pod. +// Empty directory volumes support ownership management and SELinux relabeling. +type EmptyDirVolumeSource struct { + // What type of storage medium should back this directory. + // The default is "" which means to use the node's default medium. + // Must be an empty string (default) or Memory. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + // +optional + Medium StorageMedium `json:"medium,omitempty" protobuf:"bytes,1,opt,name=medium,casttype=StorageMedium"` + // Total amount of local storage required for this EmptyDir volume. + // The size limit is also applicable for memory medium. + // The maximum usage on memory medium EmptyDir would be the minimum value between + // the SizeLimit specified here and the sum of memory limits of all containers in a pod. + // The default is nil which means that the limit is undefined. + // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir + // +optional + SizeLimit resource.Quantity `json:"sizeLimit,omitempty" protobuf:"bytes,2,opt,name=sizeLimit"` +} + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// Glusterfs volumes do not support ownership management or SELinux relabeling. +type GlusterfsVolumeSource struct { + // EndpointsName is the endpoint name that details Glusterfs topology. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + EndpointsName string `json:"endpoints" protobuf:"bytes,1,opt,name=endpoints"` + + // Path is the Glusterfs volume path. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + Path string `json:"path" protobuf:"bytes,2,opt,name=path"` + + // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. + // Defaults to false. + // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// RBD volumes support ownership management and SELinux relabeling. +type RBDVolumeSource struct { + // A collection of Ceph monitors. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + CephMonitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` + // The rados image name. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + RBDImage string `json:"image" protobuf:"bytes,2,opt,name=image"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // The rados pool name. + // Default is rbd. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"` + // The rados user name. + // Default is admin. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + RadosUser string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"` + // Keyring is the path to key ring for RBDUser. + // Default is /etc/ceph/keyring. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + Keyring string `json:"keyring,omitempty" protobuf:"bytes,6,opt,name=keyring"` + // SecretRef is name of the authentication secret for RBDUser. If provided + // overrides keyring. + // Default is nil. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,7,opt,name=secretRef"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,8,opt,name=readOnly"` +} + +// Represents a cinder volume resource in Openstack. +// A Cinder volume must exist before mounting to a container. +// The volume must also be in the same region as the kubelet. +// Cinder volumes support ownership management and SELinux relabeling. +type CinderVolumeSource struct { + // volume id used to identify the volume in cinder + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFSVolumeSource struct { + // Required: Monitors is a collection of Ceph monitors + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + Monitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` + // Optional: Used as the mounted root, rather than the full Ceph tree, default is / + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` + // Optional: User is the rados user name, default is admin + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"` + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + SecretFile string `json:"secretFile,omitempty" protobuf:"bytes,4,opt,name=secretFile"` + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` +} + +// Represents a Flocker volume mounted by the Flocker agent. +// One and only one of datasetName and datasetUUID should be set. +// Flocker volumes do not support ownership management or SELinux relabeling. +type FlockerVolumeSource struct { + // Name of the dataset stored as metadata -> name on the dataset for Flocker + // should be considered as deprecated + // +optional + DatasetName string `json:"datasetName,omitempty" protobuf:"bytes,1,opt,name=datasetName"` + // UUID of the dataset. This is unique identifier of a Flocker dataset + // +optional + DatasetUUID string `json:"datasetUUID,omitempty" protobuf:"bytes,2,opt,name=datasetUUID"` +} + +// StorageMedium defines ways that storage can be allocated to a volume. +type StorageMedium string + +const ( + StorageMediumDefault StorageMedium = "" // use whatever the default is for the node + StorageMediumMemory StorageMedium = "Memory" // use memory (tmpfs) +) + +// Protocol defines network protocols supported for things like container ports. +type Protocol string + +const ( + // ProtocolTCP is the TCP protocol. + ProtocolTCP Protocol = "TCP" + // ProtocolUDP is the UDP protocol. + ProtocolUDP Protocol = "UDP" +) + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must +// also be in the same GCE project and zone as the kubelet. A GCE PD +// can only be mounted as read/write once or read-only many times. GCE +// PDs support ownership management and SELinux relabeling. +type GCEPersistentDiskVolumeSource struct { + // Unique name of the PD resource in GCE. Used to identify the disk in GCE. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + PDName string `json:"pdName" protobuf:"bytes,1,opt,name=pdName"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + Partition int32 `json:"partition,omitempty" protobuf:"varint,3,opt,name=partition"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` +} + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// Quobyte volumes do not support ownership management or SELinux relabeling. +type QuobyteVolumeSource struct { + // Registry represents a single or multiple Quobyte Registry services + // specified as a string as host:port pair (multiple entries are separated with commas) + // which acts as the central registry for volumes + Registry string `json:"registry" protobuf:"bytes,1,opt,name=registry"` + + // Volume is a string that references an already created Quobyte volume by name. + Volume string `json:"volume" protobuf:"bytes,2,opt,name=volume"` + + // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. + // Defaults to false. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` + + // User to map volume access to + // Defaults to serivceaccount user + // +optional + User string `json:"user,omitempty" protobuf:"bytes,4,opt,name=user"` + + // Group to map volume access to + // Default is no group + // +optional + Group string `json:"group,omitempty" protobuf:"bytes,5,opt,name=group"` +} + +// FlexVolume represents a generic volume resource that is +// provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. +type FlexVolumeSource struct { + // Driver is the name of the driver to use for this volume. + Driver string `json:"driver" protobuf:"bytes,1,opt,name=driver"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Optional: SecretRef is reference to the secret object containing + // sensitive information to pass to the plugin scripts. This may be + // empty if no secret object is specified. If the secret object + // contains more than one secret, all secrets are passed to the plugin + // scripts. + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,3,opt,name=secretRef"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // Optional: Extra command options if any. + // +optional + Options map[string]string `json:"options,omitempty" protobuf:"bytes,5,rep,name=options"` +} + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk +// must also be in the same AWS zone as the kubelet. An AWS EBS disk +// can only be mounted as read/write once. AWS EBS volumes support +// ownership management and SELinux relabeling. +type AWSElasticBlockStoreVolumeSource struct { + // Unique ID of the persistent disk resource in AWS (Amazon EBS volume). + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + // +optional + Partition int32 `json:"partition,omitempty" protobuf:"varint,3,opt,name=partition"` + // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". + // If omitted, the default is "false". + // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` +} + +// Represents a volume that is populated with the contents of a git repository. +// Git repo volumes do not support ownership management. +// Git repo volumes support SELinux relabeling. +type GitRepoVolumeSource struct { + // Repository URL + Repository string `json:"repository" protobuf:"bytes,1,opt,name=repository"` + // Commit hash for the specified revision. + // +optional + Revision string `json:"revision,omitempty" protobuf:"bytes,2,opt,name=revision"` + // Target directory name. + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + // git repository. Otherwise, if specified, the volume will contain the git repository in + // the subdirectory with the given name. + // +optional + Directory string `json:"directory,omitempty" protobuf:"bytes,3,opt,name=directory"` +} + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume +// as files using the keys in the Data field as the file names. +// Secret volumes support ownership management and SELinux relabeling. +type SecretVolumeSource struct { + // Name of the secret in the pod's namespace to use. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + // +optional + SecretName string `json:"secretName,omitempty" protobuf:"bytes,1,opt,name=secretName"` + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"bytes,3,opt,name=defaultMode"` + // Specify whether the Secret or it's keys must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +const ( + SecretVolumeSourceDefaultMode int32 = 0644 +) + +// Adapts a secret into a projected volume. +// +// The contents of the target Secret's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names. +// Note that this is identical to a secret volume source without the default +// mode. +type SecretProjection struct { + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Specify whether the Secret or its key must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +// Represents an NFS mount that lasts the lifetime of a pod. +// NFS volumes do not support ownership management or SELinux relabeling. +type NFSVolumeSource struct { + // Server is the hostname or IP address of the NFS server. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + Server string `json:"server" protobuf:"bytes,1,opt,name=server"` + + // Path that is exported by the NFS server. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + Path string `json:"path" protobuf:"bytes,2,opt,name=path"` + + // ReadOnly here will force + // the NFS export to be mounted with read-only permissions. + // Defaults to false. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents an ISCSI disk. +// ISCSI volumes can only be mounted as read/write once. +// ISCSI volumes support ownership management and SELinux relabeling. +type ISCSIVolumeSource struct { + // iSCSI target portal. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + TargetPortal string `json:"targetPortal" protobuf:"bytes,1,opt,name=targetPortal"` + // Target iSCSI Qualified Name. + IQN string `json:"iqn" protobuf:"bytes,2,opt,name=iqn"` + // iSCSI target lun number. + Lun int32 `json:"lun" protobuf:"varint,3,opt,name=lun"` + // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. + // +optional + ISCSIInterface string `json:"iscsiInterface,omitempty" protobuf:"bytes,4,opt,name=iscsiInterface"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,5,opt,name=fsType"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` + // iSCSI target portal List. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + // +optional + Portals []string `json:"portals,omitempty" protobuf:"bytes,7,opt,name=portals"` + // whether support iSCSI Discovery CHAP authentication + // +optional + DiscoveryCHAPAuth bool `json:"chapAuthDiscovery,omitempty" protobuf:"varint,8,opt,name=chapAuthDiscovery"` + // whether support iSCSI Session CHAP authentication + // +optional + SessionCHAPAuth bool `json:"chapAuthSession,omitempty" protobuf:"varint,11,opt,name=chapAuthSession"` + // CHAP secret for iSCSI target and initiator authentication + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,10,opt,name=secretRef"` +} + +// Represents a Fibre Channel volume. +// Fibre Channel volumes can only be mounted as read/write once. +// Fibre Channel volumes support ownership management and SELinux relabeling. +type FCVolumeSource struct { + // Required: FC target worldwide names (WWNs) + TargetWWNs []string `json:"targetWWNs" protobuf:"bytes,1,rep,name=targetWWNs"` + // Required: FC target lun number + Lun *int32 `json:"lun" protobuf:"varint,2,opt,name=lun"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFileVolumeSource struct { + // the name of secret that contains Azure Storage Account Name and Key + SecretName string `json:"secretName" protobuf:"bytes,1,opt,name=secretName"` + // Share Name + ShareName string `json:"shareName" protobuf:"bytes,2,opt,name=shareName"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents a vSphere volume resource. +type VsphereVirtualDiskVolumeSource struct { + // Path that identifies vSphere volume vmdk + VolumePath string `json:"volumePath" protobuf:"bytes,1,opt,name=volumePath"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Storage Policy Based Management (SPBM) profile name. + // +optional + StoragePolicyName string `json:"storagePolicyName,omitempty" protobuf:"bytes,3,opt,name=storagePolicyName"` + // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + // +optional + StoragePolicyID string `json:"storagePolicyID,omitempty" protobuf:"bytes,4,opt,name=storagePolicyID"` +} + +// Represents a Photon Controller persistent disk resource. +type PhotonPersistentDiskVolumeSource struct { + // ID that identifies Photon Controller persistent disk + PdID string `json:"pdID" protobuf:"bytes,1,opt,name=pdID"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` +} + +type AzureDataDiskCachingMode string +type AzureDataDiskKind string + +const ( + AzureDataDiskCachingNone AzureDataDiskCachingMode = "None" + AzureDataDiskCachingReadOnly AzureDataDiskCachingMode = "ReadOnly" + AzureDataDiskCachingReadWrite AzureDataDiskCachingMode = "ReadWrite" + + AzureSharedBlobDisk AzureDataDiskKind = "Shared" + AzureDedicatedBlobDisk AzureDataDiskKind = "Dedicated" + AzureManagedDisk AzureDataDiskKind = "Managed" +) + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +type AzureDiskVolumeSource struct { + // The Name of the data disk in the blob storage + DiskName string `json:"diskName" protobuf:"bytes,1,opt,name=diskName"` + // The URI the data disk in the blob storage + DataDiskURI string `json:"diskURI" protobuf:"bytes,2,opt,name=diskURI"` + // Host Caching mode: None, Read Only, Read Write. + // +optional + CachingMode *AzureDataDiskCachingMode `json:"cachingMode,omitempty" protobuf:"bytes,3,opt,name=cachingMode,casttype=AzureDataDiskCachingMode"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType *string `json:"fsType,omitempty" protobuf:"bytes,4,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly *bool `json:"readOnly,omitempty" protobuf:"varint,5,opt,name=readOnly"` + // Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared + Kind *AzureDataDiskKind `json:"kind,omitempty" protobuf:"bytes,6,opt,name=kind,casttype=AzureDataDiskKind"` +} + +// PortworxVolumeSource represents a Portworx volume resource. +type PortworxVolumeSource struct { + // VolumeID uniquely identifies a Portworx volume + VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` + // FSType represents the filesystem type to mount + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// ScaleIOVolumeSource represents a persistent ScaleIO volume +type ScaleIOVolumeSource struct { + // The host address of the ScaleIO API Gateway. + Gateway string `json:"gateway" protobuf:"bytes,1,opt,name=gateway"` + // The name of the storage system as configured in ScaleIO. + System string `json:"system" protobuf:"bytes,2,opt,name=system"` + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + SecretRef *LocalObjectReference `json:"secretRef" protobuf:"bytes,3,opt,name=secretRef"` + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + SSLEnabled bool `json:"sslEnabled,omitempty" protobuf:"varint,4,opt,name=sslEnabled"` + // The name of the Protection Domain for the configured storage (defaults to "default"). + // +optional + ProtectionDomain string `json:"protectionDomain,omitempty" protobuf:"bytes,5,opt,name=protectionDomain"` + // The Storage Pool associated with the protection domain (defaults to "default"). + // +optional + StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` + // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // +optional + StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,10,opt,name=readOnly"` +} + +// Represents a StorageOS persistent volume resource. +type StorageOSVolumeSource struct { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,1,opt,name=volumeName"` + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + VolumeNamespace string `json:"volumeNamespace,omitempty" protobuf:"bytes,2,opt,name=volumeNamespace"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` +} + +// Represents a StorageOS persistent volume resource. +type StorageOSPersistentVolumeSource struct { + // VolumeName is the human-readable name of the StorageOS volume. Volume + // names are only unique within a namespace. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,1,opt,name=volumeName"` + // VolumeNamespace specifies the scope of the volume within StorageOS. If no + // namespace is specified then the Pod's namespace will be used. This allows the + // Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + // Set VolumeName to any name to override the default behaviour. + // Set to "default" if you are not using namespaces within StorageOS. + // Namespaces that do not pre-exist within StorageOS will be created. + // +optional + VolumeNamespace string `json:"volumeNamespace,omitempty" protobuf:"bytes,2,opt,name=volumeNamespace"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // SecretRef specifies the secret to use for obtaining the StorageOS API + // credentials. If not specified, default values will be attempted. + // +optional + SecretRef *ObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` +} + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// volume as files using the keys in the Data field as the file names, unless +// the items element is populated with specific mappings of keys to paths. +// ConfigMap volumes support ownership management and SELinux relabeling. +type ConfigMapVolumeSource struct { + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,3,opt,name=defaultMode"` + // Specify whether the ConfigMap or it's keys must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +const ( + ConfigMapVolumeSourceDefaultMode int32 = 0644 +) + +// Adapts a ConfigMap into a projected volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// projected volume as files using the keys in the Data field as the file names, +// unless the items element is populated with specific mappings of keys to paths. +// Note that this is identical to a configmap volume source without the default +// mode. +type ConfigMapProjection struct { + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error unless it is marked optional. Paths must be + // relative and may not contain the '..' path or start with '..'. + // +optional + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Specify whether the ConfigMap or it's keys must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` +} + +// Represents a projected volume source +type ProjectedVolumeSource struct { + // list of volume projections + Sources []VolumeProjection `json:"sources" protobuf:"bytes,1,rep,name=sources"` + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,2,opt,name=defaultMode"` +} + +// Projection that may be projected along with other supported volume types +type VolumeProjection struct { + // all types below are the supported types for projection into the same volume + + // information about the secret data to project + Secret *SecretProjection `json:"secret,omitempty" protobuf:"bytes,1,opt,name=secret"` + // information about the downwardAPI data to project + DownwardAPI *DownwardAPIProjection `json:"downwardAPI,omitempty" protobuf:"bytes,2,opt,name=downwardAPI"` + // information about the configMap data to project + ConfigMap *ConfigMapProjection `json:"configMap,omitempty" protobuf:"bytes,3,opt,name=configMap"` +} + +const ( + ProjectedVolumeSourceDefaultMode int32 = 0644 +) + +// Maps a string key to a path within a volume. +type KeyToPath struct { + // The key to project. + Key string `json:"key" protobuf:"bytes,1,opt,name=key"` + + // The relative path of the file to map the key to. + // May not be an absolute path. + // May not contain the path element '..'. + // May not start with the string '..'. + Path string `json:"path" protobuf:"bytes,2,opt,name=path"` + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + Mode *int32 `json:"mode,omitempty" protobuf:"varint,3,opt,name=mode"` +} + +// Local represents directly-attached storage with node affinity +type LocalVolumeSource struct { + // The full path to the volume on the node + // For alpha, this path must be a directory + // Once block as a source is supported, then this path can point to a block device + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` +} + +// ContainerPort represents a network port in a single container. +type ContainerPort struct { + // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + // named port in a pod must have a unique name. Name for the port that can be + // referred to by services. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // Number of port to expose on the host. + // If specified, this must be a valid port number, 0 < x < 65536. + // If HostNetwork is specified, this must match ContainerPort. + // Most containers do not need this. + // +optional + HostPort int32 `json:"hostPort,omitempty" protobuf:"varint,2,opt,name=hostPort"` + // Number of port to expose on the pod's IP address. + // This must be a valid port number, 0 < x < 65536. + ContainerPort int32 `json:"containerPort" protobuf:"varint,3,opt,name=containerPort"` + // Protocol for port. Must be UDP or TCP. + // Defaults to "TCP". + // +optional + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,4,opt,name=protocol,casttype=Protocol"` + // What host IP to bind the external port to. + // +optional + HostIP string `json:"hostIP,omitempty" protobuf:"bytes,5,opt,name=hostIP"` +} + +// VolumeMount describes a mounting of a Volume within a container. +type VolumeMount struct { + // This must match the Name of a Volume. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Mounted read-only if true, read-write otherwise (false or unspecified). + // Defaults to false. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,2,opt,name=readOnly"` + // Path within the container at which the volume should be mounted. Must + // not contain ':'. + MountPath string `json:"mountPath" protobuf:"bytes,3,opt,name=mountPath"` + // Path within the volume from which the container's volume should be mounted. + // Defaults to "" (volume's root). + // +optional + SubPath string `json:"subPath,omitempty" protobuf:"bytes,4,opt,name=subPath"` +} + +// EnvVar represents an environment variable present in a Container. +type EnvVar struct { + // Name of the environment variable. Must be a C_IDENTIFIER. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // Optional: no more than one of the following may be specified. + + // Variable references $(VAR_NAME) are expanded + // using the previous defined environment variables in the container and + // any service environment variables. If a variable cannot be resolved, + // the reference in the input string will be unchanged. The $(VAR_NAME) + // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + // references will never be expanded, regardless of whether the variable + // exists or not. + // Defaults to "". + // +optional + Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` + // Source for the environment variable's value. Cannot be used if value is not empty. + // +optional + ValueFrom *EnvVarSource `json:"valueFrom,omitempty" protobuf:"bytes,3,opt,name=valueFrom"` +} + +// EnvVarSource represents a source for the value of an EnvVar. +type EnvVarSource struct { + // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, + // spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP. + // +optional + FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty" protobuf:"bytes,1,opt,name=fieldRef"` + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + // +optional + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" protobuf:"bytes,2,opt,name=resourceFieldRef"` + // Selects a key of a ConfigMap. + // +optional + ConfigMapKeyRef *ConfigMapKeySelector `json:"configMapKeyRef,omitempty" protobuf:"bytes,3,opt,name=configMapKeyRef"` + // Selects a key of a secret in the pod's namespace + // +optional + SecretKeyRef *SecretKeySelector `json:"secretKeyRef,omitempty" protobuf:"bytes,4,opt,name=secretKeyRef"` +} + +// ObjectFieldSelector selects an APIVersioned field of an object. +type ObjectFieldSelector struct { + // Version of the schema the FieldPath is written in terms of, defaults to "v1". + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` + // Path of the field to select in the specified API version. + FieldPath string `json:"fieldPath" protobuf:"bytes,2,opt,name=fieldPath"` +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +type ResourceFieldSelector struct { + // Container name: required for volumes, optional for env vars + // +optional + ContainerName string `json:"containerName,omitempty" protobuf:"bytes,1,opt,name=containerName"` + // Required: resource to select + Resource string `json:"resource" protobuf:"bytes,2,opt,name=resource"` + // Specifies the output format of the exposed resources, defaults to "1" + // +optional + Divisor resource.Quantity `json:"divisor,omitempty" protobuf:"bytes,3,opt,name=divisor"` +} + +// Selects a key from a ConfigMap. +type ConfigMapKeySelector struct { + // The ConfigMap to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // The key to select. + Key string `json:"key" protobuf:"bytes,2,opt,name=key"` + // Specify whether the ConfigMap or it's key must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,3,opt,name=optional"` +} + +// SecretKeySelector selects a key of a Secret. +type SecretKeySelector struct { + // The name of the secret in the pod's namespace to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // The key of the secret to select from. Must be a valid secret key. + Key string `json:"key" protobuf:"bytes,2,opt,name=key"` + // Specify whether the Secret or it's key must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,3,opt,name=optional"` +} + +// EnvFromSource represents the source of a set of ConfigMaps +type EnvFromSource struct { + // An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + // +optional + Prefix string `json:"prefix,omitempty" protobuf:"bytes,1,opt,name=prefix"` + // The ConfigMap to select from + // +optional + ConfigMapRef *ConfigMapEnvSource `json:"configMapRef,omitempty" protobuf:"bytes,2,opt,name=configMapRef"` + // The Secret to select from + // +optional + SecretRef *SecretEnvSource `json:"secretRef,omitempty" protobuf:"bytes,3,opt,name=secretRef"` +} + +// ConfigMapEnvSource selects a ConfigMap to populate the environment +// variables with. +// +// The contents of the target ConfigMap's Data field will represent the +// key-value pairs as environment variables. +type ConfigMapEnvSource struct { + // The ConfigMap to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // Specify whether the ConfigMap must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,2,opt,name=optional"` +} + +// SecretEnvSource selects a Secret to populate the environment +// variables with. +// +// The contents of the target Secret's Data field will represent the +// key-value pairs as environment variables. +type SecretEnvSource struct { + // The Secret to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // Specify whether the Secret must be defined + // +optional + Optional *bool `json:"optional,omitempty" protobuf:"varint,2,opt,name=optional"` +} + +// HTTPHeader describes a custom header to be used in HTTP probes +type HTTPHeader struct { + // The header field name + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // The header field value + Value string `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +// HTTPGetAction describes an action based on HTTP Get requests. +type HTTPGetAction struct { + // Path to access on the HTTP server. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Name or number of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + Port intstr.IntOrString `json:"port" protobuf:"bytes,2,opt,name=port"` + // Host name to connect to, defaults to the pod IP. You probably want to set + // "Host" in httpHeaders instead. + // +optional + Host string `json:"host,omitempty" protobuf:"bytes,3,opt,name=host"` + // Scheme to use for connecting to the host. + // Defaults to HTTP. + // +optional + Scheme URIScheme `json:"scheme,omitempty" protobuf:"bytes,4,opt,name=scheme,casttype=URIScheme"` + // Custom headers to set in the request. HTTP allows repeated headers. + // +optional + HTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty" protobuf:"bytes,5,rep,name=httpHeaders"` +} + +// URIScheme identifies the scheme used for connection to a host for Get actions +type URIScheme string + +const ( + // URISchemeHTTP means that the scheme used will be http:// + URISchemeHTTP URIScheme = "HTTP" + // URISchemeHTTPS means that the scheme used will be https:// + URISchemeHTTPS URIScheme = "HTTPS" +) + +// TCPSocketAction describes an action based on opening a socket +type TCPSocketAction struct { + // Number or name of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + Port intstr.IntOrString `json:"port" protobuf:"bytes,1,opt,name=port"` + // Optional: Host name to connect to, defaults to the pod IP. + // +optional + Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"` +} + +// ExecAction describes a "run in container" action. +type ExecAction struct { + // Command is the command line to execute inside the container, the working directory for the + // command is root ('/') in the container's filesystem. The command is simply exec'd, it is + // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + // a shell, you need to explicitly call out to that shell. + // Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + // +optional + Command []string `json:"command,omitempty" protobuf:"bytes,1,rep,name=command"` +} + +// Probe describes a health check to be performed against a container to determine whether it is +// alive or ready to receive traffic. +type Probe struct { + // The action taken to determine the health of a container + Handler `json:",inline" protobuf:"bytes,1,opt,name=handler"` + // Number of seconds after the container has started before liveness probes are initiated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty" protobuf:"varint,2,opt,name=initialDelaySeconds"` + // Number of seconds after which the probe times out. + // Defaults to 1 second. Minimum value is 1. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + TimeoutSeconds int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,3,opt,name=timeoutSeconds"` + // How often (in seconds) to perform the probe. + // Default to 10 seconds. Minimum value is 1. + // +optional + PeriodSeconds int32 `json:"periodSeconds,omitempty" protobuf:"varint,4,opt,name=periodSeconds"` + // Minimum consecutive successes for the probe to be considered successful after having failed. + // Defaults to 1. Must be 1 for liveness. Minimum value is 1. + // +optional + SuccessThreshold int32 `json:"successThreshold,omitempty" protobuf:"varint,5,opt,name=successThreshold"` + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + // Defaults to 3. Minimum value is 1. + // +optional + FailureThreshold int32 `json:"failureThreshold,omitempty" protobuf:"varint,6,opt,name=failureThreshold"` +} + +// PullPolicy describes a policy for if/when to pull a container image +type PullPolicy string + +const ( + // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails. + PullAlways PullPolicy = "Always" + // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present + PullNever PullPolicy = "Never" + // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. + PullIfNotPresent PullPolicy = "IfNotPresent" +) + +// TerminationMessagePolicy describes how termination messages are retrieved from a container. +type TerminationMessagePolicy string + +const ( + // TerminationMessageReadFile is the default behavior and will set the container status message to + // the contents of the container's terminationMessagePath when the container exits. + TerminationMessageReadFile TerminationMessagePolicy = "File" + // TerminationMessageFallbackToLogsOnError will read the most recent contents of the container logs + // for the container status message when the container exits with an error and the + // terminationMessagePath has no contents. + TerminationMessageFallbackToLogsOnError TerminationMessagePolicy = "FallbackToLogsOnError" +) + +// Capability represent POSIX capabilities type +type Capability string + +// Adds and removes POSIX capabilities from running containers. +type Capabilities struct { + // Added capabilities + // +optional + Add []Capability `json:"add,omitempty" protobuf:"bytes,1,rep,name=add,casttype=Capability"` + // Removed capabilities + // +optional + Drop []Capability `json:"drop,omitempty" protobuf:"bytes,2,rep,name=drop,casttype=Capability"` +} + +// ResourceRequirements describes the compute resource requirements. +type ResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + Limits ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"` + // Requests describes the minimum amount of compute resources required. + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + // +optional + Requests ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"` +} + +const ( + // TerminationMessagePathDefault means the default path to capture the application termination message running in a container + TerminationMessagePathDefault string = "/dev/termination-log" +) + +// A single application container that you want to run within a pod. +type Container struct { + // Name of the container specified as a DNS_LABEL. + // Each container in a pod must have a unique name (DNS_LABEL). + // Cannot be updated. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Docker image name. + // More info: https://kubernetes.io/docs/concepts/containers/images + Image string `json:"image" protobuf:"bytes,2,opt,name=image"` + // Entrypoint array. Not executed within a shell. + // The docker image's ENTRYPOINT is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + Command []string `json:"command,omitempty" protobuf:"bytes,3,rep,name=command"` + // Arguments to the entrypoint. + // The docker image's CMD is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + // +optional + Args []string `json:"args,omitempty" protobuf:"bytes,4,rep,name=args"` + // Container's working directory. + // If not specified, the container runtime's default will be used, which + // might be configured in the container image. + // Cannot be updated. + // +optional + WorkingDir string `json:"workingDir,omitempty" protobuf:"bytes,5,opt,name=workingDir"` + // List of ports to expose from the container. Exposing a port here gives + // the system additional information about the network connections a + // container uses, but is primarily informational. Not specifying a port here + // DOES NOT prevent that port from being exposed. Any port which is + // listening on the default "0.0.0.0" address inside a container will be + // accessible from the network. + // Cannot be updated. + // +optional + // +patchMergeKey=containerPort + // +patchStrategy=merge + Ports []ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"` + // List of sources to populate environment variables in the container. + // The keys defined within a source must be a C_IDENTIFIER. All invalid keys + // will be reported as an event when the container is starting. When a key exists in multiple + // sources, the value associated with the last source will take precedence. + // Values defined by an Env with a duplicate key will take precedence. + // Cannot be updated. + // +optional + EnvFrom []EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,19,rep,name=envFrom"` + // List of environment variables to set in the container. + // Cannot be updated. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + Env []EnvVar `json:"env,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,7,rep,name=env"` + // Compute Resources required by this container. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + // +optional + Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,8,opt,name=resources"` + // Pod volumes to mount into the container's filesystem. + // Cannot be updated. + // +optional + // +patchMergeKey=mountPath + // +patchStrategy=merge + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"mountPath" protobuf:"bytes,9,rep,name=volumeMounts"` + // Periodic probe of container liveness. + // Container will be restarted if the probe fails. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,10,opt,name=livenessProbe"` + // Periodic probe of container service readiness. + // Container will be removed from service endpoints if the probe fails. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + // +optional + ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"` + // Actions that the management system should take in response to container lifecycle events. + // Cannot be updated. + // +optional + Lifecycle *Lifecycle `json:"lifecycle,omitempty" protobuf:"bytes,12,opt,name=lifecycle"` + // Optional: Path at which the file to which the container's termination message + // will be written is mounted into the container's filesystem. + // Message written is intended to be brief final status, such as an assertion failure message. + // Will be truncated by the node if greater than 4096 bytes. The total message length across + // all containers will be limited to 12kb. + // Defaults to /dev/termination-log. + // Cannot be updated. + // +optional + TerminationMessagePath string `json:"terminationMessagePath,omitempty" protobuf:"bytes,13,opt,name=terminationMessagePath"` + // Indicate how the termination message should be populated. File will use the contents of + // terminationMessagePath to populate the container status message on both success and failure. + // FallbackToLogsOnError will use the last chunk of container log output if the termination + // message file is empty and the container exited with an error. + // The log output is limited to 2048 bytes or 80 lines, whichever is smaller. + // Defaults to File. + // Cannot be updated. + // +optional + TerminationMessagePolicy TerminationMessagePolicy `json:"terminationMessagePolicy,omitempty" protobuf:"bytes,20,opt,name=terminationMessagePolicy,casttype=TerminationMessagePolicy"` + // Image pull policy. + // One of Always, Never, IfNotPresent. + // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + // +optional + ImagePullPolicy PullPolicy `json:"imagePullPolicy,omitempty" protobuf:"bytes,14,opt,name=imagePullPolicy,casttype=PullPolicy"` + // Security options the pod should run with. + // More info: https://kubernetes.io/docs/concepts/policy/security-context/ + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + SecurityContext *SecurityContext `json:"securityContext,omitempty" protobuf:"bytes,15,opt,name=securityContext"` + + // Variables for interactive containers, these have very specialized use-cases (e.g. debugging) + // and shouldn't be used for general purpose containers. + + // Whether this container should allocate a buffer for stdin in the container runtime. If this + // is not set, reads from stdin in the container will always result in EOF. + // Default is false. + // +optional + Stdin bool `json:"stdin,omitempty" protobuf:"varint,16,opt,name=stdin"` + // Whether the container runtime should close the stdin channel after it has been opened by + // a single attach. When stdin is true the stdin stream will remain open across multiple attach + // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + // first client attaches to stdin, and then remains open and accepts data until the client disconnects, + // at which time stdin is closed and remains closed until the container is restarted. If this + // flag is false, a container processes that reads from stdin will never receive an EOF. + // Default is false + // +optional + StdinOnce bool `json:"stdinOnce,omitempty" protobuf:"varint,17,opt,name=stdinOnce"` + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // Default is false. + // +optional + TTY bool `json:"tty,omitempty" protobuf:"varint,18,opt,name=tty"` +} + +// Handler defines a specific action that should be taken +// TODO: pass structured data to these actions, and document that data here. +type Handler struct { + // One and only one of the following should be specified. + // Exec specifies the action to take. + // +optional + Exec *ExecAction `json:"exec,omitempty" protobuf:"bytes,1,opt,name=exec"` + // HTTPGet specifies the http request to perform. + // +optional + HTTPGet *HTTPGetAction `json:"httpGet,omitempty" protobuf:"bytes,2,opt,name=httpGet"` + // TCPSocket specifies an action involving a TCP port. + // TCP hooks not yet supported + // TODO: implement a realistic TCP lifecycle hook + // +optional + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" protobuf:"bytes,3,opt,name=tcpSocket"` +} + +// Lifecycle describes actions that the management system should take in response to container lifecycle +// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks +// until the action is complete, unless the container process fails, in which case the handler is aborted. +type Lifecycle struct { + // PostStart is called immediately after a container is created. If the handler fails, + // the container is terminated and restarted according to its restart policy. + // Other management of the container blocks until the hook completes. + // More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + PostStart *Handler `json:"postStart,omitempty" protobuf:"bytes,1,opt,name=postStart"` + // PreStop is called immediately before a container is terminated. + // The container is terminated after the handler completes. + // The reason for termination is passed to the handler. + // Regardless of the outcome of the handler, the container is eventually terminated. + // Other management of the container blocks until the hook completes. + // More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + // +optional + PreStop *Handler `json:"preStop,omitempty" protobuf:"bytes,2,opt,name=preStop"` +} + +type ConditionStatus string + +// These are valid condition statuses. "ConditionTrue" means a resource is in the condition. +// "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes +// can't decide if a resource is in the condition or not. In the future, we could add other +// intermediate conditions, e.g. ConditionDegraded. +const ( + ConditionTrue ConditionStatus = "True" + ConditionFalse ConditionStatus = "False" + ConditionUnknown ConditionStatus = "Unknown" +) + +// ContainerStateWaiting is a waiting state of a container. +type ContainerStateWaiting struct { + // (brief) reason the container is not yet running. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,1,opt,name=reason"` + // Message regarding why the container is not yet running. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` +} + +// ContainerStateRunning is a running state of a container. +type ContainerStateRunning struct { + // Time at which the container was last (re-)started + // +optional + StartedAt metav1.Time `json:"startedAt,omitempty" protobuf:"bytes,1,opt,name=startedAt"` +} + +// ContainerStateTerminated is a terminated state of a container. +type ContainerStateTerminated struct { + // Exit status from the last termination of the container + ExitCode int32 `json:"exitCode" protobuf:"varint,1,opt,name=exitCode"` + // Signal from the last termination of the container + // +optional + Signal int32 `json:"signal,omitempty" protobuf:"varint,2,opt,name=signal"` + // (brief) reason from the last termination of the container + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + // Message regarding the last termination of the container + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + // Time at which previous execution of the container started + // +optional + StartedAt metav1.Time `json:"startedAt,omitempty" protobuf:"bytes,5,opt,name=startedAt"` + // Time at which the container last terminated + // +optional + FinishedAt metav1.Time `json:"finishedAt,omitempty" protobuf:"bytes,6,opt,name=finishedAt"` + // Container's ID in the format 'docker://' + // +optional + ContainerID string `json:"containerID,omitempty" protobuf:"bytes,7,opt,name=containerID"` +} + +// ContainerState holds a possible state of container. +// Only one of its members may be specified. +// If none of them is specified, the default one is ContainerStateWaiting. +type ContainerState struct { + // Details about a waiting container + // +optional + Waiting *ContainerStateWaiting `json:"waiting,omitempty" protobuf:"bytes,1,opt,name=waiting"` + // Details about a running container + // +optional + Running *ContainerStateRunning `json:"running,omitempty" protobuf:"bytes,2,opt,name=running"` + // Details about a terminated container + // +optional + Terminated *ContainerStateTerminated `json:"terminated,omitempty" protobuf:"bytes,3,opt,name=terminated"` +} + +// ContainerStatus contains details for the current status of this container. +type ContainerStatus struct { + // This must be a DNS_LABEL. Each container in a pod must have a unique name. + // Cannot be updated. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Details about the container's current condition. + // +optional + State ContainerState `json:"state,omitempty" protobuf:"bytes,2,opt,name=state"` + // Details about the container's last termination condition. + // +optional + LastTerminationState ContainerState `json:"lastState,omitempty" protobuf:"bytes,3,opt,name=lastState"` + // Specifies whether the container has passed its readiness probe. + Ready bool `json:"ready" protobuf:"varint,4,opt,name=ready"` + // The number of times the container has been restarted, currently based on + // the number of dead containers that have not yet been removed. + // Note that this is calculated from dead containers. But those containers are subject to + // garbage collection. This value will get capped at 5 by GC. + RestartCount int32 `json:"restartCount" protobuf:"varint,5,opt,name=restartCount"` + // The image the container is running. + // More info: https://kubernetes.io/docs/concepts/containers/images + // TODO(dchen1107): Which image the container is running with? + Image string `json:"image" protobuf:"bytes,6,opt,name=image"` + // ImageID of the container's image. + ImageID string `json:"imageID" protobuf:"bytes,7,opt,name=imageID"` + // Container's ID in the format 'docker://'. + // +optional + ContainerID string `json:"containerID,omitempty" protobuf:"bytes,8,opt,name=containerID"` +} + +// PodPhase is a label for the condition of a pod at the current time. +type PodPhase string + +// These are the valid statuses of pods. +const ( + // PodPending means the pod has been accepted by the system, but one or more of the containers + // has not been started. This includes time before being bound to a node, as well as time spent + // pulling images onto the host. + PodPending PodPhase = "Pending" + // PodRunning means the pod has been bound to a node and all of the containers have been started. + // At least one container is still running or is in the process of being restarted. + PodRunning PodPhase = "Running" + // PodSucceeded means that all containers in the pod have voluntarily terminated + // with a container exit code of 0, and the system is not going to restart any of these containers. + PodSucceeded PodPhase = "Succeeded" + // PodFailed means that all containers in the pod have terminated, and at least one container has + // terminated in a failure (exited with a non-zero exit code or was stopped by the system). + PodFailed PodPhase = "Failed" + // PodUnknown means that for some reason the state of the pod could not be obtained, typically due + // to an error in communicating with the host of the pod. + PodUnknown PodPhase = "Unknown" +) + +// PodConditionType is a valid value for PodCondition.Type +type PodConditionType string + +// These are valid conditions of pod. +const ( + // PodScheduled represents status of the scheduling process for this pod. + PodScheduled PodConditionType = "PodScheduled" + // PodReady means the pod is able to service requests and should be added to the + // load balancing pools of all matching services. + PodReady PodConditionType = "Ready" + // PodInitialized means that all init containers in the pod have started successfully. + PodInitialized PodConditionType = "Initialized" + // PodReasonUnschedulable reason in PodScheduled PodCondition means that the scheduler + // can't schedule the pod right now, for example due to insufficient resources in the cluster. + PodReasonUnschedulable = "Unschedulable" +) + +// PodCondition contains details for the current condition of this pod. +type PodCondition struct { + // Type is the type of the condition. + // Currently only Ready. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + Type PodConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PodConditionType"` + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we probed the condition. + // +optional + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // Unique, one-word, CamelCase reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human-readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// RestartPolicy describes how the container should be restarted. +// Only one of the following restart policies may be specified. +// If none of the following policies is specified, the default one +// is RestartPolicyAlways. +type RestartPolicy string + +const ( + RestartPolicyAlways RestartPolicy = "Always" + RestartPolicyOnFailure RestartPolicy = "OnFailure" + RestartPolicyNever RestartPolicy = "Never" +) + +// DNSPolicy defines how a pod's DNS will be configured. +type DNSPolicy string + +const ( + // DNSClusterFirstWithHostNet indicates that the pod should use cluster DNS + // first, if it is available, then fall back on the default + // (as determined by kubelet) DNS settings. + DNSClusterFirstWithHostNet DNSPolicy = "ClusterFirstWithHostNet" + + // DNSClusterFirst indicates that the pod should use cluster DNS + // first unless hostNetwork is true, if it is available, then + // fall back on the default (as determined by kubelet) DNS settings. + DNSClusterFirst DNSPolicy = "ClusterFirst" + + // DNSDefault indicates that the pod should use the default (as + // determined by kubelet) DNS settings. + DNSDefault DNSPolicy = "Default" + + DefaultTerminationGracePeriodSeconds = 30 +) + +// A node selector represents the union of the results of one or more label queries +// over a set of nodes; that is, it represents the OR of the selectors represented +// by the node selector terms. +type NodeSelector struct { + //Required. A list of node selector terms. The terms are ORed. + NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms" protobuf:"bytes,1,rep,name=nodeSelectorTerms"` +} + +// A null or empty node selector term matches no objects. +type NodeSelectorTerm struct { + //Required. A list of node selector requirements. The requirements are ANDed. + MatchExpressions []NodeSelectorRequirement `json:"matchExpressions" protobuf:"bytes,1,rep,name=matchExpressions"` +} + +// A node selector requirement is a selector that contains values, a key, and an operator +// that relates the key and values. +type NodeSelectorRequirement struct { + // The label key that the selector applies to. + // +patchMergeKey=key + // +patchStrategy=merge + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // Represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + Operator NodeSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=NodeSelectorOperator"` + // An array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. If the operator is Gt or Lt, the values + // array must have a single element, which will be interpreted as an integer. + // This array is replaced during a strategic merge patch. + // +optional + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A node selector operator is the set of operators that can be used in +// a node selector requirement. +type NodeSelectorOperator string + +const ( + NodeSelectorOpIn NodeSelectorOperator = "In" + NodeSelectorOpNotIn NodeSelectorOperator = "NotIn" + NodeSelectorOpExists NodeSelectorOperator = "Exists" + NodeSelectorOpDoesNotExist NodeSelectorOperator = "DoesNotExist" + NodeSelectorOpGt NodeSelectorOperator = "Gt" + NodeSelectorOpLt NodeSelectorOperator = "Lt" +) + +// Affinity is a group of affinity scheduling rules. +type Affinity struct { + // Describes node affinity scheduling rules for the pod. + // +optional + NodeAffinity *NodeAffinity `json:"nodeAffinity,omitempty" protobuf:"bytes,1,opt,name=nodeAffinity"` + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + // +optional + PodAffinity *PodAffinity `json:"podAffinity,omitempty" protobuf:"bytes,2,opt,name=podAffinity"` + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + // +optional + PodAntiAffinity *PodAntiAffinity `json:"podAntiAffinity,omitempty" protobuf:"bytes,3,opt,name=podAntiAffinity"` +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +type PodAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,rep,name=requiredDuringSchedulingIgnoredDuringExecution"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + // +optional + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"` +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +type PodAntiAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // +optional + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,rep,name=requiredDuringSchedulingIgnoredDuringExecution"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the anti-affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling anti-affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + // +optional + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"` +} + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) +type WeightedPodAffinityTerm struct { + // weight associated with matching the corresponding podAffinityTerm, + // in the range 1-100. + Weight int32 `json:"weight" protobuf:"varint,1,opt,name=weight"` + // Required. A pod affinity term, associated with the corresponding weight. + PodAffinityTerm PodAffinityTerm `json:"podAffinityTerm" protobuf:"bytes,2,opt,name=podAffinityTerm"` +} + +// Defines a set of pods (namely those matching the labelSelector +// relative to the given namespace(s)) that this pod should be +// co-located (affinity) or not co-located (anti-affinity) with, +// where co-located is defined as running on a node whose value of +// the label with key tches that of any node on which +// a pod of the set of pods is running +type PodAffinityTerm struct { + // A label query over a set of resources, in this case pods. + // +optional + LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // null or empty list means "this pod's namespace" + Namespaces []string `json:"namespaces,omitempty" protobuf:"bytes,2,rep,name=namespaces"` + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + // the labelSelector in the specified namespaces, where co-located is defined as running on a node + // whose value of the label with key topologyKey matches that of any node on which any of the + // selected pods is running. + // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" + // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); + // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. + // +optional + TopologyKey string `json:"topologyKey,omitempty" protobuf:"bytes,3,opt,name=topologyKey"` +} + +// Node affinity is a group of node affinity scheduling rules. +type NodeAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // will try to eventually evict the pod from its node. + // +optional + // RequiredDuringSchedulingRequiredDuringExecution *NodeSelector `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // may or may not try to eventually evict the pod from its node. + // +optional + RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,opt,name=requiredDuringSchedulingIgnoredDuringExecution"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node matches the corresponding matchExpressions; the + // node(s) with the highest sum are the most preferred. + // +optional + PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"` +} + +// An empty preferred scheduling term matches all objects with implicit weight 0 +// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +type PreferredSchedulingTerm struct { + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + Weight int32 `json:"weight" protobuf:"varint,1,opt,name=weight"` + // A node selector term, associated with the corresponding weight. + Preference NodeSelectorTerm `json:"preference" protobuf:"bytes,2,opt,name=preference"` +} + +// The node this Taint is attached to has the effect "effect" on +// any pod that that does not tolerate the Taint. +type Taint struct { + // Required. The taint key to be applied to a node. + // +patchMergeKey=key + // +patchStrategy=merge + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // Required. The taint value corresponding to the taint key. + // +optional + Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule, PreferNoSchedule and NoExecute. + Effect TaintEffect `json:"effect" protobuf:"bytes,3,opt,name=effect,casttype=TaintEffect"` + // TimeAdded represents the time at which the taint was added. + // It is only written for NoExecute taints. + // +optional + TimeAdded metav1.Time `json:"timeAdded,omitempty" protobuf:"bytes,4,opt,name=timeAdded"` +} + +type TaintEffect string + +const ( + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // but allow all pods submitted to Kubelet without going through the scheduler + // to start, and allow all already-running pods to continue running. + // Enforced by the scheduler. + TaintEffectNoSchedule TaintEffect = "NoSchedule" + // Like TaintEffectNoSchedule, but the scheduler tries not to schedule + // new pods onto the node, rather than prohibiting new pods from scheduling + // onto the node entirely. Enforced by the scheduler. + TaintEffectPreferNoSchedule TaintEffect = "PreferNoSchedule" + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // Like TaintEffectNoSchedule, but additionally do not allow pods submitted to + // Kubelet without going through the scheduler to start. + // Enforced by Kubelet and the scheduler. + // TaintEffectNoScheduleNoAdmit TaintEffect = "NoScheduleNoAdmit" + // Evict any already-running pods that do not tolerate the taint. + // Currently enforced by NodeController. + TaintEffectNoExecute TaintEffect = "NoExecute" +) + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple using the matching operator . +type Toleration struct { + // Key is the taint key that the toleration applies to. Empty means match all taint keys. + // If the key is empty, operator must be Exists; this combination means to match all values and all keys. + // +optional + // +patchMergeKey=key + // +patchStrategy=merge + Key string `json:"key,omitempty" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // Operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a pod can + // tolerate all taints of a particular category. + // +optional + Operator TolerationOperator `json:"operator,omitempty" protobuf:"bytes,2,opt,name=operator,casttype=TolerationOperator"` + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value should be empty, otherwise just a regular string. + // +optional + Value string `json:"value,omitempty" protobuf:"bytes,3,opt,name=value"` + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + // +optional + Effect TaintEffect `json:"effect,omitempty" protobuf:"bytes,4,opt,name=effect,casttype=TaintEffect"` + // TolerationSeconds represents the period of time the toleration (which must be + // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + // it is not set, which means tolerate the taint forever (do not evict). Zero and + // negative values will be treated as 0 (evict immediately) by the system. + // +optional + TolerationSeconds *int64 `json:"tolerationSeconds,omitempty" protobuf:"varint,5,opt,name=tolerationSeconds"` +} + +// A toleration operator is the set of operators that can be used in a toleration. +type TolerationOperator string + +const ( + TolerationOpExists TolerationOperator = "Exists" + TolerationOpEqual TolerationOperator = "Equal" +) + +const ( + // This annotation key will be used to contain an array of v1 JSON encoded Containers + // for init containers. The annotation will be placed into the internal type and cleared. + // This key is only recognized by version >= 1.4. + PodInitContainersBetaAnnotationKey = "pod.beta.kubernetes.io/init-containers" + // This annotation key will be used to contain an array of v1 JSON encoded Containers + // for init containers. The annotation will be placed into the internal type and cleared. + // This key is recognized by version >= 1.3. For version 1.4 code, this key + // will have its value copied to the beta key. + PodInitContainersAnnotationKey = "pod.alpha.kubernetes.io/init-containers" + // This annotation key will be used to contain an array of v1 JSON encoded + // ContainerStatuses for init containers. The annotation will be placed into the internal + // type and cleared. This key is only recognized by version >= 1.4. + PodInitContainerStatusesBetaAnnotationKey = "pod.beta.kubernetes.io/init-container-statuses" + // This annotation key will be used to contain an array of v1 JSON encoded + // ContainerStatuses for init containers. The annotation will be placed into the internal + // type and cleared. This key is recognized by version >= 1.3. For version 1.4 code, + // this key will have its value copied to the beta key. + PodInitContainerStatusesAnnotationKey = "pod.alpha.kubernetes.io/init-container-statuses" +) + +// PodSpec is a description of a pod. +type PodSpec struct { + // List of volumes that can be mounted by containers belonging to the pod. + // More info: https://kubernetes.io/docs/concepts/storage/volumes + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + Volumes []Volume `json:"volumes,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=volumes"` + // List of initialization containers belonging to the pod. + // Init containers are executed in order prior to containers being started. If any + // init container fails, the pod is considered to have failed and is handled according + // to its restartPolicy. The name for an init container or normal container must be + // unique among all containers. + // Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. + // The resourceRequirements of an init container are taken into account during scheduling + // by finding the highest request/limit for each resource type, and then using the max of + // of that value or the sum of the normal containers. Limits are applied to init containers + // in a similar fashion. + // Init containers cannot currently be added or removed. + // Cannot be updated. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + // +patchMergeKey=name + // +patchStrategy=merge + InitContainers []Container `json:"initContainers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,20,rep,name=initContainers"` + // List of containers belonging to the pod. + // Containers cannot currently be added or removed. + // There must be at least one container in a Pod. + // Cannot be updated. + // +patchMergeKey=name + // +patchStrategy=merge + Containers []Container `json:"containers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=containers"` + // Restart policy for all containers within the pod. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + // +optional + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" protobuf:"bytes,3,opt,name=restartPolicy,casttype=RestartPolicy"` + // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. + // Value must be non-negative integer. The value zero indicates delete immediately. + // If this value is nil, the default grace period will be used instead. + // The grace period is the duration in seconds after the processes running in the pod are sent + // a termination signal and the time when the processes are forcibly halted with a kill signal. + // Set this value longer than the expected cleanup time for your process. + // Defaults to 30 seconds. + // +optional + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty" protobuf:"varint,4,opt,name=terminationGracePeriodSeconds"` + // Optional duration in seconds the pod may be active on the node relative to + // StartTime before the system will actively try to mark it failed and kill associated containers. + // Value must be a positive integer. + // +optional + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,5,opt,name=activeDeadlineSeconds"` + // Set DNS policy for containers within the pod. + // One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. + // Defaults to "ClusterFirst". + // To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. + // +optional + DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty" protobuf:"bytes,6,opt,name=dnsPolicy,casttype=DNSPolicy"` + // NodeSelector is a selector which must be true for the pod to fit on a node. + // Selector which must match a node's labels for the pod to be scheduled on that node. + // More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + // +optional + NodeSelector map[string]string `json:"nodeSelector,omitempty" protobuf:"bytes,7,rep,name=nodeSelector"` + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + // +optional + ServiceAccountName string `json:"serviceAccountName,omitempty" protobuf:"bytes,8,opt,name=serviceAccountName"` + // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + // Deprecated: Use serviceAccountName instead. + // +k8s:conversion-gen=false + // +optional + DeprecatedServiceAccount string `json:"serviceAccount,omitempty" protobuf:"bytes,9,opt,name=serviceAccount"` + // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted. + // +optional + AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,21,opt,name=automountServiceAccountToken"` + + // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, + // the scheduler simply schedules this pod onto that node, assuming that it fits resource + // requirements. + // +optional + NodeName string `json:"nodeName,omitempty" protobuf:"bytes,10,opt,name=nodeName"` + // Host networking requested for this pod. Use the host's network namespace. + // If this option is set, the ports that will be used must be specified. + // Default to false. + // +k8s:conversion-gen=false + // +optional + HostNetwork bool `json:"hostNetwork,omitempty" protobuf:"varint,11,opt,name=hostNetwork"` + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + HostPID bool `json:"hostPID,omitempty" protobuf:"varint,12,opt,name=hostPID"` + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + // +optional + HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,13,opt,name=hostIPC"` + // SecurityContext holds pod-level security attributes and common container settings. + // Optional: Defaults to empty. See type description for default values of each field. + // +optional + SecurityContext *PodSecurityContext `json:"securityContext,omitempty" protobuf:"bytes,14,opt,name=securityContext"` + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // If specified, these secrets will be passed to individual puller implementations for them to use. For example, + // in the case of docker, only DockerConfig type secrets are honored. + // More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,15,rep,name=imagePullSecrets"` + // Specifies the hostname of the Pod + // If not specified, the pod's hostname will be set to a system-defined value. + // +optional + Hostname string `json:"hostname,omitempty" protobuf:"bytes,16,opt,name=hostname"` + // If specified, the fully qualified Pod hostname will be "...svc.". + // If not specified, the pod will not have a domainname at all. + // +optional + Subdomain string `json:"subdomain,omitempty" protobuf:"bytes,17,opt,name=subdomain"` + // If specified, the pod's scheduling constraints + // +optional + Affinity *Affinity `json:"affinity,omitempty" protobuf:"bytes,18,opt,name=affinity"` + // If specified, the pod will be dispatched by specified scheduler. + // If not specified, the pod will be dispatched by default scheduler. + // +optional + SchedulerName string `json:"schedulerName,omitempty" protobuf:"bytes,19,opt,name=schedulerName"` + // If specified, the pod's tolerations. + // +optional + Tolerations []Toleration `json:"tolerations,omitempty" protobuf:"bytes,22,opt,name=tolerations"` + // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts + // file if specified. This is only valid for non-hostNetwork pods. + // +optional + // +patchMergeKey=ip + // +patchStrategy=merge + HostAliases []HostAlias `json:"hostAliases,omitempty" patchStrategy:"merge" patchMergeKey:"ip" protobuf:"bytes,23,rep,name=hostAliases"` +} + +// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the +// pod's hosts file. +type HostAlias struct { + // IP address of the host file entry. + IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` + // Hostnames for the above IP address. + Hostnames []string `json:"hostnames,omitempty" protobuf:"bytes,2,rep,name=hostnames"` +} + +// PodSecurityContext holds pod-level security attributes and common container settings. +// Some fields are also present in container.securityContext. Field values of +// container.securityContext take precedence over field values of PodSecurityContext. +type PodSecurityContext struct { + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + // +optional + SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,1,opt,name=seLinuxOptions"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + // +optional + RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,2,opt,name=runAsUser"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,3,opt,name=runAsNonRoot"` + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID. If unspecified, no groups will be added to + // any container. + // +optional + SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,4,rep,name=supplementalGroups"` + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // +optional + FSGroup *int64 `json:"fsGroup,omitempty" protobuf:"varint,5,opt,name=fsGroup"` +} + +// PodQOSClass defines the supported qos classes of Pods. +type PodQOSClass string + +const ( + // PodQOSGuaranteed is the Guaranteed qos class. + PodQOSGuaranteed PodQOSClass = "Guaranteed" + // PodQOSBurstable is the Burstable qos class. + PodQOSBurstable PodQOSClass = "Burstable" + // PodQOSBestEffort is the BestEffort qos class. + PodQOSBestEffort PodQOSClass = "BestEffort" +) + +// PodStatus represents information about the status of a pod. Status may trail the actual +// state of a system. +type PodStatus struct { + // Current condition of the pod. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase + // +optional + Phase PodPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PodPhase"` + // Current service state of pod. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []PodCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` + // A human readable message indicating details about why the pod is in this condition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // A brief CamelCase message indicating details about why the pod is in this state. + // e.g. 'OutOfDisk' + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + + // IP address of the host to which the pod is assigned. Empty if not yet scheduled. + // +optional + HostIP string `json:"hostIP,omitempty" protobuf:"bytes,5,opt,name=hostIP"` + // IP address allocated to the pod. Routable at least within the cluster. + // Empty if not yet allocated. + // +optional + PodIP string `json:"podIP,omitempty" protobuf:"bytes,6,opt,name=podIP"` + + // RFC 3339 date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the pod. + // +optional + StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,7,opt,name=startTime"` + + // The list has one entry per init container in the manifest. The most recent successful + // init container will have ready = true, the most recently started container will have + // startTime set. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + InitContainerStatuses []ContainerStatus `json:"initContainerStatuses,omitempty" protobuf:"bytes,10,rep,name=initContainerStatuses"` + + // The list has one entry per container in the manifest. Each entry is currently the output + // of `docker inspect`. + // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + // +optional + ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty" protobuf:"bytes,8,rep,name=containerStatuses"` + // The Quality of Service (QOS) classification assigned to the pod based on resource requirements + // See PodQOSClass type for available QOS classes + // More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md + // +optional + QOSClass PodQOSClass `json:"qosClass,omitempty" protobuf:"bytes,9,rep,name=qosClass"` +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +type PodStatusResult struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status PodStatus `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` +} + +// +genclient=true + +// Pod is a collection of containers that can run on a host. This resource is created +// by clients and scheduled onto hosts. +type Pod struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status PodStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodList is a list of Pods. +type PodList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of pods. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md + Items []Pod `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// PodTemplateSpec describes the data a pod should have when created from a template +type PodTemplateSpec struct { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the pod. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +genclient=true + +// PodTemplate describes a template for creating copies of a predefined pod. +type PodTemplate struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Template defines the pods that will be created from this pod template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Template PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` +} + +// PodTemplateList is a list of PodTemplates. +type PodTemplateList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of pod templates + Items []PodTemplate `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ReplicationControllerSpec is the specification of a replication controller. +type ReplicationControllerSpec struct { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // Selector is a label query over pods that should match the Replicas count. + // If Selector is empty, it is defaulted to the labels present on the Pod template. + // Label keys and values that must match in order to be controlled by this replication + // controller, if empty defaulted to labels on Pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // TemplateRef is a reference to an object that describes the pod that will be created if + // insufficient replicas are detected. + // Reference to an object that describes the pod that will be created if insufficient replicas are detected. + // +optional + // TemplateRef *ObjectReference `json:"templateRef,omitempty"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. This takes precedence over a TemplateRef. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + Template *PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,3,opt,name=template"` +} + +// ReplicationControllerStatus represents the current status of a replication +// controller. +type ReplicationControllerStatus struct { + // Replicas is the most recently oberved number of replicas. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + // +optional + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replication controller. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // The number of available replicas (ready for at least minReadySeconds) for this replication controller. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed replication controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` + + // Represents the latest available observations of a replication controller's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ReplicationControllerCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` +} + +type ReplicationControllerConditionType string + +// These are valid conditions of a replication controller. +const ( + // ReplicationControllerReplicaFailure is added in a replication controller when one of its pods + // fails to be created due to insufficient quota, limit ranges, pod security policy, node selectors, + // etc. or deleted due to kubelet being down or finalizers are failing. + ReplicationControllerReplicaFailure ReplicationControllerConditionType = "ReplicaFailure" +) + +// ReplicationControllerCondition describes the state of a replication controller at a certain point. +type ReplicationControllerCondition struct { + // Type of replication controller condition. + Type ReplicationControllerConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ReplicationControllerConditionType"` + // Status of the condition, one of True, False, Unknown. + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +genclient=true + +// ReplicationController represents the configuration of a replication controller. +type ReplicationController struct { + metav1.TypeMeta `json:",inline"` + + // If the Labels of a ReplicationController are empty, they are defaulted to + // be the same as the Pod(s) that the replication controller manages. + // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the replication controller. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec ReplicationControllerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the most recently observed status of the replication controller. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ReplicationControllerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ReplicationControllerList is a collection of replication controllers. +type ReplicationControllerList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of replication controllers. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + Items []ReplicationController `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Session Affinity Type string +type ServiceAffinity string + +const ( + // ServiceAffinityClientIP is the Client IP based. + ServiceAffinityClientIP ServiceAffinity = "ClientIP" + + // ServiceAffinityNone - no session affinity. + ServiceAffinityNone ServiceAffinity = "None" +) + +// Service Type string describes ingress methods for a service +type ServiceType string + +const ( + // ServiceTypeClusterIP means a service will only be accessible inside the + // cluster, via the cluster IP. + ServiceTypeClusterIP ServiceType = "ClusterIP" + + // ServiceTypeNodePort means a service will be exposed on one port of + // every node, in addition to 'ClusterIP' type. + ServiceTypeNodePort ServiceType = "NodePort" + + // ServiceTypeLoadBalancer means a service will be exposed via an + // external load balancer (if the cloud provider supports it), in addition + // to 'NodePort' type. + ServiceTypeLoadBalancer ServiceType = "LoadBalancer" + + // ServiceTypeExternalName means a service consists of only a reference to + // an external name that kubedns or equivalent will return as a CNAME + // record, with no exposing or proxying of any pods involved. + ServiceTypeExternalName ServiceType = "ExternalName" +) + +// Service External Traffic Policy Type string +type ServiceExternalTrafficPolicyType string + +const ( + // ServiceExternalTrafficPolicyTypeLocal specifies node-local endpoints behavior. + ServiceExternalTrafficPolicyTypeLocal ServiceExternalTrafficPolicyType = "Local" + // ServiceExternalTrafficPolicyTypeCluster specifies node-global (legacy) behavior. + ServiceExternalTrafficPolicyTypeCluster ServiceExternalTrafficPolicyType = "Cluster" +) + +// ServiceStatus represents the current status of a service. +type ServiceStatus struct { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + // +optional + LoadBalancer LoadBalancerStatus `json:"loadBalancer,omitempty" protobuf:"bytes,1,opt,name=loadBalancer"` +} + +// LoadBalancerStatus represents the status of a load-balancer. +type LoadBalancerStatus struct { + // Ingress is a list containing ingress points for the load-balancer. + // Traffic intended for the service should be sent to these ingress points. + // +optional + Ingress []LoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,1,rep,name=ingress"` +} + +// LoadBalancerIngress represents the status of a load-balancer ingress point: +// traffic intended for the service should be sent to an ingress point. +type LoadBalancerIngress struct { + // IP is set for load-balancer ingress points that are IP based + // (typically GCE or OpenStack load-balancers) + // +optional + IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + // +optional + Hostname string `json:"hostname,omitempty" protobuf:"bytes,2,opt,name=hostname"` +} + +// ServiceSpec describes the attributes that a user creates on a service. +type ServiceSpec struct { + // The list of ports that are exposed by this service. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +patchMergeKey=port + // +patchStrategy=merge + Ports []ServicePort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"port" protobuf:"bytes,1,rep,name=ports"` + + // Route service traffic to pods with label keys and values matching this + // selector. If empty or not present, the service is assumed to have an + // external process managing its endpoints, which Kubernetes will not + // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. + // Ignored if type is ExternalName. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/ + // +optional + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // clusterIP is the IP address of the service and is usually assigned + // randomly by the master. If an address is specified manually and is not in + // use by others, it will be allocated to the service; otherwise, creation + // of the service will fail. This field can not be changed through updates. + // Valid values are "None", empty string (""), or a valid IP address. "None" + // can be specified for headless services when proxying is not required. + // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if + // type is ExternalName. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + ClusterIP string `json:"clusterIP,omitempty" protobuf:"bytes,3,opt,name=clusterIP"` + + // type determines how the Service is exposed. Defaults to ClusterIP. Valid + // options are ExternalName, ClusterIP, NodePort, and LoadBalancer. + // "ExternalName" maps to the specified externalName. + // "ClusterIP" allocates a cluster-internal IP address for load-balancing to + // endpoints. Endpoints are determined by the selector or if that is not + // specified, by manual construction of an Endpoints object. If clusterIP is + // "None", no virtual IP is allocated and the endpoints are published as a + // set of endpoints rather than a stable IP. + // "NodePort" builds on ClusterIP and allocates a port on every node which + // routes to the clusterIP. + // "LoadBalancer" builds on NodePort and creates an + // external load-balancer (if supported in the current cloud) which routes + // to the clusterIP. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types + // +optional + Type ServiceType `json:"type,omitempty" protobuf:"bytes,4,opt,name=type,casttype=ServiceType"` + + // externalIPs is a list of IP addresses for which nodes in the cluster + // will also accept traffic for this service. These IPs are not managed by + // Kubernetes. The user is responsible for ensuring that traffic arrives + // at a node with this IP. A common example is external load-balancers + // that are not part of the Kubernetes system. + // +optional + ExternalIPs []string `json:"externalIPs,omitempty" protobuf:"bytes,5,rep,name=externalIPs"` + + // Supports "ClientIP" and "None". Used to maintain session affinity. + // Enable client IP based session affinity. + // Must be ClientIP or None. + // Defaults to None. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + // +optional + SessionAffinity ServiceAffinity `json:"sessionAffinity,omitempty" protobuf:"bytes,7,opt,name=sessionAffinity,casttype=ServiceAffinity"` + + // Only applies to Service Type: LoadBalancer + // LoadBalancer will get created with the IP specified in this field. + // This feature depends on whether the underlying cloud-provider supports specifying + // the loadBalancerIP when a load balancer is created. + // This field will be ignored if the cloud-provider does not support the feature. + // +optional + LoadBalancerIP string `json:"loadBalancerIP,omitempty" protobuf:"bytes,8,opt,name=loadBalancerIP"` + + // If specified and supported by the platform, this will restrict traffic through the cloud-provider + // load-balancer will be restricted to the specified client IPs. This field will be ignored if the + // cloud-provider does not support the feature." + // More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/ + // +optional + LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty" protobuf:"bytes,9,opt,name=loadBalancerSourceRanges"` + + // externalName is the external reference that kubedns or equivalent will + // return as a CNAME record for this service. No proxying will be involved. + // Must be a valid DNS name and requires Type to be ExternalName. + // +optional + ExternalName string `json:"externalName,omitempty" protobuf:"bytes,10,opt,name=externalName"` + + // externalTrafficPolicy denotes if this Service desires to route external + // traffic to node-local or cluster-wide endpoints. "Local" preserves the + // client source IP and avoids a second hop for LoadBalancer and Nodeport + // type services, but risks potentially imbalanced traffic spreading. + // "Cluster" obscures the client source IP and may cause a second hop to + // another node, but should have good overall load-spreading. + // +optional + ExternalTrafficPolicy ServiceExternalTrafficPolicyType `json:"externalTrafficPolicy,omitempty" protobuf:"bytes,11,opt,name=externalTrafficPolicy"` + + // healthCheckNodePort specifies the healthcheck nodePort for the service. + // If not specified, HealthCheckNodePort is created by the service api + // backend with the allocated nodePort. Will use user-specified nodePort value + // if specified by the client. Only effects when Type is set to LoadBalancer + // and ExternalTrafficPolicy is set to Local. + // +optional + HealthCheckNodePort int32 `json:"healthCheckNodePort,omitempty" protobuf:"bytes,12,opt,name=healthCheckNodePort"` +} + +// ServicePort contains information on service's port. +type ServicePort struct { + // The name of this port within the service. This must be a DNS_LABEL. + // All ports within a ServiceSpec must have unique names. This maps to + // the 'Name' field in EndpointPort objects. + // Optional if only one ServicePort is defined on this service. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // The IP protocol for this port. Supports "TCP" and "UDP". + // Default is TCP. + // +optional + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,2,opt,name=protocol,casttype=Protocol"` + + // The port that will be exposed by this service. + Port int32 `json:"port" protobuf:"varint,3,opt,name=port"` + + // Number or name of the port to access on the pods targeted by the service. + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + // If this is a string, it will be looked up as a named port in the + // target Pod's container ports. If this is not specified, the value + // of the 'port' field is used (an identity map). + // This field is ignored for services with clusterIP=None, and should be + // omitted or set equal to the 'port' field. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + // +optional + TargetPort intstr.IntOrString `json:"targetPort,omitempty" protobuf:"bytes,4,opt,name=targetPort"` + + // The port on each node on which this service is exposed when type=NodePort or LoadBalancer. + // Usually assigned by the system. If specified, it will be allocated to the service + // if unused or else creation of the service will fail. + // Default is to auto-allocate a port if the ServiceType of this Service requires one. + // More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + // +optional + NodePort int32 `json:"nodePort,omitempty" protobuf:"varint,5,opt,name=nodePort"` +} + +// +genclient=true + +// Service is a named abstraction of software service (for example, mysql) consisting of local port +// (for example 3306) that the proxy listens on, and the selector that determines which pods +// will answer requests sent through the proxy. +type Service struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of a service. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec ServiceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the service. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ServiceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +const ( + // ClusterIPNone - do not assign a cluster IP + // no proxying required and no environment variables should be created for pods + ClusterIPNone = "None" +) + +// ServiceList holds a list of services. +type ServiceList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of services + Items []Service `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// ServiceAccount binds together: +// * a name, understood by users, and perhaps by peripheral systems, for an identity +// * a principal that can be authenticated and authorized +// * a set of secrets +type ServiceAccount struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + Secrets []ObjectReference `json:"secrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=secrets"` + + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images + // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets + // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. + // More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod + // +optional + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" protobuf:"bytes,3,rep,name=imagePullSecrets"` + + // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. + // Can be overridden at the pod level. + // +optional + AutomountServiceAccountToken *bool `json:"automountServiceAccountToken,omitempty" protobuf:"varint,4,opt,name=automountServiceAccountToken"` +} + +// ServiceAccountList is a list of ServiceAccount objects +type ServiceAccountList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ServiceAccounts. + // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + Items []ServiceAccount `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Endpoints is a collection of endpoints that implement the actual service. Example: +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] +type Endpoints struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The set of all endpoints is the union of all subsets. Addresses are placed into + // subsets according to the IPs they share. A single address with multiple ports, + // some of which are ready and some of which are not (because they come from + // different containers) will result in the address being displayed in different + // subsets for the different ports. No address will appear in both Addresses and + // NotReadyAddresses in the same subset. + // Sets of addresses and ports that comprise a service. + Subsets []EndpointSubset `json:"subsets" protobuf:"bytes,2,rep,name=subsets"` +} + +// EndpointSubset is a group of addresses with a common set of ports. The +// expanded set of endpoints is the Cartesian product of Addresses x Ports. +// For example, given: +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// The resulting set of endpoints can be viewed as: +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +type EndpointSubset struct { + // IP addresses which offer the related ports that are marked as ready. These endpoints + // should be considered safe for load balancers and clients to utilize. + // +optional + Addresses []EndpointAddress `json:"addresses,omitempty" protobuf:"bytes,1,rep,name=addresses"` + // IP addresses which offer the related ports but are not currently marked as ready + // because they have not yet finished starting, have recently failed a readiness check, + // or have recently failed a liveness check. + // +optional + NotReadyAddresses []EndpointAddress `json:"notReadyAddresses,omitempty" protobuf:"bytes,2,rep,name=notReadyAddresses"` + // Port numbers available on the related IP addresses. + // +optional + Ports []EndpointPort `json:"ports,omitempty" protobuf:"bytes,3,rep,name=ports"` +} + +// EndpointAddress is a tuple that describes single IP address. +type EndpointAddress struct { + // The IP of this endpoint. + // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), + // or link-local multicast ((224.0.0.0/24). + // IPv6 is also accepted but not fully supported on all platforms. Also, certain + // kubernetes components, like kube-proxy, are not IPv6 ready. + // TODO: This should allow hostname or IP, See #4447. + IP string `json:"ip" protobuf:"bytes,1,opt,name=ip"` + // The Hostname of this endpoint + // +optional + Hostname string `json:"hostname,omitempty" protobuf:"bytes,3,opt,name=hostname"` + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + // +optional + NodeName *string `json:"nodeName,omitempty" protobuf:"bytes,4,opt,name=nodeName"` + // Reference to object providing the endpoint. + // +optional + TargetRef *ObjectReference `json:"targetRef,omitempty" protobuf:"bytes,2,opt,name=targetRef"` +} + +// EndpointPort is a tuple that describes a single port. +type EndpointPort struct { + // The name of this port (corresponds to ServicePort.Name). + // Must be a DNS_LABEL. + // Optional only if one port is defined. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // The port number of the endpoint. + Port int32 `json:"port" protobuf:"varint,2,opt,name=port"` + + // The IP protocol for this port. + // Must be UDP or TCP. + // Default is TCP. + // +optional + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,3,opt,name=protocol,casttype=Protocol"` +} + +// EndpointsList is a list of endpoints. +type EndpointsList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of endpoints. + Items []Endpoints `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// NodeSpec describes the attributes that a node is created with. +type NodeSpec struct { + // PodCIDR represents the pod IP range assigned to the node. + // +optional + PodCIDR string `json:"podCIDR,omitempty" protobuf:"bytes,1,opt,name=podCIDR"` + // External ID of the node assigned by some machine database (e.g. a cloud provider). + // Deprecated. + // +optional + ExternalID string `json:"externalID,omitempty" protobuf:"bytes,2,opt,name=externalID"` + // ID of the node assigned by the cloud provider in the format: :// + // +optional + ProviderID string `json:"providerID,omitempty" protobuf:"bytes,3,opt,name=providerID"` + // Unschedulable controls node schedulability of new pods. By default, node is schedulable. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration + // +optional + Unschedulable bool `json:"unschedulable,omitempty" protobuf:"varint,4,opt,name=unschedulable"` + // If specified, the node's taints. + // +optional + Taints []Taint `json:"taints,omitempty" protobuf:"bytes,5,opt,name=taints"` +} + +// DaemonEndpoint contains information about a single Daemon endpoint. +type DaemonEndpoint struct { + /* + The port tag was not properly in quotes in earlier releases, so it must be + uppercased for backwards compat (since it was falling back to var name of + 'Port'). + */ + + // Port number of the given endpoint. + Port int32 `json:"Port" protobuf:"varint,1,opt,name=Port"` +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +type NodeDaemonEndpoints struct { + // Endpoint on which Kubelet is listening. + // +optional + KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty" protobuf:"bytes,1,opt,name=kubeletEndpoint"` +} + +// NodeSystemInfo is a set of ids/uuids to uniquely identify the node. +type NodeSystemInfo struct { + // MachineID reported by the node. For unique machine identification + // in the cluster this field is preferred. Learn more from man(5) + // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html + MachineID string `json:"machineID" protobuf:"bytes,1,opt,name=machineID"` + // SystemUUID reported by the node. For unique machine identification + // MachineID is preferred. This field is specific to Red Hat hosts + // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html + SystemUUID string `json:"systemUUID" protobuf:"bytes,2,opt,name=systemUUID"` + // Boot ID reported by the node. + BootID string `json:"bootID" protobuf:"bytes,3,opt,name=bootID"` + // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). + KernelVersion string `json:"kernelVersion" protobuf:"bytes,4,opt,name=kernelVersion"` + // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). + OSImage string `json:"osImage" protobuf:"bytes,5,opt,name=osImage"` + // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0). + ContainerRuntimeVersion string `json:"containerRuntimeVersion" protobuf:"bytes,6,opt,name=containerRuntimeVersion"` + // Kubelet Version reported by the node. + KubeletVersion string `json:"kubeletVersion" protobuf:"bytes,7,opt,name=kubeletVersion"` + // KubeProxy Version reported by the node. + KubeProxyVersion string `json:"kubeProxyVersion" protobuf:"bytes,8,opt,name=kubeProxyVersion"` + // The Operating System reported by the node + OperatingSystem string `json:"operatingSystem" protobuf:"bytes,9,opt,name=operatingSystem"` + // The Architecture reported by the node + Architecture string `json:"architecture" protobuf:"bytes,10,opt,name=architecture"` +} + +// NodeStatus is information about the current status of a node. +type NodeStatus struct { + // Capacity represents the total resources of a node. + // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity + // +optional + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` + // Allocatable represents the resources of a node that are available for scheduling. + // Defaults to Capacity. + // +optional + Allocatable ResourceList `json:"allocatable,omitempty" protobuf:"bytes,2,rep,name=allocatable,casttype=ResourceList,castkey=ResourceName"` + // NodePhase is the recently observed lifecycle phase of the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#phase + // The field is never populated, and now is deprecated. + // +optional + Phase NodePhase `json:"phase,omitempty" protobuf:"bytes,3,opt,name=phase,casttype=NodePhase"` + // Conditions is an array of current observed node conditions. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#condition + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []NodeCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,4,rep,name=conditions"` + // List of addresses reachable to the node. + // Queried from cloud provider, if available. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Addresses []NodeAddress `json:"addresses,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,5,rep,name=addresses"` + // Endpoints of daemons running on the Node. + // +optional + DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty" protobuf:"bytes,6,opt,name=daemonEndpoints"` + // Set of ids/uuids to uniquely identify the node. + // More info: https://kubernetes.io/docs/concepts/nodes/node/#info + // +optional + NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty" protobuf:"bytes,7,opt,name=nodeInfo"` + // List of container images on this node + // +optional + Images []ContainerImage `json:"images,omitempty" protobuf:"bytes,8,rep,name=images"` + // List of attachable volumes in use (mounted) by the node. + // +optional + VolumesInUse []UniqueVolumeName `json:"volumesInUse,omitempty" protobuf:"bytes,9,rep,name=volumesInUse"` + // List of volumes that are attached to the node. + // +optional + VolumesAttached []AttachedVolume `json:"volumesAttached,omitempty" protobuf:"bytes,10,rep,name=volumesAttached"` +} + +type UniqueVolumeName string + +// AttachedVolume describes a volume attached to a node +type AttachedVolume struct { + // Name of the attached volume + Name UniqueVolumeName `json:"name" protobuf:"bytes,1,rep,name=name"` + + // DevicePath represents the device path where the volume should be available + DevicePath string `json:"devicePath" protobuf:"bytes,2,rep,name=devicePath"` +} + +// AvoidPods describes pods that should avoid this node. This is the value for a +// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and +// will eventually become a field of NodeStatus. +type AvoidPods struct { + // Bounded-sized list of signatures of pods that should avoid this node, sorted + // in timestamp order from oldest to newest. Size of the slice is unspecified. + // +optional + PreferAvoidPods []PreferAvoidPodsEntry `json:"preferAvoidPods,omitempty" protobuf:"bytes,1,rep,name=preferAvoidPods"` +} + +// Describes a class of pods that should avoid this node. +type PreferAvoidPodsEntry struct { + // The class of pods. + PodSignature PodSignature `json:"podSignature" protobuf:"bytes,1,opt,name=podSignature"` + // Time at which this entry was added to the list. + // +optional + EvictionTime metav1.Time `json:"evictionTime,omitempty" protobuf:"bytes,2,opt,name=evictionTime"` + // (brief) reason why this entry was added to the list. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + // Human readable message indicating why this entry was added to the list. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` +} + +// Describes the class of pods that should avoid this node. +// Exactly one field should be set. +type PodSignature struct { + // Reference to controller whose pods should avoid this node. + // +optional + PodController *metav1.OwnerReference `json:"podController,omitempty" protobuf:"bytes,1,opt,name=podController"` +} + +// Describe a container image +type ContainerImage struct { + // Names by which this image is known. + // e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"] + Names []string `json:"names" protobuf:"bytes,1,rep,name=names"` + // The size of the image in bytes. + // +optional + SizeBytes int64 `json:"sizeBytes,omitempty" protobuf:"varint,2,opt,name=sizeBytes"` +} + +type NodePhase string + +// These are the valid phases of node. +const ( + // NodePending means the node has been created/added by the system, but not configured. + NodePending NodePhase = "Pending" + // NodeRunning means the node has been configured and has Kubernetes components running. + NodeRunning NodePhase = "Running" + // NodeTerminated means the node has been removed from the cluster. + NodeTerminated NodePhase = "Terminated" +) + +type NodeConditionType string + +// These are valid conditions of node. Currently, we don't have enough information to decide +// node condition. In the future, we will add more. The proposed set of conditions are: +// NodeReachable, NodeLive, NodeReady, NodeSchedulable, NodeRunnable. +const ( + // NodeReady means kubelet is healthy and ready to accept pods. + NodeReady NodeConditionType = "Ready" + // NodeOutOfDisk means the kubelet will not accept new pods due to insufficient free disk + // space on the node. + NodeOutOfDisk NodeConditionType = "OutOfDisk" + // NodeMemoryPressure means the kubelet is under pressure due to insufficient available memory. + NodeMemoryPressure NodeConditionType = "MemoryPressure" + // NodeDiskPressure means the kubelet is under pressure due to insufficient available disk. + NodeDiskPressure NodeConditionType = "DiskPressure" + // NodeNetworkUnavailable means that network for the node is not correctly configured. + NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" + // NodeInodePressure means the kubelet is under pressure due to insufficient available inodes. + NodeInodePressure NodeConditionType = "InodePressure" +) + +// NodeCondition contains condition information for a node. +type NodeCondition struct { + // Type of node condition. + Type NodeConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=NodeConditionType"` + // Status of the condition, one of True, False, Unknown. + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we got an update on a given condition. + // +optional + LastHeartbeatTime metav1.Time `json:"lastHeartbeatTime,omitempty" protobuf:"bytes,3,opt,name=lastHeartbeatTime"` + // Last time the condition transit from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +type NodeAddressType string + +// These are valid address type of node. +const ( + NodeHostName NodeAddressType = "Hostname" + NodeExternalIP NodeAddressType = "ExternalIP" + NodeInternalIP NodeAddressType = "InternalIP" + NodeExternalDNS NodeAddressType = "ExternalDNS" + NodeInternalDNS NodeAddressType = "InternalDNS" +) + +// NodeAddress contains information for the node's address. +type NodeAddress struct { + // Node address type, one of Hostname, ExternalIP or InternalIP. + Type NodeAddressType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=NodeAddressType"` + // The node address. + Address string `json:"address" protobuf:"bytes,2,opt,name=address"` +} + +// ResourceName is the name identifying various resources in a ResourceList. +type ResourceName string + +// Resource names must be not more than 63 characters, consisting of upper- or lower-case alphanumeric characters, +// with the -, _, and . characters allowed anywhere, except the first or last character. +// The default convention, matching that for annotations, is to use lower-case names, with dashes, rather than +// camel case, separating compound words. +// Fully-qualified resource typenames are constructed from a DNS-style subdomain, followed by a slash `/` and a name. +const ( + // CPU, in cores. (500m = .5 cores) + ResourceCPU ResourceName = "cpu" + // Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceMemory ResourceName = "memory" + // Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024) + ResourceStorage ResourceName = "storage" + // Local Storage for container overlay filesystem, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + // The resource name for ResourceStorageOverlay is alpha and it can change across releases. + ResourceStorageOverlay ResourceName = "storage.kubernetes.io/overlay" + // Local Storage for scratch space, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + // The resource name for ResourceStorageScratch is alpha and it can change across releases. + ResourceStorageScratch ResourceName = "storage.kubernetes.io/scratch" + // NVIDIA GPU, in devices. Alpha, might change: although fractional and allowing values >1, only one whole device per node is assigned. + ResourceNvidiaGPU ResourceName = "alpha.kubernetes.io/nvidia-gpu" + // Number of Pods that may be running on this Node: see ResourcePods +) + +const ( + // Namespace prefix for opaque counted resources (alpha). + ResourceOpaqueIntPrefix = "pod.alpha.kubernetes.io/opaque-int-resource-" +) + +// ResourceList is a set of (resource name, quantity) pairs. +type ResourceList map[ResourceName]resource.Quantity + +// +genclient=true +// +nonNamespaced=true + +// Node is a worker node in Kubernetes. +// Each node will have a unique identifier in the cache (i.e. in etcd). +type Node struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of a node. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec NodeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the node. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status NodeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// NodeList is the whole list of all Nodes which have been registered with master. +type NodeList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of nodes + Items []Node `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// FinalizerName is the name identifying a finalizer during namespace lifecycle. +type FinalizerName string + +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here or +// in metav1. +const ( + FinalizerKubernetes FinalizerName = "kubernetes" +) + +// NamespaceSpec describes the attributes on a Namespace. +type NamespaceSpec struct { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. + // More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers + // +optional + Finalizers []FinalizerName `json:"finalizers,omitempty" protobuf:"bytes,1,rep,name=finalizers,casttype=FinalizerName"` +} + +// NamespaceStatus is information about the current status of a Namespace. +type NamespaceStatus struct { + // Phase is the current lifecycle phase of the namespace. + // More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases + // +optional + Phase NamespacePhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=NamespacePhase"` +} + +type NamespacePhase string + +// These are the valid phases of a namespace. +const ( + // NamespaceActive means the namespace is available for use in the system + NamespaceActive NamespacePhase = "Active" + // NamespaceTerminating means the namespace is undergoing graceful termination + NamespaceTerminating NamespacePhase = "Terminating" +) + +// +genclient=true +// +nonNamespaced=true + +// Namespace provides a scope for Names. +// Use of multiple namespaces is optional. +type Namespace struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of the Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec NamespaceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status describes the current status of a Namespace. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status NamespaceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// NamespaceList is a list of Namespaces. +type NamespaceList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Namespace objects in the list. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + Items []Namespace `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Binding ties one object to another; for example, a pod is bound to a node by a scheduler. +// Deprecated in 1.7, please use the bindings subresource of pods instead. +type Binding struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The target object that you want to bind to the standard object. + Target ObjectReference `json:"target" protobuf:"bytes,2,opt,name=target"` +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +// +k8s:openapi-gen=false +type Preconditions struct { + // Specifies the target UID. + // +optional + UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` +} + +// DeletionPropagation decides if a deletion will propagate to the dependents of the object, and how the garbage collector will handle the propagation. +type DeletionPropagation string + +const ( + // Orphans the dependents. + DeletePropagationOrphan DeletionPropagation = "Orphan" + // Deletes the object from the key-value store, the garbage collector will delete the dependents in the background. + DeletePropagationBackground DeletionPropagation = "Background" + // The object exists in the key-value store until the garbage collector deletes all the dependents whose ownerReference.blockOwnerDeletion=true from the key-value store. + // API sever will put the "DeletingDependents" finalizer on the object, and sets its deletionTimestamp. + // This policy is cascading, i.e., the dependents will be deleted with Foreground. + DeletePropagationForeground DeletionPropagation = "Foreground" +) + +// DeleteOptions may be provided when deleting an API object +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +type DeleteOptions struct { + metav1.TypeMeta `json:",inline"` + + // The duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // Defaults to a per object value if not specified. zero means delete immediately. + // +optional + GracePeriodSeconds *int64 `json:"gracePeriodSeconds,omitempty" protobuf:"varint,1,opt,name=gracePeriodSeconds"` + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + // +optional + Preconditions *Preconditions `json:"preconditions,omitempty" protobuf:"bytes,2,opt,name=preconditions"` + + // Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + // Either this field or PropagationPolicy may be set, but not both. + // +optional + OrphanDependents *bool `json:"orphanDependents,omitempty" protobuf:"varint,3,opt,name=orphanDependents"` + + // Whether and how garbage collection will be performed. + // Either this field or OrphanDependents may be set, but not both. + // The default policy is decided by the existing finalizer set in the + // metadata.finalizers and the resource-specific default policy. + // +optional + PropagationPolicy *DeletionPropagation `protobuf:"bytes,4,opt,name=propagationPolicy,casttype=DeletionPropagation"` +} + +// ListOptions is the query options to a standard REST list call. +// DEPRECATED: This type has been moved to meta/v1 and will be removed soon. +// +k8s:openapi-gen=false +type ListOptions struct { + metav1.TypeMeta `json:",inline"` + + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + // +optional + LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + // +optional + FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"` + // If true, partially initialized resources are included in the response. + // +optional + IncludeUninitialized bool `json:"includeUninitialized,omitempty" protobuf:"varint,6,opt,name=includeUninitialized"` + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + // +optional + Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"` + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + // When specified for list: + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is at least as fresh as given rv. + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"` + // Timeout for the list/watch call. + // +optional + TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` +} + +// PodLogOptions is the query options for a Pod's logs REST call. +type PodLogOptions struct { + metav1.TypeMeta `json:",inline"` + + // The container for which to stream logs. Defaults to only container if there is one container in the pod. + // +optional + Container string `json:"container,omitempty" protobuf:"bytes,1,opt,name=container"` + // Follow the log stream of the pod. Defaults to false. + // +optional + Follow bool `json:"follow,omitempty" protobuf:"varint,2,opt,name=follow"` + // Return previous terminated container logs. Defaults to false. + // +optional + Previous bool `json:"previous,omitempty" protobuf:"varint,3,opt,name=previous"` + // A relative time in seconds before the current time from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + // +optional + SinceSeconds *int64 `json:"sinceSeconds,omitempty" protobuf:"varint,4,opt,name=sinceSeconds"` + // An RFC3339 timestamp from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + // +optional + SinceTime *metav1.Time `json:"sinceTime,omitempty" protobuf:"bytes,5,opt,name=sinceTime"` + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. Defaults to false. + // +optional + Timestamps bool `json:"timestamps,omitempty" protobuf:"varint,6,opt,name=timestamps"` + // If set, the number of lines from the end of the logs to show. If not specified, + // logs are shown from the creation of the container or sinceSeconds or sinceTime + // +optional + TailLines *int64 `json:"tailLines,omitempty" protobuf:"varint,7,opt,name=tailLines"` + // If set, the number of bytes to read from the server before terminating the + // log output. This may not display a complete final line of logging, and may return + // slightly more or slightly less than the specified limit. + // +optional + LimitBytes *int64 `json:"limitBytes,omitempty" protobuf:"varint,8,opt,name=limitBytes"` +} + +// PodAttachOptions is the query options to a Pod's remote attach call. +// --- +// TODO: merge w/ PodExecOptions below for stdin, stdout, etc +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +type PodAttachOptions struct { + metav1.TypeMeta `json:",inline"` + + // Stdin if true, redirects the standard input stream of the pod for this call. + // Defaults to false. + // +optional + Stdin bool `json:"stdin,omitempty" protobuf:"varint,1,opt,name=stdin"` + + // Stdout if true indicates that stdout is to be redirected for the attach call. + // Defaults to true. + // +optional + Stdout bool `json:"stdout,omitempty" protobuf:"varint,2,opt,name=stdout"` + + // Stderr if true indicates that stderr is to be redirected for the attach call. + // Defaults to true. + // +optional + Stderr bool `json:"stderr,omitempty" protobuf:"varint,3,opt,name=stderr"` + + // TTY if true indicates that a tty will be allocated for the attach call. + // This is passed through the container runtime so the tty + // is allocated on the worker node by the container runtime. + // Defaults to false. + // +optional + TTY bool `json:"tty,omitempty" protobuf:"varint,4,opt,name=tty"` + + // The container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + // +optional + Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"` +} + +// PodExecOptions is the query options to a Pod's remote exec call. +// --- +// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +type PodExecOptions struct { + metav1.TypeMeta `json:",inline"` + + // Redirect the standard input stream of the pod for this call. + // Defaults to false. + // +optional + Stdin bool `json:"stdin,omitempty" protobuf:"varint,1,opt,name=stdin"` + + // Redirect the standard output stream of the pod for this call. + // Defaults to true. + // +optional + Stdout bool `json:"stdout,omitempty" protobuf:"varint,2,opt,name=stdout"` + + // Redirect the standard error stream of the pod for this call. + // Defaults to true. + // +optional + Stderr bool `json:"stderr,omitempty" protobuf:"varint,3,opt,name=stderr"` + + // TTY if true indicates that a tty will be allocated for the exec call. + // Defaults to false. + // +optional + TTY bool `json:"tty,omitempty" protobuf:"varint,4,opt,name=tty"` + + // Container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + // +optional + Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"` + + // Command is the remote command to execute. argv array. Not executed within a shell. + Command []string `json:"command" protobuf:"bytes,6,rep,name=command"` +} + +// PodPortForwardOptions is the query options to a Pod's port forward call +// when using WebSockets. +// The `port` query parameter must specify the port or +// ports (comma separated) to forward over. +// Port forwarding over SPDY does not use these options. It requires the port +// to be passed in the `port` header as part of request. +type PodPortForwardOptions struct { + metav1.TypeMeta `json:",inline"` + + // List of ports to forward + // Required when using WebSockets + // +optional + Ports []int32 `json:"ports,omitempty" protobuf:"varint,1,rep,name=ports"` +} + +// PodProxyOptions is the query options to a Pod's proxy call. +type PodProxyOptions struct { + metav1.TypeMeta `json:",inline"` + + // Path is the URL path to use for the current proxy request to pod. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// NodeProxyOptions is the query options to a Node's proxy call. +type NodeProxyOptions struct { + metav1.TypeMeta `json:",inline"` + + // Path is the URL path to use for the current proxy request to node. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// ServiceProxyOptions is the query options to a Service's proxy call. +type ServiceProxyOptions struct { + metav1.TypeMeta `json:",inline"` + + // Path is the part of URLs that include service endpoints, suffixes, + // and parameters to use for the current proxy request to service. + // For example, the whole request URL is + // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. + // Path is _search?q=user:kimchy. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +type ObjectReference struct { + // Kind of the referent. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + // Namespace of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` + // Name of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,3,opt,name=name"` + // UID of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + // +optional + UID types.UID `json:"uid,omitempty" protobuf:"bytes,4,opt,name=uid,casttype=k8s.io/apimachinery/pkg/types.UID"` + // API version of the referent. + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,5,opt,name=apiVersion"` + // Specific resourceVersion to which this reference is made, if any. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency + // +optional + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,6,opt,name=resourceVersion"` + + // If referring to a piece of an object instead of an entire object, this string + // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + // For example, if the object reference is to a container within a pod, this would take on a value like: + // "spec.containers{name}" (where "name" refers to the name of the container that triggered + // the event) or if no container name is specified "spec.containers[2]" (container with + // index 2 in this pod). This syntax is chosen only to have some well-defined way of + // referencing a part of an object. + // TODO: this design is not final and this field is subject to change in the future. + // +optional + FieldPath string `json:"fieldPath,omitempty" protobuf:"bytes,7,opt,name=fieldPath"` +} + +// LocalObjectReference contains enough information to let you locate the +// referenced object inside the same namespace. +type LocalObjectReference struct { + // Name of the referent. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + // TODO: Add other useful fields. apiVersion, kind, uid? + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` +} + +// SerializedReference is a reference to serialized object. +type SerializedReference struct { + metav1.TypeMeta `json:",inline"` + // The reference to an object in the system. + // +optional + Reference ObjectReference `json:"reference,omitempty" protobuf:"bytes,1,opt,name=reference"` +} + +// EventSource contains information for an event. +type EventSource struct { + // Component from which the event is generated. + // +optional + Component string `json:"component,omitempty" protobuf:"bytes,1,opt,name=component"` + // Node name on which the event is generated. + // +optional + Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"` +} + +// Valid values for event types (new types could be added in future) +const ( + // Information only and will not cause any problems + EventTypeNormal string = "Normal" + // These events are to warn that something might go wrong + EventTypeWarning string = "Warning" +) + +// +genclient=true + +// Event is a report of an event somewhere in the cluster. +// TODO: Decide whether to store these separately or with the object they apply to. +type Event struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + metav1.ObjectMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` + + // The object that this event is about. + InvolvedObject ObjectReference `json:"involvedObject" protobuf:"bytes,2,opt,name=involvedObject"` + + // This should be a short, machine understandable string that gives the reason + // for the transition into the object's current status. + // TODO: provide exact specification for format. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + + // A human-readable description of the status of this operation. + // TODO: decide on maximum length. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + + // The component reporting this event. Should be a short machine understandable string. + // +optional + Source EventSource `json:"source,omitempty" protobuf:"bytes,5,opt,name=source"` + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + // +optional + FirstTimestamp metav1.Time `json:"firstTimestamp,omitempty" protobuf:"bytes,6,opt,name=firstTimestamp"` + + // The time at which the most recent occurrence of this event was recorded. + // +optional + LastTimestamp metav1.Time `json:"lastTimestamp,omitempty" protobuf:"bytes,7,opt,name=lastTimestamp"` + + // The number of times this event has occurred. + // +optional + Count int32 `json:"count,omitempty" protobuf:"varint,8,opt,name=count"` + + // Type of this event (Normal, Warning), new types could be added in the future + // +optional + Type string `json:"type,omitempty" protobuf:"bytes,9,opt,name=type"` +} + +// EventList is a list of events. +type EventList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of events + Items []Event `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// List holds a list of objects, which may not be known by the server. +type List struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of objects + Items []runtime.RawExtension `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// LimitType is a type of object that is limited +type LimitType string + +const ( + // Limit that applies to all pods in a namespace + LimitTypePod LimitType = "Pod" + // Limit that applies to all containers in a namespace + LimitTypeContainer LimitType = "Container" + // Limit that applies to all persistent volume claims in a namespace + LimitTypePersistentVolumeClaim LimitType = "PersistentVolumeClaim" +) + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind. +type LimitRangeItem struct { + // Type of resource that this limit applies to. + // +optional + Type LimitType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=LimitType"` + // Max usage constraints on this kind by resource name. + // +optional + Max ResourceList `json:"max,omitempty" protobuf:"bytes,2,rep,name=max,casttype=ResourceList,castkey=ResourceName"` + // Min usage constraints on this kind by resource name. + // +optional + Min ResourceList `json:"min,omitempty" protobuf:"bytes,3,rep,name=min,casttype=ResourceList,castkey=ResourceName"` + // Default resource requirement limit value by resource name if resource limit is omitted. + // +optional + Default ResourceList `json:"default,omitempty" protobuf:"bytes,4,rep,name=default,casttype=ResourceList,castkey=ResourceName"` + // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. + // +optional + DefaultRequest ResourceList `json:"defaultRequest,omitempty" protobuf:"bytes,5,rep,name=defaultRequest,casttype=ResourceList,castkey=ResourceName"` + // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. + // +optional + MaxLimitRequestRatio ResourceList `json:"maxLimitRequestRatio,omitempty" protobuf:"bytes,6,rep,name=maxLimitRequestRatio,casttype=ResourceList,castkey=ResourceName"` +} + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind. +type LimitRangeSpec struct { + // Limits is the list of LimitRangeItem objects that are enforced. + Limits []LimitRangeItem `json:"limits" protobuf:"bytes,1,rep,name=limits"` +} + +// +genclient=true + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +type LimitRange struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the limits enforced. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec LimitRangeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// LimitRangeList is a list of LimitRange items. +type LimitRangeList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of LimitRange objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md + Items []LimitRange `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// The following identify resource constants for Kubernetes object types +const ( + // Pods, number + ResourcePods ResourceName = "pods" + // Services, number + ResourceServices ResourceName = "services" + // ReplicationControllers, number + ResourceReplicationControllers ResourceName = "replicationcontrollers" + // ResourceQuotas, number + ResourceQuotas ResourceName = "resourcequotas" + // ResourceSecrets, number + ResourceSecrets ResourceName = "secrets" + // ResourceConfigMaps, number + ResourceConfigMaps ResourceName = "configmaps" + // ResourcePersistentVolumeClaims, number + ResourcePersistentVolumeClaims ResourceName = "persistentvolumeclaims" + // ResourceServicesNodePorts, number + ResourceServicesNodePorts ResourceName = "services.nodeports" + // ResourceServicesLoadBalancers, number + ResourceServicesLoadBalancers ResourceName = "services.loadbalancers" + // CPU request, in cores. (500m = .5 cores) + ResourceRequestsCPU ResourceName = "requests.cpu" + // Memory request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceRequestsMemory ResourceName = "requests.memory" + // Storage request, in bytes + ResourceRequestsStorage ResourceName = "requests.storage" + // CPU limit, in cores. (500m = .5 cores) + ResourceLimitsCPU ResourceName = "limits.cpu" + // Memory limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceLimitsMemory ResourceName = "limits.memory" +) + +// A ResourceQuotaScope defines a filter that must match each object tracked by a quota +type ResourceQuotaScope string + +const ( + // Match all pod objects where spec.activeDeadlineSeconds + ResourceQuotaScopeTerminating ResourceQuotaScope = "Terminating" + // Match all pod objects where !spec.activeDeadlineSeconds + ResourceQuotaScopeNotTerminating ResourceQuotaScope = "NotTerminating" + // Match all pod objects that have best effort quality of service + ResourceQuotaScopeBestEffort ResourceQuotaScope = "BestEffort" + // Match all pod objects that do not have best effort quality of service + ResourceQuotaScopeNotBestEffort ResourceQuotaScope = "NotBestEffort" +) + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota. +type ResourceQuotaSpec struct { + // Hard is the set of desired hard limits for each named resource. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + Hard ResourceList `json:"hard,omitempty" protobuf:"bytes,1,rep,name=hard,casttype=ResourceList,castkey=ResourceName"` + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + // +optional + Scopes []ResourceQuotaScope `json:"scopes,omitempty" protobuf:"bytes,2,rep,name=scopes,casttype=ResourceQuotaScope"` +} + +// ResourceQuotaStatus defines the enforced hard limits and observed use. +type ResourceQuotaStatus struct { + // Hard is the set of enforced hard limits for each named resource. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + // +optional + Hard ResourceList `json:"hard,omitempty" protobuf:"bytes,1,rep,name=hard,casttype=ResourceList,castkey=ResourceName"` + // Used is the current observed total usage of the resource in the namespace. + // +optional + Used ResourceList `json:"used,omitempty" protobuf:"bytes,2,rep,name=used,casttype=ResourceList,castkey=ResourceName"` +} + +// +genclient=true + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +type ResourceQuota struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired quota. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec ResourceQuotaSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status defines the actual enforced quota and its current usage. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ResourceQuotaStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ResourceQuotaList is a list of ResourceQuota items. +type ResourceQuotaList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ResourceQuota objects. + // More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md + Items []ResourceQuota `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Secret holds secret data of a certain type. The total bytes of the values in +// the Data field must be less than MaxSecretSize bytes. +type Secret struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data contains the secret data. Each key must consist of alphanumeric + // characters, '-', '_' or '.'. The serialized form of the secret data is a + // base64 encoded string, representing the arbitrary (possibly non-string) + // data value here. Described in https://tools.ietf.org/html/rfc4648#section-4 + // +optional + Data map[string][]byte `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"` + + // stringData allows specifying non-binary secret data in string form. + // It is provided as a write-only convenience method. + // All keys and values are merged into the data field on write, overwriting any existing values. + // It is never output when reading from the API. + // +k8s:conversion-gen=false + // +optional + StringData map[string]string `json:"stringData,omitempty" protobuf:"bytes,4,rep,name=stringData"` + + // Used to facilitate programmatic handling of secret data. + // +optional + Type SecretType `json:"type,omitempty" protobuf:"bytes,3,opt,name=type,casttype=SecretType"` +} + +const MaxSecretSize = 1 * 1024 * 1024 + +type SecretType string + +const ( + // SecretTypeOpaque is the default. Arbitrary user-defined data + SecretTypeOpaque SecretType = "Opaque" + + // SecretTypeServiceAccountToken contains a token that identifies a service account to the API + // + // Required fields: + // - Secret.Annotations["kubernetes.io/service-account.name"] - the name of the ServiceAccount the token identifies + // - Secret.Annotations["kubernetes.io/service-account.uid"] - the UID of the ServiceAccount the token identifies + // - Secret.Data["token"] - a token that identifies the service account to the API + SecretTypeServiceAccountToken SecretType = "kubernetes.io/service-account-token" + + // ServiceAccountNameKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountNameKey = "kubernetes.io/service-account.name" + // ServiceAccountUIDKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountUIDKey = "kubernetes.io/service-account.uid" + // ServiceAccountTokenKey is the key of the required data for SecretTypeServiceAccountToken secrets + ServiceAccountTokenKey = "token" + // ServiceAccountKubeconfigKey is the key of the optional kubeconfig data for SecretTypeServiceAccountToken secrets + ServiceAccountKubeconfigKey = "kubernetes.kubeconfig" + // ServiceAccountRootCAKey is the key of the optional root certificate authority for SecretTypeServiceAccountToken secrets + ServiceAccountRootCAKey = "ca.crt" + // ServiceAccountNamespaceKey is the key of the optional namespace to use as the default for namespaced API calls + ServiceAccountNamespaceKey = "namespace" + + // SecretTypeDockercfg contains a dockercfg file that follows the same format rules as ~/.dockercfg + // + // Required fields: + // - Secret.Data[".dockercfg"] - a serialized ~/.dockercfg file + SecretTypeDockercfg SecretType = "kubernetes.io/dockercfg" + + // DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets + DockerConfigKey = ".dockercfg" + + // SecretTypeDockerConfigJson contains a dockercfg file that follows the same format rules as ~/.docker/config.json + // + // Required fields: + // - Secret.Data[".dockerconfigjson"] - a serialized ~/.docker/config.json file + SecretTypeDockerConfigJson SecretType = "kubernetes.io/dockerconfigjson" + + // DockerConfigJsonKey is the key of the required data for SecretTypeDockerConfigJson secrets + DockerConfigJsonKey = ".dockerconfigjson" + + // SecretTypeBasicAuth contains data needed for basic authentication. + // + // Required at least one of fields: + // - Secret.Data["username"] - username used for authentication + // - Secret.Data["password"] - password or token needed for authentication + SecretTypeBasicAuth SecretType = "kubernetes.io/basic-auth" + + // BasicAuthUsernameKey is the key of the username for SecretTypeBasicAuth secrets + BasicAuthUsernameKey = "username" + // BasicAuthPasswordKey is the key of the password or token for SecretTypeBasicAuth secrets + BasicAuthPasswordKey = "password" + + // SecretTypeSSHAuth contains data needed for SSH authetication. + // + // Required field: + // - Secret.Data["ssh-privatekey"] - private SSH key needed for authentication + SecretTypeSSHAuth SecretType = "kubernetes.io/ssh-auth" + + // SSHAuthPrivateKey is the key of the required SSH private key for SecretTypeSSHAuth secrets + SSHAuthPrivateKey = "ssh-privatekey" + // SecretTypeTLS contains information about a TLS client or server secret. It + // is primarily used with TLS termination of the Ingress resource, but may be + // used in other types. + // + // Required fields: + // - Secret.Data["tls.key"] - TLS private key. + // Secret.Data["tls.crt"] - TLS certificate. + // TODO: Consider supporting different formats, specifying CA/destinationCA. + SecretTypeTLS SecretType = "kubernetes.io/tls" + + // TLSCertKey is the key for tls certificates in a TLS secert. + TLSCertKey = "tls.crt" + // TLSPrivateKeyKey is the key for the private key field in a TLS secret. + TLSPrivateKeyKey = "tls.key" +) + +// SecretList is a list of Secret. +type SecretList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of secret objects. + // More info: https://kubernetes.io/docs/concepts/configuration/secret + Items []Secret `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// ConfigMap holds configuration data for pods to consume. +type ConfigMap struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data contains the configuration data. + // Each key must consist of alphanumeric characters, '-', '_' or '.'. + // +optional + Data map[string]string `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"` +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type ConfigMapList struct { + metav1.TypeMeta `json:",inline"` + + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ConfigMaps. + Items []ConfigMap `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Type and constants for component health validation. +type ComponentConditionType string + +// These are the valid conditions for the component. +const ( + ComponentHealthy ComponentConditionType = "Healthy" +) + +// Information about the condition of a component. +type ComponentCondition struct { + // Type of condition for a component. + // Valid value: "Healthy" + Type ComponentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ComponentConditionType"` + // Status of the condition for a component. + // Valid values for "Healthy": "True", "False", or "Unknown". + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Message about the condition for a component. + // For example, information about a health check. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // Condition error code for a component. + // For example, a health check error code. + // +optional + Error string `json:"error,omitempty" protobuf:"bytes,4,opt,name=error"` +} + +// +genclient=true +// +nonNamespaced=true + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +type ComponentStatus struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of component conditions observed + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` +} + +// Status of all the conditions for the component as a list of ComponentStatus objects. +type ComponentStatusList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ComponentStatus objects. + Items []ComponentStatus `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// DownwardAPIVolumeSource represents a volume containing downward API info. +// Downward API volumes support ownership management and SELinux relabeling. +type DownwardAPIVolumeSource struct { + // Items is a list of downward API volume file + // +optional + Items []DownwardAPIVolumeFile `json:"items,omitempty" protobuf:"bytes,1,rep,name=items"` + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,2,opt,name=defaultMode"` +} + +const ( + DownwardAPIVolumeSourceDefaultMode int32 = 0644 +) + +// DownwardAPIVolumeFile represents information to create the file containing the pod field +type DownwardAPIVolumeFile struct { + // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` + // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + // +optional + FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty" protobuf:"bytes,2,opt,name=fieldRef"` + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + // +optional + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" protobuf:"bytes,3,opt,name=resourceFieldRef"` + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + // +optional + Mode *int32 `json:"mode,omitempty" protobuf:"varint,4,opt,name=mode"` +} + +// Represents downward API info for projecting into a projected volume. +// Note that this is identical to a downwardAPI volume source without the default +// mode. +type DownwardAPIProjection struct { + // Items is a list of DownwardAPIVolume file + // +optional + Items []DownwardAPIVolumeFile `json:"items,omitempty" protobuf:"bytes,1,rep,name=items"` +} + +// SecurityContext holds security configuration that will be applied to a container. +// Some fields are present in both SecurityContext and PodSecurityContext. When both +// are set, the values in SecurityContext take precedence. +type SecurityContext struct { + // The capabilities to add/drop when running containers. + // Defaults to the default set of capabilities granted by the container runtime. + // +optional + Capabilities *Capabilities `json:"capabilities,omitempty" protobuf:"bytes,1,opt,name=capabilities"` + // Run container in privileged mode. + // Processes in privileged containers are essentially equivalent to root on the host. + // Defaults to false. + // +optional + Privileged *bool `json:"privileged,omitempty" protobuf:"varint,2,opt,name=privileged"` + // The SELinux context to be applied to the container. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,3,opt,name=seLinuxOptions"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,4,opt,name=runAsUser"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + // +optional + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,5,opt,name=runAsNonRoot"` + // Whether this container has a read-only root filesystem. + // Default is false. + // +optional + ReadOnlyRootFilesystem *bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,6,opt,name=readOnlyRootFilesystem"` +} + +// SELinuxOptions are the labels to be applied to the container +type SELinuxOptions struct { + // User is a SELinux user label that applies to the container. + // +optional + User string `json:"user,omitempty" protobuf:"bytes,1,opt,name=user"` + // Role is a SELinux role label that applies to the container. + // +optional + Role string `json:"role,omitempty" protobuf:"bytes,2,opt,name=role"` + // Type is a SELinux type label that applies to the container. + // +optional + Type string `json:"type,omitempty" protobuf:"bytes,3,opt,name=type"` + // Level is SELinux level label that applies to the container. + // +optional + Level string `json:"level,omitempty" protobuf:"bytes,4,opt,name=level"` +} + +// RangeAllocation is not a public type. +type RangeAllocation struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Range is string that identifies the range represented by 'data'. + Range string `json:"range" protobuf:"bytes,2,opt,name=range"` + // Data is a bit array containing all allocated addresses in the previous segment. + Data []byte `json:"data" protobuf:"bytes,3,opt,name=data"` +} + +const ( + // "default-scheduler" is the name of default scheduler. + DefaultSchedulerName = "default-scheduler" + + // RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule + // corresponding to every RequiredDuringScheduling affinity rule. + // When the --hard-pod-affinity-weight scheduler flag is not specified, + // DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule. + DefaultHardPodAffinitySymmetricWeight int = 1 +) + +// Sysctl defines a kernel parameter to be set +type Sysctl struct { + // Name of a property to set + Name string `protobuf:"bytes,1,opt,name=name"` + // Value of a property to set + Value string `protobuf:"bytes,2,opt,name=value"` +} + +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +type NodeResources struct { + // Capacity represents the available resources of a node + Capacity ResourceList `protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` +} + +const ( + // Enable stdin for remote command execution + ExecStdinParam = "input" + // Enable stdout for remote command execution + ExecStdoutParam = "output" + // Enable stderr for remote command execution + ExecStderrParam = "error" + // Enable TTY for remote command execution + ExecTTYParam = "tty" + // Command to run for remote command execution + ExecCommandParamm = "command" + + // Name of header that specifies stream type + StreamType = "streamType" + // Value for streamType header for stdin stream + StreamTypeStdin = "stdin" + // Value for streamType header for stdout stream + StreamTypeStdout = "stdout" + // Value for streamType header for stderr stream + StreamTypeStderr = "stderr" + // Value for streamType header for data stream + StreamTypeData = "data" + // Value for streamType header for error stream + StreamTypeError = "error" + // Value for streamType header for terminal resize stream + StreamTypeResize = "resize" + + // Name of header that specifies the port being forwarded + PortHeader = "port" + // Name of header that specifies a request ID used to associate the error + // and data streams for a single forwarded connection + PortForwardRequestIDHeader = "requestID" +) diff --git a/vendor/k8s.io/client-go/pkg/api/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/api/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..f78b69307 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/types_swagger_doc_generated.go @@ -0,0 +1,2039 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_AWSElasticBlockStoreVolumeSource = map[string]string{ + "": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", + "volumeID": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "partition": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).", + "readOnly": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", +} + +func (AWSElasticBlockStoreVolumeSource) SwaggerDoc() map[string]string { + return map_AWSElasticBlockStoreVolumeSource +} + +var map_Affinity = map[string]string{ + "": "Affinity is a group of affinity scheduling rules.", + "nodeAffinity": "Describes node affinity scheduling rules for the pod.", + "podAffinity": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", + "podAntiAffinity": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", +} + +func (Affinity) SwaggerDoc() map[string]string { + return map_Affinity +} + +var map_AttachedVolume = map[string]string{ + "": "AttachedVolume describes a volume attached to a node", + "name": "Name of the attached volume", + "devicePath": "DevicePath represents the device path where the volume should be available", +} + +func (AttachedVolume) SwaggerDoc() map[string]string { + return map_AttachedVolume +} + +var map_AvoidPods = map[string]string{ + "": "AvoidPods describes pods that should avoid this node. This is the value for a Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and will eventually become a field of NodeStatus.", + "preferAvoidPods": "Bounded-sized list of signatures of pods that should avoid this node, sorted in timestamp order from oldest to newest. Size of the slice is unspecified.", +} + +func (AvoidPods) SwaggerDoc() map[string]string { + return map_AvoidPods +} + +var map_AzureDiskVolumeSource = map[string]string{ + "": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", + "diskName": "The Name of the data disk in the blob storage", + "diskURI": "The URI the data disk in the blob storage", + "cachingMode": "Host Caching mode: None, Read Only, Read Write.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "kind": "Expected values Shared: mulitple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared", +} + +func (AzureDiskVolumeSource) SwaggerDoc() map[string]string { + return map_AzureDiskVolumeSource +} + +var map_AzureFileVolumeSource = map[string]string{ + "": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "secretName": "the name of secret that contains Azure Storage Account Name and Key", + "shareName": "Share Name", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (AzureFileVolumeSource) SwaggerDoc() map[string]string { + return map_AzureFileVolumeSource +} + +var map_Binding = map[string]string{ + "": "Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "target": "The target object that you want to bind to the standard object.", +} + +func (Binding) SwaggerDoc() map[string]string { + return map_Binding +} + +var map_Capabilities = map[string]string{ + "": "Adds and removes POSIX capabilities from running containers.", + "add": "Added capabilities", + "drop": "Removed capabilities", +} + +func (Capabilities) SwaggerDoc() map[string]string { + return map_Capabilities +} + +var map_CephFSVolumeSource = map[string]string{ + "": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", + "monitors": "Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "path": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", + "user": "Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "secretFile": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "secretRef": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", +} + +func (CephFSVolumeSource) SwaggerDoc() map[string]string { + return map_CephFSVolumeSource +} + +var map_CinderVolumeSource = map[string]string{ + "": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", + "volumeID": "volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", +} + +func (CinderVolumeSource) SwaggerDoc() map[string]string { + return map_CinderVolumeSource +} + +var map_ComponentCondition = map[string]string{ + "": "Information about the condition of a component.", + "type": "Type of condition for a component. Valid value: \"Healthy\"", + "status": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".", + "message": "Message about the condition for a component. For example, information about a health check.", + "error": "Condition error code for a component. For example, a health check error code.", +} + +func (ComponentCondition) SwaggerDoc() map[string]string { + return map_ComponentCondition +} + +var map_ComponentStatus = map[string]string{ + "": "ComponentStatus (and ComponentStatusList) holds the cluster validation info.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "conditions": "List of component conditions observed", +} + +func (ComponentStatus) SwaggerDoc() map[string]string { + return map_ComponentStatus +} + +var map_ComponentStatusList = map[string]string{ + "": "Status of all the conditions for the component as a list of ComponentStatus objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ComponentStatus objects.", +} + +func (ComponentStatusList) SwaggerDoc() map[string]string { + return map_ComponentStatusList +} + +var map_ConfigMap = map[string]string{ + "": "ConfigMap holds configuration data for pods to consume.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'.", +} + +func (ConfigMap) SwaggerDoc() map[string]string { + return map_ConfigMap +} + +var map_ConfigMapEnvSource = map[string]string{ + "": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", + "optional": "Specify whether the ConfigMap must be defined", +} + +func (ConfigMapEnvSource) SwaggerDoc() map[string]string { + return map_ConfigMapEnvSource +} + +var map_ConfigMapKeySelector = map[string]string{ + "": "Selects a key from a ConfigMap.", + "key": "The key to select.", + "optional": "Specify whether the ConfigMap or it's key must be defined", +} + +func (ConfigMapKeySelector) SwaggerDoc() map[string]string { + return map_ConfigMapKeySelector +} + +var map_ConfigMapList = map[string]string{ + "": "ConfigMapList is a resource containing a list of ConfigMap objects.", + "metadata": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of ConfigMaps.", +} + +func (ConfigMapList) SwaggerDoc() map[string]string { + return map_ConfigMapList +} + +var map_ConfigMapProjection = map[string]string{ + "": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.", + "items": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "optional": "Specify whether the ConfigMap or it's keys must be defined", +} + +func (ConfigMapProjection) SwaggerDoc() map[string]string { + return map_ConfigMapProjection +} + +var map_ConfigMapVolumeSource = map[string]string{ + "": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", + "items": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "defaultMode": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "optional": "Specify whether the ConfigMap or it's keys must be defined", +} + +func (ConfigMapVolumeSource) SwaggerDoc() map[string]string { + return map_ConfigMapVolumeSource +} + +var map_Container = map[string]string{ + "": "A single application container that you want to run within a pod.", + "name": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.", + "image": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "command": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "args": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "workingDir": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "ports": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "envFrom": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "env": "List of environment variables to set in the container. Cannot be updated.", + "resources": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "volumeMounts": "Pod volumes to mount into the container's filesystem. Cannot be updated.", + "livenessProbe": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "readinessProbe": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "lifecycle": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", + "terminationMessagePath": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "terminationMessagePolicy": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "imagePullPolicy": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "securityContext": "Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md", + "stdin": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.", + "stdinOnce": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "tty": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", +} + +func (Container) SwaggerDoc() map[string]string { + return map_Container +} + +var map_ContainerImage = map[string]string{ + "": "Describe a container image", + "names": "Names by which this image is known. e.g. [\"gcr.io/google_containers/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]", + "sizeBytes": "The size of the image in bytes.", +} + +func (ContainerImage) SwaggerDoc() map[string]string { + return map_ContainerImage +} + +var map_ContainerPort = map[string]string{ + "": "ContainerPort represents a network port in a single container.", + "name": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", + "hostPort": "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", + "containerPort": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", + "protocol": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", + "hostIP": "What host IP to bind the external port to.", +} + +func (ContainerPort) SwaggerDoc() map[string]string { + return map_ContainerPort +} + +var map_ContainerState = map[string]string{ + "": "ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.", + "waiting": "Details about a waiting container", + "running": "Details about a running container", + "terminated": "Details about a terminated container", +} + +func (ContainerState) SwaggerDoc() map[string]string { + return map_ContainerState +} + +var map_ContainerStateRunning = map[string]string{ + "": "ContainerStateRunning is a running state of a container.", + "startedAt": "Time at which the container was last (re-)started", +} + +func (ContainerStateRunning) SwaggerDoc() map[string]string { + return map_ContainerStateRunning +} + +var map_ContainerStateTerminated = map[string]string{ + "": "ContainerStateTerminated is a terminated state of a container.", + "exitCode": "Exit status from the last termination of the container", + "signal": "Signal from the last termination of the container", + "reason": "(brief) reason from the last termination of the container", + "message": "Message regarding the last termination of the container", + "startedAt": "Time at which previous execution of the container started", + "finishedAt": "Time at which the container last terminated", + "containerID": "Container's ID in the format 'docker://'", +} + +func (ContainerStateTerminated) SwaggerDoc() map[string]string { + return map_ContainerStateTerminated +} + +var map_ContainerStateWaiting = map[string]string{ + "": "ContainerStateWaiting is a waiting state of a container.", + "reason": "(brief) reason the container is not yet running.", + "message": "Message regarding why the container is not yet running.", +} + +func (ContainerStateWaiting) SwaggerDoc() map[string]string { + return map_ContainerStateWaiting +} + +var map_ContainerStatus = map[string]string{ + "": "ContainerStatus contains details for the current status of this container.", + "name": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.", + "state": "Details about the container's current condition.", + "lastState": "Details about the container's last termination condition.", + "ready": "Specifies whether the container has passed its readiness probe.", + "restartCount": "The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.", + "image": "The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images", + "imageID": "ImageID of the container's image.", + "containerID": "Container's ID in the format 'docker://'.", +} + +func (ContainerStatus) SwaggerDoc() map[string]string { + return map_ContainerStatus +} + +var map_DaemonEndpoint = map[string]string{ + "": "DaemonEndpoint contains information about a single Daemon endpoint.", + "Port": "Port number of the given endpoint.", +} + +func (DaemonEndpoint) SwaggerDoc() map[string]string { + return map_DaemonEndpoint +} + +var map_DeleteOptions = map[string]string{ + "": "DeleteOptions may be provided when deleting an API object DEPRECATED: This type has been moved to meta/v1 and will be removed soon.", + "gracePeriodSeconds": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "preconditions": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", + "orphanDependents": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "PropagationPolicy": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.", +} + +func (DeleteOptions) SwaggerDoc() map[string]string { + return map_DeleteOptions +} + +var map_DownwardAPIProjection = map[string]string{ + "": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", + "items": "Items is a list of DownwardAPIVolume file", +} + +func (DownwardAPIProjection) SwaggerDoc() map[string]string { + return map_DownwardAPIProjection +} + +var map_DownwardAPIVolumeFile = map[string]string{ + "": "DownwardAPIVolumeFile represents information to create the file containing the pod field", + "path": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", + "fieldRef": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", + "resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", + "mode": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (DownwardAPIVolumeFile) SwaggerDoc() map[string]string { + return map_DownwardAPIVolumeFile +} + +var map_DownwardAPIVolumeSource = map[string]string{ + "": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", + "items": "Items is a list of downward API volume file", + "defaultMode": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (DownwardAPIVolumeSource) SwaggerDoc() map[string]string { + return map_DownwardAPIVolumeSource +} + +var map_EmptyDirVolumeSource = map[string]string{ + "": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", + "medium": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", + "sizeLimit": "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir", +} + +func (EmptyDirVolumeSource) SwaggerDoc() map[string]string { + return map_EmptyDirVolumeSource +} + +var map_EndpointAddress = map[string]string{ + "": "EndpointAddress is a tuple that describes single IP address.", + "ip": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.", + "hostname": "The Hostname of this endpoint", + "nodeName": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.", + "targetRef": "Reference to object providing the endpoint.", +} + +func (EndpointAddress) SwaggerDoc() map[string]string { + return map_EndpointAddress +} + +var map_EndpointPort = map[string]string{ + "": "EndpointPort is a tuple that describes a single port.", + "name": "The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined.", + "port": "The port number of the endpoint.", + "protocol": "The IP protocol for this port. Must be UDP or TCP. Default is TCP.", +} + +func (EndpointPort) SwaggerDoc() map[string]string { + return map_EndpointPort +} + +var map_EndpointSubset = map[string]string{ + "": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]", + "addresses": "IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.", + "notReadyAddresses": "IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.", + "ports": "Port numbers available on the related IP addresses.", +} + +func (EndpointSubset) SwaggerDoc() map[string]string { + return map_EndpointSubset +} + +var map_Endpoints = map[string]string{ + "": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "subsets": "The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.", +} + +func (Endpoints) SwaggerDoc() map[string]string { + return map_Endpoints +} + +var map_EndpointsList = map[string]string{ + "": "EndpointsList is a list of endpoints.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of endpoints.", +} + +func (EndpointsList) SwaggerDoc() map[string]string { + return map_EndpointsList +} + +var map_EnvFromSource = map[string]string{ + "": "EnvFromSource represents the source of a set of ConfigMaps", + "prefix": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", + "configMapRef": "The ConfigMap to select from", + "secretRef": "The Secret to select from", +} + +func (EnvFromSource) SwaggerDoc() map[string]string { + return map_EnvFromSource +} + +var map_EnvVar = map[string]string{ + "": "EnvVar represents an environment variable present in a Container.", + "name": "Name of the environment variable. Must be a C_IDENTIFIER.", + "value": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", + "valueFrom": "Source for the environment variable's value. Cannot be used if value is not empty.", +} + +func (EnvVar) SwaggerDoc() map[string]string { + return map_EnvVar +} + +var map_EnvVarSource = map[string]string{ + "": "EnvVarSource represents a source for the value of an EnvVar.", + "fieldRef": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.", + "resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", + "configMapKeyRef": "Selects a key of a ConfigMap.", + "secretKeyRef": "Selects a key of a secret in the pod's namespace", +} + +func (EnvVarSource) SwaggerDoc() map[string]string { + return map_EnvVarSource +} + +var map_Event = map[string]string{ + "": "Event is a report of an event somewhere in the cluster.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "involvedObject": "The object that this event is about.", + "reason": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", + "message": "A human-readable description of the status of this operation.", + "source": "The component reporting this event. Should be a short machine understandable string.", + "firstTimestamp": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)", + "lastTimestamp": "The time at which the most recent occurrence of this event was recorded.", + "count": "The number of times this event has occurred.", + "type": "Type of this event (Normal, Warning), new types could be added in the future", +} + +func (Event) SwaggerDoc() map[string]string { + return map_Event +} + +var map_EventList = map[string]string{ + "": "EventList is a list of events.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of events", +} + +func (EventList) SwaggerDoc() map[string]string { + return map_EventList +} + +var map_EventSource = map[string]string{ + "": "EventSource contains information for an event.", + "component": "Component from which the event is generated.", + "host": "Node name on which the event is generated.", +} + +func (EventSource) SwaggerDoc() map[string]string { + return map_EventSource +} + +var map_ExecAction = map[string]string{ + "": "ExecAction describes a \"run in container\" action.", + "command": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", +} + +func (ExecAction) SwaggerDoc() map[string]string { + return map_ExecAction +} + +var map_FCVolumeSource = map[string]string{ + "": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", + "targetWWNs": "Required: FC target worldwide names (WWNs)", + "lun": "Required: FC target lun number", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (FCVolumeSource) SwaggerDoc() map[string]string { + return map_FCVolumeSource +} + +var map_FlexVolumeSource = map[string]string{ + "": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", + "driver": "Driver is the name of the driver to use for this volume.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.", + "secretRef": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "options": "Optional: Extra command options if any.", +} + +func (FlexVolumeSource) SwaggerDoc() map[string]string { + return map_FlexVolumeSource +} + +var map_FlockerVolumeSource = map[string]string{ + "": "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", + "datasetName": "Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated", + "datasetUUID": "UUID of the dataset. This is unique identifier of a Flocker dataset", +} + +func (FlockerVolumeSource) SwaggerDoc() map[string]string { + return map_FlockerVolumeSource +} + +var map_GCEPersistentDiskVolumeSource = map[string]string{ + "": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", + "pdName": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "partition": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", +} + +func (GCEPersistentDiskVolumeSource) SwaggerDoc() map[string]string { + return map_GCEPersistentDiskVolumeSource +} + +var map_GitRepoVolumeSource = map[string]string{ + "": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.", + "repository": "Repository URL", + "revision": "Commit hash for the specified revision.", + "directory": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", +} + +func (GitRepoVolumeSource) SwaggerDoc() map[string]string { + return map_GitRepoVolumeSource +} + +var map_GlusterfsVolumeSource = map[string]string{ + "": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", + "endpoints": "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", + "path": "Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", + "readOnly": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", +} + +func (GlusterfsVolumeSource) SwaggerDoc() map[string]string { + return map_GlusterfsVolumeSource +} + +var map_HTTPGetAction = map[string]string{ + "": "HTTPGetAction describes an action based on HTTP Get requests.", + "path": "Path to access on the HTTP server.", + "port": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "host": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "scheme": "Scheme to use for connecting to the host. Defaults to HTTP.", + "httpHeaders": "Custom headers to set in the request. HTTP allows repeated headers.", +} + +func (HTTPGetAction) SwaggerDoc() map[string]string { + return map_HTTPGetAction +} + +var map_HTTPHeader = map[string]string{ + "": "HTTPHeader describes a custom header to be used in HTTP probes", + "name": "The header field name", + "value": "The header field value", +} + +func (HTTPHeader) SwaggerDoc() map[string]string { + return map_HTTPHeader +} + +var map_Handler = map[string]string{ + "": "Handler defines a specific action that should be taken", + "exec": "One and only one of the following should be specified. Exec specifies the action to take.", + "httpGet": "HTTPGet specifies the http request to perform.", + "tcpSocket": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", +} + +func (Handler) SwaggerDoc() map[string]string { + return map_Handler +} + +var map_HostAlias = map[string]string{ + "": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", + "ip": "IP address of the host file entry.", + "hostnames": "Hostnames for the above IP address.", +} + +func (HostAlias) SwaggerDoc() map[string]string { + return map_HostAlias +} + +var map_HostPathVolumeSource = map[string]string{ + "": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", + "path": "Path of the directory on the host. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", +} + +func (HostPathVolumeSource) SwaggerDoc() map[string]string { + return map_HostPathVolumeSource +} + +var map_ISCSIVolumeSource = map[string]string{ + "": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", + "targetPortal": "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + "iqn": "Target iSCSI Qualified Name.", + "lun": "iSCSI target lun number.", + "iscsiInterface": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", + "portals": "iSCSI target portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + "chapAuthDiscovery": "whether support iSCSI Discovery CHAP authentication", + "chapAuthSession": "whether support iSCSI Session CHAP authentication", + "secretRef": "CHAP secret for iSCSI target and initiator authentication", +} + +func (ISCSIVolumeSource) SwaggerDoc() map[string]string { + return map_ISCSIVolumeSource +} + +var map_KeyToPath = map[string]string{ + "": "Maps a string key to a path within a volume.", + "key": "The key to project.", + "path": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", + "mode": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (KeyToPath) SwaggerDoc() map[string]string { + return map_KeyToPath +} + +var map_Lifecycle = map[string]string{ + "": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", + "postStart": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", + "preStop": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", +} + +func (Lifecycle) SwaggerDoc() map[string]string { + return map_Lifecycle +} + +var map_LimitRange = map[string]string{ + "": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (LimitRange) SwaggerDoc() map[string]string { + return map_LimitRange +} + +var map_LimitRangeItem = map[string]string{ + "": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", + "type": "Type of resource that this limit applies to.", + "max": "Max usage constraints on this kind by resource name.", + "min": "Min usage constraints on this kind by resource name.", + "default": "Default resource requirement limit value by resource name if resource limit is omitted.", + "defaultRequest": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.", + "maxLimitRequestRatio": "MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.", +} + +func (LimitRangeItem) SwaggerDoc() map[string]string { + return map_LimitRangeItem +} + +var map_LimitRangeList = map[string]string{ + "": "LimitRangeList is a list of LimitRange items.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is a list of LimitRange objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md", +} + +func (LimitRangeList) SwaggerDoc() map[string]string { + return map_LimitRangeList +} + +var map_LimitRangeSpec = map[string]string{ + "": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", + "limits": "Limits is the list of LimitRangeItem objects that are enforced.", +} + +func (LimitRangeSpec) SwaggerDoc() map[string]string { + return map_LimitRangeSpec +} + +var map_List = map[string]string{ + "": "List holds a list of objects, which may not be known by the server.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of objects", +} + +func (List) SwaggerDoc() map[string]string { + return map_List +} + +var map_ListOptions = map[string]string{ + "": "ListOptions is the query options to a standard REST list call. DEPRECATED: This type has been moved to meta/v1 and will be removed soon.", + "labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "includeUninitialized": "If true, partially initialized resources are included in the response.", + "watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "timeoutSeconds": "Timeout for the list/watch call.", +} + +func (ListOptions) SwaggerDoc() map[string]string { + return map_ListOptions +} + +var map_LoadBalancerIngress = map[string]string{ + "": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", + "ip": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", + "hostname": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)", +} + +func (LoadBalancerIngress) SwaggerDoc() map[string]string { + return map_LoadBalancerIngress +} + +var map_LoadBalancerStatus = map[string]string{ + "": "LoadBalancerStatus represents the status of a load-balancer.", + "ingress": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.", +} + +func (LoadBalancerStatus) SwaggerDoc() map[string]string { + return map_LoadBalancerStatus +} + +var map_LocalObjectReference = map[string]string{ + "": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "name": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", +} + +func (LocalObjectReference) SwaggerDoc() map[string]string { + return map_LocalObjectReference +} + +var map_LocalVolumeSource = map[string]string{ + "": "Local represents directly-attached storage with node affinity", + "path": "The full path to the volume on the node For alpha, this path must be a directory Once block as a source is supported, then this path can point to a block device", +} + +func (LocalVolumeSource) SwaggerDoc() map[string]string { + return map_LocalVolumeSource +} + +var map_NFSVolumeSource = map[string]string{ + "": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", + "server": "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "path": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "readOnly": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", +} + +func (NFSVolumeSource) SwaggerDoc() map[string]string { + return map_NFSVolumeSource +} + +var map_Namespace = map[string]string{ + "": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Namespace) SwaggerDoc() map[string]string { + return map_Namespace +} + +var map_NamespaceList = map[string]string{ + "": "NamespaceList is a list of Namespaces.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", +} + +func (NamespaceList) SwaggerDoc() map[string]string { + return map_NamespaceList +} + +var map_NamespaceSpec = map[string]string{ + "": "NamespaceSpec describes the attributes on a Namespace.", + "finalizers": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers", +} + +func (NamespaceSpec) SwaggerDoc() map[string]string { + return map_NamespaceSpec +} + +var map_NamespaceStatus = map[string]string{ + "": "NamespaceStatus is information about the current status of a Namespace.", + "phase": "Phase is the current lifecycle phase of the namespace. More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases", +} + +func (NamespaceStatus) SwaggerDoc() map[string]string { + return map_NamespaceStatus +} + +var map_Node = map[string]string{ + "": "Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Node) SwaggerDoc() map[string]string { + return map_Node +} + +var map_NodeAddress = map[string]string{ + "": "NodeAddress contains information for the node's address.", + "type": "Node address type, one of Hostname, ExternalIP or InternalIP.", + "address": "The node address.", +} + +func (NodeAddress) SwaggerDoc() map[string]string { + return map_NodeAddress +} + +var map_NodeAffinity = map[string]string{ + "": "Node affinity is a group of node affinity scheduling rules.", + "requiredDuringSchedulingIgnoredDuringExecution": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", + "preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", +} + +func (NodeAffinity) SwaggerDoc() map[string]string { + return map_NodeAffinity +} + +var map_NodeCondition = map[string]string{ + "": "NodeCondition contains condition information for a node.", + "type": "Type of node condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastHeartbeatTime": "Last time we got an update on a given condition.", + "lastTransitionTime": "Last time the condition transit from one status to another.", + "reason": "(brief) reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (NodeCondition) SwaggerDoc() map[string]string { + return map_NodeCondition +} + +var map_NodeDaemonEndpoints = map[string]string{ + "": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", + "kubeletEndpoint": "Endpoint on which Kubelet is listening.", +} + +func (NodeDaemonEndpoints) SwaggerDoc() map[string]string { + return map_NodeDaemonEndpoints +} + +var map_NodeList = map[string]string{ + "": "NodeList is the whole list of all Nodes which have been registered with master.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of nodes", +} + +func (NodeList) SwaggerDoc() map[string]string { + return map_NodeList +} + +var map_NodeProxyOptions = map[string]string{ + "": "NodeProxyOptions is the query options to a Node's proxy call.", + "path": "Path is the URL path to use for the current proxy request to node.", +} + +func (NodeProxyOptions) SwaggerDoc() map[string]string { + return map_NodeProxyOptions +} + +var map_NodeResources = map[string]string{ + "": "NodeResources is an object for conveying resource information about a node. see http://releases.k8s.io/HEAD/docs/design/resources.md for more details.", + "Capacity": "Capacity represents the available resources of a node", +} + +func (NodeResources) SwaggerDoc() map[string]string { + return map_NodeResources +} + +var map_NodeSelector = map[string]string{ + "": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "nodeSelectorTerms": "Required. A list of node selector terms. The terms are ORed.", +} + +func (NodeSelector) SwaggerDoc() map[string]string { + return map_NodeSelector +} + +var map_NodeSelectorRequirement = map[string]string{ + "": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "The label key that the selector applies to.", + "operator": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "values": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", +} + +func (NodeSelectorRequirement) SwaggerDoc() map[string]string { + return map_NodeSelectorRequirement +} + +var map_NodeSelectorTerm = map[string]string{ + "": "A null or empty node selector term matches no objects.", + "matchExpressions": "Required. A list of node selector requirements. The requirements are ANDed.", +} + +func (NodeSelectorTerm) SwaggerDoc() map[string]string { + return map_NodeSelectorTerm +} + +var map_NodeSpec = map[string]string{ + "": "NodeSpec describes the attributes that a node is created with.", + "podCIDR": "PodCIDR represents the pod IP range assigned to the node.", + "externalID": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated.", + "providerID": "ID of the node assigned by the cloud provider in the format: ://", + "unschedulable": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration", + "taints": "If specified, the node's taints.", +} + +func (NodeSpec) SwaggerDoc() map[string]string { + return map_NodeSpec +} + +var map_NodeStatus = map[string]string{ + "": "NodeStatus is information about the current status of a node.", + "capacity": "Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", + "allocatable": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.", + "phase": "NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.", + "conditions": "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition", + "addresses": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses", + "daemonEndpoints": "Endpoints of daemons running on the Node.", + "nodeInfo": "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info", + "images": "List of container images on this node", + "volumesInUse": "List of attachable volumes in use (mounted) by the node.", + "volumesAttached": "List of volumes that are attached to the node.", +} + +func (NodeStatus) SwaggerDoc() map[string]string { + return map_NodeStatus +} + +var map_NodeSystemInfo = map[string]string{ + "": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", + "machineID": "MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html", + "systemUUID": "SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html", + "bootID": "Boot ID reported by the node.", + "kernelVersion": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", + "osImage": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).", + "containerRuntimeVersion": "ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).", + "kubeletVersion": "Kubelet Version reported by the node.", + "kubeProxyVersion": "KubeProxy Version reported by the node.", + "operatingSystem": "The Operating System reported by the node", + "architecture": "The Architecture reported by the node", +} + +func (NodeSystemInfo) SwaggerDoc() map[string]string { + return map_NodeSystemInfo +} + +var map_ObjectFieldSelector = map[string]string{ + "": "ObjectFieldSelector selects an APIVersioned field of an object.", + "apiVersion": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", + "fieldPath": "Path of the field to select in the specified API version.", +} + +func (ObjectFieldSelector) SwaggerDoc() map[string]string { + return map_ObjectFieldSelector +} + +var map_ObjectMeta = map[string]string{ + "": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. DEPRECATED: Use k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta instead - this type will be removed soon.", + "name": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "generateName": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency", + "namespace": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "selfLink": "SelfLink is a URL representing this object. Populated by the system. Read-only.", + "uid": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "resourceVersion": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", + "generation": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", + "creationTimestamp": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "deletionTimestamp": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "deletionGracePeriodSeconds": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", + "labels": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/", + "annotations": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/", + "ownerReferences": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", + "initializers": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.", + "finalizers": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.", + "clusterName": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", +} + +func (ObjectMeta) SwaggerDoc() map[string]string { + return map_ObjectMeta +} + +var map_ObjectReference = map[string]string{ + "": "ObjectReference contains enough information to let you inspect or modify the referred object.", + "kind": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "namespace": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "name": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "uid": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "apiVersion": "API version of the referent.", + "resourceVersion": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", + "fieldPath": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.", +} + +func (ObjectReference) SwaggerDoc() map[string]string { + return map_ObjectReference +} + +var map_PersistentVolume = map[string]string{ + "": "PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes", + "status": "Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes", +} + +func (PersistentVolume) SwaggerDoc() map[string]string { + return map_PersistentVolume +} + +var map_PersistentVolumeClaim = map[string]string{ + "": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "status": "Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", +} + +func (PersistentVolumeClaim) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaim +} + +var map_PersistentVolumeClaimList = map[string]string{ + "": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", +} + +func (PersistentVolumeClaimList) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimList +} + +var map_PersistentVolumeClaimSpec = map[string]string{ + "": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", + "accessModes": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "selector": "A label query over volumes to consider for binding.", + "resources": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "volumeName": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "storageClassName": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", +} + +func (PersistentVolumeClaimSpec) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimSpec +} + +var map_PersistentVolumeClaimStatus = map[string]string{ + "": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", + "phase": "Phase represents the current phase of PersistentVolumeClaim.", + "accessModes": "AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "capacity": "Represents the actual resources of the underlying volume.", +} + +func (PersistentVolumeClaimStatus) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimStatus +} + +var map_PersistentVolumeClaimVolumeSource = map[string]string{ + "": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", + "claimName": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "readOnly": "Will force the ReadOnly setting in VolumeMounts. Default false.", +} + +func (PersistentVolumeClaimVolumeSource) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimVolumeSource +} + +var map_PersistentVolumeList = map[string]string{ + "": "PersistentVolumeList is a list of PersistentVolume items.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", +} + +func (PersistentVolumeList) SwaggerDoc() map[string]string { + return map_PersistentVolumeList +} + +var map_PersistentVolumeSource = map[string]string{ + "": "PersistentVolumeSource is similar to VolumeSource but meant for the administrator who creates PVs. Exactly one of its members must be set.", + "gcePersistentDisk": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "awsElasticBlockStore": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "hostPath": "HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "glusterfs": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", + "nfs": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "rbd": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", + "iscsi": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin.", + "cinder": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "cephfs": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", + "fc": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", + "flocker": "Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running", + "flexVolume": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", + "azureFile": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "vsphereVolume": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", + "quobyte": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", + "azureDisk": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", + "photonPersistentDisk": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", + "portworxVolume": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", + "scaleIO": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", + "local": "Local represents directly-attached storage with node affinity", + "storageos": "StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md", +} + +func (PersistentVolumeSource) SwaggerDoc() map[string]string { + return map_PersistentVolumeSource +} + +var map_PersistentVolumeSpec = map[string]string{ + "": "PersistentVolumeSpec is the specification of a persistent volume.", + "capacity": "A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", + "accessModes": "AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes", + "claimRef": "ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding", + "persistentVolumeReclaimPolicy": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming", + "storageClassName": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.", +} + +func (PersistentVolumeSpec) SwaggerDoc() map[string]string { + return map_PersistentVolumeSpec +} + +var map_PersistentVolumeStatus = map[string]string{ + "": "PersistentVolumeStatus is the current status of a persistent volume.", + "phase": "Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase", + "message": "A human-readable message indicating details about why the volume is in this state.", + "reason": "Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.", +} + +func (PersistentVolumeStatus) SwaggerDoc() map[string]string { + return map_PersistentVolumeStatus +} + +var map_PhotonPersistentDiskVolumeSource = map[string]string{ + "": "Represents a Photon Controller persistent disk resource.", + "pdID": "ID that identifies Photon Controller persistent disk", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", +} + +func (PhotonPersistentDiskVolumeSource) SwaggerDoc() map[string]string { + return map_PhotonPersistentDiskVolumeSource +} + +var map_Pod = map[string]string{ + "": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Pod) SwaggerDoc() map[string]string { + return map_Pod +} + +var map_PodAffinity = map[string]string{ + "": "Pod affinity is a group of inter pod affinity scheduling rules.", + "requiredDuringSchedulingIgnoredDuringExecution": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", +} + +func (PodAffinity) SwaggerDoc() map[string]string { + return map_PodAffinity +} + +var map_PodAffinityTerm = map[string]string{ + "": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key tches that of any node on which a pod of the set of pods is running", + "labelSelector": "A label query over a set of resources, in this case pods.", + "namespaces": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"", + "topologyKey": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.", +} + +func (PodAffinityTerm) SwaggerDoc() map[string]string { + return map_PodAffinityTerm +} + +var map_PodAntiAffinity = map[string]string{ + "": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", + "requiredDuringSchedulingIgnoredDuringExecution": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", +} + +func (PodAntiAffinity) SwaggerDoc() map[string]string { + return map_PodAntiAffinity +} + +var map_PodAttachOptions = map[string]string{ + "": "PodAttachOptions is the query options to a Pod's remote attach call.", + "stdin": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", + "stdout": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", + "stderr": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", + "tty": "TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.", + "container": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", +} + +func (PodAttachOptions) SwaggerDoc() map[string]string { + return map_PodAttachOptions +} + +var map_PodCondition = map[string]string{ + "": "PodCondition contains details for the current condition of this pod.", + "type": "Type is the type of the condition. Currently only Ready. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", + "status": "Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", + "lastProbeTime": "Last time we probed the condition.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "Unique, one-word, CamelCase reason for the condition's last transition.", + "message": "Human-readable message indicating details about last transition.", +} + +func (PodCondition) SwaggerDoc() map[string]string { + return map_PodCondition +} + +var map_PodExecOptions = map[string]string{ + "": "PodExecOptions is the query options to a Pod's remote exec call.", + "stdin": "Redirect the standard input stream of the pod for this call. Defaults to false.", + "stdout": "Redirect the standard output stream of the pod for this call. Defaults to true.", + "stderr": "Redirect the standard error stream of the pod for this call. Defaults to true.", + "tty": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", + "container": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", + "command": "Command is the remote command to execute. argv array. Not executed within a shell.", +} + +func (PodExecOptions) SwaggerDoc() map[string]string { + return map_PodExecOptions +} + +var map_PodList = map[string]string{ + "": "PodList is a list of Pods.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md", +} + +func (PodList) SwaggerDoc() map[string]string { + return map_PodList +} + +var map_PodLogOptions = map[string]string{ + "": "PodLogOptions is the query options for a Pod's logs REST call.", + "container": "The container for which to stream logs. Defaults to only container if there is one container in the pod.", + "follow": "Follow the log stream of the pod. Defaults to false.", + "previous": "Return previous terminated container logs. Defaults to false.", + "sinceSeconds": "A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.", + "sinceTime": "An RFC3339 timestamp from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.", + "timestamps": "If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.", + "tailLines": "If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime", + "limitBytes": "If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.", +} + +func (PodLogOptions) SwaggerDoc() map[string]string { + return map_PodLogOptions +} + +var map_PodPortForwardOptions = map[string]string{ + "": "PodPortForwardOptions is the query options to a Pod's port forward call when using WebSockets. The `port` query parameter must specify the port or ports (comma separated) to forward over. Port forwarding over SPDY does not use these options. It requires the port to be passed in the `port` header as part of request.", + "ports": "List of ports to forward Required when using WebSockets", +} + +func (PodPortForwardOptions) SwaggerDoc() map[string]string { + return map_PodPortForwardOptions +} + +var map_PodProxyOptions = map[string]string{ + "": "PodProxyOptions is the query options to a Pod's proxy call.", + "path": "Path is the URL path to use for the current proxy request to pod.", +} + +func (PodProxyOptions) SwaggerDoc() map[string]string { + return map_PodProxyOptions +} + +var map_PodSecurityContext = map[string]string{ + "": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", + "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", + "fsGroup": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", +} + +func (PodSecurityContext) SwaggerDoc() map[string]string { + return map_PodSecurityContext +} + +var map_PodSignature = map[string]string{ + "": "Describes the class of pods that should avoid this node. Exactly one field should be set.", + "podController": "Reference to controller whose pods should avoid this node.", +} + +func (PodSignature) SwaggerDoc() map[string]string { + return map_PodSignature +} + +var map_PodSpec = map[string]string{ + "": "PodSpec is a description of a pod.", + "volumes": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", + "initContainers": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/", + "containers": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.", + "restartPolicy": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", + "terminationGracePeriodSeconds": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.", + "activeDeadlineSeconds": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.", + "dnsPolicy": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "nodeSelector": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + "serviceAccountName": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "serviceAccount": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", + "automountServiceAccountToken": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", + "nodeName": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", + "hostNetwork": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", + "hostPID": "Use the host's pid namespace. Optional: Default to false.", + "hostIPC": "Use the host's ipc namespace. Optional: Default to false.", + "securityContext": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", + "imagePullSecrets": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod", + "hostname": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", + "subdomain": "If specified, the fully qualified Pod hostname will be \"...svc.\". If not specified, the pod will not have a domainname at all.", + "affinity": "If specified, the pod's scheduling constraints", + "schedulerName": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", + "tolerations": "If specified, the pod's tolerations.", + "hostAliases": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", +} + +func (PodSpec) SwaggerDoc() map[string]string { + return map_PodSpec +} + +var map_PodStatus = map[string]string{ + "": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", + "phase": "Current condition of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase", + "conditions": "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", + "message": "A human readable message indicating details about why the pod is in this condition.", + "reason": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk'", + "hostIP": "IP address of the host to which the pod is assigned. Empty if not yet scheduled.", + "podIP": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.", + "startTime": "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.", + "initContainerStatuses": "The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", + "containerStatuses": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", + "qosClass": "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md", +} + +func (PodStatus) SwaggerDoc() map[string]string { + return map_PodStatus +} + +var map_PodStatusResult = map[string]string{ + "": "PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "status": "Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (PodStatusResult) SwaggerDoc() map[string]string { + return map_PodStatusResult +} + +var map_PodTemplate = map[string]string{ + "": "PodTemplate describes a template for creating copies of a predefined pod.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "template": "Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (PodTemplate) SwaggerDoc() map[string]string { + return map_PodTemplate +} + +var map_PodTemplateList = map[string]string{ + "": "PodTemplateList is a list of PodTemplates.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of pod templates", +} + +func (PodTemplateList) SwaggerDoc() map[string]string { + return map_PodTemplateList +} + +var map_PodTemplateSpec = map[string]string{ + "": "PodTemplateSpec describes the data a pod should have when created from a template", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (PodTemplateSpec) SwaggerDoc() map[string]string { + return map_PodTemplateSpec +} + +var map_PortworxVolumeSource = map[string]string{ + "": "PortworxVolumeSource represents a Portworx volume resource.", + "volumeID": "VolumeID uniquely identifies a Portworx volume", + "fsType": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (PortworxVolumeSource) SwaggerDoc() map[string]string { + return map_PortworxVolumeSource +} + +var map_Preconditions = map[string]string{ + "": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", + "uid": "Specifies the target UID.", +} + +func (Preconditions) SwaggerDoc() map[string]string { + return map_Preconditions +} + +var map_PreferAvoidPodsEntry = map[string]string{ + "": "Describes a class of pods that should avoid this node.", + "podSignature": "The class of pods.", + "evictionTime": "Time at which this entry was added to the list.", + "reason": "(brief) reason why this entry was added to the list.", + "message": "Human readable message indicating why this entry was added to the list.", +} + +func (PreferAvoidPodsEntry) SwaggerDoc() map[string]string { + return map_PreferAvoidPodsEntry +} + +var map_PreferredSchedulingTerm = map[string]string{ + "": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "weight": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "preference": "A node selector term, associated with the corresponding weight.", +} + +func (PreferredSchedulingTerm) SwaggerDoc() map[string]string { + return map_PreferredSchedulingTerm +} + +var map_Probe = map[string]string{ + "": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", + "initialDelaySeconds": "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "timeoutSeconds": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "periodSeconds": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", + "successThreshold": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", + "failureThreshold": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", +} + +func (Probe) SwaggerDoc() map[string]string { + return map_Probe +} + +var map_ProjectedVolumeSource = map[string]string{ + "": "Represents a projected volume source", + "sources": "list of volume projections", + "defaultMode": "Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (ProjectedVolumeSource) SwaggerDoc() map[string]string { + return map_ProjectedVolumeSource +} + +var map_QuobyteVolumeSource = map[string]string{ + "": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", + "registry": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes", + "volume": "Volume is a string that references an already created Quobyte volume by name.", + "readOnly": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", + "user": "User to map volume access to Defaults to serivceaccount user", + "group": "Group to map volume access to Default is no group", +} + +func (QuobyteVolumeSource) SwaggerDoc() map[string]string { + return map_QuobyteVolumeSource +} + +var map_RBDVolumeSource = map[string]string{ + "": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", + "monitors": "A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "image": "The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd", + "pool": "The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "user": "The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "keyring": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "secretRef": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", +} + +func (RBDVolumeSource) SwaggerDoc() map[string]string { + return map_RBDVolumeSource +} + +var map_RangeAllocation = map[string]string{ + "": "RangeAllocation is not a public type.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "range": "Range is string that identifies the range represented by 'data'.", + "data": "Data is a bit array containing all allocated addresses in the previous segment.", +} + +func (RangeAllocation) SwaggerDoc() map[string]string { + return map_RangeAllocation +} + +var map_ReplicationController = map[string]string{ + "": "ReplicationController represents the configuration of a replication controller.", + "metadata": "If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (ReplicationController) SwaggerDoc() map[string]string { + return map_ReplicationController +} + +var map_ReplicationControllerCondition = map[string]string{ + "": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", + "type": "Type of replication controller condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastTransitionTime": "The last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (ReplicationControllerCondition) SwaggerDoc() map[string]string { + return map_ReplicationControllerCondition +} + +var map_ReplicationControllerList = map[string]string{ + "": "ReplicationControllerList is a collection of replication controllers.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", +} + +func (ReplicationControllerList) SwaggerDoc() map[string]string { + return map_ReplicationControllerList +} + +var map_ReplicationControllerSpec = map[string]string{ + "": "ReplicationControllerSpec is the specification of a replication controller.", + "replicas": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "selector": "Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", +} + +func (ReplicationControllerSpec) SwaggerDoc() map[string]string { + return map_ReplicationControllerSpec +} + +var map_ReplicationControllerStatus = map[string]string{ + "": "ReplicationControllerStatus represents the current status of a replication controller.", + "replicas": "Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", + "fullyLabeledReplicas": "The number of pods that have labels matching the labels of the pod template of the replication controller.", + "readyReplicas": "The number of ready replicas for this replication controller.", + "availableReplicas": "The number of available replicas (ready for at least minReadySeconds) for this replication controller.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed replication controller.", + "conditions": "Represents the latest available observations of a replication controller's current state.", +} + +func (ReplicationControllerStatus) SwaggerDoc() map[string]string { + return map_ReplicationControllerStatus +} + +var map_ResourceFieldSelector = map[string]string{ + "": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", + "containerName": "Container name: required for volumes, optional for env vars", + "resource": "Required: resource to select", + "divisor": "Specifies the output format of the exposed resources, defaults to \"1\"", +} + +func (ResourceFieldSelector) SwaggerDoc() map[string]string { + return map_ResourceFieldSelector +} + +var map_ResourceQuota = map[string]string{ + "": "ResourceQuota sets aggregate quota restrictions enforced per namespace", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (ResourceQuota) SwaggerDoc() map[string]string { + return map_ResourceQuota +} + +var map_ResourceQuotaList = map[string]string{ + "": "ResourceQuotaList is a list of ResourceQuota items.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is a list of ResourceQuota objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", +} + +func (ResourceQuotaList) SwaggerDoc() map[string]string { + return map_ResourceQuotaList +} + +var map_ResourceQuotaSpec = map[string]string{ + "": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", + "hard": "Hard is the set of desired hard limits for each named resource. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", + "scopes": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.", +} + +func (ResourceQuotaSpec) SwaggerDoc() map[string]string { + return map_ResourceQuotaSpec +} + +var map_ResourceQuotaStatus = map[string]string{ + "": "ResourceQuotaStatus defines the enforced hard limits and observed use.", + "hard": "Hard is the set of enforced hard limits for each named resource. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", + "used": "Used is the current observed total usage of the resource in the namespace.", +} + +func (ResourceQuotaStatus) SwaggerDoc() map[string]string { + return map_ResourceQuotaStatus +} + +var map_ResourceRequirements = map[string]string{ + "": "ResourceRequirements describes the compute resource requirements.", + "limits": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "requests": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", +} + +func (ResourceRequirements) SwaggerDoc() map[string]string { + return map_ResourceRequirements +} + +var map_SELinuxOptions = map[string]string{ + "": "SELinuxOptions are the labels to be applied to the container", + "user": "User is a SELinux user label that applies to the container.", + "role": "Role is a SELinux role label that applies to the container.", + "type": "Type is a SELinux type label that applies to the container.", + "level": "Level is SELinux level label that applies to the container.", +} + +func (SELinuxOptions) SwaggerDoc() map[string]string { + return map_SELinuxOptions +} + +var map_ScaleIOVolumeSource = map[string]string{ + "": "ScaleIOVolumeSource represents a persistent ScaleIO volume", + "gateway": "The host address of the ScaleIO API Gateway.", + "system": "The name of the storage system as configured in ScaleIO.", + "secretRef": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", + "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", + "protectionDomain": "The name of the Protection Domain for the configured storage (defaults to \"default\").", + "storagePool": "The Storage Pool associated with the protection domain (defaults to \"default\").", + "storageMode": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", + "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (ScaleIOVolumeSource) SwaggerDoc() map[string]string { + return map_ScaleIOVolumeSource +} + +var map_Secret = map[string]string{ + "": "Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4", + "stringData": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.", + "type": "Used to facilitate programmatic handling of secret data.", +} + +func (Secret) SwaggerDoc() map[string]string { + return map_Secret +} + +var map_SecretEnvSource = map[string]string{ + "": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", + "optional": "Specify whether the Secret must be defined", +} + +func (SecretEnvSource) SwaggerDoc() map[string]string { + return map_SecretEnvSource +} + +var map_SecretKeySelector = map[string]string{ + "": "SecretKeySelector selects a key of a Secret.", + "key": "The key of the secret to select from. Must be a valid secret key.", + "optional": "Specify whether the Secret or it's key must be defined", +} + +func (SecretKeySelector) SwaggerDoc() map[string]string { + return map_SecretKeySelector +} + +var map_SecretList = map[string]string{ + "": "SecretList is a list of Secret.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret", +} + +func (SecretList) SwaggerDoc() map[string]string { + return map_SecretList +} + +var map_SecretProjection = map[string]string{ + "": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", + "items": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "optional": "Specify whether the Secret or its key must be defined", +} + +func (SecretProjection) SwaggerDoc() map[string]string { + return map_SecretProjection +} + +var map_SecretVolumeSource = map[string]string{ + "": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", + "secretName": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "items": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "defaultMode": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "optional": "Specify whether the Secret or it's keys must be defined", +} + +func (SecretVolumeSource) SwaggerDoc() map[string]string { + return map_SecretVolumeSource +} + +var map_SecurityContext = map[string]string{ + "": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", + "capabilities": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", + "privileged": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", + "seLinuxOptions": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "readOnlyRootFilesystem": "Whether this container has a read-only root filesystem. Default is false.", +} + +func (SecurityContext) SwaggerDoc() map[string]string { + return map_SecurityContext +} + +var map_SerializedReference = map[string]string{ + "": "SerializedReference is a reference to serialized object.", + "reference": "The reference to an object in the system.", +} + +func (SerializedReference) SwaggerDoc() map[string]string { + return map_SerializedReference +} + +var map_Service = map[string]string{ + "": "Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Service) SwaggerDoc() map[string]string { + return map_Service +} + +var map_ServiceAccount = map[string]string{ + "": "ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "secrets": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret", + "imagePullSecrets": "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod", + "automountServiceAccountToken": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.", +} + +func (ServiceAccount) SwaggerDoc() map[string]string { + return map_ServiceAccount +} + +var map_ServiceAccountList = map[string]string{ + "": "ServiceAccountList is a list of ServiceAccount objects", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", +} + +func (ServiceAccountList) SwaggerDoc() map[string]string { + return map_ServiceAccountList +} + +var map_ServiceList = map[string]string{ + "": "ServiceList holds a list of services.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of services", +} + +func (ServiceList) SwaggerDoc() map[string]string { + return map_ServiceList +} + +var map_ServicePort = map[string]string{ + "": "ServicePort contains information on service's port.", + "name": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service.", + "protocol": "The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default is TCP.", + "port": "The port that will be exposed by this service.", + "targetPort": "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service", + "nodePort": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport", +} + +func (ServicePort) SwaggerDoc() map[string]string { + return map_ServicePort +} + +var map_ServiceProxyOptions = map[string]string{ + "": "ServiceProxyOptions is the query options to a Service's proxy call.", + "path": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", +} + +func (ServiceProxyOptions) SwaggerDoc() map[string]string { + return map_ServiceProxyOptions +} + +var map_ServiceSpec = map[string]string{ + "": "ServiceSpec describes the attributes that a user creates on a service.", + "ports": "The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", + "selector": "Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/", + "clusterIP": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", + "type": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services ", + "externalIPs": "externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.", + "sessionAffinity": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", + "loadBalancerIP": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.", + "loadBalancerSourceRanges": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/", + "externalName": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName.", + "externalTrafficPolicy": "externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.", + "healthCheckNodePort": "healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.", +} + +func (ServiceSpec) SwaggerDoc() map[string]string { + return map_ServiceSpec +} + +var map_ServiceStatus = map[string]string{ + "": "ServiceStatus represents the current status of a service.", + "loadBalancer": "LoadBalancer contains the current status of the load-balancer, if one is present.", +} + +func (ServiceStatus) SwaggerDoc() map[string]string { + return map_ServiceStatus +} + +var map_StorageOSPersistentVolumeSource = map[string]string{ + "": "Represents a StorageOS persistent volume resource.", + "volumeName": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", + "volumeNamespace": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "secretRef": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", +} + +func (StorageOSPersistentVolumeSource) SwaggerDoc() map[string]string { + return map_StorageOSPersistentVolumeSource +} + +var map_StorageOSVolumeSource = map[string]string{ + "": "Represents a StorageOS persistent volume resource.", + "volumeName": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", + "volumeNamespace": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "secretRef": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", +} + +func (StorageOSVolumeSource) SwaggerDoc() map[string]string { + return map_StorageOSVolumeSource +} + +var map_Sysctl = map[string]string{ + "": "Sysctl defines a kernel parameter to be set", + "Name": "Name of a property to set", + "Value": "Value of a property to set", +} + +func (Sysctl) SwaggerDoc() map[string]string { + return map_Sysctl +} + +var map_TCPSocketAction = map[string]string{ + "": "TCPSocketAction describes an action based on opening a socket", + "port": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "host": "Optional: Host name to connect to, defaults to the pod IP.", +} + +func (TCPSocketAction) SwaggerDoc() map[string]string { + return map_TCPSocketAction +} + +var map_Taint = map[string]string{ + "": "The node this Taint is attached to has the effect \"effect\" on any pod that that does not tolerate the Taint.", + "key": "Required. The taint key to be applied to a node.", + "value": "Required. The taint value corresponding to the taint key.", + "effect": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.", + "timeAdded": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.", +} + +func (Taint) SwaggerDoc() map[string]string { + return map_Taint +} + +var map_Toleration = map[string]string{ + "": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", + "key": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "operator": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", + "value": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", + "effect": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", + "tolerationSeconds": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", +} + +func (Toleration) SwaggerDoc() map[string]string { + return map_Toleration +} + +var map_Volume = map[string]string{ + "": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", + "name": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", +} + +func (Volume) SwaggerDoc() map[string]string { + return map_Volume +} + +var map_VolumeMount = map[string]string{ + "": "VolumeMount describes a mounting of a Volume within a container.", + "name": "This must match the Name of a Volume.", + "readOnly": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", + "mountPath": "Path within the container at which the volume should be mounted. Must not contain ':'.", + "subPath": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", +} + +func (VolumeMount) SwaggerDoc() map[string]string { + return map_VolumeMount +} + +var map_VolumeProjection = map[string]string{ + "": "Projection that may be projected along with other supported volume types", + "secret": "information about the secret data to project", + "downwardAPI": "information about the downwardAPI data to project", + "configMap": "information about the configMap data to project", +} + +func (VolumeProjection) SwaggerDoc() map[string]string { + return map_VolumeProjection +} + +var map_VolumeSource = map[string]string{ + "": "Represents the source of a volume to mount. Only one of its members may be specified.", + "hostPath": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "emptyDir": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", + "gcePersistentDisk": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "awsElasticBlockStore": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "gitRepo": "GitRepo represents a git repository at a particular revision.", + "secret": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "nfs": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "iscsi": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md", + "glusterfs": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", + "persistentVolumeClaim": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "rbd": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", + "flexVolume": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", + "cinder": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "cephfs": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", + "flocker": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", + "downwardAPI": "DownwardAPI represents downward API about the pod that should populate this volume", + "fc": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", + "azureFile": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "configMap": "ConfigMap represents a configMap that should populate this volume", + "vsphereVolume": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", + "quobyte": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", + "azureDisk": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", + "photonPersistentDisk": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", + "projected": "Items for all in one resources secrets, configmaps, and downward API", + "portworxVolume": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", + "scaleIO": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", + "storageos": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", +} + +func (VolumeSource) SwaggerDoc() map[string]string { + return map_VolumeSource +} + +var map_VsphereVirtualDiskVolumeSource = map[string]string{ + "": "Represents a vSphere volume resource.", + "volumePath": "Path that identifies vSphere volume vmdk", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "storagePolicyName": "Storage Policy Based Management (SPBM) profile name.", + "storagePolicyID": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", +} + +func (VsphereVirtualDiskVolumeSource) SwaggerDoc() map[string]string { + return map_VsphereVirtualDiskVolumeSource +} + +var map_WeightedPodAffinityTerm = map[string]string{ + "": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "weight": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "podAffinityTerm": "Required. A pod affinity term, associated with the corresponding weight.", +} + +func (WeightedPodAffinityTerm) SwaggerDoc() map[string]string { + return map_WeightedPodAffinityTerm +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.conversion.go new file mode 100644 index 000000000..1832c432b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.conversion.go @@ -0,0 +1,5168 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + types "k8s.io/apimachinery/pkg/types" + api "k8s.io/client-go/pkg/api" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource, + Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource, + Convert_v1_Affinity_To_api_Affinity, + Convert_api_Affinity_To_v1_Affinity, + Convert_v1_AttachedVolume_To_api_AttachedVolume, + Convert_api_AttachedVolume_To_v1_AttachedVolume, + Convert_v1_AvoidPods_To_api_AvoidPods, + Convert_api_AvoidPods_To_v1_AvoidPods, + Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource, + Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource, + Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource, + Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource, + Convert_v1_Binding_To_api_Binding, + Convert_api_Binding_To_v1_Binding, + Convert_v1_Capabilities_To_api_Capabilities, + Convert_api_Capabilities_To_v1_Capabilities, + Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource, + Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource, + Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource, + Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource, + Convert_v1_ComponentCondition_To_api_ComponentCondition, + Convert_api_ComponentCondition_To_v1_ComponentCondition, + Convert_v1_ComponentStatus_To_api_ComponentStatus, + Convert_api_ComponentStatus_To_v1_ComponentStatus, + Convert_v1_ComponentStatusList_To_api_ComponentStatusList, + Convert_api_ComponentStatusList_To_v1_ComponentStatusList, + Convert_v1_ConfigMap_To_api_ConfigMap, + Convert_api_ConfigMap_To_v1_ConfigMap, + Convert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource, + Convert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource, + Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector, + Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector, + Convert_v1_ConfigMapList_To_api_ConfigMapList, + Convert_api_ConfigMapList_To_v1_ConfigMapList, + Convert_v1_ConfigMapProjection_To_api_ConfigMapProjection, + Convert_api_ConfigMapProjection_To_v1_ConfigMapProjection, + Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource, + Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource, + Convert_v1_Container_To_api_Container, + Convert_api_Container_To_v1_Container, + Convert_v1_ContainerImage_To_api_ContainerImage, + Convert_api_ContainerImage_To_v1_ContainerImage, + Convert_v1_ContainerPort_To_api_ContainerPort, + Convert_api_ContainerPort_To_v1_ContainerPort, + Convert_v1_ContainerState_To_api_ContainerState, + Convert_api_ContainerState_To_v1_ContainerState, + Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning, + Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning, + Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated, + Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated, + Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting, + Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting, + Convert_v1_ContainerStatus_To_api_ContainerStatus, + Convert_api_ContainerStatus_To_v1_ContainerStatus, + Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint, + Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint, + Convert_v1_DeleteOptions_To_api_DeleteOptions, + Convert_api_DeleteOptions_To_v1_DeleteOptions, + Convert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection, + Convert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection, + Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile, + Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile, + Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource, + Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource, + Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource, + Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource, + Convert_v1_EndpointAddress_To_api_EndpointAddress, + Convert_api_EndpointAddress_To_v1_EndpointAddress, + Convert_v1_EndpointPort_To_api_EndpointPort, + Convert_api_EndpointPort_To_v1_EndpointPort, + Convert_v1_EndpointSubset_To_api_EndpointSubset, + Convert_api_EndpointSubset_To_v1_EndpointSubset, + Convert_v1_Endpoints_To_api_Endpoints, + Convert_api_Endpoints_To_v1_Endpoints, + Convert_v1_EndpointsList_To_api_EndpointsList, + Convert_api_EndpointsList_To_v1_EndpointsList, + Convert_v1_EnvFromSource_To_api_EnvFromSource, + Convert_api_EnvFromSource_To_v1_EnvFromSource, + Convert_v1_EnvVar_To_api_EnvVar, + Convert_api_EnvVar_To_v1_EnvVar, + Convert_v1_EnvVarSource_To_api_EnvVarSource, + Convert_api_EnvVarSource_To_v1_EnvVarSource, + Convert_v1_Event_To_api_Event, + Convert_api_Event_To_v1_Event, + Convert_v1_EventList_To_api_EventList, + Convert_api_EventList_To_v1_EventList, + Convert_v1_EventSource_To_api_EventSource, + Convert_api_EventSource_To_v1_EventSource, + Convert_v1_ExecAction_To_api_ExecAction, + Convert_api_ExecAction_To_v1_ExecAction, + Convert_v1_FCVolumeSource_To_api_FCVolumeSource, + Convert_api_FCVolumeSource_To_v1_FCVolumeSource, + Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource, + Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource, + Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource, + Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource, + Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource, + Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource, + Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource, + Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource, + Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource, + Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource, + Convert_v1_HTTPGetAction_To_api_HTTPGetAction, + Convert_api_HTTPGetAction_To_v1_HTTPGetAction, + Convert_v1_HTTPHeader_To_api_HTTPHeader, + Convert_api_HTTPHeader_To_v1_HTTPHeader, + Convert_v1_Handler_To_api_Handler, + Convert_api_Handler_To_v1_Handler, + Convert_v1_HostAlias_To_api_HostAlias, + Convert_api_HostAlias_To_v1_HostAlias, + Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource, + Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource, + Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource, + Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource, + Convert_v1_KeyToPath_To_api_KeyToPath, + Convert_api_KeyToPath_To_v1_KeyToPath, + Convert_v1_Lifecycle_To_api_Lifecycle, + Convert_api_Lifecycle_To_v1_Lifecycle, + Convert_v1_LimitRange_To_api_LimitRange, + Convert_api_LimitRange_To_v1_LimitRange, + Convert_v1_LimitRangeItem_To_api_LimitRangeItem, + Convert_api_LimitRangeItem_To_v1_LimitRangeItem, + Convert_v1_LimitRangeList_To_api_LimitRangeList, + Convert_api_LimitRangeList_To_v1_LimitRangeList, + Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec, + Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec, + Convert_v1_List_To_api_List, + Convert_api_List_To_v1_List, + Convert_v1_ListOptions_To_api_ListOptions, + Convert_api_ListOptions_To_v1_ListOptions, + Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress, + Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress, + Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus, + Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus, + Convert_v1_LocalObjectReference_To_api_LocalObjectReference, + Convert_api_LocalObjectReference_To_v1_LocalObjectReference, + Convert_v1_LocalVolumeSource_To_api_LocalVolumeSource, + Convert_api_LocalVolumeSource_To_v1_LocalVolumeSource, + Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource, + Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource, + Convert_v1_Namespace_To_api_Namespace, + Convert_api_Namespace_To_v1_Namespace, + Convert_v1_NamespaceList_To_api_NamespaceList, + Convert_api_NamespaceList_To_v1_NamespaceList, + Convert_v1_NamespaceSpec_To_api_NamespaceSpec, + Convert_api_NamespaceSpec_To_v1_NamespaceSpec, + Convert_v1_NamespaceStatus_To_api_NamespaceStatus, + Convert_api_NamespaceStatus_To_v1_NamespaceStatus, + Convert_v1_Node_To_api_Node, + Convert_api_Node_To_v1_Node, + Convert_v1_NodeAddress_To_api_NodeAddress, + Convert_api_NodeAddress_To_v1_NodeAddress, + Convert_v1_NodeAffinity_To_api_NodeAffinity, + Convert_api_NodeAffinity_To_v1_NodeAffinity, + Convert_v1_NodeCondition_To_api_NodeCondition, + Convert_api_NodeCondition_To_v1_NodeCondition, + Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints, + Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints, + Convert_v1_NodeList_To_api_NodeList, + Convert_api_NodeList_To_v1_NodeList, + Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions, + Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions, + Convert_v1_NodeResources_To_api_NodeResources, + Convert_api_NodeResources_To_v1_NodeResources, + Convert_v1_NodeSelector_To_api_NodeSelector, + Convert_api_NodeSelector_To_v1_NodeSelector, + Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement, + Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement, + Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm, + Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm, + Convert_v1_NodeSpec_To_api_NodeSpec, + Convert_api_NodeSpec_To_v1_NodeSpec, + Convert_v1_NodeStatus_To_api_NodeStatus, + Convert_api_NodeStatus_To_v1_NodeStatus, + Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo, + Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo, + Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector, + Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector, + Convert_v1_ObjectMeta_To_api_ObjectMeta, + Convert_api_ObjectMeta_To_v1_ObjectMeta, + Convert_v1_ObjectReference_To_api_ObjectReference, + Convert_api_ObjectReference_To_v1_ObjectReference, + Convert_v1_PersistentVolume_To_api_PersistentVolume, + Convert_api_PersistentVolume_To_v1_PersistentVolume, + Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim, + Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim, + Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList, + Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList, + Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec, + Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec, + Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus, + Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus, + Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource, + Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource, + Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList, + Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList, + Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource, + Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource, + Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec, + Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec, + Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus, + Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus, + Convert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource, + Convert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource, + Convert_v1_Pod_To_api_Pod, + Convert_api_Pod_To_v1_Pod, + Convert_v1_PodAffinity_To_api_PodAffinity, + Convert_api_PodAffinity_To_v1_PodAffinity, + Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm, + Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm, + Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity, + Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity, + Convert_v1_PodAttachOptions_To_api_PodAttachOptions, + Convert_api_PodAttachOptions_To_v1_PodAttachOptions, + Convert_v1_PodCondition_To_api_PodCondition, + Convert_api_PodCondition_To_v1_PodCondition, + Convert_v1_PodExecOptions_To_api_PodExecOptions, + Convert_api_PodExecOptions_To_v1_PodExecOptions, + Convert_v1_PodList_To_api_PodList, + Convert_api_PodList_To_v1_PodList, + Convert_v1_PodLogOptions_To_api_PodLogOptions, + Convert_api_PodLogOptions_To_v1_PodLogOptions, + Convert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions, + Convert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions, + Convert_v1_PodProxyOptions_To_api_PodProxyOptions, + Convert_api_PodProxyOptions_To_v1_PodProxyOptions, + Convert_v1_PodSecurityContext_To_api_PodSecurityContext, + Convert_api_PodSecurityContext_To_v1_PodSecurityContext, + Convert_v1_PodSignature_To_api_PodSignature, + Convert_api_PodSignature_To_v1_PodSignature, + Convert_v1_PodSpec_To_api_PodSpec, + Convert_api_PodSpec_To_v1_PodSpec, + Convert_v1_PodStatus_To_api_PodStatus, + Convert_api_PodStatus_To_v1_PodStatus, + Convert_v1_PodStatusResult_To_api_PodStatusResult, + Convert_api_PodStatusResult_To_v1_PodStatusResult, + Convert_v1_PodTemplate_To_api_PodTemplate, + Convert_api_PodTemplate_To_v1_PodTemplate, + Convert_v1_PodTemplateList_To_api_PodTemplateList, + Convert_api_PodTemplateList_To_v1_PodTemplateList, + Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec, + Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec, + Convert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource, + Convert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource, + Convert_v1_Preconditions_To_api_Preconditions, + Convert_api_Preconditions_To_v1_Preconditions, + Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry, + Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry, + Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm, + Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm, + Convert_v1_Probe_To_api_Probe, + Convert_api_Probe_To_v1_Probe, + Convert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource, + Convert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource, + Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource, + Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource, + Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource, + Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource, + Convert_v1_RangeAllocation_To_api_RangeAllocation, + Convert_api_RangeAllocation_To_v1_RangeAllocation, + Convert_v1_ReplicationController_To_api_ReplicationController, + Convert_api_ReplicationController_To_v1_ReplicationController, + Convert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition, + Convert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition, + Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList, + Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList, + Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec, + Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec, + Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus, + Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus, + Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector, + Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector, + Convert_v1_ResourceQuota_To_api_ResourceQuota, + Convert_api_ResourceQuota_To_v1_ResourceQuota, + Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList, + Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList, + Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec, + Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec, + Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus, + Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus, + Convert_v1_ResourceRequirements_To_api_ResourceRequirements, + Convert_api_ResourceRequirements_To_v1_ResourceRequirements, + Convert_v1_SELinuxOptions_To_api_SELinuxOptions, + Convert_api_SELinuxOptions_To_v1_SELinuxOptions, + Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource, + Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource, + Convert_v1_Secret_To_api_Secret, + Convert_api_Secret_To_v1_Secret, + Convert_v1_SecretEnvSource_To_api_SecretEnvSource, + Convert_api_SecretEnvSource_To_v1_SecretEnvSource, + Convert_v1_SecretKeySelector_To_api_SecretKeySelector, + Convert_api_SecretKeySelector_To_v1_SecretKeySelector, + Convert_v1_SecretList_To_api_SecretList, + Convert_api_SecretList_To_v1_SecretList, + Convert_v1_SecretProjection_To_api_SecretProjection, + Convert_api_SecretProjection_To_v1_SecretProjection, + Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource, + Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource, + Convert_v1_SecurityContext_To_api_SecurityContext, + Convert_api_SecurityContext_To_v1_SecurityContext, + Convert_v1_SerializedReference_To_api_SerializedReference, + Convert_api_SerializedReference_To_v1_SerializedReference, + Convert_v1_Service_To_api_Service, + Convert_api_Service_To_v1_Service, + Convert_v1_ServiceAccount_To_api_ServiceAccount, + Convert_api_ServiceAccount_To_v1_ServiceAccount, + Convert_v1_ServiceAccountList_To_api_ServiceAccountList, + Convert_api_ServiceAccountList_To_v1_ServiceAccountList, + Convert_v1_ServiceList_To_api_ServiceList, + Convert_api_ServiceList_To_v1_ServiceList, + Convert_v1_ServicePort_To_api_ServicePort, + Convert_api_ServicePort_To_v1_ServicePort, + Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions, + Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions, + Convert_v1_ServiceSpec_To_api_ServiceSpec, + Convert_api_ServiceSpec_To_v1_ServiceSpec, + Convert_v1_ServiceStatus_To_api_ServiceStatus, + Convert_api_ServiceStatus_To_v1_ServiceStatus, + Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource, + Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource, + Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource, + Convert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource, + Convert_v1_Sysctl_To_api_Sysctl, + Convert_api_Sysctl_To_v1_Sysctl, + Convert_v1_TCPSocketAction_To_api_TCPSocketAction, + Convert_api_TCPSocketAction_To_v1_TCPSocketAction, + Convert_v1_Taint_To_api_Taint, + Convert_api_Taint_To_v1_Taint, + Convert_v1_Toleration_To_api_Toleration, + Convert_api_Toleration_To_v1_Toleration, + Convert_v1_Volume_To_api_Volume, + Convert_api_Volume_To_v1_Volume, + Convert_v1_VolumeMount_To_api_VolumeMount, + Convert_api_VolumeMount_To_v1_VolumeMount, + Convert_v1_VolumeProjection_To_api_VolumeProjection, + Convert_api_VolumeProjection_To_v1_VolumeProjection, + Convert_v1_VolumeSource_To_api_VolumeSource, + Convert_api_VolumeSource_To_v1_VolumeSource, + Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource, + Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource, + Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm, + Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm, + ) +} + +func autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in *AWSElasticBlockStoreVolumeSource, out *api.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource is an autogenerated conversion function. +func Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in *AWSElasticBlockStoreVolumeSource, out *api.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + return autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in, out, s) +} + +func autoConvert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource is an autogenerated conversion function. +func Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + return autoConvert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in, out, s) +} + +func autoConvert_v1_Affinity_To_api_Affinity(in *Affinity, out *api.Affinity, s conversion.Scope) error { + out.NodeAffinity = (*api.NodeAffinity)(unsafe.Pointer(in.NodeAffinity)) + out.PodAffinity = (*api.PodAffinity)(unsafe.Pointer(in.PodAffinity)) + out.PodAntiAffinity = (*api.PodAntiAffinity)(unsafe.Pointer(in.PodAntiAffinity)) + return nil +} + +// Convert_v1_Affinity_To_api_Affinity is an autogenerated conversion function. +func Convert_v1_Affinity_To_api_Affinity(in *Affinity, out *api.Affinity, s conversion.Scope) error { + return autoConvert_v1_Affinity_To_api_Affinity(in, out, s) +} + +func autoConvert_api_Affinity_To_v1_Affinity(in *api.Affinity, out *Affinity, s conversion.Scope) error { + out.NodeAffinity = (*NodeAffinity)(unsafe.Pointer(in.NodeAffinity)) + out.PodAffinity = (*PodAffinity)(unsafe.Pointer(in.PodAffinity)) + out.PodAntiAffinity = (*PodAntiAffinity)(unsafe.Pointer(in.PodAntiAffinity)) + return nil +} + +// Convert_api_Affinity_To_v1_Affinity is an autogenerated conversion function. +func Convert_api_Affinity_To_v1_Affinity(in *api.Affinity, out *Affinity, s conversion.Scope) error { + return autoConvert_api_Affinity_To_v1_Affinity(in, out, s) +} + +func autoConvert_v1_AttachedVolume_To_api_AttachedVolume(in *AttachedVolume, out *api.AttachedVolume, s conversion.Scope) error { + out.Name = api.UniqueVolumeName(in.Name) + out.DevicePath = in.DevicePath + return nil +} + +// Convert_v1_AttachedVolume_To_api_AttachedVolume is an autogenerated conversion function. +func Convert_v1_AttachedVolume_To_api_AttachedVolume(in *AttachedVolume, out *api.AttachedVolume, s conversion.Scope) error { + return autoConvert_v1_AttachedVolume_To_api_AttachedVolume(in, out, s) +} + +func autoConvert_api_AttachedVolume_To_v1_AttachedVolume(in *api.AttachedVolume, out *AttachedVolume, s conversion.Scope) error { + out.Name = UniqueVolumeName(in.Name) + out.DevicePath = in.DevicePath + return nil +} + +// Convert_api_AttachedVolume_To_v1_AttachedVolume is an autogenerated conversion function. +func Convert_api_AttachedVolume_To_v1_AttachedVolume(in *api.AttachedVolume, out *AttachedVolume, s conversion.Scope) error { + return autoConvert_api_AttachedVolume_To_v1_AttachedVolume(in, out, s) +} + +func autoConvert_v1_AvoidPods_To_api_AvoidPods(in *AvoidPods, out *api.AvoidPods, s conversion.Scope) error { + out.PreferAvoidPods = *(*[]api.PreferAvoidPodsEntry)(unsafe.Pointer(&in.PreferAvoidPods)) + return nil +} + +// Convert_v1_AvoidPods_To_api_AvoidPods is an autogenerated conversion function. +func Convert_v1_AvoidPods_To_api_AvoidPods(in *AvoidPods, out *api.AvoidPods, s conversion.Scope) error { + return autoConvert_v1_AvoidPods_To_api_AvoidPods(in, out, s) +} + +func autoConvert_api_AvoidPods_To_v1_AvoidPods(in *api.AvoidPods, out *AvoidPods, s conversion.Scope) error { + out.PreferAvoidPods = *(*[]PreferAvoidPodsEntry)(unsafe.Pointer(&in.PreferAvoidPods)) + return nil +} + +// Convert_api_AvoidPods_To_v1_AvoidPods is an autogenerated conversion function. +func Convert_api_AvoidPods_To_v1_AvoidPods(in *api.AvoidPods, out *AvoidPods, s conversion.Scope) error { + return autoConvert_api_AvoidPods_To_v1_AvoidPods(in, out, s) +} + +func autoConvert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in *AzureDiskVolumeSource, out *api.AzureDiskVolumeSource, s conversion.Scope) error { + out.DiskName = in.DiskName + out.DataDiskURI = in.DataDiskURI + out.CachingMode = (*api.AzureDataDiskCachingMode)(unsafe.Pointer(in.CachingMode)) + out.FSType = (*string)(unsafe.Pointer(in.FSType)) + out.ReadOnly = (*bool)(unsafe.Pointer(in.ReadOnly)) + out.Kind = (*api.AzureDataDiskKind)(unsafe.Pointer(in.Kind)) + return nil +} + +// Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource is an autogenerated conversion function. +func Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in *AzureDiskVolumeSource, out *api.AzureDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in, out, s) +} + +func autoConvert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *api.AzureDiskVolumeSource, out *AzureDiskVolumeSource, s conversion.Scope) error { + out.DiskName = in.DiskName + out.DataDiskURI = in.DataDiskURI + out.CachingMode = (*AzureDataDiskCachingMode)(unsafe.Pointer(in.CachingMode)) + out.FSType = (*string)(unsafe.Pointer(in.FSType)) + out.ReadOnly = (*bool)(unsafe.Pointer(in.ReadOnly)) + out.Kind = (*AzureDataDiskKind)(unsafe.Pointer(in.Kind)) + return nil +} + +// Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource is an autogenerated conversion function. +func Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *api.AzureDiskVolumeSource, out *AzureDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in *AzureFileVolumeSource, out *api.AzureFileVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + out.ShareName = in.ShareName + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource is an autogenerated conversion function. +func Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in *AzureFileVolumeSource, out *api.AzureFileVolumeSource, s conversion.Scope) error { + return autoConvert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in, out, s) +} + +func autoConvert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *api.AzureFileVolumeSource, out *AzureFileVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + out.ShareName = in.ShareName + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource is an autogenerated conversion function. +func Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *api.AzureFileVolumeSource, out *AzureFileVolumeSource, s conversion.Scope) error { + return autoConvert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in, out, s) +} + +func autoConvert_v1_Binding_To_api_Binding(in *Binding, out *api.Binding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Binding_To_api_Binding is an autogenerated conversion function. +func Convert_v1_Binding_To_api_Binding(in *Binding, out *api.Binding, s conversion.Scope) error { + return autoConvert_v1_Binding_To_api_Binding(in, out, s) +} + +func autoConvert_api_Binding_To_v1_Binding(in *api.Binding, out *Binding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + return nil +} + +// Convert_api_Binding_To_v1_Binding is an autogenerated conversion function. +func Convert_api_Binding_To_v1_Binding(in *api.Binding, out *Binding, s conversion.Scope) error { + return autoConvert_api_Binding_To_v1_Binding(in, out, s) +} + +func autoConvert_v1_Capabilities_To_api_Capabilities(in *Capabilities, out *api.Capabilities, s conversion.Scope) error { + out.Add = *(*[]api.Capability)(unsafe.Pointer(&in.Add)) + out.Drop = *(*[]api.Capability)(unsafe.Pointer(&in.Drop)) + return nil +} + +// Convert_v1_Capabilities_To_api_Capabilities is an autogenerated conversion function. +func Convert_v1_Capabilities_To_api_Capabilities(in *Capabilities, out *api.Capabilities, s conversion.Scope) error { + return autoConvert_v1_Capabilities_To_api_Capabilities(in, out, s) +} + +func autoConvert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *Capabilities, s conversion.Scope) error { + out.Add = *(*[]Capability)(unsafe.Pointer(&in.Add)) + out.Drop = *(*[]Capability)(unsafe.Pointer(&in.Drop)) + return nil +} + +// Convert_api_Capabilities_To_v1_Capabilities is an autogenerated conversion function. +func Convert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *Capabilities, s conversion.Scope) error { + return autoConvert_api_Capabilities_To_v1_Capabilities(in, out, s) +} + +func autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error { + out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors)) + out.Path = in.Path + out.User = in.User + out.SecretFile = in.SecretFile + out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource is an autogenerated conversion function. +func Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error { + return autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in, out, s) +} + +func autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *CephFSVolumeSource, s conversion.Scope) error { + if in.Monitors == nil { + out.Monitors = make([]string, 0) + } else { + out.Monitors = *(*[]string)(unsafe.Pointer(&in.Monitors)) + } + out.Path = in.Path + out.User = in.User + out.SecretFile = in.SecretFile + out.SecretRef = (*LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource is an autogenerated conversion function. +func Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *CephFSVolumeSource, s conversion.Scope) error { + return autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in, out, s) +} + +func autoConvert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in *CinderVolumeSource, out *api.CinderVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource is an autogenerated conversion function. +func Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in *CinderVolumeSource, out *api.CinderVolumeSource, s conversion.Scope) error { + return autoConvert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in, out, s) +} + +func autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolumeSource, out *CinderVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource is an autogenerated conversion function. +func Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolumeSource, out *CinderVolumeSource, s conversion.Scope) error { + return autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in, out, s) +} + +func autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in *ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error { + out.Type = api.ComponentConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.Message = in.Message + out.Error = in.Error + return nil +} + +// Convert_v1_ComponentCondition_To_api_ComponentCondition is an autogenerated conversion function. +func Convert_v1_ComponentCondition_To_api_ComponentCondition(in *ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error { + return autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in, out, s) +} + +func autoConvert_api_ComponentCondition_To_v1_ComponentCondition(in *api.ComponentCondition, out *ComponentCondition, s conversion.Scope) error { + out.Type = ComponentConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + out.Message = in.Message + out.Error = in.Error + return nil +} + +// Convert_api_ComponentCondition_To_v1_ComponentCondition is an autogenerated conversion function. +func Convert_api_ComponentCondition_To_v1_ComponentCondition(in *api.ComponentCondition, out *ComponentCondition, s conversion.Scope) error { + return autoConvert_api_ComponentCondition_To_v1_ComponentCondition(in, out, s) +} + +func autoConvert_v1_ComponentStatus_To_api_ComponentStatus(in *ComponentStatus, out *api.ComponentStatus, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Conditions = *(*[]api.ComponentCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_v1_ComponentStatus_To_api_ComponentStatus is an autogenerated conversion function. +func Convert_v1_ComponentStatus_To_api_ComponentStatus(in *ComponentStatus, out *api.ComponentStatus, s conversion.Scope) error { + return autoConvert_v1_ComponentStatus_To_api_ComponentStatus(in, out, s) +} + +func autoConvert_api_ComponentStatus_To_v1_ComponentStatus(in *api.ComponentStatus, out *ComponentStatus, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Conditions = *(*[]ComponentCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_api_ComponentStatus_To_v1_ComponentStatus is an autogenerated conversion function. +func Convert_api_ComponentStatus_To_v1_ComponentStatus(in *api.ComponentStatus, out *ComponentStatus, s conversion.Scope) error { + return autoConvert_api_ComponentStatus_To_v1_ComponentStatus(in, out, s) +} + +func autoConvert_v1_ComponentStatusList_To_api_ComponentStatusList(in *ComponentStatusList, out *api.ComponentStatusList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.ComponentStatus)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_ComponentStatusList_To_api_ComponentStatusList is an autogenerated conversion function. +func Convert_v1_ComponentStatusList_To_api_ComponentStatusList(in *ComponentStatusList, out *api.ComponentStatusList, s conversion.Scope) error { + return autoConvert_v1_ComponentStatusList_To_api_ComponentStatusList(in, out, s) +} + +func autoConvert_api_ComponentStatusList_To_v1_ComponentStatusList(in *api.ComponentStatusList, out *ComponentStatusList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ComponentStatus, 0) + } else { + out.Items = *(*[]ComponentStatus)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_ComponentStatusList_To_v1_ComponentStatusList is an autogenerated conversion function. +func Convert_api_ComponentStatusList_To_v1_ComponentStatusList(in *api.ComponentStatusList, out *ComponentStatusList, s conversion.Scope) error { + return autoConvert_api_ComponentStatusList_To_v1_ComponentStatusList(in, out, s) +} + +func autoConvert_v1_ConfigMap_To_api_ConfigMap(in *ConfigMap, out *api.ConfigMap, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Data = *(*map[string]string)(unsafe.Pointer(&in.Data)) + return nil +} + +// Convert_v1_ConfigMap_To_api_ConfigMap is an autogenerated conversion function. +func Convert_v1_ConfigMap_To_api_ConfigMap(in *ConfigMap, out *api.ConfigMap, s conversion.Scope) error { + return autoConvert_v1_ConfigMap_To_api_ConfigMap(in, out, s) +} + +func autoConvert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *ConfigMap, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Data = *(*map[string]string)(unsafe.Pointer(&in.Data)) + return nil +} + +// Convert_api_ConfigMap_To_v1_ConfigMap is an autogenerated conversion function. +func Convert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *ConfigMap, s conversion.Scope) error { + return autoConvert_api_ConfigMap_To_v1_ConfigMap(in, out, s) +} + +func autoConvert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource(in *ConfigMapEnvSource, out *api.ConfigMapEnvSource, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource is an autogenerated conversion function. +func Convert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource(in *ConfigMapEnvSource, out *api.ConfigMapEnvSource, s conversion.Scope) error { + return autoConvert_v1_ConfigMapEnvSource_To_api_ConfigMapEnvSource(in, out, s) +} + +func autoConvert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in *api.ConfigMapEnvSource, out *ConfigMapEnvSource, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource is an autogenerated conversion function. +func Convert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in *api.ConfigMapEnvSource, out *ConfigMapEnvSource, s conversion.Scope) error { + return autoConvert_api_ConfigMapEnvSource_To_v1_ConfigMapEnvSource(in, out, s) +} + +func autoConvert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in *ConfigMapKeySelector, out *api.ConfigMapKeySelector, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector is an autogenerated conversion function. +func Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in *ConfigMapKeySelector, out *api.ConfigMapKeySelector, s conversion.Scope) error { + return autoConvert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in, out, s) +} + +func autoConvert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *api.ConfigMapKeySelector, out *ConfigMapKeySelector, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector is an autogenerated conversion function. +func Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *api.ConfigMapKeySelector, out *ConfigMapKeySelector, s conversion.Scope) error { + return autoConvert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in, out, s) +} + +func autoConvert_v1_ConfigMapList_To_api_ConfigMapList(in *ConfigMapList, out *api.ConfigMapList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.ConfigMap)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_ConfigMapList_To_api_ConfigMapList is an autogenerated conversion function. +func Convert_v1_ConfigMapList_To_api_ConfigMapList(in *ConfigMapList, out *api.ConfigMapList, s conversion.Scope) error { + return autoConvert_v1_ConfigMapList_To_api_ConfigMapList(in, out, s) +} + +func autoConvert_api_ConfigMapList_To_v1_ConfigMapList(in *api.ConfigMapList, out *ConfigMapList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ConfigMap, 0) + } else { + out.Items = *(*[]ConfigMap)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_ConfigMapList_To_v1_ConfigMapList is an autogenerated conversion function. +func Convert_api_ConfigMapList_To_v1_ConfigMapList(in *api.ConfigMapList, out *ConfigMapList, s conversion.Scope) error { + return autoConvert_api_ConfigMapList_To_v1_ConfigMapList(in, out, s) +} + +func autoConvert_v1_ConfigMapProjection_To_api_ConfigMapProjection(in *ConfigMapProjection, out *api.ConfigMapProjection, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_ConfigMapProjection_To_api_ConfigMapProjection is an autogenerated conversion function. +func Convert_v1_ConfigMapProjection_To_api_ConfigMapProjection(in *ConfigMapProjection, out *api.ConfigMapProjection, s conversion.Scope) error { + return autoConvert_v1_ConfigMapProjection_To_api_ConfigMapProjection(in, out, s) +} + +func autoConvert_api_ConfigMapProjection_To_v1_ConfigMapProjection(in *api.ConfigMapProjection, out *ConfigMapProjection, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Items = *(*[]KeyToPath)(unsafe.Pointer(&in.Items)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_ConfigMapProjection_To_v1_ConfigMapProjection is an autogenerated conversion function. +func Convert_api_ConfigMapProjection_To_v1_ConfigMapProjection(in *api.ConfigMapProjection, out *ConfigMapProjection, s conversion.Scope) error { + return autoConvert_api_ConfigMapProjection_To_v1_ConfigMapProjection(in, out, s) +} + +func autoConvert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in *ConfigMapVolumeSource, out *api.ConfigMapVolumeSource, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource is an autogenerated conversion function. +func Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in *ConfigMapVolumeSource, out *api.ConfigMapVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in, out, s) +} + +func autoConvert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *api.ConfigMapVolumeSource, out *ConfigMapVolumeSource, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Items = *(*[]KeyToPath)(unsafe.Pointer(&in.Items)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource is an autogenerated conversion function. +func Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *api.ConfigMapVolumeSource, out *ConfigMapVolumeSource, s conversion.Scope) error { + return autoConvert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in, out, s) +} + +func autoConvert_v1_Container_To_api_Container(in *Container, out *api.Container, s conversion.Scope) error { + out.Name = in.Name + out.Image = in.Image + out.Command = *(*[]string)(unsafe.Pointer(&in.Command)) + out.Args = *(*[]string)(unsafe.Pointer(&in.Args)) + out.WorkingDir = in.WorkingDir + out.Ports = *(*[]api.ContainerPort)(unsafe.Pointer(&in.Ports)) + out.EnvFrom = *(*[]api.EnvFromSource)(unsafe.Pointer(&in.EnvFrom)) + out.Env = *(*[]api.EnvVar)(unsafe.Pointer(&in.Env)) + if err := Convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + out.VolumeMounts = *(*[]api.VolumeMount)(unsafe.Pointer(&in.VolumeMounts)) + out.LivenessProbe = (*api.Probe)(unsafe.Pointer(in.LivenessProbe)) + out.ReadinessProbe = (*api.Probe)(unsafe.Pointer(in.ReadinessProbe)) + out.Lifecycle = (*api.Lifecycle)(unsafe.Pointer(in.Lifecycle)) + out.TerminationMessagePath = in.TerminationMessagePath + out.TerminationMessagePolicy = api.TerminationMessagePolicy(in.TerminationMessagePolicy) + out.ImagePullPolicy = api.PullPolicy(in.ImagePullPolicy) + out.SecurityContext = (*api.SecurityContext)(unsafe.Pointer(in.SecurityContext)) + out.Stdin = in.Stdin + out.StdinOnce = in.StdinOnce + out.TTY = in.TTY + return nil +} + +// Convert_v1_Container_To_api_Container is an autogenerated conversion function. +func Convert_v1_Container_To_api_Container(in *Container, out *api.Container, s conversion.Scope) error { + return autoConvert_v1_Container_To_api_Container(in, out, s) +} + +func autoConvert_api_Container_To_v1_Container(in *api.Container, out *Container, s conversion.Scope) error { + out.Name = in.Name + out.Image = in.Image + out.Command = *(*[]string)(unsafe.Pointer(&in.Command)) + out.Args = *(*[]string)(unsafe.Pointer(&in.Args)) + out.WorkingDir = in.WorkingDir + out.Ports = *(*[]ContainerPort)(unsafe.Pointer(&in.Ports)) + out.EnvFrom = *(*[]EnvFromSource)(unsafe.Pointer(&in.EnvFrom)) + out.Env = *(*[]EnvVar)(unsafe.Pointer(&in.Env)) + if err := Convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + out.VolumeMounts = *(*[]VolumeMount)(unsafe.Pointer(&in.VolumeMounts)) + out.LivenessProbe = (*Probe)(unsafe.Pointer(in.LivenessProbe)) + out.ReadinessProbe = (*Probe)(unsafe.Pointer(in.ReadinessProbe)) + out.Lifecycle = (*Lifecycle)(unsafe.Pointer(in.Lifecycle)) + out.TerminationMessagePath = in.TerminationMessagePath + out.TerminationMessagePolicy = TerminationMessagePolicy(in.TerminationMessagePolicy) + out.ImagePullPolicy = PullPolicy(in.ImagePullPolicy) + out.SecurityContext = (*SecurityContext)(unsafe.Pointer(in.SecurityContext)) + out.Stdin = in.Stdin + out.StdinOnce = in.StdinOnce + out.TTY = in.TTY + return nil +} + +// Convert_api_Container_To_v1_Container is an autogenerated conversion function. +func Convert_api_Container_To_v1_Container(in *api.Container, out *Container, s conversion.Scope) error { + return autoConvert_api_Container_To_v1_Container(in, out, s) +} + +func autoConvert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *api.ContainerImage, s conversion.Scope) error { + out.Names = *(*[]string)(unsafe.Pointer(&in.Names)) + out.SizeBytes = in.SizeBytes + return nil +} + +// Convert_v1_ContainerImage_To_api_ContainerImage is an autogenerated conversion function. +func Convert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *api.ContainerImage, s conversion.Scope) error { + return autoConvert_v1_ContainerImage_To_api_ContainerImage(in, out, s) +} + +func autoConvert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *ContainerImage, s conversion.Scope) error { + if in.Names == nil { + out.Names = make([]string, 0) + } else { + out.Names = *(*[]string)(unsafe.Pointer(&in.Names)) + } + out.SizeBytes = in.SizeBytes + return nil +} + +// Convert_api_ContainerImage_To_v1_ContainerImage is an autogenerated conversion function. +func Convert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *ContainerImage, s conversion.Scope) error { + return autoConvert_api_ContainerImage_To_v1_ContainerImage(in, out, s) +} + +func autoConvert_v1_ContainerPort_To_api_ContainerPort(in *ContainerPort, out *api.ContainerPort, s conversion.Scope) error { + out.Name = in.Name + out.HostPort = in.HostPort + out.ContainerPort = in.ContainerPort + out.Protocol = api.Protocol(in.Protocol) + out.HostIP = in.HostIP + return nil +} + +// Convert_v1_ContainerPort_To_api_ContainerPort is an autogenerated conversion function. +func Convert_v1_ContainerPort_To_api_ContainerPort(in *ContainerPort, out *api.ContainerPort, s conversion.Scope) error { + return autoConvert_v1_ContainerPort_To_api_ContainerPort(in, out, s) +} + +func autoConvert_api_ContainerPort_To_v1_ContainerPort(in *api.ContainerPort, out *ContainerPort, s conversion.Scope) error { + out.Name = in.Name + out.HostPort = in.HostPort + out.ContainerPort = in.ContainerPort + out.Protocol = Protocol(in.Protocol) + out.HostIP = in.HostIP + return nil +} + +// Convert_api_ContainerPort_To_v1_ContainerPort is an autogenerated conversion function. +func Convert_api_ContainerPort_To_v1_ContainerPort(in *api.ContainerPort, out *ContainerPort, s conversion.Scope) error { + return autoConvert_api_ContainerPort_To_v1_ContainerPort(in, out, s) +} + +func autoConvert_v1_ContainerState_To_api_ContainerState(in *ContainerState, out *api.ContainerState, s conversion.Scope) error { + out.Waiting = (*api.ContainerStateWaiting)(unsafe.Pointer(in.Waiting)) + out.Running = (*api.ContainerStateRunning)(unsafe.Pointer(in.Running)) + out.Terminated = (*api.ContainerStateTerminated)(unsafe.Pointer(in.Terminated)) + return nil +} + +// Convert_v1_ContainerState_To_api_ContainerState is an autogenerated conversion function. +func Convert_v1_ContainerState_To_api_ContainerState(in *ContainerState, out *api.ContainerState, s conversion.Scope) error { + return autoConvert_v1_ContainerState_To_api_ContainerState(in, out, s) +} + +func autoConvert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out *ContainerState, s conversion.Scope) error { + out.Waiting = (*ContainerStateWaiting)(unsafe.Pointer(in.Waiting)) + out.Running = (*ContainerStateRunning)(unsafe.Pointer(in.Running)) + out.Terminated = (*ContainerStateTerminated)(unsafe.Pointer(in.Terminated)) + return nil +} + +// Convert_api_ContainerState_To_v1_ContainerState is an autogenerated conversion function. +func Convert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out *ContainerState, s conversion.Scope) error { + return autoConvert_api_ContainerState_To_v1_ContainerState(in, out, s) +} + +func autoConvert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in *ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error { + out.StartedAt = in.StartedAt + return nil +} + +// Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning is an autogenerated conversion function. +func Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in *ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error { + return autoConvert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in, out, s) +} + +func autoConvert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in *api.ContainerStateRunning, out *ContainerStateRunning, s conversion.Scope) error { + out.StartedAt = in.StartedAt + return nil +} + +// Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning is an autogenerated conversion function. +func Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in *api.ContainerStateRunning, out *ContainerStateRunning, s conversion.Scope) error { + return autoConvert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in, out, s) +} + +func autoConvert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in *ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error { + out.ExitCode = in.ExitCode + out.Signal = in.Signal + out.Reason = in.Reason + out.Message = in.Message + out.StartedAt = in.StartedAt + out.FinishedAt = in.FinishedAt + out.ContainerID = in.ContainerID + return nil +} + +// Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated is an autogenerated conversion function. +func Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in *ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error { + return autoConvert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in, out, s) +} + +func autoConvert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *api.ContainerStateTerminated, out *ContainerStateTerminated, s conversion.Scope) error { + out.ExitCode = in.ExitCode + out.Signal = in.Signal + out.Reason = in.Reason + out.Message = in.Message + out.StartedAt = in.StartedAt + out.FinishedAt = in.FinishedAt + out.ContainerID = in.ContainerID + return nil +} + +// Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated is an autogenerated conversion function. +func Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *api.ContainerStateTerminated, out *ContainerStateTerminated, s conversion.Scope) error { + return autoConvert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in, out, s) +} + +func autoConvert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in *ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error { + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting is an autogenerated conversion function. +func Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in *ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error { + return autoConvert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in, out, s) +} + +func autoConvert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *api.ContainerStateWaiting, out *ContainerStateWaiting, s conversion.Scope) error { + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting is an autogenerated conversion function. +func Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *api.ContainerStateWaiting, out *ContainerStateWaiting, s conversion.Scope) error { + return autoConvert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in, out, s) +} + +func autoConvert_v1_ContainerStatus_To_api_ContainerStatus(in *ContainerStatus, out *api.ContainerStatus, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_v1_ContainerState_To_api_ContainerState(&in.State, &out.State, s); err != nil { + return err + } + if err := Convert_v1_ContainerState_To_api_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil { + return err + } + out.Ready = in.Ready + out.RestartCount = in.RestartCount + out.Image = in.Image + out.ImageID = in.ImageID + out.ContainerID = in.ContainerID + return nil +} + +// Convert_v1_ContainerStatus_To_api_ContainerStatus is an autogenerated conversion function. +func Convert_v1_ContainerStatus_To_api_ContainerStatus(in *ContainerStatus, out *api.ContainerStatus, s conversion.Scope) error { + return autoConvert_v1_ContainerStatus_To_api_ContainerStatus(in, out, s) +} + +func autoConvert_api_ContainerStatus_To_v1_ContainerStatus(in *api.ContainerStatus, out *ContainerStatus, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_api_ContainerState_To_v1_ContainerState(&in.State, &out.State, s); err != nil { + return err + } + if err := Convert_api_ContainerState_To_v1_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil { + return err + } + out.Ready = in.Ready + out.RestartCount = in.RestartCount + out.Image = in.Image + out.ImageID = in.ImageID + out.ContainerID = in.ContainerID + return nil +} + +// Convert_api_ContainerStatus_To_v1_ContainerStatus is an autogenerated conversion function. +func Convert_api_ContainerStatus_To_v1_ContainerStatus(in *api.ContainerStatus, out *ContainerStatus, s conversion.Scope) error { + return autoConvert_api_ContainerStatus_To_v1_ContainerStatus(in, out, s) +} + +func autoConvert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in *DaemonEndpoint, out *api.DaemonEndpoint, s conversion.Scope) error { + out.Port = in.Port + return nil +} + +// Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint is an autogenerated conversion function. +func Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in *DaemonEndpoint, out *api.DaemonEndpoint, s conversion.Scope) error { + return autoConvert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in, out, s) +} + +func autoConvert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in *api.DaemonEndpoint, out *DaemonEndpoint, s conversion.Scope) error { + out.Port = in.Port + return nil +} + +// Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint is an autogenerated conversion function. +func Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in *api.DaemonEndpoint, out *DaemonEndpoint, s conversion.Scope) error { + return autoConvert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in, out, s) +} + +func autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in *DeleteOptions, out *api.DeleteOptions, s conversion.Scope) error { + out.GracePeriodSeconds = (*int64)(unsafe.Pointer(in.GracePeriodSeconds)) + out.Preconditions = (*api.Preconditions)(unsafe.Pointer(in.Preconditions)) + out.OrphanDependents = (*bool)(unsafe.Pointer(in.OrphanDependents)) + out.PropagationPolicy = (*api.DeletionPropagation)(unsafe.Pointer(in.PropagationPolicy)) + return nil +} + +// Convert_v1_DeleteOptions_To_api_DeleteOptions is an autogenerated conversion function. +func Convert_v1_DeleteOptions_To_api_DeleteOptions(in *DeleteOptions, out *api.DeleteOptions, s conversion.Scope) error { + return autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in, out, s) +} + +func autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, out *DeleteOptions, s conversion.Scope) error { + out.GracePeriodSeconds = (*int64)(unsafe.Pointer(in.GracePeriodSeconds)) + out.Preconditions = (*Preconditions)(unsafe.Pointer(in.Preconditions)) + out.OrphanDependents = (*bool)(unsafe.Pointer(in.OrphanDependents)) + out.PropagationPolicy = (*DeletionPropagation)(unsafe.Pointer(in.PropagationPolicy)) + return nil +} + +// Convert_api_DeleteOptions_To_v1_DeleteOptions is an autogenerated conversion function. +func Convert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, out *DeleteOptions, s conversion.Scope) error { + return autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in, out, s) +} + +func autoConvert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection(in *DownwardAPIProjection, out *api.DownwardAPIProjection, s conversion.Scope) error { + out.Items = *(*[]api.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection is an autogenerated conversion function. +func Convert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection(in *DownwardAPIProjection, out *api.DownwardAPIProjection, s conversion.Scope) error { + return autoConvert_v1_DownwardAPIProjection_To_api_DownwardAPIProjection(in, out, s) +} + +func autoConvert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection(in *api.DownwardAPIProjection, out *DownwardAPIProjection, s conversion.Scope) error { + out.Items = *(*[]DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection is an autogenerated conversion function. +func Convert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection(in *api.DownwardAPIProjection, out *DownwardAPIProjection, s conversion.Scope) error { + return autoConvert_api_DownwardAPIProjection_To_v1_DownwardAPIProjection(in, out, s) +} + +func autoConvert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in *DownwardAPIVolumeFile, out *api.DownwardAPIVolumeFile, s conversion.Scope) error { + out.Path = in.Path + out.FieldRef = (*api.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef)) + out.ResourceFieldRef = (*api.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef)) + out.Mode = (*int32)(unsafe.Pointer(in.Mode)) + return nil +} + +// Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile is an autogenerated conversion function. +func Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in *DownwardAPIVolumeFile, out *api.DownwardAPIVolumeFile, s conversion.Scope) error { + return autoConvert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in, out, s) +} + +func autoConvert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *api.DownwardAPIVolumeFile, out *DownwardAPIVolumeFile, s conversion.Scope) error { + out.Path = in.Path + out.FieldRef = (*ObjectFieldSelector)(unsafe.Pointer(in.FieldRef)) + out.ResourceFieldRef = (*ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef)) + out.Mode = (*int32)(unsafe.Pointer(in.Mode)) + return nil +} + +// Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile is an autogenerated conversion function. +func Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *api.DownwardAPIVolumeFile, out *DownwardAPIVolumeFile, s conversion.Scope) error { + return autoConvert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in, out, s) +} + +func autoConvert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in *DownwardAPIVolumeSource, out *api.DownwardAPIVolumeSource, s conversion.Scope) error { + out.Items = *(*[]api.DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + return nil +} + +// Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource is an autogenerated conversion function. +func Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in *DownwardAPIVolumeSource, out *api.DownwardAPIVolumeSource, s conversion.Scope) error { + return autoConvert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in, out, s) +} + +func autoConvert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *api.DownwardAPIVolumeSource, out *DownwardAPIVolumeSource, s conversion.Scope) error { + out.Items = *(*[]DownwardAPIVolumeFile)(unsafe.Pointer(&in.Items)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + return nil +} + +// Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource is an autogenerated conversion function. +func Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *api.DownwardAPIVolumeSource, out *DownwardAPIVolumeSource, s conversion.Scope) error { + return autoConvert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in, out, s) +} + +func autoConvert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in *EmptyDirVolumeSource, out *api.EmptyDirVolumeSource, s conversion.Scope) error { + out.Medium = api.StorageMedium(in.Medium) + out.SizeLimit = in.SizeLimit + return nil +} + +// Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource is an autogenerated conversion function. +func Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in *EmptyDirVolumeSource, out *api.EmptyDirVolumeSource, s conversion.Scope) error { + return autoConvert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in, out, s) +} + +func autoConvert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *api.EmptyDirVolumeSource, out *EmptyDirVolumeSource, s conversion.Scope) error { + out.Medium = StorageMedium(in.Medium) + out.SizeLimit = in.SizeLimit + return nil +} + +// Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource is an autogenerated conversion function. +func Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *api.EmptyDirVolumeSource, out *EmptyDirVolumeSource, s conversion.Scope) error { + return autoConvert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in, out, s) +} + +func autoConvert_v1_EndpointAddress_To_api_EndpointAddress(in *EndpointAddress, out *api.EndpointAddress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + out.NodeName = (*string)(unsafe.Pointer(in.NodeName)) + out.TargetRef = (*api.ObjectReference)(unsafe.Pointer(in.TargetRef)) + return nil +} + +// Convert_v1_EndpointAddress_To_api_EndpointAddress is an autogenerated conversion function. +func Convert_v1_EndpointAddress_To_api_EndpointAddress(in *EndpointAddress, out *api.EndpointAddress, s conversion.Scope) error { + return autoConvert_v1_EndpointAddress_To_api_EndpointAddress(in, out, s) +} + +func autoConvert_api_EndpointAddress_To_v1_EndpointAddress(in *api.EndpointAddress, out *EndpointAddress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + out.NodeName = (*string)(unsafe.Pointer(in.NodeName)) + out.TargetRef = (*ObjectReference)(unsafe.Pointer(in.TargetRef)) + return nil +} + +// Convert_api_EndpointAddress_To_v1_EndpointAddress is an autogenerated conversion function. +func Convert_api_EndpointAddress_To_v1_EndpointAddress(in *api.EndpointAddress, out *EndpointAddress, s conversion.Scope) error { + return autoConvert_api_EndpointAddress_To_v1_EndpointAddress(in, out, s) +} + +func autoConvert_v1_EndpointPort_To_api_EndpointPort(in *EndpointPort, out *api.EndpointPort, s conversion.Scope) error { + out.Name = in.Name + out.Port = in.Port + out.Protocol = api.Protocol(in.Protocol) + return nil +} + +// Convert_v1_EndpointPort_To_api_EndpointPort is an autogenerated conversion function. +func Convert_v1_EndpointPort_To_api_EndpointPort(in *EndpointPort, out *api.EndpointPort, s conversion.Scope) error { + return autoConvert_v1_EndpointPort_To_api_EndpointPort(in, out, s) +} + +func autoConvert_api_EndpointPort_To_v1_EndpointPort(in *api.EndpointPort, out *EndpointPort, s conversion.Scope) error { + out.Name = in.Name + out.Port = in.Port + out.Protocol = Protocol(in.Protocol) + return nil +} + +// Convert_api_EndpointPort_To_v1_EndpointPort is an autogenerated conversion function. +func Convert_api_EndpointPort_To_v1_EndpointPort(in *api.EndpointPort, out *EndpointPort, s conversion.Scope) error { + return autoConvert_api_EndpointPort_To_v1_EndpointPort(in, out, s) +} + +func autoConvert_v1_EndpointSubset_To_api_EndpointSubset(in *EndpointSubset, out *api.EndpointSubset, s conversion.Scope) error { + out.Addresses = *(*[]api.EndpointAddress)(unsafe.Pointer(&in.Addresses)) + out.NotReadyAddresses = *(*[]api.EndpointAddress)(unsafe.Pointer(&in.NotReadyAddresses)) + out.Ports = *(*[]api.EndpointPort)(unsafe.Pointer(&in.Ports)) + return nil +} + +// Convert_v1_EndpointSubset_To_api_EndpointSubset is an autogenerated conversion function. +func Convert_v1_EndpointSubset_To_api_EndpointSubset(in *EndpointSubset, out *api.EndpointSubset, s conversion.Scope) error { + return autoConvert_v1_EndpointSubset_To_api_EndpointSubset(in, out, s) +} + +func autoConvert_api_EndpointSubset_To_v1_EndpointSubset(in *api.EndpointSubset, out *EndpointSubset, s conversion.Scope) error { + out.Addresses = *(*[]EndpointAddress)(unsafe.Pointer(&in.Addresses)) + out.NotReadyAddresses = *(*[]EndpointAddress)(unsafe.Pointer(&in.NotReadyAddresses)) + out.Ports = *(*[]EndpointPort)(unsafe.Pointer(&in.Ports)) + return nil +} + +// Convert_api_EndpointSubset_To_v1_EndpointSubset is an autogenerated conversion function. +func Convert_api_EndpointSubset_To_v1_EndpointSubset(in *api.EndpointSubset, out *EndpointSubset, s conversion.Scope) error { + return autoConvert_api_EndpointSubset_To_v1_EndpointSubset(in, out, s) +} + +func autoConvert_v1_Endpoints_To_api_Endpoints(in *Endpoints, out *api.Endpoints, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Subsets = *(*[]api.EndpointSubset)(unsafe.Pointer(&in.Subsets)) + return nil +} + +// Convert_v1_Endpoints_To_api_Endpoints is an autogenerated conversion function. +func Convert_v1_Endpoints_To_api_Endpoints(in *Endpoints, out *api.Endpoints, s conversion.Scope) error { + return autoConvert_v1_Endpoints_To_api_Endpoints(in, out, s) +} + +func autoConvert_api_Endpoints_To_v1_Endpoints(in *api.Endpoints, out *Endpoints, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subsets == nil { + out.Subsets = make([]EndpointSubset, 0) + } else { + out.Subsets = *(*[]EndpointSubset)(unsafe.Pointer(&in.Subsets)) + } + return nil +} + +// Convert_api_Endpoints_To_v1_Endpoints is an autogenerated conversion function. +func Convert_api_Endpoints_To_v1_Endpoints(in *api.Endpoints, out *Endpoints, s conversion.Scope) error { + return autoConvert_api_Endpoints_To_v1_Endpoints(in, out, s) +} + +func autoConvert_v1_EndpointsList_To_api_EndpointsList(in *EndpointsList, out *api.EndpointsList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.Endpoints)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_EndpointsList_To_api_EndpointsList is an autogenerated conversion function. +func Convert_v1_EndpointsList_To_api_EndpointsList(in *EndpointsList, out *api.EndpointsList, s conversion.Scope) error { + return autoConvert_v1_EndpointsList_To_api_EndpointsList(in, out, s) +} + +func autoConvert_api_EndpointsList_To_v1_EndpointsList(in *api.EndpointsList, out *EndpointsList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Endpoints, 0) + } else { + out.Items = *(*[]Endpoints)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_EndpointsList_To_v1_EndpointsList is an autogenerated conversion function. +func Convert_api_EndpointsList_To_v1_EndpointsList(in *api.EndpointsList, out *EndpointsList, s conversion.Scope) error { + return autoConvert_api_EndpointsList_To_v1_EndpointsList(in, out, s) +} + +func autoConvert_v1_EnvFromSource_To_api_EnvFromSource(in *EnvFromSource, out *api.EnvFromSource, s conversion.Scope) error { + out.Prefix = in.Prefix + out.ConfigMapRef = (*api.ConfigMapEnvSource)(unsafe.Pointer(in.ConfigMapRef)) + out.SecretRef = (*api.SecretEnvSource)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_v1_EnvFromSource_To_api_EnvFromSource is an autogenerated conversion function. +func Convert_v1_EnvFromSource_To_api_EnvFromSource(in *EnvFromSource, out *api.EnvFromSource, s conversion.Scope) error { + return autoConvert_v1_EnvFromSource_To_api_EnvFromSource(in, out, s) +} + +func autoConvert_api_EnvFromSource_To_v1_EnvFromSource(in *api.EnvFromSource, out *EnvFromSource, s conversion.Scope) error { + out.Prefix = in.Prefix + out.ConfigMapRef = (*ConfigMapEnvSource)(unsafe.Pointer(in.ConfigMapRef)) + out.SecretRef = (*SecretEnvSource)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_api_EnvFromSource_To_v1_EnvFromSource is an autogenerated conversion function. +func Convert_api_EnvFromSource_To_v1_EnvFromSource(in *api.EnvFromSource, out *EnvFromSource, s conversion.Scope) error { + return autoConvert_api_EnvFromSource_To_v1_EnvFromSource(in, out, s) +} + +func autoConvert_v1_EnvVar_To_api_EnvVar(in *EnvVar, out *api.EnvVar, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + out.ValueFrom = (*api.EnvVarSource)(unsafe.Pointer(in.ValueFrom)) + return nil +} + +// Convert_v1_EnvVar_To_api_EnvVar is an autogenerated conversion function. +func Convert_v1_EnvVar_To_api_EnvVar(in *EnvVar, out *api.EnvVar, s conversion.Scope) error { + return autoConvert_v1_EnvVar_To_api_EnvVar(in, out, s) +} + +func autoConvert_api_EnvVar_To_v1_EnvVar(in *api.EnvVar, out *EnvVar, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + out.ValueFrom = (*EnvVarSource)(unsafe.Pointer(in.ValueFrom)) + return nil +} + +// Convert_api_EnvVar_To_v1_EnvVar is an autogenerated conversion function. +func Convert_api_EnvVar_To_v1_EnvVar(in *api.EnvVar, out *EnvVar, s conversion.Scope) error { + return autoConvert_api_EnvVar_To_v1_EnvVar(in, out, s) +} + +func autoConvert_v1_EnvVarSource_To_api_EnvVarSource(in *EnvVarSource, out *api.EnvVarSource, s conversion.Scope) error { + out.FieldRef = (*api.ObjectFieldSelector)(unsafe.Pointer(in.FieldRef)) + out.ResourceFieldRef = (*api.ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef)) + out.ConfigMapKeyRef = (*api.ConfigMapKeySelector)(unsafe.Pointer(in.ConfigMapKeyRef)) + out.SecretKeyRef = (*api.SecretKeySelector)(unsafe.Pointer(in.SecretKeyRef)) + return nil +} + +// Convert_v1_EnvVarSource_To_api_EnvVarSource is an autogenerated conversion function. +func Convert_v1_EnvVarSource_To_api_EnvVarSource(in *EnvVarSource, out *api.EnvVarSource, s conversion.Scope) error { + return autoConvert_v1_EnvVarSource_To_api_EnvVarSource(in, out, s) +} + +func autoConvert_api_EnvVarSource_To_v1_EnvVarSource(in *api.EnvVarSource, out *EnvVarSource, s conversion.Scope) error { + out.FieldRef = (*ObjectFieldSelector)(unsafe.Pointer(in.FieldRef)) + out.ResourceFieldRef = (*ResourceFieldSelector)(unsafe.Pointer(in.ResourceFieldRef)) + out.ConfigMapKeyRef = (*ConfigMapKeySelector)(unsafe.Pointer(in.ConfigMapKeyRef)) + out.SecretKeyRef = (*SecretKeySelector)(unsafe.Pointer(in.SecretKeyRef)) + return nil +} + +// Convert_api_EnvVarSource_To_v1_EnvVarSource is an autogenerated conversion function. +func Convert_api_EnvVarSource_To_v1_EnvVarSource(in *api.EnvVarSource, out *EnvVarSource, s conversion.Scope) error { + return autoConvert_api_EnvVarSource_To_v1_EnvVarSource(in, out, s) +} + +func autoConvert_v1_Event_To_api_Event(in *Event, out *api.Event, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + if err := Convert_v1_EventSource_To_api_EventSource(&in.Source, &out.Source, s); err != nil { + return err + } + out.FirstTimestamp = in.FirstTimestamp + out.LastTimestamp = in.LastTimestamp + out.Count = in.Count + out.Type = in.Type + return nil +} + +// Convert_v1_Event_To_api_Event is an autogenerated conversion function. +func Convert_v1_Event_To_api_Event(in *Event, out *api.Event, s conversion.Scope) error { + return autoConvert_v1_Event_To_api_Event(in, out, s) +} + +func autoConvert_api_Event_To_v1_Event(in *api.Event, out *Event, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + if err := Convert_api_EventSource_To_v1_EventSource(&in.Source, &out.Source, s); err != nil { + return err + } + out.FirstTimestamp = in.FirstTimestamp + out.LastTimestamp = in.LastTimestamp + out.Count = in.Count + out.Type = in.Type + return nil +} + +// Convert_api_Event_To_v1_Event is an autogenerated conversion function. +func Convert_api_Event_To_v1_Event(in *api.Event, out *Event, s conversion.Scope) error { + return autoConvert_api_Event_To_v1_Event(in, out, s) +} + +func autoConvert_v1_EventList_To_api_EventList(in *EventList, out *api.EventList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.Event)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_EventList_To_api_EventList is an autogenerated conversion function. +func Convert_v1_EventList_To_api_EventList(in *EventList, out *api.EventList, s conversion.Scope) error { + return autoConvert_v1_EventList_To_api_EventList(in, out, s) +} + +func autoConvert_api_EventList_To_v1_EventList(in *api.EventList, out *EventList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Event, 0) + } else { + out.Items = *(*[]Event)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_EventList_To_v1_EventList is an autogenerated conversion function. +func Convert_api_EventList_To_v1_EventList(in *api.EventList, out *EventList, s conversion.Scope) error { + return autoConvert_api_EventList_To_v1_EventList(in, out, s) +} + +func autoConvert_v1_EventSource_To_api_EventSource(in *EventSource, out *api.EventSource, s conversion.Scope) error { + out.Component = in.Component + out.Host = in.Host + return nil +} + +// Convert_v1_EventSource_To_api_EventSource is an autogenerated conversion function. +func Convert_v1_EventSource_To_api_EventSource(in *EventSource, out *api.EventSource, s conversion.Scope) error { + return autoConvert_v1_EventSource_To_api_EventSource(in, out, s) +} + +func autoConvert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *EventSource, s conversion.Scope) error { + out.Component = in.Component + out.Host = in.Host + return nil +} + +// Convert_api_EventSource_To_v1_EventSource is an autogenerated conversion function. +func Convert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *EventSource, s conversion.Scope) error { + return autoConvert_api_EventSource_To_v1_EventSource(in, out, s) +} + +func autoConvert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction, s conversion.Scope) error { + out.Command = *(*[]string)(unsafe.Pointer(&in.Command)) + return nil +} + +// Convert_v1_ExecAction_To_api_ExecAction is an autogenerated conversion function. +func Convert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction, s conversion.Scope) error { + return autoConvert_v1_ExecAction_To_api_ExecAction(in, out, s) +} + +func autoConvert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *ExecAction, s conversion.Scope) error { + out.Command = *(*[]string)(unsafe.Pointer(&in.Command)) + return nil +} + +// Convert_api_ExecAction_To_v1_ExecAction is an autogenerated conversion function. +func Convert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *ExecAction, s conversion.Scope) error { + return autoConvert_api_ExecAction_To_v1_ExecAction(in, out, s) +} + +func autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error { + out.TargetWWNs = *(*[]string)(unsafe.Pointer(&in.TargetWWNs)) + out.Lun = (*int32)(unsafe.Pointer(in.Lun)) + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_FCVolumeSource_To_api_FCVolumeSource is an autogenerated conversion function. +func Convert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error { + return autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in, out, s) +} + +func autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *FCVolumeSource, s conversion.Scope) error { + if in.TargetWWNs == nil { + out.TargetWWNs = make([]string, 0) + } else { + out.TargetWWNs = *(*[]string)(unsafe.Pointer(&in.TargetWWNs)) + } + out.Lun = (*int32)(unsafe.Pointer(in.Lun)) + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_FCVolumeSource_To_v1_FCVolumeSource is an autogenerated conversion function. +func Convert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *FCVolumeSource, s conversion.Scope) error { + return autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in, out, s) +} + +func autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *FlexVolumeSource, out *api.FlexVolumeSource, s conversion.Scope) error { + out.Driver = in.Driver + out.FSType = in.FSType + out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.ReadOnly = in.ReadOnly + out.Options = *(*map[string]string)(unsafe.Pointer(&in.Options)) + return nil +} + +// Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource is an autogenerated conversion function. +func Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *FlexVolumeSource, out *api.FlexVolumeSource, s conversion.Scope) error { + return autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in, out, s) +} + +func autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeSource, out *FlexVolumeSource, s conversion.Scope) error { + out.Driver = in.Driver + out.FSType = in.FSType + out.SecretRef = (*LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.ReadOnly = in.ReadOnly + out.Options = *(*map[string]string)(unsafe.Pointer(&in.Options)) + return nil +} + +// Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource is an autogenerated conversion function. +func Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeSource, out *FlexVolumeSource, s conversion.Scope) error { + return autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in, out, s) +} + +func autoConvert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in *FlockerVolumeSource, out *api.FlockerVolumeSource, s conversion.Scope) error { + out.DatasetName = in.DatasetName + out.DatasetUUID = in.DatasetUUID + return nil +} + +// Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource is an autogenerated conversion function. +func Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in *FlockerVolumeSource, out *api.FlockerVolumeSource, s conversion.Scope) error { + return autoConvert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in, out, s) +} + +func autoConvert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *api.FlockerVolumeSource, out *FlockerVolumeSource, s conversion.Scope) error { + out.DatasetName = in.DatasetName + out.DatasetUUID = in.DatasetUUID + return nil +} + +// Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource is an autogenerated conversion function. +func Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *api.FlockerVolumeSource, out *FlockerVolumeSource, s conversion.Scope) error { + return autoConvert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in, out, s) +} + +func autoConvert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in *GCEPersistentDiskVolumeSource, out *api.GCEPersistentDiskVolumeSource, s conversion.Scope) error { + out.PDName = in.PDName + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource is an autogenerated conversion function. +func Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in *GCEPersistentDiskVolumeSource, out *api.GCEPersistentDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in, out, s) +} + +func autoConvert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *api.GCEPersistentDiskVolumeSource, out *GCEPersistentDiskVolumeSource, s conversion.Scope) error { + out.PDName = in.PDName + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource is an autogenerated conversion function. +func Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *api.GCEPersistentDiskVolumeSource, out *GCEPersistentDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in *GitRepoVolumeSource, out *api.GitRepoVolumeSource, s conversion.Scope) error { + out.Repository = in.Repository + out.Revision = in.Revision + out.Directory = in.Directory + return nil +} + +// Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource is an autogenerated conversion function. +func Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in *GitRepoVolumeSource, out *api.GitRepoVolumeSource, s conversion.Scope) error { + return autoConvert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in, out, s) +} + +func autoConvert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *api.GitRepoVolumeSource, out *GitRepoVolumeSource, s conversion.Scope) error { + out.Repository = in.Repository + out.Revision = in.Revision + out.Directory = in.Directory + return nil +} + +// Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource is an autogenerated conversion function. +func Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *api.GitRepoVolumeSource, out *GitRepoVolumeSource, s conversion.Scope) error { + return autoConvert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in, out, s) +} + +func autoConvert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in *GlusterfsVolumeSource, out *api.GlusterfsVolumeSource, s conversion.Scope) error { + out.EndpointsName = in.EndpointsName + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource is an autogenerated conversion function. +func Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in *GlusterfsVolumeSource, out *api.GlusterfsVolumeSource, s conversion.Scope) error { + return autoConvert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in, out, s) +} + +func autoConvert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *api.GlusterfsVolumeSource, out *GlusterfsVolumeSource, s conversion.Scope) error { + out.EndpointsName = in.EndpointsName + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource is an autogenerated conversion function. +func Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *api.GlusterfsVolumeSource, out *GlusterfsVolumeSource, s conversion.Scope) error { + return autoConvert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in, out, s) +} + +func autoConvert_v1_HTTPGetAction_To_api_HTTPGetAction(in *HTTPGetAction, out *api.HTTPGetAction, s conversion.Scope) error { + out.Path = in.Path + out.Port = in.Port + out.Host = in.Host + out.Scheme = api.URIScheme(in.Scheme) + out.HTTPHeaders = *(*[]api.HTTPHeader)(unsafe.Pointer(&in.HTTPHeaders)) + return nil +} + +// Convert_v1_HTTPGetAction_To_api_HTTPGetAction is an autogenerated conversion function. +func Convert_v1_HTTPGetAction_To_api_HTTPGetAction(in *HTTPGetAction, out *api.HTTPGetAction, s conversion.Scope) error { + return autoConvert_v1_HTTPGetAction_To_api_HTTPGetAction(in, out, s) +} + +func autoConvert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *HTTPGetAction, s conversion.Scope) error { + out.Path = in.Path + out.Port = in.Port + out.Host = in.Host + out.Scheme = URIScheme(in.Scheme) + out.HTTPHeaders = *(*[]HTTPHeader)(unsafe.Pointer(&in.HTTPHeaders)) + return nil +} + +// Convert_api_HTTPGetAction_To_v1_HTTPGetAction is an autogenerated conversion function. +func Convert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *HTTPGetAction, s conversion.Scope) error { + return autoConvert_api_HTTPGetAction_To_v1_HTTPGetAction(in, out, s) +} + +func autoConvert_v1_HTTPHeader_To_api_HTTPHeader(in *HTTPHeader, out *api.HTTPHeader, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +// Convert_v1_HTTPHeader_To_api_HTTPHeader is an autogenerated conversion function. +func Convert_v1_HTTPHeader_To_api_HTTPHeader(in *HTTPHeader, out *api.HTTPHeader, s conversion.Scope) error { + return autoConvert_v1_HTTPHeader_To_api_HTTPHeader(in, out, s) +} + +func autoConvert_api_HTTPHeader_To_v1_HTTPHeader(in *api.HTTPHeader, out *HTTPHeader, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +// Convert_api_HTTPHeader_To_v1_HTTPHeader is an autogenerated conversion function. +func Convert_api_HTTPHeader_To_v1_HTTPHeader(in *api.HTTPHeader, out *HTTPHeader, s conversion.Scope) error { + return autoConvert_api_HTTPHeader_To_v1_HTTPHeader(in, out, s) +} + +func autoConvert_v1_Handler_To_api_Handler(in *Handler, out *api.Handler, s conversion.Scope) error { + out.Exec = (*api.ExecAction)(unsafe.Pointer(in.Exec)) + out.HTTPGet = (*api.HTTPGetAction)(unsafe.Pointer(in.HTTPGet)) + out.TCPSocket = (*api.TCPSocketAction)(unsafe.Pointer(in.TCPSocket)) + return nil +} + +// Convert_v1_Handler_To_api_Handler is an autogenerated conversion function. +func Convert_v1_Handler_To_api_Handler(in *Handler, out *api.Handler, s conversion.Scope) error { + return autoConvert_v1_Handler_To_api_Handler(in, out, s) +} + +func autoConvert_api_Handler_To_v1_Handler(in *api.Handler, out *Handler, s conversion.Scope) error { + out.Exec = (*ExecAction)(unsafe.Pointer(in.Exec)) + out.HTTPGet = (*HTTPGetAction)(unsafe.Pointer(in.HTTPGet)) + out.TCPSocket = (*TCPSocketAction)(unsafe.Pointer(in.TCPSocket)) + return nil +} + +// Convert_api_Handler_To_v1_Handler is an autogenerated conversion function. +func Convert_api_Handler_To_v1_Handler(in *api.Handler, out *Handler, s conversion.Scope) error { + return autoConvert_api_Handler_To_v1_Handler(in, out, s) +} + +func autoConvert_v1_HostAlias_To_api_HostAlias(in *HostAlias, out *api.HostAlias, s conversion.Scope) error { + out.IP = in.IP + out.Hostnames = *(*[]string)(unsafe.Pointer(&in.Hostnames)) + return nil +} + +// Convert_v1_HostAlias_To_api_HostAlias is an autogenerated conversion function. +func Convert_v1_HostAlias_To_api_HostAlias(in *HostAlias, out *api.HostAlias, s conversion.Scope) error { + return autoConvert_v1_HostAlias_To_api_HostAlias(in, out, s) +} + +func autoConvert_api_HostAlias_To_v1_HostAlias(in *api.HostAlias, out *HostAlias, s conversion.Scope) error { + out.IP = in.IP + out.Hostnames = *(*[]string)(unsafe.Pointer(&in.Hostnames)) + return nil +} + +// Convert_api_HostAlias_To_v1_HostAlias is an autogenerated conversion function. +func Convert_api_HostAlias_To_v1_HostAlias(in *api.HostAlias, out *HostAlias, s conversion.Scope) error { + return autoConvert_api_HostAlias_To_v1_HostAlias(in, out, s) +} + +func autoConvert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in *HostPathVolumeSource, out *api.HostPathVolumeSource, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource is an autogenerated conversion function. +func Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in *HostPathVolumeSource, out *api.HostPathVolumeSource, s conversion.Scope) error { + return autoConvert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in, out, s) +} + +func autoConvert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *api.HostPathVolumeSource, out *HostPathVolumeSource, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource is an autogenerated conversion function. +func Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *api.HostPathVolumeSource, out *HostPathVolumeSource, s conversion.Scope) error { + return autoConvert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in, out, s) +} + +func autoConvert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in *ISCSIVolumeSource, out *api.ISCSIVolumeSource, s conversion.Scope) error { + out.TargetPortal = in.TargetPortal + out.IQN = in.IQN + out.Lun = in.Lun + out.ISCSIInterface = in.ISCSIInterface + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + out.Portals = *(*[]string)(unsafe.Pointer(&in.Portals)) + out.DiscoveryCHAPAuth = in.DiscoveryCHAPAuth + out.SessionCHAPAuth = in.SessionCHAPAuth + out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource is an autogenerated conversion function. +func Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in *ISCSIVolumeSource, out *api.ISCSIVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in, out, s) +} + +func autoConvert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *api.ISCSIVolumeSource, out *ISCSIVolumeSource, s conversion.Scope) error { + out.TargetPortal = in.TargetPortal + out.IQN = in.IQN + out.Lun = in.Lun + out.ISCSIInterface = in.ISCSIInterface + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + out.Portals = *(*[]string)(unsafe.Pointer(&in.Portals)) + out.DiscoveryCHAPAuth = in.DiscoveryCHAPAuth + out.SessionCHAPAuth = in.SessionCHAPAuth + out.SecretRef = (*LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource is an autogenerated conversion function. +func Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *api.ISCSIVolumeSource, out *ISCSIVolumeSource, s conversion.Scope) error { + return autoConvert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in, out, s) +} + +func autoConvert_v1_KeyToPath_To_api_KeyToPath(in *KeyToPath, out *api.KeyToPath, s conversion.Scope) error { + out.Key = in.Key + out.Path = in.Path + out.Mode = (*int32)(unsafe.Pointer(in.Mode)) + return nil +} + +// Convert_v1_KeyToPath_To_api_KeyToPath is an autogenerated conversion function. +func Convert_v1_KeyToPath_To_api_KeyToPath(in *KeyToPath, out *api.KeyToPath, s conversion.Scope) error { + return autoConvert_v1_KeyToPath_To_api_KeyToPath(in, out, s) +} + +func autoConvert_api_KeyToPath_To_v1_KeyToPath(in *api.KeyToPath, out *KeyToPath, s conversion.Scope) error { + out.Key = in.Key + out.Path = in.Path + out.Mode = (*int32)(unsafe.Pointer(in.Mode)) + return nil +} + +// Convert_api_KeyToPath_To_v1_KeyToPath is an autogenerated conversion function. +func Convert_api_KeyToPath_To_v1_KeyToPath(in *api.KeyToPath, out *KeyToPath, s conversion.Scope) error { + return autoConvert_api_KeyToPath_To_v1_KeyToPath(in, out, s) +} + +func autoConvert_v1_Lifecycle_To_api_Lifecycle(in *Lifecycle, out *api.Lifecycle, s conversion.Scope) error { + out.PostStart = (*api.Handler)(unsafe.Pointer(in.PostStart)) + out.PreStop = (*api.Handler)(unsafe.Pointer(in.PreStop)) + return nil +} + +// Convert_v1_Lifecycle_To_api_Lifecycle is an autogenerated conversion function. +func Convert_v1_Lifecycle_To_api_Lifecycle(in *Lifecycle, out *api.Lifecycle, s conversion.Scope) error { + return autoConvert_v1_Lifecycle_To_api_Lifecycle(in, out, s) +} + +func autoConvert_api_Lifecycle_To_v1_Lifecycle(in *api.Lifecycle, out *Lifecycle, s conversion.Scope) error { + out.PostStart = (*Handler)(unsafe.Pointer(in.PostStart)) + out.PreStop = (*Handler)(unsafe.Pointer(in.PreStop)) + return nil +} + +// Convert_api_Lifecycle_To_v1_Lifecycle is an autogenerated conversion function. +func Convert_api_Lifecycle_To_v1_Lifecycle(in *api.Lifecycle, out *Lifecycle, s conversion.Scope) error { + return autoConvert_api_Lifecycle_To_v1_Lifecycle(in, out, s) +} + +func autoConvert_v1_LimitRange_To_api_LimitRange(in *LimitRange, out *api.LimitRange, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1_LimitRange_To_api_LimitRange is an autogenerated conversion function. +func Convert_v1_LimitRange_To_api_LimitRange(in *LimitRange, out *api.LimitRange, s conversion.Scope) error { + return autoConvert_v1_LimitRange_To_api_LimitRange(in, out, s) +} + +func autoConvert_api_LimitRange_To_v1_LimitRange(in *api.LimitRange, out *LimitRange, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_api_LimitRange_To_v1_LimitRange is an autogenerated conversion function. +func Convert_api_LimitRange_To_v1_LimitRange(in *api.LimitRange, out *LimitRange, s conversion.Scope) error { + return autoConvert_api_LimitRange_To_v1_LimitRange(in, out, s) +} + +func autoConvert_v1_LimitRangeItem_To_api_LimitRangeItem(in *LimitRangeItem, out *api.LimitRangeItem, s conversion.Scope) error { + out.Type = api.LimitType(in.Type) + out.Max = *(*api.ResourceList)(unsafe.Pointer(&in.Max)) + out.Min = *(*api.ResourceList)(unsafe.Pointer(&in.Min)) + out.Default = *(*api.ResourceList)(unsafe.Pointer(&in.Default)) + out.DefaultRequest = *(*api.ResourceList)(unsafe.Pointer(&in.DefaultRequest)) + out.MaxLimitRequestRatio = *(*api.ResourceList)(unsafe.Pointer(&in.MaxLimitRequestRatio)) + return nil +} + +// Convert_v1_LimitRangeItem_To_api_LimitRangeItem is an autogenerated conversion function. +func Convert_v1_LimitRangeItem_To_api_LimitRangeItem(in *LimitRangeItem, out *api.LimitRangeItem, s conversion.Scope) error { + return autoConvert_v1_LimitRangeItem_To_api_LimitRangeItem(in, out, s) +} + +func autoConvert_api_LimitRangeItem_To_v1_LimitRangeItem(in *api.LimitRangeItem, out *LimitRangeItem, s conversion.Scope) error { + out.Type = LimitType(in.Type) + out.Max = *(*ResourceList)(unsafe.Pointer(&in.Max)) + out.Min = *(*ResourceList)(unsafe.Pointer(&in.Min)) + out.Default = *(*ResourceList)(unsafe.Pointer(&in.Default)) + out.DefaultRequest = *(*ResourceList)(unsafe.Pointer(&in.DefaultRequest)) + out.MaxLimitRequestRatio = *(*ResourceList)(unsafe.Pointer(&in.MaxLimitRequestRatio)) + return nil +} + +// Convert_api_LimitRangeItem_To_v1_LimitRangeItem is an autogenerated conversion function. +func Convert_api_LimitRangeItem_To_v1_LimitRangeItem(in *api.LimitRangeItem, out *LimitRangeItem, s conversion.Scope) error { + return autoConvert_api_LimitRangeItem_To_v1_LimitRangeItem(in, out, s) +} + +func autoConvert_v1_LimitRangeList_To_api_LimitRangeList(in *LimitRangeList, out *api.LimitRangeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.LimitRange)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_LimitRangeList_To_api_LimitRangeList is an autogenerated conversion function. +func Convert_v1_LimitRangeList_To_api_LimitRangeList(in *LimitRangeList, out *api.LimitRangeList, s conversion.Scope) error { + return autoConvert_v1_LimitRangeList_To_api_LimitRangeList(in, out, s) +} + +func autoConvert_api_LimitRangeList_To_v1_LimitRangeList(in *api.LimitRangeList, out *LimitRangeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]LimitRange, 0) + } else { + out.Items = *(*[]LimitRange)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_LimitRangeList_To_v1_LimitRangeList is an autogenerated conversion function. +func Convert_api_LimitRangeList_To_v1_LimitRangeList(in *api.LimitRangeList, out *LimitRangeList, s conversion.Scope) error { + return autoConvert_api_LimitRangeList_To_v1_LimitRangeList(in, out, s) +} + +func autoConvert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in *LimitRangeSpec, out *api.LimitRangeSpec, s conversion.Scope) error { + out.Limits = *(*[]api.LimitRangeItem)(unsafe.Pointer(&in.Limits)) + return nil +} + +// Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec is an autogenerated conversion function. +func Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in *LimitRangeSpec, out *api.LimitRangeSpec, s conversion.Scope) error { + return autoConvert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in, out, s) +} + +func autoConvert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in *api.LimitRangeSpec, out *LimitRangeSpec, s conversion.Scope) error { + if in.Limits == nil { + out.Limits = make([]LimitRangeItem, 0) + } else { + out.Limits = *(*[]LimitRangeItem)(unsafe.Pointer(&in.Limits)) + } + return nil +} + +// Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec is an autogenerated conversion function. +func Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in *api.LimitRangeSpec, out *LimitRangeSpec, s conversion.Scope) error { + return autoConvert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in, out, s) +} + +func autoConvert_v1_List_To_api_List(in *List, out *api.List, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.Object, len(*in)) + for i := range *in { + if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_List_To_api_List is an autogenerated conversion function. +func Convert_v1_List_To_api_List(in *List, out *api.List, s conversion.Scope) error { + return autoConvert_v1_List_To_api_List(in, out, s) +} + +func autoConvert_api_List_To_v1_List(in *api.List, out *List, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.RawExtension, len(*in)) + for i := range *in { + if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]runtime.RawExtension, 0) + } + return nil +} + +// Convert_api_List_To_v1_List is an autogenerated conversion function. +func Convert_api_List_To_v1_List(in *api.List, out *List, s conversion.Scope) error { + return autoConvert_api_List_To_v1_List(in, out, s) +} + +func autoConvert_v1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.ListOptions, s conversion.Scope) error { + if err := meta_v1.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := meta_v1.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.IncludeUninitialized = in.IncludeUninitialized + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) + return nil +} + +// Convert_v1_ListOptions_To_api_ListOptions is an autogenerated conversion function. +func Convert_v1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.ListOptions, s conversion.Scope) error { + return autoConvert_v1_ListOptions_To_api_ListOptions(in, out, s) +} + +func autoConvert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *ListOptions, s conversion.Scope) error { + if err := meta_v1.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := meta_v1.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.IncludeUninitialized = in.IncludeUninitialized + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = (*int64)(unsafe.Pointer(in.TimeoutSeconds)) + return nil +} + +// Convert_api_ListOptions_To_v1_ListOptions is an autogenerated conversion function. +func Convert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *ListOptions, s conversion.Scope) error { + return autoConvert_api_ListOptions_To_v1_ListOptions(in, out, s) +} + +func autoConvert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in *LoadBalancerIngress, out *api.LoadBalancerIngress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + return nil +} + +// Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress is an autogenerated conversion function. +func Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in *LoadBalancerIngress, out *api.LoadBalancerIngress, s conversion.Scope) error { + return autoConvert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in, out, s) +} + +func autoConvert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *api.LoadBalancerIngress, out *LoadBalancerIngress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + return nil +} + +// Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress is an autogenerated conversion function. +func Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *api.LoadBalancerIngress, out *LoadBalancerIngress, s conversion.Scope) error { + return autoConvert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in, out, s) +} + +func autoConvert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in *LoadBalancerStatus, out *api.LoadBalancerStatus, s conversion.Scope) error { + out.Ingress = *(*[]api.LoadBalancerIngress)(unsafe.Pointer(&in.Ingress)) + return nil +} + +// Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus is an autogenerated conversion function. +func Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in *LoadBalancerStatus, out *api.LoadBalancerStatus, s conversion.Scope) error { + return autoConvert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in, out, s) +} + +func autoConvert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *api.LoadBalancerStatus, out *LoadBalancerStatus, s conversion.Scope) error { + out.Ingress = *(*[]LoadBalancerIngress)(unsafe.Pointer(&in.Ingress)) + return nil +} + +// Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus is an autogenerated conversion function. +func Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *api.LoadBalancerStatus, out *LoadBalancerStatus, s conversion.Scope) error { + return autoConvert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in, out, s) +} + +func autoConvert_v1_LocalObjectReference_To_api_LocalObjectReference(in *LocalObjectReference, out *api.LocalObjectReference, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +// Convert_v1_LocalObjectReference_To_api_LocalObjectReference is an autogenerated conversion function. +func Convert_v1_LocalObjectReference_To_api_LocalObjectReference(in *LocalObjectReference, out *api.LocalObjectReference, s conversion.Scope) error { + return autoConvert_v1_LocalObjectReference_To_api_LocalObjectReference(in, out, s) +} + +func autoConvert_api_LocalObjectReference_To_v1_LocalObjectReference(in *api.LocalObjectReference, out *LocalObjectReference, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +// Convert_api_LocalObjectReference_To_v1_LocalObjectReference is an autogenerated conversion function. +func Convert_api_LocalObjectReference_To_v1_LocalObjectReference(in *api.LocalObjectReference, out *LocalObjectReference, s conversion.Scope) error { + return autoConvert_api_LocalObjectReference_To_v1_LocalObjectReference(in, out, s) +} + +func autoConvert_v1_LocalVolumeSource_To_api_LocalVolumeSource(in *LocalVolumeSource, out *api.LocalVolumeSource, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_v1_LocalVolumeSource_To_api_LocalVolumeSource is an autogenerated conversion function. +func Convert_v1_LocalVolumeSource_To_api_LocalVolumeSource(in *LocalVolumeSource, out *api.LocalVolumeSource, s conversion.Scope) error { + return autoConvert_v1_LocalVolumeSource_To_api_LocalVolumeSource(in, out, s) +} + +func autoConvert_api_LocalVolumeSource_To_v1_LocalVolumeSource(in *api.LocalVolumeSource, out *LocalVolumeSource, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_api_LocalVolumeSource_To_v1_LocalVolumeSource is an autogenerated conversion function. +func Convert_api_LocalVolumeSource_To_v1_LocalVolumeSource(in *api.LocalVolumeSource, out *LocalVolumeSource, s conversion.Scope) error { + return autoConvert_api_LocalVolumeSource_To_v1_LocalVolumeSource(in, out, s) +} + +func autoConvert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *NFSVolumeSource, out *api.NFSVolumeSource, s conversion.Scope) error { + out.Server = in.Server + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource is an autogenerated conversion function. +func Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *NFSVolumeSource, out *api.NFSVolumeSource, s conversion.Scope) error { + return autoConvert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in, out, s) +} + +func autoConvert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in *api.NFSVolumeSource, out *NFSVolumeSource, s conversion.Scope) error { + out.Server = in.Server + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource is an autogenerated conversion function. +func Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in *api.NFSVolumeSource, out *NFSVolumeSource, s conversion.Scope) error { + return autoConvert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in, out, s) +} + +func autoConvert_v1_Namespace_To_api_Namespace(in *Namespace, out *api.Namespace, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_NamespaceSpec_To_api_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_NamespaceStatus_To_api_NamespaceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Namespace_To_api_Namespace is an autogenerated conversion function. +func Convert_v1_Namespace_To_api_Namespace(in *Namespace, out *api.Namespace, s conversion.Scope) error { + return autoConvert_v1_Namespace_To_api_Namespace(in, out, s) +} + +func autoConvert_api_Namespace_To_v1_Namespace(in *api.Namespace, out *Namespace, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_NamespaceSpec_To_v1_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_NamespaceStatus_To_v1_NamespaceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_Namespace_To_v1_Namespace is an autogenerated conversion function. +func Convert_api_Namespace_To_v1_Namespace(in *api.Namespace, out *Namespace, s conversion.Scope) error { + return autoConvert_api_Namespace_To_v1_Namespace(in, out, s) +} + +func autoConvert_v1_NamespaceList_To_api_NamespaceList(in *NamespaceList, out *api.NamespaceList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.Namespace)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_NamespaceList_To_api_NamespaceList is an autogenerated conversion function. +func Convert_v1_NamespaceList_To_api_NamespaceList(in *NamespaceList, out *api.NamespaceList, s conversion.Scope) error { + return autoConvert_v1_NamespaceList_To_api_NamespaceList(in, out, s) +} + +func autoConvert_api_NamespaceList_To_v1_NamespaceList(in *api.NamespaceList, out *NamespaceList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Namespace, 0) + } else { + out.Items = *(*[]Namespace)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_NamespaceList_To_v1_NamespaceList is an autogenerated conversion function. +func Convert_api_NamespaceList_To_v1_NamespaceList(in *api.NamespaceList, out *NamespaceList, s conversion.Scope) error { + return autoConvert_api_NamespaceList_To_v1_NamespaceList(in, out, s) +} + +func autoConvert_v1_NamespaceSpec_To_api_NamespaceSpec(in *NamespaceSpec, out *api.NamespaceSpec, s conversion.Scope) error { + out.Finalizers = *(*[]api.FinalizerName)(unsafe.Pointer(&in.Finalizers)) + return nil +} + +// Convert_v1_NamespaceSpec_To_api_NamespaceSpec is an autogenerated conversion function. +func Convert_v1_NamespaceSpec_To_api_NamespaceSpec(in *NamespaceSpec, out *api.NamespaceSpec, s conversion.Scope) error { + return autoConvert_v1_NamespaceSpec_To_api_NamespaceSpec(in, out, s) +} + +func autoConvert_api_NamespaceSpec_To_v1_NamespaceSpec(in *api.NamespaceSpec, out *NamespaceSpec, s conversion.Scope) error { + out.Finalizers = *(*[]FinalizerName)(unsafe.Pointer(&in.Finalizers)) + return nil +} + +// Convert_api_NamespaceSpec_To_v1_NamespaceSpec is an autogenerated conversion function. +func Convert_api_NamespaceSpec_To_v1_NamespaceSpec(in *api.NamespaceSpec, out *NamespaceSpec, s conversion.Scope) error { + return autoConvert_api_NamespaceSpec_To_v1_NamespaceSpec(in, out, s) +} + +func autoConvert_v1_NamespaceStatus_To_api_NamespaceStatus(in *NamespaceStatus, out *api.NamespaceStatus, s conversion.Scope) error { + out.Phase = api.NamespacePhase(in.Phase) + return nil +} + +// Convert_v1_NamespaceStatus_To_api_NamespaceStatus is an autogenerated conversion function. +func Convert_v1_NamespaceStatus_To_api_NamespaceStatus(in *NamespaceStatus, out *api.NamespaceStatus, s conversion.Scope) error { + return autoConvert_v1_NamespaceStatus_To_api_NamespaceStatus(in, out, s) +} + +func autoConvert_api_NamespaceStatus_To_v1_NamespaceStatus(in *api.NamespaceStatus, out *NamespaceStatus, s conversion.Scope) error { + out.Phase = NamespacePhase(in.Phase) + return nil +} + +// Convert_api_NamespaceStatus_To_v1_NamespaceStatus is an autogenerated conversion function. +func Convert_api_NamespaceStatus_To_v1_NamespaceStatus(in *api.NamespaceStatus, out *NamespaceStatus, s conversion.Scope) error { + return autoConvert_api_NamespaceStatus_To_v1_NamespaceStatus(in, out, s) +} + +func autoConvert_v1_Node_To_api_Node(in *Node, out *api.Node, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_NodeSpec_To_api_NodeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_NodeStatus_To_api_NodeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Node_To_api_Node is an autogenerated conversion function. +func Convert_v1_Node_To_api_Node(in *Node, out *api.Node, s conversion.Scope) error { + return autoConvert_v1_Node_To_api_Node(in, out, s) +} + +func autoConvert_api_Node_To_v1_Node(in *api.Node, out *Node, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_NodeSpec_To_v1_NodeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_NodeStatus_To_v1_NodeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_Node_To_v1_Node is an autogenerated conversion function. +func Convert_api_Node_To_v1_Node(in *api.Node, out *Node, s conversion.Scope) error { + return autoConvert_api_Node_To_v1_Node(in, out, s) +} + +func autoConvert_v1_NodeAddress_To_api_NodeAddress(in *NodeAddress, out *api.NodeAddress, s conversion.Scope) error { + out.Type = api.NodeAddressType(in.Type) + out.Address = in.Address + return nil +} + +// Convert_v1_NodeAddress_To_api_NodeAddress is an autogenerated conversion function. +func Convert_v1_NodeAddress_To_api_NodeAddress(in *NodeAddress, out *api.NodeAddress, s conversion.Scope) error { + return autoConvert_v1_NodeAddress_To_api_NodeAddress(in, out, s) +} + +func autoConvert_api_NodeAddress_To_v1_NodeAddress(in *api.NodeAddress, out *NodeAddress, s conversion.Scope) error { + out.Type = NodeAddressType(in.Type) + out.Address = in.Address + return nil +} + +// Convert_api_NodeAddress_To_v1_NodeAddress is an autogenerated conversion function. +func Convert_api_NodeAddress_To_v1_NodeAddress(in *api.NodeAddress, out *NodeAddress, s conversion.Scope) error { + return autoConvert_api_NodeAddress_To_v1_NodeAddress(in, out, s) +} + +func autoConvert_v1_NodeAffinity_To_api_NodeAffinity(in *NodeAffinity, out *api.NodeAffinity, s conversion.Scope) error { + out.RequiredDuringSchedulingIgnoredDuringExecution = (*api.NodeSelector)(unsafe.Pointer(in.RequiredDuringSchedulingIgnoredDuringExecution)) + out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]api.PreferredSchedulingTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution)) + return nil +} + +// Convert_v1_NodeAffinity_To_api_NodeAffinity is an autogenerated conversion function. +func Convert_v1_NodeAffinity_To_api_NodeAffinity(in *NodeAffinity, out *api.NodeAffinity, s conversion.Scope) error { + return autoConvert_v1_NodeAffinity_To_api_NodeAffinity(in, out, s) +} + +func autoConvert_api_NodeAffinity_To_v1_NodeAffinity(in *api.NodeAffinity, out *NodeAffinity, s conversion.Scope) error { + out.RequiredDuringSchedulingIgnoredDuringExecution = (*NodeSelector)(unsafe.Pointer(in.RequiredDuringSchedulingIgnoredDuringExecution)) + out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]PreferredSchedulingTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution)) + return nil +} + +// Convert_api_NodeAffinity_To_v1_NodeAffinity is an autogenerated conversion function. +func Convert_api_NodeAffinity_To_v1_NodeAffinity(in *api.NodeAffinity, out *NodeAffinity, s conversion.Scope) error { + return autoConvert_api_NodeAffinity_To_v1_NodeAffinity(in, out, s) +} + +func autoConvert_v1_NodeCondition_To_api_NodeCondition(in *NodeCondition, out *api.NodeCondition, s conversion.Scope) error { + out.Type = api.NodeConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.LastHeartbeatTime = in.LastHeartbeatTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_NodeCondition_To_api_NodeCondition is an autogenerated conversion function. +func Convert_v1_NodeCondition_To_api_NodeCondition(in *NodeCondition, out *api.NodeCondition, s conversion.Scope) error { + return autoConvert_v1_NodeCondition_To_api_NodeCondition(in, out, s) +} + +func autoConvert_api_NodeCondition_To_v1_NodeCondition(in *api.NodeCondition, out *NodeCondition, s conversion.Scope) error { + out.Type = NodeConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + out.LastHeartbeatTime = in.LastHeartbeatTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_api_NodeCondition_To_v1_NodeCondition is an autogenerated conversion function. +func Convert_api_NodeCondition_To_v1_NodeCondition(in *api.NodeCondition, out *NodeCondition, s conversion.Scope) error { + return autoConvert_api_NodeCondition_To_v1_NodeCondition(in, out, s) +} + +func autoConvert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in *NodeDaemonEndpoints, out *api.NodeDaemonEndpoints, s conversion.Scope) error { + if err := Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil { + return err + } + return nil +} + +// Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints is an autogenerated conversion function. +func Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in *NodeDaemonEndpoints, out *api.NodeDaemonEndpoints, s conversion.Scope) error { + return autoConvert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in, out, s) +} + +func autoConvert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *api.NodeDaemonEndpoints, out *NodeDaemonEndpoints, s conversion.Scope) error { + if err := Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil { + return err + } + return nil +} + +// Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints is an autogenerated conversion function. +func Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *api.NodeDaemonEndpoints, out *NodeDaemonEndpoints, s conversion.Scope) error { + return autoConvert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in, out, s) +} + +func autoConvert_v1_NodeList_To_api_NodeList(in *NodeList, out *api.NodeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.Node)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_NodeList_To_api_NodeList is an autogenerated conversion function. +func Convert_v1_NodeList_To_api_NodeList(in *NodeList, out *api.NodeList, s conversion.Scope) error { + return autoConvert_v1_NodeList_To_api_NodeList(in, out, s) +} + +func autoConvert_api_NodeList_To_v1_NodeList(in *api.NodeList, out *NodeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Node, 0) + } else { + out.Items = *(*[]Node)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_NodeList_To_v1_NodeList is an autogenerated conversion function. +func Convert_api_NodeList_To_v1_NodeList(in *api.NodeList, out *NodeList, s conversion.Scope) error { + return autoConvert_api_NodeList_To_v1_NodeList(in, out, s) +} + +func autoConvert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in *NodeProxyOptions, out *api.NodeProxyOptions, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions is an autogenerated conversion function. +func Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in *NodeProxyOptions, out *api.NodeProxyOptions, s conversion.Scope) error { + return autoConvert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in, out, s) +} + +func autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOptions, out *NodeProxyOptions, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions is an autogenerated conversion function. +func Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOptions, out *NodeProxyOptions, s conversion.Scope) error { + return autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in, out, s) +} + +func autoConvert_v1_NodeResources_To_api_NodeResources(in *NodeResources, out *api.NodeResources, s conversion.Scope) error { + out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity)) + return nil +} + +// Convert_v1_NodeResources_To_api_NodeResources is an autogenerated conversion function. +func Convert_v1_NodeResources_To_api_NodeResources(in *NodeResources, out *api.NodeResources, s conversion.Scope) error { + return autoConvert_v1_NodeResources_To_api_NodeResources(in, out, s) +} + +func autoConvert_api_NodeResources_To_v1_NodeResources(in *api.NodeResources, out *NodeResources, s conversion.Scope) error { + out.Capacity = *(*ResourceList)(unsafe.Pointer(&in.Capacity)) + return nil +} + +// Convert_api_NodeResources_To_v1_NodeResources is an autogenerated conversion function. +func Convert_api_NodeResources_To_v1_NodeResources(in *api.NodeResources, out *NodeResources, s conversion.Scope) error { + return autoConvert_api_NodeResources_To_v1_NodeResources(in, out, s) +} + +func autoConvert_v1_NodeSelector_To_api_NodeSelector(in *NodeSelector, out *api.NodeSelector, s conversion.Scope) error { + out.NodeSelectorTerms = *(*[]api.NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms)) + return nil +} + +// Convert_v1_NodeSelector_To_api_NodeSelector is an autogenerated conversion function. +func Convert_v1_NodeSelector_To_api_NodeSelector(in *NodeSelector, out *api.NodeSelector, s conversion.Scope) error { + return autoConvert_v1_NodeSelector_To_api_NodeSelector(in, out, s) +} + +func autoConvert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *NodeSelector, s conversion.Scope) error { + if in.NodeSelectorTerms == nil { + out.NodeSelectorTerms = make([]NodeSelectorTerm, 0) + } else { + out.NodeSelectorTerms = *(*[]NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms)) + } + return nil +} + +// Convert_api_NodeSelector_To_v1_NodeSelector is an autogenerated conversion function. +func Convert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *NodeSelector, s conversion.Scope) error { + return autoConvert_api_NodeSelector_To_v1_NodeSelector(in, out, s) +} + +func autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = api.NodeSelectorOperator(in.Operator) + out.Values = *(*[]string)(unsafe.Pointer(&in.Values)) + return nil +} + +// Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement is an autogenerated conversion function. +func Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error { + return autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in, out, s) +} + +func autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *NodeSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = NodeSelectorOperator(in.Operator) + out.Values = *(*[]string)(unsafe.Pointer(&in.Values)) + return nil +} + +// Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement is an autogenerated conversion function. +func Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *NodeSelectorRequirement, s conversion.Scope) error { + return autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in, out, s) +} + +func autoConvert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in *NodeSelectorTerm, out *api.NodeSelectorTerm, s conversion.Scope) error { + out.MatchExpressions = *(*[]api.NodeSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions)) + return nil +} + +// Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm is an autogenerated conversion function. +func Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in *NodeSelectorTerm, out *api.NodeSelectorTerm, s conversion.Scope) error { + return autoConvert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in, out, s) +} + +func autoConvert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *api.NodeSelectorTerm, out *NodeSelectorTerm, s conversion.Scope) error { + if in.MatchExpressions == nil { + out.MatchExpressions = make([]NodeSelectorRequirement, 0) + } else { + out.MatchExpressions = *(*[]NodeSelectorRequirement)(unsafe.Pointer(&in.MatchExpressions)) + } + return nil +} + +// Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm is an autogenerated conversion function. +func Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *api.NodeSelectorTerm, out *NodeSelectorTerm, s conversion.Scope) error { + return autoConvert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in, out, s) +} + +func autoConvert_v1_NodeSpec_To_api_NodeSpec(in *NodeSpec, out *api.NodeSpec, s conversion.Scope) error { + out.PodCIDR = in.PodCIDR + out.ExternalID = in.ExternalID + out.ProviderID = in.ProviderID + out.Unschedulable = in.Unschedulable + out.Taints = *(*[]api.Taint)(unsafe.Pointer(&in.Taints)) + return nil +} + +// Convert_v1_NodeSpec_To_api_NodeSpec is an autogenerated conversion function. +func Convert_v1_NodeSpec_To_api_NodeSpec(in *NodeSpec, out *api.NodeSpec, s conversion.Scope) error { + return autoConvert_v1_NodeSpec_To_api_NodeSpec(in, out, s) +} + +func autoConvert_api_NodeSpec_To_v1_NodeSpec(in *api.NodeSpec, out *NodeSpec, s conversion.Scope) error { + out.PodCIDR = in.PodCIDR + out.ExternalID = in.ExternalID + out.ProviderID = in.ProviderID + out.Unschedulable = in.Unschedulable + out.Taints = *(*[]Taint)(unsafe.Pointer(&in.Taints)) + return nil +} + +// Convert_api_NodeSpec_To_v1_NodeSpec is an autogenerated conversion function. +func Convert_api_NodeSpec_To_v1_NodeSpec(in *api.NodeSpec, out *NodeSpec, s conversion.Scope) error { + return autoConvert_api_NodeSpec_To_v1_NodeSpec(in, out, s) +} + +func autoConvert_v1_NodeStatus_To_api_NodeStatus(in *NodeStatus, out *api.NodeStatus, s conversion.Scope) error { + out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity)) + out.Allocatable = *(*api.ResourceList)(unsafe.Pointer(&in.Allocatable)) + out.Phase = api.NodePhase(in.Phase) + out.Conditions = *(*[]api.NodeCondition)(unsafe.Pointer(&in.Conditions)) + out.Addresses = *(*[]api.NodeAddress)(unsafe.Pointer(&in.Addresses)) + if err := Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil { + return err + } + if err := Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil { + return err + } + out.Images = *(*[]api.ContainerImage)(unsafe.Pointer(&in.Images)) + out.VolumesInUse = *(*[]api.UniqueVolumeName)(unsafe.Pointer(&in.VolumesInUse)) + out.VolumesAttached = *(*[]api.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached)) + return nil +} + +// Convert_v1_NodeStatus_To_api_NodeStatus is an autogenerated conversion function. +func Convert_v1_NodeStatus_To_api_NodeStatus(in *NodeStatus, out *api.NodeStatus, s conversion.Scope) error { + return autoConvert_v1_NodeStatus_To_api_NodeStatus(in, out, s) +} + +func autoConvert_api_NodeStatus_To_v1_NodeStatus(in *api.NodeStatus, out *NodeStatus, s conversion.Scope) error { + out.Capacity = *(*ResourceList)(unsafe.Pointer(&in.Capacity)) + out.Allocatable = *(*ResourceList)(unsafe.Pointer(&in.Allocatable)) + out.Phase = NodePhase(in.Phase) + out.Conditions = *(*[]NodeCondition)(unsafe.Pointer(&in.Conditions)) + out.Addresses = *(*[]NodeAddress)(unsafe.Pointer(&in.Addresses)) + if err := Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil { + return err + } + if err := Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil { + return err + } + out.Images = *(*[]ContainerImage)(unsafe.Pointer(&in.Images)) + out.VolumesInUse = *(*[]UniqueVolumeName)(unsafe.Pointer(&in.VolumesInUse)) + out.VolumesAttached = *(*[]AttachedVolume)(unsafe.Pointer(&in.VolumesAttached)) + return nil +} + +// Convert_api_NodeStatus_To_v1_NodeStatus is an autogenerated conversion function. +func Convert_api_NodeStatus_To_v1_NodeStatus(in *api.NodeStatus, out *NodeStatus, s conversion.Scope) error { + return autoConvert_api_NodeStatus_To_v1_NodeStatus(in, out, s) +} + +func autoConvert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in *NodeSystemInfo, out *api.NodeSystemInfo, s conversion.Scope) error { + out.MachineID = in.MachineID + out.SystemUUID = in.SystemUUID + out.BootID = in.BootID + out.KernelVersion = in.KernelVersion + out.OSImage = in.OSImage + out.ContainerRuntimeVersion = in.ContainerRuntimeVersion + out.KubeletVersion = in.KubeletVersion + out.KubeProxyVersion = in.KubeProxyVersion + out.OperatingSystem = in.OperatingSystem + out.Architecture = in.Architecture + return nil +} + +// Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo is an autogenerated conversion function. +func Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in *NodeSystemInfo, out *api.NodeSystemInfo, s conversion.Scope) error { + return autoConvert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in, out, s) +} + +func autoConvert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in *api.NodeSystemInfo, out *NodeSystemInfo, s conversion.Scope) error { + out.MachineID = in.MachineID + out.SystemUUID = in.SystemUUID + out.BootID = in.BootID + out.KernelVersion = in.KernelVersion + out.OSImage = in.OSImage + out.ContainerRuntimeVersion = in.ContainerRuntimeVersion + out.KubeletVersion = in.KubeletVersion + out.KubeProxyVersion = in.KubeProxyVersion + out.OperatingSystem = in.OperatingSystem + out.Architecture = in.Architecture + return nil +} + +// Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo is an autogenerated conversion function. +func Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in *api.NodeSystemInfo, out *NodeSystemInfo, s conversion.Scope) error { + return autoConvert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in, out, s) +} + +func autoConvert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in *ObjectFieldSelector, out *api.ObjectFieldSelector, s conversion.Scope) error { + out.APIVersion = in.APIVersion + out.FieldPath = in.FieldPath + return nil +} + +// Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector is an autogenerated conversion function. +func Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in *ObjectFieldSelector, out *api.ObjectFieldSelector, s conversion.Scope) error { + return autoConvert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in, out, s) +} + +func autoConvert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *api.ObjectFieldSelector, out *ObjectFieldSelector, s conversion.Scope) error { + out.APIVersion = in.APIVersion + out.FieldPath = in.FieldPath + return nil +} + +// Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector is an autogenerated conversion function. +func Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *api.ObjectFieldSelector, out *ObjectFieldSelector, s conversion.Scope) error { + return autoConvert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in, out, s) +} + +func autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in *ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error { + out.Name = in.Name + out.GenerateName = in.GenerateName + out.Namespace = in.Namespace + out.SelfLink = in.SelfLink + out.UID = types.UID(in.UID) + out.ResourceVersion = in.ResourceVersion + out.Generation = in.Generation + out.CreationTimestamp = in.CreationTimestamp + out.DeletionTimestamp = (*meta_v1.Time)(unsafe.Pointer(in.DeletionTimestamp)) + out.DeletionGracePeriodSeconds = (*int64)(unsafe.Pointer(in.DeletionGracePeriodSeconds)) + out.Labels = *(*map[string]string)(unsafe.Pointer(&in.Labels)) + out.Annotations = *(*map[string]string)(unsafe.Pointer(&in.Annotations)) + out.OwnerReferences = *(*[]meta_v1.OwnerReference)(unsafe.Pointer(&in.OwnerReferences)) + out.Initializers = (*meta_v1.Initializers)(unsafe.Pointer(in.Initializers)) + out.Finalizers = *(*[]string)(unsafe.Pointer(&in.Finalizers)) + out.ClusterName = in.ClusterName + return nil +} + +// Convert_v1_ObjectMeta_To_api_ObjectMeta is an autogenerated conversion function. +func Convert_v1_ObjectMeta_To_api_ObjectMeta(in *ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error { + return autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in, out, s) +} + +func autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *ObjectMeta, s conversion.Scope) error { + out.Name = in.Name + out.GenerateName = in.GenerateName + out.Namespace = in.Namespace + out.SelfLink = in.SelfLink + out.UID = types.UID(in.UID) + out.ResourceVersion = in.ResourceVersion + out.Generation = in.Generation + out.CreationTimestamp = in.CreationTimestamp + out.DeletionTimestamp = (*meta_v1.Time)(unsafe.Pointer(in.DeletionTimestamp)) + out.DeletionGracePeriodSeconds = (*int64)(unsafe.Pointer(in.DeletionGracePeriodSeconds)) + out.Labels = *(*map[string]string)(unsafe.Pointer(&in.Labels)) + out.Annotations = *(*map[string]string)(unsafe.Pointer(&in.Annotations)) + out.OwnerReferences = *(*[]meta_v1.OwnerReference)(unsafe.Pointer(&in.OwnerReferences)) + out.Initializers = (*meta_v1.Initializers)(unsafe.Pointer(in.Initializers)) + out.Finalizers = *(*[]string)(unsafe.Pointer(&in.Finalizers)) + out.ClusterName = in.ClusterName + return nil +} + +// Convert_api_ObjectMeta_To_v1_ObjectMeta is an autogenerated conversion function. +func Convert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *ObjectMeta, s conversion.Scope) error { + return autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in, out, s) +} + +func autoConvert_v1_ObjectReference_To_api_ObjectReference(in *ObjectReference, out *api.ObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Namespace = in.Namespace + out.Name = in.Name + out.UID = types.UID(in.UID) + out.APIVersion = in.APIVersion + out.ResourceVersion = in.ResourceVersion + out.FieldPath = in.FieldPath + return nil +} + +// Convert_v1_ObjectReference_To_api_ObjectReference is an autogenerated conversion function. +func Convert_v1_ObjectReference_To_api_ObjectReference(in *ObjectReference, out *api.ObjectReference, s conversion.Scope) error { + return autoConvert_v1_ObjectReference_To_api_ObjectReference(in, out, s) +} + +func autoConvert_api_ObjectReference_To_v1_ObjectReference(in *api.ObjectReference, out *ObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Namespace = in.Namespace + out.Name = in.Name + out.UID = types.UID(in.UID) + out.APIVersion = in.APIVersion + out.ResourceVersion = in.ResourceVersion + out.FieldPath = in.FieldPath + return nil +} + +// Convert_api_ObjectReference_To_v1_ObjectReference is an autogenerated conversion function. +func Convert_api_ObjectReference_To_v1_ObjectReference(in *api.ObjectReference, out *ObjectReference, s conversion.Scope) error { + return autoConvert_api_ObjectReference_To_v1_ObjectReference(in, out, s) +} + +func autoConvert_v1_PersistentVolume_To_api_PersistentVolume(in *PersistentVolume, out *api.PersistentVolume, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_PersistentVolume_To_api_PersistentVolume is an autogenerated conversion function. +func Convert_v1_PersistentVolume_To_api_PersistentVolume(in *PersistentVolume, out *api.PersistentVolume, s conversion.Scope) error { + return autoConvert_v1_PersistentVolume_To_api_PersistentVolume(in, out, s) +} + +func autoConvert_api_PersistentVolume_To_v1_PersistentVolume(in *api.PersistentVolume, out *PersistentVolume, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_PersistentVolume_To_v1_PersistentVolume is an autogenerated conversion function. +func Convert_api_PersistentVolume_To_v1_PersistentVolume(in *api.PersistentVolume, out *PersistentVolume, s conversion.Scope) error { + return autoConvert_api_PersistentVolume_To_v1_PersistentVolume(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in *PersistentVolumeClaim, out *api.PersistentVolumeClaim, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim is an autogenerated conversion function. +func Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in *PersistentVolumeClaim, out *api.PersistentVolumeClaim, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *api.PersistentVolumeClaim, out *PersistentVolumeClaim, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim is an autogenerated conversion function. +func Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *api.PersistentVolumeClaim, out *PersistentVolumeClaim, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in *PersistentVolumeClaimList, out *api.PersistentVolumeClaimList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList is an autogenerated conversion function. +func Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in *PersistentVolumeClaimList, out *api.PersistentVolumeClaimList, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *api.PersistentVolumeClaimList, out *PersistentVolumeClaimList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]PersistentVolumeClaim, 0) + } else { + out.Items = *(*[]PersistentVolumeClaim)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList is an autogenerated conversion function. +func Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *api.PersistentVolumeClaimList, out *PersistentVolumeClaimList, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in *PersistentVolumeClaimSpec, out *api.PersistentVolumeClaimSpec, s conversion.Scope) error { + out.AccessModes = *(*[]api.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) + out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := Convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + out.VolumeName = in.VolumeName + out.StorageClassName = (*string)(unsafe.Pointer(in.StorageClassName)) + return nil +} + +// Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec is an autogenerated conversion function. +func Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in *PersistentVolumeClaimSpec, out *api.PersistentVolumeClaimSpec, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *api.PersistentVolumeClaimSpec, out *PersistentVolumeClaimSpec, s conversion.Scope) error { + out.AccessModes = *(*[]PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) + out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := Convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + out.VolumeName = in.VolumeName + out.StorageClassName = (*string)(unsafe.Pointer(in.StorageClassName)) + return nil +} + +// Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec is an autogenerated conversion function. +func Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *api.PersistentVolumeClaimSpec, out *PersistentVolumeClaimSpec, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in *PersistentVolumeClaimStatus, out *api.PersistentVolumeClaimStatus, s conversion.Scope) error { + out.Phase = api.PersistentVolumeClaimPhase(in.Phase) + out.AccessModes = *(*[]api.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) + out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity)) + return nil +} + +// Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus is an autogenerated conversion function. +func Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in *PersistentVolumeClaimStatus, out *api.PersistentVolumeClaimStatus, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *api.PersistentVolumeClaimStatus, out *PersistentVolumeClaimStatus, s conversion.Scope) error { + out.Phase = PersistentVolumeClaimPhase(in.Phase) + out.AccessModes = *(*[]PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) + out.Capacity = *(*ResourceList)(unsafe.Pointer(&in.Capacity)) + return nil +} + +// Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus is an autogenerated conversion function. +func Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *api.PersistentVolumeClaimStatus, out *PersistentVolumeClaimStatus, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in *PersistentVolumeClaimVolumeSource, out *api.PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + out.ClaimName = in.ClaimName + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource is an autogenerated conversion function. +func Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in *PersistentVolumeClaimVolumeSource, out *api.PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *api.PersistentVolumeClaimVolumeSource, out *PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + out.ClaimName = in.ClaimName + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource is an autogenerated conversion function. +func Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *api.PersistentVolumeClaimVolumeSource, out *PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in, out, s) +} + +func autoConvert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in *PersistentVolumeList, out *api.PersistentVolumeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.PersistentVolume, len(*in)) + for i := range *in { + if err := Convert_v1_PersistentVolume_To_api_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList is an autogenerated conversion function. +func Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in *PersistentVolumeList, out *api.PersistentVolumeList, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in, out, s) +} + +func autoConvert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in *api.PersistentVolumeList, out *PersistentVolumeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolume, len(*in)) + for i := range *in { + if err := Convert_api_PersistentVolume_To_v1_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]PersistentVolume, 0) + } + return nil +} + +// Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList is an autogenerated conversion function. +func Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in *api.PersistentVolumeList, out *PersistentVolumeList, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in, out, s) +} + +func autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *PersistentVolumeSource, out *api.PersistentVolumeSource, s conversion.Scope) error { + out.GCEPersistentDisk = (*api.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk)) + out.AWSElasticBlockStore = (*api.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore)) + out.HostPath = (*api.HostPathVolumeSource)(unsafe.Pointer(in.HostPath)) + out.Glusterfs = (*api.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs)) + out.NFS = (*api.NFSVolumeSource)(unsafe.Pointer(in.NFS)) + out.RBD = (*api.RBDVolumeSource)(unsafe.Pointer(in.RBD)) + out.ISCSI = (*api.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI)) + out.Cinder = (*api.CinderVolumeSource)(unsafe.Pointer(in.Cinder)) + out.CephFS = (*api.CephFSVolumeSource)(unsafe.Pointer(in.CephFS)) + out.FC = (*api.FCVolumeSource)(unsafe.Pointer(in.FC)) + out.Flocker = (*api.FlockerVolumeSource)(unsafe.Pointer(in.Flocker)) + out.FlexVolume = (*api.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume)) + out.AzureFile = (*api.AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile)) + out.VsphereVolume = (*api.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume)) + out.Quobyte = (*api.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte)) + out.AzureDisk = (*api.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) + out.PhotonPersistentDisk = (*api.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) + out.PortworxVolume = (*api.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) + out.ScaleIO = (*api.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) + out.Local = (*api.LocalVolumeSource)(unsafe.Pointer(in.Local)) + out.StorageOS = (*api.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS)) + return nil +} + +// Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource is an autogenerated conversion function. +func Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *PersistentVolumeSource, out *api.PersistentVolumeSource, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in, out, s) +} + +func autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api.PersistentVolumeSource, out *PersistentVolumeSource, s conversion.Scope) error { + out.GCEPersistentDisk = (*GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk)) + out.AWSElasticBlockStore = (*AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore)) + out.HostPath = (*HostPathVolumeSource)(unsafe.Pointer(in.HostPath)) + out.Glusterfs = (*GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs)) + out.NFS = (*NFSVolumeSource)(unsafe.Pointer(in.NFS)) + out.RBD = (*RBDVolumeSource)(unsafe.Pointer(in.RBD)) + out.Quobyte = (*QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte)) + out.ISCSI = (*ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI)) + out.FlexVolume = (*FlexVolumeSource)(unsafe.Pointer(in.FlexVolume)) + out.Cinder = (*CinderVolumeSource)(unsafe.Pointer(in.Cinder)) + out.CephFS = (*CephFSVolumeSource)(unsafe.Pointer(in.CephFS)) + out.FC = (*FCVolumeSource)(unsafe.Pointer(in.FC)) + out.Flocker = (*FlockerVolumeSource)(unsafe.Pointer(in.Flocker)) + out.AzureFile = (*AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile)) + out.VsphereVolume = (*VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume)) + out.AzureDisk = (*AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) + out.PhotonPersistentDisk = (*PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) + out.PortworxVolume = (*PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) + out.ScaleIO = (*ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) + out.Local = (*LocalVolumeSource)(unsafe.Pointer(in.Local)) + out.StorageOS = (*StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS)) + return nil +} + +// Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource is an autogenerated conversion function. +func Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api.PersistentVolumeSource, out *PersistentVolumeSource, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in, out, s) +} + +func autoConvert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in *PersistentVolumeSpec, out *api.PersistentVolumeSpec, s conversion.Scope) error { + out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity)) + if err := Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil { + return err + } + out.AccessModes = *(*[]api.PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) + out.ClaimRef = (*api.ObjectReference)(unsafe.Pointer(in.ClaimRef)) + out.PersistentVolumeReclaimPolicy = api.PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy) + out.StorageClassName = in.StorageClassName + return nil +} + +// Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec is an autogenerated conversion function. +func Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in *PersistentVolumeSpec, out *api.PersistentVolumeSpec, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in, out, s) +} + +func autoConvert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *api.PersistentVolumeSpec, out *PersistentVolumeSpec, s conversion.Scope) error { + out.Capacity = *(*ResourceList)(unsafe.Pointer(&in.Capacity)) + if err := Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil { + return err + } + out.AccessModes = *(*[]PersistentVolumeAccessMode)(unsafe.Pointer(&in.AccessModes)) + out.ClaimRef = (*ObjectReference)(unsafe.Pointer(in.ClaimRef)) + out.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy) + out.StorageClassName = in.StorageClassName + return nil +} + +// Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec is an autogenerated conversion function. +func Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *api.PersistentVolumeSpec, out *PersistentVolumeSpec, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in, out, s) +} + +func autoConvert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in *PersistentVolumeStatus, out *api.PersistentVolumeStatus, s conversion.Scope) error { + out.Phase = api.PersistentVolumePhase(in.Phase) + out.Message = in.Message + out.Reason = in.Reason + return nil +} + +// Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus is an autogenerated conversion function. +func Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in *PersistentVolumeStatus, out *api.PersistentVolumeStatus, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in, out, s) +} + +func autoConvert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *api.PersistentVolumeStatus, out *PersistentVolumeStatus, s conversion.Scope) error { + out.Phase = PersistentVolumePhase(in.Phase) + out.Message = in.Message + out.Reason = in.Reason + return nil +} + +// Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus is an autogenerated conversion function. +func Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *api.PersistentVolumeStatus, out *PersistentVolumeStatus, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in, out, s) +} + +func autoConvert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource(in *PhotonPersistentDiskVolumeSource, out *api.PhotonPersistentDiskVolumeSource, s conversion.Scope) error { + out.PdID = in.PdID + out.FSType = in.FSType + return nil +} + +// Convert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource is an autogenerated conversion function. +func Convert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource(in *PhotonPersistentDiskVolumeSource, out *api.PhotonPersistentDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_PhotonPersistentDiskVolumeSource_To_api_PhotonPersistentDiskVolumeSource(in, out, s) +} + +func autoConvert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in *api.PhotonPersistentDiskVolumeSource, out *PhotonPersistentDiskVolumeSource, s conversion.Scope) error { + out.PdID = in.PdID + out.FSType = in.FSType + return nil +} + +// Convert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource is an autogenerated conversion function. +func Convert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in *api.PhotonPersistentDiskVolumeSource, out *PhotonPersistentDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_PhotonPersistentDiskVolumeSource_To_v1_PhotonPersistentDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_Pod_To_api_Pod(in *Pod, out *api.Pod, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_PodSpec_To_api_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_PodStatus_To_api_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_api_Pod_To_v1_Pod(in *api.Pod, out *Pod, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_PodAffinity_To_api_PodAffinity(in *PodAffinity, out *api.PodAffinity, s conversion.Scope) error { + out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]api.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution)) + out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]api.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution)) + return nil +} + +// Convert_v1_PodAffinity_To_api_PodAffinity is an autogenerated conversion function. +func Convert_v1_PodAffinity_To_api_PodAffinity(in *PodAffinity, out *api.PodAffinity, s conversion.Scope) error { + return autoConvert_v1_PodAffinity_To_api_PodAffinity(in, out, s) +} + +func autoConvert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *PodAffinity, s conversion.Scope) error { + out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution)) + out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution)) + return nil +} + +// Convert_api_PodAffinity_To_v1_PodAffinity is an autogenerated conversion function. +func Convert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *PodAffinity, s conversion.Scope) error { + return autoConvert_api_PodAffinity_To_v1_PodAffinity(in, out, s) +} + +func autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error { + out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector)) + out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces)) + out.TopologyKey = in.TopologyKey + return nil +} + +// Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm is an autogenerated conversion function. +func Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error { + return autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in, out, s) +} + +func autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *PodAffinityTerm, s conversion.Scope) error { + out.LabelSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.LabelSelector)) + out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces)) + out.TopologyKey = in.TopologyKey + return nil +} + +// Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm is an autogenerated conversion function. +func Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *PodAffinityTerm, s conversion.Scope) error { + return autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in, out, s) +} + +func autoConvert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in *PodAntiAffinity, out *api.PodAntiAffinity, s conversion.Scope) error { + out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]api.PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution)) + out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]api.WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution)) + return nil +} + +// Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity is an autogenerated conversion function. +func Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in *PodAntiAffinity, out *api.PodAntiAffinity, s conversion.Scope) error { + return autoConvert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in, out, s) +} + +func autoConvert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in *api.PodAntiAffinity, out *PodAntiAffinity, s conversion.Scope) error { + out.RequiredDuringSchedulingIgnoredDuringExecution = *(*[]PodAffinityTerm)(unsafe.Pointer(&in.RequiredDuringSchedulingIgnoredDuringExecution)) + out.PreferredDuringSchedulingIgnoredDuringExecution = *(*[]WeightedPodAffinityTerm)(unsafe.Pointer(&in.PreferredDuringSchedulingIgnoredDuringExecution)) + return nil +} + +// Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity is an autogenerated conversion function. +func Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in *api.PodAntiAffinity, out *PodAntiAffinity, s conversion.Scope) error { + return autoConvert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in, out, s) +} + +func autoConvert_v1_PodAttachOptions_To_api_PodAttachOptions(in *PodAttachOptions, out *api.PodAttachOptions, s conversion.Scope) error { + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + return nil +} + +// Convert_v1_PodAttachOptions_To_api_PodAttachOptions is an autogenerated conversion function. +func Convert_v1_PodAttachOptions_To_api_PodAttachOptions(in *PodAttachOptions, out *api.PodAttachOptions, s conversion.Scope) error { + return autoConvert_v1_PodAttachOptions_To_api_PodAttachOptions(in, out, s) +} + +func autoConvert_api_PodAttachOptions_To_v1_PodAttachOptions(in *api.PodAttachOptions, out *PodAttachOptions, s conversion.Scope) error { + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + return nil +} + +// Convert_api_PodAttachOptions_To_v1_PodAttachOptions is an autogenerated conversion function. +func Convert_api_PodAttachOptions_To_v1_PodAttachOptions(in *api.PodAttachOptions, out *PodAttachOptions, s conversion.Scope) error { + return autoConvert_api_PodAttachOptions_To_v1_PodAttachOptions(in, out, s) +} + +func autoConvert_v1_PodCondition_To_api_PodCondition(in *PodCondition, out *api.PodCondition, s conversion.Scope) error { + out.Type = api.PodConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.LastProbeTime = in.LastProbeTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_PodCondition_To_api_PodCondition is an autogenerated conversion function. +func Convert_v1_PodCondition_To_api_PodCondition(in *PodCondition, out *api.PodCondition, s conversion.Scope) error { + return autoConvert_v1_PodCondition_To_api_PodCondition(in, out, s) +} + +func autoConvert_api_PodCondition_To_v1_PodCondition(in *api.PodCondition, out *PodCondition, s conversion.Scope) error { + out.Type = PodConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + out.LastProbeTime = in.LastProbeTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_api_PodCondition_To_v1_PodCondition is an autogenerated conversion function. +func Convert_api_PodCondition_To_v1_PodCondition(in *api.PodCondition, out *PodCondition, s conversion.Scope) error { + return autoConvert_api_PodCondition_To_v1_PodCondition(in, out, s) +} + +func autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in *PodExecOptions, out *api.PodExecOptions, s conversion.Scope) error { + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + out.Command = *(*[]string)(unsafe.Pointer(&in.Command)) + return nil +} + +// Convert_v1_PodExecOptions_To_api_PodExecOptions is an autogenerated conversion function. +func Convert_v1_PodExecOptions_To_api_PodExecOptions(in *PodExecOptions, out *api.PodExecOptions, s conversion.Scope) error { + return autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in, out, s) +} + +func autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions, out *PodExecOptions, s conversion.Scope) error { + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + if in.Command == nil { + out.Command = make([]string, 0) + } else { + out.Command = *(*[]string)(unsafe.Pointer(&in.Command)) + } + return nil +} + +// Convert_api_PodExecOptions_To_v1_PodExecOptions is an autogenerated conversion function. +func Convert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions, out *PodExecOptions, s conversion.Scope) error { + return autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in, out, s) +} + +func autoConvert_v1_PodList_To_api_PodList(in *PodList, out *api.PodList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Pod, len(*in)) + for i := range *in { + if err := Convert_v1_Pod_To_api_Pod(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_PodList_To_api_PodList is an autogenerated conversion function. +func Convert_v1_PodList_To_api_PodList(in *PodList, out *api.PodList, s conversion.Scope) error { + return autoConvert_v1_PodList_To_api_PodList(in, out, s) +} + +func autoConvert_api_PodList_To_v1_PodList(in *api.PodList, out *PodList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pod, len(*in)) + for i := range *in { + if err := Convert_api_Pod_To_v1_Pod(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]Pod, 0) + } + return nil +} + +// Convert_api_PodList_To_v1_PodList is an autogenerated conversion function. +func Convert_api_PodList_To_v1_PodList(in *api.PodList, out *PodList, s conversion.Scope) error { + return autoConvert_api_PodList_To_v1_PodList(in, out, s) +} + +func autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in *PodLogOptions, out *api.PodLogOptions, s conversion.Scope) error { + out.Container = in.Container + out.Follow = in.Follow + out.Previous = in.Previous + out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds)) + out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime)) + out.Timestamps = in.Timestamps + out.TailLines = (*int64)(unsafe.Pointer(in.TailLines)) + out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes)) + return nil +} + +// Convert_v1_PodLogOptions_To_api_PodLogOptions is an autogenerated conversion function. +func Convert_v1_PodLogOptions_To_api_PodLogOptions(in *PodLogOptions, out *api.PodLogOptions, s conversion.Scope) error { + return autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in, out, s) +} + +func autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, out *PodLogOptions, s conversion.Scope) error { + out.Container = in.Container + out.Follow = in.Follow + out.Previous = in.Previous + out.SinceSeconds = (*int64)(unsafe.Pointer(in.SinceSeconds)) + out.SinceTime = (*meta_v1.Time)(unsafe.Pointer(in.SinceTime)) + out.Timestamps = in.Timestamps + out.TailLines = (*int64)(unsafe.Pointer(in.TailLines)) + out.LimitBytes = (*int64)(unsafe.Pointer(in.LimitBytes)) + return nil +} + +// Convert_api_PodLogOptions_To_v1_PodLogOptions is an autogenerated conversion function. +func Convert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, out *PodLogOptions, s conversion.Scope) error { + return autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in, out, s) +} + +func autoConvert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions(in *PodPortForwardOptions, out *api.PodPortForwardOptions, s conversion.Scope) error { + out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports)) + return nil +} + +// Convert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions is an autogenerated conversion function. +func Convert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions(in *PodPortForwardOptions, out *api.PodPortForwardOptions, s conversion.Scope) error { + return autoConvert_v1_PodPortForwardOptions_To_api_PodPortForwardOptions(in, out, s) +} + +func autoConvert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions(in *api.PodPortForwardOptions, out *PodPortForwardOptions, s conversion.Scope) error { + out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports)) + return nil +} + +// Convert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions is an autogenerated conversion function. +func Convert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions(in *api.PodPortForwardOptions, out *PodPortForwardOptions, s conversion.Scope) error { + return autoConvert_api_PodPortForwardOptions_To_v1_PodPortForwardOptions(in, out, s) +} + +func autoConvert_v1_PodProxyOptions_To_api_PodProxyOptions(in *PodProxyOptions, out *api.PodProxyOptions, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_v1_PodProxyOptions_To_api_PodProxyOptions is an autogenerated conversion function. +func Convert_v1_PodProxyOptions_To_api_PodProxyOptions(in *PodProxyOptions, out *api.PodProxyOptions, s conversion.Scope) error { + return autoConvert_v1_PodProxyOptions_To_api_PodProxyOptions(in, out, s) +} + +func autoConvert_api_PodProxyOptions_To_v1_PodProxyOptions(in *api.PodProxyOptions, out *PodProxyOptions, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_api_PodProxyOptions_To_v1_PodProxyOptions is an autogenerated conversion function. +func Convert_api_PodProxyOptions_To_v1_PodProxyOptions(in *api.PodProxyOptions, out *PodProxyOptions, s conversion.Scope) error { + return autoConvert_api_PodProxyOptions_To_v1_PodProxyOptions(in, out, s) +} + +func autoConvert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurityContext, out *api.PodSecurityContext, s conversion.Scope) error { + out.SELinuxOptions = (*api.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser)) + out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot)) + out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups)) + out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup)) + return nil +} + +func autoConvert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *PodSecurityContext, s conversion.Scope) error { + // INFO: in.HostNetwork opted out of conversion generation + // INFO: in.HostPID opted out of conversion generation + // INFO: in.HostIPC opted out of conversion generation + out.SELinuxOptions = (*SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser)) + out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot)) + out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups)) + out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup)) + return nil +} + +func autoConvert_v1_PodSignature_To_api_PodSignature(in *PodSignature, out *api.PodSignature, s conversion.Scope) error { + out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController)) + return nil +} + +// Convert_v1_PodSignature_To_api_PodSignature is an autogenerated conversion function. +func Convert_v1_PodSignature_To_api_PodSignature(in *PodSignature, out *api.PodSignature, s conversion.Scope) error { + return autoConvert_v1_PodSignature_To_api_PodSignature(in, out, s) +} + +func autoConvert_api_PodSignature_To_v1_PodSignature(in *api.PodSignature, out *PodSignature, s conversion.Scope) error { + out.PodController = (*meta_v1.OwnerReference)(unsafe.Pointer(in.PodController)) + return nil +} + +// Convert_api_PodSignature_To_v1_PodSignature is an autogenerated conversion function. +func Convert_api_PodSignature_To_v1_PodSignature(in *api.PodSignature, out *PodSignature, s conversion.Scope) error { + return autoConvert_api_PodSignature_To_v1_PodSignature(in, out, s) +} + +func autoConvert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conversion.Scope) error { + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]api.Volume, len(*in)) + for i := range *in { + if err := Convert_v1_Volume_To_api_Volume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + out.InitContainers = *(*[]api.Container)(unsafe.Pointer(&in.InitContainers)) + out.Containers = *(*[]api.Container)(unsafe.Pointer(&in.Containers)) + out.RestartPolicy = api.RestartPolicy(in.RestartPolicy) + out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds)) + out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) + out.DNSPolicy = api.DNSPolicy(in.DNSPolicy) + out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) + out.ServiceAccountName = in.ServiceAccountName + // INFO: in.DeprecatedServiceAccount opted out of conversion generation + out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken)) + out.NodeName = in.NodeName + // INFO: in.HostNetwork opted out of conversion generation + // INFO: in.HostPID opted out of conversion generation + // INFO: in.HostIPC opted out of conversion generation + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(api.PodSecurityContext) + if err := Convert_v1_PodSecurityContext_To_api_PodSecurityContext(*in, *out, s); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + out.ImagePullSecrets = *(*[]api.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets)) + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + out.Affinity = (*api.Affinity)(unsafe.Pointer(in.Affinity)) + out.SchedulerName = in.SchedulerName + out.Tolerations = *(*[]api.Toleration)(unsafe.Pointer(&in.Tolerations)) + out.HostAliases = *(*[]api.HostAlias)(unsafe.Pointer(&in.HostAliases)) + return nil +} + +func autoConvert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conversion.Scope) error { + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + if err := Convert_api_Volume_To_v1_Volume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + out.InitContainers = *(*[]Container)(unsafe.Pointer(&in.InitContainers)) + if in.Containers == nil { + out.Containers = make([]Container, 0) + } else { + out.Containers = *(*[]Container)(unsafe.Pointer(&in.Containers)) + } + out.RestartPolicy = RestartPolicy(in.RestartPolicy) + out.TerminationGracePeriodSeconds = (*int64)(unsafe.Pointer(in.TerminationGracePeriodSeconds)) + out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) + out.DNSPolicy = DNSPolicy(in.DNSPolicy) + out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) + out.ServiceAccountName = in.ServiceAccountName + out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken)) + out.NodeName = in.NodeName + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(PodSecurityContext) + if err := Convert_api_PodSecurityContext_To_v1_PodSecurityContext(*in, *out, s); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + out.ImagePullSecrets = *(*[]LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets)) + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + out.Affinity = (*Affinity)(unsafe.Pointer(in.Affinity)) + out.SchedulerName = in.SchedulerName + out.Tolerations = *(*[]Toleration)(unsafe.Pointer(&in.Tolerations)) + out.HostAliases = *(*[]HostAlias)(unsafe.Pointer(&in.HostAliases)) + return nil +} + +func autoConvert_v1_PodStatus_To_api_PodStatus(in *PodStatus, out *api.PodStatus, s conversion.Scope) error { + out.Phase = api.PodPhase(in.Phase) + out.Conditions = *(*[]api.PodCondition)(unsafe.Pointer(&in.Conditions)) + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.PodIP = in.PodIP + out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + out.InitContainerStatuses = *(*[]api.ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses)) + out.ContainerStatuses = *(*[]api.ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses)) + out.QOSClass = api.PodQOSClass(in.QOSClass) + return nil +} + +// Convert_v1_PodStatus_To_api_PodStatus is an autogenerated conversion function. +func Convert_v1_PodStatus_To_api_PodStatus(in *PodStatus, out *api.PodStatus, s conversion.Scope) error { + return autoConvert_v1_PodStatus_To_api_PodStatus(in, out, s) +} + +func autoConvert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *PodStatus, s conversion.Scope) error { + out.Phase = PodPhase(in.Phase) + out.Conditions = *(*[]PodCondition)(unsafe.Pointer(&in.Conditions)) + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.PodIP = in.PodIP + out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + out.QOSClass = PodQOSClass(in.QOSClass) + out.InitContainerStatuses = *(*[]ContainerStatus)(unsafe.Pointer(&in.InitContainerStatuses)) + out.ContainerStatuses = *(*[]ContainerStatus)(unsafe.Pointer(&in.ContainerStatuses)) + return nil +} + +// Convert_api_PodStatus_To_v1_PodStatus is an autogenerated conversion function. +func Convert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *PodStatus, s conversion.Scope) error { + return autoConvert_api_PodStatus_To_v1_PodStatus(in, out, s) +} + +func autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in *PodStatusResult, out *api.PodStatusResult, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_PodStatus_To_api_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult, out *PodStatusResult, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_PodTemplate_To_api_PodTemplate(in *PodTemplate, out *api.PodTemplate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +// Convert_v1_PodTemplate_To_api_PodTemplate is an autogenerated conversion function. +func Convert_v1_PodTemplate_To_api_PodTemplate(in *PodTemplate, out *api.PodTemplate, s conversion.Scope) error { + return autoConvert_v1_PodTemplate_To_api_PodTemplate(in, out, s) +} + +func autoConvert_api_PodTemplate_To_v1_PodTemplate(in *api.PodTemplate, out *PodTemplate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +// Convert_api_PodTemplate_To_v1_PodTemplate is an autogenerated conversion function. +func Convert_api_PodTemplate_To_v1_PodTemplate(in *api.PodTemplate, out *PodTemplate, s conversion.Scope) error { + return autoConvert_api_PodTemplate_To_v1_PodTemplate(in, out, s) +} + +func autoConvert_v1_PodTemplateList_To_api_PodTemplateList(in *PodTemplateList, out *api.PodTemplateList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.PodTemplate, len(*in)) + for i := range *in { + if err := Convert_v1_PodTemplate_To_api_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_PodTemplateList_To_api_PodTemplateList is an autogenerated conversion function. +func Convert_v1_PodTemplateList_To_api_PodTemplateList(in *PodTemplateList, out *api.PodTemplateList, s conversion.Scope) error { + return autoConvert_v1_PodTemplateList_To_api_PodTemplateList(in, out, s) +} + +func autoConvert_api_PodTemplateList_To_v1_PodTemplateList(in *api.PodTemplateList, out *PodTemplateList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodTemplate, len(*in)) + for i := range *in { + if err := Convert_api_PodTemplate_To_v1_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]PodTemplate, 0) + } + return nil +} + +// Convert_api_PodTemplateList_To_v1_PodTemplateList is an autogenerated conversion function. +func Convert_api_PodTemplateList_To_v1_PodTemplateList(in *api.PodTemplateList, out *PodTemplateList, s conversion.Scope) error { + return autoConvert_api_PodTemplateList_To_v1_PodTemplateList(in, out, s) +} + +func autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *PodTemplateSpec, out *api.PodTemplateSpec, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_PodSpec_To_api_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec, out *PodTemplateSpec, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource(in *PortworxVolumeSource, out *api.PortworxVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource is an autogenerated conversion function. +func Convert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource(in *PortworxVolumeSource, out *api.PortworxVolumeSource, s conversion.Scope) error { + return autoConvert_v1_PortworxVolumeSource_To_api_PortworxVolumeSource(in, out, s) +} + +func autoConvert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource(in *api.PortworxVolumeSource, out *PortworxVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource is an autogenerated conversion function. +func Convert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource(in *api.PortworxVolumeSource, out *PortworxVolumeSource, s conversion.Scope) error { + return autoConvert_api_PortworxVolumeSource_To_v1_PortworxVolumeSource(in, out, s) +} + +func autoConvert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.Preconditions, s conversion.Scope) error { + out.UID = (*types.UID)(unsafe.Pointer(in.UID)) + return nil +} + +// Convert_v1_Preconditions_To_api_Preconditions is an autogenerated conversion function. +func Convert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.Preconditions, s conversion.Scope) error { + return autoConvert_v1_Preconditions_To_api_Preconditions(in, out, s) +} + +func autoConvert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *Preconditions, s conversion.Scope) error { + out.UID = (*types.UID)(unsafe.Pointer(in.UID)) + return nil +} + +// Convert_api_Preconditions_To_v1_Preconditions is an autogenerated conversion function. +func Convert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *Preconditions, s conversion.Scope) error { + return autoConvert_api_Preconditions_To_v1_Preconditions(in, out, s) +} + +func autoConvert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in *PreferAvoidPodsEntry, out *api.PreferAvoidPodsEntry, s conversion.Scope) error { + if err := Convert_v1_PodSignature_To_api_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil { + return err + } + out.EvictionTime = in.EvictionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry is an autogenerated conversion function. +func Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in *PreferAvoidPodsEntry, out *api.PreferAvoidPodsEntry, s conversion.Scope) error { + return autoConvert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in, out, s) +} + +func autoConvert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *api.PreferAvoidPodsEntry, out *PreferAvoidPodsEntry, s conversion.Scope) error { + if err := Convert_api_PodSignature_To_v1_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil { + return err + } + out.EvictionTime = in.EvictionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry is an autogenerated conversion function. +func Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *api.PreferAvoidPodsEntry, out *PreferAvoidPodsEntry, s conversion.Scope) error { + return autoConvert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in, out, s) +} + +func autoConvert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in *PreferredSchedulingTerm, out *api.PreferredSchedulingTerm, s conversion.Scope) error { + out.Weight = in.Weight + if err := Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil { + return err + } + return nil +} + +// Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm is an autogenerated conversion function. +func Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in *PreferredSchedulingTerm, out *api.PreferredSchedulingTerm, s conversion.Scope) error { + return autoConvert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in, out, s) +} + +func autoConvert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *api.PreferredSchedulingTerm, out *PreferredSchedulingTerm, s conversion.Scope) error { + out.Weight = in.Weight + if err := Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil { + return err + } + return nil +} + +// Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm is an autogenerated conversion function. +func Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *api.PreferredSchedulingTerm, out *PreferredSchedulingTerm, s conversion.Scope) error { + return autoConvert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in, out, s) +} + +func autoConvert_v1_Probe_To_api_Probe(in *Probe, out *api.Probe, s conversion.Scope) error { + if err := Convert_v1_Handler_To_api_Handler(&in.Handler, &out.Handler, s); err != nil { + return err + } + out.InitialDelaySeconds = in.InitialDelaySeconds + out.TimeoutSeconds = in.TimeoutSeconds + out.PeriodSeconds = in.PeriodSeconds + out.SuccessThreshold = in.SuccessThreshold + out.FailureThreshold = in.FailureThreshold + return nil +} + +// Convert_v1_Probe_To_api_Probe is an autogenerated conversion function. +func Convert_v1_Probe_To_api_Probe(in *Probe, out *api.Probe, s conversion.Scope) error { + return autoConvert_v1_Probe_To_api_Probe(in, out, s) +} + +func autoConvert_api_Probe_To_v1_Probe(in *api.Probe, out *Probe, s conversion.Scope) error { + if err := Convert_api_Handler_To_v1_Handler(&in.Handler, &out.Handler, s); err != nil { + return err + } + out.InitialDelaySeconds = in.InitialDelaySeconds + out.TimeoutSeconds = in.TimeoutSeconds + out.PeriodSeconds = in.PeriodSeconds + out.SuccessThreshold = in.SuccessThreshold + out.FailureThreshold = in.FailureThreshold + return nil +} + +// Convert_api_Probe_To_v1_Probe is an autogenerated conversion function. +func Convert_api_Probe_To_v1_Probe(in *api.Probe, out *Probe, s conversion.Scope) error { + return autoConvert_api_Probe_To_v1_Probe(in, out, s) +} + +func autoConvert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource(in *ProjectedVolumeSource, out *api.ProjectedVolumeSource, s conversion.Scope) error { + out.Sources = *(*[]api.VolumeProjection)(unsafe.Pointer(&in.Sources)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + return nil +} + +// Convert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource is an autogenerated conversion function. +func Convert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource(in *ProjectedVolumeSource, out *api.ProjectedVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ProjectedVolumeSource_To_api_ProjectedVolumeSource(in, out, s) +} + +func autoConvert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *api.ProjectedVolumeSource, out *ProjectedVolumeSource, s conversion.Scope) error { + if in.Sources == nil { + out.Sources = make([]VolumeProjection, 0) + } else { + out.Sources = *(*[]VolumeProjection)(unsafe.Pointer(&in.Sources)) + } + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + return nil +} + +// Convert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource is an autogenerated conversion function. +func Convert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *api.ProjectedVolumeSource, out *ProjectedVolumeSource, s conversion.Scope) error { + return autoConvert_api_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in, out, s) +} + +func autoConvert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in *QuobyteVolumeSource, out *api.QuobyteVolumeSource, s conversion.Scope) error { + out.Registry = in.Registry + out.Volume = in.Volume + out.ReadOnly = in.ReadOnly + out.User = in.User + out.Group = in.Group + return nil +} + +// Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource is an autogenerated conversion function. +func Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in *QuobyteVolumeSource, out *api.QuobyteVolumeSource, s conversion.Scope) error { + return autoConvert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in, out, s) +} + +func autoConvert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *api.QuobyteVolumeSource, out *QuobyteVolumeSource, s conversion.Scope) error { + out.Registry = in.Registry + out.Volume = in.Volume + out.ReadOnly = in.ReadOnly + out.User = in.User + out.Group = in.Group + return nil +} + +// Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource is an autogenerated conversion function. +func Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *api.QuobyteVolumeSource, out *QuobyteVolumeSource, s conversion.Scope) error { + return autoConvert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in, out, s) +} + +func autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error { + out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors)) + out.RBDImage = in.RBDImage + out.FSType = in.FSType + out.RBDPool = in.RBDPool + out.RadosUser = in.RadosUser + out.Keyring = in.Keyring + out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource is an autogenerated conversion function. +func Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error { + return autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in, out, s) +} + +func autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *RBDVolumeSource, s conversion.Scope) error { + if in.CephMonitors == nil { + out.CephMonitors = make([]string, 0) + } else { + out.CephMonitors = *(*[]string)(unsafe.Pointer(&in.CephMonitors)) + } + out.RBDImage = in.RBDImage + out.FSType = in.FSType + out.RBDPool = in.RBDPool + out.RadosUser = in.RadosUser + out.Keyring = in.Keyring + out.SecretRef = (*LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource is an autogenerated conversion function. +func Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *RBDVolumeSource, s conversion.Scope) error { + return autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in, out, s) +} + +func autoConvert_v1_RangeAllocation_To_api_RangeAllocation(in *RangeAllocation, out *api.RangeAllocation, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Range = in.Range + out.Data = *(*[]byte)(unsafe.Pointer(&in.Data)) + return nil +} + +// Convert_v1_RangeAllocation_To_api_RangeAllocation is an autogenerated conversion function. +func Convert_v1_RangeAllocation_To_api_RangeAllocation(in *RangeAllocation, out *api.RangeAllocation, s conversion.Scope) error { + return autoConvert_v1_RangeAllocation_To_api_RangeAllocation(in, out, s) +} + +func autoConvert_api_RangeAllocation_To_v1_RangeAllocation(in *api.RangeAllocation, out *RangeAllocation, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Range = in.Range + if in.Data == nil { + out.Data = make([]byte, 0) + } else { + out.Data = *(*[]byte)(unsafe.Pointer(&in.Data)) + } + return nil +} + +// Convert_api_RangeAllocation_To_v1_RangeAllocation is an autogenerated conversion function. +func Convert_api_RangeAllocation_To_v1_RangeAllocation(in *api.RangeAllocation, out *RangeAllocation, s conversion.Scope) error { + return autoConvert_api_RangeAllocation_To_v1_RangeAllocation(in, out, s) +} + +func autoConvert_v1_ReplicationController_To_api_ReplicationController(in *ReplicationController, out *api.ReplicationController, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_ReplicationController_To_api_ReplicationController is an autogenerated conversion function. +func Convert_v1_ReplicationController_To_api_ReplicationController(in *ReplicationController, out *api.ReplicationController, s conversion.Scope) error { + return autoConvert_v1_ReplicationController_To_api_ReplicationController(in, out, s) +} + +func autoConvert_api_ReplicationController_To_v1_ReplicationController(in *api.ReplicationController, out *ReplicationController, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_ReplicationController_To_v1_ReplicationController is an autogenerated conversion function. +func Convert_api_ReplicationController_To_v1_ReplicationController(in *api.ReplicationController, out *ReplicationController, s conversion.Scope) error { + return autoConvert_api_ReplicationController_To_v1_ReplicationController(in, out, s) +} + +func autoConvert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition(in *ReplicationControllerCondition, out *api.ReplicationControllerCondition, s conversion.Scope) error { + out.Type = api.ReplicationControllerConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition is an autogenerated conversion function. +func Convert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition(in *ReplicationControllerCondition, out *api.ReplicationControllerCondition, s conversion.Scope) error { + return autoConvert_v1_ReplicationControllerCondition_To_api_ReplicationControllerCondition(in, out, s) +} + +func autoConvert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in *api.ReplicationControllerCondition, out *ReplicationControllerCondition, s conversion.Scope) error { + out.Type = ReplicationControllerConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition is an autogenerated conversion function. +func Convert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in *api.ReplicationControllerCondition, out *ReplicationControllerCondition, s conversion.Scope) error { + return autoConvert_api_ReplicationControllerCondition_To_v1_ReplicationControllerCondition(in, out, s) +} + +func autoConvert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *ReplicationControllerList, out *api.ReplicationControllerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.ReplicationController, len(*in)) + for i := range *in { + if err := Convert_v1_ReplicationController_To_api_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList is an autogenerated conversion function. +func Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *ReplicationControllerList, out *api.ReplicationControllerList, s conversion.Scope) error { + return autoConvert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in, out, s) +} + +func autoConvert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *api.ReplicationControllerList, out *ReplicationControllerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicationController, len(*in)) + for i := range *in { + if err := Convert_api_ReplicationController_To_v1_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]ReplicationController, 0) + } + return nil +} + +// Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList is an autogenerated conversion function. +func Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *api.ReplicationControllerList, out *ReplicationControllerList, s conversion.Scope) error { + return autoConvert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in, out, s) +} + +func autoConvert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error { + if err := meta_v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector)) + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(api.PodTemplateSpec) + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(*in, *out, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func autoConvert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error { + if err := meta_v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector)) + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(PodTemplateSpec) + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(*in, *out, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func autoConvert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.ObservedGeneration = in.ObservedGeneration + out.Conditions = *(*[]api.ReplicationControllerCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus is an autogenerated conversion function. +func Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error { + return autoConvert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in, out, s) +} + +func autoConvert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *ReplicationControllerStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.ObservedGeneration = in.ObservedGeneration + out.Conditions = *(*[]ReplicationControllerCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus is an autogenerated conversion function. +func Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *ReplicationControllerStatus, s conversion.Scope) error { + return autoConvert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in, out, s) +} + +func autoConvert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in *ResourceFieldSelector, out *api.ResourceFieldSelector, s conversion.Scope) error { + out.ContainerName = in.ContainerName + out.Resource = in.Resource + out.Divisor = in.Divisor + return nil +} + +// Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector is an autogenerated conversion function. +func Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in *ResourceFieldSelector, out *api.ResourceFieldSelector, s conversion.Scope) error { + return autoConvert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in, out, s) +} + +func autoConvert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *api.ResourceFieldSelector, out *ResourceFieldSelector, s conversion.Scope) error { + out.ContainerName = in.ContainerName + out.Resource = in.Resource + out.Divisor = in.Divisor + return nil +} + +// Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector is an autogenerated conversion function. +func Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *api.ResourceFieldSelector, out *ResourceFieldSelector, s conversion.Scope) error { + return autoConvert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in, out, s) +} + +func autoConvert_v1_ResourceQuota_To_api_ResourceQuota(in *ResourceQuota, out *api.ResourceQuota, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_ResourceQuota_To_api_ResourceQuota is an autogenerated conversion function. +func Convert_v1_ResourceQuota_To_api_ResourceQuota(in *ResourceQuota, out *api.ResourceQuota, s conversion.Scope) error { + return autoConvert_v1_ResourceQuota_To_api_ResourceQuota(in, out, s) +} + +func autoConvert_api_ResourceQuota_To_v1_ResourceQuota(in *api.ResourceQuota, out *ResourceQuota, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_ResourceQuota_To_v1_ResourceQuota is an autogenerated conversion function. +func Convert_api_ResourceQuota_To_v1_ResourceQuota(in *api.ResourceQuota, out *ResourceQuota, s conversion.Scope) error { + return autoConvert_api_ResourceQuota_To_v1_ResourceQuota(in, out, s) +} + +func autoConvert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in *ResourceQuotaList, out *api.ResourceQuotaList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.ResourceQuota)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList is an autogenerated conversion function. +func Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in *ResourceQuotaList, out *api.ResourceQuotaList, s conversion.Scope) error { + return autoConvert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in, out, s) +} + +func autoConvert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in *api.ResourceQuotaList, out *ResourceQuotaList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ResourceQuota, 0) + } else { + out.Items = *(*[]ResourceQuota)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList is an autogenerated conversion function. +func Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in *api.ResourceQuotaList, out *ResourceQuotaList, s conversion.Scope) error { + return autoConvert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in, out, s) +} + +func autoConvert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in *ResourceQuotaSpec, out *api.ResourceQuotaSpec, s conversion.Scope) error { + out.Hard = *(*api.ResourceList)(unsafe.Pointer(&in.Hard)) + out.Scopes = *(*[]api.ResourceQuotaScope)(unsafe.Pointer(&in.Scopes)) + return nil +} + +// Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec is an autogenerated conversion function. +func Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in *ResourceQuotaSpec, out *api.ResourceQuotaSpec, s conversion.Scope) error { + return autoConvert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in, out, s) +} + +func autoConvert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *api.ResourceQuotaSpec, out *ResourceQuotaSpec, s conversion.Scope) error { + out.Hard = *(*ResourceList)(unsafe.Pointer(&in.Hard)) + out.Scopes = *(*[]ResourceQuotaScope)(unsafe.Pointer(&in.Scopes)) + return nil +} + +// Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec is an autogenerated conversion function. +func Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *api.ResourceQuotaSpec, out *ResourceQuotaSpec, s conversion.Scope) error { + return autoConvert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in, out, s) +} + +func autoConvert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in *ResourceQuotaStatus, out *api.ResourceQuotaStatus, s conversion.Scope) error { + out.Hard = *(*api.ResourceList)(unsafe.Pointer(&in.Hard)) + out.Used = *(*api.ResourceList)(unsafe.Pointer(&in.Used)) + return nil +} + +// Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus is an autogenerated conversion function. +func Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in *ResourceQuotaStatus, out *api.ResourceQuotaStatus, s conversion.Scope) error { + return autoConvert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in, out, s) +} + +func autoConvert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *api.ResourceQuotaStatus, out *ResourceQuotaStatus, s conversion.Scope) error { + out.Hard = *(*ResourceList)(unsafe.Pointer(&in.Hard)) + out.Used = *(*ResourceList)(unsafe.Pointer(&in.Used)) + return nil +} + +// Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus is an autogenerated conversion function. +func Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *api.ResourceQuotaStatus, out *ResourceQuotaStatus, s conversion.Scope) error { + return autoConvert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in, out, s) +} + +func autoConvert_v1_ResourceRequirements_To_api_ResourceRequirements(in *ResourceRequirements, out *api.ResourceRequirements, s conversion.Scope) error { + out.Limits = *(*api.ResourceList)(unsafe.Pointer(&in.Limits)) + out.Requests = *(*api.ResourceList)(unsafe.Pointer(&in.Requests)) + return nil +} + +// Convert_v1_ResourceRequirements_To_api_ResourceRequirements is an autogenerated conversion function. +func Convert_v1_ResourceRequirements_To_api_ResourceRequirements(in *ResourceRequirements, out *api.ResourceRequirements, s conversion.Scope) error { + return autoConvert_v1_ResourceRequirements_To_api_ResourceRequirements(in, out, s) +} + +func autoConvert_api_ResourceRequirements_To_v1_ResourceRequirements(in *api.ResourceRequirements, out *ResourceRequirements, s conversion.Scope) error { + out.Limits = *(*ResourceList)(unsafe.Pointer(&in.Limits)) + out.Requests = *(*ResourceList)(unsafe.Pointer(&in.Requests)) + return nil +} + +// Convert_api_ResourceRequirements_To_v1_ResourceRequirements is an autogenerated conversion function. +func Convert_api_ResourceRequirements_To_v1_ResourceRequirements(in *api.ResourceRequirements, out *ResourceRequirements, s conversion.Scope) error { + return autoConvert_api_ResourceRequirements_To_v1_ResourceRequirements(in, out, s) +} + +func autoConvert_v1_SELinuxOptions_To_api_SELinuxOptions(in *SELinuxOptions, out *api.SELinuxOptions, s conversion.Scope) error { + out.User = in.User + out.Role = in.Role + out.Type = in.Type + out.Level = in.Level + return nil +} + +// Convert_v1_SELinuxOptions_To_api_SELinuxOptions is an autogenerated conversion function. +func Convert_v1_SELinuxOptions_To_api_SELinuxOptions(in *SELinuxOptions, out *api.SELinuxOptions, s conversion.Scope) error { + return autoConvert_v1_SELinuxOptions_To_api_SELinuxOptions(in, out, s) +} + +func autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out *SELinuxOptions, s conversion.Scope) error { + out.User = in.User + out.Role = in.Role + out.Type = in.Type + out.Level = in.Level + return nil +} + +// Convert_api_SELinuxOptions_To_v1_SELinuxOptions is an autogenerated conversion function. +func Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out *SELinuxOptions, s conversion.Scope) error { + return autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in, out, s) +} + +func autoConvert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in *ScaleIOVolumeSource, out *api.ScaleIOVolumeSource, s conversion.Scope) error { + out.Gateway = in.Gateway + out.System = in.System + out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.SSLEnabled = in.SSLEnabled + out.ProtectionDomain = in.ProtectionDomain + out.StoragePool = in.StoragePool + out.StorageMode = in.StorageMode + out.VolumeName = in.VolumeName + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource is an autogenerated conversion function. +func Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in *ScaleIOVolumeSource, out *api.ScaleIOVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in, out, s) +} + +func autoConvert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in *api.ScaleIOVolumeSource, out *ScaleIOVolumeSource, s conversion.Scope) error { + out.Gateway = in.Gateway + out.System = in.System + out.SecretRef = (*LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + out.SSLEnabled = in.SSLEnabled + out.ProtectionDomain = in.ProtectionDomain + out.StoragePool = in.StoragePool + out.StorageMode = in.StorageMode + out.VolumeName = in.VolumeName + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource is an autogenerated conversion function. +func Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in *api.ScaleIOVolumeSource, out *ScaleIOVolumeSource, s conversion.Scope) error { + return autoConvert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource(in, out, s) +} + +func autoConvert_v1_Secret_To_api_Secret(in *Secret, out *api.Secret, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Data = *(*map[string][]byte)(unsafe.Pointer(&in.Data)) + // INFO: in.StringData opted out of conversion generation + out.Type = api.SecretType(in.Type) + return nil +} + +func autoConvert_api_Secret_To_v1_Secret(in *api.Secret, out *Secret, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Data = *(*map[string][]byte)(unsafe.Pointer(&in.Data)) + out.Type = SecretType(in.Type) + return nil +} + +// Convert_api_Secret_To_v1_Secret is an autogenerated conversion function. +func Convert_api_Secret_To_v1_Secret(in *api.Secret, out *Secret, s conversion.Scope) error { + return autoConvert_api_Secret_To_v1_Secret(in, out, s) +} + +func autoConvert_v1_SecretEnvSource_To_api_SecretEnvSource(in *SecretEnvSource, out *api.SecretEnvSource, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_SecretEnvSource_To_api_SecretEnvSource is an autogenerated conversion function. +func Convert_v1_SecretEnvSource_To_api_SecretEnvSource(in *SecretEnvSource, out *api.SecretEnvSource, s conversion.Scope) error { + return autoConvert_v1_SecretEnvSource_To_api_SecretEnvSource(in, out, s) +} + +func autoConvert_api_SecretEnvSource_To_v1_SecretEnvSource(in *api.SecretEnvSource, out *SecretEnvSource, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_SecretEnvSource_To_v1_SecretEnvSource is an autogenerated conversion function. +func Convert_api_SecretEnvSource_To_v1_SecretEnvSource(in *api.SecretEnvSource, out *SecretEnvSource, s conversion.Scope) error { + return autoConvert_api_SecretEnvSource_To_v1_SecretEnvSource(in, out, s) +} + +func autoConvert_v1_SecretKeySelector_To_api_SecretKeySelector(in *SecretKeySelector, out *api.SecretKeySelector, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_SecretKeySelector_To_api_SecretKeySelector is an autogenerated conversion function. +func Convert_v1_SecretKeySelector_To_api_SecretKeySelector(in *SecretKeySelector, out *api.SecretKeySelector, s conversion.Scope) error { + return autoConvert_v1_SecretKeySelector_To_api_SecretKeySelector(in, out, s) +} + +func autoConvert_api_SecretKeySelector_To_v1_SecretKeySelector(in *api.SecretKeySelector, out *SecretKeySelector, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_SecretKeySelector_To_v1_SecretKeySelector is an autogenerated conversion function. +func Convert_api_SecretKeySelector_To_v1_SecretKeySelector(in *api.SecretKeySelector, out *SecretKeySelector, s conversion.Scope) error { + return autoConvert_api_SecretKeySelector_To_v1_SecretKeySelector(in, out, s) +} + +func autoConvert_v1_SecretList_To_api_SecretList(in *SecretList, out *api.SecretList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Secret, len(*in)) + for i := range *in { + if err := Convert_v1_Secret_To_api_Secret(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_SecretList_To_api_SecretList is an autogenerated conversion function. +func Convert_v1_SecretList_To_api_SecretList(in *SecretList, out *api.SecretList, s conversion.Scope) error { + return autoConvert_v1_SecretList_To_api_SecretList(in, out, s) +} + +func autoConvert_api_SecretList_To_v1_SecretList(in *api.SecretList, out *SecretList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Secret, len(*in)) + for i := range *in { + if err := Convert_api_Secret_To_v1_Secret(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]Secret, 0) + } + return nil +} + +// Convert_api_SecretList_To_v1_SecretList is an autogenerated conversion function. +func Convert_api_SecretList_To_v1_SecretList(in *api.SecretList, out *SecretList, s conversion.Scope) error { + return autoConvert_api_SecretList_To_v1_SecretList(in, out, s) +} + +func autoConvert_v1_SecretProjection_To_api_SecretProjection(in *SecretProjection, out *api.SecretProjection, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_SecretProjection_To_api_SecretProjection is an autogenerated conversion function. +func Convert_v1_SecretProjection_To_api_SecretProjection(in *SecretProjection, out *api.SecretProjection, s conversion.Scope) error { + return autoConvert_v1_SecretProjection_To_api_SecretProjection(in, out, s) +} + +func autoConvert_api_SecretProjection_To_v1_SecretProjection(in *api.SecretProjection, out *SecretProjection, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Items = *(*[]KeyToPath)(unsafe.Pointer(&in.Items)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_SecretProjection_To_v1_SecretProjection is an autogenerated conversion function. +func Convert_api_SecretProjection_To_v1_SecretProjection(in *api.SecretProjection, out *SecretProjection, s conversion.Scope) error { + return autoConvert_api_SecretProjection_To_v1_SecretProjection(in, out, s) +} + +func autoConvert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in *SecretVolumeSource, out *api.SecretVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + out.Items = *(*[]api.KeyToPath)(unsafe.Pointer(&in.Items)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource is an autogenerated conversion function. +func Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in *SecretVolumeSource, out *api.SecretVolumeSource, s conversion.Scope) error { + return autoConvert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in, out, s) +} + +func autoConvert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in *api.SecretVolumeSource, out *SecretVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + out.Items = *(*[]KeyToPath)(unsafe.Pointer(&in.Items)) + out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) + out.Optional = (*bool)(unsafe.Pointer(in.Optional)) + return nil +} + +// Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource is an autogenerated conversion function. +func Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in *api.SecretVolumeSource, out *SecretVolumeSource, s conversion.Scope) error { + return autoConvert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in, out, s) +} + +func autoConvert_v1_SecurityContext_To_api_SecurityContext(in *SecurityContext, out *api.SecurityContext, s conversion.Scope) error { + out.Capabilities = (*api.Capabilities)(unsafe.Pointer(in.Capabilities)) + out.Privileged = (*bool)(unsafe.Pointer(in.Privileged)) + out.SELinuxOptions = (*api.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser)) + out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot)) + out.ReadOnlyRootFilesystem = (*bool)(unsafe.Pointer(in.ReadOnlyRootFilesystem)) + return nil +} + +// Convert_v1_SecurityContext_To_api_SecurityContext is an autogenerated conversion function. +func Convert_v1_SecurityContext_To_api_SecurityContext(in *SecurityContext, out *api.SecurityContext, s conversion.Scope) error { + return autoConvert_v1_SecurityContext_To_api_SecurityContext(in, out, s) +} + +func autoConvert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext, out *SecurityContext, s conversion.Scope) error { + out.Capabilities = (*Capabilities)(unsafe.Pointer(in.Capabilities)) + out.Privileged = (*bool)(unsafe.Pointer(in.Privileged)) + out.SELinuxOptions = (*SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser)) + out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot)) + out.ReadOnlyRootFilesystem = (*bool)(unsafe.Pointer(in.ReadOnlyRootFilesystem)) + return nil +} + +// Convert_api_SecurityContext_To_v1_SecurityContext is an autogenerated conversion function. +func Convert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext, out *SecurityContext, s conversion.Scope) error { + return autoConvert_api_SecurityContext_To_v1_SecurityContext(in, out, s) +} + +func autoConvert_v1_SerializedReference_To_api_SerializedReference(in *SerializedReference, out *api.SerializedReference, s conversion.Scope) error { + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.Reference, &out.Reference, s); err != nil { + return err + } + return nil +} + +// Convert_v1_SerializedReference_To_api_SerializedReference is an autogenerated conversion function. +func Convert_v1_SerializedReference_To_api_SerializedReference(in *SerializedReference, out *api.SerializedReference, s conversion.Scope) error { + return autoConvert_v1_SerializedReference_To_api_SerializedReference(in, out, s) +} + +func autoConvert_api_SerializedReference_To_v1_SerializedReference(in *api.SerializedReference, out *SerializedReference, s conversion.Scope) error { + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.Reference, &out.Reference, s); err != nil { + return err + } + return nil +} + +// Convert_api_SerializedReference_To_v1_SerializedReference is an autogenerated conversion function. +func Convert_api_SerializedReference_To_v1_SerializedReference(in *api.SerializedReference, out *SerializedReference, s conversion.Scope) error { + return autoConvert_api_SerializedReference_To_v1_SerializedReference(in, out, s) +} + +func autoConvert_v1_Service_To_api_Service(in *Service, out *api.Service, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ServiceSpec_To_api_ServiceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ServiceStatus_To_api_ServiceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Service_To_api_Service is an autogenerated conversion function. +func Convert_v1_Service_To_api_Service(in *Service, out *api.Service, s conversion.Scope) error { + return autoConvert_v1_Service_To_api_Service(in, out, s) +} + +func autoConvert_api_Service_To_v1_Service(in *api.Service, out *Service, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_api_ServiceSpec_To_v1_ServiceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_ServiceStatus_To_v1_ServiceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_api_Service_To_v1_Service is an autogenerated conversion function. +func Convert_api_Service_To_v1_Service(in *api.Service, out *Service, s conversion.Scope) error { + return autoConvert_api_Service_To_v1_Service(in, out, s) +} + +func autoConvert_v1_ServiceAccount_To_api_ServiceAccount(in *ServiceAccount, out *api.ServiceAccount, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Secrets = *(*[]api.ObjectReference)(unsafe.Pointer(&in.Secrets)) + out.ImagePullSecrets = *(*[]api.LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets)) + out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken)) + return nil +} + +// Convert_v1_ServiceAccount_To_api_ServiceAccount is an autogenerated conversion function. +func Convert_v1_ServiceAccount_To_api_ServiceAccount(in *ServiceAccount, out *api.ServiceAccount, s conversion.Scope) error { + return autoConvert_v1_ServiceAccount_To_api_ServiceAccount(in, out, s) +} + +func autoConvert_api_ServiceAccount_To_v1_ServiceAccount(in *api.ServiceAccount, out *ServiceAccount, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Secrets = *(*[]ObjectReference)(unsafe.Pointer(&in.Secrets)) + out.ImagePullSecrets = *(*[]LocalObjectReference)(unsafe.Pointer(&in.ImagePullSecrets)) + out.AutomountServiceAccountToken = (*bool)(unsafe.Pointer(in.AutomountServiceAccountToken)) + return nil +} + +// Convert_api_ServiceAccount_To_v1_ServiceAccount is an autogenerated conversion function. +func Convert_api_ServiceAccount_To_v1_ServiceAccount(in *api.ServiceAccount, out *ServiceAccount, s conversion.Scope) error { + return autoConvert_api_ServiceAccount_To_v1_ServiceAccount(in, out, s) +} + +func autoConvert_v1_ServiceAccountList_To_api_ServiceAccountList(in *ServiceAccountList, out *api.ServiceAccountList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]api.ServiceAccount)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_ServiceAccountList_To_api_ServiceAccountList is an autogenerated conversion function. +func Convert_v1_ServiceAccountList_To_api_ServiceAccountList(in *ServiceAccountList, out *api.ServiceAccountList, s conversion.Scope) error { + return autoConvert_v1_ServiceAccountList_To_api_ServiceAccountList(in, out, s) +} + +func autoConvert_api_ServiceAccountList_To_v1_ServiceAccountList(in *api.ServiceAccountList, out *ServiceAccountList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ServiceAccount, 0) + } else { + out.Items = *(*[]ServiceAccount)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_api_ServiceAccountList_To_v1_ServiceAccountList is an autogenerated conversion function. +func Convert_api_ServiceAccountList_To_v1_ServiceAccountList(in *api.ServiceAccountList, out *ServiceAccountList, s conversion.Scope) error { + return autoConvert_api_ServiceAccountList_To_v1_ServiceAccountList(in, out, s) +} + +func autoConvert_v1_ServiceList_To_api_ServiceList(in *ServiceList, out *api.ServiceList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Service, len(*in)) + for i := range *in { + if err := Convert_v1_Service_To_api_Service(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_ServiceList_To_api_ServiceList is an autogenerated conversion function. +func Convert_v1_ServiceList_To_api_ServiceList(in *ServiceList, out *api.ServiceList, s conversion.Scope) error { + return autoConvert_v1_ServiceList_To_api_ServiceList(in, out, s) +} + +func autoConvert_api_ServiceList_To_v1_ServiceList(in *api.ServiceList, out *ServiceList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Service, len(*in)) + for i := range *in { + if err := Convert_api_Service_To_v1_Service(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]Service, 0) + } + return nil +} + +// Convert_api_ServiceList_To_v1_ServiceList is an autogenerated conversion function. +func Convert_api_ServiceList_To_v1_ServiceList(in *api.ServiceList, out *ServiceList, s conversion.Scope) error { + return autoConvert_api_ServiceList_To_v1_ServiceList(in, out, s) +} + +func autoConvert_v1_ServicePort_To_api_ServicePort(in *ServicePort, out *api.ServicePort, s conversion.Scope) error { + out.Name = in.Name + out.Protocol = api.Protocol(in.Protocol) + out.Port = in.Port + out.TargetPort = in.TargetPort + out.NodePort = in.NodePort + return nil +} + +// Convert_v1_ServicePort_To_api_ServicePort is an autogenerated conversion function. +func Convert_v1_ServicePort_To_api_ServicePort(in *ServicePort, out *api.ServicePort, s conversion.Scope) error { + return autoConvert_v1_ServicePort_To_api_ServicePort(in, out, s) +} + +func autoConvert_api_ServicePort_To_v1_ServicePort(in *api.ServicePort, out *ServicePort, s conversion.Scope) error { + out.Name = in.Name + out.Protocol = Protocol(in.Protocol) + out.Port = in.Port + out.TargetPort = in.TargetPort + out.NodePort = in.NodePort + return nil +} + +// Convert_api_ServicePort_To_v1_ServicePort is an autogenerated conversion function. +func Convert_api_ServicePort_To_v1_ServicePort(in *api.ServicePort, out *ServicePort, s conversion.Scope) error { + return autoConvert_api_ServicePort_To_v1_ServicePort(in, out, s) +} + +func autoConvert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in *ServiceProxyOptions, out *api.ServiceProxyOptions, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions is an autogenerated conversion function. +func Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in *ServiceProxyOptions, out *api.ServiceProxyOptions, s conversion.Scope) error { + return autoConvert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in, out, s) +} + +func autoConvert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *api.ServiceProxyOptions, out *ServiceProxyOptions, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +// Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions is an autogenerated conversion function. +func Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *api.ServiceProxyOptions, out *ServiceProxyOptions, s conversion.Scope) error { + return autoConvert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in, out, s) +} + +func autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error { + out.Ports = *(*[]api.ServicePort)(unsafe.Pointer(&in.Ports)) + out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector)) + out.ClusterIP = in.ClusterIP + out.Type = api.ServiceType(in.Type) + out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs)) + out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity) + out.LoadBalancerIP = in.LoadBalancerIP + out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges)) + out.ExternalName = in.ExternalName + out.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy) + out.HealthCheckNodePort = in.HealthCheckNodePort + return nil +} + +// Convert_v1_ServiceSpec_To_api_ServiceSpec is an autogenerated conversion function. +func Convert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error { + return autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in, out, s) +} + +func autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *ServiceSpec, s conversion.Scope) error { + out.Type = ServiceType(in.Type) + out.Ports = *(*[]ServicePort)(unsafe.Pointer(&in.Ports)) + out.Selector = *(*map[string]string)(unsafe.Pointer(&in.Selector)) + out.ClusterIP = in.ClusterIP + out.ExternalName = in.ExternalName + out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs)) + out.LoadBalancerIP = in.LoadBalancerIP + out.SessionAffinity = ServiceAffinity(in.SessionAffinity) + out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges)) + out.ExternalTrafficPolicy = ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy) + out.HealthCheckNodePort = in.HealthCheckNodePort + return nil +} + +// Convert_api_ServiceSpec_To_v1_ServiceSpec is an autogenerated conversion function. +func Convert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *ServiceSpec, s conversion.Scope) error { + return autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in, out, s) +} + +func autoConvert_v1_ServiceStatus_To_api_ServiceStatus(in *ServiceStatus, out *api.ServiceStatus, s conversion.Scope) error { + if err := Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil { + return err + } + return nil +} + +// Convert_v1_ServiceStatus_To_api_ServiceStatus is an autogenerated conversion function. +func Convert_v1_ServiceStatus_To_api_ServiceStatus(in *ServiceStatus, out *api.ServiceStatus, s conversion.Scope) error { + return autoConvert_v1_ServiceStatus_To_api_ServiceStatus(in, out, s) +} + +func autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *ServiceStatus, s conversion.Scope) error { + if err := Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil { + return err + } + return nil +} + +// Convert_api_ServiceStatus_To_v1_ServiceStatus is an autogenerated conversion function. +func Convert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *ServiceStatus, s conversion.Scope) error { + return autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in, out, s) +} + +func autoConvert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in *StorageOSPersistentVolumeSource, out *api.StorageOSPersistentVolumeSource, s conversion.Scope) error { + out.VolumeName = in.VolumeName + out.VolumeNamespace = in.VolumeNamespace + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + out.SecretRef = (*api.ObjectReference)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource is an autogenerated conversion function. +func Convert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in *StorageOSPersistentVolumeSource, out *api.StorageOSPersistentVolumeSource, s conversion.Scope) error { + return autoConvert_v1_StorageOSPersistentVolumeSource_To_api_StorageOSPersistentVolumeSource(in, out, s) +} + +func autoConvert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in *api.StorageOSPersistentVolumeSource, out *StorageOSPersistentVolumeSource, s conversion.Scope) error { + out.VolumeName = in.VolumeName + out.VolumeNamespace = in.VolumeNamespace + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + out.SecretRef = (*ObjectReference)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource is an autogenerated conversion function. +func Convert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in *api.StorageOSPersistentVolumeSource, out *StorageOSPersistentVolumeSource, s conversion.Scope) error { + return autoConvert_api_StorageOSPersistentVolumeSource_To_v1_StorageOSPersistentVolumeSource(in, out, s) +} + +func autoConvert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource(in *StorageOSVolumeSource, out *api.StorageOSVolumeSource, s conversion.Scope) error { + out.VolumeName = in.VolumeName + out.VolumeNamespace = in.VolumeNamespace + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + out.SecretRef = (*api.LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource is an autogenerated conversion function. +func Convert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource(in *StorageOSVolumeSource, out *api.StorageOSVolumeSource, s conversion.Scope) error { + return autoConvert_v1_StorageOSVolumeSource_To_api_StorageOSVolumeSource(in, out, s) +} + +func autoConvert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in *api.StorageOSVolumeSource, out *StorageOSVolumeSource, s conversion.Scope) error { + out.VolumeName = in.VolumeName + out.VolumeNamespace = in.VolumeNamespace + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + out.SecretRef = (*LocalObjectReference)(unsafe.Pointer(in.SecretRef)) + return nil +} + +// Convert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource is an autogenerated conversion function. +func Convert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in *api.StorageOSVolumeSource, out *StorageOSVolumeSource, s conversion.Scope) error { + return autoConvert_api_StorageOSVolumeSource_To_v1_StorageOSVolumeSource(in, out, s) +} + +func autoConvert_v1_Sysctl_To_api_Sysctl(in *Sysctl, out *api.Sysctl, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +// Convert_v1_Sysctl_To_api_Sysctl is an autogenerated conversion function. +func Convert_v1_Sysctl_To_api_Sysctl(in *Sysctl, out *api.Sysctl, s conversion.Scope) error { + return autoConvert_v1_Sysctl_To_api_Sysctl(in, out, s) +} + +func autoConvert_api_Sysctl_To_v1_Sysctl(in *api.Sysctl, out *Sysctl, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +// Convert_api_Sysctl_To_v1_Sysctl is an autogenerated conversion function. +func Convert_api_Sysctl_To_v1_Sysctl(in *api.Sysctl, out *Sysctl, s conversion.Scope) error { + return autoConvert_api_Sysctl_To_v1_Sysctl(in, out, s) +} + +func autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in *TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error { + out.Port = in.Port + out.Host = in.Host + return nil +} + +// Convert_v1_TCPSocketAction_To_api_TCPSocketAction is an autogenerated conversion function. +func Convert_v1_TCPSocketAction_To_api_TCPSocketAction(in *TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error { + return autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in, out, s) +} + +func autoConvert_api_TCPSocketAction_To_v1_TCPSocketAction(in *api.TCPSocketAction, out *TCPSocketAction, s conversion.Scope) error { + out.Port = in.Port + out.Host = in.Host + return nil +} + +// Convert_api_TCPSocketAction_To_v1_TCPSocketAction is an autogenerated conversion function. +func Convert_api_TCPSocketAction_To_v1_TCPSocketAction(in *api.TCPSocketAction, out *TCPSocketAction, s conversion.Scope) error { + return autoConvert_api_TCPSocketAction_To_v1_TCPSocketAction(in, out, s) +} + +func autoConvert_v1_Taint_To_api_Taint(in *Taint, out *api.Taint, s conversion.Scope) error { + out.Key = in.Key + out.Value = in.Value + out.Effect = api.TaintEffect(in.Effect) + out.TimeAdded = in.TimeAdded + return nil +} + +// Convert_v1_Taint_To_api_Taint is an autogenerated conversion function. +func Convert_v1_Taint_To_api_Taint(in *Taint, out *api.Taint, s conversion.Scope) error { + return autoConvert_v1_Taint_To_api_Taint(in, out, s) +} + +func autoConvert_api_Taint_To_v1_Taint(in *api.Taint, out *Taint, s conversion.Scope) error { + out.Key = in.Key + out.Value = in.Value + out.Effect = TaintEffect(in.Effect) + out.TimeAdded = in.TimeAdded + return nil +} + +// Convert_api_Taint_To_v1_Taint is an autogenerated conversion function. +func Convert_api_Taint_To_v1_Taint(in *api.Taint, out *Taint, s conversion.Scope) error { + return autoConvert_api_Taint_To_v1_Taint(in, out, s) +} + +func autoConvert_v1_Toleration_To_api_Toleration(in *Toleration, out *api.Toleration, s conversion.Scope) error { + out.Key = in.Key + out.Operator = api.TolerationOperator(in.Operator) + out.Value = in.Value + out.Effect = api.TaintEffect(in.Effect) + out.TolerationSeconds = (*int64)(unsafe.Pointer(in.TolerationSeconds)) + return nil +} + +// Convert_v1_Toleration_To_api_Toleration is an autogenerated conversion function. +func Convert_v1_Toleration_To_api_Toleration(in *Toleration, out *api.Toleration, s conversion.Scope) error { + return autoConvert_v1_Toleration_To_api_Toleration(in, out, s) +} + +func autoConvert_api_Toleration_To_v1_Toleration(in *api.Toleration, out *Toleration, s conversion.Scope) error { + out.Key = in.Key + out.Operator = TolerationOperator(in.Operator) + out.Value = in.Value + out.Effect = TaintEffect(in.Effect) + out.TolerationSeconds = (*int64)(unsafe.Pointer(in.TolerationSeconds)) + return nil +} + +// Convert_api_Toleration_To_v1_Toleration is an autogenerated conversion function. +func Convert_api_Toleration_To_v1_Toleration(in *api.Toleration, out *Toleration, s conversion.Scope) error { + return autoConvert_api_Toleration_To_v1_Toleration(in, out, s) +} + +func autoConvert_v1_Volume_To_api_Volume(in *Volume, out *api.Volume, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_v1_VolumeSource_To_api_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Volume_To_api_Volume is an autogenerated conversion function. +func Convert_v1_Volume_To_api_Volume(in *Volume, out *api.Volume, s conversion.Scope) error { + return autoConvert_v1_Volume_To_api_Volume(in, out, s) +} + +func autoConvert_api_Volume_To_v1_Volume(in *api.Volume, out *Volume, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_api_VolumeSource_To_v1_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil { + return err + } + return nil +} + +// Convert_api_Volume_To_v1_Volume is an autogenerated conversion function. +func Convert_api_Volume_To_v1_Volume(in *api.Volume, out *Volume, s conversion.Scope) error { + return autoConvert_api_Volume_To_v1_Volume(in, out, s) +} + +func autoConvert_v1_VolumeMount_To_api_VolumeMount(in *VolumeMount, out *api.VolumeMount, s conversion.Scope) error { + out.Name = in.Name + out.ReadOnly = in.ReadOnly + out.MountPath = in.MountPath + out.SubPath = in.SubPath + return nil +} + +// Convert_v1_VolumeMount_To_api_VolumeMount is an autogenerated conversion function. +func Convert_v1_VolumeMount_To_api_VolumeMount(in *VolumeMount, out *api.VolumeMount, s conversion.Scope) error { + return autoConvert_v1_VolumeMount_To_api_VolumeMount(in, out, s) +} + +func autoConvert_api_VolumeMount_To_v1_VolumeMount(in *api.VolumeMount, out *VolumeMount, s conversion.Scope) error { + out.Name = in.Name + out.ReadOnly = in.ReadOnly + out.MountPath = in.MountPath + out.SubPath = in.SubPath + return nil +} + +// Convert_api_VolumeMount_To_v1_VolumeMount is an autogenerated conversion function. +func Convert_api_VolumeMount_To_v1_VolumeMount(in *api.VolumeMount, out *VolumeMount, s conversion.Scope) error { + return autoConvert_api_VolumeMount_To_v1_VolumeMount(in, out, s) +} + +func autoConvert_v1_VolumeProjection_To_api_VolumeProjection(in *VolumeProjection, out *api.VolumeProjection, s conversion.Scope) error { + out.Secret = (*api.SecretProjection)(unsafe.Pointer(in.Secret)) + out.DownwardAPI = (*api.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI)) + out.ConfigMap = (*api.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap)) + return nil +} + +// Convert_v1_VolumeProjection_To_api_VolumeProjection is an autogenerated conversion function. +func Convert_v1_VolumeProjection_To_api_VolumeProjection(in *VolumeProjection, out *api.VolumeProjection, s conversion.Scope) error { + return autoConvert_v1_VolumeProjection_To_api_VolumeProjection(in, out, s) +} + +func autoConvert_api_VolumeProjection_To_v1_VolumeProjection(in *api.VolumeProjection, out *VolumeProjection, s conversion.Scope) error { + out.Secret = (*SecretProjection)(unsafe.Pointer(in.Secret)) + out.DownwardAPI = (*DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI)) + out.ConfigMap = (*ConfigMapProjection)(unsafe.Pointer(in.ConfigMap)) + return nil +} + +// Convert_api_VolumeProjection_To_v1_VolumeProjection is an autogenerated conversion function. +func Convert_api_VolumeProjection_To_v1_VolumeProjection(in *api.VolumeProjection, out *VolumeProjection, s conversion.Scope) error { + return autoConvert_api_VolumeProjection_To_v1_VolumeProjection(in, out, s) +} + +func autoConvert_v1_VolumeSource_To_api_VolumeSource(in *VolumeSource, out *api.VolumeSource, s conversion.Scope) error { + out.HostPath = (*api.HostPathVolumeSource)(unsafe.Pointer(in.HostPath)) + out.EmptyDir = (*api.EmptyDirVolumeSource)(unsafe.Pointer(in.EmptyDir)) + out.GCEPersistentDisk = (*api.GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk)) + out.AWSElasticBlockStore = (*api.AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore)) + out.GitRepo = (*api.GitRepoVolumeSource)(unsafe.Pointer(in.GitRepo)) + out.Secret = (*api.SecretVolumeSource)(unsafe.Pointer(in.Secret)) + out.NFS = (*api.NFSVolumeSource)(unsafe.Pointer(in.NFS)) + out.ISCSI = (*api.ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI)) + out.Glusterfs = (*api.GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs)) + out.PersistentVolumeClaim = (*api.PersistentVolumeClaimVolumeSource)(unsafe.Pointer(in.PersistentVolumeClaim)) + out.RBD = (*api.RBDVolumeSource)(unsafe.Pointer(in.RBD)) + out.FlexVolume = (*api.FlexVolumeSource)(unsafe.Pointer(in.FlexVolume)) + out.Cinder = (*api.CinderVolumeSource)(unsafe.Pointer(in.Cinder)) + out.CephFS = (*api.CephFSVolumeSource)(unsafe.Pointer(in.CephFS)) + out.Flocker = (*api.FlockerVolumeSource)(unsafe.Pointer(in.Flocker)) + out.DownwardAPI = (*api.DownwardAPIVolumeSource)(unsafe.Pointer(in.DownwardAPI)) + out.FC = (*api.FCVolumeSource)(unsafe.Pointer(in.FC)) + out.AzureFile = (*api.AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile)) + out.ConfigMap = (*api.ConfigMapVolumeSource)(unsafe.Pointer(in.ConfigMap)) + out.VsphereVolume = (*api.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume)) + out.Quobyte = (*api.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte)) + out.AzureDisk = (*api.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) + out.PhotonPersistentDisk = (*api.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) + out.Projected = (*api.ProjectedVolumeSource)(unsafe.Pointer(in.Projected)) + out.PortworxVolume = (*api.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) + out.ScaleIO = (*api.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) + out.StorageOS = (*api.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS)) + return nil +} + +// Convert_v1_VolumeSource_To_api_VolumeSource is an autogenerated conversion function. +func Convert_v1_VolumeSource_To_api_VolumeSource(in *VolumeSource, out *api.VolumeSource, s conversion.Scope) error { + return autoConvert_v1_VolumeSource_To_api_VolumeSource(in, out, s) +} + +func autoConvert_api_VolumeSource_To_v1_VolumeSource(in *api.VolumeSource, out *VolumeSource, s conversion.Scope) error { + out.HostPath = (*HostPathVolumeSource)(unsafe.Pointer(in.HostPath)) + out.EmptyDir = (*EmptyDirVolumeSource)(unsafe.Pointer(in.EmptyDir)) + out.GCEPersistentDisk = (*GCEPersistentDiskVolumeSource)(unsafe.Pointer(in.GCEPersistentDisk)) + out.AWSElasticBlockStore = (*AWSElasticBlockStoreVolumeSource)(unsafe.Pointer(in.AWSElasticBlockStore)) + out.GitRepo = (*GitRepoVolumeSource)(unsafe.Pointer(in.GitRepo)) + out.Secret = (*SecretVolumeSource)(unsafe.Pointer(in.Secret)) + out.NFS = (*NFSVolumeSource)(unsafe.Pointer(in.NFS)) + out.ISCSI = (*ISCSIVolumeSource)(unsafe.Pointer(in.ISCSI)) + out.Glusterfs = (*GlusterfsVolumeSource)(unsafe.Pointer(in.Glusterfs)) + out.PersistentVolumeClaim = (*PersistentVolumeClaimVolumeSource)(unsafe.Pointer(in.PersistentVolumeClaim)) + out.RBD = (*RBDVolumeSource)(unsafe.Pointer(in.RBD)) + out.Quobyte = (*QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte)) + out.FlexVolume = (*FlexVolumeSource)(unsafe.Pointer(in.FlexVolume)) + out.Cinder = (*CinderVolumeSource)(unsafe.Pointer(in.Cinder)) + out.CephFS = (*CephFSVolumeSource)(unsafe.Pointer(in.CephFS)) + out.Flocker = (*FlockerVolumeSource)(unsafe.Pointer(in.Flocker)) + out.DownwardAPI = (*DownwardAPIVolumeSource)(unsafe.Pointer(in.DownwardAPI)) + out.FC = (*FCVolumeSource)(unsafe.Pointer(in.FC)) + out.AzureFile = (*AzureFileVolumeSource)(unsafe.Pointer(in.AzureFile)) + out.ConfigMap = (*ConfigMapVolumeSource)(unsafe.Pointer(in.ConfigMap)) + out.VsphereVolume = (*VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume)) + out.AzureDisk = (*AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) + out.PhotonPersistentDisk = (*PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) + out.Projected = (*ProjectedVolumeSource)(unsafe.Pointer(in.Projected)) + out.PortworxVolume = (*PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) + out.ScaleIO = (*ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) + out.StorageOS = (*StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS)) + return nil +} + +// Convert_api_VolumeSource_To_v1_VolumeSource is an autogenerated conversion function. +func Convert_api_VolumeSource_To_v1_VolumeSource(in *api.VolumeSource, out *VolumeSource, s conversion.Scope) error { + return autoConvert_api_VolumeSource_To_v1_VolumeSource(in, out, s) +} + +func autoConvert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in *VsphereVirtualDiskVolumeSource, out *api.VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + out.VolumePath = in.VolumePath + out.FSType = in.FSType + out.StoragePolicyName = in.StoragePolicyName + out.StoragePolicyID = in.StoragePolicyID + return nil +} + +// Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource is an autogenerated conversion function. +func Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in *VsphereVirtualDiskVolumeSource, out *api.VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in, out, s) +} + +func autoConvert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *api.VsphereVirtualDiskVolumeSource, out *VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + out.VolumePath = in.VolumePath + out.FSType = in.FSType + out.StoragePolicyName = in.StoragePolicyName + out.StoragePolicyID = in.StoragePolicyID + return nil +} + +// Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource is an autogenerated conversion function. +func Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *api.VsphereVirtualDiskVolumeSource, out *VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in *WeightedPodAffinityTerm, out *api.WeightedPodAffinityTerm, s conversion.Scope) error { + out.Weight = in.Weight + if err := Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil { + return err + } + return nil +} + +// Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm is an autogenerated conversion function. +func Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in *WeightedPodAffinityTerm, out *api.WeightedPodAffinityTerm, s conversion.Scope) error { + return autoConvert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in, out, s) +} + +func autoConvert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *api.WeightedPodAffinityTerm, out *WeightedPodAffinityTerm, s conversion.Scope) error { + out.Weight = in.Weight + if err := Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil { + return err + } + return nil +} + +// Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm is an autogenerated conversion function. +func Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *api.WeightedPodAffinityTerm, out *WeightedPodAffinityTerm, s conversion.Scope) error { + return autoConvert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..b909d9b33 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.deepcopy.go @@ -0,0 +1,3770 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + types "k8s.io/apimachinery/pkg/types" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AWSElasticBlockStoreVolumeSource, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Affinity, InType: reflect.TypeOf(&Affinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AttachedVolume, InType: reflect.TypeOf(&AttachedVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AvoidPods, InType: reflect.TypeOf(&AvoidPods{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AzureDiskVolumeSource, InType: reflect.TypeOf(&AzureDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AzureFileVolumeSource, InType: reflect.TypeOf(&AzureFileVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Binding, InType: reflect.TypeOf(&Binding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Capabilities, InType: reflect.TypeOf(&Capabilities{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_CephFSVolumeSource, InType: reflect.TypeOf(&CephFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_CinderVolumeSource, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ComponentCondition, InType: reflect.TypeOf(&ComponentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ComponentStatus, InType: reflect.TypeOf(&ComponentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ComponentStatusList, InType: reflect.TypeOf(&ComponentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMap, InType: reflect.TypeOf(&ConfigMap{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapEnvSource, InType: reflect.TypeOf(&ConfigMapEnvSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapKeySelector, InType: reflect.TypeOf(&ConfigMapKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapList, InType: reflect.TypeOf(&ConfigMapList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapProjection, InType: reflect.TypeOf(&ConfigMapProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapVolumeSource, InType: reflect.TypeOf(&ConfigMapVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Container, InType: reflect.TypeOf(&Container{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerImage, InType: reflect.TypeOf(&ContainerImage{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerPort, InType: reflect.TypeOf(&ContainerPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerState, InType: reflect.TypeOf(&ContainerState{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStateRunning, InType: reflect.TypeOf(&ContainerStateRunning{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStateTerminated, InType: reflect.TypeOf(&ContainerStateTerminated{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStateWaiting, InType: reflect.TypeOf(&ContainerStateWaiting{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStatus, InType: reflect.TypeOf(&ContainerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DaemonEndpoint, InType: reflect.TypeOf(&DaemonEndpoint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DeleteOptions, InType: reflect.TypeOf(&DeleteOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DownwardAPIProjection, InType: reflect.TypeOf(&DownwardAPIProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DownwardAPIVolumeFile, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DownwardAPIVolumeSource, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EmptyDirVolumeSource, InType: reflect.TypeOf(&EmptyDirVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointAddress, InType: reflect.TypeOf(&EndpointAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointPort, InType: reflect.TypeOf(&EndpointPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointSubset, InType: reflect.TypeOf(&EndpointSubset{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Endpoints, InType: reflect.TypeOf(&Endpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointsList, InType: reflect.TypeOf(&EndpointsList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EnvFromSource, InType: reflect.TypeOf(&EnvFromSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EnvVar, InType: reflect.TypeOf(&EnvVar{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EnvVarSource, InType: reflect.TypeOf(&EnvVarSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Event, InType: reflect.TypeOf(&Event{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EventList, InType: reflect.TypeOf(&EventList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EventSource, InType: reflect.TypeOf(&EventSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ExecAction, InType: reflect.TypeOf(&ExecAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_FCVolumeSource, InType: reflect.TypeOf(&FCVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_FlexVolumeSource, InType: reflect.TypeOf(&FlexVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_FlockerVolumeSource, InType: reflect.TypeOf(&FlockerVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_GCEPersistentDiskVolumeSource, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_GitRepoVolumeSource, InType: reflect.TypeOf(&GitRepoVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_GlusterfsVolumeSource, InType: reflect.TypeOf(&GlusterfsVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HTTPGetAction, InType: reflect.TypeOf(&HTTPGetAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HTTPHeader, InType: reflect.TypeOf(&HTTPHeader{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Handler, InType: reflect.TypeOf(&Handler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HostAlias, InType: reflect.TypeOf(&HostAlias{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HostPathVolumeSource, InType: reflect.TypeOf(&HostPathVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ISCSIVolumeSource, InType: reflect.TypeOf(&ISCSIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_KeyToPath, InType: reflect.TypeOf(&KeyToPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Lifecycle, InType: reflect.TypeOf(&Lifecycle{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRange, InType: reflect.TypeOf(&LimitRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRangeItem, InType: reflect.TypeOf(&LimitRangeItem{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRangeList, InType: reflect.TypeOf(&LimitRangeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRangeSpec, InType: reflect.TypeOf(&LimitRangeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_List, InType: reflect.TypeOf(&List{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LoadBalancerIngress, InType: reflect.TypeOf(&LoadBalancerIngress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LoadBalancerStatus, InType: reflect.TypeOf(&LoadBalancerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LocalObjectReference, InType: reflect.TypeOf(&LocalObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LocalVolumeSource, InType: reflect.TypeOf(&LocalVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NFSVolumeSource, InType: reflect.TypeOf(&NFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Namespace, InType: reflect.TypeOf(&Namespace{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NamespaceList, InType: reflect.TypeOf(&NamespaceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NamespaceSpec, InType: reflect.TypeOf(&NamespaceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NamespaceStatus, InType: reflect.TypeOf(&NamespaceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Node, InType: reflect.TypeOf(&Node{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeAddress, InType: reflect.TypeOf(&NodeAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeAffinity, InType: reflect.TypeOf(&NodeAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeCondition, InType: reflect.TypeOf(&NodeCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeDaemonEndpoints, InType: reflect.TypeOf(&NodeDaemonEndpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeList, InType: reflect.TypeOf(&NodeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeProxyOptions, InType: reflect.TypeOf(&NodeProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeResources, InType: reflect.TypeOf(&NodeResources{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelector, InType: reflect.TypeOf(&NodeSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelectorRequirement, InType: reflect.TypeOf(&NodeSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelectorTerm, InType: reflect.TypeOf(&NodeSelectorTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSpec, InType: reflect.TypeOf(&NodeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeStatus, InType: reflect.TypeOf(&NodeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSystemInfo, InType: reflect.TypeOf(&NodeSystemInfo{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectFieldSelector, InType: reflect.TypeOf(&ObjectFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectMeta, InType: reflect.TypeOf(&ObjectMeta{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectReference, InType: reflect.TypeOf(&ObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolume, InType: reflect.TypeOf(&PersistentVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaim, InType: reflect.TypeOf(&PersistentVolumeClaim{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimList, InType: reflect.TypeOf(&PersistentVolumeClaimList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimSpec, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimStatus, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimVolumeSource, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeList, InType: reflect.TypeOf(&PersistentVolumeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeSource, InType: reflect.TypeOf(&PersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeSpec, InType: reflect.TypeOf(&PersistentVolumeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeStatus, InType: reflect.TypeOf(&PersistentVolumeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PhotonPersistentDiskVolumeSource, InType: reflect.TypeOf(&PhotonPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Pod, InType: reflect.TypeOf(&Pod{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAffinity, InType: reflect.TypeOf(&PodAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAffinityTerm, InType: reflect.TypeOf(&PodAffinityTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAntiAffinity, InType: reflect.TypeOf(&PodAntiAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAttachOptions, InType: reflect.TypeOf(&PodAttachOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodCondition, InType: reflect.TypeOf(&PodCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodExecOptions, InType: reflect.TypeOf(&PodExecOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodList, InType: reflect.TypeOf(&PodList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodLogOptions, InType: reflect.TypeOf(&PodLogOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodPortForwardOptions, InType: reflect.TypeOf(&PodPortForwardOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodProxyOptions, InType: reflect.TypeOf(&PodProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodSecurityContext, InType: reflect.TypeOf(&PodSecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodSignature, InType: reflect.TypeOf(&PodSignature{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodSpec, InType: reflect.TypeOf(&PodSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodStatus, InType: reflect.TypeOf(&PodStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodStatusResult, InType: reflect.TypeOf(&PodStatusResult{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodTemplate, InType: reflect.TypeOf(&PodTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodTemplateList, InType: reflect.TypeOf(&PodTemplateList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodTemplateSpec, InType: reflect.TypeOf(&PodTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PortworxVolumeSource, InType: reflect.TypeOf(&PortworxVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Preconditions, InType: reflect.TypeOf(&Preconditions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PreferAvoidPodsEntry, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PreferredSchedulingTerm, InType: reflect.TypeOf(&PreferredSchedulingTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Probe, InType: reflect.TypeOf(&Probe{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ProjectedVolumeSource, InType: reflect.TypeOf(&ProjectedVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_QuobyteVolumeSource, InType: reflect.TypeOf(&QuobyteVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_RBDVolumeSource, InType: reflect.TypeOf(&RBDVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_RangeAllocation, InType: reflect.TypeOf(&RangeAllocation{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationController, InType: reflect.TypeOf(&ReplicationController{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerCondition, InType: reflect.TypeOf(&ReplicationControllerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerList, InType: reflect.TypeOf(&ReplicationControllerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerSpec, InType: reflect.TypeOf(&ReplicationControllerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerStatus, InType: reflect.TypeOf(&ReplicationControllerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceFieldSelector, InType: reflect.TypeOf(&ResourceFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuota, InType: reflect.TypeOf(&ResourceQuota{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuotaList, InType: reflect.TypeOf(&ResourceQuotaList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuotaSpec, InType: reflect.TypeOf(&ResourceQuotaSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuotaStatus, InType: reflect.TypeOf(&ResourceQuotaStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceRequirements, InType: reflect.TypeOf(&ResourceRequirements{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SELinuxOptions, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ScaleIOVolumeSource, InType: reflect.TypeOf(&ScaleIOVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Secret, InType: reflect.TypeOf(&Secret{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretEnvSource, InType: reflect.TypeOf(&SecretEnvSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretKeySelector, InType: reflect.TypeOf(&SecretKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretList, InType: reflect.TypeOf(&SecretList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretProjection, InType: reflect.TypeOf(&SecretProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretVolumeSource, InType: reflect.TypeOf(&SecretVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecurityContext, InType: reflect.TypeOf(&SecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SerializedReference, InType: reflect.TypeOf(&SerializedReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Service, InType: reflect.TypeOf(&Service{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceAccount, InType: reflect.TypeOf(&ServiceAccount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceAccountList, InType: reflect.TypeOf(&ServiceAccountList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceList, InType: reflect.TypeOf(&ServiceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServicePort, InType: reflect.TypeOf(&ServicePort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceProxyOptions, InType: reflect.TypeOf(&ServiceProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceSpec, InType: reflect.TypeOf(&ServiceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceStatus, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_StorageOSPersistentVolumeSource, InType: reflect.TypeOf(&StorageOSPersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_StorageOSVolumeSource, InType: reflect.TypeOf(&StorageOSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Sysctl, InType: reflect.TypeOf(&Sysctl{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_TCPSocketAction, InType: reflect.TypeOf(&TCPSocketAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Taint, InType: reflect.TypeOf(&Taint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Toleration, InType: reflect.TypeOf(&Toleration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Volume, InType: reflect.TypeOf(&Volume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VolumeMount, InType: reflect.TypeOf(&VolumeMount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VolumeProjection, InType: reflect.TypeOf(&VolumeProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VolumeSource, InType: reflect.TypeOf(&VolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VsphereVirtualDiskVolumeSource, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_WeightedPodAffinityTerm, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})}, + ) +} + +// DeepCopy_v1_AWSElasticBlockStoreVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_AWSElasticBlockStoreVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AWSElasticBlockStoreVolumeSource) + out := out.(*AWSElasticBlockStoreVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_Affinity is an autogenerated deepcopy function. +func DeepCopy_v1_Affinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Affinity) + out := out.(*Affinity) + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = new(NodeAffinity) + if err := DeepCopy_v1_NodeAffinity(*in, *out, c); err != nil { + return err + } + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + *out = new(PodAffinity) + if err := DeepCopy_v1_PodAffinity(*in, *out, c); err != nil { + return err + } + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + *out = new(PodAntiAffinity) + if err := DeepCopy_v1_PodAntiAffinity(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_AttachedVolume is an autogenerated deepcopy function. +func DeepCopy_v1_AttachedVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AttachedVolume) + out := out.(*AttachedVolume) + *out = *in + return nil + } +} + +// DeepCopy_v1_AvoidPods is an autogenerated deepcopy function. +func DeepCopy_v1_AvoidPods(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AvoidPods) + out := out.(*AvoidPods) + *out = *in + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]PreferAvoidPodsEntry, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PreferAvoidPodsEntry(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_AzureDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_AzureDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureDiskVolumeSource) + out := out.(*AzureDiskVolumeSource) + *out = *in + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + *out = new(AzureDataDiskCachingMode) + **out = **in + } + if in.FSType != nil { + in, out := &in.FSType, &out.FSType + *out = new(string) + **out = **in + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + *out = new(bool) + **out = **in + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(AzureDataDiskKind) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_AzureFileVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_AzureFileVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureFileVolumeSource) + out := out.(*AzureFileVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_Binding is an autogenerated deepcopy function. +func DeepCopy_v1_Binding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Binding) + out := out.(*Binding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + return nil + } +} + +// DeepCopy_v1_Capabilities is an autogenerated deepcopy function. +func DeepCopy_v1_Capabilities(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Capabilities) + out := out.(*Capabilities) + *out = *in + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]Capability, len(*in)) + copy(*out, *in) + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]Capability, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_CephFSVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_CephFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CephFSVolumeSource) + out := out.(*CephFSVolumeSource) + *out = *in + if in.Monitors != nil { + in, out := &in.Monitors, &out.Monitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_CinderVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_CinderVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CinderVolumeSource) + out := out.(*CinderVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_ComponentCondition is an autogenerated deepcopy function. +func DeepCopy_v1_ComponentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentCondition) + out := out.(*ComponentCondition) + *out = *in + return nil + } +} + +// DeepCopy_v1_ComponentStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ComponentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatus) + out := out.(*ComponentStatus) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ComponentCondition, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ComponentStatusList is an autogenerated deepcopy function. +func DeepCopy_v1_ComponentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatusList) + out := out.(*ComponentStatusList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ComponentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ComponentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ConfigMap is an autogenerated deepcopy function. +func DeepCopy_v1_ConfigMap(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMap) + out := out.(*ConfigMap) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1_ConfigMapEnvSource is an autogenerated deepcopy function. +func DeepCopy_v1_ConfigMapEnvSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapEnvSource) + out := out.(*ConfigMapEnvSource) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_ConfigMapKeySelector is an autogenerated deepcopy function. +func DeepCopy_v1_ConfigMapKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapKeySelector) + out := out.(*ConfigMapKeySelector) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_ConfigMapList is an autogenerated deepcopy function. +func DeepCopy_v1_ConfigMapList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapList) + out := out.(*ConfigMapList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigMap, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ConfigMap(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ConfigMapProjection is an autogenerated deepcopy function. +func DeepCopy_v1_ConfigMapProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapProjection) + out := out.(*ConfigMapProjection) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_v1_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_ConfigMapVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_ConfigMapVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapVolumeSource) + out := out.(*ConfigMapVolumeSource) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_v1_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Container is an autogenerated deepcopy function. +func DeepCopy_v1_Container(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Container) + out := out.(*Container) + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ContainerPort, len(*in)) + copy(*out, *in) + } + if in.EnvFrom != nil { + in, out := &in.EnvFrom, &out.EnvFrom + *out = make([]EnvFromSource, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EnvFromSource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if err := DeepCopy_v1_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]VolumeMount, len(*in)) + copy(*out, *in) + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(Probe) + if err := DeepCopy_v1_Probe(*in, *out, c); err != nil { + return err + } + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(Probe) + if err := DeepCopy_v1_Probe(*in, *out, c); err != nil { + return err + } + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + *out = new(Lifecycle) + if err := DeepCopy_v1_Lifecycle(*in, *out, c); err != nil { + return err + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(SecurityContext) + if err := DeepCopy_v1_SecurityContext(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_ContainerImage is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerImage(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerImage) + out := out.(*ContainerImage) + *out = *in + if in.Names != nil { + in, out := &in.Names, &out.Names + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ContainerPort is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerPort) + out := out.(*ContainerPort) + *out = *in + return nil + } +} + +// DeepCopy_v1_ContainerState is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerState(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerState) + out := out.(*ContainerState) + *out = *in + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + *out = new(ContainerStateWaiting) + **out = **in + } + if in.Running != nil { + in, out := &in.Running, &out.Running + *out = new(ContainerStateRunning) + if err := DeepCopy_v1_ContainerStateRunning(*in, *out, c); err != nil { + return err + } + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + *out = new(ContainerStateTerminated) + if err := DeepCopy_v1_ContainerStateTerminated(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_ContainerStateRunning is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerStateRunning(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateRunning) + out := out.(*ContainerStateRunning) + *out = *in + out.StartedAt = in.StartedAt.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ContainerStateTerminated is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerStateTerminated(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateTerminated) + out := out.(*ContainerStateTerminated) + *out = *in + out.StartedAt = in.StartedAt.DeepCopy() + out.FinishedAt = in.FinishedAt.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ContainerStateWaiting is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerStateWaiting(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateWaiting) + out := out.(*ContainerStateWaiting) + *out = *in + return nil + } +} + +// DeepCopy_v1_ContainerStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ContainerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStatus) + out := out.(*ContainerStatus) + *out = *in + if err := DeepCopy_v1_ContainerState(&in.State, &out.State, c); err != nil { + return err + } + if err := DeepCopy_v1_ContainerState(&in.LastTerminationState, &out.LastTerminationState, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_DaemonEndpoint is an autogenerated deepcopy function. +func DeepCopy_v1_DaemonEndpoint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonEndpoint) + out := out.(*DaemonEndpoint) + *out = *in + return nil + } +} + +// DeepCopy_v1_DeleteOptions is an autogenerated deepcopy function. +func DeepCopy_v1_DeleteOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeleteOptions) + out := out.(*DeleteOptions) + *out = *in + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + *out = new(Preconditions) + if err := DeepCopy_v1_Preconditions(*in, *out, c); err != nil { + return err + } + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + *out = new(bool) + **out = **in + } + if in.PropagationPolicy != nil { + in, out := &in.PropagationPolicy, &out.PropagationPolicy + *out = new(DeletionPropagation) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_DownwardAPIProjection is an autogenerated deepcopy function. +func DeepCopy_v1_DownwardAPIProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIProjection) + out := out.(*DownwardAPIProjection) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := DeepCopy_v1_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_DownwardAPIVolumeFile is an autogenerated deepcopy function. +func DeepCopy_v1_DownwardAPIVolumeFile(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeFile) + out := out.(*DownwardAPIVolumeFile) + *out = *in + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_v1_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_DownwardAPIVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_DownwardAPIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeSource) + out := out.(*DownwardAPIVolumeSource) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := DeepCopy_v1_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_EmptyDirVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_EmptyDirVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EmptyDirVolumeSource) + out := out.(*EmptyDirVolumeSource) + *out = *in + out.SizeLimit = in.SizeLimit.DeepCopy() + return nil + } +} + +// DeepCopy_v1_EndpointAddress is an autogenerated deepcopy function. +func DeepCopy_v1_EndpointAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointAddress) + out := out.(*EndpointAddress) + *out = *in + if in.NodeName != nil { + in, out := &in.NodeName, &out.NodeName + *out = new(string) + **out = **in + } + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + *out = new(ObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_EndpointPort is an autogenerated deepcopy function. +func DeepCopy_v1_EndpointPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointPort) + out := out.(*EndpointPort) + *out = *in + return nil + } +} + +// DeepCopy_v1_EndpointSubset is an autogenerated deepcopy function. +func DeepCopy_v1_EndpointSubset(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointSubset) + out := out.(*EndpointSubset) + *out = *in + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]EndpointPort, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_Endpoints is an autogenerated deepcopy function. +func DeepCopy_v1_Endpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Endpoints) + out := out.(*Endpoints) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]EndpointSubset, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EndpointSubset(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_EndpointsList is an autogenerated deepcopy function. +func DeepCopy_v1_EndpointsList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointsList) + out := out.(*EndpointsList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Endpoints, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Endpoints(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_EnvFromSource is an autogenerated deepcopy function. +func DeepCopy_v1_EnvFromSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvFromSource) + out := out.(*EnvFromSource) + *out = *in + if in.ConfigMapRef != nil { + in, out := &in.ConfigMapRef, &out.ConfigMapRef + *out = new(ConfigMapEnvSource) + if err := DeepCopy_v1_ConfigMapEnvSource(*in, *out, c); err != nil { + return err + } + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(SecretEnvSource) + if err := DeepCopy_v1_SecretEnvSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_EnvVar is an autogenerated deepcopy function. +func DeepCopy_v1_EnvVar(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVar) + out := out.(*EnvVar) + *out = *in + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + *out = new(EnvVarSource) + if err := DeepCopy_v1_EnvVarSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_EnvVarSource is an autogenerated deepcopy function. +func DeepCopy_v1_EnvVarSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVarSource) + out := out.(*EnvVarSource) + *out = *in + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_v1_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + *out = new(ConfigMapKeySelector) + if err := DeepCopy_v1_ConfigMapKeySelector(*in, *out, c); err != nil { + return err + } + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + *out = new(SecretKeySelector) + if err := DeepCopy_v1_SecretKeySelector(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_Event is an autogenerated deepcopy function. +func DeepCopy_v1_Event(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Event) + out := out.(*Event) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + out.FirstTimestamp = in.FirstTimestamp.DeepCopy() + out.LastTimestamp = in.LastTimestamp.DeepCopy() + return nil + } +} + +// DeepCopy_v1_EventList is an autogenerated deepcopy function. +func DeepCopy_v1_EventList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventList) + out := out.(*EventList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Event, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Event(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_EventSource is an autogenerated deepcopy function. +func DeepCopy_v1_EventSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventSource) + out := out.(*EventSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_ExecAction is an autogenerated deepcopy function. +func DeepCopy_v1_ExecAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExecAction) + out := out.(*ExecAction) + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_FCVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_FCVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FCVolumeSource) + out := out.(*FCVolumeSource) + *out = *in + if in.TargetWWNs != nil { + in, out := &in.TargetWWNs, &out.TargetWWNs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Lun != nil { + in, out := &in.Lun, &out.Lun + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_FlexVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_FlexVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlexVolumeSource) + out := out.(*FlexVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1_FlockerVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_FlockerVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlockerVolumeSource) + out := out.(*FlockerVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_GCEPersistentDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_GCEPersistentDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GCEPersistentDiskVolumeSource) + out := out.(*GCEPersistentDiskVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_GitRepoVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_GitRepoVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GitRepoVolumeSource) + out := out.(*GitRepoVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_GlusterfsVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_GlusterfsVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GlusterfsVolumeSource) + out := out.(*GlusterfsVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_HTTPGetAction is an autogenerated deepcopy function. +func DeepCopy_v1_HTTPGetAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPGetAction) + out := out.(*HTTPGetAction) + *out = *in + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]HTTPHeader, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_HTTPHeader is an autogenerated deepcopy function. +func DeepCopy_v1_HTTPHeader(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPHeader) + out := out.(*HTTPHeader) + *out = *in + return nil + } +} + +// DeepCopy_v1_Handler is an autogenerated deepcopy function. +func DeepCopy_v1_Handler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Handler) + out := out.(*Handler) + *out = *in + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + *out = new(ExecAction) + if err := DeepCopy_v1_ExecAction(*in, *out, c); err != nil { + return err + } + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + *out = new(HTTPGetAction) + if err := DeepCopy_v1_HTTPGetAction(*in, *out, c); err != nil { + return err + } + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + *out = new(TCPSocketAction) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_HostAlias is an autogenerated deepcopy function. +func DeepCopy_v1_HostAlias(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostAlias) + out := out.(*HostAlias) + *out = *in + if in.Hostnames != nil { + in, out := &in.Hostnames, &out.Hostnames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_HostPathVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_HostPathVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPathVolumeSource) + out := out.(*HostPathVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_ISCSIVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_ISCSIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ISCSIVolumeSource) + out := out.(*ISCSIVolumeSource) + *out = *in + if in.Portals != nil { + in, out := &in.Portals, &out.Portals + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_KeyToPath is an autogenerated deepcopy function. +func DeepCopy_v1_KeyToPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*KeyToPath) + out := out.(*KeyToPath) + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Lifecycle is an autogenerated deepcopy function. +func DeepCopy_v1_Lifecycle(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Lifecycle) + out := out.(*Lifecycle) + *out = *in + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + *out = new(Handler) + if err := DeepCopy_v1_Handler(*in, *out, c); err != nil { + return err + } + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + *out = new(Handler) + if err := DeepCopy_v1_Handler(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_LimitRange is an autogenerated deepcopy function. +func DeepCopy_v1_LimitRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRange) + out := out.(*LimitRange) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_LimitRangeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_LimitRangeItem is an autogenerated deepcopy function. +func DeepCopy_v1_LimitRangeItem(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeItem) + out := out.(*LimitRangeItem) + *out = *in + if in.Max != nil { + in, out := &in.Max, &out.Max + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Min != nil { + in, out := &in.Min, &out.Min + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.DefaultRequest != nil { + in, out := &in.DefaultRequest, &out.DefaultRequest + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.MaxLimitRequestRatio != nil { + in, out := &in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_v1_LimitRangeList is an autogenerated deepcopy function. +func DeepCopy_v1_LimitRangeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeList) + out := out.(*LimitRangeList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]LimitRange, len(*in)) + for i := range *in { + if err := DeepCopy_v1_LimitRange(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_LimitRangeSpec is an autogenerated deepcopy function. +func DeepCopy_v1_LimitRangeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeSpec) + out := out.(*LimitRangeSpec) + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]LimitRangeItem, len(*in)) + for i := range *in { + if err := DeepCopy_v1_LimitRangeItem(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_List is an autogenerated deepcopy function. +func DeepCopy_v1_List(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*List) + out := out.(*List) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.RawExtension, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*runtime.RawExtension) + } + } + } + return nil + } +} + +// DeepCopy_v1_ListOptions is an autogenerated deepcopy function. +func DeepCopy_v1_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListOptions) + out := out.(*ListOptions) + *out = *in + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_LoadBalancerIngress is an autogenerated deepcopy function. +func DeepCopy_v1_LoadBalancerIngress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerIngress) + out := out.(*LoadBalancerIngress) + *out = *in + return nil + } +} + +// DeepCopy_v1_LoadBalancerStatus is an autogenerated deepcopy function. +func DeepCopy_v1_LoadBalancerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerStatus) + out := out.(*LoadBalancerStatus) + *out = *in + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]LoadBalancerIngress, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_LocalObjectReference is an autogenerated deepcopy function. +func DeepCopy_v1_LocalObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalObjectReference) + out := out.(*LocalObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_v1_LocalVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_LocalVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalVolumeSource) + out := out.(*LocalVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_NFSVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_NFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NFSVolumeSource) + out := out.(*NFSVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_Namespace is an autogenerated deepcopy function. +func DeepCopy_v1_Namespace(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Namespace) + out := out.(*Namespace) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_NamespaceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_NamespaceList is an autogenerated deepcopy function. +func DeepCopy_v1_NamespaceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceList) + out := out.(*NamespaceList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Namespace, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Namespace(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NamespaceSpec is an autogenerated deepcopy function. +func DeepCopy_v1_NamespaceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceSpec) + out := out.(*NamespaceSpec) + *out = *in + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]FinalizerName, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_NamespaceStatus is an autogenerated deepcopy function. +func DeepCopy_v1_NamespaceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceStatus) + out := out.(*NamespaceStatus) + *out = *in + return nil + } +} + +// DeepCopy_v1_Node is an autogenerated deepcopy function. +func DeepCopy_v1_Node(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Node) + out := out.(*Node) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_NodeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_NodeStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_NodeAddress is an autogenerated deepcopy function. +func DeepCopy_v1_NodeAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAddress) + out := out.(*NodeAddress) + *out = *in + return nil + } +} + +// DeepCopy_v1_NodeAffinity is an autogenerated deepcopy function. +func DeepCopy_v1_NodeAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAffinity) + out := out.(*NodeAffinity) + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = new(NodeSelector) + if err := DeepCopy_v1_NodeSelector(*in, *out, c); err != nil { + return err + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]PreferredSchedulingTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PreferredSchedulingTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NodeCondition is an autogenerated deepcopy function. +func DeepCopy_v1_NodeCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeCondition) + out := out.(*NodeCondition) + *out = *in + out.LastHeartbeatTime = in.LastHeartbeatTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1_NodeDaemonEndpoints is an autogenerated deepcopy function. +func DeepCopy_v1_NodeDaemonEndpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeDaemonEndpoints) + out := out.(*NodeDaemonEndpoints) + *out = *in + return nil + } +} + +// DeepCopy_v1_NodeList is an autogenerated deepcopy function. +func DeepCopy_v1_NodeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeList) + out := out.(*NodeList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Node, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Node(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NodeProxyOptions is an autogenerated deepcopy function. +func DeepCopy_v1_NodeProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeProxyOptions) + out := out.(*NodeProxyOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_NodeResources is an autogenerated deepcopy function. +func DeepCopy_v1_NodeResources(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeResources) + out := out.(*NodeResources) + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_v1_NodeSelector is an autogenerated deepcopy function. +func DeepCopy_v1_NodeSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelector) + out := out.(*NodeSelector) + *out = *in + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]NodeSelectorTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NodeSelectorTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NodeSelectorRequirement is an autogenerated deepcopy function. +func DeepCopy_v1_NodeSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorRequirement) + out := out.(*NodeSelectorRequirement) + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_NodeSelectorTerm is an autogenerated deepcopy function. +func DeepCopy_v1_NodeSelectorTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorTerm) + out := out.(*NodeSelectorTerm) + *out = *in + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]NodeSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NodeSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NodeSpec is an autogenerated deepcopy function. +func DeepCopy_v1_NodeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSpec) + out := out.(*NodeSpec) + *out = *in + if in.Taints != nil { + in, out := &in.Taints, &out.Taints + *out = make([]Taint, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Taint(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NodeStatus is an autogenerated deepcopy function. +func DeepCopy_v1_NodeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeStatus) + out := out.(*NodeStatus) + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Allocatable != nil { + in, out := &in.Allocatable, &out.Allocatable + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]NodeCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NodeCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]NodeAddress, len(*in)) + copy(*out, *in) + } + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make([]ContainerImage, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ContainerImage(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]UniqueVolumeName, len(*in)) + copy(*out, *in) + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]AttachedVolume, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_NodeSystemInfo is an autogenerated deepcopy function. +func DeepCopy_v1_NodeSystemInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSystemInfo) + out := out.(*NodeSystemInfo) + *out = *in + return nil + } +} + +// DeepCopy_v1_ObjectFieldSelector is an autogenerated deepcopy function. +func DeepCopy_v1_ObjectFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectFieldSelector) + out := out.(*ObjectFieldSelector) + *out = *in + return nil + } +} + +// DeepCopy_v1_ObjectMeta is an autogenerated deepcopy function. +func DeepCopy_v1_ObjectMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMeta) + out := out.(*ObjectMeta) + *out = *in + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + *out = new(meta_v1.Time) + **out = (*in).DeepCopy() + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]meta_v1.OwnerReference, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*meta_v1.OwnerReference) + } + } + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.Initializers) + } + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ObjectReference is an autogenerated deepcopy function. +func DeepCopy_v1_ObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectReference) + out := out.(*ObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_v1_PersistentVolume is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolume) + out := out.(*PersistentVolume) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_PersistentVolumeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeClaim is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeClaim(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaim) + out := out.(*PersistentVolumeClaim) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_PersistentVolumeClaimStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeClaimList is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeClaimList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimList) + out := out.(*PersistentVolumeClaimList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeClaimSpec is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeClaimSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimSpec) + out := out.(*PersistentVolumeClaimSpec) + *out = *in + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.LabelSelector) + } + } + if err := DeepCopy_v1_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + if in.StorageClassName != nil { + in, out := &in.StorageClassName, &out.StorageClassName + *out = new(string) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeClaimStatus is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeClaimStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimStatus) + out := out.(*PersistentVolumeClaimStatus) + *out = *in + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeClaimVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeClaimVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimVolumeSource) + out := out.(*PersistentVolumeClaimVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_PersistentVolumeList is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeList) + out := out.(*PersistentVolumeList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolume, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PersistentVolume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSource) + out := out.(*PersistentVolumeSource) + *out = *in + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_v1_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + if err := DeepCopy_v1_ISCSIVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_v1_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_v1_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_v1_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_v1_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.PhotonPersistentDisk != nil { + in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } + if in.PortworxVolume != nil { + in, out := &in.PortworxVolume, &out.PortworxVolume + *out = new(PortworxVolumeSource) + **out = **in + } + if in.ScaleIO != nil { + in, out := &in.ScaleIO, &out.ScaleIO + *out = new(ScaleIOVolumeSource) + if err := DeepCopy_v1_ScaleIOVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Local != nil { + in, out := &in.Local, &out.Local + *out = new(LocalVolumeSource) + **out = **in + } + if in.StorageOS != nil { + in, out := &in.StorageOS, &out.StorageOS + *out = new(StorageOSPersistentVolumeSource) + if err := DeepCopy_v1_StorageOSPersistentVolumeSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeSpec is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSpec) + out := out.(*PersistentVolumeSpec) + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if err := DeepCopy_v1_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, c); err != nil { + return err + } + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + *out = new(ObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_PersistentVolumeStatus is an autogenerated deepcopy function. +func DeepCopy_v1_PersistentVolumeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeStatus) + out := out.(*PersistentVolumeStatus) + *out = *in + return nil + } +} + +// DeepCopy_v1_PhotonPersistentDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_PhotonPersistentDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PhotonPersistentDiskVolumeSource) + out := out.(*PhotonPersistentDiskVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_Pod is an autogenerated deepcopy function. +func DeepCopy_v1_Pod(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Pod) + out := out.(*Pod) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_PodAffinity is an autogenerated deepcopy function. +func DeepCopy_v1_PodAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinity) + out := out.(*PodAffinity) + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PodAffinityTerm is an autogenerated deepcopy function. +func DeepCopy_v1_PodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinityTerm) + out := out.(*PodAffinityTerm) + *out = *in + if in.LabelSelector != nil { + in, out := &in.LabelSelector, &out.LabelSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.LabelSelector) + } + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_PodAntiAffinity is an autogenerated deepcopy function. +func DeepCopy_v1_PodAntiAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAntiAffinity) + out := out.(*PodAntiAffinity) + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PodAttachOptions is an autogenerated deepcopy function. +func DeepCopy_v1_PodAttachOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAttachOptions) + out := out.(*PodAttachOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_PodCondition is an autogenerated deepcopy function. +func DeepCopy_v1_PodCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodCondition) + out := out.(*PodCondition) + *out = *in + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1_PodExecOptions is an autogenerated deepcopy function. +func DeepCopy_v1_PodExecOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodExecOptions) + out := out.(*PodExecOptions) + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_PodList is an autogenerated deepcopy function. +func DeepCopy_v1_PodList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodList) + out := out.(*PodList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pod, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Pod(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PodLogOptions is an autogenerated deepcopy function. +func DeepCopy_v1_PodLogOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodLogOptions) + out := out.(*PodLogOptions) + *out = *in + if in.SinceSeconds != nil { + in, out := &in.SinceSeconds, &out.SinceSeconds + *out = new(int64) + **out = **in + } + if in.SinceTime != nil { + in, out := &in.SinceTime, &out.SinceTime + *out = new(meta_v1.Time) + **out = (*in).DeepCopy() + } + if in.TailLines != nil { + in, out := &in.TailLines, &out.TailLines + *out = new(int64) + **out = **in + } + if in.LimitBytes != nil { + in, out := &in.LimitBytes, &out.LimitBytes + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_PodPortForwardOptions is an autogenerated deepcopy function. +func DeepCopy_v1_PodPortForwardOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPortForwardOptions) + out := out.(*PodPortForwardOptions) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]int32, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_PodProxyOptions is an autogenerated deepcopy function. +func DeepCopy_v1_PodProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodProxyOptions) + out := out.(*PodProxyOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_PodSecurityContext is an autogenerated deepcopy function. +func DeepCopy_v1_PodSecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityContext) + out := out.(*PodSecurityContext) + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } + if in.FSGroup != nil { + in, out := &in.FSGroup, &out.FSGroup + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_PodSignature is an autogenerated deepcopy function. +func DeepCopy_v1_PodSignature(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSignature) + out := out.(*PodSignature) + *out = *in + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.OwnerReference) + } + } + return nil + } +} + +// DeepCopy_v1_PodSpec is an autogenerated deepcopy function. +func DeepCopy_v1_PodSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSpec) + out := out.(*PodSpec) + *out = *in + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Volume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + *out = new(bool) + **out = **in + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(PodSecurityContext) + if err := DeepCopy_v1_PodSecurityContext(*in, *out, c); err != nil { + return err + } + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + *out = new(Affinity) + if err := DeepCopy_v1_Affinity(*in, *out, c); err != nil { + return err + } + } + if in.Tolerations != nil { + in, out := &in.Tolerations, &out.Tolerations + *out = make([]Toleration, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Toleration(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.HostAliases != nil { + in, out := &in.HostAliases, &out.HostAliases + *out = make([]HostAlias, len(*in)) + for i := range *in { + if err := DeepCopy_v1_HostAlias(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PodStatus is an autogenerated deepcopy function. +func DeepCopy_v1_PodStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatus) + out := out.(*PodStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PodCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(meta_v1.Time) + **out = (*in).DeepCopy() + } + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PodStatusResult is an autogenerated deepcopy function. +func DeepCopy_v1_PodStatusResult(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatusResult) + out := out.(*PodStatusResult) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_PodTemplate is an autogenerated deepcopy function. +func DeepCopy_v1_PodTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplate) + out := out.(*PodTemplate) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_PodTemplateList is an autogenerated deepcopy function. +func DeepCopy_v1_PodTemplateList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateList) + out := out.(*PodTemplateList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodTemplate, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodTemplate(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_PodTemplateSpec is an autogenerated deepcopy function. +func DeepCopy_v1_PodTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateSpec) + out := out.(*PodTemplateSpec) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_PortworxVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_PortworxVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PortworxVolumeSource) + out := out.(*PortworxVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_Preconditions is an autogenerated deepcopy function. +func DeepCopy_v1_Preconditions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Preconditions) + out := out.(*Preconditions) + *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(types.UID) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_PreferAvoidPodsEntry is an autogenerated deepcopy function. +func DeepCopy_v1_PreferAvoidPodsEntry(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferAvoidPodsEntry) + out := out.(*PreferAvoidPodsEntry) + *out = *in + if err := DeepCopy_v1_PodSignature(&in.PodSignature, &out.PodSignature, c); err != nil { + return err + } + out.EvictionTime = in.EvictionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1_PreferredSchedulingTerm is an autogenerated deepcopy function. +func DeepCopy_v1_PreferredSchedulingTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferredSchedulingTerm) + out := out.(*PreferredSchedulingTerm) + *out = *in + if err := DeepCopy_v1_NodeSelectorTerm(&in.Preference, &out.Preference, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_Probe is an autogenerated deepcopy function. +func DeepCopy_v1_Probe(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Probe) + out := out.(*Probe) + *out = *in + if err := DeepCopy_v1_Handler(&in.Handler, &out.Handler, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_ProjectedVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_ProjectedVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ProjectedVolumeSource) + out := out.(*ProjectedVolumeSource) + *out = *in + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]VolumeProjection, len(*in)) + for i := range *in { + if err := DeepCopy_v1_VolumeProjection(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_QuobyteVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_QuobyteVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*QuobyteVolumeSource) + out := out.(*QuobyteVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_RBDVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_RBDVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RBDVolumeSource) + out := out.(*RBDVolumeSource) + *out = *in + if in.CephMonitors != nil { + in, out := &in.CephMonitors, &out.CephMonitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_RangeAllocation is an autogenerated deepcopy function. +func DeepCopy_v1_RangeAllocation(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RangeAllocation) + out := out.(*RangeAllocation) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ReplicationController is an autogenerated deepcopy function. +func DeepCopy_v1_ReplicationController(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationController) + out := out.(*ReplicationController) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_ReplicationControllerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_ReplicationControllerCondition is an autogenerated deepcopy function. +func DeepCopy_v1_ReplicationControllerCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerCondition) + out := out.(*ReplicationControllerCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ReplicationControllerList is an autogenerated deepcopy function. +func DeepCopy_v1_ReplicationControllerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerList) + out := out.(*ReplicationControllerList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicationController, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ReplicationController(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ReplicationControllerSpec is an autogenerated deepcopy function. +func DeepCopy_v1_ReplicationControllerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerSpec) + out := out.(*ReplicationControllerSpec) + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(PodTemplateSpec) + if err := DeepCopy_v1_PodTemplateSpec(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_ReplicationControllerStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ReplicationControllerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerStatus) + out := out.(*ReplicationControllerStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicationControllerCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ReplicationControllerCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ResourceFieldSelector is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceFieldSelector) + out := out.(*ResourceFieldSelector) + *out = *in + out.Divisor = in.Divisor.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ResourceQuota is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceQuota(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuota) + out := out.(*ResourceQuota) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_ResourceQuotaSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_ResourceQuotaStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_ResourceQuotaList is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceQuotaList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaList) + out := out.(*ResourceQuotaList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ResourceQuota, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ResourceQuota(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ResourceQuotaSpec is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceQuotaSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaSpec) + out := out.(*ResourceQuotaSpec) + *out = *in + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]ResourceQuotaScope, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ResourceQuotaStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceQuotaStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaStatus) + out := out.(*ResourceQuotaStatus) + *out = *in + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Used != nil { + in, out := &in.Used, &out.Used + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_v1_ResourceRequirements is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceRequirements(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceRequirements) + out := out.(*ResourceRequirements) + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_v1_SELinuxOptions is an autogenerated deepcopy function. +func DeepCopy_v1_SELinuxOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxOptions) + out := out.(*SELinuxOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_ScaleIOVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_ScaleIOVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleIOVolumeSource) + out := out.(*ScaleIOVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Secret is an autogenerated deepcopy function. +func DeepCopy_v1_Secret(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Secret) + out := out.(*Secret) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string][]byte) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*[]byte) + } + } + } + if in.StringData != nil { + in, out := &in.StringData, &out.StringData + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1_SecretEnvSource is an autogenerated deepcopy function. +func DeepCopy_v1_SecretEnvSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretEnvSource) + out := out.(*SecretEnvSource) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_SecretKeySelector is an autogenerated deepcopy function. +func DeepCopy_v1_SecretKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretKeySelector) + out := out.(*SecretKeySelector) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_SecretList is an autogenerated deepcopy function. +func DeepCopy_v1_SecretList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretList) + out := out.(*SecretList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Secret, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Secret(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_SecretProjection is an autogenerated deepcopy function. +func DeepCopy_v1_SecretProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretProjection) + out := out.(*SecretProjection) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_v1_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_SecretVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_SecretVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretVolumeSource) + out := out.(*SecretVolumeSource) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_v1_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_SecurityContext is an autogenerated deepcopy function. +func DeepCopy_v1_SecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecurityContext) + out := out.(*SecurityContext) + *out = *in + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = new(Capabilities) + if err := DeepCopy_v1_Capabilities(*in, *out, c); err != nil { + return err + } + } + if in.Privileged != nil { + in, out := &in.Privileged, &out.Privileged + *out = new(bool) + **out = **in + } + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } + if in.ReadOnlyRootFilesystem != nil { + in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_SerializedReference is an autogenerated deepcopy function. +func DeepCopy_v1_SerializedReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SerializedReference) + out := out.(*SerializedReference) + *out = *in + return nil + } +} + +// DeepCopy_v1_Service is an autogenerated deepcopy function. +func DeepCopy_v1_Service(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Service) + out := out.(*Service) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_ServiceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_ServiceStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_ServiceAccount is an autogenerated deepcopy function. +func DeepCopy_v1_ServiceAccount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccount) + out := out.(*ServiceAccount) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]ObjectReference, len(*in)) + copy(*out, *in) + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_ServiceAccountList is an autogenerated deepcopy function. +func DeepCopy_v1_ServiceAccountList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccountList) + out := out.(*ServiceAccountList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccount, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ServiceAccount(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ServiceList is an autogenerated deepcopy function. +func DeepCopy_v1_ServiceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceList) + out := out.(*ServiceList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Service, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Service(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_ServicePort is an autogenerated deepcopy function. +func DeepCopy_v1_ServicePort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServicePort) + out := out.(*ServicePort) + *out = *in + return nil + } +} + +// DeepCopy_v1_ServiceProxyOptions is an autogenerated deepcopy function. +func DeepCopy_v1_ServiceProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceProxyOptions) + out := out.(*ServiceProxyOptions) + *out = *in + return nil + } +} + +// DeepCopy_v1_ServiceSpec is an autogenerated deepcopy function. +func DeepCopy_v1_ServiceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceSpec) + out := out.(*ServiceSpec) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ServicePort, len(*in)) + copy(*out, *in) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExternalIPs != nil { + in, out := &in.ExternalIPs, &out.ExternalIPs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.LoadBalancerSourceRanges != nil { + in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1_ServiceStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ServiceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceStatus) + out := out.(*ServiceStatus) + *out = *in + if err := DeepCopy_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_StorageOSPersistentVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_StorageOSPersistentVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageOSPersistentVolumeSource) + out := out.(*StorageOSPersistentVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(ObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_StorageOSVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_StorageOSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageOSVolumeSource) + out := out.(*StorageOSVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Sysctl is an autogenerated deepcopy function. +func DeepCopy_v1_Sysctl(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Sysctl) + out := out.(*Sysctl) + *out = *in + return nil + } +} + +// DeepCopy_v1_TCPSocketAction is an autogenerated deepcopy function. +func DeepCopy_v1_TCPSocketAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TCPSocketAction) + out := out.(*TCPSocketAction) + *out = *in + return nil + } +} + +// DeepCopy_v1_Taint is an autogenerated deepcopy function. +func DeepCopy_v1_Taint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Taint) + out := out.(*Taint) + *out = *in + out.TimeAdded = in.TimeAdded.DeepCopy() + return nil + } +} + +// DeepCopy_v1_Toleration is an autogenerated deepcopy function. +func DeepCopy_v1_Toleration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Toleration) + out := out.(*Toleration) + *out = *in + if in.TolerationSeconds != nil { + in, out := &in.TolerationSeconds, &out.TolerationSeconds + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_Volume is an autogenerated deepcopy function. +func DeepCopy_v1_Volume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Volume) + out := out.(*Volume) + *out = *in + if err := DeepCopy_v1_VolumeSource(&in.VolumeSource, &out.VolumeSource, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_VolumeMount is an autogenerated deepcopy function. +func DeepCopy_v1_VolumeMount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeMount) + out := out.(*VolumeMount) + *out = *in + return nil + } +} + +// DeepCopy_v1_VolumeProjection is an autogenerated deepcopy function. +func DeepCopy_v1_VolumeProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeProjection) + out := out.(*VolumeProjection) + *out = *in + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretProjection) + if err := DeepCopy_v1_SecretProjection(*in, *out, c); err != nil { + return err + } + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIProjection) + if err := DeepCopy_v1_DownwardAPIProjection(*in, *out, c); err != nil { + return err + } + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapProjection) + if err := DeepCopy_v1_ConfigMapProjection(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_VolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_VolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeSource) + out := out.(*VolumeSource) + *out = *in + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + *out = new(EmptyDirVolumeSource) + if err := DeepCopy_v1_EmptyDirVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + *out = new(GitRepoVolumeSource) + **out = **in + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretVolumeSource) + if err := DeepCopy_v1_SecretVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + if err := DeepCopy_v1_ISCSIVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_v1_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_v1_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_v1_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIVolumeSource) + if err := DeepCopy_v1_DownwardAPIVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_v1_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapVolumeSource) + if err := DeepCopy_v1_ConfigMapVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_v1_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.PhotonPersistentDisk != nil { + in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } + if in.Projected != nil { + in, out := &in.Projected, &out.Projected + *out = new(ProjectedVolumeSource) + if err := DeepCopy_v1_ProjectedVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.PortworxVolume != nil { + in, out := &in.PortworxVolume, &out.PortworxVolume + *out = new(PortworxVolumeSource) + **out = **in + } + if in.ScaleIO != nil { + in, out := &in.ScaleIO, &out.ScaleIO + *out = new(ScaleIOVolumeSource) + if err := DeepCopy_v1_ScaleIOVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.StorageOS != nil { + in, out := &in.StorageOS, &out.StorageOS + *out = new(StorageOSVolumeSource) + if err := DeepCopy_v1_StorageOSVolumeSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_VsphereVirtualDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_v1_VsphereVirtualDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VsphereVirtualDiskVolumeSource) + out := out.(*VsphereVirtualDiskVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_v1_WeightedPodAffinityTerm is an autogenerated deepcopy function. +func DeepCopy_v1_WeightedPodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*WeightedPodAffinityTerm) + out := out.(*WeightedPodAffinityTerm) + *out = *in + if err := DeepCopy_v1_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, c); err != nil { + return err + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.defaults.go new file mode 100644 index 000000000..31e795066 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/v1/zz_generated.defaults.go @@ -0,0 +1,631 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&ConfigMap{}, func(obj interface{}) { SetObjectDefaults_ConfigMap(obj.(*ConfigMap)) }) + scheme.AddTypeDefaultingFunc(&ConfigMapList{}, func(obj interface{}) { SetObjectDefaults_ConfigMapList(obj.(*ConfigMapList)) }) + scheme.AddTypeDefaultingFunc(&Endpoints{}, func(obj interface{}) { SetObjectDefaults_Endpoints(obj.(*Endpoints)) }) + scheme.AddTypeDefaultingFunc(&EndpointsList{}, func(obj interface{}) { SetObjectDefaults_EndpointsList(obj.(*EndpointsList)) }) + scheme.AddTypeDefaultingFunc(&LimitRange{}, func(obj interface{}) { SetObjectDefaults_LimitRange(obj.(*LimitRange)) }) + scheme.AddTypeDefaultingFunc(&LimitRangeList{}, func(obj interface{}) { SetObjectDefaults_LimitRangeList(obj.(*LimitRangeList)) }) + scheme.AddTypeDefaultingFunc(&Namespace{}, func(obj interface{}) { SetObjectDefaults_Namespace(obj.(*Namespace)) }) + scheme.AddTypeDefaultingFunc(&NamespaceList{}, func(obj interface{}) { SetObjectDefaults_NamespaceList(obj.(*NamespaceList)) }) + scheme.AddTypeDefaultingFunc(&Node{}, func(obj interface{}) { SetObjectDefaults_Node(obj.(*Node)) }) + scheme.AddTypeDefaultingFunc(&NodeList{}, func(obj interface{}) { SetObjectDefaults_NodeList(obj.(*NodeList)) }) + scheme.AddTypeDefaultingFunc(&PersistentVolume{}, func(obj interface{}) { SetObjectDefaults_PersistentVolume(obj.(*PersistentVolume)) }) + scheme.AddTypeDefaultingFunc(&PersistentVolumeClaim{}, func(obj interface{}) { SetObjectDefaults_PersistentVolumeClaim(obj.(*PersistentVolumeClaim)) }) + scheme.AddTypeDefaultingFunc(&PersistentVolumeClaimList{}, func(obj interface{}) { SetObjectDefaults_PersistentVolumeClaimList(obj.(*PersistentVolumeClaimList)) }) + scheme.AddTypeDefaultingFunc(&PersistentVolumeList{}, func(obj interface{}) { SetObjectDefaults_PersistentVolumeList(obj.(*PersistentVolumeList)) }) + scheme.AddTypeDefaultingFunc(&Pod{}, func(obj interface{}) { SetObjectDefaults_Pod(obj.(*Pod)) }) + scheme.AddTypeDefaultingFunc(&PodAttachOptions{}, func(obj interface{}) { SetObjectDefaults_PodAttachOptions(obj.(*PodAttachOptions)) }) + scheme.AddTypeDefaultingFunc(&PodExecOptions{}, func(obj interface{}) { SetObjectDefaults_PodExecOptions(obj.(*PodExecOptions)) }) + scheme.AddTypeDefaultingFunc(&PodList{}, func(obj interface{}) { SetObjectDefaults_PodList(obj.(*PodList)) }) + scheme.AddTypeDefaultingFunc(&PodTemplate{}, func(obj interface{}) { SetObjectDefaults_PodTemplate(obj.(*PodTemplate)) }) + scheme.AddTypeDefaultingFunc(&PodTemplateList{}, func(obj interface{}) { SetObjectDefaults_PodTemplateList(obj.(*PodTemplateList)) }) + scheme.AddTypeDefaultingFunc(&ReplicationController{}, func(obj interface{}) { SetObjectDefaults_ReplicationController(obj.(*ReplicationController)) }) + scheme.AddTypeDefaultingFunc(&ReplicationControllerList{}, func(obj interface{}) { SetObjectDefaults_ReplicationControllerList(obj.(*ReplicationControllerList)) }) + scheme.AddTypeDefaultingFunc(&ResourceQuota{}, func(obj interface{}) { SetObjectDefaults_ResourceQuota(obj.(*ResourceQuota)) }) + scheme.AddTypeDefaultingFunc(&ResourceQuotaList{}, func(obj interface{}) { SetObjectDefaults_ResourceQuotaList(obj.(*ResourceQuotaList)) }) + scheme.AddTypeDefaultingFunc(&Secret{}, func(obj interface{}) { SetObjectDefaults_Secret(obj.(*Secret)) }) + scheme.AddTypeDefaultingFunc(&SecretList{}, func(obj interface{}) { SetObjectDefaults_SecretList(obj.(*SecretList)) }) + scheme.AddTypeDefaultingFunc(&Service{}, func(obj interface{}) { SetObjectDefaults_Service(obj.(*Service)) }) + scheme.AddTypeDefaultingFunc(&ServiceList{}, func(obj interface{}) { SetObjectDefaults_ServiceList(obj.(*ServiceList)) }) + return nil +} + +func SetObjectDefaults_ConfigMap(in *ConfigMap) { + SetDefaults_ConfigMap(in) +} + +func SetObjectDefaults_ConfigMapList(in *ConfigMapList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ConfigMap(a) + } +} + +func SetObjectDefaults_Endpoints(in *Endpoints) { + SetDefaults_Endpoints(in) +} + +func SetObjectDefaults_EndpointsList(in *EndpointsList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Endpoints(a) + } +} + +func SetObjectDefaults_LimitRange(in *LimitRange) { + for i := range in.Spec.Limits { + a := &in.Spec.Limits[i] + SetDefaults_LimitRangeItem(a) + SetDefaults_ResourceList(&a.Max) + SetDefaults_ResourceList(&a.Min) + SetDefaults_ResourceList(&a.Default) + SetDefaults_ResourceList(&a.DefaultRequest) + SetDefaults_ResourceList(&a.MaxLimitRequestRatio) + } +} + +func SetObjectDefaults_LimitRangeList(in *LimitRangeList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_LimitRange(a) + } +} + +func SetObjectDefaults_Namespace(in *Namespace) { + SetDefaults_NamespaceStatus(&in.Status) +} + +func SetObjectDefaults_NamespaceList(in *NamespaceList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Namespace(a) + } +} + +func SetObjectDefaults_Node(in *Node) { + SetDefaults_Node(in) + SetDefaults_NodeStatus(&in.Status) + SetDefaults_ResourceList(&in.Status.Capacity) + SetDefaults_ResourceList(&in.Status.Allocatable) +} + +func SetObjectDefaults_NodeList(in *NodeList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Node(a) + } +} + +func SetObjectDefaults_PersistentVolume(in *PersistentVolume) { + SetDefaults_PersistentVolume(in) + SetDefaults_ResourceList(&in.Spec.Capacity) + if in.Spec.PersistentVolumeSource.RBD != nil { + SetDefaults_RBDVolumeSource(in.Spec.PersistentVolumeSource.RBD) + } + if in.Spec.PersistentVolumeSource.ISCSI != nil { + SetDefaults_ISCSIVolumeSource(in.Spec.PersistentVolumeSource.ISCSI) + } + if in.Spec.PersistentVolumeSource.AzureDisk != nil { + SetDefaults_AzureDiskVolumeSource(in.Spec.PersistentVolumeSource.AzureDisk) + } + if in.Spec.PersistentVolumeSource.ScaleIO != nil { + SetDefaults_ScaleIOVolumeSource(in.Spec.PersistentVolumeSource.ScaleIO) + } +} + +func SetObjectDefaults_PersistentVolumeClaim(in *PersistentVolumeClaim) { + SetDefaults_PersistentVolumeClaim(in) + SetDefaults_ResourceList(&in.Spec.Resources.Limits) + SetDefaults_ResourceList(&in.Spec.Resources.Requests) + SetDefaults_ResourceList(&in.Status.Capacity) +} + +func SetObjectDefaults_PersistentVolumeClaimList(in *PersistentVolumeClaimList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_PersistentVolumeClaim(a) + } +} + +func SetObjectDefaults_PersistentVolumeList(in *PersistentVolumeList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_PersistentVolume(a) + } +} + +func SetObjectDefaults_Pod(in *Pod) { + SetDefaults_Pod(in) + SetDefaults_PodSpec(&in.Spec) + for i := range in.Spec.Volumes { + a := &in.Spec.Volumes[i] + SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.InitContainers { + a := &in.Spec.InitContainers[i] + SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + SetDefaults_ResourceList(&a.Resources.Limits) + SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Containers { + a := &in.Spec.Containers[i] + SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + SetDefaults_ResourceList(&a.Resources.Limits) + SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_PodAttachOptions(in *PodAttachOptions) { + SetDefaults_PodAttachOptions(in) +} + +func SetObjectDefaults_PodExecOptions(in *PodExecOptions) { + SetDefaults_PodExecOptions(in) +} + +func SetObjectDefaults_PodList(in *PodList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Pod(a) + } +} + +func SetObjectDefaults_PodTemplate(in *PodTemplate) { + SetDefaults_PodSpec(&in.Template.Spec) + for i := range in.Template.Spec.Volumes { + a := &in.Template.Spec.Volumes[i] + SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Template.Spec.InitContainers { + a := &in.Template.Spec.InitContainers[i] + SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + SetDefaults_ResourceList(&a.Resources.Limits) + SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Template.Spec.Containers { + a := &in.Template.Spec.Containers[i] + SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + SetDefaults_ResourceList(&a.Resources.Limits) + SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_PodTemplateList(in *PodTemplateList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_PodTemplate(a) + } +} + +func SetObjectDefaults_ReplicationController(in *ReplicationController) { + SetDefaults_ReplicationController(in) + if in.Spec.Template != nil { + SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + SetDefaults_ResourceList(&a.Resources.Limits) + SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + SetDefaults_ResourceList(&a.Resources.Limits) + SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + } +} + +func SetObjectDefaults_ReplicationControllerList(in *ReplicationControllerList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ReplicationController(a) + } +} + +func SetObjectDefaults_ResourceQuota(in *ResourceQuota) { + SetDefaults_ResourceList(&in.Spec.Hard) + SetDefaults_ResourceList(&in.Status.Hard) + SetDefaults_ResourceList(&in.Status.Used) +} + +func SetObjectDefaults_ResourceQuotaList(in *ResourceQuotaList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ResourceQuota(a) + } +} + +func SetObjectDefaults_Secret(in *Secret) { + SetDefaults_Secret(in) +} + +func SetObjectDefaults_SecretList(in *SecretList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Secret(a) + } +} + +func SetObjectDefaults_Service(in *Service) { + SetDefaults_Service(in) +} + +func SetObjectDefaults_ServiceList(in *ServiceList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Service(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/api/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/api/zz_generated.deepcopy.go new file mode 100644 index 000000000..cc111561b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/api/zz_generated.deepcopy.go @@ -0,0 +1,3776 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package api + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + fields "k8s.io/apimachinery/pkg/fields" + labels "k8s.io/apimachinery/pkg/labels" + runtime "k8s.io/apimachinery/pkg/runtime" + types "k8s.io/apimachinery/pkg/types" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AWSElasticBlockStoreVolumeSource, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Affinity, InType: reflect.TypeOf(&Affinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AttachedVolume, InType: reflect.TypeOf(&AttachedVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AvoidPods, InType: reflect.TypeOf(&AvoidPods{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AzureDiskVolumeSource, InType: reflect.TypeOf(&AzureDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AzureFileVolumeSource, InType: reflect.TypeOf(&AzureFileVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Binding, InType: reflect.TypeOf(&Binding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Capabilities, InType: reflect.TypeOf(&Capabilities{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_CephFSVolumeSource, InType: reflect.TypeOf(&CephFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_CinderVolumeSource, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ComponentCondition, InType: reflect.TypeOf(&ComponentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ComponentStatus, InType: reflect.TypeOf(&ComponentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ComponentStatusList, InType: reflect.TypeOf(&ComponentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMap, InType: reflect.TypeOf(&ConfigMap{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapEnvSource, InType: reflect.TypeOf(&ConfigMapEnvSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapKeySelector, InType: reflect.TypeOf(&ConfigMapKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapList, InType: reflect.TypeOf(&ConfigMapList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapProjection, InType: reflect.TypeOf(&ConfigMapProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapVolumeSource, InType: reflect.TypeOf(&ConfigMapVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Container, InType: reflect.TypeOf(&Container{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerImage, InType: reflect.TypeOf(&ContainerImage{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerPort, InType: reflect.TypeOf(&ContainerPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerState, InType: reflect.TypeOf(&ContainerState{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStateRunning, InType: reflect.TypeOf(&ContainerStateRunning{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStateTerminated, InType: reflect.TypeOf(&ContainerStateTerminated{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStateWaiting, InType: reflect.TypeOf(&ContainerStateWaiting{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStatus, InType: reflect.TypeOf(&ContainerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DaemonEndpoint, InType: reflect.TypeOf(&DaemonEndpoint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DeleteOptions, InType: reflect.TypeOf(&DeleteOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DownwardAPIProjection, InType: reflect.TypeOf(&DownwardAPIProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DownwardAPIVolumeFile, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DownwardAPIVolumeSource, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EmptyDirVolumeSource, InType: reflect.TypeOf(&EmptyDirVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointAddress, InType: reflect.TypeOf(&EndpointAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointPort, InType: reflect.TypeOf(&EndpointPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointSubset, InType: reflect.TypeOf(&EndpointSubset{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Endpoints, InType: reflect.TypeOf(&Endpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointsList, InType: reflect.TypeOf(&EndpointsList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EnvFromSource, InType: reflect.TypeOf(&EnvFromSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EnvVar, InType: reflect.TypeOf(&EnvVar{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EnvVarSource, InType: reflect.TypeOf(&EnvVarSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Event, InType: reflect.TypeOf(&Event{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EventList, InType: reflect.TypeOf(&EventList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EventSource, InType: reflect.TypeOf(&EventSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ExecAction, InType: reflect.TypeOf(&ExecAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_FCVolumeSource, InType: reflect.TypeOf(&FCVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_FlexVolumeSource, InType: reflect.TypeOf(&FlexVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_FlockerVolumeSource, InType: reflect.TypeOf(&FlockerVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_GCEPersistentDiskVolumeSource, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_GitRepoVolumeSource, InType: reflect.TypeOf(&GitRepoVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_GlusterfsVolumeSource, InType: reflect.TypeOf(&GlusterfsVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HTTPGetAction, InType: reflect.TypeOf(&HTTPGetAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HTTPHeader, InType: reflect.TypeOf(&HTTPHeader{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Handler, InType: reflect.TypeOf(&Handler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HostAlias, InType: reflect.TypeOf(&HostAlias{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HostPathVolumeSource, InType: reflect.TypeOf(&HostPathVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ISCSIVolumeSource, InType: reflect.TypeOf(&ISCSIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_KeyToPath, InType: reflect.TypeOf(&KeyToPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Lifecycle, InType: reflect.TypeOf(&Lifecycle{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRange, InType: reflect.TypeOf(&LimitRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRangeItem, InType: reflect.TypeOf(&LimitRangeItem{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRangeList, InType: reflect.TypeOf(&LimitRangeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRangeSpec, InType: reflect.TypeOf(&LimitRangeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_List, InType: reflect.TypeOf(&List{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LoadBalancerIngress, InType: reflect.TypeOf(&LoadBalancerIngress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LoadBalancerStatus, InType: reflect.TypeOf(&LoadBalancerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LocalObjectReference, InType: reflect.TypeOf(&LocalObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LocalVolumeSource, InType: reflect.TypeOf(&LocalVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NFSVolumeSource, InType: reflect.TypeOf(&NFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Namespace, InType: reflect.TypeOf(&Namespace{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NamespaceList, InType: reflect.TypeOf(&NamespaceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NamespaceSpec, InType: reflect.TypeOf(&NamespaceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NamespaceStatus, InType: reflect.TypeOf(&NamespaceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Node, InType: reflect.TypeOf(&Node{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeAddress, InType: reflect.TypeOf(&NodeAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeAffinity, InType: reflect.TypeOf(&NodeAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeCondition, InType: reflect.TypeOf(&NodeCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeDaemonEndpoints, InType: reflect.TypeOf(&NodeDaemonEndpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeList, InType: reflect.TypeOf(&NodeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeProxyOptions, InType: reflect.TypeOf(&NodeProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeResources, InType: reflect.TypeOf(&NodeResources{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSelector, InType: reflect.TypeOf(&NodeSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSelectorRequirement, InType: reflect.TypeOf(&NodeSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSelectorTerm, InType: reflect.TypeOf(&NodeSelectorTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSpec, InType: reflect.TypeOf(&NodeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeStatus, InType: reflect.TypeOf(&NodeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSystemInfo, InType: reflect.TypeOf(&NodeSystemInfo{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ObjectFieldSelector, InType: reflect.TypeOf(&ObjectFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ObjectMeta, InType: reflect.TypeOf(&ObjectMeta{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ObjectReference, InType: reflect.TypeOf(&ObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolume, InType: reflect.TypeOf(&PersistentVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaim, InType: reflect.TypeOf(&PersistentVolumeClaim{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimList, InType: reflect.TypeOf(&PersistentVolumeClaimList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimSpec, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimStatus, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimVolumeSource, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeList, InType: reflect.TypeOf(&PersistentVolumeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeSource, InType: reflect.TypeOf(&PersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeSpec, InType: reflect.TypeOf(&PersistentVolumeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeStatus, InType: reflect.TypeOf(&PersistentVolumeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PhotonPersistentDiskVolumeSource, InType: reflect.TypeOf(&PhotonPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Pod, InType: reflect.TypeOf(&Pod{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAffinity, InType: reflect.TypeOf(&PodAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAffinityTerm, InType: reflect.TypeOf(&PodAffinityTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAntiAffinity, InType: reflect.TypeOf(&PodAntiAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAttachOptions, InType: reflect.TypeOf(&PodAttachOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodCondition, InType: reflect.TypeOf(&PodCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodExecOptions, InType: reflect.TypeOf(&PodExecOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodList, InType: reflect.TypeOf(&PodList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodLogOptions, InType: reflect.TypeOf(&PodLogOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodPortForwardOptions, InType: reflect.TypeOf(&PodPortForwardOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodProxyOptions, InType: reflect.TypeOf(&PodProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodSecurityContext, InType: reflect.TypeOf(&PodSecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodSignature, InType: reflect.TypeOf(&PodSignature{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodSpec, InType: reflect.TypeOf(&PodSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodStatus, InType: reflect.TypeOf(&PodStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodStatusResult, InType: reflect.TypeOf(&PodStatusResult{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodTemplate, InType: reflect.TypeOf(&PodTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodTemplateList, InType: reflect.TypeOf(&PodTemplateList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodTemplateSpec, InType: reflect.TypeOf(&PodTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PortworxVolumeSource, InType: reflect.TypeOf(&PortworxVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Preconditions, InType: reflect.TypeOf(&Preconditions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PreferAvoidPodsEntry, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PreferredSchedulingTerm, InType: reflect.TypeOf(&PreferredSchedulingTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Probe, InType: reflect.TypeOf(&Probe{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ProjectedVolumeSource, InType: reflect.TypeOf(&ProjectedVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_QuobyteVolumeSource, InType: reflect.TypeOf(&QuobyteVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_RBDVolumeSource, InType: reflect.TypeOf(&RBDVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_RangeAllocation, InType: reflect.TypeOf(&RangeAllocation{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationController, InType: reflect.TypeOf(&ReplicationController{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerCondition, InType: reflect.TypeOf(&ReplicationControllerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerList, InType: reflect.TypeOf(&ReplicationControllerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerSpec, InType: reflect.TypeOf(&ReplicationControllerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerStatus, InType: reflect.TypeOf(&ReplicationControllerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceFieldSelector, InType: reflect.TypeOf(&ResourceFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuota, InType: reflect.TypeOf(&ResourceQuota{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuotaList, InType: reflect.TypeOf(&ResourceQuotaList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuotaSpec, InType: reflect.TypeOf(&ResourceQuotaSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuotaStatus, InType: reflect.TypeOf(&ResourceQuotaStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceRequirements, InType: reflect.TypeOf(&ResourceRequirements{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SELinuxOptions, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ScaleIOVolumeSource, InType: reflect.TypeOf(&ScaleIOVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Secret, InType: reflect.TypeOf(&Secret{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretEnvSource, InType: reflect.TypeOf(&SecretEnvSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretKeySelector, InType: reflect.TypeOf(&SecretKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretList, InType: reflect.TypeOf(&SecretList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretProjection, InType: reflect.TypeOf(&SecretProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretVolumeSource, InType: reflect.TypeOf(&SecretVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecurityContext, InType: reflect.TypeOf(&SecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SerializedReference, InType: reflect.TypeOf(&SerializedReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Service, InType: reflect.TypeOf(&Service{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceAccount, InType: reflect.TypeOf(&ServiceAccount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceAccountList, InType: reflect.TypeOf(&ServiceAccountList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceList, InType: reflect.TypeOf(&ServiceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServicePort, InType: reflect.TypeOf(&ServicePort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceProxyOptions, InType: reflect.TypeOf(&ServiceProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceSpec, InType: reflect.TypeOf(&ServiceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceStatus, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_StorageOSPersistentVolumeSource, InType: reflect.TypeOf(&StorageOSPersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_StorageOSVolumeSource, InType: reflect.TypeOf(&StorageOSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Sysctl, InType: reflect.TypeOf(&Sysctl{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_TCPSocketAction, InType: reflect.TypeOf(&TCPSocketAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Taint, InType: reflect.TypeOf(&Taint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Toleration, InType: reflect.TypeOf(&Toleration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Volume, InType: reflect.TypeOf(&Volume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VolumeMount, InType: reflect.TypeOf(&VolumeMount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VolumeProjection, InType: reflect.TypeOf(&VolumeProjection{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VolumeSource, InType: reflect.TypeOf(&VolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VsphereVirtualDiskVolumeSource, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_WeightedPodAffinityTerm, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})}, + ) +} + +// DeepCopy_api_AWSElasticBlockStoreVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_AWSElasticBlockStoreVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AWSElasticBlockStoreVolumeSource) + out := out.(*AWSElasticBlockStoreVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_Affinity is an autogenerated deepcopy function. +func DeepCopy_api_Affinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Affinity) + out := out.(*Affinity) + *out = *in + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = new(NodeAffinity) + if err := DeepCopy_api_NodeAffinity(*in, *out, c); err != nil { + return err + } + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + *out = new(PodAffinity) + if err := DeepCopy_api_PodAffinity(*in, *out, c); err != nil { + return err + } + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + *out = new(PodAntiAffinity) + if err := DeepCopy_api_PodAntiAffinity(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_AttachedVolume is an autogenerated deepcopy function. +func DeepCopy_api_AttachedVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AttachedVolume) + out := out.(*AttachedVolume) + *out = *in + return nil + } +} + +// DeepCopy_api_AvoidPods is an autogenerated deepcopy function. +func DeepCopy_api_AvoidPods(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AvoidPods) + out := out.(*AvoidPods) + *out = *in + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]PreferAvoidPodsEntry, len(*in)) + for i := range *in { + if err := DeepCopy_api_PreferAvoidPodsEntry(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_AzureDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_AzureDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureDiskVolumeSource) + out := out.(*AzureDiskVolumeSource) + *out = *in + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + *out = new(AzureDataDiskCachingMode) + **out = **in + } + if in.FSType != nil { + in, out := &in.FSType, &out.FSType + *out = new(string) + **out = **in + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + *out = new(bool) + **out = **in + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(AzureDataDiskKind) + **out = **in + } + return nil + } +} + +// DeepCopy_api_AzureFileVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_AzureFileVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureFileVolumeSource) + out := out.(*AzureFileVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_Binding is an autogenerated deepcopy function. +func DeepCopy_api_Binding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Binding) + out := out.(*Binding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + return nil + } +} + +// DeepCopy_api_Capabilities is an autogenerated deepcopy function. +func DeepCopy_api_Capabilities(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Capabilities) + out := out.(*Capabilities) + *out = *in + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]Capability, len(*in)) + copy(*out, *in) + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]Capability, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_CephFSVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_CephFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CephFSVolumeSource) + out := out.(*CephFSVolumeSource) + *out = *in + if in.Monitors != nil { + in, out := &in.Monitors, &out.Monitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_CinderVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_CinderVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CinderVolumeSource) + out := out.(*CinderVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_ComponentCondition is an autogenerated deepcopy function. +func DeepCopy_api_ComponentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentCondition) + out := out.(*ComponentCondition) + *out = *in + return nil + } +} + +// DeepCopy_api_ComponentStatus is an autogenerated deepcopy function. +func DeepCopy_api_ComponentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatus) + out := out.(*ComponentStatus) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ComponentCondition, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_ComponentStatusList is an autogenerated deepcopy function. +func DeepCopy_api_ComponentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatusList) + out := out.(*ComponentStatusList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ComponentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_api_ComponentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ConfigMap is an autogenerated deepcopy function. +func DeepCopy_api_ConfigMap(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMap) + out := out.(*ConfigMap) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_api_ConfigMapEnvSource is an autogenerated deepcopy function. +func DeepCopy_api_ConfigMapEnvSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapEnvSource) + out := out.(*ConfigMapEnvSource) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_ConfigMapKeySelector is an autogenerated deepcopy function. +func DeepCopy_api_ConfigMapKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapKeySelector) + out := out.(*ConfigMapKeySelector) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_ConfigMapList is an autogenerated deepcopy function. +func DeepCopy_api_ConfigMapList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapList) + out := out.(*ConfigMapList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigMap, len(*in)) + for i := range *in { + if err := DeepCopy_api_ConfigMap(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ConfigMapProjection is an autogenerated deepcopy function. +func DeepCopy_api_ConfigMapProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapProjection) + out := out.(*ConfigMapProjection) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_api_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_ConfigMapVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_ConfigMapVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapVolumeSource) + out := out.(*ConfigMapVolumeSource) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_api_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_Container is an autogenerated deepcopy function. +func DeepCopy_api_Container(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Container) + out := out.(*Container) + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ContainerPort, len(*in)) + copy(*out, *in) + } + if in.EnvFrom != nil { + in, out := &in.EnvFrom, &out.EnvFrom + *out = make([]EnvFromSource, len(*in)) + for i := range *in { + if err := DeepCopy_api_EnvFromSource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := DeepCopy_api_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if err := DeepCopy_api_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]VolumeMount, len(*in)) + copy(*out, *in) + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(Probe) + if err := DeepCopy_api_Probe(*in, *out, c); err != nil { + return err + } + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(Probe) + if err := DeepCopy_api_Probe(*in, *out, c); err != nil { + return err + } + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + *out = new(Lifecycle) + if err := DeepCopy_api_Lifecycle(*in, *out, c); err != nil { + return err + } + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(SecurityContext) + if err := DeepCopy_api_SecurityContext(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_ContainerImage is an autogenerated deepcopy function. +func DeepCopy_api_ContainerImage(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerImage) + out := out.(*ContainerImage) + *out = *in + if in.Names != nil { + in, out := &in.Names, &out.Names + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_ContainerPort is an autogenerated deepcopy function. +func DeepCopy_api_ContainerPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerPort) + out := out.(*ContainerPort) + *out = *in + return nil + } +} + +// DeepCopy_api_ContainerState is an autogenerated deepcopy function. +func DeepCopy_api_ContainerState(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerState) + out := out.(*ContainerState) + *out = *in + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + *out = new(ContainerStateWaiting) + **out = **in + } + if in.Running != nil { + in, out := &in.Running, &out.Running + *out = new(ContainerStateRunning) + if err := DeepCopy_api_ContainerStateRunning(*in, *out, c); err != nil { + return err + } + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + *out = new(ContainerStateTerminated) + if err := DeepCopy_api_ContainerStateTerminated(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_ContainerStateRunning is an autogenerated deepcopy function. +func DeepCopy_api_ContainerStateRunning(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateRunning) + out := out.(*ContainerStateRunning) + *out = *in + out.StartedAt = in.StartedAt.DeepCopy() + return nil + } +} + +// DeepCopy_api_ContainerStateTerminated is an autogenerated deepcopy function. +func DeepCopy_api_ContainerStateTerminated(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateTerminated) + out := out.(*ContainerStateTerminated) + *out = *in + out.StartedAt = in.StartedAt.DeepCopy() + out.FinishedAt = in.FinishedAt.DeepCopy() + return nil + } +} + +// DeepCopy_api_ContainerStateWaiting is an autogenerated deepcopy function. +func DeepCopy_api_ContainerStateWaiting(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateWaiting) + out := out.(*ContainerStateWaiting) + *out = *in + return nil + } +} + +// DeepCopy_api_ContainerStatus is an autogenerated deepcopy function. +func DeepCopy_api_ContainerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStatus) + out := out.(*ContainerStatus) + *out = *in + if err := DeepCopy_api_ContainerState(&in.State, &out.State, c); err != nil { + return err + } + if err := DeepCopy_api_ContainerState(&in.LastTerminationState, &out.LastTerminationState, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_DaemonEndpoint is an autogenerated deepcopy function. +func DeepCopy_api_DaemonEndpoint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonEndpoint) + out := out.(*DaemonEndpoint) + *out = *in + return nil + } +} + +// DeepCopy_api_DeleteOptions is an autogenerated deepcopy function. +func DeepCopy_api_DeleteOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeleteOptions) + out := out.(*DeleteOptions) + *out = *in + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + *out = new(Preconditions) + if err := DeepCopy_api_Preconditions(*in, *out, c); err != nil { + return err + } + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + *out = new(bool) + **out = **in + } + if in.PropagationPolicy != nil { + in, out := &in.PropagationPolicy, &out.PropagationPolicy + *out = new(DeletionPropagation) + **out = **in + } + return nil + } +} + +// DeepCopy_api_DownwardAPIProjection is an autogenerated deepcopy function. +func DeepCopy_api_DownwardAPIProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIProjection) + out := out.(*DownwardAPIProjection) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := DeepCopy_api_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_DownwardAPIVolumeFile is an autogenerated deepcopy function. +func DeepCopy_api_DownwardAPIVolumeFile(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeFile) + out := out.(*DownwardAPIVolumeFile) + *out = *in + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_api_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_api_DownwardAPIVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_DownwardAPIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeSource) + out := out.(*DownwardAPIVolumeSource) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := DeepCopy_api_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_api_EmptyDirVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_EmptyDirVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EmptyDirVolumeSource) + out := out.(*EmptyDirVolumeSource) + *out = *in + out.SizeLimit = in.SizeLimit.DeepCopy() + return nil + } +} + +// DeepCopy_api_EndpointAddress is an autogenerated deepcopy function. +func DeepCopy_api_EndpointAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointAddress) + out := out.(*EndpointAddress) + *out = *in + if in.NodeName != nil { + in, out := &in.NodeName, &out.NodeName + *out = new(string) + **out = **in + } + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + *out = new(ObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_EndpointPort is an autogenerated deepcopy function. +func DeepCopy_api_EndpointPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointPort) + out := out.(*EndpointPort) + *out = *in + return nil + } +} + +// DeepCopy_api_EndpointSubset is an autogenerated deepcopy function. +func DeepCopy_api_EndpointSubset(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointSubset) + out := out.(*EndpointSubset) + *out = *in + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_api_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_api_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]EndpointPort, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_Endpoints is an autogenerated deepcopy function. +func DeepCopy_api_Endpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Endpoints) + out := out.(*Endpoints) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]EndpointSubset, len(*in)) + for i := range *in { + if err := DeepCopy_api_EndpointSubset(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_EndpointsList is an autogenerated deepcopy function. +func DeepCopy_api_EndpointsList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointsList) + out := out.(*EndpointsList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Endpoints, len(*in)) + for i := range *in { + if err := DeepCopy_api_Endpoints(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_EnvFromSource is an autogenerated deepcopy function. +func DeepCopy_api_EnvFromSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvFromSource) + out := out.(*EnvFromSource) + *out = *in + if in.ConfigMapRef != nil { + in, out := &in.ConfigMapRef, &out.ConfigMapRef + *out = new(ConfigMapEnvSource) + if err := DeepCopy_api_ConfigMapEnvSource(*in, *out, c); err != nil { + return err + } + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(SecretEnvSource) + if err := DeepCopy_api_SecretEnvSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_EnvVar is an autogenerated deepcopy function. +func DeepCopy_api_EnvVar(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVar) + out := out.(*EnvVar) + *out = *in + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + *out = new(EnvVarSource) + if err := DeepCopy_api_EnvVarSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_EnvVarSource is an autogenerated deepcopy function. +func DeepCopy_api_EnvVarSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVarSource) + out := out.(*EnvVarSource) + *out = *in + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_api_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + *out = new(ConfigMapKeySelector) + if err := DeepCopy_api_ConfigMapKeySelector(*in, *out, c); err != nil { + return err + } + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + *out = new(SecretKeySelector) + if err := DeepCopy_api_SecretKeySelector(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_Event is an autogenerated deepcopy function. +func DeepCopy_api_Event(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Event) + out := out.(*Event) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + out.FirstTimestamp = in.FirstTimestamp.DeepCopy() + out.LastTimestamp = in.LastTimestamp.DeepCopy() + return nil + } +} + +// DeepCopy_api_EventList is an autogenerated deepcopy function. +func DeepCopy_api_EventList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventList) + out := out.(*EventList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Event, len(*in)) + for i := range *in { + if err := DeepCopy_api_Event(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_EventSource is an autogenerated deepcopy function. +func DeepCopy_api_EventSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventSource) + out := out.(*EventSource) + *out = *in + return nil + } +} + +// DeepCopy_api_ExecAction is an autogenerated deepcopy function. +func DeepCopy_api_ExecAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExecAction) + out := out.(*ExecAction) + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_FCVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_FCVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FCVolumeSource) + out := out.(*FCVolumeSource) + *out = *in + if in.TargetWWNs != nil { + in, out := &in.TargetWWNs, &out.TargetWWNs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Lun != nil { + in, out := &in.Lun, &out.Lun + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_api_FlexVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_FlexVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlexVolumeSource) + out := out.(*FlexVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_api_FlockerVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_FlockerVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlockerVolumeSource) + out := out.(*FlockerVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_GCEPersistentDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_GCEPersistentDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GCEPersistentDiskVolumeSource) + out := out.(*GCEPersistentDiskVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_GitRepoVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_GitRepoVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GitRepoVolumeSource) + out := out.(*GitRepoVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_GlusterfsVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_GlusterfsVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GlusterfsVolumeSource) + out := out.(*GlusterfsVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_HTTPGetAction is an autogenerated deepcopy function. +func DeepCopy_api_HTTPGetAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPGetAction) + out := out.(*HTTPGetAction) + *out = *in + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]HTTPHeader, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_HTTPHeader is an autogenerated deepcopy function. +func DeepCopy_api_HTTPHeader(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPHeader) + out := out.(*HTTPHeader) + *out = *in + return nil + } +} + +// DeepCopy_api_Handler is an autogenerated deepcopy function. +func DeepCopy_api_Handler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Handler) + out := out.(*Handler) + *out = *in + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + *out = new(ExecAction) + if err := DeepCopy_api_ExecAction(*in, *out, c); err != nil { + return err + } + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + *out = new(HTTPGetAction) + if err := DeepCopy_api_HTTPGetAction(*in, *out, c); err != nil { + return err + } + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + *out = new(TCPSocketAction) + **out = **in + } + return nil + } +} + +// DeepCopy_api_HostAlias is an autogenerated deepcopy function. +func DeepCopy_api_HostAlias(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostAlias) + out := out.(*HostAlias) + *out = *in + if in.Hostnames != nil { + in, out := &in.Hostnames, &out.Hostnames + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_HostPathVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_HostPathVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPathVolumeSource) + out := out.(*HostPathVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_ISCSIVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_ISCSIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ISCSIVolumeSource) + out := out.(*ISCSIVolumeSource) + *out = *in + if in.Portals != nil { + in, out := &in.Portals, &out.Portals + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_KeyToPath is an autogenerated deepcopy function. +func DeepCopy_api_KeyToPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*KeyToPath) + out := out.(*KeyToPath) + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_api_Lifecycle is an autogenerated deepcopy function. +func DeepCopy_api_Lifecycle(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Lifecycle) + out := out.(*Lifecycle) + *out = *in + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + *out = new(Handler) + if err := DeepCopy_api_Handler(*in, *out, c); err != nil { + return err + } + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + *out = new(Handler) + if err := DeepCopy_api_Handler(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_LimitRange is an autogenerated deepcopy function. +func DeepCopy_api_LimitRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRange) + out := out.(*LimitRange) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_LimitRangeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_LimitRangeItem is an autogenerated deepcopy function. +func DeepCopy_api_LimitRangeItem(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeItem) + out := out.(*LimitRangeItem) + *out = *in + if in.Max != nil { + in, out := &in.Max, &out.Max + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Min != nil { + in, out := &in.Min, &out.Min + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.DefaultRequest != nil { + in, out := &in.DefaultRequest, &out.DefaultRequest + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.MaxLimitRequestRatio != nil { + in, out := &in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_api_LimitRangeList is an autogenerated deepcopy function. +func DeepCopy_api_LimitRangeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeList) + out := out.(*LimitRangeList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]LimitRange, len(*in)) + for i := range *in { + if err := DeepCopy_api_LimitRange(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_LimitRangeSpec is an autogenerated deepcopy function. +func DeepCopy_api_LimitRangeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeSpec) + out := out.(*LimitRangeSpec) + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]LimitRangeItem, len(*in)) + for i := range *in { + if err := DeepCopy_api_LimitRangeItem(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_List is an autogenerated deepcopy function. +func DeepCopy_api_List(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*List) + out := out.(*List) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.Object, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*runtime.Object) + } + } + } + return nil + } +} + +// DeepCopy_api_ListOptions is an autogenerated deepcopy function. +func DeepCopy_api_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListOptions) + out := out.(*ListOptions) + *out = *in + // in.LabelSelector is kind 'Interface' + if in.LabelSelector != nil { + if newVal, err := c.DeepCopy(&in.LabelSelector); err != nil { + return err + } else { + out.LabelSelector = *newVal.(*labels.Selector) + } + } + // in.FieldSelector is kind 'Interface' + if in.FieldSelector != nil { + if newVal, err := c.DeepCopy(&in.FieldSelector); err != nil { + return err + } else { + out.FieldSelector = *newVal.(*fields.Selector) + } + } + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_api_LoadBalancerIngress is an autogenerated deepcopy function. +func DeepCopy_api_LoadBalancerIngress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerIngress) + out := out.(*LoadBalancerIngress) + *out = *in + return nil + } +} + +// DeepCopy_api_LoadBalancerStatus is an autogenerated deepcopy function. +func DeepCopy_api_LoadBalancerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerStatus) + out := out.(*LoadBalancerStatus) + *out = *in + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]LoadBalancerIngress, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_LocalObjectReference is an autogenerated deepcopy function. +func DeepCopy_api_LocalObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalObjectReference) + out := out.(*LocalObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_api_LocalVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_LocalVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalVolumeSource) + out := out.(*LocalVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_NFSVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_NFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NFSVolumeSource) + out := out.(*NFSVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_Namespace is an autogenerated deepcopy function. +func DeepCopy_api_Namespace(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Namespace) + out := out.(*Namespace) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_NamespaceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_NamespaceList is an autogenerated deepcopy function. +func DeepCopy_api_NamespaceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceList) + out := out.(*NamespaceList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Namespace, len(*in)) + for i := range *in { + if err := DeepCopy_api_Namespace(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_NamespaceSpec is an autogenerated deepcopy function. +func DeepCopy_api_NamespaceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceSpec) + out := out.(*NamespaceSpec) + *out = *in + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]FinalizerName, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_NamespaceStatus is an autogenerated deepcopy function. +func DeepCopy_api_NamespaceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceStatus) + out := out.(*NamespaceStatus) + *out = *in + return nil + } +} + +// DeepCopy_api_Node is an autogenerated deepcopy function. +func DeepCopy_api_Node(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Node) + out := out.(*Node) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_NodeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_NodeStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_NodeAddress is an autogenerated deepcopy function. +func DeepCopy_api_NodeAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAddress) + out := out.(*NodeAddress) + *out = *in + return nil + } +} + +// DeepCopy_api_NodeAffinity is an autogenerated deepcopy function. +func DeepCopy_api_NodeAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAffinity) + out := out.(*NodeAffinity) + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = new(NodeSelector) + if err := DeepCopy_api_NodeSelector(*in, *out, c); err != nil { + return err + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]PreferredSchedulingTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_PreferredSchedulingTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_NodeCondition is an autogenerated deepcopy function. +func DeepCopy_api_NodeCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeCondition) + out := out.(*NodeCondition) + *out = *in + out.LastHeartbeatTime = in.LastHeartbeatTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_api_NodeDaemonEndpoints is an autogenerated deepcopy function. +func DeepCopy_api_NodeDaemonEndpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeDaemonEndpoints) + out := out.(*NodeDaemonEndpoints) + *out = *in + return nil + } +} + +// DeepCopy_api_NodeList is an autogenerated deepcopy function. +func DeepCopy_api_NodeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeList) + out := out.(*NodeList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Node, len(*in)) + for i := range *in { + if err := DeepCopy_api_Node(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_NodeProxyOptions is an autogenerated deepcopy function. +func DeepCopy_api_NodeProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeProxyOptions) + out := out.(*NodeProxyOptions) + *out = *in + return nil + } +} + +// DeepCopy_api_NodeResources is an autogenerated deepcopy function. +func DeepCopy_api_NodeResources(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeResources) + out := out.(*NodeResources) + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_api_NodeSelector is an autogenerated deepcopy function. +func DeepCopy_api_NodeSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelector) + out := out.(*NodeSelector) + *out = *in + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]NodeSelectorTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_NodeSelectorTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_NodeSelectorRequirement is an autogenerated deepcopy function. +func DeepCopy_api_NodeSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorRequirement) + out := out.(*NodeSelectorRequirement) + *out = *in + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_NodeSelectorTerm is an autogenerated deepcopy function. +func DeepCopy_api_NodeSelectorTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorTerm) + out := out.(*NodeSelectorTerm) + *out = *in + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]NodeSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_api_NodeSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_NodeSpec is an autogenerated deepcopy function. +func DeepCopy_api_NodeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSpec) + out := out.(*NodeSpec) + *out = *in + if in.Taints != nil { + in, out := &in.Taints, &out.Taints + *out = make([]Taint, len(*in)) + for i := range *in { + if err := DeepCopy_api_Taint(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_NodeStatus is an autogenerated deepcopy function. +func DeepCopy_api_NodeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeStatus) + out := out.(*NodeStatus) + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Allocatable != nil { + in, out := &in.Allocatable, &out.Allocatable + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]NodeCondition, len(*in)) + for i := range *in { + if err := DeepCopy_api_NodeCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]NodeAddress, len(*in)) + copy(*out, *in) + } + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make([]ContainerImage, len(*in)) + for i := range *in { + if err := DeepCopy_api_ContainerImage(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]UniqueVolumeName, len(*in)) + copy(*out, *in) + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]AttachedVolume, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_NodeSystemInfo is an autogenerated deepcopy function. +func DeepCopy_api_NodeSystemInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSystemInfo) + out := out.(*NodeSystemInfo) + *out = *in + return nil + } +} + +// DeepCopy_api_ObjectFieldSelector is an autogenerated deepcopy function. +func DeepCopy_api_ObjectFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectFieldSelector) + out := out.(*ObjectFieldSelector) + *out = *in + return nil + } +} + +// DeepCopy_api_ObjectMeta is an autogenerated deepcopy function. +func DeepCopy_api_ObjectMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMeta) + out := out.(*ObjectMeta) + *out = *in + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]v1.OwnerReference, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*v1.OwnerReference) + } + } + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.Initializers) + } + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_ObjectReference is an autogenerated deepcopy function. +func DeepCopy_api_ObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectReference) + out := out.(*ObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_api_PersistentVolume is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolume) + out := out.(*PersistentVolume) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_PersistentVolumeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeClaim is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeClaim(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaim) + out := out.(*PersistentVolumeClaim) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_PersistentVolumeClaimStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeClaimList is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeClaimList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimList) + out := out.(*PersistentVolumeClaimList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := DeepCopy_api_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeClaimSpec is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeClaimSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimSpec) + out := out.(*PersistentVolumeClaimSpec) + *out = *in + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := DeepCopy_api_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + if in.StorageClassName != nil { + in, out := &in.StorageClassName, &out.StorageClassName + *out = new(string) + **out = **in + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeClaimStatus is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeClaimStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimStatus) + out := out.(*PersistentVolumeClaimStatus) + *out = *in + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeClaimVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeClaimVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimVolumeSource) + out := out.(*PersistentVolumeClaimVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_PersistentVolumeList is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeList) + out := out.(*PersistentVolumeList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolume, len(*in)) + for i := range *in { + if err := DeepCopy_api_PersistentVolume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSource) + out := out.(*PersistentVolumeSource) + *out = *in + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_api_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + if err := DeepCopy_api_ISCSIVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_api_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_api_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_api_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_api_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.PhotonPersistentDisk != nil { + in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } + if in.PortworxVolume != nil { + in, out := &in.PortworxVolume, &out.PortworxVolume + *out = new(PortworxVolumeSource) + **out = **in + } + if in.ScaleIO != nil { + in, out := &in.ScaleIO, &out.ScaleIO + *out = new(ScaleIOVolumeSource) + if err := DeepCopy_api_ScaleIOVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Local != nil { + in, out := &in.Local, &out.Local + *out = new(LocalVolumeSource) + **out = **in + } + if in.StorageOS != nil { + in, out := &in.StorageOS, &out.StorageOS + *out = new(StorageOSPersistentVolumeSource) + if err := DeepCopy_api_StorageOSPersistentVolumeSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeSpec is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSpec) + out := out.(*PersistentVolumeSpec) + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if err := DeepCopy_api_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, c); err != nil { + return err + } + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + copy(*out, *in) + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + *out = new(ObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_PersistentVolumeStatus is an autogenerated deepcopy function. +func DeepCopy_api_PersistentVolumeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeStatus) + out := out.(*PersistentVolumeStatus) + *out = *in + return nil + } +} + +// DeepCopy_api_PhotonPersistentDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_PhotonPersistentDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PhotonPersistentDiskVolumeSource) + out := out.(*PhotonPersistentDiskVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_Pod is an autogenerated deepcopy function. +func DeepCopy_api_Pod(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Pod) + out := out.(*Pod) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_PodAffinity is an autogenerated deepcopy function. +func DeepCopy_api_PodAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinity) + out := out.(*PodAffinity) + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PodAffinityTerm is an autogenerated deepcopy function. +func DeepCopy_api_PodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinityTerm) + out := out.(*PodAffinityTerm) + *out = *in + if in.LabelSelector != nil { + in, out := &in.LabelSelector, &out.LabelSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_PodAntiAffinity is an autogenerated deepcopy function. +func DeepCopy_api_PodAntiAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAntiAffinity) + out := out.(*PodAntiAffinity) + *out = *in + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PodAttachOptions is an autogenerated deepcopy function. +func DeepCopy_api_PodAttachOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAttachOptions) + out := out.(*PodAttachOptions) + *out = *in + return nil + } +} + +// DeepCopy_api_PodCondition is an autogenerated deepcopy function. +func DeepCopy_api_PodCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodCondition) + out := out.(*PodCondition) + *out = *in + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_api_PodExecOptions is an autogenerated deepcopy function. +func DeepCopy_api_PodExecOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodExecOptions) + out := out.(*PodExecOptions) + *out = *in + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_PodList is an autogenerated deepcopy function. +func DeepCopy_api_PodList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodList) + out := out.(*PodList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pod, len(*in)) + for i := range *in { + if err := DeepCopy_api_Pod(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PodLogOptions is an autogenerated deepcopy function. +func DeepCopy_api_PodLogOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodLogOptions) + out := out.(*PodLogOptions) + *out = *in + if in.SinceSeconds != nil { + in, out := &in.SinceSeconds, &out.SinceSeconds + *out = new(int64) + **out = **in + } + if in.SinceTime != nil { + in, out := &in.SinceTime, &out.SinceTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + if in.TailLines != nil { + in, out := &in.TailLines, &out.TailLines + *out = new(int64) + **out = **in + } + if in.LimitBytes != nil { + in, out := &in.LimitBytes, &out.LimitBytes + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_api_PodPortForwardOptions is an autogenerated deepcopy function. +func DeepCopy_api_PodPortForwardOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPortForwardOptions) + out := out.(*PodPortForwardOptions) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]int32, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_PodProxyOptions is an autogenerated deepcopy function. +func DeepCopy_api_PodProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodProxyOptions) + out := out.(*PodProxyOptions) + *out = *in + return nil + } +} + +// DeepCopy_api_PodSecurityContext is an autogenerated deepcopy function. +func DeepCopy_api_PodSecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityContext) + out := out.(*PodSecurityContext) + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } + if in.FSGroup != nil { + in, out := &in.FSGroup, &out.FSGroup + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_api_PodSignature is an autogenerated deepcopy function. +func DeepCopy_api_PodSignature(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSignature) + out := out.(*PodSignature) + *out = *in + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.OwnerReference) + } + } + return nil + } +} + +// DeepCopy_api_PodSpec is an autogenerated deepcopy function. +func DeepCopy_api_PodSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSpec) + out := out.(*PodSpec) + *out = *in + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + if err := DeepCopy_api_Volume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_api_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_api_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + *out = new(bool) + **out = **in + } + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(PodSecurityContext) + if err := DeepCopy_api_PodSecurityContext(*in, *out, c); err != nil { + return err + } + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.Affinity != nil { + in, out := &in.Affinity, &out.Affinity + *out = new(Affinity) + if err := DeepCopy_api_Affinity(*in, *out, c); err != nil { + return err + } + } + if in.Tolerations != nil { + in, out := &in.Tolerations, &out.Tolerations + *out = make([]Toleration, len(*in)) + for i := range *in { + if err := DeepCopy_api_Toleration(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.HostAliases != nil { + in, out := &in.HostAliases, &out.HostAliases + *out = make([]HostAlias, len(*in)) + for i := range *in { + if err := DeepCopy_api_HostAlias(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PodStatus is an autogenerated deepcopy function. +func DeepCopy_api_PodStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatus) + out := out.(*PodStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PodCondition, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_api_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_api_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PodStatusResult is an autogenerated deepcopy function. +func DeepCopy_api_PodStatusResult(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatusResult) + out := out.(*PodStatusResult) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_PodTemplate is an autogenerated deepcopy function. +func DeepCopy_api_PodTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplate) + out := out.(*PodTemplate) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_PodTemplateList is an autogenerated deepcopy function. +func DeepCopy_api_PodTemplateList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateList) + out := out.(*PodTemplateList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodTemplate, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodTemplate(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_PodTemplateSpec is an autogenerated deepcopy function. +func DeepCopy_api_PodTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateSpec) + out := out.(*PodTemplateSpec) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_PortworxVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_PortworxVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PortworxVolumeSource) + out := out.(*PortworxVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_Preconditions is an autogenerated deepcopy function. +func DeepCopy_api_Preconditions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Preconditions) + out := out.(*Preconditions) + *out = *in + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(types.UID) + **out = **in + } + return nil + } +} + +// DeepCopy_api_PreferAvoidPodsEntry is an autogenerated deepcopy function. +func DeepCopy_api_PreferAvoidPodsEntry(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferAvoidPodsEntry) + out := out.(*PreferAvoidPodsEntry) + *out = *in + if err := DeepCopy_api_PodSignature(&in.PodSignature, &out.PodSignature, c); err != nil { + return err + } + out.EvictionTime = in.EvictionTime.DeepCopy() + return nil + } +} + +// DeepCopy_api_PreferredSchedulingTerm is an autogenerated deepcopy function. +func DeepCopy_api_PreferredSchedulingTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferredSchedulingTerm) + out := out.(*PreferredSchedulingTerm) + *out = *in + if err := DeepCopy_api_NodeSelectorTerm(&in.Preference, &out.Preference, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_Probe is an autogenerated deepcopy function. +func DeepCopy_api_Probe(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Probe) + out := out.(*Probe) + *out = *in + if err := DeepCopy_api_Handler(&in.Handler, &out.Handler, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_ProjectedVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_ProjectedVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ProjectedVolumeSource) + out := out.(*ProjectedVolumeSource) + *out = *in + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]VolumeProjection, len(*in)) + for i := range *in { + if err := DeepCopy_api_VolumeProjection(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_api_QuobyteVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_QuobyteVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*QuobyteVolumeSource) + out := out.(*QuobyteVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_RBDVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_RBDVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RBDVolumeSource) + out := out.(*RBDVolumeSource) + *out = *in + if in.CephMonitors != nil { + in, out := &in.CephMonitors, &out.CephMonitors + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_RangeAllocation is an autogenerated deepcopy function. +func DeepCopy_api_RangeAllocation(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RangeAllocation) + out := out.(*RangeAllocation) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_ReplicationController is an autogenerated deepcopy function. +func DeepCopy_api_ReplicationController(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationController) + out := out.(*ReplicationController) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_ReplicationControllerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_ReplicationControllerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_ReplicationControllerCondition is an autogenerated deepcopy function. +func DeepCopy_api_ReplicationControllerCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerCondition) + out := out.(*ReplicationControllerCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_api_ReplicationControllerList is an autogenerated deepcopy function. +func DeepCopy_api_ReplicationControllerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerList) + out := out.(*ReplicationControllerList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicationController, len(*in)) + for i := range *in { + if err := DeepCopy_api_ReplicationController(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ReplicationControllerSpec is an autogenerated deepcopy function. +func DeepCopy_api_ReplicationControllerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerSpec) + out := out.(*ReplicationControllerSpec) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(PodTemplateSpec) + if err := DeepCopy_api_PodTemplateSpec(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_ReplicationControllerStatus is an autogenerated deepcopy function. +func DeepCopy_api_ReplicationControllerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerStatus) + out := out.(*ReplicationControllerStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicationControllerCondition, len(*in)) + for i := range *in { + if err := DeepCopy_api_ReplicationControllerCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ResourceFieldSelector is an autogenerated deepcopy function. +func DeepCopy_api_ResourceFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceFieldSelector) + out := out.(*ResourceFieldSelector) + *out = *in + out.Divisor = in.Divisor.DeepCopy() + return nil + } +} + +// DeepCopy_api_ResourceQuota is an autogenerated deepcopy function. +func DeepCopy_api_ResourceQuota(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuota) + out := out.(*ResourceQuota) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_ResourceQuotaSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_ResourceQuotaStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_ResourceQuotaList is an autogenerated deepcopy function. +func DeepCopy_api_ResourceQuotaList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaList) + out := out.(*ResourceQuotaList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ResourceQuota, len(*in)) + for i := range *in { + if err := DeepCopy_api_ResourceQuota(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ResourceQuotaSpec is an autogenerated deepcopy function. +func DeepCopy_api_ResourceQuotaSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaSpec) + out := out.(*ResourceQuotaSpec) + *out = *in + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]ResourceQuotaScope, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_ResourceQuotaStatus is an autogenerated deepcopy function. +func DeepCopy_api_ResourceQuotaStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaStatus) + out := out.(*ResourceQuotaStatus) + *out = *in + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Used != nil { + in, out := &in.Used, &out.Used + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_api_ResourceRequirements is an autogenerated deepcopy function. +func DeepCopy_api_ResourceRequirements(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceRequirements) + out := out.(*ResourceRequirements) + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} + +// DeepCopy_api_SELinuxOptions is an autogenerated deepcopy function. +func DeepCopy_api_SELinuxOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxOptions) + out := out.(*SELinuxOptions) + *out = *in + return nil + } +} + +// DeepCopy_api_ScaleIOVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_ScaleIOVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleIOVolumeSource) + out := out.(*ScaleIOVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_Secret is an autogenerated deepcopy function. +func DeepCopy_api_Secret(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Secret) + out := out.(*Secret) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string][]byte) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*[]byte) + } + } + } + return nil + } +} + +// DeepCopy_api_SecretEnvSource is an autogenerated deepcopy function. +func DeepCopy_api_SecretEnvSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretEnvSource) + out := out.(*SecretEnvSource) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_SecretKeySelector is an autogenerated deepcopy function. +func DeepCopy_api_SecretKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretKeySelector) + out := out.(*SecretKeySelector) + *out = *in + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_SecretList is an autogenerated deepcopy function. +func DeepCopy_api_SecretList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretList) + out := out.(*SecretList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Secret, len(*in)) + for i := range *in { + if err := DeepCopy_api_Secret(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_SecretProjection is an autogenerated deepcopy function. +func DeepCopy_api_SecretProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretProjection) + out := out.(*SecretProjection) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_api_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_SecretVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_SecretVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretVolumeSource) + out := out.(*SecretVolumeSource) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_api_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } + if in.Optional != nil { + in, out := &in.Optional, &out.Optional + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_SecurityContext is an autogenerated deepcopy function. +func DeepCopy_api_SecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecurityContext) + out := out.(*SecurityContext) + *out = *in + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = new(Capabilities) + if err := DeepCopy_api_Capabilities(*in, *out, c); err != nil { + return err + } + } + if in.Privileged != nil { + in, out := &in.Privileged, &out.Privileged + *out = new(bool) + **out = **in + } + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } + if in.ReadOnlyRootFilesystem != nil { + in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_SerializedReference is an autogenerated deepcopy function. +func DeepCopy_api_SerializedReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SerializedReference) + out := out.(*SerializedReference) + *out = *in + return nil + } +} + +// DeepCopy_api_Service is an autogenerated deepcopy function. +func DeepCopy_api_Service(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Service) + out := out.(*Service) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_api_ServiceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_ServiceStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_ServiceAccount is an autogenerated deepcopy function. +func DeepCopy_api_ServiceAccount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccount) + out := out.(*ServiceAccount) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]ObjectReference, len(*in)) + copy(*out, *in) + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + copy(*out, *in) + } + if in.AutomountServiceAccountToken != nil { + in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken + *out = new(bool) + **out = **in + } + return nil + } +} + +// DeepCopy_api_ServiceAccountList is an autogenerated deepcopy function. +func DeepCopy_api_ServiceAccountList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccountList) + out := out.(*ServiceAccountList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccount, len(*in)) + for i := range *in { + if err := DeepCopy_api_ServiceAccount(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ServiceList is an autogenerated deepcopy function. +func DeepCopy_api_ServiceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceList) + out := out.(*ServiceList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Service, len(*in)) + for i := range *in { + if err := DeepCopy_api_Service(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_api_ServicePort is an autogenerated deepcopy function. +func DeepCopy_api_ServicePort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServicePort) + out := out.(*ServicePort) + *out = *in + return nil + } +} + +// DeepCopy_api_ServiceProxyOptions is an autogenerated deepcopy function. +func DeepCopy_api_ServiceProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceProxyOptions) + out := out.(*ServiceProxyOptions) + *out = *in + return nil + } +} + +// DeepCopy_api_ServiceSpec is an autogenerated deepcopy function. +func DeepCopy_api_ServiceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceSpec) + out := out.(*ServiceSpec) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ServicePort, len(*in)) + copy(*out, *in) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExternalIPs != nil { + in, out := &in.ExternalIPs, &out.ExternalIPs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.LoadBalancerSourceRanges != nil { + in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_api_ServiceStatus is an autogenerated deepcopy function. +func DeepCopy_api_ServiceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceStatus) + out := out.(*ServiceStatus) + *out = *in + if err := DeepCopy_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_StorageOSPersistentVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_StorageOSPersistentVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageOSPersistentVolumeSource) + out := out.(*StorageOSPersistentVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(ObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_StorageOSVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_StorageOSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageOSVolumeSource) + out := out.(*StorageOSVolumeSource) + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } + return nil + } +} + +// DeepCopy_api_Sysctl is an autogenerated deepcopy function. +func DeepCopy_api_Sysctl(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Sysctl) + out := out.(*Sysctl) + *out = *in + return nil + } +} + +// DeepCopy_api_TCPSocketAction is an autogenerated deepcopy function. +func DeepCopy_api_TCPSocketAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TCPSocketAction) + out := out.(*TCPSocketAction) + *out = *in + return nil + } +} + +// DeepCopy_api_Taint is an autogenerated deepcopy function. +func DeepCopy_api_Taint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Taint) + out := out.(*Taint) + *out = *in + out.TimeAdded = in.TimeAdded.DeepCopy() + return nil + } +} + +// DeepCopy_api_Toleration is an autogenerated deepcopy function. +func DeepCopy_api_Toleration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Toleration) + out := out.(*Toleration) + *out = *in + if in.TolerationSeconds != nil { + in, out := &in.TolerationSeconds, &out.TolerationSeconds + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_api_Volume is an autogenerated deepcopy function. +func DeepCopy_api_Volume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Volume) + out := out.(*Volume) + *out = *in + if err := DeepCopy_api_VolumeSource(&in.VolumeSource, &out.VolumeSource, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_api_VolumeMount is an autogenerated deepcopy function. +func DeepCopy_api_VolumeMount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeMount) + out := out.(*VolumeMount) + *out = *in + return nil + } +} + +// DeepCopy_api_VolumeProjection is an autogenerated deepcopy function. +func DeepCopy_api_VolumeProjection(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeProjection) + out := out.(*VolumeProjection) + *out = *in + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretProjection) + if err := DeepCopy_api_SecretProjection(*in, *out, c); err != nil { + return err + } + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIProjection) + if err := DeepCopy_api_DownwardAPIProjection(*in, *out, c); err != nil { + return err + } + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapProjection) + if err := DeepCopy_api_ConfigMapProjection(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_VolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_VolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeSource) + out := out.(*VolumeSource) + *out = *in + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + *out = new(EmptyDirVolumeSource) + if err := DeepCopy_api_EmptyDirVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + *out = new(GitRepoVolumeSource) + **out = **in + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretVolumeSource) + if err := DeepCopy_api_SecretVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + if err := DeepCopy_api_ISCSIVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_api_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_api_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_api_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIVolumeSource) + if err := DeepCopy_api_DownwardAPIVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_api_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapVolumeSource) + if err := DeepCopy_api_ConfigMapVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_api_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.PhotonPersistentDisk != nil { + in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } + if in.Projected != nil { + in, out := &in.Projected, &out.Projected + *out = new(ProjectedVolumeSource) + if err := DeepCopy_api_ProjectedVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.PortworxVolume != nil { + in, out := &in.PortworxVolume, &out.PortworxVolume + *out = new(PortworxVolumeSource) + **out = **in + } + if in.ScaleIO != nil { + in, out := &in.ScaleIO, &out.ScaleIO + *out = new(ScaleIOVolumeSource) + if err := DeepCopy_api_ScaleIOVolumeSource(*in, *out, c); err != nil { + return err + } + } + if in.StorageOS != nil { + in, out := &in.StorageOS, &out.StorageOS + *out = new(StorageOSVolumeSource) + if err := DeepCopy_api_StorageOSVolumeSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_api_VsphereVirtualDiskVolumeSource is an autogenerated deepcopy function. +func DeepCopy_api_VsphereVirtualDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VsphereVirtualDiskVolumeSource) + out := out.(*VsphereVirtualDiskVolumeSource) + *out = *in + return nil + } +} + +// DeepCopy_api_WeightedPodAffinityTerm is an autogenerated deepcopy function. +func DeepCopy_api_WeightedPodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*WeightedPodAffinityTerm) + out := out.(*WeightedPodAffinityTerm) + *out = *in + if err := DeepCopy_api_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, c); err != nil { + return err + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/BUILD b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/BUILD new file mode 100644 index 000000000..6e2604388 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/doc.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/doc.go new file mode 100644 index 000000000..492dad7b5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package admissionregistration is the internal version of the API. +// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration +// InitializerConfiguration and ExternalAdmissionHookConfiguration is for the +// new dynamic admission controller configuration. +// +groupName=admissionregistration.k8s.io +package admissionregistration diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/register.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/register.go new file mode 100644 index 000000000..1fe291a8f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package admissionregistration + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "admissionregistration.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns back a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns back a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &InitializerConfiguration{}, + &InitializerConfigurationList{}, + &ExternalAdmissionHookConfiguration{}, + &ExternalAdmissionHookConfigurationList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/types.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/types.go new file mode 100644 index 000000000..27b720729 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/types.go @@ -0,0 +1,216 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package admissionregistration + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// InitializerConfiguration describes the configuration of initializers. +type InitializerConfiguration struct { + metav1.TypeMeta + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta + + // Initializers is a list of resources and their default initializers + // Order-sensitive. + // When merging multiple InitializerConfigurations, we sort the initializers + // from different InitializerConfigurations by the name of the + // InitializerConfigurations; the order of the initializers from the same + // InitializerConfiguration is preserved. + // +optional + Initializers []Initializer +} + +// InitializerConfigurationList is a list of InitializerConfiguration. +type InitializerConfigurationList struct { + metav1.TypeMeta + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta + + // List of InitializerConfiguration. + Items []InitializerConfiguration +} + +// Initializer describes the name and the failure policy of an initializer, and +// what resources it applies to. +type Initializer struct { + // Name is the identifier of the initializer. It will be added to the + // object that needs to be initialized. + // Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where + // "alwayspullimages" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required + Name string + + // Rules describes what resources/subresources the initializer cares about. + // The initializer cares about an operation if it matches _any_ Rule. + // Rule.Resources must not include subresources. + Rules []Rule + + // FailurePolicy defines what happens if the responsible initializer controller + // fails to takes action. Allowed values are Ignore, or Fail. If "Ignore" is + // set, initializer is removed from the initializers list of an object if + // the timeout is reached; If "Fail" is set, admissionregistration returns timeout error + // if the timeout is reached. + FailurePolicy *FailurePolicyType +} + +// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended +// to make sure that all the tuple expansions are valid. +type Rule struct { + // APIGroups is the API groups the resources belong to. '*' is all groups. + // If '*' is present, the length of the slice must be one. + // Required. + APIGroups []string + + // APIVersions is the API versions the resources belong to. '*' is all versions. + // If '*' is present, the length of the slice must be one. + // Required. + APIVersions []string + + // Resources is a list of resources this rule applies to. + // + // For example: + // 'pods' means pods. + // 'pods/log' means the log subresource of pods. + // '*' means all resources, but not subresources. + // 'pods/*' means all subresources of pods. + // '*/scale' means all scale subresources. + // '*/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not + // overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. + // Required. + Resources []string +} + +type FailurePolicyType string + +const ( + // Ignore means the initilizer is removed from the initializers list of an + // object if the initializer is timed out. + Ignore FailurePolicyType = "Ignore" + // For 1.7, only "Ignore" is allowed. "Fail" will be allowed when the + // extensible admission feature is beta. + Fail FailurePolicyType = "Fail" +) + +// +genclient=true +// +nonNamespaced=true + +// ExternalAdmissionHookConfiguration describes the configuration of initializers. +type ExternalAdmissionHookConfiguration struct { + metav1.TypeMeta + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta + // ExternalAdmissionHooks is a list of external admission webhooks and the + // affected resources and operations. + // +optional + ExternalAdmissionHooks []ExternalAdmissionHook +} + +// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. +type ExternalAdmissionHookConfigurationList struct { + metav1.TypeMeta + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta + // List of ExternalAdmissionHookConfiguration. + Items []ExternalAdmissionHookConfiguration +} + +// ExternalAdmissionHook describes an external admission webhook and the +// resources and operations it applies to. +type ExternalAdmissionHook struct { + // The name of the external admission webhook. + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where + // "imagepolicy" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required. + Name string + + // ClientConfig defines how to communicate with the hook. + // Required + ClientConfig AdmissionHookClientConfig + + // Rules describes what operations on what resources/subresources the webhook cares about. + // The webhook cares about an operation if it matches _any_ Rule. + Rules []RuleWithOperations + + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - + // allowed values are Ignore or Fail. Defaults to Ignore. + // +optional + FailurePolicy *FailurePolicyType +} + +// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make +// sure that all the tuple expansions are valid. +type RuleWithOperations struct { + // Operations is the operations the admission hook cares about - CREATE, UPDATE, or * + // for all operations. + // If '*' is present, the length of the slice must be one. + // Required. + Operations []OperationType + // Rule is embedded, it describes other criteria of the rule, like + // APIGroups, APIVersions, Resources, etc. + Rule +} + +type OperationType string + +// The constants should be kept in sync with those defined in k8s.io/kubernetes/pkg/admission/interface.go. +const ( + OperationAll OperationType = "*" + Create OperationType = "CREATE" + Update OperationType = "UPDATE" + Delete OperationType = "DELETE" + Connect OperationType = "CONNECT" +) + +// AdmissionHookClientConfig contains the information to make a TLS +// connection with the webhook +type AdmissionHookClientConfig struct { + // Service is a reference to the service for this webhook. If there is only + // one port open for the service, that port will be used. If there are multiple + // ports open, port 443 will be used if it is open, otherwise it is an error. + // Required + Service ServiceReference + // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. + // Required + CABundle []byte +} + +// ServiceReference holds a reference to Service.legacy.k8s.io +type ServiceReference struct { + // Namespace is the namespace of the service + // Required + Namespace string + // Name is the name of the service + // Required + Name string +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/BUILD b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/BUILD new file mode 100644 index 000000000..2af11423b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/BUILD @@ -0,0 +1,35 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/admissionregistration:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/defaults.go new file mode 100644 index 000000000..5aed8f1d7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/defaults.go @@ -0,0 +1,39 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_Initializer(obj *Initializer) { + if obj.FailurePolicy == nil { + policy := Ignore + obj.FailurePolicy = &policy + } +} + +func SetDefaults_ExternalAdmissionHook(obj *ExternalAdmissionHook) { + if obj.FailurePolicy == nil { + policy := Ignore + obj.FailurePolicy = &policy + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/doc.go new file mode 100644 index 000000000..a848f3e92 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1alpha1 is the v1alpha1 version of the API. +// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration +// InitializerConfiguration and ExternalAdmissionHookConfiguration is for the +// new dynamic admission controller configuration. +// +groupName=admissionregistration.k8s.io +package v1alpha1 diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.pb.go new file mode 100644 index 000000000..58abc1d2f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.pb.go @@ -0,0 +1,2228 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1/generated.proto + + It has these top-level messages: + AdmissionHookClientConfig + ExternalAdmissionHook + ExternalAdmissionHookConfiguration + ExternalAdmissionHookConfigurationList + Initializer + InitializerConfiguration + InitializerConfigurationList + Rule + RuleWithOperations + ServiceReference +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *AdmissionHookClientConfig) Reset() { *m = AdmissionHookClientConfig{} } +func (*AdmissionHookClientConfig) ProtoMessage() {} +func (*AdmissionHookClientConfig) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *ExternalAdmissionHook) Reset() { *m = ExternalAdmissionHook{} } +func (*ExternalAdmissionHook) ProtoMessage() {} +func (*ExternalAdmissionHook) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *ExternalAdmissionHookConfiguration) Reset() { *m = ExternalAdmissionHookConfiguration{} } +func (*ExternalAdmissionHookConfiguration) ProtoMessage() {} +func (*ExternalAdmissionHookConfiguration) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *ExternalAdmissionHookConfigurationList) Reset() { + *m = ExternalAdmissionHookConfigurationList{} +} +func (*ExternalAdmissionHookConfigurationList) ProtoMessage() {} +func (*ExternalAdmissionHookConfigurationList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *Initializer) Reset() { *m = Initializer{} } +func (*Initializer) ProtoMessage() {} +func (*Initializer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *InitializerConfiguration) Reset() { *m = InitializerConfiguration{} } +func (*InitializerConfiguration) ProtoMessage() {} +func (*InitializerConfiguration) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *InitializerConfigurationList) Reset() { *m = InitializerConfigurationList{} } +func (*InitializerConfigurationList) ProtoMessage() {} +func (*InitializerConfigurationList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{6} +} + +func (m *Rule) Reset() { *m = Rule{} } +func (*Rule) ProtoMessage() {} +func (*Rule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *RuleWithOperations) Reset() { *m = RuleWithOperations{} } +func (*RuleWithOperations) ProtoMessage() {} +func (*RuleWithOperations) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *ServiceReference) Reset() { *m = ServiceReference{} } +func (*ServiceReference) ProtoMessage() {} +func (*ServiceReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func init() { + proto.RegisterType((*AdmissionHookClientConfig)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.AdmissionHookClientConfig") + proto.RegisterType((*ExternalAdmissionHook)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.ExternalAdmissionHook") + proto.RegisterType((*ExternalAdmissionHookConfiguration)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.ExternalAdmissionHookConfiguration") + proto.RegisterType((*ExternalAdmissionHookConfigurationList)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.ExternalAdmissionHookConfigurationList") + proto.RegisterType((*Initializer)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.Initializer") + proto.RegisterType((*InitializerConfiguration)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.InitializerConfiguration") + proto.RegisterType((*InitializerConfigurationList)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.InitializerConfigurationList") + proto.RegisterType((*Rule)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.Rule") + proto.RegisterType((*RuleWithOperations)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.RuleWithOperations") + proto.RegisterType((*ServiceReference)(nil), "k8s.io.client-go.pkg.apis.admissionregistration.v1alpha1.ServiceReference") +} +func (m *AdmissionHookClientConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AdmissionHookClientConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Service.Size())) + n1, err := m.Service.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.CABundle != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle))) + i += copy(dAtA[i:], m.CABundle) + } + return i, nil +} + +func (m *ExternalAdmissionHook) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExternalAdmissionHook) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ClientConfig.Size())) + n2, err := m.ClientConfig.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.FailurePolicy != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy))) + i += copy(dAtA[i:], *m.FailurePolicy) + } + return i, nil +} + +func (m *ExternalAdmissionHookConfiguration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExternalAdmissionHookConfiguration) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n3, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + if len(m.ExternalAdmissionHooks) > 0 { + for _, msg := range m.ExternalAdmissionHooks { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ExternalAdmissionHookConfigurationList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ExternalAdmissionHookConfigurationList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n4, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *Initializer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Initializer) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.FailurePolicy != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy))) + i += copy(dAtA[i:], *m.FailurePolicy) + } + return i, nil +} + +func (m *InitializerConfiguration) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InitializerConfiguration) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n5, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Initializers) > 0 { + for _, msg := range m.Initializers { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *InitializerConfigurationList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InitializerConfigurationList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *Rule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Rule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.APIVersions) > 0 { + for _, s := range m.APIVersions { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *RuleWithOperations) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RuleWithOperations) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Operations) > 0 { + for _, s := range m.Operations { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Rule.Size())) + n7, err := m.Rule.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + return i, nil +} + +func (m *ServiceReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *AdmissionHookClientConfig) Size() (n int) { + var l int + _ = l + l = m.Service.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.CABundle != nil { + l = len(m.CABundle) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ExternalAdmissionHook) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.ClientConfig.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.FailurePolicy != nil { + l = len(*m.FailurePolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ExternalAdmissionHookConfiguration) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ExternalAdmissionHooks) > 0 { + for _, e := range m.ExternalAdmissionHooks { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ExternalAdmissionHookConfigurationList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Initializer) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.FailurePolicy != nil { + l = len(*m.FailurePolicy) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *InitializerConfiguration) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Initializers) > 0 { + for _, e := range m.Initializers { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *InitializerConfigurationList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Rule) Size() (n int) { + var l int + _ = l + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.APIVersions) > 0 { + for _, s := range m.APIVersions { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RuleWithOperations) Size() (n int) { + var l int + _ = l + if len(m.Operations) > 0 { + for _, s := range m.Operations { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.Rule.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceReference) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *AdmissionHookClientConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AdmissionHookClientConfig{`, + `Service:` + strings.Replace(strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1), `&`, ``, 1) + `,`, + `CABundle:` + valueToStringGenerated(this.CABundle) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalAdmissionHook) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalAdmissionHook{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "AdmissionHookClientConfig", "AdmissionHookClientConfig", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`, + `FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalAdmissionHookConfiguration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalAdmissionHookConfiguration{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ExternalAdmissionHooks:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ExternalAdmissionHooks), "ExternalAdmissionHook", "ExternalAdmissionHook", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ExternalAdmissionHookConfigurationList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExternalAdmissionHookConfigurationList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ExternalAdmissionHookConfiguration", "ExternalAdmissionHookConfiguration", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Initializer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Initializer{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "Rule", "Rule", 1), `&`, ``, 1) + `,`, + `FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`, + `}`, + }, "") + return s +} +func (this *InitializerConfiguration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&InitializerConfiguration{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Initializers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Initializers), "Initializer", "Initializer", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *InitializerConfigurationList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&InitializerConfigurationList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "InitializerConfiguration", "InitializerConfiguration", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Rule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Rule{`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `APIVersions:` + fmt.Sprintf("%v", this.APIVersions) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `}`, + }, "") + return s +} +func (this *RuleWithOperations) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RuleWithOperations{`, + `Operations:` + fmt.Sprintf("%v", this.Operations) + `,`, + `Rule:` + strings.Replace(strings.Replace(this.Rule.String(), "Rule", "Rule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceReference{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *AdmissionHookClientConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AdmissionHookClientConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AdmissionHookClientConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Service.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CABundle", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CABundle = append(m.CABundle[:0], dAtA[iNdEx:postIndex]...) + if m.CABundle == nil { + m.CABundle = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExternalAdmissionHook) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalAdmissionHook: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalAdmissionHook: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ClientConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, RuleWithOperations{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := FailurePolicyType(dAtA[iNdEx:postIndex]) + m.FailurePolicy = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExternalAdmissionHookConfiguration) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalAdmissionHookConfiguration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalAdmissionHookConfiguration: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalAdmissionHooks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalAdmissionHooks = append(m.ExternalAdmissionHooks, ExternalAdmissionHook{}) + if err := m.ExternalAdmissionHooks[len(m.ExternalAdmissionHooks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExternalAdmissionHookConfigurationList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExternalAdmissionHookConfigurationList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExternalAdmissionHookConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ExternalAdmissionHookConfiguration{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Initializer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Initializer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Initializer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, Rule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := FailurePolicyType(dAtA[iNdEx:postIndex]) + m.FailurePolicy = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *InitializerConfiguration) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InitializerConfiguration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InitializerConfiguration: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Initializers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Initializers = append(m.Initializers, Initializer{}) + if err := m.Initializers[len(m.Initializers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *InitializerConfigurationList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InitializerConfigurationList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InitializerConfigurationList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, InitializerConfiguration{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Rule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Rule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroups = append(m.APIGroups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersions = append(m.APIVersions, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RuleWithOperations) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RuleWithOperations: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RuleWithOperations: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operations", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operations = append(m.Operations, OperationType(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Rule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 877 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0xd8, 0x8e, 0x6a, 0x8f, 0x6d, 0xb5, 0x1d, 0x41, 0x65, 0x22, 0xb4, 0x6b, 0xed, 0xa1, + 0xb2, 0x84, 0xd8, 0x25, 0x01, 0x21, 0x38, 0x55, 0xd9, 0x88, 0x82, 0x45, 0x7f, 0x44, 0xd3, 0x0a, + 0x24, 0x04, 0x12, 0x93, 0xf5, 0x8b, 0x3d, 0x78, 0x7f, 0x69, 0x66, 0xd6, 0x6a, 0x38, 0x55, 0x5c, + 0x41, 0x08, 0x89, 0x7f, 0x82, 0x2b, 0x37, 0x2e, 0xdc, 0x73, 0xec, 0xb1, 0x27, 0x8b, 0x6c, 0xff, + 0x07, 0x0e, 0xbd, 0x80, 0xf6, 0x97, 0x77, 0x5d, 0xdb, 0x6a, 0x54, 0x57, 0xbd, 0x65, 0xde, 0xdb, + 0xf7, 0xbd, 0xef, 0xfb, 0xf2, 0xde, 0x8c, 0xf1, 0x70, 0xfa, 0x89, 0x34, 0x79, 0x60, 0x4d, 0xa3, + 0x13, 0x10, 0x3e, 0x28, 0x90, 0x56, 0x38, 0x1d, 0x5b, 0x2c, 0xe4, 0xd2, 0x62, 0x23, 0x8f, 0x4b, + 0xc9, 0x03, 0x5f, 0xc0, 0x98, 0x4b, 0x25, 0x98, 0xe2, 0x81, 0x6f, 0xcd, 0xf6, 0x99, 0x1b, 0x4e, + 0xd8, 0xbe, 0x35, 0x06, 0x1f, 0x04, 0x53, 0x30, 0x32, 0x43, 0x11, 0xa8, 0x80, 0x7c, 0x9a, 0x41, + 0x99, 0x25, 0x94, 0x19, 0x4e, 0xc7, 0x66, 0x02, 0x65, 0xae, 0x85, 0x32, 0x0b, 0xa8, 0xbd, 0xf7, + 0xc7, 0x5c, 0x4d, 0xa2, 0x13, 0xd3, 0x09, 0x3c, 0x6b, 0x1c, 0x8c, 0x03, 0x2b, 0x45, 0x3c, 0x89, + 0x4e, 0xd3, 0x53, 0x7a, 0x48, 0xff, 0xca, 0x3a, 0xed, 0x7d, 0x94, 0x93, 0x66, 0x21, 0xf7, 0x98, + 0x33, 0xe1, 0x3e, 0x88, 0xb3, 0x92, 0xb6, 0x07, 0x8a, 0x59, 0xb3, 0x15, 0x7e, 0x7b, 0xd6, 0xa6, + 0x2a, 0x11, 0xf9, 0x8a, 0x7b, 0xb0, 0x52, 0xf0, 0xf1, 0xcb, 0x0a, 0xa4, 0x33, 0x01, 0x8f, 0xad, + 0xd4, 0x7d, 0xb8, 0xa9, 0x2e, 0x52, 0xdc, 0xb5, 0xb8, 0xaf, 0xa4, 0x12, 0x2f, 0x16, 0x19, 0x7f, + 0x23, 0xfc, 0xce, 0x61, 0xe1, 0xd2, 0x17, 0x41, 0x30, 0x3d, 0x72, 0x39, 0xf8, 0xea, 0x28, 0xf0, + 0x4f, 0xf9, 0x98, 0xcc, 0xf0, 0x15, 0x09, 0x62, 0xc6, 0x1d, 0xe8, 0xa1, 0x3e, 0x1a, 0xb4, 0x0f, + 0xbe, 0x34, 0x5f, 0xd9, 0x6d, 0xf3, 0x41, 0x86, 0x44, 0xe1, 0x14, 0x04, 0xf8, 0x0e, 0xd8, 0x57, + 0xcf, 0xe7, 0xfa, 0x4e, 0x3c, 0xd7, 0xaf, 0x14, 0x99, 0xa2, 0x19, 0x19, 0xe0, 0xa6, 0xc3, 0xec, + 0xc8, 0x1f, 0xb9, 0xd0, 0xab, 0xf5, 0xd1, 0xa0, 0x63, 0x77, 0xe2, 0xb9, 0xde, 0x3c, 0x3a, 0xcc, + 0x62, 0x74, 0x91, 0x35, 0x7e, 0xa9, 0xe3, 0xb7, 0x3f, 0x7b, 0xa4, 0x40, 0xf8, 0xcc, 0x5d, 0xd2, + 0x41, 0xfa, 0xb8, 0xe1, 0x33, 0x2f, 0x23, 0xde, 0xb2, 0x3b, 0x79, 0xaf, 0xc6, 0x3d, 0xe6, 0x01, + 0x4d, 0x33, 0xe4, 0x57, 0x84, 0x3b, 0x4e, 0x45, 0x6e, 0xda, 0xaa, 0x7d, 0xf0, 0x70, 0x0b, 0x8d, + 0x1b, 0xad, 0xb4, 0xdf, 0xca, 0x09, 0x74, 0xaa, 0x51, 0xba, 0xd4, 0x9f, 0x08, 0xbc, 0x2b, 0x22, + 0x17, 0x64, 0xaf, 0xde, 0xaf, 0x0f, 0xda, 0x07, 0x77, 0xb7, 0x20, 0x42, 0x23, 0x17, 0xbe, 0xe6, + 0x6a, 0x72, 0x3f, 0x84, 0x2c, 0x25, 0xed, 0x6e, 0xce, 0x60, 0x37, 0xc9, 0x49, 0x9a, 0xb5, 0x22, + 0x77, 0x70, 0xf7, 0x94, 0x71, 0x37, 0x12, 0x70, 0x1c, 0xb8, 0xdc, 0x39, 0xeb, 0x35, 0x52, 0xbf, + 0x6e, 0xc6, 0x73, 0xbd, 0x7b, 0xbb, 0x9a, 0x78, 0x3e, 0xd7, 0xaf, 0x2f, 0x05, 0x1e, 0x9e, 0x85, + 0x40, 0x97, 0x8b, 0x8d, 0x3f, 0x6b, 0xd8, 0x58, 0xfb, 0xef, 0xc8, 0x14, 0x46, 0x19, 0x17, 0xf2, + 0x3d, 0x6e, 0x26, 0xeb, 0x32, 0x62, 0x8a, 0xe5, 0x83, 0xf5, 0x41, 0xa1, 0xb5, 0x3a, 0xbd, 0xa5, + 0xda, 0xe4, 0x6b, 0x73, 0xb6, 0x6f, 0xde, 0x3f, 0xf9, 0x01, 0x1c, 0x75, 0x17, 0x14, 0xb3, 0x49, + 0x2e, 0x07, 0x97, 0x31, 0xba, 0x40, 0x25, 0x7f, 0x20, 0x7c, 0x03, 0xd6, 0x11, 0x91, 0xbd, 0x5a, + 0x6a, 0xee, 0xf1, 0x16, 0xe6, 0xae, 0x55, 0x68, 0x6b, 0x39, 0xa1, 0x1b, 0x6b, 0xd3, 0x92, 0x6e, + 0xe0, 0x63, 0xfc, 0x5c, 0xc3, 0x37, 0x5f, 0xee, 0xd9, 0x1d, 0x2e, 0x15, 0xf9, 0x76, 0xc5, 0x37, + 0xf3, 0x72, 0xbe, 0x25, 0xd5, 0xa9, 0x6b, 0xd7, 0x72, 0x92, 0xcd, 0x22, 0x52, 0xf1, 0xec, 0x27, + 0x84, 0x77, 0xb9, 0x02, 0xaf, 0xb0, 0xe8, 0xbb, 0xd7, 0x6d, 0xd1, 0x92, 0xa0, 0x72, 0x1e, 0x87, + 0x49, 0x4f, 0x9a, 0xb5, 0x36, 0x9e, 0x21, 0xdc, 0x1e, 0xfa, 0x5c, 0x71, 0xe6, 0xf2, 0x1f, 0x41, + 0x5c, 0x62, 0x8d, 0x47, 0xc5, 0xd6, 0x64, 0xac, 0x6f, 0x6d, 0xb9, 0x35, 0x97, 0xdd, 0x93, 0xfa, + 0x36, 0x7b, 0xf2, 0x1f, 0xc2, 0xbd, 0x8a, 0xca, 0x37, 0xbd, 0x1d, 0x8f, 0x11, 0xee, 0xf0, 0xb2, + 0x7d, 0x61, 0xdd, 0xed, 0x2d, 0xac, 0xab, 0xa8, 0x29, 0xef, 0xba, 0x4a, 0x50, 0xd2, 0xa5, 0x8e, + 0xc6, 0xbf, 0x08, 0xbf, 0xbb, 0xc9, 0x81, 0x37, 0x30, 0xeb, 0x8f, 0x96, 0x47, 0xfd, 0xc1, 0xeb, + 0x51, 0x7e, 0x99, 0x01, 0xff, 0x1d, 0xe1, 0x46, 0x32, 0x59, 0xe4, 0x3d, 0xdc, 0x62, 0x21, 0xff, + 0x5c, 0x04, 0x51, 0x28, 0x7b, 0xa8, 0x5f, 0x1f, 0xb4, 0xec, 0x6e, 0x3c, 0xd7, 0x5b, 0x87, 0xc7, + 0xc3, 0x2c, 0x48, 0xcb, 0x3c, 0xd9, 0xc7, 0x6d, 0x16, 0xf2, 0xaf, 0x40, 0x24, 0x3c, 0x32, 0xd6, + 0x2d, 0xfb, 0x6a, 0x3c, 0xd7, 0xdb, 0x87, 0xc7, 0xc3, 0x22, 0x4c, 0xab, 0xdf, 0x24, 0xf8, 0x02, + 0x64, 0x10, 0x09, 0x27, 0x7f, 0x51, 0x72, 0x7c, 0x5a, 0x04, 0x69, 0x99, 0x37, 0xfe, 0x42, 0x98, + 0xac, 0xbe, 0x19, 0xe4, 0x16, 0xc6, 0xc1, 0xe2, 0x94, 0x93, 0xd4, 0xd3, 0xb1, 0x5a, 0x44, 0x9f, + 0xcf, 0xf5, 0xee, 0xe2, 0x94, 0xce, 0x7a, 0xa5, 0x84, 0x30, 0xdc, 0x48, 0xf6, 0x27, 0x7f, 0x5a, + 0xb7, 0xde, 0xcd, 0xc5, 0xfe, 0x27, 0x27, 0x9a, 0x42, 0x1b, 0x80, 0xaf, 0xbd, 0xf8, 0xd3, 0x82, + 0x58, 0xb8, 0x95, 0xdc, 0x0d, 0x32, 0x64, 0x4e, 0x71, 0x75, 0x5c, 0xcf, 0x4b, 0x5b, 0xf7, 0x8a, + 0x04, 0x2d, 0xbf, 0x59, 0x5c, 0x33, 0xb5, 0x4d, 0xd7, 0x8c, 0x6d, 0x9e, 0x5f, 0x68, 0x3b, 0x4f, + 0x2e, 0xb4, 0x9d, 0xa7, 0x17, 0xda, 0xce, 0xe3, 0x58, 0x43, 0xe7, 0xb1, 0x86, 0x9e, 0xc4, 0x1a, + 0x7a, 0x1a, 0x6b, 0xe8, 0x9f, 0x58, 0x43, 0xbf, 0x3d, 0xd3, 0x76, 0xbe, 0x69, 0x16, 0x7c, 0xff, + 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x2c, 0x38, 0x31, 0xe3, 0x0a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.proto new file mode 100644 index 000000000..44ae98f6f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/generated.proto @@ -0,0 +1,203 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.admissionregistration.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// AdmissionHookClientConfig contains the information to make a TLS +// connection with the webhook +message AdmissionHookClientConfig { + // Service is a reference to the service for this webhook. If there is only + // one port open for the service, that port will be used. If there are multiple + // ports open, port 443 will be used if it is open, otherwise it is an error. + // Required + optional ServiceReference service = 1; + + // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. + // Required + optional bytes caBundle = 2; +} + +// ExternalAdmissionHook describes an external admission webhook and the +// resources and operations it applies to. +message ExternalAdmissionHook { + // The name of the external admission webhook. + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where + // "imagepolicy" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required. + optional string name = 1; + + // ClientConfig defines how to communicate with the hook. + // Required + optional AdmissionHookClientConfig clientConfig = 2; + + // Rules describes what operations on what resources/subresources the webhook cares about. + // The webhook cares about an operation if it matches _any_ Rule. + repeated RuleWithOperations rules = 3; + + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - + // allowed values are Ignore or Fail. Defaults to Ignore. + // +optional + optional string failurePolicy = 4; +} + +// ExternalAdmissionHookConfiguration describes the configuration of initializers. +message ExternalAdmissionHookConfiguration { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // ExternalAdmissionHooks is a list of external admission webhooks and the + // affected resources and operations. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + repeated ExternalAdmissionHook externalAdmissionHooks = 2; +} + +// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. +message ExternalAdmissionHookConfigurationList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ExternalAdmissionHookConfiguration. + repeated ExternalAdmissionHookConfiguration items = 2; +} + +// Initializer describes the name and the failure policy of an initializer, and +// what resources it applies to. +message Initializer { + // Name is the identifier of the initializer. It will be added to the + // object that needs to be initialized. + // Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where + // "alwayspullimages" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required + optional string name = 1; + + // Rules describes what resources/subresources the initializer cares about. + // The initializer cares about an operation if it matches _any_ Rule. + // Rule.Resources must not include subresources. + repeated Rule rules = 2; + + // FailurePolicy defines what happens if the responsible initializer controller + // fails to takes action. Allowed values are Ignore, or Fail. If "Ignore" is + // set, initializer is removed from the initializers list of an object if + // the timeout is reached; If "Fail" is set, admissionregistration returns timeout error + // if the timeout is reached. + optional string failurePolicy = 3; +} + +// InitializerConfiguration describes the configuration of initializers. +message InitializerConfiguration { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Initializers is a list of resources and their default initializers + // Order-sensitive. + // When merging multiple InitializerConfigurations, we sort the initializers + // from different InitializerConfigurations by the name of the + // InitializerConfigurations; the order of the initializers from the same + // InitializerConfiguration is preserved. + // +patchMergeKey=name + // +patchStrategy=merge + // +optional + repeated Initializer initializers = 2; +} + +// InitializerConfigurationList is a list of InitializerConfiguration. +message InitializerConfigurationList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of InitializerConfiguration. + repeated InitializerConfiguration items = 2; +} + +// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended +// to make sure that all the tuple expansions are valid. +message Rule { + // APIGroups is the API groups the resources belong to. '*' is all groups. + // If '*' is present, the length of the slice must be one. + // Required. + repeated string apiGroups = 1; + + // APIVersions is the API versions the resources belong to. '*' is all versions. + // If '*' is present, the length of the slice must be one. + // Required. + repeated string apiVersions = 2; + + // Resources is a list of resources this rule applies to. + // + // For example: + // 'pods' means pods. + // 'pods/log' means the log subresource of pods. + // '*' means all resources, but not subresources. + // 'pods/*' means all subresources of pods. + // '*/scale' means all scale subresources. + // '*/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not + // overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. + // Required. + repeated string resources = 3; +} + +// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make +// sure that all the tuple expansions are valid. +message RuleWithOperations { + // Operations is the operations the admission hook cares about - CREATE, UPDATE, or * + // for all operations. + // If '*' is present, the length of the slice must be one. + // Required. + repeated string operations = 1; + + // Rule is embedded, it describes other criteria of the rule, like + // APIGroups, APIVersions, Resources, etc. + optional Rule rule = 2; +} + +// ServiceReference holds a reference to Service.legacy.k8s.io +message ServiceReference { + // Namespace is the namespace of the service + // Required + optional string namespace = 1; + + // Name is the name of the service + // Required + optional string name = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/register.go new file mode 100644 index 000000000..10fa4a161 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/register.go @@ -0,0 +1,60 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "admissionregistration.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs) +} + +// Adds the list of known types to scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &InitializerConfiguration{}, + &InitializerConfigurationList{}, + &ExternalAdmissionHookConfiguration{}, + &ExternalAdmissionHookConfigurationList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.generated.go new file mode 100644 index 000000000..8a6563730 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.generated.go @@ -0,0 +1,4232 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *InitializerConfiguration) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.Initializers) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Initializers == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceInitializer(([]Initializer)(x.Initializers), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initializers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Initializers == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceInitializer(([]Initializer)(x.Initializers), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *InitializerConfiguration) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *InitializerConfiguration) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "initializers": + if r.TryDecodeAsNil() { + x.Initializers = nil + } else { + yyv10 := &x.Initializers + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceInitializer((*[]Initializer)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *InitializerConfiguration) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Initializers = nil + } else { + yyv19 := &x.Initializers + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceInitializer((*[]Initializer)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *InitializerConfigurationList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceInitializerConfiguration(([]InitializerConfiguration)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceInitializerConfiguration(([]InitializerConfiguration)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *InitializerConfigurationList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *InitializerConfigurationList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceInitializerConfiguration((*[]InitializerConfiguration)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *InitializerConfigurationList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceInitializerConfiguration((*[]InitializerConfiguration)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Initializer) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Rules) != 0 + yyq2[2] = x.FailurePolicy != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Rules == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceRule(([]Rule)(x.Rules), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceRule(([]Rule)(x.Rules), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.FailurePolicy == nil { + r.EncodeNil() + } else { + yy10 := *x.FailurePolicy + yy10.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failurePolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FailurePolicy == nil { + r.EncodeNil() + } else { + yy12 := *x.FailurePolicy + yy12.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Initializer) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Initializer) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv6 := &x.Rules + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceRule((*[]Rule)(yyv6), d) + } + } + case "failurePolicy": + if r.TryDecodeAsNil() { + if x.FailurePolicy != nil { + x.FailurePolicy = nil + } + } else { + if x.FailurePolicy == nil { + x.FailurePolicy = new(FailurePolicyType) + } + x.FailurePolicy.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Initializer) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv12 := &x.Rules + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + h.decSliceRule((*[]Rule)(yyv12), d) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FailurePolicy != nil { + x.FailurePolicy = nil + } + } else { + if x.FailurePolicy == nil { + x.FailurePolicy = new(FailurePolicyType) + } + x.FailurePolicy.CodecDecodeSelf(d) + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Rule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.APIGroups) != 0 + yyq2[1] = len(x.APIVersions) != 0 + yyq2[2] = len(x.Resources) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.APIVersions == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncSliceStringV(x.APIVersions, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIVersions == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncSliceStringV(x.APIVersions, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Resources == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resources == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Rule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Rule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "apiGroups": + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv4 := &x.APIGroups + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "apiVersions": + if r.TryDecodeAsNil() { + x.APIVersions = nil + } else { + yyv6 := &x.APIVersions + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecSliceStringX(yyv6, false, d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv8 := &x.Resources + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Rule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv11 := &x.APIGroups + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + z.F.DecSliceStringX(yyv11, false, d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersions = nil + } else { + yyv13 := &x.APIVersions + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + z.F.DecSliceStringX(yyv13, false, d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv15 := &x.Resources + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + z.F.DecSliceStringX(yyv15, false, d) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FailurePolicyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FailurePolicyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ExternalAdmissionHookConfiguration) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.ExternalAdmissionHooks) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.ExternalAdmissionHooks == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceExternalAdmissionHook(([]ExternalAdmissionHook)(x.ExternalAdmissionHooks), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalAdmissionHooks")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ExternalAdmissionHooks == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceExternalAdmissionHook(([]ExternalAdmissionHook)(x.ExternalAdmissionHooks), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExternalAdmissionHookConfiguration) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExternalAdmissionHookConfiguration) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "externalAdmissionHooks": + if r.TryDecodeAsNil() { + x.ExternalAdmissionHooks = nil + } else { + yyv10 := &x.ExternalAdmissionHooks + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceExternalAdmissionHook((*[]ExternalAdmissionHook)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExternalAdmissionHookConfiguration) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalAdmissionHooks = nil + } else { + yyv19 := &x.ExternalAdmissionHooks + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceExternalAdmissionHook((*[]ExternalAdmissionHook)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExternalAdmissionHookConfigurationList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceExternalAdmissionHookConfiguration(([]ExternalAdmissionHookConfiguration)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceExternalAdmissionHookConfiguration(([]ExternalAdmissionHookConfiguration)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExternalAdmissionHookConfigurationList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExternalAdmissionHookConfigurationList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceExternalAdmissionHookConfiguration((*[]ExternalAdmissionHookConfiguration)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExternalAdmissionHookConfigurationList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceExternalAdmissionHookConfiguration((*[]ExternalAdmissionHookConfiguration)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExternalAdmissionHook) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = len(x.Rules) != 0 + yyq2[3] = x.FailurePolicy != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.ClientConfig + yy7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clientConfig")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.ClientConfig + yy9.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Rules == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + h.encSliceRuleWithOperations(([]RuleWithOperations)(x.Rules), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + h.encSliceRuleWithOperations(([]RuleWithOperations)(x.Rules), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.FailurePolicy == nil { + r.EncodeNil() + } else { + yy15 := *x.FailurePolicy + yy15.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failurePolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FailurePolicy == nil { + r.EncodeNil() + } else { + yy17 := *x.FailurePolicy + yy17.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExternalAdmissionHook) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExternalAdmissionHook) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "clientConfig": + if r.TryDecodeAsNil() { + x.ClientConfig = AdmissionHookClientConfig{} + } else { + yyv6 := &x.ClientConfig + yyv6.CodecDecodeSelf(d) + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv7 := &x.Rules + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceRuleWithOperations((*[]RuleWithOperations)(yyv7), d) + } + } + case "failurePolicy": + if r.TryDecodeAsNil() { + if x.FailurePolicy != nil { + x.FailurePolicy = nil + } + } else { + if x.FailurePolicy == nil { + x.FailurePolicy = new(FailurePolicyType) + } + x.FailurePolicy.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExternalAdmissionHook) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv11 := &x.Name + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClientConfig = AdmissionHookClientConfig{} + } else { + yyv13 := &x.ClientConfig + yyv13.CodecDecodeSelf(d) + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv14 := &x.Rules + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decSliceRuleWithOperations((*[]RuleWithOperations)(yyv14), d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FailurePolicy != nil { + x.FailurePolicy = nil + } + } else { + if x.FailurePolicy == nil { + x.FailurePolicy = new(FailurePolicyType) + } + x.FailurePolicy.CodecDecodeSelf(d) + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RuleWithOperations) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Operations) != 0 + yyq2[1] = len(x.APIGroups) != 0 + yyq2[2] = len(x.APIVersions) != 0 + yyq2[3] = len(x.Resources) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Operations == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceOperationType(([]OperationType)(x.Operations), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Operations == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceOperationType(([]OperationType)(x.Operations), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.APIVersions == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.APIVersions, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIVersions == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.APIVersions, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Resources == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resources == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RuleWithOperations) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RuleWithOperations) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "operations": + if r.TryDecodeAsNil() { + x.Operations = nil + } else { + yyv4 := &x.Operations + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceOperationType((*[]OperationType)(yyv4), d) + } + } + case "apiGroups": + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv6 := &x.APIGroups + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecSliceStringX(yyv6, false, d) + } + } + case "apiVersions": + if r.TryDecodeAsNil() { + x.APIVersions = nil + } else { + yyv8 := &x.APIVersions + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv10 := &x.Resources + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecSliceStringX(yyv10, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RuleWithOperations) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operations = nil + } else { + yyv13 := &x.Operations + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + h.decSliceOperationType((*[]OperationType)(yyv13), d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv15 := &x.APIGroups + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + z.F.DecSliceStringX(yyv15, false, d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersions = nil + } else { + yyv17 := &x.APIVersions + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + z.F.DecSliceStringX(yyv17, false, d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv19 := &x.Resources + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + z.F.DecSliceStringX(yyv19, false, d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x OperationType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *OperationType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AdmissionHookClientConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.Service + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("service")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.Service + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.CABundle == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.CABundle)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("caBundle")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CABundle == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.CABundle)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AdmissionHookClientConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AdmissionHookClientConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "service": + if r.TryDecodeAsNil() { + x.Service = ServiceReference{} + } else { + yyv4 := &x.Service + yyv4.CodecDecodeSelf(d) + } + case "caBundle": + if r.TryDecodeAsNil() { + x.CABundle = nil + } else { + yyv5 := &x.CABundle + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *yyv5 = r.DecodeBytes(*(*[]byte)(yyv5), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AdmissionHookClientConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Service = ServiceReference{} + } else { + yyv8 := &x.Service + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CABundle = nil + } else { + yyv9 := &x.CABundle + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *yyv9 = r.DecodeBytes(*(*[]byte)(yyv9), false, false) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv4 := &x.Namespace + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv6 := &x.Name + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv9 := &x.Namespace + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv11 := &x.Name + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceInitializer(v []Initializer, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceInitializer(v *[]Initializer, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Initializer{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Initializer, yyrl1) + } + } else { + yyv1 = make([]Initializer, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Initializer{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Initializer{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Initializer{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Initializer{}) // var yyz1 Initializer + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Initializer{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Initializer{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceInitializerConfiguration(v []InitializerConfiguration, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceInitializerConfiguration(v *[]InitializerConfiguration, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []InitializerConfiguration{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]InitializerConfiguration, yyrl1) + } + } else { + yyv1 = make([]InitializerConfiguration, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = InitializerConfiguration{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, InitializerConfiguration{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = InitializerConfiguration{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, InitializerConfiguration{}) // var yyz1 InitializerConfiguration + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = InitializerConfiguration{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []InitializerConfiguration{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceRule(v []Rule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRule(v *[]Rule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Rule{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Rule, yyrl1) + } + } else { + yyv1 = make([]Rule, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Rule{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Rule{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Rule{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Rule{}) // var yyz1 Rule + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Rule{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Rule{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceExternalAdmissionHook(v []ExternalAdmissionHook, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceExternalAdmissionHook(v *[]ExternalAdmissionHook, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ExternalAdmissionHook{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 104) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ExternalAdmissionHook, yyrl1) + } + } else { + yyv1 = make([]ExternalAdmissionHook, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ExternalAdmissionHook{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ExternalAdmissionHook{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ExternalAdmissionHook{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ExternalAdmissionHook{}) // var yyz1 ExternalAdmissionHook + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ExternalAdmissionHook{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ExternalAdmissionHook{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceExternalAdmissionHookConfiguration(v []ExternalAdmissionHookConfiguration, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceExternalAdmissionHookConfiguration(v *[]ExternalAdmissionHookConfiguration, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ExternalAdmissionHookConfiguration{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ExternalAdmissionHookConfiguration, yyrl1) + } + } else { + yyv1 = make([]ExternalAdmissionHookConfiguration, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ExternalAdmissionHookConfiguration{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ExternalAdmissionHookConfiguration{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ExternalAdmissionHookConfiguration{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ExternalAdmissionHookConfiguration{}) // var yyz1 ExternalAdmissionHookConfiguration + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ExternalAdmissionHookConfiguration{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ExternalAdmissionHookConfiguration{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceRuleWithOperations(v []RuleWithOperations, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRuleWithOperations(v *[]RuleWithOperations, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []RuleWithOperations{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 96) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]RuleWithOperations, yyrl1) + } + } else { + yyv1 = make([]RuleWithOperations, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = RuleWithOperations{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, RuleWithOperations{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = RuleWithOperations{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, RuleWithOperations{}) // var yyz1 RuleWithOperations + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = RuleWithOperations{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []RuleWithOperations{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceOperationType(v []OperationType, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceOperationType(v *[]OperationType, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []OperationType{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]OperationType, yyrl1) + } + } else { + yyv1 = make([]OperationType, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 OperationType + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []OperationType{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.go new file mode 100644 index 000000000..0d878095c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types.go @@ -0,0 +1,220 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// InitializerConfiguration describes the configuration of initializers. +type InitializerConfiguration struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Initializers is a list of resources and their default initializers + // Order-sensitive. + // When merging multiple InitializerConfigurations, we sort the initializers + // from different InitializerConfigurations by the name of the + // InitializerConfigurations; the order of the initializers from the same + // InitializerConfiguration is preserved. + // +patchMergeKey=name + // +patchStrategy=merge + // +optional + Initializers []Initializer `json:"initializers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=initializers"` +} + +// InitializerConfigurationList is a list of InitializerConfiguration. +type InitializerConfigurationList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of InitializerConfiguration. + Items []InitializerConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Initializer describes the name and the failure policy of an initializer, and +// what resources it applies to. +type Initializer struct { + // Name is the identifier of the initializer. It will be added to the + // object that needs to be initialized. + // Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where + // "alwayspullimages" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // Rules describes what resources/subresources the initializer cares about. + // The initializer cares about an operation if it matches _any_ Rule. + // Rule.Resources must not include subresources. + Rules []Rule `json:"rules,omitempty" protobuf:"bytes,2,rep,name=rules"` + + // FailurePolicy defines what happens if the responsible initializer controller + // fails to takes action. Allowed values are Ignore, or Fail. If "Ignore" is + // set, initializer is removed from the initializers list of an object if + // the timeout is reached; If "Fail" is set, admissionregistration returns timeout error + // if the timeout is reached. + FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,3,opt,name=failurePolicy,casttype=FailurePolicyType"` +} + +// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended +// to make sure that all the tuple expansions are valid. +type Rule struct { + // APIGroups is the API groups the resources belong to. '*' is all groups. + // If '*' is present, the length of the slice must be one. + // Required. + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,1,rep,name=apiGroups"` + + // APIVersions is the API versions the resources belong to. '*' is all versions. + // If '*' is present, the length of the slice must be one. + // Required. + APIVersions []string `json:"apiVersions,omitempty" protobuf:"bytes,2,rep,name=apiVersions"` + + // Resources is a list of resources this rule applies to. + // + // For example: + // 'pods' means pods. + // 'pods/log' means the log subresource of pods. + // '*' means all resources, but not subresources. + // 'pods/*' means all subresources of pods. + // '*/scale' means all scale subresources. + // '*/*' means all resources and their subresources. + // + // If wildcard is present, the validation rule will ensure resources do not + // overlap with each other. + // + // Depending on the enclosing object, subresources might not be allowed. + // Required. + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` +} + +type FailurePolicyType string + +const ( + // Ignore means the initilizer is removed from the initializers list of an + // object if the initializer is timed out. + Ignore FailurePolicyType = "Ignore" + // For 1.7, only "Ignore" is allowed. "Fail" will be allowed when the + // extensible admission feature is beta. + Fail FailurePolicyType = "Fail" +) + +// +genclient=true +// +nonNamespaced=true + +// ExternalAdmissionHookConfiguration describes the configuration of initializers. +type ExternalAdmissionHookConfiguration struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // ExternalAdmissionHooks is a list of external admission webhooks and the + // affected resources and operations. + // +optional + // +patchMergeKey=name + // +patchStrategy=merge + ExternalAdmissionHooks []ExternalAdmissionHook `json:"externalAdmissionHooks,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=externalAdmissionHooks"` +} + +// ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration. +type ExternalAdmissionHookConfigurationList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // List of ExternalAdmissionHookConfiguration. + Items []ExternalAdmissionHookConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ExternalAdmissionHook describes an external admission webhook and the +// resources and operations it applies to. +type ExternalAdmissionHook struct { + // The name of the external admission webhook. + // Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where + // "imagepolicy" is the name of the webhook, and kubernetes.io is the name + // of the organization. + // Required. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // ClientConfig defines how to communicate with the hook. + // Required + ClientConfig AdmissionHookClientConfig `json:"clientConfig" protobuf:"bytes,2,opt,name=clientConfig"` + + // Rules describes what operations on what resources/subresources the webhook cares about. + // The webhook cares about an operation if it matches _any_ Rule. + Rules []RuleWithOperations `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"` + + // FailurePolicy defines how unrecognized errors from the admission endpoint are handled - + // allowed values are Ignore or Fail. Defaults to Ignore. + // +optional + FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,4,opt,name=failurePolicy,casttype=FailurePolicyType"` +} + +// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make +// sure that all the tuple expansions are valid. +type RuleWithOperations struct { + // Operations is the operations the admission hook cares about - CREATE, UPDATE, or * + // for all operations. + // If '*' is present, the length of the slice must be one. + // Required. + Operations []OperationType `json:"operations,omitempty" protobuf:"bytes,1,rep,name=operations,casttype=OperationType"` + // Rule is embedded, it describes other criteria of the rule, like + // APIGroups, APIVersions, Resources, etc. + Rule `json:",inline" protobuf:"bytes,2,opt,name=rule"` +} + +type OperationType string + +// The constants should be kept in sync with those defined in k8s.io/kubernetes/pkg/admission/interface.go. +const ( + OperationAll OperationType = "*" + Create OperationType = "CREATE" + Update OperationType = "UPDATE" + Delete OperationType = "DELETE" + Connect OperationType = "CONNECT" +) + +// AdmissionHookClientConfig contains the information to make a TLS +// connection with the webhook +type AdmissionHookClientConfig struct { + // Service is a reference to the service for this webhook. If there is only + // one port open for the service, that port will be used. If there are multiple + // ports open, port 443 will be used if it is open, otherwise it is an error. + // Required + Service ServiceReference `json:"service" protobuf:"bytes,1,opt,name=service"` + // CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. + // Required + CABundle []byte `json:"caBundle" protobuf:"bytes,2,opt,name=caBundle"` +} + +// ServiceReference holds a reference to Service.legacy.k8s.io +type ServiceReference struct { + // Namespace is the namespace of the service + // Required + Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"` + // Name is the name of the service + // Required + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 000000000..9597deb59 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,133 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_AdmissionHookClientConfig = map[string]string{ + "": "AdmissionHookClientConfig contains the information to make a TLS connection with the webhook", + "service": "Service is a reference to the service for this webhook. If there is only one port open for the service, that port will be used. If there are multiple ports open, port 443 will be used if it is open, otherwise it is an error. Required", + "caBundle": "CABundle is a PEM encoded CA bundle which will be used to validate webhook's server certificate. Required", +} + +func (AdmissionHookClientConfig) SwaggerDoc() map[string]string { + return map_AdmissionHookClientConfig +} + +var map_ExternalAdmissionHook = map[string]string{ + "": "ExternalAdmissionHook describes an external admission webhook and the resources and operations it applies to.", + "name": "The name of the external admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.", + "clientConfig": "ClientConfig defines how to communicate with the hook. Required", + "rules": "Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule.", + "failurePolicy": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.", +} + +func (ExternalAdmissionHook) SwaggerDoc() map[string]string { + return map_ExternalAdmissionHook +} + +var map_ExternalAdmissionHookConfiguration = map[string]string{ + "": "ExternalAdmissionHookConfiguration describes the configuration of initializers.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "externalAdmissionHooks": "ExternalAdmissionHooks is a list of external admission webhooks and the affected resources and operations.", +} + +func (ExternalAdmissionHookConfiguration) SwaggerDoc() map[string]string { + return map_ExternalAdmissionHookConfiguration +} + +var map_ExternalAdmissionHookConfigurationList = map[string]string{ + "": "ExternalAdmissionHookConfigurationList is a list of ExternalAdmissionHookConfiguration.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ExternalAdmissionHookConfiguration.", +} + +func (ExternalAdmissionHookConfigurationList) SwaggerDoc() map[string]string { + return map_ExternalAdmissionHookConfigurationList +} + +var map_Initializer = map[string]string{ + "": "Initializer describes the name and the failure policy of an initializer, and what resources it applies to.", + "name": "Name is the identifier of the initializer. It will be added to the object that needs to be initialized. Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where \"alwayspullimages\" is the name of the webhook, and kubernetes.io is the name of the organization. Required", + "rules": "Rules describes what resources/subresources the initializer cares about. The initializer cares about an operation if it matches _any_ Rule. Rule.Resources must not include subresources.", + "failurePolicy": "FailurePolicy defines what happens if the responsible initializer controller fails to takes action. Allowed values are Ignore, or Fail. If \"Ignore\" is set, initializer is removed from the initializers list of an object if the timeout is reached; If \"Fail\" is set, admissionregistration returns timeout error if the timeout is reached.", +} + +func (Initializer) SwaggerDoc() map[string]string { + return map_Initializer +} + +var map_InitializerConfiguration = map[string]string{ + "": "InitializerConfiguration describes the configuration of initializers.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "initializers": "Initializers is a list of resources and their default initializers Order-sensitive. When merging multiple InitializerConfigurations, we sort the initializers from different InitializerConfigurations by the name of the InitializerConfigurations; the order of the initializers from the same InitializerConfiguration is preserved.", +} + +func (InitializerConfiguration) SwaggerDoc() map[string]string { + return map_InitializerConfiguration +} + +var map_InitializerConfigurationList = map[string]string{ + "": "InitializerConfigurationList is a list of InitializerConfiguration.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of InitializerConfiguration.", +} + +func (InitializerConfigurationList) SwaggerDoc() map[string]string { + return map_InitializerConfigurationList +} + +var map_Rule = map[string]string{ + "": "Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended to make sure that all the tuple expansions are valid.", + "apiGroups": "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.", + "apiVersions": "APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.", + "resources": "Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.", +} + +func (Rule) SwaggerDoc() map[string]string { + return map_Rule +} + +var map_RuleWithOperations = map[string]string{ + "": "RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.", + "operations": "Operations is the operations the admission hook cares about - CREATE, UPDATE, or * for all operations. If '*' is present, the length of the slice must be one. Required.", +} + +func (RuleWithOperations) SwaggerDoc() map[string]string { + return map_RuleWithOperations +} + +var map_ServiceReference = map[string]string{ + "": "ServiceReference holds a reference to Service.legacy.k8s.io", + "namespace": "Namespace is the namespace of the service Required", + "name": "Name is the name of the service Required", +} + +func (ServiceReference) SwaggerDoc() map[string]string { + return map_ServiceReference +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..34c645df4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,311 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + admissionregistration "k8s.io/client-go/pkg/apis/admissionregistration" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig, + Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig, + Convert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook, + Convert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook, + Convert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration, + Convert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration, + Convert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList, + Convert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList, + Convert_v1alpha1_Initializer_To_admissionregistration_Initializer, + Convert_admissionregistration_Initializer_To_v1alpha1_Initializer, + Convert_v1alpha1_InitializerConfiguration_To_admissionregistration_InitializerConfiguration, + Convert_admissionregistration_InitializerConfiguration_To_v1alpha1_InitializerConfiguration, + Convert_v1alpha1_InitializerConfigurationList_To_admissionregistration_InitializerConfigurationList, + Convert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList, + Convert_v1alpha1_Rule_To_admissionregistration_Rule, + Convert_admissionregistration_Rule_To_v1alpha1_Rule, + Convert_v1alpha1_RuleWithOperations_To_admissionregistration_RuleWithOperations, + Convert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperations, + Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference, + Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference, + ) +} + +func autoConvert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(in *AdmissionHookClientConfig, out *admissionregistration.AdmissionHookClientConfig, s conversion.Scope) error { + if err := Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference(&in.Service, &out.Service, s); err != nil { + return err + } + out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) + return nil +} + +// Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig is an autogenerated conversion function. +func Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(in *AdmissionHookClientConfig, out *admissionregistration.AdmissionHookClientConfig, s conversion.Scope) error { + return autoConvert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(in, out, s) +} + +func autoConvert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(in *admissionregistration.AdmissionHookClientConfig, out *AdmissionHookClientConfig, s conversion.Scope) error { + if err := Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(&in.Service, &out.Service, s); err != nil { + return err + } + if in.CABundle == nil { + out.CABundle = make([]byte, 0) + } else { + out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) + } + return nil +} + +// Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig is an autogenerated conversion function. +func Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(in *admissionregistration.AdmissionHookClientConfig, out *AdmissionHookClientConfig, s conversion.Scope) error { + return autoConvert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(in, out, s) +} + +func autoConvert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook(in *ExternalAdmissionHook, out *admissionregistration.ExternalAdmissionHook, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_v1alpha1_AdmissionHookClientConfig_To_admissionregistration_AdmissionHookClientConfig(&in.ClientConfig, &out.ClientConfig, s); err != nil { + return err + } + out.Rules = *(*[]admissionregistration.RuleWithOperations)(unsafe.Pointer(&in.Rules)) + out.FailurePolicy = (*admissionregistration.FailurePolicyType)(unsafe.Pointer(in.FailurePolicy)) + return nil +} + +// Convert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook is an autogenerated conversion function. +func Convert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook(in *ExternalAdmissionHook, out *admissionregistration.ExternalAdmissionHook, s conversion.Scope) error { + return autoConvert_v1alpha1_ExternalAdmissionHook_To_admissionregistration_ExternalAdmissionHook(in, out, s) +} + +func autoConvert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook(in *admissionregistration.ExternalAdmissionHook, out *ExternalAdmissionHook, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_admissionregistration_AdmissionHookClientConfig_To_v1alpha1_AdmissionHookClientConfig(&in.ClientConfig, &out.ClientConfig, s); err != nil { + return err + } + out.Rules = *(*[]RuleWithOperations)(unsafe.Pointer(&in.Rules)) + out.FailurePolicy = (*FailurePolicyType)(unsafe.Pointer(in.FailurePolicy)) + return nil +} + +// Convert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook is an autogenerated conversion function. +func Convert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook(in *admissionregistration.ExternalAdmissionHook, out *ExternalAdmissionHook, s conversion.Scope) error { + return autoConvert_admissionregistration_ExternalAdmissionHook_To_v1alpha1_ExternalAdmissionHook(in, out, s) +} + +func autoConvert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration(in *ExternalAdmissionHookConfiguration, out *admissionregistration.ExternalAdmissionHookConfiguration, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.ExternalAdmissionHooks = *(*[]admissionregistration.ExternalAdmissionHook)(unsafe.Pointer(&in.ExternalAdmissionHooks)) + return nil +} + +// Convert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration is an autogenerated conversion function. +func Convert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration(in *ExternalAdmissionHookConfiguration, out *admissionregistration.ExternalAdmissionHookConfiguration, s conversion.Scope) error { + return autoConvert_v1alpha1_ExternalAdmissionHookConfiguration_To_admissionregistration_ExternalAdmissionHookConfiguration(in, out, s) +} + +func autoConvert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration(in *admissionregistration.ExternalAdmissionHookConfiguration, out *ExternalAdmissionHookConfiguration, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.ExternalAdmissionHooks = *(*[]ExternalAdmissionHook)(unsafe.Pointer(&in.ExternalAdmissionHooks)) + return nil +} + +// Convert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration is an autogenerated conversion function. +func Convert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration(in *admissionregistration.ExternalAdmissionHookConfiguration, out *ExternalAdmissionHookConfiguration, s conversion.Scope) error { + return autoConvert_admissionregistration_ExternalAdmissionHookConfiguration_To_v1alpha1_ExternalAdmissionHookConfiguration(in, out, s) +} + +func autoConvert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList(in *ExternalAdmissionHookConfigurationList, out *admissionregistration.ExternalAdmissionHookConfigurationList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]admissionregistration.ExternalAdmissionHookConfiguration)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList is an autogenerated conversion function. +func Convert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList(in *ExternalAdmissionHookConfigurationList, out *admissionregistration.ExternalAdmissionHookConfigurationList, s conversion.Scope) error { + return autoConvert_v1alpha1_ExternalAdmissionHookConfigurationList_To_admissionregistration_ExternalAdmissionHookConfigurationList(in, out, s) +} + +func autoConvert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList(in *admissionregistration.ExternalAdmissionHookConfigurationList, out *ExternalAdmissionHookConfigurationList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ExternalAdmissionHookConfiguration, 0) + } else { + out.Items = *(*[]ExternalAdmissionHookConfiguration)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList is an autogenerated conversion function. +func Convert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList(in *admissionregistration.ExternalAdmissionHookConfigurationList, out *ExternalAdmissionHookConfigurationList, s conversion.Scope) error { + return autoConvert_admissionregistration_ExternalAdmissionHookConfigurationList_To_v1alpha1_ExternalAdmissionHookConfigurationList(in, out, s) +} + +func autoConvert_v1alpha1_Initializer_To_admissionregistration_Initializer(in *Initializer, out *admissionregistration.Initializer, s conversion.Scope) error { + out.Name = in.Name + out.Rules = *(*[]admissionregistration.Rule)(unsafe.Pointer(&in.Rules)) + out.FailurePolicy = (*admissionregistration.FailurePolicyType)(unsafe.Pointer(in.FailurePolicy)) + return nil +} + +// Convert_v1alpha1_Initializer_To_admissionregistration_Initializer is an autogenerated conversion function. +func Convert_v1alpha1_Initializer_To_admissionregistration_Initializer(in *Initializer, out *admissionregistration.Initializer, s conversion.Scope) error { + return autoConvert_v1alpha1_Initializer_To_admissionregistration_Initializer(in, out, s) +} + +func autoConvert_admissionregistration_Initializer_To_v1alpha1_Initializer(in *admissionregistration.Initializer, out *Initializer, s conversion.Scope) error { + out.Name = in.Name + out.Rules = *(*[]Rule)(unsafe.Pointer(&in.Rules)) + out.FailurePolicy = (*FailurePolicyType)(unsafe.Pointer(in.FailurePolicy)) + return nil +} + +// Convert_admissionregistration_Initializer_To_v1alpha1_Initializer is an autogenerated conversion function. +func Convert_admissionregistration_Initializer_To_v1alpha1_Initializer(in *admissionregistration.Initializer, out *Initializer, s conversion.Scope) error { + return autoConvert_admissionregistration_Initializer_To_v1alpha1_Initializer(in, out, s) +} + +func autoConvert_v1alpha1_InitializerConfiguration_To_admissionregistration_InitializerConfiguration(in *InitializerConfiguration, out *admissionregistration.InitializerConfiguration, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Initializers = *(*[]admissionregistration.Initializer)(unsafe.Pointer(&in.Initializers)) + return nil +} + +// Convert_v1alpha1_InitializerConfiguration_To_admissionregistration_InitializerConfiguration is an autogenerated conversion function. +func Convert_v1alpha1_InitializerConfiguration_To_admissionregistration_InitializerConfiguration(in *InitializerConfiguration, out *admissionregistration.InitializerConfiguration, s conversion.Scope) error { + return autoConvert_v1alpha1_InitializerConfiguration_To_admissionregistration_InitializerConfiguration(in, out, s) +} + +func autoConvert_admissionregistration_InitializerConfiguration_To_v1alpha1_InitializerConfiguration(in *admissionregistration.InitializerConfiguration, out *InitializerConfiguration, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Initializers = *(*[]Initializer)(unsafe.Pointer(&in.Initializers)) + return nil +} + +// Convert_admissionregistration_InitializerConfiguration_To_v1alpha1_InitializerConfiguration is an autogenerated conversion function. +func Convert_admissionregistration_InitializerConfiguration_To_v1alpha1_InitializerConfiguration(in *admissionregistration.InitializerConfiguration, out *InitializerConfiguration, s conversion.Scope) error { + return autoConvert_admissionregistration_InitializerConfiguration_To_v1alpha1_InitializerConfiguration(in, out, s) +} + +func autoConvert_v1alpha1_InitializerConfigurationList_To_admissionregistration_InitializerConfigurationList(in *InitializerConfigurationList, out *admissionregistration.InitializerConfigurationList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]admissionregistration.InitializerConfiguration)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_InitializerConfigurationList_To_admissionregistration_InitializerConfigurationList is an autogenerated conversion function. +func Convert_v1alpha1_InitializerConfigurationList_To_admissionregistration_InitializerConfigurationList(in *InitializerConfigurationList, out *admissionregistration.InitializerConfigurationList, s conversion.Scope) error { + return autoConvert_v1alpha1_InitializerConfigurationList_To_admissionregistration_InitializerConfigurationList(in, out, s) +} + +func autoConvert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList(in *admissionregistration.InitializerConfigurationList, out *InitializerConfigurationList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]InitializerConfiguration, 0) + } else { + out.Items = *(*[]InitializerConfiguration)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList is an autogenerated conversion function. +func Convert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList(in *admissionregistration.InitializerConfigurationList, out *InitializerConfigurationList, s conversion.Scope) error { + return autoConvert_admissionregistration_InitializerConfigurationList_To_v1alpha1_InitializerConfigurationList(in, out, s) +} + +func autoConvert_v1alpha1_Rule_To_admissionregistration_Rule(in *Rule, out *admissionregistration.Rule, s conversion.Scope) error { + out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups)) + out.APIVersions = *(*[]string)(unsafe.Pointer(&in.APIVersions)) + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + return nil +} + +// Convert_v1alpha1_Rule_To_admissionregistration_Rule is an autogenerated conversion function. +func Convert_v1alpha1_Rule_To_admissionregistration_Rule(in *Rule, out *admissionregistration.Rule, s conversion.Scope) error { + return autoConvert_v1alpha1_Rule_To_admissionregistration_Rule(in, out, s) +} + +func autoConvert_admissionregistration_Rule_To_v1alpha1_Rule(in *admissionregistration.Rule, out *Rule, s conversion.Scope) error { + out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups)) + out.APIVersions = *(*[]string)(unsafe.Pointer(&in.APIVersions)) + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + return nil +} + +// Convert_admissionregistration_Rule_To_v1alpha1_Rule is an autogenerated conversion function. +func Convert_admissionregistration_Rule_To_v1alpha1_Rule(in *admissionregistration.Rule, out *Rule, s conversion.Scope) error { + return autoConvert_admissionregistration_Rule_To_v1alpha1_Rule(in, out, s) +} + +func autoConvert_v1alpha1_RuleWithOperations_To_admissionregistration_RuleWithOperations(in *RuleWithOperations, out *admissionregistration.RuleWithOperations, s conversion.Scope) error { + out.Operations = *(*[]admissionregistration.OperationType)(unsafe.Pointer(&in.Operations)) + if err := Convert_v1alpha1_Rule_To_admissionregistration_Rule(&in.Rule, &out.Rule, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_RuleWithOperations_To_admissionregistration_RuleWithOperations is an autogenerated conversion function. +func Convert_v1alpha1_RuleWithOperations_To_admissionregistration_RuleWithOperations(in *RuleWithOperations, out *admissionregistration.RuleWithOperations, s conversion.Scope) error { + return autoConvert_v1alpha1_RuleWithOperations_To_admissionregistration_RuleWithOperations(in, out, s) +} + +func autoConvert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperations(in *admissionregistration.RuleWithOperations, out *RuleWithOperations, s conversion.Scope) error { + out.Operations = *(*[]OperationType)(unsafe.Pointer(&in.Operations)) + if err := Convert_admissionregistration_Rule_To_v1alpha1_Rule(&in.Rule, &out.Rule, s); err != nil { + return err + } + return nil +} + +// Convert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperations is an autogenerated conversion function. +func Convert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperations(in *admissionregistration.RuleWithOperations, out *RuleWithOperations, s conversion.Scope) error { + return autoConvert_admissionregistration_RuleWithOperations_To_v1alpha1_RuleWithOperations(in, out, s) +} + +func autoConvert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference(in *ServiceReference, out *admissionregistration.ServiceReference, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Name = in.Name + return nil +} + +// Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference is an autogenerated conversion function. +func Convert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference(in *ServiceReference, out *admissionregistration.ServiceReference, s conversion.Scope) error { + return autoConvert_v1alpha1_ServiceReference_To_admissionregistration_ServiceReference(in, out, s) +} + +func autoConvert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(in *admissionregistration.ServiceReference, out *ServiceReference, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Name = in.Name + return nil +} + +// Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference is an autogenerated conversion function. +func Convert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(in *admissionregistration.ServiceReference, out *ServiceReference, s conversion.Scope) error { + return autoConvert_admissionregistration_ServiceReference_To_v1alpha1_ServiceReference(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..526dbe3a2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,254 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_AdmissionHookClientConfig, InType: reflect.TypeOf(&AdmissionHookClientConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ExternalAdmissionHook, InType: reflect.TypeOf(&ExternalAdmissionHook{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ExternalAdmissionHookConfiguration, InType: reflect.TypeOf(&ExternalAdmissionHookConfiguration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ExternalAdmissionHookConfigurationList, InType: reflect.TypeOf(&ExternalAdmissionHookConfigurationList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Initializer, InType: reflect.TypeOf(&Initializer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_InitializerConfiguration, InType: reflect.TypeOf(&InitializerConfiguration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_InitializerConfigurationList, InType: reflect.TypeOf(&InitializerConfigurationList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Rule, InType: reflect.TypeOf(&Rule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RuleWithOperations, InType: reflect.TypeOf(&RuleWithOperations{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ServiceReference, InType: reflect.TypeOf(&ServiceReference{})}, + ) +} + +// DeepCopy_v1alpha1_AdmissionHookClientConfig is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_AdmissionHookClientConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AdmissionHookClientConfig) + out := out.(*AdmissionHookClientConfig) + *out = *in + if in.CABundle != nil { + in, out := &in.CABundle, &out.CABundle + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1alpha1_ExternalAdmissionHook is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ExternalAdmissionHook(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExternalAdmissionHook) + out := out.(*ExternalAdmissionHook) + *out = *in + if err := DeepCopy_v1alpha1_AdmissionHookClientConfig(&in.ClientConfig, &out.ClientConfig, c); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]RuleWithOperations, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_RuleWithOperations(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.FailurePolicy != nil { + in, out := &in.FailurePolicy, &out.FailurePolicy + *out = new(FailurePolicyType) + **out = **in + } + return nil + } +} + +// DeepCopy_v1alpha1_ExternalAdmissionHookConfiguration is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ExternalAdmissionHookConfiguration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExternalAdmissionHookConfiguration) + out := out.(*ExternalAdmissionHookConfiguration) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.ExternalAdmissionHooks != nil { + in, out := &in.ExternalAdmissionHooks, &out.ExternalAdmissionHooks + *out = make([]ExternalAdmissionHook, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_ExternalAdmissionHook(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_ExternalAdmissionHookConfigurationList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ExternalAdmissionHookConfigurationList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExternalAdmissionHookConfigurationList) + out := out.(*ExternalAdmissionHookConfigurationList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ExternalAdmissionHookConfiguration, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_ExternalAdmissionHookConfiguration(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_Initializer is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_Initializer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Initializer) + out := out.(*Initializer) + *out = *in + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]Rule, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_Rule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.FailurePolicy != nil { + in, out := &in.FailurePolicy, &out.FailurePolicy + *out = new(FailurePolicyType) + **out = **in + } + return nil + } +} + +// DeepCopy_v1alpha1_InitializerConfiguration is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_InitializerConfiguration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*InitializerConfiguration) + out := out.(*InitializerConfiguration) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + *out = make([]Initializer, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_Initializer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_InitializerConfigurationList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_InitializerConfigurationList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*InitializerConfigurationList) + out := out.(*InitializerConfigurationList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]InitializerConfiguration, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_InitializerConfiguration(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_Rule is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_Rule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Rule) + out := out.(*Rule) + *out = *in + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIVersions != nil { + in, out := &in.APIVersions, &out.APIVersions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1alpha1_RuleWithOperations is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_RuleWithOperations(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RuleWithOperations) + out := out.(*RuleWithOperations) + *out = *in + if in.Operations != nil { + in, out := &in.Operations, &out.Operations + *out = make([]OperationType, len(*in)) + copy(*out, *in) + } + if err := DeepCopy_v1alpha1_Rule(&in.Rule, &out.Rule, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1alpha1_ServiceReference is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ServiceReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceReference) + out := out.(*ServiceReference) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..74fea7f41 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/v1alpha1/zz_generated.defaults.go @@ -0,0 +1,70 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&ExternalAdmissionHookConfiguration{}, func(obj interface{}) { + SetObjectDefaults_ExternalAdmissionHookConfiguration(obj.(*ExternalAdmissionHookConfiguration)) + }) + scheme.AddTypeDefaultingFunc(&ExternalAdmissionHookConfigurationList{}, func(obj interface{}) { + SetObjectDefaults_ExternalAdmissionHookConfigurationList(obj.(*ExternalAdmissionHookConfigurationList)) + }) + scheme.AddTypeDefaultingFunc(&InitializerConfiguration{}, func(obj interface{}) { SetObjectDefaults_InitializerConfiguration(obj.(*InitializerConfiguration)) }) + scheme.AddTypeDefaultingFunc(&InitializerConfigurationList{}, func(obj interface{}) { + SetObjectDefaults_InitializerConfigurationList(obj.(*InitializerConfigurationList)) + }) + return nil +} + +func SetObjectDefaults_ExternalAdmissionHookConfiguration(in *ExternalAdmissionHookConfiguration) { + for i := range in.ExternalAdmissionHooks { + a := &in.ExternalAdmissionHooks[i] + SetDefaults_ExternalAdmissionHook(a) + } +} + +func SetObjectDefaults_ExternalAdmissionHookConfigurationList(in *ExternalAdmissionHookConfigurationList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ExternalAdmissionHookConfiguration(a) + } +} + +func SetObjectDefaults_InitializerConfiguration(in *InitializerConfiguration) { + for i := range in.Initializers { + a := &in.Initializers[i] + SetDefaults_Initializer(a) + } +} + +func SetObjectDefaults_InitializerConfigurationList(in *InitializerConfigurationList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_InitializerConfiguration(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/admissionregistration/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/zz_generated.deepcopy.go new file mode 100644 index 000000000..e41f28efa --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/admissionregistration/zz_generated.deepcopy.go @@ -0,0 +1,254 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package admissionregistration + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_AdmissionHookClientConfig, InType: reflect.TypeOf(&AdmissionHookClientConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_ExternalAdmissionHook, InType: reflect.TypeOf(&ExternalAdmissionHook{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_ExternalAdmissionHookConfiguration, InType: reflect.TypeOf(&ExternalAdmissionHookConfiguration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_ExternalAdmissionHookConfigurationList, InType: reflect.TypeOf(&ExternalAdmissionHookConfigurationList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_Initializer, InType: reflect.TypeOf(&Initializer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_InitializerConfiguration, InType: reflect.TypeOf(&InitializerConfiguration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_InitializerConfigurationList, InType: reflect.TypeOf(&InitializerConfigurationList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_Rule, InType: reflect.TypeOf(&Rule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_RuleWithOperations, InType: reflect.TypeOf(&RuleWithOperations{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_admissionregistration_ServiceReference, InType: reflect.TypeOf(&ServiceReference{})}, + ) +} + +// DeepCopy_admissionregistration_AdmissionHookClientConfig is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_AdmissionHookClientConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AdmissionHookClientConfig) + out := out.(*AdmissionHookClientConfig) + *out = *in + if in.CABundle != nil { + in, out := &in.CABundle, &out.CABundle + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_admissionregistration_ExternalAdmissionHook is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_ExternalAdmissionHook(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExternalAdmissionHook) + out := out.(*ExternalAdmissionHook) + *out = *in + if err := DeepCopy_admissionregistration_AdmissionHookClientConfig(&in.ClientConfig, &out.ClientConfig, c); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]RuleWithOperations, len(*in)) + for i := range *in { + if err := DeepCopy_admissionregistration_RuleWithOperations(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.FailurePolicy != nil { + in, out := &in.FailurePolicy, &out.FailurePolicy + *out = new(FailurePolicyType) + **out = **in + } + return nil + } +} + +// DeepCopy_admissionregistration_ExternalAdmissionHookConfiguration is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_ExternalAdmissionHookConfiguration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExternalAdmissionHookConfiguration) + out := out.(*ExternalAdmissionHookConfiguration) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.ExternalAdmissionHooks != nil { + in, out := &in.ExternalAdmissionHooks, &out.ExternalAdmissionHooks + *out = make([]ExternalAdmissionHook, len(*in)) + for i := range *in { + if err := DeepCopy_admissionregistration_ExternalAdmissionHook(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_admissionregistration_ExternalAdmissionHookConfigurationList is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_ExternalAdmissionHookConfigurationList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExternalAdmissionHookConfigurationList) + out := out.(*ExternalAdmissionHookConfigurationList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ExternalAdmissionHookConfiguration, len(*in)) + for i := range *in { + if err := DeepCopy_admissionregistration_ExternalAdmissionHookConfiguration(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_admissionregistration_Initializer is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_Initializer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Initializer) + out := out.(*Initializer) + *out = *in + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]Rule, len(*in)) + for i := range *in { + if err := DeepCopy_admissionregistration_Rule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.FailurePolicy != nil { + in, out := &in.FailurePolicy, &out.FailurePolicy + *out = new(FailurePolicyType) + **out = **in + } + return nil + } +} + +// DeepCopy_admissionregistration_InitializerConfiguration is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_InitializerConfiguration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*InitializerConfiguration) + out := out.(*InitializerConfiguration) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Initializers != nil { + in, out := &in.Initializers, &out.Initializers + *out = make([]Initializer, len(*in)) + for i := range *in { + if err := DeepCopy_admissionregistration_Initializer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_admissionregistration_InitializerConfigurationList is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_InitializerConfigurationList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*InitializerConfigurationList) + out := out.(*InitializerConfigurationList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]InitializerConfiguration, len(*in)) + for i := range *in { + if err := DeepCopy_admissionregistration_InitializerConfiguration(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_admissionregistration_Rule is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_Rule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Rule) + out := out.(*Rule) + *out = *in + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIVersions != nil { + in, out := &in.APIVersions, &out.APIVersions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_admissionregistration_RuleWithOperations is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_RuleWithOperations(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RuleWithOperations) + out := out.(*RuleWithOperations) + *out = *in + if in.Operations != nil { + in, out := &in.Operations, &out.Operations + *out = make([]OperationType, len(*in)) + copy(*out, *in) + } + if err := DeepCopy_admissionregistration_Rule(&in.Rule, &out.Rule, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_admissionregistration_ServiceReference is an autogenerated deepcopy function. +func DeepCopy_admissionregistration_ServiceReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceReference) + out := out.(*ServiceReference) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/BUILD b/vendor/k8s.io/client-go/pkg/apis/apps/BUILD new file mode 100644 index 000000000..0e23b5a0e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/OWNERS b/vendor/k8s.io/client-go/pkg/apis/apps/OWNERS new file mode 100755 index 000000000..1cdc56eec --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/OWNERS @@ -0,0 +1,21 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- deads2k +- caesarxuchao +- bprashanth +- pmorie +- sttts +- saad-ali +- ncdc +- timstclair +- timothysc +- dims +- errordeveloper +- mml +- m1093782566 +- mbohlool +- david-mcmahon +- kevin-wangzefeng +- jianhuiz diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/doc.go b/vendor/k8s.io/client-go/pkg/apis/apps/doc.go new file mode 100644 index 000000000..d27cee51c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apps diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/apps/install/BUILD new file mode 100644 index 000000000..8cc38c506 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/install/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/install/install.go b/vendor/k8s.io/client-go/pkg/apis/apps/install/install.go new file mode 100644 index 000000000..ca50f3ea4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/install/install.go @@ -0,0 +1,49 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the apps API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/apps" + "k8s.io/client-go/pkg/apis/apps/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: apps.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/apps", + AddInternalObjectsToScheme: apps.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/register.go b/vendor/k8s.io/client-go/pkg/apis/apps/register.go new file mode 100644 index 000000000..1098ce0a3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/register.go @@ -0,0 +1,60 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apps + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/pkg/apis/extensions" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package +const GroupName = "apps" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this will get cleaned up with the scheme types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &extensions.Deployment{}, + &extensions.DeploymentList{}, + &extensions.DeploymentRollback{}, + &extensions.Scale{}, + &StatefulSet{}, + &StatefulSetList{}, + &ControllerRevision{}, + &ControllerRevisionList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/types.go b/vendor/k8s.io/client-go/pkg/apis/apps/types.go new file mode 100644 index 000000000..9691120ea --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/types.go @@ -0,0 +1,229 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apps + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" +) + +// +genclient=true + +// StatefulSet represents a set of pods with consistent identities. +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// The StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +type StatefulSet struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the desired identities of pods in this set. + // +optional + Spec StatefulSetSpec + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + Status StatefulSetStatus +} + +// PodManagementPolicyType defines the policy for creating pods under a stateful set. +type PodManagementPolicyType string + +const ( + // OrderedReadyPodManagement will create pods in strictly increasing order on + // scale up and strictly decreasing order on scale down, progressing only when + // the previous pod is ready or terminated. At most one pod will be changed + // at any time. + OrderedReadyPodManagement PodManagementPolicyType = "OrderedReady" + // ParallelPodManagement will create and delete pods as soon as the stateful set + // replica count is changed, and will not wait for pods to be ready or complete + // termination. + ParallelPodManagement = "Parallel" +) + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +type StatefulSetUpdateStrategy struct { + // Type indicates the type of the StatefulSetUpdateStrategy. + Type StatefulSetUpdateStrategyType + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + RollingUpdate *RollingUpdateStatefulSetStrategy +} + +// StatefulSetUpdateStrategyType is a string enumeration type that enumerates +// all possible update strategies for the StatefulSet controller. +type StatefulSetUpdateStrategyType string + +const ( + // RollingUpdateStatefulSetStrategyType indicates that update will be + // applied to all Pods in the StatefulSet with respect to the StatefulSet + // ordering constraints. When a scale operation is performed with this + // strategy, new Pods will be created from the specification version indicated + // by the StatefulSet's updateRevision. + RollingUpdateStatefulSetStrategyType = "RollingUpdate" + // OnDeleteStatefulSetStrategyType triggers the legacy behavior. Version + // tracking and ordered rolling restarts are disabled. Pods are recreated + // from the StatefulSetSpec when they are manually deleted. When a scale + // operation is performed with this strategy,specification version indicated + // by the StatefulSet's currentRevision. + OnDeleteStatefulSetStrategyType = "OnDelete" +) + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +type RollingUpdateStatefulSetStrategy struct { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + Partition int32 +} + +// A StatefulSetSpec is the specification of a StatefulSet. +type StatefulSetSpec struct { + // Replicas is the desired number of replicas of the given Template. + // These are replicas in the sense that they are instantiations of the + // same Template, but individual replicas also have a consistent identity. + // If unspecified, defaults to 1. + // TODO: Consider a rename of this field. + // +optional + Replicas int32 + + // Selector is a label query over pods that should match the replica count. + // If empty, defaulted to labels on the pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. Each pod stamped out by the StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + Template api.PodTemplateSpec + + // VolumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. Every claim in + // this list must have at least one matching (by name) volumeMount in one + // container in the template. A claim in this list takes precedence over + // any volumes in the template, with the same name. + // TODO: Define the behavior if a claim already exists with the same name. + // +optional + VolumeClaimTemplates []api.PersistentVolumeClaim + + // ServiceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + ServiceName string + + // PodManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + PodManagementPolicy PodManagementPolicyType + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + UpdateStrategy StatefulSetUpdateStrategy + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + RevisionHistoryLimit *int32 +} + +// StatefulSetStatus represents the current state of a StatefulSet. +type StatefulSetStatus struct { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + ObservedGeneration *int64 + + // replicas is the number of Pods created by the StatefulSet controller. + Replicas int32 + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + ReadyReplicas int32 + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + CurrentReplicas int32 + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + UpdatedReplicas int32 + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + CurrentRevision string + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + UpdateRevision string +} + +// StatefulSetList is a collection of StatefulSets. +type StatefulSetList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + Items []StatefulSet +} + +// +genclient=true + +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. +type ControllerRevision struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Data is the Object representing the state. + Data runtime.Object + + // Revision indicates the revision of the state represented by Data. + Revision int64 +} + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +type ControllerRevisionList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // Items is the list of ControllerRevision objects. + Items []ControllerRevision +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/BUILD new file mode 100644 index 000000000..80660ab3e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/BUILD @@ -0,0 +1,42 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/conversion.go new file mode 100644 index 000000000..66badd15f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/conversion.go @@ -0,0 +1,342 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/apps" + "k8s.io/client-go/pkg/apis/extensions" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions to handle the *int32 -> int32 + // conversion. A pointer is useful in the versioned type so we can default + // it, but a plain int32 is more convenient in the internal type. These + // functions are the same as the autogenerated ones in every other way. + err := scheme.AddConversionFuncs( + Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec, + Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec, + Convert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy, + Convert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy, + // extensions + // TODO: below conversions should be dropped in favor of auto-generated + // ones, see https://github.com/kubernetes/kubernetextensionsssues/39865 + Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus, + Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus, + Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec, + Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec, + Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy, + Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy, + Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment, + Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment, + ) + if err != nil { + return err + } + + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + err = scheme.AddFieldLabelConversionFunc("apps/v1beta1", "StatefulSet", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported for StatefulSet: %s", label) + } + }) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("apps/v1beta1", "Deployment", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for Deployment", label) + } + }) + if err != nil { + return err + } + + return nil +} + +func Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(metav1.LabelSelector) + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := s.Convert(&in.Template, &out.Template, 0); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]api.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + if err := Convert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + out.RevisionHistoryLimit = new(int32) + *out.RevisionHistoryLimit = *in.RevisionHistoryLimit + } else { + out.RevisionHistoryLimit = nil + } + out.ServiceName = in.ServiceName + out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy) + return nil +} + +func Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.StatefulSetSpec, out *StatefulSetSpec, s conversion.Scope) error { + out.Replicas = new(int32) + *out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(metav1.LabelSelector) + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := s.Convert(&in.Template, &out.Template, 0); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + if in.RevisionHistoryLimit != nil { + out.RevisionHistoryLimit = new(int32) + *out.RevisionHistoryLimit = *in.RevisionHistoryLimit + } else { + out.RevisionHistoryLimit = nil + } + out.ServiceName = in.ServiceName + out.PodManagementPolicy = PodManagementPolicyType(in.PodManagementPolicy) + if err := Convert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(in *StatefulSetUpdateStrategy, out *apps.StatefulSetUpdateStrategy, s conversion.Scope) error { + out.Type = apps.StatefulSetUpdateStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(apps.RollingUpdateStatefulSetStrategy) + out.RollingUpdate.Partition = *in.RollingUpdate.Partition + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy(in *apps.StatefulSetUpdateStrategy, out *StatefulSetUpdateStrategy, s conversion.Scope) error { + out.Type = StatefulSetUpdateStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(RollingUpdateStatefulSetStrategy) + out.RollingUpdate.Partition = new(int32) + *out.RollingUpdate.Partition = in.RollingUpdate.Partition + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = int32(in.Replicas) + + out.Selector = nil + out.TargetSelector = "" + if in.Selector != nil { + if in.Selector.MatchExpressions == nil || len(in.Selector.MatchExpressions) == 0 { + out.Selector = in.Selector.MatchLabels + } + + selector, err := metav1.LabelSelectorAsSelector(in.Selector) + if err != nil { + return fmt.Errorf("invalid label selector: %v", err) + } + out.TargetSelector = selector.String() + } + return nil +} + +func Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + + // Normally when 2 fields map to the same internal value we favor the old field, since + // old clients can't be expected to know about new fields but clients that know about the + // new field can be expected to know about the old field (though that's not quite true, due + // to kubectl apply). However, these fields are readonly, so any non-nil value should work. + if in.TargetSelector != "" { + labelSelector, err := metav1.ParseToLabelSelector(in.TargetSelector) + if err != nil { + out.Selector = nil + return fmt.Errorf("failed to parse target selector: %v", err) + } + out.Selector = labelSelector + } else if in.Selector != nil { + out.Selector = new(metav1.LabelSelector) + selector := make(map[string]string) + for key, val := range in.Selector { + selector[key] = val + } + out.Selector.MatchLabels = selector + } else { + out.Selector = nil + } + return nil +} + +func Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + out.Selector = in.Selector + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.RevisionHistoryLimit = in.RevisionHistoryLimit + out.MinReadySeconds = in.MinReadySeconds + out.Paused = in.Paused + if in.RollbackTo != nil { + out.RollbackTo = new(extensions.RollbackConfig) + out.RollbackTo.Revision = in.RollbackTo.Revision + } else { + out.RollbackTo = nil + } + if in.ProgressDeadlineSeconds != nil { + out.ProgressDeadlineSeconds = new(int32) + *out.ProgressDeadlineSeconds = *in.ProgressDeadlineSeconds + } + return nil +} + +func Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *DeploymentSpec, s conversion.Scope) error { + out.Replicas = &in.Replicas + out.Selector = in.Selector + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + out.RevisionHistoryLimit = new(int32) + *out.RevisionHistoryLimit = int32(*in.RevisionHistoryLimit) + } + out.MinReadySeconds = int32(in.MinReadySeconds) + out.Paused = in.Paused + if in.RollbackTo != nil { + out.RollbackTo = new(RollbackConfig) + out.RollbackTo.Revision = int64(in.RollbackTo.Revision) + } else { + out.RollbackTo = nil + } + if in.ProgressDeadlineSeconds != nil { + out.ProgressDeadlineSeconds = new(int32) + *out.ProgressDeadlineSeconds = *in.ProgressDeadlineSeconds + } + return nil +} + +func Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(in *extensions.DeploymentStrategy, out *DeploymentStrategy, s conversion.Scope) error { + out.Type = DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(RollingUpdateDeployment) + if err := Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(in *DeploymentStrategy, out *extensions.DeploymentStrategy, s conversion.Scope) error { + out.Type = extensions.DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(extensions.RollingUpdateDeployment) + if err := Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in *RollingUpdateDeployment, out *extensions.RollingUpdateDeployment, s conversion.Scope) error { + if err := s.Convert(in.MaxUnavailable, &out.MaxUnavailable, 0); err != nil { + return err + } + if err := s.Convert(in.MaxSurge, &out.MaxSurge, 0); err != nil { + return err + } + return nil +} + +func Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in *extensions.RollingUpdateDeployment, out *RollingUpdateDeployment, s conversion.Scope) error { + if out.MaxUnavailable == nil { + out.MaxUnavailable = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil { + return err + } + if out.MaxSurge == nil { + out.MaxSurge = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil { + return err + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/defaults.go new file mode 100644 index 000000000..af133d25f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/defaults.go @@ -0,0 +1,117 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_StatefulSet(obj *StatefulSet) { + if len(obj.Spec.PodManagementPolicy) == 0 { + obj.Spec.PodManagementPolicy = OrderedReadyPodManagement + } + + if obj.Spec.UpdateStrategy.Type == "" { + obj.Spec.UpdateStrategy.Type = OnDeleteStatefulSetStrategyType + } + labels := obj.Spec.Template.Labels + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &metav1.LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } + if obj.Spec.RevisionHistoryLimit == nil { + obj.Spec.RevisionHistoryLimit = new(int32) + *obj.Spec.RevisionHistoryLimit = 10 + } + if obj.Spec.UpdateStrategy.Type == RollingUpdateStatefulSetStrategyType && + obj.Spec.UpdateStrategy.RollingUpdate != nil && + obj.Spec.UpdateStrategy.RollingUpdate.Partition == nil { + obj.Spec.UpdateStrategy.RollingUpdate.Partition = new(int32) + *obj.Spec.UpdateStrategy.RollingUpdate.Partition = 0 + } + +} + +// SetDefaults_Deployment sets additional defaults compared to its counterpart +// in extensions. These addons are: +// - MaxUnavailable during rolling update set to 25% (1 in extensions) +// - MaxSurge value during rolling update set to 25% (1 in extensions) +// - RevisionHistoryLimit set to 2 (not set in extensions) +// - ProgressDeadlineSeconds set to 600s (not set in extensions) +func SetDefaults_Deployment(obj *Deployment) { + // Default labels and selector to labels from pod template spec. + labels := obj.Spec.Template.Labels + + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &metav1.LabelSelector{MatchLabels: labels} + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + // Set DeploymentSpec.Replicas to 1 if it is not set. + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } + strategy := &obj.Spec.Strategy + // Set default DeploymentStrategyType as RollingUpdate. + if strategy.Type == "" { + strategy.Type = RollingUpdateDeploymentStrategyType + } + if strategy.Type == RollingUpdateDeploymentStrategyType { + if strategy.RollingUpdate == nil { + rollingUpdate := RollingUpdateDeployment{} + strategy.RollingUpdate = &rollingUpdate + } + if strategy.RollingUpdate.MaxUnavailable == nil { + // Set default MaxUnavailable as 25% by default. + maxUnavailable := intstr.FromString("25%") + strategy.RollingUpdate.MaxUnavailable = &maxUnavailable + } + if strategy.RollingUpdate.MaxSurge == nil { + // Set default MaxSurge as 25% by default. + maxSurge := intstr.FromString("25%") + strategy.RollingUpdate.MaxSurge = &maxSurge + } + } + if obj.Spec.RevisionHistoryLimit == nil { + obj.Spec.RevisionHistoryLimit = new(int32) + *obj.Spec.RevisionHistoryLimit = 2 + } + if obj.Spec.ProgressDeadlineSeconds == nil { + obj.Spec.ProgressDeadlineSeconds = new(int32) + *obj.Spec.ProgressDeadlineSeconds = 600 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/doc.go new file mode 100644 index 000000000..a397b30e9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.pb.go new file mode 100644 index 000000000..9f7395c8f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.pb.go @@ -0,0 +1,4934 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/apps/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/apps/v1beta1/generated.proto + + It has these top-level messages: + ControllerRevision + ControllerRevisionList + Deployment + DeploymentCondition + DeploymentList + DeploymentRollback + DeploymentSpec + DeploymentStatus + DeploymentStrategy + RollbackConfig + RollingUpdateDeployment + RollingUpdateStatefulSetStrategy + Scale + ScaleSpec + ScaleStatus + StatefulSet + StatefulSetList + StatefulSetSpec + StatefulSetStatus + StatefulSetUpdateStrategy +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ControllerRevision) Reset() { *m = ControllerRevision{} } +func (*ControllerRevision) ProtoMessage() {} +func (*ControllerRevision) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ControllerRevisionList) Reset() { *m = ControllerRevisionList{} } +func (*ControllerRevisionList) ProtoMessage() {} +func (*ControllerRevisionList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *Deployment) Reset() { *m = Deployment{} } +func (*Deployment) ProtoMessage() {} +func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *DeploymentCondition) Reset() { *m = DeploymentCondition{} } +func (*DeploymentCondition) ProtoMessage() {} +func (*DeploymentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *DeploymentList) Reset() { *m = DeploymentList{} } +func (*DeploymentList) ProtoMessage() {} +func (*DeploymentList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *DeploymentRollback) Reset() { *m = DeploymentRollback{} } +func (*DeploymentRollback) ProtoMessage() {} +func (*DeploymentRollback) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *DeploymentSpec) Reset() { *m = DeploymentSpec{} } +func (*DeploymentSpec) ProtoMessage() {} +func (*DeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *DeploymentStatus) Reset() { *m = DeploymentStatus{} } +func (*DeploymentStatus) ProtoMessage() {} +func (*DeploymentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *DeploymentStrategy) Reset() { *m = DeploymentStrategy{} } +func (*DeploymentStrategy) ProtoMessage() {} +func (*DeploymentStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *RollbackConfig) Reset() { *m = RollbackConfig{} } +func (*RollbackConfig) ProtoMessage() {} +func (*RollbackConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *RollingUpdateDeployment) Reset() { *m = RollingUpdateDeployment{} } +func (*RollingUpdateDeployment) ProtoMessage() {} +func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{10} +} + +func (m *RollingUpdateStatefulSetStrategy) Reset() { *m = RollingUpdateStatefulSetStrategy{} } +func (*RollingUpdateStatefulSetStrategy) ProtoMessage() {} +func (*RollingUpdateStatefulSetStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{11} +} + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *StatefulSet) Reset() { *m = StatefulSet{} } +func (*StatefulSet) ProtoMessage() {} +func (*StatefulSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *StatefulSetList) Reset() { *m = StatefulSetList{} } +func (*StatefulSetList) ProtoMessage() {} +func (*StatefulSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *StatefulSetSpec) Reset() { *m = StatefulSetSpec{} } +func (*StatefulSetSpec) ProtoMessage() {} +func (*StatefulSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *StatefulSetStatus) Reset() { *m = StatefulSetStatus{} } +func (*StatefulSetStatus) ProtoMessage() {} +func (*StatefulSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *StatefulSetUpdateStrategy) Reset() { *m = StatefulSetUpdateStrategy{} } +func (*StatefulSetUpdateStrategy) ProtoMessage() {} +func (*StatefulSetUpdateStrategy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{19} +} + +func init() { + proto.RegisterType((*ControllerRevision)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.ControllerRevision") + proto.RegisterType((*ControllerRevisionList)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.ControllerRevisionList") + proto.RegisterType((*Deployment)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.Deployment") + proto.RegisterType((*DeploymentCondition)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.DeploymentCondition") + proto.RegisterType((*DeploymentList)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.DeploymentList") + proto.RegisterType((*DeploymentRollback)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.DeploymentRollback") + proto.RegisterType((*DeploymentSpec)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.DeploymentSpec") + proto.RegisterType((*DeploymentStatus)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.DeploymentStatus") + proto.RegisterType((*DeploymentStrategy)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.DeploymentStrategy") + proto.RegisterType((*RollbackConfig)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.RollbackConfig") + proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.RollingUpdateDeployment") + proto.RegisterType((*RollingUpdateStatefulSetStrategy)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.RollingUpdateStatefulSetStrategy") + proto.RegisterType((*Scale)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.ScaleStatus") + proto.RegisterType((*StatefulSet)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.StatefulSet") + proto.RegisterType((*StatefulSetList)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.StatefulSetList") + proto.RegisterType((*StatefulSetSpec)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.StatefulSetSpec") + proto.RegisterType((*StatefulSetStatus)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.StatefulSetStatus") + proto.RegisterType((*StatefulSetUpdateStrategy)(nil), "k8s.io.client-go.pkg.apis.apps.v1beta1.StatefulSetUpdateStrategy") +} +func (m *ControllerRevision) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ControllerRevision) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Data.Size())) + n2, err := m.Data.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Revision)) + return i, nil +} + +func (m *ControllerRevisionList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ControllerRevisionList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *Deployment) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Deployment) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n4, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n5, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n6, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + return i, nil +} + +func (m *DeploymentCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastUpdateTime.Size())) + n7, err := m.LastUpdateTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n8, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + +func (m *DeploymentList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n9, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DeploymentRollback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentRollback) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if len(m.UpdatedAnnotations) > 0 { + keysForUpdatedAnnotations := make([]string, 0, len(m.UpdatedAnnotations)) + for k := range m.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + for _, k := range keysForUpdatedAnnotations { + dAtA[i] = 0x12 + i++ + v := m.UpdatedAnnotations[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollbackTo.Size())) + n10, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + return i, nil +} + +func (m *DeploymentSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n11, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n12, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Strategy.Size())) + n13, err := m.Strategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + dAtA[i] = 0x38 + i++ + if m.Paused { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.RollbackTo != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollbackTo.Size())) + n14, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + if m.ProgressDeadlineSeconds != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ProgressDeadlineSeconds)) + } + return i, nil +} + +func (m *DeploymentStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UnavailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *DeploymentStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.RollingUpdate != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size())) + n15, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + } + return i, nil +} + +func (m *RollbackConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollbackConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Revision)) + return i, nil +} + +func (m *RollingUpdateDeployment) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateDeployment) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.MaxUnavailable != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxUnavailable.Size())) + n16, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + } + if m.MaxSurge != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxSurge.Size())) + n17, err := m.MaxSurge.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + } + return i, nil +} + +func (m *RollingUpdateStatefulSetStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateStatefulSetStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Partition != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Partition)) + } + return i, nil +} + +func (m *Scale) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Scale) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n18, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n19, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n20, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + return i, nil +} + +func (m *ScaleSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + return i, nil +} + +func (m *ScaleStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + if len(m.Selector) > 0 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TargetSelector))) + i += copy(dAtA[i:], m.TargetSelector) + return i, nil +} + +func (m *StatefulSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSet) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n21, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n22, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n23, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + return i, nil +} + +func (m *StatefulSetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n24, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *StatefulSetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n25, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n26, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + if len(m.VolumeClaimTemplates) > 0 { + for _, msg := range m.VolumeClaimTemplates { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServiceName))) + i += copy(dAtA[i:], m.ServiceName) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodManagementPolicy))) + i += copy(dAtA[i:], m.PodManagementPolicy) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size())) + n27, err := m.UpdateStrategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + return i, nil +} + +func (m *StatefulSetStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ObservedGeneration != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ObservedGeneration)) + } + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedReplicas)) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.CurrentRevision))) + i += copy(dAtA[i:], m.CurrentRevision) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UpdateRevision))) + i += copy(dAtA[i:], m.UpdateRevision) + return i, nil +} + +func (m *StatefulSetUpdateStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.RollingUpdate != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size())) + n28, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *ControllerRevision) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Data.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Revision)) + return n +} + +func (m *ControllerRevisionList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Deployment) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastUpdateTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DeploymentRollback) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.UpdatedAnnotations) > 0 { + for k, v := range m.UpdatedAnnotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = m.RollbackTo.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Strategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + n += 2 + if m.RollbackTo != nil { + l = m.RollbackTo.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ProgressDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ProgressDeadlineSeconds)) + } + return n +} + +func (m *DeploymentStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.UpdatedReplicas)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + n += 1 + sovGenerated(uint64(m.UnavailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *DeploymentStrategy) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.RollingUpdate != nil { + l = m.RollingUpdate.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *RollbackConfig) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Revision)) + return n +} + +func (m *RollingUpdateDeployment) Size() (n int) { + var l int + _ = l + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.MaxSurge != nil { + l = m.MaxSurge.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *RollingUpdateStatefulSetStrategy) Size() (n int) { + var l int + _ = l + if m.Partition != nil { + n += 1 + sovGenerated(uint64(*m.Partition)) + } + return n +} + +func (m *Scale) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScaleSpec) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + return n +} + +func (m *ScaleStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.TargetSelector) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *StatefulSet) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *StatefulSetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *StatefulSetSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.VolumeClaimTemplates) > 0 { + for _, e := range m.VolumeClaimTemplates { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ServiceName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.PodManagementPolicy) + n += 1 + l + sovGenerated(uint64(l)) + l = m.UpdateStrategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + return n +} + +func (m *StatefulSetStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.UpdatedReplicas)) + l = len(m.CurrentRevision) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UpdateRevision) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *StatefulSetUpdateStrategy) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.RollingUpdate != nil { + l = m.RollingUpdate.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *ControllerRevision) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ControllerRevision{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + strings.Replace(strings.Replace(this.Data.String(), "RawExtension", "k8s_io_apimachinery_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `}`, + }, "") + return s +} +func (this *ControllerRevisionList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ControllerRevisionList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ControllerRevision", "ControllerRevision", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Deployment) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Deployment{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DeploymentSpec", "DeploymentSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "DeploymentStatus", "DeploymentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Deployment", "Deployment", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentRollback) String() string { + if this == nil { + return "nil" + } + keysForUpdatedAnnotations := make([]string, 0, len(this.UpdatedAnnotations)) + for k := range this.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + mapStringForUpdatedAnnotations := "map[string]string{" + for _, k := range keysForUpdatedAnnotations { + mapStringForUpdatedAnnotations += fmt.Sprintf("%v: %v,", k, this.UpdatedAnnotations[k]) + } + mapStringForUpdatedAnnotations += "}" + s := strings.Join([]string{`&DeploymentRollback{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UpdatedAnnotations:` + mapStringForUpdatedAnnotations + `,`, + `RollbackTo:` + strings.Replace(strings.Replace(this.RollbackTo.String(), "RollbackConfig", "RollbackConfig", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `Strategy:` + strings.Replace(strings.Replace(this.Strategy.String(), "DeploymentStrategy", "DeploymentStrategy", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, + `RollbackTo:` + strings.Replace(fmt.Sprintf("%v", this.RollbackTo), "RollbackConfig", "RollbackConfig", 1) + `,`, + `ProgressDeadlineSeconds:` + valueToStringGenerated(this.ProgressDeadlineSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentStatus{`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `UnavailableReplicas:` + fmt.Sprintf("%v", this.UnavailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateDeployment", "RollingUpdateDeployment", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RollbackConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollbackConfig{`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateDeployment) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateDeployment{`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `MaxSurge:` + strings.Replace(fmt.Sprintf("%v", this.MaxSurge), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateStatefulSetStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateStatefulSetStrategy{`, + `Partition:` + valueToStringGenerated(this.Partition) + `,`, + `}`, + }, "") + return s +} +func (this *Scale) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Scale{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ScaleSpec", "ScaleSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ScaleStatus", "ScaleStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleSpec{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleStatus) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ScaleStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `Selector:` + mapStringForSelector + `,`, + `TargetSelector:` + fmt.Sprintf("%v", this.TargetSelector) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "StatefulSetSpec", "StatefulSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "StatefulSetStatus", "StatefulSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StatefulSet", "StatefulSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `VolumeClaimTemplates:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeClaimTemplates), "PersistentVolumeClaim", "k8s_io_kubernetes_pkg_api_v1.PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, + `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `PodManagementPolicy:` + fmt.Sprintf("%v", this.PodManagementPolicy) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(this.UpdateStrategy.String(), "StatefulSetUpdateStrategy", "StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`, + `CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`, + `UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`, + `}`, + }, "") + return s +} +func (this *StatefulSetUpdateStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatefulSetUpdateStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateStatefulSetStrategy", "RollingUpdateStatefulSetStrategy", 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ControllerRevision) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ControllerRevision: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ControllerRevision: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + m.Revision = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Revision |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ControllerRevisionList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ControllerRevisionList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ControllerRevisionList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ControllerRevision{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Deployment) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Deployment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Deployment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = DeploymentConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastUpdateTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastUpdateTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Deployment{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentRollback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentRollback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentRollback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedAnnotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.UpdatedAnnotations == nil { + m.UpdatedAnnotations = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.UpdatedAnnotations[mapkey] = mapvalue + } else { + var mapvalue string + m.UpdatedAnnotations[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollbackTo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RollbackTo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Strategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReadySeconds", wireType) + } + m.MinReadySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinReadySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RevisionHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RevisionHistoryLimit = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollbackTo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollbackTo == nil { + m.RollbackTo = &RollbackConfig{} + } + if err := m.RollbackTo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProgressDeadlineSeconds", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ProgressDeadlineSeconds = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedReplicas", wireType) + } + m.UpdatedReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdatedReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableReplicas", wireType) + } + m.AvailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AvailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnavailableReplicas", wireType) + } + m.UnavailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnavailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, DeploymentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CollisionCount = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = DeploymentStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollingUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollingUpdate == nil { + m.RollingUpdate = &RollingUpdateDeployment{} + } + if err := m.RollingUpdate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollbackConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollbackConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollbackConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + m.Revision = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Revision |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollingUpdateDeployment) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateDeployment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateDeployment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxUnavailable == nil { + m.MaxUnavailable = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSurge", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxSurge == nil { + m.MaxSurge = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxSurge.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollingUpdateStatefulSetStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateStatefulSetStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateStatefulSetStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Partition = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Scale) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Scale: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Scale: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Selector[mapkey] = mapvalue + } else { + var mapvalue string + m.Selector[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, StatefulSet{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeClaimTemplates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeClaimTemplates = append(m.VolumeClaimTemplates, k8s_io_kubernetes_pkg_api_v1.PersistentVolumeClaim{}) + if err := m.VolumeClaimTemplates[len(m.VolumeClaimTemplates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServiceName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodManagementPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodManagementPolicy = PodManagementPolicyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RevisionHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RevisionHistoryLimit = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ObservedGeneration = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentReplicas", wireType) + } + m.CurrentReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CurrentReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedReplicas", wireType) + } + m.UpdatedReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdatedReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentRevision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CurrentRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateRevision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UpdateRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatefulSetUpdateStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatefulSetUpdateStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatefulSetUpdateStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = StatefulSetUpdateStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollingUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollingUpdate == nil { + m.RollingUpdate = &RollingUpdateStatefulSetStrategy{} + } + if err := m.RollingUpdate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/apps/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1812 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4f, 0x6f, 0x23, 0x49, + 0x15, 0x4f, 0xfb, 0x4f, 0xe2, 0x54, 0x36, 0xce, 0x4c, 0x25, 0x4c, 0xbc, 0x59, 0x70, 0x22, 0x1f, + 0x76, 0x03, 0x6c, 0xda, 0x4c, 0x66, 0xd8, 0x9d, 0x49, 0xd0, 0x88, 0x74, 0x66, 0x58, 0x06, 0x25, + 0x24, 0x2a, 0x27, 0x23, 0x76, 0x58, 0xa4, 0x2d, 0xb7, 0x6b, 0x3a, 0xbd, 0xe9, 0x7f, 0xea, 0xae, + 0x36, 0xe3, 0x1b, 0x5a, 0x89, 0x1b, 0x07, 0xbe, 0x00, 0xe2, 0x8e, 0x90, 0xf8, 0x1a, 0x11, 0x1c, + 0x58, 0x71, 0x1a, 0x71, 0x88, 0x88, 0xf7, 0x23, 0x20, 0x2e, 0x73, 0x42, 0x55, 0x5d, 0xfd, 0xdf, + 0x9d, 0xd8, 0x46, 0xe4, 0xb2, 0x37, 0x77, 0xbd, 0xf7, 0x7e, 0xef, 0x55, 0xd5, 0x7b, 0xaf, 0x7e, + 0xcf, 0xe0, 0xe3, 0xf3, 0x47, 0x9e, 0xac, 0xdb, 0xed, 0x73, 0xbf, 0x4b, 0x5c, 0x8b, 0x50, 0xe2, + 0xb5, 0x9d, 0x73, 0xad, 0x8d, 0x1d, 0xdd, 0x6b, 0x63, 0xc7, 0xf1, 0xda, 0xfd, 0xfb, 0x5d, 0x42, + 0xf1, 0xfd, 0xb6, 0x46, 0x2c, 0xe2, 0x62, 0x4a, 0x7a, 0xb2, 0xe3, 0xda, 0xd4, 0x86, 0x1f, 0x04, + 0x86, 0x72, 0x6c, 0x28, 0x3b, 0xe7, 0x9a, 0xcc, 0x0c, 0x65, 0x66, 0x28, 0x0b, 0xc3, 0xb5, 0x2d, + 0x4d, 0xa7, 0x67, 0x7e, 0x57, 0x56, 0x6d, 0xb3, 0xad, 0xd9, 0x9a, 0xdd, 0xe6, 0xf6, 0x5d, 0xff, + 0x15, 0xff, 0xe2, 0x1f, 0xfc, 0x57, 0x80, 0xbb, 0xf6, 0x50, 0x04, 0x84, 0x1d, 0xdd, 0xc4, 0xea, + 0x99, 0x6e, 0x11, 0x77, 0x10, 0x87, 0x64, 0x12, 0x8a, 0xdb, 0xfd, 0x5c, 0x34, 0x6b, 0xed, 0x22, + 0x2b, 0xd7, 0xb7, 0xa8, 0x6e, 0x92, 0x9c, 0xc1, 0x47, 0x37, 0x19, 0x78, 0xea, 0x19, 0x31, 0x71, + 0xce, 0xee, 0x41, 0x91, 0x9d, 0x4f, 0x75, 0xa3, 0xad, 0x5b, 0xd4, 0xa3, 0x6e, 0xce, 0xe8, 0xc3, + 0xc2, 0x43, 0x1e, 0xb5, 0x97, 0xc7, 0xd7, 0x5c, 0x89, 0x63, 0x1b, 0xba, 0x3a, 0x28, 0xba, 0x94, + 0xd6, 0x7f, 0x24, 0x00, 0xf7, 0x6d, 0x8b, 0xba, 0xb6, 0x61, 0x10, 0x17, 0x91, 0xbe, 0xee, 0xe9, + 0xb6, 0x05, 0x3f, 0x07, 0x35, 0x76, 0x70, 0x3d, 0x4c, 0x71, 0x43, 0xda, 0x90, 0x36, 0x17, 0xb6, + 0x7f, 0x20, 0x8b, 0xeb, 0x4b, 0xee, 0x23, 0xbe, 0x40, 0xa6, 0x2d, 0xf7, 0xef, 0xcb, 0x47, 0xdd, + 0x2f, 0x88, 0x4a, 0x0f, 0x09, 0xc5, 0x0a, 0xbc, 0xb8, 0x5c, 0x9f, 0x19, 0x5e, 0xae, 0x83, 0x78, + 0x0d, 0x45, 0xa8, 0xf0, 0x08, 0x54, 0x38, 0x7a, 0x89, 0xa3, 0x6f, 0x15, 0xa2, 0x8b, 0xd3, 0x95, + 0x11, 0xfe, 0xf5, 0xb3, 0xd7, 0x94, 0x58, 0x2c, 0x3c, 0xe5, 0x1d, 0x01, 0x5d, 0x79, 0x8a, 0x29, + 0x46, 0x1c, 0x08, 0x7e, 0x08, 0x6a, 0xae, 0x08, 0xbf, 0x51, 0xde, 0x90, 0x36, 0xcb, 0xca, 0x1d, + 0xa1, 0x55, 0x0b, 0xb7, 0x85, 0x22, 0x8d, 0xd6, 0x1b, 0x09, 0xdc, 0xcb, 0xef, 0xfb, 0x40, 0xf7, + 0x28, 0xfc, 0x2c, 0xb7, 0x77, 0x79, 0xbc, 0xbd, 0x33, 0x6b, 0xbe, 0xf3, 0xc8, 0x71, 0xb8, 0x92, + 0xd8, 0xf7, 0xe7, 0xa0, 0xaa, 0x53, 0x62, 0x7a, 0x8d, 0xd2, 0x46, 0x79, 0x73, 0x61, 0x7b, 0x57, + 0x1e, 0xb3, 0x2a, 0xe4, 0x7c, 0xb4, 0xca, 0xa2, 0xf0, 0x53, 0x7d, 0xce, 0x10, 0x51, 0x00, 0xdc, + 0xfa, 0x73, 0x09, 0x80, 0xa7, 0xc4, 0x31, 0xec, 0x81, 0x49, 0x2c, 0x7a, 0x0b, 0x57, 0xf9, 0x29, + 0xa8, 0x78, 0x0e, 0x51, 0xc5, 0x55, 0x7e, 0x3c, 0xf6, 0x8e, 0xe2, 0x20, 0x3b, 0x0e, 0x51, 0xe3, + 0x4b, 0x65, 0x5f, 0x88, 0x43, 0x42, 0x0c, 0x66, 0x3d, 0x8a, 0xa9, 0xef, 0xf1, 0x2b, 0x5d, 0xd8, + 0x7e, 0x3c, 0x0d, 0x38, 0x07, 0x50, 0xea, 0x02, 0x7e, 0x36, 0xf8, 0x46, 0x02, 0xb8, 0x75, 0x55, + 0x06, 0xcb, 0xb1, 0xf2, 0xbe, 0x6d, 0xf5, 0x74, 0xca, 0x4a, 0x60, 0x17, 0x54, 0xe8, 0xc0, 0x21, + 0xfc, 0xcc, 0xe6, 0x95, 0x0f, 0xc2, 0xe0, 0x4e, 0x06, 0x0e, 0x79, 0x7b, 0xb9, 0xbe, 0x3a, 0xc2, + 0x84, 0x89, 0x10, 0x37, 0x82, 0x2f, 0xa2, 0xb8, 0x4b, 0xdc, 0xfc, 0x49, 0xda, 0xf9, 0xdb, 0xcb, + 0xf5, 0x6b, 0x2b, 0x5c, 0x8e, 0x30, 0xd3, 0xc1, 0xc2, 0xf7, 0xc1, 0xac, 0x4b, 0xb0, 0x67, 0x5b, + 0x8d, 0x0a, 0xc7, 0x8d, 0x36, 0x85, 0xf8, 0x2a, 0x12, 0x52, 0xf8, 0x5d, 0x30, 0x67, 0x12, 0xcf, + 0xc3, 0x1a, 0x69, 0x54, 0xb9, 0xe2, 0x92, 0x50, 0x9c, 0x3b, 0x0c, 0x96, 0x51, 0x28, 0x87, 0x5f, + 0x80, 0xba, 0x81, 0x3d, 0x7a, 0xea, 0xf4, 0x30, 0x25, 0x27, 0xba, 0x49, 0x1a, 0xb3, 0xfc, 0xa8, + 0xbf, 0x37, 0x5e, 0x96, 0x30, 0x0b, 0xe5, 0x9e, 0x40, 0xaf, 0x1f, 0xa4, 0x90, 0x50, 0x06, 0x19, + 0xf6, 0x01, 0x64, 0x2b, 0x27, 0x2e, 0xb6, 0xbc, 0xe0, 0xc8, 0x98, 0xbf, 0xb9, 0x89, 0xfd, 0xad, + 0x09, 0x7f, 0xf0, 0x20, 0x87, 0x86, 0x46, 0x78, 0x68, 0x5d, 0x48, 0xa0, 0x1e, 0x5f, 0xd8, 0x2d, + 0x54, 0xf9, 0x2f, 0xd2, 0x55, 0xfe, 0x60, 0x8a, 0xb4, 0x2d, 0xa8, 0xee, 0xdf, 0x95, 0x01, 0x8c, + 0x95, 0x90, 0x6d, 0x18, 0x5d, 0xac, 0x9e, 0xc3, 0x0d, 0x50, 0xb1, 0xb0, 0x19, 0x66, 0x6b, 0x54, + 0x4a, 0x3f, 0xc7, 0x26, 0x41, 0x5c, 0x02, 0xff, 0x28, 0x01, 0xe8, 0xf3, 0xab, 0xe8, 0xed, 0x59, + 0x96, 0x4d, 0x31, 0x3b, 0x9d, 0x30, 0xc0, 0xce, 0x14, 0x01, 0x86, 0xbe, 0xe5, 0xd3, 0x1c, 0xea, + 0x33, 0x8b, 0xba, 0x83, 0xf8, 0x96, 0xf2, 0x0a, 0x68, 0x44, 0x28, 0xf0, 0x1c, 0x00, 0x57, 0x60, + 0x9e, 0xd8, 0xa2, 0xe0, 0xc7, 0xef, 0x26, 0x61, 0x38, 0xfb, 0xb6, 0xf5, 0x4a, 0xd7, 0xe2, 0x96, + 0x85, 0x22, 0x48, 0x94, 0x80, 0x5f, 0x7b, 0x06, 0x56, 0x0b, 0xe2, 0x86, 0x77, 0x40, 0xf9, 0x9c, + 0x0c, 0x82, 0xa3, 0x44, 0xec, 0x27, 0x5c, 0x01, 0xd5, 0x3e, 0x36, 0x7c, 0x12, 0x54, 0x33, 0x0a, + 0x3e, 0x76, 0x4a, 0x8f, 0xa4, 0xd6, 0x3f, 0xab, 0xc9, 0xcc, 0x62, 0x9d, 0x0b, 0x6e, 0xb2, 0x87, + 0xc8, 0x31, 0x74, 0x15, 0x7b, 0x1c, 0xa3, 0xaa, 0xbc, 0x13, 0x3c, 0x42, 0xc1, 0x1a, 0x8a, 0xa4, + 0xf0, 0x57, 0xa0, 0xe6, 0x11, 0x83, 0xa8, 0xd4, 0x76, 0x45, 0xf3, 0x7c, 0x30, 0x66, 0x0e, 0xe2, + 0x2e, 0x31, 0x3a, 0xc2, 0x34, 0x80, 0x0f, 0xbf, 0x50, 0x04, 0x09, 0x7f, 0x09, 0x6a, 0x94, 0x98, + 0x8e, 0x81, 0x29, 0x11, 0xa7, 0xb9, 0x55, 0x7c, 0x9a, 0x0c, 0xf6, 0xd8, 0xee, 0x9d, 0x08, 0x03, + 0xde, 0x91, 0xa3, 0x0c, 0x0f, 0x57, 0x51, 0x04, 0x08, 0x75, 0x50, 0xf3, 0x28, 0x63, 0x12, 0xda, + 0x80, 0xf7, 0xa2, 0x49, 0x9e, 0xb2, 0x64, 0x6f, 0x0e, 0x20, 0x62, 0x57, 0xe1, 0x0a, 0x8a, 0xe0, + 0xe1, 0x1e, 0x58, 0x32, 0x75, 0x0b, 0x11, 0xdc, 0x1b, 0x74, 0x88, 0x6a, 0x5b, 0x3d, 0x8f, 0x37, + 0xb5, 0xaa, 0xb2, 0x2a, 0x8c, 0x96, 0x0e, 0xd3, 0x62, 0x94, 0xd5, 0x87, 0x07, 0x60, 0x25, 0x7c, + 0xfa, 0x7f, 0xaa, 0x7b, 0xd4, 0x76, 0x07, 0x07, 0xba, 0xa9, 0x53, 0xde, 0xea, 0xaa, 0x4a, 0x63, + 0x78, 0xb9, 0xbe, 0x82, 0x46, 0xc8, 0xd1, 0x48, 0x2b, 0xd6, 0x85, 0x1d, 0xec, 0x7b, 0xa4, 0xc7, + 0x5b, 0x57, 0x2d, 0xee, 0xc2, 0xc7, 0x7c, 0x15, 0x09, 0x29, 0xd4, 0x52, 0x09, 0x5d, 0xfb, 0xdf, + 0x12, 0xba, 0x5e, 0x9c, 0xcc, 0xf0, 0x14, 0xac, 0x3a, 0xae, 0xad, 0xb9, 0xc4, 0xf3, 0x9e, 0x12, + 0xdc, 0x33, 0x74, 0x8b, 0x84, 0x27, 0x35, 0xcf, 0x77, 0xf8, 0xde, 0xf0, 0x72, 0x7d, 0xf5, 0x78, + 0xb4, 0x0a, 0x2a, 0xb2, 0x6d, 0xfd, 0xa3, 0x02, 0xee, 0x64, 0xdf, 0x51, 0xf8, 0x33, 0x00, 0xed, + 0xae, 0x47, 0xdc, 0x3e, 0xe9, 0x7d, 0x12, 0x90, 0x49, 0xc6, 0xb8, 0x24, 0xce, 0xb8, 0xa2, 0x8a, + 0x3f, 0xca, 0x69, 0xa0, 0x11, 0x56, 0x01, 0x67, 0x13, 0xa5, 0x52, 0xe2, 0x81, 0x26, 0x38, 0x5b, + 0xae, 0x5c, 0xf6, 0xc0, 0x92, 0xe8, 0x1a, 0xa1, 0x90, 0xa7, 0x75, 0x22, 0x0f, 0x4e, 0xd3, 0x62, + 0x94, 0xd5, 0x87, 0x9f, 0x80, 0xbb, 0xb8, 0x8f, 0x75, 0x03, 0x77, 0x0d, 0x12, 0x81, 0x54, 0x38, + 0xc8, 0xbb, 0x02, 0xe4, 0xee, 0x5e, 0x56, 0x01, 0xe5, 0x6d, 0xe0, 0x21, 0x58, 0xf6, 0xad, 0x3c, + 0x54, 0x90, 0x97, 0xef, 0x09, 0xa8, 0xe5, 0xd3, 0xbc, 0x0a, 0x1a, 0x65, 0x07, 0x1d, 0x00, 0xd4, + 0xf0, 0xc9, 0xf7, 0x1a, 0xb3, 0xbc, 0x27, 0xff, 0x68, 0x8a, 0x7a, 0x8a, 0x78, 0x43, 0xdc, 0xff, + 0xa2, 0x25, 0x0f, 0x25, 0x7c, 0xc0, 0x5d, 0xb0, 0xe8, 0xb2, 0x0a, 0x89, 0x42, 0x9f, 0xe3, 0xa1, + 0x7f, 0x4b, 0x98, 0x2d, 0xa2, 0xa4, 0x10, 0xa5, 0x75, 0xe1, 0x0e, 0xa8, 0xab, 0xb6, 0x61, 0xf0, + 0xca, 0xd8, 0xb7, 0x7d, 0x8b, 0xf2, 0xe4, 0x2e, 0x2b, 0x90, 0x71, 0x80, 0xfd, 0x94, 0x04, 0x65, + 0x34, 0x5b, 0x7f, 0x93, 0x92, 0x0f, 0x58, 0x58, 0xee, 0x70, 0x27, 0x45, 0xb7, 0xde, 0xcf, 0xd0, + 0xad, 0x7b, 0x79, 0x8b, 0x04, 0xdb, 0x1a, 0x80, 0x45, 0x56, 0x0c, 0xba, 0xa5, 0x05, 0x09, 0x20, + 0x9a, 0xe9, 0x8f, 0x27, 0x2a, 0xb5, 0xc8, 0x3a, 0xf1, 0x04, 0xdf, 0xe5, 0x27, 0x91, 0x14, 0xa2, + 0xb4, 0xa7, 0xd6, 0x13, 0x50, 0x4f, 0xd7, 0x69, 0x6a, 0x0e, 0x91, 0x6e, 0x9c, 0x43, 0xbe, 0x96, + 0xc0, 0x6a, 0x81, 0x77, 0x68, 0x80, 0xba, 0x89, 0x5f, 0x27, 0x72, 0xe8, 0x46, 0xfe, 0xce, 0x46, + 0x4a, 0x39, 0x18, 0x29, 0xe5, 0xe7, 0x16, 0x3d, 0x72, 0x3b, 0xd4, 0xd5, 0x2d, 0x2d, 0xb8, 0x97, + 0xc3, 0x14, 0x16, 0xca, 0x60, 0xc3, 0x97, 0xa0, 0x66, 0xe2, 0xd7, 0x1d, 0xdf, 0xd5, 0xc2, 0xf3, + 0x9b, 0xdc, 0x0f, 0x7f, 0x89, 0x0e, 0x05, 0x0a, 0x8a, 0xf0, 0x5a, 0x47, 0x60, 0x23, 0xb5, 0x49, + 0xd6, 0x4a, 0xc8, 0x2b, 0xdf, 0xe8, 0x90, 0x38, 0x01, 0xbe, 0x0f, 0xe6, 0x1d, 0xec, 0x52, 0x3d, + 0x6a, 0x27, 0x55, 0x65, 0x71, 0x78, 0xb9, 0x3e, 0x7f, 0x1c, 0x2e, 0xa2, 0x58, 0xde, 0xfa, 0x43, + 0x09, 0x54, 0x3b, 0x2a, 0x36, 0xc8, 0x2d, 0x8c, 0x37, 0x27, 0xa9, 0xf1, 0x66, 0x7b, 0xec, 0xa4, + 0xe2, 0xf1, 0x15, 0x4e, 0x36, 0x9f, 0x65, 0x26, 0x9b, 0x87, 0x13, 0xe2, 0x5e, 0x3f, 0xd4, 0x3c, + 0x06, 0xf3, 0x91, 0xfb, 0x54, 0x97, 0x95, 0x6e, 0xea, 0xb2, 0xad, 0x3f, 0x95, 0xc0, 0x42, 0xc2, + 0xc5, 0x64, 0xd6, 0xd0, 0x49, 0x51, 0x1a, 0xd6, 0xc6, 0x94, 0x69, 0x36, 0x26, 0x87, 0x74, 0x26, + 0x60, 0x92, 0x31, 0x3b, 0xc8, 0xb3, 0x9c, 0x27, 0xa0, 0x4e, 0xb1, 0xab, 0x11, 0x1a, 0xca, 0xf8, + 0x81, 0xce, 0xc7, 0x33, 0xc9, 0x49, 0x4a, 0x8a, 0x32, 0xda, 0x6b, 0xbb, 0x60, 0x31, 0xe5, 0x6c, + 0x22, 0xfa, 0xf7, 0x17, 0x76, 0x58, 0x71, 0x32, 0xdf, 0x42, 0x36, 0xbe, 0x4c, 0x65, 0xe3, 0xa3, + 0xf1, 0x0f, 0x37, 0x51, 0x72, 0x45, 0x39, 0xd9, 0xcd, 0xe4, 0xe4, 0xce, 0x54, 0xe8, 0xd7, 0x67, + 0xe6, 0x5f, 0x25, 0xb0, 0x94, 0xd0, 0xbe, 0x85, 0x59, 0xec, 0xd3, 0xf4, 0x2c, 0xf6, 0x70, 0x9a, + 0x4d, 0x15, 0x0c, 0x63, 0xff, 0xae, 0xa6, 0x36, 0xf3, 0x0d, 0xa2, 0xff, 0xbf, 0x95, 0xc0, 0x4a, + 0xdf, 0x36, 0x7c, 0x93, 0xec, 0x1b, 0x58, 0x37, 0x43, 0x0d, 0x46, 0xa6, 0x6e, 0x18, 0x78, 0xb9, + 0x27, 0xe2, 0x7a, 0xba, 0x47, 0x89, 0x45, 0x5f, 0xc4, 0x18, 0xca, 0xb7, 0x85, 0xbf, 0x95, 0x17, + 0x23, 0x80, 0xd1, 0x48, 0x77, 0xf0, 0x87, 0x60, 0x81, 0xb1, 0x4a, 0x5d, 0x25, 0x6c, 0xd4, 0x15, + 0x7f, 0x76, 0x2c, 0x0b, 0xa0, 0x85, 0x4e, 0x2c, 0x42, 0x49, 0x3d, 0x78, 0x06, 0x96, 0x1d, 0xbb, + 0x77, 0x88, 0x2d, 0xac, 0x11, 0xf6, 0xd6, 0x1e, 0xf3, 0x7f, 0x49, 0xf9, 0x38, 0x30, 0xaf, 0x7c, + 0x14, 0xd2, 0xb7, 0xe3, 0xbc, 0xca, 0x5b, 0xc6, 0xa3, 0xf3, 0xcb, 0x9c, 0x8c, 0x8c, 0x82, 0x84, + 0x5f, 0x4a, 0xa0, 0xee, 0x8b, 0x47, 0x4f, 0x8c, 0x4b, 0xc1, 0xff, 0x1d, 0xca, 0x34, 0x79, 0x78, + 0x9a, 0x42, 0x8a, 0x7b, 0x5c, 0x7a, 0x1d, 0x65, 0x3c, 0x16, 0x8e, 0x3f, 0xb5, 0x69, 0xc6, 0x9f, + 0xd6, 0xdf, 0xcb, 0xe0, 0x6e, 0xae, 0xe0, 0xe1, 0x4f, 0xae, 0x99, 0x0b, 0xee, 0xfd, 0xdf, 0x66, + 0x82, 0x1c, 0x8d, 0x2d, 0x4f, 0x40, 0x63, 0xf7, 0xc0, 0x92, 0xea, 0xbb, 0x2e, 0xb1, 0x68, 0x66, + 0x16, 0x88, 0x06, 0x8a, 0xfd, 0xb4, 0x18, 0x65, 0xf5, 0x47, 0xcd, 0x24, 0xd5, 0x09, 0x67, 0x92, + 0x64, 0x14, 0x82, 0x37, 0x06, 0x79, 0x98, 0x8f, 0x42, 0xd0, 0xc7, 0xac, 0x3e, 0x7b, 0x03, 0x03, + 0xd4, 0x08, 0x61, 0x2e, 0xfd, 0x06, 0x9e, 0xa6, 0xa4, 0x28, 0xa3, 0xcd, 0x58, 0xe8, 0xbb, 0x85, + 0x59, 0x06, 0xf7, 0x52, 0xd4, 0x7c, 0x2b, 0x43, 0xcd, 0xbf, 0x53, 0x68, 0x98, 0x60, 0xe8, 0x5f, + 0x4a, 0xa3, 0x29, 0xfa, 0xf3, 0xe9, 0x28, 0xfa, 0x08, 0xfe, 0x78, 0x33, 0x57, 0x57, 0xb6, 0x2e, + 0xae, 0x9a, 0x33, 0x5f, 0x5d, 0x35, 0x67, 0xde, 0x5c, 0x35, 0x67, 0x7e, 0x33, 0x6c, 0x4a, 0x17, + 0xc3, 0xa6, 0xf4, 0xd5, 0xb0, 0x29, 0xbd, 0x19, 0x36, 0xa5, 0x7f, 0x0d, 0x9b, 0xd2, 0xef, 0xbf, + 0x6e, 0xce, 0xbc, 0x9c, 0x13, 0x1e, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x97, 0x69, 0x29, 0x49, + 0xe9, 0x1a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.proto new file mode 100644 index 000000000..807fa3c51 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/generated.proto @@ -0,0 +1,441 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.apps.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/apis/policy/v1beta1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both +// the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, +// it may be subject to name and representation changes in future releases, and clients should not +// depend on its stability. It is primarily for internal use by controllers. +message ControllerRevision { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data is the serialized representation of the state. + optional k8s.io.apimachinery.pkg.runtime.RawExtension data = 2; + + // Revision indicates the revision of the state represented by Data. + optional int64 revision = 3; +} + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +message ControllerRevisionList { + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ControllerRevisions + repeated ControllerRevision items = 2; +} + +// Deployment enables declarative updates for Pods and ReplicaSets. +message Deployment { + // Standard object metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the Deployment. + // +optional + optional DeploymentSpec spec = 2; + + // Most recently observed status of the Deployment. + // +optional + optional DeploymentStatus status = 3; +} + +// DeploymentCondition describes the state of a deployment at a certain point. +message DeploymentCondition { + // Type of deployment condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time this condition was updated. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6; + + // Last time the condition transitioned from one status to another. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7; + + // The reason for the condition's last transition. + optional string reason = 4; + + // A human readable message indicating details about the transition. + optional string message = 5; +} + +// DeploymentList is a list of Deployments. +message DeploymentList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Deployments. + repeated Deployment items = 2; +} + +// DeploymentRollback stores the information required to rollback a deployment. +message DeploymentRollback { + // Required: This must match the Name of a deployment. + optional string name = 1; + + // The annotations to be updated to a deployment + // +optional + map updatedAnnotations = 2; + + // The config of this deployment rollback. + optional RollbackConfig rollbackTo = 3; +} + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +message DeploymentSpec { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + // +optional + optional int32 replicas = 1; + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template describes the pods that will be created. + optional k8s.io.client_go.pkg.api.v1.PodTemplateSpec template = 3; + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + optional DeploymentStrategy strategy = 4; + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + optional int32 minReadySeconds = 5; + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 2. + // +optional + optional int32 revisionHistoryLimit = 6; + + // Indicates that the deployment is paused. + // +optional + optional bool paused = 7; + + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + optional RollbackConfig rollbackTo = 8; + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Once autoRollback is + // implemented, the deployment controller will automatically rollback failed + // deployments. Note that progress will not be estimated during the time a + // deployment is paused. Defaults to 600s. + optional int32 progressDeadlineSeconds = 9; +} + +// DeploymentStatus is the most recently observed status of the Deployment. +message DeploymentStatus { + // The generation observed by the deployment controller. + // +optional + optional int64 observedGeneration = 1; + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + optional int32 replicas = 2; + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + optional int32 updatedReplicas = 3; + + // Total number of ready pods targeted by this deployment. + // +optional + optional int32 readyReplicas = 7; + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + optional int32 availableReplicas = 4; + + // Total number of unavailable pods targeted by this deployment. + // +optional + optional int32 unavailableReplicas = 5; + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + repeated DeploymentCondition conditions = 6; + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + optional int64 collisionCount = 8; +} + +// DeploymentStrategy describes how to replace existing pods with new ones. +message DeploymentStrategy { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + optional string type = 1; + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + // --- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + // +optional + optional RollingUpdateDeployment rollingUpdate = 2; +} + +message RollbackConfig { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + optional int64 revision = 1; +} + +// Spec to control the desired behavior of rolling update. +message RollingUpdateDeployment { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // Absolute number is calculated from percentage by rounding down. + // This can not be 0 if MaxSurge is 0. + // Defaults to 25%. + // Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that the total number of pods available at all times during the update is at + // least 70% of desired pods. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1; + + // The maximum number of pods that can be scheduled above the desired number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // Defaults to 25%. + // Example: when this is set to 30%, the new RC can be scaled up immediately when + // the rolling update starts, such that the total number of old and new pods do not exceed + // 130% of desired pods. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of desired pods. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2; +} + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +message RollingUpdateStatefulSetStrategy { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + optional int32 partition = 1; +} + +// Scale represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// ScaleSpec describes the attributes of a scale subresource +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + optional int32 replicas = 1; +} + +// ScaleStatus represents the current status of a scale subresource. +message ScaleStatus { + // actual number of observed instances of the scaled object. + optional int32 replicas = 1; + + // label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + map selector = 2; + + // label selector for pods that should match the replicas count. This is a serializated + // version of both map-based and more expressive set-based selectors. This is done to + // avoid introspection in the clients. The string will be in the same format as the + // query-param syntax. If the target type only supports map-based selectors, both this + // field and map-based selector field are populated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional string targetSelector = 3; +} + +// StatefulSet represents a set of pods with consistent identities. +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// The StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +message StatefulSet { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the desired identities of pods in this set. + // +optional + optional StatefulSetSpec spec = 2; + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + optional StatefulSetStatus status = 3; +} + +// StatefulSetList is a collection of StatefulSets. +message StatefulSetList { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated StatefulSet items = 2; +} + +// A StatefulSetSpec is the specification of a StatefulSet. +message StatefulSetSpec { + // replicas is the desired number of replicas of the given Template. + // These are replicas in the sense that they are instantiations of the + // same Template, but individual replicas also have a consistent identity. + // If unspecified, defaults to 1. + // TODO: Consider a rename of this field. + // +optional + optional int32 replicas = 1; + + // selector is a label query over pods that should match the replica count. + // If empty, defaulted to labels on the pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // template is the object that describes the pod that will be created if + // insufficient replicas are detected. Each pod stamped out by the StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + optional k8s.io.client_go.pkg.api.v1.PodTemplateSpec template = 3; + + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. Every claim in + // this list must have at least one matching (by name) volumeMount in one + // container in the template. A claim in this list takes precedence over + // any volumes in the template, with the same name. + // TODO: Define the behavior if a claim already exists with the same name. + // +optional + repeated k8s.io.client_go.pkg.api.v1.PersistentVolumeClaim volumeClaimTemplates = 4; + + // serviceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + optional string serviceName = 5; + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + optional string podManagementPolicy = 6; + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + optional StatefulSetUpdateStrategy updateStrategy = 7; + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + optional int32 revisionHistoryLimit = 8; +} + +// StatefulSetStatus represents the current state of a StatefulSet. +message StatefulSetStatus { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + optional int64 observedGeneration = 1; + + // replicas is the number of Pods created by the StatefulSet controller. + optional int32 replicas = 2; + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + optional int32 readyReplicas = 3; + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + optional int32 currentReplicas = 4; + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + optional int32 updatedReplicas = 5; + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + optional string currentRevision = 6; + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + optional string updateRevision = 7; +} + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +message StatefulSetUpdateStrategy { + // Type indicates the type of the StatefulSetUpdateStrategy. + optional string type = 1; + + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + optional RollingUpdateStatefulSetStrategy rollingUpdate = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/register.go new file mode 100644 index 000000000..5a4fd5bc3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/register.go @@ -0,0 +1,65 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "apps" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &Scale{}, + &StatefulSet{}, + &StatefulSetList{}, + &ControllerRevision{}, + &ControllerRevisionList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.generated.go new file mode 100644 index 000000000..a6c0bfb29 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.generated.go @@ -0,0 +1,8414 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg4_resource "k8s.io/apimachinery/pkg/api/resource" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg6_runtime "k8s.io/apimachinery/pkg/runtime" + pkg2_types "k8s.io/apimachinery/pkg/types" + pkg5_intstr "k8s.io/apimachinery/pkg/util/intstr" + pkg3_v1 "k8s.io/client-go/pkg/api/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg4_resource.Quantity + var v1 pkg1_v1.TypeMeta + var v2 pkg6_runtime.RawExtension + var v3 pkg2_types.UID + var v4 pkg5_intstr.IntOrString + var v5 pkg3_v1.PodTemplateSpec + var v6 time.Time + _, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6 + } +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv7 := &x.Replicas + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Selector) != 0 + yyq2[2] = x.TargetSelector != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetSelector)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv6 := &x.Selector + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecMapStringStringX(yyv6, false, d) + } + } + case "targetSelector": + if r.TryDecodeAsNil() { + x.TargetSelector = "" + } else { + yyv8 := &x.TargetSelector + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv11 := &x.Replicas + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(yyv11)) = int32(r.DecodeInt(32)) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv13 := &x.Selector + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + z.F.DecMapStringStringX(yyv13, false, d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetSelector = "" + } else { + yyv15 := &x.TargetSelector + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StatefulSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StatefulSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StatefulSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = StatefulSetSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = StatefulSetStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StatefulSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = StatefulSetSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = StatefulSetStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PodManagementPolicyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodManagementPolicyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *StatefulSetUpdateStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Type != "" + yyq2[1] = x.RollingUpdate != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollingUpdate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StatefulSetUpdateStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StatefulSetUpdateStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "rollingUpdate": + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateStatefulSetStrategy) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StatefulSetUpdateStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv7 := &x.Type + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateStatefulSetStrategy) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x StatefulSetUpdateStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *StatefulSetUpdateStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RollingUpdateStatefulSetStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Partition != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Partition == nil { + r.EncodeNil() + } else { + yy4 := *x.Partition + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Partition == nil { + r.EncodeNil() + } else { + yy6 := *x.Partition + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollingUpdateStatefulSetStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollingUpdateStatefulSetStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "partition": + if r.TryDecodeAsNil() { + if x.Partition != nil { + x.Partition = nil + } + } else { + if x.Partition == nil { + x.Partition = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Partition)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollingUpdateStatefulSetStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Partition != nil { + x.Partition = nil + } + } else { + if x.Partition == nil { + x.Partition = new(int32) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(x.Partition)) = int32(r.DecodeInt(32)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StatefulSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != nil + yyq2[1] = x.Selector != nil + yyq2[3] = len(x.VolumeClaimTemplates) != 0 + yyq2[5] = x.PodManagementPolicy != "" + yyq2[6] = true + yyq2[7] = x.RevisionHistoryLimit != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy4 := *x.Replicas + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy6 := *x.Replicas + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.Template + yy12.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Template + yy14.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.VolumeClaimTemplates == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encSlicev1_PersistentVolumeClaim(([]pkg3_v1.PersistentVolumeClaim)(x.VolumeClaimTemplates), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeClaimTemplates")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumeClaimTemplates == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + h.encSlicev1_PersistentVolumeClaim(([]pkg3_v1.PersistentVolumeClaim)(x.VolumeClaimTemplates), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + x.PodManagementPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podManagementPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.PodManagementPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yy26 := &x.UpdateStrategy + yy26.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updateStrategy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy28 := &x.UpdateStrategy + yy28.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy31 := *x.RevisionHistoryLimit + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + r.EncodeInt(int64(yy31)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revisionHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy33 := *x.RevisionHistoryLimit + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeInt(int64(yy33)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StatefulSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StatefulSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg3_v1.PodTemplateSpec{} + } else { + yyv8 := &x.Template + yyv8.CodecDecodeSelf(d) + } + case "volumeClaimTemplates": + if r.TryDecodeAsNil() { + x.VolumeClaimTemplates = nil + } else { + yyv9 := &x.VolumeClaimTemplates + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSlicev1_PersistentVolumeClaim((*[]pkg3_v1.PersistentVolumeClaim)(yyv9), d) + } + } + case "serviceName": + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + yyv11 := &x.ServiceName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + case "podManagementPolicy": + if r.TryDecodeAsNil() { + x.PodManagementPolicy = "" + } else { + yyv13 := &x.PodManagementPolicy + yyv13.CodecDecodeSelf(d) + } + case "updateStrategy": + if r.TryDecodeAsNil() { + x.UpdateStrategy = StatefulSetUpdateStrategy{} + } else { + yyv14 := &x.UpdateStrategy + yyv14.CodecDecodeSelf(d) + } + case "revisionHistoryLimit": + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StatefulSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj17 int + var yyb17 bool + var yyhl17 bool = l >= 0 + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg3_v1.PodTemplateSpec{} + } else { + yyv22 := &x.Template + yyv22.CodecDecodeSelf(d) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeClaimTemplates = nil + } else { + yyv23 := &x.VolumeClaimTemplates + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + h.decSlicev1_PersistentVolumeClaim((*[]pkg3_v1.PersistentVolumeClaim)(yyv23), d) + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + yyv25 := &x.ServiceName + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodManagementPolicy = "" + } else { + yyv27 := &x.PodManagementPolicy + yyv27.CodecDecodeSelf(d) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdateStrategy = StatefulSetUpdateStrategy{} + } else { + yyv28 := &x.UpdateStrategy + yyv28.CodecDecodeSelf(d) + } + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + for { + yyj17++ + if yyhl17 { + yyb17 = yyj17 > l + } else { + yyb17 = r.CheckBreak() + } + if yyb17 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj17-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StatefulSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ObservedGeneration != nil + yyq2[2] = x.ReadyReplicas != 0 + yyq2[3] = x.CurrentReplicas != 0 + yyq2[4] = x.UpdatedReplicas != 0 + yyq2[5] = x.CurrentRevision != "" + yyq2[6] = x.UpdateRevision != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy4 := *x.ObservedGeneration + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy6 := *x.ObservedGeneration + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.CurrentRevision)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentRevision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.CurrentRevision)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UpdateRevision)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updateRevision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UpdateRevision)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StatefulSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StatefulSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv6 := &x.Replicas + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv8 := &x.ReadyReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "currentReplicas": + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + yyv10 := &x.CurrentReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "updatedReplicas": + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + yyv12 := &x.UpdatedReplicas + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(yyv12)) = int32(r.DecodeInt(32)) + } + } + case "currentRevision": + if r.TryDecodeAsNil() { + x.CurrentRevision = "" + } else { + yyv14 := &x.CurrentRevision + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "updateRevision": + if r.TryDecodeAsNil() { + x.UpdateRevision = "" + } else { + yyv16 := &x.UpdateRevision + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv21 := &x.Replicas + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv23 := &x.ReadyReplicas + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + yyv25 := &x.CurrentReplicas + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + yyv27 := &x.UpdatedReplicas + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentRevision = "" + } else { + yyv29 := &x.CurrentRevision + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdateRevision = "" + } else { + yyv31 := &x.UpdateRevision + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StatefulSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceStatefulSet(([]StatefulSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceStatefulSet(([]StatefulSet)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StatefulSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StatefulSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceStatefulSet((*[]StatefulSet)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StatefulSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceStatefulSet((*[]StatefulSet)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Deployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Deployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Deployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Deployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [9]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != nil + yyq2[1] = x.Selector != nil + yyq2[3] = true + yyq2[4] = x.MinReadySeconds != 0 + yyq2[5] = x.RevisionHistoryLimit != nil + yyq2[6] = x.Paused != false + yyq2[7] = x.RollbackTo != nil + yyq2[8] = x.ProgressDeadlineSeconds != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(9) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy4 := *x.Replicas + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy6 := *x.Replicas + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.Template + yy12.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Template + yy14.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy17 := &x.Strategy + yy17.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("strategy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy19 := &x.Strategy + yy19.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy25 := *x.RevisionHistoryLimit + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revisionHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy27 := *x.RevisionHistoryLimit + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paused")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.ProgressDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy36 := *x.ProgressDeadlineSeconds + yym37 := z.EncBinary() + _ = yym37 + if false { + } else { + r.EncodeInt(int64(yy36)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("progressDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ProgressDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy38 := *x.ProgressDeadlineSeconds + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeInt(int64(yy38)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg3_v1.PodTemplateSpec{} + } else { + yyv8 := &x.Template + yyv8.CodecDecodeSelf(d) + } + case "strategy": + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv9 := &x.Strategy + yyv9.CodecDecodeSelf(d) + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv10 := &x.MinReadySeconds + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "revisionHistoryLimit": + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + case "paused": + if r.TryDecodeAsNil() { + x.Paused = false + } else { + yyv14 := &x.Paused + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "rollbackTo": + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + case "progressDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ProgressDeadlineSeconds != nil { + x.ProgressDeadlineSeconds = nil + } + } else { + if x.ProgressDeadlineSeconds == nil { + x.ProgressDeadlineSeconds = new(int32) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(x.ProgressDeadlineSeconds)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj19 int + var yyb19 bool + var yyhl19 bool = l >= 0 + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg3_v1.PodTemplateSpec{} + } else { + yyv24 := &x.Template + yyv24.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv25 := &x.Strategy + yyv25.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv26 := &x.MinReadySeconds + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*int32)(yyv26)) = int32(r.DecodeInt(32)) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paused = false + } else { + yyv30 := &x.Paused + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*bool)(yyv30)) = r.DecodeBool() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ProgressDeadlineSeconds != nil { + x.ProgressDeadlineSeconds = nil + } + } else { + if x.ProgressDeadlineSeconds == nil { + x.ProgressDeadlineSeconds = new(int32) + } + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*int32)(x.ProgressDeadlineSeconds)) = int32(r.DecodeInt(32)) + } + } + for { + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj19-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentRollback) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[3] = len(x.UpdatedAnnotations) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedAnnotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy16 := &x.RollbackTo + yy16.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy18 := &x.RollbackTo + yy18.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentRollback) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentRollback) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "updatedAnnotations": + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv10 := &x.UpdatedAnnotations + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecMapStringStringX(yyv10, false, d) + } + } + case "rollbackTo": + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv12 := &x.RollbackTo + yyv12.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentRollback) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv14 := &x.Kind + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv16 := &x.APIVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv18 := &x.Name + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv20 := &x.UpdatedAnnotations + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + z.F.DecMapStringStringX(yyv20, false, d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv22 := &x.RollbackTo + yyv22.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RollbackConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Revision != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollbackConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollbackConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "revision": + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + yyv4 := &x.Revision + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(yyv4)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollbackConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + yyv7 := &x.Revision + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int64)(yyv7)) = int64(r.DecodeInt(64)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Type != "" + yyq2[1] = x.RollingUpdate != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollingUpdate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "rollingUpdate": + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv7 := &x.Type + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeploymentStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeploymentStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RollingUpdateDeployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.MaxUnavailable != nil + yyq2[1] = x.MaxSurge != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym4 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.MaxSurge == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxSurge) { + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxSurge) + } else { + z.EncFallback(x.MaxSurge) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxSurge")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxSurge == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxSurge) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxSurge) + } else { + z.EncFallback(x.MaxSurge) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollingUpdateDeployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "maxUnavailable": + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + case "maxSurge": + if r.TryDecodeAsNil() { + if x.MaxSurge != nil { + x.MaxSurge = nil + } + } else { + if x.MaxSurge == nil { + x.MaxSurge = new(pkg5_intstr.IntOrString) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxSurge) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxSurge) + } else { + z.DecFallback(x.MaxSurge, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxSurge != nil { + x.MaxSurge = nil + } + } else { + if x.MaxSurge == nil { + x.MaxSurge = new(pkg5_intstr.IntOrString) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxSurge) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxSurge) + } else { + z.DecFallback(x.MaxSurge, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ObservedGeneration != 0 + yyq2[1] = x.Replicas != 0 + yyq2[2] = x.UpdatedReplicas != 0 + yyq2[3] = x.ReadyReplicas != 0 + yyq2[4] = x.AvailableReplicas != 0 + yyq2[5] = x.UnavailableReplicas != 0 + yyq2[6] = len(x.Conditions) != 0 + yyq2[7] = x.CollisionCount != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("availableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unavailableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + h.encSliceDeploymentCondition(([]DeploymentCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + h.encSliceDeploymentCondition(([]DeploymentCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.CollisionCount == nil { + r.EncodeNil() + } else { + yy25 := *x.CollisionCount + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("collisionCount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CollisionCount == nil { + r.EncodeNil() + } else { + yy27 := *x.CollisionCount + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv4 := &x.ObservedGeneration + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(yyv4)) = int64(r.DecodeInt(64)) + } + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv6 := &x.Replicas + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "updatedReplicas": + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + yyv8 := &x.UpdatedReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv10 := &x.ReadyReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "availableReplicas": + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv12 := &x.AvailableReplicas + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(yyv12)) = int32(r.DecodeInt(32)) + } + } + case "unavailableReplicas": + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + yyv14 := &x.UnavailableReplicas + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv16 := &x.Conditions + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + h.decSliceDeploymentCondition((*[]DeploymentCondition)(yyv16), d) + } + } + case "collisionCount": + if r.TryDecodeAsNil() { + if x.CollisionCount != nil { + x.CollisionCount = nil + } + } else { + if x.CollisionCount == nil { + x.CollisionCount = new(int64) + } + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj20 int + var yyb20 bool + var yyhl20 bool = l >= 0 + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv21 := &x.ObservedGeneration + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int64)(yyv21)) = int64(r.DecodeInt(64)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv23 := &x.Replicas + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + yyv25 := &x.UpdatedReplicas + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv27 := &x.ReadyReplicas + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv29 := &x.AvailableReplicas + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*int32)(yyv29)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + yyv31 := &x.UnavailableReplicas + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*int32)(yyv31)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv33 := &x.Conditions + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + h.decSliceDeploymentCondition((*[]DeploymentCondition)(yyv33), d) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CollisionCount != nil { + x.CollisionCount = nil + } + } else { + if x.CollisionCount == nil { + x.CollisionCount = new(int64) + } + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64)) + } + } + for { + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj20-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeploymentConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeploymentConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *DeploymentCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = true + yyq2[4] = x.Reason != "" + yyq2[5] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf7 := &x.Status + yysf7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf8 := &x.Status + yysf8.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastUpdateTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastUpdateTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastUpdateTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.LastTransitionTime + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.LastTransitionTime + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(yy17) { + } else if yym18 { + z.EncBinaryMarshal(yy17) + } else if !yym18 && z.IsJSONHandle() { + z.EncJSONMarshal(yy17) + } else { + z.EncFallback(yy17) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastUpdateTime": + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_v1.Time{} + } else { + yyv6 := &x.LastUpdateTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv8 := &x.LastTransitionTime + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if yym9 { + z.DecBinaryUnmarshal(yyv8) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv10 := &x.Reason + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv12 := &x.Message + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv15 := &x.Type + yyv15.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv16 := &x.Status + yyv16.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_v1.Time{} + } else { + yyv17 := &x.LastUpdateTime + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv19 := &x.LastTransitionTime + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if yym20 { + z.DecBinaryUnmarshal(yyv19) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv21 := &x.Reason + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv23 := &x.Message + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ControllerRevision) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Data + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Data + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(yy17) { + } else if !yym18 && z.IsJSONHandle() { + z.EncJSONMarshal(yy17) + } else { + z.EncFallback(yy17) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ControllerRevision) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ControllerRevision) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "data": + if r.TryDecodeAsNil() { + x.Data = pkg6_runtime.RawExtension{} + } else { + yyv10 := &x.Data + yym11 := z.DecBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.DecExt(yyv10) { + } else if !yym11 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv10) + } else { + z.DecFallback(yyv10, false) + } + } + case "revision": + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + yyv12 := &x.Revision + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int64)(yyv12)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ControllerRevision) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv15 := &x.Kind + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv17 := &x.APIVersion + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv19 := &x.ObjectMeta + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = pkg6_runtime.RawExtension{} + } else { + yyv21 := &x.Data + yym22 := z.DecBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.DecExt(yyv21) { + } else if !yym22 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv21) + } else { + z.DecFallback(yyv21, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + yyv23 := &x.Revision + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int64)(yyv23)) = int64(r.DecodeInt(64)) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ControllerRevisionList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceControllerRevision(([]ControllerRevision)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceControllerRevision(([]ControllerRevision)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ControllerRevisionList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ControllerRevisionList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceControllerRevision((*[]ControllerRevision)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ControllerRevisionList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceControllerRevision((*[]ControllerRevision)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicev1_PersistentVolumeClaim(v []pkg3_v1.PersistentVolumeClaim, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_PersistentVolumeClaim(v *[]pkg3_v1.PersistentVolumeClaim, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []pkg3_v1.PersistentVolumeClaim{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 384) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]pkg3_v1.PersistentVolumeClaim, yyrl1) + } + } else { + yyv1 = make([]pkg3_v1.PersistentVolumeClaim, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg3_v1.PersistentVolumeClaim{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, pkg3_v1.PersistentVolumeClaim{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg3_v1.PersistentVolumeClaim{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, pkg3_v1.PersistentVolumeClaim{}) // var yyz1 pkg3_v1.PersistentVolumeClaim + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg3_v1.PersistentVolumeClaim{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []pkg3_v1.PersistentVolumeClaim{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceStatefulSet(v []StatefulSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceStatefulSet(v *[]StatefulSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []StatefulSet{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 984) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]StatefulSet, yyrl1) + } + } else { + yyv1 = make([]StatefulSet, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = StatefulSet{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, StatefulSet{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = StatefulSet{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, StatefulSet{}) // var yyz1 StatefulSet + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = StatefulSet{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []StatefulSet{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceDeploymentCondition(v []DeploymentCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDeploymentCondition(v *[]DeploymentCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []DeploymentCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]DeploymentCondition, yyrl1) + } + } else { + yyv1 = make([]DeploymentCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DeploymentCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, DeploymentCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DeploymentCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, DeploymentCondition{}) // var yyz1 DeploymentCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = DeploymentCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []DeploymentCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceDeployment(v []Deployment, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDeployment(v *[]Deployment, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Deployment{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 968) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Deployment, yyrl1) + } + } else { + yyv1 = make([]Deployment, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Deployment{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Deployment{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Deployment{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Deployment{}) // var yyz1 Deployment + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Deployment{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Deployment{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceControllerRevision(v []ControllerRevision, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceControllerRevision(v *[]ControllerRevision, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ControllerRevision{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 312) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ControllerRevision, yyrl1) + } + } else { + yyv1 = make([]ControllerRevision, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ControllerRevision{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ControllerRevision{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ControllerRevision{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ControllerRevision{}) // var yyz1 ControllerRevision + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ControllerRevision{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ControllerRevision{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.go new file mode 100644 index 000000000..adfd83854 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types.go @@ -0,0 +1,516 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api/v1" +) + +const ( + // StatefulSetInitAnnotation if present, and set to false, indicates that a Pod's readiness should be ignored. + StatefulSetInitAnnotation = "pod.alpha.kubernetes.io/initialized" + ControllerRevisionHashLabelKey = "controller-revision-hash" + StatefulSetRevisionLabel = ControllerRevisionHashLabelKey +) + +// ScaleSpec describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` +} + +// ScaleStatus represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // label selector for pods that should match the replicas count. This is a serializated + // version of both map-based and more expressive set-based selectors. This is done to + // avoid introspection in the clients. The string will be in the same format as the + // query-param syntax. If the target type only supports map-based selectors, both this + // field and map-based selector field are populated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` +} + +// +genclient=true +// +noMethods=true + +// Scale represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true + +// StatefulSet represents a set of pods with consistent identities. +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// The StatefulSet guarantees that a given network identity will always +// map to the same storage identity. +type StatefulSet struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired identities of pods in this set. + // +optional + Spec StatefulSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current status of Pods in this StatefulSet. This data + // may be out of date by some window of time. + // +optional + Status StatefulSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodManagementPolicyType defines the policy for creating pods under a stateful set. +type PodManagementPolicyType string + +const ( + // OrderedReadyPodManagement will create pods in strictly increasing order on + // scale up and strictly decreasing order on scale down, progressing only when + // the previous pod is ready or terminated. At most one pod will be changed + // at any time. + OrderedReadyPodManagement PodManagementPolicyType = "OrderedReady" + // ParallelPodManagement will create and delete pods as soon as the stateful set + // replica count is changed, and will not wait for pods to be ready or complete + // termination. + ParallelPodManagement = "Parallel" +) + +// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet +// controller will use to perform updates. It includes any additional parameters +// necessary to perform the update for the indicated strategy. +type StatefulSetUpdateStrategy struct { + // Type indicates the type of the StatefulSetUpdateStrategy. + Type StatefulSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=StatefulSetStrategyType"` + // RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType. + RollingUpdate *RollingUpdateStatefulSetStrategy `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +// StatefulSetUpdateStrategyType is a string enumeration type that enumerates +// all possible update strategies for the StatefulSet controller. +type StatefulSetUpdateStrategyType string + +const ( + // RollingUpdateStatefulSetStrategyType indicates that update will be + // applied to all Pods in the StatefulSet with respect to the StatefulSet + // ordering constraints. When a scale operation is performed with this + // strategy, new Pods will be created from the specification version indicated + // by the StatefulSet's updateRevision. + RollingUpdateStatefulSetStrategyType = "RollingUpdate" + // OnDeleteStatefulSetStrategyType triggers the legacy behavior. Version + // tracking and ordered rolling restarts are disabled. Pods are recreated + // from the StatefulSetSpec when they are manually deleted. When a scale + // operation is performed with this strategy,specification version indicated + // by the StatefulSet's currentRevision. + OnDeleteStatefulSetStrategyType = "OnDelete" +) + +// RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType. +type RollingUpdateStatefulSetStrategy struct { + // Partition indicates the ordinal at which the StatefulSet should be + // partitioned. + Partition *int32 `json:"partition,omitempty" protobuf:"varint,1,opt,name=partition"` +} + +// A StatefulSetSpec is the specification of a StatefulSet. +type StatefulSetSpec struct { + // replicas is the desired number of replicas of the given Template. + // These are replicas in the sense that they are instantiations of the + // same Template, but individual replicas also have a consistent identity. + // If unspecified, defaults to 1. + // TODO: Consider a rename of this field. + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // selector is a label query over pods that should match the replica count. + // If empty, defaulted to labels on the pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // template is the object that describes the pod that will be created if + // insufficient replicas are detected. Each pod stamped out by the StatefulSet + // will fulfill this Template, but have a unique identity from the rest + // of the StatefulSet. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // volumeClaimTemplates is a list of claims that pods are allowed to reference. + // The StatefulSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pod. Every claim in + // this list must have at least one matching (by name) volumeMount in one + // container in the template. A claim in this list takes precedence over + // any volumes in the template, with the same name. + // TODO: Define the behavior if a claim already exists with the same name. + // +optional + VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"` + + // serviceName is the name of the service that governs this StatefulSet. + // This service must exist before the StatefulSet, and is responsible for + // the network identity of the set. Pods get DNS/hostnames that follow the + // pattern: pod-specific-string.serviceName.default.svc.cluster.local + // where "pod-specific-string" is managed by the StatefulSet controller. + ServiceName string `json:"serviceName" protobuf:"bytes,5,opt,name=serviceName"` + + // podManagementPolicy controls how pods are created during initial scale up, + // when replacing pods on nodes, or when scaling down. The default policy is + // `OrderedReady`, where pods are created in increasing order (pod-0, then + // pod-1, etc) and the controller will wait until each pod is ready before + // continuing. When scaling down, the pods are removed in the opposite order. + // The alternative policy is `Parallel` which will create pods in parallel + // to match the desired scale without waiting, and on scale down will delete + // all pods at once. + // +optional + PodManagementPolicy PodManagementPolicyType `json:"podManagementPolicy,omitempty" protobuf:"bytes,6,opt,name=podManagementPolicy,casttype=PodManagementPolicyType"` + + // updateStrategy indicates the StatefulSetUpdateStrategy that will be + // employed to update Pods in the StatefulSet when a revision is made to + // Template. + UpdateStrategy StatefulSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,7,opt,name=updateStrategy"` + + // revisionHistoryLimit is the maximum number of revisions that will + // be maintained in the StatefulSet's revision history. The revision history + // consists of all revisions not represented by a currently applied + // StatefulSetSpec version. The default value is 10. + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,8,opt,name=revisionHistoryLimit"` +} + +// StatefulSetStatus represents the current state of a StatefulSet. +type StatefulSetStatus struct { + // observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the + // StatefulSet's generation, which is updated on mutation by the API Server. + // +optional + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // replicas is the number of Pods created by the StatefulSet controller. + Replicas int32 `json:"replicas" protobuf:"varint,2,opt,name=replicas"` + + // readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition. + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,3,opt,name=readyReplicas"` + + // currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by currentRevision. + CurrentReplicas int32 `json:"currentReplicas,omitempty" protobuf:"varint,4,opt,name=currentReplicas"` + + // updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version + // indicated by updateRevision. + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,5,opt,name=updatedReplicas"` + + // currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the + // sequence [0,currentReplicas). + CurrentRevision string `json:"currentRevision,omitempty" protobuf:"bytes,6,opt,name=currentRevision"` + + // updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence + // [replicas-updatedReplicas,replicas) + UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"` +} + +// StatefulSetList is a collection of StatefulSets. +type StatefulSetList struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []StatefulSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Deployment enables declarative updates for Pods and ReplicaSets. +type Deployment struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the Deployment. + // +optional + Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the Deployment. + // +optional + Status DeploymentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +type DeploymentSpec struct { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // Template describes the pods that will be created. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + Strategy DeploymentStrategy `json:"strategy,omitempty" protobuf:"bytes,4,opt,name=strategy"` + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,5,opt,name=minReadySeconds"` + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 2. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` + + // Indicates that the deployment is paused. + // +optional + Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` + + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + RollbackTo *RollbackConfig `json:"rollbackTo,omitempty" protobuf:"bytes,8,opt,name=rollbackTo"` + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Once autoRollback is + // implemented, the deployment controller will automatically rollback failed + // deployments. Note that progress will not be estimated during the time a + // deployment is paused. Defaults to 600s. + ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` +} + +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + metav1.TypeMeta `json:",inline"` + // Required: This must match the Name of a deployment. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // The annotations to be updated to a deployment + // +optional + UpdatedAnnotations map[string]string `json:"updatedAnnotations,omitempty" protobuf:"bytes,2,rep,name=updatedAnnotations"` + // The config of this deployment rollback. + RollbackTo RollbackConfig `json:"rollbackTo" protobuf:"bytes,3,opt,name=rollbackTo"` +} + +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + Revision int64 `json:"revision,omitempty" protobuf:"varint,1,opt,name=revision"` +} + +const ( + // DefaultDeploymentUniqueLabelKey is the default key of the selector that is added + // to existing RCs (and label key that is added to its pods) to prevent the existing RCs + // to select new pods (and old pods being select by new RC). + DefaultDeploymentUniqueLabelKey string = "pod-template-hash" +) + +// DeploymentStrategy describes how to replace existing pods with new ones. +type DeploymentStrategy struct { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + Type DeploymentStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=DeploymentStrategyType"` + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + // +optional + RollingUpdate *RollingUpdateDeployment `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +type DeploymentStrategyType string + +const ( + // Kill all existing pods before creating new ones. + RecreateDeploymentStrategyType DeploymentStrategyType = "Recreate" + + // Replace the old RCs by new one using rolling update i.e gradually scale down the old RCs and scale up the new one. + RollingUpdateDeploymentStrategyType DeploymentStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of rolling update. +type RollingUpdateDeployment struct { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // Absolute number is calculated from percentage by rounding down. + // This can not be 0 if MaxSurge is 0. + // Defaults to 25%. + // Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that the total number of pods available at all times during the update is at + // least 70% of desired pods. + // +optional + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"` + + // The maximum number of pods that can be scheduled above the desired number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // Defaults to 25%. + // Example: when this is set to 30%, the new RC can be scaled up immediately when + // the rolling update starts, such that the total number of old and new pods do not exceed + // 130% of desired pods. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of desired pods. + // +optional + MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"` +} + +// DeploymentStatus is the most recently observed status of the Deployment. +type DeploymentStatus struct { + // The generation observed by the deployment controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,2,opt,name=replicas"` + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` + + // Total number of ready pods targeted by this deployment. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` + + // Total number of unavailable pods targeted by this deployment. + // +optional + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"` + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + CollisionCount *int64 `json:"collisionCount,omitempty" protobuf:"varint,8,opt,name=collisionCount"` +} + +type DeploymentConditionType string + +// These are valid conditions of a deployment. +const ( + // Available means the deployment is available, ie. at least the minimum available + // replicas required are up and running for at least minReadySeconds. + DeploymentAvailable DeploymentConditionType = "Available" + // Progressing means the deployment is progressing. Progress for a deployment is + // considered when a new replica set is created or adopted, and when new pods scale + // up or old pods scale down. Progress is not estimated for paused deployments or + // when progressDeadlineSeconds is not specified. + DeploymentProgressing DeploymentConditionType = "Progressing" + // ReplicaFailure is added in a deployment when one of its pods fails to be created + // or deleted. + DeploymentReplicaFailure DeploymentConditionType = "ReplicaFailure" +) + +// DeploymentCondition describes the state of a deployment at a certain point. +type DeploymentCondition struct { + // Type of deployment condition. + Type DeploymentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=DeploymentConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // The last time this condition was updated. + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,6,opt,name=lastUpdateTime"` + // Last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,7,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// DeploymentList is a list of Deployments. +type DeploymentList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Deployments. + Items []Deployment `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// ControllerRevision implements an immutable snapshot of state data. Clients +// are responsible for serializing and deserializing the objects that contain +// their internal state. +// Once a ControllerRevision has been successfully created, it can not be updated. +// The API Server will fail validation of all requests that attempt to mutate +// the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both +// the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, +// it may be subject to name and representation changes in future releases, and clients should not +// depend on its stability. It is primarily for internal use by controllers. +type ControllerRevision struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data is the serialized representation of the state. + Data runtime.RawExtension `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"` + + // Revision indicates the revision of the state represented by Data. + Revision int64 `json:"revision" protobuf:"varint,3,opt,name=revision"` +} + +// ControllerRevisionList is a resource containing a list of ControllerRevision objects. +type ControllerRevisionList struct { + metav1.TypeMeta `json:",inline"` + + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ControllerRevisions + Items []ControllerRevision `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..00d1a617f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,257 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_ControllerRevision = map[string]string{ + "": "ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "data": "Data is the serialized representation of the state.", + "revision": "Revision indicates the revision of the state represented by Data.", +} + +func (ControllerRevision) SwaggerDoc() map[string]string { + return map_ControllerRevision +} + +var map_ControllerRevisionList = map[string]string{ + "": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", + "metadata": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of ControllerRevisions", +} + +func (ControllerRevisionList) SwaggerDoc() map[string]string { + return map_ControllerRevisionList +} + +var map_Deployment = map[string]string{ + "": "Deployment enables declarative updates for Pods and ReplicaSets.", + "metadata": "Standard object metadata.", + "spec": "Specification of the desired behavior of the Deployment.", + "status": "Most recently observed status of the Deployment.", +} + +func (Deployment) SwaggerDoc() map[string]string { + return map_Deployment +} + +var map_DeploymentCondition = map[string]string{ + "": "DeploymentCondition describes the state of a deployment at a certain point.", + "type": "Type of deployment condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastUpdateTime": "The last time this condition was updated.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (DeploymentCondition) SwaggerDoc() map[string]string { + return map_DeploymentCondition +} + +var map_DeploymentList = map[string]string{ + "": "DeploymentList is a list of Deployments.", + "metadata": "Standard list metadata.", + "items": "Items is the list of Deployments.", +} + +func (DeploymentList) SwaggerDoc() map[string]string { + return map_DeploymentList +} + +var map_DeploymentRollback = map[string]string{ + "": "DeploymentRollback stores the information required to rollback a deployment.", + "name": "Required: This must match the Name of a deployment.", + "updatedAnnotations": "The annotations to be updated to a deployment", + "rollbackTo": "The config of this deployment rollback.", +} + +func (DeploymentRollback) SwaggerDoc() map[string]string { + return map_DeploymentRollback +} + +var map_DeploymentSpec = map[string]string{ + "": "DeploymentSpec is the specification of the desired behavior of the Deployment.", + "replicas": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", + "selector": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.", + "template": "Template describes the pods that will be created.", + "strategy": "The deployment strategy to use to replace existing pods with new ones.", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "revisionHistoryLimit": "The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 2.", + "paused": "Indicates that the deployment is paused.", + "rollbackTo": "The config this deployment is rolling back to. Will be cleared after rollback is done.", + "progressDeadlineSeconds": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.", +} + +func (DeploymentSpec) SwaggerDoc() map[string]string { + return map_DeploymentSpec +} + +var map_DeploymentStatus = map[string]string{ + "": "DeploymentStatus is the most recently observed status of the Deployment.", + "observedGeneration": "The generation observed by the deployment controller.", + "replicas": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", + "updatedReplicas": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", + "readyReplicas": "Total number of ready pods targeted by this deployment.", + "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", + "unavailableReplicas": "Total number of unavailable pods targeted by this deployment.", + "conditions": "Represents the latest available observations of a deployment's current state.", + "collisionCount": "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.", +} + +func (DeploymentStatus) SwaggerDoc() map[string]string { + return map_DeploymentStatus +} + +var map_DeploymentStrategy = map[string]string{ + "": "DeploymentStrategy describes how to replace existing pods with new ones.", + "type": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", + "rollingUpdate": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", +} + +func (DeploymentStrategy) SwaggerDoc() map[string]string { + return map_DeploymentStrategy +} + +var map_RollbackConfig = map[string]string{ + "revision": "The revision to rollback to. If set to 0, rollback to the last revision.", +} + +func (RollbackConfig) SwaggerDoc() map[string]string { + return map_RollbackConfig +} + +var map_RollingUpdateDeployment = map[string]string{ + "": "Spec to control the desired behavior of rolling update.", + "maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.", + "maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.", +} + +func (RollingUpdateDeployment) SwaggerDoc() map[string]string { + return map_RollingUpdateDeployment +} + +var map_RollingUpdateStatefulSetStrategy = map[string]string{ + "": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", + "partition": "Partition indicates the ordinal at which the StatefulSet should be partitioned.", +} + +func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string { + return map_RollingUpdateStatefulSetStrategy +} + +var map_Scale = map[string]string{ + "": "Scale represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.", +} + +func (Scale) SwaggerDoc() map[string]string { + return map_Scale +} + +var map_ScaleSpec = map[string]string{ + "": "ScaleSpec describes the attributes of a scale subresource", + "replicas": "desired number of instances for the scaled object.", +} + +func (ScaleSpec) SwaggerDoc() map[string]string { + return map_ScaleSpec +} + +var map_ScaleStatus = map[string]string{ + "": "ScaleStatus represents the current status of a scale subresource.", + "replicas": "actual number of observed instances of the scaled object.", + "selector": "label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors", + "targetSelector": "label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +var map_StatefulSet = map[string]string{ + "": "StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "spec": "Spec defines the desired identities of pods in this set.", + "status": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", +} + +func (StatefulSet) SwaggerDoc() map[string]string { + return map_StatefulSet +} + +var map_StatefulSetList = map[string]string{ + "": "StatefulSetList is a collection of StatefulSets.", +} + +func (StatefulSetList) SwaggerDoc() map[string]string { + return map_StatefulSetList +} + +var map_StatefulSetSpec = map[string]string{ + "": "A StatefulSetSpec is the specification of a StatefulSet.", + "replicas": "replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.", + "selector": "selector is a label query over pods that should match the replica count. If empty, defaulted to labels on the pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.", + "volumeClaimTemplates": "volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.", + "serviceName": "serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.", + "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", + "updateStrategy": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", + "revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", +} + +func (StatefulSetSpec) SwaggerDoc() map[string]string { + return map_StatefulSetSpec +} + +var map_StatefulSetStatus = map[string]string{ + "": "StatefulSetStatus represents the current state of a StatefulSet.", + "observedGeneration": "observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", + "replicas": "replicas is the number of Pods created by the StatefulSet controller.", + "readyReplicas": "readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.", + "currentReplicas": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", + "updatedReplicas": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", + "currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", + "updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", +} + +func (StatefulSetStatus) SwaggerDoc() map[string]string { + return map_StatefulSetStatus +} + +var map_StatefulSetUpdateStrategy = map[string]string{ + "": "StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", + "type": "Type indicates the type of the StatefulSetUpdateStrategy.", + "rollingUpdate": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", +} + +func (StatefulSetUpdateStrategy) SwaggerDoc() map[string]string { + return map_StatefulSetUpdateStrategy +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..c2c25db82 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.conversion.go @@ -0,0 +1,322 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + api_v1 "k8s.io/client-go/pkg/api/v1" + apps "k8s.io/client-go/pkg/apis/apps" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_ControllerRevision_To_apps_ControllerRevision, + Convert_apps_ControllerRevision_To_v1beta1_ControllerRevision, + Convert_v1beta1_ControllerRevisionList_To_apps_ControllerRevisionList, + Convert_apps_ControllerRevisionList_To_v1beta1_ControllerRevisionList, + Convert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy, + Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy, + Convert_v1beta1_StatefulSet_To_apps_StatefulSet, + Convert_apps_StatefulSet_To_v1beta1_StatefulSet, + Convert_v1beta1_StatefulSetList_To_apps_StatefulSetList, + Convert_apps_StatefulSetList_To_v1beta1_StatefulSetList, + Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec, + Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec, + Convert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus, + Convert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus, + Convert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy, + Convert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy, + ) +} + +func autoConvert_v1beta1_ControllerRevision_To_apps_ControllerRevision(in *ControllerRevision, out *apps.ControllerRevision, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.Data, &out.Data, s); err != nil { + return err + } + out.Revision = in.Revision + return nil +} + +// Convert_v1beta1_ControllerRevision_To_apps_ControllerRevision is an autogenerated conversion function. +func Convert_v1beta1_ControllerRevision_To_apps_ControllerRevision(in *ControllerRevision, out *apps.ControllerRevision, s conversion.Scope) error { + return autoConvert_v1beta1_ControllerRevision_To_apps_ControllerRevision(in, out, s) +} + +func autoConvert_apps_ControllerRevision_To_v1beta1_ControllerRevision(in *apps.ControllerRevision, out *ControllerRevision, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.Data, &out.Data, s); err != nil { + return err + } + out.Revision = in.Revision + return nil +} + +// Convert_apps_ControllerRevision_To_v1beta1_ControllerRevision is an autogenerated conversion function. +func Convert_apps_ControllerRevision_To_v1beta1_ControllerRevision(in *apps.ControllerRevision, out *ControllerRevision, s conversion.Scope) error { + return autoConvert_apps_ControllerRevision_To_v1beta1_ControllerRevision(in, out, s) +} + +func autoConvert_v1beta1_ControllerRevisionList_To_apps_ControllerRevisionList(in *ControllerRevisionList, out *apps.ControllerRevisionList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]apps.ControllerRevision, len(*in)) + for i := range *in { + if err := Convert_v1beta1_ControllerRevision_To_apps_ControllerRevision(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1beta1_ControllerRevisionList_To_apps_ControllerRevisionList is an autogenerated conversion function. +func Convert_v1beta1_ControllerRevisionList_To_apps_ControllerRevisionList(in *ControllerRevisionList, out *apps.ControllerRevisionList, s conversion.Scope) error { + return autoConvert_v1beta1_ControllerRevisionList_To_apps_ControllerRevisionList(in, out, s) +} + +func autoConvert_apps_ControllerRevisionList_To_v1beta1_ControllerRevisionList(in *apps.ControllerRevisionList, out *ControllerRevisionList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ControllerRevision, len(*in)) + for i := range *in { + if err := Convert_apps_ControllerRevision_To_v1beta1_ControllerRevision(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]ControllerRevision, 0) + } + return nil +} + +// Convert_apps_ControllerRevisionList_To_v1beta1_ControllerRevisionList is an autogenerated conversion function. +func Convert_apps_ControllerRevisionList_To_v1beta1_ControllerRevisionList(in *apps.ControllerRevisionList, out *ControllerRevisionList, s conversion.Scope) error { + return autoConvert_apps_ControllerRevisionList_To_v1beta1_ControllerRevisionList(in, out, s) +} + +func autoConvert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(in *RollingUpdateStatefulSetStrategy, out *apps.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { + if err := v1.Convert_Pointer_int32_To_int32(&in.Partition, &out.Partition, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy is an autogenerated conversion function. +func Convert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(in *RollingUpdateStatefulSetStrategy, out *apps.RollingUpdateStatefulSetStrategy, s conversion.Scope) error { + return autoConvert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(in, out, s) +} + +func autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy(in *apps.RollingUpdateStatefulSetStrategy, out *RollingUpdateStatefulSetStrategy, s conversion.Scope) error { + if err := v1.Convert_int32_To_Pointer_int32(&in.Partition, &out.Partition, s); err != nil { + return err + } + return nil +} + +// Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy is an autogenerated conversion function. +func Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy(in *apps.RollingUpdateStatefulSetStrategy, out *RollingUpdateStatefulSetStrategy, s conversion.Scope) error { + return autoConvert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy(in, out, s) +} + +func autoConvert_v1beta1_StatefulSet_To_apps_StatefulSet(in *StatefulSet, out *apps.StatefulSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_StatefulSet_To_apps_StatefulSet is an autogenerated conversion function. +func Convert_v1beta1_StatefulSet_To_apps_StatefulSet(in *StatefulSet, out *apps.StatefulSet, s conversion.Scope) error { + return autoConvert_v1beta1_StatefulSet_To_apps_StatefulSet(in, out, s) +} + +func autoConvert_apps_StatefulSet_To_v1beta1_StatefulSet(in *apps.StatefulSet, out *StatefulSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_apps_StatefulSet_To_v1beta1_StatefulSet is an autogenerated conversion function. +func Convert_apps_StatefulSet_To_v1beta1_StatefulSet(in *apps.StatefulSet, out *StatefulSet, s conversion.Scope) error { + return autoConvert_apps_StatefulSet_To_v1beta1_StatefulSet(in, out, s) +} + +func autoConvert_v1beta1_StatefulSetList_To_apps_StatefulSetList(in *StatefulSetList, out *apps.StatefulSetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]apps.StatefulSet, len(*in)) + for i := range *in { + if err := Convert_v1beta1_StatefulSet_To_apps_StatefulSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1beta1_StatefulSetList_To_apps_StatefulSetList is an autogenerated conversion function. +func Convert_v1beta1_StatefulSetList_To_apps_StatefulSetList(in *StatefulSetList, out *apps.StatefulSetList, s conversion.Scope) error { + return autoConvert_v1beta1_StatefulSetList_To_apps_StatefulSetList(in, out, s) +} + +func autoConvert_apps_StatefulSetList_To_v1beta1_StatefulSetList(in *apps.StatefulSetList, out *StatefulSetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StatefulSet, len(*in)) + for i := range *in { + if err := Convert_apps_StatefulSet_To_v1beta1_StatefulSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]StatefulSet, 0) + } + return nil +} + +// Convert_apps_StatefulSetList_To_v1beta1_StatefulSetList is an autogenerated conversion function. +func Convert_apps_StatefulSetList_To_v1beta1_StatefulSetList(in *apps.StatefulSetList, out *StatefulSetList, s conversion.Scope) error { + return autoConvert_apps_StatefulSetList_To_v1beta1_StatefulSetList(in, out, s) +} + +func autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error { + if err := v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + out.VolumeClaimTemplates = *(*[]api.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) + out.ServiceName = in.ServiceName + out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy) + if err := Convert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { + return err + } + out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit)) + return nil +} + +func autoConvert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.StatefulSetSpec, out *StatefulSetSpec, s conversion.Scope) error { + if err := v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + out.VolumeClaimTemplates = *(*[]api_v1.PersistentVolumeClaim)(unsafe.Pointer(&in.VolumeClaimTemplates)) + out.ServiceName = in.ServiceName + out.PodManagementPolicy = PodManagementPolicyType(in.PodManagementPolicy) + if err := Convert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { + return err + } + out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit)) + return nil +} + +func autoConvert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus(in *StatefulSetStatus, out *apps.StatefulSetStatus, s conversion.Scope) error { + out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) + out.Replicas = in.Replicas + out.ReadyReplicas = in.ReadyReplicas + out.CurrentReplicas = in.CurrentReplicas + out.UpdatedReplicas = in.UpdatedReplicas + out.CurrentRevision = in.CurrentRevision + out.UpdateRevision = in.UpdateRevision + return nil +} + +// Convert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus is an autogenerated conversion function. +func Convert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus(in *StatefulSetStatus, out *apps.StatefulSetStatus, s conversion.Scope) error { + return autoConvert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus(in, out, s) +} + +func autoConvert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus(in *apps.StatefulSetStatus, out *StatefulSetStatus, s conversion.Scope) error { + out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) + out.Replicas = in.Replicas + out.ReadyReplicas = in.ReadyReplicas + out.CurrentReplicas = in.CurrentReplicas + out.UpdatedReplicas = in.UpdatedReplicas + out.CurrentRevision = in.CurrentRevision + out.UpdateRevision = in.UpdateRevision + return nil +} + +// Convert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus is an autogenerated conversion function. +func Convert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus(in *apps.StatefulSetStatus, out *StatefulSetStatus, s conversion.Scope) error { + return autoConvert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus(in, out, s) +} + +func autoConvert_v1beta1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(in *StatefulSetUpdateStrategy, out *apps.StatefulSetUpdateStrategy, s conversion.Scope) error { + out.Type = apps.StatefulSetUpdateStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(apps.RollingUpdateStatefulSetStrategy) + if err := Convert_v1beta1_RollingUpdateStatefulSetStrategy_To_apps_RollingUpdateStatefulSetStrategy(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func autoConvert_apps_StatefulSetUpdateStrategy_To_v1beta1_StatefulSetUpdateStrategy(in *apps.StatefulSetUpdateStrategy, out *StatefulSetUpdateStrategy, s conversion.Scope) error { + out.Type = StatefulSetUpdateStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateStatefulSetStrategy) + if err := Convert_apps_RollingUpdateStatefulSetStrategy_To_v1beta1_RollingUpdateStatefulSetStrategy(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..5be343981 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,459 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api_v1 "k8s.io/client-go/pkg/api/v1" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ControllerRevision, InType: reflect.TypeOf(&ControllerRevision{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ControllerRevisionList, InType: reflect.TypeOf(&ControllerRevisionList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Deployment, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentCondition, InType: reflect.TypeOf(&DeploymentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentList, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentRollback, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentSpec, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentStatus, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentStrategy, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollbackConfig, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollingUpdateDeployment, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollingUpdateStatefulSetStrategy, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StatefulSet, InType: reflect.TypeOf(&StatefulSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StatefulSetList, InType: reflect.TypeOf(&StatefulSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StatefulSetSpec, InType: reflect.TypeOf(&StatefulSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StatefulSetStatus, InType: reflect.TypeOf(&StatefulSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StatefulSetUpdateStrategy, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})}, + ) +} + +// DeepCopy_v1beta1_ControllerRevision is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ControllerRevision(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ControllerRevision) + out := out.(*ControllerRevision) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if newVal, err := c.DeepCopy(&in.Data); err != nil { + return err + } else { + out.Data = *newVal.(*runtime.RawExtension) + } + return nil + } +} + +// DeepCopy_v1beta1_ControllerRevisionList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ControllerRevisionList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ControllerRevisionList) + out := out.(*ControllerRevisionList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ControllerRevision, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ControllerRevision(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_Deployment is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Deployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Deployment) + out := out.(*Deployment) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_DeploymentSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DeploymentStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentCondition is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentCondition) + out := out.(*DeploymentCondition) + *out = *in + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1beta1_DeploymentList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentList) + out := out.(*DeploymentList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Deployment(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentRollback is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentRollback(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentRollback) + out := out.(*DeploymentRollback) + *out = *in + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentSpec) + out := out.(*DeploymentSpec) + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(RollbackConfig) + **out = **in + } + if in.ProgressDeadlineSeconds != nil { + in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStatus) + out := out.(*DeploymentStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]DeploymentCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_DeploymentCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentStrategy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStrategy) + out := out.(*DeploymentStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + if err := DeepCopy_v1beta1_RollingUpdateDeployment(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1beta1_RollbackConfig is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RollbackConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollbackConfig) + out := out.(*RollbackConfig) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_RollingUpdateDeployment is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RollingUpdateDeployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDeployment) + out := out.(*RollingUpdateDeployment) + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(intstr.IntOrString) + **out = **in + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_RollingUpdateStatefulSetStrategy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RollingUpdateStatefulSetStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateStatefulSetStrategy) + out := out.(*RollingUpdateStatefulSetStrategy) + *out = *in + if in.Partition != nil { + in, out := &in.Partition, &out.Partition + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_Scale is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_ScaleStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_ScaleSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_ScaleStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1beta1_StatefulSet is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StatefulSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSet) + out := out.(*StatefulSet) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_StatefulSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_StatefulSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_StatefulSetList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StatefulSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetList) + out := out.(*StatefulSetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StatefulSet, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_StatefulSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_StatefulSetSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StatefulSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetSpec) + out := out.(*StatefulSetSpec) + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]api_v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := api_v1.DeepCopy_v1_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if err := DeepCopy_v1beta1_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_StatefulSetStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StatefulSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetStatus) + out := out.(*StatefulSetStatus) + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_StatefulSetUpdateStrategy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StatefulSetUpdateStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetUpdateStrategy) + out := out.(*StatefulSetUpdateStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateStatefulSetStrategy) + if err := DeepCopy_v1beta1_RollingUpdateStatefulSetStrategy(*in, *out, c); err != nil { + return err + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..9b822c84c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/v1beta1/zz_generated.defaults.go @@ -0,0 +1,326 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + v1 "k8s.io/client-go/pkg/api/v1" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&Deployment{}, func(obj interface{}) { SetObjectDefaults_Deployment(obj.(*Deployment)) }) + scheme.AddTypeDefaultingFunc(&DeploymentList{}, func(obj interface{}) { SetObjectDefaults_DeploymentList(obj.(*DeploymentList)) }) + scheme.AddTypeDefaultingFunc(&StatefulSet{}, func(obj interface{}) { SetObjectDefaults_StatefulSet(obj.(*StatefulSet)) }) + scheme.AddTypeDefaultingFunc(&StatefulSetList{}, func(obj interface{}) { SetObjectDefaults_StatefulSetList(obj.(*StatefulSetList)) }) + return nil +} + +func SetObjectDefaults_Deployment(in *Deployment) { + SetDefaults_Deployment(in) + v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_DeploymentList(in *DeploymentList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Deployment(a) + } +} + +func SetObjectDefaults_StatefulSet(in *StatefulSet) { + SetDefaults_StatefulSet(in) + v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.VolumeClaimTemplates { + a := &in.Spec.VolumeClaimTemplates[i] + v1.SetDefaults_PersistentVolumeClaim(a) + v1.SetDefaults_ResourceList(&a.Spec.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Spec.Resources.Requests) + v1.SetDefaults_ResourceList(&a.Status.Capacity) + } +} + +func SetObjectDefaults_StatefulSetList(in *StatefulSetList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_StatefulSet(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/apps/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/apps/zz_generated.deepcopy.go new file mode 100644 index 000000000..ff37ef9bc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/apps/zz_generated.deepcopy.go @@ -0,0 +1,208 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package apps + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_ControllerRevision, InType: reflect.TypeOf(&ControllerRevision{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_ControllerRevisionList, InType: reflect.TypeOf(&ControllerRevisionList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_RollingUpdateStatefulSetStrategy, InType: reflect.TypeOf(&RollingUpdateStatefulSetStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_StatefulSet, InType: reflect.TypeOf(&StatefulSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_StatefulSetList, InType: reflect.TypeOf(&StatefulSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_StatefulSetSpec, InType: reflect.TypeOf(&StatefulSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_StatefulSetStatus, InType: reflect.TypeOf(&StatefulSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_StatefulSetUpdateStrategy, InType: reflect.TypeOf(&StatefulSetUpdateStrategy{})}, + ) +} + +// DeepCopy_apps_ControllerRevision is an autogenerated deepcopy function. +func DeepCopy_apps_ControllerRevision(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ControllerRevision) + out := out.(*ControllerRevision) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + // in.Data is kind 'Interface' + if in.Data != nil { + if newVal, err := c.DeepCopy(&in.Data); err != nil { + return err + } else { + out.Data = *newVal.(*runtime.Object) + } + } + return nil + } +} + +// DeepCopy_apps_ControllerRevisionList is an autogenerated deepcopy function. +func DeepCopy_apps_ControllerRevisionList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ControllerRevisionList) + out := out.(*ControllerRevisionList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ControllerRevision, len(*in)) + for i := range *in { + if err := DeepCopy_apps_ControllerRevision(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_apps_RollingUpdateStatefulSetStrategy is an autogenerated deepcopy function. +func DeepCopy_apps_RollingUpdateStatefulSetStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateStatefulSetStrategy) + out := out.(*RollingUpdateStatefulSetStrategy) + *out = *in + return nil + } +} + +// DeepCopy_apps_StatefulSet is an autogenerated deepcopy function. +func DeepCopy_apps_StatefulSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSet) + out := out.(*StatefulSet) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_apps_StatefulSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_apps_StatefulSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_apps_StatefulSetList is an autogenerated deepcopy function. +func DeepCopy_apps_StatefulSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetList) + out := out.(*StatefulSetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StatefulSet, len(*in)) + for i := range *in { + if err := DeepCopy_apps_StatefulSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_apps_StatefulSetSpec is an autogenerated deepcopy function. +func DeepCopy_apps_StatefulSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetSpec) + out := out.(*StatefulSetSpec) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]api.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := api.DeepCopy_api_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if err := DeepCopy_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_apps_StatefulSetStatus is an autogenerated deepcopy function. +func DeepCopy_apps_StatefulSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetStatus) + out := out.(*StatefulSetStatus) + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_apps_StatefulSetUpdateStrategy is an autogenerated deepcopy function. +func DeepCopy_apps_StatefulSetUpdateStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatefulSetUpdateStrategy) + out := out.(*StatefulSetUpdateStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateStatefulSetStrategy) + **out = **in + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/BUILD b/vendor/k8s.io/client-go/pkg/apis/authentication/BUILD new file mode 100644 index 000000000..6e2604388 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/OWNERS b/vendor/k8s.io/client-go/pkg/apis/authentication/OWNERS new file mode 100755 index 000000000..4135522b2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/OWNERS @@ -0,0 +1,9 @@ +reviewers: +- liggitt +- lavalamp +- wojtek-t +- deads2k +- sttts +- timothysc +- mbohlool +- jianhuiz diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/doc.go b/vendor/k8s.io/client-go/pkg/apis/authentication/doc.go new file mode 100644 index 000000000..194de434d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=authentication.k8s.io +package authentication diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/authentication/install/BUILD new file mode 100644 index 000000000..359bb31b9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/install/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/install/install.go b/vendor/k8s.io/client-go/pkg/apis/authentication/install/install.go new file mode 100644 index 000000000..b8a9521a6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/install/install.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/authentication" + "k8s.io/client-go/pkg/apis/authentication/v1" + "k8s.io/client-go/pkg/apis/authentication/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: authentication.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version, v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/authentication", + RootScopedKinds: sets.NewString("TokenReview"), + AddInternalObjectsToScheme: authentication.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + v1.SchemeGroupVersion.Version: v1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/register.go b/vendor/k8s.io/client-go/pkg/apis/authentication/register.go new file mode 100644 index 000000000..b0ac3c28b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authentication + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &TokenReview{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/types.go b/vendor/k8s.io/client-go/pkg/apis/authentication/types.go new file mode 100644 index 000000000..9c1e66b7b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/types.go @@ -0,0 +1,89 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authentication + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + // ImpersonateUserHeader is used to impersonate a particular user during an API server request + ImpersonateUserHeader = "Impersonate-User" + + // ImpersonateGroupHeader is used to impersonate a particular group during an API server request. + // It can be repeated multiplied times for multiple groups. + ImpersonateGroupHeader = "Impersonate-Group" + + // ImpersonateUserExtraHeaderPrefix is a prefix for any header used to impersonate an entry in the + // extra map[string][]string for user.Info. The key will be every after the prefix. + // It can be repeated multiplied times for multiple map keys and the same key can be repeated multiple + // times to have multiple elements in the slice under a single key + ImpersonateUserExtraHeaderPrefix = "Impersonate-Extra-" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// TokenReview attempts to authenticate a token to a known user. +type TokenReview struct { + metav1.TypeMeta + // ObjectMeta fulfills the metav1.ObjectMetaAccessor interface so that the stock + // REST handler paths work + metav1.ObjectMeta + + // Spec holds information about the request being evaluated + Spec TokenReviewSpec + + // Status is filled in by the server and indicates whether the request can be authenticated. + Status TokenReviewStatus +} + +// TokenReviewSpec is a description of the token authentication request. +type TokenReviewSpec struct { + // Token is the opaque bearer token. + Token string +} + +// TokenReviewStatus is the result of the token authentication request. +// This type mirrors the authentication.Token interface +type TokenReviewStatus struct { + // Authenticated indicates that the token was associated with a known user. + Authenticated bool + // User is the UserInfo associated with the provided token. + User UserInfo + // Error indicates that the token couldn't be checked + Error string +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +type UserInfo struct { + // The name that uniquely identifies this user among all active users. + Username string + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + UID string + // The names of groups this user is a part of. + Groups []string + // Any additional information provided by the authenticator. + Extra map[string]ExtraValue +} + +// ExtraValue masks the value so protobuf can generate +type ExtraValue []string diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/BUILD b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/BUILD new file mode 100644 index 000000000..10ead221b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/BUILD @@ -0,0 +1,34 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/conversion.go new file mode 100644 index 000000000..2ff5732d6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + return scheme.AddConversionFuncs() +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/defaults.go new file mode 100644 index 000000000..074e15bae --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/doc.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/doc.go new file mode 100644 index 000000000..8140e47c5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=authentication.k8s.io +package v1 diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.pb.go new file mode 100644 index 000000000..e26481136 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.pb.go @@ -0,0 +1,1301 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/authentication/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/authentication/v1/generated.proto + + It has these top-level messages: + ExtraValue + TokenReview + TokenReviewSpec + TokenReviewStatus + UserInfo +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *TokenReview) Reset() { *m = TokenReview{} } +func (*TokenReview) ProtoMessage() {} +func (*TokenReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *TokenReviewSpec) Reset() { *m = TokenReviewSpec{} } +func (*TokenReviewSpec) ProtoMessage() {} +func (*TokenReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *TokenReviewStatus) Reset() { *m = TokenReviewStatus{} } +func (*TokenReviewStatus) ProtoMessage() {} +func (*TokenReviewStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *UserInfo) Reset() { *m = UserInfo{} } +func (*UserInfo) ProtoMessage() {} +func (*UserInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.pkg.apis.authentication.v1.ExtraValue") + proto.RegisterType((*TokenReview)(nil), "k8s.io.client-go.pkg.apis.authentication.v1.TokenReview") + proto.RegisterType((*TokenReviewSpec)(nil), "k8s.io.client-go.pkg.apis.authentication.v1.TokenReviewSpec") + proto.RegisterType((*TokenReviewStatus)(nil), "k8s.io.client-go.pkg.apis.authentication.v1.TokenReviewStatus") + proto.RegisterType((*UserInfo)(nil), "k8s.io.client-go.pkg.apis.authentication.v1.UserInfo") +} +func (m ExtraValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m ExtraValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *TokenReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *TokenReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Token))) + i += copy(dAtA[i:], m.Token) + return i, nil +} + +func (m *TokenReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenReviewStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Authenticated { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.User.Size())) + n4, err := m.User.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error))) + i += copy(dAtA[i:], m.Error) + return i, nil +} + +func (m *UserInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UserInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Username))) + i += copy(dAtA[i:], m.Username) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Extra) > 0 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x22 + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n5, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *TokenReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TokenReviewSpec) Size() (n int) { + var l int + _ = l + l = len(m.Token) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TokenReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = m.User.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Error) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *UserInfo) Size() (n int) { + var l int + _ = l + l = len(m.Username) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *TokenReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "TokenReviewSpec", "TokenReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "TokenReviewStatus", "TokenReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *TokenReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReviewSpec{`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} +func (this *TokenReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReviewStatus{`, + `Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`, + `User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`, + `Error:` + fmt.Sprintf("%v", this.Error) + `,`, + `}`, + }, "") + return s +} +func (this *UserInfo) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&UserInfo{`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ExtraValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Authenticated", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Authenticated = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.User.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UserInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/authentication/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 640 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xb6, 0xf3, 0x53, 0x25, 0x1b, 0x0a, 0x65, 0x25, 0xa4, 0x28, 0x12, 0x4e, 0x14, 0x2e, 0x39, + 0x94, 0x35, 0x29, 0xa8, 0x54, 0x05, 0x84, 0x6a, 0x51, 0xa1, 0x1e, 0x00, 0x69, 0xa1, 0x08, 0x71, + 0x81, 0x8d, 0x33, 0x75, 0x96, 0xd4, 0x3f, 0x5a, 0xaf, 0x03, 0xbd, 0xf5, 0x11, 0x38, 0x72, 0xe4, + 0x35, 0x78, 0x83, 0xde, 0xe8, 0x8d, 0x1e, 0x50, 0x45, 0xcd, 0x8b, 0xa0, 0x5d, 0x2f, 0x4d, 0xda, + 0x52, 0xa1, 0xf6, 0xe6, 0xfd, 0x66, 0xbe, 0x6f, 0xbe, 0x99, 0xf1, 0xa0, 0x87, 0xe3, 0x95, 0x94, + 0xf0, 0xd8, 0x1d, 0x67, 0x03, 0x10, 0x11, 0x48, 0x48, 0xdd, 0x64, 0x1c, 0xb8, 0x2c, 0xe1, 0xa9, + 0xcb, 0x32, 0x39, 0x82, 0x48, 0x72, 0x9f, 0x49, 0x1e, 0x47, 0xee, 0xa4, 0xef, 0x06, 0x10, 0x81, + 0x60, 0x12, 0x86, 0x24, 0x11, 0xb1, 0x8c, 0xf1, 0x62, 0xc1, 0x26, 0x53, 0x36, 0x49, 0xc6, 0x01, + 0x51, 0x6c, 0x72, 0x92, 0x4d, 0x26, 0xfd, 0xd6, 0xed, 0x80, 0xcb, 0x51, 0x36, 0x20, 0x7e, 0x1c, + 0xba, 0x41, 0x1c, 0xc4, 0xae, 0x16, 0x19, 0x64, 0x5b, 0xfa, 0xa5, 0x1f, 0xfa, 0xab, 0x10, 0x6f, + 0xdd, 0x33, 0xd6, 0x58, 0xc2, 0x43, 0xe6, 0x8f, 0x78, 0x04, 0x62, 0x67, 0x6a, 0x2e, 0x04, 0xc9, + 0xfe, 0x61, 0xa9, 0xe5, 0x9e, 0xc7, 0x12, 0x59, 0x24, 0x79, 0x08, 0x67, 0x08, 0xcb, 0xff, 0x23, + 0xa4, 0xfe, 0x08, 0x42, 0x76, 0x86, 0x77, 0xf7, 0x3c, 0x5e, 0x26, 0xf9, 0xb6, 0xcb, 0x23, 0x99, + 0x4a, 0x71, 0x9a, 0xd4, 0xbd, 0x8f, 0xd0, 0xfa, 0x27, 0x29, 0xd8, 0x6b, 0xb6, 0x9d, 0x01, 0x6e, + 0xa3, 0x2a, 0x97, 0x10, 0xa6, 0x4d, 0xbb, 0x53, 0xee, 0xd5, 0xbd, 0x7a, 0x7e, 0xd8, 0xae, 0x6e, + 0x28, 0x80, 0x16, 0xf8, 0x6a, 0xed, 0xcb, 0xd7, 0xb6, 0xb5, 0xfb, 0xb3, 0x63, 0x75, 0xbf, 0x95, + 0x50, 0xe3, 0x55, 0x3c, 0x86, 0x88, 0xc2, 0x84, 0xc3, 0x47, 0xfc, 0x1e, 0xd5, 0xd4, 0x04, 0x86, + 0x4c, 0xb2, 0xa6, 0xdd, 0xb1, 0x7b, 0x8d, 0xa5, 0x3b, 0xc4, 0x2c, 0x63, 0xd6, 0xd0, 0x74, 0x1d, + 0x2a, 0x9b, 0x4c, 0xfa, 0xe4, 0xc5, 0xe0, 0x03, 0xf8, 0xf2, 0x19, 0x48, 0xe6, 0xe1, 0xbd, 0xc3, + 0xb6, 0x95, 0x1f, 0xb6, 0xd1, 0x14, 0xa3, 0xc7, 0xaa, 0xf8, 0x1d, 0xaa, 0xa4, 0x09, 0xf8, 0xcd, + 0x92, 0x56, 0x7f, 0x44, 0x2e, 0xb2, 0x6a, 0x32, 0x63, 0xf5, 0x65, 0x02, 0xbe, 0x77, 0xc5, 0x94, + 0xaa, 0xa8, 0x17, 0xd5, 0xc2, 0x38, 0x40, 0x73, 0xa9, 0x64, 0x32, 0x4b, 0x9b, 0x65, 0x5d, 0xe2, + 0xf1, 0xe5, 0x4b, 0x68, 0x19, 0xef, 0xaa, 0x29, 0x32, 0x57, 0xbc, 0xa9, 0x91, 0xef, 0x2e, 0xa3, + 0x6b, 0xa7, 0xfc, 0xe0, 0x5b, 0xa8, 0x2a, 0x15, 0xa4, 0x67, 0x57, 0xf7, 0xe6, 0x0d, 0xb3, 0x5a, + 0xe4, 0x15, 0xb1, 0xee, 0x77, 0x1b, 0x5d, 0x3f, 0x53, 0x05, 0x3f, 0x40, 0xf3, 0x33, 0x66, 0x60, + 0xa8, 0x25, 0x6a, 0xde, 0x0d, 0x23, 0x31, 0xbf, 0x36, 0x1b, 0xa4, 0x27, 0x73, 0xf1, 0x1b, 0x54, + 0xc9, 0x52, 0x10, 0x66, 0xa8, 0xcb, 0x17, 0xeb, 0x78, 0x33, 0x05, 0xb1, 0x11, 0x6d, 0xc5, 0xd3, + 0x69, 0x2a, 0x84, 0x6a, 0x45, 0xd5, 0x11, 0x08, 0x11, 0x0b, 0x3d, 0xcc, 0x99, 0x8e, 0xd6, 0x15, + 0x48, 0x8b, 0x58, 0xf7, 0x47, 0x09, 0xd5, 0xfe, 0xaa, 0xe0, 0x45, 0x54, 0x53, 0xcc, 0x88, 0x85, + 0x60, 0xc6, 0xb0, 0x60, 0x48, 0x3a, 0x47, 0xe1, 0xf4, 0x38, 0x03, 0xdf, 0x44, 0xe5, 0x8c, 0x0f, + 0xb5, 0xf1, 0xba, 0xd7, 0x30, 0x89, 0xe5, 0xcd, 0x8d, 0x27, 0x54, 0xe1, 0xb8, 0x8b, 0xe6, 0x02, + 0x11, 0x67, 0x89, 0x5a, 0xa6, 0xfa, 0x97, 0x91, 0xda, 0xc3, 0x53, 0x8d, 0x50, 0x13, 0xc1, 0x5b, + 0xa8, 0x0a, 0xea, 0xe7, 0x6f, 0x56, 0x3a, 0xe5, 0x5e, 0x63, 0x69, 0xed, 0x72, 0xdd, 0x13, 0x7d, + 0x40, 0xeb, 0x91, 0x14, 0x3b, 0x33, 0x5d, 0x2a, 0x8c, 0x16, 0xf2, 0x2d, 0x61, 0x8e, 0x4c, 0xe7, + 0xe0, 0x05, 0x54, 0x1e, 0xc3, 0x4e, 0xd1, 0x21, 0x55, 0x9f, 0xf8, 0x39, 0xaa, 0x4e, 0xd4, 0xfd, + 0x99, 0x2d, 0xac, 0x5c, 0xcc, 0xc7, 0xf4, 0x7e, 0x69, 0x21, 0xb3, 0x5a, 0x5a, 0xb1, 0xbd, 0xde, + 0xde, 0x91, 0x63, 0xed, 0x1f, 0x39, 0xd6, 0xc1, 0x91, 0x63, 0xed, 0xe6, 0x8e, 0xbd, 0x97, 0x3b, + 0xf6, 0x7e, 0xee, 0xd8, 0x07, 0xb9, 0x63, 0xff, 0xca, 0x1d, 0xfb, 0xf3, 0x6f, 0xc7, 0x7a, 0x5b, + 0x9a, 0xf4, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x01, 0xcb, 0xf3, 0xc9, 0x72, 0x05, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.proto new file mode 100644 index 000000000..411065848 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/generated.proto @@ -0,0 +1,99 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.authentication.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// TokenReview attempts to authenticate a token to a known user. +// Note: TokenReview requests may be cached by the webhook token authenticator +// plugin in the kube-apiserver. +message TokenReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated + optional TokenReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request can be authenticated. + // +optional + optional TokenReviewStatus status = 3; +} + +// TokenReviewSpec is a description of the token authentication request. +message TokenReviewSpec { + // Token is the opaque bearer token. + // +optional + optional string token = 1; +} + +// TokenReviewStatus is the result of the token authentication request. +message TokenReviewStatus { + // Authenticated indicates that the token was associated with a known user. + // +optional + optional bool authenticated = 1; + + // User is the UserInfo associated with the provided token. + // +optional + optional UserInfo user = 2; + + // Error indicates that the token couldn't be checked + // +optional + optional string error = 3; +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +message UserInfo { + // The name that uniquely identifies this user among all active users. + // +optional + optional string username = 1; + + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + // +optional + optional string uid = 2; + + // The names of groups this user is a part of. + // +optional + repeated string groups = 3; + + // Any additional information provided by the authenticator. + // +optional + map extra = 4; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/register.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/register.go new file mode 100644 index 000000000..b4ab6519c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/register.go @@ -0,0 +1,58 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &TokenReview{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/types.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/types.go new file mode 100644 index 000000000..21051f137 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/types.go @@ -0,0 +1,106 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + // ImpersonateUserHeader is used to impersonate a particular user during an API server request + ImpersonateUserHeader = "Impersonate-User" + + // ImpersonateGroupHeader is used to impersonate a particular group during an API server request. + // It can be repeated multiplied times for multiple groups. + ImpersonateGroupHeader = "Impersonate-Group" + + // ImpersonateUserExtraHeaderPrefix is a prefix for any header used to impersonate an entry in the + // extra map[string][]string for user.Info. The key will be every after the prefix. + // It can be repeated multiplied times for multiple map keys and the same key can be repeated multiple + // times to have multiple elements in the slice under a single key + ImpersonateUserExtraHeaderPrefix = "Impersonate-Extra-" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// TokenReview attempts to authenticate a token to a known user. +// Note: TokenReview requests may be cached by the webhook token authenticator +// plugin in the kube-apiserver. +type TokenReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated + Spec TokenReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request can be authenticated. + // +optional + Status TokenReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// TokenReviewSpec is a description of the token authentication request. +type TokenReviewSpec struct { + // Token is the opaque bearer token. + // +optional + Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"` +} + +// TokenReviewStatus is the result of the token authentication request. +type TokenReviewStatus struct { + // Authenticated indicates that the token was associated with a known user. + // +optional + Authenticated bool `json:"authenticated,omitempty" protobuf:"varint,1,opt,name=authenticated"` + // User is the UserInfo associated with the provided token. + // +optional + User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"` + // Error indicates that the token couldn't be checked + // +optional + Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"` +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +type UserInfo struct { + // The name that uniquely identifies this user among all active users. + // +optional + Username string `json:"username,omitempty" protobuf:"bytes,1,opt,name=username"` + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"` + // The names of groups this user is a part of. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"` + // Any additional information provided by the authenticator. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,4,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..bb235e4ea --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/types_swagger_doc_generated.go @@ -0,0 +1,72 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_TokenReview = map[string]string{ + "": "TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.", + "spec": "Spec holds information about the request being evaluated", + "status": "Status is filled in by the server and indicates whether the request can be authenticated.", +} + +func (TokenReview) SwaggerDoc() map[string]string { + return map_TokenReview +} + +var map_TokenReviewSpec = map[string]string{ + "": "TokenReviewSpec is a description of the token authentication request.", + "token": "Token is the opaque bearer token.", +} + +func (TokenReviewSpec) SwaggerDoc() map[string]string { + return map_TokenReviewSpec +} + +var map_TokenReviewStatus = map[string]string{ + "": "TokenReviewStatus is the result of the token authentication request.", + "authenticated": "Authenticated indicates that the token was associated with a known user.", + "user": "User is the UserInfo associated with the provided token.", + "error": "Error indicates that the token couldn't be checked", +} + +func (TokenReviewStatus) SwaggerDoc() map[string]string { + return map_TokenReviewStatus +} + +var map_UserInfo = map[string]string{ + "": "UserInfo holds the information about the user needed to implement the user.Info interface.", + "username": "The name that uniquely identifies this user among all active users.", + "uid": "A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.", + "groups": "The names of groups this user is a part of.", + "extra": "Any additional information provided by the authenticator.", +} + +func (UserInfo) SwaggerDoc() map[string]string { + return map_UserInfo +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.conversion.go new file mode 100644 index 000000000..3a4923cc2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.conversion.go @@ -0,0 +1,153 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + authentication "k8s.io/client-go/pkg/apis/authentication" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_TokenReview_To_authentication_TokenReview, + Convert_authentication_TokenReview_To_v1_TokenReview, + Convert_v1_TokenReviewSpec_To_authentication_TokenReviewSpec, + Convert_authentication_TokenReviewSpec_To_v1_TokenReviewSpec, + Convert_v1_TokenReviewStatus_To_authentication_TokenReviewStatus, + Convert_authentication_TokenReviewStatus_To_v1_TokenReviewStatus, + Convert_v1_UserInfo_To_authentication_UserInfo, + Convert_authentication_UserInfo_To_v1_UserInfo, + ) +} + +func autoConvert_v1_TokenReview_To_authentication_TokenReview(in *TokenReview, out *authentication.TokenReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_TokenReviewSpec_To_authentication_TokenReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_TokenReviewStatus_To_authentication_TokenReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_TokenReview_To_authentication_TokenReview is an autogenerated conversion function. +func Convert_v1_TokenReview_To_authentication_TokenReview(in *TokenReview, out *authentication.TokenReview, s conversion.Scope) error { + return autoConvert_v1_TokenReview_To_authentication_TokenReview(in, out, s) +} + +func autoConvert_authentication_TokenReview_To_v1_TokenReview(in *authentication.TokenReview, out *TokenReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authentication_TokenReviewSpec_To_v1_TokenReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authentication_TokenReviewStatus_To_v1_TokenReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authentication_TokenReview_To_v1_TokenReview is an autogenerated conversion function. +func Convert_authentication_TokenReview_To_v1_TokenReview(in *authentication.TokenReview, out *TokenReview, s conversion.Scope) error { + return autoConvert_authentication_TokenReview_To_v1_TokenReview(in, out, s) +} + +func autoConvert_v1_TokenReviewSpec_To_authentication_TokenReviewSpec(in *TokenReviewSpec, out *authentication.TokenReviewSpec, s conversion.Scope) error { + out.Token = in.Token + return nil +} + +// Convert_v1_TokenReviewSpec_To_authentication_TokenReviewSpec is an autogenerated conversion function. +func Convert_v1_TokenReviewSpec_To_authentication_TokenReviewSpec(in *TokenReviewSpec, out *authentication.TokenReviewSpec, s conversion.Scope) error { + return autoConvert_v1_TokenReviewSpec_To_authentication_TokenReviewSpec(in, out, s) +} + +func autoConvert_authentication_TokenReviewSpec_To_v1_TokenReviewSpec(in *authentication.TokenReviewSpec, out *TokenReviewSpec, s conversion.Scope) error { + out.Token = in.Token + return nil +} + +// Convert_authentication_TokenReviewSpec_To_v1_TokenReviewSpec is an autogenerated conversion function. +func Convert_authentication_TokenReviewSpec_To_v1_TokenReviewSpec(in *authentication.TokenReviewSpec, out *TokenReviewSpec, s conversion.Scope) error { + return autoConvert_authentication_TokenReviewSpec_To_v1_TokenReviewSpec(in, out, s) +} + +func autoConvert_v1_TokenReviewStatus_To_authentication_TokenReviewStatus(in *TokenReviewStatus, out *authentication.TokenReviewStatus, s conversion.Scope) error { + out.Authenticated = in.Authenticated + if err := Convert_v1_UserInfo_To_authentication_UserInfo(&in.User, &out.User, s); err != nil { + return err + } + out.Error = in.Error + return nil +} + +// Convert_v1_TokenReviewStatus_To_authentication_TokenReviewStatus is an autogenerated conversion function. +func Convert_v1_TokenReviewStatus_To_authentication_TokenReviewStatus(in *TokenReviewStatus, out *authentication.TokenReviewStatus, s conversion.Scope) error { + return autoConvert_v1_TokenReviewStatus_To_authentication_TokenReviewStatus(in, out, s) +} + +func autoConvert_authentication_TokenReviewStatus_To_v1_TokenReviewStatus(in *authentication.TokenReviewStatus, out *TokenReviewStatus, s conversion.Scope) error { + out.Authenticated = in.Authenticated + if err := Convert_authentication_UserInfo_To_v1_UserInfo(&in.User, &out.User, s); err != nil { + return err + } + out.Error = in.Error + return nil +} + +// Convert_authentication_TokenReviewStatus_To_v1_TokenReviewStatus is an autogenerated conversion function. +func Convert_authentication_TokenReviewStatus_To_v1_TokenReviewStatus(in *authentication.TokenReviewStatus, out *TokenReviewStatus, s conversion.Scope) error { + return autoConvert_authentication_TokenReviewStatus_To_v1_TokenReviewStatus(in, out, s) +} + +func autoConvert_v1_UserInfo_To_authentication_UserInfo(in *UserInfo, out *authentication.UserInfo, s conversion.Scope) error { + out.Username = in.Username + out.UID = in.UID + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]authentication.ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_v1_UserInfo_To_authentication_UserInfo is an autogenerated conversion function. +func Convert_v1_UserInfo_To_authentication_UserInfo(in *UserInfo, out *authentication.UserInfo, s conversion.Scope) error { + return autoConvert_v1_UserInfo_To_authentication_UserInfo(in, out, s) +} + +func autoConvert_authentication_UserInfo_To_v1_UserInfo(in *authentication.UserInfo, out *UserInfo, s conversion.Scope) error { + out.Username = in.Username + out.UID = in.UID + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_authentication_UserInfo_To_v1_UserInfo is an autogenerated conversion function. +func Convert_authentication_UserInfo_To_v1_UserInfo(in *authentication.UserInfo, out *UserInfo, s conversion.Scope) error { + return autoConvert_authentication_UserInfo_To_v1_UserInfo(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..929c85fca --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.deepcopy.go @@ -0,0 +1,110 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_TokenReview, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_TokenReviewSpec, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_TokenReviewStatus, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_UserInfo, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +// DeepCopy_v1_TokenReview is an autogenerated deepcopy function. +func DeepCopy_v1_TokenReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReview) + out := out.(*TokenReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_TokenReviewStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_TokenReviewSpec is an autogenerated deepcopy function. +func DeepCopy_v1_TokenReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewSpec) + out := out.(*TokenReviewSpec) + *out = *in + return nil + } +} + +// DeepCopy_v1_TokenReviewStatus is an autogenerated deepcopy function. +func DeepCopy_v1_TokenReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewStatus) + out := out.(*TokenReviewStatus) + *out = *in + if err := DeepCopy_v1_UserInfo(&in.User, &out.User, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_UserInfo is an autogenerated deepcopy function. +func DeepCopy_v1_UserInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*UserInfo) + out := out.(*UserInfo) + *out = *in + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.defaults.go new file mode 100644 index 000000000..6df448eb9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/BUILD new file mode 100644 index 000000000..4b0104a20 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authentication:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/conversion.go new file mode 100644 index 000000000..51f3adfc7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + return scheme.AddConversionFuncs() +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/defaults.go new file mode 100644 index 000000000..37abb53bd --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/doc.go new file mode 100644 index 000000000..342f20126 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=authentication.k8s.io +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.pb.go new file mode 100644 index 000000000..9917cdc6d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.pb.go @@ -0,0 +1,1302 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/authentication/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/authentication/v1beta1/generated.proto + + It has these top-level messages: + ExtraValue + TokenReview + TokenReviewSpec + TokenReviewStatus + UserInfo +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *TokenReview) Reset() { *m = TokenReview{} } +func (*TokenReview) ProtoMessage() {} +func (*TokenReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *TokenReviewSpec) Reset() { *m = TokenReviewSpec{} } +func (*TokenReviewSpec) ProtoMessage() {} +func (*TokenReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *TokenReviewStatus) Reset() { *m = TokenReviewStatus{} } +func (*TokenReviewStatus) ProtoMessage() {} +func (*TokenReviewStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *UserInfo) Reset() { *m = UserInfo{} } +func (*UserInfo) ProtoMessage() {} +func (*UserInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.pkg.apis.authentication.v1beta1.ExtraValue") + proto.RegisterType((*TokenReview)(nil), "k8s.io.client-go.pkg.apis.authentication.v1beta1.TokenReview") + proto.RegisterType((*TokenReviewSpec)(nil), "k8s.io.client-go.pkg.apis.authentication.v1beta1.TokenReviewSpec") + proto.RegisterType((*TokenReviewStatus)(nil), "k8s.io.client-go.pkg.apis.authentication.v1beta1.TokenReviewStatus") + proto.RegisterType((*UserInfo)(nil), "k8s.io.client-go.pkg.apis.authentication.v1beta1.UserInfo") +} +func (m ExtraValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m ExtraValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *TokenReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *TokenReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Token))) + i += copy(dAtA[i:], m.Token) + return i, nil +} + +func (m *TokenReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TokenReviewStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Authenticated { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.User.Size())) + n4, err := m.User.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error))) + i += copy(dAtA[i:], m.Error) + return i, nil +} + +func (m *UserInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UserInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Username))) + i += copy(dAtA[i:], m.Username) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Extra) > 0 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x22 + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n5, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *TokenReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TokenReviewSpec) Size() (n int) { + var l int + _ = l + l = len(m.Token) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TokenReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = m.User.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Error) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *UserInfo) Size() (n int) { + var l int + _ = l + l = len(m.Username) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *TokenReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "TokenReviewSpec", "TokenReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "TokenReviewStatus", "TokenReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *TokenReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReviewSpec{`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} +func (this *TokenReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReviewStatus{`, + `Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`, + `User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`, + `Error:` + fmt.Sprintf("%v", this.Error) + `,`, + `}`, + }, "") + return s +} +func (this *UserInfo) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&UserInfo{`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ExtraValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Authenticated", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Authenticated = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.User.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UserInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 647 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x4f, 0x6f, 0xd3, 0x4e, + 0x10, 0xb5, 0xf3, 0xa7, 0xbf, 0x64, 0xf3, 0x2b, 0x94, 0x95, 0x90, 0xa2, 0x48, 0x38, 0x51, 0xb8, + 0xf4, 0x40, 0xd7, 0xa4, 0xa0, 0x52, 0xb5, 0xe2, 0x50, 0xab, 0x05, 0xf5, 0x80, 0x90, 0xb6, 0x94, + 0x03, 0x12, 0x12, 0x1b, 0x67, 0xea, 0x18, 0xd7, 0x7f, 0xb4, 0x5e, 0xa7, 0xf4, 0xd6, 0x8f, 0xc0, + 0x91, 0x23, 0xdf, 0x85, 0x4b, 0x8f, 0x3d, 0x70, 0xe8, 0x01, 0x45, 0xc4, 0x7c, 0x11, 0xb4, 0xeb, + 0xa5, 0x49, 0x1b, 0x55, 0x88, 0xf6, 0xe6, 0x7d, 0x33, 0xef, 0xcd, 0x9b, 0x19, 0x0f, 0xda, 0x0a, + 0xd6, 0x53, 0xe2, 0xc7, 0x76, 0x90, 0xf5, 0x81, 0x47, 0x20, 0x20, 0xb5, 0x93, 0xc0, 0xb3, 0x59, + 0xe2, 0xa7, 0x36, 0xcb, 0xc4, 0x10, 0x22, 0xe1, 0xbb, 0x4c, 0xf8, 0x71, 0x64, 0x8f, 0x7a, 0x7d, + 0x10, 0xac, 0x67, 0x7b, 0x10, 0x01, 0x67, 0x02, 0x06, 0x24, 0xe1, 0xb1, 0x88, 0x71, 0xaf, 0x90, + 0x20, 0x53, 0x09, 0x92, 0x04, 0x1e, 0x91, 0x12, 0xe4, 0xb2, 0x04, 0xd1, 0x12, 0xad, 0x15, 0xcf, + 0x17, 0xc3, 0xac, 0x4f, 0xdc, 0x38, 0xb4, 0xbd, 0xd8, 0x8b, 0x6d, 0xa5, 0xd4, 0xcf, 0x0e, 0xd4, + 0x4b, 0x3d, 0xd4, 0x57, 0x51, 0xa1, 0xf5, 0x54, 0x9b, 0x64, 0x89, 0x1f, 0x32, 0x77, 0xe8, 0x47, + 0xc0, 0x8f, 0xa7, 0x36, 0x43, 0x10, 0xcc, 0x1e, 0xcd, 0xf9, 0x6a, 0xd9, 0xd7, 0xb1, 0x78, 0x16, + 0x09, 0x3f, 0x84, 0x39, 0xc2, 0xda, 0xdf, 0x08, 0xa9, 0x3b, 0x84, 0x90, 0xcd, 0xf1, 0x9e, 0x5c, + 0xc7, 0xcb, 0x84, 0x7f, 0x68, 0xfb, 0x91, 0x48, 0x05, 0xbf, 0x4a, 0xea, 0x3e, 0x43, 0x68, 0xe7, + 0x93, 0xe0, 0xec, 0x2d, 0x3b, 0xcc, 0x00, 0xb7, 0x51, 0xd5, 0x17, 0x10, 0xa6, 0x4d, 0xb3, 0x53, + 0x5e, 0xae, 0x3b, 0xf5, 0x7c, 0xdc, 0xae, 0xee, 0x4a, 0x80, 0x16, 0xf8, 0x46, 0xed, 0xcb, 0xd7, + 0xb6, 0x71, 0xf2, 0xa3, 0x63, 0x74, 0xbf, 0x95, 0x50, 0xe3, 0x4d, 0x1c, 0x40, 0x44, 0x61, 0xe4, + 0xc3, 0x11, 0xfe, 0x80, 0x6a, 0x72, 0x02, 0x03, 0x26, 0x58, 0xd3, 0xec, 0x98, 0xcb, 0x8d, 0xd5, + 0xc7, 0x44, 0x6f, 0x64, 0xd6, 0xd0, 0x74, 0x27, 0x32, 0x9b, 0x8c, 0x7a, 0xe4, 0x75, 0xff, 0x23, + 0xb8, 0xe2, 0x15, 0x08, 0xe6, 0xe0, 0xd3, 0x71, 0xdb, 0xc8, 0xc7, 0x6d, 0x34, 0xc5, 0xe8, 0x85, + 0x2a, 0x1e, 0xa0, 0x4a, 0x9a, 0x80, 0xdb, 0x2c, 0x29, 0x75, 0x87, 0xfc, 0xf3, 0xbe, 0xc9, 0x8c, + 0xdf, 0xbd, 0x04, 0x5c, 0xe7, 0x7f, 0x5d, 0xaf, 0x22, 0x5f, 0x54, 0xa9, 0xe3, 0x43, 0xb4, 0x90, + 0x0a, 0x26, 0xb2, 0xb4, 0x59, 0x56, 0x75, 0xb6, 0x6f, 0x59, 0x47, 0x69, 0x39, 0x77, 0x74, 0xa5, + 0x85, 0xe2, 0x4d, 0x75, 0x8d, 0xee, 0x1a, 0xba, 0x7b, 0xc5, 0x14, 0x7e, 0x88, 0xaa, 0x42, 0x42, + 0x6a, 0x8a, 0x75, 0x67, 0x51, 0x33, 0xab, 0x45, 0x5e, 0x11, 0xeb, 0x7e, 0x37, 0xd1, 0xbd, 0xb9, + 0x2a, 0x78, 0x13, 0x2d, 0xce, 0x38, 0x82, 0x81, 0x92, 0xa8, 0x39, 0xf7, 0xb5, 0xc4, 0xe2, 0xd6, + 0x6c, 0x90, 0x5e, 0xce, 0xc5, 0xef, 0x51, 0x25, 0x4b, 0x81, 0xeb, 0xf1, 0x6e, 0xde, 0xa0, 0xed, + 0xfd, 0x14, 0xf8, 0x6e, 0x74, 0x10, 0x4f, 0xe7, 0x2a, 0x11, 0xaa, 0x64, 0x65, 0x5b, 0xc0, 0x79, + 0xcc, 0xd5, 0x58, 0x67, 0xda, 0xda, 0x91, 0x20, 0x2d, 0x62, 0xdd, 0x49, 0x09, 0xd5, 0xfe, 0xa8, + 0xe0, 0x47, 0xa8, 0x26, 0x99, 0x11, 0x0b, 0x41, 0xcf, 0x62, 0x49, 0x93, 0x54, 0x8e, 0xc4, 0xe9, + 0x45, 0x06, 0x7e, 0x80, 0xca, 0x99, 0x3f, 0x50, 0xee, 0xeb, 0x4e, 0x43, 0x27, 0x96, 0xf7, 0x77, + 0xb7, 0xa9, 0xc4, 0x71, 0x17, 0x2d, 0x78, 0x3c, 0xce, 0x12, 0xb9, 0x56, 0xf9, 0x6b, 0x23, 0xb9, + 0x8c, 0x97, 0x0a, 0xa1, 0x3a, 0x82, 0x03, 0x54, 0x05, 0x79, 0x0b, 0xcd, 0x4a, 0xa7, 0xbc, 0xdc, + 0x58, 0x7d, 0x71, 0x8b, 0x11, 0x10, 0x75, 0x54, 0x3b, 0x91, 0xe0, 0xc7, 0x33, 0xad, 0x4a, 0x8c, + 0x16, 0x35, 0x5a, 0x47, 0xfa, 0xf0, 0x54, 0x0e, 0x5e, 0x42, 0xe5, 0x00, 0x8e, 0x8b, 0x36, 0xa9, + 0xfc, 0xc4, 0x7b, 0xa8, 0x3a, 0x92, 0x37, 0xa9, 0xf7, 0xf1, 0xfc, 0x06, 0x66, 0xa6, 0x87, 0x4d, + 0x0b, 0xad, 0x8d, 0xd2, 0xba, 0xe9, 0xac, 0x9c, 0x4e, 0x2c, 0xe3, 0x6c, 0x62, 0x19, 0xe7, 0x13, + 0xcb, 0x38, 0xc9, 0x2d, 0xf3, 0x34, 0xb7, 0xcc, 0xb3, 0xdc, 0x32, 0xcf, 0x73, 0xcb, 0xfc, 0x99, + 0x5b, 0xe6, 0xe7, 0x5f, 0x96, 0xf1, 0xee, 0x3f, 0x2d, 0xf2, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x35, + 0x3c, 0x74, 0xb0, 0x9a, 0x05, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.proto new file mode 100644 index 000000000..316a62e8e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/generated.proto @@ -0,0 +1,99 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.authentication.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// TokenReview attempts to authenticate a token to a known user. +// Note: TokenReview requests may be cached by the webhook token authenticator +// plugin in the kube-apiserver. +message TokenReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated + optional TokenReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request can be authenticated. + // +optional + optional TokenReviewStatus status = 3; +} + +// TokenReviewSpec is a description of the token authentication request. +message TokenReviewSpec { + // Token is the opaque bearer token. + // +optional + optional string token = 1; +} + +// TokenReviewStatus is the result of the token authentication request. +message TokenReviewStatus { + // Authenticated indicates that the token was associated with a known user. + // +optional + optional bool authenticated = 1; + + // User is the UserInfo associated with the provided token. + // +optional + optional UserInfo user = 2; + + // Error indicates that the token couldn't be checked + // +optional + optional string error = 3; +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +message UserInfo { + // The name that uniquely identifies this user among all active users. + // +optional + optional string username = 1; + + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + // +optional + optional string uid = 2; + + // The names of groups this user is a part of. + // +optional + repeated string groups = 3; + + // Any additional information provided by the authenticator. + // +optional + map extra = 4; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/register.go new file mode 100644 index 000000000..d3ae1e4bc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/register.go @@ -0,0 +1,58 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &TokenReview{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.generated.go new file mode 100644 index 000000000..b8990af18 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.generated.go @@ -0,0 +1,1568 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *TokenReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = TokenReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = TokenReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = TokenReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = TokenReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *TokenReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Token != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Token)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("token")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Token)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "token": + if r.TryDecodeAsNil() { + x.Token = "" + } else { + yyv4 := &x.Token + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Token = "" + } else { + yyv7 := &x.Token + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *TokenReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Authenticated != false + yyq2[1] = true + yyq2[2] = x.Error != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeBool(bool(x.Authenticated)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("authenticated")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeBool(bool(x.Authenticated)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy7 := &x.User + yy7.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.User + yy9.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("error")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "authenticated": + if r.TryDecodeAsNil() { + x.Authenticated = false + } else { + yyv4 := &x.Authenticated + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*bool)(yyv4)) = r.DecodeBool() + } + } + case "user": + if r.TryDecodeAsNil() { + x.User = UserInfo{} + } else { + yyv6 := &x.User + yyv6.CodecDecodeSelf(d) + } + case "error": + if r.TryDecodeAsNil() { + x.Error = "" + } else { + yyv7 := &x.Error + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Authenticated = false + } else { + yyv10 := &x.Authenticated + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*bool)(yyv10)) = r.DecodeBool() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = UserInfo{} + } else { + yyv12 := &x.User + yyv12.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Error = "" + } else { + yyv13 := &x.Error + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *UserInfo) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Username != "" + yyq2[1] = x.UID != "" + yyq2[2] = len(x.Groups) != 0 + yyq2[3] = len(x.Extra) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("username")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Extra == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *UserInfo) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *UserInfo) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "username": + if r.TryDecodeAsNil() { + x.Username = "" + } else { + yyv4 := &x.Username + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv6 := &x.UID + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv8 := &x.Groups + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv10 := &x.Extra + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *UserInfo) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Username = "" + } else { + yyv13 := &x.Username + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv15 := &x.UID + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv17 := &x.Groups + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + z.F.DecSliceStringX(yyv17, false, d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv19 := &x.Extra + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk1)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv1 == nil { + r.EncodeNil() + } else { + yyv1.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 40) + yyv1 = make(map[string]ExtraValue, yyrl1) + *v = yyv1 + } + var yymk1 string + var yymv1 ExtraValue + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv4 := &yymv1 + yyv4.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv5 := &yymk1 + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv7 := &yymv1 + yyv7.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv1)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]string, yyrl1) + } + } else { + yyv1 = make([]string, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 string + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv6 := &yyv1[yyj1] + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.go new file mode 100644 index 000000000..57c96e3bc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types.go @@ -0,0 +1,91 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// TokenReview attempts to authenticate a token to a known user. +// Note: TokenReview requests may be cached by the webhook token authenticator +// plugin in the kube-apiserver. +type TokenReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated + Spec TokenReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request can be authenticated. + // +optional + Status TokenReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// TokenReviewSpec is a description of the token authentication request. +type TokenReviewSpec struct { + // Token is the opaque bearer token. + // +optional + Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"` +} + +// TokenReviewStatus is the result of the token authentication request. +type TokenReviewStatus struct { + // Authenticated indicates that the token was associated with a known user. + // +optional + Authenticated bool `json:"authenticated,omitempty" protobuf:"varint,1,opt,name=authenticated"` + // User is the UserInfo associated with the provided token. + // +optional + User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"` + // Error indicates that the token couldn't be checked + // +optional + Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"` +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +type UserInfo struct { + // The name that uniquely identifies this user among all active users. + // +optional + Username string `json:"username,omitempty" protobuf:"bytes,1,opt,name=username"` + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"` + // The names of groups this user is a part of. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"` + // Any additional information provided by the authenticator. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,4,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..f910bea6f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,72 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_TokenReview = map[string]string{ + "": "TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.", + "spec": "Spec holds information about the request being evaluated", + "status": "Status is filled in by the server and indicates whether the request can be authenticated.", +} + +func (TokenReview) SwaggerDoc() map[string]string { + return map_TokenReview +} + +var map_TokenReviewSpec = map[string]string{ + "": "TokenReviewSpec is a description of the token authentication request.", + "token": "Token is the opaque bearer token.", +} + +func (TokenReviewSpec) SwaggerDoc() map[string]string { + return map_TokenReviewSpec +} + +var map_TokenReviewStatus = map[string]string{ + "": "TokenReviewStatus is the result of the token authentication request.", + "authenticated": "Authenticated indicates that the token was associated with a known user.", + "user": "User is the UserInfo associated with the provided token.", + "error": "Error indicates that the token couldn't be checked", +} + +func (TokenReviewStatus) SwaggerDoc() map[string]string { + return map_TokenReviewStatus +} + +var map_UserInfo = map[string]string{ + "": "UserInfo holds the information about the user needed to implement the user.Info interface.", + "username": "The name that uniquely identifies this user among all active users.", + "uid": "A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.", + "groups": "The names of groups this user is a part of.", + "extra": "Any additional information provided by the authenticator.", +} + +func (UserInfo) SwaggerDoc() map[string]string { + return map_UserInfo +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..39a61ae61 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.conversion.go @@ -0,0 +1,153 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + authentication "k8s.io/client-go/pkg/apis/authentication" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_TokenReview_To_authentication_TokenReview, + Convert_authentication_TokenReview_To_v1beta1_TokenReview, + Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec, + Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec, + Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus, + Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus, + Convert_v1beta1_UserInfo_To_authentication_UserInfo, + Convert_authentication_UserInfo_To_v1beta1_UserInfo, + ) +} + +func autoConvert_v1beta1_TokenReview_To_authentication_TokenReview(in *TokenReview, out *authentication.TokenReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_TokenReview_To_authentication_TokenReview is an autogenerated conversion function. +func Convert_v1beta1_TokenReview_To_authentication_TokenReview(in *TokenReview, out *authentication.TokenReview, s conversion.Scope) error { + return autoConvert_v1beta1_TokenReview_To_authentication_TokenReview(in, out, s) +} + +func autoConvert_authentication_TokenReview_To_v1beta1_TokenReview(in *authentication.TokenReview, out *TokenReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authentication_TokenReview_To_v1beta1_TokenReview is an autogenerated conversion function. +func Convert_authentication_TokenReview_To_v1beta1_TokenReview(in *authentication.TokenReview, out *TokenReview, s conversion.Scope) error { + return autoConvert_authentication_TokenReview_To_v1beta1_TokenReview(in, out, s) +} + +func autoConvert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(in *TokenReviewSpec, out *authentication.TokenReviewSpec, s conversion.Scope) error { + out.Token = in.Token + return nil +} + +// Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec is an autogenerated conversion function. +func Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(in *TokenReviewSpec, out *authentication.TokenReviewSpec, s conversion.Scope) error { + return autoConvert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(in, out, s) +} + +func autoConvert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(in *authentication.TokenReviewSpec, out *TokenReviewSpec, s conversion.Scope) error { + out.Token = in.Token + return nil +} + +// Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec is an autogenerated conversion function. +func Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(in *authentication.TokenReviewSpec, out *TokenReviewSpec, s conversion.Scope) error { + return autoConvert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(in, out, s) +} + +func autoConvert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(in *TokenReviewStatus, out *authentication.TokenReviewStatus, s conversion.Scope) error { + out.Authenticated = in.Authenticated + if err := Convert_v1beta1_UserInfo_To_authentication_UserInfo(&in.User, &out.User, s); err != nil { + return err + } + out.Error = in.Error + return nil +} + +// Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus is an autogenerated conversion function. +func Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(in *TokenReviewStatus, out *authentication.TokenReviewStatus, s conversion.Scope) error { + return autoConvert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(in, out, s) +} + +func autoConvert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(in *authentication.TokenReviewStatus, out *TokenReviewStatus, s conversion.Scope) error { + out.Authenticated = in.Authenticated + if err := Convert_authentication_UserInfo_To_v1beta1_UserInfo(&in.User, &out.User, s); err != nil { + return err + } + out.Error = in.Error + return nil +} + +// Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus is an autogenerated conversion function. +func Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(in *authentication.TokenReviewStatus, out *TokenReviewStatus, s conversion.Scope) error { + return autoConvert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(in, out, s) +} + +func autoConvert_v1beta1_UserInfo_To_authentication_UserInfo(in *UserInfo, out *authentication.UserInfo, s conversion.Scope) error { + out.Username = in.Username + out.UID = in.UID + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]authentication.ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_v1beta1_UserInfo_To_authentication_UserInfo is an autogenerated conversion function. +func Convert_v1beta1_UserInfo_To_authentication_UserInfo(in *UserInfo, out *authentication.UserInfo, s conversion.Scope) error { + return autoConvert_v1beta1_UserInfo_To_authentication_UserInfo(in, out, s) +} + +func autoConvert_authentication_UserInfo_To_v1beta1_UserInfo(in *authentication.UserInfo, out *UserInfo, s conversion.Scope) error { + out.Username = in.Username + out.UID = in.UID + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_authentication_UserInfo_To_v1beta1_UserInfo is an autogenerated conversion function. +func Convert_authentication_UserInfo_To_v1beta1_UserInfo(in *authentication.UserInfo, out *UserInfo, s conversion.Scope) error { + return autoConvert_authentication_UserInfo_To_v1beta1_UserInfo(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..0615678b4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,110 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_TokenReview, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_TokenReviewSpec, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_TokenReviewStatus, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_UserInfo, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +// DeepCopy_v1beta1_TokenReview is an autogenerated deepcopy function. +func DeepCopy_v1beta1_TokenReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReview) + out := out.(*TokenReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_TokenReviewStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_TokenReviewSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_TokenReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewSpec) + out := out.(*TokenReviewSpec) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_TokenReviewStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_TokenReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewStatus) + out := out.(*TokenReviewStatus) + *out = *in + if err := DeepCopy_v1beta1_UserInfo(&in.User, &out.User, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_UserInfo is an autogenerated deepcopy function. +func DeepCopy_v1beta1_UserInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*UserInfo) + out := out.(*UserInfo) + *out = *in + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..e24e70be3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/v1beta1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authentication/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/authentication/zz_generated.deepcopy.go new file mode 100644 index 000000000..f3b47e840 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authentication/zz_generated.deepcopy.go @@ -0,0 +1,110 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package authentication + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_TokenReview, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_TokenReviewSpec, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_TokenReviewStatus, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_UserInfo, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +// DeepCopy_authentication_TokenReview is an autogenerated deepcopy function. +func DeepCopy_authentication_TokenReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReview) + out := out.(*TokenReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_authentication_TokenReviewStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_authentication_TokenReviewSpec is an autogenerated deepcopy function. +func DeepCopy_authentication_TokenReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewSpec) + out := out.(*TokenReviewSpec) + *out = *in + return nil + } +} + +// DeepCopy_authentication_TokenReviewStatus is an autogenerated deepcopy function. +func DeepCopy_authentication_TokenReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewStatus) + out := out.(*TokenReviewStatus) + *out = *in + if err := DeepCopy_authentication_UserInfo(&in.User, &out.User, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_authentication_UserInfo is an autogenerated deepcopy function. +func DeepCopy_authentication_UserInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*UserInfo) + out := out.(*UserInfo) + *out = *in + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/BUILD b/vendor/k8s.io/client-go/pkg/apis/authorization/BUILD new file mode 100644 index 000000000..6e2604388 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/OWNERS b/vendor/k8s.io/client-go/pkg/apis/authorization/OWNERS new file mode 100755 index 000000000..2fef50443 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/OWNERS @@ -0,0 +1,17 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- liggitt +- nikhiljindal +- erictune +- sttts +- ncdc +- timothysc +- dims +- mml +- mbohlool +- david-mcmahon +- jianhuiz diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/doc.go b/vendor/k8s.io/client-go/pkg/apis/authorization/doc.go new file mode 100644 index 000000000..91344f674 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=authorization.k8s.io +package authorization diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/authorization/install/BUILD new file mode 100644 index 000000000..e56e44fb4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/install/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/install/install.go b/vendor/k8s.io/client-go/pkg/apis/authorization/install/install.go new file mode 100644 index 000000000..33eee6618 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/install/install.go @@ -0,0 +1,53 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/authorization" + "k8s.io/client-go/pkg/apis/authorization/v1" + "k8s.io/client-go/pkg/apis/authorization/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: authorization.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version, v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/authorization", + RootScopedKinds: sets.NewString("SubjectAccessReview", "SelfSubjectAccessReview"), + AddInternalObjectsToScheme: authorization.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + v1.SchemeGroupVersion.Version: v1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/register.go b/vendor/k8s.io/client-go/pkg/apis/authorization/register.go new file mode 100644 index 000000000..5693885e4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authorization + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/types.go b/vendor/k8s.io/client-go/pkg/apis/authorization/types.go new file mode 100644 index 000000000..d8ccfaf35 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/types.go @@ -0,0 +1,146 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authorization + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SubjectAccessReview checks whether or not a user or group can perform an action. Not filling in a +// spec.namespace means "in all namespaces". +type SubjectAccessReview struct { + metav1.TypeMeta + metav1.ObjectMeta + + // Spec holds information about the request being evaluated + Spec SubjectAccessReviewSpec + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus +} + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +type SelfSubjectAccessReview struct { + metav1.TypeMeta + metav1.ObjectMeta + + // Spec holds information about the request being evaluated. + Spec SelfSubjectAccessReviewSpec + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus +} + +// +genclient=true +// +noMethods=true + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +type LocalSubjectAccessReview struct { + metav1.TypeMeta + metav1.ObjectMeta + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + Spec SubjectAccessReviewSpec + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +type ResourceAttributes struct { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + Namespace string + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + Verb string + // Group is the API Group of the Resource. "*" means all. + Group string + // Version is the API Version of the Resource. "*" means all. + Version string + // Resource is one of the existing resource types. "*" means all. + Resource string + // Subresource is one of the existing resource types. "" means none. + Subresource string + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + Name string +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +type NonResourceAttributes struct { + // Path is the URL path of the request + Path string + // Verb is the standard HTTP verb + Verb string +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAttributes +// and NonResourceAttributes must be set +type SubjectAccessReviewSpec struct { + // ResourceAttributes describes information for a resource access request + ResourceAttributes *ResourceAttributes + // NonResourceAttributes describes information for a non-resource access request + NonResourceAttributes *NonResourceAttributes + + // User is the user you're testing for. + // If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups + User string + // Groups is the groups you're testing for. + Groups []string + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + Extra map[string]ExtraValue +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +type ExtraValue []string + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAttributes +// and NonResourceAttributes must be set +type SelfSubjectAccessReviewSpec struct { + // ResourceAttributes describes information for a resource access request + ResourceAttributes *ResourceAttributes + // NonResourceAttributes describes information for a non-resource access request + NonResourceAttributes *NonResourceAttributes +} + +// SubjectAccessReviewStatus +type SubjectAccessReviewStatus struct { + // Allowed is required. True if the action would be allowed, false otherwise. + Allowed bool + // Reason is optional. It indicates why a request was allowed or denied. + Reason string + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + EvaluationError string +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/BUILD b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/BUILD new file mode 100644 index 000000000..d2185f6dc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/conversion.go new file mode 100644 index 000000000..2ff5732d6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + return scheme.AddConversionFuncs() +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/defaults.go new file mode 100644 index 000000000..074e15bae --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/doc.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/doc.go new file mode 100644 index 000000000..41741dd53 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=authorization.k8s.io +package v1 diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.pb.go new file mode 100644 index 000000000..0204e88db --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.pb.go @@ -0,0 +1,2364 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/authorization/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/authorization/v1/generated.proto + + It has these top-level messages: + ExtraValue + LocalSubjectAccessReview + NonResourceAttributes + ResourceAttributes + SelfSubjectAccessReview + SelfSubjectAccessReviewSpec + SubjectAccessReview + SubjectAccessReviewSpec + SubjectAccessReviewStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *LocalSubjectAccessReview) Reset() { *m = LocalSubjectAccessReview{} } +func (*LocalSubjectAccessReview) ProtoMessage() {} +func (*LocalSubjectAccessReview) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *NonResourceAttributes) Reset() { *m = NonResourceAttributes{} } +func (*NonResourceAttributes) ProtoMessage() {} +func (*NonResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *ResourceAttributes) Reset() { *m = ResourceAttributes{} } +func (*ResourceAttributes) ProtoMessage() {} +func (*ResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *SelfSubjectAccessReview) Reset() { *m = SelfSubjectAccessReview{} } +func (*SelfSubjectAccessReview) ProtoMessage() {} +func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *SelfSubjectAccessReviewSpec) Reset() { *m = SelfSubjectAccessReviewSpec{} } +func (*SelfSubjectAccessReviewSpec) ProtoMessage() {} +func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *SubjectAccessReview) Reset() { *m = SubjectAccessReview{} } +func (*SubjectAccessReview) ProtoMessage() {} +func (*SubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *SubjectAccessReviewSpec) Reset() { *m = SubjectAccessReviewSpec{} } +func (*SubjectAccessReviewSpec) ProtoMessage() {} +func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *SubjectAccessReviewStatus) Reset() { *m = SubjectAccessReviewStatus{} } +func (*SubjectAccessReviewStatus) ProtoMessage() {} +func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{8} +} + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.ExtraValue") + proto.RegisterType((*LocalSubjectAccessReview)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.LocalSubjectAccessReview") + proto.RegisterType((*NonResourceAttributes)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.NonResourceAttributes") + proto.RegisterType((*ResourceAttributes)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.ResourceAttributes") + proto.RegisterType((*SelfSubjectAccessReview)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.SelfSubjectAccessReview") + proto.RegisterType((*SelfSubjectAccessReviewSpec)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.SelfSubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReview)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.SubjectAccessReview") + proto.RegisterType((*SubjectAccessReviewSpec)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.SubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReviewStatus)(nil), "k8s.io.client-go.pkg.apis.authorization.v1.SubjectAccessReviewStatus") +} +func (m ExtraValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m ExtraValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *LocalSubjectAccessReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LocalSubjectAccessReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *NonResourceAttributes) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NonResourceAttributes) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Verb))) + i += copy(dAtA[i:], m.Verb) + return i, nil +} + +func (m *ResourceAttributes) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceAttributes) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Verb))) + i += copy(dAtA[i:], m.Verb) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource))) + i += copy(dAtA[i:], m.Resource) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Subresource))) + i += copy(dAtA[i:], m.Subresource) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *SelfSubjectAccessReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectAccessReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n4, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n5, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n6, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + return i, nil +} + +func (m *SelfSubjectAccessReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectAccessReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ResourceAttributes != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceAttributes.Size())) + n7, err := m.ResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.NonResourceAttributes != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NonResourceAttributes.Size())) + n8, err := m.NonResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + return i, nil +} + +func (m *SubjectAccessReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectAccessReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n10, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n11, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + return i, nil +} + +func (m *SubjectAccessReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectAccessReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ResourceAttributes != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceAttributes.Size())) + n12, err := m.ResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.NonResourceAttributes != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NonResourceAttributes.Size())) + n13, err := m.NonResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i += copy(dAtA[i:], m.User) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Extra) > 0 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x2a + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n14, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + } + return i, nil +} + +func (m *SubjectAccessReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectAccessReviewStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Allowed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.EvaluationError))) + i += copy(dAtA[i:], m.EvaluationError) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LocalSubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NonResourceAttributes) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Verb) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceAttributes) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Verb) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Subresource) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SelfSubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SelfSubjectAccessReviewSpec) Size() (n int) { + var l int + _ = l + if m.ResourceAttributes != nil { + l = m.ResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NonResourceAttributes != nil { + l = m.NonResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *SubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SubjectAccessReviewSpec) Size() (n int) { + var l int + _ = l + if m.ResourceAttributes != nil { + l = m.ResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NonResourceAttributes != nil { + l = m.NonResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SubjectAccessReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.EvaluationError) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *LocalSubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalSubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SubjectAccessReviewSpec", "SubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NonResourceAttributes) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NonResourceAttributes{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Verb:` + fmt.Sprintf("%v", this.Verb) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceAttributes) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceAttributes{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Verb:` + fmt.Sprintf("%v", this.Verb) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `Resource:` + fmt.Sprintf("%v", this.Resource) + `,`, + `Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SelfSubjectAccessReviewSpec", "SelfSubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectAccessReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectAccessReviewSpec{`, + `ResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ResourceAttributes), "ResourceAttributes", "ResourceAttributes", 1) + `,`, + `NonResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.NonResourceAttributes), "NonResourceAttributes", "NonResourceAttributes", 1) + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SubjectAccessReviewSpec", "SubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReviewSpec) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&SubjectAccessReviewSpec{`, + `ResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ResourceAttributes), "ResourceAttributes", "ResourceAttributes", 1) + `,`, + `NonResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.NonResourceAttributes), "NonResourceAttributes", "NonResourceAttributes", 1) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectAccessReviewStatus{`, + `Allowed:` + fmt.Sprintf("%v", this.Allowed) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `EvaluationError:` + fmt.Sprintf("%v", this.EvaluationError) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ExtraValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LocalSubjectAccessReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalSubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalSubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NonResourceAttributes) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NonResourceAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NonResourceAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verb", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verb = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceAttributes) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verb", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verb = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subresource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subresource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SelfSubjectAccessReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SelfSubjectAccessReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectAccessReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectAccessReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceAttributes == nil { + m.ResourceAttributes = &ResourceAttributes{} + } + if err := m.ResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NonResourceAttributes == nil { + m.NonResourceAttributes = &NonResourceAttributes{} + } + if err := m.NonResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceAttributes == nil { + m.ResourceAttributes = &ResourceAttributes{} + } + if err := m.ResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NonResourceAttributes == nil { + m.NonResourceAttributes = &NonResourceAttributes{} + } + if err := m.NonResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Allowed", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Allowed = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvaluationError", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvaluationError = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/authorization/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 885 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0xdc, 0x44, + 0x14, 0x5f, 0xef, 0xbf, 0xec, 0x4e, 0x80, 0x94, 0xa9, 0x4a, 0xdc, 0x20, 0x79, 0x57, 0x8b, 0x84, + 0x82, 0x00, 0x9b, 0x94, 0x3f, 0xad, 0xca, 0x01, 0xc5, 0x22, 0xfc, 0x91, 0x68, 0x8b, 0x26, 0x22, + 0x07, 0xb8, 0x30, 0x76, 0x5e, 0x76, 0xdd, 0xdd, 0xf5, 0x98, 0x99, 0xb1, 0x4b, 0x38, 0xf5, 0xc6, + 0x15, 0x89, 0x0b, 0x47, 0xbe, 0x02, 0x1f, 0x00, 0xce, 0xb9, 0xd1, 0x03, 0x12, 0x3d, 0xa0, 0x15, + 0x31, 0x17, 0x3e, 0x06, 0x9a, 0xf1, 0x64, 0x9d, 0x6d, 0x1c, 0xaa, 0x85, 0x4a, 0x70, 0xc8, 0xcd, + 0xf3, 0xde, 0xef, 0xf7, 0xde, 0x6f, 0xde, 0xbc, 0xf1, 0x1b, 0xf4, 0xf6, 0xf8, 0x86, 0x70, 0x23, + 0xe6, 0x8d, 0xd3, 0x00, 0x78, 0x0c, 0x12, 0x84, 0x97, 0x8c, 0x87, 0x1e, 0x4d, 0x22, 0xe1, 0xd1, + 0x54, 0x8e, 0x18, 0x8f, 0xbe, 0xa2, 0x32, 0x62, 0xb1, 0x97, 0x6d, 0x79, 0x43, 0x88, 0x81, 0x53, + 0x09, 0xfb, 0x6e, 0xc2, 0x99, 0x64, 0xf8, 0xe5, 0x82, 0xec, 0x96, 0x64, 0x37, 0x19, 0x0f, 0x5d, + 0x45, 0x76, 0x17, 0xc8, 0x6e, 0xb6, 0xb5, 0xf1, 0xea, 0x30, 0x92, 0xa3, 0x34, 0x70, 0x43, 0x36, + 0xf5, 0x86, 0x6c, 0xc8, 0x3c, 0x1d, 0x23, 0x48, 0x0f, 0xf4, 0x4a, 0x2f, 0xf4, 0x57, 0x11, 0x7b, + 0xe3, 0x0d, 0x23, 0x8c, 0x26, 0xd1, 0x94, 0x86, 0xa3, 0x28, 0x06, 0x7e, 0x58, 0x4a, 0x9b, 0x82, + 0xa4, 0x15, 0x8a, 0x36, 0xbc, 0xf3, 0x58, 0x3c, 0x8d, 0x65, 0x34, 0x85, 0x33, 0x84, 0xb7, 0x1e, + 0x47, 0x10, 0xe1, 0x08, 0xa6, 0xf4, 0x0c, 0xef, 0xf5, 0xf3, 0x78, 0xa9, 0x8c, 0x26, 0x5e, 0x14, + 0x4b, 0x21, 0xf9, 0xa3, 0xa4, 0xc1, 0x75, 0x84, 0x76, 0xbe, 0x94, 0x9c, 0xee, 0xd1, 0x49, 0x0a, + 0xb8, 0x87, 0x5a, 0x91, 0x84, 0xa9, 0xb0, 0xad, 0x7e, 0x63, 0xb3, 0xeb, 0x77, 0xf3, 0x59, 0xaf, + 0xf5, 0xa1, 0x32, 0x90, 0xc2, 0x7e, 0xb3, 0xf3, 0xdd, 0xf7, 0xbd, 0xda, 0xfd, 0xdf, 0xfa, 0xb5, + 0xc1, 0x2f, 0x75, 0x64, 0x7f, 0xc4, 0x42, 0x3a, 0xd9, 0x4d, 0x83, 0xbb, 0x10, 0xca, 0xed, 0x30, + 0x04, 0x21, 0x08, 0x64, 0x11, 0xdc, 0xc3, 0x9f, 0xa3, 0x8e, 0x2a, 0xc7, 0x3e, 0x95, 0xd4, 0xb6, + 0xfa, 0xd6, 0xe6, 0xea, 0xb5, 0xd7, 0x5c, 0x73, 0x30, 0xa7, 0xd5, 0x95, 0x47, 0xa3, 0xd0, 0x6e, + 0xb6, 0xe5, 0xde, 0xd1, 0xb1, 0x6e, 0x81, 0xa4, 0x3e, 0x3e, 0x9a, 0xf5, 0x6a, 0xf9, 0xac, 0x87, + 0x4a, 0x1b, 0x99, 0x47, 0xc5, 0x07, 0xa8, 0x29, 0x12, 0x08, 0xed, 0xba, 0x8e, 0xfe, 0xae, 0xbb, + 0xc4, 0xb1, 0xbb, 0x15, 0x8a, 0x77, 0x13, 0x08, 0xfd, 0xa7, 0x4c, 0xc6, 0xa6, 0x5a, 0x11, 0x1d, + 0x1f, 0xc7, 0xa8, 0x2d, 0x24, 0x95, 0xa9, 0xb0, 0x1b, 0x3a, 0xd3, 0x7b, 0xff, 0x3a, 0x93, 0x8e, + 0xe6, 0x3f, 0x63, 0x72, 0xb5, 0x8b, 0x35, 0x31, 0x59, 0x06, 0x9f, 0xa1, 0x2b, 0xb7, 0x59, 0x4c, + 0x40, 0xb0, 0x94, 0x87, 0xb0, 0x2d, 0x25, 0x8f, 0x82, 0x54, 0x82, 0xc0, 0x7d, 0xd4, 0x4c, 0xa8, + 0x1c, 0xe9, 0x72, 0x76, 0x4b, 0xa9, 0x1f, 0x53, 0x39, 0x22, 0xda, 0xa3, 0x10, 0x19, 0xf0, 0x40, + 0x97, 0xe4, 0x14, 0x62, 0x0f, 0x78, 0x40, 0xb4, 0x67, 0xf0, 0x53, 0x1d, 0xe1, 0x8a, 0xd0, 0x1e, + 0xea, 0xc6, 0x74, 0x0a, 0x22, 0xa1, 0x21, 0x98, 0xf8, 0xcf, 0x1a, 0x76, 0xf7, 0xf6, 0x89, 0x83, + 0x94, 0x98, 0xc7, 0x67, 0xc2, 0x2f, 0xa0, 0xd6, 0x90, 0xb3, 0x34, 0xd1, 0x55, 0xeb, 0xfa, 0x4f, + 0x1b, 0x48, 0xeb, 0x7d, 0x65, 0x24, 0x85, 0x0f, 0xbf, 0x84, 0x56, 0x32, 0xe0, 0x22, 0x62, 0xb1, + 0xdd, 0xd4, 0xb0, 0x35, 0x03, 0x5b, 0xd9, 0x2b, 0xcc, 0xe4, 0xc4, 0x8f, 0x5f, 0x41, 0x1d, 0x6e, + 0x84, 0xdb, 0x2d, 0x8d, 0xbd, 0x64, 0xb0, 0x9d, 0x93, 0x0d, 0x91, 0x39, 0x02, 0xbf, 0x89, 0x56, + 0x45, 0x1a, 0xcc, 0x09, 0x6d, 0x4d, 0xb8, 0x6c, 0x08, 0xab, 0xbb, 0xa5, 0x8b, 0x9c, 0xc6, 0xa9, + 0x6d, 0xa9, 0x3d, 0xda, 0x2b, 0x8b, 0xdb, 0x52, 0x25, 0x20, 0xda, 0x33, 0xf8, 0xb5, 0x8e, 0xd6, + 0x77, 0x61, 0x72, 0xf0, 0xdf, 0xf4, 0xfc, 0xdd, 0x85, 0x9e, 0xff, 0x60, 0xb9, 0x4e, 0xac, 0x56, + 0xfd, 0xbf, 0xe9, 0xfb, 0x1f, 0xeb, 0xe8, 0xf9, 0xbf, 0xd1, 0x88, 0xbf, 0xb6, 0x10, 0xe6, 0x67, + 0x5a, 0xd7, 0x14, 0xfa, 0x9d, 0xa5, 0xc4, 0x9d, 0xbd, 0x01, 0xfe, 0x73, 0xf9, 0xac, 0x57, 0x71, + 0x33, 0x48, 0x45, 0x4a, 0xfc, 0xad, 0x85, 0xae, 0xc4, 0x55, 0x57, 0xd4, 0x9c, 0x8b, 0xbf, 0x94, + 0x98, 0xca, 0xcb, 0xee, 0x5f, 0xcd, 0x67, 0xbd, 0xea, 0xff, 0x00, 0xa9, 0xce, 0x3d, 0xf8, 0xb9, + 0x8e, 0x2e, 0x5f, 0xfc, 0x89, 0x9f, 0x64, 0x47, 0xfe, 0xd9, 0x44, 0xeb, 0x17, 0xdd, 0xf8, 0x8f, + 0xba, 0x71, 0x3e, 0x20, 0x1a, 0x8b, 0x7f, 0xd2, 0x4f, 0x04, 0x70, 0x33, 0x20, 0x06, 0xa8, 0xad, + 0x87, 0x80, 0xb0, 0x9b, 0xfa, 0xa9, 0x81, 0xd4, 0x09, 0xe8, 0xe9, 0x20, 0x88, 0xf1, 0x60, 0x89, + 0x5a, 0xa0, 0xde, 0x26, 0x76, 0xab, 0xdf, 0xd8, 0x5c, 0xbd, 0x76, 0xe7, 0x49, 0xb4, 0x96, 0xab, + 0x5f, 0x3b, 0x3b, 0xb1, 0xe4, 0x87, 0xe5, 0x54, 0xd2, 0x36, 0x52, 0x24, 0xdb, 0xf8, 0xc2, 0xbc, + 0x88, 0x34, 0x06, 0x5f, 0x42, 0x8d, 0x31, 0x1c, 0x16, 0x53, 0x91, 0xa8, 0x4f, 0x7c, 0x0b, 0xb5, + 0x32, 0xf5, 0x58, 0x32, 0x05, 0xbe, 0xbe, 0x94, 0xaa, 0xf2, 0xad, 0x45, 0x8a, 0x28, 0x37, 0xeb, + 0x37, 0xac, 0xc1, 0x0f, 0x16, 0xba, 0x7a, 0x6e, 0x83, 0xaa, 0x31, 0x49, 0x27, 0x13, 0x76, 0x0f, + 0xf6, 0xb5, 0x8c, 0x4e, 0x39, 0x26, 0xb7, 0x0b, 0x33, 0x39, 0xf1, 0xe3, 0x17, 0x51, 0x9b, 0x03, + 0x15, 0x2c, 0x36, 0xa3, 0x79, 0xde, 0xdb, 0x44, 0x5b, 0x89, 0xf1, 0xe2, 0x6d, 0xb4, 0x06, 0x2a, + 0xbd, 0xd6, 0xb5, 0xc3, 0x39, 0xe3, 0xe6, 0xa8, 0xd6, 0x0d, 0x61, 0x6d, 0x67, 0xd1, 0x4d, 0x1e, + 0xc5, 0xfb, 0x9b, 0x47, 0xc7, 0x4e, 0xed, 0xc1, 0xb1, 0x53, 0x7b, 0x78, 0xec, 0xd4, 0xee, 0xe7, + 0x8e, 0x75, 0x94, 0x3b, 0xd6, 0x83, 0xdc, 0xb1, 0x1e, 0xe6, 0x8e, 0xf5, 0x7b, 0xee, 0x58, 0xdf, + 0xfc, 0xe1, 0xd4, 0x3e, 0xad, 0x67, 0x5b, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x38, 0xb6, 0x9a, + 0xe3, 0xd0, 0x0b, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.proto new file mode 100644 index 000000000..9048e4fa4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/generated.proto @@ -0,0 +1,183 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.authorization.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +message LocalSubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + optional SubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + optional SubjectAccessReviewStatus status = 3; +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +message NonResourceAttributes { + // Path is the URL path of the request + // +optional + optional string path = 1; + + // Verb is the standard HTTP verb + // +optional + optional string verb = 2; +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +message ResourceAttributes { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + // +optional + optional string namespace = 1; + + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + // +optional + optional string verb = 2; + + // Group is the API Group of the Resource. "*" means all. + // +optional + optional string group = 3; + + // Version is the API Version of the Resource. "*" means all. + // +optional + optional string version = 4; + + // Resource is one of the existing resource types. "*" means all. + // +optional + optional string resource = 5; + + // Subresource is one of the existing resource types. "" means none. + // +optional + optional string subresource = 6; + + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + // +optional + optional string name = 7; +} + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +message SelfSubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. user and groups must be empty + optional SelfSubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + optional SubjectAccessReviewStatus status = 3; +} + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +message SelfSubjectAccessReviewSpec { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; +} + +// SubjectAccessReview checks whether or not a user or group can perform an action. +message SubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated + optional SubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + optional SubjectAccessReviewStatus status = 3; +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +message SubjectAccessReviewSpec { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; + + // User is the user you're testing for. + // If you specify "User" but not "Groups", then is it interpreted as "What if User were not a member of any groups + // +optional + optional string verb = 3; + + // Groups is the groups you're testing for. + // +optional + repeated string groups = 4; + + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + // +optional + map extra = 5; +} + +// SubjectAccessReviewStatus +message SubjectAccessReviewStatus { + // Allowed is required. True if the action would be allowed, false otherwise. + optional bool allowed = 1; + + // Reason is optional. It indicates why a request was allowed or denied. + // +optional + optional string reason = 2; + + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + // +optional + optional string evaluationError = 3; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/register.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/register.go new file mode 100644 index 000000000..5defdff67 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/register.go @@ -0,0 +1,61 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.generated.go new file mode 100644 index 000000000..2528afa8e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.generated.go @@ -0,0 +1,3233 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *SubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SelfSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Namespace != "" + yyq2[1] = x.Verb != "" + yyq2[2] = x.Group != "" + yyq2[3] = x.Version != "" + yyq2[4] = x.Resource != "" + yyq2[5] = x.Subresource != "" + yyq2[6] = x.Name != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("version")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subresource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv4 := &x.Namespace + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv6 := &x.Verb + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + yyv8 := &x.Group + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "version": + if r.TryDecodeAsNil() { + x.Version = "" + } else { + yyv10 := &x.Version + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + yyv12 := &x.Resource + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "subresource": + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + yyv14 := &x.Subresource + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv16 := &x.Name + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv19 := &x.Namespace + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv21 := &x.Verb + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + yyv23 := &x.Group + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Version = "" + } else { + yyv25 := &x.Version + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + yyv27 := &x.Resource + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + yyv29 := &x.Subresource + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv31 := &x.Name + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NonResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Path != "" + yyq2[1] = x.Verb != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NonResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NonResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv6 := &x.Verb + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NonResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv9 := &x.Path + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv11 := &x.Verb + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ResourceAttributes != nil + yyq2[1] = x.NonResourceAttributes != nil + yyq2[2] = x.User != "" + yyq2[3] = len(x.Groups) != 0 + yyq2[4] = len(x.Extra) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Extra == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "resourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "nonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv6 := &x.User + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv8 := &x.Groups + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv10 := &x.Extra + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv15 := &x.User + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv17 := &x.Groups + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + z.F.DecSliceStringX(yyv17, false, d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv19 := &x.Extra + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ResourceAttributes != nil + yyq2[1] = x.NonResourceAttributes != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "resourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "nonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Reason != "" + yyq2[2] = x.EvaluationError != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("evaluationError")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "allowed": + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + yyv4 := &x.Allowed + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*bool)(yyv4)) = r.DecodeBool() + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv6 := &x.Reason + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "evaluationError": + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + yyv8 := &x.EvaluationError + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + yyv11 := &x.Allowed + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(yyv11)) = r.DecodeBool() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv13 := &x.Reason + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + yyv15 := &x.EvaluationError + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk1)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv1 == nil { + r.EncodeNil() + } else { + yyv1.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 40) + yyv1 = make(map[string]ExtraValue, yyrl1) + *v = yyv1 + } + var yymk1 string + var yymv1 ExtraValue + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv4 := &yymv1 + yyv4.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv5 := &yymk1 + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv7 := &yymv1 + yyv7.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv1)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]string, yyrl1) + } + } else { + yyv1 = make([]string, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 string + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv6 := &yyv1[yyj1] + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.go new file mode 100644 index 000000000..38c314ffc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types.go @@ -0,0 +1,176 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type SubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated + Spec SubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +type SelfSubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. user and groups must be empty + Spec SelfSubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true +// +noMethods=true + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +type LocalSubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + Spec SubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +type ResourceAttributes struct { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,1,opt,name=namespace"` + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + // +optional + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` + // Group is the API Group of the Resource. "*" means all. + // +optional + Group string `json:"group,omitempty" protobuf:"bytes,3,opt,name=group"` + // Version is the API Version of the Resource. "*" means all. + // +optional + Version string `json:"version,omitempty" protobuf:"bytes,4,opt,name=version"` + // Resource is one of the existing resource types. "*" means all. + // +optional + Resource string `json:"resource,omitempty" protobuf:"bytes,5,opt,name=resource"` + // Subresource is one of the existing resource types. "" means none. + // +optional + Subresource string `json:"subresource,omitempty" protobuf:"bytes,6,opt,name=subresource"` + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,7,opt,name=name"` +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +type NonResourceAttributes struct { + // Path is the URL path of the request + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Verb is the standard HTTP verb + // +optional + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +type SubjectAccessReviewSpec struct { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + NonResourceAttributes *NonResourceAttributes `json:"nonResourceAttributes,omitempty" protobuf:"bytes,2,opt,name=nonResourceAttributes"` + + // User is the user you're testing for. + // If you specify "User" but not "Groups", then is it interpreted as "What if User were not a member of any groups + // +optional + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=verb"` + // Groups is the groups you're testing for. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,4,rep,name=groups"` + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,5,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +type SelfSubjectAccessReviewSpec struct { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + NonResourceAttributes *NonResourceAttributes `json:"nonResourceAttributes,omitempty" protobuf:"bytes,2,opt,name=nonResourceAttributes"` +} + +// SubjectAccessReviewStatus +type SubjectAccessReviewStatus struct { + // Allowed is required. True if the action would be allowed, false otherwise. + Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"` + // Reason is optional. It indicates why a request was allowed or denied. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + // +optional + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,3,opt,name=evaluationError"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..33c0035b4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/types_swagger_doc_generated.go @@ -0,0 +1,119 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_LocalSubjectAccessReview = map[string]string{ + "": "LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.", + "spec": "Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace you made the request against. If empty, it is defaulted.", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (LocalSubjectAccessReview) SwaggerDoc() map[string]string { + return map_LocalSubjectAccessReview +} + +var map_NonResourceAttributes = map[string]string{ + "": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", + "path": "Path is the URL path of the request", + "verb": "Verb is the standard HTTP verb", +} + +func (NonResourceAttributes) SwaggerDoc() map[string]string { + return map_NonResourceAttributes +} + +var map_ResourceAttributes = map[string]string{ + "": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", + "namespace": "Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview", + "verb": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", + "group": "Group is the API Group of the Resource. \"*\" means all.", + "version": "Version is the API Version of the Resource. \"*\" means all.", + "resource": "Resource is one of the existing resource types. \"*\" means all.", + "subresource": "Subresource is one of the existing resource types. \"\" means none.", + "name": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", +} + +func (ResourceAttributes) SwaggerDoc() map[string]string { + return map_ResourceAttributes +} + +var map_SelfSubjectAccessReview = map[string]string{ + "": "SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means \"in all namespaces\". Self is a special case, because users should always be able to check whether they can perform an action", + "spec": "Spec holds information about the request being evaluated. user and groups must be empty", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (SelfSubjectAccessReview) SwaggerDoc() map[string]string { + return map_SelfSubjectAccessReview +} + +var map_SelfSubjectAccessReviewSpec = map[string]string{ + "": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", + "resourceAttributes": "ResourceAuthorizationAttributes describes information for a resource access request", + "nonResourceAttributes": "NonResourceAttributes describes information for a non-resource access request", +} + +func (SelfSubjectAccessReviewSpec) SwaggerDoc() map[string]string { + return map_SelfSubjectAccessReviewSpec +} + +var map_SubjectAccessReview = map[string]string{ + "": "SubjectAccessReview checks whether or not a user or group can perform an action.", + "spec": "Spec holds information about the request being evaluated", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (SubjectAccessReview) SwaggerDoc() map[string]string { + return map_SubjectAccessReview +} + +var map_SubjectAccessReviewSpec = map[string]string{ + "": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", + "resourceAttributes": "ResourceAuthorizationAttributes describes information for a resource access request", + "nonResourceAttributes": "NonResourceAttributes describes information for a non-resource access request", + "user": "User is the user you're testing for. If you specify \"User\" but not \"Groups\", then is it interpreted as \"What if User were not a member of any groups", + "groups": "Groups is the groups you're testing for.", + "extra": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", +} + +func (SubjectAccessReviewSpec) SwaggerDoc() map[string]string { + return map_SubjectAccessReviewSpec +} + +var map_SubjectAccessReviewStatus = map[string]string{ + "": "SubjectAccessReviewStatus", + "allowed": "Allowed is required. True if the action would be allowed, false otherwise.", + "reason": "Reason is optional. It indicates why a request was allowed or denied.", + "evaluationError": "EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.", +} + +func (SubjectAccessReviewStatus) SwaggerDoc() map[string]string { + return map_SubjectAccessReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.conversion.go new file mode 100644 index 000000000..97ebf559a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.conversion.go @@ -0,0 +1,279 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + authorization "k8s.io/client-go/pkg/apis/authorization" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview, + Convert_authorization_LocalSubjectAccessReview_To_v1_LocalSubjectAccessReview, + Convert_v1_NonResourceAttributes_To_authorization_NonResourceAttributes, + Convert_authorization_NonResourceAttributes_To_v1_NonResourceAttributes, + Convert_v1_ResourceAttributes_To_authorization_ResourceAttributes, + Convert_authorization_ResourceAttributes_To_v1_ResourceAttributes, + Convert_v1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview, + Convert_authorization_SelfSubjectAccessReview_To_v1_SelfSubjectAccessReview, + Convert_v1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec, + Convert_authorization_SelfSubjectAccessReviewSpec_To_v1_SelfSubjectAccessReviewSpec, + Convert_v1_SubjectAccessReview_To_authorization_SubjectAccessReview, + Convert_authorization_SubjectAccessReview_To_v1_SubjectAccessReview, + Convert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec, + Convert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec, + Convert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus, + Convert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus, + ) +} + +func autoConvert_v1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in *LocalSubjectAccessReview, out *authorization.LocalSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview is an autogenerated conversion function. +func Convert_v1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in *LocalSubjectAccessReview, out *authorization.LocalSubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_LocalSubjectAccessReview_To_v1_LocalSubjectAccessReview(in *authorization.LocalSubjectAccessReview, out *LocalSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authorization_LocalSubjectAccessReview_To_v1_LocalSubjectAccessReview is an autogenerated conversion function. +func Convert_authorization_LocalSubjectAccessReview_To_v1_LocalSubjectAccessReview(in *authorization.LocalSubjectAccessReview, out *LocalSubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_LocalSubjectAccessReview_To_v1_LocalSubjectAccessReview(in, out, s) +} + +func autoConvert_v1_NonResourceAttributes_To_authorization_NonResourceAttributes(in *NonResourceAttributes, out *authorization.NonResourceAttributes, s conversion.Scope) error { + out.Path = in.Path + out.Verb = in.Verb + return nil +} + +// Convert_v1_NonResourceAttributes_To_authorization_NonResourceAttributes is an autogenerated conversion function. +func Convert_v1_NonResourceAttributes_To_authorization_NonResourceAttributes(in *NonResourceAttributes, out *authorization.NonResourceAttributes, s conversion.Scope) error { + return autoConvert_v1_NonResourceAttributes_To_authorization_NonResourceAttributes(in, out, s) +} + +func autoConvert_authorization_NonResourceAttributes_To_v1_NonResourceAttributes(in *authorization.NonResourceAttributes, out *NonResourceAttributes, s conversion.Scope) error { + out.Path = in.Path + out.Verb = in.Verb + return nil +} + +// Convert_authorization_NonResourceAttributes_To_v1_NonResourceAttributes is an autogenerated conversion function. +func Convert_authorization_NonResourceAttributes_To_v1_NonResourceAttributes(in *authorization.NonResourceAttributes, out *NonResourceAttributes, s conversion.Scope) error { + return autoConvert_authorization_NonResourceAttributes_To_v1_NonResourceAttributes(in, out, s) +} + +func autoConvert_v1_ResourceAttributes_To_authorization_ResourceAttributes(in *ResourceAttributes, out *authorization.ResourceAttributes, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil +} + +// Convert_v1_ResourceAttributes_To_authorization_ResourceAttributes is an autogenerated conversion function. +func Convert_v1_ResourceAttributes_To_authorization_ResourceAttributes(in *ResourceAttributes, out *authorization.ResourceAttributes, s conversion.Scope) error { + return autoConvert_v1_ResourceAttributes_To_authorization_ResourceAttributes(in, out, s) +} + +func autoConvert_authorization_ResourceAttributes_To_v1_ResourceAttributes(in *authorization.ResourceAttributes, out *ResourceAttributes, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil +} + +// Convert_authorization_ResourceAttributes_To_v1_ResourceAttributes is an autogenerated conversion function. +func Convert_authorization_ResourceAttributes_To_v1_ResourceAttributes(in *authorization.ResourceAttributes, out *ResourceAttributes, s conversion.Scope) error { + return autoConvert_authorization_ResourceAttributes_To_v1_ResourceAttributes(in, out, s) +} + +func autoConvert_v1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in *SelfSubjectAccessReview, out *authorization.SelfSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview is an autogenerated conversion function. +func Convert_v1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in *SelfSubjectAccessReview, out *authorization.SelfSubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_SelfSubjectAccessReview_To_v1_SelfSubjectAccessReview(in *authorization.SelfSubjectAccessReview, out *SelfSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authorization_SelfSubjectAccessReviewSpec_To_v1_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authorization_SelfSubjectAccessReview_To_v1_SelfSubjectAccessReview is an autogenerated conversion function. +func Convert_authorization_SelfSubjectAccessReview_To_v1_SelfSubjectAccessReview(in *authorization.SelfSubjectAccessReview, out *SelfSubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_SelfSubjectAccessReview_To_v1_SelfSubjectAccessReview(in, out, s) +} + +func autoConvert_v1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in *SelfSubjectAccessReviewSpec, out *authorization.SelfSubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*authorization.ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*authorization.NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + return nil +} + +// Convert_v1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_v1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in *SelfSubjectAccessReviewSpec, out *authorization.SelfSubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_v1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_authorization_SelfSubjectAccessReviewSpec_To_v1_SelfSubjectAccessReviewSpec(in *authorization.SelfSubjectAccessReviewSpec, out *SelfSubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + return nil +} + +// Convert_authorization_SelfSubjectAccessReviewSpec_To_v1_SelfSubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_authorization_SelfSubjectAccessReviewSpec_To_v1_SelfSubjectAccessReviewSpec(in *authorization.SelfSubjectAccessReviewSpec, out *SelfSubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_authorization_SelfSubjectAccessReviewSpec_To_v1_SelfSubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_v1_SubjectAccessReview_To_authorization_SubjectAccessReview(in *SubjectAccessReview, out *authorization.SubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_SubjectAccessReview_To_authorization_SubjectAccessReview is an autogenerated conversion function. +func Convert_v1_SubjectAccessReview_To_authorization_SubjectAccessReview(in *SubjectAccessReview, out *authorization.SubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1_SubjectAccessReview_To_authorization_SubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReview_To_v1_SubjectAccessReview(in *authorization.SubjectAccessReview, out *SubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authorization_SubjectAccessReview_To_v1_SubjectAccessReview is an autogenerated conversion function. +func Convert_authorization_SubjectAccessReview_To_v1_SubjectAccessReview(in *authorization.SubjectAccessReview, out *SubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReview_To_v1_SubjectAccessReview(in, out, s) +} + +func autoConvert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in *SubjectAccessReviewSpec, out *authorization.SubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*authorization.ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*authorization.NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + out.User = in.User + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]authorization.ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in *SubjectAccessReviewSpec, out *authorization.SubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_v1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec(in *authorization.SubjectAccessReviewSpec, out *SubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + out.User = in.User + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec(in *authorization.SubjectAccessReviewSpec, out *SubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReviewSpec_To_v1_SubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in *SubjectAccessReviewStatus, out *authorization.SubjectAccessReviewStatus, s conversion.Scope) error { + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil +} + +// Convert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus is an autogenerated conversion function. +func Convert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in *SubjectAccessReviewStatus, out *authorization.SubjectAccessReviewStatus, s conversion.Scope) error { + return autoConvert_v1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus(in *authorization.SubjectAccessReviewStatus, out *SubjectAccessReviewStatus, s conversion.Scope) error { + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil +} + +// Convert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus is an autogenerated conversion function. +func Convert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus(in *authorization.SubjectAccessReviewStatus, out *SubjectAccessReviewStatus, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReviewStatus_To_v1_SubjectAccessReviewStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..bc04bed4d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.deepcopy.go @@ -0,0 +1,187 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LocalSubjectAccessReview, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NonResourceAttributes, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceAttributes, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SelfSubjectAccessReview, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SelfSubjectAccessReviewSpec, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SubjectAccessReview, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SubjectAccessReviewSpec, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SubjectAccessReviewStatus, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + ) +} + +// DeepCopy_v1_LocalSubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_v1_LocalSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalSubjectAccessReview) + out := out.(*LocalSubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_NonResourceAttributes is an autogenerated deepcopy function. +func DeepCopy_v1_NonResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NonResourceAttributes) + out := out.(*NonResourceAttributes) + *out = *in + return nil + } +} + +// DeepCopy_v1_ResourceAttributes is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceAttributes) + out := out.(*ResourceAttributes) + *out = *in + return nil + } +} + +// DeepCopy_v1_SelfSubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_v1_SelfSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReview) + out := out.(*SelfSubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_SelfSubjectAccessReviewSpec is an autogenerated deepcopy function. +func DeepCopy_v1_SelfSubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReviewSpec) + out := out.(*SelfSubjectAccessReviewSpec) + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_SubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_v1_SubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReview) + out := out.(*SubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_SubjectAccessReviewSpec is an autogenerated deepcopy function. +func DeepCopy_v1_SubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewSpec) + out := out.(*SubjectAccessReviewSpec) + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} + +// DeepCopy_v1_SubjectAccessReviewStatus is an autogenerated deepcopy function. +func DeepCopy_v1_SubjectAccessReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewStatus) + out := out.(*SubjectAccessReviewStatus) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.defaults.go new file mode 100644 index 000000000..6df448eb9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/BUILD new file mode 100644 index 000000000..d2185f6dc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/authorization:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/conversion.go new file mode 100644 index 000000000..c40138365 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + return scheme.AddConversionFuncs() +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/defaults.go new file mode 100644 index 000000000..7d689a4cc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/doc.go new file mode 100644 index 000000000..738b0b6d2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=authorization.k8s.io +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.pb.go new file mode 100644 index 000000000..b2e66e619 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.pb.go @@ -0,0 +1,2364 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/authorization/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/authorization/v1beta1/generated.proto + + It has these top-level messages: + ExtraValue + LocalSubjectAccessReview + NonResourceAttributes + ResourceAttributes + SelfSubjectAccessReview + SelfSubjectAccessReviewSpec + SubjectAccessReview + SubjectAccessReviewSpec + SubjectAccessReviewStatus +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *LocalSubjectAccessReview) Reset() { *m = LocalSubjectAccessReview{} } +func (*LocalSubjectAccessReview) ProtoMessage() {} +func (*LocalSubjectAccessReview) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *NonResourceAttributes) Reset() { *m = NonResourceAttributes{} } +func (*NonResourceAttributes) ProtoMessage() {} +func (*NonResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *ResourceAttributes) Reset() { *m = ResourceAttributes{} } +func (*ResourceAttributes) ProtoMessage() {} +func (*ResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *SelfSubjectAccessReview) Reset() { *m = SelfSubjectAccessReview{} } +func (*SelfSubjectAccessReview) ProtoMessage() {} +func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *SelfSubjectAccessReviewSpec) Reset() { *m = SelfSubjectAccessReviewSpec{} } +func (*SelfSubjectAccessReviewSpec) ProtoMessage() {} +func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *SubjectAccessReview) Reset() { *m = SubjectAccessReview{} } +func (*SubjectAccessReview) ProtoMessage() {} +func (*SubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *SubjectAccessReviewSpec) Reset() { *m = SubjectAccessReviewSpec{} } +func (*SubjectAccessReviewSpec) ProtoMessage() {} +func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *SubjectAccessReviewStatus) Reset() { *m = SubjectAccessReviewStatus{} } +func (*SubjectAccessReviewStatus) ProtoMessage() {} +func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{8} +} + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.ExtraValue") + proto.RegisterType((*LocalSubjectAccessReview)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.LocalSubjectAccessReview") + proto.RegisterType((*NonResourceAttributes)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.NonResourceAttributes") + proto.RegisterType((*ResourceAttributes)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.ResourceAttributes") + proto.RegisterType((*SelfSubjectAccessReview)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.SelfSubjectAccessReview") + proto.RegisterType((*SelfSubjectAccessReviewSpec)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.SelfSubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReview)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.SubjectAccessReview") + proto.RegisterType((*SubjectAccessReviewSpec)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.SubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReviewStatus)(nil), "k8s.io.client-go.pkg.apis.authorization.v1beta1.SubjectAccessReviewStatus") +} +func (m ExtraValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m ExtraValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *LocalSubjectAccessReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LocalSubjectAccessReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *NonResourceAttributes) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NonResourceAttributes) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Verb))) + i += copy(dAtA[i:], m.Verb) + return i, nil +} + +func (m *ResourceAttributes) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceAttributes) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Verb))) + i += copy(dAtA[i:], m.Verb) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) + i += copy(dAtA[i:], m.Version) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource))) + i += copy(dAtA[i:], m.Resource) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Subresource))) + i += copy(dAtA[i:], m.Subresource) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *SelfSubjectAccessReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectAccessReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n4, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n5, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n6, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + return i, nil +} + +func (m *SelfSubjectAccessReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SelfSubjectAccessReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ResourceAttributes != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceAttributes.Size())) + n7, err := m.ResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.NonResourceAttributes != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NonResourceAttributes.Size())) + n8, err := m.NonResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + return i, nil +} + +func (m *SubjectAccessReview) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectAccessReview) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n10, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n11, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + return i, nil +} + +func (m *SubjectAccessReviewSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectAccessReviewSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ResourceAttributes != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceAttributes.Size())) + n12, err := m.ResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.NonResourceAttributes != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NonResourceAttributes.Size())) + n13, err := m.NonResourceAttributes.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.User))) + i += copy(dAtA[i:], m.User) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Extra) > 0 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x2a + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n14, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + } + } + return i, nil +} + +func (m *SubjectAccessReviewStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SubjectAccessReviewStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Allowed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.EvaluationError))) + i += copy(dAtA[i:], m.EvaluationError) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LocalSubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NonResourceAttributes) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Verb) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceAttributes) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Verb) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Subresource) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SelfSubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SelfSubjectAccessReviewSpec) Size() (n int) { + var l int + _ = l + if m.ResourceAttributes != nil { + l = m.ResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NonResourceAttributes != nil { + l = m.NonResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *SubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SubjectAccessReviewSpec) Size() (n int) { + var l int + _ = l + if m.ResourceAttributes != nil { + l = m.ResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NonResourceAttributes != nil { + l = m.NonResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SubjectAccessReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.EvaluationError) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *LocalSubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalSubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SubjectAccessReviewSpec", "SubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NonResourceAttributes) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NonResourceAttributes{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Verb:` + fmt.Sprintf("%v", this.Verb) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceAttributes) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceAttributes{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Verb:` + fmt.Sprintf("%v", this.Verb) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `Resource:` + fmt.Sprintf("%v", this.Resource) + `,`, + `Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SelfSubjectAccessReviewSpec", "SelfSubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectAccessReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectAccessReviewSpec{`, + `ResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ResourceAttributes), "ResourceAttributes", "ResourceAttributes", 1) + `,`, + `NonResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.NonResourceAttributes), "NonResourceAttributes", "NonResourceAttributes", 1) + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SubjectAccessReviewSpec", "SubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReviewSpec) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&SubjectAccessReviewSpec{`, + `ResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ResourceAttributes), "ResourceAttributes", "ResourceAttributes", 1) + `,`, + `NonResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.NonResourceAttributes), "NonResourceAttributes", "NonResourceAttributes", 1) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectAccessReviewStatus{`, + `Allowed:` + fmt.Sprintf("%v", this.Allowed) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `EvaluationError:` + fmt.Sprintf("%v", this.EvaluationError) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ExtraValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LocalSubjectAccessReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalSubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalSubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NonResourceAttributes) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NonResourceAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NonResourceAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verb", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verb = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceAttributes) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verb", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verb = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subresource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subresource = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SelfSubjectAccessReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SelfSubjectAccessReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectAccessReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectAccessReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceAttributes == nil { + m.ResourceAttributes = &ResourceAttributes{} + } + if err := m.ResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NonResourceAttributes == nil { + m.NonResourceAttributes = &NonResourceAttributes{} + } + if err := m.NonResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReview) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReviewSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceAttributes == nil { + m.ResourceAttributes = &ResourceAttributes{} + } + if err := m.ResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NonResourceAttributes == nil { + m.NonResourceAttributes = &NonResourceAttributes{} + } + if err := m.NonResourceAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReviewStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Allowed", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Allowed = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvaluationError", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvaluationError = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 886 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0xdc, 0x44, + 0x14, 0x5f, 0xef, 0x9f, 0x64, 0x77, 0x02, 0xa4, 0x4c, 0x55, 0xe2, 0x06, 0xc9, 0xbb, 0x5a, 0x24, + 0x14, 0x24, 0x6a, 0x37, 0xe5, 0x5f, 0x55, 0x71, 0x20, 0x16, 0x51, 0x55, 0x41, 0x0b, 0x9a, 0x40, + 0x0e, 0x70, 0x61, 0xec, 0xbc, 0xee, 0x9a, 0xdd, 0xf5, 0x58, 0x33, 0x63, 0x97, 0x70, 0xea, 0x07, + 0xe0, 0xc0, 0xb1, 0x47, 0xbe, 0x02, 0x5f, 0x80, 0x2b, 0x39, 0xf6, 0x58, 0x24, 0xb4, 0x22, 0xe6, + 0x5b, 0x70, 0x42, 0x33, 0x9e, 0x5d, 0x67, 0xbb, 0x0e, 0xd5, 0x42, 0x11, 0x1c, 0x72, 0xb3, 0xdf, + 0xfb, 0xbd, 0xdf, 0xfb, 0xcd, 0x9b, 0x37, 0xf3, 0x06, 0x7d, 0x30, 0xba, 0x29, 0xdc, 0x88, 0x79, + 0xa3, 0x34, 0x00, 0x1e, 0x83, 0x04, 0xe1, 0x25, 0xa3, 0x81, 0x47, 0x93, 0x48, 0x78, 0x34, 0x95, + 0x43, 0xc6, 0xa3, 0x6f, 0xa9, 0x8c, 0x58, 0xec, 0x65, 0xbb, 0x01, 0x48, 0xba, 0xeb, 0x0d, 0x20, + 0x06, 0x4e, 0x25, 0x1c, 0xb9, 0x09, 0x67, 0x92, 0xe1, 0xeb, 0x05, 0x83, 0x5b, 0x32, 0xb8, 0xc9, + 0x68, 0xe0, 0x2a, 0x06, 0x77, 0x81, 0xc1, 0x35, 0x0c, 0xdb, 0xd7, 0x06, 0x91, 0x1c, 0xa6, 0x81, + 0x1b, 0xb2, 0x89, 0x37, 0x60, 0x03, 0xe6, 0x69, 0xa2, 0x20, 0xbd, 0xaf, 0xff, 0xf4, 0x8f, 0xfe, + 0x2a, 0x12, 0x6c, 0xbf, 0x6d, 0x24, 0xd2, 0x24, 0x9a, 0xd0, 0x70, 0x18, 0xc5, 0xc0, 0x8f, 0x4b, + 0x91, 0x13, 0x90, 0xd4, 0xcb, 0x96, 0x64, 0x6d, 0x7b, 0xe7, 0x45, 0xf1, 0x34, 0x96, 0xd1, 0x04, + 0x96, 0x02, 0xde, 0x7d, 0x56, 0x80, 0x08, 0x87, 0x30, 0xa1, 0x4b, 0x71, 0x6f, 0x9d, 0x17, 0x97, + 0xca, 0x68, 0xec, 0x45, 0xb1, 0x14, 0x92, 0x3f, 0x1d, 0xd4, 0x7f, 0x0f, 0xa1, 0xfd, 0x6f, 0x24, + 0xa7, 0x87, 0x74, 0x9c, 0x02, 0xee, 0xa2, 0x56, 0x24, 0x61, 0x22, 0x6c, 0xab, 0xd7, 0xd8, 0xe9, + 0xf8, 0x9d, 0x7c, 0xda, 0x6d, 0xdd, 0x51, 0x06, 0x52, 0xd8, 0x6f, 0xb5, 0x1f, 0xfd, 0xd0, 0xad, + 0x3d, 0xfc, 0xb5, 0x57, 0xeb, 0x4f, 0xeb, 0xc8, 0xfe, 0x98, 0x85, 0x74, 0x7c, 0x90, 0x06, 0x5f, + 0x43, 0x28, 0xf7, 0xc2, 0x10, 0x84, 0x20, 0x90, 0x45, 0xf0, 0x00, 0x7f, 0x85, 0xda, 0xaa, 0x1c, + 0x47, 0x54, 0x52, 0xdb, 0xea, 0x59, 0x3b, 0x1b, 0x37, 0xae, 0xbb, 0x66, 0x77, 0xce, 0xaa, 0x2b, + 0xf7, 0x47, 0xa1, 0xdd, 0x6c, 0xd7, 0xfd, 0x44, 0x73, 0xdd, 0x05, 0x49, 0x7d, 0x7c, 0x32, 0xed, + 0xd6, 0xf2, 0x69, 0x17, 0x95, 0x36, 0x32, 0x67, 0xc5, 0x23, 0xd4, 0x14, 0x09, 0x84, 0x76, 0x5d, + 0xb3, 0xdf, 0x71, 0x57, 0xdd, 0x7b, 0xb7, 0x42, 0xf6, 0x41, 0x02, 0xa1, 0xff, 0x82, 0x49, 0xdb, + 0x54, 0x7f, 0x44, 0x27, 0xc1, 0x02, 0xad, 0x09, 0x49, 0x65, 0x2a, 0xec, 0x86, 0x4e, 0xf7, 0xd1, + 0xf3, 0x49, 0xa7, 0x29, 0xfd, 0x97, 0x4c, 0xc2, 0xb5, 0xe2, 0x9f, 0x98, 0x54, 0xfd, 0x2f, 0xd1, + 0x95, 0x7b, 0x2c, 0x26, 0x20, 0x58, 0xca, 0x43, 0xd8, 0x93, 0x92, 0x47, 0x41, 0x2a, 0x41, 0xe0, + 0x1e, 0x6a, 0x26, 0x54, 0x0e, 0x75, 0x61, 0x3b, 0xa5, 0xde, 0x4f, 0xa9, 0x1c, 0x12, 0xed, 0x51, + 0x88, 0x0c, 0x78, 0xa0, 0x8b, 0x73, 0x06, 0x71, 0x08, 0x3c, 0x20, 0xda, 0xd3, 0xff, 0xa9, 0x8e, + 0x70, 0x05, 0xb5, 0x87, 0x3a, 0x31, 0x9d, 0x80, 0x48, 0x68, 0x08, 0x86, 0xff, 0x65, 0x13, 0xdd, + 0xb9, 0x37, 0x73, 0x90, 0x12, 0xf3, 0xec, 0x4c, 0xf8, 0x35, 0xd4, 0x1a, 0x70, 0x96, 0x26, 0xba, + 0x74, 0x1d, 0xff, 0x45, 0x03, 0x69, 0xdd, 0x56, 0x46, 0x52, 0xf8, 0xf0, 0x1b, 0x68, 0x3d, 0x03, + 0x2e, 0x22, 0x16, 0xdb, 0x4d, 0x0d, 0xdb, 0x34, 0xb0, 0xf5, 0xc3, 0xc2, 0x4c, 0x66, 0x7e, 0xfc, + 0x26, 0x6a, 0x73, 0x23, 0xdc, 0x6e, 0x69, 0xec, 0x25, 0x83, 0x6d, 0xcf, 0x16, 0x44, 0xe6, 0x08, + 0xfc, 0x0e, 0xda, 0x10, 0x69, 0x30, 0x0f, 0x58, 0xd3, 0x01, 0x97, 0x4d, 0xc0, 0xc6, 0x41, 0xe9, + 0x22, 0x67, 0x71, 0x6a, 0x59, 0x6a, 0x8d, 0xf6, 0xfa, 0xe2, 0xb2, 0x54, 0x09, 0x88, 0xf6, 0xf4, + 0x4f, 0xeb, 0x68, 0xeb, 0x00, 0xc6, 0xf7, 0xff, 0x9b, 0xee, 0x67, 0x0b, 0xdd, 0x7f, 0xf7, 0x6f, + 0xb4, 0x63, 0xb5, 0xf4, 0xff, 0xd7, 0x09, 0xf8, 0xb9, 0x8e, 0x5e, 0xfd, 0x0b, 0xa1, 0xf8, 0x3b, + 0x0b, 0x61, 0xbe, 0xd4, 0xc4, 0xa6, 0xe4, 0x1f, 0xae, 0xae, 0x70, 0xf9, 0x40, 0xf8, 0xaf, 0xe4, + 0xd3, 0x6e, 0xc5, 0x41, 0x21, 0x15, 0x79, 0xf1, 0x23, 0x0b, 0x5d, 0x89, 0xab, 0x4e, 0xac, 0xd9, + 0xa6, 0xdb, 0xab, 0x2b, 0xaa, 0xbc, 0x00, 0xfc, 0xab, 0xf9, 0xb4, 0x5b, 0x7d, 0x37, 0x90, 0x6a, + 0x01, 0xfd, 0x5f, 0xea, 0xe8, 0xf2, 0xc5, 0x3d, 0xfd, 0xef, 0x74, 0xe9, 0x1f, 0x4d, 0xb4, 0x75, + 0xd1, 0xa1, 0xff, 0xb0, 0x43, 0xe7, 0x83, 0xa4, 0xb1, 0x78, 0xe3, 0x7e, 0x2e, 0x80, 0x9b, 0x41, + 0xd2, 0x9b, 0x0d, 0x92, 0xa6, 0x7e, 0x9b, 0x20, 0xb5, 0x15, 0x7a, 0x88, 0x88, 0xd9, 0x14, 0x39, + 0x46, 0x2d, 0x50, 0x6f, 0x19, 0xbb, 0xd5, 0x6b, 0xec, 0x6c, 0xdc, 0xf8, 0xec, 0xb9, 0x35, 0x9b, + 0xab, 0x9f, 0x48, 0xfb, 0xb1, 0xe4, 0xc7, 0xe5, 0x00, 0xd3, 0x36, 0x52, 0x64, 0xdc, 0xce, 0xcc, + 0x33, 0x4a, 0x63, 0xf0, 0x25, 0xd4, 0x18, 0xc1, 0x71, 0x31, 0x40, 0x89, 0xfa, 0xc4, 0x04, 0xb5, + 0x32, 0xf5, 0xc2, 0x32, 0x85, 0x7e, 0x7f, 0x75, 0x69, 0xe5, 0x2b, 0x8d, 0x14, 0x54, 0xb7, 0xea, + 0x37, 0xad, 0xfe, 0x8f, 0x16, 0xba, 0x7a, 0x6e, 0xcb, 0xaa, 0xb1, 0x4a, 0xc7, 0x63, 0xf6, 0x00, + 0x8e, 0xb4, 0x96, 0x76, 0x39, 0x56, 0xf7, 0x0a, 0x33, 0x99, 0xf9, 0xf1, 0xeb, 0x68, 0x8d, 0x03, + 0x15, 0x2c, 0x36, 0xa3, 0x7c, 0xde, 0xed, 0x44, 0x5b, 0x89, 0xf1, 0xe2, 0x3d, 0xb4, 0x09, 0x2a, + 0xbd, 0x16, 0xb7, 0xcf, 0x39, 0xe3, 0x66, 0xcb, 0xb6, 0x4c, 0xc0, 0xe6, 0xfe, 0xa2, 0x9b, 0x3c, + 0x8d, 0xf7, 0xaf, 0x9d, 0x9c, 0x3a, 0xb5, 0xc7, 0xa7, 0x4e, 0xed, 0xc9, 0xa9, 0x53, 0x7b, 0x98, + 0x3b, 0xd6, 0x49, 0xee, 0x58, 0x8f, 0x73, 0xc7, 0x7a, 0x92, 0x3b, 0xd6, 0x6f, 0xb9, 0x63, 0x7d, + 0xff, 0xbb, 0x53, 0xfb, 0x62, 0xdd, 0x2c, 0xfc, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x24, 0x8e, + 0x13, 0x84, 0x19, 0x0c, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.proto new file mode 100644 index 000000000..104e3573c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/generated.proto @@ -0,0 +1,183 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.authorization.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +message LocalSubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + optional SubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + optional SubjectAccessReviewStatus status = 3; +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +message NonResourceAttributes { + // Path is the URL path of the request + // +optional + optional string path = 1; + + // Verb is the standard HTTP verb + // +optional + optional string verb = 2; +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +message ResourceAttributes { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + // +optional + optional string namespace = 1; + + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + // +optional + optional string verb = 2; + + // Group is the API Group of the Resource. "*" means all. + // +optional + optional string group = 3; + + // Version is the API Version of the Resource. "*" means all. + // +optional + optional string version = 4; + + // Resource is one of the existing resource types. "*" means all. + // +optional + optional string resource = 5; + + // Subresource is one of the existing resource types. "" means none. + // +optional + optional string subresource = 6; + + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + // +optional + optional string name = 7; +} + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +message SelfSubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. user and groups must be empty + optional SelfSubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + optional SubjectAccessReviewStatus status = 3; +} + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +message SelfSubjectAccessReviewSpec { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; +} + +// SubjectAccessReview checks whether or not a user or group can perform an action. +message SubjectAccessReview { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated + optional SubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + optional SubjectAccessReviewStatus status = 3; +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +message SubjectAccessReviewSpec { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + // +optional + optional NonResourceAttributes nonResourceAttributes = 2; + + // User is the user you're testing for. + // If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups + // +optional + optional string verb = 3; + + // Groups is the groups you're testing for. + // +optional + repeated string group = 4; + + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + // +optional + map extra = 5; +} + +// SubjectAccessReviewStatus +message SubjectAccessReviewStatus { + // Allowed is required. True if the action would be allowed, false otherwise. + optional bool allowed = 1; + + // Reason is optional. It indicates why a request was allowed or denied. + // +optional + optional string reason = 2; + + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + // +optional + optional string evaluationError = 3; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/register.go new file mode 100644 index 000000000..599501cd0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/register.go @@ -0,0 +1,61 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.generated.go new file mode 100644 index 000000000..939603c58 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.generated.go @@ -0,0 +1,3233 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *SubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SelfSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Namespace != "" + yyq2[1] = x.Verb != "" + yyq2[2] = x.Group != "" + yyq2[3] = x.Version != "" + yyq2[4] = x.Resource != "" + yyq2[5] = x.Subresource != "" + yyq2[6] = x.Name != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("version")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subresource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv4 := &x.Namespace + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv6 := &x.Verb + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + yyv8 := &x.Group + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "version": + if r.TryDecodeAsNil() { + x.Version = "" + } else { + yyv10 := &x.Version + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + yyv12 := &x.Resource + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + case "subresource": + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + yyv14 := &x.Subresource + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv16 := &x.Name + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv19 := &x.Namespace + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv21 := &x.Verb + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + yyv23 := &x.Group + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Version = "" + } else { + yyv25 := &x.Version + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*string)(yyv25)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + yyv27 := &x.Resource + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*string)(yyv27)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + yyv29 := &x.Subresource + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*string)(yyv29)) = r.DecodeString() + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv31 := &x.Name + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*string)(yyv31)) = r.DecodeString() + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NonResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Path != "" + yyq2[1] = x.Verb != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NonResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NonResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv6 := &x.Verb + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NonResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv9 := &x.Path + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + yyv11 := &x.Verb + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ResourceAttributes != nil + yyq2[1] = x.NonResourceAttributes != nil + yyq2[2] = x.User != "" + yyq2[3] = len(x.Groups) != 0 + yyq2[4] = len(x.Extra) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Extra == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "resourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "nonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv6 := &x.User + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "group": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv8 := &x.Groups + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv10 := &x.Extra + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + yyv15 := &x.User + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv17 := &x.Groups + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + z.F.DecSliceStringX(yyv17, false, d) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv19 := &x.Extra + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ResourceAttributes != nil + yyq2[1] = x.NonResourceAttributes != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "resourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "nonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Reason != "" + yyq2[2] = x.EvaluationError != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("evaluationError")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "allowed": + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + yyv4 := &x.Allowed + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*bool)(yyv4)) = r.DecodeBool() + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv6 := &x.Reason + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "evaluationError": + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + yyv8 := &x.EvaluationError + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + yyv11 := &x.Allowed + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*bool)(yyv11)) = r.DecodeBool() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv13 := &x.Reason + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + yyv15 := &x.EvaluationError + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk1)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv1 == nil { + r.EncodeNil() + } else { + yyv1.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 40) + yyv1 = make(map[string]ExtraValue, yyrl1) + *v = yyv1 + } + var yymk1 string + var yymv1 ExtraValue + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv4 := &yymv1 + yyv4.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv5 := &yymk1 + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv7 := &yymv1 + yyv7.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv1)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]string, yyrl1) + } + } else { + yyv1 = make([]string, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 string + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv6 := &yyv1[yyj1] + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.go new file mode 100644 index 000000000..8a1727423 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types.go @@ -0,0 +1,176 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type SubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated + Spec SubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +type SelfSubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. user and groups must be empty + Spec SelfSubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true +// +noMethods=true + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +type LocalSubjectAccessReview struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + Spec SubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + // +optional + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +type ResourceAttributes struct { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,1,opt,name=namespace"` + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + // +optional + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` + // Group is the API Group of the Resource. "*" means all. + // +optional + Group string `json:"group,omitempty" protobuf:"bytes,3,opt,name=group"` + // Version is the API Version of the Resource. "*" means all. + // +optional + Version string `json:"version,omitempty" protobuf:"bytes,4,opt,name=version"` + // Resource is one of the existing resource types. "*" means all. + // +optional + Resource string `json:"resource,omitempty" protobuf:"bytes,5,opt,name=resource"` + // Subresource is one of the existing resource types. "" means none. + // +optional + Subresource string `json:"subresource,omitempty" protobuf:"bytes,6,opt,name=subresource"` + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,7,opt,name=name"` +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +type NonResourceAttributes struct { + // Path is the URL path of the request + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Verb is the standard HTTP verb + // +optional + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +type SubjectAccessReviewSpec struct { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + NonResourceAttributes *NonResourceAttributes `json:"nonResourceAttributes,omitempty" protobuf:"bytes,2,opt,name=nonResourceAttributes"` + + // User is the user you're testing for. + // If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups + // +optional + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=verb"` + // Groups is the groups you're testing for. + // +optional + Groups []string `json:"group,omitempty" protobuf:"bytes,4,rep,name=group"` + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,5,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +type SelfSubjectAccessReviewSpec struct { + // ResourceAuthorizationAttributes describes information for a resource access request + // +optional + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + // +optional + NonResourceAttributes *NonResourceAttributes `json:"nonResourceAttributes,omitempty" protobuf:"bytes,2,opt,name=nonResourceAttributes"` +} + +// SubjectAccessReviewStatus +type SubjectAccessReviewStatus struct { + // Allowed is required. True if the action would be allowed, false otherwise. + Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"` + // Reason is optional. It indicates why a request was allowed or denied. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + // +optional + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,3,opt,name=evaluationError"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..8e521ba16 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,119 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_LocalSubjectAccessReview = map[string]string{ + "": "LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.", + "spec": "Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace you made the request against. If empty, it is defaulted.", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (LocalSubjectAccessReview) SwaggerDoc() map[string]string { + return map_LocalSubjectAccessReview +} + +var map_NonResourceAttributes = map[string]string{ + "": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", + "path": "Path is the URL path of the request", + "verb": "Verb is the standard HTTP verb", +} + +func (NonResourceAttributes) SwaggerDoc() map[string]string { + return map_NonResourceAttributes +} + +var map_ResourceAttributes = map[string]string{ + "": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", + "namespace": "Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview", + "verb": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", + "group": "Group is the API Group of the Resource. \"*\" means all.", + "version": "Version is the API Version of the Resource. \"*\" means all.", + "resource": "Resource is one of the existing resource types. \"*\" means all.", + "subresource": "Subresource is one of the existing resource types. \"\" means none.", + "name": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", +} + +func (ResourceAttributes) SwaggerDoc() map[string]string { + return map_ResourceAttributes +} + +var map_SelfSubjectAccessReview = map[string]string{ + "": "SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means \"in all namespaces\". Self is a special case, because users should always be able to check whether they can perform an action", + "spec": "Spec holds information about the request being evaluated. user and groups must be empty", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (SelfSubjectAccessReview) SwaggerDoc() map[string]string { + return map_SelfSubjectAccessReview +} + +var map_SelfSubjectAccessReviewSpec = map[string]string{ + "": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", + "resourceAttributes": "ResourceAuthorizationAttributes describes information for a resource access request", + "nonResourceAttributes": "NonResourceAttributes describes information for a non-resource access request", +} + +func (SelfSubjectAccessReviewSpec) SwaggerDoc() map[string]string { + return map_SelfSubjectAccessReviewSpec +} + +var map_SubjectAccessReview = map[string]string{ + "": "SubjectAccessReview checks whether or not a user or group can perform an action.", + "spec": "Spec holds information about the request being evaluated", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (SubjectAccessReview) SwaggerDoc() map[string]string { + return map_SubjectAccessReview +} + +var map_SubjectAccessReviewSpec = map[string]string{ + "": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", + "resourceAttributes": "ResourceAuthorizationAttributes describes information for a resource access request", + "nonResourceAttributes": "NonResourceAttributes describes information for a non-resource access request", + "user": "User is the user you're testing for. If you specify \"User\" but not \"Group\", then is it interpreted as \"What if User were not a member of any groups", + "group": "Groups is the groups you're testing for.", + "extra": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", +} + +func (SubjectAccessReviewSpec) SwaggerDoc() map[string]string { + return map_SubjectAccessReviewSpec +} + +var map_SubjectAccessReviewStatus = map[string]string{ + "": "SubjectAccessReviewStatus", + "allowed": "Allowed is required. True if the action would be allowed, false otherwise.", + "reason": "Reason is optional. It indicates why a request was allowed or denied.", + "evaluationError": "EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.", +} + +func (SubjectAccessReviewStatus) SwaggerDoc() map[string]string { + return map_SubjectAccessReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..dc74214f1 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.conversion.go @@ -0,0 +1,279 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + authorization "k8s.io/client-go/pkg/apis/authorization" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview, + Convert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview, + Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes, + Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes, + Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes, + Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes, + Convert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview, + Convert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview, + Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec, + Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec, + Convert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview, + Convert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview, + Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec, + Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec, + Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus, + Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus, + ) +} + +func autoConvert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in *LocalSubjectAccessReview, out *authorization.LocalSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview is an autogenerated conversion function. +func Convert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in *LocalSubjectAccessReview, out *authorization.LocalSubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview(in *authorization.LocalSubjectAccessReview, out *LocalSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview is an autogenerated conversion function. +func Convert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview(in *authorization.LocalSubjectAccessReview, out *LocalSubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview(in, out, s) +} + +func autoConvert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(in *NonResourceAttributes, out *authorization.NonResourceAttributes, s conversion.Scope) error { + out.Path = in.Path + out.Verb = in.Verb + return nil +} + +// Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes is an autogenerated conversion function. +func Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(in *NonResourceAttributes, out *authorization.NonResourceAttributes, s conversion.Scope) error { + return autoConvert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(in, out, s) +} + +func autoConvert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(in *authorization.NonResourceAttributes, out *NonResourceAttributes, s conversion.Scope) error { + out.Path = in.Path + out.Verb = in.Verb + return nil +} + +// Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes is an autogenerated conversion function. +func Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(in *authorization.NonResourceAttributes, out *NonResourceAttributes, s conversion.Scope) error { + return autoConvert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(in, out, s) +} + +func autoConvert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(in *ResourceAttributes, out *authorization.ResourceAttributes, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil +} + +// Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes is an autogenerated conversion function. +func Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(in *ResourceAttributes, out *authorization.ResourceAttributes, s conversion.Scope) error { + return autoConvert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(in, out, s) +} + +func autoConvert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(in *authorization.ResourceAttributes, out *ResourceAttributes, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil +} + +// Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes is an autogenerated conversion function. +func Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(in *authorization.ResourceAttributes, out *ResourceAttributes, s conversion.Scope) error { + return autoConvert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(in, out, s) +} + +func autoConvert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in *SelfSubjectAccessReview, out *authorization.SelfSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview is an autogenerated conversion function. +func Convert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in *SelfSubjectAccessReview, out *authorization.SelfSubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview(in *authorization.SelfSubjectAccessReview, out *SelfSubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview is an autogenerated conversion function. +func Convert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview(in *authorization.SelfSubjectAccessReview, out *SelfSubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview(in, out, s) +} + +func autoConvert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in *SelfSubjectAccessReviewSpec, out *authorization.SelfSubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*authorization.ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*authorization.NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + return nil +} + +// Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in *SelfSubjectAccessReviewSpec, out *authorization.SelfSubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(in *authorization.SelfSubjectAccessReviewSpec, out *SelfSubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + return nil +} + +// Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(in *authorization.SelfSubjectAccessReviewSpec, out *SelfSubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview(in *SubjectAccessReview, out *authorization.SubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview is an autogenerated conversion function. +func Convert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview(in *SubjectAccessReview, out *authorization.SubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview(in *authorization.SubjectAccessReview, out *SubjectAccessReview, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview is an autogenerated conversion function. +func Convert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview(in *authorization.SubjectAccessReview, out *SubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview(in, out, s) +} + +func autoConvert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in *SubjectAccessReviewSpec, out *authorization.SubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*authorization.ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*authorization.NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + out.User = in.User + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]authorization.ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in *SubjectAccessReviewSpec, out *authorization.SubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(in *authorization.SubjectAccessReviewSpec, out *SubjectAccessReviewSpec, s conversion.Scope) error { + out.ResourceAttributes = (*ResourceAttributes)(unsafe.Pointer(in.ResourceAttributes)) + out.NonResourceAttributes = (*NonResourceAttributes)(unsafe.Pointer(in.NonResourceAttributes)) + out.User = in.User + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec is an autogenerated conversion function. +func Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(in *authorization.SubjectAccessReviewSpec, out *SubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in *SubjectAccessReviewStatus, out *authorization.SubjectAccessReviewStatus, s conversion.Scope) error { + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil +} + +// Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus is an autogenerated conversion function. +func Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in *SubjectAccessReviewStatus, out *authorization.SubjectAccessReviewStatus, s conversion.Scope) error { + return autoConvert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(in *authorization.SubjectAccessReviewStatus, out *SubjectAccessReviewStatus, s conversion.Scope) error { + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil +} + +// Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus is an autogenerated conversion function. +func Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(in *authorization.SubjectAccessReviewStatus, out *SubjectAccessReviewStatus, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..fe99f2844 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,187 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_LocalSubjectAccessReview, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NonResourceAttributes, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ResourceAttributes, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SelfSubjectAccessReview, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SelfSubjectAccessReviewSpec, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubjectAccessReview, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubjectAccessReviewSpec, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubjectAccessReviewStatus, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + ) +} + +// DeepCopy_v1beta1_LocalSubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_v1beta1_LocalSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalSubjectAccessReview) + out := out.(*LocalSubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_NonResourceAttributes is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NonResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NonResourceAttributes) + out := out.(*NonResourceAttributes) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_ResourceAttributes is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceAttributes) + out := out.(*ResourceAttributes) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_SelfSubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SelfSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReview) + out := out.(*SelfSubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_SelfSubjectAccessReviewSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReviewSpec) + out := out.(*SelfSubjectAccessReviewSpec) + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_SubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReview) + out := out.(*SubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_SubjectAccessReviewSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewSpec) + out := out.(*SubjectAccessReviewSpec) + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_SubjectAccessReviewStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SubjectAccessReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewStatus) + out := out.(*SubjectAccessReviewStatus) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..e24e70be3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/v1beta1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/authorization/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/authorization/zz_generated.deepcopy.go new file mode 100644 index 000000000..74c83c56a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/authorization/zz_generated.deepcopy.go @@ -0,0 +1,187 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package authorization + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_LocalSubjectAccessReview, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_NonResourceAttributes, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_ResourceAttributes, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SelfSubjectAccessReview, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SelfSubjectAccessReviewSpec, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SubjectAccessReview, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SubjectAccessReviewSpec, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SubjectAccessReviewStatus, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + ) +} + +// DeepCopy_authorization_LocalSubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_authorization_LocalSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalSubjectAccessReview) + out := out.(*LocalSubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_authorization_NonResourceAttributes is an autogenerated deepcopy function. +func DeepCopy_authorization_NonResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NonResourceAttributes) + out := out.(*NonResourceAttributes) + *out = *in + return nil + } +} + +// DeepCopy_authorization_ResourceAttributes is an autogenerated deepcopy function. +func DeepCopy_authorization_ResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceAttributes) + out := out.(*ResourceAttributes) + *out = *in + return nil + } +} + +// DeepCopy_authorization_SelfSubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_authorization_SelfSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReview) + out := out.(*SelfSubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_authorization_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_authorization_SelfSubjectAccessReviewSpec is an autogenerated deepcopy function. +func DeepCopy_authorization_SelfSubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReviewSpec) + out := out.(*SelfSubjectAccessReviewSpec) + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } + return nil + } +} + +// DeepCopy_authorization_SubjectAccessReview is an autogenerated deepcopy function. +func DeepCopy_authorization_SubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReview) + out := out.(*SubjectAccessReview) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_authorization_SubjectAccessReviewSpec is an autogenerated deepcopy function. +func DeepCopy_authorization_SubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewSpec) + out := out.(*SubjectAccessReviewSpec) + *out = *in + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} + +// DeepCopy_authorization_SubjectAccessReviewStatus is an autogenerated deepcopy function. +func DeepCopy_authorization_SubjectAccessReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewStatus) + out := out.(*SubjectAccessReviewStatus) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/BUILD b/vendor/k8s.io/client-go/pkg/apis/autoscaling/BUILD new file mode 100644 index 000000000..f2d4141e7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "annotations.go", + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/OWNERS b/vendor/k8s.io/client-go/pkg/apis/autoscaling/OWNERS new file mode 100755 index 000000000..76dffeceb --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/OWNERS @@ -0,0 +1,20 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- caesarxuchao +- erictune +- sttts +- ncdc +- timothysc +- piosz +- dims +- errordeveloper +- madhusudancs +- mml +- mbohlool +- david-mcmahon +- jianhuiz +- directxman12 diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/annotations.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/annotations.go new file mode 100644 index 000000000..c6586ea70 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/annotations.go @@ -0,0 +1,34 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package autoscaling + +// MetricSpecsAnnotation is the annotation which holds non-CPU-utilization HPA metric +// specs when converting the `Metrics` field from autoscaling/v2alpha1 +const MetricSpecsAnnotation = "autoscaling.alpha.kubernetes.io/metrics" + +// MetricStatusesAnnotation is the annotation which holds non-CPU-utilization HPA metric +// statuses when converting the `CurrentMetrics` field from autoscaling/v2alpha1 +const MetricStatusesAnnotation = "autoscaling.alpha.kubernetes.io/current-metrics" + +// HorizontalPodAutoscalerConditionsAnnotation is the annotation which holds the conditions +// of an HPA when converting the `Conditions` field from autoscaling/v2alpha1 +const HorizontalPodAutoscalerConditionsAnnotation = "autoscaling.alpha.kubernetes.io/conditions" + +// DefaultCPUUtilization is the default value for CPU utilization, provided no other +// metrics are present. This is here because it's used by both the v2alpha1 defaulting +// logic, and the pseudo-defaulting done in v1 conversion. +const DefaultCPUUtilization = 80 diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/doc.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/doc.go new file mode 100644 index 000000000..83ac82767 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package autoscaling diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/autoscaling/install/BUILD new file mode 100644 index 000000000..eb0f54888 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/install/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/install/install.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/install/install.go new file mode 100644 index 000000000..0ecc0af9b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/install/install.go @@ -0,0 +1,51 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/autoscaling" + "k8s.io/client-go/pkg/apis/autoscaling/v1" + "k8s.io/client-go/pkg/apis/autoscaling/v2alpha1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: autoscaling.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version, v2alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/autoscaling", + AddInternalObjectsToScheme: autoscaling.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + v2alpha1.SchemeGroupVersion.Version: v2alpha1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/register.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/register.go new file mode 100644 index 000000000..2bcea84b9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/register.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package autoscaling + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Scale{}, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/types.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/types.go new file mode 100644 index 000000000..19fdc8a4f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/types.go @@ -0,0 +1,358 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package autoscaling + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api" +) + +// Scale represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus +} + +// ScaleSpec describes the attributes of a scale subresource. +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + Replicas int32 +} + +// ScaleStatus represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 + + // label query over pods that should match the replicas count. This is same + // as the label selector but in the string format to avoid introspection + // by clients. The string will be in the same format as the query-param syntax. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector string +} + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + Kind string + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + Name string + // API version of the referent + // +optional + APIVersion string +} + +// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. +type HorizontalPodAutoscalerSpec struct { + // ScaleTargetRef points to the target resource to scale, and is used to the pods for which metrics + // should be collected, as well as to actually change the replica count. + ScaleTargetRef CrossVersionObjectReference + // MinReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // It defaults to 1 pod. + // +optional + MinReplicas *int32 + // MaxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + // It cannot be less that minReplicas. + MaxReplicas int32 + // Metrics contains the specifications for which to use to calculate the + // desired replica count (the maximum replica count across all metrics will + // be used). The desired replica count is calculated multiplying the + // ratio between the target value and the current value by the current + // number of pods. Ergo, metrics used must decrease as the pod count is + // increased, and vice-versa. See the individual metric source types for + // more information about how each type of metric must respond. + // +optional + Metrics []MetricSpec +} + +// MetricSourceType indicates the type of metric. +type MetricSourceType string + +var ( + // ObjectMetricSourceType is a metric describing a kubernetes object + // (for example, hits-per-second on an Ingress object). + ObjectMetricSourceType MetricSourceType = "Object" + // PodsMetricSourceType is a metric describing each pod in the current scale + // target (for example, transactions-processed-per-second). The values + // will be averaged together before being compared to the target value. + PodsMetricSourceType MetricSourceType = "Pods" + // ResourceMetricSourceType is a resource metric known to Kubernetes, as + // specified in requests and limits, describing each pod in the current + // scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics (the "pods" source). + ResourceMetricSourceType MetricSourceType = "Resource" +) + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +type MetricSpec struct { + // Type is the type of metric source. It should match one of the fields below. + Type MetricSourceType + + // Object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricSource + // Pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricSource + // Resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricSource +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricSource struct { + // Target is the described Kubernetes object. + Target CrossVersionObjectReference + + // MetricName is the name of the metric in question. + MetricName string + // TargetValue is the target value of the metric (as a quantity). + TargetValue resource.Quantity +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +type PodsMetricSource struct { + // MetricName is the name of the metric in question + MetricName string + // TargetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + TargetAverageValue resource.Quantity +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +type ResourceMetricSource struct { + // Name is the name of the resource in question. + Name api.ResourceName + // TargetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + TargetAverageUtilization *int32 + // TargetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + TargetAverageValue *resource.Quantity +} + +// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler. +type HorizontalPodAutoscalerStatus struct { + // ObservedGeneration is the most recent generation observed by this autoscaler. + // +optional + ObservedGeneration *int64 + + // LastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, + // used by the autoscaler to control how often the number of pods is changed. + // +optional + LastScaleTime *metav1.Time + + // CurrentReplicas is current number of replicas of pods managed by this autoscaler, + // as last seen by the autoscaler. + CurrentReplicas int32 + + // DesiredReplicas is the desired number of replicas of pods managed by this autoscaler, + // as last calculated by the autoscaler. + DesiredReplicas int32 + + // CurrentMetrics is the last read state of the metrics used by this autoscaler. + CurrentMetrics []MetricStatus + + // Conditions is the set of conditions required for this autoscaler to scale its target, + // and indicates whether or not those conditions are met. + Conditions []HorizontalPodAutoscalerCondition +} + +// ConditionStatus indicates the status of a condition (true, false, or unknown). +type ConditionStatus string + +// These are valid condition statuses. "ConditionTrue" means a resource is in the condition; +// "ConditionFalse" means a resource is not in the condition; "ConditionUnknown" means kubernetes +// can't decide if a resource is in the condition or not. In the future, we could add other +// intermediate conditions, e.g. ConditionDegraded. +const ( + ConditionTrue ConditionStatus = "True" + ConditionFalse ConditionStatus = "False" + ConditionUnknown ConditionStatus = "Unknown" +) + +// HorizontalPodAutoscalerConditionType are the valid conditions of +// a HorizontalPodAutoscaler. +type HorizontalPodAutoscalerConditionType string + +var ( + // ScalingActive indicates that the HPA controller is able to scale if necessary: + // it's correctly configured, can fetch the desired metrics, and isn't disabled. + ScalingActive HorizontalPodAutoscalerConditionType = "ScalingActive" + // AbleToScale indicates a lack of transient issues which prevent scaling from occuring, + // such as being in a backoff window, or being unable to access/update the target scale. + AbleToScale HorizontalPodAutoscalerConditionType = "AbleToScale" + // ScalingLimited indicates that the calculated scale based on metrics would be above or + // below the range for the HPA, and has thus been capped. + ScalingLimited HorizontalPodAutoscalerConditionType = "ScalingLimited" +) + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +type HorizontalPodAutoscalerCondition struct { + // Type describes the current condition + Type HorizontalPodAutoscalerConditionType + // Status is the status of the condition (True, False, Unknown) + Status ConditionStatus + // LastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + LastTransitionTime metav1.Time + // Reason is the reason for the condition's last transition. + // +optional + Reason string + // Message is a human-readable explanation containing details about + // the transition + // +optional + Message string +} + +// MetricStatus describes the last-read state of a single metric. +type MetricStatus struct { + // Type is the type of metric source. It will match one of the fields below. + Type MetricSourceType + + // Object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricStatus + // Pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricStatus + // Resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricStatus +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricStatus struct { + // Target is the described Kubernetes object. + Target CrossVersionObjectReference + + // MetricName is the name of the metric in question. + MetricName string + // CurrentValue is the current value of the metric (as a quantity). + CurrentValue resource.Quantity +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +type PodsMetricStatus struct { + // MetricName is the name of the metric in question + MetricName string + // CurrentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + CurrentAverageValue resource.Quantity +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +type ResourceMetricStatus struct { + // Name is the name of the resource in question. + Name api.ResourceName + // CurrentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + CurrentAverageUtilization *int32 + // CurrentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + CurrentAverageValue resource.Quantity +} + +// +genclient=true + +// HorizontalPodAutoscaler is the configuration for a horizontal pod +// autoscaler, which automatically manages the replica count of any resource +// implementing the scale subresource based on the metrics specified. +type HorizontalPodAutoscaler struct { + metav1.TypeMeta + // Metadata is the standard object metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Spec is the specification for the behaviour of the autoscaler. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec HorizontalPodAutoscalerSpec + + // Status is the current information about the autoscaler. + // +optional + Status HorizontalPodAutoscalerStatus +} + +// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + metav1.TypeMeta + // Metadata is the standard list metadata. + // +optional + metav1.ListMeta + + // Items is the list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/BUILD b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/BUILD new file mode 100644 index 000000000..fb17b5df4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/BUILD @@ -0,0 +1,39 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/conversion.go new file mode 100644 index 000000000..3e6a320a2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/conversion.go @@ -0,0 +1,275 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/autoscaling" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler, + Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler, + Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec, + Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec, + Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus, + Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus, + ) + if err != nil { + return err + } + + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + if err := autoConvert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(in, out, s); err != nil { + return err + } + + otherMetrics := make([]MetricSpec, 0, len(in.Spec.Metrics)) + for _, metric := range in.Spec.Metrics { + if metric.Type == autoscaling.ResourceMetricSourceType && metric.Resource != nil && metric.Resource.Name == api.ResourceCPU && metric.Resource.TargetAverageUtilization != nil { + continue + } + + convMetric := MetricSpec{} + if err := Convert_autoscaling_MetricSpec_To_v1_MetricSpec(&metric, &convMetric, s); err != nil { + return err + } + otherMetrics = append(otherMetrics, convMetric) + } + + // NB: we need to save the status even if it maps to a CPU utilization status in order to save the raw value as well + currentMetrics := make([]MetricStatus, len(in.Status.CurrentMetrics)) + for i, currentMetric := range in.Status.CurrentMetrics { + if err := Convert_autoscaling_MetricStatus_To_v1_MetricStatus(¤tMetric, ¤tMetrics[i], s); err != nil { + return err + } + } + + // store HPA conditions in an annotation + currentConditions := make([]HorizontalPodAutoscalerCondition, len(in.Status.Conditions)) + for i, currentCondition := range in.Status.Conditions { + if err := Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition(¤tCondition, ¤tConditions[i], s); err != nil { + return err + } + } + + if len(otherMetrics) > 0 || len(in.Status.CurrentMetrics) > 0 || len(currentConditions) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)+3) + if old != nil { + for k, v := range old { + out.Annotations[k] = v + } + } + } + + if len(otherMetrics) > 0 { + otherMetricsEnc, err := json.Marshal(otherMetrics) + if err != nil { + return err + } + out.Annotations[autoscaling.MetricSpecsAnnotation] = string(otherMetricsEnc) + } + + if len(in.Status.CurrentMetrics) > 0 { + currentMetricsEnc, err := json.Marshal(currentMetrics) + if err != nil { + return err + } + out.Annotations[autoscaling.MetricStatusesAnnotation] = string(currentMetricsEnc) + } + + if len(in.Status.Conditions) > 0 { + currentConditionsEnc, err := json.Marshal(currentConditions) + if err != nil { + return err + } + out.Annotations[autoscaling.HorizontalPodAutoscalerConditionsAnnotation] = string(currentConditionsEnc) + } + + return nil +} + +func Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + if err := autoConvert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in, out, s); err != nil { + return err + } + + if otherMetricsEnc, hasOtherMetrics := out.Annotations[autoscaling.MetricSpecsAnnotation]; hasOtherMetrics { + var otherMetrics []MetricSpec + if err := json.Unmarshal([]byte(otherMetricsEnc), &otherMetrics); err != nil { + return err + } + + // the normal Spec conversion could have populated out.Spec.Metrics with a single element, so deal with that + outMetrics := make([]autoscaling.MetricSpec, len(otherMetrics)+len(out.Spec.Metrics)) + for i, metric := range otherMetrics { + if err := Convert_v1_MetricSpec_To_autoscaling_MetricSpec(&metric, &outMetrics[i], s); err != nil { + return err + } + } + if out.Spec.Metrics != nil { + outMetrics[len(otherMetrics)] = out.Spec.Metrics[0] + } + out.Spec.Metrics = outMetrics + delete(out.Annotations, autoscaling.MetricSpecsAnnotation) + } + + if currentMetricsEnc, hasCurrentMetrics := out.Annotations[autoscaling.MetricStatusesAnnotation]; hasCurrentMetrics { + // ignore any existing status values -- the ones here have more information + var currentMetrics []MetricStatus + if err := json.Unmarshal([]byte(currentMetricsEnc), ¤tMetrics); err != nil { + return err + } + + out.Status.CurrentMetrics = make([]autoscaling.MetricStatus, len(currentMetrics)) + for i, currentMetric := range currentMetrics { + if err := Convert_v1_MetricStatus_To_autoscaling_MetricStatus(¤tMetric, &out.Status.CurrentMetrics[i], s); err != nil { + return err + } + } + delete(out.Annotations, autoscaling.MetricStatusesAnnotation) + } + + // autoscaling/v1 formerly had an implicit default applied in the controller. In v2alpha1, we apply it explicitly. + // We apply it here, explicitly, since we have access to the full set of metrics from the annotation. + if len(out.Spec.Metrics) == 0 { + // no other metrics, no explicit CPU value set + out.Spec.Metrics = []autoscaling.MetricSpec{ + { + Type: autoscaling.ResourceMetricSourceType, + Resource: &autoscaling.ResourceMetricSource{ + Name: api.ResourceCPU, + }, + }, + } + out.Spec.Metrics[0].Resource.TargetAverageUtilization = new(int32) + *out.Spec.Metrics[0].Resource.TargetAverageUtilization = autoscaling.DefaultCPUUtilization + } + + if currentConditionsEnc, hasCurrentConditions := out.Annotations[autoscaling.HorizontalPodAutoscalerConditionsAnnotation]; hasCurrentConditions { + var currentConditions []HorizontalPodAutoscalerCondition + if err := json.Unmarshal([]byte(currentConditionsEnc), ¤tConditions); err != nil { + return err + } + + out.Status.Conditions = make([]autoscaling.HorizontalPodAutoscalerCondition, len(currentConditions)) + for i, currentCondition := range currentConditions { + if err := Convert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(¤tCondition, &out.Status.Conditions[i], s); err != nil { + return err + } + } + delete(out.Annotations, autoscaling.HorizontalPodAutoscalerConditionsAnnotation) + } + + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + + out.MinReplicas = in.MinReplicas + out.MaxReplicas = in.MaxReplicas + + for _, metric := range in.Metrics { + if metric.Type == autoscaling.ResourceMetricSourceType && metric.Resource != nil && metric.Resource.Name == api.ResourceCPU { + if metric.Resource.TargetAverageUtilization != nil { + out.TargetCPUUtilizationPercentage = new(int32) + *out.TargetCPUUtilizationPercentage = *metric.Resource.TargetAverageUtilization + } + break + } + } + + return nil +} + +func Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + + out.MinReplicas = in.MinReplicas + out.MaxReplicas = in.MaxReplicas + + if in.TargetCPUUtilizationPercentage != nil { + out.Metrics = []autoscaling.MetricSpec{ + { + Type: autoscaling.ResourceMetricSourceType, + Resource: &autoscaling.ResourceMetricSource{ + Name: api.ResourceCPU, + }, + }, + } + out.Metrics[0].Resource.TargetAverageUtilization = new(int32) + *out.Metrics[0].Resource.TargetAverageUtilization = *in.TargetCPUUtilizationPercentage + } + + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.LastScaleTime = in.LastScaleTime + + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + + for _, metric := range in.CurrentMetrics { + if metric.Type == autoscaling.ResourceMetricSourceType && metric.Resource != nil && metric.Resource.Name == api.ResourceCPU { + if metric.Resource.CurrentAverageUtilization != nil { + + out.CurrentCPUUtilizationPercentage = new(int32) + *out.CurrentCPUUtilizationPercentage = *metric.Resource.CurrentAverageUtilization + } + } + } + return nil +} + +func Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.LastScaleTime = in.LastScaleTime + + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + + if in.CurrentCPUUtilizationPercentage != nil { + out.CurrentMetrics = []autoscaling.MetricStatus{ + { + Type: autoscaling.ResourceMetricSourceType, + Resource: &autoscaling.ResourceMetricStatus{ + Name: api.ResourceCPU, + }, + }, + } + out.CurrentMetrics[0].Resource.CurrentAverageUtilization = new(int32) + *out.CurrentMetrics[0].Resource.CurrentAverageUtilization = *in.CurrentCPUUtilizationPercentage + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/defaults.go new file mode 100644 index 000000000..aeece5b81 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/defaults.go @@ -0,0 +1,35 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_HorizontalPodAutoscaler(obj *HorizontalPodAutoscaler) { + if obj.Spec.MinReplicas == nil { + minReplicas := int32(1) + obj.Spec.MinReplicas = &minReplicas + } + + // NB: we apply a default for CPU utilization in conversion because + // we need access to the annotations to properly apply the default. +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/doc.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/doc.go new file mode 100644 index 000000000..c7be42d5a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.pb.go new file mode 100644 index 000000000..552c980ad --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.pb.go @@ -0,0 +1,3787 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/autoscaling/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/autoscaling/v1/generated.proto + + It has these top-level messages: + CrossVersionObjectReference + HorizontalPodAutoscaler + HorizontalPodAutoscalerCondition + HorizontalPodAutoscalerList + HorizontalPodAutoscalerSpec + HorizontalPodAutoscalerStatus + MetricSpec + MetricStatus + ObjectMetricSource + ObjectMetricStatus + PodsMetricSource + PodsMetricStatus + ResourceMetricSource + ResourceMetricStatus + Scale + ScaleSpec + ScaleStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_api_resource "k8s.io/apimachinery/pkg/api/resource" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *CrossVersionObjectReference) Reset() { *m = CrossVersionObjectReference{} } +func (*CrossVersionObjectReference) ProtoMessage() {} +func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *HorizontalPodAutoscaler) Reset() { *m = HorizontalPodAutoscaler{} } +func (*HorizontalPodAutoscaler) ProtoMessage() {} +func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *HorizontalPodAutoscalerCondition) Reset() { *m = HorizontalPodAutoscalerCondition{} } +func (*HorizontalPodAutoscalerCondition) ProtoMessage() {} +func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *HorizontalPodAutoscalerList) Reset() { *m = HorizontalPodAutoscalerList{} } +func (*HorizontalPodAutoscalerList) ProtoMessage() {} +func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *HorizontalPodAutoscalerSpec) Reset() { *m = HorizontalPodAutoscalerSpec{} } +func (*HorizontalPodAutoscalerSpec) ProtoMessage() {} +func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func (m *HorizontalPodAutoscalerStatus) Reset() { *m = HorizontalPodAutoscalerStatus{} } +func (*HorizontalPodAutoscalerStatus) ProtoMessage() {} +func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *MetricSpec) Reset() { *m = MetricSpec{} } +func (*MetricSpec) ProtoMessage() {} +func (*MetricSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *MetricStatus) Reset() { *m = MetricStatus{} } +func (*MetricStatus) ProtoMessage() {} +func (*MetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *ObjectMetricSource) Reset() { *m = ObjectMetricSource{} } +func (*ObjectMetricSource) ProtoMessage() {} +func (*ObjectMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *ObjectMetricStatus) Reset() { *m = ObjectMetricStatus{} } +func (*ObjectMetricStatus) ProtoMessage() {} +func (*ObjectMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *PodsMetricSource) Reset() { *m = PodsMetricSource{} } +func (*PodsMetricSource) ProtoMessage() {} +func (*PodsMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *PodsMetricStatus) Reset() { *m = PodsMetricStatus{} } +func (*PodsMetricStatus) ProtoMessage() {} +func (*PodsMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ResourceMetricSource) Reset() { *m = ResourceMetricSource{} } +func (*ResourceMetricSource) ProtoMessage() {} +func (*ResourceMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ResourceMetricStatus) Reset() { *m = ResourceMetricStatus{} } +func (*ResourceMetricStatus) ProtoMessage() {} +func (*ResourceMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func init() { + proto.RegisterType((*CrossVersionObjectReference)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.CrossVersionObjectReference") + proto.RegisterType((*HorizontalPodAutoscaler)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.HorizontalPodAutoscaler") + proto.RegisterType((*HorizontalPodAutoscalerCondition)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerCondition") + proto.RegisterType((*HorizontalPodAutoscalerList)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerList") + proto.RegisterType((*HorizontalPodAutoscalerSpec)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerSpec") + proto.RegisterType((*HorizontalPodAutoscalerStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerStatus") + proto.RegisterType((*MetricSpec)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.MetricSpec") + proto.RegisterType((*MetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.MetricStatus") + proto.RegisterType((*ObjectMetricSource)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.ObjectMetricSource") + proto.RegisterType((*ObjectMetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.ObjectMetricStatus") + proto.RegisterType((*PodsMetricSource)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.PodsMetricSource") + proto.RegisterType((*PodsMetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.PodsMetricStatus") + proto.RegisterType((*ResourceMetricSource)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.ResourceMetricSource") + proto.RegisterType((*ResourceMetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.ResourceMetricStatus") + proto.RegisterType((*Scale)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v1.ScaleStatus") +} +func (m *CrossVersionObjectReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CrossVersionObjectReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + return i, nil +} + +func (m *HorizontalPodAutoscaler) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscaler) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *HorizontalPodAutoscalerCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n4, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *HorizontalPodAutoscalerList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HorizontalPodAutoscalerSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleTargetRef.Size())) + n6, err := m.ScaleTargetRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if m.MinReplicas != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MinReplicas)) + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxReplicas)) + if m.TargetCPUUtilizationPercentage != nil { + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TargetCPUUtilizationPercentage)) + } + return i, nil +} + +func (m *HorizontalPodAutoscalerStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ObservedGeneration != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastScaleTime.Size())) + n7, err := m.LastScaleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DesiredReplicas)) + if m.CurrentCPUUtilizationPercentage != nil { + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CurrentCPUUtilizationPercentage)) + } + return i, nil +} + +func (m *MetricSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n8, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n9, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n10, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + return i, nil +} + +func (m *MetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n11, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n12, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n13, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + return i, nil +} + +func (m *ObjectMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n14, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetValue.Size())) + n15, err := m.TargetValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + return i, nil +} + +func (m *ObjectMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n16, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size())) + n17, err := m.CurrentValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + return i, nil +} + +func (m *PodsMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n18, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + return i, nil +} + +func (m *PodsMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n19, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + return i, nil +} + +func (m *ResourceMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if m.TargetAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n20, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *ResourceMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if m.CurrentAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CurrentAverageUtilization)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n21, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + return i, nil +} + +func (m *Scale) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Scale) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n22, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n23, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n24, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + return i, nil +} + +func (m *ScaleSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + return i, nil +} + +func (m *ScaleStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Selector))) + i += copy(dAtA[i:], m.Selector) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *CrossVersionObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscaler) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscalerCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscalerList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HorizontalPodAutoscalerSpec) Size() (n int) { + var l int + _ = l + l = m.ScaleTargetRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.MinReplicas != nil { + n += 1 + sovGenerated(uint64(*m.MinReplicas)) + } + n += 1 + sovGenerated(uint64(m.MaxReplicas)) + if m.TargetCPUUtilizationPercentage != nil { + n += 1 + sovGenerated(uint64(*m.TargetCPUUtilizationPercentage)) + } + return n +} + +func (m *HorizontalPodAutoscalerStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + l = m.LastScaleTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.DesiredReplicas)) + if m.CurrentCPUUtilizationPercentage != nil { + n += 1 + sovGenerated(uint64(*m.CurrentCPUUtilizationPercentage)) + } + return n +} + +func (m *MetricSpec) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *MetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ObjectMetricSource) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectMetricStatus) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.TargetAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ResourceMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.CurrentAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.CurrentAverageUtilization)) + } + l = m.CurrentAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Scale) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScaleSpec) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + return n +} + +func (m *ScaleStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + l = len(m.Selector) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CrossVersionObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CrossVersionObjectReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscaler) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscaler{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "HorizontalPodAutoscalerSpec", "HorizontalPodAutoscalerSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "HorizontalPodAutoscalerStatus", "HorizontalPodAutoscalerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "HorizontalPodAutoscaler", "HorizontalPodAutoscaler", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerSpec{`, + `ScaleTargetRef:` + strings.Replace(strings.Replace(this.ScaleTargetRef.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MinReplicas:` + valueToStringGenerated(this.MinReplicas) + `,`, + `MaxReplicas:` + fmt.Sprintf("%v", this.MaxReplicas) + `,`, + `TargetCPUUtilizationPercentage:` + valueToStringGenerated(this.TargetCPUUtilizationPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `LastScaleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScaleTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `DesiredReplicas:` + fmt.Sprintf("%v", this.DesiredReplicas) + `,`, + `CurrentCPUUtilizationPercentage:` + valueToStringGenerated(this.CurrentCPUUtilizationPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *MetricSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricSpec{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricSource", "ObjectMetricSource", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricSource", "PodsMetricSource", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricSource", "ResourceMetricSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *MetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricStatus{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricStatus", "ObjectMetricStatus", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricStatus", "PodsMetricStatus", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricStatus", "ResourceMetricStatus", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricSource{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricStatus{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricSource{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricStatus{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricSource{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `TargetAverageUtilization:` + valueToStringGenerated(this.TargetAverageUtilization) + `,`, + `TargetAverageValue:` + strings.Replace(fmt.Sprintf("%v", this.TargetAverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `CurrentAverageUtilization:` + valueToStringGenerated(this.CurrentAverageUtilization) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Scale) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Scale{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ScaleSpec", "ScaleSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ScaleStatus", "ScaleStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleSpec{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `Selector:` + fmt.Sprintf("%v", this.Selector) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CrossVersionObjectReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CrossVersionObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CrossVersionObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscaler) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = HorizontalPodAutoscalerConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, HorizontalPodAutoscaler{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleTargetRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ScaleTargetRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReplicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.MinReplicas = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxReplicas", wireType) + } + m.MaxReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetCPUUtilizationPercentage", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TargetCPUUtilizationPercentage = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ObservedGeneration = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastScaleTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastScaleTime == nil { + m.LastScaleTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.LastScaleTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentReplicas", wireType) + } + m.CurrentReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CurrentReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredReplicas", wireType) + } + m.DesiredReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DesiredReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentCPUUtilizationPercentage", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CurrentCPUUtilizationPercentage = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MetricSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = MetricSourceType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Object == nil { + m.Object = &ObjectMetricSource{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pods == nil { + m.Pods = &PodsMetricSource{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resource == nil { + m.Resource = &ResourceMetricSource{} + } + if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = MetricSourceType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Object == nil { + m.Object = &ObjectMetricStatus{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pods == nil { + m.Pods = &PodsMetricStatus{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resource == nil { + m.Resource = &ResourceMetricStatus{} + } + if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodsMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodsMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = k8s_io_kubernetes_pkg_api_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageUtilization", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TargetAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TargetAverageValue == nil { + m.TargetAverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{} + } + if err := m.TargetAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = k8s_io_kubernetes_pkg_api_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageUtilization", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CurrentAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Scale) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Scale: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Scale: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Selector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/autoscaling/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1381 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xcf, 0xda, 0x4e, 0x9a, 0x8e, 0xd3, 0xa6, 0xdf, 0x69, 0xd5, 0xba, 0xe9, 0xb7, 0xde, 0x68, + 0x41, 0xa8, 0x45, 0x65, 0x4d, 0x42, 0xa8, 0xa8, 0x10, 0xa0, 0xd8, 0xa8, 0xb4, 0xa2, 0x6e, 0xc3, + 0xd4, 0x8d, 0xf8, 0x25, 0xc4, 0x64, 0x3d, 0x75, 0xa6, 0xf1, 0xfe, 0xd0, 0xcc, 0xd8, 0x22, 0x95, + 0x90, 0x38, 0x71, 0x85, 0x0b, 0x67, 0x04, 0xff, 0x04, 0xe7, 0x22, 0x21, 0xf5, 0xd8, 0x1b, 0x3d, + 0x59, 0x74, 0xe1, 0x86, 0xf8, 0x07, 0x2a, 0x0e, 0x68, 0x66, 0xc7, 0xeb, 0x5d, 0xdb, 0xeb, 0xc4, + 0x6d, 0x5a, 0xc4, 0xcd, 0x9e, 0xf9, 0xbc, 0xcf, 0xe7, 0xbd, 0x37, 0x6f, 0xde, 0xcc, 0x2c, 0xb8, + 0xb4, 0xf3, 0x06, 0xb7, 0xa9, 0x5f, 0xd9, 0xe9, 0x6c, 0x11, 0xe6, 0x11, 0x41, 0x78, 0x25, 0xd8, + 0x69, 0x55, 0x70, 0x40, 0x79, 0x05, 0x77, 0x84, 0xcf, 0x1d, 0xdc, 0xa6, 0x5e, 0xab, 0xd2, 0x5d, + 0xa9, 0xb4, 0x88, 0x47, 0x18, 0x16, 0xa4, 0x69, 0x07, 0xcc, 0x17, 0x3e, 0x3c, 0x1f, 0x99, 0xda, + 0x03, 0x53, 0x3b, 0xd8, 0x69, 0xd9, 0xd2, 0xd4, 0x4e, 0x98, 0xda, 0xdd, 0x95, 0xa5, 0x57, 0x5a, + 0x54, 0x6c, 0x77, 0xb6, 0x6c, 0xc7, 0x77, 0x2b, 0x2d, 0xbf, 0xe5, 0x57, 0x14, 0xc3, 0x56, 0xe7, + 0xb6, 0xfa, 0xa7, 0xfe, 0xa8, 0x5f, 0x11, 0xf3, 0xd2, 0x9a, 0x76, 0x0a, 0x07, 0xd4, 0xc5, 0xce, + 0x36, 0xf5, 0x08, 0xdb, 0xed, 0xbb, 0x55, 0x61, 0x84, 0xfb, 0x1d, 0xe6, 0x90, 0x61, 0x7f, 0x26, + 0x5a, 0xf1, 0x8a, 0x4b, 0x04, 0x1e, 0x13, 0xc5, 0x52, 0x25, 0xcb, 0x8a, 0x75, 0x3c, 0x41, 0xdd, + 0x51, 0x99, 0x8b, 0x7b, 0x19, 0x70, 0x67, 0x9b, 0xb8, 0x78, 0xc4, 0xee, 0xb5, 0x2c, 0xbb, 0x8e, + 0xa0, 0xed, 0x0a, 0xf5, 0x04, 0x17, 0x6c, 0xc4, 0xe8, 0x42, 0xe6, 0xf2, 0x8c, 0x89, 0xc5, 0xfa, + 0xce, 0x00, 0x67, 0x6a, 0xcc, 0xe7, 0x7c, 0x93, 0x30, 0x4e, 0x7d, 0xef, 0xc6, 0xd6, 0x1d, 0xe2, + 0x08, 0x44, 0x6e, 0x13, 0x46, 0x3c, 0x87, 0xc0, 0x65, 0x50, 0xd8, 0xa1, 0x5e, 0xb3, 0x64, 0x2c, + 0x1b, 0xe7, 0x0e, 0x57, 0x17, 0xee, 0xf7, 0xcc, 0x99, 0xb0, 0x67, 0x16, 0xde, 0xa7, 0x5e, 0x13, + 0xa9, 0x19, 0x89, 0xf0, 0xb0, 0x4b, 0x4a, 0xb9, 0x34, 0xe2, 0x3a, 0x76, 0x09, 0x52, 0x33, 0x70, + 0x15, 0x00, 0x1c, 0x50, 0x2d, 0x50, 0xca, 0x2b, 0x1c, 0xd4, 0x38, 0xb0, 0xbe, 0x71, 0x55, 0xcf, + 0xa0, 0x04, 0xca, 0xfa, 0x35, 0x07, 0x4e, 0x5d, 0xf1, 0x19, 0xbd, 0xeb, 0x7b, 0x02, 0xb7, 0x37, + 0xfc, 0xe6, 0xba, 0x2e, 0x0f, 0xc2, 0xe0, 0xe7, 0x60, 0x5e, 0x2e, 0x4d, 0x13, 0x0b, 0xac, 0xfc, + 0x2a, 0xae, 0xbe, 0x6a, 0xeb, 0xc2, 0x4a, 0x66, 0x6a, 0x50, 0x5a, 0x12, 0x6d, 0x77, 0x57, 0xec, + 0x28, 0xb8, 0x3a, 0x11, 0x78, 0xa0, 0x3f, 0x18, 0x43, 0x31, 0x2b, 0xdc, 0x06, 0x05, 0x1e, 0x10, + 0x47, 0xc5, 0x54, 0x5c, 0xbd, 0x6c, 0xef, 0xbb, 0x6c, 0xed, 0x0c, 0x9f, 0x6f, 0x06, 0xc4, 0x19, + 0xe4, 0x46, 0xfe, 0x43, 0x4a, 0x01, 0x06, 0x60, 0x8e, 0x0b, 0x2c, 0x3a, 0x5c, 0xe5, 0xa5, 0xb8, + 0x7a, 0xe5, 0x00, 0xb4, 0x14, 0x5f, 0xf5, 0xa8, 0x56, 0x9b, 0x8b, 0xfe, 0x23, 0xad, 0x63, 0x7d, + 0x93, 0x07, 0xcb, 0x19, 0x96, 0x35, 0xdf, 0x6b, 0x52, 0x41, 0x7d, 0x0f, 0x5e, 0x01, 0x05, 0xb1, + 0x1b, 0x10, 0xbd, 0xec, 0x6b, 0x7d, 0xc7, 0x1b, 0xbb, 0x01, 0x79, 0xdc, 0x33, 0x5f, 0xdc, 0xcb, + 0x5e, 0xe2, 0x90, 0x62, 0x80, 0x9b, 0x71, 0x80, 0x51, 0x81, 0xbc, 0x9d, 0x76, 0xeb, 0x71, 0xcf, + 0x9c, 0x58, 0xb0, 0x76, 0xcc, 0x99, 0x0e, 0x03, 0x76, 0x01, 0x6c, 0x63, 0x2e, 0x1a, 0x0c, 0x7b, + 0x3c, 0xd2, 0xa4, 0x2e, 0xd1, 0x49, 0x7c, 0x79, 0x7f, 0xe5, 0x20, 0x2d, 0xaa, 0x4b, 0xda, 0x1f, + 0x78, 0x6d, 0x84, 0x0d, 0x8d, 0x51, 0x80, 0x2f, 0x81, 0x39, 0x46, 0x30, 0xf7, 0xbd, 0x52, 0x41, + 0xc5, 0x13, 0xa7, 0x19, 0xa9, 0x51, 0xa4, 0x67, 0xe1, 0x79, 0x70, 0xc8, 0x25, 0x9c, 0xe3, 0x16, + 0x29, 0xcd, 0x2a, 0xe0, 0xa2, 0x06, 0x1e, 0xaa, 0x47, 0xc3, 0xa8, 0x3f, 0x6f, 0xfd, 0x61, 0x80, + 0x33, 0x19, 0x19, 0xbd, 0x46, 0xb9, 0x80, 0x9f, 0x8e, 0xd4, 0xbb, 0xbd, 0xbf, 0x00, 0xa5, 0xb5, + 0xaa, 0xf6, 0x63, 0x5a, 0x7b, 0xbe, 0x3f, 0x92, 0xa8, 0xf5, 0x16, 0x98, 0xa5, 0x82, 0xb8, 0x72, + 0x7d, 0xf2, 0xe7, 0x8a, 0xab, 0xd5, 0xa7, 0x2f, 0xc0, 0xea, 0x11, 0x2d, 0x37, 0x7b, 0x55, 0x12, + 0xa3, 0x88, 0xdf, 0xfa, 0x3b, 0x97, 0x19, 0xa6, 0xdc, 0x10, 0xf0, 0x6b, 0x03, 0x1c, 0x55, 0x7f, + 0x1b, 0x98, 0xb5, 0x88, 0xec, 0x41, 0x3a, 0xda, 0x69, 0xf6, 0xdf, 0x84, 0x5e, 0x56, 0x3d, 0xa9, + 0xdd, 0x3a, 0x7a, 0x33, 0xa5, 0x82, 0x86, 0x54, 0xe1, 0x0a, 0x28, 0xba, 0xd4, 0x43, 0x24, 0x68, + 0x53, 0x07, 0x47, 0x75, 0x3b, 0x5b, 0x5d, 0x0c, 0x7b, 0x66, 0xb1, 0x3e, 0x18, 0x46, 0x49, 0x0c, + 0x7c, 0x1d, 0x14, 0x5d, 0xfc, 0x45, 0x6c, 0x92, 0x57, 0x26, 0xc7, 0xb5, 0x5e, 0xb1, 0x3e, 0x98, + 0x42, 0x49, 0x1c, 0xbc, 0x03, 0xca, 0x42, 0xc9, 0xd6, 0x36, 0x6e, 0xdd, 0x12, 0xb4, 0x4d, 0xef, + 0x62, 0x59, 0x68, 0x1b, 0x84, 0x39, 0xc4, 0x13, 0xb2, 0x76, 0x0a, 0x8a, 0xc9, 0x0a, 0x7b, 0x66, + 0xb9, 0x31, 0x11, 0x89, 0xf6, 0x60, 0xb2, 0xee, 0xe5, 0xc1, 0xd9, 0x89, 0x1d, 0x03, 0x5e, 0x06, + 0xd0, 0xdf, 0xe2, 0x84, 0x75, 0x49, 0xf3, 0xbd, 0xe8, 0x98, 0x90, 0xfd, 0x5a, 0xae, 0x41, 0xbe, + 0x7a, 0x52, 0x6e, 0x91, 0x1b, 0x23, 0xb3, 0x68, 0x8c, 0x05, 0x74, 0xc0, 0x11, 0xb9, 0x71, 0xa2, + 0x2c, 0x53, 0x7d, 0x34, 0x4c, 0xb7, 0x2b, 0xff, 0x17, 0xf6, 0xcc, 0x23, 0xd7, 0x92, 0x24, 0x28, + 0xcd, 0x09, 0xd7, 0xc1, 0xa2, 0xd3, 0x61, 0x8c, 0x78, 0x62, 0x28, 0xeb, 0xa7, 0x74, 0xd6, 0x17, + 0x6b, 0xe9, 0x69, 0x34, 0x8c, 0x97, 0x14, 0x4d, 0xc2, 0x29, 0x23, 0xcd, 0x98, 0xa2, 0x90, 0xa6, + 0x78, 0x37, 0x3d, 0x8d, 0x86, 0xf1, 0xd0, 0x05, 0xa6, 0x66, 0xcd, 0x5c, 0xc1, 0x59, 0x45, 0xf9, + 0x42, 0xd8, 0x33, 0xcd, 0xda, 0x64, 0x28, 0xda, 0x8b, 0xcb, 0xfa, 0x33, 0x07, 0x40, 0x9d, 0x08, + 0x46, 0x1d, 0xb5, 0x63, 0xd6, 0x52, 0x5d, 0x7a, 0x79, 0xa8, 0x4b, 0x1f, 0xd3, 0x48, 0x75, 0xf5, + 0x49, 0x74, 0x64, 0x0c, 0xe6, 0x7c, 0xb5, 0x33, 0xf4, 0xba, 0xbc, 0x35, 0xc5, 0xf6, 0x8a, 0x4f, + 0xcb, 0x98, 0xb8, 0x0a, 0x64, 0xf3, 0xd3, 0x5b, 0x4d, 0x13, 0xc3, 0x8f, 0x40, 0x21, 0xf0, 0x9b, + 0xfd, 0x33, 0xed, 0xcd, 0x29, 0x04, 0x36, 0xfc, 0x26, 0x4f, 0xd1, 0xcf, 0xcb, 0x88, 0xe4, 0x28, + 0x52, 0x94, 0x90, 0x82, 0xf9, 0xfe, 0x75, 0x4e, 0xad, 0x56, 0x71, 0xf5, 0x9d, 0x29, 0xe8, 0x91, + 0x36, 0x4d, 0x49, 0x2c, 0xc8, 0xce, 0xd8, 0x9f, 0x41, 0x31, 0xbd, 0xf5, 0x57, 0x0e, 0x2c, 0x68, + 0x60, 0xb4, 0x41, 0xfe, 0xe5, 0x7c, 0x47, 0xe7, 0xfa, 0x33, 0xcb, 0x77, 0x44, 0xff, 0x4c, 0xf3, + 0x1d, 0x49, 0x64, 0xe5, 0xfb, 0xfb, 0x1c, 0x80, 0xa3, 0x05, 0x06, 0x3d, 0x30, 0x17, 0xb5, 0xb6, + 0x03, 0x3e, 0x0e, 0xe2, 0x93, 0x5b, 0x77, 0x7e, 0xad, 0x22, 0xaf, 0xab, 0xae, 0xd2, 0xbf, 0x3e, + 0xb8, 0xd6, 0xc6, 0xd7, 0xc5, 0x7a, 0x3c, 0x83, 0x12, 0x28, 0x48, 0x40, 0x31, 0xb2, 0xde, 0xc4, + 0xed, 0x4e, 0xff, 0x1a, 0x32, 0xf1, 0x94, 0xb6, 0xfb, 0x61, 0xdb, 0x1f, 0x74, 0xb0, 0x27, 0xa8, + 0xd8, 0x1d, 0x9c, 0x17, 0x8d, 0x01, 0x15, 0x4a, 0xf2, 0x5a, 0x3f, 0x0e, 0x67, 0x28, 0xaa, 0xcb, + 0xff, 0x42, 0x86, 0xb6, 0xc1, 0x82, 0xee, 0x6e, 0x4f, 0x93, 0xa2, 0x13, 0x5a, 0x65, 0xa1, 0x96, + 0xe0, 0x42, 0x29, 0x66, 0xeb, 0x67, 0x03, 0x1c, 0x1b, 0x6e, 0x23, 0x43, 0x2e, 0x1b, 0xfb, 0x72, + 0xf9, 0x2e, 0x80, 0x51, 0xc0, 0xeb, 0x5d, 0xc2, 0x70, 0x8b, 0x44, 0x8e, 0xe7, 0x9e, 0xc8, 0xf1, + 0xf8, 0x9a, 0xd9, 0x18, 0x61, 0x44, 0x63, 0x54, 0xac, 0x5f, 0xd2, 0x41, 0x44, 0xeb, 0xfc, 0x24, + 0x41, 0x7c, 0x09, 0x8e, 0xeb, 0xec, 0x1c, 0x40, 0x14, 0x67, 0xb4, 0xd8, 0xf1, 0xda, 0x28, 0x25, + 0x1a, 0xa7, 0x63, 0xfd, 0x94, 0x03, 0x27, 0xc6, 0x35, 0x5d, 0x58, 0xd7, 0xcf, 0xc6, 0x28, 0x8a, + 0x4b, 0xc9, 0x67, 0xe3, 0xe3, 0x9e, 0x79, 0x7e, 0xe2, 0x9b, 0xa0, 0x4f, 0x98, 0x78, 0x63, 0x7e, + 0x08, 0x4a, 0xa9, 0x2c, 0x26, 0xce, 0x4f, 0x7d, 0x81, 0xfb, 0x7f, 0xd8, 0x33, 0x4b, 0x8d, 0x0c, + 0x0c, 0xca, 0xb4, 0x96, 0x0f, 0x8d, 0x31, 0x55, 0xf0, 0x64, 0xe5, 0x7b, 0x72, 0x8a, 0x0a, 0xb8, + 0x37, 0x9a, 0xb9, 0xa8, 0x0a, 0x0e, 0x38, 0x73, 0x9f, 0x80, 0xd3, 0xe9, 0x85, 0x1b, 0x4d, 0xdd, + 0xd9, 0xb0, 0x67, 0x9e, 0xae, 0x65, 0x81, 0x50, 0xb6, 0x7d, 0x56, 0xf5, 0xe5, 0x9f, 0x53, 0xf5, + 0xfd, 0x90, 0x03, 0xb3, 0xea, 0xca, 0xf8, 0x1c, 0xbe, 0x19, 0x6c, 0xa6, 0xbe, 0x19, 0xac, 0x4d, + 0xd1, 0x82, 0x95, 0x87, 0x99, 0x5f, 0x08, 0x3e, 0x1b, 0xfa, 0x42, 0x70, 0x71, 0x6a, 0xe6, 0xc9, + 0xdf, 0x03, 0x2e, 0x81, 0xc3, 0xb1, 0x03, 0xf0, 0x82, 0x3c, 0xed, 0xf5, 0x5d, 0xd8, 0x50, 0x6b, + 0x1f, 0x3f, 0x1d, 0xe3, 0x4b, 0x70, 0x8c, 0xb0, 0x28, 0x28, 0x26, 0x14, 0xa6, 0x33, 0x96, 0x68, + 0x4e, 0xda, 0xc4, 0x11, 0x3e, 0xd3, 0x47, 0x48, 0x8c, 0xbe, 0xa9, 0xc7, 0x51, 0x8c, 0xa8, 0x9e, + 0xbb, 0xff, 0xa8, 0x3c, 0xf3, 0xe0, 0x51, 0x79, 0xe6, 0xe1, 0xa3, 0xf2, 0xcc, 0x57, 0x61, 0xd9, + 0xb8, 0x1f, 0x96, 0x8d, 0x07, 0x61, 0xd9, 0x78, 0x18, 0x96, 0x8d, 0xdf, 0xc2, 0xb2, 0xf1, 0xed, + 0xef, 0xe5, 0x99, 0x8f, 0x73, 0xdd, 0x95, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x20, 0x64, + 0x54, 0x9f, 0x14, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.proto new file mode 100644 index 000000000..c2cc6c2ed --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/generated.proto @@ -0,0 +1,321 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.autoscaling.v1; + +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +message CrossVersionObjectReference { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + optional string kind = 1; + + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + optional string name = 2; + + // API version of the referent + // +optional + optional string apiVersion = 3; +} + +// configuration of a horizontal pod autoscaler. +message HorizontalPodAutoscaler { + // Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional HorizontalPodAutoscalerSpec spec = 2; + + // current information about the autoscaler. + // +optional + optional HorizontalPodAutoscalerStatus status = 3; +} + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +message HorizontalPodAutoscalerCondition { + // type describes the current condition + optional string type = 1; + + // status is the status of the condition (True, False, Unknown) + optional string status = 2; + + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // reason is the reason for the condition's last transition. + // +optional + optional string reason = 4; + + // message is a human-readable explanation containing details about + // the transition + // +optional + optional string message = 5; +} + +// list of horizontal pod autoscaler objects. +message HorizontalPodAutoscalerList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // list of horizontal pod autoscaler objects. + repeated HorizontalPodAutoscaler items = 2; +} + +// specification of a horizontal pod autoscaler. +message HorizontalPodAutoscalerSpec { + // reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption + // and will set the desired number of pods by using its Scale subresource. + optional CrossVersionObjectReference scaleTargetRef = 1; + + // lower limit for the number of pods that can be set by the autoscaler, default 1. + // +optional + optional int32 minReplicas = 2; + + // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. + optional int32 maxReplicas = 3; + + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified the default autoscaling policy will be used. + // +optional + optional int32 targetCPUUtilizationPercentage = 4; +} + +// current status of a horizontal pod autoscaler +message HorizontalPodAutoscalerStatus { + // most recent generation observed by this autoscaler. + // +optional + optional int64 observedGeneration = 1; + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2; + + // current number of replicas of pods managed by this autoscaler. + optional int32 currentReplicas = 3; + + // desired number of replicas of pods managed by this autoscaler. + optional int32 desiredReplicas = 4; + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + // +optional + optional int32 currentCPUUtilizationPercentage = 5; +} + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +message MetricSpec { + // type is the type of metric source. It should match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricSource object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricSource pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricSource resource = 4; +} + +// MetricStatus describes the last-read state of a single metric. +message MetricStatus { + // type is the type of metric source. It will match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricStatus object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricStatus pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricStatus resource = 4; +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricSource { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // targetValue is the target value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3; +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricStatus { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // currentValue is the current value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3; +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +message PodsMetricSource { + // metricName is the name of the metric in question + optional string metricName = 1; + + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2; +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +message PodsMetricStatus { + // metricName is the name of the metric in question + optional string metricName = 1; + + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2; +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +message ResourceMetricSource { + // name is the name of the resource in question. + optional string name = 1; + + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + optional int32 targetAverageUtilization = 2; + + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3; +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +message ResourceMetricStatus { + // name is the name of the resource in question. + optional string name = 1; + + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + optional int32 currentAverageUtilization = 2; + + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3; +} + +// Scale represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// ScaleSpec describes the attributes of a scale subresource. +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + optional int32 replicas = 1; +} + +// ScaleStatus represents the current status of a scale subresource. +message ScaleStatus { + // actual number of observed instances of the scaled object. + optional int32 replicas = 1; + + // label query over pods that should match the replicas count. This is same + // as the label selector but in the string format to avoid introspection + // by clients. The string will be in the same format as the query-param syntax. + // More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + optional string selector = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/register.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/register.go new file mode 100644 index 000000000..20c9db5f7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/register.go @@ -0,0 +1,60 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + &Scale{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.generated.go new file mode 100644 index 000000000..fc01e4d95 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.generated.go @@ -0,0 +1,5633 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg3_resource "k8s.io/apimachinery/pkg/api/resource" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + pkg4_v1 "k8s.io/client-go/pkg/api/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg3_resource.Quantity + var v1 pkg1_v1.Time + var v2 pkg2_types.UID + var v3 pkg4_v1.ResourceName + var v4 time.Time + _, _, _, _, _ = v0, v1, v2, v3, v4 + } +} + +func (x *CrossVersionObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.APIVersion != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CrossVersionObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv6 := &x.Name + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv8 := &x.APIVersion + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv11 := &x.Kind + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv13 := &x.Name + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.MinReplicas != nil + yyq2[3] = x.TargetCPUUtilizationPercentage != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.ScaleTargetRef + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleTargetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.ScaleTargetRef + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy9 := *x.MinReplicas + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy11 := *x.MinReplicas + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeInt(int64(yy11)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.TargetCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy17 := *x.TargetCPUUtilizationPercentage + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeInt(int64(yy17)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy19 := *x.TargetCPUUtilizationPercentage + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(yy19)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "scaleTargetRef": + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv4 := &x.ScaleTargetRef + yyv4.CodecDecodeSelf(d) + } + case "minReplicas": + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + case "maxReplicas": + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + yyv7 := &x.MaxReplicas + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + case "targetCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.TargetCPUUtilizationPercentage != nil { + x.TargetCPUUtilizationPercentage = nil + } + } else { + if x.TargetCPUUtilizationPercentage == nil { + x.TargetCPUUtilizationPercentage = new(int32) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*int32)(x.TargetCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv12 := &x.ScaleTargetRef + yyv12.CodecDecodeSelf(d) + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + yyv15 := &x.MaxReplicas + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(yyv15)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetCPUUtilizationPercentage != nil { + x.TargetCPUUtilizationPercentage = nil + } + } else { + if x.TargetCPUUtilizationPercentage == nil { + x.TargetCPUUtilizationPercentage = new(int32) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(x.TargetCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ObservedGeneration != nil + yyq2[1] = x.LastScaleTime != nil + yyq2[4] = x.CurrentCPUUtilizationPercentage != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy4 := *x.ObservedGeneration + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy6 := *x.ObservedGeneration + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym9 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym9 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScaleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym10 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy18 := *x.CurrentCPUUtilizationPercentage + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(yy18)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy20 := *x.CurrentCPUUtilizationPercentage + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeInt(int64(yy20)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "lastScaleTime": + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_v1.Time) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym7 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + case "currentReplicas": + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + yyv8 := &x.CurrentReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "desiredReplicas": + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + yyv10 := &x.DesiredReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "currentCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_v1.Time) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym18 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + yyv19 := &x.CurrentReplicas + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int32)(yyv19)) = int32(r.DecodeInt(32)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + yyv21 := &x.DesiredReplicas + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscaler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscaler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv7 := &x.Replicas + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Selector != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Selector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Selector)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = "" + } else { + yyv6 := &x.Selector + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv9 := &x.Replicas + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*int32)(yyv9)) = int32(r.DecodeInt(32)) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = "" + } else { + yyv11 := &x.Selector + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x MetricSourceType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *MetricSourceType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *MetricSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Object != nil + yyq2[2] = x.Pods != nil + yyq2[3] = x.Resource != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("object")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *MetricSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *MetricSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "object": + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricSource) + } + x.Object.CodecDecodeSelf(d) + } + case "pods": + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricSource) + } + x.Pods.CodecDecodeSelf(d) + } + case "resource": + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricSource) + } + x.Resource.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *MetricSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv9 := &x.Type + yyv9.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricSource) + } + x.Object.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricSource) + } + x.Pods.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricSource) + } + x.Resource.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectMetricSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.Target + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.Target + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.TargetValue + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.TargetValue + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(yy14) { + } else if !yym15 && z.IsJSONHandle() { + z.EncJSONMarshal(yy14) + } else { + z.EncFallback(yy14) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMetricSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMetricSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "target": + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv4 := &x.Target + yyv4.CodecDecodeSelf(d) + } + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv5 := &x.MetricName + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + case "targetValue": + if r.TryDecodeAsNil() { + x.TargetValue = pkg3_resource.Quantity{} + } else { + yyv7 := &x.TargetValue + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMetricSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv10 := &x.Target + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv11 := &x.MetricName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetValue = pkg3_resource.Quantity{} + } else { + yyv13 := &x.TargetValue + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodsMetricSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.TargetAverageValue + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.TargetAverageValue + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodsMetricSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodsMetricSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv4 := &x.MetricName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "targetAverageValue": + if r.TryDecodeAsNil() { + x.TargetAverageValue = pkg3_resource.Quantity{} + } else { + yyv6 := &x.TargetAverageValue + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodsMetricSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv9 := &x.MetricName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetAverageValue = pkg3_resource.Quantity{} + } else { + yyv11 := &x.TargetAverageValue + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceMetricSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.TargetAverageUtilization != nil + yyq2[2] = x.TargetAverageValue != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf4 := &x.Name + yysf4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf5 := &x.Name + yysf5.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.TargetAverageUtilization == nil { + r.EncodeNil() + } else { + yy7 := *x.TargetAverageUtilization + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetAverageUtilization")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetAverageUtilization == nil { + r.EncodeNil() + } else { + yy9 := *x.TargetAverageUtilization + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.TargetAverageValue == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.EncExt(x.TargetAverageValue) { + } else if !yym12 && z.IsJSONHandle() { + z.EncJSONMarshal(x.TargetAverageValue) + } else { + z.EncFallback(x.TargetAverageValue) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetAverageValue == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(x.TargetAverageValue) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(x.TargetAverageValue) + } else { + z.EncFallback(x.TargetAverageValue) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceMetricSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceMetricSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yyv4.CodecDecodeSelf(d) + } + case "targetAverageUtilization": + if r.TryDecodeAsNil() { + if x.TargetAverageUtilization != nil { + x.TargetAverageUtilization = nil + } + } else { + if x.TargetAverageUtilization == nil { + x.TargetAverageUtilization = new(int32) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int32)(x.TargetAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + case "targetAverageValue": + if r.TryDecodeAsNil() { + if x.TargetAverageValue != nil { + x.TargetAverageValue = nil + } + } else { + if x.TargetAverageValue == nil { + x.TargetAverageValue = new(pkg3_resource.Quantity) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(x.TargetAverageValue) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.TargetAverageValue) + } else { + z.DecFallback(x.TargetAverageValue, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceMetricSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetAverageUtilization != nil { + x.TargetAverageUtilization = nil + } + } else { + if x.TargetAverageUtilization == nil { + x.TargetAverageUtilization = new(int32) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(x.TargetAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetAverageValue != nil { + x.TargetAverageValue = nil + } + } else { + if x.TargetAverageValue == nil { + x.TargetAverageValue = new(pkg3_resource.Quantity) + } + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(x.TargetAverageValue) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.TargetAverageValue) + } else { + z.DecFallback(x.TargetAverageValue, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *MetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Object != nil + yyq2[2] = x.Pods != nil + yyq2[3] = x.Resource != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("object")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *MetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *MetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "object": + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricStatus) + } + x.Object.CodecDecodeSelf(d) + } + case "pods": + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricStatus) + } + x.Pods.CodecDecodeSelf(d) + } + case "resource": + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricStatus) + } + x.Resource.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *MetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv9 := &x.Type + yyv9.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricStatus) + } + x.Object.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricStatus) + } + x.Pods.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricStatus) + } + x.Resource.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x HorizontalPodAutoscalerConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *HorizontalPodAutoscalerConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HorizontalPodAutoscalerCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = x.Reason != "" + yyq2[4] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf7 := &x.Status + yysf7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf8 := &x.Status + yysf8.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastTransitionTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastTransitionTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv6 := &x.LastTransitionTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv8 := &x.Reason + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv10 := &x.Message + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv13 := &x.Type + yyv13.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv14 := &x.Status + yyv14.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv15 := &x.LastTransitionTime + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(yyv15) { + } else if yym16 { + z.DecBinaryUnmarshal(yyv15) + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv15) + } else { + z.DecFallback(yyv15, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv17 := &x.Reason + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv19 := &x.Message + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectMetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.Target + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.Target + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.CurrentValue + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.CurrentValue + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(yy14) { + } else if !yym15 && z.IsJSONHandle() { + z.EncJSONMarshal(yy14) + } else { + z.EncFallback(yy14) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "target": + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv4 := &x.Target + yyv4.CodecDecodeSelf(d) + } + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv5 := &x.MetricName + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + case "currentValue": + if r.TryDecodeAsNil() { + x.CurrentValue = pkg3_resource.Quantity{} + } else { + yyv7 := &x.CurrentValue + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv10 := &x.Target + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv11 := &x.MetricName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentValue = pkg3_resource.Quantity{} + } else { + yyv13 := &x.CurrentValue + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodsMetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.CurrentAverageValue + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.CurrentAverageValue + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodsMetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodsMetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv4 := &x.MetricName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "currentAverageValue": + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg3_resource.Quantity{} + } else { + yyv6 := &x.CurrentAverageValue + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodsMetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv9 := &x.MetricName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg3_resource.Quantity{} + } else { + yyv11 := &x.CurrentAverageValue + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceMetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.CurrentAverageUtilization != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf4 := &x.Name + yysf4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf5 := &x.Name + yysf5.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.CurrentAverageUtilization == nil { + r.EncodeNil() + } else { + yy7 := *x.CurrentAverageUtilization + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentAverageUtilization")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentAverageUtilization == nil { + r.EncodeNil() + } else { + yy9 := *x.CurrentAverageUtilization + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.CurrentAverageValue + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.CurrentAverageValue + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(yy14) { + } else if !yym15 && z.IsJSONHandle() { + z.EncJSONMarshal(yy14) + } else { + z.EncFallback(yy14) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceMetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceMetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yyv4.CodecDecodeSelf(d) + } + case "currentAverageUtilization": + if r.TryDecodeAsNil() { + if x.CurrentAverageUtilization != nil { + x.CurrentAverageUtilization = nil + } + } else { + if x.CurrentAverageUtilization == nil { + x.CurrentAverageUtilization = new(int32) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int32)(x.CurrentAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + case "currentAverageValue": + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg3_resource.Quantity{} + } else { + yyv7 := &x.CurrentAverageValue + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceMetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CurrentAverageUtilization != nil { + x.CurrentAverageUtilization = nil + } + } else { + if x.CurrentAverageUtilization == nil { + x.CurrentAverageUtilization = new(int32) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(x.CurrentAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg3_resource.Quantity{} + } else { + yyv13 := &x.CurrentAverageValue + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceHorizontalPodAutoscaler(v []HorizontalPodAutoscaler, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHorizontalPodAutoscaler(v *[]HorizontalPodAutoscaler, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HorizontalPodAutoscaler{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 368) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HorizontalPodAutoscaler, yyrl1) + } + } else { + yyv1 = make([]HorizontalPodAutoscaler, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscaler{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HorizontalPodAutoscaler{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscaler{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HorizontalPodAutoscaler{}) // var yyz1 HorizontalPodAutoscaler + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscaler{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HorizontalPodAutoscaler{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.go new file mode 100644 index 000000000..4132f5291 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types.go @@ -0,0 +1,332 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api/v1" +) + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"` +} + +// specification of a horizontal pod autoscaler. +type HorizontalPodAutoscalerSpec struct { + // reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption + // and will set the desired number of pods by using its Scale subresource. + ScaleTargetRef CrossVersionObjectReference `json:"scaleTargetRef" protobuf:"bytes,1,opt,name=scaleTargetRef"` + // lower limit for the number of pods that can be set by the autoscaler, default 1. + // +optional + MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"` + // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. + MaxReplicas int32 `json:"maxReplicas" protobuf:"varint,3,opt,name=maxReplicas"` + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified the default autoscaling policy will be used. + // +optional + TargetCPUUtilizationPercentage *int32 `json:"targetCPUUtilizationPercentage,omitempty" protobuf:"varint,4,opt,name=targetCPUUtilizationPercentage"` +} + +// current status of a horizontal pod autoscaler +type HorizontalPodAutoscalerStatus struct { + // most recent generation observed by this autoscaler. + // +optional + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + // +optional + LastScaleTime *metav1.Time `json:"lastScaleTime,omitempty" protobuf:"bytes,2,opt,name=lastScaleTime"` + + // current number of replicas of pods managed by this autoscaler. + CurrentReplicas int32 `json:"currentReplicas" protobuf:"varint,3,opt,name=currentReplicas"` + + // desired number of replicas of pods managed by this autoscaler. + DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"` + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + // +optional + CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty" protobuf:"varint,5,opt,name=currentCPUUtilizationPercentage"` +} + +// +genclient=true + +// configuration of a horizontal pod autoscaler. +type HorizontalPodAutoscaler struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current information about the autoscaler. + // +optional + Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Scale represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ScaleSpec describes the attributes of a scale subresource. +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` +} + +// ScaleStatus represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // label query over pods that should match the replicas count. This is same + // as the label selector but in the string format to avoid introspection + // by clients. The string will be in the same format as the query-param syntax. + // More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + Selector string `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` +} + +// the types below are used in the alpha metrics annotation + +// MetricSourceType indicates the type of metric. +type MetricSourceType string + +var ( + // ObjectMetricSourceType is a metric describing a kubernetes object + // (for example, hits-per-second on an Ingress object). + ObjectMetricSourceType MetricSourceType = "Object" + // PodsMetricSourceType is a metric describing each pod in the current scale + // target (for example, transactions-processed-per-second). The values + // will be averaged together before being compared to the target value. + PodsMetricSourceType MetricSourceType = "Pods" + // ResourceMetricSourceType is a resource metric known to Kubernetes, as + // specified in requests and limits, describing each pod in the current + // scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics (the "pods" source). + ResourceMetricSourceType MetricSourceType = "Resource" +) + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +type MetricSpec struct { + // type is the type of metric source. It should match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricSource `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricSource `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricSource `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricSource struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // targetValue is the target value of the metric (as a quantity). + TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"` +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +type PodsMetricSource struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"` +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +type ResourceMetricSource struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + TargetAverageUtilization *int32 `json:"targetAverageUtilization,omitempty" protobuf:"varint,2,opt,name=targetAverageUtilization"` + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + TargetAverageValue *resource.Quantity `json:"targetAverageValue,omitempty" protobuf:"bytes,3,opt,name=targetAverageValue"` +} + +// MetricStatus describes the last-read state of a single metric. +type MetricStatus struct { + // type is the type of metric source. It will match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricStatus `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricStatus `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricStatus `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// HorizontalPodAutoscalerConditionType are the valid conditions of +// a HorizontalPodAutoscaler. +type HorizontalPodAutoscalerConditionType string + +var ( + // ScalingActive indicates that the HPA controller is able to scale if necessary: + // it's correctly configured, can fetch the desired metrics, and isn't disabled. + ScalingActive HorizontalPodAutoscalerConditionType = "ScalingActive" + // AbleToScale indicates a lack of transient issues which prevent scaling from occuring, + // such as being in a backoff window, or being unable to access/update the target scale. + AbleToScale HorizontalPodAutoscalerConditionType = "AbleToScale" + // ScalingLimited indicates that the calculated scale based on metrics would be above or + // below the range for the HPA, and has thus been capped. + ScalingLimited HorizontalPodAutoscalerConditionType = "ScalingLimited" +) + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +type HorizontalPodAutoscalerCondition struct { + // type describes the current condition + Type HorizontalPodAutoscalerConditionType `json:"type" protobuf:"bytes,1,name=type"` + // status is the status of the condition (True, False, Unknown) + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,name=status"` + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // reason is the reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // message is a human-readable explanation containing details about + // the transition + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricStatus struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // currentValue is the current value of the metric (as a quantity). + CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"` +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +type PodsMetricStatus struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"` +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +type ResourceMetricStatus struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + CurrentAverageUtilization *int32 `json:"currentAverageUtilization,omitempty" protobuf:"bytes,2,opt,name=currentAverageUtilization"` + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,3,name=currentAverageValue"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..7f84c2d93 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go @@ -0,0 +1,218 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_CrossVersionObjectReference = map[string]string{ + "": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", + "kind": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\"", + "name": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "apiVersion": "API version of the referent", +} + +func (CrossVersionObjectReference) SwaggerDoc() map[string]string { + return map_CrossVersionObjectReference +} + +var map_HorizontalPodAutoscaler = map[string]string{ + "": "configuration of a horizontal pod autoscaler.", + "metadata": "Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current information about the autoscaler.", +} + +func (HorizontalPodAutoscaler) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscaler +} + +var map_HorizontalPodAutoscalerCondition = map[string]string{ + "": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", + "type": "type describes the current condition", + "status": "status is the status of the condition (True, False, Unknown)", + "lastTransitionTime": "lastTransitionTime is the last time the condition transitioned from one status to another", + "reason": "reason is the reason for the condition's last transition.", + "message": "message is a human-readable explanation containing details about the transition", +} + +func (HorizontalPodAutoscalerCondition) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerCondition +} + +var map_HorizontalPodAutoscalerList = map[string]string{ + "": "list of horizontal pod autoscaler objects.", + "metadata": "Standard list metadata.", + "items": "list of horizontal pod autoscaler objects.", +} + +func (HorizontalPodAutoscalerList) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerList +} + +var map_HorizontalPodAutoscalerSpec = map[string]string{ + "": "specification of a horizontal pod autoscaler.", + "scaleTargetRef": "reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource.", + "minReplicas": "lower limit for the number of pods that can be set by the autoscaler, default 1.", + "maxReplicas": "upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.", + "targetCPUUtilizationPercentage": "target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.", +} + +func (HorizontalPodAutoscalerSpec) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerSpec +} + +var map_HorizontalPodAutoscalerStatus = map[string]string{ + "": "current status of a horizontal pod autoscaler", + "observedGeneration": "most recent generation observed by this autoscaler.", + "lastScaleTime": "last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.", + "currentReplicas": "current number of replicas of pods managed by this autoscaler.", + "desiredReplicas": "desired number of replicas of pods managed by this autoscaler.", + "currentCPUUtilizationPercentage": "current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.", +} + +func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerStatus +} + +var map_MetricSpec = map[string]string{ + "": "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).", + "type": "type is the type of metric source. It should match one of the fields below.", + "object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", + "pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", +} + +func (MetricSpec) SwaggerDoc() map[string]string { + return map_MetricSpec +} + +var map_MetricStatus = map[string]string{ + "": "MetricStatus describes the last-read state of a single metric.", + "type": "type is the type of metric source. It will match one of the fields below.", + "object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", + "pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", +} + +func (MetricStatus) SwaggerDoc() map[string]string { + return map_MetricStatus +} + +var map_ObjectMetricSource = map[string]string{ + "": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", + "target": "target is the described Kubernetes object.", + "metricName": "metricName is the name of the metric in question.", + "targetValue": "targetValue is the target value of the metric (as a quantity).", +} + +func (ObjectMetricSource) SwaggerDoc() map[string]string { + return map_ObjectMetricSource +} + +var map_ObjectMetricStatus = map[string]string{ + "": "ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", + "target": "target is the described Kubernetes object.", + "metricName": "metricName is the name of the metric in question.", + "currentValue": "currentValue is the current value of the metric (as a quantity).", +} + +func (ObjectMetricStatus) SwaggerDoc() map[string]string { + return map_ObjectMetricStatus +} + +var map_PodsMetricSource = map[string]string{ + "": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "metricName": "metricName is the name of the metric in question", + "targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)", +} + +func (PodsMetricSource) SwaggerDoc() map[string]string { + return map_PodsMetricSource +} + +var map_PodsMetricStatus = map[string]string{ + "": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).", + "metricName": "metricName is the name of the metric in question", + "currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)", +} + +func (PodsMetricStatus) SwaggerDoc() map[string]string { + return map_PodsMetricStatus +} + +var map_ResourceMetricSource = map[string]string{ + "": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.", + "name": "name is the name of the resource in question.", + "targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.", + "targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.", +} + +func (ResourceMetricSource) SwaggerDoc() map[string]string { + return map_ResourceMetricSource +} + +var map_ResourceMetricStatus = map[string]string{ + "": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", + "name": "name is the name of the resource in question.", + "currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.", + "currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.", +} + +func (ResourceMetricStatus) SwaggerDoc() map[string]string { + return map_ResourceMetricStatus +} + +var map_Scale = map[string]string{ + "": "Scale represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.", +} + +func (Scale) SwaggerDoc() map[string]string { + return map_Scale +} + +var map_ScaleSpec = map[string]string{ + "": "ScaleSpec describes the attributes of a scale subresource.", + "replicas": "desired number of instances for the scaled object.", +} + +func (ScaleSpec) SwaggerDoc() map[string]string { + return map_ScaleSpec +} + +var map_ScaleStatus = map[string]string{ + "": "ScaleStatus represents the current status of a scale subresource.", + "replicas": "actual number of observed instances of the scaled object.", + "selector": "label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.conversion.go new file mode 100644 index 000000000..12c064849 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.conversion.go @@ -0,0 +1,506 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + resource "k8s.io/apimachinery/pkg/api/resource" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + api_v1 "k8s.io/client-go/pkg/api/v1" + autoscaling "k8s.io/client-go/pkg/apis/autoscaling" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference, + Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference, + Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler, + Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler, + Convert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition, + Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition, + Convert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList, + Convert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList, + Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec, + Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec, + Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus, + Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus, + Convert_v1_MetricSpec_To_autoscaling_MetricSpec, + Convert_autoscaling_MetricSpec_To_v1_MetricSpec, + Convert_v1_MetricStatus_To_autoscaling_MetricStatus, + Convert_autoscaling_MetricStatus_To_v1_MetricStatus, + Convert_v1_ObjectMetricSource_To_autoscaling_ObjectMetricSource, + Convert_autoscaling_ObjectMetricSource_To_v1_ObjectMetricSource, + Convert_v1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus, + Convert_autoscaling_ObjectMetricStatus_To_v1_ObjectMetricStatus, + Convert_v1_PodsMetricSource_To_autoscaling_PodsMetricSource, + Convert_autoscaling_PodsMetricSource_To_v1_PodsMetricSource, + Convert_v1_PodsMetricStatus_To_autoscaling_PodsMetricStatus, + Convert_autoscaling_PodsMetricStatus_To_v1_PodsMetricStatus, + Convert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource, + Convert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource, + Convert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus, + Convert_autoscaling_ResourceMetricStatus_To_v1_ResourceMetricStatus, + Convert_v1_Scale_To_autoscaling_Scale, + Convert_autoscaling_Scale_To_v1_Scale, + Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec, + Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec, + Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus, + Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus, + ) +} + +func autoConvert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in *CrossVersionObjectReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +// Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference is an autogenerated conversion function. +func Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in *CrossVersionObjectReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + return autoConvert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in, out, s) +} + +func autoConvert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(in *autoscaling.CrossVersionObjectReference, out *CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +// Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference is an autogenerated conversion function. +func Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(in *autoscaling.CrossVersionObjectReference, out *CrossVersionObjectReference, s conversion.Scope) error { + return autoConvert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(in *HorizontalPodAutoscalerCondition, out *autoscaling.HorizontalPodAutoscalerCondition, s conversion.Scope) error { + out.Type = autoscaling.HorizontalPodAutoscalerConditionType(in.Type) + out.Status = autoscaling.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition is an autogenerated conversion function. +func Convert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(in *HorizontalPodAutoscalerCondition, out *autoscaling.HorizontalPodAutoscalerCondition, s conversion.Scope) error { + return autoConvert_v1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition(in *autoscaling.HorizontalPodAutoscalerCondition, out *HorizontalPodAutoscalerCondition, s conversion.Scope) error { + out.Type = HorizontalPodAutoscalerConditionType(in.Type) + out.Status = api_v1.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition(in *autoscaling.HorizontalPodAutoscalerCondition, out *HorizontalPodAutoscalerCondition, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerCondition_To_v1_HorizontalPodAutoscalerCondition(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]autoscaling.HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList is an autogenerated conversion function. +func Convert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]HorizontalPodAutoscaler, 0) + } + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + out.MinReplicas = (*int32)(unsafe.Pointer(in.MinReplicas)) + out.MaxReplicas = in.MaxReplicas + // WARNING: in.TargetCPUUtilizationPercentage requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + out.MinReplicas = (*int32)(unsafe.Pointer(in.MinReplicas)) + out.MaxReplicas = in.MaxReplicas + // WARNING: in.Metrics requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) + out.LastScaleTime = (*meta_v1.Time)(unsafe.Pointer(in.LastScaleTime)) + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + // WARNING: in.CurrentCPUUtilizationPercentage requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) + out.LastScaleTime = (*meta_v1.Time)(unsafe.Pointer(in.LastScaleTime)) + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + // WARNING: in.CurrentMetrics requires manual conversion: does not exist in peer-type + // WARNING: in.Conditions requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_v1_MetricSpec_To_autoscaling_MetricSpec(in *MetricSpec, out *autoscaling.MetricSpec, s conversion.Scope) error { + out.Type = autoscaling.MetricSourceType(in.Type) + out.Object = (*autoscaling.ObjectMetricSource)(unsafe.Pointer(in.Object)) + out.Pods = (*autoscaling.PodsMetricSource)(unsafe.Pointer(in.Pods)) + out.Resource = (*autoscaling.ResourceMetricSource)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_v1_MetricSpec_To_autoscaling_MetricSpec is an autogenerated conversion function. +func Convert_v1_MetricSpec_To_autoscaling_MetricSpec(in *MetricSpec, out *autoscaling.MetricSpec, s conversion.Scope) error { + return autoConvert_v1_MetricSpec_To_autoscaling_MetricSpec(in, out, s) +} + +func autoConvert_autoscaling_MetricSpec_To_v1_MetricSpec(in *autoscaling.MetricSpec, out *MetricSpec, s conversion.Scope) error { + out.Type = MetricSourceType(in.Type) + out.Object = (*ObjectMetricSource)(unsafe.Pointer(in.Object)) + out.Pods = (*PodsMetricSource)(unsafe.Pointer(in.Pods)) + out.Resource = (*ResourceMetricSource)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_autoscaling_MetricSpec_To_v1_MetricSpec is an autogenerated conversion function. +func Convert_autoscaling_MetricSpec_To_v1_MetricSpec(in *autoscaling.MetricSpec, out *MetricSpec, s conversion.Scope) error { + return autoConvert_autoscaling_MetricSpec_To_v1_MetricSpec(in, out, s) +} + +func autoConvert_v1_MetricStatus_To_autoscaling_MetricStatus(in *MetricStatus, out *autoscaling.MetricStatus, s conversion.Scope) error { + out.Type = autoscaling.MetricSourceType(in.Type) + out.Object = (*autoscaling.ObjectMetricStatus)(unsafe.Pointer(in.Object)) + out.Pods = (*autoscaling.PodsMetricStatus)(unsafe.Pointer(in.Pods)) + out.Resource = (*autoscaling.ResourceMetricStatus)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_v1_MetricStatus_To_autoscaling_MetricStatus is an autogenerated conversion function. +func Convert_v1_MetricStatus_To_autoscaling_MetricStatus(in *MetricStatus, out *autoscaling.MetricStatus, s conversion.Scope) error { + return autoConvert_v1_MetricStatus_To_autoscaling_MetricStatus(in, out, s) +} + +func autoConvert_autoscaling_MetricStatus_To_v1_MetricStatus(in *autoscaling.MetricStatus, out *MetricStatus, s conversion.Scope) error { + out.Type = MetricSourceType(in.Type) + out.Object = (*ObjectMetricStatus)(unsafe.Pointer(in.Object)) + out.Pods = (*PodsMetricStatus)(unsafe.Pointer(in.Pods)) + out.Resource = (*ResourceMetricStatus)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_autoscaling_MetricStatus_To_v1_MetricStatus is an autogenerated conversion function. +func Convert_autoscaling_MetricStatus_To_v1_MetricStatus(in *autoscaling.MetricStatus, out *MetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_MetricStatus_To_v1_MetricStatus(in, out, s) +} + +func autoConvert_v1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in *ObjectMetricSource, out *autoscaling.ObjectMetricSource, s conversion.Scope) error { + if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.TargetValue = in.TargetValue + return nil +} + +// Convert_v1_ObjectMetricSource_To_autoscaling_ObjectMetricSource is an autogenerated conversion function. +func Convert_v1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in *ObjectMetricSource, out *autoscaling.ObjectMetricSource, s conversion.Scope) error { + return autoConvert_v1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in, out, s) +} + +func autoConvert_autoscaling_ObjectMetricSource_To_v1_ObjectMetricSource(in *autoscaling.ObjectMetricSource, out *ObjectMetricSource, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.TargetValue = in.TargetValue + return nil +} + +// Convert_autoscaling_ObjectMetricSource_To_v1_ObjectMetricSource is an autogenerated conversion function. +func Convert_autoscaling_ObjectMetricSource_To_v1_ObjectMetricSource(in *autoscaling.ObjectMetricSource, out *ObjectMetricSource, s conversion.Scope) error { + return autoConvert_autoscaling_ObjectMetricSource_To_v1_ObjectMetricSource(in, out, s) +} + +func autoConvert_v1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in *ObjectMetricStatus, out *autoscaling.ObjectMetricStatus, s conversion.Scope) error { + if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.CurrentValue = in.CurrentValue + return nil +} + +// Convert_v1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus is an autogenerated conversion function. +func Convert_v1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in *ObjectMetricStatus, out *autoscaling.ObjectMetricStatus, s conversion.Scope) error { + return autoConvert_v1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in, out, s) +} + +func autoConvert_autoscaling_ObjectMetricStatus_To_v1_ObjectMetricStatus(in *autoscaling.ObjectMetricStatus, out *ObjectMetricStatus, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.CurrentValue = in.CurrentValue + return nil +} + +// Convert_autoscaling_ObjectMetricStatus_To_v1_ObjectMetricStatus is an autogenerated conversion function. +func Convert_autoscaling_ObjectMetricStatus_To_v1_ObjectMetricStatus(in *autoscaling.ObjectMetricStatus, out *ObjectMetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_ObjectMetricStatus_To_v1_ObjectMetricStatus(in, out, s) +} + +func autoConvert_v1_PodsMetricSource_To_autoscaling_PodsMetricSource(in *PodsMetricSource, out *autoscaling.PodsMetricSource, s conversion.Scope) error { + out.MetricName = in.MetricName + out.TargetAverageValue = in.TargetAverageValue + return nil +} + +// Convert_v1_PodsMetricSource_To_autoscaling_PodsMetricSource is an autogenerated conversion function. +func Convert_v1_PodsMetricSource_To_autoscaling_PodsMetricSource(in *PodsMetricSource, out *autoscaling.PodsMetricSource, s conversion.Scope) error { + return autoConvert_v1_PodsMetricSource_To_autoscaling_PodsMetricSource(in, out, s) +} + +func autoConvert_autoscaling_PodsMetricSource_To_v1_PodsMetricSource(in *autoscaling.PodsMetricSource, out *PodsMetricSource, s conversion.Scope) error { + out.MetricName = in.MetricName + out.TargetAverageValue = in.TargetAverageValue + return nil +} + +// Convert_autoscaling_PodsMetricSource_To_v1_PodsMetricSource is an autogenerated conversion function. +func Convert_autoscaling_PodsMetricSource_To_v1_PodsMetricSource(in *autoscaling.PodsMetricSource, out *PodsMetricSource, s conversion.Scope) error { + return autoConvert_autoscaling_PodsMetricSource_To_v1_PodsMetricSource(in, out, s) +} + +func autoConvert_v1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in *PodsMetricStatus, out *autoscaling.PodsMetricStatus, s conversion.Scope) error { + out.MetricName = in.MetricName + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_v1_PodsMetricStatus_To_autoscaling_PodsMetricStatus is an autogenerated conversion function. +func Convert_v1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in *PodsMetricStatus, out *autoscaling.PodsMetricStatus, s conversion.Scope) error { + return autoConvert_v1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in, out, s) +} + +func autoConvert_autoscaling_PodsMetricStatus_To_v1_PodsMetricStatus(in *autoscaling.PodsMetricStatus, out *PodsMetricStatus, s conversion.Scope) error { + out.MetricName = in.MetricName + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_autoscaling_PodsMetricStatus_To_v1_PodsMetricStatus is an autogenerated conversion function. +func Convert_autoscaling_PodsMetricStatus_To_v1_PodsMetricStatus(in *autoscaling.PodsMetricStatus, out *PodsMetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_PodsMetricStatus_To_v1_PodsMetricStatus(in, out, s) +} + +func autoConvert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error { + out.Name = api.ResourceName(in.Name) + out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization)) + out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) + return nil +} + +// Convert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource is an autogenerated conversion function. +func Convert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error { + return autoConvert_v1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in, out, s) +} + +func autoConvert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *ResourceMetricSource, s conversion.Scope) error { + out.Name = api_v1.ResourceName(in.Name) + out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization)) + out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) + return nil +} + +// Convert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource is an autogenerated conversion function. +func Convert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *ResourceMetricSource, s conversion.Scope) error { + return autoConvert_autoscaling_ResourceMetricSource_To_v1_ResourceMetricSource(in, out, s) +} + +func autoConvert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error { + out.Name = api.ResourceName(in.Name) + out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization)) + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus is an autogenerated conversion function. +func Convert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error { + return autoConvert_v1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in, out, s) +} + +func autoConvert_autoscaling_ResourceMetricStatus_To_v1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *ResourceMetricStatus, s conversion.Scope) error { + out.Name = api_v1.ResourceName(in.Name) + out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization)) + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_autoscaling_ResourceMetricStatus_To_v1_ResourceMetricStatus is an autogenerated conversion function. +func Convert_autoscaling_ResourceMetricStatus_To_v1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *ResourceMetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_ResourceMetricStatus_To_v1_ResourceMetricStatus(in, out, s) +} + +func autoConvert_v1_Scale_To_autoscaling_Scale(in *Scale, out *autoscaling.Scale, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Scale_To_autoscaling_Scale is an autogenerated conversion function. +func Convert_v1_Scale_To_autoscaling_Scale(in *Scale, out *autoscaling.Scale, s conversion.Scope) error { + return autoConvert_v1_Scale_To_autoscaling_Scale(in, out, s) +} + +func autoConvert_autoscaling_Scale_To_v1_Scale(in *autoscaling.Scale, out *Scale, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_autoscaling_Scale_To_v1_Scale is an autogenerated conversion function. +func Convert_autoscaling_Scale_To_v1_Scale(in *autoscaling.Scale, out *Scale, s conversion.Scope) error { + return autoConvert_autoscaling_Scale_To_v1_Scale(in, out, s) +} + +func autoConvert_v1_ScaleSpec_To_autoscaling_ScaleSpec(in *ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +// Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec is an autogenerated conversion function. +func Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec(in *ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error { + return autoConvert_v1_ScaleSpec_To_autoscaling_ScaleSpec(in, out, s) +} + +func autoConvert_autoscaling_ScaleSpec_To_v1_ScaleSpec(in *autoscaling.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +// Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec is an autogenerated conversion function. +func Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec(in *autoscaling.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + return autoConvert_autoscaling_ScaleSpec_To_v1_ScaleSpec(in, out, s) +} + +func autoConvert_v1_ScaleStatus_To_autoscaling_ScaleStatus(in *ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.Selector = in.Selector + return nil +} + +// Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus is an autogenerated conversion function. +func Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus(in *ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error { + return autoConvert_v1_ScaleStatus_To_autoscaling_ScaleStatus(in, out, s) +} + +func autoConvert_autoscaling_ScaleStatus_To_v1_ScaleStatus(in *autoscaling.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.Selector = in.Selector + return nil +} + +// Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus is an autogenerated conversion function. +func Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus(in *autoscaling.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + return autoConvert_autoscaling_ScaleStatus_To_v1_ScaleStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..94fdc46d0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go @@ -0,0 +1,340 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + resource "k8s.io/apimachinery/pkg/api/resource" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_CrossVersionObjectReference, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscaler, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerCondition, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerList, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerSpec, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerStatus, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_MetricSpec, InType: reflect.TypeOf(&MetricSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_MetricStatus, InType: reflect.TypeOf(&MetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectMetricSource, InType: reflect.TypeOf(&ObjectMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectMetricStatus, InType: reflect.TypeOf(&ObjectMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodsMetricSource, InType: reflect.TypeOf(&PodsMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodsMetricStatus, InType: reflect.TypeOf(&PodsMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceMetricSource, InType: reflect.TypeOf(&ResourceMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceMetricStatus, InType: reflect.TypeOf(&ResourceMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + ) +} + +// DeepCopy_v1_CrossVersionObjectReference is an autogenerated deepcopy function. +func DeepCopy_v1_CrossVersionObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CrossVersionObjectReference) + out := out.(*CrossVersionObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_v1_HorizontalPodAutoscaler is an autogenerated deepcopy function. +func DeepCopy_v1_HorizontalPodAutoscaler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscaler) + out := out.(*HorizontalPodAutoscaler) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_HorizontalPodAutoscalerCondition is an autogenerated deepcopy function. +func DeepCopy_v1_HorizontalPodAutoscalerCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerCondition) + out := out.(*HorizontalPodAutoscalerCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1_HorizontalPodAutoscalerList is an autogenerated deepcopy function. +func DeepCopy_v1_HorizontalPodAutoscalerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerList) + out := out.(*HorizontalPodAutoscalerList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := DeepCopy_v1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_HorizontalPodAutoscalerSpec is an autogenerated deepcopy function. +func DeepCopy_v1_HorizontalPodAutoscalerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerSpec) + out := out.(*HorizontalPodAutoscalerSpec) + *out = *in + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + *out = new(int32) + **out = **in + } + if in.TargetCPUUtilizationPercentage != nil { + in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_HorizontalPodAutoscalerStatus is an autogenerated deepcopy function. +func DeepCopy_v1_HorizontalPodAutoscalerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerStatus) + out := out.(*HorizontalPodAutoscalerStatus) + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + *out = new(meta_v1.Time) + **out = (*in).DeepCopy() + } + if in.CurrentCPUUtilizationPercentage != nil { + in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_MetricSpec is an autogenerated deepcopy function. +func DeepCopy_v1_MetricSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MetricSpec) + out := out.(*MetricSpec) + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + *out = new(ObjectMetricSource) + if err := DeepCopy_v1_ObjectMetricSource(*in, *out, c); err != nil { + return err + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + *out = new(PodsMetricSource) + if err := DeepCopy_v1_PodsMetricSource(*in, *out, c); err != nil { + return err + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(ResourceMetricSource) + if err := DeepCopy_v1_ResourceMetricSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_MetricStatus is an autogenerated deepcopy function. +func DeepCopy_v1_MetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MetricStatus) + out := out.(*MetricStatus) + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + *out = new(ObjectMetricStatus) + if err := DeepCopy_v1_ObjectMetricStatus(*in, *out, c); err != nil { + return err + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + *out = new(PodsMetricStatus) + if err := DeepCopy_v1_PodsMetricStatus(*in, *out, c); err != nil { + return err + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(ResourceMetricStatus) + if err := DeepCopy_v1_ResourceMetricStatus(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1_ObjectMetricSource is an autogenerated deepcopy function. +func DeepCopy_v1_ObjectMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMetricSource) + out := out.(*ObjectMetricSource) + *out = *in + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ObjectMetricStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ObjectMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMetricStatus) + out := out.(*ObjectMetricStatus) + *out = *in + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1_PodsMetricSource is an autogenerated deepcopy function. +func DeepCopy_v1_PodsMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodsMetricSource) + out := out.(*PodsMetricSource) + *out = *in + out.TargetAverageValue = in.TargetAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1_PodsMetricStatus is an autogenerated deepcopy function. +func DeepCopy_v1_PodsMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodsMetricStatus) + out := out.(*PodsMetricStatus) + *out = *in + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1_ResourceMetricSource is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceMetricSource) + out := out.(*ResourceMetricSource) + *out = *in + if in.TargetAverageUtilization != nil { + in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization + *out = new(int32) + **out = **in + } + if in.TargetAverageValue != nil { + in, out := &in.TargetAverageValue, &out.TargetAverageValue + *out = new(resource.Quantity) + **out = (*in).DeepCopy() + } + return nil + } +} + +// DeepCopy_v1_ResourceMetricStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ResourceMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceMetricStatus) + out := out.(*ResourceMetricStatus) + *out = *in + if in.CurrentAverageUtilization != nil { + in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization + *out = new(int32) + **out = **in + } + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1_Scale is an autogenerated deepcopy function. +func DeepCopy_v1_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + return nil + } +} + +// DeepCopy_v1_ScaleSpec is an autogenerated deepcopy function. +func DeepCopy_v1_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + *out = *in + return nil + } +} + +// DeepCopy_v1_ScaleStatus is an autogenerated deepcopy function. +func DeepCopy_v1_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.defaults.go new file mode 100644 index 000000000..af20e9884 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v1/zz_generated.defaults.go @@ -0,0 +1,47 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&HorizontalPodAutoscaler{}, func(obj interface{}) { SetObjectDefaults_HorizontalPodAutoscaler(obj.(*HorizontalPodAutoscaler)) }) + scheme.AddTypeDefaultingFunc(&HorizontalPodAutoscalerList{}, func(obj interface{}) { + SetObjectDefaults_HorizontalPodAutoscalerList(obj.(*HorizontalPodAutoscalerList)) + }) + return nil +} + +func SetObjectDefaults_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler) { + SetDefaults_HorizontalPodAutoscaler(in) +} + +func SetObjectDefaults_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_HorizontalPodAutoscaler(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/BUILD b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/BUILD new file mode 100644 index 000000000..bf8ea847b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/BUILD @@ -0,0 +1,38 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/autoscaling:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/defaults.go new file mode 100644 index 000000000..7533cc4a3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/defaults.go @@ -0,0 +1,47 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/autoscaling" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_HorizontalPodAutoscaler(obj *HorizontalPodAutoscaler) { + if obj.Spec.MinReplicas == nil { + minReplicas := int32(1) + obj.Spec.MinReplicas = &minReplicas + } + + if len(obj.Spec.Metrics) == 0 { + utilizationDefaultVal := int32(autoscaling.DefaultCPUUtilization) + obj.Spec.Metrics = []MetricSpec{ + { + Type: ResourceMetricSourceType, + Resource: &ResourceMetricSource{ + Name: v1.ResourceCPU, + TargetAverageUtilization: &utilizationDefaultVal, + }, + }, + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/doc.go new file mode 100644 index 000000000..a9fe60b1c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.pb.go new file mode 100644 index 000000000..47fb3d5f1 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.pb.go @@ -0,0 +1,3402 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/autoscaling/v2alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v2alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/autoscaling/v2alpha1/generated.proto + + It has these top-level messages: + CrossVersionObjectReference + HorizontalPodAutoscaler + HorizontalPodAutoscalerCondition + HorizontalPodAutoscalerList + HorizontalPodAutoscalerSpec + HorizontalPodAutoscalerStatus + MetricSpec + MetricStatus + ObjectMetricSource + ObjectMetricStatus + PodsMetricSource + PodsMetricStatus + ResourceMetricSource + ResourceMetricStatus +*/ +package v2alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_api_resource "k8s.io/apimachinery/pkg/api/resource" +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *CrossVersionObjectReference) Reset() { *m = CrossVersionObjectReference{} } +func (*CrossVersionObjectReference) ProtoMessage() {} +func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *HorizontalPodAutoscaler) Reset() { *m = HorizontalPodAutoscaler{} } +func (*HorizontalPodAutoscaler) ProtoMessage() {} +func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *HorizontalPodAutoscalerCondition) Reset() { *m = HorizontalPodAutoscalerCondition{} } +func (*HorizontalPodAutoscalerCondition) ProtoMessage() {} +func (*HorizontalPodAutoscalerCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *HorizontalPodAutoscalerList) Reset() { *m = HorizontalPodAutoscalerList{} } +func (*HorizontalPodAutoscalerList) ProtoMessage() {} +func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *HorizontalPodAutoscalerSpec) Reset() { *m = HorizontalPodAutoscalerSpec{} } +func (*HorizontalPodAutoscalerSpec) ProtoMessage() {} +func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func (m *HorizontalPodAutoscalerStatus) Reset() { *m = HorizontalPodAutoscalerStatus{} } +func (*HorizontalPodAutoscalerStatus) ProtoMessage() {} +func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *MetricSpec) Reset() { *m = MetricSpec{} } +func (*MetricSpec) ProtoMessage() {} +func (*MetricSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *MetricStatus) Reset() { *m = MetricStatus{} } +func (*MetricStatus) ProtoMessage() {} +func (*MetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *ObjectMetricSource) Reset() { *m = ObjectMetricSource{} } +func (*ObjectMetricSource) ProtoMessage() {} +func (*ObjectMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *ObjectMetricStatus) Reset() { *m = ObjectMetricStatus{} } +func (*ObjectMetricStatus) ProtoMessage() {} +func (*ObjectMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *PodsMetricSource) Reset() { *m = PodsMetricSource{} } +func (*PodsMetricSource) ProtoMessage() {} +func (*PodsMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *PodsMetricStatus) Reset() { *m = PodsMetricStatus{} } +func (*PodsMetricStatus) ProtoMessage() {} +func (*PodsMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ResourceMetricSource) Reset() { *m = ResourceMetricSource{} } +func (*ResourceMetricSource) ProtoMessage() {} +func (*ResourceMetricSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ResourceMetricStatus) Reset() { *m = ResourceMetricStatus{} } +func (*ResourceMetricStatus) ProtoMessage() {} +func (*ResourceMetricStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func init() { + proto.RegisterType((*CrossVersionObjectReference)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.CrossVersionObjectReference") + proto.RegisterType((*HorizontalPodAutoscaler)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscaler") + proto.RegisterType((*HorizontalPodAutoscalerCondition)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerCondition") + proto.RegisterType((*HorizontalPodAutoscalerList)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerList") + proto.RegisterType((*HorizontalPodAutoscalerSpec)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerSpec") + proto.RegisterType((*HorizontalPodAutoscalerStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.HorizontalPodAutoscalerStatus") + proto.RegisterType((*MetricSpec)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.MetricSpec") + proto.RegisterType((*MetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.MetricStatus") + proto.RegisterType((*ObjectMetricSource)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.ObjectMetricSource") + proto.RegisterType((*ObjectMetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.ObjectMetricStatus") + proto.RegisterType((*PodsMetricSource)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.PodsMetricSource") + proto.RegisterType((*PodsMetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.PodsMetricStatus") + proto.RegisterType((*ResourceMetricSource)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.ResourceMetricSource") + proto.RegisterType((*ResourceMetricStatus)(nil), "k8s.io.client-go.pkg.apis.autoscaling.v2alpha1.ResourceMetricStatus") +} +func (m *CrossVersionObjectReference) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CrossVersionObjectReference) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + return i, nil +} + +func (m *HorizontalPodAutoscaler) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscaler) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *HorizontalPodAutoscalerCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n4, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *HorizontalPodAutoscalerList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HorizontalPodAutoscalerSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleTargetRef.Size())) + n6, err := m.ScaleTargetRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if m.MinReplicas != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.MinReplicas)) + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxReplicas)) + if len(m.Metrics) > 0 { + for _, msg := range m.Metrics { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HorizontalPodAutoscalerStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HorizontalPodAutoscalerStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ObservedGeneration != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastScaleTime.Size())) + n7, err := m.LastScaleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DesiredReplicas)) + if len(m.CurrentMetrics) > 0 { + for _, msg := range m.CurrentMetrics { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *MetricSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n8, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n9, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n10, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + return i, nil +} + +func (m *MetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.Object != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Object.Size())) + n11, err := m.Object.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + } + if m.Pods != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Pods.Size())) + n12, err := m.Pods.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.Resource != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Resource.Size())) + n13, err := m.Resource.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + } + return i, nil +} + +func (m *ObjectMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n14, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetValue.Size())) + n15, err := m.TargetValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + return i, nil +} + +func (m *ObjectMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size())) + n16, err := m.Target.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size())) + n17, err := m.CurrentValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + return i, nil +} + +func (m *PodsMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n18, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + return i, nil +} + +func (m *PodsMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodsMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName))) + i += copy(dAtA[i:], m.MetricName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n19, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + return i, nil +} + +func (m *ResourceMetricSource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if m.TargetAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size())) + n20, err := m.TargetAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *ResourceMetricStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ResourceMetricStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if m.CurrentAverageUtilization != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CurrentAverageUtilization)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size())) + n21, err := m.CurrentAverageValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *CrossVersionObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscaler) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscalerCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscalerList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HorizontalPodAutoscalerSpec) Size() (n int) { + var l int + _ = l + l = m.ScaleTargetRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.MinReplicas != nil { + n += 1 + sovGenerated(uint64(*m.MinReplicas)) + } + n += 1 + sovGenerated(uint64(m.MaxReplicas)) + if len(m.Metrics) > 0 { + for _, e := range m.Metrics { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HorizontalPodAutoscalerStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + l = m.LastScaleTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.DesiredReplicas)) + if len(m.CurrentMetrics) > 0 { + for _, e := range m.CurrentMetrics { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *MetricSpec) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *MetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.Object != nil { + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Pods != nil { + l = m.Pods.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Resource != nil { + l = m.Resource.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ObjectMetricSource) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectMetricStatus) Size() (n int) { + var l int + _ = l + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodsMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.MetricName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceMetricSource) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.TargetAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.TargetAverageUtilization)) + } + if m.TargetAverageValue != nil { + l = m.TargetAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ResourceMetricStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if m.CurrentAverageUtilization != nil { + n += 1 + sovGenerated(uint64(*m.CurrentAverageUtilization)) + } + l = m.CurrentAverageValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CrossVersionObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CrossVersionObjectReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscaler) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscaler{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "HorizontalPodAutoscalerSpec", "HorizontalPodAutoscalerSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "HorizontalPodAutoscalerStatus", "HorizontalPodAutoscalerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "HorizontalPodAutoscaler", "HorizontalPodAutoscaler", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerSpec{`, + `ScaleTargetRef:` + strings.Replace(strings.Replace(this.ScaleTargetRef.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MinReplicas:` + valueToStringGenerated(this.MinReplicas) + `,`, + `MaxReplicas:` + fmt.Sprintf("%v", this.MaxReplicas) + `,`, + `Metrics:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Metrics), "MetricSpec", "MetricSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `LastScaleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScaleTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `DesiredReplicas:` + fmt.Sprintf("%v", this.DesiredReplicas) + `,`, + `CurrentMetrics:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.CurrentMetrics), "MetricStatus", "MetricStatus", 1), `&`, ``, 1) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "HorizontalPodAutoscalerCondition", "HorizontalPodAutoscalerCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *MetricSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricSpec{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricSource", "ObjectMetricSource", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricSource", "PodsMetricSource", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricSource", "ResourceMetricSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *MetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&MetricStatus{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(fmt.Sprintf("%v", this.Object), "ObjectMetricStatus", "ObjectMetricStatus", 1) + `,`, + `Pods:` + strings.Replace(fmt.Sprintf("%v", this.Pods), "PodsMetricStatus", "PodsMetricStatus", 1) + `,`, + `Resource:` + strings.Replace(fmt.Sprintf("%v", this.Resource), "ResourceMetricStatus", "ResourceMetricStatus", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricSource{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectMetricStatus{`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricSource{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodsMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodsMetricStatus{`, + `MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricSource{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `TargetAverageUtilization:` + valueToStringGenerated(this.TargetAverageUtilization) + `,`, + `TargetAverageValue:` + strings.Replace(fmt.Sprintf("%v", this.TargetAverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceMetricStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceMetricStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `CurrentAverageUtilization:` + valueToStringGenerated(this.CurrentAverageUtilization) + `,`, + `CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CrossVersionObjectReference) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CrossVersionObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CrossVersionObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscaler) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = HorizontalPodAutoscalerConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, HorizontalPodAutoscaler{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleTargetRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ScaleTargetRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReplicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.MinReplicas = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxReplicas", wireType) + } + m.MaxReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metrics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Metrics = append(m.Metrics, MetricSpec{}) + if err := m.Metrics[len(m.Metrics)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ObservedGeneration = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastScaleTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastScaleTime == nil { + m.LastScaleTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.LastScaleTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentReplicas", wireType) + } + m.CurrentReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CurrentReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredReplicas", wireType) + } + m.DesiredReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DesiredReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentMetrics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CurrentMetrics = append(m.CurrentMetrics, MetricStatus{}) + if err := m.CurrentMetrics[len(m.CurrentMetrics)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, HorizontalPodAutoscalerCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MetricSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = MetricSourceType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Object == nil { + m.Object = &ObjectMetricSource{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pods == nil { + m.Pods = &PodsMetricSource{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resource == nil { + m.Resource = &ResourceMetricSource{} + } + if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = MetricSourceType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Object == nil { + m.Object = &ObjectMetricStatus{} + } + if err := m.Object.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Pods == nil { + m.Pods = &PodsMetricStatus{} + } + if err := m.Pods.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resource == nil { + m.Resource = &ResourceMetricStatus{} + } + if err := m.Resource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodsMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodsMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodsMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodsMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceMetricSource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = k8s_io_kubernetes_pkg_api_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageUtilization", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TargetAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TargetAverageValue == nil { + m.TargetAverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{} + } + if err := m.TargetAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceMetricStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceMetricStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceMetricStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = k8s_io_kubernetes_pkg_api_v1.ResourceName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageUtilization", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CurrentAverageUtilization = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentAverageValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentAverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 1331 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x5b, 0x6f, 0x1b, 0x45, + 0x1b, 0xce, 0x3a, 0x4e, 0x9a, 0x6f, 0x9c, 0x26, 0xfd, 0xa6, 0x55, 0xeb, 0xa6, 0xd4, 0x8e, 0x56, + 0x08, 0xb5, 0x08, 0x76, 0xa9, 0x29, 0x88, 0x0a, 0x01, 0x8a, 0xcd, 0xa1, 0x15, 0x71, 0x0f, 0xd3, + 0x50, 0x21, 0x40, 0x82, 0xc9, 0x7a, 0xea, 0x0c, 0xf1, 0x1e, 0xb4, 0x33, 0xb6, 0x48, 0xa5, 0x4a, + 0xdc, 0x70, 0x87, 0x04, 0x37, 0xfc, 0x04, 0x24, 0xfe, 0x01, 0xd7, 0x20, 0x21, 0xf5, 0xb2, 0x97, + 0xe5, 0xc6, 0xa2, 0xee, 0x1d, 0x3f, 0x21, 0x12, 0x07, 0xcd, 0x61, 0x4f, 0x5e, 0x6f, 0x1a, 0x87, + 0xb4, 0x82, 0x3b, 0x7b, 0xe6, 0x7d, 0x9f, 0xe7, 0x3d, 0x3c, 0xf3, 0xce, 0x2c, 0x78, 0x6b, 0xfb, + 0x35, 0x66, 0x51, 0xdf, 0xde, 0xee, 0x6f, 0x92, 0xd0, 0x23, 0x9c, 0x30, 0x3b, 0xd8, 0xee, 0xda, + 0x38, 0xa0, 0xcc, 0xc6, 0x7d, 0xee, 0x33, 0x07, 0xf7, 0xa8, 0xd7, 0xb5, 0x07, 0x0d, 0xdc, 0x0b, + 0xb6, 0xf0, 0x05, 0xbb, 0x4b, 0x3c, 0x12, 0x62, 0x4e, 0x3a, 0x56, 0x10, 0xfa, 0xdc, 0x87, 0xb6, + 0x02, 0xb0, 0x12, 0x00, 0x2b, 0xd8, 0xee, 0x5a, 0x02, 0xc0, 0x4a, 0x01, 0x58, 0x11, 0xc0, 0xca, + 0x8b, 0x5d, 0xca, 0xb7, 0xfa, 0x9b, 0x96, 0xe3, 0xbb, 0x76, 0xd7, 0xef, 0xfa, 0xb6, 0xc4, 0xd9, + 0xec, 0xdf, 0x96, 0xff, 0xe4, 0x1f, 0xf9, 0x4b, 0xe1, 0xaf, 0x5c, 0xd4, 0x01, 0xe2, 0x80, 0xba, + 0xd8, 0xd9, 0xa2, 0x1e, 0x09, 0x77, 0xa2, 0x10, 0xed, 0x90, 0x30, 0xbf, 0x1f, 0x3a, 0x64, 0x3c, + 0xaa, 0x3d, 0xbd, 0x98, 0xed, 0x12, 0x8e, 0xed, 0x41, 0x2e, 0x97, 0x15, 0xbb, 0xc8, 0x2b, 0xec, + 0x7b, 0x9c, 0xba, 0x79, 0x9a, 0x57, 0x1f, 0xe7, 0xc0, 0x9c, 0x2d, 0xe2, 0xe2, 0x9c, 0xdf, 0xcb, + 0x45, 0x7e, 0x7d, 0x4e, 0x7b, 0x36, 0xf5, 0x38, 0xe3, 0x61, 0xce, 0xe9, 0x85, 0xc2, 0x56, 0x4d, + 0xca, 0xe5, 0xd2, 0x7e, 0x1b, 0x9b, 0x73, 0x35, 0xbf, 0x33, 0xc0, 0x99, 0x56, 0xe8, 0x33, 0x76, + 0x8b, 0x84, 0x8c, 0xfa, 0xde, 0xb5, 0xcd, 0xcf, 0x89, 0xc3, 0x11, 0xb9, 0x4d, 0x42, 0xe2, 0x39, + 0x04, 0xae, 0x82, 0xf2, 0x36, 0xf5, 0x3a, 0x55, 0x63, 0xd5, 0x38, 0xf7, 0xbf, 0xe6, 0xe2, 0xbd, + 0x61, 0x7d, 0x66, 0x34, 0xac, 0x97, 0xdf, 0xa7, 0x5e, 0x07, 0xc9, 0x1d, 0x61, 0xe1, 0x61, 0x97, + 0x54, 0x4b, 0x59, 0x8b, 0xab, 0xd8, 0x25, 0x48, 0xee, 0xc0, 0x06, 0x00, 0x38, 0xa0, 0x9a, 0xa0, + 0x3a, 0x2b, 0xed, 0xa0, 0xb6, 0x03, 0x6b, 0xd7, 0xaf, 0xe8, 0x1d, 0x94, 0xb2, 0x32, 0x1f, 0x95, + 0xc0, 0xa9, 0xcb, 0x7e, 0x48, 0xef, 0xf8, 0x1e, 0xc7, 0xbd, 0xeb, 0x7e, 0x67, 0x4d, 0xe7, 0x41, + 0x42, 0xf8, 0x19, 0x58, 0x10, 0x5d, 0xed, 0x60, 0x8e, 0x65, 0x5c, 0x95, 0xc6, 0x4b, 0x96, 0x56, + 0x66, 0xba, 0xc8, 0x89, 0x36, 0x85, 0xb5, 0x35, 0xb8, 0x60, 0xa9, 0xe4, 0xda, 0x84, 0xe3, 0x84, + 0x3f, 0x59, 0x43, 0x31, 0x2a, 0xf4, 0x40, 0x99, 0x05, 0xc4, 0x91, 0x39, 0x55, 0x1a, 0xeb, 0xd6, + 0x94, 0xba, 0xb7, 0x0a, 0x22, 0xbf, 0x19, 0x10, 0x27, 0xa9, 0x90, 0xf8, 0x87, 0x24, 0x0f, 0x1c, + 0x80, 0x79, 0xc6, 0x31, 0xef, 0x33, 0x59, 0x9d, 0x4a, 0xe3, 0xea, 0xa1, 0x31, 0x4a, 0xd4, 0xe6, + 0x92, 0xe6, 0x9c, 0x57, 0xff, 0x91, 0x66, 0x33, 0xbf, 0x99, 0x05, 0xab, 0x05, 0x9e, 0x2d, 0xdf, + 0xeb, 0x50, 0x4e, 0x7d, 0x0f, 0x5e, 0x06, 0x65, 0xbe, 0x13, 0x10, 0x2d, 0x81, 0x8b, 0x51, 0xf8, + 0x1b, 0x3b, 0x01, 0xd9, 0x1d, 0xd6, 0x9f, 0x7d, 0x9c, 0xbf, 0xb0, 0x43, 0x12, 0x01, 0xde, 0x8a, + 0xd3, 0x54, 0x62, 0x79, 0x33, 0x1b, 0xd6, 0xee, 0xb0, 0xbe, 0xa7, 0xee, 0xad, 0x18, 0x33, 0x9b, + 0x06, 0x1c, 0x00, 0xd8, 0xc3, 0x8c, 0x6f, 0x84, 0xd8, 0x63, 0x8a, 0x93, 0xba, 0x44, 0x97, 0xf2, + 0xf9, 0xfd, 0x49, 0x43, 0x78, 0x34, 0x57, 0x74, 0x3c, 0x70, 0x3d, 0x87, 0x86, 0x26, 0x30, 0xc0, + 0xe7, 0xc0, 0x7c, 0x48, 0x30, 0xf3, 0xbd, 0x6a, 0x59, 0xe6, 0x13, 0x97, 0x19, 0xc9, 0x55, 0xa4, + 0x77, 0xe1, 0x79, 0x70, 0xc4, 0x25, 0x8c, 0xe1, 0x2e, 0xa9, 0xce, 0x49, 0xc3, 0x65, 0x6d, 0x78, + 0xa4, 0xad, 0x96, 0x51, 0xb4, 0x6f, 0xfe, 0x6e, 0x80, 0x33, 0x05, 0x15, 0x5d, 0xa7, 0x8c, 0xc3, + 0x4f, 0x72, 0xda, 0xb7, 0xf6, 0x97, 0xa0, 0xf0, 0x96, 0xca, 0x3f, 0xa6, 0xb9, 0x17, 0xa2, 0x95, + 0x94, 0xee, 0x5d, 0x30, 0x47, 0x39, 0x71, 0x45, 0x7f, 0x66, 0xcf, 0x55, 0x1a, 0x97, 0x0f, 0x4b, + 0x86, 0xcd, 0xa3, 0x9a, 0x74, 0xee, 0x8a, 0x80, 0x47, 0x8a, 0xc5, 0xfc, 0xb3, 0x54, 0x98, 0xac, + 0x38, 0x1c, 0xf0, 0x6b, 0x03, 0x2c, 0xc9, 0xbf, 0x1b, 0x38, 0xec, 0x12, 0x31, 0x95, 0x74, 0xce, + 0xd3, 0x9f, 0xc8, 0x3d, 0x66, 0x5c, 0xf3, 0xa4, 0x0e, 0x6e, 0xe9, 0x66, 0x86, 0x0b, 0x8d, 0x71, + 0xc3, 0x0b, 0xa0, 0xe2, 0x52, 0x0f, 0x91, 0xa0, 0x47, 0x1d, 0xac, 0x34, 0x3c, 0xd7, 0x5c, 0x1e, + 0x0d, 0xeb, 0x95, 0x76, 0xb2, 0x8c, 0xd2, 0x36, 0xf0, 0x15, 0x50, 0x71, 0xf1, 0x17, 0xb1, 0xcb, + 0xac, 0x74, 0x39, 0xae, 0xf9, 0x2a, 0xed, 0x64, 0x0b, 0xa5, 0xed, 0xe0, 0x6d, 0x21, 0x18, 0x1e, + 0x52, 0x87, 0x55, 0xcb, 0xb2, 0x13, 0xaf, 0x4f, 0x9d, 0x70, 0x5b, 0xfa, 0xcb, 0x89, 0x93, 0x52, + 0x9b, 0xc4, 0x44, 0x11, 0xb8, 0xf9, 0x6b, 0x19, 0x9c, 0xdd, 0x73, 0x72, 0xc0, 0x77, 0x01, 0xf4, + 0x37, 0x19, 0x09, 0x07, 0xa4, 0xf3, 0x9e, 0xba, 0x3a, 0xc4, 0x0c, 0x17, 0x5d, 0x98, 0x6d, 0x9e, + 0x14, 0x47, 0xe5, 0x5a, 0x6e, 0x17, 0x4d, 0xf0, 0x80, 0x0e, 0x38, 0x2a, 0x0e, 0x90, 0xaa, 0x30, + 0xd5, 0xd7, 0xc5, 0x74, 0xa7, 0xf3, 0xff, 0xa3, 0x61, 0xfd, 0xe8, 0x7a, 0x1a, 0x04, 0x65, 0x31, + 0xe1, 0x1a, 0x58, 0x76, 0xfa, 0x61, 0x48, 0x3c, 0x3e, 0x56, 0xf1, 0x53, 0xba, 0x02, 0xcb, 0xad, + 0xec, 0x36, 0x1a, 0xb7, 0x17, 0x10, 0x1d, 0xc2, 0x68, 0x48, 0x3a, 0x31, 0x44, 0x39, 0x0b, 0xf1, + 0x76, 0x76, 0x1b, 0x8d, 0xdb, 0xc3, 0xbb, 0x60, 0x49, 0xa3, 0xea, 0x7a, 0x57, 0xe7, 0x64, 0x0f, + 0xdf, 0x38, 0x68, 0x0f, 0xd5, 0x0c, 0x8f, 0x55, 0xda, 0xca, 0x80, 0xa3, 0x31, 0x32, 0xf8, 0x95, + 0x01, 0x80, 0x13, 0x0d, 0x4a, 0x56, 0x9d, 0x97, 0xdc, 0x37, 0x0e, 0xeb, 0x24, 0xc7, 0x23, 0x38, + 0xb9, 0x41, 0xe3, 0x25, 0x86, 0x52, 0xc4, 0xe6, 0x1f, 0x25, 0x00, 0x12, 0x11, 0xc2, 0x8b, 0x99, + 0x5b, 0x64, 0x75, 0xec, 0x16, 0x39, 0xa6, 0x2d, 0xe5, 0x0b, 0x2f, 0x75, 0x63, 0x74, 0xc1, 0xbc, + 0x2f, 0x4f, 0xab, 0xd6, 0x4b, 0x6b, 0xea, 0x3c, 0xe2, 0xfb, 0x3d, 0x86, 0x6f, 0x02, 0x31, 0xa2, + 0xf5, 0x10, 0xd0, 0xf0, 0xf0, 0x53, 0x50, 0x0e, 0xfc, 0x4e, 0x74, 0xff, 0xae, 0x4d, 0x4d, 0x73, + 0xdd, 0xef, 0xb0, 0x0c, 0xc9, 0x82, 0xc8, 0x4e, 0xac, 0x22, 0x09, 0x0c, 0x7d, 0xb0, 0x10, 0xbd, + 0x60, 0xa5, 0xa2, 0x2a, 0x8d, 0x77, 0xa6, 0x26, 0x41, 0x1a, 0x20, 0x43, 0xb4, 0x28, 0x66, 0x79, + 0xb4, 0x83, 0x62, 0x12, 0xf3, 0xaf, 0x12, 0x58, 0x4c, 0x0b, 0xe8, 0xdf, 0xd1, 0x01, 0xa5, 0xe5, + 0x27, 0xdc, 0x01, 0x45, 0xf2, 0x14, 0x3a, 0xa0, 0x88, 0x8a, 0x3a, 0xf0, 0x7d, 0x09, 0xc0, 0xbc, + 0xfc, 0x20, 0x07, 0xf3, 0x5c, 0xde, 0x29, 0x4f, 0xe4, 0x32, 0x8b, 0xdf, 0x20, 0xfa, 0xde, 0xd2, + 0x5c, 0xe2, 0x11, 0xae, 0xa6, 0xfe, 0xd5, 0xe4, 0xb1, 0x1e, 0x1f, 0xe1, 0x76, 0xbc, 0x83, 0x52, + 0x56, 0x90, 0x80, 0x8a, 0xf2, 0xbe, 0x85, 0x7b, 0xfd, 0xe8, 0x41, 0xb5, 0xe7, 0x7b, 0xc3, 0x8a, + 0x92, 0xb7, 0x6e, 0xf4, 0xb1, 0xc7, 0x29, 0xdf, 0x49, 0x6e, 0xbb, 0x8d, 0x04, 0x0a, 0xa5, 0x71, + 0xcd, 0x1f, 0xc6, 0xeb, 0xa4, 0xf4, 0xfa, 0xdf, 0xa9, 0xd3, 0x16, 0x58, 0xd4, 0x43, 0xf8, 0x9f, + 0x14, 0xea, 0x84, 0x66, 0x59, 0x6c, 0xa5, 0xb0, 0x50, 0x06, 0xd9, 0xfc, 0xd9, 0x00, 0xc7, 0xc6, + 0x47, 0xcd, 0x58, 0xc8, 0xc6, 0xbe, 0x42, 0xbe, 0x03, 0xa0, 0x4a, 0x78, 0x6d, 0x40, 0x42, 0xdc, + 0x25, 0x2a, 0xf0, 0xd2, 0x81, 0x02, 0x8f, 0x9f, 0xcd, 0x1b, 0x39, 0x44, 0x34, 0x81, 0xc5, 0xfc, + 0x25, 0x9b, 0x84, 0xea, 0xf6, 0x41, 0x92, 0xb8, 0x0b, 0x8e, 0xeb, 0xea, 0x1c, 0x42, 0x16, 0x67, + 0x34, 0xd9, 0xf1, 0x56, 0x1e, 0x12, 0x4d, 0xe2, 0x31, 0x7f, 0x2c, 0x81, 0x13, 0x93, 0x46, 0x32, + 0x6c, 0xeb, 0x4f, 0x62, 0x95, 0xc5, 0xa5, 0xf4, 0x27, 0xf1, 0xee, 0xb0, 0x7e, 0x7e, 0xcf, 0x6f, + 0x9c, 0x08, 0x30, 0xf5, 0xfd, 0xfc, 0x21, 0xa8, 0x66, 0xaa, 0xf8, 0x01, 0xa7, 0x3d, 0x7a, 0x47, + 0xbd, 0xc4, 0xd4, 0x23, 0xf4, 0x99, 0xd1, 0xb0, 0x5e, 0xdd, 0x28, 0xb0, 0x41, 0x85, 0xde, 0xe2, + 0xc3, 0x69, 0x82, 0x0a, 0x0e, 0x26, 0xdf, 0x93, 0x53, 0x28, 0xe0, 0xa7, 0x7c, 0xe5, 0x94, 0x0a, + 0x0e, 0xb9, 0x72, 0x1f, 0x83, 0xd3, 0xd9, 0xc6, 0xe5, 0x4b, 0x77, 0x76, 0x34, 0xac, 0x9f, 0x6e, + 0x15, 0x19, 0xa1, 0x62, 0xff, 0x22, 0xf5, 0xcd, 0x3e, 0x1d, 0xf5, 0x35, 0xad, 0x7b, 0x0f, 0x6b, + 0x33, 0xf7, 0x1f, 0xd6, 0x66, 0x1e, 0x3c, 0xac, 0xcd, 0x7c, 0x39, 0xaa, 0x19, 0xf7, 0x46, 0x35, + 0xe3, 0xfe, 0xa8, 0x66, 0x3c, 0x18, 0xd5, 0x8c, 0xdf, 0x46, 0x35, 0xe3, 0xdb, 0x47, 0xb5, 0x99, + 0x8f, 0x16, 0xa2, 0x61, 0xf8, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xa9, 0x91, 0xe9, 0xfe, + 0x13, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.proto new file mode 100644 index 000000000..21d9ea6f6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/generated.proto @@ -0,0 +1,302 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.autoscaling.v2alpha1; + +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/apis/autoscaling/v1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v2alpha1"; + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +message CrossVersionObjectReference { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + optional string kind = 1; + + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + optional string name = 2; + + // API version of the referent + // +optional + optional string apiVersion = 3; +} + +// HorizontalPodAutoscaler is the configuration for a horizontal pod +// autoscaler, which automatically manages the replica count of any resource +// implementing the scale subresource based on the metrics specified. +message HorizontalPodAutoscaler { + // metadata is the standard object metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // spec is the specification for the behaviour of the autoscaler. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional HorizontalPodAutoscalerSpec spec = 2; + + // status is the current information about the autoscaler. + // +optional + optional HorizontalPodAutoscalerStatus status = 3; +} + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +message HorizontalPodAutoscalerCondition { + // type describes the current condition + optional string type = 1; + + // status is the status of the condition (True, False, Unknown) + optional string status = 2; + + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // reason is the reason for the condition's last transition. + // +optional + optional string reason = 4; + + // message is a human-readable explanation containing details about + // the transition + // +optional + optional string message = 5; +} + +// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. +message HorizontalPodAutoscalerList { + // metadata is the standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of horizontal pod autoscaler objects. + repeated HorizontalPodAutoscaler items = 2; +} + +// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. +message HorizontalPodAutoscalerSpec { + // scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics + // should be collected, as well as to actually change the replica count. + optional CrossVersionObjectReference scaleTargetRef = 1; + + // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // It defaults to 1 pod. + // +optional + optional int32 minReplicas = 2; + + // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + // It cannot be less that minReplicas. + optional int32 maxReplicas = 3; + + // metrics contains the specifications for which to use to calculate the + // desired replica count (the maximum replica count across all metrics will + // be used). The desired replica count is calculated multiplying the + // ratio between the target value and the current value by the current + // number of pods. Ergo, metrics used must decrease as the pod count is + // increased, and vice-versa. See the individual metric source types for + // more information about how each type of metric must respond. + // +optional + repeated MetricSpec metrics = 4; +} + +// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler. +message HorizontalPodAutoscalerStatus { + // observedGeneration is the most recent generation observed by this autoscaler. + // +optional + optional int64 observedGeneration = 1; + + // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, + // used by the autoscaler to control how often the number of pods is changed. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2; + + // currentReplicas is current number of replicas of pods managed by this autoscaler, + // as last seen by the autoscaler. + optional int32 currentReplicas = 3; + + // desiredReplicas is the desired number of replicas of pods managed by this autoscaler, + // as last calculated by the autoscaler. + optional int32 desiredReplicas = 4; + + // currentMetrics is the last read state of the metrics used by this autoscaler. + repeated MetricStatus currentMetrics = 5; + + // conditions is the set of conditions required for this autoscaler to scale its target, + // and indicates whether or not those conditions are met. + repeated HorizontalPodAutoscalerCondition conditions = 6; +} + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +message MetricSpec { + // type is the type of metric source. It should match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricSource object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricSource pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricSource resource = 4; +} + +// MetricStatus describes the last-read state of a single metric. +message MetricStatus { + // type is the type of metric source. It will match one of the fields below. + optional string type = 1; + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + optional ObjectMetricStatus object = 2; + + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + optional PodsMetricStatus pods = 3; + + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + optional ResourceMetricStatus resource = 4; +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricSource { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // targetValue is the target value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3; +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +message ObjectMetricStatus { + // target is the described Kubernetes object. + optional CrossVersionObjectReference target = 1; + + // metricName is the name of the metric in question. + optional string metricName = 2; + + // currentValue is the current value of the metric (as a quantity). + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3; +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +message PodsMetricSource { + // metricName is the name of the metric in question + optional string metricName = 1; + + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2; +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +message PodsMetricStatus { + // metricName is the name of the metric in question + optional string metricName = 1; + + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2; +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +message ResourceMetricSource { + // name is the name of the resource in question. + optional string name = 1; + + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + optional int32 targetAverageUtilization = 2; + + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 3; +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +message ResourceMetricStatus { + // name is the name of the resource in question. + optional string name = 1; + + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + optional int32 currentAverageUtilization = 2; + + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 3; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/register.go new file mode 100644 index 000000000..e623be7e3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/register.go @@ -0,0 +1,59 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.generated.go new file mode 100644 index 000000000..5f984e4f5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.generated.go @@ -0,0 +1,5218 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v2alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_resource "k8s.io/apimachinery/pkg/api/resource" + pkg3_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg4_types "k8s.io/apimachinery/pkg/types" + pkg2_v1 "k8s.io/client-go/pkg/api/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_resource.Quantity + var v1 pkg3_v1.Time + var v2 pkg4_types.UID + var v3 pkg2_v1.ResourceName + var v4 time.Time + _, _, _, _, _ = v0, v1, v2, v3, v4 + } +} + +func (x *CrossVersionObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.APIVersion != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CrossVersionObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv6 := &x.Name + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv8 := &x.APIVersion + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv11 := &x.Kind + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv13 := &x.Name + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.MinReplicas != nil + yyq2[3] = len(x.Metrics) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.ScaleTargetRef + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleTargetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.ScaleTargetRef + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy9 := *x.MinReplicas + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy11 := *x.MinReplicas + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeInt(int64(yy11)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Metrics == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encSliceMetricSpec(([]MetricSpec)(x.Metrics), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metrics")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Metrics == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + h.encSliceMetricSpec(([]MetricSpec)(x.Metrics), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "scaleTargetRef": + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv4 := &x.ScaleTargetRef + yyv4.CodecDecodeSelf(d) + } + case "minReplicas": + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + case "maxReplicas": + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + yyv7 := &x.MaxReplicas + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + case "metrics": + if r.TryDecodeAsNil() { + x.Metrics = nil + } else { + yyv9 := &x.Metrics + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceMetricSpec((*[]MetricSpec)(yyv9), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv12 := &x.ScaleTargetRef + yyv12.CodecDecodeSelf(d) + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + yyv15 := &x.MaxReplicas + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*int32)(yyv15)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Metrics = nil + } else { + yyv17 := &x.Metrics + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + h.decSliceMetricSpec((*[]MetricSpec)(yyv17), d) + } + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x MetricSourceType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *MetricSourceType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *MetricSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Object != nil + yyq2[2] = x.Pods != nil + yyq2[3] = x.Resource != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("object")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *MetricSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *MetricSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "object": + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricSource) + } + x.Object.CodecDecodeSelf(d) + } + case "pods": + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricSource) + } + x.Pods.CodecDecodeSelf(d) + } + case "resource": + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricSource) + } + x.Resource.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *MetricSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv9 := &x.Type + yyv9.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricSource) + } + x.Object.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricSource) + } + x.Pods.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricSource) + } + x.Resource.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectMetricSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.Target + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.Target + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.TargetValue + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.TargetValue + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(yy14) { + } else if !yym15 && z.IsJSONHandle() { + z.EncJSONMarshal(yy14) + } else { + z.EncFallback(yy14) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMetricSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMetricSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "target": + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv4 := &x.Target + yyv4.CodecDecodeSelf(d) + } + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv5 := &x.MetricName + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + case "targetValue": + if r.TryDecodeAsNil() { + x.TargetValue = pkg1_resource.Quantity{} + } else { + yyv7 := &x.TargetValue + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMetricSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv10 := &x.Target + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv11 := &x.MetricName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetValue = pkg1_resource.Quantity{} + } else { + yyv13 := &x.TargetValue + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodsMetricSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.TargetAverageValue + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.TargetAverageValue + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodsMetricSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodsMetricSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv4 := &x.MetricName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "targetAverageValue": + if r.TryDecodeAsNil() { + x.TargetAverageValue = pkg1_resource.Quantity{} + } else { + yyv6 := &x.TargetAverageValue + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodsMetricSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv9 := &x.MetricName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetAverageValue = pkg1_resource.Quantity{} + } else { + yyv11 := &x.TargetAverageValue + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceMetricSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.TargetAverageUtilization != nil + yyq2[2] = x.TargetAverageValue != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf4 := &x.Name + yysf4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf5 := &x.Name + yysf5.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.TargetAverageUtilization == nil { + r.EncodeNil() + } else { + yy7 := *x.TargetAverageUtilization + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetAverageUtilization")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetAverageUtilization == nil { + r.EncodeNil() + } else { + yy9 := *x.TargetAverageUtilization + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.TargetAverageValue == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.EncExt(x.TargetAverageValue) { + } else if !yym12 && z.IsJSONHandle() { + z.EncJSONMarshal(x.TargetAverageValue) + } else { + z.EncFallback(x.TargetAverageValue) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetAverageValue == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(x.TargetAverageValue) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(x.TargetAverageValue) + } else { + z.EncFallback(x.TargetAverageValue) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceMetricSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceMetricSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yyv4.CodecDecodeSelf(d) + } + case "targetAverageUtilization": + if r.TryDecodeAsNil() { + if x.TargetAverageUtilization != nil { + x.TargetAverageUtilization = nil + } + } else { + if x.TargetAverageUtilization == nil { + x.TargetAverageUtilization = new(int32) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int32)(x.TargetAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + case "targetAverageValue": + if r.TryDecodeAsNil() { + if x.TargetAverageValue != nil { + x.TargetAverageValue = nil + } + } else { + if x.TargetAverageValue == nil { + x.TargetAverageValue = new(pkg1_resource.Quantity) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(x.TargetAverageValue) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.TargetAverageValue) + } else { + z.DecFallback(x.TargetAverageValue, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceMetricSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetAverageUtilization != nil { + x.TargetAverageUtilization = nil + } + } else { + if x.TargetAverageUtilization == nil { + x.TargetAverageUtilization = new(int32) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(x.TargetAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetAverageValue != nil { + x.TargetAverageValue = nil + } + } else { + if x.TargetAverageValue == nil { + x.TargetAverageValue = new(pkg1_resource.Quantity) + } + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(x.TargetAverageValue) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.TargetAverageValue) + } else { + z.DecFallback(x.TargetAverageValue, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ObservedGeneration != nil + yyq2[1] = x.LastScaleTime != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 4 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy4 := *x.ObservedGeneration + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy6 := *x.ObservedGeneration + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym9 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym9 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScaleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym10 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.CurrentMetrics == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + h.encSliceMetricStatus(([]MetricStatus)(x.CurrentMetrics), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentMetrics")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentMetrics == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceMetricStatus(([]MetricStatus)(x.CurrentMetrics), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + h.encSliceHorizontalPodAutoscalerCondition(([]HorizontalPodAutoscalerCondition)(x.Conditions), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + h.encSliceHorizontalPodAutoscalerCondition(([]HorizontalPodAutoscalerCondition)(x.Conditions), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "lastScaleTime": + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg3_v1.Time) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym7 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + case "currentReplicas": + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + yyv8 := &x.CurrentReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "desiredReplicas": + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + yyv10 := &x.DesiredReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "currentMetrics": + if r.TryDecodeAsNil() { + x.CurrentMetrics = nil + } else { + yyv12 := &x.CurrentMetrics + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + h.decSliceMetricStatus((*[]MetricStatus)(yyv12), d) + } + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv14 := &x.Conditions + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decSliceHorizontalPodAutoscalerCondition((*[]HorizontalPodAutoscalerCondition)(yyv14), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg3_v1.Time) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym20 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + yyv21 := &x.CurrentReplicas + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + yyv23 := &x.DesiredReplicas + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentMetrics = nil + } else { + yyv25 := &x.CurrentMetrics + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + h.decSliceMetricStatus((*[]MetricStatus)(yyv25), d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv27 := &x.Conditions + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + h.decSliceHorizontalPodAutoscalerCondition((*[]HorizontalPodAutoscalerCondition)(yyv27), d) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x HorizontalPodAutoscalerConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *HorizontalPodAutoscalerConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HorizontalPodAutoscalerCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = x.Reason != "" + yyq2[4] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf7 := &x.Status + yysf7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf8 := &x.Status + yysf8.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastTransitionTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastTransitionTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg3_v1.Time{} + } else { + yyv6 := &x.LastTransitionTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv8 := &x.Reason + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv10 := &x.Message + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv13 := &x.Type + yyv13.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv14 := &x.Status + yyv14.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg3_v1.Time{} + } else { + yyv15 := &x.LastTransitionTime + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(yyv15) { + } else if yym16 { + z.DecBinaryUnmarshal(yyv15) + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv15) + } else { + z.DecFallback(yyv15, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv17 := &x.Reason + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv19 := &x.Message + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *MetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Object != nil + yyq2[2] = x.Pods != nil + yyq2[3] = x.Resource != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("object")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Object == nil { + r.EncodeNil() + } else { + x.Object.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Pods == nil { + r.EncodeNil() + } else { + x.Pods.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resource == nil { + r.EncodeNil() + } else { + x.Resource.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *MetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *MetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "object": + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricStatus) + } + x.Object.CodecDecodeSelf(d) + } + case "pods": + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricStatus) + } + x.Pods.CodecDecodeSelf(d) + } + case "resource": + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricStatus) + } + x.Resource.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *MetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv9 := &x.Type + yyv9.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Object != nil { + x.Object = nil + } + } else { + if x.Object == nil { + x.Object = new(ObjectMetricStatus) + } + x.Object.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Pods != nil { + x.Pods = nil + } + } else { + if x.Pods == nil { + x.Pods = new(PodsMetricStatus) + } + x.Pods.CodecDecodeSelf(d) + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Resource != nil { + x.Resource = nil + } + } else { + if x.Resource == nil { + x.Resource = new(ResourceMetricStatus) + } + x.Resource.CodecDecodeSelf(d) + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectMetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.Target + yy4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.Target + yy6.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.CurrentValue + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.CurrentValue + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(yy14) { + } else if !yym15 && z.IsJSONHandle() { + z.EncJSONMarshal(yy14) + } else { + z.EncFallback(yy14) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "target": + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv4 := &x.Target + yyv4.CodecDecodeSelf(d) + } + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv5 := &x.MetricName + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + case "currentValue": + if r.TryDecodeAsNil() { + x.CurrentValue = pkg1_resource.Quantity{} + } else { + yyv7 := &x.CurrentValue + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = CrossVersionObjectReference{} + } else { + yyv10 := &x.Target + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv11 := &x.MetricName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentValue = pkg1_resource.Quantity{} + } else { + yyv13 := &x.CurrentValue + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodsMetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metricName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MetricName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.CurrentAverageValue + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.CurrentAverageValue + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodsMetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodsMetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "metricName": + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv4 := &x.MetricName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "currentAverageValue": + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg1_resource.Quantity{} + } else { + yyv6 := &x.CurrentAverageValue + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodsMetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MetricName = "" + } else { + yyv9 := &x.MetricName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg1_resource.Quantity{} + } else { + yyv11 := &x.CurrentAverageValue + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceMetricStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.CurrentAverageUtilization != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf4 := &x.Name + yysf4.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf5 := &x.Name + yysf5.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.CurrentAverageUtilization == nil { + r.EncodeNil() + } else { + yy7 := *x.CurrentAverageUtilization + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentAverageUtilization")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentAverageUtilization == nil { + r.EncodeNil() + } else { + yy9 := *x.CurrentAverageUtilization + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.CurrentAverageValue + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentAverageValue")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.CurrentAverageValue + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(yy14) { + } else if !yym15 && z.IsJSONHandle() { + z.EncJSONMarshal(yy14) + } else { + z.EncFallback(yy14) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceMetricStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceMetricStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yyv4.CodecDecodeSelf(d) + } + case "currentAverageUtilization": + if r.TryDecodeAsNil() { + if x.CurrentAverageUtilization != nil { + x.CurrentAverageUtilization = nil + } + } else { + if x.CurrentAverageUtilization == nil { + x.CurrentAverageUtilization = new(int32) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*int32)(x.CurrentAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + case "currentAverageValue": + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg1_resource.Quantity{} + } else { + yyv7 := &x.CurrentAverageValue + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(yyv7) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv7) + } else { + z.DecFallback(yyv7, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceMetricStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv10 := &x.Name + yyv10.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CurrentAverageUtilization != nil { + x.CurrentAverageUtilization = nil + } + } else { + if x.CurrentAverageUtilization == nil { + x.CurrentAverageUtilization = new(int32) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(x.CurrentAverageUtilization)) = int32(r.DecodeInt(32)) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentAverageValue = pkg1_resource.Quantity{} + } else { + yyv13 := &x.CurrentAverageValue + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(yyv13) { + } else if !yym14 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv13) + } else { + z.DecFallback(yyv13, false) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscaler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscaler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg3_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg3_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceMetricSpec(v []MetricSpec, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceMetricSpec(v *[]MetricSpec, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []MetricSpec{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]MetricSpec, yyrl1) + } + } else { + yyv1 = make([]MetricSpec, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = MetricSpec{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, MetricSpec{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = MetricSpec{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, MetricSpec{}) // var yyz1 MetricSpec + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = MetricSpec{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []MetricSpec{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceMetricStatus(v []MetricStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceMetricStatus(v *[]MetricStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []MetricStatus{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]MetricStatus, yyrl1) + } + } else { + yyv1 = make([]MetricStatus, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = MetricStatus{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, MetricStatus{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = MetricStatus{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, MetricStatus{}) // var yyz1 MetricStatus + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = MetricStatus{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []MetricStatus{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceHorizontalPodAutoscalerCondition(v []HorizontalPodAutoscalerCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHorizontalPodAutoscalerCondition(v *[]HorizontalPodAutoscalerCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HorizontalPodAutoscalerCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 88) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HorizontalPodAutoscalerCondition, yyrl1) + } + } else { + yyv1 = make([]HorizontalPodAutoscalerCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscalerCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HorizontalPodAutoscalerCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscalerCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HorizontalPodAutoscalerCondition{}) // var yyz1 HorizontalPodAutoscalerCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscalerCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HorizontalPodAutoscalerCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceHorizontalPodAutoscaler(v []HorizontalPodAutoscaler, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHorizontalPodAutoscaler(v *[]HorizontalPodAutoscaler, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HorizontalPodAutoscaler{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 424) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HorizontalPodAutoscaler, yyrl1) + } + } else { + yyv1 = make([]HorizontalPodAutoscaler, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscaler{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HorizontalPodAutoscaler{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscaler{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HorizontalPodAutoscaler{}) // var yyz1 HorizontalPodAutoscaler + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HorizontalPodAutoscaler{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HorizontalPodAutoscaler{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.go new file mode 100644 index 000000000..bbdf7b09b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types.go @@ -0,0 +1,309 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api/v1" +) + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds" + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"` +} + +// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler. +type HorizontalPodAutoscalerSpec struct { + // scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics + // should be collected, as well as to actually change the replica count. + ScaleTargetRef CrossVersionObjectReference `json:"scaleTargetRef" protobuf:"bytes,1,opt,name=scaleTargetRef"` + // minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. + // It defaults to 1 pod. + // +optional + MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"` + // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + // It cannot be less that minReplicas. + MaxReplicas int32 `json:"maxReplicas" protobuf:"varint,3,opt,name=maxReplicas"` + // metrics contains the specifications for which to use to calculate the + // desired replica count (the maximum replica count across all metrics will + // be used). The desired replica count is calculated multiplying the + // ratio between the target value and the current value by the current + // number of pods. Ergo, metrics used must decrease as the pod count is + // increased, and vice-versa. See the individual metric source types for + // more information about how each type of metric must respond. + // +optional + Metrics []MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"` +} + +// MetricSourceType indicates the type of metric. +type MetricSourceType string + +var ( + // ObjectMetricSourceType is a metric describing a kubernetes object + // (for example, hits-per-second on an Ingress object). + ObjectMetricSourceType MetricSourceType = "Object" + // PodsMetricSourceType is a metric describing each pod in the current scale + // target (for example, transactions-processed-per-second). The values + // will be averaged together before being compared to the target value. + PodsMetricSourceType MetricSourceType = "Pods" + // ResourceMetricSourceType is a resource metric known to Kubernetes, as + // specified in requests and limits, describing each pod in the current + // scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics (the "pods" source). + ResourceMetricSourceType MetricSourceType = "Resource" +) + +// MetricSpec specifies how to scale based on a single metric +// (only `type` and one other matching field should be set at once). +type MetricSpec struct { + // type is the type of metric source. It should match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricSource `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricSource `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricSource `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// ObjectMetricSource indicates how to scale on a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricSource struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // targetValue is the target value of the metric (as a quantity). + TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"` +} + +// PodsMetricSource indicates how to scale on a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +// The values will be averaged together before being compared to the target +// value. +type PodsMetricSource struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // targetAverageValue is the target value of the average of the + // metric across all relevant pods (as a quantity) + TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"` +} + +// ResourceMetricSource indicates how to scale on a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). The values will be averaged +// together before being compared to the target. Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. Only one "target" type +// should be set. +type ResourceMetricSource struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // targetAverageUtilization is the target value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. + // +optional + TargetAverageUtilization *int32 `json:"targetAverageUtilization,omitempty" protobuf:"varint,2,opt,name=targetAverageUtilization"` + // targetAverageValue is the target value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // +optional + TargetAverageValue *resource.Quantity `json:"targetAverageValue,omitempty" protobuf:"bytes,3,opt,name=targetAverageValue"` +} + +// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler. +type HorizontalPodAutoscalerStatus struct { + // observedGeneration is the most recent generation observed by this autoscaler. + // +optional + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, + // used by the autoscaler to control how often the number of pods is changed. + // +optional + LastScaleTime *metav1.Time `json:"lastScaleTime,omitempty" protobuf:"bytes,2,opt,name=lastScaleTime"` + + // currentReplicas is current number of replicas of pods managed by this autoscaler, + // as last seen by the autoscaler. + CurrentReplicas int32 `json:"currentReplicas" protobuf:"varint,3,opt,name=currentReplicas"` + + // desiredReplicas is the desired number of replicas of pods managed by this autoscaler, + // as last calculated by the autoscaler. + DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"` + + // currentMetrics is the last read state of the metrics used by this autoscaler. + CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"` + + // conditions is the set of conditions required for this autoscaler to scale its target, + // and indicates whether or not those conditions are met. + Conditions []HorizontalPodAutoscalerCondition `json:"conditions" protobuf:"bytes,6,rep,name=conditions"` +} + +// HorizontalPodAutoscalerConditionType are the valid conditions of +// a HorizontalPodAutoscaler. +type HorizontalPodAutoscalerConditionType string + +var ( + // ScalingActive indicates that the HPA controller is able to scale if necessary: + // it's correctly configured, can fetch the desired metrics, and isn't disabled. + ScalingActive HorizontalPodAutoscalerConditionType = "ScalingActive" + // AbleToScale indicates a lack of transient issues which prevent scaling from occuring, + // such as being in a backoff window, or being unable to access/update the target scale. + AbleToScale HorizontalPodAutoscalerConditionType = "AbleToScale" + // ScalingLimited indicates that the calculated scale based on metrics would be above or + // below the range for the HPA, and has thus been capped. + ScalingLimited HorizontalPodAutoscalerConditionType = "ScalingLimited" +) + +// HorizontalPodAutoscalerCondition describes the state of +// a HorizontalPodAutoscaler at a certain point. +type HorizontalPodAutoscalerCondition struct { + // type describes the current condition + Type HorizontalPodAutoscalerConditionType `json:"type" protobuf:"bytes,1,name=type"` + // status is the status of the condition (True, False, Unknown) + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,name=status"` + // lastTransitionTime is the last time the condition transitioned from + // one status to another + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // reason is the reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // message is a human-readable explanation containing details about + // the transition + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// MetricStatus describes the last-read state of a single metric. +type MetricStatus struct { + // type is the type of metric source. It will match one of the fields below. + Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"` + + // object refers to a metric describing a single kubernetes object + // (for example, hits-per-second on an Ingress object). + // +optional + Object *ObjectMetricStatus `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"` + // pods refers to a metric describing each pod in the current scale target + // (for example, transactions-processed-per-second). The values will be + // averaged together before being compared to the target value. + // +optional + Pods *PodsMetricStatus `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"` + // resource refers to a resource metric (such as those specified in + // requests and limits) known to Kubernetes describing each pod in the + // current scale target (e.g. CPU or memory). Such metrics are built in to + // Kubernetes, and have special scaling options on top of those available + // to normal per-pod metrics using the "pods" source. + // +optional + Resource *ResourceMetricStatus `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"` +} + +// ObjectMetricStatus indicates the current value of a metric describing a +// kubernetes object (for example, hits-per-second on an Ingress object). +type ObjectMetricStatus struct { + // target is the described Kubernetes object. + Target CrossVersionObjectReference `json:"target" protobuf:"bytes,1,name=target"` + + // metricName is the name of the metric in question. + MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"` + // currentValue is the current value of the metric (as a quantity). + CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"` +} + +// PodsMetricStatus indicates the current value of a metric describing each pod in +// the current scale target (for example, transactions-processed-per-second). +type PodsMetricStatus struct { + // metricName is the name of the metric in question + MetricName string `json:"metricName" protobuf:"bytes,1,name=metricName"` + // currentAverageValue is the current value of the average of the + // metric across all relevant pods (as a quantity) + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"` +} + +// ResourceMetricStatus indicates the current value of a resource metric known to +// Kubernetes, as specified in requests and limits, describing each pod in the +// current scale target (e.g. CPU or memory). Such metrics are built in to +// Kubernetes, and have special scaling options on top of those available to +// normal per-pod metrics using the "pods" source. +type ResourceMetricStatus struct { + // name is the name of the resource in question. + Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"` + // currentAverageUtilization is the current value of the average of the + // resource metric across all relevant pods, represented as a percentage of + // the requested value of the resource for the pods. It will only be + // present if `targetAverageValue` was set in the corresponding metric + // specification. + // +optional + CurrentAverageUtilization *int32 `json:"currentAverageUtilization,omitempty" protobuf:"bytes,2,opt,name=currentAverageUtilization"` + // currentAverageValue is the current value of the average of the + // resource metric across all relevant pods, as a raw value (instead of as + // a percentage of the request), similar to the "pods" metric source type. + // It will always be set, regardless of the corresponding metric specification. + CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,3,name=currentAverageValue"` +} + +// +genclient=true + +// HorizontalPodAutoscaler is the configuration for a horizontal pod +// autoscaler, which automatically manages the replica count of any resource +// implementing the scale subresource based on the metrics specified. +type HorizontalPodAutoscaler struct { + metav1.TypeMeta `json:",inline"` + // metadata is the standard object metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // spec is the specification for the behaviour of the autoscaler. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // status is the current information about the autoscaler. + // +optional + Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + metav1.TypeMeta `json:",inline"` + // metadata is the standard list metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types_swagger_doc_generated.go new file mode 100644 index 000000000..b1c140738 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/types_swagger_doc_generated.go @@ -0,0 +1,189 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_CrossVersionObjectReference = map[string]string{ + "": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", + "kind": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\"", + "name": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "apiVersion": "API version of the referent", +} + +func (CrossVersionObjectReference) SwaggerDoc() map[string]string { + return map_CrossVersionObjectReference +} + +var map_HorizontalPodAutoscaler = map[string]string{ + "": "HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.", + "metadata": "metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "status is the current information about the autoscaler.", +} + +func (HorizontalPodAutoscaler) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscaler +} + +var map_HorizontalPodAutoscalerCondition = map[string]string{ + "": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", + "type": "type describes the current condition", + "status": "status is the status of the condition (True, False, Unknown)", + "lastTransitionTime": "lastTransitionTime is the last time the condition transitioned from one status to another", + "reason": "reason is the reason for the condition's last transition.", + "message": "message is a human-readable explanation containing details about the transition", +} + +func (HorizontalPodAutoscalerCondition) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerCondition +} + +var map_HorizontalPodAutoscalerList = map[string]string{ + "": "HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects.", + "metadata": "metadata is the standard list metadata.", + "items": "items is the list of horizontal pod autoscaler objects.", +} + +func (HorizontalPodAutoscalerList) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerList +} + +var map_HorizontalPodAutoscalerSpec = map[string]string{ + "": "HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.", + "scaleTargetRef": "scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count.", + "minReplicas": "minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.", + "maxReplicas": "maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.", + "metrics": "metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond.", +} + +func (HorizontalPodAutoscalerSpec) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerSpec +} + +var map_HorizontalPodAutoscalerStatus = map[string]string{ + "": "HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.", + "observedGeneration": "observedGeneration is the most recent generation observed by this autoscaler.", + "lastScaleTime": "lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed.", + "currentReplicas": "currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.", + "desiredReplicas": "desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.", + "currentMetrics": "currentMetrics is the last read state of the metrics used by this autoscaler.", + "conditions": "conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.", +} + +func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerStatus +} + +var map_MetricSpec = map[string]string{ + "": "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).", + "type": "type is the type of metric source. It should match one of the fields below.", + "object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", + "pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", +} + +func (MetricSpec) SwaggerDoc() map[string]string { + return map_MetricSpec +} + +var map_MetricStatus = map[string]string{ + "": "MetricStatus describes the last-read state of a single metric.", + "type": "type is the type of metric source. It will match one of the fields below.", + "object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", + "pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", +} + +func (MetricStatus) SwaggerDoc() map[string]string { + return map_MetricStatus +} + +var map_ObjectMetricSource = map[string]string{ + "": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", + "target": "target is the described Kubernetes object.", + "metricName": "metricName is the name of the metric in question.", + "targetValue": "targetValue is the target value of the metric (as a quantity).", +} + +func (ObjectMetricSource) SwaggerDoc() map[string]string { + return map_ObjectMetricSource +} + +var map_ObjectMetricStatus = map[string]string{ + "": "ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", + "target": "target is the described Kubernetes object.", + "metricName": "metricName is the name of the metric in question.", + "currentValue": "currentValue is the current value of the metric (as a quantity).", +} + +func (ObjectMetricStatus) SwaggerDoc() map[string]string { + return map_ObjectMetricStatus +} + +var map_PodsMetricSource = map[string]string{ + "": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.", + "metricName": "metricName is the name of the metric in question", + "targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)", +} + +func (PodsMetricSource) SwaggerDoc() map[string]string { + return map_PodsMetricSource +} + +var map_PodsMetricStatus = map[string]string{ + "": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).", + "metricName": "metricName is the name of the metric in question", + "currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)", +} + +func (PodsMetricStatus) SwaggerDoc() map[string]string { + return map_PodsMetricStatus +} + +var map_ResourceMetricSource = map[string]string{ + "": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.", + "name": "name is the name of the resource in question.", + "targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.", + "targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.", +} + +func (ResourceMetricSource) SwaggerDoc() map[string]string { + return map_ResourceMetricSource +} + +var map_ResourceMetricStatus = map[string]string{ + "": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.", + "name": "name is the name of the resource in question.", + "currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.", + "currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.", +} + +func (ResourceMetricStatus) SwaggerDoc() map[string]string { + return map_ResourceMetricStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..698ff6d1d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.conversion.go @@ -0,0 +1,449 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v2alpha1 + +import ( + resource "k8s.io/apimachinery/pkg/api/resource" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + v1 "k8s.io/client-go/pkg/api/v1" + autoscaling "k8s.io/client-go/pkg/apis/autoscaling" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference, + Convert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference, + Convert_v2alpha1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler, + Convert_autoscaling_HorizontalPodAutoscaler_To_v2alpha1_HorizontalPodAutoscaler, + Convert_v2alpha1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition, + Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v2alpha1_HorizontalPodAutoscalerCondition, + Convert_v2alpha1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList, + Convert_autoscaling_HorizontalPodAutoscalerList_To_v2alpha1_HorizontalPodAutoscalerList, + Convert_v2alpha1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec, + Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v2alpha1_HorizontalPodAutoscalerSpec, + Convert_v2alpha1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus, + Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v2alpha1_HorizontalPodAutoscalerStatus, + Convert_v2alpha1_MetricSpec_To_autoscaling_MetricSpec, + Convert_autoscaling_MetricSpec_To_v2alpha1_MetricSpec, + Convert_v2alpha1_MetricStatus_To_autoscaling_MetricStatus, + Convert_autoscaling_MetricStatus_To_v2alpha1_MetricStatus, + Convert_v2alpha1_ObjectMetricSource_To_autoscaling_ObjectMetricSource, + Convert_autoscaling_ObjectMetricSource_To_v2alpha1_ObjectMetricSource, + Convert_v2alpha1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus, + Convert_autoscaling_ObjectMetricStatus_To_v2alpha1_ObjectMetricStatus, + Convert_v2alpha1_PodsMetricSource_To_autoscaling_PodsMetricSource, + Convert_autoscaling_PodsMetricSource_To_v2alpha1_PodsMetricSource, + Convert_v2alpha1_PodsMetricStatus_To_autoscaling_PodsMetricStatus, + Convert_autoscaling_PodsMetricStatus_To_v2alpha1_PodsMetricStatus, + Convert_v2alpha1_ResourceMetricSource_To_autoscaling_ResourceMetricSource, + Convert_autoscaling_ResourceMetricSource_To_v2alpha1_ResourceMetricSource, + Convert_v2alpha1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus, + Convert_autoscaling_ResourceMetricStatus_To_v2alpha1_ResourceMetricStatus, + ) +} + +func autoConvert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in *CrossVersionObjectReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +// Convert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference is an autogenerated conversion function. +func Convert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in *CrossVersionObjectReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + return autoConvert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in, out, s) +} + +func autoConvert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference(in *autoscaling.CrossVersionObjectReference, out *CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +// Convert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference is an autogenerated conversion function. +func Convert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference(in *autoscaling.CrossVersionObjectReference, out *CrossVersionObjectReference, s conversion.Scope) error { + return autoConvert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference(in, out, s) +} + +func autoConvert_v2alpha1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v2alpha1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v2alpha1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v2alpha1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler is an autogenerated conversion function. +func Convert_v2alpha1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + return autoConvert_v2alpha1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscaler_To_v2alpha1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v2alpha1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v2alpha1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscaler_To_v2alpha1_HorizontalPodAutoscaler is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscaler_To_v2alpha1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscaler_To_v2alpha1_HorizontalPodAutoscaler(in, out, s) +} + +func autoConvert_v2alpha1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(in *HorizontalPodAutoscalerCondition, out *autoscaling.HorizontalPodAutoscalerCondition, s conversion.Scope) error { + out.Type = autoscaling.HorizontalPodAutoscalerConditionType(in.Type) + out.Status = autoscaling.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v2alpha1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition is an autogenerated conversion function. +func Convert_v2alpha1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(in *HorizontalPodAutoscalerCondition, out *autoscaling.HorizontalPodAutoscalerCondition, s conversion.Scope) error { + return autoConvert_v2alpha1_HorizontalPodAutoscalerCondition_To_autoscaling_HorizontalPodAutoscalerCondition(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerCondition_To_v2alpha1_HorizontalPodAutoscalerCondition(in *autoscaling.HorizontalPodAutoscalerCondition, out *HorizontalPodAutoscalerCondition, s conversion.Scope) error { + out.Type = HorizontalPodAutoscalerConditionType(in.Type) + out.Status = v1.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v2alpha1_HorizontalPodAutoscalerCondition is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscalerCondition_To_v2alpha1_HorizontalPodAutoscalerCondition(in *autoscaling.HorizontalPodAutoscalerCondition, out *HorizontalPodAutoscalerCondition, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerCondition_To_v2alpha1_HorizontalPodAutoscalerCondition(in, out, s) +} + +func autoConvert_v2alpha1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]autoscaling.HorizontalPodAutoscaler)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v2alpha1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList is an autogenerated conversion function. +func Convert_v2alpha1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_v2alpha1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v2alpha1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]HorizontalPodAutoscaler, 0) + } else { + out.Items = *(*[]HorizontalPodAutoscaler)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscalerList_To_v2alpha1_HorizontalPodAutoscalerList is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscalerList_To_v2alpha1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v2alpha1_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_v2alpha1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + out.MinReplicas = (*int32)(unsafe.Pointer(in.MinReplicas)) + out.MaxReplicas = in.MaxReplicas + out.Metrics = *(*[]autoscaling.MetricSpec)(unsafe.Pointer(&in.Metrics)) + return nil +} + +// Convert_v2alpha1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec is an autogenerated conversion function. +func Convert_v2alpha1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + return autoConvert_v2alpha1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v2alpha1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + out.MinReplicas = (*int32)(unsafe.Pointer(in.MinReplicas)) + out.MaxReplicas = in.MaxReplicas + out.Metrics = *(*[]MetricSpec)(unsafe.Pointer(&in.Metrics)) + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v2alpha1_HorizontalPodAutoscalerSpec is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v2alpha1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v2alpha1_HorizontalPodAutoscalerSpec(in, out, s) +} + +func autoConvert_v2alpha1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) + out.LastScaleTime = (*meta_v1.Time)(unsafe.Pointer(in.LastScaleTime)) + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + out.CurrentMetrics = *(*[]autoscaling.MetricStatus)(unsafe.Pointer(&in.CurrentMetrics)) + out.Conditions = *(*[]autoscaling.HorizontalPodAutoscalerCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_v2alpha1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus is an autogenerated conversion function. +func Convert_v2alpha1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v2alpha1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = (*int64)(unsafe.Pointer(in.ObservedGeneration)) + out.LastScaleTime = (*meta_v1.Time)(unsafe.Pointer(in.LastScaleTime)) + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + if in.CurrentMetrics == nil { + out.CurrentMetrics = make([]MetricStatus, 0) + } else { + out.CurrentMetrics = *(*[]MetricStatus)(unsafe.Pointer(&in.CurrentMetrics)) + } + if in.Conditions == nil { + out.Conditions = make([]HorizontalPodAutoscalerCondition, 0) + } else { + out.Conditions = *(*[]HorizontalPodAutoscalerCondition)(unsafe.Pointer(&in.Conditions)) + } + return nil +} + +// Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v2alpha1_HorizontalPodAutoscalerStatus is an autogenerated conversion function. +func Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v2alpha1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v2alpha1_HorizontalPodAutoscalerStatus(in, out, s) +} + +func autoConvert_v2alpha1_MetricSpec_To_autoscaling_MetricSpec(in *MetricSpec, out *autoscaling.MetricSpec, s conversion.Scope) error { + out.Type = autoscaling.MetricSourceType(in.Type) + out.Object = (*autoscaling.ObjectMetricSource)(unsafe.Pointer(in.Object)) + out.Pods = (*autoscaling.PodsMetricSource)(unsafe.Pointer(in.Pods)) + out.Resource = (*autoscaling.ResourceMetricSource)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_v2alpha1_MetricSpec_To_autoscaling_MetricSpec is an autogenerated conversion function. +func Convert_v2alpha1_MetricSpec_To_autoscaling_MetricSpec(in *MetricSpec, out *autoscaling.MetricSpec, s conversion.Scope) error { + return autoConvert_v2alpha1_MetricSpec_To_autoscaling_MetricSpec(in, out, s) +} + +func autoConvert_autoscaling_MetricSpec_To_v2alpha1_MetricSpec(in *autoscaling.MetricSpec, out *MetricSpec, s conversion.Scope) error { + out.Type = MetricSourceType(in.Type) + out.Object = (*ObjectMetricSource)(unsafe.Pointer(in.Object)) + out.Pods = (*PodsMetricSource)(unsafe.Pointer(in.Pods)) + out.Resource = (*ResourceMetricSource)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_autoscaling_MetricSpec_To_v2alpha1_MetricSpec is an autogenerated conversion function. +func Convert_autoscaling_MetricSpec_To_v2alpha1_MetricSpec(in *autoscaling.MetricSpec, out *MetricSpec, s conversion.Scope) error { + return autoConvert_autoscaling_MetricSpec_To_v2alpha1_MetricSpec(in, out, s) +} + +func autoConvert_v2alpha1_MetricStatus_To_autoscaling_MetricStatus(in *MetricStatus, out *autoscaling.MetricStatus, s conversion.Scope) error { + out.Type = autoscaling.MetricSourceType(in.Type) + out.Object = (*autoscaling.ObjectMetricStatus)(unsafe.Pointer(in.Object)) + out.Pods = (*autoscaling.PodsMetricStatus)(unsafe.Pointer(in.Pods)) + out.Resource = (*autoscaling.ResourceMetricStatus)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_v2alpha1_MetricStatus_To_autoscaling_MetricStatus is an autogenerated conversion function. +func Convert_v2alpha1_MetricStatus_To_autoscaling_MetricStatus(in *MetricStatus, out *autoscaling.MetricStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_MetricStatus_To_autoscaling_MetricStatus(in, out, s) +} + +func autoConvert_autoscaling_MetricStatus_To_v2alpha1_MetricStatus(in *autoscaling.MetricStatus, out *MetricStatus, s conversion.Scope) error { + out.Type = MetricSourceType(in.Type) + out.Object = (*ObjectMetricStatus)(unsafe.Pointer(in.Object)) + out.Pods = (*PodsMetricStatus)(unsafe.Pointer(in.Pods)) + out.Resource = (*ResourceMetricStatus)(unsafe.Pointer(in.Resource)) + return nil +} + +// Convert_autoscaling_MetricStatus_To_v2alpha1_MetricStatus is an autogenerated conversion function. +func Convert_autoscaling_MetricStatus_To_v2alpha1_MetricStatus(in *autoscaling.MetricStatus, out *MetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_MetricStatus_To_v2alpha1_MetricStatus(in, out, s) +} + +func autoConvert_v2alpha1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in *ObjectMetricSource, out *autoscaling.ObjectMetricSource, s conversion.Scope) error { + if err := Convert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.TargetValue = in.TargetValue + return nil +} + +// Convert_v2alpha1_ObjectMetricSource_To_autoscaling_ObjectMetricSource is an autogenerated conversion function. +func Convert_v2alpha1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in *ObjectMetricSource, out *autoscaling.ObjectMetricSource, s conversion.Scope) error { + return autoConvert_v2alpha1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in, out, s) +} + +func autoConvert_autoscaling_ObjectMetricSource_To_v2alpha1_ObjectMetricSource(in *autoscaling.ObjectMetricSource, out *ObjectMetricSource, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.TargetValue = in.TargetValue + return nil +} + +// Convert_autoscaling_ObjectMetricSource_To_v2alpha1_ObjectMetricSource is an autogenerated conversion function. +func Convert_autoscaling_ObjectMetricSource_To_v2alpha1_ObjectMetricSource(in *autoscaling.ObjectMetricSource, out *ObjectMetricSource, s conversion.Scope) error { + return autoConvert_autoscaling_ObjectMetricSource_To_v2alpha1_ObjectMetricSource(in, out, s) +} + +func autoConvert_v2alpha1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in *ObjectMetricStatus, out *autoscaling.ObjectMetricStatus, s conversion.Scope) error { + if err := Convert_v2alpha1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.CurrentValue = in.CurrentValue + return nil +} + +// Convert_v2alpha1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus is an autogenerated conversion function. +func Convert_v2alpha1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in *ObjectMetricStatus, out *autoscaling.ObjectMetricStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in, out, s) +} + +func autoConvert_autoscaling_ObjectMetricStatus_To_v2alpha1_ObjectMetricStatus(in *autoscaling.ObjectMetricStatus, out *ObjectMetricStatus, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v2alpha1_CrossVersionObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + out.MetricName = in.MetricName + out.CurrentValue = in.CurrentValue + return nil +} + +// Convert_autoscaling_ObjectMetricStatus_To_v2alpha1_ObjectMetricStatus is an autogenerated conversion function. +func Convert_autoscaling_ObjectMetricStatus_To_v2alpha1_ObjectMetricStatus(in *autoscaling.ObjectMetricStatus, out *ObjectMetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_ObjectMetricStatus_To_v2alpha1_ObjectMetricStatus(in, out, s) +} + +func autoConvert_v2alpha1_PodsMetricSource_To_autoscaling_PodsMetricSource(in *PodsMetricSource, out *autoscaling.PodsMetricSource, s conversion.Scope) error { + out.MetricName = in.MetricName + out.TargetAverageValue = in.TargetAverageValue + return nil +} + +// Convert_v2alpha1_PodsMetricSource_To_autoscaling_PodsMetricSource is an autogenerated conversion function. +func Convert_v2alpha1_PodsMetricSource_To_autoscaling_PodsMetricSource(in *PodsMetricSource, out *autoscaling.PodsMetricSource, s conversion.Scope) error { + return autoConvert_v2alpha1_PodsMetricSource_To_autoscaling_PodsMetricSource(in, out, s) +} + +func autoConvert_autoscaling_PodsMetricSource_To_v2alpha1_PodsMetricSource(in *autoscaling.PodsMetricSource, out *PodsMetricSource, s conversion.Scope) error { + out.MetricName = in.MetricName + out.TargetAverageValue = in.TargetAverageValue + return nil +} + +// Convert_autoscaling_PodsMetricSource_To_v2alpha1_PodsMetricSource is an autogenerated conversion function. +func Convert_autoscaling_PodsMetricSource_To_v2alpha1_PodsMetricSource(in *autoscaling.PodsMetricSource, out *PodsMetricSource, s conversion.Scope) error { + return autoConvert_autoscaling_PodsMetricSource_To_v2alpha1_PodsMetricSource(in, out, s) +} + +func autoConvert_v2alpha1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in *PodsMetricStatus, out *autoscaling.PodsMetricStatus, s conversion.Scope) error { + out.MetricName = in.MetricName + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_v2alpha1_PodsMetricStatus_To_autoscaling_PodsMetricStatus is an autogenerated conversion function. +func Convert_v2alpha1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in *PodsMetricStatus, out *autoscaling.PodsMetricStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in, out, s) +} + +func autoConvert_autoscaling_PodsMetricStatus_To_v2alpha1_PodsMetricStatus(in *autoscaling.PodsMetricStatus, out *PodsMetricStatus, s conversion.Scope) error { + out.MetricName = in.MetricName + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_autoscaling_PodsMetricStatus_To_v2alpha1_PodsMetricStatus is an autogenerated conversion function. +func Convert_autoscaling_PodsMetricStatus_To_v2alpha1_PodsMetricStatus(in *autoscaling.PodsMetricStatus, out *PodsMetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_PodsMetricStatus_To_v2alpha1_PodsMetricStatus(in, out, s) +} + +func autoConvert_v2alpha1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error { + out.Name = api.ResourceName(in.Name) + out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization)) + out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) + return nil +} + +// Convert_v2alpha1_ResourceMetricSource_To_autoscaling_ResourceMetricSource is an autogenerated conversion function. +func Convert_v2alpha1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error { + return autoConvert_v2alpha1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in, out, s) +} + +func autoConvert_autoscaling_ResourceMetricSource_To_v2alpha1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *ResourceMetricSource, s conversion.Scope) error { + out.Name = v1.ResourceName(in.Name) + out.TargetAverageUtilization = (*int32)(unsafe.Pointer(in.TargetAverageUtilization)) + out.TargetAverageValue = (*resource.Quantity)(unsafe.Pointer(in.TargetAverageValue)) + return nil +} + +// Convert_autoscaling_ResourceMetricSource_To_v2alpha1_ResourceMetricSource is an autogenerated conversion function. +func Convert_autoscaling_ResourceMetricSource_To_v2alpha1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *ResourceMetricSource, s conversion.Scope) error { + return autoConvert_autoscaling_ResourceMetricSource_To_v2alpha1_ResourceMetricSource(in, out, s) +} + +func autoConvert_v2alpha1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error { + out.Name = api.ResourceName(in.Name) + out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization)) + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_v2alpha1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus is an autogenerated conversion function. +func Convert_v2alpha1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in, out, s) +} + +func autoConvert_autoscaling_ResourceMetricStatus_To_v2alpha1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *ResourceMetricStatus, s conversion.Scope) error { + out.Name = v1.ResourceName(in.Name) + out.CurrentAverageUtilization = (*int32)(unsafe.Pointer(in.CurrentAverageUtilization)) + out.CurrentAverageValue = in.CurrentAverageValue + return nil +} + +// Convert_autoscaling_ResourceMetricStatus_To_v2alpha1_ResourceMetricStatus is an autogenerated conversion function. +func Convert_autoscaling_ResourceMetricStatus_To_v2alpha1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *ResourceMetricStatus, s conversion.Scope) error { + return autoConvert_autoscaling_ResourceMetricStatus_To_v2alpha1_ResourceMetricStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..9a9dd690e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.deepcopy.go @@ -0,0 +1,319 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v2alpha1 + +import ( + resource "k8s.io/apimachinery/pkg/api/resource" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_CrossVersionObjectReference, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_HorizontalPodAutoscaler, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_HorizontalPodAutoscalerCondition, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_HorizontalPodAutoscalerList, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_HorizontalPodAutoscalerSpec, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_HorizontalPodAutoscalerStatus, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_MetricSpec, InType: reflect.TypeOf(&MetricSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_MetricStatus, InType: reflect.TypeOf(&MetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ObjectMetricSource, InType: reflect.TypeOf(&ObjectMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ObjectMetricStatus, InType: reflect.TypeOf(&ObjectMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_PodsMetricSource, InType: reflect.TypeOf(&PodsMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_PodsMetricStatus, InType: reflect.TypeOf(&PodsMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ResourceMetricSource, InType: reflect.TypeOf(&ResourceMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ResourceMetricStatus, InType: reflect.TypeOf(&ResourceMetricStatus{})}, + ) +} + +// DeepCopy_v2alpha1_CrossVersionObjectReference is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_CrossVersionObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CrossVersionObjectReference) + out := out.(*CrossVersionObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_v2alpha1_HorizontalPodAutoscaler is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_HorizontalPodAutoscaler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscaler) + out := out.(*HorizontalPodAutoscaler) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v2alpha1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v2alpha1_HorizontalPodAutoscalerCondition is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_HorizontalPodAutoscalerCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerCondition) + out := out.(*HorizontalPodAutoscalerCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v2alpha1_HorizontalPodAutoscalerList is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_HorizontalPodAutoscalerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerList) + out := out.(*HorizontalPodAutoscalerList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v2alpha1_HorizontalPodAutoscalerSpec is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_HorizontalPodAutoscalerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerSpec) + out := out.(*HorizontalPodAutoscalerSpec) + *out = *in + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + *out = new(int32) + **out = **in + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]MetricSpec, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_MetricSpec(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v2alpha1_HorizontalPodAutoscalerStatus is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_HorizontalPodAutoscalerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerStatus) + out := out.(*HorizontalPodAutoscalerStatus) + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + if in.CurrentMetrics != nil { + in, out := &in.CurrentMetrics, &out.CurrentMetrics + *out = make([]MetricStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_MetricStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]HorizontalPodAutoscalerCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_HorizontalPodAutoscalerCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v2alpha1_MetricSpec is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_MetricSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MetricSpec) + out := out.(*MetricSpec) + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + *out = new(ObjectMetricSource) + if err := DeepCopy_v2alpha1_ObjectMetricSource(*in, *out, c); err != nil { + return err + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + *out = new(PodsMetricSource) + if err := DeepCopy_v2alpha1_PodsMetricSource(*in, *out, c); err != nil { + return err + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(ResourceMetricSource) + if err := DeepCopy_v2alpha1_ResourceMetricSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v2alpha1_MetricStatus is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_MetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MetricStatus) + out := out.(*MetricStatus) + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + *out = new(ObjectMetricStatus) + if err := DeepCopy_v2alpha1_ObjectMetricStatus(*in, *out, c); err != nil { + return err + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + *out = new(PodsMetricStatus) + if err := DeepCopy_v2alpha1_PodsMetricStatus(*in, *out, c); err != nil { + return err + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(ResourceMetricStatus) + if err := DeepCopy_v2alpha1_ResourceMetricStatus(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v2alpha1_ObjectMetricSource is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_ObjectMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMetricSource) + out := out.(*ObjectMetricSource) + *out = *in + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +// DeepCopy_v2alpha1_ObjectMetricStatus is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_ObjectMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMetricStatus) + out := out.(*ObjectMetricStatus) + *out = *in + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +// DeepCopy_v2alpha1_PodsMetricSource is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_PodsMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodsMetricSource) + out := out.(*PodsMetricSource) + *out = *in + out.TargetAverageValue = in.TargetAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_v2alpha1_PodsMetricStatus is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_PodsMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodsMetricStatus) + out := out.(*PodsMetricStatus) + *out = *in + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_v2alpha1_ResourceMetricSource is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_ResourceMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceMetricSource) + out := out.(*ResourceMetricSource) + *out = *in + if in.TargetAverageUtilization != nil { + in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization + *out = new(int32) + **out = **in + } + if in.TargetAverageValue != nil { + in, out := &in.TargetAverageValue, &out.TargetAverageValue + *out = new(resource.Quantity) + **out = (*in).DeepCopy() + } + return nil + } +} + +// DeepCopy_v2alpha1_ResourceMetricStatus is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_ResourceMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceMetricStatus) + out := out.(*ResourceMetricStatus) + *out = *in + if in.CurrentAverageUtilization != nil { + in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization + *out = new(int32) + **out = **in + } + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..eb20be97c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/v2alpha1/zz_generated.defaults.go @@ -0,0 +1,47 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v2alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&HorizontalPodAutoscaler{}, func(obj interface{}) { SetObjectDefaults_HorizontalPodAutoscaler(obj.(*HorizontalPodAutoscaler)) }) + scheme.AddTypeDefaultingFunc(&HorizontalPodAutoscalerList{}, func(obj interface{}) { + SetObjectDefaults_HorizontalPodAutoscalerList(obj.(*HorizontalPodAutoscalerList)) + }) + return nil +} + +func SetObjectDefaults_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler) { + SetDefaults_HorizontalPodAutoscaler(in) +} + +func SetObjectDefaults_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_HorizontalPodAutoscaler(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/autoscaling/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/autoscaling/zz_generated.deepcopy.go new file mode 100644 index 000000000..a15d9b32b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/autoscaling/zz_generated.deepcopy.go @@ -0,0 +1,357 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package autoscaling + +import ( + resource "k8s.io/apimachinery/pkg/api/resource" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_CrossVersionObjectReference, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscaler, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerCondition, InType: reflect.TypeOf(&HorizontalPodAutoscalerCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerList, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerSpec, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerStatus, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_MetricSpec, InType: reflect.TypeOf(&MetricSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_MetricStatus, InType: reflect.TypeOf(&MetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ObjectMetricSource, InType: reflect.TypeOf(&ObjectMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ObjectMetricStatus, InType: reflect.TypeOf(&ObjectMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_PodsMetricSource, InType: reflect.TypeOf(&PodsMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_PodsMetricStatus, InType: reflect.TypeOf(&PodsMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ResourceMetricSource, InType: reflect.TypeOf(&ResourceMetricSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ResourceMetricStatus, InType: reflect.TypeOf(&ResourceMetricStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + ) +} + +// DeepCopy_autoscaling_CrossVersionObjectReference is an autogenerated deepcopy function. +func DeepCopy_autoscaling_CrossVersionObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CrossVersionObjectReference) + out := out.(*CrossVersionObjectReference) + *out = *in + return nil + } +} + +// DeepCopy_autoscaling_HorizontalPodAutoscaler is an autogenerated deepcopy function. +func DeepCopy_autoscaling_HorizontalPodAutoscaler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscaler) + out := out.(*HorizontalPodAutoscaler) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_autoscaling_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_autoscaling_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_autoscaling_HorizontalPodAutoscalerCondition is an autogenerated deepcopy function. +func DeepCopy_autoscaling_HorizontalPodAutoscalerCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerCondition) + out := out.(*HorizontalPodAutoscalerCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_autoscaling_HorizontalPodAutoscalerList is an autogenerated deepcopy function. +func DeepCopy_autoscaling_HorizontalPodAutoscalerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerList) + out := out.(*HorizontalPodAutoscalerList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := DeepCopy_autoscaling_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_autoscaling_HorizontalPodAutoscalerSpec is an autogenerated deepcopy function. +func DeepCopy_autoscaling_HorizontalPodAutoscalerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerSpec) + out := out.(*HorizontalPodAutoscalerSpec) + *out = *in + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + *out = new(int32) + **out = **in + } + if in.Metrics != nil { + in, out := &in.Metrics, &out.Metrics + *out = make([]MetricSpec, len(*in)) + for i := range *in { + if err := DeepCopy_autoscaling_MetricSpec(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_autoscaling_HorizontalPodAutoscalerStatus is an autogenerated deepcopy function. +func DeepCopy_autoscaling_HorizontalPodAutoscalerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerStatus) + out := out.(*HorizontalPodAutoscalerStatus) + *out = *in + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + if in.CurrentMetrics != nil { + in, out := &in.CurrentMetrics, &out.CurrentMetrics + *out = make([]MetricStatus, len(*in)) + for i := range *in { + if err := DeepCopy_autoscaling_MetricStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]HorizontalPodAutoscalerCondition, len(*in)) + for i := range *in { + if err := DeepCopy_autoscaling_HorizontalPodAutoscalerCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_autoscaling_MetricSpec is an autogenerated deepcopy function. +func DeepCopy_autoscaling_MetricSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MetricSpec) + out := out.(*MetricSpec) + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + *out = new(ObjectMetricSource) + if err := DeepCopy_autoscaling_ObjectMetricSource(*in, *out, c); err != nil { + return err + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + *out = new(PodsMetricSource) + if err := DeepCopy_autoscaling_PodsMetricSource(*in, *out, c); err != nil { + return err + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(ResourceMetricSource) + if err := DeepCopy_autoscaling_ResourceMetricSource(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_autoscaling_MetricStatus is an autogenerated deepcopy function. +func DeepCopy_autoscaling_MetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*MetricStatus) + out := out.(*MetricStatus) + *out = *in + if in.Object != nil { + in, out := &in.Object, &out.Object + *out = new(ObjectMetricStatus) + if err := DeepCopy_autoscaling_ObjectMetricStatus(*in, *out, c); err != nil { + return err + } + } + if in.Pods != nil { + in, out := &in.Pods, &out.Pods + *out = new(PodsMetricStatus) + if err := DeepCopy_autoscaling_PodsMetricStatus(*in, *out, c); err != nil { + return err + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(ResourceMetricStatus) + if err := DeepCopy_autoscaling_ResourceMetricStatus(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_autoscaling_ObjectMetricSource is an autogenerated deepcopy function. +func DeepCopy_autoscaling_ObjectMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMetricSource) + out := out.(*ObjectMetricSource) + *out = *in + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +// DeepCopy_autoscaling_ObjectMetricStatus is an autogenerated deepcopy function. +func DeepCopy_autoscaling_ObjectMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMetricStatus) + out := out.(*ObjectMetricStatus) + *out = *in + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +// DeepCopy_autoscaling_PodsMetricSource is an autogenerated deepcopy function. +func DeepCopy_autoscaling_PodsMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodsMetricSource) + out := out.(*PodsMetricSource) + *out = *in + out.TargetAverageValue = in.TargetAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_autoscaling_PodsMetricStatus is an autogenerated deepcopy function. +func DeepCopy_autoscaling_PodsMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodsMetricStatus) + out := out.(*PodsMetricStatus) + *out = *in + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_autoscaling_ResourceMetricSource is an autogenerated deepcopy function. +func DeepCopy_autoscaling_ResourceMetricSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceMetricSource) + out := out.(*ResourceMetricSource) + *out = *in + if in.TargetAverageUtilization != nil { + in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization + *out = new(int32) + **out = **in + } + if in.TargetAverageValue != nil { + in, out := &in.TargetAverageValue, &out.TargetAverageValue + *out = new(resource.Quantity) + **out = (*in).DeepCopy() + } + return nil + } +} + +// DeepCopy_autoscaling_ResourceMetricStatus is an autogenerated deepcopy function. +func DeepCopy_autoscaling_ResourceMetricStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceMetricStatus) + out := out.(*ResourceMetricStatus) + *out = *in + if in.CurrentAverageUtilization != nil { + in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization + *out = new(int32) + **out = **in + } + out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() + return nil + } +} + +// DeepCopy_autoscaling_Scale is an autogenerated deepcopy function. +func DeepCopy_autoscaling_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + return nil + } +} + +// DeepCopy_autoscaling_ScaleSpec is an autogenerated deepcopy function. +func DeepCopy_autoscaling_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + *out = *in + return nil + } +} + +// DeepCopy_autoscaling_ScaleStatus is an autogenerated deepcopy function. +func DeepCopy_autoscaling_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/BUILD b/vendor/k8s.io/client-go/pkg/apis/batch/BUILD new file mode 100644 index 000000000..f0ff3f2ce --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/OWNERS b/vendor/k8s.io/client-go/pkg/apis/batch/OWNERS new file mode 100755 index 000000000..502f90771 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/OWNERS @@ -0,0 +1,19 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- caesarxuchao +- erictune +- sttts +- saad-ali +- ncdc +- timothysc +- soltysh +- dims +- errordeveloper +- mml +- mbohlool +- david-mcmahon +- jianhuiz diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/doc.go b/vendor/k8s.io/client-go/pkg/apis/batch/doc.go new file mode 100644 index 000000000..6fe952226 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package batch diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/batch/install/BUILD new file mode 100644 index 000000000..0902b8071 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/install/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/install/install.go b/vendor/k8s.io/client-go/pkg/apis/batch/install/install.go new file mode 100644 index 000000000..d37f31820 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/install/install.go @@ -0,0 +1,51 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the batch API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/batch" + "k8s.io/client-go/pkg/apis/batch/v1" + "k8s.io/client-go/pkg/apis/batch/v2alpha1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: batch.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version, v2alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/batch", + AddInternalObjectsToScheme: batch.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + v2alpha1.SchemeGroupVersion.Version: v2alpha1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/register.go b/vendor/k8s.io/client-go/pkg/apis/batch/register.go new file mode 100644 index 000000000..4601ca4ec --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/register.go @@ -0,0 +1,57 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package batch + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Job{}, + &JobList{}, + &JobTemplate{}, + &CronJob{}, + &CronJobList{}, + ) + scheme.AddKnownTypeWithName(SchemeGroupVersion.WithKind("ScheduledJob"), &CronJob{}) + scheme.AddKnownTypeWithName(SchemeGroupVersion.WithKind("ScheduledJobList"), &CronJobList{}) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/types.go b/vendor/k8s.io/client-go/pkg/apis/batch/types.go new file mode 100644 index 000000000..d392074d4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/types.go @@ -0,0 +1,285 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package batch + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api" +) + +// +genclient=true + +// Job represents the configuration of a single job. +type Job struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec JobSpec + + // Current status of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status JobStatus +} + +// JobList is a collection of jobs. +type JobList struct { + metav1.TypeMeta + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta + + // items is the list of Jobs. + Items []Job +} + +// JobTemplate describes a template for creating copies of a predefined pod. +type JobTemplate struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Template JobTemplateSpec +} + +// JobTemplateSpec describes the data a Job should have when created from a template +type JobTemplateSpec struct { + // Standard object's metadata of the jobs created from this template. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec JobSpec +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // Specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // +optional + Parallelism *int32 + + // Specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // +optional + Completions *int32 + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + // +optional + ActiveDeadlineSeconds *int64 + + // A label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // +optional + Selector *metav1.LabelSelector + + // manualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // +optional + ManualSelector *bool + + // Describes the pod that will be created when executing a job. + Template api.PodTemplateSpec +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + + // The latest available observations of an object's current state. + // +optional + Conditions []JobCondition + + // Represents time when the job was acknowledged by the job controller. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + // +optional + StartTime *metav1.Time + + // Represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + // +optional + CompletionTime *metav1.Time + + // The number of actively running pods. + // +optional + Active int32 + + // The number of pods which reached phase Succeeded. + // +optional + Succeeded int32 + + // The number of pods which reached phase Failed. + // +optional + Failed int32 +} + +type JobConditionType string + +// These are valid conditions of a job. +const ( + // JobComplete means the job has completed its execution. + JobComplete JobConditionType = "Complete" + // JobFailed means the job has failed its execution. + JobFailed JobConditionType = "Failed" +) + +// JobCondition describes current state of a job. +type JobCondition struct { + // Type of job condition, Complete or Failed. + Type JobConditionType + // Status of the condition, one of True, False, Unknown. + Status api.ConditionStatus + // Last time the condition was checked. + // +optional + LastProbeTime metav1.Time + // Last time the condition transit from one status to another. + // +optional + LastTransitionTime metav1.Time + // (brief) reason for the condition's last transition. + // +optional + Reason string + // Human readable message indicating details about last transition. + // +optional + Message string +} + +// +genclient=true + +// CronJob represents the configuration of a single cron job. +type CronJob struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec CronJobSpec + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status CronJobStatus +} + +// CronJobList is a collection of cron jobs. +type CronJobList struct { + metav1.TypeMeta + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta + + // items is the list of CronJobs. + Items []CronJob +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +type CronJobSpec struct { + + // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + Schedule string + + // Optional deadline in seconds for starting the job if it misses scheduled + // time for any reason. Missed jobs executions will be counted as failed ones. + // +optional + StartingDeadlineSeconds *int64 + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + ConcurrencyPolicy ConcurrencyPolicy + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + Suspend *bool + + // Specifies the job that will be created when executing a CronJob. + JobTemplate JobTemplateSpec + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + SuccessfulJobsHistoryLimit *int32 + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + FailedJobsHistoryLimit *int32 +} + +// ConcurrencyPolicy describes how the job will be handled. +// Only one of the following concurrent policies may be specified. +// If none of the following policies is specified, the default one +// is AllowConcurrent. +type ConcurrencyPolicy string + +const ( + // AllowConcurrent allows CronJobs to run concurrently. + AllowConcurrent ConcurrencyPolicy = "Allow" + + // ForbidConcurrent forbids concurrent runs, skipping next run if previous + // hasn't finished yet. + ForbidConcurrent ConcurrencyPolicy = "Forbid" + + // ReplaceConcurrent cancels currently running job and replaces it with a new one. + ReplaceConcurrent ConcurrencyPolicy = "Replace" +) + +// CronJobStatus represents the current state of a cron job. +type CronJobStatus struct { + // A list of pointers to currently running jobs. + // +optional + Active []api.ObjectReference + + // Information when was the last time the job was successfully scheduled. + // +optional + LastScheduleTime *metav1.Time +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/BUILD b/vendor/k8s.io/client-go/pkg/apis/batch/v1/BUILD new file mode 100644 index 000000000..6de708341 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/BUILD @@ -0,0 +1,40 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/conversion.go new file mode 100644 index 000000000..7f2bc9d15 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/conversion.go @@ -0,0 +1,84 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/batch" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_batch_JobSpec_To_v1_JobSpec, + Convert_v1_JobSpec_To_batch_JobSpec, + ) + if err != nil { + return err + } + + return scheme.AddFieldLabelConversionFunc("batch/v1", "Job", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for Job", label) + } + }, + ) +} + +func Convert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + out.Selector = in.Selector + if in.ManualSelector != nil { + out.ManualSelector = new(bool) + *out.ManualSelector = *in.ManualSelector + } else { + out.ManualSelector = nil + } + + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + out.Selector = in.Selector + if in.ManualSelector != nil { + out.ManualSelector = new(bool) + *out.ManualSelector = *in.ManualSelector + } else { + out.ManualSelector = nil + } + + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/defaults.go new file mode 100644 index 000000000..9c246a594 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/defaults.go @@ -0,0 +1,44 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_Job(obj *Job) { + // For a non-parallel job, you can leave both `.spec.completions` and + // `.spec.parallelism` unset. When both are unset, both are defaulted to 1. + if obj.Spec.Completions == nil && obj.Spec.Parallelism == nil { + obj.Spec.Completions = new(int32) + *obj.Spec.Completions = 1 + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + if obj.Spec.Parallelism == nil { + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + labels := obj.Spec.Template.Labels + if labels != nil && len(obj.Labels) == 0 { + obj.Labels = labels + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/doc.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/doc.go new file mode 100644 index 000000000..c7be42d5a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.pb.go new file mode 100644 index 000000000..bcc6cd9ce --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.pb.go @@ -0,0 +1,1585 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/batch/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/batch/v1/generated.proto + + It has these top-level messages: + Job + JobCondition + JobList + JobSpec + JobStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *Job) Reset() { *m = Job{} } +func (*Job) ProtoMessage() {} +func (*Job) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *JobCondition) Reset() { *m = JobCondition{} } +func (*JobCondition) ProtoMessage() {} +func (*JobCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *JobList) Reset() { *m = JobList{} } +func (*JobList) ProtoMessage() {} +func (*JobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *JobSpec) Reset() { *m = JobSpec{} } +func (*JobSpec) ProtoMessage() {} +func (*JobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *JobStatus) Reset() { *m = JobStatus{} } +func (*JobStatus) ProtoMessage() {} +func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func init() { + proto.RegisterType((*Job)(nil), "k8s.io.client-go.pkg.apis.batch.v1.Job") + proto.RegisterType((*JobCondition)(nil), "k8s.io.client-go.pkg.apis.batch.v1.JobCondition") + proto.RegisterType((*JobList)(nil), "k8s.io.client-go.pkg.apis.batch.v1.JobList") + proto.RegisterType((*JobSpec)(nil), "k8s.io.client-go.pkg.apis.batch.v1.JobSpec") + proto.RegisterType((*JobStatus)(nil), "k8s.io.client-go.pkg.apis.batch.v1.JobStatus") +} +func (m *Job) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Job) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *JobCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JobCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastProbeTime.Size())) + n4, err := m.LastProbeTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n5, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *JobList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JobList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *JobSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JobSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Parallelism != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Parallelism)) + } + if m.Completions != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n7, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.ManualSelector != nil { + dAtA[i] = 0x28 + i++ + if *m.ManualSelector { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n8, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + +func (m *JobStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JobStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.StartTime != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.StartTime.Size())) + n9, err := m.StartTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.CompletionTime != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CompletionTime.Size())) + n10, err := m.CompletionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Active)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Succeeded)) + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Failed)) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Job) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastProbeTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *JobSpec) Size() (n int) { + var l int + _ = l + if m.Parallelism != nil { + n += 1 + sovGenerated(uint64(*m.Parallelism)) + } + if m.Completions != nil { + n += 1 + sovGenerated(uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ManualSelector != nil { + n += 2 + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobStatus) Size() (n int) { + var l int + _ = l + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.StartTime != nil { + l = m.StartTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CompletionTime != nil { + l = m.CompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.Active)) + n += 1 + sovGenerated(uint64(m.Succeeded)) + n += 1 + sovGenerated(uint64(m.Failed)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Job) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Job{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "JobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "JobStatus", "JobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *JobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Job", "Job", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobSpec{`, + `Parallelism:` + valueToStringGenerated(this.Parallelism) + `,`, + `Completions:` + valueToStringGenerated(this.Completions) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `ManualSelector:` + valueToStringGenerated(this.ManualSelector) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "JobCondition", "JobCondition", 1), `&`, ``, 1) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `CompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.CompletionTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `Active:` + fmt.Sprintf("%v", this.Active) + `,`, + `Succeeded:` + fmt.Sprintf("%v", this.Succeeded) + `,`, + `Failed:` + fmt.Sprintf("%v", this.Failed) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *Job) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Job: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Job: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = JobConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastProbeTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastProbeTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Job{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Parallelism", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Parallelism = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Completions", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Completions = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ActiveDeadlineSeconds = &v + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ManualSelector", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ManualSelector = &b + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, JobCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartTime == nil { + m.StartTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.StartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CompletionTime == nil { + m.CompletionTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.CompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + m.Active = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Active |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Succeeded", wireType) + } + m.Succeeded = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Succeeded |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Failed", wireType) + } + m.Failed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Failed |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/batch/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 873 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xdd, 0x6e, 0xe3, 0x44, + 0x14, 0xce, 0x4f, 0xd3, 0x26, 0x93, 0xb6, 0xbb, 0x8c, 0x54, 0x29, 0xf4, 0xc2, 0x59, 0x05, 0x09, + 0x15, 0xb4, 0x6b, 0x93, 0x76, 0x85, 0x10, 0x17, 0x48, 0xb8, 0x08, 0x89, 0xaa, 0x65, 0xab, 0x49, + 0x05, 0x12, 0x3f, 0x12, 0x63, 0xfb, 0x34, 0x1d, 0x6a, 0x7b, 0x2c, 0xcf, 0x24, 0x52, 0xef, 0x78, + 0x03, 0x78, 0x18, 0x84, 0x78, 0x84, 0x5e, 0xf6, 0x72, 0xaf, 0x22, 0x6a, 0xde, 0x62, 0xaf, 0xd0, + 0x8c, 0x27, 0xb6, 0xb3, 0x49, 0x21, 0xe5, 0xce, 0x3e, 0xf3, 0x7d, 0xdf, 0x39, 0x73, 0xce, 0x77, + 0x06, 0x1d, 0x5d, 0x7f, 0x22, 0x6c, 0xc6, 0x9d, 0xeb, 0x89, 0x07, 0x69, 0x0c, 0x12, 0x84, 0x93, + 0x5c, 0x8f, 0x1d, 0x9a, 0x30, 0xe1, 0x78, 0x54, 0xfa, 0x57, 0xce, 0x74, 0xe8, 0x8c, 0x21, 0x86, + 0x94, 0x4a, 0x08, 0xec, 0x24, 0xe5, 0x92, 0xe3, 0xf7, 0x72, 0x92, 0x5d, 0x92, 0xec, 0xe4, 0x7a, + 0x6c, 0x2b, 0x92, 0xad, 0x49, 0xf6, 0x74, 0xb8, 0xff, 0x62, 0xcc, 0xe4, 0xd5, 0xc4, 0xb3, 0x7d, + 0x1e, 0x39, 0x63, 0x3e, 0xe6, 0x8e, 0xe6, 0x7a, 0x93, 0x4b, 0xfd, 0xa7, 0x7f, 0xf4, 0x57, 0xae, + 0xb9, 0xff, 0xd2, 0x14, 0x42, 0x13, 0x16, 0x51, 0xff, 0x8a, 0xc5, 0x90, 0xde, 0x94, 0xa5, 0x44, + 0x20, 0xe9, 0x8a, 0x4a, 0xf6, 0x9d, 0x87, 0x58, 0xe9, 0x24, 0x96, 0x2c, 0x82, 0x25, 0xc2, 0xc7, + 0xff, 0x45, 0x10, 0xfe, 0x15, 0x44, 0x74, 0x89, 0x77, 0xf4, 0x10, 0x6f, 0x22, 0x59, 0xe8, 0xb0, + 0x58, 0x0a, 0x99, 0x2e, 0x91, 0x9e, 0x3f, 0xd8, 0xdc, 0x15, 0x77, 0x19, 0xfc, 0xda, 0x40, 0xcd, + 0x13, 0xee, 0xe1, 0x9f, 0x50, 0x5b, 0x5d, 0x37, 0xa0, 0x92, 0xf6, 0xea, 0xcf, 0xea, 0x07, 0xdd, + 0xc3, 0x8f, 0x6c, 0xd3, 0xf0, 0x6a, 0xf6, 0xb2, 0xe5, 0x0a, 0x6d, 0x4f, 0x87, 0xf6, 0x2b, 0xef, + 0x67, 0xf0, 0xe5, 0x19, 0x48, 0xea, 0xe2, 0xdb, 0x59, 0xbf, 0x96, 0xcd, 0xfa, 0xa8, 0x8c, 0x91, + 0x42, 0x15, 0x7f, 0x8d, 0x36, 0x44, 0x02, 0x7e, 0xaf, 0xa1, 0xd5, 0x9f, 0xdb, 0x6b, 0x8c, 0xd3, + 0x3e, 0xe1, 0xde, 0x28, 0x01, 0xdf, 0xdd, 0x36, 0xca, 0x1b, 0xea, 0x8f, 0x68, 0x1d, 0xfc, 0x0d, + 0xda, 0x14, 0x92, 0xca, 0x89, 0xe8, 0x35, 0xb5, 0xa2, 0xbd, 0xb6, 0xa2, 0x66, 0xb9, 0xbb, 0x46, + 0x73, 0x33, 0xff, 0x27, 0x46, 0x6d, 0x70, 0xd7, 0x44, 0xdb, 0x27, 0xdc, 0x3b, 0xe6, 0x71, 0xc0, + 0x24, 0xe3, 0x31, 0x7e, 0x89, 0x36, 0xe4, 0x4d, 0x02, 0xba, 0x2d, 0x1d, 0xf7, 0xd9, 0xbc, 0x94, + 0x8b, 0x9b, 0x04, 0xde, 0xcc, 0xfa, 0x4f, 0xab, 0x58, 0x15, 0x23, 0x1a, 0x5d, 0x29, 0xaf, 0xa1, + 0x79, 0x9f, 0x2d, 0xa6, 0x7b, 0x33, 0xeb, 0xff, 0xeb, 0xa0, 0xec, 0x42, 0x73, 0xb1, 0x3c, 0x3c, + 0x46, 0x3b, 0x21, 0x15, 0xf2, 0x3c, 0xe5, 0x1e, 0x5c, 0xb0, 0x08, 0xcc, 0xed, 0x3f, 0x5c, 0x6f, + 0x5a, 0x8a, 0xe1, 0xee, 0x99, 0x52, 0x76, 0x4e, 0xab, 0x42, 0x64, 0x51, 0x17, 0x4f, 0x11, 0x56, + 0x81, 0x8b, 0x94, 0xc6, 0x22, 0xbf, 0x9c, 0xca, 0xb6, 0xf1, 0xe8, 0x6c, 0xfb, 0x26, 0x1b, 0x3e, + 0x5d, 0x52, 0x23, 0x2b, 0x32, 0xe0, 0xf7, 0xd1, 0x66, 0x0a, 0x54, 0xf0, 0xb8, 0xd7, 0xd2, 0x8d, + 0x2b, 0xe6, 0x44, 0x74, 0x94, 0x98, 0x53, 0xfc, 0x01, 0xda, 0x8a, 0x40, 0x08, 0x3a, 0x86, 0xde, + 0xa6, 0x06, 0x3e, 0x31, 0xc0, 0xad, 0xb3, 0x3c, 0x4c, 0xe6, 0xe7, 0x83, 0x3f, 0xea, 0x68, 0xeb, + 0x84, 0x7b, 0xa7, 0x4c, 0x48, 0xfc, 0xc3, 0x92, 0xd1, 0xed, 0xf5, 0x2e, 0xa3, 0xd8, 0xda, 0xe6, + 0x4f, 0x4d, 0x9e, 0xf6, 0x3c, 0x52, 0x31, 0xf9, 0x19, 0x6a, 0x31, 0x09, 0x91, 0x1a, 0x7a, 0xf3, + 0xa0, 0x7b, 0x78, 0xb0, 0xae, 0x27, 0xdd, 0x1d, 0x23, 0xda, 0xfa, 0x4a, 0xd1, 0x49, 0xae, 0x32, + 0xf8, 0xb3, 0xa9, 0x0b, 0x57, 0xae, 0xc7, 0x43, 0xd4, 0x4d, 0x68, 0x4a, 0xc3, 0x10, 0x42, 0x26, + 0x22, 0x5d, 0x7b, 0xcb, 0x7d, 0x92, 0xcd, 0xfa, 0xdd, 0xf3, 0x32, 0x4c, 0xaa, 0x18, 0x45, 0xf1, + 0x79, 0x94, 0x84, 0xa0, 0x9a, 0x9b, 0x1b, 0xd1, 0x50, 0x8e, 0xcb, 0x30, 0xa9, 0x62, 0xf0, 0x2b, + 0xb4, 0x47, 0x7d, 0xc9, 0xa6, 0xf0, 0x05, 0xd0, 0x20, 0x64, 0x31, 0x8c, 0xc0, 0xe7, 0x71, 0x90, + 0x2f, 0x59, 0xd3, 0x7d, 0x37, 0x9b, 0xf5, 0xf7, 0x3e, 0x5f, 0x05, 0x20, 0xab, 0x79, 0xf8, 0x47, + 0xd4, 0x16, 0x10, 0x82, 0x2f, 0x79, 0x6a, 0xcc, 0x73, 0xb4, 0x66, 0xbf, 0xa9, 0x07, 0xe1, 0xc8, + 0x50, 0xdd, 0x6d, 0xd5, 0xf0, 0xf9, 0x1f, 0x29, 0x24, 0xf1, 0xa7, 0x68, 0x37, 0xa2, 0xf1, 0x84, + 0x16, 0x48, 0xed, 0x9a, 0xb6, 0x8b, 0xb3, 0x59, 0x7f, 0xf7, 0x6c, 0xe1, 0x84, 0xbc, 0x85, 0xc4, + 0xdf, 0xa3, 0xb6, 0x84, 0x28, 0x09, 0xa9, 0xcc, 0x2d, 0xd4, 0x3d, 0x7c, 0xf1, 0xf0, 0xbc, 0x54, + 0x49, 0xe7, 0x3c, 0xb8, 0x30, 0x04, 0xfd, 0x2c, 0x15, 0x4e, 0x98, 0x47, 0x49, 0x21, 0x38, 0xf8, + 0xbd, 0x89, 0x3a, 0xc5, 0x63, 0x83, 0x01, 0x21, 0x7f, 0xbe, 0xd0, 0xa2, 0x57, 0xd7, 0xe6, 0x18, + 0xae, 0x6b, 0x8e, 0xe2, 0x29, 0x28, 0x5f, 0xd8, 0x22, 0x24, 0x48, 0x45, 0x18, 0x7f, 0x8b, 0x3a, + 0x42, 0xd2, 0x54, 0xea, 0x55, 0x6d, 0x3c, 0x7a, 0x55, 0x77, 0xb2, 0x59, 0xbf, 0x33, 0x9a, 0x0b, + 0x90, 0x52, 0x0b, 0x5f, 0xa2, 0xdd, 0xd2, 0x25, 0xff, 0xf3, 0xd9, 0xd1, 0x23, 0x39, 0x5e, 0x50, + 0x21, 0x6f, 0xa9, 0xaa, 0xe5, 0xcf, 0x6d, 0xa4, 0xbd, 0xd2, 0x2a, 0x97, 0x3f, 0xf7, 0x1c, 0x31, + 0xa7, 0xd8, 0x41, 0x1d, 0x31, 0xf1, 0x7d, 0x80, 0x00, 0x02, 0x3d, 0xf1, 0x96, 0xfb, 0x8e, 0x81, + 0x76, 0x46, 0xf3, 0x03, 0x52, 0x62, 0x94, 0xf0, 0x25, 0x65, 0x21, 0x04, 0x7a, 0xd2, 0x15, 0xe1, + 0x2f, 0x75, 0x94, 0x98, 0x53, 0xf7, 0xe0, 0xf6, 0xde, 0xaa, 0xdd, 0xdd, 0x5b, 0xb5, 0xd7, 0xf7, + 0x56, 0xed, 0x97, 0xcc, 0xaa, 0xdf, 0x66, 0x56, 0xfd, 0x2e, 0xb3, 0xea, 0xaf, 0x33, 0xab, 0xfe, + 0x57, 0x66, 0xd5, 0x7f, 0xfb, 0xdb, 0xaa, 0x7d, 0xd7, 0x98, 0x0e, 0xff, 0x09, 0x00, 0x00, 0xff, + 0xff, 0xe1, 0x7e, 0xeb, 0x67, 0xc5, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.proto new file mode 100644 index 000000000..946988550 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/generated.proto @@ -0,0 +1,168 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.batch.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// Job represents the configuration of a single job. +message Job { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional JobSpec spec = 2; + + // Current status of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional JobStatus status = 3; +} + +// JobCondition describes current state of a job. +message JobCondition { + // Type of job condition, Complete or Failed. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // Last time the condition was checked. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3; + + // Last time the condition transit from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + // +optional + optional string reason = 5; + + // Human readable message indicating details about last transition. + // +optional + optional string message = 6; +} + +// JobList is a collection of jobs. +message JobList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of Jobs. + repeated Job items = 2; +} + +// JobSpec describes how the job execution will look like. +message JobSpec { + // Specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + optional int32 parallelism = 1; + + // Specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + optional int32 completions = 2; + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + // +optional + optional int64 activeDeadlineSeconds = 3; + + // A label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4; + + // manualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // More info: https://git.k8s.io/community/contributors/design-proposals/selector-generation.md + // +optional + optional bool manualSelector = 5; + + // Describes the pod that will be created when executing a job. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + optional k8s.io.client_go.pkg.api.v1.PodTemplateSpec template = 6; +} + +// JobStatus represents the current state of a Job. +message JobStatus { + // The latest available observations of an object's current state. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated JobCondition conditions = 1; + + // Represents time when the job was acknowledged by the job controller. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 2; + + // Represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time completionTime = 3; + + // The number of actively running pods. + // +optional + optional int32 active = 4; + + // The number of pods which reached phase Succeeded. + // +optional + optional int32 succeeded = 5; + + // The number of pods which reached phase Failed. + // +optional + optional int32 failed = 6; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/register.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/register.go new file mode 100644 index 000000000..9256e829a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/register.go @@ -0,0 +1,59 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Job{}, + &JobList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/types.generated.go new file mode 100644 index 000000000..a7693119c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/types.generated.go @@ -0,0 +1,2681 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg4_resource "k8s.io/apimachinery/pkg/api/resource" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + pkg5_intstr "k8s.io/apimachinery/pkg/util/intstr" + pkg3_v1 "k8s.io/client-go/pkg/api/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg4_resource.Quantity + var v1 pkg1_v1.TypeMeta + var v2 pkg2_types.UID + var v3 pkg5_intstr.IntOrString + var v4 pkg3_v1.PodTemplateSpec + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *Job) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Job) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Job) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Job) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceJob((*[]Job)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceJob((*[]Job)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Parallelism != nil + yyq2[1] = x.Completions != nil + yyq2[2] = x.ActiveDeadlineSeconds != nil + yyq2[3] = x.Selector != nil + yyq2[4] = x.ManualSelector != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy4 := *x.Parallelism + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parallelism")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy6 := *x.Parallelism + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Completions == nil { + r.EncodeNil() + } else { + yy9 := *x.Completions + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Completions == nil { + r.EncodeNil() + } else { + yy11 := *x.Completions + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + r.EncodeInt(int64(yy11)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy14 := *x.ActiveDeadlineSeconds + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(yy14)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy16 := *x.ActiveDeadlineSeconds + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(yy16)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy22 := *x.ManualSelector + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeBool(bool(yy22)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("manualSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy24 := *x.ManualSelector + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeBool(bool(yy24)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy27 := &x.Template + yy27.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy29 := &x.Template + yy29.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "parallelism": + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + case "completions": + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym11 := z.DecBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "manualSelector": + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg3_v1.PodTemplateSpec{} + } else { + yyv14 := &x.Template + yyv14.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj15 int + var yyb15 bool + var yyhl15 bool = l >= 0 + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym25 := z.DecBinary() + _ = yym25 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg3_v1.PodTemplateSpec{} + } else { + yyv26 := &x.Template + yyv26.CodecDecodeSelf(d) + } + for { + yyj15++ + if yyhl15 { + yyb15 = yyj15 > l + } else { + yyb15 = r.CheckBreak() + } + if yyb15 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj15-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Conditions) != 0 + yyq2[1] = x.StartTime != nil + yyq2[2] = x.CompletionTime != nil + yyq2[3] = x.Active != 0 + yyq2[4] = x.Succeeded != 0 + yyq2[5] = x.Failed != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym7 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym8 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym10 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym11 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("succeeded")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv4 := &x.Conditions + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv4), d) + } + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_v1.Time) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym7 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "completionTime": + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_v1.Time) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym9 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + case "active": + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + yyv10 := &x.Active + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "succeeded": + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + yyv12 := &x.Succeeded + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(yyv12)) = int32(r.DecodeInt(32)) + } + } + case "failed": + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + yyv14 := &x.Failed + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv17 := &x.Conditions + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv17), d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_v1.Time) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym20 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_v1.Time) + } + yym22 := z.DecBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym22 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym22 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + yyv23 := &x.Active + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + yyv25 := &x.Succeeded + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + yyv27 := &x.Failed + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x JobConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *JobConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *JobCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = true + yyq2[4] = x.Reason != "" + yyq2[5] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf7 := &x.Status + yysf7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf8 := &x.Status + yysf8.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastProbeTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastProbeTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.LastTransitionTime + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.LastTransitionTime + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(yy17) { + } else if yym18 { + z.EncBinaryMarshal(yy17) + } else if !yym18 && z.IsJSONHandle() { + z.EncJSONMarshal(yy17) + } else { + z.EncFallback(yy17) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_v1.Time{} + } else { + yyv6 := &x.LastProbeTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv8 := &x.LastTransitionTime + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if yym9 { + z.DecBinaryUnmarshal(yyv8) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv10 := &x.Reason + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv12 := &x.Message + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv15 := &x.Type + yyv15.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv16 := &x.Status + yyv16.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_v1.Time{} + } else { + yyv17 := &x.LastProbeTime + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv19 := &x.LastTransitionTime + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if yym20 { + z.DecBinaryUnmarshal(yyv19) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv21 := &x.Reason + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv23 := &x.Message + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceJob(v []Job, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Job{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 920) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Job, yyrl1) + } + } else { + yyv1 = make([]Job, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Job{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Job{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Job{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Job{}) // var yyz1 Job + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Job{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Job{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceJobCondition(v []JobCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJobCondition(v *[]JobCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []JobCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]JobCondition, yyrl1) + } + } else { + yyv1 = make([]JobCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = JobCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, JobCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = JobCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, JobCondition{}) // var yyz1 JobCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = JobCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []JobCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/types.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/types.go new file mode 100644 index 000000000..bcc8c2089 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/types.go @@ -0,0 +1,168 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api/v1" +) + +// +genclient=true + +// Job represents the configuration of a single job. +type Job struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Current status of a job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// JobList is a collection of jobs. +type JobList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of Jobs. + Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // Specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + Parallelism *int32 `json:"parallelism,omitempty" protobuf:"varint,1,opt,name=parallelism"` + + // Specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + Completions *int32 `json:"completions,omitempty" protobuf:"varint,2,opt,name=completions"` + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + // +optional + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"` + + // A label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + + // manualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // More info: https://git.k8s.io/community/contributors/design-proposals/selector-generation.md + // +optional + ManualSelector *bool `json:"manualSelector,omitempty" protobuf:"varint,5,opt,name=manualSelector"` + + // Describes the pod that will be created when executing a job. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,6,opt,name=template"` +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + // The latest available observations of an object's current state. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + + // Represents time when the job was acknowledged by the job controller. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + // +optional + StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"` + + // Represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + // +optional + CompletionTime *metav1.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"` + + // The number of actively running pods. + // +optional + Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"` + + // The number of pods which reached phase Succeeded. + // +optional + Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"` + + // The number of pods which reached phase Failed. + // +optional + Failed int32 `json:"failed,omitempty" protobuf:"varint,6,opt,name=failed"` +} + +type JobConditionType string + +// These are valid conditions of a job. +const ( + // JobComplete means the job has completed its execution. + JobComplete JobConditionType = "Complete" + // JobFailed means the job has failed its execution. + JobFailed JobConditionType = "Failed" +) + +// JobCondition describes current state of a job. +type JobCondition struct { + // Type of job condition, Complete or Failed. + Type JobConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=JobConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // Last time the condition was checked. + // +optional + LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transit from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..da4985192 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/types_swagger_doc_generated.go @@ -0,0 +1,93 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_Job = map[string]string{ + "": "Job represents the configuration of a single job.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Job) SwaggerDoc() map[string]string { + return map_Job +} + +var map_JobCondition = map[string]string{ + "": "JobCondition describes current state of a job.", + "type": "Type of job condition, Complete or Failed.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastProbeTime": "Last time the condition was checked.", + "lastTransitionTime": "Last time the condition transit from one status to another.", + "reason": "(brief) reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (JobCondition) SwaggerDoc() map[string]string { + return map_JobCondition +} + +var map_JobList = map[string]string{ + "": "JobList is a collection of jobs.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "items is the list of Jobs.", +} + +func (JobList) SwaggerDoc() map[string]string { + return map_JobList +} + +var map_JobSpec = map[string]string{ + "": "JobSpec describes how the job execution will look like.", + "parallelism": "Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", + "completions": "Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", + "activeDeadlineSeconds": "Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer", + "selector": "A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "manualSelector": "manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://git.k8s.io/community/contributors/design-proposals/selector-generation.md", + "template": "Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", +} + +func (JobSpec) SwaggerDoc() map[string]string { + return map_JobSpec +} + +var map_JobStatus = map[string]string{ + "": "JobStatus represents the current state of a Job.", + "conditions": "The latest available observations of an object's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", + "startTime": "Represents time when the job was acknowledged by the job controller. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "completionTime": "Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "active": "The number of actively running pods.", + "succeeded": "The number of pods which reached phase Succeeded.", + "failed": "The number of pods which reached phase Failed.", +} + +func (JobStatus) SwaggerDoc() map[string]string { + return map_JobStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.conversion.go new file mode 100644 index 000000000..3e3e61dce --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.conversion.go @@ -0,0 +1,210 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + api_v1 "k8s.io/client-go/pkg/api/v1" + batch "k8s.io/client-go/pkg/apis/batch" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_Job_To_batch_Job, + Convert_batch_Job_To_v1_Job, + Convert_v1_JobCondition_To_batch_JobCondition, + Convert_batch_JobCondition_To_v1_JobCondition, + Convert_v1_JobList_To_batch_JobList, + Convert_batch_JobList_To_v1_JobList, + Convert_v1_JobSpec_To_batch_JobSpec, + Convert_batch_JobSpec_To_v1_JobSpec, + Convert_v1_JobStatus_To_batch_JobStatus, + Convert_batch_JobStatus_To_v1_JobStatus, + ) +} + +func autoConvert_v1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_JobStatus_To_batch_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Job_To_batch_Job is an autogenerated conversion function. +func Convert_v1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + return autoConvert_v1_Job_To_batch_Job(in, out, s) +} + +func autoConvert_batch_Job_To_v1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_batch_JobStatus_To_v1_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_batch_Job_To_v1_Job is an autogenerated conversion function. +func Convert_batch_Job_To_v1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + return autoConvert_batch_Job_To_v1_Job(in, out, s) +} + +func autoConvert_v1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + out.Type = batch.JobConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.LastProbeTime = in.LastProbeTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1_JobCondition_To_batch_JobCondition is an autogenerated conversion function. +func Convert_v1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + return autoConvert_v1_JobCondition_To_batch_JobCondition(in, out, s) +} + +func autoConvert_batch_JobCondition_To_v1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + out.Type = JobConditionType(in.Type) + out.Status = api_v1.ConditionStatus(in.Status) + out.LastProbeTime = in.LastProbeTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_batch_JobCondition_To_v1_JobCondition is an autogenerated conversion function. +func Convert_batch_JobCondition_To_v1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + return autoConvert_batch_JobCondition_To_v1_JobCondition(in, out, s) +} + +func autoConvert_v1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]batch.Job, len(*in)) + for i := range *in { + if err := Convert_v1_Job_To_batch_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1_JobList_To_batch_JobList is an autogenerated conversion function. +func Convert_v1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + return autoConvert_v1_JobList_To_batch_JobList(in, out, s) +} + +func autoConvert_batch_JobList_To_v1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := Convert_batch_Job_To_v1_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]Job, 0) + } + return nil +} + +// Convert_batch_JobList_To_v1_JobList is an autogenerated conversion function. +func Convert_batch_JobList_To_v1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + return autoConvert_batch_JobList_To_v1_JobList(in, out, s) +} + +func autoConvert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = (*int32)(unsafe.Pointer(in.Parallelism)) + out.Completions = (*int32)(unsafe.Pointer(in.Completions)) + out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) + out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.ManualSelector = (*bool)(unsafe.Pointer(in.ManualSelector)) + if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = (*int32)(unsafe.Pointer(in.Parallelism)) + out.Completions = (*int32)(unsafe.Pointer(in.Completions)) + out.ActiveDeadlineSeconds = (*int64)(unsafe.Pointer(in.ActiveDeadlineSeconds)) + out.Selector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.ManualSelector = (*bool)(unsafe.Pointer(in.ManualSelector)) + if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + out.Conditions = *(*[]batch.JobCondition)(unsafe.Pointer(&in.Conditions)) + out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + out.CompletionTime = (*meta_v1.Time)(unsafe.Pointer(in.CompletionTime)) + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +// Convert_v1_JobStatus_To_batch_JobStatus is an autogenerated conversion function. +func Convert_v1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + return autoConvert_v1_JobStatus_To_batch_JobStatus(in, out, s) +} + +func autoConvert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + out.Conditions = *(*[]JobCondition)(unsafe.Pointer(&in.Conditions)) + out.StartTime = (*meta_v1.Time)(unsafe.Pointer(in.StartTime)) + out.CompletionTime = (*meta_v1.Time)(unsafe.Pointer(in.CompletionTime)) + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +// Convert_batch_JobStatus_To_v1_JobStatus is an autogenerated conversion function. +func Convert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + return autoConvert_batch_JobStatus_To_v1_JobStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..22bf94587 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.deepcopy.go @@ -0,0 +1,167 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api_v1 "k8s.io/client-go/pkg/api/v1" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Job, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobCondition, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobList, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobSpec, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobStatus, InType: reflect.TypeOf(&JobStatus{})}, + ) +} + +// DeepCopy_v1_Job is an autogenerated deepcopy function. +func DeepCopy_v1_Job(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Job) + out := out.(*Job) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_JobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_JobCondition is an autogenerated deepcopy function. +func DeepCopy_v1_JobCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobCondition) + out := out.(*JobCondition) + *out = *in + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1_JobList is an autogenerated deepcopy function. +func DeepCopy_v1_JobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobList) + out := out.(*JobList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Job(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_JobSpec is an autogenerated deepcopy function. +func DeepCopy_v1_JobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobSpec) + out := out.(*JobSpec) + *out = *in + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + *out = new(int32) + **out = **in + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.LabelSelector) + } + } + if in.ManualSelector != nil { + in, out := &in.ManualSelector, &out.ManualSelector + *out = new(bool) + **out = **in + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_JobStatus is an autogenerated deepcopy function. +func DeepCopy_v1_JobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobStatus) + out := out.(*JobStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_JobCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(meta_v1.Time) + **out = (*in).DeepCopy() + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + *out = new(meta_v1.Time) + **out = (*in).DeepCopy() + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.defaults.go new file mode 100644 index 000000000..417024f62 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v1/zz_generated.defaults.go @@ -0,0 +1,176 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + api_v1 "k8s.io/client-go/pkg/api/v1" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&Job{}, func(obj interface{}) { SetObjectDefaults_Job(obj.(*Job)) }) + scheme.AddTypeDefaultingFunc(&JobList{}, func(obj interface{}) { SetObjectDefaults_JobList(obj.(*JobList)) }) + return nil +} + +func SetObjectDefaults_Job(in *Job) { + SetDefaults_Job(in) + api_v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + api_v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + api_v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + api_v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + api_v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + api_v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + api_v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + api_v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + api_v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + api_v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + api_v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + api_v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + api_v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + api_v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + api_v1.SetDefaults_ResourceList(&a.Resources.Limits) + api_v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + api_v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + api_v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + api_v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + api_v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + api_v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + api_v1.SetDefaults_ResourceList(&a.Resources.Limits) + api_v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + api_v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + api_v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + api_v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_JobList(in *JobList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Job(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/BUILD b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/BUILD new file mode 100644 index 000000000..aeff48f05 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/BUILD @@ -0,0 +1,41 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/batch/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/conversion.go new file mode 100644 index 000000000..2393fdca9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/conversion.go @@ -0,0 +1,44 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + var err error + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + for _, k := range []string{"Job", "JobTemplate", "CronJob"} { + kind := k // don't close over range variables + err = scheme.AddFieldLabelConversionFunc("batch/v2alpha1", kind, + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for %q", label, kind) + } + }) + if err != nil { + return err + } + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/defaults.go new file mode 100644 index 000000000..292f8886e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/defaults.go @@ -0,0 +1,34 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_CronJob(obj *CronJob) { + if obj.Spec.ConcurrencyPolicy == "" { + obj.Spec.ConcurrencyPolicy = AllowConcurrent + } + if obj.Spec.Suspend == nil { + obj.Spec.Suspend = new(bool) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/doc.go new file mode 100644 index 000000000..a9fe60b1c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.pb.go new file mode 100644 index 000000000..28df224b8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.pb.go @@ -0,0 +1,1511 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/batch/v2alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v2alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/batch/v2alpha1/generated.proto + + It has these top-level messages: + CronJob + CronJobList + CronJobSpec + CronJobStatus + JobTemplate + JobTemplateSpec +*/ +package v2alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *CronJob) Reset() { *m = CronJob{} } +func (*CronJob) ProtoMessage() {} +func (*CronJob) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *CronJobList) Reset() { *m = CronJobList{} } +func (*CronJobList) ProtoMessage() {} +func (*CronJobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *CronJobSpec) Reset() { *m = CronJobSpec{} } +func (*CronJobSpec) ProtoMessage() {} +func (*CronJobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *CronJobStatus) Reset() { *m = CronJobStatus{} } +func (*CronJobStatus) ProtoMessage() {} +func (*CronJobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *JobTemplate) Reset() { *m = JobTemplate{} } +func (*JobTemplate) ProtoMessage() {} +func (*JobTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *JobTemplateSpec) Reset() { *m = JobTemplateSpec{} } +func (*JobTemplateSpec) ProtoMessage() {} +func (*JobTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func init() { + proto.RegisterType((*CronJob)(nil), "k8s.io.client-go.pkg.apis.batch.v2alpha1.CronJob") + proto.RegisterType((*CronJobList)(nil), "k8s.io.client-go.pkg.apis.batch.v2alpha1.CronJobList") + proto.RegisterType((*CronJobSpec)(nil), "k8s.io.client-go.pkg.apis.batch.v2alpha1.CronJobSpec") + proto.RegisterType((*CronJobStatus)(nil), "k8s.io.client-go.pkg.apis.batch.v2alpha1.CronJobStatus") + proto.RegisterType((*JobTemplate)(nil), "k8s.io.client-go.pkg.apis.batch.v2alpha1.JobTemplate") + proto.RegisterType((*JobTemplateSpec)(nil), "k8s.io.client-go.pkg.apis.batch.v2alpha1.JobTemplateSpec") +} +func (m *CronJob) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJob) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *CronJobList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n4, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *CronJobSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Schedule))) + i += copy(dAtA[i:], m.Schedule) + if m.StartingDeadlineSeconds != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.StartingDeadlineSeconds)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ConcurrencyPolicy))) + i += copy(dAtA[i:], m.ConcurrencyPolicy) + if m.Suspend != nil { + dAtA[i] = 0x20 + i++ + if *m.Suspend { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.JobTemplate.Size())) + n5, err := m.JobTemplate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if m.SuccessfulJobsHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.SuccessfulJobsHistoryLimit)) + } + if m.FailedJobsHistoryLimit != nil { + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.FailedJobsHistoryLimit)) + } + return i, nil +} + +func (m *CronJobStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CronJobStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Active) > 0 { + for _, msg := range m.Active { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.LastScheduleTime != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastScheduleTime.Size())) + n6, err := m.LastScheduleTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + return i, nil +} + +func (m *JobTemplate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JobTemplate) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n7, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n8, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + +func (m *JobTemplateSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *JobTemplateSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n10, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *CronJob) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CronJobList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CronJobSpec) Size() (n int) { + var l int + _ = l + l = len(m.Schedule) + n += 1 + l + sovGenerated(uint64(l)) + if m.StartingDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.StartingDeadlineSeconds)) + } + l = len(m.ConcurrencyPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if m.Suspend != nil { + n += 2 + } + l = m.JobTemplate.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.SuccessfulJobsHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.SuccessfulJobsHistoryLimit)) + } + if m.FailedJobsHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.FailedJobsHistoryLimit)) + } + return n +} + +func (m *CronJobStatus) Size() (n int) { + var l int + _ = l + if len(m.Active) > 0 { + for _, e := range m.Active { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.LastScheduleTime != nil { + l = m.LastScheduleTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *JobTemplate) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobTemplateSpec) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CronJob) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJob{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CronJobSpec", "CronJobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CronJobStatus", "CronJobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CronJob", "CronJob", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobSpec{`, + `Schedule:` + fmt.Sprintf("%v", this.Schedule) + `,`, + `StartingDeadlineSeconds:` + valueToStringGenerated(this.StartingDeadlineSeconds) + `,`, + `ConcurrencyPolicy:` + fmt.Sprintf("%v", this.ConcurrencyPolicy) + `,`, + `Suspend:` + valueToStringGenerated(this.Suspend) + `,`, + `JobTemplate:` + strings.Replace(strings.Replace(this.JobTemplate.String(), "JobTemplateSpec", "JobTemplateSpec", 1), `&`, ``, 1) + `,`, + `SuccessfulJobsHistoryLimit:` + valueToStringGenerated(this.SuccessfulJobsHistoryLimit) + `,`, + `FailedJobsHistoryLimit:` + valueToStringGenerated(this.FailedJobsHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJobStatus{`, + `Active:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Active), "ObjectReference", "k8s_io_kubernetes_pkg_api_v1.ObjectReference", 1), `&`, ``, 1) + `,`, + `LastScheduleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScheduleTime), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobTemplate) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobTemplate{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "JobTemplateSpec", "JobTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobTemplateSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobTemplateSpec{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "k8s_io_kubernetes_pkg_apis_batch_v1.JobSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CronJob) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJob: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJob: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CronJobList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CronJob{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CronJobSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schedule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Schedule = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StartingDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.StartingDeadlineSeconds = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConcurrencyPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConcurrencyPolicy = ConcurrencyPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Suspend", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Suspend = &b + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JobTemplate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.JobTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SuccessfulJobsHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SuccessfulJobsHistoryLimit = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FailedJobsHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.FailedJobsHistoryLimit = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CronJobStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CronJobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CronJobStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Active = append(m.Active, k8s_io_kubernetes_pkg_api_v1.ObjectReference{}) + if err := m.Active[len(m.Active)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastScheduleTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastScheduleTime == nil { + m.LastScheduleTime = &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + } + if err := m.LastScheduleTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobTemplate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobTemplate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobTemplate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobTemplateSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobTemplateSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 786 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4d, 0x4f, 0xdb, 0x48, + 0x18, 0xc7, 0xe3, 0x90, 0x37, 0x26, 0xcb, 0x2e, 0x78, 0x57, 0x10, 0x65, 0x25, 0x27, 0x8a, 0xb4, + 0x52, 0x76, 0x05, 0xe3, 0x25, 0xac, 0x10, 0xdb, 0x5b, 0x4d, 0x55, 0xb5, 0x88, 0xbe, 0xc8, 0x01, + 0xb5, 0xaa, 0x50, 0xc5, 0xd8, 0x99, 0x24, 0x43, 0xfc, 0x56, 0xcf, 0x38, 0x52, 0x6e, 0xfd, 0x08, + 0xfd, 0x16, 0xfd, 0x16, 0xbd, 0xb4, 0x07, 0x8e, 0x1c, 0x7a, 0xa0, 0x97, 0xa8, 0xb8, 0xdf, 0xa2, + 0xa7, 0xca, 0x13, 0x27, 0x0e, 0x38, 0x2e, 0xa1, 0x95, 0xb8, 0x79, 0xc6, 0xcf, 0xff, 0x37, 0xcf, + 0xf3, 0x7f, 0x9e, 0x19, 0xf0, 0x7f, 0x6f, 0x87, 0x42, 0x62, 0xcb, 0x3d, 0x4f, 0xc3, 0xae, 0x85, + 0x19, 0xa6, 0xb2, 0xd3, 0xeb, 0xc8, 0xc8, 0x21, 0x54, 0xd6, 0x10, 0xd3, 0xbb, 0x72, 0xbf, 0x81, + 0x0c, 0xa7, 0x8b, 0x36, 0xe5, 0x0e, 0xb6, 0xb0, 0x8b, 0x18, 0x6e, 0x41, 0xc7, 0xb5, 0x99, 0x2d, + 0xfe, 0x3d, 0x92, 0xc2, 0x48, 0x0a, 0x9d, 0x5e, 0x07, 0x06, 0x52, 0xc8, 0xa5, 0x70, 0x2c, 0x2d, + 0x6f, 0x74, 0x08, 0xeb, 0x7a, 0x1a, 0xd4, 0x6d, 0x53, 0xee, 0xd8, 0x1d, 0x5b, 0xe6, 0x04, 0xcd, + 0x6b, 0xf3, 0x15, 0x5f, 0xf0, 0xaf, 0x11, 0xb9, 0xfc, 0x5f, 0x98, 0x14, 0x72, 0x88, 0x89, 0xf4, + 0x2e, 0xb1, 0xb0, 0x3b, 0x88, 0xd2, 0x32, 0x31, 0x43, 0x72, 0x3f, 0x96, 0x4f, 0x59, 0x4e, 0x52, + 0xb9, 0x9e, 0xc5, 0x88, 0x89, 0x63, 0x82, 0xed, 0xeb, 0x04, 0x54, 0xef, 0x62, 0x13, 0xc5, 0x74, + 0x5b, 0x49, 0x3a, 0x8f, 0x11, 0x43, 0x26, 0x16, 0xa3, 0xcc, 0x8d, 0x89, 0xd6, 0x13, 0x8d, 0x9e, + 0x55, 0xcb, 0xd6, 0xf5, 0x6d, 0x89, 0x89, 0x6a, 0x6f, 0xd3, 0x20, 0xbf, 0xeb, 0xda, 0xd6, 0x9e, + 0xad, 0x89, 0xc7, 0xa0, 0x10, 0xf8, 0xd4, 0x42, 0x0c, 0x95, 0x84, 0xaa, 0x50, 0x2f, 0x36, 0xfe, + 0x85, 0x61, 0xbf, 0xa6, 0xd3, 0x8e, 0x3a, 0x16, 0x44, 0xc3, 0xfe, 0x26, 0x7c, 0xa2, 0x9d, 0x60, + 0x9d, 0x3d, 0xc2, 0x0c, 0x29, 0xe2, 0xe9, 0xb0, 0x92, 0xf2, 0x87, 0x15, 0x10, 0xed, 0xa9, 0x13, + 0xaa, 0xf8, 0x1c, 0x64, 0xa8, 0x83, 0xf5, 0x52, 0x9a, 0xd3, 0xb7, 0xe1, 0xdc, 0xd3, 0x00, 0xc3, + 0x1c, 0x9b, 0x0e, 0xd6, 0x95, 0x5f, 0xc2, 0x33, 0x32, 0xc1, 0x4a, 0xe5, 0x44, 0xf1, 0x18, 0xe4, + 0x28, 0x43, 0xcc, 0xa3, 0xa5, 0x05, 0xce, 0xde, 0xf9, 0x01, 0x36, 0xd7, 0x2b, 0xbf, 0x86, 0xf4, + 0xdc, 0x68, 0xad, 0x86, 0xdc, 0xda, 0x07, 0x01, 0x14, 0xc3, 0xc8, 0x7d, 0x42, 0x99, 0x78, 0x14, + 0x73, 0x0b, 0xce, 0xe7, 0x56, 0xa0, 0xe6, 0x5e, 0x2d, 0x87, 0x27, 0x15, 0xc6, 0x3b, 0x53, 0x4e, + 0x3d, 0x03, 0x59, 0xc2, 0xb0, 0x49, 0x4b, 0xe9, 0xea, 0x42, 0xbd, 0xd8, 0x68, 0xdc, 0xbc, 0x1c, + 0x65, 0x29, 0xc4, 0x67, 0x1f, 0x06, 0x20, 0x75, 0xc4, 0xab, 0xbd, 0xcb, 0x4c, 0xca, 0x08, 0xec, + 0x13, 0xd7, 0x41, 0x21, 0x18, 0xd9, 0x96, 0x67, 0x60, 0x5e, 0xc6, 0x62, 0x94, 0x56, 0x33, 0xdc, + 0x57, 0x27, 0x11, 0xe2, 0x21, 0x58, 0xa3, 0x0c, 0xb9, 0x8c, 0x58, 0x9d, 0x7b, 0x18, 0xb5, 0x0c, + 0x62, 0xe1, 0x26, 0xd6, 0x6d, 0xab, 0x45, 0x79, 0x4f, 0x17, 0x94, 0x3f, 0xfd, 0x61, 0x65, 0xad, + 0x39, 0x3b, 0x44, 0x4d, 0xd2, 0x8a, 0x47, 0x60, 0x45, 0xb7, 0x2d, 0xdd, 0x73, 0x5d, 0x6c, 0xe9, + 0x83, 0xa7, 0xb6, 0x41, 0xf4, 0x01, 0x6f, 0xe4, 0xa2, 0x02, 0xc3, 0x6c, 0x56, 0x76, 0xaf, 0x06, + 0x7c, 0x9d, 0xb5, 0xa9, 0xc6, 0x41, 0xe2, 0x5f, 0x20, 0x4f, 0x3d, 0xea, 0x60, 0xab, 0x55, 0xca, + 0x54, 0x85, 0x7a, 0x41, 0x29, 0xfa, 0xc3, 0x4a, 0xbe, 0x39, 0xda, 0x52, 0xc7, 0xff, 0xc4, 0x57, + 0xa0, 0x78, 0x62, 0x6b, 0x07, 0xd8, 0x74, 0x0c, 0xc4, 0x70, 0x29, 0xcb, 0x7b, 0x7a, 0xe7, 0x06, + 0xc6, 0xef, 0x45, 0x6a, 0x3e, 0xa7, 0xbf, 0x87, 0xa9, 0x17, 0xa7, 0x7e, 0xa8, 0xd3, 0x67, 0x88, + 0x2f, 0x41, 0x99, 0x7a, 0xba, 0x8e, 0x29, 0x6d, 0x7b, 0xc6, 0x9e, 0xad, 0xd1, 0x07, 0x84, 0x32, + 0xdb, 0x1d, 0xec, 0x13, 0x93, 0xb0, 0x52, 0xae, 0x2a, 0xd4, 0xb3, 0x8a, 0xe4, 0x0f, 0x2b, 0xe5, + 0x66, 0x62, 0x94, 0xfa, 0x1d, 0x82, 0xa8, 0x82, 0xd5, 0x36, 0x22, 0x06, 0x6e, 0xc5, 0xd8, 0x79, + 0xce, 0x2e, 0xfb, 0xc3, 0xca, 0xea, 0xfd, 0x99, 0x11, 0x6a, 0x82, 0xb2, 0xf6, 0x51, 0x00, 0x4b, + 0x97, 0x6e, 0x8c, 0x78, 0x08, 0x72, 0x48, 0x67, 0xa4, 0x1f, 0x0c, 0x50, 0x30, 0xac, 0x1b, 0xc9, + 0x9e, 0x45, 0xaf, 0x85, 0x8a, 0xdb, 0x38, 0x68, 0x12, 0x8e, 0x2e, 0xdc, 0x5d, 0x0e, 0x51, 0x43, + 0x98, 0x68, 0x80, 0x65, 0x03, 0x51, 0x36, 0x9e, 0xc2, 0x03, 0x62, 0x62, 0xde, 0xbf, 0x62, 0xe3, + 0x9f, 0xf9, 0x2e, 0x5a, 0xa0, 0x50, 0xfe, 0xf0, 0x87, 0x95, 0xe5, 0xfd, 0x2b, 0x1c, 0x35, 0x46, + 0xae, 0x7d, 0x12, 0xc0, 0x74, 0x9f, 0x6e, 0xe1, 0x31, 0xec, 0x82, 0x02, 0x1b, 0x0f, 0x5b, 0xfa, + 0xa7, 0x87, 0x6d, 0x72, 0x6b, 0x27, 0x93, 0x36, 0xa1, 0xd7, 0xde, 0x0b, 0xe0, 0xb7, 0x2b, 0xf1, + 0xb7, 0x50, 0xdf, 0xe3, 0x4b, 0x8f, 0xfd, 0xfa, 0x1c, 0xb5, 0xf1, 0xaa, 0x92, 0x9e, 0x78, 0x05, + 0x9e, 0x5e, 0x48, 0xa9, 0xb3, 0x0b, 0x29, 0x75, 0x7e, 0x21, 0xa5, 0x5e, 0xfb, 0x92, 0x70, 0xea, + 0x4b, 0xc2, 0x99, 0x2f, 0x09, 0xe7, 0xbe, 0x24, 0x7c, 0xf6, 0x25, 0xe1, 0xcd, 0x17, 0x29, 0xf5, + 0xa2, 0x30, 0x76, 0xe8, 0x5b, 0x00, 0x00, 0x00, 0xff, 0xff, 0x88, 0x78, 0x12, 0x5b, 0xa7, 0x08, + 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.proto new file mode 100644 index 000000000..48509d6f5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/generated.proto @@ -0,0 +1,133 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.batch.v2alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/apis/batch/v1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v2alpha1"; + +// CronJob represents the configuration of a single cron job. +message CronJob { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CronJobSpec spec = 2; + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional CronJobStatus status = 3; +} + +// CronJobList is a collection of cron jobs. +message CronJobList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // items is the list of CronJobs. + repeated CronJob items = 2; +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +message CronJobSpec { + // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + optional string schedule = 1; + + // Optional deadline in seconds for starting the job if it misses scheduled + // time for any reason. Missed jobs executions will be counted as failed ones. + // +optional + optional int64 startingDeadlineSeconds = 2; + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + optional string concurrencyPolicy = 3; + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + optional bool suspend = 4; + + // Specifies the job that will be created when executing a CronJob. + optional JobTemplateSpec jobTemplate = 5; + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + optional int32 successfulJobsHistoryLimit = 6; + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + optional int32 failedJobsHistoryLimit = 7; +} + +// CronJobStatus represents the current state of a cron job. +message CronJobStatus { + // A list of pointers to currently running jobs. + // +optional + repeated k8s.io.client_go.pkg.api.v1.ObjectReference active = 1; + + // Information when was the last time the job was successfully scheduled. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScheduleTime = 4; +} + +// JobTemplate describes a template for creating copies of a predefined pod. +message JobTemplate { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional JobTemplateSpec template = 2; +} + +// JobTemplateSpec describes the data a Job should have when created from a template +message JobTemplateSpec { + // Standard object's metadata of the jobs created from this template. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional k8s.io.client_go.pkg.apis.batch.v1.JobSpec spec = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/register.go new file mode 100644 index 000000000..11a397820 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/register.go @@ -0,0 +1,62 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &JobTemplate{}, + &CronJob{}, + &CronJobList{}, + ) + scheme.AddKnownTypeWithName(SchemeGroupVersion.WithKind("ScheduledJob"), &CronJob{}) + scheme.AddKnownTypeWithName(SchemeGroupVersion.WithKind("ScheduledJobList"), &CronJobList{}) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.generated.go new file mode 100644 index 000000000..9e72e7d22 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.generated.go @@ -0,0 +1,2525 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v2alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg5_resource "k8s.io/apimachinery/pkg/api/resource" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + pkg6_intstr "k8s.io/apimachinery/pkg/util/intstr" + pkg4_v1 "k8s.io/client-go/pkg/api/v1" + pkg3_v1 "k8s.io/client-go/pkg/apis/batch/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg5_resource.Quantity + var v1 pkg1_v1.TypeMeta + var v2 pkg2_types.UID + var v3 pkg6_intstr.IntOrString + var v4 pkg4_v1.PodTemplateSpec + var v5 pkg3_v1.JobSpec + var v6 time.Time + _, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6 + } +} + +func (x *JobTemplate) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Template + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Template + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobTemplate) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobTemplate) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = JobTemplateSpec{} + } else { + yyv10 := &x.Template + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobTemplate) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = JobTemplateSpec{} + } else { + yyv18 := &x.Template + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobTemplateSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + yyq2[1] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.ObjectMeta + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else { + z.EncFallback(yy4) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.ObjectMeta + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else { + z.EncFallback(yy6) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy9 := &x.Spec + yy9.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.Spec + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobTemplateSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobTemplateSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv4 := &x.ObjectMeta + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else { + z.DecFallback(yyv4, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = pkg3_v1.JobSpec{} + } else { + yyv6 := &x.Spec + yyv6.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobTemplateSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = pkg3_v1.JobSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CronJob) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CronJob) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CronJob) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = CronJobSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = CronJobStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CronJob) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = CronJobSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = CronJobStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CronJobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceCronJob(([]CronJob)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceCronJob(([]CronJob)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CronJobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CronJobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceCronJob((*[]CronJob)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CronJobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceCronJob((*[]CronJob)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CronJobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [7]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.StartingDeadlineSeconds != nil + yyq2[2] = x.ConcurrencyPolicy != "" + yyq2[3] = x.Suspend != nil + yyq2[5] = x.SuccessfulJobsHistoryLimit != nil + yyq2[6] = x.FailedJobsHistoryLimit != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(7) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Schedule)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("schedule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Schedule)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.StartingDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy7 := *x.StartingDeadlineSeconds + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(yy7)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startingDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartingDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy9 := *x.StartingDeadlineSeconds + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(yy9)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + x.ConcurrencyPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("concurrencyPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ConcurrencyPolicy.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Suspend == nil { + r.EncodeNil() + } else { + yy15 := *x.Suspend + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeBool(bool(yy15)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("suspend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Suspend == nil { + r.EncodeNil() + } else { + yy17 := *x.Suspend + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeBool(bool(yy17)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy20 := &x.JobTemplate + yy20.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("jobTemplate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.JobTemplate + yy22.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.SuccessfulJobsHistoryLimit == nil { + r.EncodeNil() + } else { + yy25 := *x.SuccessfulJobsHistoryLimit + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("successfulJobsHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SuccessfulJobsHistoryLimit == nil { + r.EncodeNil() + } else { + yy27 := *x.SuccessfulJobsHistoryLimit + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.FailedJobsHistoryLimit == nil { + r.EncodeNil() + } else { + yy30 := *x.FailedJobsHistoryLimit + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeInt(int64(yy30)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failedJobsHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FailedJobsHistoryLimit == nil { + r.EncodeNil() + } else { + yy32 := *x.FailedJobsHistoryLimit + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeInt(int64(yy32)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CronJobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CronJobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "schedule": + if r.TryDecodeAsNil() { + x.Schedule = "" + } else { + yyv4 := &x.Schedule + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "startingDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.StartingDeadlineSeconds != nil { + x.StartingDeadlineSeconds = nil + } + } else { + if x.StartingDeadlineSeconds == nil { + x.StartingDeadlineSeconds = new(int64) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int64)(x.StartingDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "concurrencyPolicy": + if r.TryDecodeAsNil() { + x.ConcurrencyPolicy = "" + } else { + yyv8 := &x.ConcurrencyPolicy + yyv8.CodecDecodeSelf(d) + } + case "suspend": + if r.TryDecodeAsNil() { + if x.Suspend != nil { + x.Suspend = nil + } + } else { + if x.Suspend == nil { + x.Suspend = new(bool) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*bool)(x.Suspend)) = r.DecodeBool() + } + } + case "jobTemplate": + if r.TryDecodeAsNil() { + x.JobTemplate = JobTemplateSpec{} + } else { + yyv11 := &x.JobTemplate + yyv11.CodecDecodeSelf(d) + } + case "successfulJobsHistoryLimit": + if r.TryDecodeAsNil() { + if x.SuccessfulJobsHistoryLimit != nil { + x.SuccessfulJobsHistoryLimit = nil + } + } else { + if x.SuccessfulJobsHistoryLimit == nil { + x.SuccessfulJobsHistoryLimit = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.SuccessfulJobsHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + case "failedJobsHistoryLimit": + if r.TryDecodeAsNil() { + if x.FailedJobsHistoryLimit != nil { + x.FailedJobsHistoryLimit = nil + } + } else { + if x.FailedJobsHistoryLimit == nil { + x.FailedJobsHistoryLimit = new(int32) + } + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(x.FailedJobsHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CronJobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Schedule = "" + } else { + yyv17 := &x.Schedule + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartingDeadlineSeconds != nil { + x.StartingDeadlineSeconds = nil + } + } else { + if x.StartingDeadlineSeconds == nil { + x.StartingDeadlineSeconds = new(int64) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int64)(x.StartingDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ConcurrencyPolicy = "" + } else { + yyv21 := &x.ConcurrencyPolicy + yyv21.CodecDecodeSelf(d) + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Suspend != nil { + x.Suspend = nil + } + } else { + if x.Suspend == nil { + x.Suspend = new(bool) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else { + *((*bool)(x.Suspend)) = r.DecodeBool() + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.JobTemplate = JobTemplateSpec{} + } else { + yyv24 := &x.JobTemplate + yyv24.CodecDecodeSelf(d) + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SuccessfulJobsHistoryLimit != nil { + x.SuccessfulJobsHistoryLimit = nil + } + } else { + if x.SuccessfulJobsHistoryLimit == nil { + x.SuccessfulJobsHistoryLimit = new(int32) + } + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(x.SuccessfulJobsHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FailedJobsHistoryLimit != nil { + x.FailedJobsHistoryLimit = nil + } + } else { + if x.FailedJobsHistoryLimit == nil { + x.FailedJobsHistoryLimit = new(int32) + } + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(x.FailedJobsHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ConcurrencyPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ConcurrencyPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *CronJobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Active) != 0 + yyq2[1] = x.LastScheduleTime != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Active == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSlicev1_ObjectReference(([]pkg4_v1.ObjectReference)(x.Active), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Active == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSlicev1_ObjectReference(([]pkg4_v1.ObjectReference)(x.Active), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.LastScheduleTime == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScheduleTime) { + } else if yym7 { + z.EncBinaryMarshal(x.LastScheduleTime) + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScheduleTime) + } else { + z.EncFallback(x.LastScheduleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScheduleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScheduleTime == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScheduleTime) { + } else if yym8 { + z.EncBinaryMarshal(x.LastScheduleTime) + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScheduleTime) + } else { + z.EncFallback(x.LastScheduleTime) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CronJobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CronJobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "active": + if r.TryDecodeAsNil() { + x.Active = nil + } else { + yyv4 := &x.Active + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSlicev1_ObjectReference((*[]pkg4_v1.ObjectReference)(yyv4), d) + } + } + case "lastScheduleTime": + if r.TryDecodeAsNil() { + if x.LastScheduleTime != nil { + x.LastScheduleTime = nil + } + } else { + if x.LastScheduleTime == nil { + x.LastScheduleTime = new(pkg1_v1.Time) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScheduleTime) { + } else if yym7 { + z.DecBinaryUnmarshal(x.LastScheduleTime) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScheduleTime) + } else { + z.DecFallback(x.LastScheduleTime, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CronJobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = nil + } else { + yyv9 := &x.Active + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSlicev1_ObjectReference((*[]pkg4_v1.ObjectReference)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScheduleTime != nil { + x.LastScheduleTime = nil + } + } else { + if x.LastScheduleTime == nil { + x.LastScheduleTime = new(pkg1_v1.Time) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScheduleTime) { + } else if yym12 { + z.DecBinaryUnmarshal(x.LastScheduleTime) + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScheduleTime) + } else { + z.DecFallback(x.LastScheduleTime, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceCronJob(v []CronJob, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCronJob(v *[]CronJob, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []CronJob{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 1192) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]CronJob, yyrl1) + } + } else { + yyv1 = make([]CronJob, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CronJob{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, CronJob{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CronJob{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, CronJob{}) // var yyz1 CronJob + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = CronJob{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []CronJob{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicev1_ObjectReference(v []pkg4_v1.ObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_ObjectReference(v *[]pkg4_v1.ObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []pkg4_v1.ObjectReference{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]pkg4_v1.ObjectReference, yyrl1) + } + } else { + yyv1 = make([]pkg4_v1.ObjectReference, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg4_v1.ObjectReference{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, pkg4_v1.ObjectReference{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg4_v1.ObjectReference{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, pkg4_v1.ObjectReference{}) // var yyz1 pkg4_v1.ObjectReference + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = pkg4_v1.ObjectReference{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []pkg4_v1.ObjectReference{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.go new file mode 100644 index 000000000..d5b3c487f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types.go @@ -0,0 +1,148 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api/v1" + batchv1 "k8s.io/client-go/pkg/apis/batch/v1" +) + +// JobTemplate describes a template for creating copies of a predefined pod. +type JobTemplate struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Defines jobs that will be created from this template. + // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Template JobTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` +} + +// JobTemplateSpec describes the data a Job should have when created from a template +type JobTemplateSpec struct { + // Standard object's metadata of the jobs created from this template. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec batchv1.JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +genclient=true + +// CronJob represents the configuration of a single cron job. +type CronJob struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of a cron job, including the schedule. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec CronJobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Current status of a cron job. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status CronJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// CronJobList is a collection of cron jobs. +type CronJobList struct { + metav1.TypeMeta `json:",inline"` + + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // items is the list of CronJobs. + Items []CronJob `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// CronJobSpec describes how the job execution will look like and when it will actually run. +type CronJobSpec struct { + + // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + Schedule string `json:"schedule" protobuf:"bytes,1,opt,name=schedule"` + + // Optional deadline in seconds for starting the job if it misses scheduled + // time for any reason. Missed jobs executions will be counted as failed ones. + // +optional + StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty" protobuf:"varint,2,opt,name=startingDeadlineSeconds"` + + // Specifies how to treat concurrent executions of a Job. + // Defaults to Allow. + // +optional + ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty" protobuf:"bytes,3,opt,name=concurrencyPolicy,casttype=ConcurrencyPolicy"` + + // This flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + // +optional + Suspend *bool `json:"suspend,omitempty" protobuf:"varint,4,opt,name=suspend"` + + // Specifies the job that will be created when executing a CronJob. + JobTemplate JobTemplateSpec `json:"jobTemplate" protobuf:"bytes,5,opt,name=jobTemplate"` + + // The number of successful finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + SuccessfulJobsHistoryLimit *int32 `json:"successfulJobsHistoryLimit,omitempty" protobuf:"varint,6,opt,name=successfulJobsHistoryLimit"` + + // The number of failed finished jobs to retain. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + FailedJobsHistoryLimit *int32 `json:"failedJobsHistoryLimit,omitempty" protobuf:"varint,7,opt,name=failedJobsHistoryLimit"` +} + +// ConcurrencyPolicy describes how the job will be handled. +// Only one of the following concurrent policies may be specified. +// If none of the following policies is specified, the default one +// is AllowConcurrent. +type ConcurrencyPolicy string + +const ( + // AllowConcurrent allows CronJobs to run concurrently. + AllowConcurrent ConcurrencyPolicy = "Allow" + + // ForbidConcurrent forbids concurrent runs, skipping next run if previous + // hasn't finished yet. + ForbidConcurrent ConcurrencyPolicy = "Forbid" + + // ReplaceConcurrent cancels currently running job and replaces it with a new one. + ReplaceConcurrent ConcurrencyPolicy = "Replace" +) + +// CronJobStatus represents the current state of a cron job. +type CronJobStatus struct { + // A list of pointers to currently running jobs. + // +optional + Active []v1.ObjectReference `json:"active,omitempty" protobuf:"bytes,1,rep,name=active"` + + // Information when was the last time the job was successfully scheduled. + // +optional + LastScheduleTime *metav1.Time `json:"lastScheduleTime,omitempty" protobuf:"bytes,4,opt,name=lastScheduleTime"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go new file mode 100644 index 000000000..2b3ed4c56 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_CronJob = map[string]string{ + "": "CronJob represents the configuration of a single cron job.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (CronJob) SwaggerDoc() map[string]string { + return map_CronJob +} + +var map_CronJobList = map[string]string{ + "": "CronJobList is a collection of cron jobs.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "items is the list of CronJobs.", +} + +func (CronJobList) SwaggerDoc() map[string]string { + return map_CronJobList +} + +var map_CronJobSpec = map[string]string{ + "": "CronJobSpec describes how the job execution will look like and when it will actually run.", + "schedule": "The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.", + "startingDeadlineSeconds": "Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.", + "concurrencyPolicy": "Specifies how to treat concurrent executions of a Job. Defaults to Allow.", + "suspend": "This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", + "jobTemplate": "Specifies the job that will be created when executing a CronJob.", + "successfulJobsHistoryLimit": "The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.", + "failedJobsHistoryLimit": "The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.", +} + +func (CronJobSpec) SwaggerDoc() map[string]string { + return map_CronJobSpec +} + +var map_CronJobStatus = map[string]string{ + "": "CronJobStatus represents the current state of a cron job.", + "active": "A list of pointers to currently running jobs.", + "lastScheduleTime": "Information when was the last time the job was successfully scheduled.", +} + +func (CronJobStatus) SwaggerDoc() map[string]string { + return map_CronJobStatus +} + +var map_JobTemplate = map[string]string{ + "": "JobTemplate describes a template for creating copies of a predefined pod.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "template": "Defines jobs that will be created from this template. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (JobTemplate) SwaggerDoc() map[string]string { + return map_JobTemplate +} + +var map_JobTemplateSpec = map[string]string{ + "": "JobTemplateSpec describes the data a Job should have when created from a template", + "metadata": "Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (JobTemplateSpec) SwaggerDoc() map[string]string { + return map_JobTemplateSpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..b422c4658 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.conversion.go @@ -0,0 +1,239 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v2alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + api_v1 "k8s.io/client-go/pkg/api/v1" + batch "k8s.io/client-go/pkg/apis/batch" + batch_v1 "k8s.io/client-go/pkg/apis/batch/v1" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v2alpha1_CronJob_To_batch_CronJob, + Convert_batch_CronJob_To_v2alpha1_CronJob, + Convert_v2alpha1_CronJobList_To_batch_CronJobList, + Convert_batch_CronJobList_To_v2alpha1_CronJobList, + Convert_v2alpha1_CronJobSpec_To_batch_CronJobSpec, + Convert_batch_CronJobSpec_To_v2alpha1_CronJobSpec, + Convert_v2alpha1_CronJobStatus_To_batch_CronJobStatus, + Convert_batch_CronJobStatus_To_v2alpha1_CronJobStatus, + Convert_v2alpha1_JobTemplate_To_batch_JobTemplate, + Convert_batch_JobTemplate_To_v2alpha1_JobTemplate, + Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec, + Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec, + ) +} + +func autoConvert_v2alpha1_CronJob_To_batch_CronJob(in *CronJob, out *batch.CronJob, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v2alpha1_CronJobSpec_To_batch_CronJobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v2alpha1_CronJobStatus_To_batch_CronJobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v2alpha1_CronJob_To_batch_CronJob is an autogenerated conversion function. +func Convert_v2alpha1_CronJob_To_batch_CronJob(in *CronJob, out *batch.CronJob, s conversion.Scope) error { + return autoConvert_v2alpha1_CronJob_To_batch_CronJob(in, out, s) +} + +func autoConvert_batch_CronJob_To_v2alpha1_CronJob(in *batch.CronJob, out *CronJob, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_batch_CronJobSpec_To_v2alpha1_CronJobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_batch_CronJobStatus_To_v2alpha1_CronJobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_batch_CronJob_To_v2alpha1_CronJob is an autogenerated conversion function. +func Convert_batch_CronJob_To_v2alpha1_CronJob(in *batch.CronJob, out *CronJob, s conversion.Scope) error { + return autoConvert_batch_CronJob_To_v2alpha1_CronJob(in, out, s) +} + +func autoConvert_v2alpha1_CronJobList_To_batch_CronJobList(in *CronJobList, out *batch.CronJobList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]batch.CronJob, len(*in)) + for i := range *in { + if err := Convert_v2alpha1_CronJob_To_batch_CronJob(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v2alpha1_CronJobList_To_batch_CronJobList is an autogenerated conversion function. +func Convert_v2alpha1_CronJobList_To_batch_CronJobList(in *CronJobList, out *batch.CronJobList, s conversion.Scope) error { + return autoConvert_v2alpha1_CronJobList_To_batch_CronJobList(in, out, s) +} + +func autoConvert_batch_CronJobList_To_v2alpha1_CronJobList(in *batch.CronJobList, out *CronJobList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CronJob, len(*in)) + for i := range *in { + if err := Convert_batch_CronJob_To_v2alpha1_CronJob(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]CronJob, 0) + } + return nil +} + +// Convert_batch_CronJobList_To_v2alpha1_CronJobList is an autogenerated conversion function. +func Convert_batch_CronJobList_To_v2alpha1_CronJobList(in *batch.CronJobList, out *CronJobList, s conversion.Scope) error { + return autoConvert_batch_CronJobList_To_v2alpha1_CronJobList(in, out, s) +} + +func autoConvert_v2alpha1_CronJobSpec_To_batch_CronJobSpec(in *CronJobSpec, out *batch.CronJobSpec, s conversion.Scope) error { + out.Schedule = in.Schedule + out.StartingDeadlineSeconds = (*int64)(unsafe.Pointer(in.StartingDeadlineSeconds)) + out.ConcurrencyPolicy = batch.ConcurrencyPolicy(in.ConcurrencyPolicy) + out.Suspend = (*bool)(unsafe.Pointer(in.Suspend)) + if err := Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil { + return err + } + out.SuccessfulJobsHistoryLimit = (*int32)(unsafe.Pointer(in.SuccessfulJobsHistoryLimit)) + out.FailedJobsHistoryLimit = (*int32)(unsafe.Pointer(in.FailedJobsHistoryLimit)) + return nil +} + +// Convert_v2alpha1_CronJobSpec_To_batch_CronJobSpec is an autogenerated conversion function. +func Convert_v2alpha1_CronJobSpec_To_batch_CronJobSpec(in *CronJobSpec, out *batch.CronJobSpec, s conversion.Scope) error { + return autoConvert_v2alpha1_CronJobSpec_To_batch_CronJobSpec(in, out, s) +} + +func autoConvert_batch_CronJobSpec_To_v2alpha1_CronJobSpec(in *batch.CronJobSpec, out *CronJobSpec, s conversion.Scope) error { + out.Schedule = in.Schedule + out.StartingDeadlineSeconds = (*int64)(unsafe.Pointer(in.StartingDeadlineSeconds)) + out.ConcurrencyPolicy = ConcurrencyPolicy(in.ConcurrencyPolicy) + out.Suspend = (*bool)(unsafe.Pointer(in.Suspend)) + if err := Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil { + return err + } + out.SuccessfulJobsHistoryLimit = (*int32)(unsafe.Pointer(in.SuccessfulJobsHistoryLimit)) + out.FailedJobsHistoryLimit = (*int32)(unsafe.Pointer(in.FailedJobsHistoryLimit)) + return nil +} + +// Convert_batch_CronJobSpec_To_v2alpha1_CronJobSpec is an autogenerated conversion function. +func Convert_batch_CronJobSpec_To_v2alpha1_CronJobSpec(in *batch.CronJobSpec, out *CronJobSpec, s conversion.Scope) error { + return autoConvert_batch_CronJobSpec_To_v2alpha1_CronJobSpec(in, out, s) +} + +func autoConvert_v2alpha1_CronJobStatus_To_batch_CronJobStatus(in *CronJobStatus, out *batch.CronJobStatus, s conversion.Scope) error { + out.Active = *(*[]api.ObjectReference)(unsafe.Pointer(&in.Active)) + out.LastScheduleTime = (*v1.Time)(unsafe.Pointer(in.LastScheduleTime)) + return nil +} + +// Convert_v2alpha1_CronJobStatus_To_batch_CronJobStatus is an autogenerated conversion function. +func Convert_v2alpha1_CronJobStatus_To_batch_CronJobStatus(in *CronJobStatus, out *batch.CronJobStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_CronJobStatus_To_batch_CronJobStatus(in, out, s) +} + +func autoConvert_batch_CronJobStatus_To_v2alpha1_CronJobStatus(in *batch.CronJobStatus, out *CronJobStatus, s conversion.Scope) error { + out.Active = *(*[]api_v1.ObjectReference)(unsafe.Pointer(&in.Active)) + out.LastScheduleTime = (*v1.Time)(unsafe.Pointer(in.LastScheduleTime)) + return nil +} + +// Convert_batch_CronJobStatus_To_v2alpha1_CronJobStatus is an autogenerated conversion function. +func Convert_batch_CronJobStatus_To_v2alpha1_CronJobStatus(in *batch.CronJobStatus, out *CronJobStatus, s conversion.Scope) error { + return autoConvert_batch_CronJobStatus_To_v2alpha1_CronJobStatus(in, out, s) +} + +func autoConvert_v2alpha1_JobTemplate_To_batch_JobTemplate(in *JobTemplate, out *batch.JobTemplate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +// Convert_v2alpha1_JobTemplate_To_batch_JobTemplate is an autogenerated conversion function. +func Convert_v2alpha1_JobTemplate_To_batch_JobTemplate(in *JobTemplate, out *batch.JobTemplate, s conversion.Scope) error { + return autoConvert_v2alpha1_JobTemplate_To_batch_JobTemplate(in, out, s) +} + +func autoConvert_batch_JobTemplate_To_v2alpha1_JobTemplate(in *batch.JobTemplate, out *JobTemplate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +// Convert_batch_JobTemplate_To_v2alpha1_JobTemplate is an autogenerated conversion function. +func Convert_batch_JobTemplate_To_v2alpha1_JobTemplate(in *batch.JobTemplate, out *JobTemplate, s conversion.Scope) error { + return autoConvert_batch_JobTemplate_To_v2alpha1_JobTemplate(in, out, s) +} + +func autoConvert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in *JobTemplateSpec, out *batch.JobTemplateSpec, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := batch_v1.Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec is an autogenerated conversion function. +func Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in *JobTemplateSpec, out *batch.JobTemplateSpec, s conversion.Scope) error { + return autoConvert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in, out, s) +} + +func autoConvert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in *batch.JobTemplateSpec, out *JobTemplateSpec, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := batch_v1.Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec is an autogenerated conversion function. +func Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in *batch.JobTemplateSpec, out *JobTemplateSpec, s conversion.Scope) error { + return autoConvert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..9442a216d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go @@ -0,0 +1,176 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v2alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api_v1 "k8s.io/client-go/pkg/api/v1" + batch_v1 "k8s.io/client-go/pkg/apis/batch/v1" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_CronJob, InType: reflect.TypeOf(&CronJob{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_CronJobList, InType: reflect.TypeOf(&CronJobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_CronJobSpec, InType: reflect.TypeOf(&CronJobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_CronJobStatus, InType: reflect.TypeOf(&CronJobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobTemplate, InType: reflect.TypeOf(&JobTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobTemplateSpec, InType: reflect.TypeOf(&JobTemplateSpec{})}, + ) +} + +// DeepCopy_v2alpha1_CronJob is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_CronJob(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJob) + out := out.(*CronJob) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v2alpha1_CronJobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_CronJobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v2alpha1_CronJobList is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_CronJobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJobList) + out := out.(*CronJobList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CronJob, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_CronJob(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v2alpha1_CronJobSpec is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_CronJobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJobSpec) + out := out.(*CronJobSpec) + *out = *in + if in.StartingDeadlineSeconds != nil { + in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds + *out = new(int64) + **out = **in + } + if in.Suspend != nil { + in, out := &in.Suspend, &out.Suspend + *out = new(bool) + **out = **in + } + if err := DeepCopy_v2alpha1_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, c); err != nil { + return err + } + if in.SuccessfulJobsHistoryLimit != nil { + in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit + *out = new(int32) + **out = **in + } + if in.FailedJobsHistoryLimit != nil { + in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v2alpha1_CronJobStatus is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_CronJobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJobStatus) + out := out.(*CronJobStatus) + *out = *in + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]api_v1.ObjectReference, len(*in)) + copy(*out, *in) + } + if in.LastScheduleTime != nil { + in, out := &in.LastScheduleTime, &out.LastScheduleTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + return nil + } +} + +// DeepCopy_v2alpha1_JobTemplate is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_JobTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplate) + out := out.(*JobTemplate) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v2alpha1_JobTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v2alpha1_JobTemplateSpec is an autogenerated deepcopy function. +func DeepCopy_v2alpha1_JobTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplateSpec) + out := out.(*JobTemplateSpec) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := batch_v1.DeepCopy_v1_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..1c0bd0ee0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/v2alpha1/zz_generated.defaults.go @@ -0,0 +1,310 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v2alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + v1 "k8s.io/client-go/pkg/api/v1" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&CronJob{}, func(obj interface{}) { SetObjectDefaults_CronJob(obj.(*CronJob)) }) + scheme.AddTypeDefaultingFunc(&CronJobList{}, func(obj interface{}) { SetObjectDefaults_CronJobList(obj.(*CronJobList)) }) + scheme.AddTypeDefaultingFunc(&JobTemplate{}, func(obj interface{}) { SetObjectDefaults_JobTemplate(obj.(*JobTemplate)) }) + return nil +} + +func SetObjectDefaults_CronJob(in *CronJob) { + SetDefaults_CronJob(in) + v1.SetDefaults_PodSpec(&in.Spec.JobTemplate.Spec.Template.Spec) + for i := range in.Spec.JobTemplate.Spec.Template.Spec.Volumes { + a := &in.Spec.JobTemplate.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.JobTemplate.Spec.Template.Spec.InitContainers { + a := &in.Spec.JobTemplate.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.JobTemplate.Spec.Template.Spec.Containers { + a := &in.Spec.JobTemplate.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_CronJobList(in *CronJobList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_CronJob(a) + } +} + +func SetObjectDefaults_JobTemplate(in *JobTemplate) { + v1.SetDefaults_PodSpec(&in.Template.Spec.Template.Spec) + for i := range in.Template.Spec.Template.Spec.Volumes { + a := &in.Template.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Template.Spec.Template.Spec.InitContainers { + a := &in.Template.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Template.Spec.Template.Spec.Containers { + a := &in.Template.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/batch/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/batch/zz_generated.deepcopy.go new file mode 100644 index 000000000..4f07dbce1 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/batch/zz_generated.deepcopy.go @@ -0,0 +1,302 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package batch + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_CronJob, InType: reflect.TypeOf(&CronJob{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_CronJobList, InType: reflect.TypeOf(&CronJobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_CronJobSpec, InType: reflect.TypeOf(&CronJobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_CronJobStatus, InType: reflect.TypeOf(&CronJobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_Job, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobCondition, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobList, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobSpec, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobStatus, InType: reflect.TypeOf(&JobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobTemplate, InType: reflect.TypeOf(&JobTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobTemplateSpec, InType: reflect.TypeOf(&JobTemplateSpec{})}, + ) +} + +// DeepCopy_batch_CronJob is an autogenerated deepcopy function. +func DeepCopy_batch_CronJob(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJob) + out := out.(*CronJob) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_batch_CronJobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_batch_CronJobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_batch_CronJobList is an autogenerated deepcopy function. +func DeepCopy_batch_CronJobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJobList) + out := out.(*CronJobList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CronJob, len(*in)) + for i := range *in { + if err := DeepCopy_batch_CronJob(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_batch_CronJobSpec is an autogenerated deepcopy function. +func DeepCopy_batch_CronJobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJobSpec) + out := out.(*CronJobSpec) + *out = *in + if in.StartingDeadlineSeconds != nil { + in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds + *out = new(int64) + **out = **in + } + if in.Suspend != nil { + in, out := &in.Suspend, &out.Suspend + *out = new(bool) + **out = **in + } + if err := DeepCopy_batch_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, c); err != nil { + return err + } + if in.SuccessfulJobsHistoryLimit != nil { + in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit + *out = new(int32) + **out = **in + } + if in.FailedJobsHistoryLimit != nil { + in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_batch_CronJobStatus is an autogenerated deepcopy function. +func DeepCopy_batch_CronJobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CronJobStatus) + out := out.(*CronJobStatus) + *out = *in + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]api.ObjectReference, len(*in)) + copy(*out, *in) + } + if in.LastScheduleTime != nil { + in, out := &in.LastScheduleTime, &out.LastScheduleTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + return nil + } +} + +// DeepCopy_batch_Job is an autogenerated deepcopy function. +func DeepCopy_batch_Job(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Job) + out := out.(*Job) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_batch_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_batch_JobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_batch_JobCondition is an autogenerated deepcopy function. +func DeepCopy_batch_JobCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobCondition) + out := out.(*JobCondition) + *out = *in + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_batch_JobList is an autogenerated deepcopy function. +func DeepCopy_batch_JobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobList) + out := out.(*JobList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := DeepCopy_batch_Job(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_batch_JobSpec is an autogenerated deepcopy function. +func DeepCopy_batch_JobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobSpec) + out := out.(*JobSpec) + *out = *in + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + *out = new(int32) + **out = **in + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.ManualSelector != nil { + in, out := &in.ManualSelector, &out.ManualSelector + *out = new(bool) + **out = **in + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_batch_JobStatus is an autogenerated deepcopy function. +func DeepCopy_batch_JobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobStatus) + out := out.(*JobStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := DeepCopy_batch_JobCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + *out = new(v1.Time) + **out = (*in).DeepCopy() + } + return nil + } +} + +// DeepCopy_batch_JobTemplate is an autogenerated deepcopy function. +func DeepCopy_batch_JobTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplate) + out := out.(*JobTemplate) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_batch_JobTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_batch_JobTemplateSpec is an autogenerated deepcopy function. +func DeepCopy_batch_JobTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplateSpec) + out := out.(*JobTemplateSpec) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_batch_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/BUILD b/vendor/k8s.io/client-go/pkg/apis/certificates/BUILD new file mode 100644 index 000000000..0e128d1a3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "helpers.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/OWNERS b/vendor/k8s.io/client-go/pkg/apis/certificates/OWNERS new file mode 100755 index 000000000..c67bd1172 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/OWNERS @@ -0,0 +1,14 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- deads2k +- caesarxuchao +- liggitt +- sttts +- timothysc +- dims +- errordeveloper +- mbohlool +- david-mcmahon +- jianhuiz diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/doc.go b/vendor/k8s.io/client-go/pkg/apis/certificates/doc.go new file mode 100644 index 000000000..a10177469 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=certificates.k8s.io +package certificates diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/helpers.go b/vendor/k8s.io/client-go/pkg/apis/certificates/helpers.go new file mode 100644 index 000000000..2608e4076 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/helpers.go @@ -0,0 +1,38 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package certificates + +import ( + "crypto/x509" + "encoding/pem" + "errors" +) + +// ParseCSR extracts the CSR from the API object and decodes it. +func ParseCSR(obj *CertificateSigningRequest) (*x509.CertificateRequest, error) { + // extract PEM from request object + pemBytes := obj.Spec.Request + block, _ := pem.Decode(pemBytes) + if block == nil || block.Type != "CERTIFICATE REQUEST" { + return nil, errors.New("PEM block type must be CERTIFICATE REQUEST") + } + csr, err := x509.ParseCertificateRequest(block.Bytes) + if err != nil { + return nil, err + } + return csr, nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/certificates/install/BUILD new file mode 100644 index 000000000..97eb19640 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/install/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/install/install.go b/vendor/k8s.io/client-go/pkg/apis/certificates/install/install.go new file mode 100644 index 000000000..8850e07aa --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/install/install.go @@ -0,0 +1,51 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the certificates API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/certificates" + "k8s.io/client-go/pkg/apis/certificates/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: certificates.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/certificates", + RootScopedKinds: sets.NewString("CertificateSigningRequest"), + AddInternalObjectsToScheme: certificates.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/register.go b/vendor/k8s.io/client-go/pkg/apis/certificates/register.go new file mode 100644 index 000000000..085737583 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package certificates + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package +const GroupName = "certificates.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &CertificateSigningRequest{}, + &CertificateSigningRequestList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/types.go b/vendor/k8s.io/client-go/pkg/apis/certificates/types.go new file mode 100644 index 000000000..4a7884a1e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/types.go @@ -0,0 +1,143 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package certificates + +import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +// +genclient=true +// +nonNamespaced=true + +// Describes a certificate signing request +type CertificateSigningRequest struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // The certificate request itself and any additional information. + // +optional + Spec CertificateSigningRequestSpec + + // Derived information about the request. + // +optional + Status CertificateSigningRequestStatus +} + +// This information is immutable after the request is created. Only the Request +// and Usages fields can be set on creation, other fields are derived by +// Kubernetes and cannot be modified by users. +type CertificateSigningRequestSpec struct { + // Base64-encoded PKCS#10 CSR data + Request []byte + + // usages specifies a set of usage contexts the key will be + // valid for. + // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 + // https://tools.ietf.org/html/rfc5280#section-4.2.1.12 + Usages []KeyUsage + + // Information about the requesting user. + // See user.Info interface for details. + // +optional + Username string + // UID information about the requesting user. + // See user.Info interface for details. + // +optional + UID string + // Group information about the requesting user. + // See user.Info interface for details. + // +optional + Groups []string + // Extra information about the requesting user. + // See user.Info interface for details. + // +optional + Extra map[string]ExtraValue +} + +// ExtraValue masks the value so protobuf can generate +type ExtraValue []string + +type CertificateSigningRequestStatus struct { + // Conditions applied to the request, such as approval or denial. + // +optional + Conditions []CertificateSigningRequestCondition + + // If request was approved, the controller will place the issued certificate here. + // +optional + Certificate []byte +} + +type RequestConditionType string + +// These are the possible conditions for a certificate request. +const ( + CertificateApproved RequestConditionType = "Approved" + CertificateDenied RequestConditionType = "Denied" +) + +type CertificateSigningRequestCondition struct { + // request approval state, currently Approved or Denied. + Type RequestConditionType + // brief reason for the request state + // +optional + Reason string + // human readable message with details about the request state + // +optional + Message string + // timestamp for the last update to this condition + // +optional + LastUpdateTime metav1.Time +} + +type CertificateSigningRequestList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // +optional + Items []CertificateSigningRequest +} + +// KeyUsages specifies valid usage contexts for keys. +// See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 +// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 +type KeyUsage string + +const ( + UsageSigning KeyUsage = "signing" + UsageDigitalSignature KeyUsage = "digital signature" + UsageContentCommittment KeyUsage = "content committment" + UsageKeyEncipherment KeyUsage = "key encipherment" + UsageKeyAgreement KeyUsage = "key agreement" + UsageDataEncipherment KeyUsage = "data encipherment" + UsageCertSign KeyUsage = "cert sign" + UsageCRLSign KeyUsage = "crl sign" + UsageEncipherOnly KeyUsage = "encipher only" + UsageDecipherOnly KeyUsage = "decipher only" + UsageAny KeyUsage = "any" + UsageServerAuth KeyUsage = "server auth" + UsageClientAuth KeyUsage = "client auth" + UsageCodeSigning KeyUsage = "code signing" + UsageEmailProtection KeyUsage = "email protection" + UsageSMIME KeyUsage = "s/mime" + UsageIPsecEndSystem KeyUsage = "ipsec end system" + UsageIPsecTunnel KeyUsage = "ipsec tunnel" + UsageIPsecUser KeyUsage = "ipsec user" + UsageTimestamping KeyUsage = "timestamping" + UsageOCSPSigning KeyUsage = "ocsp signing" + UsageMicrosoftSGC KeyUsage = "microsoft sgc" + UsageNetscapSGC KeyUsage = "netscape sgc" +) diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/BUILD new file mode 100644 index 000000000..22e172a61 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/BUILD @@ -0,0 +1,38 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "helpers.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/certificates:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/conversion.go new file mode 100644 index 000000000..b9cf0b016 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/conversion.go @@ -0,0 +1,38 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions here. Currently there are none. + + return scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.String(), "CertificateSigningRequest", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/defaults.go new file mode 100644 index 000000000..e18af02f6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/defaults.go @@ -0,0 +1,28 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import "k8s.io/apimachinery/pkg/runtime" + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} +func SetDefaults_CertificateSigningRequestSpec(obj *CertificateSigningRequestSpec) { + if obj.Usages == nil { + obj.Usages = []KeyUsage{UsageDigitalSignature, UsageKeyEncipherment} + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/doc.go new file mode 100644 index 000000000..6f257909d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=certificates.k8s.io +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.pb.go new file mode 100644 index 000000000..347df9826 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.pb.go @@ -0,0 +1,1694 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/certificates/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/certificates/v1beta1/generated.proto + + It has these top-level messages: + CertificateSigningRequest + CertificateSigningRequestCondition + CertificateSigningRequestList + CertificateSigningRequestSpec + CertificateSigningRequestStatus + ExtraValue +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *CertificateSigningRequest) Reset() { *m = CertificateSigningRequest{} } +func (*CertificateSigningRequest) ProtoMessage() {} +func (*CertificateSigningRequest) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *CertificateSigningRequestCondition) Reset() { *m = CertificateSigningRequestCondition{} } +func (*CertificateSigningRequestCondition) ProtoMessage() {} +func (*CertificateSigningRequestCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *CertificateSigningRequestList) Reset() { *m = CertificateSigningRequestList{} } +func (*CertificateSigningRequestList) ProtoMessage() {} +func (*CertificateSigningRequestList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *CertificateSigningRequestSpec) Reset() { *m = CertificateSigningRequestSpec{} } +func (*CertificateSigningRequestSpec) ProtoMessage() {} +func (*CertificateSigningRequestSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *CertificateSigningRequestStatus) Reset() { *m = CertificateSigningRequestStatus{} } +func (*CertificateSigningRequestStatus) ProtoMessage() {} +func (*CertificateSigningRequestStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func init() { + proto.RegisterType((*CertificateSigningRequest)(nil), "k8s.io.client-go.pkg.apis.certificates.v1beta1.CertificateSigningRequest") + proto.RegisterType((*CertificateSigningRequestCondition)(nil), "k8s.io.client-go.pkg.apis.certificates.v1beta1.CertificateSigningRequestCondition") + proto.RegisterType((*CertificateSigningRequestList)(nil), "k8s.io.client-go.pkg.apis.certificates.v1beta1.CertificateSigningRequestList") + proto.RegisterType((*CertificateSigningRequestSpec)(nil), "k8s.io.client-go.pkg.apis.certificates.v1beta1.CertificateSigningRequestSpec") + proto.RegisterType((*CertificateSigningRequestStatus)(nil), "k8s.io.client-go.pkg.apis.certificates.v1beta1.CertificateSigningRequestStatus") + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.pkg.apis.certificates.v1beta1.ExtraValue") +} +func (m *CertificateSigningRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CertificateSigningRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *CertificateSigningRequestCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CertificateSigningRequestCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastUpdateTime.Size())) + n4, err := m.LastUpdateTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + return i, nil +} + +func (m *CertificateSigningRequestList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CertificateSigningRequestList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *CertificateSigningRequestSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CertificateSigningRequestSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Request != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Request))) + i += copy(dAtA[i:], m.Request) + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Username))) + i += copy(dAtA[i:], m.Username) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID))) + i += copy(dAtA[i:], m.UID) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Usages) > 0 { + for _, s := range m.Usages { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Extra) > 0 { + keysForExtra := make([]string, 0, len(m.Extra)) + for k := range m.Extra { + keysForExtra = append(keysForExtra, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + for _, k := range keysForExtra { + dAtA[i] = 0x32 + i++ + v := m.Extra[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n6, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + } + return i, nil +} + +func (m *CertificateSigningRequestStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CertificateSigningRequestStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Certificate != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Certificate))) + i += copy(dAtA[i:], m.Certificate) + } + return i, nil +} + +func (m ExtraValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m ExtraValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *CertificateSigningRequest) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CertificateSigningRequestCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastUpdateTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CertificateSigningRequestList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CertificateSigningRequestSpec) Size() (n int) { + var l int + _ = l + if m.Request != nil { + l = len(m.Request) + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Username) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Usages) > 0 { + for _, s := range m.Usages { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *CertificateSigningRequestStatus) Size() (n int) { + var l int + _ = l + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Certificate != nil { + l = len(m.Certificate) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CertificateSigningRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequest{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CertificateSigningRequestSpec", "CertificateSigningRequestSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CertificateSigningRequestStatus", "CertificateSigningRequestStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CertificateSigningRequest", "CertificateSigningRequest", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestSpec) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&CertificateSigningRequestSpec{`, + `Request:` + valueToStringGenerated(this.Request) + `,`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Usages:` + fmt.Sprintf("%v", this.Usages) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "CertificateSigningRequestCondition", "CertificateSigningRequestCondition", 1), `&`, ``, 1) + `,`, + `Certificate:` + valueToStringGenerated(this.Certificate) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CertificateSigningRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = RequestConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastUpdateTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastUpdateTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CertificateSigningRequest{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Request = append(m.Request[:0], dAtA[iNdEx:postIndex]...) + if m.Request == nil { + m.Request = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Usages", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Usages = append(m.Usages, KeyUsage(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.Extra[mapkey] = *mapvalue + } else { + var mapvalue ExtraValue + m.Extra[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, CertificateSigningRequestCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Certificate", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Certificate = append(m.Certificate[:0], dAtA[iNdEx:postIndex]...) + if m.Certificate == nil { + m.Certificate = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExtraValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 820 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcf, 0x8f, 0xdb, 0x44, + 0x14, 0x8e, 0xf3, 0x6b, 0x93, 0xc9, 0xb2, 0xad, 0x46, 0xa8, 0x32, 0x2b, 0xd5, 0x8e, 0x2c, 0x40, + 0x0b, 0xa2, 0x36, 0x59, 0x10, 0xac, 0xca, 0x01, 0xc9, 0xa5, 0x42, 0x85, 0x96, 0x1f, 0xb3, 0x0d, + 0x12, 0x88, 0x03, 0x13, 0xe7, 0xd5, 0x3b, 0xcd, 0xfa, 0x07, 0x9e, 0x71, 0xd4, 0x5c, 0x50, 0x6f, + 0x5c, 0x39, 0x72, 0x41, 0xe2, 0xcf, 0xd9, 0x63, 0x8f, 0x3d, 0xa0, 0x88, 0x35, 0x27, 0x2e, 0xfc, + 0x01, 0x3d, 0xa1, 0x19, 0x4f, 0xe2, 0x90, 0x28, 0xb4, 0x95, 0x72, 0x9b, 0xf9, 0xe6, 0xbd, 0xef, + 0x7b, 0xef, 0x9b, 0x37, 0x83, 0x3e, 0x9e, 0x9c, 0x70, 0x97, 0x25, 0xde, 0x24, 0x1f, 0x41, 0x16, + 0x83, 0x00, 0xee, 0xa5, 0x93, 0xd0, 0xa3, 0x29, 0xe3, 0x5e, 0x00, 0x99, 0x60, 0x0f, 0x58, 0x40, + 0x25, 0x3a, 0x1d, 0x8c, 0x40, 0xd0, 0x81, 0x17, 0x42, 0x0c, 0x19, 0x15, 0x30, 0x76, 0xd3, 0x2c, + 0x11, 0x09, 0xf6, 0x4a, 0x02, 0xb7, 0x22, 0x70, 0xd3, 0x49, 0xe8, 0x4a, 0x02, 0x77, 0x95, 0xc0, + 0xd5, 0x04, 0x87, 0x37, 0x42, 0x26, 0xce, 0xf2, 0x91, 0x1b, 0x24, 0x91, 0x17, 0x26, 0x61, 0xe2, + 0x29, 0x9e, 0x51, 0xfe, 0x40, 0xed, 0xd4, 0x46, 0xad, 0x4a, 0xfe, 0xc3, 0xf7, 0x75, 0x81, 0x34, + 0x65, 0x11, 0x0d, 0xce, 0x58, 0x0c, 0xd9, 0xac, 0x2a, 0x31, 0x02, 0x41, 0xbd, 0xe9, 0x46, 0x55, + 0x87, 0xde, 0xb6, 0xac, 0x2c, 0x8f, 0x05, 0x8b, 0x60, 0x23, 0xe1, 0x83, 0xe7, 0x25, 0xf0, 0xe0, + 0x0c, 0x22, 0xba, 0x91, 0xf7, 0xde, 0xb6, 0xbc, 0x5c, 0xb0, 0x73, 0x8f, 0xc5, 0x82, 0x8b, 0x6c, + 0x3d, 0xc9, 0xf9, 0xbb, 0x8e, 0x5e, 0xbb, 0x55, 0x79, 0x73, 0xca, 0xc2, 0x98, 0xc5, 0x21, 0x81, + 0x1f, 0x73, 0xe0, 0x02, 0xff, 0x80, 0x3a, 0xb2, 0xad, 0x31, 0x15, 0xd4, 0x34, 0xfa, 0xc6, 0x51, + 0xef, 0xf8, 0x5d, 0x57, 0x9b, 0xbc, 0xaa, 0x52, 0xd9, 0x2c, 0xa3, 0xdd, 0xe9, 0xc0, 0xfd, 0x72, + 0xf4, 0x10, 0x02, 0x71, 0x0f, 0x04, 0xf5, 0xf1, 0xc5, 0xdc, 0xae, 0x15, 0x73, 0x1b, 0x55, 0x18, + 0x59, 0xb2, 0xe2, 0x14, 0x35, 0x79, 0x0a, 0x81, 0x59, 0x57, 0xec, 0x5f, 0xb8, 0x2f, 0x79, 0x85, + 0xee, 0xd6, 0xda, 0x4f, 0x53, 0x08, 0xfc, 0x7d, 0xad, 0xdd, 0x94, 0x3b, 0xa2, 0x94, 0xf0, 0x23, + 0xd4, 0xe6, 0x82, 0x8a, 0x9c, 0x9b, 0x0d, 0xa5, 0xf9, 0xd5, 0x0e, 0x35, 0x15, 0xaf, 0x7f, 0xa0, + 0x55, 0xdb, 0xe5, 0x9e, 0x68, 0x3d, 0xe7, 0xb7, 0x3a, 0x72, 0xb6, 0xe6, 0xde, 0x4a, 0xe2, 0x31, + 0x13, 0x2c, 0x89, 0xf1, 0x09, 0x6a, 0x8a, 0x59, 0x0a, 0xca, 0xf0, 0xae, 0xff, 0xfa, 0xa2, 0x85, + 0xfb, 0xb3, 0x14, 0x9e, 0xcd, 0xed, 0x57, 0xd7, 0xe3, 0x25, 0x4e, 0x54, 0x06, 0x7e, 0x13, 0xb5, + 0x33, 0xa0, 0x3c, 0x89, 0x95, 0x9d, 0xdd, 0xaa, 0x10, 0xa2, 0x50, 0xa2, 0x4f, 0xf1, 0x5b, 0x68, + 0x2f, 0x02, 0xce, 0x69, 0x08, 0xca, 0x83, 0xae, 0x7f, 0x45, 0x07, 0xee, 0xdd, 0x2b, 0x61, 0xb2, + 0x38, 0xc7, 0x0f, 0xd1, 0xc1, 0x39, 0xe5, 0x62, 0x98, 0x8e, 0xa9, 0x80, 0xfb, 0x2c, 0x02, 0xb3, + 0xa9, 0x5c, 0x7b, 0xfb, 0xc5, 0xe6, 0x40, 0x66, 0xf8, 0xd7, 0x34, 0xfb, 0xc1, 0xdd, 0xff, 0x30, + 0x91, 0x35, 0x66, 0xe7, 0x1f, 0x03, 0x5d, 0xdf, 0xea, 0xcf, 0x5d, 0xc6, 0x05, 0xfe, 0x7e, 0x63, + 0x1e, 0xdd, 0x17, 0xab, 0x43, 0x66, 0xab, 0x69, 0xbc, 0xaa, 0x6b, 0xe9, 0x2c, 0x90, 0x95, 0x59, + 0x4c, 0x50, 0x8b, 0x09, 0x88, 0xb8, 0x59, 0xef, 0x37, 0x8e, 0x7a, 0xc7, 0x9f, 0xed, 0x6e, 0x30, + 0xfc, 0x57, 0xb4, 0x6c, 0xeb, 0x8e, 0x14, 0x20, 0xa5, 0x8e, 0x53, 0x34, 0xfe, 0xa7, 0x61, 0x39, + 0xb2, 0xf8, 0x0d, 0xb4, 0x97, 0x95, 0x5b, 0xd5, 0xef, 0xbe, 0xdf, 0x93, 0xb7, 0xa4, 0x23, 0xc8, + 0xe2, 0x0c, 0xbf, 0x83, 0x3a, 0x39, 0x87, 0x2c, 0xa6, 0x11, 0xe8, 0xab, 0x5f, 0xf6, 0x39, 0xd4, + 0x38, 0x59, 0x46, 0xe0, 0xeb, 0xa8, 0x91, 0xb3, 0xb1, 0xbe, 0xfa, 0x9e, 0x0e, 0x6c, 0x0c, 0xef, + 0x7c, 0x42, 0x24, 0x8e, 0x1d, 0xd4, 0x0e, 0xb3, 0x24, 0x4f, 0xb9, 0xd9, 0xec, 0x37, 0x8e, 0xba, + 0x3e, 0x92, 0x13, 0xf4, 0xa9, 0x42, 0x88, 0x3e, 0xc1, 0xc7, 0xa8, 0x33, 0x81, 0xd9, 0x50, 0x8d, + 0x50, 0x4b, 0x45, 0x5d, 0x93, 0x51, 0x0a, 0xe0, 0xcf, 0xe6, 0x76, 0xe7, 0x73, 0x7d, 0x4a, 0x96, + 0x71, 0xf8, 0x27, 0xd4, 0x82, 0x47, 0x22, 0xa3, 0x66, 0x5b, 0xd9, 0xfb, 0xed, 0x6e, 0xdf, 0xba, + 0x7b, 0x5b, 0x72, 0xdf, 0x8e, 0x45, 0x36, 0xab, 0xdc, 0x56, 0x18, 0x29, 0x65, 0x0f, 0x73, 0x84, + 0xaa, 0x18, 0x7c, 0x15, 0x35, 0x26, 0x30, 0x2b, 0x1f, 0x19, 0x91, 0x4b, 0xfc, 0x35, 0x6a, 0x4d, + 0xe9, 0x79, 0x0e, 0xfa, 0x2f, 0xfa, 0xe8, 0xa5, 0xeb, 0x53, 0xec, 0xdf, 0x48, 0x0a, 0x52, 0x32, + 0xdd, 0xac, 0x9f, 0x18, 0xce, 0xdc, 0x40, 0xf6, 0x73, 0x7e, 0x0c, 0xfc, 0xb3, 0x81, 0x50, 0xb0, + 0x78, 0xd0, 0xdc, 0x34, 0x94, 0x41, 0xa7, 0xbb, 0x33, 0x68, 0xf9, 0x59, 0x54, 0xbf, 0xf1, 0x12, + 0xe2, 0x64, 0x45, 0x1a, 0x0f, 0x50, 0x6f, 0x85, 0x5a, 0x59, 0xb1, 0xef, 0x5f, 0x29, 0xe6, 0x76, + 0x6f, 0x85, 0x9c, 0xac, 0xc6, 0x38, 0x1f, 0x6a, 0x5f, 0x55, 0xe7, 0xd8, 0x5e, 0x3c, 0x22, 0x43, + 0x8d, 0x45, 0x77, 0x7d, 0xe8, 0x6f, 0x76, 0x7e, 0xfd, 0xdd, 0xae, 0x3d, 0xfe, 0xa3, 0x5f, 0xf3, + 0x6f, 0x5c, 0x5c, 0x5a, 0xb5, 0x27, 0x97, 0x56, 0xed, 0xe9, 0xa5, 0x55, 0x7b, 0x5c, 0x58, 0xc6, + 0x45, 0x61, 0x19, 0x4f, 0x0a, 0xcb, 0x78, 0x5a, 0x58, 0xc6, 0x9f, 0x85, 0x65, 0xfc, 0xf2, 0x97, + 0x55, 0xfb, 0x6e, 0x4f, 0x77, 0xf7, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe1, 0xa1, 0xbb, 0xcc, + 0x20, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.proto new file mode 100644 index 000000000..e62bd5724 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/generated.proto @@ -0,0 +1,122 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.certificates.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// Describes a certificate signing request +message CertificateSigningRequest { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The certificate request itself and any additional information. + // +optional + optional CertificateSigningRequestSpec spec = 2; + + // Derived information about the request. + // +optional + optional CertificateSigningRequestStatus status = 3; +} + +message CertificateSigningRequestCondition { + // request approval state, currently Approved or Denied. + optional string type = 1; + + // brief reason for the request state + // +optional + optional string reason = 2; + + // human readable message with details about the request state + // +optional + optional string message = 3; + + // timestamp for the last update to this condition + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 4; +} + +message CertificateSigningRequestList { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated CertificateSigningRequest items = 2; +} + +// This information is immutable after the request is created. Only the Request +// and Usages fields can be set on creation, other fields are derived by +// Kubernetes and cannot be modified by users. +message CertificateSigningRequestSpec { + // Base64-encoded PKCS#10 CSR data + optional bytes request = 1; + + // allowedUsages specifies a set of usage contexts the key will be + // valid for. + // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 + // https://tools.ietf.org/html/rfc5280#section-4.2.1.12 + repeated string keyUsage = 5; + + // Information about the requesting user. + // See user.Info interface for details. + // +optional + optional string username = 2; + + // UID information about the requesting user. + // See user.Info interface for details. + // +optional + optional string uid = 3; + + // Group information about the requesting user. + // See user.Info interface for details. + // +optional + repeated string groups = 4; + + // Extra information about the requesting user. + // See user.Info interface for details. + // +optional + map extra = 6; +} + +message CertificateSigningRequestStatus { + // Conditions applied to the request, such as approval or denial. + // +optional + repeated CertificateSigningRequestCondition conditions = 1; + + // If request was approved, the controller will place the issued certificate here. + // +optional + optional bytes certificate = 2; +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/helpers.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/helpers.go new file mode 100644 index 000000000..1375063c1 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/helpers.go @@ -0,0 +1,38 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "crypto/x509" + "encoding/pem" + "errors" +) + +// ParseCSR extracts the CSR from the API object and decodes it. +func ParseCSR(obj *CertificateSigningRequest) (*x509.CertificateRequest, error) { + // extract PEM from request object + pemBytes := obj.Spec.Request + block, _ := pem.Decode(pemBytes) + if block == nil || block.Type != "CERTIFICATE REQUEST" { + return nil, errors.New("PEM block type must be CERTIFICATE REQUEST") + } + csr, err := x509.ParseCertificateRequest(block.Bytes) + if err != nil { + return nil, err + } + return csr, nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/register.go new file mode 100644 index 000000000..582916c8b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/register.go @@ -0,0 +1,66 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "certificates.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addConversionFuncs, addDefaultingFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &CertificateSigningRequest{}, + &CertificateSigningRequestList{}, + ) + + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.generated.go new file mode 100644 index 000000000..3c4771bbd --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.generated.go @@ -0,0 +1,2624 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *CertificateSigningRequest) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequest) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequest) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = CertificateSigningRequestSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = CertificateSigningRequestStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequest) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = CertificateSigningRequestSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = CertificateSigningRequestStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Usages) != 0 + yyq2[2] = x.Username != "" + yyq2[3] = x.UID != "" + yyq2[4] = len(x.Groups) != 0 + yyq2[5] = len(x.Extra) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Request == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Request)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("request")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Request == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Request)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Usages == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceKeyUsage(([]KeyUsage)(x.Usages), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("usages")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Usages == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceKeyUsage(([]KeyUsage)(x.Usages), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("username")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.Extra == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "request": + if r.TryDecodeAsNil() { + x.Request = nil + } else { + yyv4 := &x.Request + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *yyv4 = r.DecodeBytes(*(*[]byte)(yyv4), false, false) + } + } + case "usages": + if r.TryDecodeAsNil() { + x.Usages = nil + } else { + yyv6 := &x.Usages + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceKeyUsage((*[]KeyUsage)(yyv6), d) + } + } + case "username": + if r.TryDecodeAsNil() { + x.Username = "" + } else { + yyv8 := &x.Username + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv10 := &x.UID + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv12 := &x.Groups + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + z.F.DecSliceStringX(yyv12, false, d) + } + } + case "extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv14 := &x.Extra + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv14), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Request = nil + } else { + yyv17 := &x.Request + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *yyv17 = r.DecodeBytes(*(*[]byte)(yyv17), false, false) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Usages = nil + } else { + yyv19 := &x.Usages + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceKeyUsage((*[]KeyUsage)(yyv19), d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Username = "" + } else { + yyv21 := &x.Username + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + yyv23 := &x.UID + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv25 := &x.Groups + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + z.F.DecSliceStringX(yyv25, false, d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv27 := &x.Extra + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv27), d) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x *CertificateSigningRequestStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Conditions) != 0 + yyq2[1] = len(x.Certificate) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceCertificateSigningRequestCondition(([]CertificateSigningRequestCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceCertificateSigningRequestCondition(([]CertificateSigningRequestCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Certificate == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Certificate)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("certificate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Certificate == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Certificate)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv4 := &x.Conditions + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceCertificateSigningRequestCondition((*[]CertificateSigningRequestCondition)(yyv4), d) + } + } + case "certificate": + if r.TryDecodeAsNil() { + x.Certificate = nil + } else { + yyv6 := &x.Certificate + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *yyv6 = r.DecodeBytes(*(*[]byte)(yyv6), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv9 := &x.Conditions + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceCertificateSigningRequestCondition((*[]CertificateSigningRequestCondition)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Certificate = nil + } else { + yyv11 := &x.Certificate + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *yyv11 = r.DecodeBytes(*(*[]byte)(yyv11), false, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RequestConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RequestConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *CertificateSigningRequestCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.Reason != "" + yyq2[2] = x.Message != "" + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.LastUpdateTime + yym14 := z.EncBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.EncExt(yy13) { + } else if yym14 { + z.EncBinaryMarshal(yy13) + } else if !yym14 && z.IsJSONHandle() { + z.EncJSONMarshal(yy13) + } else { + z.EncFallback(yy13) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastUpdateTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy15 := &x.LastUpdateTime + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv5 := &x.Reason + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv7 := &x.Message + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + case "lastUpdateTime": + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_v1.Time{} + } else { + yyv9 := &x.LastUpdateTime + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else if yym10 { + z.DecBinaryUnmarshal(yyv9) + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv9) + } else { + z.DecFallback(yyv9, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv12 := &x.Type + yyv12.CodecDecodeSelf(d) + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv13 := &x.Reason + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv15 := &x.Message + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_v1.Time{} + } else { + yyv17 := &x.LastUpdateTime + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceCertificateSigningRequest(([]CertificateSigningRequest)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceCertificateSigningRequest(([]CertificateSigningRequest)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceCertificateSigningRequest((*[]CertificateSigningRequest)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceCertificateSigningRequest((*[]CertificateSigningRequest)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x KeyUsage) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *KeyUsage) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x codecSelfer1234) encSliceKeyUsage(v []KeyUsage, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceKeyUsage(v *[]KeyUsage, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []KeyUsage{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]KeyUsage, yyrl1) + } + } else { + yyv1 = make([]KeyUsage, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 KeyUsage + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []KeyUsage{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk1)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv1 == nil { + r.EncodeNil() + } else { + yyv1.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 40) + yyv1 = make(map[string]ExtraValue, yyrl1) + *v = yyv1 + } + var yymk1 string + var yymv1 ExtraValue + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv4 := &yymv1 + yyv4.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv5 := &yymk1 + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + *((*string)(yyv5)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = nil + } else { + yyv7 := &yymv1 + yyv7.CodecDecodeSelf(d) + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv1)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]string, yyrl1) + } + } else { + yyv1 = make([]string, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 string + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv6 := &yyv1[yyj1] + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []string{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceCertificateSigningRequestCondition(v []CertificateSigningRequestCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCertificateSigningRequestCondition(v *[]CertificateSigningRequestCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []CertificateSigningRequestCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]CertificateSigningRequestCondition, yyrl1) + } + } else { + yyv1 = make([]CertificateSigningRequestCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CertificateSigningRequestCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, CertificateSigningRequestCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CertificateSigningRequestCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, CertificateSigningRequestCondition{}) // var yyz1 CertificateSigningRequestCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = CertificateSigningRequestCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []CertificateSigningRequestCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceCertificateSigningRequest(v []CertificateSigningRequest, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCertificateSigningRequest(v *[]CertificateSigningRequest, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []CertificateSigningRequest{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 424) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]CertificateSigningRequest, yyrl1) + } + } else { + yyv1 = make([]CertificateSigningRequest, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CertificateSigningRequest{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, CertificateSigningRequest{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CertificateSigningRequest{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, CertificateSigningRequest{}) // var yyz1 CertificateSigningRequest + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = CertificateSigningRequest{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []CertificateSigningRequest{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.go new file mode 100644 index 000000000..a9149ba8d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types.go @@ -0,0 +1,152 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// Describes a certificate signing request +type CertificateSigningRequest struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The certificate request itself and any additional information. + // +optional + Spec CertificateSigningRequestSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Derived information about the request. + // +optional + Status CertificateSigningRequestStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// This information is immutable after the request is created. Only the Request +// and Usages fields can be set on creation, other fields are derived by +// Kubernetes and cannot be modified by users. +type CertificateSigningRequestSpec struct { + // Base64-encoded PKCS#10 CSR data + Request []byte `json:"request" protobuf:"bytes,1,opt,name=request"` + + // allowedUsages specifies a set of usage contexts the key will be + // valid for. + // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 + // https://tools.ietf.org/html/rfc5280#section-4.2.1.12 + Usages []KeyUsage `json:"usages,omitempty" protobuf:"bytes,5,opt,name=keyUsage"` + + // Information about the requesting user. + // See user.Info interface for details. + // +optional + Username string `json:"username,omitempty" protobuf:"bytes,2,opt,name=username"` + // UID information about the requesting user. + // See user.Info interface for details. + // +optional + UID string `json:"uid,omitempty" protobuf:"bytes,3,opt,name=uid"` + // Group information about the requesting user. + // See user.Info interface for details. + // +optional + Groups []string `json:"groups,omitempty" protobuf:"bytes,4,rep,name=groups"` + // Extra information about the requesting user. + // See user.Info interface for details. + // +optional + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,6,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} + +type CertificateSigningRequestStatus struct { + // Conditions applied to the request, such as approval or denial. + // +optional + Conditions []CertificateSigningRequestCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"` + + // If request was approved, the controller will place the issued certificate here. + // +optional + Certificate []byte `json:"certificate,omitempty" protobuf:"bytes,2,opt,name=certificate"` +} + +type RequestConditionType string + +// These are the possible conditions for a certificate request. +const ( + CertificateApproved RequestConditionType = "Approved" + CertificateDenied RequestConditionType = "Denied" +) + +type CertificateSigningRequestCondition struct { + // request approval state, currently Approved or Denied. + Type RequestConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=RequestConditionType"` + // brief reason for the request state + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` + // human readable message with details about the request state + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // timestamp for the last update to this condition + // +optional + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,4,opt,name=lastUpdateTime"` +} + +type CertificateSigningRequestList struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + Items []CertificateSigningRequest `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// KeyUsages specifies valid usage contexts for keys. +// See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 +// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 +type KeyUsage string + +const ( + UsageSigning KeyUsage = "signing" + UsageDigitalSignature KeyUsage = "digital signature" + UsageContentCommittment KeyUsage = "content committment" + UsageKeyEncipherment KeyUsage = "key encipherment" + UsageKeyAgreement KeyUsage = "key agreement" + UsageDataEncipherment KeyUsage = "data encipherment" + UsageCertSign KeyUsage = "cert sign" + UsageCRLSign KeyUsage = "crl sign" + UsageEncipherOnly KeyUsage = "encipher only" + UsageDecipherOnly KeyUsage = "decipher only" + UsageAny KeyUsage = "any" + UsageServerAuth KeyUsage = "server auth" + UsageClientAuth KeyUsage = "client auth" + UsageCodeSigning KeyUsage = "code signing" + UsageEmailProtection KeyUsage = "email protection" + UsageSMIME KeyUsage = "s/mime" + UsageIPsecEndSystem KeyUsage = "ipsec end system" + UsageIPsecTunnel KeyUsage = "ipsec tunnel" + UsageIPsecUser KeyUsage = "ipsec user" + UsageTimestamping KeyUsage = "timestamping" + UsageOCSPSigning KeyUsage = "ocsp signing" + UsageMicrosoftSGC KeyUsage = "microsoft sgc" + UsageNetscapSGC KeyUsage = "netscape sgc" +) diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..4fd91df06 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,74 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_CertificateSigningRequest = map[string]string{ + "": "Describes a certificate signing request", + "spec": "The certificate request itself and any additional information.", + "status": "Derived information about the request.", +} + +func (CertificateSigningRequest) SwaggerDoc() map[string]string { + return map_CertificateSigningRequest +} + +var map_CertificateSigningRequestCondition = map[string]string{ + "type": "request approval state, currently Approved or Denied.", + "reason": "brief reason for the request state", + "message": "human readable message with details about the request state", + "lastUpdateTime": "timestamp for the last update to this condition", +} + +func (CertificateSigningRequestCondition) SwaggerDoc() map[string]string { + return map_CertificateSigningRequestCondition +} + +var map_CertificateSigningRequestSpec = map[string]string{ + "": "This information is immutable after the request is created. Only the Request and Usages fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.", + "request": "Base64-encoded PKCS#10 CSR data", + "usages": "allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n https://tools.ietf.org/html/rfc5280#section-4.2.1.12", + "username": "Information about the requesting user. See user.Info interface for details.", + "uid": "UID information about the requesting user. See user.Info interface for details.", + "groups": "Group information about the requesting user. See user.Info interface for details.", + "extra": "Extra information about the requesting user. See user.Info interface for details.", +} + +func (CertificateSigningRequestSpec) SwaggerDoc() map[string]string { + return map_CertificateSigningRequestSpec +} + +var map_CertificateSigningRequestStatus = map[string]string{ + "conditions": "Conditions applied to the request, such as approval or denial.", + "certificate": "If request was approved, the controller will place the issued certificate here.", +} + +func (CertificateSigningRequestStatus) SwaggerDoc() map[string]string { + return map_CertificateSigningRequestStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..f13317848 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.conversion.go @@ -0,0 +1,189 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + certificates "k8s.io/client-go/pkg/apis/certificates" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_CertificateSigningRequest_To_certificates_CertificateSigningRequest, + Convert_certificates_CertificateSigningRequest_To_v1beta1_CertificateSigningRequest, + Convert_v1beta1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition, + Convert_certificates_CertificateSigningRequestCondition_To_v1beta1_CertificateSigningRequestCondition, + Convert_v1beta1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList, + Convert_certificates_CertificateSigningRequestList_To_v1beta1_CertificateSigningRequestList, + Convert_v1beta1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec, + Convert_certificates_CertificateSigningRequestSpec_To_v1beta1_CertificateSigningRequestSpec, + Convert_v1beta1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus, + Convert_certificates_CertificateSigningRequestStatus_To_v1beta1_CertificateSigningRequestStatus, + ) +} + +func autoConvert_v1beta1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(in *CertificateSigningRequest, out *certificates.CertificateSigningRequest, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_CertificateSigningRequest_To_certificates_CertificateSigningRequest is an autogenerated conversion function. +func Convert_v1beta1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(in *CertificateSigningRequest, out *certificates.CertificateSigningRequest, s conversion.Scope) error { + return autoConvert_v1beta1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequest_To_v1beta1_CertificateSigningRequest(in *certificates.CertificateSigningRequest, out *CertificateSigningRequest, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certificates_CertificateSigningRequestSpec_To_v1beta1_CertificateSigningRequestSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certificates_CertificateSigningRequestStatus_To_v1beta1_CertificateSigningRequestStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certificates_CertificateSigningRequest_To_v1beta1_CertificateSigningRequest is an autogenerated conversion function. +func Convert_certificates_CertificateSigningRequest_To_v1beta1_CertificateSigningRequest(in *certificates.CertificateSigningRequest, out *CertificateSigningRequest, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequest_To_v1beta1_CertificateSigningRequest(in, out, s) +} + +func autoConvert_v1beta1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(in *CertificateSigningRequestCondition, out *certificates.CertificateSigningRequestCondition, s conversion.Scope) error { + out.Type = certificates.RequestConditionType(in.Type) + out.Reason = in.Reason + out.Message = in.Message + out.LastUpdateTime = in.LastUpdateTime + return nil +} + +// Convert_v1beta1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition is an autogenerated conversion function. +func Convert_v1beta1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(in *CertificateSigningRequestCondition, out *certificates.CertificateSigningRequestCondition, s conversion.Scope) error { + return autoConvert_v1beta1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestCondition_To_v1beta1_CertificateSigningRequestCondition(in *certificates.CertificateSigningRequestCondition, out *CertificateSigningRequestCondition, s conversion.Scope) error { + out.Type = RequestConditionType(in.Type) + out.Reason = in.Reason + out.Message = in.Message + out.LastUpdateTime = in.LastUpdateTime + return nil +} + +// Convert_certificates_CertificateSigningRequestCondition_To_v1beta1_CertificateSigningRequestCondition is an autogenerated conversion function. +func Convert_certificates_CertificateSigningRequestCondition_To_v1beta1_CertificateSigningRequestCondition(in *certificates.CertificateSigningRequestCondition, out *CertificateSigningRequestCondition, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestCondition_To_v1beta1_CertificateSigningRequestCondition(in, out, s) +} + +func autoConvert_v1beta1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList(in *CertificateSigningRequestList, out *certificates.CertificateSigningRequestList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]certificates.CertificateSigningRequest)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList is an autogenerated conversion function. +func Convert_v1beta1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList(in *CertificateSigningRequestList, out *certificates.CertificateSigningRequestList, s conversion.Scope) error { + return autoConvert_v1beta1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestList_To_v1beta1_CertificateSigningRequestList(in *certificates.CertificateSigningRequestList, out *CertificateSigningRequestList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]CertificateSigningRequest, 0) + } else { + out.Items = *(*[]CertificateSigningRequest)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_certificates_CertificateSigningRequestList_To_v1beta1_CertificateSigningRequestList is an autogenerated conversion function. +func Convert_certificates_CertificateSigningRequestList_To_v1beta1_CertificateSigningRequestList(in *certificates.CertificateSigningRequestList, out *CertificateSigningRequestList, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestList_To_v1beta1_CertificateSigningRequestList(in, out, s) +} + +func autoConvert_v1beta1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(in *CertificateSigningRequestSpec, out *certificates.CertificateSigningRequestSpec, s conversion.Scope) error { + out.Request = *(*[]byte)(unsafe.Pointer(&in.Request)) + out.Usages = *(*[]certificates.KeyUsage)(unsafe.Pointer(&in.Usages)) + out.Username = in.Username + out.UID = in.UID + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]certificates.ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_v1beta1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec is an autogenerated conversion function. +func Convert_v1beta1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(in *CertificateSigningRequestSpec, out *certificates.CertificateSigningRequestSpec, s conversion.Scope) error { + return autoConvert_v1beta1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestSpec_To_v1beta1_CertificateSigningRequestSpec(in *certificates.CertificateSigningRequestSpec, out *CertificateSigningRequestSpec, s conversion.Scope) error { + if in.Request == nil { + out.Request = make([]byte, 0) + } else { + out.Request = *(*[]byte)(unsafe.Pointer(&in.Request)) + } + out.Usages = *(*[]KeyUsage)(unsafe.Pointer(&in.Usages)) + out.Username = in.Username + out.UID = in.UID + out.Groups = *(*[]string)(unsafe.Pointer(&in.Groups)) + out.Extra = *(*map[string]ExtraValue)(unsafe.Pointer(&in.Extra)) + return nil +} + +// Convert_certificates_CertificateSigningRequestSpec_To_v1beta1_CertificateSigningRequestSpec is an autogenerated conversion function. +func Convert_certificates_CertificateSigningRequestSpec_To_v1beta1_CertificateSigningRequestSpec(in *certificates.CertificateSigningRequestSpec, out *CertificateSigningRequestSpec, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestSpec_To_v1beta1_CertificateSigningRequestSpec(in, out, s) +} + +func autoConvert_v1beta1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(in *CertificateSigningRequestStatus, out *certificates.CertificateSigningRequestStatus, s conversion.Scope) error { + out.Conditions = *(*[]certificates.CertificateSigningRequestCondition)(unsafe.Pointer(&in.Conditions)) + out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) + return nil +} + +// Convert_v1beta1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus is an autogenerated conversion function. +func Convert_v1beta1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(in *CertificateSigningRequestStatus, out *certificates.CertificateSigningRequestStatus, s conversion.Scope) error { + return autoConvert_v1beta1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestStatus_To_v1beta1_CertificateSigningRequestStatus(in *certificates.CertificateSigningRequestStatus, out *CertificateSigningRequestStatus, s conversion.Scope) error { + out.Conditions = *(*[]CertificateSigningRequestCondition)(unsafe.Pointer(&in.Conditions)) + out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) + return nil +} + +// Convert_certificates_CertificateSigningRequestStatus_To_v1beta1_CertificateSigningRequestStatus is an autogenerated conversion function. +func Convert_certificates_CertificateSigningRequestStatus_To_v1beta1_CertificateSigningRequestStatus(in *certificates.CertificateSigningRequestStatus, out *CertificateSigningRequestStatus, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestStatus_To_v1beta1_CertificateSigningRequestStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..f3f172c70 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,155 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CertificateSigningRequest, InType: reflect.TypeOf(&CertificateSigningRequest{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CertificateSigningRequestCondition, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CertificateSigningRequestList, InType: reflect.TypeOf(&CertificateSigningRequestList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CertificateSigningRequestSpec, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CertificateSigningRequestStatus, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})}, + ) +} + +// DeepCopy_v1beta1_CertificateSigningRequest is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CertificateSigningRequest(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequest) + out := out.(*CertificateSigningRequest) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_CertificateSigningRequestSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_CertificateSigningRequestStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_CertificateSigningRequestCondition is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CertificateSigningRequestCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestCondition) + out := out.(*CertificateSigningRequestCondition) + *out = *in + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1beta1_CertificateSigningRequestList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CertificateSigningRequestList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestList) + out := out.(*CertificateSigningRequestList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CertificateSigningRequest, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_CertificateSigningRequest(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_CertificateSigningRequestSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CertificateSigningRequestSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestSpec) + out := out.(*CertificateSigningRequestSpec) + *out = *in + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]byte, len(*in)) + copy(*out, *in) + } + if in.Usages != nil { + in, out := &in.Usages, &out.Usages + *out = make([]KeyUsage, len(*in)) + copy(*out, *in) + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_CertificateSigningRequestStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CertificateSigningRequestStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestStatus) + out := out.(*CertificateSigningRequestStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CertificateSigningRequestCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_CertificateSigningRequestCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Certificate != nil { + in, out := &in.Certificate, &out.Certificate + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..3c5ae0362 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/v1beta1/zz_generated.defaults.go @@ -0,0 +1,47 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&CertificateSigningRequest{}, func(obj interface{}) { SetObjectDefaults_CertificateSigningRequest(obj.(*CertificateSigningRequest)) }) + scheme.AddTypeDefaultingFunc(&CertificateSigningRequestList{}, func(obj interface{}) { + SetObjectDefaults_CertificateSigningRequestList(obj.(*CertificateSigningRequestList)) + }) + return nil +} + +func SetObjectDefaults_CertificateSigningRequest(in *CertificateSigningRequest) { + SetDefaults_CertificateSigningRequestSpec(&in.Spec) +} + +func SetObjectDefaults_CertificateSigningRequestList(in *CertificateSigningRequestList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_CertificateSigningRequest(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/certificates/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/certificates/zz_generated.deepcopy.go new file mode 100644 index 000000000..589e94c0e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/certificates/zz_generated.deepcopy.go @@ -0,0 +1,155 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package certificates + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequest, InType: reflect.TypeOf(&CertificateSigningRequest{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestCondition, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestList, InType: reflect.TypeOf(&CertificateSigningRequestList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestSpec, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestStatus, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})}, + ) +} + +// DeepCopy_certificates_CertificateSigningRequest is an autogenerated deepcopy function. +func DeepCopy_certificates_CertificateSigningRequest(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequest) + out := out.(*CertificateSigningRequest) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_certificates_CertificateSigningRequestSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_certificates_CertificateSigningRequestStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_certificates_CertificateSigningRequestCondition is an autogenerated deepcopy function. +func DeepCopy_certificates_CertificateSigningRequestCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestCondition) + out := out.(*CertificateSigningRequestCondition) + *out = *in + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + return nil + } +} + +// DeepCopy_certificates_CertificateSigningRequestList is an autogenerated deepcopy function. +func DeepCopy_certificates_CertificateSigningRequestList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestList) + out := out.(*CertificateSigningRequestList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CertificateSigningRequest, len(*in)) + for i := range *in { + if err := DeepCopy_certificates_CertificateSigningRequest(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_certificates_CertificateSigningRequestSpec is an autogenerated deepcopy function. +func DeepCopy_certificates_CertificateSigningRequestSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestSpec) + out := out.(*CertificateSigningRequestSpec) + *out = *in + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]byte, len(*in)) + copy(*out, *in) + } + if in.Usages != nil { + in, out := &in.Usages, &out.Usages + *out = make([]KeyUsage, len(*in)) + copy(*out, *in) + } + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } + return nil + } +} + +// DeepCopy_certificates_CertificateSigningRequestStatus is an autogenerated deepcopy function. +func DeepCopy_certificates_CertificateSigningRequestStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestStatus) + out := out.(*CertificateSigningRequestStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CertificateSigningRequestCondition, len(*in)) + for i := range *in { + if err := DeepCopy_certificates_CertificateSigningRequestCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Certificate != nil { + in, out := &in.Certificate, &out.Certificate + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/BUILD b/vendor/k8s.io/client-go/pkg/apis/extensions/BUILD new file mode 100644 index 000000000..95cb77d78 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/BUILD @@ -0,0 +1,29 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "helpers.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/OWNERS b/vendor/k8s.io/client-go/pkg/apis/extensions/OWNERS new file mode 100755 index 000000000..494763a69 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/OWNERS @@ -0,0 +1,41 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- brendandburns +- derekwaynecarr +- caesarxuchao +- mikedanese +- liggitt +- nikhiljindal +- bprashanth +- erictune +- pmorie +- sttts +- kargakis +- saad-ali +- janetkuo +- justinsb +- ncdc +- timstclair +- mwielgus +- timothysc +- soltysh +- piosz +- dims +- errordeveloper +- madhusudancs +- rootfs +- jszczepkowski +- mml +- resouer +- mbohlool +- david-mcmahon +- therc +- pweil- +- tmrts +- mqliang +- lukaszo +- jianhuiz diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/doc.go b/vendor/k8s.io/client-go/pkg/apis/extensions/doc.go new file mode 100644 index 000000000..87edee41c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package extensions diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/helpers.go b/vendor/k8s.io/client-go/pkg/apis/extensions/helpers.go new file mode 100644 index 000000000..27d3e23ad --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/helpers.go @@ -0,0 +1,37 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package extensions + +import ( + "strings" +) + +// SysctlsFromPodSecurityPolicyAnnotation parses an annotation value of the key +// SysctlsSecurityPolocyAnnotationKey into a slice of sysctls. An empty slice +// is returned if annotation is the empty string. +func SysctlsFromPodSecurityPolicyAnnotation(annotation string) ([]string, error) { + if len(annotation) == 0 { + return []string{}, nil + } + + return strings.Split(annotation, ","), nil +} + +// PodAnnotationsFromSysctls creates an annotation value for a slice of Sysctls. +func PodAnnotationsFromSysctls(sysctls []string) string { + return strings.Join(sysctls, ",") +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/extensions/install/BUILD new file mode 100644 index 000000000..bc197170b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/install/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/install/install.go b/vendor/k8s.io/client-go/pkg/apis/extensions/install/install.go new file mode 100644 index 000000000..1f968e861 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/install/install.go @@ -0,0 +1,51 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/extensions" + "k8s.io/client-go/pkg/apis/extensions/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: extensions.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/extensions", + RootScopedKinds: sets.NewString("PodSecurityPolicy", "ThirdPartyResource"), + AddInternalObjectsToScheme: extensions.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/register.go b/vendor/k8s.io/client-go/pkg/apis/extensions/register.go new file mode 100644 index 000000000..5983636c2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/register.go @@ -0,0 +1,70 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package extensions + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "extensions" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this gets cleaned up when the types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &ReplicationControllerDummy{}, + &Scale{}, + &ThirdPartyResource{}, + &ThirdPartyResourceList{}, + &DaemonSetList{}, + &DaemonSet{}, + &ThirdPartyResourceData{}, + &ThirdPartyResourceDataList{}, + &Ingress{}, + &IngressList{}, + &ReplicaSet{}, + &ReplicaSetList{}, + &PodSecurityPolicy{}, + &PodSecurityPolicyList{}, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/types.go b/vendor/k8s.io/client-go/pkg/apis/extensions/types.go new file mode 100644 index 000000000..48031d8df --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/types.go @@ -0,0 +1,1147 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +This file (together with pkg/apis/extensions/v1beta1/types.go) contain the experimental +types in kubernetes. These API objects are experimental, meaning that the +APIs may be broken at any time by the kubernetes team. + +DISCLAIMER: The implementation of the experimental API group itself is +a temporary one meant as a stopgap solution until kubernetes has proper +support for multiple API groups. The transition may require changes +beyond registration differences. In other words, experimental API group +support is experimental. +*/ + +package extensions + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api" +) + +const ( + // SysctlsPodSecurityPolicyAnnotationKey represents the key of a whitelist of + // allowed safe and unsafe sysctls in a pod spec. It's a comma-separated list of plain sysctl + // names or sysctl patterns (which end in *). The string "*" matches all sysctls. + SysctlsPodSecurityPolicyAnnotationKey string = "security.alpha.kubernetes.io/sysctls" +) + +// describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + Replicas int32 +} + +// represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 + + // label query over pods that should match the replicas count. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector +} + +// +genclient=true +// +noMethods=true + +// represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus +} + +// Dummy definition +type ReplicationControllerDummy struct { + metav1.TypeMeta +} + +// Alpha-level support for Custom Metrics in HPA (as annotations). +type CustomMetricTarget struct { + // Custom Metric name. + Name string + // Custom Metric value (average). + TargetValue resource.Quantity +} + +type CustomMetricTargetList struct { + Items []CustomMetricTarget +} + +type CustomMetricCurrentStatus struct { + // Custom Metric name. + Name string + // Custom Metric value (average). + CurrentValue resource.Quantity +} + +type CustomMetricCurrentStatusList struct { + Items []CustomMetricCurrentStatus +} + +// +genclient=true +// +nonNamespaced=true + +// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource +// types to the API. It consists of one or more Versions of the api. +type ThirdPartyResource struct { + metav1.TypeMeta + + // Standard object metadata + // +optional + metav1.ObjectMeta + + // Description is the description of this object. + // +optional + Description string + + // Versions are versions for this third party object + Versions []APIVersion +} + +type ThirdPartyResourceList struct { + metav1.TypeMeta + + // Standard list metadata. + // +optional + metav1.ListMeta + + // Items is the list of horizontal pod autoscalers. + Items []ThirdPartyResource +} + +// An APIVersion represents a single concrete version of an object model. +// TODO: we should consider merge this struct with GroupVersion in metav1.go +type APIVersion struct { + // Name of this version (e.g. 'v1'). + Name string +} + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +type ThirdPartyResourceData struct { + metav1.TypeMeta + // Standard object metadata. + // +optional + metav1.ObjectMeta + + // Data is the raw JSON data for this data. + // +optional + Data []byte +} + +// +genclient=true + +type Deployment struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior of the Deployment. + // +optional + Spec DeploymentSpec + + // Most recently observed status of the Deployment. + // +optional + Status DeploymentStatus +} + +type DeploymentSpec struct { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + // +optional + Replicas int32 + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + // +optional + Selector *metav1.LabelSelector + + // Template describes the pods that will be created. + Template api.PodTemplateSpec + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + Strategy DeploymentStrategy + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + RevisionHistoryLimit *int32 + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + // +optional + Paused bool + + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + RollbackTo *RollbackConfig + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Once autoRollback is + // implemented, the deployment controller will automatically rollback failed + // deployments. Note that progress will not be estimated during the time a + // deployment is paused. This is not set by default. + ProgressDeadlineSeconds *int32 +} + +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + metav1.TypeMeta + // Required: This must match the Name of a deployment. + Name string + // The annotations to be updated to a deployment + // +optional + UpdatedAnnotations map[string]string + // The config of this deployment rollback. + RollbackTo RollbackConfig +} + +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + Revision int64 +} + +const ( + // DefaultDeploymentUniqueLabelKey is the default key of the selector that is added + // to existing RCs (and label key that is added to its pods) to prevent the existing RCs + // to select new pods (and old pods being select by new RC). + DefaultDeploymentUniqueLabelKey string = "pod-template-hash" +) + +type DeploymentStrategy struct { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + Type DeploymentStrategyType + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + // +optional + RollingUpdate *RollingUpdateDeployment +} + +type DeploymentStrategyType string + +const ( + // Kill all existing pods before creating new ones. + RecreateDeploymentStrategyType DeploymentStrategyType = "Recreate" + + // Replace the old RCs by new one using rolling update i.e gradually scale down the old RCs and scale up the new one. + RollingUpdateDeploymentStrategyType DeploymentStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of rolling update. +type RollingUpdateDeployment struct { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of total pods at the start of update (ex: 10%). + // Absolute number is calculated from percentage by rounding down. + // This can not be 0 if MaxSurge is 0. + // By default, a fixed value of 1 is used. + // Example: when this is set to 30%, the old RC can be scaled down by 30% + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that at least 70% of original number of pods are available at all times + // during the update. + // +optional + MaxUnavailable intstr.IntOrString + + // The maximum number of pods that can be scheduled above the original number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of total pods at + // the start of the update (ex: 10%). This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // By default, a value of 1 is used. + // Example: when this is set to 30%, the new RC can be scaled up by 30% + // immediately when the rolling update starts. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of original pods. + // +optional + MaxSurge intstr.IntOrString +} + +type DeploymentStatus struct { + // The generation observed by the deployment controller. + // +optional + ObservedGeneration int64 + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + Replicas int32 + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + UpdatedReplicas int32 + + // Total number of ready pods targeted by this deployment. + // +optional + ReadyReplicas int32 + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + AvailableReplicas int32 + + // Total number of unavailable pods targeted by this deployment. + // +optional + UnavailableReplicas int32 + + // Represents the latest available observations of a deployment's current state. + Conditions []DeploymentCondition + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + CollisionCount *int64 +} + +type DeploymentConditionType string + +// These are valid conditions of a deployment. +const ( + // Available means the deployment is available, ie. at least the minimum available + // replicas required are up and running for at least minReadySeconds. + DeploymentAvailable DeploymentConditionType = "Available" + // Progressing means the deployment is progressing. Progress for a deployment is + // considered when a new replica set is created or adopted, and when new pods scale + // up or old pods scale down. Progress is not estimated for paused deployments or + // when progressDeadlineSeconds is not specified. + DeploymentProgressing DeploymentConditionType = "Progressing" + // ReplicaFailure is added in a deployment when one of its pods fails to be created + // or deleted. + DeploymentReplicaFailure DeploymentConditionType = "ReplicaFailure" +) + +// DeploymentCondition describes the state of a deployment at a certain point. +type DeploymentCondition struct { + // Type of deployment condition. + Type DeploymentConditionType + // Status of the condition, one of True, False, Unknown. + Status api.ConditionStatus + // The last time this condition was updated. + LastUpdateTime metav1.Time + // Last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time + // The reason for the condition's last transition. + Reason string + // A human readable message indicating details about the transition. + Message string +} + +type DeploymentList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + // Items is the list of deployments. + Items []Deployment +} + +type DaemonSetUpdateStrategy struct { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". + // Default is OnDelete. + // +optional + Type DaemonSetUpdateStrategyType + + // Rolling update config params. Present only if type = "RollingUpdate". + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + RollingUpdate *RollingUpdateDaemonSet +} + +type DaemonSetUpdateStrategyType string + +const ( + // Replace the old daemons by new ones using rolling update i.e replace them on each node one after the other. + RollingUpdateDaemonSetStrategyType DaemonSetUpdateStrategyType = "RollingUpdate" + + // Replace the old daemons only when it's killed + OnDeleteDaemonSetStrategyType DaemonSetUpdateStrategyType = "OnDelete" +) + +// Spec to control the desired behavior of daemon set rolling update. +type RollingUpdateDaemonSet struct { + // The maximum number of DaemonSet pods that can be unavailable during the + // update. Value can be an absolute number (ex: 5) or a percentage of total + // number of DaemonSet pods at the start of the update (ex: 10%). Absolute + // number is calculated from percentage by rounding up. + // This cannot be 0. + // Default value is 1. + // Example: when this is set to 30%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, it then proceeds onto other DaemonSet pods, thus ensuring + // that at least 70% of original number of DaemonSet pods are available at + // all times during the update. + // +optional + MaxUnavailable intstr.IntOrString +} + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // A label query over pods that are managed by the daemon set. + // Must match in order to be controlled. + // If empty, defaulted to labels on Pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector + + // An object that describes the pod that will be created. + // The DaemonSet will create exactly one copy of this pod on every node + // that matches the template's node selector (or on every node if no node + // selector is specified). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template api.PodTemplateSpec + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + UpdateStrategy DaemonSetUpdateStrategy + + // The minimum number of seconds for which a newly created DaemonSet pod should + // be ready without any of its container crashing, for it to be considered + // available. Defaults to 0 (pod will be considered available as soon as it + // is ready). + // +optional + MinReadySeconds int32 + + // DEPRECATED. + // A sequence number representing a specific generation of the template. + // Populated by the system. It can be set only during the creation. + // +optional + TemplateGeneration int64 + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + RevisionHistoryLimit *int32 +} + +// DaemonSetStatus represents the current status of a daemon set. +type DaemonSetStatus struct { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + CurrentNumberScheduled int32 + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + NumberMisscheduled int32 + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + DesiredNumberScheduled int32 + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + NumberReady int32 + + // The most recent generation observed by the daemon set controller. + // +optional + ObservedGeneration int64 + + // The total number of nodes that are running updated daemon pod + // +optional + UpdatedNumberScheduled int32 + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + NumberAvailable int32 + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + NumberUnavailable int32 + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + CollisionCount *int64 +} + +// +genclient=true + +// DaemonSet represents the configuration of a daemon set. +type DaemonSet struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec DaemonSetSpec + + // The current status of this daemon set. This data may be + // out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status DaemonSetStatus +} + +const ( + // DEPRECATED: DefaultDaemonSetUniqueLabelKey is used instead. + // DaemonSetTemplateGenerationKey is the key of the labels that is added + // to daemon set pods to distinguish between old and new pod templates + // during DaemonSet template update. + DaemonSetTemplateGenerationKey string = "pod-template-generation" +) + +// DaemonSetList is a collection of daemon sets. +type DaemonSetList struct { + metav1.TypeMeta + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta + + // A list of daemon sets. + Items []DaemonSet +} + +type ThirdPartyResourceDataList struct { + metav1.TypeMeta + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta + // Items is a list of third party objects + Items []ThirdPartyResourceData +} + +// +genclient=true + +// Ingress is a collection of rules that allow inbound connections to reach the +// endpoints defined by a backend. An Ingress can be configured to give services +// externally-reachable urls, load balance traffic, terminate SSL, offer name +// based virtual hosting etc. +type Ingress struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta + + // Spec is the desired state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec IngressSpec + + // Status is the current state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status IngressStatus +} + +// IngressList is a collection of Ingress. +type IngressList struct { + metav1.TypeMeta + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta + + // Items is the list of Ingress. + Items []Ingress +} + +// IngressSpec describes the Ingress the user wishes to exist. +type IngressSpec struct { + // A default backend capable of servicing requests that don't match any + // rule. At least one of 'backend' or 'rules' must be specified. This field + // is optional to allow the loadbalancer controller or defaulting logic to + // specify a global default. + // +optional + Backend *IngressBackend + + // TLS configuration. Currently the Ingress only supports a single TLS + // port, 443. If multiple members of this list specify different hosts, they + // will be multiplexed on the same port according to the hostname specified + // through the SNI TLS extension, if the ingress controller fulfilling the + // ingress supports SNI. + // +optional + TLS []IngressTLS + + // A list of host rules used to configure the Ingress. If unspecified, or + // no rule matches, all traffic is sent to the default backend. + // +optional + Rules []IngressRule + // TODO: Add the ability to specify load-balancer IP through claims +} + +// IngressTLS describes the transport layer security associated with an Ingress. +type IngressTLS struct { + // Hosts are a list of hosts included in the TLS certificate. The values in + // this list must match the name/s used in the tlsSecret. Defaults to the + // wildcard host setting for the loadbalancer controller fulfilling this + // Ingress, if left unspecified. + // +optional + Hosts []string + // SecretName is the name of the secret used to terminate SSL traffic on 443. + // Field is left optional to allow SSL routing based on SNI hostname alone. + // If the SNI host in a listener conflicts with the "Host" header field used + // by an IngressRule, the SNI host is used for termination and value of the + // Host header is used for routing. + // +optional + SecretName string + // TODO: Consider specifying different modes of termination, protocols etc. +} + +// IngressStatus describe the current state of the Ingress. +type IngressStatus struct { + // LoadBalancer contains the current status of the load-balancer. + // +optional + LoadBalancer api.LoadBalancerStatus +} + +// IngressRule represents the rules mapping the paths under a specified host to +// the related backend services. Incoming requests are first evaluated for a host +// match, then routed to the backend associated with the matching IngressRuleValue. +type IngressRule struct { + // Host is the fully qualified domain name of a network host, as defined + // by RFC 3986. Note the following deviations from the "host" part of the + // URI as defined in the RFC: + // 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the + // IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. + // Incoming requests are matched against the host before the IngressRuleValue. + // If the host is unspecified, the Ingress routes all traffic based on the + // specified IngressRuleValue. + // +optional + Host string + // IngressRuleValue represents a rule to route requests for this IngressRule. + // If unspecified, the rule defaults to a http catch-all. Whether that sends + // just traffic matching the host to the default backend or all traffic to the + // default backend, is left to the controller fulfilling the Ingress. Http is + // currently the only supported IngressRuleValue. + // +optional + IngressRuleValue +} + +// IngressRuleValue represents a rule to apply against incoming requests. If the +// rule is satisfied, the request is routed to the specified backend. Currently +// mixing different types of rules in a single Ingress is disallowed, so exactly +// one of the following must be set. +type IngressRuleValue struct { + //TODO: + // 1. Consider renaming this resource and the associated rules so they + // aren't tied to Ingress. They can be used to route intra-cluster traffic. + // 2. Consider adding fields for ingress-type specific global options + // usable by a loadbalancer, like http keep-alive. + + // +optional + HTTP *HTTPIngressRuleValue +} + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// In the example: http:///? -> backend where +// where parts of the url correspond to RFC 3986, this resource will be used +// to match against everything after the last '/' and before the first '?' +// or '#'. +type HTTPIngressRuleValue struct { + // A collection of paths that map requests to backends. + Paths []HTTPIngressPath + // TODO: Consider adding fields for ingress-type specific global + // options usable by a loadbalancer, like http keep-alive. +} + +// HTTPIngressPath associates a path regex with a backend. Incoming urls matching +// the path are forwarded to the backend. +type HTTPIngressPath struct { + // Path is an extended POSIX regex as defined by IEEE Std 1003.1, + // (i.e this follows the egrep/unix syntax, not the perl syntax) + // matched against the path of an incoming request. Currently it can + // contain characters disallowed from the conventional "path" + // part of a URL as defined by RFC 3986. Paths must begin with + // a '/'. If unspecified, the path defaults to a catch all sending + // traffic to the backend. + // +optional + Path string + + // Backend defines the referenced service endpoint to which the traffic + // will be forwarded to. + Backend IngressBackend +} + +// IngressBackend describes all endpoints for a given service and port. +type IngressBackend struct { + // Specifies the name of the referenced service. + ServiceName string + + // Specifies the port of the referenced service. + ServicePort intstr.IntOrString +} + +// +genclient=true + +// ReplicaSet represents the configuration of a replica set. +type ReplicaSet struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the desired behavior of this ReplicaSet. + // +optional + Spec ReplicaSetSpec + + // Status is the current status of this ReplicaSet. This data may be + // out of date by some window of time. + // +optional + Status ReplicaSetStatus +} + +// ReplicaSetList is a collection of ReplicaSets. +type ReplicaSetList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []ReplicaSet +} + +// ReplicaSetSpec is the specification of a ReplicaSet. +// As the internal representation of a ReplicaSet, it must have +// a Template set. +type ReplicaSetSpec struct { + // Replicas is the number of desired replicas. + Replicas int32 + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 + + // Selector is a label query over pods that should match the replica count. + // Must match in order to be controlled. + // If empty, defaulted to labels on pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // +optional + Template api.PodTemplateSpec +} + +// ReplicaSetStatus represents the current status of a ReplicaSet. +type ReplicaSetStatus struct { + // Replicas is the number of actual replicas. + Replicas int32 + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + // +optional + FullyLabeledReplicas int32 + + // The number of ready replicas for this replica set. + // +optional + ReadyReplicas int32 + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + AvailableReplicas int32 + + // ObservedGeneration is the most recent generation observed by the controller. + // +optional + ObservedGeneration int64 + + // Represents the latest available observations of a replica set's current state. + // +optional + Conditions []ReplicaSetCondition +} + +type ReplicaSetConditionType string + +// These are valid conditions of a replica set. +const ( + // ReplicaSetReplicaFailure is added in a replica set when one of its pods fails to be created + // due to insufficient quota, limit ranges, pod security policy, node selectors, etc. or deleted + // due to kubelet being down or finalizers are failing. + ReplicaSetReplicaFailure ReplicaSetConditionType = "ReplicaFailure" +) + +// ReplicaSetCondition describes the state of a replica set at a certain point. +type ReplicaSetCondition struct { + // Type of replica set condition. + Type ReplicaSetConditionType + // Status of the condition, one of True, False, Unknown. + Status api.ConditionStatus + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time + // The reason for the condition's last transition. + // +optional + Reason string + // A human readable message indicating details about the transition. + // +optional + Message string +} + +// +genclient=true +// +nonNamespaced=true + +// PodSecurityPolicy governs the ability to make requests that affect the SecurityContext +// that will be applied to a pod and container. +type PodSecurityPolicy struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Spec defines the policy enforced. + // +optional + Spec PodSecurityPolicySpec +} + +// PodSecurityPolicySpec defines the policy enforced. +type PodSecurityPolicySpec struct { + // Privileged determines if a pod can request to be run as privileged. + // +optional + Privileged bool + // DefaultAddCapabilities is the default set of capabilities that will be added to the container + // unless the pod spec specifically drops the capability. You may not list a capability in both + // DefaultAddCapabilities and RequiredDropCapabilities. + // +optional + DefaultAddCapabilities []api.Capability + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + // +optional + RequiredDropCapabilities []api.Capability + // AllowedCapabilities is a list of capabilities that can be requested to add to the container. + // Capabilities in this field may be added at the pod author's discretion. + // You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities. + // +optional + AllowedCapabilities []api.Capability + // Volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + // +optional + Volumes []FSType + // HostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + // +optional + HostNetwork bool + // HostPorts determines which host port ranges are allowed to be exposed. + // +optional + HostPorts []HostPortRange + // HostPID determines if the policy allows the use of HostPID in the pod spec. + // +optional + HostPID bool + // HostIPC determines if the policy allows the use of HostIPC in the pod spec. + // +optional + HostIPC bool + // SELinux is the strategy that will dictate the allowable labels that may be set. + SELinux SELinuxStrategyOptions + // RunAsUser is the strategy that will dictate the allowable RunAsUser values that may be set. + RunAsUser RunAsUserStrategyOptions + // SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext. + SupplementalGroups SupplementalGroupsStrategyOptions + // FSGroup is the strategy that will dictate what fs group is used by the SecurityContext. + FSGroup FSGroupStrategyOptions + // ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file + // system. If the container specifically requests to run with a non-read only root file system + // the PSP should deny the pod. + // If set to false the container may run with a read only root file system if it wishes but it + // will not be forced to. + // +optional + ReadOnlyRootFilesystem bool +} + +// HostPortRange defines a range of host ports that will be enabled by a policy +// for pods to use. It requires both the start and end to be defined. +type HostPortRange struct { + // Min is the start of the range, inclusive. + Min int + // Max is the end of the range, inclusive. + Max int +} + +// FSType gives strong typing to different file systems that are used by volumes. +type FSType string + +var ( + AzureFile FSType = "azureFile" + Flocker FSType = "flocker" + FlexVolume FSType = "flexVolume" + HostPath FSType = "hostPath" + EmptyDir FSType = "emptyDir" + GCEPersistentDisk FSType = "gcePersistentDisk" + AWSElasticBlockStore FSType = "awsElasticBlockStore" + GitRepo FSType = "gitRepo" + Secret FSType = "secret" + NFS FSType = "nfs" + ISCSI FSType = "iscsi" + Glusterfs FSType = "glusterfs" + PersistentVolumeClaim FSType = "persistentVolumeClaim" + RBD FSType = "rbd" + Cinder FSType = "cinder" + CephFS FSType = "cephFS" + DownwardAPI FSType = "downwardAPI" + FC FSType = "fc" + ConfigMap FSType = "configMap" + VsphereVolume FSType = "vsphereVolume" + Quobyte FSType = "quobyte" + AzureDisk FSType = "azureDisk" + PhotonPersistentDisk FSType = "photonPersistentDisk" + StorageOS FSType = "storageos" + Projected FSType = "projected" + PortworxVolume FSType = "portworxVolume" + ScaleIO FSType = "scaleIO" + All FSType = "*" +) + +// SELinuxStrategyOptions defines the strategy type and any options used to create the strategy. +type SELinuxStrategyOptions struct { + // Rule is the strategy that will dictate the allowable labels that may be set. + Rule SELinuxStrategy + // seLinuxOptions required to run as; required for MustRunAs + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + SELinuxOptions *api.SELinuxOptions +} + +// SELinuxStrategy denotes strategy types for generating SELinux options for a +// Security. +type SELinuxStrategy string + +const ( + // container must have SELinux labels of X applied. + SELinuxStrategyMustRunAs SELinuxStrategy = "MustRunAs" + // container may make requests for any SELinux context labels. + SELinuxStrategyRunAsAny SELinuxStrategy = "RunAsAny" +) + +// RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy. +type RunAsUserStrategyOptions struct { + // Rule is the strategy that will dictate the allowable RunAsUser values that may be set. + Rule RunAsUserStrategy + // Ranges are the allowed ranges of uids that may be used. + // +optional + Ranges []UserIDRange +} + +// UserIDRange provides a min/max of an allowed range of UserIDs. +type UserIDRange struct { + // Min is the start of the range, inclusive. + Min int64 + // Max is the end of the range, inclusive. + Max int64 +} + +// GroupIDRange provides a min/max of an allowed range of GroupIDs. +type GroupIDRange struct { + // Min is the start of the range, inclusive. + Min int64 + // Max is the end of the range, inclusive. + Max int64 +} + +// RunAsUserStrategy denotes strategy types for generating RunAsUser values for a +// SecurityContext. +type RunAsUserStrategy string + +const ( + // container must run as a particular uid. + RunAsUserStrategyMustRunAs RunAsUserStrategy = "MustRunAs" + // container must run as a non-root uid + RunAsUserStrategyMustRunAsNonRoot RunAsUserStrategy = "MustRunAsNonRoot" + // container may make requests for any uid. + RunAsUserStrategyRunAsAny RunAsUserStrategy = "RunAsAny" +) + +// FSGroupStrategyOptions defines the strategy type and options used to create the strategy. +type FSGroupStrategyOptions struct { + // Rule is the strategy that will dictate what FSGroup is used in the SecurityContext. + // +optional + Rule FSGroupStrategyType + // Ranges are the allowed ranges of fs groups. If you would like to force a single + // fs group then supply a single range with the same start and end. + // +optional + Ranges []GroupIDRange +} + +// FSGroupStrategyType denotes strategy types for generating FSGroup values for a +// SecurityContext +type FSGroupStrategyType string + +const ( + // container must have FSGroup of X applied. + FSGroupStrategyMustRunAs FSGroupStrategyType = "MustRunAs" + // container may make requests for any FSGroup labels. + FSGroupStrategyRunAsAny FSGroupStrategyType = "RunAsAny" +) + +// SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. +type SupplementalGroupsStrategyOptions struct { + // Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext. + // +optional + Rule SupplementalGroupsStrategyType + // Ranges are the allowed ranges of supplemental groups. If you would like to force a single + // supplemental group then supply a single range with the same start and end. + // +optional + Ranges []GroupIDRange +} + +// SupplementalGroupsStrategyType denotes strategy types for determining valid supplemental +// groups for a SecurityContext. +type SupplementalGroupsStrategyType string + +const ( + // container must run as a particular gid. + SupplementalGroupsStrategyMustRunAs SupplementalGroupsStrategyType = "MustRunAs" + // container may make requests for any gid. + SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny" +) + +// PodSecurityPolicyList is a list of PodSecurityPolicy objects. +type PodSecurityPolicyList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []PodSecurityPolicy +} + +// +genclient=true + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +type NetworkPolicy struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + Spec NetworkPolicySpec +} + +type NetworkPolicySpec struct { + // Selects the pods to which this NetworkPolicy object applies. The array of ingress rules + // is applied to any pods selected by this field. Multiple network policies can select the + // same set of pods. In this case, the ingress rules for each are combined additively. + // This field is NOT optional and follows standard label selector semantics. + // An empty podSelector matches all pods in this namespace. + PodSelector metav1.LabelSelector + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod + // OR if the traffic source is the pod's local node, + // OR if the traffic matches at least one ingress rule across all of the NetworkPolicy + // objects whose podSelector matches the pod. + // If this field is empty then this NetworkPolicy does not allow any traffic + // (and serves solely to ensure that the pods it selects are isolated by default). + // +optional + Ingress []NetworkPolicyIngressRule +} + +// This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from. +type NetworkPolicyIngressRule struct { + // List of ports which should be made accessible on the pods selected for this rule. + // Each item in this list is combined using a logical OR. + // If this field is empty or missing, this rule matches all ports (traffic not restricted by port). + // If this field is present and contains at least one item, then this rule allows traffic + // only if the traffic matches at least one port in the list. + // +optional + Ports []NetworkPolicyPort + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. + // If this field is empty or missing, this rule matches all sources (traffic not restricted by source). + // If this field is present and contains at least on item, this rule allows traffic only if the + // traffic matches at least one item in the from list. + // +optional + From []NetworkPolicyPeer +} + +type NetworkPolicyPort struct { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + // +optional + Protocol *api.Protocol + + // If specified, the port on the given protocol. This can + // either be a numerical or named port on a pod. If this field is not provided, + // this matches all port names and numbers. + // If present, only traffic on the specified protocol AND port + // will be matched. + // +optional + Port *intstr.IntOrString +} + +type NetworkPolicyPeer struct { + // Exactly one of the following must be specified. + + // This is a label selector which selects Pods in this namespace. + // This field follows standard label selector semantics. + // If present but empty, this selector selects all pods in this namespace. + // +optional + PodSelector *metav1.LabelSelector + + // Selects Namespaces using cluster scoped-labels. This + // matches all pods in all namespaces selected by this label selector. + // This field follows standard label selector semantics. + // If present but empty, this selector selects all namespaces. + // +optional + NamespaceSelector *metav1.LabelSelector +} + +// NetworkPolicyList is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []NetworkPolicy +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/BUILD new file mode 100644 index 000000000..bb6b96414 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/BUILD @@ -0,0 +1,43 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/conversion.go new file mode 100644 index 000000000..cec1e5e43 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/conversion.go @@ -0,0 +1,428 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api" + v1 "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/extensions" + "k8s.io/client-go/pkg/apis/networking" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus, + Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus, + Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec, + Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec, + Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy, + Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy, + Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment, + Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment, + Convert_extensions_RollingUpdateDaemonSet_To_v1beta1_RollingUpdateDaemonSet, + Convert_v1beta1_RollingUpdateDaemonSet_To_extensions_RollingUpdateDaemonSet, + Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec, + Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec, + Convert_v1beta1_NetworkPolicy_To_networking_NetworkPolicy, + Convert_networking_NetworkPolicy_To_v1beta1_NetworkPolicy, + Convert_v1beta1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule, + Convert_networking_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule, + Convert_v1beta1_NetworkPolicyList_To_networking_NetworkPolicyList, + Convert_networking_NetworkPolicyList_To_v1beta1_NetworkPolicyList, + Convert_v1beta1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer, + Convert_networking_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer, + Convert_v1beta1_NetworkPolicyPort_To_networking_NetworkPolicyPort, + Convert_networking_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort, + Convert_v1beta1_NetworkPolicySpec_To_networking_NetworkPolicySpec, + Convert_networking_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec, + ) + if err != nil { + return err + } + + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + for _, k := range []string{"DaemonSet", "Deployment", "Ingress"} { + kind := k // don't close over range variables + err = scheme.AddFieldLabelConversionFunc("extensions/v1beta1", kind, + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for %q", label, kind) + } + }, + ) + if err != nil { + return err + } + } + + return nil +} + +func Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = int32(in.Replicas) + + out.Selector = nil + out.TargetSelector = "" + if in.Selector != nil { + if in.Selector.MatchExpressions == nil || len(in.Selector.MatchExpressions) == 0 { + out.Selector = in.Selector.MatchLabels + } + + selector, err := metav1.LabelSelectorAsSelector(in.Selector) + if err != nil { + return fmt.Errorf("invalid label selector: %v", err) + } + out.TargetSelector = selector.String() + } + return nil +} + +func Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + + // Normally when 2 fields map to the same internal value we favor the old field, since + // old clients can't be expected to know about new fields but clients that know about the + // new field can be expected to know about the old field (though that's not quite true, due + // to kubectl apply). However, these fields are readonly, so any non-nil value should work. + if in.TargetSelector != "" { + labelSelector, err := metav1.ParseToLabelSelector(in.TargetSelector) + if err != nil { + out.Selector = nil + return fmt.Errorf("failed to parse target selector: %v", err) + } + out.Selector = labelSelector + } else if in.Selector != nil { + out.Selector = new(metav1.LabelSelector) + selector := make(map[string]string) + for key, val := range in.Selector { + selector[key] = val + } + out.Selector.MatchLabels = selector + } else { + out.Selector = nil + } + return nil +} + +func Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *DeploymentSpec, s conversion.Scope) error { + out.Replicas = &in.Replicas + out.Selector = in.Selector + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + out.RevisionHistoryLimit = new(int32) + *out.RevisionHistoryLimit = int32(*in.RevisionHistoryLimit) + } + out.MinReadySeconds = int32(in.MinReadySeconds) + out.Paused = in.Paused + if in.RollbackTo != nil { + out.RollbackTo = new(RollbackConfig) + out.RollbackTo.Revision = int64(in.RollbackTo.Revision) + } else { + out.RollbackTo = nil + } + if in.ProgressDeadlineSeconds != nil { + out.ProgressDeadlineSeconds = new(int32) + *out.ProgressDeadlineSeconds = *in.ProgressDeadlineSeconds + } + return nil +} + +func Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + out.Selector = in.Selector + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.RevisionHistoryLimit = in.RevisionHistoryLimit + out.MinReadySeconds = in.MinReadySeconds + out.Paused = in.Paused + if in.RollbackTo != nil { + out.RollbackTo = new(extensions.RollbackConfig) + out.RollbackTo.Revision = in.RollbackTo.Revision + } else { + out.RollbackTo = nil + } + if in.ProgressDeadlineSeconds != nil { + out.ProgressDeadlineSeconds = new(int32) + *out.ProgressDeadlineSeconds = *in.ProgressDeadlineSeconds + } + return nil +} + +func Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(in *extensions.DeploymentStrategy, out *DeploymentStrategy, s conversion.Scope) error { + out.Type = DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(RollingUpdateDeployment) + if err := Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(in *DeploymentStrategy, out *extensions.DeploymentStrategy, s conversion.Scope) error { + out.Type = extensions.DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(extensions.RollingUpdateDeployment) + if err := Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in *extensions.RollingUpdateDeployment, out *RollingUpdateDeployment, s conversion.Scope) error { + if out.MaxUnavailable == nil { + out.MaxUnavailable = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil { + return err + } + if out.MaxSurge == nil { + out.MaxSurge = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in *RollingUpdateDeployment, out *extensions.RollingUpdateDeployment, s conversion.Scope) error { + if err := s.Convert(in.MaxUnavailable, &out.MaxUnavailable, 0); err != nil { + return err + } + if err := s.Convert(in.MaxSurge, &out.MaxSurge, 0); err != nil { + return err + } + return nil +} + +func Convert_extensions_RollingUpdateDaemonSet_To_v1beta1_RollingUpdateDaemonSet(in *extensions.RollingUpdateDaemonSet, out *RollingUpdateDaemonSet, s conversion.Scope) error { + if out.MaxUnavailable == nil { + out.MaxUnavailable = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_RollingUpdateDaemonSet_To_extensions_RollingUpdateDaemonSet(in *RollingUpdateDaemonSet, out *extensions.RollingUpdateDaemonSet, s conversion.Scope) error { + if err := s.Convert(in.MaxUnavailable, &out.MaxUnavailable, 0); err != nil { + return err + } + return nil +} + +func Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *ReplicaSetSpec, s conversion.Scope) error { + out.Replicas = new(int32) + *out.Replicas = int32(in.Replicas) + out.MinReadySeconds = in.MinReadySeconds + out.Selector = in.Selector + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + out.MinReadySeconds = in.MinReadySeconds + out.Selector = in.Selector + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_NetworkPolicy_To_networking_NetworkPolicy(in *NetworkPolicy, out *networking.NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + return Convert_v1beta1_NetworkPolicySpec_To_networking_NetworkPolicySpec(&in.Spec, &out.Spec, s) +} + +func Convert_networking_NetworkPolicy_To_v1beta1_NetworkPolicy(in *networking.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + return Convert_networking_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(&in.Spec, &out.Spec, s) +} + +func Convert_v1beta1_NetworkPolicySpec_To_networking_NetworkPolicySpec(in *NetworkPolicySpec, out *networking.NetworkPolicySpec, s conversion.Scope) error { + if err := s.Convert(&in.PodSelector, &out.PodSelector, 0); err != nil { + return err + } + out.Ingress = make([]networking.NetworkPolicyIngressRule, len(in.Ingress)) + for i := range in.Ingress { + if err := Convert_v1beta1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule(&in.Ingress[i], &out.Ingress[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_networking_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in *networking.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + if err := s.Convert(&in.PodSelector, &out.PodSelector, 0); err != nil { + return err + } + out.Ingress = make([]NetworkPolicyIngressRule, len(in.Ingress)) + for i := range in.Ingress { + if err := Convert_networking_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(&in.Ingress[i], &out.Ingress[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_v1beta1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *networking.NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = make([]networking.NetworkPolicyPort, len(in.Ports)) + for i := range in.Ports { + if err := Convert_v1beta1_NetworkPolicyPort_To_networking_NetworkPolicyPort(&in.Ports[i], &out.Ports[i], s); err != nil { + return err + } + } + out.From = make([]networking.NetworkPolicyPeer, len(in.From)) + for i := range in.From { + if err := Convert_v1beta1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(&in.From[i], &out.From[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_networking_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in *networking.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = make([]NetworkPolicyPort, len(in.Ports)) + for i := range in.Ports { + if err := Convert_networking_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(&in.Ports[i], &out.Ports[i], s); err != nil { + return err + } + } + out.From = make([]NetworkPolicyPeer, len(in.From)) + for i := range in.From { + if err := Convert_networking_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(&in.From[i], &out.From[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_v1beta1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(in *NetworkPolicyPeer, out *networking.NetworkPolicyPeer, s conversion.Scope) error { + if in.PodSelector != nil { + out.PodSelector = new(metav1.LabelSelector) + if err := s.Convert(in.PodSelector, out.PodSelector, 0); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + out.NamespaceSelector = new(metav1.LabelSelector) + if err := s.Convert(in.NamespaceSelector, out.NamespaceSelector, 0); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil +} + +func Convert_networking_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in *networking.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + if in.PodSelector != nil { + out.PodSelector = new(metav1.LabelSelector) + if err := s.Convert(in.PodSelector, out.PodSelector, 0); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + out.NamespaceSelector = new(metav1.LabelSelector) + if err := s.Convert(in.NamespaceSelector, out.NamespaceSelector, 0); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil +} + +func Convert_v1beta1_NetworkPolicyPort_To_networking_NetworkPolicyPort(in *NetworkPolicyPort, out *networking.NetworkPolicyPort, s conversion.Scope) error { + if in.Protocol != nil { + out.Protocol = new(api.Protocol) + *out.Protocol = api.Protocol(*in.Protocol) + } else { + out.Protocol = nil + } + out.Port = in.Port + return nil +} + +func Convert_networking_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in *networking.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + if in.Protocol != nil { + out.Protocol = new(v1.Protocol) + *out.Protocol = v1.Protocol(*in.Protocol) + } else { + out.Protocol = nil + } + out.Port = in.Port + return nil +} + +func Convert_v1beta1_NetworkPolicyList_To_networking_NetworkPolicyList(in *NetworkPolicyList, out *networking.NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = make([]networking.NetworkPolicy, len(in.Items)) + for i := range in.Items { + if err := Convert_v1beta1_NetworkPolicy_To_networking_NetworkPolicy(&in.Items[i], &out.Items[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_networking_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in *networking.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = make([]NetworkPolicy, len(in.Items)) + for i := range in.Items { + if err := Convert_networking_NetworkPolicy_To_v1beta1_NetworkPolicy(&in.Items[i], &out.Items[i], s); err != nil { + return err + } + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/defaults.go new file mode 100644 index 000000000..a644e5ab9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/defaults.go @@ -0,0 +1,135 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api/v1" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_DaemonSet(obj *DaemonSet) { + labels := obj.Spec.Template.Labels + + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &metav1.LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + updateStrategy := &obj.Spec.UpdateStrategy + if updateStrategy.Type == "" { + updateStrategy.Type = OnDeleteDaemonSetStrategyType + } + if updateStrategy.Type == RollingUpdateDaemonSetStrategyType { + if updateStrategy.RollingUpdate == nil { + rollingUpdate := RollingUpdateDaemonSet{} + updateStrategy.RollingUpdate = &rollingUpdate + } + if updateStrategy.RollingUpdate.MaxUnavailable == nil { + // Set default MaxUnavailable as 1 by default. + maxUnavailable := intstr.FromInt(1) + updateStrategy.RollingUpdate.MaxUnavailable = &maxUnavailable + } + } + if obj.Spec.RevisionHistoryLimit == nil { + obj.Spec.RevisionHistoryLimit = new(int32) + *obj.Spec.RevisionHistoryLimit = 10 + } +} + +func SetDefaults_Deployment(obj *Deployment) { + // Default labels and selector to labels from pod template spec. + labels := obj.Spec.Template.Labels + + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &metav1.LabelSelector{MatchLabels: labels} + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + // Set DeploymentSpec.Replicas to 1 if it is not set. + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } + strategy := &obj.Spec.Strategy + // Set default DeploymentStrategyType as RollingUpdate. + if strategy.Type == "" { + strategy.Type = RollingUpdateDeploymentStrategyType + } + if strategy.Type == RollingUpdateDeploymentStrategyType || strategy.RollingUpdate != nil { + if strategy.RollingUpdate == nil { + rollingUpdate := RollingUpdateDeployment{} + strategy.RollingUpdate = &rollingUpdate + } + if strategy.RollingUpdate.MaxUnavailable == nil { + // Set default MaxUnavailable as 1 by default. + maxUnavailable := intstr.FromInt(1) + strategy.RollingUpdate.MaxUnavailable = &maxUnavailable + } + if strategy.RollingUpdate.MaxSurge == nil { + // Set default MaxSurge as 1 by default. + maxSurge := intstr.FromInt(1) + strategy.RollingUpdate.MaxSurge = &maxSurge + } + } +} + +func SetDefaults_ReplicaSet(obj *ReplicaSet) { + labels := obj.Spec.Template.Labels + + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &metav1.LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } +} + +func SetDefaults_NetworkPolicy(obj *NetworkPolicy) { + // Default any undefined Protocol fields to TCP. + for _, i := range obj.Spec.Ingress { + for _, p := range i.Ports { + if p.Protocol == nil { + proto := v1.ProtocolTCP + p.Protocol = &proto + } + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/doc.go new file mode 100644 index 000000000..a397b30e9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.pb.go new file mode 100644 index 000000000..871bd924d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.pb.go @@ -0,0 +1,12108 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/extensions/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/extensions/v1beta1/generated.proto + + It has these top-level messages: + APIVersion + CustomMetricCurrentStatus + CustomMetricCurrentStatusList + CustomMetricTarget + CustomMetricTargetList + DaemonSet + DaemonSetList + DaemonSetSpec + DaemonSetStatus + DaemonSetUpdateStrategy + Deployment + DeploymentCondition + DeploymentList + DeploymentRollback + DeploymentSpec + DeploymentStatus + DeploymentStrategy + FSGroupStrategyOptions + HTTPIngressPath + HTTPIngressRuleValue + HostPortRange + IDRange + Ingress + IngressBackend + IngressList + IngressRule + IngressRuleValue + IngressSpec + IngressStatus + IngressTLS + NetworkPolicy + NetworkPolicyIngressRule + NetworkPolicyList + NetworkPolicyPeer + NetworkPolicyPort + NetworkPolicySpec + PodSecurityPolicy + PodSecurityPolicyList + PodSecurityPolicySpec + ReplicaSet + ReplicaSetCondition + ReplicaSetList + ReplicaSetSpec + ReplicaSetStatus + ReplicationControllerDummy + RollbackConfig + RollingUpdateDaemonSet + RollingUpdateDeployment + RunAsUserStrategyOptions + SELinuxStrategyOptions + Scale + ScaleSpec + ScaleStatus + SupplementalGroupsStrategyOptions + ThirdPartyResource + ThirdPartyResourceData + ThirdPartyResourceDataList + ThirdPartyResourceList +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *APIVersion) Reset() { *m = APIVersion{} } +func (*APIVersion) ProtoMessage() {} +func (*APIVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *CustomMetricCurrentStatus) Reset() { *m = CustomMetricCurrentStatus{} } +func (*CustomMetricCurrentStatus) ProtoMessage() {} +func (*CustomMetricCurrentStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *CustomMetricCurrentStatusList) Reset() { *m = CustomMetricCurrentStatusList{} } +func (*CustomMetricCurrentStatusList) ProtoMessage() {} +func (*CustomMetricCurrentStatusList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *CustomMetricTarget) Reset() { *m = CustomMetricTarget{} } +func (*CustomMetricTarget) ProtoMessage() {} +func (*CustomMetricTarget) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *CustomMetricTargetList) Reset() { *m = CustomMetricTargetList{} } +func (*CustomMetricTargetList) ProtoMessage() {} +func (*CustomMetricTargetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *DaemonSet) Reset() { *m = DaemonSet{} } +func (*DaemonSet) ProtoMessage() {} +func (*DaemonSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *DaemonSetList) Reset() { *m = DaemonSetList{} } +func (*DaemonSetList) ProtoMessage() {} +func (*DaemonSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *DaemonSetSpec) Reset() { *m = DaemonSetSpec{} } +func (*DaemonSetSpec) ProtoMessage() {} +func (*DaemonSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *DaemonSetStatus) Reset() { *m = DaemonSetStatus{} } +func (*DaemonSetStatus) ProtoMessage() {} +func (*DaemonSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *DaemonSetUpdateStrategy) Reset() { *m = DaemonSetUpdateStrategy{} } +func (*DaemonSetUpdateStrategy) ProtoMessage() {} +func (*DaemonSetUpdateStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *Deployment) Reset() { *m = Deployment{} } +func (*Deployment) ProtoMessage() {} +func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *DeploymentCondition) Reset() { *m = DeploymentCondition{} } +func (*DeploymentCondition) ProtoMessage() {} +func (*DeploymentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *DeploymentList) Reset() { *m = DeploymentList{} } +func (*DeploymentList) ProtoMessage() {} +func (*DeploymentList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *DeploymentRollback) Reset() { *m = DeploymentRollback{} } +func (*DeploymentRollback) ProtoMessage() {} +func (*DeploymentRollback) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *DeploymentSpec) Reset() { *m = DeploymentSpec{} } +func (*DeploymentSpec) ProtoMessage() {} +func (*DeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *DeploymentStatus) Reset() { *m = DeploymentStatus{} } +func (*DeploymentStatus) ProtoMessage() {} +func (*DeploymentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *DeploymentStrategy) Reset() { *m = DeploymentStrategy{} } +func (*DeploymentStrategy) ProtoMessage() {} +func (*DeploymentStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *FSGroupStrategyOptions) Reset() { *m = FSGroupStrategyOptions{} } +func (*FSGroupStrategyOptions) ProtoMessage() {} +func (*FSGroupStrategyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *HTTPIngressPath) Reset() { *m = HTTPIngressPath{} } +func (*HTTPIngressPath) ProtoMessage() {} +func (*HTTPIngressPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *HTTPIngressRuleValue) Reset() { *m = HTTPIngressRuleValue{} } +func (*HTTPIngressRuleValue) ProtoMessage() {} +func (*HTTPIngressRuleValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *HostPortRange) Reset() { *m = HostPortRange{} } +func (*HostPortRange) ProtoMessage() {} +func (*HostPortRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *IDRange) Reset() { *m = IDRange{} } +func (*IDRange) ProtoMessage() {} +func (*IDRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *Ingress) Reset() { *m = Ingress{} } +func (*Ingress) ProtoMessage() {} +func (*Ingress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *IngressBackend) Reset() { *m = IngressBackend{} } +func (*IngressBackend) ProtoMessage() {} +func (*IngressBackend) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *IngressList) Reset() { *m = IngressList{} } +func (*IngressList) ProtoMessage() {} +func (*IngressList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *IngressRule) Reset() { *m = IngressRule{} } +func (*IngressRule) ProtoMessage() {} +func (*IngressRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *IngressRuleValue) Reset() { *m = IngressRuleValue{} } +func (*IngressRuleValue) ProtoMessage() {} +func (*IngressRuleValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *IngressSpec) Reset() { *m = IngressSpec{} } +func (*IngressSpec) ProtoMessage() {} +func (*IngressSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *IngressStatus) Reset() { *m = IngressStatus{} } +func (*IngressStatus) ProtoMessage() {} +func (*IngressStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } + +func (m *IngressTLS) Reset() { *m = IngressTLS{} } +func (*IngressTLS) ProtoMessage() {} +func (*IngressTLS) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } +func (*NetworkPolicy) ProtoMessage() {} +func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *NetworkPolicyIngressRule) Reset() { *m = NetworkPolicyIngressRule{} } +func (*NetworkPolicyIngressRule) ProtoMessage() {} +func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{31} +} + +func (m *NetworkPolicyList) Reset() { *m = NetworkPolicyList{} } +func (*NetworkPolicyList) ProtoMessage() {} +func (*NetworkPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *NetworkPolicyPeer) Reset() { *m = NetworkPolicyPeer{} } +func (*NetworkPolicyPeer) ProtoMessage() {} +func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } + +func (m *NetworkPolicyPort) Reset() { *m = NetworkPolicyPort{} } +func (*NetworkPolicyPort) ProtoMessage() {} +func (*NetworkPolicyPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } + +func (m *NetworkPolicySpec) Reset() { *m = NetworkPolicySpec{} } +func (*NetworkPolicySpec) ProtoMessage() {} +func (*NetworkPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *PodSecurityPolicy) Reset() { *m = PodSecurityPolicy{} } +func (*PodSecurityPolicy) ProtoMessage() {} +func (*PodSecurityPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } + +func (m *PodSecurityPolicyList) Reset() { *m = PodSecurityPolicyList{} } +func (*PodSecurityPolicyList) ProtoMessage() {} +func (*PodSecurityPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } + +func (m *PodSecurityPolicySpec) Reset() { *m = PodSecurityPolicySpec{} } +func (*PodSecurityPolicySpec) ProtoMessage() {} +func (*PodSecurityPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } + +func (m *ReplicaSet) Reset() { *m = ReplicaSet{} } +func (*ReplicaSet) ProtoMessage() {} +func (*ReplicaSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } + +func (m *ReplicaSetCondition) Reset() { *m = ReplicaSetCondition{} } +func (*ReplicaSetCondition) ProtoMessage() {} +func (*ReplicaSetCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } + +func (m *ReplicaSetList) Reset() { *m = ReplicaSetList{} } +func (*ReplicaSetList) ProtoMessage() {} +func (*ReplicaSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } + +func (m *ReplicaSetSpec) Reset() { *m = ReplicaSetSpec{} } +func (*ReplicaSetSpec) ProtoMessage() {} +func (*ReplicaSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } + +func (m *ReplicaSetStatus) Reset() { *m = ReplicaSetStatus{} } +func (*ReplicaSetStatus) ProtoMessage() {} +func (*ReplicaSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } + +func (m *ReplicationControllerDummy) Reset() { *m = ReplicationControllerDummy{} } +func (*ReplicationControllerDummy) ProtoMessage() {} +func (*ReplicationControllerDummy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{44} +} + +func (m *RollbackConfig) Reset() { *m = RollbackConfig{} } +func (*RollbackConfig) ProtoMessage() {} +func (*RollbackConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } + +func (m *RollingUpdateDaemonSet) Reset() { *m = RollingUpdateDaemonSet{} } +func (*RollingUpdateDaemonSet) ProtoMessage() {} +func (*RollingUpdateDaemonSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } + +func (m *RollingUpdateDeployment) Reset() { *m = RollingUpdateDeployment{} } +func (*RollingUpdateDeployment) ProtoMessage() {} +func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{47} +} + +func (m *RunAsUserStrategyOptions) Reset() { *m = RunAsUserStrategyOptions{} } +func (*RunAsUserStrategyOptions) ProtoMessage() {} +func (*RunAsUserStrategyOptions) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{48} +} + +func (m *SELinuxStrategyOptions) Reset() { *m = SELinuxStrategyOptions{} } +func (*SELinuxStrategyOptions) ProtoMessage() {} +func (*SELinuxStrategyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{50} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{51} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } + +func (m *SupplementalGroupsStrategyOptions) Reset() { *m = SupplementalGroupsStrategyOptions{} } +func (*SupplementalGroupsStrategyOptions) ProtoMessage() {} +func (*SupplementalGroupsStrategyOptions) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{53} +} + +func (m *ThirdPartyResource) Reset() { *m = ThirdPartyResource{} } +func (*ThirdPartyResource) ProtoMessage() {} +func (*ThirdPartyResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } + +func (m *ThirdPartyResourceData) Reset() { *m = ThirdPartyResourceData{} } +func (*ThirdPartyResourceData) ProtoMessage() {} +func (*ThirdPartyResourceData) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } + +func (m *ThirdPartyResourceDataList) Reset() { *m = ThirdPartyResourceDataList{} } +func (*ThirdPartyResourceDataList) ProtoMessage() {} +func (*ThirdPartyResourceDataList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{56} +} + +func (m *ThirdPartyResourceList) Reset() { *m = ThirdPartyResourceList{} } +func (*ThirdPartyResourceList) ProtoMessage() {} +func (*ThirdPartyResourceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } + +func init() { + proto.RegisterType((*APIVersion)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.APIVersion") + proto.RegisterType((*CustomMetricCurrentStatus)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.CustomMetricCurrentStatus") + proto.RegisterType((*CustomMetricCurrentStatusList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.CustomMetricCurrentStatusList") + proto.RegisterType((*CustomMetricTarget)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.CustomMetricTarget") + proto.RegisterType((*CustomMetricTargetList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.CustomMetricTargetList") + proto.RegisterType((*DaemonSet)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DaemonSet") + proto.RegisterType((*DaemonSetList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DaemonSetList") + proto.RegisterType((*DaemonSetSpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DaemonSetSpec") + proto.RegisterType((*DaemonSetStatus)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DaemonSetStatus") + proto.RegisterType((*DaemonSetUpdateStrategy)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DaemonSetUpdateStrategy") + proto.RegisterType((*Deployment)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.Deployment") + proto.RegisterType((*DeploymentCondition)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DeploymentCondition") + proto.RegisterType((*DeploymentList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DeploymentList") + proto.RegisterType((*DeploymentRollback)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DeploymentRollback") + proto.RegisterType((*DeploymentSpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DeploymentSpec") + proto.RegisterType((*DeploymentStatus)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DeploymentStatus") + proto.RegisterType((*DeploymentStrategy)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.DeploymentStrategy") + proto.RegisterType((*FSGroupStrategyOptions)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.FSGroupStrategyOptions") + proto.RegisterType((*HTTPIngressPath)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.HTTPIngressPath") + proto.RegisterType((*HTTPIngressRuleValue)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.HTTPIngressRuleValue") + proto.RegisterType((*HostPortRange)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.HostPortRange") + proto.RegisterType((*IDRange)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IDRange") + proto.RegisterType((*Ingress)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.Ingress") + proto.RegisterType((*IngressBackend)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressBackend") + proto.RegisterType((*IngressList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressList") + proto.RegisterType((*IngressRule)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressRule") + proto.RegisterType((*IngressRuleValue)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressRuleValue") + proto.RegisterType((*IngressSpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressSpec") + proto.RegisterType((*IngressStatus)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressStatus") + proto.RegisterType((*IngressTLS)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.IngressTLS") + proto.RegisterType((*NetworkPolicy)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.NetworkPolicy") + proto.RegisterType((*NetworkPolicyIngressRule)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.NetworkPolicyIngressRule") + proto.RegisterType((*NetworkPolicyList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.NetworkPolicyList") + proto.RegisterType((*NetworkPolicyPeer)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.NetworkPolicyPeer") + proto.RegisterType((*NetworkPolicyPort)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.NetworkPolicyPort") + proto.RegisterType((*NetworkPolicySpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.NetworkPolicySpec") + proto.RegisterType((*PodSecurityPolicy)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.PodSecurityPolicy") + proto.RegisterType((*PodSecurityPolicyList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.PodSecurityPolicyList") + proto.RegisterType((*PodSecurityPolicySpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.PodSecurityPolicySpec") + proto.RegisterType((*ReplicaSet)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ReplicaSet") + proto.RegisterType((*ReplicaSetCondition)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ReplicaSetCondition") + proto.RegisterType((*ReplicaSetList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ReplicaSetList") + proto.RegisterType((*ReplicaSetSpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ReplicaSetSpec") + proto.RegisterType((*ReplicaSetStatus)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ReplicaSetStatus") + proto.RegisterType((*ReplicationControllerDummy)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ReplicationControllerDummy") + proto.RegisterType((*RollbackConfig)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.RollbackConfig") + proto.RegisterType((*RollingUpdateDaemonSet)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.RollingUpdateDaemonSet") + proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.RollingUpdateDeployment") + proto.RegisterType((*RunAsUserStrategyOptions)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.RunAsUserStrategyOptions") + proto.RegisterType((*SELinuxStrategyOptions)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.SELinuxStrategyOptions") + proto.RegisterType((*Scale)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ScaleStatus") + proto.RegisterType((*SupplementalGroupsStrategyOptions)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions") + proto.RegisterType((*ThirdPartyResource)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ThirdPartyResource") + proto.RegisterType((*ThirdPartyResourceData)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ThirdPartyResourceData") + proto.RegisterType((*ThirdPartyResourceDataList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ThirdPartyResourceDataList") + proto.RegisterType((*ThirdPartyResourceList)(nil), "k8s.io.client-go.pkg.apis.extensions.v1beta1.ThirdPartyResourceList") +} +func (m *APIVersion) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *APIVersion) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *CustomMetricCurrentStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CustomMetricCurrentStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size())) + n1, err := m.CurrentValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + return i, nil +} + +func (m *CustomMetricCurrentStatusList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CustomMetricCurrentStatusList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *CustomMetricTarget) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CustomMetricTarget) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TargetValue.Size())) + n2, err := m.TargetValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + return i, nil +} + +func (m *CustomMetricTargetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CustomMetricTargetList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DaemonSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSet) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n3, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n4, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n5, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + return i, nil +} + +func (m *DaemonSetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSetList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DaemonSetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSetSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Selector != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n7, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n8, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdateStrategy.Size())) + n9, err := m.UpdateStrategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.TemplateGeneration)) + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + return i, nil +} + +func (m *DaemonSetStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSetStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentNumberScheduled)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberMisscheduled)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DesiredNumberScheduled)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberReady)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedNumberScheduled)) + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberAvailable)) + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NumberUnavailable)) + if m.CollisionCount != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *DaemonSetUpdateStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DaemonSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.RollingUpdate != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size())) + n10, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + return i, nil +} + +func (m *Deployment) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Deployment) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n11, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n12, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n13, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n13 + return i, nil +} + +func (m *DeploymentCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastUpdateTime.Size())) + n14, err := m.LastUpdateTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n14 + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n15, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n15 + return i, nil +} + +func (m *DeploymentList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n16, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n16 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DeploymentRollback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentRollback) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + if len(m.UpdatedAnnotations) > 0 { + keysForUpdatedAnnotations := make([]string, 0, len(m.UpdatedAnnotations)) + for k := range m.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + for _, k := range keysForUpdatedAnnotations { + dAtA[i] = 0x12 + i++ + v := m.UpdatedAnnotations[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollbackTo.Size())) + n17, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n17 + return i, nil +} + +func (m *DeploymentSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n18, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n18 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n19, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n19 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Strategy.Size())) + n20, err := m.Strategy.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n20 + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.RevisionHistoryLimit)) + } + dAtA[i] = 0x38 + i++ + if m.Paused { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if m.RollbackTo != nil { + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollbackTo.Size())) + n21, err := m.RollbackTo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n21 + } + if m.ProgressDeadlineSeconds != nil { + dAtA[i] = 0x48 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ProgressDeadlineSeconds)) + } + return i, nil +} + +func (m *DeploymentStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UpdatedReplicas)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.UnavailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x38 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + dAtA[i] = 0x40 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount)) + } + return i, nil +} + +func (m *DeploymentStrategy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeploymentStrategy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + if m.RollingUpdate != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RollingUpdate.Size())) + n22, err := m.RollingUpdate.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n22 + } + return i, nil +} + +func (m *FSGroupStrategyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FSGroupStrategyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Rule))) + i += copy(dAtA[i:], m.Rule) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HTTPIngressPath) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HTTPIngressPath) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Backend.Size())) + n23, err := m.Backend.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n23 + return i, nil +} + +func (m *HTTPIngressRuleValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HTTPIngressRuleValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Paths) > 0 { + for _, msg := range m.Paths { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HostPortRange) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HostPortRange) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Min)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Max)) + return i, nil +} + +func (m *IDRange) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IDRange) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Min)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Max)) + return i, nil +} + +func (m *Ingress) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Ingress) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n24, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n24 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n25, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n25 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n26, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n26 + return i, nil +} + +func (m *IngressBackend) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressBackend) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServiceName))) + i += copy(dAtA[i:], m.ServiceName) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ServicePort.Size())) + n27, err := m.ServicePort.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n27 + return i, nil +} + +func (m *IngressList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n28, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n28 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *IngressRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressRule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) + i += copy(dAtA[i:], m.Host) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.IngressRuleValue.Size())) + n29, err := m.IngressRuleValue.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n29 + return i, nil +} + +func (m *IngressRuleValue) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressRuleValue) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.HTTP != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.HTTP.Size())) + n30, err := m.HTTP.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n30 + } + return i, nil +} + +func (m *IngressSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Backend != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Backend.Size())) + n31, err := m.Backend.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n31 + } + if len(m.TLS) > 0 { + for _, msg := range m.TLS { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *IngressStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LoadBalancer.Size())) + n32, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n32 + return i, nil +} + +func (m *IngressTLS) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *IngressTLS) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Hosts) > 0 { + for _, s := range m.Hosts { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.SecretName))) + i += copy(dAtA[i:], m.SecretName) + return i, nil +} + +func (m *NetworkPolicy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n33, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n33 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n34, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n34 + return i, nil +} + +func (m *NetworkPolicyIngressRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyIngressRule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.From) > 0 { + for _, msg := range m.From { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NetworkPolicyList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n35, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n35 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NetworkPolicyPeer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyPeer) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PodSelector != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodSelector.Size())) + n36, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n36 + } + if m.NamespaceSelector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NamespaceSelector.Size())) + n37, err := m.NamespaceSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n37 + } + return i, nil +} + +func (m *NetworkPolicyPort) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyPort) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Protocol != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Protocol))) + i += copy(dAtA[i:], *m.Protocol) + } + if m.Port != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) + n38, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n38 + } + return i, nil +} + +func (m *NetworkPolicySpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicySpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodSelector.Size())) + n39, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n39 + if len(m.Ingress) > 0 { + for _, msg := range m.Ingress { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodSecurityPolicy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSecurityPolicy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n40, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n40 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n41, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n41 + return i, nil +} + +func (m *PodSecurityPolicyList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSecurityPolicyList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n42, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n42 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodSecurityPolicySpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodSecurityPolicySpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + if m.Privileged { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.DefaultAddCapabilities) > 0 { + for _, s := range m.DefaultAddCapabilities { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.RequiredDropCapabilities) > 0 { + for _, s := range m.RequiredDropCapabilities { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.AllowedCapabilities) > 0 { + for _, s := range m.AllowedCapabilities { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Volumes) > 0 { + for _, s := range m.Volumes { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + dAtA[i] = 0x30 + i++ + if m.HostNetwork { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + if len(m.HostPorts) > 0 { + for _, msg := range m.HostPorts { + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x40 + i++ + if m.HostPID { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x48 + i++ + if m.HostIPC { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x52 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SELinux.Size())) + n43, err := m.SELinux.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n43 + dAtA[i] = 0x5a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RunAsUser.Size())) + n44, err := m.RunAsUser.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n44 + dAtA[i] = 0x62 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SupplementalGroups.Size())) + n45, err := m.SupplementalGroups.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n45 + dAtA[i] = 0x6a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FSGroup.Size())) + n46, err := m.FSGroup.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n46 + dAtA[i] = 0x70 + i++ + if m.ReadOnlyRootFilesystem { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + +func (m *ReplicaSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSet) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n47, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n47 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n48, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n48 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n49, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n49 + return i, nil +} + +func (m *ReplicaSetCondition) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSetCondition) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i += copy(dAtA[i:], m.Type) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i += copy(dAtA[i:], m.Status) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.LastTransitionTime.Size())) + n50, err := m.LastTransitionTime.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n50 + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) + i += copy(dAtA[i:], m.Reason) + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message))) + i += copy(dAtA[i:], m.Message) + return i, nil +} + +func (m *ReplicaSetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSetList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n51, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n51 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ReplicaSetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSetSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n52, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n52 + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Template.Size())) + n53, err := m.Template.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n53 + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinReadySeconds)) + return i, nil +} + +func (m *ReplicaSetStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicaSetStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.FullyLabeledReplicas)) + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ReadyReplicas)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ReplicationControllerDummy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ReplicationControllerDummy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func (m *RollbackConfig) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollbackConfig) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Revision)) + return i, nil +} + +func (m *RollingUpdateDaemonSet) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateDaemonSet) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.MaxUnavailable != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxUnavailable.Size())) + n54, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n54 + } + return i, nil +} + +func (m *RollingUpdateDeployment) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RollingUpdateDeployment) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.MaxUnavailable != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxUnavailable.Size())) + n55, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n55 + } + if m.MaxSurge != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxSurge.Size())) + n56, err := m.MaxSurge.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n56 + } + return i, nil +} + +func (m *RunAsUserStrategyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RunAsUserStrategyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Rule))) + i += copy(dAtA[i:], m.Rule) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *SELinuxStrategyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SELinuxStrategyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Rule))) + i += copy(dAtA[i:], m.Rule) + if m.SELinuxOptions != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) + n57, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n57 + } + return i, nil +} + +func (m *Scale) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Scale) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n58, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n58 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n59, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n59 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n60, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n60 + return i, nil +} + +func (m *ScaleSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + return i, nil +} + +func (m *ScaleStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ScaleStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Replicas)) + if len(m.Selector) > 0 { + keysForSelector := make([]string, 0, len(m.Selector)) + for k := range m.Selector { + keysForSelector = append(keysForSelector, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + for _, k := range keysForSelector { + dAtA[i] = 0x12 + i++ + v := m.Selector[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TargetSelector))) + i += copy(dAtA[i:], m.TargetSelector) + return i, nil +} + +func (m *SupplementalGroupsStrategyOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SupplementalGroupsStrategyOptions) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Rule))) + i += copy(dAtA[i:], m.Rule) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ThirdPartyResource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ThirdPartyResource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n61, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n61 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Description))) + i += copy(dAtA[i:], m.Description) + if len(m.Versions) > 0 { + for _, msg := range m.Versions { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ThirdPartyResourceData) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ThirdPartyResourceData) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n62, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n62 + if m.Data != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Data))) + i += copy(dAtA[i:], m.Data) + } + return i, nil +} + +func (m *ThirdPartyResourceDataList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ThirdPartyResourceDataList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n63, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n63 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ThirdPartyResourceList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ThirdPartyResourceList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n64, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n64 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *APIVersion) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomMetricCurrentStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomMetricCurrentStatusList) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CustomMetricTarget) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomMetricTargetList) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DaemonSet) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DaemonSetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DaemonSetSpec) Size() (n int) { + var l int + _ = l + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.UpdateStrategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + n += 1 + sovGenerated(uint64(m.TemplateGeneration)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + return n +} + +func (m *DaemonSetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.CurrentNumberScheduled)) + n += 1 + sovGenerated(uint64(m.NumberMisscheduled)) + n += 1 + sovGenerated(uint64(m.DesiredNumberScheduled)) + n += 1 + sovGenerated(uint64(m.NumberReady)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.UpdatedNumberScheduled)) + n += 1 + sovGenerated(uint64(m.NumberAvailable)) + n += 1 + sovGenerated(uint64(m.NumberUnavailable)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *DaemonSetUpdateStrategy) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.RollingUpdate != nil { + l = m.RollingUpdate.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Deployment) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastUpdateTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DeploymentRollback) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.UpdatedAnnotations) > 0 { + for k, v := range m.UpdatedAnnotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = m.RollbackTo.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Strategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + n += 2 + if m.RollbackTo != nil { + l = m.RollbackTo.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ProgressDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ProgressDeadlineSeconds)) + } + return n +} + +func (m *DeploymentStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.UpdatedReplicas)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + n += 1 + sovGenerated(uint64(m.UnavailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + if m.CollisionCount != nil { + n += 1 + sovGenerated(uint64(*m.CollisionCount)) + } + return n +} + +func (m *DeploymentStrategy) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.RollingUpdate != nil { + l = m.RollingUpdate.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *FSGroupStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ranges) > 0 { + for _, e := range m.Ranges { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HTTPIngressPath) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Backend.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HTTPIngressRuleValue) Size() (n int) { + var l int + _ = l + if len(m.Paths) > 0 { + for _, e := range m.Paths { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HostPortRange) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Min)) + n += 1 + sovGenerated(uint64(m.Max)) + return n +} + +func (m *IDRange) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Min)) + n += 1 + sovGenerated(uint64(m.Max)) + return n +} + +func (m *Ingress) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressBackend) Size() (n int) { + var l int + _ = l + l = len(m.ServiceName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.ServicePort.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *IngressRule) Size() (n int) { + var l int + _ = l + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + l = m.IngressRuleValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressRuleValue) Size() (n int) { + var l int + _ = l + if m.HTTP != nil { + l = m.HTTP.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *IngressSpec) Size() (n int) { + var l int + _ = l + if m.Backend != nil { + l = m.Backend.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.TLS) > 0 { + for _, e := range m.TLS { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *IngressStatus) Size() (n int) { + var l int + _ = l + l = m.LoadBalancer.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressTLS) Size() (n int) { + var l int + _ = l + if len(m.Hosts) > 0 { + for _, s := range m.Hosts { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.SecretName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NetworkPolicy) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NetworkPolicyIngressRule) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.From) > 0 { + for _, e := range m.From { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NetworkPolicyList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NetworkPolicyPeer) Size() (n int) { + var l int + _ = l + if m.PodSelector != nil { + l = m.PodSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NamespaceSelector != nil { + l = m.NamespaceSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *NetworkPolicyPort) Size() (n int) { + var l int + _ = l + if m.Protocol != nil { + l = len(*m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Port != nil { + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *NetworkPolicySpec) Size() (n int) { + var l int + _ = l + l = m.PodSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ingress) > 0 { + for _, e := range m.Ingress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodSecurityPolicy) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodSecurityPolicyList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodSecurityPolicySpec) Size() (n int) { + var l int + _ = l + n += 2 + if len(m.DefaultAddCapabilities) > 0 { + for _, s := range m.DefaultAddCapabilities { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.RequiredDropCapabilities) > 0 { + for _, s := range m.RequiredDropCapabilities { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.AllowedCapabilities) > 0 { + for _, s := range m.AllowedCapabilities { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Volumes) > 0 { + for _, s := range m.Volumes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + if len(m.HostPorts) > 0 { + for _, e := range m.HostPorts { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + n += 2 + l = m.SELinux.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.RunAsUser.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.SupplementalGroups.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.FSGroup.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *ReplicaSet) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicaSetCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicaSetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ReplicaSetSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + return n +} + +func (m *ReplicaSetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.FullyLabeledReplicas)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ReplicationControllerDummy) Size() (n int) { + var l int + _ = l + return n +} + +func (m *RollbackConfig) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Revision)) + return n +} + +func (m *RollingUpdateDaemonSet) Size() (n int) { + var l int + _ = l + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *RollingUpdateDeployment) Size() (n int) { + var l int + _ = l + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.MaxSurge != nil { + l = m.MaxSurge.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *RunAsUserStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ranges) > 0 { + for _, e := range m.Ranges { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *SELinuxStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if m.SELinuxOptions != nil { + l = m.SELinuxOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Scale) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScaleSpec) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + return n +} + +func (m *ScaleStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.TargetSelector) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SupplementalGroupsStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ranges) > 0 { + for _, e := range m.Ranges { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ThirdPartyResource) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Description) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Versions) > 0 { + for _, e := range m.Versions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ThirdPartyResourceData) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Data != nil { + l = len(m.Data) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ThirdPartyResourceDataList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ThirdPartyResourceList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *APIVersion) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIVersion{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricCurrentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricCurrentStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricCurrentStatusList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricCurrentStatusList{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CustomMetricCurrentStatus", "CustomMetricCurrentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricTarget) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricTarget{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricTargetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricTargetList{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CustomMetricTarget", "CustomMetricTarget", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DaemonSetSpec", "DaemonSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "DaemonSetStatus", "DaemonSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "DaemonSet", "DaemonSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetSpec{`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(this.UpdateStrategy.String(), "DaemonSetUpdateStrategy", "DaemonSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `TemplateGeneration:` + fmt.Sprintf("%v", this.TemplateGeneration) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetStatus{`, + `CurrentNumberScheduled:` + fmt.Sprintf("%v", this.CurrentNumberScheduled) + `,`, + `NumberMisscheduled:` + fmt.Sprintf("%v", this.NumberMisscheduled) + `,`, + `DesiredNumberScheduled:` + fmt.Sprintf("%v", this.DesiredNumberScheduled) + `,`, + `NumberReady:` + fmt.Sprintf("%v", this.NumberReady) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `UpdatedNumberScheduled:` + fmt.Sprintf("%v", this.UpdatedNumberScheduled) + `,`, + `NumberAvailable:` + fmt.Sprintf("%v", this.NumberAvailable) + `,`, + `NumberUnavailable:` + fmt.Sprintf("%v", this.NumberUnavailable) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetUpdateStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetUpdateStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateDaemonSet", "RollingUpdateDaemonSet", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Deployment) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Deployment{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DeploymentSpec", "DeploymentSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "DeploymentStatus", "DeploymentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Deployment", "Deployment", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentRollback) String() string { + if this == nil { + return "nil" + } + keysForUpdatedAnnotations := make([]string, 0, len(this.UpdatedAnnotations)) + for k := range this.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + mapStringForUpdatedAnnotations := "map[string]string{" + for _, k := range keysForUpdatedAnnotations { + mapStringForUpdatedAnnotations += fmt.Sprintf("%v: %v,", k, this.UpdatedAnnotations[k]) + } + mapStringForUpdatedAnnotations += "}" + s := strings.Join([]string{`&DeploymentRollback{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UpdatedAnnotations:` + mapStringForUpdatedAnnotations + `,`, + `RollbackTo:` + strings.Replace(strings.Replace(this.RollbackTo.String(), "RollbackConfig", "RollbackConfig", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `Strategy:` + strings.Replace(strings.Replace(this.Strategy.String(), "DeploymentStrategy", "DeploymentStrategy", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, + `RollbackTo:` + strings.Replace(fmt.Sprintf("%v", this.RollbackTo), "RollbackConfig", "RollbackConfig", 1) + `,`, + `ProgressDeadlineSeconds:` + valueToStringGenerated(this.ProgressDeadlineSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentStatus{`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `UnavailableReplicas:` + fmt.Sprintf("%v", this.UnavailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateDeployment", "RollingUpdateDeployment", 1) + `,`, + `}`, + }, "") + return s +} +func (this *FSGroupStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&FSGroupStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `Ranges:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ranges), "IDRange", "IDRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPIngressPath) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPIngressPath{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Backend:` + strings.Replace(strings.Replace(this.Backend.String(), "IngressBackend", "IngressBackend", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPIngressRuleValue) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPIngressRuleValue{`, + `Paths:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Paths), "HTTPIngressPath", "HTTPIngressPath", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HostPortRange) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostPortRange{`, + `Min:` + fmt.Sprintf("%v", this.Min) + `,`, + `Max:` + fmt.Sprintf("%v", this.Max) + `,`, + `}`, + }, "") + return s +} +func (this *IDRange) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IDRange{`, + `Min:` + fmt.Sprintf("%v", this.Min) + `,`, + `Max:` + fmt.Sprintf("%v", this.Max) + `,`, + `}`, + }, "") + return s +} +func (this *Ingress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Ingress{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "IngressSpec", "IngressSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "IngressStatus", "IngressStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressBackend) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressBackend{`, + `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `ServicePort:` + strings.Replace(strings.Replace(this.ServicePort.String(), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Ingress", "Ingress", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressRule{`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `IngressRuleValue:` + strings.Replace(strings.Replace(this.IngressRuleValue.String(), "IngressRuleValue", "IngressRuleValue", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressRuleValue) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressRuleValue{`, + `HTTP:` + strings.Replace(fmt.Sprintf("%v", this.HTTP), "HTTPIngressRuleValue", "HTTPIngressRuleValue", 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressSpec{`, + `Backend:` + strings.Replace(fmt.Sprintf("%v", this.Backend), "IngressBackend", "IngressBackend", 1) + `,`, + `TLS:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.TLS), "IngressTLS", "IngressTLS", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "IngressRule", "IngressRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressStatus{`, + `LoadBalancer:` + strings.Replace(strings.Replace(this.LoadBalancer.String(), "LoadBalancerStatus", "k8s_io_kubernetes_pkg_api_v1.LoadBalancerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressTLS) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressTLS{`, + `Hosts:` + fmt.Sprintf("%v", this.Hosts) + `,`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicy{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkPolicySpec", "NetworkPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyIngressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyIngressRule{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "NetworkPolicyPort", "NetworkPolicyPort", 1), `&`, ``, 1) + `,`, + `From:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.From), "NetworkPolicyPeer", "NetworkPolicyPeer", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "NetworkPolicy", "NetworkPolicy", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyPeer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyPeer{`, + `PodSelector:` + strings.Replace(fmt.Sprintf("%v", this.PodSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyPort{`, + `Protocol:` + valueToStringGenerated(this.Protocol) + `,`, + `Port:` + strings.Replace(fmt.Sprintf("%v", this.Port), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicySpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicySpec{`, + `PodSelector:` + strings.Replace(strings.Replace(this.PodSelector.String(), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "NetworkPolicyIngressRule", "NetworkPolicyIngressRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityPolicy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityPolicy{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSecurityPolicySpec", "PodSecurityPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityPolicyList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityPolicyList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodSecurityPolicy", "PodSecurityPolicy", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityPolicySpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityPolicySpec{`, + `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`, + `DefaultAddCapabilities:` + fmt.Sprintf("%v", this.DefaultAddCapabilities) + `,`, + `RequiredDropCapabilities:` + fmt.Sprintf("%v", this.RequiredDropCapabilities) + `,`, + `AllowedCapabilities:` + fmt.Sprintf("%v", this.AllowedCapabilities) + `,`, + `Volumes:` + fmt.Sprintf("%v", this.Volumes) + `,`, + `HostNetwork:` + fmt.Sprintf("%v", this.HostNetwork) + `,`, + `HostPorts:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HostPorts), "HostPortRange", "HostPortRange", 1), `&`, ``, 1) + `,`, + `HostPID:` + fmt.Sprintf("%v", this.HostPID) + `,`, + `HostIPC:` + fmt.Sprintf("%v", this.HostIPC) + `,`, + `SELinux:` + strings.Replace(strings.Replace(this.SELinux.String(), "SELinuxStrategyOptions", "SELinuxStrategyOptions", 1), `&`, ``, 1) + `,`, + `RunAsUser:` + strings.Replace(strings.Replace(this.RunAsUser.String(), "RunAsUserStrategyOptions", "RunAsUserStrategyOptions", 1), `&`, ``, 1) + `,`, + `SupplementalGroups:` + strings.Replace(strings.Replace(this.SupplementalGroups.String(), "SupplementalGroupsStrategyOptions", "SupplementalGroupsStrategyOptions", 1), `&`, ``, 1) + `,`, + `FSGroup:` + strings.Replace(strings.Replace(this.FSGroup.String(), "FSGroupStrategyOptions", "FSGroupStrategyOptions", 1), `&`, ``, 1) + `,`, + `ReadOnlyRootFilesystem:` + fmt.Sprintf("%v", this.ReadOnlyRootFilesystem) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ReplicaSetSpec", "ReplicaSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ReplicaSetStatus", "ReplicaSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_apimachinery_pkg_apis_meta_v1.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ReplicaSet", "ReplicaSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `FullyLabeledReplicas:` + fmt.Sprintf("%v", this.FullyLabeledReplicas) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ReplicaSetCondition", "ReplicaSetCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerDummy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerDummy{`, + `}`, + }, "") + return s +} +func (this *RollbackConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollbackConfig{`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateDaemonSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateDaemonSet{`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateDeployment) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateDeployment{`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `MaxSurge:` + strings.Replace(fmt.Sprintf("%v", this.MaxSurge), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RunAsUserStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RunAsUserStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `Ranges:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ranges), "IDRange", "IDRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SELinuxStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SELinuxStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `SELinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SELinuxOptions), "SELinuxOptions", "k8s_io_kubernetes_pkg_api_v1.SELinuxOptions", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Scale) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Scale{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ScaleSpec", "ScaleSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ScaleStatus", "ScaleStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleSpec{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleStatus) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ScaleStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `Selector:` + mapStringForSelector + `,`, + `TargetSelector:` + fmt.Sprintf("%v", this.TargetSelector) + `,`, + `}`, + }, "") + return s +} +func (this *SupplementalGroupsStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SupplementalGroupsStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `Ranges:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ranges), "IDRange", "IDRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResource{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Description:` + fmt.Sprintf("%v", this.Description) + `,`, + `Versions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Versions), "APIVersion", "APIVersion", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResourceData) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResourceData{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + valueToStringGenerated(this.Data) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResourceDataList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResourceDataList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ThirdPartyResourceData", "ThirdPartyResourceData", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResourceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResourceList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ThirdPartyResource", "ThirdPartyResource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *APIVersion) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIVersion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIVersion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricCurrentStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricCurrentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricCurrentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricCurrentStatusList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricCurrentStatusList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricCurrentStatusList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CustomMetricCurrentStatus{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricTarget) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricTarget: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricTarget: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricTargetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricTargetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricTargetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CustomMetricTarget{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, DaemonSet{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReadySeconds", wireType) + } + m.MinReadySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinReadySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TemplateGeneration", wireType) + } + m.TemplateGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TemplateGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RevisionHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RevisionHistoryLimit = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentNumberScheduled", wireType) + } + m.CurrentNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CurrentNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberMisscheduled", wireType) + } + m.NumberMisscheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberMisscheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredNumberScheduled", wireType) + } + m.DesiredNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DesiredNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberReady", wireType) + } + m.NumberReady = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberReady |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedNumberScheduled", wireType) + } + m.UpdatedNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdatedNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberAvailable", wireType) + } + m.NumberAvailable = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberAvailable |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberUnavailable", wireType) + } + m.NumberUnavailable = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumberUnavailable |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CollisionCount = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetUpdateStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetUpdateStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetUpdateStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = DaemonSetUpdateStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollingUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollingUpdate == nil { + m.RollingUpdate = &RollingUpdateDaemonSet{} + } + if err := m.RollingUpdate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Deployment) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Deployment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Deployment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = DeploymentConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastUpdateTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastUpdateTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Deployment{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentRollback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentRollback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentRollback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedAnnotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.UpdatedAnnotations == nil { + m.UpdatedAnnotations = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.UpdatedAnnotations[mapkey] = mapvalue + } else { + var mapvalue string + m.UpdatedAnnotations[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollbackTo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RollbackTo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Strategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReadySeconds", wireType) + } + m.MinReadySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinReadySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RevisionHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RevisionHistoryLimit = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollbackTo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollbackTo == nil { + m.RollbackTo = &RollbackConfig{} + } + if err := m.RollbackTo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProgressDeadlineSeconds", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ProgressDeadlineSeconds = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedReplicas", wireType) + } + m.UpdatedReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdatedReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableReplicas", wireType) + } + m.AvailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AvailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnavailableReplicas", wireType) + } + m.UnavailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnavailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, DeploymentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CollisionCount = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentStrategy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = DeploymentStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollingUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollingUpdate == nil { + m.RollingUpdate = &RollingUpdateDeployment{} + } + if err := m.RollingUpdate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FSGroupStrategyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FSGroupStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FSGroupStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = FSGroupStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, IDRange{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPIngressPath) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPIngressPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPIngressPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPIngressRuleValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPIngressRuleValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPIngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Paths = append(m.Paths, HTTPIngressPath{}) + if err := m.Paths[len(m.Paths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HostPortRange) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostPortRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostPortRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType) + } + m.Min = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Min |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + m.Max = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Max |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IDRange) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IDRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IDRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType) + } + m.Min = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Min |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + m.Max = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Max |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Ingress) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Ingress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Ingress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressBackend) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressBackend: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressBackend: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServiceName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServicePort", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ServicePort.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Ingress{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IngressRuleValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.IngressRuleValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressRuleValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressRuleValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HTTP", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HTTP == nil { + m.HTTP = &HTTPIngressRuleValue{} + } + if err := m.HTTP.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Backend == nil { + m.Backend = &IngressBackend{} + } + if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TLS = append(m.TLS, IngressTLS{}) + if err := m.TLS[len(m.TLS)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, IngressRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LoadBalancer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressTLS) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressTLS: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressTLS: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hosts = append(m.Hosts, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyIngressRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyIngressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyIngressRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, NetworkPolicyPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = append(m.From, NetworkPolicyPeer{}) + if err := m.From[len(m.From)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, NetworkPolicy{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyPeer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyPeer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyPeer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodSelector == nil { + m.PodSelector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.PodSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NamespaceSelector == nil { + m.NamespaceSelector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyPort) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := k8s_io_kubernetes_pkg_api_v1.Protocol(dAtA[iNdEx:postIndex]) + m.Protocol = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Port == nil { + m.Port = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.Port.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicySpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicySpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ingress = append(m.Ingress, NetworkPolicyIngressRule{}) + if err := m.Ingress[len(m.Ingress)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityPolicy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityPolicy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityPolicy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityPolicyList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityPolicyList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityPolicyList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodSecurityPolicy{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityPolicySpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityPolicySpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Privileged = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultAddCapabilities", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DefaultAddCapabilities = append(m.DefaultAddCapabilities, k8s_io_kubernetes_pkg_api_v1.Capability(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDropCapabilities", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequiredDropCapabilities = append(m.RequiredDropCapabilities, k8s_io_kubernetes_pkg_api_v1.Capability(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedCapabilities", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedCapabilities = append(m.AllowedCapabilities, k8s_io_kubernetes_pkg_api_v1.Capability(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volumes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volumes = append(m.Volumes, FSType(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostNetwork", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostNetwork = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPorts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostPorts = append(m.HostPorts, HostPortRange{}) + if err := m.HostPorts[len(m.HostPorts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPID", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostPID = bool(v != 0) + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIPC", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostIPC = bool(v != 0) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SELinux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RunAsUser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SupplementalGroups.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSGroup", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FSGroup.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnlyRootFilesystem", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnlyRootFilesystem = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetCondition) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = ReplicaSetConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ReplicaSet{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReadySeconds", wireType) + } + m.MinReadySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MinReadySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FullyLabeledReplicas", wireType) + } + m.FullyLabeledReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.FullyLabeledReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableReplicas", wireType) + } + m.AvailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AvailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, ReplicaSetCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerDummy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerDummy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerDummy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollbackConfig) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollbackConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollbackConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + m.Revision = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Revision |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollingUpdateDaemonSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateDaemonSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateDaemonSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxUnavailable == nil { + m.MaxUnavailable = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollingUpdateDeployment) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateDeployment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateDeployment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxUnavailable == nil { + m.MaxUnavailable = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSurge", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxSurge == nil { + m.MaxSurge = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxSurge.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RunAsUserStrategyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RunAsUserStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RunAsUserStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = RunAsUserStrategy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, IDRange{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SELinuxStrategyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SELinuxStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SELinuxStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = SELinuxStrategy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SELinuxOptions == nil { + m.SELinuxOptions = &k8s_io_kubernetes_pkg_api_v1.SELinuxOptions{} + } + if err := m.SELinuxOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Scale) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Scale: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Scale: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Selector == nil { + m.Selector = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Selector[mapkey] = mapvalue + } else { + var mapvalue string + m.Selector[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SupplementalGroupsStrategyOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SupplementalGroupsStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SupplementalGroupsStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = SupplementalGroupsStrategyType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, IDRange{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResource) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Versions = append(m.Versions, APIVersion{}) + if err := m.Versions[len(m.Versions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResourceData) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResourceData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResourceData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResourceDataList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResourceDataList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResourceDataList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ThirdPartyResourceData{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResourceList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResourceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResourceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ThirdPartyResource{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 3406 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5b, 0xdd, 0x6f, 0x1b, 0xc7, + 0xb5, 0xf7, 0x8a, 0xa4, 0x44, 0x1d, 0x59, 0x92, 0x35, 0x72, 0x64, 0x46, 0x49, 0x24, 0x67, 0x2f, + 0x6e, 0xe2, 0xdc, 0x1b, 0x53, 0x37, 0xce, 0x75, 0x6e, 0xe2, 0x24, 0x4e, 0x44, 0xc9, 0x1f, 0xba, + 0x90, 0x64, 0x66, 0x48, 0x19, 0x8d, 0xf3, 0xd5, 0x15, 0x39, 0xa2, 0xd6, 0xde, 0xaf, 0xec, 0xce, + 0x2a, 0x22, 0x82, 0xb6, 0x01, 0x8a, 0xe6, 0xb1, 0x68, 0x5f, 0x8a, 0x14, 0x68, 0x1f, 0xfb, 0xd0, + 0x97, 0x36, 0x79, 0x68, 0xd3, 0xfe, 0x05, 0xf5, 0x43, 0x51, 0xa4, 0x40, 0x0b, 0x04, 0x45, 0x2a, + 0xd4, 0x0a, 0x9a, 0x7f, 0xa0, 0xc8, 0x8b, 0x9f, 0x8a, 0x99, 0x9d, 0xfd, 0xde, 0x95, 0x4d, 0x4a, + 0x26, 0x0a, 0xf4, 0x4d, 0x9c, 0x39, 0xe7, 0x77, 0x3e, 0xe6, 0xcc, 0x99, 0x33, 0x73, 0x56, 0xf0, + 0xf2, 0xad, 0xe7, 0x9d, 0xaa, 0x6a, 0x2e, 0xdc, 0x72, 0x37, 0x89, 0x6d, 0x10, 0x4a, 0x9c, 0x05, + 0xeb, 0x56, 0x67, 0x41, 0xb1, 0x54, 0x67, 0x81, 0xec, 0x52, 0x62, 0x38, 0xaa, 0x69, 0x38, 0x0b, + 0x3b, 0xcf, 0x6c, 0x12, 0xaa, 0x3c, 0xb3, 0xd0, 0x21, 0x06, 0xb1, 0x15, 0x4a, 0xda, 0x55, 0xcb, + 0x36, 0xa9, 0x89, 0xce, 0x7a, 0xec, 0xd5, 0x90, 0xbd, 0x6a, 0xdd, 0xea, 0x54, 0x19, 0x7b, 0x35, + 0x64, 0xaf, 0x0a, 0xf6, 0xd9, 0xb3, 0x1d, 0x95, 0x6e, 0xbb, 0x9b, 0xd5, 0x96, 0xa9, 0x2f, 0x74, + 0xcc, 0x8e, 0xb9, 0xc0, 0x51, 0x36, 0xdd, 0x2d, 0xfe, 0x8b, 0xff, 0xe0, 0x7f, 0x79, 0xe8, 0xb3, + 0xff, 0x2b, 0x94, 0x53, 0x2c, 0x55, 0x57, 0x5a, 0xdb, 0xaa, 0x41, 0xec, 0xae, 0xaf, 0xde, 0x82, + 0x4d, 0x1c, 0xd3, 0xb5, 0x5b, 0x24, 0xa9, 0xd3, 0x81, 0x5c, 0xce, 0x82, 0x4e, 0xa8, 0xb2, 0xb0, + 0x93, 0xb2, 0x64, 0x76, 0x21, 0x8f, 0xcb, 0x76, 0x0d, 0xaa, 0xea, 0x69, 0x31, 0xcf, 0xdd, 0x8b, + 0xc1, 0x69, 0x6d, 0x13, 0x5d, 0x49, 0xf1, 0x3d, 0x9b, 0xc7, 0xe7, 0x52, 0x55, 0x5b, 0x50, 0x0d, + 0xea, 0x50, 0x3b, 0xc5, 0xf4, 0x74, 0xee, 0x32, 0x65, 0xd9, 0xf2, 0xc2, 0x01, 0x8b, 0x6a, 0x99, + 0x9a, 0xda, 0xea, 0xe6, 0x2d, 0xa8, 0x5c, 0x05, 0x58, 0xac, 0xaf, 0x5c, 0x27, 0x36, 0x5b, 0x38, + 0x74, 0x1a, 0x8a, 0x86, 0xa2, 0x93, 0x8a, 0x74, 0x5a, 0x3a, 0x33, 0x5a, 0x3b, 0x7e, 0x7b, 0x6f, + 0xfe, 0xd8, 0xfe, 0xde, 0x7c, 0x71, 0x5d, 0xd1, 0x09, 0xe6, 0x33, 0xf2, 0x8f, 0x25, 0x78, 0x78, + 0xc9, 0x75, 0xa8, 0xa9, 0xaf, 0x11, 0x6a, 0xab, 0xad, 0x25, 0xd7, 0xb6, 0x89, 0x41, 0x1b, 0x54, + 0xa1, 0xae, 0x73, 0x6f, 0x7e, 0x74, 0x03, 0x4a, 0x3b, 0x8a, 0xe6, 0x92, 0xca, 0xd0, 0x69, 0xe9, + 0xcc, 0xd8, 0xb9, 0x6a, 0x55, 0x04, 0x54, 0xd4, 0x3b, 0x7e, 0x48, 0x55, 0xfd, 0x25, 0xaf, 0xbe, + 0xe6, 0x2a, 0x06, 0x55, 0x69, 0xb7, 0x76, 0x52, 0x40, 0x1e, 0x17, 0x72, 0xaf, 0x33, 0x2c, 0xec, + 0x41, 0xca, 0xdf, 0x97, 0xe0, 0xb1, 0x5c, 0xdd, 0x56, 0x55, 0x87, 0x22, 0x1d, 0x4a, 0x2a, 0x25, + 0xba, 0x53, 0x91, 0x4e, 0x17, 0xce, 0x8c, 0x9d, 0xbb, 0x5a, 0xed, 0x29, 0x9c, 0xab, 0xb9, 0xe0, + 0xb5, 0x71, 0xa1, 0x57, 0x69, 0x85, 0xc1, 0x63, 0x4f, 0x8a, 0xfc, 0x43, 0x09, 0x50, 0x94, 0xa7, + 0xa9, 0xd8, 0x1d, 0x42, 0xef, 0xc3, 0x4b, 0xaf, 0x1f, 0xce, 0x4b, 0xd3, 0x02, 0x72, 0xcc, 0x13, + 0x18, 0x73, 0xd2, 0x07, 0x12, 0xcc, 0xa4, 0x75, 0xe2, 0xde, 0xd9, 0x8a, 0x7b, 0x67, 0xf1, 0x10, + 0xde, 0xf1, 0x50, 0x73, 0xdc, 0xf2, 0xab, 0x21, 0x18, 0x5d, 0x56, 0x88, 0x6e, 0x1a, 0x0d, 0x42, + 0xd1, 0x37, 0xa1, 0xcc, 0xf6, 0x68, 0x5b, 0xa1, 0x0a, 0xf7, 0xc8, 0xd8, 0xb9, 0xff, 0x39, 0xc8, + 0x5c, 0xa7, 0xca, 0xa8, 0xab, 0x3b, 0xcf, 0x54, 0xaf, 0x6d, 0xde, 0x24, 0x2d, 0xba, 0x46, 0xa8, + 0x52, 0x43, 0x42, 0x0e, 0x84, 0x63, 0x38, 0x40, 0x45, 0x6f, 0x43, 0xd1, 0xb1, 0x48, 0x4b, 0x38, + 0xf3, 0xa5, 0x1e, 0xcd, 0x0a, 0x34, 0x6d, 0x58, 0xa4, 0x15, 0xae, 0x16, 0xfb, 0x85, 0x39, 0x2e, + 0xda, 0x82, 0x61, 0x87, 0x87, 0x41, 0xa5, 0xc0, 0x25, 0x5c, 0xec, 0x5b, 0x82, 0x17, 0x4c, 0x13, + 0x42, 0xc6, 0xb0, 0xf7, 0x1b, 0x0b, 0x74, 0xf9, 0xf7, 0x12, 0x8c, 0x07, 0xb4, 0x7c, 0xc5, 0xde, + 0x4c, 0xf9, 0xae, 0x7a, 0x7f, 0xbe, 0x63, 0xdc, 0xdc, 0x73, 0x27, 0x84, 0xac, 0xb2, 0x3f, 0x12, + 0xf1, 0xdb, 0x5b, 0x7e, 0x3c, 0x0c, 0xf1, 0x78, 0x78, 0xbe, 0x5f, 0xb3, 0x72, 0xc2, 0xe0, 0x93, + 0x62, 0xc4, 0x1c, 0xe6, 0x4e, 0xf4, 0x16, 0x94, 0x1d, 0xa2, 0x91, 0x16, 0x35, 0x6d, 0x61, 0xce, + 0xb3, 0xf7, 0x69, 0x8e, 0xb2, 0x49, 0xb4, 0x86, 0x60, 0xad, 0x1d, 0x67, 0xf6, 0xf8, 0xbf, 0x70, + 0x00, 0x89, 0xde, 0x80, 0x32, 0x25, 0xba, 0xa5, 0x29, 0xd4, 0xdf, 0x58, 0x67, 0xf3, 0x4d, 0x62, + 0xb0, 0x75, 0xb3, 0xdd, 0x14, 0x0c, 0x7c, 0xf1, 0x03, 0x67, 0xf9, 0xa3, 0x38, 0x00, 0x44, 0x1f, + 0x4a, 0x30, 0xe1, 0x5a, 0x6d, 0x46, 0x4a, 0x59, 0x82, 0xed, 0x74, 0x45, 0x34, 0x5c, 0xee, 0xd7, + 0x6d, 0x1b, 0x31, 0xb4, 0xda, 0x8c, 0x10, 0x3e, 0x11, 0x1f, 0xc7, 0x09, 0xa9, 0x68, 0x11, 0x26, + 0x75, 0xd5, 0xc0, 0x44, 0x69, 0x77, 0x1b, 0xa4, 0x65, 0x1a, 0x6d, 0xa7, 0x52, 0x3c, 0x2d, 0x9d, + 0x29, 0xd5, 0x4e, 0x09, 0x80, 0xc9, 0xb5, 0xf8, 0x34, 0x4e, 0xd2, 0xa3, 0xff, 0x07, 0xe4, 0xdb, + 0x75, 0xc5, 0x3b, 0x2f, 0x54, 0xd3, 0xa8, 0x94, 0x4e, 0x4b, 0x67, 0x0a, 0xb5, 0x59, 0x81, 0x82, + 0x9a, 0x29, 0x0a, 0x9c, 0xc1, 0x85, 0x56, 0xe1, 0xa4, 0x4d, 0x76, 0x54, 0x66, 0xe3, 0x55, 0xd5, + 0xa1, 0xa6, 0xdd, 0x5d, 0x55, 0x75, 0x95, 0x56, 0x86, 0xb9, 0x4e, 0x95, 0xfd, 0xbd, 0xf9, 0x93, + 0x38, 0x63, 0x1e, 0x67, 0x72, 0xc9, 0x1f, 0x97, 0x60, 0x32, 0xb1, 0x5d, 0xd0, 0x75, 0x98, 0x69, + 0x79, 0xc9, 0x78, 0xdd, 0xd5, 0x37, 0x89, 0xdd, 0x68, 0x6d, 0x93, 0xb6, 0xab, 0x91, 0x36, 0x8f, + 0xa1, 0x52, 0x6d, 0x4e, 0x68, 0x3c, 0xb3, 0x94, 0x49, 0x85, 0x73, 0xb8, 0x99, 0x17, 0x0c, 0x3e, + 0xb4, 0xa6, 0x3a, 0x4e, 0x80, 0x39, 0xc4, 0x31, 0x03, 0x2f, 0xac, 0xa7, 0x28, 0x70, 0x06, 0x17, + 0xd3, 0xb1, 0x4d, 0x1c, 0xd5, 0x26, 0xed, 0xa4, 0x8e, 0x85, 0xb8, 0x8e, 0xcb, 0x99, 0x54, 0x38, + 0x87, 0x1b, 0x9d, 0x87, 0x31, 0x4f, 0x1a, 0x5f, 0x3f, 0xb1, 0xd0, 0x41, 0xfa, 0x5f, 0x0f, 0xa7, + 0x70, 0x94, 0x8e, 0x99, 0x66, 0x6e, 0x3a, 0xc4, 0xde, 0x21, 0xed, 0xfc, 0x05, 0xbe, 0x96, 0xa2, + 0xc0, 0x19, 0x5c, 0xcc, 0x34, 0x2f, 0x02, 0x53, 0xa6, 0x0d, 0xc7, 0x4d, 0xdb, 0xc8, 0xa4, 0xc2, + 0x39, 0xdc, 0x2c, 0x8e, 0x3d, 0x95, 0x17, 0x77, 0x14, 0x55, 0x53, 0x36, 0x35, 0x52, 0x19, 0x89, + 0xc7, 0xf1, 0x7a, 0x7c, 0x1a, 0x27, 0xe9, 0xd1, 0x15, 0x98, 0xf2, 0x86, 0x36, 0x0c, 0x25, 0x00, + 0x29, 0x73, 0x90, 0x87, 0x05, 0xc8, 0xd4, 0x7a, 0x92, 0x00, 0xa7, 0x79, 0xd0, 0x05, 0x98, 0x68, + 0x99, 0x9a, 0xc6, 0xe3, 0x71, 0xc9, 0x74, 0x0d, 0x5a, 0x19, 0xe5, 0xbe, 0x42, 0x6c, 0x3f, 0x2e, + 0xc5, 0x66, 0x70, 0x82, 0x52, 0xfe, 0x8b, 0x04, 0xa7, 0x72, 0xf6, 0x34, 0x7a, 0x05, 0x8a, 0xb4, + 0x6b, 0xf9, 0x95, 0xc0, 0x7f, 0xfb, 0x67, 0x4b, 0xb3, 0x6b, 0x91, 0xbb, 0x7b, 0xf3, 0x8f, 0xe4, + 0xb0, 0xb1, 0x69, 0xcc, 0x19, 0xd1, 0xb7, 0x61, 0xdc, 0x66, 0xe2, 0x8c, 0x8e, 0x47, 0x22, 0xf2, + 0xda, 0xa5, 0x1e, 0x73, 0x0e, 0x8e, 0x62, 0x84, 0x79, 0x7b, 0x6a, 0x7f, 0x6f, 0x7e, 0x3c, 0x36, + 0x87, 0xe3, 0xe2, 0xe4, 0xdf, 0x0c, 0x01, 0x2c, 0x13, 0x4b, 0x33, 0xbb, 0x3a, 0x31, 0x06, 0x71, + 0x96, 0xbf, 0x13, 0x3b, 0xcb, 0x5f, 0xee, 0x35, 0xb7, 0x06, 0xaa, 0xe6, 0x1e, 0xe6, 0x9d, 0xc4, + 0x61, 0xfe, 0x4a, 0xff, 0x22, 0x0e, 0x3e, 0xcd, 0xef, 0x14, 0x60, 0x3a, 0x24, 0x5e, 0x32, 0x8d, + 0xb6, 0xca, 0xf7, 0xd3, 0x8b, 0xb1, 0x98, 0x78, 0x32, 0x11, 0x13, 0xa7, 0x32, 0x58, 0x22, 0xf1, + 0x70, 0x3d, 0xd0, 0x7e, 0x88, 0xb3, 0x5f, 0x8c, 0x0b, 0xbf, 0xbb, 0x37, 0x7f, 0xe0, 0xcd, 0xa2, + 0x1a, 0x60, 0xc6, 0x95, 0x45, 0x4f, 0xc0, 0xb0, 0x4d, 0x14, 0xc7, 0x34, 0x78, 0x8a, 0x19, 0x0d, + 0x8d, 0xc2, 0x7c, 0x14, 0x8b, 0x59, 0xf4, 0x14, 0x8c, 0xe8, 0xc4, 0x71, 0x94, 0x0e, 0xe1, 0xd9, + 0x64, 0xb4, 0x36, 0x29, 0x08, 0x47, 0xd6, 0xbc, 0x61, 0xec, 0xcf, 0xa3, 0x9b, 0x30, 0xa1, 0x29, + 0x8e, 0x08, 0xed, 0xa6, 0xaa, 0x13, 0x9e, 0x2f, 0xc6, 0xce, 0xfd, 0xd7, 0xfd, 0x45, 0x0c, 0xe3, + 0x08, 0xcf, 0xc4, 0xd5, 0x18, 0x12, 0x4e, 0x20, 0xa3, 0x1d, 0x40, 0x6c, 0xa4, 0x69, 0x2b, 0x86, + 0xe3, 0xb9, 0x8c, 0xc9, 0x1b, 0xe9, 0x59, 0x5e, 0x90, 0x1b, 0x57, 0x53, 0x68, 0x38, 0x43, 0x82, + 0xfc, 0x07, 0x09, 0x26, 0xc2, 0x05, 0x1b, 0x40, 0xc9, 0xf6, 0x76, 0xbc, 0x64, 0x7b, 0xa1, 0xef, + 0xe0, 0xcd, 0xa9, 0xd9, 0x3e, 0x2a, 0x00, 0x0a, 0x89, 0x58, 0x6a, 0xd8, 0x54, 0x5a, 0xb7, 0xee, + 0xe3, 0x46, 0xf3, 0x33, 0x09, 0x90, 0x48, 0xf4, 0x8b, 0x86, 0x61, 0x52, 0x7e, 0x76, 0xf8, 0x6a, + 0xbe, 0xde, 0xb7, 0x9a, 0xbe, 0x06, 0xd5, 0x8d, 0x14, 0xf6, 0x25, 0x83, 0xda, 0xdd, 0x70, 0xc5, + 0xd2, 0x04, 0x38, 0x43, 0x21, 0xf4, 0x2e, 0x80, 0x2d, 0x30, 0x9b, 0xa6, 0x48, 0x01, 0x2f, 0xf7, + 0x91, 0x4d, 0x19, 0xc0, 0x92, 0x69, 0x6c, 0xa9, 0x9d, 0x30, 0xa1, 0xe1, 0x00, 0x18, 0x47, 0x84, + 0xcc, 0x5e, 0x82, 0x53, 0x39, 0xda, 0xa3, 0x13, 0x50, 0xb8, 0x45, 0xba, 0x9e, 0x5b, 0x31, 0xfb, + 0x13, 0x9d, 0x8c, 0xde, 0x0c, 0x47, 0xc5, 0xa5, 0xee, 0xc2, 0xd0, 0xf3, 0x92, 0xfc, 0x55, 0x29, + 0x1a, 0x6b, 0xbc, 0x9e, 0x3e, 0x03, 0x65, 0x9b, 0x58, 0x9a, 0xda, 0x52, 0x1c, 0x51, 0x0b, 0xf1, + 0xd2, 0x18, 0x8b, 0x31, 0x1c, 0xcc, 0xc6, 0x2a, 0xef, 0xa1, 0x07, 0x5b, 0x79, 0x17, 0x8e, 0xba, + 0xf2, 0x36, 0xa1, 0xec, 0xf8, 0x25, 0x77, 0x91, 0x83, 0x2f, 0x1e, 0x22, 0x67, 0x8b, 0x6a, 0x3b, + 0x10, 0x18, 0xd4, 0xd9, 0x81, 0x90, 0xac, 0x0a, 0xbb, 0xd4, 0x63, 0x85, 0x7d, 0xa4, 0x55, 0x31, + 0xcb, 0xce, 0x96, 0xe2, 0x3a, 0xa4, 0xcd, 0x53, 0x5a, 0x39, 0xcc, 0xce, 0x75, 0x3e, 0x8a, 0xc5, + 0x2c, 0xd2, 0x63, 0xc1, 0x5d, 0x3e, 0x8a, 0xe0, 0x9e, 0xc8, 0x0f, 0x6c, 0xb4, 0x01, 0xa7, 0x2c, + 0xdb, 0xec, 0xd8, 0xc4, 0x71, 0x96, 0x89, 0xd2, 0xd6, 0x54, 0x83, 0xf8, 0xfe, 0x1a, 0xe5, 0x76, + 0x3e, 0xb2, 0xbf, 0x37, 0x7f, 0xaa, 0x9e, 0x4d, 0x82, 0xf3, 0x78, 0xe5, 0xcf, 0x8b, 0x70, 0x22, + 0x79, 0xca, 0xe6, 0x54, 0xb4, 0x52, 0x5f, 0x15, 0xed, 0xd3, 0x91, 0x6d, 0xe3, 0x95, 0xfb, 0x41, + 0x34, 0x64, 0x6c, 0x9d, 0x45, 0x98, 0x14, 0x79, 0xc4, 0x9f, 0x14, 0x35, 0x7d, 0x10, 0x0d, 0x1b, + 0xf1, 0x69, 0x9c, 0xa4, 0x67, 0x75, 0x6a, 0x58, 0x7e, 0xfa, 0x20, 0xc5, 0x78, 0x9d, 0xba, 0x98, + 0x24, 0xc0, 0x69, 0x1e, 0xb4, 0x06, 0xd3, 0xae, 0x91, 0x86, 0xf2, 0xa2, 0xf3, 0x11, 0x01, 0x35, + 0xbd, 0x91, 0x26, 0xc1, 0x59, 0x7c, 0x68, 0x07, 0xa0, 0xe5, 0x17, 0x04, 0x4e, 0x65, 0x98, 0xe7, + 0xea, 0x5a, 0xdf, 0x7b, 0x2b, 0xa8, 0x2d, 0xc2, 0x8c, 0x18, 0x0c, 0x39, 0x38, 0x22, 0x09, 0xbd, + 0x08, 0xe3, 0x36, 0xbf, 0xb4, 0xf8, 0x06, 0x78, 0x85, 0xff, 0x43, 0x82, 0x6d, 0x1c, 0x47, 0x27, + 0x71, 0x9c, 0x36, 0xa3, 0x56, 0x2f, 0xdf, 0x77, 0xad, 0xfe, 0x47, 0x29, 0x7a, 0xbc, 0x05, 0x65, + 0xfa, 0x85, 0x58, 0x49, 0xf6, 0x44, 0xa2, 0x24, 0x9b, 0x49, 0x73, 0x44, 0x2a, 0xb2, 0xef, 0x64, + 0x57, 0xe8, 0x97, 0x0f, 0x55, 0xa1, 0x87, 0xc7, 0xf4, 0xbd, 0x4b, 0xf4, 0x4f, 0x24, 0x98, 0xb9, + 0xdc, 0xb8, 0x62, 0x9b, 0xae, 0xe5, 0xab, 0x77, 0xcd, 0xf2, 0xfc, 0xfc, 0x7f, 0x50, 0xb4, 0x5d, + 0xcd, 0xb7, 0xeb, 0x3f, 0x7c, 0xbb, 0xb0, 0xab, 0x31, 0xbb, 0xa6, 0x13, 0x5c, 0x9e, 0x51, 0x8c, + 0x01, 0xbd, 0x0d, 0xc3, 0xb6, 0x62, 0x74, 0x88, 0x7f, 0x80, 0x3f, 0xd7, 0xa3, 0x35, 0x2b, 0xcb, + 0x98, 0xb1, 0x47, 0xca, 0x48, 0x8e, 0x86, 0x05, 0xaa, 0xfc, 0x53, 0x09, 0x26, 0xaf, 0x36, 0x9b, + 0xf5, 0x15, 0x83, 0x67, 0x80, 0xba, 0x42, 0xb7, 0x59, 0x8d, 0x61, 0x29, 0x74, 0x3b, 0x59, 0x63, + 0xb0, 0x39, 0xcc, 0x67, 0xd0, 0x36, 0x8c, 0xb0, 0xcc, 0x43, 0x8c, 0x76, 0x9f, 0xd7, 0x03, 0x21, + 0xae, 0xe6, 0x81, 0x84, 0xb5, 0xab, 0x18, 0xc0, 0x3e, 0xbc, 0xfc, 0x3e, 0x9c, 0x8c, 0xa8, 0xc7, + 0xfc, 0xc5, 0xdf, 0x58, 0x51, 0x0b, 0x4a, 0x4c, 0x13, 0xff, 0x05, 0xb5, 0xd7, 0x87, 0xc0, 0x84, + 0xc9, 0x61, 0x0d, 0xc6, 0x7e, 0x39, 0xd8, 0xc3, 0x96, 0xd7, 0x60, 0xfc, 0xaa, 0xe9, 0xd0, 0xba, + 0x69, 0x53, 0xee, 0x36, 0xf4, 0x18, 0x14, 0x74, 0xd5, 0x10, 0x27, 0xfc, 0x98, 0xe0, 0x29, 0xb0, + 0x33, 0x88, 0x8d, 0xf3, 0x69, 0x65, 0x57, 0x64, 0xb2, 0x70, 0x5a, 0xd9, 0xc5, 0x6c, 0x5c, 0xbe, + 0x02, 0x23, 0x62, 0x39, 0xa2, 0x40, 0x85, 0x83, 0x81, 0x0a, 0x19, 0x40, 0xbf, 0x1c, 0x82, 0x11, + 0xa1, 0xfd, 0x00, 0x2e, 0x82, 0x6f, 0xc6, 0x2e, 0x82, 0x17, 0xfa, 0x5b, 0xe9, 0xdc, 0x5b, 0x60, + 0x3b, 0x71, 0x0b, 0x7c, 0xa9, 0x4f, 0xfc, 0x83, 0xaf, 0x80, 0x1f, 0x4b, 0x30, 0x11, 0x8f, 0x39, + 0x74, 0x1e, 0xc6, 0xd8, 0x79, 0xa4, 0xb6, 0xc8, 0x7a, 0x58, 0x50, 0x07, 0x0f, 0x3a, 0x8d, 0x70, + 0x0a, 0x47, 0xe9, 0x50, 0x27, 0x60, 0x63, 0x61, 0x21, 0x9c, 0x92, 0xef, 0x72, 0x97, 0xaa, 0x5a, + 0xd5, 0x6b, 0x3d, 0x55, 0x57, 0x0c, 0x7a, 0xcd, 0x6e, 0x50, 0x5b, 0x35, 0x3a, 0x29, 0x41, 0x3c, + 0xc6, 0xa2, 0xc8, 0xf2, 0x6d, 0x09, 0xc6, 0x84, 0xca, 0x03, 0xb8, 0xce, 0xbc, 0x11, 0xbf, 0xce, + 0x3c, 0xd7, 0xe7, 0x7e, 0xce, 0xbe, 0xcb, 0x7c, 0x1a, 0x9a, 0xc2, 0x76, 0x30, 0x4b, 0x30, 0xdb, + 0xa6, 0x43, 0x93, 0x09, 0x86, 0xed, 0x35, 0xcc, 0x67, 0xd0, 0xf7, 0x24, 0x38, 0xa1, 0x26, 0xf6, + 0xbc, 0xf0, 0xf5, 0x2b, 0xfd, 0xa9, 0x16, 0xc0, 0xd4, 0x2a, 0x42, 0xde, 0x89, 0xe4, 0x0c, 0x4e, + 0x89, 0x94, 0x5d, 0x48, 0x51, 0x21, 0x05, 0x8a, 0xdb, 0x94, 0x5a, 0x62, 0x11, 0x96, 0xfa, 0xcf, + 0x3c, 0xa1, 0x4a, 0x65, 0x6e, 0x7e, 0xb3, 0x59, 0xc7, 0x1c, 0x5a, 0xfe, 0xc5, 0x50, 0xe0, 0xb0, + 0x86, 0xb7, 0x49, 0x82, 0x7c, 0x2b, 0x1d, 0x45, 0xbe, 0x1d, 0xcb, 0xca, 0xb5, 0xe8, 0x1b, 0x50, + 0xa0, 0x5a, 0xbf, 0x17, 0x5a, 0x21, 0xa1, 0xb9, 0xda, 0x08, 0x13, 0x56, 0x73, 0xb5, 0x81, 0x19, + 0x24, 0x7a, 0x07, 0x4a, 0xec, 0x34, 0x63, 0x7b, 0xbc, 0xd0, 0x7f, 0x0e, 0x61, 0xfe, 0x0a, 0x23, + 0x8c, 0xfd, 0x72, 0xb0, 0x87, 0x2b, 0xbf, 0x0f, 0xe3, 0xb1, 0x44, 0x80, 0x6e, 0xc2, 0x71, 0xcd, + 0x54, 0xda, 0x35, 0x45, 0x53, 0x8c, 0x16, 0xb1, 0x93, 0xa9, 0x31, 0xfb, 0x2e, 0xb4, 0x1a, 0xe1, + 0x10, 0x09, 0x25, 0x68, 0x83, 0x46, 0xe7, 0x70, 0x0c, 0x5b, 0x56, 0x00, 0x42, 0xeb, 0xd1, 0x3c, + 0x94, 0x58, 0x08, 0x7b, 0x27, 0xd3, 0x68, 0x6d, 0x94, 0xe9, 0xca, 0x22, 0xdb, 0xc1, 0xde, 0x38, + 0x3a, 0x07, 0xe0, 0x90, 0x96, 0x4d, 0x28, 0xcf, 0x3b, 0xde, 0xeb, 0x51, 0x90, 0x81, 0x1b, 0xc1, + 0x0c, 0x8e, 0x50, 0xc9, 0x7f, 0x96, 0x60, 0x7c, 0x9d, 0xd0, 0xf7, 0x4c, 0xfb, 0x56, 0x9d, 0xb7, + 0x99, 0x07, 0x90, 0xf7, 0x37, 0x63, 0x79, 0xff, 0xd5, 0x1e, 0xd7, 0x2c, 0xa6, 0x6d, 0x5e, 0xf6, + 0x97, 0xff, 0x2e, 0x41, 0x25, 0x46, 0x19, 0x4d, 0x13, 0x04, 0x4a, 0x96, 0x69, 0x53, 0xff, 0x8c, + 0x3f, 0x94, 0x06, 0x2c, 0xa5, 0x46, 0x4e, 0x79, 0x06, 0x8b, 0x3d, 0x74, 0x66, 0xe7, 0x96, 0x6d, + 0xea, 0x22, 0xee, 0x0f, 0x27, 0x85, 0x10, 0x3b, 0xb4, 0xf3, 0xb2, 0x6d, 0xea, 0x98, 0x63, 0xcb, + 0x7f, 0x92, 0x60, 0x2a, 0x46, 0x39, 0x80, 0x94, 0xae, 0xc4, 0x53, 0xfa, 0x4b, 0x87, 0x31, 0x2c, + 0x27, 0xb1, 0x7f, 0x9d, 0x34, 0x8b, 0x39, 0x00, 0x6d, 0xc1, 0x98, 0x65, 0xb6, 0x1b, 0x47, 0xd0, + 0x5f, 0x9c, 0x64, 0x27, 0x64, 0x3d, 0xc4, 0xc2, 0x51, 0x60, 0xb4, 0x0b, 0x53, 0x86, 0xa2, 0x13, + 0xc7, 0x52, 0x5a, 0xa4, 0x71, 0x04, 0x6f, 0x2a, 0x0f, 0xf1, 0x2e, 0x45, 0x12, 0x11, 0xa7, 0x85, + 0xc8, 0xbf, 0x4e, 0xd9, 0x6d, 0xda, 0x14, 0xbd, 0x06, 0x65, 0xfe, 0xa9, 0x47, 0xcb, 0xd4, 0xc4, + 0xd1, 0x76, 0x9e, 0x2d, 0x4d, 0x5d, 0x8c, 0xdd, 0xdd, 0x9b, 0xff, 0xcf, 0x03, 0x9f, 0x84, 0x7d, + 0x42, 0x1c, 0xc0, 0xa0, 0x75, 0x28, 0x5a, 0x87, 0x29, 0x33, 0xf8, 0xc1, 0xc2, 0x6b, 0x0b, 0x8e, + 0x23, 0xff, 0x23, 0xa9, 0x38, 0x3f, 0x5e, 0x6e, 0x1e, 0xd9, 0x82, 0x05, 0x65, 0x4d, 0xee, 0xa2, + 0xd9, 0x30, 0x22, 0x4e, 0x59, 0x11, 0x97, 0x57, 0x0e, 0x13, 0x97, 0xd1, 0x93, 0x21, 0xb8, 0x44, + 0xf8, 0x83, 0xbe, 0x20, 0xf9, 0xaf, 0x12, 0x4c, 0x71, 0x85, 0x5a, 0xae, 0xad, 0xd2, 0xee, 0xc0, + 0x32, 0xe8, 0x56, 0x2c, 0x83, 0x2e, 0xf7, 0x68, 0x68, 0x4a, 0xe3, 0xdc, 0x2c, 0xfa, 0x85, 0x04, + 0x0f, 0xa5, 0xa8, 0x07, 0x90, 0x61, 0x48, 0x3c, 0xc3, 0xbc, 0x7a, 0x58, 0x03, 0x73, 0xb2, 0xcc, + 0x6d, 0xc8, 0x30, 0x8f, 0x07, 0xee, 0x39, 0x00, 0xcb, 0x56, 0x77, 0x54, 0x8d, 0x74, 0x44, 0x13, + 0xba, 0x1c, 0x2e, 0x49, 0x3d, 0x98, 0xc1, 0x11, 0x2a, 0xf4, 0x2d, 0x98, 0x69, 0x93, 0x2d, 0xc5, + 0xd5, 0xe8, 0x62, 0xbb, 0xbd, 0xa4, 0x58, 0xca, 0xa6, 0xaa, 0xa9, 0x54, 0x15, 0x37, 0xec, 0xd1, + 0xda, 0x25, 0xaf, 0x39, 0x9c, 0x45, 0x71, 0x77, 0x6f, 0xfe, 0xc9, 0x83, 0x9b, 0x3a, 0x3e, 0x71, + 0x17, 0xe7, 0x08, 0x41, 0xdf, 0x95, 0xa0, 0x62, 0x93, 0x77, 0x5d, 0xd5, 0x26, 0xed, 0x65, 0xdb, + 0xb4, 0x62, 0x1a, 0x14, 0xb8, 0x06, 0x57, 0xf6, 0xf7, 0xe6, 0x2b, 0x38, 0x87, 0xa6, 0x17, 0x1d, + 0x72, 0x05, 0x21, 0x0a, 0xd3, 0x8a, 0xa6, 0x99, 0xef, 0x91, 0xb8, 0x07, 0x8a, 0x5c, 0x7e, 0x6d, + 0x7f, 0x6f, 0x7e, 0x7a, 0x31, 0x3d, 0xdd, 0x8b, 0xe8, 0x2c, 0x78, 0xb4, 0x00, 0x23, 0x3b, 0xa6, + 0xe6, 0xea, 0xc4, 0xa9, 0x94, 0xb8, 0x24, 0x96, 0x71, 0x47, 0xae, 0x7b, 0x43, 0x77, 0xf7, 0xe6, + 0x87, 0x2f, 0x37, 0xf8, 0xd3, 0x87, 0x4f, 0xc5, 0xee, 0x68, 0xac, 0x66, 0x12, 0x5b, 0x9e, 0xbf, + 0xd9, 0x96, 0xc3, 0x1c, 0x73, 0x35, 0x9c, 0xc2, 0x51, 0x3a, 0xa4, 0xc3, 0xe8, 0xb6, 0xb8, 0xb7, + 0x3b, 0x95, 0x91, 0xbe, 0x4e, 0xbf, 0xd8, 0xbd, 0xbf, 0x36, 0x25, 0x44, 0x8e, 0xfa, 0xc3, 0x0e, + 0x0e, 0x25, 0xa0, 0xa7, 0x60, 0x84, 0xff, 0x58, 0x59, 0xe6, 0x0f, 0x60, 0xe5, 0x30, 0x13, 0x5d, + 0xf5, 0x86, 0xb1, 0x3f, 0xef, 0x93, 0xae, 0xd4, 0x97, 0xf8, 0xc3, 0x6c, 0x82, 0x74, 0xa5, 0xbe, + 0x84, 0xfd, 0x79, 0x64, 0xc1, 0x88, 0x43, 0x56, 0x55, 0xc3, 0xdd, 0xad, 0x40, 0x5f, 0xad, 0xe6, + 0xc6, 0x25, 0xce, 0x9d, 0x78, 0x8a, 0x0a, 0x25, 0x8a, 0x79, 0xec, 0x8b, 0x41, 0xbb, 0x30, 0x6a, + 0xbb, 0xc6, 0xa2, 0xb3, 0xe1, 0x10, 0xbb, 0x32, 0xc6, 0x65, 0xf6, 0x9a, 0x9c, 0xb1, 0xcf, 0x9f, + 0x94, 0x1a, 0x78, 0x30, 0xa0, 0xc0, 0xa1, 0x30, 0xf4, 0x13, 0x09, 0x90, 0xe3, 0x5a, 0x96, 0x46, + 0x74, 0x62, 0x50, 0x45, 0xe3, 0xaf, 0x61, 0x4e, 0xe5, 0x38, 0xd7, 0xa1, 0xde, 0xab, 0xdd, 0x29, + 0xa0, 0xa4, 0x32, 0xc1, 0x33, 0x75, 0x9a, 0x14, 0x67, 0xe8, 0xc1, 0x96, 0x62, 0xcb, 0xe1, 0x7f, + 0x57, 0xc6, 0xfb, 0x5a, 0x8a, 0xec, 0x57, 0xc1, 0x70, 0x29, 0xc4, 0x3c, 0xf6, 0xc5, 0xa0, 0xeb, + 0x30, 0x63, 0x13, 0xa5, 0x7d, 0xcd, 0xd0, 0xba, 0xd8, 0x34, 0xe9, 0x65, 0x55, 0x23, 0x4e, 0xd7, + 0xa1, 0x44, 0xaf, 0x4c, 0xf0, 0xb0, 0x09, 0x3e, 0xf5, 0xc0, 0x99, 0x54, 0x38, 0x87, 0x9b, 0x7f, + 0x45, 0x20, 0xde, 0x6f, 0x07, 0xf3, 0x45, 0xe0, 0xe1, 0xbe, 0x22, 0x08, 0x55, 0x7d, 0x60, 0x5f, + 0x11, 0x44, 0x44, 0x1c, 0xfc, 0x84, 0xf4, 0xf5, 0x10, 0x4c, 0x87, 0xc4, 0xf7, 0xfd, 0x15, 0x41, + 0x06, 0xcb, 0x00, 0xbe, 0x22, 0xc8, 0x6e, 0xc3, 0x17, 0x1e, 0x74, 0x1b, 0xfe, 0x01, 0x7c, 0xbd, + 0xc0, 0x3b, 0xfb, 0xa1, 0x13, 0xff, 0xf5, 0x3b, 0xfb, 0xa1, 0xae, 0x39, 0xe5, 0xcc, 0x6f, 0x87, + 0xa2, 0x06, 0xfd, 0x1b, 0xb5, 0x8f, 0x0f, 0xff, 0xbd, 0xa4, 0xfc, 0x45, 0x01, 0x4e, 0x24, 0x77, + 0x6c, 0xac, 0x8b, 0x28, 0xdd, 0xb3, 0x8b, 0x58, 0x87, 0x93, 0x5b, 0xae, 0xa6, 0x75, 0xb9, 0x43, + 0x22, 0xad, 0x44, 0xef, 0xd5, 0xfe, 0x51, 0xc1, 0x79, 0xf2, 0x72, 0x06, 0x0d, 0xce, 0xe4, 0xcc, + 0xe9, 0x88, 0x16, 0xfa, 0xea, 0x88, 0xa6, 0x1a, 0x72, 0xc5, 0x1e, 0x1a, 0x72, 0x99, 0xdd, 0xcd, + 0x52, 0x1f, 0xdd, 0xcd, 0xa3, 0x68, 0x47, 0x66, 0x24, 0xbe, 0x7b, 0xb5, 0x23, 0xe5, 0x47, 0x61, + 0x56, 0xb0, 0x51, 0xde, 0x29, 0x34, 0xa8, 0x6d, 0x6a, 0x1a, 0xb1, 0x97, 0x5d, 0x5d, 0xef, 0xca, + 0x17, 0x61, 0x22, 0xde, 0x13, 0xf7, 0x56, 0xde, 0x6b, 0xd3, 0x8b, 0x5e, 0x4a, 0x64, 0xe5, 0xbd, + 0x71, 0x1c, 0x50, 0xc8, 0x1f, 0x4a, 0x30, 0x93, 0xfd, 0xfd, 0x1d, 0xd2, 0x60, 0x42, 0x57, 0x76, + 0xa3, 0x1f, 0x2f, 0x4a, 0x7d, 0xde, 0xb8, 0x79, 0xf3, 0x73, 0x2d, 0x86, 0x85, 0x13, 0xd8, 0xf2, + 0x97, 0x12, 0x9c, 0xca, 0x69, 0x33, 0x0e, 0x56, 0x13, 0x74, 0x03, 0xca, 0xba, 0xb2, 0xdb, 0x70, + 0xed, 0x0e, 0xe9, 0xfb, 0x8d, 0x81, 0xe7, 0x92, 0x35, 0x81, 0x82, 0x03, 0x3c, 0xf9, 0x13, 0x09, + 0x2a, 0x79, 0xf5, 0x20, 0x3a, 0x1f, 0x6b, 0x88, 0x3e, 0x9e, 0x68, 0x88, 0x4e, 0xa5, 0xf8, 0x06, + 0xd4, 0x0e, 0xfd, 0x54, 0x82, 0x99, 0xec, 0xba, 0x19, 0x3d, 0x1b, 0xd3, 0x78, 0x3e, 0xa1, 0xf1, + 0x64, 0x82, 0x4b, 0xe8, 0xbb, 0x0d, 0x13, 0xa2, 0xba, 0x16, 0x30, 0xc2, 0xcb, 0x4f, 0x1f, 0x9c, + 0x55, 0x05, 0x98, 0x5f, 0x27, 0xf2, 0x95, 0x8c, 0x8f, 0xe1, 0x04, 0xae, 0xfc, 0xf3, 0x21, 0x28, + 0x35, 0x5a, 0x8a, 0x46, 0x06, 0x50, 0xd4, 0xdd, 0x88, 0x15, 0x75, 0xbd, 0xfe, 0xb7, 0x02, 0xd7, + 0x32, 0xb7, 0x9e, 0xdb, 0x4c, 0xd4, 0x73, 0x17, 0xfa, 0x42, 0x3f, 0xb8, 0x94, 0x7b, 0x01, 0x46, + 0x03, 0x25, 0x7a, 0x3b, 0x3d, 0xe4, 0x8f, 0x87, 0x60, 0x2c, 0x22, 0xa2, 0xc7, 0xb3, 0x67, 0x27, + 0x76, 0x7a, 0xf7, 0xf3, 0x8f, 0x51, 0x11, 0xd9, 0x55, 0xff, 0xfc, 0xf6, 0xbe, 0xbf, 0x0b, 0xbf, + 0xa3, 0x4a, 0x1f, 0xeb, 0x17, 0x61, 0x82, 0xf2, 0xff, 0x13, 0x0a, 0xde, 0xf8, 0x0a, 0x3c, 0x8a, + 0x83, 0xaf, 0x3a, 0x9b, 0xb1, 0x59, 0x9c, 0xa0, 0x9e, 0x7d, 0x11, 0xc6, 0x63, 0xc2, 0x7a, 0xfa, + 0x5c, 0xee, 0x77, 0x12, 0x3c, 0x7e, 0xcf, 0x3b, 0x19, 0xaa, 0xc5, 0xb6, 0x57, 0x35, 0xb1, 0xbd, + 0xe6, 0xf2, 0x01, 0x06, 0xf8, 0xb1, 0xc4, 0x8f, 0x86, 0x00, 0x35, 0xb7, 0x55, 0xbb, 0x5d, 0x57, + 0x6c, 0xda, 0xc5, 0xe2, 0xbf, 0xc1, 0x06, 0xb0, 0xe1, 0xce, 0xc3, 0x58, 0x9b, 0x38, 0x2d, 0x5b, + 0xe5, 0xce, 0x12, 0x77, 0x85, 0xe0, 0x1d, 0x64, 0x39, 0x9c, 0xc2, 0x51, 0x3a, 0xd4, 0x81, 0xf2, + 0x8e, 0xf7, 0xff, 0x86, 0x7e, 0xe7, 0xad, 0xd7, 0x62, 0x36, 0xfc, 0x8f, 0xc5, 0x30, 0xbe, 0xc4, + 0x80, 0x83, 0x03, 0x70, 0xf9, 0x23, 0x09, 0x66, 0xd2, 0x8e, 0x59, 0x66, 0xaa, 0x3f, 0x78, 0xe7, + 0x3c, 0x0a, 0x45, 0x8e, 0xce, 0xbc, 0x72, 0xdc, 0x7b, 0xf1, 0x66, 0x92, 0x31, 0x1f, 0x95, 0xbf, + 0x92, 0x60, 0x36, 0x5b, 0xb5, 0x01, 0x5c, 0x25, 0x6e, 0xc6, 0xaf, 0x12, 0xbd, 0x3e, 0x1b, 0x64, + 0xeb, 0x9d, 0x73, 0xad, 0xd8, 0xcb, 0x5c, 0x83, 0x01, 0x18, 0xb9, 0x15, 0x37, 0x72, 0xf1, 0xd0, + 0x46, 0x66, 0x1b, 0x58, 0x3b, 0x7b, 0xfb, 0xce, 0xdc, 0xb1, 0xcf, 0xee, 0xcc, 0x1d, 0xfb, 0xfc, + 0xce, 0xdc, 0xb1, 0x0f, 0xf6, 0xe7, 0xa4, 0xdb, 0xfb, 0x73, 0xd2, 0x67, 0xfb, 0x73, 0xd2, 0xe7, + 0xfb, 0x73, 0xd2, 0xdf, 0xf6, 0xe7, 0xa4, 0x1f, 0x7c, 0x39, 0x77, 0xec, 0xc6, 0x88, 0xc0, 0xfd, + 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x10, 0x0e, 0x63, 0x80, 0x3d, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.proto new file mode 100644 index 000000000..3777741c5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/generated.proto @@ -0,0 +1,1022 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.extensions.v1beta1; + +import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/apis/policy/v1beta1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// An APIVersion represents a single concrete version of an object model. +message APIVersion { + // Name of this version (e.g. 'v1'). + // +optional + optional string name = 1; +} + +message CustomMetricCurrentStatus { + // Custom Metric name. + optional string name = 1; + + // Custom Metric value (average). + optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 2; +} + +message CustomMetricCurrentStatusList { + repeated CustomMetricCurrentStatus items = 1; +} + +// Alpha-level support for Custom Metrics in HPA (as annotations). +message CustomMetricTarget { + // Custom Metric name. + optional string name = 1; + + // Custom Metric value (average). + optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 2; +} + +message CustomMetricTargetList { + repeated CustomMetricTarget items = 1; +} + +// DaemonSet represents the configuration of a daemon set. +message DaemonSet { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional DaemonSetSpec spec = 2; + + // The current status of this daemon set. This data may be + // out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional DaemonSetStatus status = 3; +} + +// DaemonSetList is a collection of daemon sets. +message DaemonSetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // A list of daemon sets. + repeated DaemonSet items = 2; +} + +// DaemonSetSpec is the specification of a daemon set. +message DaemonSetSpec { + // A label query over pods that are managed by the daemon set. + // Must match in order to be controlled. + // If empty, defaulted to labels on Pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1; + + // An object that describes the pod that will be created. + // The DaemonSet will create exactly one copy of this pod on every node + // that matches the template's node selector (or on every node if no node + // selector is specified). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + optional k8s.io.client_go.pkg.api.v1.PodTemplateSpec template = 2; + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + optional DaemonSetUpdateStrategy updateStrategy = 3; + + // The minimum number of seconds for which a newly created DaemonSet pod should + // be ready without any of its container crashing, for it to be considered + // available. Defaults to 0 (pod will be considered available as soon as it + // is ready). + // +optional + optional int32 minReadySeconds = 4; + + // DEPRECATED. + // A sequence number representing a specific generation of the template. + // Populated by the system. It can be set only during the creation. + // +optional + optional int64 templateGeneration = 5; + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + optional int32 revisionHistoryLimit = 6; +} + +// DaemonSetStatus represents the current status of a daemon set. +message DaemonSetStatus { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 currentNumberScheduled = 1; + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 numberMisscheduled = 2; + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + optional int32 desiredNumberScheduled = 3; + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + optional int32 numberReady = 4; + + // The most recent generation observed by the daemon set controller. + // +optional + optional int64 observedGeneration = 5; + + // The total number of nodes that are running updated daemon pod + // +optional + optional int32 updatedNumberScheduled = 6; + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + optional int32 numberAvailable = 7; + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + optional int32 numberUnavailable = 8; + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + optional int64 collisionCount = 9; +} + +message DaemonSetUpdateStrategy { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". + // Default is OnDelete. + // +optional + optional string type = 1; + + // Rolling update config params. Present only if type = "RollingUpdate". + // --- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + optional RollingUpdateDaemonSet rollingUpdate = 2; +} + +// Deployment enables declarative updates for Pods and ReplicaSets. +message Deployment { + // Standard object metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the Deployment. + // +optional + optional DeploymentSpec spec = 2; + + // Most recently observed status of the Deployment. + // +optional + optional DeploymentStatus status = 3; +} + +// DeploymentCondition describes the state of a deployment at a certain point. +message DeploymentCondition { + // Type of deployment condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time this condition was updated. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 6; + + // Last time the condition transitioned from one status to another. + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 7; + + // The reason for the condition's last transition. + optional string reason = 4; + + // A human readable message indicating details about the transition. + optional string message = 5; +} + +// DeploymentList is a list of Deployments. +message DeploymentList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Deployments. + repeated Deployment items = 2; +} + +// DeploymentRollback stores the information required to rollback a deployment. +message DeploymentRollback { + // Required: This must match the Name of a deployment. + optional string name = 1; + + // The annotations to be updated to a deployment + // +optional + map updatedAnnotations = 2; + + // The config of this deployment rollback. + optional RollbackConfig rollbackTo = 3; +} + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +message DeploymentSpec { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + // +optional + optional int32 replicas = 1; + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template describes the pods that will be created. + optional k8s.io.client_go.pkg.api.v1.PodTemplateSpec template = 3; + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + optional DeploymentStrategy strategy = 4; + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + optional int32 minReadySeconds = 5; + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + optional int32 revisionHistoryLimit = 6; + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + // +optional + optional bool paused = 7; + + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + optional RollbackConfig rollbackTo = 8; + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Once autoRollback is + // implemented, the deployment controller will automatically rollback failed + // deployments. Note that progress will not be estimated during the time a + // deployment is paused. This is not set by default. + optional int32 progressDeadlineSeconds = 9; +} + +// DeploymentStatus is the most recently observed status of the Deployment. +message DeploymentStatus { + // The generation observed by the deployment controller. + // +optional + optional int64 observedGeneration = 1; + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + optional int32 replicas = 2; + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + optional int32 updatedReplicas = 3; + + // Total number of ready pods targeted by this deployment. + // +optional + optional int32 readyReplicas = 7; + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + optional int32 availableReplicas = 4; + + // Total number of unavailable pods targeted by this deployment. + // +optional + optional int32 unavailableReplicas = 5; + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + repeated DeploymentCondition conditions = 6; + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + optional int64 collisionCount = 8; +} + +// DeploymentStrategy describes how to replace existing pods with new ones. +message DeploymentStrategy { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + optional string type = 1; + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + // --- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + // +optional + optional RollingUpdateDeployment rollingUpdate = 2; +} + +// FSGroupStrategyOptions defines the strategy type and options used to create the strategy. +message FSGroupStrategyOptions { + // Rule is the strategy that will dictate what FSGroup is used in the SecurityContext. + // +optional + optional string rule = 1; + + // Ranges are the allowed ranges of fs groups. If you would like to force a single + // fs group then supply a single range with the same start and end. + // +optional + repeated IDRange ranges = 2; +} + +// HTTPIngressPath associates a path regex with a backend. Incoming urls matching +// the path are forwarded to the backend. +message HTTPIngressPath { + // Path is an extended POSIX regex as defined by IEEE Std 1003.1, + // (i.e this follows the egrep/unix syntax, not the perl syntax) + // matched against the path of an incoming request. Currently it can + // contain characters disallowed from the conventional "path" + // part of a URL as defined by RFC 3986. Paths must begin with + // a '/'. If unspecified, the path defaults to a catch all sending + // traffic to the backend. + // +optional + optional string path = 1; + + // Backend defines the referenced service endpoint to which the traffic + // will be forwarded to. + optional IngressBackend backend = 2; +} + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// In the example: http:///? -> backend where +// where parts of the url correspond to RFC 3986, this resource will be used +// to match against everything after the last '/' and before the first '?' +// or '#'. +message HTTPIngressRuleValue { + // A collection of paths that map requests to backends. + repeated HTTPIngressPath paths = 1; +} + +// Host Port Range defines a range of host ports that will be enabled by a policy +// for pods to use. It requires both the start and end to be defined. +message HostPortRange { + // min is the start of the range, inclusive. + optional int32 min = 1; + + // max is the end of the range, inclusive. + optional int32 max = 2; +} + +// ID Range provides a min/max of an allowed range of IDs. +message IDRange { + // Min is the start of the range, inclusive. + optional int64 min = 1; + + // Max is the end of the range, inclusive. + optional int64 max = 2; +} + +// Ingress is a collection of rules that allow inbound connections to reach the +// endpoints defined by a backend. An Ingress can be configured to give services +// externally-reachable urls, load balance traffic, terminate SSL, offer name +// based virtual hosting etc. +message Ingress { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec is the desired state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional IngressSpec spec = 2; + + // Status is the current state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional IngressStatus status = 3; +} + +// IngressBackend describes all endpoints for a given service and port. +message IngressBackend { + // Specifies the name of the referenced service. + optional string serviceName = 1; + + // Specifies the port of the referenced service. + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString servicePort = 2; +} + +// IngressList is a collection of Ingress. +message IngressList { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of Ingress. + repeated Ingress items = 2; +} + +// IngressRule represents the rules mapping the paths under a specified host to +// the related backend services. Incoming requests are first evaluated for a host +// match, then routed to the backend associated with the matching IngressRuleValue. +message IngressRule { + // Host is the fully qualified domain name of a network host, as defined + // by RFC 3986. Note the following deviations from the "host" part of the + // URI as defined in the RFC: + // 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the + // IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. + // Incoming requests are matched against the host before the IngressRuleValue. + // If the host is unspecified, the Ingress routes all traffic based on the + // specified IngressRuleValue. + // +optional + optional string host = 1; + + // IngressRuleValue represents a rule to route requests for this IngressRule. + // If unspecified, the rule defaults to a http catch-all. Whether that sends + // just traffic matching the host to the default backend or all traffic to the + // default backend, is left to the controller fulfilling the Ingress. Http is + // currently the only supported IngressRuleValue. + // +optional + optional IngressRuleValue ingressRuleValue = 2; +} + +// IngressRuleValue represents a rule to apply against incoming requests. If the +// rule is satisfied, the request is routed to the specified backend. Currently +// mixing different types of rules in a single Ingress is disallowed, so exactly +// one of the following must be set. +message IngressRuleValue { + // +optional + optional HTTPIngressRuleValue http = 1; +} + +// IngressSpec describes the Ingress the user wishes to exist. +message IngressSpec { + // A default backend capable of servicing requests that don't match any + // rule. At least one of 'backend' or 'rules' must be specified. This field + // is optional to allow the loadbalancer controller or defaulting logic to + // specify a global default. + // +optional + optional IngressBackend backend = 1; + + // TLS configuration. Currently the Ingress only supports a single TLS + // port, 443. If multiple members of this list specify different hosts, they + // will be multiplexed on the same port according to the hostname specified + // through the SNI TLS extension, if the ingress controller fulfilling the + // ingress supports SNI. + // +optional + repeated IngressTLS tls = 2; + + // A list of host rules used to configure the Ingress. If unspecified, or + // no rule matches, all traffic is sent to the default backend. + // +optional + repeated IngressRule rules = 3; +} + +// IngressStatus describe the current state of the Ingress. +message IngressStatus { + // LoadBalancer contains the current status of the load-balancer. + // +optional + optional k8s.io.client_go.pkg.api.v1.LoadBalancerStatus loadBalancer = 1; +} + +// IngressTLS describes the transport layer security associated with an Ingress. +message IngressTLS { + // Hosts are a list of hosts included in the TLS certificate. The values in + // this list must match the name/s used in the tlsSecret. Defaults to the + // wildcard host setting for the loadbalancer controller fulfilling this + // Ingress, if left unspecified. + // +optional + repeated string hosts = 1; + + // SecretName is the name of the secret used to terminate SSL traffic on 443. + // Field is left optional to allow SSL routing based on SNI hostname alone. + // If the SNI host in a listener conflicts with the "Host" header field used + // by an IngressRule, the SNI host is used for termination and value of the + // Host header is used for routing. + // +optional + optional string secretName = 2; +} + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +message NetworkPolicy { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + optional NetworkPolicySpec spec = 2; +} + +// This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from. +message NetworkPolicyIngressRule { + // List of ports which should be made accessible on the pods selected for this rule. + // Each item in this list is combined using a logical OR. + // If this field is empty or missing, this rule matches all ports (traffic not restricted by port). + // If this field is present and contains at least one item, then this rule allows traffic + // only if the traffic matches at least one port in the list. + // +optional + repeated NetworkPolicyPort ports = 1; + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. + // If this field is empty or missing, this rule matches all sources (traffic not restricted by source). + // If this field is present and contains at least on item, this rule allows traffic only if the + // traffic matches at least one item in the from list. + // +optional + repeated NetworkPolicyPeer from = 2; +} + +// Network Policy List is a list of NetworkPolicy objects. +message NetworkPolicyList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated NetworkPolicy items = 2; +} + +message NetworkPolicyPeer { + // This is a label selector which selects Pods in this namespace. + // This field follows standard label selector semantics. + // If present but empty, this selector selects all pods in this namespace. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1; + + // Selects Namespaces using cluster scoped-labels. This + // matches all pods in all namespaces selected by this label selector. + // This field follows standard label selector semantics. + // If present but empty, this selector selects all namespaces. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2; +} + +message NetworkPolicyPort { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + // +optional + optional string protocol = 1; + + // If specified, the port on the given protocol. This can + // either be a numerical or named port on a pod. If this field is not provided, + // this matches all port names and numbers. + // If present, only traffic on the specified protocol AND port + // will be matched. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2; +} + +message NetworkPolicySpec { + // Selects the pods to which this NetworkPolicy object applies. The array of ingress rules + // is applied to any pods selected by this field. Multiple network policies can select the + // same set of pods. In this case, the ingress rules for each are combined additively. + // This field is NOT optional and follows standard label selector semantics. + // An empty podSelector matches all pods in this namespace. + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1; + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod + // OR if the traffic source is the pod's local node, + // OR if the traffic matches at least one ingress rule across all of the NetworkPolicy + // objects whose podSelector matches the pod. + // If this field is empty then this NetworkPolicy does not allow any traffic + // (and serves solely to ensure that the pods it selects are isolated by default). + // +optional + repeated NetworkPolicyIngressRule ingress = 2; +} + +// Pod Security Policy governs the ability to make requests that affect the Security Context +// that will be applied to a pod and container. +message PodSecurityPolicy { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // spec defines the policy enforced. + // +optional + optional PodSecurityPolicySpec spec = 2; +} + +// Pod Security Policy List is a list of PodSecurityPolicy objects. +message PodSecurityPolicyList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated PodSecurityPolicy items = 2; +} + +// Pod Security Policy Spec defines the policy enforced. +message PodSecurityPolicySpec { + // privileged determines if a pod can request to be run as privileged. + // +optional + optional bool privileged = 1; + + // DefaultAddCapabilities is the default set of capabilities that will be added to the container + // unless the pod spec specifically drops the capability. You may not list a capabiility in both + // DefaultAddCapabilities and RequiredDropCapabilities. + // +optional + repeated string defaultAddCapabilities = 2; + + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + // +optional + repeated string requiredDropCapabilities = 3; + + // AllowedCapabilities is a list of capabilities that can be requested to add to the container. + // Capabilities in this field may be added at the pod author's discretion. + // You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities. + // +optional + repeated string allowedCapabilities = 4; + + // volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + // +optional + repeated string volumes = 5; + + // hostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + // +optional + optional bool hostNetwork = 6; + + // hostPorts determines which host port ranges are allowed to be exposed. + // +optional + repeated HostPortRange hostPorts = 7; + + // hostPID determines if the policy allows the use of HostPID in the pod spec. + // +optional + optional bool hostPID = 8; + + // hostIPC determines if the policy allows the use of HostIPC in the pod spec. + // +optional + optional bool hostIPC = 9; + + // seLinux is the strategy that will dictate the allowable labels that may be set. + optional SELinuxStrategyOptions seLinux = 10; + + // runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set. + optional RunAsUserStrategyOptions runAsUser = 11; + + // SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext. + optional SupplementalGroupsStrategyOptions supplementalGroups = 12; + + // FSGroup is the strategy that will dictate what fs group is used by the SecurityContext. + optional FSGroupStrategyOptions fsGroup = 13; + + // ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file + // system. If the container specifically requests to run with a non-read only root file system + // the PSP should deny the pod. + // If set to false the container may run with a read only root file system if it wishes but it + // will not be forced to. + // +optional + optional bool readOnlyRootFilesystem = 14; +} + +// ReplicaSet represents the configuration of a ReplicaSet. +message ReplicaSet { + // If the Labels of a ReplicaSet are empty, they are defaulted to + // be the same as the Pod(s) that the ReplicaSet manages. + // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicaSetSpec spec = 2; + + // Status is the most recently observed status of the ReplicaSet. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + optional ReplicaSetStatus status = 3; +} + +// ReplicaSetCondition describes the state of a replica set at a certain point. +message ReplicaSetCondition { + // Type of replica set condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // The last time the condition transitioned from one status to another. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3; + + // The reason for the condition's last transition. + // +optional + optional string reason = 4; + + // A human readable message indicating details about the transition. + // +optional + optional string message = 5; +} + +// ReplicaSetList is a collection of ReplicaSets. +message ReplicaSetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // List of ReplicaSets. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + repeated ReplicaSet items = 2; +} + +// ReplicaSetSpec is the specification of a ReplicaSet. +message ReplicaSetSpec { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // +optional + optional int32 replicas = 1; + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + optional int32 minReadySeconds = 4; + + // Selector is a label query over pods that should match the replica count. + // If the selector is empty, it is defaulted to the labels present on the pod template. + // Label keys and values that must match in order to be controlled by this replica set. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + optional k8s.io.client_go.pkg.api.v1.PodTemplateSpec template = 3; +} + +// ReplicaSetStatus represents the current status of a ReplicaSet. +message ReplicaSetStatus { + // Replicas is the most recently oberved number of replicas. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + // +optional + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replica set. + // +optional + optional int32 readyReplicas = 4; + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + optional int32 availableReplicas = 5; + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + // +optional + optional int64 observedGeneration = 3; + + // Represents the latest available observations of a replica set's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + repeated ReplicaSetCondition conditions = 6; +} + +// Dummy definition +message ReplicationControllerDummy { +} + +message RollbackConfig { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + optional int64 revision = 1; +} + +// Spec to control the desired behavior of daemon set rolling update. +message RollingUpdateDaemonSet { + // The maximum number of DaemonSet pods that can be unavailable during the + // update. Value can be an absolute number (ex: 5) or a percentage of total + // number of DaemonSet pods at the start of the update (ex: 10%). Absolute + // number is calculated from percentage by rounding up. + // This cannot be 0. + // Default value is 1. + // Example: when this is set to 30%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, it then proceeds onto other DaemonSet pods, thus ensuring + // that at least 70% of original number of DaemonSet pods are available at + // all times during the update. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1; +} + +// Spec to control the desired behavior of rolling update. +message RollingUpdateDeployment { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // Absolute number is calculated from percentage by rounding down. + // This can not be 0 if MaxSurge is 0. + // By default, a fixed value of 1 is used. + // Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that the total number of pods available at all times during the update is at + // least 70% of desired pods. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 1; + + // The maximum number of pods that can be scheduled above the desired number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // By default, a value of 1 is used. + // Example: when this is set to 30%, the new RC can be scaled up immediately when + // the rolling update starts, such that the total number of old and new pods do not exceed + // 130% of desired pods. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of desired pods. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2; +} + +// Run A sUser Strategy Options defines the strategy type and any options used to create the strategy. +message RunAsUserStrategyOptions { + // Rule is the strategy that will dictate the allowable RunAsUser values that may be set. + optional string rule = 1; + + // Ranges are the allowed ranges of uids that may be used. + // +optional + repeated IDRange ranges = 2; +} + +// SELinux Strategy Options defines the strategy type and any options used to create the strategy. +message SELinuxStrategyOptions { + // type is the strategy that will dictate the allowable labels that may be set. + optional string rule = 1; + + // seLinuxOptions required to run as; required for MustRunAs + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + optional k8s.io.client_go.pkg.api.v1.SELinuxOptions seLinuxOptions = 2; +} + +// represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + optional ScaleSpec spec = 2; + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + optional ScaleStatus status = 3; +} + +// describes the attributes of a scale subresource +message ScaleSpec { + // desired number of instances for the scaled object. + // +optional + optional int32 replicas = 1; +} + +// represents the current status of a scale subresource. +message ScaleStatus { + // actual number of observed instances of the scaled object. + optional int32 replicas = 1; + + // label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + map selector = 2; + + // label selector for pods that should match the replicas count. This is a serializated + // version of both map-based and more expressive set-based selectors. This is done to + // avoid introspection in the clients. The string will be in the same format as the + // query-param syntax. If the target type only supports map-based selectors, both this + // field and map-based selector field are populated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + optional string targetSelector = 3; +} + +// SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. +message SupplementalGroupsStrategyOptions { + // Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext. + // +optional + optional string rule = 1; + + // Ranges are the allowed ranges of supplemental groups. If you would like to force a single + // supplemental group then supply a single range with the same start and end. + // +optional + repeated IDRange ranges = 2; +} + +// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource +// types to the API. It consists of one or more Versions of the api. +message ThirdPartyResource { + // Standard object metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Description is the description of this object. + // +optional + optional string description = 2; + + // Versions are versions for this third party object + // +optional + repeated APIVersion versions = 3; +} + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +message ThirdPartyResourceData { + // Standard object metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Data is the raw JSON data for this data. + // +optional + optional bytes data = 2; +} + +// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. +message ThirdPartyResourceDataList { + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ThirdpartyResourceData. + repeated ThirdPartyResourceData items = 2; +} + +// ThirdPartyResourceList is a list of ThirdPartyResources. +message ThirdPartyResourceList { + // Standard list metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ThirdPartyResources. + repeated ThirdPartyResource items = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/register.go new file mode 100644 index 000000000..bf8616b88 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/register.go @@ -0,0 +1,77 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "extensions" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs, addConversionFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &ReplicationControllerDummy{}, + &Scale{}, + &ThirdPartyResource{}, + &ThirdPartyResourceList{}, + &DaemonSetList{}, + &DaemonSet{}, + &ThirdPartyResourceData{}, + &ThirdPartyResourceDataList{}, + &Ingress{}, + &IngressList{}, + &ReplicaSet{}, + &ReplicaSetList{}, + &PodSecurityPolicy{}, + &PodSecurityPolicyList{}, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.generated.go new file mode 100644 index 000000000..8d4e39b66 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.generated.go @@ -0,0 +1,21979 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg3_resource "k8s.io/apimachinery/pkg/api/resource" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + pkg5_intstr "k8s.io/apimachinery/pkg/util/intstr" + pkg4_v1 "k8s.io/client-go/pkg/api/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg3_resource.Quantity + var v1 pkg1_v1.TypeMeta + var v2 pkg2_types.UID + var v3 pkg5_intstr.IntOrString + var v4 pkg4_v1.PodTemplateSpec + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv7 := &x.Replicas + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int32)(yyv7)) = int32(r.DecodeInt(32)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Selector) != 0 + yyq2[2] = x.TargetSelector != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetSelector)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv6 := &x.Selector + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecMapStringStringX(yyv6, false, d) + } + } + case "targetSelector": + if r.TryDecodeAsNil() { + x.TargetSelector = "" + } else { + yyv8 := &x.TargetSelector + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv11 := &x.Replicas + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(yyv11)) = int32(r.DecodeInt(32)) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv13 := &x.Selector + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + z.F.DecMapStringStringX(yyv13, false, d) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetSelector = "" + } else { + yyv15 := &x.TargetSelector + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerDummy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerDummy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerDummy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerDummy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv9 := &x.Kind + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv11 := &x.APIVersion + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricTarget) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.TargetValue + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.TargetValue + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricTarget) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricTarget) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "value": + if r.TryDecodeAsNil() { + x.TargetValue = pkg3_resource.Quantity{} + } else { + yyv6 := &x.TargetValue + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricTarget) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv9 := &x.Name + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetValue = pkg3_resource.Quantity{} + } else { + yyv11 := &x.TargetValue + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricTargetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceCustomMetricTarget(([]CustomMetricTarget)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceCustomMetricTarget(([]CustomMetricTarget)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricTargetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricTargetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4 := &x.Items + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceCustomMetricTarget((*[]CustomMetricTarget)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricTargetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv7 := &x.Items + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceCustomMetricTarget((*[]CustomMetricTarget)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricCurrentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.CurrentValue + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.CurrentValue + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricCurrentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricCurrentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "value": + if r.TryDecodeAsNil() { + x.CurrentValue = pkg3_resource.Quantity{} + } else { + yyv6 := &x.CurrentValue + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricCurrentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv9 := &x.Name + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentValue = pkg3_resource.Quantity{} + } else { + yyv11 := &x.CurrentValue + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricCurrentStatusList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceCustomMetricCurrentStatus(([]CustomMetricCurrentStatus)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceCustomMetricCurrentStatus(([]CustomMetricCurrentStatus)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricCurrentStatusList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricCurrentStatusList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4 := &x.Items + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceCustomMetricCurrentStatus((*[]CustomMetricCurrentStatus)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricCurrentStatusList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv7 := &x.Items + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceCustomMetricCurrentStatus((*[]CustomMetricCurrentStatus)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = x.Description != "" + yyq2[4] = len(x.Versions) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Description)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("description")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Description)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Versions == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + h.encSliceAPIVersion(([]APIVersion)(x.Versions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("versions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Versions == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceAPIVersion(([]APIVersion)(x.Versions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "description": + if r.TryDecodeAsNil() { + x.Description = "" + } else { + yyv10 := &x.Description + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "versions": + if r.TryDecodeAsNil() { + x.Versions = nil + } else { + yyv12 := &x.Versions + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + h.decSliceAPIVersion((*[]APIVersion)(yyv12), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv15 := &x.Kind + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv17 := &x.APIVersion + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv19 := &x.ObjectMeta + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Description = "" + } else { + yyv21 := &x.Description + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Versions = nil + } else { + yyv23 := &x.Versions + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + h.decSliceAPIVersion((*[]APIVersion)(yyv23), d) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceThirdPartyResource(([]ThirdPartyResource)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceThirdPartyResource(([]ThirdPartyResource)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceThirdPartyResource((*[]ThirdPartyResource)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceThirdPartyResource((*[]ThirdPartyResource)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *APIVersion) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *APIVersion) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *APIVersion) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv4 := &x.Name + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *APIVersion) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv7 := &x.Name + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*string)(yyv7)) = r.DecodeString() + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceData) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = len(x.Data) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceData) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceData) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv10 := &x.Data + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *yyv10 = r.DecodeBytes(*(*[]byte)(yyv10), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceData) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv19 := &x.Data + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *yyv19 = r.DecodeBytes(*(*[]byte)(yyv19), false, false) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Deployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Deployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Deployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Deployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [9]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != nil + yyq2[1] = x.Selector != nil + yyq2[3] = true + yyq2[4] = x.MinReadySeconds != 0 + yyq2[5] = x.RevisionHistoryLimit != nil + yyq2[6] = x.Paused != false + yyq2[7] = x.RollbackTo != nil + yyq2[8] = x.ProgressDeadlineSeconds != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(9) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy4 := *x.Replicas + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy6 := *x.Replicas + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy12 := &x.Template + yy12.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Template + yy14.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy17 := &x.Strategy + yy17.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("strategy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy19 := &x.Strategy + yy19.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy25 := *x.RevisionHistoryLimit + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revisionHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy27 := *x.RevisionHistoryLimit + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paused")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.ProgressDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy36 := *x.ProgressDeadlineSeconds + yym37 := z.EncBinary() + _ = yym37 + if false { + } else { + r.EncodeInt(int64(yy36)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("progressDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ProgressDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy38 := *x.ProgressDeadlineSeconds + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeInt(int64(yy38)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg4_v1.PodTemplateSpec{} + } else { + yyv8 := &x.Template + yyv8.CodecDecodeSelf(d) + } + case "strategy": + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv9 := &x.Strategy + yyv9.CodecDecodeSelf(d) + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv10 := &x.MinReadySeconds + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "revisionHistoryLimit": + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + case "paused": + if r.TryDecodeAsNil() { + x.Paused = false + } else { + yyv14 := &x.Paused + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "rollbackTo": + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + case "progressDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ProgressDeadlineSeconds != nil { + x.ProgressDeadlineSeconds = nil + } + } else { + if x.ProgressDeadlineSeconds == nil { + x.ProgressDeadlineSeconds = new(int32) + } + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(x.ProgressDeadlineSeconds)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj19 int + var yyb19 bool + var yyhl19 bool = l >= 0 + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym23 := z.DecBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg4_v1.PodTemplateSpec{} + } else { + yyv24 := &x.Template + yyv24.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv25 := &x.Strategy + yyv25.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv26 := &x.MinReadySeconds + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*int32)(yyv26)) = int32(r.DecodeInt(32)) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym29 := z.DecBinary() + _ = yym29 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paused = false + } else { + yyv30 := &x.Paused + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + *((*bool)(yyv30)) = r.DecodeBool() + } + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ProgressDeadlineSeconds != nil { + x.ProgressDeadlineSeconds = nil + } + } else { + if x.ProgressDeadlineSeconds == nil { + x.ProgressDeadlineSeconds = new(int32) + } + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*int32)(x.ProgressDeadlineSeconds)) = int32(r.DecodeInt(32)) + } + } + for { + yyj19++ + if yyhl19 { + yyb19 = yyj19 > l + } else { + yyb19 = r.CheckBreak() + } + if yyb19 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj19-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentRollback) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[3] = len(x.UpdatedAnnotations) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedAnnotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy16 := &x.RollbackTo + yy16.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy18 := &x.RollbackTo + yy18.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentRollback) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentRollback) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "updatedAnnotations": + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv10 := &x.UpdatedAnnotations + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecMapStringStringX(yyv10, false, d) + } + } + case "rollbackTo": + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv12 := &x.RollbackTo + yyv12.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentRollback) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv14 := &x.Kind + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv16 := &x.APIVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv18 := &x.Name + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*string)(yyv18)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv20 := &x.UpdatedAnnotations + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + z.F.DecMapStringStringX(yyv20, false, d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv22 := &x.RollbackTo + yyv22.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RollbackConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Revision != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollbackConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollbackConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "revision": + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + yyv4 := &x.Revision + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(yyv4)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollbackConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + yyv7 := &x.Revision + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + *((*int64)(yyv7)) = int64(r.DecodeInt(64)) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Type != "" + yyq2[1] = x.RollingUpdate != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollingUpdate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "rollingUpdate": + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv7 := &x.Type + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeploymentStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeploymentStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RollingUpdateDeployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.MaxUnavailable != nil + yyq2[1] = x.MaxSurge != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym4 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.MaxSurge == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxSurge) { + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxSurge) + } else { + z.EncFallback(x.MaxSurge) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxSurge")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxSurge == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxSurge) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxSurge) + } else { + z.EncFallback(x.MaxSurge) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollingUpdateDeployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "maxUnavailable": + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + case "maxSurge": + if r.TryDecodeAsNil() { + if x.MaxSurge != nil { + x.MaxSurge = nil + } + } else { + if x.MaxSurge == nil { + x.MaxSurge = new(pkg5_intstr.IntOrString) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxSurge) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxSurge) + } else { + z.DecFallback(x.MaxSurge, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxSurge != nil { + x.MaxSurge = nil + } + } else { + if x.MaxSurge == nil { + x.MaxSurge = new(pkg5_intstr.IntOrString) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxSurge) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxSurge) + } else { + z.DecFallback(x.MaxSurge, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [8]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ObservedGeneration != 0 + yyq2[1] = x.Replicas != 0 + yyq2[2] = x.UpdatedReplicas != 0 + yyq2[3] = x.ReadyReplicas != 0 + yyq2[4] = x.AvailableReplicas != 0 + yyq2[5] = x.UnavailableReplicas != 0 + yyq2[6] = len(x.Conditions) != 0 + yyq2[7] = x.CollisionCount != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(8) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("availableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unavailableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + h.encSliceDeploymentCondition(([]DeploymentCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + h.encSliceDeploymentCondition(([]DeploymentCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + if x.CollisionCount == nil { + r.EncodeNil() + } else { + yy25 := *x.CollisionCount + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("collisionCount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CollisionCount == nil { + r.EncodeNil() + } else { + yy27 := *x.CollisionCount + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(yy27)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv4 := &x.ObservedGeneration + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(yyv4)) = int64(r.DecodeInt(64)) + } + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv6 := &x.Replicas + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "updatedReplicas": + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + yyv8 := &x.UpdatedReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv10 := &x.ReadyReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "availableReplicas": + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv12 := &x.AvailableReplicas + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(yyv12)) = int32(r.DecodeInt(32)) + } + } + case "unavailableReplicas": + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + yyv14 := &x.UnavailableReplicas + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv16 := &x.Conditions + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + h.decSliceDeploymentCondition((*[]DeploymentCondition)(yyv16), d) + } + } + case "collisionCount": + if r.TryDecodeAsNil() { + if x.CollisionCount != nil { + x.CollisionCount = nil + } + } else { + if x.CollisionCount == nil { + x.CollisionCount = new(int64) + } + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj20 int + var yyb20 bool + var yyhl20 bool = l >= 0 + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv21 := &x.ObservedGeneration + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int64)(yyv21)) = int64(r.DecodeInt(64)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv23 := &x.Replicas + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + yyv25 := &x.UpdatedReplicas + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv27 := &x.ReadyReplicas + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv29 := &x.AvailableReplicas + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*int32)(yyv29)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + yyv31 := &x.UnavailableReplicas + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*int32)(yyv31)) = int32(r.DecodeInt(32)) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv33 := &x.Conditions + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + h.decSliceDeploymentCondition((*[]DeploymentCondition)(yyv33), d) + } + } + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CollisionCount != nil { + x.CollisionCount = nil + } + } else { + if x.CollisionCount == nil { + x.CollisionCount = new(int64) + } + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64)) + } + } + for { + yyj20++ + if yyhl20 { + yyb20 = yyj20 > l + } else { + yyb20 = r.CheckBreak() + } + if yyb20 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj20-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeploymentConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeploymentConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *DeploymentCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = true + yyq2[4] = x.Reason != "" + yyq2[5] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf7 := &x.Status + yysf7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf8 := &x.Status + yysf8.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastUpdateTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastUpdateTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastUpdateTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.LastTransitionTime + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(yy15) { + } else if yym16 { + z.EncBinaryMarshal(yy15) + } else if !yym16 && z.IsJSONHandle() { + z.EncJSONMarshal(yy15) + } else { + z.EncFallback(yy15) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.LastTransitionTime + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(yy17) { + } else if yym18 { + z.EncBinaryMarshal(yy17) + } else if !yym18 && z.IsJSONHandle() { + z.EncJSONMarshal(yy17) + } else { + z.EncFallback(yy17) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastUpdateTime": + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_v1.Time{} + } else { + yyv6 := &x.LastUpdateTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv8 := &x.LastTransitionTime + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if yym9 { + z.DecBinaryUnmarshal(yyv8) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv10 := &x.Reason + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv12 := &x.Message + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv15 := &x.Type + yyv15.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv16 := &x.Status + yyv16.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_v1.Time{} + } else { + yyv17 := &x.LastUpdateTime + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else if yym18 { + z.DecBinaryUnmarshal(yyv17) + } else if !yym18 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv17) + } else { + z.DecFallback(yyv17, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv19 := &x.LastTransitionTime + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if yym20 { + z.DecBinaryUnmarshal(yyv19) + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv21 := &x.Reason + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv23 := &x.Message + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*string)(yyv23)) = r.DecodeString() + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetUpdateStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Type != "" + yyq2[1] = x.RollingUpdate != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollingUpdate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetUpdateStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetUpdateStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "rollingUpdate": + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDaemonSet) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetUpdateStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv7 := &x.Type + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDaemonSet) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DaemonSetUpdateStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DaemonSetUpdateStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RollingUpdateDaemonSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.MaxUnavailable != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym4 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollingUpdateDaemonSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollingUpdateDaemonSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "maxUnavailable": + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollingUpdateDaemonSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym8 := z.DecBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym8 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Selector != nil + yyq2[2] = true + yyq2[3] = x.MinReadySeconds != 0 + yyq2[4] = x.TemplateGeneration != 0 + yyq2[5] = x.RevisionHistoryLimit != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.Template + yy7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.Template + yy9.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy12 := &x.UpdateStrategy + yy12.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updateStrategy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.UpdateStrategy + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.TemplateGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("templateGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeInt(int64(x.TemplateGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy23 := *x.RevisionHistoryLimit + yym24 := z.EncBinary() + _ = yym24 + if false { + } else { + r.EncodeInt(int64(yy23)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revisionHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy25 := *x.RevisionHistoryLimit + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(yy25)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg4_v1.PodTemplateSpec{} + } else { + yyv6 := &x.Template + yyv6.CodecDecodeSelf(d) + } + case "updateStrategy": + if r.TryDecodeAsNil() { + x.UpdateStrategy = DaemonSetUpdateStrategy{} + } else { + yyv7 := &x.UpdateStrategy + yyv7.CodecDecodeSelf(d) + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv8 := &x.MinReadySeconds + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "templateGeneration": + if r.TryDecodeAsNil() { + x.TemplateGeneration = 0 + } else { + yyv10 := &x.TemplateGeneration + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int64)(yyv10)) = int64(r.DecodeInt(64)) + } + } + case "revisionHistoryLimit": + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg4_v1.PodTemplateSpec{} + } else { + yyv17 := &x.Template + yyv17.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdateStrategy = DaemonSetUpdateStrategy{} + } else { + yyv18 := &x.UpdateStrategy + yyv18.CodecDecodeSelf(d) + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv19 := &x.MinReadySeconds + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int32)(yyv19)) = int32(r.DecodeInt(32)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TemplateGeneration = 0 + } else { + yyv21 := &x.TemplateGeneration + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int64)(yyv21)) = int64(r.DecodeInt(64)) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [9]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[4] = x.ObservedGeneration != 0 + yyq2[5] = x.UpdatedNumberScheduled != 0 + yyq2[6] = x.NumberAvailable != 0 + yyq2[7] = x.NumberUnavailable != 0 + yyq2[8] = x.CollisionCount != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(9) + } else { + yynn2 = 4 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.CurrentNumberScheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.CurrentNumberScheduled)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.NumberMisscheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("numberMisscheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.NumberMisscheduled)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.DesiredNumberScheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.DesiredNumberScheduled)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.NumberReady)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("numberReady")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.NumberReady)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.UpdatedNumberScheduled)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.UpdatedNumberScheduled)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.NumberAvailable)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("numberAvailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.NumberAvailable)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeInt(int64(x.NumberUnavailable)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("numberUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeInt(int64(x.NumberUnavailable)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.CollisionCount == nil { + r.EncodeNil() + } else { + yy28 := *x.CollisionCount + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeInt(int64(yy28)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("collisionCount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CollisionCount == nil { + r.EncodeNil() + } else { + yy30 := *x.CollisionCount + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeInt(int64(yy30)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "currentNumberScheduled": + if r.TryDecodeAsNil() { + x.CurrentNumberScheduled = 0 + } else { + yyv4 := &x.CurrentNumberScheduled + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "numberMisscheduled": + if r.TryDecodeAsNil() { + x.NumberMisscheduled = 0 + } else { + yyv6 := &x.NumberMisscheduled + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "desiredNumberScheduled": + if r.TryDecodeAsNil() { + x.DesiredNumberScheduled = 0 + } else { + yyv8 := &x.DesiredNumberScheduled + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "numberReady": + if r.TryDecodeAsNil() { + x.NumberReady = 0 + } else { + yyv10 := &x.NumberReady + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv12 := &x.ObservedGeneration + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int64)(yyv12)) = int64(r.DecodeInt(64)) + } + } + case "updatedNumberScheduled": + if r.TryDecodeAsNil() { + x.UpdatedNumberScheduled = 0 + } else { + yyv14 := &x.UpdatedNumberScheduled + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + case "numberAvailable": + if r.TryDecodeAsNil() { + x.NumberAvailable = 0 + } else { + yyv16 := &x.NumberAvailable + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*int32)(yyv16)) = int32(r.DecodeInt(32)) + } + } + case "numberUnavailable": + if r.TryDecodeAsNil() { + x.NumberUnavailable = 0 + } else { + yyv18 := &x.NumberUnavailable + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*int32)(yyv18)) = int32(r.DecodeInt(32)) + } + } + case "collisionCount": + if r.TryDecodeAsNil() { + if x.CollisionCount != nil { + x.CollisionCount = nil + } + } else { + if x.CollisionCount == nil { + x.CollisionCount = new(int64) + } + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj22 int + var yyb22 bool + var yyhl22 bool = l >= 0 + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentNumberScheduled = 0 + } else { + yyv23 := &x.CurrentNumberScheduled + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NumberMisscheduled = 0 + } else { + yyv25 := &x.NumberMisscheduled + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredNumberScheduled = 0 + } else { + yyv27 := &x.DesiredNumberScheduled + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NumberReady = 0 + } else { + yyv29 := &x.NumberReady + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*int32)(yyv29)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv31 := &x.ObservedGeneration + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + *((*int64)(yyv31)) = int64(r.DecodeInt(64)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedNumberScheduled = 0 + } else { + yyv33 := &x.UpdatedNumberScheduled + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + *((*int32)(yyv33)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NumberAvailable = 0 + } else { + yyv35 := &x.NumberAvailable + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + *((*int32)(yyv35)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NumberUnavailable = 0 + } else { + yyv37 := &x.NumberUnavailable + yym38 := z.DecBinary() + _ = yym38 + if false { + } else { + *((*int32)(yyv37)) = int32(r.DecodeInt(32)) + } + } + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CollisionCount != nil { + x.CollisionCount = nil + } + } else { + if x.CollisionCount == nil { + x.CollisionCount = new(int64) + } + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + *((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64)) + } + } + for { + yyj22++ + if yyhl22 { + yyb22 = yyj22 > l + } else { + yyb22 = r.CheckBreak() + } + if yyb22 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj22-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DaemonSetSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DaemonSetStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DaemonSetSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DaemonSetStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceDaemonSet(([]DaemonSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceDaemonSet(([]DaemonSet)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceDaemonSet((*[]DaemonSet)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceDaemonSet((*[]DaemonSet)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceDataList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceThirdPartyResourceData(([]ThirdPartyResourceData)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceThirdPartyResourceData(([]ThirdPartyResourceData)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceDataList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceDataList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceThirdPartyResourceData((*[]ThirdPartyResourceData)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceDataList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceThirdPartyResourceData((*[]ThirdPartyResourceData)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Ingress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Ingress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Ingress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = IngressSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = IngressStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Ingress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = IngressSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = IngressStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceIngress(([]Ingress)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceIngress(([]Ingress)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceIngress((*[]Ingress)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceIngress((*[]Ingress)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Backend != nil + yyq2[1] = len(x.TLS) != 0 + yyq2[2] = len(x.Rules) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Backend == nil { + r.EncodeNil() + } else { + x.Backend.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("backend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Backend == nil { + r.EncodeNil() + } else { + x.Backend.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.TLS == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceIngressTLS(([]IngressTLS)(x.TLS), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tls")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TLS == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceIngressTLS(([]IngressTLS)(x.TLS), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Rules == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + h.encSliceIngressRule(([]IngressRule)(x.Rules), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + h.encSliceIngressRule(([]IngressRule)(x.Rules), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "backend": + if r.TryDecodeAsNil() { + if x.Backend != nil { + x.Backend = nil + } + } else { + if x.Backend == nil { + x.Backend = new(IngressBackend) + } + x.Backend.CodecDecodeSelf(d) + } + case "tls": + if r.TryDecodeAsNil() { + x.TLS = nil + } else { + yyv5 := &x.TLS + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSliceIngressTLS((*[]IngressTLS)(yyv5), d) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv7 := &x.Rules + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceIngressRule((*[]IngressRule)(yyv7), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj9 int + var yyb9 bool + var yyhl9 bool = l >= 0 + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Backend != nil { + x.Backend = nil + } + } else { + if x.Backend == nil { + x.Backend = new(IngressBackend) + } + x.Backend.CodecDecodeSelf(d) + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TLS = nil + } else { + yyv11 := &x.TLS + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceIngressTLS((*[]IngressTLS)(yyv11), d) + } + } + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv13 := &x.Rules + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + h.decSliceIngressRule((*[]IngressRule)(yyv13), d) + } + } + for { + yyj9++ + if yyhl9 { + yyb9 = yyj9 > l + } else { + yyb9 = r.CheckBreak() + } + if yyb9 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj9-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressTLS) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Hosts) != 0 + yyq2[1] = x.SecretName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Hosts == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Hosts, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hosts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hosts == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Hosts, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressTLS) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressTLS) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "hosts": + if r.TryDecodeAsNil() { + x.Hosts = nil + } else { + yyv4 := &x.Hosts + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + yyv6 := &x.SecretName + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressTLS) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hosts = nil + } else { + yyv9 := &x.Hosts + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + z.F.DecSliceStringX(yyv9, false, d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + yyv11 := &x.SecretName + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.LoadBalancer + yy4.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancer")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.LoadBalancer + yy6.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "loadBalancer": + if r.TryDecodeAsNil() { + x.LoadBalancer = pkg4_v1.LoadBalancerStatus{} + } else { + yyv4 := &x.LoadBalancer + yyv4.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancer = pkg4_v1.LoadBalancerStatus{} + } else { + yyv6 := &x.LoadBalancer + yyv6.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Host != "" + yyq2[1] = x.IngressRuleValue.HTTP != nil && x.HTTP != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + var yyn6 bool + if x.IngressRuleValue.HTTP == nil { + yyn6 = true + goto LABEL6 + } + LABEL6: + if yyr2 || yy2arr2 { + if yyn6 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("http")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn6 { + r.EncodeNil() + } else { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv4 := &x.Host + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "http": + if x.IngressRuleValue.HTTP == nil { + x.IngressRuleValue.HTTP = new(HTTPIngressRuleValue) + } + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + yyv8 := &x.Host + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + if x.IngressRuleValue.HTTP == nil { + x.IngressRuleValue.HTTP = new(HTTPIngressRuleValue) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressRuleValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.HTTP != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("http")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressRuleValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressRuleValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "http": + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressRuleValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj5 int + var yyb5 bool + var yyhl5 bool = l >= 0 + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + for { + yyj5++ + if yyhl5 { + yyb5 = yyj5 > l + } else { + yyb5 = r.CheckBreak() + } + if yyb5 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj5-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPIngressRuleValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Paths == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceHTTPIngressPath(([]HTTPIngressPath)(x.Paths), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paths")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Paths == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceHTTPIngressPath(([]HTTPIngressPath)(x.Paths), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPIngressRuleValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPIngressRuleValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "paths": + if r.TryDecodeAsNil() { + x.Paths = nil + } else { + yyv4 := &x.Paths + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceHTTPIngressPath((*[]HTTPIngressPath)(yyv4), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPIngressRuleValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paths = nil + } else { + yyv7 := &x.Paths + yym8 := z.DecBinary() + _ = yym8 + if false { + } else { + h.decSliceHTTPIngressPath((*[]HTTPIngressPath)(yyv7), d) + } + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPIngressPath) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Path != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.Backend + yy7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("backend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.Backend + yy9.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPIngressPath) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPIngressPath) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv4 := &x.Path + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "backend": + if r.TryDecodeAsNil() { + x.Backend = IngressBackend{} + } else { + yyv6 := &x.Backend + yyv6.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPIngressPath) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + yyv8 := &x.Path + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Backend = IngressBackend{} + } else { + yyv10 := &x.Backend + yyv10.CodecDecodeSelf(d) + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressBackend) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy7 := &x.ServicePort + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("servicePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.ServicePort + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressBackend) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressBackend) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "serviceName": + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + yyv4 := &x.ServiceName + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "servicePort": + if r.TryDecodeAsNil() { + x.ServicePort = pkg5_intstr.IntOrString{} + } else { + yyv6 := &x.ServicePort + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressBackend) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + yyv9 := &x.ServiceName + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*string)(yyv9)) = r.DecodeString() + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServicePort = pkg5_intstr.IntOrString{} + } else { + yyv11 := &x.ServicePort + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(yyv11) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv11) + } else { + z.DecFallback(yyv11, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ReplicaSetSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ReplicaSetStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ReplicaSetSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ReplicaSetStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceReplicaSet(([]ReplicaSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceReplicaSet(([]ReplicaSet)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceReplicaSet((*[]ReplicaSet)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceReplicaSet((*[]ReplicaSet)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != nil + yyq2[1] = x.MinReadySeconds != 0 + yyq2[2] = x.Selector != nil + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy4 := *x.Replicas + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(yy4)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy6 := *x.Replicas + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(yy6)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Template + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Template + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv6 := &x.MinReadySeconds + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg4_v1.PodTemplateSpec{} + } else { + yyv10 := &x.Template + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + yyv14 := &x.MinReadySeconds + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_v1.LabelSelector) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg4_v1.PodTemplateSpec{} + } else { + yyv18 := &x.Template + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.FullyLabeledReplicas != 0 + yyq2[2] = x.ReadyReplicas != 0 + yyq2[3] = x.AvailableReplicas != 0 + yyq2[4] = x.ObservedGeneration != 0 + yyq2[5] = len(x.Conditions) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fullyLabeledReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("availableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + h.encSliceReplicaSetCondition(([]ReplicaSetCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + h.encSliceReplicaSetCondition(([]ReplicaSetCondition)(x.Conditions), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv4 := &x.Replicas + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "fullyLabeledReplicas": + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + yyv6 := &x.FullyLabeledReplicas + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv8 := &x.ReadyReplicas + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "availableReplicas": + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv10 := &x.AvailableReplicas + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv12 := &x.ObservedGeneration + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int64)(yyv12)) = int64(r.DecodeInt(64)) + } + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv14 := &x.Conditions + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + h.decSliceReplicaSetCondition((*[]ReplicaSetCondition)(yyv14), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + yyv17 := &x.Replicas + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int32)(yyv17)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + yyv19 := &x.FullyLabeledReplicas + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*int32)(yyv19)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + yyv21 := &x.ReadyReplicas + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + yyv23 := &x.AvailableReplicas + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv25 := &x.ObservedGeneration + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int64)(yyv25)) = int64(r.DecodeInt(64)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv27 := &x.Conditions + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + h.decSliceReplicaSetCondition((*[]ReplicaSetCondition)(yyv27), d) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ReplicaSetConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ReplicaSetConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ReplicaSetCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = true + yyq2[3] = x.Reason != "" + yyq2[4] = x.Message != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf7 := &x.Status + yysf7.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yysf8 := &x.Status + yysf8.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.LastTransitionTime + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else if yym11 { + z.EncBinaryMarshal(yy10) + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(yy10) + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.LastTransitionTime + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else if yym13 { + z.EncBinaryMarshal(yy12) + } else if !yym13 && z.IsJSONHandle() { + z.EncJSONMarshal(yy12) + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv4 := &x.Type + yyv4.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv5 := &x.Status + yyv5.CodecDecodeSelf(d) + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv6 := &x.LastTransitionTime + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(yyv6) { + } else if yym7 { + z.DecBinaryUnmarshal(yyv6) + } else if !yym7 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv6) + } else { + z.DecFallback(yyv6, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv8 := &x.Reason + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv10 := &x.Message + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + yyv13 := &x.Type + yyv13.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + yyv14 := &x.Status + yyv14.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_v1.Time{} + } else { + yyv15 := &x.LastTransitionTime + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(yyv15) { + } else if yym16 { + z.DecBinaryUnmarshal(yyv15) + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv15) + } else { + z.DecFallback(yyv15, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + yyv17 := &x.Reason + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + yyv19 := &x.Message + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSecurityPolicySpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSecurityPolicySpec{} + } else { + yyv18 := &x.Spec + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [14]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Privileged != false + yyq2[1] = len(x.DefaultAddCapabilities) != 0 + yyq2[2] = len(x.RequiredDropCapabilities) != 0 + yyq2[3] = len(x.AllowedCapabilities) != 0 + yyq2[4] = len(x.Volumes) != 0 + yyq2[5] = x.HostNetwork != false + yyq2[6] = len(x.HostPorts) != 0 + yyq2[7] = x.HostPID != false + yyq2[8] = x.HostIPC != false + yyq2[13] = x.ReadOnlyRootFilesystem != false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(14) + } else { + yynn2 = 4 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeBool(bool(x.Privileged)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("privileged")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeBool(bool(x.Privileged)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.DefaultAddCapabilities == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSlicev1_Capability(([]pkg4_v1.Capability)(x.DefaultAddCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultAddCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultAddCapabilities == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSlicev1_Capability(([]pkg4_v1.Capability)(x.DefaultAddCapabilities), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.RequiredDropCapabilities == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + h.encSlicev1_Capability(([]pkg4_v1.Capability)(x.RequiredDropCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDropCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDropCapabilities == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + h.encSlicev1_Capability(([]pkg4_v1.Capability)(x.RequiredDropCapabilities), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.AllowedCapabilities == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + h.encSlicev1_Capability(([]pkg4_v1.Capability)(x.AllowedCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allowedCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AllowedCapabilities == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + h.encSlicev1_Capability(([]pkg4_v1.Capability)(x.AllowedCapabilities), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Volumes == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceFSType(([]FSType)(x.Volumes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + h.encSliceFSType(([]FSType)(x.Volumes), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostNetwork")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + if x.HostPorts == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + h.encSliceHostPortRange(([]HostPortRange)(x.HostPorts), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPorts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPorts == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + h.encSliceHostPortRange(([]HostPortRange)(x.HostPorts), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIPC")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy31 := &x.SELinux + yy31.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinux")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy33 := &x.SELinux + yy33.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy36 := &x.RunAsUser + yy36.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy38 := &x.RunAsUser + yy38.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy41 := &x.SupplementalGroups + yy41.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("supplementalGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy43 := &x.SupplementalGroups + yy43.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy46 := &x.FSGroup + yy46.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy48 := &x.FSGroup + yy48.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + yym51 := z.EncBinary() + _ = yym51 + if false { + } else { + r.EncodeBool(bool(x.ReadOnlyRootFilesystem)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnlyRootFilesystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym52 := z.EncBinary() + _ = yym52 + if false { + } else { + r.EncodeBool(bool(x.ReadOnlyRootFilesystem)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "privileged": + if r.TryDecodeAsNil() { + x.Privileged = false + } else { + yyv4 := &x.Privileged + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*bool)(yyv4)) = r.DecodeBool() + } + } + case "defaultAddCapabilities": + if r.TryDecodeAsNil() { + x.DefaultAddCapabilities = nil + } else { + yyv6 := &x.DefaultAddCapabilities + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSlicev1_Capability((*[]pkg4_v1.Capability)(yyv6), d) + } + } + case "requiredDropCapabilities": + if r.TryDecodeAsNil() { + x.RequiredDropCapabilities = nil + } else { + yyv8 := &x.RequiredDropCapabilities + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + h.decSlicev1_Capability((*[]pkg4_v1.Capability)(yyv8), d) + } + } + case "allowedCapabilities": + if r.TryDecodeAsNil() { + x.AllowedCapabilities = nil + } else { + yyv10 := &x.AllowedCapabilities + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicev1_Capability((*[]pkg4_v1.Capability)(yyv10), d) + } + } + case "volumes": + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv12 := &x.Volumes + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + h.decSliceFSType((*[]FSType)(yyv12), d) + } + } + case "hostNetwork": + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + yyv14 := &x.HostNetwork + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*bool)(yyv14)) = r.DecodeBool() + } + } + case "hostPorts": + if r.TryDecodeAsNil() { + x.HostPorts = nil + } else { + yyv16 := &x.HostPorts + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + h.decSliceHostPortRange((*[]HostPortRange)(yyv16), d) + } + } + case "hostPID": + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + yyv18 := &x.HostPID + yym19 := z.DecBinary() + _ = yym19 + if false { + } else { + *((*bool)(yyv18)) = r.DecodeBool() + } + } + case "hostIPC": + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + yyv20 := &x.HostIPC + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + *((*bool)(yyv20)) = r.DecodeBool() + } + } + case "seLinux": + if r.TryDecodeAsNil() { + x.SELinux = SELinuxStrategyOptions{} + } else { + yyv22 := &x.SELinux + yyv22.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + x.RunAsUser = RunAsUserStrategyOptions{} + } else { + yyv23 := &x.RunAsUser + yyv23.CodecDecodeSelf(d) + } + case "supplementalGroups": + if r.TryDecodeAsNil() { + x.SupplementalGroups = SupplementalGroupsStrategyOptions{} + } else { + yyv24 := &x.SupplementalGroups + yyv24.CodecDecodeSelf(d) + } + case "fsGroup": + if r.TryDecodeAsNil() { + x.FSGroup = FSGroupStrategyOptions{} + } else { + yyv25 := &x.FSGroup + yyv25.CodecDecodeSelf(d) + } + case "readOnlyRootFilesystem": + if r.TryDecodeAsNil() { + x.ReadOnlyRootFilesystem = false + } else { + yyv26 := &x.ReadOnlyRootFilesystem + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + *((*bool)(yyv26)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj28 int + var yyb28 bool + var yyhl28 bool = l >= 0 + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Privileged = false + } else { + yyv29 := &x.Privileged + yym30 := z.DecBinary() + _ = yym30 + if false { + } else { + *((*bool)(yyv29)) = r.DecodeBool() + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DefaultAddCapabilities = nil + } else { + yyv31 := &x.DefaultAddCapabilities + yym32 := z.DecBinary() + _ = yym32 + if false { + } else { + h.decSlicev1_Capability((*[]pkg4_v1.Capability)(yyv31), d) + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDropCapabilities = nil + } else { + yyv33 := &x.RequiredDropCapabilities + yym34 := z.DecBinary() + _ = yym34 + if false { + } else { + h.decSlicev1_Capability((*[]pkg4_v1.Capability)(yyv33), d) + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AllowedCapabilities = nil + } else { + yyv35 := &x.AllowedCapabilities + yym36 := z.DecBinary() + _ = yym36 + if false { + } else { + h.decSlicev1_Capability((*[]pkg4_v1.Capability)(yyv35), d) + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv37 := &x.Volumes + yym38 := z.DecBinary() + _ = yym38 + if false { + } else { + h.decSliceFSType((*[]FSType)(yyv37), d) + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + yyv39 := &x.HostNetwork + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + *((*bool)(yyv39)) = r.DecodeBool() + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPorts = nil + } else { + yyv41 := &x.HostPorts + yym42 := z.DecBinary() + _ = yym42 + if false { + } else { + h.decSliceHostPortRange((*[]HostPortRange)(yyv41), d) + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + yyv43 := &x.HostPID + yym44 := z.DecBinary() + _ = yym44 + if false { + } else { + *((*bool)(yyv43)) = r.DecodeBool() + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + yyv45 := &x.HostIPC + yym46 := z.DecBinary() + _ = yym46 + if false { + } else { + *((*bool)(yyv45)) = r.DecodeBool() + } + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SELinux = SELinuxStrategyOptions{} + } else { + yyv47 := &x.SELinux + yyv47.CodecDecodeSelf(d) + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RunAsUser = RunAsUserStrategyOptions{} + } else { + yyv48 := &x.RunAsUser + yyv48.CodecDecodeSelf(d) + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SupplementalGroups = SupplementalGroupsStrategyOptions{} + } else { + yyv49 := &x.SupplementalGroups + yyv49.CodecDecodeSelf(d) + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSGroup = FSGroupStrategyOptions{} + } else { + yyv50 := &x.FSGroup + yyv50.CodecDecodeSelf(d) + } + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnlyRootFilesystem = false + } else { + yyv51 := &x.ReadOnlyRootFilesystem + yym52 := z.DecBinary() + _ = yym52 + if false { + } else { + *((*bool)(yyv51)) = r.DecodeBool() + } + } + for { + yyj28++ + if yyhl28 { + yyb28 = yyj28 > l + } else { + yyb28 = r.CheckBreak() + } + if yyb28 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj28-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FSType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FSType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HostPortRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostPortRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostPortRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "min": + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + yyv4 := &x.Min + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int32)(yyv4)) = int32(r.DecodeInt(32)) + } + } + case "max": + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + yyv6 := &x.Max + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int32)(yyv6)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostPortRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + yyv9 := &x.Min + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*int32)(yyv9)) = int32(r.DecodeInt(32)) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + yyv11 := &x.Max + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int32)(yyv11)) = int32(r.DecodeInt(32)) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SELinuxStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.SELinuxOptions != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Rule.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SELinuxStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SELinuxStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv4 := &x.Rule + yyv4.CodecDecodeSelf(d) + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(pkg4_v1.SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SELinuxStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj6 int + var yyb6 bool + var yyhl6 bool = l >= 0 + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv7 := &x.Rule + yyv7.CodecDecodeSelf(d) + } + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(pkg4_v1.SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + for { + yyj6++ + if yyhl6 { + yyb6 = yyj6 > l + } else { + yyb6 = r.CheckBreak() + } + if yyb6 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj6-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SELinuxStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SELinuxStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RunAsUserStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Ranges) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Rule.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RunAsUserStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RunAsUserStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv4 := &x.Rule + yyv4.CodecDecodeSelf(d) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv5 := &x.Ranges + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv5), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RunAsUserStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv8 := &x.Rule + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv9 := &x.Ranges + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv9), d) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IDRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IDRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IDRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "min": + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + yyv4 := &x.Min + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(yyv4)) = int64(r.DecodeInt(64)) + } + } + case "max": + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + yyv6 := &x.Max + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*int64)(yyv6)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IDRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + yyv9 := &x.Min + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + *((*int64)(yyv9)) = int64(r.DecodeInt(64)) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + yyv11 := &x.Max + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*int64)(yyv11)) = int64(r.DecodeInt(64)) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RunAsUserStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RunAsUserStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *FSGroupStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Rule != "" + yyq2[1] = len(x.Ranges) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Rule.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FSGroupStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FSGroupStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv4 := &x.Rule + yyv4.CodecDecodeSelf(d) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv5 := &x.Ranges + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv5), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FSGroupStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv8 := &x.Rule + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv9 := &x.Ranges + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv9), d) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FSGroupStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FSGroupStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SupplementalGroupsStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Rule != "" + yyq2[1] = len(x.Ranges) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + x.Rule.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SupplementalGroupsStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SupplementalGroupsStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv4 := &x.Rule + yyv4.CodecDecodeSelf(d) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv5 := &x.Ranges + yym6 := z.DecBinary() + _ = yym6 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv5), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SupplementalGroupsStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + yyv8 := &x.Rule + yyv8.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv9 := &x.Ranges + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv9), d) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SupplementalGroupsStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SupplementalGroupsStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodSecurityPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePodSecurityPolicy(([]PodSecurityPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePodSecurityPolicy(([]PodSecurityPolicy)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePodSecurityPolicy((*[]PodSecurityPolicy)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePodSecurityPolicy((*[]PodSecurityPolicy)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv18 := &x.Spec + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Ingress) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.PodSelector + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else { + z.EncFallback(yy4) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.PodSelector + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else { + z.EncFallback(yy6) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podSelector": + if r.TryDecodeAsNil() { + x.PodSelector = pkg1_v1.LabelSelector{} + } else { + yyv4 := &x.PodSelector + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else { + z.DecFallback(yyv4, false) + } + } + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv6 := &x.Ingress + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSelector = pkg1_v1.LabelSelector{} + } else { + yyv9 := &x.PodSelector + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else { + z.DecFallback(yyv9, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv11 := &x.Ingress + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyIngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Ports) != 0 + yyq2[1] = len(x.From) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.From == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("from")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.From == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyIngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv4 := &x.Ports + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv4), d) + } + } + case "from": + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv6 := &x.From + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv9 := &x.Ports + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv11 := &x.From + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Protocol != nil + yyq2[1] = x.Port != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Protocol == nil { + r.EncodeNil() + } else { + yy4 := *x.Protocol + yysf5 := &yy4 + yysf5.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Protocol == nil { + r.EncodeNil() + } else { + yy6 := *x.Protocol + yysf7 := &yy6 + yysf7.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Port == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym9 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Port == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "protocol": + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg4_v1.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + case "port": + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg5_intstr.IntOrString) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym6 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg4_v1.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg5_intstr.IntOrString) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPeer) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.PodSelector != nil + yyq2[1] = x.NamespaceSelector != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.PodSelector == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodSelector) { + } else { + z.EncFallback(x.PodSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodSelector == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodSelector) { + } else { + z.EncFallback(x.PodSelector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.NamespaceSelector) { + } else { + z.EncFallback(x.NamespaceSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaceSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.NamespaceSelector) { + } else { + z.EncFallback(x.NamespaceSelector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPeer) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podSelector": + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(pkg1_v1.LabelSelector) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodSelector) { + } else { + z.DecFallback(x.PodSelector, false) + } + } + case "namespaceSelector": + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(pkg1_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.NamespaceSelector) { + } else { + z.DecFallback(x.NamespaceSelector, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(pkg1_v1.LabelSelector) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodSelector) { + } else { + z.DecFallback(x.PodSelector, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(pkg1_v1.LabelSelector) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.NamespaceSelector) { + } else { + z.DecFallback(x.NamespaceSelector, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCustomMetricTarget(v *[]CustomMetricTarget, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []CustomMetricTarget{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]CustomMetricTarget, yyrl1) + } + } else { + yyv1 = make([]CustomMetricTarget, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CustomMetricTarget{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, CustomMetricTarget{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CustomMetricTarget{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, CustomMetricTarget{}) // var yyz1 CustomMetricTarget + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = CustomMetricTarget{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []CustomMetricTarget{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceCustomMetricCurrentStatus(v []CustomMetricCurrentStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCustomMetricCurrentStatus(v *[]CustomMetricCurrentStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []CustomMetricCurrentStatus{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]CustomMetricCurrentStatus, yyrl1) + } + } else { + yyv1 = make([]CustomMetricCurrentStatus, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CustomMetricCurrentStatus{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, CustomMetricCurrentStatus{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = CustomMetricCurrentStatus{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, CustomMetricCurrentStatus{}) // var yyz1 CustomMetricCurrentStatus + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = CustomMetricCurrentStatus{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []CustomMetricCurrentStatus{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceAPIVersion(v []APIVersion, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceAPIVersion(v *[]APIVersion, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []APIVersion{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]APIVersion, yyrl1) + } + } else { + yyv1 = make([]APIVersion, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = APIVersion{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, APIVersion{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = APIVersion{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, APIVersion{}) // var yyz1 APIVersion + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = APIVersion{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []APIVersion{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceThirdPartyResource(v []ThirdPartyResource, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceThirdPartyResource(v *[]ThirdPartyResource, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ThirdPartyResource{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 304) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ThirdPartyResource, yyrl1) + } + } else { + yyv1 = make([]ThirdPartyResource, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ThirdPartyResource{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ThirdPartyResource{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ThirdPartyResource{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ThirdPartyResource{}) // var yyz1 ThirdPartyResource + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ThirdPartyResource{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ThirdPartyResource{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceDeploymentCondition(v []DeploymentCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDeploymentCondition(v *[]DeploymentCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []DeploymentCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]DeploymentCondition, yyrl1) + } + } else { + yyv1 = make([]DeploymentCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DeploymentCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, DeploymentCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DeploymentCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, DeploymentCondition{}) // var yyz1 DeploymentCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = DeploymentCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []DeploymentCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceDeployment(v []Deployment, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDeployment(v *[]Deployment, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Deployment{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 968) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Deployment, yyrl1) + } + } else { + yyv1 = make([]Deployment, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Deployment{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Deployment{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Deployment{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Deployment{}) // var yyz1 Deployment + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Deployment{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Deployment{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceDaemonSet(v []DaemonSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDaemonSet(v *[]DaemonSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []DaemonSet{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 928) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]DaemonSet, yyrl1) + } + } else { + yyv1 = make([]DaemonSet, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DaemonSet{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, DaemonSet{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = DaemonSet{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, DaemonSet{}) // var yyz1 DaemonSet + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = DaemonSet{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []DaemonSet{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceThirdPartyResourceData(v []ThirdPartyResourceData, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceThirdPartyResourceData(v *[]ThirdPartyResourceData, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ThirdPartyResourceData{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ThirdPartyResourceData, yyrl1) + } + } else { + yyv1 = make([]ThirdPartyResourceData, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ThirdPartyResourceData{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ThirdPartyResourceData{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ThirdPartyResourceData{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ThirdPartyResourceData{}) // var yyz1 ThirdPartyResourceData + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ThirdPartyResourceData{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ThirdPartyResourceData{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceIngress(v []Ingress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngress(v *[]Ingress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Ingress{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 344) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Ingress, yyrl1) + } + } else { + yyv1 = make([]Ingress, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Ingress{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Ingress{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Ingress{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Ingress{}) // var yyz1 Ingress + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Ingress{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Ingress{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceIngressTLS(v []IngressTLS, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngressTLS(v *[]IngressTLS, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []IngressTLS{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]IngressTLS, yyrl1) + } + } else { + yyv1 = make([]IngressTLS, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = IngressTLS{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, IngressTLS{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = IngressTLS{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, IngressTLS{}) // var yyz1 IngressTLS + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = IngressTLS{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []IngressTLS{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceIngressRule(v []IngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngressRule(v *[]IngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []IngressRule{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 24) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]IngressRule, yyrl1) + } + } else { + yyv1 = make([]IngressRule, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = IngressRule{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, IngressRule{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = IngressRule{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, IngressRule{}) // var yyz1 IngressRule + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = IngressRule{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []IngressRule{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceHTTPIngressPath(v []HTTPIngressPath, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHTTPIngressPath(v *[]HTTPIngressPath, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HTTPIngressPath{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HTTPIngressPath, yyrl1) + } + } else { + yyv1 = make([]HTTPIngressPath, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HTTPIngressPath{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HTTPIngressPath{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HTTPIngressPath{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HTTPIngressPath{}) // var yyz1 HTTPIngressPath + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HTTPIngressPath{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HTTPIngressPath{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceReplicaSet(v []ReplicaSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicaSet(v *[]ReplicaSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ReplicaSet{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 896) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ReplicaSet, yyrl1) + } + } else { + yyv1 = make([]ReplicaSet, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicaSet{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ReplicaSet{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicaSet{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ReplicaSet{}) // var yyz1 ReplicaSet + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicaSet{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ReplicaSet{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceReplicaSetCondition(v []ReplicaSetCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicaSetCondition(v *[]ReplicaSetCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ReplicaSetCondition{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 88) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ReplicaSetCondition, yyrl1) + } + } else { + yyv1 = make([]ReplicaSetCondition, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicaSetCondition{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ReplicaSetCondition{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicaSetCondition{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ReplicaSetCondition{}) // var yyz1 ReplicaSetCondition + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ReplicaSetCondition{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ReplicaSetCondition{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicev1_Capability(v []pkg4_v1.Capability, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yysf2 := &yyv1 + yysf2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_Capability(v *[]pkg4_v1.Capability, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []pkg4_v1.Capability{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]pkg4_v1.Capability, yyrl1) + } + } else { + yyv1 = make([]pkg4_v1.Capability, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 pkg4_v1.Capability + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []pkg4_v1.Capability{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceFSType(v []FSType, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceFSType(v *[]FSType, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []FSType{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]FSType, yyrl1) + } + } else { + yyv1 = make([]FSType, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, "") + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, "") // var yyz1 FSType + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = "" + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []FSType{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceHostPortRange(v []HostPortRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHostPortRange(v *[]HostPortRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []HostPortRange{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 8) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]HostPortRange, yyrl1) + } + } else { + yyv1 = make([]HostPortRange, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HostPortRange{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, HostPortRange{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = HostPortRange{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, HostPortRange{}) // var yyz1 HostPortRange + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = HostPortRange{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []HostPortRange{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceIDRange(v []IDRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIDRange(v *[]IDRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []IDRange{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]IDRange, yyrl1) + } + } else { + yyv1 = make([]IDRange, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = IDRange{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, IDRange{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = IDRange{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, IDRange{}) // var yyz1 IDRange + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = IDRange{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []IDRange{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSlicePodSecurityPolicy(v []PodSecurityPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodSecurityPolicy(v *[]PodSecurityPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PodSecurityPolicy{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 560) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PodSecurityPolicy, yyrl1) + } + } else { + yyv1 = make([]PodSecurityPolicy, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodSecurityPolicy{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PodSecurityPolicy{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodSecurityPolicy{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PodSecurityPolicy{}) // var yyz1 PodSecurityPolicy + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodSecurityPolicy{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PodSecurityPolicy{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyIngressRule(v []NetworkPolicyIngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyIngressRule(v *[]NetworkPolicyIngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicyIngressRule{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicyIngressRule, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicyIngressRule, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyIngressRule{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicyIngressRule{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyIngressRule{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicyIngressRule{}) // var yyz1 NetworkPolicyIngressRule + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyIngressRule{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicyIngressRule{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPort(v []NetworkPolicyPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPort(v *[]NetworkPolicyPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicyPort{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicyPort, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicyPort, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPort{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicyPort{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPort{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicyPort{}) // var yyz1 NetworkPolicyPort + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPort{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicyPort{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPeer(v []NetworkPolicyPeer, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPeer(v *[]NetworkPolicyPeer, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicyPeer{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicyPeer, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicyPeer, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPeer{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicyPeer{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPeer{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicyPeer{}) // var yyz1 NetworkPolicyPeer + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPeer{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicyPeer{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicy(v []NetworkPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicy(v *[]NetworkPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicy{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 320) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicy, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicy, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicy{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicy{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicy{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicy{}) // var yyz1 NetworkPolicy + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicy{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicy{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.go new file mode 100644 index 000000000..8f5ad4807 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types.go @@ -0,0 +1,1171 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api/v1" + appsv1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" +) + +// describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + // +optional + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` +} + +// represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors + // +optional + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // label selector for pods that should match the replicas count. This is a serializated + // version of both map-based and more expressive set-based selectors. This is done to + // avoid introspection in the clients. The string will be in the same format as the + // query-param syntax. If the target type only supports map-based selectors, both this + // field and map-based selector field are populated. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` +} + +// +genclient=true +// +noMethods=true + +// represents a scaling request for a resource. +type Scale struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. + // +optional + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only. + // +optional + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// Dummy definition +type ReplicationControllerDummy struct { + metav1.TypeMeta `json:",inline"` +} + +// Alpha-level support for Custom Metrics in HPA (as annotations). +type CustomMetricTarget struct { + // Custom Metric name. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Custom Metric value (average). + TargetValue resource.Quantity `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +type CustomMetricTargetList struct { + Items []CustomMetricTarget `json:"items" protobuf:"bytes,1,rep,name=items"` +} + +type CustomMetricCurrentStatus struct { + // Custom Metric name. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Custom Metric value (average). + CurrentValue resource.Quantity `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +type CustomMetricCurrentStatusList struct { + Items []CustomMetricCurrentStatus `json:"items" protobuf:"bytes,1,rep,name=items"` +} + +// +genclient=true +// +nonNamespaced=true + +// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource +// types to the API. It consists of one or more Versions of the api. +type ThirdPartyResource struct { + metav1.TypeMeta `json:",inline"` + + // Standard object metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Description is the description of this object. + // +optional + Description string `json:"description,omitempty" protobuf:"bytes,2,opt,name=description"` + + // Versions are versions for this third party object + // +optional + Versions []APIVersion `json:"versions,omitempty" protobuf:"bytes,3,rep,name=versions"` +} + +// ThirdPartyResourceList is a list of ThirdPartyResources. +type ThirdPartyResourceList struct { + metav1.TypeMeta `json:",inline"` + + // Standard list metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ThirdPartyResources. + Items []ThirdPartyResource `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// An APIVersion represents a single concrete version of an object model. +type APIVersion struct { + // Name of this version (e.g. 'v1'). + // +optional + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` +} + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +type ThirdPartyResourceData struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data is the raw JSON data for this data. + // +optional + Data []byte `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"` +} + +// +genclient=true + +// Deployment enables declarative updates for Pods and ReplicaSets. +type Deployment struct { + metav1.TypeMeta `json:",inline"` + // Standard object metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the Deployment. + // +optional + Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the Deployment. + // +optional + Status DeploymentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +type DeploymentSpec struct { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // Template describes the pods that will be created. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // The deployment strategy to use to replace existing pods with new ones. + // +optional + Strategy DeploymentStrategy `json:"strategy,omitempty" protobuf:"bytes,4,opt,name=strategy"` + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,5,opt,name=minReadySeconds"` + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + // +optional + Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` + + // The config this deployment is rolling back to. Will be cleared after rollback is done. + // +optional + RollbackTo *RollbackConfig `json:"rollbackTo,omitempty" protobuf:"bytes,8,opt,name=rollbackTo"` + + // The maximum time in seconds for a deployment to make progress before it + // is considered to be failed. The deployment controller will continue to + // process failed deployments and a condition with a ProgressDeadlineExceeded + // reason will be surfaced in the deployment status. Once autoRollback is + // implemented, the deployment controller will automatically rollback failed + // deployments. Note that progress will not be estimated during the time a + // deployment is paused. This is not set by default. + ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,9,opt,name=progressDeadlineSeconds"` +} + +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + metav1.TypeMeta `json:",inline"` + // Required: This must match the Name of a deployment. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // The annotations to be updated to a deployment + // +optional + UpdatedAnnotations map[string]string `json:"updatedAnnotations,omitempty" protobuf:"bytes,2,rep,name=updatedAnnotations"` + // The config of this deployment rollback. + RollbackTo RollbackConfig `json:"rollbackTo" protobuf:"bytes,3,opt,name=rollbackTo"` +} + +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollback to the last revision. + // +optional + Revision int64 `json:"revision,omitempty" protobuf:"varint,1,opt,name=revision"` +} + +const ( + // DefaultDeploymentUniqueLabelKey is the default key of the selector that is added + // to existing RCs (and label key that is added to its pods) to prevent the existing RCs + // to select new pods (and old pods being select by new RC). + DefaultDeploymentUniqueLabelKey string = "pod-template-hash" +) + +// DeploymentStrategy describes how to replace existing pods with new ones. +type DeploymentStrategy struct { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + // +optional + Type DeploymentStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=DeploymentStrategyType"` + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + // +optional + RollingUpdate *RollingUpdateDeployment `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +type DeploymentStrategyType string + +const ( + // Kill all existing pods before creating new ones. + RecreateDeploymentStrategyType DeploymentStrategyType = "Recreate" + + // Replace the old RCs by new one using rolling update i.e gradually scale down the old RCs and scale up the new one. + RollingUpdateDeploymentStrategyType DeploymentStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of rolling update. +type RollingUpdateDeployment struct { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // Absolute number is calculated from percentage by rounding down. + // This can not be 0 if MaxSurge is 0. + // By default, a fixed value of 1 is used. + // Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that the total number of pods available at all times during the update is at + // least 70% of desired pods. + // +optional + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"` + + // The maximum number of pods that can be scheduled above the desired number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // By default, a value of 1 is used. + // Example: when this is set to 30%, the new RC can be scaled up immediately when + // the rolling update starts, such that the total number of old and new pods do not exceed + // 130% of desired pods. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of desired pods. + // +optional + MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"` +} + +// DeploymentStatus is the most recently observed status of the Deployment. +type DeploymentStatus struct { + // The generation observed by the deployment controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + // +optional + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,2,opt,name=replicas"` + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + // +optional + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` + + // Total number of ready pods targeted by this deployment. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` + + // Total number of unavailable pods targeted by this deployment. + // +optional + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"` + + // Represents the latest available observations of a deployment's current state. + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []DeploymentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` + + // Count of hash collisions for the Deployment. The Deployment controller uses this + // field as a collision avoidance mechanism when it needs to create the name for the + // newest ReplicaSet. + // +optional + CollisionCount *int64 `json:"collisionCount,omitempty" protobuf:"varint,8,opt,name=collisionCount"` +} + +type DeploymentConditionType string + +// These are valid conditions of a deployment. +const ( + // Available means the deployment is available, ie. at least the minimum available + // replicas required are up and running for at least minReadySeconds. + DeploymentAvailable DeploymentConditionType = "Available" + // Progressing means the deployment is progressing. Progress for a deployment is + // considered when a new replica set is created or adopted, and when new pods scale + // up or old pods scale down. Progress is not estimated for paused deployments or + // when progressDeadlineSeconds is not specified. + DeploymentProgressing DeploymentConditionType = "Progressing" + // ReplicaFailure is added in a deployment when one of its pods fails to be created + // or deleted. + DeploymentReplicaFailure DeploymentConditionType = "ReplicaFailure" +) + +// DeploymentCondition describes the state of a deployment at a certain point. +type DeploymentCondition struct { + // Type of deployment condition. + Type DeploymentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=DeploymentConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // The last time this condition was updated. + LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,6,opt,name=lastUpdateTime"` + // Last time the condition transitioned from one status to another. + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,7,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// DeploymentList is a list of Deployments. +type DeploymentList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Deployments. + Items []Deployment `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +type DaemonSetUpdateStrategy struct { + // Type of daemon set update. Can be "RollingUpdate" or "OnDelete". + // Default is OnDelete. + // +optional + Type DaemonSetUpdateStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type"` + + // Rolling update config params. Present only if type = "RollingUpdate". + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as Deployment `strategy.rollingUpdate`. + // See https://github.com/kubernetes/kubernetes/issues/35345 + // +optional + RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +type DaemonSetUpdateStrategyType string + +const ( + // Replace the old daemons by new ones using rolling update i.e replace them on each node one after the other. + RollingUpdateDaemonSetStrategyType DaemonSetUpdateStrategyType = "RollingUpdate" + + // Replace the old daemons only when it's killed + OnDeleteDaemonSetStrategyType DaemonSetUpdateStrategyType = "OnDelete" +) + +// Spec to control the desired behavior of daemon set rolling update. +type RollingUpdateDaemonSet struct { + // The maximum number of DaemonSet pods that can be unavailable during the + // update. Value can be an absolute number (ex: 5) or a percentage of total + // number of DaemonSet pods at the start of the update (ex: 10%). Absolute + // number is calculated from percentage by rounding up. + // This cannot be 0. + // Default value is 1. + // Example: when this is set to 30%, at most 30% of the total number of nodes + // that should be running the daemon pod (i.e. status.desiredNumberScheduled) + // can have their pods stopped for an update at any given + // time. The update starts by stopping at most 30% of those DaemonSet pods + // and then brings up new DaemonSet pods in their place. Once the new pods + // are available, it then proceeds onto other DaemonSet pods, thus ensuring + // that at least 70% of original number of DaemonSet pods are available at + // all times during the update. + // +optional + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"` +} + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // A label query over pods that are managed by the daemon set. + // Must match in order to be controlled. + // If empty, defaulted to labels on Pod template. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,opt,name=selector"` + + // An object that describes the pod that will be created. + // The DaemonSet will create exactly one copy of this pod on every node + // that matches the template's node selector (or on every node if no node + // selector is specified). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,2,opt,name=template"` + + // An update strategy to replace existing DaemonSet pods with new pods. + // +optional + UpdateStrategy DaemonSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,3,opt,name=updateStrategy"` + + // The minimum number of seconds for which a newly created DaemonSet pod should + // be ready without any of its container crashing, for it to be considered + // available. Defaults to 0 (pod will be considered available as soon as it + // is ready). + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // DEPRECATED. + // A sequence number representing a specific generation of the template. + // Populated by the system. It can be set only during the creation. + // +optional + TemplateGeneration int64 `json:"templateGeneration,omitempty" protobuf:"varint,5,opt,name=templateGeneration"` + + // The number of old history to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + // Defaults to 10. + // +optional + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` +} + +// DaemonSetStatus represents the current status of a daemon set. +type DaemonSetStatus struct { + // The number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + CurrentNumberScheduled int32 `json:"currentNumberScheduled" protobuf:"varint,1,opt,name=currentNumberScheduled"` + + // The number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + NumberMisscheduled int32 `json:"numberMisscheduled" protobuf:"varint,2,opt,name=numberMisscheduled"` + + // The total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ + DesiredNumberScheduled int32 `json:"desiredNumberScheduled" protobuf:"varint,3,opt,name=desiredNumberScheduled"` + + // The number of nodes that should be running the daemon pod and have one + // or more of the daemon pod running and ready. + NumberReady int32 `json:"numberReady" protobuf:"varint,4,opt,name=numberReady"` + + // The most recent generation observed by the daemon set controller. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,5,opt,name=observedGeneration"` + + // The total number of nodes that are running updated daemon pod + // +optional + UpdatedNumberScheduled int32 `json:"updatedNumberScheduled,omitempty" protobuf:"varint,6,opt,name=updatedNumberScheduled"` + + // The number of nodes that should be running the + // daemon pod and have one or more of the daemon pod running and + // available (ready for at least spec.minReadySeconds) + // +optional + NumberAvailable int32 `json:"numberAvailable,omitempty" protobuf:"varint,7,opt,name=numberAvailable"` + + // The number of nodes that should be running the + // daemon pod and have none of the daemon pod running and available + // (ready for at least spec.minReadySeconds) + // +optional + NumberUnavailable int32 `json:"numberUnavailable,omitempty" protobuf:"varint,8,opt,name=numberUnavailable"` + + // Count of hash collisions for the DaemonSet. The DaemonSet controller + // uses this field as a collision avoidance mechanism when it needs to + // create the name for the newest ControllerRevision. + // +optional + CollisionCount *int64 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"` +} + +// +genclient=true + +// DaemonSet represents the configuration of a daemon set. +type DaemonSet struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The desired behavior of this daemon set. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec DaemonSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // The current status of this daemon set. This data may be + // out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status DaemonSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +const ( + // DEPRECATED: DefaultDaemonSetUniqueLabelKey is used instead. + // DaemonSetTemplateGenerationKey is the key of the labels that is added + // to daemon set pods to distinguish between old and new pod templates + // during DaemonSet template update. + DaemonSetTemplateGenerationKey string = "pod-template-generation" + + // DefaultDaemonSetUniqueLabelKey is the default label key that is added + // to existing DaemonSet pods to distinguish between old and new + // DaemonSet pods during DaemonSet template updates. + DefaultDaemonSetUniqueLabelKey = appsv1beta1.ControllerRevisionHashLabelKey +) + +// DaemonSetList is a collection of daemon sets. +type DaemonSetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // A list of daemon sets. + Items []DaemonSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. +type ThirdPartyResourceDataList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ThirdpartyResourceData. + Items []ThirdPartyResourceData `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Ingress is a collection of rules that allow inbound connections to reach the +// endpoints defined by a backend. An Ingress can be configured to give services +// externally-reachable urls, load balance traffic, terminate SSL, offer name +// based virtual hosting etc. +type Ingress struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is the desired state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec IngressSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current state of the Ingress. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status IngressStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// IngressList is a collection of Ingress. +type IngressList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Ingress. + Items []Ingress `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// IngressSpec describes the Ingress the user wishes to exist. +type IngressSpec struct { + // A default backend capable of servicing requests that don't match any + // rule. At least one of 'backend' or 'rules' must be specified. This field + // is optional to allow the loadbalancer controller or defaulting logic to + // specify a global default. + // +optional + Backend *IngressBackend `json:"backend,omitempty" protobuf:"bytes,1,opt,name=backend"` + + // TLS configuration. Currently the Ingress only supports a single TLS + // port, 443. If multiple members of this list specify different hosts, they + // will be multiplexed on the same port according to the hostname specified + // through the SNI TLS extension, if the ingress controller fulfilling the + // ingress supports SNI. + // +optional + TLS []IngressTLS `json:"tls,omitempty" protobuf:"bytes,2,rep,name=tls"` + + // A list of host rules used to configure the Ingress. If unspecified, or + // no rule matches, all traffic is sent to the default backend. + // +optional + Rules []IngressRule `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"` + // TODO: Add the ability to specify load-balancer IP through claims +} + +// IngressTLS describes the transport layer security associated with an Ingress. +type IngressTLS struct { + // Hosts are a list of hosts included in the TLS certificate. The values in + // this list must match the name/s used in the tlsSecret. Defaults to the + // wildcard host setting for the loadbalancer controller fulfilling this + // Ingress, if left unspecified. + // +optional + Hosts []string `json:"hosts,omitempty" protobuf:"bytes,1,rep,name=hosts"` + // SecretName is the name of the secret used to terminate SSL traffic on 443. + // Field is left optional to allow SSL routing based on SNI hostname alone. + // If the SNI host in a listener conflicts with the "Host" header field used + // by an IngressRule, the SNI host is used for termination and value of the + // Host header is used for routing. + // +optional + SecretName string `json:"secretName,omitempty" protobuf:"bytes,2,opt,name=secretName"` + // TODO: Consider specifying different modes of termination, protocols etc. +} + +// IngressStatus describe the current state of the Ingress. +type IngressStatus struct { + // LoadBalancer contains the current status of the load-balancer. + // +optional + LoadBalancer v1.LoadBalancerStatus `json:"loadBalancer,omitempty" protobuf:"bytes,1,opt,name=loadBalancer"` +} + +// IngressRule represents the rules mapping the paths under a specified host to +// the related backend services. Incoming requests are first evaluated for a host +// match, then routed to the backend associated with the matching IngressRuleValue. +type IngressRule struct { + // Host is the fully qualified domain name of a network host, as defined + // by RFC 3986. Note the following deviations from the "host" part of the + // URI as defined in the RFC: + // 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the + // IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. + // Incoming requests are matched against the host before the IngressRuleValue. + // If the host is unspecified, the Ingress routes all traffic based on the + // specified IngressRuleValue. + // +optional + Host string `json:"host,omitempty" protobuf:"bytes,1,opt,name=host"` + // IngressRuleValue represents a rule to route requests for this IngressRule. + // If unspecified, the rule defaults to a http catch-all. Whether that sends + // just traffic matching the host to the default backend or all traffic to the + // default backend, is left to the controller fulfilling the Ingress. Http is + // currently the only supported IngressRuleValue. + // +optional + IngressRuleValue `json:",inline,omitempty" protobuf:"bytes,2,opt,name=ingressRuleValue"` +} + +// IngressRuleValue represents a rule to apply against incoming requests. If the +// rule is satisfied, the request is routed to the specified backend. Currently +// mixing different types of rules in a single Ingress is disallowed, so exactly +// one of the following must be set. +type IngressRuleValue struct { + //TODO: + // 1. Consider renaming this resource and the associated rules so they + // aren't tied to Ingress. They can be used to route intra-cluster traffic. + // 2. Consider adding fields for ingress-type specific global options + // usable by a loadbalancer, like http keep-alive. + + // +optional + HTTP *HTTPIngressRuleValue `json:"http,omitempty" protobuf:"bytes,1,opt,name=http"` +} + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// In the example: http:///? -> backend where +// where parts of the url correspond to RFC 3986, this resource will be used +// to match against everything after the last '/' and before the first '?' +// or '#'. +type HTTPIngressRuleValue struct { + // A collection of paths that map requests to backends. + Paths []HTTPIngressPath `json:"paths" protobuf:"bytes,1,rep,name=paths"` + // TODO: Consider adding fields for ingress-type specific global + // options usable by a loadbalancer, like http keep-alive. +} + +// HTTPIngressPath associates a path regex with a backend. Incoming urls matching +// the path are forwarded to the backend. +type HTTPIngressPath struct { + // Path is an extended POSIX regex as defined by IEEE Std 1003.1, + // (i.e this follows the egrep/unix syntax, not the perl syntax) + // matched against the path of an incoming request. Currently it can + // contain characters disallowed from the conventional "path" + // part of a URL as defined by RFC 3986. Paths must begin with + // a '/'. If unspecified, the path defaults to a catch all sending + // traffic to the backend. + // +optional + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + + // Backend defines the referenced service endpoint to which the traffic + // will be forwarded to. + Backend IngressBackend `json:"backend" protobuf:"bytes,2,opt,name=backend"` +} + +// IngressBackend describes all endpoints for a given service and port. +type IngressBackend struct { + // Specifies the name of the referenced service. + ServiceName string `json:"serviceName" protobuf:"bytes,1,opt,name=serviceName"` + + // Specifies the port of the referenced service. + ServicePort intstr.IntOrString `json:"servicePort" protobuf:"bytes,2,opt,name=servicePort"` +} + +// +genclient=true + +// ReplicaSet represents the configuration of a ReplicaSet. +type ReplicaSet struct { + metav1.TypeMeta `json:",inline"` + + // If the Labels of a ReplicaSet are empty, they are defaulted to + // be the same as the Pod(s) that the ReplicaSet manages. + // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Spec ReplicaSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the most recently observed status of the ReplicaSet. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status + // +optional + Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ReplicaSetList is a collection of ReplicaSets. +type ReplicaSetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ReplicaSets. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller + Items []ReplicaSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ReplicaSetSpec is the specification of a ReplicaSet. +type ReplicaSetSpec struct { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + // +optional + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + // +optional + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` + + // Selector is a label query over pods that should match the replica count. + // If the selector is empty, it is defaulted to the labels present on the pod template. + // Label keys and values that must match in order to be controlled by this replica set. + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + // +optional + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template + // +optional + Template v1.PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,3,opt,name=template"` +} + +// ReplicaSetStatus represents the current status of a ReplicaSet. +type ReplicaSetStatus struct { + // Replicas is the most recently oberved number of replicas. + // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + // +optional + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replica set. + // +optional + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // The number of available replicas (ready for at least minReadySeconds) for this replica set. + // +optional + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` + + // Represents the latest available observations of a replica set's current state. + // +optional + // +patchMergeKey=type + // +patchStrategy=merge + Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"` +} + +type ReplicaSetConditionType string + +// These are valid conditions of a replica set. +const ( + // ReplicaSetReplicaFailure is added in a replica set when one of its pods fails to be created + // due to insufficient quota, limit ranges, pod security policy, node selectors, etc. or deleted + // due to kubelet being down or finalizers are failing. + ReplicaSetReplicaFailure ReplicaSetConditionType = "ReplicaFailure" +) + +// ReplicaSetCondition describes the state of a replica set at a certain point. +type ReplicaSetCondition struct { + // Type of replica set condition. + Type ReplicaSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ReplicaSetConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // The last time the condition transitioned from one status to another. + // +optional + LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"` + // The reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + // A human readable message indicating details about the transition. + // +optional + Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"` +} + +// +genclient=true +// +nonNamespaced=true + +// Pod Security Policy governs the ability to make requests that affect the Security Context +// that will be applied to a pod and container. +type PodSecurityPolicy struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // spec defines the policy enforced. + // +optional + Spec PodSecurityPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// Pod Security Policy Spec defines the policy enforced. +type PodSecurityPolicySpec struct { + // privileged determines if a pod can request to be run as privileged. + // +optional + Privileged bool `json:"privileged,omitempty" protobuf:"varint,1,opt,name=privileged"` + // DefaultAddCapabilities is the default set of capabilities that will be added to the container + // unless the pod spec specifically drops the capability. You may not list a capabiility in both + // DefaultAddCapabilities and RequiredDropCapabilities. + // +optional + DefaultAddCapabilities []v1.Capability `json:"defaultAddCapabilities,omitempty" protobuf:"bytes,2,rep,name=defaultAddCapabilities,casttype=k8s.io/kubernetes/pkg/api/v1.Capability"` + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + // +optional + RequiredDropCapabilities []v1.Capability `json:"requiredDropCapabilities,omitempty" protobuf:"bytes,3,rep,name=requiredDropCapabilities,casttype=k8s.io/kubernetes/pkg/api/v1.Capability"` + // AllowedCapabilities is a list of capabilities that can be requested to add to the container. + // Capabilities in this field may be added at the pod author's discretion. + // You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities. + // +optional + AllowedCapabilities []v1.Capability `json:"allowedCapabilities,omitempty" protobuf:"bytes,4,rep,name=allowedCapabilities,casttype=k8s.io/kubernetes/pkg/api/v1.Capability"` + // volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + // +optional + Volumes []FSType `json:"volumes,omitempty" protobuf:"bytes,5,rep,name=volumes,casttype=FSType"` + // hostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + // +optional + HostNetwork bool `json:"hostNetwork,omitempty" protobuf:"varint,6,opt,name=hostNetwork"` + // hostPorts determines which host port ranges are allowed to be exposed. + // +optional + HostPorts []HostPortRange `json:"hostPorts,omitempty" protobuf:"bytes,7,rep,name=hostPorts"` + // hostPID determines if the policy allows the use of HostPID in the pod spec. + // +optional + HostPID bool `json:"hostPID,omitempty" protobuf:"varint,8,opt,name=hostPID"` + // hostIPC determines if the policy allows the use of HostIPC in the pod spec. + // +optional + HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,9,opt,name=hostIPC"` + // seLinux is the strategy that will dictate the allowable labels that may be set. + SELinux SELinuxStrategyOptions `json:"seLinux" protobuf:"bytes,10,opt,name=seLinux"` + // runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set. + RunAsUser RunAsUserStrategyOptions `json:"runAsUser" protobuf:"bytes,11,opt,name=runAsUser"` + // SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext. + SupplementalGroups SupplementalGroupsStrategyOptions `json:"supplementalGroups" protobuf:"bytes,12,opt,name=supplementalGroups"` + // FSGroup is the strategy that will dictate what fs group is used by the SecurityContext. + FSGroup FSGroupStrategyOptions `json:"fsGroup" protobuf:"bytes,13,opt,name=fsGroup"` + // ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file + // system. If the container specifically requests to run with a non-read only root file system + // the PSP should deny the pod. + // If set to false the container may run with a read only root file system if it wishes but it + // will not be forced to. + // +optional + ReadOnlyRootFilesystem bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,14,opt,name=readOnlyRootFilesystem"` +} + +// FS Type gives strong typing to different file systems that are used by volumes. +type FSType string + +var ( + AzureFile FSType = "azureFile" + Flocker FSType = "flocker" + FlexVolume FSType = "flexVolume" + HostPath FSType = "hostPath" + EmptyDir FSType = "emptyDir" + GCEPersistentDisk FSType = "gcePersistentDisk" + AWSElasticBlockStore FSType = "awsElasticBlockStore" + GitRepo FSType = "gitRepo" + Secret FSType = "secret" + NFS FSType = "nfs" + ISCSI FSType = "iscsi" + Glusterfs FSType = "glusterfs" + PersistentVolumeClaim FSType = "persistentVolumeClaim" + RBD FSType = "rbd" + Cinder FSType = "cinder" + CephFS FSType = "cephFS" + DownwardAPI FSType = "downwardAPI" + FC FSType = "fc" + ConfigMap FSType = "configMap" + Quobyte FSType = "quobyte" + AzureDisk FSType = "azureDisk" + All FSType = "*" +) + +// Host Port Range defines a range of host ports that will be enabled by a policy +// for pods to use. It requires both the start and end to be defined. +type HostPortRange struct { + // min is the start of the range, inclusive. + Min int32 `json:"min" protobuf:"varint,1,opt,name=min"` + // max is the end of the range, inclusive. + Max int32 `json:"max" protobuf:"varint,2,opt,name=max"` +} + +// SELinux Strategy Options defines the strategy type and any options used to create the strategy. +type SELinuxStrategyOptions struct { + // type is the strategy that will dictate the allowable labels that may be set. + Rule SELinuxStrategy `json:"rule" protobuf:"bytes,1,opt,name=rule,casttype=SELinuxStrategy"` + // seLinuxOptions required to run as; required for MustRunAs + // More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md + // +optional + SELinuxOptions *v1.SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,2,opt,name=seLinuxOptions"` +} + +// SELinuxStrategy denotes strategy types for generating SELinux options for a +// Security Context. +type SELinuxStrategy string + +const ( + // container must have SELinux labels of X applied. + SELinuxStrategyMustRunAs SELinuxStrategy = "MustRunAs" + // container may make requests for any SELinux context labels. + SELinuxStrategyRunAsAny SELinuxStrategy = "RunAsAny" +) + +// Run A sUser Strategy Options defines the strategy type and any options used to create the strategy. +type RunAsUserStrategyOptions struct { + // Rule is the strategy that will dictate the allowable RunAsUser values that may be set. + Rule RunAsUserStrategy `json:"rule" protobuf:"bytes,1,opt,name=rule,casttype=RunAsUserStrategy"` + // Ranges are the allowed ranges of uids that may be used. + // +optional + Ranges []IDRange `json:"ranges,omitempty" protobuf:"bytes,2,rep,name=ranges"` +} + +// ID Range provides a min/max of an allowed range of IDs. +type IDRange struct { + // Min is the start of the range, inclusive. + Min int64 `json:"min" protobuf:"varint,1,opt,name=min"` + // Max is the end of the range, inclusive. + Max int64 `json:"max" protobuf:"varint,2,opt,name=max"` +} + +// RunAsUserStrategy denotes strategy types for generating RunAsUser values for a +// Security Context. +type RunAsUserStrategy string + +const ( + // container must run as a particular uid. + RunAsUserStrategyMustRunAs RunAsUserStrategy = "MustRunAs" + // container must run as a non-root uid + RunAsUserStrategyMustRunAsNonRoot RunAsUserStrategy = "MustRunAsNonRoot" + // container may make requests for any uid. + RunAsUserStrategyRunAsAny RunAsUserStrategy = "RunAsAny" +) + +// FSGroupStrategyOptions defines the strategy type and options used to create the strategy. +type FSGroupStrategyOptions struct { + // Rule is the strategy that will dictate what FSGroup is used in the SecurityContext. + // +optional + Rule FSGroupStrategyType `json:"rule,omitempty" protobuf:"bytes,1,opt,name=rule,casttype=FSGroupStrategyType"` + // Ranges are the allowed ranges of fs groups. If you would like to force a single + // fs group then supply a single range with the same start and end. + // +optional + Ranges []IDRange `json:"ranges,omitempty" protobuf:"bytes,2,rep,name=ranges"` +} + +// FSGroupStrategyType denotes strategy types for generating FSGroup values for a +// SecurityContext +type FSGroupStrategyType string + +const ( + // container must have FSGroup of X applied. + FSGroupStrategyMustRunAs FSGroupStrategyType = "MustRunAs" + // container may make requests for any FSGroup labels. + FSGroupStrategyRunAsAny FSGroupStrategyType = "RunAsAny" +) + +// SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. +type SupplementalGroupsStrategyOptions struct { + // Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext. + // +optional + Rule SupplementalGroupsStrategyType `json:"rule,omitempty" protobuf:"bytes,1,opt,name=rule,casttype=SupplementalGroupsStrategyType"` + // Ranges are the allowed ranges of supplemental groups. If you would like to force a single + // supplemental group then supply a single range with the same start and end. + // +optional + Ranges []IDRange `json:"ranges,omitempty" protobuf:"bytes,2,rep,name=ranges"` +} + +// SupplementalGroupsStrategyType denotes strategy types for determining valid supplemental +// groups for a SecurityContext. +type SupplementalGroupsStrategyType string + +const ( + // container must run as a particular gid. + SupplementalGroupsStrategyMustRunAs SupplementalGroupsStrategyType = "MustRunAs" + // container may make requests for any gid. + SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny" +) + +// Pod Security Policy List is a list of PodSecurityPolicy objects. +type PodSecurityPolicyList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []PodSecurityPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +type NetworkPolicy struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + Spec NetworkPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +type NetworkPolicySpec struct { + // Selects the pods to which this NetworkPolicy object applies. The array of ingress rules + // is applied to any pods selected by this field. Multiple network policies can select the + // same set of pods. In this case, the ingress rules for each are combined additively. + // This field is NOT optional and follows standard label selector semantics. + // An empty podSelector matches all pods in this namespace. + PodSelector metav1.LabelSelector `json:"podSelector" protobuf:"bytes,1,opt,name=podSelector"` + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod + // OR if the traffic source is the pod's local node, + // OR if the traffic matches at least one ingress rule across all of the NetworkPolicy + // objects whose podSelector matches the pod. + // If this field is empty then this NetworkPolicy does not allow any traffic + // (and serves solely to ensure that the pods it selects are isolated by default). + // +optional + Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"` +} + +// This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from. +type NetworkPolicyIngressRule struct { + // List of ports which should be made accessible on the pods selected for this rule. + // Each item in this list is combined using a logical OR. + // If this field is empty or missing, this rule matches all ports (traffic not restricted by port). + // If this field is present and contains at least one item, then this rule allows traffic + // only if the traffic matches at least one port in the list. + // +optional + Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"` + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. + // If this field is empty or missing, this rule matches all sources (traffic not restricted by source). + // If this field is present and contains at least on item, this rule allows traffic only if the + // traffic matches at least one item in the from list. + // +optional + From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"` +} + +type NetworkPolicyPort struct { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + // +optional + Protocol *v1.Protocol `json:"protocol,omitempty" protobuf:"bytes,1,opt,name=protocol,casttype=k8s.io/kubernetes/pkg/api/v1.Protocol"` + + // If specified, the port on the given protocol. This can + // either be a numerical or named port on a pod. If this field is not provided, + // this matches all port names and numbers. + // If present, only traffic on the specified protocol AND port + // will be matched. + // +optional + Port *intstr.IntOrString `json:"port,omitempty" protobuf:"bytes,2,opt,name=port"` +} + +type NetworkPolicyPeer struct { + // Exactly one of the following must be specified. + + // This is a label selector which selects Pods in this namespace. + // This field follows standard label selector semantics. + // If present but empty, this selector selects all pods in this namespace. + // +optional + PodSelector *metav1.LabelSelector `json:"podSelector,omitempty" protobuf:"bytes,1,opt,name=podSelector"` + + // Selects Namespaces using cluster scoped-labels. This + // matches all pods in all namespaces selected by this label selector. + // This field follows standard label selector semantics. + // If present but empty, this selector selects all namespaces. + // +optional + NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` +} + +// Network Policy List is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []NetworkPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..d9cc1d13e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,631 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_APIVersion = map[string]string{ + "": "An APIVersion represents a single concrete version of an object model.", + "name": "Name of this version (e.g. 'v1').", +} + +func (APIVersion) SwaggerDoc() map[string]string { + return map_APIVersion +} + +var map_CustomMetricCurrentStatus = map[string]string{ + "name": "Custom Metric name.", + "value": "Custom Metric value (average).", +} + +func (CustomMetricCurrentStatus) SwaggerDoc() map[string]string { + return map_CustomMetricCurrentStatus +} + +var map_CustomMetricTarget = map[string]string{ + "": "Alpha-level support for Custom Metrics in HPA (as annotations).", + "name": "Custom Metric name.", + "value": "Custom Metric value (average).", +} + +func (CustomMetricTarget) SwaggerDoc() map[string]string { + return map_CustomMetricTarget +} + +var map_DaemonSet = map[string]string{ + "": "DaemonSet represents the configuration of a daemon set.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (DaemonSet) SwaggerDoc() map[string]string { + return map_DaemonSet +} + +var map_DaemonSetList = map[string]string{ + "": "DaemonSetList is a collection of daemon sets.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "A list of daemon sets.", +} + +func (DaemonSetList) SwaggerDoc() map[string]string { + return map_DaemonSetList +} + +var map_DaemonSetSpec = map[string]string{ + "": "DaemonSetSpec is the specification of a daemon set.", + "selector": "A label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", + "updateStrategy": "An update strategy to replace existing DaemonSet pods with new pods.", + "minReadySeconds": "The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).", + "templateGeneration": "DEPRECATED. A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation.", + "revisionHistoryLimit": "The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.", +} + +func (DaemonSetSpec) SwaggerDoc() map[string]string { + return map_DaemonSetSpec +} + +var map_DaemonSetStatus = map[string]string{ + "": "DaemonSetStatus represents the current status of a daemon set.", + "currentNumberScheduled": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "numberReady": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.", + "observedGeneration": "The most recent generation observed by the daemon set controller.", + "updatedNumberScheduled": "The total number of nodes that are running updated daemon pod", + "numberAvailable": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "numberUnavailable": "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "collisionCount": "Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", +} + +func (DaemonSetStatus) SwaggerDoc() map[string]string { + return map_DaemonSetStatus +} + +var map_DaemonSetUpdateStrategy = map[string]string{ + "type": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete.", + "rollingUpdate": "Rolling update config params. Present only if type = \"RollingUpdate\".", +} + +func (DaemonSetUpdateStrategy) SwaggerDoc() map[string]string { + return map_DaemonSetUpdateStrategy +} + +var map_Deployment = map[string]string{ + "": "Deployment enables declarative updates for Pods and ReplicaSets.", + "metadata": "Standard object metadata.", + "spec": "Specification of the desired behavior of the Deployment.", + "status": "Most recently observed status of the Deployment.", +} + +func (Deployment) SwaggerDoc() map[string]string { + return map_Deployment +} + +var map_DeploymentCondition = map[string]string{ + "": "DeploymentCondition describes the state of a deployment at a certain point.", + "type": "Type of deployment condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastUpdateTime": "The last time this condition was updated.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (DeploymentCondition) SwaggerDoc() map[string]string { + return map_DeploymentCondition +} + +var map_DeploymentList = map[string]string{ + "": "DeploymentList is a list of Deployments.", + "metadata": "Standard list metadata.", + "items": "Items is the list of Deployments.", +} + +func (DeploymentList) SwaggerDoc() map[string]string { + return map_DeploymentList +} + +var map_DeploymentRollback = map[string]string{ + "": "DeploymentRollback stores the information required to rollback a deployment.", + "name": "Required: This must match the Name of a deployment.", + "updatedAnnotations": "The annotations to be updated to a deployment", + "rollbackTo": "The config of this deployment rollback.", +} + +func (DeploymentRollback) SwaggerDoc() map[string]string { + return map_DeploymentRollback +} + +var map_DeploymentSpec = map[string]string{ + "": "DeploymentSpec is the specification of the desired behavior of the Deployment.", + "replicas": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", + "selector": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.", + "template": "Template describes the pods that will be created.", + "strategy": "The deployment strategy to use to replace existing pods with new ones.", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "revisionHistoryLimit": "The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified.", + "paused": "Indicates that the deployment is paused and will not be processed by the deployment controller.", + "rollbackTo": "The config this deployment is rolling back to. Will be cleared after rollback is done.", + "progressDeadlineSeconds": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. This is not set by default.", +} + +func (DeploymentSpec) SwaggerDoc() map[string]string { + return map_DeploymentSpec +} + +var map_DeploymentStatus = map[string]string{ + "": "DeploymentStatus is the most recently observed status of the Deployment.", + "observedGeneration": "The generation observed by the deployment controller.", + "replicas": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", + "updatedReplicas": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", + "readyReplicas": "Total number of ready pods targeted by this deployment.", + "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", + "unavailableReplicas": "Total number of unavailable pods targeted by this deployment.", + "conditions": "Represents the latest available observations of a deployment's current state.", + "collisionCount": "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.", +} + +func (DeploymentStatus) SwaggerDoc() map[string]string { + return map_DeploymentStatus +} + +var map_DeploymentStrategy = map[string]string{ + "": "DeploymentStrategy describes how to replace existing pods with new ones.", + "type": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", + "rollingUpdate": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", +} + +func (DeploymentStrategy) SwaggerDoc() map[string]string { + return map_DeploymentStrategy +} + +var map_FSGroupStrategyOptions = map[string]string{ + "": "FSGroupStrategyOptions defines the strategy type and options used to create the strategy.", + "rule": "Rule is the strategy that will dictate what FSGroup is used in the SecurityContext.", + "ranges": "Ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end.", +} + +func (FSGroupStrategyOptions) SwaggerDoc() map[string]string { + return map_FSGroupStrategyOptions +} + +var map_HTTPIngressPath = map[string]string{ + "": "HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.", + "path": "Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.", + "backend": "Backend defines the referenced service endpoint to which the traffic will be forwarded to.", +} + +func (HTTPIngressPath) SwaggerDoc() map[string]string { + return map_HTTPIngressPath +} + +var map_HTTPIngressRuleValue = map[string]string{ + "": "HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http:///? -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.", + "paths": "A collection of paths that map requests to backends.", +} + +func (HTTPIngressRuleValue) SwaggerDoc() map[string]string { + return map_HTTPIngressRuleValue +} + +var map_HostPortRange = map[string]string{ + "": "Host Port Range defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.", + "min": "min is the start of the range, inclusive.", + "max": "max is the end of the range, inclusive.", +} + +func (HostPortRange) SwaggerDoc() map[string]string { + return map_HostPortRange +} + +var map_IDRange = map[string]string{ + "": "ID Range provides a min/max of an allowed range of IDs.", + "min": "Min is the start of the range, inclusive.", + "max": "Max is the end of the range, inclusive.", +} + +func (IDRange) SwaggerDoc() map[string]string { + return map_IDRange +} + +var map_Ingress = map[string]string{ + "": "Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (Ingress) SwaggerDoc() map[string]string { + return map_Ingress +} + +var map_IngressBackend = map[string]string{ + "": "IngressBackend describes all endpoints for a given service and port.", + "serviceName": "Specifies the name of the referenced service.", + "servicePort": "Specifies the port of the referenced service.", +} + +func (IngressBackend) SwaggerDoc() map[string]string { + return map_IngressBackend +} + +var map_IngressList = map[string]string{ + "": "IngressList is a collection of Ingress.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of Ingress.", +} + +func (IngressList) SwaggerDoc() map[string]string { + return map_IngressList +} + +var map_IngressRule = map[string]string{ + "": "IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.", + "host": "Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n\t IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.", +} + +func (IngressRule) SwaggerDoc() map[string]string { + return map_IngressRule +} + +var map_IngressRuleValue = map[string]string{ + "": "IngressRuleValue represents a rule to apply against incoming requests. If the rule is satisfied, the request is routed to the specified backend. Currently mixing different types of rules in a single Ingress is disallowed, so exactly one of the following must be set.", +} + +func (IngressRuleValue) SwaggerDoc() map[string]string { + return map_IngressRuleValue +} + +var map_IngressSpec = map[string]string{ + "": "IngressSpec describes the Ingress the user wishes to exist.", + "backend": "A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default.", + "tls": "TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.", + "rules": "A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.", +} + +func (IngressSpec) SwaggerDoc() map[string]string { + return map_IngressSpec +} + +var map_IngressStatus = map[string]string{ + "": "IngressStatus describe the current state of the Ingress.", + "loadBalancer": "LoadBalancer contains the current status of the load-balancer.", +} + +func (IngressStatus) SwaggerDoc() map[string]string { + return map_IngressStatus +} + +var map_IngressTLS = map[string]string{ + "": "IngressTLS describes the transport layer security associated with an Ingress.", + "hosts": "Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.", + "secretName": "SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.", +} + +func (IngressTLS) SwaggerDoc() map[string]string { + return map_IngressTLS +} + +var map_NetworkPolicy = map[string]string{ + "": "NetworkPolicy describes what network traffic is allowed for a set of Pods", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior for this NetworkPolicy.", +} + +func (NetworkPolicy) SwaggerDoc() map[string]string { + return map_NetworkPolicy +} + +var map_NetworkPolicyIngressRule = map[string]string{ + "": "This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.", + "ports": "List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.", + "from": "List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.", +} + +func (NetworkPolicyIngressRule) SwaggerDoc() map[string]string { + return map_NetworkPolicyIngressRule +} + +var map_NetworkPolicyList = map[string]string{ + "": "Network Policy List is a list of NetworkPolicy objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (NetworkPolicyList) SwaggerDoc() map[string]string { + return map_NetworkPolicyList +} + +var map_NetworkPolicyPeer = map[string]string{ + "podSelector": "This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. If present but empty, this selector selects all pods in this namespace.", + "namespaceSelector": "Selects Namespaces using cluster scoped-labels. This matches all pods in all namespaces selected by this label selector. This field follows standard label selector semantics. If present but empty, this selector selects all namespaces.", +} + +func (NetworkPolicyPeer) SwaggerDoc() map[string]string { + return map_NetworkPolicyPeer +} + +var map_NetworkPolicyPort = map[string]string{ + "protocol": "Optional. The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP.", + "port": "If specified, the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.", +} + +func (NetworkPolicyPort) SwaggerDoc() map[string]string { + return map_NetworkPolicyPort +} + +var map_NetworkPolicySpec = map[string]string{ + "podSelector": "Selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.", + "ingress": "List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).", +} + +func (NetworkPolicySpec) SwaggerDoc() map[string]string { + return map_NetworkPolicySpec +} + +var map_PodSecurityPolicy = map[string]string{ + "": "Pod Security Policy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "spec defines the policy enforced.", +} + +func (PodSecurityPolicy) SwaggerDoc() map[string]string { + return map_PodSecurityPolicy +} + +var map_PodSecurityPolicyList = map[string]string{ + "": "Pod Security Policy List is a list of PodSecurityPolicy objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (PodSecurityPolicyList) SwaggerDoc() map[string]string { + return map_PodSecurityPolicyList +} + +var map_PodSecurityPolicySpec = map[string]string{ + "": "Pod Security Policy Spec defines the policy enforced.", + "privileged": "privileged determines if a pod can request to be run as privileged.", + "defaultAddCapabilities": "DefaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capabiility in both DefaultAddCapabilities and RequiredDropCapabilities.", + "requiredDropCapabilities": "RequiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.", + "allowedCapabilities": "AllowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities.", + "volumes": "volumes is a white list of allowed volume plugins. Empty indicates that all plugins may be used.", + "hostNetwork": "hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.", + "hostPorts": "hostPorts determines which host port ranges are allowed to be exposed.", + "hostPID": "hostPID determines if the policy allows the use of HostPID in the pod spec.", + "hostIPC": "hostIPC determines if the policy allows the use of HostIPC in the pod spec.", + "seLinux": "seLinux is the strategy that will dictate the allowable labels that may be set.", + "runAsUser": "runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set.", + "supplementalGroups": "SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext.", + "fsGroup": "FSGroup is the strategy that will dictate what fs group is used by the SecurityContext.", + "readOnlyRootFilesystem": "ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.", +} + +func (PodSecurityPolicySpec) SwaggerDoc() map[string]string { + return map_PodSecurityPolicySpec +} + +var map_ReplicaSet = map[string]string{ + "": "ReplicaSet represents the configuration of a ReplicaSet.", + "metadata": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", + "status": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", +} + +func (ReplicaSet) SwaggerDoc() map[string]string { + return map_ReplicaSet +} + +var map_ReplicaSetCondition = map[string]string{ + "": "ReplicaSetCondition describes the state of a replica set at a certain point.", + "type": "Type of replica set condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastTransitionTime": "The last time the condition transitioned from one status to another.", + "reason": "The reason for the condition's last transition.", + "message": "A human readable message indicating details about the transition.", +} + +func (ReplicaSetCondition) SwaggerDoc() map[string]string { + return map_ReplicaSetCondition +} + +var map_ReplicaSetList = map[string]string{ + "": "ReplicaSetList is a collection of ReplicaSets.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "items": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", +} + +func (ReplicaSetList) SwaggerDoc() map[string]string { + return map_ReplicaSetList +} + +var map_ReplicaSetSpec = map[string]string{ + "": "ReplicaSetSpec is the specification of a ReplicaSet.", + "replicas": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "selector": "Selector is a label query over pods that should match the replica count. If the selector is empty, it is defaulted to the labels present on the pod template. Label keys and values that must match in order to be controlled by this replica set. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", +} + +func (ReplicaSetSpec) SwaggerDoc() map[string]string { + return map_ReplicaSetSpec +} + +var map_ReplicaSetStatus = map[string]string{ + "": "ReplicaSetStatus represents the current status of a ReplicaSet.", + "replicas": "Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "fullyLabeledReplicas": "The number of pods that have labels matching the labels of the pod template of the replicaset.", + "readyReplicas": "The number of ready replicas for this replica set.", + "availableReplicas": "The number of available replicas (ready for at least minReadySeconds) for this replica set.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", + "conditions": "Represents the latest available observations of a replica set's current state.", +} + +func (ReplicaSetStatus) SwaggerDoc() map[string]string { + return map_ReplicaSetStatus +} + +var map_ReplicationControllerDummy = map[string]string{ + "": "Dummy definition", +} + +func (ReplicationControllerDummy) SwaggerDoc() map[string]string { + return map_ReplicationControllerDummy +} + +var map_RollbackConfig = map[string]string{ + "revision": "The revision to rollback to. If set to 0, rollback to the last revision.", +} + +func (RollbackConfig) SwaggerDoc() map[string]string { + return map_RollbackConfig +} + +var map_RollingUpdateDaemonSet = map[string]string{ + "": "Spec to control the desired behavior of daemon set rolling update.", + "maxUnavailable": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.", +} + +func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string { + return map_RollingUpdateDaemonSet +} + +var map_RollingUpdateDeployment = map[string]string{ + "": "Spec to control the desired behavior of rolling update.", + "maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1 is used. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.", + "maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. By default, a value of 1 is used. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.", +} + +func (RollingUpdateDeployment) SwaggerDoc() map[string]string { + return map_RollingUpdateDeployment +} + +var map_RunAsUserStrategyOptions = map[string]string{ + "": "Run A sUser Strategy Options defines the strategy type and any options used to create the strategy.", + "rule": "Rule is the strategy that will dictate the allowable RunAsUser values that may be set.", + "ranges": "Ranges are the allowed ranges of uids that may be used.", +} + +func (RunAsUserStrategyOptions) SwaggerDoc() map[string]string { + return map_RunAsUserStrategyOptions +} + +var map_SELinuxStrategyOptions = map[string]string{ + "": "SELinux Strategy Options defines the strategy type and any options used to create the strategy.", + "rule": "type is the strategy that will dictate the allowable labels that may be set.", + "seLinuxOptions": "seLinuxOptions required to run as; required for MustRunAs More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md", +} + +func (SELinuxStrategyOptions) SwaggerDoc() map[string]string { + return map_SELinuxStrategyOptions +} + +var map_Scale = map[string]string{ + "": "represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.", +} + +func (Scale) SwaggerDoc() map[string]string { + return map_Scale +} + +var map_ScaleSpec = map[string]string{ + "": "describes the attributes of a scale subresource", + "replicas": "desired number of instances for the scaled object.", +} + +func (ScaleSpec) SwaggerDoc() map[string]string { + return map_ScaleSpec +} + +var map_ScaleStatus = map[string]string{ + "": "represents the current status of a scale subresource.", + "replicas": "actual number of observed instances of the scaled object.", + "selector": "label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors", + "targetSelector": "label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +var map_SupplementalGroupsStrategyOptions = map[string]string{ + "": "SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.", + "rule": "Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.", + "ranges": "Ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end.", +} + +func (SupplementalGroupsStrategyOptions) SwaggerDoc() map[string]string { + return map_SupplementalGroupsStrategyOptions +} + +var map_ThirdPartyResource = map[string]string{ + "": "A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource types to the API. It consists of one or more Versions of the api.", + "metadata": "Standard object metadata", + "description": "Description is the description of this object.", + "versions": "Versions are versions for this third party object", +} + +func (ThirdPartyResource) SwaggerDoc() map[string]string { + return map_ThirdPartyResource +} + +var map_ThirdPartyResourceData = map[string]string{ + "": "An internal object, used for versioned storage in etcd. Not exposed to the end user.", + "metadata": "Standard object metadata.", + "data": "Data is the raw JSON data for this data.", +} + +func (ThirdPartyResourceData) SwaggerDoc() map[string]string { + return map_ThirdPartyResourceData +} + +var map_ThirdPartyResourceDataList = map[string]string{ + "": "ThirdPartyResrouceDataList is a list of ThirdPartyResourceData.", + "metadata": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of ThirdpartyResourceData.", +} + +func (ThirdPartyResourceDataList) SwaggerDoc() map[string]string { + return map_ThirdPartyResourceDataList +} + +var map_ThirdPartyResourceList = map[string]string{ + "": "ThirdPartyResourceList is a list of ThirdPartyResources.", + "metadata": "Standard list metadata.", + "items": "Items is the list of ThirdPartyResources.", +} + +func (ThirdPartyResourceList) SwaggerDoc() map[string]string { + return map_ThirdPartyResourceList +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..efb81430a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.conversion.go @@ -0,0 +1,1714 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api "k8s.io/client-go/pkg/api" + api_v1 "k8s.io/client-go/pkg/api/v1" + extensions "k8s.io/client-go/pkg/apis/extensions" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_APIVersion_To_extensions_APIVersion, + Convert_extensions_APIVersion_To_v1beta1_APIVersion, + Convert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus, + Convert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus, + Convert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList, + Convert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList, + Convert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget, + Convert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget, + Convert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList, + Convert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList, + Convert_v1beta1_DaemonSet_To_extensions_DaemonSet, + Convert_extensions_DaemonSet_To_v1beta1_DaemonSet, + Convert_v1beta1_DaemonSetList_To_extensions_DaemonSetList, + Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList, + Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec, + Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec, + Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus, + Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus, + Convert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy, + Convert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy, + Convert_v1beta1_Deployment_To_extensions_Deployment, + Convert_extensions_Deployment_To_v1beta1_Deployment, + Convert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition, + Convert_extensions_DeploymentCondition_To_v1beta1_DeploymentCondition, + Convert_v1beta1_DeploymentList_To_extensions_DeploymentList, + Convert_extensions_DeploymentList_To_v1beta1_DeploymentList, + Convert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback, + Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback, + Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec, + Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec, + Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus, + Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus, + Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy, + Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy, + Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions, + Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions, + Convert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath, + Convert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath, + Convert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue, + Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue, + Convert_v1beta1_HostPortRange_To_extensions_HostPortRange, + Convert_extensions_HostPortRange_To_v1beta1_HostPortRange, + Convert_v1beta1_Ingress_To_extensions_Ingress, + Convert_extensions_Ingress_To_v1beta1_Ingress, + Convert_v1beta1_IngressBackend_To_extensions_IngressBackend, + Convert_extensions_IngressBackend_To_v1beta1_IngressBackend, + Convert_v1beta1_IngressList_To_extensions_IngressList, + Convert_extensions_IngressList_To_v1beta1_IngressList, + Convert_v1beta1_IngressRule_To_extensions_IngressRule, + Convert_extensions_IngressRule_To_v1beta1_IngressRule, + Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue, + Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue, + Convert_v1beta1_IngressSpec_To_extensions_IngressSpec, + Convert_extensions_IngressSpec_To_v1beta1_IngressSpec, + Convert_v1beta1_IngressStatus_To_extensions_IngressStatus, + Convert_extensions_IngressStatus_To_v1beta1_IngressStatus, + Convert_v1beta1_IngressTLS_To_extensions_IngressTLS, + Convert_extensions_IngressTLS_To_v1beta1_IngressTLS, + Convert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy, + Convert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy, + Convert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule, + Convert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule, + Convert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList, + Convert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList, + Convert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer, + Convert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer, + Convert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort, + Convert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort, + Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec, + Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec, + Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy, + Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy, + Convert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList, + Convert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList, + Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec, + Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec, + Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet, + Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet, + Convert_v1beta1_ReplicaSetCondition_To_extensions_ReplicaSetCondition, + Convert_extensions_ReplicaSetCondition_To_v1beta1_ReplicaSetCondition, + Convert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList, + Convert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList, + Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec, + Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec, + Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus, + Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus, + Convert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy, + Convert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy, + Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig, + Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig, + Convert_v1beta1_RollingUpdateDaemonSet_To_extensions_RollingUpdateDaemonSet, + Convert_extensions_RollingUpdateDaemonSet_To_v1beta1_RollingUpdateDaemonSet, + Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment, + Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment, + Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions, + Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions, + Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions, + Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions, + Convert_v1beta1_Scale_To_extensions_Scale, + Convert_extensions_Scale_To_v1beta1_Scale, + Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec, + Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec, + Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus, + Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus, + Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions, + Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions, + Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource, + Convert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource, + Convert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData, + Convert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData, + Convert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList, + Convert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList, + Convert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList, + Convert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList, + ) +} + +func autoConvert_v1beta1_APIVersion_To_extensions_APIVersion(in *APIVersion, out *extensions.APIVersion, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +// Convert_v1beta1_APIVersion_To_extensions_APIVersion is an autogenerated conversion function. +func Convert_v1beta1_APIVersion_To_extensions_APIVersion(in *APIVersion, out *extensions.APIVersion, s conversion.Scope) error { + return autoConvert_v1beta1_APIVersion_To_extensions_APIVersion(in, out, s) +} + +func autoConvert_extensions_APIVersion_To_v1beta1_APIVersion(in *extensions.APIVersion, out *APIVersion, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +// Convert_extensions_APIVersion_To_v1beta1_APIVersion is an autogenerated conversion function. +func Convert_extensions_APIVersion_To_v1beta1_APIVersion(in *extensions.APIVersion, out *APIVersion, s conversion.Scope) error { + return autoConvert_extensions_APIVersion_To_v1beta1_APIVersion(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(in *CustomMetricCurrentStatus, out *extensions.CustomMetricCurrentStatus, s conversion.Scope) error { + out.Name = in.Name + out.CurrentValue = in.CurrentValue + return nil +} + +// Convert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus is an autogenerated conversion function. +func Convert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(in *CustomMetricCurrentStatus, out *extensions.CustomMetricCurrentStatus, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(in, out, s) +} + +func autoConvert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(in *extensions.CustomMetricCurrentStatus, out *CustomMetricCurrentStatus, s conversion.Scope) error { + out.Name = in.Name + out.CurrentValue = in.CurrentValue + return nil +} + +// Convert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus is an autogenerated conversion function. +func Convert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(in *extensions.CustomMetricCurrentStatus, out *CustomMetricCurrentStatus, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList(in *CustomMetricCurrentStatusList, out *extensions.CustomMetricCurrentStatusList, s conversion.Scope) error { + out.Items = *(*[]extensions.CustomMetricCurrentStatus)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList is an autogenerated conversion function. +func Convert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList(in *CustomMetricCurrentStatusList, out *extensions.CustomMetricCurrentStatusList, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList(in, out, s) +} + +func autoConvert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList(in *extensions.CustomMetricCurrentStatusList, out *CustomMetricCurrentStatusList, s conversion.Scope) error { + if in.Items == nil { + out.Items = make([]CustomMetricCurrentStatus, 0) + } else { + out.Items = *(*[]CustomMetricCurrentStatus)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList is an autogenerated conversion function. +func Convert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList(in *extensions.CustomMetricCurrentStatusList, out *CustomMetricCurrentStatusList, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(in *CustomMetricTarget, out *extensions.CustomMetricTarget, s conversion.Scope) error { + out.Name = in.Name + out.TargetValue = in.TargetValue + return nil +} + +// Convert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget is an autogenerated conversion function. +func Convert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(in *CustomMetricTarget, out *extensions.CustomMetricTarget, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(in, out, s) +} + +func autoConvert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(in *extensions.CustomMetricTarget, out *CustomMetricTarget, s conversion.Scope) error { + out.Name = in.Name + out.TargetValue = in.TargetValue + return nil +} + +// Convert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget is an autogenerated conversion function. +func Convert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(in *extensions.CustomMetricTarget, out *CustomMetricTarget, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList(in *CustomMetricTargetList, out *extensions.CustomMetricTargetList, s conversion.Scope) error { + out.Items = *(*[]extensions.CustomMetricTarget)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList is an autogenerated conversion function. +func Convert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList(in *CustomMetricTargetList, out *extensions.CustomMetricTargetList, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList(in, out, s) +} + +func autoConvert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList(in *extensions.CustomMetricTargetList, out *CustomMetricTargetList, s conversion.Scope) error { + if in.Items == nil { + out.Items = make([]CustomMetricTarget, 0) + } else { + out.Items = *(*[]CustomMetricTarget)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList is an autogenerated conversion function. +func Convert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList(in *extensions.CustomMetricTargetList, out *CustomMetricTargetList, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList(in, out, s) +} + +func autoConvert_v1beta1_DaemonSet_To_extensions_DaemonSet(in *DaemonSet, out *extensions.DaemonSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_DaemonSet_To_extensions_DaemonSet is an autogenerated conversion function. +func Convert_v1beta1_DaemonSet_To_extensions_DaemonSet(in *DaemonSet, out *extensions.DaemonSet, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSet_To_extensions_DaemonSet(in, out, s) +} + +func autoConvert_extensions_DaemonSet_To_v1beta1_DaemonSet(in *extensions.DaemonSet, out *DaemonSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_DaemonSet_To_v1beta1_DaemonSet is an autogenerated conversion function. +func Convert_extensions_DaemonSet_To_v1beta1_DaemonSet(in *extensions.DaemonSet, out *DaemonSet, s conversion.Scope) error { + return autoConvert_extensions_DaemonSet_To_v1beta1_DaemonSet(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetList_To_extensions_DaemonSetList(in *DaemonSetList, out *extensions.DaemonSetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.DaemonSet, len(*in)) + for i := range *in { + if err := Convert_v1beta1_DaemonSet_To_extensions_DaemonSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1beta1_DaemonSetList_To_extensions_DaemonSetList is an autogenerated conversion function. +func Convert_v1beta1_DaemonSetList_To_extensions_DaemonSetList(in *DaemonSetList, out *extensions.DaemonSetList, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetList_To_extensions_DaemonSetList(in, out, s) +} + +func autoConvert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in *extensions.DaemonSetList, out *DaemonSetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DaemonSet, len(*in)) + for i := range *in { + if err := Convert_extensions_DaemonSet_To_v1beta1_DaemonSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]DaemonSet, 0) + } + return nil +} + +// Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList is an autogenerated conversion function. +func Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in *extensions.DaemonSetList, out *DaemonSetList, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.TemplateGeneration = in.TemplateGeneration + out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit)) + return nil +} + +// Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec is an autogenerated conversion function. +func Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in, out, s) +} + +func autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *DaemonSetSpec, s conversion.Scope) error { + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.TemplateGeneration = in.TemplateGeneration + out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit)) + return nil +} + +// Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec is an autogenerated conversion function. +func Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *DaemonSetSpec, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(in *DaemonSetStatus, out *extensions.DaemonSetStatus, s conversion.Scope) error { + out.CurrentNumberScheduled = in.CurrentNumberScheduled + out.NumberMisscheduled = in.NumberMisscheduled + out.DesiredNumberScheduled = in.DesiredNumberScheduled + out.NumberReady = in.NumberReady + out.ObservedGeneration = in.ObservedGeneration + out.UpdatedNumberScheduled = in.UpdatedNumberScheduled + out.NumberAvailable = in.NumberAvailable + out.NumberUnavailable = in.NumberUnavailable + out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount)) + return nil +} + +// Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus is an autogenerated conversion function. +func Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(in *DaemonSetStatus, out *extensions.DaemonSetStatus, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(in, out, s) +} + +func autoConvert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(in *extensions.DaemonSetStatus, out *DaemonSetStatus, s conversion.Scope) error { + out.CurrentNumberScheduled = in.CurrentNumberScheduled + out.NumberMisscheduled = in.NumberMisscheduled + out.DesiredNumberScheduled = in.DesiredNumberScheduled + out.NumberReady = in.NumberReady + out.ObservedGeneration = in.ObservedGeneration + out.UpdatedNumberScheduled = in.UpdatedNumberScheduled + out.NumberAvailable = in.NumberAvailable + out.NumberUnavailable = in.NumberUnavailable + out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount)) + return nil +} + +// Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus is an autogenerated conversion function. +func Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(in *extensions.DaemonSetStatus, out *DaemonSetStatus, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(in *DaemonSetUpdateStrategy, out *extensions.DaemonSetUpdateStrategy, s conversion.Scope) error { + out.Type = extensions.DaemonSetUpdateStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(extensions.RollingUpdateDaemonSet) + if err := Convert_v1beta1_RollingUpdateDaemonSet_To_extensions_RollingUpdateDaemonSet(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +// Convert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy is an autogenerated conversion function. +func Convert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(in *DaemonSetUpdateStrategy, out *extensions.DaemonSetUpdateStrategy, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetUpdateStrategy_To_extensions_DaemonSetUpdateStrategy(in, out, s) +} + +func autoConvert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy(in *extensions.DaemonSetUpdateStrategy, out *DaemonSetUpdateStrategy, s conversion.Scope) error { + out.Type = DaemonSetUpdateStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDaemonSet) + if err := Convert_extensions_RollingUpdateDaemonSet_To_v1beta1_RollingUpdateDaemonSet(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +// Convert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy is an autogenerated conversion function. +func Convert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy(in *extensions.DaemonSetUpdateStrategy, out *DaemonSetUpdateStrategy, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetUpdateStrategy_To_v1beta1_DaemonSetUpdateStrategy(in, out, s) +} + +func autoConvert_v1beta1_Deployment_To_extensions_Deployment(in *Deployment, out *extensions.Deployment, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_Deployment_To_extensions_Deployment is an autogenerated conversion function. +func Convert_v1beta1_Deployment_To_extensions_Deployment(in *Deployment, out *extensions.Deployment, s conversion.Scope) error { + return autoConvert_v1beta1_Deployment_To_extensions_Deployment(in, out, s) +} + +func autoConvert_extensions_Deployment_To_v1beta1_Deployment(in *extensions.Deployment, out *Deployment, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_Deployment_To_v1beta1_Deployment is an autogenerated conversion function. +func Convert_extensions_Deployment_To_v1beta1_Deployment(in *extensions.Deployment, out *Deployment, s conversion.Scope) error { + return autoConvert_extensions_Deployment_To_v1beta1_Deployment(in, out, s) +} + +func autoConvert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition(in *DeploymentCondition, out *extensions.DeploymentCondition, s conversion.Scope) error { + out.Type = extensions.DeploymentConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.LastUpdateTime = in.LastUpdateTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition is an autogenerated conversion function. +func Convert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition(in *DeploymentCondition, out *extensions.DeploymentCondition, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentCondition_To_extensions_DeploymentCondition(in, out, s) +} + +func autoConvert_extensions_DeploymentCondition_To_v1beta1_DeploymentCondition(in *extensions.DeploymentCondition, out *DeploymentCondition, s conversion.Scope) error { + out.Type = DeploymentConditionType(in.Type) + out.Status = api_v1.ConditionStatus(in.Status) + out.LastUpdateTime = in.LastUpdateTime + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_extensions_DeploymentCondition_To_v1beta1_DeploymentCondition is an autogenerated conversion function. +func Convert_extensions_DeploymentCondition_To_v1beta1_DeploymentCondition(in *extensions.DeploymentCondition, out *DeploymentCondition, s conversion.Scope) error { + return autoConvert_extensions_DeploymentCondition_To_v1beta1_DeploymentCondition(in, out, s) +} + +func autoConvert_v1beta1_DeploymentList_To_extensions_DeploymentList(in *DeploymentList, out *extensions.DeploymentList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.Deployment, len(*in)) + for i := range *in { + if err := Convert_v1beta1_Deployment_To_extensions_Deployment(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1beta1_DeploymentList_To_extensions_DeploymentList is an autogenerated conversion function. +func Convert_v1beta1_DeploymentList_To_extensions_DeploymentList(in *DeploymentList, out *extensions.DeploymentList, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentList_To_extensions_DeploymentList(in, out, s) +} + +func autoConvert_extensions_DeploymentList_To_v1beta1_DeploymentList(in *extensions.DeploymentList, out *DeploymentList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := Convert_extensions_Deployment_To_v1beta1_Deployment(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]Deployment, 0) + } + return nil +} + +// Convert_extensions_DeploymentList_To_v1beta1_DeploymentList is an autogenerated conversion function. +func Convert_extensions_DeploymentList_To_v1beta1_DeploymentList(in *extensions.DeploymentList, out *DeploymentList, s conversion.Scope) error { + return autoConvert_extensions_DeploymentList_To_v1beta1_DeploymentList(in, out, s) +} + +func autoConvert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in *DeploymentRollback, out *extensions.DeploymentRollback, s conversion.Scope) error { + out.Name = in.Name + out.UpdatedAnnotations = *(*map[string]string)(unsafe.Pointer(&in.UpdatedAnnotations)) + if err := Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback is an autogenerated conversion function. +func Convert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in *DeploymentRollback, out *extensions.DeploymentRollback, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in, out, s) +} + +func autoConvert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in *extensions.DeploymentRollback, out *DeploymentRollback, s conversion.Scope) error { + out.Name = in.Name + out.UpdatedAnnotations = *(*map[string]string)(unsafe.Pointer(&in.UpdatedAnnotations)) + if err := Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback is an autogenerated conversion function. +func Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in *extensions.DeploymentRollback, out *DeploymentRollback, s conversion.Scope) error { + return autoConvert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in, out, s) +} + +func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { + if err := v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit)) + out.Paused = in.Paused + out.RollbackTo = (*extensions.RollbackConfig)(unsafe.Pointer(in.RollbackTo)) + out.ProgressDeadlineSeconds = (*int32)(unsafe.Pointer(in.ProgressDeadlineSeconds)) + return nil +} + +func autoConvert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *DeploymentSpec, s conversion.Scope) error { + if err := v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.RevisionHistoryLimit = (*int32)(unsafe.Pointer(in.RevisionHistoryLimit)) + out.Paused = in.Paused + out.RollbackTo = (*RollbackConfig)(unsafe.Pointer(in.RollbackTo)) + out.ProgressDeadlineSeconds = (*int32)(unsafe.Pointer(in.ProgressDeadlineSeconds)) + return nil +} + +func autoConvert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in *DeploymentStatus, out *extensions.DeploymentStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = in.Replicas + out.UpdatedReplicas = in.UpdatedReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.UnavailableReplicas = in.UnavailableReplicas + out.Conditions = *(*[]extensions.DeploymentCondition)(unsafe.Pointer(&in.Conditions)) + out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount)) + return nil +} + +// Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus is an autogenerated conversion function. +func Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in *DeploymentStatus, out *extensions.DeploymentStatus, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in, out, s) +} + +func autoConvert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in *extensions.DeploymentStatus, out *DeploymentStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = in.Replicas + out.UpdatedReplicas = in.UpdatedReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.UnavailableReplicas = in.UnavailableReplicas + out.Conditions = *(*[]DeploymentCondition)(unsafe.Pointer(&in.Conditions)) + out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount)) + return nil +} + +// Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus is an autogenerated conversion function. +func Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in *extensions.DeploymentStatus, out *DeploymentStatus, s conversion.Scope) error { + return autoConvert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in, out, s) +} + +func autoConvert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(in *DeploymentStrategy, out *extensions.DeploymentStrategy, s conversion.Scope) error { + out.Type = extensions.DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(extensions.RollingUpdateDeployment) + if err := Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func autoConvert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(in *extensions.DeploymentStrategy, out *DeploymentStrategy, s conversion.Scope) error { + out.Type = DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + if err := Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func autoConvert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(in *FSGroupStrategyOptions, out *extensions.FSGroupStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.FSGroupStrategyType(in.Rule) + out.Ranges = *(*[]extensions.GroupIDRange)(unsafe.Pointer(&in.Ranges)) + return nil +} + +// Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions is an autogenerated conversion function. +func Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(in *FSGroupStrategyOptions, out *extensions.FSGroupStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(in, out, s) +} + +func autoConvert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(in *extensions.FSGroupStrategyOptions, out *FSGroupStrategyOptions, s conversion.Scope) error { + out.Rule = FSGroupStrategyType(in.Rule) + out.Ranges = *(*[]IDRange)(unsafe.Pointer(&in.Ranges)) + return nil +} + +// Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions is an autogenerated conversion function. +func Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(in *extensions.FSGroupStrategyOptions, out *FSGroupStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(in *HTTPIngressPath, out *extensions.HTTPIngressPath, s conversion.Scope) error { + out.Path = in.Path + if err := Convert_v1beta1_IngressBackend_To_extensions_IngressBackend(&in.Backend, &out.Backend, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath is an autogenerated conversion function. +func Convert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(in *HTTPIngressPath, out *extensions.HTTPIngressPath, s conversion.Scope) error { + return autoConvert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(in, out, s) +} + +func autoConvert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(in *extensions.HTTPIngressPath, out *HTTPIngressPath, s conversion.Scope) error { + out.Path = in.Path + if err := Convert_extensions_IngressBackend_To_v1beta1_IngressBackend(&in.Backend, &out.Backend, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath is an autogenerated conversion function. +func Convert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(in *extensions.HTTPIngressPath, out *HTTPIngressPath, s conversion.Scope) error { + return autoConvert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(in, out, s) +} + +func autoConvert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(in *HTTPIngressRuleValue, out *extensions.HTTPIngressRuleValue, s conversion.Scope) error { + out.Paths = *(*[]extensions.HTTPIngressPath)(unsafe.Pointer(&in.Paths)) + return nil +} + +// Convert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue is an autogenerated conversion function. +func Convert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(in *HTTPIngressRuleValue, out *extensions.HTTPIngressRuleValue, s conversion.Scope) error { + return autoConvert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(in, out, s) +} + +func autoConvert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in *extensions.HTTPIngressRuleValue, out *HTTPIngressRuleValue, s conversion.Scope) error { + if in.Paths == nil { + out.Paths = make([]HTTPIngressPath, 0) + } else { + out.Paths = *(*[]HTTPIngressPath)(unsafe.Pointer(&in.Paths)) + } + return nil +} + +// Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue is an autogenerated conversion function. +func Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in *extensions.HTTPIngressRuleValue, out *HTTPIngressRuleValue, s conversion.Scope) error { + return autoConvert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in, out, s) +} + +func autoConvert_v1beta1_HostPortRange_To_extensions_HostPortRange(in *HostPortRange, out *extensions.HostPortRange, s conversion.Scope) error { + out.Min = int(in.Min) + out.Max = int(in.Max) + return nil +} + +// Convert_v1beta1_HostPortRange_To_extensions_HostPortRange is an autogenerated conversion function. +func Convert_v1beta1_HostPortRange_To_extensions_HostPortRange(in *HostPortRange, out *extensions.HostPortRange, s conversion.Scope) error { + return autoConvert_v1beta1_HostPortRange_To_extensions_HostPortRange(in, out, s) +} + +func autoConvert_extensions_HostPortRange_To_v1beta1_HostPortRange(in *extensions.HostPortRange, out *HostPortRange, s conversion.Scope) error { + out.Min = int32(in.Min) + out.Max = int32(in.Max) + return nil +} + +// Convert_extensions_HostPortRange_To_v1beta1_HostPortRange is an autogenerated conversion function. +func Convert_extensions_HostPortRange_To_v1beta1_HostPortRange(in *extensions.HostPortRange, out *HostPortRange, s conversion.Scope) error { + return autoConvert_extensions_HostPortRange_To_v1beta1_HostPortRange(in, out, s) +} + +func autoConvert_v1beta1_Ingress_To_extensions_Ingress(in *Ingress, out *extensions.Ingress, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_IngressSpec_To_extensions_IngressSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_IngressStatus_To_extensions_IngressStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_Ingress_To_extensions_Ingress is an autogenerated conversion function. +func Convert_v1beta1_Ingress_To_extensions_Ingress(in *Ingress, out *extensions.Ingress, s conversion.Scope) error { + return autoConvert_v1beta1_Ingress_To_extensions_Ingress(in, out, s) +} + +func autoConvert_extensions_Ingress_To_v1beta1_Ingress(in *extensions.Ingress, out *Ingress, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_IngressSpec_To_v1beta1_IngressSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_IngressStatus_To_v1beta1_IngressStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_Ingress_To_v1beta1_Ingress is an autogenerated conversion function. +func Convert_extensions_Ingress_To_v1beta1_Ingress(in *extensions.Ingress, out *Ingress, s conversion.Scope) error { + return autoConvert_extensions_Ingress_To_v1beta1_Ingress(in, out, s) +} + +func autoConvert_v1beta1_IngressBackend_To_extensions_IngressBackend(in *IngressBackend, out *extensions.IngressBackend, s conversion.Scope) error { + out.ServiceName = in.ServiceName + out.ServicePort = in.ServicePort + return nil +} + +// Convert_v1beta1_IngressBackend_To_extensions_IngressBackend is an autogenerated conversion function. +func Convert_v1beta1_IngressBackend_To_extensions_IngressBackend(in *IngressBackend, out *extensions.IngressBackend, s conversion.Scope) error { + return autoConvert_v1beta1_IngressBackend_To_extensions_IngressBackend(in, out, s) +} + +func autoConvert_extensions_IngressBackend_To_v1beta1_IngressBackend(in *extensions.IngressBackend, out *IngressBackend, s conversion.Scope) error { + out.ServiceName = in.ServiceName + out.ServicePort = in.ServicePort + return nil +} + +// Convert_extensions_IngressBackend_To_v1beta1_IngressBackend is an autogenerated conversion function. +func Convert_extensions_IngressBackend_To_v1beta1_IngressBackend(in *extensions.IngressBackend, out *IngressBackend, s conversion.Scope) error { + return autoConvert_extensions_IngressBackend_To_v1beta1_IngressBackend(in, out, s) +} + +func autoConvert_v1beta1_IngressList_To_extensions_IngressList(in *IngressList, out *extensions.IngressList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]extensions.Ingress)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_IngressList_To_extensions_IngressList is an autogenerated conversion function. +func Convert_v1beta1_IngressList_To_extensions_IngressList(in *IngressList, out *extensions.IngressList, s conversion.Scope) error { + return autoConvert_v1beta1_IngressList_To_extensions_IngressList(in, out, s) +} + +func autoConvert_extensions_IngressList_To_v1beta1_IngressList(in *extensions.IngressList, out *IngressList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Ingress, 0) + } else { + out.Items = *(*[]Ingress)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_extensions_IngressList_To_v1beta1_IngressList is an autogenerated conversion function. +func Convert_extensions_IngressList_To_v1beta1_IngressList(in *extensions.IngressList, out *IngressList, s conversion.Scope) error { + return autoConvert_extensions_IngressList_To_v1beta1_IngressList(in, out, s) +} + +func autoConvert_v1beta1_IngressRule_To_extensions_IngressRule(in *IngressRule, out *extensions.IngressRule, s conversion.Scope) error { + out.Host = in.Host + if err := Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_IngressRule_To_extensions_IngressRule is an autogenerated conversion function. +func Convert_v1beta1_IngressRule_To_extensions_IngressRule(in *IngressRule, out *extensions.IngressRule, s conversion.Scope) error { + return autoConvert_v1beta1_IngressRule_To_extensions_IngressRule(in, out, s) +} + +func autoConvert_extensions_IngressRule_To_v1beta1_IngressRule(in *extensions.IngressRule, out *IngressRule, s conversion.Scope) error { + out.Host = in.Host + if err := Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_IngressRule_To_v1beta1_IngressRule is an autogenerated conversion function. +func Convert_extensions_IngressRule_To_v1beta1_IngressRule(in *extensions.IngressRule, out *IngressRule, s conversion.Scope) error { + return autoConvert_extensions_IngressRule_To_v1beta1_IngressRule(in, out, s) +} + +func autoConvert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(in *IngressRuleValue, out *extensions.IngressRuleValue, s conversion.Scope) error { + out.HTTP = (*extensions.HTTPIngressRuleValue)(unsafe.Pointer(in.HTTP)) + return nil +} + +// Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue is an autogenerated conversion function. +func Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(in *IngressRuleValue, out *extensions.IngressRuleValue, s conversion.Scope) error { + return autoConvert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(in, out, s) +} + +func autoConvert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(in *extensions.IngressRuleValue, out *IngressRuleValue, s conversion.Scope) error { + out.HTTP = (*HTTPIngressRuleValue)(unsafe.Pointer(in.HTTP)) + return nil +} + +// Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue is an autogenerated conversion function. +func Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(in *extensions.IngressRuleValue, out *IngressRuleValue, s conversion.Scope) error { + return autoConvert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(in, out, s) +} + +func autoConvert_v1beta1_IngressSpec_To_extensions_IngressSpec(in *IngressSpec, out *extensions.IngressSpec, s conversion.Scope) error { + out.Backend = (*extensions.IngressBackend)(unsafe.Pointer(in.Backend)) + out.TLS = *(*[]extensions.IngressTLS)(unsafe.Pointer(&in.TLS)) + out.Rules = *(*[]extensions.IngressRule)(unsafe.Pointer(&in.Rules)) + return nil +} + +// Convert_v1beta1_IngressSpec_To_extensions_IngressSpec is an autogenerated conversion function. +func Convert_v1beta1_IngressSpec_To_extensions_IngressSpec(in *IngressSpec, out *extensions.IngressSpec, s conversion.Scope) error { + return autoConvert_v1beta1_IngressSpec_To_extensions_IngressSpec(in, out, s) +} + +func autoConvert_extensions_IngressSpec_To_v1beta1_IngressSpec(in *extensions.IngressSpec, out *IngressSpec, s conversion.Scope) error { + out.Backend = (*IngressBackend)(unsafe.Pointer(in.Backend)) + out.TLS = *(*[]IngressTLS)(unsafe.Pointer(&in.TLS)) + out.Rules = *(*[]IngressRule)(unsafe.Pointer(&in.Rules)) + return nil +} + +// Convert_extensions_IngressSpec_To_v1beta1_IngressSpec is an autogenerated conversion function. +func Convert_extensions_IngressSpec_To_v1beta1_IngressSpec(in *extensions.IngressSpec, out *IngressSpec, s conversion.Scope) error { + return autoConvert_extensions_IngressSpec_To_v1beta1_IngressSpec(in, out, s) +} + +func autoConvert_v1beta1_IngressStatus_To_extensions_IngressStatus(in *IngressStatus, out *extensions.IngressStatus, s conversion.Scope) error { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.LoadBalancer, &out.LoadBalancer, 0); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_IngressStatus_To_extensions_IngressStatus is an autogenerated conversion function. +func Convert_v1beta1_IngressStatus_To_extensions_IngressStatus(in *IngressStatus, out *extensions.IngressStatus, s conversion.Scope) error { + return autoConvert_v1beta1_IngressStatus_To_extensions_IngressStatus(in, out, s) +} + +func autoConvert_extensions_IngressStatus_To_v1beta1_IngressStatus(in *extensions.IngressStatus, out *IngressStatus, s conversion.Scope) error { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.LoadBalancer, &out.LoadBalancer, 0); err != nil { + return err + } + return nil +} + +// Convert_extensions_IngressStatus_To_v1beta1_IngressStatus is an autogenerated conversion function. +func Convert_extensions_IngressStatus_To_v1beta1_IngressStatus(in *extensions.IngressStatus, out *IngressStatus, s conversion.Scope) error { + return autoConvert_extensions_IngressStatus_To_v1beta1_IngressStatus(in, out, s) +} + +func autoConvert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *extensions.IngressTLS, s conversion.Scope) error { + out.Hosts = *(*[]string)(unsafe.Pointer(&in.Hosts)) + out.SecretName = in.SecretName + return nil +} + +// Convert_v1beta1_IngressTLS_To_extensions_IngressTLS is an autogenerated conversion function. +func Convert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *extensions.IngressTLS, s conversion.Scope) error { + return autoConvert_v1beta1_IngressTLS_To_extensions_IngressTLS(in, out, s) +} + +func autoConvert_extensions_IngressTLS_To_v1beta1_IngressTLS(in *extensions.IngressTLS, out *IngressTLS, s conversion.Scope) error { + out.Hosts = *(*[]string)(unsafe.Pointer(&in.Hosts)) + out.SecretName = in.SecretName + return nil +} + +// Convert_extensions_IngressTLS_To_v1beta1_IngressTLS is an autogenerated conversion function. +func Convert_extensions_IngressTLS_To_v1beta1_IngressTLS(in *extensions.IngressTLS, out *IngressTLS, s conversion.Scope) error { + return autoConvert_extensions_IngressTLS_To_v1beta1_IngressTLS(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(in *NetworkPolicy, out *extensions.NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy is an autogenerated conversion function. +func Convert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(in *NetworkPolicy, out *extensions.NetworkPolicy, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(in, out, s) +} + +func autoConvert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(in *extensions.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy is an autogenerated conversion function. +func Convert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(in *extensions.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *extensions.NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = *(*[]extensions.NetworkPolicyPort)(unsafe.Pointer(&in.Ports)) + out.From = *(*[]extensions.NetworkPolicyPeer)(unsafe.Pointer(&in.From)) + return nil +} + +// Convert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule is an autogenerated conversion function. +func Convert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *extensions.NetworkPolicyIngressRule, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in *extensions.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = *(*[]NetworkPolicyPort)(unsafe.Pointer(&in.Ports)) + out.From = *(*[]NetworkPolicyPeer)(unsafe.Pointer(&in.From)) + return nil +} + +// Convert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule is an autogenerated conversion function. +func Convert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in *extensions.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList(in *NetworkPolicyList, out *extensions.NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]extensions.NetworkPolicy)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList is an autogenerated conversion function. +func Convert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList(in *NetworkPolicyList, out *extensions.NetworkPolicyList, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in *extensions.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]NetworkPolicy, 0) + } else { + out.Items = *(*[]NetworkPolicy)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList is an autogenerated conversion function. +func Convert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in *extensions.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in *NetworkPolicyPeer, out *extensions.NetworkPolicyPeer, s conversion.Scope) error { + out.PodSelector = (*v1.LabelSelector)(unsafe.Pointer(in.PodSelector)) + out.NamespaceSelector = (*v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) + return nil +} + +// Convert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer is an autogenerated conversion function. +func Convert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in *NetworkPolicyPeer, out *extensions.NetworkPolicyPeer, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in *extensions.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + out.PodSelector = (*v1.LabelSelector)(unsafe.Pointer(in.PodSelector)) + out.NamespaceSelector = (*v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) + return nil +} + +// Convert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer is an autogenerated conversion function. +func Convert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in *extensions.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in *NetworkPolicyPort, out *extensions.NetworkPolicyPort, s conversion.Scope) error { + out.Protocol = (*api.Protocol)(unsafe.Pointer(in.Protocol)) + out.Port = (*intstr.IntOrString)(unsafe.Pointer(in.Port)) + return nil +} + +// Convert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort is an autogenerated conversion function. +func Convert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in *NetworkPolicyPort, out *extensions.NetworkPolicyPort, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in *extensions.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + out.Protocol = (*api_v1.Protocol)(unsafe.Pointer(in.Protocol)) + out.Port = (*intstr.IntOrString)(unsafe.Pointer(in.Port)) + return nil +} + +// Convert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort is an autogenerated conversion function. +func Convert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in *extensions.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in *NetworkPolicySpec, out *extensions.NetworkPolicySpec, s conversion.Scope) error { + out.PodSelector = in.PodSelector + out.Ingress = *(*[]extensions.NetworkPolicyIngressRule)(unsafe.Pointer(&in.Ingress)) + return nil +} + +// Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec is an autogenerated conversion function. +func Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in *NetworkPolicySpec, out *extensions.NetworkPolicySpec, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in, out, s) +} + +func autoConvert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in *extensions.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + out.PodSelector = in.PodSelector + out.Ingress = *(*[]NetworkPolicyIngressRule)(unsafe.Pointer(&in.Ingress)) + return nil +} + +// Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec is an autogenerated conversion function. +func Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in *extensions.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in, out, s) +} + +func autoConvert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in *PodSecurityPolicy, out *extensions.PodSecurityPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy is an autogenerated conversion function. +func Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in *PodSecurityPolicy, out *extensions.PodSecurityPolicy, s conversion.Scope) error { + return autoConvert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in, out, s) +} + +func autoConvert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in *extensions.PodSecurityPolicy, out *PodSecurityPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy is an autogenerated conversion function. +func Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in *extensions.PodSecurityPolicy, out *PodSecurityPolicy, s conversion.Scope) error { + return autoConvert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in, out, s) +} + +func autoConvert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList(in *PodSecurityPolicyList, out *extensions.PodSecurityPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.PodSecurityPolicy, len(*in)) + for i := range *in { + if err := Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList is an autogenerated conversion function. +func Convert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList(in *PodSecurityPolicyList, out *extensions.PodSecurityPolicyList, s conversion.Scope) error { + return autoConvert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList(in, out, s) +} + +func autoConvert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(in *extensions.PodSecurityPolicyList, out *PodSecurityPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodSecurityPolicy, len(*in)) + for i := range *in { + if err := Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]PodSecurityPolicy, 0) + } + return nil +} + +// Convert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList is an autogenerated conversion function. +func Convert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(in *extensions.PodSecurityPolicyList, out *PodSecurityPolicyList, s conversion.Scope) error { + return autoConvert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(in, out, s) +} + +func autoConvert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in *PodSecurityPolicySpec, out *extensions.PodSecurityPolicySpec, s conversion.Scope) error { + out.Privileged = in.Privileged + out.DefaultAddCapabilities = *(*[]api.Capability)(unsafe.Pointer(&in.DefaultAddCapabilities)) + out.RequiredDropCapabilities = *(*[]api.Capability)(unsafe.Pointer(&in.RequiredDropCapabilities)) + out.AllowedCapabilities = *(*[]api.Capability)(unsafe.Pointer(&in.AllowedCapabilities)) + out.Volumes = *(*[]extensions.FSType)(unsafe.Pointer(&in.Volumes)) + out.HostNetwork = in.HostNetwork + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]extensions.HostPortRange, len(*in)) + for i := range *in { + if err := Convert_v1beta1_HostPortRange_To_extensions_HostPortRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.HostPorts = nil + } + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if err := Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, s); err != nil { + return err + } + if err := Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, s); err != nil { + return err + } + if err := Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, s); err != nil { + return err + } + if err := Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, s); err != nil { + return err + } + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil +} + +// Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec is an autogenerated conversion function. +func Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in *PodSecurityPolicySpec, out *extensions.PodSecurityPolicySpec, s conversion.Scope) error { + return autoConvert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in, out, s) +} + +func autoConvert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in *extensions.PodSecurityPolicySpec, out *PodSecurityPolicySpec, s conversion.Scope) error { + out.Privileged = in.Privileged + out.DefaultAddCapabilities = *(*[]api_v1.Capability)(unsafe.Pointer(&in.DefaultAddCapabilities)) + out.RequiredDropCapabilities = *(*[]api_v1.Capability)(unsafe.Pointer(&in.RequiredDropCapabilities)) + out.AllowedCapabilities = *(*[]api_v1.Capability)(unsafe.Pointer(&in.AllowedCapabilities)) + out.Volumes = *(*[]FSType)(unsafe.Pointer(&in.Volumes)) + out.HostNetwork = in.HostNetwork + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + for i := range *in { + if err := Convert_extensions_HostPortRange_To_v1beta1_HostPortRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.HostPorts = nil + } + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if err := Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, s); err != nil { + return err + } + if err := Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, s); err != nil { + return err + } + if err := Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, s); err != nil { + return err + } + if err := Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, s); err != nil { + return err + } + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil +} + +// Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec is an autogenerated conversion function. +func Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in *extensions.PodSecurityPolicySpec, out *PodSecurityPolicySpec, s conversion.Scope) error { + return autoConvert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(in *ReplicaSet, out *extensions.ReplicaSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet is an autogenerated conversion function. +func Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(in *ReplicaSet, out *extensions.ReplicaSet, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(in, out, s) +} + +func autoConvert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in *extensions.ReplicaSet, out *ReplicaSet, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet is an autogenerated conversion function. +func Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in *extensions.ReplicaSet, out *ReplicaSet, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in *ReplicaSetCondition, out *extensions.ReplicaSetCondition, s conversion.Scope) error { + out.Type = extensions.ReplicaSetConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1beta1_ReplicaSetCondition_To_extensions_ReplicaSetCondition is an autogenerated conversion function. +func Convert_v1beta1_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in *ReplicaSetCondition, out *extensions.ReplicaSetCondition, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSetCondition_To_extensions_ReplicaSetCondition(in, out, s) +} + +func autoConvert_extensions_ReplicaSetCondition_To_v1beta1_ReplicaSetCondition(in *extensions.ReplicaSetCondition, out *ReplicaSetCondition, s conversion.Scope) error { + out.Type = ReplicaSetConditionType(in.Type) + out.Status = api_v1.ConditionStatus(in.Status) + out.LastTransitionTime = in.LastTransitionTime + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_extensions_ReplicaSetCondition_To_v1beta1_ReplicaSetCondition is an autogenerated conversion function. +func Convert_extensions_ReplicaSetCondition_To_v1beta1_ReplicaSetCondition(in *extensions.ReplicaSetCondition, out *ReplicaSetCondition, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSetCondition_To_v1beta1_ReplicaSetCondition(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList(in *ReplicaSetList, out *extensions.ReplicaSetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.ReplicaSet, len(*in)) + for i := range *in { + if err := Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList is an autogenerated conversion function. +func Convert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList(in *ReplicaSetList, out *extensions.ReplicaSetList, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList(in, out, s) +} + +func autoConvert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in *extensions.ReplicaSetList, out *ReplicaSetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicaSet, len(*in)) + for i := range *in { + if err := Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]ReplicaSet, 0) + } + return nil +} + +// Convert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList is an autogenerated conversion function. +func Convert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in *extensions.ReplicaSetList, out *ReplicaSetList, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { + if err := v1.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *ReplicaSetSpec, s conversion.Scope) error { + if err := v1.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(in *ReplicaSetStatus, out *extensions.ReplicaSetStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.ObservedGeneration = in.ObservedGeneration + out.Conditions = *(*[]extensions.ReplicaSetCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus is an autogenerated conversion function. +func Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(in *ReplicaSetStatus, out *extensions.ReplicaSetStatus, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(in, out, s) +} + +func autoConvert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(in *extensions.ReplicaSetStatus, out *ReplicaSetStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.AvailableReplicas = in.AvailableReplicas + out.ObservedGeneration = in.ObservedGeneration + out.Conditions = *(*[]ReplicaSetCondition)(unsafe.Pointer(&in.Conditions)) + return nil +} + +// Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus is an autogenerated conversion function. +func Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(in *extensions.ReplicaSetStatus, out *ReplicaSetStatus, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(in, out, s) +} + +func autoConvert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy(in *ReplicationControllerDummy, out *extensions.ReplicationControllerDummy, s conversion.Scope) error { + return nil +} + +// Convert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy is an autogenerated conversion function. +func Convert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy(in *ReplicationControllerDummy, out *extensions.ReplicationControllerDummy, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy(in, out, s) +} + +func autoConvert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy(in *extensions.ReplicationControllerDummy, out *ReplicationControllerDummy, s conversion.Scope) error { + return nil +} + +// Convert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy is an autogenerated conversion function. +func Convert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy(in *extensions.ReplicationControllerDummy, out *ReplicationControllerDummy, s conversion.Scope) error { + return autoConvert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy(in, out, s) +} + +func autoConvert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(in *RollbackConfig, out *extensions.RollbackConfig, s conversion.Scope) error { + out.Revision = in.Revision + return nil +} + +// Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig is an autogenerated conversion function. +func Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(in *RollbackConfig, out *extensions.RollbackConfig, s conversion.Scope) error { + return autoConvert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(in, out, s) +} + +func autoConvert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in *extensions.RollbackConfig, out *RollbackConfig, s conversion.Scope) error { + out.Revision = in.Revision + return nil +} + +// Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig is an autogenerated conversion function. +func Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in *extensions.RollbackConfig, out *RollbackConfig, s conversion.Scope) error { + return autoConvert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in, out, s) +} + +func autoConvert_v1beta1_RollingUpdateDaemonSet_To_extensions_RollingUpdateDaemonSet(in *RollingUpdateDaemonSet, out *extensions.RollingUpdateDaemonSet, s conversion.Scope) error { + // WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/util/intstr.IntOrString vs k8s.io/apimachinery/pkg/util/intstr.IntOrString) + return nil +} + +func autoConvert_extensions_RollingUpdateDaemonSet_To_v1beta1_RollingUpdateDaemonSet(in *extensions.RollingUpdateDaemonSet, out *RollingUpdateDaemonSet, s conversion.Scope) error { + // WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (k8s.io/apimachinery/pkg/util/intstr.IntOrString vs *k8s.io/apimachinery/pkg/util/intstr.IntOrString) + return nil +} + +func autoConvert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in *RollingUpdateDeployment, out *extensions.RollingUpdateDeployment, s conversion.Scope) error { + // WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/util/intstr.IntOrString vs k8s.io/apimachinery/pkg/util/intstr.IntOrString) + // WARNING: in.MaxSurge requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/util/intstr.IntOrString vs k8s.io/apimachinery/pkg/util/intstr.IntOrString) + return nil +} + +func autoConvert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in *extensions.RollingUpdateDeployment, out *RollingUpdateDeployment, s conversion.Scope) error { + // WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (k8s.io/apimachinery/pkg/util/intstr.IntOrString vs *k8s.io/apimachinery/pkg/util/intstr.IntOrString) + // WARNING: in.MaxSurge requires manual conversion: inconvertible types (k8s.io/apimachinery/pkg/util/intstr.IntOrString vs *k8s.io/apimachinery/pkg/util/intstr.IntOrString) + return nil +} + +func autoConvert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in *RunAsUserStrategyOptions, out *extensions.RunAsUserStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.RunAsUserStrategy(in.Rule) + out.Ranges = *(*[]extensions.UserIDRange)(unsafe.Pointer(&in.Ranges)) + return nil +} + +// Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions is an autogenerated conversion function. +func Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in *RunAsUserStrategyOptions, out *extensions.RunAsUserStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in, out, s) +} + +func autoConvert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(in *extensions.RunAsUserStrategyOptions, out *RunAsUserStrategyOptions, s conversion.Scope) error { + out.Rule = RunAsUserStrategy(in.Rule) + out.Ranges = *(*[]IDRange)(unsafe.Pointer(&in.Ranges)) + return nil +} + +// Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions is an autogenerated conversion function. +func Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(in *extensions.RunAsUserStrategyOptions, out *RunAsUserStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in *SELinuxStrategyOptions, out *extensions.SELinuxStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.SELinuxStrategy(in.Rule) + out.SELinuxOptions = (*api.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + return nil +} + +// Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions is an autogenerated conversion function. +func Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in *SELinuxStrategyOptions, out *extensions.SELinuxStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in, out, s) +} + +func autoConvert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in *extensions.SELinuxStrategyOptions, out *SELinuxStrategyOptions, s conversion.Scope) error { + out.Rule = SELinuxStrategy(in.Rule) + out.SELinuxOptions = (*api_v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) + return nil +} + +// Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions is an autogenerated conversion function. +func Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in *extensions.SELinuxStrategyOptions, out *SELinuxStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_Scale_To_extensions_Scale(in *Scale, out *extensions.Scale, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_Scale_To_extensions_Scale is an autogenerated conversion function. +func Convert_v1beta1_Scale_To_extensions_Scale(in *Scale, out *extensions.Scale, s conversion.Scope) error { + return autoConvert_v1beta1_Scale_To_extensions_Scale(in, out, s) +} + +func autoConvert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *Scale, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_extensions_Scale_To_v1beta1_Scale is an autogenerated conversion function. +func Convert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *Scale, s conversion.Scope) error { + return autoConvert_extensions_Scale_To_v1beta1_Scale(in, out, s) +} + +func autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +// Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec is an autogenerated conversion function. +func Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error { + return autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in, out, s) +} + +func autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +// Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec is an autogenerated conversion function. +func Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s) +} + +func autoConvert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs *k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector) + // WARNING: in.TargetSelector requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + // WARNING: in.Selector requires manual conversion: inconvertible types (*k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector vs map[string]string) + return nil +} + +func autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.SupplementalGroupsStrategyType(in.Rule) + out.Ranges = *(*[]extensions.GroupIDRange)(unsafe.Pointer(&in.Ranges)) + return nil +} + +// Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions is an autogenerated conversion function. +func Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in, out, s) +} + +func autoConvert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(in *extensions.SupplementalGroupsStrategyOptions, out *SupplementalGroupsStrategyOptions, s conversion.Scope) error { + out.Rule = SupplementalGroupsStrategyType(in.Rule) + out.Ranges = *(*[]IDRange)(unsafe.Pointer(&in.Ranges)) + return nil +} + +// Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions is an autogenerated conversion function. +func Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(in *extensions.SupplementalGroupsStrategyOptions, out *SupplementalGroupsStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(in *ThirdPartyResource, out *extensions.ThirdPartyResource, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Description = in.Description + out.Versions = *(*[]extensions.APIVersion)(unsafe.Pointer(&in.Versions)) + return nil +} + +// Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource is an autogenerated conversion function. +func Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(in *ThirdPartyResource, out *extensions.ThirdPartyResource, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(in *extensions.ThirdPartyResource, out *ThirdPartyResource, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Description = in.Description + out.Versions = *(*[]APIVersion)(unsafe.Pointer(&in.Versions)) + return nil +} + +// Convert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource is an autogenerated conversion function. +func Convert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(in *extensions.ThirdPartyResource, out *ThirdPartyResource, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(in *ThirdPartyResourceData, out *extensions.ThirdPartyResourceData, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Data = *(*[]byte)(unsafe.Pointer(&in.Data)) + return nil +} + +// Convert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData is an autogenerated conversion function. +func Convert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(in *ThirdPartyResourceData, out *extensions.ThirdPartyResourceData, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(in *extensions.ThirdPartyResourceData, out *ThirdPartyResourceData, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Data = *(*[]byte)(unsafe.Pointer(&in.Data)) + return nil +} + +// Convert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData is an autogenerated conversion function. +func Convert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(in *extensions.ThirdPartyResourceData, out *ThirdPartyResourceData, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList(in *ThirdPartyResourceDataList, out *extensions.ThirdPartyResourceDataList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]extensions.ThirdPartyResourceData)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList is an autogenerated conversion function. +func Convert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList(in *ThirdPartyResourceDataList, out *extensions.ThirdPartyResourceDataList, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList(in *extensions.ThirdPartyResourceDataList, out *ThirdPartyResourceDataList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ThirdPartyResourceData, 0) + } else { + out.Items = *(*[]ThirdPartyResourceData)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList is an autogenerated conversion function. +func Convert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList(in *extensions.ThirdPartyResourceDataList, out *ThirdPartyResourceDataList, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList(in *ThirdPartyResourceList, out *extensions.ThirdPartyResourceList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]extensions.ThirdPartyResource)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList is an autogenerated conversion function. +func Convert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList(in *ThirdPartyResourceList, out *extensions.ThirdPartyResourceList, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList(in *extensions.ThirdPartyResourceList, out *ThirdPartyResourceList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ThirdPartyResource, 0) + } else { + out.Items = *(*[]ThirdPartyResource)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList is an autogenerated conversion function. +func Convert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList(in *extensions.ThirdPartyResourceList, out *ThirdPartyResourceList, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..e6d3c5526 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,1163 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api_v1 "k8s.io/client-go/pkg/api/v1" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_APIVersion, InType: reflect.TypeOf(&APIVersion{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricCurrentStatus, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricCurrentStatusList, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricTarget, InType: reflect.TypeOf(&CustomMetricTarget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricTargetList, InType: reflect.TypeOf(&CustomMetricTargetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSet, InType: reflect.TypeOf(&DaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetList, InType: reflect.TypeOf(&DaemonSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetSpec, InType: reflect.TypeOf(&DaemonSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetStatus, InType: reflect.TypeOf(&DaemonSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetUpdateStrategy, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Deployment, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentCondition, InType: reflect.TypeOf(&DeploymentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentList, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentRollback, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentSpec, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentStatus, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentStrategy, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_FSGroupStrategyOptions, InType: reflect.TypeOf(&FSGroupStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HTTPIngressPath, InType: reflect.TypeOf(&HTTPIngressPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HTTPIngressRuleValue, InType: reflect.TypeOf(&HTTPIngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HostPortRange, InType: reflect.TypeOf(&HostPortRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IDRange, InType: reflect.TypeOf(&IDRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Ingress, InType: reflect.TypeOf(&Ingress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressBackend, InType: reflect.TypeOf(&IngressBackend{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressList, InType: reflect.TypeOf(&IngressList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressRule, InType: reflect.TypeOf(&IngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressRuleValue, InType: reflect.TypeOf(&IngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressSpec, InType: reflect.TypeOf(&IngressSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressStatus, InType: reflect.TypeOf(&IngressStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressTLS, InType: reflect.TypeOf(&IngressTLS{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicy, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyIngressRule, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyList, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyPeer, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyPort, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicySpec, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodSecurityPolicy, InType: reflect.TypeOf(&PodSecurityPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodSecurityPolicyList, InType: reflect.TypeOf(&PodSecurityPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodSecurityPolicySpec, InType: reflect.TypeOf(&PodSecurityPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSet, InType: reflect.TypeOf(&ReplicaSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetCondition, InType: reflect.TypeOf(&ReplicaSetCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetList, InType: reflect.TypeOf(&ReplicaSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetSpec, InType: reflect.TypeOf(&ReplicaSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetStatus, InType: reflect.TypeOf(&ReplicaSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicationControllerDummy, InType: reflect.TypeOf(&ReplicationControllerDummy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollbackConfig, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollingUpdateDaemonSet, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollingUpdateDeployment, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RunAsUserStrategyOptions, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SELinuxStrategyOptions, InType: reflect.TypeOf(&SELinuxStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResource, InType: reflect.TypeOf(&ThirdPartyResource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResourceData, InType: reflect.TypeOf(&ThirdPartyResourceData{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResourceDataList, InType: reflect.TypeOf(&ThirdPartyResourceDataList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResourceList, InType: reflect.TypeOf(&ThirdPartyResourceList{})}, + ) +} + +// DeepCopy_v1beta1_APIVersion is an autogenerated deepcopy function. +func DeepCopy_v1beta1_APIVersion(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIVersion) + out := out.(*APIVersion) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_CustomMetricCurrentStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CustomMetricCurrentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatus) + out := out.(*CustomMetricCurrentStatus) + *out = *in + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1beta1_CustomMetricCurrentStatusList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CustomMetricCurrentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatusList) + out := out.(*CustomMetricCurrentStatusList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricCurrentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_CustomMetricCurrentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_CustomMetricTarget is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CustomMetricTarget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTarget) + out := out.(*CustomMetricTarget) + *out = *in + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +// DeepCopy_v1beta1_CustomMetricTargetList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_CustomMetricTargetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTargetList) + out := out.(*CustomMetricTargetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricTarget, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_CustomMetricTarget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_DaemonSet is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DaemonSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSet) + out := out.(*DaemonSet) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_DaemonSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DaemonSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_DaemonSetList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DaemonSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetList) + out := out.(*DaemonSetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DaemonSet, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_DaemonSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_DaemonSetSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DaemonSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetSpec) + out := out.(*DaemonSetSpec) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_DaemonSetStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DaemonSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetStatus) + out := out.(*DaemonSetStatus) + *out = *in + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_DaemonSetUpdateStrategy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DaemonSetUpdateStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetUpdateStrategy) + out := out.(*DaemonSetUpdateStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDaemonSet) + if err := DeepCopy_v1beta1_RollingUpdateDaemonSet(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1beta1_Deployment is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Deployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Deployment) + out := out.(*Deployment) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_DeploymentSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DeploymentStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentCondition is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentCondition) + out := out.(*DeploymentCondition) + *out = *in + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1beta1_DeploymentList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentList) + out := out.(*DeploymentList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Deployment(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentRollback is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentRollback(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentRollback) + out := out.(*DeploymentRollback) + *out = *in + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentSpec) + out := out.(*DeploymentSpec) + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(RollbackConfig) + **out = **in + } + if in.ProgressDeadlineSeconds != nil { + in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStatus) + out := out.(*DeploymentStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]DeploymentCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_DeploymentCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_DeploymentStrategy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_DeploymentStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStrategy) + out := out.(*DeploymentStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + if err := DeepCopy_v1beta1_RollingUpdateDeployment(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1beta1_FSGroupStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_v1beta1_FSGroupStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FSGroupStrategyOptions) + out := out.(*FSGroupStrategyOptions) + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_HTTPIngressPath is an autogenerated deepcopy function. +func DeepCopy_v1beta1_HTTPIngressPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressPath) + out := out.(*HTTPIngressPath) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_HTTPIngressRuleValue is an autogenerated deepcopy function. +func DeepCopy_v1beta1_HTTPIngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressRuleValue) + out := out.(*HTTPIngressRuleValue) + *out = *in + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]HTTPIngressPath, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_HostPortRange is an autogenerated deepcopy function. +func DeepCopy_v1beta1_HostPortRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPortRange) + out := out.(*HostPortRange) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_IDRange is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IDRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IDRange) + out := out.(*IDRange) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_Ingress is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Ingress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Ingress) + out := out.(*Ingress) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_IngressSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_IngressStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_IngressBackend is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressBackend(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressBackend) + out := out.(*IngressBackend) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_IngressList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressList) + out := out.(*IngressList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Ingress, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Ingress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_IngressRule is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRule) + out := out.(*IngressRule) + *out = *in + if err := DeepCopy_v1beta1_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_IngressRuleValue is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRuleValue) + out := out.(*IngressRuleValue) + *out = *in + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(HTTPIngressRuleValue) + if err := DeepCopy_v1beta1_HTTPIngressRuleValue(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_v1beta1_IngressSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressSpec) + out := out.(*IngressSpec) + *out = *in + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + *out = new(IngressBackend) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]IngressTLS, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_IngressTLS(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]IngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_IngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_IngressStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressStatus) + out := out.(*IngressStatus) + *out = *in + if err := api_v1.DeepCopy_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_IngressTLS is an autogenerated deepcopy function. +func DeepCopy_v1beta1_IngressTLS(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressTLS) + out := out.(*IngressTLS) + *out = *in + if in.Hosts != nil { + in, out := &in.Hosts, &out.Hosts + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_NetworkPolicy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NetworkPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicy) + out := out.(*NetworkPolicy) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_NetworkPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_NetworkPolicyIngressRule is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NetworkPolicyIngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyIngressRule) + out := out.(*NetworkPolicyIngressRule) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicyPort(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicyPeer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_NetworkPolicyList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NetworkPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyList) + out := out.(*NetworkPolicyList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_NetworkPolicyPeer is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NetworkPolicyPeer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPeer) + out := out.(*NetworkPolicyPeer) + *out = *in + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + return nil + } +} + +// DeepCopy_v1beta1_NetworkPolicyPort is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NetworkPolicyPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPort) + out := out.(*NetworkPolicyPort) + *out = *in + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(api_v1.Protocol) + **out = **in + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_NetworkPolicySpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_NetworkPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicySpec) + out := out.(*NetworkPolicySpec) + *out = *in + if newVal, err := c.DeepCopy(&in.PodSelector); err != nil { + return err + } else { + out.PodSelector = *newVal.(*v1.LabelSelector) + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_PodSecurityPolicy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodSecurityPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicy) + out := out.(*PodSecurityPolicy) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_PodSecurityPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_PodSecurityPolicyList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodSecurityPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicyList) + out := out.(*PodSecurityPolicyList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodSecurityPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_PodSecurityPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_PodSecurityPolicySpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodSecurityPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicySpec) + out := out.(*PodSecurityPolicySpec) + *out = *in + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]api_v1.Capability, len(*in)) + copy(*out, *in) + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]api_v1.Capability, len(*in)) + copy(*out, *in) + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]api_v1.Capability, len(*in)) + copy(*out, *in) + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]FSType, len(*in)) + copy(*out, *in) + } + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + copy(*out, *in) + } + if err := DeepCopy_v1beta1_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_ReplicaSet is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ReplicaSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSet) + out := out.(*ReplicaSet) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_ReplicaSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_ReplicaSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_ReplicaSetCondition is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ReplicaSetCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetCondition) + out := out.(*ReplicaSetCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_v1beta1_ReplicaSetList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ReplicaSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetList) + out := out.(*ReplicaSetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicaSet, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ReplicaSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_ReplicaSetSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ReplicaSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetSpec) + out := out.(*ReplicaSetSpec) + *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_ReplicaSetStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ReplicaSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetStatus) + out := out.(*ReplicaSetStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicaSetCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ReplicaSetCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_ReplicationControllerDummy is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ReplicationControllerDummy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerDummy) + out := out.(*ReplicationControllerDummy) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_RollbackConfig is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RollbackConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollbackConfig) + out := out.(*RollbackConfig) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_RollingUpdateDaemonSet is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RollingUpdateDaemonSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDaemonSet) + out := out.(*RollingUpdateDaemonSet) + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_RollingUpdateDeployment is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RollingUpdateDeployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDeployment) + out := out.(*RollingUpdateDeployment) + *out = *in + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(intstr.IntOrString) + **out = **in + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_RunAsUserStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RunAsUserStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RunAsUserStrategyOptions) + out := out.(*RunAsUserStrategyOptions) + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_SELinuxStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SELinuxStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxStrategyOptions) + out := out.(*SELinuxStrategyOptions) + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(api_v1.SELinuxOptions) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_Scale is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_ScaleStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_ScaleSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_ScaleStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1beta1_SupplementalGroupsStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_v1beta1_SupplementalGroupsStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SupplementalGroupsStrategyOptions) + out := out.(*SupplementalGroupsStrategyOptions) + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_ThirdPartyResource is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ThirdPartyResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResource) + out := out.(*ThirdPartyResource) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]APIVersion, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_ThirdPartyResourceData is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ThirdPartyResourceData(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceData) + out := out.(*ThirdPartyResourceData) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_ThirdPartyResourceDataList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ThirdPartyResourceDataList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceDataList) + out := out.(*ThirdPartyResourceDataList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResourceData, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ThirdPartyResourceData(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_ThirdPartyResourceList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ThirdPartyResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceList) + out := out.(*ThirdPartyResourceList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResource, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ThirdPartyResource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..770faa513 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1/zz_generated.defaults.go @@ -0,0 +1,475 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + v1 "k8s.io/client-go/pkg/api/v1" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&DaemonSet{}, func(obj interface{}) { SetObjectDefaults_DaemonSet(obj.(*DaemonSet)) }) + scheme.AddTypeDefaultingFunc(&DaemonSetList{}, func(obj interface{}) { SetObjectDefaults_DaemonSetList(obj.(*DaemonSetList)) }) + scheme.AddTypeDefaultingFunc(&Deployment{}, func(obj interface{}) { SetObjectDefaults_Deployment(obj.(*Deployment)) }) + scheme.AddTypeDefaultingFunc(&DeploymentList{}, func(obj interface{}) { SetObjectDefaults_DeploymentList(obj.(*DeploymentList)) }) + scheme.AddTypeDefaultingFunc(&NetworkPolicy{}, func(obj interface{}) { SetObjectDefaults_NetworkPolicy(obj.(*NetworkPolicy)) }) + scheme.AddTypeDefaultingFunc(&NetworkPolicyList{}, func(obj interface{}) { SetObjectDefaults_NetworkPolicyList(obj.(*NetworkPolicyList)) }) + scheme.AddTypeDefaultingFunc(&ReplicaSet{}, func(obj interface{}) { SetObjectDefaults_ReplicaSet(obj.(*ReplicaSet)) }) + scheme.AddTypeDefaultingFunc(&ReplicaSetList{}, func(obj interface{}) { SetObjectDefaults_ReplicaSetList(obj.(*ReplicaSetList)) }) + return nil +} + +func SetObjectDefaults_DaemonSet(in *DaemonSet) { + SetDefaults_DaemonSet(in) + v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_DaemonSetList(in *DaemonSetList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_DaemonSet(a) + } +} + +func SetObjectDefaults_Deployment(in *Deployment) { + SetDefaults_Deployment(in) + v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_DeploymentList(in *DeploymentList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_Deployment(a) + } +} + +func SetObjectDefaults_NetworkPolicy(in *NetworkPolicy) { + SetDefaults_NetworkPolicy(in) +} + +func SetObjectDefaults_NetworkPolicyList(in *NetworkPolicyList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_NetworkPolicy(a) + } +} + +func SetObjectDefaults_ReplicaSet(in *ReplicaSet) { + SetDefaults_ReplicaSet(in) + v1.SetDefaults_PodSpec(&in.Spec.Template.Spec) + for i := range in.Spec.Template.Spec.Volumes { + a := &in.Spec.Template.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } + for i := range in.Spec.Template.Spec.InitContainers { + a := &in.Spec.Template.Spec.InitContainers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } + for i := range in.Spec.Template.Spec.Containers { + a := &in.Spec.Template.Spec.Containers[i] + v1.SetDefaults_Container(a) + for j := range a.Ports { + b := &a.Ports[j] + v1.SetDefaults_ContainerPort(b) + } + for j := range a.Env { + b := &a.Env[j] + if b.ValueFrom != nil { + if b.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.ValueFrom.FieldRef) + } + } + } + v1.SetDefaults_ResourceList(&a.Resources.Limits) + v1.SetDefaults_ResourceList(&a.Resources.Requests) + if a.LivenessProbe != nil { + v1.SetDefaults_Probe(a.LivenessProbe) + if a.LivenessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.LivenessProbe.Handler.HTTPGet) + } + } + if a.ReadinessProbe != nil { + v1.SetDefaults_Probe(a.ReadinessProbe) + if a.ReadinessProbe.Handler.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.ReadinessProbe.Handler.HTTPGet) + } + } + if a.Lifecycle != nil { + if a.Lifecycle.PostStart != nil { + if a.Lifecycle.PostStart.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PostStart.HTTPGet) + } + } + if a.Lifecycle.PreStop != nil { + if a.Lifecycle.PreStop.HTTPGet != nil { + v1.SetDefaults_HTTPGetAction(a.Lifecycle.PreStop.HTTPGet) + } + } + } + } +} + +func SetObjectDefaults_ReplicaSetList(in *ReplicaSetList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ReplicaSet(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/extensions/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/extensions/zz_generated.deepcopy.go new file mode 100644 index 000000000..2d88c85e7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/extensions/zz_generated.deepcopy.go @@ -0,0 +1,1146 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package extensions + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api "k8s.io/client-go/pkg/api" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_APIVersion, InType: reflect.TypeOf(&APIVersion{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricCurrentStatus, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricCurrentStatusList, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricTarget, InType: reflect.TypeOf(&CustomMetricTarget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricTargetList, InType: reflect.TypeOf(&CustomMetricTargetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSet, InType: reflect.TypeOf(&DaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetList, InType: reflect.TypeOf(&DaemonSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetSpec, InType: reflect.TypeOf(&DaemonSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetStatus, InType: reflect.TypeOf(&DaemonSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetUpdateStrategy, InType: reflect.TypeOf(&DaemonSetUpdateStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Deployment, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentCondition, InType: reflect.TypeOf(&DeploymentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentList, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentRollback, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentSpec, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentStatus, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentStrategy, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_FSGroupStrategyOptions, InType: reflect.TypeOf(&FSGroupStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_GroupIDRange, InType: reflect.TypeOf(&GroupIDRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_HTTPIngressPath, InType: reflect.TypeOf(&HTTPIngressPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_HTTPIngressRuleValue, InType: reflect.TypeOf(&HTTPIngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_HostPortRange, InType: reflect.TypeOf(&HostPortRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Ingress, InType: reflect.TypeOf(&Ingress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressBackend, InType: reflect.TypeOf(&IngressBackend{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressList, InType: reflect.TypeOf(&IngressList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressRule, InType: reflect.TypeOf(&IngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressRuleValue, InType: reflect.TypeOf(&IngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressSpec, InType: reflect.TypeOf(&IngressSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressStatus, InType: reflect.TypeOf(&IngressStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressTLS, InType: reflect.TypeOf(&IngressTLS{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicy, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyIngressRule, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyList, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyPeer, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyPort, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicySpec, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_PodSecurityPolicy, InType: reflect.TypeOf(&PodSecurityPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_PodSecurityPolicyList, InType: reflect.TypeOf(&PodSecurityPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_PodSecurityPolicySpec, InType: reflect.TypeOf(&PodSecurityPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSet, InType: reflect.TypeOf(&ReplicaSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetCondition, InType: reflect.TypeOf(&ReplicaSetCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetList, InType: reflect.TypeOf(&ReplicaSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetSpec, InType: reflect.TypeOf(&ReplicaSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetStatus, InType: reflect.TypeOf(&ReplicaSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicationControllerDummy, InType: reflect.TypeOf(&ReplicationControllerDummy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RollbackConfig, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RollingUpdateDaemonSet, InType: reflect.TypeOf(&RollingUpdateDaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RollingUpdateDeployment, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RunAsUserStrategyOptions, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_SELinuxStrategyOptions, InType: reflect.TypeOf(&SELinuxStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResource, InType: reflect.TypeOf(&ThirdPartyResource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceData, InType: reflect.TypeOf(&ThirdPartyResourceData{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceDataList, InType: reflect.TypeOf(&ThirdPartyResourceDataList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceList, InType: reflect.TypeOf(&ThirdPartyResourceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_UserIDRange, InType: reflect.TypeOf(&UserIDRange{})}, + ) +} + +// DeepCopy_extensions_APIVersion is an autogenerated deepcopy function. +func DeepCopy_extensions_APIVersion(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIVersion) + out := out.(*APIVersion) + *out = *in + return nil + } +} + +// DeepCopy_extensions_CustomMetricCurrentStatus is an autogenerated deepcopy function. +func DeepCopy_extensions_CustomMetricCurrentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatus) + out := out.(*CustomMetricCurrentStatus) + *out = *in + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +// DeepCopy_extensions_CustomMetricCurrentStatusList is an autogenerated deepcopy function. +func DeepCopy_extensions_CustomMetricCurrentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatusList) + out := out.(*CustomMetricCurrentStatusList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricCurrentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_CustomMetricCurrentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_CustomMetricTarget is an autogenerated deepcopy function. +func DeepCopy_extensions_CustomMetricTarget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTarget) + out := out.(*CustomMetricTarget) + *out = *in + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +// DeepCopy_extensions_CustomMetricTargetList is an autogenerated deepcopy function. +func DeepCopy_extensions_CustomMetricTargetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTargetList) + out := out.(*CustomMetricTargetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricTarget, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_CustomMetricTarget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_DaemonSet is an autogenerated deepcopy function. +func DeepCopy_extensions_DaemonSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSet) + out := out.(*DaemonSet) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_DaemonSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_extensions_DaemonSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_DaemonSetList is an autogenerated deepcopy function. +func DeepCopy_extensions_DaemonSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetList) + out := out.(*DaemonSetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DaemonSet, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_DaemonSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_DaemonSetSpec is an autogenerated deepcopy function. +func DeepCopy_extensions_DaemonSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetSpec) + out := out.(*DaemonSetSpec) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_extensions_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_DaemonSetStatus is an autogenerated deepcopy function. +func DeepCopy_extensions_DaemonSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetStatus) + out := out.(*DaemonSetStatus) + *out = *in + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_DaemonSetUpdateStrategy is an autogenerated deepcopy function. +func DeepCopy_extensions_DaemonSetUpdateStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetUpdateStrategy) + out := out.(*DaemonSetUpdateStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDaemonSet) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_Deployment is an autogenerated deepcopy function. +func DeepCopy_extensions_Deployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Deployment) + out := out.(*Deployment) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_DeploymentSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_extensions_DeploymentStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_DeploymentCondition is an autogenerated deepcopy function. +func DeepCopy_extensions_DeploymentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentCondition) + out := out.(*DeploymentCondition) + *out = *in + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_extensions_DeploymentList is an autogenerated deepcopy function. +func DeepCopy_extensions_DeploymentList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentList) + out := out.(*DeploymentList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_Deployment(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_DeploymentRollback is an autogenerated deepcopy function. +func DeepCopy_extensions_DeploymentRollback(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentRollback) + out := out.(*DeploymentRollback) + *out = *in + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_extensions_DeploymentSpec is an autogenerated deepcopy function. +func DeepCopy_extensions_DeploymentSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentSpec) + out := out.(*DeploymentSpec) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, c); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(RollbackConfig) + **out = **in + } + if in.ProgressDeadlineSeconds != nil { + in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds + *out = new(int32) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_DeploymentStatus is an autogenerated deepcopy function. +func DeepCopy_extensions_DeploymentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStatus) + out := out.(*DeploymentStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]DeploymentCondition, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_DeploymentCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.CollisionCount != nil { + in, out := &in.CollisionCount, &out.CollisionCount + *out = new(int64) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_DeploymentStrategy is an autogenerated deepcopy function. +func DeepCopy_extensions_DeploymentStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStrategy) + out := out.(*DeploymentStrategy) + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_FSGroupStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_extensions_FSGroupStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FSGroupStrategyOptions) + out := out.(*FSGroupStrategyOptions) + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]GroupIDRange, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_GroupIDRange is an autogenerated deepcopy function. +func DeepCopy_extensions_GroupIDRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupIDRange) + out := out.(*GroupIDRange) + *out = *in + return nil + } +} + +// DeepCopy_extensions_HTTPIngressPath is an autogenerated deepcopy function. +func DeepCopy_extensions_HTTPIngressPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressPath) + out := out.(*HTTPIngressPath) + *out = *in + return nil + } +} + +// DeepCopy_extensions_HTTPIngressRuleValue is an autogenerated deepcopy function. +func DeepCopy_extensions_HTTPIngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressRuleValue) + out := out.(*HTTPIngressRuleValue) + *out = *in + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]HTTPIngressPath, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_HostPortRange is an autogenerated deepcopy function. +func DeepCopy_extensions_HostPortRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPortRange) + out := out.(*HostPortRange) + *out = *in + return nil + } +} + +// DeepCopy_extensions_Ingress is an autogenerated deepcopy function. +func DeepCopy_extensions_Ingress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Ingress) + out := out.(*Ingress) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_IngressSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_extensions_IngressStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_IngressBackend is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressBackend(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressBackend) + out := out.(*IngressBackend) + *out = *in + return nil + } +} + +// DeepCopy_extensions_IngressList is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressList) + out := out.(*IngressList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Ingress, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_Ingress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_IngressRule is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRule) + out := out.(*IngressRule) + *out = *in + if err := DeepCopy_extensions_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_IngressRuleValue is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRuleValue) + out := out.(*IngressRuleValue) + *out = *in + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(HTTPIngressRuleValue) + if err := DeepCopy_extensions_HTTPIngressRuleValue(*in, *out, c); err != nil { + return err + } + } + return nil + } +} + +// DeepCopy_extensions_IngressSpec is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressSpec) + out := out.(*IngressSpec) + *out = *in + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + *out = new(IngressBackend) + **out = **in + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]IngressTLS, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_IngressTLS(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]IngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_IngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_IngressStatus is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressStatus) + out := out.(*IngressStatus) + *out = *in + if err := api.DeepCopy_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_IngressTLS is an autogenerated deepcopy function. +func DeepCopy_extensions_IngressTLS(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressTLS) + out := out.(*IngressTLS) + *out = *in + if in.Hosts != nil { + in, out := &in.Hosts, &out.Hosts + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_NetworkPolicy is an autogenerated deepcopy function. +func DeepCopy_extensions_NetworkPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicy) + out := out.(*NetworkPolicy) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_NetworkPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_NetworkPolicyIngressRule is an autogenerated deepcopy function. +func DeepCopy_extensions_NetworkPolicyIngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyIngressRule) + out := out.(*NetworkPolicyIngressRule) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicyPort(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicyPeer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_NetworkPolicyList is an autogenerated deepcopy function. +func DeepCopy_extensions_NetworkPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyList) + out := out.(*NetworkPolicyList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_NetworkPolicyPeer is an autogenerated deepcopy function. +func DeepCopy_extensions_NetworkPolicyPeer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPeer) + out := out.(*NetworkPolicyPeer) + *out = *in + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + return nil + } +} + +// DeepCopy_extensions_NetworkPolicyPort is an autogenerated deepcopy function. +func DeepCopy_extensions_NetworkPolicyPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPort) + out := out.(*NetworkPolicyPort) + *out = *in + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(api.Protocol) + **out = **in + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_NetworkPolicySpec is an autogenerated deepcopy function. +func DeepCopy_extensions_NetworkPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicySpec) + out := out.(*NetworkPolicySpec) + *out = *in + if newVal, err := c.DeepCopy(&in.PodSelector); err != nil { + return err + } else { + out.PodSelector = *newVal.(*v1.LabelSelector) + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_PodSecurityPolicy is an autogenerated deepcopy function. +func DeepCopy_extensions_PodSecurityPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicy) + out := out.(*PodSecurityPolicy) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_PodSecurityPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_PodSecurityPolicyList is an autogenerated deepcopy function. +func DeepCopy_extensions_PodSecurityPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicyList) + out := out.(*PodSecurityPolicyList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodSecurityPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_PodSecurityPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_PodSecurityPolicySpec is an autogenerated deepcopy function. +func DeepCopy_extensions_PodSecurityPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicySpec) + out := out.(*PodSecurityPolicySpec) + *out = *in + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]api.Capability, len(*in)) + copy(*out, *in) + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]api.Capability, len(*in)) + copy(*out, *in) + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]api.Capability, len(*in)) + copy(*out, *in) + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]FSType, len(*in)) + copy(*out, *in) + } + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + copy(*out, *in) + } + if err := DeepCopy_extensions_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, c); err != nil { + return err + } + if err := DeepCopy_extensions_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, c); err != nil { + return err + } + if err := DeepCopy_extensions_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, c); err != nil { + return err + } + if err := DeepCopy_extensions_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_ReplicaSet is an autogenerated deepcopy function. +func DeepCopy_extensions_ReplicaSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSet) + out := out.(*ReplicaSet) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_ReplicaSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_extensions_ReplicaSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_ReplicaSetCondition is an autogenerated deepcopy function. +func DeepCopy_extensions_ReplicaSetCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetCondition) + out := out.(*ReplicaSetCondition) + *out = *in + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + return nil + } +} + +// DeepCopy_extensions_ReplicaSetList is an autogenerated deepcopy function. +func DeepCopy_extensions_ReplicaSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetList) + out := out.(*ReplicaSetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicaSet, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ReplicaSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_ReplicaSetSpec is an autogenerated deepcopy function. +func DeepCopy_extensions_ReplicaSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetSpec) + out := out.(*ReplicaSetSpec) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_ReplicaSetStatus is an autogenerated deepcopy function. +func DeepCopy_extensions_ReplicaSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetStatus) + out := out.(*ReplicaSetStatus) + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ReplicaSetCondition, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ReplicaSetCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_ReplicationControllerDummy is an autogenerated deepcopy function. +func DeepCopy_extensions_ReplicationControllerDummy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerDummy) + out := out.(*ReplicationControllerDummy) + *out = *in + return nil + } +} + +// DeepCopy_extensions_RollbackConfig is an autogenerated deepcopy function. +func DeepCopy_extensions_RollbackConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollbackConfig) + out := out.(*RollbackConfig) + *out = *in + return nil + } +} + +// DeepCopy_extensions_RollingUpdateDaemonSet is an autogenerated deepcopy function. +func DeepCopy_extensions_RollingUpdateDaemonSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDaemonSet) + out := out.(*RollingUpdateDaemonSet) + *out = *in + return nil + } +} + +// DeepCopy_extensions_RollingUpdateDeployment is an autogenerated deepcopy function. +func DeepCopy_extensions_RollingUpdateDeployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDeployment) + out := out.(*RollingUpdateDeployment) + *out = *in + return nil + } +} + +// DeepCopy_extensions_RunAsUserStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_extensions_RunAsUserStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RunAsUserStrategyOptions) + out := out.(*RunAsUserStrategyOptions) + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]UserIDRange, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_SELinuxStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_extensions_SELinuxStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxStrategyOptions) + out := out.(*SELinuxStrategyOptions) + *out = *in + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(api.SELinuxOptions) + **out = **in + } + return nil + } +} + +// DeepCopy_extensions_Scale is an autogenerated deepcopy function. +func DeepCopy_extensions_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_extensions_ScaleStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_extensions_ScaleSpec is an autogenerated deepcopy function. +func DeepCopy_extensions_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + *out = *in + return nil + } +} + +// DeepCopy_extensions_ScaleStatus is an autogenerated deepcopy function. +func DeepCopy_extensions_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + *out = *in + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + return nil + } +} + +// DeepCopy_extensions_SupplementalGroupsStrategyOptions is an autogenerated deepcopy function. +func DeepCopy_extensions_SupplementalGroupsStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SupplementalGroupsStrategyOptions) + out := out.(*SupplementalGroupsStrategyOptions) + *out = *in + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]GroupIDRange, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_ThirdPartyResource is an autogenerated deepcopy function. +func DeepCopy_extensions_ThirdPartyResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResource) + out := out.(*ThirdPartyResource) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]APIVersion, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_ThirdPartyResourceData is an autogenerated deepcopy function. +func DeepCopy_extensions_ThirdPartyResourceData(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceData) + out := out.(*ThirdPartyResourceData) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_extensions_ThirdPartyResourceDataList is an autogenerated deepcopy function. +func DeepCopy_extensions_ThirdPartyResourceDataList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceDataList) + out := out.(*ThirdPartyResourceDataList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResourceData, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ThirdPartyResourceData(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_ThirdPartyResourceList is an autogenerated deepcopy function. +func DeepCopy_extensions_ThirdPartyResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceList) + out := out.(*ThirdPartyResourceList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResource, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ThirdPartyResource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_extensions_UserIDRange is an autogenerated deepcopy function. +func DeepCopy_extensions_UserIDRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*UserIDRange) + out := out.(*UserIDRange) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/BUILD b/vendor/k8s.io/client-go/pkg/apis/networking/BUILD new file mode 100644 index 000000000..bcb0a0484 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/OWNERS b/vendor/k8s.io/client-go/pkg/apis/networking/OWNERS new file mode 100755 index 000000000..97bde9728 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/OWNERS @@ -0,0 +1,4 @@ +reviewers: +- caseydavenport +- danwinship +- thockin diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/doc.go b/vendor/k8s.io/client-go/pkg/apis/networking/doc.go new file mode 100644 index 000000000..bf91d786a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=networking.k8s.io +package networking diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/register.go b/vendor/k8s.io/client-go/pkg/apis/networking/register.go new file mode 100644 index 000000000..4d58a210d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/register.go @@ -0,0 +1,51 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package networking + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "networking.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/types.go b/vendor/k8s.io/client-go/pkg/apis/networking/types.go new file mode 100644 index 000000000..010736f1b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/types.go @@ -0,0 +1,115 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package networking + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api" +) + +// +genclient=true + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +type NetworkPolicy struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + Spec NetworkPolicySpec +} + +// NetworkPolicySpec provides the specification of a NetworkPolicy +type NetworkPolicySpec struct { + // Selects the pods to which this NetworkPolicy object applies. The array of + // ingress rules is applied to any pods selected by this field. Multiple network + // policies can select the same set of pods. In this case, the ingress rules for + // each are combined additively. This field is NOT optional and follows standard + // label selector semantics. An empty podSelector matches all pods in this + // namespace. + PodSelector metav1.LabelSelector + + // List of ingress rules to be applied to the selected pods. Traffic is allowed to + // a pod if there are no NetworkPolicies selecting the pod + // (and cluster policy otherwise allows the traffic), OR if the traffic source is + // the pod's local node, OR if the traffic matches at least one ingress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy does not allow any traffic (and serves + // solely to ensure that the pods it selects are isolated by default) + // +optional + Ingress []NetworkPolicyIngressRule +} + +// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from. +type NetworkPolicyIngressRule struct { + // List of ports which should be made accessible on the pods selected for this + // rule. Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // If this field is present and contains at least one item, then this rule allows + // traffic only if the traffic matches at least one port in the list. + // +optional + Ports []NetworkPolicyPort + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all sources (traffic not restricted by + // source). If this field is present and contains at least on item, this rule + // allows traffic only if the traffic matches at least one item in the from list. + // +optional + From []NetworkPolicyPeer +} + +// NetworkPolicyPort describes a port to allow traffic on +type NetworkPolicyPort struct { + // The protocol (TCP or UDP) which traffic must match. If not specified, this + // field defaults to TCP. + // +optional + Protocol *api.Protocol + + // The port on the given protocol. This can either be a numerical or named port on + // a pod. If this field is not provided, this matches all port names and numbers. + // +optional + Port *intstr.IntOrString +} + +// NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields +// must be specified. +type NetworkPolicyPeer struct { + // This is a label selector which selects Pods in this namespace. This field + // follows standard label selector semantics. If present but empty, this selector + // selects all pods in this namespace. + // +optional + PodSelector *metav1.LabelSelector + + // Selects Namespaces using cluster scoped-labels. This matches all pods in all + // namespaces selected by this label selector. This field follows standard label + // selector semantics. If present but empty, this selector selects all namespaces. + // +optional + NamespaceSelector *metav1.LabelSelector +} + +// NetworkPolicyList is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []NetworkPolicy +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/BUILD b/vendor/k8s.io/client-go/pkg/apis/networking/v1/BUILD new file mode 100644 index 000000000..b55e1b8cb --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/BUILD @@ -0,0 +1,40 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/networking:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/conversion.go new file mode 100644 index 000000000..21ec62576 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/conversion.go @@ -0,0 +1,195 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/extensions" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + return scheme.AddConversionFuncs( + Convert_v1_NetworkPolicy_To_extensions_NetworkPolicy, + Convert_extensions_NetworkPolicy_To_v1_NetworkPolicy, + Convert_v1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule, + Convert_extensions_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule, + Convert_v1_NetworkPolicyList_To_extensions_NetworkPolicyList, + Convert_extensions_NetworkPolicyList_To_v1_NetworkPolicyList, + Convert_v1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer, + Convert_extensions_NetworkPolicyPeer_To_v1_NetworkPolicyPeer, + Convert_v1_NetworkPolicyPort_To_extensions_NetworkPolicyPort, + Convert_extensions_NetworkPolicyPort_To_v1_NetworkPolicyPort, + Convert_v1_NetworkPolicySpec_To_extensions_NetworkPolicySpec, + Convert_extensions_NetworkPolicySpec_To_v1_NetworkPolicySpec, + ) +} + +func Convert_v1_NetworkPolicy_To_extensions_NetworkPolicy(in *NetworkPolicy, out *extensions.NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + return Convert_v1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(&in.Spec, &out.Spec, s) +} + +func Convert_extensions_NetworkPolicy_To_v1_NetworkPolicy(in *extensions.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + return Convert_extensions_NetworkPolicySpec_To_v1_NetworkPolicySpec(&in.Spec, &out.Spec, s) +} + +func Convert_v1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in *NetworkPolicySpec, out *extensions.NetworkPolicySpec, s conversion.Scope) error { + if err := s.Convert(&in.PodSelector, &out.PodSelector, 0); err != nil { + return err + } + out.Ingress = make([]extensions.NetworkPolicyIngressRule, len(in.Ingress)) + for i := range in.Ingress { + if err := Convert_v1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(&in.Ingress[i], &out.Ingress[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_extensions_NetworkPolicySpec_To_v1_NetworkPolicySpec(in *extensions.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + if err := s.Convert(&in.PodSelector, &out.PodSelector, 0); err != nil { + return err + } + out.Ingress = make([]NetworkPolicyIngressRule, len(in.Ingress)) + for i := range in.Ingress { + if err := Convert_extensions_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule(&in.Ingress[i], &out.Ingress[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_v1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *extensions.NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = make([]extensions.NetworkPolicyPort, len(in.Ports)) + for i := range in.Ports { + if err := Convert_v1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(&in.Ports[i], &out.Ports[i], s); err != nil { + return err + } + } + out.From = make([]extensions.NetworkPolicyPeer, len(in.From)) + for i := range in.From { + if err := Convert_v1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(&in.From[i], &out.From[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_extensions_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule(in *extensions.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = make([]NetworkPolicyPort, len(in.Ports)) + for i := range in.Ports { + if err := Convert_extensions_NetworkPolicyPort_To_v1_NetworkPolicyPort(&in.Ports[i], &out.Ports[i], s); err != nil { + return err + } + } + out.From = make([]NetworkPolicyPeer, len(in.From)) + for i := range in.From { + if err := Convert_extensions_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(&in.From[i], &out.From[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_v1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in *NetworkPolicyPeer, out *extensions.NetworkPolicyPeer, s conversion.Scope) error { + if in.PodSelector != nil { + out.PodSelector = new(metav1.LabelSelector) + if err := s.Convert(in.PodSelector, out.PodSelector, 0); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + out.NamespaceSelector = new(metav1.LabelSelector) + if err := s.Convert(in.NamespaceSelector, out.NamespaceSelector, 0); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil +} + +func Convert_extensions_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(in *extensions.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + if in.PodSelector != nil { + out.PodSelector = new(metav1.LabelSelector) + if err := s.Convert(in.PodSelector, out.PodSelector, 0); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + out.NamespaceSelector = new(metav1.LabelSelector) + if err := s.Convert(in.NamespaceSelector, out.NamespaceSelector, 0); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil +} + +func Convert_v1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in *NetworkPolicyPort, out *extensions.NetworkPolicyPort, s conversion.Scope) error { + if in.Protocol != nil { + out.Protocol = new(api.Protocol) + *out.Protocol = api.Protocol(*in.Protocol) + } else { + out.Protocol = nil + } + out.Port = in.Port + return nil +} + +func Convert_extensions_NetworkPolicyPort_To_v1_NetworkPolicyPort(in *extensions.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + if in.Protocol != nil { + out.Protocol = new(v1.Protocol) + *out.Protocol = v1.Protocol(*in.Protocol) + } else { + out.Protocol = nil + } + out.Port = in.Port + return nil +} + +func Convert_v1_NetworkPolicyList_To_extensions_NetworkPolicyList(in *NetworkPolicyList, out *extensions.NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = make([]extensions.NetworkPolicy, len(in.Items)) + for i := range in.Items { + if err := Convert_v1_NetworkPolicy_To_extensions_NetworkPolicy(&in.Items[i], &out.Items[i], s); err != nil { + return err + } + } + return nil +} + +func Convert_extensions_NetworkPolicyList_To_v1_NetworkPolicyList(in *extensions.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = make([]NetworkPolicy, len(in.Items)) + for i := range in.Items { + if err := Convert_extensions_NetworkPolicy_To_v1_NetworkPolicy(&in.Items[i], &out.Items[i], s); err != nil { + return err + } + } + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/defaults.go new file mode 100644 index 000000000..7567cf751 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/defaults.go @@ -0,0 +1,34 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api/v1" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_NetworkPolicyPort(obj *NetworkPolicyPort) { + // Default any undefined Protocol fields to TCP. + if obj.Protocol == nil { + proto := v1.ProtocolTCP + obj.Protocol = &proto + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/doc.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/doc.go new file mode 100644 index 000000000..f1250e70e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=networking.k8s.io +package v1 diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.pb.go new file mode 100644 index 000000000..671557dd5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.pb.go @@ -0,0 +1,1345 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/networking/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/networking/v1/generated.proto + + It has these top-level messages: + NetworkPolicy + NetworkPolicyIngressRule + NetworkPolicyList + NetworkPolicyPeer + NetworkPolicyPort + NetworkPolicySpec +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } +func (*NetworkPolicy) ProtoMessage() {} +func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *NetworkPolicyIngressRule) Reset() { *m = NetworkPolicyIngressRule{} } +func (*NetworkPolicyIngressRule) ProtoMessage() {} +func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *NetworkPolicyList) Reset() { *m = NetworkPolicyList{} } +func (*NetworkPolicyList) ProtoMessage() {} +func (*NetworkPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *NetworkPolicyPeer) Reset() { *m = NetworkPolicyPeer{} } +func (*NetworkPolicyPeer) ProtoMessage() {} +func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *NetworkPolicyPort) Reset() { *m = NetworkPolicyPort{} } +func (*NetworkPolicyPort) ProtoMessage() {} +func (*NetworkPolicyPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *NetworkPolicySpec) Reset() { *m = NetworkPolicySpec{} } +func (*NetworkPolicySpec) ProtoMessage() {} +func (*NetworkPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func init() { + proto.RegisterType((*NetworkPolicy)(nil), "k8s.io.client-go.pkg.apis.networking.v1.NetworkPolicy") + proto.RegisterType((*NetworkPolicyIngressRule)(nil), "k8s.io.client-go.pkg.apis.networking.v1.NetworkPolicyIngressRule") + proto.RegisterType((*NetworkPolicyList)(nil), "k8s.io.client-go.pkg.apis.networking.v1.NetworkPolicyList") + proto.RegisterType((*NetworkPolicyPeer)(nil), "k8s.io.client-go.pkg.apis.networking.v1.NetworkPolicyPeer") + proto.RegisterType((*NetworkPolicyPort)(nil), "k8s.io.client-go.pkg.apis.networking.v1.NetworkPolicyPort") + proto.RegisterType((*NetworkPolicySpec)(nil), "k8s.io.client-go.pkg.apis.networking.v1.NetworkPolicySpec") +} +func (m *NetworkPolicy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicy) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + return i, nil +} + +func (m *NetworkPolicyIngressRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyIngressRule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.From) > 0 { + for _, msg := range m.From { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NetworkPolicyList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NetworkPolicyPeer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyPeer) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PodSelector != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodSelector.Size())) + n4, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + } + if m.NamespaceSelector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.NamespaceSelector.Size())) + n5, err := m.NamespaceSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + } + return i, nil +} + +func (m *NetworkPolicyPort) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicyPort) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Protocol != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Protocol))) + i += copy(dAtA[i:], *m.Protocol) + } + if m.Port != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) + n6, err := m.Port.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + } + return i, nil +} + +func (m *NetworkPolicySpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *NetworkPolicySpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodSelector.Size())) + n7, err := m.PodSelector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + if len(m.Ingress) > 0 { + for _, msg := range m.Ingress { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *NetworkPolicy) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NetworkPolicyIngressRule) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.From) > 0 { + for _, e := range m.From { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NetworkPolicyList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NetworkPolicyPeer) Size() (n int) { + var l int + _ = l + if m.PodSelector != nil { + l = m.PodSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NamespaceSelector != nil { + l = m.NamespaceSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *NetworkPolicyPort) Size() (n int) { + var l int + _ = l + if m.Protocol != nil { + l = len(*m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Port != nil { + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *NetworkPolicySpec) Size() (n int) { + var l int + _ = l + l = m.PodSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ingress) > 0 { + for _, e := range m.Ingress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *NetworkPolicy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicy{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkPolicySpec", "NetworkPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyIngressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyIngressRule{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "NetworkPolicyPort", "NetworkPolicyPort", 1), `&`, ``, 1) + `,`, + `From:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.From), "NetworkPolicyPeer", "NetworkPolicyPeer", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "NetworkPolicy", "NetworkPolicy", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyPeer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyPeer{`, + `PodSelector:` + strings.Replace(fmt.Sprintf("%v", this.PodSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyPort{`, + `Protocol:` + valueToStringGenerated(this.Protocol) + `,`, + `Port:` + strings.Replace(fmt.Sprintf("%v", this.Port), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicySpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicySpec{`, + `PodSelector:` + strings.Replace(strings.Replace(this.PodSelector.String(), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "NetworkPolicyIngressRule", "NetworkPolicyIngressRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *NetworkPolicy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyIngressRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyIngressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyIngressRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, NetworkPolicyPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = append(m.From, NetworkPolicyPeer{}) + if err := m.From[len(m.From)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, NetworkPolicy{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyPeer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyPeer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyPeer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodSelector == nil { + m.PodSelector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.PodSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NamespaceSelector == nil { + m.NamespaceSelector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyPort) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := k8s_io_kubernetes_pkg_api_v1.Protocol(dAtA[iNdEx:postIndex]) + m.Protocol = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Port == nil { + m.Port = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.Port.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicySpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicySpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ingress = append(m.Ingress, NetworkPolicyIngressRule{}) + if err := m.Ingress[len(m.Ingress)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/networking/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 666 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcf, 0x4f, 0x13, 0x41, + 0x18, 0xed, 0x56, 0x08, 0x75, 0x90, 0x20, 0x6b, 0x4c, 0x1a, 0x0e, 0x5b, 0xd2, 0xc4, 0x84, 0x83, + 0xce, 0x5a, 0xf1, 0x07, 0xc6, 0x78, 0xd9, 0x83, 0x09, 0x89, 0x42, 0x5d, 0x6e, 0x06, 0x13, 0xa6, + 0xcb, 0xc7, 0x32, 0xb4, 0x3b, 0xb3, 0x99, 0x99, 0x56, 0xb8, 0xf9, 0x27, 0xf8, 0xd7, 0xf8, 0x37, + 0x70, 0x93, 0x23, 0x89, 0x49, 0x23, 0xeb, 0xdd, 0x9b, 0x17, 0x4f, 0x66, 0x76, 0xa7, 0x6c, 0x61, + 0x59, 0x24, 0xc5, 0xdb, 0xcc, 0xe4, 0x7b, 0xef, 0x7d, 0x6f, 0xde, 0x37, 0x83, 0x56, 0xbb, 0xab, + 0x12, 0x53, 0xee, 0x76, 0xfb, 0x1d, 0x10, 0x0c, 0x14, 0x48, 0x37, 0xee, 0x86, 0x2e, 0x89, 0xa9, + 0x74, 0x19, 0xa8, 0x4f, 0x5c, 0x74, 0x29, 0x0b, 0xdd, 0x41, 0xcb, 0x0d, 0x81, 0x81, 0x20, 0x0a, + 0x76, 0x70, 0x2c, 0xb8, 0xe2, 0xf6, 0x72, 0x86, 0xc4, 0x39, 0x12, 0xc7, 0xdd, 0x10, 0x6b, 0x24, + 0xce, 0x91, 0x78, 0xd0, 0x5a, 0x7c, 0x14, 0x52, 0xb5, 0xd7, 0xef, 0xe0, 0x80, 0x47, 0x6e, 0xc8, + 0x43, 0xee, 0xa6, 0x04, 0x9d, 0xfe, 0x6e, 0xba, 0x4b, 0x37, 0xe9, 0x2a, 0x23, 0x5e, 0x7c, 0x6a, + 0x5a, 0x22, 0x31, 0x8d, 0x48, 0xb0, 0x47, 0x19, 0x88, 0xc3, 0xbc, 0xa9, 0x08, 0x14, 0xb9, 0xa4, + 0x9d, 0x45, 0xb7, 0x0c, 0x25, 0xfa, 0x4c, 0xd1, 0x08, 0x0a, 0x80, 0xe7, 0xff, 0x02, 0xc8, 0x60, + 0x0f, 0x22, 0x52, 0xc0, 0xad, 0x94, 0xe1, 0xfa, 0x8a, 0xf6, 0x5c, 0xca, 0x94, 0x54, 0xa2, 0x00, + 0x7a, 0x58, 0x7a, 0xcd, 0x97, 0x79, 0x79, 0x7d, 0x45, 0x28, 0x70, 0xa0, 0x80, 0x49, 0xca, 0x99, + 0x74, 0x07, 0xad, 0x0e, 0x28, 0x52, 0x84, 0xbf, 0xbc, 0x02, 0x1e, 0xf3, 0x1e, 0x0d, 0x0e, 0xcb, + 0xa0, 0xcd, 0x63, 0x0b, 0xcd, 0xad, 0x67, 0xe1, 0xb5, 0xd3, 0x4a, 0x7b, 0x1b, 0xd5, 0xf4, 0x95, + 0xef, 0x10, 0x45, 0xea, 0xd6, 0x92, 0xb5, 0x3c, 0xfb, 0xe4, 0x31, 0x36, 0xc9, 0x8f, 0xdf, 0x40, + 0x9e, 0xbd, 0xae, 0xc6, 0x83, 0x16, 0xde, 0xe8, 0xec, 0x43, 0xa0, 0xde, 0x81, 0x22, 0x9e, 0x7d, + 0x34, 0x6c, 0x54, 0x92, 0x61, 0x03, 0xe5, 0x67, 0xfe, 0x19, 0xab, 0xfd, 0x11, 0x4d, 0xc9, 0x18, + 0x82, 0x7a, 0x35, 0x65, 0x7f, 0x85, 0xaf, 0x3b, 0x57, 0xf8, 0x5c, 0xa3, 0x9b, 0x31, 0x04, 0xde, + 0x1d, 0x23, 0x34, 0xa5, 0x77, 0x7e, 0x4a, 0xdb, 0xfc, 0x6e, 0xa1, 0xfa, 0xb9, 0xca, 0x35, 0x16, + 0x0a, 0x90, 0xd2, 0xef, 0xf7, 0xc0, 0xde, 0x46, 0xd3, 0x31, 0x17, 0x4a, 0xd6, 0xad, 0xa5, 0x5b, + 0x37, 0x10, 0x6f, 0x73, 0xa1, 0xbc, 0x39, 0x23, 0x3e, 0xad, 0x77, 0xd2, 0xcf, 0x88, 0xb5, 0xbb, + 0x5d, 0xc1, 0xa3, 0x7a, 0xf5, 0x66, 0x02, 0x00, 0x22, 0x77, 0xf7, 0x46, 0xf0, 0xc8, 0x4f, 0x69, + 0x9b, 0xdf, 0x2c, 0xb4, 0x70, 0xae, 0xf2, 0x2d, 0x95, 0xca, 0xde, 0x2a, 0x84, 0x86, 0xaf, 0x17, + 0x9a, 0x46, 0xa7, 0x91, 0xdd, 0x35, 0x5a, 0xb5, 0xd1, 0xc9, 0x58, 0x60, 0x5b, 0x68, 0x9a, 0x2a, + 0x88, 0xa4, 0xf1, 0xf4, 0x62, 0x42, 0x4f, 0xf9, 0x85, 0xad, 0x69, 0x36, 0x3f, 0x23, 0x6d, 0xfe, + 0xbe, 0xe8, 0x48, 0x7b, 0xb7, 0x77, 0xd1, 0x6c, 0xcc, 0x77, 0x36, 0xa1, 0x07, 0x81, 0xe2, 0xc2, + 0x98, 0x5a, 0xb9, 0xa6, 0x29, 0xd2, 0x81, 0xde, 0x08, 0xea, 0xcd, 0x27, 0xc3, 0xc6, 0x6c, 0x3b, + 0xe7, 0xf2, 0xc7, 0x89, 0xed, 0x03, 0xb4, 0xc0, 0x48, 0x04, 0x32, 0x26, 0x01, 0x9c, 0xa9, 0x55, + 0x27, 0x57, 0xbb, 0x9f, 0x0c, 0x1b, 0x0b, 0xeb, 0x17, 0x19, 0xfd, 0xa2, 0x48, 0xf3, 0x6b, 0xc1, + 0x37, 0x17, 0xca, 0x7e, 0x8f, 0x6a, 0xe9, 0xcb, 0x0c, 0x78, 0x2f, 0x35, 0x7d, 0xdb, 0x7b, 0xa6, + 0x53, 0x69, 0x9b, 0xb3, 0x3f, 0xc3, 0xc6, 0x83, 0xab, 0xbe, 0x16, 0x3c, 0x2a, 0xf4, 0xcf, 0x68, + 0xec, 0x75, 0x34, 0xa5, 0x47, 0xd3, 0xb8, 0x2a, 0x7f, 0xcd, 0xfa, 0x3f, 0xc3, 0xd9, 0x7f, 0x86, + 0xd7, 0x98, 0xda, 0x10, 0x9b, 0x4a, 0x50, 0x16, 0x7a, 0x35, 0x3d, 0x82, 0xba, 0x39, 0x3f, 0xe5, + 0x69, 0xfe, 0xba, 0xd8, 0xb8, 0x7e, 0x7c, 0xf6, 0xfe, 0x7f, 0x0b, 0xec, 0x9e, 0x19, 0x93, 0xf2, + 0xd0, 0x22, 0x34, 0x43, 0xb3, 0x47, 0x6d, 0x46, 0xd2, 0x9b, 0x70, 0x24, 0xc7, 0xbe, 0x06, 0x6f, + 0xde, 0xc8, 0xce, 0x8c, 0x0e, 0x47, 0x1a, 0xde, 0xf2, 0xd1, 0xa9, 0x53, 0x39, 0x3e, 0x75, 0x2a, + 0x27, 0xa7, 0x4e, 0xe5, 0x73, 0xe2, 0x58, 0x47, 0x89, 0x63, 0x1d, 0x27, 0x8e, 0x75, 0x92, 0x38, + 0xd6, 0x8f, 0xc4, 0xb1, 0xbe, 0xfc, 0x74, 0x2a, 0x1f, 0xaa, 0x83, 0xd6, 0xdf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfa, 0x8d, 0x62, 0x1f, 0x5e, 0x07, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.proto new file mode 100644 index 000000000..3170b55f8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/generated.proto @@ -0,0 +1,127 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.networking.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/apis/extensions/v1beta1/generated.proto"; +import "k8s.io/kubernetes/pkg/apis/policy/v1beta1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +message NetworkPolicy { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + optional NetworkPolicySpec spec = 2; +} + +// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from. +message NetworkPolicyIngressRule { + // List of ports which should be made accessible on the pods selected for this + // rule. Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // If this field is present and contains at least one item, then this rule allows + // traffic only if the traffic matches at least one port in the list. + // +optional + repeated NetworkPolicyPort ports = 1; + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all sources (traffic not restricted by + // source). If this field is present and contains at least on item, this rule + // allows traffic only if the traffic matches at least one item in the from list. + // +optional + repeated NetworkPolicyPeer from = 2; +} + +// NetworkPolicyList is a list of NetworkPolicy objects. +message NetworkPolicyList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated NetworkPolicy items = 2; +} + +// NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields +// must be specified. +message NetworkPolicyPeer { + // This is a label selector which selects Pods in this namespace. This field + // follows standard label selector semantics. If present but empty, this selector + // selects all pods in this namespace. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1; + + // Selects Namespaces using cluster scoped-labels. This matches all pods in all + // namespaces selected by this label selector. This field follows standard label + // selector semantics. If present but empty, this selector selects all namespaces. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 2; +} + +// NetworkPolicyPort describes a port to allow traffic on +message NetworkPolicyPort { + // The protocol (TCP or UDP) which traffic must match. If not specified, this + // field defaults to TCP. + // +optional + optional string protocol = 1; + + // The port on the given protocol. This can either be a numerical or named port on + // a pod. If this field is not provided, this matches all port names and numbers. + // +optional + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2; +} + +// NetworkPolicySpec provides the specification of a NetworkPolicy +message NetworkPolicySpec { + // Selects the pods to which this NetworkPolicy object applies. The array of + // ingress rules is applied to any pods selected by this field. Multiple network + // policies can select the same set of pods. In this case, the ingress rules for + // each are combined additively. This field is NOT optional and follows standard + // label selector semantics. An empty podSelector matches all pods in this + // namespace. + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1; + + // List of ingress rules to be applied to the selected pods. Traffic is allowed to + // a pod if there are no NetworkPolicies selecting the pod + // (and cluster policy otherwise allows the traffic), OR if the traffic source is + // the pod's local node, OR if the traffic matches at least one ingress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy does not allow any traffic (and serves + // solely to ensure that the pods it selects are isolated by default) + // +optional + repeated NetworkPolicyIngressRule ingress = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/register.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/register.go new file mode 100644 index 000000000..c8d3c83bc --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "networking.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/types.generated.go new file mode 100644 index 000000000..da04aee42 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/types.generated.go @@ -0,0 +1,2322 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + pkg4_intstr "k8s.io/apimachinery/pkg/util/intstr" + pkg3_v1 "k8s.io/client-go/pkg/api/v1" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 pkg4_intstr.IntOrString + var v3 pkg3_v1.Protocol + var v4 time.Time + _, _, _, _, _ = v0, v1, v2, v3, v4 + } +} + +func (x *NetworkPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj11 int + var yyb11 bool + var yyhl11 bool = l >= 0 + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv12 := &x.Kind + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*string)(yyv12)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv14 := &x.APIVersion + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv16 := &x.ObjectMeta + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(yyv16) { + } else { + z.DecFallback(yyv16, false) + } + } + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv18 := &x.Spec + yyv18.CodecDecodeSelf(d) + } + for { + yyj11++ + if yyhl11 { + yyb11 = yyj11 > l + } else { + yyb11 = r.CheckBreak() + } + if yyb11 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj11-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.Ingress) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4 := &x.PodSelector + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else { + z.EncFallback(yy4) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.PodSelector + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else { + z.EncFallback(yy6) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podSelector": + if r.TryDecodeAsNil() { + x.PodSelector = pkg1_v1.LabelSelector{} + } else { + yyv4 := &x.PodSelector + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else { + z.DecFallback(yyv4, false) + } + } + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv6 := &x.Ingress + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSelector = pkg1_v1.LabelSelector{} + } else { + yyv9 := &x.PodSelector + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(yyv9) { + } else { + z.DecFallback(yyv9, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv11 := &x.Ingress + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyIngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = len(x.Ports) != 0 + yyq2[1] = len(x.From) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.From == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("from")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.From == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyIngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv4 := &x.Ports + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv4), d) + } + } + case "from": + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv6 := &x.From + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv6), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv9 := &x.Ports + yym10 := z.DecBinary() + _ = yym10 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv9), d) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv11 := &x.From + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv11), d) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Protocol != nil + yyq2[1] = x.Port != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.Protocol == nil { + r.EncodeNil() + } else { + yy4 := *x.Protocol + yysf5 := &yy4 + yysf5.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Protocol == nil { + r.EncodeNil() + } else { + yy6 := *x.Protocol + yysf7 := &yy6 + yysf7.CodecEncodeSelf(e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Port == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym9 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Port == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "protocol": + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg3_v1.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + case "port": + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg4_intstr.IntOrString) + } + yym6 := z.DecBinary() + _ = yym6 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym6 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj7 int + var yyb7 bool + var yyhl7 bool = l >= 0 + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg3_v1.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg4_intstr.IntOrString) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym10 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + for { + yyj7++ + if yyhl7 { + yyb7 = yyj7 > l + } else { + yyb7 = r.CheckBreak() + } + if yyb7 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj7-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPeer) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.PodSelector != nil + yyq2[1] = x.NamespaceSelector != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.PodSelector == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodSelector) { + } else { + z.EncFallback(x.PodSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodSelector == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodSelector) { + } else { + z.EncFallback(x.PodSelector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.NamespaceSelector) { + } else { + z.EncFallback(x.NamespaceSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaceSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.NamespaceSelector) { + } else { + z.EncFallback(x.NamespaceSelector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPeer) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "podSelector": + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(pkg1_v1.LabelSelector) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodSelector) { + } else { + z.DecFallback(x.PodSelector, false) + } + } + case "namespaceSelector": + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(pkg1_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.NamespaceSelector) { + } else { + z.DecFallback(x.NamespaceSelector, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj8 int + var yyb8 bool + var yyhl8 bool = l >= 0 + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(pkg1_v1.LabelSelector) + } + yym10 := z.DecBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodSelector) { + } else { + z.DecFallback(x.PodSelector, false) + } + } + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(pkg1_v1.LabelSelector) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.NamespaceSelector) { + } else { + z.DecFallback(x.NamespaceSelector, false) + } + } + for { + yyj8++ + if yyhl8 { + yyb8 = yyj8 > l + } else { + yyb8 = r.CheckBreak() + } + if yyb8 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj8-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceNetworkPolicyIngressRule(v []NetworkPolicyIngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyIngressRule(v *[]NetworkPolicyIngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicyIngressRule{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicyIngressRule, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicyIngressRule, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyIngressRule{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicyIngressRule{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyIngressRule{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicyIngressRule{}) // var yyz1 NetworkPolicyIngressRule + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyIngressRule{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicyIngressRule{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPort(v []NetworkPolicyPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPort(v *[]NetworkPolicyPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicyPort{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicyPort, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicyPort, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPort{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicyPort{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPort{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicyPort{}) // var yyz1 NetworkPolicyPort + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPort{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicyPort{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPeer(v []NetworkPolicyPeer, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPeer(v *[]NetworkPolicyPeer, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicyPeer{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicyPeer, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicyPeer, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPeer{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicyPeer{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPeer{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicyPeer{}) // var yyz1 NetworkPolicyPeer + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicyPeer{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicyPeer{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicy(v []NetworkPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicy(v *[]NetworkPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []NetworkPolicy{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 320) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]NetworkPolicy, yyrl1) + } + } else { + yyv1 = make([]NetworkPolicy, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicy{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, NetworkPolicy{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicy{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, NetworkPolicy{}) // var yyz1 NetworkPolicy + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = NetworkPolicy{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []NetworkPolicy{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/types.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/types.go new file mode 100644 index 000000000..a31026a67 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/types.go @@ -0,0 +1,120 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/pkg/api/v1" +) + +// +genclient=true + +// NetworkPolicy describes what network traffic is allowed for a set of Pods +type NetworkPolicy struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior for this NetworkPolicy. + // +optional + Spec NetworkPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// NetworkPolicySpec provides the specification of a NetworkPolicy +type NetworkPolicySpec struct { + // Selects the pods to which this NetworkPolicy object applies. The array of + // ingress rules is applied to any pods selected by this field. Multiple network + // policies can select the same set of pods. In this case, the ingress rules for + // each are combined additively. This field is NOT optional and follows standard + // label selector semantics. An empty podSelector matches all pods in this + // namespace. + PodSelector metav1.LabelSelector `json:"podSelector" protobuf:"bytes,1,opt,name=podSelector"` + + // List of ingress rules to be applied to the selected pods. Traffic is allowed to + // a pod if there are no NetworkPolicies selecting the pod + // (and cluster policy otherwise allows the traffic), OR if the traffic source is + // the pod's local node, OR if the traffic matches at least one ingress rule + // across all of the NetworkPolicy objects whose podSelector matches the pod. If + // this field is empty then this NetworkPolicy does not allow any traffic (and serves + // solely to ensure that the pods it selects are isolated by default) + // +optional + Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"` +} + +// NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods +// matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from. +type NetworkPolicyIngressRule struct { + // List of ports which should be made accessible on the pods selected for this + // rule. Each item in this list is combined using a logical OR. If this field is + // empty or missing, this rule matches all ports (traffic not restricted by port). + // If this field is present and contains at least one item, then this rule allows + // traffic only if the traffic matches at least one port in the list. + // +optional + Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"` + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. If this field is + // empty or missing, this rule matches all sources (traffic not restricted by + // source). If this field is present and contains at least on item, this rule + // allows traffic only if the traffic matches at least one item in the from list. + // +optional + From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"` +} + +// NetworkPolicyPort describes a port to allow traffic on +type NetworkPolicyPort struct { + // The protocol (TCP or UDP) which traffic must match. If not specified, this + // field defaults to TCP. + // +optional + Protocol *v1.Protocol `json:"protocol,omitempty" protobuf:"bytes,1,opt,name=protocol,casttype=k8s.io/kubernetes/pkg/api/v1.Protocol"` + + // The port on the given protocol. This can either be a numerical or named port on + // a pod. If this field is not provided, this matches all port names and numbers. + // +optional + Port *intstr.IntOrString `json:"port,omitempty" protobuf:"bytes,2,opt,name=port"` +} + +// NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields +// must be specified. +type NetworkPolicyPeer struct { + // This is a label selector which selects Pods in this namespace. This field + // follows standard label selector semantics. If present but empty, this selector + // selects all pods in this namespace. + // +optional + PodSelector *metav1.LabelSelector `json:"podSelector,omitempty" protobuf:"bytes,1,opt,name=podSelector"` + + // Selects Namespaces using cluster scoped-labels. This matches all pods in all + // namespaces selected by this label selector. This field follows standard label + // selector semantics. If present but empty, this selector selects all namespaces. + // +optional + NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` +} + +// NetworkPolicyList is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []NetworkPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..c3c911631 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/types_swagger_doc_generated.go @@ -0,0 +1,90 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_NetworkPolicy = map[string]string{ + "": "NetworkPolicy describes what network traffic is allowed for a set of Pods", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior for this NetworkPolicy.", +} + +func (NetworkPolicy) SwaggerDoc() map[string]string { + return map_NetworkPolicy +} + +var map_NetworkPolicyIngressRule = map[string]string{ + "": "NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from.", + "ports": "List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.", + "from": "List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.", +} + +func (NetworkPolicyIngressRule) SwaggerDoc() map[string]string { + return map_NetworkPolicyIngressRule +} + +var map_NetworkPolicyList = map[string]string{ + "": "NetworkPolicyList is a list of NetworkPolicy objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (NetworkPolicyList) SwaggerDoc() map[string]string { + return map_NetworkPolicyList +} + +var map_NetworkPolicyPeer = map[string]string{ + "": "NetworkPolicyPeer describes a peer to allow traffic from. Exactly one of its fields must be specified.", + "podSelector": "This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. If present but empty, this selector selects all pods in this namespace.", + "namespaceSelector": "Selects Namespaces using cluster scoped-labels. This matches all pods in all namespaces selected by this label selector. This field follows standard label selector semantics. If present but empty, this selector selects all namespaces.", +} + +func (NetworkPolicyPeer) SwaggerDoc() map[string]string { + return map_NetworkPolicyPeer +} + +var map_NetworkPolicyPort = map[string]string{ + "": "NetworkPolicyPort describes a port to allow traffic on", + "protocol": "The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP.", + "port": "The port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers.", +} + +func (NetworkPolicyPort) SwaggerDoc() map[string]string { + return map_NetworkPolicyPort +} + +var map_NetworkPolicySpec = map[string]string{ + "": "NetworkPolicySpec provides the specification of a NetworkPolicy", + "podSelector": "Selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.", + "ingress": "List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)", +} + +func (NetworkPolicySpec) SwaggerDoc() map[string]string { + return map_NetworkPolicySpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.conversion.go new file mode 100644 index 000000000..500438e92 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.conversion.go @@ -0,0 +1,195 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api "k8s.io/client-go/pkg/api" + api_v1 "k8s.io/client-go/pkg/api/v1" + networking "k8s.io/client-go/pkg/apis/networking" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_NetworkPolicy_To_networking_NetworkPolicy, + Convert_networking_NetworkPolicy_To_v1_NetworkPolicy, + Convert_v1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule, + Convert_networking_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule, + Convert_v1_NetworkPolicyList_To_networking_NetworkPolicyList, + Convert_networking_NetworkPolicyList_To_v1_NetworkPolicyList, + Convert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer, + Convert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer, + Convert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort, + Convert_networking_NetworkPolicyPort_To_v1_NetworkPolicyPort, + Convert_v1_NetworkPolicySpec_To_networking_NetworkPolicySpec, + Convert_networking_NetworkPolicySpec_To_v1_NetworkPolicySpec, + ) +} + +func autoConvert_v1_NetworkPolicy_To_networking_NetworkPolicy(in *NetworkPolicy, out *networking.NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1_NetworkPolicySpec_To_networking_NetworkPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1_NetworkPolicy_To_networking_NetworkPolicy is an autogenerated conversion function. +func Convert_v1_NetworkPolicy_To_networking_NetworkPolicy(in *NetworkPolicy, out *networking.NetworkPolicy, s conversion.Scope) error { + return autoConvert_v1_NetworkPolicy_To_networking_NetworkPolicy(in, out, s) +} + +func autoConvert_networking_NetworkPolicy_To_v1_NetworkPolicy(in *networking.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_networking_NetworkPolicySpec_To_v1_NetworkPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_networking_NetworkPolicy_To_v1_NetworkPolicy is an autogenerated conversion function. +func Convert_networking_NetworkPolicy_To_v1_NetworkPolicy(in *networking.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + return autoConvert_networking_NetworkPolicy_To_v1_NetworkPolicy(in, out, s) +} + +func autoConvert_v1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *networking.NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = *(*[]networking.NetworkPolicyPort)(unsafe.Pointer(&in.Ports)) + out.From = *(*[]networking.NetworkPolicyPeer)(unsafe.Pointer(&in.From)) + return nil +} + +// Convert_v1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule is an autogenerated conversion function. +func Convert_v1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *networking.NetworkPolicyIngressRule, s conversion.Scope) error { + return autoConvert_v1_NetworkPolicyIngressRule_To_networking_NetworkPolicyIngressRule(in, out, s) +} + +func autoConvert_networking_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule(in *networking.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + out.Ports = *(*[]NetworkPolicyPort)(unsafe.Pointer(&in.Ports)) + out.From = *(*[]NetworkPolicyPeer)(unsafe.Pointer(&in.From)) + return nil +} + +// Convert_networking_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule is an autogenerated conversion function. +func Convert_networking_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule(in *networking.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + return autoConvert_networking_NetworkPolicyIngressRule_To_v1_NetworkPolicyIngressRule(in, out, s) +} + +func autoConvert_v1_NetworkPolicyList_To_networking_NetworkPolicyList(in *NetworkPolicyList, out *networking.NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]networking.NetworkPolicy)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_NetworkPolicyList_To_networking_NetworkPolicyList is an autogenerated conversion function. +func Convert_v1_NetworkPolicyList_To_networking_NetworkPolicyList(in *NetworkPolicyList, out *networking.NetworkPolicyList, s conversion.Scope) error { + return autoConvert_v1_NetworkPolicyList_To_networking_NetworkPolicyList(in, out, s) +} + +func autoConvert_networking_NetworkPolicyList_To_v1_NetworkPolicyList(in *networking.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]NetworkPolicy, 0) + } else { + out.Items = *(*[]NetworkPolicy)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_networking_NetworkPolicyList_To_v1_NetworkPolicyList is an autogenerated conversion function. +func Convert_networking_NetworkPolicyList_To_v1_NetworkPolicyList(in *networking.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + return autoConvert_networking_NetworkPolicyList_To_v1_NetworkPolicyList(in, out, s) +} + +func autoConvert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(in *NetworkPolicyPeer, out *networking.NetworkPolicyPeer, s conversion.Scope) error { + out.PodSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.PodSelector)) + out.NamespaceSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) + return nil +} + +// Convert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer is an autogenerated conversion function. +func Convert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(in *NetworkPolicyPeer, out *networking.NetworkPolicyPeer, s conversion.Scope) error { + return autoConvert_v1_NetworkPolicyPeer_To_networking_NetworkPolicyPeer(in, out, s) +} + +func autoConvert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(in *networking.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + out.PodSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.PodSelector)) + out.NamespaceSelector = (*meta_v1.LabelSelector)(unsafe.Pointer(in.NamespaceSelector)) + return nil +} + +// Convert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer is an autogenerated conversion function. +func Convert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(in *networking.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + return autoConvert_networking_NetworkPolicyPeer_To_v1_NetworkPolicyPeer(in, out, s) +} + +func autoConvert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort(in *NetworkPolicyPort, out *networking.NetworkPolicyPort, s conversion.Scope) error { + out.Protocol = (*api.Protocol)(unsafe.Pointer(in.Protocol)) + out.Port = (*intstr.IntOrString)(unsafe.Pointer(in.Port)) + return nil +} + +// Convert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort is an autogenerated conversion function. +func Convert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort(in *NetworkPolicyPort, out *networking.NetworkPolicyPort, s conversion.Scope) error { + return autoConvert_v1_NetworkPolicyPort_To_networking_NetworkPolicyPort(in, out, s) +} + +func autoConvert_networking_NetworkPolicyPort_To_v1_NetworkPolicyPort(in *networking.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + out.Protocol = (*api_v1.Protocol)(unsafe.Pointer(in.Protocol)) + out.Port = (*intstr.IntOrString)(unsafe.Pointer(in.Port)) + return nil +} + +// Convert_networking_NetworkPolicyPort_To_v1_NetworkPolicyPort is an autogenerated conversion function. +func Convert_networking_NetworkPolicyPort_To_v1_NetworkPolicyPort(in *networking.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + return autoConvert_networking_NetworkPolicyPort_To_v1_NetworkPolicyPort(in, out, s) +} + +func autoConvert_v1_NetworkPolicySpec_To_networking_NetworkPolicySpec(in *NetworkPolicySpec, out *networking.NetworkPolicySpec, s conversion.Scope) error { + out.PodSelector = in.PodSelector + out.Ingress = *(*[]networking.NetworkPolicyIngressRule)(unsafe.Pointer(&in.Ingress)) + return nil +} + +// Convert_v1_NetworkPolicySpec_To_networking_NetworkPolicySpec is an autogenerated conversion function. +func Convert_v1_NetworkPolicySpec_To_networking_NetworkPolicySpec(in *NetworkPolicySpec, out *networking.NetworkPolicySpec, s conversion.Scope) error { + return autoConvert_v1_NetworkPolicySpec_To_networking_NetworkPolicySpec(in, out, s) +} + +func autoConvert_networking_NetworkPolicySpec_To_v1_NetworkPolicySpec(in *networking.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + out.PodSelector = in.PodSelector + out.Ingress = *(*[]NetworkPolicyIngressRule)(unsafe.Pointer(&in.Ingress)) + return nil +} + +// Convert_networking_NetworkPolicySpec_To_v1_NetworkPolicySpec is an autogenerated conversion function. +func Convert_networking_NetworkPolicySpec_To_v1_NetworkPolicySpec(in *networking.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + return autoConvert_networking_NetworkPolicySpec_To_v1_NetworkPolicySpec(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..6d9b335d4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.deepcopy.go @@ -0,0 +1,182 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api_v1 "k8s.io/client-go/pkg/api/v1" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NetworkPolicy, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NetworkPolicyIngressRule, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NetworkPolicyList, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NetworkPolicyPeer, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NetworkPolicyPort, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NetworkPolicySpec, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + ) +} + +// DeepCopy_v1_NetworkPolicy is an autogenerated deepcopy function. +func DeepCopy_v1_NetworkPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicy) + out := out.(*NetworkPolicy) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if err := DeepCopy_v1_NetworkPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1_NetworkPolicyIngressRule is an autogenerated deepcopy function. +func DeepCopy_v1_NetworkPolicyIngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyIngressRule) + out := out.(*NetworkPolicyIngressRule) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NetworkPolicyPort(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NetworkPolicyPeer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NetworkPolicyList is an autogenerated deepcopy function. +func DeepCopy_v1_NetworkPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyList) + out := out.(*NetworkPolicyList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NetworkPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1_NetworkPolicyPeer is an autogenerated deepcopy function. +func DeepCopy_v1_NetworkPolicyPeer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPeer) + out := out.(*NetworkPolicyPeer) + *out = *in + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.LabelSelector) + } + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*meta_v1.LabelSelector) + } + } + return nil + } +} + +// DeepCopy_v1_NetworkPolicyPort is an autogenerated deepcopy function. +func DeepCopy_v1_NetworkPolicyPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPort) + out := out.(*NetworkPolicyPort) + *out = *in + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(api_v1.Protocol) + **out = **in + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_v1_NetworkPolicySpec is an autogenerated deepcopy function. +func DeepCopy_v1_NetworkPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicySpec) + out := out.(*NetworkPolicySpec) + *out = *in + if newVal, err := c.DeepCopy(&in.PodSelector); err != nil { + return err + } else { + out.PodSelector = *newVal.(*meta_v1.LabelSelector) + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.defaults.go new file mode 100644 index 000000000..0319c88a7 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/v1/zz_generated.defaults.go @@ -0,0 +1,51 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&NetworkPolicy{}, func(obj interface{}) { SetObjectDefaults_NetworkPolicy(obj.(*NetworkPolicy)) }) + scheme.AddTypeDefaultingFunc(&NetworkPolicyList{}, func(obj interface{}) { SetObjectDefaults_NetworkPolicyList(obj.(*NetworkPolicyList)) }) + return nil +} + +func SetObjectDefaults_NetworkPolicy(in *NetworkPolicy) { + for i := range in.Spec.Ingress { + a := &in.Spec.Ingress[i] + for j := range a.Ports { + b := &a.Ports[j] + SetDefaults_NetworkPolicyPort(b) + } + } +} + +func SetObjectDefaults_NetworkPolicyList(in *NetworkPolicyList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_NetworkPolicy(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/networking/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/networking/zz_generated.deepcopy.go new file mode 100644 index 000000000..802868447 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/networking/zz_generated.deepcopy.go @@ -0,0 +1,182 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package networking + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + api "k8s.io/client-go/pkg/api" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_networking_NetworkPolicy, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_networking_NetworkPolicyIngressRule, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_networking_NetworkPolicyList, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_networking_NetworkPolicyPeer, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_networking_NetworkPolicyPort, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_networking_NetworkPolicySpec, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + ) +} + +// DeepCopy_networking_NetworkPolicy is an autogenerated deepcopy function. +func DeepCopy_networking_NetworkPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicy) + out := out.(*NetworkPolicy) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_networking_NetworkPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_networking_NetworkPolicyIngressRule is an autogenerated deepcopy function. +func DeepCopy_networking_NetworkPolicyIngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyIngressRule) + out := out.(*NetworkPolicyIngressRule) + *out = *in + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := DeepCopy_networking_NetworkPolicyPort(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := DeepCopy_networking_NetworkPolicyPeer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_networking_NetworkPolicyList is an autogenerated deepcopy function. +func DeepCopy_networking_NetworkPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyList) + out := out.(*NetworkPolicyList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_networking_NetworkPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_networking_NetworkPolicyPeer is an autogenerated deepcopy function. +func DeepCopy_networking_NetworkPolicyPeer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPeer) + out := out.(*NetworkPolicyPeer) + *out = *in + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + return nil + } +} + +// DeepCopy_networking_NetworkPolicyPort is an autogenerated deepcopy function. +func DeepCopy_networking_NetworkPolicyPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPort) + out := out.(*NetworkPolicyPort) + *out = *in + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(api.Protocol) + **out = **in + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_networking_NetworkPolicySpec is an autogenerated deepcopy function. +func DeepCopy_networking_NetworkPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicySpec) + out := out.(*NetworkPolicySpec) + *out = *in + if newVal, err := c.DeepCopy(&in.PodSelector); err != nil { + return err + } else { + out.PodSelector = *newVal.(*v1.LabelSelector) + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_networking_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/BUILD b/vendor/k8s.io/client-go/pkg/apis/policy/BUILD new file mode 100644 index 000000000..3fce62594 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/OWNERS b/vendor/k8s.io/client-go/pkg/apis/policy/OWNERS new file mode 100755 index 000000000..99e0bffb5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/OWNERS @@ -0,0 +1,4 @@ +approvers: +- sig-apps-api-approvers +reviewers: +- sig-apps-reviewers diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/doc.go b/vendor/k8s.io/client-go/pkg/apis/policy/doc.go new file mode 100644 index 000000000..8feeef8e4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/doc.go @@ -0,0 +1,17 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package policy diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/policy/install/BUILD new file mode 100644 index 000000000..5cb7b9beb --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/install/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/install/install.go b/vendor/k8s.io/client-go/pkg/apis/policy/install/install.go new file mode 100644 index 000000000..6253d5bc2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/install/install.go @@ -0,0 +1,49 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/policy" + "k8s.io/client-go/pkg/apis/policy/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: policy.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/policy", + AddInternalObjectsToScheme: policy.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/register.go b/vendor/k8s.io/client-go/pkg/apis/policy/register.go new file mode 100644 index 000000000..5aadc3f1b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/register.go @@ -0,0 +1,54 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package policy + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "policy" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this gets cleaned up when the types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &PodDisruptionBudget{}, + &PodDisruptionBudgetList{}, + &Eviction{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/types.go b/vendor/k8s.io/client-go/pkg/apis/policy/types.go new file mode 100644 index 000000000..4d49da174 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/types.go @@ -0,0 +1,120 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package policy + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +type PodDisruptionBudgetSpec struct { + // An eviction is allowed if at least "minAvailable" pods selected by + // "selector" will still be available after the eviction, i.e. even in the + // absence of the evicted pod. So for example you can prevent all voluntary + // evictions by specifying "100%". + // +optional + MinAvailable *intstr.IntOrString + + // Label query over pods whose evictions are managed by the disruption + // budget. + // +optional + Selector *metav1.LabelSelector + + // An eviction is allowed if at most "maxUnavailable" pods selected by + // "selector" are unavailable after the eviction, i.e. even in absence of + // the evicted pod. For example, one can prevent all voluntary evictions + // by specifying 0. This is a mutually exclusive setting with "minAvailable". + // +optional + MaxUnavailable *intstr.IntOrString +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +type PodDisruptionBudgetStatus struct { + // Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other + // status informatio is valid only if observedGeneration equals to PDB's object generation. + // +optional + ObservedGeneration int64 + + // DisruptedPods contains information about pods whose eviction was + // processed by the API server eviction subresource handler but has not + // yet been observed by the PodDisruptionBudget controller. + // A pod will be in this map from the time when the API server processed the + // eviction request to the time when the pod is seen by PDB controller + // as having been marked for deletion (or after a timeout). The key in the map is the name of the pod + // and the value is the time when the API server processed the eviction request. If + // the deletion didn't occur and a pod is still there it will be removed from + // the list automatically by PodDisruptionBudget controller after some time. + // If everything goes smooth this map should be empty for the most of the time. + // Large number of entries in the map may indicate problems with pod deletions. + DisruptedPods map[string]metav1.Time + + // Number of pod disruptions that are currently allowed. + PodDisruptionsAllowed int32 + + // current number of healthy pods + CurrentHealthy int32 + + // minimum desired number of healthy pods + DesiredHealthy int32 + + // total number of pods counted by this disruption budget + ExpectedPods int32 +} + +// +genclient=true + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +type PodDisruptionBudget struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // Specification of the desired behavior of the PodDisruptionBudget. + // +optional + Spec PodDisruptionBudgetSpec + // Most recently observed status of the PodDisruptionBudget. + // +optional + Status PodDisruptionBudgetStatus +} + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type PodDisruptionBudgetList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + Items []PodDisruptionBudget +} + +// +genclient=true +// +noMethods=true + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// This is a subresource of Pod. A request to cause such an eviction is +// created by POSTing to .../pods//eviction. +type Eviction struct { + metav1.TypeMeta + + // ObjectMeta describes the pod that is being evicted. + // +optional + metav1.ObjectMeta + + // DeleteOptions may be provided + // +optional + DeleteOptions *metav1.DeleteOptions +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/BUILD new file mode 100644 index 000000000..cd97fbaba --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/BUILD @@ -0,0 +1,36 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/policy:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/doc.go new file mode 100644 index 000000000..aadbe1416 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package policy is for any kind of policy object. Suitable examples, even if +// they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, +// NetworkPolicy, etc. +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.pb.go new file mode 100644 index 000000000..0116ded29 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.pb.go @@ -0,0 +1,1454 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/policy/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/policy/v1beta1/generated.proto + + It has these top-level messages: + Eviction + PodDisruptionBudget + PodDisruptionBudgetList + PodDisruptionBudgetSpec + PodDisruptionBudgetStatus +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *Eviction) Reset() { *m = Eviction{} } +func (*Eviction) ProtoMessage() {} +func (*Eviction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PodDisruptionBudget) Reset() { *m = PodDisruptionBudget{} } +func (*PodDisruptionBudget) ProtoMessage() {} +func (*PodDisruptionBudget) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *PodDisruptionBudgetList) Reset() { *m = PodDisruptionBudgetList{} } +func (*PodDisruptionBudgetList) ProtoMessage() {} +func (*PodDisruptionBudgetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *PodDisruptionBudgetSpec) Reset() { *m = PodDisruptionBudgetSpec{} } +func (*PodDisruptionBudgetSpec) ProtoMessage() {} +func (*PodDisruptionBudgetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *PodDisruptionBudgetStatus) Reset() { *m = PodDisruptionBudgetStatus{} } +func (*PodDisruptionBudgetStatus) ProtoMessage() {} +func (*PodDisruptionBudgetStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func init() { + proto.RegisterType((*Eviction)(nil), "k8s.io.client-go.pkg.apis.policy.v1beta1.Eviction") + proto.RegisterType((*PodDisruptionBudget)(nil), "k8s.io.client-go.pkg.apis.policy.v1beta1.PodDisruptionBudget") + proto.RegisterType((*PodDisruptionBudgetList)(nil), "k8s.io.client-go.pkg.apis.policy.v1beta1.PodDisruptionBudgetList") + proto.RegisterType((*PodDisruptionBudgetSpec)(nil), "k8s.io.client-go.pkg.apis.policy.v1beta1.PodDisruptionBudgetSpec") + proto.RegisterType((*PodDisruptionBudgetStatus)(nil), "k8s.io.client-go.pkg.apis.policy.v1beta1.PodDisruptionBudgetStatus") +} +func (m *Eviction) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Eviction) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.DeleteOptions != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DeleteOptions.Size())) + n2, err := m.DeleteOptions.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + } + return i, nil +} + +func (m *PodDisruptionBudget) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodDisruptionBudget) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n3, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n4, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n5, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + return i, nil +} + +func (m *PodDisruptionBudgetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodDisruptionBudgetList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodDisruptionBudgetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodDisruptionBudgetSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.MinAvailable != nil { + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MinAvailable.Size())) + n7, err := m.MinAvailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.Selector != nil { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n8, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + } + if m.MaxUnavailable != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.MaxUnavailable.Size())) + n9, err := m.MaxUnavailable.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + } + return i, nil +} + +func (m *PodDisruptionBudgetStatus) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodDisruptionBudgetStatus) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0x8 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) + if len(m.DisruptedPods) > 0 { + keysForDisruptedPods := make([]string, 0, len(m.DisruptedPods)) + for k := range m.DisruptedPods { + keysForDisruptedPods = append(keysForDisruptedPods, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDisruptedPods) + for _, k := range keysForDisruptedPods { + dAtA[i] = 0x12 + i++ + v := m.DisruptedPods[string(k)] + msgSize := 0 + if (&v) != nil { + msgSize = (&v).Size() + msgSize += 1 + sovGenerated(uint64(msgSize)) + } + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + msgSize + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64((&v).Size())) + n10, err := (&v).MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + } + } + dAtA[i] = 0x18 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PodDisruptionsAllowed)) + dAtA[i] = 0x20 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentHealthy)) + dAtA[i] = 0x28 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.DesiredHealthy)) + dAtA[i] = 0x30 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ExpectedPods)) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *Eviction) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.DeleteOptions != nil { + l = m.DeleteOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodDisruptionBudget) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodDisruptionBudgetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodDisruptionBudgetSpec) Size() (n int) { + var l int + _ = l + if m.MinAvailable != nil { + l = m.MinAvailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodDisruptionBudgetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + if len(m.DisruptedPods) > 0 { + for k, v := range m.DisruptedPods { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + n += 1 + sovGenerated(uint64(m.PodDisruptionsAllowed)) + n += 1 + sovGenerated(uint64(m.CurrentHealthy)) + n += 1 + sovGenerated(uint64(m.DesiredHealthy)) + n += 1 + sovGenerated(uint64(m.ExpectedPods)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Eviction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Eviction{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `DeleteOptions:` + strings.Replace(fmt.Sprintf("%v", this.DeleteOptions), "DeleteOptions", "k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudget) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudget{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodDisruptionBudgetSpec", "PodDisruptionBudgetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodDisruptionBudgetStatus", "PodDisruptionBudgetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudgetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodDisruptionBudget", "PodDisruptionBudget", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudgetSpec{`, + `MinAvailable:` + strings.Replace(fmt.Sprintf("%v", this.MinAvailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_apimachinery_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetStatus) String() string { + if this == nil { + return "nil" + } + keysForDisruptedPods := make([]string, 0, len(this.DisruptedPods)) + for k := range this.DisruptedPods { + keysForDisruptedPods = append(keysForDisruptedPods, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDisruptedPods) + mapStringForDisruptedPods := "map[string]k8s_io_apimachinery_pkg_apis_meta_v1.Time{" + for _, k := range keysForDisruptedPods { + mapStringForDisruptedPods += fmt.Sprintf("%v: %v,", k, this.DisruptedPods[k]) + } + mapStringForDisruptedPods += "}" + s := strings.Join([]string{`&PodDisruptionBudgetStatus{`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `DisruptedPods:` + mapStringForDisruptedPods + `,`, + `PodDisruptionsAllowed:` + fmt.Sprintf("%v", this.PodDisruptionsAllowed) + `,`, + `CurrentHealthy:` + fmt.Sprintf("%v", this.CurrentHealthy) + `,`, + `DesiredHealthy:` + fmt.Sprintf("%v", this.DesiredHealthy) + `,`, + `ExpectedPods:` + fmt.Sprintf("%v", this.ExpectedPods) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *Eviction) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Eviction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Eviction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeleteOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DeleteOptions == nil { + m.DeleteOptions = &k8s_io_apimachinery_pkg_apis_meta_v1.DeleteOptions{} + } + if err := m.DeleteOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudget) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudget: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudget: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudgetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudgetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudgetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodDisruptionBudget{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudgetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudgetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudgetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinAvailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MinAvailable == nil { + m.MinAvailable = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MinAvailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{} + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxUnavailable == nil { + m.MaxUnavailable = &k8s_io_apimachinery_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudgetStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudgetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudgetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DisruptedPods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.DisruptedPods == nil { + m.DisruptedPods = make(map[string]k8s_io_apimachinery_pkg_apis_meta_v1.Time) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_apimachinery_pkg_apis_meta_v1.Time{} + if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + m.DisruptedPods[mapkey] = *mapvalue + } else { + var mapvalue k8s_io_apimachinery_pkg_apis_meta_v1.Time + m.DisruptedPods[mapkey] = mapvalue + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PodDisruptionsAllowed", wireType) + } + m.PodDisruptionsAllowed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PodDisruptionsAllowed |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentHealthy", wireType) + } + m.CurrentHealthy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CurrentHealthy |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredHealthy", wireType) + } + m.DesiredHealthy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DesiredHealthy |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectedPods", wireType) + } + m.ExpectedPods = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExpectedPods |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/policy/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 791 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x5b, 0x6f, 0xe3, 0x44, + 0x14, 0xc7, 0xe3, 0x5c, 0x4a, 0x98, 0x4d, 0xa2, 0x32, 0xb0, 0x10, 0x22, 0xe1, 0xa0, 0x3c, 0x2d, + 0x88, 0x1d, 0xd3, 0x5d, 0x84, 0x0a, 0x0f, 0x2b, 0xd6, 0xa4, 0x82, 0xa2, 0x46, 0xa9, 0xa6, 0x20, + 0x24, 0x04, 0x12, 0x63, 0xfb, 0xd4, 0x19, 0xe2, 0x9b, 0xec, 0x71, 0x68, 0xde, 0xf8, 0x08, 0x3c, + 0xf0, 0xa1, 0x2a, 0x21, 0xa1, 0x3e, 0x56, 0x08, 0x45, 0xd4, 0x7c, 0x06, 0xde, 0x91, 0xed, 0xc9, + 0xc5, 0x4d, 0xa2, 0x06, 0x8a, 0xf6, 0x2d, 0x73, 0xf9, 0xfd, 0xff, 0xe7, 0xfc, 0x7d, 0x26, 0xe8, + 0xa3, 0xf1, 0x61, 0x44, 0xb8, 0xaf, 0x8d, 0x63, 0x03, 0x42, 0x0f, 0x04, 0x44, 0x5a, 0x30, 0xb6, + 0x35, 0x16, 0xf0, 0x48, 0x0b, 0x7c, 0x87, 0x9b, 0x53, 0x6d, 0x72, 0x60, 0x80, 0x60, 0x07, 0x9a, + 0x0d, 0x1e, 0x84, 0x4c, 0x80, 0x45, 0x82, 0xd0, 0x17, 0x3e, 0x7e, 0x27, 0x47, 0xc9, 0x12, 0x25, + 0xc1, 0xd8, 0x26, 0x29, 0x4a, 0x72, 0x94, 0x48, 0xb4, 0xf3, 0xd8, 0xe6, 0x62, 0x14, 0x1b, 0xc4, + 0xf4, 0x5d, 0xcd, 0xf6, 0x6d, 0x5f, 0xcb, 0x14, 0x8c, 0xf8, 0x3c, 0x5b, 0x65, 0x8b, 0xec, 0x57, + 0xae, 0xdc, 0xf9, 0x40, 0x16, 0xc5, 0x02, 0xee, 0x32, 0x73, 0xc4, 0x3d, 0x08, 0xa7, 0xcb, 0xb2, + 0x5c, 0x10, 0x4c, 0x9b, 0xac, 0xd5, 0xd3, 0xd1, 0xb6, 0x51, 0x61, 0xec, 0x09, 0xee, 0xc2, 0x1a, + 0xf0, 0xe1, 0x5d, 0x40, 0x64, 0x8e, 0xc0, 0x65, 0x6b, 0xdc, 0xd3, 0x6d, 0x5c, 0x2c, 0xb8, 0xa3, + 0x71, 0x4f, 0x44, 0x22, 0x5c, 0x83, 0xde, 0xdb, 0x1a, 0xf4, 0x86, 0x5e, 0x7a, 0xbf, 0x2b, 0xa8, + 0x7e, 0x34, 0xe1, 0xa6, 0xe0, 0xbe, 0x87, 0xbf, 0x47, 0xf5, 0xb4, 0x67, 0x8b, 0x09, 0xd6, 0x56, + 0xde, 0x56, 0x1e, 0x3d, 0x78, 0xf2, 0x3e, 0x91, 0xd9, 0xaf, 0x96, 0xb0, 0x4c, 0x3f, 0xbd, 0x4d, + 0x26, 0x07, 0x64, 0x68, 0xfc, 0x00, 0xa6, 0x18, 0x80, 0x60, 0x3a, 0xbe, 0x9c, 0x75, 0x4b, 0xc9, + 0xac, 0x8b, 0x96, 0x7b, 0x74, 0xa1, 0x8a, 0x1d, 0xd4, 0xb4, 0xc0, 0x01, 0x01, 0xc3, 0x20, 0x75, + 0x8c, 0xda, 0xe5, 0xcc, 0xe6, 0xe9, 0x6e, 0x36, 0xfd, 0x55, 0x54, 0x7f, 0x25, 0x99, 0x75, 0x9b, + 0x85, 0x2d, 0x5a, 0x14, 0xef, 0xfd, 0x5a, 0x46, 0xaf, 0x9e, 0xfa, 0x56, 0x9f, 0x47, 0x61, 0x9c, + 0x6d, 0xe9, 0xb1, 0x65, 0x83, 0x78, 0x01, 0x7d, 0x5a, 0xa8, 0x1a, 0x05, 0x60, 0xca, 0xf6, 0x74, + 0xb2, 0xf3, 0x04, 0x93, 0x0d, 0xf5, 0x9e, 0x05, 0x60, 0xea, 0x0d, 0xe9, 0x57, 0x4d, 0x57, 0x34, + 0x53, 0xc7, 0x0e, 0xda, 0x8b, 0x04, 0x13, 0x71, 0xd4, 0xae, 0x64, 0x3e, 0xfd, 0x7b, 0xfa, 0x64, + 0x5a, 0x7a, 0x4b, 0x3a, 0xed, 0xe5, 0x6b, 0x2a, 0x3d, 0x7a, 0x7f, 0x28, 0xe8, 0x8d, 0x0d, 0xd4, + 0x09, 0x8f, 0x04, 0xfe, 0x76, 0x2d, 0x51, 0xb2, 0x5b, 0xa2, 0x29, 0x9d, 0xe5, 0xb9, 0x2f, 0x5d, + 0xeb, 0xf3, 0x9d, 0x95, 0x34, 0x4d, 0x54, 0xe3, 0x02, 0xdc, 0x74, 0x5a, 0x2a, 0x8f, 0x1e, 0x3c, + 0x79, 0x76, 0xbf, 0x36, 0xf5, 0xa6, 0xb4, 0xaa, 0x1d, 0xa7, 0xa2, 0x34, 0xd7, 0xee, 0xfd, 0x56, + 0xde, 0xd8, 0x5e, 0x1a, 0x37, 0x3e, 0x47, 0x0d, 0x97, 0x7b, 0xcf, 0x27, 0x8c, 0x3b, 0xcc, 0x70, + 0xe0, 0xce, 0xa1, 0x49, 0xdf, 0x27, 0xc9, 0xdf, 0x27, 0x39, 0xf6, 0xc4, 0x30, 0x3c, 0x13, 0x21, + 0xf7, 0x6c, 0x7d, 0x3f, 0x99, 0x75, 0x1b, 0x83, 0x15, 0x25, 0x5a, 0xd0, 0xc5, 0xdf, 0xa1, 0x7a, + 0x04, 0x0e, 0x98, 0xc2, 0x0f, 0xff, 0xdd, 0xcb, 0x38, 0x61, 0x06, 0x38, 0x67, 0x12, 0xd5, 0x1b, + 0x69, 0x8e, 0xf3, 0x15, 0x5d, 0x48, 0x62, 0x07, 0xb5, 0x5c, 0x76, 0xf1, 0x95, 0xc7, 0x16, 0x8d, + 0x54, 0xfe, 0x63, 0x23, 0x38, 0x99, 0x75, 0x5b, 0x83, 0x82, 0x16, 0xbd, 0xa5, 0xdd, 0xfb, 0xbb, + 0x8a, 0xde, 0xdc, 0x3a, 0x65, 0xf8, 0x0b, 0x84, 0x7d, 0x23, 0x82, 0x70, 0x02, 0xd6, 0x67, 0xf9, + 0x7f, 0x12, 0xf7, 0xbd, 0x2c, 0xd8, 0x8a, 0xde, 0x91, 0x1f, 0x08, 0x0f, 0xd7, 0x6e, 0xd0, 0x0d, + 0x14, 0xfe, 0x45, 0x41, 0x4d, 0x2b, 0xb7, 0x01, 0xeb, 0xd4, 0xb7, 0xe6, 0x83, 0xf2, 0xf5, 0xff, + 0xf1, 0x1e, 0x48, 0x7f, 0x55, 0xf9, 0xc8, 0x13, 0xe1, 0x54, 0x7f, 0x28, 0x0b, 0x6c, 0x16, 0xce, + 0x68, 0xb1, 0x08, 0x3c, 0x40, 0xd8, 0x5a, 0x48, 0x46, 0xcf, 0x1d, 0xc7, 0xff, 0x11, 0xac, 0x2c, + 0xf2, 0x9a, 0xfe, 0x96, 0x54, 0x78, 0x58, 0xf0, 0x9d, 0x5f, 0xa2, 0x1b, 0x40, 0xfc, 0x0c, 0xb5, + 0xcc, 0x38, 0x0c, 0xc1, 0x13, 0x9f, 0x03, 0x73, 0xc4, 0x68, 0xda, 0xae, 0x66, 0x52, 0xaf, 0x4b, + 0xa9, 0xd6, 0xa7, 0x85, 0x53, 0x7a, 0xeb, 0x76, 0xca, 0x5b, 0x10, 0xf1, 0x10, 0xac, 0x39, 0x5f, + 0x2b, 0xf2, 0xfd, 0xc2, 0x29, 0xbd, 0x75, 0x1b, 0x1f, 0xa2, 0x06, 0x5c, 0x04, 0x60, 0xce, 0x33, + 0xde, 0xcb, 0xe8, 0xd7, 0x24, 0xdd, 0x38, 0x5a, 0x39, 0xa3, 0x85, 0x9b, 0x1d, 0x07, 0xe1, 0xf5, + 0x10, 0xf1, 0x3e, 0xaa, 0x8c, 0x61, 0x9a, 0x7d, 0xf2, 0x97, 0x69, 0xfa, 0x13, 0x7f, 0x82, 0x6a, + 0x13, 0xe6, 0xc4, 0x20, 0x67, 0xff, 0xdd, 0xdd, 0x66, 0xff, 0x4b, 0xee, 0x02, 0xcd, 0xc1, 0x8f, + 0xcb, 0x87, 0x8a, 0xfe, 0xf8, 0xf2, 0x46, 0x2d, 0x5d, 0xdd, 0xa8, 0xa5, 0xeb, 0x1b, 0xb5, 0xf4, + 0x53, 0xa2, 0x2a, 0x97, 0x89, 0xaa, 0x5c, 0x25, 0xaa, 0x72, 0x9d, 0xa8, 0xca, 0x9f, 0x89, 0xaa, + 0xfc, 0xfc, 0x97, 0x5a, 0xfa, 0xe6, 0x25, 0xf9, 0xe1, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x58, + 0xfb, 0xa1, 0x14, 0x99, 0x08, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.proto new file mode 100644 index 000000000..1cdde5a18 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/generated.proto @@ -0,0 +1,114 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.policy.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// This is a subresource of Pod. A request to cause such an eviction is +// created by POSTing to .../pods//evictions. +message Eviction { + // ObjectMeta describes the pod that is being evicted. + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // DeleteOptions may be provided + optional k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions deleteOptions = 2; +} + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +message PodDisruptionBudget { + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the PodDisruptionBudget. + optional PodDisruptionBudgetSpec spec = 2; + + // Most recently observed status of the PodDisruptionBudget. + optional PodDisruptionBudgetStatus status = 3; +} + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +message PodDisruptionBudgetList { + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + repeated PodDisruptionBudget items = 2; +} + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +message PodDisruptionBudgetSpec { + // An eviction is allowed if at least "minAvailable" pods selected by + // "selector" will still be available after the eviction, i.e. even in the + // absence of the evicted pod. So for example you can prevent all voluntary + // evictions by specifying "100%". + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString minAvailable = 1; + + // Label query over pods whose evictions are managed by the disruption + // budget. + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2; + + // An eviction is allowed if at most "maxUnavailable" pods selected by + // "selector" are unavailable after the eviction, i.e. even in absence of + // the evicted pod. For example, one can prevent all voluntary evictions + // by specifying 0. This is a mutually exclusive setting with "minAvailable". + optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUnavailable = 3; +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +message PodDisruptionBudgetStatus { + // Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other + // status informatio is valid only if observedGeneration equals to PDB's object generation. + // +optional + optional int64 observedGeneration = 1; + + // DisruptedPods contains information about pods whose eviction was + // processed by the API server eviction subresource handler but has not + // yet been observed by the PodDisruptionBudget controller. + // A pod will be in this map from the time when the API server processed the + // eviction request to the time when the pod is seen by PDB controller + // as having been marked for deletion (or after a timeout). The key in the map is the name of the pod + // and the value is the time when the API server processed the eviction request. If + // the deletion didn't occur and a pod is still there it will be removed from + // the list automatically by PodDisruptionBudget controller after some time. + // If everything goes smooth this map should be empty for the most of the time. + // Large number of entries in the map may indicate problems with pod deletions. + map disruptedPods = 2; + + // Number of pod disruptions that are currently allowed. + optional int32 disruptionsAllowed = 3; + + // current number of healthy pods + optional int32 currentHealthy = 4; + + // minimum desired number of healthy pods + optional int32 desiredHealthy = 5; + + // total number of pods counted by this disruption budget + optional int32 expectedPods = 6; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/register.go new file mode 100644 index 000000000..a3ccc94e6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/register.go @@ -0,0 +1,61 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "policy" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, RegisterDefaults) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PodDisruptionBudget{}, + &PodDisruptionBudgetList{}, + &Eviction{}, + ) + // Add the watch version that applies + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.generated.go new file mode 100644 index 000000000..a4636a80a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.generated.go @@ -0,0 +1,2305 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg3_types "k8s.io/apimachinery/pkg/types" + pkg1_intstr "k8s.io/apimachinery/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_v1.LabelSelector + var v1 pkg3_types.UID + var v2 pkg1_intstr.IntOrString + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *PodDisruptionBudgetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.MinAvailable != nil + yyq2[1] = x.Selector != nil + yyq2[2] = x.MaxUnavailable != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + if x.MinAvailable == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(x.MinAvailable) { + } else if !yym4 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MinAvailable) + } else { + z.EncFallback(x.MinAvailable) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minAvailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MinAvailable == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(x.MinAvailable) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MinAvailable) + } else { + z.EncFallback(x.MinAvailable) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym11 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "minAvailable": + if r.TryDecodeAsNil() { + if x.MinAvailable != nil { + x.MinAvailable = nil + } + } else { + if x.MinAvailable == nil { + x.MinAvailable = new(pkg1_intstr.IntOrString) + } + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(x.MinAvailable) { + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MinAvailable) + } else { + z.DecFallback(x.MinAvailable, false) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_v1.LabelSelector) + } + yym7 := z.DecBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "maxUnavailable": + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg1_intstr.IntOrString) + } + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MinAvailable != nil { + x.MinAvailable = nil + } + } else { + if x.MinAvailable == nil { + x.MinAvailable = new(pkg1_intstr.IntOrString) + } + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x.MinAvailable) { + } else if !yym12 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MinAvailable) + } else { + z.DecFallback(x.MinAvailable, false) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_v1.LabelSelector) + } + yym14 := z.DecBinary() + _ = yym14 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg1_intstr.IntOrString) + } + yym16 := z.DecBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym16 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudgetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.ObservedGeneration != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 5 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.DisruptedPods == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + h.encMapstringv1_Time((map[string]pkg2_v1.Time)(x.DisruptedPods), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("disruptedPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DisruptedPods == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + h.encMapstringv1_Time((map[string]pkg2_v1.Time)(x.DisruptedPods), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeInt(int64(x.PodDisruptionsAllowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("disruptionsAllowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeInt(int64(x.PodDisruptionsAllowed)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeInt(int64(x.CurrentHealthy)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentHealthy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeInt(int64(x.CurrentHealthy)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.DesiredHealthy)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredHealthy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeInt(int64(x.DesiredHealthy)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeInt(int64(x.ExpectedPods)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("expectedPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeInt(int64(x.ExpectedPods)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv4 := &x.ObservedGeneration + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*int64)(yyv4)) = int64(r.DecodeInt(64)) + } + } + case "disruptedPods": + if r.TryDecodeAsNil() { + x.DisruptedPods = nil + } else { + yyv6 := &x.DisruptedPods + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + h.decMapstringv1_Time((*map[string]pkg2_v1.Time)(yyv6), d) + } + } + case "disruptionsAllowed": + if r.TryDecodeAsNil() { + x.PodDisruptionsAllowed = 0 + } else { + yyv8 := &x.PodDisruptionsAllowed + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*int32)(yyv8)) = int32(r.DecodeInt(32)) + } + } + case "currentHealthy": + if r.TryDecodeAsNil() { + x.CurrentHealthy = 0 + } else { + yyv10 := &x.CurrentHealthy + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*int32)(yyv10)) = int32(r.DecodeInt(32)) + } + } + case "desiredHealthy": + if r.TryDecodeAsNil() { + x.DesiredHealthy = 0 + } else { + yyv12 := &x.DesiredHealthy + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + *((*int32)(yyv12)) = int32(r.DecodeInt(32)) + } + } + case "expectedPods": + if r.TryDecodeAsNil() { + x.ExpectedPods = 0 + } else { + yyv14 := &x.ExpectedPods + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*int32)(yyv14)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj16 int + var yyb16 bool + var yyhl16 bool = l >= 0 + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + yyv17 := &x.ObservedGeneration + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*int64)(yyv17)) = int64(r.DecodeInt(64)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DisruptedPods = nil + } else { + yyv19 := &x.DisruptedPods + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decMapstringv1_Time((*map[string]pkg2_v1.Time)(yyv19), d) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodDisruptionsAllowed = 0 + } else { + yyv21 := &x.PodDisruptionsAllowed + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*int32)(yyv21)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentHealthy = 0 + } else { + yyv23 := &x.CurrentHealthy + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + *((*int32)(yyv23)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredHealthy = 0 + } else { + yyv25 := &x.DesiredHealthy + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + *((*int32)(yyv25)) = int32(r.DecodeInt(32)) + } + } + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExpectedPods = 0 + } else { + yyv27 := &x.ExpectedPods + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + *((*int32)(yyv27)) = int32(r.DecodeInt(32)) + } + } + for { + yyj16++ + if yyhl16 { + yyb16 = yyj16 > l + } else { + yyb16 = r.CheckBreak() + } + if yyb16 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj16-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudget) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy15 := &x.Spec + yy15.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Spec + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy20 := &x.Status + yy20.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy22 := &x.Status + yy22.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudget) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudget) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodDisruptionBudgetSpec{} + } else { + yyv10 := &x.Spec + yyv10.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodDisruptionBudgetStatus{} + } else { + yyv11 := &x.Status + yyv11.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudget) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodDisruptionBudgetSpec{} + } else { + yyv19 := &x.Spec + yyv19.CodecDecodeSelf(d) + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodDisruptionBudgetStatus{} + } else { + yyv20 := &x.Status + yyv20.CodecDecodeSelf(d) + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudgetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePodDisruptionBudget(([]PodDisruptionBudget)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePodDisruptionBudget(([]PodDisruptionBudget)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePodDisruptionBudget((*[]PodDisruptionBudget)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePodDisruptionBudget((*[]PodDisruptionBudget)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Eviction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = x.DeleteOptions != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.DeleteOptions == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeleteOptions) { + } else { + z.EncFallback(x.DeleteOptions) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deleteOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeleteOptions == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeleteOptions) { + } else { + z.EncFallback(x.DeleteOptions) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Eviction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Eviction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "deleteOptions": + if r.TryDecodeAsNil() { + if x.DeleteOptions != nil { + x.DeleteOptions = nil + } + } else { + if x.DeleteOptions == nil { + x.DeleteOptions = new(pkg2_v1.DeleteOptions) + } + yym11 := z.DecBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeleteOptions) { + } else { + z.DecFallback(x.DeleteOptions, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Eviction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeleteOptions != nil { + x.DeleteOptions = nil + } + } else { + if x.DeleteOptions == nil { + x.DeleteOptions = new(pkg2_v1.DeleteOptions) + } + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeleteOptions) { + } else { + z.DecFallback(x.DeleteOptions, false) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encMapstringv1_Time(v map[string]pkg2_v1.Time, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk1, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym2 := z.EncBinary() + _ = yym2 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk1)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3 := &yyv1 + yym4 := z.EncBinary() + _ = yym4 + if false { + } else if z.HasExtensions() && z.EncExt(yy3) { + } else if yym4 { + z.EncBinaryMarshal(yy3) + } else if !yym4 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3) + } else { + z.EncFallback(yy3) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringv1_Time(v *map[string]pkg2_v1.Time, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyl1 := r.ReadMapStart() + yybh1 := z.DecBasicHandle() + if yyv1 == nil { + yyrl1, _ := z.DecInferLen(yyl1, yybh1.MaxInitLen, 40) + yyv1 = make(map[string]pkg2_v1.Time, yyrl1) + *v = yyv1 + } + var yymk1 string + var yymv1 pkg2_v1.Time + var yymg1 bool + if yybh1.MapValueReset { + yymg1 = true + } + if yyl1 > 0 { + for yyj1 := 0; yyj1 < yyl1; yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv2 := &yymk1 + yym3 := z.DecBinary() + _ = yym3 + if false { + } else { + *((*string)(yyv2)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = pkg2_v1.Time{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = pkg2_v1.Time{} + } else { + yyv4 := &yymv1 + yym5 := z.DecBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4) { + } else if yym5 { + z.DecBinaryUnmarshal(yyv4) + } else if !yym5 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4) + } else { + z.DecFallback(yyv4, false) + } + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } else if yyl1 < 0 { + for yyj1 := 0; !r.CheckBreak(); yyj1++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk1 = "" + } else { + yyv6 := &yymk1 + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + + if yymg1 { + yymv1 = yyv1[yymk1] + } else { + yymv1 = pkg2_v1.Time{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv1 = pkg2_v1.Time{} + } else { + yyv8 := &yymv1 + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else if yym9 { + z.DecBinaryUnmarshal(yyv8) + } else if !yym9 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv8) + } else { + z.DecFallback(yyv8, false) + } + } + + if yyv1 != nil { + yyv1[yymk1] = yymv1 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PodDisruptionBudget{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 320) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PodDisruptionBudget, yyrl1) + } + } else { + yyv1 = make([]PodDisruptionBudget, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodDisruptionBudget{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PodDisruptionBudget{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodDisruptionBudget{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PodDisruptionBudget{}) // var yyz1 PodDisruptionBudget + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PodDisruptionBudget{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PodDisruptionBudget{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.go new file mode 100644 index 000000000..6cc56256a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types.go @@ -0,0 +1,111 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" +) + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +type PodDisruptionBudgetSpec struct { + // An eviction is allowed if at least "minAvailable" pods selected by + // "selector" will still be available after the eviction, i.e. even in the + // absence of the evicted pod. So for example you can prevent all voluntary + // evictions by specifying "100%". + MinAvailable *intstr.IntOrString `json:"minAvailable,omitempty" protobuf:"bytes,1,opt,name=minAvailable"` + + // Label query over pods whose evictions are managed by the disruption + // budget. + Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // An eviction is allowed if at most "maxUnavailable" pods selected by + // "selector" are unavailable after the eviction, i.e. even in absence of + // the evicted pod. For example, one can prevent all voluntary evictions + // by specifying 0. This is a mutually exclusive setting with "minAvailable". + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,3,opt,name=maxUnavailable"` +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +type PodDisruptionBudgetStatus struct { + // Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other + // status informatio is valid only if observedGeneration equals to PDB's object generation. + // +optional + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // DisruptedPods contains information about pods whose eviction was + // processed by the API server eviction subresource handler but has not + // yet been observed by the PodDisruptionBudget controller. + // A pod will be in this map from the time when the API server processed the + // eviction request to the time when the pod is seen by PDB controller + // as having been marked for deletion (or after a timeout). The key in the map is the name of the pod + // and the value is the time when the API server processed the eviction request. If + // the deletion didn't occur and a pod is still there it will be removed from + // the list automatically by PodDisruptionBudget controller after some time. + // If everything goes smooth this map should be empty for the most of the time. + // Large number of entries in the map may indicate problems with pod deletions. + DisruptedPods map[string]metav1.Time `json:"disruptedPods" protobuf:"bytes,2,rep,name=disruptedPods"` + + // Number of pod disruptions that are currently allowed. + PodDisruptionsAllowed int32 `json:"disruptionsAllowed" protobuf:"varint,3,opt,name=disruptionsAllowed"` + + // current number of healthy pods + CurrentHealthy int32 `json:"currentHealthy" protobuf:"varint,4,opt,name=currentHealthy"` + + // minimum desired number of healthy pods + DesiredHealthy int32 `json:"desiredHealthy" protobuf:"varint,5,opt,name=desiredHealthy"` + + // total number of pods counted by this disruption budget + ExpectedPods int32 `json:"expectedPods" protobuf:"varint,6,opt,name=expectedPods"` +} + +// +genclient=true + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +type PodDisruptionBudget struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the PodDisruptionBudget. + Spec PodDisruptionBudgetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + // Most recently observed status of the PodDisruptionBudget. + Status PodDisruptionBudgetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type PodDisruptionBudgetList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true +// +noMethods=true + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// This is a subresource of Pod. A request to cause such an eviction is +// created by POSTing to .../pods//evictions. +type Eviction struct { + metav1.TypeMeta `json:",inline"` + + // ObjectMeta describes the pod that is being evicted. + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // DeleteOptions may be provided + DeleteOptions *metav1.DeleteOptions `json:"deleteOptions,omitempty" protobuf:"bytes,2,opt,name=deleteOptions"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..29432506d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,83 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_Eviction = map[string]string{ + "": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions.", + "metadata": "ObjectMeta describes the pod that is being evicted.", + "deleteOptions": "DeleteOptions may be provided", +} + +func (Eviction) SwaggerDoc() map[string]string { + return map_Eviction +} + +var map_PodDisruptionBudget = map[string]string{ + "": "PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods", + "spec": "Specification of the desired behavior of the PodDisruptionBudget.", + "status": "Most recently observed status of the PodDisruptionBudget.", +} + +func (PodDisruptionBudget) SwaggerDoc() map[string]string { + return map_PodDisruptionBudget +} + +var map_PodDisruptionBudgetList = map[string]string{ + "": "PodDisruptionBudgetList is a collection of PodDisruptionBudgets.", +} + +func (PodDisruptionBudgetList) SwaggerDoc() map[string]string { + return map_PodDisruptionBudgetList +} + +var map_PodDisruptionBudgetSpec = map[string]string{ + "": "PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.", + "minAvailable": "An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying \"100%\".", + "selector": "Label query over pods whose evictions are managed by the disruption budget.", + "maxUnavailable": "An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\".", +} + +func (PodDisruptionBudgetSpec) SwaggerDoc() map[string]string { + return map_PodDisruptionBudgetSpec +} + +var map_PodDisruptionBudgetStatus = map[string]string{ + "": "PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.", + "observedGeneration": "Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other status informatio is valid only if observedGeneration equals to PDB's object generation.", + "disruptedPods": "DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.", + "disruptionsAllowed": "Number of pod disruptions that are currently allowed.", + "currentHealthy": "current number of healthy pods", + "desiredHealthy": "minimum desired number of healthy pods", + "expectedPods": "total number of pods counted by this disruption budget", +} + +func (PodDisruptionBudgetStatus) SwaggerDoc() map[string]string { + return map_PodDisruptionBudgetStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..b10663a02 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.conversion.go @@ -0,0 +1,185 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + policy "k8s.io/client-go/pkg/apis/policy" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_Eviction_To_policy_Eviction, + Convert_policy_Eviction_To_v1beta1_Eviction, + Convert_v1beta1_PodDisruptionBudget_To_policy_PodDisruptionBudget, + Convert_policy_PodDisruptionBudget_To_v1beta1_PodDisruptionBudget, + Convert_v1beta1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList, + Convert_policy_PodDisruptionBudgetList_To_v1beta1_PodDisruptionBudgetList, + Convert_v1beta1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec, + Convert_policy_PodDisruptionBudgetSpec_To_v1beta1_PodDisruptionBudgetSpec, + Convert_v1beta1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus, + Convert_policy_PodDisruptionBudgetStatus_To_v1beta1_PodDisruptionBudgetStatus, + ) +} + +func autoConvert_v1beta1_Eviction_To_policy_Eviction(in *Eviction, out *policy.Eviction, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.DeleteOptions = (*v1.DeleteOptions)(unsafe.Pointer(in.DeleteOptions)) + return nil +} + +// Convert_v1beta1_Eviction_To_policy_Eviction is an autogenerated conversion function. +func Convert_v1beta1_Eviction_To_policy_Eviction(in *Eviction, out *policy.Eviction, s conversion.Scope) error { + return autoConvert_v1beta1_Eviction_To_policy_Eviction(in, out, s) +} + +func autoConvert_policy_Eviction_To_v1beta1_Eviction(in *policy.Eviction, out *Eviction, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.DeleteOptions = (*v1.DeleteOptions)(unsafe.Pointer(in.DeleteOptions)) + return nil +} + +// Convert_policy_Eviction_To_v1beta1_Eviction is an autogenerated conversion function. +func Convert_policy_Eviction_To_v1beta1_Eviction(in *policy.Eviction, out *Eviction, s conversion.Scope) error { + return autoConvert_policy_Eviction_To_v1beta1_Eviction(in, out, s) +} + +func autoConvert_v1beta1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in *PodDisruptionBudget, out *policy.PodDisruptionBudget, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1beta1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_PodDisruptionBudget_To_policy_PodDisruptionBudget is an autogenerated conversion function. +func Convert_v1beta1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in *PodDisruptionBudget, out *policy.PodDisruptionBudget, s conversion.Scope) error { + return autoConvert_v1beta1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudget_To_v1beta1_PodDisruptionBudget(in *policy.PodDisruptionBudget, out *PodDisruptionBudget, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_policy_PodDisruptionBudgetSpec_To_v1beta1_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_policy_PodDisruptionBudgetStatus_To_v1beta1_PodDisruptionBudgetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_policy_PodDisruptionBudget_To_v1beta1_PodDisruptionBudget is an autogenerated conversion function. +func Convert_policy_PodDisruptionBudget_To_v1beta1_PodDisruptionBudget(in *policy.PodDisruptionBudget, out *PodDisruptionBudget, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudget_To_v1beta1_PodDisruptionBudget(in, out, s) +} + +func autoConvert_v1beta1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList(in *PodDisruptionBudgetList, out *policy.PodDisruptionBudgetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]policy.PodDisruptionBudget)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList is an autogenerated conversion function. +func Convert_v1beta1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList(in *PodDisruptionBudgetList, out *policy.PodDisruptionBudgetList, s conversion.Scope) error { + return autoConvert_v1beta1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudgetList_To_v1beta1_PodDisruptionBudgetList(in *policy.PodDisruptionBudgetList, out *PodDisruptionBudgetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]PodDisruptionBudget, 0) + } else { + out.Items = *(*[]PodDisruptionBudget)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_policy_PodDisruptionBudgetList_To_v1beta1_PodDisruptionBudgetList is an autogenerated conversion function. +func Convert_policy_PodDisruptionBudgetList_To_v1beta1_PodDisruptionBudgetList(in *policy.PodDisruptionBudgetList, out *PodDisruptionBudgetList, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudgetList_To_v1beta1_PodDisruptionBudgetList(in, out, s) +} + +func autoConvert_v1beta1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(in *PodDisruptionBudgetSpec, out *policy.PodDisruptionBudgetSpec, s conversion.Scope) error { + out.MinAvailable = (*intstr.IntOrString)(unsafe.Pointer(in.MinAvailable)) + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.MaxUnavailable = (*intstr.IntOrString)(unsafe.Pointer(in.MaxUnavailable)) + return nil +} + +// Convert_v1beta1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec is an autogenerated conversion function. +func Convert_v1beta1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(in *PodDisruptionBudgetSpec, out *policy.PodDisruptionBudgetSpec, s conversion.Scope) error { + return autoConvert_v1beta1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudgetSpec_To_v1beta1_PodDisruptionBudgetSpec(in *policy.PodDisruptionBudgetSpec, out *PodDisruptionBudgetSpec, s conversion.Scope) error { + out.MinAvailable = (*intstr.IntOrString)(unsafe.Pointer(in.MinAvailable)) + out.Selector = (*v1.LabelSelector)(unsafe.Pointer(in.Selector)) + out.MaxUnavailable = (*intstr.IntOrString)(unsafe.Pointer(in.MaxUnavailable)) + return nil +} + +// Convert_policy_PodDisruptionBudgetSpec_To_v1beta1_PodDisruptionBudgetSpec is an autogenerated conversion function. +func Convert_policy_PodDisruptionBudgetSpec_To_v1beta1_PodDisruptionBudgetSpec(in *policy.PodDisruptionBudgetSpec, out *PodDisruptionBudgetSpec, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudgetSpec_To_v1beta1_PodDisruptionBudgetSpec(in, out, s) +} + +func autoConvert_v1beta1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(in *PodDisruptionBudgetStatus, out *policy.PodDisruptionBudgetStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.DisruptedPods = *(*map[string]v1.Time)(unsafe.Pointer(&in.DisruptedPods)) + out.PodDisruptionsAllowed = in.PodDisruptionsAllowed + out.CurrentHealthy = in.CurrentHealthy + out.DesiredHealthy = in.DesiredHealthy + out.ExpectedPods = in.ExpectedPods + return nil +} + +// Convert_v1beta1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus is an autogenerated conversion function. +func Convert_v1beta1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(in *PodDisruptionBudgetStatus, out *policy.PodDisruptionBudgetStatus, s conversion.Scope) error { + return autoConvert_v1beta1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudgetStatus_To_v1beta1_PodDisruptionBudgetStatus(in *policy.PodDisruptionBudgetStatus, out *PodDisruptionBudgetStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.DisruptedPods = *(*map[string]v1.Time)(unsafe.Pointer(&in.DisruptedPods)) + out.PodDisruptionsAllowed = in.PodDisruptionsAllowed + out.CurrentHealthy = in.CurrentHealthy + out.DesiredHealthy = in.DesiredHealthy + out.ExpectedPods = in.ExpectedPods + return nil +} + +// Convert_policy_PodDisruptionBudgetStatus_To_v1beta1_PodDisruptionBudgetStatus is an autogenerated conversion function. +func Convert_policy_PodDisruptionBudgetStatus_To_v1beta1_PodDisruptionBudgetStatus(in *policy.PodDisruptionBudgetStatus, out *PodDisruptionBudgetStatus, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudgetStatus_To_v1beta1_PodDisruptionBudgetStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..cf8ddbd62 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,153 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Eviction, InType: reflect.TypeOf(&Eviction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodDisruptionBudgetStatus, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})}, + ) +} + +// DeepCopy_v1beta1_Eviction is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Eviction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Eviction) + out := out.(*Eviction) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.DeleteOptions) + } + } + return nil + } +} + +// DeepCopy_v1beta1_PodDisruptionBudget is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudget) + out := out.(*PodDisruptionBudget) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1beta1_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_PodDisruptionBudgetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1beta1_PodDisruptionBudgetList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodDisruptionBudgetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetList) + out := out.(*PodDisruptionBudgetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodDisruptionBudget, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_PodDisruptionBudget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_PodDisruptionBudgetSpec is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodDisruptionBudgetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetSpec) + out := out.(*PodDisruptionBudgetSpec) + *out = *in + if in.MinAvailable != nil { + in, out := &in.MinAvailable, &out.MinAvailable + *out = new(intstr.IntOrString) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_v1beta1_PodDisruptionBudgetStatus is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PodDisruptionBudgetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetStatus) + out := out.(*PodDisruptionBudgetStatus) + *out = *in + if in.DisruptedPods != nil { + in, out := &in.DisruptedPods, &out.DisruptedPods + *out = make(map[string]v1.Time) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..e24e70be3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/v1beta1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/policy/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/policy/zz_generated.deepcopy.go new file mode 100644 index 000000000..ba27f9072 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/policy/zz_generated.deepcopy.go @@ -0,0 +1,153 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package policy + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + intstr "k8s.io/apimachinery/pkg/util/intstr" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_Eviction, InType: reflect.TypeOf(&Eviction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetStatus, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})}, + ) +} + +// DeepCopy_policy_Eviction is an autogenerated deepcopy function. +func DeepCopy_policy_Eviction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Eviction) + out := out.(*Eviction) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.DeleteOptions) + } + } + return nil + } +} + +// DeepCopy_policy_PodDisruptionBudget is an autogenerated deepcopy function. +func DeepCopy_policy_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudget) + out := out.(*PodDisruptionBudget) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_policy_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_policy_PodDisruptionBudgetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_policy_PodDisruptionBudgetList is an autogenerated deepcopy function. +func DeepCopy_policy_PodDisruptionBudgetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetList) + out := out.(*PodDisruptionBudgetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodDisruptionBudget, len(*in)) + for i := range *in { + if err := DeepCopy_policy_PodDisruptionBudget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_policy_PodDisruptionBudgetSpec is an autogenerated deepcopy function. +func DeepCopy_policy_PodDisruptionBudgetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetSpec) + out := out.(*PodDisruptionBudgetSpec) + *out = *in + if in.MinAvailable != nil { + in, out := &in.MinAvailable, &out.MinAvailable + *out = new(intstr.IntOrString) + **out = **in + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + if newVal, err := c.DeepCopy(*in); err != nil { + return err + } else { + *out = newVal.(*v1.LabelSelector) + } + } + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(intstr.IntOrString) + **out = **in + } + return nil + } +} + +// DeepCopy_policy_PodDisruptionBudgetStatus is an autogenerated deepcopy function. +func DeepCopy_policy_PodDisruptionBudgetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetStatus) + out := out.(*PodDisruptionBudgetStatus) + *out = *in + if in.DisruptedPods != nil { + in, out := &in.DisruptedPods, &out.DisruptedPods + *out = make(map[string]v1.Time) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/BUILD b/vendor/k8s.io/client-go/pkg/apis/rbac/BUILD new file mode 100644 index 000000000..2825eb324 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "helpers.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/OWNERS b/vendor/k8s.io/client-go/pkg/apis/rbac/OWNERS new file mode 100755 index 000000000..a35477b92 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/OWNERS @@ -0,0 +1,17 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- deads2k +- sttts +- ncdc +- timothysc +- dims +- krousey +- mml +- mbohlool +- david-mcmahon +- ericchiang +- lixiaobing10051267 +- jianhuiz +- liggitt diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/doc.go b/vendor/k8s.io/client-go/pkg/apis/rbac/doc.go new file mode 100644 index 000000000..c5f057484 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=rbac.authorization.k8s.io +package rbac diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/helpers.go b/vendor/k8s.io/client-go/pkg/apis/rbac/helpers.go new file mode 100644 index 000000000..9895b484b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/helpers.go @@ -0,0 +1,396 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rbac + +import ( + "fmt" + "strings" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/sets" +) + +func RoleRefGroupKind(roleRef RoleRef) schema.GroupKind { + return schema.GroupKind{Group: roleRef.APIGroup, Kind: roleRef.Kind} +} + +func VerbMatches(rule *PolicyRule, requestedVerb string) bool { + for _, ruleVerb := range rule.Verbs { + if ruleVerb == VerbAll { + return true + } + if ruleVerb == requestedVerb { + return true + } + } + + return false +} + +func APIGroupMatches(rule *PolicyRule, requestedGroup string) bool { + for _, ruleGroup := range rule.APIGroups { + if ruleGroup == APIGroupAll { + return true + } + if ruleGroup == requestedGroup { + return true + } + } + + return false +} + +func ResourceMatches(rule *PolicyRule, requestedResource string) bool { + for _, ruleResource := range rule.Resources { + if ruleResource == ResourceAll { + return true + } + if ruleResource == requestedResource { + return true + } + } + + return false +} + +func ResourceNameMatches(rule *PolicyRule, requestedName string) bool { + if len(rule.ResourceNames) == 0 { + return true + } + + for _, ruleName := range rule.ResourceNames { + if ruleName == requestedName { + return true + } + } + + return false +} + +func NonResourceURLMatches(rule *PolicyRule, requestedURL string) bool { + for _, ruleURL := range rule.NonResourceURLs { + if ruleURL == NonResourceAll { + return true + } + if ruleURL == requestedURL { + return true + } + if strings.HasSuffix(ruleURL, "*") && strings.HasPrefix(requestedURL, strings.TrimRight(ruleURL, "*")) { + return true + } + } + + return false +} + +// subjectsStrings returns users, groups, serviceaccounts, unknown for display purposes. +func SubjectsStrings(subjects []Subject) ([]string, []string, []string, []string) { + users := []string{} + groups := []string{} + sas := []string{} + others := []string{} + + for _, subject := range subjects { + switch subject.Kind { + case ServiceAccountKind: + sas = append(sas, fmt.Sprintf("%s/%s", subject.Namespace, subject.Name)) + + case UserKind: + users = append(users, subject.Name) + + case GroupKind: + groups = append(groups, subject.Name) + + default: + others = append(others, fmt.Sprintf("%s/%s/%s", subject.Kind, subject.Namespace, subject.Name)) + } + } + + return users, groups, sas, others +} + +func (r PolicyRule) String() string { + return "PolicyRule" + r.CompactString() +} + +// CompactString exposes a compact string representation for use in escalation error messages +func (r PolicyRule) CompactString() string { + formatStringParts := []string{} + formatArgs := []interface{}{} + if len(r.Resources) > 0 { + formatStringParts = append(formatStringParts, "Resources:%q") + formatArgs = append(formatArgs, r.Resources) + } + if len(r.NonResourceURLs) > 0 { + formatStringParts = append(formatStringParts, "NonResourceURLs:%q") + formatArgs = append(formatArgs, r.NonResourceURLs) + } + if len(r.ResourceNames) > 0 { + formatStringParts = append(formatStringParts, "ResourceNames:%q") + formatArgs = append(formatArgs, r.ResourceNames) + } + if len(r.APIGroups) > 0 { + formatStringParts = append(formatStringParts, "APIGroups:%q") + formatArgs = append(formatArgs, r.APIGroups) + } + if len(r.Verbs) > 0 { + formatStringParts = append(formatStringParts, "Verbs:%q") + formatArgs = append(formatArgs, r.Verbs) + } + formatString := "{" + strings.Join(formatStringParts, ", ") + "}" + return fmt.Sprintf(formatString, formatArgs...) +} + +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +type PolicyRuleBuilder struct { + PolicyRule PolicyRule +} + +func NewRule(verbs ...string) *PolicyRuleBuilder { + return &PolicyRuleBuilder{ + PolicyRule: PolicyRule{Verbs: sets.NewString(verbs...).List()}, + } +} + +func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder { + r.PolicyRule.APIGroups = combine(r.PolicyRule.APIGroups, groups) + return r +} + +func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder { + r.PolicyRule.Resources = combine(r.PolicyRule.Resources, resources) + return r +} + +func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder { + r.PolicyRule.ResourceNames = combine(r.PolicyRule.ResourceNames, names) + return r +} + +func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder { + r.PolicyRule.NonResourceURLs = combine(r.PolicyRule.NonResourceURLs, urls) + return r +} + +func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule { + ret, err := r.Rule() + if err != nil { + panic(err) + } + return ret +} + +func combine(s1, s2 []string) []string { + s := sets.NewString(s1...) + s.Insert(s2...) + return s.List() +} + +func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) { + if len(r.PolicyRule.Verbs) == 0 { + return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule) + } + + switch { + case len(r.PolicyRule.NonResourceURLs) > 0: + if len(r.PolicyRule.APIGroups) != 0 || len(r.PolicyRule.Resources) != 0 || len(r.PolicyRule.ResourceNames) != 0 { + return PolicyRule{}, fmt.Errorf("non-resource rule may not have apiGroups, resources, or resourceNames: %#v", r.PolicyRule) + } + case len(r.PolicyRule.Resources) > 0: + if len(r.PolicyRule.NonResourceURLs) != 0 { + return PolicyRule{}, fmt.Errorf("resource rule may not have nonResourceURLs: %#v", r.PolicyRule) + } + if len(r.PolicyRule.APIGroups) == 0 { + // this a common bug + return PolicyRule{}, fmt.Errorf("resource rule must have apiGroups: %#v", r.PolicyRule) + } + // if resource names are set, then the verb must not be list, watch, create, or deletecollection + // since verbs are largely opaque, we don't want to accidentally prevent things like "impersonate", so + // we will backlist common mistakes, not whitelist acceptable options. + if len(r.PolicyRule.ResourceNames) != 0 { + illegalVerbs := []string{} + for _, verb := range r.PolicyRule.Verbs { + switch verb { + case "list", "watch", "create", "deletecollection": + illegalVerbs = append(illegalVerbs, verb) + } + } + if len(illegalVerbs) > 0 { + return PolicyRule{}, fmt.Errorf("verbs %v do not have names available: %#v", illegalVerbs, r.PolicyRule) + } + } + + default: + return PolicyRule{}, fmt.Errorf("a rule must have either nonResourceURLs or resources: %#v", r.PolicyRule) + } + + return r.PolicyRule, nil +} + +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +type ClusterRoleBindingBuilder struct { + ClusterRoleBinding ClusterRoleBinding +} + +func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder { + return &ClusterRoleBindingBuilder{ + ClusterRoleBinding: ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: clusterRoleName}, + RoleRef: RoleRef{ + APIGroup: GroupName, + Kind: "ClusterRole", + Name: clusterRoleName, + }, + }, + } +} + +func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBindingBuilder { + for _, group := range groups { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: GroupKind, APIGroup: GroupName, Name: group}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBuilder { + for _, user := range users { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: UserKind, APIGroup: GroupName, Name: user}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *ClusterRoleBindingBuilder { + for _, saName := range serviceAccountNames { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding { + ret, err := r.Binding() + if err != nil { + panic(err) + } + return ret +} + +func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) { + if len(r.ClusterRoleBinding.Subjects) == 0 { + return ClusterRoleBinding{}, fmt.Errorf("subjects are required: %#v", r.ClusterRoleBinding) + } + + return r.ClusterRoleBinding, nil +} + +// RoleBindingBuilder let's us attach methods. It is similar to +// ClusterRoleBindingBuilder above. +type RoleBindingBuilder struct { + RoleBinding RoleBinding +} + +// NewRoleBinding creates a RoleBinding builder that can be used +// to define the subjects of a role binding. At least one of +// the `Groups`, `Users` or `SAs` method must be called before +// calling the `Binding*` methods. +func NewRoleBinding(roleName, namespace string) *RoleBindingBuilder { + return &RoleBindingBuilder{ + RoleBinding: RoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: roleName, + Namespace: namespace, + }, + RoleRef: RoleRef{ + APIGroup: GroupName, + Kind: "Role", + Name: roleName, + }, + }, + } +} + +func NewRoleBindingForClusterRole(roleName, namespace string) *RoleBindingBuilder { + return &RoleBindingBuilder{ + RoleBinding: RoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: roleName, + Namespace: namespace, + }, + RoleRef: RoleRef{ + APIGroup: GroupName, + Kind: "ClusterRole", + Name: roleName, + }, + }, + } +} + +// Groups adds the specified groups as the subjects of the RoleBinding. +func (r *RoleBindingBuilder) Groups(groups ...string) *RoleBindingBuilder { + for _, group := range groups { + r.RoleBinding.Subjects = append(r.RoleBinding.Subjects, Subject{Kind: GroupKind, Name: group}) + } + return r +} + +// Users adds the specified users as the subjects of the RoleBinding. +func (r *RoleBindingBuilder) Users(users ...string) *RoleBindingBuilder { + for _, user := range users { + r.RoleBinding.Subjects = append(r.RoleBinding.Subjects, Subject{Kind: UserKind, Name: user}) + } + return r +} + +// SAs adds the specified service accounts as the subjects of the +// RoleBinding. +func (r *RoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *RoleBindingBuilder { + for _, saName := range serviceAccountNames { + r.RoleBinding.Subjects = append(r.RoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName}) + } + return r +} + +// BindingOrDie calls the binding method and panics if there is an error. +func (r *RoleBindingBuilder) BindingOrDie() RoleBinding { + ret, err := r.Binding() + if err != nil { + panic(err) + } + return ret +} + +// Binding builds and returns the RoleBinding API object from the builder +// object. +func (r *RoleBindingBuilder) Binding() (RoleBinding, error) { + if len(r.RoleBinding.Subjects) == 0 { + return RoleBinding{}, fmt.Errorf("subjects are required: %#v", r.RoleBinding) + } + + return r.RoleBinding, nil +} + +type SortableRuleSlice []PolicyRule + +func (s SortableRuleSlice) Len() int { return len(s) } +func (s SortableRuleSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +func (s SortableRuleSlice) Less(i, j int) bool { + return strings.Compare(s[i].String(), s[j].String()) < 0 +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/rbac/install/BUILD new file mode 100644 index 000000000..97d0df565 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/install/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/install/install.go b/vendor/k8s.io/client-go/pkg/apis/rbac/install/install.go new file mode 100644 index 000000000..f92c11e06 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/install/install.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the batch API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/rbac" + "k8s.io/client-go/pkg/apis/rbac/v1alpha1" + "k8s.io/client-go/pkg/apis/rbac/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: rbac.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version, v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/rbac", + RootScopedKinds: sets.NewString("ClusterRole", "ClusterRoleBinding"), + AddInternalObjectsToScheme: rbac.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/register.go b/vendor/k8s.io/client-go/pkg/apis/rbac/register.go new file mode 100644 index 000000000..f4a838bd8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/register.go @@ -0,0 +1,58 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rbac + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Role{}, + &RoleBinding{}, + &RoleBindingList{}, + &RoleList{}, + + &ClusterRole{}, + &ClusterRoleBinding{}, + &ClusterRoleBindingList{}, + &ClusterRoleList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/types.go b/vendor/k8s.io/client-go/pkg/apis/rbac/types.go new file mode 100644 index 000000000..ddc2456a0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/types.go @@ -0,0 +1,188 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rbac + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +const ( + APIGroupAll = "*" + ResourceAll = "*" + VerbAll = "*" + NonResourceAll = "*" + + GroupKind = "Group" + ServiceAccountKind = "ServiceAccount" + UserKind = "User" + + // AutoUpdateAnnotationKey is the name of an annotation which prevents reconciliation if set to "false" + AutoUpdateAnnotationKey = "rbac.authorization.kubernetes.io/autoupdate" +) + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +type PolicyRule struct { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + Verbs []string + + // APIGroups is the name of the APIGroup that contains the resources. + // If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. + APIGroups []string + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + Resources []string + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + ResourceNames []string + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // If an action is not a resource API request, then the URL is split on '/' and is checked against the NonResourceURLs to look for a match. + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + NonResourceURLs []string +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +type Subject struct { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + Kind string + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + APIGroup string + // Name of the object being referenced. + Name string + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + Namespace string +} + +// RoleRef contains information that points to the role being used +type RoleRef struct { + // APIGroup is the group for the resource being referenced + APIGroup string + // Kind is the type of resource being referenced + Kind string + // Name is the name of resource being referenced + Name string +} + +// +genclient=true + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ObjectMeta + + // Rules holds all the PolicyRules for this Role + Rules []PolicyRule +} + +// +genclient=true + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +type RoleBinding struct { + metav1.TypeMeta + metav1.ObjectMeta + + // Subjects holds references to the objects the role applies to. + Subjects []Subject + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef +} + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ListMeta + + // Items is a list of roleBindings + Items []RoleBinding +} + +// RoleList is a collection of Roles +type RoleList struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ListMeta + + // Items is a list of roles + Items []Role +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ObjectMeta + + // Rules holds all the PolicyRules for this ClusterRole + Rules []PolicyRule +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +type ClusterRoleBinding struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ObjectMeta + + // Subjects holds references to the objects the role applies to. + Subjects []Subject + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ListMeta + + // Items is a list of ClusterRoleBindings + Items []ClusterRoleBinding +} + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + metav1.TypeMeta + // Standard object's metadata. + metav1.ListMeta + + // Items is a list of ClusterRoles + Items []ClusterRole +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/BUILD b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/BUILD new file mode 100644 index 000000000..13f1a850c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/BUILD @@ -0,0 +1,37 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "defaults.go", + "doc.go", + "generated.pb.go", + "helpers.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/conversion.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/conversion.go new file mode 100644 index 000000000..22b3c4076 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/conversion.go @@ -0,0 +1,81 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime/schema" + api "k8s.io/client-go/pkg/apis/rbac" +) + +// allAuthenticated matches k8s.io/apiserver/pkg/authentication/user.AllAuthenticated, +// but we don't want an client library (which must include types), depending on a server library +const allAuthenticated = "system:authenticated" + +func Convert_v1alpha1_Subject_To_rbac_Subject(in *Subject, out *api.Subject, s conversion.Scope) error { + if err := autoConvert_v1alpha1_Subject_To_rbac_Subject(in, out, s); err != nil { + return err + } + + // specifically set the APIGroup for the three subjects recognized in v1alpha1 + switch { + case in.Kind == ServiceAccountKind: + out.APIGroup = "" + case in.Kind == UserKind: + out.APIGroup = GroupName + case in.Kind == GroupKind: + out.APIGroup = GroupName + default: + // For unrecognized kinds, use the group portion of the APIVersion if we can get it + if gv, err := schema.ParseGroupVersion(in.APIVersion); err == nil { + out.APIGroup = gv.Group + } + } + + // User * in v1alpha1 will only match all authenticated users + // This is only for compatibility with old RBAC bindings + // Special treatment for * should not be included in v1beta1 + if out.Kind == UserKind && out.APIGroup == GroupName && out.Name == "*" { + out.Kind = GroupKind + out.Name = allAuthenticated + } + + return nil +} + +func Convert_rbac_Subject_To_v1alpha1_Subject(in *api.Subject, out *Subject, s conversion.Scope) error { + if err := autoConvert_rbac_Subject_To_v1alpha1_Subject(in, out, s); err != nil { + return err + } + + switch { + case in.Kind == ServiceAccountKind && in.APIGroup == "": + // Make service accounts v1 + out.APIVersion = "v1" + case in.Kind == UserKind && in.APIGroup == GroupName: + // users in the rbac API group get v1alpha + out.APIVersion = SchemeGroupVersion.String() + case in.Kind == GroupKind && in.APIGroup == GroupName: + // groups in the rbac API group get v1alpha + out.APIVersion = SchemeGroupVersion.String() + default: + // otherwise, they get an unspecified version of a group + out.APIVersion = schema.GroupVersion{Group: in.APIGroup}.String() + } + + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/defaults.go new file mode 100644 index 000000000..daa86a0e1 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/defaults.go @@ -0,0 +1,48 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_ClusterRoleBinding(obj *ClusterRoleBinding) { + if len(obj.RoleRef.APIGroup) == 0 { + obj.RoleRef.APIGroup = GroupName + } +} +func SetDefaults_RoleBinding(obj *RoleBinding) { + if len(obj.RoleRef.APIGroup) == 0 { + obj.RoleRef.APIGroup = GroupName + } +} +func SetDefaults_Subject(obj *Subject) { + if len(obj.APIVersion) == 0 { + switch obj.Kind { + case ServiceAccountKind: + obj.APIVersion = "v1" + case UserKind: + obj.APIVersion = SchemeGroupVersion.String() + case GroupKind: + obj.APIVersion = SchemeGroupVersion.String() + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/doc.go new file mode 100644 index 000000000..f43f7bc08 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=rbac.authorization.k8s.io +package v1alpha1 diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.pb.go new file mode 100644 index 000000000..3977142e4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.pb.go @@ -0,0 +1,2822 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/generated.proto + + It has these top-level messages: + ClusterRole + ClusterRoleBinding + ClusterRoleBindingBuilder + ClusterRoleBindingList + ClusterRoleList + PolicyRule + PolicyRuleBuilder + Role + RoleBinding + RoleBindingList + RoleList + RoleRef + Subject +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ClusterRole) Reset() { *m = ClusterRole{} } +func (*ClusterRole) ProtoMessage() {} +func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBinding{} } +func (*ClusterRoleBinding) ProtoMessage() {} +func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *ClusterRoleBindingBuilder) Reset() { *m = ClusterRoleBindingBuilder{} } +func (*ClusterRoleBindingBuilder) ProtoMessage() {} +func (*ClusterRoleBindingBuilder) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} } +func (*ClusterRoleBindingList) ProtoMessage() {} +func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} } +func (*ClusterRoleList) ProtoMessage() {} +func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *PolicyRule) Reset() { *m = PolicyRule{} } +func (*PolicyRule) ProtoMessage() {} +func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *PolicyRuleBuilder) Reset() { *m = PolicyRuleBuilder{} } +func (*PolicyRuleBuilder) ProtoMessage() {} +func (*PolicyRuleBuilder) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *Role) Reset() { *m = Role{} } +func (*Role) ProtoMessage() {} +func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *RoleBinding) Reset() { *m = RoleBinding{} } +func (*RoleBinding) ProtoMessage() {} +func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *RoleBindingList) Reset() { *m = RoleBindingList{} } +func (*RoleBindingList) ProtoMessage() {} +func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *RoleList) Reset() { *m = RoleList{} } +func (*RoleList) ProtoMessage() {} +func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *RoleRef) Reset() { *m = RoleRef{} } +func (*RoleRef) ProtoMessage() {} +func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *Subject) Reset() { *m = Subject{} } +func (*Subject) ProtoMessage() {} +func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func init() { + proto.RegisterType((*ClusterRole)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRole") + proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingBuilder)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleBindingBuilder") + proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleBindingList") + proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleList") + proto.RegisterType((*PolicyRule)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.PolicyRule") + proto.RegisterType((*PolicyRuleBuilder)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.PolicyRuleBuilder") + proto.RegisterType((*Role)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.Role") + proto.RegisterType((*RoleBinding)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.RoleBinding") + proto.RegisterType((*RoleBindingList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.RoleBindingList") + proto.RegisterType((*RoleList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.RoleList") + proto.RegisterType((*RoleRef)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.RoleRef") + proto.RegisterType((*Subject)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.Subject") +} +func (m *ClusterRole) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRole) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ClusterRoleBinding) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n2, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Subjects) > 0 { + for _, msg := range m.Subjects { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size())) + n3, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *ClusterRoleBindingBuilder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleBindingBuilder) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ClusterRoleBinding.Size())) + n4, err := m.ClusterRoleBinding.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + return i, nil +} + +func (m *ClusterRoleBindingList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleBindingList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ClusterRoleList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PolicyRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyRule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Verbs) > 0 { + for _, s := range m.Verbs { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + dAtA[i] = 0x32 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *PolicyRuleBuilder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyRuleBuilder) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PolicyRule.Size())) + n7, err := m.PolicyRule.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + return i, nil +} + +func (m *Role) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Role) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n8, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleBinding) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + if len(m.Subjects) > 0 { + for _, msg := range m.Subjects { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size())) + n10, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + return i, nil +} + +func (m *RoleBindingList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleBindingList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n11, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n12, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleRef) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleRef) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup))) + i += copy(dAtA[i:], m.APIGroup) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *Subject) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Subject) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion))) + i += copy(dAtA[i:], m.APIVersion) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *ClusterRole) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterRoleBinding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subjects) > 0 { + for _, e := range m.Subjects { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.RoleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ClusterRoleBindingBuilder) Size() (n int) { + var l int + _ = l + l = m.ClusterRoleBinding.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ClusterRoleBindingList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterRoleList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PolicyRule) Size() (n int) { + var l int + _ = l + if len(m.Verbs) > 0 { + for _, s := range m.Verbs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PolicyRuleBuilder) Size() (n int) { + var l int + _ = l + l = m.PolicyRule.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Role) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleBinding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subjects) > 0 { + for _, e := range m.Subjects { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.RoleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *RoleBindingList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleRef) Size() (n int) { + var l int + _ = l + l = len(m.APIGroup) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Subject) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *ClusterRole) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRole{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBinding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBinding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subjects:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subjects), "Subject", "Subject", 1), `&`, ``, 1) + `,`, + `RoleRef:` + strings.Replace(strings.Replace(this.RoleRef.String(), "RoleRef", "RoleRef", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBindingBuilder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBindingBuilder{`, + `ClusterRoleBinding:` + strings.Replace(strings.Replace(this.ClusterRoleBinding.String(), "ClusterRoleBinding", "ClusterRoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBindingList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBindingList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ClusterRoleBinding", "ClusterRoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ClusterRole", "ClusterRole", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PolicyRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PolicyRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`, + `NonResourceURLs:` + fmt.Sprintf("%v", this.NonResourceURLs) + `,`, + `}`, + }, "") + return s +} +func (this *PolicyRuleBuilder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PolicyRuleBuilder{`, + `PolicyRule:` + strings.Replace(strings.Replace(this.PolicyRule.String(), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Role) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Role{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleBinding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleBinding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subjects:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subjects), "Subject", "Subject", 1), `&`, ``, 1) + `,`, + `RoleRef:` + strings.Replace(strings.Replace(this.RoleRef.String(), "RoleRef", "RoleRef", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleBindingList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleBindingList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RoleBinding", "RoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Role", "Role", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleRef) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleRef{`, + `APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *Subject) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Subject{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ClusterRole) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRole: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRole: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBinding) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subjects", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subjects = append(m.Subjects, Subject{}) + if err := m.Subjects[len(m.Subjects)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoleRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBindingBuilder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBindingBuilder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBindingBuilder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterRoleBinding", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ClusterRoleBinding.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBindingList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBindingList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBindingList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterRoleBinding{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterRole{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroups = append(m.APIGroups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceNames = append(m.ResourceNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceURLs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NonResourceURLs = append(m.NonResourceURLs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyRuleBuilder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyRuleBuilder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyRuleBuilder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyRule", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PolicyRule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Role) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Role: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleBinding) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subjects", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subjects = append(m.Subjects, Subject{}) + if err := m.Subjects[len(m.Subjects)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoleRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleBindingList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleBindingList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleBindingList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, RoleBinding{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Role{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleRef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleRef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleRef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroup = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Subject) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Subject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Subject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 829 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0xcf, 0x6b, 0x24, 0x45, + 0x14, 0x9e, 0x4a, 0x66, 0xcc, 0xcc, 0x8b, 0x21, 0xa6, 0x04, 0x69, 0x73, 0xe8, 0x09, 0x7d, 0x0a, + 0xa8, 0xd5, 0x26, 0xae, 0xba, 0x07, 0x3d, 0x6c, 0x7b, 0x90, 0xe0, 0x1a, 0x43, 0x2d, 0x2e, 0xb8, + 0x2c, 0x68, 0x4d, 0x4f, 0xed, 0x4c, 0x39, 0xfd, 0x8b, 0xaa, 0xee, 0xc0, 0x22, 0x82, 0x47, 0x8f, + 0xfe, 0x15, 0x1e, 0x3d, 0x08, 0x1e, 0x3d, 0x79, 0x09, 0x7a, 0xd9, 0xe3, 0x7a, 0x19, 0x4c, 0xfb, + 0x87, 0x28, 0x5d, 0x5d, 0xfd, 0x23, 0x99, 0x09, 0xf9, 0x21, 0x04, 0x84, 0x3d, 0xcd, 0xf4, 0x7b, + 0xdf, 0xf7, 0xd5, 0xfb, 0xea, 0x75, 0x7f, 0x70, 0x77, 0x76, 0x57, 0x11, 0x11, 0xbb, 0xb3, 0x6c, + 0xc4, 0x65, 0xc4, 0x53, 0xae, 0xdc, 0x64, 0x36, 0x71, 0x59, 0x22, 0x94, 0x2b, 0x47, 0xcc, 0x77, + 0x8f, 0xf7, 0x58, 0x90, 0x4c, 0xd9, 0x9e, 0x3b, 0xe1, 0x11, 0x97, 0x2c, 0xe5, 0x63, 0x92, 0xc8, + 0x38, 0x8d, 0xf1, 0x6e, 0xc9, 0x24, 0x0d, 0x93, 0x24, 0xb3, 0x09, 0x29, 0x98, 0xa4, 0x60, 0x92, + 0x8a, 0xb9, 0xfd, 0xd6, 0x44, 0xa4, 0xd3, 0x6c, 0x44, 0xfc, 0x38, 0x74, 0x27, 0xf1, 0x24, 0x76, + 0xb5, 0xc0, 0x28, 0x7b, 0xa2, 0x9f, 0xf4, 0x83, 0xfe, 0x57, 0x0a, 0x6f, 0xdf, 0x31, 0x23, 0xb1, + 0x44, 0x84, 0xcc, 0x9f, 0x8a, 0x88, 0xcb, 0xa7, 0xcd, 0x50, 0x21, 0x4f, 0x99, 0x7b, 0xbc, 0x30, + 0xce, 0xb6, 0x7b, 0x11, 0x4b, 0x66, 0x51, 0x2a, 0x42, 0xbe, 0x40, 0x78, 0xef, 0x32, 0x82, 0xf2, + 0xa7, 0x3c, 0x64, 0x0b, 0xbc, 0x77, 0x2e, 0xe2, 0x65, 0xa9, 0x08, 0x5c, 0x11, 0xa5, 0x2a, 0x95, + 0xe7, 0x49, 0xce, 0xef, 0x08, 0xd6, 0x3f, 0x0a, 0x32, 0x95, 0x72, 0x49, 0xe3, 0x80, 0xe3, 0xaf, + 0xa0, 0x5f, 0x18, 0x19, 0xb3, 0x94, 0x59, 0x68, 0x07, 0xed, 0xae, 0xef, 0xbf, 0x4d, 0xcc, 0x7d, + 0xb6, 0x75, 0x9b, 0x1b, 0x2d, 0xd0, 0xe4, 0x78, 0x8f, 0x7c, 0x36, 0xfa, 0x9a, 0xfb, 0xe9, 0xa7, + 0x3c, 0x65, 0x1e, 0x3e, 0x99, 0x0f, 0x3b, 0xf9, 0x7c, 0x08, 0x4d, 0x8d, 0xd6, 0xaa, 0xf8, 0x0b, + 0xe8, 0xc9, 0x2c, 0xe0, 0xca, 0x5a, 0xd9, 0x59, 0xdd, 0x5d, 0xdf, 0xbf, 0x43, 0xae, 0xba, 0x2e, + 0x72, 0x14, 0x07, 0xc2, 0x7f, 0x4a, 0xb3, 0x80, 0x7b, 0x1b, 0xe6, 0x88, 0x5e, 0xf1, 0xa4, 0x68, + 0xa9, 0xe8, 0xfc, 0xb2, 0x02, 0xb8, 0x65, 0xc6, 0x13, 0xd1, 0x58, 0x44, 0x93, 0x5b, 0xf0, 0xf4, + 0x25, 0xf4, 0x55, 0xa6, 0x1b, 0x95, 0xad, 0xbd, 0xab, 0xdb, 0x7a, 0x50, 0x32, 0xbd, 0x57, 0xcc, + 0x11, 0x7d, 0x53, 0x50, 0xb4, 0x16, 0xc5, 0x8f, 0x61, 0x4d, 0xc6, 0x01, 0xa7, 0xfc, 0x89, 0xb5, + 0xaa, 0x1d, 0x5c, 0x43, 0x9f, 0x96, 0x44, 0x6f, 0xd3, 0xe8, 0xaf, 0x99, 0x02, 0xad, 0x24, 0x9d, + 0x1f, 0x11, 0xbc, 0xbe, 0x78, 0x6f, 0x5e, 0x26, 0x82, 0x31, 0x97, 0xf8, 0x7b, 0x04, 0xd8, 0x5f, + 0xe8, 0x9a, 0x9b, 0xfc, 0xe0, 0xea, 0x73, 0x2c, 0x39, 0x61, 0xdb, 0x8c, 0xb4, 0x64, 0x6b, 0x74, + 0xc9, 0x99, 0xce, 0x9f, 0x08, 0x5e, 0x5b, 0x84, 0xde, 0x17, 0x2a, 0xc5, 0x8f, 0x17, 0x96, 0x4c, + 0xae, 0xb6, 0xe4, 0x82, 0xad, 0x57, 0x5c, 0xdf, 0x7f, 0x55, 0x69, 0x2d, 0x98, 0x41, 0x4f, 0xa4, + 0x3c, 0xac, 0xb6, 0xfb, 0xdf, 0x5c, 0xd7, 0x2f, 0xef, 0x41, 0x21, 0x49, 0x4b, 0x65, 0xe7, 0x0f, + 0x04, 0x9b, 0x2d, 0xf0, 0x2d, 0x98, 0x7a, 0x74, 0xd6, 0xd4, 0xbb, 0x37, 0x33, 0xb5, 0xdc, 0xcd, + 0x3f, 0x08, 0xa0, 0xf9, 0x5e, 0xf1, 0x10, 0x7a, 0xc7, 0x5c, 0x8e, 0x94, 0x85, 0x76, 0x56, 0x77, + 0x07, 0xde, 0xa0, 0xc0, 0x3f, 0x2c, 0x0a, 0xb4, 0xac, 0xe3, 0x37, 0x60, 0xc0, 0x12, 0xf1, 0xb1, + 0x8c, 0xb3, 0x44, 0x59, 0xab, 0x1a, 0xb4, 0x91, 0xcf, 0x87, 0x83, 0x7b, 0x47, 0x07, 0x65, 0x91, + 0x36, 0xfd, 0x02, 0x2c, 0xb9, 0x8a, 0x33, 0xe9, 0x73, 0x65, 0x75, 0x1b, 0x30, 0xad, 0x8a, 0xb4, + 0xe9, 0xe3, 0xf7, 0x61, 0xa3, 0x7a, 0x38, 0x64, 0x21, 0x57, 0x56, 0x4f, 0x13, 0xb6, 0xf2, 0xf9, + 0x70, 0x83, 0xb6, 0x1b, 0xf4, 0x2c, 0x0e, 0x7f, 0x08, 0x9b, 0x51, 0x1c, 0x55, 0x90, 0xcf, 0xe9, + 0x7d, 0x65, 0xbd, 0xa4, 0xa9, 0xaf, 0xe6, 0xf3, 0xe1, 0xe6, 0xe1, 0xd9, 0x16, 0x3d, 0x8f, 0x75, + 0xbe, 0x85, 0xad, 0x56, 0x60, 0x99, 0x6f, 0x69, 0x0a, 0x90, 0xd4, 0x45, 0xb3, 0xd2, 0x9b, 0x25, + 0x60, 0x1d, 0x48, 0x4d, 0x8d, 0xb6, 0xb4, 0x9d, 0xdf, 0x10, 0x74, 0xff, 0xff, 0x89, 0xfe, 0xd3, + 0x0a, 0xac, 0xbf, 0x88, 0xf2, 0x6b, 0x44, 0x79, 0x91, 0x22, 0xb7, 0x1b, 0x8d, 0x37, 0x4f, 0x91, + 0xcb, 0x33, 0xf1, 0x57, 0x04, 0xfd, 0x5b, 0x0a, 0xc3, 0x07, 0x67, 0x6d, 0x90, 0x6b, 0xda, 0x58, + 0x3e, 0xff, 0x37, 0x50, 0x6d, 0x08, 0xbf, 0x09, 0xfd, 0x2a, 0xc0, 0xf4, 0xf4, 0x83, 0x66, 0x9a, + 0x2a, 0xe3, 0x68, 0x8d, 0xc0, 0x3b, 0xd0, 0x9d, 0x89, 0x68, 0x6c, 0xad, 0x68, 0xe4, 0xcb, 0x06, + 0xd9, 0xfd, 0x44, 0x44, 0x63, 0xaa, 0x3b, 0x05, 0x22, 0x62, 0x21, 0xd7, 0xef, 0x50, 0x0b, 0x51, + 0x44, 0x17, 0xd5, 0x1d, 0xe7, 0x67, 0x04, 0x6b, 0xe6, 0xfd, 0xab, 0xf5, 0xd0, 0x85, 0x7a, 0xfb, + 0x00, 0x2c, 0x11, 0x0f, 0xb9, 0x54, 0x22, 0x8e, 0xcc, 0xb9, 0xf5, 0x97, 0x72, 0xef, 0xe8, 0xc0, + 0x74, 0x68, 0x0b, 0x75, 0xf9, 0x0c, 0xd8, 0x85, 0x41, 0xf1, 0xab, 0x12, 0xe6, 0x73, 0xab, 0xab, + 0x61, 0x5b, 0x06, 0x36, 0x38, 0xac, 0x1a, 0xb4, 0xc1, 0x78, 0xe4, 0xe4, 0xd4, 0xee, 0x3c, 0x3b, + 0xb5, 0x3b, 0xcf, 0x4f, 0xed, 0xce, 0x77, 0xb9, 0x8d, 0x4e, 0x72, 0x1b, 0x3d, 0xcb, 0x6d, 0xf4, + 0x3c, 0xb7, 0xd1, 0x5f, 0xb9, 0x8d, 0x7e, 0xf8, 0xdb, 0xee, 0x3c, 0xea, 0x57, 0x97, 0xff, 0x6f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0x76, 0x05, 0x2e, 0x27, 0x0c, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.proto new file mode 100644 index 000000000..ba462c669 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/generated.proto @@ -0,0 +1,200 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.rbac.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +message ClusterRole { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Rules holds all the PolicyRules for this ClusterRole + repeated PolicyRule rules = 2; +} + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +message ClusterRoleBinding { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Subjects holds references to the objects the role applies to. + repeated Subject subjects = 2; + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + optional RoleRef roleRef = 3; +} + +// +k8s:deepcopy-gen=false +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +message ClusterRoleBindingBuilder { + optional ClusterRoleBinding clusterRoleBinding = 1; +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +message ClusterRoleBindingList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of ClusterRoleBindings + repeated ClusterRoleBinding items = 2; +} + +// ClusterRoleList is a collection of ClusterRoles +message ClusterRoleList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of ClusterRoles + repeated ClusterRole items = 2; +} + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +message PolicyRule { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + repeated string verbs = 1; + + // APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of + // the enumerated resources in any API group will be allowed. + // +optional + repeated string apiGroups = 3; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + repeated string resources = 4; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + repeated string resourceNames = 5; + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + // +optional + repeated string nonResourceURLs = 6; +} + +// +k8s:deepcopy-gen=false +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +message PolicyRuleBuilder { + optional PolicyRule policyRule = 1; +} + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +message Role { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Rules holds all the PolicyRules for this Role + repeated PolicyRule rules = 2; +} + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +message RoleBinding { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Subjects holds references to the objects the role applies to. + repeated Subject subjects = 2; + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + optional RoleRef roleRef = 3; +} + +// RoleBindingList is a collection of RoleBindings +message RoleBindingList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of RoleBindings + repeated RoleBinding items = 2; +} + +// RoleList is a collection of Roles +message RoleList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of Roles + repeated Role items = 2; +} + +// RoleRef contains information that points to the role being used +message RoleRef { + // APIGroup is the group for the resource being referenced + optional string apiGroup = 1; + + // Kind is the type of resource being referenced + optional string kind = 2; + + // Name is the name of resource being referenced + optional string name = 3; +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +message Subject { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + optional string kind = 1; + + // APIVersion holds the API group and version of the referenced subject. + // Defaults to "v1" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io/v1alpha1" for User and Group subjects. + // +k8s:conversion-gen=false + // +optional + optional string apiVersion = 2; + + // Name of the object being referenced. + optional string name = 3; + + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + // +optional + optional string namespace = 4; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/helpers.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/helpers.go new file mode 100644 index 000000000..f417f3be0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/helpers.go @@ -0,0 +1,146 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +type PolicyRuleBuilder struct { + PolicyRule PolicyRule `protobuf:"bytes,1,opt,name=policyRule"` +} + +func NewRule(verbs ...string) *PolicyRuleBuilder { + return &PolicyRuleBuilder{ + PolicyRule: PolicyRule{Verbs: verbs}, + } +} + +func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder { + r.PolicyRule.APIGroups = append(r.PolicyRule.APIGroups, groups...) + return r +} + +func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder { + r.PolicyRule.Resources = append(r.PolicyRule.Resources, resources...) + return r +} + +func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder { + r.PolicyRule.ResourceNames = append(r.PolicyRule.ResourceNames, names...) + return r +} + +func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder { + r.PolicyRule.NonResourceURLs = append(r.PolicyRule.NonResourceURLs, urls...) + return r +} + +func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule { + ret, err := r.Rule() + if err != nil { + panic(err) + } + return ret +} + +func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) { + if len(r.PolicyRule.Verbs) == 0 { + return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule) + } + + switch { + case len(r.PolicyRule.NonResourceURLs) > 0: + if len(r.PolicyRule.APIGroups) != 0 || len(r.PolicyRule.Resources) != 0 || len(r.PolicyRule.ResourceNames) != 0 { + return PolicyRule{}, fmt.Errorf("non-resource rule may not have apiGroups, resources, or resourceNames: %#v", r.PolicyRule) + } + case len(r.PolicyRule.Resources) > 0: + if len(r.PolicyRule.NonResourceURLs) != 0 { + return PolicyRule{}, fmt.Errorf("resource rule may not have nonResourceURLs: %#v", r.PolicyRule) + } + if len(r.PolicyRule.APIGroups) == 0 { + // this a common bug + return PolicyRule{}, fmt.Errorf("resource rule must have apiGroups: %#v", r.PolicyRule) + } + default: + return PolicyRule{}, fmt.Errorf("a rule must have either nonResourceURLs or resources: %#v", r.PolicyRule) + } + + return r.PolicyRule, nil +} + +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +type ClusterRoleBindingBuilder struct { + ClusterRoleBinding ClusterRoleBinding `protobuf:"bytes,1,opt,name=clusterRoleBinding"` +} + +func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder { + return &ClusterRoleBindingBuilder{ + ClusterRoleBinding: ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: clusterRoleName}, + RoleRef: RoleRef{ + APIGroup: GroupName, + Kind: "ClusterRole", + Name: clusterRoleName, + }, + }, + } +} + +func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBindingBuilder { + for _, group := range groups { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: GroupKind, Name: group}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBuilder { + for _, user := range users { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: UserKind, Name: user}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *ClusterRoleBindingBuilder { + for _, saName := range serviceAccountNames { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding { + ret, err := r.Binding() + if err != nil { + panic(err) + } + return ret +} + +func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) { + if len(r.ClusterRoleBinding.Subjects) == 0 { + return ClusterRoleBinding{}, fmt.Errorf("subjects are required: %#v", r.ClusterRoleBinding) + } + + return r.ClusterRoleBinding, nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/register.go new file mode 100644 index 000000000..956c800da --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/register.go @@ -0,0 +1,65 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Role{}, + &RoleBinding{}, + &RoleBindingList{}, + &RoleList{}, + + &ClusterRole{}, + &ClusterRoleBinding{}, + &ClusterRoleBindingList{}, + &ClusterRoleList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.generated.go new file mode 100644 index 000000000..03ae6182a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.generated.go @@ -0,0 +1,4879 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *PolicyRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.APIGroups) != 0 + yyq2[2] = len(x.Resources) != 0 + yyq2[3] = len(x.ResourceNames) != 0 + yyq2[4] = len(x.NonResourceURLs) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Verbs == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Verbs, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verbs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Verbs == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Verbs, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Resources == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resources == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.ResourceNames == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.ResourceNames, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceNames")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceNames == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncSliceStringV(x.ResourceNames, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.NonResourceURLs == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncSliceStringV(x.NonResourceURLs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceURLs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceURLs == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncSliceStringV(x.NonResourceURLs, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PolicyRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PolicyRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "verbs": + if r.TryDecodeAsNil() { + x.Verbs = nil + } else { + yyv4 := &x.Verbs + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "apiGroups": + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv6 := &x.APIGroups + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecSliceStringX(yyv6, false, d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv8 := &x.Resources + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "resourceNames": + if r.TryDecodeAsNil() { + x.ResourceNames = nil + } else { + yyv10 := &x.ResourceNames + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecSliceStringX(yyv10, false, d) + } + } + case "nonResourceURLs": + if r.TryDecodeAsNil() { + x.NonResourceURLs = nil + } else { + yyv12 := &x.NonResourceURLs + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + z.F.DecSliceStringX(yyv12, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PolicyRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verbs = nil + } else { + yyv15 := &x.Verbs + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + z.F.DecSliceStringX(yyv15, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv17 := &x.APIGroups + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + z.F.DecSliceStringX(yyv17, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv19 := &x.Resources + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + z.F.DecSliceStringX(yyv19, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceNames = nil + } else { + yyv21 := &x.ResourceNames + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + z.F.DecSliceStringX(yyv21, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NonResourceURLs = nil + } else { + yyv23 := &x.NonResourceURLs + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + z.F.DecSliceStringX(yyv23, false, d) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Subject) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.APIVersion != "" + yyq2[3] = x.Namespace != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Subject) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Subject) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv10 := &x.Namespace + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Subject) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv17 := &x.Name + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv19 := &x.Namespace + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleRef) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleRef) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleRef) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "apiGroup": + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + yyv4 := &x.APIGroup + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv6 := &x.Kind + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleRef) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + yyv11 := &x.APIGroup + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv15 := &x.Name + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Role) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Role) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Role) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv10 := &x.Rules + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Role) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv19 := &x.Rules + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleBinding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subjects")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy18 := &x.RoleRef + yy18.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("roleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy20 := &x.RoleRef + yy20.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleBinding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleBinding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "subjects": + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv10 := &x.Subjects + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv10), d) + } + } + case "roleRef": + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv12 := &x.RoleRef + yyv12.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleBinding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv14 := &x.Kind + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv16 := &x.APIVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv18 := &x.ObjectMeta + yym19 := z.DecBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.DecExt(yyv18) { + } else { + z.DecFallback(yyv18, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv20 := &x.Subjects + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv20), d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv22 := &x.RoleRef + yyv22.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleBindingList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceRoleBinding(([]RoleBinding)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceRoleBinding(([]RoleBinding)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleBindingList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleBindingList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceRoleBinding((*[]RoleBinding)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleBindingList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceRoleBinding((*[]RoleBinding)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceRole(([]Role)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceRole(([]Role)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceRole((*[]Role)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceRole((*[]Role)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRole) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRole) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRole) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv10 := &x.Rules + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRole) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv19 := &x.Rules + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleBinding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subjects")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy18 := &x.RoleRef + yy18.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("roleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy20 := &x.RoleRef + yy20.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleBinding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleBinding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "subjects": + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv10 := &x.Subjects + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv10), d) + } + } + case "roleRef": + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv12 := &x.RoleRef + yyv12.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleBinding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv14 := &x.Kind + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv16 := &x.APIVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv18 := &x.ObjectMeta + yym19 := z.DecBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.DecExt(yyv18) { + } else { + z.DecFallback(yyv18, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv20 := &x.Subjects + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv20), d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv22 := &x.RoleRef + yyv22.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleBindingList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceClusterRoleBinding(([]ClusterRoleBinding)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceClusterRoleBinding(([]ClusterRoleBinding)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleBindingList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleBindingList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceClusterRoleBinding((*[]ClusterRoleBinding)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleBindingList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceClusterRoleBinding((*[]ClusterRoleBinding)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceClusterRole(([]ClusterRole)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceClusterRole(([]ClusterRole)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceClusterRole((*[]ClusterRole)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceClusterRole((*[]ClusterRole)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicePolicyRule(v []PolicyRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePolicyRule(v *[]PolicyRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PolicyRule{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 120) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PolicyRule, yyrl1) + } + } else { + yyv1 = make([]PolicyRule, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PolicyRule{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PolicyRule{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PolicyRule{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PolicyRule{}) // var yyz1 PolicyRule + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PolicyRule{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PolicyRule{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceSubject(v []Subject, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceSubject(v *[]Subject, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Subject{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Subject, yyrl1) + } + } else { + yyv1 = make([]Subject, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Subject{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Subject{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Subject{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Subject{}) // var yyz1 Subject + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Subject{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Subject{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceRoleBinding(v []RoleBinding, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRoleBinding(v *[]RoleBinding, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []RoleBinding{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 336) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]RoleBinding, yyrl1) + } + } else { + yyv1 = make([]RoleBinding, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = RoleBinding{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, RoleBinding{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = RoleBinding{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, RoleBinding{}) // var yyz1 RoleBinding + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = RoleBinding{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []RoleBinding{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceRole(v []Role, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRole(v *[]Role, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Role{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Role, yyrl1) + } + } else { + yyv1 = make([]Role, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Role{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Role{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Role{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Role{}) // var yyz1 Role + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Role{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Role{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceClusterRoleBinding(v []ClusterRoleBinding, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceClusterRoleBinding(v *[]ClusterRoleBinding, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ClusterRoleBinding{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 336) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ClusterRoleBinding, yyrl1) + } + } else { + yyv1 = make([]ClusterRoleBinding, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRoleBinding{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ClusterRoleBinding{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRoleBinding{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ClusterRoleBinding{}) // var yyz1 ClusterRoleBinding + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRoleBinding{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ClusterRoleBinding{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceClusterRole(v []ClusterRole, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceClusterRole(v *[]ClusterRole, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ClusterRole{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ClusterRole, yyrl1) + } + } else { + yyv1 = make([]ClusterRole, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRole{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ClusterRole{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRole{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ClusterRole{}) // var yyz1 ClusterRole + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRole{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ClusterRole{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.go new file mode 100644 index 000000000..e9f8efb3b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types.go @@ -0,0 +1,209 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +const ( + APIGroupAll = "*" + ResourceAll = "*" + VerbAll = "*" + NonResourceAll = "*" + + GroupKind = "Group" + ServiceAccountKind = "ServiceAccount" + UserKind = "User" + + // AutoUpdateAnnotationKey is the name of an annotation which prevents reconciliation if set to "false" + AutoUpdateAnnotationKey = "rbac.authorization.kubernetes.io/autoupdate" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +type PolicyRule struct { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + + // APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of + // the enumerated resources in any API group will be allowed. + // +optional + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,3,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + Resources []string `json:"resources,omitempty" protobuf:"bytes,4,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,5,rep,name=resourceNames"` + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + // +optional + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,6,rep,name=nonResourceURLs"` +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +type Subject struct { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // APIVersion holds the API group and version of the referenced subject. + // Defaults to "v1" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io/v1alpha1" for User and Group subjects. + // +k8s:conversion-gen=false + // +optional + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt.name=apiVersion"` + // Name of the object being referenced. + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,4,opt,name=namespace"` +} + +// RoleRef contains information that points to the role being used +type RoleRef struct { + // APIGroup is the group for the resource being referenced + APIGroup string `json:"apiGroup" protobuf:"bytes,1,opt,name=apiGroup"` + // Kind is the type of resource being referenced + Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` + // Name is the name of resource being referenced + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` +} + +// +genclient=true + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Rules holds all the PolicyRules for this Role + Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` +} + +// +genclient=true + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +type RoleBinding struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Subjects holds references to the objects the role applies to. + Subjects []Subject `json:"subjects" protobuf:"bytes,2,rep,name=subjects"` + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` +} + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of RoleBindings + Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// RoleList is a collection of Roles +type RoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of Roles + Items []Role `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Rules holds all the PolicyRules for this ClusterRole + Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +type ClusterRoleBinding struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Subjects holds references to the objects the role applies to. + Subjects []Subject `json:"subjects" protobuf:"bytes,2,rep,name=subjects"` + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ClusterRoleBindings + Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ClusterRoles + Items []ClusterRole `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 000000000..d58a722af --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,148 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_ClusterRole = map[string]string{ + "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.", + "metadata": "Standard object's metadata.", + "rules": "Rules holds all the PolicyRules for this ClusterRole", +} + +func (ClusterRole) SwaggerDoc() map[string]string { + return map_ClusterRole +} + +var map_ClusterRoleBinding = map[string]string{ + "": "ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.", + "metadata": "Standard object's metadata.", + "subjects": "Subjects holds references to the objects the role applies to.", + "roleRef": "RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", +} + +func (ClusterRoleBinding) SwaggerDoc() map[string]string { + return map_ClusterRoleBinding +} + +var map_ClusterRoleBindingList = map[string]string{ + "": "ClusterRoleBindingList is a collection of ClusterRoleBindings", + "metadata": "Standard object's metadata.", + "items": "Items is a list of ClusterRoleBindings", +} + +func (ClusterRoleBindingList) SwaggerDoc() map[string]string { + return map_ClusterRoleBindingList +} + +var map_ClusterRoleList = map[string]string{ + "": "ClusterRoleList is a collection of ClusterRoles", + "metadata": "Standard object's metadata.", + "items": "Items is a list of ClusterRoles", +} + +func (ClusterRoleList) SwaggerDoc() map[string]string { + return map_ClusterRoleList +} + +var map_PolicyRule = map[string]string{ + "": "PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.", + "verbs": "Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.", + "apiGroups": "APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.", + "resources": "Resources is a list of resources this rule applies to. ResourceAll represents all resources.", + "resourceNames": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.", + "nonResourceURLs": "NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"), but not both.", +} + +func (PolicyRule) SwaggerDoc() map[string]string { + return map_PolicyRule +} + +var map_Role = map[string]string{ + "": "Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.", + "metadata": "Standard object's metadata.", + "rules": "Rules holds all the PolicyRules for this Role", +} + +func (Role) SwaggerDoc() map[string]string { + return map_Role +} + +var map_RoleBinding = map[string]string{ + "": "RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.", + "metadata": "Standard object's metadata.", + "subjects": "Subjects holds references to the objects the role applies to.", + "roleRef": "RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", +} + +func (RoleBinding) SwaggerDoc() map[string]string { + return map_RoleBinding +} + +var map_RoleBindingList = map[string]string{ + "": "RoleBindingList is a collection of RoleBindings", + "metadata": "Standard object's metadata.", + "items": "Items is a list of RoleBindings", +} + +func (RoleBindingList) SwaggerDoc() map[string]string { + return map_RoleBindingList +} + +var map_RoleList = map[string]string{ + "": "RoleList is a collection of Roles", + "metadata": "Standard object's metadata.", + "items": "Items is a list of Roles", +} + +func (RoleList) SwaggerDoc() map[string]string { + return map_RoleList +} + +var map_RoleRef = map[string]string{ + "": "RoleRef contains information that points to the role being used", + "apiGroup": "APIGroup is the group for the resource being referenced", + "kind": "Kind is the type of resource being referenced", + "name": "Name is the name of resource being referenced", +} + +func (RoleRef) SwaggerDoc() map[string]string { + return map_RoleRef +} + +var map_Subject = map[string]string{ + "": "Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.", + "kind": "Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.", + "apiVersion": "APIVersion holds the API group and version of the referenced subject. Defaults to \"v1\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io/v1alpha1\" for User and Group subjects.", + "name": "Name of the object being referenced.", + "namespace": "Namespace of the referenced object. If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.", +} + +func (Subject) SwaggerDoc() map[string]string { + return map_Subject +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..a3315156f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,469 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + rbac "k8s.io/client-go/pkg/apis/rbac" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole, + Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole, + Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding, + Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding, + Convert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder, + Convert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder, + Convert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList, + Convert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList, + Convert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList, + Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList, + Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule, + Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule, + Convert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder, + Convert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder, + Convert_v1alpha1_Role_To_rbac_Role, + Convert_rbac_Role_To_v1alpha1_Role, + Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding, + Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding, + Convert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList, + Convert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList, + Convert_v1alpha1_RoleList_To_rbac_RoleList, + Convert_rbac_RoleList_To_v1alpha1_RoleList, + Convert_v1alpha1_RoleRef_To_rbac_RoleRef, + Convert_rbac_RoleRef_To_v1alpha1_RoleRef, + Convert_v1alpha1_Subject_To_rbac_Subject, + Convert_rbac_Subject_To_v1alpha1_Subject, + ) +} + +func autoConvert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in *ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules)) + return nil +} + +// Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole is an autogenerated conversion function. +func Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in *ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in, out, s) +} + +func autoConvert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in *rbac.ClusterRole, out *ClusterRole, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Rules == nil { + out.Rules = make([]PolicyRule, 0) + } else { + out.Rules = *(*[]PolicyRule)(unsafe.Pointer(&in.Rules)) + } + return nil +} + +// Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole is an autogenerated conversion function. +func Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in *rbac.ClusterRole, out *ClusterRole, s conversion.Scope) error { + return autoConvert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in *ClusterRoleBinding, out *rbac.ClusterRoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]rbac.Subject, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_Subject_To_rbac_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = nil + } + if err := Convert_v1alpha1_RoleRef_To_rbac_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding is an autogenerated conversion function. +func Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in *ClusterRoleBinding, out *rbac.ClusterRoleBinding, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in *rbac.ClusterRoleBinding, out *ClusterRoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + if err := Convert_rbac_Subject_To_v1alpha1_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = make([]Subject, 0) + } + if err := Convert_rbac_RoleRef_To_v1alpha1_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding is an autogenerated conversion function. +func Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in *rbac.ClusterRoleBinding, out *ClusterRoleBinding, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in *ClusterRoleBindingBuilder, out *rbac.ClusterRoleBindingBuilder, s conversion.Scope) error { + if err := Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(&in.ClusterRoleBinding, &out.ClusterRoleBinding, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder is an autogenerated conversion function. +func Convert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in *ClusterRoleBindingBuilder, out *rbac.ClusterRoleBindingBuilder, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder(in *rbac.ClusterRoleBindingBuilder, out *ClusterRoleBindingBuilder, s conversion.Scope) error { + if err := Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(&in.ClusterRoleBinding, &out.ClusterRoleBinding, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder is an autogenerated conversion function. +func Convert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder(in *rbac.ClusterRoleBindingBuilder, out *ClusterRoleBindingBuilder, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac.ClusterRoleBinding, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList is an autogenerated conversion function. +func Convert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList(in *rbac.ClusterRoleBindingList, out *ClusterRoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]ClusterRoleBinding, 0) + } + return nil +} + +// Convert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList is an autogenerated conversion function. +func Convert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList(in *rbac.ClusterRoleBindingList, out *ClusterRoleBindingList, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList(in *ClusterRoleList, out *rbac.ClusterRoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]rbac.ClusterRole)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList is an autogenerated conversion function. +func Convert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList(in *ClusterRoleList, out *rbac.ClusterRoleList, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList(in, out, s) +} + +func autoConvert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in *rbac.ClusterRoleList, out *ClusterRoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ClusterRole, 0) + } else { + out.Items = *(*[]ClusterRole)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList is an autogenerated conversion function. +func Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in *rbac.ClusterRoleList, out *ClusterRoleList, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in, out, s) +} + +func autoConvert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { + out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs)) + out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups)) + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + out.ResourceNames = *(*[]string)(unsafe.Pointer(&in.ResourceNames)) + out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs)) + return nil +} + +// Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule is an autogenerated conversion function. +func Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { + return autoConvert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in, out, s) +} + +func autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { + if in.Verbs == nil { + out.Verbs = make([]string, 0) + } else { + out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs)) + } + out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups)) + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + out.ResourceNames = *(*[]string)(unsafe.Pointer(&in.ResourceNames)) + out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs)) + return nil +} + +// Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule is an autogenerated conversion function. +func Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { + return autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in, out, s) +} + +func autoConvert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in *PolicyRuleBuilder, out *rbac.PolicyRuleBuilder, s conversion.Scope) error { + if err := Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(&in.PolicyRule, &out.PolicyRule, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder is an autogenerated conversion function. +func Convert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in *PolicyRuleBuilder, out *rbac.PolicyRuleBuilder, s conversion.Scope) error { + return autoConvert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in, out, s) +} + +func autoConvert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder(in *rbac.PolicyRuleBuilder, out *PolicyRuleBuilder, s conversion.Scope) error { + if err := Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(&in.PolicyRule, &out.PolicyRule, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder is an autogenerated conversion function. +func Convert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder(in *rbac.PolicyRuleBuilder, out *PolicyRuleBuilder, s conversion.Scope) error { + return autoConvert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder(in, out, s) +} + +func autoConvert_v1alpha1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules)) + return nil +} + +// Convert_v1alpha1_Role_To_rbac_Role is an autogenerated conversion function. +func Convert_v1alpha1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { + return autoConvert_v1alpha1_Role_To_rbac_Role(in, out, s) +} + +func autoConvert_rbac_Role_To_v1alpha1_Role(in *rbac.Role, out *Role, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Rules == nil { + out.Rules = make([]PolicyRule, 0) + } else { + out.Rules = *(*[]PolicyRule)(unsafe.Pointer(&in.Rules)) + } + return nil +} + +// Convert_rbac_Role_To_v1alpha1_Role is an autogenerated conversion function. +func Convert_rbac_Role_To_v1alpha1_Role(in *rbac.Role, out *Role, s conversion.Scope) error { + return autoConvert_rbac_Role_To_v1alpha1_Role(in, out, s) +} + +func autoConvert_v1alpha1_RoleBinding_To_rbac_RoleBinding(in *RoleBinding, out *rbac.RoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]rbac.Subject, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_Subject_To_rbac_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = nil + } + if err := Convert_v1alpha1_RoleRef_To_rbac_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding is an autogenerated conversion function. +func Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding(in *RoleBinding, out *rbac.RoleBinding, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleBinding_To_rbac_RoleBinding(in, out, s) +} + +func autoConvert_rbac_RoleBinding_To_v1alpha1_RoleBinding(in *rbac.RoleBinding, out *RoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + if err := Convert_rbac_Subject_To_v1alpha1_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = make([]Subject, 0) + } + if err := Convert_rbac_RoleRef_To_v1alpha1_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding is an autogenerated conversion function. +func Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding(in *rbac.RoleBinding, out *RoleBinding, s conversion.Scope) error { + return autoConvert_rbac_RoleBinding_To_v1alpha1_RoleBinding(in, out, s) +} + +func autoConvert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList(in *RoleBindingList, out *rbac.RoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac.RoleBinding, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList is an autogenerated conversion function. +func Convert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList(in *RoleBindingList, out *rbac.RoleBindingList, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList(in, out, s) +} + +func autoConvert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList(in *rbac.RoleBindingList, out *RoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]RoleBinding, 0) + } + return nil +} + +// Convert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList is an autogenerated conversion function. +func Convert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList(in *rbac.RoleBindingList, out *RoleBindingList, s conversion.Scope) error { + return autoConvert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList(in, out, s) +} + +func autoConvert_v1alpha1_RoleList_To_rbac_RoleList(in *RoleList, out *rbac.RoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]rbac.Role)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_RoleList_To_rbac_RoleList is an autogenerated conversion function. +func Convert_v1alpha1_RoleList_To_rbac_RoleList(in *RoleList, out *rbac.RoleList, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleList_To_rbac_RoleList(in, out, s) +} + +func autoConvert_rbac_RoleList_To_v1alpha1_RoleList(in *rbac.RoleList, out *RoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Role, 0) + } else { + out.Items = *(*[]Role)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_rbac_RoleList_To_v1alpha1_RoleList is an autogenerated conversion function. +func Convert_rbac_RoleList_To_v1alpha1_RoleList(in *rbac.RoleList, out *RoleList, s conversion.Scope) error { + return autoConvert_rbac_RoleList_To_v1alpha1_RoleList(in, out, s) +} + +func autoConvert_v1alpha1_RoleRef_To_rbac_RoleRef(in *RoleRef, out *rbac.RoleRef, s conversion.Scope) error { + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil +} + +// Convert_v1alpha1_RoleRef_To_rbac_RoleRef is an autogenerated conversion function. +func Convert_v1alpha1_RoleRef_To_rbac_RoleRef(in *RoleRef, out *rbac.RoleRef, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleRef_To_rbac_RoleRef(in, out, s) +} + +func autoConvert_rbac_RoleRef_To_v1alpha1_RoleRef(in *rbac.RoleRef, out *RoleRef, s conversion.Scope) error { + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil +} + +// Convert_rbac_RoleRef_To_v1alpha1_RoleRef is an autogenerated conversion function. +func Convert_rbac_RoleRef_To_v1alpha1_RoleRef(in *rbac.RoleRef, out *RoleRef, s conversion.Scope) error { + return autoConvert_rbac_RoleRef_To_v1alpha1_RoleRef(in, out, s) +} + +func autoConvert_v1alpha1_Subject_To_rbac_Subject(in *Subject, out *rbac.Subject, s conversion.Scope) error { + out.Kind = in.Kind + // INFO: in.APIVersion opted out of conversion generation + out.Name = in.Name + out.Namespace = in.Namespace + return nil +} + +func autoConvert_rbac_Subject_To_v1alpha1_Subject(in *rbac.Subject, out *Subject, s conversion.Scope) error { + out.Kind = in.Kind + // WARNING: in.APIGroup requires manual conversion: does not exist in peer-type + out.Name = in.Name + out.Namespace = in.Namespace + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..21b4b8dc4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,269 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRole, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRoleBinding, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRoleBindingList, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRoleList, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PolicyRule, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Role, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleBinding, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleBindingList, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleList, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleRef, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Subject, InType: reflect.TypeOf(&Subject{})}, + ) +} + +// DeepCopy_v1alpha1_ClusterRole is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ClusterRole(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRole) + out := out.(*ClusterRole) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_ClusterRoleBinding is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ClusterRoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBinding) + out := out.(*ClusterRoleBinding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1alpha1_ClusterRoleBindingList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ClusterRoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBindingList) + out := out.(*ClusterRoleBindingList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_ClusterRoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_ClusterRoleList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_ClusterRoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleList) + out := out.(*ClusterRoleList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRole, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_ClusterRole(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_PolicyRule is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_PolicyRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PolicyRule) + out := out.(*PolicyRule) + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1alpha1_Role is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_Role(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Role) + out := out.(*Role) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_RoleBinding is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_RoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBinding) + out := out.(*RoleBinding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1alpha1_RoleBindingList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_RoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBindingList) + out := out.(*RoleBindingList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_RoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_RoleList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_RoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleList) + out := out.(*RoleList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_Role(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_RoleRef is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_RoleRef(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleRef) + out := out.(*RoleRef) + *out = *in + return nil + } +} + +// DeepCopy_v1alpha1_Subject is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_Subject(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Subject) + out := out.(*Subject) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..1a5749be3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1alpha1/zz_generated.defaults.go @@ -0,0 +1,66 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&ClusterRoleBinding{}, func(obj interface{}) { SetObjectDefaults_ClusterRoleBinding(obj.(*ClusterRoleBinding)) }) + scheme.AddTypeDefaultingFunc(&ClusterRoleBindingList{}, func(obj interface{}) { SetObjectDefaults_ClusterRoleBindingList(obj.(*ClusterRoleBindingList)) }) + scheme.AddTypeDefaultingFunc(&RoleBinding{}, func(obj interface{}) { SetObjectDefaults_RoleBinding(obj.(*RoleBinding)) }) + scheme.AddTypeDefaultingFunc(&RoleBindingList{}, func(obj interface{}) { SetObjectDefaults_RoleBindingList(obj.(*RoleBindingList)) }) + return nil +} + +func SetObjectDefaults_ClusterRoleBinding(in *ClusterRoleBinding) { + SetDefaults_ClusterRoleBinding(in) + for i := range in.Subjects { + a := &in.Subjects[i] + SetDefaults_Subject(a) + } +} + +func SetObjectDefaults_ClusterRoleBindingList(in *ClusterRoleBindingList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ClusterRoleBinding(a) + } +} + +func SetObjectDefaults_RoleBinding(in *RoleBinding) { + SetDefaults_RoleBinding(in) + for i := range in.Subjects { + a := &in.Subjects[i] + SetDefaults_Subject(a) + } +} + +func SetObjectDefaults_RoleBindingList(in *RoleBindingList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_RoleBinding(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/BUILD new file mode 100644 index 000000000..48e4d70ef --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/BUILD @@ -0,0 +1,36 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "defaults.go", + "doc.go", + "generated.pb.go", + "helpers.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/rbac:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/defaults.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/defaults.go new file mode 100644 index 000000000..c1cf8c23c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/defaults.go @@ -0,0 +1,48 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func SetDefaults_ClusterRoleBinding(obj *ClusterRoleBinding) { + if len(obj.RoleRef.APIGroup) == 0 { + obj.RoleRef.APIGroup = GroupName + } +} +func SetDefaults_RoleBinding(obj *RoleBinding) { + if len(obj.RoleRef.APIGroup) == 0 { + obj.RoleRef.APIGroup = GroupName + } +} +func SetDefaults_Subject(obj *Subject) { + if len(obj.APIGroup) == 0 { + switch obj.Kind { + case ServiceAccountKind: + obj.APIGroup = "" + case UserKind: + obj.APIGroup = GroupName + case GroupKind: + obj.APIGroup = GroupName + } + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/doc.go new file mode 100644 index 000000000..a9ad4296e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=rbac.authorization.k8s.io +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.pb.go new file mode 100644 index 000000000..07a719394 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.pb.go @@ -0,0 +1,2821 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/rbac/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/rbac/v1beta1/generated.proto + + It has these top-level messages: + ClusterRole + ClusterRoleBinding + ClusterRoleBindingBuilder + ClusterRoleBindingList + ClusterRoleList + PolicyRule + PolicyRuleBuilder + Role + RoleBinding + RoleBindingList + RoleList + RoleRef + Subject +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *ClusterRole) Reset() { *m = ClusterRole{} } +func (*ClusterRole) ProtoMessage() {} +func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBinding{} } +func (*ClusterRoleBinding) ProtoMessage() {} +func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *ClusterRoleBindingBuilder) Reset() { *m = ClusterRoleBindingBuilder{} } +func (*ClusterRoleBindingBuilder) ProtoMessage() {} +func (*ClusterRoleBindingBuilder) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} } +func (*ClusterRoleBindingList) ProtoMessage() {} +func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} } +func (*ClusterRoleList) ProtoMessage() {} +func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *PolicyRule) Reset() { *m = PolicyRule{} } +func (*PolicyRule) ProtoMessage() {} +func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *PolicyRuleBuilder) Reset() { *m = PolicyRuleBuilder{} } +func (*PolicyRuleBuilder) ProtoMessage() {} +func (*PolicyRuleBuilder) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *Role) Reset() { *m = Role{} } +func (*Role) ProtoMessage() {} +func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *RoleBinding) Reset() { *m = RoleBinding{} } +func (*RoleBinding) ProtoMessage() {} +func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *RoleBindingList) Reset() { *m = RoleBindingList{} } +func (*RoleBindingList) ProtoMessage() {} +func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *RoleList) Reset() { *m = RoleList{} } +func (*RoleList) ProtoMessage() {} +func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *RoleRef) Reset() { *m = RoleRef{} } +func (*RoleRef) ProtoMessage() {} +func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *Subject) Reset() { *m = Subject{} } +func (*Subject) ProtoMessage() {} +func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func init() { + proto.RegisterType((*ClusterRole)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.ClusterRole") + proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingBuilder)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.ClusterRoleBindingBuilder") + proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.ClusterRoleBindingList") + proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.ClusterRoleList") + proto.RegisterType((*PolicyRule)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.PolicyRule") + proto.RegisterType((*PolicyRuleBuilder)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.PolicyRuleBuilder") + proto.RegisterType((*Role)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.Role") + proto.RegisterType((*RoleBinding)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.RoleBinding") + proto.RegisterType((*RoleBindingList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.RoleBindingList") + proto.RegisterType((*RoleList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.RoleList") + proto.RegisterType((*RoleRef)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.RoleRef") + proto.RegisterType((*Subject)(nil), "k8s.io.client-go.pkg.apis.rbac.v1beta1.Subject") +} +func (m *ClusterRole) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRole) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ClusterRoleBinding) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleBinding) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n2, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Subjects) > 0 { + for _, msg := range m.Subjects { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size())) + n3, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *ClusterRoleBindingBuilder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleBindingBuilder) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ClusterRoleBinding.Size())) + n4, err := m.ClusterRoleBinding.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + return i, nil +} + +func (m *ClusterRoleBindingList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleBindingList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ClusterRoleList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterRoleList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PolicyRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyRule) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Verbs) > 0 { + for _, s := range m.Verbs { + dAtA[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + dAtA[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + dAtA[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + dAtA[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } + return i, nil +} + +func (m *PolicyRuleBuilder) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PolicyRuleBuilder) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.PolicyRule.Size())) + n7, err := m.PolicyRule.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n7 + return i, nil +} + +func (m *Role) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Role) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n8, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n8 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleBinding) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleBinding) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n9 + if len(m.Subjects) > 0 { + for _, msg := range m.Subjects { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.RoleRef.Size())) + n10, err := m.RoleRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n10 + return i, nil +} + +func (m *RoleBindingList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleBindingList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n11, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n11 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n12, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n12 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleRef) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RoleRef) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup))) + i += copy(dAtA[i:], m.APIGroup) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + return i, nil +} + +func (m *Subject) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Subject) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup))) + i += copy(dAtA[i:], m.APIGroup) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) + i += copy(dAtA[i:], m.Namespace) + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *ClusterRole) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterRoleBinding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subjects) > 0 { + for _, e := range m.Subjects { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.RoleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ClusterRoleBindingBuilder) Size() (n int) { + var l int + _ = l + l = m.ClusterRoleBinding.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ClusterRoleBindingList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterRoleList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PolicyRule) Size() (n int) { + var l int + _ = l + if len(m.Verbs) > 0 { + for _, s := range m.Verbs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PolicyRuleBuilder) Size() (n int) { + var l int + _ = l + l = m.PolicyRule.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Role) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleBinding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subjects) > 0 { + for _, e := range m.Subjects { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.RoleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *RoleBindingList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleRef) Size() (n int) { + var l int + _ = l + l = len(m.APIGroup) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Subject) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIGroup) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *ClusterRole) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRole{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBinding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBinding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subjects:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subjects), "Subject", "Subject", 1), `&`, ``, 1) + `,`, + `RoleRef:` + strings.Replace(strings.Replace(this.RoleRef.String(), "RoleRef", "RoleRef", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBindingBuilder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBindingBuilder{`, + `ClusterRoleBinding:` + strings.Replace(strings.Replace(this.ClusterRoleBinding.String(), "ClusterRoleBinding", "ClusterRoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBindingList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBindingList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ClusterRoleBinding", "ClusterRoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ClusterRole", "ClusterRole", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PolicyRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PolicyRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`, + `NonResourceURLs:` + fmt.Sprintf("%v", this.NonResourceURLs) + `,`, + `}`, + }, "") + return s +} +func (this *PolicyRuleBuilder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PolicyRuleBuilder{`, + `PolicyRule:` + strings.Replace(strings.Replace(this.PolicyRule.String(), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Role) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Role{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleBinding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleBinding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subjects:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subjects), "Subject", "Subject", 1), `&`, ``, 1) + `,`, + `RoleRef:` + strings.Replace(strings.Replace(this.RoleRef.String(), "RoleRef", "RoleRef", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleBindingList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleBindingList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RoleBinding", "RoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Role", "Role", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleRef) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleRef{`, + `APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *Subject) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Subject{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ClusterRole) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRole: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRole: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBinding) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subjects", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subjects = append(m.Subjects, Subject{}) + if err := m.Subjects[len(m.Subjects)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoleRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBindingBuilder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBindingBuilder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBindingBuilder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterRoleBinding", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ClusterRoleBinding.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBindingList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBindingList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBindingList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterRoleBinding{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterRole{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroups = append(m.APIGroups, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceNames = append(m.ResourceNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceURLs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NonResourceURLs = append(m.NonResourceURLs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyRuleBuilder) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyRuleBuilder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyRuleBuilder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyRule", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PolicyRule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Role) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Role: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleBinding) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subjects", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subjects = append(m.Subjects, Subject{}) + if err := m.Subjects[len(m.Subjects)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoleRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleBindingList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleBindingList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleBindingList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, RoleBinding{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Role{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleRef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleRef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleRef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroup = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Subject) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Subject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Subject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroup = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 806 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x3d, 0x6f, 0xc3, 0x44, + 0x18, 0xce, 0xe5, 0x43, 0x89, 0x2f, 0x44, 0xa1, 0x87, 0x84, 0x4c, 0x06, 0x27, 0xf2, 0x42, 0x25, + 0xa8, 0xdd, 0x2f, 0x51, 0x24, 0xc4, 0x80, 0x19, 0x50, 0x45, 0x29, 0xd5, 0x21, 0x10, 0x5f, 0x42, + 0x75, 0x9c, 0xab, 0x7b, 0xc4, 0x5f, 0xf2, 0x9d, 0x23, 0x55, 0x30, 0xb0, 0xb1, 0xf2, 0x27, 0xd8, + 0xba, 0xb1, 0x32, 0x31, 0x15, 0xa6, 0x8e, 0x9d, 0x22, 0x6a, 0x7e, 0x08, 0xc8, 0xf6, 0xf9, 0x23, + 0x4d, 0x4a, 0x43, 0x91, 0x22, 0x21, 0x31, 0xb5, 0xf7, 0xbe, 0xcf, 0xf3, 0xdc, 0xfb, 0xdc, 0xeb, + 0x3c, 0xf0, 0x68, 0xfa, 0x26, 0xd3, 0xa8, 0xaf, 0x4f, 0xa3, 0x31, 0x09, 0x3d, 0xc2, 0x09, 0xd3, + 0x83, 0xa9, 0xad, 0x9b, 0x01, 0x65, 0x7a, 0x38, 0x36, 0x2d, 0x7d, 0xb6, 0x37, 0x26, 0xdc, 0xdc, + 0xd3, 0x6d, 0xe2, 0x91, 0xd0, 0xe4, 0x64, 0xa2, 0x05, 0xa1, 0xcf, 0x7d, 0xf4, 0x6a, 0x46, 0xd4, + 0x4a, 0xa2, 0x16, 0x4c, 0x6d, 0x2d, 0x21, 0x6a, 0x09, 0x51, 0x13, 0xc4, 0xc1, 0x8e, 0x4d, 0xf9, + 0x65, 0x34, 0xd6, 0x2c, 0xdf, 0xd5, 0x6d, 0xdf, 0xf6, 0xf5, 0x94, 0x3f, 0x8e, 0x2e, 0xd2, 0x53, + 0x7a, 0x48, 0xff, 0xcb, 0x74, 0x07, 0x87, 0x62, 0x20, 0x33, 0xa0, 0xae, 0x69, 0x5d, 0x52, 0x8f, + 0x84, 0x57, 0xe5, 0x48, 0x2e, 0xe1, 0xa6, 0x3e, 0x5b, 0x9a, 0x66, 0xa0, 0x3f, 0xc6, 0x0a, 0x23, + 0x8f, 0x53, 0x97, 0x2c, 0x11, 0xde, 0x78, 0x8a, 0xc0, 0xac, 0x4b, 0xe2, 0x9a, 0x4b, 0xbc, 0x83, + 0xc7, 0x78, 0x11, 0xa7, 0x8e, 0x4e, 0x3d, 0xce, 0x78, 0xf8, 0x90, 0xa4, 0xfe, 0x0a, 0x60, 0xf7, + 0x5d, 0x27, 0x62, 0x9c, 0x84, 0xd8, 0x77, 0x08, 0x3a, 0x87, 0x9d, 0xc4, 0xc8, 0xc4, 0xe4, 0xa6, + 0x0c, 0x46, 0x60, 0xbb, 0xbb, 0xbf, 0xab, 0x89, 0xe7, 0xac, 0xea, 0x96, 0x0f, 0x9a, 0xa0, 0xb5, + 0xd9, 0x9e, 0xf6, 0xe1, 0xf8, 0x6b, 0x62, 0xf1, 0x0f, 0x08, 0x37, 0x0d, 0x74, 0x33, 0x1f, 0xd6, + 0xe2, 0xf9, 0x10, 0x96, 0x35, 0x5c, 0xa8, 0xa2, 0x4f, 0x61, 0x2b, 0x8c, 0x1c, 0xc2, 0xe4, 0xfa, + 0xa8, 0xb1, 0xdd, 0xdd, 0x3f, 0xd0, 0xd6, 0xdc, 0x96, 0x76, 0xe6, 0x3b, 0xd4, 0xba, 0xc2, 0x91, + 0x43, 0x8c, 0x9e, 0xb8, 0xa1, 0x95, 0x9c, 0x18, 0xce, 0x04, 0xd5, 0x9f, 0xea, 0x10, 0x55, 0xbc, + 0x18, 0xd4, 0x9b, 0x50, 0xcf, 0xde, 0x80, 0xa5, 0xaf, 0x60, 0x87, 0x45, 0x69, 0x23, 0x77, 0xb5, + 0xbb, 0xb6, 0xab, 0x8f, 0x32, 0xa2, 0xf1, 0xa2, 0xb8, 0xa1, 0x23, 0x0a, 0x0c, 0x17, 0x9a, 0xe8, + 0x0b, 0xd8, 0x0e, 0x7d, 0x87, 0x60, 0x72, 0x21, 0x37, 0x16, 0x0d, 0x3c, 0x29, 0x8f, 0x33, 0x9e, + 0xd1, 0x17, 0xf2, 0x6d, 0x51, 0xc0, 0xb9, 0xa2, 0xfa, 0x23, 0x80, 0xaf, 0x2c, 0xbf, 0x9a, 0x11, + 0x51, 0x67, 0x42, 0x42, 0xf4, 0x3d, 0x80, 0xc8, 0x5a, 0xea, 0x8a, 0x77, 0x7c, 0x6b, 0xed, 0x31, + 0x56, 0x5c, 0x30, 0x10, 0x13, 0xad, 0x58, 0x19, 0x5e, 0x71, 0xa5, 0x7a, 0x07, 0xe0, 0xcb, 0xcb, + 0xd0, 0x13, 0xca, 0x38, 0xfa, 0x72, 0x69, 0xc3, 0xda, 0x7a, 0x1b, 0x4e, 0xd8, 0xe9, 0x7e, 0x8b, + 0xd7, 0xcf, 0x2b, 0x95, 0xed, 0x9e, 0xc3, 0x16, 0xe5, 0xc4, 0xcd, 0x57, 0xfb, 0xaf, 0x4c, 0x17, + 0x1f, 0xee, 0x71, 0xa2, 0x88, 0x33, 0x61, 0xf5, 0x37, 0x00, 0xfb, 0x15, 0xf0, 0x06, 0x3c, 0x7d, + 0xb6, 0xe8, 0xe9, 0xf0, 0x59, 0x9e, 0x56, 0x9b, 0xf9, 0x13, 0x40, 0x58, 0xfe, 0x54, 0xd1, 0x10, + 0xb6, 0x66, 0x24, 0x1c, 0x33, 0x19, 0x8c, 0x1a, 0xdb, 0x92, 0x21, 0x25, 0xf8, 0x4f, 0x92, 0x02, + 0xce, 0xea, 0xe8, 0x35, 0x28, 0x99, 0x01, 0x7d, 0x2f, 0xf4, 0xa3, 0x20, 0x1b, 0x47, 0x32, 0x7a, + 0xf1, 0x7c, 0x28, 0xbd, 0x73, 0x76, 0x9c, 0x15, 0x71, 0xd9, 0x4f, 0xc0, 0x21, 0x61, 0x7e, 0x14, + 0x5a, 0x84, 0xc9, 0x8d, 0x12, 0x8c, 0xf3, 0x22, 0x2e, 0xfb, 0xe8, 0x08, 0xf6, 0xf2, 0xc3, 0xa9, + 0xe9, 0x12, 0x26, 0x37, 0x53, 0xc2, 0x56, 0x3c, 0x1f, 0xf6, 0x70, 0xb5, 0x81, 0x17, 0x71, 0xe8, + 0x6d, 0xd8, 0xf7, 0x7c, 0x2f, 0x87, 0x7c, 0x8c, 0x4f, 0x98, 0xdc, 0x4a, 0xa9, 0x2f, 0xc5, 0xf3, + 0x61, 0xff, 0x74, 0xb1, 0x85, 0x1f, 0x62, 0xd5, 0x6f, 0xe1, 0x56, 0x25, 0xab, 0xc4, 0x0f, 0xc9, + 0x86, 0x30, 0x28, 0x8a, 0x62, 0xa3, 0xcf, 0xca, 0xbe, 0x22, 0x8a, 0xca, 0x1a, 0xae, 0x48, 0xab, + 0xbf, 0x00, 0xd8, 0xfc, 0xcf, 0x47, 0xf9, 0x75, 0x1d, 0x76, 0xff, 0xcf, 0xf0, 0xb5, 0x33, 0x3c, + 0x09, 0x90, 0xcd, 0x86, 0xe2, 0xb3, 0x03, 0xe4, 0xe9, 0x34, 0xfc, 0x19, 0xc0, 0xce, 0x86, 0x62, + 0x10, 0x2f, 0xba, 0xd8, 0xf9, 0x67, 0x2e, 0x56, 0x8f, 0xff, 0x0d, 0xcc, 0xf7, 0x83, 0x5e, 0x87, + 0x9d, 0x3c, 0xba, 0xd2, 0xe1, 0xa5, 0x72, 0x98, 0x3c, 0xdd, 0x70, 0x81, 0x40, 0x23, 0xd8, 0x9c, + 0x52, 0x6f, 0x22, 0xd7, 0x53, 0xe4, 0x0b, 0x02, 0xd9, 0x7c, 0x9f, 0x7a, 0x13, 0x9c, 0x76, 0x12, + 0x84, 0x67, 0xba, 0x24, 0xfd, 0x80, 0x2a, 0x88, 0x24, 0xb4, 0x70, 0xda, 0x51, 0xaf, 0x01, 0x6c, + 0x8b, 0x8f, 0xaf, 0xd0, 0x03, 0x8f, 0xea, 0x55, 0xe7, 0xab, 0xaf, 0x33, 0xdf, 0xdf, 0xdf, 0x8e, + 0x74, 0x28, 0x25, 0x7f, 0x59, 0x60, 0x5a, 0x44, 0x6e, 0xa6, 0xb0, 0x2d, 0x01, 0x93, 0x4e, 0xf3, + 0x06, 0x2e, 0x31, 0xc6, 0xce, 0xcd, 0xbd, 0x52, 0xbb, 0xbd, 0x57, 0x6a, 0x77, 0xf7, 0x4a, 0xed, + 0xbb, 0x58, 0x01, 0x37, 0xb1, 0x02, 0x6e, 0x63, 0x05, 0xdc, 0xc5, 0x0a, 0xf8, 0x3d, 0x56, 0xc0, + 0x0f, 0x7f, 0x28, 0xb5, 0xcf, 0xdb, 0xe2, 0xd5, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x6d, 0x2c, + 0xb9, 0x90, 0x12, 0x0c, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.proto new file mode 100644 index 000000000..d4a6ebcf6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/generated.proto @@ -0,0 +1,198 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.rbac.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +message ClusterRole { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Rules holds all the PolicyRules for this ClusterRole + repeated PolicyRule rules = 2; +} + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +message ClusterRoleBinding { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Subjects holds references to the objects the role applies to. + repeated Subject subjects = 2; + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + optional RoleRef roleRef = 3; +} + +// +k8s:deepcopy-gen=false +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +message ClusterRoleBindingBuilder { + optional ClusterRoleBinding clusterRoleBinding = 1; +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +message ClusterRoleBindingList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of ClusterRoleBindings + repeated ClusterRoleBinding items = 2; +} + +// ClusterRoleList is a collection of ClusterRoles +message ClusterRoleList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of ClusterRoles + repeated ClusterRole items = 2; +} + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +message PolicyRule { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + repeated string verbs = 1; + + // APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of + // the enumerated resources in any API group will be allowed. + // +optional + repeated string apiGroups = 2; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + repeated string resources = 3; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + repeated string resourceNames = 4; + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + // +optional + repeated string nonResourceURLs = 5; +} + +// +k8s:deepcopy-gen=false +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +message PolicyRuleBuilder { + optional PolicyRule policyRule = 1; +} + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +message Role { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Rules holds all the PolicyRules for this Role + repeated PolicyRule rules = 2; +} + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +message RoleBinding { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Subjects holds references to the objects the role applies to. + repeated Subject subjects = 2; + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + optional RoleRef roleRef = 3; +} + +// RoleBindingList is a collection of RoleBindings +message RoleBindingList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of RoleBindings + repeated RoleBinding items = 2; +} + +// RoleList is a collection of Roles +message RoleList { + // Standard object's metadata. + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of Roles + repeated Role items = 2; +} + +// RoleRef contains information that points to the role being used +message RoleRef { + // APIGroup is the group for the resource being referenced + optional string apiGroup = 1; + + // Kind is the type of resource being referenced + optional string kind = 2; + + // Name is the name of resource being referenced + optional string name = 3; +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +message Subject { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + optional string kind = 1; + + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // +optional + optional string apiGroup = 2; + + // Name of the object being referenced. + optional string name = 3; + + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + // +optional + optional string namespace = 4; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/helpers.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/helpers.go new file mode 100644 index 000000000..063b9ed3f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/helpers.go @@ -0,0 +1,146 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +type PolicyRuleBuilder struct { + PolicyRule PolicyRule `protobuf:"bytes,1,opt,name=policyRule"` +} + +func NewRule(verbs ...string) *PolicyRuleBuilder { + return &PolicyRuleBuilder{ + PolicyRule: PolicyRule{Verbs: verbs}, + } +} + +func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder { + r.PolicyRule.APIGroups = append(r.PolicyRule.APIGroups, groups...) + return r +} + +func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder { + r.PolicyRule.Resources = append(r.PolicyRule.Resources, resources...) + return r +} + +func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder { + r.PolicyRule.ResourceNames = append(r.PolicyRule.ResourceNames, names...) + return r +} + +func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder { + r.PolicyRule.NonResourceURLs = append(r.PolicyRule.NonResourceURLs, urls...) + return r +} + +func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule { + ret, err := r.Rule() + if err != nil { + panic(err) + } + return ret +} + +func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) { + if len(r.PolicyRule.Verbs) == 0 { + return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule) + } + + switch { + case len(r.PolicyRule.NonResourceURLs) > 0: + if len(r.PolicyRule.APIGroups) != 0 || len(r.PolicyRule.Resources) != 0 || len(r.PolicyRule.ResourceNames) != 0 { + return PolicyRule{}, fmt.Errorf("non-resource rule may not have apiGroups, resources, or resourceNames: %#v", r.PolicyRule) + } + case len(r.PolicyRule.Resources) > 0: + if len(r.PolicyRule.NonResourceURLs) != 0 { + return PolicyRule{}, fmt.Errorf("resource rule may not have nonResourceURLs: %#v", r.PolicyRule) + } + if len(r.PolicyRule.APIGroups) == 0 { + // this a common bug + return PolicyRule{}, fmt.Errorf("resource rule must have apiGroups: %#v", r.PolicyRule) + } + default: + return PolicyRule{}, fmt.Errorf("a rule must have either nonResourceURLs or resources: %#v", r.PolicyRule) + } + + return r.PolicyRule, nil +} + +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +type ClusterRoleBindingBuilder struct { + ClusterRoleBinding ClusterRoleBinding `protobuf:"bytes,1,opt,name=clusterRoleBinding"` +} + +func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder { + return &ClusterRoleBindingBuilder{ + ClusterRoleBinding: ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{Name: clusterRoleName}, + RoleRef: RoleRef{ + APIGroup: GroupName, + Kind: "ClusterRole", + Name: clusterRoleName, + }, + }, + } +} + +func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBindingBuilder { + for _, group := range groups { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: GroupKind, Name: group}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBuilder { + for _, user := range users { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: UserKind, Name: user}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *ClusterRoleBindingBuilder { + for _, saName := range serviceAccountNames { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding { + ret, err := r.Binding() + if err != nil { + panic(err) + } + return ret +} + +func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) { + if len(r.ClusterRoleBinding.Subjects) == 0 { + return ClusterRoleBinding{}, fmt.Errorf("subjects are required: %#v", r.ClusterRoleBinding) + } + + return r.ClusterRoleBinding, nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/register.go new file mode 100644 index 000000000..aa64c0c6f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/register.go @@ -0,0 +1,65 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addDefaultingFuncs) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Role{}, + &RoleBinding{}, + &RoleBindingList{}, + &RoleList{}, + + &ClusterRole{}, + &ClusterRoleBinding{}, + &ClusterRoleBindingList{}, + &ClusterRoleList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.generated.go new file mode 100644 index 000000000..bcb865cf8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.generated.go @@ -0,0 +1,4879 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *PolicyRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = len(x.APIGroups) != 0 + yyq2[2] = len(x.Resources) != 0 + yyq2[3] = len(x.ResourceNames) != 0 + yyq2[4] = len(x.NonResourceURLs) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Verbs == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Verbs, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verbs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Verbs == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Verbs, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.Resources == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resources == nil { + r.EncodeNil() + } else { + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.ResourceNames == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.ResourceNames, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceNames")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceNames == nil { + r.EncodeNil() + } else { + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + z.F.EncSliceStringV(x.ResourceNames, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.NonResourceURLs == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncSliceStringV(x.NonResourceURLs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceURLs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceURLs == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncSliceStringV(x.NonResourceURLs, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PolicyRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PolicyRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "verbs": + if r.TryDecodeAsNil() { + x.Verbs = nil + } else { + yyv4 := &x.Verbs + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + z.F.DecSliceStringX(yyv4, false, d) + } + } + case "apiGroups": + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv6 := &x.APIGroups + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + z.F.DecSliceStringX(yyv6, false, d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv8 := &x.Resources + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + z.F.DecSliceStringX(yyv8, false, d) + } + } + case "resourceNames": + if r.TryDecodeAsNil() { + x.ResourceNames = nil + } else { + yyv10 := &x.ResourceNames + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + z.F.DecSliceStringX(yyv10, false, d) + } + } + case "nonResourceURLs": + if r.TryDecodeAsNil() { + x.NonResourceURLs = nil + } else { + yyv12 := &x.NonResourceURLs + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + z.F.DecSliceStringX(yyv12, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PolicyRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verbs = nil + } else { + yyv15 := &x.Verbs + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + z.F.DecSliceStringX(yyv15, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv17 := &x.APIGroups + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + z.F.DecSliceStringX(yyv17, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv19 := &x.Resources + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + z.F.DecSliceStringX(yyv19, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceNames = nil + } else { + yyv21 := &x.ResourceNames + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + z.F.DecSliceStringX(yyv21, false, d) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NonResourceURLs = nil + } else { + yyv23 := &x.NonResourceURLs + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + z.F.DecSliceStringX(yyv23, false, d) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Subject) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = x.APIGroup != "" + yyq2[3] = x.Namespace != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Subject) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Subject) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiGroup": + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + yyv6 := &x.APIGroup + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv10 := &x.Namespace + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Subject) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + yyv15 := &x.APIGroup + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv17 := &x.Name + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + yyv19 := &x.Namespace + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + *((*string)(yyv19)) = r.DecodeString() + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleRef) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 3 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleRef) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleRef) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "apiGroup": + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + yyv4 := &x.APIGroup + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv6 := &x.Kind + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv8 := &x.Name + yym9 := z.DecBinary() + _ = yym9 + if false { + } else { + *((*string)(yyv8)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleRef) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + yyv11 := &x.APIGroup + yym12 := z.DecBinary() + _ = yym12 + if false { + } else { + *((*string)(yyv11)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + yyv15 := &x.Name + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Role) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Role) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Role) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv10 := &x.Rules + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Role) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv19 := &x.Rules + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleBinding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subjects")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy18 := &x.RoleRef + yy18.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("roleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy20 := &x.RoleRef + yy20.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleBinding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleBinding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "subjects": + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv10 := &x.Subjects + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv10), d) + } + } + case "roleRef": + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv12 := &x.RoleRef + yyv12.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleBinding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv14 := &x.Kind + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv16 := &x.APIVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv18 := &x.ObjectMeta + yym19 := z.DecBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.DecExt(yyv18) { + } else { + z.DecFallback(yyv18, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv20 := &x.Subjects + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv20), d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv22 := &x.RoleRef + yyv22.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleBindingList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceRoleBinding(([]RoleBinding)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceRoleBinding(([]RoleBinding)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleBindingList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleBindingList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceRoleBinding((*[]RoleBinding)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleBindingList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceRoleBinding((*[]RoleBinding)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceRole(([]Role)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceRole(([]Role)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceRole((*[]Role)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceRole((*[]Role)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRole) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRole) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRole) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv10 := &x.Rules + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRole) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv17 := &x.ObjectMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv19 := &x.Rules + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleBinding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subjects")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy18 := &x.RoleRef + yy18.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("roleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy20 := &x.RoleRef + yy20.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleBinding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleBinding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "subjects": + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv10 := &x.Subjects + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv10), d) + } + } + case "roleRef": + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv12 := &x.RoleRef + yyv12.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleBinding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj13 int + var yyb13 bool + var yyhl13 bool = l >= 0 + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv14 := &x.Kind + yym15 := z.DecBinary() + _ = yym15 + if false { + } else { + *((*string)(yyv14)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv16 := &x.APIVersion + yym17 := z.DecBinary() + _ = yym17 + if false { + } else { + *((*string)(yyv16)) = r.DecodeString() + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv18 := &x.ObjectMeta + yym19 := z.DecBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.DecExt(yyv18) { + } else { + z.DecFallback(yyv18, false) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv20 := &x.Subjects + yym21 := z.DecBinary() + _ = yym21 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv20), d) + } + } + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv22 := &x.RoleRef + yyv22.CodecDecodeSelf(d) + } + for { + yyj13++ + if yyhl13 { + yyb13 = yyj13 > l + } else { + yyb13 = r.CheckBreak() + } + if yyb13 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj13-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleBindingList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceClusterRoleBinding(([]ClusterRoleBinding)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceClusterRoleBinding(([]ClusterRoleBinding)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleBindingList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleBindingList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceClusterRoleBinding((*[]ClusterRoleBinding)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleBindingList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceClusterRoleBinding((*[]ClusterRoleBinding)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceClusterRole(([]ClusterRole)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceClusterRole(([]ClusterRole)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceClusterRole((*[]ClusterRole)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceClusterRole((*[]ClusterRole)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicePolicyRule(v []PolicyRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePolicyRule(v *[]PolicyRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []PolicyRule{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 120) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]PolicyRule, yyrl1) + } + } else { + yyv1 = make([]PolicyRule, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PolicyRule{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, PolicyRule{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = PolicyRule{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, PolicyRule{}) // var yyz1 PolicyRule + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = PolicyRule{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []PolicyRule{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceSubject(v []Subject, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceSubject(v *[]Subject, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Subject{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Subject, yyrl1) + } + } else { + yyv1 = make([]Subject, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Subject{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Subject{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Subject{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Subject{}) // var yyz1 Subject + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Subject{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Subject{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceRoleBinding(v []RoleBinding, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRoleBinding(v *[]RoleBinding, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []RoleBinding{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 336) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]RoleBinding, yyrl1) + } + } else { + yyv1 = make([]RoleBinding, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = RoleBinding{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, RoleBinding{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = RoleBinding{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, RoleBinding{}) // var yyz1 RoleBinding + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = RoleBinding{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []RoleBinding{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceRole(v []Role, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRole(v *[]Role, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []Role{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]Role, yyrl1) + } + } else { + yyv1 = make([]Role, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Role{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, Role{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = Role{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, Role{}) // var yyz1 Role + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = Role{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []Role{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceClusterRoleBinding(v []ClusterRoleBinding, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceClusterRoleBinding(v *[]ClusterRoleBinding, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ClusterRoleBinding{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 336) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ClusterRoleBinding, yyrl1) + } + } else { + yyv1 = make([]ClusterRoleBinding, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRoleBinding{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ClusterRoleBinding{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRoleBinding{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ClusterRoleBinding{}) // var yyz1 ClusterRoleBinding + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRoleBinding{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ClusterRoleBinding{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} + +func (x codecSelfer1234) encSliceClusterRole(v []ClusterRole, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceClusterRole(v *[]ClusterRole, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []ClusterRole{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]ClusterRole, yyrl1) + } + } else { + yyv1 = make([]ClusterRole, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRole{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, ClusterRole{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRole{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, ClusterRole{}) // var yyz1 ClusterRole + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = ClusterRole{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []ClusterRole{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.go new file mode 100644 index 000000000..89a47db9e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types.go @@ -0,0 +1,207 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +const ( + APIGroupAll = "*" + ResourceAll = "*" + VerbAll = "*" + NonResourceAll = "*" + + GroupKind = "Group" + ServiceAccountKind = "ServiceAccount" + UserKind = "User" + + // AutoUpdateAnnotationKey is the name of an annotation which prevents reconciliation if set to "false" + AutoUpdateAnnotationKey = "rbac.authorization.kubernetes.io/autoupdate" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +type PolicyRule struct { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + + // APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of + // the enumerated resources in any API group will be allowed. + // +optional + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,2,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + // +optional + Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + // +optional + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,4,rep,name=resourceNames"` + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + // +optional + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,5,rep,name=nonResourceURLs"` +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +type Subject struct { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // APIGroup holds the API group of the referenced subject. + // Defaults to "" for ServiceAccount subjects. + // Defaults to "rbac.authorization.k8s.io" for User and Group subjects. + // +optional + APIGroup string `json:"apiGroup,omitempty" protobuf:"bytes,2,opt.name=apiGroup"` + // Name of the object being referenced. + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + // +optional + Namespace string `json:"namespace,omitempty" protobuf:"bytes,4,opt,name=namespace"` +} + +// RoleRef contains information that points to the role being used +type RoleRef struct { + // APIGroup is the group for the resource being referenced + APIGroup string `json:"apiGroup" protobuf:"bytes,1,opt,name=apiGroup"` + // Kind is the type of resource being referenced + Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` + // Name is the name of resource being referenced + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` +} + +// +genclient=true + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Rules holds all the PolicyRules for this Role + Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` +} + +// +genclient=true + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +type RoleBinding struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Subjects holds references to the objects the role applies to. + Subjects []Subject `json:"subjects" protobuf:"bytes,2,rep,name=subjects"` + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` +} + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of RoleBindings + Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// RoleList is a collection of Roles +type RoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of Roles + Items []Role `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Rules holds all the PolicyRules for this ClusterRole + Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +type ClusterRoleBinding struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Subjects holds references to the objects the role applies to. + Subjects []Subject `json:"subjects" protobuf:"bytes,2,rep,name=subjects"` + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ClusterRoleBindings + Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ClusterRoles + Items []ClusterRole `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..1463d8fea --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,148 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_ClusterRole = map[string]string{ + "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.", + "metadata": "Standard object's metadata.", + "rules": "Rules holds all the PolicyRules for this ClusterRole", +} + +func (ClusterRole) SwaggerDoc() map[string]string { + return map_ClusterRole +} + +var map_ClusterRoleBinding = map[string]string{ + "": "ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.", + "metadata": "Standard object's metadata.", + "subjects": "Subjects holds references to the objects the role applies to.", + "roleRef": "RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", +} + +func (ClusterRoleBinding) SwaggerDoc() map[string]string { + return map_ClusterRoleBinding +} + +var map_ClusterRoleBindingList = map[string]string{ + "": "ClusterRoleBindingList is a collection of ClusterRoleBindings", + "metadata": "Standard object's metadata.", + "items": "Items is a list of ClusterRoleBindings", +} + +func (ClusterRoleBindingList) SwaggerDoc() map[string]string { + return map_ClusterRoleBindingList +} + +var map_ClusterRoleList = map[string]string{ + "": "ClusterRoleList is a collection of ClusterRoles", + "metadata": "Standard object's metadata.", + "items": "Items is a list of ClusterRoles", +} + +func (ClusterRoleList) SwaggerDoc() map[string]string { + return map_ClusterRoleList +} + +var map_PolicyRule = map[string]string{ + "": "PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.", + "verbs": "Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.", + "apiGroups": "APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.", + "resources": "Resources is a list of resources this rule applies to. ResourceAll represents all resources.", + "resourceNames": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.", + "nonResourceURLs": "NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"), but not both.", +} + +func (PolicyRule) SwaggerDoc() map[string]string { + return map_PolicyRule +} + +var map_Role = map[string]string{ + "": "Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.", + "metadata": "Standard object's metadata.", + "rules": "Rules holds all the PolicyRules for this Role", +} + +func (Role) SwaggerDoc() map[string]string { + return map_Role +} + +var map_RoleBinding = map[string]string{ + "": "RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.", + "metadata": "Standard object's metadata.", + "subjects": "Subjects holds references to the objects the role applies to.", + "roleRef": "RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", +} + +func (RoleBinding) SwaggerDoc() map[string]string { + return map_RoleBinding +} + +var map_RoleBindingList = map[string]string{ + "": "RoleBindingList is a collection of RoleBindings", + "metadata": "Standard object's metadata.", + "items": "Items is a list of RoleBindings", +} + +func (RoleBindingList) SwaggerDoc() map[string]string { + return map_RoleBindingList +} + +var map_RoleList = map[string]string{ + "": "RoleList is a collection of Roles", + "metadata": "Standard object's metadata.", + "items": "Items is a list of Roles", +} + +func (RoleList) SwaggerDoc() map[string]string { + return map_RoleList +} + +var map_RoleRef = map[string]string{ + "": "RoleRef contains information that points to the role being used", + "apiGroup": "APIGroup is the group for the resource being referenced", + "kind": "Kind is the type of resource being referenced", + "name": "Name is the name of resource being referenced", +} + +func (RoleRef) SwaggerDoc() map[string]string { + return map_RoleRef +} + +var map_Subject = map[string]string{ + "": "Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.", + "kind": "Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.", + "apiGroup": "APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects.", + "name": "Name of the object being referenced.", + "namespace": "Namespace of the referenced object. If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.", +} + +func (Subject) SwaggerDoc() map[string]string { + return map_Subject +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..56e2c4ee4 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.conversion.go @@ -0,0 +1,415 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + rbac "k8s.io/client-go/pkg/apis/rbac" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_ClusterRole_To_rbac_ClusterRole, + Convert_rbac_ClusterRole_To_v1beta1_ClusterRole, + Convert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding, + Convert_rbac_ClusterRoleBinding_To_v1beta1_ClusterRoleBinding, + Convert_v1beta1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder, + Convert_rbac_ClusterRoleBindingBuilder_To_v1beta1_ClusterRoleBindingBuilder, + Convert_v1beta1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList, + Convert_rbac_ClusterRoleBindingList_To_v1beta1_ClusterRoleBindingList, + Convert_v1beta1_ClusterRoleList_To_rbac_ClusterRoleList, + Convert_rbac_ClusterRoleList_To_v1beta1_ClusterRoleList, + Convert_v1beta1_PolicyRule_To_rbac_PolicyRule, + Convert_rbac_PolicyRule_To_v1beta1_PolicyRule, + Convert_v1beta1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder, + Convert_rbac_PolicyRuleBuilder_To_v1beta1_PolicyRuleBuilder, + Convert_v1beta1_Role_To_rbac_Role, + Convert_rbac_Role_To_v1beta1_Role, + Convert_v1beta1_RoleBinding_To_rbac_RoleBinding, + Convert_rbac_RoleBinding_To_v1beta1_RoleBinding, + Convert_v1beta1_RoleBindingList_To_rbac_RoleBindingList, + Convert_rbac_RoleBindingList_To_v1beta1_RoleBindingList, + Convert_v1beta1_RoleList_To_rbac_RoleList, + Convert_rbac_RoleList_To_v1beta1_RoleList, + Convert_v1beta1_RoleRef_To_rbac_RoleRef, + Convert_rbac_RoleRef_To_v1beta1_RoleRef, + Convert_v1beta1_Subject_To_rbac_Subject, + Convert_rbac_Subject_To_v1beta1_Subject, + ) +} + +func autoConvert_v1beta1_ClusterRole_To_rbac_ClusterRole(in *ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules)) + return nil +} + +// Convert_v1beta1_ClusterRole_To_rbac_ClusterRole is an autogenerated conversion function. +func Convert_v1beta1_ClusterRole_To_rbac_ClusterRole(in *ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error { + return autoConvert_v1beta1_ClusterRole_To_rbac_ClusterRole(in, out, s) +} + +func autoConvert_rbac_ClusterRole_To_v1beta1_ClusterRole(in *rbac.ClusterRole, out *ClusterRole, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Rules == nil { + out.Rules = make([]PolicyRule, 0) + } else { + out.Rules = *(*[]PolicyRule)(unsafe.Pointer(&in.Rules)) + } + return nil +} + +// Convert_rbac_ClusterRole_To_v1beta1_ClusterRole is an autogenerated conversion function. +func Convert_rbac_ClusterRole_To_v1beta1_ClusterRole(in *rbac.ClusterRole, out *ClusterRole, s conversion.Scope) error { + return autoConvert_rbac_ClusterRole_To_v1beta1_ClusterRole(in, out, s) +} + +func autoConvert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in *ClusterRoleBinding, out *rbac.ClusterRoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Subjects = *(*[]rbac.Subject)(unsafe.Pointer(&in.Subjects)) + if err := Convert_v1beta1_RoleRef_To_rbac_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding is an autogenerated conversion function. +func Convert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in *ClusterRoleBinding, out *rbac.ClusterRoleBinding, s conversion.Scope) error { + return autoConvert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBinding_To_v1beta1_ClusterRoleBinding(in *rbac.ClusterRoleBinding, out *ClusterRoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subjects == nil { + out.Subjects = make([]Subject, 0) + } else { + out.Subjects = *(*[]Subject)(unsafe.Pointer(&in.Subjects)) + } + if err := Convert_rbac_RoleRef_To_v1beta1_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_ClusterRoleBinding_To_v1beta1_ClusterRoleBinding is an autogenerated conversion function. +func Convert_rbac_ClusterRoleBinding_To_v1beta1_ClusterRoleBinding(in *rbac.ClusterRoleBinding, out *ClusterRoleBinding, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBinding_To_v1beta1_ClusterRoleBinding(in, out, s) +} + +func autoConvert_v1beta1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in *ClusterRoleBindingBuilder, out *rbac.ClusterRoleBindingBuilder, s conversion.Scope) error { + if err := Convert_v1beta1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(&in.ClusterRoleBinding, &out.ClusterRoleBinding, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder is an autogenerated conversion function. +func Convert_v1beta1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in *ClusterRoleBindingBuilder, out *rbac.ClusterRoleBindingBuilder, s conversion.Scope) error { + return autoConvert_v1beta1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBindingBuilder_To_v1beta1_ClusterRoleBindingBuilder(in *rbac.ClusterRoleBindingBuilder, out *ClusterRoleBindingBuilder, s conversion.Scope) error { + if err := Convert_rbac_ClusterRoleBinding_To_v1beta1_ClusterRoleBinding(&in.ClusterRoleBinding, &out.ClusterRoleBinding, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_ClusterRoleBindingBuilder_To_v1beta1_ClusterRoleBindingBuilder is an autogenerated conversion function. +func Convert_rbac_ClusterRoleBindingBuilder_To_v1beta1_ClusterRoleBindingBuilder(in *rbac.ClusterRoleBindingBuilder, out *ClusterRoleBindingBuilder, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBindingBuilder_To_v1beta1_ClusterRoleBindingBuilder(in, out, s) +} + +func autoConvert_v1beta1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]rbac.ClusterRoleBinding)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList is an autogenerated conversion function. +func Convert_v1beta1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { + return autoConvert_v1beta1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBindingList_To_v1beta1_ClusterRoleBindingList(in *rbac.ClusterRoleBindingList, out *ClusterRoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ClusterRoleBinding, 0) + } else { + out.Items = *(*[]ClusterRoleBinding)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_rbac_ClusterRoleBindingList_To_v1beta1_ClusterRoleBindingList is an autogenerated conversion function. +func Convert_rbac_ClusterRoleBindingList_To_v1beta1_ClusterRoleBindingList(in *rbac.ClusterRoleBindingList, out *ClusterRoleBindingList, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBindingList_To_v1beta1_ClusterRoleBindingList(in, out, s) +} + +func autoConvert_v1beta1_ClusterRoleList_To_rbac_ClusterRoleList(in *ClusterRoleList, out *rbac.ClusterRoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]rbac.ClusterRole)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_ClusterRoleList_To_rbac_ClusterRoleList is an autogenerated conversion function. +func Convert_v1beta1_ClusterRoleList_To_rbac_ClusterRoleList(in *ClusterRoleList, out *rbac.ClusterRoleList, s conversion.Scope) error { + return autoConvert_v1beta1_ClusterRoleList_To_rbac_ClusterRoleList(in, out, s) +} + +func autoConvert_rbac_ClusterRoleList_To_v1beta1_ClusterRoleList(in *rbac.ClusterRoleList, out *ClusterRoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]ClusterRole, 0) + } else { + out.Items = *(*[]ClusterRole)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_rbac_ClusterRoleList_To_v1beta1_ClusterRoleList is an autogenerated conversion function. +func Convert_rbac_ClusterRoleList_To_v1beta1_ClusterRoleList(in *rbac.ClusterRoleList, out *ClusterRoleList, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleList_To_v1beta1_ClusterRoleList(in, out, s) +} + +func autoConvert_v1beta1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { + out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs)) + out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups)) + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + out.ResourceNames = *(*[]string)(unsafe.Pointer(&in.ResourceNames)) + out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs)) + return nil +} + +// Convert_v1beta1_PolicyRule_To_rbac_PolicyRule is an autogenerated conversion function. +func Convert_v1beta1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { + return autoConvert_v1beta1_PolicyRule_To_rbac_PolicyRule(in, out, s) +} + +func autoConvert_rbac_PolicyRule_To_v1beta1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { + if in.Verbs == nil { + out.Verbs = make([]string, 0) + } else { + out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs)) + } + out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups)) + out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources)) + out.ResourceNames = *(*[]string)(unsafe.Pointer(&in.ResourceNames)) + out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs)) + return nil +} + +// Convert_rbac_PolicyRule_To_v1beta1_PolicyRule is an autogenerated conversion function. +func Convert_rbac_PolicyRule_To_v1beta1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { + return autoConvert_rbac_PolicyRule_To_v1beta1_PolicyRule(in, out, s) +} + +func autoConvert_v1beta1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in *PolicyRuleBuilder, out *rbac.PolicyRuleBuilder, s conversion.Scope) error { + if err := Convert_v1beta1_PolicyRule_To_rbac_PolicyRule(&in.PolicyRule, &out.PolicyRule, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder is an autogenerated conversion function. +func Convert_v1beta1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in *PolicyRuleBuilder, out *rbac.PolicyRuleBuilder, s conversion.Scope) error { + return autoConvert_v1beta1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in, out, s) +} + +func autoConvert_rbac_PolicyRuleBuilder_To_v1beta1_PolicyRuleBuilder(in *rbac.PolicyRuleBuilder, out *PolicyRuleBuilder, s conversion.Scope) error { + if err := Convert_rbac_PolicyRule_To_v1beta1_PolicyRule(&in.PolicyRule, &out.PolicyRule, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_PolicyRuleBuilder_To_v1beta1_PolicyRuleBuilder is an autogenerated conversion function. +func Convert_rbac_PolicyRuleBuilder_To_v1beta1_PolicyRuleBuilder(in *rbac.PolicyRuleBuilder, out *PolicyRuleBuilder, s conversion.Scope) error { + return autoConvert_rbac_PolicyRuleBuilder_To_v1beta1_PolicyRuleBuilder(in, out, s) +} + +func autoConvert_v1beta1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Rules = *(*[]rbac.PolicyRule)(unsafe.Pointer(&in.Rules)) + return nil +} + +// Convert_v1beta1_Role_To_rbac_Role is an autogenerated conversion function. +func Convert_v1beta1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { + return autoConvert_v1beta1_Role_To_rbac_Role(in, out, s) +} + +func autoConvert_rbac_Role_To_v1beta1_Role(in *rbac.Role, out *Role, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Rules == nil { + out.Rules = make([]PolicyRule, 0) + } else { + out.Rules = *(*[]PolicyRule)(unsafe.Pointer(&in.Rules)) + } + return nil +} + +// Convert_rbac_Role_To_v1beta1_Role is an autogenerated conversion function. +func Convert_rbac_Role_To_v1beta1_Role(in *rbac.Role, out *Role, s conversion.Scope) error { + return autoConvert_rbac_Role_To_v1beta1_Role(in, out, s) +} + +func autoConvert_v1beta1_RoleBinding_To_rbac_RoleBinding(in *RoleBinding, out *rbac.RoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Subjects = *(*[]rbac.Subject)(unsafe.Pointer(&in.Subjects)) + if err := Convert_v1beta1_RoleRef_To_rbac_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1beta1_RoleBinding_To_rbac_RoleBinding is an autogenerated conversion function. +func Convert_v1beta1_RoleBinding_To_rbac_RoleBinding(in *RoleBinding, out *rbac.RoleBinding, s conversion.Scope) error { + return autoConvert_v1beta1_RoleBinding_To_rbac_RoleBinding(in, out, s) +} + +func autoConvert_rbac_RoleBinding_To_v1beta1_RoleBinding(in *rbac.RoleBinding, out *RoleBinding, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if in.Subjects == nil { + out.Subjects = make([]Subject, 0) + } else { + out.Subjects = *(*[]Subject)(unsafe.Pointer(&in.Subjects)) + } + if err := Convert_rbac_RoleRef_To_v1beta1_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +// Convert_rbac_RoleBinding_To_v1beta1_RoleBinding is an autogenerated conversion function. +func Convert_rbac_RoleBinding_To_v1beta1_RoleBinding(in *rbac.RoleBinding, out *RoleBinding, s conversion.Scope) error { + return autoConvert_rbac_RoleBinding_To_v1beta1_RoleBinding(in, out, s) +} + +func autoConvert_v1beta1_RoleBindingList_To_rbac_RoleBindingList(in *RoleBindingList, out *rbac.RoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]rbac.RoleBinding)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_RoleBindingList_To_rbac_RoleBindingList is an autogenerated conversion function. +func Convert_v1beta1_RoleBindingList_To_rbac_RoleBindingList(in *RoleBindingList, out *rbac.RoleBindingList, s conversion.Scope) error { + return autoConvert_v1beta1_RoleBindingList_To_rbac_RoleBindingList(in, out, s) +} + +func autoConvert_rbac_RoleBindingList_To_v1beta1_RoleBindingList(in *rbac.RoleBindingList, out *RoleBindingList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]RoleBinding, 0) + } else { + out.Items = *(*[]RoleBinding)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_rbac_RoleBindingList_To_v1beta1_RoleBindingList is an autogenerated conversion function. +func Convert_rbac_RoleBindingList_To_v1beta1_RoleBindingList(in *rbac.RoleBindingList, out *RoleBindingList, s conversion.Scope) error { + return autoConvert_rbac_RoleBindingList_To_v1beta1_RoleBindingList(in, out, s) +} + +func autoConvert_v1beta1_RoleList_To_rbac_RoleList(in *RoleList, out *rbac.RoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]rbac.Role)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_RoleList_To_rbac_RoleList is an autogenerated conversion function. +func Convert_v1beta1_RoleList_To_rbac_RoleList(in *RoleList, out *rbac.RoleList, s conversion.Scope) error { + return autoConvert_v1beta1_RoleList_To_rbac_RoleList(in, out, s) +} + +func autoConvert_rbac_RoleList_To_v1beta1_RoleList(in *rbac.RoleList, out *RoleList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]Role, 0) + } else { + out.Items = *(*[]Role)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_rbac_RoleList_To_v1beta1_RoleList is an autogenerated conversion function. +func Convert_rbac_RoleList_To_v1beta1_RoleList(in *rbac.RoleList, out *RoleList, s conversion.Scope) error { + return autoConvert_rbac_RoleList_To_v1beta1_RoleList(in, out, s) +} + +func autoConvert_v1beta1_RoleRef_To_rbac_RoleRef(in *RoleRef, out *rbac.RoleRef, s conversion.Scope) error { + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil +} + +// Convert_v1beta1_RoleRef_To_rbac_RoleRef is an autogenerated conversion function. +func Convert_v1beta1_RoleRef_To_rbac_RoleRef(in *RoleRef, out *rbac.RoleRef, s conversion.Scope) error { + return autoConvert_v1beta1_RoleRef_To_rbac_RoleRef(in, out, s) +} + +func autoConvert_rbac_RoleRef_To_v1beta1_RoleRef(in *rbac.RoleRef, out *RoleRef, s conversion.Scope) error { + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil +} + +// Convert_rbac_RoleRef_To_v1beta1_RoleRef is an autogenerated conversion function. +func Convert_rbac_RoleRef_To_v1beta1_RoleRef(in *rbac.RoleRef, out *RoleRef, s conversion.Scope) error { + return autoConvert_rbac_RoleRef_To_v1beta1_RoleRef(in, out, s) +} + +func autoConvert_v1beta1_Subject_To_rbac_Subject(in *Subject, out *rbac.Subject, s conversion.Scope) error { + out.Kind = in.Kind + out.APIGroup = in.APIGroup + out.Name = in.Name + out.Namespace = in.Namespace + return nil +} + +// Convert_v1beta1_Subject_To_rbac_Subject is an autogenerated conversion function. +func Convert_v1beta1_Subject_To_rbac_Subject(in *Subject, out *rbac.Subject, s conversion.Scope) error { + return autoConvert_v1beta1_Subject_To_rbac_Subject(in, out, s) +} + +func autoConvert_rbac_Subject_To_v1beta1_Subject(in *rbac.Subject, out *Subject, s conversion.Scope) error { + out.Kind = in.Kind + out.APIGroup = in.APIGroup + out.Name = in.Name + out.Namespace = in.Namespace + return nil +} + +// Convert_rbac_Subject_To_v1beta1_Subject is an autogenerated conversion function. +func Convert_rbac_Subject_To_v1beta1_Subject(in *rbac.Subject, out *Subject, s conversion.Scope) error { + return autoConvert_rbac_Subject_To_v1beta1_Subject(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..57c331ea9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,269 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ClusterRole, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ClusterRoleBinding, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ClusterRoleBindingList, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ClusterRoleList, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PolicyRule, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Role, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RoleBinding, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RoleBindingList, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RoleList, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RoleRef, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Subject, InType: reflect.TypeOf(&Subject{})}, + ) +} + +// DeepCopy_v1beta1_ClusterRole is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ClusterRole(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRole) + out := out.(*ClusterRole) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_ClusterRoleBinding is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ClusterRoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBinding) + out := out.(*ClusterRoleBinding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_ClusterRoleBindingList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ClusterRoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBindingList) + out := out.(*ClusterRoleBindingList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ClusterRoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_ClusterRoleList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_ClusterRoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleList) + out := out.(*ClusterRoleList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRole, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ClusterRole(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_PolicyRule is an autogenerated deepcopy function. +func DeepCopy_v1beta1_PolicyRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PolicyRule) + out := out.(*PolicyRule) + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_Role is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Role(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Role) + out := out.(*Role) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_RoleBinding is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBinding) + out := out.(*RoleBinding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_v1beta1_RoleBindingList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBindingList) + out := out.(*RoleBindingList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_RoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_RoleList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleList) + out := out.(*RoleList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Role(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1beta1_RoleRef is an autogenerated deepcopy function. +func DeepCopy_v1beta1_RoleRef(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleRef) + out := out.(*RoleRef) + *out = *in + return nil + } +} + +// DeepCopy_v1beta1_Subject is an autogenerated deepcopy function. +func DeepCopy_v1beta1_Subject(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Subject) + out := out.(*Subject) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..fa5bfb6ab --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/v1beta1/zz_generated.defaults.go @@ -0,0 +1,66 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&ClusterRoleBinding{}, func(obj interface{}) { SetObjectDefaults_ClusterRoleBinding(obj.(*ClusterRoleBinding)) }) + scheme.AddTypeDefaultingFunc(&ClusterRoleBindingList{}, func(obj interface{}) { SetObjectDefaults_ClusterRoleBindingList(obj.(*ClusterRoleBindingList)) }) + scheme.AddTypeDefaultingFunc(&RoleBinding{}, func(obj interface{}) { SetObjectDefaults_RoleBinding(obj.(*RoleBinding)) }) + scheme.AddTypeDefaultingFunc(&RoleBindingList{}, func(obj interface{}) { SetObjectDefaults_RoleBindingList(obj.(*RoleBindingList)) }) + return nil +} + +func SetObjectDefaults_ClusterRoleBinding(in *ClusterRoleBinding) { + SetDefaults_ClusterRoleBinding(in) + for i := range in.Subjects { + a := &in.Subjects[i] + SetDefaults_Subject(a) + } +} + +func SetObjectDefaults_ClusterRoleBindingList(in *ClusterRoleBindingList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_ClusterRoleBinding(a) + } +} + +func SetObjectDefaults_RoleBinding(in *RoleBinding) { + SetDefaults_RoleBinding(in) + for i := range in.Subjects { + a := &in.Subjects[i] + SetDefaults_Subject(a) + } +} + +func SetObjectDefaults_RoleBindingList(in *RoleBindingList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_RoleBinding(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/rbac/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/rbac/zz_generated.deepcopy.go new file mode 100644 index 000000000..ed8507e7f --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/rbac/zz_generated.deepcopy.go @@ -0,0 +1,269 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package rbac + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRole, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRoleBinding, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRoleBindingList, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRoleList, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_PolicyRule, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_Role, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleBinding, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleBindingList, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleList, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleRef, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_Subject, InType: reflect.TypeOf(&Subject{})}, + ) +} + +// DeepCopy_rbac_ClusterRole is an autogenerated deepcopy function. +func DeepCopy_rbac_ClusterRole(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRole) + out := out.(*ClusterRole) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_rbac_ClusterRoleBinding is an autogenerated deepcopy function. +func DeepCopy_rbac_ClusterRoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBinding) + out := out.(*ClusterRoleBinding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_rbac_ClusterRoleBindingList is an autogenerated deepcopy function. +func DeepCopy_rbac_ClusterRoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBindingList) + out := out.(*ClusterRoleBindingList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_ClusterRoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_rbac_ClusterRoleList is an autogenerated deepcopy function. +func DeepCopy_rbac_ClusterRoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleList) + out := out.(*ClusterRoleList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRole, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_ClusterRole(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_rbac_PolicyRule is an autogenerated deepcopy function. +func DeepCopy_rbac_PolicyRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PolicyRule) + out := out.(*PolicyRule) + *out = *in + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_rbac_Role is an autogenerated deepcopy function. +func DeepCopy_rbac_Role(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Role) + out := out.(*Role) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_rbac_RoleBinding is an autogenerated deepcopy function. +func DeepCopy_rbac_RoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBinding) + out := out.(*RoleBinding) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + copy(*out, *in) + } + return nil + } +} + +// DeepCopy_rbac_RoleBindingList is an autogenerated deepcopy function. +func DeepCopy_rbac_RoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBindingList) + out := out.(*RoleBindingList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_RoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_rbac_RoleList is an autogenerated deepcopy function. +func DeepCopy_rbac_RoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleList) + out := out.(*RoleList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_Role(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_rbac_RoleRef is an autogenerated deepcopy function. +func DeepCopy_rbac_RoleRef(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleRef) + out := out.(*RoleRef) + *out = *in + return nil + } +} + +// DeepCopy_rbac_Subject is an autogenerated deepcopy function. +func DeepCopy_rbac_Subject(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Subject) + out := out.(*Subject) + *out = *in + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/BUILD b/vendor/k8s.io/client-go/pkg/apis/settings/BUILD new file mode 100644 index 000000000..f0ff3f2ce --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/BUILD @@ -0,0 +1,26 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/doc.go b/vendor/k8s.io/client-go/pkg/apis/settings/doc.go new file mode 100644 index 000000000..90ccf882a --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=settings.k8s.io +package settings diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/settings/install/BUILD new file mode 100644 index 000000000..9289ee74d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/install/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/install/install.go b/vendor/k8s.io/client-go/pkg/apis/settings/install/install.go new file mode 100644 index 000000000..ccdc70400 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/install/install.go @@ -0,0 +1,49 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the settings API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/settings" + "k8s.io/client-go/pkg/apis/settings/v1alpha1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: settings.GroupName, + VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/settings", + AddInternalObjectsToScheme: settings.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/register.go b/vendor/k8s.io/client-go/pkg/apis/settings/register.go new file mode 100644 index 000000000..858470127 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package settings + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package +const GroupName = "settings.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PodPreset{}, + &PodPresetList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/types.go b/vendor/k8s.io/client-go/pkg/apis/settings/types.go new file mode 100644 index 000000000..b0589eedf --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/types.go @@ -0,0 +1,63 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package settings + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api" +) + +// +genclient=true + +// PodPreset is a policy resource that defines additional runtime +// requirements for a Pod. +type PodPreset struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // +optional + Spec PodPresetSpec +} + +// PodPresetSpec is a description of a pod preset. +type PodPresetSpec struct { + // Selector is a label query over a set of resources, in this case pods. + // Required. + Selector metav1.LabelSelector + // Env defines the collection of EnvVar to inject into containers. + // +optional + Env []api.EnvVar + // EnvFrom defines the collection of EnvFromSource to inject into containers. + // +optional + EnvFrom []api.EnvFromSource + // Volumes defines the collection of Volume to inject into the pod. + // +optional + Volumes []api.Volume + // VolumeMounts defines the collection of VolumeMount to inject into containers. + // +optional + VolumeMounts []api.VolumeMount +} + +// PodPresetList is a list of PodPreset objects. +type PodPresetList struct { + metav1.TypeMeta + // +optional + metav1.ListMeta + + Items []PodPreset +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/BUILD b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/BUILD new file mode 100644 index 000000000..31b65cc66 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/settings:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/doc.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/doc.go new file mode 100644 index 000000000..86390b523 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=settings.k8s.io +package v1alpha1 diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.pb.go new file mode 100644 index 000000000..64b15b1d2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.pb.go @@ -0,0 +1,929 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/settings/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/settings/v1alpha1/generated.proto + + It has these top-level messages: + PodPreset + PodPresetList + PodPresetSpec +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *PodPreset) Reset() { *m = PodPreset{} } +func (*PodPreset) ProtoMessage() {} +func (*PodPreset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PodPresetList) Reset() { *m = PodPresetList{} } +func (*PodPresetList) ProtoMessage() {} +func (*PodPresetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *PodPresetSpec) Reset() { *m = PodPresetSpec{} } +func (*PodPresetSpec) ProtoMessage() {} +func (*PodPresetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*PodPreset)(nil), "k8s.io.client-go.pkg.apis.settings.v1alpha1.PodPreset") + proto.RegisterType((*PodPresetList)(nil), "k8s.io.client-go.pkg.apis.settings.v1alpha1.PodPresetList") + proto.RegisterType((*PodPresetSpec)(nil), "k8s.io.client-go.pkg.apis.settings.v1alpha1.PodPresetSpec") +} +func (m *PodPreset) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPreset) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + return i, nil +} + +func (m *PodPresetList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPresetList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n3, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n3 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodPresetSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodPresetSpec) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size())) + n4, err := m.Selector.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Env) > 0 { + for _, msg := range m.Env { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.EnvFrom) > 0 { + for _, msg := range m.EnvFrom { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Volumes) > 0 { + for _, msg := range m.Volumes { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.VolumeMounts) > 0 { + for _, msg := range m.VolumeMounts { + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *PodPreset) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodPresetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodPresetSpec) Size() (n int) { + var l int + _ = l + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Env) > 0 { + for _, e := range m.Env { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.EnvFrom) > 0 { + for _, e := range m.EnvFrom { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Volumes) > 0 { + for _, e := range m.Volumes { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.VolumeMounts) > 0 { + for _, e := range m.VolumeMounts { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *PodPreset) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPreset{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodPresetSpec", "PodPresetSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodPresetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPresetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodPreset", "PodPreset", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodPresetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodPresetSpec{`, + `Selector:` + strings.Replace(strings.Replace(this.Selector.String(), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1), `&`, ``, 1) + `,`, + `Env:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Env), "EnvVar", "k8s_io_kubernetes_pkg_api_v1.EnvVar", 1), `&`, ``, 1) + `,`, + `EnvFrom:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.EnvFrom), "EnvFromSource", "k8s_io_kubernetes_pkg_api_v1.EnvFromSource", 1), `&`, ``, 1) + `,`, + `Volumes:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Volumes), "Volume", "k8s_io_kubernetes_pkg_api_v1.Volume", 1), `&`, ``, 1) + `,`, + `VolumeMounts:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeMounts), "VolumeMount", "k8s_io_kubernetes_pkg_api_v1.VolumeMount", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *PodPreset) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPreset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPreset: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodPresetList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPresetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPresetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodPreset{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodPresetSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodPresetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodPresetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Env", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Env = append(m.Env, k8s_io_kubernetes_pkg_api_v1.EnvVar{}) + if err := m.Env[len(m.Env)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EnvFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EnvFrom = append(m.EnvFrom, k8s_io_kubernetes_pkg_api_v1.EnvFromSource{}) + if err := m.EnvFrom[len(m.EnvFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volumes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volumes = append(m.Volumes, k8s_io_kubernetes_pkg_api_v1.Volume{}) + if err := m.Volumes[len(m.Volumes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeMounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeMounts = append(m.VolumeMounts, k8s_io_kubernetes_pkg_api_v1.VolumeMount{}) + if err := m.VolumeMounts[len(m.VolumeMounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 538 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0x41, 0x8b, 0xd3, 0x40, + 0x14, 0xc7, 0x9b, 0xed, 0x96, 0xd6, 0x69, 0x17, 0x25, 0x78, 0x08, 0x3d, 0x64, 0x97, 0xe2, 0x61, + 0xc5, 0x75, 0x62, 0x57, 0x51, 0x41, 0x4f, 0x91, 0x15, 0x04, 0x97, 0x5d, 0x52, 0xe8, 0x41, 0x56, + 0x70, 0x9a, 0x3e, 0xd3, 0xd8, 0x26, 0x13, 0x66, 0x26, 0x01, 0x6f, 0x7e, 0x04, 0xbf, 0x94, 0x50, + 0xd0, 0xc3, 0x1e, 0xf7, 0xb4, 0xd8, 0xf8, 0x45, 0x64, 0x26, 0x93, 0xa6, 0x52, 0xcb, 0x56, 0x6f, + 0xf3, 0x1e, 0xef, 0xff, 0x7b, 0xff, 0xff, 0x4b, 0xd0, 0xcb, 0xe9, 0x73, 0x8e, 0x43, 0xea, 0x4c, + 0xd3, 0x11, 0xb0, 0x18, 0x04, 0x70, 0x27, 0x99, 0x06, 0x0e, 0x49, 0x42, 0xee, 0x70, 0x10, 0x22, + 0x8c, 0x03, 0xee, 0x64, 0x7d, 0x32, 0x4b, 0x26, 0xa4, 0xef, 0x04, 0x10, 0x03, 0x23, 0x02, 0xc6, + 0x38, 0x61, 0x54, 0x50, 0xf3, 0xa8, 0x50, 0xe3, 0x4a, 0x8d, 0x93, 0x69, 0x80, 0xa5, 0x1a, 0x97, + 0x6a, 0x5c, 0xaa, 0xbb, 0x0f, 0x83, 0x50, 0x4c, 0xd2, 0x11, 0xf6, 0x69, 0xe4, 0x04, 0x34, 0xa0, + 0x8e, 0x82, 0x8c, 0xd2, 0x8f, 0xaa, 0x52, 0x85, 0x7a, 0x15, 0xf0, 0xee, 0x13, 0x6d, 0x8d, 0x24, + 0x61, 0x44, 0xfc, 0x49, 0x18, 0x03, 0xfb, 0x5c, 0x99, 0x8b, 0x40, 0x10, 0x27, 0x5b, 0xb3, 0xd4, + 0x75, 0x36, 0xa9, 0x58, 0x1a, 0x8b, 0x30, 0x82, 0x35, 0xc1, 0xd3, 0x9b, 0x04, 0xdc, 0x9f, 0x40, + 0x44, 0xd6, 0x74, 0x47, 0x1b, 0x2f, 0xf7, 0x17, 0x5b, 0xbd, 0x1f, 0x06, 0xba, 0x75, 0x4e, 0xc7, + 0xe7, 0x0c, 0x38, 0x08, 0xf3, 0x03, 0x6a, 0x49, 0xff, 0x63, 0x22, 0x88, 0x65, 0x1c, 0x18, 0x87, + 0xed, 0xe3, 0x47, 0x58, 0x9f, 0x72, 0xd5, 0x46, 0x75, 0x4c, 0x39, 0x8d, 0xb3, 0x3e, 0x3e, 0x1b, + 0x7d, 0x02, 0x5f, 0x9c, 0x82, 0x20, 0xae, 0x39, 0xbf, 0xde, 0xaf, 0xe5, 0xd7, 0xfb, 0xa8, 0xea, + 0x79, 0x4b, 0xaa, 0xf9, 0x1e, 0xed, 0xf2, 0x04, 0x7c, 0x6b, 0x47, 0xd1, 0x5f, 0xe0, 0x7f, 0xf9, + 0x50, 0x78, 0x69, 0x74, 0x90, 0x80, 0xef, 0x76, 0xf4, 0xa2, 0x5d, 0x59, 0x79, 0x0a, 0xdb, 0xfb, + 0x6e, 0xa0, 0xbd, 0xe5, 0xd4, 0xdb, 0x90, 0x0b, 0xf3, 0x62, 0x2d, 0x12, 0xde, 0x2e, 0x92, 0x54, + 0xab, 0x40, 0x77, 0xf4, 0x9e, 0x56, 0xd9, 0x59, 0x89, 0x73, 0x81, 0x1a, 0xa1, 0x80, 0x88, 0x5b, + 0x3b, 0x07, 0xf5, 0xc3, 0xf6, 0xf1, 0xb3, 0xff, 0xcc, 0xe3, 0xee, 0xe9, 0x1d, 0x8d, 0x37, 0x92, + 0xe6, 0x15, 0xd0, 0xde, 0xb7, 0xfa, 0x4a, 0x1a, 0x99, 0xd2, 0x24, 0xa8, 0xc5, 0x61, 0x06, 0xbe, + 0xa0, 0x4c, 0xa7, 0x79, 0xbc, 0x65, 0x1a, 0x32, 0x82, 0xd9, 0x40, 0x4b, 0xab, 0x48, 0x65, 0xc7, + 0x5b, 0x62, 0xcd, 0x57, 0xa8, 0x0e, 0x71, 0xa6, 0x03, 0xdd, 0xdb, 0x1c, 0x48, 0x52, 0x4f, 0xe2, + 0x6c, 0x48, 0x98, 0xdb, 0xd6, 0xb8, 0xfa, 0x49, 0x9c, 0x79, 0x52, 0x6d, 0x0e, 0x51, 0x13, 0xe2, + 0xec, 0x35, 0xa3, 0x91, 0x55, 0x57, 0xa0, 0x07, 0x37, 0x82, 0xe4, 0xf0, 0x80, 0xa6, 0xcc, 0x07, + 0xf7, 0xb6, 0xe6, 0x35, 0x75, 0xdb, 0x2b, 0x61, 0xe6, 0x19, 0x6a, 0x66, 0x74, 0x96, 0x46, 0xc0, + 0xad, 0xdd, 0x6d, 0x0c, 0x0e, 0xd5, 0x70, 0x05, 0x2c, 0x6a, 0xee, 0x95, 0x14, 0xd3, 0x47, 0x9d, + 0xe2, 0x79, 0x4a, 0xd3, 0x58, 0x70, 0xab, 0xa1, 0xa8, 0xf7, 0xb7, 0xa1, 0x2a, 0x85, 0x7b, 0x57, + 0xa3, 0x3b, 0x2b, 0x4d, 0xee, 0xfd, 0x01, 0x75, 0xf1, 0x7c, 0x61, 0xd7, 0x2e, 0x17, 0x76, 0xed, + 0x6a, 0x61, 0xd7, 0xbe, 0xe4, 0xb6, 0x31, 0xcf, 0x6d, 0xe3, 0x32, 0xb7, 0x8d, 0xab, 0xdc, 0x36, + 0x7e, 0xe6, 0xb6, 0xf1, 0xf5, 0x97, 0x5d, 0x7b, 0xd7, 0x2a, 0xff, 0x8b, 0xdf, 0x01, 0x00, 0x00, + 0xff, 0xff, 0x80, 0x75, 0x96, 0xb8, 0xfd, 0x04, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.proto new file mode 100644 index 000000000..5b0c9e5cb --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/generated.proto @@ -0,0 +1,75 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.settings.v1alpha1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// PodPreset is a policy resource that defines additional runtime +// requirements for a Pod. +message PodPreset { + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // +optional + optional PodPresetSpec spec = 2; +} + +// PodPresetList is a list of PodPreset objects. +message PodPresetList { + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated PodPreset items = 2; +} + +// PodPresetSpec is a description of a pod preset. +message PodPresetSpec { + // Selector is a label query over a set of resources, in this case pods. + // Required. + optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1; + + // Env defines the collection of EnvVar to inject into containers. + // +optional + repeated k8s.io.client_go.pkg.api.v1.EnvVar env = 2; + + // EnvFrom defines the collection of EnvFromSource to inject into containers. + // +optional + repeated k8s.io.client_go.pkg.api.v1.EnvFromSource envFrom = 3; + + // Volumes defines the collection of Volume to inject into the pod. + // +optional + repeated k8s.io.client_go.pkg.api.v1.Volume volumes = 4; + + // VolumeMounts defines the collection of VolumeMount to inject into containers. + // +optional + repeated k8s.io.client_go.pkg.api.v1.VolumeMount volumeMounts = 5; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/register.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/register.go new file mode 100644 index 000000000..ddcd2259c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/register.go @@ -0,0 +1,59 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "settings.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, RegisterDefaults) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PodPreset{}, + &PodPresetList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types.go new file mode 100644 index 000000000..0565f7c60 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types.go @@ -0,0 +1,67 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api/v1" +) + +// +genclient=true + +// PodPreset is a policy resource that defines additional runtime +// requirements for a Pod. +type PodPreset struct { + metav1.TypeMeta `json:",inline"` + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // +optional + Spec PodPresetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// PodPresetSpec is a description of a pod preset. +type PodPresetSpec struct { + // Selector is a label query over a set of resources, in this case pods. + // Required. + Selector metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,opt,name=selector"` + + // Env defines the collection of EnvVar to inject into containers. + // +optional + Env []v1.EnvVar `json:"env,omitempty" protobuf:"bytes,2,rep,name=env"` + // EnvFrom defines the collection of EnvFromSource to inject into containers. + // +optional + EnvFrom []v1.EnvFromSource `json:"envFrom,omitempty" protobuf:"bytes,3,rep,name=envFrom"` + // Volumes defines the collection of Volume to inject into the pod. + // +optional + Volumes []v1.Volume `json:"volumes,omitempty" protobuf:"bytes,4,rep,name=volumes"` + // VolumeMounts defines the collection of VolumeMount to inject into containers. + // +optional + VolumeMounts []v1.VolumeMount `json:"volumeMounts,omitempty" protobuf:"bytes,5,rep,name=volumeMounts"` +} + +// PodPresetList is a list of PodPreset objects. +type PodPresetList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []PodPreset `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 000000000..2a89e5566 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,61 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_PodPreset = map[string]string{ + "": "PodPreset is a policy resource that defines additional runtime requirements for a Pod.", +} + +func (PodPreset) SwaggerDoc() map[string]string { + return map_PodPreset +} + +var map_PodPresetList = map[string]string{ + "": "PodPresetList is a list of PodPreset objects.", + "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (PodPresetList) SwaggerDoc() map[string]string { + return map_PodPresetList +} + +var map_PodPresetSpec = map[string]string{ + "": "PodPresetSpec is a description of a pod preset.", + "selector": "Selector is a label query over a set of resources, in this case pods. Required.", + "env": "Env defines the collection of EnvVar to inject into containers.", + "envFrom": "EnvFrom defines the collection of EnvFromSource to inject into containers.", + "volumes": "Volumes defines the collection of Volume to inject into the pod.", + "volumeMounts": "VolumeMounts defines the collection of VolumeMount to inject into containers.", +} + +func (PodPresetSpec) SwaggerDoc() map[string]string { + return map_PodPresetSpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..453301861 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,165 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + v1 "k8s.io/client-go/pkg/api/v1" + settings "k8s.io/client-go/pkg/apis/settings" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_PodPreset_To_settings_PodPreset, + Convert_settings_PodPreset_To_v1alpha1_PodPreset, + Convert_v1alpha1_PodPresetList_To_settings_PodPresetList, + Convert_settings_PodPresetList_To_v1alpha1_PodPresetList, + Convert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec, + Convert_settings_PodPresetSpec_To_v1alpha1_PodPresetSpec, + ) +} + +func autoConvert_v1alpha1_PodPreset_To_settings_PodPreset(in *PodPreset, out *settings.PodPreset, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_PodPreset_To_settings_PodPreset is an autogenerated conversion function. +func Convert_v1alpha1_PodPreset_To_settings_PodPreset(in *PodPreset, out *settings.PodPreset, s conversion.Scope) error { + return autoConvert_v1alpha1_PodPreset_To_settings_PodPreset(in, out, s) +} + +func autoConvert_settings_PodPreset_To_v1alpha1_PodPreset(in *settings.PodPreset, out *PodPreset, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_settings_PodPresetSpec_To_v1alpha1_PodPresetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_settings_PodPreset_To_v1alpha1_PodPreset is an autogenerated conversion function. +func Convert_settings_PodPreset_To_v1alpha1_PodPreset(in *settings.PodPreset, out *PodPreset, s conversion.Scope) error { + return autoConvert_settings_PodPreset_To_v1alpha1_PodPreset(in, out, s) +} + +func autoConvert_v1alpha1_PodPresetList_To_settings_PodPresetList(in *PodPresetList, out *settings.PodPresetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]settings.PodPreset, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_PodPreset_To_settings_PodPreset(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1alpha1_PodPresetList_To_settings_PodPresetList is an autogenerated conversion function. +func Convert_v1alpha1_PodPresetList_To_settings_PodPresetList(in *PodPresetList, out *settings.PodPresetList, s conversion.Scope) error { + return autoConvert_v1alpha1_PodPresetList_To_settings_PodPresetList(in, out, s) +} + +func autoConvert_settings_PodPresetList_To_v1alpha1_PodPresetList(in *settings.PodPresetList, out *PodPresetList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodPreset, len(*in)) + for i := range *in { + if err := Convert_settings_PodPreset_To_v1alpha1_PodPreset(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = make([]PodPreset, 0) + } + return nil +} + +// Convert_settings_PodPresetList_To_v1alpha1_PodPresetList is an autogenerated conversion function. +func Convert_settings_PodPresetList_To_v1alpha1_PodPresetList(in *settings.PodPresetList, out *PodPresetList, s conversion.Scope) error { + return autoConvert_settings_PodPresetList_To_v1alpha1_PodPresetList(in, out, s) +} + +func autoConvert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec(in *PodPresetSpec, out *settings.PodPresetSpec, s conversion.Scope) error { + out.Selector = in.Selector + out.Env = *(*[]api.EnvVar)(unsafe.Pointer(&in.Env)) + out.EnvFrom = *(*[]api.EnvFromSource)(unsafe.Pointer(&in.EnvFrom)) + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]api.Volume, len(*in)) + for i := range *in { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + out.VolumeMounts = *(*[]api.VolumeMount)(unsafe.Pointer(&in.VolumeMounts)) + return nil +} + +// Convert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec is an autogenerated conversion function. +func Convert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec(in *PodPresetSpec, out *settings.PodPresetSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_PodPresetSpec_To_settings_PodPresetSpec(in, out, s) +} + +func autoConvert_settings_PodPresetSpec_To_v1alpha1_PodPresetSpec(in *settings.PodPresetSpec, out *PodPresetSpec, s conversion.Scope) error { + out.Selector = in.Selector + out.Env = *(*[]v1.EnvVar)(unsafe.Pointer(&in.Env)) + out.EnvFrom = *(*[]v1.EnvFromSource)(unsafe.Pointer(&in.EnvFrom)) + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]v1.Volume, len(*in)) + for i := range *in { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + out.VolumeMounts = *(*[]v1.VolumeMount)(unsafe.Pointer(&in.VolumeMounts)) + return nil +} + +// Convert_settings_PodPresetSpec_To_v1alpha1_PodPresetSpec is an autogenerated conversion function. +func Convert_settings_PodPresetSpec_To_v1alpha1_PodPresetSpec(in *settings.PodPresetSpec, out *PodPresetSpec, s conversion.Scope) error { + return autoConvert_settings_PodPresetSpec_To_v1alpha1_PodPresetSpec(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 000000000..4f2e35494 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,127 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api_v1 "k8s.io/client-go/pkg/api/v1" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodPreset, InType: reflect.TypeOf(&PodPreset{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodPresetList, InType: reflect.TypeOf(&PodPresetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodPresetSpec, InType: reflect.TypeOf(&PodPresetSpec{})}, + ) +} + +// DeepCopy_v1alpha1_PodPreset is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_PodPreset(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPreset) + out := out.(*PodPreset) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_v1alpha1_PodPresetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_v1alpha1_PodPresetList is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_PodPresetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPresetList) + out := out.(*PodPresetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodPreset, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PodPreset(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_v1alpha1_PodPresetSpec is an autogenerated deepcopy function. +func DeepCopy_v1alpha1_PodPresetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPresetSpec) + out := out.(*PodPresetSpec) + *out = *in + if newVal, err := c.DeepCopy(&in.Selector); err != nil { + return err + } else { + out.Selector = *newVal.(*v1.LabelSelector) + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]api_v1.EnvVar, len(*in)) + for i := range *in { + if err := api_v1.DeepCopy_v1_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.EnvFrom != nil { + in, out := &in.EnvFrom, &out.EnvFrom + *out = make([]api_v1.EnvFromSource, len(*in)) + for i := range *in { + if err := api_v1.DeepCopy_v1_EnvFromSource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]api_v1.Volume, len(*in)) + for i := range *in { + if err := api_v1.DeepCopy_v1_Volume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]api_v1.VolumeMount, len(*in)) + copy(*out, *in) + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.defaults.go new file mode 100644 index 000000000..c178a3072 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/v1alpha1/zz_generated.defaults.go @@ -0,0 +1,98 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + v1 "k8s.io/client-go/pkg/api/v1" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&PodPreset{}, func(obj interface{}) { SetObjectDefaults_PodPreset(obj.(*PodPreset)) }) + scheme.AddTypeDefaultingFunc(&PodPresetList{}, func(obj interface{}) { SetObjectDefaults_PodPresetList(obj.(*PodPresetList)) }) + return nil +} + +func SetObjectDefaults_PodPreset(in *PodPreset) { + for i := range in.Spec.Env { + a := &in.Spec.Env[i] + if a.ValueFrom != nil { + if a.ValueFrom.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(a.ValueFrom.FieldRef) + } + } + } + for i := range in.Spec.Volumes { + a := &in.Spec.Volumes[i] + v1.SetDefaults_Volume(a) + if a.VolumeSource.Secret != nil { + v1.SetDefaults_SecretVolumeSource(a.VolumeSource.Secret) + } + if a.VolumeSource.ISCSI != nil { + v1.SetDefaults_ISCSIVolumeSource(a.VolumeSource.ISCSI) + } + if a.VolumeSource.RBD != nil { + v1.SetDefaults_RBDVolumeSource(a.VolumeSource.RBD) + } + if a.VolumeSource.DownwardAPI != nil { + v1.SetDefaults_DownwardAPIVolumeSource(a.VolumeSource.DownwardAPI) + for j := range a.VolumeSource.DownwardAPI.Items { + b := &a.VolumeSource.DownwardAPI.Items[j] + if b.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(b.FieldRef) + } + } + } + if a.VolumeSource.ConfigMap != nil { + v1.SetDefaults_ConfigMapVolumeSource(a.VolumeSource.ConfigMap) + } + if a.VolumeSource.AzureDisk != nil { + v1.SetDefaults_AzureDiskVolumeSource(a.VolumeSource.AzureDisk) + } + if a.VolumeSource.Projected != nil { + v1.SetDefaults_ProjectedVolumeSource(a.VolumeSource.Projected) + for j := range a.VolumeSource.Projected.Sources { + b := &a.VolumeSource.Projected.Sources[j] + if b.DownwardAPI != nil { + for k := range b.DownwardAPI.Items { + c := &b.DownwardAPI.Items[k] + if c.FieldRef != nil { + v1.SetDefaults_ObjectFieldSelector(c.FieldRef) + } + } + } + } + } + if a.VolumeSource.ScaleIO != nil { + v1.SetDefaults_ScaleIOVolumeSource(a.VolumeSource.ScaleIO) + } + } +} + +func SetObjectDefaults_PodPresetList(in *PodPresetList) { + for i := range in.Items { + a := &in.Items[i] + SetObjectDefaults_PodPreset(a) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/settings/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/settings/zz_generated.deepcopy.go new file mode 100644 index 000000000..2e475f7ce --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/settings/zz_generated.deepcopy.go @@ -0,0 +1,127 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package settings + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + api "k8s.io/client-go/pkg/api" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_settings_PodPreset, InType: reflect.TypeOf(&PodPreset{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_settings_PodPresetList, InType: reflect.TypeOf(&PodPresetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_settings_PodPresetSpec, InType: reflect.TypeOf(&PodPresetSpec{})}, + ) +} + +// DeepCopy_settings_PodPreset is an autogenerated deepcopy function. +func DeepCopy_settings_PodPreset(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPreset) + out := out.(*PodPreset) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if err := DeepCopy_settings_PodPresetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +// DeepCopy_settings_PodPresetList is an autogenerated deepcopy function. +func DeepCopy_settings_PodPresetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPresetList) + out := out.(*PodPresetList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodPreset, len(*in)) + for i := range *in { + if err := DeepCopy_settings_PodPreset(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} + +// DeepCopy_settings_PodPresetSpec is an autogenerated deepcopy function. +func DeepCopy_settings_PodPresetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodPresetSpec) + out := out.(*PodPresetSpec) + *out = *in + if newVal, err := c.DeepCopy(&in.Selector); err != nil { + return err + } else { + out.Selector = *newVal.(*v1.LabelSelector) + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]api.EnvVar, len(*in)) + for i := range *in { + if err := api.DeepCopy_api_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.EnvFrom != nil { + in, out := &in.EnvFrom, &out.EnvFrom + *out = make([]api.EnvFromSource, len(*in)) + for i := range *in { + if err := api.DeepCopy_api_EnvFromSource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]api.Volume, len(*in)) + for i := range *in { + if err := api.DeepCopy_api_Volume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]api.VolumeMount, len(*in)) + copy(*out, *in) + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/BUILD b/vendor/k8s.io/client-go/pkg/apis/storage/BUILD new file mode 100644 index 000000000..6e2604388 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "register.go", + "types.go", + "zz_generated.deepcopy.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/OWNERS b/vendor/k8s.io/client-go/pkg/apis/storage/OWNERS new file mode 100755 index 000000000..d59ed6e1d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/OWNERS @@ -0,0 +1,3 @@ +reviewers: +- deads2k +- mbohlool diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/doc.go b/vendor/k8s.io/client-go/pkg/apis/storage/doc.go new file mode 100644 index 000000000..ef6d2a9ba --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=storage.k8s.io +package storage diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/install/BUILD b/vendor/k8s.io/client-go/pkg/apis/storage/install/BUILD new file mode 100644 index 000000000..2d9863555 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/install/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["install.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/client-go/pkg/api:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage/v1beta1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/install/install.go b/vendor/k8s.io/client-go/pkg/apis/storage/install/install.go new file mode 100644 index 000000000..4608a54ea --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/install/install.go @@ -0,0 +1,53 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/apimachinery/pkg/apimachinery/announced" + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/apis/storage" + "k8s.io/client-go/pkg/apis/storage/v1" + "k8s.io/client-go/pkg/apis/storage/v1beta1" +) + +func init() { + Install(api.GroupFactoryRegistry, api.Registry, api.Scheme) +} + +// Install registers the API group and adds types to a scheme +func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: storage.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version, v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/pkg/apis/storage", + RootScopedKinds: sets.NewString("StorageClass"), + AddInternalObjectsToScheme: storage.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce(groupFactoryRegistry).RegisterAndEnable(registry, scheme); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/register.go b/vendor/k8s.io/client-go/pkg/apis/storage/register.go new file mode 100644 index 000000000..aaa619b4d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/register.go @@ -0,0 +1,51 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package storage + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "storage.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) schema.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &StorageClass{}, + &StorageClassList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/types.go b/vendor/k8s.io/client-go/pkg/apis/storage/types.go new file mode 100644 index 000000000..827e7c666 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/types.go @@ -0,0 +1,60 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package storage + +import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + +// +genclient=true +// +nonNamespaced=true + +// StorageClass describes a named "class" of storage offered in a cluster. +// Different classes might map to quality-of-service levels, or to backup policies, +// or to arbitrary policies determined by the cluster administrators. Kubernetes +// itself is unopinionated about what classes represent. This concept is sometimes +// called "profiles" in other storage systems. +// The name of a StorageClass object is significant, and is how users can request a particular class. +type StorageClass struct { + metav1.TypeMeta + // +optional + metav1.ObjectMeta + + // provisioner is the driver expected to handle this StorageClass. + // This is an optionally-prefixed name, like a label key. + // For example: "kubernetes.io/gce-pd" or "kubernetes.io/aws-ebs". + // This value may not be empty. + Provisioner string + + // parameters holds parameters for the provisioner. + // These values are opaque to the system and are passed directly + // to the provisioner. The only validation done on keys is that they are + // not empty. The maximum number of parameters is + // 512, with a cumulative max size of 256K + // +optional + Parameters map[string]string +} + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + metav1.TypeMeta + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta + + // Items is the list of StorageClasses + Items []StorageClass +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/BUILD b/vendor/k8s.io/client-go/pkg/apis/storage/v1/BUILD new file mode 100644 index 000000000..7f0ecf24d --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/doc.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/doc.go new file mode 100644 index 000000000..2b8d05cfd --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=storage.k8s.io +package v1 diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.pb.go new file mode 100644 index 000000000..cc241c5b0 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.pb.go @@ -0,0 +1,746 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/storage/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/storage/v1/generated.proto + + It has these top-level messages: + StorageClass + StorageClassList +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *StorageClass) Reset() { *m = StorageClass{} } +func (*StorageClass) ProtoMessage() {} +func (*StorageClass) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *StorageClassList) Reset() { *m = StorageClassList{} } +func (*StorageClassList) ProtoMessage() {} +func (*StorageClassList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func init() { + proto.RegisterType((*StorageClass)(nil), "k8s.io.client-go.pkg.apis.storage.v1.StorageClass") + proto.RegisterType((*StorageClassList)(nil), "k8s.io.client-go.pkg.apis.storage.v1.StorageClassList") +} +func (m *StorageClass) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageClass) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Provisioner))) + i += copy(dAtA[i:], m.Provisioner) + if len(m.Parameters) > 0 { + keysForParameters := make([]string, 0, len(m.Parameters)) + for k := range m.Parameters { + keysForParameters = append(keysForParameters, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + for _, k := range keysForParameters { + dAtA[i] = 0x1a + i++ + v := m.Parameters[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + return i, nil +} + +func (m *StorageClassList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageClassList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n2, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *StorageClass) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Provisioner) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Parameters) > 0 { + for k, v := range m.Parameters { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *StorageClassList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *StorageClass) String() string { + if this == nil { + return "nil" + } + keysForParameters := make([]string, 0, len(this.Parameters)) + for k := range this.Parameters { + keysForParameters = append(keysForParameters, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + mapStringForParameters := "map[string]string{" + for _, k := range keysForParameters { + mapStringForParameters += fmt.Sprintf("%v: %v,", k, this.Parameters[k]) + } + mapStringForParameters += "}" + s := strings.Join([]string{`&StorageClass{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Provisioner:` + fmt.Sprintf("%v", this.Provisioner) + `,`, + `Parameters:` + mapStringForParameters + `,`, + `}`, + }, "") + return s +} +func (this *StorageClassList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageClassList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StorageClass", "StorageClass", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *StorageClass) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageClass: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageClass: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Provisioner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Provisioner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Parameters == nil { + m.Parameters = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Parameters[mapkey] = mapvalue + } else { + var mapvalue string + m.Parameters[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StorageClassList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageClassList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageClassList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, StorageClass{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/storage/v1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 460 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x91, 0xcf, 0x6f, 0xd3, 0x30, + 0x14, 0xc7, 0xe3, 0x54, 0x95, 0x36, 0x17, 0x44, 0x15, 0x38, 0x54, 0x3d, 0x78, 0xd5, 0x24, 0xa4, + 0x5e, 0xb0, 0xe9, 0xc6, 0xd0, 0x84, 0xc4, 0xa5, 0x13, 0x07, 0x24, 0x10, 0x53, 0xb8, 0x20, 0xc4, + 0x01, 0xb7, 0x7b, 0xa4, 0x26, 0x4d, 0x1c, 0xd9, 0x2f, 0x41, 0xbd, 0xf1, 0x27, 0xf0, 0x67, 0x55, + 0x9c, 0x76, 0xdc, 0x69, 0xd0, 0xf0, 0x8f, 0xa0, 0xfc, 0x60, 0x89, 0x56, 0x26, 0x26, 0x6e, 0x7e, + 0xb6, 0x3f, 0x5f, 0xbf, 0xf7, 0x31, 0x3d, 0x0a, 0x8f, 0x2d, 0x57, 0x5a, 0x84, 0xe9, 0x0c, 0x4c, + 0x0c, 0x08, 0x56, 0x24, 0x61, 0x20, 0x64, 0xa2, 0xac, 0xb0, 0xa8, 0x8d, 0x0c, 0x40, 0x64, 0x13, + 0x11, 0x40, 0x0c, 0x46, 0x22, 0x9c, 0xf1, 0xc4, 0x68, 0xd4, 0xde, 0xc3, 0x0a, 0xe3, 0x0d, 0xc6, + 0x93, 0x30, 0xe0, 0x05, 0xc6, 0x6b, 0x8c, 0x67, 0x93, 0xe1, 0xa3, 0x40, 0xe1, 0x22, 0x9d, 0xf1, + 0xb9, 0x8e, 0x44, 0xa0, 0x03, 0x2d, 0x4a, 0x7a, 0x96, 0x7e, 0x2a, 0xab, 0xb2, 0x28, 0x57, 0x55, + 0xea, 0xf0, 0x49, 0xdd, 0x8c, 0x4c, 0x54, 0x24, 0xe7, 0x0b, 0x15, 0x83, 0x59, 0x35, 0xed, 0x44, + 0x80, 0xf2, 0x2f, 0xbd, 0x0c, 0xc5, 0x4d, 0x94, 0x49, 0x63, 0x54, 0x11, 0x6c, 0x01, 0x4f, 0xff, + 0x05, 0xd8, 0xf9, 0x02, 0x22, 0xb9, 0xc5, 0x1d, 0xde, 0xc4, 0xa5, 0xa8, 0x96, 0x42, 0xc5, 0x68, + 0xd1, 0x5c, 0x87, 0xf6, 0x7f, 0xb8, 0xf4, 0xce, 0xdb, 0xca, 0xc8, 0xc9, 0x52, 0x5a, 0xeb, 0x7d, + 0xa4, 0x3b, 0xc5, 0x24, 0x67, 0x12, 0xe5, 0x80, 0x8c, 0xc8, 0xb8, 0x77, 0xf0, 0x98, 0xd7, 0x36, + 0xdb, 0xc1, 0x8d, 0xcf, 0xe2, 0x36, 0xcf, 0x26, 0xfc, 0xcd, 0xec, 0x33, 0xcc, 0xf1, 0x35, 0xa0, + 0x9c, 0x7a, 0xeb, 0xcb, 0x3d, 0x27, 0xbf, 0xdc, 0xa3, 0xcd, 0x9e, 0x7f, 0x95, 0xea, 0x1d, 0xd1, + 0x5e, 0x62, 0x74, 0xa6, 0xac, 0xd2, 0x31, 0x98, 0x81, 0x3b, 0x22, 0xe3, 0xdd, 0xe9, 0xfd, 0x1a, + 0xe9, 0x9d, 0x36, 0x47, 0x7e, 0xfb, 0x9e, 0xf7, 0x85, 0xd2, 0x44, 0x1a, 0x19, 0x01, 0x82, 0xb1, + 0x83, 0xce, 0xa8, 0x33, 0xee, 0x1d, 0x9c, 0xf0, 0x5b, 0x7d, 0x34, 0x6f, 0x4f, 0xc8, 0x4f, 0xaf, + 0x52, 0x5e, 0xc4, 0x68, 0x56, 0x4d, 0xb7, 0xcd, 0x81, 0xdf, 0x7a, 0x6a, 0xf8, 0x9c, 0xde, 0xbb, + 0x86, 0x78, 0x7d, 0xda, 0x09, 0x61, 0x55, 0xfa, 0xd9, 0xf5, 0x8b, 0xa5, 0xf7, 0x80, 0x76, 0x33, + 0xb9, 0x4c, 0xa1, 0x1a, 0xc7, 0xaf, 0x8a, 0x67, 0xee, 0x31, 0xd9, 0xff, 0x4e, 0x68, 0xbf, 0xfd, + 0xfe, 0x2b, 0x65, 0xd1, 0xfb, 0xb0, 0x65, 0x99, 0xdf, 0xce, 0x72, 0x41, 0x97, 0x8e, 0xfb, 0x75, + 0xd7, 0x3b, 0x7f, 0x76, 0x5a, 0x86, 0xdf, 0xd1, 0xae, 0x42, 0x88, 0xec, 0xc0, 0x2d, 0x2d, 0x1d, + 0xfe, 0x87, 0xa5, 0xe9, 0xdd, 0x3a, 0xbf, 0xfb, 0xb2, 0x48, 0xf2, 0xab, 0xc0, 0xe9, 0x78, 0xbd, + 0x61, 0xce, 0xf9, 0x86, 0x39, 0x17, 0x1b, 0xe6, 0x7c, 0xcd, 0x19, 0x59, 0xe7, 0x8c, 0x9c, 0xe7, + 0x8c, 0x5c, 0xe4, 0x8c, 0xfc, 0xcc, 0x19, 0xf9, 0xf6, 0x8b, 0x39, 0xef, 0xdd, 0x6c, 0xf2, 0x3b, + 0x00, 0x00, 0xff, 0xff, 0x0b, 0xb7, 0x00, 0xe1, 0xba, 0x03, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.proto new file mode 100644 index 000000000..1a7849eaa --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/generated.proto @@ -0,0 +1,62 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.storage.v1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// StorageClass describes the parameters for a class of storage for +// which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class +// according to etcd is in ObjectMeta.Name. +message StorageClass { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Provisioner indicates the type of the provisioner. + optional string provisioner = 2; + + // Parameters holds the parameters for the provisioner that should + // create volumes of this storage class. + // +optional + map parameters = 3; +} + +// StorageClassList is a collection of storage classes. +message StorageClassList { + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of StorageClasses + repeated StorageClass items = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/register.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/register.go new file mode 100644 index 000000000..a727a9b20 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/register.go @@ -0,0 +1,60 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "storage.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, RegisterDefaults) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &StorageClass{}, + &StorageClassList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/types.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/types.go new file mode 100644 index 000000000..971db769e --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/types.go @@ -0,0 +1,57 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// StorageClass describes the parameters for a class of storage for +// which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class +// according to etcd is in ObjectMeta.Name. +type StorageClass struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Provisioner indicates the type of the provisioner. + Provisioner string `json:"provisioner" protobuf:"bytes,2,opt,name=provisioner"` + + // Parameters holds the parameters for the provisioner that should + // create volumes of this storage class. + // +optional + Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` +} + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of StorageClasses + Items []StorageClass `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/types_swagger_doc_generated.go new file mode 100644 index 000000000..a13106fa3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/types_swagger_doc_generated.go @@ -0,0 +1,51 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_StorageClass = map[string]string{ + "": "StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "provisioner": "Provisioner indicates the type of the provisioner.", + "parameters": "Parameters holds the parameters for the provisioner that should create volumes of this storage class.", +} + +func (StorageClass) SwaggerDoc() map[string]string { + return map_StorageClass +} + +var map_StorageClassList = map[string]string{ + "": "StorageClassList is a collection of storage classes.", + "metadata": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of StorageClasses", +} + +func (StorageClassList) SwaggerDoc() map[string]string { + return map_StorageClassList +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.conversion.go new file mode 100644 index 000000000..aac6bac29 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.conversion.go @@ -0,0 +1,93 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + storage "k8s.io/client-go/pkg/apis/storage" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_StorageClass_To_storage_StorageClass, + Convert_storage_StorageClass_To_v1_StorageClass, + Convert_v1_StorageClassList_To_storage_StorageClassList, + Convert_storage_StorageClassList_To_v1_StorageClassList, + ) +} + +func autoConvert_v1_StorageClass_To_storage_StorageClass(in *StorageClass, out *storage.StorageClass, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Provisioner = in.Provisioner + out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters)) + return nil +} + +// Convert_v1_StorageClass_To_storage_StorageClass is an autogenerated conversion function. +func Convert_v1_StorageClass_To_storage_StorageClass(in *StorageClass, out *storage.StorageClass, s conversion.Scope) error { + return autoConvert_v1_StorageClass_To_storage_StorageClass(in, out, s) +} + +func autoConvert_storage_StorageClass_To_v1_StorageClass(in *storage.StorageClass, out *StorageClass, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Provisioner = in.Provisioner + out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters)) + return nil +} + +// Convert_storage_StorageClass_To_v1_StorageClass is an autogenerated conversion function. +func Convert_storage_StorageClass_To_v1_StorageClass(in *storage.StorageClass, out *StorageClass, s conversion.Scope) error { + return autoConvert_storage_StorageClass_To_v1_StorageClass(in, out, s) +} + +func autoConvert_v1_StorageClassList_To_storage_StorageClassList(in *StorageClassList, out *storage.StorageClassList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]storage.StorageClass)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1_StorageClassList_To_storage_StorageClassList is an autogenerated conversion function. +func Convert_v1_StorageClassList_To_storage_StorageClassList(in *StorageClassList, out *storage.StorageClassList, s conversion.Scope) error { + return autoConvert_v1_StorageClassList_To_storage_StorageClassList(in, out, s) +} + +func autoConvert_storage_StorageClassList_To_v1_StorageClassList(in *storage.StorageClassList, out *StorageClassList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]StorageClass, 0) + } else { + out.Items = *(*[]StorageClass)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_storage_StorageClassList_To_v1_StorageClassList is an autogenerated conversion function. +func Convert_storage_StorageClassList_To_v1_StorageClassList(in *storage.StorageClassList, out *StorageClassList, s conversion.Scope) error { + return autoConvert_storage_StorageClassList_To_v1_StorageClassList(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.deepcopy.go new file mode 100644 index 000000000..649b354f2 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.deepcopy.go @@ -0,0 +1,82 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_StorageClass, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_StorageClassList, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +// DeepCopy_v1_StorageClass is an autogenerated deepcopy function. +func DeepCopy_v1_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClass) + out := out.(*StorageClass) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*meta_v1.ObjectMeta) + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1_StorageClassList is an autogenerated deepcopy function. +func DeepCopy_v1_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClassList) + out := out.(*StorageClassList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StorageClass, len(*in)) + for i := range *in { + if err := DeepCopy_v1_StorageClass(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.defaults.go new file mode 100644 index 000000000..6df448eb9 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/BUILD b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/BUILD new file mode 100644 index 000000000..65eff7879 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/BUILD @@ -0,0 +1,35 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "generated.pb.go", + "register.go", + "types.generated.go", + "types.go", + "types_swagger_doc_generated.go", + "zz_generated.conversion.go", + "zz_generated.deepcopy.go", + "zz_generated.defaults.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/gogo/protobuf/proto:go_default_library", + "//vendor/github.com/gogo/protobuf/sortkeys:go_default_library", + "//vendor/github.com/ugorji/go/codec:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/storage:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/doc.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/doc.go new file mode 100644 index 000000000..364321710 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +groupName=storage.k8s.io +package v1beta1 diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.pb.go new file mode 100644 index 000000000..8f446c0bf --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.pb.go @@ -0,0 +1,747 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/storage/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/storage/v1beta1/generated.proto + + It has these top-level messages: + StorageClass + StorageClassList +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +func (m *StorageClass) Reset() { *m = StorageClass{} } +func (*StorageClass) ProtoMessage() {} +func (*StorageClass) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *StorageClassList) Reset() { *m = StorageClassList{} } +func (*StorageClassList) ProtoMessage() {} +func (*StorageClassList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func init() { + proto.RegisterType((*StorageClass)(nil), "k8s.io.client-go.pkg.apis.storage.v1beta1.StorageClass") + proto.RegisterType((*StorageClassList)(nil), "k8s.io.client-go.pkg.apis.storage.v1beta1.StorageClassList") +} +func (m *StorageClass) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageClass) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Provisioner))) + i += copy(dAtA[i:], m.Provisioner) + if len(m.Parameters) > 0 { + keysForParameters := make([]string, 0, len(m.Parameters)) + for k := range m.Parameters { + keysForParameters = append(keysForParameters, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + for _, k := range keysForParameters { + dAtA[i] = 0x1a + i++ + v := m.Parameters[string(k)] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } + return i, nil +} + +func (m *StorageClassList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StorageClassList) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) + n2, err := m.ListMeta.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Items) > 0 { + for _, msg := range m.Items { + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + dAtA[offset+4] = uint8(v >> 32) + dAtA[offset+5] = uint8(v >> 40) + dAtA[offset+6] = uint8(v >> 48) + dAtA[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int { + dAtA[offset] = uint8(v) + dAtA[offset+1] = uint8(v >> 8) + dAtA[offset+2] = uint8(v >> 16) + dAtA[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return offset + 1 +} +func (m *StorageClass) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Provisioner) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Parameters) > 0 { + for k, v := range m.Parameters { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *StorageClassList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *StorageClass) String() string { + if this == nil { + return "nil" + } + keysForParameters := make([]string, 0, len(this.Parameters)) + for k := range this.Parameters { + keysForParameters = append(keysForParameters, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + mapStringForParameters := "map[string]string{" + for _, k := range keysForParameters { + mapStringForParameters += fmt.Sprintf("%v: %v,", k, this.Parameters[k]) + } + mapStringForParameters += "}" + s := strings.Join([]string{`&StorageClass{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Provisioner:` + fmt.Sprintf("%v", this.Provisioner) + `,`, + `Parameters:` + mapStringForParameters + `,`, + `}`, + }, "") + return s +} +func (this *StorageClassList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageClassList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_apimachinery_pkg_apis_meta_v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StorageClass", "StorageClass", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *StorageClass) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageClass: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageClass: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Provisioner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Provisioner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.Parameters == nil { + m.Parameters = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.Parameters[mapkey] = mapvalue + } else { + var mapvalue string + m.Parameters[mapkey] = mapvalue + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StorageClassList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageClassList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageClassList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, StorageClass{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(dAtA[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +func init() { + proto.RegisterFile("k8s.io/client-go/pkg/apis/storage/v1beta1/generated.proto", fileDescriptorGenerated) +} + +var fileDescriptorGenerated = []byte{ + // 466 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x91, 0xcf, 0x6b, 0x13, 0x41, + 0x14, 0xc7, 0x77, 0x52, 0x82, 0xed, 0x44, 0x31, 0xac, 0x1e, 0x42, 0x0e, 0xd3, 0xd0, 0x53, 0x10, + 0x3a, 0x63, 0xea, 0x0f, 0x42, 0xc1, 0x4b, 0x44, 0x50, 0x50, 0x2c, 0xeb, 0x4d, 0x14, 0x9c, 0x4d, + 0x9f, 0x9b, 0x71, 0xb3, 0x3b, 0xcb, 0xcc, 0xdb, 0x85, 0x80, 0x07, 0xff, 0x04, 0xff, 0xac, 0xdc, + 0xec, 0xb1, 0xa7, 0x62, 0x56, 0xff, 0x10, 0xd9, 0x1f, 0x76, 0x97, 0x86, 0x62, 0xf1, 0xb6, 0x6f, + 0x66, 0x3e, 0xdf, 0xf7, 0xde, 0x67, 0xe9, 0x71, 0x38, 0xb5, 0x5c, 0x69, 0x11, 0xa6, 0x3e, 0x98, + 0x18, 0x10, 0xac, 0x48, 0xc2, 0x40, 0xc8, 0x44, 0x59, 0x61, 0x51, 0x1b, 0x19, 0x80, 0xc8, 0x26, + 0x3e, 0xa0, 0x9c, 0x88, 0x00, 0x62, 0x30, 0x12, 0xe1, 0x94, 0x27, 0x46, 0xa3, 0x76, 0x1f, 0x54, + 0x2c, 0x6f, 0x58, 0x9e, 0x84, 0x01, 0x2f, 0x58, 0x5e, 0xb3, 0xbc, 0x66, 0x87, 0x87, 0x81, 0xc2, + 0x45, 0xea, 0xf3, 0xb9, 0x8e, 0x44, 0xa0, 0x03, 0x2d, 0xca, 0x08, 0x3f, 0xfd, 0x5c, 0x56, 0x65, + 0x51, 0x7e, 0x55, 0xd1, 0xc3, 0xc7, 0xf5, 0x58, 0x32, 0x51, 0x91, 0x9c, 0x2f, 0x54, 0x0c, 0x66, + 0xd5, 0x0c, 0x16, 0x01, 0x4a, 0x91, 0x6d, 0x0d, 0x34, 0x14, 0xd7, 0x51, 0x26, 0x8d, 0x51, 0x45, + 0xb0, 0x05, 0x3c, 0xfd, 0x17, 0x60, 0xe7, 0x0b, 0x88, 0xe4, 0x16, 0xf7, 0xe8, 0x3a, 0x2e, 0x45, + 0xb5, 0x14, 0x2a, 0x46, 0x8b, 0xe6, 0x2a, 0x74, 0xf0, 0xbb, 0x43, 0x6f, 0xbf, 0xab, 0xb4, 0x3c, + 0x5f, 0x4a, 0x6b, 0xdd, 0x4f, 0x74, 0xb7, 0xd8, 0xe4, 0x54, 0xa2, 0x1c, 0x90, 0x11, 0x19, 0xf7, + 0x8e, 0x1e, 0xf2, 0x5a, 0x69, 0x3b, 0xb8, 0x91, 0x5a, 0xbc, 0xe6, 0xd9, 0x84, 0xbf, 0xf5, 0xbf, + 0xc0, 0x1c, 0xdf, 0x00, 0xca, 0x99, 0xbb, 0xbe, 0xd8, 0x77, 0xf2, 0x8b, 0x7d, 0xda, 0x9c, 0x79, + 0x97, 0xa9, 0xee, 0x13, 0xda, 0x4b, 0x8c, 0xce, 0x94, 0x55, 0x3a, 0x06, 0x33, 0xe8, 0x8c, 0xc8, + 0x78, 0x6f, 0x76, 0xaf, 0x46, 0x7a, 0x27, 0xcd, 0x95, 0xd7, 0x7e, 0xe7, 0x7e, 0xa5, 0x34, 0x91, + 0x46, 0x46, 0x80, 0x60, 0xec, 0x60, 0x67, 0xb4, 0x33, 0xee, 0x1d, 0xbd, 0xe4, 0x37, 0xff, 0xdb, + 0xbc, 0xbd, 0x26, 0x3f, 0xb9, 0x8c, 0x7a, 0x11, 0xa3, 0x59, 0x35, 0x23, 0x37, 0x17, 0x5e, 0xab, + 0xdf, 0xf0, 0x19, 0xbd, 0x7b, 0x05, 0x71, 0xfb, 0x74, 0x27, 0x84, 0x55, 0x29, 0x69, 0xcf, 0x2b, + 0x3e, 0xdd, 0xfb, 0xb4, 0x9b, 0xc9, 0x65, 0x0a, 0xd5, 0x4e, 0x5e, 0x55, 0x1c, 0x77, 0xa6, 0xe4, + 0xe0, 0x07, 0xa1, 0xfd, 0x76, 0xff, 0xd7, 0xca, 0xa2, 0xfb, 0x61, 0x4b, 0x35, 0xbf, 0x99, 0xea, + 0x82, 0x2e, 0x45, 0xf7, 0xeb, 0xa9, 0x77, 0xff, 0x9e, 0xb4, 0x34, 0x7f, 0xa4, 0x5d, 0x85, 0x10, + 0xd9, 0x41, 0xa7, 0x54, 0x35, 0xfd, 0x5f, 0x55, 0xb3, 0x3b, 0x75, 0x93, 0xee, 0xab, 0x22, 0xce, + 0xab, 0x52, 0x67, 0x87, 0xeb, 0x0d, 0x73, 0xce, 0x36, 0xcc, 0x39, 0xdf, 0x30, 0xe7, 0x5b, 0xce, + 0xc8, 0x3a, 0x67, 0xe4, 0x2c, 0x67, 0xe4, 0x3c, 0x67, 0xe4, 0x67, 0xce, 0xc8, 0xf7, 0x5f, 0xcc, + 0x79, 0x7f, 0xab, 0x4e, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x85, 0xaa, 0xb3, 0xd3, 0x03, + 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.proto b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.proto new file mode 100644 index 000000000..5fb696598 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/generated.proto @@ -0,0 +1,62 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.client_go.pkg.apis.storage.v1beta1; + +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; +import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// StorageClass describes the parameters for a class of storage for +// which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class +// according to etcd is in ObjectMeta.Name. +message StorageClass { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Provisioner indicates the type of the provisioner. + optional string provisioner = 2; + + // Parameters holds the parameters for the provisioner that should + // create volumes of this storage class. + // +optional + map parameters = 3; +} + +// StorageClassList is a collection of storage classes. +message StorageClassList { + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of StorageClasses + repeated StorageClass items = 2; +} + diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/register.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/register.go new file mode 100644 index 000000000..f10a1a572 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/register.go @@ -0,0 +1,60 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package +const GroupName = "storage.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, RegisterDefaults) +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &StorageClass{}, + &StorageClassList{}, + ) + + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.generated.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.generated.go new file mode 100644 index 000000000..d9f5d5f77 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.generated.go @@ -0,0 +1,985 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + pkg2_types "k8s.io/apimachinery/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_v1.TypeMeta + var v1 pkg2_types.UID + var v2 time.Time + _, _, _ = v0, v1, v2 + } +} + +func (x *StorageClass) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = len(x.Parameters) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ObjectMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("provisioner")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Parameters == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + z.F.EncMapStringStringV(x.Parameters, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parameters")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parameters == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + z.F.EncMapStringStringV(x.Parameters, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageClass) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageClass) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv8 := &x.ObjectMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "provisioner": + if r.TryDecodeAsNil() { + x.Provisioner = "" + } else { + yyv10 := &x.Provisioner + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + *((*string)(yyv10)) = r.DecodeString() + } + } + case "parameters": + if r.TryDecodeAsNil() { + x.Parameters = nil + } else { + yyv12 := &x.Parameters + yym13 := z.DecBinary() + _ = yym13 + if false { + } else { + z.F.DecMapStringStringX(yyv12, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageClass) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj14 int + var yyb14 bool + var yyhl14 bool = l >= 0 + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv15 := &x.Kind + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv17 := &x.APIVersion + yym18 := z.DecBinary() + _ = yym18 + if false { + } else { + *((*string)(yyv17)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg1_v1.ObjectMeta{} + } else { + yyv19 := &x.ObjectMeta + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else { + z.DecFallback(yyv19, false) + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Provisioner = "" + } else { + yyv21 := &x.Provisioner + yym22 := z.DecBinary() + _ = yym22 + if false { + } else { + *((*string)(yyv21)) = r.DecodeString() + } + } + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Parameters = nil + } else { + yyv23 := &x.Parameters + yym24 := z.DecBinary() + _ = yym24 + if false { + } else { + z.F.DecMapStringStringX(yyv23, false, d) + } + } + for { + yyj14++ + if yyhl14 { + yyb14 = yyj14 > l + } else { + yyb14 = r.CheckBreak() + } + if yyb14 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj14-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StorageClassList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [4]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(4) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ListMeta + yym11 := z.EncBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.EncExt(yy10) { + } else { + z.EncFallback(yy10) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy12 := &x.ListMeta + yym13 := z.EncBinary() + _ = yym13 + if false { + } else if z.HasExtensions() && z.EncExt(yy12) { + } else { + z.EncFallback(yy12) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + h.encSliceStorageClass(([]StorageClass)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + h.encSliceStorageClass(([]StorageClass)(x.Items), e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageClassList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1 := z.DecBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2 := r.ContainerType() + if yyct2 == codecSelferValueTypeMap1234 { + yyl2 := r.ReadMapStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2, d) + } + } else if yyct2 == codecSelferValueTypeArray1234 { + yyl2 := r.ReadArrayStart() + if yyl2 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageClassList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3Slc + var yyhl3 bool = l >= 0 + for yyj3 := 0; ; yyj3++ { + if yyhl3 { + if yyj3 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3Slc = r.DecodeBytes(yys3Slc, true, true) + yys3 := string(yys3Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv4 := &x.Kind + yym5 := z.DecBinary() + _ = yym5 + if false { + } else { + *((*string)(yyv4)) = r.DecodeString() + } + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv6 := &x.APIVersion + yym7 := z.DecBinary() + _ = yym7 + if false { + } else { + *((*string)(yyv6)) = r.DecodeString() + } + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv8 := &x.ListMeta + yym9 := z.DecBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.DecExt(yyv8) { + } else { + z.DecFallback(yyv8, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv10 := &x.Items + yym11 := z.DecBinary() + _ = yym11 + if false { + } else { + h.decSliceStorageClass((*[]StorageClass)(yyv10), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3) + } // end switch yys3 + } // end for yyj3 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageClassList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj12 int + var yyb12 bool + var yyhl12 bool = l >= 0 + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + yyv13 := &x.Kind + yym14 := z.DecBinary() + _ = yym14 + if false { + } else { + *((*string)(yyv13)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + yyv15 := &x.APIVersion + yym16 := z.DecBinary() + _ = yym16 + if false { + } else { + *((*string)(yyv15)) = r.DecodeString() + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_v1.ListMeta{} + } else { + yyv17 := &x.ListMeta + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(yyv17) { + } else { + z.DecFallback(yyv17, false) + } + } + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv19 := &x.Items + yym20 := z.DecBinary() + _ = yym20 + if false { + } else { + h.decSliceStorageClass((*[]StorageClass)(yyv19), d) + } + } + for { + yyj12++ + if yyhl12 { + yyb12 = yyj12 > l + } else { + yyb12 = r.CheckBreak() + } + if yyb12 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj12-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceStorageClass(v []StorageClass, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2 := &yyv1 + yy2.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceStorageClass(v *[]StorageClass, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1 := *v + yyh1, yyl1 := z.DecSliceHelperStart() + var yyc1 bool + _ = yyc1 + if yyl1 == 0 { + if yyv1 == nil { + yyv1 = []StorageClass{} + yyc1 = true + } else if len(yyv1) != 0 { + yyv1 = yyv1[:0] + yyc1 = true + } + } else if yyl1 > 0 { + var yyrr1, yyrl1 int + var yyrt1 bool + _, _ = yyrl1, yyrt1 + yyrr1 = yyl1 // len(yyv1) + if yyl1 > cap(yyv1) { + + yyrg1 := len(yyv1) > 0 + yyv21 := yyv1 + yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 288) + if yyrt1 { + if yyrl1 <= cap(yyv1) { + yyv1 = yyv1[:yyrl1] + } else { + yyv1 = make([]StorageClass, yyrl1) + } + } else { + yyv1 = make([]StorageClass, yyrl1) + } + yyc1 = true + yyrr1 = len(yyv1) + if yyrg1 { + copy(yyv1, yyv21) + } + } else if yyl1 != len(yyv1) { + yyv1 = yyv1[:yyl1] + yyc1 = true + } + yyj1 := 0 + for ; yyj1 < yyrr1; yyj1++ { + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = StorageClass{} + } else { + yyv2 := &yyv1[yyj1] + yyv2.CodecDecodeSelf(d) + } + + } + if yyrt1 { + for ; yyj1 < yyl1; yyj1++ { + yyv1 = append(yyv1, StorageClass{}) + yyh1.ElemContainerState(yyj1) + if r.TryDecodeAsNil() { + yyv1[yyj1] = StorageClass{} + } else { + yyv3 := &yyv1[yyj1] + yyv3.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1 := 0 + for ; !r.CheckBreak(); yyj1++ { + + if yyj1 >= len(yyv1) { + yyv1 = append(yyv1, StorageClass{}) // var yyz1 StorageClass + yyc1 = true + } + yyh1.ElemContainerState(yyj1) + if yyj1 < len(yyv1) { + if r.TryDecodeAsNil() { + yyv1[yyj1] = StorageClass{} + } else { + yyv4 := &yyv1[yyj1] + yyv4.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1 < len(yyv1) { + yyv1 = yyv1[:yyj1] + yyc1 = true + } else if yyj1 == 0 && yyv1 == nil { + yyv1 = []StorageClass{} + yyc1 = true + } + } + yyh1.End() + if yyc1 { + *v = yyv1 + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.go new file mode 100644 index 000000000..8b4756784 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types.go @@ -0,0 +1,57 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// StorageClass describes the parameters for a class of storage for +// which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class +// according to etcd is in ObjectMeta.Name. +type StorageClass struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Provisioner indicates the type of the provisioner. + Provisioner string `json:"provisioner" protobuf:"bytes,2,opt,name=provisioner"` + + // Parameters holds the parameters for the provisioner that should + // create volumes of this storage class. + // +optional + Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` +} + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + metav1.TypeMeta `json:",inline"` + // Standard list metadata + // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of StorageClasses + Items []StorageClass `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 000000000..0d43bb03c --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,51 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_StorageClass = map[string]string{ + "": "StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "provisioner": "Provisioner indicates the type of the provisioner.", + "parameters": "Parameters holds the parameters for the provisioner that should create volumes of this storage class.", +} + +func (StorageClass) SwaggerDoc() map[string]string { + return map_StorageClass +} + +var map_StorageClassList = map[string]string{ + "": "StorageClassList is a collection of storage classes.", + "metadata": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", + "items": "Items is the list of StorageClasses", +} + +func (StorageClassList) SwaggerDoc() map[string]string { + return map_StorageClassList +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.conversion.go new file mode 100644 index 000000000..630fff327 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.conversion.go @@ -0,0 +1,93 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + storage "k8s.io/client-go/pkg/apis/storage" + unsafe "unsafe" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_StorageClass_To_storage_StorageClass, + Convert_storage_StorageClass_To_v1beta1_StorageClass, + Convert_v1beta1_StorageClassList_To_storage_StorageClassList, + Convert_storage_StorageClassList_To_v1beta1_StorageClassList, + ) +} + +func autoConvert_v1beta1_StorageClass_To_storage_StorageClass(in *StorageClass, out *storage.StorageClass, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Provisioner = in.Provisioner + out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters)) + return nil +} + +// Convert_v1beta1_StorageClass_To_storage_StorageClass is an autogenerated conversion function. +func Convert_v1beta1_StorageClass_To_storage_StorageClass(in *StorageClass, out *storage.StorageClass, s conversion.Scope) error { + return autoConvert_v1beta1_StorageClass_To_storage_StorageClass(in, out, s) +} + +func autoConvert_storage_StorageClass_To_v1beta1_StorageClass(in *storage.StorageClass, out *StorageClass, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + out.Provisioner = in.Provisioner + out.Parameters = *(*map[string]string)(unsafe.Pointer(&in.Parameters)) + return nil +} + +// Convert_storage_StorageClass_To_v1beta1_StorageClass is an autogenerated conversion function. +func Convert_storage_StorageClass_To_v1beta1_StorageClass(in *storage.StorageClass, out *StorageClass, s conversion.Scope) error { + return autoConvert_storage_StorageClass_To_v1beta1_StorageClass(in, out, s) +} + +func autoConvert_v1beta1_StorageClassList_To_storage_StorageClassList(in *StorageClassList, out *storage.StorageClassList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]storage.StorageClass)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1beta1_StorageClassList_To_storage_StorageClassList is an autogenerated conversion function. +func Convert_v1beta1_StorageClassList_To_storage_StorageClassList(in *StorageClassList, out *storage.StorageClassList, s conversion.Scope) error { + return autoConvert_v1beta1_StorageClassList_To_storage_StorageClassList(in, out, s) +} + +func autoConvert_storage_StorageClassList_To_v1beta1_StorageClassList(in *storage.StorageClassList, out *StorageClassList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items == nil { + out.Items = make([]StorageClass, 0) + } else { + out.Items = *(*[]StorageClass)(unsafe.Pointer(&in.Items)) + } + return nil +} + +// Convert_storage_StorageClassList_To_v1beta1_StorageClassList is an autogenerated conversion function. +func Convert_storage_StorageClassList_To_v1beta1_StorageClassList(in *storage.StorageClassList, out *StorageClassList, s conversion.Scope) error { + return autoConvert_storage_StorageClassList_To_v1beta1_StorageClassList(in, out, s) +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..1f2176994 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,82 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StorageClass, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StorageClassList, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +// DeepCopy_v1beta1_StorageClass is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClass) + out := out.(*StorageClass) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_v1beta1_StorageClassList is an autogenerated deepcopy function. +func DeepCopy_v1beta1_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClassList) + out := out.(*StorageClassList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StorageClass, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_StorageClass(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.defaults.go b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.defaults.go new file mode 100644 index 000000000..e24e70be3 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/v1beta1/zz_generated.defaults.go @@ -0,0 +1,32 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by defaulter-gen. Do not edit it manually! + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + return nil +} diff --git a/vendor/k8s.io/client-go/pkg/apis/storage/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/pkg/apis/storage/zz_generated.deepcopy.go new file mode 100644 index 000000000..bf8ba1b80 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/apis/storage/zz_generated.deepcopy.go @@ -0,0 +1,82 @@ +// +build !ignore_autogenerated + +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package storage + +import ( + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_storage_StorageClass, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_storage_StorageClassList, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +// DeepCopy_storage_StorageClass is an autogenerated deepcopy function. +func DeepCopy_storage_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClass) + out := out.(*StorageClass) + *out = *in + if newVal, err := c.DeepCopy(&in.ObjectMeta); err != nil { + return err + } else { + out.ObjectMeta = *newVal.(*v1.ObjectMeta) + } + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } + return nil + } +} + +// DeepCopy_storage_StorageClassList is an autogenerated deepcopy function. +func DeepCopy_storage_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClassList) + out := out.(*StorageClassList) + *out = *in + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StorageClass, len(*in)) + for i := range *in { + if err := DeepCopy_storage_StorageClass(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/pkg/util/BUILD b/vendor/k8s.io/client-go/pkg/util/BUILD new file mode 100644 index 000000000..ff028a804 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "template.go", + "umask.go", + "util.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/pkg/util/doc.go b/vendor/k8s.io/client-go/pkg/util/doc.go new file mode 100644 index 000000000..1747db550 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package util implements various utility functions used in both testing and implementation +// of Kubernetes. Package util may not depend on any other package in the Kubernetes +// package tree. +package util diff --git a/vendor/k8s.io/client-go/pkg/util/parsers/BUILD b/vendor/k8s.io/client-go/pkg/util/parsers/BUILD new file mode 100644 index 000000000..501d7a9b5 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/parsers/BUILD @@ -0,0 +1,15 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["parsers.go"], + tags = ["automanaged"], + deps = ["//vendor/github.com/docker/distribution/reference:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/pkg/util/parsers/parsers.go b/vendor/k8s.io/client-go/pkg/util/parsers/parsers.go new file mode 100644 index 000000000..4e70cc682 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/parsers/parsers.go @@ -0,0 +1,54 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package parsers + +import ( + "fmt" + + dockerref "github.com/docker/distribution/reference" +) + +const ( + DefaultImageTag = "latest" +) + +// ParseImageName parses a docker image string into three parts: repo, tag and digest. +// If both tag and digest are empty, a default image tag will be returned. +func ParseImageName(image string) (string, string, string, error) { + named, err := dockerref.ParseNamed(image) + if err != nil { + return "", "", "", fmt.Errorf("couldn't parse image name: %v", err) + } + + repoToPull := named.Name() + var tag, digest string + + tagged, ok := named.(dockerref.Tagged) + if ok { + tag = tagged.Tag() + } + + digested, ok := named.(dockerref.Digested) + if ok { + digest = digested.Digest().String() + } + // If no tag was specified, use the default "latest". + if len(tag) == 0 && len(digest) == 0 { + tag = DefaultImageTag + } + return repoToPull, tag, digest, nil +} diff --git a/vendor/k8s.io/client-go/pkg/util/template.go b/vendor/k8s.io/client-go/pkg/util/template.go new file mode 100644 index 000000000..d09d7dc86 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/template.go @@ -0,0 +1,48 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "bytes" + "go/doc" + "io" + "strings" + "text/template" +) + +func wrap(indent string, s string) string { + var buf bytes.Buffer + doc.ToText(&buf, s, indent, indent+" ", 80-len(indent)) + return buf.String() +} + +// ExecuteTemplate executes templateText with data and output written to w. +func ExecuteTemplate(w io.Writer, templateText string, data interface{}) error { + t := template.New("top") + t.Funcs(template.FuncMap{ + "trim": strings.TrimSpace, + "wrap": wrap, + }) + template.Must(t.Parse(templateText)) + return t.Execute(w, data) +} + +func ExecuteTemplateToString(templateText string, data interface{}) (string, error) { + b := bytes.Buffer{} + err := ExecuteTemplate(&b, templateText, data) + return b.String(), err +} diff --git a/vendor/k8s.io/client-go/pkg/util/umask.go b/vendor/k8s.io/client-go/pkg/util/umask.go new file mode 100644 index 000000000..35ccce50b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/umask.go @@ -0,0 +1,27 @@ +// +build !windows + +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "syscall" +) + +func Umask(mask int) (old int, err error) { + return syscall.Umask(mask), nil +} diff --git a/vendor/k8s.io/client-go/pkg/util/umask_windows.go b/vendor/k8s.io/client-go/pkg/util/umask_windows.go new file mode 100644 index 000000000..7a1ba1538 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/umask_windows.go @@ -0,0 +1,27 @@ +// +build windows + +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "errors" +) + +func Umask(mask int) (int, error) { + return 0, errors.New("platform and architecture is not supported") +} diff --git a/vendor/k8s.io/client-go/pkg/util/util.go b/vendor/k8s.io/client-go/pkg/util/util.go new file mode 100644 index 000000000..389e145e8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/util/util.go @@ -0,0 +1,140 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "fmt" + "os" + "reflect" + "regexp" +) + +// Takes a list of strings and compiles them into a list of regular expressions +func CompileRegexps(regexpStrings []string) ([]*regexp.Regexp, error) { + regexps := []*regexp.Regexp{} + for _, regexpStr := range regexpStrings { + r, err := regexp.Compile(regexpStr) + if err != nil { + return []*regexp.Regexp{}, err + } + regexps = append(regexps, r) + } + return regexps, nil +} + +// Detects if using systemd as the init system +// Please note that simply reading /proc/1/cmdline can be misleading because +// some installation of various init programs can automatically make /sbin/init +// a symlink or even a renamed version of their main program. +// TODO(dchen1107): realiably detects the init system using on the system: +// systemd, upstart, initd, etc. +func UsingSystemdInitSystem() bool { + if _, err := os.Stat("/run/systemd/system"); err == nil { + return true + } + + return false +} + +// Tests whether all pointer fields in a struct are nil. This is useful when, +// for example, an API struct is handled by plugins which need to distinguish +// "no plugin accepted this spec" from "this spec is empty". +// +// This function is only valid for structs and pointers to structs. Any other +// type will cause a panic. Passing a typed nil pointer will return true. +func AllPtrFieldsNil(obj interface{}) bool { + v := reflect.ValueOf(obj) + if !v.IsValid() { + panic(fmt.Sprintf("reflect.ValueOf() produced a non-valid Value for %#v", obj)) + } + if v.Kind() == reflect.Ptr { + if v.IsNil() { + return true + } + v = v.Elem() + } + for i := 0; i < v.NumField(); i++ { + if v.Field(i).Kind() == reflect.Ptr && !v.Field(i).IsNil() { + return false + } + } + return true +} + +func FileExists(filename string) (bool, error) { + if _, err := os.Stat(filename); os.IsNotExist(err) { + return false, nil + } else if err != nil { + return false, err + } + return true, nil +} + +func FileOrSymlinkExists(filename string) (bool, error) { + if _, err := os.Lstat(filename); os.IsNotExist(err) { + return false, nil + } else if err != nil { + return false, err + } + return true, nil +} + +// ReadDirNoStat returns a string of files/directories contained +// in dirname without calling lstat on them. +func ReadDirNoStat(dirname string) ([]string, error) { + if dirname == "" { + dirname = "." + } + + f, err := os.Open(dirname) + if err != nil { + return nil, err + } + defer f.Close() + + return f.Readdirnames(-1) +} + +// IntPtr returns a pointer to an int +func IntPtr(i int) *int { + o := i + return &o +} + +// Int32Ptr returns a pointer to an int32 +func Int32Ptr(i int32) *int32 { + o := i + return &o +} + +// IntPtrDerefOr dereference the int ptr and returns it i not nil, +// else returns def. +func IntPtrDerefOr(ptr *int, def int) int { + if ptr != nil { + return *ptr + } + return def +} + +// Int32PtrDerefOr dereference the int32 ptr and returns it i not nil, +// else returns def. +func Int32PtrDerefOr(ptr *int32, def int32) int32 { + if ptr != nil { + return *ptr + } + return def +} diff --git a/vendor/k8s.io/client-go/pkg/version/.gitattributes b/vendor/k8s.io/client-go/pkg/version/.gitattributes new file mode 100644 index 000000000..7e349eff6 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/version/.gitattributes @@ -0,0 +1 @@ +base.go export-subst diff --git a/vendor/k8s.io/client-go/pkg/version/BUILD b/vendor/k8s.io/client-go/pkg/version/BUILD new file mode 100644 index 000000000..5b51d0dfe --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/version/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "base.go", + "doc.go", + "version.go", + ], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/version:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/pkg/version/base.go b/vendor/k8s.io/client-go/pkg/version/base.go new file mode 100644 index 000000000..bc5d68702 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/version/base.go @@ -0,0 +1,59 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +// Base version information. +// +// This is the fallback data used when version information from git is not +// provided via go ldflags. It provides an approximation of the Kubernetes +// version for ad-hoc builds (e.g. `go build`) that cannot get the version +// information from git. +// +// If you are looking at these fields in the git tree, they look +// strange. They are modified on the fly by the build process. The +// in-tree values are dummy values used for "git archive", which also +// works for GitHub tar downloads. +// +// When releasing a new Kubernetes version, this file is updated by +// build/mark_new_version.sh to reflect the new version, and then a +// git annotated tag (using format vX.Y where X == Major version and Y +// == Minor version) is created to point to the commit that updates +// pkg/version/base.go +var ( + // TODO: Deprecate gitMajor and gitMinor, use only gitVersion + // instead. First step in deprecation, keep the fields but make + // them irrelevant. (Next we'll take it out, which may muck with + // scripts consuming the kubectl version output - but most of + // these should be looking at gitVersion already anyways.) + gitMajor string = "1" // major version, always numeric + gitMinor string = "7+" // minor version, numeric possibly followed by "+" + + // semantic version, derived by build scripts (see + // https://github.com/kubernetes/kubernetes/blob/master/docs/design/versioning.md + // for a detailed discussion of this field) + // + // TODO: This field is still called "gitVersion" for legacy + // reasons. For prerelease versions, the build metadata on the + // semantic version is a git hash, but the version itself is no + // longer the direct output of "git describe", but a slight + // translation to be semver compliant. + gitVersion string = "v1.7.3-beta.0+$Format:%h$" + gitCommit string = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD) + gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" + + buildDate string = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') +) diff --git a/vendor/k8s.io/client-go/pkg/version/def.bzl b/vendor/k8s.io/client-go/pkg/version/def.bzl new file mode 100644 index 000000000..bca85ab4b --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/version/def.bzl @@ -0,0 +1,24 @@ +# Implements hack/lib/version.sh's kube::version::ldflags() for Bazel. +def version_x_defs(): + # This should match the list of packages in kube::version::ldflag + stamp_pkgs = [ + "k8s.io/kubernetes/pkg/version", + # In hack/lib/version.sh, this has a vendor/ prefix. That isn't needed here? + "k8s.io/client-go/pkg/version", + ] + # This should match the list of vars in kube::version::ldflags + # It should also match the list of vars set in hack/print-workspace-status.sh. + stamp_vars = [ + "buildDate", + "gitCommit", + "gitMajor", + "gitMinor", + "gitTreeState", + "gitVersion", + ] + # Generate the cross-product. + x_defs = {} + for pkg in stamp_pkgs: + for var in stamp_vars: + x_defs["%s.%s" % (pkg, var)] = "{%s}" % var + return x_defs diff --git a/vendor/k8s.io/client-go/pkg/version/doc.go b/vendor/k8s.io/client-go/pkg/version/doc.go new file mode 100644 index 000000000..4bf139ce8 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/version/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package version supplies version information collected at build time to +// kubernetes components. +package version // import "k8s.io/client-go/pkg/version" diff --git a/vendor/k8s.io/client-go/pkg/version/version.go b/vendor/k8s.io/client-go/pkg/version/version.go new file mode 100644 index 000000000..8c8350d13 --- /dev/null +++ b/vendor/k8s.io/client-go/pkg/version/version.go @@ -0,0 +1,42 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +import ( + "fmt" + "runtime" + + apimachineryversion "k8s.io/apimachinery/pkg/version" +) + +// Get returns the overall codebase version. It's for detecting +// what code a binary was built from. +func Get() apimachineryversion.Info { + // These variables typically come from -ldflags settings and in + // their absence fallback to the settings in pkg/version/base.go + return apimachineryversion.Info{ + Major: gitMajor, + Minor: gitMinor, + GitVersion: gitVersion, + GitCommit: gitCommit, + GitTreeState: gitTreeState, + BuildDate: buildDate, + GoVersion: runtime.Version(), + Compiler: runtime.Compiler, + Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), + } +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/BUILD b/vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/BUILD new file mode 100644 index 000000000..818ac4307 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["provider.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/coreos/go-oidc/jose:go_default_library", + "//vendor/github.com/coreos/go-oidc/key:go_default_library", + "//vendor/github.com/coreos/go-oidc/oidc:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/provider.go b/vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/provider.go new file mode 100644 index 000000000..ae7353ff2 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/auth/authenticator/token/oidc/testing/provider.go @@ -0,0 +1,200 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "bytes" + "crypto/rand" + "crypto/rsa" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/json" + "encoding/pem" + "fmt" + "io/ioutil" + "math/big" + "net" + "net/http" + "net/http/httptest" + "net/url" + "os" + "path" + "path/filepath" + "testing" + "time" + + "github.com/coreos/go-oidc/jose" + "github.com/coreos/go-oidc/key" + "github.com/coreos/go-oidc/oidc" +) + +// NewOIDCProvider provides a bare minimum OIDC IdP Server useful for testing. +func NewOIDCProvider(t *testing.T, issuerPath string) *OIDCProvider { + privKey, err := key.GeneratePrivateKey() + if err != nil { + t.Fatalf("Cannot create OIDC Provider: %v", err) + return nil + } + + op := &OIDCProvider{ + Mux: http.NewServeMux(), + PrivKey: privKey, + issuerPath: issuerPath, + } + + op.Mux.HandleFunc(path.Join(issuerPath, "/.well-known/openid-configuration"), op.handleConfig) + op.Mux.HandleFunc(path.Join(issuerPath, "/keys"), op.handleKeys) + + return op +} + +type OIDCProvider struct { + Mux *http.ServeMux + PCFG oidc.ProviderConfig + PrivKey *key.PrivateKey + issuerPath string +} + +func (op *OIDCProvider) ServeTLSWithKeyPair(cert, key string) (*httptest.Server, error) { + srv := httptest.NewUnstartedServer(op.Mux) + + srv.TLS = &tls.Config{Certificates: make([]tls.Certificate, 1)} + var err error + srv.TLS.Certificates[0], err = tls.LoadX509KeyPair(cert, key) + if err != nil { + return nil, fmt.Errorf("Cannot load cert/key pair: %v", err) + } + srv.StartTLS() + + // The issuer's URL is extended by an optional path. This ensures that the plugin can + // handle issuers that use a non-root path for discovery (see kubernetes/kubernetes#29749). + srv.URL = srv.URL + op.issuerPath + + u, err := url.Parse(srv.URL) + if err != nil { + return nil, err + } + pathFor := func(p string) *url.URL { + u2 := *u // Shallow copy. + u2.Path = path.Join(u2.Path, p) + return &u2 + } + + op.PCFG = oidc.ProviderConfig{ + Issuer: u, + AuthEndpoint: pathFor("/auth"), + TokenEndpoint: pathFor("/token"), + KeysEndpoint: pathFor("/keys"), + ResponseTypesSupported: []string{"code"}, + SubjectTypesSupported: []string{"public"}, + IDTokenSigningAlgValues: []string{"RS256"}, + } + return srv, nil +} + +func (op *OIDCProvider) handleConfig(w http.ResponseWriter, req *http.Request) { + b, err := json.Marshal(&op.PCFG) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") + w.Write(b) +} + +func (op *OIDCProvider) handleKeys(w http.ResponseWriter, req *http.Request) { + keys := struct { + Keys []jose.JWK `json:"keys"` + }{ + Keys: []jose.JWK{op.PrivKey.JWK()}, + } + + b, err := json.Marshal(keys) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d", int(time.Hour.Seconds()))) + w.Header().Set("Expires", time.Now().Add(time.Hour).Format(time.RFC1123)) + w.Header().Set("Content-Type", "application/json") + w.Write(b) +} + +// generateSelfSignedCert generates a self-signed cert/key pairs and writes to the certPath/keyPath. +// This method is mostly identical to crypto.GenerateSelfSignedCert except for the 'IsCA' and 'KeyUsage' +// in the certificate template. (Maybe we can merge these two methods). +func GenerateSelfSignedCert(t *testing.T, host, certPath, keyPath string) { + priv, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + t.Fatal(err) + } + + template := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()), + }, + NotBefore: time.Now(), + NotAfter: time.Now().Add(time.Hour * 24 * 365), + + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + BasicConstraintsValid: true, + IsCA: true, + } + + if ip := net.ParseIP(host); ip != nil { + template.IPAddresses = append(template.IPAddresses, ip) + } else { + template.DNSNames = append(template.DNSNames, host) + } + + derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv) + if err != nil { + t.Fatal(err) + } + + // Generate cert + certBuffer := bytes.Buffer{} + if err := pem.Encode(&certBuffer, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil { + t.Fatal(err) + } + + // Generate key + keyBuffer := bytes.Buffer{} + if err := pem.Encode(&keyBuffer, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}); err != nil { + t.Fatal(err) + } + + // Write cert + if err := os.MkdirAll(filepath.Dir(certPath), os.FileMode(0755)); err != nil { + t.Fatal(err) + } + if err := ioutil.WriteFile(certPath, certBuffer.Bytes(), os.FileMode(0644)); err != nil { + t.Fatal(err) + } + + // Write key + if err := os.MkdirAll(filepath.Dir(keyPath), os.FileMode(0755)); err != nil { + t.Fatal(err) + } + if err := ioutil.WriteFile(keyPath, keyBuffer.Bytes(), os.FileMode(0600)); err != nil { + t.Fatal(err) + } +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/BUILD b/vendor/k8s.io/client-go/plugin/pkg/client/auth/BUILD new file mode 100644 index 000000000..d500b8d87 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/BUILD @@ -0,0 +1,19 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["plugins.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/client-go/plugin/pkg/client/auth/azure:go_default_library", + "//vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp:go_default_library", + "//vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/BUILD b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/BUILD new file mode 100644 index 000000000..00c96d666 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["azure_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/github.com/Azure/go-autorest/autorest/adal:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = ["azure.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/Azure/go-autorest/autorest:go_default_library", + "//vendor/github.com/Azure/go-autorest/autorest/adal:go_default_library", + "//vendor/github.com/Azure/go-autorest/autorest/azure:go_default_library", + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/README.md b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/README.md new file mode 100644 index 000000000..0b5e62bd4 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/README.md @@ -0,0 +1,48 @@ +# Azure Active Directory plugin for client authentication + +This plugin provides an integration with Azure Active Directory device flow. If no tokens are present in the kubectl configuration, it will prompt a device code which can be used to login in a browser. After login it will automatically fetch the tokens and stored them in the kubectl configuration. In addition it will refresh and update the tokens in configuration when expired. + + +## Usage + +1. Create an Azure Active Directory *Web App / API* application for `apiserver` following these [instructions](https://docs.microsoft.com/en-us/azure/active-directory/active-directory-app-registration) + +2. Create a second Azure Active Directory native application for `kubectl` + +3. On `kubectl` application's configuration page in Azure portal grant permissions to `apiserver` application by clicking on *Required Permissions*, click the *Add* button and search for the apiserver application created in step 1. Select "Access apiserver" under the *DELEGATED PERMISSIONS*. Once added click the *Grant Permissions* button to apply the changes + +4. Configure the `apiserver` to use the Azure Active Directory as an OIDC provider with following options + + ``` + --oidc-client-id="spn:APISERVER_APPLICATION_ID" \ + --oidc-issuer-url="https://sts.windows.net/TENANT_ID/" + --oidc-username-claim="sub" + ``` + + * Replace the `APISERVER_APPLICATION_ID` with the application ID of `apiserver` application + * Replace `TENANT_ID` with your tenant ID. + +5. Configure the `kubectl` to use the `azure` authentication provider + + ``` + kubectl config set-credentials "USER_NAME" --auth-provider=azure \ + --auth-provider-arg=environment=AzurePublicCloud \ + --auth-provider-arg=client-id=APPLICATION_ID \ + --auth-provider-arg=tenant-id=TENANT_ID \ + --auth-provider-arg=apiserver-id=APISERVER_APPLICATION_ID + ``` + + * Supported environments: `AzurePublicCloud`, `AzureUSGovernmentCloud`, `AzureChinaCloud`, `AzureGermanCloud` + * Replace `USER_NAME` and `TENANT_ID` with your user name and tenant ID + * Replace `APPLICATION_ID` with the application ID of your`kubectl` application ID + * Replace `APISERVER_APPLICATION_ID` with the application ID of your `apiserver` application ID + + 6. The access token is acquired when first `kubectl` command is executed + + ``` + kubectl get pods + + To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code DEC7D48GA to authenticate. + ``` + + * After signing in a web browser, the token is stored in the configuration, and it will be reused when executing next commands. diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure.go new file mode 100644 index 000000000..06744e742 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure.go @@ -0,0 +1,354 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package azure + +import ( + "errors" + "fmt" + "net/http" + "os" + "sync" + + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/adal" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/golang/glog" + + restclient "k8s.io/client-go/rest" +) + +const ( + azureTokenKey = "azureTokenKey" + tokenType = "Bearer" + authHeader = "Authorization" + + cfgClientID = "client-id" + cfgTenantID = "tenant-id" + cfgAccessToken = "access-token" + cfgRefreshToken = "refresh-token" + cfgExpiresIn = "expires-in" + cfgExpiresOn = "expires-on" + cfgEnvironment = "environment" + cfgApiserverID = "apiserver-id" +) + +func init() { + if err := restclient.RegisterAuthProviderPlugin("azure", newAzureAuthProvider); err != nil { + glog.Fatalf("Failed to register azure auth plugin: %v", err) + } +} + +var cache = newAzureTokenCache() + +type azureTokenCache struct { + lock sync.Mutex + cache map[string]*azureToken +} + +func newAzureTokenCache() *azureTokenCache { + return &azureTokenCache{cache: make(map[string]*azureToken)} +} + +func (c *azureTokenCache) getToken(tokenKey string) *azureToken { + c.lock.Lock() + defer c.lock.Unlock() + return c.cache[tokenKey] +} + +func (c *azureTokenCache) setToken(tokenKey string, token *azureToken) { + c.lock.Lock() + defer c.lock.Unlock() + c.cache[tokenKey] = token +} + +func newAzureAuthProvider(_ string, cfg map[string]string, persister restclient.AuthProviderConfigPersister) (restclient.AuthProvider, error) { + var ts tokenSource + + environment, err := azure.EnvironmentFromName(cfg[cfgEnvironment]) + if err != nil { + environment = azure.PublicCloud + } + ts, err = newAzureTokenSourceDeviceCode(environment, cfg[cfgClientID], cfg[cfgTenantID], cfg[cfgApiserverID]) + if err != nil { + return nil, fmt.Errorf("creating a new azure token source for device code authentication: %v", err) + } + cacheSource := newAzureTokenSource(ts, cache, cfg, persister) + + return &azureAuthProvider{ + tokenSource: cacheSource, + }, nil +} + +type azureAuthProvider struct { + tokenSource tokenSource +} + +func (p *azureAuthProvider) Login() error { + return errors.New("not yet implemented") +} + +func (p *azureAuthProvider) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &azureRoundTripper{ + tokenSource: p.tokenSource, + roundTripper: rt, + } +} + +type azureRoundTripper struct { + tokenSource tokenSource + roundTripper http.RoundTripper +} + +func (r *azureRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get(authHeader)) != 0 { + return r.roundTripper.RoundTrip(req) + } + + token, err := r.tokenSource.Token() + if err != nil { + glog.Errorf("Failed to acquire a token: %v", err) + return nil, fmt.Errorf("acquiring a token for authorization header: %v", err) + } + + // clone the request in order to avoid modifying the headers of the original request + req2 := new(http.Request) + *req2 = *req + req2.Header = make(http.Header, len(req.Header)) + for k, s := range req.Header { + req2.Header[k] = append([]string(nil), s...) + } + + req2.Header.Set(authHeader, fmt.Sprintf("%s %s", tokenType, token.token.AccessToken)) + + return r.roundTripper.RoundTrip(req2) +} + +type azureToken struct { + token adal.Token + clientID string + tenantID string + apiserverID string +} + +type tokenSource interface { + Token() (*azureToken, error) +} + +type azureTokenSource struct { + source tokenSource + cache *azureTokenCache + lock sync.Mutex + cfg map[string]string + persister restclient.AuthProviderConfigPersister +} + +func newAzureTokenSource(source tokenSource, cache *azureTokenCache, cfg map[string]string, persister restclient.AuthProviderConfigPersister) tokenSource { + return &azureTokenSource{ + source: source, + cache: cache, + cfg: cfg, + persister: persister, + } +} + +// Token fetches a token from the cache of configuration if present otherwise +// acquires a new token from the configured source. Automatically refreshes +// the token if expired. +func (ts *azureTokenSource) Token() (*azureToken, error) { + ts.lock.Lock() + defer ts.lock.Unlock() + + var err error + token := ts.cache.getToken(azureTokenKey) + if token == nil { + token, err = ts.retrieveTokenFromCfg() + if err != nil { + token, err = ts.source.Token() + if err != nil { + return nil, fmt.Errorf("acquiring a new fresh token: %v", err) + } + } + if !token.token.IsExpired() { + ts.cache.setToken(azureTokenKey, token) + err = ts.storeTokenInCfg(token) + if err != nil { + return nil, fmt.Errorf("storing the token in configuration: %v", err) + } + } + } + if token.token.IsExpired() { + token, err = ts.refreshToken(token) + if err != nil { + return nil, fmt.Errorf("refreshing the expired token: %v", err) + } + ts.cache.setToken(azureTokenKey, token) + err = ts.storeTokenInCfg(token) + if err != nil { + return nil, fmt.Errorf("storing the refreshed token in configuration: %v", err) + } + } + return token, nil +} + +func (ts *azureTokenSource) retrieveTokenFromCfg() (*azureToken, error) { + accessToken := ts.cfg[cfgAccessToken] + if accessToken == "" { + return nil, fmt.Errorf("no access token in cfg: %s", cfgAccessToken) + } + refreshToken := ts.cfg[cfgRefreshToken] + if refreshToken == "" { + return nil, fmt.Errorf("no refresh token in cfg: %s", cfgRefreshToken) + } + clientID := ts.cfg[cfgClientID] + if clientID == "" { + return nil, fmt.Errorf("no client ID in cfg: %s", cfgClientID) + } + tenantID := ts.cfg[cfgTenantID] + if tenantID == "" { + return nil, fmt.Errorf("no tenant ID in cfg: %s", cfgTenantID) + } + apiserverID := ts.cfg[cfgApiserverID] + if apiserverID == "" { + return nil, fmt.Errorf("no apiserver ID in cfg: %s", apiserverID) + } + expiresIn := ts.cfg[cfgExpiresIn] + if expiresIn == "" { + return nil, fmt.Errorf("no expiresIn in cfg: %s", cfgExpiresIn) + } + expiresOn := ts.cfg[cfgExpiresOn] + if expiresOn == "" { + return nil, fmt.Errorf("no expiresOn in cfg: %s", cfgExpiresOn) + } + + return &azureToken{ + token: adal.Token{ + AccessToken: accessToken, + RefreshToken: refreshToken, + ExpiresIn: expiresIn, + ExpiresOn: expiresOn, + NotBefore: expiresOn, + Resource: fmt.Sprintf("spn:%s", apiserverID), + Type: tokenType, + }, + clientID: clientID, + tenantID: tenantID, + apiserverID: apiserverID, + }, nil +} + +func (ts *azureTokenSource) storeTokenInCfg(token *azureToken) error { + newCfg := make(map[string]string) + newCfg[cfgAccessToken] = token.token.AccessToken + newCfg[cfgRefreshToken] = token.token.RefreshToken + newCfg[cfgClientID] = token.clientID + newCfg[cfgTenantID] = token.tenantID + newCfg[cfgApiserverID] = token.apiserverID + newCfg[cfgExpiresIn] = token.token.ExpiresIn + newCfg[cfgExpiresOn] = token.token.ExpiresOn + + err := ts.persister.Persist(newCfg) + if err != nil { + return fmt.Errorf("persisting the configuration: %v", err) + } + ts.cfg = newCfg + return nil +} + +func (ts *azureTokenSource) refreshToken(token *azureToken) (*azureToken, error) { + oauthConfig, err := adal.NewOAuthConfig(azure.PublicCloud.ActiveDirectoryEndpoint, token.tenantID) + if err != nil { + return nil, fmt.Errorf("building the OAuth configuration for token refresh: %v", err) + } + + callback := func(t adal.Token) error { + return nil + } + spt, err := adal.NewServicePrincipalTokenFromManualToken( + *oauthConfig, + token.clientID, + token.apiserverID, + token.token, + callback) + if err != nil { + return nil, fmt.Errorf("creating new service principal for token refresh: %v", err) + } + + if err := spt.Refresh(); err != nil { + return nil, fmt.Errorf("refreshing token: %v", err) + } + + return &azureToken{ + token: spt.Token, + clientID: token.clientID, + tenantID: token.tenantID, + apiserverID: token.apiserverID, + }, nil +} + +type azureTokenSourceDeviceCode struct { + environment azure.Environment + clientID string + tenantID string + apiserverID string +} + +func newAzureTokenSourceDeviceCode(environment azure.Environment, clientID string, tenantID string, apiserverID string) (tokenSource, error) { + if clientID == "" { + return nil, errors.New("client-id is empty") + } + if tenantID == "" { + return nil, errors.New("tenant-id is empty") + } + if apiserverID == "" { + return nil, errors.New("apiserver-id is empty") + } + return &azureTokenSourceDeviceCode{ + environment: environment, + clientID: clientID, + tenantID: tenantID, + apiserverID: apiserverID, + }, nil +} + +func (ts *azureTokenSourceDeviceCode) Token() (*azureToken, error) { + oauthConfig, err := adal.NewOAuthConfig(ts.environment.ActiveDirectoryEndpoint, ts.tenantID) + if err != nil { + return nil, fmt.Errorf("building the OAuth configuration for device code authentication: %v", err) + } + client := &autorest.Client{} + deviceCode, err := adal.InitiateDeviceAuth(client, *oauthConfig, ts.clientID, ts.apiserverID) + if err != nil { + return nil, fmt.Errorf("initialing the device code authentication: %v", err) + } + + _, err = fmt.Fprintln(os.Stderr, *deviceCode.Message) + if err != nil { + return nil, fmt.Errorf("prompting the device code message: %v", err) + } + + token, err := adal.WaitForUserCompletion(client, deviceCode) + if err != nil { + return nil, fmt.Errorf("waiting for device code authentication to complete: %v", err) + } + + return &azureToken{ + token: *token, + clientID: ts.clientID, + tenantID: ts.tenantID, + apiserverID: ts.apiserverID, + }, nil +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure_test.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure_test.go new file mode 100644 index 000000000..b420712bc --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/azure/azure_test.go @@ -0,0 +1,133 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package azure + +import ( + "strconv" + "strings" + "sync" + "testing" + "time" + + "github.com/Azure/go-autorest/autorest/adal" +) + +func TestAzureTokenSource(t *testing.T) { + fakeAccessToken := "fake token 1" + fakeSource := fakeTokenSource{ + accessToken: fakeAccessToken, + expiresOn: strconv.FormatInt(time.Now().Add(3600*time.Second).Unix(), 10), + } + cfg := make(map[string]string) + persiter := &fakePersister{cache: make(map[string]string)} + tokenCache := newAzureTokenCache() + tokenSource := newAzureTokenSource(&fakeSource, tokenCache, cfg, persiter) + token, err := tokenSource.Token() + if err != nil { + t.Errorf("failed to retrieve the token form cache: %v", err) + } + + wantCacheLen := 1 + if len(tokenCache.cache) != wantCacheLen { + t.Errorf("Token() cache length error: got %v, want %v", len(tokenCache.cache), wantCacheLen) + } + + if token != tokenCache.cache[azureTokenKey] { + t.Error("Token() returned token != cached token") + } + + wantCfg := token2Cfg(token) + persistedCfg := persiter.Cache() + for k, v := range persistedCfg { + if strings.Compare(v, wantCfg[k]) != 0 { + t.Errorf("Token() persisted cfg %s: got %v, want %v", k, v, wantCfg[k]) + } + } + + fakeSource.accessToken = "fake token 2" + token, err = tokenSource.Token() + if err != nil { + t.Errorf("failed to retrieve the cached token: %v", err) + } + + if token.token.AccessToken != fakeAccessToken { + t.Errorf("Token() didn't return the cached token") + } +} + +type fakePersister struct { + lock sync.Mutex + cache map[string]string +} + +func (p *fakePersister) Persist(cache map[string]string) error { + p.lock.Lock() + defer p.lock.Unlock() + p.cache = map[string]string{} + for k, v := range cache { + p.cache[k] = v + } + return nil +} + +func (p *fakePersister) Cache() map[string]string { + ret := map[string]string{} + p.lock.Lock() + defer p.lock.Unlock() + for k, v := range p.cache { + ret[k] = v + } + return ret +} + +type fakeTokenSource struct { + expiresOn string + accessToken string +} + +func (ts *fakeTokenSource) Token() (*azureToken, error) { + return &azureToken{ + token: newFackeAzureToken(ts.accessToken, ts.expiresOn), + clientID: "fake", + tenantID: "fake", + apiserverID: "fake", + }, nil +} + +func token2Cfg(token *azureToken) map[string]string { + cfg := make(map[string]string) + cfg[cfgAccessToken] = token.token.AccessToken + cfg[cfgRefreshToken] = token.token.RefreshToken + cfg[cfgClientID] = token.clientID + cfg[cfgTenantID] = token.tenantID + cfg[cfgApiserverID] = token.apiserverID + cfg[cfgExpiresIn] = token.token.ExpiresIn + cfg[cfgExpiresOn] = token.token.ExpiresOn + return cfg +} + +func newFackeAzureToken(accessToken string, expiresOn string) adal.Token { + return adal.Token{ + AccessToken: accessToken, + RefreshToken: "fake", + ExpiresIn: "3600", + ExpiresOn: expiresOn, + NotBefore: expiresOn, + Resource: "fake", + Type: "fake", + } +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/BUILD b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/BUILD new file mode 100644 index 000000000..72349cc6d --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/BUILD @@ -0,0 +1,32 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["gcp_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/golang.org/x/oauth2:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = ["gcp.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/golang.org/x/net/context:go_default_library", + "//vendor/golang.org/x/oauth2:go_default_library", + "//vendor/golang.org/x/oauth2/google:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/util/jsonpath:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/OWNERS b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/OWNERS new file mode 100644 index 000000000..6cf8db8ac --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/OWNERS @@ -0,0 +1,6 @@ +approvers: +- cjcullen +- jlowdermilk +reviewers: +- cjcullen +- jlowdermilk diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp.go new file mode 100644 index 000000000..59a27bea7 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp.go @@ -0,0 +1,308 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package gcp + +import ( + "bytes" + "encoding/json" + "fmt" + "net/http" + "os/exec" + "strings" + "sync" + "time" + + "github.com/golang/glog" + "golang.org/x/net/context" + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" + "k8s.io/apimachinery/pkg/util/yaml" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/util/jsonpath" +) + +func init() { + if err := restclient.RegisterAuthProviderPlugin("gcp", newGCPAuthProvider); err != nil { + glog.Fatalf("Failed to register gcp auth plugin: %v", err) + } +} + +// Stubbable for testing +var execCommand = exec.Command + +// gcpAuthProvider is an auth provider plugin that uses GCP credentials to provide +// tokens for kubectl to authenticate itself to the apiserver. A sample json config +// is provided below with all recognized options described. +// +// { +// 'auth-provider': { +// # Required +// "name": "gcp", +// +// 'config': { +// # Caching options +// +// # Raw string data representing cached access token. +// "access-token": "ya29.CjWdA4GiBPTt", +// # RFC3339Nano expiration timestamp for cached access token. +// "expiry": "2016-10-31 22:31:9.123", +// +// # Command execution options +// # These options direct the plugin to execute a specified command and parse +// # token and expiry time from the output of the command. +// +// # Command to execute for access token. Command output will be parsed as JSON. +// # If "cmd-args" is not present, this value will be split on whitespace, with +// # the first element interpreted as the command, remaining elements as args. +// "cmd-path": "/usr/bin/gcloud", +// +// # Arguments to pass to command to execute for access token. +// "cmd-args": "config config-helper --output=json" +// +// # JSONPath to the string field that represents the access token in +// # command output. If omitted, defaults to "{.access_token}". +// "token-key": "{.credential.access_token}", +// +// # JSONPath to the string field that represents expiration timestamp +// # of the access token in the command output. If omitted, defaults to +// # "{.token_expiry}" +// "expiry-key": ""{.credential.token_expiry}", +// +// # golang reference time in the format that the expiration timestamp uses. +// # If omitted, defaults to time.RFC3339Nano +// "time-fmt": "2006-01-02 15:04:05.999999999" +// } +// } +// } +// +type gcpAuthProvider struct { + tokenSource oauth2.TokenSource + persister restclient.AuthProviderConfigPersister +} + +func newGCPAuthProvider(_ string, gcpConfig map[string]string, persister restclient.AuthProviderConfigPersister) (restclient.AuthProvider, error) { + var ts oauth2.TokenSource + var err error + if cmd, useCmd := gcpConfig["cmd-path"]; useCmd { + if len(cmd) == 0 { + return nil, fmt.Errorf("missing access token cmd") + } + var args []string + if cmdArgs, ok := gcpConfig["cmd-args"]; ok { + args = strings.Fields(cmdArgs) + } else { + fields := strings.Fields(cmd) + cmd = fields[0] + args = fields[1:] + } + ts = newCmdTokenSource(cmd, args, gcpConfig["token-key"], gcpConfig["expiry-key"], gcpConfig["time-fmt"]) + } else { + ts, err = google.DefaultTokenSource(context.Background(), "https://www.googleapis.com/auth/cloud-platform") + } + if err != nil { + return nil, err + } + cts, err := newCachedTokenSource(gcpConfig["access-token"], gcpConfig["expiry"], persister, ts, gcpConfig) + if err != nil { + return nil, err + } + return &gcpAuthProvider{cts, persister}, nil +} + +func (g *gcpAuthProvider) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &conditionalTransport{&oauth2.Transport{Source: g.tokenSource, Base: rt}, g.persister} +} + +func (g *gcpAuthProvider) Login() error { return nil } + +type cachedTokenSource struct { + lk sync.Mutex + source oauth2.TokenSource + accessToken string + expiry time.Time + persister restclient.AuthProviderConfigPersister + cache map[string]string +} + +func newCachedTokenSource(accessToken, expiry string, persister restclient.AuthProviderConfigPersister, ts oauth2.TokenSource, cache map[string]string) (*cachedTokenSource, error) { + var expiryTime time.Time + if parsedTime, err := time.Parse(time.RFC3339Nano, expiry); err == nil { + expiryTime = parsedTime + } + if cache == nil { + cache = make(map[string]string) + } + return &cachedTokenSource{ + source: ts, + accessToken: accessToken, + expiry: expiryTime, + persister: persister, + cache: cache, + }, nil +} + +func (t *cachedTokenSource) Token() (*oauth2.Token, error) { + tok := t.cachedToken() + if tok.Valid() && !tok.Expiry.IsZero() { + return tok, nil + } + tok, err := t.source.Token() + if err != nil { + return nil, err + } + cache := t.update(tok) + if t.persister != nil { + if err := t.persister.Persist(cache); err != nil { + glog.V(4).Infof("Failed to persist token: %v", err) + } + } + return tok, nil +} + +func (t *cachedTokenSource) cachedToken() *oauth2.Token { + t.lk.Lock() + defer t.lk.Unlock() + return &oauth2.Token{ + AccessToken: t.accessToken, + TokenType: "Bearer", + Expiry: t.expiry, + } +} + +func (t *cachedTokenSource) update(tok *oauth2.Token) map[string]string { + t.lk.Lock() + defer t.lk.Unlock() + t.accessToken = tok.AccessToken + t.expiry = tok.Expiry + ret := map[string]string{} + for k, v := range t.cache { + ret[k] = v + } + ret["access-token"] = t.accessToken + ret["expiry"] = t.expiry.Format(time.RFC3339Nano) + return ret +} + +type commandTokenSource struct { + cmd string + args []string + tokenKey string + expiryKey string + timeFmt string +} + +func newCmdTokenSource(cmd string, args []string, tokenKey, expiryKey, timeFmt string) *commandTokenSource { + if len(timeFmt) == 0 { + timeFmt = time.RFC3339Nano + } + if len(tokenKey) == 0 { + tokenKey = "{.access_token}" + } + if len(expiryKey) == 0 { + expiryKey = "{.token_expiry}" + } + return &commandTokenSource{ + cmd: cmd, + args: args, + tokenKey: tokenKey, + expiryKey: expiryKey, + timeFmt: timeFmt, + } +} + +func (c *commandTokenSource) Token() (*oauth2.Token, error) { + fullCmd := strings.Join(append([]string{c.cmd}, c.args...), " ") + cmd := execCommand(c.cmd, c.args...) + output, err := cmd.Output() + if err != nil { + return nil, fmt.Errorf("error executing access token command %q: err=%v output=%s", fullCmd, err, output) + } + token, err := c.parseTokenCmdOutput(output) + if err != nil { + return nil, fmt.Errorf("error parsing output for access token command %q: %v", fullCmd, err) + } + return token, nil +} + +func (c *commandTokenSource) parseTokenCmdOutput(output []byte) (*oauth2.Token, error) { + output, err := yaml.ToJSON(output) + if err != nil { + return nil, err + } + var data interface{} + if err := json.Unmarshal(output, &data); err != nil { + return nil, err + } + + accessToken, err := parseJSONPath(data, "token-key", c.tokenKey) + if err != nil { + return nil, fmt.Errorf("error parsing token-key %q from %q: %v", c.tokenKey, string(output), err) + } + expiryStr, err := parseJSONPath(data, "expiry-key", c.expiryKey) + if err != nil { + return nil, fmt.Errorf("error parsing expiry-key %q from %q: %v", c.expiryKey, string(output), err) + } + var expiry time.Time + if t, err := time.Parse(c.timeFmt, expiryStr); err != nil { + glog.V(4).Infof("Failed to parse token expiry from %s (fmt=%s): %v", expiryStr, c.timeFmt, err) + } else { + expiry = t + } + + return &oauth2.Token{ + AccessToken: accessToken, + TokenType: "Bearer", + Expiry: expiry, + }, nil +} + +func parseJSONPath(input interface{}, name, template string) (string, error) { + j := jsonpath.New(name) + buf := new(bytes.Buffer) + if err := j.Parse(template); err != nil { + return "", err + } + if err := j.Execute(buf, input); err != nil { + return "", err + } + return buf.String(), nil +} + +type conditionalTransport struct { + oauthTransport *oauth2.Transport + persister restclient.AuthProviderConfigPersister +} + +func (t *conditionalTransport) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Authorization")) != 0 { + return t.oauthTransport.Base.RoundTrip(req) + } + + res, err := t.oauthTransport.RoundTrip(req) + + if err != nil { + return nil, err + } + + if res.StatusCode == 401 { + glog.V(4).Infof("The credentials that were supplied are invalid for the target cluster") + emptyCache := make(map[string]string) + t.persister.Persist(emptyCache) + } + + return res, nil +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp_test.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp_test.go new file mode 100644 index 000000000..662d38b8f --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/gcp/gcp_test.go @@ -0,0 +1,388 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package gcp + +import ( + "fmt" + "net/http" + "os" + "os/exec" + "reflect" + "strings" + "sync" + "testing" + "time" + + "golang.org/x/oauth2" +) + +type fakeOutput struct { + args []string + output string +} + +var ( + wantCmd []string + // Output for fakeExec, keyed by command + execOutputs = map[string]fakeOutput{ + "/default/no/args": { + args: []string{}, + output: `{ + "access_token": "faketoken", + "token_expiry": "2016-10-31T22:31:09.123000000Z" +}`}, + "/default/legacy/args": { + args: []string{"arg1", "arg2", "arg3"}, + output: `{ + "access_token": "faketoken", + "token_expiry": "2016-10-31T22:31:09.123000000Z" +}`}, + "/space in path/customkeys": { + args: []string{"can", "haz", "auth"}, + output: `{ + "token": "faketoken", + "token_expiry": { + "datetime": "2016-10-31 22:31:09.123" + } +}`}, + "missing/tokenkey/noargs": { + args: []string{}, + output: `{ + "broken": "faketoken", + "token_expiry": { + "datetime": "2016-10-31 22:31:09.123000000Z" + } +}`}, + "missing/expirykey/legacyargs": { + args: []string{"split", "on", "whitespace"}, + output: `{ + "access_token": "faketoken", + "expires": "2016-10-31T22:31:09.123000000Z" +}`}, + "invalid expiry/timestamp": { + args: []string{"foo", "--bar", "--baz=abc,def"}, + output: `{ + "access_token": "faketoken", + "token_expiry": "sometime soon, idk" +}`}, + "badjson": { + args: []string{}, + output: `{ + "access_token": "faketoken", + "token_expiry": "sometime soon, idk" + ------ +`}, + } +) + +func fakeExec(command string, args ...string) *exec.Cmd { + cs := []string{"-test.run=TestHelperProcess", "--", command} + cs = append(cs, args...) + cmd := exec.Command(os.Args[0], cs...) + cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"} + return cmd +} + +func TestHelperProcess(t *testing.T) { + if os.Getenv("GO_WANT_HELPER_PROCESS") != "1" { + return + } + // Strip out the leading args used to exec into this function. + gotCmd := os.Args[3] + gotArgs := os.Args[4:] + output, ok := execOutputs[gotCmd] + if !ok { + fmt.Fprintf(os.Stdout, "unexpected call cmd=%q args=%v\n", gotCmd, gotArgs) + os.Exit(1) + } else if !reflect.DeepEqual(output.args, gotArgs) { + fmt.Fprintf(os.Stdout, "call cmd=%q got args %v, want: %v\n", gotCmd, gotArgs, output.args) + os.Exit(1) + } + fmt.Fprintf(os.Stdout, output.output) + os.Exit(0) +} + +func errEquiv(got, want error) bool { + if got == want { + return true + } + if got != nil && want != nil { + return strings.Contains(got.Error(), want.Error()) + } + return false +} + +func TestCmdTokenSource(t *testing.T) { + execCommand = fakeExec + fakeExpiry := time.Date(2016, 10, 31, 22, 31, 9, 123000000, time.UTC) + customFmt := "2006-01-02 15:04:05.999999999" + + tests := []struct { + name string + gcpConfig map[string]string + tok *oauth2.Token + newErr, tokenErr error + }{ + { + "default", + map[string]string{ + "cmd-path": "/default/no/args", + }, + &oauth2.Token{ + AccessToken: "faketoken", + TokenType: "Bearer", + Expiry: fakeExpiry, + }, + nil, + nil, + }, + { + "default legacy args", + map[string]string{ + "cmd-path": "/default/legacy/args arg1 arg2 arg3", + }, + &oauth2.Token{ + AccessToken: "faketoken", + TokenType: "Bearer", + Expiry: fakeExpiry, + }, + nil, + nil, + }, + + { + "custom keys", + map[string]string{ + "cmd-path": "/space in path/customkeys", + "cmd-args": "can haz auth", + "token-key": "{.token}", + "expiry-key": "{.token_expiry.datetime}", + "time-fmt": customFmt, + }, + &oauth2.Token{ + AccessToken: "faketoken", + TokenType: "Bearer", + Expiry: fakeExpiry, + }, + nil, + nil, + }, + { + "missing cmd", + map[string]string{ + "cmd-path": "", + }, + nil, + fmt.Errorf("missing access token cmd"), + nil, + }, + { + "missing token-key", + map[string]string{ + "cmd-path": "missing/tokenkey/noargs", + "token-key": "{.token}", + }, + nil, + nil, + fmt.Errorf("error parsing token-key %q", "{.token}"), + }, + + { + "missing expiry-key", + map[string]string{ + "cmd-path": "missing/expirykey/legacyargs split on whitespace", + "expiry-key": "{.expiry}", + }, + nil, + nil, + fmt.Errorf("error parsing expiry-key %q", "{.expiry}"), + }, + { + "invalid expiry timestamp", + map[string]string{ + "cmd-path": "invalid expiry/timestamp", + "cmd-args": "foo --bar --baz=abc,def", + }, + &oauth2.Token{ + AccessToken: "faketoken", + TokenType: "Bearer", + Expiry: time.Time{}, + }, + nil, + nil, + }, + { + "bad JSON", + map[string]string{ + "cmd-path": "badjson", + }, + nil, + nil, + fmt.Errorf("invalid character '-' after object key:value pair"), + }, + } + + for _, tc := range tests { + provider, err := newGCPAuthProvider("", tc.gcpConfig, nil /* persister */) + if !errEquiv(err, tc.newErr) { + t.Errorf("%q newGCPAuthProvider error: got %v, want %v", tc.name, err, tc.newErr) + continue + } + if err != nil { + continue + } + ts := provider.(*gcpAuthProvider).tokenSource.(*cachedTokenSource).source.(*commandTokenSource) + wantCmd = append([]string{ts.cmd}, ts.args...) + tok, err := ts.Token() + if !errEquiv(err, tc.tokenErr) { + t.Errorf("%q Token() error: got %v, want %v", tc.name, err, tc.tokenErr) + } + if !reflect.DeepEqual(tok, tc.tok) { + t.Errorf("%q Token() got %v, want %v", tc.name, tok, tc.tok) + } + } +} + +type fakePersister struct { + lk sync.Mutex + cache map[string]string +} + +func (f *fakePersister) Persist(cache map[string]string) error { + f.lk.Lock() + defer f.lk.Unlock() + f.cache = map[string]string{} + for k, v := range cache { + f.cache[k] = v + } + return nil +} + +func (f *fakePersister) read() map[string]string { + ret := map[string]string{} + f.lk.Lock() + defer f.lk.Unlock() + for k, v := range f.cache { + ret[k] = v + } + return ret +} + +type fakeTokenSource struct { + token *oauth2.Token + err error +} + +func (f *fakeTokenSource) Token() (*oauth2.Token, error) { + return f.token, f.err +} + +func TestCachedTokenSource(t *testing.T) { + tok := &oauth2.Token{AccessToken: "fakeaccesstoken"} + persister := &fakePersister{} + source := &fakeTokenSource{ + token: tok, + err: nil, + } + cache := map[string]string{ + "foo": "bar", + "baz": "bazinga", + } + ts, err := newCachedTokenSource("fakeaccesstoken", "", persister, source, cache) + if err != nil { + t.Fatal(err) + } + var wg sync.WaitGroup + wg.Add(10) + for i := 0; i < 10; i++ { + go func() { + _, err := ts.Token() + if err != nil { + t.Errorf("unexpected error: %s", err) + } + wg.Done() + }() + } + wg.Wait() + cache["access-token"] = "fakeaccesstoken" + cache["expiry"] = tok.Expiry.Format(time.RFC3339Nano) + if got := persister.read(); !reflect.DeepEqual(got, cache) { + t.Errorf("got cache %v, want %v", got, cache) + } +} + +type MockTransport struct { + res *http.Response +} + +func (t *MockTransport) RoundTrip(req *http.Request) (*http.Response, error) { + return t.res, nil +} + +func TestClearingCredentials(t *testing.T) { + + fakeExpiry := time.Now().Add(time.Hour) + + cache := map[string]string{ + "access-token": "fakeToken", + "expiry": fakeExpiry.String(), + } + + cts := cachedTokenSource{ + source: nil, + accessToken: cache["access-token"], + expiry: fakeExpiry, + persister: nil, + cache: nil, + } + + tests := []struct { + name string + res http.Response + cache map[string]string + }{ + { + "Unauthorized", + http.Response{StatusCode: 401}, + make(map[string]string), + }, + { + "Authorized", + http.Response{StatusCode: 200}, + cache, + }, + } + + persister := &fakePersister{} + req := http.Request{Header: http.Header{}} + + for _, tc := range tests { + authProvider := gcpAuthProvider{&cts, persister} + + fakeTransport := MockTransport{&tc.res} + + transport := (authProvider.WrapTransport(&fakeTransport)) + persister.Persist(cache) + + transport.RoundTrip(&req) + + if got := persister.read(); !reflect.DeepEqual(got, tc.cache) { + t.Errorf("got cache %v, want %v", got, tc.cache) + } + } + +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/BUILD b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/BUILD new file mode 100644 index 000000000..fff5d7ce4 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/BUILD @@ -0,0 +1,27 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["oidc_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["oidc.go"], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/golang.org/x/oauth2:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/OWNERS b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/OWNERS new file mode 100644 index 000000000..d2210cb89 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/OWNERS @@ -0,0 +1,4 @@ +approvers: +- ericchiang +reviewers: +- ericchiang diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc.go new file mode 100644 index 000000000..ecfd13eb2 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc.go @@ -0,0 +1,370 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package oidc + +import ( + "context" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "strings" + "sync" + "time" + + "github.com/golang/glog" + "golang.org/x/oauth2" + restclient "k8s.io/client-go/rest" +) + +const ( + cfgIssuerUrl = "idp-issuer-url" + cfgClientID = "client-id" + cfgClientSecret = "client-secret" + cfgCertificateAuthority = "idp-certificate-authority" + cfgCertificateAuthorityData = "idp-certificate-authority-data" + cfgIDToken = "id-token" + cfgRefreshToken = "refresh-token" + + // Unused. Scopes aren't sent during refreshing. + cfgExtraScopes = "extra-scopes" +) + +func init() { + if err := restclient.RegisterAuthProviderPlugin("oidc", newOIDCAuthProvider); err != nil { + glog.Fatalf("Failed to register oidc auth plugin: %v", err) + } +} + +// expiryDelta determines how earlier a token should be considered +// expired than its actual expiration time. It is used to avoid late +// expirations due to client-server time mismatches. +// +// NOTE(ericchiang): this is take from golang.org/x/oauth2 +const expiryDelta = 10 * time.Second + +var cache = newClientCache() + +// Like TLS transports, keep a cache of OIDC clients indexed by issuer URL. This ensures +// current requests from different clients don't concurrently attempt to refresh the same +// set of credentials. +type clientCache struct { + mu sync.RWMutex + + cache map[cacheKey]*oidcAuthProvider +} + +func newClientCache() *clientCache { + return &clientCache{cache: make(map[cacheKey]*oidcAuthProvider)} +} + +type cacheKey struct { + // Canonical issuer URL string of the provider. + issuerURL string + clientID string +} + +func (c *clientCache) getClient(issuer, clientID string) (*oidcAuthProvider, bool) { + c.mu.RLock() + defer c.mu.RUnlock() + client, ok := c.cache[cacheKey{issuer, clientID}] + return client, ok +} + +// setClient attempts to put the client in the cache but may return any clients +// with the same keys set before. This is so there's only ever one client for a provider. +func (c *clientCache) setClient(issuer, clientID string, client *oidcAuthProvider) *oidcAuthProvider { + c.mu.Lock() + defer c.mu.Unlock() + key := cacheKey{issuer, clientID} + + // If another client has already initialized a client for the given provider we want + // to use that client instead of the one we're trying to set. This is so all transports + // share a client and can coordinate around the same mutex when refreshing and writing + // to the kubeconfig. + if oldClient, ok := c.cache[key]; ok { + return oldClient + } + + c.cache[key] = client + return client +} + +func newOIDCAuthProvider(_ string, cfg map[string]string, persister restclient.AuthProviderConfigPersister) (restclient.AuthProvider, error) { + issuer := cfg[cfgIssuerUrl] + if issuer == "" { + return nil, fmt.Errorf("Must provide %s", cfgIssuerUrl) + } + + clientID := cfg[cfgClientID] + if clientID == "" { + return nil, fmt.Errorf("Must provide %s", cfgClientID) + } + + // Check cache for existing provider. + if provider, ok := cache.getClient(issuer, clientID); ok { + return provider, nil + } + + if len(cfg[cfgExtraScopes]) > 0 { + glog.V(2).Infof("%s auth provider field depricated, refresh request don't send scopes", + cfgExtraScopes) + } + + var certAuthData []byte + var err error + if cfg[cfgCertificateAuthorityData] != "" { + certAuthData, err = base64.StdEncoding.DecodeString(cfg[cfgCertificateAuthorityData]) + if err != nil { + return nil, err + } + } + + clientConfig := restclient.Config{ + TLSClientConfig: restclient.TLSClientConfig{ + CAFile: cfg[cfgCertificateAuthority], + CAData: certAuthData, + }, + } + + trans, err := restclient.TransportFor(&clientConfig) + if err != nil { + return nil, err + } + hc := &http.Client{Transport: trans} + + provider := &oidcAuthProvider{ + client: hc, + now: time.Now, + cfg: cfg, + persister: persister, + } + + return cache.setClient(issuer, clientID, provider), nil +} + +type oidcAuthProvider struct { + client *http.Client + + // Method for determining the current time. + now func() time.Time + + // Mutex guards persisting to the kubeconfig file and allows synchronized + // updates to the in-memory config. It also ensures concurrent calls to + // the RoundTripper only trigger a single refresh request. + mu sync.Mutex + cfg map[string]string + persister restclient.AuthProviderConfigPersister +} + +func (p *oidcAuthProvider) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &roundTripper{ + wrapped: rt, + provider: p, + } +} + +func (p *oidcAuthProvider) Login() error { + return errors.New("not yet implemented") +} + +type roundTripper struct { + provider *oidcAuthProvider + wrapped http.RoundTripper +} + +func (r *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Authorization")) != 0 { + return r.wrapped.RoundTrip(req) + } + token, err := r.provider.idToken() + if err != nil { + return nil, err + } + + // shallow copy of the struct + r2 := new(http.Request) + *r2 = *req + // deep copy of the Header so we don't modify the original + // request's Header (as per RoundTripper contract). + r2.Header = make(http.Header) + for k, s := range req.Header { + r2.Header[k] = s + } + r2.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token)) + + return r.wrapped.RoundTrip(r2) +} + +func (p *oidcAuthProvider) idToken() (string, error) { + p.mu.Lock() + defer p.mu.Unlock() + + if idToken, ok := p.cfg[cfgIDToken]; ok && len(idToken) > 0 { + valid, err := idTokenExpired(p.now, idToken) + if err != nil { + return "", err + } + if valid { + // If the cached id token is still valid use it. + return idToken, nil + } + } + + // Try to request a new token using the refresh token. + rt, ok := p.cfg[cfgRefreshToken] + if !ok || len(rt) == 0 { + return "", errors.New("No valid id-token, and cannot refresh without refresh-token") + } + + // Determine provider's OAuth2 token endpoint. + tokenURL, err := tokenEndpoint(p.client, p.cfg[cfgIssuerUrl]) + if err != nil { + return "", err + } + + config := oauth2.Config{ + ClientID: p.cfg[cfgClientID], + ClientSecret: p.cfg[cfgClientSecret], + Endpoint: oauth2.Endpoint{TokenURL: tokenURL}, + } + + ctx := context.WithValue(context.Background(), oauth2.HTTPClient, p.client) + token, err := config.TokenSource(ctx, &oauth2.Token{RefreshToken: rt}).Token() + if err != nil { + return "", fmt.Errorf("failed to refresh token: %v", err) + } + + idToken, ok := token.Extra("id_token").(string) + if !ok { + return "", fmt.Errorf("token response did not contain an id_token") + } + + // Create a new config to persist. + newCfg := make(map[string]string) + for key, val := range p.cfg { + newCfg[key] = val + } + + // Update the refresh token if the server returned another one. + if token.RefreshToken != "" && token.RefreshToken != rt { + newCfg[cfgRefreshToken] = token.RefreshToken + } + newCfg[cfgIDToken] = idToken + + // Persist new config and if successful, update the in memory config. + if err = p.persister.Persist(newCfg); err != nil { + return "", fmt.Errorf("could not perist new tokens: %v", err) + } + p.cfg = newCfg + + return idToken, nil +} + +// tokenEndpoint uses OpenID Connect discovery to determine the OAuth2 token +// endpoint for the provider, the endpoint the client will use the refresh +// token against. +func tokenEndpoint(client *http.Client, issuer string) (string, error) { + // Well known URL for getting OpenID Connect metadata. + // + // https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig + wellKnown := strings.TrimSuffix(issuer, "/") + "/.well-known/openid-configuration" + resp, err := client.Get(wellKnown) + if err != nil { + return "", err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + if resp.StatusCode != http.StatusOK { + // Don't produce an error that's too huge (e.g. if we get HTML back for some reason). + const n = 80 + if len(body) > n { + body = append(body[:n], []byte("...")...) + } + return "", fmt.Errorf("oidc: failed to query metadata endpoint %s: %q", resp.Status, body) + } + + // Metadata object. We only care about the token_endpoint, the thing endpoint + // we'll be refreshing against. + // + // https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata + var metadata struct { + TokenURL string `json:"token_endpoint"` + } + if err := json.Unmarshal(body, &metadata); err != nil { + return "", fmt.Errorf("oidc: failed to decode provider discovery object: %v", err) + } + if metadata.TokenURL == "" { + return "", fmt.Errorf("oidc: discovery object doesn't contain a token_endpoint") + } + return metadata.TokenURL, nil +} + +func idTokenExpired(now func() time.Time, idToken string) (bool, error) { + parts := strings.Split(idToken, ".") + if len(parts) != 3 { + return false, fmt.Errorf("ID Token is not a valid JWT") + } + + payload, err := base64.RawURLEncoding.DecodeString(parts[1]) + if err != nil { + return false, err + } + var claims struct { + Expiry jsonTime `json:"exp"` + } + if err := json.Unmarshal(payload, &claims); err != nil { + return false, fmt.Errorf("parsing claims: %v", err) + } + + return now().Add(expiryDelta).Before(time.Time(claims.Expiry)), nil +} + +// jsonTime is a json.Unmarshaler that parses a unix timestamp. +// Because JSON numbers don't differentiate between ints and floats, +// we want to ensure we can parse either. +type jsonTime time.Time + +func (j *jsonTime) UnmarshalJSON(b []byte) error { + var n json.Number + if err := json.Unmarshal(b, &n); err != nil { + return err + } + var unix int64 + + if t, err := n.Int64(); err == nil { + unix = t + } else { + f, err := n.Float64() + if err != nil { + return err + } + unix = int64(f) + } + *j = jsonTime(time.Unix(unix, 0)) + return nil +} + +func (j jsonTime) MarshalJSON() ([]byte, error) { + return json.Marshal(time.Time(j).Unix()) +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc_test.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc_test.go new file mode 100644 index 000000000..eb09f9106 --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/oidc/oidc_test.go @@ -0,0 +1,138 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package oidc + +import ( + "encoding/base64" + "encoding/json" + "fmt" + "testing" + "time" +) + +func TestJSONTime(t *testing.T) { + data := `{ + "t1": 1493851263, + "t2": 1.493851263e9 + }` + + var v struct { + T1 jsonTime `json:"t1"` + T2 jsonTime `json:"t2"` + } + if err := json.Unmarshal([]byte(data), &v); err != nil { + t.Fatal(err) + } + wantT1 := time.Unix(1493851263, 0) + wantT2 := time.Unix(1493851263, 0) + gotT1 := time.Time(v.T1) + gotT2 := time.Time(v.T2) + + if !wantT1.Equal(gotT1) { + t.Errorf("t1 value: wanted %s got %s", wantT1, gotT1) + } + if !wantT2.Equal(gotT2) { + t.Errorf("t2 value: wanted %s got %s", wantT2, gotT2) + } +} + +func encodeJWT(header, payload, sig string) string { + e := func(s string) string { + return base64.RawURLEncoding.EncodeToString([]byte(s)) + } + return e(header) + "." + e(payload) + "." + e(sig) +} + +func TestExpired(t *testing.T) { + now := time.Now() + + nowFunc := func() time.Time { return now } + + tests := []struct { + name string + idToken string + wantErr bool + wantExpired bool + }{ + { + name: "valid", + idToken: encodeJWT( + "{}", + fmt.Sprintf(`{"exp":%d}`, now.Add(time.Hour).Unix()), + "blah", // signature isn't veified. + ), + }, + { + name: "expired", + idToken: encodeJWT( + "{}", + fmt.Sprintf(`{"exp":%d}`, now.Add(-time.Hour).Unix()), + "blah", // signature isn't veified. + ), + wantExpired: true, + }, + { + name: "bad exp claim", + idToken: encodeJWT( + "{}", + `{"exp":"foobar"}`, + "blah", // signature isn't veified. + ), + wantErr: true, + }, + { + name: "not an id token", + idToken: "notanidtoken", + wantErr: true, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + valid, err := idTokenExpired(nowFunc, test.idToken) + if err != nil { + if !test.wantErr { + t.Errorf("parse error: %v", err) + } + return + } + if test.wantExpired == valid { + t.Errorf("wanted expired %t, got %", test.wantExpired, !valid) + } + }) + } +} + +func TestClientCache(t *testing.T) { + cache := newClientCache() + + if _, ok := cache.getClient("issuer1", "id1"); ok { + t.Fatalf("got client before putting one in the cache") + } + + cli1 := new(oidcAuthProvider) + cli2 := new(oidcAuthProvider) + + gotcli := cache.setClient("issuer1", "id1", cli1) + if cli1 != gotcli { + t.Fatalf("set first client and got a different one") + } + + gotcli = cache.setClient("issuer1", "id1", cli2) + if cli1 != gotcli { + t.Fatalf("set a second client and didn't get the first") + } +} diff --git a/vendor/k8s.io/client-go/plugin/pkg/client/auth/plugins.go b/vendor/k8s.io/client-go/plugin/pkg/client/auth/plugins.go new file mode 100644 index 000000000..0328fbd8e --- /dev/null +++ b/vendor/k8s.io/client-go/plugin/pkg/client/auth/plugins.go @@ -0,0 +1,24 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package auth + +import ( + // Initialize all known client auth plugins. + _ "k8s.io/client-go/plugin/pkg/client/auth/azure" + _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" + _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" +) diff --git a/vendor/k8s.io/client-go/rest/BUILD b/vendor/k8s.io/client-go/rest/BUILD new file mode 100644 index 000000000..1719e5c89 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/BUILD @@ -0,0 +1,85 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "client_test.go", + "config_test.go", + "plugin_test.go", + "request_test.go", + "url_utils_test.go", + "urlbackoff_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/apis/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/rest/watch:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + "//vendor/k8s.io/client-go/util/testing:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "client.go", + "config.go", + "plugin.go", + "request.go", + "transport.go", + "url_utils.go", + "urlbackoff.go", + "versions.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/rest/watch:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//vendor/k8s.io/client-go/tools/metrics:go_default_library", + "//vendor/k8s.io/client-go/transport:go_default_library", + "//vendor/k8s.io/client-go/util/cert:go_default_library", + "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/rest/OWNERS b/vendor/k8s.io/client-go/rest/OWNERS new file mode 100755 index 000000000..8d97da007 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/OWNERS @@ -0,0 +1,24 @@ +reviewers: +- thockin +- smarterclayton +- caesarxuchao +- wojtek-t +- deads2k +- brendandburns +- liggitt +- nikhiljindal +- gmarek +- erictune +- sttts +- luxas +- dims +- errordeveloper +- hongchaodeng +- krousey +- resouer +- cjcullen +- rmmh +- lixiaobing10051267 +- asalkeld +- juanvallejo +- lojies diff --git a/vendor/k8s.io/client-go/rest/client.go b/vendor/k8s.io/client-go/rest/client.go new file mode 100644 index 000000000..524e0d8eb --- /dev/null +++ b/vendor/k8s.io/client-go/rest/client.go @@ -0,0 +1,258 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "mime" + "net/http" + "net/url" + "os" + "strconv" + "strings" + "time" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + "k8s.io/client-go/util/flowcontrol" +) + +const ( + // Environment variables: Note that the duration should be long enough that the backoff + // persists for some reasonable time (i.e. 120 seconds). The typical base might be "1". + envBackoffBase = "KUBE_CLIENT_BACKOFF_BASE" + envBackoffDuration = "KUBE_CLIENT_BACKOFF_DURATION" +) + +// Interface captures the set of operations for generically interacting with Kubernetes REST apis. +type Interface interface { + GetRateLimiter() flowcontrol.RateLimiter + Verb(verb string) *Request + Post() *Request + Put() *Request + Patch(pt types.PatchType) *Request + Get() *Request + Delete() *Request + APIVersion() schema.GroupVersion +} + +// RESTClient imposes common Kubernetes API conventions on a set of resource paths. +// The baseURL is expected to point to an HTTP or HTTPS path that is the parent +// of one or more resources. The server should return a decodable API resource +// object, or an api.Status object which contains information about the reason for +// any failure. +// +// Most consumers should use client.New() to get a Kubernetes API client. +type RESTClient struct { + // base is the root URL for all invocations of the client + base *url.URL + // versionedAPIPath is a path segment connecting the base URL to the resource root + versionedAPIPath string + + // contentConfig is the information used to communicate with the server. + contentConfig ContentConfig + + // serializers contain all serializers for underlying content type. + serializers Serializers + + // creates BackoffManager that is passed to requests. + createBackoffMgr func() BackoffManager + + // TODO extract this into a wrapper interface via the RESTClient interface in kubectl. + Throttle flowcontrol.RateLimiter + + // Set specific behavior of the client. If not set http.DefaultClient will be used. + Client *http.Client +} + +type Serializers struct { + Encoder runtime.Encoder + Decoder runtime.Decoder + StreamingSerializer runtime.Serializer + Framer runtime.Framer + RenegotiatedDecoder func(contentType string, params map[string]string) (runtime.Decoder, error) +} + +// NewRESTClient creates a new RESTClient. This client performs generic REST functions +// such as Get, Put, Post, and Delete on specified paths. Codec controls encoding and +// decoding of responses from the server. +func NewRESTClient(baseURL *url.URL, versionedAPIPath string, config ContentConfig, maxQPS float32, maxBurst int, rateLimiter flowcontrol.RateLimiter, client *http.Client) (*RESTClient, error) { + base := *baseURL + if !strings.HasSuffix(base.Path, "/") { + base.Path += "/" + } + base.RawQuery = "" + base.Fragment = "" + + if config.GroupVersion == nil { + config.GroupVersion = &schema.GroupVersion{} + } + if len(config.ContentType) == 0 { + config.ContentType = "application/json" + } + serializers, err := createSerializers(config) + if err != nil { + return nil, err + } + + var throttle flowcontrol.RateLimiter + if maxQPS > 0 && rateLimiter == nil { + throttle = flowcontrol.NewTokenBucketRateLimiter(maxQPS, maxBurst) + } else if rateLimiter != nil { + throttle = rateLimiter + } + return &RESTClient{ + base: &base, + versionedAPIPath: versionedAPIPath, + contentConfig: config, + serializers: *serializers, + createBackoffMgr: readExpBackoffConfig, + Throttle: throttle, + Client: client, + }, nil +} + +// GetRateLimiter returns rate limier for a given client, or nil if it's called on a nil client +func (c *RESTClient) GetRateLimiter() flowcontrol.RateLimiter { + if c == nil { + return nil + } + return c.Throttle +} + +// readExpBackoffConfig handles the internal logic of determining what the +// backoff policy is. By default if no information is available, NoBackoff. +// TODO Generalize this see #17727 . +func readExpBackoffConfig() BackoffManager { + backoffBase := os.Getenv(envBackoffBase) + backoffDuration := os.Getenv(envBackoffDuration) + + backoffBaseInt, errBase := strconv.ParseInt(backoffBase, 10, 64) + backoffDurationInt, errDuration := strconv.ParseInt(backoffDuration, 10, 64) + if errBase != nil || errDuration != nil { + return &NoBackoff{} + } + return &URLBackoff{ + Backoff: flowcontrol.NewBackOff( + time.Duration(backoffBaseInt)*time.Second, + time.Duration(backoffDurationInt)*time.Second)} +} + +// createSerializers creates all necessary serializers for given contentType. +// TODO: the negotiated serializer passed to this method should probably return +// serializers that control decoding and versioning without this package +// being aware of the types. Depends on whether RESTClient must deal with +// generic infrastructure. +func createSerializers(config ContentConfig) (*Serializers, error) { + mediaTypes := config.NegotiatedSerializer.SupportedMediaTypes() + contentType := config.ContentType + mediaType, _, err := mime.ParseMediaType(contentType) + if err != nil { + return nil, fmt.Errorf("the content type specified in the client configuration is not recognized: %v", err) + } + info, ok := runtime.SerializerInfoForMediaType(mediaTypes, mediaType) + if !ok { + if len(contentType) != 0 || len(mediaTypes) == 0 { + return nil, fmt.Errorf("no serializers registered for %s", contentType) + } + info = mediaTypes[0] + } + + internalGV := schema.GroupVersions{ + { + Group: config.GroupVersion.Group, + Version: runtime.APIVersionInternal, + }, + // always include the legacy group as a decoding target to handle non-error `Status` return types + { + Group: "", + Version: runtime.APIVersionInternal, + }, + } + + s := &Serializers{ + Encoder: config.NegotiatedSerializer.EncoderForVersion(info.Serializer, *config.GroupVersion), + Decoder: config.NegotiatedSerializer.DecoderToVersion(info.Serializer, internalGV), + + RenegotiatedDecoder: func(contentType string, params map[string]string) (runtime.Decoder, error) { + info, ok := runtime.SerializerInfoForMediaType(mediaTypes, contentType) + if !ok { + return nil, fmt.Errorf("serializer for %s not registered", contentType) + } + return config.NegotiatedSerializer.DecoderToVersion(info.Serializer, internalGV), nil + }, + } + if info.StreamSerializer != nil { + s.StreamingSerializer = info.StreamSerializer.Serializer + s.Framer = info.StreamSerializer.Framer + } + + return s, nil +} + +// Verb begins a request with a verb (GET, POST, PUT, DELETE). +// +// Example usage of RESTClient's request building interface: +// c, err := NewRESTClient(...) +// if err != nil { ... } +// resp, err := c.Verb("GET"). +// Path("pods"). +// SelectorParam("labels", "area=staging"). +// Timeout(10*time.Second). +// Do() +// if err != nil { ... } +// list, ok := resp.(*api.PodList) +// +func (c *RESTClient) Verb(verb string) *Request { + backoff := c.createBackoffMgr() + + if c.Client == nil { + return NewRequest(nil, verb, c.base, c.versionedAPIPath, c.contentConfig, c.serializers, backoff, c.Throttle) + } + return NewRequest(c.Client, verb, c.base, c.versionedAPIPath, c.contentConfig, c.serializers, backoff, c.Throttle) +} + +// Post begins a POST request. Short for c.Verb("POST"). +func (c *RESTClient) Post() *Request { + return c.Verb("POST") +} + +// Put begins a PUT request. Short for c.Verb("PUT"). +func (c *RESTClient) Put() *Request { + return c.Verb("PUT") +} + +// Patch begins a PATCH request. Short for c.Verb("Patch"). +func (c *RESTClient) Patch(pt types.PatchType) *Request { + return c.Verb("PATCH").SetHeader("Content-Type", string(pt)) +} + +// Get begins a GET request. Short for c.Verb("GET"). +func (c *RESTClient) Get() *Request { + return c.Verb("GET") +} + +// Delete begins a DELETE request. Short for c.Verb("DELETE"). +func (c *RESTClient) Delete() *Request { + return c.Verb("DELETE") +} + +// APIVersion returns the APIVersion this RESTClient is expected to use. +func (c *RESTClient) APIVersion() schema.GroupVersion { + return *c.contentConfig.GroupVersion +} diff --git a/vendor/k8s.io/client-go/rest/client_test.go b/vendor/k8s.io/client-go/rest/client_test.go new file mode 100644 index 000000000..71707d43a --- /dev/null +++ b/vendor/k8s.io/client-go/rest/client_test.go @@ -0,0 +1,343 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "net/http" + "net/http/httptest" + "net/url" + "os" + "reflect" + "testing" + "time" + + "fmt" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" + utiltesting "k8s.io/client-go/util/testing" +) + +type TestParam struct { + actualError error + expectingError bool + actualCreated bool + expCreated bool + expStatus *metav1.Status + testBody bool + testBodyErrorIsNotNil bool +} + +// TestSerializer makes sure that you're always able to decode metav1.Status +func TestSerializer(t *testing.T) { + gv := v1beta1.SchemeGroupVersion + contentConfig := ContentConfig{ + ContentType: "application/json", + GroupVersion: &gv, + NegotiatedSerializer: serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}, + } + + serializer, err := createSerializers(contentConfig) + if err != nil { + t.Fatal(err) + } + // bytes based on actual return from API server when encoding an "unversioned" object + obj, err := runtime.Decode(serializer.Decoder, []byte(`{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Success"}`)) + t.Log(obj) + if err != nil { + t.Fatal(err) + } +} + +func TestDoRequestSuccess(t *testing.T) { + testServer, fakeHandler, status := testServerEnv(t, 200) + defer testServer.Close() + + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + body, err := c.Get().Prefix("test").Do().Raw() + + testParam := TestParam{actualError: err, expectingError: false, expCreated: true, + expStatus: status, testBody: true, testBodyErrorIsNotNil: false} + validate(testParam, t, body, fakeHandler) +} + +func TestDoRequestFailed(t *testing.T) { + status := &metav1.Status{ + Code: http.StatusNotFound, + Status: metav1.StatusFailure, + Reason: metav1.StatusReasonNotFound, + Message: " \"\" not found", + Details: &metav1.StatusDetails{}, + } + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), status) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 404, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + err = c.Get().Do().Error() + if err == nil { + t.Errorf("unexpected non-error") + } + ss, ok := err.(errors.APIStatus) + if !ok { + t.Errorf("unexpected error type %v", err) + } + actual := ss.Status() + if !reflect.DeepEqual(status, &actual) { + t.Errorf("Unexpected mis-match: %s", diff.ObjectReflectDiff(status, &actual)) + } +} + +func TestDoRawRequestFailed(t *testing.T) { + status := &metav1.Status{ + Code: http.StatusNotFound, + Status: metav1.StatusFailure, + Reason: metav1.StatusReasonNotFound, + Message: "the server could not find the requested resource", + Details: &metav1.StatusDetails{ + Causes: []metav1.StatusCause{ + {Type: metav1.CauseTypeUnexpectedServerResponse, Message: "unknown"}, + }, + }, + } + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), status) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 404, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + body, err := c.Get().Do().Raw() + + if err == nil || body == nil { + t.Errorf("unexpected non-error: %#v", body) + } + ss, ok := err.(errors.APIStatus) + if !ok { + t.Errorf("unexpected error type %v", err) + } + actual := ss.Status() + if !reflect.DeepEqual(status, &actual) { + t.Errorf("Unexpected mis-match: %s", diff.ObjectReflectDiff(status, &actual)) + } +} + +func TestDoRequestCreated(t *testing.T) { + testServer, fakeHandler, status := testServerEnv(t, 201) + defer testServer.Close() + + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + created := false + body, err := c.Get().Prefix("test").Do().WasCreated(&created).Raw() + + testParam := TestParam{actualError: err, expectingError: false, expCreated: true, + expStatus: status, testBody: false} + validate(testParam, t, body, fakeHandler) +} + +func TestDoRequestNotCreated(t *testing.T) { + testServer, fakeHandler, expectedStatus := testServerEnv(t, 202) + defer testServer.Close() + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + created := false + body, err := c.Get().Prefix("test").Do().WasCreated(&created).Raw() + testParam := TestParam{actualError: err, expectingError: false, expCreated: false, + expStatus: expectedStatus, testBody: false} + validate(testParam, t, body, fakeHandler) +} + +func TestDoRequestAcceptedNoContentReturned(t *testing.T) { + testServer, fakeHandler, _ := testServerEnv(t, 204) + defer testServer.Close() + + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + created := false + body, err := c.Get().Prefix("test").Do().WasCreated(&created).Raw() + testParam := TestParam{actualError: err, expectingError: false, expCreated: false, + testBody: false} + validate(testParam, t, body, fakeHandler) +} + +func TestBadRequest(t *testing.T) { + testServer, fakeHandler, _ := testServerEnv(t, 400) + defer testServer.Close() + c, err := restClient(testServer) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + created := false + body, err := c.Get().Prefix("test").Do().WasCreated(&created).Raw() + testParam := TestParam{actualError: err, expectingError: true, expCreated: false, + testBody: true} + validate(testParam, t, body, fakeHandler) +} + +func validate(testParam TestParam, t *testing.T, body []byte, fakeHandler *utiltesting.FakeHandler) { + switch { + case testParam.expectingError && testParam.actualError == nil: + t.Errorf("Expected error") + case !testParam.expectingError && testParam.actualError != nil: + t.Error(testParam.actualError) + } + if !testParam.expCreated { + if testParam.actualCreated { + t.Errorf("Expected object not to be created") + } + } + statusOut, err := runtime.Decode(scheme.Codecs.UniversalDeserializer(), body) + if testParam.testBody { + if testParam.testBodyErrorIsNotNil && err == nil { + t.Errorf("Expected Error") + } + if !testParam.testBodyErrorIsNotNil && err != nil { + t.Errorf("Unexpected Error: %v", err) + } + } + + if testParam.expStatus != nil { + if !reflect.DeepEqual(testParam.expStatus, statusOut) { + t.Errorf("Unexpected mis-match. Expected %#v. Saw %#v", testParam.expStatus, statusOut) + } + } + fakeHandler.ValidateRequest(t, "/"+v1.SchemeGroupVersion.String()+"/test", "GET", nil) + +} + +func TestHttpMethods(t *testing.T) { + testServer, _, _ := testServerEnv(t, 200) + defer testServer.Close() + c, _ := restClient(testServer) + + request := c.Post() + if request == nil { + t.Errorf("Post : Object returned should not be nil") + } + + request = c.Get() + if request == nil { + t.Errorf("Get: Object returned should not be nil") + } + + request = c.Put() + if request == nil { + t.Errorf("Put : Object returned should not be nil") + } + + request = c.Delete() + if request == nil { + t.Errorf("Delete : Object returned should not be nil") + } + + request = c.Patch(types.JSONPatchType) + if request == nil { + t.Errorf("Patch : Object returned should not be nil") + } +} + +func TestCreateBackoffManager(t *testing.T) { + + theUrl, _ := url.Parse("http://localhost") + + // 1 second base backoff + duration of 2 seconds -> exponential backoff for requests. + os.Setenv(envBackoffBase, "1") + os.Setenv(envBackoffDuration, "2") + backoff := readExpBackoffConfig() + backoff.UpdateBackoff(theUrl, nil, 500) + backoff.UpdateBackoff(theUrl, nil, 500) + if backoff.CalculateBackoff(theUrl)/time.Second != 2 { + t.Errorf("Backoff env not working.") + } + + // 0 duration -> no backoff. + os.Setenv(envBackoffBase, "1") + os.Setenv(envBackoffDuration, "0") + backoff.UpdateBackoff(theUrl, nil, 500) + backoff.UpdateBackoff(theUrl, nil, 500) + backoff = readExpBackoffConfig() + if backoff.CalculateBackoff(theUrl)/time.Second != 0 { + t.Errorf("Zero backoff duration, but backoff still occuring.") + } + + // No env -> No backoff. + os.Setenv(envBackoffBase, "") + os.Setenv(envBackoffDuration, "") + backoff = readExpBackoffConfig() + backoff.UpdateBackoff(theUrl, nil, 500) + backoff.UpdateBackoff(theUrl, nil, 500) + if backoff.CalculateBackoff(theUrl)/time.Second != 0 { + t.Errorf("Backoff should have been 0.") + } + +} + +func testServerEnv(t *testing.T, statusCode int) (*httptest.Server, *utiltesting.FakeHandler, *metav1.Status) { + status := &metav1.Status{TypeMeta: metav1.TypeMeta{APIVersion: "v1", Kind: "Status"}, Status: fmt.Sprintf("%s", metav1.StatusSuccess)} + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), status) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: statusCode, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + return testServer, &fakeHandler, status +} + +func restClient(testServer *httptest.Server) (*RESTClient, error) { + c, err := RESTClientFor(&Config{ + Host: testServer.URL, + ContentConfig: ContentConfig{ + GroupVersion: &v1.SchemeGroupVersion, + NegotiatedSerializer: serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}, + }, + Username: "user", + Password: "pass", + }) + return c, err +} diff --git a/vendor/k8s.io/client-go/rest/config.go b/vendor/k8s.io/client-go/rest/config.go new file mode 100644 index 000000000..b45114865 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/config.go @@ -0,0 +1,416 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "io/ioutil" + "net" + "net/http" + "os" + "path/filepath" + gruntime "runtime" + "strings" + "time" + + "github.com/golang/glog" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/version" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" + certutil "k8s.io/client-go/util/cert" + "k8s.io/client-go/util/flowcontrol" +) + +const ( + DefaultQPS float32 = 5.0 + DefaultBurst int = 10 +) + +// Config holds the common attributes that can be passed to a Kubernetes client on +// initialization. +type Config struct { + // Host must be a host string, a host:port pair, or a URL to the base of the apiserver. + // If a URL is given then the (optional) Path of that URL represents a prefix that must + // be appended to all request URIs used to access the apiserver. This allows a frontend + // proxy to easily relocate all of the apiserver endpoints. + Host string + // APIPath is a sub-path that points to an API root. + APIPath string + // Prefix is the sub path of the server. If not specified, the client will set + // a default value. Use "/" to indicate the server root should be used + Prefix string + + // ContentConfig contains settings that affect how objects are transformed when + // sent to the server. + ContentConfig + + // Server requires Basic authentication + Username string + Password string + + // Server requires Bearer authentication. This client will not attempt to use + // refresh tokens for an OAuth2 flow. + // TODO: demonstrate an OAuth2 compatible client. + BearerToken string + + // Impersonate is the configuration that RESTClient will use for impersonation. + Impersonate ImpersonationConfig + + // Server requires plugin-specified authentication. + AuthProvider *clientcmdapi.AuthProviderConfig + + // Callback to persist config for AuthProvider. + AuthConfigPersister AuthProviderConfigPersister + + // TLSClientConfig contains settings to enable transport layer security + TLSClientConfig + + // UserAgent is an optional field that specifies the caller of this request. + UserAgent string + + // Transport may be used for custom HTTP behavior. This attribute may not + // be specified with the TLS client certificate options. Use WrapTransport + // for most client level operations. + Transport http.RoundTripper + // WrapTransport will be invoked for custom HTTP behavior after the underlying + // transport is initialized (either the transport created from TLSClientConfig, + // Transport, or http.DefaultTransport). The config may layer other RoundTrippers + // on top of the returned RoundTripper. + WrapTransport func(rt http.RoundTripper) http.RoundTripper + + // QPS indicates the maximum QPS to the master from this client. + // If it's zero, the created RESTClient will use DefaultQPS: 5 + QPS float32 + + // Maximum burst for throttle. + // If it's zero, the created RESTClient will use DefaultBurst: 10. + Burst int + + // Rate limiter for limiting connections to the master from this client. If present overwrites QPS/Burst + RateLimiter flowcontrol.RateLimiter + + // The maximum length of time to wait before giving up on a server request. A value of zero means no timeout. + Timeout time.Duration + + // Version forces a specific version to be used (if registered) + // Do we need this? + // Version string +} + +// ImpersonationConfig has all the available impersonation options +type ImpersonationConfig struct { + // UserName is the username to impersonate on each request. + UserName string + // Groups are the groups to impersonate on each request. + Groups []string + // Extra is a free-form field which can be used to link some authentication information + // to authorization information. This field allows you to impersonate it. + Extra map[string][]string +} + +// TLSClientConfig contains settings to enable transport layer security +type TLSClientConfig struct { + // Server should be accessed without verifying the TLS certificate. For testing only. + Insecure bool + // ServerName is passed to the server for SNI and is used in the client to check server + // ceritificates against. If ServerName is empty, the hostname used to contact the + // server is used. + ServerName string + + // Server requires TLS client certificate authentication + CertFile string + // Server requires TLS client certificate authentication + KeyFile string + // Trusted root certificates for server + CAFile string + + // CertData holds PEM-encoded bytes (typically read from a client certificate file). + // CertData takes precedence over CertFile + CertData []byte + // KeyData holds PEM-encoded bytes (typically read from a client certificate key file). + // KeyData takes precedence over KeyFile + KeyData []byte + // CAData holds PEM-encoded bytes (typically read from a root certificates bundle). + // CAData takes precedence over CAFile + CAData []byte +} + +type ContentConfig struct { + // AcceptContentTypes specifies the types the client will accept and is optional. + // If not set, ContentType will be used to define the Accept header + AcceptContentTypes string + // ContentType specifies the wire format used to communicate with the server. + // This value will be set as the Accept header on requests made to the server, and + // as the default content type on any object sent to the server. If not set, + // "application/json" is used. + ContentType string + // GroupVersion is the API version to talk to. Must be provided when initializing + // a RESTClient directly. When initializing a Client, will be set with the default + // code version. + GroupVersion *schema.GroupVersion + // NegotiatedSerializer is used for obtaining encoders and decoders for multiple + // supported media types. + NegotiatedSerializer runtime.NegotiatedSerializer +} + +// RESTClientFor returns a RESTClient that satisfies the requested attributes on a client Config +// object. Note that a RESTClient may require fields that are optional when initializing a Client. +// A RESTClient created by this method is generic - it expects to operate on an API that follows +// the Kubernetes conventions, but may not be the Kubernetes API. +func RESTClientFor(config *Config) (*RESTClient, error) { + if config.GroupVersion == nil { + return nil, fmt.Errorf("GroupVersion is required when initializing a RESTClient") + } + if config.NegotiatedSerializer == nil { + return nil, fmt.Errorf("NegotiatedSerializer is required when initializing a RESTClient") + } + qps := config.QPS + if config.QPS == 0.0 { + qps = DefaultQPS + } + burst := config.Burst + if config.Burst == 0 { + burst = DefaultBurst + } + + baseURL, versionedAPIPath, err := defaultServerUrlFor(config) + if err != nil { + return nil, err + } + + transport, err := TransportFor(config) + if err != nil { + return nil, err + } + + var httpClient *http.Client + if transport != http.DefaultTransport { + httpClient = &http.Client{Transport: transport} + if config.Timeout > 0 { + httpClient.Timeout = config.Timeout + } + } + + return NewRESTClient(baseURL, versionedAPIPath, config.ContentConfig, qps, burst, config.RateLimiter, httpClient) +} + +// UnversionedRESTClientFor is the same as RESTClientFor, except that it allows +// the config.Version to be empty. +func UnversionedRESTClientFor(config *Config) (*RESTClient, error) { + if config.NegotiatedSerializer == nil { + return nil, fmt.Errorf("NeogitatedSerializer is required when initializing a RESTClient") + } + + baseURL, versionedAPIPath, err := defaultServerUrlFor(config) + if err != nil { + return nil, err + } + + transport, err := TransportFor(config) + if err != nil { + return nil, err + } + + var httpClient *http.Client + if transport != http.DefaultTransport { + httpClient = &http.Client{Transport: transport} + if config.Timeout > 0 { + httpClient.Timeout = config.Timeout + } + } + + versionConfig := config.ContentConfig + if versionConfig.GroupVersion == nil { + v := metav1.SchemeGroupVersion + versionConfig.GroupVersion = &v + } + + return NewRESTClient(baseURL, versionedAPIPath, versionConfig, config.QPS, config.Burst, config.RateLimiter, httpClient) +} + +// SetKubernetesDefaults sets default values on the provided client config for accessing the +// Kubernetes API or returns an error if any of the defaults are impossible or invalid. +func SetKubernetesDefaults(config *Config) error { + if len(config.UserAgent) == 0 { + config.UserAgent = DefaultKubernetesUserAgent() + } + return nil +} + +// adjustCommit returns sufficient significant figures of the commit's git hash. +func adjustCommit(c string) string { + if len(c) == 0 { + return "unknown" + } + if len(c) > 7 { + return c[:7] + } + return c +} + +// adjustVersion strips "alpha", "beta", etc. from version in form +// major.minor.patch-[alpha|beta|etc]. +func adjustVersion(v string) string { + if len(v) == 0 { + return "unknown" + } + seg := strings.SplitN(v, "-", 2) + return seg[0] +} + +// adjustCommand returns the last component of the +// OS-specific command path for use in User-Agent. +func adjustCommand(p string) string { + // Unlikely, but better than returning "". + if len(p) == 0 { + return "unknown" + } + return filepath.Base(p) +} + +// buildUserAgent builds a User-Agent string from given args. +func buildUserAgent(command, version, os, arch, commit string) string { + return fmt.Sprintf( + "%s/%s (%s/%s) kubernetes/%s", command, version, os, arch, commit) +} + +// DefaultKubernetesUserAgent returns a User-Agent string built from static global vars. +func DefaultKubernetesUserAgent() string { + return buildUserAgent( + adjustCommand(os.Args[0]), + adjustVersion(version.Get().GitVersion), + gruntime.GOOS, + gruntime.GOARCH, + adjustCommit(version.Get().GitCommit)) +} + +// InClusterConfig returns a config object which uses the service account +// kubernetes gives to pods. It's intended for clients that expect to be +// running inside a pod running on kubernetes. It will return an error if +// called from a process not running in a kubernetes environment. +func InClusterConfig() (*Config, error) { + host, port := os.Getenv("KUBERNETES_SERVICE_HOST"), os.Getenv("KUBERNETES_SERVICE_PORT") + if len(host) == 0 || len(port) == 0 { + return nil, fmt.Errorf("unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined") + } + + token, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/" + v1.ServiceAccountTokenKey) + if err != nil { + return nil, err + } + tlsClientConfig := TLSClientConfig{} + rootCAFile := "/var/run/secrets/kubernetes.io/serviceaccount/" + v1.ServiceAccountRootCAKey + if _, err := certutil.NewPool(rootCAFile); err != nil { + glog.Errorf("Expected to load root CA config from %s, but got err: %v", rootCAFile, err) + } else { + tlsClientConfig.CAFile = rootCAFile + } + + return &Config{ + // TODO: switch to using cluster DNS. + Host: "https://" + net.JoinHostPort(host, port), + BearerToken: string(token), + TLSClientConfig: tlsClientConfig, + }, nil +} + +// IsConfigTransportTLS returns true if and only if the provided +// config will result in a protected connection to the server when it +// is passed to restclient.RESTClientFor(). Use to determine when to +// send credentials over the wire. +// +// Note: the Insecure flag is ignored when testing for this value, so MITM attacks are +// still possible. +func IsConfigTransportTLS(config Config) bool { + baseURL, _, err := defaultServerUrlFor(&config) + if err != nil { + return false + } + return baseURL.Scheme == "https" +} + +// LoadTLSFiles copies the data from the CertFile, KeyFile, and CAFile fields into the CertData, +// KeyData, and CAFile fields, or returns an error. If no error is returned, all three fields are +// either populated or were empty to start. +func LoadTLSFiles(c *Config) error { + var err error + c.CAData, err = dataFromSliceOrFile(c.CAData, c.CAFile) + if err != nil { + return err + } + + c.CertData, err = dataFromSliceOrFile(c.CertData, c.CertFile) + if err != nil { + return err + } + + c.KeyData, err = dataFromSliceOrFile(c.KeyData, c.KeyFile) + if err != nil { + return err + } + return nil +} + +// dataFromSliceOrFile returns data from the slice (if non-empty), or from the file, +// or an error if an error occurred reading the file +func dataFromSliceOrFile(data []byte, file string) ([]byte, error) { + if len(data) > 0 { + return data, nil + } + if len(file) > 0 { + fileData, err := ioutil.ReadFile(file) + if err != nil { + return []byte{}, err + } + return fileData, nil + } + return nil, nil +} + +func AddUserAgent(config *Config, userAgent string) *Config { + fullUserAgent := DefaultKubernetesUserAgent() + "/" + userAgent + config.UserAgent = fullUserAgent + return config +} + +// AnonymousClientConfig returns a copy of the given config with all user credentials (cert/key, bearer token, and username/password) removed +func AnonymousClientConfig(config *Config) *Config { + // copy only known safe fields + return &Config{ + Host: config.Host, + APIPath: config.APIPath, + Prefix: config.Prefix, + ContentConfig: config.ContentConfig, + TLSClientConfig: TLSClientConfig{ + Insecure: config.Insecure, + ServerName: config.ServerName, + CAFile: config.TLSClientConfig.CAFile, + CAData: config.TLSClientConfig.CAData, + }, + RateLimiter: config.RateLimiter, + UserAgent: config.UserAgent, + Transport: config.Transport, + WrapTransport: config.WrapTransport, + QPS: config.QPS, + Burst: config.Burst, + Timeout: config.Timeout, + } +} diff --git a/vendor/k8s.io/client-go/rest/config_test.go b/vendor/k8s.io/client-go/rest/config_test.go new file mode 100644 index 000000000..784a1ed83 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/config_test.go @@ -0,0 +1,272 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "io" + "net/http" + "path/filepath" + "reflect" + "strings" + "testing" + + fuzz "github.com/google/gofuzz" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" + "k8s.io/client-go/util/flowcontrol" + + "github.com/stretchr/testify/assert" +) + +func TestIsConfigTransportTLS(t *testing.T) { + testCases := []struct { + Config *Config + TransportTLS bool + }{ + { + Config: &Config{}, + TransportTLS: false, + }, + { + Config: &Config{ + Host: "https://localhost", + }, + TransportTLS: true, + }, + { + Config: &Config{ + Host: "localhost", + TLSClientConfig: TLSClientConfig{ + CertFile: "foo", + }, + }, + TransportTLS: true, + }, + { + Config: &Config{ + Host: "///:://localhost", + TLSClientConfig: TLSClientConfig{ + CertFile: "foo", + }, + }, + TransportTLS: false, + }, + { + Config: &Config{ + Host: "1.2.3.4:567", + TLSClientConfig: TLSClientConfig{ + Insecure: true, + }, + }, + TransportTLS: true, + }, + } + for _, testCase := range testCases { + if err := SetKubernetesDefaults(testCase.Config); err != nil { + t.Errorf("setting defaults failed for %#v: %v", testCase.Config, err) + continue + } + useTLS := IsConfigTransportTLS(*testCase.Config) + if testCase.TransportTLS != useTLS { + t.Errorf("expected %v for %#v", testCase.TransportTLS, testCase.Config) + } + } +} + +func TestSetKubernetesDefaultsUserAgent(t *testing.T) { + config := &Config{} + if err := SetKubernetesDefaults(config); err != nil { + t.Errorf("unexpected error: %v", err) + } + if !strings.Contains(config.UserAgent, "kubernetes/") { + t.Errorf("no user agent set: %#v", config) + } +} + +func TestAdjustVersion(t *testing.T) { + assert := assert.New(t) + assert.Equal("1.2.3", adjustVersion("1.2.3-alpha4")) + assert.Equal("1.2.3", adjustVersion("1.2.3-alpha")) + assert.Equal("1.2.3", adjustVersion("1.2.3")) + assert.Equal("unknown", adjustVersion("")) +} + +func TestAdjustCommit(t *testing.T) { + assert := assert.New(t) + assert.Equal("1234567", adjustCommit("1234567890")) + assert.Equal("123456", adjustCommit("123456")) + assert.Equal("unknown", adjustCommit("")) +} + +func TestAdjustCommand(t *testing.T) { + assert := assert.New(t) + assert.Equal("beans", adjustCommand(filepath.Join("home", "bob", "Downloads", "beans"))) + assert.Equal("beans", adjustCommand(filepath.Join(".", "beans"))) + assert.Equal("beans", adjustCommand("beans")) + assert.Equal("unknown", adjustCommand("")) +} + +func TestBuildUserAgent(t *testing.T) { + assert.New(t).Equal( + "lynx/nicest (beos/itanium) kubernetes/baaaaaaaaad", + buildUserAgent( + "lynx", "nicest", + "beos", "itanium", "baaaaaaaaad")) +} + +// This function untestable since it doesn't accept arguments. +func TestDefaultKubernetesUserAgent(t *testing.T) { + assert.New(t).Contains(DefaultKubernetesUserAgent(), "kubernetes") +} + +func TestRESTClientRequires(t *testing.T) { + if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{NegotiatedSerializer: scheme.Codecs}}); err == nil { + t.Errorf("unexpected non-error") + } + if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: &v1.SchemeGroupVersion}}); err == nil { + t.Errorf("unexpected non-error") + } + if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: &v1.SchemeGroupVersion, NegotiatedSerializer: scheme.Codecs}}); err != nil { + t.Errorf("unexpected error: %v", err) + } +} + +type fakeLimiter struct { + FakeSaturation float64 + FakeQPS float32 +} + +func (t *fakeLimiter) TryAccept() bool { + return true +} + +func (t *fakeLimiter) Saturation() float64 { + return t.FakeSaturation +} + +func (t *fakeLimiter) QPS() float32 { + return t.FakeQPS +} + +func (t *fakeLimiter) Stop() {} + +func (t *fakeLimiter) Accept() {} + +type fakeCodec struct{} + +func (c *fakeCodec) Decode([]byte, *schema.GroupVersionKind, runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + return nil, nil, nil +} + +func (c *fakeCodec) Encode(obj runtime.Object, stream io.Writer) error { + return nil +} + +type fakeRoundTripper struct{} + +func (r *fakeRoundTripper) RoundTrip(*http.Request) (*http.Response, error) { + return nil, nil +} + +var fakeWrapperFunc = func(http.RoundTripper) http.RoundTripper { + return &fakeRoundTripper{} +} + +type fakeNegotiatedSerializer struct{} + +func (n *fakeNegotiatedSerializer) SupportedMediaTypes() []runtime.SerializerInfo { + return nil +} + +func (n *fakeNegotiatedSerializer) EncoderForVersion(serializer runtime.Encoder, gv runtime.GroupVersioner) runtime.Encoder { + return &fakeCodec{} +} + +func (n *fakeNegotiatedSerializer) DecoderToVersion(serializer runtime.Decoder, gv runtime.GroupVersioner) runtime.Decoder { + return &fakeCodec{} +} + +func TestAnonymousConfig(t *testing.T) { + f := fuzz.New().NilChance(0.0).NumElements(1, 1) + f.Funcs( + func(r *runtime.Codec, f fuzz.Continue) { + codec := &fakeCodec{} + f.Fuzz(codec) + *r = codec + }, + func(r *http.RoundTripper, f fuzz.Continue) { + roundTripper := &fakeRoundTripper{} + f.Fuzz(roundTripper) + *r = roundTripper + }, + func(fn *func(http.RoundTripper) http.RoundTripper, f fuzz.Continue) { + *fn = fakeWrapperFunc + }, + func(r *runtime.NegotiatedSerializer, f fuzz.Continue) { + serializer := &fakeNegotiatedSerializer{} + f.Fuzz(serializer) + *r = serializer + }, + func(r *flowcontrol.RateLimiter, f fuzz.Continue) { + limiter := &fakeLimiter{} + f.Fuzz(limiter) + *r = limiter + }, + // Authentication does not require fuzzer + func(r *AuthProviderConfigPersister, f fuzz.Continue) {}, + func(r *clientcmdapi.AuthProviderConfig, f fuzz.Continue) { + r.Config = map[string]string{} + }, + ) + for i := 0; i < 20; i++ { + original := &Config{} + f.Fuzz(original) + actual := AnonymousClientConfig(original) + expected := *original + + // this is the list of known security related fields, add to this list if a new field + // is added to Config, update AnonymousClientConfig to preserve the field otherwise. + expected.Impersonate = ImpersonationConfig{} + expected.BearerToken = "" + expected.Username = "" + expected.Password = "" + expected.AuthProvider = nil + expected.AuthConfigPersister = nil + expected.TLSClientConfig.CertData = nil + expected.TLSClientConfig.CertFile = "" + expected.TLSClientConfig.KeyData = nil + expected.TLSClientConfig.KeyFile = "" + + // The DeepEqual cannot handle the func comparison, so we just verify if the + // function return the expected object. + if actual.WrapTransport == nil || !reflect.DeepEqual(expected.WrapTransport(nil), &fakeRoundTripper{}) { + t.Fatalf("AnonymousClientConfig dropped the WrapTransport field") + } else { + actual.WrapTransport = nil + expected.WrapTransport = nil + } + + if !reflect.DeepEqual(*actual, expected) { + t.Fatalf("AnonymousClientConfig dropped unexpected fields, identify whether they are security related or not: %s", diff.ObjectGoPrintDiff(expected, actual)) + } + } +} diff --git a/vendor/k8s.io/client-go/rest/fake/BUILD b/vendor/k8s.io/client-go/rest/fake/BUILD new file mode 100644 index 000000000..67062c71f --- /dev/null +++ b/vendor/k8s.io/client-go/rest/fake/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["fake.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/util/flowcontrol:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/rest/fake/fake.go b/vendor/k8s.io/client-go/rest/fake/fake.go new file mode 100644 index 000000000..2e1bc55a9 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/fake/fake.go @@ -0,0 +1,126 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This is made a separate package and should only be imported by tests, because +// it imports testapi +package fake + +import ( + "net/http" + "net/url" + + "k8s.io/apimachinery/pkg/apimachinery/registered" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/util/flowcontrol" +) + +func CreateHTTPClient(roundTripper func(*http.Request) (*http.Response, error)) *http.Client { + return &http.Client{ + Transport: roundTripperFunc(roundTripper), + } +} + +type roundTripperFunc func(*http.Request) (*http.Response, error) + +func (f roundTripperFunc) RoundTrip(req *http.Request) (*http.Response, error) { + return f(req) +} + +// RESTClient provides a fake RESTClient interface. +type RESTClient struct { + Client *http.Client + NegotiatedSerializer runtime.NegotiatedSerializer + GroupName string + APIRegistry *registered.APIRegistrationManager + VersionedAPIPath string + + Req *http.Request + Resp *http.Response + Err error +} + +func (c *RESTClient) Get() *restclient.Request { + return c.request("GET") +} + +func (c *RESTClient) Put() *restclient.Request { + return c.request("PUT") +} + +func (c *RESTClient) Patch(pt types.PatchType) *restclient.Request { + return c.request("PATCH").SetHeader("Content-Type", string(pt)) +} + +func (c *RESTClient) Post() *restclient.Request { + return c.request("POST") +} + +func (c *RESTClient) Delete() *restclient.Request { + return c.request("DELETE") +} + +func (c *RESTClient) Verb(verb string) *restclient.Request { + return c.request(verb) +} + +func (c *RESTClient) APIVersion() schema.GroupVersion { + return c.APIRegistry.GroupOrDie("").GroupVersion +} + +func (c *RESTClient) GetRateLimiter() flowcontrol.RateLimiter { + return nil +} + +func (c *RESTClient) request(verb string) *restclient.Request { + config := restclient.ContentConfig{ + ContentType: runtime.ContentTypeJSON, + // TODO this was hardcoded before, but it doesn't look right + GroupVersion: &c.APIRegistry.GroupOrDie("").GroupVersion, + NegotiatedSerializer: c.NegotiatedSerializer, + } + + ns := c.NegotiatedSerializer + info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON) + internalVersion := schema.GroupVersion{ + Group: c.APIRegistry.GroupOrDie(c.GroupName).GroupVersion.Group, + Version: runtime.APIVersionInternal, + } + internalVersion.Version = runtime.APIVersionInternal + serializers := restclient.Serializers{ + // TODO this was hardcoded before, but it doesn't look right + Encoder: ns.EncoderForVersion(info.Serializer, c.APIRegistry.GroupOrDie("").GroupVersion), + Decoder: ns.DecoderToVersion(info.Serializer, internalVersion), + } + if info.StreamSerializer != nil { + serializers.StreamingSerializer = info.StreamSerializer.Serializer + serializers.Framer = info.StreamSerializer.Framer + } + return restclient.NewRequest(c, verb, &url.URL{Host: "localhost"}, c.VersionedAPIPath, config, serializers, nil, nil) +} + +func (c *RESTClient) Do(req *http.Request) (*http.Response, error) { + if c.Err != nil { + return nil, c.Err + } + c.Req = req + if c.Client != nil { + return c.Client.Do(req) + } + return c.Resp, nil +} diff --git a/vendor/k8s.io/client-go/rest/plugin.go b/vendor/k8s.io/client-go/rest/plugin.go new file mode 100644 index 000000000..cf8fbabfd --- /dev/null +++ b/vendor/k8s.io/client-go/rest/plugin.go @@ -0,0 +1,73 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "net/http" + "sync" + + "github.com/golang/glog" + + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +type AuthProvider interface { + // WrapTransport allows the plugin to create a modified RoundTripper that + // attaches authorization headers (or other info) to requests. + WrapTransport(http.RoundTripper) http.RoundTripper + // Login allows the plugin to initialize its configuration. It must not + // require direct user interaction. + Login() error +} + +// Factory generates an AuthProvider plugin. +// clusterAddress is the address of the current cluster. +// config is the initial configuration for this plugin. +// persister allows the plugin to save updated configuration. +type Factory func(clusterAddress string, config map[string]string, persister AuthProviderConfigPersister) (AuthProvider, error) + +// AuthProviderConfigPersister allows a plugin to persist configuration info +// for just itself. +type AuthProviderConfigPersister interface { + Persist(map[string]string) error +} + +// All registered auth provider plugins. +var pluginsLock sync.Mutex +var plugins = make(map[string]Factory) + +func RegisterAuthProviderPlugin(name string, plugin Factory) error { + pluginsLock.Lock() + defer pluginsLock.Unlock() + if _, found := plugins[name]; found { + return fmt.Errorf("Auth Provider Plugin %q was registered twice", name) + } + glog.V(4).Infof("Registered Auth Provider Plugin %q", name) + plugins[name] = plugin + return nil +} + +func GetAuthProvider(clusterAddress string, apc *clientcmdapi.AuthProviderConfig, persister AuthProviderConfigPersister) (AuthProvider, error) { + pluginsLock.Lock() + defer pluginsLock.Unlock() + p, ok := plugins[apc.Name] + if !ok { + return nil, fmt.Errorf("No Auth Provider found for name %q", apc.Name) + } + return p(clusterAddress, apc.Config, persister) +} diff --git a/vendor/k8s.io/client-go/rest/plugin_test.go b/vendor/k8s.io/client-go/rest/plugin_test.go new file mode 100644 index 000000000..070e53790 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/plugin_test.go @@ -0,0 +1,311 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "net/http" + "reflect" + "strconv" + "testing" + + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +func TestAuthPluginWrapTransport(t *testing.T) { + if err := RegisterAuthProviderPlugin("pluginA", pluginAProvider); err != nil { + t.Errorf("Unexpected error: failed to register pluginA: %v", err) + } + if err := RegisterAuthProviderPlugin("pluginB", pluginBProvider); err != nil { + t.Errorf("Unexpected error: failed to register pluginB: %v", err) + } + if err := RegisterAuthProviderPlugin("pluginFail", pluginFailProvider); err != nil { + t.Errorf("Unexpected error: failed to register pluginFail: %v", err) + } + testCases := []struct { + useWrapTransport bool + plugin string + expectErr bool + expectPluginA bool + expectPluginB bool + }{ + {false, "", false, false, false}, + {false, "pluginA", false, true, false}, + {false, "pluginB", false, false, true}, + {false, "pluginFail", true, false, false}, + {false, "pluginUnknown", true, false, false}, + } + for i, tc := range testCases { + c := Config{} + if tc.useWrapTransport { + // Specify an existing WrapTransport in the config to make sure that + // plugins play nicely. + c.WrapTransport = func(rt http.RoundTripper) http.RoundTripper { + return &wrapTransport{rt} + } + } + if len(tc.plugin) != 0 { + c.AuthProvider = &clientcmdapi.AuthProviderConfig{Name: tc.plugin} + } + tConfig, err := c.TransportConfig() + if err != nil { + // Unknown/bad plugins are expected to fail here. + if !tc.expectErr { + t.Errorf("%d. Did not expect errors loading Auth Plugin: %q. Got: %v", i, tc.plugin, err) + } + continue + } + var fullyWrappedTransport http.RoundTripper + fullyWrappedTransport = &emptyTransport{} + if tConfig.WrapTransport != nil { + fullyWrappedTransport = tConfig.WrapTransport(&emptyTransport{}) + } + res, err := fullyWrappedTransport.RoundTrip(&http.Request{}) + if err != nil { + t.Errorf("%d. Unexpected error in RoundTrip: %v", i, err) + continue + } + hasWrapTransport := res.Header.Get("wrapTransport") == "Y" + hasPluginA := res.Header.Get("pluginA") == "Y" + hasPluginB := res.Header.Get("pluginB") == "Y" + if hasWrapTransport != tc.useWrapTransport { + t.Errorf("%d. Expected Existing config.WrapTransport: %t; Got: %t", i, tc.useWrapTransport, hasWrapTransport) + } + if hasPluginA != tc.expectPluginA { + t.Errorf("%d. Expected Plugin A: %t; Got: %t", i, tc.expectPluginA, hasPluginA) + } + if hasPluginB != tc.expectPluginB { + t.Errorf("%d. Expected Plugin B: %t; Got: %t", i, tc.expectPluginB, hasPluginB) + } + } +} + +func TestAuthPluginPersist(t *testing.T) { + // register pluginA by a different name so we don't collide across tests. + if err := RegisterAuthProviderPlugin("pluginA2", pluginAProvider); err != nil { + t.Errorf("Unexpected error: failed to register pluginA: %v", err) + } + if err := RegisterAuthProviderPlugin("pluginPersist", pluginPersistProvider); err != nil { + t.Errorf("Unexpected error: failed to register pluginPersist: %v", err) + } + fooBarConfig := map[string]string{"foo": "bar"} + testCases := []struct { + plugin string + startingConfig map[string]string + expectedConfigAfterLogin map[string]string + expectedConfigAfterRoundTrip map[string]string + }{ + // non-persisting plugins should work fine without modifying config. + {"pluginA2", map[string]string{}, map[string]string{}, map[string]string{}}, + {"pluginA2", fooBarConfig, fooBarConfig, fooBarConfig}, + // plugins that persist config should be able to persist when they want. + { + "pluginPersist", + map[string]string{}, + map[string]string{ + "login": "Y", + }, + map[string]string{ + "login": "Y", + "roundTrips": "1", + }, + }, + { + "pluginPersist", + map[string]string{ + "login": "Y", + "roundTrips": "123", + }, + map[string]string{ + "login": "Y", + "roundTrips": "123", + }, + map[string]string{ + "login": "Y", + "roundTrips": "124", + }, + }, + } + for i, tc := range testCases { + cfg := &clientcmdapi.AuthProviderConfig{ + Name: tc.plugin, + Config: tc.startingConfig, + } + persister := &inMemoryPersister{make(map[string]string)} + persister.Persist(tc.startingConfig) + plugin, err := GetAuthProvider("127.0.0.1", cfg, persister) + if err != nil { + t.Errorf("%d. Unexpected error: failed to get plugin %q: %v", i, tc.plugin, err) + } + if err := plugin.Login(); err != nil { + t.Errorf("%d. Unexpected error calling Login() w/ plugin %q: %v", i, tc.plugin, err) + } + // Make sure the plugin persisted what we expect after Login(). + if !reflect.DeepEqual(persister.savedConfig, tc.expectedConfigAfterLogin) { + t.Errorf("%d. Unexpected persisted config after calling %s.Login(): \nGot:\n%v\nExpected:\n%v", + i, tc.plugin, persister.savedConfig, tc.expectedConfigAfterLogin) + } + if _, err := plugin.WrapTransport(&emptyTransport{}).RoundTrip(&http.Request{}); err != nil { + t.Errorf("%d. Unexpected error round-tripping w/ plugin %q: %v", i, tc.plugin, err) + } + // Make sure the plugin persisted what we expect after RoundTrip(). + if !reflect.DeepEqual(persister.savedConfig, tc.expectedConfigAfterRoundTrip) { + t.Errorf("%d. Unexpected persisted config after calling %s.WrapTransport.RoundTrip(): \nGot:\n%v\nExpected:\n%v", + i, tc.plugin, persister.savedConfig, tc.expectedConfigAfterLogin) + } + } + +} + +// emptyTransport provides an empty http.Response with an initialized header +// to allow wrapping RoundTrippers to set header values. +type emptyTransport struct{} + +func (*emptyTransport) RoundTrip(req *http.Request) (*http.Response, error) { + res := &http.Response{ + Header: make(map[string][]string), + } + return res, nil +} + +// wrapTransport sets "wrapTransport" = "Y" on the response. +type wrapTransport struct { + rt http.RoundTripper +} + +func (w *wrapTransport) RoundTrip(req *http.Request) (*http.Response, error) { + res, err := w.rt.RoundTrip(req) + if err != nil { + return nil, err + } + res.Header.Add("wrapTransport", "Y") + return res, nil +} + +// wrapTransportA sets "pluginA" = "Y" on the response. +type wrapTransportA struct { + rt http.RoundTripper +} + +func (w *wrapTransportA) RoundTrip(req *http.Request) (*http.Response, error) { + res, err := w.rt.RoundTrip(req) + if err != nil { + return nil, err + } + res.Header.Add("pluginA", "Y") + return res, nil +} + +type pluginA struct{} + +func (*pluginA) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &wrapTransportA{rt} +} + +func (*pluginA) Login() error { return nil } + +func pluginAProvider(string, map[string]string, AuthProviderConfigPersister) (AuthProvider, error) { + return &pluginA{}, nil +} + +// wrapTransportB sets "pluginB" = "Y" on the response. +type wrapTransportB struct { + rt http.RoundTripper +} + +func (w *wrapTransportB) RoundTrip(req *http.Request) (*http.Response, error) { + res, err := w.rt.RoundTrip(req) + if err != nil { + return nil, err + } + res.Header.Add("pluginB", "Y") + return res, nil +} + +type pluginB struct{} + +func (*pluginB) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &wrapTransportB{rt} +} + +func (*pluginB) Login() error { return nil } + +func pluginBProvider(string, map[string]string, AuthProviderConfigPersister) (AuthProvider, error) { + return &pluginB{}, nil +} + +// pluginFailProvider simulates a registered AuthPlugin that fails to load. +func pluginFailProvider(string, map[string]string, AuthProviderConfigPersister) (AuthProvider, error) { + return nil, fmt.Errorf("Failed to load AuthProvider") +} + +type inMemoryPersister struct { + savedConfig map[string]string +} + +func (i *inMemoryPersister) Persist(config map[string]string) error { + i.savedConfig = make(map[string]string) + for k, v := range config { + i.savedConfig[k] = v + } + return nil +} + +// wrapTransportPersist increments the "roundTrips" entry from the config when +// roundTrip is called. +type wrapTransportPersist struct { + rt http.RoundTripper + config map[string]string + persister AuthProviderConfigPersister +} + +func (w *wrapTransportPersist) RoundTrip(req *http.Request) (*http.Response, error) { + roundTrips := 0 + if rtVal, ok := w.config["roundTrips"]; ok { + var err error + roundTrips, err = strconv.Atoi(rtVal) + if err != nil { + return nil, err + } + } + roundTrips++ + w.config["roundTrips"] = fmt.Sprintf("%d", roundTrips) + if err := w.persister.Persist(w.config); err != nil { + return nil, err + } + return w.rt.RoundTrip(req) +} + +type pluginPersist struct { + config map[string]string + persister AuthProviderConfigPersister +} + +func (p *pluginPersist) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &wrapTransportPersist{rt, p.config, p.persister} +} + +// Login sets the config entry "login" to "Y". +func (p *pluginPersist) Login() error { + p.config["login"] = "Y" + p.persister.Persist(p.config) + return nil +} + +func pluginPersistProvider(_ string, config map[string]string, persister AuthProviderConfigPersister) (AuthProvider, error) { + return &pluginPersist{config, persister}, nil +} diff --git a/vendor/k8s.io/client-go/rest/request.go b/vendor/k8s.io/client-go/rest/request.go new file mode 100644 index 000000000..cfb4511ba --- /dev/null +++ b/vendor/k8s.io/client-go/rest/request.go @@ -0,0 +1,1250 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "bytes" + "context" + "encoding/hex" + "fmt" + "io" + "io/ioutil" + "mime" + "net/http" + "net/url" + "path" + "reflect" + "strconv" + "strings" + "time" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/util/net" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/pkg/api/v1" + restclientwatch "k8s.io/client-go/rest/watch" + "k8s.io/client-go/tools/metrics" + "k8s.io/client-go/util/flowcontrol" +) + +var ( + // specialParams lists parameters that are handled specially and which users of Request + // are therefore not allowed to set manually. + specialParams = sets.NewString("timeout") + + // longThrottleLatency defines threshold for logging requests. All requests being + // throttle for more than longThrottleLatency will be logged. + longThrottleLatency = 50 * time.Millisecond +) + +// HTTPClient is an interface for testing a request object. +type HTTPClient interface { + Do(req *http.Request) (*http.Response, error) +} + +// ResponseWrapper is an interface for getting a response. +// The response may be either accessed as a raw data (the whole output is put into memory) or as a stream. +type ResponseWrapper interface { + DoRaw() ([]byte, error) + Stream() (io.ReadCloser, error) +} + +// RequestConstructionError is returned when there's an error assembling a request. +type RequestConstructionError struct { + Err error +} + +// Error returns a textual description of 'r'. +func (r *RequestConstructionError) Error() string { + return fmt.Sprintf("request construction error: '%v'", r.Err) +} + +// Request allows for building up a request to a server in a chained fashion. +// Any errors are stored until the end of your call, so you only have to +// check once. +type Request struct { + // required + client HTTPClient + verb string + + baseURL *url.URL + content ContentConfig + serializers Serializers + + // generic components accessible via method setters + pathPrefix string + subpath string + params url.Values + headers http.Header + + // structural elements of the request that are part of the Kubernetes API conventions + namespace string + namespaceSet bool + resource string + resourceName string + subresource string + timeout time.Duration + + // output + err error + body io.Reader + + // This is only used for per-request timeouts, deadlines, and cancellations. + ctx context.Context + + backoffMgr BackoffManager + throttle flowcontrol.RateLimiter +} + +// NewRequest creates a new request helper object for accessing runtime.Objects on a server. +func NewRequest(client HTTPClient, verb string, baseURL *url.URL, versionedAPIPath string, content ContentConfig, serializers Serializers, backoff BackoffManager, throttle flowcontrol.RateLimiter) *Request { + if backoff == nil { + glog.V(2).Infof("Not implementing request backoff strategy.") + backoff = &NoBackoff{} + } + + pathPrefix := "/" + if baseURL != nil { + pathPrefix = path.Join(pathPrefix, baseURL.Path) + } + r := &Request{ + client: client, + verb: verb, + baseURL: baseURL, + pathPrefix: path.Join(pathPrefix, versionedAPIPath), + content: content, + serializers: serializers, + backoffMgr: backoff, + throttle: throttle, + } + switch { + case len(content.AcceptContentTypes) > 0: + r.SetHeader("Accept", content.AcceptContentTypes) + case len(content.ContentType) > 0: + r.SetHeader("Accept", content.ContentType+", */*") + } + return r +} + +// Prefix adds segments to the relative beginning to the request path. These +// items will be placed before the optional Namespace, Resource, or Name sections. +// Setting AbsPath will clear any previously set Prefix segments +func (r *Request) Prefix(segments ...string) *Request { + if r.err != nil { + return r + } + r.pathPrefix = path.Join(r.pathPrefix, path.Join(segments...)) + return r +} + +// Suffix appends segments to the end of the path. These items will be placed after the prefix and optional +// Namespace, Resource, or Name sections. +func (r *Request) Suffix(segments ...string) *Request { + if r.err != nil { + return r + } + r.subpath = path.Join(r.subpath, path.Join(segments...)) + return r +} + +// Resource sets the resource to access (/[ns//]) +func (r *Request) Resource(resource string) *Request { + if r.err != nil { + return r + } + if len(r.resource) != 0 { + r.err = fmt.Errorf("resource already set to %q, cannot change to %q", r.resource, resource) + return r + } + if msgs := IsValidPathSegmentName(resource); len(msgs) != 0 { + r.err = fmt.Errorf("invalid resource %q: %v", resource, msgs) + return r + } + r.resource = resource + return r +} + +// SubResource sets a sub-resource path which can be multiple segments segment after the resource +// name but before the suffix. +func (r *Request) SubResource(subresources ...string) *Request { + if r.err != nil { + return r + } + subresource := path.Join(subresources...) + if len(r.subresource) != 0 { + r.err = fmt.Errorf("subresource already set to %q, cannot change to %q", r.resource, subresource) + return r + } + for _, s := range subresources { + if msgs := IsValidPathSegmentName(s); len(msgs) != 0 { + r.err = fmt.Errorf("invalid subresource %q: %v", s, msgs) + return r + } + } + r.subresource = subresource + return r +} + +// Name sets the name of a resource to access (/[ns//]) +func (r *Request) Name(resourceName string) *Request { + if r.err != nil { + return r + } + if len(resourceName) == 0 { + r.err = fmt.Errorf("resource name may not be empty") + return r + } + if len(r.resourceName) != 0 { + r.err = fmt.Errorf("resource name already set to %q, cannot change to %q", r.resourceName, resourceName) + return r + } + if msgs := IsValidPathSegmentName(resourceName); len(msgs) != 0 { + r.err = fmt.Errorf("invalid resource name %q: %v", resourceName, msgs) + return r + } + r.resourceName = resourceName + return r +} + +// Namespace applies the namespace scope to a request (/[ns//]) +func (r *Request) Namespace(namespace string) *Request { + if r.err != nil { + return r + } + if r.namespaceSet { + r.err = fmt.Errorf("namespace already set to %q, cannot change to %q", r.namespace, namespace) + return r + } + if msgs := IsValidPathSegmentName(namespace); len(msgs) != 0 { + r.err = fmt.Errorf("invalid namespace %q: %v", namespace, msgs) + return r + } + r.namespaceSet = true + r.namespace = namespace + return r +} + +// NamespaceIfScoped is a convenience function to set a namespace if scoped is true +func (r *Request) NamespaceIfScoped(namespace string, scoped bool) *Request { + if scoped { + return r.Namespace(namespace) + } + return r +} + +// AbsPath overwrites an existing path with the segments provided. Trailing slashes are preserved +// when a single segment is passed. +func (r *Request) AbsPath(segments ...string) *Request { + if r.err != nil { + return r + } + r.pathPrefix = path.Join(r.baseURL.Path, path.Join(segments...)) + if len(segments) == 1 && (len(r.baseURL.Path) > 1 || len(segments[0]) > 1) && strings.HasSuffix(segments[0], "/") { + // preserve any trailing slashes for legacy behavior + r.pathPrefix += "/" + } + return r +} + +// RequestURI overwrites existing path and parameters with the value of the provided server relative +// URI. Some parameters (those in specialParameters) cannot be overwritten. +func (r *Request) RequestURI(uri string) *Request { + if r.err != nil { + return r + } + locator, err := url.Parse(uri) + if err != nil { + r.err = err + return r + } + r.pathPrefix = locator.Path + if len(locator.Query()) > 0 { + if r.params == nil { + r.params = make(url.Values) + } + for k, v := range locator.Query() { + r.params[k] = v + } + } + return r +} + +const ( + // A constant that clients can use to refer in a field selector to the object name field. + // Will be automatically emitted as the correct name for the API version. + nodeUnschedulable = "spec.unschedulable" + objectNameField = "metadata.name" + podHost = "spec.nodeName" + podStatus = "status.phase" + secretType = "type" + + eventReason = "reason" + eventSource = "source" + eventType = "type" + eventInvolvedKind = "involvedObject.kind" + eventInvolvedNamespace = "involvedObject.namespace" + eventInvolvedName = "involvedObject.name" + eventInvolvedUID = "involvedObject.uid" + eventInvolvedAPIVersion = "involvedObject.apiVersion" + eventInvolvedResourceVersion = "involvedObject.resourceVersion" + eventInvolvedFieldPath = "involvedObject.fieldPath" +) + +type clientFieldNameToAPIVersionFieldName map[string]string + +func (c clientFieldNameToAPIVersionFieldName) filterField(field, value string) (newField, newValue string, err error) { + newFieldName, ok := c[field] + if !ok { + return "", "", fmt.Errorf("%v - %v - no field mapping defined", field, value) + } + return newFieldName, value, nil +} + +type resourceTypeToFieldMapping map[string]clientFieldNameToAPIVersionFieldName + +func (r resourceTypeToFieldMapping) filterField(resourceType, field, value string) (newField, newValue string, err error) { + fMapping, ok := r[resourceType] + if !ok { + return "", "", fmt.Errorf("%v - %v - %v - no field mapping defined", resourceType, field, value) + } + return fMapping.filterField(field, value) +} + +type versionToResourceToFieldMapping map[schema.GroupVersion]resourceTypeToFieldMapping + +// filterField transforms the given field/value selector for the given groupVersion and resource +func (v versionToResourceToFieldMapping) filterField(groupVersion *schema.GroupVersion, resourceType, field, value string) (newField, newValue string, err error) { + rMapping, ok := v[*groupVersion] + if !ok { + // no groupVersion overrides registered, default to identity mapping + return field, value, nil + } + newField, newValue, err = rMapping.filterField(resourceType, field, value) + if err != nil { + // no groupVersionResource overrides registered, default to identity mapping + return field, value, nil + } + return newField, newValue, nil +} + +var fieldMappings = versionToResourceToFieldMapping{ + v1.SchemeGroupVersion: resourceTypeToFieldMapping{ + "nodes": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + nodeUnschedulable: nodeUnschedulable, + }, + "pods": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + podHost: podHost, + podStatus: podStatus, + }, + "secrets": clientFieldNameToAPIVersionFieldName{ + secretType: secretType, + }, + "serviceAccounts": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + }, + "endpoints": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + }, + "events": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + eventReason: eventReason, + eventSource: eventSource, + eventType: eventType, + eventInvolvedKind: eventInvolvedKind, + eventInvolvedNamespace: eventInvolvedNamespace, + eventInvolvedName: eventInvolvedName, + eventInvolvedUID: eventInvolvedUID, + eventInvolvedAPIVersion: eventInvolvedAPIVersion, + eventInvolvedResourceVersion: eventInvolvedResourceVersion, + eventInvolvedFieldPath: eventInvolvedFieldPath, + }, + }, +} + +// FieldsSelectorParam adds the given selector as a query parameter with the name paramName. +func (r *Request) FieldsSelectorParam(s fields.Selector) *Request { + if r.err != nil { + return r + } + if s == nil { + return r + } + if s.Empty() { + return r + } + s2, err := s.Transform(func(field, value string) (newField, newValue string, err error) { + return fieldMappings.filterField(r.content.GroupVersion, r.resource, field, value) + }) + if err != nil { + r.err = err + return r + } + return r.setParam(metav1.FieldSelectorQueryParam(r.content.GroupVersion.String()), s2.String()) +} + +// LabelsSelectorParam adds the given selector as a query parameter +func (r *Request) LabelsSelectorParam(s labels.Selector) *Request { + if r.err != nil { + return r + } + if s == nil { + return r + } + if s.Empty() { + return r + } + return r.setParam(metav1.LabelSelectorQueryParam(r.content.GroupVersion.String()), s.String()) +} + +// UintParam creates a query parameter with the given value. +func (r *Request) UintParam(paramName string, u uint64) *Request { + if r.err != nil { + return r + } + return r.setParam(paramName, strconv.FormatUint(u, 10)) +} + +// Param creates a query parameter with the given string value. +func (r *Request) Param(paramName, s string) *Request { + if r.err != nil { + return r + } + return r.setParam(paramName, s) +} + +// VersionedParams will take the provided object, serialize it to a map[string][]string using the +// implicit RESTClient API version and the default parameter codec, and then add those as parameters +// to the request. Use this to provide versioned query parameters from client libraries. +func (r *Request) VersionedParams(obj runtime.Object, codec runtime.ParameterCodec) *Request { + if r.err != nil { + return r + } + params, err := codec.EncodeParameters(obj, *r.content.GroupVersion) + if err != nil { + r.err = err + return r + } + for k, v := range params { + for _, value := range v { + // TODO: Move it to setParam method, once we get rid of + // FieldSelectorParam & LabelSelectorParam methods. + if k == metav1.LabelSelectorQueryParam(r.content.GroupVersion.String()) && value == "" { + // Don't set an empty selector for backward compatibility. + // Since there is no way to get the difference between empty + // and unspecified string, we don't set it to avoid having + // labelSelector= param in every request. + continue + } + if k == metav1.FieldSelectorQueryParam(r.content.GroupVersion.String()) { + if len(value) == 0 { + // Don't set an empty selector for backward compatibility. + // Since there is no way to get the difference between empty + // and unspecified string, we don't set it to avoid having + // fieldSelector= param in every request. + continue + } + // TODO: Filtering should be handled somewhere else. + selector, err := fields.ParseSelector(value) + if err != nil { + r.err = fmt.Errorf("unparsable field selector: %v", err) + return r + } + filteredSelector, err := selector.Transform( + func(field, value string) (newField, newValue string, err error) { + return fieldMappings.filterField(r.content.GroupVersion, r.resource, field, value) + }) + if err != nil { + r.err = fmt.Errorf("untransformable field selector: %v", err) + return r + } + value = filteredSelector.String() + } + + r.setParam(k, value) + } + } + return r +} + +func (r *Request) setParam(paramName, value string) *Request { + if specialParams.Has(paramName) { + r.err = fmt.Errorf("must set %v through the corresponding function, not directly.", paramName) + return r + } + if r.params == nil { + r.params = make(url.Values) + } + r.params[paramName] = append(r.params[paramName], value) + return r +} + +func (r *Request) SetHeader(key, value string) *Request { + if r.headers == nil { + r.headers = http.Header{} + } + r.headers.Set(key, value) + return r +} + +// Timeout makes the request use the given duration as a timeout. Sets the "timeout" +// parameter. +func (r *Request) Timeout(d time.Duration) *Request { + if r.err != nil { + return r + } + r.timeout = d + return r +} + +// Body makes the request use obj as the body. Optional. +// If obj is a string, try to read a file of that name. +// If obj is a []byte, send it directly. +// If obj is an io.Reader, use it directly. +// If obj is a runtime.Object, marshal it correctly, and set Content-Type header. +// If obj is a runtime.Object and nil, do nothing. +// Otherwise, set an error. +func (r *Request) Body(obj interface{}) *Request { + if r.err != nil { + return r + } + switch t := obj.(type) { + case string: + data, err := ioutil.ReadFile(t) + if err != nil { + r.err = err + return r + } + glogBody("Request Body", data) + r.body = bytes.NewReader(data) + case []byte: + glogBody("Request Body", t) + r.body = bytes.NewReader(t) + case io.Reader: + r.body = t + case runtime.Object: + // callers may pass typed interface pointers, therefore we must check nil with reflection + if reflect.ValueOf(t).IsNil() { + return r + } + data, err := runtime.Encode(r.serializers.Encoder, t) + if err != nil { + r.err = err + return r + } + glogBody("Request Body", data) + r.body = bytes.NewReader(data) + r.SetHeader("Content-Type", r.content.ContentType) + default: + r.err = fmt.Errorf("unknown type used for body: %+v", obj) + } + return r +} + +// Context adds a context to the request. Contexts are only used for +// timeouts, deadlines, and cancellations. +func (r *Request) Context(ctx context.Context) *Request { + r.ctx = ctx + return r +} + +// URL returns the current working URL. +func (r *Request) URL() *url.URL { + p := r.pathPrefix + if r.namespaceSet && len(r.namespace) > 0 { + p = path.Join(p, "namespaces", r.namespace) + } + if len(r.resource) != 0 { + p = path.Join(p, strings.ToLower(r.resource)) + } + // Join trims trailing slashes, so preserve r.pathPrefix's trailing slash for backwards compatibility if nothing was changed + if len(r.resourceName) != 0 || len(r.subpath) != 0 || len(r.subresource) != 0 { + p = path.Join(p, r.resourceName, r.subresource, r.subpath) + } + + finalURL := &url.URL{} + if r.baseURL != nil { + *finalURL = *r.baseURL + } + finalURL.Path = p + + query := url.Values{} + for key, values := range r.params { + for _, value := range values { + query.Add(key, value) + } + } + + // timeout is handled specially here. + if r.timeout != 0 { + query.Set("timeout", r.timeout.String()) + } + finalURL.RawQuery = query.Encode() + return finalURL +} + +// finalURLTemplate is similar to URL(), but will make all specific parameter values equal +// - instead of name or namespace, "{name}" and "{namespace}" will be used, and all query +// parameters will be reset. This creates a copy of the request so as not to change the +// underyling object. This means some useful request info (like the types of field +// selectors in use) will be lost. +// TODO: preserve field selector keys +func (r Request) finalURLTemplate() url.URL { + if len(r.resourceName) != 0 { + r.resourceName = "{name}" + } + if r.namespaceSet && len(r.namespace) != 0 { + r.namespace = "{namespace}" + } + newParams := url.Values{} + v := []string{"{value}"} + for k := range r.params { + newParams[k] = v + } + r.params = newParams + url := r.URL() + return *url +} + +func (r *Request) tryThrottle() { + now := time.Now() + if r.throttle != nil { + r.throttle.Accept() + } + if latency := time.Since(now); latency > longThrottleLatency { + glog.V(4).Infof("Throttling request took %v, request: %s:%s", latency, r.verb, r.URL().String()) + } +} + +// Watch attempts to begin watching the requested location. +// Returns a watch.Interface, or an error. +func (r *Request) Watch() (watch.Interface, error) { + // We specifically don't want to rate limit watches, so we + // don't use r.throttle here. + if r.err != nil { + return nil, r.err + } + if r.serializers.Framer == nil { + return nil, fmt.Errorf("watching resources is not possible with this client (content-type: %s)", r.content.ContentType) + } + + url := r.URL().String() + req, err := http.NewRequest(r.verb, url, r.body) + if err != nil { + return nil, err + } + if r.ctx != nil { + req = req.WithContext(r.ctx) + } + req.Header = r.headers + client := r.client + if client == nil { + client = http.DefaultClient + } + r.backoffMgr.Sleep(r.backoffMgr.CalculateBackoff(r.URL())) + resp, err := client.Do(req) + updateURLMetrics(r, resp, err) + if r.baseURL != nil { + if err != nil { + r.backoffMgr.UpdateBackoff(r.baseURL, err, 0) + } else { + r.backoffMgr.UpdateBackoff(r.baseURL, err, resp.StatusCode) + } + } + if err != nil { + // The watch stream mechanism handles many common partial data errors, so closed + // connections can be retried in many cases. + if net.IsProbableEOF(err) { + return watch.NewEmptyWatch(), nil + } + return nil, err + } + if resp.StatusCode != http.StatusOK { + defer resp.Body.Close() + if result := r.transformResponse(resp, req); result.err != nil { + return nil, result.err + } + return nil, fmt.Errorf("for request '%+v', got status: %v", url, resp.StatusCode) + } + framer := r.serializers.Framer.NewFrameReader(resp.Body) + decoder := streaming.NewDecoder(framer, r.serializers.StreamingSerializer) + return watch.NewStreamWatcher(restclientwatch.NewDecoder(decoder, r.serializers.Decoder)), nil +} + +// updateURLMetrics is a convenience function for pushing metrics. +// It also handles corner cases for incomplete/invalid request data. +func updateURLMetrics(req *Request, resp *http.Response, err error) { + url := "none" + if req.baseURL != nil { + url = req.baseURL.Host + } + + // Errors can be arbitrary strings. Unbound label cardinality is not suitable for a metric + // system so we just report them as ``. + if err != nil { + metrics.RequestResult.Increment("", req.verb, url) + } else { + //Metrics for failure codes + metrics.RequestResult.Increment(strconv.Itoa(resp.StatusCode), req.verb, url) + } +} + +// Stream formats and executes the request, and offers streaming of the response. +// Returns io.ReadCloser which could be used for streaming of the response, or an error +// Any non-2xx http status code causes an error. If we get a non-2xx code, we try to convert the body into an APIStatus object. +// If we can, we return that as an error. Otherwise, we create an error that lists the http status and the content of the response. +func (r *Request) Stream() (io.ReadCloser, error) { + if r.err != nil { + return nil, r.err + } + + r.tryThrottle() + + url := r.URL().String() + req, err := http.NewRequest(r.verb, url, nil) + if err != nil { + return nil, err + } + if r.ctx != nil { + req = req.WithContext(r.ctx) + } + req.Header = r.headers + client := r.client + if client == nil { + client = http.DefaultClient + } + r.backoffMgr.Sleep(r.backoffMgr.CalculateBackoff(r.URL())) + resp, err := client.Do(req) + updateURLMetrics(r, resp, err) + if r.baseURL != nil { + if err != nil { + r.backoffMgr.UpdateBackoff(r.URL(), err, 0) + } else { + r.backoffMgr.UpdateBackoff(r.URL(), err, resp.StatusCode) + } + } + if err != nil { + return nil, err + } + + switch { + case (resp.StatusCode >= 200) && (resp.StatusCode < 300): + return resp.Body, nil + + default: + // ensure we close the body before returning the error + defer resp.Body.Close() + + result := r.transformResponse(resp, req) + err := result.Error() + if err == nil { + err = fmt.Errorf("%d while accessing %v: %s", result.statusCode, url, string(result.body)) + } + return nil, err + } +} + +// request connects to the server and invokes the provided function when a server response is +// received. It handles retry behavior and up front validation of requests. It will invoke +// fn at most once. It will return an error if a problem occurred prior to connecting to the +// server - the provided function is responsible for handling server errors. +func (r *Request) request(fn func(*http.Request, *http.Response)) error { + //Metrics for total request latency + start := time.Now() + defer func() { + metrics.RequestLatency.Observe(r.verb, r.finalURLTemplate(), time.Since(start)) + }() + + if r.err != nil { + glog.V(4).Infof("Error in request: %v", r.err) + return r.err + } + + // TODO: added to catch programmer errors (invoking operations with an object with an empty namespace) + if (r.verb == "GET" || r.verb == "PUT" || r.verb == "DELETE") && r.namespaceSet && len(r.resourceName) > 0 && len(r.namespace) == 0 { + return fmt.Errorf("an empty namespace may not be set when a resource name is provided") + } + if (r.verb == "POST") && r.namespaceSet && len(r.namespace) == 0 { + return fmt.Errorf("an empty namespace may not be set during creation") + } + + client := r.client + if client == nil { + client = http.DefaultClient + } + + // Right now we make about ten retry attempts if we get a Retry-After response. + // TODO: Change to a timeout based approach. + maxRetries := 10 + retries := 0 + for { + url := r.URL().String() + req, err := http.NewRequest(r.verb, url, r.body) + if err != nil { + return err + } + if r.ctx != nil { + req = req.WithContext(r.ctx) + } + req.Header = r.headers + + r.backoffMgr.Sleep(r.backoffMgr.CalculateBackoff(r.URL())) + if retries > 0 { + // We are retrying the request that we already send to apiserver + // at least once before. + // This request should also be throttled with the client-internal throttler. + r.tryThrottle() + } + resp, err := client.Do(req) + updateURLMetrics(r, resp, err) + if err != nil { + r.backoffMgr.UpdateBackoff(r.URL(), err, 0) + } else { + r.backoffMgr.UpdateBackoff(r.URL(), err, resp.StatusCode) + } + if err != nil { + // "Connection reset by peer" is usually a transient error. + // Thus in case of "GET" operations, we simply retry it. + // We are not automatically retrying "write" operations, as + // they are not idempotent. + if !net.IsConnectionReset(err) || r.verb != "GET" { + return err + } + // For the purpose of retry, we set the artificial "retry-after" response. + // TODO: Should we clean the original response if it exists? + resp = &http.Response{ + StatusCode: http.StatusInternalServerError, + Header: http.Header{"Retry-After": []string{"1"}}, + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + } + } + + done := func() bool { + // Ensure the response body is fully read and closed + // before we reconnect, so that we reuse the same TCP + // connection. + defer func() { + const maxBodySlurpSize = 2 << 10 + if resp.ContentLength <= maxBodySlurpSize { + io.Copy(ioutil.Discard, &io.LimitedReader{R: resp.Body, N: maxBodySlurpSize}) + } + resp.Body.Close() + }() + + retries++ + if seconds, wait := checkWait(resp); wait && retries < maxRetries { + if seeker, ok := r.body.(io.Seeker); ok && r.body != nil { + _, err := seeker.Seek(0, 0) + if err != nil { + glog.V(4).Infof("Could not retry request, can't Seek() back to beginning of body for %T", r.body) + fn(req, resp) + return true + } + } + + glog.V(4).Infof("Got a Retry-After %s response for attempt %d to %v", seconds, retries, url) + r.backoffMgr.Sleep(time.Duration(seconds) * time.Second) + return false + } + fn(req, resp) + return true + }() + if done { + return nil + } + } +} + +// Do formats and executes the request. Returns a Result object for easy response +// processing. +// +// Error type: +// * If the request can't be constructed, or an error happened earlier while building its +// arguments: *RequestConstructionError +// * If the server responds with a status: *errors.StatusError or *errors.UnexpectedObjectError +// * http.Client.Do errors are returned directly. +func (r *Request) Do() Result { + r.tryThrottle() + + var result Result + err := r.request(func(req *http.Request, resp *http.Response) { + result = r.transformResponse(resp, req) + }) + if err != nil { + return Result{err: err} + } + return result +} + +// DoRaw executes the request but does not process the response body. +func (r *Request) DoRaw() ([]byte, error) { + r.tryThrottle() + + var result Result + err := r.request(func(req *http.Request, resp *http.Response) { + result.body, result.err = ioutil.ReadAll(resp.Body) + glogBody("Response Body", result.body) + if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent { + result.err = r.transformUnstructuredResponseError(resp, req, result.body) + } + }) + if err != nil { + return nil, err + } + return result.body, result.err +} + +// transformResponse converts an API response into a structured API object +func (r *Request) transformResponse(resp *http.Response, req *http.Request) Result { + var body []byte + if resp.Body != nil { + if data, err := ioutil.ReadAll(resp.Body); err == nil { + body = data + } + } + + glogBody("Response Body", body) + + // verify the content type is accurate + contentType := resp.Header.Get("Content-Type") + decoder := r.serializers.Decoder + if len(contentType) > 0 && (decoder == nil || (len(r.content.ContentType) > 0 && contentType != r.content.ContentType)) { + mediaType, params, err := mime.ParseMediaType(contentType) + if err != nil { + return Result{err: errors.NewInternalError(err)} + } + decoder, err = r.serializers.RenegotiatedDecoder(mediaType, params) + if err != nil { + // if we fail to negotiate a decoder, treat this as an unstructured error + switch { + case resp.StatusCode == http.StatusSwitchingProtocols: + // no-op, we've been upgraded + case resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent: + return Result{err: r.transformUnstructuredResponseError(resp, req, body)} + } + return Result{ + body: body, + contentType: contentType, + statusCode: resp.StatusCode, + } + } + } + + switch { + case resp.StatusCode == http.StatusSwitchingProtocols: + // no-op, we've been upgraded + case resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent: + // calculate an unstructured error from the response which the Result object may use if the caller + // did not return a structured error. + retryAfter, _ := retryAfterSeconds(resp) + err := r.newUnstructuredResponseError(body, isTextResponse(resp), resp.StatusCode, req.Method, retryAfter) + return Result{ + body: body, + contentType: contentType, + statusCode: resp.StatusCode, + decoder: decoder, + err: err, + } + } + + return Result{ + body: body, + contentType: contentType, + statusCode: resp.StatusCode, + decoder: decoder, + } +} + +// glogBody logs a body output that could be either JSON or protobuf. It explicitly guards against +// allocating a new string for the body output unless necessary. Uses a simple heuristic to determine +// whether the body is printable. +func glogBody(prefix string, body []byte) { + if glog.V(8) { + if bytes.IndexFunc(body, func(r rune) bool { + return r < 0x0a + }) != -1 { + glog.Infof("%s:\n%s", prefix, hex.Dump(body)) + } else { + glog.Infof("%s: %s", prefix, string(body)) + } + } +} + +// maxUnstructuredResponseTextBytes is an upper bound on how much output to include in the unstructured error. +const maxUnstructuredResponseTextBytes = 2048 + +// transformUnstructuredResponseError handles an error from the server that is not in a structured form. +// It is expected to transform any response that is not recognizable as a clear server sent error from the +// K8S API using the information provided with the request. In practice, HTTP proxies and client libraries +// introduce a level of uncertainty to the responses returned by servers that in common use result in +// unexpected responses. The rough structure is: +// +// 1. Assume the server sends you something sane - JSON + well defined error objects + proper codes +// - this is the happy path +// - when you get this output, trust what the server sends +// 2. Guard against empty fields / bodies in received JSON and attempt to cull sufficient info from them to +// generate a reasonable facsimile of the original failure. +// - Be sure to use a distinct error type or flag that allows a client to distinguish between this and error 1 above +// 3. Handle true disconnect failures / completely malformed data by moving up to a more generic client error +// 4. Distinguish between various connection failures like SSL certificates, timeouts, proxy errors, unexpected +// initial contact, the presence of mismatched body contents from posted content types +// - Give these a separate distinct error type and capture as much as possible of the original message +// +// TODO: introduce transformation of generic http.Client.Do() errors that separates 4. +func (r *Request) transformUnstructuredResponseError(resp *http.Response, req *http.Request, body []byte) error { + if body == nil && resp.Body != nil { + if data, err := ioutil.ReadAll(&io.LimitedReader{R: resp.Body, N: maxUnstructuredResponseTextBytes}); err == nil { + body = data + } + } + retryAfter, _ := retryAfterSeconds(resp) + return r.newUnstructuredResponseError(body, isTextResponse(resp), resp.StatusCode, req.Method, retryAfter) +} + +// newUnstructuredResponseError instantiates the appropriate generic error for the provided input. It also logs the body. +func (r *Request) newUnstructuredResponseError(body []byte, isTextResponse bool, statusCode int, method string, retryAfter int) error { + // cap the amount of output we create + if len(body) > maxUnstructuredResponseTextBytes { + body = body[:maxUnstructuredResponseTextBytes] + } + + message := "unknown" + if isTextResponse { + message = strings.TrimSpace(string(body)) + } + var groupResource schema.GroupResource + if len(r.resource) > 0 { + groupResource.Group = r.content.GroupVersion.Group + groupResource.Resource = r.resource + } + return errors.NewGenericServerResponse( + statusCode, + method, + groupResource, + r.resourceName, + message, + retryAfter, + true, + ) +} + +// isTextResponse returns true if the response appears to be a textual media type. +func isTextResponse(resp *http.Response) bool { + contentType := resp.Header.Get("Content-Type") + if len(contentType) == 0 { + return true + } + media, _, err := mime.ParseMediaType(contentType) + if err != nil { + return false + } + return strings.HasPrefix(media, "text/") +} + +// checkWait returns true along with a number of seconds if the server instructed us to wait +// before retrying. +func checkWait(resp *http.Response) (int, bool) { + switch r := resp.StatusCode; { + // any 500 error code and 429 can trigger a wait + case r == errors.StatusTooManyRequests, r >= 500: + default: + return 0, false + } + i, ok := retryAfterSeconds(resp) + return i, ok +} + +// retryAfterSeconds returns the value of the Retry-After header and true, or 0 and false if +// the header was missing or not a valid number. +func retryAfterSeconds(resp *http.Response) (int, bool) { + if h := resp.Header.Get("Retry-After"); len(h) > 0 { + if i, err := strconv.Atoi(h); err == nil { + return i, true + } + } + return 0, false +} + +// Result contains the result of calling Request.Do(). +type Result struct { + body []byte + contentType string + err error + statusCode int + + decoder runtime.Decoder +} + +// Raw returns the raw result. +func (r Result) Raw() ([]byte, error) { + return r.body, r.err +} + +// Get returns the result as an object, which means it passes through the decoder. +// If the returned object is of type Status and has .Status != StatusSuccess, the +// additional information in Status will be used to enrich the error. +func (r Result) Get() (runtime.Object, error) { + if r.err != nil { + // Check whether the result has a Status object in the body and prefer that. + return nil, r.Error() + } + if r.decoder == nil { + return nil, fmt.Errorf("serializer for %s doesn't exist", r.contentType) + } + + // decode, but if the result is Status return that as an error instead. + out, _, err := r.decoder.Decode(r.body, nil, nil) + if err != nil { + return nil, err + } + switch t := out.(type) { + case *metav1.Status: + // any status besides StatusSuccess is considered an error. + if t.Status != metav1.StatusSuccess { + return nil, errors.FromObject(t) + } + } + return out, nil +} + +// StatusCode returns the HTTP status code of the request. (Only valid if no +// error was returned.) +func (r Result) StatusCode(statusCode *int) Result { + *statusCode = r.statusCode + return r +} + +// Into stores the result into obj, if possible. If obj is nil it is ignored. +// If the returned object is of type Status and has .Status != StatusSuccess, the +// additional information in Status will be used to enrich the error. +func (r Result) Into(obj runtime.Object) error { + if r.err != nil { + // Check whether the result has a Status object in the body and prefer that. + return r.Error() + } + if r.decoder == nil { + return fmt.Errorf("serializer for %s doesn't exist", r.contentType) + } + if len(r.body) == 0 { + return fmt.Errorf("0-length response") + } + + out, _, err := r.decoder.Decode(r.body, nil, obj) + if err != nil || out == obj { + return err + } + // if a different object is returned, see if it is Status and avoid double decoding + // the object. + switch t := out.(type) { + case *metav1.Status: + // any status besides StatusSuccess is considered an error. + if t.Status != metav1.StatusSuccess { + return errors.FromObject(t) + } + } + return nil +} + +// WasCreated updates the provided bool pointer to whether the server returned +// 201 created or a different response. +func (r Result) WasCreated(wasCreated *bool) Result { + *wasCreated = r.statusCode == http.StatusCreated + return r +} + +// Error returns the error executing the request, nil if no error occurred. +// If the returned object is of type Status and has Status != StatusSuccess, the +// additional information in Status will be used to enrich the error. +// See the Request.Do() comment for what errors you might get. +func (r Result) Error() error { + // if we have received an unexpected server error, and we have a body and decoder, we can try to extract + // a Status object. + if r.err == nil || !errors.IsUnexpectedServerError(r.err) || len(r.body) == 0 || r.decoder == nil { + return r.err + } + + // attempt to convert the body into a Status object + // to be backwards compatible with old servers that do not return a version, default to "v1" + out, _, err := r.decoder.Decode(r.body, &schema.GroupVersionKind{Version: "v1"}, nil) + if err != nil { + glog.V(5).Infof("body was not decodable (unable to check for Status): %v", err) + return r.err + } + switch t := out.(type) { + case *metav1.Status: + // because we default the kind, we *must* check for StatusFailure + if t.Status == metav1.StatusFailure { + return errors.FromObject(t) + } + } + return r.err +} + +// NameMayNotBe specifies strings that cannot be used as names specified as path segments (like the REST API or etcd store) +var NameMayNotBe = []string{".", ".."} + +// NameMayNotContain specifies substrings that cannot be used in names specified as path segments (like the REST API or etcd store) +var NameMayNotContain = []string{"/", "%"} + +// IsValidPathSegmentName validates the name can be safely encoded as a path segment +func IsValidPathSegmentName(name string) []string { + for _, illegalName := range NameMayNotBe { + if name == illegalName { + return []string{fmt.Sprintf(`may not be '%s'`, illegalName)} + } + } + + var errors []string + for _, illegalContent := range NameMayNotContain { + if strings.Contains(name, illegalContent) { + errors = append(errors, fmt.Sprintf(`may not contain '%s'`, illegalContent)) + } + } + + return errors +} + +// IsValidPathSegmentPrefix validates the name can be used as a prefix for a name which will be encoded as a path segment +// It does not check for exact matches with disallowed names, since an arbitrary suffix might make the name valid +func IsValidPathSegmentPrefix(name string) []string { + var errors []string + for _, illegalContent := range NameMayNotContain { + if strings.Contains(name, illegalContent) { + errors = append(errors, fmt.Sprintf(`may not contain '%s'`, illegalContent)) + } + } + + return errors +} + +// ValidatePathSegmentName validates the name can be safely encoded as a path segment +func ValidatePathSegmentName(name string, prefix bool) []string { + if prefix { + return IsValidPathSegmentPrefix(name) + } else { + return IsValidPathSegmentName(name) + } +} diff --git a/vendor/k8s.io/client-go/rest/request_test.go b/vendor/k8s.io/client-go/rest/request_test.go new file mode 100755 index 000000000..cedac794a --- /dev/null +++ b/vendor/k8s.io/client-go/rest/request_test.go @@ -0,0 +1,1742 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "bytes" + "context" + "errors" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "net/http/httptest" + "net/url" + "os" + "reflect" + "strings" + "syscall" + "testing" + "time" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + apierrors "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/apimachinery/pkg/util/httpstream" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + restclientwatch "k8s.io/client-go/rest/watch" + "k8s.io/client-go/util/flowcontrol" + utiltesting "k8s.io/client-go/util/testing" +) + +func TestNewRequestSetsAccept(t *testing.T) { + r := NewRequest(nil, "get", &url.URL{Path: "/path/"}, "", ContentConfig{}, Serializers{}, nil, nil) + if r.headers.Get("Accept") != "" { + t.Errorf("unexpected headers: %#v", r.headers) + } + r = NewRequest(nil, "get", &url.URL{Path: "/path/"}, "", ContentConfig{ContentType: "application/other"}, Serializers{}, nil, nil) + if r.headers.Get("Accept") != "application/other, */*" { + t.Errorf("unexpected headers: %#v", r.headers) + } +} + +type clientFunc func(req *http.Request) (*http.Response, error) + +func (f clientFunc) Do(req *http.Request) (*http.Response, error) { + return f(req) +} + +func TestRequestSetsHeaders(t *testing.T) { + server := clientFunc(func(req *http.Request) (*http.Response, error) { + if req.Header.Get("Accept") != "application/other, */*" { + t.Errorf("unexpected headers: %#v", req.Header) + } + return &http.Response{ + StatusCode: http.StatusForbidden, + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + }, nil + }) + config := defaultContentConfig() + config.ContentType = "application/other" + serializers := defaultSerializers(t) + r := NewRequest(server, "get", &url.URL{Path: "/path"}, "", config, serializers, nil, nil) + + // Check if all "issue" methods are setting headers. + _ = r.Do() + _, _ = r.Watch() + _, _ = r.Stream() +} + +func TestRequestWithErrorWontChange(t *testing.T) { + gvCopy := v1.SchemeGroupVersion + original := Request{ + err: errors.New("test"), + content: ContentConfig{GroupVersion: &gvCopy}, + } + r := original + changed := r.Param("foo", "bar"). + LabelsSelectorParam(labels.Set{"a": "b"}.AsSelector()). + UintParam("uint", 1). + AbsPath("/abs"). + Prefix("test"). + Suffix("testing"). + Namespace("new"). + Resource("foos"). + Name("bars"). + Body("foo"). + Timeout(time.Millisecond) + if changed != &r { + t.Errorf("returned request should point to the same object") + } + if !reflect.DeepEqual(changed, &original) { + t.Errorf("expected %#v, got %#v", &original, changed) + } +} + +func TestRequestPreservesBaseTrailingSlash(t *testing.T) { + r := &Request{baseURL: &url.URL{}, pathPrefix: "/path/"} + if s := r.URL().String(); s != "/path/" { + t.Errorf("trailing slash should be preserved: %s", s) + } +} + +func TestRequestAbsPathPreservesTrailingSlash(t *testing.T) { + r := (&Request{baseURL: &url.URL{}}).AbsPath("/foo/") + if s := r.URL().String(); s != "/foo/" { + t.Errorf("trailing slash should be preserved: %s", s) + } + + r = (&Request{baseURL: &url.URL{}}).AbsPath("/foo/") + if s := r.URL().String(); s != "/foo/" { + t.Errorf("trailing slash should be preserved: %s", s) + } +} + +func TestRequestAbsPathJoins(t *testing.T) { + r := (&Request{baseURL: &url.URL{}}).AbsPath("foo/bar", "baz") + if s := r.URL().String(); s != "foo/bar/baz" { + t.Errorf("trailing slash should be preserved: %s", s) + } +} + +func TestRequestSetsNamespace(t *testing.T) { + r := (&Request{ + baseURL: &url.URL{ + Path: "/", + }, + }).Namespace("foo") + if r.namespace == "" { + t.Errorf("namespace should be set: %#v", r) + } + + if s := r.URL().String(); s != "namespaces/foo" { + t.Errorf("namespace should be in path: %s", s) + } +} + +func TestRequestOrdersNamespaceInPath(t *testing.T) { + r := (&Request{ + baseURL: &url.URL{}, + pathPrefix: "/test/", + }).Name("bar").Resource("baz").Namespace("foo") + if s := r.URL().String(); s != "/test/namespaces/foo/baz/bar" { + t.Errorf("namespace should be in order in path: %s", s) + } +} + +func TestRequestOrdersSubResource(t *testing.T) { + r := (&Request{ + baseURL: &url.URL{}, + pathPrefix: "/test/", + }).Name("bar").Resource("baz").Namespace("foo").Suffix("test").SubResource("a", "b") + if s := r.URL().String(); s != "/test/namespaces/foo/baz/bar/a/b/test" { + t.Errorf("namespace should be in order in path: %s", s) + } +} + +func TestRequestSetTwiceError(t *testing.T) { + if (&Request{}).Name("bar").Name("baz").err == nil { + t.Errorf("setting name twice should result in error") + } + if (&Request{}).Namespace("bar").Namespace("baz").err == nil { + t.Errorf("setting namespace twice should result in error") + } + if (&Request{}).Resource("bar").Resource("baz").err == nil { + t.Errorf("setting resource twice should result in error") + } + if (&Request{}).SubResource("bar").SubResource("baz").err == nil { + t.Errorf("setting subresource twice should result in error") + } +} + +func TestInvalidSegments(t *testing.T) { + invalidSegments := []string{".", "..", "test/segment", "test%2bsegment"} + setters := map[string]func(string, *Request){ + "namespace": func(s string, r *Request) { r.Namespace(s) }, + "resource": func(s string, r *Request) { r.Resource(s) }, + "name": func(s string, r *Request) { r.Name(s) }, + "subresource": func(s string, r *Request) { r.SubResource(s) }, + } + for _, invalidSegment := range invalidSegments { + for setterName, setter := range setters { + r := &Request{} + setter(invalidSegment, r) + if r.err == nil { + t.Errorf("%s: %s: expected error, got none", setterName, invalidSegment) + } + } + } +} + +func TestRequestParam(t *testing.T) { + r := (&Request{}).Param("foo", "a") + if !reflect.DeepEqual(r.params, url.Values{"foo": []string{"a"}}) { + t.Errorf("should have set a param: %#v", r) + } + + r.Param("bar", "1") + r.Param("bar", "2") + if !reflect.DeepEqual(r.params, url.Values{"foo": []string{"a"}, "bar": []string{"1", "2"}}) { + t.Errorf("should have set a param: %#v", r) + } +} + +func TestRequestVersionedParams(t *testing.T) { + r := (&Request{content: ContentConfig{GroupVersion: &v1.SchemeGroupVersion}}).Param("foo", "a") + if !reflect.DeepEqual(r.params, url.Values{"foo": []string{"a"}}) { + t.Errorf("should have set a param: %#v", r) + } + r.VersionedParams(&v1.PodLogOptions{Follow: true, Container: "bar"}, scheme.ParameterCodec) + + if !reflect.DeepEqual(r.params, url.Values{ + "foo": []string{"a"}, + "container": []string{"bar"}, + "follow": []string{"true"}, + }) { + t.Errorf("should have set a param: %#v", r) + } +} + +func TestRequestVersionedParamsFromListOptions(t *testing.T) { + r := &Request{content: ContentConfig{GroupVersion: &v1.SchemeGroupVersion}} + r.VersionedParams(&metav1.ListOptions{ResourceVersion: "1"}, scheme.ParameterCodec) + if !reflect.DeepEqual(r.params, url.Values{ + "resourceVersion": []string{"1"}, + }) { + t.Errorf("should have set a param: %#v", r) + } + + var timeout int64 = 10 + r.VersionedParams(&metav1.ListOptions{ResourceVersion: "2", TimeoutSeconds: &timeout}, scheme.ParameterCodec) + if !reflect.DeepEqual(r.params, url.Values{ + "resourceVersion": []string{"1", "2"}, + "timeoutSeconds": []string{"10"}, + }) { + t.Errorf("should have set a param: %#v", r) + } +} + +func TestRequestURI(t *testing.T) { + r := (&Request{}).Param("foo", "a") + r.Prefix("other") + r.RequestURI("/test?foo=b&a=b&c=1&c=2") + if r.pathPrefix != "/test" { + t.Errorf("path is wrong: %#v", r) + } + if !reflect.DeepEqual(r.params, url.Values{"a": []string{"b"}, "foo": []string{"b"}, "c": []string{"1", "2"}}) { + t.Errorf("should have set a param: %#v", r) + } +} + +type NotAnAPIObject struct{} + +func (obj NotAnAPIObject) GroupVersionKind() *schema.GroupVersionKind { return nil } +func (obj NotAnAPIObject) SetGroupVersionKind(gvk *schema.GroupVersionKind) {} + +func defaultContentConfig() ContentConfig { + gvCopy := v1.SchemeGroupVersion + return ContentConfig{ + ContentType: "application/json", + GroupVersion: &gvCopy, + NegotiatedSerializer: serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}, + } +} + +func defaultSerializers(t *testing.T) Serializers { + config := defaultContentConfig() + serializers, err := createSerializers(config) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + return *serializers +} + +func TestRequestBody(t *testing.T) { + // test unknown type + r := (&Request{}).Body([]string{"test"}) + if r.err == nil || r.body != nil { + t.Errorf("should have set err and left body nil: %#v", r) + } + + // test error set when failing to read file + f, err := ioutil.TempFile("", "test") + if err != nil { + t.Fatalf("unable to create temp file") + } + defer f.Close() + os.Remove(f.Name()) + r = (&Request{}).Body(f.Name()) + if r.err == nil || r.body != nil { + t.Errorf("should have set err and left body nil: %#v", r) + } + + // test unencodable api object + r = (&Request{content: defaultContentConfig()}).Body(&NotAnAPIObject{}) + if r.err == nil || r.body != nil { + t.Errorf("should have set err and left body nil: %#v", r) + } +} + +func TestResultIntoWithErrReturnsErr(t *testing.T) { + res := Result{err: errors.New("test")} + if err := res.Into(&v1.Pod{}); err != res.err { + t.Errorf("should have returned exact error from result") + } +} + +func TestResultIntoWithNoBodyReturnsErr(t *testing.T) { + res := Result{ + body: []byte{}, + decoder: scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), + } + if err := res.Into(&v1.Pod{}); err == nil || !strings.Contains(err.Error(), "0-length") { + t.Errorf("should have complained about 0 length body") + } +} + +func TestURLTemplate(t *testing.T) { + uri, _ := url.Parse("http://localhost") + r := NewRequest(nil, "POST", uri, "", ContentConfig{GroupVersion: &schema.GroupVersion{Group: "test"}}, Serializers{}, nil, nil) + r.Prefix("pre1").Resource("r1").Namespace("ns").Name("nm").Param("p0", "v0") + full := r.URL() + if full.String() != "http://localhost/pre1/namespaces/ns/r1/nm?p0=v0" { + t.Errorf("unexpected initial URL: %s", full) + } + actualURL := r.finalURLTemplate() + actual := actualURL.String() + expected := "http://localhost/pre1/namespaces/%7Bnamespace%7D/r1/%7Bname%7D?p0=%7Bvalue%7D" + if actual != expected { + t.Errorf("unexpected URL template: %s %s", actual, expected) + } + if r.URL().String() != full.String() { + t.Errorf("creating URL template changed request: %s -> %s", full.String(), r.URL().String()) + } +} + +func TestTransformResponse(t *testing.T) { + invalid := []byte("aaaaa") + uri, _ := url.Parse("http://localhost") + testCases := []struct { + Response *http.Response + Data []byte + Created bool + Error bool + ErrFn func(err error) bool + }{ + {Response: &http.Response{StatusCode: 200}, Data: []byte{}}, + {Response: &http.Response{StatusCode: 201}, Data: []byte{}, Created: true}, + {Response: &http.Response{StatusCode: 199}, Error: true}, + {Response: &http.Response{StatusCode: 500}, Error: true}, + {Response: &http.Response{StatusCode: 422}, Error: true}, + {Response: &http.Response{StatusCode: 409}, Error: true}, + {Response: &http.Response{StatusCode: 404}, Error: true}, + {Response: &http.Response{StatusCode: 401}, Error: true}, + { + Response: &http.Response{ + StatusCode: 401, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Error: true, + ErrFn: func(err error) bool { + return err.Error() != "aaaaa" && apierrors.IsUnauthorized(err) + }, + }, + { + Response: &http.Response{ + StatusCode: 401, + Header: http.Header{"Content-Type": []string{"text/any"}}, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Error: true, + ErrFn: func(err error) bool { + return strings.Contains(err.Error(), "server has asked for the client to provide") && apierrors.IsUnauthorized(err) + }, + }, + {Response: &http.Response{StatusCode: 403}, Error: true}, + {Response: &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewReader(invalid))}, Data: invalid}, + {Response: &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewReader(invalid))}, Data: invalid}, + } + for i, test := range testCases { + r := NewRequest(nil, "", uri, "", defaultContentConfig(), defaultSerializers(t), nil, nil) + if test.Response.Body == nil { + test.Response.Body = ioutil.NopCloser(bytes.NewReader([]byte{})) + } + result := r.transformResponse(test.Response, &http.Request{}) + response, created, err := result.body, result.statusCode == http.StatusCreated, result.err + hasErr := err != nil + if hasErr != test.Error { + t.Errorf("%d: unexpected error: %t %v", i, test.Error, err) + } else if hasErr && test.Response.StatusCode > 399 { + status, ok := err.(apierrors.APIStatus) + if !ok { + t.Errorf("%d: response should have been transformable into APIStatus: %v", i, err) + continue + } + if int(status.Status().Code) != test.Response.StatusCode { + t.Errorf("%d: status code did not match response: %#v", i, status.Status()) + } + } + if test.ErrFn != nil && !test.ErrFn(err) { + t.Errorf("%d: error function did not match: %v", i, err) + } + if !(test.Data == nil && response == nil) && !apiequality.Semantic.DeepDerivative(test.Data, response) { + t.Errorf("%d: unexpected response: %#v %#v", i, test.Data, response) + } + if test.Created != created { + t.Errorf("%d: expected created %t, got %t", i, test.Created, created) + } + } +} + +type renegotiator struct { + called bool + contentType string + params map[string]string + decoder runtime.Decoder + err error +} + +func (r *renegotiator) invoke(contentType string, params map[string]string) (runtime.Decoder, error) { + r.called = true + r.contentType = contentType + r.params = params + return r.decoder, r.err +} + +func TestTransformResponseNegotiate(t *testing.T) { + invalid := []byte("aaaaa") + uri, _ := url.Parse("http://localhost") + testCases := []struct { + Response *http.Response + Data []byte + Created bool + Error bool + ErrFn func(err error) bool + + ContentType string + Called bool + ExpectContentType string + Decoder runtime.Decoder + NegotiateErr error + }{ + { + ContentType: "application/json", + Response: &http.Response{ + StatusCode: 401, + Header: http.Header{"Content-Type": []string{"application/json"}}, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Error: true, + ErrFn: func(err error) bool { + return err.Error() != "aaaaa" && apierrors.IsUnauthorized(err) + }, + }, + { + ContentType: "application/json", + Response: &http.Response{ + StatusCode: 401, + Header: http.Header{"Content-Type": []string{"application/protobuf"}}, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Decoder: scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), + + Called: true, + ExpectContentType: "application/protobuf", + + Error: true, + ErrFn: func(err error) bool { + return err.Error() != "aaaaa" && apierrors.IsUnauthorized(err) + }, + }, + { + ContentType: "application/json", + Response: &http.Response{ + StatusCode: 500, + Header: http.Header{"Content-Type": []string{"application/,others"}}, + }, + Decoder: scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), + + Error: true, + ErrFn: func(err error) bool { + return err.Error() == "Internal error occurred: mime: expected token after slash" && err.(apierrors.APIStatus).Status().Code == 500 + }, + }, + { + // no negotiation when no content type specified + Response: &http.Response{ + StatusCode: 200, + Header: http.Header{"Content-Type": []string{"text/any"}}, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Decoder: scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), + }, + { + // no negotiation when no response content type specified + ContentType: "text/any", + Response: &http.Response{ + StatusCode: 200, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Decoder: scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), + }, + { + // unrecognized content type is not handled + ContentType: "application/json", + Response: &http.Response{ + StatusCode: 404, + Header: http.Header{"Content-Type": []string{"application/unrecognized"}}, + Body: ioutil.NopCloser(bytes.NewReader(invalid)), + }, + Decoder: scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), + + NegotiateErr: fmt.Errorf("aaaa"), + Called: true, + ExpectContentType: "application/unrecognized", + + Error: true, + ErrFn: func(err error) bool { + return err.Error() != "aaaaa" && apierrors.IsNotFound(err) + }, + }, + } + for i, test := range testCases { + serializers := defaultSerializers(t) + negotiator := &renegotiator{ + decoder: test.Decoder, + err: test.NegotiateErr, + } + serializers.RenegotiatedDecoder = negotiator.invoke + contentConfig := defaultContentConfig() + contentConfig.ContentType = test.ContentType + r := NewRequest(nil, "", uri, "", contentConfig, serializers, nil, nil) + if test.Response.Body == nil { + test.Response.Body = ioutil.NopCloser(bytes.NewReader([]byte{})) + } + result := r.transformResponse(test.Response, &http.Request{}) + _, err := result.body, result.err + hasErr := err != nil + if hasErr != test.Error { + t.Errorf("%d: unexpected error: %t %v", i, test.Error, err) + continue + } else if hasErr && test.Response.StatusCode > 399 { + status, ok := err.(apierrors.APIStatus) + if !ok { + t.Errorf("%d: response should have been transformable into APIStatus: %v", i, err) + continue + } + if int(status.Status().Code) != test.Response.StatusCode { + t.Errorf("%d: status code did not match response: %#v", i, status.Status()) + } + } + if test.ErrFn != nil && !test.ErrFn(err) { + t.Errorf("%d: error function did not match: %v", i, err) + } + if negotiator.called != test.Called { + t.Errorf("%d: negotiator called %t != %t", i, negotiator.called, test.Called) + } + if !test.Called { + continue + } + if negotiator.contentType != test.ExpectContentType { + t.Errorf("%d: unexpected content type: %s", i, negotiator.contentType) + } + } +} + +func TestTransformUnstructuredError(t *testing.T) { + testCases := []struct { + Req *http.Request + Res *http.Response + + Resource string + Name string + + ErrFn func(error) bool + Transformed error + }{ + { + Resource: "foo", + Name: "bar", + Req: &http.Request{ + Method: "POST", + }, + Res: &http.Response{ + StatusCode: http.StatusConflict, + Body: ioutil.NopCloser(bytes.NewReader(nil)), + }, + ErrFn: apierrors.IsAlreadyExists, + }, + { + Resource: "foo", + Name: "bar", + Req: &http.Request{ + Method: "PUT", + }, + Res: &http.Response{ + StatusCode: http.StatusConflict, + Body: ioutil.NopCloser(bytes.NewReader(nil)), + }, + ErrFn: apierrors.IsConflict, + }, + { + Resource: "foo", + Name: "bar", + Req: &http.Request{}, + Res: &http.Response{ + StatusCode: http.StatusNotFound, + Body: ioutil.NopCloser(bytes.NewReader(nil)), + }, + ErrFn: apierrors.IsNotFound, + }, + { + Req: &http.Request{}, + Res: &http.Response{ + StatusCode: http.StatusBadRequest, + Body: ioutil.NopCloser(bytes.NewReader(nil)), + }, + ErrFn: apierrors.IsBadRequest, + }, + { + // status in response overrides transformed result + Req: &http.Request{}, + Res: &http.Response{StatusCode: http.StatusBadRequest, Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"kind":"Status","apiVersion":"v1","status":"Failure","code":404}`)))}, + ErrFn: apierrors.IsBadRequest, + Transformed: &apierrors.StatusError{ + ErrStatus: metav1.Status{Status: metav1.StatusFailure, Code: http.StatusNotFound}, + }, + }, + { + // successful status is ignored + Req: &http.Request{}, + Res: &http.Response{StatusCode: http.StatusBadRequest, Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"kind":"Status","apiVersion":"v1","status":"Success","code":404}`)))}, + ErrFn: apierrors.IsBadRequest, + }, + { + // empty object does not change result + Req: &http.Request{}, + Res: &http.Response{StatusCode: http.StatusBadRequest, Body: ioutil.NopCloser(bytes.NewReader([]byte(`{}`)))}, + ErrFn: apierrors.IsBadRequest, + }, + { + // we default apiVersion for backwards compatibility with old clients + // TODO: potentially remove in 1.7 + Req: &http.Request{}, + Res: &http.Response{StatusCode: http.StatusBadRequest, Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"kind":"Status","status":"Failure","code":404}`)))}, + ErrFn: apierrors.IsBadRequest, + Transformed: &apierrors.StatusError{ + ErrStatus: metav1.Status{Status: metav1.StatusFailure, Code: http.StatusNotFound}, + }, + }, + { + // we do not default kind + Req: &http.Request{}, + Res: &http.Response{StatusCode: http.StatusBadRequest, Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"status":"Failure","code":404}`)))}, + ErrFn: apierrors.IsBadRequest, + }, + } + + for i, testCase := range testCases { + r := &Request{ + content: defaultContentConfig(), + serializers: defaultSerializers(t), + resourceName: testCase.Name, + resource: testCase.Resource, + } + result := r.transformResponse(testCase.Res, testCase.Req) + err := result.err + if !testCase.ErrFn(err) { + t.Errorf("unexpected error: %v", err) + continue + } + if !apierrors.IsUnexpectedServerError(err) { + t.Errorf("%d: unexpected error type: %v", i, err) + } + if len(testCase.Name) != 0 && !strings.Contains(err.Error(), testCase.Name) { + t.Errorf("unexpected error string: %s", err) + } + if len(testCase.Resource) != 0 && !strings.Contains(err.Error(), testCase.Resource) { + t.Errorf("unexpected error string: %s", err) + } + + // verify Error() properly transforms the error + transformed := result.Error() + expect := testCase.Transformed + if expect == nil { + expect = err + } + if !reflect.DeepEqual(expect, transformed) { + t.Errorf("%d: unexpected Error(): %s", i, diff.ObjectReflectDiff(expect, transformed)) + } + + // verify result.Get properly transforms the error + if _, err := result.Get(); !reflect.DeepEqual(expect, err) { + t.Errorf("%d: unexpected error on Get(): %s", i, diff.ObjectReflectDiff(expect, err)) + } + + // verify result.Into properly handles the error + if err := result.Into(&v1.Pod{}); !reflect.DeepEqual(expect, err) { + t.Errorf("%d: unexpected error on Into(): %s", i, diff.ObjectReflectDiff(expect, err)) + } + + // verify result.Raw leaves the error in the untransformed state + if _, err := result.Raw(); !reflect.DeepEqual(result.err, err) { + t.Errorf("%d: unexpected error on Raw(): %s", i, diff.ObjectReflectDiff(expect, err)) + } + } +} + +func TestRequestWatch(t *testing.T) { + testCases := []struct { + Request *Request + Err bool + ErrFn func(error) bool + Empty bool + }{ + { + Request: &Request{err: errors.New("bail")}, + Err: true, + }, + { + Request: &Request{baseURL: &url.URL{}, pathPrefix: "%"}, + Err: true, + }, + { + Request: &Request{ + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, errors.New("err") + }), + baseURL: &url.URL{}, + }, + Err: true, + }, + { + Request: &Request{ + content: defaultContentConfig(), + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusForbidden, + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + }, nil + }), + baseURL: &url.URL{}, + }, + Err: true, + ErrFn: func(err error) bool { + return apierrors.IsForbidden(err) + }, + }, + { + Request: &Request{ + content: defaultContentConfig(), + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusUnauthorized, + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + }, nil + }), + baseURL: &url.URL{}, + }, + Err: true, + ErrFn: func(err error) bool { + return apierrors.IsUnauthorized(err) + }, + }, + { + Request: &Request{ + content: defaultContentConfig(), + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusUnauthorized, + Body: ioutil.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &metav1.Status{ + Status: metav1.StatusFailure, + Reason: metav1.StatusReasonUnauthorized, + })))), + }, nil + }), + baseURL: &url.URL{}, + }, + Err: true, + ErrFn: func(err error) bool { + return apierrors.IsUnauthorized(err) + }, + }, + { + Request: &Request{ + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, io.EOF + }), + baseURL: &url.URL{}, + }, + Empty: true, + }, + { + Request: &Request{ + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, &url.Error{Err: io.EOF} + }), + baseURL: &url.URL{}, + }, + Empty: true, + }, + { + Request: &Request{ + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, errors.New("http: can't write HTTP request on broken connection") + }), + baseURL: &url.URL{}, + }, + Empty: true, + }, + { + Request: &Request{ + serializers: defaultSerializers(t), + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, errors.New("foo: connection reset by peer") + }), + baseURL: &url.URL{}, + }, + Empty: true, + }, + } + for i, testCase := range testCases { + t.Logf("testcase %v", testCase.Request) + testCase.Request.backoffMgr = &NoBackoff{} + watch, err := testCase.Request.Watch() + hasErr := err != nil + if hasErr != testCase.Err { + t.Errorf("%d: expected %t, got %t: %v", i, testCase.Err, hasErr, err) + continue + } + if testCase.ErrFn != nil && !testCase.ErrFn(err) { + t.Errorf("%d: error not valid: %v", i, err) + } + if hasErr && watch != nil { + t.Errorf("%d: watch should be nil when error is returned", i) + continue + } + if testCase.Empty { + _, ok := <-watch.ResultChan() + if ok { + t.Errorf("%d: expected the watch to be empty: %#v", i, watch) + } + } + } +} + +func TestRequestStream(t *testing.T) { + testCases := []struct { + Request *Request + Err bool + ErrFn func(error) bool + }{ + { + Request: &Request{err: errors.New("bail")}, + Err: true, + }, + { + Request: &Request{baseURL: &url.URL{}, pathPrefix: "%"}, + Err: true, + }, + { + Request: &Request{ + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, errors.New("err") + }), + baseURL: &url.URL{}, + }, + Err: true, + }, + { + Request: &Request{ + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusUnauthorized, + Body: ioutil.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), &metav1.Status{ + Status: metav1.StatusFailure, + Reason: metav1.StatusReasonUnauthorized, + })))), + }, nil + }), + content: defaultContentConfig(), + serializers: defaultSerializers(t), + baseURL: &url.URL{}, + }, + Err: true, + }, + { + Request: &Request{ + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusBadRequest, + Body: ioutil.NopCloser(bytes.NewReader([]byte(`{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"a container name must be specified for pod kube-dns-v20-mz5cv, choose one of: [kubedns dnsmasq healthz]","reason":"BadRequest","code":400}`))), + }, nil + }), + content: defaultContentConfig(), + serializers: defaultSerializers(t), + baseURL: &url.URL{}, + }, + Err: true, + ErrFn: func(err error) bool { + if err.Error() == "a container name must be specified for pod kube-dns-v20-mz5cv, choose one of: [kubedns dnsmasq healthz]" { + return true + } + return false + }, + }, + } + for i, testCase := range testCases { + testCase.Request.backoffMgr = &NoBackoff{} + body, err := testCase.Request.Stream() + hasErr := err != nil + if hasErr != testCase.Err { + t.Errorf("%d: expected %t, got %t: %v", i, testCase.Err, hasErr, err) + } + if hasErr && body != nil { + t.Errorf("%d: body should be nil when error is returned", i) + } + + if hasErr { + if testCase.ErrFn != nil && !testCase.ErrFn(err) { + t.Errorf("unexpected error: %v", err) + } + } + } +} + +type fakeUpgradeConnection struct{} + +func (c *fakeUpgradeConnection) CreateStream(headers http.Header) (httpstream.Stream, error) { + return nil, nil +} +func (c *fakeUpgradeConnection) Close() error { + return nil +} +func (c *fakeUpgradeConnection) CloseChan() <-chan bool { + return make(chan bool) +} +func (c *fakeUpgradeConnection) SetIdleTimeout(timeout time.Duration) { +} + +type fakeUpgradeRoundTripper struct { + req *http.Request + conn httpstream.Connection +} + +func (f *fakeUpgradeRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + f.req = req + b := []byte{} + body := ioutil.NopCloser(bytes.NewReader(b)) + resp := &http.Response{ + StatusCode: 101, + Body: body, + } + return resp, nil +} + +func (f *fakeUpgradeRoundTripper) NewConnection(resp *http.Response) (httpstream.Connection, error) { + return f.conn, nil +} + +func TestRequestDo(t *testing.T) { + testCases := []struct { + Request *Request + Err bool + }{ + { + Request: &Request{err: errors.New("bail")}, + Err: true, + }, + { + Request: &Request{baseURL: &url.URL{}, pathPrefix: "%"}, + Err: true, + }, + { + Request: &Request{ + client: clientFunc(func(req *http.Request) (*http.Response, error) { + return nil, errors.New("err") + }), + baseURL: &url.URL{}, + }, + Err: true, + }, + } + for i, testCase := range testCases { + testCase.Request.backoffMgr = &NoBackoff{} + body, err := testCase.Request.Do().Raw() + hasErr := err != nil + if hasErr != testCase.Err { + t.Errorf("%d: expected %t, got %t: %v", i, testCase.Err, hasErr, err) + } + if hasErr && body != nil { + t.Errorf("%d: body should be nil when error is returned", i) + } + } +} + +func TestDoRequestNewWay(t *testing.T) { + reqBody := "request body" + expectedObj := &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{ + Protocol: "TCP", + Port: 12345, + TargetPort: intstr.FromInt(12345), + }}}} + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expectedObj) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 200, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + c := testRESTClient(t, testServer) + obj, err := c.Verb("POST"). + Prefix("foo", "bar"). + Suffix("baz"). + Timeout(time.Second). + Body([]byte(reqBody)). + Do().Get() + if err != nil { + t.Errorf("Unexpected error: %v %#v", err, err) + return + } + if obj == nil { + t.Error("nil obj") + } else if !apiequality.Semantic.DeepDerivative(expectedObj, obj) { + t.Errorf("Expected: %#v, got %#v", expectedObj, obj) + } + requestURL := defaultResourcePathWithPrefix("foo/bar", "", "", "baz") + requestURL += "?timeout=1s" + fakeHandler.ValidateRequest(t, requestURL, "POST", &reqBody) +} + +// This test assumes that the client implementation backs off exponentially, for an individual request. +func TestBackoffLifecycle(t *testing.T) { + count := 0 + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + count++ + t.Logf("Attempt %d", count) + if count == 5 || count == 9 { + w.WriteHeader(http.StatusOK) + return + } else { + w.WriteHeader(http.StatusGatewayTimeout) + return + } + })) + defer testServer.Close() + c := testRESTClient(t, testServer) + + // Test backoff recovery and increase. This correlates to the constants + // which are used in the server implementation returning StatusOK above. + seconds := []int{0, 1, 2, 4, 8, 0, 1, 2, 4, 0} + request := c.Verb("POST").Prefix("backofftest").Suffix("abc") + clock := clock.FakeClock{} + request.backoffMgr = &URLBackoff{ + // Use a fake backoff here to avoid flakes and speed the test up. + Backoff: flowcontrol.NewFakeBackOff( + time.Duration(1)*time.Second, + time.Duration(200)*time.Second, + &clock, + )} + + for _, sec := range seconds { + thisBackoff := request.backoffMgr.CalculateBackoff(request.URL()) + t.Logf("Current backoff %v", thisBackoff) + if thisBackoff != time.Duration(sec)*time.Second { + t.Errorf("Backoff is %v instead of %v", thisBackoff, sec) + } + now := clock.Now() + request.DoRaw() + elapsed := clock.Since(now) + if clock.Since(now) != thisBackoff { + t.Errorf("CalculatedBackoff not honored by clock: Expected time of %v, but got %v ", thisBackoff, elapsed) + } + } +} + +type testBackoffManager struct { + sleeps []time.Duration +} + +func (b *testBackoffManager) UpdateBackoff(actualUrl *url.URL, err error, responseCode int) { +} + +func (b *testBackoffManager) CalculateBackoff(actualUrl *url.URL) time.Duration { + return time.Duration(0) +} + +func (b *testBackoffManager) Sleep(d time.Duration) { + b.sleeps = append(b.sleeps, d) +} + +func TestCheckRetryClosesBody(t *testing.T) { + count := 0 + ch := make(chan struct{}) + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + count++ + t.Logf("attempt %d", count) + if count >= 5 { + w.WriteHeader(http.StatusOK) + close(ch) + return + } + w.Header().Set("Retry-After", "1") + http.Error(w, "Too many requests, please try again later.", apierrors.StatusTooManyRequests) + })) + defer testServer.Close() + + backoffMgr := &testBackoffManager{} + expectedSleeps := []time.Duration{0, time.Second, 0, time.Second, 0, time.Second, 0, time.Second, 0} + + c := testRESTClient(t, testServer) + c.createBackoffMgr = func() BackoffManager { return backoffMgr } + _, err := c.Verb("POST"). + Prefix("foo", "bar"). + Suffix("baz"). + Timeout(time.Second). + Body([]byte(strings.Repeat("abcd", 1000))). + DoRaw() + if err != nil { + t.Fatalf("Unexpected error: %v %#v", err, err) + } + <-ch + if count != 5 { + t.Errorf("unexpected retries: %d", count) + } + if !reflect.DeepEqual(backoffMgr.sleeps, expectedSleeps) { + t.Errorf("unexpected sleeps, expected: %v, got: %v", expectedSleeps, backoffMgr.sleeps) + } +} + +func TestConnectionResetByPeerIsRetried(t *testing.T) { + count := 0 + backoff := &testBackoffManager{} + req := &Request{ + verb: "GET", + client: clientFunc(func(req *http.Request) (*http.Response, error) { + count++ + if count >= 3 { + return &http.Response{ + StatusCode: 200, + Body: ioutil.NopCloser(bytes.NewReader([]byte{})), + }, nil + } + return nil, &net.OpError{Err: syscall.ECONNRESET} + }), + backoffMgr: backoff, + } + // We expect two retries of "connection reset by peer" and the success. + _, err := req.Do().Raw() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + // We have a sleep before each retry (including the initial one) and for + // every "retry-after" call - thus 5 together. + if len(backoff.sleeps) != 5 { + t.Errorf("Expected 5 retries, got: %d", len(backoff.sleeps)) + } +} + +func TestCheckRetryHandles429And5xx(t *testing.T) { + count := 0 + ch := make(chan struct{}) + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + data, err := ioutil.ReadAll(req.Body) + if err != nil { + t.Fatalf("unable to read request body: %v", err) + } + if !bytes.Equal(data, []byte(strings.Repeat("abcd", 1000))) { + t.Fatalf("retry did not send a complete body: %s", data) + } + t.Logf("attempt %d", count) + if count >= 4 { + w.WriteHeader(http.StatusOK) + close(ch) + return + } + w.Header().Set("Retry-After", "0") + w.WriteHeader([]int{apierrors.StatusTooManyRequests, 500, 501, 504}[count]) + count++ + })) + defer testServer.Close() + + c := testRESTClient(t, testServer) + _, err := c.Verb("POST"). + Prefix("foo", "bar"). + Suffix("baz"). + Timeout(time.Second). + Body([]byte(strings.Repeat("abcd", 1000))). + DoRaw() + if err != nil { + t.Fatalf("Unexpected error: %v %#v", err, err) + } + <-ch + if count != 4 { + t.Errorf("unexpected retries: %d", count) + } +} + +func BenchmarkCheckRetryClosesBody(b *testing.B) { + count := 0 + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + count++ + if count%3 == 0 { + w.WriteHeader(http.StatusOK) + return + } + w.Header().Set("Retry-After", "0") + w.WriteHeader(apierrors.StatusTooManyRequests) + })) + defer testServer.Close() + + c := testRESTClient(b, testServer) + r := c.Verb("POST"). + Prefix("foo", "bar"). + Suffix("baz"). + Timeout(time.Second). + Body([]byte(strings.Repeat("abcd", 1000))) + + for i := 0; i < b.N; i++ { + if _, err := r.DoRaw(); err != nil { + b.Fatalf("Unexpected error: %v %#v", err, err) + } + } +} + +func TestDoRequestNewWayReader(t *testing.T) { + reqObj := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + reqBodyExpected, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), reqObj) + expectedObj := &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{ + Protocol: "TCP", + Port: 12345, + TargetPort: intstr.FromInt(12345), + }}}} + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expectedObj) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 200, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + c := testRESTClient(t, testServer) + obj, err := c.Verb("POST"). + Resource("bar"). + Name("baz"). + Prefix("foo"). + LabelsSelectorParam(labels.Set{"name": "foo"}.AsSelector()). + Timeout(time.Second). + Body(bytes.NewBuffer(reqBodyExpected)). + Do().Get() + if err != nil { + t.Errorf("Unexpected error: %v %#v", err, err) + return + } + if obj == nil { + t.Error("nil obj") + } else if !apiequality.Semantic.DeepDerivative(expectedObj, obj) { + t.Errorf("Expected: %#v, got %#v", expectedObj, obj) + } + tmpStr := string(reqBodyExpected) + requestURL := defaultResourcePathWithPrefix("foo", "bar", "", "baz") + requestURL += "?" + metav1.LabelSelectorQueryParam(v1.SchemeGroupVersion.String()) + "=name%3Dfoo&timeout=1s" + fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr) +} + +func TestDoRequestNewWayObj(t *testing.T) { + reqObj := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + reqBodyExpected, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), reqObj) + expectedObj := &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{ + Protocol: "TCP", + Port: 12345, + TargetPort: intstr.FromInt(12345), + }}}} + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expectedObj) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 200, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + c := testRESTClient(t, testServer) + obj, err := c.Verb("POST"). + Suffix("baz"). + Name("bar"). + Resource("foo"). + LabelsSelectorParam(labels.Set{"name": "foo"}.AsSelector()). + Timeout(time.Second). + Body(reqObj). + Do().Get() + if err != nil { + t.Errorf("Unexpected error: %v %#v", err, err) + return + } + if obj == nil { + t.Error("nil obj") + } else if !apiequality.Semantic.DeepDerivative(expectedObj, obj) { + t.Errorf("Expected: %#v, got %#v", expectedObj, obj) + } + tmpStr := string(reqBodyExpected) + requestURL := defaultResourcePathWithPrefix("", "foo", "", "bar/baz") + requestURL += "?" + metav1.LabelSelectorQueryParam(v1.SchemeGroupVersion.String()) + "=name%3Dfoo&timeout=1s" + fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr) +} + +func TestDoRequestNewWayFile(t *testing.T) { + reqObj := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + reqBodyExpected, err := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), reqObj) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + file, err := ioutil.TempFile("", "foo") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + defer file.Close() + defer os.Remove(file.Name()) + + _, err = file.Write(reqBodyExpected) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + expectedObj := &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{ + Protocol: "TCP", + Port: 12345, + TargetPort: intstr.FromInt(12345), + }}}} + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expectedObj) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 200, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + c := testRESTClient(t, testServer) + wasCreated := true + obj, err := c.Verb("POST"). + Prefix("foo/bar", "baz"). + Timeout(time.Second). + Body(file.Name()). + Do().WasCreated(&wasCreated).Get() + if err != nil { + t.Errorf("Unexpected error: %v %#v", err, err) + return + } + if obj == nil { + t.Error("nil obj") + } else if !apiequality.Semantic.DeepDerivative(expectedObj, obj) { + t.Errorf("Expected: %#v, got %#v", expectedObj, obj) + } + if wasCreated { + t.Errorf("expected object was created") + } + tmpStr := string(reqBodyExpected) + requestURL := defaultResourcePathWithPrefix("foo/bar/baz", "", "", "") + requestURL += "?timeout=1s" + fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr) +} + +func TestWasCreated(t *testing.T) { + reqObj := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + reqBodyExpected, err := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), reqObj) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + expectedObj := &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{ + Protocol: "TCP", + Port: 12345, + TargetPort: intstr.FromInt(12345), + }}}} + expectedBody, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expectedObj) + fakeHandler := utiltesting.FakeHandler{ + StatusCode: 201, + ResponseBody: string(expectedBody), + T: t, + } + testServer := httptest.NewServer(&fakeHandler) + defer testServer.Close() + c := testRESTClient(t, testServer) + wasCreated := false + obj, err := c.Verb("PUT"). + Prefix("foo/bar", "baz"). + Timeout(time.Second). + Body(reqBodyExpected). + Do().WasCreated(&wasCreated).Get() + if err != nil { + t.Errorf("Unexpected error: %v %#v", err, err) + return + } + if obj == nil { + t.Error("nil obj") + } else if !apiequality.Semantic.DeepDerivative(expectedObj, obj) { + t.Errorf("Expected: %#v, got %#v", expectedObj, obj) + } + if !wasCreated { + t.Errorf("Expected object was created") + } + + tmpStr := string(reqBodyExpected) + requestURL := defaultResourcePathWithPrefix("foo/bar/baz", "", "", "") + requestURL += "?timeout=1s" + fakeHandler.ValidateRequest(t, requestURL, "PUT", &tmpStr) +} + +func TestVerbs(t *testing.T) { + c := testRESTClient(t, nil) + if r := c.Post(); r.verb != "POST" { + t.Errorf("Post verb is wrong") + } + if r := c.Put(); r.verb != "PUT" { + t.Errorf("Put verb is wrong") + } + if r := c.Get(); r.verb != "GET" { + t.Errorf("Get verb is wrong") + } + if r := c.Delete(); r.verb != "DELETE" { + t.Errorf("Delete verb is wrong") + } +} + +func TestAbsPath(t *testing.T) { + for i, tc := range []struct { + configPrefix string + resourcePrefix string + absPath string + wantsAbsPath string + }{ + {"/", "", "", "/"}, + {"", "", "/", "/"}, + {"", "", "/api", "/api"}, + {"", "", "/api/", "/api/"}, + {"", "", "/apis", "/apis"}, + {"", "/foo", "/bar/foo", "/bar/foo"}, + {"", "/api/foo/123", "/bar/foo", "/bar/foo"}, + {"/p1", "", "", "/p1"}, + {"/p1", "", "/", "/p1/"}, + {"/p1", "", "/api", "/p1/api"}, + {"/p1", "", "/apis", "/p1/apis"}, + {"/p1", "/r1", "/apis", "/p1/apis"}, + {"/p1", "/api/r1", "/apis", "/p1/apis"}, + {"/p1/api/p2", "", "", "/p1/api/p2"}, + {"/p1/api/p2", "", "/", "/p1/api/p2/"}, + {"/p1/api/p2", "", "/api", "/p1/api/p2/api"}, + {"/p1/api/p2", "", "/api/", "/p1/api/p2/api/"}, + {"/p1/api/p2", "/r1", "/api/", "/p1/api/p2/api/"}, + {"/p1/api/p2", "/api/r1", "/api/", "/p1/api/p2/api/"}, + } { + u, _ := url.Parse("http://localhost:123" + tc.configPrefix) + r := NewRequest(nil, "POST", u, "", ContentConfig{GroupVersion: &schema.GroupVersion{Group: "test"}}, Serializers{}, nil, nil).Prefix(tc.resourcePrefix).AbsPath(tc.absPath) + if r.pathPrefix != tc.wantsAbsPath { + t.Errorf("test case %d failed, unexpected path: %q, expected %q", i, r.pathPrefix, tc.wantsAbsPath) + } + } +} + +func TestUintParam(t *testing.T) { + table := []struct { + name string + testVal uint64 + expectStr string + }{ + {"foo", 31415, "http://localhost?foo=31415"}, + {"bar", 42, "http://localhost?bar=42"}, + {"baz", 0, "http://localhost?baz=0"}, + } + + for _, item := range table { + u, _ := url.Parse("http://localhost") + r := NewRequest(nil, "GET", u, "", ContentConfig{GroupVersion: &schema.GroupVersion{Group: "test"}}, Serializers{}, nil, nil).AbsPath("").UintParam(item.name, item.testVal) + if e, a := item.expectStr, r.URL().String(); e != a { + t.Errorf("expected %v, got %v", e, a) + } + } +} + +func TestUnacceptableParamNames(t *testing.T) { + table := []struct { + name string + testVal string + expectSuccess bool + }{ + {"timeout", "42", false}, + } + + for _, item := range table { + c := testRESTClient(t, nil) + r := c.Get().setParam(item.name, item.testVal) + if e, a := item.expectSuccess, r.err == nil; e != a { + t.Errorf("expected %v, got %v (%v)", e, a, r.err) + } + } +} + +func TestBody(t *testing.T) { + const data = "test payload" + + obj := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + bodyExpected, _ := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), obj) + + f, err := ioutil.TempFile("", "test_body") + if err != nil { + t.Fatalf("TempFile error: %v", err) + } + if _, err := f.WriteString(data); err != nil { + t.Fatalf("TempFile.WriteString error: %v", err) + } + f.Close() + defer os.Remove(f.Name()) + + var nilObject *v1.DeleteOptions + typedObject := interface{}(nilObject) + c := testRESTClient(t, nil) + tests := []struct { + input interface{} + expected string + headers map[string]string + }{ + {[]byte(data), data, nil}, + {f.Name(), data, nil}, + {strings.NewReader(data), data, nil}, + {obj, string(bodyExpected), map[string]string{"Content-Type": "application/json"}}, + {typedObject, "", nil}, + } + for i, tt := range tests { + r := c.Post().Body(tt.input) + if r.err != nil { + t.Errorf("%d: r.Body(%#v) error: %v", i, tt, r.err) + continue + } + if tt.headers != nil { + for k, v := range tt.headers { + if r.headers.Get(k) != v { + t.Errorf("%d: r.headers[%q] = %q; want %q", i, k, v, v) + } + } + } + + if r.body == nil { + if len(tt.expected) != 0 { + t.Errorf("%d: r.body = %q; want %q", i, r.body, tt.expected) + } + continue + } + buf := make([]byte, len(tt.expected)) + if _, err := r.body.Read(buf); err != nil { + t.Errorf("%d: r.body.Read error: %v", i, err) + continue + } + body := string(buf) + if body != tt.expected { + t.Errorf("%d: r.body = %q; want %q", i, body, tt.expected) + } + } +} + +func TestWatch(t *testing.T) { + var table = []struct { + t watch.EventType + obj runtime.Object + }{ + {watch.Added, &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "first"}}}, + {watch.Modified, &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "second"}}}, + {watch.Deleted, &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "last"}}}, + } + + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + flusher, ok := w.(http.Flusher) + if !ok { + panic("need flusher!") + } + + w.Header().Set("Transfer-Encoding", "chunked") + w.WriteHeader(http.StatusOK) + flusher.Flush() + + encoder := restclientwatch.NewEncoder(streaming.NewEncoder(w, scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion)), scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion)) + for _, item := range table { + if err := encoder.Encode(&watch.Event{Type: item.t, Object: item.obj}); err != nil { + panic(err) + } + flusher.Flush() + } + })) + defer testServer.Close() + + s := testRESTClient(t, testServer) + watching, err := s.Get().Prefix("path/to/watch/thing").Watch() + if err != nil { + t.Fatalf("Unexpected error") + } + + for _, item := range table { + got, ok := <-watching.ResultChan() + if !ok { + t.Fatalf("Unexpected early close") + } + if e, a := item.t, got.Type; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + if e, a := item.obj, got.Object; !apiequality.Semantic.DeepDerivative(e, a) { + t.Errorf("Expected %v, got %v", e, a) + } + } + + _, ok := <-watching.ResultChan() + if ok { + t.Fatal("Unexpected non-close") + } +} + +func TestStream(t *testing.T) { + expectedBody := "expected body" + + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + flusher, ok := w.(http.Flusher) + if !ok { + panic("need flusher!") + } + w.Header().Set("Transfer-Encoding", "chunked") + w.WriteHeader(http.StatusOK) + w.Write([]byte(expectedBody)) + flusher.Flush() + })) + defer testServer.Close() + + s := testRESTClient(t, testServer) + readCloser, err := s.Get().Prefix("path/to/stream/thing").Stream() + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + defer readCloser.Close() + buf := new(bytes.Buffer) + buf.ReadFrom(readCloser) + resultBody := buf.String() + + if expectedBody != resultBody { + t.Errorf("Expected %s, got %s", expectedBody, resultBody) + } +} + +func testRESTClient(t testing.TB, srv *httptest.Server) *RESTClient { + baseURL, _ := url.Parse("http://localhost") + if srv != nil { + var err error + baseURL, err = url.Parse(srv.URL) + if err != nil { + t.Fatalf("failed to parse test URL: %v", err) + } + } + versionedAPIPath := defaultResourcePathWithPrefix("", "", "", "") + client, err := NewRESTClient(baseURL, versionedAPIPath, defaultContentConfig(), 0, 0, nil, nil) + if err != nil { + t.Fatalf("failed to create a client: %v", err) + } + return client +} + +func TestDoContext(t *testing.T) { + receivedCh := make(chan struct{}) + block := make(chan struct{}) + testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + close(receivedCh) + <-block + w.WriteHeader(http.StatusOK) + })) + defer testServer.Close() + defer close(block) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + go func() { + <-receivedCh + cancel() + }() + + c := testRESTClient(t, testServer) + _, err := c.Verb("GET"). + Context(ctx). + Prefix("foo"). + DoRaw() + if err == nil { + t.Fatal("Expected context cancellation error") + } +} + +func defaultResourcePathWithPrefix(prefix, resource, namespace, name string) string { + var path string + path = "/api/" + v1.SchemeGroupVersion.Version + + if prefix != "" { + path = path + "/" + prefix + } + if namespace != "" { + path = path + "/namespaces/" + namespace + } + // Resource names are lower case. + resource = strings.ToLower(resource) + if resource != "" { + path = path + "/" + resource + } + if name != "" { + path = path + "/" + name + } + return path +} diff --git a/vendor/k8s.io/client-go/rest/transport.go b/vendor/k8s.io/client-go/rest/transport.go new file mode 100644 index 000000000..ba43752bc --- /dev/null +++ b/vendor/k8s.io/client-go/rest/transport.go @@ -0,0 +1,99 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "crypto/tls" + "net/http" + + "k8s.io/client-go/transport" +) + +// TLSConfigFor returns a tls.Config that will provide the transport level security defined +// by the provided Config. Will return nil if no transport level security is requested. +func TLSConfigFor(config *Config) (*tls.Config, error) { + cfg, err := config.TransportConfig() + if err != nil { + return nil, err + } + return transport.TLSConfigFor(cfg) +} + +// TransportFor returns an http.RoundTripper that will provide the authentication +// or transport level security defined by the provided Config. Will return the +// default http.DefaultTransport if no special case behavior is needed. +func TransportFor(config *Config) (http.RoundTripper, error) { + cfg, err := config.TransportConfig() + if err != nil { + return nil, err + } + return transport.New(cfg) +} + +// HTTPWrappersForConfig wraps a round tripper with any relevant layered behavior from the +// config. Exposed to allow more clients that need HTTP-like behavior but then must hijack +// the underlying connection (like WebSocket or HTTP2 clients). Pure HTTP clients should use +// the higher level TransportFor or RESTClientFor methods. +func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTripper, error) { + cfg, err := config.TransportConfig() + if err != nil { + return nil, err + } + return transport.HTTPWrappersForConfig(cfg, rt) +} + +// TransportConfig converts a client config to an appropriate transport config. +func (c *Config) TransportConfig() (*transport.Config, error) { + wt := c.WrapTransport + if c.AuthProvider != nil { + provider, err := GetAuthProvider(c.Host, c.AuthProvider, c.AuthConfigPersister) + if err != nil { + return nil, err + } + if wt != nil { + previousWT := wt + wt = func(rt http.RoundTripper) http.RoundTripper { + return provider.WrapTransport(previousWT(rt)) + } + } else { + wt = provider.WrapTransport + } + } + return &transport.Config{ + UserAgent: c.UserAgent, + Transport: c.Transport, + WrapTransport: wt, + TLS: transport.TLSConfig{ + Insecure: c.Insecure, + ServerName: c.ServerName, + CAFile: c.CAFile, + CAData: c.CAData, + CertFile: c.CertFile, + CertData: c.CertData, + KeyFile: c.KeyFile, + KeyData: c.KeyData, + }, + Username: c.Username, + Password: c.Password, + BearerToken: c.BearerToken, + Impersonate: transport.ImpersonationConfig{ + UserName: c.Impersonate.UserName, + Groups: c.Impersonate.Groups, + Extra: c.Impersonate.Extra, + }, + }, nil +} diff --git a/vendor/k8s.io/client-go/rest/url_utils.go b/vendor/k8s.io/client-go/rest/url_utils.go new file mode 100644 index 000000000..14f94650a --- /dev/null +++ b/vendor/k8s.io/client-go/rest/url_utils.go @@ -0,0 +1,90 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "net/url" + "path" + + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// DefaultServerURL converts a host, host:port, or URL string to the default base server API path +// to use with a Client at a given API version following the standard conventions for a +// Kubernetes API. +func DefaultServerURL(host, apiPath string, groupVersion schema.GroupVersion, defaultTLS bool) (*url.URL, string, error) { + if host == "" { + return nil, "", fmt.Errorf("host must be a URL or a host:port pair") + } + base := host + hostURL, err := url.Parse(base) + if err != nil || hostURL.Scheme == "" || hostURL.Host == "" { + scheme := "http://" + if defaultTLS { + scheme = "https://" + } + hostURL, err = url.Parse(scheme + base) + if err != nil { + return nil, "", err + } + if hostURL.Path != "" && hostURL.Path != "/" { + return nil, "", fmt.Errorf("host must be a URL or a host:port pair: %q", base) + } + } + + // hostURL.Path is optional; a non-empty Path is treated as a prefix that is to be applied to + // all URIs used to access the host. this is useful when there's a proxy in front of the + // apiserver that has relocated the apiserver endpoints, forwarding all requests from, for + // example, /a/b/c to the apiserver. in this case the Path should be /a/b/c. + // + // if running without a frontend proxy (that changes the location of the apiserver), then + // hostURL.Path should be blank. + // + // versionedAPIPath, a path relative to baseURL.Path, points to a versioned API base + versionedAPIPath := path.Join("/", apiPath) + + // Add the version to the end of the path + if len(groupVersion.Group) > 0 { + versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Group, groupVersion.Version) + + } else { + versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Version) + + } + + return hostURL, versionedAPIPath, nil +} + +// defaultServerUrlFor is shared between IsConfigTransportTLS and RESTClientFor. It +// requires Host and Version to be set prior to being called. +func defaultServerUrlFor(config *Config) (*url.URL, string, error) { + // TODO: move the default to secure when the apiserver supports TLS by default + // config.Insecure is taken to mean "I want HTTPS but don't bother checking the certs against a CA." + hasCA := len(config.CAFile) != 0 || len(config.CAData) != 0 + hasCert := len(config.CertFile) != 0 || len(config.CertData) != 0 + defaultTLS := hasCA || hasCert || config.Insecure + host := config.Host + if host == "" { + host = "localhost" + } + + if config.GroupVersion != nil { + return DefaultServerURL(host, config.APIPath, *config.GroupVersion, defaultTLS) + } + return DefaultServerURL(host, config.APIPath, schema.GroupVersion{}, defaultTLS) +} diff --git a/vendor/k8s.io/client-go/rest/url_utils_test.go b/vendor/k8s.io/client-go/rest/url_utils_test.go new file mode 100644 index 000000000..e53644f7e --- /dev/null +++ b/vendor/k8s.io/client-go/rest/url_utils_test.go @@ -0,0 +1,61 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "path" + "testing" + + "k8s.io/client-go/pkg/api/v1" +) + +func TestValidatesHostParameter(t *testing.T) { + testCases := []struct { + Host string + APIPath string + + URL string + Err bool + }{ + {"127.0.0.1", "", "http://127.0.0.1/" + v1.SchemeGroupVersion.Version, false}, + {"127.0.0.1:8080", "", "http://127.0.0.1:8080/" + v1.SchemeGroupVersion.Version, false}, + {"foo.bar.com", "", "http://foo.bar.com/" + v1.SchemeGroupVersion.Version, false}, + {"http://host/prefix", "", "http://host/prefix/" + v1.SchemeGroupVersion.Version, false}, + {"http://host", "", "http://host/" + v1.SchemeGroupVersion.Version, false}, + {"http://host", "/", "http://host/" + v1.SchemeGroupVersion.Version, false}, + {"http://host", "/other", "http://host/other/" + v1.SchemeGroupVersion.Version, false}, + {"host/server", "", "", true}, + } + for i, testCase := range testCases { + u, versionedAPIPath, err := DefaultServerURL(testCase.Host, testCase.APIPath, v1.SchemeGroupVersion, false) + switch { + case err == nil && testCase.Err: + t.Errorf("expected error but was nil") + continue + case err != nil && !testCase.Err: + t.Errorf("unexpected error %v", err) + continue + case err != nil: + continue + } + u.Path = path.Join(u.Path, versionedAPIPath) + if e, a := testCase.URL, u.String(); e != a { + t.Errorf("%d: expected host %s, got %s", i, e, a) + continue + } + } +} diff --git a/vendor/k8s.io/client-go/rest/urlbackoff.go b/vendor/k8s.io/client-go/rest/urlbackoff.go new file mode 100644 index 000000000..eff848abc --- /dev/null +++ b/vendor/k8s.io/client-go/rest/urlbackoff.go @@ -0,0 +1,107 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "net/url" + "time" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/client-go/util/flowcontrol" +) + +// Set of resp. Codes that we backoff for. +// In general these should be errors that indicate a server is overloaded. +// These shouldn't be configured by any user, we set them based on conventions +// described in +var serverIsOverloadedSet = sets.NewInt(429) +var maxResponseCode = 499 + +type BackoffManager interface { + UpdateBackoff(actualUrl *url.URL, err error, responseCode int) + CalculateBackoff(actualUrl *url.URL) time.Duration + Sleep(d time.Duration) +} + +// URLBackoff struct implements the semantics on top of Backoff which +// we need for URL specific exponential backoff. +type URLBackoff struct { + // Uses backoff as underlying implementation. + Backoff *flowcontrol.Backoff +} + +// NoBackoff is a stub implementation, can be used for mocking or else as a default. +type NoBackoff struct { +} + +func (n *NoBackoff) UpdateBackoff(actualUrl *url.URL, err error, responseCode int) { + // do nothing. +} + +func (n *NoBackoff) CalculateBackoff(actualUrl *url.URL) time.Duration { + return 0 * time.Second +} + +func (n *NoBackoff) Sleep(d time.Duration) { + time.Sleep(d) +} + +// Disable makes the backoff trivial, i.e., sets it to zero. This might be used +// by tests which want to run 1000s of mock requests without slowing down. +func (b *URLBackoff) Disable() { + glog.V(4).Infof("Disabling backoff strategy") + b.Backoff = flowcontrol.NewBackOff(0*time.Second, 0*time.Second) +} + +// baseUrlKey returns the key which urls will be mapped to. +// For example, 127.0.0.1:8080/api/v2/abcde -> 127.0.0.1:8080. +func (b *URLBackoff) baseUrlKey(rawurl *url.URL) string { + // Simple implementation for now, just the host. + // We may backoff specific paths (i.e. "pods") differentially + // in the future. + host, err := url.Parse(rawurl.String()) + if err != nil { + glog.V(4).Infof("Error extracting url: %v", rawurl) + panic("bad url!") + } + return host.Host +} + +// UpdateBackoff updates backoff metadata +func (b *URLBackoff) UpdateBackoff(actualUrl *url.URL, err error, responseCode int) { + // range for retry counts that we store is [0,13] + if responseCode > maxResponseCode || serverIsOverloadedSet.Has(responseCode) { + b.Backoff.Next(b.baseUrlKey(actualUrl), b.Backoff.Clock.Now()) + return + } else if responseCode >= 300 || err != nil { + glog.V(4).Infof("Client is returning errors: code %v, error %v", responseCode, err) + } + + //If we got this far, there is no backoff required for this URL anymore. + b.Backoff.Reset(b.baseUrlKey(actualUrl)) +} + +// CalculateBackoff takes a url and back's off exponentially, +// based on its knowledge of existing failures. +func (b *URLBackoff) CalculateBackoff(actualUrl *url.URL) time.Duration { + return b.Backoff.Get(b.baseUrlKey(actualUrl)) +} + +func (b *URLBackoff) Sleep(d time.Duration) { + b.Backoff.Clock.Sleep(d) +} diff --git a/vendor/k8s.io/client-go/rest/urlbackoff_test.go b/vendor/k8s.io/client-go/rest/urlbackoff_test.go new file mode 100644 index 000000000..c5f439238 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/urlbackoff_test.go @@ -0,0 +1,79 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "net/url" + "testing" + "time" + + "k8s.io/client-go/util/flowcontrol" +) + +func parse(raw string) *url.URL { + theUrl, _ := url.Parse(raw) + return theUrl +} + +func TestURLBackoffFunctionalityCollisions(t *testing.T) { + myBackoff := &URLBackoff{ + Backoff: flowcontrol.NewBackOff(1*time.Second, 60*time.Second), + } + + // Add some noise and make sure backoff for a clean URL is zero. + myBackoff.UpdateBackoff(parse("http://100.200.300.400:8080"), nil, 500) + + myBackoff.UpdateBackoff(parse("http://1.2.3.4:8080"), nil, 500) + + if myBackoff.CalculateBackoff(parse("http://1.2.3.4:100")) > 0 { + t.Errorf("URLs are colliding in the backoff map!") + } +} + +// TestURLBackoffFunctionality generally tests the URLBackoff wrapper. We avoid duplicating tests from backoff and request. +func TestURLBackoffFunctionality(t *testing.T) { + myBackoff := &URLBackoff{ + Backoff: flowcontrol.NewBackOff(1*time.Second, 60*time.Second), + } + + // Now test that backoff increases, then recovers. + // 200 and 300 should both result in clearing the backoff. + // all others like 429 should result in increased backoff. + seconds := []int{0, + 1, 2, 4, 8, 0, + 1, 2} + returnCodes := []int{ + 429, 500, 501, 502, 300, + 500, 501, 502, + } + + if len(seconds) != len(returnCodes) { + t.Fatalf("responseCode to backoff arrays should be the same length... sanity check failed.") + } + + for i, sec := range seconds { + backoffSec := myBackoff.CalculateBackoff(parse("http://1.2.3.4:100")) + if backoffSec < time.Duration(sec)*time.Second || backoffSec > time.Duration(sec+5)*time.Second { + t.Errorf("Backoff out of range %v: %v %v", i, sec, backoffSec) + } + myBackoff.UpdateBackoff(parse("http://1.2.3.4:100/responseCodeForFuncTest"), nil, returnCodes[i]) + } + + if myBackoff.CalculateBackoff(parse("http://1.2.3.4:100")) == 0 { + t.Errorf("The final return code %v should have resulted in a backoff ! ", returnCodes[7]) + } +} diff --git a/vendor/k8s.io/client-go/rest/versions.go b/vendor/k8s.io/client-go/rest/versions.go new file mode 100644 index 000000000..9d41812f2 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/versions.go @@ -0,0 +1,88 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "encoding/json" + "fmt" + "net/http" + "path" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + legacyAPIPath = "/api" + defaultAPIPath = "/apis" +) + +// TODO: Is this obsoleted by the discovery client? + +// ServerAPIVersions returns the GroupVersions supported by the API server. +// It creates a RESTClient based on the passed in config, but it doesn't rely +// on the Version and Codec of the config, because it uses AbsPath and +// takes the raw response. +func ServerAPIVersions(c *Config) (groupVersions []string, err error) { + transport, err := TransportFor(c) + if err != nil { + return nil, err + } + client := http.Client{Transport: transport} + + configCopy := *c + configCopy.GroupVersion = nil + configCopy.APIPath = "" + baseURL, _, err := defaultServerUrlFor(&configCopy) + if err != nil { + return nil, err + } + // Get the groupVersions exposed at /api + originalPath := baseURL.Path + baseURL.Path = path.Join(originalPath, legacyAPIPath) + resp, err := client.Get(baseURL.String()) + if err != nil { + return nil, err + } + var v metav1.APIVersions + defer resp.Body.Close() + err = json.NewDecoder(resp.Body).Decode(&v) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + + groupVersions = append(groupVersions, v.Versions...) + // Get the groupVersions exposed at /apis + baseURL.Path = path.Join(originalPath, defaultAPIPath) + resp2, err := client.Get(baseURL.String()) + if err != nil { + return nil, err + } + var apiGroupList metav1.APIGroupList + defer resp2.Body.Close() + err = json.NewDecoder(resp2.Body).Decode(&apiGroupList) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + + for _, g := range apiGroupList.Groups { + for _, gv := range g.Versions { + groupVersions = append(groupVersions, gv.GroupVersion) + } + } + + return groupVersions, nil +} diff --git a/vendor/k8s.io/client-go/rest/watch/BUILD b/vendor/k8s.io/client-go/rest/watch/BUILD new file mode 100644 index 000000000..c78dcce17 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/watch/BUILD @@ -0,0 +1,46 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = [ + "decoder.go", + "encoder.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = [ + "decoder_test.go", + "encoder_test.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest/watch:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/rest/watch/decoder.go b/vendor/k8s.io/client-go/rest/watch/decoder.go new file mode 100644 index 000000000..73bb63add --- /dev/null +++ b/vendor/k8s.io/client-go/rest/watch/decoder.go @@ -0,0 +1,72 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/watch" +) + +// Decoder implements the watch.Decoder interface for io.ReadClosers that +// have contents which consist of a series of watchEvent objects encoded +// with the given streaming decoder. The internal objects will be then +// decoded by the embedded decoder. +type Decoder struct { + decoder streaming.Decoder + embeddedDecoder runtime.Decoder +} + +// NewDecoder creates an Decoder for the given writer and codec. +func NewDecoder(decoder streaming.Decoder, embeddedDecoder runtime.Decoder) *Decoder { + return &Decoder{ + decoder: decoder, + embeddedDecoder: embeddedDecoder, + } +} + +// Decode blocks until it can return the next object in the reader. Returns an error +// if the reader is closed or an object can't be decoded. +func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) { + var got metav1.WatchEvent + res, _, err := d.decoder.Decode(nil, &got) + if err != nil { + return "", nil, err + } + if res != &got { + return "", nil, fmt.Errorf("unable to decode to metav1.Event") + } + switch got.Type { + case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error): + default: + return "", nil, fmt.Errorf("got invalid watch event type: %v", got.Type) + } + + obj, err := runtime.Decode(d.embeddedDecoder, got.Object.Raw) + if err != nil { + return "", nil, fmt.Errorf("unable to decode watch event: %v", err) + } + return watch.EventType(got.Type), obj, nil +} + +// Close closes the underlying r. +func (d *Decoder) Close() { + d.decoder.Close() +} diff --git a/vendor/k8s.io/client-go/rest/watch/decoder_test.go b/vendor/k8s.io/client-go/rest/watch/decoder_test.go new file mode 100644 index 000000000..d78da56a8 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/watch/decoder_test.go @@ -0,0 +1,123 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned_test + +import ( + "encoding/json" + "io" + "testing" + "time" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + runtimejson "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + restclientwatch "k8s.io/client-go/rest/watch" +) + +// getDecoder mimics how k8s.io/client-go/rest.createSerializers creates a decoder +func getDecoder() runtime.Decoder { + jsonSerializer := runtimejson.NewSerializer(runtimejson.DefaultMetaFactory, scheme.Scheme, scheme.Scheme, false) + directCodecFactory := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + return directCodecFactory.DecoderToVersion(jsonSerializer, v1.SchemeGroupVersion) +} + +func TestDecoder(t *testing.T) { + table := []watch.EventType{watch.Added, watch.Deleted, watch.Modified, watch.Error} + + for _, eventType := range table { + out, in := io.Pipe() + + decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, getDecoder()), getDecoder()) + + expect := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} + encoder := json.NewEncoder(in) + go func() { + data, err := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expect) + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + event := metav1.WatchEvent{ + Type: string(eventType), + Object: runtime.RawExtension{Raw: json.RawMessage(data)}, + } + if err := encoder.Encode(&event); err != nil { + t.Errorf("Unexpected error %v", err) + } + in.Close() + }() + + done := make(chan struct{}) + go func() { + action, got, err := decoder.Decode() + if err != nil { + t.Fatalf("Unexpected error %v", err) + } + if e, a := eventType, action; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + if e, a := expect, got; !apiequality.Semantic.DeepDerivative(e, a) { + t.Errorf("Expected %v, got %v", e, a) + } + t.Logf("Exited read") + close(done) + }() + <-done + + done = make(chan struct{}) + go func() { + _, _, err := decoder.Decode() + if err == nil { + t.Errorf("Unexpected nil error") + } + close(done) + }() + <-done + + decoder.Close() + } +} + +func TestDecoder_SourceClose(t *testing.T) { + out, in := io.Pipe() + decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, getDecoder()), getDecoder()) + + done := make(chan struct{}) + + go func() { + _, _, err := decoder.Decode() + if err == nil { + t.Errorf("Unexpected nil error") + } + close(done) + }() + + in.Close() + + select { + case <-done: + break + case <-time.After(wait.ForeverTestTimeout): + t.Error("Timeout") + } +} diff --git a/vendor/k8s.io/client-go/rest/watch/encoder.go b/vendor/k8s.io/client-go/rest/watch/encoder.go new file mode 100644 index 000000000..e55aa12d9 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/watch/encoder.go @@ -0,0 +1,56 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned + +import ( + "encoding/json" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/watch" +) + +// Encoder serializes watch.Events into io.Writer. The internal objects +// are encoded using embedded encoder, and the outer Event is serialized +// using encoder. +// TODO: this type is only used by tests +type Encoder struct { + encoder streaming.Encoder + embeddedEncoder runtime.Encoder +} + +func NewEncoder(encoder streaming.Encoder, embeddedEncoder runtime.Encoder) *Encoder { + return &Encoder{ + encoder: encoder, + embeddedEncoder: embeddedEncoder, + } +} + +// Encode writes an event to the writer. Returns an error +// if the writer is closed or an object can't be encoded. +func (e *Encoder) Encode(event *watch.Event) error { + data, err := runtime.Encode(e.embeddedEncoder, event.Object) + if err != nil { + return err + } + // FIXME: get rid of json.RawMessage. + return e.encoder.Encode(&metav1.WatchEvent{ + Type: string(event.Type), + Object: runtime.RawExtension{Raw: json.RawMessage(data)}, + }) +} diff --git a/vendor/k8s.io/client-go/rest/watch/encoder_test.go b/vendor/k8s.io/client-go/rest/watch/encoder_test.go new file mode 100644 index 000000000..b9381b460 --- /dev/null +++ b/vendor/k8s.io/client-go/rest/watch/encoder_test.go @@ -0,0 +1,84 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned_test + +import ( + "bytes" + "io/ioutil" + "testing" + + apiequality "k8s.io/apimachinery/pkg/api/equality" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + runtimejson "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/runtime/serializer/streaming" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + restclientwatch "k8s.io/client-go/rest/watch" +) + +// getEncoder mimics how k8s.io/client-go/rest.createSerializers creates a encoder +func getEncoder() runtime.Encoder { + jsonSerializer := runtimejson.NewSerializer(runtimejson.DefaultMetaFactory, scheme.Scheme, scheme.Scheme, false) + directCodecFactory := serializer.DirectCodecFactory{CodecFactory: scheme.Codecs} + return directCodecFactory.EncoderForVersion(jsonSerializer, v1.SchemeGroupVersion) +} + +func TestEncodeDecodeRoundTrip(t *testing.T) { + testCases := []struct { + Type watch.EventType + Object runtime.Object + }{ + { + watch.Added, + &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}, + }, + { + watch.Modified, + &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}, + }, + { + watch.Deleted, + &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}, + }, + } + for i, testCase := range testCases { + buf := &bytes.Buffer{} + + encoder := restclientwatch.NewEncoder(streaming.NewEncoder(buf, getEncoder()), getEncoder()) + if err := encoder.Encode(&watch.Event{Type: testCase.Type, Object: testCase.Object}); err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + + rc := ioutil.NopCloser(buf) + decoder := restclientwatch.NewDecoder(streaming.NewDecoder(rc, getDecoder()), getDecoder()) + event, obj, err := decoder.Decode() + if err != nil { + t.Errorf("%d: unexpected error: %v", i, err) + continue + } + if !apiequality.Semantic.DeepDerivative(testCase.Object, obj) { + t.Errorf("%d: expected %#v, got %#v", i, testCase.Object, obj) + } + if event != testCase.Type { + t.Errorf("%d: unexpected type: %#v", i, event) + } + } +} diff --git a/vendor/k8s.io/client-go/testing/BUILD b/vendor/k8s.io/client-go/testing/BUILD new file mode 100644 index 000000000..82bc5c1f2 --- /dev/null +++ b/vendor/k8s.io/client-go/testing/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "actions.go", + "fake.go", + "fixture.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/testing/actions.go b/vendor/k8s.io/client-go/testing/actions.go new file mode 100644 index 000000000..12a2ecf95 --- /dev/null +++ b/vendor/k8s.io/client-go/testing/actions.go @@ -0,0 +1,478 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "fmt" + "path" + "strings" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func NewRootGetAction(resource schema.GroupVersionResource, name string) GetActionImpl { + action := GetActionImpl{} + action.Verb = "get" + action.Resource = resource + action.Name = name + + return action +} + +func NewGetAction(resource schema.GroupVersionResource, namespace, name string) GetActionImpl { + action := GetActionImpl{} + action.Verb = "get" + action.Resource = resource + action.Namespace = namespace + action.Name = name + + return action +} + +func NewRootListAction(resource schema.GroupVersionResource, kind schema.GroupVersionKind, opts interface{}) ListActionImpl { + action := ListActionImpl{} + action.Verb = "list" + action.Resource = resource + action.Kind = kind + labelSelector, fieldSelector, _ := ExtractFromListOptions(opts) + action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} + + return action +} + +func NewListAction(resource schema.GroupVersionResource, kind schema.GroupVersionKind, namespace string, opts interface{}) ListActionImpl { + action := ListActionImpl{} + action.Verb = "list" + action.Resource = resource + action.Kind = kind + action.Namespace = namespace + labelSelector, fieldSelector, _ := ExtractFromListOptions(opts) + action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} + + return action +} + +func NewRootCreateAction(resource schema.GroupVersionResource, object runtime.Object) CreateActionImpl { + action := CreateActionImpl{} + action.Verb = "create" + action.Resource = resource + action.Object = object + + return action +} + +func NewCreateAction(resource schema.GroupVersionResource, namespace string, object runtime.Object) CreateActionImpl { + action := CreateActionImpl{} + action.Verb = "create" + action.Resource = resource + action.Namespace = namespace + action.Object = object + + return action +} + +func NewRootUpdateAction(resource schema.GroupVersionResource, object runtime.Object) UpdateActionImpl { + action := UpdateActionImpl{} + action.Verb = "update" + action.Resource = resource + action.Object = object + + return action +} + +func NewUpdateAction(resource schema.GroupVersionResource, namespace string, object runtime.Object) UpdateActionImpl { + action := UpdateActionImpl{} + action.Verb = "update" + action.Resource = resource + action.Namespace = namespace + action.Object = object + + return action +} + +func NewRootPatchAction(resource schema.GroupVersionResource, name string, patch []byte) PatchActionImpl { + action := PatchActionImpl{} + action.Verb = "patch" + action.Resource = resource + action.Name = name + action.Patch = patch + + return action +} + +func NewPatchAction(resource schema.GroupVersionResource, namespace string, name string, patch []byte) PatchActionImpl { + action := PatchActionImpl{} + action.Verb = "patch" + action.Resource = resource + action.Namespace = namespace + action.Name = name + action.Patch = patch + + return action +} + +func NewRootPatchSubresourceAction(resource schema.GroupVersionResource, name string, patch []byte, subresources ...string) PatchActionImpl { + action := PatchActionImpl{} + action.Verb = "patch" + action.Resource = resource + action.Subresource = path.Join(subresources...) + action.Name = name + action.Patch = patch + + return action +} + +func NewPatchSubresourceAction(resource schema.GroupVersionResource, namespace, name string, patch []byte, subresources ...string) PatchActionImpl { + action := PatchActionImpl{} + action.Verb = "patch" + action.Resource = resource + action.Subresource = path.Join(subresources...) + action.Namespace = namespace + action.Name = name + action.Patch = patch + + return action +} + +func NewRootUpdateSubresourceAction(resource schema.GroupVersionResource, subresource string, object runtime.Object) UpdateActionImpl { + action := UpdateActionImpl{} + action.Verb = "update" + action.Resource = resource + action.Subresource = subresource + action.Object = object + + return action +} +func NewUpdateSubresourceAction(resource schema.GroupVersionResource, subresource string, namespace string, object runtime.Object) UpdateActionImpl { + action := UpdateActionImpl{} + action.Verb = "update" + action.Resource = resource + action.Subresource = subresource + action.Namespace = namespace + action.Object = object + + return action +} + +func NewRootDeleteAction(resource schema.GroupVersionResource, name string) DeleteActionImpl { + action := DeleteActionImpl{} + action.Verb = "delete" + action.Resource = resource + action.Name = name + + return action +} + +func NewDeleteAction(resource schema.GroupVersionResource, namespace, name string) DeleteActionImpl { + action := DeleteActionImpl{} + action.Verb = "delete" + action.Resource = resource + action.Namespace = namespace + action.Name = name + + return action +} + +func NewRootDeleteCollectionAction(resource schema.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl { + action := DeleteCollectionActionImpl{} + action.Verb = "delete-collection" + action.Resource = resource + labelSelector, fieldSelector, _ := ExtractFromListOptions(opts) + action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} + + return action +} + +func NewDeleteCollectionAction(resource schema.GroupVersionResource, namespace string, opts interface{}) DeleteCollectionActionImpl { + action := DeleteCollectionActionImpl{} + action.Verb = "delete-collection" + action.Resource = resource + action.Namespace = namespace + labelSelector, fieldSelector, _ := ExtractFromListOptions(opts) + action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} + + return action +} + +func NewRootWatchAction(resource schema.GroupVersionResource, opts interface{}) WatchActionImpl { + action := WatchActionImpl{} + action.Verb = "watch" + action.Resource = resource + labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts) + action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion} + + return action +} + +func ExtractFromListOptions(opts interface{}) (labelSelector labels.Selector, fieldSelector fields.Selector, resourceVersion string) { + var err error + switch t := opts.(type) { + case metav1.ListOptions: + labelSelector, err = labels.Parse(t.LabelSelector) + if err != nil { + panic(fmt.Errorf("invalid selector %q: %v", t.LabelSelector, err)) + } + fieldSelector, err = fields.ParseSelector(t.FieldSelector) + if err != nil { + panic(fmt.Errorf("invalid selector %q: %v", t.FieldSelector, err)) + } + resourceVersion = t.ResourceVersion + default: + panic(fmt.Errorf("expect a ListOptions %T", opts)) + } + if labelSelector == nil { + labelSelector = labels.Everything() + } + if fieldSelector == nil { + fieldSelector = fields.Everything() + } + return labelSelector, fieldSelector, resourceVersion +} + +func NewWatchAction(resource schema.GroupVersionResource, namespace string, opts interface{}) WatchActionImpl { + action := WatchActionImpl{} + action.Verb = "watch" + action.Resource = resource + action.Namespace = namespace + labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts) + action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion} + + return action +} + +func NewProxyGetAction(resource schema.GroupVersionResource, namespace, scheme, name, port, path string, params map[string]string) ProxyGetActionImpl { + action := ProxyGetActionImpl{} + action.Verb = "get" + action.Resource = resource + action.Namespace = namespace + action.Scheme = scheme + action.Name = name + action.Port = port + action.Path = path + action.Params = params + return action +} + +type ListRestrictions struct { + Labels labels.Selector + Fields fields.Selector +} +type WatchRestrictions struct { + Labels labels.Selector + Fields fields.Selector + ResourceVersion string +} + +type Action interface { + GetNamespace() string + GetVerb() string + GetResource() schema.GroupVersionResource + GetSubresource() string + Matches(verb, resource string) bool +} + +type GenericAction interface { + Action + GetValue() interface{} +} + +type GetAction interface { + Action + GetName() string +} + +type ListAction interface { + Action + GetListRestrictions() ListRestrictions +} + +type CreateAction interface { + Action + GetObject() runtime.Object +} + +type UpdateAction interface { + Action + GetObject() runtime.Object +} + +type DeleteAction interface { + Action + GetName() string +} + +type WatchAction interface { + Action + GetWatchRestrictions() WatchRestrictions +} + +type ProxyGetAction interface { + Action + GetScheme() string + GetName() string + GetPort() string + GetPath() string + GetParams() map[string]string +} + +type ActionImpl struct { + Namespace string + Verb string + Resource schema.GroupVersionResource + Subresource string +} + +func (a ActionImpl) GetNamespace() string { + return a.Namespace +} +func (a ActionImpl) GetVerb() string { + return a.Verb +} +func (a ActionImpl) GetResource() schema.GroupVersionResource { + return a.Resource +} +func (a ActionImpl) GetSubresource() string { + return a.Subresource +} +func (a ActionImpl) Matches(verb, resource string) bool { + return strings.ToLower(verb) == strings.ToLower(a.Verb) && + strings.ToLower(resource) == strings.ToLower(a.Resource.Resource) +} + +type GenericActionImpl struct { + ActionImpl + Value interface{} +} + +func (a GenericActionImpl) GetValue() interface{} { + return a.Value +} + +type GetActionImpl struct { + ActionImpl + Name string +} + +func (a GetActionImpl) GetName() string { + return a.Name +} + +type ListActionImpl struct { + ActionImpl + Kind schema.GroupVersionKind + ListRestrictions ListRestrictions +} + +func (a ListActionImpl) GetKind() schema.GroupVersionKind { + return a.Kind +} + +func (a ListActionImpl) GetListRestrictions() ListRestrictions { + return a.ListRestrictions +} + +type CreateActionImpl struct { + ActionImpl + Object runtime.Object +} + +func (a CreateActionImpl) GetObject() runtime.Object { + return a.Object +} + +type UpdateActionImpl struct { + ActionImpl + Object runtime.Object +} + +func (a UpdateActionImpl) GetObject() runtime.Object { + return a.Object +} + +type PatchActionImpl struct { + ActionImpl + Name string + Patch []byte +} + +func (a PatchActionImpl) GetName() string { + return a.Name +} + +func (a PatchActionImpl) GetPatch() []byte { + return a.Patch +} + +type DeleteActionImpl struct { + ActionImpl + Name string +} + +func (a DeleteActionImpl) GetName() string { + return a.Name +} + +type DeleteCollectionActionImpl struct { + ActionImpl + ListRestrictions ListRestrictions +} + +func (a DeleteCollectionActionImpl) GetListRestrictions() ListRestrictions { + return a.ListRestrictions +} + +type WatchActionImpl struct { + ActionImpl + WatchRestrictions WatchRestrictions +} + +func (a WatchActionImpl) GetWatchRestrictions() WatchRestrictions { + return a.WatchRestrictions +} + +type ProxyGetActionImpl struct { + ActionImpl + Scheme string + Name string + Port string + Path string + Params map[string]string +} + +func (a ProxyGetActionImpl) GetScheme() string { + return a.Scheme +} + +func (a ProxyGetActionImpl) GetName() string { + return a.Name +} + +func (a ProxyGetActionImpl) GetPort() string { + return a.Port +} + +func (a ProxyGetActionImpl) GetPath() string { + return a.Path +} + +func (a ProxyGetActionImpl) GetParams() map[string]string { + return a.Params +} diff --git a/vendor/k8s.io/client-go/testing/fake.go b/vendor/k8s.io/client-go/testing/fake.go new file mode 100644 index 000000000..da47b23b9 --- /dev/null +++ b/vendor/k8s.io/client-go/testing/fake.go @@ -0,0 +1,259 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "fmt" + "sync" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/version" + "k8s.io/apimachinery/pkg/watch" + kubeversion "k8s.io/client-go/pkg/version" + restclient "k8s.io/client-go/rest" +) + +// Fake implements client.Interface. Meant to be embedded into a struct to get +// a default implementation. This makes faking out just the method you want to +// test easier. +type Fake struct { + sync.RWMutex + actions []Action // these may be castable to other types, but "Action" is the minimum + + // ReactionChain is the list of reactors that will be attempted for every + // request in the order they are tried. + ReactionChain []Reactor + // WatchReactionChain is the list of watch reactors that will be attempted + // for every request in the order they are tried. + WatchReactionChain []WatchReactor + // ProxyReactionChain is the list of proxy reactors that will be attempted + // for every request in the order they are tried. + ProxyReactionChain []ProxyReactor + + Resources []*metav1.APIResourceList +} + +// Reactor is an interface to allow the composition of reaction functions. +type Reactor interface { + // Handles indicates whether or not this Reactor deals with a given + // action. + Handles(action Action) bool + // React handles the action and returns results. It may choose to + // delegate by indicated handled=false. + React(action Action) (handled bool, ret runtime.Object, err error) +} + +// WatchReactor is an interface to allow the composition of watch functions. +type WatchReactor interface { + // Handles indicates whether or not this Reactor deals with a given + // action. + Handles(action Action) bool + // React handles a watch action and returns results. It may choose to + // delegate by indicating handled=false. + React(action Action) (handled bool, ret watch.Interface, err error) +} + +// ProxyReactor is an interface to allow the composition of proxy get +// functions. +type ProxyReactor interface { + // Handles indicates whether or not this Reactor deals with a given + // action. + Handles(action Action) bool + // React handles a watch action and returns results. It may choose to + // delegate by indicating handled=false. + React(action Action) (handled bool, ret restclient.ResponseWrapper, err error) +} + +// ReactionFunc is a function that returns an object or error for a given +// Action. If "handled" is false, then the test client will ignore the +// results and continue to the next ReactionFunc. A ReactionFunc can describe +// reactions on subresources by testing the result of the action's +// GetSubresource() method. +type ReactionFunc func(action Action) (handled bool, ret runtime.Object, err error) + +// WatchReactionFunc is a function that returns a watch interface. If +// "handled" is false, then the test client will ignore the results and +// continue to the next ReactionFunc. +type WatchReactionFunc func(action Action) (handled bool, ret watch.Interface, err error) + +// ProxyReactionFunc is a function that returns a ResponseWrapper interface +// for a given Action. If "handled" is false, then the test client will +// ignore the results and continue to the next ProxyReactionFunc. +type ProxyReactionFunc func(action Action) (handled bool, ret restclient.ResponseWrapper, err error) + +// AddReactor appends a reactor to the end of the chain. +func (c *Fake) AddReactor(verb, resource string, reaction ReactionFunc) { + c.ReactionChain = append(c.ReactionChain, &SimpleReactor{verb, resource, reaction}) +} + +// PrependReactor adds a reactor to the beginning of the chain. +func (c *Fake) PrependReactor(verb, resource string, reaction ReactionFunc) { + c.ReactionChain = append([]Reactor{&SimpleReactor{verb, resource, reaction}}, c.ReactionChain...) +} + +// AddWatchReactor appends a reactor to the end of the chain. +func (c *Fake) AddWatchReactor(resource string, reaction WatchReactionFunc) { + c.WatchReactionChain = append(c.WatchReactionChain, &SimpleWatchReactor{resource, reaction}) +} + +// PrependWatchReactor adds a reactor to the beginning of the chain. +func (c *Fake) PrependWatchReactor(resource string, reaction WatchReactionFunc) { + c.WatchReactionChain = append([]WatchReactor{&SimpleWatchReactor{resource, reaction}}, c.WatchReactionChain...) +} + +// AddProxyReactor appends a reactor to the end of the chain. +func (c *Fake) AddProxyReactor(resource string, reaction ProxyReactionFunc) { + c.ProxyReactionChain = append(c.ProxyReactionChain, &SimpleProxyReactor{resource, reaction}) +} + +// PrependProxyReactor adds a reactor to the beginning of the chain. +func (c *Fake) PrependProxyReactor(resource string, reaction ProxyReactionFunc) { + c.ProxyReactionChain = append([]ProxyReactor{&SimpleProxyReactor{resource, reaction}}, c.ProxyReactionChain...) +} + +// Invokes records the provided Action and then invokes the ReactionFunc that +// handles the action if one exists. defaultReturnObj is expected to be of the +// same type a normal call would return. +func (c *Fake) Invokes(action Action, defaultReturnObj runtime.Object) (runtime.Object, error) { + c.Lock() + defer c.Unlock() + + c.actions = append(c.actions, action) + for _, reactor := range c.ReactionChain { + if !reactor.Handles(action) { + continue + } + + handled, ret, err := reactor.React(action) + if !handled { + continue + } + + return ret, err + } + + return defaultReturnObj, nil +} + +// InvokesWatch records the provided Action and then invokes the ReactionFunc +// that handles the action if one exists. +func (c *Fake) InvokesWatch(action Action) (watch.Interface, error) { + c.Lock() + defer c.Unlock() + + c.actions = append(c.actions, action) + for _, reactor := range c.WatchReactionChain { + if !reactor.Handles(action) { + continue + } + + handled, ret, err := reactor.React(action) + if !handled { + continue + } + + return ret, err + } + + return nil, fmt.Errorf("unhandled watch: %#v", action) +} + +// InvokesProxy records the provided Action and then invokes the ReactionFunc +// that handles the action if one exists. +func (c *Fake) InvokesProxy(action Action) restclient.ResponseWrapper { + c.Lock() + defer c.Unlock() + + c.actions = append(c.actions, action) + for _, reactor := range c.ProxyReactionChain { + if !reactor.Handles(action) { + continue + } + + handled, ret, err := reactor.React(action) + if !handled || err != nil { + continue + } + + return ret + } + + return nil +} + +// ClearActions clears the history of actions called on the fake client. +func (c *Fake) ClearActions() { + c.Lock() + defer c.Unlock() + + c.actions = make([]Action, 0) +} + +// Actions returns a chronologically ordered slice fake actions called on the +// fake client. +func (c *Fake) Actions() []Action { + c.RLock() + defer c.RUnlock() + fa := make([]Action, len(c.actions)) + copy(fa, c.actions) + return fa +} + +// TODO: this probably should be moved to somewhere else. +type FakeDiscovery struct { + *Fake +} + +func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) { + action := ActionImpl{ + Verb: "get", + Resource: schema.GroupVersionResource{Resource: "resource"}, + } + c.Invokes(action, nil) + for _, rl := range c.Resources { + if rl.GroupVersion == groupVersion { + return rl, nil + } + } + + return nil, fmt.Errorf("GroupVersion %q not found", groupVersion) +} + +func (c *FakeDiscovery) ServerResources() ([]*metav1.APIResourceList, error) { + action := ActionImpl{ + Verb: "get", + Resource: schema.GroupVersionResource{Resource: "resource"}, + } + c.Invokes(action, nil) + return c.Resources, nil +} + +func (c *FakeDiscovery) ServerGroups() (*metav1.APIGroupList, error) { + return nil, nil +} + +func (c *FakeDiscovery) ServerVersion() (*version.Info, error) { + action := ActionImpl{} + action.Verb = "get" + action.Resource = schema.GroupVersionResource{Resource: "version"} + + c.Invokes(action, nil) + versionInfo := kubeversion.Get() + return &versionInfo, nil +} diff --git a/vendor/k8s.io/client-go/testing/fixture.go b/vendor/k8s.io/client-go/testing/fixture.go new file mode 100644 index 000000000..a53c960c2 --- /dev/null +++ b/vendor/k8s.io/client-go/testing/fixture.go @@ -0,0 +1,464 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "fmt" + "sync" + + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/watch" + restclient "k8s.io/client-go/rest" +) + +// ObjectTracker keeps track of objects. It is intended to be used to +// fake calls to a server by returning objects based on their kind, +// namespace and name. +type ObjectTracker interface { + // Add adds an object to the tracker. If object being added + // is a list, its items are added separately. + Add(obj runtime.Object) error + + // Get retrieves the object by its kind, namespace and name. + Get(gvr schema.GroupVersionResource, ns, name string) (runtime.Object, error) + + // Create adds an object to the tracker in the specified namespace. + Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error + + // Update updates an existing object in the tracker in the specified namespace. + Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error + + // List retrieves all objects of a given kind in the given + // namespace. Only non-List kinds are accepted. + List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string) (runtime.Object, error) + + // Delete deletes an existing object from the tracker. If object + // didn't exist in the tracker prior to deletion, Delete returns + // no error. + Delete(gvr schema.GroupVersionResource, ns, name string) error +} + +// ObjectScheme abstracts the implementation of common operations on objects. +type ObjectScheme interface { + runtime.ObjectCreater + runtime.ObjectCopier + runtime.ObjectTyper +} + +// ObjectReaction returns a ReactionFunc that applies core.Action to +// the given tracker. +func ObjectReaction(tracker ObjectTracker) ReactionFunc { + return func(action Action) (bool, runtime.Object, error) { + ns := action.GetNamespace() + gvr := action.GetResource() + + // Here and below we need to switch on implementation types, + // not on interfaces, as some interfaces are identical + // (e.g. UpdateAction and CreateAction), so if we use them, + // updates and creates end up matching the same case branch. + switch action := action.(type) { + + case ListActionImpl: + obj, err := tracker.List(gvr, action.GetKind(), ns) + return true, obj, err + + case GetActionImpl: + obj, err := tracker.Get(gvr, ns, action.GetName()) + return true, obj, err + + case CreateActionImpl: + objMeta, err := meta.Accessor(action.GetObject()) + if err != nil { + return true, nil, err + } + if action.GetSubresource() == "" { + err = tracker.Create(gvr, action.GetObject(), ns) + } else { + // TODO: Currently we're handling subresource creation as an update + // on the enclosing resource. This works for some subresources but + // might not be generic enough. + err = tracker.Update(gvr, action.GetObject(), ns) + } + if err != nil { + return true, nil, err + } + obj, err := tracker.Get(gvr, ns, objMeta.GetName()) + return true, obj, err + + case UpdateActionImpl: + objMeta, err := meta.Accessor(action.GetObject()) + if err != nil { + return true, nil, err + } + err = tracker.Update(gvr, action.GetObject(), ns) + if err != nil { + return true, nil, err + } + obj, err := tracker.Get(gvr, ns, objMeta.GetName()) + return true, obj, err + + case DeleteActionImpl: + err := tracker.Delete(gvr, ns, action.GetName()) + if err != nil { + return true, nil, err + } + return true, nil, nil + + default: + return false, nil, fmt.Errorf("no reaction implemented for %s", action) + } + } +} + +type tracker struct { + scheme ObjectScheme + decoder runtime.Decoder + lock sync.RWMutex + objects map[schema.GroupVersionResource][]runtime.Object +} + +var _ ObjectTracker = &tracker{} + +// NewObjectTracker returns an ObjectTracker that can be used to keep track +// of objects for the fake clientset. Mostly useful for unit tests. +func NewObjectTracker(scheme ObjectScheme, decoder runtime.Decoder) ObjectTracker { + return &tracker{ + scheme: scheme, + decoder: decoder, + objects: make(map[schema.GroupVersionResource][]runtime.Object), + } +} + +func (t *tracker) List(gvr schema.GroupVersionResource, gvk schema.GroupVersionKind, ns string) (runtime.Object, error) { + // Heuristic for list kind: original kind + List suffix. Might + // not always be true but this tracker has a pretty limited + // understanding of the actual API model. + listGVK := gvk + listGVK.Kind = listGVK.Kind + "List" + // GVK does have the concept of "internal version". The scheme recognizes + // the runtime.APIVersionInternal, but not the empty string. + if listGVK.Version == "" { + listGVK.Version = runtime.APIVersionInternal + } + + list, err := t.scheme.New(listGVK) + if err != nil { + return nil, err + } + + if !meta.IsListType(list) { + return nil, fmt.Errorf("%q is not a list type", listGVK.Kind) + } + + t.lock.RLock() + defer t.lock.RUnlock() + + objs, ok := t.objects[gvr] + if !ok { + return list, nil + } + + matchingObjs, err := filterByNamespaceAndName(objs, ns, "") + if err != nil { + return nil, err + } + if err := meta.SetList(list, matchingObjs); err != nil { + return nil, err + } + if list, err = t.scheme.Copy(list); err != nil { + return nil, err + } + return list, nil +} + +func (t *tracker) Get(gvr schema.GroupVersionResource, ns, name string) (runtime.Object, error) { + errNotFound := errors.NewNotFound(gvr.GroupResource(), name) + + t.lock.RLock() + defer t.lock.RUnlock() + + objs, ok := t.objects[gvr] + if !ok { + return nil, errNotFound + } + + matchingObjs, err := filterByNamespaceAndName(objs, ns, name) + if err != nil { + return nil, err + } + if len(matchingObjs) == 0 { + return nil, errNotFound + } + if len(matchingObjs) > 1 { + return nil, fmt.Errorf("more than one object matched gvr %s, ns: %q name: %q", gvr, ns, name) + } + + // Only one object should match in the tracker if it works + // correctly, as Add/Update methods enforce kind/namespace/name + // uniqueness. + obj, err := t.scheme.Copy(matchingObjs[0]) + if err != nil { + return nil, err + } + + if status, ok := obj.(*metav1.Status); ok { + if status.Status != metav1.StatusSuccess { + return nil, &errors.StatusError{ErrStatus: *status} + } + } + + return obj, nil +} + +func (t *tracker) Add(obj runtime.Object) error { + if meta.IsListType(obj) { + return t.addList(obj, false) + } + objMeta, err := meta.Accessor(obj) + if err != nil { + return err + } + gvks, _, err := t.scheme.ObjectKinds(obj) + if err != nil { + return err + } + if len(gvks) == 0 { + return fmt.Errorf("no registered kinds for %v", obj) + } + for _, gvk := range gvks { + // NOTE: UnsafeGuessKindToResource is a heuristic and default match. The + // actual registration in apiserver can specify arbitrary route for a + // gvk. If a test uses such objects, it cannot preset the tracker with + // objects via Add(). Instead, it should trigger the Create() function + // of the tracker, where an arbitrary gvr can be specified. + gvr, _ := meta.UnsafeGuessKindToResource(gvk) + // Resource doesn't have the concept of "__internal" version, just set it to "". + if gvr.Version == runtime.APIVersionInternal { + gvr.Version = "" + } + + err := t.add(gvr, obj, objMeta.GetNamespace(), false) + if err != nil { + return err + } + } + return nil +} + +func (t *tracker) Create(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error { + return t.add(gvr, obj, ns, false) +} + +func (t *tracker) Update(gvr schema.GroupVersionResource, obj runtime.Object, ns string) error { + return t.add(gvr, obj, ns, true) +} + +func (t *tracker) add(gvr schema.GroupVersionResource, obj runtime.Object, ns string, replaceExisting bool) error { + t.lock.Lock() + defer t.lock.Unlock() + + gr := gvr.GroupResource() + + // To avoid the object from being accidentally modified by caller + // after it's been added to the tracker, we always store the deep + // copy. + obj, err := t.scheme.Copy(obj) + if err != nil { + return err + } + + newMeta, err := meta.Accessor(obj) + if err != nil { + return err + } + + // Propagate namespace to the new object if hasn't already been set. + if len(newMeta.GetNamespace()) == 0 { + newMeta.SetNamespace(ns) + } + + if ns != newMeta.GetNamespace() { + msg := fmt.Sprintf("request namespace does not match object namespace, request: %q object: %q", ns, newMeta.GetNamespace()) + return errors.NewBadRequest(msg) + } + + for i, existingObj := range t.objects[gvr] { + oldMeta, err := meta.Accessor(existingObj) + if err != nil { + return err + } + if oldMeta.GetNamespace() == newMeta.GetNamespace() && oldMeta.GetName() == newMeta.GetName() { + if replaceExisting { + t.objects[gvr][i] = obj + return nil + } + return errors.NewAlreadyExists(gr, newMeta.GetName()) + } + } + + if replaceExisting { + // Tried to update but no matching object was found. + return errors.NewNotFound(gr, newMeta.GetName()) + } + + t.objects[gvr] = append(t.objects[gvr], obj) + + return nil +} + +func (t *tracker) addList(obj runtime.Object, replaceExisting bool) error { + list, err := meta.ExtractList(obj) + if err != nil { + return err + } + errs := runtime.DecodeList(list, t.decoder) + if len(errs) > 0 { + return errs[0] + } + for _, obj := range list { + if err := t.Add(obj); err != nil { + return err + } + } + return nil +} + +func (t *tracker) Delete(gvr schema.GroupVersionResource, ns, name string) error { + t.lock.Lock() + defer t.lock.Unlock() + + found := false + + for i, existingObj := range t.objects[gvr] { + objMeta, err := meta.Accessor(existingObj) + if err != nil { + return err + } + if objMeta.GetNamespace() == ns && objMeta.GetName() == name { + t.objects[gvr] = append(t.objects[gvr][:i], t.objects[gvr][i+1:]...) + found = true + break + } + } + + if found { + return nil + } + + return errors.NewNotFound(gvr.GroupResource(), name) +} + +// filterByNamespaceAndName returns all objects in the collection that +// match provided namespace and name. Empty namespace matches +// non-namespaced objects. +func filterByNamespaceAndName(objs []runtime.Object, ns, name string) ([]runtime.Object, error) { + var res []runtime.Object + + for _, obj := range objs { + acc, err := meta.Accessor(obj) + if err != nil { + return nil, err + } + if ns != "" && acc.GetNamespace() != ns { + continue + } + if name != "" && acc.GetName() != name { + continue + } + res = append(res, obj) + } + + return res, nil +} + +func DefaultWatchReactor(watchInterface watch.Interface, err error) WatchReactionFunc { + return func(action Action) (bool, watch.Interface, error) { + return true, watchInterface, err + } +} + +// SimpleReactor is a Reactor. Each reaction function is attached to a given verb,resource tuple. "*" in either field matches everything for that value. +// For instance, *,pods matches all verbs on pods. This allows for easier composition of reaction functions +type SimpleReactor struct { + Verb string + Resource string + + Reaction ReactionFunc +} + +func (r *SimpleReactor) Handles(action Action) bool { + verbCovers := r.Verb == "*" || r.Verb == action.GetVerb() + if !verbCovers { + return false + } + resourceCovers := r.Resource == "*" || r.Resource == action.GetResource().Resource + if !resourceCovers { + return false + } + + return true +} + +func (r *SimpleReactor) React(action Action) (bool, runtime.Object, error) { + return r.Reaction(action) +} + +// SimpleWatchReactor is a WatchReactor. Each reaction function is attached to a given resource. "*" matches everything for that value. +// For instance, *,pods matches all verbs on pods. This allows for easier composition of reaction functions +type SimpleWatchReactor struct { + Resource string + + Reaction WatchReactionFunc +} + +func (r *SimpleWatchReactor) Handles(action Action) bool { + resourceCovers := r.Resource == "*" || r.Resource == action.GetResource().Resource + if !resourceCovers { + return false + } + + return true +} + +func (r *SimpleWatchReactor) React(action Action) (bool, watch.Interface, error) { + return r.Reaction(action) +} + +// SimpleProxyReactor is a ProxyReactor. Each reaction function is attached to a given resource. "*" matches everything for that value. +// For instance, *,pods matches all verbs on pods. This allows for easier composition of reaction functions. +type SimpleProxyReactor struct { + Resource string + + Reaction ProxyReactionFunc +} + +func (r *SimpleProxyReactor) Handles(action Action) bool { + resourceCovers := r.Resource == "*" || r.Resource == action.GetResource().Resource + if !resourceCovers { + return false + } + + return true +} + +func (r *SimpleProxyReactor) React(action Action) (bool, restclient.ResponseWrapper, error) { + return r.Reaction(action) +} diff --git a/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD b/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD new file mode 100644 index 000000000..874403854 --- /dev/null +++ b/vendor/k8s.io/client-go/third_party/forked/golang/template/BUILD @@ -0,0 +1,17 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "exec.go", + "funcs.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/third_party/forked/golang/template/exec.go b/vendor/k8s.io/client-go/third_party/forked/golang/template/exec.go new file mode 100644 index 000000000..739fd3509 --- /dev/null +++ b/vendor/k8s.io/client-go/third_party/forked/golang/template/exec.go @@ -0,0 +1,94 @@ +//This package is copied from Go library text/template. +//The original private functions indirect and printableValue +//are exported as public functions. +package template + +import ( + "fmt" + "reflect" +) + +var Indirect = indirect +var PrintableValue = printableValue + +var ( + errorType = reflect.TypeOf((*error)(nil)).Elem() + fmtStringerType = reflect.TypeOf((*fmt.Stringer)(nil)).Elem() +) + +// indirect returns the item at the end of indirection, and a bool to indicate if it's nil. +// We indirect through pointers and empty interfaces (only) because +// non-empty interfaces have methods we might need. +func indirect(v reflect.Value) (rv reflect.Value, isNil bool) { + for ; v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface; v = v.Elem() { + if v.IsNil() { + return v, true + } + if v.Kind() == reflect.Interface && v.NumMethod() > 0 { + break + } + } + return v, false +} + +// printableValue returns the, possibly indirected, interface value inside v that +// is best for a call to formatted printer. +func printableValue(v reflect.Value) (interface{}, bool) { + if v.Kind() == reflect.Ptr { + v, _ = indirect(v) // fmt.Fprint handles nil. + } + if !v.IsValid() { + return "", true + } + + if !v.Type().Implements(errorType) && !v.Type().Implements(fmtStringerType) { + if v.CanAddr() && (reflect.PtrTo(v.Type()).Implements(errorType) || reflect.PtrTo(v.Type()).Implements(fmtStringerType)) { + v = v.Addr() + } else { + switch v.Kind() { + case reflect.Chan, reflect.Func: + return nil, false + } + } + } + return v.Interface(), true +} + +// canBeNil reports whether an untyped nil can be assigned to the type. See reflect.Zero. +func canBeNil(typ reflect.Type) bool { + switch typ.Kind() { + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return true + } + return false +} + +// isTrue reports whether the value is 'true', in the sense of not the zero of its type, +// and whether the value has a meaningful truth value. +func isTrue(val reflect.Value) (truth, ok bool) { + if !val.IsValid() { + // Something like var x interface{}, never set. It's a form of nil. + return false, true + } + switch val.Kind() { + case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + truth = val.Len() > 0 + case reflect.Bool: + truth = val.Bool() + case reflect.Complex64, reflect.Complex128: + truth = val.Complex() != 0 + case reflect.Chan, reflect.Func, reflect.Ptr, reflect.Interface: + truth = !val.IsNil() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + truth = val.Int() != 0 + case reflect.Float32, reflect.Float64: + truth = val.Float() != 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + truth = val.Uint() != 0 + case reflect.Struct: + truth = true // Struct values are always true. + default: + return + } + return truth, true +} diff --git a/vendor/k8s.io/client-go/third_party/forked/golang/template/funcs.go b/vendor/k8s.io/client-go/third_party/forked/golang/template/funcs.go new file mode 100644 index 000000000..27a008b0a --- /dev/null +++ b/vendor/k8s.io/client-go/third_party/forked/golang/template/funcs.go @@ -0,0 +1,599 @@ +//This package is copied from Go library text/template. +//The original private functions eq, ge, gt, le, lt, and ne +//are exported as public functions. +package template + +import ( + "bytes" + "errors" + "fmt" + "io" + "net/url" + "reflect" + "strings" + "unicode" + "unicode/utf8" +) + +var Equal = eq +var GreaterEqual = ge +var Greater = gt +var LessEqual = le +var Less = lt +var NotEqual = ne + +// FuncMap is the type of the map defining the mapping from names to functions. +// Each function must have either a single return value, or two return values of +// which the second has type error. In that case, if the second (error) +// return value evaluates to non-nil during execution, execution terminates and +// Execute returns that error. +type FuncMap map[string]interface{} + +var builtins = FuncMap{ + "and": and, + "call": call, + "html": HTMLEscaper, + "index": index, + "js": JSEscaper, + "len": length, + "not": not, + "or": or, + "print": fmt.Sprint, + "printf": fmt.Sprintf, + "println": fmt.Sprintln, + "urlquery": URLQueryEscaper, + + // Comparisons + "eq": eq, // == + "ge": ge, // >= + "gt": gt, // > + "le": le, // <= + "lt": lt, // < + "ne": ne, // != +} + +var builtinFuncs = createValueFuncs(builtins) + +// createValueFuncs turns a FuncMap into a map[string]reflect.Value +func createValueFuncs(funcMap FuncMap) map[string]reflect.Value { + m := make(map[string]reflect.Value) + addValueFuncs(m, funcMap) + return m +} + +// addValueFuncs adds to values the functions in funcs, converting them to reflect.Values. +func addValueFuncs(out map[string]reflect.Value, in FuncMap) { + for name, fn := range in { + v := reflect.ValueOf(fn) + if v.Kind() != reflect.Func { + panic("value for " + name + " not a function") + } + if !goodFunc(v.Type()) { + panic(fmt.Errorf("can't install method/function %q with %d results", name, v.Type().NumOut())) + } + out[name] = v + } +} + +// AddFuncs adds to values the functions in funcs. It does no checking of the input - +// call addValueFuncs first. +func addFuncs(out, in FuncMap) { + for name, fn := range in { + out[name] = fn + } +} + +// goodFunc checks that the function or method has the right result signature. +func goodFunc(typ reflect.Type) bool { + // We allow functions with 1 result or 2 results where the second is an error. + switch { + case typ.NumOut() == 1: + return true + case typ.NumOut() == 2 && typ.Out(1) == errorType: + return true + } + return false +} + +// findFunction looks for a function in the template, and global map. +func findFunction(name string) (reflect.Value, bool) { + if fn := builtinFuncs[name]; fn.IsValid() { + return fn, true + } + return reflect.Value{}, false +} + +// Indexing. + +// index returns the result of indexing its first argument by the following +// arguments. Thus "index x 1 2 3" is, in Go syntax, x[1][2][3]. Each +// indexed item must be a map, slice, or array. +func index(item interface{}, indices ...interface{}) (interface{}, error) { + v := reflect.ValueOf(item) + for _, i := range indices { + index := reflect.ValueOf(i) + var isNil bool + if v, isNil = indirect(v); isNil { + return nil, fmt.Errorf("index of nil pointer") + } + switch v.Kind() { + case reflect.Array, reflect.Slice, reflect.String: + var x int64 + switch index.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + x = index.Int() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + x = int64(index.Uint()) + default: + return nil, fmt.Errorf("cannot index slice/array with type %s", index.Type()) + } + if x < 0 || x >= int64(v.Len()) { + return nil, fmt.Errorf("index out of range: %d", x) + } + v = v.Index(int(x)) + case reflect.Map: + if !index.IsValid() { + index = reflect.Zero(v.Type().Key()) + } + if !index.Type().AssignableTo(v.Type().Key()) { + return nil, fmt.Errorf("%s is not index type for %s", index.Type(), v.Type()) + } + if x := v.MapIndex(index); x.IsValid() { + v = x + } else { + v = reflect.Zero(v.Type().Elem()) + } + default: + return nil, fmt.Errorf("can't index item of type %s", v.Type()) + } + } + return v.Interface(), nil +} + +// Length + +// length returns the length of the item, with an error if it has no defined length. +func length(item interface{}) (int, error) { + v, isNil := indirect(reflect.ValueOf(item)) + if isNil { + return 0, fmt.Errorf("len of nil pointer") + } + switch v.Kind() { + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice, reflect.String: + return v.Len(), nil + } + return 0, fmt.Errorf("len of type %s", v.Type()) +} + +// Function invocation + +// call returns the result of evaluating the first argument as a function. +// The function must return 1 result, or 2 results, the second of which is an error. +func call(fn interface{}, args ...interface{}) (interface{}, error) { + v := reflect.ValueOf(fn) + typ := v.Type() + if typ.Kind() != reflect.Func { + return nil, fmt.Errorf("non-function of type %s", typ) + } + if !goodFunc(typ) { + return nil, fmt.Errorf("function called with %d args; should be 1 or 2", typ.NumOut()) + } + numIn := typ.NumIn() + var dddType reflect.Type + if typ.IsVariadic() { + if len(args) < numIn-1 { + return nil, fmt.Errorf("wrong number of args: got %d want at least %d", len(args), numIn-1) + } + dddType = typ.In(numIn - 1).Elem() + } else { + if len(args) != numIn { + return nil, fmt.Errorf("wrong number of args: got %d want %d", len(args), numIn) + } + } + argv := make([]reflect.Value, len(args)) + for i, arg := range args { + value := reflect.ValueOf(arg) + // Compute the expected type. Clumsy because of variadics. + var argType reflect.Type + if !typ.IsVariadic() || i < numIn-1 { + argType = typ.In(i) + } else { + argType = dddType + } + if !value.IsValid() && canBeNil(argType) { + value = reflect.Zero(argType) + } + if !value.Type().AssignableTo(argType) { + return nil, fmt.Errorf("arg %d has type %s; should be %s", i, value.Type(), argType) + } + argv[i] = value + } + result := v.Call(argv) + if len(result) == 2 && !result[1].IsNil() { + return result[0].Interface(), result[1].Interface().(error) + } + return result[0].Interface(), nil +} + +// Boolean logic. + +func truth(a interface{}) bool { + t, _ := isTrue(reflect.ValueOf(a)) + return t +} + +// and computes the Boolean AND of its arguments, returning +// the first false argument it encounters, or the last argument. +func and(arg0 interface{}, args ...interface{}) interface{} { + if !truth(arg0) { + return arg0 + } + for i := range args { + arg0 = args[i] + if !truth(arg0) { + break + } + } + return arg0 +} + +// or computes the Boolean OR of its arguments, returning +// the first true argument it encounters, or the last argument. +func or(arg0 interface{}, args ...interface{}) interface{} { + if truth(arg0) { + return arg0 + } + for i := range args { + arg0 = args[i] + if truth(arg0) { + break + } + } + return arg0 +} + +// not returns the Boolean negation of its argument. +func not(arg interface{}) (truth bool) { + truth, _ = isTrue(reflect.ValueOf(arg)) + return !truth +} + +// Comparison. + +// TODO: Perhaps allow comparison between signed and unsigned integers. + +var ( + errBadComparisonType = errors.New("invalid type for comparison") + errBadComparison = errors.New("incompatible types for comparison") + errNoComparison = errors.New("missing argument for comparison") +) + +type kind int + +const ( + invalidKind kind = iota + boolKind + complexKind + intKind + floatKind + integerKind + stringKind + uintKind +) + +func basicKind(v reflect.Value) (kind, error) { + switch v.Kind() { + case reflect.Bool: + return boolKind, nil + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return intKind, nil + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return uintKind, nil + case reflect.Float32, reflect.Float64: + return floatKind, nil + case reflect.Complex64, reflect.Complex128: + return complexKind, nil + case reflect.String: + return stringKind, nil + } + return invalidKind, errBadComparisonType +} + +// eq evaluates the comparison a == b || a == c || ... +func eq(arg1 interface{}, arg2 ...interface{}) (bool, error) { + v1 := reflect.ValueOf(arg1) + k1, err := basicKind(v1) + if err != nil { + return false, err + } + if len(arg2) == 0 { + return false, errNoComparison + } + for _, arg := range arg2 { + v2 := reflect.ValueOf(arg) + k2, err := basicKind(v2) + if err != nil { + return false, err + } + truth := false + if k1 != k2 { + // Special case: Can compare integer values regardless of type's sign. + switch { + case k1 == intKind && k2 == uintKind: + truth = v1.Int() >= 0 && uint64(v1.Int()) == v2.Uint() + case k1 == uintKind && k2 == intKind: + truth = v2.Int() >= 0 && v1.Uint() == uint64(v2.Int()) + default: + return false, errBadComparison + } + } else { + switch k1 { + case boolKind: + truth = v1.Bool() == v2.Bool() + case complexKind: + truth = v1.Complex() == v2.Complex() + case floatKind: + truth = v1.Float() == v2.Float() + case intKind: + truth = v1.Int() == v2.Int() + case stringKind: + truth = v1.String() == v2.String() + case uintKind: + truth = v1.Uint() == v2.Uint() + default: + panic("invalid kind") + } + } + if truth { + return true, nil + } + } + return false, nil +} + +// ne evaluates the comparison a != b. +func ne(arg1, arg2 interface{}) (bool, error) { + // != is the inverse of ==. + equal, err := eq(arg1, arg2) + return !equal, err +} + +// lt evaluates the comparison a < b. +func lt(arg1, arg2 interface{}) (bool, error) { + v1 := reflect.ValueOf(arg1) + k1, err := basicKind(v1) + if err != nil { + return false, err + } + v2 := reflect.ValueOf(arg2) + k2, err := basicKind(v2) + if err != nil { + return false, err + } + truth := false + if k1 != k2 { + // Special case: Can compare integer values regardless of type's sign. + switch { + case k1 == intKind && k2 == uintKind: + truth = v1.Int() < 0 || uint64(v1.Int()) < v2.Uint() + case k1 == uintKind && k2 == intKind: + truth = v2.Int() >= 0 && v1.Uint() < uint64(v2.Int()) + default: + return false, errBadComparison + } + } else { + switch k1 { + case boolKind, complexKind: + return false, errBadComparisonType + case floatKind: + truth = v1.Float() < v2.Float() + case intKind: + truth = v1.Int() < v2.Int() + case stringKind: + truth = v1.String() < v2.String() + case uintKind: + truth = v1.Uint() < v2.Uint() + default: + panic("invalid kind") + } + } + return truth, nil +} + +// le evaluates the comparison <= b. +func le(arg1, arg2 interface{}) (bool, error) { + // <= is < or ==. + lessThan, err := lt(arg1, arg2) + if lessThan || err != nil { + return lessThan, err + } + return eq(arg1, arg2) +} + +// gt evaluates the comparison a > b. +func gt(arg1, arg2 interface{}) (bool, error) { + // > is the inverse of <=. + lessOrEqual, err := le(arg1, arg2) + if err != nil { + return false, err + } + return !lessOrEqual, nil +} + +// ge evaluates the comparison a >= b. +func ge(arg1, arg2 interface{}) (bool, error) { + // >= is the inverse of <. + lessThan, err := lt(arg1, arg2) + if err != nil { + return false, err + } + return !lessThan, nil +} + +// HTML escaping. + +var ( + htmlQuot = []byte(""") // shorter than """ + htmlApos = []byte("'") // shorter than "'" and apos was not in HTML until HTML5 + htmlAmp = []byte("&") + htmlLt = []byte("<") + htmlGt = []byte(">") +) + +// HTMLEscape writes to w the escaped HTML equivalent of the plain text data b. +func HTMLEscape(w io.Writer, b []byte) { + last := 0 + for i, c := range b { + var html []byte + switch c { + case '"': + html = htmlQuot + case '\'': + html = htmlApos + case '&': + html = htmlAmp + case '<': + html = htmlLt + case '>': + html = htmlGt + default: + continue + } + w.Write(b[last:i]) + w.Write(html) + last = i + 1 + } + w.Write(b[last:]) +} + +// HTMLEscapeString returns the escaped HTML equivalent of the plain text data s. +func HTMLEscapeString(s string) string { + // Avoid allocation if we can. + if strings.IndexAny(s, `'"&<>`) < 0 { + return s + } + var b bytes.Buffer + HTMLEscape(&b, []byte(s)) + return b.String() +} + +// HTMLEscaper returns the escaped HTML equivalent of the textual +// representation of its arguments. +func HTMLEscaper(args ...interface{}) string { + return HTMLEscapeString(evalArgs(args)) +} + +// JavaScript escaping. + +var ( + jsLowUni = []byte(`\u00`) + hex = []byte("0123456789ABCDEF") + + jsBackslash = []byte(`\\`) + jsApos = []byte(`\'`) + jsQuot = []byte(`\"`) + jsLt = []byte(`\x3C`) + jsGt = []byte(`\x3E`) +) + +// JSEscape writes to w the escaped JavaScript equivalent of the plain text data b. +func JSEscape(w io.Writer, b []byte) { + last := 0 + for i := 0; i < len(b); i++ { + c := b[i] + + if !jsIsSpecial(rune(c)) { + // fast path: nothing to do + continue + } + w.Write(b[last:i]) + + if c < utf8.RuneSelf { + // Quotes, slashes and angle brackets get quoted. + // Control characters get written as \u00XX. + switch c { + case '\\': + w.Write(jsBackslash) + case '\'': + w.Write(jsApos) + case '"': + w.Write(jsQuot) + case '<': + w.Write(jsLt) + case '>': + w.Write(jsGt) + default: + w.Write(jsLowUni) + t, b := c>>4, c&0x0f + w.Write(hex[t : t+1]) + w.Write(hex[b : b+1]) + } + } else { + // Unicode rune. + r, size := utf8.DecodeRune(b[i:]) + if unicode.IsPrint(r) { + w.Write(b[i : i+size]) + } else { + fmt.Fprintf(w, "\\u%04X", r) + } + i += size - 1 + } + last = i + 1 + } + w.Write(b[last:]) +} + +// JSEscapeString returns the escaped JavaScript equivalent of the plain text data s. +func JSEscapeString(s string) string { + // Avoid allocation if we can. + if strings.IndexFunc(s, jsIsSpecial) < 0 { + return s + } + var b bytes.Buffer + JSEscape(&b, []byte(s)) + return b.String() +} + +func jsIsSpecial(r rune) bool { + switch r { + case '\\', '\'', '"', '<', '>': + return true + } + return r < ' ' || utf8.RuneSelf <= r +} + +// JSEscaper returns the escaped JavaScript equivalent of the textual +// representation of its arguments. +func JSEscaper(args ...interface{}) string { + return JSEscapeString(evalArgs(args)) +} + +// URLQueryEscaper returns the escaped value of the textual representation of +// its arguments in a form suitable for embedding in a URL query. +func URLQueryEscaper(args ...interface{}) string { + return url.QueryEscape(evalArgs(args)) +} + +// evalArgs formats the list of arguments into a string. It is therefore equivalent to +// fmt.Sprint(args...) +// except that each argument is indirected (if a pointer), as required, +// using the same rules as the default string evaluation during template +// execution. +func evalArgs(args []interface{}) string { + ok := false + var s string + // Fast path for simple common case. + if len(args) == 1 { + s, ok = args[0].(string) + } + if !ok { + for i, arg := range args { + a, ok := printableValue(reflect.ValueOf(arg)) + if ok { + args[i] = a + } // else left fmt do its thing + } + s = fmt.Sprint(args...) + } + return s +} diff --git a/vendor/k8s.io/client-go/tools/auth/BUILD b/vendor/k8s.io/client-go/tools/auth/BUILD new file mode 100644 index 000000000..af00eb646 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/auth/BUILD @@ -0,0 +1,23 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_library( + name = "go_default_library", + srcs = ["clientauth.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/client-go/rest:go_default_library"], +) + +go_test( + name = "go_default_xtest", + srcs = ["clientauth_test.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/client-go/tools/auth:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/tools/auth/clientauth.go b/vendor/k8s.io/client-go/tools/auth/clientauth.go new file mode 100644 index 000000000..2213b9878 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/auth/clientauth.go @@ -0,0 +1,125 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package auth defines a file format for holding authentication +information needed by clients of Kubernetes. Typically, +a Kubernetes cluster will put auth info for the admin in a known +location when it is created, and will (soon) put it in a known +location within a Container's file tree for Containers that +need access to the Kubernetes API. + +Having a defined format allows: + - clients to be implmented in multiple languages + - applications which link clients to be portable across + clusters with different authentication styles (e.g. + some may use SSL Client certs, others may not, etc) + - when the format changes, applications only + need to update this code. + +The file format is json, marshalled from a struct authcfg.Info. + +Clinet libraries in other languages should use the same format. + +It is not intended to store general preferences, such as default +namespace, output options, etc. CLIs (such as kubectl) and UIs should +develop their own format and may wish to inline the authcfg.Info type. + +The authcfg.Info is just a file format. It is distinct from +client.Config which holds options for creating a client.Client. +Helper functions are provided in this package to fill in a +client.Client from an authcfg.Info. + +Example: + + import ( + "pkg/client" + "pkg/client/auth" + ) + + info, err := auth.LoadFromFile(filename) + if err != nil { + // handle error + } + clientConfig = client.Config{} + clientConfig.Host = "example.com:4901" + clientConfig = info.MergeWithConfig() + client := client.New(clientConfig) + client.Pods(ns).List() +*/ +package auth + +// TODO: need a way to rotate Tokens. Therefore, need a way for client object to be reset when the authcfg is updated. +import ( + "encoding/json" + "io/ioutil" + "os" + + restclient "k8s.io/client-go/rest" +) + +// Info holds Kubernetes API authorization config. It is intended +// to be read/written from a file as a JSON object. +type Info struct { + User string + Password string + CAFile string + CertFile string + KeyFile string + BearerToken string + Insecure *bool +} + +// LoadFromFile parses an Info object from a file path. +// If the file does not exist, then os.IsNotExist(err) == true +func LoadFromFile(path string) (*Info, error) { + var info Info + if _, err := os.Stat(path); os.IsNotExist(err) { + return nil, err + } + data, err := ioutil.ReadFile(path) + if err != nil { + return nil, err + } + err = json.Unmarshal(data, &info) + if err != nil { + return nil, err + } + return &info, err +} + +// MergeWithConfig returns a copy of a client.Config with values from the Info. +// The fields of client.Config with a corresponding field in the Info are set +// with the value from the Info. +func (info Info) MergeWithConfig(c restclient.Config) (restclient.Config, error) { + var config restclient.Config = c + config.Username = info.User + config.Password = info.Password + config.CAFile = info.CAFile + config.CertFile = info.CertFile + config.KeyFile = info.KeyFile + config.BearerToken = info.BearerToken + if info.Insecure != nil { + config.Insecure = *info.Insecure + } + return config, nil +} + +func (info Info) Complete() bool { + return len(info.User) > 0 || + len(info.CertFile) > 0 || + len(info.BearerToken) > 0 +} diff --git a/vendor/k8s.io/client-go/tools/auth/clientauth_test.go b/vendor/k8s.io/client-go/tools/auth/clientauth_test.go new file mode 100644 index 000000000..11f7369de --- /dev/null +++ b/vendor/k8s.io/client-go/tools/auth/clientauth_test.go @@ -0,0 +1,69 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package auth_test + +import ( + "io/ioutil" + "os" + "reflect" + "testing" + + clientauth "k8s.io/client-go/tools/auth" +) + +func TestLoadFromFile(t *testing.T) { + loadAuthInfoTests := []struct { + authData string + authInfo *clientauth.Info + expectErr bool + }{ + { + `{"user": "user", "password": "pass"}`, + &clientauth.Info{User: "user", Password: "pass"}, + false, + }, + { + "", nil, true, + }, + } + for _, loadAuthInfoTest := range loadAuthInfoTests { + tt := loadAuthInfoTest + aifile, err := ioutil.TempFile("", "testAuthInfo") + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + if tt.authData != "missing" { + defer os.Remove(aifile.Name()) + defer aifile.Close() + _, err = aifile.WriteString(tt.authData) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + } else { + aifile.Close() + os.Remove(aifile.Name()) + } + authInfo, err := clientauth.LoadFromFile(aifile.Name()) + gotErr := err != nil + if gotErr != tt.expectErr { + t.Errorf("expected errorness: %v, actual errorness: %v", tt.expectErr, gotErr) + } + if !reflect.DeepEqual(authInfo, tt.authInfo) { + t.Errorf("Expected %v, got %v", tt.authInfo, authInfo) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/BUILD b/vendor/k8s.io/client-go/tools/cache/BUILD new file mode 100644 index 000000000..e2fd6f192 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/BUILD @@ -0,0 +1,84 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "controller_test.go", + "delta_fifo_test.go", + "expiration_cache_test.go", + "fifo_test.go", + "index_test.go", + "mutation_detector_test.go", + "processor_listener_test.go", + "reflector_test.go", + "shared_informer_test.go", + "store_test.go", + "undelta_store_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/google/gofuzz:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/tools/cache/testing:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "controller.go", + "delta_fifo.go", + "doc.go", + "expiration_cache.go", + "expiration_cache_fakes.go", + "fake_custom_store.go", + "fifo.go", + "index.go", + "listers.go", + "listwatch.go", + "mutation_cache.go", + "mutation_detector.go", + "reflector.go", + "shared_informer.go", + "store.go", + "thread_safe_store.go", + "undelta_store.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/fields:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/cache:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/cache/OWNERS b/vendor/k8s.io/client-go/tools/cache/OWNERS new file mode 100755 index 000000000..e923c7709 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/OWNERS @@ -0,0 +1,41 @@ +reviewers: +- thockin +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- brendandburns +- derekwaynecarr +- caesarxuchao +- mikedanese +- liggitt +- nikhiljindal +- bprashanth +- erictune +- davidopp +- pmorie +- kargakis +- janetkuo +- justinsb +- eparis +- soltysh +- jsafrane +- dims +- madhusudancs +- hongchaodeng +- krousey +- markturansky +- fgrzadkowski +- xiang90 +- mml +- ingvagabund +- resouer +- jessfraz +- david-mcmahon +- mfojtik +- '249043822' +- lixiaobing10051267 +- ddysher +- mqliang +- feihujiang +- sdminonne diff --git a/vendor/k8s.io/client-go/tools/cache/controller.go b/vendor/k8s.io/client-go/tools/cache/controller.go new file mode 100644 index 000000000..2c97b8658 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/controller.go @@ -0,0 +1,391 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" + "time" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/clock" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/wait" +) + +// Config contains all the settings for a Controller. +type Config struct { + // The queue for your objects; either a FIFO or + // a DeltaFIFO. Your Process() function should accept + // the output of this Queue's Pop() method. + Queue + + // Something that can list and watch your objects. + ListerWatcher + + // Something that can process your objects. + Process ProcessFunc + + // The type of your objects. + ObjectType runtime.Object + + // Reprocess everything at least this often. + // Note that if it takes longer for you to clear the queue than this + // period, you will end up processing items in the order determined + // by FIFO.Replace(). Currently, this is random. If this is a + // problem, we can change that replacement policy to append new + // things to the end of the queue instead of replacing the entire + // queue. + FullResyncPeriod time.Duration + + // ShouldResync, if specified, is invoked when the controller's reflector determines the next + // periodic sync should occur. If this returns true, it means the reflector should proceed with + // the resync. + ShouldResync ShouldResyncFunc + + // If true, when Process() returns an error, re-enqueue the object. + // TODO: add interface to let you inject a delay/backoff or drop + // the object completely if desired. Pass the object in + // question to this interface as a parameter. + RetryOnError bool +} + +// ShouldResyncFunc is a type of function that indicates if a reflector should perform a +// resync or not. It can be used by a shared informer to support multiple event handlers with custom +// resync periods. +type ShouldResyncFunc func() bool + +// ProcessFunc processes a single object. +type ProcessFunc func(obj interface{}) error + +// Controller is a generic controller framework. +type controller struct { + config Config + reflector *Reflector + reflectorMutex sync.RWMutex + clock clock.Clock +} + +type Controller interface { + Run(stopCh <-chan struct{}) + HasSynced() bool + LastSyncResourceVersion() string +} + +// New makes a new Controller from the given Config. +func New(c *Config) Controller { + ctlr := &controller{ + config: *c, + clock: &clock.RealClock{}, + } + return ctlr +} + +// Run begins processing items, and will continue until a value is sent down stopCh. +// It's an error to call Run more than once. +// Run blocks; call via go. +func (c *controller) Run(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + go func() { + <-stopCh + c.config.Queue.Close() + }() + r := NewReflector( + c.config.ListerWatcher, + c.config.ObjectType, + c.config.Queue, + c.config.FullResyncPeriod, + ) + r.ShouldResync = c.config.ShouldResync + r.clock = c.clock + + c.reflectorMutex.Lock() + c.reflector = r + c.reflectorMutex.Unlock() + + r.RunUntil(stopCh) + + wait.Until(c.processLoop, time.Second, stopCh) +} + +// Returns true once this controller has completed an initial resource listing +func (c *controller) HasSynced() bool { + return c.config.Queue.HasSynced() +} + +func (c *controller) LastSyncResourceVersion() string { + if c.reflector == nil { + return "" + } + return c.reflector.LastSyncResourceVersion() +} + +// processLoop drains the work queue. +// TODO: Consider doing the processing in parallel. This will require a little thought +// to make sure that we don't end up processing the same object multiple times +// concurrently. +// +// TODO: Plumb through the stopCh here (and down to the queue) so that this can +// actually exit when the controller is stopped. Or just give up on this stuff +// ever being stoppable. Converting this whole package to use Context would +// also be helpful. +func (c *controller) processLoop() { + for { + obj, err := c.config.Queue.Pop(PopProcessFunc(c.config.Process)) + if err != nil { + if err == FIFOClosedError { + return + } + if c.config.RetryOnError { + // This is the safe way to re-enqueue. + c.config.Queue.AddIfNotPresent(obj) + } + } + } +} + +// ResourceEventHandler can handle notifications for events that happen to a +// resource. The events are informational only, so you can't return an +// error. +// * OnAdd is called when an object is added. +// * OnUpdate is called when an object is modified. Note that oldObj is the +// last known state of the object-- it is possible that several changes +// were combined together, so you can't use this to see every single +// change. OnUpdate is also called when a re-list happens, and it will +// get called even if nothing changed. This is useful for periodically +// evaluating or syncing something. +// * OnDelete will get the final state of the item if it is known, otherwise +// it will get an object of type DeletedFinalStateUnknown. This can +// happen if the watch is closed and misses the delete event and we don't +// notice the deletion until the subsequent re-list. +type ResourceEventHandler interface { + OnAdd(obj interface{}) + OnUpdate(oldObj, newObj interface{}) + OnDelete(obj interface{}) +} + +// ResourceEventHandlerFuncs is an adaptor to let you easily specify as many or +// as few of the notification functions as you want while still implementing +// ResourceEventHandler. +type ResourceEventHandlerFuncs struct { + AddFunc func(obj interface{}) + UpdateFunc func(oldObj, newObj interface{}) + DeleteFunc func(obj interface{}) +} + +// OnAdd calls AddFunc if it's not nil. +func (r ResourceEventHandlerFuncs) OnAdd(obj interface{}) { + if r.AddFunc != nil { + r.AddFunc(obj) + } +} + +// OnUpdate calls UpdateFunc if it's not nil. +func (r ResourceEventHandlerFuncs) OnUpdate(oldObj, newObj interface{}) { + if r.UpdateFunc != nil { + r.UpdateFunc(oldObj, newObj) + } +} + +// OnDelete calls DeleteFunc if it's not nil. +func (r ResourceEventHandlerFuncs) OnDelete(obj interface{}) { + if r.DeleteFunc != nil { + r.DeleteFunc(obj) + } +} + +// FilteringResourceEventHandler applies the provided filter to all events coming +// in, ensuring the appropriate nested handler method is invoked. An object +// that starts passing the filter after an update is considered an add, and an +// object that stops passing the filter after an update is considered a delete. +type FilteringResourceEventHandler struct { + FilterFunc func(obj interface{}) bool + Handler ResourceEventHandler +} + +// OnAdd calls the nested handler only if the filter succeeds +func (r FilteringResourceEventHandler) OnAdd(obj interface{}) { + if !r.FilterFunc(obj) { + return + } + r.Handler.OnAdd(obj) +} + +// OnUpdate ensures the proper handler is called depending on whether the filter matches +func (r FilteringResourceEventHandler) OnUpdate(oldObj, newObj interface{}) { + newer := r.FilterFunc(newObj) + older := r.FilterFunc(oldObj) + switch { + case newer && older: + r.Handler.OnUpdate(oldObj, newObj) + case newer && !older: + r.Handler.OnAdd(newObj) + case !newer && older: + r.Handler.OnDelete(oldObj) + default: + // do nothing + } +} + +// OnDelete calls the nested handler only if the filter succeeds +func (r FilteringResourceEventHandler) OnDelete(obj interface{}) { + if !r.FilterFunc(obj) { + return + } + r.Handler.OnDelete(obj) +} + +// DeletionHandlingMetaNamespaceKeyFunc checks for +// DeletedFinalStateUnknown objects before calling +// MetaNamespaceKeyFunc. +func DeletionHandlingMetaNamespaceKeyFunc(obj interface{}) (string, error) { + if d, ok := obj.(DeletedFinalStateUnknown); ok { + return d.Key, nil + } + return MetaNamespaceKeyFunc(obj) +} + +// NewInformer returns a Store and a controller for populating the store +// while also providing event notifications. You should only used the returned +// Store for Get/List operations; Add/Modify/Deletes will cause the event +// notifications to be faulty. +// +// Parameters: +// * lw is list and watch functions for the source of the resource you want to +// be informed of. +// * objType is an object of the type that you expect to receive. +// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// * h is the object you want notifications sent to. +// +func NewInformer( + lw ListerWatcher, + objType runtime.Object, + resyncPeriod time.Duration, + h ResourceEventHandler, +) (Store, Controller) { + // This will hold the client state, as we know it. + clientState := NewStore(DeletionHandlingMetaNamespaceKeyFunc) + + // This will hold incoming changes. Note how we pass clientState in as a + // KeyLister, that way resync operations will result in the correct set + // of update/delete deltas. + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, clientState) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: lw, + ObjectType: objType, + FullResyncPeriod: resyncPeriod, + RetryOnError: false, + + Process: func(obj interface{}) error { + // from oldest to newest + for _, d := range obj.(Deltas) { + switch d.Type { + case Sync, Added, Updated: + if old, exists, err := clientState.Get(d.Object); err == nil && exists { + if err := clientState.Update(d.Object); err != nil { + return err + } + h.OnUpdate(old, d.Object) + } else { + if err := clientState.Add(d.Object); err != nil { + return err + } + h.OnAdd(d.Object) + } + case Deleted: + if err := clientState.Delete(d.Object); err != nil { + return err + } + h.OnDelete(d.Object) + } + } + return nil + }, + } + return clientState, New(cfg) +} + +// NewIndexerInformer returns a Indexer and a controller for populating the index +// while also providing event notifications. You should only used the returned +// Index for Get/List operations; Add/Modify/Deletes will cause the event +// notifications to be faulty. +// +// Parameters: +// * lw is list and watch functions for the source of the resource you want to +// be informed of. +// * objType is an object of the type that you expect to receive. +// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// * h is the object you want notifications sent to. +// * indexers is the indexer for the received object type. +// +func NewIndexerInformer( + lw ListerWatcher, + objType runtime.Object, + resyncPeriod time.Duration, + h ResourceEventHandler, + indexers Indexers, +) (Indexer, Controller) { + // This will hold the client state, as we know it. + clientState := NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, indexers) + + // This will hold incoming changes. Note how we pass clientState in as a + // KeyLister, that way resync operations will result in the correct set + // of update/delete deltas. + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, clientState) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: lw, + ObjectType: objType, + FullResyncPeriod: resyncPeriod, + RetryOnError: false, + + Process: func(obj interface{}) error { + // from oldest to newest + for _, d := range obj.(Deltas) { + switch d.Type { + case Sync, Added, Updated: + if old, exists, err := clientState.Get(d.Object); err == nil && exists { + if err := clientState.Update(d.Object); err != nil { + return err + } + h.OnUpdate(old, d.Object) + } else { + if err := clientState.Add(d.Object); err != nil { + return err + } + h.OnAdd(d.Object) + } + case Deleted: + if err := clientState.Delete(d.Object); err != nil { + return err + } + h.OnDelete(d.Object) + } + } + return nil + }, + } + return clientState, New(cfg) +} diff --git a/vendor/k8s.io/client-go/tools/cache/controller_test.go b/vendor/k8s.io/client-go/tools/cache/controller_test.go new file mode 100644 index 000000000..f8e6cec53 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/controller_test.go @@ -0,0 +1,405 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "math/rand" + "sync" + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/pkg/api/v1" + fcache "k8s.io/client-go/tools/cache/testing" + + "github.com/google/gofuzz" +) + +func Example() { + // source simulates an apiserver object endpoint. + source := fcache.NewFakeControllerSource() + + // This will hold the downstream state, as we know it. + downstream := NewStore(DeletionHandlingMetaNamespaceKeyFunc) + + // This will hold incoming changes. Note how we pass downstream in as a + // KeyLister, that way resync operations will result in the correct set + // of update/delete deltas. + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, downstream) + + // Let's do threadsafe output to get predictable test results. + deletionCounter := make(chan string, 1000) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: source, + ObjectType: &v1.Pod{}, + FullResyncPeriod: time.Millisecond * 100, + RetryOnError: false, + + // Let's implement a simple controller that just deletes + // everything that comes in. + Process: func(obj interface{}) error { + // Obj is from the Pop method of the Queue we make above. + newest := obj.(Deltas).Newest() + + if newest.Type != Deleted { + // Update our downstream store. + err := downstream.Add(newest.Object) + if err != nil { + return err + } + + // Delete this object. + source.Delete(newest.Object.(runtime.Object)) + } else { + // Update our downstream store. + err := downstream.Delete(newest.Object) + if err != nil { + return err + } + + // fifo's KeyOf is easiest, because it handles + // DeletedFinalStateUnknown markers. + key, err := fifo.KeyOf(newest.Object) + if err != nil { + return err + } + + // Report this deletion. + deletionCounter <- key + } + return nil + }, + } + + // Create the controller and run it until we close stop. + stop := make(chan struct{}) + defer close(stop) + go New(cfg).Run(stop) + + // Let's add a few objects to the source. + testIDs := []string{"a-hello", "b-controller", "c-framework"} + for _, name := range testIDs { + // Note that these pods are not valid-- the fake source doesn't + // call validation or anything. + source.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: name}}) + } + + // Let's wait for the controller to process the things we just added. + outputSet := sets.String{} + for i := 0; i < len(testIDs); i++ { + outputSet.Insert(<-deletionCounter) + } + + for _, key := range outputSet.List() { + fmt.Println(key) + } + // Output: + // a-hello + // b-controller + // c-framework +} + +func ExampleNewInformer() { + // source simulates an apiserver object endpoint. + source := fcache.NewFakeControllerSource() + + // Let's do threadsafe output to get predictable test results. + deletionCounter := make(chan string, 1000) + + // Make a controller that immediately deletes anything added to it, and + // logs anything deleted. + _, controller := NewInformer( + source, + &v1.Pod{}, + time.Millisecond*100, + ResourceEventHandlerFuncs{ + AddFunc: func(obj interface{}) { + source.Delete(obj.(runtime.Object)) + }, + DeleteFunc: func(obj interface{}) { + key, err := DeletionHandlingMetaNamespaceKeyFunc(obj) + if err != nil { + key = "oops something went wrong with the key" + } + + // Report this deletion. + deletionCounter <- key + }, + }, + ) + + // Run the controller and run it until we close stop. + stop := make(chan struct{}) + defer close(stop) + go controller.Run(stop) + + // Let's add a few objects to the source. + testIDs := []string{"a-hello", "b-controller", "c-framework"} + for _, name := range testIDs { + // Note that these pods are not valid-- the fake source doesn't + // call validation or anything. + source.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: name}}) + } + + // Let's wait for the controller to process the things we just added. + outputSet := sets.String{} + for i := 0; i < len(testIDs); i++ { + outputSet.Insert(<-deletionCounter) + } + + for _, key := range outputSet.List() { + fmt.Println(key) + } + // Output: + // a-hello + // b-controller + // c-framework +} + +func TestHammerController(t *testing.T) { + // This test executes a bunch of requests through the fake source and + // controller framework to make sure there's no locking/threading + // errors. If an error happens, it should hang forever or trigger the + // race detector. + + // source simulates an apiserver object endpoint. + source := fcache.NewFakeControllerSource() + + // Let's do threadsafe output to get predictable test results. + outputSetLock := sync.Mutex{} + // map of key to operations done on the key + outputSet := map[string][]string{} + + recordFunc := func(eventType string, obj interface{}) { + key, err := DeletionHandlingMetaNamespaceKeyFunc(obj) + if err != nil { + t.Errorf("something wrong with key: %v", err) + key = "oops something went wrong with the key" + } + + // Record some output when items are deleted. + outputSetLock.Lock() + defer outputSetLock.Unlock() + outputSet[key] = append(outputSet[key], eventType) + } + + // Make a controller which just logs all the changes it gets. + _, controller := NewInformer( + source, + &v1.Pod{}, + time.Millisecond*100, + ResourceEventHandlerFuncs{ + AddFunc: func(obj interface{}) { recordFunc("add", obj) }, + UpdateFunc: func(oldObj, newObj interface{}) { recordFunc("update", newObj) }, + DeleteFunc: func(obj interface{}) { recordFunc("delete", obj) }, + }, + ) + + if controller.HasSynced() { + t.Errorf("Expected HasSynced() to return false before we started the controller") + } + + // Run the controller and run it until we close stop. + stop := make(chan struct{}) + go controller.Run(stop) + + // Let's wait for the controller to do its initial sync + wait.Poll(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { + return controller.HasSynced(), nil + }) + if !controller.HasSynced() { + t.Errorf("Expected HasSynced() to return true after the initial sync") + } + + wg := sync.WaitGroup{} + const threads = 3 + wg.Add(threads) + for i := 0; i < threads; i++ { + go func() { + defer wg.Done() + // Let's add a few objects to the source. + currentNames := sets.String{} + rs := rand.NewSource(rand.Int63()) + f := fuzz.New().NilChance(.5).NumElements(0, 2).RandSource(rs) + r := rand.New(rs) // Mustn't use r and f concurrently! + for i := 0; i < 100; i++ { + var name string + var isNew bool + if currentNames.Len() == 0 || r.Intn(3) == 1 { + f.Fuzz(&name) + isNew = true + } else { + l := currentNames.List() + name = l[r.Intn(len(l))] + } + + pod := &v1.Pod{} + f.Fuzz(pod) + pod.ObjectMeta.Name = name + pod.ObjectMeta.Namespace = "default" + // Add, update, or delete randomly. + // Note that these pods are not valid-- the fake source doesn't + // call validation or perform any other checking. + if isNew { + currentNames.Insert(name) + source.Add(pod) + continue + } + switch r.Intn(2) { + case 0: + currentNames.Insert(name) + source.Modify(pod) + case 1: + currentNames.Delete(name) + source.Delete(pod) + } + } + }() + } + wg.Wait() + + // Let's wait for the controller to finish processing the things we just added. + // TODO: look in the queue to see how many items need to be processed. + time.Sleep(100 * time.Millisecond) + close(stop) + + // TODO: Verify that no goroutines were leaked here and that everything shut + // down cleanly. + + outputSetLock.Lock() + t.Logf("got: %#v", outputSet) +} + +func TestUpdate(t *testing.T) { + // This test is going to exercise the various paths that result in a + // call to update. + + // source simulates an apiserver object endpoint. + source := fcache.NewFakeControllerSource() + + const ( + FROM = "from" + TO = "to" + ) + + // These are the transitions we expect to see; because this is + // asynchronous, there are a lot of valid possibilities. + type pair struct{ from, to string } + allowedTransitions := map[pair]bool{ + {FROM, TO}: true, + + // Because a resync can happen when we've already observed one + // of the above but before the item is deleted. + {TO, TO}: true, + // Because a resync could happen before we observe an update. + {FROM, FROM}: true, + } + + pod := func(name, check string, final bool) *v1.Pod { + p := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Labels: map[string]string{"check": check}, + }, + } + if final { + p.Labels["final"] = "true" + } + return p + } + deletePod := func(p *v1.Pod) bool { + return p.Labels["final"] == "true" + } + + tests := []func(string){ + func(name string) { + name = "a-" + name + source.Add(pod(name, FROM, false)) + source.Modify(pod(name, TO, true)) + }, + } + + const threads = 3 + + var testDoneWG sync.WaitGroup + testDoneWG.Add(threads * len(tests)) + + // Make a controller that deletes things once it observes an update. + // It calls Done() on the wait group on deletions so we can tell when + // everything we've added has been deleted. + watchCh := make(chan struct{}) + _, controller := NewInformer( + &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + watch, err := source.Watch(options) + close(watchCh) + return watch, err + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return source.List(options) + }, + }, + &v1.Pod{}, + 0, + ResourceEventHandlerFuncs{ + UpdateFunc: func(oldObj, newObj interface{}) { + o, n := oldObj.(*v1.Pod), newObj.(*v1.Pod) + from, to := o.Labels["check"], n.Labels["check"] + if !allowedTransitions[pair{from, to}] { + t.Errorf("observed transition %q -> %q for %v", from, to, n.Name) + } + if deletePod(n) { + source.Delete(n) + } + }, + DeleteFunc: func(obj interface{}) { + testDoneWG.Done() + }, + }, + ) + + // Run the controller and run it until we close stop. + // Once Run() is called, calls to testDoneWG.Done() might start, so + // all testDoneWG.Add() calls must happen before this point + stop := make(chan struct{}) + go controller.Run(stop) + <-watchCh + + // run every test a few times, in parallel + var wg sync.WaitGroup + wg.Add(threads * len(tests)) + for i := 0; i < threads; i++ { + for j, f := range tests { + go func(name string, f func(string)) { + defer wg.Done() + f(name) + }(fmt.Sprintf("%v-%v", i, j), f) + } + } + wg.Wait() + + // Let's wait for the controller to process the things we just added. + testDoneWG.Wait() + close(stop) +} diff --git a/vendor/k8s.io/client-go/tools/cache/delta_fifo.go b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go new file mode 100644 index 000000000..a71db6048 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/delta_fifo.go @@ -0,0 +1,681 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "errors" + "fmt" + "sync" + + "k8s.io/apimachinery/pkg/util/sets" + + "github.com/golang/glog" +) + +// NewDeltaFIFO returns a Store which can be used process changes to items. +// +// keyFunc is used to figure out what key an object should have. (It's +// exposed in the returned DeltaFIFO's KeyOf() method, with bonus features.) +// +// 'compressor' may compress as many or as few items as it wants +// (including returning an empty slice), but it should do what it +// does quickly since it is called while the queue is locked. +// 'compressor' may be nil if you don't want any delta compression. +// +// 'keyLister' is expected to return a list of keys that the consumer of +// this queue "knows about". It is used to decide which items are missing +// when Replace() is called; 'Deleted' deltas are produced for these items. +// It may be nil if you don't need to detect all deletions. +// TODO: consider merging keyLister with this object, tracking a list of +// "known" keys when Pop() is called. Have to think about how that +// affects error retrying. +// TODO(lavalamp): I believe there is a possible race only when using an +// external known object source that the above TODO would +// fix. +// +// Also see the comment on DeltaFIFO. +func NewDeltaFIFO(keyFunc KeyFunc, compressor DeltaCompressor, knownObjects KeyListerGetter) *DeltaFIFO { + f := &DeltaFIFO{ + items: map[string]Deltas{}, + queue: []string{}, + keyFunc: keyFunc, + deltaCompressor: compressor, + knownObjects: knownObjects, + } + f.cond.L = &f.lock + return f +} + +// DeltaFIFO is like FIFO, but allows you to process deletes. +// +// DeltaFIFO is a producer-consumer queue, where a Reflector is +// intended to be the producer, and the consumer is whatever calls +// the Pop() method. +// +// DeltaFIFO solves this use case: +// * You want to process every object change (delta) at most once. +// * When you process an object, you want to see everything +// that's happened to it since you last processed it. +// * You want to process the deletion of objects. +// * You might want to periodically reprocess objects. +// +// DeltaFIFO's Pop(), Get(), and GetByKey() methods return +// interface{} to satisfy the Store/Queue interfaces, but it +// will always return an object of type Deltas. +// +// A note on threading: If you call Pop() in parallel from multiple +// threads, you could end up with multiple threads processing slightly +// different versions of the same object. +// +// A note on the KeyLister used by the DeltaFIFO: It's main purpose is +// to list keys that are "known", for the purpose of figuring out which +// items have been deleted when Replace() or Delete() are called. The deleted +// object will be included in the DeleteFinalStateUnknown markers. These objects +// could be stale. +// +// You may provide a function to compress deltas (e.g., represent a +// series of Updates as a single Update). +type DeltaFIFO struct { + // lock/cond protects access to 'items' and 'queue'. + lock sync.RWMutex + cond sync.Cond + + // We depend on the property that items in the set are in + // the queue and vice versa, and that all Deltas in this + // map have at least one Delta. + items map[string]Deltas + queue []string + + // populated is true if the first batch of items inserted by Replace() has been populated + // or Delete/Add/Update was called first. + populated bool + // initialPopulationCount is the number of items inserted by the first call of Replace() + initialPopulationCount int + + // keyFunc is used to make the key used for queued item + // insertion and retrieval, and should be deterministic. + keyFunc KeyFunc + + // deltaCompressor tells us how to combine two or more + // deltas. It may be nil. + deltaCompressor DeltaCompressor + + // knownObjects list keys that are "known", for the + // purpose of figuring out which items have been deleted + // when Replace() or Delete() is called. + knownObjects KeyListerGetter + + // Indication the queue is closed. + // Used to indicate a queue is closed so a control loop can exit when a queue is empty. + // Currently, not used to gate any of CRED operations. + closed bool + closedLock sync.Mutex +} + +var ( + _ = Queue(&DeltaFIFO{}) // DeltaFIFO is a Queue +) + +var ( + // ErrZeroLengthDeltasObject is returned in a KeyError if a Deltas + // object with zero length is encountered (should be impossible, + // even if such an object is accidentally produced by a DeltaCompressor-- + // but included for completeness). + ErrZeroLengthDeltasObject = errors.New("0 length Deltas object; can't get key") +) + +// Close the queue. +func (f *DeltaFIFO) Close() { + f.closedLock.Lock() + defer f.closedLock.Unlock() + f.closed = true + f.cond.Broadcast() +} + +// KeyOf exposes f's keyFunc, but also detects the key of a Deltas object or +// DeletedFinalStateUnknown objects. +func (f *DeltaFIFO) KeyOf(obj interface{}) (string, error) { + if d, ok := obj.(Deltas); ok { + if len(d) == 0 { + return "", KeyError{obj, ErrZeroLengthDeltasObject} + } + obj = d.Newest().Object + } + if d, ok := obj.(DeletedFinalStateUnknown); ok { + return d.Key, nil + } + return f.keyFunc(obj) +} + +// Return true if an Add/Update/Delete/AddIfNotPresent are called first, +// or an Update called first but the first batch of items inserted by Replace() has been popped +func (f *DeltaFIFO) HasSynced() bool { + f.lock.Lock() + defer f.lock.Unlock() + return f.populated && f.initialPopulationCount == 0 +} + +// Add inserts an item, and puts it in the queue. The item is only enqueued +// if it doesn't already exist in the set. +func (f *DeltaFIFO) Add(obj interface{}) error { + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + return f.queueActionLocked(Added, obj) +} + +// Update is just like Add, but makes an Updated Delta. +func (f *DeltaFIFO) Update(obj interface{}) error { + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + return f.queueActionLocked(Updated, obj) +} + +// Delete is just like Add, but makes an Deleted Delta. If the item does not +// already exist, it will be ignored. (It may have already been deleted by a +// Replace (re-list), for example. +func (f *DeltaFIFO) Delete(obj interface{}) error { + id, err := f.KeyOf(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + if f.knownObjects == nil { + if _, exists := f.items[id]; !exists { + // Presumably, this was deleted when a relist happened. + // Don't provide a second report of the same deletion. + return nil + } + } else { + // We only want to skip the "deletion" action if the object doesn't + // exist in knownObjects and it doesn't have corresponding item in items. + // Note that even if there is a "deletion" action in items, we can ignore it, + // because it will be deduped automatically in "queueActionLocked" + _, exists, err := f.knownObjects.GetByKey(id) + _, itemsExist := f.items[id] + if err == nil && !exists && !itemsExist { + // Presumably, this was deleted when a relist happened. + // Don't provide a second report of the same deletion. + // TODO(lavalamp): This may be racy-- we aren't properly locked + // with knownObjects. + return nil + } + } + + return f.queueActionLocked(Deleted, obj) +} + +// AddIfNotPresent inserts an item, and puts it in the queue. If the item is already +// present in the set, it is neither enqueued nor added to the set. +// +// This is useful in a single producer/consumer scenario so that the consumer can +// safely retry items without contending with the producer and potentially enqueueing +// stale items. +// +// Important: obj must be a Deltas (the output of the Pop() function). Yes, this is +// different from the Add/Update/Delete functions. +func (f *DeltaFIFO) AddIfNotPresent(obj interface{}) error { + deltas, ok := obj.(Deltas) + if !ok { + return fmt.Errorf("object must be of type deltas, but got: %#v", obj) + } + id, err := f.KeyOf(deltas.Newest().Object) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.addIfNotPresent(id, deltas) + return nil +} + +// addIfNotPresent inserts deltas under id if it does not exist, and assumes the caller +// already holds the fifo lock. +func (f *DeltaFIFO) addIfNotPresent(id string, deltas Deltas) { + f.populated = true + if _, exists := f.items[id]; exists { + return + } + + f.queue = append(f.queue, id) + f.items[id] = deltas + f.cond.Broadcast() +} + +// re-listing and watching can deliver the same update multiple times in any +// order. This will combine the most recent two deltas if they are the same. +func dedupDeltas(deltas Deltas) Deltas { + n := len(deltas) + if n < 2 { + return deltas + } + a := &deltas[n-1] + b := &deltas[n-2] + if out := isDup(a, b); out != nil { + d := append(Deltas{}, deltas[:n-2]...) + return append(d, *out) + } + return deltas +} + +// If a & b represent the same event, returns the delta that ought to be kept. +// Otherwise, returns nil. +// TODO: is there anything other than deletions that need deduping? +func isDup(a, b *Delta) *Delta { + if out := isDeletionDup(a, b); out != nil { + return out + } + // TODO: Detect other duplicate situations? Are there any? + return nil +} + +// keep the one with the most information if both are deletions. +func isDeletionDup(a, b *Delta) *Delta { + if b.Type != Deleted || a.Type != Deleted { + return nil + } + // Do more sophisticated checks, or is this sufficient? + if _, ok := b.Object.(DeletedFinalStateUnknown); ok { + return a + } + return b +} + +// willObjectBeDeletedLocked returns true only if the last delta for the +// given object is Delete. Caller must lock first. +func (f *DeltaFIFO) willObjectBeDeletedLocked(id string) bool { + deltas := f.items[id] + return len(deltas) > 0 && deltas[len(deltas)-1].Type == Deleted +} + +// queueActionLocked appends to the delta list for the object, calling +// f.deltaCompressor if needed. Caller must lock first. +func (f *DeltaFIFO) queueActionLocked(actionType DeltaType, obj interface{}) error { + id, err := f.KeyOf(obj) + if err != nil { + return KeyError{obj, err} + } + + // If object is supposed to be deleted (last event is Deleted), + // then we should ignore Sync events, because it would result in + // recreation of this object. + if actionType == Sync && f.willObjectBeDeletedLocked(id) { + return nil + } + + newDeltas := append(f.items[id], Delta{actionType, obj}) + newDeltas = dedupDeltas(newDeltas) + if f.deltaCompressor != nil { + newDeltas = f.deltaCompressor.Compress(newDeltas) + } + + _, exists := f.items[id] + if len(newDeltas) > 0 { + if !exists { + f.queue = append(f.queue, id) + } + f.items[id] = newDeltas + f.cond.Broadcast() + } else if exists { + // The compression step removed all deltas, so + // we need to remove this from our map (extra items + // in the queue are ignored if they are not in the + // map). + delete(f.items, id) + } + return nil +} + +// List returns a list of all the items; it returns the object +// from the most recent Delta. +// You should treat the items returned inside the deltas as immutable. +func (f *DeltaFIFO) List() []interface{} { + f.lock.RLock() + defer f.lock.RUnlock() + return f.listLocked() +} + +func (f *DeltaFIFO) listLocked() []interface{} { + list := make([]interface{}, 0, len(f.items)) + for _, item := range f.items { + // Copy item's slice so operations on this slice (delta + // compression) won't interfere with the object we return. + item = copyDeltas(item) + list = append(list, item.Newest().Object) + } + return list +} + +// ListKeys returns a list of all the keys of the objects currently +// in the FIFO. +func (f *DeltaFIFO) ListKeys() []string { + f.lock.RLock() + defer f.lock.RUnlock() + list := make([]string, 0, len(f.items)) + for key := range f.items { + list = append(list, key) + } + return list +} + +// Get returns the complete list of deltas for the requested item, +// or sets exists=false. +// You should treat the items returned inside the deltas as immutable. +func (f *DeltaFIFO) Get(obj interface{}) (item interface{}, exists bool, err error) { + key, err := f.KeyOf(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + return f.GetByKey(key) +} + +// GetByKey returns the complete list of deltas for the requested item, +// setting exists=false if that list is empty. +// You should treat the items returned inside the deltas as immutable. +func (f *DeltaFIFO) GetByKey(key string) (item interface{}, exists bool, err error) { + f.lock.RLock() + defer f.lock.RUnlock() + d, exists := f.items[key] + if exists { + // Copy item's slice so operations on this slice (delta + // compression) won't interfere with the object we return. + d = copyDeltas(d) + } + return d, exists, nil +} + +// Checks if the queue is closed +func (f *DeltaFIFO) IsClosed() bool { + f.closedLock.Lock() + defer f.closedLock.Unlock() + if f.closed { + return true + } + return false +} + +// Pop blocks until an item is added to the queue, and then returns it. If +// multiple items are ready, they are returned in the order in which they were +// added/updated. The item is removed from the queue (and the store) before it +// is returned, so if you don't successfully process it, you need to add it back +// with AddIfNotPresent(). +// process function is called under lock, so it is safe update data structures +// in it that need to be in sync with the queue (e.g. knownKeys). The PopProcessFunc +// may return an instance of ErrRequeue with a nested error to indicate the current +// item should be requeued (equivalent to calling AddIfNotPresent under the lock). +// +// Pop returns a 'Deltas', which has a complete list of all the things +// that happened to the object (deltas) while it was sitting in the queue. +func (f *DeltaFIFO) Pop(process PopProcessFunc) (interface{}, error) { + f.lock.Lock() + defer f.lock.Unlock() + for { + for len(f.queue) == 0 { + // When the queue is empty, invocation of Pop() is blocked until new item is enqueued. + // When Close() is called, the f.closed is set and the condition is broadcasted. + // Which causes this loop to continue and return from the Pop(). + if f.IsClosed() { + return nil, FIFOClosedError + } + + f.cond.Wait() + } + id := f.queue[0] + f.queue = f.queue[1:] + item, ok := f.items[id] + if f.initialPopulationCount > 0 { + f.initialPopulationCount-- + } + if !ok { + // Item may have been deleted subsequently. + continue + } + delete(f.items, id) + err := process(item) + if e, ok := err.(ErrRequeue); ok { + f.addIfNotPresent(id, item) + err = e.Err + } + // Don't need to copyDeltas here, because we're transferring + // ownership to the caller. + return item, err + } +} + +// Replace will delete the contents of 'f', using instead the given map. +// 'f' takes ownership of the map, you should not reference the map again +// after calling this function. f's queue is reset, too; upon return, it +// will contain the items in the map, in no particular order. +func (f *DeltaFIFO) Replace(list []interface{}, resourceVersion string) error { + f.lock.Lock() + defer f.lock.Unlock() + keys := make(sets.String, len(list)) + + for _, item := range list { + key, err := f.KeyOf(item) + if err != nil { + return KeyError{item, err} + } + keys.Insert(key) + if err := f.queueActionLocked(Sync, item); err != nil { + return fmt.Errorf("couldn't enqueue object: %v", err) + } + } + + if f.knownObjects == nil { + // Do deletion detection against our own list. + for k, oldItem := range f.items { + if keys.Has(k) { + continue + } + var deletedObj interface{} + if n := oldItem.Newest(); n != nil { + deletedObj = n.Object + } + if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { + return err + } + } + + if !f.populated { + f.populated = true + f.initialPopulationCount = len(list) + } + + return nil + } + + // Detect deletions not already in the queue. + // TODO(lavalamp): This may be racy-- we aren't properly locked + // with knownObjects. Unproven. + knownKeys := f.knownObjects.ListKeys() + queuedDeletions := 0 + for _, k := range knownKeys { + if keys.Has(k) { + continue + } + + deletedObj, exists, err := f.knownObjects.GetByKey(k) + if err != nil { + deletedObj = nil + glog.Errorf("Unexpected error %v during lookup of key %v, placing DeleteFinalStateUnknown marker without object", err, k) + } else if !exists { + deletedObj = nil + glog.Infof("Key %v does not exist in known objects store, placing DeleteFinalStateUnknown marker without object", k) + } + queuedDeletions++ + if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { + return err + } + } + + if !f.populated { + f.populated = true + f.initialPopulationCount = len(list) + queuedDeletions + } + + return nil +} + +// Resync will send a sync event for each item +func (f *DeltaFIFO) Resync() error { + f.lock.Lock() + defer f.lock.Unlock() + + keys := f.knownObjects.ListKeys() + for _, k := range keys { + if err := f.syncKeyLocked(k); err != nil { + return err + } + } + return nil +} + +func (f *DeltaFIFO) syncKey(key string) error { + f.lock.Lock() + defer f.lock.Unlock() + + return f.syncKeyLocked(key) +} + +func (f *DeltaFIFO) syncKeyLocked(key string) error { + obj, exists, err := f.knownObjects.GetByKey(key) + if err != nil { + glog.Errorf("Unexpected error %v during lookup of key %v, unable to queue object for sync", err, key) + return nil + } else if !exists { + glog.Infof("Key %v does not exist in known objects store, unable to queue object for sync", key) + return nil + } + + // If we are doing Resync() and there is already an event queued for that object, + // we ignore the Resync for it. This is to avoid the race, in which the resync + // comes with the previous value of object (since queueing an event for the object + // doesn't trigger changing the underlying store . + id, err := f.KeyOf(obj) + if err != nil { + return KeyError{obj, err} + } + if len(f.items[id]) > 0 { + return nil + } + + if err := f.queueActionLocked(Sync, obj); err != nil { + return fmt.Errorf("couldn't queue object: %v", err) + } + return nil +} + +// A KeyListerGetter is anything that knows how to list its keys and look up by key. +type KeyListerGetter interface { + KeyLister + KeyGetter +} + +// A KeyLister is anything that knows how to list its keys. +type KeyLister interface { + ListKeys() []string +} + +// A KeyGetter is anything that knows how to get the value stored under a given key. +type KeyGetter interface { + GetByKey(key string) (interface{}, bool, error) +} + +// DeltaCompressor is an algorithm that removes redundant changes. +type DeltaCompressor interface { + Compress(Deltas) Deltas +} + +// DeltaCompressorFunc should remove redundant changes; but changes that +// are redundant depend on one's desired semantics, so this is an +// injectable function. +// +// DeltaCompressorFunc adapts a raw function to be a DeltaCompressor. +type DeltaCompressorFunc func(Deltas) Deltas + +// Compress just calls dc. +func (dc DeltaCompressorFunc) Compress(d Deltas) Deltas { + return dc(d) +} + +// DeltaType is the type of a change (addition, deletion, etc) +type DeltaType string + +const ( + Added DeltaType = "Added" + Updated DeltaType = "Updated" + Deleted DeltaType = "Deleted" + // The other types are obvious. You'll get Sync deltas when: + // * A watch expires/errors out and a new list/watch cycle is started. + // * You've turned on periodic syncs. + // (Anything that trigger's DeltaFIFO's Replace() method.) + Sync DeltaType = "Sync" +) + +// Delta is the type stored by a DeltaFIFO. It tells you what change +// happened, and the object's state after* that change. +// +// [*] Unless the change is a deletion, and then you'll get the final +// state of the object before it was deleted. +type Delta struct { + Type DeltaType + Object interface{} +} + +// Deltas is a list of one or more 'Delta's to an individual object. +// The oldest delta is at index 0, the newest delta is the last one. +type Deltas []Delta + +// Oldest is a convenience function that returns the oldest delta, or +// nil if there are no deltas. +func (d Deltas) Oldest() *Delta { + if len(d) > 0 { + return &d[0] + } + return nil +} + +// Newest is a convenience function that returns the newest delta, or +// nil if there are no deltas. +func (d Deltas) Newest() *Delta { + if n := len(d); n > 0 { + return &d[n-1] + } + return nil +} + +// copyDeltas returns a shallow copy of d; that is, it copies the slice but not +// the objects in the slice. This allows Get/List to return an object that we +// know won't be clobbered by a subsequent call to a delta compressor. +func copyDeltas(d Deltas) Deltas { + d2 := make(Deltas, len(d)) + copy(d2, d) + return d2 +} + +// DeletedFinalStateUnknown is placed into a DeltaFIFO in the case where +// an object was deleted but the watch deletion event was missed. In this +// case we don't know the final "resting" state of the object, so there's +// a chance the included `Obj` is stale. +type DeletedFinalStateUnknown struct { + Key string + Obj interface{} +} diff --git a/vendor/k8s.io/client-go/tools/cache/delta_fifo_test.go b/vendor/k8s.io/client-go/tools/cache/delta_fifo_test.go new file mode 100644 index 000000000..87bbdaeab --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/delta_fifo_test.go @@ -0,0 +1,533 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "reflect" + "testing" + "time" +) + +// helper function to reduce stuttering +func testPop(f *DeltaFIFO) testFifoObject { + return Pop(f).(Deltas).Newest().Object.(testFifoObject) +} + +// keyLookupFunc adapts a raw function to be a KeyLookup. +type keyLookupFunc func() []testFifoObject + +// ListKeys just calls kl. +func (kl keyLookupFunc) ListKeys() []string { + result := []string{} + for _, fifoObj := range kl() { + result = append(result, fifoObj.name) + } + return result +} + +// GetByKey returns the key if it exists in the list returned by kl. +func (kl keyLookupFunc) GetByKey(key string) (interface{}, bool, error) { + for _, v := range kl() { + if v.name == key { + return v, true, nil + } + } + return nil, false, nil +} + +func TestDeltaFIFO_basic(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + const amount = 500 + go func() { + for i := 0; i < amount; i++ { + f.Add(mkFifoObj(string([]rune{'a', rune(i)}), i+1)) + } + }() + go func() { + for u := uint64(0); u < amount; u++ { + f.Add(mkFifoObj(string([]rune{'b', rune(u)}), u+1)) + } + }() + + lastInt := int(0) + lastUint := uint64(0) + for i := 0; i < amount*2; i++ { + switch obj := testPop(f).val.(type) { + case int: + if obj <= lastInt { + t.Errorf("got %v (int) out of order, last was %v", obj, lastInt) + } + lastInt = obj + case uint64: + if obj <= lastUint { + t.Errorf("got %v (uint) out of order, last was %v", obj, lastUint) + } else { + lastUint = obj + } + default: + t.Fatalf("unexpected type %#v", obj) + } + } +} + +func TestDeltaFIFO_requeueOnPop(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + + f.Add(mkFifoObj("foo", 10)) + _, err := f.Pop(func(obj interface{}) error { + if obj.(Deltas)[0].Object.(testFifoObject).name != "foo" { + t.Fatalf("unexpected object: %#v", obj) + } + return ErrRequeue{Err: nil} + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if _, ok, err := f.GetByKey("foo"); !ok || err != nil { + t.Fatalf("object should have been requeued: %t %v", ok, err) + } + + _, err = f.Pop(func(obj interface{}) error { + if obj.(Deltas)[0].Object.(testFifoObject).name != "foo" { + t.Fatalf("unexpected object: %#v", obj) + } + return ErrRequeue{Err: fmt.Errorf("test error")} + }) + if err == nil || err.Error() != "test error" { + t.Fatalf("unexpected error: %v", err) + } + if _, ok, err := f.GetByKey("foo"); !ok || err != nil { + t.Fatalf("object should have been requeued: %t %v", ok, err) + } + + _, err = f.Pop(func(obj interface{}) error { + if obj.(Deltas)[0].Object.(testFifoObject).name != "foo" { + t.Fatalf("unexpected object: %#v", obj) + } + return nil + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if _, ok, err := f.GetByKey("foo"); ok || err != nil { + t.Fatalf("object should have been removed: %t %v", ok, err) + } +} + +func TestDeltaFIFO_compressorWorks(t *testing.T) { + oldestTypes := []DeltaType{} + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + // This function just keeps the most recent delta + // and puts deleted ones in the list. + DeltaCompressorFunc(func(d Deltas) Deltas { + if n := len(d); n > 1 { + oldestTypes = append(oldestTypes, d[0].Type) + d = d[1:] + } + return d + }), + nil, + ) + if f.HasSynced() { + t.Errorf("Expected HasSynced to be false before completion of initial population") + } + f.Add(mkFifoObj("foo", 10)) + f.Update(mkFifoObj("foo", 12)) + f.Replace([]interface{}{mkFifoObj("foo", 20)}, "0") + f.Delete(mkFifoObj("foo", 22)) + f.Add(mkFifoObj("foo", 25)) // flush the last one out + expect := []DeltaType{Added, Updated, Sync, Deleted} + if e, a := expect, oldestTypes; !reflect.DeepEqual(e, a) { + t.Errorf("Expected %#v, got %#v", e, a) + } + if e, a := (Deltas{{Added, mkFifoObj("foo", 25)}}), Pop(f).(Deltas); !reflect.DeepEqual(e, a) { + t.Fatalf("Expected %#v, got %#v", e, a) + } + if !f.HasSynced() { + t.Errorf("Expected HasSynced to be true after completion of initial population") + } +} + +func TestDeltaFIFO_addUpdate(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + f.Add(mkFifoObj("foo", 10)) + f.Update(mkFifoObj("foo", 12)) + f.Delete(mkFifoObj("foo", 15)) + + if e, a := []interface{}{mkFifoObj("foo", 15)}, f.List(); !reflect.DeepEqual(e, a) { + t.Errorf("Expected %+v, got %+v", e, a) + } + if e, a := []string{"foo"}, f.ListKeys(); !reflect.DeepEqual(e, a) { + t.Errorf("Expected %+v, got %+v", e, a) + } + + got := make(chan testFifoObject, 2) + go func() { + for { + obj := testPop(f) + t.Logf("got a thing %#v", obj) + t.Logf("D len: %v", len(f.queue)) + got <- obj + } + }() + + first := <-got + if e, a := 15, first.val; e != a { + t.Errorf("Didn't get updated value (%v), got %v", e, a) + } + select { + case unexpected := <-got: + t.Errorf("Got second value %v", unexpected.val) + case <-time.After(50 * time.Millisecond): + } + _, exists, _ := f.Get(mkFifoObj("foo", "")) + if exists { + t.Errorf("item did not get removed") + } +} + +func TestDeltaFIFO_enqueueingNoLister(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + f.Add(mkFifoObj("foo", 10)) + f.Update(mkFifoObj("bar", 15)) + f.Add(mkFifoObj("qux", 17)) + f.Delete(mkFifoObj("qux", 18)) + + // This delete does not enqueue anything because baz doesn't exist. + f.Delete(mkFifoObj("baz", 20)) + + expectList := []int{10, 15, 18} + for _, expect := range expectList { + if e, a := expect, testPop(f).val; e != a { + t.Errorf("Didn't get updated value (%v), got %v", e, a) + } + } + if e, a := 0, len(f.items); e != a { + t.Errorf("queue unexpectedly not empty: %v != %v\n%#v", e, a, f.items) + } +} + +func TestDeltaFIFO_enqueueingWithLister(t *testing.T) { + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + nil, + keyLookupFunc(func() []testFifoObject { + return []testFifoObject{mkFifoObj("foo", 5), mkFifoObj("bar", 6), mkFifoObj("baz", 7)} + }), + ) + f.Add(mkFifoObj("foo", 10)) + f.Update(mkFifoObj("bar", 15)) + + // This delete does enqueue the deletion, because "baz" is in the key lister. + f.Delete(mkFifoObj("baz", 20)) + + expectList := []int{10, 15, 20} + for _, expect := range expectList { + if e, a := expect, testPop(f).val; e != a { + t.Errorf("Didn't get updated value (%v), got %v", e, a) + } + } + if e, a := 0, len(f.items); e != a { + t.Errorf("queue unexpectedly not empty: %v != %v", e, a) + } +} + +func TestDeltaFIFO_addReplace(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + f.Add(mkFifoObj("foo", 10)) + f.Replace([]interface{}{mkFifoObj("foo", 15)}, "0") + got := make(chan testFifoObject, 2) + go func() { + for { + got <- testPop(f) + } + }() + + first := <-got + if e, a := 15, first.val; e != a { + t.Errorf("Didn't get updated value (%v), got %v", e, a) + } + select { + case unexpected := <-got: + t.Errorf("Got second value %v", unexpected.val) + case <-time.After(50 * time.Millisecond): + } + _, exists, _ := f.Get(mkFifoObj("foo", "")) + if exists { + t.Errorf("item did not get removed") + } +} + +func TestDeltaFIFO_ResyncNonExisting(t *testing.T) { + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + nil, + keyLookupFunc(func() []testFifoObject { + return []testFifoObject{mkFifoObj("foo", 5)} + }), + ) + f.Delete(mkFifoObj("foo", 10)) + f.Resync() + + deltas := f.items["foo"] + if len(deltas) != 1 { + t.Fatalf("unexpected deltas length: %v", deltas) + } + if deltas[0].Type != Deleted { + t.Errorf("unexpected delta: %v", deltas[0]) + } +} + +func TestDeltaFIFO_DeleteExistingNonPropagated(t *testing.T) { + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + nil, + keyLookupFunc(func() []testFifoObject { + return []testFifoObject{} + }), + ) + f.Add(mkFifoObj("foo", 5)) + f.Delete(mkFifoObj("foo", 6)) + + deltas := f.items["foo"] + if len(deltas) != 2 { + t.Fatalf("unexpected deltas length: %v", deltas) + } + if deltas[len(deltas)-1].Type != Deleted { + t.Errorf("unexpected delta: %v", deltas[len(deltas)-1]) + } +} + +func TestDeltaFIFO_ReplaceMakesDeletions(t *testing.T) { + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + nil, + keyLookupFunc(func() []testFifoObject { + return []testFifoObject{mkFifoObj("foo", 5), mkFifoObj("bar", 6), mkFifoObj("baz", 7)} + }), + ) + f.Delete(mkFifoObj("baz", 10)) + f.Replace([]interface{}{mkFifoObj("foo", 5)}, "0") + + expectedList := []Deltas{ + {{Deleted, mkFifoObj("baz", 10)}}, + {{Sync, mkFifoObj("foo", 5)}}, + // Since "bar" didn't have a delete event and wasn't in the Replace list + // it should get a tombstone key with the right Obj. + {{Deleted, DeletedFinalStateUnknown{Key: "bar", Obj: mkFifoObj("bar", 6)}}}, + } + + for _, expected := range expectedList { + cur := Pop(f).(Deltas) + if e, a := expected, cur; !reflect.DeepEqual(e, a) { + t.Errorf("Expected %#v, got %#v", e, a) + } + } +} + +func TestDeltaFIFO_UpdateResyncRace(t *testing.T) { + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + nil, + keyLookupFunc(func() []testFifoObject { + return []testFifoObject{mkFifoObj("foo", 5)} + }), + ) + f.Update(mkFifoObj("foo", 6)) + f.Resync() + + expectedList := []Deltas{ + {{Updated, mkFifoObj("foo", 6)}}, + } + + for _, expected := range expectedList { + cur := Pop(f).(Deltas) + if e, a := expected, cur; !reflect.DeepEqual(e, a) { + t.Errorf("Expected %#v, got %#v", e, a) + } + } +} + +func TestDeltaFIFO_HasSyncedCorrectOnDeletion(t *testing.T) { + f := NewDeltaFIFO( + testFifoObjectKeyFunc, + nil, + keyLookupFunc(func() []testFifoObject { + return []testFifoObject{mkFifoObj("foo", 5), mkFifoObj("bar", 6), mkFifoObj("baz", 7)} + }), + ) + f.Replace([]interface{}{mkFifoObj("foo", 5)}, "0") + + expectedList := []Deltas{ + {{Sync, mkFifoObj("foo", 5)}}, + // Since "bar" didn't have a delete event and wasn't in the Replace list + // it should get a tombstone key with the right Obj. + {{Deleted, DeletedFinalStateUnknown{Key: "bar", Obj: mkFifoObj("bar", 6)}}}, + } + + for _, expected := range expectedList { + if f.HasSynced() { + t.Errorf("Expected HasSynced to be false") + } + cur := Pop(f).(Deltas) + if e, a := expected, cur; !reflect.DeepEqual(e, a) { + t.Errorf("Expected %#v, got %#v", e, a) + } + } + if f.HasSynced() { + t.Errorf("Expected HasSynced to be true") + } +} + +func TestDeltaFIFO_detectLineJumpers(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + + f.Add(mkFifoObj("foo", 10)) + f.Add(mkFifoObj("bar", 1)) + f.Add(mkFifoObj("foo", 11)) + f.Add(mkFifoObj("foo", 13)) + f.Add(mkFifoObj("zab", 30)) + + if e, a := 13, testPop(f).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } + + f.Add(mkFifoObj("foo", 14)) // ensure foo doesn't jump back in line + + if e, a := 1, testPop(f).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } + + if e, a := 30, testPop(f).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } + + if e, a := 14, testPop(f).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } +} + +func TestDeltaFIFO_addIfNotPresent(t *testing.T) { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + + f.Add(mkFifoObj("b", 3)) + b3 := Pop(f) + f.Add(mkFifoObj("c", 4)) + c4 := Pop(f) + if e, a := 0, len(f.items); e != a { + t.Fatalf("Expected %v, got %v items in queue", e, a) + } + + f.Add(mkFifoObj("a", 1)) + f.Add(mkFifoObj("b", 2)) + f.AddIfNotPresent(b3) + f.AddIfNotPresent(c4) + + if e, a := 3, len(f.items); a != e { + t.Fatalf("expected queue length %d, got %d", e, a) + } + + expectedValues := []int{1, 2, 4} + for _, expected := range expectedValues { + if actual := testPop(f).val; actual != expected { + t.Fatalf("expected value %d, got %d", expected, actual) + } + } +} + +func TestDeltaFIFO_KeyOf(t *testing.T) { + f := DeltaFIFO{keyFunc: testFifoObjectKeyFunc} + + table := []struct { + obj interface{} + key string + }{ + {obj: testFifoObject{name: "A"}, key: "A"}, + {obj: DeletedFinalStateUnknown{Key: "B", Obj: nil}, key: "B"}, + {obj: Deltas{{Object: testFifoObject{name: "C"}}}, key: "C"}, + {obj: Deltas{{Object: DeletedFinalStateUnknown{Key: "D", Obj: nil}}}, key: "D"}, + } + + for _, item := range table { + got, err := f.KeyOf(item.obj) + if err != nil { + t.Errorf("Unexpected error for %q: %v", item.obj, err) + continue + } + if e, a := item.key, got; e != a { + t.Errorf("Expected %v, got %v", e, a) + } + } +} + +func TestDeltaFIFO_HasSynced(t *testing.T) { + tests := []struct { + actions []func(f *DeltaFIFO) + expectedSynced bool + }{ + { + actions: []func(f *DeltaFIFO){}, + expectedSynced: false, + }, + { + actions: []func(f *DeltaFIFO){ + func(f *DeltaFIFO) { f.Add(mkFifoObj("a", 1)) }, + }, + expectedSynced: true, + }, + { + actions: []func(f *DeltaFIFO){ + func(f *DeltaFIFO) { f.Replace([]interface{}{}, "0") }, + }, + expectedSynced: true, + }, + { + actions: []func(f *DeltaFIFO){ + func(f *DeltaFIFO) { f.Replace([]interface{}{mkFifoObj("a", 1), mkFifoObj("b", 2)}, "0") }, + }, + expectedSynced: false, + }, + { + actions: []func(f *DeltaFIFO){ + func(f *DeltaFIFO) { f.Replace([]interface{}{mkFifoObj("a", 1), mkFifoObj("b", 2)}, "0") }, + func(f *DeltaFIFO) { Pop(f) }, + }, + expectedSynced: false, + }, + { + actions: []func(f *DeltaFIFO){ + func(f *DeltaFIFO) { f.Replace([]interface{}{mkFifoObj("a", 1), mkFifoObj("b", 2)}, "0") }, + func(f *DeltaFIFO) { Pop(f) }, + func(f *DeltaFIFO) { Pop(f) }, + }, + expectedSynced: true, + }, + } + + for i, test := range tests { + f := NewDeltaFIFO(testFifoObjectKeyFunc, nil, nil) + + for _, action := range test.actions { + action(f) + } + if e, a := test.expectedSynced, f.HasSynced(); a != e { + t.Errorf("test case %v failed, expected: %v , got %v", i, e, a) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/doc.go b/vendor/k8s.io/client-go/tools/cache/doc.go new file mode 100644 index 000000000..56b61d300 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package cache is a client-side caching mechanism. It is useful for +// reducing the number of server calls you'd otherwise need to make. +// Reflector watches a server and updates a Store. Two stores are provided; +// one that simply caches objects (for example, to allow a scheduler to +// list currently available nodes), and one that additionally acts as +// a FIFO queue (for example, to allow a scheduler to process incoming +// pods). +package cache // import "k8s.io/client-go/tools/cache" diff --git a/vendor/k8s.io/client-go/tools/cache/expiration_cache.go b/vendor/k8s.io/client-go/tools/cache/expiration_cache.go new file mode 100644 index 000000000..fa88fc407 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/expiration_cache.go @@ -0,0 +1,208 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" + "time" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/util/clock" +) + +// ExpirationCache implements the store interface +// 1. All entries are automatically time stamped on insert +// a. The key is computed based off the original item/keyFunc +// b. The value inserted under that key is the timestamped item +// 2. Expiration happens lazily on read based on the expiration policy +// a. No item can be inserted into the store while we're expiring +// *any* item in the cache. +// 3. Time-stamps are stripped off unexpired entries before return +// Note that the ExpirationCache is inherently slower than a normal +// threadSafeStore because it takes a write lock every time it checks if +// an item has expired. +type ExpirationCache struct { + cacheStorage ThreadSafeStore + keyFunc KeyFunc + clock clock.Clock + expirationPolicy ExpirationPolicy + // expirationLock is a write lock used to guarantee that we don't clobber + // newly inserted objects because of a stale expiration timestamp comparison + expirationLock sync.Mutex +} + +// ExpirationPolicy dictates when an object expires. Currently only abstracted out +// so unittests don't rely on the system clock. +type ExpirationPolicy interface { + IsExpired(obj *timestampedEntry) bool +} + +// TTLPolicy implements a ttl based ExpirationPolicy. +type TTLPolicy struct { + // >0: Expire entries with an age > ttl + // <=0: Don't expire any entry + Ttl time.Duration + + // Clock used to calculate ttl expiration + Clock clock.Clock +} + +// IsExpired returns true if the given object is older than the ttl, or it can't +// determine its age. +func (p *TTLPolicy) IsExpired(obj *timestampedEntry) bool { + return p.Ttl > 0 && p.Clock.Since(obj.timestamp) > p.Ttl +} + +// timestampedEntry is the only type allowed in a ExpirationCache. +type timestampedEntry struct { + obj interface{} + timestamp time.Time +} + +// getTimestampedEntry returns the timestampedEntry stored under the given key. +func (c *ExpirationCache) getTimestampedEntry(key string) (*timestampedEntry, bool) { + item, _ := c.cacheStorage.Get(key) + if tsEntry, ok := item.(*timestampedEntry); ok { + return tsEntry, true + } + return nil, false +} + +// getOrExpire retrieves the object from the timestampedEntry if and only if it hasn't +// already expired. It holds a write lock across deletion. +func (c *ExpirationCache) getOrExpire(key string) (interface{}, bool) { + // Prevent all inserts from the time we deem an item as "expired" to when we + // delete it, so an un-expired item doesn't sneak in under the same key, just + // before the Delete. + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + timestampedItem, exists := c.getTimestampedEntry(key) + if !exists { + return nil, false + } + if c.expirationPolicy.IsExpired(timestampedItem) { + glog.V(4).Infof("Entry %v: %+v has expired", key, timestampedItem.obj) + c.cacheStorage.Delete(key) + return nil, false + } + return timestampedItem.obj, true +} + +// GetByKey returns the item stored under the key, or sets exists=false. +func (c *ExpirationCache) GetByKey(key string) (interface{}, bool, error) { + obj, exists := c.getOrExpire(key) + return obj, exists, nil +} + +// Get returns unexpired items. It purges the cache of expired items in the +// process. +func (c *ExpirationCache) Get(obj interface{}) (interface{}, bool, error) { + key, err := c.keyFunc(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + obj, exists := c.getOrExpire(key) + return obj, exists, nil +} + +// List retrieves a list of unexpired items. It purges the cache of expired +// items in the process. +func (c *ExpirationCache) List() []interface{} { + items := c.cacheStorage.List() + + list := make([]interface{}, 0, len(items)) + for _, item := range items { + obj := item.(*timestampedEntry).obj + if key, err := c.keyFunc(obj); err != nil { + list = append(list, obj) + } else if obj, exists := c.getOrExpire(key); exists { + list = append(list, obj) + } + } + return list +} + +// ListKeys returns a list of all keys in the expiration cache. +func (c *ExpirationCache) ListKeys() []string { + return c.cacheStorage.ListKeys() +} + +// Add timestamps an item and inserts it into the cache, overwriting entries +// that might exist under the same key. +func (c *ExpirationCache) Add(obj interface{}) error { + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Add(key, ×tampedEntry{obj, c.clock.Now()}) + return nil +} + +// Update has not been implemented yet for lack of a use case, so this method +// simply calls `Add`. This effectively refreshes the timestamp. +func (c *ExpirationCache) Update(obj interface{}) error { + return c.Add(obj) +} + +// Delete removes an item from the cache. +func (c *ExpirationCache) Delete(obj interface{}) error { + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Delete(key) + return nil +} + +// Replace will convert all items in the given list to TimestampedEntries +// before attempting the replace operation. The replace operation will +// delete the contents of the ExpirationCache `c`. +func (c *ExpirationCache) Replace(list []interface{}, resourceVersion string) error { + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + items := map[string]interface{}{} + ts := c.clock.Now() + for _, item := range list { + key, err := c.keyFunc(item) + if err != nil { + return KeyError{item, err} + } + items[key] = ×tampedEntry{item, ts} + } + c.cacheStorage.Replace(items, resourceVersion) + return nil +} + +// Resync will touch all objects to put them into the processing queue +func (c *ExpirationCache) Resync() error { + return c.cacheStorage.Resync() +} + +// NewTTLStore creates and returns a ExpirationCache with a TTLPolicy +func NewTTLStore(keyFunc KeyFunc, ttl time.Duration) Store { + return &ExpirationCache{ + cacheStorage: NewThreadSafeStore(Indexers{}, Indices{}), + keyFunc: keyFunc, + clock: clock.RealClock{}, + expirationPolicy: &TTLPolicy{ttl, clock.RealClock{}}, + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go b/vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go new file mode 100644 index 000000000..a096765f6 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/expiration_cache_fakes.go @@ -0,0 +1,54 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/sets" +) + +type fakeThreadSafeMap struct { + ThreadSafeStore + deletedKeys chan<- string +} + +func (c *fakeThreadSafeMap) Delete(key string) { + if c.deletedKeys != nil { + c.ThreadSafeStore.Delete(key) + c.deletedKeys <- key + } +} + +type FakeExpirationPolicy struct { + NeverExpire sets.String + RetrieveKeyFunc KeyFunc +} + +func (p *FakeExpirationPolicy) IsExpired(obj *timestampedEntry) bool { + key, _ := p.RetrieveKeyFunc(obj) + return !p.NeverExpire.Has(key) +} + +func NewFakeExpirationStore(keyFunc KeyFunc, deletedKeys chan<- string, expirationPolicy ExpirationPolicy, cacheClock clock.Clock) Store { + cacheStorage := NewThreadSafeStore(Indexers{}, Indices{}) + return &ExpirationCache{ + cacheStorage: &fakeThreadSafeMap{cacheStorage, deletedKeys}, + keyFunc: keyFunc, + clock: cacheClock, + expirationPolicy: expirationPolicy, + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/expiration_cache_test.go b/vendor/k8s.io/client-go/tools/cache/expiration_cache_test.go new file mode 100644 index 000000000..fac621cbc --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/expiration_cache_test.go @@ -0,0 +1,189 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "reflect" + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/wait" +) + +func TestTTLExpirationBasic(t *testing.T) { + testObj := testStoreObject{id: "foo", val: "bar"} + deleteChan := make(chan string, 1) + ttlStore := NewFakeExpirationStore( + testStoreKeyFunc, deleteChan, + &FakeExpirationPolicy{ + NeverExpire: sets.NewString(), + RetrieveKeyFunc: func(obj interface{}) (string, error) { + return obj.(*timestampedEntry).obj.(testStoreObject).id, nil + }, + }, + clock.RealClock{}, + ) + err := ttlStore.Add(testObj) + if err != nil { + t.Errorf("Unable to add obj %#v", testObj) + } + item, exists, err := ttlStore.Get(testObj) + if err != nil { + t.Errorf("Failed to get from store, %v", err) + } + if exists || item != nil { + t.Errorf("Got unexpected item %#v", item) + } + key, _ := testStoreKeyFunc(testObj) + select { + case delKey := <-deleteChan: + if delKey != key { + t.Errorf("Unexpected delete for key %s", key) + } + case <-time.After(wait.ForeverTestTimeout): + t.Errorf("Unexpected timeout waiting on delete") + } + close(deleteChan) +} + +func TestReAddExpiredItem(t *testing.T) { + deleteChan := make(chan string, 1) + exp := &FakeExpirationPolicy{ + NeverExpire: sets.NewString(), + RetrieveKeyFunc: func(obj interface{}) (string, error) { + return obj.(*timestampedEntry).obj.(testStoreObject).id, nil + }, + } + ttlStore := NewFakeExpirationStore( + testStoreKeyFunc, deleteChan, exp, clock.RealClock{}) + testKey := "foo" + testObj := testStoreObject{id: testKey, val: "bar"} + err := ttlStore.Add(testObj) + if err != nil { + t.Errorf("Unable to add obj %#v", testObj) + } + + // This get will expire the item. + item, exists, err := ttlStore.Get(testObj) + if err != nil { + t.Errorf("Failed to get from store, %v", err) + } + if exists || item != nil { + t.Errorf("Got unexpected item %#v", item) + } + + key, _ := testStoreKeyFunc(testObj) + differentValue := "different_bar" + err = ttlStore.Add( + testStoreObject{id: testKey, val: differentValue}) + if err != nil { + t.Errorf("Failed to add second value") + } + + select { + case delKey := <-deleteChan: + if delKey != key { + t.Errorf("Unexpected delete for key %s", key) + } + case <-time.After(wait.ForeverTestTimeout): + t.Errorf("Unexpected timeout waiting on delete") + } + exp.NeverExpire = sets.NewString(testKey) + item, exists, err = ttlStore.GetByKey(testKey) + if err != nil { + t.Errorf("Failed to get from store, %v", err) + } + if !exists || item == nil || item.(testStoreObject).val != differentValue { + t.Errorf("Got unexpected item %#v", item) + } + close(deleteChan) +} + +func TestTTLList(t *testing.T) { + testObjs := []testStoreObject{ + {id: "foo", val: "bar"}, + {id: "foo1", val: "bar1"}, + {id: "foo2", val: "bar2"}, + } + expireKeys := sets.NewString(testObjs[0].id, testObjs[2].id) + deleteChan := make(chan string, len(testObjs)) + defer close(deleteChan) + + ttlStore := NewFakeExpirationStore( + testStoreKeyFunc, deleteChan, + &FakeExpirationPolicy{ + NeverExpire: sets.NewString(testObjs[1].id), + RetrieveKeyFunc: func(obj interface{}) (string, error) { + return obj.(*timestampedEntry).obj.(testStoreObject).id, nil + }, + }, + clock.RealClock{}, + ) + for _, obj := range testObjs { + err := ttlStore.Add(obj) + if err != nil { + t.Errorf("Unable to add obj %#v", obj) + } + } + listObjs := ttlStore.List() + if len(listObjs) != 1 || !reflect.DeepEqual(listObjs[0], testObjs[1]) { + t.Errorf("List returned unexpected results %#v", listObjs) + } + + // Make sure all our deletes come through in an acceptable rate (1/100ms) + for expireKeys.Len() != 0 { + select { + case delKey := <-deleteChan: + if !expireKeys.Has(delKey) { + t.Errorf("Unexpected delete for key %s", delKey) + } + expireKeys.Delete(delKey) + case <-time.After(wait.ForeverTestTimeout): + t.Errorf("Unexpected timeout waiting on delete") + return + } + } +} + +func TestTTLPolicy(t *testing.T) { + fakeTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) + ttl := 30 * time.Second + exactlyOnTTL := fakeTime.Add(-ttl) + expiredTime := fakeTime.Add(-(ttl + 1)) + + policy := TTLPolicy{ttl, clock.NewFakeClock(fakeTime)} + fakeTimestampedEntry := ×tampedEntry{obj: struct{}{}, timestamp: exactlyOnTTL} + if policy.IsExpired(fakeTimestampedEntry) { + t.Errorf("TTL cache should not expire entries exactly on ttl") + } + fakeTimestampedEntry.timestamp = fakeTime + if policy.IsExpired(fakeTimestampedEntry) { + t.Errorf("TTL Cache should not expire entries before ttl") + } + fakeTimestampedEntry.timestamp = expiredTime + if !policy.IsExpired(fakeTimestampedEntry) { + t.Errorf("TTL Cache should expire entries older than ttl") + } + for _, ttl = range []time.Duration{0, -1} { + policy.Ttl = ttl + if policy.IsExpired(fakeTimestampedEntry) { + t.Errorf("TTL policy should only expire entries when initialized with a ttl > 0") + } + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/fake_custom_store.go b/vendor/k8s.io/client-go/tools/cache/fake_custom_store.go new file mode 100644 index 000000000..8d71c2474 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/fake_custom_store.go @@ -0,0 +1,102 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +// FakeStore lets you define custom functions for store operations +type FakeCustomStore struct { + AddFunc func(obj interface{}) error + UpdateFunc func(obj interface{}) error + DeleteFunc func(obj interface{}) error + ListFunc func() []interface{} + ListKeysFunc func() []string + GetFunc func(obj interface{}) (item interface{}, exists bool, err error) + GetByKeyFunc func(key string) (item interface{}, exists bool, err error) + ReplaceFunc func(list []interface{}, resourceVerion string) error + ResyncFunc func() error +} + +// Add calls the custom Add function if defined +func (f *FakeCustomStore) Add(obj interface{}) error { + if f.AddFunc != nil { + return f.AddFunc(obj) + } + return nil +} + +// Update calls the custom Update function if defined +func (f *FakeCustomStore) Update(obj interface{}) error { + if f.UpdateFunc != nil { + return f.Update(obj) + } + return nil +} + +// Delete calls the custom Delete function if defined +func (f *FakeCustomStore) Delete(obj interface{}) error { + if f.DeleteFunc != nil { + return f.DeleteFunc(obj) + } + return nil +} + +// List calls the custom List function if defined +func (f *FakeCustomStore) List() []interface{} { + if f.ListFunc != nil { + return f.ListFunc() + } + return nil +} + +// ListKeys calls the custom ListKeys function if defined +func (f *FakeCustomStore) ListKeys() []string { + if f.ListKeysFunc != nil { + return f.ListKeysFunc() + } + return nil +} + +// Get calls the custom Get function if defined +func (f *FakeCustomStore) Get(obj interface{}) (item interface{}, exists bool, err error) { + if f.GetFunc != nil { + return f.GetFunc(obj) + } + return nil, false, nil +} + +// GetByKey calls the custom GetByKey function if defined +func (f *FakeCustomStore) GetByKey(key string) (item interface{}, exists bool, err error) { + if f.GetByKeyFunc != nil { + return f.GetByKeyFunc(key) + } + return nil, false, nil +} + +// Replace calls the custom Replace function if defined +func (f *FakeCustomStore) Replace(list []interface{}, resourceVersion string) error { + if f.ReplaceFunc != nil { + return f.ReplaceFunc(list, resourceVersion) + } + return nil +} + +// Resync calls the custom Resync function if defined +func (f *FakeCustomStore) Resync() error { + if f.ResyncFunc != nil { + return f.ResyncFunc() + } + return nil +} diff --git a/vendor/k8s.io/client-go/tools/cache/fifo.go b/vendor/k8s.io/client-go/tools/cache/fifo.go new file mode 100644 index 000000000..3f6e2a948 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/fifo.go @@ -0,0 +1,358 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "errors" + "sync" + + "k8s.io/apimachinery/pkg/util/sets" +) + +// PopProcessFunc is passed to Pop() method of Queue interface. +// It is supposed to process the element popped from the queue. +type PopProcessFunc func(interface{}) error + +// ErrRequeue may be returned by a PopProcessFunc to safely requeue +// the current item. The value of Err will be returned from Pop. +type ErrRequeue struct { + // Err is returned by the Pop function + Err error +} + +var FIFOClosedError error = errors.New("DeltaFIFO: manipulating with closed queue") + +func (e ErrRequeue) Error() string { + if e.Err == nil { + return "the popped item should be requeued without returning an error" + } + return e.Err.Error() +} + +// Queue is exactly like a Store, but has a Pop() method too. +type Queue interface { + Store + + // Pop blocks until it has something to process. + // It returns the object that was process and the result of processing. + // The PopProcessFunc may return an ErrRequeue{...} to indicate the item + // should be requeued before releasing the lock on the queue. + Pop(PopProcessFunc) (interface{}, error) + + // AddIfNotPresent adds a value previously + // returned by Pop back into the queue as long + // as nothing else (presumably more recent) + // has since been added. + AddIfNotPresent(interface{}) error + + // Return true if the first batch of items has been popped + HasSynced() bool + + // Close queue + Close() +} + +// Helper function for popping from Queue. +// WARNING: Do NOT use this function in non-test code to avoid races +// unless you really really really really know what you are doing. +func Pop(queue Queue) interface{} { + var result interface{} + queue.Pop(func(obj interface{}) error { + result = obj + return nil + }) + return result +} + +// FIFO receives adds and updates from a Reflector, and puts them in a queue for +// FIFO order processing. If multiple adds/updates of a single item happen while +// an item is in the queue before it has been processed, it will only be +// processed once, and when it is processed, the most recent version will be +// processed. This can't be done with a channel. +// +// FIFO solves this use case: +// * You want to process every object (exactly) once. +// * You want to process the most recent version of the object when you process it. +// * You do not want to process deleted objects, they should be removed from the queue. +// * You do not want to periodically reprocess objects. +// Compare with DeltaFIFO for other use cases. +type FIFO struct { + lock sync.RWMutex + cond sync.Cond + // We depend on the property that items in the set are in the queue and vice versa. + items map[string]interface{} + queue []string + + // populated is true if the first batch of items inserted by Replace() has been populated + // or Delete/Add/Update was called first. + populated bool + // initialPopulationCount is the number of items inserted by the first call of Replace() + initialPopulationCount int + + // keyFunc is used to make the key used for queued item insertion and retrieval, and + // should be deterministic. + keyFunc KeyFunc + + // Indication the queue is closed. + // Used to indicate a queue is closed so a control loop can exit when a queue is empty. + // Currently, not used to gate any of CRED operations. + closed bool + closedLock sync.Mutex +} + +var ( + _ = Queue(&FIFO{}) // FIFO is a Queue +) + +// Close the queue. +func (f *FIFO) Close() { + f.closedLock.Lock() + defer f.closedLock.Unlock() + f.closed = true + f.cond.Broadcast() +} + +// Return true if an Add/Update/Delete/AddIfNotPresent are called first, +// or an Update called first but the first batch of items inserted by Replace() has been popped +func (f *FIFO) HasSynced() bool { + f.lock.Lock() + defer f.lock.Unlock() + return f.populated && f.initialPopulationCount == 0 +} + +// Add inserts an item, and puts it in the queue. The item is only enqueued +// if it doesn't already exist in the set. +func (f *FIFO) Add(obj interface{}) error { + id, err := f.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + if _, exists := f.items[id]; !exists { + f.queue = append(f.queue, id) + } + f.items[id] = obj + f.cond.Broadcast() + return nil +} + +// AddIfNotPresent inserts an item, and puts it in the queue. If the item is already +// present in the set, it is neither enqueued nor added to the set. +// +// This is useful in a single producer/consumer scenario so that the consumer can +// safely retry items without contending with the producer and potentially enqueueing +// stale items. +func (f *FIFO) AddIfNotPresent(obj interface{}) error { + id, err := f.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.addIfNotPresent(id, obj) + return nil +} + +// addIfNotPresent assumes the fifo lock is already held and adds the the provided +// item to the queue under id if it does not already exist. +func (f *FIFO) addIfNotPresent(id string, obj interface{}) { + f.populated = true + if _, exists := f.items[id]; exists { + return + } + + f.queue = append(f.queue, id) + f.items[id] = obj + f.cond.Broadcast() +} + +// Update is the same as Add in this implementation. +func (f *FIFO) Update(obj interface{}) error { + return f.Add(obj) +} + +// Delete removes an item. It doesn't add it to the queue, because +// this implementation assumes the consumer only cares about the objects, +// not the order in which they were created/added. +func (f *FIFO) Delete(obj interface{}) error { + id, err := f.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + delete(f.items, id) + return err +} + +// List returns a list of all the items. +func (f *FIFO) List() []interface{} { + f.lock.RLock() + defer f.lock.RUnlock() + list := make([]interface{}, 0, len(f.items)) + for _, item := range f.items { + list = append(list, item) + } + return list +} + +// ListKeys returns a list of all the keys of the objects currently +// in the FIFO. +func (f *FIFO) ListKeys() []string { + f.lock.RLock() + defer f.lock.RUnlock() + list := make([]string, 0, len(f.items)) + for key := range f.items { + list = append(list, key) + } + return list +} + +// Get returns the requested item, or sets exists=false. +func (f *FIFO) Get(obj interface{}) (item interface{}, exists bool, err error) { + key, err := f.keyFunc(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + return f.GetByKey(key) +} + +// GetByKey returns the requested item, or sets exists=false. +func (f *FIFO) GetByKey(key string) (item interface{}, exists bool, err error) { + f.lock.RLock() + defer f.lock.RUnlock() + item, exists = f.items[key] + return item, exists, nil +} + +// Checks if the queue is closed +func (f *FIFO) IsClosed() bool { + f.closedLock.Lock() + defer f.closedLock.Unlock() + if f.closed { + return true + } + return false +} + +// Pop waits until an item is ready and processes it. If multiple items are +// ready, they are returned in the order in which they were added/updated. +// The item is removed from the queue (and the store) before it is processed, +// so if you don't successfully process it, it should be added back with +// AddIfNotPresent(). process function is called under lock, so it is safe +// update data structures in it that need to be in sync with the queue. +func (f *FIFO) Pop(process PopProcessFunc) (interface{}, error) { + f.lock.Lock() + defer f.lock.Unlock() + for { + for len(f.queue) == 0 { + // When the queue is empty, invocation of Pop() is blocked until new item is enqueued. + // When Close() is called, the f.closed is set and the condition is broadcasted. + // Which causes this loop to continue and return from the Pop(). + if f.IsClosed() { + return nil, FIFOClosedError + } + + f.cond.Wait() + } + id := f.queue[0] + f.queue = f.queue[1:] + if f.initialPopulationCount > 0 { + f.initialPopulationCount-- + } + item, ok := f.items[id] + if !ok { + // Item may have been deleted subsequently. + continue + } + delete(f.items, id) + err := process(item) + if e, ok := err.(ErrRequeue); ok { + f.addIfNotPresent(id, item) + err = e.Err + } + return item, err + } +} + +// Replace will delete the contents of 'f', using instead the given map. +// 'f' takes ownership of the map, you should not reference the map again +// after calling this function. f's queue is reset, too; upon return, it +// will contain the items in the map, in no particular order. +func (f *FIFO) Replace(list []interface{}, resourceVersion string) error { + items := map[string]interface{}{} + for _, item := range list { + key, err := f.keyFunc(item) + if err != nil { + return KeyError{item, err} + } + items[key] = item + } + + f.lock.Lock() + defer f.lock.Unlock() + + if !f.populated { + f.populated = true + f.initialPopulationCount = len(items) + } + + f.items = items + f.queue = f.queue[:0] + for id := range items { + f.queue = append(f.queue, id) + } + if len(f.queue) > 0 { + f.cond.Broadcast() + } + return nil +} + +// Resync will touch all objects to put them into the processing queue +func (f *FIFO) Resync() error { + f.lock.Lock() + defer f.lock.Unlock() + + inQueue := sets.NewString() + for _, id := range f.queue { + inQueue.Insert(id) + } + for id := range f.items { + if !inQueue.Has(id) { + f.queue = append(f.queue, id) + } + } + if len(f.queue) > 0 { + f.cond.Broadcast() + } + return nil +} + +// NewFIFO returns a Store which can be used to queue up items to +// process. +func NewFIFO(keyFunc KeyFunc) *FIFO { + f := &FIFO{ + items: map[string]interface{}{}, + queue: []string{}, + keyFunc: keyFunc, + } + f.cond.L = &f.lock + return f +} diff --git a/vendor/k8s.io/client-go/tools/cache/fifo_test.go b/vendor/k8s.io/client-go/tools/cache/fifo_test.go new file mode 100644 index 000000000..afd311d78 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/fifo_test.go @@ -0,0 +1,280 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "reflect" + "testing" + "time" +) + +func testFifoObjectKeyFunc(obj interface{}) (string, error) { + return obj.(testFifoObject).name, nil +} + +type testFifoObject struct { + name string + val interface{} +} + +func mkFifoObj(name string, val interface{}) testFifoObject { + return testFifoObject{name: name, val: val} +} + +func TestFIFO_basic(t *testing.T) { + f := NewFIFO(testFifoObjectKeyFunc) + const amount = 500 + go func() { + for i := 0; i < amount; i++ { + f.Add(mkFifoObj(string([]rune{'a', rune(i)}), i+1)) + } + }() + go func() { + for u := uint64(0); u < amount; u++ { + f.Add(mkFifoObj(string([]rune{'b', rune(u)}), u+1)) + } + }() + + lastInt := int(0) + lastUint := uint64(0) + for i := 0; i < amount*2; i++ { + switch obj := Pop(f).(testFifoObject).val.(type) { + case int: + if obj <= lastInt { + t.Errorf("got %v (int) out of order, last was %v", obj, lastInt) + } + lastInt = obj + case uint64: + if obj <= lastUint { + t.Errorf("got %v (uint) out of order, last was %v", obj, lastUint) + } else { + lastUint = obj + } + default: + t.Fatalf("unexpected type %#v", obj) + } + } +} + +func TestFIFO_requeueOnPop(t *testing.T) { + f := NewFIFO(testFifoObjectKeyFunc) + + f.Add(mkFifoObj("foo", 10)) + _, err := f.Pop(func(obj interface{}) error { + if obj.(testFifoObject).name != "foo" { + t.Fatalf("unexpected object: %#v", obj) + } + return ErrRequeue{Err: nil} + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if _, ok, err := f.GetByKey("foo"); !ok || err != nil { + t.Fatalf("object should have been requeued: %t %v", ok, err) + } + + _, err = f.Pop(func(obj interface{}) error { + if obj.(testFifoObject).name != "foo" { + t.Fatalf("unexpected object: %#v", obj) + } + return ErrRequeue{Err: fmt.Errorf("test error")} + }) + if err == nil || err.Error() != "test error" { + t.Fatalf("unexpected error: %v", err) + } + if _, ok, err := f.GetByKey("foo"); !ok || err != nil { + t.Fatalf("object should have been requeued: %t %v", ok, err) + } + + _, err = f.Pop(func(obj interface{}) error { + if obj.(testFifoObject).name != "foo" { + t.Fatalf("unexpected object: %#v", obj) + } + return nil + }) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if _, ok, err := f.GetByKey("foo"); ok || err != nil { + t.Fatalf("object should have been removed: %t %v", ok, err) + } +} + +func TestFIFO_addUpdate(t *testing.T) { + f := NewFIFO(testFifoObjectKeyFunc) + f.Add(mkFifoObj("foo", 10)) + f.Update(mkFifoObj("foo", 15)) + + if e, a := []interface{}{mkFifoObj("foo", 15)}, f.List(); !reflect.DeepEqual(e, a) { + t.Errorf("Expected %+v, got %+v", e, a) + } + if e, a := []string{"foo"}, f.ListKeys(); !reflect.DeepEqual(e, a) { + t.Errorf("Expected %+v, got %+v", e, a) + } + + got := make(chan testFifoObject, 2) + go func() { + for { + got <- Pop(f).(testFifoObject) + } + }() + + first := <-got + if e, a := 15, first.val; e != a { + t.Errorf("Didn't get updated value (%v), got %v", e, a) + } + select { + case unexpected := <-got: + t.Errorf("Got second value %v", unexpected.val) + case <-time.After(50 * time.Millisecond): + } + _, exists, _ := f.Get(mkFifoObj("foo", "")) + if exists { + t.Errorf("item did not get removed") + } +} + +func TestFIFO_addReplace(t *testing.T) { + f := NewFIFO(testFifoObjectKeyFunc) + f.Add(mkFifoObj("foo", 10)) + f.Replace([]interface{}{mkFifoObj("foo", 15)}, "15") + got := make(chan testFifoObject, 2) + go func() { + for { + got <- Pop(f).(testFifoObject) + } + }() + + first := <-got + if e, a := 15, first.val; e != a { + t.Errorf("Didn't get updated value (%v), got %v", e, a) + } + select { + case unexpected := <-got: + t.Errorf("Got second value %v", unexpected.val) + case <-time.After(50 * time.Millisecond): + } + _, exists, _ := f.Get(mkFifoObj("foo", "")) + if exists { + t.Errorf("item did not get removed") + } +} + +func TestFIFO_detectLineJumpers(t *testing.T) { + f := NewFIFO(testFifoObjectKeyFunc) + + f.Add(mkFifoObj("foo", 10)) + f.Add(mkFifoObj("bar", 1)) + f.Add(mkFifoObj("foo", 11)) + f.Add(mkFifoObj("foo", 13)) + f.Add(mkFifoObj("zab", 30)) + + if e, a := 13, Pop(f).(testFifoObject).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } + + f.Add(mkFifoObj("foo", 14)) // ensure foo doesn't jump back in line + + if e, a := 1, Pop(f).(testFifoObject).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } + + if e, a := 30, Pop(f).(testFifoObject).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } + + if e, a := 14, Pop(f).(testFifoObject).val; a != e { + t.Fatalf("expected %d, got %d", e, a) + } +} + +func TestFIFO_addIfNotPresent(t *testing.T) { + f := NewFIFO(testFifoObjectKeyFunc) + + f.Add(mkFifoObj("a", 1)) + f.Add(mkFifoObj("b", 2)) + f.AddIfNotPresent(mkFifoObj("b", 3)) + f.AddIfNotPresent(mkFifoObj("c", 4)) + + if e, a := 3, len(f.items); a != e { + t.Fatalf("expected queue length %d, got %d", e, a) + } + + expectedValues := []int{1, 2, 4} + for _, expected := range expectedValues { + if actual := Pop(f).(testFifoObject).val; actual != expected { + t.Fatalf("expected value %d, got %d", expected, actual) + } + } +} + +func TestFIFO_HasSynced(t *testing.T) { + tests := []struct { + actions []func(f *FIFO) + expectedSynced bool + }{ + { + actions: []func(f *FIFO){}, + expectedSynced: false, + }, + { + actions: []func(f *FIFO){ + func(f *FIFO) { f.Add(mkFifoObj("a", 1)) }, + }, + expectedSynced: true, + }, + { + actions: []func(f *FIFO){ + func(f *FIFO) { f.Replace([]interface{}{}, "0") }, + }, + expectedSynced: true, + }, + { + actions: []func(f *FIFO){ + func(f *FIFO) { f.Replace([]interface{}{mkFifoObj("a", 1), mkFifoObj("b", 2)}, "0") }, + }, + expectedSynced: false, + }, + { + actions: []func(f *FIFO){ + func(f *FIFO) { f.Replace([]interface{}{mkFifoObj("a", 1), mkFifoObj("b", 2)}, "0") }, + func(f *FIFO) { Pop(f) }, + }, + expectedSynced: false, + }, + { + actions: []func(f *FIFO){ + func(f *FIFO) { f.Replace([]interface{}{mkFifoObj("a", 1), mkFifoObj("b", 2)}, "0") }, + func(f *FIFO) { Pop(f) }, + func(f *FIFO) { Pop(f) }, + }, + expectedSynced: true, + }, + } + + for i, test := range tests { + f := NewFIFO(testFifoObjectKeyFunc) + + for _, action := range test.actions { + action(f) + } + if e, a := test.expectedSynced, f.HasSynced(); a != e { + t.Errorf("test case %v failed, expected: %v , got %v", i, e, a) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/index.go b/vendor/k8s.io/client-go/tools/cache/index.go new file mode 100644 index 000000000..15acb168e --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/index.go @@ -0,0 +1,87 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/util/sets" +) + +// Indexer is a storage interface that lets you list objects using multiple indexing functions +type Indexer interface { + Store + // Retrieve list of objects that match on the named indexing function + Index(indexName string, obj interface{}) ([]interface{}, error) + // IndexKeys returns the set of keys that match on the named indexing function. + IndexKeys(indexName, indexKey string) ([]string, error) + // ListIndexFuncValues returns the list of generated values of an Index func + ListIndexFuncValues(indexName string) []string + // ByIndex lists object that match on the named indexing function with the exact key + ByIndex(indexName, indexKey string) ([]interface{}, error) + // GetIndexer return the indexers + GetIndexers() Indexers + + // AddIndexers adds more indexers to this store. If you call this after you already have data + // in the store, the results are undefined. + AddIndexers(newIndexers Indexers) error +} + +// IndexFunc knows how to provide an indexed value for an object. +type IndexFunc func(obj interface{}) ([]string, error) + +// IndexFuncToKeyFuncAdapter adapts an indexFunc to a keyFunc. This is only useful if your index function returns +// unique values for every object. This is conversion can create errors when more than one key is found. You +// should prefer to make proper key and index functions. +func IndexFuncToKeyFuncAdapter(indexFunc IndexFunc) KeyFunc { + return func(obj interface{}) (string, error) { + indexKeys, err := indexFunc(obj) + if err != nil { + return "", err + } + if len(indexKeys) > 1 { + return "", fmt.Errorf("too many keys: %v", indexKeys) + } + if len(indexKeys) == 0 { + return "", fmt.Errorf("unexpected empty indexKeys") + } + return indexKeys[0], nil + } +} + +const ( + NamespaceIndex string = "namespace" +) + +// MetaNamespaceIndexFunc is a default index function that indexes based on an object's namespace +func MetaNamespaceIndexFunc(obj interface{}) ([]string, error) { + meta, err := meta.Accessor(obj) + if err != nil { + return []string{""}, fmt.Errorf("object has no meta: %v", err) + } + return []string{meta.GetNamespace()}, nil +} + +// Index maps the indexed value to a set of keys in the store that match on that value +type Index map[string]sets.String + +// Indexers maps a name to a IndexFunc +type Indexers map[string]IndexFunc + +// Indices maps a name to an Index +type Indices map[string]Index diff --git a/vendor/k8s.io/client-go/tools/cache/index_test.go b/vendor/k8s.io/client-go/tools/cache/index_test.go new file mode 100644 index 000000000..418dca441 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/index_test.go @@ -0,0 +1,137 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "strings" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" +) + +func testIndexFunc(obj interface{}) ([]string, error) { + pod := obj.(*v1.Pod) + return []string{pod.Labels["foo"]}, nil +} + +func TestGetIndexFuncValues(t *testing.T) { + index := NewIndexer(MetaNamespaceKeyFunc, Indexers{"testmodes": testIndexFunc}) + + pod1 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "one", Labels: map[string]string{"foo": "bar"}}} + pod2 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "two", Labels: map[string]string{"foo": "bar"}}} + pod3 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "tre", Labels: map[string]string{"foo": "biz"}}} + + index.Add(pod1) + index.Add(pod2) + index.Add(pod3) + + keys := index.ListIndexFuncValues("testmodes") + if len(keys) != 2 { + t.Errorf("Expected 2 keys but got %v", len(keys)) + } + + for _, key := range keys { + if key != "bar" && key != "biz" { + t.Errorf("Expected only 'bar' or 'biz' but got %s", key) + } + } +} + +func testUsersIndexFunc(obj interface{}) ([]string, error) { + pod := obj.(*v1.Pod) + usersString := pod.Annotations["users"] + + return strings.Split(usersString, ","), nil +} + +func TestMultiIndexKeys(t *testing.T) { + index := NewIndexer(MetaNamespaceKeyFunc, Indexers{"byUser": testUsersIndexFunc}) + + pod1 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "one", Annotations: map[string]string{"users": "ernie,bert"}}} + pod2 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "two", Annotations: map[string]string{"users": "bert,oscar"}}} + pod3 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "tre", Annotations: map[string]string{"users": "ernie,elmo"}}} + + index.Add(pod1) + index.Add(pod2) + index.Add(pod3) + + erniePods, err := index.ByIndex("byUser", "ernie") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(erniePods) != 2 { + t.Errorf("Expected 2 pods but got %v", len(erniePods)) + } + + bertPods, err := index.ByIndex("byUser", "bert") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(bertPods) != 2 { + t.Errorf("Expected 2 pods but got %v", len(bertPods)) + } + + oscarPods, err := index.ByIndex("byUser", "oscar") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(oscarPods) != 1 { + t.Errorf("Expected 1 pods but got %v", len(erniePods)) + } + + ernieAndBertKeys, err := index.Index("byUser", pod1) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(ernieAndBertKeys) != 3 { + t.Errorf("Expected 3 pods but got %v", len(ernieAndBertKeys)) + } + + index.Delete(pod3) + erniePods, err = index.ByIndex("byUser", "ernie") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(erniePods) != 1 { + t.Errorf("Expected 1 pods but got %v", len(erniePods)) + } + elmoPods, err := index.ByIndex("byUser", "elmo") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(elmoPods) != 0 { + t.Errorf("Expected 0 pods but got %v", len(elmoPods)) + } + + obj, err := scheme.Scheme.DeepCopy(pod2) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + copyOfPod2 := obj.(*v1.Pod) + copyOfPod2.Annotations["users"] = "oscar" + index.Update(copyOfPod2) + bertPods, err = index.ByIndex("byUser", "bert") + if err != nil { + t.Errorf("unexpected error: %v", err) + } + if len(bertPods) != 1 { + t.Errorf("Expected 1 pods but got %v", len(bertPods)) + } + +} diff --git a/vendor/k8s.io/client-go/tools/cache/listers.go b/vendor/k8s.io/client-go/tools/cache/listers.go new file mode 100644 index 000000000..27d51a6b3 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/listers.go @@ -0,0 +1,160 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "github.com/golang/glog" + + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// AppendFunc is used to add a matching item to whatever list the caller is using +type AppendFunc func(interface{}) + +func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error { + for _, m := range store.List() { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + } + return nil +} + +func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selector, appendFn AppendFunc) error { + if namespace == metav1.NamespaceAll { + for _, m := range indexer.List() { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + } + return nil + } + + items, err := indexer.Index(NamespaceIndex, &metav1.ObjectMeta{Namespace: namespace}) + if err != nil { + // Ignore error; do slow search without index. + glog.Warningf("can not retrieve list of objects using index : %v", err) + for _, m := range indexer.List() { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if metadata.GetNamespace() == namespace && selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + + } + return nil + } + for _, m := range items { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + } + + return nil +} + +// GenericLister is a lister skin on a generic Indexer +type GenericLister interface { + // List will return all objects across namespaces + List(selector labels.Selector) (ret []runtime.Object, err error) + // Get will attempt to retrieve assuming that name==key + Get(name string) (runtime.Object, error) + // ByNamespace will give you a GenericNamespaceLister for one namespace + ByNamespace(namespace string) GenericNamespaceLister +} + +// GenericNamespaceLister is a lister skin on a generic Indexer +type GenericNamespaceLister interface { + // List will return all objects in this namespace + List(selector labels.Selector) (ret []runtime.Object, err error) + // Get will attempt to retrieve by namespace and name + Get(name string) (runtime.Object, error) +} + +func NewGenericLister(indexer Indexer, resource schema.GroupResource) GenericLister { + return &genericLister{indexer: indexer, resource: resource} +} + +type genericLister struct { + indexer Indexer + resource schema.GroupResource +} + +func (s *genericLister) List(selector labels.Selector) (ret []runtime.Object, err error) { + err = ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(runtime.Object)) + }) + return ret, err +} + +func (s *genericLister) ByNamespace(namespace string) GenericNamespaceLister { + return &genericNamespaceLister{indexer: s.indexer, namespace: namespace, resource: s.resource} +} + +func (s *genericLister) Get(name string) (runtime.Object, error) { + obj, exists, err := s.indexer.GetByKey(name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(s.resource, name) + } + return obj.(runtime.Object), nil +} + +type genericNamespaceLister struct { + indexer Indexer + namespace string + resource schema.GroupResource +} + +func (s *genericNamespaceLister) List(selector labels.Selector) (ret []runtime.Object, err error) { + err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(runtime.Object)) + }) + return ret, err +} + +func (s *genericNamespaceLister) Get(name string) (runtime.Object, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(s.resource, name) + } + return obj.(runtime.Object), nil +} diff --git a/vendor/k8s.io/client-go/tools/cache/listwatch.go b/vendor/k8s.io/client-go/tools/cache/listwatch.go new file mode 100644 index 000000000..af01d4745 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/listwatch.go @@ -0,0 +1,162 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "time" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/fields" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/watch" + restclient "k8s.io/client-go/rest" +) + +// ListerWatcher is any object that knows how to perform an initial list and start a watch on a resource. +type ListerWatcher interface { + // List should return a list type object; the Items field will be extracted, and the + // ResourceVersion field will be used to start the watch in the right place. + List(options metav1.ListOptions) (runtime.Object, error) + // Watch should begin a watch at the specified version. + Watch(options metav1.ListOptions) (watch.Interface, error) +} + +// ListFunc knows how to list resources +type ListFunc func(options metav1.ListOptions) (runtime.Object, error) + +// WatchFunc knows how to watch resources +type WatchFunc func(options metav1.ListOptions) (watch.Interface, error) + +// ListWatch knows how to list and watch a set of apiserver resources. It satisfies the ListerWatcher interface. +// It is a convenience function for users of NewReflector, etc. +// ListFunc and WatchFunc must not be nil +type ListWatch struct { + ListFunc ListFunc + WatchFunc WatchFunc +} + +// Getter interface knows how to access Get method from RESTClient. +type Getter interface { + Get() *restclient.Request +} + +// NewListWatchFromClient creates a new ListWatch from the specified client, resource, namespace and field selector. +func NewListWatchFromClient(c Getter, resource string, namespace string, fieldSelector fields.Selector) *ListWatch { + listFunc := func(options metav1.ListOptions) (runtime.Object, error) { + return c.Get(). + Namespace(namespace). + Resource(resource). + VersionedParams(&options, metav1.ParameterCodec). + FieldsSelectorParam(fieldSelector). + Do(). + Get() + } + watchFunc := func(options metav1.ListOptions) (watch.Interface, error) { + options.Watch = true + return c.Get(). + Namespace(namespace). + Resource(resource). + VersionedParams(&options, metav1.ParameterCodec). + FieldsSelectorParam(fieldSelector). + Watch() + } + return &ListWatch{ListFunc: listFunc, WatchFunc: watchFunc} +} + +func timeoutFromListOptions(options metav1.ListOptions) time.Duration { + if options.TimeoutSeconds != nil { + return time.Duration(*options.TimeoutSeconds) * time.Second + } + return 0 +} + +// List a set of apiserver resources +func (lw *ListWatch) List(options metav1.ListOptions) (runtime.Object, error) { + return lw.ListFunc(options) +} + +// Watch a set of apiserver resources +func (lw *ListWatch) Watch(options metav1.ListOptions) (watch.Interface, error) { + return lw.WatchFunc(options) +} + +// TODO: check for watch expired error and retry watch from latest point? Same issue exists for Until. +func ListWatchUntil(timeout time.Duration, lw ListerWatcher, conditions ...watch.ConditionFunc) (*watch.Event, error) { + if len(conditions) == 0 { + return nil, nil + } + + list, err := lw.List(metav1.ListOptions{}) + if err != nil { + return nil, err + } + initialItems, err := meta.ExtractList(list) + if err != nil { + return nil, err + } + + // use the initial items as simulated "adds" + var lastEvent *watch.Event + currIndex := 0 + passedConditions := 0 + for _, condition := range conditions { + // check the next condition against the previous event and short circuit waiting for the next watch + if lastEvent != nil { + done, err := condition(*lastEvent) + if err != nil { + return lastEvent, err + } + if done { + passedConditions = passedConditions + 1 + continue + } + } + + ConditionSucceeded: + for currIndex < len(initialItems) { + lastEvent = &watch.Event{Type: watch.Added, Object: initialItems[currIndex]} + currIndex++ + + done, err := condition(*lastEvent) + if err != nil { + return lastEvent, err + } + if done { + passedConditions = passedConditions + 1 + break ConditionSucceeded + } + } + } + if passedConditions == len(conditions) { + return lastEvent, nil + } + remainingConditions := conditions[passedConditions:] + + metaObj, err := meta.ListAccessor(list) + if err != nil { + return nil, err + } + currResourceVersion := metaObj.GetResourceVersion() + + watchInterface, err := lw.Watch(metav1.ListOptions{ResourceVersion: currResourceVersion}) + if err != nil { + return nil, err + } + + return watch.Until(timeout, watchInterface, remainingConditions...) +} diff --git a/vendor/k8s.io/client-go/tools/cache/mutation_cache.go b/vendor/k8s.io/client-go/tools/cache/mutation_cache.go new file mode 100644 index 000000000..0fa06bf77 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/mutation_cache.go @@ -0,0 +1,261 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "strconv" + "sync" + "time" + + "github.com/golang/glog" + + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + utilcache "k8s.io/apimachinery/pkg/util/cache" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/sets" +) + +// MutationCache is able to take the result of update operations and stores them in an LRU +// that can be used to provide a more current view of a requested object. It requires interpreting +// resourceVersions for comparisons. +// Implementations must be thread-safe. +// TODO find a way to layer this into an informer/lister +type MutationCache interface { + GetByKey(key string) (interface{}, bool, error) + ByIndex(indexName, indexKey string) ([]interface{}, error) + Mutation(interface{}) +} + +type ResourceVersionComparator interface { + CompareResourceVersion(lhs, rhs runtime.Object) int +} + +// NewIntegerResourceVersionMutationCache returns a MutationCache that understands how to +// deal with objects that have a resource version that: +// +// - is an integer +// - increases when updated +// - is comparable across the same resource in a namespace +// +// Most backends will have these semantics. Indexer may be nil. ttl controls how long an item +// remains in the mutation cache before it is removed. +// +// If includeAdds is true, objects in the mutation cache will be returned even if they don't exist +// in the underlying store. This is only safe if your use of the cache can handle mutation entries +// remaining in the cache for up to ttl when mutations and deletes occur very closely in time. +func NewIntegerResourceVersionMutationCache(backingCache Store, indexer Indexer, ttl time.Duration, includeAdds bool) MutationCache { + return &mutationCache{ + backingCache: backingCache, + indexer: indexer, + mutationCache: utilcache.NewLRUExpireCache(100), + comparator: etcdObjectVersioner{}, + ttl: ttl, + includeAdds: includeAdds, + } +} + +// mutationCache doesn't guarantee that it returns values added via Mutation since they can page out and +// since you can't distinguish between, "didn't observe create" and "was deleted after create", +// if the key is missing from the backing cache, we always return it as missing +type mutationCache struct { + lock sync.Mutex + backingCache Store + indexer Indexer + mutationCache *utilcache.LRUExpireCache + includeAdds bool + ttl time.Duration + + comparator ResourceVersionComparator +} + +// GetByKey is never guaranteed to return back the value set in Mutation. It could be paged out, it could +// be older than another copy, the backingCache may be more recent or, you might have written twice into the same key. +// You get a value that was valid at some snapshot of time and will always return the newer of backingCache and mutationCache. +func (c *mutationCache) GetByKey(key string) (interface{}, bool, error) { + c.lock.Lock() + defer c.lock.Unlock() + + obj, exists, err := c.backingCache.GetByKey(key) + if err != nil { + return nil, false, err + } + if !exists { + if !c.includeAdds { + // we can't distinguish between, "didn't observe create" and "was deleted after create", so + // if the key is missing, we always return it as missing + return nil, false, nil + } + obj, exists = c.mutationCache.Get(key) + if !exists { + return nil, false, nil + } + } + objRuntime, ok := obj.(runtime.Object) + if !ok { + return obj, true, nil + } + return c.newerObject(key, objRuntime), true, nil +} + +// ByIndex returns the newer objects that match the provided index and indexer key. +// Will return an error if no indexer was provided. +func (c *mutationCache) ByIndex(name string, indexKey string) ([]interface{}, error) { + c.lock.Lock() + defer c.lock.Unlock() + if c.indexer == nil { + return nil, fmt.Errorf("no indexer has been provided to the mutation cache") + } + keys, err := c.indexer.IndexKeys(name, indexKey) + if err != nil { + return nil, err + } + var items []interface{} + keySet := sets.NewString() + for _, key := range keys { + keySet.Insert(key) + obj, exists, err := c.indexer.GetByKey(key) + if err != nil { + return nil, err + } + if !exists { + continue + } + if objRuntime, ok := obj.(runtime.Object); ok { + items = append(items, c.newerObject(key, objRuntime)) + } else { + items = append(items, obj) + } + } + + if c.includeAdds { + fn := c.indexer.GetIndexers()[name] + // Keys() is returned oldest to newest, so full traversal does not alter the LRU behavior + for _, key := range c.mutationCache.Keys() { + updated, ok := c.mutationCache.Get(key) + if !ok { + continue + } + if keySet.Has(key.(string)) { + continue + } + elements, err := fn(updated) + if err != nil { + glog.V(4).Info("Unable to calculate an index entry for mutation cache entry %s: %v", key, err) + continue + } + for _, inIndex := range elements { + if inIndex != indexKey { + continue + } + items = append(items, updated) + break + } + } + } + + return items, nil +} + +// newerObject checks the mutation cache for a newer object and returns one if found. If the +// mutated object is older than the backing object, it is removed from the Must be +// called while the lock is held. +func (c *mutationCache) newerObject(key string, backing runtime.Object) runtime.Object { + mutatedObj, exists := c.mutationCache.Get(key) + if !exists { + return backing + } + mutatedObjRuntime, ok := mutatedObj.(runtime.Object) + if !ok { + return backing + } + if c.comparator.CompareResourceVersion(backing, mutatedObjRuntime) >= 0 { + c.mutationCache.Remove(key) + return backing + } + return mutatedObjRuntime +} + +// Mutation adds a change to the cache that can be returned in GetByKey if it is newer than the backingCache +// copy. If you call Mutation twice with the same object on different threads, one will win, but its not defined +// which one. This doesn't affect correctness, since the GetByKey guaranteed of "later of these two caches" is +// preserved, but you may not get the version of the object you want. The object you get is only guaranteed to +// "one that was valid at some point in time", not "the one that I want". +func (c *mutationCache) Mutation(obj interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + + key, err := DeletionHandlingMetaNamespaceKeyFunc(obj) + if err != nil { + // this is a "nice to have", so failures shouldn't do anything weird + utilruntime.HandleError(err) + return + } + + if objRuntime, ok := obj.(runtime.Object); ok { + if mutatedObj, exists := c.mutationCache.Get(key); exists { + if mutatedObjRuntime, ok := mutatedObj.(runtime.Object); ok { + if c.comparator.CompareResourceVersion(objRuntime, mutatedObjRuntime) < 0 { + return + } + } + } + } + c.mutationCache.Add(key, obj, c.ttl) +} + +// etcdObjectVersioner implements versioning and extracting etcd node information +// for objects that have an embedded ObjectMeta or ListMeta field. +type etcdObjectVersioner struct{} + +// ObjectResourceVersion implements Versioner +func (a etcdObjectVersioner) ObjectResourceVersion(obj runtime.Object) (uint64, error) { + accessor, err := meta.Accessor(obj) + if err != nil { + return 0, err + } + version := accessor.GetResourceVersion() + if len(version) == 0 { + return 0, nil + } + return strconv.ParseUint(version, 10, 64) +} + +// CompareResourceVersion compares etcd resource versions. Outside this API they are all strings, +// but etcd resource versions are special, they're actually ints, so we can easily compare them. +func (a etcdObjectVersioner) CompareResourceVersion(lhs, rhs runtime.Object) int { + lhsVersion, err := a.ObjectResourceVersion(lhs) + if err != nil { + // coder error + panic(err) + } + rhsVersion, err := a.ObjectResourceVersion(rhs) + if err != nil { + // coder error + panic(err) + } + + if lhsVersion == rhsVersion { + return 0 + } + if lhsVersion < rhsVersion { + return -1 + } + + return 1 +} diff --git a/vendor/k8s.io/client-go/tools/cache/mutation_detector.go b/vendor/k8s.io/client-go/tools/cache/mutation_detector.go new file mode 100644 index 000000000..cc6094ce4 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/mutation_detector.go @@ -0,0 +1,135 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "os" + "reflect" + "strconv" + "sync" + "time" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/client-go/kubernetes/scheme" +) + +var mutationDetectionEnabled = false + +func init() { + mutationDetectionEnabled, _ = strconv.ParseBool(os.Getenv("KUBE_CACHE_MUTATION_DETECTOR")) +} + +type CacheMutationDetector interface { + AddObject(obj interface{}) + Run(stopCh <-chan struct{}) +} + +func NewCacheMutationDetector(name string) CacheMutationDetector { + if !mutationDetectionEnabled { + return dummyMutationDetector{} + } + return &defaultCacheMutationDetector{name: name, period: 1 * time.Second} +} + +type dummyMutationDetector struct{} + +func (dummyMutationDetector) Run(stopCh <-chan struct{}) { +} +func (dummyMutationDetector) AddObject(obj interface{}) { +} + +// defaultCacheMutationDetector gives a way to detect if a cached object has been mutated +// It has a list of cached objects and their copies. I haven't thought of a way +// to see WHO is mutating it, just that it's getting mutated. +type defaultCacheMutationDetector struct { + name string + period time.Duration + + lock sync.Mutex + cachedObjs []cacheObj + + // failureFunc is injectable for unit testing. If you don't have it, the process will panic. + // This panic is intentional, since turning on this detection indicates you want a strong + // failure signal. This failure is effectively a p0 bug and you can't trust process results + // after a mutation anyway. + failureFunc func(message string) +} + +// cacheObj holds the actual object and a copy +type cacheObj struct { + cached interface{} + copied interface{} +} + +func (d *defaultCacheMutationDetector) Run(stopCh <-chan struct{}) { + // we DON'T want protection from panics. If we're running this code, we want to die + go func() { + for { + d.CompareObjects() + + select { + case <-stopCh: + return + case <-time.After(d.period): + } + } + }() +} + +// AddObject makes a deep copy of the object for later comparison. It only works on runtime.Object +// but that covers the vast majority of our cached objects +func (d *defaultCacheMutationDetector) AddObject(obj interface{}) { + if _, ok := obj.(DeletedFinalStateUnknown); ok { + return + } + if _, ok := obj.(runtime.Object); !ok { + return + } + + copiedObj, err := scheme.Scheme.Copy(obj.(runtime.Object)) + if err != nil { + return + } + + d.lock.Lock() + defer d.lock.Unlock() + d.cachedObjs = append(d.cachedObjs, cacheObj{cached: obj, copied: copiedObj}) +} + +func (d *defaultCacheMutationDetector) CompareObjects() { + d.lock.Lock() + defer d.lock.Unlock() + + altered := false + for i, obj := range d.cachedObjs { + if !reflect.DeepEqual(obj.cached, obj.copied) { + fmt.Printf("CACHE %s[%d] ALTERED!\n%v\n", d.name, i, diff.ObjectDiff(obj.cached, obj.copied)) + altered = true + } + } + + if altered { + msg := fmt.Sprintf("cache %s modified", d.name) + if d.failureFunc != nil { + d.failureFunc(msg) + return + } + panic(msg) + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/mutation_detector_test.go b/vendor/k8s.io/client-go/tools/cache/mutation_detector_test.go new file mode 100644 index 000000000..b2fe5fb9b --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/mutation_detector_test.go @@ -0,0 +1,81 @@ +// +build !race + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/pkg/api/v1" +) + +func TestMutationDetector(t *testing.T) { + fakeWatch := watch.NewFake() + lw := &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + return fakeWatch, nil + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return &v1.PodList{}, nil + }, + } + pod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "anything", + Labels: map[string]string{"check": "foo"}, + }, + } + stopCh := make(chan struct{}) + defer close(stopCh) + addReceived := make(chan bool) + mutationFound := make(chan bool) + + informer := NewSharedInformer(lw, &v1.Pod{}, 1*time.Second).(*sharedIndexInformer) + informer.cacheMutationDetector = &defaultCacheMutationDetector{ + name: "name", + period: 1 * time.Second, + failureFunc: func(message string) { + mutationFound <- true + }, + } + informer.AddEventHandler( + ResourceEventHandlerFuncs{ + AddFunc: func(obj interface{}) { + addReceived <- true + }, + }, + ) + go informer.Run(stopCh) + + fakeWatch.Add(pod) + + select { + case <-addReceived: + } + + pod.Labels["change"] = "true" + + select { + case <-mutationFound: + } + +} diff --git a/vendor/k8s.io/client-go/tools/cache/processor_listener_test.go b/vendor/k8s.io/client-go/tools/cache/processor_listener_test.go new file mode 100644 index 000000000..dbffcc53f --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/processor_listener_test.go @@ -0,0 +1,48 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/wait" +) + +// TestPopReleaseLock tests that when processor listener blocks on chan, +// it should release the lock for pendingNotifications. +func TestPopReleaseLock(t *testing.T) { + pl := newProcessListener(nil, 0, 0, time.Now()) + stopCh := make(chan struct{}) + defer close(stopCh) + // make pop() block on nextCh: waiting for receiver to get notification. + pl.add(1) + go pl.pop(stopCh) + + resultCh := make(chan struct{}) + go func() { + pl.lock.Lock() + close(resultCh) + }() + + select { + case <-resultCh: + case <-time.After(wait.ForeverTestTimeout): + t.Errorf("Timeout after %v", wait.ForeverTestTimeout) + } + pl.lock.Unlock() +} diff --git a/vendor/k8s.io/client-go/tools/cache/reflector.go b/vendor/k8s.io/client-go/tools/cache/reflector.go new file mode 100644 index 000000000..9a730610c --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/reflector.go @@ -0,0 +1,421 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "errors" + "fmt" + "io" + "math/rand" + "net" + "net/url" + "reflect" + "regexp" + goruntime "runtime" + "runtime/debug" + "strconv" + "strings" + "sync" + "syscall" + "time" + + "github.com/golang/glog" + apierrs "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/clock" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apimachinery/pkg/watch" +) + +// Reflector watches a specified resource and causes all changes to be reflected in the given store. +type Reflector struct { + // name identifies this reflector. By default it will be a file:line if possible. + name string + + // The type of object we expect to place in the store. + expectedType reflect.Type + // The destination to sync up with the watch source + store Store + // listerWatcher is used to perform lists and watches. + listerWatcher ListerWatcher + // period controls timing between one watch ending and + // the beginning of the next one. + period time.Duration + resyncPeriod time.Duration + ShouldResync func() bool + // clock allows tests to manipulate time + clock clock.Clock + // lastSyncResourceVersion is the resource version token last + // observed when doing a sync with the underlying store + // it is thread safe, but not synchronized with the underlying store + lastSyncResourceVersion string + // lastSyncResourceVersionMutex guards read/write access to lastSyncResourceVersion + lastSyncResourceVersionMutex sync.RWMutex +} + +var ( + // We try to spread the load on apiserver by setting timeouts for + // watch requests - it is random in [minWatchTimeout, 2*minWatchTimeout]. + // However, it can be modified to avoid periodic resync to break the + // TCP connection. + minWatchTimeout = 5 * time.Minute +) + +// NewNamespaceKeyedIndexerAndReflector creates an Indexer and a Reflector +// The indexer is configured to key on namespace +func NewNamespaceKeyedIndexerAndReflector(lw ListerWatcher, expectedType interface{}, resyncPeriod time.Duration) (indexer Indexer, reflector *Reflector) { + indexer = NewIndexer(MetaNamespaceKeyFunc, Indexers{"namespace": MetaNamespaceIndexFunc}) + reflector = NewReflector(lw, expectedType, indexer, resyncPeriod) + return indexer, reflector +} + +// NewReflector creates a new Reflector object which will keep the given store up to +// date with the server's contents for the given resource. Reflector promises to +// only put things in the store that have the type of expectedType, unless expectedType +// is nil. If resyncPeriod is non-zero, then lists will be executed after every +// resyncPeriod, so that you can use reflectors to periodically process everything as +// well as incrementally processing the things that change. +func NewReflector(lw ListerWatcher, expectedType interface{}, store Store, resyncPeriod time.Duration) *Reflector { + return NewNamedReflector(getDefaultReflectorName(internalPackages...), lw, expectedType, store, resyncPeriod) +} + +// NewNamedReflector same as NewReflector, but with a specified name for logging +func NewNamedReflector(name string, lw ListerWatcher, expectedType interface{}, store Store, resyncPeriod time.Duration) *Reflector { + r := &Reflector{ + name: name, + listerWatcher: lw, + store: store, + expectedType: reflect.TypeOf(expectedType), + period: time.Second, + resyncPeriod: resyncPeriod, + clock: &clock.RealClock{}, + } + return r +} + +// internalPackages are packages that ignored when creating a default reflector name. These packages are in the common +// call chains to NewReflector, so they'd be low entropy names for reflectors +var internalPackages = []string{"client-go/tools/cache/", "/runtime/asm_"} + +// getDefaultReflectorName walks back through the call stack until we find a caller from outside of the ignoredPackages +// it returns back a shortpath/filename:line to aid in identification of this reflector when it starts logging +func getDefaultReflectorName(ignoredPackages ...string) string { + name := "????" + const maxStack = 10 + for i := 1; i < maxStack; i++ { + _, file, line, ok := goruntime.Caller(i) + if !ok { + file, line, ok = extractStackCreator() + if !ok { + break + } + i += maxStack + } + if hasPackage(file, ignoredPackages) { + continue + } + + file = trimPackagePrefix(file) + name = fmt.Sprintf("%s:%d", file, line) + break + } + return name +} + +// hasPackage returns true if the file is in one of the ignored packages. +func hasPackage(file string, ignoredPackages []string) bool { + for _, ignoredPackage := range ignoredPackages { + if strings.Contains(file, ignoredPackage) { + return true + } + } + return false +} + +// trimPackagePrefix reduces duplicate values off the front of a package name. +func trimPackagePrefix(file string) string { + if l := strings.LastIndex(file, "k8s.io/client-go/pkg/"); l >= 0 { + return file[l+len("k8s.io/client-go/"):] + } + if l := strings.LastIndex(file, "/src/"); l >= 0 { + return file[l+5:] + } + if l := strings.LastIndex(file, "/pkg/"); l >= 0 { + return file[l+1:] + } + return file +} + +var stackCreator = regexp.MustCompile(`(?m)^created by (.*)\n\s+(.*):(\d+) \+0x[[:xdigit:]]+$`) + +// extractStackCreator retrieves the goroutine file and line that launched this stack. Returns false +// if the creator cannot be located. +// TODO: Go does not expose this via runtime https://github.com/golang/go/issues/11440 +func extractStackCreator() (string, int, bool) { + stack := debug.Stack() + matches := stackCreator.FindStringSubmatch(string(stack)) + if matches == nil || len(matches) != 4 { + return "", 0, false + } + line, err := strconv.Atoi(matches[3]) + if err != nil { + return "", 0, false + } + return matches[2], line, true +} + +// Run starts a watch and handles watch events. Will restart the watch if it is closed. +// Run starts a goroutine and returns immediately. +func (r *Reflector) Run() { + glog.V(3).Infof("Starting reflector %v (%s) from %s", r.expectedType, r.resyncPeriod, r.name) + go wait.Until(func() { + if err := r.ListAndWatch(wait.NeverStop); err != nil { + utilruntime.HandleError(err) + } + }, r.period, wait.NeverStop) +} + +// RunUntil starts a watch and handles watch events. Will restart the watch if it is closed. +// RunUntil starts a goroutine and returns immediately. It will exit when stopCh is closed. +func (r *Reflector) RunUntil(stopCh <-chan struct{}) { + glog.V(3).Infof("Starting reflector %v (%s) from %s", r.expectedType, r.resyncPeriod, r.name) + go wait.Until(func() { + if err := r.ListAndWatch(stopCh); err != nil { + utilruntime.HandleError(err) + } + }, r.period, stopCh) +} + +var ( + // nothing will ever be sent down this channel + neverExitWatch <-chan time.Time = make(chan time.Time) + + // Used to indicate that watching stopped so that a resync could happen. + errorResyncRequested = errors.New("resync channel fired") + + // Used to indicate that watching stopped because of a signal from the stop + // channel passed in from a client of the reflector. + errorStopRequested = errors.New("Stop requested") +) + +// resyncChan returns a channel which will receive something when a resync is +// required, and a cleanup function. +func (r *Reflector) resyncChan() (<-chan time.Time, func() bool) { + if r.resyncPeriod == 0 { + return neverExitWatch, func() bool { return false } + } + // The cleanup function is required: imagine the scenario where watches + // always fail so we end up listing frequently. Then, if we don't + // manually stop the timer, we could end up with many timers active + // concurrently. + t := r.clock.NewTimer(r.resyncPeriod) + return t.C(), t.Stop +} + +// ListAndWatch first lists all items and get the resource version at the moment of call, +// and then use the resource version to watch. +// It returns error if ListAndWatch didn't even try to initialize watch. +func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { + glog.V(3).Infof("Listing and watching %v from %s", r.expectedType, r.name) + var resourceVersion string + resyncCh, cleanup := r.resyncChan() + defer cleanup() + + // Explicitly set "0" as resource version - it's fine for the List() + // to be served from cache and potentially be delayed relative to + // etcd contents. Reflector framework will catch up via Watch() eventually. + options := metav1.ListOptions{ResourceVersion: "0"} + list, err := r.listerWatcher.List(options) + if err != nil { + return fmt.Errorf("%s: Failed to list %v: %v", r.name, r.expectedType, err) + } + listMetaInterface, err := meta.ListAccessor(list) + if err != nil { + return fmt.Errorf("%s: Unable to understand list result %#v: %v", r.name, list, err) + } + resourceVersion = listMetaInterface.GetResourceVersion() + items, err := meta.ExtractList(list) + if err != nil { + return fmt.Errorf("%s: Unable to understand list result %#v (%v)", r.name, list, err) + } + if err := r.syncWith(items, resourceVersion); err != nil { + return fmt.Errorf("%s: Unable to sync list result: %v", r.name, err) + } + r.setLastSyncResourceVersion(resourceVersion) + + resyncerrc := make(chan error, 1) + cancelCh := make(chan struct{}) + defer close(cancelCh) + go func() { + for { + select { + case <-resyncCh: + case <-stopCh: + return + case <-cancelCh: + return + } + if r.ShouldResync == nil || r.ShouldResync() { + glog.V(4).Infof("%s: forcing resync", r.name) + if err := r.store.Resync(); err != nil { + resyncerrc <- err + return + } + } + cleanup() + resyncCh, cleanup = r.resyncChan() + } + }() + + for { + timemoutseconds := int64(minWatchTimeout.Seconds() * (rand.Float64() + 1.0)) + options = metav1.ListOptions{ + ResourceVersion: resourceVersion, + // We want to avoid situations of hanging watchers. Stop any wachers that do not + // receive any events within the timeout window. + TimeoutSeconds: &timemoutseconds, + } + + w, err := r.listerWatcher.Watch(options) + if err != nil { + switch err { + case io.EOF: + // watch closed normally + case io.ErrUnexpectedEOF: + glog.V(1).Infof("%s: Watch for %v closed with unexpected EOF: %v", r.name, r.expectedType, err) + default: + utilruntime.HandleError(fmt.Errorf("%s: Failed to watch %v: %v", r.name, r.expectedType, err)) + } + // If this is "connection refused" error, it means that most likely apiserver is not responsive. + // It doesn't make sense to re-list all objects because most likely we will be able to restart + // watch where we ended. + // If that's the case wait and resend watch request. + if urlError, ok := err.(*url.Error); ok { + if opError, ok := urlError.Err.(*net.OpError); ok { + if errno, ok := opError.Err.(syscall.Errno); ok && errno == syscall.ECONNREFUSED { + time.Sleep(time.Second) + continue + } + } + } + return nil + } + + if err := r.watchHandler(w, &resourceVersion, resyncerrc, stopCh); err != nil { + if err != errorStopRequested { + glog.Warningf("%s: watch of %v ended with: %v", r.name, r.expectedType, err) + } + return nil + } + } +} + +// syncWith replaces the store's items with the given list. +func (r *Reflector) syncWith(items []runtime.Object, resourceVersion string) error { + found := make([]interface{}, 0, len(items)) + for _, item := range items { + found = append(found, item) + } + return r.store.Replace(found, resourceVersion) +} + +// watchHandler watches w and keeps *resourceVersion up to date. +func (r *Reflector) watchHandler(w watch.Interface, resourceVersion *string, errc chan error, stopCh <-chan struct{}) error { + start := r.clock.Now() + eventCount := 0 + + // Stopping the watcher should be idempotent and if we return from this function there's no way + // we're coming back in with the same watch interface. + defer w.Stop() + +loop: + for { + select { + case <-stopCh: + return errorStopRequested + case err := <-errc: + return err + case event, ok := <-w.ResultChan(): + if !ok { + break loop + } + if event.Type == watch.Error { + return apierrs.FromObject(event.Object) + } + if e, a := r.expectedType, reflect.TypeOf(event.Object); e != nil && e != a { + utilruntime.HandleError(fmt.Errorf("%s: expected type %v, but watch event object had type %v", r.name, e, a)) + continue + } + meta, err := meta.Accessor(event.Object) + if err != nil { + utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", r.name, event)) + continue + } + newResourceVersion := meta.GetResourceVersion() + switch event.Type { + case watch.Added: + err := r.store.Add(event.Object) + if err != nil { + utilruntime.HandleError(fmt.Errorf("%s: unable to add watch event object (%#v) to store: %v", r.name, event.Object, err)) + } + case watch.Modified: + err := r.store.Update(event.Object) + if err != nil { + utilruntime.HandleError(fmt.Errorf("%s: unable to update watch event object (%#v) to store: %v", r.name, event.Object, err)) + } + case watch.Deleted: + // TODO: Will any consumers need access to the "last known + // state", which is passed in event.Object? If so, may need + // to change this. + err := r.store.Delete(event.Object) + if err != nil { + utilruntime.HandleError(fmt.Errorf("%s: unable to delete watch event object (%#v) from store: %v", r.name, event.Object, err)) + } + default: + utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", r.name, event)) + } + *resourceVersion = newResourceVersion + r.setLastSyncResourceVersion(newResourceVersion) + eventCount++ + } + } + + watchDuration := r.clock.Now().Sub(start) + if watchDuration < 1*time.Second && eventCount == 0 { + glog.V(4).Infof("%s: Unexpected watch close - watch lasted less than a second and no items received", r.name) + return errors.New("very short watch") + } + glog.V(4).Infof("%s: Watch close - %v total %v items received", r.name, r.expectedType, eventCount) + return nil +} + +// LastSyncResourceVersion is the resource version observed when last sync with the underlying store +// The value returned is not synchronized with access to the underlying store and is not thread-safe +func (r *Reflector) LastSyncResourceVersion() string { + r.lastSyncResourceVersionMutex.RLock() + defer r.lastSyncResourceVersionMutex.RUnlock() + return r.lastSyncResourceVersion +} + +func (r *Reflector) setLastSyncResourceVersion(v string) { + r.lastSyncResourceVersionMutex.Lock() + defer r.lastSyncResourceVersionMutex.Unlock() + r.lastSyncResourceVersion = v +} diff --git a/vendor/k8s.io/client-go/tools/cache/reflector_test.go b/vendor/k8s.io/client-go/tools/cache/reflector_test.go new file mode 100644 index 000000000..ae2b75fa8 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/reflector_test.go @@ -0,0 +1,389 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "errors" + "fmt" + "math/rand" + "strconv" + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/pkg/api/v1" +) + +var nevererrc chan error + +type testLW struct { + ListFunc func(options metav1.ListOptions) (runtime.Object, error) + WatchFunc func(options metav1.ListOptions) (watch.Interface, error) +} + +func (t *testLW) List(options metav1.ListOptions) (runtime.Object, error) { + return t.ListFunc(options) +} +func (t *testLW) Watch(options metav1.ListOptions) (watch.Interface, error) { + return t.WatchFunc(options) +} + +func TestCloseWatchChannelOnError(t *testing.T) { + r := NewReflector(&testLW{}, &v1.Pod{}, NewStore(MetaNamespaceKeyFunc), 0) + pod := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}} + fw := watch.NewFake() + r.listerWatcher = &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + return fw, nil + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: metav1.ListMeta{ResourceVersion: "1"}}, nil + }, + } + go r.ListAndWatch(wait.NeverStop) + fw.Error(pod) + select { + case _, ok := <-fw.ResultChan(): + if ok { + t.Errorf("Watch channel left open after cancellation") + } + case <-time.After(wait.ForeverTestTimeout): + t.Errorf("the cancellation is at least %s late", wait.ForeverTestTimeout.String()) + break + } +} + +func TestRunUntil(t *testing.T) { + stopCh := make(chan struct{}) + store := NewStore(MetaNamespaceKeyFunc) + r := NewReflector(&testLW{}, &v1.Pod{}, store, 0) + fw := watch.NewFake() + r.listerWatcher = &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + return fw, nil + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: metav1.ListMeta{ResourceVersion: "1"}}, nil + }, + } + r.RunUntil(stopCh) + // Synchronously add a dummy pod into the watch channel so we + // know the RunUntil go routine is in the watch handler. + fw.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}}) + close(stopCh) + select { + case _, ok := <-fw.ResultChan(): + if ok { + t.Errorf("Watch channel left open after stopping the watch") + } + case <-time.After(wait.ForeverTestTimeout): + t.Errorf("the cancellation is at least %s late", wait.ForeverTestTimeout.String()) + break + } +} + +func TestReflectorResyncChan(t *testing.T) { + s := NewStore(MetaNamespaceKeyFunc) + g := NewReflector(&testLW{}, &v1.Pod{}, s, time.Millisecond) + a, _ := g.resyncChan() + b := time.After(wait.ForeverTestTimeout) + select { + case <-a: + t.Logf("got timeout as expected") + case <-b: + t.Errorf("resyncChan() is at least 99 milliseconds late??") + } +} + +func BenchmarkReflectorResyncChanMany(b *testing.B) { + s := NewStore(MetaNamespaceKeyFunc) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 25*time.Millisecond) + // The improvement to this (calling the timer's Stop() method) makes + // this benchmark about 40% faster. + for i := 0; i < b.N; i++ { + g.resyncPeriod = time.Duration(rand.Float64() * float64(time.Millisecond) * 25) + _, stop := g.resyncChan() + stop() + } +} + +func TestReflectorWatchHandlerError(t *testing.T) { + s := NewStore(MetaNamespaceKeyFunc) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 0) + fw := watch.NewFake() + go func() { + fw.Stop() + }() + var resumeRV string + err := g.watchHandler(fw, &resumeRV, nevererrc, wait.NeverStop) + if err == nil { + t.Errorf("unexpected non-error") + } +} + +func TestReflectorWatchHandler(t *testing.T) { + s := NewStore(MetaNamespaceKeyFunc) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 0) + fw := watch.NewFake() + s.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) + s.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}}) + go func() { + fw.Add(&v1.Service{ObjectMeta: metav1.ObjectMeta{Name: "rejected"}}) + fw.Delete(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) + fw.Modify(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar", ResourceVersion: "55"}}) + fw.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "baz", ResourceVersion: "32"}}) + fw.Stop() + }() + var resumeRV string + err := g.watchHandler(fw, &resumeRV, nevererrc, wait.NeverStop) + if err != nil { + t.Errorf("unexpected error %v", err) + } + + mkPod := func(id string, rv string) *v1.Pod { + return &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: id, ResourceVersion: rv}} + } + + table := []struct { + Pod *v1.Pod + exists bool + }{ + {mkPod("foo", ""), false}, + {mkPod("rejected", ""), false}, + {mkPod("bar", "55"), true}, + {mkPod("baz", "32"), true}, + } + for _, item := range table { + obj, exists, _ := s.Get(item.Pod) + if e, a := item.exists, exists; e != a { + t.Errorf("%v: expected %v, got %v", item.Pod, e, a) + } + if !exists { + continue + } + if e, a := item.Pod.ResourceVersion, obj.(*v1.Pod).ResourceVersion; e != a { + t.Errorf("%v: expected %v, got %v", item.Pod, e, a) + } + } + + // RV should send the last version we see. + if e, a := "32", resumeRV; e != a { + t.Errorf("expected %v, got %v", e, a) + } + + // last sync resource version should be the last version synced with store + if e, a := "32", g.LastSyncResourceVersion(); e != a { + t.Errorf("expected %v, got %v", e, a) + } +} + +func TestReflectorStopWatch(t *testing.T) { + s := NewStore(MetaNamespaceKeyFunc) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 0) + fw := watch.NewFake() + var resumeRV string + stopWatch := make(chan struct{}, 1) + stopWatch <- struct{}{} + err := g.watchHandler(fw, &resumeRV, nevererrc, stopWatch) + if err != errorStopRequested { + t.Errorf("expected stop error, got %q", err) + } +} + +func TestReflectorListAndWatch(t *testing.T) { + createdFakes := make(chan *watch.FakeWatcher) + + // The ListFunc says that it's at revision 1. Therefore, we expect our WatchFunc + // to get called at the beginning of the watch with 1, and again with 3 when we + // inject an error. + expectedRVs := []string{"1", "3"} + lw := &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + rv := options.ResourceVersion + fw := watch.NewFake() + if e, a := expectedRVs[0], rv; e != a { + t.Errorf("Expected rv %v, but got %v", e, a) + } + expectedRVs = expectedRVs[1:] + // channel is not buffered because the for loop below needs to block. But + // we don't want to block here, so report the new fake via a go routine. + go func() { createdFakes <- fw }() + return fw, nil + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: metav1.ListMeta{ResourceVersion: "1"}}, nil + }, + } + s := NewFIFO(MetaNamespaceKeyFunc) + r := NewReflector(lw, &v1.Pod{}, s, 0) + go r.ListAndWatch(wait.NeverStop) + + ids := []string{"foo", "bar", "baz", "qux", "zoo"} + var fw *watch.FakeWatcher + for i, id := range ids { + if fw == nil { + fw = <-createdFakes + } + sendingRV := strconv.FormatUint(uint64(i+2), 10) + fw.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: id, ResourceVersion: sendingRV}}) + if sendingRV == "3" { + // Inject a failure. + fw.Stop() + fw = nil + } + } + + // Verify we received the right ids with the right resource versions. + for i, id := range ids { + pod := Pop(s).(*v1.Pod) + if e, a := id, pod.Name; e != a { + t.Errorf("%v: Expected %v, got %v", i, e, a) + } + if e, a := strconv.FormatUint(uint64(i+2), 10), pod.ResourceVersion; e != a { + t.Errorf("%v: Expected %v, got %v", i, e, a) + } + } + + if len(expectedRVs) != 0 { + t.Error("called watchStarter an unexpected number of times") + } +} + +func TestReflectorListAndWatchWithErrors(t *testing.T) { + mkPod := func(id string, rv string) *v1.Pod { + return &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: id, ResourceVersion: rv}} + } + mkList := func(rv string, pods ...*v1.Pod) *v1.PodList { + list := &v1.PodList{ListMeta: metav1.ListMeta{ResourceVersion: rv}} + for _, pod := range pods { + list.Items = append(list.Items, *pod) + } + return list + } + table := []struct { + list *v1.PodList + listErr error + events []watch.Event + watchErr error + }{ + { + list: mkList("1"), + events: []watch.Event{ + {Type: watch.Added, Object: mkPod("foo", "2")}, + {Type: watch.Added, Object: mkPod("bar", "3")}, + }, + }, { + list: mkList("3", mkPod("foo", "2"), mkPod("bar", "3")), + events: []watch.Event{ + {Type: watch.Deleted, Object: mkPod("foo", "4")}, + {Type: watch.Added, Object: mkPod("qux", "5")}, + }, + }, { + listErr: fmt.Errorf("a list error"), + }, { + list: mkList("5", mkPod("bar", "3"), mkPod("qux", "5")), + watchErr: fmt.Errorf("a watch error"), + }, { + list: mkList("5", mkPod("bar", "3"), mkPod("qux", "5")), + events: []watch.Event{ + {Type: watch.Added, Object: mkPod("baz", "6")}, + }, + }, { + list: mkList("6", mkPod("bar", "3"), mkPod("qux", "5"), mkPod("baz", "6")), + }, + } + + s := NewFIFO(MetaNamespaceKeyFunc) + for line, item := range table { + if item.list != nil { + // Test that the list is what currently exists in the store. + current := s.List() + checkMap := map[string]string{} + for _, item := range current { + pod := item.(*v1.Pod) + checkMap[pod.Name] = pod.ResourceVersion + } + for _, pod := range item.list.Items { + if e, a := pod.ResourceVersion, checkMap[pod.Name]; e != a { + t.Errorf("%v: expected %v, got %v for pod %v", line, e, a, pod.Name) + } + } + if e, a := len(item.list.Items), len(checkMap); e != a { + t.Errorf("%v: expected %v, got %v", line, e, a) + } + } + watchRet, watchErr := item.events, item.watchErr + lw := &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + if watchErr != nil { + return nil, watchErr + } + watchErr = fmt.Errorf("second watch") + fw := watch.NewFake() + go func() { + for _, e := range watchRet { + fw.Action(e.Type, e.Object) + } + fw.Stop() + }() + return fw, nil + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return item.list, item.listErr + }, + } + r := NewReflector(lw, &v1.Pod{}, s, 0) + r.ListAndWatch(wait.NeverStop) + } +} + +func TestReflectorResync(t *testing.T) { + iteration := 0 + stopCh := make(chan struct{}) + rerr := errors.New("expected resync reached") + s := &FakeCustomStore{ + ResyncFunc: func() error { + iteration++ + if iteration == 2 { + return rerr + } + return nil + }, + } + + lw := &testLW{ + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + fw := watch.NewFake() + return fw, nil + }, + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: metav1.ListMeta{ResourceVersion: "0"}}, nil + }, + } + resyncPeriod := 1 * time.Millisecond + r := NewReflector(lw, &v1.Pod{}, s, resyncPeriod) + if err := r.ListAndWatch(stopCh); err != nil { + // error from Resync is not propaged up to here. + t.Errorf("expected error %v", err) + } + if iteration != 2 { + t.Errorf("exactly 2 iterations were expected, got: %v", iteration) + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/shared_informer.go b/vendor/k8s.io/client-go/tools/cache/shared_informer.go new file mode 100644 index 000000000..a0dbbb697 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/shared_informer.go @@ -0,0 +1,581 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "sync" + "time" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/clock" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/wait" + + "github.com/golang/glog" +) + +// SharedInformer has a shared data cache and is capable of distributing notifications for changes +// to the cache to multiple listeners who registered via AddEventHandler. If you use this, there is +// one behavior change compared to a standard Informer. When you receive a notification, the cache +// will be AT LEAST as fresh as the notification, but it MAY be more fresh. You should NOT depend +// on the contents of the cache exactly matching the notification you've received in handler +// functions. If there was a create, followed by a delete, the cache may NOT have your item. This +// has advantages over the broadcaster since it allows us to share a common cache across many +// controllers. Extending the broadcaster would have required us keep duplicate caches for each +// watch. +type SharedInformer interface { + // AddEventHandler adds an event handler to the shared informer using the shared informer's resync + // period. Events to a single handler are delivered sequentially, but there is no coordination + // between different handlers. + AddEventHandler(handler ResourceEventHandler) + // AddEventHandlerWithResyncPeriod adds an event handler to the shared informer using the + // specified resync period. Events to a single handler are delivered sequentially, but there is + // no coordination between different handlers. + AddEventHandlerWithResyncPeriod(handler ResourceEventHandler, resyncPeriod time.Duration) + // GetStore returns the Store. + GetStore() Store + // GetController gives back a synthetic interface that "votes" to start the informer + GetController() Controller + // Run starts the shared informer, which will be stopped when stopCh is closed. + Run(stopCh <-chan struct{}) + // HasSynced returns true if the shared informer's store has synced. + HasSynced() bool + // LastSyncResourceVersion is the resource version observed when last synced with the underlying + // store. The value returned is not synchronized with access to the underlying store and is not + // thread-safe. + LastSyncResourceVersion() string +} + +type SharedIndexInformer interface { + SharedInformer + // AddIndexers add indexers to the informer before it starts. + AddIndexers(indexers Indexers) error + GetIndexer() Indexer +} + +// NewSharedInformer creates a new instance for the listwatcher. +func NewSharedInformer(lw ListerWatcher, objType runtime.Object, resyncPeriod time.Duration) SharedInformer { + return NewSharedIndexInformer(lw, objType, resyncPeriod, Indexers{}) +} + +// NewSharedIndexInformer creates a new instance for the listwatcher. +func NewSharedIndexInformer(lw ListerWatcher, objType runtime.Object, defaultEventHandlerResyncPeriod time.Duration, indexers Indexers) SharedIndexInformer { + realClock := &clock.RealClock{} + sharedIndexInformer := &sharedIndexInformer{ + processor: &sharedProcessor{clock: realClock}, + indexer: NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, indexers), + listerWatcher: lw, + objectType: objType, + resyncCheckPeriod: defaultEventHandlerResyncPeriod, + defaultEventHandlerResyncPeriod: defaultEventHandlerResyncPeriod, + cacheMutationDetector: NewCacheMutationDetector(fmt.Sprintf("%T", objType)), + clock: realClock, + } + return sharedIndexInformer +} + +// InformerSynced is a function that can be used to determine if an informer has synced. This is useful for determining if caches have synced. +type InformerSynced func() bool + +// syncedPollPeriod controls how often you look at the status of your sync funcs +const syncedPollPeriod = 100 * time.Millisecond + +// WaitForCacheSync waits for caches to populate. It returns true if it was successful, false +// if the controller should shutdown +func WaitForCacheSync(stopCh <-chan struct{}, cacheSyncs ...InformerSynced) bool { + err := wait.PollUntil(syncedPollPeriod, + func() (bool, error) { + for _, syncFunc := range cacheSyncs { + if !syncFunc() { + return false, nil + } + } + return true, nil + }, + stopCh) + if err != nil { + glog.V(2).Infof("stop requested") + return false + } + + glog.V(4).Infof("caches populated") + return true +} + +type sharedIndexInformer struct { + indexer Indexer + controller Controller + + processor *sharedProcessor + cacheMutationDetector CacheMutationDetector + + // This block is tracked to handle late initialization of the controller + listerWatcher ListerWatcher + objectType runtime.Object + + // resyncCheckPeriod is how often we want the reflector's resync timer to fire so it can call + // shouldResync to check if any of our listeners need a resync. + resyncCheckPeriod time.Duration + // defaultEventHandlerResyncPeriod is the default resync period for any handlers added via + // AddEventHandler (i.e. they don't specify one and just want to use the shared informer's default + // value). + defaultEventHandlerResyncPeriod time.Duration + // clock allows for testability + clock clock.Clock + + started bool + startedLock sync.Mutex + + // blockDeltas gives a way to stop all event distribution so that a late event handler + // can safely join the shared informer. + blockDeltas sync.Mutex + // stopCh is the channel used to stop the main Run process. We have to track it so that + // late joiners can have a proper stop + stopCh <-chan struct{} +} + +// dummyController hides the fact that a SharedInformer is different from a dedicated one +// where a caller can `Run`. The run method is disconnected in this case, because higher +// level logic will decide when to start the SharedInformer and related controller. +// Because returning information back is always asynchronous, the legacy callers shouldn't +// notice any change in behavior. +type dummyController struct { + informer *sharedIndexInformer +} + +func (v *dummyController) Run(stopCh <-chan struct{}) { +} + +func (v *dummyController) HasSynced() bool { + return v.informer.HasSynced() +} + +func (c *dummyController) LastSyncResourceVersion() string { + return "" +} + +type updateNotification struct { + oldObj interface{} + newObj interface{} +} + +type addNotification struct { + newObj interface{} +} + +type deleteNotification struct { + oldObj interface{} +} + +func (s *sharedIndexInformer) Run(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, s.indexer) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: s.listerWatcher, + ObjectType: s.objectType, + FullResyncPeriod: s.resyncCheckPeriod, + RetryOnError: false, + ShouldResync: s.processor.shouldResync, + + Process: s.HandleDeltas, + } + + func() { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + s.controller = New(cfg) + s.controller.(*controller).clock = s.clock + s.started = true + }() + + s.stopCh = stopCh + s.cacheMutationDetector.Run(stopCh) + s.processor.run(stopCh) + s.controller.Run(stopCh) +} + +func (s *sharedIndexInformer) isStarted() bool { + s.startedLock.Lock() + defer s.startedLock.Unlock() + return s.started +} + +func (s *sharedIndexInformer) HasSynced() bool { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if s.controller == nil { + return false + } + return s.controller.HasSynced() +} + +func (s *sharedIndexInformer) LastSyncResourceVersion() string { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if s.controller == nil { + return "" + } + return s.controller.LastSyncResourceVersion() +} + +func (s *sharedIndexInformer) GetStore() Store { + return s.indexer +} + +func (s *sharedIndexInformer) GetIndexer() Indexer { + return s.indexer +} + +func (s *sharedIndexInformer) AddIndexers(indexers Indexers) error { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if s.started { + return fmt.Errorf("informer has already started") + } + + return s.indexer.AddIndexers(indexers) +} + +func (s *sharedIndexInformer) GetController() Controller { + return &dummyController{informer: s} +} + +func (s *sharedIndexInformer) AddEventHandler(handler ResourceEventHandler) { + s.AddEventHandlerWithResyncPeriod(handler, s.defaultEventHandlerResyncPeriod) +} + +func determineResyncPeriod(desired, check time.Duration) time.Duration { + if desired == 0 { + return desired + } + if check == 0 { + glog.Warningf("The specified resyncPeriod %v is invalid because this shared informer doesn't support resyncing", desired) + return 0 + } + if desired < check { + glog.Warningf("The specified resyncPeriod %v is being increased to the minimum resyncCheckPeriod %v", desired, check) + return check + } + return desired +} + +const minimumResyncPeriod = 1 * time.Second + +func (s *sharedIndexInformer) AddEventHandlerWithResyncPeriod(handler ResourceEventHandler, resyncPeriod time.Duration) { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if resyncPeriod > 0 { + if resyncPeriod < minimumResyncPeriod { + glog.Warningf("resyncPeriod %d is too small. Changing it to the minimum allowed value of %d", resyncPeriod, minimumResyncPeriod) + resyncPeriod = minimumResyncPeriod + } + + if resyncPeriod < s.resyncCheckPeriod { + if s.started { + glog.Warningf("resyncPeriod %d is smaller than resyncCheckPeriod %d and the informer has already started. Changing it to %d", resyncPeriod, s.resyncCheckPeriod, s.resyncCheckPeriod) + resyncPeriod = s.resyncCheckPeriod + } else { + // if the event handler's resyncPeriod is smaller than the current resyncCheckPeriod, update + // resyncCheckPeriod to match resyncPeriod and adjust the resync periods of all the listeners + // accordingly + s.resyncCheckPeriod = resyncPeriod + s.processor.resyncCheckPeriodChanged(resyncPeriod) + } + } + } + + listener := newProcessListener(handler, resyncPeriod, determineResyncPeriod(resyncPeriod, s.resyncCheckPeriod), s.clock.Now()) + + if !s.started { + s.processor.addListener(listener) + return + } + + // in order to safely join, we have to + // 1. stop sending add/update/delete notifications + // 2. do a list against the store + // 3. send synthetic "Add" events to the new handler + // 4. unblock + s.blockDeltas.Lock() + defer s.blockDeltas.Unlock() + + s.processor.addListener(listener) + + go listener.run(s.stopCh) + go listener.pop(s.stopCh) + + items := s.indexer.List() + for i := range items { + listener.add(addNotification{newObj: items[i]}) + } +} + +func (s *sharedIndexInformer) HandleDeltas(obj interface{}) error { + s.blockDeltas.Lock() + defer s.blockDeltas.Unlock() + + // from oldest to newest + for _, d := range obj.(Deltas) { + switch d.Type { + case Sync, Added, Updated: + isSync := d.Type == Sync + s.cacheMutationDetector.AddObject(d.Object) + if old, exists, err := s.indexer.Get(d.Object); err == nil && exists { + if err := s.indexer.Update(d.Object); err != nil { + return err + } + s.processor.distribute(updateNotification{oldObj: old, newObj: d.Object}, isSync) + } else { + if err := s.indexer.Add(d.Object); err != nil { + return err + } + s.processor.distribute(addNotification{newObj: d.Object}, isSync) + } + case Deleted: + if err := s.indexer.Delete(d.Object); err != nil { + return err + } + s.processor.distribute(deleteNotification{oldObj: d.Object}, false) + } + } + return nil +} + +type sharedProcessor struct { + listenersLock sync.RWMutex + listeners []*processorListener + syncingListeners []*processorListener + clock clock.Clock +} + +func (p *sharedProcessor) addListener(listener *processorListener) { + p.listenersLock.Lock() + defer p.listenersLock.Unlock() + + p.listeners = append(p.listeners, listener) + p.syncingListeners = append(p.syncingListeners, listener) +} + +func (p *sharedProcessor) distribute(obj interface{}, sync bool) { + p.listenersLock.RLock() + defer p.listenersLock.RUnlock() + + if sync { + for _, listener := range p.syncingListeners { + listener.add(obj) + } + } else { + for _, listener := range p.listeners { + listener.add(obj) + } + } +} + +func (p *sharedProcessor) run(stopCh <-chan struct{}) { + p.listenersLock.RLock() + defer p.listenersLock.RUnlock() + + for _, listener := range p.listeners { + go listener.run(stopCh) + go listener.pop(stopCh) + } +} + +// shouldResync queries every listener to determine if any of them need a resync, based on each +// listener's resyncPeriod. +func (p *sharedProcessor) shouldResync() bool { + p.listenersLock.Lock() + defer p.listenersLock.Unlock() + + p.syncingListeners = []*processorListener{} + + resyncNeeded := false + now := p.clock.Now() + for _, listener := range p.listeners { + // need to loop through all the listeners to see if they need to resync so we can prepare any + // listeners that are going to be resyncing. + if listener.shouldResync(now) { + resyncNeeded = true + p.syncingListeners = append(p.syncingListeners, listener) + listener.determineNextResync(now) + } + } + return resyncNeeded +} + +func (p *sharedProcessor) resyncCheckPeriodChanged(resyncCheckPeriod time.Duration) { + p.listenersLock.RLock() + defer p.listenersLock.RUnlock() + + for _, listener := range p.listeners { + resyncPeriod := determineResyncPeriod(listener.requestedResyncPeriod, resyncCheckPeriod) + listener.setResyncPeriod(resyncPeriod) + } +} + +type processorListener struct { + // lock/cond protects access to 'pendingNotifications'. + lock sync.RWMutex + cond sync.Cond + + // pendingNotifications is an unbounded slice that holds all notifications not yet distributed + // there is one per listener, but a failing/stalled listener will have infinite pendingNotifications + // added until we OOM. + // TODO This is no worse that before, since reflectors were backed by unbounded DeltaFIFOs, but + // we should try to do something better + pendingNotifications []interface{} + + nextCh chan interface{} + + handler ResourceEventHandler + + // requestedResyncPeriod is how frequently the listener wants a full resync from the shared informer + requestedResyncPeriod time.Duration + // resyncPeriod is how frequently the listener wants a full resync from the shared informer. This + // value may differ from requestedResyncPeriod if the shared informer adjusts it to align with the + // informer's overall resync check period. + resyncPeriod time.Duration + // nextResync is the earliest time the listener should get a full resync + nextResync time.Time + // resyncLock guards access to resyncPeriod and nextResync + resyncLock sync.Mutex +} + +func newProcessListener(handler ResourceEventHandler, requestedResyncPeriod, resyncPeriod time.Duration, now time.Time) *processorListener { + ret := &processorListener{ + pendingNotifications: []interface{}{}, + nextCh: make(chan interface{}), + handler: handler, + requestedResyncPeriod: requestedResyncPeriod, + resyncPeriod: resyncPeriod, + } + + ret.cond.L = &ret.lock + + ret.determineNextResync(now) + + return ret +} + +func (p *processorListener) add(notification interface{}) { + p.lock.Lock() + defer p.lock.Unlock() + + p.pendingNotifications = append(p.pendingNotifications, notification) + p.cond.Broadcast() +} + +func (p *processorListener) pop(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + + for { + blockingGet := func() (interface{}, bool) { + p.lock.Lock() + defer p.lock.Unlock() + + for len(p.pendingNotifications) == 0 { + // check if we're shutdown + select { + case <-stopCh: + return nil, true + default: + } + p.cond.Wait() + } + + nt := p.pendingNotifications[0] + p.pendingNotifications = p.pendingNotifications[1:] + return nt, false + } + + notification, stopped := blockingGet() + if stopped { + return + } + + select { + case <-stopCh: + return + case p.nextCh <- notification: + } + } +} + +func (p *processorListener) run(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + + for { + var next interface{} + select { + case <-stopCh: + func() { + p.lock.Lock() + defer p.lock.Unlock() + p.cond.Broadcast() + }() + return + case next = <-p.nextCh: + } + + switch notification := next.(type) { + case updateNotification: + p.handler.OnUpdate(notification.oldObj, notification.newObj) + case addNotification: + p.handler.OnAdd(notification.newObj) + case deleteNotification: + p.handler.OnDelete(notification.oldObj) + default: + utilruntime.HandleError(fmt.Errorf("unrecognized notification: %#v", next)) + } + } +} + +// shouldResync deterimines if the listener needs a resync. If the listener's resyncPeriod is 0, +// this always returns false. +func (p *processorListener) shouldResync(now time.Time) bool { + p.resyncLock.Lock() + defer p.resyncLock.Unlock() + + if p.resyncPeriod == 0 { + return false + } + + return now.After(p.nextResync) || now.Equal(p.nextResync) +} + +func (p *processorListener) determineNextResync(now time.Time) { + p.resyncLock.Lock() + defer p.resyncLock.Unlock() + + p.nextResync = now.Add(p.resyncPeriod) +} + +func (p *processorListener) setResyncPeriod(resyncPeriod time.Duration) { + p.resyncLock.Lock() + defer p.resyncLock.Unlock() + + p.resyncPeriod = resyncPeriod +} diff --git a/vendor/k8s.io/client-go/tools/cache/shared_informer_test.go b/vendor/k8s.io/client-go/tools/cache/shared_informer_test.go new file mode 100644 index 000000000..216ba923c --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/shared_informer_test.go @@ -0,0 +1,253 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "sync" + "testing" + "time" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/pkg/api/v1" + fcache "k8s.io/client-go/tools/cache/testing" +) + +type testListener struct { + lock sync.RWMutex + resyncPeriod time.Duration + expectedItemNames sets.String + receivedItemNames []string + name string +} + +func newTestListener(name string, resyncPeriod time.Duration, expected ...string) *testListener { + l := &testListener{ + resyncPeriod: resyncPeriod, + expectedItemNames: sets.NewString(expected...), + name: name, + } + return l +} + +func (l *testListener) OnAdd(obj interface{}) { + l.handle(obj) +} + +func (l *testListener) OnUpdate(old, new interface{}) { + l.handle(new) +} + +func (l *testListener) OnDelete(obj interface{}) { +} + +func (l *testListener) handle(obj interface{}) { + key, _ := MetaNamespaceKeyFunc(obj) + fmt.Printf("%s: handle: %v\n", l.name, key) + l.lock.Lock() + defer l.lock.Unlock() + + objectMeta, _ := meta.Accessor(obj) + l.receivedItemNames = append(l.receivedItemNames, objectMeta.GetName()) +} + +func (l *testListener) ok() bool { + fmt.Println("polling") + err := wait.PollImmediate(100*time.Millisecond, 2*time.Second, func() (bool, error) { + if l.satisfiedExpectations() { + return true, nil + } + return false, nil + }) + if err != nil { + return false + } + + // wait just a bit to allow any unexpected stragglers to come in + fmt.Println("sleeping") + time.Sleep(1 * time.Second) + fmt.Println("final check") + return l.satisfiedExpectations() +} + +func (l *testListener) satisfiedExpectations() bool { + l.lock.RLock() + defer l.lock.RUnlock() + + return len(l.receivedItemNames) == l.expectedItemNames.Len() && sets.NewString(l.receivedItemNames...).Equal(l.expectedItemNames) +} + +func TestListenerResyncPeriods(t *testing.T) { + // source simulates an apiserver object endpoint. + source := fcache.NewFakeControllerSource() + source.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod1"}}) + source.Add(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "pod2"}}) + + // create the shared informer and resync every 1s + informer := NewSharedInformer(source, &v1.Pod{}, 1*time.Second).(*sharedIndexInformer) + + clock := clock.NewFakeClock(time.Now()) + informer.clock = clock + informer.processor.clock = clock + + // listener 1, never resync + listener1 := newTestListener("listener1", 0, "pod1", "pod2") + informer.AddEventHandlerWithResyncPeriod(listener1, listener1.resyncPeriod) + + // listener 2, resync every 2s + listener2 := newTestListener("listener2", 2*time.Second, "pod1", "pod2") + informer.AddEventHandlerWithResyncPeriod(listener2, listener2.resyncPeriod) + + // listener 3, resync every 3s + listener3 := newTestListener("listener3", 3*time.Second, "pod1", "pod2") + informer.AddEventHandlerWithResyncPeriod(listener3, listener3.resyncPeriod) + listeners := []*testListener{listener1, listener2, listener3} + + stop := make(chan struct{}) + defer close(stop) + + go informer.Run(stop) + + // ensure all listeners got the initial List + for _, listener := range listeners { + if !listener.ok() { + t.Errorf("%s: expected %v, got %v", listener.name, listener.expectedItemNames, listener.receivedItemNames) + } + } + + // reset + for _, listener := range listeners { + listener.receivedItemNames = []string{} + } + + // advance so listener2 gets a resync + clock.Step(2 * time.Second) + + // make sure listener2 got the resync + if !listener2.ok() { + t.Errorf("%s: expected %v, got %v", listener2.name, listener2.expectedItemNames, listener2.receivedItemNames) + } + + // wait a bit to give errant items a chance to go to 1 and 3 + time.Sleep(1 * time.Second) + + // make sure listeners 1 and 3 got nothing + if len(listener1.receivedItemNames) != 0 { + t.Errorf("listener1: should not have resynced (got %d)", len(listener1.receivedItemNames)) + } + if len(listener3.receivedItemNames) != 0 { + t.Errorf("listener3: should not have resynced (got %d)", len(listener3.receivedItemNames)) + } + + // reset + for _, listener := range listeners { + listener.receivedItemNames = []string{} + } + + // advance so listener3 gets a resync + clock.Step(1 * time.Second) + + // make sure listener3 got the resync + if !listener3.ok() { + t.Errorf("%s: expected %v, got %v", listener3.name, listener3.expectedItemNames, listener3.receivedItemNames) + } + + // wait a bit to give errant items a chance to go to 1 and 2 + time.Sleep(1 * time.Second) + + // make sure listeners 1 and 2 got nothing + if len(listener1.receivedItemNames) != 0 { + t.Errorf("listener1: should not have resynced (got %d)", len(listener1.receivedItemNames)) + } + if len(listener2.receivedItemNames) != 0 { + t.Errorf("listener2: should not have resynced (got %d)", len(listener2.receivedItemNames)) + } +} + +func TestResyncCheckPeriod(t *testing.T) { + // source simulates an apiserver object endpoint. + source := fcache.NewFakeControllerSource() + + // create the shared informer and resync every 12 hours + informer := NewSharedInformer(source, &v1.Pod{}, 12*time.Hour).(*sharedIndexInformer) + + clock := clock.NewFakeClock(time.Now()) + informer.clock = clock + informer.processor.clock = clock + + // listener 1, never resync + listener1 := newTestListener("listener1", 0) + informer.AddEventHandlerWithResyncPeriod(listener1, listener1.resyncPeriod) + if e, a := 12*time.Hour, informer.resyncCheckPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := time.Duration(0), informer.processor.listeners[0].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + + // listener 2, resync every minute + listener2 := newTestListener("listener2", 1*time.Minute) + informer.AddEventHandlerWithResyncPeriod(listener2, listener2.resyncPeriod) + if e, a := 1*time.Minute, informer.resyncCheckPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := time.Duration(0), informer.processor.listeners[0].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := 1*time.Minute, informer.processor.listeners[1].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + + // listener 3, resync every 55 seconds + listener3 := newTestListener("listener3", 55*time.Second) + informer.AddEventHandlerWithResyncPeriod(listener3, listener3.resyncPeriod) + if e, a := 55*time.Second, informer.resyncCheckPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := time.Duration(0), informer.processor.listeners[0].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := 1*time.Minute, informer.processor.listeners[1].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := 55*time.Second, informer.processor.listeners[2].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + + // listener 4, resync every 5 seconds + listener4 := newTestListener("listener4", 5*time.Second) + informer.AddEventHandlerWithResyncPeriod(listener4, listener4.resyncPeriod) + if e, a := 5*time.Second, informer.resyncCheckPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := time.Duration(0), informer.processor.listeners[0].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := 1*time.Minute, informer.processor.listeners[1].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := 55*time.Second, informer.processor.listeners[2].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } + if e, a := 5*time.Second, informer.processor.listeners[3].resyncPeriod; e != a { + t.Errorf("expected %d, got %d", e, a) + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/store.go b/vendor/k8s.io/client-go/tools/cache/store.go new file mode 100755 index 000000000..4958987f0 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/store.go @@ -0,0 +1,244 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "strings" + + "k8s.io/apimachinery/pkg/api/meta" +) + +// Store is a generic object storage interface. Reflector knows how to watch a server +// and update a store. A generic store is provided, which allows Reflector to be used +// as a local caching system, and an LRU store, which allows Reflector to work like a +// queue of items yet to be processed. +// +// Store makes no assumptions about stored object identity; it is the responsibility +// of a Store implementation to provide a mechanism to correctly key objects and to +// define the contract for obtaining objects by some arbitrary key type. +type Store interface { + Add(obj interface{}) error + Update(obj interface{}) error + Delete(obj interface{}) error + List() []interface{} + ListKeys() []string + Get(obj interface{}) (item interface{}, exists bool, err error) + GetByKey(key string) (item interface{}, exists bool, err error) + + // Replace will delete the contents of the store, using instead the + // given list. Store takes ownership of the list, you should not reference + // it after calling this function. + Replace([]interface{}, string) error + Resync() error +} + +// KeyFunc knows how to make a key from an object. Implementations should be deterministic. +type KeyFunc func(obj interface{}) (string, error) + +// KeyError will be returned any time a KeyFunc gives an error; it includes the object +// at fault. +type KeyError struct { + Obj interface{} + Err error +} + +// Error gives a human-readable description of the error. +func (k KeyError) Error() string { + return fmt.Sprintf("couldn't create key for object %+v: %v", k.Obj, k.Err) +} + +// ExplicitKey can be passed to MetaNamespaceKeyFunc if you have the key for +// the object but not the object itself. +type ExplicitKey string + +// MetaNamespaceKeyFunc is a convenient default KeyFunc which knows how to make +// keys for API objects which implement meta.Interface. +// The key uses the format / unless is empty, then +// it's just . +// +// TODO: replace key-as-string with a key-as-struct so that this +// packing/unpacking won't be necessary. +func MetaNamespaceKeyFunc(obj interface{}) (string, error) { + if key, ok := obj.(ExplicitKey); ok { + return string(key), nil + } + meta, err := meta.Accessor(obj) + if err != nil { + return "", fmt.Errorf("object has no meta: %v", err) + } + if len(meta.GetNamespace()) > 0 { + return meta.GetNamespace() + "/" + meta.GetName(), nil + } + return meta.GetName(), nil +} + +// SplitMetaNamespaceKey returns the namespace and name that +// MetaNamespaceKeyFunc encoded into key. +// +// TODO: replace key-as-string with a key-as-struct so that this +// packing/unpacking won't be necessary. +func SplitMetaNamespaceKey(key string) (namespace, name string, err error) { + parts := strings.Split(key, "/") + switch len(parts) { + case 1: + // name only, no namespace + return "", parts[0], nil + case 2: + // namespace and name + return parts[0], parts[1], nil + } + + return "", "", fmt.Errorf("unexpected key format: %q", key) +} + +// cache responsibilities are limited to: +// 1. Computing keys for objects via keyFunc +// 2. Invoking methods of a ThreadSafeStorage interface +type cache struct { + // cacheStorage bears the burden of thread safety for the cache + cacheStorage ThreadSafeStore + // keyFunc is used to make the key for objects stored in and retrieved from items, and + // should be deterministic. + keyFunc KeyFunc +} + +var _ Store = &cache{} + +// Add inserts an item into the cache. +func (c *cache) Add(obj interface{}) error { + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Add(key, obj) + return nil +} + +// Update sets an item in the cache to its updated state. +func (c *cache) Update(obj interface{}) error { + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Update(key, obj) + return nil +} + +// Delete removes an item from the cache. +func (c *cache) Delete(obj interface{}) error { + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Delete(key) + return nil +} + +// List returns a list of all the items. +// List is completely threadsafe as long as you treat all items as immutable. +func (c *cache) List() []interface{} { + return c.cacheStorage.List() +} + +// ListKeys returns a list of all the keys of the objects currently +// in the cache. +func (c *cache) ListKeys() []string { + return c.cacheStorage.ListKeys() +} + +// GetIndexers returns the indexers of cache +func (c *cache) GetIndexers() Indexers { + return c.cacheStorage.GetIndexers() +} + +// Index returns a list of items that match on the index function +// Index is thread-safe so long as you treat all items as immutable +func (c *cache) Index(indexName string, obj interface{}) ([]interface{}, error) { + return c.cacheStorage.Index(indexName, obj) +} + +func (c *cache) IndexKeys(indexName, indexKey string) ([]string, error) { + return c.cacheStorage.IndexKeys(indexName, indexKey) +} + +// ListIndexFuncValues returns the list of generated values of an Index func +func (c *cache) ListIndexFuncValues(indexName string) []string { + return c.cacheStorage.ListIndexFuncValues(indexName) +} + +func (c *cache) ByIndex(indexName, indexKey string) ([]interface{}, error) { + return c.cacheStorage.ByIndex(indexName, indexKey) +} + +func (c *cache) AddIndexers(newIndexers Indexers) error { + return c.cacheStorage.AddIndexers(newIndexers) +} + +// Get returns the requested item, or sets exists=false. +// Get is completely threadsafe as long as you treat all items as immutable. +func (c *cache) Get(obj interface{}) (item interface{}, exists bool, err error) { + key, err := c.keyFunc(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + return c.GetByKey(key) +} + +// GetByKey returns the request item, or exists=false. +// GetByKey is completely threadsafe as long as you treat all items as immutable. +func (c *cache) GetByKey(key string) (item interface{}, exists bool, err error) { + item, exists = c.cacheStorage.Get(key) + return item, exists, nil +} + +// Replace will delete the contents of 'c', using instead the given list. +// 'c' takes ownership of the list, you should not reference the list again +// after calling this function. +func (c *cache) Replace(list []interface{}, resourceVersion string) error { + items := map[string]interface{}{} + for _, item := range list { + key, err := c.keyFunc(item) + if err != nil { + return KeyError{item, err} + } + items[key] = item + } + c.cacheStorage.Replace(items, resourceVersion) + return nil +} + +// Resync touches all items in the store to force processing +func (c *cache) Resync() error { + return c.cacheStorage.Resync() +} + +// NewStore returns a Store implemented simply with a map and a lock. +func NewStore(keyFunc KeyFunc) Store { + return &cache{ + cacheStorage: NewThreadSafeStore(Indexers{}, Indices{}), + keyFunc: keyFunc, + } +} + +// NewIndexer returns an Indexer implemented simply with a map and a lock. +func NewIndexer(keyFunc KeyFunc, indexers Indexers) Indexer { + return &cache{ + cacheStorage: NewThreadSafeStore(indexers, Indices{}), + keyFunc: keyFunc, + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/store_test.go b/vendor/k8s.io/client-go/tools/cache/store_test.go new file mode 100644 index 000000000..52c9585a9 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/store_test.go @@ -0,0 +1,156 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "testing" + + "k8s.io/apimachinery/pkg/util/sets" +) + +// Test public interface +func doTestStore(t *testing.T, store Store) { + mkObj := func(id string, val string) testStoreObject { + return testStoreObject{id: id, val: val} + } + + store.Add(mkObj("foo", "bar")) + if item, ok, _ := store.Get(mkObj("foo", "")); !ok { + t.Errorf("didn't find inserted item") + } else { + if e, a := "bar", item.(testStoreObject).val; e != a { + t.Errorf("expected %v, got %v", e, a) + } + } + store.Update(mkObj("foo", "baz")) + if item, ok, _ := store.Get(mkObj("foo", "")); !ok { + t.Errorf("didn't find inserted item") + } else { + if e, a := "baz", item.(testStoreObject).val; e != a { + t.Errorf("expected %v, got %v", e, a) + } + } + store.Delete(mkObj("foo", "")) + if _, ok, _ := store.Get(mkObj("foo", "")); ok { + t.Errorf("found deleted item??") + } + + // Test List. + store.Add(mkObj("a", "b")) + store.Add(mkObj("c", "d")) + store.Add(mkObj("e", "e")) + { + found := sets.String{} + for _, item := range store.List() { + found.Insert(item.(testStoreObject).val) + } + if !found.HasAll("b", "d", "e") { + t.Errorf("missing items, found: %v", found) + } + if len(found) != 3 { + t.Errorf("extra items") + } + } + + // Test Replace. + store.Replace([]interface{}{ + mkObj("foo", "foo"), + mkObj("bar", "bar"), + }, "0") + + { + found := sets.String{} + for _, item := range store.List() { + found.Insert(item.(testStoreObject).val) + } + if !found.HasAll("foo", "bar") { + t.Errorf("missing items") + } + if len(found) != 2 { + t.Errorf("extra items") + } + } +} + +// Test public interface +func doTestIndex(t *testing.T, indexer Indexer) { + mkObj := func(id string, val string) testStoreObject { + return testStoreObject{id: id, val: val} + } + + // Test Index + expected := map[string]sets.String{} + expected["b"] = sets.NewString("a", "c") + expected["f"] = sets.NewString("e") + expected["h"] = sets.NewString("g") + indexer.Add(mkObj("a", "b")) + indexer.Add(mkObj("c", "b")) + indexer.Add(mkObj("e", "f")) + indexer.Add(mkObj("g", "h")) + { + for k, v := range expected { + found := sets.String{} + indexResults, err := indexer.Index("by_val", mkObj("", k)) + if err != nil { + t.Errorf("Unexpected error %v", err) + } + for _, item := range indexResults { + found.Insert(item.(testStoreObject).id) + } + items := v.List() + if !found.HasAll(items...) { + t.Errorf("missing items, index %s, expected %v but found %v", k, items, found.List()) + } + } + } +} + +func testStoreKeyFunc(obj interface{}) (string, error) { + return obj.(testStoreObject).id, nil +} + +func testStoreIndexFunc(obj interface{}) ([]string, error) { + return []string{obj.(testStoreObject).val}, nil +} + +func testStoreIndexers() Indexers { + indexers := Indexers{} + indexers["by_val"] = testStoreIndexFunc + return indexers +} + +type testStoreObject struct { + id string + val string +} + +func TestCache(t *testing.T) { + doTestStore(t, NewStore(testStoreKeyFunc)) +} + +func TestFIFOCache(t *testing.T) { + doTestStore(t, NewFIFO(testStoreKeyFunc)) +} + +func TestUndeltaStore(t *testing.T) { + nop := func([]interface{}) {} + doTestStore(t, NewUndeltaStore(nop, testStoreKeyFunc)) +} + +func TestIndex(t *testing.T) { + doTestIndex(t, NewIndexer(testStoreKeyFunc, testStoreIndexers())) +} diff --git a/vendor/k8s.io/client-go/tools/cache/testing/BUILD b/vendor/k8s.io/client-go/tools/cache/testing/BUILD new file mode 100644 index 000000000..26c42dce3 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/testing/BUILD @@ -0,0 +1,36 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["fake_controller_source_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["fake_controller_source.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source.go b/vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source.go new file mode 100644 index 000000000..fd06fc89c --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source.go @@ -0,0 +1,264 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package framework + +import ( + "errors" + "math/rand" + "strconv" + "sync" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" +) + +func NewFakeControllerSource() *FakeControllerSource { + return &FakeControllerSource{ + Items: map[nnu]runtime.Object{}, + Broadcaster: watch.NewBroadcaster(100, watch.WaitIfChannelFull), + } +} + +func NewFakePVControllerSource() *FakePVControllerSource { + return &FakePVControllerSource{ + FakeControllerSource{ + Items: map[nnu]runtime.Object{}, + Broadcaster: watch.NewBroadcaster(100, watch.WaitIfChannelFull), + }} +} + +func NewFakePVCControllerSource() *FakePVCControllerSource { + return &FakePVCControllerSource{ + FakeControllerSource{ + Items: map[nnu]runtime.Object{}, + Broadcaster: watch.NewBroadcaster(100, watch.WaitIfChannelFull), + }} +} + +// FakeControllerSource implements listing/watching for testing. +type FakeControllerSource struct { + lock sync.RWMutex + Items map[nnu]runtime.Object + changes []watch.Event // one change per resourceVersion + Broadcaster *watch.Broadcaster +} + +type FakePVControllerSource struct { + FakeControllerSource +} + +type FakePVCControllerSource struct { + FakeControllerSource +} + +// namespace, name, uid to be used as a key. +type nnu struct { + namespace, name string + uid types.UID +} + +// Add adds an object to the set and sends an add event to watchers. +// obj's ResourceVersion is set. +func (f *FakeControllerSource) Add(obj runtime.Object) { + f.Change(watch.Event{Type: watch.Added, Object: obj}, 1) +} + +// Modify updates an object in the set and sends a modified event to watchers. +// obj's ResourceVersion is set. +func (f *FakeControllerSource) Modify(obj runtime.Object) { + f.Change(watch.Event{Type: watch.Modified, Object: obj}, 1) +} + +// Delete deletes an object from the set and sends a delete event to watchers. +// obj's ResourceVersion is set. +func (f *FakeControllerSource) Delete(lastValue runtime.Object) { + f.Change(watch.Event{Type: watch.Deleted, Object: lastValue}, 1) +} + +// AddDropWatch adds an object to the set but forgets to send an add event to +// watchers. +// obj's ResourceVersion is set. +func (f *FakeControllerSource) AddDropWatch(obj runtime.Object) { + f.Change(watch.Event{Type: watch.Added, Object: obj}, 0) +} + +// ModifyDropWatch updates an object in the set but forgets to send a modify +// event to watchers. +// obj's ResourceVersion is set. +func (f *FakeControllerSource) ModifyDropWatch(obj runtime.Object) { + f.Change(watch.Event{Type: watch.Modified, Object: obj}, 0) +} + +// DeleteDropWatch deletes an object from the set but forgets to send a delete +// event to watchers. +// obj's ResourceVersion is set. +func (f *FakeControllerSource) DeleteDropWatch(lastValue runtime.Object) { + f.Change(watch.Event{Type: watch.Deleted, Object: lastValue}, 0) +} + +func (f *FakeControllerSource) key(accessor metav1.Object) nnu { + return nnu{accessor.GetNamespace(), accessor.GetName(), accessor.GetUID()} +} + +// Change records the given event (setting the object's resource version) and +// sends a watch event with the specified probability. +func (f *FakeControllerSource) Change(e watch.Event, watchProbability float64) { + f.lock.Lock() + defer f.lock.Unlock() + + accessor, err := meta.Accessor(e.Object) + if err != nil { + panic(err) // this is test code only + } + + resourceVersion := len(f.changes) + 1 + accessor.SetResourceVersion(strconv.Itoa(resourceVersion)) + f.changes = append(f.changes, e) + key := f.key(accessor) + switch e.Type { + case watch.Added, watch.Modified: + f.Items[key] = e.Object + case watch.Deleted: + delete(f.Items, key) + } + + if rand.Float64() < watchProbability { + f.Broadcaster.Action(e.Type, e.Object) + } +} + +func (f *FakeControllerSource) getListItemsLocked() ([]runtime.Object, error) { + list := make([]runtime.Object, 0, len(f.Items)) + for _, obj := range f.Items { + // Must make a copy to allow clients to modify the object. + // Otherwise, if they make a change and write it back, they + // will inadvertently change our canonical copy (in + // addition to racing with other clients). + objCopy, err := scheme.Scheme.DeepCopy(obj) + if err != nil { + return nil, err + } + list = append(list, objCopy.(runtime.Object)) + } + return list, nil +} + +// List returns a list object, with its resource version set. +func (f *FakeControllerSource) List(options metav1.ListOptions) (runtime.Object, error) { + f.lock.RLock() + defer f.lock.RUnlock() + list, err := f.getListItemsLocked() + if err != nil { + return nil, err + } + listObj := &v1.List{} + if err := meta.SetList(listObj, list); err != nil { + return nil, err + } + listAccessor, err := meta.ListAccessor(listObj) + if err != nil { + return nil, err + } + resourceVersion := len(f.changes) + listAccessor.SetResourceVersion(strconv.Itoa(resourceVersion)) + return listObj, nil +} + +// List returns a list object, with its resource version set. +func (f *FakePVControllerSource) List(options metav1.ListOptions) (runtime.Object, error) { + f.lock.RLock() + defer f.lock.RUnlock() + list, err := f.FakeControllerSource.getListItemsLocked() + if err != nil { + return nil, err + } + listObj := &v1.PersistentVolumeList{} + if err := meta.SetList(listObj, list); err != nil { + return nil, err + } + listAccessor, err := meta.ListAccessor(listObj) + if err != nil { + return nil, err + } + resourceVersion := len(f.changes) + listAccessor.SetResourceVersion(strconv.Itoa(resourceVersion)) + return listObj, nil +} + +// List returns a list object, with its resource version set. +func (f *FakePVCControllerSource) List(options metav1.ListOptions) (runtime.Object, error) { + f.lock.RLock() + defer f.lock.RUnlock() + list, err := f.FakeControllerSource.getListItemsLocked() + if err != nil { + return nil, err + } + listObj := &v1.PersistentVolumeClaimList{} + if err := meta.SetList(listObj, list); err != nil { + return nil, err + } + listAccessor, err := meta.ListAccessor(listObj) + if err != nil { + return nil, err + } + resourceVersion := len(f.changes) + listAccessor.SetResourceVersion(strconv.Itoa(resourceVersion)) + return listObj, nil +} + +// Watch returns a watch, which will be pre-populated with all changes +// after resourceVersion. +func (f *FakeControllerSource) Watch(options metav1.ListOptions) (watch.Interface, error) { + f.lock.RLock() + defer f.lock.RUnlock() + rc, err := strconv.Atoi(options.ResourceVersion) + if err != nil { + return nil, err + } + if rc < len(f.changes) { + changes := []watch.Event{} + for _, c := range f.changes[rc:] { + // Must make a copy to allow clients to modify the + // object. Otherwise, if they make a change and write + // it back, they will inadvertently change the our + // canonical copy (in addition to racing with other + // clients). + objCopy, err := scheme.Scheme.DeepCopy(c.Object) + if err != nil { + return nil, err + } + changes = append(changes, watch.Event{Type: c.Type, Object: objCopy.(runtime.Object)}) + } + return f.Broadcaster.WatchWithPrefix(changes), nil + } else if rc > len(f.changes) { + return nil, errors.New("resource version in the future not supported by this fake") + } + return f.Broadcaster.Watch(), nil +} + +// Shutdown closes the underlying broadcaster, waiting for events to be +// delivered. It's an error to call any method after calling shutdown. This is +// enforced by Shutdown() leaving f locked. +func (f *FakeControllerSource) Shutdown() { + f.lock.Lock() // Purposely no unlock. + f.Broadcaster.Shutdown() +} diff --git a/vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source_test.go b/vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source_test.go new file mode 100644 index 000000000..2a03171c6 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/testing/fake_controller_source_test.go @@ -0,0 +1,95 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package framework + +import ( + "sync" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/pkg/api/v1" +) + +// ensure the watch delivers the requested and only the requested items. +func consume(t *testing.T, w watch.Interface, rvs []string, done *sync.WaitGroup) { + defer done.Done() + for _, rv := range rvs { + got, ok := <-w.ResultChan() + if !ok { + t.Errorf("%#v: unexpected channel close, wanted %v", rvs, rv) + return + } + gotRV := got.Object.(*v1.Pod).ObjectMeta.ResourceVersion + if e, a := rv, gotRV; e != a { + t.Errorf("wanted %v, got %v", e, a) + } else { + t.Logf("Got %v as expected", gotRV) + } + } + // We should not get anything else. + got, open := <-w.ResultChan() + if open { + t.Errorf("%#v: unwanted object %#v", rvs, got) + } +} + +func TestRCNumber(t *testing.T) { + pod := func(name string) *v1.Pod { + return &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + }, + } + } + + wg := &sync.WaitGroup{} + wg.Add(3) + + source := NewFakeControllerSource() + source.Add(pod("foo")) + source.Modify(pod("foo")) + source.Modify(pod("foo")) + + w, err := source.Watch(metav1.ListOptions{ResourceVersion: "1"}) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + go consume(t, w, []string{"2", "3"}, wg) + + list, err := source.List(metav1.ListOptions{}) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + if e, a := "3", list.(*v1.List).ResourceVersion; e != a { + t.Errorf("wanted %v, got %v", e, a) + } + + w2, err := source.Watch(metav1.ListOptions{ResourceVersion: "2"}) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + go consume(t, w2, []string{"3"}, wg) + + w3, err := source.Watch(metav1.ListOptions{ResourceVersion: "3"}) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + go consume(t, w3, []string{}, wg) + source.Shutdown() + wg.Wait() +} diff --git a/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go b/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go new file mode 100644 index 000000000..4eb350c43 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/thread_safe_store.go @@ -0,0 +1,306 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "sync" + + "k8s.io/apimachinery/pkg/util/sets" +) + +// ThreadSafeStore is an interface that allows concurrent access to a storage backend. +// TL;DR caveats: you must not modify anything returned by Get or List as it will break +// the indexing feature in addition to not being thread safe. +// +// The guarantees of thread safety provided by List/Get are only valid if the caller +// treats returned items as read-only. For example, a pointer inserted in the store +// through `Add` will be returned as is by `Get`. Multiple clients might invoke `Get` +// on the same key and modify the pointer in a non-thread-safe way. Also note that +// modifying objects stored by the indexers (if any) will *not* automatically lead +// to a re-index. So it's not a good idea to directly modify the objects returned by +// Get/List, in general. +type ThreadSafeStore interface { + Add(key string, obj interface{}) + Update(key string, obj interface{}) + Delete(key string) + Get(key string) (item interface{}, exists bool) + List() []interface{} + ListKeys() []string + Replace(map[string]interface{}, string) + Index(indexName string, obj interface{}) ([]interface{}, error) + IndexKeys(indexName, indexKey string) ([]string, error) + ListIndexFuncValues(name string) []string + ByIndex(indexName, indexKey string) ([]interface{}, error) + GetIndexers() Indexers + + // AddIndexers adds more indexers to this store. If you call this after you already have data + // in the store, the results are undefined. + AddIndexers(newIndexers Indexers) error + Resync() error +} + +// threadSafeMap implements ThreadSafeStore +type threadSafeMap struct { + lock sync.RWMutex + items map[string]interface{} + + // indexers maps a name to an IndexFunc + indexers Indexers + // indices maps a name to an Index + indices Indices +} + +func (c *threadSafeMap) Add(key string, obj interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + oldObject := c.items[key] + c.items[key] = obj + c.updateIndices(oldObject, obj, key) +} + +func (c *threadSafeMap) Update(key string, obj interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + oldObject := c.items[key] + c.items[key] = obj + c.updateIndices(oldObject, obj, key) +} + +func (c *threadSafeMap) Delete(key string) { + c.lock.Lock() + defer c.lock.Unlock() + if obj, exists := c.items[key]; exists { + c.deleteFromIndices(obj, key) + delete(c.items, key) + } +} + +func (c *threadSafeMap) Get(key string) (item interface{}, exists bool) { + c.lock.RLock() + defer c.lock.RUnlock() + item, exists = c.items[key] + return item, exists +} + +func (c *threadSafeMap) List() []interface{} { + c.lock.RLock() + defer c.lock.RUnlock() + list := make([]interface{}, 0, len(c.items)) + for _, item := range c.items { + list = append(list, item) + } + return list +} + +// ListKeys returns a list of all the keys of the objects currently +// in the threadSafeMap. +func (c *threadSafeMap) ListKeys() []string { + c.lock.RLock() + defer c.lock.RUnlock() + list := make([]string, 0, len(c.items)) + for key := range c.items { + list = append(list, key) + } + return list +} + +func (c *threadSafeMap) Replace(items map[string]interface{}, resourceVersion string) { + c.lock.Lock() + defer c.lock.Unlock() + c.items = items + + // rebuild any index + c.indices = Indices{} + for key, item := range c.items { + c.updateIndices(nil, item, key) + } +} + +// Index returns a list of items that match on the index function +// Index is thread-safe so long as you treat all items as immutable +func (c *threadSafeMap) Index(indexName string, obj interface{}) ([]interface{}, error) { + c.lock.RLock() + defer c.lock.RUnlock() + + indexFunc := c.indexers[indexName] + if indexFunc == nil { + return nil, fmt.Errorf("Index with name %s does not exist", indexName) + } + + indexKeys, err := indexFunc(obj) + if err != nil { + return nil, err + } + index := c.indices[indexName] + + // need to de-dupe the return list. Since multiple keys are allowed, this can happen. + returnKeySet := sets.String{} + for _, indexKey := range indexKeys { + set := index[indexKey] + for _, key := range set.UnsortedList() { + returnKeySet.Insert(key) + } + } + + list := make([]interface{}, 0, returnKeySet.Len()) + for absoluteKey := range returnKeySet { + list = append(list, c.items[absoluteKey]) + } + return list, nil +} + +// ByIndex returns a list of items that match an exact value on the index function +func (c *threadSafeMap) ByIndex(indexName, indexKey string) ([]interface{}, error) { + c.lock.RLock() + defer c.lock.RUnlock() + + indexFunc := c.indexers[indexName] + if indexFunc == nil { + return nil, fmt.Errorf("Index with name %s does not exist", indexName) + } + + index := c.indices[indexName] + + set := index[indexKey] + list := make([]interface{}, 0, set.Len()) + for _, key := range set.List() { + list = append(list, c.items[key]) + } + + return list, nil +} + +// IndexKeys returns a list of keys that match on the index function. +// IndexKeys is thread-safe so long as you treat all items as immutable. +func (c *threadSafeMap) IndexKeys(indexName, indexKey string) ([]string, error) { + c.lock.RLock() + defer c.lock.RUnlock() + + indexFunc := c.indexers[indexName] + if indexFunc == nil { + return nil, fmt.Errorf("Index with name %s does not exist", indexName) + } + + index := c.indices[indexName] + + set := index[indexKey] + return set.List(), nil +} + +func (c *threadSafeMap) ListIndexFuncValues(indexName string) []string { + c.lock.RLock() + defer c.lock.RUnlock() + + index := c.indices[indexName] + names := make([]string, 0, len(index)) + for key := range index { + names = append(names, key) + } + return names +} + +func (c *threadSafeMap) GetIndexers() Indexers { + return c.indexers +} + +func (c *threadSafeMap) AddIndexers(newIndexers Indexers) error { + c.lock.Lock() + defer c.lock.Unlock() + + if len(c.items) > 0 { + return fmt.Errorf("cannot add indexers to running index") + } + + oldKeys := sets.StringKeySet(c.indexers) + newKeys := sets.StringKeySet(newIndexers) + + if oldKeys.HasAny(newKeys.List()...) { + return fmt.Errorf("indexer conflict: %v", oldKeys.Intersection(newKeys)) + } + + for k, v := range newIndexers { + c.indexers[k] = v + } + return nil +} + +// updateIndices modifies the objects location in the managed indexes, if this is an update, you must provide an oldObj +// updateIndices must be called from a function that already has a lock on the cache +func (c *threadSafeMap) updateIndices(oldObj interface{}, newObj interface{}, key string) error { + // if we got an old object, we need to remove it before we add it again + if oldObj != nil { + c.deleteFromIndices(oldObj, key) + } + for name, indexFunc := range c.indexers { + indexValues, err := indexFunc(newObj) + if err != nil { + return err + } + index := c.indices[name] + if index == nil { + index = Index{} + c.indices[name] = index + } + + for _, indexValue := range indexValues { + set := index[indexValue] + if set == nil { + set = sets.String{} + index[indexValue] = set + } + set.Insert(key) + } + } + return nil +} + +// deleteFromIndices removes the object from each of the managed indexes +// it is intended to be called from a function that already has a lock on the cache +func (c *threadSafeMap) deleteFromIndices(obj interface{}, key string) error { + for name, indexFunc := range c.indexers { + indexValues, err := indexFunc(obj) + if err != nil { + return err + } + + index := c.indices[name] + if index == nil { + continue + } + for _, indexValue := range indexValues { + set := index[indexValue] + if set != nil { + set.Delete(key) + } + } + } + return nil +} + +func (c *threadSafeMap) Resync() error { + // Nothing to do + return nil +} + +func NewThreadSafeStore(indexers Indexers, indices Indices) ThreadSafeStore { + return &threadSafeMap{ + items: map[string]interface{}{}, + indexers: indexers, + indices: indices, + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/undelta_store.go b/vendor/k8s.io/client-go/tools/cache/undelta_store.go new file mode 100644 index 000000000..117df46c4 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/undelta_store.go @@ -0,0 +1,83 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +// UndeltaStore listens to incremental updates and sends complete state on every change. +// It implements the Store interface so that it can receive a stream of mirrored objects +// from Reflector. Whenever it receives any complete (Store.Replace) or incremental change +// (Store.Add, Store.Update, Store.Delete), it sends the complete state by calling PushFunc. +// It is thread-safe. It guarantees that every change (Add, Update, Replace, Delete) results +// in one call to PushFunc, but sometimes PushFunc may be called twice with the same values. +// PushFunc should be thread safe. +type UndeltaStore struct { + Store + PushFunc func([]interface{}) +} + +// Assert that it implements the Store interface. +var _ Store = &UndeltaStore{} + +// Note about thread safety. The Store implementation (cache.cache) uses a lock for all methods. +// In the functions below, the lock gets released and reacquired betweend the {Add,Delete,etc} +// and the List. So, the following can happen, resulting in two identical calls to PushFunc. +// time thread 1 thread 2 +// 0 UndeltaStore.Add(a) +// 1 UndeltaStore.Add(b) +// 2 Store.Add(a) +// 3 Store.Add(b) +// 4 Store.List() -> [a,b] +// 5 Store.List() -> [a,b] + +func (u *UndeltaStore) Add(obj interface{}) error { + if err := u.Store.Add(obj); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +func (u *UndeltaStore) Update(obj interface{}) error { + if err := u.Store.Update(obj); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +func (u *UndeltaStore) Delete(obj interface{}) error { + if err := u.Store.Delete(obj); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +func (u *UndeltaStore) Replace(list []interface{}, resourceVersion string) error { + if err := u.Store.Replace(list, resourceVersion); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +// NewUndeltaStore returns an UndeltaStore implemented with a Store. +func NewUndeltaStore(pushFunc func([]interface{}), keyFunc KeyFunc) *UndeltaStore { + return &UndeltaStore{ + Store: NewStore(keyFunc), + PushFunc: pushFunc, + } +} diff --git a/vendor/k8s.io/client-go/tools/cache/undelta_store_test.go b/vendor/k8s.io/client-go/tools/cache/undelta_store_test.go new file mode 100644 index 000000000..6316442e6 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/cache/undelta_store_test.go @@ -0,0 +1,131 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "reflect" + "testing" +) + +// store_test.go checks that UndeltaStore conforms to the Store interface +// behavior. This test just tests that it calls the push func in addition. + +type testUndeltaObject struct { + name string + val interface{} +} + +func testUndeltaKeyFunc(obj interface{}) (string, error) { + return obj.(testUndeltaObject).name, nil +} + +/* +var ( + o1 interface{} = t{1} + o2 interface{} = t{2} + l1 []interface{} = []interface{}{t{1}} +) +*/ + +func TestUpdateCallsPush(t *testing.T) { + mkObj := func(name string, val interface{}) testUndeltaObject { + return testUndeltaObject{name: name, val: val} + } + + var got []interface{} + var callcount int = 0 + push := func(m []interface{}) { + callcount++ + got = m + } + + u := NewUndeltaStore(push, testUndeltaKeyFunc) + + u.Add(mkObj("a", 2)) + u.Update(mkObj("a", 1)) + if callcount != 2 { + t.Errorf("Expected 2 calls, got %d", callcount) + } + + l := []interface{}{mkObj("a", 1)} + if !reflect.DeepEqual(l, got) { + t.Errorf("Expected %#v, Got %#v", l, got) + } +} + +func TestDeleteCallsPush(t *testing.T) { + mkObj := func(name string, val interface{}) testUndeltaObject { + return testUndeltaObject{name: name, val: val} + } + + var got []interface{} + var callcount int = 0 + push := func(m []interface{}) { + callcount++ + got = m + } + + u := NewUndeltaStore(push, testUndeltaKeyFunc) + + u.Add(mkObj("a", 2)) + u.Delete(mkObj("a", "")) + if callcount != 2 { + t.Errorf("Expected 2 calls, got %d", callcount) + } + expected := []interface{}{} + if !reflect.DeepEqual(expected, got) { + t.Errorf("Expected %#v, Got %#v", expected, got) + } +} + +func TestReadsDoNotCallPush(t *testing.T) { + push := func(m []interface{}) { + t.Errorf("Unexpected call to push!") + } + + u := NewUndeltaStore(push, testUndeltaKeyFunc) + + // These should not call push. + _ = u.List() + _, _, _ = u.Get(testUndeltaObject{"a", ""}) +} + +func TestReplaceCallsPush(t *testing.T) { + mkObj := func(name string, val interface{}) testUndeltaObject { + return testUndeltaObject{name: name, val: val} + } + + var got []interface{} + var callcount int = 0 + push := func(m []interface{}) { + callcount++ + got = m + } + + u := NewUndeltaStore(push, testUndeltaKeyFunc) + + m := []interface{}{mkObj("a", 1)} + + u.Replace(m, "0") + if callcount != 1 { + t.Errorf("Expected 1 calls, got %d", callcount) + } + expected := []interface{}{mkObj("a", 1)} + if !reflect.DeepEqual(expected, got) { + t.Errorf("Expected %#v, Got %#v", expected, got) + } +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/BUILD b/vendor/k8s.io/client-go/tools/clientcmd/BUILD new file mode 100644 index 000000000..59df4b0dc --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/BUILD @@ -0,0 +1,62 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "client_config_test.go", + "loader_test.go", + "merged_client_builder_test.go", + "validation_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/github.com/ghodss/yaml:go_default_library", + "//vendor/github.com/imdario/mergo:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "auth_loaders.go", + "client_config.go", + "config.go", + "doc.go", + "helpers.go", + "loader.go", + "merged_client_builder.go", + "overrides.go", + "validation.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/github.com/howeyc/gopass:go_default_library", + "//vendor/github.com/imdario/mergo:go_default_library", + "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/validation:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/tools/auth:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library", + "//vendor/k8s.io/client-go/util/homedir:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD b/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD new file mode 100644 index 000000000..d82afcf37 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/BUILD @@ -0,0 +1,34 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "helpers_test.go", + "types_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/github.com/ghodss/yaml:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "helpers.go", + "register.go", + "types.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go new file mode 100644 index 000000000..43e26487c --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers.go @@ -0,0 +1,183 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "encoding/base64" + "errors" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" +) + +func init() { + sDec, _ := base64.StdEncoding.DecodeString("REDACTED+") + redactedBytes = []byte(string(sDec)) +} + +// IsConfigEmpty returns true if the config is empty. +func IsConfigEmpty(config *Config) bool { + return len(config.AuthInfos) == 0 && len(config.Clusters) == 0 && len(config.Contexts) == 0 && + len(config.CurrentContext) == 0 && + len(config.Preferences.Extensions) == 0 && !config.Preferences.Colors && + len(config.Extensions) == 0 +} + +// MinifyConfig read the current context and uses that to keep only the relevant pieces of config +// This is useful for making secrets based on kubeconfig files +func MinifyConfig(config *Config) error { + if len(config.CurrentContext) == 0 { + return errors.New("current-context must exist in order to minify") + } + + currContext, exists := config.Contexts[config.CurrentContext] + if !exists { + return fmt.Errorf("cannot locate context %v", config.CurrentContext) + } + + newContexts := map[string]*Context{} + newContexts[config.CurrentContext] = currContext + + newClusters := map[string]*Cluster{} + if len(currContext.Cluster) > 0 { + if _, exists := config.Clusters[currContext.Cluster]; !exists { + return fmt.Errorf("cannot locate cluster %v", currContext.Cluster) + } + + newClusters[currContext.Cluster] = config.Clusters[currContext.Cluster] + } + + newAuthInfos := map[string]*AuthInfo{} + if len(currContext.AuthInfo) > 0 { + if _, exists := config.AuthInfos[currContext.AuthInfo]; !exists { + return fmt.Errorf("cannot locate user %v", currContext.AuthInfo) + } + + newAuthInfos[currContext.AuthInfo] = config.AuthInfos[currContext.AuthInfo] + } + + config.AuthInfos = newAuthInfos + config.Clusters = newClusters + config.Contexts = newContexts + + return nil +} + +var redactedBytes []byte + +// Flatten redacts raw data entries from the config object for a human-readable view. +func ShortenConfig(config *Config) { + // trick json encoder into printing a human readable string in the raw data + // by base64 decoding what we want to print. Relies on implementation of + // http://golang.org/pkg/encoding/json/#Marshal using base64 to encode []byte + for key, authInfo := range config.AuthInfos { + if len(authInfo.ClientKeyData) > 0 { + authInfo.ClientKeyData = redactedBytes + } + if len(authInfo.ClientCertificateData) > 0 { + authInfo.ClientCertificateData = redactedBytes + } + config.AuthInfos[key] = authInfo + } + for key, cluster := range config.Clusters { + if len(cluster.CertificateAuthorityData) > 0 { + cluster.CertificateAuthorityData = redactedBytes + } + config.Clusters[key] = cluster + } +} + +// Flatten changes the config object into a self contained config (useful for making secrets) +func FlattenConfig(config *Config) error { + for key, authInfo := range config.AuthInfos { + baseDir, err := MakeAbs(path.Dir(authInfo.LocationOfOrigin), "") + if err != nil { + return err + } + + if err := FlattenContent(&authInfo.ClientCertificate, &authInfo.ClientCertificateData, baseDir); err != nil { + return err + } + if err := FlattenContent(&authInfo.ClientKey, &authInfo.ClientKeyData, baseDir); err != nil { + return err + } + + config.AuthInfos[key] = authInfo + } + for key, cluster := range config.Clusters { + baseDir, err := MakeAbs(path.Dir(cluster.LocationOfOrigin), "") + if err != nil { + return err + } + + if err := FlattenContent(&cluster.CertificateAuthority, &cluster.CertificateAuthorityData, baseDir); err != nil { + return err + } + + config.Clusters[key] = cluster + } + + return nil +} + +func FlattenContent(path *string, contents *[]byte, baseDir string) error { + if len(*path) != 0 { + if len(*contents) > 0 { + return errors.New("cannot have values for both path and contents") + } + + var err error + absPath := ResolvePath(*path, baseDir) + *contents, err = ioutil.ReadFile(absPath) + if err != nil { + return err + } + + *path = "" + } + + return nil +} + +// ResolvePath returns the path as an absolute paths, relative to the given base directory +func ResolvePath(path string, base string) string { + // Don't resolve empty paths + if len(path) > 0 { + // Don't resolve absolute paths + if !filepath.IsAbs(path) { + return filepath.Join(base, path) + } + } + + return path +} + +func MakeAbs(path, base string) (string, error) { + if filepath.IsAbs(path) { + return path, nil + } + if len(base) == 0 { + cwd, err := os.Getwd() + if err != nil { + return "", err + } + base = cwd + } + return filepath.Join(base, path), nil +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/helpers_test.go b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers_test.go new file mode 100644 index 000000000..430208456 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/helpers_test.go @@ -0,0 +1,301 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "fmt" + "io/ioutil" + "os" + "reflect" + "testing" + + "github.com/ghodss/yaml" +) + +func newMergedConfig(certFile, certContent, keyFile, keyContent, caFile, caContent string, t *testing.T) Config { + if err := ioutil.WriteFile(certFile, []byte(certContent), 0644); err != nil { + t.Errorf("unexpected error: %v", err) + } + if err := ioutil.WriteFile(keyFile, []byte(keyContent), 0600); err != nil { + t.Errorf("unexpected error: %v", err) + } + if err := ioutil.WriteFile(caFile, []byte(caContent), 0644); err != nil { + t.Errorf("unexpected error: %v", err) + } + + return Config{ + AuthInfos: map[string]*AuthInfo{ + "red-user": {Token: "red-token", ClientCertificateData: []byte(certContent), ClientKeyData: []byte(keyContent)}, + "blue-user": {Token: "blue-token", ClientCertificate: certFile, ClientKey: keyFile}}, + Clusters: map[string]*Cluster{ + "cow-cluster": {Server: "http://cow.org:8080", CertificateAuthorityData: []byte(caContent)}, + "chicken-cluster": {Server: "http://chicken.org:8080", CertificateAuthority: caFile}}, + Contexts: map[string]*Context{ + "federal-context": {AuthInfo: "red-user", Cluster: "cow-cluster"}, + "shaker-context": {AuthInfo: "blue-user", Cluster: "chicken-cluster"}}, + CurrentContext: "federal-context", + } +} + +func TestMinifySuccess(t *testing.T) { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) + + if err := MinifyConfig(&mutatingConfig); err != nil { + t.Errorf("unexpected error: %v", err) + } + + if len(mutatingConfig.Contexts) > 1 { + t.Errorf("unexpected contexts: %v", mutatingConfig.Contexts) + } + if _, exists := mutatingConfig.Contexts["federal-context"]; !exists { + t.Errorf("missing context") + } + + if len(mutatingConfig.Clusters) > 1 { + t.Errorf("unexpected clusters: %v", mutatingConfig.Clusters) + } + if _, exists := mutatingConfig.Clusters["cow-cluster"]; !exists { + t.Errorf("missing cluster") + } + + if len(mutatingConfig.AuthInfos) > 1 { + t.Errorf("unexpected users: %v", mutatingConfig.AuthInfos) + } + if _, exists := mutatingConfig.AuthInfos["red-user"]; !exists { + t.Errorf("missing user") + } +} + +func TestMinifyMissingContext(t *testing.T) { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) + mutatingConfig.CurrentContext = "missing" + + errMsg := "cannot locate context missing" + + if err := MinifyConfig(&mutatingConfig); err == nil || err.Error() != errMsg { + t.Errorf("expected %v, got %v", errMsg, err) + } +} + +func TestMinifyMissingCluster(t *testing.T) { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) + delete(mutatingConfig.Clusters, mutatingConfig.Contexts[mutatingConfig.CurrentContext].Cluster) + + errMsg := "cannot locate cluster cow-cluster" + + if err := MinifyConfig(&mutatingConfig); err == nil || err.Error() != errMsg { + t.Errorf("expected %v, got %v", errMsg, err) + } +} + +func TestMinifyMissingAuthInfo(t *testing.T) { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t) + delete(mutatingConfig.AuthInfos, mutatingConfig.Contexts[mutatingConfig.CurrentContext].AuthInfo) + + errMsg := "cannot locate user red-user" + + if err := MinifyConfig(&mutatingConfig); err == nil || err.Error() != errMsg { + t.Errorf("expected %v, got %v", errMsg, err) + } +} + +func TestFlattenSuccess(t *testing.T) { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + certData := "cert" + keyData := "key" + caData := "ca" + + unchangingCluster := "cow-cluster" + unchangingAuthInfo := "red-user" + changingCluster := "chicken-cluster" + changingAuthInfo := "blue-user" + + startingConfig := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, t) + mutatingConfig := startingConfig + + if err := FlattenConfig(&mutatingConfig); err != nil { + t.Errorf("unexpected error: %v", err) + } + + if len(mutatingConfig.Contexts) != 2 { + t.Errorf("unexpected contexts: %v", mutatingConfig.Contexts) + } + if !reflect.DeepEqual(startingConfig.Contexts, mutatingConfig.Contexts) { + t.Errorf("expected %v, got %v", startingConfig.Contexts, mutatingConfig.Contexts) + } + + if len(mutatingConfig.Clusters) != 2 { + t.Errorf("unexpected clusters: %v", mutatingConfig.Clusters) + } + if !reflect.DeepEqual(startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster]) { + t.Errorf("expected %v, got %v", startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster]) + } + if len(mutatingConfig.Clusters[changingCluster].CertificateAuthority) != 0 { + t.Errorf("unexpected caFile") + } + if string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData) != caData { + t.Errorf("expected %v, got %v", caData, string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData)) + } + + if len(mutatingConfig.AuthInfos) != 2 { + t.Errorf("unexpected users: %v", mutatingConfig.AuthInfos) + } + if !reflect.DeepEqual(startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo]) { + t.Errorf("expected %v, got %v", startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo]) + } + if len(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificate) != 0 { + t.Errorf("unexpected caFile") + } + if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData) != certData { + t.Errorf("expected %v, got %v", certData, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData)) + } + if len(mutatingConfig.AuthInfos[changingAuthInfo].ClientKey) != 0 { + t.Errorf("unexpected caFile") + } + if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData) != keyData { + t.Errorf("expected %v, got %v", keyData, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData)) + } + +} + +func Example_minifyAndShorten() { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + certData := "cert" + keyData := "key" + caData := "ca" + + config := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, nil) + + MinifyConfig(&config) + ShortenConfig(&config) + + output, _ := yaml.Marshal(config) + fmt.Printf("%s", string(output)) + // Output: + // clusters: + // cow-cluster: + // LocationOfOrigin: "" + // certificate-authority-data: REDACTED + // server: http://cow.org:8080 + // contexts: + // federal-context: + // LocationOfOrigin: "" + // cluster: cow-cluster + // user: red-user + // current-context: federal-context + // preferences: {} + // users: + // red-user: + // LocationOfOrigin: "" + // client-certificate-data: REDACTED + // client-key-data: REDACTED + // token: red-token +} + +func TestShortenSuccess(t *testing.T) { + certFile, _ := ioutil.TempFile("", "") + defer os.Remove(certFile.Name()) + keyFile, _ := ioutil.TempFile("", "") + defer os.Remove(keyFile.Name()) + caFile, _ := ioutil.TempFile("", "") + defer os.Remove(caFile.Name()) + + certData := "cert" + keyData := "key" + caData := "ca" + + unchangingCluster := "chicken-cluster" + unchangingAuthInfo := "blue-user" + changingCluster := "cow-cluster" + changingAuthInfo := "red-user" + + startingConfig := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, t) + mutatingConfig := startingConfig + + ShortenConfig(&mutatingConfig) + + if len(mutatingConfig.Contexts) != 2 { + t.Errorf("unexpected contexts: %v", mutatingConfig.Contexts) + } + if !reflect.DeepEqual(startingConfig.Contexts, mutatingConfig.Contexts) { + t.Errorf("expected %v, got %v", startingConfig.Contexts, mutatingConfig.Contexts) + } + + redacted := string(redactedBytes) + if len(mutatingConfig.Clusters) != 2 { + t.Errorf("unexpected clusters: %v", mutatingConfig.Clusters) + } + if !reflect.DeepEqual(startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster]) { + t.Errorf("expected %v, got %v", startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster]) + } + if string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData) != redacted { + t.Errorf("expected %v, got %v", redacted, string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData)) + } + + if len(mutatingConfig.AuthInfos) != 2 { + t.Errorf("unexpected users: %v", mutatingConfig.AuthInfos) + } + if !reflect.DeepEqual(startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo]) { + t.Errorf("expected %v, got %v", startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo]) + } + if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData) != redacted { + t.Errorf("expected %v, got %v", redacted, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData)) + } + if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData) != redacted { + t.Errorf("expected %v, got %v", redacted, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData)) + } +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD b/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD new file mode 100644 index 000000000..7be78c960 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["latest.go"], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/json:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go b/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go new file mode 100644 index 000000000..5fbbe3f13 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/latest/latest.go @@ -0,0 +1,66 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package latest + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer/json" + "k8s.io/apimachinery/pkg/runtime/serializer/versioning" + "k8s.io/client-go/tools/clientcmd/api" + "k8s.io/client-go/tools/clientcmd/api/v1" +) + +// Version is the string that represents the current external default version. +const Version = "v1" + +var ExternalVersion = schema.GroupVersion{Group: "", Version: "v1"} + +// OldestVersion is the string that represents the oldest server version supported, +// for client code that wants to hardcode the lowest common denominator. +const OldestVersion = "v1" + +// Versions is the list of versions that are recognized in code. The order provided +// may be assumed to be least feature rich to most feature rich, and clients may +// choose to prefer the latter items in the list over the former items when presented +// with a set of versions to choose. +var Versions = []string{"v1"} + +var ( + Codec runtime.Codec + Scheme *runtime.Scheme +) + +func init() { + Scheme = runtime.NewScheme() + if err := api.AddToScheme(Scheme); err != nil { + // Programmer error, detect immediately + panic(err) + } + if err := v1.AddToScheme(Scheme); err != nil { + // Programmer error, detect immediately + panic(err) + } + yamlSerializer := json.NewYAMLSerializer(json.DefaultMetaFactory, Scheme, Scheme) + Codec = versioning.NewDefaultingCodecForScheme( + Scheme, + yamlSerializer, + yamlSerializer, + schema.GroupVersion{Version: Version}, + runtime.InternalGroupVersioner, + ) +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/register.go b/vendor/k8s.io/client-go/tools/clientcmd/api/register.go new file mode 100644 index 000000000..2eec3881c --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/register.go @@ -0,0 +1,46 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// SchemeGroupVersion is group version used to register these objects +// TODO this should be in the "kubeconfig" group +var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Config{}, + ) + return nil +} + +func (obj *Config) GetObjectKind() schema.ObjectKind { return obj } +func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} +func (obj *Config) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/types.go b/vendor/k8s.io/client-go/tools/clientcmd/api/types.go new file mode 100644 index 000000000..76090c6f5 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/types.go @@ -0,0 +1,185 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +// Where possible, json tags match the cli argument names. +// Top level config objects and all values required for proper functioning are not "omitempty". Any truly optional piece of config is allowed to be omitted. + +// Config holds the information needed to build connect to remote kubernetes clusters as a given user +// IMPORTANT if you add fields to this struct, please update IsConfigEmpty() +type Config struct { + // Legacy field from pkg/api/types.go TypeMeta. + // TODO(jlowdermilk): remove this after eliminating downstream dependencies. + // +optional + Kind string `json:"kind,omitempty"` + // Legacy field from pkg/api/types.go TypeMeta. + // TODO(jlowdermilk): remove this after eliminating downstream dependencies. + // +optional + APIVersion string `json:"apiVersion,omitempty"` + // Preferences holds general information to be use for cli interactions + Preferences Preferences `json:"preferences"` + // Clusters is a map of referencable names to cluster configs + Clusters map[string]*Cluster `json:"clusters"` + // AuthInfos is a map of referencable names to user configs + AuthInfos map[string]*AuthInfo `json:"users"` + // Contexts is a map of referencable names to context configs + Contexts map[string]*Context `json:"contexts"` + // CurrentContext is the name of the context that you would like to use by default + CurrentContext string `json:"current-context"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// IMPORTANT if you add fields to this struct, please update IsConfigEmpty() +type Preferences struct { + // +optional + Colors bool `json:"colors,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// Cluster contains information about how to communicate with a kubernetes cluster +type Cluster struct { + // LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized. + LocationOfOrigin string + // Server is the address of the kubernetes cluster (https://hostname:port). + Server string `json:"server"` + // InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure. + // +optional + InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"` + // CertificateAuthority is the path to a cert file for the certificate authority. + // +optional + CertificateAuthority string `json:"certificate-authority,omitempty"` + // CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority + // +optional + CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are. +type AuthInfo struct { + // LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized. + LocationOfOrigin string + // ClientCertificate is the path to a client cert file for TLS. + // +optional + ClientCertificate string `json:"client-certificate,omitempty"` + // ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate + // +optional + ClientCertificateData []byte `json:"client-certificate-data,omitempty"` + // ClientKey is the path to a client key file for TLS. + // +optional + ClientKey string `json:"client-key,omitempty"` + // ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey + // +optional + ClientKeyData []byte `json:"client-key-data,omitempty"` + // Token is the bearer token for authentication to the kubernetes cluster. + // +optional + Token string `json:"token,omitempty"` + // TokenFile is a pointer to a file that contains a bearer token (as described above). If both Token and TokenFile are present, Token takes precedence. + // +optional + TokenFile string `json:"tokenFile,omitempty"` + // Impersonate is the username to act-as. + // +optional + Impersonate string `json:"act-as,omitempty"` + // ImpersonateGroups is the groups to imperonate. + // +optional + ImpersonateGroups []string `json:"act-as-groups,omitempty"` + // ImpersonateUserExtra contains additional information for impersonated user. + // +optional + ImpersonateUserExtra map[string][]string `json:"act-as-user-extra,omitempty"` + // Username is the username for basic authentication to the kubernetes cluster. + // +optional + Username string `json:"username,omitempty"` + // Password is the password for basic authentication to the kubernetes cluster. + // +optional + Password string `json:"password,omitempty"` + // AuthProvider specifies a custom authentication plugin for the kubernetes cluster. + // +optional + AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with) +type Context struct { + // LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized. + LocationOfOrigin string + // Cluster is the name of the cluster for this context + Cluster string `json:"cluster"` + // AuthInfo is the name of the authInfo for this context + AuthInfo string `json:"user"` + // Namespace is the default namespace to use on unspecified requests + // +optional + Namespace string `json:"namespace,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// AuthProviderConfig holds the configuration for a specified auth provider. +type AuthProviderConfig struct { + Name string `json:"name"` + // +optional + Config map[string]string `json:"config,omitempty"` +} + +// NewConfig is a convenience function that returns a new Config object with non-nil maps +func NewConfig() *Config { + return &Config{ + Preferences: *NewPreferences(), + Clusters: make(map[string]*Cluster), + AuthInfos: make(map[string]*AuthInfo), + Contexts: make(map[string]*Context), + Extensions: make(map[string]runtime.Object), + } +} + +// NewContext is a convenience function that returns a new Context +// object with non-nil maps +func NewContext() *Context { + return &Context{Extensions: make(map[string]runtime.Object)} +} + +// NewCluster is a convenience function that returns a new Cluster +// object with non-nil maps +func NewCluster() *Cluster { + return &Cluster{Extensions: make(map[string]runtime.Object)} +} + +// NewAuthInfo is a convenience function that returns a new AuthInfo +// object with non-nil maps +func NewAuthInfo() *AuthInfo { + return &AuthInfo{ + Extensions: make(map[string]runtime.Object), + ImpersonateUserExtra: make(map[string][]string), + } +} + +// NewPreferences is a convenience function that returns a new +// Preferences object with non-nil maps +func NewPreferences() *Preferences { + return &Preferences{Extensions: make(map[string]runtime.Object)} +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/types_test.go b/vendor/k8s.io/client-go/tools/clientcmd/api/types_test.go new file mode 100644 index 000000000..bd3483452 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/types_test.go @@ -0,0 +1,135 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "fmt" + + "github.com/ghodss/yaml" +) + +func Example_emptyConfig() { + defaultConfig := NewConfig() + + output, err := yaml.Marshal(defaultConfig) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + + fmt.Printf("%v", string(output)) + // Output: + // clusters: {} + // contexts: {} + // current-context: "" + // preferences: {} + // users: {} +} + +func Example_ofOptionsConfig() { + defaultConfig := NewConfig() + defaultConfig.Preferences.Colors = true + defaultConfig.Clusters["alfa"] = &Cluster{ + Server: "https://alfa.org:8080", + InsecureSkipTLSVerify: true, + CertificateAuthority: "path/to/my/cert-ca-filename", + } + defaultConfig.Clusters["bravo"] = &Cluster{ + Server: "https://bravo.org:8080", + InsecureSkipTLSVerify: false, + } + defaultConfig.AuthInfos["white-mage-via-cert"] = &AuthInfo{ + ClientCertificate: "path/to/my/client-cert-filename", + ClientKey: "path/to/my/client-key-filename", + } + defaultConfig.AuthInfos["red-mage-via-token"] = &AuthInfo{ + Token: "my-secret-token", + } + defaultConfig.AuthInfos["black-mage-via-auth-provider"] = &AuthInfo{ + AuthProvider: &AuthProviderConfig{ + Name: "gcp", + Config: map[string]string{ + "foo": "bar", + "token": "s3cr3t-t0k3n", + }, + }, + } + defaultConfig.Contexts["bravo-as-black-mage"] = &Context{ + Cluster: "bravo", + AuthInfo: "black-mage-via-auth-provider", + Namespace: "yankee", + } + defaultConfig.Contexts["alfa-as-black-mage"] = &Context{ + Cluster: "alfa", + AuthInfo: "black-mage-via-auth-provider", + Namespace: "zulu", + } + defaultConfig.Contexts["alfa-as-white-mage"] = &Context{ + Cluster: "alfa", + AuthInfo: "white-mage-via-cert", + } + defaultConfig.CurrentContext = "alfa-as-white-mage" + + output, err := yaml.Marshal(defaultConfig) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + + fmt.Printf("%v", string(output)) + // Output: + // clusters: + // alfa: + // LocationOfOrigin: "" + // certificate-authority: path/to/my/cert-ca-filename + // insecure-skip-tls-verify: true + // server: https://alfa.org:8080 + // bravo: + // LocationOfOrigin: "" + // server: https://bravo.org:8080 + // contexts: + // alfa-as-black-mage: + // LocationOfOrigin: "" + // cluster: alfa + // namespace: zulu + // user: black-mage-via-auth-provider + // alfa-as-white-mage: + // LocationOfOrigin: "" + // cluster: alfa + // user: white-mage-via-cert + // bravo-as-black-mage: + // LocationOfOrigin: "" + // cluster: bravo + // namespace: yankee + // user: black-mage-via-auth-provider + // current-context: alfa-as-white-mage + // preferences: + // colors: true + // users: + // black-mage-via-auth-provider: + // LocationOfOrigin: "" + // auth-provider: + // config: + // foo: bar + // token: s3cr3t-t0k3n + // name: gcp + // red-mage-via-token: + // LocationOfOrigin: "" + // token: my-secret-token + // white-mage-via-cert: + // LocationOfOrigin: "" + // client-certificate: path/to/my/client-cert-filename + // client-key: path/to/my/client-key-filename +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD new file mode 100644 index 000000000..365d2597f --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD @@ -0,0 +1,24 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = [ + "conversion.go", + "register.go", + "types.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/v1/conversion.go b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/conversion.go new file mode 100644 index 000000000..b47bfbca2 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/conversion.go @@ -0,0 +1,227 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "sort" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/tools/clientcmd/api" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + return scheme.AddConversionFuncs( + func(in *Cluster, out *api.Cluster, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *api.Cluster, out *Cluster, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *Preferences, out *api.Preferences, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *api.Preferences, out *Preferences, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *AuthInfo, out *api.AuthInfo, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *api.AuthInfo, out *AuthInfo, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *Context, out *api.Context, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + func(in *api.Context, out *Context, s conversion.Scope) error { + return s.DefaultConvert(in, out, conversion.IgnoreMissingFields) + }, + + func(in *Config, out *api.Config, s conversion.Scope) error { + out.CurrentContext = in.CurrentContext + if err := s.Convert(&in.Preferences, &out.Preferences, 0); err != nil { + return err + } + + out.Clusters = make(map[string]*api.Cluster) + if err := s.Convert(&in.Clusters, &out.Clusters, 0); err != nil { + return err + } + out.AuthInfos = make(map[string]*api.AuthInfo) + if err := s.Convert(&in.AuthInfos, &out.AuthInfos, 0); err != nil { + return err + } + out.Contexts = make(map[string]*api.Context) + if err := s.Convert(&in.Contexts, &out.Contexts, 0); err != nil { + return err + } + out.Extensions = make(map[string]runtime.Object) + if err := s.Convert(&in.Extensions, &out.Extensions, 0); err != nil { + return err + } + return nil + }, + func(in *api.Config, out *Config, s conversion.Scope) error { + out.CurrentContext = in.CurrentContext + if err := s.Convert(&in.Preferences, &out.Preferences, 0); err != nil { + return err + } + + out.Clusters = make([]NamedCluster, 0, 0) + if err := s.Convert(&in.Clusters, &out.Clusters, 0); err != nil { + return err + } + out.AuthInfos = make([]NamedAuthInfo, 0, 0) + if err := s.Convert(&in.AuthInfos, &out.AuthInfos, 0); err != nil { + return err + } + out.Contexts = make([]NamedContext, 0, 0) + if err := s.Convert(&in.Contexts, &out.Contexts, 0); err != nil { + return err + } + out.Extensions = make([]NamedExtension, 0, 0) + if err := s.Convert(&in.Extensions, &out.Extensions, 0); err != nil { + return err + } + return nil + }, + func(in *[]NamedCluster, out *map[string]*api.Cluster, s conversion.Scope) error { + for _, curr := range *in { + newCluster := api.NewCluster() + if err := s.Convert(&curr.Cluster, newCluster, 0); err != nil { + return err + } + (*out)[curr.Name] = newCluster + } + + return nil + }, + func(in *map[string]*api.Cluster, out *[]NamedCluster, s conversion.Scope) error { + allKeys := make([]string, 0, len(*in)) + for key := range *in { + allKeys = append(allKeys, key) + } + sort.Strings(allKeys) + + for _, key := range allKeys { + newCluster := (*in)[key] + oldCluster := &Cluster{} + if err := s.Convert(newCluster, oldCluster, 0); err != nil { + return err + } + + namedCluster := NamedCluster{key, *oldCluster} + *out = append(*out, namedCluster) + } + + return nil + }, + func(in *[]NamedAuthInfo, out *map[string]*api.AuthInfo, s conversion.Scope) error { + for _, curr := range *in { + newAuthInfo := api.NewAuthInfo() + if err := s.Convert(&curr.AuthInfo, newAuthInfo, 0); err != nil { + return err + } + (*out)[curr.Name] = newAuthInfo + } + + return nil + }, + func(in *map[string]*api.AuthInfo, out *[]NamedAuthInfo, s conversion.Scope) error { + allKeys := make([]string, 0, len(*in)) + for key := range *in { + allKeys = append(allKeys, key) + } + sort.Strings(allKeys) + + for _, key := range allKeys { + newAuthInfo := (*in)[key] + oldAuthInfo := &AuthInfo{} + if err := s.Convert(newAuthInfo, oldAuthInfo, 0); err != nil { + return err + } + + namedAuthInfo := NamedAuthInfo{key, *oldAuthInfo} + *out = append(*out, namedAuthInfo) + } + + return nil + }, + func(in *[]NamedContext, out *map[string]*api.Context, s conversion.Scope) error { + for _, curr := range *in { + newContext := api.NewContext() + if err := s.Convert(&curr.Context, newContext, 0); err != nil { + return err + } + (*out)[curr.Name] = newContext + } + + return nil + }, + func(in *map[string]*api.Context, out *[]NamedContext, s conversion.Scope) error { + allKeys := make([]string, 0, len(*in)) + for key := range *in { + allKeys = append(allKeys, key) + } + sort.Strings(allKeys) + + for _, key := range allKeys { + newContext := (*in)[key] + oldContext := &Context{} + if err := s.Convert(newContext, oldContext, 0); err != nil { + return err + } + + namedContext := NamedContext{key, *oldContext} + *out = append(*out, namedContext) + } + + return nil + }, + func(in *[]NamedExtension, out *map[string]runtime.Object, s conversion.Scope) error { + for _, curr := range *in { + var newExtension runtime.Object + if err := s.Convert(&curr.Extension, &newExtension, 0); err != nil { + return err + } + (*out)[curr.Name] = newExtension + } + + return nil + }, + func(in *map[string]runtime.Object, out *[]NamedExtension, s conversion.Scope) error { + allKeys := make([]string, 0, len(*in)) + for key := range *in { + allKeys = append(allKeys, key) + } + sort.Strings(allKeys) + + for _, key := range allKeys { + newExtension := (*in)[key] + oldExtension := &runtime.RawExtension{} + if err := s.Convert(newExtension, oldExtension, 0); err != nil { + return err + } + + namedExtension := NamedExtension{key, *oldExtension} + *out = append(*out, namedExtension) + } + + return nil + }, + ) +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/v1/register.go b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/register.go new file mode 100644 index 000000000..7b91d5090 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/register.go @@ -0,0 +1,56 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// SchemeGroupVersion is group version used to register these objects +// TODO this should be in the "kubeconfig" group +var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: "v1"} + +var ( + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addKnownTypes, addConversionFuncs) +} + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Config{}, + ) + return nil +} + +func (obj *Config) GetObjectKind() schema.ObjectKind { return obj } +func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} +func (obj *Config) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/api/v1/types.go b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/types.go new file mode 100644 index 000000000..21b94d25f --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/api/v1/types.go @@ -0,0 +1,170 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +// Where possible, json tags match the cli argument names. +// Top level config objects and all values required for proper functioning are not "omitempty". Any truly optional piece of config is allowed to be omitted. + +// Config holds the information needed to build connect to remote kubernetes clusters as a given user +type Config struct { + // Legacy field from pkg/api/types.go TypeMeta. + // TODO(jlowdermilk): remove this after eliminating downstream dependencies. + // +optional + Kind string `json:"kind,omitempty"` + // Legacy field from pkg/api/types.go TypeMeta. + // TODO(jlowdermilk): remove this after eliminating downstream dependencies. + // +optional + APIVersion string `json:"apiVersion,omitempty"` + // Preferences holds general information to be use for cli interactions + Preferences Preferences `json:"preferences"` + // Clusters is a map of referencable names to cluster configs + Clusters []NamedCluster `json:"clusters"` + // AuthInfos is a map of referencable names to user configs + AuthInfos []NamedAuthInfo `json:"users"` + // Contexts is a map of referencable names to context configs + Contexts []NamedContext `json:"contexts"` + // CurrentContext is the name of the context that you would like to use by default + CurrentContext string `json:"current-context"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions []NamedExtension `json:"extensions,omitempty"` +} + +type Preferences struct { + // +optional + Colors bool `json:"colors,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions []NamedExtension `json:"extensions,omitempty"` +} + +// Cluster contains information about how to communicate with a kubernetes cluster +type Cluster struct { + // Server is the address of the kubernetes cluster (https://hostname:port). + Server string `json:"server"` + // InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure. + // +optional + InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"` + // CertificateAuthority is the path to a cert file for the certificate authority. + // +optional + CertificateAuthority string `json:"certificate-authority,omitempty"` + // CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority + // +optional + CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions []NamedExtension `json:"extensions,omitempty"` +} + +// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are. +type AuthInfo struct { + // ClientCertificate is the path to a client cert file for TLS. + // +optional + ClientCertificate string `json:"client-certificate,omitempty"` + // ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate + // +optional + ClientCertificateData []byte `json:"client-certificate-data,omitempty"` + // ClientKey is the path to a client key file for TLS. + // +optional + ClientKey string `json:"client-key,omitempty"` + // ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey + // +optional + ClientKeyData []byte `json:"client-key-data,omitempty"` + // Token is the bearer token for authentication to the kubernetes cluster. + // +optional + Token string `json:"token,omitempty"` + // TokenFile is a pointer to a file that contains a bearer token (as described above). If both Token and TokenFile are present, Token takes precedence. + // +optional + TokenFile string `json:"tokenFile,omitempty"` + // Impersonate is the username to imperonate. The name matches the flag. + // +optional + Impersonate string `json:"as,omitempty"` + // ImpersonateGroups is the groups to imperonate. + // +optional + ImpersonateGroups []string `json:"as-groups,omitempty"` + // ImpersonateUserExtra contains additional information for impersonated user. + // +optional + ImpersonateUserExtra map[string][]string `json:"as-user-extra,omitempty"` + // Username is the username for basic authentication to the kubernetes cluster. + // +optional + Username string `json:"username,omitempty"` + // Password is the password for basic authentication to the kubernetes cluster. + // +optional + Password string `json:"password,omitempty"` + // AuthProvider specifies a custom authentication plugin for the kubernetes cluster. + // +optional + AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions []NamedExtension `json:"extensions,omitempty"` +} + +// Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with) +type Context struct { + // Cluster is the name of the cluster for this context + Cluster string `json:"cluster"` + // AuthInfo is the name of the authInfo for this context + AuthInfo string `json:"user"` + // Namespace is the default namespace to use on unspecified requests + // +optional + Namespace string `json:"namespace,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + // +optional + Extensions []NamedExtension `json:"extensions,omitempty"` +} + +// NamedCluster relates nicknames to cluster information +type NamedCluster struct { + // Name is the nickname for this Cluster + Name string `json:"name"` + // Cluster holds the cluster information + Cluster Cluster `json:"cluster"` +} + +// NamedContext relates nicknames to context information +type NamedContext struct { + // Name is the nickname for this Context + Name string `json:"name"` + // Context holds the context information + Context Context `json:"context"` +} + +// NamedAuthInfo relates nicknames to auth information +type NamedAuthInfo struct { + // Name is the nickname for this AuthInfo + Name string `json:"name"` + // AuthInfo holds the auth information + AuthInfo AuthInfo `json:"user"` +} + +// NamedExtension relates nicknames to extension information +type NamedExtension struct { + // Name is the nickname for this Extension + Name string `json:"name"` + // Extension holds the extension information + Extension runtime.RawExtension `json:"extension"` +} + +// AuthProviderConfig holds the configuration for a specified auth provider. +type AuthProviderConfig struct { + Name string `json:"name"` + Config map[string]string `json:"config"` +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go b/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go new file mode 100644 index 000000000..12331f6e6 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go @@ -0,0 +1,106 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "encoding/json" + "fmt" + "io" + "io/ioutil" + "os" + + "github.com/howeyc/gopass" + clientauth "k8s.io/client-go/tools/auth" +) + +// AuthLoaders are used to build clientauth.Info objects. +type AuthLoader interface { + // LoadAuth takes a path to a config file and can then do anything it needs in order to return a valid clientauth.Info + LoadAuth(path string) (*clientauth.Info, error) +} + +// default implementation of an AuthLoader +type defaultAuthLoader struct{} + +// LoadAuth for defaultAuthLoader simply delegates to clientauth.LoadFromFile +func (*defaultAuthLoader) LoadAuth(path string) (*clientauth.Info, error) { + return clientauth.LoadFromFile(path) +} + +type PromptingAuthLoader struct { + reader io.Reader +} + +// LoadAuth parses an AuthInfo object from a file path. It prompts user and creates file if it doesn't exist. +func (a *PromptingAuthLoader) LoadAuth(path string) (*clientauth.Info, error) { + // Prompt for user/pass and write a file if none exists. + if _, err := os.Stat(path); os.IsNotExist(err) { + authPtr, err := a.Prompt() + auth := *authPtr + if err != nil { + return nil, err + } + data, err := json.Marshal(auth) + if err != nil { + return &auth, err + } + err = ioutil.WriteFile(path, data, 0600) + return &auth, err + } + authPtr, err := clientauth.LoadFromFile(path) + if err != nil { + return nil, err + } + return authPtr, nil +} + +// Prompt pulls the user and password from a reader +func (a *PromptingAuthLoader) Prompt() (*clientauth.Info, error) { + var err error + auth := &clientauth.Info{} + auth.User, err = promptForString("Username", a.reader, true) + if err != nil { + return nil, err + } + auth.Password, err = promptForString("Password", nil, false) + if err != nil { + return nil, err + } + return auth, nil +} + +func promptForString(field string, r io.Reader, show bool) (result string, err error) { + fmt.Printf("Please enter %s: ", field) + if show { + _, err = fmt.Fscan(r, &result) + } else { + var data []byte + data, err = gopass.GetPasswdMasked() + result = string(data) + } + return result, err +} + +// NewPromptingAuthLoader is an AuthLoader that parses an AuthInfo object from a file path. It prompts user and creates file if it doesn't exist. +func NewPromptingAuthLoader(reader io.Reader) *PromptingAuthLoader { + return &PromptingAuthLoader{reader} +} + +// NewDefaultAuthLoader returns a default implementation of an AuthLoader that only reads from a config file +func NewDefaultAuthLoader() AuthLoader { + return &defaultAuthLoader{} +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/client_config.go b/vendor/k8s.io/client-go/tools/clientcmd/client_config.go new file mode 100644 index 000000000..103648f1d --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/client_config.go @@ -0,0 +1,549 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "fmt" + "io" + "io/ioutil" + "net/url" + "os" + "strings" + + "github.com/golang/glog" + "github.com/imdario/mergo" + + "k8s.io/client-go/pkg/api/v1" + restclient "k8s.io/client-go/rest" + clientauth "k8s.io/client-go/tools/auth" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +var ( + // ClusterDefaults has the same behavior as the old EnvVar and DefaultCluster fields + // DEPRECATED will be replaced + ClusterDefaults = clientcmdapi.Cluster{Server: getDefaultServer()} + // DefaultClientConfig represents the legacy behavior of this package for defaulting + // DEPRECATED will be replace + DefaultClientConfig = DirectClientConfig{*clientcmdapi.NewConfig(), "", &ConfigOverrides{ + ClusterDefaults: ClusterDefaults, + }, nil, NewDefaultClientConfigLoadingRules(), promptedCredentials{}} +) + +// getDefaultServer returns a default setting for DefaultClientConfig +// DEPRECATED +func getDefaultServer() string { + if server := os.Getenv("KUBERNETES_MASTER"); len(server) > 0 { + return server + } + return "http://localhost:8080" +} + +// ClientConfig is used to make it easy to get an api server client +type ClientConfig interface { + // RawConfig returns the merged result of all overrides + RawConfig() (clientcmdapi.Config, error) + // ClientConfig returns a complete client config + ClientConfig() (*restclient.Config, error) + // Namespace returns the namespace resulting from the merged + // result of all overrides and a boolean indicating if it was + // overridden + Namespace() (string, bool, error) + // ConfigAccess returns the rules for loading/persisting the config. + ConfigAccess() ConfigAccess +} + +type PersistAuthProviderConfigForUser func(user string) restclient.AuthProviderConfigPersister + +type promptedCredentials struct { + username string + password string +} + +// DirectClientConfig is a ClientConfig interface that is backed by a clientcmdapi.Config, options overrides, and an optional fallbackReader for auth information +type DirectClientConfig struct { + config clientcmdapi.Config + contextName string + overrides *ConfigOverrides + fallbackReader io.Reader + configAccess ConfigAccess + // promptedCredentials store the credentials input by the user + promptedCredentials promptedCredentials +} + +// NewDefaultClientConfig creates a DirectClientConfig using the config.CurrentContext as the context name +func NewDefaultClientConfig(config clientcmdapi.Config, overrides *ConfigOverrides) ClientConfig { + return &DirectClientConfig{config, config.CurrentContext, overrides, nil, NewDefaultClientConfigLoadingRules(), promptedCredentials{}} +} + +// NewNonInteractiveClientConfig creates a DirectClientConfig using the passed context name and does not have a fallback reader for auth information +func NewNonInteractiveClientConfig(config clientcmdapi.Config, contextName string, overrides *ConfigOverrides, configAccess ConfigAccess) ClientConfig { + return &DirectClientConfig{config, contextName, overrides, nil, configAccess, promptedCredentials{}} +} + +// NewInteractiveClientConfig creates a DirectClientConfig using the passed context name and a reader in case auth information is not provided via files or flags +func NewInteractiveClientConfig(config clientcmdapi.Config, contextName string, overrides *ConfigOverrides, fallbackReader io.Reader, configAccess ConfigAccess) ClientConfig { + return &DirectClientConfig{config, contextName, overrides, fallbackReader, configAccess, promptedCredentials{}} +} + +func (config *DirectClientConfig) RawConfig() (clientcmdapi.Config, error) { + return config.config, nil +} + +// ClientConfig implements ClientConfig +func (config *DirectClientConfig) ClientConfig() (*restclient.Config, error) { + // check that getAuthInfo, getContext, and getCluster do not return an error. + // Do this before checking if the curent config is usable in the event that an + // AuthInfo, Context, or Cluster config with user-defined names are not found. + // This provides a user with the immediate cause for error if one is found + configAuthInfo, err := config.getAuthInfo() + if err != nil { + return nil, err + } + + _, err = config.getContext() + if err != nil { + return nil, err + } + + configClusterInfo, err := config.getCluster() + if err != nil { + return nil, err + } + + if err := config.ConfirmUsable(); err != nil { + return nil, err + } + + clientConfig := &restclient.Config{} + clientConfig.Host = configClusterInfo.Server + + if len(config.overrides.Timeout) > 0 { + timeout, err := ParseTimeout(config.overrides.Timeout) + if err != nil { + return nil, err + } + clientConfig.Timeout = timeout + } + + if u, err := url.ParseRequestURI(clientConfig.Host); err == nil && u.Opaque == "" && len(u.Path) > 1 { + u.RawQuery = "" + u.Fragment = "" + clientConfig.Host = u.String() + } + if len(configAuthInfo.Impersonate) > 0 { + clientConfig.Impersonate = restclient.ImpersonationConfig{ + UserName: configAuthInfo.Impersonate, + Groups: configAuthInfo.ImpersonateGroups, + Extra: configAuthInfo.ImpersonateUserExtra, + } + } + + // only try to read the auth information if we are secure + if restclient.IsConfigTransportTLS(*clientConfig) { + var err error + + // mergo is a first write wins for map value and a last writing wins for interface values + // NOTE: This behavior changed with https://github.com/imdario/mergo/commit/d304790b2ed594794496464fadd89d2bb266600a. + // Our mergo.Merge version is older than this change. + var persister restclient.AuthProviderConfigPersister + if config.configAccess != nil { + authInfoName, _ := config.getAuthInfoName() + persister = PersisterForUser(config.configAccess, authInfoName) + } + userAuthPartialConfig, err := config.getUserIdentificationPartialConfig(configAuthInfo, config.fallbackReader, persister) + if err != nil { + return nil, err + } + mergo.Merge(clientConfig, userAuthPartialConfig) + + serverAuthPartialConfig, err := getServerIdentificationPartialConfig(configAuthInfo, configClusterInfo) + if err != nil { + return nil, err + } + mergo.Merge(clientConfig, serverAuthPartialConfig) + } + + return clientConfig, nil +} + +// clientauth.Info object contain both user identification and server identification. We want different precedence orders for +// both, so we have to split the objects and merge them separately +// we want this order of precedence for the server identification +// 1. configClusterInfo (the final result of command line flags and merged .kubeconfig files) +// 2. configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority) +// 3. load the ~/.kubernetes_auth file as a default +func getServerIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, configClusterInfo clientcmdapi.Cluster) (*restclient.Config, error) { + mergedConfig := &restclient.Config{} + + // configClusterInfo holds the information identify the server provided by .kubeconfig + configClientConfig := &restclient.Config{} + configClientConfig.CAFile = configClusterInfo.CertificateAuthority + configClientConfig.CAData = configClusterInfo.CertificateAuthorityData + configClientConfig.Insecure = configClusterInfo.InsecureSkipTLSVerify + mergo.Merge(mergedConfig, configClientConfig) + + return mergedConfig, nil +} + +// clientauth.Info object contain both user identification and server identification. We want different precedence orders for +// both, so we have to split the objects and merge them separately +// we want this order of precedence for user identifcation +// 1. configAuthInfo minus auth-path (the final result of command line flags and merged .kubeconfig files) +// 2. configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority) +// 3. if there is not enough information to identify the user, load try the ~/.kubernetes_auth file +// 4. if there is not enough information to identify the user, prompt if possible +func (config *DirectClientConfig) getUserIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, fallbackReader io.Reader, persistAuthConfig restclient.AuthProviderConfigPersister) (*restclient.Config, error) { + mergedConfig := &restclient.Config{} + + // blindly overwrite existing values based on precedence + if len(configAuthInfo.Token) > 0 { + mergedConfig.BearerToken = configAuthInfo.Token + } else if len(configAuthInfo.TokenFile) > 0 { + tokenBytes, err := ioutil.ReadFile(configAuthInfo.TokenFile) + if err != nil { + return nil, err + } + mergedConfig.BearerToken = string(tokenBytes) + } + if len(configAuthInfo.Impersonate) > 0 { + mergedConfig.Impersonate = restclient.ImpersonationConfig{ + UserName: configAuthInfo.Impersonate, + Groups: configAuthInfo.ImpersonateGroups, + Extra: configAuthInfo.ImpersonateUserExtra, + } + } + if len(configAuthInfo.ClientCertificate) > 0 || len(configAuthInfo.ClientCertificateData) > 0 { + mergedConfig.CertFile = configAuthInfo.ClientCertificate + mergedConfig.CertData = configAuthInfo.ClientCertificateData + mergedConfig.KeyFile = configAuthInfo.ClientKey + mergedConfig.KeyData = configAuthInfo.ClientKeyData + } + if len(configAuthInfo.Username) > 0 || len(configAuthInfo.Password) > 0 { + mergedConfig.Username = configAuthInfo.Username + mergedConfig.Password = configAuthInfo.Password + } + if configAuthInfo.AuthProvider != nil { + mergedConfig.AuthProvider = configAuthInfo.AuthProvider + mergedConfig.AuthConfigPersister = persistAuthConfig + } + + // if there still isn't enough information to authenticate the user, try prompting + if !canIdentifyUser(*mergedConfig) && (fallbackReader != nil) { + if len(config.promptedCredentials.username) > 0 && len(config.promptedCredentials.password) > 0 { + mergedConfig.Username = config.promptedCredentials.username + mergedConfig.Password = config.promptedCredentials.password + return mergedConfig, nil + } + prompter := NewPromptingAuthLoader(fallbackReader) + promptedAuthInfo, err := prompter.Prompt() + if err != nil { + return nil, err + } + promptedConfig := makeUserIdentificationConfig(*promptedAuthInfo) + previouslyMergedConfig := mergedConfig + mergedConfig = &restclient.Config{} + mergo.Merge(mergedConfig, promptedConfig) + mergo.Merge(mergedConfig, previouslyMergedConfig) + config.promptedCredentials.username = mergedConfig.Username + config.promptedCredentials.password = mergedConfig.Password + } + + return mergedConfig, nil +} + +// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only user identification information +func makeUserIdentificationConfig(info clientauth.Info) *restclient.Config { + config := &restclient.Config{} + config.Username = info.User + config.Password = info.Password + config.CertFile = info.CertFile + config.KeyFile = info.KeyFile + config.BearerToken = info.BearerToken + return config +} + +// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only server identification information +func makeServerIdentificationConfig(info clientauth.Info) restclient.Config { + config := restclient.Config{} + config.CAFile = info.CAFile + if info.Insecure != nil { + config.Insecure = *info.Insecure + } + return config +} + +func canIdentifyUser(config restclient.Config) bool { + return len(config.Username) > 0 || + (len(config.CertFile) > 0 || len(config.CertData) > 0) || + len(config.BearerToken) > 0 || + config.AuthProvider != nil +} + +// Namespace implements ClientConfig +func (config *DirectClientConfig) Namespace() (string, bool, error) { + if config.overrides != nil && config.overrides.Context.Namespace != "" { + // In the event we have an empty config but we do have a namespace override, we should return + // the namespace override instead of having config.ConfirmUsable() return an error. This allows + // things like in-cluster clients to execute `kubectl get pods --namespace=foo` and have the + // --namespace flag honored instead of being ignored. + return config.overrides.Context.Namespace, true, nil + } + + if err := config.ConfirmUsable(); err != nil { + return "", false, err + } + + configContext, err := config.getContext() + if err != nil { + return "", false, err + } + + if len(configContext.Namespace) == 0 { + return v1.NamespaceDefault, false, nil + } + + return configContext.Namespace, false, nil +} + +// ConfigAccess implements ClientConfig +func (config *DirectClientConfig) ConfigAccess() ConfigAccess { + return config.configAccess +} + +// ConfirmUsable looks a particular context and determines if that particular part of the config is useable. There might still be errors in the config, +// but no errors in the sections requested or referenced. It does not return early so that it can find as many errors as possible. +func (config *DirectClientConfig) ConfirmUsable() error { + validationErrors := make([]error, 0) + + var contextName string + if len(config.contextName) != 0 { + contextName = config.contextName + } else { + contextName = config.config.CurrentContext + } + + if len(contextName) > 0 { + _, exists := config.config.Contexts[contextName] + if !exists { + validationErrors = append(validationErrors, &errContextNotFound{contextName}) + } + } + + authInfoName, _ := config.getAuthInfoName() + authInfo, _ := config.getAuthInfo() + validationErrors = append(validationErrors, validateAuthInfo(authInfoName, authInfo)...) + clusterName, _ := config.getClusterName() + cluster, _ := config.getCluster() + validationErrors = append(validationErrors, validateClusterInfo(clusterName, cluster)...) + // when direct client config is specified, and our only error is that no server is defined, we should + // return a standard "no config" error + if len(validationErrors) == 1 && validationErrors[0] == ErrEmptyCluster { + return newErrConfigurationInvalid([]error{ErrEmptyConfig}) + } + return newErrConfigurationInvalid(validationErrors) +} + +// getContextName returns the default, or user-set context name, and a boolean that indicates +// whether the default context name has been overwritten by a user-set flag, or left as its default value +func (config *DirectClientConfig) getContextName() (string, bool) { + if len(config.overrides.CurrentContext) != 0 { + return config.overrides.CurrentContext, true + } + if len(config.contextName) != 0 { + return config.contextName, false + } + + return config.config.CurrentContext, false +} + +// getAuthInfoName returns a string containing the current authinfo name for the current context, +// and a boolean indicating whether the default authInfo name is overwritten by a user-set flag, or +// left as its default value +func (config *DirectClientConfig) getAuthInfoName() (string, bool) { + if len(config.overrides.Context.AuthInfo) != 0 { + return config.overrides.Context.AuthInfo, true + } + context, _ := config.getContext() + return context.AuthInfo, false +} + +// getClusterName returns a string containing the default, or user-set cluster name, and a boolean +// indicating whether the default clusterName has been overwritten by a user-set flag, or left as +// its default value +func (config *DirectClientConfig) getClusterName() (string, bool) { + if len(config.overrides.Context.Cluster) != 0 { + return config.overrides.Context.Cluster, true + } + context, _ := config.getContext() + return context.Cluster, false +} + +// getContext returns the clientcmdapi.Context, or an error if a required context is not found. +func (config *DirectClientConfig) getContext() (clientcmdapi.Context, error) { + contexts := config.config.Contexts + contextName, required := config.getContextName() + + mergedContext := clientcmdapi.NewContext() + if configContext, exists := contexts[contextName]; exists { + mergo.Merge(mergedContext, configContext) + } else if required { + return clientcmdapi.Context{}, fmt.Errorf("context %q does not exist", contextName) + } + mergo.Merge(mergedContext, config.overrides.Context) + + return *mergedContext, nil +} + +// getAuthInfo returns the clientcmdapi.AuthInfo, or an error if a required auth info is not found. +func (config *DirectClientConfig) getAuthInfo() (clientcmdapi.AuthInfo, error) { + authInfos := config.config.AuthInfos + authInfoName, required := config.getAuthInfoName() + + mergedAuthInfo := clientcmdapi.NewAuthInfo() + if configAuthInfo, exists := authInfos[authInfoName]; exists { + mergo.Merge(mergedAuthInfo, configAuthInfo) + } else if required { + return clientcmdapi.AuthInfo{}, fmt.Errorf("auth info %q does not exist", authInfoName) + } + mergo.Merge(mergedAuthInfo, config.overrides.AuthInfo) + + return *mergedAuthInfo, nil +} + +// getCluster returns the clientcmdapi.Cluster, or an error if a required cluster is not found. +func (config *DirectClientConfig) getCluster() (clientcmdapi.Cluster, error) { + clusterInfos := config.config.Clusters + clusterInfoName, required := config.getClusterName() + + mergedClusterInfo := clientcmdapi.NewCluster() + mergo.Merge(mergedClusterInfo, config.overrides.ClusterDefaults) + if configClusterInfo, exists := clusterInfos[clusterInfoName]; exists { + mergo.Merge(mergedClusterInfo, configClusterInfo) + } else if required { + return clientcmdapi.Cluster{}, fmt.Errorf("cluster %q does not exist", clusterInfoName) + } + mergo.Merge(mergedClusterInfo, config.overrides.ClusterInfo) + // An override of --insecure-skip-tls-verify=true and no accompanying CA/CA data should clear already-set CA/CA data + // otherwise, a kubeconfig containing a CA reference would return an error that "CA and insecure-skip-tls-verify couldn't both be set" + caLen := len(config.overrides.ClusterInfo.CertificateAuthority) + caDataLen := len(config.overrides.ClusterInfo.CertificateAuthorityData) + if config.overrides.ClusterInfo.InsecureSkipTLSVerify && caLen == 0 && caDataLen == 0 { + mergedClusterInfo.CertificateAuthority = "" + mergedClusterInfo.CertificateAuthorityData = nil + } + + return *mergedClusterInfo, nil +} + +// inClusterClientConfig makes a config that will work from within a kubernetes cluster container environment. +// Can take options overrides for flags explicitly provided to the command inside the cluster container. +type inClusterClientConfig struct { + overrides *ConfigOverrides + inClusterConfigProvider func() (*restclient.Config, error) +} + +var _ ClientConfig = &inClusterClientConfig{} + +func (config *inClusterClientConfig) RawConfig() (clientcmdapi.Config, error) { + return clientcmdapi.Config{}, fmt.Errorf("inCluster environment config doesn't support multiple clusters") +} + +func (config *inClusterClientConfig) ClientConfig() (*restclient.Config, error) { + if config.inClusterConfigProvider == nil { + config.inClusterConfigProvider = restclient.InClusterConfig + } + + icc, err := config.inClusterConfigProvider() + if err != nil { + return nil, err + } + + // in-cluster configs only takes a host, token, or CA file + // if any of them were individually provided, ovewrite anything else + if config.overrides != nil { + if server := config.overrides.ClusterInfo.Server; len(server) > 0 { + icc.Host = server + } + if token := config.overrides.AuthInfo.Token; len(token) > 0 { + icc.BearerToken = token + } + if certificateAuthorityFile := config.overrides.ClusterInfo.CertificateAuthority; len(certificateAuthorityFile) > 0 { + icc.TLSClientConfig.CAFile = certificateAuthorityFile + } + } + + return icc, err +} + +func (config *inClusterClientConfig) Namespace() (string, bool, error) { + // This way assumes you've set the POD_NAMESPACE environment variable using the downward API. + // This check has to be done first for backwards compatibility with the way InClusterConfig was originally set up + if ns := os.Getenv("POD_NAMESPACE"); ns != "" { + return ns, false, nil + } + + // Fall back to the namespace associated with the service account token, if available + if data, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace"); err == nil { + if ns := strings.TrimSpace(string(data)); len(ns) > 0 { + return ns, false, nil + } + } + + return "default", false, nil +} + +func (config *inClusterClientConfig) ConfigAccess() ConfigAccess { + return NewDefaultClientConfigLoadingRules() +} + +// Possible returns true if loading an inside-kubernetes-cluster is possible. +func (config *inClusterClientConfig) Possible() bool { + fi, err := os.Stat("/var/run/secrets/kubernetes.io/serviceaccount/token") + return os.Getenv("KUBERNETES_SERVICE_HOST") != "" && + os.Getenv("KUBERNETES_SERVICE_PORT") != "" && + err == nil && !fi.IsDir() +} + +// BuildConfigFromFlags is a helper function that builds configs from a master +// url or a kubeconfig filepath. These are passed in as command line flags for cluster +// components. Warnings should reflect this usage. If neither masterUrl or kubeconfigPath +// are passed in we fallback to inClusterConfig. If inClusterConfig fails, we fallback +// to the default config. +func BuildConfigFromFlags(masterUrl, kubeconfigPath string) (*restclient.Config, error) { + if kubeconfigPath == "" && masterUrl == "" { + glog.Warningf("Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.") + kubeconfig, err := restclient.InClusterConfig() + if err == nil { + return kubeconfig, nil + } + glog.Warning("error creating inClusterConfig, falling back to default config: ", err) + } + return NewNonInteractiveDeferredLoadingClientConfig( + &ClientConfigLoadingRules{ExplicitPath: kubeconfigPath}, + &ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: masterUrl}}).ClientConfig() +} + +// BuildConfigFromKubeconfigGetter is a helper function that builds configs from a master +// url and a kubeconfigGetter. +func BuildConfigFromKubeconfigGetter(masterUrl string, kubeconfigGetter KubeconfigGetter) (*restclient.Config, error) { + // TODO: We do not need a DeferredLoader here. Refactor code and see if we can use DirectClientConfig here. + cc := NewNonInteractiveDeferredLoadingClientConfig( + &ClientConfigGetter{kubeconfigGetter: kubeconfigGetter}, + &ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: masterUrl}}) + return cc.ClientConfig() +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/client_config_test.go b/vendor/k8s.io/client-go/tools/clientcmd/client_config_test.go new file mode 100644 index 000000000..9c08ff89d --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/client_config_test.go @@ -0,0 +1,528 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "io/ioutil" + "os" + "reflect" + "strings" + "testing" + + "github.com/imdario/mergo" + restclient "k8s.io/client-go/rest" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +func TestOldMergoLib(t *testing.T) { + type T struct { + X string + } + dst := T{X: "one"} + src := T{X: "two"} + mergo.Merge(&dst, &src) + if dst.X != "two" { + // mergo.Merge changed in an incompatible way with + // + // https://github.com/imdario/mergo/commit/d304790b2ed594794496464fadd89d2bb266600a + // + // We have to stay with the old version which still does eager + // copying from src to dst in structs. + t.Errorf("mergo.Merge library found with incompatible, new behavior") + } +} + +func createValidTestConfig() *clientcmdapi.Config { + const ( + server = "https://anything.com:8080" + token = "the-token" + ) + + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: server, + } + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + Token: token, + } + config.Contexts["clean"] = &clientcmdapi.Context{ + Cluster: "clean", + AuthInfo: "clean", + } + config.CurrentContext = "clean" + + return config +} + +func createCAValidTestConfig() *clientcmdapi.Config { + + config := createValidTestConfig() + config.Clusters["clean"].CertificateAuthorityData = []byte{0, 0} + return config +} + +func TestInsecureOverridesCA(t *testing.T) { + config := createCAValidTestConfig() + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + InsecureSkipTLSVerify: true, + }, + }, nil) + + actualCfg, err := clientBuilder.ClientConfig() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + matchBoolArg(true, actualCfg.Insecure, t) + matchStringArg("", actualCfg.TLSClientConfig.CAFile, t) + matchByteArg(nil, actualCfg.TLSClientConfig.CAData, t) +} + +func TestMergeContext(t *testing.T) { + const namespace = "overriden-namespace" + + config := createValidTestConfig() + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{}, nil) + + _, overridden, err := clientBuilder.Namespace() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + if overridden { + t.Error("Expected namespace to not be overridden") + } + + clientBuilder = NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{ + Context: clientcmdapi.Context{ + Namespace: namespace, + }, + }, nil) + + actual, overridden, err := clientBuilder.Namespace() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + if !overridden { + t.Error("Expected namespace to be overridden") + } + + matchStringArg(namespace, actual, t) +} + +func TestCertificateData(t *testing.T) { + caData := []byte("ca-data") + certData := []byte("cert-data") + keyData := []byte("key-data") + + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "https://localhost:8443", + CertificateAuthorityData: caData, + } + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + ClientCertificateData: certData, + ClientKeyData: keyData, + } + config.Contexts["clean"] = &clientcmdapi.Context{ + Cluster: "clean", + AuthInfo: "clean", + } + config.CurrentContext = "clean" + + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{}, nil) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Make sure cert data gets into config (will override file paths) + matchByteArg(caData, clientConfig.TLSClientConfig.CAData, t) + matchByteArg(certData, clientConfig.TLSClientConfig.CertData, t) + matchByteArg(keyData, clientConfig.TLSClientConfig.KeyData, t) +} + +func TestBasicAuthData(t *testing.T) { + username := "myuser" + password := "mypass" + + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "https://localhost:8443", + } + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + Username: username, + Password: password, + } + config.Contexts["clean"] = &clientcmdapi.Context{ + Cluster: "clean", + AuthInfo: "clean", + } + config.CurrentContext = "clean" + + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{}, nil) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Make sure basic auth data gets into config + matchStringArg(username, clientConfig.Username, t) + matchStringArg(password, clientConfig.Password, t) +} + +func TestBasicTokenFile(t *testing.T) { + token := "exampletoken" + f, err := ioutil.TempFile("", "tokenfile") + if err != nil { + t.Errorf("Unexpected error: %v", err) + return + } + defer os.Remove(f.Name()) + if err := ioutil.WriteFile(f.Name(), []byte(token), 0644); err != nil { + t.Errorf("Unexpected error: %v", err) + return + } + + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "https://localhost:8443", + } + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + TokenFile: f.Name(), + } + config.Contexts["clean"] = &clientcmdapi.Context{ + Cluster: "clean", + AuthInfo: "clean", + } + config.CurrentContext = "clean" + + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{}, nil) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + matchStringArg(token, clientConfig.BearerToken, t) +} + +func TestPrecedenceTokenFile(t *testing.T) { + token := "exampletoken" + f, err := ioutil.TempFile("", "tokenfile") + if err != nil { + t.Errorf("Unexpected error: %v", err) + return + } + defer os.Remove(f.Name()) + if err := ioutil.WriteFile(f.Name(), []byte(token), 0644); err != nil { + t.Errorf("Unexpected error: %v", err) + return + } + + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "https://localhost:8443", + } + expectedToken := "expected" + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + Token: expectedToken, + TokenFile: f.Name(), + } + config.Contexts["clean"] = &clientcmdapi.Context{ + Cluster: "clean", + AuthInfo: "clean", + } + config.CurrentContext = "clean" + + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{}, nil) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + matchStringArg(expectedToken, clientConfig.BearerToken, t) +} + +func TestCreateClean(t *testing.T) { + config := createValidTestConfig() + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{}, nil) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + matchStringArg(config.Clusters["clean"].Server, clientConfig.Host, t) + matchStringArg("", clientConfig.APIPath, t) + matchBoolArg(config.Clusters["clean"].InsecureSkipTLSVerify, clientConfig.Insecure, t) + matchStringArg(config.AuthInfos["clean"].Token, clientConfig.BearerToken, t) +} + +func TestCreateCleanWithPrefix(t *testing.T) { + tt := []struct { + server string + host string + }{ + {"https://anything.com:8080/foo/bar", "https://anything.com:8080/foo/bar"}, + {"http://anything.com:8080/foo/bar", "http://anything.com:8080/foo/bar"}, + {"http://anything.com:8080/foo/bar/", "http://anything.com:8080/foo/bar/"}, + {"http://anything.com:8080/", "http://anything.com:8080/"}, + {"http://anything.com:8080//", "http://anything.com:8080//"}, + {"anything.com:8080/foo/bar", "anything.com:8080/foo/bar"}, + {"anything.com:8080", "anything.com:8080"}, + {"anything.com", "anything.com"}, + {"anything", "anything"}, + } + + tt = append(tt, struct{ server, host string }{"", "http://localhost:8080"}) + + for _, tc := range tt { + config := createValidTestConfig() + + cleanConfig := config.Clusters["clean"] + cleanConfig.Server = tc.server + config.Clusters["clean"] = cleanConfig + + clientBuilder := NewNonInteractiveClientConfig(*config, "clean", &ConfigOverrides{ + ClusterDefaults: clientcmdapi.Cluster{Server: "http://localhost:8080"}, + }, nil) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + matchStringArg(tc.host, clientConfig.Host, t) + } +} + +func TestCreateCleanDefault(t *testing.T) { + config := createValidTestConfig() + clientBuilder := NewDefaultClientConfig(*config, &ConfigOverrides{}) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + matchStringArg(config.Clusters["clean"].Server, clientConfig.Host, t) + matchBoolArg(config.Clusters["clean"].InsecureSkipTLSVerify, clientConfig.Insecure, t) + matchStringArg(config.AuthInfos["clean"].Token, clientConfig.BearerToken, t) +} + +func TestCreateCleanDefaultCluster(t *testing.T) { + config := createValidTestConfig() + clientBuilder := NewDefaultClientConfig(*config, &ConfigOverrides{ + ClusterDefaults: clientcmdapi.Cluster{Server: "http://localhost:8080"}, + }) + + clientConfig, err := clientBuilder.ClientConfig() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + matchStringArg(config.Clusters["clean"].Server, clientConfig.Host, t) + matchBoolArg(config.Clusters["clean"].InsecureSkipTLSVerify, clientConfig.Insecure, t) + matchStringArg(config.AuthInfos["clean"].Token, clientConfig.BearerToken, t) +} + +func TestCreateMissingContextNoDefault(t *testing.T) { + const expectedErrorContains = "Context was not found for specified context" + config := createValidTestConfig() + clientBuilder := NewNonInteractiveClientConfig(*config, "not-present", &ConfigOverrides{}, nil) + + _, err := clientBuilder.ClientConfig() + if err == nil { + t.Fatalf("Unexpected error: %v", err) + } +} + +func TestCreateMissingContext(t *testing.T) { + const expectedErrorContains = "context was not found for specified context: not-present" + config := createValidTestConfig() + clientBuilder := NewNonInteractiveClientConfig(*config, "not-present", &ConfigOverrides{ + ClusterDefaults: clientcmdapi.Cluster{Server: "http://localhost:8080"}, + }, nil) + + _, err := clientBuilder.ClientConfig() + if err == nil { + t.Fatalf("Expected error: %v", expectedErrorContains) + } + if !strings.Contains(err.Error(), expectedErrorContains) { + t.Fatalf("Expected error: %v, but got %v", expectedErrorContains, err) + } +} + +func TestInClusterClientConfigPrecedence(t *testing.T) { + tt := []struct { + overrides *ConfigOverrides + }{ + { + overrides: &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + Server: "https://host-from-overrides.com", + }, + }, + }, + { + overrides: &ConfigOverrides{ + AuthInfo: clientcmdapi.AuthInfo{ + Token: "https://host-from-overrides.com", + }, + }, + }, + { + overrides: &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + CertificateAuthority: "/path/to/ca-from-overrides.crt", + }, + }, + }, + { + overrides: &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + Server: "https://host-from-overrides.com", + }, + AuthInfo: clientcmdapi.AuthInfo{ + Token: "https://host-from-overrides.com", + }, + }, + }, + { + overrides: &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + Server: "https://host-from-overrides.com", + CertificateAuthority: "/path/to/ca-from-overrides.crt", + }, + }, + }, + { + overrides: &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + CertificateAuthority: "/path/to/ca-from-overrides.crt", + }, + AuthInfo: clientcmdapi.AuthInfo{ + Token: "https://host-from-overrides.com", + }, + }, + }, + { + overrides: &ConfigOverrides{ + ClusterInfo: clientcmdapi.Cluster{ + Server: "https://host-from-overrides.com", + CertificateAuthority: "/path/to/ca-from-overrides.crt", + }, + AuthInfo: clientcmdapi.AuthInfo{ + Token: "https://host-from-overrides.com", + }, + }, + }, + { + overrides: &ConfigOverrides{}, + }, + } + + for _, tc := range tt { + expectedServer := "https://host-from-cluster.com" + expectedToken := "token-from-cluster" + expectedCAFile := "/path/to/ca-from-cluster.crt" + + icc := &inClusterClientConfig{ + inClusterConfigProvider: func() (*restclient.Config, error) { + return &restclient.Config{ + Host: expectedServer, + BearerToken: expectedToken, + TLSClientConfig: restclient.TLSClientConfig{ + CAFile: expectedCAFile, + }, + }, nil + }, + overrides: tc.overrides, + } + + clientConfig, err := icc.ClientConfig() + if err != nil { + t.Fatalf("Unxpected error: %v", err) + } + + if overridenServer := tc.overrides.ClusterInfo.Server; len(overridenServer) > 0 { + expectedServer = overridenServer + } + if overridenToken := tc.overrides.AuthInfo.Token; len(overridenToken) > 0 { + expectedToken = overridenToken + } + if overridenCAFile := tc.overrides.ClusterInfo.CertificateAuthority; len(overridenCAFile) > 0 { + expectedCAFile = overridenCAFile + } + + if clientConfig.Host != expectedServer { + t.Errorf("Expected server %v, got %v", expectedServer, clientConfig.Host) + } + if clientConfig.BearerToken != expectedToken { + t.Errorf("Expected token %v, got %v", expectedToken, clientConfig.BearerToken) + } + if clientConfig.TLSClientConfig.CAFile != expectedCAFile { + t.Errorf("Expected Certificate Authority %v, got %v", expectedCAFile, clientConfig.TLSClientConfig.CAFile) + } + } +} + +func matchBoolArg(expected, got bool, t *testing.T) { + if expected != got { + t.Errorf("Expected %v, got %v", expected, got) + } +} + +func matchStringArg(expected, got string, t *testing.T) { + if expected != got { + t.Errorf("Expected %q, got %q", expected, got) + } +} + +func matchByteArg(expected, got []byte, t *testing.T) { + if !reflect.DeepEqual(expected, got) { + t.Errorf("Expected %v, got %v", expected, got) + } +} + +func TestNamespaceOverride(t *testing.T) { + config := &DirectClientConfig{ + overrides: &ConfigOverrides{ + Context: clientcmdapi.Context{ + Namespace: "foo", + }, + }, + } + + ns, overridden, err := config.Namespace() + + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + if !overridden { + t.Errorf("Expected overridden = true") + } + + matchStringArg("foo", ns, t) +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/config.go b/vendor/k8s.io/client-go/tools/clientcmd/config.go new file mode 100644 index 000000000..16ccdaf20 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/config.go @@ -0,0 +1,472 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "errors" + "os" + "path" + "path/filepath" + "reflect" + "sort" + + "github.com/golang/glog" + + restclient "k8s.io/client-go/rest" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +// ConfigAccess is used by subcommands and methods in this package to load and modify the appropriate config files +type ConfigAccess interface { + // GetLoadingPrecedence returns the slice of files that should be used for loading and inspecting the config + GetLoadingPrecedence() []string + // GetStartingConfig returns the config that subcommands should being operating against. It may or may not be merged depending on loading rules + GetStartingConfig() (*clientcmdapi.Config, error) + // GetDefaultFilename returns the name of the file you should write into (create if necessary), if you're trying to create a new stanza as opposed to updating an existing one. + GetDefaultFilename() string + // IsExplicitFile indicates whether or not this command is interested in exactly one file. This implementation only ever does that via a flag, but implementations that handle local, global, and flags may have more + IsExplicitFile() bool + // GetExplicitFile returns the particular file this command is operating against. This implementation only ever has one, but implementations that handle local, global, and flags may have more + GetExplicitFile() string +} + +type PathOptions struct { + // GlobalFile is the full path to the file to load as the global (final) option + GlobalFile string + // EnvVar is the env var name that points to the list of kubeconfig files to load + EnvVar string + // ExplicitFileFlag is the name of the flag to use for prompting for the kubeconfig file + ExplicitFileFlag string + + // GlobalFileSubpath is an optional value used for displaying help + GlobalFileSubpath string + + LoadingRules *ClientConfigLoadingRules +} + +func (o *PathOptions) GetEnvVarFiles() []string { + if len(o.EnvVar) == 0 { + return []string{} + } + + envVarValue := os.Getenv(o.EnvVar) + if len(envVarValue) == 0 { + return []string{} + } + + return filepath.SplitList(envVarValue) +} + +func (o *PathOptions) GetLoadingPrecedence() []string { + if envVarFiles := o.GetEnvVarFiles(); len(envVarFiles) > 0 { + return envVarFiles + } + + return []string{o.GlobalFile} +} + +func (o *PathOptions) GetStartingConfig() (*clientcmdapi.Config, error) { + // don't mutate the original + loadingRules := *o.LoadingRules + loadingRules.Precedence = o.GetLoadingPrecedence() + + clientConfig := NewNonInteractiveDeferredLoadingClientConfig(&loadingRules, &ConfigOverrides{}) + rawConfig, err := clientConfig.RawConfig() + if os.IsNotExist(err) { + return clientcmdapi.NewConfig(), nil + } + if err != nil { + return nil, err + } + + return &rawConfig, nil +} + +func (o *PathOptions) GetDefaultFilename() string { + if o.IsExplicitFile() { + return o.GetExplicitFile() + } + + if envVarFiles := o.GetEnvVarFiles(); len(envVarFiles) > 0 { + if len(envVarFiles) == 1 { + return envVarFiles[0] + } + + // if any of the envvar files already exists, return it + for _, envVarFile := range envVarFiles { + if _, err := os.Stat(envVarFile); err == nil { + return envVarFile + } + } + + // otherwise, return the last one in the list + return envVarFiles[len(envVarFiles)-1] + } + + return o.GlobalFile +} + +func (o *PathOptions) IsExplicitFile() bool { + if len(o.LoadingRules.ExplicitPath) > 0 { + return true + } + + return false +} + +func (o *PathOptions) GetExplicitFile() string { + return o.LoadingRules.ExplicitPath +} + +func NewDefaultPathOptions() *PathOptions { + ret := &PathOptions{ + GlobalFile: RecommendedHomeFile, + EnvVar: RecommendedConfigPathEnvVar, + ExplicitFileFlag: RecommendedConfigPathFlag, + + GlobalFileSubpath: path.Join(RecommendedHomeDir, RecommendedFileName), + + LoadingRules: NewDefaultClientConfigLoadingRules(), + } + ret.LoadingRules.DoNotResolvePaths = true + + return ret +} + +// ModifyConfig takes a Config object, iterates through Clusters, AuthInfos, and Contexts, uses the LocationOfOrigin if specified or +// uses the default destination file to write the results into. This results in multiple file reads, but it's very easy to follow. +// Preferences and CurrentContext should always be set in the default destination file. Since we can't distinguish between empty and missing values +// (no nil strings), we're forced have separate handling for them. In the kubeconfig cases, newConfig should have at most one difference, +// that means that this code will only write into a single file. If you want to relativizePaths, you must provide a fully qualified path in any +// modified element. +func ModifyConfig(configAccess ConfigAccess, newConfig clientcmdapi.Config, relativizePaths bool) error { + possibleSources := configAccess.GetLoadingPrecedence() + // sort the possible kubeconfig files so we always "lock" in the same order + // to avoid deadlock (note: this can fail w/ symlinks, but... come on). + sort.Strings(possibleSources) + for _, filename := range possibleSources { + if err := lockFile(filename); err != nil { + return err + } + defer unlockFile(filename) + } + + startingConfig, err := configAccess.GetStartingConfig() + if err != nil { + return err + } + + // We need to find all differences, locate their original files, read a partial config to modify only that stanza and write out the file. + // Special case the test for current context and preferences since those always write to the default file. + if reflect.DeepEqual(*startingConfig, newConfig) { + // nothing to do + return nil + } + + if startingConfig.CurrentContext != newConfig.CurrentContext { + if err := writeCurrentContext(configAccess, newConfig.CurrentContext); err != nil { + return err + } + } + + if !reflect.DeepEqual(startingConfig.Preferences, newConfig.Preferences) { + if err := writePreferences(configAccess, newConfig.Preferences); err != nil { + return err + } + } + + // Search every cluster, authInfo, and context. First from new to old for differences, then from old to new for deletions + for key, cluster := range newConfig.Clusters { + startingCluster, exists := startingConfig.Clusters[key] + if !reflect.DeepEqual(cluster, startingCluster) || !exists { + destinationFile := cluster.LocationOfOrigin + if len(destinationFile) == 0 { + destinationFile = configAccess.GetDefaultFilename() + } + + configToWrite, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + t := *cluster + + configToWrite.Clusters[key] = &t + configToWrite.Clusters[key].LocationOfOrigin = destinationFile + if relativizePaths { + if err := RelativizeClusterLocalPaths(configToWrite.Clusters[key]); err != nil { + return err + } + } + + if err := WriteToFile(*configToWrite, destinationFile); err != nil { + return err + } + } + } + + for key, context := range newConfig.Contexts { + startingContext, exists := startingConfig.Contexts[key] + if !reflect.DeepEqual(context, startingContext) || !exists { + destinationFile := context.LocationOfOrigin + if len(destinationFile) == 0 { + destinationFile = configAccess.GetDefaultFilename() + } + + configToWrite, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + configToWrite.Contexts[key] = context + + if err := WriteToFile(*configToWrite, destinationFile); err != nil { + return err + } + } + } + + for key, authInfo := range newConfig.AuthInfos { + startingAuthInfo, exists := startingConfig.AuthInfos[key] + if !reflect.DeepEqual(authInfo, startingAuthInfo) || !exists { + destinationFile := authInfo.LocationOfOrigin + if len(destinationFile) == 0 { + destinationFile = configAccess.GetDefaultFilename() + } + + configToWrite, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + t := *authInfo + configToWrite.AuthInfos[key] = &t + configToWrite.AuthInfos[key].LocationOfOrigin = destinationFile + if relativizePaths { + if err := RelativizeAuthInfoLocalPaths(configToWrite.AuthInfos[key]); err != nil { + return err + } + } + + if err := WriteToFile(*configToWrite, destinationFile); err != nil { + return err + } + } + } + + for key, cluster := range startingConfig.Clusters { + if _, exists := newConfig.Clusters[key]; !exists { + destinationFile := cluster.LocationOfOrigin + if len(destinationFile) == 0 { + destinationFile = configAccess.GetDefaultFilename() + } + + configToWrite, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + delete(configToWrite.Clusters, key) + + if err := WriteToFile(*configToWrite, destinationFile); err != nil { + return err + } + } + } + + for key, context := range startingConfig.Contexts { + if _, exists := newConfig.Contexts[key]; !exists { + destinationFile := context.LocationOfOrigin + if len(destinationFile) == 0 { + destinationFile = configAccess.GetDefaultFilename() + } + + configToWrite, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + delete(configToWrite.Contexts, key) + + if err := WriteToFile(*configToWrite, destinationFile); err != nil { + return err + } + } + } + + for key, authInfo := range startingConfig.AuthInfos { + if _, exists := newConfig.AuthInfos[key]; !exists { + destinationFile := authInfo.LocationOfOrigin + if len(destinationFile) == 0 { + destinationFile = configAccess.GetDefaultFilename() + } + + configToWrite, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + delete(configToWrite.AuthInfos, key) + + if err := WriteToFile(*configToWrite, destinationFile); err != nil { + return err + } + } + } + + return nil +} + +func PersisterForUser(configAccess ConfigAccess, user string) restclient.AuthProviderConfigPersister { + return &persister{configAccess, user} +} + +type persister struct { + configAccess ConfigAccess + user string +} + +func (p *persister) Persist(config map[string]string) error { + newConfig, err := p.configAccess.GetStartingConfig() + if err != nil { + return err + } + authInfo, ok := newConfig.AuthInfos[p.user] + if ok && authInfo.AuthProvider != nil { + authInfo.AuthProvider.Config = config + ModifyConfig(p.configAccess, *newConfig, false) + } + return nil +} + +// writeCurrentContext takes three possible paths. +// If newCurrentContext is the same as the startingConfig's current context, then we exit. +// If newCurrentContext has a value, then that value is written into the default destination file. +// If newCurrentContext is empty, then we find the config file that is setting the CurrentContext and clear the value from that file +func writeCurrentContext(configAccess ConfigAccess, newCurrentContext string) error { + if startingConfig, err := configAccess.GetStartingConfig(); err != nil { + return err + } else if startingConfig.CurrentContext == newCurrentContext { + return nil + } + + if configAccess.IsExplicitFile() { + file := configAccess.GetExplicitFile() + currConfig, err := getConfigFromFile(file) + if err != nil { + return err + } + currConfig.CurrentContext = newCurrentContext + if err := WriteToFile(*currConfig, file); err != nil { + return err + } + + return nil + } + + if len(newCurrentContext) > 0 { + destinationFile := configAccess.GetDefaultFilename() + config, err := getConfigFromFile(destinationFile) + if err != nil { + return err + } + config.CurrentContext = newCurrentContext + + if err := WriteToFile(*config, destinationFile); err != nil { + return err + } + + return nil + } + + // we're supposed to be clearing the current context. We need to find the first spot in the chain that is setting it and clear it + for _, file := range configAccess.GetLoadingPrecedence() { + if _, err := os.Stat(file); err == nil { + currConfig, err := getConfigFromFile(file) + if err != nil { + return err + } + + if len(currConfig.CurrentContext) > 0 { + currConfig.CurrentContext = newCurrentContext + if err := WriteToFile(*currConfig, file); err != nil { + return err + } + + return nil + } + } + } + + return errors.New("no config found to write context") +} + +func writePreferences(configAccess ConfigAccess, newPrefs clientcmdapi.Preferences) error { + if startingConfig, err := configAccess.GetStartingConfig(); err != nil { + return err + } else if reflect.DeepEqual(startingConfig.Preferences, newPrefs) { + return nil + } + + if configAccess.IsExplicitFile() { + file := configAccess.GetExplicitFile() + currConfig, err := getConfigFromFile(file) + if err != nil { + return err + } + currConfig.Preferences = newPrefs + if err := WriteToFile(*currConfig, file); err != nil { + return err + } + + return nil + } + + for _, file := range configAccess.GetLoadingPrecedence() { + currConfig, err := getConfigFromFile(file) + if err != nil { + return err + } + + if !reflect.DeepEqual(currConfig.Preferences, newPrefs) { + currConfig.Preferences = newPrefs + if err := WriteToFile(*currConfig, file); err != nil { + return err + } + + return nil + } + } + + return errors.New("no config found to write preferences") +} + +// getConfigFromFile tries to read a kubeconfig file and if it can't, returns an error. One exception, missing files result in empty configs, not an error. +func getConfigFromFile(filename string) (*clientcmdapi.Config, error) { + config, err := LoadFromFile(filename) + if err != nil && !os.IsNotExist(err) { + return nil, err + } + if config == nil { + config = clientcmdapi.NewConfig() + } + return config, nil +} + +// GetConfigFromFileOrDie tries to read a kubeconfig file and if it can't, it calls exit. One exception, missing files result in empty configs, not an exit +func GetConfigFromFileOrDie(filename string) *clientcmdapi.Config { + config, err := getConfigFromFile(filename) + if err != nil { + glog.FatalDepth(1, err) + } + + return config +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/doc.go b/vendor/k8s.io/client-go/tools/clientcmd/doc.go new file mode 100644 index 000000000..424311ee1 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/doc.go @@ -0,0 +1,37 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package clientcmd provides one stop shopping for building a working client from a fixed config, +from a .kubeconfig file, from command line flags, or from any merged combination. + +Sample usage from merged .kubeconfig files (local directory, home directory) + + loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() + // if you want to change the loading rules (which files in which order), you can do so here + + configOverrides := &clientcmd.ConfigOverrides{} + // if you want to change override values or bind them to flags, there are methods to help you + + kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides) + config, err := kubeConfig.ClientConfig() + if err != nil { + // Do something + } + client, err := metav1.New(config) + // ... +*/ +package clientcmd // import "k8s.io/client-go/tools/clientcmd" diff --git a/vendor/k8s.io/client-go/tools/clientcmd/helpers.go b/vendor/k8s.io/client-go/tools/clientcmd/helpers.go new file mode 100644 index 000000000..b609d1a76 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/helpers.go @@ -0,0 +1,35 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "fmt" + "strconv" + "time" +) + +// ParseTimeout returns a parsed duration from a string +// A duration string value must be a positive integer, optionally followed by a corresponding time unit (s|m|h). +func ParseTimeout(duration string) (time.Duration, error) { + if i, err := strconv.ParseInt(duration, 10, 64); err == nil && i >= 0 { + return (time.Duration(i) * time.Second), nil + } + if requestTimeout, err := time.ParseDuration(duration); err == nil { + return requestTimeout, nil + } + return 0, fmt.Errorf("Invalid timeout value. Timeout must be a single integer in seconds, or an integer followed by a corresponding time unit (e.g. 1s | 2m | 3h)") +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/loader.go b/vendor/k8s.io/client-go/tools/clientcmd/loader.go new file mode 100644 index 000000000..6ac83b5c8 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/loader.go @@ -0,0 +1,612 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "fmt" + "io" + "io/ioutil" + "os" + "path" + "path/filepath" + "reflect" + goruntime "runtime" + "strings" + + "github.com/golang/glog" + "github.com/imdario/mergo" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + utilerrors "k8s.io/apimachinery/pkg/util/errors" + restclient "k8s.io/client-go/rest" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" + clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest" + "k8s.io/client-go/util/homedir" +) + +const ( + RecommendedConfigPathFlag = "kubeconfig" + RecommendedConfigPathEnvVar = "KUBECONFIG" + RecommendedHomeDir = ".kube" + RecommendedFileName = "config" + RecommendedSchemaName = "schema" +) + +var ( + RecommendedConfigDir = path.Join(homedir.HomeDir(), RecommendedHomeDir) + RecommendedHomeFile = path.Join(RecommendedConfigDir, RecommendedFileName) + RecommendedSchemaFile = path.Join(RecommendedConfigDir, RecommendedSchemaName) +) + +// currentMigrationRules returns a map that holds the history of recommended home directories used in previous versions. +// Any future changes to RecommendedHomeFile and related are expected to add a migration rule here, in order to make +// sure existing config files are migrated to their new locations properly. +func currentMigrationRules() map[string]string { + oldRecommendedHomeFile := path.Join(os.Getenv("HOME"), "/.kube/.kubeconfig") + oldRecommendedWindowsHomeFile := path.Join(os.Getenv("HOME"), RecommendedHomeDir, RecommendedFileName) + + migrationRules := map[string]string{} + migrationRules[RecommendedHomeFile] = oldRecommendedHomeFile + if goruntime.GOOS == "windows" { + migrationRules[RecommendedHomeFile] = oldRecommendedWindowsHomeFile + } + return migrationRules +} + +type ClientConfigLoader interface { + ConfigAccess + // IsDefaultConfig returns true if the returned config matches the defaults. + IsDefaultConfig(*restclient.Config) bool + // Load returns the latest config + Load() (*clientcmdapi.Config, error) +} + +type KubeconfigGetter func() (*clientcmdapi.Config, error) + +type ClientConfigGetter struct { + kubeconfigGetter KubeconfigGetter +} + +// ClientConfigGetter implements the ClientConfigLoader interface. +var _ ClientConfigLoader = &ClientConfigGetter{} + +func (g *ClientConfigGetter) Load() (*clientcmdapi.Config, error) { + return g.kubeconfigGetter() +} + +func (g *ClientConfigGetter) GetLoadingPrecedence() []string { + return nil +} +func (g *ClientConfigGetter) GetStartingConfig() (*clientcmdapi.Config, error) { + return g.kubeconfigGetter() +} +func (g *ClientConfigGetter) GetDefaultFilename() string { + return "" +} +func (g *ClientConfigGetter) IsExplicitFile() bool { + return false +} +func (g *ClientConfigGetter) GetExplicitFile() string { + return "" +} +func (g *ClientConfigGetter) IsDefaultConfig(config *restclient.Config) bool { + return false +} + +// ClientConfigLoadingRules is an ExplicitPath and string slice of specific locations that are used for merging together a Config +// Callers can put the chain together however they want, but we'd recommend: +// EnvVarPathFiles if set (a list of files if set) OR the HomeDirectoryPath +// ExplicitPath is special, because if a user specifically requests a certain file be used and error is reported if thie file is not present +type ClientConfigLoadingRules struct { + ExplicitPath string + Precedence []string + + // MigrationRules is a map of destination files to source files. If a destination file is not present, then the source file is checked. + // If the source file is present, then it is copied to the destination file BEFORE any further loading happens. + MigrationRules map[string]string + + // DoNotResolvePaths indicates whether or not to resolve paths with respect to the originating files. This is phrased as a negative so + // that a default object that doesn't set this will usually get the behavior it wants. + DoNotResolvePaths bool + + // DefaultClientConfig is an optional field indicating what rules to use to calculate a default configuration. + // This should match the overrides passed in to ClientConfig loader. + DefaultClientConfig ClientConfig +} + +// ClientConfigLoadingRules implements the ClientConfigLoader interface. +var _ ClientConfigLoader = &ClientConfigLoadingRules{} + +// NewDefaultClientConfigLoadingRules returns a ClientConfigLoadingRules object with default fields filled in. You are not required to +// use this constructor +func NewDefaultClientConfigLoadingRules() *ClientConfigLoadingRules { + chain := []string{} + + envVarFiles := os.Getenv(RecommendedConfigPathEnvVar) + if len(envVarFiles) != 0 { + chain = append(chain, filepath.SplitList(envVarFiles)...) + + } else { + chain = append(chain, RecommendedHomeFile) + } + + return &ClientConfigLoadingRules{ + Precedence: chain, + MigrationRules: currentMigrationRules(), + } +} + +// Load starts by running the MigrationRules and then +// takes the loading rules and returns a Config object based on following rules. +// if the ExplicitPath, return the unmerged explicit file +// Otherwise, return a merged config based on the Precedence slice +// A missing ExplicitPath file produces an error. Empty filenames or other missing files are ignored. +// Read errors or files with non-deserializable content produce errors. +// The first file to set a particular map key wins and map key's value is never changed. +// BUT, if you set a struct value that is NOT contained inside of map, the value WILL be changed. +// This results in some odd looking logic to merge in one direction, merge in the other, and then merge the two. +// It also means that if two files specify a "red-user", only values from the first file's red-user are used. Even +// non-conflicting entries from the second file's "red-user" are discarded. +// Relative paths inside of the .kubeconfig files are resolved against the .kubeconfig file's parent folder +// and only absolute file paths are returned. +func (rules *ClientConfigLoadingRules) Load() (*clientcmdapi.Config, error) { + if err := rules.Migrate(); err != nil { + return nil, err + } + + errlist := []error{} + + kubeConfigFiles := []string{} + + // Make sure a file we were explicitly told to use exists + if len(rules.ExplicitPath) > 0 { + if _, err := os.Stat(rules.ExplicitPath); os.IsNotExist(err) { + return nil, err + } + kubeConfigFiles = append(kubeConfigFiles, rules.ExplicitPath) + + } else { + kubeConfigFiles = append(kubeConfigFiles, rules.Precedence...) + } + + kubeconfigs := []*clientcmdapi.Config{} + // read and cache the config files so that we only look at them once + for _, filename := range kubeConfigFiles { + if len(filename) == 0 { + // no work to do + continue + } + + config, err := LoadFromFile(filename) + if os.IsNotExist(err) { + // skip missing files + continue + } + if err != nil { + errlist = append(errlist, fmt.Errorf("Error loading config file \"%s\": %v", filename, err)) + continue + } + + kubeconfigs = append(kubeconfigs, config) + } + + // first merge all of our maps + mapConfig := clientcmdapi.NewConfig() + + for _, kubeconfig := range kubeconfigs { + mergo.Merge(mapConfig, kubeconfig) + } + + // merge all of the struct values in the reverse order so that priority is given correctly + // errors are not added to the list the second time + nonMapConfig := clientcmdapi.NewConfig() + for i := len(kubeconfigs) - 1; i >= 0; i-- { + kubeconfig := kubeconfigs[i] + mergo.Merge(nonMapConfig, kubeconfig) + } + + // since values are overwritten, but maps values are not, we can merge the non-map config on top of the map config and + // get the values we expect. + config := clientcmdapi.NewConfig() + mergo.Merge(config, mapConfig) + mergo.Merge(config, nonMapConfig) + + if rules.ResolvePaths() { + if err := ResolveLocalPaths(config); err != nil { + errlist = append(errlist, err) + } + } + return config, utilerrors.NewAggregate(errlist) +} + +// Migrate uses the MigrationRules map. If a destination file is not present, then the source file is checked. +// If the source file is present, then it is copied to the destination file BEFORE any further loading happens. +func (rules *ClientConfigLoadingRules) Migrate() error { + if rules.MigrationRules == nil { + return nil + } + + for destination, source := range rules.MigrationRules { + if _, err := os.Stat(destination); err == nil { + // if the destination already exists, do nothing + continue + } else if os.IsPermission(err) { + // if we can't access the file, skip it + continue + } else if !os.IsNotExist(err) { + // if we had an error other than non-existence, fail + return err + } + + if sourceInfo, err := os.Stat(source); err != nil { + if os.IsNotExist(err) || os.IsPermission(err) { + // if the source file doesn't exist or we can't access it, there's no work to do. + continue + } + + // if we had an error other than non-existence, fail + return err + } else if sourceInfo.IsDir() { + return fmt.Errorf("cannot migrate %v to %v because it is a directory", source, destination) + } + + in, err := os.Open(source) + if err != nil { + return err + } + defer in.Close() + out, err := os.Create(destination) + if err != nil { + return err + } + defer out.Close() + + if _, err = io.Copy(out, in); err != nil { + return err + } + } + + return nil +} + +// GetLoadingPrecedence implements ConfigAccess +func (rules *ClientConfigLoadingRules) GetLoadingPrecedence() []string { + return rules.Precedence +} + +// GetStartingConfig implements ConfigAccess +func (rules *ClientConfigLoadingRules) GetStartingConfig() (*clientcmdapi.Config, error) { + clientConfig := NewNonInteractiveDeferredLoadingClientConfig(rules, &ConfigOverrides{}) + rawConfig, err := clientConfig.RawConfig() + if os.IsNotExist(err) { + return clientcmdapi.NewConfig(), nil + } + if err != nil { + return nil, err + } + + return &rawConfig, nil +} + +// GetDefaultFilename implements ConfigAccess +func (rules *ClientConfigLoadingRules) GetDefaultFilename() string { + // Explicit file if we have one. + if rules.IsExplicitFile() { + return rules.GetExplicitFile() + } + // Otherwise, first existing file from precedence. + for _, filename := range rules.GetLoadingPrecedence() { + if _, err := os.Stat(filename); err == nil { + return filename + } + } + // If none exists, use the first from precedence. + if len(rules.Precedence) > 0 { + return rules.Precedence[0] + } + return "" +} + +// IsExplicitFile implements ConfigAccess +func (rules *ClientConfigLoadingRules) IsExplicitFile() bool { + return len(rules.ExplicitPath) > 0 +} + +// GetExplicitFile implements ConfigAccess +func (rules *ClientConfigLoadingRules) GetExplicitFile() string { + return rules.ExplicitPath +} + +// IsDefaultConfig returns true if the provided configuration matches the default +func (rules *ClientConfigLoadingRules) IsDefaultConfig(config *restclient.Config) bool { + if rules.DefaultClientConfig == nil { + return false + } + defaultConfig, err := rules.DefaultClientConfig.ClientConfig() + if err != nil { + return false + } + return reflect.DeepEqual(config, defaultConfig) +} + +// LoadFromFile takes a filename and deserializes the contents into Config object +func LoadFromFile(filename string) (*clientcmdapi.Config, error) { + kubeconfigBytes, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + config, err := Load(kubeconfigBytes) + if err != nil { + return nil, err + } + glog.V(6).Infoln("Config loaded from file", filename) + + // set LocationOfOrigin on every Cluster, User, and Context + for key, obj := range config.AuthInfos { + obj.LocationOfOrigin = filename + config.AuthInfos[key] = obj + } + for key, obj := range config.Clusters { + obj.LocationOfOrigin = filename + config.Clusters[key] = obj + } + for key, obj := range config.Contexts { + obj.LocationOfOrigin = filename + config.Contexts[key] = obj + } + + if config.AuthInfos == nil { + config.AuthInfos = map[string]*clientcmdapi.AuthInfo{} + } + if config.Clusters == nil { + config.Clusters = map[string]*clientcmdapi.Cluster{} + } + if config.Contexts == nil { + config.Contexts = map[string]*clientcmdapi.Context{} + } + + return config, nil +} + +// Load takes a byte slice and deserializes the contents into Config object. +// Encapsulates deserialization without assuming the source is a file. +func Load(data []byte) (*clientcmdapi.Config, error) { + config := clientcmdapi.NewConfig() + // if there's no data in a file, return the default object instead of failing (DecodeInto reject empty input) + if len(data) == 0 { + return config, nil + } + decoded, _, err := clientcmdlatest.Codec.Decode(data, &schema.GroupVersionKind{Version: clientcmdlatest.Version, Kind: "Config"}, config) + if err != nil { + return nil, err + } + return decoded.(*clientcmdapi.Config), nil +} + +// WriteToFile serializes the config to yaml and writes it out to a file. If not present, it creates the file with the mode 0600. If it is present +// it stomps the contents +func WriteToFile(config clientcmdapi.Config, filename string) error { + content, err := Write(config) + if err != nil { + return err + } + dir := filepath.Dir(filename) + if _, err := os.Stat(dir); os.IsNotExist(err) { + if err = os.MkdirAll(dir, 0755); err != nil { + return err + } + } + + if err := ioutil.WriteFile(filename, content, 0600); err != nil { + return err + } + return nil +} + +func lockFile(filename string) error { + // TODO: find a way to do this with actual file locks. Will + // probably need seperate solution for windows and linux. + + // Make sure the dir exists before we try to create a lock file. + dir := filepath.Dir(filename) + if _, err := os.Stat(dir); os.IsNotExist(err) { + if err = os.MkdirAll(dir, 0755); err != nil { + return err + } + } + f, err := os.OpenFile(lockName(filename), os.O_CREATE|os.O_EXCL, 0) + if err != nil { + return err + } + f.Close() + return nil +} + +func unlockFile(filename string) error { + return os.Remove(lockName(filename)) +} + +func lockName(filename string) string { + return filename + ".lock" +} + +// Write serializes the config to yaml. +// Encapsulates serialization without assuming the destination is a file. +func Write(config clientcmdapi.Config) ([]byte, error) { + return runtime.Encode(clientcmdlatest.Codec, &config) +} + +func (rules ClientConfigLoadingRules) ResolvePaths() bool { + return !rules.DoNotResolvePaths +} + +// ResolveLocalPaths resolves all relative paths in the config object with respect to the stanza's LocationOfOrigin +// this cannot be done directly inside of LoadFromFile because doing so there would make it impossible to load a file without +// modification of its contents. +func ResolveLocalPaths(config *clientcmdapi.Config) error { + for _, cluster := range config.Clusters { + if len(cluster.LocationOfOrigin) == 0 { + continue + } + base, err := filepath.Abs(filepath.Dir(cluster.LocationOfOrigin)) + if err != nil { + return fmt.Errorf("Could not determine the absolute path of config file %s: %v", cluster.LocationOfOrigin, err) + } + + if err := ResolvePaths(GetClusterFileReferences(cluster), base); err != nil { + return err + } + } + for _, authInfo := range config.AuthInfos { + if len(authInfo.LocationOfOrigin) == 0 { + continue + } + base, err := filepath.Abs(filepath.Dir(authInfo.LocationOfOrigin)) + if err != nil { + return fmt.Errorf("Could not determine the absolute path of config file %s: %v", authInfo.LocationOfOrigin, err) + } + + if err := ResolvePaths(GetAuthInfoFileReferences(authInfo), base); err != nil { + return err + } + } + + return nil +} + +// RelativizeClusterLocalPaths first absolutizes the paths by calling ResolveLocalPaths. This assumes that any NEW path is already +// absolute, but any existing path will be resolved relative to LocationOfOrigin +func RelativizeClusterLocalPaths(cluster *clientcmdapi.Cluster) error { + if len(cluster.LocationOfOrigin) == 0 { + return fmt.Errorf("no location of origin for %s", cluster.Server) + } + base, err := filepath.Abs(filepath.Dir(cluster.LocationOfOrigin)) + if err != nil { + return fmt.Errorf("could not determine the absolute path of config file %s: %v", cluster.LocationOfOrigin, err) + } + + if err := ResolvePaths(GetClusterFileReferences(cluster), base); err != nil { + return err + } + if err := RelativizePathWithNoBacksteps(GetClusterFileReferences(cluster), base); err != nil { + return err + } + + return nil +} + +// RelativizeAuthInfoLocalPaths first absolutizes the paths by calling ResolveLocalPaths. This assumes that any NEW path is already +// absolute, but any existing path will be resolved relative to LocationOfOrigin +func RelativizeAuthInfoLocalPaths(authInfo *clientcmdapi.AuthInfo) error { + if len(authInfo.LocationOfOrigin) == 0 { + return fmt.Errorf("no location of origin for %v", authInfo) + } + base, err := filepath.Abs(filepath.Dir(authInfo.LocationOfOrigin)) + if err != nil { + return fmt.Errorf("could not determine the absolute path of config file %s: %v", authInfo.LocationOfOrigin, err) + } + + if err := ResolvePaths(GetAuthInfoFileReferences(authInfo), base); err != nil { + return err + } + if err := RelativizePathWithNoBacksteps(GetAuthInfoFileReferences(authInfo), base); err != nil { + return err + } + + return nil +} + +func RelativizeConfigPaths(config *clientcmdapi.Config, base string) error { + return RelativizePathWithNoBacksteps(GetConfigFileReferences(config), base) +} + +func ResolveConfigPaths(config *clientcmdapi.Config, base string) error { + return ResolvePaths(GetConfigFileReferences(config), base) +} + +func GetConfigFileReferences(config *clientcmdapi.Config) []*string { + refs := []*string{} + + for _, cluster := range config.Clusters { + refs = append(refs, GetClusterFileReferences(cluster)...) + } + for _, authInfo := range config.AuthInfos { + refs = append(refs, GetAuthInfoFileReferences(authInfo)...) + } + + return refs +} + +func GetClusterFileReferences(cluster *clientcmdapi.Cluster) []*string { + return []*string{&cluster.CertificateAuthority} +} + +func GetAuthInfoFileReferences(authInfo *clientcmdapi.AuthInfo) []*string { + return []*string{&authInfo.ClientCertificate, &authInfo.ClientKey, &authInfo.TokenFile} +} + +// ResolvePaths updates the given refs to be absolute paths, relative to the given base directory +func ResolvePaths(refs []*string, base string) error { + for _, ref := range refs { + // Don't resolve empty paths + if len(*ref) > 0 { + // Don't resolve absolute paths + if !filepath.IsAbs(*ref) { + *ref = filepath.Join(base, *ref) + } + } + } + return nil +} + +// RelativizePathWithNoBacksteps updates the given refs to be relative paths, relative to the given base directory as long as they do not require backsteps. +// Any path requiring a backstep is left as-is as long it is absolute. Any non-absolute path that can't be relativized produces an error +func RelativizePathWithNoBacksteps(refs []*string, base string) error { + for _, ref := range refs { + // Don't relativize empty paths + if len(*ref) > 0 { + rel, err := MakeRelative(*ref, base) + if err != nil { + return err + } + + // if we have a backstep, don't mess with the path + if strings.HasPrefix(rel, "../") { + if filepath.IsAbs(*ref) { + continue + } + + return fmt.Errorf("%v requires backsteps and is not absolute", *ref) + } + + *ref = rel + } + } + return nil +} + +func MakeRelative(path, base string) (string, error) { + if len(path) > 0 { + rel, err := filepath.Rel(base, path) + if err != nil { + return path, err + } + return rel, nil + } + return path, nil +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/loader_test.go b/vendor/k8s.io/client-go/tools/clientcmd/loader_test.go new file mode 100644 index 000000000..74319788a --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/loader_test.go @@ -0,0 +1,579 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "reflect" + "strings" + "testing" + + "github.com/ghodss/yaml" + + "k8s.io/apimachinery/pkg/runtime" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" + clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest" +) + +var ( + testConfigAlfa = clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "red-user": {Token: "red-token"}}, + Clusters: map[string]*clientcmdapi.Cluster{ + "cow-cluster": {Server: "http://cow.org:8080"}}, + Contexts: map[string]*clientcmdapi.Context{ + "federal-context": {AuthInfo: "red-user", Cluster: "cow-cluster", Namespace: "hammer-ns"}}, + } + testConfigBravo = clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "black-user": {Token: "black-token"}}, + Clusters: map[string]*clientcmdapi.Cluster{ + "pig-cluster": {Server: "http://pig.org:8080"}}, + Contexts: map[string]*clientcmdapi.Context{ + "queen-anne-context": {AuthInfo: "black-user", Cluster: "pig-cluster", Namespace: "saw-ns"}}, + } + testConfigCharlie = clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "green-user": {Token: "green-token"}}, + Clusters: map[string]*clientcmdapi.Cluster{ + "horse-cluster": {Server: "http://horse.org:8080"}}, + Contexts: map[string]*clientcmdapi.Context{ + "shaker-context": {AuthInfo: "green-user", Cluster: "horse-cluster", Namespace: "chisel-ns"}}, + } + testConfigDelta = clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "blue-user": {Token: "blue-token"}}, + Clusters: map[string]*clientcmdapi.Cluster{ + "chicken-cluster": {Server: "http://chicken.org:8080"}}, + Contexts: map[string]*clientcmdapi.Context{ + "gothic-context": {AuthInfo: "blue-user", Cluster: "chicken-cluster", Namespace: "plane-ns"}}, + } + + testConfigConflictAlfa = clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "red-user": {Token: "a-different-red-token"}, + "yellow-user": {Token: "yellow-token"}}, + Clusters: map[string]*clientcmdapi.Cluster{ + "cow-cluster": {Server: "http://a-different-cow.org:8080", InsecureSkipTLSVerify: true}, + "donkey-cluster": {Server: "http://donkey.org:8080", InsecureSkipTLSVerify: true}}, + CurrentContext: "federal-context", + } +) + +func TestNonExistentCommandLineFile(t *testing.T) { + loadingRules := ClientConfigLoadingRules{ + ExplicitPath: "bogus_file", + } + + _, err := loadingRules.Load() + if err == nil { + t.Fatalf("Expected error for missing command-line file, got none") + } + if !strings.Contains(err.Error(), "bogus_file") { + t.Fatalf("Expected error about 'bogus_file', got %s", err.Error()) + } +} + +func TestToleratingMissingFiles(t *testing.T) { + loadingRules := ClientConfigLoadingRules{ + Precedence: []string{"bogus1", "bogus2", "bogus3"}, + } + + _, err := loadingRules.Load() + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } +} + +func TestErrorReadingFile(t *testing.T) { + commandLineFile, _ := ioutil.TempFile("", "") + defer os.Remove(commandLineFile.Name()) + + if err := ioutil.WriteFile(commandLineFile.Name(), []byte("bogus value"), 0644); err != nil { + t.Fatalf("Error creating tempfile: %v", err) + } + + loadingRules := ClientConfigLoadingRules{ + ExplicitPath: commandLineFile.Name(), + } + + _, err := loadingRules.Load() + if err == nil { + t.Fatalf("Expected error for unloadable file, got none") + } + if !strings.Contains(err.Error(), commandLineFile.Name()) { + t.Fatalf("Expected error about '%s', got %s", commandLineFile.Name(), err.Error()) + } +} + +func TestErrorReadingNonFile(t *testing.T) { + tmpdir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatalf("Couldn't create tmpdir") + } + defer os.RemoveAll(tmpdir) + + loadingRules := ClientConfigLoadingRules{ + ExplicitPath: tmpdir, + } + + _, err = loadingRules.Load() + if err == nil { + t.Fatalf("Expected error for non-file, got none") + } + if !strings.Contains(err.Error(), tmpdir) { + t.Fatalf("Expected error about '%s', got %s", tmpdir, err.Error()) + } +} + +func TestConflictingCurrentContext(t *testing.T) { + commandLineFile, _ := ioutil.TempFile("", "") + defer os.Remove(commandLineFile.Name()) + envVarFile, _ := ioutil.TempFile("", "") + defer os.Remove(envVarFile.Name()) + + mockCommandLineConfig := clientcmdapi.Config{ + CurrentContext: "any-context-value", + } + mockEnvVarConfig := clientcmdapi.Config{ + CurrentContext: "a-different-context", + } + + WriteToFile(mockCommandLineConfig, commandLineFile.Name()) + WriteToFile(mockEnvVarConfig, envVarFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + ExplicitPath: commandLineFile.Name(), + Precedence: []string{envVarFile.Name()}, + } + + mergedConfig, err := loadingRules.Load() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + if mergedConfig.CurrentContext != mockCommandLineConfig.CurrentContext { + t.Errorf("expected %v, got %v", mockCommandLineConfig.CurrentContext, mergedConfig.CurrentContext) + } +} + +func TestLoadingEmptyMaps(t *testing.T) { + configFile, _ := ioutil.TempFile("", "") + defer os.Remove(configFile.Name()) + + mockConfig := clientcmdapi.Config{ + CurrentContext: "any-context-value", + } + + WriteToFile(mockConfig, configFile.Name()) + + config, err := LoadFromFile(configFile.Name()) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + if config.Clusters == nil { + t.Error("expected config.Clusters to be non-nil") + } + if config.AuthInfos == nil { + t.Error("expected config.AuthInfos to be non-nil") + } + if config.Contexts == nil { + t.Error("expected config.Contexts to be non-nil") + } +} + +func TestResolveRelativePaths(t *testing.T) { + pathResolutionConfig1 := clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "relative-user-1": {ClientCertificate: "relative/client/cert", ClientKey: "../relative/client/key"}, + "absolute-user-1": {ClientCertificate: "/absolute/client/cert", ClientKey: "/absolute/client/key"}, + }, + Clusters: map[string]*clientcmdapi.Cluster{ + "relative-server-1": {CertificateAuthority: "../relative/ca"}, + "absolute-server-1": {CertificateAuthority: "/absolute/ca"}, + }, + } + pathResolutionConfig2 := clientcmdapi.Config{ + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + "relative-user-2": {ClientCertificate: "relative/client/cert2", ClientKey: "../relative/client/key2"}, + "absolute-user-2": {ClientCertificate: "/absolute/client/cert2", ClientKey: "/absolute/client/key2"}, + }, + Clusters: map[string]*clientcmdapi.Cluster{ + "relative-server-2": {CertificateAuthority: "../relative/ca2"}, + "absolute-server-2": {CertificateAuthority: "/absolute/ca2"}, + }, + } + + configDir1, _ := ioutil.TempDir("", "") + defer os.RemoveAll(configDir1) + configFile1 := path.Join(configDir1, ".kubeconfig") + configDir1, _ = filepath.Abs(configDir1) + + configDir2, _ := ioutil.TempDir("", "") + defer os.RemoveAll(configDir2) + configDir2, _ = ioutil.TempDir(configDir2, "") + configFile2 := path.Join(configDir2, ".kubeconfig") + configDir2, _ = filepath.Abs(configDir2) + + WriteToFile(pathResolutionConfig1, configFile1) + WriteToFile(pathResolutionConfig2, configFile2) + + loadingRules := ClientConfigLoadingRules{ + Precedence: []string{configFile1, configFile2}, + } + + mergedConfig, err := loadingRules.Load() + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + foundClusterCount := 0 + for key, cluster := range mergedConfig.Clusters { + if key == "relative-server-1" { + foundClusterCount++ + matchStringArg(path.Join(configDir1, pathResolutionConfig1.Clusters["relative-server-1"].CertificateAuthority), cluster.CertificateAuthority, t) + } + if key == "relative-server-2" { + foundClusterCount++ + matchStringArg(path.Join(configDir2, pathResolutionConfig2.Clusters["relative-server-2"].CertificateAuthority), cluster.CertificateAuthority, t) + } + if key == "absolute-server-1" { + foundClusterCount++ + matchStringArg(pathResolutionConfig1.Clusters["absolute-server-1"].CertificateAuthority, cluster.CertificateAuthority, t) + } + if key == "absolute-server-2" { + foundClusterCount++ + matchStringArg(pathResolutionConfig2.Clusters["absolute-server-2"].CertificateAuthority, cluster.CertificateAuthority, t) + } + } + if foundClusterCount != 4 { + t.Errorf("Expected 4 clusters, found %v: %v", foundClusterCount, mergedConfig.Clusters) + } + + foundAuthInfoCount := 0 + for key, authInfo := range mergedConfig.AuthInfos { + if key == "relative-user-1" { + foundAuthInfoCount++ + matchStringArg(path.Join(configDir1, pathResolutionConfig1.AuthInfos["relative-user-1"].ClientCertificate), authInfo.ClientCertificate, t) + matchStringArg(path.Join(configDir1, pathResolutionConfig1.AuthInfos["relative-user-1"].ClientKey), authInfo.ClientKey, t) + } + if key == "relative-user-2" { + foundAuthInfoCount++ + matchStringArg(path.Join(configDir2, pathResolutionConfig2.AuthInfos["relative-user-2"].ClientCertificate), authInfo.ClientCertificate, t) + matchStringArg(path.Join(configDir2, pathResolutionConfig2.AuthInfos["relative-user-2"].ClientKey), authInfo.ClientKey, t) + } + if key == "absolute-user-1" { + foundAuthInfoCount++ + matchStringArg(pathResolutionConfig1.AuthInfos["absolute-user-1"].ClientCertificate, authInfo.ClientCertificate, t) + matchStringArg(pathResolutionConfig1.AuthInfos["absolute-user-1"].ClientKey, authInfo.ClientKey, t) + } + if key == "absolute-user-2" { + foundAuthInfoCount++ + matchStringArg(pathResolutionConfig2.AuthInfos["absolute-user-2"].ClientCertificate, authInfo.ClientCertificate, t) + matchStringArg(pathResolutionConfig2.AuthInfos["absolute-user-2"].ClientKey, authInfo.ClientKey, t) + } + } + if foundAuthInfoCount != 4 { + t.Errorf("Expected 4 users, found %v: %v", foundAuthInfoCount, mergedConfig.AuthInfos) + } + +} + +func TestMigratingFile(t *testing.T) { + sourceFile, _ := ioutil.TempFile("", "") + defer os.Remove(sourceFile.Name()) + destinationFile, _ := ioutil.TempFile("", "") + // delete the file so that we'll write to it + os.Remove(destinationFile.Name()) + + WriteToFile(testConfigAlfa, sourceFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + MigrationRules: map[string]string{destinationFile.Name(): sourceFile.Name()}, + } + + if _, err := loadingRules.Load(); err != nil { + t.Errorf("unexpected error %v", err) + } + + // the load should have recreated this file + defer os.Remove(destinationFile.Name()) + + sourceContent, err := ioutil.ReadFile(sourceFile.Name()) + if err != nil { + t.Errorf("unexpected error %v", err) + } + destinationContent, err := ioutil.ReadFile(destinationFile.Name()) + if err != nil { + t.Errorf("unexpected error %v", err) + } + + if !reflect.DeepEqual(sourceContent, destinationContent) { + t.Errorf("source and destination do not match") + } +} + +func TestMigratingFileLeaveExistingFileAlone(t *testing.T) { + sourceFile, _ := ioutil.TempFile("", "") + defer os.Remove(sourceFile.Name()) + destinationFile, _ := ioutil.TempFile("", "") + defer os.Remove(destinationFile.Name()) + + WriteToFile(testConfigAlfa, sourceFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + MigrationRules: map[string]string{destinationFile.Name(): sourceFile.Name()}, + } + + if _, err := loadingRules.Load(); err != nil { + t.Errorf("unexpected error %v", err) + } + + destinationContent, err := ioutil.ReadFile(destinationFile.Name()) + if err != nil { + t.Errorf("unexpected error %v", err) + } + + if len(destinationContent) > 0 { + t.Errorf("destination should not have been touched") + } +} + +func TestMigratingFileSourceMissingSkip(t *testing.T) { + sourceFilename := "some-missing-file" + destinationFile, _ := ioutil.TempFile("", "") + // delete the file so that we'll write to it + os.Remove(destinationFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + MigrationRules: map[string]string{destinationFile.Name(): sourceFilename}, + } + + if _, err := loadingRules.Load(); err != nil { + t.Errorf("unexpected error %v", err) + } + + if _, err := os.Stat(destinationFile.Name()); !os.IsNotExist(err) { + t.Errorf("destination should not exist") + } +} + +func TestFileLocking(t *testing.T) { + f, _ := ioutil.TempFile("", "") + defer os.Remove(f.Name()) + + err := lockFile(f.Name()) + if err != nil { + t.Errorf("unexpected error while locking file: %v", err) + } + defer unlockFile(f.Name()) + + err = lockFile(f.Name()) + if err == nil { + t.Error("expected error while locking file.") + } +} + +func Example_noMergingOnExplicitPaths() { + commandLineFile, _ := ioutil.TempFile("", "") + defer os.Remove(commandLineFile.Name()) + envVarFile, _ := ioutil.TempFile("", "") + defer os.Remove(envVarFile.Name()) + + WriteToFile(testConfigAlfa, commandLineFile.Name()) + WriteToFile(testConfigConflictAlfa, envVarFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + ExplicitPath: commandLineFile.Name(), + Precedence: []string{envVarFile.Name()}, + } + + mergedConfig, err := loadingRules.Load() + + json, err := runtime.Encode(clientcmdlatest.Codec, mergedConfig) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + output, err := yaml.JSONToYAML(json) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + + fmt.Printf("%v", string(output)) + // Output: + // apiVersion: v1 + // clusters: + // - cluster: + // server: http://cow.org:8080 + // name: cow-cluster + // contexts: + // - context: + // cluster: cow-cluster + // namespace: hammer-ns + // user: red-user + // name: federal-context + // current-context: "" + // kind: Config + // preferences: {} + // users: + // - name: red-user + // user: + // token: red-token +} + +func Example_mergingSomeWithConflict() { + commandLineFile, _ := ioutil.TempFile("", "") + defer os.Remove(commandLineFile.Name()) + envVarFile, _ := ioutil.TempFile("", "") + defer os.Remove(envVarFile.Name()) + + WriteToFile(testConfigAlfa, commandLineFile.Name()) + WriteToFile(testConfigConflictAlfa, envVarFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + Precedence: []string{commandLineFile.Name(), envVarFile.Name()}, + } + + mergedConfig, err := loadingRules.Load() + + json, err := runtime.Encode(clientcmdlatest.Codec, mergedConfig) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + output, err := yaml.JSONToYAML(json) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + + fmt.Printf("%v", string(output)) + // Output: + // apiVersion: v1 + // clusters: + // - cluster: + // server: http://cow.org:8080 + // name: cow-cluster + // - cluster: + // insecure-skip-tls-verify: true + // server: http://donkey.org:8080 + // name: donkey-cluster + // contexts: + // - context: + // cluster: cow-cluster + // namespace: hammer-ns + // user: red-user + // name: federal-context + // current-context: federal-context + // kind: Config + // preferences: {} + // users: + // - name: red-user + // user: + // token: red-token + // - name: yellow-user + // user: + // token: yellow-token +} + +func Example_mergingEverythingNoConflicts() { + commandLineFile, _ := ioutil.TempFile("", "") + defer os.Remove(commandLineFile.Name()) + envVarFile, _ := ioutil.TempFile("", "") + defer os.Remove(envVarFile.Name()) + currentDirFile, _ := ioutil.TempFile("", "") + defer os.Remove(currentDirFile.Name()) + homeDirFile, _ := ioutil.TempFile("", "") + defer os.Remove(homeDirFile.Name()) + + WriteToFile(testConfigAlfa, commandLineFile.Name()) + WriteToFile(testConfigBravo, envVarFile.Name()) + WriteToFile(testConfigCharlie, currentDirFile.Name()) + WriteToFile(testConfigDelta, homeDirFile.Name()) + + loadingRules := ClientConfigLoadingRules{ + Precedence: []string{commandLineFile.Name(), envVarFile.Name(), currentDirFile.Name(), homeDirFile.Name()}, + } + + mergedConfig, err := loadingRules.Load() + + json, err := runtime.Encode(clientcmdlatest.Codec, mergedConfig) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + output, err := yaml.JSONToYAML(json) + if err != nil { + fmt.Printf("Unexpected error: %v", err) + } + + fmt.Printf("%v", string(output)) + // Output: + // apiVersion: v1 + // clusters: + // - cluster: + // server: http://chicken.org:8080 + // name: chicken-cluster + // - cluster: + // server: http://cow.org:8080 + // name: cow-cluster + // - cluster: + // server: http://horse.org:8080 + // name: horse-cluster + // - cluster: + // server: http://pig.org:8080 + // name: pig-cluster + // contexts: + // - context: + // cluster: cow-cluster + // namespace: hammer-ns + // user: red-user + // name: federal-context + // - context: + // cluster: chicken-cluster + // namespace: plane-ns + // user: blue-user + // name: gothic-context + // - context: + // cluster: pig-cluster + // namespace: saw-ns + // user: black-user + // name: queen-anne-context + // - context: + // cluster: horse-cluster + // namespace: chisel-ns + // user: green-user + // name: shaker-context + // current-context: "" + // kind: Config + // preferences: {} + // users: + // - name: black-user + // user: + // token: black-token + // - name: blue-user + // user: + // token: blue-token + // - name: green-user + // user: + // token: green-token + // - name: red-user + // user: + // token: red-token +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder.go b/vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder.go new file mode 100644 index 000000000..32ffd197c --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder.go @@ -0,0 +1,169 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "io" + "sync" + + "github.com/golang/glog" + + "k8s.io/client-go/pkg/api/v1" + restclient "k8s.io/client-go/rest" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +// DeferredLoadingClientConfig is a ClientConfig interface that is backed by a client config loader. +// It is used in cases where the loading rules may change after you've instantiated them and you want to be sure that +// the most recent rules are used. This is useful in cases where you bind flags to loading rule parameters before +// the parse happens and you want your calling code to be ignorant of how the values are being mutated to avoid +// passing extraneous information down a call stack +type DeferredLoadingClientConfig struct { + loader ClientConfigLoader + overrides *ConfigOverrides + fallbackReader io.Reader + + clientConfig ClientConfig + loadingLock sync.Mutex + + // provided for testing + icc InClusterConfig +} + +// InClusterConfig abstracts details of whether the client is running in a cluster for testing. +type InClusterConfig interface { + ClientConfig + Possible() bool +} + +// NewNonInteractiveDeferredLoadingClientConfig creates a ConfigClientClientConfig using the passed context name +func NewNonInteractiveDeferredLoadingClientConfig(loader ClientConfigLoader, overrides *ConfigOverrides) ClientConfig { + return &DeferredLoadingClientConfig{loader: loader, overrides: overrides, icc: &inClusterClientConfig{overrides: overrides}} +} + +// NewInteractiveDeferredLoadingClientConfig creates a ConfigClientClientConfig using the passed context name and the fallback auth reader +func NewInteractiveDeferredLoadingClientConfig(loader ClientConfigLoader, overrides *ConfigOverrides, fallbackReader io.Reader) ClientConfig { + return &DeferredLoadingClientConfig{loader: loader, overrides: overrides, icc: &inClusterClientConfig{overrides: overrides}, fallbackReader: fallbackReader} +} + +func (config *DeferredLoadingClientConfig) createClientConfig() (ClientConfig, error) { + if config.clientConfig == nil { + config.loadingLock.Lock() + defer config.loadingLock.Unlock() + + if config.clientConfig == nil { + mergedConfig, err := config.loader.Load() + if err != nil { + return nil, err + } + + var mergedClientConfig ClientConfig + if config.fallbackReader != nil { + mergedClientConfig = NewInteractiveClientConfig(*mergedConfig, config.overrides.CurrentContext, config.overrides, config.fallbackReader, config.loader) + } else { + mergedClientConfig = NewNonInteractiveClientConfig(*mergedConfig, config.overrides.CurrentContext, config.overrides, config.loader) + } + + config.clientConfig = mergedClientConfig + } + } + + return config.clientConfig, nil +} + +func (config *DeferredLoadingClientConfig) RawConfig() (clientcmdapi.Config, error) { + mergedConfig, err := config.createClientConfig() + if err != nil { + return clientcmdapi.Config{}, err + } + + return mergedConfig.RawConfig() +} + +// ClientConfig implements ClientConfig +func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, error) { + mergedClientConfig, err := config.createClientConfig() + if err != nil { + return nil, err + } + + // load the configuration and return on non-empty errors and if the + // content differs from the default config + mergedConfig, err := mergedClientConfig.ClientConfig() + switch { + case err != nil: + if !IsEmptyConfig(err) { + // return on any error except empty config + return nil, err + } + case mergedConfig != nil: + // the configuration is valid, but if this is equal to the defaults we should try + // in-cluster configuration + if !config.loader.IsDefaultConfig(mergedConfig) { + return mergedConfig, nil + } + } + + // check for in-cluster configuration and use it + if config.icc.Possible() { + glog.V(4).Infof("Using in-cluster configuration") + return config.icc.ClientConfig() + } + + // return the result of the merged client config + return mergedConfig, err +} + +// Namespace implements KubeConfig +func (config *DeferredLoadingClientConfig) Namespace() (string, bool, error) { + mergedKubeConfig, err := config.createClientConfig() + if err != nil { + return "", false, err + } + + ns, overridden, err := mergedKubeConfig.Namespace() + // if we get an error and it is not empty config, or if the merged config defined an explicit namespace, or + // if in-cluster config is not possible, return immediately + if (err != nil && !IsEmptyConfig(err)) || overridden || !config.icc.Possible() { + // return on any error except empty config + return ns, overridden, err + } + + if len(ns) > 0 { + // if we got a non-default namespace from the kubeconfig, use it + if ns != v1.NamespaceDefault { + return ns, false, nil + } + + // if we got a default namespace, determine whether it was explicit or implicit + if raw, err := mergedKubeConfig.RawConfig(); err == nil { + if context := raw.Contexts[raw.CurrentContext]; context != nil && len(context.Namespace) > 0 { + return ns, false, nil + } + } + } + + glog.V(4).Infof("Using in-cluster namespace") + + // allow the namespace from the service account token directory to be used. + return config.icc.Namespace() +} + +// ConfigAccess implements ClientConfig +func (config *DeferredLoadingClientConfig) ConfigAccess() ConfigAccess { + return config.loader +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder_test.go b/vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder_test.go new file mode 100644 index 000000000..8b0386764 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/merged_client_builder_test.go @@ -0,0 +1,328 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "fmt" + "testing" + + restclient "k8s.io/client-go/rest" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +type testLoader struct { + ClientConfigLoader + + called bool + config *clientcmdapi.Config + err error +} + +func (l *testLoader) Load() (*clientcmdapi.Config, error) { + l.called = true + return l.config, l.err +} + +type testClientConfig struct { + config *restclient.Config + namespace string + namespaceSpecified bool + err error +} + +func (c *testClientConfig) RawConfig() (clientcmdapi.Config, error) { + return clientcmdapi.Config{}, fmt.Errorf("unexpected call") +} +func (c *testClientConfig) ClientConfig() (*restclient.Config, error) { + return c.config, c.err +} +func (c *testClientConfig) Namespace() (string, bool, error) { + return c.namespace, c.namespaceSpecified, c.err +} +func (c *testClientConfig) ConfigAccess() ConfigAccess { + return nil +} + +type testICC struct { + testClientConfig + + possible bool + called bool +} + +func (icc *testICC) Possible() bool { + icc.called = true + return icc.possible +} + +func TestInClusterConfig(t *testing.T) { + default1 := &DirectClientConfig{ + config: *createValidTestConfig(), + contextName: "clean", + overrides: &ConfigOverrides{}, + } + invalidDefaultConfig := clientcmdapi.NewConfig() + invalidDefaultConfig.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "http://localhost:8080", + } + invalidDefaultConfig.Contexts["other"] = &clientcmdapi.Context{ + Cluster: "clean", + } + invalidDefaultConfig.CurrentContext = "clean" + + defaultInvalid := &DirectClientConfig{ + config: *invalidDefaultConfig, + overrides: &ConfigOverrides{}, + } + if _, err := defaultInvalid.ClientConfig(); err == nil || !IsConfigurationInvalid(err) { + t.Fatal(err) + } + config1, err := default1.ClientConfig() + if err != nil { + t.Fatal(err) + } + config2 := &restclient.Config{Host: "config2"} + err1 := fmt.Errorf("unique error") + + testCases := map[string]struct { + clientConfig *testClientConfig + icc *testICC + defaultConfig *DirectClientConfig + + checkedICC bool + result *restclient.Config + err error + }{ + "in-cluster checked on other error": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{}, + + checkedICC: true, + result: nil, + err: ErrEmptyConfig, + }, + + "in-cluster not checked on non-empty error": { + clientConfig: &testClientConfig{err: ErrEmptyCluster}, + icc: &testICC{}, + + checkedICC: false, + result: nil, + err: ErrEmptyCluster, + }, + + "in-cluster checked when config is default": { + defaultConfig: default1, + clientConfig: &testClientConfig{config: config1}, + icc: &testICC{}, + + checkedICC: true, + result: config1, + err: nil, + }, + + "in-cluster not checked when default config is invalid": { + defaultConfig: defaultInvalid, + clientConfig: &testClientConfig{config: config1}, + icc: &testICC{}, + + checkedICC: false, + result: config1, + err: nil, + }, + + "in-cluster not checked when config is not equal to default": { + defaultConfig: default1, + clientConfig: &testClientConfig{config: config2}, + icc: &testICC{}, + + checkedICC: false, + result: config2, + err: nil, + }, + + "in-cluster checked when config is not equal to default and error is empty": { + clientConfig: &testClientConfig{config: config2, err: ErrEmptyConfig}, + icc: &testICC{}, + + checkedICC: true, + result: config2, + err: ErrEmptyConfig, + }, + + "in-cluster error returned when config is empty": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{ + possible: true, + testClientConfig: testClientConfig{ + err: err1, + }, + }, + + checkedICC: true, + result: nil, + err: err1, + }, + + "in-cluster config returned when config is empty": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{ + possible: true, + testClientConfig: testClientConfig{ + config: config2, + }, + }, + + checkedICC: true, + result: config2, + err: nil, + }, + + "in-cluster not checked when standard default is invalid": { + defaultConfig: &DefaultClientConfig, + clientConfig: &testClientConfig{config: config2}, + icc: &testICC{}, + + checkedICC: false, + result: config2, + err: nil, + }, + } + + for name, test := range testCases { + c := &DeferredLoadingClientConfig{icc: test.icc} + c.loader = &ClientConfigLoadingRules{DefaultClientConfig: test.defaultConfig} + c.clientConfig = test.clientConfig + + cfg, err := c.ClientConfig() + if test.icc.called != test.checkedICC { + t.Errorf("%s: unexpected in-cluster-config call %t", name, test.icc.called) + } + if err != test.err || cfg != test.result { + t.Errorf("%s: unexpected result: %v %#v", name, err, cfg) + } + } +} + +func TestInClusterConfigNamespace(t *testing.T) { + err1 := fmt.Errorf("unique error") + + testCases := map[string]struct { + clientConfig *testClientConfig + icc *testICC + + checkedICC bool + result string + ok bool + err error + }{ + "in-cluster checked on empty error": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{}, + + checkedICC: true, + err: ErrEmptyConfig, + }, + + "in-cluster not checked on non-empty error": { + clientConfig: &testClientConfig{err: ErrEmptyCluster}, + icc: &testICC{}, + + err: ErrEmptyCluster, + }, + + "in-cluster checked when config is default": { + clientConfig: &testClientConfig{}, + icc: &testICC{}, + + checkedICC: true, + }, + + "in-cluster not checked when config is not equal to default": { + clientConfig: &testClientConfig{namespace: "test", namespaceSpecified: true}, + icc: &testICC{}, + + result: "test", + ok: true, + }, + + "in-cluster checked when namespace is not specified, but is defaulted": { + clientConfig: &testClientConfig{namespace: "test", namespaceSpecified: false}, + icc: &testICC{}, + + checkedICC: true, + result: "test", + ok: false, + }, + + "in-cluster error returned when config is empty": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{ + possible: true, + testClientConfig: testClientConfig{ + err: err1, + }, + }, + + checkedICC: true, + err: err1, + }, + + "in-cluster config returned when config is empty": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{ + possible: true, + testClientConfig: testClientConfig{ + namespace: "test", + namespaceSpecified: true, + }, + }, + + checkedICC: true, + result: "test", + ok: true, + }, + + "in-cluster config returned when config is empty and namespace is defaulted but not explicitly set": { + clientConfig: &testClientConfig{err: ErrEmptyConfig}, + icc: &testICC{ + possible: true, + testClientConfig: testClientConfig{ + namespace: "test", + namespaceSpecified: false, + }, + }, + + checkedICC: true, + result: "test", + ok: false, + }, + } + + for name, test := range testCases { + c := &DeferredLoadingClientConfig{icc: test.icc} + c.clientConfig = test.clientConfig + + ns, ok, err := c.Namespace() + if test.icc.called != test.checkedICC { + t.Errorf("%s: unexpected in-cluster-config call %t", name, test.icc.called) + } + if err != test.err || ns != test.result || ok != test.ok { + t.Errorf("%s: unexpected result: %v %s %t", name, err, ns, ok) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/overrides.go b/vendor/k8s.io/client-go/tools/clientcmd/overrides.go new file mode 100644 index 000000000..963ac8fae --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/overrides.go @@ -0,0 +1,226 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "strconv" + + "github.com/spf13/pflag" + + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +// ConfigOverrides holds values that should override whatever information is pulled from the actual Config object. You can't +// simply use an actual Config object, because Configs hold maps, but overrides are restricted to "at most one" +type ConfigOverrides struct { + AuthInfo clientcmdapi.AuthInfo + // ClusterDefaults are applied before the configured cluster info is loaded. + ClusterDefaults clientcmdapi.Cluster + ClusterInfo clientcmdapi.Cluster + Context clientcmdapi.Context + CurrentContext string + Timeout string +} + +// ConfigOverrideFlags holds the flag names to be used for binding command line flags. Notice that this structure tightly +// corresponds to ConfigOverrides +type ConfigOverrideFlags struct { + AuthOverrideFlags AuthOverrideFlags + ClusterOverrideFlags ClusterOverrideFlags + ContextOverrideFlags ContextOverrideFlags + CurrentContext FlagInfo + Timeout FlagInfo +} + +// AuthOverrideFlags holds the flag names to be used for binding command line flags for AuthInfo objects +type AuthOverrideFlags struct { + ClientCertificate FlagInfo + ClientKey FlagInfo + Token FlagInfo + Impersonate FlagInfo + ImpersonateGroups FlagInfo + Username FlagInfo + Password FlagInfo +} + +// ContextOverrideFlags holds the flag names to be used for binding command line flags for Cluster objects +type ContextOverrideFlags struct { + ClusterName FlagInfo + AuthInfoName FlagInfo + Namespace FlagInfo +} + +// ClusterOverride holds the flag names to be used for binding command line flags for Cluster objects +type ClusterOverrideFlags struct { + APIServer FlagInfo + APIVersion FlagInfo + CertificateAuthority FlagInfo + InsecureSkipTLSVerify FlagInfo +} + +// FlagInfo contains information about how to register a flag. This struct is useful if you want to provide a way for an extender to +// get back a set of recommended flag names, descriptions, and defaults, but allow for customization by an extender. This makes for +// coherent extension, without full prescription +type FlagInfo struct { + // LongName is the long string for a flag. If this is empty, then the flag will not be bound + LongName string + // ShortName is the single character for a flag. If this is empty, then there will be no short flag + ShortName string + // Default is the default value for the flag + Default string + // Description is the description for the flag + Description string +} + +// AddSecretAnnotation add secret flag to Annotation. +func (f FlagInfo) AddSecretAnnotation(flags *pflag.FlagSet) FlagInfo { + flags.SetAnnotation(f.LongName, "classified", []string{"true"}) + return f +} + +// BindStringFlag binds the flag based on the provided info. If LongName == "", nothing is registered +func (f FlagInfo) BindStringFlag(flags *pflag.FlagSet, target *string) FlagInfo { + // you can't register a flag without a long name + if len(f.LongName) > 0 { + flags.StringVarP(target, f.LongName, f.ShortName, f.Default, f.Description) + } + return f +} + +// BindStringSliceFlag binds the flag based on the provided info. If LongName == "", nothing is registered +func (f FlagInfo) BindStringArrayFlag(flags *pflag.FlagSet, target *[]string) FlagInfo { + // you can't register a flag without a long name + if len(f.LongName) > 0 { + sliceVal := []string{} + if len(f.Default) > 0 { + sliceVal = []string{f.Default} + } + flags.StringArrayVarP(target, f.LongName, f.ShortName, sliceVal, f.Description) + } + return f +} + +// BindBoolFlag binds the flag based on the provided info. If LongName == "", nothing is registered +func (f FlagInfo) BindBoolFlag(flags *pflag.FlagSet, target *bool) FlagInfo { + // you can't register a flag without a long name + if len(f.LongName) > 0 { + // try to parse Default as a bool. If it fails, assume false + boolVal, err := strconv.ParseBool(f.Default) + if err != nil { + boolVal = false + } + + flags.BoolVarP(target, f.LongName, f.ShortName, boolVal, f.Description) + } + return f +} + +const ( + FlagClusterName = "cluster" + FlagAuthInfoName = "user" + FlagContext = "context" + FlagNamespace = "namespace" + FlagAPIServer = "server" + FlagInsecure = "insecure-skip-tls-verify" + FlagCertFile = "client-certificate" + FlagKeyFile = "client-key" + FlagCAFile = "certificate-authority" + FlagEmbedCerts = "embed-certs" + FlagBearerToken = "token" + FlagImpersonate = "as" + FlagImpersonateGroup = "as-group" + FlagUsername = "username" + FlagPassword = "password" + FlagTimeout = "request-timeout" +) + +// RecommendedConfigOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing +func RecommendedConfigOverrideFlags(prefix string) ConfigOverrideFlags { + return ConfigOverrideFlags{ + AuthOverrideFlags: RecommendedAuthOverrideFlags(prefix), + ClusterOverrideFlags: RecommendedClusterOverrideFlags(prefix), + ContextOverrideFlags: RecommendedContextOverrideFlags(prefix), + + CurrentContext: FlagInfo{prefix + FlagContext, "", "", "The name of the kubeconfig context to use"}, + Timeout: FlagInfo{prefix + FlagTimeout, "", "0", "The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests."}, + } +} + +// RecommendedAuthOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing +func RecommendedAuthOverrideFlags(prefix string) AuthOverrideFlags { + return AuthOverrideFlags{ + ClientCertificate: FlagInfo{prefix + FlagCertFile, "", "", "Path to a client certificate file for TLS"}, + ClientKey: FlagInfo{prefix + FlagKeyFile, "", "", "Path to a client key file for TLS"}, + Token: FlagInfo{prefix + FlagBearerToken, "", "", "Bearer token for authentication to the API server"}, + Impersonate: FlagInfo{prefix + FlagImpersonate, "", "", "Username to impersonate for the operation"}, + ImpersonateGroups: FlagInfo{prefix + FlagImpersonateGroup, "", "", "Group to impersonate for the operation, this flag can be repeated to specify multiple groups."}, + Username: FlagInfo{prefix + FlagUsername, "", "", "Username for basic authentication to the API server"}, + Password: FlagInfo{prefix + FlagPassword, "", "", "Password for basic authentication to the API server"}, + } +} + +// RecommendedClusterOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing +func RecommendedClusterOverrideFlags(prefix string) ClusterOverrideFlags { + return ClusterOverrideFlags{ + APIServer: FlagInfo{prefix + FlagAPIServer, "", "", "The address and port of the Kubernetes API server"}, + CertificateAuthority: FlagInfo{prefix + FlagCAFile, "", "", "Path to a cert file for the certificate authority"}, + InsecureSkipTLSVerify: FlagInfo{prefix + FlagInsecure, "", "false", "If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure"}, + } +} + +// RecommendedContextOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing +func RecommendedContextOverrideFlags(prefix string) ContextOverrideFlags { + return ContextOverrideFlags{ + ClusterName: FlagInfo{prefix + FlagClusterName, "", "", "The name of the kubeconfig cluster to use"}, + AuthInfoName: FlagInfo{prefix + FlagAuthInfoName, "", "", "The name of the kubeconfig user to use"}, + Namespace: FlagInfo{prefix + FlagNamespace, "n", "", "If present, the namespace scope for this CLI request"}, + } +} + +// BindOverrideFlags is a convenience method to bind the specified flags to their associated variables +func BindOverrideFlags(overrides *ConfigOverrides, flags *pflag.FlagSet, flagNames ConfigOverrideFlags) { + BindAuthInfoFlags(&overrides.AuthInfo, flags, flagNames.AuthOverrideFlags) + BindClusterFlags(&overrides.ClusterInfo, flags, flagNames.ClusterOverrideFlags) + BindContextFlags(&overrides.Context, flags, flagNames.ContextOverrideFlags) + flagNames.CurrentContext.BindStringFlag(flags, &overrides.CurrentContext) + flagNames.Timeout.BindStringFlag(flags, &overrides.Timeout) +} + +// BindAuthInfoFlags is a convenience method to bind the specified flags to their associated variables +func BindAuthInfoFlags(authInfo *clientcmdapi.AuthInfo, flags *pflag.FlagSet, flagNames AuthOverrideFlags) { + flagNames.ClientCertificate.BindStringFlag(flags, &authInfo.ClientCertificate).AddSecretAnnotation(flags) + flagNames.ClientKey.BindStringFlag(flags, &authInfo.ClientKey).AddSecretAnnotation(flags) + flagNames.Token.BindStringFlag(flags, &authInfo.Token).AddSecretAnnotation(flags) + flagNames.Impersonate.BindStringFlag(flags, &authInfo.Impersonate).AddSecretAnnotation(flags) + flagNames.ImpersonateGroups.BindStringArrayFlag(flags, &authInfo.ImpersonateGroups).AddSecretAnnotation(flags) + flagNames.Username.BindStringFlag(flags, &authInfo.Username).AddSecretAnnotation(flags) + flagNames.Password.BindStringFlag(flags, &authInfo.Password).AddSecretAnnotation(flags) +} + +// BindClusterFlags is a convenience method to bind the specified flags to their associated variables +func BindClusterFlags(clusterInfo *clientcmdapi.Cluster, flags *pflag.FlagSet, flagNames ClusterOverrideFlags) { + flagNames.APIServer.BindStringFlag(flags, &clusterInfo.Server) + flagNames.CertificateAuthority.BindStringFlag(flags, &clusterInfo.CertificateAuthority) + flagNames.InsecureSkipTLSVerify.BindBoolFlag(flags, &clusterInfo.InsecureSkipTLSVerify) +} + +// BindFlags is a convenience method to bind the specified flags to their associated variables +func BindContextFlags(contextInfo *clientcmdapi.Context, flags *pflag.FlagSet, flagNames ContextOverrideFlags) { + flagNames.ClusterName.BindStringFlag(flags, &contextInfo.Cluster) + flagNames.AuthInfoName.BindStringFlag(flags, &contextInfo.AuthInfo) + flagNames.Namespace.BindStringFlag(flags, &contextInfo.Namespace) +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/validation.go b/vendor/k8s.io/client-go/tools/clientcmd/validation.go new file mode 100644 index 000000000..2bae0c395 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/validation.go @@ -0,0 +1,275 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "errors" + "fmt" + "os" + "reflect" + "strings" + + utilerrors "k8s.io/apimachinery/pkg/util/errors" + "k8s.io/apimachinery/pkg/util/validation" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +var ( + ErrNoContext = errors.New("no context chosen") + ErrEmptyConfig = errors.New("no configuration has been provided") + // message is for consistency with old behavior + ErrEmptyCluster = errors.New("cluster has no server defined") +) + +type errContextNotFound struct { + ContextName string +} + +func (e *errContextNotFound) Error() string { + return fmt.Sprintf("context was not found for specified context: %v", e.ContextName) +} + +// IsContextNotFound returns a boolean indicating whether the error is known to +// report that a context was not found +func IsContextNotFound(err error) bool { + if err == nil { + return false + } + if _, ok := err.(*errContextNotFound); ok || err == ErrNoContext { + return true + } + return strings.Contains(err.Error(), "context was not found for specified context") +} + +// IsEmptyConfig returns true if the provided error indicates the provided configuration +// is empty. +func IsEmptyConfig(err error) bool { + switch t := err.(type) { + case errConfigurationInvalid: + return len(t) == 1 && t[0] == ErrEmptyConfig + } + return err == ErrEmptyConfig +} + +// errConfigurationInvalid is a set of errors indicating the configuration is invalid. +type errConfigurationInvalid []error + +// errConfigurationInvalid implements error and Aggregate +var _ error = errConfigurationInvalid{} +var _ utilerrors.Aggregate = errConfigurationInvalid{} + +func newErrConfigurationInvalid(errs []error) error { + switch len(errs) { + case 0: + return nil + default: + return errConfigurationInvalid(errs) + } +} + +// Error implements the error interface +func (e errConfigurationInvalid) Error() string { + return fmt.Sprintf("invalid configuration: %v", utilerrors.NewAggregate(e).Error()) +} + +// Errors implements the AggregateError interface +func (e errConfigurationInvalid) Errors() []error { + return e +} + +// IsConfigurationInvalid returns true if the provided error indicates the configuration is invalid. +func IsConfigurationInvalid(err error) bool { + switch err.(type) { + case *errContextNotFound, errConfigurationInvalid: + return true + } + return IsContextNotFound(err) +} + +// Validate checks for errors in the Config. It does not return early so that it can find as many errors as possible. +func Validate(config clientcmdapi.Config) error { + validationErrors := make([]error, 0) + + if clientcmdapi.IsConfigEmpty(&config) { + return newErrConfigurationInvalid([]error{ErrEmptyConfig}) + } + + if len(config.CurrentContext) != 0 { + if _, exists := config.Contexts[config.CurrentContext]; !exists { + validationErrors = append(validationErrors, &errContextNotFound{config.CurrentContext}) + } + } + + for contextName, context := range config.Contexts { + validationErrors = append(validationErrors, validateContext(contextName, *context, config)...) + } + + for authInfoName, authInfo := range config.AuthInfos { + validationErrors = append(validationErrors, validateAuthInfo(authInfoName, *authInfo)...) + } + + for clusterName, clusterInfo := range config.Clusters { + validationErrors = append(validationErrors, validateClusterInfo(clusterName, *clusterInfo)...) + } + + return newErrConfigurationInvalid(validationErrors) +} + +// ConfirmUsable looks a particular context and determines if that particular part of the config is useable. There might still be errors in the config, +// but no errors in the sections requested or referenced. It does not return early so that it can find as many errors as possible. +func ConfirmUsable(config clientcmdapi.Config, passedContextName string) error { + validationErrors := make([]error, 0) + + if clientcmdapi.IsConfigEmpty(&config) { + return newErrConfigurationInvalid([]error{ErrEmptyConfig}) + } + + var contextName string + if len(passedContextName) != 0 { + contextName = passedContextName + } else { + contextName = config.CurrentContext + } + + if len(contextName) == 0 { + return ErrNoContext + } + + context, exists := config.Contexts[contextName] + if !exists { + validationErrors = append(validationErrors, &errContextNotFound{contextName}) + } + + if exists { + validationErrors = append(validationErrors, validateContext(contextName, *context, config)...) + validationErrors = append(validationErrors, validateAuthInfo(context.AuthInfo, *config.AuthInfos[context.AuthInfo])...) + validationErrors = append(validationErrors, validateClusterInfo(context.Cluster, *config.Clusters[context.Cluster])...) + } + + return newErrConfigurationInvalid(validationErrors) +} + +// validateClusterInfo looks for conflicts and errors in the cluster info +func validateClusterInfo(clusterName string, clusterInfo clientcmdapi.Cluster) []error { + validationErrors := make([]error, 0) + + emptyCluster := clientcmdapi.NewCluster() + if reflect.DeepEqual(*emptyCluster, clusterInfo) { + return []error{ErrEmptyCluster} + } + + if len(clusterInfo.Server) == 0 { + if len(clusterName) == 0 { + validationErrors = append(validationErrors, fmt.Errorf("default cluster has no server defined")) + } else { + validationErrors = append(validationErrors, fmt.Errorf("no server found for cluster %q", clusterName)) + } + } + // Make sure CA data and CA file aren't both specified + if len(clusterInfo.CertificateAuthority) != 0 && len(clusterInfo.CertificateAuthorityData) != 0 { + validationErrors = append(validationErrors, fmt.Errorf("certificate-authority-data and certificate-authority are both specified for %v. certificate-authority-data will override.", clusterName)) + } + if len(clusterInfo.CertificateAuthority) != 0 { + clientCertCA, err := os.Open(clusterInfo.CertificateAuthority) + defer clientCertCA.Close() + if err != nil { + validationErrors = append(validationErrors, fmt.Errorf("unable to read certificate-authority %v for %v due to %v", clusterInfo.CertificateAuthority, clusterName, err)) + } + } + + return validationErrors +} + +// validateAuthInfo looks for conflicts and errors in the auth info +func validateAuthInfo(authInfoName string, authInfo clientcmdapi.AuthInfo) []error { + validationErrors := make([]error, 0) + + usingAuthPath := false + methods := make([]string, 0, 3) + if len(authInfo.Token) != 0 { + methods = append(methods, "token") + } + if len(authInfo.Username) != 0 || len(authInfo.Password) != 0 { + methods = append(methods, "basicAuth") + } + + if len(authInfo.ClientCertificate) != 0 || len(authInfo.ClientCertificateData) != 0 { + // Make sure cert data and file aren't both specified + if len(authInfo.ClientCertificate) != 0 && len(authInfo.ClientCertificateData) != 0 { + validationErrors = append(validationErrors, fmt.Errorf("client-cert-data and client-cert are both specified for %v. client-cert-data will override.", authInfoName)) + } + // Make sure key data and file aren't both specified + if len(authInfo.ClientKey) != 0 && len(authInfo.ClientKeyData) != 0 { + validationErrors = append(validationErrors, fmt.Errorf("client-key-data and client-key are both specified for %v; client-key-data will override", authInfoName)) + } + // Make sure a key is specified + if len(authInfo.ClientKey) == 0 && len(authInfo.ClientKeyData) == 0 { + validationErrors = append(validationErrors, fmt.Errorf("client-key-data or client-key must be specified for %v to use the clientCert authentication method.", authInfoName)) + } + + if len(authInfo.ClientCertificate) != 0 { + clientCertFile, err := os.Open(authInfo.ClientCertificate) + defer clientCertFile.Close() + if err != nil { + validationErrors = append(validationErrors, fmt.Errorf("unable to read client-cert %v for %v due to %v", authInfo.ClientCertificate, authInfoName, err)) + } + } + if len(authInfo.ClientKey) != 0 { + clientKeyFile, err := os.Open(authInfo.ClientKey) + defer clientKeyFile.Close() + if err != nil { + validationErrors = append(validationErrors, fmt.Errorf("unable to read client-key %v for %v due to %v", authInfo.ClientKey, authInfoName, err)) + } + } + } + + // authPath also provides information for the client to identify the server, so allow multiple auth methods in that case + if (len(methods) > 1) && (!usingAuthPath) { + validationErrors = append(validationErrors, fmt.Errorf("more than one authentication method found for %v; found %v, only one is allowed", authInfoName, methods)) + } + + // ImpersonateGroups or ImpersonateUserExtra should be requested with a user + if (len(authInfo.ImpersonateGroups) > 0 || len(authInfo.ImpersonateUserExtra) > 0) && (len(authInfo.Impersonate) == 0) { + validationErrors = append(validationErrors, fmt.Errorf("requesting groups or user-extra for %v without impersonating a user", authInfoName)) + } + return validationErrors +} + +// validateContext looks for errors in the context. It is not transitive, so errors in the reference authInfo or cluster configs are not included in this return +func validateContext(contextName string, context clientcmdapi.Context, config clientcmdapi.Config) []error { + validationErrors := make([]error, 0) + + if len(context.AuthInfo) == 0 { + validationErrors = append(validationErrors, fmt.Errorf("user was not specified for context %q", contextName)) + } else if _, exists := config.AuthInfos[context.AuthInfo]; !exists { + validationErrors = append(validationErrors, fmt.Errorf("user %q was not found for context %q", context.AuthInfo, contextName)) + } + + if len(context.Cluster) == 0 { + validationErrors = append(validationErrors, fmt.Errorf("cluster was not specified for context %q", contextName)) + } else if _, exists := config.Clusters[context.Cluster]; !exists { + validationErrors = append(validationErrors, fmt.Errorf("cluster %q was not found for context %q", context.Cluster, contextName)) + } + + if len(context.Namespace) != 0 { + if len(validation.IsDNS1123Label(context.Namespace)) != 0 { + validationErrors = append(validationErrors, fmt.Errorf("namespace %q for context %q does not conform to the kubernetes DNS_LABEL rules", context.Namespace, contextName)) + } + } + + return validationErrors +} diff --git a/vendor/k8s.io/client-go/tools/clientcmd/validation_test.go b/vendor/k8s.io/client-go/tools/clientcmd/validation_test.go new file mode 100644 index 000000000..6441f1483 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/clientcmd/validation_test.go @@ -0,0 +1,445 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clientcmd + +import ( + "io/ioutil" + "os" + "strings" + "testing" + + utilerrors "k8s.io/apimachinery/pkg/util/errors" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +func TestConfirmUsableBadInfoButOkConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + config.Clusters["missing ca"] = &clientcmdapi.Cluster{ + Server: "anything", + CertificateAuthority: "missing", + } + config.AuthInfos["error"] = &clientcmdapi.AuthInfo{ + Username: "anything", + Token: "here", + } + config.Contexts["dirty"] = &clientcmdapi.Context{ + Cluster: "missing ca", + AuthInfo: "error", + } + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "anything", + } + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + Token: "here", + } + config.Contexts["clean"] = &clientcmdapi.Context{ + Cluster: "clean", + AuthInfo: "clean", + } + + badValidation := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"unable to read certificate-authority"}, + } + okTest := configValidationTest{ + config: config, + } + + okTest.testConfirmUsable("clean", t) + badValidation.testConfig(t) +} +func TestConfirmUsableBadInfoConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + config.Clusters["missing ca"] = &clientcmdapi.Cluster{ + Server: "anything", + CertificateAuthority: "missing", + } + config.AuthInfos["error"] = &clientcmdapi.AuthInfo{ + Username: "anything", + Token: "here", + } + config.Contexts["first"] = &clientcmdapi.Context{ + Cluster: "missing ca", + AuthInfo: "error", + } + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"unable to read certificate-authority"}, + } + + test.testConfirmUsable("first", t) +} +func TestConfirmUsableEmptyConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"invalid configuration: no configuration has been provided"}, + } + + test.testConfirmUsable("", t) +} +func TestConfirmUsableMissingConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"invalid configuration: no configuration has been provided"}, + } + + test.testConfirmUsable("not-here", t) +} +func TestValidateEmptyConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"invalid configuration: no configuration has been provided"}, + } + + test.testConfig(t) +} +func TestValidateMissingCurrentContextConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + config.CurrentContext = "anything" + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"context was not found for specified "}, + } + + test.testConfig(t) +} +func TestIsContextNotFound(t *testing.T) { + config := clientcmdapi.NewConfig() + config.CurrentContext = "anything" + + err := Validate(*config) + if !IsContextNotFound(err) { + t.Errorf("Expected context not found, but got %v", err) + } + if !IsConfigurationInvalid(err) { + t.Errorf("Expected configuration invalid, but got %v", err) + } +} + +func TestIsEmptyConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + + err := Validate(*config) + if !IsEmptyConfig(err) { + t.Errorf("Expected context not found, but got %v", err) + } + if !IsConfigurationInvalid(err) { + t.Errorf("Expected configuration invalid, but got %v", err) + } +} + +func TestIsConfigurationInvalid(t *testing.T) { + if newErrConfigurationInvalid([]error{}) != nil { + t.Errorf("unexpected error") + } + if newErrConfigurationInvalid([]error{ErrNoContext}) == ErrNoContext { + t.Errorf("unexpected error") + } + if newErrConfigurationInvalid([]error{ErrNoContext, ErrNoContext}) == nil { + t.Errorf("unexpected error") + } + if !IsConfigurationInvalid(newErrConfigurationInvalid([]error{ErrNoContext, ErrNoContext})) { + t.Errorf("unexpected error") + } +} + +func TestValidateMissingReferencesConfig(t *testing.T) { + config := clientcmdapi.NewConfig() + config.CurrentContext = "anything" + config.Contexts["anything"] = &clientcmdapi.Context{Cluster: "missing", AuthInfo: "missing"} + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"user \"missing\" was not found for context \"anything\"", "cluster \"missing\" was not found for context \"anything\""}, + } + + test.testContext("anything", t) + test.testConfig(t) +} +func TestValidateEmptyContext(t *testing.T) { + config := clientcmdapi.NewConfig() + config.CurrentContext = "anything" + config.Contexts["anything"] = &clientcmdapi.Context{} + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"user was not specified for context \"anything\"", "cluster was not specified for context \"anything\""}, + } + + test.testContext("anything", t) + test.testConfig(t) +} + +func TestValidateEmptyClusterInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.Clusters["empty"] = clientcmdapi.NewCluster() + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"cluster has no server defined"}, + } + + test.testCluster("empty", t) + test.testConfig(t) +} + +func TestValidateClusterInfoErrEmptyCluster(t *testing.T) { + cluster := clientcmdapi.NewCluster() + errs := validateClusterInfo("", *cluster) + + if len(errs) != 1 { + t.Fatalf("unexpected errors: %v", errs) + } + if errs[0] != ErrEmptyCluster { + t.Errorf("unexpected error: %v", errs[0]) + } +} + +func TestValidateMissingCAFileClusterInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.Clusters["missing ca"] = &clientcmdapi.Cluster{ + Server: "anything", + CertificateAuthority: "missing", + } + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"unable to read certificate-authority"}, + } + + test.testCluster("missing ca", t) + test.testConfig(t) +} +func TestValidateCleanClusterInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "anything", + } + test := configValidationTest{ + config: config, + } + + test.testCluster("clean", t) + test.testConfig(t) +} +func TestValidateCleanWithCAClusterInfo(t *testing.T) { + tempFile, _ := ioutil.TempFile("", "") + defer os.Remove(tempFile.Name()) + + config := clientcmdapi.NewConfig() + config.Clusters["clean"] = &clientcmdapi.Cluster{ + Server: "anything", + CertificateAuthority: tempFile.Name(), + } + test := configValidationTest{ + config: config, + } + + test.testCluster("clean", t) + test.testConfig(t) +} + +func TestValidateEmptyAuthInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.AuthInfos["error"] = &clientcmdapi.AuthInfo{} + test := configValidationTest{ + config: config, + } + + test.testAuthInfo("error", t) + test.testConfig(t) +} +func TestValidateCertFilesNotFoundAuthInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.AuthInfos["error"] = &clientcmdapi.AuthInfo{ + ClientCertificate: "missing", + ClientKey: "missing", + } + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"unable to read client-cert", "unable to read client-key"}, + } + + test.testAuthInfo("error", t) + test.testConfig(t) +} +func TestValidateCertDataOverridesFiles(t *testing.T) { + tempFile, _ := ioutil.TempFile("", "") + defer os.Remove(tempFile.Name()) + + config := clientcmdapi.NewConfig() + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + ClientCertificate: tempFile.Name(), + ClientCertificateData: []byte("certdata"), + ClientKey: tempFile.Name(), + ClientKeyData: []byte("keydata"), + } + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"client-cert-data and client-cert are both specified", "client-key-data and client-key are both specified"}, + } + + test.testAuthInfo("clean", t) + test.testConfig(t) +} +func TestValidateCleanCertFilesAuthInfo(t *testing.T) { + tempFile, _ := ioutil.TempFile("", "") + defer os.Remove(tempFile.Name()) + + config := clientcmdapi.NewConfig() + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + ClientCertificate: tempFile.Name(), + ClientKey: tempFile.Name(), + } + test := configValidationTest{ + config: config, + } + + test.testAuthInfo("clean", t) + test.testConfig(t) +} +func TestValidateCleanTokenAuthInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.AuthInfos["clean"] = &clientcmdapi.AuthInfo{ + Token: "any-value", + } + test := configValidationTest{ + config: config, + } + + test.testAuthInfo("clean", t) + test.testConfig(t) +} + +func TestValidateMultipleMethodsAuthInfo(t *testing.T) { + config := clientcmdapi.NewConfig() + config.AuthInfos["error"] = &clientcmdapi.AuthInfo{ + Token: "token", + Username: "username", + } + test := configValidationTest{ + config: config, + expectedErrorSubstring: []string{"more than one authentication method", "token", "basicAuth"}, + } + + test.testAuthInfo("error", t) + test.testConfig(t) +} + +type configValidationTest struct { + config *clientcmdapi.Config + expectedErrorSubstring []string +} + +func (c configValidationTest) testContext(contextName string, t *testing.T) { + errs := validateContext(contextName, *c.config.Contexts[contextName], *c.config) + + if len(c.expectedErrorSubstring) != 0 { + if len(errs) == 0 { + t.Errorf("Expected error containing: %v", c.expectedErrorSubstring) + } + for _, curr := range c.expectedErrorSubstring { + if len(errs) != 0 && !strings.Contains(utilerrors.NewAggregate(errs).Error(), curr) { + t.Errorf("Expected error containing: %v, but got %v", c.expectedErrorSubstring, utilerrors.NewAggregate(errs)) + } + } + + } else { + if len(errs) != 0 { + t.Errorf("Unexpected error: %v", utilerrors.NewAggregate(errs)) + } + } +} +func (c configValidationTest) testConfirmUsable(contextName string, t *testing.T) { + err := ConfirmUsable(*c.config, contextName) + + if len(c.expectedErrorSubstring) != 0 { + if err == nil { + t.Errorf("Expected error containing: %v", c.expectedErrorSubstring) + } else { + for _, curr := range c.expectedErrorSubstring { + if err != nil && !strings.Contains(err.Error(), curr) { + t.Errorf("Expected error containing: %v, but got %v", c.expectedErrorSubstring, err) + } + } + } + } else { + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + } +} +func (c configValidationTest) testConfig(t *testing.T) { + err := Validate(*c.config) + + if len(c.expectedErrorSubstring) != 0 { + if err == nil { + t.Errorf("Expected error containing: %v", c.expectedErrorSubstring) + } else { + for _, curr := range c.expectedErrorSubstring { + if err != nil && !strings.Contains(err.Error(), curr) { + t.Errorf("Expected error containing: %v, but got %v", c.expectedErrorSubstring, err) + } + } + if !IsConfigurationInvalid(err) { + t.Errorf("all errors should be configuration invalid: %v", err) + } + } + } else { + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + } +} +func (c configValidationTest) testCluster(clusterName string, t *testing.T) { + errs := validateClusterInfo(clusterName, *c.config.Clusters[clusterName]) + + if len(c.expectedErrorSubstring) != 0 { + if len(errs) == 0 { + t.Errorf("Expected error containing: %v", c.expectedErrorSubstring) + } + for _, curr := range c.expectedErrorSubstring { + if len(errs) != 0 && !strings.Contains(utilerrors.NewAggregate(errs).Error(), curr) { + t.Errorf("Expected error containing: %v, but got %v", c.expectedErrorSubstring, utilerrors.NewAggregate(errs)) + } + } + + } else { + if len(errs) != 0 { + t.Errorf("Unexpected error: %v", utilerrors.NewAggregate(errs)) + } + } +} + +func (c configValidationTest) testAuthInfo(authInfoName string, t *testing.T) { + errs := validateAuthInfo(authInfoName, *c.config.AuthInfos[authInfoName]) + + if len(c.expectedErrorSubstring) != 0 { + if len(errs) == 0 { + t.Errorf("Expected error containing: %v", c.expectedErrorSubstring) + } + for _, curr := range c.expectedErrorSubstring { + if len(errs) != 0 && !strings.Contains(utilerrors.NewAggregate(errs).Error(), curr) { + t.Errorf("Expected error containing: %v, but got %v", c.expectedErrorSubstring, utilerrors.NewAggregate(errs)) + } + } + + } else { + if len(errs) != 0 { + t.Errorf("Unexpected error: %v", utilerrors.NewAggregate(errs)) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/metrics/BUILD b/vendor/k8s.io/client-go/tools/metrics/BUILD new file mode 100644 index 000000000..9ae4546c9 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/metrics/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["metrics.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/tools/metrics/OWNERS b/vendor/k8s.io/client-go/tools/metrics/OWNERS new file mode 100755 index 000000000..ff5179807 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/metrics/OWNERS @@ -0,0 +1,7 @@ +reviewers: +- wojtek-t +- eparis +- krousey +- jayunit100 +- fgrzadkowski +- tmrts diff --git a/vendor/k8s.io/client-go/tools/metrics/metrics.go b/vendor/k8s.io/client-go/tools/metrics/metrics.go new file mode 100644 index 000000000..a01306c65 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/metrics/metrics.go @@ -0,0 +1,61 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package metrics provides abstractions for registering which metrics +// to record. +package metrics + +import ( + "net/url" + "sync" + "time" +) + +var registerMetrics sync.Once + +// LatencyMetric observes client latency partitioned by verb and url. +type LatencyMetric interface { + Observe(verb string, u url.URL, latency time.Duration) +} + +// ResultMetric counts response codes partitioned by method and host. +type ResultMetric interface { + Increment(code string, method string, host string) +} + +var ( + // RequestLatency is the latency metric that rest clients will update. + RequestLatency LatencyMetric = noopLatency{} + // RequestResult is the result metric that rest clients will update. + RequestResult ResultMetric = noopResult{} +) + +// Register registers metrics for the rest client to use. This can +// only be called once. +func Register(lm LatencyMetric, rm ResultMetric) { + registerMetrics.Do(func() { + RequestLatency = lm + RequestResult = rm + }) +} + +type noopLatency struct{} + +func (noopLatency) Observe(string, url.URL, time.Duration) {} + +type noopResult struct{} + +func (noopResult) Increment(string, string, string) {} diff --git a/vendor/k8s.io/client-go/tools/portforward/BUILD b/vendor/k8s.io/client-go/tools/portforward/BUILD new file mode 100644 index 000000000..f78e5a21e --- /dev/null +++ b/vendor/k8s.io/client-go/tools/portforward/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["portforward_test.go"], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "portforward.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/portforward/doc.go b/vendor/k8s.io/client-go/tools/portforward/doc.go new file mode 100644 index 000000000..2f5340634 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/portforward/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package portforward adds support for SSH-like port forwarding from the client's +// local host to remote containers. +package portforward // import "k8s.io/client-go/tools/portforward" diff --git a/vendor/k8s.io/client-go/tools/portforward/portforward.go b/vendor/k8s.io/client-go/tools/portforward/portforward.go new file mode 100644 index 000000000..2071b25a4 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/portforward/portforward.go @@ -0,0 +1,342 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package portforward + +import ( + "errors" + "fmt" + "io" + "io/ioutil" + "net" + "net/http" + "strconv" + "strings" + "sync" + + "k8s.io/apimachinery/pkg/util/httpstream" + "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/client-go/pkg/api/v1" +) + +// TODO move to API machinery and re-unify with kubelet/server/portfoward +// The subprotocol "portforward.k8s.io" is used for port forwarding. +const PortForwardProtocolV1Name = "portforward.k8s.io" + +// PortForwarder knows how to listen for local connections and forward them to +// a remote pod via an upgraded HTTP request. +type PortForwarder struct { + ports []ForwardedPort + stopChan <-chan struct{} + + dialer httpstream.Dialer + streamConn httpstream.Connection + listeners []io.Closer + Ready chan struct{} + requestIDLock sync.Mutex + requestID int + out io.Writer + errOut io.Writer +} + +// ForwardedPort contains a Local:Remote port pairing. +type ForwardedPort struct { + Local uint16 + Remote uint16 +} + +/* + valid port specifications: + + 5000 + - forwards from localhost:5000 to pod:5000 + + 8888:5000 + - forwards from localhost:8888 to pod:5000 + + 0:5000 + :5000 + - selects a random available local port, + forwards from localhost: to pod:5000 +*/ +func parsePorts(ports []string) ([]ForwardedPort, error) { + var forwards []ForwardedPort + for _, portString := range ports { + parts := strings.Split(portString, ":") + var localString, remoteString string + if len(parts) == 1 { + localString = parts[0] + remoteString = parts[0] + } else if len(parts) == 2 { + localString = parts[0] + if localString == "" { + // support :5000 + localString = "0" + } + remoteString = parts[1] + } else { + return nil, fmt.Errorf("Invalid port format '%s'", portString) + } + + localPort, err := strconv.ParseUint(localString, 10, 16) + if err != nil { + return nil, fmt.Errorf("Error parsing local port '%s': %s", localString, err) + } + + remotePort, err := strconv.ParseUint(remoteString, 10, 16) + if err != nil { + return nil, fmt.Errorf("Error parsing remote port '%s': %s", remoteString, err) + } + if remotePort == 0 { + return nil, fmt.Errorf("Remote port must be > 0") + } + + forwards = append(forwards, ForwardedPort{uint16(localPort), uint16(remotePort)}) + } + + return forwards, nil +} + +// New creates a new PortForwarder. +func New(dialer httpstream.Dialer, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error) { + if len(ports) == 0 { + return nil, errors.New("You must specify at least 1 port") + } + parsedPorts, err := parsePorts(ports) + if err != nil { + return nil, err + } + return &PortForwarder{ + dialer: dialer, + ports: parsedPorts, + stopChan: stopChan, + Ready: readyChan, + out: out, + errOut: errOut, + }, nil +} + +// ForwardPorts formats and executes a port forwarding request. The connection will remain +// open until stopChan is closed. +func (pf *PortForwarder) ForwardPorts() error { + defer pf.Close() + + var err error + pf.streamConn, _, err = pf.dialer.Dial(PortForwardProtocolV1Name) + if err != nil { + return fmt.Errorf("error upgrading connection: %s", err) + } + defer pf.streamConn.Close() + + return pf.forward() +} + +// forward dials the remote host specific in req, upgrades the request, starts +// listeners for each port specified in ports, and forwards local connections +// to the remote host via streams. +func (pf *PortForwarder) forward() error { + var err error + + listenSuccess := false + for _, port := range pf.ports { + err = pf.listenOnPort(&port) + switch { + case err == nil: + listenSuccess = true + default: + if pf.errOut != nil { + fmt.Fprintf(pf.errOut, "Unable to listen on port %d: %v\n", port.Local, err) + } + } + } + + if !listenSuccess { + return fmt.Errorf("Unable to listen on any of the requested ports: %v", pf.ports) + } + + if pf.Ready != nil { + close(pf.Ready) + } + + // wait for interrupt or conn closure + select { + case <-pf.stopChan: + case <-pf.streamConn.CloseChan(): + runtime.HandleError(errors.New("lost connection to pod")) + } + + return nil +} + +// listenOnPort delegates tcp4 and tcp6 listener creation and waits for connections on both of these addresses. +// If both listener creation fail, an error is raised. +func (pf *PortForwarder) listenOnPort(port *ForwardedPort) error { + errTcp4 := pf.listenOnPortAndAddress(port, "tcp4", "127.0.0.1") + errTcp6 := pf.listenOnPortAndAddress(port, "tcp6", "[::1]") + if errTcp4 != nil && errTcp6 != nil { + return fmt.Errorf("All listeners failed to create with the following errors: %s, %s", errTcp4, errTcp6) + } + return nil +} + +// listenOnPortAndAddress delegates listener creation and waits for new connections +// in the background f +func (pf *PortForwarder) listenOnPortAndAddress(port *ForwardedPort, protocol string, address string) error { + listener, err := pf.getListener(protocol, address, port) + if err != nil { + return err + } + pf.listeners = append(pf.listeners, listener) + go pf.waitForConnection(listener, *port) + return nil +} + +// getListener creates a listener on the interface targeted by the given hostname on the given port with +// the given protocol. protocol is in net.Listen style which basically admits values like tcp, tcp4, tcp6 +func (pf *PortForwarder) getListener(protocol string, hostname string, port *ForwardedPort) (net.Listener, error) { + listener, err := net.Listen(protocol, fmt.Sprintf("%s:%d", hostname, port.Local)) + if err != nil { + return nil, fmt.Errorf("Unable to create listener: Error %s", err) + } + listenerAddress := listener.Addr().String() + host, localPort, _ := net.SplitHostPort(listenerAddress) + localPortUInt, err := strconv.ParseUint(localPort, 10, 16) + + if err != nil { + return nil, fmt.Errorf("Error parsing local port: %s from %s (%s)", err, listenerAddress, host) + } + port.Local = uint16(localPortUInt) + if pf.out != nil { + fmt.Fprintf(pf.out, "Forwarding from %s:%d -> %d\n", hostname, localPortUInt, port.Remote) + } + + return listener, nil +} + +// waitForConnection waits for new connections to listener and handles them in +// the background. +func (pf *PortForwarder) waitForConnection(listener net.Listener, port ForwardedPort) { + for { + conn, err := listener.Accept() + if err != nil { + // TODO consider using something like https://github.com/hydrogen18/stoppableListener? + if !strings.Contains(strings.ToLower(err.Error()), "use of closed network connection") { + runtime.HandleError(fmt.Errorf("Error accepting connection on port %d: %v", port.Local, err)) + } + return + } + go pf.handleConnection(conn, port) + } +} + +func (pf *PortForwarder) nextRequestID() int { + pf.requestIDLock.Lock() + defer pf.requestIDLock.Unlock() + id := pf.requestID + pf.requestID++ + return id +} + +// handleConnection copies data between the local connection and the stream to +// the remote server. +func (pf *PortForwarder) handleConnection(conn net.Conn, port ForwardedPort) { + defer conn.Close() + + if pf.out != nil { + fmt.Fprintf(pf.out, "Handling connection for %d\n", port.Local) + } + + requestID := pf.nextRequestID() + + // create error stream + headers := http.Header{} + headers.Set(v1.StreamType, v1.StreamTypeError) + headers.Set(v1.PortHeader, fmt.Sprintf("%d", port.Remote)) + headers.Set(v1.PortForwardRequestIDHeader, strconv.Itoa(requestID)) + errorStream, err := pf.streamConn.CreateStream(headers) + if err != nil { + runtime.HandleError(fmt.Errorf("error creating error stream for port %d -> %d: %v", port.Local, port.Remote, err)) + return + } + // we're not writing to this stream + errorStream.Close() + + errorChan := make(chan error) + go func() { + message, err := ioutil.ReadAll(errorStream) + switch { + case err != nil: + errorChan <- fmt.Errorf("error reading from error stream for port %d -> %d: %v", port.Local, port.Remote, err) + case len(message) > 0: + errorChan <- fmt.Errorf("an error occurred forwarding %d -> %d: %v", port.Local, port.Remote, string(message)) + } + close(errorChan) + }() + + // create data stream + headers.Set(v1.StreamType, v1.StreamTypeData) + dataStream, err := pf.streamConn.CreateStream(headers) + if err != nil { + runtime.HandleError(fmt.Errorf("error creating forwarding stream for port %d -> %d: %v", port.Local, port.Remote, err)) + return + } + + localError := make(chan struct{}) + remoteDone := make(chan struct{}) + + go func() { + // Copy from the remote side to the local port. + if _, err := io.Copy(conn, dataStream); err != nil && !strings.Contains(err.Error(), "use of closed network connection") { + runtime.HandleError(fmt.Errorf("error copying from remote stream to local connection: %v", err)) + } + + // inform the select below that the remote copy is done + close(remoteDone) + }() + + go func() { + // inform server we're not sending any more data after copy unblocks + defer dataStream.Close() + + // Copy from the local port to the remote side. + if _, err := io.Copy(dataStream, conn); err != nil && !strings.Contains(err.Error(), "use of closed network connection") { + runtime.HandleError(fmt.Errorf("error copying from local connection to remote stream: %v", err)) + // break out of the select below without waiting for the other copy to finish + close(localError) + } + }() + + // wait for either a local->remote error or for copying from remote->local to finish + select { + case <-remoteDone: + case <-localError: + } + + // always expect something on errorChan (it may be nil) + err = <-errorChan + if err != nil { + runtime.HandleError(err) + } +} + +func (pf *PortForwarder) Close() { + // stop all listeners + for _, l := range pf.listeners { + if err := l.Close(); err != nil { + runtime.HandleError(fmt.Errorf("error closing listener: %v", err)) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/portforward/portforward_test.go b/vendor/k8s.io/client-go/tools/portforward/portforward_test.go new file mode 100644 index 000000000..2d642b085 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/portforward/portforward_test.go @@ -0,0 +1,194 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package portforward + +import ( + "net" + "os" + "reflect" + "strings" + "testing" + + "k8s.io/apimachinery/pkg/util/httpstream" +) + +type fakeDialer struct { + dialed bool + conn httpstream.Connection + err error + negotiatedProtocol string +} + +func (d *fakeDialer) Dial(protocols ...string) (httpstream.Connection, string, error) { + d.dialed = true + return d.conn, d.negotiatedProtocol, d.err +} + +func TestParsePortsAndNew(t *testing.T) { + tests := []struct { + input []string + expected []ForwardedPort + expectParseError bool + expectNewError bool + }{ + {input: []string{}, expectNewError: true}, + {input: []string{"a"}, expectParseError: true, expectNewError: true}, + {input: []string{":a"}, expectParseError: true, expectNewError: true}, + {input: []string{"-1"}, expectParseError: true, expectNewError: true}, + {input: []string{"65536"}, expectParseError: true, expectNewError: true}, + {input: []string{"0"}, expectParseError: true, expectNewError: true}, + {input: []string{"0:0"}, expectParseError: true, expectNewError: true}, + {input: []string{"a:5000"}, expectParseError: true, expectNewError: true}, + {input: []string{"5000:a"}, expectParseError: true, expectNewError: true}, + { + input: []string{"5000", "5000:5000", "8888:5000", "5000:8888", ":5000", "0:5000"}, + expected: []ForwardedPort{ + {5000, 5000}, + {5000, 5000}, + {8888, 5000}, + {5000, 8888}, + {0, 5000}, + {0, 5000}, + }, + }, + } + + for i, test := range tests { + parsed, err := parsePorts(test.input) + haveError := err != nil + if e, a := test.expectParseError, haveError; e != a { + t.Fatalf("%d: parsePorts: error expected=%t, got %t: %s", i, e, a, err) + } + + dialer := &fakeDialer{} + expectedStopChan := make(chan struct{}) + readyChan := make(chan struct{}) + pf, err := New(dialer, test.input, expectedStopChan, readyChan, os.Stdout, os.Stderr) + haveError = err != nil + if e, a := test.expectNewError, haveError; e != a { + t.Fatalf("%d: New: error expected=%t, got %t: %s", i, e, a, err) + } + + if test.expectParseError || test.expectNewError { + continue + } + + for pi, expectedPort := range test.expected { + if e, a := expectedPort.Local, parsed[pi].Local; e != a { + t.Fatalf("%d: local expected: %d, got: %d", i, e, a) + } + if e, a := expectedPort.Remote, parsed[pi].Remote; e != a { + t.Fatalf("%d: remote expected: %d, got: %d", i, e, a) + } + } + + if dialer.dialed { + t.Fatalf("%d: expected not dialed", i) + } + if e, a := test.expected, pf.ports; !reflect.DeepEqual(e, a) { + t.Fatalf("%d: ports: expected %#v, got %#v", i, e, a) + } + if e, a := expectedStopChan, pf.stopChan; e != a { + t.Fatalf("%d: stopChan: expected %#v, got %#v", i, e, a) + } + if pf.Ready == nil { + t.Fatalf("%d: Ready should be non-nil", i) + } + } +} + +type GetListenerTestCase struct { + Hostname string + Protocol string + ShouldRaiseError bool + ExpectedListenerAddress string +} + +func TestGetListener(t *testing.T) { + var pf PortForwarder + testCases := []GetListenerTestCase{ + { + Hostname: "localhost", + Protocol: "tcp4", + ShouldRaiseError: false, + ExpectedListenerAddress: "127.0.0.1", + }, + { + Hostname: "127.0.0.1", + Protocol: "tcp4", + ShouldRaiseError: false, + ExpectedListenerAddress: "127.0.0.1", + }, + { + Hostname: "[::1]", + Protocol: "tcp6", + ShouldRaiseError: false, + ExpectedListenerAddress: "::1", + }, + { + Hostname: "[::1]", + Protocol: "tcp4", + ShouldRaiseError: true, + }, + { + Hostname: "127.0.0.1", + Protocol: "tcp6", + ShouldRaiseError: true, + }, + { + // IPv6 address must be put into brackets. This test reveals this. + Hostname: "::1", + Protocol: "tcp6", + ShouldRaiseError: true, + }, + } + + for i, testCase := range testCases { + expectedListenerPort := "12345" + listener, err := pf.getListener(testCase.Protocol, testCase.Hostname, &ForwardedPort{12345, 12345}) + if err != nil && strings.Contains(err.Error(), "cannot assign requested address") { + t.Logf("Can't test #%d: %v", i, err) + continue + } + errorRaised := err != nil + + if testCase.ShouldRaiseError != errorRaised { + t.Errorf("Test case #%d failed: Data %v an error has been raised(%t) where it should not (or reciprocally): %v", i, testCase, testCase.ShouldRaiseError, err) + continue + } + if errorRaised { + continue + } + + if listener == nil { + t.Errorf("Test case #%d did not raise an error but failed in initializing listener", i) + continue + } + + host, port, _ := net.SplitHostPort(listener.Addr().String()) + t.Logf("Asked a %s forward for: %s:%v, got listener %s:%s, expected: %s", testCase.Protocol, testCase.Hostname, 12345, host, port, expectedListenerPort) + if host != testCase.ExpectedListenerAddress { + t.Errorf("Test case #%d failed: Listener does not listen on exepected address: asked %v got %v", i, testCase.ExpectedListenerAddress, host) + } + if port != expectedListenerPort { + t.Errorf("Test case #%d failed: Listener does not listen on exepected port: asked %v got %v", i, expectedListenerPort, port) + + } + listener.Close() + + } +} diff --git a/vendor/k8s.io/client-go/tools/record/BUILD b/vendor/k8s.io/client-go/tools/record/BUILD new file mode 100644 index 000000000..b9f2fe108 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/BUILD @@ -0,0 +1,57 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "event_test.go", + "events_cache_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1/ref:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "event.go", + "events_cache.go", + "fake.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/github.com/golang/groupcache/lru:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1/ref:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/record/OWNERS b/vendor/k8s.io/client-go/tools/record/OWNERS new file mode 100755 index 000000000..4dd54bbce --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/OWNERS @@ -0,0 +1,27 @@ +reviewers: +- lavalamp +- smarterclayton +- wojtek-t +- deads2k +- derekwaynecarr +- caesarxuchao +- vishh +- mikedanese +- liggitt +- nikhiljindal +- erictune +- pmorie +- dchen1107 +- saad-ali +- luxas +- yifan-gu +- eparis +- mwielgus +- timothysc +- jsafrane +- dims +- krousey +- a-robinson +- aveshagarwal +- resouer +- cjcullen diff --git a/vendor/k8s.io/client-go/tools/record/doc.go b/vendor/k8s.io/client-go/tools/record/doc.go new file mode 100644 index 000000000..657ddecbc --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package record has all client logic for recording and reporting events. +package record // import "k8s.io/client-go/tools/record" diff --git a/vendor/k8s.io/client-go/tools/record/event.go b/vendor/k8s.io/client-go/tools/record/event.go new file mode 100644 index 000000000..6b2fad409 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/event.go @@ -0,0 +1,318 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package record + +import ( + "fmt" + "math/rand" + "time" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/clock" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/api/v1/ref" + restclient "k8s.io/client-go/rest" + + "net/http" + + "github.com/golang/glog" +) + +const maxTriesPerEvent = 12 + +var defaultSleepDuration = 10 * time.Second + +const maxQueuedEvents = 1000 + +// EventSink knows how to store events (client.Client implements it.) +// EventSink must respect the namespace that will be embedded in 'event'. +// It is assumed that EventSink will return the same sorts of errors as +// pkg/client's REST client. +type EventSink interface { + Create(event *v1.Event) (*v1.Event, error) + Update(event *v1.Event) (*v1.Event, error) + Patch(oldEvent *v1.Event, data []byte) (*v1.Event, error) +} + +// EventRecorder knows how to record events on behalf of an EventSource. +type EventRecorder interface { + // Event constructs an event from the given information and puts it in the queue for sending. + // 'object' is the object this event is about. Event will make a reference-- or you may also + // pass a reference to the object directly. + // 'type' of this event, and can be one of Normal, Warning. New types could be added in future + // 'reason' is the reason this event is generated. 'reason' should be short and unique; it + // should be in UpperCamelCase format (starting with a capital letter). "reason" will be used + // to automate handling of events, so imagine people writing switch statements to handle them. + // You want to make that easy. + // 'message' is intended to be human readable. + // + // The resulting event will be created in the same namespace as the reference object. + Event(object runtime.Object, eventtype, reason, message string) + + // Eventf is just like Event, but with Sprintf for the message field. + Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) + + // PastEventf is just like Eventf, but with an option to specify the event's 'timestamp' field. + PastEventf(object runtime.Object, timestamp metav1.Time, eventtype, reason, messageFmt string, args ...interface{}) +} + +// EventBroadcaster knows how to receive events and send them to any EventSink, watcher, or log. +type EventBroadcaster interface { + // StartEventWatcher starts sending events received from this EventBroadcaster to the given + // event handler function. The return value can be ignored or used to stop recording, if + // desired. + StartEventWatcher(eventHandler func(*v1.Event)) watch.Interface + + // StartRecordingToSink starts sending events received from this EventBroadcaster to the given + // sink. The return value can be ignored or used to stop recording, if desired. + StartRecordingToSink(sink EventSink) watch.Interface + + // StartLogging starts sending events received from this EventBroadcaster to the given logging + // function. The return value can be ignored or used to stop recording, if desired. + StartLogging(logf func(format string, args ...interface{})) watch.Interface + + // NewRecorder returns an EventRecorder that can be used to send events to this EventBroadcaster + // with the event source set to the given event source. + NewRecorder(scheme *runtime.Scheme, source v1.EventSource) EventRecorder +} + +// Creates a new event broadcaster. +func NewBroadcaster() EventBroadcaster { + return &eventBroadcasterImpl{watch.NewBroadcaster(maxQueuedEvents, watch.DropIfChannelFull), defaultSleepDuration} +} + +func NewBroadcasterForTests(sleepDuration time.Duration) EventBroadcaster { + return &eventBroadcasterImpl{watch.NewBroadcaster(maxQueuedEvents, watch.DropIfChannelFull), sleepDuration} +} + +type eventBroadcasterImpl struct { + *watch.Broadcaster + sleepDuration time.Duration +} + +// StartRecordingToSink starts sending events received from the specified eventBroadcaster to the given sink. +// The return value can be ignored or used to stop recording, if desired. +// TODO: make me an object with parameterizable queue length and retry interval +func (eventBroadcaster *eventBroadcasterImpl) StartRecordingToSink(sink EventSink) watch.Interface { + // The default math/rand package functions aren't thread safe, so create a + // new Rand object for each StartRecording call. + randGen := rand.New(rand.NewSource(time.Now().UnixNano())) + eventCorrelator := NewEventCorrelator(clock.RealClock{}) + return eventBroadcaster.StartEventWatcher( + func(event *v1.Event) { + recordToSink(sink, event, eventCorrelator, randGen, eventBroadcaster.sleepDuration) + }) +} + +func recordToSink(sink EventSink, event *v1.Event, eventCorrelator *EventCorrelator, randGen *rand.Rand, sleepDuration time.Duration) { + // Make a copy before modification, because there could be multiple listeners. + // Events are safe to copy like this. + eventCopy := *event + event = &eventCopy + result, err := eventCorrelator.EventCorrelate(event) + if err != nil { + utilruntime.HandleError(err) + } + if result.Skip { + return + } + tries := 0 + for { + if recordEvent(sink, result.Event, result.Patch, result.Event.Count > 1, eventCorrelator) { + break + } + tries++ + if tries >= maxTriesPerEvent { + glog.Errorf("Unable to write event '%#v' (retry limit exceeded!)", event) + break + } + // Randomize the first sleep so that various clients won't all be + // synced up if the master goes down. + if tries == 1 { + time.Sleep(time.Duration(float64(sleepDuration) * randGen.Float64())) + } else { + time.Sleep(sleepDuration) + } + } +} + +func isKeyNotFoundError(err error) bool { + statusErr, _ := err.(*errors.StatusError) + + if statusErr != nil && statusErr.Status().Code == http.StatusNotFound { + return true + } + + return false +} + +// recordEvent attempts to write event to a sink. It returns true if the event +// was successfully recorded or discarded, false if it should be retried. +// If updateExistingEvent is false, it creates a new event, otherwise it updates +// existing event. +func recordEvent(sink EventSink, event *v1.Event, patch []byte, updateExistingEvent bool, eventCorrelator *EventCorrelator) bool { + var newEvent *v1.Event + var err error + if updateExistingEvent { + newEvent, err = sink.Patch(event, patch) + } + // Update can fail because the event may have been removed and it no longer exists. + if !updateExistingEvent || (updateExistingEvent && isKeyNotFoundError(err)) { + // Making sure that ResourceVersion is empty on creation + event.ResourceVersion = "" + newEvent, err = sink.Create(event) + } + if err == nil { + // we need to update our event correlator with the server returned state to handle name/resourceversion + eventCorrelator.UpdateState(newEvent) + return true + } + + // If we can't contact the server, then hold everything while we keep trying. + // Otherwise, something about the event is malformed and we should abandon it. + switch err.(type) { + case *restclient.RequestConstructionError: + // We will construct the request the same next time, so don't keep trying. + glog.Errorf("Unable to construct event '%#v': '%v' (will not retry!)", event, err) + return true + case *errors.StatusError: + if errors.IsAlreadyExists(err) { + glog.V(5).Infof("Server rejected event '%#v': '%v' (will not retry!)", event, err) + } else { + glog.Errorf("Server rejected event '%#v': '%v' (will not retry!)", event, err) + } + return true + case *errors.UnexpectedObjectError: + // We don't expect this; it implies the server's response didn't match a + // known pattern. Go ahead and retry. + default: + // This case includes actual http transport errors. Go ahead and retry. + } + glog.Errorf("Unable to write event: '%v' (may retry after sleeping)", err) + return false +} + +// StartLogging starts sending events received from this EventBroadcaster to the given logging function. +// The return value can be ignored or used to stop recording, if desired. +func (eventBroadcaster *eventBroadcasterImpl) StartLogging(logf func(format string, args ...interface{})) watch.Interface { + return eventBroadcaster.StartEventWatcher( + func(e *v1.Event) { + logf("Event(%#v): type: '%v' reason: '%v' %v", e.InvolvedObject, e.Type, e.Reason, e.Message) + }) +} + +// StartEventWatcher starts sending events received from this EventBroadcaster to the given event handler function. +// The return value can be ignored or used to stop recording, if desired. +func (eventBroadcaster *eventBroadcasterImpl) StartEventWatcher(eventHandler func(*v1.Event)) watch.Interface { + watcher := eventBroadcaster.Watch() + go func() { + defer utilruntime.HandleCrash() + for { + watchEvent, open := <-watcher.ResultChan() + if !open { + return + } + event, ok := watchEvent.Object.(*v1.Event) + if !ok { + // This is all local, so there's no reason this should + // ever happen. + continue + } + eventHandler(event) + } + }() + return watcher +} + +// NewRecorder returns an EventRecorder that records events with the given event source. +func (eventBroadcaster *eventBroadcasterImpl) NewRecorder(scheme *runtime.Scheme, source v1.EventSource) EventRecorder { + return &recorderImpl{scheme, source, eventBroadcaster.Broadcaster, clock.RealClock{}} +} + +type recorderImpl struct { + scheme *runtime.Scheme + source v1.EventSource + *watch.Broadcaster + clock clock.Clock +} + +func (recorder *recorderImpl) generateEvent(object runtime.Object, timestamp metav1.Time, eventtype, reason, message string) { + ref, err := ref.GetReference(recorder.scheme, object) + if err != nil { + glog.Errorf("Could not construct reference to: '%#v' due to: '%v'. Will not report event: '%v' '%v' '%v'", object, err, eventtype, reason, message) + return + } + + if !validateEventType(eventtype) { + glog.Errorf("Unsupported event type: '%v'", eventtype) + return + } + + event := recorder.makeEvent(ref, eventtype, reason, message) + event.Source = recorder.source + + go func() { + // NOTE: events should be a non-blocking operation + defer utilruntime.HandleCrash() + recorder.Action(watch.Added, event) + }() +} + +func validateEventType(eventtype string) bool { + switch eventtype { + case v1.EventTypeNormal, v1.EventTypeWarning: + return true + } + return false +} + +func (recorder *recorderImpl) Event(object runtime.Object, eventtype, reason, message string) { + recorder.generateEvent(object, metav1.Now(), eventtype, reason, message) +} + +func (recorder *recorderImpl) Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) { + recorder.Event(object, eventtype, reason, fmt.Sprintf(messageFmt, args...)) +} + +func (recorder *recorderImpl) PastEventf(object runtime.Object, timestamp metav1.Time, eventtype, reason, messageFmt string, args ...interface{}) { + recorder.generateEvent(object, timestamp, eventtype, reason, fmt.Sprintf(messageFmt, args...)) +} + +func (recorder *recorderImpl) makeEvent(ref *v1.ObjectReference, eventtype, reason, message string) *v1.Event { + t := metav1.Time{Time: recorder.clock.Now()} + namespace := ref.Namespace + if namespace == "" { + namespace = metav1.NamespaceDefault + } + return &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%v.%x", ref.Name, t.UnixNano()), + Namespace: namespace, + }, + InvolvedObject: *ref, + Reason: reason, + Message: message, + FirstTimestamp: t, + LastTimestamp: t, + Count: 1, + Type: eventtype, + } +} diff --git a/vendor/k8s.io/client-go/tools/record/event_test.go b/vendor/k8s.io/client-go/tools/record/event_test.go new file mode 100644 index 000000000..bc09f68fe --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/event_test.go @@ -0,0 +1,915 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package record + +import ( + "encoding/json" + "fmt" + "math/rand" + "net/http" + "strconv" + "testing" + "time" + + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + k8sruntime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/strategicpatch" + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/api/v1/ref" + restclient "k8s.io/client-go/rest" +) + +type testEventSink struct { + OnCreate func(e *v1.Event) (*v1.Event, error) + OnUpdate func(e *v1.Event) (*v1.Event, error) + OnPatch func(e *v1.Event, p []byte) (*v1.Event, error) +} + +// CreateEvent records the event for testing. +func (t *testEventSink) Create(e *v1.Event) (*v1.Event, error) { + if t.OnCreate != nil { + return t.OnCreate(e) + } + return e, nil +} + +// UpdateEvent records the event for testing. +func (t *testEventSink) Update(e *v1.Event) (*v1.Event, error) { + if t.OnUpdate != nil { + return t.OnUpdate(e) + } + return e, nil +} + +// PatchEvent records the event for testing. +func (t *testEventSink) Patch(e *v1.Event, p []byte) (*v1.Event, error) { + if t.OnPatch != nil { + return t.OnPatch(e, p) + } + return e, nil +} + +type OnCreateFunc func(*v1.Event) (*v1.Event, error) + +func OnCreateFactory(testCache map[string]*v1.Event, createEvent chan<- *v1.Event) OnCreateFunc { + return func(event *v1.Event) (*v1.Event, error) { + testCache[getEventKey(event)] = event + createEvent <- event + return event, nil + } +} + +type OnPatchFunc func(*v1.Event, []byte) (*v1.Event, error) + +func OnPatchFactory(testCache map[string]*v1.Event, patchEvent chan<- *v1.Event) OnPatchFunc { + return func(event *v1.Event, patch []byte) (*v1.Event, error) { + cachedEvent, found := testCache[getEventKey(event)] + if !found { + return nil, fmt.Errorf("unexpected error: couldn't find Event in testCache.") + } + originalData, err := json.Marshal(cachedEvent) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + patched, err := strategicpatch.StrategicMergePatch(originalData, patch, event) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + patchedObj := &v1.Event{} + err = json.Unmarshal(patched, patchedObj) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + patchEvent <- patchedObj + return patchedObj, nil + } +} + +func TestEventf(t *testing.T) { + testPod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + SelfLink: "/api/version/pods/foo", + Name: "foo", + Namespace: "baz", + UID: "bar", + }, + } + testPod2 := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + SelfLink: "/api/version/pods/foo", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + }, + } + testRef, err := ref.GetPartialReference(scheme.Scheme, testPod, "spec.containers[2]") + testRef2, err := ref.GetPartialReference(scheme.Scheme, testPod2, "spec.containers[3]") + if err != nil { + t.Fatal(err) + } + table := []struct { + obj k8sruntime.Object + eventtype string + reason string + messageFmt string + elements []interface{} + expect *v1.Event + expectLog string + expectUpdate bool + }{ + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: false, + }, + { + obj: testPod, + eventtype: v1.EventTypeNormal, + reason: "Killed", + messageFmt: "some other verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + }, + Reason: "Killed", + Message: "some other verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'Killed' some other verbose message: 1`, + expectUpdate: false, + }, + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 2, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: true, + }, + { + obj: testRef2, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + APIVersion: "version", + FieldPath: "spec.containers[3]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: false, + }, + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 3, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: true, + }, + { + obj: testRef2, + eventtype: v1.EventTypeNormal, + reason: "Stopped", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + APIVersion: "version", + FieldPath: "spec.containers[3]", + }, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, + expectUpdate: false, + }, + { + obj: testRef2, + eventtype: v1.EventTypeNormal, + reason: "Stopped", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + APIVersion: "version", + FieldPath: "spec.containers[3]", + }, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 2, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, + expectUpdate: true, + }, + } + + testCache := map[string]*v1.Event{} + logCalled := make(chan struct{}) + createEvent := make(chan *v1.Event) + updateEvent := make(chan *v1.Event) + patchEvent := make(chan *v1.Event) + testEvents := testEventSink{ + OnCreate: OnCreateFactory(testCache, createEvent), + OnUpdate: func(event *v1.Event) (*v1.Event, error) { + updateEvent <- event + return event, nil + }, + OnPatch: OnPatchFactory(testCache, patchEvent), + } + eventBroadcaster := NewBroadcasterForTests(0) + sinkWatcher := eventBroadcaster.StartRecordingToSink(&testEvents) + + clock := clock.NewFakeClock(time.Now()) + recorder := recorderWithFakeClock(v1.EventSource{Component: "eventTest"}, eventBroadcaster, clock) + for index, item := range table { + clock.Step(1 * time.Second) + logWatcher := eventBroadcaster.StartLogging(func(formatter string, args ...interface{}) { + if e, a := item.expectLog, fmt.Sprintf(formatter, args...); e != a { + t.Errorf("Expected '%v', got '%v'", e, a) + } + logCalled <- struct{}{} + }) + recorder.Eventf(item.obj, item.eventtype, item.reason, item.messageFmt, item.elements...) + + <-logCalled + + // validate event + if item.expectUpdate { + actualEvent := <-patchEvent + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } else { + actualEvent := <-createEvent + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } + logWatcher.Stop() + } + sinkWatcher.Stop() +} + +func recorderWithFakeClock(eventSource v1.EventSource, eventBroadcaster EventBroadcaster, clock clock.Clock) EventRecorder { + return &recorderImpl{scheme.Scheme, eventSource, eventBroadcaster.(*eventBroadcasterImpl).Broadcaster, clock} +} + +func TestWriteEventError(t *testing.T) { + type entry struct { + timesToSendError int + attemptsWanted int + err error + } + table := map[string]*entry{ + "giveUp1": { + timesToSendError: 1000, + attemptsWanted: 1, + err: &restclient.RequestConstructionError{}, + }, + "giveUp2": { + timesToSendError: 1000, + attemptsWanted: 1, + err: &errors.StatusError{}, + }, + "retry1": { + timesToSendError: 1000, + attemptsWanted: 12, + err: &errors.UnexpectedObjectError{}, + }, + "retry2": { + timesToSendError: 1000, + attemptsWanted: 12, + err: fmt.Errorf("A weird error"), + }, + "succeedEventually": { + timesToSendError: 2, + attemptsWanted: 2, + err: fmt.Errorf("A weird error"), + }, + } + + eventCorrelator := NewEventCorrelator(clock.RealClock{}) + randGen := rand.New(rand.NewSource(time.Now().UnixNano())) + + for caseName, ent := range table { + attempts := 0 + sink := &testEventSink{ + OnCreate: func(event *v1.Event) (*v1.Event, error) { + attempts++ + if attempts < ent.timesToSendError { + return nil, ent.err + } + return event, nil + }, + } + ev := &v1.Event{} + recordToSink(sink, ev, eventCorrelator, randGen, 0) + if attempts != ent.attemptsWanted { + t.Errorf("case %v: wanted %d, got %d attempts", caseName, ent.attemptsWanted, attempts) + } + } +} + +func TestUpdateExpiredEvent(t *testing.T) { + eventCorrelator := NewEventCorrelator(clock.RealClock{}) + randGen := rand.New(rand.NewSource(time.Now().UnixNano())) + + var createdEvent *v1.Event + + sink := &testEventSink{ + OnPatch: func(*v1.Event, []byte) (*v1.Event, error) { + return nil, &errors.StatusError{ + ErrStatus: metav1.Status{ + Code: http.StatusNotFound, + Reason: metav1.StatusReasonNotFound, + }} + }, + OnCreate: func(event *v1.Event) (*v1.Event, error) { + createdEvent = event + return event, nil + }, + } + + ev := &v1.Event{} + ev.ResourceVersion = "updated-resource-version" + ev.Count = 2 + recordToSink(sink, ev, eventCorrelator, randGen, 0) + + if createdEvent == nil { + t.Error("Event did not get created after patch failed") + return + } + + if createdEvent.ResourceVersion != "" { + t.Errorf("Event did not have its resource version cleared, was %s", createdEvent.ResourceVersion) + } +} + +func TestLotsOfEvents(t *testing.T) { + recorderCalled := make(chan struct{}) + loggerCalled := make(chan struct{}) + + // Fail each event a few times to ensure there's some load on the tested code. + var counts [1000]int + testEvents := testEventSink{ + OnCreate: func(event *v1.Event) (*v1.Event, error) { + num, err := strconv.Atoi(event.Message) + if err != nil { + t.Error(err) + return event, nil + } + counts[num]++ + if counts[num] < 5 { + return nil, fmt.Errorf("fake error") + } + recorderCalled <- struct{}{} + return event, nil + }, + } + + eventBroadcaster := NewBroadcasterForTests(0) + sinkWatcher := eventBroadcaster.StartRecordingToSink(&testEvents) + logWatcher := eventBroadcaster.StartLogging(func(formatter string, args ...interface{}) { + loggerCalled <- struct{}{} + }) + recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "eventTest"}) + ref := &v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + } + for i := 0; i < maxQueuedEvents; i++ { + // we need to vary the reason to prevent aggregation + go recorder.Eventf(ref, v1.EventTypeNormal, "Reason-"+string(i), strconv.Itoa(i)) + } + // Make sure no events were dropped by either of the listeners. + for i := 0; i < maxQueuedEvents; i++ { + <-recorderCalled + <-loggerCalled + } + // Make sure that every event was attempted 5 times + for i := 0; i < maxQueuedEvents; i++ { + if counts[i] < 5 { + t.Errorf("Only attempted to record event '%d' %d times.", i, counts[i]) + } + } + sinkWatcher.Stop() + logWatcher.Stop() +} + +func TestEventfNoNamespace(t *testing.T) { + testPod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + SelfLink: "/api/version/pods/foo", + Name: "foo", + UID: "bar", + }, + } + testRef, err := ref.GetPartialReference(scheme.Scheme, testPod, "spec.containers[2]") + if err != nil { + t.Fatal(err) + } + table := []struct { + obj k8sruntime.Object + eventtype string + reason string + messageFmt string + elements []interface{} + expect *v1.Event + expectLog string + expectUpdate bool + }{ + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "default", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: false, + }, + } + + testCache := map[string]*v1.Event{} + logCalled := make(chan struct{}) + createEvent := make(chan *v1.Event) + updateEvent := make(chan *v1.Event) + patchEvent := make(chan *v1.Event) + testEvents := testEventSink{ + OnCreate: OnCreateFactory(testCache, createEvent), + OnUpdate: func(event *v1.Event) (*v1.Event, error) { + updateEvent <- event + return event, nil + }, + OnPatch: OnPatchFactory(testCache, patchEvent), + } + eventBroadcaster := NewBroadcasterForTests(0) + sinkWatcher := eventBroadcaster.StartRecordingToSink(&testEvents) + + clock := clock.NewFakeClock(time.Now()) + recorder := recorderWithFakeClock(v1.EventSource{Component: "eventTest"}, eventBroadcaster, clock) + + for index, item := range table { + clock.Step(1 * time.Second) + logWatcher := eventBroadcaster.StartLogging(func(formatter string, args ...interface{}) { + if e, a := item.expectLog, fmt.Sprintf(formatter, args...); e != a { + t.Errorf("Expected '%v', got '%v'", e, a) + } + logCalled <- struct{}{} + }) + recorder.Eventf(item.obj, item.eventtype, item.reason, item.messageFmt, item.elements...) + + <-logCalled + + // validate event + if item.expectUpdate { + actualEvent := <-patchEvent + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } else { + actualEvent := <-createEvent + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } + + logWatcher.Stop() + } + sinkWatcher.Stop() +} + +func TestMultiSinkCache(t *testing.T) { + testPod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + SelfLink: "/api/version/pods/foo", + Name: "foo", + Namespace: "baz", + UID: "bar", + }, + } + testPod2 := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + SelfLink: "/api/version/pods/foo", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + }, + } + testRef, err := ref.GetPartialReference(scheme.Scheme, testPod, "spec.containers[2]") + testRef2, err := ref.GetPartialReference(scheme.Scheme, testPod2, "spec.containers[3]") + if err != nil { + t.Fatal(err) + } + table := []struct { + obj k8sruntime.Object + eventtype string + reason string + messageFmt string + elements []interface{} + expect *v1.Event + expectLog string + expectUpdate bool + }{ + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: false, + }, + { + obj: testPod, + eventtype: v1.EventTypeNormal, + reason: "Killed", + messageFmt: "some other verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + }, + Reason: "Killed", + Message: "some other verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'Killed' some other verbose message: 1`, + expectUpdate: false, + }, + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 2, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: true, + }, + { + obj: testRef2, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + APIVersion: "version", + FieldPath: "spec.containers[3]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: false, + }, + { + obj: testRef, + eventtype: v1.EventTypeNormal, + reason: "Started", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "bar", + APIVersion: "version", + FieldPath: "spec.containers[2]", + }, + Reason: "Started", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 3, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[2]"}): type: 'Normal' reason: 'Started' some verbose message: 1`, + expectUpdate: true, + }, + { + obj: testRef2, + eventtype: v1.EventTypeNormal, + reason: "Stopped", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + APIVersion: "version", + FieldPath: "spec.containers[3]", + }, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 1, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, + expectUpdate: false, + }, + { + obj: testRef2, + eventtype: v1.EventTypeNormal, + reason: "Stopped", + messageFmt: "some verbose message: %v", + elements: []interface{}{1}, + expect: &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "baz", + }, + InvolvedObject: v1.ObjectReference{ + Kind: "Pod", + Name: "foo", + Namespace: "baz", + UID: "differentUid", + APIVersion: "version", + FieldPath: "spec.containers[3]", + }, + Reason: "Stopped", + Message: "some verbose message: 1", + Source: v1.EventSource{Component: "eventTest"}, + Count: 2, + Type: v1.EventTypeNormal, + }, + expectLog: `Event(v1.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"differentUid", APIVersion:"version", ResourceVersion:"", FieldPath:"spec.containers[3]"}): type: 'Normal' reason: 'Stopped' some verbose message: 1`, + expectUpdate: true, + }, + } + + testCache := map[string]*v1.Event{} + createEvent := make(chan *v1.Event) + updateEvent := make(chan *v1.Event) + patchEvent := make(chan *v1.Event) + testEvents := testEventSink{ + OnCreate: OnCreateFactory(testCache, createEvent), + OnUpdate: func(event *v1.Event) (*v1.Event, error) { + updateEvent <- event + return event, nil + }, + OnPatch: OnPatchFactory(testCache, patchEvent), + } + + testCache2 := map[string]*v1.Event{} + createEvent2 := make(chan *v1.Event) + updateEvent2 := make(chan *v1.Event) + patchEvent2 := make(chan *v1.Event) + testEvents2 := testEventSink{ + OnCreate: OnCreateFactory(testCache2, createEvent2), + OnUpdate: func(event *v1.Event) (*v1.Event, error) { + updateEvent2 <- event + return event, nil + }, + OnPatch: OnPatchFactory(testCache2, patchEvent2), + } + + eventBroadcaster := NewBroadcasterForTests(0) + clock := clock.NewFakeClock(time.Now()) + recorder := recorderWithFakeClock(v1.EventSource{Component: "eventTest"}, eventBroadcaster, clock) + + sinkWatcher := eventBroadcaster.StartRecordingToSink(&testEvents) + for index, item := range table { + clock.Step(1 * time.Second) + recorder.Eventf(item.obj, item.eventtype, item.reason, item.messageFmt, item.elements...) + + // validate event + if item.expectUpdate { + actualEvent := <-patchEvent + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } else { + actualEvent := <-createEvent + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } + } + + // Another StartRecordingToSink call should start to record events with new clean cache. + sinkWatcher2 := eventBroadcaster.StartRecordingToSink(&testEvents2) + for index, item := range table { + clock.Step(1 * time.Second) + recorder.Eventf(item.obj, item.eventtype, item.reason, item.messageFmt, item.elements...) + + // validate event + if item.expectUpdate { + actualEvent := <-patchEvent2 + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } else { + actualEvent := <-createEvent2 + validateEvent(strconv.Itoa(index), actualEvent, item.expect, t) + } + } + + sinkWatcher.Stop() + sinkWatcher2.Stop() +} diff --git a/vendor/k8s.io/client-go/tools/record/events_cache.go b/vendor/k8s.io/client-go/tools/record/events_cache.go new file mode 100644 index 000000000..785ec6477 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/events_cache.go @@ -0,0 +1,377 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package record + +import ( + "encoding/json" + "fmt" + "strings" + "sync" + "time" + + "github.com/golang/groupcache/lru" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/strategicpatch" + "k8s.io/client-go/pkg/api/v1" +) + +const ( + maxLruCacheEntries = 4096 + + // if we see the same event that varies only by message + // more than 10 times in a 10 minute period, aggregate the event + defaultAggregateMaxEvents = 10 + defaultAggregateIntervalInSeconds = 600 +) + +// getEventKey builds unique event key based on source, involvedObject, reason, message +func getEventKey(event *v1.Event) string { + return strings.Join([]string{ + event.Source.Component, + event.Source.Host, + event.InvolvedObject.Kind, + event.InvolvedObject.Namespace, + event.InvolvedObject.Name, + event.InvolvedObject.FieldPath, + string(event.InvolvedObject.UID), + event.InvolvedObject.APIVersion, + event.Type, + event.Reason, + event.Message, + }, + "") +} + +// EventFilterFunc is a function that returns true if the event should be skipped +type EventFilterFunc func(event *v1.Event) bool + +// DefaultEventFilterFunc returns false for all incoming events +func DefaultEventFilterFunc(event *v1.Event) bool { + return false +} + +// EventAggregatorKeyFunc is responsible for grouping events for aggregation +// It returns a tuple of the following: +// aggregateKey - key the identifies the aggregate group to bucket this event +// localKey - key that makes this event in the local group +type EventAggregatorKeyFunc func(event *v1.Event) (aggregateKey string, localKey string) + +// EventAggregatorByReasonFunc aggregates events by exact match on event.Source, event.InvolvedObject, event.Type and event.Reason +func EventAggregatorByReasonFunc(event *v1.Event) (string, string) { + return strings.Join([]string{ + event.Source.Component, + event.Source.Host, + event.InvolvedObject.Kind, + event.InvolvedObject.Namespace, + event.InvolvedObject.Name, + string(event.InvolvedObject.UID), + event.InvolvedObject.APIVersion, + event.Type, + event.Reason, + }, + ""), event.Message +} + +// EventAggregatorMessageFunc is responsible for producing an aggregation message +type EventAggregatorMessageFunc func(event *v1.Event) string + +// EventAggregratorByReasonMessageFunc returns an aggregate message by prefixing the incoming message +func EventAggregatorByReasonMessageFunc(event *v1.Event) string { + return "(combined from similar events): " + event.Message +} + +// EventAggregator identifies similar events and aggregates them into a single event +type EventAggregator struct { + sync.RWMutex + + // The cache that manages aggregation state + cache *lru.Cache + + // The function that groups events for aggregation + keyFunc EventAggregatorKeyFunc + + // The function that generates a message for an aggregate event + messageFunc EventAggregatorMessageFunc + + // The maximum number of events in the specified interval before aggregation occurs + maxEvents uint + + // The amount of time in seconds that must transpire since the last occurrence of a similar event before it's considered new + maxIntervalInSeconds uint + + // clock is used to allow for testing over a time interval + clock clock.Clock +} + +// NewEventAggregator returns a new instance of an EventAggregator +func NewEventAggregator(lruCacheSize int, keyFunc EventAggregatorKeyFunc, messageFunc EventAggregatorMessageFunc, + maxEvents int, maxIntervalInSeconds int, clock clock.Clock) *EventAggregator { + return &EventAggregator{ + cache: lru.New(lruCacheSize), + keyFunc: keyFunc, + messageFunc: messageFunc, + maxEvents: uint(maxEvents), + maxIntervalInSeconds: uint(maxIntervalInSeconds), + clock: clock, + } +} + +// aggregateRecord holds data used to perform aggregation decisions +type aggregateRecord struct { + // we track the number of unique local keys we have seen in the aggregate set to know when to actually aggregate + // if the size of this set exceeds the max, we know we need to aggregate + localKeys sets.String + // The last time at which the aggregate was recorded + lastTimestamp metav1.Time +} + +// EventAggregate checks if a similar event has been seen according to the +// aggregation configuration (max events, max interval, etc) and returns: +// +// - The (potentially modified) event that should be created +// - The cache key for the event, for correlation purposes. This will be set to +// the full key for normal events, and to the result of +// EventAggregatorMessageFunc for aggregate events. +func (e *EventAggregator) EventAggregate(newEvent *v1.Event) (*v1.Event, string) { + now := metav1.NewTime(e.clock.Now()) + var record aggregateRecord + // eventKey is the full cache key for this event + eventKey := getEventKey(newEvent) + // aggregateKey is for the aggregate event, if one is needed. + aggregateKey, localKey := e.keyFunc(newEvent) + + // Do we have a record of similar events in our cache? + e.Lock() + defer e.Unlock() + value, found := e.cache.Get(aggregateKey) + if found { + record = value.(aggregateRecord) + } + + // Is the previous record too old? If so, make a fresh one. Note: if we didn't + // find a similar record, its lastTimestamp will be the zero value, so we + // create a new one in that case. + maxInterval := time.Duration(e.maxIntervalInSeconds) * time.Second + interval := now.Time.Sub(record.lastTimestamp.Time) + if interval > maxInterval { + record = aggregateRecord{localKeys: sets.NewString()} + } + + // Write the new event into the aggregation record and put it on the cache + record.localKeys.Insert(localKey) + record.lastTimestamp = now + e.cache.Add(aggregateKey, record) + + // If we are not yet over the threshold for unique events, don't correlate them + if uint(record.localKeys.Len()) < e.maxEvents { + return newEvent, eventKey + } + + // do not grow our local key set any larger than max + record.localKeys.PopAny() + + // create a new aggregate event, and return the aggregateKey as the cache key + // (so that it can be overwritten.) + eventCopy := &v1.Event{ + ObjectMeta: metav1.ObjectMeta{ + Name: fmt.Sprintf("%v.%x", newEvent.InvolvedObject.Name, now.UnixNano()), + Namespace: newEvent.Namespace, + }, + Count: 1, + FirstTimestamp: now, + InvolvedObject: newEvent.InvolvedObject, + LastTimestamp: now, + Message: e.messageFunc(newEvent), + Type: newEvent.Type, + Reason: newEvent.Reason, + Source: newEvent.Source, + } + return eventCopy, aggregateKey +} + +// eventLog records data about when an event was observed +type eventLog struct { + // The number of times the event has occurred since first occurrence. + count uint + + // The time at which the event was first recorded. + firstTimestamp metav1.Time + + // The unique name of the first occurrence of this event + name string + + // Resource version returned from previous interaction with server + resourceVersion string +} + +// eventLogger logs occurrences of an event +type eventLogger struct { + sync.RWMutex + cache *lru.Cache + clock clock.Clock +} + +// newEventLogger observes events and counts their frequencies +func newEventLogger(lruCacheEntries int, clock clock.Clock) *eventLogger { + return &eventLogger{cache: lru.New(lruCacheEntries), clock: clock} +} + +// eventObserve records an event, or updates an existing one if key is a cache hit +func (e *eventLogger) eventObserve(newEvent *v1.Event, key string) (*v1.Event, []byte, error) { + var ( + patch []byte + err error + ) + eventCopy := *newEvent + event := &eventCopy + + e.Lock() + defer e.Unlock() + + // Check if there is an existing event we should update + lastObservation := e.lastEventObservationFromCache(key) + + // If we found a result, prepare a patch + if lastObservation.count > 0 { + // update the event based on the last observation so patch will work as desired + event.Name = lastObservation.name + event.ResourceVersion = lastObservation.resourceVersion + event.FirstTimestamp = lastObservation.firstTimestamp + event.Count = int32(lastObservation.count) + 1 + + eventCopy2 := *event + eventCopy2.Count = 0 + eventCopy2.LastTimestamp = metav1.NewTime(time.Unix(0, 0)) + eventCopy2.Message = "" + + newData, _ := json.Marshal(event) + oldData, _ := json.Marshal(eventCopy2) + patch, err = strategicpatch.CreateTwoWayMergePatch(oldData, newData, event) + } + + // record our new observation + e.cache.Add( + key, + eventLog{ + count: uint(event.Count), + firstTimestamp: event.FirstTimestamp, + name: event.Name, + resourceVersion: event.ResourceVersion, + }, + ) + return event, patch, err +} + +// updateState updates its internal tracking information based on latest server state +func (e *eventLogger) updateState(event *v1.Event) { + key := getEventKey(event) + e.Lock() + defer e.Unlock() + // record our new observation + e.cache.Add( + key, + eventLog{ + count: uint(event.Count), + firstTimestamp: event.FirstTimestamp, + name: event.Name, + resourceVersion: event.ResourceVersion, + }, + ) +} + +// lastEventObservationFromCache returns the event from the cache, reads must be protected via external lock +func (e *eventLogger) lastEventObservationFromCache(key string) eventLog { + value, ok := e.cache.Get(key) + if ok { + observationValue, ok := value.(eventLog) + if ok { + return observationValue + } + } + return eventLog{} +} + +// EventCorrelator processes all incoming events and performs analysis to avoid overwhelming the system. It can filter all +// incoming events to see if the event should be filtered from further processing. It can aggregate similar events that occur +// frequently to protect the system from spamming events that are difficult for users to distinguish. It performs de-duplication +// to ensure events that are observed multiple times are compacted into a single event with increasing counts. +type EventCorrelator struct { + // the function to filter the event + filterFunc EventFilterFunc + // the object that performs event aggregation + aggregator *EventAggregator + // the object that observes events as they come through + logger *eventLogger +} + +// EventCorrelateResult is the result of a Correlate +type EventCorrelateResult struct { + // the event after correlation + Event *v1.Event + // if provided, perform a strategic patch when updating the record on the server + Patch []byte + // if true, do no further processing of the event + Skip bool +} + +// NewEventCorrelator returns an EventCorrelator configured with default values. +// +// The EventCorrelator is responsible for event filtering, aggregating, and counting +// prior to interacting with the API server to record the event. +// +// The default behavior is as follows: +// * No events are filtered from being recorded +// * Aggregation is performed if a similar event is recorded 10 times in a +// in a 10 minute rolling interval. A similar event is an event that varies only by +// the Event.Message field. Rather than recording the precise event, aggregation +// will create a new event whose message reports that it has combined events with +// the same reason. +// * Events are incrementally counted if the exact same event is encountered multiple +// times. +func NewEventCorrelator(clock clock.Clock) *EventCorrelator { + cacheSize := maxLruCacheEntries + return &EventCorrelator{ + filterFunc: DefaultEventFilterFunc, + aggregator: NewEventAggregator( + cacheSize, + EventAggregatorByReasonFunc, + EventAggregatorByReasonMessageFunc, + defaultAggregateMaxEvents, + defaultAggregateIntervalInSeconds, + clock), + + logger: newEventLogger(cacheSize, clock), + } +} + +// EventCorrelate filters, aggregates, counts, and de-duplicates all incoming events +func (c *EventCorrelator) EventCorrelate(newEvent *v1.Event) (*EventCorrelateResult, error) { + if c.filterFunc(newEvent) { + return &EventCorrelateResult{Skip: true}, nil + } + aggregateEvent, ckey := c.aggregator.EventAggregate(newEvent) + observedEvent, patch, err := c.logger.eventObserve(aggregateEvent, ckey) + return &EventCorrelateResult{Event: observedEvent, Patch: patch}, err +} + +// UpdateState based on the latest observed state from server +func (c *EventCorrelator) UpdateState(event *v1.Event) { + c.logger.updateState(event) +} diff --git a/vendor/k8s.io/client-go/tools/record/events_cache_test.go b/vendor/k8s.io/client-go/tools/record/events_cache_test.go new file mode 100644 index 000000000..c60071a1b --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/events_cache_test.go @@ -0,0 +1,265 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package record + +import ( + "reflect" + "strings" + "testing" + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/diff" + "k8s.io/client-go/pkg/api/v1" +) + +func makeObjectReference(kind, name, namespace string) v1.ObjectReference { + return v1.ObjectReference{ + Kind: kind, + Name: name, + Namespace: namespace, + UID: "C934D34AFB20242", + APIVersion: "version", + FieldPath: "spec.containers{mycontainer}", + } +} + +func makeEvent(reason, message string, involvedObject v1.ObjectReference) v1.Event { + eventTime := metav1.Now() + event := v1.Event{ + Reason: reason, + Message: message, + InvolvedObject: involvedObject, + Source: v1.EventSource{ + Component: "kubelet", + Host: "kublet.node1", + }, + Count: 1, + FirstTimestamp: eventTime, + LastTimestamp: eventTime, + Type: v1.EventTypeNormal, + } + return event +} + +func makeEvents(num int, template v1.Event) []v1.Event { + events := []v1.Event{} + for i := 0; i < num; i++ { + events = append(events, template) + } + return events +} + +func makeUniqueEvents(num int) []v1.Event { + events := []v1.Event{} + kind := "Pod" + for i := 0; i < num; i++ { + reason := strings.Join([]string{"reason", string(i)}, "-") + message := strings.Join([]string{"message", string(i)}, "-") + name := strings.Join([]string{"pod", string(i)}, "-") + namespace := strings.Join([]string{"ns", string(i)}, "-") + involvedObject := makeObjectReference(kind, name, namespace) + events = append(events, makeEvent(reason, message, involvedObject)) + } + return events +} + +func makeSimilarEvents(num int, template v1.Event, messagePrefix string) []v1.Event { + events := makeEvents(num, template) + for i := range events { + events[i].Message = strings.Join([]string{messagePrefix, string(i), events[i].Message}, "-") + } + return events +} + +func setCount(event v1.Event, count int) v1.Event { + event.Count = int32(count) + return event +} + +func validateEvent(messagePrefix string, actualEvent *v1.Event, expectedEvent *v1.Event, t *testing.T) (*v1.Event, error) { + recvEvent := *actualEvent + expectCompression := expectedEvent.Count > 1 + t.Logf("%v - expectedEvent.Count is %d\n", messagePrefix, expectedEvent.Count) + // Just check that the timestamp was set. + if recvEvent.FirstTimestamp.IsZero() || recvEvent.LastTimestamp.IsZero() { + t.Errorf("%v - timestamp wasn't set: %#v", messagePrefix, recvEvent) + } + actualFirstTimestamp := recvEvent.FirstTimestamp + actualLastTimestamp := recvEvent.LastTimestamp + if actualFirstTimestamp.Equal(actualLastTimestamp) { + if expectCompression { + t.Errorf("%v - FirstTimestamp (%q) and LastTimestamp (%q) must be different to indicate event compression happened, but were the same. Actual Event: %#v", messagePrefix, actualFirstTimestamp, actualLastTimestamp, recvEvent) + } + } else { + if expectedEvent.Count == 1 { + t.Errorf("%v - FirstTimestamp (%q) and LastTimestamp (%q) must be equal to indicate only one occurrence of the event, but were different. Actual Event: %#v", messagePrefix, actualFirstTimestamp, actualLastTimestamp, recvEvent) + } + } + // Temp clear time stamps for comparison because actual values don't matter for comparison + recvEvent.FirstTimestamp = expectedEvent.FirstTimestamp + recvEvent.LastTimestamp = expectedEvent.LastTimestamp + // Check that name has the right prefix. + if n, en := recvEvent.Name, expectedEvent.Name; !strings.HasPrefix(n, en) { + t.Errorf("%v - Name '%v' does not contain prefix '%v'", messagePrefix, n, en) + } + recvEvent.Name = expectedEvent.Name + if e, a := expectedEvent, &recvEvent; !reflect.DeepEqual(e, a) { + t.Errorf("%v - diff: %s", messagePrefix, diff.ObjectGoPrintDiff(e, a)) + } + recvEvent.FirstTimestamp = actualFirstTimestamp + recvEvent.LastTimestamp = actualLastTimestamp + return actualEvent, nil +} + +// TestDefaultEventFilterFunc ensures that no events are filtered +func TestDefaultEventFilterFunc(t *testing.T) { + event := makeEvent("end-of-world", "it was fun", makeObjectReference("Pod", "pod1", "other")) + if DefaultEventFilterFunc(&event) { + t.Fatalf("DefaultEventFilterFunc should always return false") + } +} + +// TestEventAggregatorByReasonFunc ensures that two events are aggregated if they vary only by event.message +func TestEventAggregatorByReasonFunc(t *testing.T) { + event1 := makeEvent("end-of-world", "it was fun", makeObjectReference("Pod", "pod1", "other")) + event2 := makeEvent("end-of-world", "it was awful", makeObjectReference("Pod", "pod1", "other")) + event3 := makeEvent("nevermind", "it was a bug", makeObjectReference("Pod", "pod1", "other")) + + aggKey1, localKey1 := EventAggregatorByReasonFunc(&event1) + aggKey2, localKey2 := EventAggregatorByReasonFunc(&event2) + aggKey3, _ := EventAggregatorByReasonFunc(&event3) + + if aggKey1 != aggKey2 { + t.Errorf("Expected %v equal %v", aggKey1, aggKey2) + } + if localKey1 == localKey2 { + t.Errorf("Expected %v to not equal %v", aggKey1, aggKey3) + } + if aggKey1 == aggKey3 { + t.Errorf("Expected %v to not equal %v", aggKey1, aggKey3) + } +} + +// TestEventAggregatorByReasonMessageFunc validates the proper output for an aggregate message +func TestEventAggregatorByReasonMessageFunc(t *testing.T) { + expectedPrefix := "(combined from similar events): " + event1 := makeEvent("end-of-world", "it was fun", makeObjectReference("Pod", "pod1", "other")) + actual := EventAggregatorByReasonMessageFunc(&event1) + if !strings.HasPrefix(actual, expectedPrefix) { + t.Errorf("Expected %v to begin with prefix %v", actual, expectedPrefix) + } +} + +// TestEventCorrelator validates proper counting, aggregation of events +func TestEventCorrelator(t *testing.T) { + firstEvent := makeEvent("first", "i am first", makeObjectReference("Pod", "my-pod", "my-ns")) + duplicateEvent := makeEvent("duplicate", "me again", makeObjectReference("Pod", "my-pod", "my-ns")) + uniqueEvent := makeEvent("unique", "snowflake", makeObjectReference("Pod", "my-pod", "my-ns")) + similarEvent := makeEvent("similar", "similar message", makeObjectReference("Pod", "my-pod", "my-ns")) + similarEvent.InvolvedObject.FieldPath = "spec.containers{container1}" + aggregateEvent := makeEvent(similarEvent.Reason, EventAggregatorByReasonMessageFunc(&similarEvent), similarEvent.InvolvedObject) + similarButDifferentContainerEvent := similarEvent + similarButDifferentContainerEvent.InvolvedObject.FieldPath = "spec.containers{container2}" + scenario := map[string]struct { + previousEvents []v1.Event + newEvent v1.Event + expectedEvent v1.Event + intervalSeconds int + }{ + "create-a-single-event": { + previousEvents: []v1.Event{}, + newEvent: firstEvent, + expectedEvent: setCount(firstEvent, 1), + intervalSeconds: 5, + }, + "the-same-event-should-just-count": { + previousEvents: makeEvents(1, duplicateEvent), + newEvent: duplicateEvent, + expectedEvent: setCount(duplicateEvent, 2), + intervalSeconds: 5, + }, + "the-same-event-should-just-count-even-if-more-than-aggregate": { + previousEvents: makeEvents(defaultAggregateMaxEvents, duplicateEvent), + newEvent: duplicateEvent, + expectedEvent: setCount(duplicateEvent, defaultAggregateMaxEvents+1), + intervalSeconds: 5, + }, + "create-many-unique-events": { + previousEvents: makeUniqueEvents(30), + newEvent: uniqueEvent, + expectedEvent: setCount(uniqueEvent, 1), + intervalSeconds: 5, + }, + "similar-events-should-aggregate-event": { + previousEvents: makeSimilarEvents(defaultAggregateMaxEvents-1, similarEvent, similarEvent.Message), + newEvent: similarEvent, + expectedEvent: setCount(aggregateEvent, 1), + intervalSeconds: 5, + }, + "similar-events-many-times-should-count-the-aggregate": { + previousEvents: makeSimilarEvents(defaultAggregateMaxEvents, similarEvent, similarEvent.Message), + newEvent: similarEvent, + expectedEvent: setCount(aggregateEvent, 2), + intervalSeconds: 5, + }, + "events-from-different-containers-do-not-aggregate": { + previousEvents: makeEvents(1, similarButDifferentContainerEvent), + newEvent: similarEvent, + expectedEvent: setCount(similarEvent, 1), + intervalSeconds: 5, + }, + "similar-events-whose-interval-is-greater-than-aggregate-interval-do-not-aggregate": { + previousEvents: makeSimilarEvents(defaultAggregateMaxEvents-1, similarEvent, similarEvent.Message), + newEvent: similarEvent, + expectedEvent: setCount(similarEvent, 1), + intervalSeconds: defaultAggregateIntervalInSeconds, + }, + } + + for testScenario, testInput := range scenario { + eventInterval := time.Duration(testInput.intervalSeconds) * time.Second + clock := clock.IntervalClock{Time: time.Now(), Duration: eventInterval} + correlator := NewEventCorrelator(&clock) + for i := range testInput.previousEvents { + event := testInput.previousEvents[i] + now := metav1.NewTime(clock.Now()) + event.FirstTimestamp = now + event.LastTimestamp = now + result, err := correlator.EventCorrelate(&event) + if err != nil { + t.Errorf("scenario %v: unexpected error playing back prevEvents %v", testScenario, err) + } + correlator.UpdateState(result.Event) + } + + // update the input to current clock value + now := metav1.NewTime(clock.Now()) + testInput.newEvent.FirstTimestamp = now + testInput.newEvent.LastTimestamp = now + result, err := correlator.EventCorrelate(&testInput.newEvent) + if err != nil { + t.Errorf("scenario %v: unexpected error correlating input event %v", testScenario, err) + } + + _, err = validateEvent(testScenario, result.Event, &testInput.expectedEvent, t) + if err != nil { + t.Errorf("scenario %v: unexpected error validating result %v", testScenario, err) + } + } +} diff --git a/vendor/k8s.io/client-go/tools/record/fake.go b/vendor/k8s.io/client-go/tools/record/fake.go new file mode 100644 index 000000000..c0e8eedbb --- /dev/null +++ b/vendor/k8s.io/client-go/tools/record/fake.go @@ -0,0 +1,54 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package record + +import ( + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// FakeRecorder is used as a fake during tests. It is thread safe. It is usable +// when created manually and not by NewFakeRecorder, however all events may be +// thrown away in this case. +type FakeRecorder struct { + Events chan string +} + +func (f *FakeRecorder) Event(object runtime.Object, eventtype, reason, message string) { + if f.Events != nil { + f.Events <- fmt.Sprintf("%s %s %s", eventtype, reason, message) + } +} + +func (f *FakeRecorder) Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{}) { + if f.Events != nil { + f.Events <- fmt.Sprintf(eventtype+" "+reason+" "+messageFmt, args...) + } +} + +func (f *FakeRecorder) PastEventf(object runtime.Object, timestamp metav1.Time, eventtype, reason, messageFmt string, args ...interface{}) { +} + +// NewFakeRecorder creates new fake event recorder with event channel with +// buffer of given size. +func NewFakeRecorder(bufferSize int) *FakeRecorder { + return &FakeRecorder{ + Events: make(chan string, bufferSize), + } +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/BUILD b/vendor/k8s.io/client-go/tools/remotecommand/BUILD new file mode 100644 index 000000000..6845abe04 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/BUILD @@ -0,0 +1,51 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "v2_test.go", + "v4_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "errorstream.go", + "remotecommand.go", + "resize.go", + "v1.go", + "v2.go", + "v3.go", + "v4.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/remotecommand:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + "//vendor/k8s.io/client-go/pkg/api/v1:go_default_library", + "//vendor/k8s.io/client-go/rest:go_default_library", + "//vendor/k8s.io/client-go/transport:go_default_library", + "//vendor/k8s.io/client-go/util/exec:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/tools/remotecommand/doc.go b/vendor/k8s.io/client-go/tools/remotecommand/doc.go new file mode 100644 index 000000000..ac06a9cd3 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package remotecommand adds support for executing commands in containers, +// with support for separate stdin, stdout, and stderr streams, as well as +// TTY. +package remotecommand // import "k8s.io/client-go/tools/remotecommand" diff --git a/vendor/k8s.io/client-go/tools/remotecommand/errorstream.go b/vendor/k8s.io/client-go/tools/remotecommand/errorstream.go new file mode 100644 index 000000000..360276b65 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/errorstream.go @@ -0,0 +1,55 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "fmt" + "io" + "io/ioutil" + + "k8s.io/apimachinery/pkg/util/runtime" +) + +// errorStreamDecoder interprets the data on the error channel and creates a go error object from it. +type errorStreamDecoder interface { + decode(message []byte) error +} + +// watchErrorStream watches the errorStream for remote command error data, +// decodes it with the given errorStreamDecoder, sends the decoded error (or nil if the remote +// command exited successfully) to the returned error channel, and closes it. +// This function returns immediately. +func watchErrorStream(errorStream io.Reader, d errorStreamDecoder) chan error { + errorChan := make(chan error) + + go func() { + defer runtime.HandleCrash() + + message, err := ioutil.ReadAll(errorStream) + switch { + case err != nil && err != io.EOF: + errorChan <- fmt.Errorf("error reading from error stream: %s", err) + case len(message) > 0: + errorChan <- d.decode(message) + default: + errorChan <- nil + } + close(errorChan) + }() + + return errorChan +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go b/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go new file mode 100644 index 000000000..a90fab1fe --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/remotecommand.go @@ -0,0 +1,178 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "fmt" + "io" + "net/http" + "net/url" + + "github.com/golang/glog" + + "k8s.io/apimachinery/pkg/util/httpstream" + "k8s.io/apimachinery/pkg/util/httpstream/spdy" + "k8s.io/apimachinery/pkg/util/remotecommand" + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/transport" +) + +// StreamOptions holds information pertaining to the current streaming session: supported stream +// protocols, input/output streams, if the client is requesting a TTY, and a terminal size queue to +// support terminal resizing. +type StreamOptions struct { + SupportedProtocols []string + Stdin io.Reader + Stdout io.Writer + Stderr io.Writer + Tty bool + TerminalSizeQueue TerminalSizeQueue +} + +// Executor is an interface for transporting shell-style streams. +type Executor interface { + // Stream initiates the transport of the standard shell streams. It will transport any + // non-nil stream to a remote system, and return an error if a problem occurs. If tty + // is set, the stderr stream is not used (raw TTY manages stdout and stderr over the + // stdout stream). + Stream(options StreamOptions) error +} + +// StreamExecutor supports the ability to dial an httpstream connection and the ability to +// run a command line stream protocol over that dialer. +type StreamExecutor interface { + Executor + httpstream.Dialer +} + +// streamExecutor handles transporting standard shell streams over an httpstream connection. +type streamExecutor struct { + upgrader httpstream.UpgradeRoundTripper + transport http.RoundTripper + + method string + url *url.URL +} + +// NewExecutor connects to the provided server and upgrades the connection to +// multiplexed bidirectional streams. The current implementation uses SPDY, +// but this could be replaced with HTTP/2 once it's available, or something else. +// TODO: the common code between this and portforward could be abstracted. +func NewExecutor(config *restclient.Config, method string, url *url.URL) (StreamExecutor, error) { + tlsConfig, err := restclient.TLSConfigFor(config) + if err != nil { + return nil, err + } + + upgradeRoundTripper := spdy.NewRoundTripper(tlsConfig, true) + wrapper, err := restclient.HTTPWrappersForConfig(config, upgradeRoundTripper) + if err != nil { + return nil, err + } + + return &streamExecutor{ + upgrader: upgradeRoundTripper, + transport: wrapper, + method: method, + url: url, + }, nil +} + +// NewStreamExecutor upgrades the request so that it supports multiplexed bidirectional +// streams. This method takes a stream upgrader and an optional function that is invoked +// to wrap the round tripper. This method may be used by clients that are lower level than +// Kubernetes clients or need to provide their own upgrade round tripper. +func NewStreamExecutor(upgrader httpstream.UpgradeRoundTripper, fn func(http.RoundTripper) http.RoundTripper, method string, url *url.URL) (StreamExecutor, error) { + rt := http.RoundTripper(upgrader) + if fn != nil { + rt = fn(rt) + } + return &streamExecutor{ + upgrader: upgrader, + transport: rt, + method: method, + url: url, + }, nil +} + +// Dial opens a connection to a remote server and attempts to negotiate a SPDY +// connection. Upon success, it returns the connection and the protocol +// selected by the server. +func (e *streamExecutor) Dial(protocols ...string) (httpstream.Connection, string, error) { + rt := transport.DebugWrappers(e.transport) + + // TODO the client probably shouldn't be created here, as it doesn't allow + // flexibility to allow callers to configure it. + client := &http.Client{Transport: rt} + + req, err := http.NewRequest(e.method, e.url.String(), nil) + if err != nil { + return nil, "", fmt.Errorf("error creating request: %v", err) + } + for i := range protocols { + req.Header.Add(httpstream.HeaderProtocolVersion, protocols[i]) + } + + resp, err := client.Do(req) + if err != nil { + return nil, "", fmt.Errorf("error sending request: %v", err) + } + defer resp.Body.Close() + + conn, err := e.upgrader.NewConnection(resp) + if err != nil { + return nil, "", err + } + + return conn, resp.Header.Get(httpstream.HeaderProtocolVersion), nil +} + +type streamCreator interface { + CreateStream(headers http.Header) (httpstream.Stream, error) +} + +type streamProtocolHandler interface { + stream(conn streamCreator) error +} + +// Stream opens a protocol streamer to the server and streams until a client closes +// the connection or the server disconnects. +func (e *streamExecutor) Stream(options StreamOptions) error { + conn, protocol, err := e.Dial(options.SupportedProtocols...) + if err != nil { + return err + } + defer conn.Close() + + var streamer streamProtocolHandler + + switch protocol { + case remotecommand.StreamProtocolV4Name: + streamer = newStreamProtocolV4(options) + case remotecommand.StreamProtocolV3Name: + streamer = newStreamProtocolV3(options) + case remotecommand.StreamProtocolV2Name: + streamer = newStreamProtocolV2(options) + case "": + glog.V(4).Infof("The server did not negotiate a streaming protocol version. Falling back to %s", remotecommand.StreamProtocolV1Name) + fallthrough + case remotecommand.StreamProtocolV1Name: + streamer = newStreamProtocolV1(options) + } + + return streamer.stream(conn) +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/resize.go b/vendor/k8s.io/client-go/tools/remotecommand/resize.go new file mode 100644 index 000000000..c838f21ba --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/resize.go @@ -0,0 +1,33 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +// TerminalSize and TerminalSizeQueue was a part of k8s.io/kubernetes/pkg/util/term +// and were moved in order to decouple client from other term dependencies + +// TerminalSize represents the width and height of a terminal. +type TerminalSize struct { + Width uint16 + Height uint16 +} + +// TerminalSizeQueue is capable of returning terminal resize events as they occur. +type TerminalSizeQueue interface { + // Next returns the new terminal size after the terminal has been resized. It returns nil when + // monitoring has been stopped. + Next() *TerminalSize +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/v1.go b/vendor/k8s.io/client-go/tools/remotecommand/v1.go new file mode 100644 index 000000000..1db917c0b --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/v1.go @@ -0,0 +1,160 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "fmt" + "io" + "io/ioutil" + "net/http" + + "github.com/golang/glog" + "k8s.io/apimachinery/pkg/util/httpstream" + "k8s.io/client-go/pkg/api/v1" +) + +// streamProtocolV1 implements the first version of the streaming exec & attach +// protocol. This version has some bugs, such as not being able to detect when +// non-interactive stdin data has ended. See http://issues.k8s.io/13394 and +// http://issues.k8s.io/13395 for more details. +type streamProtocolV1 struct { + StreamOptions + + errorStream httpstream.Stream + remoteStdin httpstream.Stream + remoteStdout httpstream.Stream + remoteStderr httpstream.Stream +} + +var _ streamProtocolHandler = &streamProtocolV1{} + +func newStreamProtocolV1(options StreamOptions) streamProtocolHandler { + return &streamProtocolV1{ + StreamOptions: options, + } +} + +func (p *streamProtocolV1) stream(conn streamCreator) error { + doneChan := make(chan struct{}, 2) + errorChan := make(chan error) + + cp := func(s string, dst io.Writer, src io.Reader) { + glog.V(6).Infof("Copying %s", s) + defer glog.V(6).Infof("Done copying %s", s) + if _, err := io.Copy(dst, src); err != nil && err != io.EOF { + glog.Errorf("Error copying %s: %v", s, err) + } + if s == v1.StreamTypeStdout || s == v1.StreamTypeStderr { + doneChan <- struct{}{} + } + } + + // set up all the streams first + var err error + headers := http.Header{} + headers.Set(v1.StreamType, v1.StreamTypeError) + p.errorStream, err = conn.CreateStream(headers) + if err != nil { + return err + } + defer p.errorStream.Reset() + + // Create all the streams first, then start the copy goroutines. The server doesn't start its copy + // goroutines until it's received all of the streams. If the client creates the stdin stream and + // immediately begins copying stdin data to the server, it's possible to overwhelm and wedge the + // spdy frame handler in the server so that it is full of unprocessed frames. The frames aren't + // getting processed because the server hasn't started its copying, and it won't do that until it + // gets all the streams. By creating all the streams first, we ensure that the server is ready to + // process data before the client starts sending any. See https://issues.k8s.io/16373 for more info. + if p.Stdin != nil { + headers.Set(v1.StreamType, v1.StreamTypeStdin) + p.remoteStdin, err = conn.CreateStream(headers) + if err != nil { + return err + } + defer p.remoteStdin.Reset() + } + + if p.Stdout != nil { + headers.Set(v1.StreamType, v1.StreamTypeStdout) + p.remoteStdout, err = conn.CreateStream(headers) + if err != nil { + return err + } + defer p.remoteStdout.Reset() + } + + if p.Stderr != nil && !p.Tty { + headers.Set(v1.StreamType, v1.StreamTypeStderr) + p.remoteStderr, err = conn.CreateStream(headers) + if err != nil { + return err + } + defer p.remoteStderr.Reset() + } + + // now that all the streams have been created, proceed with reading & copying + + // always read from errorStream + go func() { + message, err := ioutil.ReadAll(p.errorStream) + if err != nil && err != io.EOF { + errorChan <- fmt.Errorf("Error reading from error stream: %s", err) + return + } + if len(message) > 0 { + errorChan <- fmt.Errorf("Error executing remote command: %s", message) + return + } + }() + + if p.Stdin != nil { + // TODO this goroutine will never exit cleanly (the io.Copy never unblocks) + // because stdin is not closed until the process exits. If we try to call + // stdin.Close(), it returns no error but doesn't unblock the copy. It will + // exit when the process exits, instead. + go cp(v1.StreamTypeStdin, p.remoteStdin, p.Stdin) + } + + waitCount := 0 + completedStreams := 0 + + if p.Stdout != nil { + waitCount++ + go cp(v1.StreamTypeStdout, p.Stdout, p.remoteStdout) + } + + if p.Stderr != nil && !p.Tty { + waitCount++ + go cp(v1.StreamTypeStderr, p.Stderr, p.remoteStderr) + } + +Loop: + for { + select { + case <-doneChan: + completedStreams++ + if completedStreams == waitCount { + break Loop + } + case err := <-errorChan: + return err + } + } + + return nil +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/v2.go b/vendor/k8s.io/client-go/tools/remotecommand/v2.go new file mode 100644 index 000000000..95346a439 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/v2.go @@ -0,0 +1,195 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "fmt" + "io" + "io/ioutil" + "net/http" + "sync" + + "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/client-go/pkg/api/v1" +) + +// streamProtocolV2 implements version 2 of the streaming protocol for attach +// and exec. The original streaming protocol was metav1. As a result, this +// version is referred to as version 2, even though it is the first actual +// numbered version. +type streamProtocolV2 struct { + StreamOptions + + errorStream io.Reader + remoteStdin io.ReadWriteCloser + remoteStdout io.Reader + remoteStderr io.Reader +} + +var _ streamProtocolHandler = &streamProtocolV2{} + +func newStreamProtocolV2(options StreamOptions) streamProtocolHandler { + return &streamProtocolV2{ + StreamOptions: options, + } +} + +func (p *streamProtocolV2) createStreams(conn streamCreator) error { + var err error + headers := http.Header{} + + // set up error stream + headers.Set(v1.StreamType, v1.StreamTypeError) + p.errorStream, err = conn.CreateStream(headers) + if err != nil { + return err + } + + // set up stdin stream + if p.Stdin != nil { + headers.Set(v1.StreamType, v1.StreamTypeStdin) + p.remoteStdin, err = conn.CreateStream(headers) + if err != nil { + return err + } + } + + // set up stdout stream + if p.Stdout != nil { + headers.Set(v1.StreamType, v1.StreamTypeStdout) + p.remoteStdout, err = conn.CreateStream(headers) + if err != nil { + return err + } + } + + // set up stderr stream + if p.Stderr != nil && !p.Tty { + headers.Set(v1.StreamType, v1.StreamTypeStderr) + p.remoteStderr, err = conn.CreateStream(headers) + if err != nil { + return err + } + } + return nil +} + +func (p *streamProtocolV2) copyStdin() { + if p.Stdin != nil { + var once sync.Once + + // copy from client's stdin to container's stdin + go func() { + defer runtime.HandleCrash() + + // if p.stdin is noninteractive, p.g. `echo abc | kubectl exec -i -- cat`, make sure + // we close remoteStdin as soon as the copy from p.stdin to remoteStdin finishes. Otherwise + // the executed command will remain running. + defer once.Do(func() { p.remoteStdin.Close() }) + + if _, err := io.Copy(p.remoteStdin, p.Stdin); err != nil { + runtime.HandleError(err) + } + }() + + // read from remoteStdin until the stream is closed. this is essential to + // be able to exit interactive sessions cleanly and not leak goroutines or + // hang the client's terminal. + // + // TODO we aren't using go-dockerclient any more; revisit this to determine if it's still + // required by engine-api. + // + // go-dockerclient's current hijack implementation + // (https://github.com/fsouza/go-dockerclient/blob/89f3d56d93788dfe85f864a44f85d9738fca0670/client.go#L564) + // waits for all three streams (stdin/stdout/stderr) to finish copying + // before returning. When hijack finishes copying stdout/stderr, it calls + // Close() on its side of remoteStdin, which allows this copy to complete. + // When that happens, we must Close() on our side of remoteStdin, to + // allow the copy in hijack to complete, and hijack to return. + go func() { + defer runtime.HandleCrash() + defer once.Do(func() { p.remoteStdin.Close() }) + + // this "copy" doesn't actually read anything - it's just here to wait for + // the server to close remoteStdin. + if _, err := io.Copy(ioutil.Discard, p.remoteStdin); err != nil { + runtime.HandleError(err) + } + }() + } +} + +func (p *streamProtocolV2) copyStdout(wg *sync.WaitGroup) { + if p.Stdout == nil { + return + } + + wg.Add(1) + go func() { + defer runtime.HandleCrash() + defer wg.Done() + + if _, err := io.Copy(p.Stdout, p.remoteStdout); err != nil { + runtime.HandleError(err) + } + }() +} + +func (p *streamProtocolV2) copyStderr(wg *sync.WaitGroup) { + if p.Stderr == nil || p.Tty { + return + } + + wg.Add(1) + go func() { + defer runtime.HandleCrash() + defer wg.Done() + + if _, err := io.Copy(p.Stderr, p.remoteStderr); err != nil { + runtime.HandleError(err) + } + }() +} + +func (p *streamProtocolV2) stream(conn streamCreator) error { + if err := p.createStreams(conn); err != nil { + return err + } + + // now that all the streams have been created, proceed with reading & copying + + errorChan := watchErrorStream(p.errorStream, &errorDecoderV2{}) + + p.copyStdin() + + var wg sync.WaitGroup + p.copyStdout(&wg) + p.copyStderr(&wg) + + // we're waiting for stdout/stderr to finish copying + wg.Wait() + + // waits for errorStream to finish reading with an error or nil + return <-errorChan +} + +// errorDecoderV2 interprets the error channel data as plain text. +type errorDecoderV2 struct{} + +func (d *errorDecoderV2) decode(message []byte) error { + return fmt.Errorf("error executing remote command: %s", message) +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/v2_test.go b/vendor/k8s.io/client-go/tools/remotecommand/v2_test.go new file mode 100644 index 000000000..adebfaed8 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/v2_test.go @@ -0,0 +1,228 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "errors" + "io" + "net/http" + "strings" + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/httpstream" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/pkg/api/v1" +) + +type fakeReader struct { + err error +} + +func (r *fakeReader) Read([]byte) (int, error) { return 0, r.err } + +type fakeWriter struct{} + +func (*fakeWriter) Write([]byte) (int, error) { return 0, nil } + +type fakeStreamCreator struct { + created map[string]bool + errors map[string]error +} + +var _ streamCreator = &fakeStreamCreator{} + +func (f *fakeStreamCreator) CreateStream(headers http.Header) (httpstream.Stream, error) { + streamType := headers.Get(v1.StreamType) + f.created[streamType] = true + return nil, f.errors[streamType] +} + +func TestV2CreateStreams(t *testing.T) { + tests := []struct { + name string + stdin bool + stdinError error + stdout bool + stdoutError error + stderr bool + stderrError error + errorError error + tty bool + expectError bool + }{ + { + name: "stdin error", + stdin: true, + stdinError: errors.New("stdin error"), + expectError: true, + }, + { + name: "stdout error", + stdout: true, + stdoutError: errors.New("stdout error"), + expectError: true, + }, + { + name: "stderr error", + stderr: true, + stderrError: errors.New("stderr error"), + expectError: true, + }, + { + name: "error stream error", + stdin: true, + stdout: true, + stderr: true, + errorError: errors.New("error stream error"), + expectError: true, + }, + { + name: "no errors", + stdin: true, + stdout: true, + stderr: true, + expectError: false, + }, + { + name: "no errors, stderr & tty set, don't expect stderr", + stdin: true, + stdout: true, + stderr: true, + tty: true, + expectError: false, + }, + } + for _, test := range tests { + conn := &fakeStreamCreator{ + created: make(map[string]bool), + errors: map[string]error{ + v1.StreamTypeStdin: test.stdinError, + v1.StreamTypeStdout: test.stdoutError, + v1.StreamTypeStderr: test.stderrError, + v1.StreamTypeError: test.errorError, + }, + } + + opts := StreamOptions{Tty: test.tty} + if test.stdin { + opts.Stdin = &fakeReader{} + } + if test.stdout { + opts.Stdout = &fakeWriter{} + } + if test.stderr { + opts.Stderr = &fakeWriter{} + } + + h := newStreamProtocolV2(opts).(*streamProtocolV2) + err := h.createStreams(conn) + + if test.expectError { + if err == nil { + t.Errorf("%s: expected error", test.name) + continue + } + if e, a := test.stdinError, err; test.stdinError != nil && e != a { + t.Errorf("%s: expected %v, got %v", test.name, e, a) + } + if e, a := test.stdoutError, err; test.stdoutError != nil && e != a { + t.Errorf("%s: expected %v, got %v", test.name, e, a) + } + if e, a := test.stderrError, err; test.stderrError != nil && e != a { + t.Errorf("%s: expected %v, got %v", test.name, e, a) + } + if e, a := test.errorError, err; test.errorError != nil && e != a { + t.Errorf("%s: expected %v, got %v", test.name, e, a) + } + continue + } + + if !test.expectError && err != nil { + t.Errorf("%s: unexpected error: %v", test.name, err) + continue + } + + if test.stdin && !conn.created[v1.StreamTypeStdin] { + t.Errorf("%s: expected stdin stream", test.name) + } + if test.stdout && !conn.created[v1.StreamTypeStdout] { + t.Errorf("%s: expected stdout stream", test.name) + } + if test.stderr { + if test.tty && conn.created[v1.StreamTypeStderr] { + t.Errorf("%s: unexpected stderr stream because tty is set", test.name) + } else if !test.tty && !conn.created[v1.StreamTypeStderr] { + t.Errorf("%s: expected stderr stream", test.name) + } + } + if !conn.created[v1.StreamTypeError] { + t.Errorf("%s: expected error stream", test.name) + } + + } +} + +func TestV2ErrorStreamReading(t *testing.T) { + tests := []struct { + name string + stream io.Reader + expectedError error + }{ + { + name: "error reading from stream", + stream: &fakeReader{errors.New("foo")}, + expectedError: errors.New("error reading from error stream: foo"), + }, + { + name: "stream returns an error", + stream: strings.NewReader("some error"), + expectedError: errors.New("error executing remote command: some error"), + }, + } + + for _, test := range tests { + h := newStreamProtocolV2(StreamOptions{}).(*streamProtocolV2) + h.errorStream = test.stream + + ch := watchErrorStream(h.errorStream, &errorDecoderV2{}) + if ch == nil { + t.Fatalf("%s: unexpected nil channel", test.name) + } + + var err error + select { + case err = <-ch: + case <-time.After(wait.ForeverTestTimeout): + t.Fatalf("%s: timed out", test.name) + } + + if test.expectedError != nil { + if err == nil { + t.Errorf("%s: expected an error", test.name) + } else if e, a := test.expectedError, err; e.Error() != a.Error() { + t.Errorf("%s: expected %q, got %q", test.name, e, a) + } + continue + } + + if test.expectedError == nil && err != nil { + t.Errorf("%s: unexpected error: %v", test.name, err) + continue + } + } +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/v3.go b/vendor/k8s.io/client-go/tools/remotecommand/v3.go new file mode 100644 index 000000000..03b9e2a68 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/v3.go @@ -0,0 +1,111 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "encoding/json" + "io" + "net/http" + "sync" + + "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/client-go/pkg/api/v1" +) + +// streamProtocolV3 implements version 3 of the streaming protocol for attach +// and exec. This version adds support for resizing the container's terminal. +type streamProtocolV3 struct { + *streamProtocolV2 + + resizeStream io.Writer +} + +var _ streamProtocolHandler = &streamProtocolV3{} + +func newStreamProtocolV3(options StreamOptions) streamProtocolHandler { + return &streamProtocolV3{ + streamProtocolV2: newStreamProtocolV2(options).(*streamProtocolV2), + } +} + +func (p *streamProtocolV3) createStreams(conn streamCreator) error { + // set up the streams from v2 + if err := p.streamProtocolV2.createStreams(conn); err != nil { + return err + } + + // set up resize stream + if p.Tty { + headers := http.Header{} + headers.Set(v1.StreamType, v1.StreamTypeResize) + var err error + p.resizeStream, err = conn.CreateStream(headers) + if err != nil { + return err + } + } + + return nil +} + +func (p *streamProtocolV3) handleResizes() { + if p.resizeStream == nil || p.TerminalSizeQueue == nil { + return + } + go func() { + defer runtime.HandleCrash() + + encoder := json.NewEncoder(p.resizeStream) + for { + size := p.TerminalSizeQueue.Next() + if size == nil { + return + } + if err := encoder.Encode(&size); err != nil { + runtime.HandleError(err) + } + } + }() +} + +func (p *streamProtocolV3) stream(conn streamCreator) error { + if err := p.createStreams(conn); err != nil { + return err + } + + // now that all the streams have been created, proceed with reading & copying + + errorChan := watchErrorStream(p.errorStream, &errorDecoderV3{}) + + p.handleResizes() + + p.copyStdin() + + var wg sync.WaitGroup + p.copyStdout(&wg) + p.copyStderr(&wg) + + // we're waiting for stdout/stderr to finish copying + wg.Wait() + + // waits for errorStream to finish reading with an error or nil + return <-errorChan +} + +type errorDecoderV3 struct { + errorDecoderV2 +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/v4.go b/vendor/k8s.io/client-go/tools/remotecommand/v4.go new file mode 100644 index 000000000..69ca934a0 --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/v4.go @@ -0,0 +1,119 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "encoding/json" + "errors" + "fmt" + "strconv" + "sync" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/remotecommand" + "k8s.io/client-go/util/exec" +) + +// streamProtocolV4 implements version 4 of the streaming protocol for attach +// and exec. This version adds support for exit codes on the error stream through +// the use of metav1.Status instead of plain text messages. +type streamProtocolV4 struct { + *streamProtocolV3 +} + +var _ streamProtocolHandler = &streamProtocolV4{} + +func newStreamProtocolV4(options StreamOptions) streamProtocolHandler { + return &streamProtocolV4{ + streamProtocolV3: newStreamProtocolV3(options).(*streamProtocolV3), + } +} + +func (p *streamProtocolV4) createStreams(conn streamCreator) error { + return p.streamProtocolV3.createStreams(conn) +} + +func (p *streamProtocolV4) handleResizes() { + p.streamProtocolV3.handleResizes() +} + +func (p *streamProtocolV4) stream(conn streamCreator) error { + if err := p.createStreams(conn); err != nil { + return err + } + + // now that all the streams have been created, proceed with reading & copying + + errorChan := watchErrorStream(p.errorStream, &errorDecoderV4{}) + + p.handleResizes() + + p.copyStdin() + + var wg sync.WaitGroup + p.copyStdout(&wg) + p.copyStderr(&wg) + + // we're waiting for stdout/stderr to finish copying + wg.Wait() + + // waits for errorStream to finish reading with an error or nil + return <-errorChan +} + +// errorDecoderV4 interprets the json-marshaled metav1.Status on the error channel +// and creates an exec.ExitError from it. +type errorDecoderV4 struct{} + +func (d *errorDecoderV4) decode(message []byte) error { + status := metav1.Status{} + err := json.Unmarshal(message, &status) + if err != nil { + return fmt.Errorf("error stream protocol error: %v in %q", err, string(message)) + } + switch status.Status { + case metav1.StatusSuccess: + return nil + case metav1.StatusFailure: + if status.Reason == remotecommand.NonZeroExitCodeReason { + if status.Details == nil { + return errors.New("error stream protocol error: details must be set") + } + for i := range status.Details.Causes { + c := &status.Details.Causes[i] + if c.Type != remotecommand.ExitCodeCauseType { + continue + } + + rc, err := strconv.ParseUint(c.Message, 10, 8) + if err != nil { + return fmt.Errorf("error stream protocol error: invalid exit code value %q", c.Message) + } + return exec.CodeExitError{ + Err: fmt.Errorf("command terminated with exit code %d", rc), + Code: int(rc), + } + } + + return fmt.Errorf("error stream protocol error: no %s cause given", remotecommand.ExitCodeCauseType) + } + default: + return errors.New("error stream protocol error: unknown error") + } + + return fmt.Errorf(status.Message) +} diff --git a/vendor/k8s.io/client-go/tools/remotecommand/v4_test.go b/vendor/k8s.io/client-go/tools/remotecommand/v4_test.go new file mode 100644 index 000000000..b8674918f --- /dev/null +++ b/vendor/k8s.io/client-go/tools/remotecommand/v4_test.go @@ -0,0 +1,71 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package remotecommand + +import ( + "fmt" + "testing" +) + +func TestV4ErrorDecoder(t *testing.T) { + dec := errorDecoderV4{} + + type Test struct { + message string + err string + } + + for _, test := range []Test{ + { + message: "{}", + err: "error stream protocol error: unknown error", + }, + { + message: "{", + err: "error stream protocol error: unexpected end of JSON input in \"{\"", + }, + { + message: `{"status": "Success" }`, + err: "", + }, + { + message: `{"status": "Failure", "message": "foobar" }`, + err: "foobar", + }, + { + message: `{"status": "Failure", "message": "foobar", "reason": "NonZeroExitCode", "details": {"causes": [{"reason": "foo"}] } }`, + err: "error stream protocol error: no ExitCode cause given", + }, + { + message: `{"status": "Failure", "message": "foobar", "reason": "NonZeroExitCode", "details": {"causes": [{"reason": "ExitCode"}] } }`, + err: "error stream protocol error: invalid exit code value \"\"", + }, + { + message: `{"status": "Failure", "message": "foobar", "reason": "NonZeroExitCode", "details": {"causes": [{"reason": "ExitCode", "message": "42"}] } }`, + err: "command terminated with exit code 42", + }, + } { + err := dec.decode([]byte(test.message)) + want := test.err + if want == "" { + want = "" + } + if got := fmt.Sprintf("%v", err); got != want { + t.Errorf("wrong error for message %q: want=%q, got=%q", test.message, want, got) + } + } +} diff --git a/vendor/k8s.io/client-go/transport/BUILD b/vendor/k8s.io/client-go/transport/BUILD new file mode 100644 index 000000000..21ca514e0 --- /dev/null +++ b/vendor/k8s.io/client-go/transport/BUILD @@ -0,0 +1,35 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "cache_test.go", + "round_trippers_test.go", + "transport_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "cache.go", + "config.go", + "round_trippers.go", + "transport.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/golang/glog:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/transport/OWNERS b/vendor/k8s.io/client-go/transport/OWNERS new file mode 100755 index 000000000..bf0ba5b9f --- /dev/null +++ b/vendor/k8s.io/client-go/transport/OWNERS @@ -0,0 +1,7 @@ +reviewers: +- smarterclayton +- wojtek-t +- deads2k +- liggitt +- krousey +- caesarxuchao diff --git a/vendor/k8s.io/client-go/transport/cache.go b/vendor/k8s.io/client-go/transport/cache.go new file mode 100644 index 000000000..8d76def34 --- /dev/null +++ b/vendor/k8s.io/client-go/transport/cache.go @@ -0,0 +1,88 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "fmt" + "net" + "net/http" + "sync" + "time" + + utilnet "k8s.io/apimachinery/pkg/util/net" +) + +// TlsTransportCache caches TLS http.RoundTrippers different configurations. The +// same RoundTripper will be returned for configs with identical TLS options If +// the config has no custom TLS options, http.DefaultTransport is returned. +type tlsTransportCache struct { + mu sync.Mutex + transports map[string]*http.Transport +} + +const idleConnsPerHost = 25 + +var tlsCache = &tlsTransportCache{transports: make(map[string]*http.Transport)} + +func (c *tlsTransportCache) get(config *Config) (http.RoundTripper, error) { + key, err := tlsConfigKey(config) + if err != nil { + return nil, err + } + + // Ensure we only create a single transport for the given TLS options + c.mu.Lock() + defer c.mu.Unlock() + + // See if we already have a custom transport for this config + if t, ok := c.transports[key]; ok { + return t, nil + } + + // Get the TLS options for this client config + tlsConfig, err := TLSConfigFor(config) + if err != nil { + return nil, err + } + // The options didn't require a custom TLS config + if tlsConfig == nil { + return http.DefaultTransport, nil + } + + // Cache a single transport for these options + c.transports[key] = utilnet.SetTransportDefaults(&http.Transport{ + Proxy: http.ProxyFromEnvironment, + TLSHandshakeTimeout: 10 * time.Second, + TLSClientConfig: tlsConfig, + MaxIdleConnsPerHost: idleConnsPerHost, + Dial: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).Dial, + }) + return c.transports[key], nil +} + +// tlsConfigKey returns a unique key for tls.Config objects returned from TLSConfigFor +func tlsConfigKey(c *Config) (string, error) { + // Make sure ca/key/cert content is loaded + if err := loadTLSFiles(c); err != nil { + return "", err + } + // Only include the things that actually affect the tls.Config + return fmt.Sprintf("%v/%x/%x/%x", c.TLS.Insecure, c.TLS.CAData, c.TLS.CertData, c.TLS.KeyData), nil +} diff --git a/vendor/k8s.io/client-go/transport/cache_test.go b/vendor/k8s.io/client-go/transport/cache_test.go new file mode 100644 index 000000000..eb9624d7e --- /dev/null +++ b/vendor/k8s.io/client-go/transport/cache_test.go @@ -0,0 +1,114 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "net/http" + "testing" +) + +func TestTLSConfigKey(t *testing.T) { + // Make sure config fields that don't affect the tls config don't affect the cache key + identicalConfigurations := map[string]*Config{ + "empty": {}, + "basic": {Username: "bob", Password: "password"}, + "bearer": {BearerToken: "token"}, + "user agent": {UserAgent: "useragent"}, + "transport": {Transport: http.DefaultTransport}, + "wrap transport": {WrapTransport: func(http.RoundTripper) http.RoundTripper { return nil }}, + } + for nameA, valueA := range identicalConfigurations { + for nameB, valueB := range identicalConfigurations { + keyA, err := tlsConfigKey(valueA) + if err != nil { + t.Errorf("Unexpected error for %q: %v", nameA, err) + continue + } + keyB, err := tlsConfigKey(valueB) + if err != nil { + t.Errorf("Unexpected error for %q: %v", nameB, err) + continue + } + if keyA != keyB { + t.Errorf("Expected identical cache keys for %q and %q, got:\n\t%s\n\t%s", nameA, nameB, keyA, keyB) + continue + } + } + } + + // Make sure config fields that affect the tls config affect the cache key + uniqueConfigurations := map[string]*Config{ + "no tls": {}, + "insecure": {TLS: TLSConfig{Insecure: true}}, + "cadata 1": {TLS: TLSConfig{CAData: []byte{1}}}, + "cadata 2": {TLS: TLSConfig{CAData: []byte{2}}}, + "cert 1, key 1": { + TLS: TLSConfig{ + CertData: []byte{1}, + KeyData: []byte{1}, + }, + }, + "cert 1, key 2": { + TLS: TLSConfig{ + CertData: []byte{1}, + KeyData: []byte{2}, + }, + }, + "cert 2, key 1": { + TLS: TLSConfig{ + CertData: []byte{2}, + KeyData: []byte{1}, + }, + }, + "cert 2, key 2": { + TLS: TLSConfig{ + CertData: []byte{2}, + KeyData: []byte{2}, + }, + }, + "cadata 1, cert 1, key 1": { + TLS: TLSConfig{ + CAData: []byte{1}, + CertData: []byte{1}, + KeyData: []byte{1}, + }, + }, + } + for nameA, valueA := range uniqueConfigurations { + for nameB, valueB := range uniqueConfigurations { + // Don't compare to ourselves + if nameA == nameB { + continue + } + + keyA, err := tlsConfigKey(valueA) + if err != nil { + t.Errorf("Unexpected error for %q: %v", nameA, err) + continue + } + keyB, err := tlsConfigKey(valueB) + if err != nil { + t.Errorf("Unexpected error for %q: %v", nameB, err) + continue + } + if keyA == keyB { + t.Errorf("Expected unique cache keys for %q and %q, got:\n\t%s\n\t%s", nameA, nameB, keyA, keyB) + continue + } + } + } +} diff --git a/vendor/k8s.io/client-go/transport/config.go b/vendor/k8s.io/client-go/transport/config.go new file mode 100644 index 000000000..820594ba3 --- /dev/null +++ b/vendor/k8s.io/client-go/transport/config.go @@ -0,0 +1,95 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import "net/http" + +// Config holds various options for establishing a transport. +type Config struct { + // UserAgent is an optional field that specifies the caller of this + // request. + UserAgent string + + // The base TLS configuration for this transport. + TLS TLSConfig + + // Username and password for basic authentication + Username string + Password string + + // Bearer token for authentication + BearerToken string + + // Impersonate is the config that this Config will impersonate using + Impersonate ImpersonationConfig + + // Transport may be used for custom HTTP behavior. This attribute may + // not be specified with the TLS client certificate options. Use + // WrapTransport for most client level operations. + Transport http.RoundTripper + + // WrapTransport will be invoked for custom HTTP behavior after the + // underlying transport is initialized (either the transport created + // from TLSClientConfig, Transport, or http.DefaultTransport). The + // config may layer other RoundTrippers on top of the returned + // RoundTripper. + WrapTransport func(rt http.RoundTripper) http.RoundTripper +} + +// ImpersonationConfig has all the available impersonation options +type ImpersonationConfig struct { + // UserName matches user.Info.GetName() + UserName string + // Groups matches user.Info.GetGroups() + Groups []string + // Extra matches user.Info.GetExtra() + Extra map[string][]string +} + +// HasCA returns whether the configuration has a certificate authority or not. +func (c *Config) HasCA() bool { + return len(c.TLS.CAData) > 0 || len(c.TLS.CAFile) > 0 +} + +// HasBasicAuth returns whether the configuration has basic authentication or not. +func (c *Config) HasBasicAuth() bool { + return len(c.Username) != 0 +} + +// HasTokenAuth returns whether the configuration has token authentication or not. +func (c *Config) HasTokenAuth() bool { + return len(c.BearerToken) != 0 +} + +// HasCertAuth returns whether the configuration has certificate authentication or not. +func (c *Config) HasCertAuth() bool { + return len(c.TLS.CertData) != 0 || len(c.TLS.CertFile) != 0 +} + +// TLSConfig holds the information needed to set up a TLS transport. +type TLSConfig struct { + CAFile string // Path of the PEM-encoded server trusted root certificates. + CertFile string // Path of the PEM-encoded client certificate. + KeyFile string // Path of the PEM-encoded client key. + + Insecure bool // Server should be accessed without verifying the certificate. For testing only. + ServerName string // Override for the server name passed to the server for SNI and used to verify certificates. + + CAData []byte // Bytes of the PEM-encoded server trusted root certificates. Supercedes CAFile. + CertData []byte // Bytes of the PEM-encoded client certificate. Supercedes CertFile. + KeyData []byte // Bytes of the PEM-encoded client key. Supercedes KeyFile. +} diff --git a/vendor/k8s.io/client-go/transport/round_trippers.go b/vendor/k8s.io/client-go/transport/round_trippers.go new file mode 100644 index 000000000..c728b1877 --- /dev/null +++ b/vendor/k8s.io/client-go/transport/round_trippers.go @@ -0,0 +1,424 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "fmt" + "net/http" + "strings" + "time" + + "github.com/golang/glog" + + utilnet "k8s.io/apimachinery/pkg/util/net" +) + +// HTTPWrappersForConfig wraps a round tripper with any relevant layered +// behavior from the config. Exposed to allow more clients that need HTTP-like +// behavior but then must hijack the underlying connection (like WebSocket or +// HTTP2 clients). Pure HTTP clients should use the RoundTripper returned from +// New. +func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTripper, error) { + if config.WrapTransport != nil { + rt = config.WrapTransport(rt) + } + + rt = DebugWrappers(rt) + + // Set authentication wrappers + switch { + case config.HasBasicAuth() && config.HasTokenAuth(): + return nil, fmt.Errorf("username/password or bearer token may be set, but not both") + case config.HasTokenAuth(): + rt = NewBearerAuthRoundTripper(config.BearerToken, rt) + case config.HasBasicAuth(): + rt = NewBasicAuthRoundTripper(config.Username, config.Password, rt) + } + if len(config.UserAgent) > 0 { + rt = NewUserAgentRoundTripper(config.UserAgent, rt) + } + if len(config.Impersonate.UserName) > 0 || + len(config.Impersonate.Groups) > 0 || + len(config.Impersonate.Extra) > 0 { + rt = NewImpersonatingRoundTripper(config.Impersonate, rt) + } + return rt, nil +} + +// DebugWrappers wraps a round tripper and logs based on the current log level. +func DebugWrappers(rt http.RoundTripper) http.RoundTripper { + switch { + case bool(glog.V(9)): + rt = newDebuggingRoundTripper(rt, debugCurlCommand, debugURLTiming, debugResponseHeaders) + case bool(glog.V(8)): + rt = newDebuggingRoundTripper(rt, debugJustURL, debugRequestHeaders, debugResponseStatus, debugResponseHeaders) + case bool(glog.V(7)): + rt = newDebuggingRoundTripper(rt, debugJustURL, debugRequestHeaders, debugResponseStatus) + case bool(glog.V(6)): + rt = newDebuggingRoundTripper(rt, debugURLTiming) + } + + return rt +} + +type requestCanceler interface { + CancelRequest(*http.Request) +} + +type authProxyRoundTripper struct { + username string + groups []string + extra map[string][]string + + rt http.RoundTripper +} + +// NewAuthProxyRoundTripper provides a roundtripper which will add auth proxy fields to requests for +// authentication terminating proxy cases +// assuming you pull the user from the context: +// username is the user.Info.GetName() of the user +// groups is the user.Info.GetGroups() of the user +// extra is the user.Info.GetExtra() of the user +// extra can contain any additional information that the authenticator +// thought was interesting, for example authorization scopes. +// In order to faithfully round-trip through an impersonation flow, these keys +// MUST be lowercase. +func NewAuthProxyRoundTripper(username string, groups []string, extra map[string][]string, rt http.RoundTripper) http.RoundTripper { + return &authProxyRoundTripper{ + username: username, + groups: groups, + extra: extra, + rt: rt, + } +} + +func (rt *authProxyRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + req = utilnet.CloneRequest(req) + SetAuthProxyHeaders(req, rt.username, rt.groups, rt.extra) + + return rt.rt.RoundTrip(req) +} + +// SetAuthProxyHeaders stomps the auth proxy header fields. It mutates its argument. +func SetAuthProxyHeaders(req *http.Request, username string, groups []string, extra map[string][]string) { + req.Header.Del("X-Remote-User") + req.Header.Del("X-Remote-Group") + for key := range req.Header { + if strings.HasPrefix(strings.ToLower(key), strings.ToLower("X-Remote-Extra-")) { + req.Header.Del(key) + } + } + + req.Header.Set("X-Remote-User", username) + for _, group := range groups { + req.Header.Add("X-Remote-Group", group) + } + for key, values := range extra { + for _, value := range values { + req.Header.Add("X-Remote-Extra-"+key, value) + } + } +} + +func (rt *authProxyRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *authProxyRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +type userAgentRoundTripper struct { + agent string + rt http.RoundTripper +} + +func NewUserAgentRoundTripper(agent string, rt http.RoundTripper) http.RoundTripper { + return &userAgentRoundTripper{agent, rt} +} + +func (rt *userAgentRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("User-Agent")) != 0 { + return rt.rt.RoundTrip(req) + } + req = utilnet.CloneRequest(req) + req.Header.Set("User-Agent", rt.agent) + return rt.rt.RoundTrip(req) +} + +func (rt *userAgentRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *userAgentRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +type basicAuthRoundTripper struct { + username string + password string + rt http.RoundTripper +} + +// NewBasicAuthRoundTripper will apply a BASIC auth authorization header to a +// request unless it has already been set. +func NewBasicAuthRoundTripper(username, password string, rt http.RoundTripper) http.RoundTripper { + return &basicAuthRoundTripper{username, password, rt} +} + +func (rt *basicAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Authorization")) != 0 { + return rt.rt.RoundTrip(req) + } + req = utilnet.CloneRequest(req) + req.SetBasicAuth(rt.username, rt.password) + return rt.rt.RoundTrip(req) +} + +func (rt *basicAuthRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *basicAuthRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +// These correspond to the headers used in pkg/apis/authentication. We don't want the package dependency, +// but you must not change the values. +const ( + // ImpersonateUserHeader is used to impersonate a particular user during an API server request + ImpersonateUserHeader = "Impersonate-User" + + // ImpersonateGroupHeader is used to impersonate a particular group during an API server request. + // It can be repeated multiplied times for multiple groups. + ImpersonateGroupHeader = "Impersonate-Group" + + // ImpersonateUserExtraHeaderPrefix is a prefix for a header used to impersonate an entry in the + // extra map[string][]string for user.Info. The key for the `extra` map is suffix. + // The same key can be repeated multiple times to have multiple elements in the slice under a single key. + // For instance: + // Impersonate-Extra-Foo: one + // Impersonate-Extra-Foo: two + // results in extra["Foo"] = []string{"one", "two"} + ImpersonateUserExtraHeaderPrefix = "Impersonate-Extra-" +) + +type impersonatingRoundTripper struct { + impersonate ImpersonationConfig + delegate http.RoundTripper +} + +// NewImpersonatingRoundTripper will add an Act-As header to a request unless it has already been set. +func NewImpersonatingRoundTripper(impersonate ImpersonationConfig, delegate http.RoundTripper) http.RoundTripper { + return &impersonatingRoundTripper{impersonate, delegate} +} + +func (rt *impersonatingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + // use the user header as marker for the rest. + if len(req.Header.Get(ImpersonateUserHeader)) != 0 { + return rt.delegate.RoundTrip(req) + } + req = utilnet.CloneRequest(req) + req.Header.Set(ImpersonateUserHeader, rt.impersonate.UserName) + + for _, group := range rt.impersonate.Groups { + req.Header.Add(ImpersonateGroupHeader, group) + } + for k, vv := range rt.impersonate.Extra { + for _, v := range vv { + req.Header.Add(ImpersonateUserExtraHeaderPrefix+k, v) + } + } + + return rt.delegate.RoundTrip(req) +} + +func (rt *impersonatingRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.delegate.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *impersonatingRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.delegate } + +type bearerAuthRoundTripper struct { + bearer string + rt http.RoundTripper +} + +// NewBearerAuthRoundTripper adds the provided bearer token to a request +// unless the authorization header has already been set. +func NewBearerAuthRoundTripper(bearer string, rt http.RoundTripper) http.RoundTripper { + return &bearerAuthRoundTripper{bearer, rt} +} + +func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Authorization")) != 0 { + return rt.rt.RoundTrip(req) + } + + req = utilnet.CloneRequest(req) + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", rt.bearer)) + return rt.rt.RoundTrip(req) +} + +func (rt *bearerAuthRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *bearerAuthRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +// requestInfo keeps track of information about a request/response combination +type requestInfo struct { + RequestHeaders http.Header + RequestVerb string + RequestURL string + + ResponseStatus string + ResponseHeaders http.Header + ResponseErr error + + Duration time.Duration +} + +// newRequestInfo creates a new RequestInfo based on an http request +func newRequestInfo(req *http.Request) *requestInfo { + return &requestInfo{ + RequestURL: req.URL.String(), + RequestVerb: req.Method, + RequestHeaders: req.Header, + } +} + +// complete adds information about the response to the requestInfo +func (r *requestInfo) complete(response *http.Response, err error) { + if err != nil { + r.ResponseErr = err + return + } + r.ResponseStatus = response.Status + r.ResponseHeaders = response.Header +} + +// toCurl returns a string that can be run as a command in a terminal (minus the body) +func (r *requestInfo) toCurl() string { + headers := "" + for key, values := range r.RequestHeaders { + for _, value := range values { + headers += fmt.Sprintf(` -H %q`, fmt.Sprintf("%s: %s", key, value)) + } + } + + return fmt.Sprintf("curl -k -v -X%s %s %s", r.RequestVerb, headers, r.RequestURL) +} + +// debuggingRoundTripper will display information about the requests passing +// through it based on what is configured +type debuggingRoundTripper struct { + delegatedRoundTripper http.RoundTripper + + levels map[debugLevel]bool +} + +type debugLevel int + +const ( + debugJustURL debugLevel = iota + debugURLTiming + debugCurlCommand + debugRequestHeaders + debugResponseStatus + debugResponseHeaders +) + +func newDebuggingRoundTripper(rt http.RoundTripper, levels ...debugLevel) *debuggingRoundTripper { + drt := &debuggingRoundTripper{ + delegatedRoundTripper: rt, + levels: make(map[debugLevel]bool, len(levels)), + } + for _, v := range levels { + drt.levels[v] = true + } + return drt +} + +func (rt *debuggingRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.delegatedRoundTripper.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + reqInfo := newRequestInfo(req) + + if rt.levels[debugJustURL] { + glog.Infof("%s %s", reqInfo.RequestVerb, reqInfo.RequestURL) + } + if rt.levels[debugCurlCommand] { + glog.Infof("%s", reqInfo.toCurl()) + + } + if rt.levels[debugRequestHeaders] { + glog.Infof("Request Headers:") + for key, values := range reqInfo.RequestHeaders { + for _, value := range values { + glog.Infof(" %s: %s", key, value) + } + } + } + + startTime := time.Now() + response, err := rt.delegatedRoundTripper.RoundTrip(req) + reqInfo.Duration = time.Since(startTime) + + reqInfo.complete(response, err) + + if rt.levels[debugURLTiming] { + glog.Infof("%s %s %s in %d milliseconds", reqInfo.RequestVerb, reqInfo.RequestURL, reqInfo.ResponseStatus, reqInfo.Duration.Nanoseconds()/int64(time.Millisecond)) + } + if rt.levels[debugResponseStatus] { + glog.Infof("Response Status: %s in %d milliseconds", reqInfo.ResponseStatus, reqInfo.Duration.Nanoseconds()/int64(time.Millisecond)) + } + if rt.levels[debugResponseHeaders] { + glog.Infof("Response Headers:") + for key, values := range reqInfo.ResponseHeaders { + for _, value := range values { + glog.Infof(" %s: %s", key, value) + } + } + } + + return response, err +} + +func (rt *debuggingRoundTripper) WrappedRoundTripper() http.RoundTripper { + return rt.delegatedRoundTripper +} diff --git a/vendor/k8s.io/client-go/transport/round_trippers_test.go b/vendor/k8s.io/client-go/transport/round_trippers_test.go new file mode 100644 index 000000000..d5ffc6bde --- /dev/null +++ b/vendor/k8s.io/client-go/transport/round_trippers_test.go @@ -0,0 +1,218 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "net/http" + "reflect" + "strings" + "testing" +) + +type testRoundTripper struct { + Request *http.Request + Response *http.Response + Err error +} + +func (rt *testRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + rt.Request = req + return rt.Response, rt.Err +} + +func TestBearerAuthRoundTripper(t *testing.T) { + rt := &testRoundTripper{} + req := &http.Request{} + NewBearerAuthRoundTripper("test", rt).RoundTrip(req) + if rt.Request == nil { + t.Fatalf("unexpected nil request: %v", rt) + } + if rt.Request == req { + t.Fatalf("round tripper should have copied request object: %#v", rt.Request) + } + if rt.Request.Header.Get("Authorization") != "Bearer test" { + t.Errorf("unexpected authorization header: %#v", rt.Request) + } +} + +func TestBasicAuthRoundTripper(t *testing.T) { + for n, tc := range map[string]struct { + user string + pass string + }{ + "basic": {user: "user", pass: "pass"}, + "no pass": {user: "user"}, + } { + rt := &testRoundTripper{} + req := &http.Request{} + NewBasicAuthRoundTripper(tc.user, tc.pass, rt).RoundTrip(req) + if rt.Request == nil { + t.Fatalf("%s: unexpected nil request: %v", n, rt) + } + if rt.Request == req { + t.Fatalf("%s: round tripper should have copied request object: %#v", n, rt.Request) + } + if user, pass, found := rt.Request.BasicAuth(); !found || user != tc.user || pass != tc.pass { + t.Errorf("%s: unexpected authorization header: %#v", n, rt.Request) + } + } +} + +func TestUserAgentRoundTripper(t *testing.T) { + rt := &testRoundTripper{} + req := &http.Request{ + Header: make(http.Header), + } + req.Header.Set("User-Agent", "other") + NewUserAgentRoundTripper("test", rt).RoundTrip(req) + if rt.Request == nil { + t.Fatalf("unexpected nil request: %v", rt) + } + if rt.Request != req { + t.Fatalf("round tripper should not have copied request object: %#v", rt.Request) + } + if rt.Request.Header.Get("User-Agent") != "other" { + t.Errorf("unexpected user agent header: %#v", rt.Request) + } + + req = &http.Request{} + NewUserAgentRoundTripper("test", rt).RoundTrip(req) + if rt.Request == nil { + t.Fatalf("unexpected nil request: %v", rt) + } + if rt.Request == req { + t.Fatalf("round tripper should have copied request object: %#v", rt.Request) + } + if rt.Request.Header.Get("User-Agent") != "test" { + t.Errorf("unexpected user agent header: %#v", rt.Request) + } +} + +func TestImpersonationRoundTripper(t *testing.T) { + tcs := []struct { + name string + impersonationConfig ImpersonationConfig + expected map[string][]string + }{ + { + name: "all", + impersonationConfig: ImpersonationConfig{ + UserName: "user", + Groups: []string{"one", "two"}, + Extra: map[string][]string{ + "first": {"A", "a"}, + "second": {"B", "b"}, + }, + }, + expected: map[string][]string{ + ImpersonateUserHeader: {"user"}, + ImpersonateGroupHeader: {"one", "two"}, + ImpersonateUserExtraHeaderPrefix + "First": {"A", "a"}, + ImpersonateUserExtraHeaderPrefix + "Second": {"B", "b"}, + }, + }, + } + + for _, tc := range tcs { + rt := &testRoundTripper{} + req := &http.Request{ + Header: make(http.Header), + } + NewImpersonatingRoundTripper(tc.impersonationConfig, rt).RoundTrip(req) + + for k, v := range rt.Request.Header { + expected, ok := tc.expected[k] + if !ok { + t.Errorf("%v missing %v=%v", tc.name, k, v) + continue + } + if !reflect.DeepEqual(expected, v) { + t.Errorf("%v expected %v: %v, got %v", tc.name, k, expected, v) + } + } + for k, v := range tc.expected { + expected, ok := rt.Request.Header[k] + if !ok { + t.Errorf("%v missing %v=%v", tc.name, k, v) + continue + } + if !reflect.DeepEqual(expected, v) { + t.Errorf("%v expected %v: %v, got %v", tc.name, k, expected, v) + } + } + } +} + +func TestAuthProxyRoundTripper(t *testing.T) { + for n, tc := range map[string]struct { + username string + groups []string + extra map[string][]string + }{ + "allfields": { + username: "user", + groups: []string{"groupA", "groupB"}, + extra: map[string][]string{ + "one": {"alpha", "bravo"}, + "two": {"charlie", "delta"}, + }, + }, + } { + rt := &testRoundTripper{} + req := &http.Request{} + NewAuthProxyRoundTripper(tc.username, tc.groups, tc.extra, rt).RoundTrip(req) + if rt.Request == nil { + t.Errorf("%s: unexpected nil request: %v", n, rt) + continue + } + if rt.Request == req { + t.Errorf("%s: round tripper should have copied request object: %#v", n, rt.Request) + continue + } + + actualUsernames, ok := rt.Request.Header["X-Remote-User"] + if !ok { + t.Errorf("%s missing value", n) + continue + } + if e, a := []string{tc.username}, actualUsernames; !reflect.DeepEqual(e, a) { + t.Errorf("%s expected %v, got %v", n, e, a) + continue + } + actualGroups, ok := rt.Request.Header["X-Remote-Group"] + if !ok { + t.Errorf("%s missing value", n) + continue + } + if e, a := tc.groups, actualGroups; !reflect.DeepEqual(e, a) { + t.Errorf("%s expected %v, got %v", n, e, a) + continue + } + + actualExtra := map[string][]string{} + for key, values := range rt.Request.Header { + if strings.HasPrefix(strings.ToLower(key), strings.ToLower("X-Remote-Extra-")) { + extraKey := strings.ToLower(key[len("X-Remote-Extra-"):]) + actualExtra[extraKey] = append(actualExtra[key], values...) + } + } + if e, a := tc.extra, actualExtra; !reflect.DeepEqual(e, a) { + t.Errorf("%s expected %v, got %v", n, e, a) + continue + } + } +} diff --git a/vendor/k8s.io/client-go/transport/transport.go b/vendor/k8s.io/client-go/transport/transport.go new file mode 100644 index 000000000..15be0a3e6 --- /dev/null +++ b/vendor/k8s.io/client-go/transport/transport.go @@ -0,0 +1,141 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "io/ioutil" + "net/http" +) + +// New returns an http.RoundTripper that will provide the authentication +// or transport level security defined by the provided Config. +func New(config *Config) (http.RoundTripper, error) { + // Set transport level security + if config.Transport != nil && (config.HasCA() || config.HasCertAuth() || config.TLS.Insecure) { + return nil, fmt.Errorf("using a custom transport with TLS certificate options or the insecure flag is not allowed") + } + + var ( + rt http.RoundTripper + err error + ) + + if config.Transport != nil { + rt = config.Transport + } else { + rt, err = tlsCache.get(config) + if err != nil { + return nil, err + } + } + + return HTTPWrappersForConfig(config, rt) +} + +// TLSConfigFor returns a tls.Config that will provide the transport level security defined +// by the provided Config. Will return nil if no transport level security is requested. +func TLSConfigFor(c *Config) (*tls.Config, error) { + if !(c.HasCA() || c.HasCertAuth() || c.TLS.Insecure) { + return nil, nil + } + if c.HasCA() && c.TLS.Insecure { + return nil, fmt.Errorf("specifying a root certificates file with the insecure flag is not allowed") + } + if err := loadTLSFiles(c); err != nil { + return nil, err + } + + tlsConfig := &tls.Config{ + // Can't use SSLv3 because of POODLE and BEAST + // Can't use TLSv1.0 because of POODLE and BEAST using CBC cipher + // Can't use TLSv1.1 because of RC4 cipher usage + MinVersion: tls.VersionTLS12, + InsecureSkipVerify: c.TLS.Insecure, + ServerName: c.TLS.ServerName, + } + + if c.HasCA() { + tlsConfig.RootCAs = rootCertPool(c.TLS.CAData) + } + + if c.HasCertAuth() { + cert, err := tls.X509KeyPair(c.TLS.CertData, c.TLS.KeyData) + if err != nil { + return nil, err + } + tlsConfig.Certificates = []tls.Certificate{cert} + } + + return tlsConfig, nil +} + +// loadTLSFiles copies the data from the CertFile, KeyFile, and CAFile fields into the CertData, +// KeyData, and CAFile fields, or returns an error. If no error is returned, all three fields are +// either populated or were empty to start. +func loadTLSFiles(c *Config) error { + var err error + c.TLS.CAData, err = dataFromSliceOrFile(c.TLS.CAData, c.TLS.CAFile) + if err != nil { + return err + } + + c.TLS.CertData, err = dataFromSliceOrFile(c.TLS.CertData, c.TLS.CertFile) + if err != nil { + return err + } + + c.TLS.KeyData, err = dataFromSliceOrFile(c.TLS.KeyData, c.TLS.KeyFile) + if err != nil { + return err + } + return nil +} + +// dataFromSliceOrFile returns data from the slice (if non-empty), or from the file, +// or an error if an error occurred reading the file +func dataFromSliceOrFile(data []byte, file string) ([]byte, error) { + if len(data) > 0 { + return data, nil + } + if len(file) > 0 { + fileData, err := ioutil.ReadFile(file) + if err != nil { + return []byte{}, err + } + return fileData, nil + } + return nil, nil +} + +// rootCertPool returns nil if caData is empty. When passed along, this will mean "use system CAs". +// When caData is not empty, it will be the ONLY information used in the CertPool. +func rootCertPool(caData []byte) *x509.CertPool { + // What we really want is a copy of x509.systemRootsPool, but that isn't exposed. It's difficult to build (see the go + // code for a look at the platform specific insanity), so we'll use the fact that RootCAs == nil gives us the system values + // It doesn't allow trusting either/or, but hopefully that won't be an issue + if len(caData) == 0 { + return nil + } + + // if we have caData, use it + certPool := x509.NewCertPool() + certPool.AppendCertsFromPEM(caData) + return certPool +} diff --git a/vendor/k8s.io/client-go/transport/transport_test.go b/vendor/k8s.io/client-go/transport/transport_test.go new file mode 100644 index 000000000..4d2d78f86 --- /dev/null +++ b/vendor/k8s.io/client-go/transport/transport_test.go @@ -0,0 +1,204 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "net/http" + "testing" +) + +const ( + rootCACert = `-----BEGIN CERTIFICATE----- +MIIC4DCCAcqgAwIBAgIBATALBgkqhkiG9w0BAQswIzEhMB8GA1UEAwwYMTAuMTMu +MTI5LjEwNkAxNDIxMzU5MDU4MB4XDTE1MDExNTIxNTczN1oXDTE2MDExNTIxNTcz +OFowIzEhMB8GA1UEAwwYMTAuMTMuMTI5LjEwNkAxNDIxMzU5MDU4MIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAunDRXGwsiYWGFDlWH6kjGun+PshDGeZX +xtx9lUnL8pIRWH3wX6f13PO9sktaOWW0T0mlo6k2bMlSLlSZgG9H6og0W6gLS3vq +s4VavZ6DbXIwemZG2vbRwsvR+t4G6Nbwelm6F8RFnA1Fwt428pavmNQ/wgYzo+T1 +1eS+HiN4ACnSoDSx3QRWcgBkB1g6VReofVjx63i0J+w8Q/41L9GUuLqquFxu6ZnH +60vTB55lHgFiDLjA1FkEz2dGvGh/wtnFlRvjaPC54JH2K1mPYAUXTreoeJtLJKX0 +ycoiyB24+zGCniUmgIsmQWRPaOPircexCp1BOeze82BT1LCZNTVaxQIDAQABoyMw +ITAOBgNVHQ8BAf8EBAMCAKQwDwYDVR0TAQH/BAUwAwEB/zALBgkqhkiG9w0BAQsD +ggEBADMxsUuAFlsYDpF4fRCzXXwrhbtj4oQwcHpbu+rnOPHCZupiafzZpDu+rw4x +YGPnCb594bRTQn4pAu3Ac18NbLD5pV3uioAkv8oPkgr8aUhXqiv7KdDiaWm6sbAL +EHiXVBBAFvQws10HMqMoKtO8f1XDNAUkWduakR/U6yMgvOPwS7xl0eUTqyRB6zGb +K55q2dejiFWaFqB/y78txzvz6UlOZKE44g2JAVoJVM6kGaxh33q8/FmrL4kuN3ut +W+MmJCVDvd4eEqPwbp7146ZWTqpIJ8lvA6wuChtqV8lhAPka2hD/LMqY8iXNmfXD +uml0obOEy+ON91k+SWTJ3ggmF/U= +-----END CERTIFICATE-----` + + certData = `-----BEGIN CERTIFICATE----- +MIIC6jCCAdSgAwIBAgIBCzALBgkqhkiG9w0BAQswIzEhMB8GA1UEAwwYMTAuMTMu +MTI5LjEwNkAxNDIxMzU5MDU4MB4XDTE1MDExNTIyMDEzMVoXDTE2MDExNTIyMDEz +MlowGzEZMBcGA1UEAxMQb3BlbnNoaWZ0LWNsaWVudDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAKtdhz0+uCLXw5cSYns9rU/XifFSpb/x24WDdrm72S/v +b9BPYsAStiP148buylr1SOuNi8sTAZmlVDDIpIVwMLff+o2rKYDicn9fjbrTxTOj +lI4pHJBH+JU3AJ0tbajupioh70jwFS0oYpwtneg2zcnE2Z4l6mhrj2okrc5Q1/X2 +I2HChtIU4JYTisObtin10QKJX01CLfYXJLa8upWzKZ4/GOcHG+eAV3jXWoXidtjb +1Usw70amoTZ6mIVCkiu1QwCoa8+ycojGfZhvqMsAp1536ZcCul+Na+AbCv4zKS7F +kQQaImVrXdUiFansIoofGlw/JNuoKK6ssVpS5Ic3pgcCAwEAAaM1MDMwDgYDVR0P +AQH/BAQDAgCgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwCwYJ +KoZIhvcNAQELA4IBAQCKLREH7bXtXtZ+8vI6cjD7W3QikiArGqbl36bAhhWsJLp/ +p/ndKz39iFNaiZ3GlwIURWOOKx3y3GA0x9m8FR+Llthf0EQ8sUjnwaknWs0Y6DQ3 +jjPFZOpV3KPCFrdMJ3++E3MgwFC/Ih/N2ebFX9EcV9Vcc6oVWMdwT0fsrhu683rq +6GSR/3iVX1G/pmOiuaR0fNUaCyCfYrnI4zHBDgSfnlm3vIvN2lrsR/DQBakNL8DJ +HBgKxMGeUPoneBv+c8DMXIL0EhaFXRlBv9QW45/GiAIOuyFJ0i6hCtGZpJjq4OpQ +BRjCI+izPzFTjsxD4aORE+WOkyWFCGPWKfNejfw0 +-----END CERTIFICATE-----` + + keyData = `-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAq12HPT64ItfDlxJiez2tT9eJ8VKlv/HbhYN2ubvZL+9v0E9i +wBK2I/Xjxu7KWvVI642LyxMBmaVUMMikhXAwt9/6jaspgOJyf1+NutPFM6OUjikc +kEf4lTcAnS1tqO6mKiHvSPAVLShinC2d6DbNycTZniXqaGuPaiStzlDX9fYjYcKG +0hTglhOKw5u2KfXRAolfTUIt9hcktry6lbMpnj8Y5wcb54BXeNdaheJ22NvVSzDv +RqahNnqYhUKSK7VDAKhrz7JyiMZ9mG+oywCnXnfplwK6X41r4BsK/jMpLsWRBBoi +ZWtd1SIVqewiih8aXD8k26gorqyxWlLkhzemBwIDAQABAoIBAD2XYRs3JrGHQUpU +FkdbVKZkvrSY0vAZOqBTLuH0zUv4UATb8487anGkWBjRDLQCgxH+jucPTrztekQK +aW94clo0S3aNtV4YhbSYIHWs1a0It0UdK6ID7CmdWkAj6s0T8W8lQT7C46mWYVLm +5mFnCTHi6aB42jZrqmEpC7sivWwuU0xqj3Ml8kkxQCGmyc9JjmCB4OrFFC8NNt6M +ObvQkUI6Z3nO4phTbpxkE1/9dT0MmPIF7GhHVzJMS+EyyRYUDllZ0wvVSOM3qZT0 +JMUaBerkNwm9foKJ1+dv2nMKZZbJajv7suUDCfU44mVeaEO+4kmTKSGCGjjTBGkr +7L1ySDECgYEA5ElIMhpdBzIivCuBIH8LlUeuzd93pqssO1G2Xg0jHtfM4tz7fyeI +cr90dc8gpli24dkSxzLeg3Tn3wIj/Bu64m2TpZPZEIlukYvgdgArmRIPQVxerYey +OkrfTNkxU1HXsYjLCdGcGXs5lmb+K/kuTcFxaMOs7jZi7La+jEONwf8CgYEAwCs/ +rUOOA0klDsWWisbivOiNPII79c9McZCNBqncCBfMUoiGe8uWDEO4TFHN60vFuVk9 +8PkwpCfvaBUX+ajvbafIfHxsnfk1M04WLGCeqQ/ym5Q4sQoQOcC1b1y9qc/xEWfg +nIUuia0ukYRpl7qQa3tNg+BNFyjypW8zukUAC/kCgYB1/Kojuxx5q5/oQVPrx73k +2bevD+B3c+DYh9MJqSCNwFtUpYIWpggPxoQan4LwdsmO0PKzocb/ilyNFj4i/vII +NToqSc/WjDFpaDIKyuu9oWfhECye45NqLWhb/6VOuu4QA/Nsj7luMhIBehnEAHW+ +GkzTKM8oD1PxpEG3nPKXYQKBgQC6AuMPRt3XBl1NkCrpSBy/uObFlFaP2Enpf39S +3OZ0Gv0XQrnSaL1kP8TMcz68rMrGX8DaWYsgytstR4W+jyy7WvZwsUu+GjTJ5aMG +77uEcEBpIi9CBzivfn7hPccE8ZgqPf+n4i6q66yxBJflW5xhvafJqDtW2LcPNbW/ +bvzdmQKBgExALRUXpq+5dbmkdXBHtvXdRDZ6rVmrnjy4nI5bPw+1GqQqk6uAR6B/ +F6NmLCQOO4PDG/cuatNHIr2FrwTmGdEL6ObLUGWn9Oer9gJhHVqqsY5I4sEPo4XX +stR0Yiw0buV6DL/moUO0HIM9Bjh96HJp+LxiIS6UCdIhMPp5HoQa +-----END RSA PRIVATE KEY-----` +) + +func TestNew(t *testing.T) { + testCases := map[string]struct { + Config *Config + Err bool + TLS bool + Default bool + }{ + "default transport": { + Default: true, + Config: &Config{}, + }, + + "ca transport": { + TLS: true, + Config: &Config{ + TLS: TLSConfig{ + CAData: []byte(rootCACert), + }, + }, + }, + "bad ca file transport": { + Err: true, + Config: &Config{ + TLS: TLSConfig{ + CAFile: "invalid file", + }, + }, + }, + "ca data overriding bad ca file transport": { + TLS: true, + Config: &Config{ + TLS: TLSConfig{ + CAData: []byte(rootCACert), + CAFile: "invalid file", + }, + }, + }, + + "cert transport": { + TLS: true, + Config: &Config{ + TLS: TLSConfig{ + CAData: []byte(rootCACert), + CertData: []byte(certData), + KeyData: []byte(keyData), + }, + }, + }, + "bad cert data transport": { + Err: true, + Config: &Config{ + TLS: TLSConfig{ + CAData: []byte(rootCACert), + CertData: []byte(certData), + KeyData: []byte("bad key data"), + }, + }, + }, + "bad file cert transport": { + Err: true, + Config: &Config{ + TLS: TLSConfig{ + CAData: []byte(rootCACert), + CertData: []byte(certData), + KeyFile: "invalid file", + }, + }, + }, + "key data overriding bad file cert transport": { + TLS: true, + Config: &Config{ + TLS: TLSConfig{ + CAData: []byte(rootCACert), + CertData: []byte(certData), + KeyData: []byte(keyData), + KeyFile: "invalid file", + }, + }, + }, + } + for k, testCase := range testCases { + transport, err := New(testCase.Config) + switch { + case testCase.Err && err == nil: + t.Errorf("%s: unexpected non-error", k) + continue + case !testCase.Err && err != nil: + t.Errorf("%s: unexpected error: %v", k, err) + continue + } + + switch { + case testCase.Default && transport != http.DefaultTransport: + t.Errorf("%s: expected the default transport, got %#v", k, transport) + continue + case !testCase.Default && transport == http.DefaultTransport: + t.Errorf("%s: expected non-default transport, got %#v", k, transport) + continue + } + + // We only know how to check TLSConfig on http.Transports + if transport, ok := transport.(*http.Transport); ok { + switch { + case testCase.TLS && transport.TLSClientConfig == nil: + t.Errorf("%s: expected TLSClientConfig, got %#v", k, transport) + continue + case !testCase.TLS && transport.TLSClientConfig != nil: + t.Errorf("%s: expected no TLSClientConfig, got %#v", k, transport) + continue + } + } + } +} diff --git a/vendor/k8s.io/client-go/util/cert/BUILD b/vendor/k8s.io/client-go/util/cert/BUILD new file mode 100644 index 000000000..2ae5eed7d --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/BUILD @@ -0,0 +1,30 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["csr_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "cert.go", + "csr.go", + "io.go", + "pem.go", + ], + data = [ + "testdata/dontUseThisKey.pem", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/util/cert/cert.go b/vendor/k8s.io/client-go/util/cert/cert.go new file mode 100644 index 000000000..6854d4152 --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/cert.go @@ -0,0 +1,215 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "bytes" + "crypto/ecdsa" + "crypto/elliptic" + cryptorand "crypto/rand" + "crypto/rsa" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "errors" + "fmt" + "math" + "math/big" + "net" + "time" +) + +const ( + rsaKeySize = 2048 + duration365d = time.Hour * 24 * 365 +) + +// Config containes the basic fields required for creating a certificate +type Config struct { + CommonName string + Organization []string + AltNames AltNames + Usages []x509.ExtKeyUsage +} + +// AltNames contains the domain names and IP addresses that will be added +// to the API Server's x509 certificate SubAltNames field. The values will +// be passed directly to the x509.Certificate object. +type AltNames struct { + DNSNames []string + IPs []net.IP +} + +// NewPrivateKey creates an RSA private key +func NewPrivateKey() (*rsa.PrivateKey, error) { + return rsa.GenerateKey(cryptorand.Reader, rsaKeySize) +} + +// NewSelfSignedCACert creates a CA certificate +func NewSelfSignedCACert(cfg Config, key *rsa.PrivateKey) (*x509.Certificate, error) { + now := time.Now() + tmpl := x509.Certificate{ + SerialNumber: new(big.Int).SetInt64(0), + Subject: pkix.Name{ + CommonName: cfg.CommonName, + Organization: cfg.Organization, + }, + NotBefore: now.UTC(), + NotAfter: now.Add(duration365d * 10).UTC(), + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + BasicConstraintsValid: true, + IsCA: true, + } + + certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &tmpl, &tmpl, key.Public(), key) + if err != nil { + return nil, err + } + return x509.ParseCertificate(certDERBytes) +} + +// NewSignedCert creates a signed certificate using the given CA certificate and key +func NewSignedCert(cfg Config, key *rsa.PrivateKey, caCert *x509.Certificate, caKey *rsa.PrivateKey) (*x509.Certificate, error) { + serial, err := cryptorand.Int(cryptorand.Reader, new(big.Int).SetInt64(math.MaxInt64)) + if err != nil { + return nil, err + } + if len(cfg.CommonName) == 0 { + return nil, errors.New("must specify a CommonName") + } + if len(cfg.Usages) == 0 { + return nil, errors.New("must specify at least one ExtKeyUsage") + } + + certTmpl := x509.Certificate{ + Subject: pkix.Name{ + CommonName: cfg.CommonName, + Organization: cfg.Organization, + }, + DNSNames: cfg.AltNames.DNSNames, + IPAddresses: cfg.AltNames.IPs, + SerialNumber: serial, + NotBefore: caCert.NotBefore, + NotAfter: time.Now().Add(duration365d).UTC(), + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, + ExtKeyUsage: cfg.Usages, + } + certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &certTmpl, caCert, key.Public(), caKey) + if err != nil { + return nil, err + } + return x509.ParseCertificate(certDERBytes) +} + +// MakeEllipticPrivateKeyPEM creates an ECDSA private key +func MakeEllipticPrivateKeyPEM() ([]byte, error) { + privateKey, err := ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader) + if err != nil { + return nil, err + } + + derBytes, err := x509.MarshalECPrivateKey(privateKey) + if err != nil { + return nil, err + } + + privateKeyPemBlock := &pem.Block{ + Type: ECPrivateKeyBlockType, + Bytes: derBytes, + } + return pem.EncodeToMemory(privateKeyPemBlock), nil +} + +// GenerateSelfSignedCertKey creates a self-signed certificate and key for the given host. +// Host may be an IP or a DNS name +// You may also specify additional subject alt names (either ip or dns names) for the certificate +func GenerateSelfSignedCertKey(host string, alternateIPs []net.IP, alternateDNS []string) ([]byte, []byte, error) { + priv, err := rsa.GenerateKey(cryptorand.Reader, 2048) + if err != nil { + return nil, nil, err + } + + template := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()), + }, + NotBefore: time.Now(), + NotAfter: time.Now().Add(time.Hour * 24 * 365), + + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + BasicConstraintsValid: true, + IsCA: true, + } + + if ip := net.ParseIP(host); ip != nil { + template.IPAddresses = append(template.IPAddresses, ip) + } else { + template.DNSNames = append(template.DNSNames, host) + } + + template.IPAddresses = append(template.IPAddresses, alternateIPs...) + template.DNSNames = append(template.DNSNames, alternateDNS...) + + derBytes, err := x509.CreateCertificate(cryptorand.Reader, &template, &template, &priv.PublicKey, priv) + if err != nil { + return nil, nil, err + } + + // Generate cert + certBuffer := bytes.Buffer{} + if err := pem.Encode(&certBuffer, &pem.Block{Type: CertificateBlockType, Bytes: derBytes}); err != nil { + return nil, nil, err + } + + // Generate key + keyBuffer := bytes.Buffer{} + if err := pem.Encode(&keyBuffer, &pem.Block{Type: RSAPrivateKeyBlockType, Bytes: x509.MarshalPKCS1PrivateKey(priv)}); err != nil { + return nil, nil, err + } + + return certBuffer.Bytes(), keyBuffer.Bytes(), nil +} + +// FormatBytesCert receives byte array certificate and formats in human-readable format +func FormatBytesCert(cert []byte) (string, error) { + block, _ := pem.Decode(cert) + c, err := x509.ParseCertificate(block.Bytes) + if err != nil { + return "", fmt.Errorf("failed to parse certificate [%v]", err) + } + return FormatCert(c), nil +} + +// FormatCert receives certificate and formats in human-readable format +func FormatCert(c *x509.Certificate) string { + var ips []string + for _, ip := range c.IPAddresses { + ips = append(ips, ip.String()) + } + altNames := append(ips, c.DNSNames...) + res := fmt.Sprintf( + "Issuer: CN=%s | Subject: CN=%s | CA: %t\n", + c.Issuer.CommonName, c.Subject.CommonName, c.IsCA, + ) + res += fmt.Sprintf("Not before: %s Not After: %s", c.NotBefore, c.NotAfter) + if len(altNames) > 0 { + res += fmt.Sprintf("\nAlternate Names: %v", altNames) + } + return res +} diff --git a/vendor/k8s.io/client-go/util/cert/csr.go b/vendor/k8s.io/client-go/util/cert/csr.go new file mode 100644 index 000000000..39a6751f7 --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/csr.go @@ -0,0 +1,75 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + cryptorand "crypto/rand" + "crypto/rsa" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "net" +) + +// MakeCSR generates a PEM-encoded CSR using the supplied private key, subject, and SANs. +// All key types that are implemented via crypto.Signer are supported (This includes *rsa.PrivateKey and *ecdsa.PrivateKey.) +func MakeCSR(privateKey interface{}, subject *pkix.Name, dnsSANs []string, ipSANs []net.IP) (csr []byte, err error) { + template := &x509.CertificateRequest{ + Subject: *subject, + DNSNames: dnsSANs, + IPAddresses: ipSANs, + } + + return MakeCSRFromTemplate(privateKey, template) +} + +// MakeCSRFromTemplate generates a PEM-encoded CSR using the supplied private +// key and certificate request as a template. All key types that are +// implemented via crypto.Signer are supported (This includes *rsa.PrivateKey +// and *ecdsa.PrivateKey.) +func MakeCSRFromTemplate(privateKey interface{}, template *x509.CertificateRequest) ([]byte, error) { + t := *template + t.SignatureAlgorithm = sigType(privateKey) + + csrDER, err := x509.CreateCertificateRequest(cryptorand.Reader, &t, privateKey) + if err != nil { + return nil, err + } + + csrPemBlock := &pem.Block{ + Type: CertificateRequestBlockType, + Bytes: csrDER, + } + + return pem.EncodeToMemory(csrPemBlock), nil +} + +func sigType(privateKey interface{}) x509.SignatureAlgorithm { + // Customize the signature for RSA keys, depending on the key size + if privateKey, ok := privateKey.(*rsa.PrivateKey); ok { + keySize := privateKey.N.BitLen() + switch { + case keySize >= 4096: + return x509.SHA512WithRSA + case keySize >= 3072: + return x509.SHA384WithRSA + default: + return x509.SHA256WithRSA + } + } + return x509.UnknownSignatureAlgorithm +} diff --git a/vendor/k8s.io/client-go/util/cert/csr_test.go b/vendor/k8s.io/client-go/util/cert/csr_test.go new file mode 100644 index 000000000..ed28f021e --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/csr_test.go @@ -0,0 +1,75 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "io/ioutil" + "net" + "testing" +) + +func TestMakeCSR(t *testing.T) { + keyFile := "testdata/dontUseThisKey.pem" + subject := &pkix.Name{ + CommonName: "kube-worker", + } + dnsSANs := []string{"localhost"} + ipSANs := []net.IP{net.ParseIP("127.0.0.1")} + + keyData, err := ioutil.ReadFile(keyFile) + if err != nil { + t.Fatal(err) + } + key, err := ParsePrivateKeyPEM(keyData) + if err != nil { + t.Fatal(err) + } + csrPEM, err := MakeCSR(key, subject, dnsSANs, ipSANs) + if err != nil { + t.Error(err) + } + csrBlock, rest := pem.Decode(csrPEM) + if csrBlock == nil { + t.Error("Unable to decode MakeCSR result.") + } + if len(rest) != 0 { + t.Error("Found more than one PEM encoded block in the result.") + } + if csrBlock.Type != CertificateRequestBlockType { + t.Errorf("Found block type %q, wanted 'CERTIFICATE REQUEST'", csrBlock.Type) + } + csr, err := x509.ParseCertificateRequest(csrBlock.Bytes) + if err != nil { + t.Errorf("Found %v parsing MakeCSR result as a CertificateRequest.", err) + } + if csr.Subject.CommonName != subject.CommonName { + t.Errorf("Wanted %v, got %v", subject, csr.Subject) + } + if len(csr.DNSNames) != 1 { + t.Errorf("Wanted 1 DNS name in the result, got %d", len(csr.DNSNames)) + } else if csr.DNSNames[0] != dnsSANs[0] { + t.Errorf("Wanted %v, got %v", dnsSANs[0], csr.DNSNames[0]) + } + if len(csr.IPAddresses) != 1 { + t.Errorf("Wanted 1 IP address in the result, got %d", len(csr.IPAddresses)) + } else if csr.IPAddresses[0].String() != ipSANs[0].String() { + t.Errorf("Wanted %v, got %v", ipSANs[0], csr.IPAddresses[0]) + } +} diff --git a/vendor/k8s.io/client-go/util/cert/io.go b/vendor/k8s.io/client-go/util/cert/io.go new file mode 100644 index 000000000..b6b690383 --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/io.go @@ -0,0 +1,150 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "crypto/x509" + "fmt" + "io/ioutil" + "os" + "path/filepath" +) + +// CanReadCertAndKey returns true if the certificate and key files already exists, +// otherwise returns false. If lost one of cert and key, returns error. +func CanReadCertAndKey(certPath, keyPath string) (bool, error) { + certReadable := canReadFile(certPath) + keyReadable := canReadFile(keyPath) + + if certReadable == false && keyReadable == false { + return false, nil + } + + if certReadable == false { + return false, fmt.Errorf("error reading %s, certificate and key must be supplied as a pair", certPath) + } + + if keyReadable == false { + return false, fmt.Errorf("error reading %s, certificate and key must be supplied as a pair", keyPath) + } + + return true, nil +} + +// If the file represented by path exists and +// readable, returns true otherwise returns false. +func canReadFile(path string) bool { + f, err := os.Open(path) + if err != nil { + return false + } + + defer f.Close() + + return true +} + +// WriteCert writes the pem-encoded certificate data to certPath. +// The certificate file will be created with file mode 0644. +// If the certificate file already exists, it will be overwritten. +// The parent directory of the certPath will be created as needed with file mode 0755. +func WriteCert(certPath string, data []byte) error { + if err := os.MkdirAll(filepath.Dir(certPath), os.FileMode(0755)); err != nil { + return err + } + if err := ioutil.WriteFile(certPath, data, os.FileMode(0644)); err != nil { + return err + } + return nil +} + +// WriteKey writes the pem-encoded key data to keyPath. +// The key file will be created with file mode 0600. +// If the key file already exists, it will be overwritten. +// The parent directory of the keyPath will be created as needed with file mode 0755. +func WriteKey(keyPath string, data []byte) error { + if err := os.MkdirAll(filepath.Dir(keyPath), os.FileMode(0755)); err != nil { + return err + } + if err := ioutil.WriteFile(keyPath, data, os.FileMode(0600)); err != nil { + return err + } + return nil +} + +// LoadOrGenerateKeyFile looks for a key in the file at the given path. If it +// can't find one, it will generate a new key and store it there. +func LoadOrGenerateKeyFile(keyPath string) (data []byte, wasGenerated bool, err error) { + loadedData, err := ioutil.ReadFile(keyPath) + if err == nil { + return loadedData, false, err + } + if !os.IsNotExist(err) { + return nil, false, fmt.Errorf("error loading key from %s: %v", keyPath, err) + } + + generatedData, err := MakeEllipticPrivateKeyPEM() + if err != nil { + return nil, false, fmt.Errorf("error generating key: %v", err) + } + if err := WriteKey(keyPath, generatedData); err != nil { + return nil, false, fmt.Errorf("error writing key to %s: %v", keyPath, err) + } + return generatedData, true, nil +} + +// NewPool returns an x509.CertPool containing the certificates in the given PEM-encoded file. +// Returns an error if the file could not be read, a certificate could not be parsed, or if the file does not contain any certificates +func NewPool(filename string) (*x509.CertPool, error) { + certs, err := CertsFromFile(filename) + if err != nil { + return nil, err + } + pool := x509.NewCertPool() + for _, cert := range certs { + pool.AddCert(cert) + } + return pool, nil +} + +// CertsFromFile returns the x509.Certificates contained in the given PEM-encoded file. +// Returns an error if the file could not be read, a certificate could not be parsed, or if the file does not contain any certificates +func CertsFromFile(file string) ([]*x509.Certificate, error) { + pemBlock, err := ioutil.ReadFile(file) + if err != nil { + return nil, err + } + certs, err := ParseCertsPEM(pemBlock) + if err != nil { + return nil, fmt.Errorf("error reading %s: %s", file, err) + } + return certs, nil +} + +// PrivateKeyFromFile returns the private key in rsa.PrivateKey or ecdsa.PrivateKey format from a given PEM-encoded file. +// Returns an error if the file could not be read or if the private key could not be parsed. +func PrivateKeyFromFile(file string) (interface{}, error) { + pemBlock, err := ioutil.ReadFile(file) + if err != nil { + return nil, err + } + key, err := ParsePrivateKeyPEM(pemBlock) + if err != nil { + return nil, fmt.Errorf("error reading %s: %v", file, err) + } + return key, nil +} diff --git a/vendor/k8s.io/client-go/util/cert/pem.go b/vendor/k8s.io/client-go/util/cert/pem.go new file mode 100644 index 000000000..899845857 --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/pem.go @@ -0,0 +1,138 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" + "fmt" +) + +const ( + // ECPrivateKeyBlockType is a possible value for pem.Block.Type. + ECPrivateKeyBlockType = "EC PRIVATE KEY" + // RSAPrivateKeyBlockType is a possible value for pem.Block.Type. + RSAPrivateKeyBlockType = "RSA PRIVATE KEY" + // CertificateBlockType is a possible value for pem.Block.Type. + CertificateBlockType = "CERTIFICATE" + // CertificateRequestBlockType is a possible value for pem.Block.Type. + CertificateRequestBlockType = "CERTIFICATE REQUEST" + // PrivateKeyBlockType is a possible value for pem.Block.Type. + PrivateKeyBlockType = "PRIVATE KEY" + // PublicKeyBlockType is a possible value for pem.Block.Type. + PublicKeyBlockType = "PUBLIC KEY" +) + +// EncodePublicKeyPEM returns PEM-endcode public data +func EncodePublicKeyPEM(key *rsa.PublicKey) ([]byte, error) { + der, err := x509.MarshalPKIXPublicKey(key) + if err != nil { + return []byte{}, err + } + block := pem.Block{ + Type: PublicKeyBlockType, + Bytes: der, + } + return pem.EncodeToMemory(&block), nil +} + +// EncodePrivateKeyPEM returns PEM-encoded private key data +func EncodePrivateKeyPEM(key *rsa.PrivateKey) []byte { + block := pem.Block{ + Type: RSAPrivateKeyBlockType, + Bytes: x509.MarshalPKCS1PrivateKey(key), + } + return pem.EncodeToMemory(&block) +} + +// EncodeCertPEM returns PEM-endcoded certificate data +func EncodeCertPEM(cert *x509.Certificate) []byte { + block := pem.Block{ + Type: CertificateBlockType, + Bytes: cert.Raw, + } + return pem.EncodeToMemory(&block) +} + +// ParsePrivateKeyPEM returns a private key parsed from a PEM block in the supplied data. +// Recognizes PEM blocks for "EC PRIVATE KEY", "RSA PRIVATE KEY", or "PRIVATE KEY" +func ParsePrivateKeyPEM(keyData []byte) (interface{}, error) { + var privateKeyPemBlock *pem.Block + for { + privateKeyPemBlock, keyData = pem.Decode(keyData) + if privateKeyPemBlock == nil { + break + } + + switch privateKeyPemBlock.Type { + case ECPrivateKeyBlockType: + // ECDSA Private Key in ASN.1 format + if key, err := x509.ParseECPrivateKey(privateKeyPemBlock.Bytes); err == nil { + return key, nil + } + case RSAPrivateKeyBlockType: + // RSA Private Key in PKCS#1 format + if key, err := x509.ParsePKCS1PrivateKey(privateKeyPemBlock.Bytes); err == nil { + return key, nil + } + case PrivateKeyBlockType: + // RSA or ECDSA Private Key in unencrypted PKCS#8 format + if key, err := x509.ParsePKCS8PrivateKey(privateKeyPemBlock.Bytes); err == nil { + return key, nil + } + } + + // tolerate non-key PEM blocks for compatibility with things like "EC PARAMETERS" blocks + // originally, only the first PEM block was parsed and expected to be a key block + } + + // we read all the PEM blocks and didn't recognize one + return nil, fmt.Errorf("data does not contain a valid RSA or ECDSA private key") +} + +// ParseCertsPEM returns the x509.Certificates contained in the given PEM-encoded byte array +// Returns an error if a certificate could not be parsed, or if the data does not contain any certificates +func ParseCertsPEM(pemCerts []byte) ([]*x509.Certificate, error) { + ok := false + certs := []*x509.Certificate{} + for len(pemCerts) > 0 { + var block *pem.Block + block, pemCerts = pem.Decode(pemCerts) + if block == nil { + break + } + // Only use PEM "CERTIFICATE" blocks without extra headers + if block.Type != CertificateBlockType || len(block.Headers) != 0 { + continue + } + + cert, err := x509.ParseCertificate(block.Bytes) + if err != nil { + return certs, err + } + + certs = append(certs, cert) + ok = true + } + + if !ok { + return certs, errors.New("could not read any certificates") + } + return certs, nil +} diff --git a/vendor/k8s.io/client-go/util/cert/triple/BUILD b/vendor/k8s.io/client-go/util/cert/triple/BUILD new file mode 100644 index 000000000..bba3f38a7 --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/triple/BUILD @@ -0,0 +1,15 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["triple.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/client-go/util/cert:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/util/cert/triple/triple.go b/vendor/k8s.io/client-go/util/cert/triple/triple.go new file mode 100644 index 000000000..b89ef7240 --- /dev/null +++ b/vendor/k8s.io/client-go/util/cert/triple/triple.go @@ -0,0 +1,116 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package triple generates key-certificate pairs for the +// triple (CA, Server, Client). +package triple + +import ( + "crypto/rsa" + "crypto/x509" + "fmt" + "net" + + certutil "k8s.io/client-go/util/cert" +) + +type KeyPair struct { + Key *rsa.PrivateKey + Cert *x509.Certificate +} + +func NewCA(name string) (*KeyPair, error) { + key, err := certutil.NewPrivateKey() + if err != nil { + return nil, fmt.Errorf("unable to create a private key for a new CA: %v", err) + } + + config := certutil.Config{ + CommonName: name, + } + + cert, err := certutil.NewSelfSignedCACert(config, key) + if err != nil { + return nil, fmt.Errorf("unable to create a self-signed certificate for a new CA: %v", err) + } + + return &KeyPair{ + Key: key, + Cert: cert, + }, nil +} + +func NewServerKeyPair(ca *KeyPair, commonName, svcName, svcNamespace, dnsDomain string, ips, hostnames []string) (*KeyPair, error) { + key, err := certutil.NewPrivateKey() + if err != nil { + return nil, fmt.Errorf("unable to create a server private key: %v", err) + } + + namespacedName := fmt.Sprintf("%s.%s", svcName, svcNamespace) + internalAPIServerFQDN := []string{ + svcName, + namespacedName, + fmt.Sprintf("%s.svc", namespacedName), + fmt.Sprintf("%s.svc.%s", namespacedName, dnsDomain), + } + + altNames := certutil.AltNames{} + for _, ipStr := range ips { + ip := net.ParseIP(ipStr) + if ip != nil { + altNames.IPs = append(altNames.IPs, ip) + } + } + altNames.DNSNames = append(altNames.DNSNames, hostnames...) + altNames.DNSNames = append(altNames.DNSNames, internalAPIServerFQDN...) + + config := certutil.Config{ + CommonName: commonName, + AltNames: altNames, + Usages: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + } + cert, err := certutil.NewSignedCert(config, key, ca.Cert, ca.Key) + if err != nil { + return nil, fmt.Errorf("unable to sign the server certificate: %v", err) + } + + return &KeyPair{ + Key: key, + Cert: cert, + }, nil +} + +func NewClientKeyPair(ca *KeyPair, commonName string, organizations []string) (*KeyPair, error) { + key, err := certutil.NewPrivateKey() + if err != nil { + return nil, fmt.Errorf("unable to create a client private key: %v", err) + } + + config := certutil.Config{ + CommonName: commonName, + Organization: organizations, + Usages: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth}, + } + cert, err := certutil.NewSignedCert(config, key, ca.Cert, ca.Key) + if err != nil { + return nil, fmt.Errorf("unable to sign the client certificate: %v", err) + } + + return &KeyPair{ + Key: key, + Cert: cert, + }, nil +} diff --git a/vendor/k8s.io/client-go/util/exec/BUILD b/vendor/k8s.io/client-go/util/exec/BUILD new file mode 100644 index 000000000..4976f6075 --- /dev/null +++ b/vendor/k8s.io/client-go/util/exec/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["exec.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/util/exec/exec.go b/vendor/k8s.io/client-go/util/exec/exec.go new file mode 100644 index 000000000..d170badb6 --- /dev/null +++ b/vendor/k8s.io/client-go/util/exec/exec.go @@ -0,0 +1,52 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package exec + +// ExitError is an interface that presents an API similar to os.ProcessState, which is +// what ExitError from os/exec is. This is designed to make testing a bit easier and +// probably loses some of the cross-platform properties of the underlying library. +type ExitError interface { + String() string + Error() string + Exited() bool + ExitStatus() int +} + +// CodeExitError is an implementation of ExitError consisting of an error object +// and an exit code (the upper bits of os.exec.ExitStatus). +type CodeExitError struct { + Err error + Code int +} + +var _ ExitError = CodeExitError{} + +func (e CodeExitError) Error() string { + return e.Err.Error() +} + +func (e CodeExitError) String() string { + return e.Err.Error() +} + +func (e CodeExitError) Exited() bool { + return true +} + +func (e CodeExitError) ExitStatus() int { + return e.Code +} diff --git a/vendor/k8s.io/client-go/util/flowcontrol/BUILD b/vendor/k8s.io/client-go/util/flowcontrol/BUILD new file mode 100644 index 000000000..8b8a38519 --- /dev/null +++ b/vendor/k8s.io/client-go/util/flowcontrol/BUILD @@ -0,0 +1,34 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "backoff_test.go", + "throttle_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = ["//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library"], +) + +go_library( + name = "go_default_library", + srcs = [ + "backoff.go", + "throttle.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/juju/ratelimit:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/client-go/util/integer:go_default_library", + ], +) diff --git a/vendor/k8s.io/client-go/util/flowcontrol/backoff.go b/vendor/k8s.io/client-go/util/flowcontrol/backoff.go new file mode 100644 index 000000000..71d442a62 --- /dev/null +++ b/vendor/k8s.io/client-go/util/flowcontrol/backoff.go @@ -0,0 +1,149 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flowcontrol + +import ( + "sync" + "time" + + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/client-go/util/integer" +) + +type backoffEntry struct { + backoff time.Duration + lastUpdate time.Time +} + +type Backoff struct { + sync.Mutex + Clock clock.Clock + defaultDuration time.Duration + maxDuration time.Duration + perItemBackoff map[string]*backoffEntry +} + +func NewFakeBackOff(initial, max time.Duration, tc *clock.FakeClock) *Backoff { + return &Backoff{ + perItemBackoff: map[string]*backoffEntry{}, + Clock: tc, + defaultDuration: initial, + maxDuration: max, + } +} + +func NewBackOff(initial, max time.Duration) *Backoff { + return &Backoff{ + perItemBackoff: map[string]*backoffEntry{}, + Clock: clock.RealClock{}, + defaultDuration: initial, + maxDuration: max, + } +} + +// Get the current backoff Duration +func (p *Backoff) Get(id string) time.Duration { + p.Lock() + defer p.Unlock() + var delay time.Duration + entry, ok := p.perItemBackoff[id] + if ok { + delay = entry.backoff + } + return delay +} + +// move backoff to the next mark, capping at maxDuration +func (p *Backoff) Next(id string, eventTime time.Time) { + p.Lock() + defer p.Unlock() + entry, ok := p.perItemBackoff[id] + if !ok || hasExpired(eventTime, entry.lastUpdate, p.maxDuration) { + entry = p.initEntryUnsafe(id) + } else { + delay := entry.backoff * 2 // exponential + entry.backoff = time.Duration(integer.Int64Min(int64(delay), int64(p.maxDuration))) + } + entry.lastUpdate = p.Clock.Now() +} + +// Reset forces clearing of all backoff data for a given key. +func (p *Backoff) Reset(id string) { + p.Lock() + defer p.Unlock() + delete(p.perItemBackoff, id) +} + +// Returns True if the elapsed time since eventTime is smaller than the current backoff window +func (p *Backoff) IsInBackOffSince(id string, eventTime time.Time) bool { + p.Lock() + defer p.Unlock() + entry, ok := p.perItemBackoff[id] + if !ok { + return false + } + if hasExpired(eventTime, entry.lastUpdate, p.maxDuration) { + return false + } + return p.Clock.Now().Sub(eventTime) < entry.backoff +} + +// Returns True if time since lastupdate is less than the current backoff window. +func (p *Backoff) IsInBackOffSinceUpdate(id string, eventTime time.Time) bool { + p.Lock() + defer p.Unlock() + entry, ok := p.perItemBackoff[id] + if !ok { + return false + } + if hasExpired(eventTime, entry.lastUpdate, p.maxDuration) { + return false + } + return eventTime.Sub(entry.lastUpdate) < entry.backoff +} + +// Garbage collect records that have aged past maxDuration. Backoff users are expected +// to invoke this periodically. +func (p *Backoff) GC() { + p.Lock() + defer p.Unlock() + now := p.Clock.Now() + for id, entry := range p.perItemBackoff { + if now.Sub(entry.lastUpdate) > p.maxDuration*2 { + // GC when entry has not been updated for 2*maxDuration + delete(p.perItemBackoff, id) + } + } +} + +func (p *Backoff) DeleteEntry(id string) { + p.Lock() + defer p.Unlock() + delete(p.perItemBackoff, id) +} + +// Take a lock on *Backoff, before calling initEntryUnsafe +func (p *Backoff) initEntryUnsafe(id string) *backoffEntry { + entry := &backoffEntry{backoff: p.defaultDuration} + p.perItemBackoff[id] = entry + return entry +} + +// After 2*maxDuration we restart the backoff factor to the beginning +func hasExpired(eventTime time.Time, lastUpdate time.Time, maxDuration time.Duration) bool { + return eventTime.Sub(lastUpdate) > maxDuration*2 // consider stable if it's ok for twice the maxDuration +} diff --git a/vendor/k8s.io/client-go/util/flowcontrol/backoff_test.go b/vendor/k8s.io/client-go/util/flowcontrol/backoff_test.go new file mode 100644 index 000000000..23a6cbfa3 --- /dev/null +++ b/vendor/k8s.io/client-go/util/flowcontrol/backoff_test.go @@ -0,0 +1,195 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flowcontrol + +import ( + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/clock" +) + +func TestSlowBackoff(t *testing.T) { + id := "_idSlow" + tc := clock.NewFakeClock(time.Now()) + step := time.Second + maxDuration := 50 * step + + b := NewFakeBackOff(step, maxDuration, tc) + cases := []time.Duration{0, 1, 2, 4, 8, 16, 32, 50, 50, 50} + for ix, c := range cases { + tc.Step(step) + w := b.Get(id) + if w != c*step { + t.Errorf("input: '%d': expected %s, got %s", ix, c*step, w) + } + b.Next(id, tc.Now()) + } + + //Now confirm that the Reset cancels backoff. + b.Next(id, tc.Now()) + b.Reset(id) + if b.Get(id) != 0 { + t.Errorf("Reset didn't clear the backoff.") + } + +} + +func TestBackoffReset(t *testing.T) { + id := "_idReset" + tc := clock.NewFakeClock(time.Now()) + step := time.Second + maxDuration := step * 5 + b := NewFakeBackOff(step, maxDuration, tc) + startTime := tc.Now() + + // get to backoff = maxDuration + for i := 0; i <= int(maxDuration/step); i++ { + tc.Step(step) + b.Next(id, tc.Now()) + } + + // backoff should be capped at maxDuration + if !b.IsInBackOffSince(id, tc.Now()) { + t.Errorf("expected to be in Backoff got %s", b.Get(id)) + } + + lastUpdate := tc.Now() + tc.Step(2*maxDuration + step) // time += 11s, 11 > 2*maxDuration + if b.IsInBackOffSince(id, lastUpdate) { + t.Errorf("expected to not be in Backoff after reset (start=%s, now=%s, lastUpdate=%s), got %s", startTime, tc.Now(), lastUpdate, b.Get(id)) + } +} + +func TestBackoffHightWaterMark(t *testing.T) { + id := "_idHiWaterMark" + tc := clock.NewFakeClock(time.Now()) + step := time.Second + maxDuration := 5 * step + b := NewFakeBackOff(step, maxDuration, tc) + + // get to backoff = maxDuration + for i := 0; i <= int(maxDuration/step); i++ { + tc.Step(step) + b.Next(id, tc.Now()) + } + + // backoff high watermark expires after 2*maxDuration + tc.Step(maxDuration + step) + b.Next(id, tc.Now()) + + if b.Get(id) != maxDuration { + t.Errorf("expected Backoff to stay at high watermark %s got %s", maxDuration, b.Get(id)) + } +} + +func TestBackoffGC(t *testing.T) { + id := "_idGC" + tc := clock.NewFakeClock(time.Now()) + step := time.Second + maxDuration := 5 * step + + b := NewFakeBackOff(step, maxDuration, tc) + + for i := 0; i <= int(maxDuration/step); i++ { + tc.Step(step) + b.Next(id, tc.Now()) + } + lastUpdate := tc.Now() + tc.Step(maxDuration + step) + b.GC() + _, found := b.perItemBackoff[id] + if !found { + t.Errorf("expected GC to skip entry, elapsed time=%s maxDuration=%s", tc.Now().Sub(lastUpdate), maxDuration) + } + + tc.Step(maxDuration + step) + b.GC() + r, found := b.perItemBackoff[id] + if found { + t.Errorf("expected GC of entry after %s got entry %v", tc.Now().Sub(lastUpdate), r) + } +} + +func TestIsInBackOffSinceUpdate(t *testing.T) { + id := "_idIsInBackOffSinceUpdate" + tc := clock.NewFakeClock(time.Now()) + step := time.Second + maxDuration := 10 * step + b := NewFakeBackOff(step, maxDuration, tc) + startTime := tc.Now() + + cases := []struct { + tick time.Duration + inBackOff bool + value int + }{ + {tick: 0, inBackOff: false, value: 0}, + {tick: 1, inBackOff: false, value: 1}, + {tick: 2, inBackOff: true, value: 2}, + {tick: 3, inBackOff: false, value: 2}, + {tick: 4, inBackOff: true, value: 4}, + {tick: 5, inBackOff: true, value: 4}, + {tick: 6, inBackOff: true, value: 4}, + {tick: 7, inBackOff: false, value: 4}, + {tick: 8, inBackOff: true, value: 8}, + {tick: 9, inBackOff: true, value: 8}, + {tick: 10, inBackOff: true, value: 8}, + {tick: 11, inBackOff: true, value: 8}, + {tick: 12, inBackOff: true, value: 8}, + {tick: 13, inBackOff: true, value: 8}, + {tick: 14, inBackOff: true, value: 8}, + {tick: 15, inBackOff: false, value: 8}, + {tick: 16, inBackOff: true, value: 10}, + {tick: 17, inBackOff: true, value: 10}, + {tick: 18, inBackOff: true, value: 10}, + {tick: 19, inBackOff: true, value: 10}, + {tick: 20, inBackOff: true, value: 10}, + {tick: 21, inBackOff: true, value: 10}, + {tick: 22, inBackOff: true, value: 10}, + {tick: 23, inBackOff: true, value: 10}, + {tick: 24, inBackOff: true, value: 10}, + {tick: 25, inBackOff: false, value: 10}, + {tick: 26, inBackOff: true, value: 10}, + {tick: 27, inBackOff: true, value: 10}, + {tick: 28, inBackOff: true, value: 10}, + {tick: 29, inBackOff: true, value: 10}, + {tick: 30, inBackOff: true, value: 10}, + {tick: 31, inBackOff: true, value: 10}, + {tick: 32, inBackOff: true, value: 10}, + {tick: 33, inBackOff: true, value: 10}, + {tick: 34, inBackOff: true, value: 10}, + {tick: 35, inBackOff: false, value: 10}, + {tick: 56, inBackOff: false, value: 0}, + {tick: 57, inBackOff: false, value: 1}, + } + + for _, c := range cases { + tc.SetTime(startTime.Add(c.tick * step)) + if c.inBackOff != b.IsInBackOffSinceUpdate(id, tc.Now()) { + t.Errorf("expected IsInBackOffSinceUpdate %v got %v at tick %s", c.inBackOff, b.IsInBackOffSinceUpdate(id, tc.Now()), c.tick*step) + } + + if c.inBackOff && (time.Duration(c.value)*step != b.Get(id)) { + t.Errorf("expected backoff value=%s got %s at tick %s", time.Duration(c.value)*step, b.Get(id), c.tick*step) + } + + if !c.inBackOff { + b.Next(id, tc.Now()) + } + } +} diff --git a/vendor/k8s.io/client-go/util/flowcontrol/throttle.go b/vendor/k8s.io/client-go/util/flowcontrol/throttle.go new file mode 100644 index 000000000..c45169c40 --- /dev/null +++ b/vendor/k8s.io/client-go/util/flowcontrol/throttle.go @@ -0,0 +1,148 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flowcontrol + +import ( + "sync" + + "github.com/juju/ratelimit" +) + +type RateLimiter interface { + // TryAccept returns true if a token is taken immediately. Otherwise, + // it returns false. + TryAccept() bool + // Accept returns once a token becomes available. + Accept() + // Stop stops the rate limiter, subsequent calls to CanAccept will return false + Stop() + // Saturation returns a percentage number which describes how saturated + // this rate limiter is. + // Usually we use token bucket rate limiter. In that case, + // 1.0 means no tokens are available; 0.0 means we have a full bucket of tokens to use. + Saturation() float64 + // QPS returns QPS of this rate limiter + QPS() float32 +} + +type tokenBucketRateLimiter struct { + limiter *ratelimit.Bucket + qps float32 +} + +// NewTokenBucketRateLimiter creates a rate limiter which implements a token bucket approach. +// The rate limiter allows bursts of up to 'burst' to exceed the QPS, while still maintaining a +// smoothed qps rate of 'qps'. +// The bucket is initially filled with 'burst' tokens, and refills at a rate of 'qps'. +// The maximum number of tokens in the bucket is capped at 'burst'. +func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter { + limiter := ratelimit.NewBucketWithRate(float64(qps), int64(burst)) + return newTokenBucketRateLimiter(limiter, qps) +} + +// An injectable, mockable clock interface. +type Clock interface { + ratelimit.Clock +} + +// NewTokenBucketRateLimiterWithClock is identical to NewTokenBucketRateLimiter +// but allows an injectable clock, for testing. +func NewTokenBucketRateLimiterWithClock(qps float32, burst int, clock Clock) RateLimiter { + limiter := ratelimit.NewBucketWithRateAndClock(float64(qps), int64(burst), clock) + return newTokenBucketRateLimiter(limiter, qps) +} + +func newTokenBucketRateLimiter(limiter *ratelimit.Bucket, qps float32) RateLimiter { + return &tokenBucketRateLimiter{ + limiter: limiter, + qps: qps, + } +} + +func (t *tokenBucketRateLimiter) TryAccept() bool { + return t.limiter.TakeAvailable(1) == 1 +} + +func (t *tokenBucketRateLimiter) Saturation() float64 { + capacity := t.limiter.Capacity() + avail := t.limiter.Available() + return float64(capacity-avail) / float64(capacity) +} + +// Accept will block until a token becomes available +func (t *tokenBucketRateLimiter) Accept() { + t.limiter.Wait(1) +} + +func (t *tokenBucketRateLimiter) Stop() { +} + +func (t *tokenBucketRateLimiter) QPS() float32 { + return t.qps +} + +type fakeAlwaysRateLimiter struct{} + +func NewFakeAlwaysRateLimiter() RateLimiter { + return &fakeAlwaysRateLimiter{} +} + +func (t *fakeAlwaysRateLimiter) TryAccept() bool { + return true +} + +func (t *fakeAlwaysRateLimiter) Saturation() float64 { + return 0 +} + +func (t *fakeAlwaysRateLimiter) Stop() {} + +func (t *fakeAlwaysRateLimiter) Accept() {} + +func (t *fakeAlwaysRateLimiter) QPS() float32 { + return 1 +} + +type fakeNeverRateLimiter struct { + wg sync.WaitGroup +} + +func NewFakeNeverRateLimiter() RateLimiter { + rl := fakeNeverRateLimiter{} + rl.wg.Add(1) + return &rl +} + +func (t *fakeNeverRateLimiter) TryAccept() bool { + return false +} + +func (t *fakeNeverRateLimiter) Saturation() float64 { + return 1 +} + +func (t *fakeNeverRateLimiter) Stop() { + t.wg.Done() +} + +func (t *fakeNeverRateLimiter) Accept() { + t.wg.Wait() +} + +func (t *fakeNeverRateLimiter) QPS() float32 { + return 1 +} diff --git a/vendor/k8s.io/client-go/util/flowcontrol/throttle_test.go b/vendor/k8s.io/client-go/util/flowcontrol/throttle_test.go new file mode 100644 index 000000000..642020fe4 --- /dev/null +++ b/vendor/k8s.io/client-go/util/flowcontrol/throttle_test.go @@ -0,0 +1,177 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flowcontrol + +import ( + "math" + "sync" + "testing" + "time" +) + +func TestMultithreadedThrottling(t *testing.T) { + // Bucket with 100QPS and no burst + r := NewTokenBucketRateLimiter(100, 1) + + // channel to collect 100 tokens + taken := make(chan bool, 100) + + // Set up goroutines to hammer the throttler + startCh := make(chan bool) + endCh := make(chan bool) + for i := 0; i < 10; i++ { + go func() { + // wait for the starting signal + <-startCh + for { + // get a token + r.Accept() + select { + // try to add it to the taken channel + case taken <- true: + continue + // if taken is full, notify and return + default: + endCh <- true + return + } + } + }() + } + + // record wall time + startTime := time.Now() + // take the initial capacity so all tokens are the result of refill + r.Accept() + // start the thundering herd + close(startCh) + // wait for the first signal that we collected 100 tokens + <-endCh + // record wall time + endTime := time.Now() + + // tolerate a 1% clock change because these things happen + if duration := endTime.Sub(startTime); duration < (time.Second * 99 / 100) { + // We shouldn't be able to get 100 tokens out of the bucket in less than 1 second of wall clock time, no matter what + t.Errorf("Expected it to take at least 1 second to get 100 tokens, took %v", duration) + } else { + t.Logf("Took %v to get 100 tokens", duration) + } +} + +func TestBasicThrottle(t *testing.T) { + r := NewTokenBucketRateLimiter(1, 3) + for i := 0; i < 3; i++ { + if !r.TryAccept() { + t.Error("unexpected false accept") + } + } + if r.TryAccept() { + t.Error("unexpected true accept") + } +} + +func TestIncrementThrottle(t *testing.T) { + r := NewTokenBucketRateLimiter(1, 1) + if !r.TryAccept() { + t.Error("unexpected false accept") + } + if r.TryAccept() { + t.Error("unexpected true accept") + } + + // Allow to refill + time.Sleep(2 * time.Second) + + if !r.TryAccept() { + t.Error("unexpected false accept") + } +} + +func TestThrottle(t *testing.T) { + r := NewTokenBucketRateLimiter(10, 5) + + // Should consume 5 tokens immediately, then + // the remaining 11 should take at least 1 second (0.1s each) + expectedFinish := time.Now().Add(time.Second * 1) + for i := 0; i < 16; i++ { + r.Accept() + } + if time.Now().Before(expectedFinish) { + t.Error("rate limit was not respected, finished too early") + } +} + +func TestRateLimiterSaturation(t *testing.T) { + const e = 0.000001 + tests := []struct { + capacity int + take int + + expectedSaturation float64 + }{ + {1, 1, 1}, + {10, 3, 0.3}, + } + for i, tt := range tests { + rl := NewTokenBucketRateLimiter(1, tt.capacity) + for i := 0; i < tt.take; i++ { + rl.Accept() + } + if math.Abs(rl.Saturation()-tt.expectedSaturation) > e { + t.Fatalf("#%d: Saturation rate difference isn't within tolerable range\n want=%f, get=%f", + i, tt.expectedSaturation, rl.Saturation()) + } + } +} + +func TestAlwaysFake(t *testing.T) { + rl := NewFakeAlwaysRateLimiter() + if !rl.TryAccept() { + t.Error("TryAccept in AlwaysFake should return true.") + } + // If this will block the test will timeout + rl.Accept() +} + +func TestNeverFake(t *testing.T) { + rl := NewFakeNeverRateLimiter() + if rl.TryAccept() { + t.Error("TryAccept in NeverFake should return false.") + } + + finished := false + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + rl.Accept() + finished = true + wg.Done() + }() + + // Wait some time to make sure it never finished. + time.Sleep(time.Second) + if finished { + t.Error("Accept should block forever in NeverFake.") + } + + rl.Stop() + wg.Wait() + if !finished { + t.Error("Stop should make Accept unblock in NeverFake.") + } +} diff --git a/vendor/k8s.io/client-go/util/homedir/BUILD b/vendor/k8s.io/client-go/util/homedir/BUILD new file mode 100644 index 000000000..aa49fefb5 --- /dev/null +++ b/vendor/k8s.io/client-go/util/homedir/BUILD @@ -0,0 +1,14 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", +) + +go_library( + name = "go_default_library", + srcs = ["homedir.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/util/homedir/homedir.go b/vendor/k8s.io/client-go/util/homedir/homedir.go new file mode 100644 index 000000000..816db57f5 --- /dev/null +++ b/vendor/k8s.io/client-go/util/homedir/homedir.go @@ -0,0 +1,47 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package homedir + +import ( + "os" + "runtime" +) + +// HomeDir returns the home directory for the current user +func HomeDir() string { + if runtime.GOOS == "windows" { + + // First prefer the HOME environmental variable + if home := os.Getenv("HOME"); len(home) > 0 { + if _, err := os.Stat(home); err == nil { + return home + } + } + if homeDrive, homePath := os.Getenv("HOMEDRIVE"), os.Getenv("HOMEPATH"); len(homeDrive) > 0 && len(homePath) > 0 { + homeDir := homeDrive + homePath + if _, err := os.Stat(homeDir); err == nil { + return homeDir + } + } + if userProfile := os.Getenv("USERPROFILE"); len(userProfile) > 0 { + if _, err := os.Stat(userProfile); err == nil { + return userProfile + } + } + } + return os.Getenv("HOME") +} diff --git a/vendor/k8s.io/client-go/util/integer/BUILD b/vendor/k8s.io/client-go/util/integer/BUILD new file mode 100644 index 000000000..631a16092 --- /dev/null +++ b/vendor/k8s.io/client-go/util/integer/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["integer_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = ["integer.go"], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/util/integer/integer.go b/vendor/k8s.io/client-go/util/integer/integer.go new file mode 100644 index 000000000..c6ea106f9 --- /dev/null +++ b/vendor/k8s.io/client-go/util/integer/integer.go @@ -0,0 +1,67 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package integer + +func IntMax(a, b int) int { + if b > a { + return b + } + return a +} + +func IntMin(a, b int) int { + if b < a { + return b + } + return a +} + +func Int32Max(a, b int32) int32 { + if b > a { + return b + } + return a +} + +func Int32Min(a, b int32) int32 { + if b < a { + return b + } + return a +} + +func Int64Max(a, b int64) int64 { + if b > a { + return b + } + return a +} + +func Int64Min(a, b int64) int64 { + if b < a { + return b + } + return a +} + +// RoundToInt32 rounds floats into integer numbers. +func RoundToInt32(a float64) int32 { + if a < 0 { + return int32(a - 0.5) + } + return int32(a + 0.5) +} diff --git a/vendor/k8s.io/client-go/util/integer/integer_test.go b/vendor/k8s.io/client-go/util/integer/integer_test.go new file mode 100644 index 000000000..e9f586888 --- /dev/null +++ b/vendor/k8s.io/client-go/util/integer/integer_test.go @@ -0,0 +1,244 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package integer + +import "testing" + +func TestIntMax(t *testing.T) { + tests := []struct { + nums []int + expectedMax int + }{ + { + nums: []int{-1, 0}, + expectedMax: 0, + }, + { + nums: []int{-1, -2}, + expectedMax: -1, + }, + { + nums: []int{0, 1}, + expectedMax: 1, + }, + { + nums: []int{1, 2}, + expectedMax: 2, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if max := IntMax(test.nums[0], test.nums[1]); max != test.expectedMax { + t.Errorf("expected %v, got %v", test.expectedMax, max) + } + } +} + +func TestIntMin(t *testing.T) { + tests := []struct { + nums []int + expectedMin int + }{ + { + nums: []int{-1, 0}, + expectedMin: -1, + }, + { + nums: []int{-1, -2}, + expectedMin: -2, + }, + { + nums: []int{0, 1}, + expectedMin: 0, + }, + { + nums: []int{1, 2}, + expectedMin: 1, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if min := IntMin(test.nums[0], test.nums[1]); min != test.expectedMin { + t.Errorf("expected %v, got %v", test.expectedMin, min) + } + } +} + +func TestInt32Max(t *testing.T) { + tests := []struct { + nums []int32 + expectedMax int32 + }{ + { + nums: []int32{-1, 0}, + expectedMax: 0, + }, + { + nums: []int32{-1, -2}, + expectedMax: -1, + }, + { + nums: []int32{0, 1}, + expectedMax: 1, + }, + { + nums: []int32{1, 2}, + expectedMax: 2, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if max := Int32Max(test.nums[0], test.nums[1]); max != test.expectedMax { + t.Errorf("expected %v, got %v", test.expectedMax, max) + } + } +} + +func TestInt32Min(t *testing.T) { + tests := []struct { + nums []int32 + expectedMin int32 + }{ + { + nums: []int32{-1, 0}, + expectedMin: -1, + }, + { + nums: []int32{-1, -2}, + expectedMin: -2, + }, + { + nums: []int32{0, 1}, + expectedMin: 0, + }, + { + nums: []int32{1, 2}, + expectedMin: 1, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if min := Int32Min(test.nums[0], test.nums[1]); min != test.expectedMin { + t.Errorf("expected %v, got %v", test.expectedMin, min) + } + } +} + +func TestInt64Max(t *testing.T) { + tests := []struct { + nums []int64 + expectedMax int64 + }{ + { + nums: []int64{-1, 0}, + expectedMax: 0, + }, + { + nums: []int64{-1, -2}, + expectedMax: -1, + }, + { + nums: []int64{0, 1}, + expectedMax: 1, + }, + { + nums: []int64{1, 2}, + expectedMax: 2, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if max := Int64Max(test.nums[0], test.nums[1]); max != test.expectedMax { + t.Errorf("expected %v, got %v", test.expectedMax, max) + } + } +} + +func TestInt64Min(t *testing.T) { + tests := []struct { + nums []int64 + expectedMin int64 + }{ + { + nums: []int64{-1, 0}, + expectedMin: -1, + }, + { + nums: []int64{-1, -2}, + expectedMin: -2, + }, + { + nums: []int64{0, 1}, + expectedMin: 0, + }, + { + nums: []int64{1, 2}, + expectedMin: 1, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if min := Int64Min(test.nums[0], test.nums[1]); min != test.expectedMin { + t.Errorf("expected %v, got %v", test.expectedMin, min) + } + } +} + +func TestRoundToInt32(t *testing.T) { + tests := []struct { + num float64 + exp int32 + }{ + { + num: 5.5, + exp: 6, + }, + { + num: -3.7, + exp: -4, + }, + { + num: 3.49, + exp: 3, + }, + { + num: -7.9, + exp: -8, + }, + { + num: -4.499999, + exp: -4, + }, + { + num: 0, + exp: 0, + }, + } + + for i, test := range tests { + t.Logf("executing scenario %d", i) + if got := RoundToInt32(test.num); got != test.exp { + t.Errorf("expected %d, got %d", test.exp, got) + } + } +} diff --git a/vendor/k8s.io/client-go/util/jsonpath/BUILD b/vendor/k8s.io/client-go/util/jsonpath/BUILD new file mode 100644 index 000000000..521b689f5 --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/BUILD @@ -0,0 +1,31 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "jsonpath_test.go", + "parser_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "doc.go", + "jsonpath.go", + "node.go", + "parser.go", + ], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/client-go/third_party/forked/golang/template:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/util/jsonpath/doc.go b/vendor/k8s.io/client-go/util/jsonpath/doc.go new file mode 100644 index 000000000..0effb15c4 --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// package jsonpath is a template engine using jsonpath syntax, +// which can be seen at http://goessner.net/articles/JsonPath/. +// In addition, it has {range} {end} function to iterate list and slice. +package jsonpath // import "k8s.io/client-go/util/jsonpath" diff --git a/vendor/k8s.io/client-go/util/jsonpath/jsonpath.go b/vendor/k8s.io/client-go/util/jsonpath/jsonpath.go new file mode 100644 index 000000000..decbec0bb --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/jsonpath.go @@ -0,0 +1,509 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonpath + +import ( + "bytes" + "fmt" + "io" + "reflect" + "strings" + + "k8s.io/client-go/third_party/forked/golang/template" +) + +type JSONPath struct { + name string + parser *Parser + stack [][]reflect.Value //push and pop values in different scopes + cur []reflect.Value //current scope values + beginRange int + inRange int + endRange int + + allowMissingKeys bool +} + +func New(name string) *JSONPath { + return &JSONPath{ + name: name, + beginRange: 0, + inRange: 0, + endRange: 0, + } +} + +// AllowMissingKeys allows a caller to specify whether they want an error if a field or map key +// cannot be located, or simply an empty result. The receiver is returned for chaining. +func (j *JSONPath) AllowMissingKeys(allow bool) *JSONPath { + j.allowMissingKeys = allow + return j +} + +// Parse parse the given template, return error +func (j *JSONPath) Parse(text string) (err error) { + j.parser, err = Parse(j.name, text) + return +} + +// Execute bounds data into template and write the result +func (j *JSONPath) Execute(wr io.Writer, data interface{}) error { + fullResults, err := j.FindResults(data) + if err != nil { + return err + } + for ix := range fullResults { + if err := j.PrintResults(wr, fullResults[ix]); err != nil { + return err + } + } + return nil +} + +func (j *JSONPath) FindResults(data interface{}) ([][]reflect.Value, error) { + if j.parser == nil { + return nil, fmt.Errorf("%s is an incomplete jsonpath template", j.name) + } + + j.cur = []reflect.Value{reflect.ValueOf(data)} + nodes := j.parser.Root.Nodes + fullResult := [][]reflect.Value{} + for i := 0; i < len(nodes); i++ { + node := nodes[i] + results, err := j.walk(j.cur, node) + if err != nil { + return nil, err + } + + //encounter an end node, break the current block + if j.endRange > 0 && j.endRange <= j.inRange { + j.endRange -= 1 + break + } + //encounter a range node, start a range loop + if j.beginRange > 0 { + j.beginRange -= 1 + j.inRange += 1 + for k, value := range results { + j.parser.Root.Nodes = nodes[i+1:] + if k == len(results)-1 { + j.inRange -= 1 + } + nextResults, err := j.FindResults(value.Interface()) + if err != nil { + return nil, err + } + fullResult = append(fullResult, nextResults...) + } + break + } + fullResult = append(fullResult, results) + } + return fullResult, nil +} + +// PrintResults write the results into writer +func (j *JSONPath) PrintResults(wr io.Writer, results []reflect.Value) error { + for i, r := range results { + text, err := j.evalToText(r) + if err != nil { + return err + } + if i != len(results)-1 { + text = append(text, ' ') + } + if _, err = wr.Write(text); err != nil { + return err + } + } + return nil +} + +// walk visits tree rooted at the given node in DFS order +func (j *JSONPath) walk(value []reflect.Value, node Node) ([]reflect.Value, error) { + switch node := node.(type) { + case *ListNode: + return j.evalList(value, node) + case *TextNode: + return []reflect.Value{reflect.ValueOf(node.Text)}, nil + case *FieldNode: + return j.evalField(value, node) + case *ArrayNode: + return j.evalArray(value, node) + case *FilterNode: + return j.evalFilter(value, node) + case *IntNode: + return j.evalInt(value, node) + case *BoolNode: + return j.evalBool(value, node) + case *FloatNode: + return j.evalFloat(value, node) + case *WildcardNode: + return j.evalWildcard(value, node) + case *RecursiveNode: + return j.evalRecursive(value, node) + case *UnionNode: + return j.evalUnion(value, node) + case *IdentifierNode: + return j.evalIdentifier(value, node) + default: + return value, fmt.Errorf("unexpected Node %v", node) + } +} + +// evalInt evaluates IntNode +func (j *JSONPath) evalInt(input []reflect.Value, node *IntNode) ([]reflect.Value, error) { + result := make([]reflect.Value, len(input)) + for i := range input { + result[i] = reflect.ValueOf(node.Value) + } + return result, nil +} + +// evalFloat evaluates FloatNode +func (j *JSONPath) evalFloat(input []reflect.Value, node *FloatNode) ([]reflect.Value, error) { + result := make([]reflect.Value, len(input)) + for i := range input { + result[i] = reflect.ValueOf(node.Value) + } + return result, nil +} + +// evalBool evaluates BoolNode +func (j *JSONPath) evalBool(input []reflect.Value, node *BoolNode) ([]reflect.Value, error) { + result := make([]reflect.Value, len(input)) + for i := range input { + result[i] = reflect.ValueOf(node.Value) + } + return result, nil +} + +// evalList evaluates ListNode +func (j *JSONPath) evalList(value []reflect.Value, node *ListNode) ([]reflect.Value, error) { + var err error + curValue := value + for _, node := range node.Nodes { + curValue, err = j.walk(curValue, node) + if err != nil { + return curValue, err + } + } + return curValue, nil +} + +// evalIdentifier evaluates IdentifierNode +func (j *JSONPath) evalIdentifier(input []reflect.Value, node *IdentifierNode) ([]reflect.Value, error) { + results := []reflect.Value{} + switch node.Name { + case "range": + j.stack = append(j.stack, j.cur) + j.beginRange += 1 + results = input + case "end": + if j.endRange < j.inRange { //inside a loop, break the current block + j.endRange += 1 + break + } + // the loop is about to end, pop value and continue the following execution + if len(j.stack) > 0 { + j.cur, j.stack = j.stack[len(j.stack)-1], j.stack[:len(j.stack)-1] + } else { + return results, fmt.Errorf("not in range, nothing to end") + } + default: + return input, fmt.Errorf("unrecognized identifier %v", node.Name) + } + return results, nil +} + +// evalArray evaluates ArrayNode +func (j *JSONPath) evalArray(input []reflect.Value, node *ArrayNode) ([]reflect.Value, error) { + result := []reflect.Value{} + for _, value := range input { + + value, isNil := template.Indirect(value) + if isNil { + continue + } + if value.Kind() != reflect.Array && value.Kind() != reflect.Slice { + return input, fmt.Errorf("%v is not array or slice", value.Type()) + } + params := node.Params + if !params[0].Known { + params[0].Value = 0 + } + if params[0].Value < 0 { + params[0].Value += value.Len() + } + if !params[1].Known { + params[1].Value = value.Len() + } + + if params[1].Value < 0 { + params[1].Value += value.Len() + } + + sliceLength := value.Len() + if params[1].Value != params[0].Value { // if you're requesting zero elements, allow it through. + if params[0].Value >= sliceLength { + return input, fmt.Errorf("array index out of bounds: index %d, length %d", params[0].Value, sliceLength) + } + if params[1].Value > sliceLength { + return input, fmt.Errorf("array index out of bounds: index %d, length %d", params[1].Value-1, sliceLength) + } + } + + if !params[2].Known { + value = value.Slice(params[0].Value, params[1].Value) + } else { + value = value.Slice3(params[0].Value, params[1].Value, params[2].Value) + } + for i := 0; i < value.Len(); i++ { + result = append(result, value.Index(i)) + } + } + return result, nil +} + +// evalUnion evaluates UnionNode +func (j *JSONPath) evalUnion(input []reflect.Value, node *UnionNode) ([]reflect.Value, error) { + result := []reflect.Value{} + for _, listNode := range node.Nodes { + temp, err := j.evalList(input, listNode) + if err != nil { + return input, err + } + result = append(result, temp...) + } + return result, nil +} + +func (j *JSONPath) findFieldInValue(value *reflect.Value, node *FieldNode) (reflect.Value, error) { + t := value.Type() + var inlineValue *reflect.Value + for ix := 0; ix < t.NumField(); ix++ { + f := t.Field(ix) + jsonTag := f.Tag.Get("json") + parts := strings.Split(jsonTag, ",") + if len(parts) == 0 { + continue + } + if parts[0] == node.Value { + return value.Field(ix), nil + } + if len(parts[0]) == 0 { + val := value.Field(ix) + inlineValue = &val + } + } + if inlineValue != nil { + if inlineValue.Kind() == reflect.Struct { + // handle 'inline' + match, err := j.findFieldInValue(inlineValue, node) + if err != nil { + return reflect.Value{}, err + } + if match.IsValid() { + return match, nil + } + } + } + return value.FieldByName(node.Value), nil +} + +// evalField evaluates field of struct or key of map. +func (j *JSONPath) evalField(input []reflect.Value, node *FieldNode) ([]reflect.Value, error) { + results := []reflect.Value{} + // If there's no input, there's no output + if len(input) == 0 { + return results, nil + } + for _, value := range input { + var result reflect.Value + value, isNil := template.Indirect(value) + if isNil { + continue + } + + if value.Kind() == reflect.Struct { + var err error + if result, err = j.findFieldInValue(&value, node); err != nil { + return nil, err + } + } else if value.Kind() == reflect.Map { + mapKeyType := value.Type().Key() + nodeValue := reflect.ValueOf(node.Value) + // node value type must be convertible to map key type + if !nodeValue.Type().ConvertibleTo(mapKeyType) { + return results, fmt.Errorf("%s is not convertible to %s", nodeValue, mapKeyType) + } + result = value.MapIndex(nodeValue.Convert(mapKeyType)) + } + if result.IsValid() { + results = append(results, result) + } + } + if len(results) == 0 { + if j.allowMissingKeys { + return results, nil + } + return results, fmt.Errorf("%s is not found", node.Value) + } + return results, nil +} + +// evalWildcard extract all contents of the given value +func (j *JSONPath) evalWildcard(input []reflect.Value, node *WildcardNode) ([]reflect.Value, error) { + results := []reflect.Value{} + for _, value := range input { + value, isNil := template.Indirect(value) + if isNil { + continue + } + + kind := value.Kind() + if kind == reflect.Struct { + for i := 0; i < value.NumField(); i++ { + results = append(results, value.Field(i)) + } + } else if kind == reflect.Map { + for _, key := range value.MapKeys() { + results = append(results, value.MapIndex(key)) + } + } else if kind == reflect.Array || kind == reflect.Slice || kind == reflect.String { + for i := 0; i < value.Len(); i++ { + results = append(results, value.Index(i)) + } + } + } + return results, nil +} + +// evalRecursive visit the given value recursively and push all of them to result +func (j *JSONPath) evalRecursive(input []reflect.Value, node *RecursiveNode) ([]reflect.Value, error) { + result := []reflect.Value{} + for _, value := range input { + results := []reflect.Value{} + value, isNil := template.Indirect(value) + if isNil { + continue + } + + kind := value.Kind() + if kind == reflect.Struct { + for i := 0; i < value.NumField(); i++ { + results = append(results, value.Field(i)) + } + } else if kind == reflect.Map { + for _, key := range value.MapKeys() { + results = append(results, value.MapIndex(key)) + } + } else if kind == reflect.Array || kind == reflect.Slice || kind == reflect.String { + for i := 0; i < value.Len(); i++ { + results = append(results, value.Index(i)) + } + } + if len(results) != 0 { + result = append(result, value) + output, err := j.evalRecursive(results, node) + if err != nil { + return result, err + } + result = append(result, output...) + } + } + return result, nil +} + +// evalFilter filter array according to FilterNode +func (j *JSONPath) evalFilter(input []reflect.Value, node *FilterNode) ([]reflect.Value, error) { + results := []reflect.Value{} + for _, value := range input { + value, _ = template.Indirect(value) + + if value.Kind() != reflect.Array && value.Kind() != reflect.Slice { + return input, fmt.Errorf("%v is not array or slice and cannot be filtered", value) + } + for i := 0; i < value.Len(); i++ { + temp := []reflect.Value{value.Index(i)} + lefts, err := j.evalList(temp, node.Left) + + //case exists + if node.Operator == "exists" { + if len(lefts) > 0 { + results = append(results, value.Index(i)) + } + continue + } + + if err != nil { + return input, err + } + + var left, right interface{} + if len(lefts) != 1 { + return input, fmt.Errorf("can only compare one element at a time") + } + left = lefts[0].Interface() + + rights, err := j.evalList(temp, node.Right) + if err != nil { + return input, err + } + if len(rights) != 1 { + return input, fmt.Errorf("can only compare one element at a time") + } + right = rights[0].Interface() + + pass := false + switch node.Operator { + case "<": + pass, err = template.Less(left, right) + case ">": + pass, err = template.Greater(left, right) + case "==": + pass, err = template.Equal(left, right) + case "!=": + pass, err = template.NotEqual(left, right) + case "<=": + pass, err = template.LessEqual(left, right) + case ">=": + pass, err = template.GreaterEqual(left, right) + default: + return results, fmt.Errorf("unrecognized filter operator %s", node.Operator) + } + if err != nil { + return results, err + } + if pass { + results = append(results, value.Index(i)) + } + } + } + return results, nil +} + +// evalToText translates reflect value to corresponding text +func (j *JSONPath) evalToText(v reflect.Value) ([]byte, error) { + iface, ok := template.PrintableValue(v) + if !ok { + return nil, fmt.Errorf("can't print type %s", v.Type()) + } + var buffer bytes.Buffer + fmt.Fprint(&buffer, iface) + return buffer.Bytes(), nil +} diff --git a/vendor/k8s.io/client-go/util/jsonpath/jsonpath_test.go b/vendor/k8s.io/client-go/util/jsonpath/jsonpath_test.go new file mode 100644 index 000000000..3f38aa839 --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/jsonpath_test.go @@ -0,0 +1,290 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonpath + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "sort" + "strings" + "testing" +) + +type jsonpathTest struct { + name string + template string + input interface{} + expect string +} + +func testJSONPath(tests []jsonpathTest, allowMissingKeys bool, t *testing.T) { + for _, test := range tests { + j := New(test.name) + j.AllowMissingKeys(allowMissingKeys) + err := j.Parse(test.template) + if err != nil { + t.Errorf("in %s, parse %s error %v", test.name, test.template, err) + } + buf := new(bytes.Buffer) + err = j.Execute(buf, test.input) + if err != nil { + t.Errorf("in %s, execute error %v", test.name, err) + } + out := buf.String() + if out != test.expect { + t.Errorf(`in %s, expect to get "%s", got "%s"`, test.name, test.expect, out) + } + } +} + +// testJSONPathSortOutput test cases related to map, the results may print in random order +func testJSONPathSortOutput(tests []jsonpathTest, t *testing.T) { + for _, test := range tests { + j := New(test.name) + err := j.Parse(test.template) + if err != nil { + t.Errorf("in %s, parse %s error %v", test.name, test.template, err) + } + buf := new(bytes.Buffer) + err = j.Execute(buf, test.input) + if err != nil { + t.Errorf("in %s, execute error %v", test.name, err) + } + out := buf.String() + //since map is visited in random order, we need to sort the results. + sortedOut := strings.Fields(out) + sort.Strings(sortedOut) + sortedExpect := strings.Fields(test.expect) + sort.Strings(sortedExpect) + if !reflect.DeepEqual(sortedOut, sortedExpect) { + t.Errorf(`in %s, expect to get "%s", got "%s"`, test.name, test.expect, out) + } + } +} + +func testFailJSONPath(tests []jsonpathTest, t *testing.T) { + for _, test := range tests { + j := New(test.name) + err := j.Parse(test.template) + if err != nil { + t.Errorf("in %s, parse %s error %v", test.name, test.template, err) + } + buf := new(bytes.Buffer) + err = j.Execute(buf, test.input) + var out string + if err == nil { + out = "nil" + } else { + out = err.Error() + } + if out != test.expect { + t.Errorf("in %s, expect to get error %q, got %q", test.name, test.expect, out) + } + } +} + +type book struct { + Category string + Author string + Title string + Price float32 +} + +func (b book) String() string { + return fmt.Sprintf("{Category: %s, Author: %s, Title: %s, Price: %v}", b.Category, b.Author, b.Title, b.Price) +} + +type bicycle struct { + Color string + Price float32 + IsNew bool +} + +type empName string +type job string +type store struct { + Book []book + Bicycle []bicycle + Name string + Labels map[string]int + Employees map[empName]job +} + +func TestStructInput(t *testing.T) { + + storeData := store{ + Name: "jsonpath", + Book: []book{ + {"reference", "Nigel Rees", "Sayings of the Centurey", 8.95}, + {"fiction", "Evelyn Waugh", "Sword of Honour", 12.99}, + {"fiction", "Herman Melville", "Moby Dick", 8.99}, + }, + Bicycle: []bicycle{ + {"red", 19.95, true}, + {"green", 20.01, false}, + }, + Labels: map[string]int{ + "engieer": 10, + "web/html": 15, + "k8s-app": 20, + }, + Employees: map[empName]job{ + "jason": "manager", + "dan": "clerk", + }, + } + + storeTests := []jsonpathTest{ + {"plain", "hello jsonpath", nil, "hello jsonpath"}, + {"recursive", "{..}", []int{1, 2, 3}, "[1 2 3]"}, + {"filter", "{[?(@<5)]}", []int{2, 6, 3, 7}, "2 3"}, + {"quote", `{"{"}`, nil, "{"}, + {"union", "{[1,3,4]}", []int{0, 1, 2, 3, 4}, "1 3 4"}, + {"array", "{[0:2]}", []string{"Monday", "Tudesday"}, "Monday Tudesday"}, + {"variable", "hello {.Name}", storeData, "hello jsonpath"}, + {"dict/", "{$.Labels.web/html}", storeData, "15"}, + {"dict/", "{$.Employees.jason}", storeData, "manager"}, + {"dict/", "{$.Employees.dan}", storeData, "clerk"}, + {"dict-", "{.Labels.k8s-app}", storeData, "20"}, + {"nest", "{.Bicycle[*].Color}", storeData, "red green"}, + {"allarray", "{.Book[*].Author}", storeData, "Nigel Rees Evelyn Waugh Herman Melville"}, + {"allfileds", "{.Bicycle.*}", storeData, "{red 19.95 true} {green 20.01 false}"}, + {"recurfileds", "{..Price}", storeData, "8.95 12.99 8.99 19.95 20.01"}, + {"lastarray", "{.Book[-1:]}", storeData, + "{Category: fiction, Author: Herman Melville, Title: Moby Dick, Price: 8.99}"}, + {"recurarray", "{..Book[2]}", storeData, + "{Category: fiction, Author: Herman Melville, Title: Moby Dick, Price: 8.99}"}, + {"bool", "{.Bicycle[?(@.IsNew==true)]}", storeData, "{red 19.95 true}"}, + } + testJSONPath(storeTests, false, t) + + missingKeyTests := []jsonpathTest{ + {"nonexistent field", "{.hello}", storeData, ""}, + } + testJSONPath(missingKeyTests, true, t) + + failStoreTests := []jsonpathTest{ + {"invalid identifier", "{hello}", storeData, "unrecognized identifier hello"}, + {"nonexistent field", "{.hello}", storeData, "hello is not found"}, + {"invalid array", "{.Labels[0]}", storeData, "map[string]int is not array or slice"}, + {"invalid filter operator", "{.Book[?(@.Price<>10)]}", storeData, "unrecognized filter operator <>"}, + {"redundent end", "{range .Labels.*}{@}{end}{end}", storeData, "not in range, nothing to end"}, + } + testFailJSONPath(failStoreTests, t) +} + +func TestJSONInput(t *testing.T) { + var pointsJSON = []byte(`[ + {"id": "i1", "x":4, "y":-5}, + {"id": "i2", "x":-2, "y":-5, "z":1}, + {"id": "i3", "x": 8, "y": 3 }, + {"id": "i4", "x": -6, "y": -1 }, + {"id": "i5", "x": 0, "y": 2, "z": 1 }, + {"id": "i6", "x": 1, "y": 4 } + ]`) + var pointsData interface{} + err := json.Unmarshal(pointsJSON, &pointsData) + if err != nil { + t.Error(err) + } + pointsTests := []jsonpathTest{ + {"exists filter", "{[?(@.z)].id}", pointsData, "i2 i5"}, + {"bracket key", "{[0]['id']}", pointsData, "i1"}, + } + testJSONPath(pointsTests, false, t) +} + +// TestKubernetes tests some use cases from kubernetes +func TestKubernetes(t *testing.T) { + var input = []byte(`{ + "kind": "List", + "items":[ + { + "kind":"None", + "metadata":{ + "name":"127.0.0.1", + "labels":{ + "kubernetes.io/hostname":"127.0.0.1" + } + }, + "status":{ + "capacity":{"cpu":"4"}, + "ready": true, + "addresses":[{"type": "LegacyHostIP", "address":"127.0.0.1"}] + } + }, + { + "kind":"None", + "metadata":{ + "name":"127.0.0.2", + "labels":{ + "kubernetes.io/hostname":"127.0.0.2" + } + }, + "status":{ + "capacity":{"cpu":"8"}, + "ready": false, + "addresses":[ + {"type": "LegacyHostIP", "address":"127.0.0.2"}, + {"type": "another", "address":"127.0.0.3"} + ] + } + } + ], + "users":[ + { + "name": "myself", + "user": {} + }, + { + "name": "e2e", + "user": {"username": "admin", "password": "secret"} + } + ] + }`) + var nodesData interface{} + err := json.Unmarshal(input, &nodesData) + if err != nil { + t.Error(err) + } + + nodesTests := []jsonpathTest{ + {"range item", `{range .items[*]}{.metadata.name}, {end}{.kind}`, nodesData, "127.0.0.1, 127.0.0.2, List"}, + {"range item with quote", `{range .items[*]}{.metadata.name}{"\t"}{end}`, nodesData, "127.0.0.1\t127.0.0.2\t"}, + {"range addresss", `{.items[*].status.addresses[*].address}`, nodesData, + "127.0.0.1 127.0.0.2 127.0.0.3"}, + {"double range", `{range .items[*]}{range .status.addresses[*]}{.address}, {end}{end}`, nodesData, + "127.0.0.1, 127.0.0.2, 127.0.0.3, "}, + {"item name", `{.items[*].metadata.name}`, nodesData, "127.0.0.1 127.0.0.2"}, + {"union nodes capacity", `{.items[*]['metadata.name', 'status.capacity']}`, nodesData, + "127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8]"}, + {"range nodes capacity", `{range .items[*]}[{.metadata.name}, {.status.capacity}] {end}`, nodesData, + "[127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]] "}, + {"user password", `{.users[?(@.name=="e2e")].user.password}`, &nodesData, "secret"}, + {"hostname", `{.items[0].metadata.labels.kubernetes\.io/hostname}`, &nodesData, "127.0.0.1"}, + {"hostname filter", `{.items[?(@.metadata.labels.kubernetes\.io/hostname=="127.0.0.1")].kind}`, &nodesData, "None"}, + {"bool item", `{.items[?(@..ready==true)].metadata.name}`, &nodesData, "127.0.0.1"}, + } + testJSONPath(nodesTests, false, t) + + randomPrintOrderTests := []jsonpathTest{ + {"recursive name", "{..name}", nodesData, `127.0.0.1 127.0.0.2 myself e2e`}, + } + testJSONPathSortOutput(randomPrintOrderTests, t) +} diff --git a/vendor/k8s.io/client-go/util/jsonpath/node.go b/vendor/k8s.io/client-go/util/jsonpath/node.go new file mode 100644 index 000000000..be74c4fe2 --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/node.go @@ -0,0 +1,255 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonpath + +import "fmt" + +// NodeType identifies the type of a parse tree node. +type NodeType int + +// Type returns itself and provides an easy default implementation +func (t NodeType) Type() NodeType { + return t +} + +func (t NodeType) String() string { + return NodeTypeName[t] +} + +const ( + NodeText NodeType = iota + NodeArray + NodeList + NodeField + NodeIdentifier + NodeFilter + NodeInt + NodeFloat + NodeWildcard + NodeRecursive + NodeUnion + NodeBool +) + +var NodeTypeName = map[NodeType]string{ + NodeText: "NodeText", + NodeArray: "NodeArray", + NodeList: "NodeList", + NodeField: "NodeField", + NodeIdentifier: "NodeIdentifier", + NodeFilter: "NodeFilter", + NodeInt: "NodeInt", + NodeFloat: "NodeFloat", + NodeWildcard: "NodeWildcard", + NodeRecursive: "NodeRecursive", + NodeUnion: "NodeUnion", + NodeBool: "NodeBool", +} + +type Node interface { + Type() NodeType + String() string +} + +// ListNode holds a sequence of nodes. +type ListNode struct { + NodeType + Nodes []Node // The element nodes in lexical order. +} + +func newList() *ListNode { + return &ListNode{NodeType: NodeList} +} + +func (l *ListNode) append(n Node) { + l.Nodes = append(l.Nodes, n) +} + +func (l *ListNode) String() string { + return fmt.Sprintf("%s", l.Type()) +} + +// TextNode holds plain text. +type TextNode struct { + NodeType + Text string // The text; may span newlines. +} + +func newText(text string) *TextNode { + return &TextNode{NodeType: NodeText, Text: text} +} + +func (t *TextNode) String() string { + return fmt.Sprintf("%s: %s", t.Type(), t.Text) +} + +// FieldNode holds field of struct +type FieldNode struct { + NodeType + Value string +} + +func newField(value string) *FieldNode { + return &FieldNode{NodeType: NodeField, Value: value} +} + +func (f *FieldNode) String() string { + return fmt.Sprintf("%s: %s", f.Type(), f.Value) +} + +// IdentifierNode holds an identifier +type IdentifierNode struct { + NodeType + Name string +} + +func newIdentifier(value string) *IdentifierNode { + return &IdentifierNode{ + NodeType: NodeIdentifier, + Name: value, + } +} + +func (f *IdentifierNode) String() string { + return fmt.Sprintf("%s: %s", f.Type(), f.Name) +} + +// ParamsEntry holds param information for ArrayNode +type ParamsEntry struct { + Value int + Known bool //whether the value is known when parse it +} + +// ArrayNode holds start, end, step information for array index selection +type ArrayNode struct { + NodeType + Params [3]ParamsEntry //start, end, step +} + +func newArray(params [3]ParamsEntry) *ArrayNode { + return &ArrayNode{ + NodeType: NodeArray, + Params: params, + } +} + +func (a *ArrayNode) String() string { + return fmt.Sprintf("%s: %v", a.Type(), a.Params) +} + +// FilterNode holds operand and operator information for filter +type FilterNode struct { + NodeType + Left *ListNode + Right *ListNode + Operator string +} + +func newFilter(left, right *ListNode, operator string) *FilterNode { + return &FilterNode{ + NodeType: NodeFilter, + Left: left, + Right: right, + Operator: operator, + } +} + +func (f *FilterNode) String() string { + return fmt.Sprintf("%s: %s %s %s", f.Type(), f.Left, f.Operator, f.Right) +} + +// IntNode holds integer value +type IntNode struct { + NodeType + Value int +} + +func newInt(num int) *IntNode { + return &IntNode{NodeType: NodeInt, Value: num} +} + +func (i *IntNode) String() string { + return fmt.Sprintf("%s: %d", i.Type(), i.Value) +} + +// FloatNode holds float value +type FloatNode struct { + NodeType + Value float64 +} + +func newFloat(num float64) *FloatNode { + return &FloatNode{NodeType: NodeFloat, Value: num} +} + +func (i *FloatNode) String() string { + return fmt.Sprintf("%s: %f", i.Type(), i.Value) +} + +// WildcardNode means a wildcard +type WildcardNode struct { + NodeType +} + +func newWildcard() *WildcardNode { + return &WildcardNode{NodeType: NodeWildcard} +} + +func (i *WildcardNode) String() string { + return fmt.Sprintf("%s", i.Type()) +} + +// RecursiveNode means a recursive descent operator +type RecursiveNode struct { + NodeType +} + +func newRecursive() *RecursiveNode { + return &RecursiveNode{NodeType: NodeRecursive} +} + +func (r *RecursiveNode) String() string { + return fmt.Sprintf("%s", r.Type()) +} + +// UnionNode is union of ListNode +type UnionNode struct { + NodeType + Nodes []*ListNode +} + +func newUnion(nodes []*ListNode) *UnionNode { + return &UnionNode{NodeType: NodeUnion, Nodes: nodes} +} + +func (u *UnionNode) String() string { + return fmt.Sprintf("%s", u.Type()) +} + +// BoolNode holds bool value +type BoolNode struct { + NodeType + Value bool +} + +func newBool(value bool) *BoolNode { + return &BoolNode{NodeType: NodeBool, Value: value} +} + +func (b *BoolNode) String() string { + return fmt.Sprintf("%s: %t", b.Type(), b.Value) +} diff --git a/vendor/k8s.io/client-go/util/jsonpath/parser.go b/vendor/k8s.io/client-go/util/jsonpath/parser.go new file mode 100644 index 000000000..39782afc6 --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/parser.go @@ -0,0 +1,449 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonpath + +import ( + "fmt" + "regexp" + "strconv" + "strings" + "unicode" + "unicode/utf8" +) + +const eof = -1 + +const ( + leftDelim = "{" + rightDelim = "}" +) + +type Parser struct { + Name string + Root *ListNode + input string + cur *ListNode + pos int + start int + width int +} + +// Parse parsed the given text and return a node Parser. +// If an error is encountered, parsing stops and an empty +// Parser is returned with the error +func Parse(name, text string) (*Parser, error) { + p := NewParser(name) + err := p.Parse(text) + if err != nil { + p = nil + } + return p, err +} + +func NewParser(name string) *Parser { + return &Parser{ + Name: name, + } +} + +// parseAction parsed the expression inside delimiter +func parseAction(name, text string) (*Parser, error) { + p, err := Parse(name, fmt.Sprintf("%s%s%s", leftDelim, text, rightDelim)) + // when error happens, p will be nil, so we need to return here + if err != nil { + return p, err + } + p.Root = p.Root.Nodes[0].(*ListNode) + return p, nil +} + +func (p *Parser) Parse(text string) error { + p.input = text + p.Root = newList() + p.pos = 0 + return p.parseText(p.Root) +} + +// consumeText return the parsed text since last cosumeText +func (p *Parser) consumeText() string { + value := p.input[p.start:p.pos] + p.start = p.pos + return value +} + +// next returns the next rune in the input. +func (p *Parser) next() rune { + if int(p.pos) >= len(p.input) { + p.width = 0 + return eof + } + r, w := utf8.DecodeRuneInString(p.input[p.pos:]) + p.width = w + p.pos += p.width + return r +} + +// peek returns but does not consume the next rune in the input. +func (p *Parser) peek() rune { + r := p.next() + p.backup() + return r +} + +// backup steps back one rune. Can only be called once per call of next. +func (p *Parser) backup() { + p.pos -= p.width +} + +func (p *Parser) parseText(cur *ListNode) error { + for { + if strings.HasPrefix(p.input[p.pos:], leftDelim) { + if p.pos > p.start { + cur.append(newText(p.consumeText())) + } + return p.parseLeftDelim(cur) + } + if p.next() == eof { + break + } + } + // Correctly reached EOF. + if p.pos > p.start { + cur.append(newText(p.consumeText())) + } + return nil +} + +// parseLeftDelim scans the left delimiter, which is known to be present. +func (p *Parser) parseLeftDelim(cur *ListNode) error { + p.pos += len(leftDelim) + p.consumeText() + newNode := newList() + cur.append(newNode) + cur = newNode + return p.parseInsideAction(cur) +} + +func (p *Parser) parseInsideAction(cur *ListNode) error { + prefixMap := map[string]func(*ListNode) error{ + rightDelim: p.parseRightDelim, + "[?(": p.parseFilter, + "..": p.parseRecursive, + } + for prefix, parseFunc := range prefixMap { + if strings.HasPrefix(p.input[p.pos:], prefix) { + return parseFunc(cur) + } + } + + switch r := p.next(); { + case r == eof || isEndOfLine(r): + return fmt.Errorf("unclosed action") + case r == ' ': + p.consumeText() + case r == '@' || r == '$': //the current object, just pass it + p.consumeText() + case r == '[': + return p.parseArray(cur) + case r == '"': + return p.parseQuote(cur) + case r == '.': + return p.parseField(cur) + case r == '+' || r == '-' || unicode.IsDigit(r): + p.backup() + return p.parseNumber(cur) + case isAlphaNumeric(r): + p.backup() + return p.parseIdentifier(cur) + default: + return fmt.Errorf("unrecognized character in action: %#U", r) + } + return p.parseInsideAction(cur) +} + +// parseRightDelim scans the right delimiter, which is known to be present. +func (p *Parser) parseRightDelim(cur *ListNode) error { + p.pos += len(rightDelim) + p.consumeText() + cur = p.Root + return p.parseText(cur) +} + +// parseIdentifier scans build-in keywords, like "range" "end" +func (p *Parser) parseIdentifier(cur *ListNode) error { + var r rune + for { + r = p.next() + if isTerminator(r) { + p.backup() + break + } + } + value := p.consumeText() + + if isBool(value) { + v, err := strconv.ParseBool(value) + if err != nil { + return fmt.Errorf("can not parse bool '%s': %s", value, err.Error()) + } + + cur.append(newBool(v)) + } else { + cur.append(newIdentifier(value)) + } + + return p.parseInsideAction(cur) +} + +// parseRecursive scans the recursive desent operator .. +func (p *Parser) parseRecursive(cur *ListNode) error { + p.pos += len("..") + p.consumeText() + cur.append(newRecursive()) + if r := p.peek(); isAlphaNumeric(r) { + return p.parseField(cur) + } + return p.parseInsideAction(cur) +} + +// parseNumber scans number +func (p *Parser) parseNumber(cur *ListNode) error { + r := p.peek() + if r == '+' || r == '-' { + r = p.next() + } + for { + r = p.next() + if r != '.' && !unicode.IsDigit(r) { + p.backup() + break + } + } + value := p.consumeText() + i, err := strconv.Atoi(value) + if err == nil { + cur.append(newInt(i)) + return p.parseInsideAction(cur) + } + d, err := strconv.ParseFloat(value, 64) + if err == nil { + cur.append(newFloat(d)) + return p.parseInsideAction(cur) + } + return fmt.Errorf("cannot parse number %s", value) +} + +// parseArray scans array index selection +func (p *Parser) parseArray(cur *ListNode) error { +Loop: + for { + switch p.next() { + case eof, '\n': + return fmt.Errorf("unterminated array") + case ']': + break Loop + } + } + text := p.consumeText() + text = string(text[1 : len(text)-1]) + if text == "*" { + text = ":" + } + + //union operator + strs := strings.Split(text, ",") + if len(strs) > 1 { + union := []*ListNode{} + for _, str := range strs { + parser, err := parseAction("union", fmt.Sprintf("[%s]", strings.Trim(str, " "))) + if err != nil { + return err + } + union = append(union, parser.Root) + } + cur.append(newUnion(union)) + return p.parseInsideAction(cur) + } + + // dict key + reg := regexp.MustCompile(`^'([^']*)'$`) + value := reg.FindStringSubmatch(text) + if value != nil { + parser, err := parseAction("arraydict", fmt.Sprintf(".%s", value[1])) + if err != nil { + return err + } + for _, node := range parser.Root.Nodes { + cur.append(node) + } + return p.parseInsideAction(cur) + } + + //slice operator + reg = regexp.MustCompile(`^(-?[\d]*)(:-?[\d]*)?(:[\d]*)?$`) + value = reg.FindStringSubmatch(text) + if value == nil { + return fmt.Errorf("invalid array index %s", text) + } + value = value[1:] + params := [3]ParamsEntry{} + for i := 0; i < 3; i++ { + if value[i] != "" { + if i > 0 { + value[i] = value[i][1:] + } + if i > 0 && value[i] == "" { + params[i].Known = false + } else { + var err error + params[i].Known = true + params[i].Value, err = strconv.Atoi(value[i]) + if err != nil { + return fmt.Errorf("array index %s is not a number", value[i]) + } + } + } else { + if i == 1 { + params[i].Known = true + params[i].Value = params[0].Value + 1 + } else { + params[i].Known = false + params[i].Value = 0 + } + } + } + cur.append(newArray(params)) + return p.parseInsideAction(cur) +} + +// parseFilter scans filter inside array selection +func (p *Parser) parseFilter(cur *ListNode) error { + p.pos += len("[?(") + p.consumeText() +Loop: + for { + switch p.next() { + case eof, '\n': + return fmt.Errorf("unterminated filter") + case ')': + break Loop + } + } + if p.next() != ']' { + return fmt.Errorf("unclosed array expect ]") + } + reg := regexp.MustCompile(`^([^!<>=]+)([!<>=]+)(.+?)$`) + text := p.consumeText() + text = string(text[:len(text)-2]) + value := reg.FindStringSubmatch(text) + if value == nil { + parser, err := parseAction("text", text) + if err != nil { + return err + } + cur.append(newFilter(parser.Root, newList(), "exists")) + } else { + leftParser, err := parseAction("left", value[1]) + if err != nil { + return err + } + rightParser, err := parseAction("right", value[3]) + if err != nil { + return err + } + cur.append(newFilter(leftParser.Root, rightParser.Root, value[2])) + } + return p.parseInsideAction(cur) +} + +// parseQuote unquotes string inside double quote +func (p *Parser) parseQuote(cur *ListNode) error { +Loop: + for { + switch p.next() { + case eof, '\n': + return fmt.Errorf("unterminated quoted string") + case '"': + break Loop + } + } + value := p.consumeText() + s, err := strconv.Unquote(value) + if err != nil { + return fmt.Errorf("unquote string %s error %v", value, err) + } + cur.append(newText(s)) + return p.parseInsideAction(cur) +} + +// parseField scans a field until a terminator +func (p *Parser) parseField(cur *ListNode) error { + p.consumeText() + for p.advance() { + } + value := p.consumeText() + if value == "*" { + cur.append(newWildcard()) + } else { + cur.append(newField(strings.Replace(value, "\\", "", -1))) + } + return p.parseInsideAction(cur) +} + +// advance scans until next non-escaped terminator +func (p *Parser) advance() bool { + r := p.next() + if r == '\\' { + p.next() + } else if isTerminator(r) { + p.backup() + return false + } + return true +} + +// isTerminator reports whether the input is at valid termination character to appear after an identifier. +func isTerminator(r rune) bool { + if isSpace(r) || isEndOfLine(r) { + return true + } + switch r { + case eof, '.', ',', '[', ']', '$', '@', '{', '}': + return true + } + return false +} + +// isSpace reports whether r is a space character. +func isSpace(r rune) bool { + return r == ' ' || r == '\t' +} + +// isEndOfLine reports whether r is an end-of-line character. +func isEndOfLine(r rune) bool { + return r == '\r' || r == '\n' +} + +// isAlphaNumeric reports whether r is an alphabetic, digit, or underscore. +func isAlphaNumeric(r rune) bool { + return r == '_' || unicode.IsLetter(r) || unicode.IsDigit(r) +} + +// isBool reports whether s is a boolean value. +func isBool(s string) bool { + return s == "true" || s == "false" +} diff --git a/vendor/k8s.io/client-go/util/jsonpath/parser_test.go b/vendor/k8s.io/client-go/util/jsonpath/parser_test.go new file mode 100644 index 000000000..48dd4f610 --- /dev/null +++ b/vendor/k8s.io/client-go/util/jsonpath/parser_test.go @@ -0,0 +1,136 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package jsonpath + +import ( + "testing" +) + +type parserTest struct { + name string + text string + nodes []Node + shouldError bool +} + +var parserTests = []parserTest{ + {"plain", `hello jsonpath`, []Node{newText("hello jsonpath")}, false}, + {"variable", `hello {.jsonpath}`, + []Node{newText("hello "), newList(), newField("jsonpath")}, false}, + {"arrayfiled", `hello {['jsonpath']}`, + []Node{newText("hello "), newList(), newField("jsonpath")}, false}, + {"quote", `{"{"}`, []Node{newList(), newText("{")}, false}, + {"array", `{[1:3]}`, []Node{newList(), + newArray([3]ParamsEntry{{1, true}, {3, true}, {0, false}})}, false}, + {"allarray", `{.book[*].author}`, + []Node{newList(), newField("book"), + newArray([3]ParamsEntry{{0, false}, {0, false}, {0, false}}), newField("author")}, false}, + {"wildcard", `{.bicycle.*}`, + []Node{newList(), newField("bicycle"), newWildcard()}, false}, + {"filter", `{[?(@.price<3)]}`, + []Node{newList(), newFilter(newList(), newList(), "<"), + newList(), newField("price"), newList(), newInt(3)}, false}, + {"recursive", `{..}`, []Node{newList(), newRecursive()}, false}, + {"recurField", `{..price}`, + []Node{newList(), newRecursive(), newField("price")}, false}, + {"arraydict", `{['book.price']}`, []Node{newList(), + newField("book"), newField("price"), + }, false}, + {"union", `{['bicycle.price', 3, 'book.price']}`, []Node{newList(), newUnion([]*ListNode{}), + newList(), newField("bicycle"), newField("price"), + newList(), newArray([3]ParamsEntry{{3, true}, {4, true}, {0, false}}), + newList(), newField("book"), newField("price"), + }, false}, + {"range", `{range .items}{.name},{end}`, []Node{ + newList(), newIdentifier("range"), newField("items"), + newList(), newField("name"), newText(","), + newList(), newIdentifier("end"), + }, false}, + {"malformat input", `{\\\}`, []Node{}, true}, +} + +func collectNode(nodes []Node, cur Node) []Node { + nodes = append(nodes, cur) + switch cur.Type() { + case NodeList: + for _, node := range cur.(*ListNode).Nodes { + nodes = collectNode(nodes, node) + } + case NodeFilter: + nodes = collectNode(nodes, cur.(*FilterNode).Left) + nodes = collectNode(nodes, cur.(*FilterNode).Right) + case NodeUnion: + for _, node := range cur.(*UnionNode).Nodes { + nodes = collectNode(nodes, node) + } + } + return nodes +} + +func TestParser(t *testing.T) { + for _, test := range parserTests { + parser, err := Parse(test.name, test.text) + if test.shouldError { + if err == nil { + t.Errorf("unexpected non-error when parsing %s", test.name) + } + continue + } + if err != nil { + t.Errorf("parse %s error %v", test.name, err) + } + result := collectNode([]Node{}, parser.Root)[1:] + if len(result) != len(test.nodes) { + t.Errorf("in %s, expect to get %d nodes, got %d nodes", test.name, len(test.nodes), len(result)) + t.Error(result) + } + for i, expect := range test.nodes { + if result[i].String() != expect.String() { + t.Errorf("in %s, %dth node, expect %v, got %v", test.name, i, expect, result[i]) + } + } + } +} + +type failParserTest struct { + name string + text string + err string +} + +func TestFailParser(t *testing.T) { + failParserTests := []failParserTest{ + {"unclosed action", "{.hello", "unclosed action"}, + {"unrecognized character", "{*}", "unrecognized character in action: U+002A '*'"}, + {"invalid number", "{+12.3.0}", "cannot parse number +12.3.0"}, + {"unterminated array", "{[1}", "unterminated array"}, + {"invalid index", "{[::-1]}", "invalid array index ::-1"}, + {"unterminated filter", "{[?(.price]}", "unterminated filter"}, + } + for _, test := range failParserTests { + _, err := Parse(test.name, test.text) + var out string + if err == nil { + out = "nil" + } else { + out = err.Error() + } + if out != test.err { + t.Errorf("in %s, expect to get error %v, got %v", test.name, test.err, out) + } + } +} diff --git a/vendor/k8s.io/client-go/util/testing/BUILD b/vendor/k8s.io/client-go/util/testing/BUILD new file mode 100644 index 000000000..05c7786ee --- /dev/null +++ b/vendor/k8s.io/client-go/util/testing/BUILD @@ -0,0 +1,25 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = ["fake_handler_test.go"], + library = ":go_default_library", + tags = ["automanaged"], +) + +go_library( + name = "go_default_library", + srcs = [ + "fake_handler.go", + "tmpdir.go", + ], + tags = ["automanaged"], +) diff --git a/vendor/k8s.io/client-go/util/testing/fake_handler.go b/vendor/k8s.io/client-go/util/testing/fake_handler.go new file mode 100644 index 000000000..6790cfd8c --- /dev/null +++ b/vendor/k8s.io/client-go/util/testing/fake_handler.go @@ -0,0 +1,139 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "io/ioutil" + "net/http" + "net/url" + "reflect" + "sync" +) + +// TestInterface is a simple interface providing Errorf, to make injection for +// testing easier (insert 'yo dawg' meme here). +type TestInterface interface { + Errorf(format string, args ...interface{}) + Logf(format string, args ...interface{}) +} + +// LogInterface is a simple interface to allow injection of Logf to report serving errors. +type LogInterface interface { + Logf(format string, args ...interface{}) +} + +// FakeHandler is to assist in testing HTTP requests. Notice that FakeHandler is +// not thread safe and you must not direct traffic to except for the request +// you want to test. You can do this by hiding it in an http.ServeMux. +type FakeHandler struct { + RequestReceived *http.Request + RequestBody string + StatusCode int + ResponseBody string + // For logging - you can use a *testing.T + // This will keep log messages associated with the test. + T LogInterface + + // Enforce "only one use" constraint. + lock sync.Mutex + requestCount int + hasBeenChecked bool + + SkipRequestFn func(verb string, url url.URL) bool +} + +func (f *FakeHandler) SetResponseBody(responseBody string) { + f.lock.Lock() + defer f.lock.Unlock() + f.ResponseBody = responseBody +} + +func (f *FakeHandler) ServeHTTP(response http.ResponseWriter, request *http.Request) { + f.lock.Lock() + defer f.lock.Unlock() + + if f.SkipRequestFn != nil && f.SkipRequestFn(request.Method, *request.URL) { + response.Header().Set("Content-Type", "application/json") + response.WriteHeader(f.StatusCode) + response.Write([]byte(f.ResponseBody)) + return + } + + f.requestCount++ + if f.hasBeenChecked { + panic("got request after having been validated") + } + + f.RequestReceived = request + response.Header().Set("Content-Type", "application/json") + response.WriteHeader(f.StatusCode) + response.Write([]byte(f.ResponseBody)) + + bodyReceived, err := ioutil.ReadAll(request.Body) + if err != nil && f.T != nil { + f.T.Logf("Received read error: %v", err) + } + f.RequestBody = string(bodyReceived) + if f.T != nil { + f.T.Logf("request body: %s", f.RequestBody) + } +} + +func (f *FakeHandler) ValidateRequestCount(t TestInterface, count int) bool { + ok := true + f.lock.Lock() + defer f.lock.Unlock() + if f.requestCount != count { + ok = false + t.Errorf("Expected %d call, but got %d. Only the last call is recorded and checked.", count, f.requestCount) + } + f.hasBeenChecked = true + return ok +} + +// ValidateRequest verifies that FakeHandler received a request with expected path, method, and body. +func (f *FakeHandler) ValidateRequest(t TestInterface, expectedPath, expectedMethod string, body *string) { + f.lock.Lock() + defer f.lock.Unlock() + if f.requestCount != 1 { + t.Logf("Expected 1 call, but got %v. Only the last call is recorded and checked.", f.requestCount) + } + f.hasBeenChecked = true + + expectURL, err := url.Parse(expectedPath) + if err != nil { + t.Errorf("Couldn't parse %v as a URL.", expectedPath) + } + if f.RequestReceived == nil { + t.Errorf("Unexpected nil request received for %s", expectedPath) + return + } + if f.RequestReceived.URL.Path != expectURL.Path { + t.Errorf("Unexpected request path for request %#v, received: %q, expected: %q", f.RequestReceived, f.RequestReceived.URL.Path, expectURL.Path) + } + if e, a := expectURL.Query(), f.RequestReceived.URL.Query(); !reflect.DeepEqual(e, a) { + t.Errorf("Unexpected query for request %#v, received: %q, expected: %q", f.RequestReceived, a, e) + } + if f.RequestReceived.Method != expectedMethod { + t.Errorf("Unexpected method: %q, expected: %q", f.RequestReceived.Method, expectedMethod) + } + if body != nil { + if *body != f.RequestBody { + t.Errorf("Received body:\n%s\n Doesn't match expected body:\n%s", f.RequestBody, *body) + } + } +} diff --git a/vendor/k8s.io/client-go/util/testing/fake_handler_test.go b/vendor/k8s.io/client-go/util/testing/fake_handler_test.go new file mode 100644 index 000000000..0d2c3e42f --- /dev/null +++ b/vendor/k8s.io/client-go/util/testing/fake_handler_test.go @@ -0,0 +1,180 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "bytes" + "net/http" + "net/http/httptest" + "testing" +) + +func TestFakeHandlerPath(t *testing.T) { + handler := FakeHandler{StatusCode: http.StatusOK} + server := httptest.NewServer(&handler) + defer server.Close() + method := "GET" + path := "/foo/bar" + body := "somebody" + + req, err := http.NewRequest(method, server.URL+path, bytes.NewBufferString(body)) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + client := http.Client{} + _, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + handler.ValidateRequest(t, path, method, &body) +} + +func TestFakeHandlerPathNoBody(t *testing.T) { + handler := FakeHandler{StatusCode: http.StatusOK} + server := httptest.NewServer(&handler) + defer server.Close() + method := "GET" + path := "/foo/bar" + + req, err := http.NewRequest(method, server.URL+path, nil) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + client := http.Client{} + _, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + handler.ValidateRequest(t, path, method, nil) +} + +type fakeError struct { + errors []string +} + +func (f *fakeError) Errorf(format string, args ...interface{}) { + f.errors = append(f.errors, format) +} + +func (f *fakeError) Logf(format string, args ...interface{}) {} + +func TestFakeHandlerWrongPath(t *testing.T) { + handler := FakeHandler{StatusCode: http.StatusOK} + server := httptest.NewServer(&handler) + defer server.Close() + method := "GET" + path := "/foo/bar" + fakeT := fakeError{} + + req, err := http.NewRequest(method, server.URL+"/foo/baz", nil) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + client := http.Client{} + _, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + handler.ValidateRequest(&fakeT, path, method, nil) + if len(fakeT.errors) != 1 { + t.Errorf("Unexpected error set: %#v", fakeT.errors) + } +} + +func TestFakeHandlerWrongMethod(t *testing.T) { + handler := FakeHandler{StatusCode: http.StatusOK} + server := httptest.NewServer(&handler) + defer server.Close() + method := "GET" + path := "/foo/bar" + fakeT := fakeError{} + + req, err := http.NewRequest("PUT", server.URL+path, nil) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + client := http.Client{} + _, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + handler.ValidateRequest(&fakeT, path, method, nil) + if len(fakeT.errors) != 1 { + t.Errorf("Unexpected error set: %#v", fakeT.errors) + } +} + +func TestFakeHandlerWrongBody(t *testing.T) { + handler := FakeHandler{StatusCode: http.StatusOK} + server := httptest.NewServer(&handler) + defer server.Close() + method := "GET" + path := "/foo/bar" + body := "somebody" + fakeT := fakeError{} + + req, err := http.NewRequest(method, server.URL+path, bytes.NewBufferString(body)) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + client := http.Client{} + _, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + otherbody := "otherbody" + handler.ValidateRequest(&fakeT, path, method, &otherbody) + if len(fakeT.errors) != 1 { + t.Errorf("Unexpected error set: %#v", fakeT.errors) + } +} + +func TestFakeHandlerNilBody(t *testing.T) { + handler := FakeHandler{StatusCode: http.StatusOK} + server := httptest.NewServer(&handler) + defer server.Close() + method := "GET" + path := "/foo/bar" + body := "somebody" + fakeT := fakeError{} + + req, err := http.NewRequest(method, server.URL+path, nil) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + client := http.Client{} + _, err = client.Do(req) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + + handler.ValidateRequest(&fakeT, path, method, &body) + if len(fakeT.errors) != 1 { + t.Errorf("Unexpected error set: %#v", fakeT.errors) + } +} diff --git a/vendor/k8s.io/client-go/util/testing/tmpdir.go b/vendor/k8s.io/client-go/util/testing/tmpdir.go new file mode 100644 index 000000000..3b2d885fc --- /dev/null +++ b/vendor/k8s.io/client-go/util/testing/tmpdir.go @@ -0,0 +1,44 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package testing + +import ( + "io/ioutil" + "os" +) + +// MkTmpdir creates a temporary directory based upon the prefix passed in. +// If successful, it returns the temporary directory path. The directory can be +// deleted with a call to "os.RemoveAll(...)". +// In case of error, it'll return an empty string and the error. +func MkTmpdir(prefix string) (string, error) { + tmpDir, err := ioutil.TempDir(os.TempDir(), prefix) + if err != nil { + return "", err + } + return tmpDir, nil +} + +// MkTmpdir does the same work as "MkTmpdir", except in case of +// errors, it'll trigger a panic. +func MkTmpdirOrDie(prefix string) string { + tmpDir, err := MkTmpdir(prefix) + if err != nil { + panic(err) + } + return tmpDir +} diff --git a/vendor/k8s.io/client-go/util/workqueue/BUILD b/vendor/k8s.io/client-go/util/workqueue/BUILD new file mode 100644 index 000000000..506bc8883 --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/BUILD @@ -0,0 +1,50 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_library", + "go_test", +) + +go_test( + name = "go_default_test", + srcs = [ + "default_rate_limiters_test.go", + "delaying_queue_test.go", + "rate_limitting_queue_test.go", + ], + library = ":go_default_library", + tags = ["automanaged"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = [ + "default_rate_limiters.go", + "delaying_queue.go", + "doc.go", + "metrics.go", + "parallelizer.go", + "queue.go", + "rate_limitting_queue.go", + ], + tags = ["automanaged"], + deps = [ + "//vendor/github.com/juju/ratelimit:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/clock:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", + ], +) + +go_test( + name = "go_default_xtest", + srcs = ["queue_test.go"], + tags = ["automanaged"], + deps = ["//vendor/k8s.io/client-go/util/workqueue:go_default_library"], +) diff --git a/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go new file mode 100644 index 000000000..35caed4fa --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters.go @@ -0,0 +1,211 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "math" + "sync" + "time" + + "github.com/juju/ratelimit" +) + +type RateLimiter interface { + // When gets an item and gets to decide how long that item should wait + When(item interface{}) time.Duration + // Forget indicates that an item is finished being retried. Doesn't matter whether its for perm failing + // or for success, we'll stop tracking it + Forget(item interface{}) + // NumRequeues returns back how many failures the item has had + NumRequeues(item interface{}) int +} + +// DefaultControllerRateLimiter is a no-arg constructor for a default rate limiter for a workqueue. It has +// both overall and per-item rate limitting. The overall is a token bucket and the per-item is exponential +func DefaultControllerRateLimiter() RateLimiter { + return NewMaxOfRateLimiter( + NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second), + // 10 qps, 100 bucket size. This is only for retry speed and its only the overall factor (not per item) + &BucketRateLimiter{Bucket: ratelimit.NewBucketWithRate(float64(10), int64(100))}, + ) +} + +// BucketRateLimiter adapts a standard bucket to the workqueue ratelimiter API +type BucketRateLimiter struct { + *ratelimit.Bucket +} + +var _ RateLimiter = &BucketRateLimiter{} + +func (r *BucketRateLimiter) When(item interface{}) time.Duration { + return r.Bucket.Take(1) +} + +func (r *BucketRateLimiter) NumRequeues(item interface{}) int { + return 0 +} + +func (r *BucketRateLimiter) Forget(item interface{}) { +} + +// ItemExponentialFailureRateLimiter does a simple baseDelay*10^ limit +// dealing with max failures and expiration are up to the caller +type ItemExponentialFailureRateLimiter struct { + failuresLock sync.Mutex + failures map[interface{}]int + + baseDelay time.Duration + maxDelay time.Duration +} + +var _ RateLimiter = &ItemExponentialFailureRateLimiter{} + +func NewItemExponentialFailureRateLimiter(baseDelay time.Duration, maxDelay time.Duration) RateLimiter { + return &ItemExponentialFailureRateLimiter{ + failures: map[interface{}]int{}, + baseDelay: baseDelay, + maxDelay: maxDelay, + } +} + +func DefaultItemBasedRateLimiter() RateLimiter { + return NewItemExponentialFailureRateLimiter(time.Millisecond, 1000*time.Second) +} + +func (r *ItemExponentialFailureRateLimiter) When(item interface{}) time.Duration { + r.failuresLock.Lock() + defer r.failuresLock.Unlock() + + exp := r.failures[item] + r.failures[item] = r.failures[item] + 1 + + // The backoff is capped such that 'calculated' value never overflows. + backoff := float64(r.baseDelay.Nanoseconds()) * math.Pow(2, float64(exp)) + if backoff > math.MaxInt64 { + return r.maxDelay + } + + calculated := time.Duration(backoff) + if calculated > r.maxDelay { + return r.maxDelay + } + + return calculated +} + +func (r *ItemExponentialFailureRateLimiter) NumRequeues(item interface{}) int { + r.failuresLock.Lock() + defer r.failuresLock.Unlock() + + return r.failures[item] +} + +func (r *ItemExponentialFailureRateLimiter) Forget(item interface{}) { + r.failuresLock.Lock() + defer r.failuresLock.Unlock() + + delete(r.failures, item) +} + +// ItemFastSlowRateLimiter does a quick retry for a certain number of attempts, then a slow retry after that +type ItemFastSlowRateLimiter struct { + failuresLock sync.Mutex + failures map[interface{}]int + + maxFastAttempts int + fastDelay time.Duration + slowDelay time.Duration +} + +var _ RateLimiter = &ItemFastSlowRateLimiter{} + +func NewItemFastSlowRateLimiter(fastDelay, slowDelay time.Duration, maxFastAttempts int) RateLimiter { + return &ItemFastSlowRateLimiter{ + failures: map[interface{}]int{}, + fastDelay: fastDelay, + slowDelay: slowDelay, + maxFastAttempts: maxFastAttempts, + } +} + +func (r *ItemFastSlowRateLimiter) When(item interface{}) time.Duration { + r.failuresLock.Lock() + defer r.failuresLock.Unlock() + + r.failures[item] = r.failures[item] + 1 + + if r.failures[item] <= r.maxFastAttempts { + return r.fastDelay + } + + return r.slowDelay +} + +func (r *ItemFastSlowRateLimiter) NumRequeues(item interface{}) int { + r.failuresLock.Lock() + defer r.failuresLock.Unlock() + + return r.failures[item] +} + +func (r *ItemFastSlowRateLimiter) Forget(item interface{}) { + r.failuresLock.Lock() + defer r.failuresLock.Unlock() + + delete(r.failures, item) +} + +// MaxOfRateLimiter calls every RateLimiter and returns the worst case response +// When used with a token bucket limiter, the burst could be apparently exceeded in cases where particular items +// were separately delayed a longer time. +type MaxOfRateLimiter struct { + limiters []RateLimiter +} + +func (r *MaxOfRateLimiter) When(item interface{}) time.Duration { + ret := time.Duration(0) + for _, limiter := range r.limiters { + curr := limiter.When(item) + if curr > ret { + ret = curr + } + } + + return ret +} + +func NewMaxOfRateLimiter(limiters ...RateLimiter) RateLimiter { + return &MaxOfRateLimiter{limiters: limiters} +} + +func (r *MaxOfRateLimiter) NumRequeues(item interface{}) int { + ret := 0 + for _, limiter := range r.limiters { + curr := limiter.NumRequeues(item) + if curr > ret { + ret = curr + } + } + + return ret +} + +func (r *MaxOfRateLimiter) Forget(item interface{}) { + for _, limiter := range r.limiters { + limiter.Forget(item) + } +} diff --git a/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters_test.go b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters_test.go new file mode 100644 index 000000000..91d34a317 --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/default_rate_limiters_test.go @@ -0,0 +1,184 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "testing" + "time" +) + +func TestItemExponentialFailureRateLimiter(t *testing.T) { + limiter := NewItemExponentialFailureRateLimiter(1*time.Millisecond, 1*time.Second) + + if e, a := 1*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 2*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 4*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 8*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 16*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5, limiter.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + if e, a := 1*time.Millisecond, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 2*time.Millisecond, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 2, limiter.NumRequeues("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + limiter.Forget("one") + if e, a := 0, limiter.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 1*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + +} + +func TestItemExponentialFailureRateLimiterOverFlow(t *testing.T) { + limiter := NewItemExponentialFailureRateLimiter(1*time.Millisecond, 1000*time.Second) + for i := 0; i < 5; i++ { + limiter.When("one") + } + if e, a := 32*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + for i := 0; i < 1000; i++ { + limiter.When("overflow1") + } + if e, a := 1000*time.Second, limiter.When("overflow1"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + limiter = NewItemExponentialFailureRateLimiter(1*time.Minute, 1000*time.Hour) + for i := 0; i < 2; i++ { + limiter.When("two") + } + if e, a := 4*time.Minute, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + for i := 0; i < 1000; i++ { + limiter.When("overflow2") + } + if e, a := 1000*time.Hour, limiter.When("overflow2"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + +} + +func TestItemFastSlowRateLimiter(t *testing.T) { + limiter := NewItemFastSlowRateLimiter(5*time.Millisecond, 10*time.Second, 3) + + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 10*time.Second, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 10*time.Second, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5, limiter.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + if e, a := 5*time.Millisecond, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 2, limiter.NumRequeues("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + limiter.Forget("one") + if e, a := 0, limiter.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + +} + +func TestMaxOfRateLimiter(t *testing.T) { + limiter := NewMaxOfRateLimiter( + NewItemFastSlowRateLimiter(5*time.Millisecond, 3*time.Second, 3), + NewItemExponentialFailureRateLimiter(1*time.Millisecond, 1*time.Second), + ) + + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 3*time.Second, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 3*time.Second, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5, limiter.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + if e, a := 5*time.Millisecond, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 2, limiter.NumRequeues("two"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + limiter.Forget("one") + if e, a := 0, limiter.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 5*time.Millisecond, limiter.When("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + +} diff --git a/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go b/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go new file mode 100644 index 000000000..74fefd38b --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/delaying_queue.go @@ -0,0 +1,257 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "container/heap" + "time" + + "k8s.io/apimachinery/pkg/util/clock" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +// DelayingInterface is an Interface that can Add an item at a later time. This makes it easier to +// requeue items after failures without ending up in a hot-loop. +type DelayingInterface interface { + Interface + // AddAfter adds an item to the workqueue after the indicated duration has passed + AddAfter(item interface{}, duration time.Duration) +} + +// NewDelayingQueue constructs a new workqueue with delayed queuing ability +func NewDelayingQueue() DelayingInterface { + return newDelayingQueue(clock.RealClock{}, "") +} + +func NewNamedDelayingQueue(name string) DelayingInterface { + return newDelayingQueue(clock.RealClock{}, name) +} + +func newDelayingQueue(clock clock.Clock, name string) DelayingInterface { + ret := &delayingType{ + Interface: NewNamed(name), + clock: clock, + heartbeat: clock.Tick(maxWait), + stopCh: make(chan struct{}), + waitingForAddCh: make(chan *waitFor, 1000), + metrics: newRetryMetrics(name), + } + + go ret.waitingLoop() + + return ret +} + +// delayingType wraps an Interface and provides delayed re-enquing +type delayingType struct { + Interface + + // clock tracks time for delayed firing + clock clock.Clock + + // stopCh lets us signal a shutdown to the waiting loop + stopCh chan struct{} + + // heartbeat ensures we wait no more than maxWait before firing + // + // TODO: replace with Ticker (and add to clock) so this can be cleaned up. + // clock.Tick will leak. + heartbeat <-chan time.Time + + // waitingForAddCh is a buffered channel that feeds waitingForAdd + waitingForAddCh chan *waitFor + + // metrics counts the number of retries + metrics retryMetrics +} + +// waitFor holds the data to add and the time it should be added +type waitFor struct { + data t + readyAt time.Time + // index in the priority queue (heap) + index int +} + +// waitForPriorityQueue implements a priority queue for waitFor items. +// +// waitForPriorityQueue implements heap.Interface. The item occuring next in +// time (i.e., the item with the smallest readyAt) is at the root (index 0). +// Peek returns this minimum item at index 0. Pop returns the minimum item after +// it has been removed from the queue and placed at index Len()-1 by +// container/heap. Push adds an item at index Len(), and container/heap +// percolates it into the correct location. +type waitForPriorityQueue []*waitFor + +func (pq waitForPriorityQueue) Len() int { + return len(pq) +} +func (pq waitForPriorityQueue) Less(i, j int) bool { + return pq[i].readyAt.Before(pq[j].readyAt) +} +func (pq waitForPriorityQueue) Swap(i, j int) { + pq[i], pq[j] = pq[j], pq[i] + pq[i].index = i + pq[j].index = j +} + +// Push adds an item to the queue. Push should not be called directly; instead, +// use `heap.Push`. +func (pq *waitForPriorityQueue) Push(x interface{}) { + n := len(*pq) + item := x.(*waitFor) + item.index = n + *pq = append(*pq, item) +} + +// Pop removes an item from the queue. Pop should not be called directly; +// instead, use `heap.Pop`. +func (pq *waitForPriorityQueue) Pop() interface{} { + n := len(*pq) + item := (*pq)[n-1] + item.index = -1 + *pq = (*pq)[0:(n - 1)] + return item +} + +// Peek returns the item at the beginning of the queue, without removing the +// item or otherwise mutating the queue. It is safe to call directly. +func (pq waitForPriorityQueue) Peek() interface{} { + return pq[0] +} + +// ShutDown gives a way to shut off this queue +func (q *delayingType) ShutDown() { + q.Interface.ShutDown() + close(q.stopCh) +} + +// AddAfter adds the given item to the work queue after the given delay +func (q *delayingType) AddAfter(item interface{}, duration time.Duration) { + // don't add if we're already shutting down + if q.ShuttingDown() { + return + } + + q.metrics.retry() + + // immediately add things with no delay + if duration <= 0 { + q.Add(item) + return + } + + select { + case <-q.stopCh: + // unblock if ShutDown() is called + case q.waitingForAddCh <- &waitFor{data: item, readyAt: q.clock.Now().Add(duration)}: + } +} + +// maxWait keeps a max bound on the wait time. It's just insurance against weird things happening. +// Checking the queue every 10 seconds isn't expensive and we know that we'll never end up with an +// expired item sitting for more than 10 seconds. +const maxWait = 10 * time.Second + +// waitingLoop runs until the workqueue is shutdown and keeps a check on the list of items to be added. +func (q *delayingType) waitingLoop() { + defer utilruntime.HandleCrash() + + // Make a placeholder channel to use when there are no items in our list + never := make(<-chan time.Time) + + waitingForQueue := &waitForPriorityQueue{} + heap.Init(waitingForQueue) + + waitingEntryByData := map[t]*waitFor{} + + for { + if q.Interface.ShuttingDown() { + return + } + + now := q.clock.Now() + + // Add ready entries + for waitingForQueue.Len() > 0 { + entry := waitingForQueue.Peek().(*waitFor) + if entry.readyAt.After(now) { + break + } + + entry = heap.Pop(waitingForQueue).(*waitFor) + q.Add(entry.data) + delete(waitingEntryByData, entry.data) + } + + // Set up a wait for the first item's readyAt (if one exists) + nextReadyAt := never + if waitingForQueue.Len() > 0 { + entry := waitingForQueue.Peek().(*waitFor) + nextReadyAt = q.clock.After(entry.readyAt.Sub(now)) + } + + select { + case <-q.stopCh: + return + + case <-q.heartbeat: + // continue the loop, which will add ready items + + case <-nextReadyAt: + // continue the loop, which will add ready items + + case waitEntry := <-q.waitingForAddCh: + if waitEntry.readyAt.After(q.clock.Now()) { + insert(waitingForQueue, waitingEntryByData, waitEntry) + } else { + q.Add(waitEntry.data) + } + + drained := false + for !drained { + select { + case waitEntry := <-q.waitingForAddCh: + if waitEntry.readyAt.After(q.clock.Now()) { + insert(waitingForQueue, waitingEntryByData, waitEntry) + } else { + q.Add(waitEntry.data) + } + default: + drained = true + } + } + } + } +} + +// insert adds the entry to the priority queue, or updates the readyAt if it already exists in the queue +func insert(q *waitForPriorityQueue, knownEntries map[t]*waitFor, entry *waitFor) { + // if the entry already exists, update the time only if it would cause the item to be queued sooner + existing, exists := knownEntries[entry.data] + if exists { + if existing.readyAt.After(entry.readyAt) { + existing.readyAt = entry.readyAt + heap.Fix(q, existing.index) + } + + return + } + + heap.Push(q, entry) + knownEntries[entry.data] = entry +} diff --git a/vendor/k8s.io/client-go/util/workqueue/delaying_queue_test.go b/vendor/k8s.io/client-go/util/workqueue/delaying_queue_test.go new file mode 100644 index 000000000..3c8ebf13a --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/delaying_queue_test.go @@ -0,0 +1,255 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "fmt" + "math/rand" + "reflect" + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/apimachinery/pkg/util/wait" +) + +func TestSimpleQueue(t *testing.T) { + fakeClock := clock.NewFakeClock(time.Now()) + q := newDelayingQueue(fakeClock, "") + + first := "foo" + + q.AddAfter(first, 50*time.Millisecond) + if err := waitForWaitingQueueToFill(q); err != nil { + t.Fatalf("unexpected err: %v", err) + } + + if q.Len() != 0 { + t.Errorf("should not have added") + } + + fakeClock.Step(60 * time.Millisecond) + + if err := waitForAdded(q, 1); err != nil { + t.Errorf("should have added") + } + item, _ := q.Get() + q.Done(item) + + // step past the next heartbeat + fakeClock.Step(10 * time.Second) + + err := wait.Poll(1*time.Millisecond, 30*time.Millisecond, func() (done bool, err error) { + if q.Len() > 0 { + return false, fmt.Errorf("added to queue") + } + + return false, nil + }) + if err != wait.ErrWaitTimeout { + t.Errorf("expected timeout, got: %v", err) + } + + if q.Len() != 0 { + t.Errorf("should not have added") + } +} + +func TestDeduping(t *testing.T) { + fakeClock := clock.NewFakeClock(time.Now()) + q := newDelayingQueue(fakeClock, "") + + first := "foo" + + q.AddAfter(first, 50*time.Millisecond) + if err := waitForWaitingQueueToFill(q); err != nil { + t.Fatalf("unexpected err: %v", err) + } + q.AddAfter(first, 70*time.Millisecond) + if err := waitForWaitingQueueToFill(q); err != nil { + t.Fatalf("unexpected err: %v", err) + } + if q.Len() != 0 { + t.Errorf("should not have added") + } + + // step past the first block, we should receive now + fakeClock.Step(60 * time.Millisecond) + if err := waitForAdded(q, 1); err != nil { + t.Errorf("should have added") + } + item, _ := q.Get() + q.Done(item) + + // step past the second add + fakeClock.Step(20 * time.Millisecond) + if q.Len() != 0 { + t.Errorf("should not have added") + } + + // test again, but this time the earlier should override + q.AddAfter(first, 50*time.Millisecond) + q.AddAfter(first, 30*time.Millisecond) + if err := waitForWaitingQueueToFill(q); err != nil { + t.Fatalf("unexpected err: %v", err) + } + if q.Len() != 0 { + t.Errorf("should not have added") + } + + fakeClock.Step(40 * time.Millisecond) + if err := waitForAdded(q, 1); err != nil { + t.Errorf("should have added") + } + item, _ = q.Get() + q.Done(item) + + // step past the second add + fakeClock.Step(20 * time.Millisecond) + if q.Len() != 0 { + t.Errorf("should not have added") + } + if q.Len() != 0 { + t.Errorf("should not have added") + } +} + +func TestAddTwoFireEarly(t *testing.T) { + fakeClock := clock.NewFakeClock(time.Now()) + q := newDelayingQueue(fakeClock, "") + + first := "foo" + second := "bar" + third := "baz" + + q.AddAfter(first, 1*time.Second) + q.AddAfter(second, 50*time.Millisecond) + if err := waitForWaitingQueueToFill(q); err != nil { + t.Fatalf("unexpected err: %v", err) + } + + if q.Len() != 0 { + t.Errorf("should not have added") + } + + fakeClock.Step(60 * time.Millisecond) + + if err := waitForAdded(q, 1); err != nil { + t.Fatalf("unexpected err: %v", err) + } + item, _ := q.Get() + if !reflect.DeepEqual(item, second) { + t.Errorf("expected %v, got %v", second, item) + } + + q.AddAfter(third, 2*time.Second) + + fakeClock.Step(1 * time.Second) + if err := waitForAdded(q, 1); err != nil { + t.Fatalf("unexpected err: %v", err) + } + item, _ = q.Get() + if !reflect.DeepEqual(item, first) { + t.Errorf("expected %v, got %v", first, item) + } + + fakeClock.Step(2 * time.Second) + if err := waitForAdded(q, 1); err != nil { + t.Fatalf("unexpected err: %v", err) + } + item, _ = q.Get() + if !reflect.DeepEqual(item, third) { + t.Errorf("expected %v, got %v", third, item) + } +} + +func TestCopyShifting(t *testing.T) { + fakeClock := clock.NewFakeClock(time.Now()) + q := newDelayingQueue(fakeClock, "") + + first := "foo" + second := "bar" + third := "baz" + + q.AddAfter(first, 1*time.Second) + q.AddAfter(second, 500*time.Millisecond) + q.AddAfter(third, 250*time.Millisecond) + if err := waitForWaitingQueueToFill(q); err != nil { + t.Fatalf("unexpected err: %v", err) + } + + if q.Len() != 0 { + t.Errorf("should not have added") + } + + fakeClock.Step(2 * time.Second) + + if err := waitForAdded(q, 3); err != nil { + t.Fatalf("unexpected err: %v", err) + } + actualFirst, _ := q.Get() + if !reflect.DeepEqual(actualFirst, third) { + t.Errorf("expected %v, got %v", third, actualFirst) + } + actualSecond, _ := q.Get() + if !reflect.DeepEqual(actualSecond, second) { + t.Errorf("expected %v, got %v", second, actualSecond) + } + actualThird, _ := q.Get() + if !reflect.DeepEqual(actualThird, first) { + t.Errorf("expected %v, got %v", first, actualThird) + } +} + +func BenchmarkDelayingQueue_AddAfter(b *testing.B) { + r := rand.New(rand.NewSource(time.Now().Unix())) + + fakeClock := clock.NewFakeClock(time.Now()) + q := newDelayingQueue(fakeClock, "") + + // Add items + for n := 0; n < b.N; n++ { + data := fmt.Sprintf("%d", n) + q.AddAfter(data, time.Duration(r.Int63n(int64(10*time.Minute)))) + } + + // Exercise item removal as well + fakeClock.Step(11 * time.Minute) + for n := 0; n < b.N; n++ { + _, _ = q.Get() + } +} + +func waitForAdded(q DelayingInterface, depth int) error { + return wait.Poll(1*time.Millisecond, 10*time.Second, func() (done bool, err error) { + if q.Len() == depth { + return true, nil + } + + return false, nil + }) +} + +func waitForWaitingQueueToFill(q DelayingInterface) error { + return wait.Poll(1*time.Millisecond, 10*time.Second, func() (done bool, err error) { + if len(q.(*delayingType).waitingForAddCh) == 0 { + return true, nil + } + + return false, nil + }) +} diff --git a/vendor/k8s.io/client-go/util/workqueue/doc.go b/vendor/k8s.io/client-go/util/workqueue/doc.go new file mode 100644 index 000000000..2a00c74ac --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/doc.go @@ -0,0 +1,26 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package workqueue provides a simple queue that supports the following +// features: +// * Fair: items processed in the order in which they are added. +// * Stingy: a single item will not be processed multiple times concurrently, +// and if an item is added multiple times before it can be processed, it +// will only be processed once. +// * Multiple consumers and producers. In particular, it is allowed for an +// item to be reenqueued while it is being processed. +// * Shutdown notifications. +package workqueue diff --git a/vendor/k8s.io/client-go/util/workqueue/metrics.go b/vendor/k8s.io/client-go/util/workqueue/metrics.go new file mode 100644 index 000000000..a481bdfb2 --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/metrics.go @@ -0,0 +1,195 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "sync" + "time" +) + +// This file provides abstractions for setting the provider (e.g., prometheus) +// of metrics. + +type queueMetrics interface { + add(item t) + get(item t) + done(item t) +} + +// GaugeMetric represents a single numerical value that can arbitrarily go up +// and down. +type GaugeMetric interface { + Inc() + Dec() +} + +// CounterMetric represents a single numerical value that only ever +// goes up. +type CounterMetric interface { + Inc() +} + +// SummaryMetric captures individual observations. +type SummaryMetric interface { + Observe(float64) +} + +type noopMetric struct{} + +func (noopMetric) Inc() {} +func (noopMetric) Dec() {} +func (noopMetric) Observe(float64) {} + +type defaultQueueMetrics struct { + // current depth of a workqueue + depth GaugeMetric + // total number of adds handled by a workqueue + adds CounterMetric + // how long an item stays in a workqueue + latency SummaryMetric + // how long processing an item from a workqueue takes + workDuration SummaryMetric + addTimes map[t]time.Time + processingStartTimes map[t]time.Time +} + +func (m *defaultQueueMetrics) add(item t) { + if m == nil { + return + } + + m.adds.Inc() + m.depth.Inc() + if _, exists := m.addTimes[item]; !exists { + m.addTimes[item] = time.Now() + } +} + +func (m *defaultQueueMetrics) get(item t) { + if m == nil { + return + } + + m.depth.Dec() + m.processingStartTimes[item] = time.Now() + if startTime, exists := m.addTimes[item]; exists { + m.latency.Observe(sinceInMicroseconds(startTime)) + delete(m.addTimes, item) + } +} + +func (m *defaultQueueMetrics) done(item t) { + if m == nil { + return + } + + if startTime, exists := m.processingStartTimes[item]; exists { + m.workDuration.Observe(sinceInMicroseconds(startTime)) + delete(m.processingStartTimes, item) + } +} + +// Gets the time since the specified start in microseconds. +func sinceInMicroseconds(start time.Time) float64 { + return float64(time.Since(start).Nanoseconds() / time.Microsecond.Nanoseconds()) +} + +type retryMetrics interface { + retry() +} + +type defaultRetryMetrics struct { + retries CounterMetric +} + +func (m *defaultRetryMetrics) retry() { + if m == nil { + return + } + + m.retries.Inc() +} + +// MetricsProvider generates various metrics used by the queue. +type MetricsProvider interface { + NewDepthMetric(name string) GaugeMetric + NewAddsMetric(name string) CounterMetric + NewLatencyMetric(name string) SummaryMetric + NewWorkDurationMetric(name string) SummaryMetric + NewRetriesMetric(name string) CounterMetric +} + +type noopMetricsProvider struct{} + +func (_ noopMetricsProvider) NewDepthMetric(name string) GaugeMetric { + return noopMetric{} +} + +func (_ noopMetricsProvider) NewAddsMetric(name string) CounterMetric { + return noopMetric{} +} + +func (_ noopMetricsProvider) NewLatencyMetric(name string) SummaryMetric { + return noopMetric{} +} + +func (_ noopMetricsProvider) NewWorkDurationMetric(name string) SummaryMetric { + return noopMetric{} +} + +func (_ noopMetricsProvider) NewRetriesMetric(name string) CounterMetric { + return noopMetric{} +} + +var metricsFactory = struct { + metricsProvider MetricsProvider + setProviders sync.Once +}{ + metricsProvider: noopMetricsProvider{}, +} + +func newQueueMetrics(name string) queueMetrics { + var ret *defaultQueueMetrics + if len(name) == 0 { + return ret + } + return &defaultQueueMetrics{ + depth: metricsFactory.metricsProvider.NewDepthMetric(name), + adds: metricsFactory.metricsProvider.NewAddsMetric(name), + latency: metricsFactory.metricsProvider.NewLatencyMetric(name), + workDuration: metricsFactory.metricsProvider.NewWorkDurationMetric(name), + addTimes: map[t]time.Time{}, + processingStartTimes: map[t]time.Time{}, + } +} + +func newRetryMetrics(name string) retryMetrics { + var ret *defaultRetryMetrics + if len(name) == 0 { + return ret + } + return &defaultRetryMetrics{ + retries: metricsFactory.metricsProvider.NewRetriesMetric(name), + } +} + +// SetProvider sets the metrics provider of the metricsFactory. +func SetProvider(metricsProvider MetricsProvider) { + metricsFactory.setProviders.Do(func() { + metricsFactory.metricsProvider = metricsProvider + }) +} diff --git a/vendor/k8s.io/client-go/util/workqueue/parallelizer.go b/vendor/k8s.io/client-go/util/workqueue/parallelizer.go new file mode 100644 index 000000000..be668c423 --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/parallelizer.go @@ -0,0 +1,52 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "sync" + + utilruntime "k8s.io/apimachinery/pkg/util/runtime" +) + +type DoWorkPieceFunc func(piece int) + +// Parallelize is a very simple framework that allow for parallelizing +// N independent pieces of work. +func Parallelize(workers, pieces int, doWorkPiece DoWorkPieceFunc) { + toProcess := make(chan int, pieces) + for i := 0; i < pieces; i++ { + toProcess <- i + } + close(toProcess) + + if pieces < workers { + workers = pieces + } + + wg := sync.WaitGroup{} + wg.Add(workers) + for i := 0; i < workers; i++ { + go func() { + defer utilruntime.HandleCrash() + defer wg.Done() + for piece := range toProcess { + doWorkPiece(piece) + } + }() + } + wg.Wait() +} diff --git a/vendor/k8s.io/client-go/util/workqueue/queue.go b/vendor/k8s.io/client-go/util/workqueue/queue.go new file mode 100644 index 000000000..dc9a7cc7b --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/queue.go @@ -0,0 +1,172 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "sync" +) + +type Interface interface { + Add(item interface{}) + Len() int + Get() (item interface{}, shutdown bool) + Done(item interface{}) + ShutDown() + ShuttingDown() bool +} + +// New constructs a new work queue (see the package comment). +func New() *Type { + return NewNamed("") +} + +func NewNamed(name string) *Type { + return &Type{ + dirty: set{}, + processing: set{}, + cond: sync.NewCond(&sync.Mutex{}), + metrics: newQueueMetrics(name), + } +} + +// Type is a work queue (see the package comment). +type Type struct { + // queue defines the order in which we will work on items. Every + // element of queue should be in the dirty set and not in the + // processing set. + queue []t + + // dirty defines all of the items that need to be processed. + dirty set + + // Things that are currently being processed are in the processing set. + // These things may be simultaneously in the dirty set. When we finish + // processing something and remove it from this set, we'll check if + // it's in the dirty set, and if so, add it to the queue. + processing set + + cond *sync.Cond + + shuttingDown bool + + metrics queueMetrics +} + +type empty struct{} +type t interface{} +type set map[t]empty + +func (s set) has(item t) bool { + _, exists := s[item] + return exists +} + +func (s set) insert(item t) { + s[item] = empty{} +} + +func (s set) delete(item t) { + delete(s, item) +} + +// Add marks item as needing processing. +func (q *Type) Add(item interface{}) { + q.cond.L.Lock() + defer q.cond.L.Unlock() + if q.shuttingDown { + return + } + if q.dirty.has(item) { + return + } + + q.metrics.add(item) + + q.dirty.insert(item) + if q.processing.has(item) { + return + } + + q.queue = append(q.queue, item) + q.cond.Signal() +} + +// Len returns the current queue length, for informational purposes only. You +// shouldn't e.g. gate a call to Add() or Get() on Len() being a particular +// value, that can't be synchronized properly. +func (q *Type) Len() int { + q.cond.L.Lock() + defer q.cond.L.Unlock() + return len(q.queue) +} + +// Get blocks until it can return an item to be processed. If shutdown = true, +// the caller should end their goroutine. You must call Done with item when you +// have finished processing it. +func (q *Type) Get() (item interface{}, shutdown bool) { + q.cond.L.Lock() + defer q.cond.L.Unlock() + for len(q.queue) == 0 && !q.shuttingDown { + q.cond.Wait() + } + if len(q.queue) == 0 { + // We must be shutting down. + return nil, true + } + + item, q.queue = q.queue[0], q.queue[1:] + + q.metrics.get(item) + + q.processing.insert(item) + q.dirty.delete(item) + + return item, false +} + +// Done marks item as done processing, and if it has been marked as dirty again +// while it was being processed, it will be re-added to the queue for +// re-processing. +func (q *Type) Done(item interface{}) { + q.cond.L.Lock() + defer q.cond.L.Unlock() + + q.metrics.done(item) + + q.processing.delete(item) + if q.dirty.has(item) { + q.queue = append(q.queue, item) + q.cond.Signal() + } +} + +// ShutDown will cause q to ignore all new items added to it. As soon as the +// worker goroutines have drained the existing items in the queue, they will be +// instructed to exit. +func (q *Type) ShutDown() { + q.cond.L.Lock() + defer q.cond.L.Unlock() + q.shuttingDown = true + q.cond.Broadcast() +} + +func (q *Type) ShuttingDown() bool { + q.cond.L.Lock() + defer q.cond.L.Unlock() + + return q.shuttingDown +} diff --git a/vendor/k8s.io/client-go/util/workqueue/queue_test.go b/vendor/k8s.io/client-go/util/workqueue/queue_test.go new file mode 100644 index 000000000..131f4a2a5 --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/queue_test.go @@ -0,0 +1,161 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue_test + +import ( + "sync" + "testing" + "time" + + "k8s.io/client-go/util/workqueue" +) + +func TestBasic(t *testing.T) { + // If something is seriously wrong this test will never complete. + q := workqueue.New() + + // Start producers + const producers = 50 + producerWG := sync.WaitGroup{} + producerWG.Add(producers) + for i := 0; i < producers; i++ { + go func(i int) { + defer producerWG.Done() + for j := 0; j < 50; j++ { + q.Add(i) + time.Sleep(time.Millisecond) + } + }(i) + } + + // Start consumers + const consumers = 10 + consumerWG := sync.WaitGroup{} + consumerWG.Add(consumers) + for i := 0; i < consumers; i++ { + go func(i int) { + defer consumerWG.Done() + for { + item, quit := q.Get() + if item == "added after shutdown!" { + t.Errorf("Got an item added after shutdown.") + } + if quit { + return + } + t.Logf("Worker %v: begin processing %v", i, item) + time.Sleep(3 * time.Millisecond) + t.Logf("Worker %v: done processing %v", i, item) + q.Done(item) + } + }(i) + } + + producerWG.Wait() + q.ShutDown() + q.Add("added after shutdown!") + consumerWG.Wait() +} + +func TestAddWhileProcessing(t *testing.T) { + q := workqueue.New() + + // Start producers + const producers = 50 + producerWG := sync.WaitGroup{} + producerWG.Add(producers) + for i := 0; i < producers; i++ { + go func(i int) { + defer producerWG.Done() + q.Add(i) + }(i) + } + + // Start consumers + const consumers = 10 + consumerWG := sync.WaitGroup{} + consumerWG.Add(consumers) + for i := 0; i < consumers; i++ { + go func(i int) { + defer consumerWG.Done() + // Every worker will re-add every item up to two times. + // This tests the dirty-while-processing case. + counters := map[interface{}]int{} + for { + item, quit := q.Get() + if quit { + return + } + counters[item]++ + if counters[item] < 2 { + q.Add(item) + } + q.Done(item) + } + }(i) + } + + producerWG.Wait() + q.ShutDown() + consumerWG.Wait() +} + +func TestLen(t *testing.T) { + q := workqueue.New() + q.Add("foo") + if e, a := 1, q.Len(); e != a { + t.Errorf("Expected %v, got %v", e, a) + } + q.Add("bar") + if e, a := 2, q.Len(); e != a { + t.Errorf("Expected %v, got %v", e, a) + } + q.Add("foo") // should not increase the queue length. + if e, a := 2, q.Len(); e != a { + t.Errorf("Expected %v, got %v", e, a) + } +} + +func TestReinsert(t *testing.T) { + q := workqueue.New() + q.Add("foo") + + // Start processing + i, _ := q.Get() + if i != "foo" { + t.Errorf("Expected %v, got %v", "foo", i) + } + + // Add it back while processing + q.Add(i) + + // Finish it up + q.Done(i) + + // It should be back on the queue + i, _ = q.Get() + if i != "foo" { + t.Errorf("Expected %v, got %v", "foo", i) + } + + // Finish that one up + q.Done(i) + + if a := q.Len(); a != 0 { + t.Errorf("Expected queue to be empty. Has %v items", a) + } +} diff --git a/vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue.go b/vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue.go new file mode 100644 index 000000000..417ac001b --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue.go @@ -0,0 +1,69 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +// RateLimitingInterface is an interface that rate limits items being added to the queue. +type RateLimitingInterface interface { + DelayingInterface + + // AddRateLimited adds an item to the workqueue after the rate limiter says its ok + AddRateLimited(item interface{}) + + // Forget indicates that an item is finished being retried. Doesn't matter whether its for perm failing + // or for success, we'll stop the rate limiter from tracking it. This only clears the `rateLimiter`, you + // still have to call `Done` on the queue. + Forget(item interface{}) + + // NumRequeues returns back how many times the item was requeued + NumRequeues(item interface{}) int +} + +// NewRateLimitingQueue constructs a new workqueue with rateLimited queuing ability +// Remember to call Forget! If you don't, you may end up tracking failures forever. +func NewRateLimitingQueue(rateLimiter RateLimiter) RateLimitingInterface { + return &rateLimitingType{ + DelayingInterface: NewDelayingQueue(), + rateLimiter: rateLimiter, + } +} + +func NewNamedRateLimitingQueue(rateLimiter RateLimiter, name string) RateLimitingInterface { + return &rateLimitingType{ + DelayingInterface: NewNamedDelayingQueue(name), + rateLimiter: rateLimiter, + } +} + +// rateLimitingType wraps an Interface and provides rateLimited re-enquing +type rateLimitingType struct { + DelayingInterface + + rateLimiter RateLimiter +} + +// AddRateLimited AddAfter's the item based on the time when the rate limiter says its ok +func (q *rateLimitingType) AddRateLimited(item interface{}) { + q.DelayingInterface.AddAfter(item, q.rateLimiter.When(item)) +} + +func (q *rateLimitingType) NumRequeues(item interface{}) int { + return q.rateLimiter.NumRequeues(item) +} + +func (q *rateLimitingType) Forget(item interface{}) { + q.rateLimiter.Forget(item) +} diff --git a/vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue_test.go b/vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue_test.go new file mode 100644 index 000000000..32d7fc906 --- /dev/null +++ b/vendor/k8s.io/client-go/util/workqueue/rate_limitting_queue_test.go @@ -0,0 +1,75 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package workqueue + +import ( + "testing" + "time" + + "k8s.io/apimachinery/pkg/util/clock" +) + +func TestRateLimitingQueue(t *testing.T) { + limiter := NewItemExponentialFailureRateLimiter(1*time.Millisecond, 1*time.Second) + queue := NewRateLimitingQueue(limiter).(*rateLimitingType) + fakeClock := clock.NewFakeClock(time.Now()) + delayingQueue := &delayingType{ + Interface: New(), + clock: fakeClock, + heartbeat: fakeClock.Tick(maxWait), + stopCh: make(chan struct{}), + waitingForAddCh: make(chan *waitFor, 1000), + metrics: newRetryMetrics(""), + } + queue.DelayingInterface = delayingQueue + + queue.AddRateLimited("one") + waitEntry := <-delayingQueue.waitingForAddCh + if e, a := 1*time.Millisecond, waitEntry.readyAt.Sub(fakeClock.Now()); e != a { + t.Errorf("expected %v, got %v", e, a) + } + queue.AddRateLimited("one") + waitEntry = <-delayingQueue.waitingForAddCh + if e, a := 2*time.Millisecond, waitEntry.readyAt.Sub(fakeClock.Now()); e != a { + t.Errorf("expected %v, got %v", e, a) + } + if e, a := 2, queue.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + queue.AddRateLimited("two") + waitEntry = <-delayingQueue.waitingForAddCh + if e, a := 1*time.Millisecond, waitEntry.readyAt.Sub(fakeClock.Now()); e != a { + t.Errorf("expected %v, got %v", e, a) + } + queue.AddRateLimited("two") + waitEntry = <-delayingQueue.waitingForAddCh + if e, a := 2*time.Millisecond, waitEntry.readyAt.Sub(fakeClock.Now()); e != a { + t.Errorf("expected %v, got %v", e, a) + } + + queue.Forget("one") + if e, a := 0, queue.NumRequeues("one"); e != a { + t.Errorf("expected %v, got %v", e, a) + } + queue.AddRateLimited("one") + waitEntry = <-delayingQueue.waitingForAddCh + if e, a := 1*time.Millisecond, waitEntry.readyAt.Sub(fakeClock.Now()); e != a { + t.Errorf("expected %v, got %v", e, a) + } + +}